From xen-devel-bounces@lists.xenproject.org Wed Apr 01 05:58:30 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 01 Apr 2026 05:58:30 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1269659.1558581 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1w7oan-0000EO-6E; Wed, 01 Apr 2026 05:58:17 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1269659.1558581; Wed, 01 Apr 2026 05:58: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 1w7oan-0000E7-1F; Wed, 01 Apr 2026 05:58:17 +0000
Received: by outflank-mailman (input) for mailman id 1269659;
 Wed, 01 Apr 2026 05:58:15 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <jbeulich@suse.com>) id 1w7oak-0000E1-T5
 for xen-devel@lists.xenproject.org; Wed, 01 Apr 2026 05:58:15 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1w7oak-00AZ8R-8p
 for xen-devel@lists.xenproject.org; Wed, 01 Apr 2026 07:58:14 +0200
Received: from [10.42.69.10] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <jbeulich@suse.com>)
 id 69ccb3dd-2eae-0a2a0a5409dd-0a2a450a8f5a-48
 for <xen-devel@lists.xenproject.org>; Wed, 01 Apr 2026 07:58:14 +0200
Received: from [209.85.128.49] (helo=mail-wm1-f49.google.com)
 by tlsNG-4011c0.mxtls.expurgate.net with ESMTPS (eXpurgate 4.55.2)
 (envelope-from <jbeulich@suse.com>)
 id 69ccb3f5-1772-0a2a450a0019-d1558031a8f4-3
 for <xen-devel@lists.xenproject.org>; Wed, 01 Apr 2026 07:58:13 +0200
Received: by mail-wm1-f49.google.com with SMTP id
 5b1f17b1804b1-482f454be5bso5224535e9.0
 for <xen-devel@lists.xenproject.org>; Tue, 31 Mar 2026 22:58:13 -0700 (PDT)
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-4887adc52b2sm35212055e9.12.2026.03.31.22.58.12
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Tue, 31 Mar 2026 22:58:12 -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=google header.d=suse.com header.i="@suse.com" header.h="Content-Transfer-Encoding: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=1775023093; x=1775627893; darn=lists.xenproject.org;
        h=content-transfer-encoding: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;
        bh=cKMT8KyzZ1Mt9osAqCAjw+gKQXf80yubGZVZ0kKFnWo=;
        b=OEApTtg7Uni/BnVUZzcnKCg5RR0hRvEsIVyK8MZXDf4gVqbNtXmMEF8CX3vVYk3tt3
         +TbJehgElfA5hjRyW0pe9vQyizk7ojpCsPDHmvevAPtoxL3/1327FomJfF8/0M3EPFz2
         DPQOBIwcLYjg2e2E2YXFTHH1SmKpzrLAbmSGzeoyYhbeO9D6fsbMyn1ureWwWFRxrDjq
         Xo3Q6v/BogXnOqg5RFCIlpG55RK0TbS8EbdJPLvH7oUBfxTj5SNGiRkEGmb2fIniTeD8
         62Vs4pIWx9okyyjE7aZEj8Wyakn4a13Ccm9KLPPebAyO+NQc55dPPUTrBZxbM662HniH
         nCfg==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20251104; t=1775023093; x=1775627893;
        h=content-transfer-encoding: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;
        bh=cKMT8KyzZ1Mt9osAqCAjw+gKQXf80yubGZVZ0kKFnWo=;
        b=IN+aetq+vV5cfoytHno0a7p+TkXhKMCP0uUZgJ5uTdvBoNFpEXM9RWYrLxdDAI2OoI
         S+ILeVydU38SV5gHcK+6cKxk4MJdmwSczmaqifOqmtVEz56j+RhaBA8qwyeETt8/I3NL
         /041wNuJpVKR3QZ7EZ2XZBV6l+Eluo5pXgzRvEXxyzJvmGBrMCBk4MJEJSjJCTj0Tkmq
         mJHFZLK6UA+B0938TkGXl5VteFH0lPdGRpiaF3IThtIp9lid0IeMJ0YnQJFOtJLq342R
         BnfnMDADvGLRfFMb4zfmeIpWRNl7vPoJUGzqlvlR+UJDq8xJoE1ALjEq3dNGLghykZW7
         Nrng==
X-Forwarded-Encrypted: i=1; AJvYcCWd1tUVoHUo01wQDrP/X96na4iKkKSrHBp92M83ZWbB9kqwnbGzEdKG8AiYaBa6fpvCBs1+r/634yc=@lists.xenproject.org
X-Gm-Message-State: AOJu0Yw1vqszRs+DYC8ai3TsLYaZ2Sei9ThB/KwvFf/w4OPqeMhJcp3H
	KRkpH7sbGUTEsKl1flj865ycUAGhdP4ckwD1Wv8F5kn5Au6xsQMQI+IIhQ911S/KaA==
X-Gm-Gg: ATEYQzzVVPRxIV3BvF3IZhh/0gM4M2A2DtfnaHQjhT9atbT4hwe4ONqYkL/5npUVpCR
	we3tregbQjNmUCcM1r8nKPmblKdpgIdFjJjegqQittDUxaYovo1gIrvqv64PKgktWGQH3266eGB
	VILgixe4kaXJ0Verg8Qgog49ISJwJJF04aiyWeSXqt3SHLNe1zDAT0ZNIHAIb+LPdtQJ/v16IZT
	KWDAr0WMsj56dTqM1Gkqr1HgLvZDYjfK7a2NpYLe/4bSnb7e/xunfDSoAIPaLZkAbvJjbgdtGwC
	8InLE2WMbUQ0q5pavUu6h6g+uoP7zeoIQvoJBkGzL/uT1pm3gVpDjNwLL0bnZs2ExNkieC+o82g
	c3FJ23yUDCeBsLzau/GXY38H3WkQovZ0xDWb5BSxd55rWg9zmBk168svmG/pwJjH/8A92e5AGPd
	wXMd41Chfv1R6GjheNMG8e1yovMNi9rTIgUp15RjGtmXYDb+ixPz7TwKK527KqkpdO17/UYQSxR
	JDzYwCUwFNsVsHusnHOyC18XA==
X-Received: by 2002:a05:600c:8b77:b0:485:3cef:d6ea with SMTP id 5b1f17b1804b1-488835bc362mr32141985e9.13.1775023093070;
        Tue, 31 Mar 2026 22:58:13 -0700 (PDT)
Message-ID: <cdacc6a8-cd49-4327-a98c-636545e8579b@suse.com>
Date: Wed, 1 Apr 2026 07:58:11 +0200
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH v2 07/11] xen: move domain_use_host_layout() to common
 code
To: Oleksii Kurochko <oleksii.kurochko@gmail.com>
Cc: Romain Caritey <Romain.Caritey@microchip.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.pau@citrix.com>,
 xen-devel@lists.xenproject.org
References: <cover.1774281309.git.oleksii.kurochko@gmail.com>
 <533d01db2b36b8357cd87e99a64a6e66dbdd1db4.1774281309.git.oleksii.kurochko@gmail.com>
 <6df9470e-4969-48d1-bf0c-c6569a5e5577@suse.com>
 <57581b7d-cb9f-444c-9321-63b2fc3d09f0@gmail.com>
 <d1288db4-2001-4914-919f-b613fd607bcc@suse.com>
 <d67b2856-bf93-4254-afa1-745dc37e0623@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: <d67b2856-bf93-4254-afa1-745dc37e0623@gmail.com>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 7bit
X-purgate-ID: tlsNG-4011c0/1775023093-BC882900-80AF429B/0/0
X-purgate-type: clean
X-purgate-size: 3959

On 31.03.2026 18:32, Oleksii Kurochko wrote:
> On 3/31/26 5:53 PM, Jan Beulich wrote:
>> On 31.03.2026 17:20, Oleksii Kurochko wrote:
>>> On 3/30/26 5:13 PM, Jan Beulich wrote:
>>>> On 23.03.2026 17:29, Oleksii Kurochko wrote:
>>>>> domain_use_host_layout() is not really architecture-specific, so move it
>>>>> from the Arm header to the common header xen/domain.h and provide a common
>>>>> implementation in xen/common/domain.c. domain_use_host_layout() potentially
>>>>> is needed for x86 [1].
>>>>
>>>> No matter that this may indeed be true, ...
>>>>
>>>>> Turn the macro into a function to avoid header dependency issues.
>>>>
>>>> ... this introduces unreachable code on x86, i.e. a Misra rule 2.1 violation.
>>>
>>> Do we have some deviation tag for such cases when the code temporary
>>> isn't used?
>>
>> I'm sorry, but it'll take me about as long as you to find out.
> 
> Sure, I will take a look. I just thought that maybe you have a solution 
> already just in your head.

Well, I do: Don't make this an out-of-line function.

>   I wonder
>> about "temporary" though: Do you have a clear understanding as to when
>> that will change?
> 
> No, I don't. As Stefano mentioned they will need this function one day. 
> Another option we could use ifndef x86 or ifdef DOM0_LESS and then when 
> someone will really need it on x86, this ifdef will be dropped. I don't 
> know if it is better solution.
> 
> It seems like the best one solution will still make a try to make 
> declare this function as macro.

Or an inline function. There's nothing ...

>>>>> @@ -2544,6 +2544,12 @@ void thaw_domains(void)
>>>>>    
>>>>>    #endif /* CONFIG_SYSTEM_SUSPEND */
>>>>>    
>>>>> +bool domain_use_host_layout(struct domain *d)
>>>>> +{
>>>>> +    return is_domain_direct_mapped(d) ||
>>>>> +           (paging_mode_translate(d) && is_hardware_domain(d));
>>>>> +}
>>>>
>>>> The placement of paging_mode_translate() doesn't match ...
>>>>
>>>>> --- a/xen/include/xen/domain.h
>>>>> +++ b/xen/include/xen/domain.h
>>>>> @@ -62,6 +62,22 @@ void domid_free(domid_t domid);
>>>>>    #define is_domain_direct_mapped(d) ((d)->cdf & CDF_directmap)
>>>>>    #define is_domain_using_staticmem(d) ((d)->cdf & CDF_staticmem)
>>>>>    
>>>>> +/*
>>>>> + * Is the auto-translated domain using the host memory layout?
>>>>> + *
>>>>> + * domain_use_host_layout() is always False for PV guests.
>>>>
>>>> ... the description of the function.
>>>
>>> But why the placement should be different?
>>
>> If you focus on auto-translated, then imo paging_mode_translate()
>> better would guard everything.
> 
> Then it make sense to do in the following way:
>   bool domain_use_host_layout(struct domain *d)
>   {
> -    return is_domain_direct_mapped(d) ||
> -           (paging_mode_translate(d) && is_hardware_domain(d));
> +    return paging_mode_translate(d) &&
> +           (is_domain_direct_mapped(d) || is_hardware_domain(d));
>   }

... in here which clearly speaks against doing so. And yes, this is what I
was asking for (with the function parameter also suitably constified).

>>> So if domain_use_host_layout() is fully depends on
>>> paging_mode_translate(d) && is_hardware_domain(d) and for which
>>> paging_mode_translate() is false if it is PV guest.
>>> Thereby domain_use_host_layout() is false too.
>>>
>>>>
>>>> Further, the first sentence above suggests the caller has to check
>>>> paging_mode_translate() before calling, which as per the implementation
>>>> clearly isn't the intention.
>>>
>>> Sorry, I don't follow you here.
>>
>> By starting the comment with "Is the auto-translated domain using", you
>> imply the caller checked for that aspect already. At least the way I
>> read it.
> 
> My understanding was that it is an explanation what function is checking.

For that you'd want to omit "auto-translated" from the first sentence, imo.

Jan


From xen-devel-bounces@lists.xenproject.org Wed Apr 01 05:59:46 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 01 Apr 2026 05:59:46 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1269668.1558589 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1w7ocD-0000mq-K5; Wed, 01 Apr 2026 05:59:45 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1269668.1558589; Wed, 01 Apr 2026 05:59: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 1w7ocD-0000mj-Gi; Wed, 01 Apr 2026 05:59:45 +0000
Received: by outflank-mailman (input) for mailman id 1269668;
 Wed, 01 Apr 2026 05:59:44 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <jbeulich@suse.com>) id 1w7ocC-0000md-4k
 for xen-devel@lists.xenproject.org; Wed, 01 Apr 2026 05:59:44 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1w7ocB-0001Ze-H0
 for xen-devel@lists.xenproject.org; Wed, 01 Apr 2026 07:59:43 +0200
Received: from [10.42.69.1] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <jbeulich@suse.com>)
 id 69ccb44b-e002-0a2a0a5209dd-0a2a4501e11c-8
 for <xen-devel@lists.xenproject.org>; Wed, 01 Apr 2026 07:59:43 +0200
Received: from [209.85.221.41] (helo=mail-wr1-f41.google.com)
 by tlsNG-d62444.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.0)
 (envelope-from <jbeulich@suse.com>)
 id 69ccb44f-6fc9-0a2a45010019-d155dd29e4d3-3
 for <xen-devel@lists.xenproject.org>; Wed, 01 Apr 2026 07:59:43 +0200
Received: by mail-wr1-f41.google.com with SMTP id
 ffacd0b85a97d-43cf906b007so1849477f8f.0
 for <xen-devel@lists.xenproject.org>; Tue, 31 Mar 2026 22:59:43 -0700 (PDT)
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-43cf257b72dsm33363865f8f.34.2026.03.31.22.59.42
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Tue, 31 Mar 2026 22:59:42 -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=google header.d=suse.com header.i="@suse.com" header.h="Content-Transfer-Encoding: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=1775023183; x=1775627983; darn=lists.xenproject.org;
        h=content-transfer-encoding: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;
        bh=ME3AW82qZDw/pfDlCDyK6nh4Ak9vBhwCI9g2zYdnqvE=;
        b=EjrF4L2o/Ffz1sf4x+0OdOlCjJAxmbm81xyST/kY6QHvs3Wqy6C69vGZyreunBEvsD
         JqNxJ9p2+JoXEf79ExjSNlANpxFcMSpDsq5aKFYo3wZUCvlwNGcxYnRlwMozQK18BcPr
         ZcRPUfgHXnkavZzUNyCMaWxFBqCB97lQ5LkzGOPVLwi5al5T08qbOiXaGnmT7eO0t/pH
         jA+1t5Br1MX7FSwnM0GB0FMHJR51x9bgKWlUnUvfmpUIY1WyxT5N4w8LhFEXhjPvzhQc
         +Vs5g44XEQ+5V/hNsmyhvUDgo9XxNvZ9RAN17lWvbfSehtA9r29TN6yec0QFZRLIe85U
         iJeA==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20251104; t=1775023183; x=1775627983;
        h=content-transfer-encoding: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;
        bh=ME3AW82qZDw/pfDlCDyK6nh4Ak9vBhwCI9g2zYdnqvE=;
        b=jH7q2vpArxUJ1sqMlGZxgs4ugc1p+s3VAoC5DiEshyGT/Det+1qz1EdZhBmL82GD2m
         QcO/IXI5azREOG+3BDLjTt8ALUw3bqTjqBMGOeJSzg1llWe4TxIxyRUDa6eFh5GdHXAw
         pv++PXW/x8fmXgwsSDoyHl6eS0R/5Ex4epCPXaFfYksMNkCjH6bCVAZxPdT8w7xAI5ro
         jEa2TaY9Nnc3BifPI+Nrrk37kXdSoCiya4cDY6h8YzLB3HEONBkAqgUquNbiWWYQNsxC
         aoaEF65vG0C8x7SvqGTY0yJIAQ4ZXI8DS+FCkeBQSlKCZFGetaiIQ073Md1SwpnQcl9U
         6qew==
X-Forwarded-Encrypted: i=1; AJvYcCUbS5wWEIzEXtUnGzNCUZyN+t9ENkxaGYBRGZEDkaxzoHtM7ygSyfJ5zZuOLWjTh5pMb5qIR29+nuk=@lists.xenproject.org
X-Gm-Message-State: AOJu0YzvEHwM7it5dNt6U0AdtvGLNtQtslMT0U7at3RetKakwRiphoxc
	77qesr6TQtuPuFlkPFWZwzM+y+cETGVteCVn9PT5V4dWSCF0hfFv3jfQbVbQBJxhNw==
X-Gm-Gg: ATEYQzw45G22iAqrVCnHPxbLzQ81kzf/PaiOuFd6j19ZTQRfgWP8t2U1UEIQN9QDPrR
	UupCZ3kjstXqvxDCq6Ol8nHGX/S98kCTUitoOPLcWFK2UjL4Ylh1QQAuTkKBieeVXVVs7unDLWS
	kWxmXoXMMR4dQ+t30PM6yyP0rqeol+wIRKPmfls+VqHGAruWYMkke35ctVWHowzMeBlRmp8cWAk
	ZPJZk2NE2jqRvGOIvjcWYxo+VuL36WmJL6kuj1u+vGT9zpEExJOcruF7z1x0lyt5xHXCTs2j1Yy
	S6l/MgFRRuhsA+oOY76NJgoIHyoaiGDG7s7V2ZQWMJ5dqqZYqIexS6b+fHlfov39uoG/Mawwv6F
	eBmqXnGg9oeZ0PIWSVQG+dPrgPK/5Lg1IKxwD/4dVxCoZwwF1IMHs2vsczfCcy/dbw12k5WNp0K
	NwZJjHhNOQ9fQatHvCUIuQ+6Fk3OmiwSN1DsdV7FZ7SwyN51x480zgQ13RWKFiCU9qT97iH4mKb
	EoLqxRWKPNvTvE=
X-Received: by 2002:a05:6000:4008:b0:43b:8858:1146 with SMTP id ffacd0b85a97d-43d150f0ae4mr3961824f8f.41.1775023182895;
        Tue, 31 Mar 2026 22:59:42 -0700 (PDT)
Message-ID: <a57b4cee-e230-4fc5-a7a6-a62635b54a76@suse.com>
Date: Wed, 1 Apr 2026 07:59:41 +0200
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH v2 07/11] xen: move domain_use_host_layout() to common
 code
To: Oleksii Kurochko <oleksii.kurochko@gmail.com>
Cc: Romain Caritey <Romain.Caritey@microchip.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.pau@citrix.com>,
 xen-devel@lists.xenproject.org
References: <cover.1774281309.git.oleksii.kurochko@gmail.com>
 <533d01db2b36b8357cd87e99a64a6e66dbdd1db4.1774281309.git.oleksii.kurochko@gmail.com>
 <6df9470e-4969-48d1-bf0c-c6569a5e5577@suse.com>
 <57581b7d-cb9f-444c-9321-63b2fc3d09f0@gmail.com>
 <d1288db4-2001-4914-919f-b613fd607bcc@suse.com>
 <d67b2856-bf93-4254-afa1-745dc37e0623@gmail.com>
 <38d93a26-dfce-4d4e-a1d2-c4e8d13c4ead@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: <38d93a26-dfce-4d4e-a1d2-c4e8d13c4ead@gmail.com>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
X-purgate-ID: tlsNG-d62444/1775023183-BCD65185-790A1592/0/0
X-purgate-type: clean
X-purgate-size: 1660

On 31.03.2026 21:49, Oleksii Kurochko wrote:
> On 3/31/26 6:32 PM, Oleksii Kurochko wrote:
>>>>>> @@ -2544,6 +2544,12 @@ void thaw_domains(void)
>>>>>>    #endif /* CONFIG_SYSTEM_SUSPEND */
>>>>>> +bool domain_use_host_layout(struct domain *d)
>>>>>> +{
>>>>>> +    return is_domain_direct_mapped(d) ||
>>>>>> +           (paging_mode_translate(d) && is_hardware_domain(d));
>>>>>> +}
>>>>>
>>>>> The placement of paging_mode_translate() doesn't match ...
>>>>>
>>>>>> --- a/xen/include/xen/domain.h
>>>>>> +++ b/xen/include/xen/domain.h
>>>>>> @@ -62,6 +62,22 @@ void domid_free(domid_t domid);
>>>>>>    #define is_domain_direct_mapped(d) ((d)->cdf & CDF_directmap)
>>>>>>    #define is_domain_using_staticmem(d) ((d)->cdf & CDF_staticmem)
>>>>>> +/*
>>>>>> + * Is the auto-translated domain using the host memory layout?
>>>>>> + *
>>>>>> + * domain_use_host_layout() is always False for PV guests.
>>>>>
>>>>> ... the description of the function.
>>>>
>>>> But why the placement should be different?
>>>
>>> If you focus on auto-translated, then imo paging_mode_translate()
>>> better would guard everything.
>>
>> Then it make sense to do in the following way:
>>   bool domain_use_host_layout(struct domain *d)
>>   {
>> -    return is_domain_direct_mapped(d) ||
>> -           (paging_mode_translate(d) && is_hardware_domain(d));
>> +    return paging_mode_translate(d) &&
>> +           (is_domain_direct_mapped(d) || is_hardware_domain(d));
>>   }
> 
> This is not really correct.

... because of ... ? (After all, then the comment isn't correct either.)

Jan


From xen-devel-bounces@lists.xenproject.org Wed Apr 01 06:07:47 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 01 Apr 2026 06:07:47 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1269682.1558598 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1w7oju-0002nR-8Z; Wed, 01 Apr 2026 06:07:42 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1269682.1558598; Wed, 01 Apr 2026 06:07: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 1w7oju-0002nK-5e; Wed, 01 Apr 2026 06:07:42 +0000
Received: by outflank-mailman (input) for mailman id 1269682;
 Wed, 01 Apr 2026 06:07:40 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <jbeulich@suse.com>) id 1w7ojs-0002nE-Mv
 for xen-devel@lists.xenproject.org; Wed, 01 Apr 2026 06:07:40 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1w7ojr-0043oQ-K6
 for xen-devel@lists.xenproject.org; Wed, 01 Apr 2026 08:07:39 +0200
Received: from [10.42.69.10] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <jbeulich@suse.com>)
 id 69ccb628-e002-0a2a0a5209dd-0a2a450aab5c-18
 for <xen-devel@lists.xenproject.org>; Wed, 01 Apr 2026 08:07:39 +0200
Received: from [209.85.221.47] (helo=mail-wr1-f47.google.com)
 by tlsNG-4011c0.mxtls.expurgate.net with ESMTPS (eXpurgate 4.55.2)
 (envelope-from <jbeulich@suse.com>)
 id 69ccb62b-1772-0a2a450a0019-d155dd2fed51-3
 for <xen-devel@lists.xenproject.org>; Wed, 01 Apr 2026 08:07:39 +0200
Received: by mail-wr1-f47.google.com with SMTP id
 ffacd0b85a97d-43cff5dafc3so2475498f8f.1
 for <xen-devel@lists.xenproject.org>; Tue, 31 Mar 2026 23:07:39 -0700 (PDT)
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-43cf21e2727sm35924537f8f.2.2026.03.31.23.07.37
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Tue, 31 Mar 2026 23:07:38 -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=google header.d=suse.com header.i="@suse.com" header.h="Content-Transfer-Encoding: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=1775023659; x=1775628459; darn=lists.xenproject.org;
        h=content-transfer-encoding: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;
        bh=2QBd+z3yeCYygTqiijCbGjzyvP97ahVIwABBPET88v8=;
        b=dfzoI9n4f6WVilNGAOJVk0neIMVFxyPca+WBj/J38xM+nNl3r2W76uhC6rjEgM664y
         VVBjZZYsU7cLWpX9kW2PfeT0h0HJl3UuQYblLXMBGHczXeWD9/7aV8XZ5/6FGj7gS6SP
         EvBQOsL/zKxn9o/zEVnWZzVMscucNP8sfbQ/kI6G/f4kyJTk+SF2eOFJWKWXzKZ1uy+/
         SkZ9ox0tEmenaDpAuseZOTlvG6GvxGDpvnjqTu/Tavtk+/esMTeAOWHeFeTYOkITLY7v
         jRfjCS3B4MZSBRtRMrwoE/kSeqGRlkTh9MLUhYdBYQdBM5hUmuAVz/k1C0TUzOejcl8L
         TB9A==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20251104; t=1775023659; x=1775628459;
        h=content-transfer-encoding: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;
        bh=2QBd+z3yeCYygTqiijCbGjzyvP97ahVIwABBPET88v8=;
        b=q1fIruRxGr9Ccq2wdMMntllC9hAK0SrKE1YABuorzZQQFvMscvO4VOs5yYN3v9UVcb
         6YXYsZxopvyhoSKVtIfCtHIB+8AUa50BF7a8dk0oKzDz5A22zMP7BZS4c9TuvbFAkymm
         IaE3plKTurA5+Rk8z7regT9Bb+FLsuyhZdHSjQTT505Q4h9fWo1+CzlLmYuX96nfrOq7
         DJu/hmWYK2EJ64QdUEAFmeyAyAirER/9NaeBAIBAx35tErIs9R2+UhcgZ32oG2h1iH9u
         AdJKUiMJ/6pxzw0qTcuUpMIubehMVooYfmFrgbcZ9b5ZBXvNdfyYFhjZvWx5Rq+3e+ah
         Mfxg==
X-Forwarded-Encrypted: i=1; AJvYcCUtlMtoXQd2kQjjTgVdb1V2CsXG9iUyKJ/0BWA/jxUHheHbwF+iRo1jsYnUC1eoUxfg5XBRc6mk/Cs=@lists.xenproject.org
X-Gm-Message-State: AOJu0Yz0xCgRNVpRyRf+5jTEqmt9T7c/ycZXbxgRBH5EUvBKc4LFvpwi
	+dvw9Xkhzqu8ipHJdlVoNuL11uTE8gEq0GP6lMbc9yRWGse50E7O2Npy+cLxfhT7vg==
X-Gm-Gg: ATEYQzz2bbOvtJFU6EzvjEg15sJqvspZcJBnopkqfOVPDV7tHM+M/1ZdbpX13LTLHLX
	GjGe8HvvoxOdzcZV7AQpAbL0B3J/C0/m48RhXTQM5CL8mLBKglWWK1hxB3MYCsWgMxOFch3H2nV
	KUlBovYFvQdWJKnk6Vst69L7O5HiJiKUb+BKqFFCggjrMUibOcHHxsL8JUb66tv2WW69aTYxkU2
	HM4dJuMB9V5D4lB8MIoI6QbOsyRNYQkVZqlILeRkOMPqDFnDSwA6HOeushLOop6djhLplmC4EU9
	TdALtffpjK0QqUAEr5BZeXQRUsQTSLyy5OXO7D7H2vIr2mx/cSTZdS9BC8XGVnBUQJ+9oFNPQAu
	UrQP4x8MVeUFixXBuM4vN2LJEkA5GTGm6XhVTo/Z2f0jbVKlO1moHVNP/9E33ms3oKKYfjUlUmC
	ycNPG/hB5K+XiC0U5NMXFG6S3bWeRdTAABoUShwU37sLZnjD+5eF6gqmMpaXUSLyXxaoafFVCEC
	5O63+WsmCXXgXk=
X-Received: by 2002:a05:6000:250a:b0:43d:4c:229f with SMTP id ffacd0b85a97d-43d150e161amr3805898f8f.44.1775023658740;
        Tue, 31 Mar 2026 23:07:38 -0700 (PDT)
Message-ID: <0f20593e-1cad-475a-9bc4-f4f1b38c5087@suse.com>
Date: Wed, 1 Apr 2026 08:07:36 +0200
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH v2 09/11] xen/riscv: introduce p2m_gpa_bits
To: Oleksii Kurochko <oleksii.kurochko@gmail.com>
Cc: Romain Caritey <Romain.Caritey@microchip.com>,
 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.pau@citrix.com>,
 Stefano Stabellini <sstabellini@kernel.org>, xen-devel@lists.xenproject.org
References: <cover.1774281309.git.oleksii.kurochko@gmail.com>
 <775374eab7b9868b7cabe6c76fa1b7ac2f8466d8.1774281309.git.oleksii.kurochko@gmail.com>
 <4a0f4313-2694-4986-810c-0f4eac191cef@suse.com>
 <c87ef4d3-abad-4e46-ae86-f078eb4a5f0e@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: <c87ef4d3-abad-4e46-ae86-f078eb4a5f0e@gmail.com>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 7bit
X-purgate-ID: tlsNG-4011c0/1775023659-BEE95900-A4246FB9/0/0
X-purgate-type: clean
X-purgate-size: 2603

On 31.03.2026 18:02, Oleksii Kurochko wrote:
> On 3/30/26 5:34 PM, Jan Beulich wrote:
>> On 23.03.2026 17:29, Oleksii Kurochko wrote:
>>> p2m_gpa_bits is used by common/device-tree/domain-build.c thereby when
>>> CONFIG_DOMAIN_BUILD_HELPERS=y it is necessary to have p2m_gpa_bits properly
>>> defined as it is going to be used to find unused regions.
>>>
>>> Introduce default_gstage_mode to have ability to limit p2m_gpa_bits before
>>> p2m_init() is being called as it will be too late.
>>
>> This is a somewhat strange way of describing things. Of course you want to
>> establish globals before doing any per-domain setup.
> 
> Then I will drop that sentence now and avoid similar in the future.
> 
>>> Limit p2m_gpa_bits in guest_mm_init() as it could be that default G-stage
>>> MMU mode uses less VA wide bits than IOMMU,
>>
>> How does a VA come into play here?
> 
> It is what spec uses, for example:
>   Figure 108. Sv39x4 virtual address (guest physical address).

Note the difference between what you quote and what your sentence said:
You used VA entirely unqualified. Yes, please ...

> I can just use GPA.

... use GPA whenever you mean one. Using VA for two distinct purposes
is simply confusing. Even the qualifying by the mode is only of limited
help imo, as the casual reader may not be fluent in those modes and
their acronyms.

>> And what is "less VA wide bits"?
> 
> They could be configured to different modes: IOMMU lets say Sv39 and MMU 
> - Sv48, so IOMMU could work with 39-bit GPA, but MMU - with 48-bit GPAs.

I guessed as much, but this wants wording differently. E.g. "... uses
fewer GPA bits than ...".

>>> @@ -191,8 +209,13 @@ static void __init gstage_mode_detect(void)
>>>   
>>>   void __init guest_mm_init(void)
>>>   {
>>> +    unsigned int gpa_bits;
>>> +    unsigned int paging_levels = default_gstage_mode.paging_levels;
>>
>> Deriving a global from a default, when ...
>>
>>>       gstage_mode_detect();
>>>   
>>> +    ASSERT(default_gstage_mode.paging_levels <= max_gstage_mode.paging_levels);
>>
>> ... the default isn't the maximum possible, isn't going to fly.
> 
> I didn't get you here.
> 
> If we want Xen uses Sv39 for G-stage, we want to limit guest's 56-bit 
> GPA to 39-bit GPA, but not the maximum supported by h/w mode for G-stage 
> mode.

I can only repeat what I thought I had got across already on an earlier
series of yours: What mode a guest is going to use is going to be a guest
property. The default mode therefore isn't the only mode that may be used
at runtime.

Jan


From xen-devel-bounces@lists.xenproject.org Wed Apr 01 06:17:55 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 01 Apr 2026 06:17:55 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1269692.1558607 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1w7oth-0004hX-4P; Wed, 01 Apr 2026 06:17:49 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1269692.1558607; Wed, 01 Apr 2026 06:17: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 1w7oth-0004hQ-1T; Wed, 01 Apr 2026 06:17:49 +0000
Received: by outflank-mailman (input) for mailman id 1269692;
 Wed, 01 Apr 2026 06:17:47 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <jbeulich@suse.com>) id 1w7otf-0004eu-Es
 for xen-devel@lists.xenproject.org; Wed, 01 Apr 2026 06:17:47 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1w7otd-001WG4-VI
 for xen-devel@lists.xenproject.org; Wed, 01 Apr 2026 08:17:45 +0200
Received: from [10.42.69.1] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <jbeulich@suse.com>)
 id 69ccb885-2eae-0a2a0a5409dd-0a2a45018cd6-20
 for <xen-devel@lists.xenproject.org>; Wed, 01 Apr 2026 08:17:45 +0200
Received: from [209.85.128.46] (helo=mail-wm1-f46.google.com)
 by tlsNG-d62444.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.0)
 (envelope-from <jbeulich@suse.com>)
 id 69ccb889-6fc9-0a2a45010019-d155802edc77-3
 for <xen-devel@lists.xenproject.org>; Wed, 01 Apr 2026 08:17:45 +0200
Received: by mail-wm1-f46.google.com with SMTP id
 5b1f17b1804b1-48557c8ad47so50601515e9.0
 for <xen-devel@lists.xenproject.org>; Tue, 31 Mar 2026 23:17:45 -0700 (PDT)
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-4887e832585sm179541335e9.6.2026.03.31.23.17.44
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Tue, 31 Mar 2026 23:17:44 -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=google header.d=suse.com header.i="@suse.com" header.h="Content-Transfer-Encoding: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=1775024265; x=1775629065; darn=lists.xenproject.org;
        h=content-transfer-encoding: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;
        bh=22jUjMqq4NiDpxwivTqWno8ikW93nvesVvp0rxysWvo=;
        b=FYbjrJCo+05jJL0QRW+YSJxXZcHlRX3wezYwS/XapOBb8c1QQoXhZf3bFeCVVovFBS
         UQdplN1ksm5my1CFWXxHA8felOyCq6oW7UoXDMEk+6nobPDYxHWtf02K5mb7S3gdNl9x
         kWG5kZLQ7MJMjxn5LYOLCF51ETXoskkedW0ctKQlpIRIp8JSOpdOw+Z4OgJLK6YET0jv
         AwCELeNhSbEoXxTbNbeBvDGBpQJBIELXhIX1SdN937QCR5WFW+WjAHgjVMLljjbCcRNv
         dbMlAxahJq0v9HjCEDEntyVDNfdAHgzVeqS1HGlUA0spVYa+fMz+AZbzJSZD8oeemwpC
         /tQg==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20251104; t=1775024265; x=1775629065;
        h=content-transfer-encoding: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;
        bh=22jUjMqq4NiDpxwivTqWno8ikW93nvesVvp0rxysWvo=;
        b=M1ASqXhb9puZlEdfjqbpd71cUNqsqY2WLVivKwAGwX4UPkHGPix9FWCF73miHMzx2F
         4lOgygcAzjn+sL7nIIDQklKG7MlWl7/KKgX4/lufLLqCxFXeX8jwyUlSt0wKs1YbNcPA
         SNadleL7VCFxMZkgyWqVUriGKcHUJR8ZzU5yDNJH4Z0pU68buCXwOotb1bzxJ7jNNDIP
         Bsurt98VMI6udO8YDbG1nRBT7+OPaTkLNe033yfWG7eT3V6yD0QVEI+EKGNYZEmNeEP4
         /qLzYuIlq6DhV9MROYDsETREP+FEmVVpr4GWSoiHyGO7j4i8jbTAW4TROpiSLqznQJg3
         S14A==
X-Forwarded-Encrypted: i=1; AJvYcCWPokRqqO7CQMVCK1jCmPd5z5WBG7JeFMRr3XlgS8Z2XkkXmmNpgtPU2cIXBOYKXLoSdaxxPR8KRlQ=@lists.xenproject.org
X-Gm-Message-State: AOJu0YywHqV0WmaYQRy4vgHt+/e/2JIUHtpyE/KsvN0Z8K7gUXRnIRSE
	7a4+FgEbBkB1b0H2sIPDuY4Vnsnyi9AooC6ZxzkfK8VHzxKfOi51c+Tv0gfMQ7QYCw==
X-Gm-Gg: ATEYQzxXmbTbRnLQgI2x2FWe7CSguZQ5KXND49gCDpHQcp1PlItcAQPIVWlewZR2hTr
	ZyLL4zqKiD3cogiFbjzw+GHLJKT39LXHZgQyMe5HbLtJtKE/WjYC2Hg73f1cc7Y2FSC3FaAnilf
	BJpU5QXzdAIy5Y+v5WBg0PnSB8vuZ9edO9BA57PfPlhjs51aEN9fR3nHsGZXtIadvV4lcZVDOVx
	Cgp9z8dxctUoej+CucFZ7e+KcodZyHxCT9pCvC1NhWtLvMxa5vDUswtK7/zme1q1Azl2pX4UGlM
	NRHo8wqs3khY+vZgLVZkdDo6fnR/+/RA6eCt6gTwqHo4iea9lJBG/F1j2VuDo6OWphFF6XfjUuh
	4bSQWx1nUVoBy3anOaGIoAyfQBe/z8C32rGmRjMdeLAuw+sxx8LDOY4ekPAcgOuLoJP2odhhIP4
	iYQa6PCfqSOqRZhQ1j9Vvp6NuMt25yF5w82oaaH7RaUho4wd0pZO1htek8/haPE6wmK8Vdf2pOM
	2qPfRlzJY3oet8=
X-Received: by 2002:a05:600c:1d0f:b0:485:30f7:6e88 with SMTP id 5b1f17b1804b1-488835a59a3mr33204645e9.31.1775024265069;
        Tue, 31 Mar 2026 23:17:45 -0700 (PDT)
Message-ID: <dfd2a666-f3a5-4d88-b034-438f8fbb85ba@suse.com>
Date: Wed, 1 Apr 2026 08:17:43 +0200
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH v2 10/11] xen/riscv: add definition of guest RAM banks
To: Oleksii Kurochko <oleksii.kurochko@gmail.com>
Cc: Romain Caritey <Romain.Caritey@microchip.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.pau@citrix.com>,
 Stefano Stabellini <sstabellini@kernel.org>, xen-devel@lists.xenproject.org
References: <cover.1774281309.git.oleksii.kurochko@gmail.com>
 <8278256f3d270b456d19cb9891b89b88a46548a5.1774281309.git.oleksii.kurochko@gmail.com>
 <1a3a316e-f0ea-4514-95d6-9813d6d5ca76@suse.com>
 <691be850-9145-4bbf-a897-d10a0193b730@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: <691be850-9145-4bbf-a897-d10a0193b730@gmail.com>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 7bit
X-purgate-ID: tlsNG-d62444/1775024265-B78FC185-50929E90/0/0
X-purgate-type: clean
X-purgate-size: 4067

On 31.03.2026 18:14, Oleksii Kurochko wrote:
> On 3/30/26 5:51 PM, Jan Beulich wrote:
>> On 23.03.2026 17:29, Oleksii Kurochko wrote:
>>> The dom0less solution uses defined RAM banks as compile-time constants,
>>> so introduce macros to describe guest RAM banks.
>>>
>>> The reason for 2 banks is that there is typically always a use case for
>>> low memory under 4 GB, but the bank under 4 GB ends up being small because
>>> there are other things under 4 GB it can conflict with (interrupt
>>> controller, PCI BARs, etc.).
>>
>> Fixed layouts like the one you suggest come with (potentially severe)
>> downsides. For example, what if more than 2Gb of MMIO space are needed
>> for non-64-bit BARs? 
> 
> It looks where usually RAM on RISC-V boards start, so I expect that 2gb 
> before RAM start is enough for MMIO space.

Likely in the common case. Board designers aren't constrained by this,
though (aiui). Whereas you set in stone a single, fixed layout.

Arm maintainers - since a similar fixed layout is used there iirc,
could you chime in here, please?

> Answering your question it will be an issue or it will also use some 
> space before banks, no?

I fear I don't understand what you're trying to tell me.

> Further, assuming that the space 4G...8G is what
>> you expect 64-bit BARs to be put into, what if there's a device with a
>> 4G BAR? It'll eat up that entire space, requiring everything else to
>> fit in the 2G you reserve below 4G.
> 
> I assume that such big devices could use high memory without any issue.

Well, I could go (almost) arbitrarily low with individual BAR size,
merely increasing the number of BARs accordingly. Assuming 2G BARs are
64-bit capable is likely fine. Maybe the same is true for 1G and 512M
ones as well. Yet a some size the assumption will break.

IMO RAM layout wants establishing dynamically based on the MMIO needs
of a guest.

>>> --- a/xen/include/public/arch-riscv.h
>>> +++ b/xen/include/public/arch-riscv.h
>>> @@ -50,6 +50,22 @@ typedef uint64_t xen_ulong_t;
>>>   
>>>   #if defined(__XEN__) || defined(__XEN_TOOLS__)
>>>   
>>> +#define GUEST_RAM_BANKS   2
>>> +
>>> +/*
>>> + * The way to find the extended regions (to be exposed to the guest as unused
>>> + * address space) relies on the fact that the regions reserved for the RAM
>>> + * below are big enough to also accommodate such regions.
>>> + */
>>> +#define GUEST_RAM0_BASE   xen_mk_ullong(0x80000000) /* 2GB of low RAM @ 2GB */
>>> +#define GUEST_RAM0_SIZE   xen_mk_ullong(0x80000000)
>>
>> Connecting this with my comment on the earlier patch regarding kernel, initrd,
>> and DTB fitting in bank 0: How's that going to work with a huge kernel and/or
>> initrd (I expect DTBs can't grow very large)?
> 
> The short answer it won't, but does initrd usually so big?

Not usually, but nothing keeps it from being arbitrary size.

> DTB is limited to 2MB, IIRC. So it isn't expect to grow to much...
> 
> As I mentioned in the reply to earlier patch, I agree that we could 
> leave bank0 for kernel and all other put to bank1.

Kernels can also be arbitrarily large.

> Even more I can try to put kernel in ban1 as I don't see any place at 
> the moment where it will be a problem for RISC-V Linux kernel to be in 
> high memory.

Yes, the less restrictions from the beginning, the less worries later.

>>> +#define GUEST_RAM1_BASE   xen_mk_ullong(0x0200000000) /* 1016 GB of RAM @ 8GB */
>>> +#define GUEST_RAM1_SIZE   xen_mk_ullong(0xFE00000000)
>>> +
>>> +#define GUEST_RAM_BANK_BASES   { GUEST_RAM0_BASE, GUEST_RAM1_BASE }
>>> +#define GUEST_RAM_BANK_SIZES   { GUEST_RAM0_SIZE, GUEST_RAM1_SIZE }
>>
>> Why's this needed in the public header?
> 
> xl toolstack could use them so I expected what toolstack will use to 
> live in this header.

But these last two #define-s are merely convenience definitions. They
even prescribe a certain data layout in order to be usable. I don't
think anything like this should be put in the public headers.

Jan


From xen-devel-bounces@lists.xenproject.org Wed Apr 01 06:19:59 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 01 Apr 2026 06:19:59 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1269702.1558616 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1w7ovm-0005K9-Hc; Wed, 01 Apr 2026 06:19:58 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1269702.1558616; Wed, 01 Apr 2026 06:19: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 1w7ovm-0005K2-En; Wed, 01 Apr 2026 06:19:58 +0000
Received: by outflank-mailman (input) for mailman id 1269702;
 Wed, 01 Apr 2026 06:19:56 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92) id 1w7ovk-0005Jw-SK
 for xen-devel@lists.xenproject.org; Wed, 01 Apr 2026 06:19:56 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1w7ovk-0046TI-89
 for xen-devel@lists.xenproject.org; Wed, 01 Apr 2026 08:19:56 +0200
Received: from [10.42.69.3] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <jbeulich@suse.com>)
 id 69ccb904-bab6-0a2a0a5309dd-0a2a4503890c-12
 for <xen-devel@lists.xenproject.org>; Wed, 01 Apr 2026 08:19:56 +0200
Received: from [209.85.221.50] (helo=mail-wr1-f50.google.com)
 by tlsNG-33051d.mxtls.expurgate.net with ESMTPS (eXpurgate 4.55.2)
 (envelope-from <jbeulich@suse.com>)
 id 69ccb90c-1947-0a2a45030019-d155dd32a5e9-3
 for <xen-devel@lists.xenproject.org>; Wed, 01 Apr 2026 08:19:56 +0200
Received: by mail-wr1-f50.google.com with SMTP id
 ffacd0b85a97d-43cf5fbacc9so310565f8f.1
 for <xen-devel@lists.xenproject.org>; Tue, 31 Mar 2026 23:19:56 -0700 (PDT)
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-43cf245e2f6sm34243131f8f.18.2026.03.31.23.19.55
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Tue, 31 Mar 2026 23:19:55 -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=google header.d=suse.com header.i="@suse.com" header.h="Content-Transfer-Encoding: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=1775024396; x=1775629196; darn=lists.xenproject.org;
        h=content-transfer-encoding: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;
        bh=Lpmd/TglRO+Yd0DMrl1tnaGzc4iWdLU/CKs5XA4oDDY=;
        b=C84we2p7YzQz6JZfcATbvemhCoRGGpbAtjMtay1//i37r3qo9vXhj10vBJwHIVPm9I
         6V8ut9UJo8hMfDuxzYqsj8Y4VgvaXyU3uWcn2W1BOejpR8z1VLFm1Wb70gyTc/eloNGo
         1mZzwgSzUsSBvlZfNIxKsL4urDuehozrnY6q0bUsXR4nc2i0DmsT2r2b58DlyWkVHL1u
         l4TNS6YV+rsr1CRJX5dyl4IbbT7vvfT7G3uPV+sYiGV09x96SN212npyleWuithtmm02
         1wTozJVXb2rqEYt9iFI5fFERLw9inhkHClXFPfCkI6HuPSX5JF6po+Y6YieT2FEuke5D
         AJvg==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20251104; t=1775024396; x=1775629196;
        h=content-transfer-encoding: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;
        bh=Lpmd/TglRO+Yd0DMrl1tnaGzc4iWdLU/CKs5XA4oDDY=;
        b=CGY9n1YlizsdceCwe5HPOfYE9Parg5yay50gyt7+Rw5MYStmLouV5Z3jlabZrMfis0
         P6W4YUlvB22C3EadKg6ki8YIHM9JhI7nFslXSYZiTGYNuny4fcKRkfCk9jeXWndU3ckW
         WwVHNRkTsuBEq3uHcIea0wvVuJF8NJIDt52CS9fTjE8zbdyTk985bg3kMiWOxfNQDQUr
         l7i1yhW51OfjBepN+d44o9gdvCFy7lz5R0ULHVmfnOB59JaeDaz5nbntGA1Cu+5ag5bm
         RPb/a35uQNObSHJPsdi5+8GQQ2ZLCRQ+4OPTmo7T6elQkv7uNPmjCvn6FJXyb9LnUkwG
         o47A==
X-Forwarded-Encrypted: i=1; AJvYcCWIdJgk8BPj8InS3c2jqrLe0BiCJfj9kJUX1XXb+eyoU44HN5ktJPX6jIJrNhMPssL7YltOKiF9irU=@lists.xenproject.org
X-Gm-Message-State: AOJu0Yy75rsIJ1/cKsOCUIKQyEasyrd08VaUEtBMezTZY08kSQ81JShE
	bBq+AfaLFxkHYItWezL5ZrChM2YKgMpUzbMMtoirfTprvsTiNj4a3L12T8/iWMvZ0Q==
X-Gm-Gg: ATEYQzx4sMlwTcqfku5CHd977lj8Jb+JrtRG7/lttABXNDBbJnJG/2u5LIeDaK+4EW4
	e2X2wtHhDEqXgN97kzijueupFF9NnLRqCAGSbxE8YToHAX27pvrnuN2eXKd0X1iDY8gGzk/srHJ
	iRt5H9K4/kRbnhD/86cZ3OAkb8sA8o66AuigmvFYlHszjX/l+Cbvjf0x6AeAkiG+rAz5EUlWApo
	j+Bpon2mkCfFhI7ughwHWUP7QB/cNuyLp4Ne9ztvyZwEfzA6XxH/FPvC8bWtexe/5fzZuDFxoA1
	SdHDFYPH5y3kb1ABPSHvDkARkKdT17UgCV2wT0gxrsTCgiHxmuBlBx7u5QGYi2SbCSYt96CKXbu
	XYYfzS6G3Z12zKRTqgjNIg+znCHl7L3kXTO/qitLPdGZbbkGgL3oVkPsLraUie+31Ss4C0BPW+N
	GPoNAG00aHxYpiVQXBDRHwkYGKXvHMX1PSc+gdvANPRbd6pnw6bsF3Xc6zU9EfEgwl4ulfdUlYa
	1dJsgbtOykVyAA=
X-Received: by 2002:adf:fa52:0:b0:43d:1598:2d6e with SMTP id ffacd0b85a97d-43d15982eb7mr2498938f8f.20.1775024395642;
        Tue, 31 Mar 2026 23:19:55 -0700 (PDT)
Message-ID: <46dd0df2-ccf1-4c5e-9f89-9b0b197e1c95@suse.com>
Date: Wed, 1 Apr 2026 08:19:54 +0200
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH v2 4/4] xen/riscv: init_csr_masks()-related improvements
To: Oleksii Kurochko <oleksii.kurochko@gmail.com>
Cc: Romain Caritey <Romain.Caritey@microchip.com>,
 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.pau@citrix.com>,
 Stefano Stabellini <sstabellini@kernel.org>, xen-devel@lists.xenproject.org
References: <cover.1774863161.git.oleksii.kurochko@gmail.com>
 <8eb8327bfb2f273cd0fa32ba65e84bb79e8607d4.1774863161.git.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: <8eb8327bfb2f273cd0fa32ba65e84bb79e8607d4.1774863161.git.oleksii.kurochko@gmail.com>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 7bit
X-purgate-ID: tlsNG-33051d/1775024396-4A84072C-60EA4758/10/73395122804
X-purgate-type: spam
X-purgate-size: 725

On 31.03.2026 21:04, Oleksii Kurochko wrote:
> There is no reason to use _UL() in define-s sitting in C file hence use UL
> suffix instead.
> 
> Drop 3d argument of INIT_CSR_MASK() and INIT_RO_ONE_MASK() to reduce risk
> of incomplete editing after copy-and-paste, or other typo-ing.
> 
> Use _VALID_ infix instead of _AVAIL_ as the mask identifies architecturally
> defined bits, not bits available for software use.
> 
> Suggested-by: Jan Beulich <jbeulich@suse.com>
> Signed-off-by: Oleksii Kurochko <oleksii.kurochko@gmail.com>
> Reviewed-by: Jan Beulich <jbeulich@suse.com>

Seeing this is ready to go in, am I overlooking any dependency on earlier
patches, or could this indeed go in right away?

Jan


From xen-devel-bounces@lists.xenproject.org Wed Apr 01 06:29:22 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 01 Apr 2026 06:29:22 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1269714.1558626 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1w7p4m-0007Hi-Bt; Wed, 01 Apr 2026 06:29:16 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1269714.1558626; Wed, 01 Apr 2026 06: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 1w7p4m-0007Hb-98; Wed, 01 Apr 2026 06:29:16 +0000
Received: by outflank-mailman (input) for mailman id 1269714;
 Wed, 01 Apr 2026 06:29:14 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <jbeulich@suse.com>) id 1w7p4k-0007HV-Mt
 for xen-devel@lists.xenproject.org; Wed, 01 Apr 2026 06:29:14 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1w7p4j-005R2s-OG
 for xen-devel@lists.xenproject.org; Wed, 01 Apr 2026 08:29:13 +0200
Received: from [10.42.69.2] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <jbeulich@suse.com>)
 id 69ccbb32-e002-0a2a0a5209dd-0a2a4502c4d4-6
 for <xen-devel@lists.xenproject.org>; Wed, 01 Apr 2026 08:29:13 +0200
Received: from [209.85.128.48] (helo=mail-wm1-f48.google.com)
 by tlsNG-720697.mxtls.expurgate.net with ESMTPS (eXpurgate 4.55.2)
 (envelope-from <jbeulich@suse.com>)
 id 69ccbb39-63bb-0a2a45020019-d1558030ec58-3
 for <xen-devel@lists.xenproject.org>; Wed, 01 Apr 2026 08:29:13 +0200
Received: by mail-wm1-f48.google.com with SMTP id
 5b1f17b1804b1-486507134e4so73107455e9.0
 for <xen-devel@lists.xenproject.org>; Tue, 31 Mar 2026 23:29:13 -0700 (PDT)
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-4887e83e906sm85638505e9.8.2026.03.31.23.29.12
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Tue, 31 Mar 2026 23:29:12 -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=google header.d=suse.com header.i="@suse.com" header.h="Content-Transfer-Encoding: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=1775024953; x=1775629753; darn=lists.xenproject.org;
        h=content-transfer-encoding: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;
        bh=8Bmie9qj6MlGel6w/+sZbpTxj82sDgs07ODjWhFHiCQ=;
        b=SbP69BvZuSPscGsD8sRgOyN0AO4C1jUGN+TT7tFHp1F14iOLINfs1RSdP6FEXHckSq
         kQEYIHlN4hD9oqOCg2MmytYx1ODMLZ05BGBGWnIN2SH8MIk+tgk7NS+W8+L5e4uHr3mQ
         /ghh9uoXHwU+me7CDHf39uEdpKegvai6wxQ3LNDtnWvpoX4mRjgofMDWXyxg06K7lAWI
         c9XEwO7Pkjz4T5A8MHY5xqf9vLp1pahl99eFArKW7d6HGHBhycH5dpNi6sCbpquCZ4tW
         sS7CvPSXoBSL/X0D6mz7HMokgzdTGMv+OEx1u/9+U6hyK46m3RnGcyhJTBMYDGS2sz7/
         I2gw==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20251104; t=1775024953; x=1775629753;
        h=content-transfer-encoding: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;
        bh=8Bmie9qj6MlGel6w/+sZbpTxj82sDgs07ODjWhFHiCQ=;
        b=NWNOmLNiyTKve3usXU3b695OH4mFBx9sqfTTuZ7QNH2fY+nzaBodNAmGRFsufg5cmd
         ZqQbn0zsBso+iGoLef5REeHdJCHze2K3XK+zjDGfAfUzVPjRoF7o0o8U5IpvMPbRLFL9
         dSmjhZ4R8smtxnMcVWidKL9CF6zPAnslsUT9iby2j6LH+afo+4i/h0L0gq3toZnS/J3h
         q2ky2mv2Hp8bjJ2pH+2jzvN+CZRP2G3oGeiPJ/JBCwvjy1FlMfMtBQ2mkXlyVk0CXG+6
         VRhV5sTv9+9Q197mznYMNwZh8gACT1V6XwFfsl3El5Xqc8j8cErnjV9XtLteNH9kOJaA
         LJSg==
X-Forwarded-Encrypted: i=1; AJvYcCUFkYSQ57mHdqxf9P7fTUYTUzfPrV0MA88S7RCRjgMZI0UEKFAxx9ydW56SSf8W2LqpG+iFjjbqPTk=@lists.xenproject.org
X-Gm-Message-State: AOJu0YyuQYzPzx4lDKJAm/MTe/L/wQLLHB5n/AOD2/oileEgSF6aT4hB
	HLkFYT2nCRJDmyUxKJ2i+Jb22WPburM4e9nsoZnhfPcJ9JdFdHZf9vMy6Jpoam9B5g==
X-Gm-Gg: ATEYQzwyHw/QP+EQb0AXFPqcvhLuUYvnK7qElTcS+qEMJ9w5cRneTlSCVpH6SMkO4ig
	Tb/S78QpJWuF6xt/KPY5EpdimGCWZUxj/R6wx94wgXUdyl5gzyl14JA2792UHC5c/rddMQTG5eR
	+XQphCGjkQ3ORpGnfdwK7oQ+7tR5nnAWqLofaQEg/0JTw93+o5OJfCxXrCw5Ygns/DajnXqRv7w
	/FR/3LVEf/m7uBLuYa+RkuT3VpfMMWWgE/K4aWUl88RvhReP5zdL3VjiIHUX7tHkW2uONx9RyID
	bhWlSmYYCidDDJMx7uwp91r+v1OlIMnJZeDACWYkiXhj5OfNE2GrQHIU/aYY2S5R0e7vr8HEBHM
	IPq/IhD2y4niYLhS3bozQUDnYvccpC4YdIMrhoa4Fj19FZGEotPIoayfJJ498JpSb3++Y31bAM/
	UpkezI1pKvxLzHZjntRqTpWZMn1OKfIdAExp4ZVJX5Hl9lepGhUiSSD74EyXFJbZhEn/3boEPBd
	w6YzVyTFYJI5hA=
X-Received: by 2002:a05:600c:4f94:b0:487:338:b4f3 with SMTP id 5b1f17b1804b1-4888359cec9mr31653315e9.17.1775024952916;
        Tue, 31 Mar 2026 23:29:12 -0700 (PDT)
Message-ID: <dc5550d7-5a2d-4ca1-85de-5a17c24aeac4@suse.com>
Date: Wed, 1 Apr 2026 08:29:11 +0200
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH v3] xen/arm: vpsci: ignore upper 32 bits for SMC32 PSCI
 arguments
To: Mykola Kvach <xakep.amatop@gmail.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>,
 xen-devel@lists.xenproject.org
References: <e1d18d55557ebe232fd62174f186b1cf228e48e5.1774981189.git.mykola_kvach@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: <e1d18d55557ebe232fd62174f186b1cf228e48e5.1774981189.git.mykola_kvach@epam.com>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 7bit
X-purgate-ID: tlsNG-720697/1775024953-69371DB8-BDD92897/0/0
X-purgate-type: clean
X-purgate-size: 2350

On 31.03.2026 20:31, Mykola Kvach wrote:
> From: Mykola Kvach <mykola_kvach@epam.com>
> 
> SMCCC DEN0028G, section 3.1, states that for AArch64 SMC/HVC calls
> using Wn, only the least significant 32 bits are significant and the
> upper 32 bits must be ignored by the implementation.
> 
> So for SMC32 PSCI calls, Xen must not treat non-zero upper bits in the
> argument registers as an error. Instead, they should be discarded when
> decoding the arguments.
> 
> Arm ARM DDI 0487J.a (D1-5406) also notes that the upper 32 bits may be
> implementation defined when entering from AArch32. Xen zeros them on
> entry, but that guarantee is only relevant for 32-bit domains.
> 
> Update PSCI v0.2+ CPU_ON, CPU_SUSPEND, AFFINITY_INFO and SYSTEM_SUSPEND
> to read SMC32 arguments via PSCI_ARG32(), while keeping the SMC64
> handling unchanged.
> 
> No functional change is intended for PSCI 0.1.
> 
> Suggested-by: Julien Grall <julien@xen.org>
> Signed-off-by: Mykola Kvach <mykola_kvach@epam.com>
> Reviewed-by: Bertrand Marquis <bertrand.marquis@arm.com>

I thought I might as well include this in my next commit sweep, but isn't
this R-b being invalidated by ...

> ---
> v3:
>  - use PSCI_ARG_CONV for SYSTEM_SUSPEND

... this change. That's ...

> @@ -422,14 +427,8 @@ bool do_vpsci_0_2_call(struct cpu_user_regs *regs, uint32_t fid)
>      case PSCI_1_0_FN32_SYSTEM_SUSPEND:
>      case PSCI_1_0_FN64_SYSTEM_SUSPEND:
>      {
> -        register_t epoint = PSCI_ARG(regs, 1);
> -        register_t cid = PSCI_ARG(regs, 2);
> -
> -        if ( fid == PSCI_1_0_FN32_SYSTEM_SUSPEND )
> -        {
> -            epoint &= GENMASK(31, 0);
> -            cid &= GENMASK(31, 0);
> -        }
> +        register_t epoint = PSCI_ARG_CONV(regs, 1, is_conv_64);
> +        register_t cid = PSCI_ARG_CONV(regs, 2, is_conv_64);
>  
>          perfc_incr(vpsci_system_suspend);
>          PSCI_SET_RESULT(regs, do_psci_1_0_system_suspend(epoint, cid));

... this hunk aiui, which is far from merely cosmetic imo. While
behavior looks to remain the same for PSCI_1_0_FN32_SYSTEM_SUSPEND, it
clearly changes for PSCI_1_0_FN64_SYSTEM_SUSPEND. That may be intended
and for the better, but the change clearly wasn't reviewed by Bertrand,
nor - when offering the R-b - did he ask for this extra change.

Jan


From xen-devel-bounces@lists.xenproject.org Wed Apr 01 06:42:00 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 01 Apr 2026 06:42:00 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1269724.1558635 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1w7pH0-0001vO-DM; Wed, 01 Apr 2026 06:41:54 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1269724.1558635; Wed, 01 Apr 2026 06:41: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 1w7pH0-0001vH-Ab; Wed, 01 Apr 2026 06:41:54 +0000
Received: by outflank-mailman (input) for mailman id 1269724;
 Wed, 01 Apr 2026 06:41: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 1w7pGz-0001vB-7S
 for xen-devel@lists.xenproject.org; Wed, 01 Apr 2026 06:41:53 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1w7pGy-00AiXb-4V
 for xen-devel@lists.xenproject.org; Wed, 01 Apr 2026 08:41:52 +0200
Received: from [10.42.69.1] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <Michal.Orzel@amd.com>)
 id 69ccbe1b-5cb7-0a2a0a5109dd-0a2a4501c866-32
 for <xen-devel@lists.xenproject.org>; Wed, 01 Apr 2026 08:41:51 +0200
Received: from [52.101.53.54]
 (helo=BL0PR03CU003.outbound.protection.outlook.com)
 by tlsNG-d62444.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.0)
 (envelope-from <Michal.Orzel@amd.com>)
 id 69ccbe2e-6fc9-0a2a45010019-346535368321-3
 for <xen-devel@lists.xenproject.org>; Wed, 01 Apr 2026 08:41:51 +0200
Received: from CH2PR03CA0011.namprd03.prod.outlook.com (2603:10b6:610:59::21)
 by DM4PR12MB7600.namprd12.prod.outlook.com (2603:10b6:8:108::5) with
 Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9769.17; Wed, 1 Apr
 2026 06:41:45 +0000
Received: from CH1PEPF0000AD74.namprd04.prod.outlook.com
 (2603:10b6:610:59:cafe::f1) by CH2PR03CA0011.outlook.office365.com
 (2603:10b6:610:59::21) with Microsoft SMTP Server (version=TLS1_3,
 cipher=TLS_AES_256_GCM_SHA384) id 15.20.9745.30 via Frontend Transport; Wed,
 1 Apr 2026 06:41:45 +0000
Received: from satlexmb07.amd.com (165.204.84.17) by
 CH1PEPF0000AD74.mail.protection.outlook.com (10.167.244.52) with Microsoft
 SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id
 15.20.9745.21 via Frontend Transport; Wed, 1 Apr 2026 06:41:45 +0000
Received: from SATLEXMB03.amd.com (10.181.40.144) by satlexmb07.amd.com
 (10.181.42.216) with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.2.2562.17; Wed, 1 Apr
 2026 01:41:44 -0500
Received: from satlexmb07.amd.com (10.181.42.216) by SATLEXMB03.amd.com
 (10.181.40.144) with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2507.39; Wed, 1 Apr
 2026 01:41:44 -0500
Received: from [10.71.194.215] (10.180.168.240) by satlexmb07.amd.com
 (10.181.42.216) with Microsoft SMTP Server id 15.2.2562.17 via Frontend
 Transport; Wed, 1 Apr 2026 01:41:43 -0500
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@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=o6us/gOvgPv94gROrBjlXupBHM+qtmB3Tirfg0ZTe6ptsLJgy9jyEo8h37MgPe1M9sueMcc21v6N7Rx3Szj156TCkcjS5epmGnTpA3jriTi11c+eIa+7cd2s9wfBPVVrMeHBOR45t5bhQPx8tBDN1Iuzk5WIaMRwFWzYbfM0nKxY+fJw9BokcpNAZDErnjCDfkbJRcCmo/rtHJsQ5aU0lvo511EUbZNNRSJSIWDngebblO9BZbDdREbI646IeBV8IiyNjgecY6jkSipTOnZPHFJMB2CafETOLIB6W/hmiVTQKIadLcV9Mvvb2PvZ2O4xMmGkm/9DW5jIL+Z83WrWPQ==
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com;
 s=arcselector10001;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1;
 bh=s4UkN+7fTYVnKhgG0cXQ4SEnlwNdVk3op25ukMyHf0A=;
 b=VYf2eO8+h6jdjiAU0hTTcQEti5gMNN1gxg8mfO/2GBfGrqG8W8lFu6q8IoQtpUOlYHR6wLZP8vYLjNd0KwE4QvW9bucvjAXJ1eeecPMDXkrGqg5sWAWZJq4qIEDwP77APx4K8IGJtoL0j4E5rtl43ULv7+LM3mcTXrSy/8sYakqa/xML2CvTtqo0Rz8rIzW3mDWcDfH0Gez2kbN/kJh5YHpMu7WXfNYyDBBn1xeJBBWRVUxclB9s3A9/CsLJQNGpvtEmtATHVhyCMEa9Y69Y/gDiEviYFHC8+etkqvYvNfeuWQh2q3A192EpiOVQsjjUNbUwKp9lmIzW0eohCzc2/w==
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=s4UkN+7fTYVnKhgG0cXQ4SEnlwNdVk3op25ukMyHf0A=;
 b=d6gaBRU6RI6+J4xvX49r/QLaf1dkfI3KcFyWkDwbzdNfyY3uNJj0o45Rj7tMk1AyzcmFGbjEzz8iA6uASlQmTdhI9/8ODM0aLEj77Ut83ZU/WsfTzYuRi1BHNVnnkm3EZEVP3xz0eHGPHlUetzWOiKcGiUwgYXAO8eqJRuOA+sQ=
X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 165.204.84.17)
 smtp.mailfrom=amd.com; dkim=none (message not signed)
 header.d=none;dmarc=pass action=none header.from=amd.com;
Received-SPF: Pass (protection.outlook.com: domain of amd.com designates
 165.204.84.17 as permitted sender) receiver=protection.outlook.com;
 client-ip=165.204.84.17; helo=satlexmb07.amd.com; pr=C
Message-ID: <7d4791ee-05cb-490a-a209-a84a6531f0ca@amd.com>
Date: Wed, 1 Apr 2026 08:41:37 +0200
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH V2] xen/arm: Increase DOM0_FDT_EXTRA_SIZE to support max
 reserved memory banks
To: Oleksandr Tyshchenko <Oleksandr_Tyshchenko@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>, "Volodymyr
 Babchuk" <Volodymyr_Babchuk@epam.com>
References: <20260331154309.2921483-1-oleksandr_tyshchenko@epam.com>
From: "Orzel, Michal" <michal.orzel@amd.com>
Content-Language: en-US
In-Reply-To: <20260331154309.2921483-1-oleksandr_tyshchenko@epam.com>
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: 7bit
Received-SPF: None (SATLEXMB03.amd.com: michal.orzel@amd.com does not
 designate permitted sender hosts)
X-EOPAttributedMessage: 0
X-MS-PublicTrafficType: Email
X-MS-TrafficTypeDiagnostic: CH1PEPF0000AD74:EE_|DM4PR12MB7600:EE_
X-MS-Office365-Filtering-Correlation-Id: cd99f44a-2846-4afe-7906-08de8fb9bde4
X-MS-Exchange-SenderADCheck: 1
X-MS-Exchange-AntiSpam-Relay: 0
X-Microsoft-Antispam:
	BCL:0;ARA:13230040|376014|36860700016|82310400026|1800799024|22082099003|56012099003|18002099003;
X-Microsoft-Antispam-Message-Info:
	h3RRgJUQCnZOhC2ZOt9/OQOxWKzw74odFn5Moo8IZlcfZReEDSqrd46gbXJKRnshu7kGJlIUVP3pqq6M72QeILGQxsxSQp+keXg1lW909QGmqfE/Ixa3CAouFG+OQ+eB7UF0FDCGu9Mb2vKAADa9jOZOwME6gpENhWTMbmCotpFFVPt/SJO3csm1aPZ9WEEl7cDL7cw0NZNkwW2Y0RQy8FdPmjFSQBM1Y3cKMlE5FMCMdM97Bt7n+xtcidv1BC/wMjxSZGB7KlNvmJE7gtFVYG6e0nm2JD6sWGRbibAWb6Sxfk1V3EZAGwWuSCsTlw+MiX8i6SdJQZgrzlzC5K/n/QsMjFC07zp9jyhyw8USBb625AAwiUBBWEvYlRrqMzX8nNithDMkaT9ZY5Rkn0BS9UNJ9DlVitmhnMPLtdrzmgiL/OcQliU1vme+epca6uBikNEqiwHX6BERHS0q0FVXWt6b4LYjAElwoaCCf2zmUBszMOIMivJ+045P8danMbRUOzNgwtBfgZcjuQiu7srvehNKKKhLE0YS0x2MgSeIGXNKEMHrpkWuKgqmHm6PlNr68Nn0THZiGRzjr/c04lYNoU15gGSXGtlqsdjbK3IqMl6rEcvKj+70xJYlfhW7xphgZJOftm8551SrjcXMpHPfxk7uopugCsShArpYOiBVHX0oLfJy0ft4KPFFhuv+H7gUcoAlSnmcZ/zQbi1lUUOZbi+njiH2AqVOBJW2xmWFpRtvGUxFrldpcipS2cHjqu49EyEpONw/0Qro9N2oCLaV1w==
X-Forefront-Antispam-Report:
	CIP:165.204.84.17;CTRY:US;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:satlexmb07.amd.com;PTR:InfoDomainNonexistent;CAT:NONE;SFS:(13230040)(376014)(36860700016)(82310400026)(1800799024)(22082099003)(56012099003)(18002099003);DIR:OUT;SFP:1101;
X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1
X-MS-Exchange-AntiSpam-MessageData-0:
	DlQCr94BEl/KEkk5oTQwnoMG2k92x9dzjuBOsMC1G3kANoJI2r2fGEUo5F1cqokj1tanV84IkilF30p5uFpBu5VI6p3Swkxm8KBBw8vrDlRy75ZZZEfFFkjNeSIzPxHIY7XmKhp9yxOWNgfcI/E282J1W862JwzxIPreA/TgprzLPipBoDp8/8ZOr+yC2r4cR2QRP40I6Z2uXHnAQACcpT3ayUaQumZreE94/oS7z9BxDIoH0ocbMtemKXzq6qNBZ37FG05IcANhxgV8b1wnCpd0DgUJvVDnx2VnzY3P09CqI0fvu9VJmIibIep6mF/5JcMYnGx3XKxet/Yw4jCZjcwgu7zyCdIOSnECXw9hfF5kThgv2xTRPQrZj25erOyZvTKYeV0RdCkS9BTCztRHNBIBNkkLssWoF9wBV16BOi9pvO94wjdsRfCsm2GmhnMj
X-OriginatorOrg: amd.com
X-MS-Exchange-CrossTenant-OriginalArrivalTime: 01 Apr 2026 06:41:45.0231
 (UTC)
X-MS-Exchange-CrossTenant-Network-Message-Id: cd99f44a-2846-4afe-7906-08de8fb9bde4
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:
	CH1PEPF0000AD74.namprd04.prod.outlook.com
X-MS-Exchange-CrossTenant-AuthAs: Anonymous
X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem
X-MS-Exchange-Transport-CrossTenantHeadersStamped: DM4PR12MB7600
X-purgate-ID: tlsNG-d62444/1775025711-B4358185-4BB7D0BD/0/0
X-purgate-type: clean
X-purgate-size: 3402



On 31/03/2026 17:43, Oleksandr Tyshchenko wrote:
> From: Oleksandr Tyshchenko <Oleksandr_Tyshchenko@epam.com>
> 
> Xen fails to construct the hardware domain's device tree with
> FDT_ERR_NOSPACE (-3) when the host memory map is highly fragmented
> (e.g., numerous reserved memory regions) and the host DTB represents
> RAM compactly (e.g., a single reg pair or just a few).
> 
> This occurs because DOM0_FDT_EXTRA_SIZE underestimates the space
> required for an extra /memory node. While the host DTB might
> represent RAM compactly, make_memory_node() aggregates all
> reserved regions into a single reg property. With NR_MEM_BANKS (256)
> and 64-bit address/size cells, this property can grow up to
> 4KB (256 * 16), easily exceeding the space originally occupied by
> the host DTB's nodes plus the current padding, thereby overflowing
> the allocated buffer.
> 
> Additionally, the SHM regions require space for discrete sub-nodes
> under /reserved-memory node, as well as an appendage to the
> main /memory node. Each of the up to NR_SHMEM_BANKS (32) regions
> triggers the creation of a sub-node with properties (compatible,
> reg, xen,id, and xen,offset). These runtime-generated sub-nodes
> require approximately 142 bytes each, while the appendage consumes
> an additional 16 bytes per region.
> 
> Fix this by increasing DOM0_FDT_EXTRA_SIZE to account for fragmented
> reg properties (NR_MEM_BANKS * 16), the discrete SHM sub-nodes, and
> the SHM appendage to the /memory node (NR_SHMEM_BANKS * (160 + 16)).
> The SHM overhead is conditionally evaluated to avoid over-allocating
> memory when CONFIG_STATIC_SHM=n.
> 
> Signed-off-by: Oleksandr Tyshchenko <oleksandr_tyshchenko@epam.com>
> ---
>   V2:
>    - update commit description
>    - update in-code comment
>    - update macro
> ---
> ---
>  xen/arch/arm/domain_build.c | 18 ++++++++++++++----
>  1 file changed, 14 insertions(+), 4 deletions(-)
> 
> diff --git a/xen/arch/arm/domain_build.c b/xen/arch/arm/domain_build.c
> index 3cd251beed..07f331eac8 100644
> --- a/xen/arch/arm/domain_build.c
> +++ b/xen/arch/arm/domain_build.c
> @@ -98,11 +98,21 @@ int __init parse_arch_dom0_param(const char *s, const char *e)
>  #endif
>  
>  /*
> - * Amount of extra space required to dom0's device tree.  No new nodes
> - * are added (yet) but one terminating reserve map entry (16 bytes) is
> - * added.
> + * Amount of extra space required to dom0'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).
> + *  - The reserve map terminator (16 bytes).
> + *  - Space for a generated /memory node covering all possible reserved
> + *    memory regions (NR_MEM_BANKS * 16).
> + *  - Space for a generated /reserved-memory node with discrete SHM sub-nodes,
> + *    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))
> +#define DOM0_FDT_EXTRA_SIZE (128 + sizeof(struct fdt_reserve_entry) + \
> +                             (NR_MEM_BANKS * 16) +                    \
NIT: alignment. I'll fix on commit

Reviewed-by: Michal Orzel <michal.orzel@amd.com>

~Michal



From xen-devel-bounces@lists.xenproject.org Wed Apr 01 06:43:46 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 01 Apr 2026 06:43:46 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1269733.1558643 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1w7pIm-0002Qu-OJ; Wed, 01 Apr 2026 06:43:44 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1269733.1558643; Wed, 01 Apr 2026 06:43: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 1w7pIm-0002Qn-LP; Wed, 01 Apr 2026 06:43:44 +0000
Received: by outflank-mailman (input) for mailman id 1269733;
 Wed, 01 Apr 2026 06:43:44 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <xakep.amatop@gmail.com>) id 1w7pIl-0002Qh-OC
 for xen-devel@lists.xenproject.org; Wed, 01 Apr 2026 06:43:44 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1w7pIl-0037F1-2Y
 for xen-devel@lists.xenproject.org; Wed, 01 Apr 2026 08:43:43 +0200
Received: from [10.42.69.10] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <xakep.amatop@gmail.com>)
 id 69ccbe97-bab6-0a2a0a5309dd-0a2a450ac3bc-38
 for <xen-devel@lists.xenproject.org>; Wed, 01 Apr 2026 08:43:43 +0200
Received: from [209.85.208.51] (helo=mail-ed1-f51.google.com)
 by tlsNG-4011c0.mxtls.expurgate.net with ESMTPS (eXpurgate 4.55.2)
 (envelope-from <xakep.amatop@gmail.com>)
 id 69ccbe9e-1772-0a2a450a0019-d155d033e88c-3
 for <xen-devel@lists.xenproject.org>; Wed, 01 Apr 2026 08:43:43 +0200
Received: by mail-ed1-f51.google.com with SMTP id
 4fb4d7f45d1cf-66c05fb27e4so4354828a12.2
 for <xen-devel@lists.xenproject.org>; Tue, 31 Mar 2026 23:43:42 -0700 (PDT)
Received: from EPUAKYIW02F7.. ([45.12.26.38]) by smtp.gmail.com with ESMTPSA id
 4fb4d7f45d1cf-66b72760506sm4206665a12.5.2026.03.31.23.43.39
 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
 Tue, 31 Mar 2026 23:43:41 -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=20251104 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=20251104; t=1775025822; x=1775630622; 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;
        bh=wXfGbxEgVK86zP9EXSrRv04RVHrSL1xGXF93+I1C8b4=;
        b=GK7hJBRSPxcmvjwP8qEdPOas5MH3DoIW1V2u5JhTgTHUEOBAYTEBeL5Ia8FED+mpvZ
         y4CB98uBKXmEqDqX7R0HBjZ+CsrZKrfbCR3lBorNff6IlW3bYyVEThQ4YFjLxqJAY+K8
         HT4vOnVkzG5Ww35c4/gSdtuJijDgtL/4W6OvWHXVW9h8fG/QEs9yuk70CnnoY/aEQIJ0
         B/Mx24E+/PrRoFMVge8tBuAnAqoU3/cQ12x4lLRp6hMGNhF17O0X36XVYAtTFjrvzbV9
         Y2iDHX7yb5ttOgQisoMIr3wOwT5QwjeoUHPkvozP86mXBQLp7cJM9rrdGuD5xlg1YTOo
         Xxtw==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20251104; t=1775025822; x=1775630622;
        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;
        bh=wXfGbxEgVK86zP9EXSrRv04RVHrSL1xGXF93+I1C8b4=;
        b=NXt9JUIvCLJJbPOGilnYTGzO0wHyK+rkieUt4w3uvaAyx3yfmGUDE6E2DfEpov5MLc
         I3sGOldvtyBgXsaz5dsRJu/r+hbYEpSdNmicgyrS7XJ42Dupc10A/F+wzsi95LFBrhHr
         zn2x06oRylyYWlZNAaBEHmaCFLz0zj4Tyrrjod8bVWOJfg+rNH78g0xDf/AzVj8zzlGP
         sti7OHuU5j0CJoedmR0YEim+E5x6iyyrSA2uokN9Zd1e9l5dUrQdj4GPXlmTuvsYu1Fn
         +7sHNw6g17e4XSy1vbxL4fHZP8NbV3zPx4x7s1Kq7bEVel0EcRCLrfDBC82PSW6mRdCU
         wrKA==
X-Gm-Message-State: AOJu0Yy5pjDe0IkQfnlWUIjm7CHsqKRDun5vE/zNvScYI4KYZ4DXu+d9
	ChgfNDF0EcKI9lgwfCOQz1tFhDhckNYVYkY7CnHi9v8DEZmqQJyfQzhrCNRo1Rpd
X-Gm-Gg: ATEYQzz7x+ETXDjdvBppm30d1XYf8LS9huEeMTEFYZyXT/MGo2ezketRoc/WR+SHssY
	mnJiORNNjQdf73Wif31CBQ3SJAwvQTRMw62sMEm2+VfEpR5sDVMeykxGNWDnUBOCGqBt5omDziB
	VJRrAh99VPtirt0FmfvqovSnkxyyO8XNFAb1tJYC7KB8dPPXGK27F+mCU21ufOXSWnSJ3aT3lyS
	693hV24c8RjXZ3dZnIJqoR0ev9qLetS+rxdQ6zjhaGrb5e3LqIuHQpCX4ZD9+WrHizlvavNnw21
	qnntDh0/WKDulJqHChsyf0PKT6bbg88vN7f4Wr4bChrHQiMQdG/9TNXRmKHyX8owyYF/zRmPxtj
	cpHLor5iB5z19Cs1CBJPTRaLXAtjBDvM+BnYLaydub0HUNc8OqfxDayBQFqiTYU1Yr13TYJNB84
	ZoA0f6dGhigGdSHGln39uHvXxbQQ==
X-Received: by 2002:aa7:c507:0:b0:66d:cfa5:9707 with SMTP id 4fb4d7f45d1cf-66dcfa5c4c9mr737212a12.0.1775025821867;
        Tue, 31 Mar 2026 23:43:41 -0700 (PDT)
From: Mykola Kvach <xakep.amatop@gmail.com>
To: xen-devel@lists.xenproject.org
Cc: Mykola Kvach <mykola_kvach@epam.com>,
	Paul Durrant <paul@xen.org>,
	Jan Beulich <jbeulich@suse.com>,
	Andrew Cooper <andrew.cooper3@citrix.com>,
	=?UTF-8?q?Roger=20Pau=20Monn=C3=A9?= <roger.pau@citrix.com>,
	Anthony PERARD <anthony.perard@vates.tech>,
	Michal Orzel <michal.orzel@amd.com>,
	Julien Grall <julien@xen.org>,
	Stefano Stabellini <sstabellini@kernel.org>,
	Tim Deegan <tim@xen.org>,
	Dario Faggioli <dfaggioli@suse.com>,
	Juergen Gross <jgross@suse.com>,
	George Dunlap <gwd@xenproject.org>
Subject: [PATCH v2] xen/domain: make shutdown state explicit
Date: Wed,  1 Apr 2026 09:41:13 +0300
Message-ID: <e9c45be41bb36ca341dad57196c753fbe82d1526.1774998397.git.mykola_kvach@epam.com>
X-Mailer: git-send-email 2.43.0
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit
X-purgate-ID: tlsNG-4011c0/1775025823-51E8D900-FCAFAFB0/0/0
X-purgate-type: clean
X-purgate-size: 19099

From: Mykola Kvach <mykola_kvach@epam.com>

The shutdown flow currently overloads is_shutting_down and
is_shut_down to represent multiple phases of the shutdown lifecycle.
Some users treat is_shutting_down narrowly as "shutdown still needs to
be driven to completion", while others rely on it more broadly as
"the domain is no longer in its normal running state".

Make the lifecycle explicit by introducing enum
domain_shutdown_state and helper predicates whose names match their
semantics: domain_shutting_down() for the transient phase,
domain_shutdown_completed() for the final state, and
domain_in_shutdown_state() for checks that need the union of both.

The conversion is intentionally not mechanical. The old flags were not
mutually exclusive: once a domain became fully shut down,
is_shutting_down remained set. As a result, sites that previously
used the absence of is_shutting_down to exclude both the transient and
completed states now use domain_in_shutdown_state(), sites that care
specifically about the final state use domain_shutdown_completed(),
and only paths that still have work to do before shutdown finalization
use domain_shutting_down().

At the same time, make domain_resume() validate its input state and
return an error to its callers. Resume is now accepted only from the
fully shut down state.

This removes the implicit coupling between unrelated users of the old
flags and makes the shutdown/resume transitions self-describing.

Suggested-by: Jan Beulich <jbeulich@suse.com>
Signed-off-by: Mykola Kvach <mykola_kvach@epam.com>
Reviewed-by: Michal Orzel <michal.orzel@amd.com>
---
Changes in v2:
- Drop the shutdown reason restrictions from domain_resume(), so the
  validation remains compatible with the existing soft-reset flow.
- Use clearer helper naming for the three shutdown-state predicates.
- Document in the commit message how old is_shutting_down/is_shut_down
  users map to the new shutdown-state helpers.
- Fix label indentation noted during review.

Link to discussion: https://patchew.org/Xen/cover.1756392094.git.mykola._5Fkvach@epam.com/bb53d9911b00879c7b25f5258d0e3e48005671f9.1756392094.git.mykola._5Fkvach@epam.com/#a64cff9f-df5f-467b-a944-74e803c64ab9@suse.com
---
 xen/arch/x86/hvm/viridian/time.c |  2 +-
 xen/arch/x86/mm.c                |  2 +-
 xen/arch/x86/mm/hap/hap.c        |  2 +-
 xen/arch/x86/mm/shadow/common.c  |  5 ++--
 xen/arch/x86/mm/shadow/multi.c   | 12 +++++----
 xen/common/domain.c              | 43 +++++++++++++++++++++++---------
 xen/common/domctl.c              |  4 +--
 xen/common/sched/core.c          |  2 +-
 xen/drivers/passthrough/iommu.c  |  8 +++---
 xen/drivers/passthrough/pci.c    |  2 +-
 xen/include/xen/sched.h          | 30 ++++++++++++++++++----
 11 files changed, 77 insertions(+), 35 deletions(-)

diff --git a/xen/arch/x86/hvm/viridian/time.c b/xen/arch/x86/hvm/viridian/time.c
index 9311858d63..514b1643bc 100644
--- a/xen/arch/x86/hvm/viridian/time.c
+++ b/xen/arch/x86/hvm/viridian/time.c
@@ -102,7 +102,7 @@ static void time_ref_count_thaw(const struct domain *d)
     struct viridian_domain *vd = d->arch.hvm.viridian;
     struct viridian_time_ref_count *trc = &vd->time_ref_count;
 
-    if ( d->is_shutting_down ||
+    if ( domain_in_shutdown_state(d) ||
          test_and_set_bit(_TRC_running, &trc->flags) )
         return;
 
diff --git a/xen/arch/x86/mm.c b/xen/arch/x86/mm.c
index 4c404b6c13..402bbf2309 100644
--- a/xen/arch/x86/mm.c
+++ b/xen/arch/x86/mm.c
@@ -1219,7 +1219,7 @@ void put_page_from_l1e(l1_pgentry_t l1e, struct domain *l1e_owner)
      */
 #if _PAGE_GNTTAB
     if ( (l1e_get_flags(l1e) & _PAGE_GNTTAB) &&
-         !l1e_owner->is_shutting_down && !l1e_owner->is_dying )
+         !domain_in_shutdown_state(l1e_owner) && !l1e_owner->is_dying )
     {
         gprintk(XENLOG_WARNING,
                 "Attempt to implicitly unmap %pd's grant PTE %" PRIpte "\n",
diff --git a/xen/arch/x86/mm/hap/hap.c b/xen/arch/x86/mm/hap/hap.c
index 5ccb80bda5..9db6d8fa9e 100644
--- a/xen/arch/x86/mm/hap/hap.c
+++ b/xen/arch/x86/mm/hap/hap.c
@@ -414,7 +414,7 @@ static mfn_t hap_make_monitor_table(struct vcpu *v)
 
  oom:
     if ( !d->is_dying &&
-         (!d->is_shutting_down || d->shutdown_code != SHUTDOWN_crash) )
+         (!domain_in_shutdown_state(d) || d->shutdown_code != SHUTDOWN_crash) )
     {
         printk(XENLOG_G_ERR "%pd: out of memory building monitor pagetable\n",
                d);
diff --git a/xen/arch/x86/mm/shadow/common.c b/xen/arch/x86/mm/shadow/common.c
index dd2d04d049..14f808dc61 100644
--- a/xen/arch/x86/mm/shadow/common.c
+++ b/xen/arch/x86/mm/shadow/common.c
@@ -164,7 +164,7 @@ void shadow_promote(struct domain *d, mfn_t gmfn, unsigned int type)
     /* We should never try to promote a gmfn that has writeable mappings */
     ASSERT((page->u.inuse.type_info & PGT_type_mask) != PGT_writable_page
            || (page->u.inuse.type_info & PGT_count_mask) == 0
-           || d->is_shutting_down);
+           || domain_in_shutdown_state(d));
 
     /* Is the page already shadowed? */
     if ( !test_and_set_bit(_PGC_shadowed_pt, &page->count_info) )
@@ -442,7 +442,8 @@ bool shadow_prealloc(struct domain *d, unsigned int type, unsigned int count)
         count += paging_logdirty_levels();
 
     ret = _shadow_prealloc(d, count);
-    if ( !ret && (!d->is_shutting_down || d->shutdown_code != SHUTDOWN_crash) )
+    if ( !ret && (!domain_in_shutdown_state(d) ||
+                  d->shutdown_code != SHUTDOWN_crash) )
         /*
          * Failing to allocate memory required for shadow usage can only result in
          * a domain crash, do it here rather that relying on every caller to do it.
diff --git a/xen/arch/x86/mm/shadow/multi.c b/xen/arch/x86/mm/shadow/multi.c
index 80cd3299fa..a1e9129dd8 100644
--- a/xen/arch/x86/mm/shadow/multi.c
+++ b/xen/arch/x86/mm/shadow/multi.c
@@ -2373,7 +2373,8 @@ static int cf_check sh_page_fault(
      * already used for some special purpose (ioreq pages, or granted pages).
      * If that happens we'll have killed the guest already but it's still not
      * safe to propagate entries out of the guest PT so get out now. */
-    if ( unlikely(d->is_shutting_down && d->shutdown_code == SHUTDOWN_crash) )
+    if ( unlikely(domain_in_shutdown_state(d) &&
+                  d->shutdown_code == SHUTDOWN_crash) )
     {
         SHADOW_PRINTK("guest is shutting down\n");
         goto propagate;
@@ -2483,7 +2484,7 @@ static int cf_check sh_page_fault(
 #if GUEST_PAGING_LEVELS == 3
         sh_update_cr3(v, false);
 #else
-        ASSERT(d->is_shutting_down);
+        ASSERT(domain_in_shutdown_state(d));
         sh_trace_va(TRC_SHADOW_DOMF_DYING, va);
 #endif
         paging_unlock(d);
@@ -2497,7 +2498,8 @@ static int cf_check sh_page_fault(
          && ft == ft_demand_write )
         sh_unsync(v, gmfn);
 
-    if ( unlikely(d->is_shutting_down && d->shutdown_code == SHUTDOWN_crash) )
+    if ( unlikely(domain_in_shutdown_state(d) &&
+                  d->shutdown_code == SHUTDOWN_crash) )
     {
         /* We might end up with a crashed domain here if
          * sh_remove_shadows() in a previous sh_resync() call has
@@ -3269,7 +3271,7 @@ static pagetable_t cf_check sh_update_cr3(struct vcpu *v, bool noflush)
                                        sh_make_shadow);
     if ( unlikely(pagetable_is_null(v->arch.paging.shadow.shadow_table[0])) )
     {
-        ASSERT(d->is_dying || d->is_shutting_down);
+        ASSERT(d->is_dying || domain_in_shutdown_state(d));
         return old_entry;
     }
     if ( !paging_mode_external(d) && !is_pv_32bit_domain(d) )
@@ -3336,7 +3338,7 @@ static pagetable_t cf_check sh_update_cr3(struct vcpu *v, bool noflush)
     ASSERT(pagetable_is_null(old_entry));
     if ( unlikely(pagetable_is_null(v->arch.paging.shadow.shadow_table[0])) )
     {
-        ASSERT(d->is_dying || d->is_shutting_down);
+        ASSERT(d->is_dying || domain_in_shutdown_state(d));
         return old_entry;
     }
 #else
diff --git a/xen/common/domain.c b/xen/common/domain.c
index bb9e210c28..503836872d 100644
--- a/xen/common/domain.c
+++ b/xen/common/domain.c
@@ -191,7 +191,7 @@ static void set_domain_state_info(struct xen_domctl_get_domain_state *info,
                                   const struct domain *d)
 {
     info->state = XEN_DOMCTL_GETDOMSTATE_STATE_EXIST;
-    if ( d->is_shut_down )
+    if ( domain_shutdown_completed(d) )
         info->state |= XEN_DOMCTL_GETDOMSTATE_STATE_SHUTDOWN;
     if ( d->is_dying == DOMDYING_dying )
         info->state |= XEN_DOMCTL_GETDOMSTATE_STATE_DYING;
@@ -282,14 +282,14 @@ static void __domain_finalise_shutdown(struct domain *d)
 
     BUG_ON(!spin_is_locked(&d->shutdown_lock));
 
-    if ( d->is_shut_down )
+    if ( domain_shutdown_completed(d) )
         return;
 
     for_each_vcpu ( d, v )
         if ( !v->paused_for_shutdown )
             return;
 
-    d->is_shut_down = 1;
+    d->shutdown_state = DOMSHUTDOWN_complete;
     domain_changed_state(d);
     if ( (d->shutdown_code == SHUTDOWN_suspend) && d->suspend_evtchn )
         evtchn_send(d, d->suspend_evtchn);
@@ -303,7 +303,7 @@ static void vcpu_check_shutdown(struct vcpu *v)
 
     spin_lock(&d->shutdown_lock);
 
-    if ( d->is_shutting_down )
+    if ( domain_shutting_down(d) )
     {
         if ( !v->paused_for_shutdown )
             vcpu_pause_nosync(v);
@@ -1356,7 +1356,7 @@ int domain_kill(struct domain *d)
 
 void __domain_crash(struct domain *d)
 {
-    if ( d->is_shutting_down )
+    if ( domain_in_shutdown_state(d) )
     {
         /* Print nothing: the domain is already shutting down. */
     }
@@ -1394,13 +1394,13 @@ int domain_shutdown(struct domain *d, u8 reason)
     if ( is_hardware_domain(d) )
         hwdom_shutdown(reason);
 
-    if ( d->is_shutting_down )
+    if ( domain_in_shutdown_state(d) )
     {
         spin_unlock(&d->shutdown_lock);
         return 0;
     }
 
-    d->is_shutting_down = 1;
+    d->shutdown_state = DOMSHUTDOWN_in_progress;
 
     smp_mb(); /* set shutdown status /then/ check for per-cpu deferrals */
 
@@ -1423,9 +1423,12 @@ int domain_shutdown(struct domain *d, u8 reason)
     return 0;
 }
 
-void domain_resume(struct domain *d)
+int domain_resume(struct domain *d)
 {
     struct vcpu *v;
+    enum domain_shutdown_state shutdown_state;
+    unsigned int shutdown_code;
+    int rc = 0;
 
     /*
      * Some code paths assume that shutdown status does not get reset under
@@ -1435,10 +1438,18 @@ void domain_resume(struct domain *d)
 
     spin_lock(&d->shutdown_lock);
 
-    d->is_shutting_down = d->is_shut_down = 0;
+    shutdown_state = d->shutdown_state;
+    shutdown_code = d->shutdown_code;
+
+    if ( !domain_shutdown_completed(d) )
+    {
+        rc = -EINVAL;
+        goto out_unlock;
+    }
 
     arch_domain_resume(d);
 
+    d->shutdown_state = DOMSHUTDOWN_none;
     d->shutdown_code = SHUTDOWN_CODE_INVALID;
 
     for_each_vcpu ( d, v )
@@ -1448,9 +1459,17 @@ void domain_resume(struct domain *d)
         v->paused_for_shutdown = 0;
     }
 
+ out_unlock:
     spin_unlock(&d->shutdown_lock);
 
     domain_unpause(d);
+
+    if ( rc )
+        dprintk(XENLOG_WARNING,
+                "%pd: Invalid domain state for resume: shutdown_state=%u, shutdown_code=%u\n",
+                d, shutdown_state, shutdown_code);
+
+    return rc;
 }
 
 int vcpu_start_shutdown_deferral(struct vcpu *v)
@@ -1460,7 +1479,7 @@ int vcpu_start_shutdown_deferral(struct vcpu *v)
 
     v->defer_shutdown = 1;
     smp_mb(); /* set deferral status /then/ check for shutdown */
-    if ( unlikely(v->domain->is_shutting_down) )
+    if ( unlikely(domain_shutting_down(v->domain)) )
         vcpu_check_shutdown(v);
 
     return v->defer_shutdown;
@@ -1470,7 +1489,7 @@ void vcpu_end_shutdown_deferral(struct vcpu *v)
 {
     v->defer_shutdown = 0;
     smp_mb(); /* clear deferral status /then/ check for shutdown */
-    if ( unlikely(v->domain->is_shutting_down) )
+    if ( unlikely(domain_shutting_down(v->domain)) )
         vcpu_check_shutdown(v);
 }
 
@@ -1802,7 +1821,7 @@ int domain_soft_reset(struct domain *d, bool resuming)
 
     rc = arch_domain_soft_reset(d);
     if ( !rc )
-        domain_resume(d);
+        rc = domain_resume(d);
     else
         domain_crash(d);
 
diff --git a/xen/common/domctl.c b/xen/common/domctl.c
index 93738931c5..e816ff755c 100644
--- a/xen/common/domctl.c
+++ b/xen/common/domctl.c
@@ -86,7 +86,7 @@ void getdomaininfo(struct domain *d, struct xen_domctl_getdomaininfo *info)
 
     info->flags = (info->nr_online_vcpus ? flags : 0) |
         ((d->is_dying == DOMDYING_dead) ? XEN_DOMINF_dying     : 0) |
-        (d->is_shut_down                ? XEN_DOMINF_shutdown  : 0) |
+        (domain_shutdown_completed(d)   ? XEN_DOMINF_shutdown  : 0) |
         (d->controller_pause_count > 0  ? XEN_DOMINF_paused    : 0) |
         (d->debugger_attached           ? XEN_DOMINF_debugged  : 0) |
         (is_xenstore_domain(d)          ? XEN_DOMINF_xs_domain : 0) |
@@ -404,7 +404,7 @@ long do_domctl(XEN_GUEST_HANDLE_PARAM(xen_domctl_t) u_domctl)
         if ( d == current->domain ) /* no domain_pause() */
             ret = -EINVAL;
         else
-            domain_resume(d);
+            ret = domain_resume(d);
         break;
 
     case XEN_DOMCTL_createdomain:
diff --git a/xen/common/sched/core.c b/xen/common/sched/core.c
index a57d5dd929..26cdb8a857 100644
--- a/xen/common/sched/core.c
+++ b/xen/common/sched/core.c
@@ -1540,7 +1540,7 @@ static void cf_check domain_watchdog_timeout(void *data)
 
     BUILD_BUG_ON(alignof(*d) < PAGE_SIZE);
 
-    if ( d->is_shutting_down || d->is_dying )
+    if ( domain_in_shutdown_state(d) || d->is_dying )
         return;
 
     printk("Watchdog timer %u fired for %pd\n", id, d);
diff --git a/xen/drivers/passthrough/iommu.c b/xen/drivers/passthrough/iommu.c
index c9425d6971..428ac89f50 100644
--- a/xen/drivers/passthrough/iommu.c
+++ b/xen/drivers/passthrough/iommu.c
@@ -355,7 +355,7 @@ long iommu_map(struct domain *d, dfn_t dfn0, mfn_t mfn0,
         if ( likely(!rc) )
             continue;
 
-        if ( !d->is_shutting_down && printk_ratelimit() )
+        if ( !domain_in_shutdown_state(d) && printk_ratelimit() )
             printk(XENLOG_ERR
                    "d%d: IOMMU mapping dfn %"PRI_dfn" to mfn %"PRI_mfn" failed: %d\n",
                    d->domain_id, dfn_x(dfn), mfn_x(mfn), rc);
@@ -427,7 +427,7 @@ long iommu_unmap(struct domain *d, dfn_t dfn0, unsigned long page_count,
         if ( likely(!err) )
             continue;
 
-        if ( !d->is_shutting_down && printk_ratelimit() )
+        if ( !domain_in_shutdown_state(d) && printk_ratelimit() )
             printk(XENLOG_ERR
                    "d%d: IOMMU unmapping dfn %"PRI_dfn" failed: %d\n",
                    d->domain_id, dfn_x(dfn), err);
@@ -492,7 +492,7 @@ int iommu_iotlb_flush(struct domain *d, dfn_t dfn, unsigned long page_count,
                     flush_flags);
     if ( unlikely(rc) )
     {
-        if ( !d->is_shutting_down && printk_ratelimit() )
+        if ( !domain_in_shutdown_state(d) && printk_ratelimit() )
             printk(XENLOG_ERR
                    "d%d: IOMMU IOTLB flush failed: %d, dfn %"PRI_dfn", page count %lu flags %x\n",
                    d->domain_id, rc, dfn_x(dfn), page_count, flush_flags);
@@ -517,7 +517,7 @@ int iommu_iotlb_flush_all(struct domain *d, unsigned int flush_flags)
                     flush_flags | IOMMU_FLUSHF_all);
     if ( unlikely(rc) )
     {
-        if ( !d->is_shutting_down && printk_ratelimit() )
+        if ( !domain_in_shutdown_state(d) && printk_ratelimit() )
             printk(XENLOG_ERR
                    "d%d: IOMMU IOTLB flush all failed: %d\n",
                    d->domain_id, rc);
diff --git a/xen/drivers/passthrough/pci.c b/xen/drivers/passthrough/pci.c
index 464bb0fee4..74b53e5430 100644
--- a/xen/drivers/passthrough/pci.c
+++ b/xen/drivers/passthrough/pci.c
@@ -1746,7 +1746,7 @@ void iommu_dev_iotlb_flush_timeout(struct domain *d, struct pci_dev *pdev)
 
     pdev->broken = true;
 
-    if ( !d->is_shutting_down && printk_ratelimit() )
+    if ( !domain_in_shutdown_state(d) && printk_ratelimit() )
         printk(XENLOG_ERR "dom%d: ATS device %pp flush failed\n",
                d->domain_id, &pdev->sbdf);
     if ( !is_hardware_domain(d) )
diff --git a/xen/include/xen/sched.h b/xen/include/xen/sched.h
index 212c7d765c..0e55e4df3b 100644
--- a/xen/include/xen/sched.h
+++ b/xen/include/xen/sched.h
@@ -222,7 +222,7 @@ struct vcpu
     bool             force_context_switch;
     /* Require shutdown to be deferred for some asynchronous operation? */
     bool             defer_shutdown;
-    /* VCPU is paused following shutdown request (d->is_shutting_down)? */
+    /* VCPU is paused following a domain shutdown request? */
     bool             paused_for_shutdown;
     /* VCPU need affinity restored */
     uint8_t          affinity_broken;
@@ -382,6 +382,12 @@ struct domain_console {
     char buf[256];
 };
 
+enum domain_shutdown_state {
+    DOMSHUTDOWN_none,
+    DOMSHUTDOWN_in_progress,
+    DOMSHUTDOWN_complete,
+};
+
 struct domain
 {
     domid_t          domain_id;
@@ -548,10 +554,9 @@ struct domain
     struct rangeset *iomem_caps;
     struct rangeset *irq_caps;
 
-    /* Guest has shut down (inc. reason code)? */
+    /* Guest shutdown state and associated reason code. */
     spinlock_t       shutdown_lock;
-    bool             is_shutting_down; /* in process of shutting down? */
-    bool             is_shut_down;     /* fully shut down? */
+    enum domain_shutdown_state shutdown_state;
 #define SHUTDOWN_CODE_INVALID ~0u
     unsigned int     shutdown_code;
 
@@ -670,6 +675,21 @@ struct domain
     unsigned int pending_scrub_index;
 } __aligned(PAGE_SIZE);
 
+static inline bool domain_shutting_down(const struct domain *d)
+{
+    return d->shutdown_state == DOMSHUTDOWN_in_progress;
+}
+
+static inline bool domain_shutdown_completed(const struct domain *d)
+{
+    return d->shutdown_state == DOMSHUTDOWN_complete;
+}
+
+static inline bool domain_in_shutdown_state(const struct domain *d)
+{
+    return d->shutdown_state != DOMSHUTDOWN_none;
+}
+
 static inline struct page_list_head *page_to_list(
     struct domain *d, const struct page_info *pg)
 {
@@ -824,7 +844,7 @@ static inline void put_pg_owner(struct domain *pg_owner)
 void domain_destroy(struct domain *d);
 int domain_kill(struct domain *d);
 int domain_shutdown(struct domain *d, u8 reason);
-void domain_resume(struct domain *d);
+int domain_resume(struct domain *d);
 
 int domain_soft_reset(struct domain *d, bool resuming);
 
-- 
2.43.0



From xen-devel-bounces@lists.xenproject.org Wed Apr 01 06:44:26 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 01 Apr 2026 06:44:26 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1269743.1558653 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1w7pJS-0002yT-4s; Wed, 01 Apr 2026 06:44:26 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1269743.1558653; Wed, 01 Apr 2026 06:44: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 1w7pJS-0002yM-1O; Wed, 01 Apr 2026 06:44:26 +0000
Received: by outflank-mailman (input) for mailman id 1269743;
 Wed, 01 Apr 2026 06:44:24 +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 1w7pJQ-0002xE-GR
 for xen-devel@lists.xenproject.org; Wed, 01 Apr 2026 06:44:24 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1w7pJP-00EawQ-Rn
 for xen-devel@lists.xenproject.org; Wed, 01 Apr 2026 08:44:23 +0200
Received: from [10.42.69.9] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <Michal.Orzel@amd.com>)
 id 69ccbec0-e002-0a2a0a5209dd-0a2a45099824-32
 for <xen-devel@lists.xenproject.org>; Wed, 01 Apr 2026 08:44:23 +0200
Received: from [40.93.194.19]
 (helo=SN4PR0501CU005.outbound.protection.outlook.com)
 by tlsNG-bad1c0.mxtls.expurgate.net with ESMTPS (eXpurgate 4.55.2)
 (envelope-from <Michal.Orzel@amd.com>)
 id 69ccbec5-e484-0a2a45090019-285dc21359e3-4
 for <xen-devel@lists.xenproject.org>; Wed, 01 Apr 2026 08:44:23 +0200
Received: from CH0PR04CA0008.namprd04.prod.outlook.com (2603:10b6:610:76::13)
 by DS4PR12MB9634.namprd12.prod.outlook.com (2603:10b6:8:280::13) with
 Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9769.15; Wed, 1 Apr
 2026 06:44:16 +0000
Received: from DM2PEPF00003FC7.namprd04.prod.outlook.com
 (2603:10b6:610:76:cafe::b1) by CH0PR04CA0008.outlook.office365.com
 (2603:10b6:610:76::13) with Microsoft SMTP Server (version=TLS1_3,
 cipher=TLS_AES_256_GCM_SHA384) id 15.20.9745.30 via Frontend Transport; Wed,
 1 Apr 2026 06:44:15 +0000
Received: from satlexmb07.amd.com (165.204.84.17) by
 DM2PEPF00003FC7.mail.protection.outlook.com (10.167.23.24) with Microsoft
 SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id
 15.20.9769.17 via Frontend Transport; Wed, 1 Apr 2026 06:44:15 +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.17; Wed, 1 Apr
 2026 01:44:14 -0500
Received: from [10.71.194.215] (10.180.168.240) by satlexmb07.amd.com
 (10.181.42.216) with Microsoft SMTP Server id 15.2.2562.17 via Frontend
 Transport; Wed, 1 Apr 2026 01:44:13 -0500
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@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=Q0YPOWUSnG5rvvhGd33hvMqUcMaMYsmUtrGJdsdFIHsjN8NWlzUrpd+18LP/nKlsKiosw0V3TY1XEHFcDO8d9s19jM/UXSjuIs0XB1XvRPCIMGwm0QFLIPJRBr/Xr1gVoGrWg/wY5jE0fa1tpXS2+ubS+X5yxJdQDYj3m2HVcw3ux4bzovoJ5GjXiGbuWwwrNf9VdGg6VzCNqyn+6P2hsQoo/1MJ/ZcjYJHttiABOPdGkAsZzz74K2P4QZ97CeHj3BreIT5/qWxFM8mN+AUEmXjdVU+c2wDSdCwBZhteoB9aPOF0cdRpfLKVVYvLeQmLnl7ZorCioz20QdR1z0CVNQ==
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com;
 s=arcselector10001;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1;
 bh=4MuEpbxuwR2u1gjamX8XTr2+INk4ugZ4MvjwJIDYpG0=;
 b=jfLl1LTtmL1r/z976SH6yloobFJr5ed6XO9K4WECb/DrXrP5Pd/OX0hqCeEJoZZ7uZwq+ybkuim/RrBmJtD/SR+Gpa/3DcWo+5RMadP4bRNlh5fkuR++68jW92D8iWW+Oajwozklw6GbuV87mH61XXkdjE2t98B/LNnGX4ngKVhRsPv//TAArRXr9ILwUcIqwTQRCmIwQ2X9aTxqZiqHlEzaWJWbdvoVdl5oKIKCp5XdvyMcGN7FkE+gknDevX8CF4HlrKosQc4DOcNgOrjTkI7ZB5CIz4d9zyEWaoQlV97tNo/xJB/QFBwae6GtIzqc/KOE7PrdKeFgqoWmF1jCag==
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=4MuEpbxuwR2u1gjamX8XTr2+INk4ugZ4MvjwJIDYpG0=;
 b=QZVg5Zzlb+PDz6l5H8qmVEbo0xztBaxh4XdvJU6jGsHYANR/YUJFzlPqaDK+7zRW7dGWrJ9m/TsOuWwO8y39/OCvrqok6CgBtt05Pjs5NSusVeiZD1M94rlLUzNm2AEXZOlZTYOhm7EQ1jfH5Z0hVdKTfKpyyj8tkpy5OfHQh9c=
X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 165.204.84.17)
 smtp.mailfrom=amd.com; dkim=none (message not signed)
 header.d=none;dmarc=pass action=none header.from=amd.com;
Received-SPF: Pass (protection.outlook.com: domain of amd.com designates
 165.204.84.17 as permitted sender) receiver=protection.outlook.com;
 client-ip=165.204.84.17; helo=satlexmb07.amd.com; pr=C
Message-ID: <c9ef48ef-dc41-434f-be00-664712d070c0@amd.com>
Date: Wed, 1 Apr 2026 08:44:13 +0200
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH V2] xen/arm: Increase DOM0_FDT_EXTRA_SIZE to support max
 reserved memory banks
From: "Orzel, Michal" <michal.orzel@amd.com>
To: Oleksandr Tyshchenko <Oleksandr_Tyshchenko@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>, Volodymyr
 Babchuk <Volodymyr_Babchuk@epam.com>
References: <20260331154309.2921483-1-oleksandr_tyshchenko@epam.com>
 <7d4791ee-05cb-490a-a209-a84a6531f0ca@amd.com>
Content-Language: en-US
In-Reply-To: <7d4791ee-05cb-490a-a209-a84a6531f0ca@amd.com>
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: 7bit
X-EOPAttributedMessage: 0
X-MS-PublicTrafficType: Email
X-MS-TrafficTypeDiagnostic: DM2PEPF00003FC7:EE_|DS4PR12MB9634:EE_
X-MS-Office365-Filtering-Correlation-Id: a1a802fa-ebaf-4aab-ed74-08de8fba177f
X-MS-Exchange-SenderADCheck: 1
X-MS-Exchange-AntiSpam-Relay: 0
X-Microsoft-Antispam:
	BCL:0;ARA:13230040|82310400026|1800799024|36860700016|376014|56012099003|18002099003|22082099003;
X-Microsoft-Antispam-Message-Info:
	urSWsfOlUcCWRjX+pQxwy4hShek14Y4alX8FVhEhlwfit40oM1lZGVsemCTeYs7fjgswfxORbRKaVCKZki2KfHyufCWr/35f9CktYY5pArEkgD8Vbvs0PSn76BfSgruxK3r/hCBJ2G69tDhhIywbPChrdimczN4E7SaeNGoR5IDbls8ekjCfcBQ+HoRmKgmF5xgcLCEraj2sV0XfEIX1WC/LsWUP2P0nLztEl/L8VrN1bVfiLX4YNIgg/bnuM4bPYYLdZXIgh79szZ0YhNBLfMDSMd9pEKpwZHpdSxY/g92+dd3GfneWvBruarC2yjRU+f4kBYsRu5RGTeBYXQs/RTnP/SAoYHvDxpMsI1usAtdDRza8jRibJPFa3wjdWbAQMt2i9hGdbUnM/zwaek0CdMVCEs+C2sGfv22jAJ06j7GuzgBYP3LEjH0cIeLrPqW0sXjwsIt9EXf3mDkmFZFuboaU4mnbW5ZKRR99PGfuHqVA0vzlL2PeDFSZ+ArppBmz5J4vEOZVRCQunb0LsMxOTjngWca/xDgZf4bhWr/oeqfRH1H3C5ZadVvaKb9Jr5ra/9Nk73xtOyLNwfN0vobSinp3Hdf/I2uDCH6gf7usyMk7ugtDZsvpRB9uQyesrmVK1rqdV3VJJtngMwVBEWl7ZzKWCdMD1wqXcfC2gurSzGB2w+JnHyP14Nlq88dMb2OSl2BGGSCTHBzbj53Xb1j2D+0O0LXvk6Y2bJYVij5c//JgsXCDHwDuKFStvYZZ/arzhSyQYpn6bVpHYZCChtWM7A==
X-Forefront-Antispam-Report:
	CIP:165.204.84.17;CTRY:US;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:satlexmb07.amd.com;PTR:InfoDomainNonexistent;CAT:NONE;SFS:(13230040)(82310400026)(1800799024)(36860700016)(376014)(56012099003)(18002099003)(22082099003);DIR:OUT;SFP:1101;
X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1
X-MS-Exchange-AntiSpam-MessageData-0:
	5ZiNp6qcXxS7/WLJqwbEy6Z60boiUJvTMXPh7WybokqWrPmWNtASG/08ocJk7mY1hNgWflOZ2oYylKO4lG55vCDeTQlxPp3D/a5trMfuQZHhK0WkE/ELYNbDvMLab6T+G8wNehwBswL3phPHmqRXYzMi70/oGQaIZTizugkrgpddIOeAiiF+TIjqlMKpFuGJafN9LL57J88jsM7M5pVyBpTivVyIGOkCakIGQ6SWul2HugHDmLBA7I4omZpb0mclshpGrBHjFKgMYE2AwqBECPXIJpVOeKHQrHyY7iobV84h7YCt6C5ppngJ5G3dai6jBVYQR1DVnCQhmR7hq7gFXgIfElInlaO33w9TPjiOG3X+xV86TY+1vYH3aziPjybb7nxvolvsNzQtaO3jYXl0822fy0C86YK3pBRAPpEK2LJdheKzKaTCITYL8LXOgRk6
X-OriginatorOrg: amd.com
X-MS-Exchange-CrossTenant-OriginalArrivalTime: 01 Apr 2026 06:44:15.3673
 (UTC)
X-MS-Exchange-CrossTenant-Network-Message-Id: a1a802fa-ebaf-4aab-ed74-08de8fba177f
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:
	DM2PEPF00003FC7.namprd04.prod.outlook.com
X-MS-Exchange-CrossTenant-AuthAs: Anonymous
X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem
X-MS-Exchange-Transport-CrossTenantHeadersStamped: DS4PR12MB9634
X-purgate-ID: tlsNG-bad1c0/1775025863-69D44A73-921CC7FD/0/0
X-purgate-type: clean
X-purgate-size: 3593



On 01/04/2026 08:41, Orzel, Michal wrote:
> 
> 
> On 31/03/2026 17:43, Oleksandr Tyshchenko wrote:
>> From: Oleksandr Tyshchenko <Oleksandr_Tyshchenko@epam.com>
>>
>> Xen fails to construct the hardware domain's device tree with
>> FDT_ERR_NOSPACE (-3) when the host memory map is highly fragmented
>> (e.g., numerous reserved memory regions) and the host DTB represents
>> RAM compactly (e.g., a single reg pair or just a few).
>>
>> This occurs because DOM0_FDT_EXTRA_SIZE underestimates the space
>> required for an extra /memory node. While the host DTB might
>> represent RAM compactly, make_memory_node() aggregates all
>> reserved regions into a single reg property. With NR_MEM_BANKS (256)
>> and 64-bit address/size cells, this property can grow up to
>> 4KB (256 * 16), easily exceeding the space originally occupied by
>> the host DTB's nodes plus the current padding, thereby overflowing
>> the allocated buffer.
>>
>> Additionally, the SHM regions require space for discrete sub-nodes
>> under /reserved-memory node, as well as an appendage to the
>> main /memory node. Each of the up to NR_SHMEM_BANKS (32) regions
>> triggers the creation of a sub-node with properties (compatible,
>> reg, xen,id, and xen,offset). These runtime-generated sub-nodes
>> require approximately 142 bytes each, while the appendage consumes
>> an additional 16 bytes per region.
>>
>> Fix this by increasing DOM0_FDT_EXTRA_SIZE to account for fragmented
>> reg properties (NR_MEM_BANKS * 16), the discrete SHM sub-nodes, and
>> the SHM appendage to the /memory node (NR_SHMEM_BANKS * (160 + 16)).
>> The SHM overhead is conditionally evaluated to avoid over-allocating
>> memory when CONFIG_STATIC_SHM=n.
>>
>> Signed-off-by: Oleksandr Tyshchenko <oleksandr_tyshchenko@epam.com>
>> ---
>>   V2:
>>    - update commit description
>>    - update in-code comment
>>    - update macro
>> ---
>> ---
>>  xen/arch/arm/domain_build.c | 18 ++++++++++++++----
>>  1 file changed, 14 insertions(+), 4 deletions(-)
>>
>> diff --git a/xen/arch/arm/domain_build.c b/xen/arch/arm/domain_build.c
>> index 3cd251beed..07f331eac8 100644
>> --- a/xen/arch/arm/domain_build.c
>> +++ b/xen/arch/arm/domain_build.c
>> @@ -98,11 +98,21 @@ int __init parse_arch_dom0_param(const char *s, const char *e)
>>  #endif
>>  
>>  /*
>> - * Amount of extra space required to dom0's device tree.  No new nodes
>> - * are added (yet) but one terminating reserve map entry (16 bytes) is
>> - * added.
>> + * Amount of extra space required to dom0'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).
>> + *  - The reserve map terminator (16 bytes).
>> + *  - Space for a generated /memory node covering all possible reserved
>> + *    memory regions (NR_MEM_BANKS * 16).
>> + *  - Space for a generated /reserved-memory node with discrete SHM sub-nodes,
>> + *    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))
>> +#define DOM0_FDT_EXTRA_SIZE (128 + sizeof(struct fdt_reserve_entry) + \
>> +                             (NR_MEM_BANKS * 16) +                    \
> NIT: alignment. I'll fix on commit
Never mind, the alignment is in fact correct.

~Michal

> 
> Reviewed-by: Michal Orzel <michal.orzel@amd.com>
> 
> ~Michal
> 
> 



From xen-devel-bounces@lists.xenproject.org Wed Apr 01 06:46:16 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 01 Apr 2026 06:46:16 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1269755.1558661 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1w7pLD-0003Ym-EH; Wed, 01 Apr 2026 06:46:15 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1269755.1558661; Wed, 01 Apr 2026 06:46: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 1w7pLD-0003Yf-Bh; Wed, 01 Apr 2026 06:46:15 +0000
Received: by outflank-mailman (input) for mailman id 1269755;
 Wed, 01 Apr 2026 06:46:14 +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 1w7pLC-0003YZ-8o
 for xen-devel@lists.xenproject.org; Wed, 01 Apr 2026 06:46:14 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1w7pLB-00AAHF-Kr
 for xen-devel@lists.xenproject.org; Wed, 01 Apr 2026 08:46:13 +0200
Received: from [10.42.69.1] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <Michal.Orzel@amd.com>)
 id 69ccbf2a-5cb7-0a2a0a5109dd-0a2a4501d592-16
 for <xen-devel@lists.xenproject.org>; Wed, 01 Apr 2026 08:46:13 +0200
Received: from [40.93.196.54]
 (helo=SA9PR02CU001.outbound.protection.outlook.com)
 by tlsNG-d62444.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.0)
 (envelope-from <Michal.Orzel@amd.com>)
 id 69ccbf33-6fc9-0a2a45010019-285dc4364333-4
 for <xen-devel@lists.xenproject.org>; Wed, 01 Apr 2026 08:46:13 +0200
Received: from CH0PR04CA0026.namprd04.prod.outlook.com (2603:10b6:610:76::31)
 by BY5PR12MB4177.namprd12.prod.outlook.com (2603:10b6:a03:201::14)
 with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9769.16; Wed, 1 Apr
 2026 06:46:07 +0000
Received: from DM2PEPF00003FC7.namprd04.prod.outlook.com
 (2603:10b6:610:76:cafe::c4) by CH0PR04CA0026.outlook.office365.com
 (2603:10b6:610:76::31) with Microsoft SMTP Server (version=TLS1_3,
 cipher=TLS_AES_256_GCM_SHA384) id 15.20.9745.30 via Frontend Transport; Wed,
 1 Apr 2026 06:46:06 +0000
Received: from satlexmb07.amd.com (165.204.84.17) by
 DM2PEPF00003FC7.mail.protection.outlook.com (10.167.23.24) with Microsoft
 SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id
 15.20.9769.17 via Frontend Transport; Wed, 1 Apr 2026 06:46:06 +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.17; Wed, 1 Apr
 2026 01:46:04 -0500
Received: from [10.71.194.215] (10.180.168.240) by satlexmb07.amd.com
 (10.181.42.216) with Microsoft SMTP Server id 15.2.2562.17 via Frontend
 Transport; Wed, 1 Apr 2026 01:46:03 -0500
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@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=AXR4cmwKAEzyzC6mUk1CKdDOB1ufGZoTaxpI+2Becepydu+JkK9qrsU+45CB/77EwdFkXsm/UejYGrdCOBKdw30D4tlSPBRdujS5u8z5IsBC5x5LOqj7vogebgyHF4DL3G9Sz5JC5QoOgpHBPRhHhqq/W2ySbltFn2dThD1AAC/I0b2w9D4erXJBkvvfxhRfTLlt/84XAeZiyCl44ZxjdSarvaou3O5lg8Xaa4Cu8cu5yNFkI6axoo1iaQ+wUTza8vVwALchP0d75sqdp1yoN5wQSNbwcD2S4+3ISiLCGDE1ykqs8sSCYVq7l/KWf7gf0mcLEHtyjWIFozE+aWjHsg==
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com;
 s=arcselector10001;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1;
 bh=rw4tKnQoOVbwXnrv8HFEfZNhZKyh93a/veiDamHtP2Q=;
 b=UBeD/C4eofar3wGB4bh+G/vMnouLugDbFKV9amNyhdP7Ac9XPQaLaIcmHNrWzOfdCM9jO4NliMsqQ3ssds5FA1QVdwWYT7CCMZkipEbkcBHXEIAze2aCH/41lZROD7Q8VR3UM/oGWl+cbyuAJXb33HLrTdBYHZuRcrn0Bg/vVIFM5OgKZiu47w90BztuteYdmFjhI/2mUNP+zFF6QDDkqNoSJPqwasSmYXH50HzMqivS5XX04hhMVZxu8Y5CR2h+UJa+TRcwJ9kNY/2uNCI3NA2XmyT9GXUkCAASj4aPc47weNDuAYA5xyaZV+k/6KLDYcI06nrLbVlWai1Kv4dZXA==
ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass (sender ip is
 165.204.84.17) smtp.rcpttodomain=invisiblethingslab.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=rw4tKnQoOVbwXnrv8HFEfZNhZKyh93a/veiDamHtP2Q=;
 b=m4Vu/m/SK3GihQoFK7dusol4WZIN4PsS3H5r5UDxkHkKCLMTPQvyxAMT2y9F17Lx4L7yfr+T24P038XFdC6LcH4reUOui2MsZwS7GVj+8Afft9FW/abPdXw8iyzdowjcJiNMl0bB8vSrlMgPofIXcRhghU4C4/40g9P5222eh78=
X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 165.204.84.17)
 smtp.mailfrom=amd.com; dkim=none (message not signed)
 header.d=none;dmarc=pass action=none header.from=amd.com;
Received-SPF: Pass (protection.outlook.com: domain of amd.com designates
 165.204.84.17 as permitted sender) receiver=protection.outlook.com;
 client-ip=165.204.84.17; helo=satlexmb07.amd.com; pr=C
Message-ID: <bf843de8-dbfb-436c-ac33-ea801ac61b53@amd.com>
Date: Wed, 1 Apr 2026 08:46:02 +0200
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH test-artifacts v3 02/13] Switch Linux builds to use Alpine
 3.22 container
To: =?UTF-8?Q?Marek_Marczykowski-G=C3=B3recki?=
	<marmarek@invisiblethingslab.com>, <xen-devel@lists.xenproject.org>
CC: Andrew Cooper <andrew.cooper3@citrix.com>, Stefano Stabellini
	<sstabellini@kernel.org>, =?UTF-8?Q?Roger_Pau_Monn=C3=A9?=
	<roger.pau@citrix.com>
References: <cover.bd2e5bd58e4b316c9c1042b1ca8db51b81fb7ea7.1774999132.git-series.marmarek@invisiblethingslab.com>
 <652a2f219b370af5364d8ef29264acc33a89f676.1774999132.git-series.marmarek@invisiblethingslab.com>
From: "Orzel, Michal" <michal.orzel@amd.com>
Content-Language: en-US
In-Reply-To: <652a2f219b370af5364d8ef29264acc33a89f676.1774999132.git-series.marmarek@invisiblethingslab.com>
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: 8bit
X-EOPAttributedMessage: 0
X-MS-PublicTrafficType: Email
X-MS-TrafficTypeDiagnostic: DM2PEPF00003FC7:EE_|BY5PR12MB4177:EE_
X-MS-Office365-Filtering-Correlation-Id: a60293a3-52a3-4a06-6c33-08de8fba59c0
X-MS-Exchange-SenderADCheck: 1
X-MS-Exchange-AntiSpam-Relay: 0
X-Microsoft-Antispam:
	BCL:0;ARA:13230040|1800799024|82310400026|36860700016|376014|18002099003|22082099003|56012099003;
X-Microsoft-Antispam-Message-Info:
	4XfCFt28bekcFj2zA0N5AriK3+lHT6ktB4sA7GLWuk9pVg1IOvbPL9XTolKo7jU4lkhLKU/gxX2ZAOlXFHqY8D1WGsPyHO30awgJ0PN+gLvut0rh3tJWg4dNrCfDZlhbDJMPnfz+sRF+Sr1OdNP1775d6bImcff//n90JiIPgbY3h73HfNp3vpGH5Q7Gid1sVTTrrK4Zoim+pkSK/aCzczzku7O54929PaN40mAOz5iFKGqtX5sI9ml9k9FTmonNIhd+NdASrcQhep4nWX1+uq6hyKey86oR7rcnnbJMZfaOdbOuKLFeS4L0b0otuAgc5c2R99Sl6VDXZzg3ks5nKOwWzHfXeA//smB0IYoCippBbgS4hjWSpW7tyq2fUNrya6LKYyEuQG5Wqt1hSJRyUU+YyUcom/MrhItzRD3CcRA+7wNpYAr7+uIe55xs1FX5Dg/NLZ03wWUvK+PxKNj1zASIroOpi35KflGcZ7oDMxA5PZGH9eHDS7HymC5kLSJ5ZsHHtKJiAnHU9/ZToCD6ZbMIC71+IiSCwkKp5ew6SuCmOnJpbxIWjSIzD0eJfrpSyaJa3CdW7oS+PWiL4/7IoomhcNYyCqMgXDJ+Mk4disPQtR2MWgiysojyKUitHWojVo+dEeEr9ASl5CGE8ZAjTfGHGN4bA/az6RAjomz/BFTE48N4l2jWA8STRW+cadzNGuDYaTK8maFSb7bt4Mcq/q7CX7sXQpuRfu+/ghgMZLAIpeA/pB5Fdtmmyvkz5/Y7qei43cS9smfnIpfFji1xkA==
X-Forefront-Antispam-Report:
	CIP:165.204.84.17;CTRY:US;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:satlexmb07.amd.com;PTR:InfoDomainNonexistent;CAT:NONE;SFS:(13230040)(1800799024)(82310400026)(36860700016)(376014)(18002099003)(22082099003)(56012099003);DIR:OUT;SFP:1101;
X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1
X-MS-Exchange-AntiSpam-MessageData-0:
	t51idwP8G0Ar0Or4kkIgq5BTPYnZ43F5kp4GMS6kPSAUhlgIpX162aNnOATKCERpaReix7ZqdHX93X16fjwVFw65srMui28al8xYQ1+rYXdaNrCuDZp+Qw+IAS3j3UVBfV8mYXXMRmOAN3L5czRRLNqA/aUVZnTTeelNVZAfcoA75sbCsGMdsNTaWwRzP95JaWH3VkcMXMTAD9paJAFNLThXV3LdmQapmtIr46Ag709zIIQI1nI5hawVyAfF7Iwi3bTV3Th1mI7AOJF6T/b7WAcGRCT0SjF3cr/X0UMR5rXy6WSRgOBkn4TYeOvIbnrQsGlomfJOyJEkm/lUTmI4mTSp4Smuwx1K1oCKC5hWGfssnDLwO0SPPtucbKnWSJZdW1H8W13VrJ7kxhTXLhl4By3vlpcFoUmFU7SZBwy4Al7u2Ci02uPkrLgUcIvKzxCj
X-OriginatorOrg: amd.com
X-MS-Exchange-CrossTenant-OriginalArrivalTime: 01 Apr 2026 06:46:06.5200
 (UTC)
X-MS-Exchange-CrossTenant-Network-Message-Id: a60293a3-52a3-4a06-6c33-08de8fba59c0
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:
	DM2PEPF00003FC7.namprd04.prod.outlook.com
X-MS-Exchange-CrossTenant-AuthAs: Anonymous
X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem
X-MS-Exchange-Transport-CrossTenantHeadersStamped: BY5PR12MB4177
X-purgate-ID: tlsNG-d62444/1775025973-174FE185-BB7B4374/0/0
X-purgate-type: clean
X-purgate-size: 836

Why not 3.23 if it's already there?

~Michal

On 01/04/2026 01:21, Marek Marczykowski-Górecki wrote:
> Slowly phase out 3.18 one.
> 
> Signed-off-by: Marek Marczykowski-Górecki <marmarek@invisiblethingslab.com>
> ---
>  .gitlab-ci.yml | 4 ++--
>  1 file changed, 2 insertions(+), 2 deletions(-)
> 
> diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml
> index 17d25ce0f921..36622c723ce9 100644
> --- a/.gitlab-ci.yml
> +++ b/.gitlab-ci.yml
> @@ -21,14 +21,14 @@ stages:
>    tags:
>      - arm64
>    variables:
> -    CONTAINER: alpine:3.18-arm64-build
> +    CONTAINER: alpine:3.22-arm64-build
>  
>  .x86_64-artifacts:
>    extends: .artifacts
>    tags:
>      - x86_64
>    variables:
> -    CONTAINER: alpine:3.18-x86_64-build
> +    CONTAINER: alpine:3.22-x86_64-build
>  
>  #
>  # ARM64 artifacts



From xen-devel-bounces@lists.xenproject.org Wed Apr 01 06:58:17 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 01 Apr 2026 06:58:17 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1269771.1558672 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1w7pWl-0006CA-GG; Wed, 01 Apr 2026 06:58:11 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1269771.1558672; Wed, 01 Apr 2026 06:58: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 1w7pWl-0006C2-Bp; Wed, 01 Apr 2026 06:58:11 +0000
Received: by outflank-mailman (input) for mailman id 1269771;
 Wed, 01 Apr 2026 06:58:09 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <marmarek@invisiblethingslab.com>) id 1w7pWj-0006Bw-In
 for xen-devel@lists.xenproject.org; Wed, 01 Apr 2026 06:58:09 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1w7pWi-00EdIk-Un
 for xen-devel@lists.xenproject.org; Wed, 01 Apr 2026 08:58:08 +0200
Received: from [10.42.69.1] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <marmarek@invisiblethingslab.com>)
 id 69ccc1f4-bab6-0a2a0a5309dd-0a2a450184b8-40
 for <xen-devel@lists.xenproject.org>; Wed, 01 Apr 2026 08:58:08 +0200
Received: from [103.168.172.154] (helo=fhigh-a3-smtp.messagingengine.com)
 by tlsNG-d62444.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.0)
 (envelope-from <marmarek@invisiblethingslab.com>)
 id 69ccc1ff-6fc9-0a2a45010019-67a8ac9a97bd-3
 for <xen-devel@lists.xenproject.org>; Wed, 01 Apr 2026 08:58:08 +0200
Received: from phl-compute-02.internal (phl-compute-02.internal [10.202.2.42])
 by mailfhigh.phl.internal (Postfix) with ESMTP id 4F6E51400259;
 Wed,  1 Apr 2026 02:58:07 -0400 (EDT)
Received: from phl-frontend-04 ([10.202.2.163])
 by phl-compute-02.internal (MEProxy); Wed, 01 Apr 2026 02:58:07 -0400
Received: by mail.messagingengine.com (Postfix) with ESMTPA; Wed,
 1 Apr 2026 02:58:05 -0400 (EDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
Authentication-Results: eu.smtp.expurgate.cloud; dkim=pass header.s=fm1 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=fm1; t=1775026687;
	 x=1775113087; bh=jF4ruGDylsCYBVSM6WacgUke1wH5r81mFGF0xur5YLQ=; b=
	K/d+HyZ1xIvdJOvrlb1xN5wvsA+e5LoB+qVSxHToAX4K/heU+5RhLxFpJenyaoRO
	5A+SuoaPF+uGW8uaWuY2Kuotdrt9tE55Bw+SxSeYb/AaMZnTwWDVrX9FJaDP3xUp
	E1YYD9GRKt+PdeCjUbgOXWIKdDQTeSaCflrBPl8HsaeYTcy0xiBrEbY4liveW12m
	wA674fz+tGTlphYMVUv3bVlGjF/RrbuQkU+48vxDjo0LdUtsGFay8bKuocAKcD5Z
	UkFpUx/U259Muc5lORAYuvXAppbXfls8dVL9r/eZMgvQ1DzSP08Xmtpxls9BqX4n
	SGe1+zt38yed8sEckWZhOg==
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=
	1775026687; x=1775113087; bh=jF4ruGDylsCYBVSM6WacgUke1wH5r81mFGF
	0xur5YLQ=; b=MQdw0Bit3uPHo3gx+Vjtt1H7oe7167iKE8EtJzKKcHj1c1qfLl+
	z5Ml5adu9UN7+t6rsgpwOIySF2eyJrfXvn3FnoBTU2AoUZprJQsCPsJsSGRq6JHH
	uKjP5UFmFZkALzEbaix1amqK8/ueiqPkugBDbcLnWBYxgi2gIow87qz8/2I+5bLo
	AKzQBy2nEWCbTG+d/GJOv21i70z4TFsV1zYFFhWlsVFta8Fgsp7Mfvug/Out9nhf
	zM3CKIUgWdYXtqpSG6ANbfnJu8VpHR6/hL+KWOZ0mJC05+6Vwvp+xevMgZGu6X5F
	P7tEibGl6Ci7NKWuHCNfZ60RP6Gt6+kNrDw==
X-ME-Sender: <xms:_8HMab99CjNgDJoc1A76qbz8dbupby3-Qg4sq08XXDnTidzBjc3wpA>
    <xme:_8HMaekKstEcYS4OzYiX5H89agt-Eco6iaKdLcIhoJBfbaU1iDSyJwSn3_B4hfS75
    MOdn4NDkU0Hm6jeUJbEDL1gULJy1G3ErlWSsueC6WiwCtALqw>
X-ME-Received: <xmr:_8HMaRWOev5CQPxmmQZ_YOzVuip6-Fr1qw-CQBCy3rD9lAGoP3qpssa6IqHw>
X-ME-Proxy-Cause: gggruggvucftvghtrhhoucdtuddrgeefhedrtddtgddvgeehucetufdoteggodetrfdotf
    fvucfrrhhofhhilhgvmecuhfgrshhtofgrihhlpdfurfetoffkrfgpnffqhgenuceurghi
    lhhouhhtmecufedttdenucesvcftvggtihhpihgvnhhtshculddquddttddmnecujfgurh
    epfffhvfevuffkfhggtggujgesghdtreertddtjeenucfhrhhomhepofgrrhgvkhcuofgr
    rhgtiiihkhhofihskhhiqdfikphrvggtkhhiuceomhgrrhhmrghrvghksehinhhvihhsih
    gslhgvthhhihhnghhslhgrsgdrtghomheqnecuggftrfgrthhtvghrnhepgfduleetfeev
    hfefheeiteeliefhjefhleduveetteekveettddvgeeuteefjedunecuvehluhhsthgvrh
    fuihiivgeptdenucfrrghrrghmpehmrghilhhfrhhomhepmhgrrhhmrghrvghksehinhhv
    ihhsihgslhgvthhhihhnghhslhgrsgdrtghomhdpnhgspghrtghpthhtohephedpmhhoug
    gvpehsmhhtphhouhhtpdhrtghpthhtohepmhhitghhrghlrdhorhiivghlsegrmhgurdgt
    ohhmpdhrtghpthhtohepgigvnhdquggvvhgvlheslhhishhtshdrgigvnhhprhhojhgvtg
    htrdhorhhgpdhrtghpthhtoheprghnughrvgifrdgtohhophgvrhefsegtihhtrhhigidr
    tghomhdprhgtphhtthhopehsshhtrggsvghllhhinhhisehkvghrnhgvlhdrohhrghdprh
    gtphhtthhopehrohhgvghrrdhprghusegtihhtrhhigidrtghomh
X-ME-Proxy: <xmx:_8HMaTGH0iwqmU4FgvD1QUvzoWtvH2fICX3dHH_aDZzB3u0DOylf-w>
    <xmx:_8HMaddSW4_JktwXhXXM-oZ40geweEfzj7yYgOauJ-JI4Dx34zAfGQ>
    <xmx:_8HMaULJf-odL08z-AsQLUAyWQSXGQU6dTBqx1pWgCckIOyprIcQGQ>
    <xmx:_8HMaSFFS8K_EXvX4hJIbcn9D1DBx0vVACi1AO7K1J33PMDhzvZFZA>
    <xmx:_8HMadOxhGck7v2q2LnnEEggqC8kNW7J_10t33Ceo0CV-_YCHBWc-wKR>
Feedback-ID: i1568416f:Fastmail
Date: Wed, 1 Apr 2026 08:58:04 +0200
From: Marek =?utf-8?Q?Marczykowski-G=C3=B3recki?= <marmarek@invisiblethingslab.com>
To: "Orzel, Michal" <michal.orzel@amd.com>
Cc: xen-devel@lists.xenproject.org,
	Andrew Cooper <andrew.cooper3@citrix.com>,
	Stefano Stabellini <sstabellini@kernel.org>,
	Roger Pau =?utf-8?B?TW9ubsOp?= <roger.pau@citrix.com>
Subject: Re: [PATCH test-artifacts v3 02/13] Switch Linux builds to use
 Alpine 3.22 container
Message-ID: <aczB_KRjioY3KCtA@mail-itl>
References: <cover.bd2e5bd58e4b316c9c1042b1ca8db51b81fb7ea7.1774999132.git-series.marmarek@invisiblethingslab.com>
 <652a2f219b370af5364d8ef29264acc33a89f676.1774999132.git-series.marmarek@invisiblethingslab.com>
 <bf843de8-dbfb-436c-ac33-ea801ac61b53@amd.com>
MIME-Version: 1.0
Content-Type: multipart/signed; micalg=pgp-sha256;
	protocol="application/pgp-signature"; boundary="xz4EeMhth/eSiNsR"
Content-Disposition: inline
In-Reply-To: <bf843de8-dbfb-436c-ac33-ea801ac61b53@amd.com>
X-purgate-ID: tlsNG-d62444/1775026688-BC766185-D48C7004/0/0
X-purgate-type: clean
X-purgate-size: 2474


--xz4EeMhth/eSiNsR
Content-Type: text/plain; protected-headers=v1; charset=utf-8
Content-Disposition: inline
Content-Transfer-Encoding: quoted-printable
Date: Wed, 1 Apr 2026 08:58:04 +0200
From: Marek =?utf-8?Q?Marczykowski-G=C3=B3recki?= <marmarek@invisiblethingslab.com>
To: "Orzel, Michal" <michal.orzel@amd.com>
Cc: xen-devel@lists.xenproject.org,
	Andrew Cooper <andrew.cooper3@citrix.com>,
	Stefano Stabellini <sstabellini@kernel.org>,
	Roger Pau =?utf-8?B?TW9ubsOp?= <roger.pau@citrix.com>
Subject: Re: [PATCH test-artifacts v3 02/13] Switch Linux builds to use
 Alpine 3.22 container

On Wed, Apr 01, 2026 at 08:46:02AM +0200, Orzel, Michal wrote:
> Why not 3.23 if it's already there?

Because it wasn't yet when I prepared this patch series :)

I can update again and see if any other changes are needed with 3.23.
Other patches are independent of this change.

>=20
> ~Michal
>=20
> On 01/04/2026 01:21, Marek Marczykowski-G=C3=B3recki wrote:
> > Slowly phase out 3.18 one.
> >=20
> > Signed-off-by: Marek Marczykowski-G=C3=B3recki <marmarek@invisiblething=
slab.com>
> > ---
> >  .gitlab-ci.yml | 4 ++--
> >  1 file changed, 2 insertions(+), 2 deletions(-)
> >=20
> > diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml
> > index 17d25ce0f921..36622c723ce9 100644
> > --- a/.gitlab-ci.yml
> > +++ b/.gitlab-ci.yml
> > @@ -21,14 +21,14 @@ stages:
> >    tags:
> >      - arm64
> >    variables:
> > -    CONTAINER: alpine:3.18-arm64-build
> > +    CONTAINER: alpine:3.22-arm64-build
> > =20
> >  .x86_64-artifacts:
> >    extends: .artifacts
> >    tags:
> >      - x86_64
> >    variables:
> > -    CONTAINER: alpine:3.18-x86_64-build
> > +    CONTAINER: alpine:3.22-x86_64-build
> > =20
> >  #
> >  # ARM64 artifacts
>=20

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

--xz4EeMhth/eSiNsR
Content-Type: application/pgp-signature; name=signature.asc

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

iQEzBAEBCAAdFiEEhrpukzGPukRmQqkK24/THMrX1ywFAmnMwfwACgkQ24/THMrX
1yx4Mgf9HlomCIgdYQGzIcdVZXpF299QHlto6g1BSy6RnqxZqtqjI4ry+0Y1QLTJ
u414KT2mvB84qGWi2FpKeYvrEm2hGCgo1i3axkV3mc8/S8wfuZXvwF4ukwfbB8Mp
ozqPW0br0pZlwjZstfZeSCmn8ZYgR3tKmtgUrXlRK2Fsp1amiAOdLrAwg1ZnQnw1
LyBxl2Y7ZcTqA6JxeVjDuE9YSLXfxYNJV/Qm2trxe/mXWEwcgdhX0RLO8fP/s/t9
v1041rd5Vu+LT/dhy6KbRlPyTVaBXqass8ZCBaLvwHmaAn0WL3wDvZLvPDQ5eKTp
Y6FCrLysovLd6Eg6ioV2HkQLSfBdgg==
=oXm3
-----END PGP SIGNATURE-----

--xz4EeMhth/eSiNsR--


From xen-devel-bounces@lists.xenproject.org Wed Apr 01 07:13:39 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 01 Apr 2026 07:13:39 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1269785.1558680 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1w7plU-0000xr-Qm; Wed, 01 Apr 2026 07:13:24 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1269785.1558680; Wed, 01 Apr 2026 07:13: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 1w7plU-0000xk-Nq; Wed, 01 Apr 2026 07:13:24 +0000
Received: by outflank-mailman (input) for mailman id 1269785;
 Wed, 01 Apr 2026 07:13:23 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <xakep.amatop@gmail.com>) id 1w7plT-0000xe-HR
 for xen-devel@lists.xenproject.org; Wed, 01 Apr 2026 07:13:23 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1w7plS-004IY9-T3
 for xen-devel@lists.xenproject.org; Wed, 01 Apr 2026 09:13:22 +0200
Received: from [10.42.69.6] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <xakep.amatop@gmail.com>)
 id 69ccc587-e002-0a2a0a5209dd-0a2a4506c8f4-38
 for <xen-devel@lists.xenproject.org>; Wed, 01 Apr 2026 09:13:22 +0200
Received: from [209.85.208.179] (helo=mail-lj1-f179.google.com)
 by tlsNG-16d1c6.mxtls.expurgate.net with ESMTPS (eXpurgate 4.55.2)
 (envelope-from <xakep.amatop@gmail.com>)
 id 69ccc592-3034-0a2a45060019-d155d0b3e831-3
 for <xen-devel@lists.xenproject.org>; Wed, 01 Apr 2026 09:13:22 +0200
Received: by mail-lj1-f179.google.com with SMTP id
 38308e7fff4ca-38cbe79dddcso9054161fa.2
 for <xen-devel@lists.xenproject.org>; Wed, 01 Apr 2026 00:13:22 -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=20251104 header.d=gmail.com header.i="@gmail.com" header.h="Content-Transfer-Encoding:Cc:To:Subject:Message-ID:Date:From:In-Reply-To:References:MIME-Version"
ARC-Seal: i=1; a=rsa-sha256; t=1775027602; cv=none;
        d=google.com; s=arc-20240605;
        b=gh3VuERp4uSi6ympnEn2DT+d0DYvNpstZkWNM03ubqCfPscGmO1kQ9XXUfWvQO1OSG
         XJlzUHPnI81lk66kw41AMsSwppvr3UYWI1SpYFp9J+XopP61u6uJ8b0Ss659/rrQQ0Rd
         GJIoImTpC6rcMwlHgUt0MayGBIHKOb9HSJagMEz/bIq5ggnkCRY2K5/0MSQuDgylSQcy
         yXZt1e1Rd7HajruqVsKUFYZA47FDZeSulEgLdC67RwiPAH3ITv/HyooP+MfESuJHSjXo
         CdVvKu0lgby/dI/DR30ZnCaNcLFxTL8+ioRyuwetSr0mU16dd9Xi6La45OQlt0+Ss+q6
         gBUg==
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20240605;
        h=content-transfer-encoding:cc:to:subject:message-id:date:from
         :in-reply-to:references:mime-version:dkim-signature;
        bh=QqLKcW5/vOR8do81aXnyE1SL7e4br5ZMunRXNu5gcSQ=;
        fh=wVCc8vTL6v/RB2XehmDNFBP74B6UunmJbBdbvzL1iiY=;
        b=YVy8MzKkdIuQeD5lmxlElDZoVwcx4Z2uyyNLM1Nd2saIsimhZxxL2yDYE90l2l3a0S
         WuuLThHFSRx7m++OPTgPkl5PZGkDCjbjdujEM5i2I6MAxFrInem+kLY1X4Z/X56/pQOK
         f4VYIn/D/4SA6MIA2LbLcIILoMrSKzHXIocdQpJBx07LLw1zq2cLgSMF3QnroQuz/HDO
         3HI3XnT7QpBd+nexOwaw+KsLiyrQLk5YZVMMqevgzinwApD+BEqYt0t5OGNynjX59mb9
         GUbst5epP5jCNFZtKMUeP5N36WR42ZNgTFDTBKG8nTFYkFiYeuPxIOs3YkY5RPBJ1DsU
         oh5g==;
        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=20251104; t=1775027602; x=1775632402; darn=lists.xenproject.org;
        h=content-transfer-encoding:cc:to:subject:message-id:date:from
         :in-reply-to:references:mime-version:from:to:cc:subject:date
         :message-id:reply-to;
        bh=QqLKcW5/vOR8do81aXnyE1SL7e4br5ZMunRXNu5gcSQ=;
        b=ojhPRU0HLBxdSXi5/fJMU3KOyDA3EBZKcSLtOuDBiaZiXiqdZP8Y5Qm4iPsuHjyTaa
         S6z9A3bIq6yN9dYjtwiDczws9eWG06FEtTNoXiH8urijtmstrbrQyf3HO/KivJ0+WY80
         SHBdSLBKIxMDBjxX1UwJ1Nf7xZI04vl5Hh4M/eDo2yfYQ3X5Ty8b1JFdYm2rK6KneGRG
         hTFFMEofbrJ4nmJF9KV4sXRR21xQzp870rj1/+RXuQ2wURtpqqFTW2z+cd5pd1EgeYIN
         nSeDVEM/jzSzX9L11qqaC3Hxn7l100+sXw6a282yZ6HY8S9XzbGzLwdSSSI3BH9VvmAO
         IIgg==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20251104; t=1775027602; x=1775632402;
        h=content-transfer-encoding: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;
        bh=QqLKcW5/vOR8do81aXnyE1SL7e4br5ZMunRXNu5gcSQ=;
        b=NQBmYS5R+blza1FeM0aJ7Al4TkYApE8zAYnceMUkhaeH1hJrmkCqaW1H3PMhB8B90B
         2b/mOkWgX4f9/69jj8Su/xJ5P7i4NnbYZVPMk7lYnPFOyMBlCmha90m3/coCvQslkbYV
         4r1dECYeTiPnYaw8hvwmRGWbnmXwQu29aLm7NC3a9CoNO44o5lyipzMgclPVI7rd6Vix
         fHr8gp+gtlRPVKMVrHA0rg0iyolZP8lsmVcj5RKFFLwFxb6No/UVj1nhPIAHhT4eOBXC
         dhojQRgb2Tck4ow6Sl8LgIzcX+9f8Pw6moyh6L4NGrkYBtCZb0frBFUUmCSSmGTrfq7n
         ILCA==
X-Forwarded-Encrypted: i=1; AJvYcCUQG5iiZDwaWKpY+sx8XwHLjH1caBKH9oFb5zkfUlGaxbrrWOznQh181nz99lzIfSel9h7GsXzsLVc=@lists.xenproject.org
X-Gm-Message-State: AOJu0YxBeWDnwsbL8fXVULHYOvmpPst8U7sf54veiscou4KsJ8e3Ikor
	2hiLHpK0+yVQ9hLWvc/6Ofi277WD23Bu33qzdjsiP6elfIWwnb3EI3Y9UFnar3hKm7rV7fZfgzX
	SlwTwKSnhVGUJbRuprcXoBXVJJu9EdAlOoLVsR6A=
X-Gm-Gg: ATEYQzwmyTqyjQwyDsxSG4aKMupN3ot1QoaR8335cL8QbOeO2kom4fEyyjVXVyBu+r6
	n12EVifzDjgoJr+hNuhnMPrY0KdETOUJVQOmhpak/PMaMAtZ474yXCuMispuScYU6TB4KBXppew
	x4iYvprZSBIIIpm+IswQad6gpOZ+CuTWcbE1hWMwgqGdtSChfzAM59Cpcej63Dt1DdklUwS7Qid
	00CE+9Qy0rcI6Oh8ixSZXtD55fx5v/nY0WhGqIjQQOnGqZ9962MD/VQV35XqxN8hSjSSN604/vm
	LMVo
X-Received: by 2002:a05:6512:130e:b0:5a1:3d21:7b55 with SMTP id
 2adb3069b0e04-5a2c1f35119mr866631e87.43.1775027601442; Wed, 01 Apr 2026
 00:13:21 -0700 (PDT)
MIME-Version: 1.0
References: <e1d18d55557ebe232fd62174f186b1cf228e48e5.1774981189.git.mykola_kvach@epam.com>
 <dc5550d7-5a2d-4ca1-85de-5a17c24aeac4@suse.com>
In-Reply-To: <dc5550d7-5a2d-4ca1-85de-5a17c24aeac4@suse.com>
From: Mykola Kvach <xakep.amatop@gmail.com>
Date: Wed, 1 Apr 2026 10:13:10 +0300
X-Gm-Features: AQROBzCsqScaJPrS9xoojwVZMluMyQDN-QvbeXLOZ0pzS5-wjtEVSbvt33Yg_BE
Message-ID: <CAGeoDV-ffZsOW+Cu0-oPA1obBOv_1nWU8_PAdaqaoy6=YUHGig@mail.gmail.com>
Subject: Re: [PATCH v3] xen/arm: vpsci: ignore upper 32 bits for SMC32 PSCI arguments
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>, 
	xen-devel@lists.xenproject.org
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: quoted-printable
X-purgate-ID: tlsNG-16d1c6/1775027602-815891C2-D0B242C1/0/0
X-purgate-type: clean
X-purgate-size: 3702

Hi Jan,

On Wed, Apr 1, 2026 at 9:29=E2=80=AFAM Jan Beulich <jbeulich@suse.com> wrot=
e:
>
> On 31.03.2026 20:31, Mykola Kvach wrote:
> > From: Mykola Kvach <mykola_kvach@epam.com>
> >
> > SMCCC DEN0028G, section 3.1, states that for AArch64 SMC/HVC calls
> > using Wn, only the least significant 32 bits are significant and the
> > upper 32 bits must be ignored by the implementation.
> >
> > So for SMC32 PSCI calls, Xen must not treat non-zero upper bits in the
> > argument registers as an error. Instead, they should be discarded when
> > decoding the arguments.
> >
> > Arm ARM DDI 0487J.a (D1-5406) also notes that the upper 32 bits may be
> > implementation defined when entering from AArch32. Xen zeros them on
> > entry, but that guarantee is only relevant for 32-bit domains.
> >
> > Update PSCI v0.2+ CPU_ON, CPU_SUSPEND, AFFINITY_INFO and SYSTEM_SUSPEND
> > to read SMC32 arguments via PSCI_ARG32(), while keeping the SMC64
> > handling unchanged.
> >
> > No functional change is intended for PSCI 0.1.
> >
> > Suggested-by: Julien Grall <julien@xen.org>
> > Signed-off-by: Mykola Kvach <mykola_kvach@epam.com>
> > Reviewed-by: Bertrand Marquis <bertrand.marquis@arm.com>
>
> I thought I might as well include this in my next commit sweep, but isn't
> this R-b being invalidated by ...
>
> > ---
> > v3:
> >  - use PSCI_ARG_CONV for SYSTEM_SUSPEND
>
> ... this change. That's ...
>
> > @@ -422,14 +427,8 @@ bool do_vpsci_0_2_call(struct cpu_user_regs *regs,=
 uint32_t fid)
> >      case PSCI_1_0_FN32_SYSTEM_SUSPEND:
> >      case PSCI_1_0_FN64_SYSTEM_SUSPEND:
> >      {
> > -        register_t epoint =3D PSCI_ARG(regs, 1);
> > -        register_t cid =3D PSCI_ARG(regs, 2);
> > -
> > -        if ( fid =3D=3D PSCI_1_0_FN32_SYSTEM_SUSPEND )
> > -        {
> > -            epoint &=3D GENMASK(31, 0);
> > -            cid &=3D GENMASK(31, 0);
> > -        }
> > +        register_t epoint =3D PSCI_ARG_CONV(regs, 1, is_conv_64);
> > +        register_t cid =3D PSCI_ARG_CONV(regs, 2, is_conv_64);
> >
> >          perfc_incr(vpsci_system_suspend);
> >          PSCI_SET_RESULT(regs, do_psci_1_0_system_suspend(epoint, cid))=
;
>
> ... this hunk aiui, which is far from merely cosmetic imo. While

Nobody said that the change had to be purely cosmetic in order to keep
the tag. I understood it differently from the official Xen
documentation pages.

> behavior looks to remain the same for PSCI_1_0_FN32_SYSTEM_SUSPEND, it

Exactly. If the changes are not substantial, I do not see a reason to
drop the tag ...

> clearly changes for PSCI_1_0_FN64_SYSTEM_SUSPEND. That may be intended
> and for the better, but the change clearly wasn't reviewed by Bertrand,
> nor - when offering the R-b - did he ask for this extra change.

... and this is also how I understood the Xen patch submission
guidelines [1], which say:

"Note that if there are several revisions of a patch, you ought to
copy tags that have accumulated during the review. For example, if
person A and person B added a Reviewed-by: tag to v1 of your patch,
include it into v2 of your patch. If you make substantial changes
after certain tags were already applied, you will want to consider
which ones are no longer applicable (and may require re-providing)."

So my understanding was that tags should normally be kept across
revisions, unless the changes are substantial enough to make them no
longer applicable.

In any case, if you do not think the tag should be kept, I am fine with
waiting for Bertrand to re-confirm it.


Best regards,
Mykola

[1] https://wiki.xenproject.org/wiki/Submitting_Xen_Project_Patches

>
> Jan


From xen-devel-bounces@lists.xenproject.org Wed Apr 01 07:14:27 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 01 Apr 2026 07:14:27 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1269792.1558689 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1w7pmV-0001QV-4K; Wed, 01 Apr 2026 07:14:27 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1269792.1558689; Wed, 01 Apr 2026 07:14: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 1w7pmV-0001QF-0w; Wed, 01 Apr 2026 07:14:27 +0000
Received: by outflank-mailman (input) for mailman id 1269792;
 Wed, 01 Apr 2026 07:14:25 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <jbeulich@suse.com>) id 1w7pmT-0001PJ-Oa
 for xen-devel@lists.xenproject.org; Wed, 01 Apr 2026 07:14:25 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1w7pmT-005clS-49
 for xen-devel@lists.xenproject.org; Wed, 01 Apr 2026 09:14:25 +0200
Received: from [10.42.69.6] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <jbeulich@suse.com>)
 id 69ccc5cd-2eae-0a2a0a5409dd-0a2a4506809e-34
 for <xen-devel@lists.xenproject.org>; Wed, 01 Apr 2026 09:14:25 +0200
Received: from [209.85.128.48] (helo=mail-wm1-f48.google.com)
 by tlsNG-16d1c6.mxtls.expurgate.net with ESMTPS (eXpurgate 4.55.2)
 (envelope-from <jbeulich@suse.com>)
 id 69ccc5d0-3034-0a2a45060019-d1558030ddbc-3
 for <xen-devel@lists.xenproject.org>; Wed, 01 Apr 2026 09:14:24 +0200
Received: by mail-wm1-f48.google.com with SMTP id
 5b1f17b1804b1-4887f49ec5aso19709285e9.1
 for <xen-devel@lists.xenproject.org>; Wed, 01 Apr 2026 00:14:24 -0700 (PDT)
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-4887e93cf2dsm86569455e9.11.2026.04.01.00.14.23
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Wed, 01 Apr 2026 00:14:23 -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=google header.d=suse.com header.i="@suse.com" header.h="Content-Transfer-Encoding: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=1775027664; x=1775632464; darn=lists.xenproject.org;
        h=content-transfer-encoding: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;
        bh=R2f0qnA4zMuWGQDh2kN+w5Vpgg0HRwtv1KaOb9FxRGQ=;
        b=XTaOl39Nhnrzqib19ltNtZTwoRba4j88twUp7wROD8Vsb0pNQHepzRmixkXCHapgyv
         NCNoA735KBobFfgsNqrIP0TmNFfMANOQDfJmMvmCPTb/xEQ5uxMSqMbnAiSDnGCp+9Qa
         eAVFuhubaiIfkARTRyG/FaG/K0DuGPTx7htdgI83EBxIGW73EYO0w3WsxuZ4M4Syxj/x
         du6gEb+y9QMHUwHOVgMN1Beg91/Ncg1OBDYadBYH660opgqSiPf0k+7k5j/8IrRS+YlY
         nmD8ZD+r+DPdHEYqaWhFdkEWiD1xpJ8WtiAIElRwTg0KzibqSgNY5ET0PlbRQnioAcoj
         wYEg==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20251104; t=1775027664; x=1775632464;
        h=content-transfer-encoding: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;
        bh=R2f0qnA4zMuWGQDh2kN+w5Vpgg0HRwtv1KaOb9FxRGQ=;
        b=LGo8fyCm2MpVJtlBReL30QUu1KV5/0+PlGZA5FsuxbNWaWT4GWY0x6p4+e+JAVRU0k
         0z4g+GtF4I/oR3COVvXMCuSNe5crOKncHZqIspzI+9HSrH5RTfXAzLPJZ4J6ByX/AoZ8
         dE0El7bKqgfljYUmtY9/iW2ETlG/F/9BYamvDa9kySRZ0MS5ZdNd/R7SwsA/45r5VJ/B
         FtYnYS+9KA8/91YGLsD1cSJdAI+lB66btHnfQn9rbq0SYmmL+SJURGCU6PE2lvntFLoy
         Kx9NMb3iVotwwufwHmoZyql5fgDkfjZ0EqJjp5LmUrX6Hsqij9JwxQJoqDLvIIJtZ6xz
         OVoQ==
X-Gm-Message-State: AOJu0YwanA8CgPklt/7AIuIr7BK1LqHugkZ/9+yH0XKB9kTy4TFCde85
	4YPn8UdSLstYsQFC6LippfEeSOpyZ3MuDvwnkIV3OjcY7/KMqdwqCYNkETFC3jtdBDORuh9Fes8
	PxmE6ig==
X-Gm-Gg: ATEYQzzaUL6+2yMwj9QiLydpdPzu41MBghuVhX2nxLRy/EPywbEBT0CgtoJueNZPNwa
	DCKdVUF9/E7jj4cP3xiMQqWBFDEfn2D4YWKZC7zAmeB/4yNPf+fDMcePsWeAI5Fi87kM7/MqePB
	XHXoC9bDM9aSpxhh8DiIvZzGT3qa8C90Ez2+gfekQTeDYeTo7Kr/wHWhGg3sLQ5Et4xnuSWmmXU
	TwWYcZwfQTG4aiSliwJWnPS7QR/hZ9l7iQ/7c5TxOpOSaoCFuvHNKQU5CNJ4uXu5ek9RpxKF2Bf
	naht7vNC4hRVjZW/LP/qB0pZIQiQSmU1L2md0cFD7Ut8piUFTpRXGTzMxaVQxx0uvXCREeP2AuE
	4AykaTvBLlkOHloTFSwFY+1vKfNB2U21iDJJRpUWsmZUrNnSjoEX/jGCbH/pga21FgzqlreKnux
	uJDYdvGuCMj2QJ+Gt2/H/ebq0SuDDpE+aRV6f0jSz5T2i9ToI3YAdoig4/82o7hfKBhsY9ZR+6S
	T2C/uBsvKJ6xOU=
X-Received: by 2002:a05:600c:45d2:b0:487:169:9f64 with SMTP id 5b1f17b1804b1-48883563408mr36530615e9.12.1775027664216;
        Wed, 01 Apr 2026 00:14:24 -0700 (PDT)
Message-ID: <e8bbaae2-5cff-4549-9f27-fbbda7346f60@suse.com>
Date: Wed, 1 Apr 2026 09:14:22 +0200
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: IOMMU faults after S3
To: =?UTF-8?Q?Marek_Marczykowski-G=C3=B3recki?=
 <marmarek@invisiblethingslab.com>
References: <acZZmGXIJlmN3KGm@mail-itl>
Content-Language: en-US
Cc: xen-devel <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: <acZZmGXIJlmN3KGm@mail-itl>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
X-purgate-ID: tlsNG-16d1c6/1775027664-B3A981C2-67D247F9/0/0
X-purgate-type: clean
X-purgate-size: 2572

On 27.03.2026 11:19, Marek Marczykowski-Górecki wrote:
> I noticed that on some systems, there are a lot of IOMMU faults after
> S3. I can see it also on a laptop with MTL, but it affects also the ADL
> gitlab runner:
> 
>     https://gitlab.com/xen-project/hardware/xen/-/jobs/13661033722
>     (XEN) [   37.201160] [VT-D]DMAR:[DMA Write] Request device [0000:00:1e.6] fault addr 0
>     (XEN) [   37.201164] [VT-D]DMAR: reason 02 - Present bit in context entry is clear
>     (XEN) [   37.202332] [VT-D]DMAR:[DMA Write] Request device [0000:00:1e.6] fault addr 0
>     (XEN) [   37.202339] [VT-D]DMAR: reason 02 - Present bit in context entry is clear
> 
> Interestingly, the 0000:00:1e.6 device is not even listed by lspci.
> 
> The issue is present only on staging, not staging-4.21.
> 
> Bisect says:
> 
> 5ec93b2f19ff8873fca65d38c1164b0a56d3898b is the first bad commit
> commit 5ec93b2f19ff8873fca65d38c1164b0a56d3898b
> Author: Jan Beulich <jbeulich@suse.com>
> Date:   Thu Jan 22 14:13:35 2026 +0100
> 
>     x86/HPET: drop .set_affinity hook

Looking into this, I find several things I can't quite understand (yet).
First there is

(XEN) [000000456c0fe39f] Disabling HPET for being unreliable

which looks to only affect clocksource selection, but not use as
broadcast source for CPU-idle management. (This may be an independent
issue.)

Then there is

(XEN) [    2.760248] HPET: 8 timers usable for broadcast (8 total)

which should only occur on ARAT-incapable systems. That should only be
older hardware. (On my much older Skylake I don't see this line, for
example.) What does CPUID leaf 6 have on this system? Sadly xen-cpuid
is purely featureset based, and hence doesn't expose info about that
leaf. The leaf also isn't exposed to domains, so CPUID output in Dom0
isn't useful to look at either. It would need to be CPUID output on a
bare metal kernel.

Further I suspect the fingered commit may only have uncovered an issue
elsewhere. I don't think we clear any context table entries during
suspend or resume. Hence in

(XEN) [   20.554813] [VT-D]DMAR:[DMA Write] Request device [0000:00:1e.6] fault addr 0
(XEN) [   20.554819] [VT-D]DMAR: reason 02 - Present bit in context entry is clear

the latter message is confusing me.

The fault address being zero may, otoh, be a hint of hpet_msi_write()
never having run post-resume. Which may be the connection to the
dropping of hpet_msi_set_affinity(), as that did call that function.
I'll continue looking in that direction as a first step.

Jan


From xen-devel-bounces@lists.xenproject.org Wed Apr 01 07:20:30 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 01 Apr 2026 07:20:30 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1269807.1558698 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1w7psE-0003MP-Ok; Wed, 01 Apr 2026 07:20:22 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1269807.1558698; Wed, 01 Apr 2026 07:20: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 1w7psE-0003MI-Kz; Wed, 01 Apr 2026 07:20:22 +0000
Received: by outflank-mailman (input) for mailman id 1269807;
 Wed, 01 Apr 2026 07:20:21 +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 1w7psD-0003MC-8Q
 for xen-devel@lists.xenproject.org; Wed, 01 Apr 2026 07:20:21 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1w7psC-00ArYF-KP
 for xen-devel@lists.xenproject.org; Wed, 01 Apr 2026 09:20:20 +0200
Received: from [10.42.69.1] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <andrew.cooper@citrix.com>)
 id 69ccc72f-e002-0a2a0a5209dd-0a2a4501987a-26
 for <xen-devel@lists.xenproject.org>; Wed, 01 Apr 2026 09:20:20 +0200
Received: from [40.107.209.39]
 (helo=PH8PR06CU001.outbound.protection.outlook.com)
 by tlsNG-d62444.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.0)
 (envelope-from <andrew.cooper@citrix.com>)
 id 69ccc732-6fc9-0a2a45010019-286bd127dfba-3
 for <xen-devel@lists.xenproject.org>; Wed, 01 Apr 2026 09:20:20 +0200
Received: from CH8PR03MB8275.namprd03.prod.outlook.com (2603:10b6:610:2b9::7)
 by PH7PR03MB7134.namprd03.prod.outlook.com (2603:10b6:510:2b4::16)
 with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9769.15; Wed, 1 Apr
 2026 07:20:15 +0000
Received: from CH8PR03MB8275.namprd03.prod.outlook.com
 ([fe80::a70d:dc32:bba8:ce37]) by CH8PR03MB8275.namprd03.prod.outlook.com
 ([fe80::a70d:dc32:bba8:ce37%6]) with mapi id 15.20.9769.016; Wed, 1 Apr 2026
 07: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=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=Iq229BkR8fIaGeBdz0G4OIj/ItFu5p2hWg7DS6ATW++p6CTVEpkxI0XM/hqs4s7KuIVvoTFcaFo44isbuI0Cop+PBDEUq0MQa44k+W8J8kPnwrQ+TwDqHxZafxvvjLnTnChAqDOXwpCSx16KnzxISrFbEb2ZB/ZrdTRUExbFXyIXlweSA3DnsJIpqNLdEJjOJmgKwoo8v+YUfWf3FliJIpTe5Jx9V8rt18TkhCmduaKlUBc49Oa2F0nxCk7q0kiiY45hivER0DsS+OQ3WGeVECbX7mY70jlC4W0ycRZ8u/IDKP9Ua4IITXVyh39yt8WCuVn/Y0bS5ckujKeXvLJuGQ==
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com;
 s=arcselector10001;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1;
 bh=0TvI/S6RtBZqmLJ0w11DVE6SnvpoilniE8POxdbT4gY=;
 b=TLnifcEFEkg6+DHFemNMlcvq7yLym0vZFKHI5RpyqzPNsK/aNzcTC3dXfUMFZoMFjcL4kjMI/yvrMi61QHDxkT5HFfZT5pxjtWB49flcP+PbqYKszwYS9xuKydIuheKsdfC4Tj7rW8TpseYWyG2s67MMqLQ6JWJiZ5DIv3ijuJ/lJ8jOiK9gCDeSGtBtfFdgJ1r1aqezMAR4Ha4Gy9UsCfgkgAPQJYrCYequjA0w/eFbfQwuphZ/f9YcDcpcSfhURJyeCuzkxMOHZT71fN38nKHjMsKcta2GqnCtlXh7OdqIs724MmpF+tlCUWQnPcBKxnP7iE1UzfbHsoyWx+31pg==
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=0TvI/S6RtBZqmLJ0w11DVE6SnvpoilniE8POxdbT4gY=;
 b=uqijB5NQ/GgIO6wxLytixbciT30hnYnE1OhK/a3VFQtOCHOqeAnEjhL5tKO/clyHb6WPkOYJVGE8kaS0mCYM3dVxr9WjTexNtlFEFsicrXfXxWC21Xb0gzw9hWbyZDPrlFv0Ut+6pWB83NgZTb/6BmK1Z+7tIOzE58de1mlRGH8=
Authentication-Results: dkim=none (message not signed)
 header.d=none;dmarc=none action=none header.from=citrix.com;
Message-ID: <913f75e3-0039-4a7e-9884-7564c329557f@citrix.com>
Date: Wed, 1 Apr 2026 09:20:11 +0200
User-Agent: Mozilla Thunderbird
Cc: Andrew Cooper <andrew.cooper3@citrix.com>,
 xen-devel <xen-devel@lists.xenproject.org>
Subject: Re: IOMMU faults after S3
To: Jan Beulich <jbeulich@suse.com>,
 =?UTF-8?Q?Marek_Marczykowski-G=C3=B3recki?= <marmarek@invisiblethingslab.com>
References: <acZZmGXIJlmN3KGm@mail-itl>
 <e8bbaae2-5cff-4549-9f27-fbbda7346f60@suse.com>
Content-Language: en-GB
From: Andrew Cooper <andrew.cooper3@citrix.com>
In-Reply-To: <e8bbaae2-5cff-4549-9f27-fbbda7346f60@suse.com>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
X-ClientProxiedBy: MR1P264CA0042.FRAP264.PROD.OUTLOOK.COM
 (2603:10a6:501:3e::23) To CH8PR03MB8275.namprd03.prod.outlook.com
 (2603:10b6:610:2b9::7)
MIME-Version: 1.0
X-MS-PublicTrafficType: Email
X-MS-TrafficTypeDiagnostic: CH8PR03MB8275:EE_|PH7PR03MB7134:EE_
X-MS-Office365-Filtering-Correlation-Id: f936505c-45a4-4348-8c7f-08de8fbf1eb2
X-MS-Exchange-SenderADCheck: 1
X-MS-Exchange-AntiSpam-Relay: 0
X-Microsoft-Antispam:
	BCL:0;ARA:13230040|376014|366016|1800799024|18002099003|56012099003|22082099003;
X-Microsoft-Antispam-Message-Info:
	pK87DdFqyDhK9cQ58VHzx6dzwJGja5CI5Txy/qq76rC2NQ5Fl51rjD8502QduSD/LtOSWj8SgUDQrTMg52IudItA5oigEN51+9arcB5oqkh11gx8O9n2IBwjrw9XfPCC8zFdsIDmSI/rQgPaoQSsb2TvKz4Q6sKD7izwRBjk7p1RiMQWwOoUDXyf7nMVXYpS8gdROzDQSo2gfkY+CbOUPHtNk0fvCJF2LuJgESzICUeAWXhGrQrXnINZTj2Vod34z0UjfgSgBDL/9Knmm0383hr4HvYX+atEN1qULtdzPh6jwcB4eAYJ1AIo+F63H5VHiJYVhCI9wk1KlEUJyvjlcFxoIXUI/aZcg18PBDHGy7DACyDUcfdy/laRbJHEmzrnz8mZATgLSuJ5I9oWEKGJYLAN/2B1BDb56dZtJaqq+3rYL9IgH094paC1fT7qNSDnCNUiAeOjlNr/UMUDUB0rGH9zrnGVerdKEAANbOhbK3g8o5GnldTRA754ie/Kmf3jldXIefOzY9Vq50DCRhiu9PwH/1Ux65MlhjflJXRsfd6B4p1uo+ceFRAe4MMNd3dD77dYQtiJgqJGy1uqqIQjptTw2KrAjmuTN0qhHtSFrEFhsZ5VwTDeNUqOxSTsYmpL2vv4YgP8NJhZhGzTh8CcCPcawTiL1aHyLWogEAwOT04DbFLcMMkiXxFMFVjrLkiHjfZ6UVs/A4SJcsQ8wFS0iek/+jx54QAEkRfKznhS3UE=
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)(18002099003)(56012099003)(22082099003);DIR:OUT;SFP:1101;
X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1
X-MS-Exchange-AntiSpam-MessageData-0:
	=?utf-8?B?dytheGRkd3hXaEsxdWFNVk9ZakRqNXVid2JuVlVhMm1ONFlSLzg4T1cxVnRE?=
 =?utf-8?B?ZkdKdTd2bitPTjJxVEt6SE9xY3d3dDhMWUF4TG9ERTZidURNZTRFaUhCWVls?=
 =?utf-8?B?cG9yMHdySWErV1ZhRCtlWldWZVUwRXpieTY2MFNxK25ESUcybDR1MldVVmZv?=
 =?utf-8?B?Z1dJODdtTUpsSFMyN2lxUDJLTDRpL1JQS0s1cGZ3TU0xRVJYcTVLcEVEZ3RF?=
 =?utf-8?B?b0pYMG9TdUhXN1I5amdTTlQ1aGVVQldraERndm5nSzZSSXc4Q3l6ZFJ0M2Z5?=
 =?utf-8?B?RHpCSS8xWDdCVlEyMTQydHo3dFpDUFNaVzNFQ01uYkVtRHp4VEVLaUU5ZUxP?=
 =?utf-8?B?TW9oU3crQkNUUE9ndDJwZ24xcUdzVjRvUFRwTURDbm83akdlMGw3UXQxZG5H?=
 =?utf-8?B?d0dTZ3VocHFEQjNHcW1pUGpWS25JRk5JRlI4ZXI0T0E0bUN4aVlFcDh6VG9Y?=
 =?utf-8?B?NTUxcDhrenM2QS9xTjFkODJCaDZHK1owaGo2eWZxcHJyd2hZUjZ0ZzVEd2Iy?=
 =?utf-8?B?dlVLdHk4RG1zSTZyOCtNOEhtYUNzV2dPT0NWN0JFNWpSRXFaWldXVjdRcDhn?=
 =?utf-8?B?SStzNWZyOGZwNEFLQ0lKOHNhdXB1Mm0yVWlrdVczYnVabXBjVHhCeHpsMlhy?=
 =?utf-8?B?ZnJ4SmdEZndZR21YSlpGRDVZU3g5Rm1vbjFKc09henZnQStCaDMzSjJxYU1p?=
 =?utf-8?B?R0NWVVpEYTR5TDJvSHdHV0tmZjlUSS9jejRXM20rZmFldjBqZDZXSVh5YUdL?=
 =?utf-8?B?UFVPU1UzS040QjFvNkw1dm84TklCeDVMYlBmNVZxZS9BQU9uWFpHbEtPazNx?=
 =?utf-8?B?eUlmaTZDWEwxSSs1bi9qTHRuOWxyYUxZQ215a21jUXZTb3ZKeDljREdBWi9k?=
 =?utf-8?B?bERJVXB3c1RvMVlDOGs0dUdxcmJMeUIyNDVKQk9mOHV3Q2UwMGxvNC9TS0Ro?=
 =?utf-8?B?bVFTQWRPOEw2VXBqNHBwUlRQQzllTGhvS1p3MXJ5SVdJeVRDNW5SL05CL0g5?=
 =?utf-8?B?dFM0UEJ6Szg3OHpMRVJLVkIrcXpVUzQrSGMvOGR0cW9qMGsyK055VldMNmQw?=
 =?utf-8?B?d2xxcDJ2MjlPZ1NEN2sycXBianZheTAwZG12VXBqVnZJa0RrdXFURVVKUFZs?=
 =?utf-8?B?K2tFdEY0Rk1sanh1S1JuMWppbk9KNEdpY2psazlwQUQwMEZnWDBjdHNpaUsr?=
 =?utf-8?B?UFI2UStmUWhqbGF3TXRvaGxSOXFobnJjNmhCUkhUNTlha2s2OUUzSmdzdkZq?=
 =?utf-8?B?M1pORHpYYk9nUWJpNHpzYlYzczc1UVoxWjFQRlg2Y1FmVWlmSGlYUVdjNHJw?=
 =?utf-8?B?VFpMdUwvQS9UKzY1Y2tycTkvV1htSmxCYU1XaFNvejdhcC9Ra2E5S0tCMG1H?=
 =?utf-8?B?VEM3ZllQOVA1UTdMT244cm1YM3QzQUpPM1IwTEdlanVQR0NSRm5Kb2VUeDB5?=
 =?utf-8?B?VzNNSGJtWE16VEpCSmtuQjlGNmxEQmw4WFpTRDVUdHR1eWxDcDdsWUhRcEJD?=
 =?utf-8?B?eDVPR2ptQ1RmNGhmZWUzYlRaMkJsQ0xKd01mVHJERHMvNFZvUjV4dXFZRGRC?=
 =?utf-8?B?US9ZZGRqS1R1SGhGYmtsRHR3ZDV6UEVzUGFUN1lFbXltZnk4SlJqOFdyRXZu?=
 =?utf-8?B?STBxS3l4bjB3cnp4dTM0K3NTYTQzMDVvRWRYUHllRnlOZGVDdmx6OVhYMTNC?=
 =?utf-8?B?U1IxTkVHWDhLVWJ0K28xSFprTFlqYThLdUxrcjVpVHdralJqZy84QUVEYkNW?=
 =?utf-8?B?TUZ0WXRWZVc5aTZ1dmZoMVNJc0c1VVB4VXE3UldRSWRxWlNZQ1RSUjZiM3pT?=
 =?utf-8?B?WHE4WlZTbTh5VDcwUmZGMFhtWmRIZUpYY3huZkl3eUtkdm1QK3pZbC9LVFFJ?=
 =?utf-8?B?N1FKWGhjaFRZYm8vN0ltLzM3dmxaczc5V1lGaXVDbDZEMTFrSVB5SURkK0Q1?=
 =?utf-8?B?VUtXaE5ka3lkWjhqRkN0WGE1c3E0Yk5vOGQ5NFpyMGFocENOb0kyZVRad051?=
 =?utf-8?B?UC9MYjg3R1l4eGphRkNUaytoY2orV2U0ZWdxcDBsVUQ1MlBQcjJuWk5CMVFm?=
 =?utf-8?B?M3UxN2ZjeGRFYXI1QTFDNlJYOUtQbGlvc3NuaHFMQkVBSFN4Vm81UDJpNjRn?=
 =?utf-8?B?ckFUVTVwMWJEcHgvcVpLNGlXeTVWR1AxYk9UV1F0Tjg2dDUxTGhNNE5VeHh6?=
 =?utf-8?B?T0dnOWFadCszbEp0MkdCQVdrOWdFT3NvZ3UrTzVmODBzVEFIVEZpemhLS3dN?=
 =?utf-8?B?ekZSak1KRG5wV3pkS0FneVBkSE1rM0ZQUFdrY1BTQTJTUGFoMG0zeExXVGla?=
 =?utf-8?B?QTZ4NXhOa2VtViswL0pVS09DS2pRdElQdUptR2VpY2c5T2VDR0IvQT09?=
X-OriginatorOrg: citrix.com
X-MS-Exchange-CrossTenant-Network-Message-Id: f936505c-45a4-4348-8c7f-08de8fbf1eb2
X-MS-Exchange-CrossTenant-AuthSource: CH8PR03MB8275.namprd03.prod.outlook.com
X-MS-Exchange-CrossTenant-AuthAs: Internal
X-MS-Exchange-CrossTenant-OriginalArrivalTime: 01 Apr 2026 07:20:15.0857
 (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: uzqrul5kkMgWVL1gUDwdUIiEGAvZyLOebla7j72nLuMf1GOugIlIifE/LDg+RaRx+IlazAn61CUubqybe+DPN8SETFGuO9zkfWK1On9leH4=
X-MS-Exchange-Transport-CrossTenantHeadersStamped: PH7PR03MB7134
X-purgate-ID: tlsNG-d62444/1775028020-17AFD185-A41EB87E/0/0
X-purgate-type: clean
X-purgate-size: 2115

On 01/04/2026 9:14 am, Jan Beulich wrote:
> On 27.03.2026 11:19, Marek Marczykowski-Górecki wrote:
>> I noticed that on some systems, there are a lot of IOMMU faults after
>> S3. I can see it also on a laptop with MTL, but it affects also the ADL
>> gitlab runner:
>>
>>     https://gitlab.com/xen-project/hardware/xen/-/jobs/13661033722
>>     (XEN) [   37.201160] [VT-D]DMAR:[DMA Write] Request device [0000:00:1e.6] fault addr 0
>>     (XEN) [   37.201164] [VT-D]DMAR: reason 02 - Present bit in context entry is clear
>>     (XEN) [   37.202332] [VT-D]DMAR:[DMA Write] Request device [0000:00:1e.6] fault addr 0
>>     (XEN) [   37.202339] [VT-D]DMAR: reason 02 - Present bit in context entry is clear
>>
>> Interestingly, the 0000:00:1e.6 device is not even listed by lspci.
>>
>> The issue is present only on staging, not staging-4.21.
>>
>> Bisect says:
>>
>> 5ec93b2f19ff8873fca65d38c1164b0a56d3898b is the first bad commit
>> commit 5ec93b2f19ff8873fca65d38c1164b0a56d3898b
>> Author: Jan Beulich <jbeulich@suse.com>
>> Date:   Thu Jan 22 14:13:35 2026 +0100
>>
>>     x86/HPET: drop .set_affinity hook
> Looking into this, I find several things I can't quite understand (yet).
> First there is
>
> (XEN) [000000456c0fe39f] Disabling HPET for being unreliable
>
> which looks to only affect clocksource selection, but not use as
> broadcast source for CPU-idle management. (This may be an independent
> issue.)
>
> Then there is
>
> (XEN) [    2.760248] HPET: 8 timers usable for broadcast (8 total)
>
> which should only occur on ARAT-incapable systems. That should only be
> older hardware.

I'm not sure that's a reasonable assertion to draw.  The number of HPET
channels is down to the HPET alone, not anything to do with the CPU
capabilities.

>  (On my much older Skylake I don't see this line, for
> example.) What does CPUID leaf 6 have on this system? Sadly xen-cpuid
> is purely featureset based, and hence doesn't expose info about that
> leaf.

xen-cpuid -p

That will get you leaf 6, but there's no human-readable decode of it.

~Andrew


From xen-devel-bounces@lists.xenproject.org Wed Apr 01 07:34:47 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 01 Apr 2026 07:34:47 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1269823.1558708 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1w7q65-0005TU-3H; Wed, 01 Apr 2026 07:34:41 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1269823.1558708; Wed, 01 Apr 2026 07:34: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 1w7q64-0005TN-Uh; Wed, 01 Apr 2026 07:34:40 +0000
Received: by outflank-mailman (input) for mailman id 1269823;
 Wed, 01 Apr 2026 07:34:39 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <penny.zheng@amd.com>) id 1w7q63-0005TH-Jp
 for xen-devel@lists.xenproject.org; Wed, 01 Apr 2026 07:34:39 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1w7q62-003JvB-Vv
 for xen-devel@lists.xenproject.org; Wed, 01 Apr 2026 09:34:38 +0200
Received: from [10.42.69.5] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <penny.zheng@amd.com>)
 id 69ccca8b-bab6-0a2a0a5309dd-0a2a4505dcfe-12
 for <xen-devel@lists.xenproject.org>; Wed, 01 Apr 2026 09:34:38 +0200
Received: from [40.107.201.30]
 (helo=CH4PR04CU002.outbound.protection.outlook.com)
 by tlsNG-c201ff.mxtls.expurgate.net with ESMTPS (eXpurgate 4.55.2)
 (envelope-from <penny.zheng@amd.com>)
 id 69ccca8c-5aeb-0a2a45050019-286bc91e3298-3
 for <xen-devel@lists.xenproject.org>; Wed, 01 Apr 2026 09:34:38 +0200
Received: from DM4PR12MB8451.namprd12.prod.outlook.com (2603:10b6:8:182::7) by
 BY5PR12MB4243.namprd12.prod.outlook.com (2603:10b6:a03:20f::15) with
 Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9769.16; Wed, 1 Apr
 2026 07:34:32 +0000
Received: from DM4PR12MB8451.namprd12.prod.outlook.com
 ([fe80::6d8e:2499:8a0a:7eb2]) by DM4PR12MB8451.namprd12.prod.outlook.com
 ([fe80::6d8e:2499:8a0a:7eb2%6]) with mapi id 15.20.9769.014; Wed, 1 Apr 2026
 07:34: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=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=AOD96thFTYQHhpQUneVeA61TprJUZidKZzRJongXjQqkdzGSnwSQPBdRErKJjgwSvNkA5Oa/dPe6ctoMNrzpJUWd/9FI9nQZ/lC3w6HAdGfc0nf9psKkeyszENrAuDNJ9sFs71OJ5tMy7+IoXR3v/3Tr2kIYyHSDOK2x5G87gkqmODjY2BIVB/+wPkdQzO6KgKSBKjza6EEs8atkcee0cy2SJNqRIvRaEucF+PBf37ZvhjINvHRncc3TZaWYOmxgvYrnONkk1OZ8QQfNJclvr82Q49adM8Avpgxazt8shJ3EiW2OCD4G1ShgTtrD+g2+JqbW82E8imi8AtZvxVqmiQ==
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com;
 s=arcselector10001;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1;
 bh=xfewqG2xAv+N14UNDbtlSiLtkkD0m9BGD8h0UcutuAA=;
 b=nf+TPeVGJE+X01Jwsfb60GQhnOWI4IZioz48wn3X9ashEWnBOV+sBlx0l+xYRlKvA9s4oPQSIPqlXp4I1NwvSJdBiMnx9h4sKhqYxtX5XObtrJk00N0WHZtr3TuQO0JGU7BUMd2cX+hvCB37/d6C8KX8IXNCeGFkABZh2woMBqgzJllwKQiu98spWWJnZqal4UiHrrX5hCoF1Pk4b2jOsh2g7P47judYw2tLnBOtBYIWklFYjrWMDzKIJH+hIeSDpz2ibY3+oc56C1smf5T7a23/ognRmMQXudmn8bKpXdO0iK5kFWpdR72KK+cW0n0lRZWiWAb21JOgLwN1RjH0+g==
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=xfewqG2xAv+N14UNDbtlSiLtkkD0m9BGD8h0UcutuAA=;
 b=DQBxl1vLCj58C4yY1ul5C+8RQOfR9pFwZEO1cu0uQ7pwT+OZbvrxAh9fN3VYKQOBcR5B9+F/cDvK/I/rfHlCzbqbj/dRgJ+mQogdpFPkzbyft5GMJWRSROhd/ZaAMJ8r15AvNaodFJhEyIydN1V63ii0fhclvJuXiDhDHvIQwys=
From: "Penny, Zheng" <penny.zheng@amd.com>
To: Jan Beulich <jbeulich@suse.com>
CC: "Huang, Ray" <Ray.Huang@amd.com>, Stefano Stabellini
	<sstabellini@kernel.org>, Julien Grall <julien@xen.org>, Bertrand Marquis
	<bertrand.marquis@arm.com>, "Orzel, Michal" <Michal.Orzel@amd.com>, Volodymyr
 Babchuk <Volodymyr_Babchuk@epam.com>, "xen-devel@lists.xenproject.org"
	<xen-devel@lists.xenproject.org>, "Garcia Vallejo, Alejandro"
	<Alejandro.GarciaVallejo@amd.com>
Subject: RE: [PATCH v1 1/3] xen/arm: generalize per-page GFN storage beyond
 xenheap pages
Thread-Topic: [PATCH v1 1/3] xen/arm: generalize per-page GFN storage beyond
 xenheap pages
Thread-Index: AQHcvb8lM85JfRwCbUCtKWTFoK4zzbXHHE8AgAK1uwA=
Date: Wed, 1 Apr 2026 07:34:32 +0000
Message-ID:
 <DM4PR12MB845158C2026FA4EA00E2409BE150A@DM4PR12MB8451.namprd12.prod.outlook.com>
References: <20260327075025.3008606-1-Penny.Zheng@amd.com>
 <20260327075025.3008606-2-Penny.Zheng@amd.com>
 <8a0762de-493f-46f7-be8d-25949532e2fc@suse.com>
In-Reply-To: <8a0762de-493f-46f7-be8d-25949532e2fc@suse.com>
Accept-Language: en-US
Content-Language: en-US
X-MS-Has-Attach:
X-MS-TNEF-Correlator:
msip_labels:
 MSIP_Label_f265efc6-e181-49d6-80f4-fae95cf838a0_Enabled=True;MSIP_Label_f265efc6-e181-49d6-80f4-fae95cf838a0_SiteId=3dd8961f-e488-4e60-8e11-a82d994e183d;MSIP_Label_f265efc6-e181-49d6-80f4-fae95cf838a0_SetDate=2026-04-01T07:34:09.0000000Z;MSIP_Label_f265efc6-e181-49d6-80f4-fae95cf838a0_Name=Open
 Source;MSIP_Label_f265efc6-e181-49d6-80f4-fae95cf838a0_ContentBits=3;MSIP_Label_f265efc6-e181-49d6-80f4-fae95cf838a0_Method=Privileged
authentication-results: dkim=none (message not signed)
 header.d=none;dmarc=none action=none header.from=amd.com;
x-ms-publictraffictype: Email
x-ms-traffictypediagnostic: DM4PR12MB8451:EE_|BY5PR12MB4243:EE_
x-ms-office365-filtering-correlation-id: c2689964-6f62-4303-8b40-08de8fc11dd0
x-ms-exchange-senderadcheck: 1
x-ms-exchange-antispam-relay: 0
x-microsoft-antispam:
 BCL:0;ARA:13230040|376014|1800799024|366016|38070700021|18002099003|56012099003|22082099003;
x-microsoft-antispam-message-info:
 KuSqZsJ+f1EKdBwcrhFOlPy+YE9hUfLX+wG7xEEDzO5dl6dI3U6HmiHbNKsQFiLBGm9wzNJH/2xyr7wbQp0x1FAGXRp9eww9hH27Li+OirJyoVoAPUpzNBcGyzKWJXSz41GA9QHLBQlS1HQGB3d+AdDASCoPO0XqIdkcbSZ5o2x+Dm6ppsY6l7G5dHaQ1koqPzwRojOaHSdDftkq4kPSemn4RxAXZgQSOwS7BDsh8lKK/W1vKAqyrcnXOKFs7QhfO/bKqxkOmtPNWxH9WL+ceJ/M5DFM9xIdQUXthr73QgvZPwwztSv9MojuzjIuydWsSa0sOR1O8BCvF8AjIoc0bp6mWqoBYsIVBQj8nnArkmpvvbTioRinNhPaiuFwHf8ujgsxOAoaZ7BYVgznF9bWw01ZDyDCC+Ad65GfTdqP5kuPUdhEkBaB/kp+S9RU4t1D9dVIyne0+hnLyNxEF0WCAb8Q3ImvECP+GQ7xbvrqLKvSnlqQL53gzWVQW1t4tW3ah+PkoMwev7YdoXgT0+uTqj00qPZA2VH9spktVrUqhCNA65fN4p2RS9BBqV4shUdM0ypYdlAs+X7sos4Nb3Zf/gx44FjaBg0BiV+HA5o0QR62ASriMx9L1Zk71z61ZNIDyoQZEKQueN5Y5ew/LBy8QQIkB5iPv4ryqK9hIQkHjXFSg3rxe0/SrHfG9T+lTiigXBd2PuLrHnAtxCMlIpPCOW21MLthCTWGfQl4gHfzWqmCNmjORhwbNDL5pE+0PxN/wi3XtNmDwOJmuTeocmIyIzpAe374GZ6UfKsgKj4/Al8=
x-forefront-antispam-report:
 CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:DM4PR12MB8451.namprd12.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(376014)(1800799024)(366016)(38070700021)(18002099003)(56012099003)(22082099003);DIR:OUT;SFP:1101;
x-ms-exchange-antispam-messagedata-chunkcount: 1
x-ms-exchange-antispam-messagedata-0:
 =?utf-8?B?eVV3ekdKSFROTHBOQzA1ejFLRFRLbGhJeVI3clk5M1pjWmJjbWZKRytQVCtt?=
 =?utf-8?B?ZUpBc3NQWGFqNG0vYXROUjRlclliWi9vZVlyQVJPakFiS1hZNWZUT0hXelJ4?=
 =?utf-8?B?MUx5VUM4eEZnSjBVdUY2M2FvMVpxSWM2eFkvODhVK2I5Zzhtc2QxRVhIMVVh?=
 =?utf-8?B?dHpqRXVXTk9lZmkxa2ZmMTJSRTF5bzNyNWliUlFKMjhrRHZEVjVULzlLQ1c3?=
 =?utf-8?B?SCtkSjNveFl4RFZvVHUzeWhoVmwwVS9ON0NIdVlNTU41WnMreEVWWnM0cjEr?=
 =?utf-8?B?SnE5ZllmRHZOMVZqdGxuOThzdXdoaC9ZS0JGeWpQejFTZTJBdko1TjUyd2FS?=
 =?utf-8?B?V1psSXdNZEZ1YUV2VGMwUW5GdHAzSlZvcW0wb2RXU1MwMzhvSDVob2I5WkZ6?=
 =?utf-8?B?ZkpzV2RyZGxBdDlVNEtsNDF3QlZ3WDllelViWmEvN1RKVm14T2w2RFdTVFRz?=
 =?utf-8?B?QTlxMXJWbCtaclEvNFpmV0lsTkdBa3dkU0oreGlDVjRzemV1Z01RRURvaGNl?=
 =?utf-8?B?TnNnUkIycWFWN1ZYNnhCRkZOYzd2Y3l6aUozWmdvRFhlcVhISVArNnZqcndT?=
 =?utf-8?B?RzN2YUFkSk9CQ1pjN1VsU28vREkxeHpLODRnRnJuZkZNa1Vac2NwUkRwRmt6?=
 =?utf-8?B?VkRBY1RJWmZ5L2ZzY3M2YU1vU2RRVDJqdG8wYjNDODh4UEkvNW5TNVhjaUhM?=
 =?utf-8?B?NTRtY2hZOUhhUmNxZGdVYW43VGNSc203ZVhPenNwbml3N3VPTnJPTXJxRllR?=
 =?utf-8?B?bXp6QUFNZ3RzYS94bklkSVdGZ2JEU1VwVmxTZmFoNUxsN1Q0d1kyNncrL3Jr?=
 =?utf-8?B?NkVYeWhQLytXOUlFbmxoRUlvS3IwbEZTeUVvelZwb093ZFVMVlcxQ3gzQ3ps?=
 =?utf-8?B?d3BpQXNkaXVWTERwVXY0NXB1OFE5YVFPRWkrakY4YTNMbmJTbkUxc0l0bFpT?=
 =?utf-8?B?SWZMaDN6YVVDK3R4aVU0SHpkN3A0QkZjbDI3Uzg4TW10RTBJM3hmR2hUdDUw?=
 =?utf-8?B?OWZYblh6dkNhbDdkM2VuYnRhVkgxR1NIRFpkMVF1RmFwZ1A5bUNBajYxSXV0?=
 =?utf-8?B?MDN6cFVvMnFBRWFuYzMxc0VyNzlXU2lCTEZ6SkNBYnB6eFhzSzZ2WUVab1Vj?=
 =?utf-8?B?YnlxTXFaSFM1ckZKQ0FqYU05MjN3ZjhqK2M5RXExV0U4R2t2cUdHZkFkZ1BW?=
 =?utf-8?B?T1BzTnM3VnJKaEE5ZFI4NTA1S01kZzd0YTBrUDZYb0RHSXFOV1UvMUIrejVD?=
 =?utf-8?B?Z3IzazN3RGZCaWFQbE1BOThZYnR6QS9WK29KYTVKZkVFRkJFRzB1YTV0aWdU?=
 =?utf-8?B?aUlXbWRzS1hWL0lBRXA1SjNXR0hRai83bXFQZlZKN1llWUlVT1dDVUphblov?=
 =?utf-8?B?dWEyZDlxSHRBTlNRZlhsQXp5K1ZmNkZvTWlqdkdKVC9FQmNRaUJrNGZ3emd3?=
 =?utf-8?B?QUZ0ak5qc21aTklxVytFUEsyeVgrbUZUSHV1MmZUcFlvMFd2TktuSDlXaVp0?=
 =?utf-8?B?Vy9IcnFaQlowbU9PVFVQUkFWVnN1ODlNVG9TTXZsN3h2TDArM0hDYURTSkF5?=
 =?utf-8?B?TmZsRHk4Z0laMEJlb2MzM2x0MDRCeEF4NjRnSnZWM0RmOXY2enphdC9sU0Rw?=
 =?utf-8?B?UTdjdEcxcHkwSU1NY0ZrTTZHQW1wZS9rU0wzbktsS2NFOU1yS3VqcmV1dzBx?=
 =?utf-8?B?RDdVdzlpdS94UEpYY2hNZzRFSUNRS1UxYXdMNHpBcG1scGhpZENKM1ZUc0ZN?=
 =?utf-8?B?NlhFamZrUGk5c29CdHF1L21KelFIdXpQdCtYVVh4aXF4ZU5PZ0pFS3c0UC9D?=
 =?utf-8?B?OEhrMnAyeWRsMU4vUHpITnpSdXZweUpqdEd2ZXhmSjJ3MndHOTlyVUc0akkr?=
 =?utf-8?B?NTF2ZU4zVmIzd1l5ZkNERkdMZDdJWUM2U2Yva21IWjQ4VDdNN2l6RVRZbGdt?=
 =?utf-8?B?U3JWMWdiR3VUbG03N2hwc1RPWVlkSDh1Qis5QlUxckNLdmFqWlo4Q1pCNGRr?=
 =?utf-8?B?VlpiZEFjZUhuNHF3eEZGZDZOb3hrWWYwNzkwbXFtRWROOFNsTFVWa3hCQXVN?=
 =?utf-8?B?NFdCbUUzMUpoei8zaVFLSzNCeFlJSlRqTTZPdVNhMHlCaWNJYy9LTVh0UW9i?=
 =?utf-8?B?T3pmdk1ERkxLbHJFdHRQRWtxaVpYZWRhdEJxbDJZcWozbDhiL3pnU2RZcVBq?=
 =?utf-8?B?b3JGeHQ0aUV3d0VtdG1kQlNqSDAwODBELzA4eFZGdE1TNUZaTVczYmpxeVpT?=
 =?utf-8?B?OXVpSXN1QWVoMVZpcmxINmFxMGswUTZJYkU0WXVvUkFiL1U5UFVGZ2dDS2Ex?=
 =?utf-8?Q?hLPJeeA63WtW9kK809?=
Content-Type: text/plain; charset="utf-8"
Content-Transfer-Encoding: base64
MIME-Version: 1.0
X-OriginatorOrg: amd.com
X-MS-Exchange-CrossTenant-AuthAs: Internal
X-MS-Exchange-CrossTenant-AuthSource: DM4PR12MB8451.namprd12.prod.outlook.com
X-MS-Exchange-CrossTenant-Network-Message-Id: c2689964-6f62-4303-8b40-08de8fc11dd0
X-MS-Exchange-CrossTenant-originalarrivaltime: 01 Apr 2026 07:34:32.4661
 (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: GfNuZ/LZj+tkVaTmOFnK6PUym/Nu+4LayDw0wR8IB9kzXbCd3/BrKhceGLYfnoSIoXNH30ZMlFPLa5dapwWKdg==
X-MS-Exchange-Transport-CrossTenantHeadersStamped: BY5PR12MB4243
X-purgate-ID: tlsNG-c201ff/1775028878-2229B488-3C6C4358/0/0
X-purgate-type: clean
X-purgate-size: 3740

W1B1YmxpY10NCg0KSGksDQoNCj4gLS0tLS1PcmlnaW5hbCBNZXNzYWdlLS0tLS0NCj4gRnJvbTog
SmFuIEJldWxpY2ggPGpiZXVsaWNoQHN1c2UuY29tPg0KPiBTZW50OiBNb25kYXksIE1hcmNoIDMw
LCAyMDI2IDk6NDkgUE0NCj4gVG86IFBlbm55LCBaaGVuZyA8cGVubnkuemhlbmdAYW1kLmNvbT4N
Cj4gQ2M6IEh1YW5nLCBSYXkgPFJheS5IdWFuZ0BhbWQuY29tPjsgU3RlZmFubyBTdGFiZWxsaW5p
DQo+IDxzc3RhYmVsbGluaUBrZXJuZWwub3JnPjsgSnVsaWVuIEdyYWxsIDxqdWxpZW5AeGVuLm9y
Zz47IEJlcnRyYW5kIE1hcnF1aXMNCj4gPGJlcnRyYW5kLm1hcnF1aXNAYXJtLmNvbT47IE9yemVs
LCBNaWNoYWwgPE1pY2hhbC5PcnplbEBhbWQuY29tPjsgVm9sb2R5bXlyDQo+IEJhYmNodWsgPFZv
bG9keW15cl9CYWJjaHVrQGVwYW0uY29tPjsgeGVuLWRldmVsQGxpc3RzLnhlbnByb2plY3Qub3Jn
Ow0KPiBHYXJjaWEgVmFsbGVqbywgQWxlamFuZHJvIDxBbGVqYW5kcm8uR2FyY2lhVmFsbGVqb0Bh
bWQuY29tPg0KPiBTdWJqZWN0OiBSZTogW1BBVENIIHYxIDEvM10geGVuL2FybTogZ2VuZXJhbGl6
ZSBwZXItcGFnZSBHRk4gc3RvcmFnZSBiZXlvbmQNCj4geGVuaGVhcCBwYWdlcw0KPg0KPiBPbiAy
Ny4wMy4yMDI2IDA4OjUwLCBQZW5ueSBaaGVuZyB3cm90ZToNCj4gPiBBcyBwcmVwYXJhdGlvbiBm
b3IgZml4aW5nIG1mbl90b19nZm4oKSBvbiBBUk0sIHdlIGV4dGVuZCB0aGUgZXhpc3RpbmcNCj4g
PiBHRk4gZmllbGQgaW4gcGFnZV9pbmZvJ3MgdHlwZV9pbmZvIHRvIGJlIHVzYWJsZSBmb3Igbm90
IG9ubHkgeGVuaGVhcCBvbmVzLg0KPiA+IEFub3RoZXIgdXNhZ2Ugd2lsbCBiZSBpbnRyb2R1Y2Vk
IGxhdGVyIGZvciBzdG9sZW4gcGFnZXMgaW4gbWVtb3J5IGV4Y2hhZ2luZy4NCj4gPg0KPiA+IElu
dHJvZHVjZSBnZW5lcmFsLXB1cnBvc2UgcGFnZV9nZXRfZ2ZuKCkgYW5kIHBhZ2Vfc2V0X2dmbigp
IGhlbHBlcnMNCj4gPiB0aGF0IHJlYWQgYW5kIHdyaXRlIHRoZSBHRk4gc3RvcmVkIGluIHR5cGVf
aW5mby4gVGhlIG9sZA0KPiA+IHBhZ2VfZ2V0X3hlbmhlYXBfZ2ZuKCkgYW5kIHBhZ2Vfc2V0X3hl
bmhlYXBfZ2ZuKCkgYXJlIHJldGFpbmVkIGFzIHRoaW4NCj4gPiB3cmFwcGVycyB3aXRoIHRoZWly
IHhlbmhlYXAgQVNTRVJUcywgc28gYWxsIGN1cnJlbnQgY2FsbGVycyByZW1haW4gdW5jaGFuZ2Vk
Lg0KPg0KPiBXaHkgd2FzIHRoaXMgR0ZOIHNldHRpbmcgbGltaXRlZCB0byBYZW5oZWFwIHBhZ2Vz
IGJhY2sgYXQgdGhlIHRpbWU/IERlcGVuZGluZyBvbg0KPiB0aGUgcmVhc29ucywgcmV0YWluaW5n
IHRoZSBvbGQgYWNjZXNzb3JzIG1heSBvciBtYXkgbm90IGJlIGEgZ29vZCBpZGVhLg0KPg0KDQpU
aGUgb25seSBjYWxsIHNpdGUgaXMgdG8gc2V0IHNoYXJlZF9pbmZvIGdmbi4gSSBhc3N1bWVkIEdG
TiBzZXR0aW5nIGNvdWxkIGJlIHVuaWZvcm1seSBhdmFpbGFibGUuDQpGV0lULCB0aGUgb25seSBs
aW1pdGF0aW9uIGlzIHRoYXQgaXQgc2hhbGwgbm90IGJlIGFwcGxpZWQgdG8gc2hhcmVkIHBhZ2Vz
LiBJbiBhcm0sIEkgdGhpbmsgaXQncyBzdGF0aWMgc2hhcmVkIG1lbW9yeS4NCg0KPiA+IEFsc28g
aW50cm9kdWNlIFBHVF9JTlZBTElEX0dGTiBhcyB0aGUgZ2VuZXJhbCBzZW50aW5lbCwgd2l0aA0K
PiA+IFBHVF9JTlZBTElEX1hFTkhFQVBfR0ZOIGFsaWFzZWQgdG8gaXQgZm9yIGJhY2t3YXJkIGNv
bXBhdGliaWxpdHkuDQo+DQo+IFRoaXMgSSB2aWV3IGFzIHVubmVjZXNzYXJ5LCBpZiBub3QgY29u
ZnVzaW5nLg0KPg0KPiA+IC0tLSBhL3hlbi9hcmNoL2FybS9pbmNsdWRlL2FzbS9tbS5oDQo+ID4g
KysrIGIveGVuL2FyY2gvYXJtL2luY2x1ZGUvYXNtL21tLmgNCj4gPiBAQCAtMTEzLDE4ICsxMTMs
MjEgQEAgc3RydWN0IHBhZ2VfaW5mbw0KPiA+ICAjZGVmaW5lIFBHVF9jb3VudF9tYXNrICAgIFBH
X21hc2soMywgMykNCj4gPg0KPiA+ICAvKg0KPiA+IC0gKiBTdG9yZWQgaW4gYml0cyBbMjg6MF0g
KGFybTMyKSBvciBbNjA6MF0gKGFybTY0KSBHRk4gaWYgcGFnZSBpcyB4ZW5oZWFwIHBhZ2UuDQo+
ID4gKyAqIFN0b3JlZCBpbiBiaXRzIFsyODowXSAoYXJtMzIpIG9yIFs2MDowXSAoYXJtNjQpIEdG
TiBpZiBwYWdlIGlzDQo+ID4gKyB4ZW5oZWFwIHBhZ2UsDQo+ID4gKyAqIG9yIHN0b2xlbiBvbmVz
IGluIG1lbW9yeSBleGNoYW5naW5nLg0KPiA+ICAgKi8NCj4NCj4gRG9lcyB0aGUgcHVycG9zZSBy
ZWFsbHkgbmVlZCBsaW1pdGluZyBsaWtlIHRoaXM/IElmIHRoZSBmaWVsZCBjb3ZlcmVkIGJ5IFBH
VF9nZm5fKiBpcw0KPiB1bmlmb3JtbHkgYXZhaWxhYmxlIChzZWUgdGhlIHF1ZXN0aW9uIGFib3Zl
KSwgSSBkb24ndCBzZWUgd2h5IGEgbmV3IGNvbnN0cmFpbnQgd291bGQNCj4gbmVlZCBzcGVsbGlu
ZyBvdXQuIElmIGl0J3Mgbm90IHVuaWZvcm1seSBhdmFpbGFibGUsIHRoZW4gbGlrZWx5IHRoZSBk
ZXNjcmlwdGlvbiBuZWVkcw0KPiBleHBhbmRpbmcgYXMgdG8gd2hlbiB0aGUgbmV3IGFjY2Vzc29y
cyBhcmUgb2theSB0byB1c2UuIElmIHVuaWZvcm1seSBhdmFpbGFibGUsDQo+IHdoYXQgbWF5IHdh
bnQgc3BlbGxpbmcgb3V0IGlzIHVuZGVyIHdoYXQgY29uZGl0aW9ucyBvbmUgY2FuIGV4cGVjdCB0
aGUgZmllbGQgdG8gYmUNCj4gcHJvcGVybHkgc2V0ICh1bnRpbCBzdWNoIHRpbWUgd2hlcmUgaXQn
cyBzZXQgY29ycmVjdGx5IG9uIGFsbCBndWVzdC1vd25lZCBwYWdlcykuDQo+DQo+IEphbg0K


From xen-devel-bounces@lists.xenproject.org Wed Apr 01 08:00:01 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 01 Apr 2026 08:00:01 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1269835.1558719 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1w7qUT-0000ht-Vj; Wed, 01 Apr 2026 07:59:53 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1269835.1558719; Wed, 01 Apr 2026 07:59: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 1w7qUT-0000hm-So; Wed, 01 Apr 2026 07:59:53 +0000
Received: by outflank-mailman (input) for mailman id 1269835;
 Wed, 01 Apr 2026 07:59: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 1w7qUS-0000hg-BY
 for xen-devel@lists.xenproject.org; Wed, 01 Apr 2026 07:59:52 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1w7qUP-000SDw-Kz
 for xen-devel@lists.xenproject.org; Wed, 01 Apr 2026 09:59:51 +0200
Received: from [10.42.69.7] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <Mykyta_Poturai@epam.com>)
 id 69ccd072-5cb7-0a2a0a5109dd-0a2a45079516-32
 for <xen-devel@lists.xenproject.org>; Wed, 01 Apr 2026 09:59:50 +0200
Received: from [40.107.162.82]
 (helo=PA4PR04CU001.outbound.protection.outlook.com)
 by tlsNG-ef75cf.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.0)
 (envelope-from <Mykyta_Poturai@epam.com>)
 id 69ccd076-ba2d-0a2a45070019-286ba252a3cf-3
 for <xen-devel@lists.xenproject.org>; Wed, 01 Apr 2026 09:59:50 +0200
Received: from PAVPR03MB10102.eurprd03.prod.outlook.com
 (2603:10a6:102:30d::12) by AM9PR03MB6708.eurprd03.prod.outlook.com
 (2603:10a6:20b:2da::22) with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9769.17; Wed, 1 Apr
 2026 07:59:49 +0000
Received: from PAVPR03MB10102.eurprd03.prod.outlook.com
 ([fe80::b8c6:f37a:987a:beb]) by PAVPR03MB10102.eurprd03.prod.outlook.com
 ([fe80::b8c6:f37a:987a:beb%5]) with mapi id 15.20.9745.027; Wed, 1 Apr 2026
 07:59: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=W6JJQgJPG4zsK1J45oOewiK+yGd18At8B4LKaXVAFZopkLqaqX6WjzeeU7tKKozciHsooz65MGBr5OLAoveyBHp7uDRyDzxzpmpfv0ZZmDNBVCTf89r5LWgj50xMSYyn4fEdoxDyXBIxc5sPLEEsTZF4UztNeTjv5ptNtO23prsoin+TXiyEwCYkxj5wyNj9N/NhJ+12rTq6KDtCnMchTzTdBdHI3M7Ig1cjQNodA4UAtwVKFae/59xFoPEpg+qAGSrpr1XE0oY2sUMEso0gCFGBu4FAXS4HkwaLC9TH4CJXYMOgPC7uUK1//O+ju9J0dZDiv2ugEfbtCzu+vLAfSA==
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com;
 s=arcselector10001;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1;
 bh=uyccBUdGtR+KGpMCaO5EyuEWNvfC79fGikTxNBZSgG0=;
 b=KbDdn8UTJcxny3lsPVAFgZX+p3XAKgL+qOe8maHvJwx4XwUHAtAywu3+pVj67auhKCwdz2/pJ1TH0um4Hw2zVIr+hzF+8wgpx74r886tgQPnZq3nwy1Xtk1m98JccHrqc9r/0IEpxQpGFATXYvmI3BO+qAXypCr+EHSgG7rB+SzvxG8CC03DxUaqVN1qoQ+6TzFJiXuONL396nW1z2pS//gYwj4oAephRNS20xN1t3uU9CHfu+omaSkkvMojr2hN1d31RPImkRowHkl3C2z97dXVa5OrJmzRbQpHZwelglly7Bu+R+BmDZfHLSs1wiMxZmlDNH/542q6dX44Vgiidw==
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=uyccBUdGtR+KGpMCaO5EyuEWNvfC79fGikTxNBZSgG0=;
 b=CLu9OHpAMTpGodDGEoJAodCObIjnze6Zsd6unwHI7D9oK5wTB/2M/5ISd81gW+QbrbtHKg3C0GE14Fp0HSmfMQKNl3bfOhxmujzJ9V502Gmab2kJKdk5k3qnzzFehV6hkUb0y73/tzw7ewxhy3qUN57EU5IGOyndAqslK7JrzGjshv7Vsh6SYQlaKrb11IjeqUvkGdyJIDeSCotCpC+S9M3D05V8Ii3wFzOFNA+alIfZdW1O/XPs2BEG2MsP7FlGBdcxgeWhgKM8ZZ0n6ZAaBJw1HDdqNmpX7QdcTvK3gHsp7EJPuwJ6V9xHMczZvAEuDDyP46Jfz6DUVK96SHX3VQ==
From: Mykyta Poturai <Mykyta_Poturai@epam.com>
To: Jan Beulich <jbeulich@suse.com>
CC: =?utf-8?B?Um9nZXIgUGF1IE1vbm7DqQ==?= <roger.pau@citrix.com>, Stewart
 Hildebrand <stewart.hildebrand@amd.com>, "xen-devel@lists.xenproject.org"
	<xen-devel@lists.xenproject.org>
Subject: Re: [PATCH v2 4/8] vpci: add a wait operation to the vpci vcpu
 pending actions
Thread-Topic: [PATCH v2 4/8] vpci: add a wait operation to the vpci vcpu
 pending actions
Thread-Index: AQHcr7UNjpbdOXJQP0qdir/zrd85obXI3WYAgAEeNIA=
Date: Wed, 1 Apr 2026 07:59:48 +0000
Message-ID: <0275be7d-d1d9-47ee-bec2-bfbbb90b4bae@epam.com>
References: <cover.1772806036.git.mykyta_poturai@epam.com>
 <ec941fbf4f8bde23fc3867e47f5ada028f8003aa.1772806036.git.mykyta_poturai@epam.com>
 <f546ae19-2107-469e-847b-7a4cde2c95fd@suse.com>
In-Reply-To: <f546ae19-2107-469e-847b-7a4cde2c95fd@suse.com>
Accept-Language: en-US
Content-Language: en-US
X-MS-Has-Attach:
X-MS-TNEF-Correlator:
authentication-results: dkim=none (message not signed)
 header.d=none;dmarc=none action=none header.from=epam.com;
x-ms-publictraffictype: Email
x-ms-traffictypediagnostic: PAVPR03MB10102:EE_|AM9PR03MB6708:EE_
x-ms-office365-filtering-correlation-id: f321d213-c8c6-419e-b94d-08de8fc4a58d
x-ms-exchange-senderadcheck: 1
x-ms-exchange-antispam-relay: 0
x-microsoft-antispam:
 BCL:0;ARA:13230040|1800799024|366016|376014|38070700021|18002099003|22082099003|56012099003;
x-microsoft-antispam-message-info:
 tpEsNu9rU4dbFO19YwnF8TpvMgDjr32iHkQqax6g1RqKQ0gsu/S4n17ykisFk6uk4TwwhIzoTEbpSp9A6NPSTqqo15/8uS/ciSq6gyIBRhCEVH0RVmWvOLOTyVzgKUR/io2+pYihAE6KPtAqCHDv7mxlHwTXye+UNbWG+NujyBkf7T0yOTIW0y2/r7CVRNsA4o2ChYSbjVCx3ge09OM5GE6lSsAsuTmK0/tHEw0C38f4I2v0CVXMW3nI7TjKDcBEkaP8E4ItGMEhtKgPVf6zgOV+qpwhdXaQ4dbNltrrQ4TGlXcSE2lvFFoqpJ3pNVkPHl7ArOFC3YEUwxsXbXtDtpQ/lEhhKzrj6x/eYDE1Dbo61YSVA06+jotqzZu98O8muavg1p7smZ7VGC+8xX0O25x6d7dRDy7x0wlNyXD2XRFDSk20fzpeZGY6niN6nu3xUrYgmQKgaaja80AEjsARXgf63BudOX65/gEqYi4uaMFQZSdMYbPWu9vttEmCtUHs+AUv9bj4b8cfu41z5dNdf1EOiFILYtxq6yo2V8Mp2QYpg7AIDEEyNA9KLD3H2i87k7WQer9upAAigBwNq6XXeL0J5rAFeM1OktH+M9v9IjCNGRi51CWkjBAjNhgC3S+09WE6wi9agj/X8N01sQqZJaIf/nzfSBzg/STnc5Id2ppVzRI2kptbxEO+aYpwziE8wi7uvCkSCukUzhUQuDj9Yd/cN3TZOkpKpkFNyZ6plWq/FGKFpP1ZxZsfJZHj1XR5nIOAzTSrHjIiKy5Tu+4AIN+h9IoJpdEjjC8hwDhIxvU=
x-forefront-antispam-report:
 CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:PAVPR03MB10102.eurprd03.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(1800799024)(366016)(376014)(38070700021)(18002099003)(22082099003)(56012099003);DIR:OUT;SFP:1102;
x-ms-exchange-antispam-messagedata-chunkcount: 1
x-ms-exchange-antispam-messagedata-0:
 =?utf-8?B?eW5wdy9xUUZPUkJZVjh6ajQ4VGI4YVNiWE9OS3FIb1l0SDdMN2ZNOGRNamtx?=
 =?utf-8?B?bkE2N2o5YStOQ0Y5Um5QNWErK3QxekFDVGVNMWEvb0ZyNlpIc3JrSEwzSmZ4?=
 =?utf-8?B?UEVJQUNVRXB4UkVyU3VMNFVMWEdZM1dPV3lrbyt3RktEeEFMZTZoajRRb0h2?=
 =?utf-8?B?L0V6VWVTUWFUYkJhV041Zmd5T0VwZCs4SzRaVnV4ZWFFWG5hQ0JQQ1I4b2hj?=
 =?utf-8?B?MWZtVGVJNGowc2Y3SU5LTkxsR25sQTBybFRFbkhaU280a09oK0VzWnRPWnFT?=
 =?utf-8?B?ZnVQTzFWSmZqV1RHR3hVYnhtbE5nTFlUSlAweVVKeWxqWFR4ZEZJWjBSZ08y?=
 =?utf-8?B?Zzl5cXNnK1draVJrNGp1U3lkYlRKR3BRY1g5ZytUNDNEZUgzMyt1a0ZCOEhY?=
 =?utf-8?B?aFJvNzJTZTNJLzhod2NsZWhxMTdrbys2ZzF2aXhXdG4zanlwaEJaSnF4c3Ay?=
 =?utf-8?B?MUY3THFPYzJ4VS9lRldyR0ZUMkludjU1T0tRemJMOWJ4OUpkODJrclFPanI2?=
 =?utf-8?B?bm9ZZldaajRHSTF1eVBHbEtNdGREUE1vSnp1NEVLeTNtbTdkWi9HclJPRWJt?=
 =?utf-8?B?RWlIbndhSUFFTlQ5RVNWRHdZRkFPS2tqTUVWUTlUU2s1L0MrRkY3bkxiNUl6?=
 =?utf-8?B?WklySW9RR1QyaXQ1akhnKzh0a0s5dlFwWlRtREFCVUYyci9OcWIxc0E0d1M4?=
 =?utf-8?B?N0RjVmN3L3Qreko2ZWF0NnBzQ0lDMDFnRTYxSElmdkcvQWZGckNtNkxQckhv?=
 =?utf-8?B?UWx0Z1dDN0NNd1RudkduZ2xoZWMyWnA2bDVzaHJ2cVF5U2UxYXdjSXlia3B4?=
 =?utf-8?B?L3ZYcUhKM1hFUzdQb203YVkzb1VwQ21lYnR4RkE3V0p1Y2tjblJVNy9WNFJX?=
 =?utf-8?B?UzBpWEtoNnJwV1ZubmV6b0EySUZBL3YzYnM1L2NKYXVLVHVCeXVDK2xhYTlt?=
 =?utf-8?B?MlFPSkJweGkyZGRaajZKRnhEcEx6SkRDaWg2RnNMOHpQQUR6RUZWTXhFMTNQ?=
 =?utf-8?B?RTBEN0dWR3NHRWZrWGxFQ1l3RC95WWpNNVNEejREdkF0NDlwMzd3UFBDVFAv?=
 =?utf-8?B?c0pRdFcrOEJGMlFvTjh2eXBNVnN3L29mdzYzRXQ2WTNEZWM0bklvc2hZUWRW?=
 =?utf-8?B?cWVCQlI0czBnQWVBemMvWEM4V28wbXpHNEM2MzFIUzBZWDR1TEVwa3pTb1R5?=
 =?utf-8?B?cGhaaVJ5ZHExaG9BbERyZmtoUFhkRWFNVUdiRmVmWmhoTnN5UzRTVkdid1Yr?=
 =?utf-8?B?UGExWXlBZHo1ekluVGgxeUlmTDMxTmVWZ0g5VGtJMUJGcmF1VGJNVHV1MUJE?=
 =?utf-8?B?Y0tDY2x0Q3dvay9LaDF6RkxrM3JkZ3VPTnlOcGFrYnJsK2JObXRtdFlGVE1I?=
 =?utf-8?B?MlJJMXFCR3EyZ1lwNEhvY29nQm85aEptY3EvVGpaRWMzOXVNTUt3eHhMS2Mw?=
 =?utf-8?B?TExjcXFRcFNiT1UvR2tSOW5kbG96aVJQeXhaNXhsQy9JT2QrRXlzbWZHc0wr?=
 =?utf-8?B?YjVyQ1BsOXpiM2J5OHc4WnVmLzVTdU1xbWdSREl1UTJ0YzhNQjh3ZXUzaE5p?=
 =?utf-8?B?UHlsTGVlR3FMQzZxMkJnVGVOK1JCYno1MGhHY1VXQjVCN3pkelRwamFDMGIw?=
 =?utf-8?B?QXlaait4b3p4dVlPZTdxbU52bVBGYyszWkkvWm9tN1E1UjBhdnRRYlZDanJt?=
 =?utf-8?B?eGs0VnpOMXpTMHl4aW9Va0ljRjZLdHZoelZFZkZ0TXc2M0NRSTNPS2o3U0wy?=
 =?utf-8?B?V3dXL1NlY0syMVR3UkxIbXRqZ2tZK0dpNDdoWVlnaUoxY1VmdEJVL3ozbUhw?=
 =?utf-8?B?YVJ4THpOQmJGOW5BUzRYcStjU0gya3c1U3lxWjFjeHhKcEJWY2VtQnR1WHRI?=
 =?utf-8?B?VXdXVlIvZW1BRittOWRXZTNUU1VjUS8vT0EyZ05yQkYydEh5N0l5NkFYM2J6?=
 =?utf-8?B?R056MXBXY0ljRHFqNzg0ZUF2TDN5VmwyRHRpcHpLWU1XY292c0wwL2dQSFJk?=
 =?utf-8?B?Sm5MaWdkQy83Q3dOWFg3c1k5T0Y5SStaVjJ0MmVYS1lIbUNlUVFXRHBPL2Rs?=
 =?utf-8?B?bVJBLzJjSVJZV29nc21uUVZ0SkNudWVNakhTUnNvRGk2V0s1N3BTNGZNbnZl?=
 =?utf-8?B?bk50d2RwNHJyUDYwR1o1S3lVZUpMSk5oTXdJcWl5b3Ywa3k5eVlRejdGandC?=
 =?utf-8?B?dDd1Q0E4QmFuN3R4dTJEblFqaytsTGVJWXFlZUYxWTJCNnFjdTZJWHhHUUtT?=
 =?utf-8?B?amVRVDVDVHZVbU9GSTBQZ2wvczFDb2dKUi9FY2FFYWNIdEZTeHpXN2lPMFA1?=
 =?utf-8?B?M1NQemozNklOQy9HR2dkbjlhcWh1MnJ2Y0Mrb1pzcHRCTDNlZ1JlNit4bWhK?=
 =?utf-8?Q?JeQPzpkN55G0SE5Y=3D?=
Content-Type: text/plain; charset="utf-8"
Content-ID: <FB676799DF67B44D99588A991BFB5AD5@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: PAVPR03MB10102.eurprd03.prod.outlook.com
X-MS-Exchange-CrossTenant-Network-Message-Id: f321d213-c8c6-419e-b94d-08de8fc4a58d
X-MS-Exchange-CrossTenant-originalarrivaltime: 01 Apr 2026 07:59:48.6973
 (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: 2pITZWJ4qH9UsfVe6fL04elut7JaAPWx/RhXWCIusNAmaR8xyUGljId4qCRiVvHnB4J/9faPoU/MQDsJi9y7rg==
X-MS-Exchange-Transport-CrossTenantHeadersStamped: AM9PR03MB6708
X-purgate-ID: tlsNG-ef75cf/1775030390-10D5F41E-56A00504/0/0
X-purgate-type: clean
X-purgate-size: 9854

T24gMy8zMS8yNiAxNzo1NSwgSmFuIEJldWxpY2ggd3JvdGU6DQo+IE9uIDA5LjAzLjIwMjYgMTI6
MDgsIE15a3l0YSBQb3R1cmFpIHdyb3RlOg0KPj4gLS0tIGEveGVuL2RyaXZlcnMvdnBjaS9oZWFk
ZXIuYw0KPj4gKysrIGIveGVuL2RyaXZlcnMvdnBjaS9oZWFkZXIuYw0KPj4gQEAgLTE3NSw3NiAr
MTc1LDkyIEBAIHN0YXRpYyB2b2lkIG1vZGlmeV9kZWNvZGluZyhjb25zdCBzdHJ1Y3QgcGNpX2Rl
diAqcGRldiwgdWludDE2X3QgY21kLA0KPj4gICANCj4+ICAgYm9vbCB2cGNpX3Byb2Nlc3NfcGVu
ZGluZyhzdHJ1Y3QgdmNwdSAqdikNCj4+ICAgew0KPj4gLSAgICBjb25zdCBzdHJ1Y3QgcGNpX2Rl
diAqcGRldiA9IHYtPnZwY2kucGRldjsNCj4+IC0gICAgc3RydWN0IHZwY2lfaGVhZGVyICpoZWFk
ZXIgPSBOVUxMOw0KPj4gLSAgICB1bnNpZ25lZCBpbnQgaTsNCj4+IC0NCj4+IC0gICAgaWYgKCAh
cGRldiApDQo+PiAtICAgICAgICByZXR1cm4gZmFsc2U7DQo+PiAtDQo+PiAtICAgIHJlYWRfbG9j
aygmdi0+ZG9tYWluLT5wY2lfbG9jayk7DQo+PiAtDQo+PiAtICAgIGlmICggIXBkZXYtPnZwY2kg
fHwgKHYtPmRvbWFpbiAhPSBwZGV2LT5kb21haW4pICkNCj4+ICsgICAgc3dpdGNoICggdi0+dnBj
aS50YXNrICkNCj4+ICAgICAgIHsNCj4+IC0gICAgICAgIHYtPnZwY2kucGRldiA9IE5VTEw7DQo+
PiAtICAgICAgICByZWFkX3VubG9jaygmdi0+ZG9tYWluLT5wY2lfbG9jayk7DQo+PiAtICAgICAg
ICByZXR1cm4gZmFsc2U7DQo+PiAtICAgIH0NCj4+IC0NCj4+IC0gICAgaGVhZGVyID0gJnBkZXYt
PnZwY2ktPmhlYWRlcjsNCj4+IC0gICAgZm9yICggaSA9IDA7IGkgPCBBUlJBWV9TSVpFKGhlYWRl
ci0+YmFycyk7IGkrKyApDQo+PiArICAgIGNhc2UgTU9ESUZZX01FTU9SWToNCj4+ICAgICAgIHsN
Cj4+IC0gICAgICAgIHN0cnVjdCB2cGNpX2JhciAqYmFyID0gJmhlYWRlci0+YmFyc1tpXTsNCj4+
IC0gICAgICAgIHN0cnVjdCByYW5nZXNldCAqbWVtID0gdi0+dnBjaS5iYXJfbWVtW2ldOw0KPj4g
LSAgICAgICAgc3RydWN0IG1hcF9kYXRhIGRhdGEgPSB7DQo+PiAtICAgICAgICAgICAgLmQgPSB2
LT5kb21haW4sDQo+PiAtICAgICAgICAgICAgLm1hcCA9IHYtPnZwY2kuY21kICYgUENJX0NPTU1B
TkRfTUVNT1JZLA0KPj4gLSAgICAgICAgICAgIC5iYXIgPSBiYXIsDQo+PiAtICAgICAgICB9Ow0K
Pj4gLSAgICAgICAgaW50IHJjOw0KPj4gKyAgICAgICAgY29uc3Qgc3RydWN0IHBjaV9kZXYgKnBk
ZXYgPSB2LT52cGNpLm1lbW9yeS5wZGV2Ow0KPj4gKyAgICAgICAgc3RydWN0IHZwY2lfaGVhZGVy
ICpoZWFkZXIgPSBOVUxMOw0KPj4gKyAgICAgICAgdW5zaWduZWQgaW50IGk7DQo+PiAgIA0KPj4g
LSAgICAgICAgaWYgKCByYW5nZXNldF9pc19lbXB0eShtZW0pICkNCj4+IC0gICAgICAgICAgICBj
b250aW51ZTsNCj4+ICsgICAgICAgIGlmICggIXBkZXYgKQ0KPj4gKyAgICAgICAgICAgIGJyZWFr
Ow0KPj4gICANCj4+IC0gICAgICAgIHJjID0gcmFuZ2VzZXRfY29uc3VtZV9yYW5nZXMobWVtLCBt
YXBfcmFuZ2UsICZkYXRhKTsNCj4+ICsgICAgICAgIHJlYWRfbG9jaygmdi0+ZG9tYWluLT5wY2lf
bG9jayk7DQo+PiAgIA0KPj4gLSAgICAgICAgaWYgKCByYyA9PSAtRVJFU1RBUlQgKQ0KPj4gKyAg
ICAgICAgaWYgKCAhcGRldi0+dnBjaSB8fCAodi0+ZG9tYWluICE9IHBkZXYtPmRvbWFpbikgKQ0K
Pj4gICAgICAgICAgIHsNCj4+ICsgICAgICAgICAgICB2LT52cGNpLm1lbW9yeS5wZGV2ID0gTlVM
TDsNCj4+ICAgICAgICAgICAgICAgcmVhZF91bmxvY2soJnYtPmRvbWFpbi0+cGNpX2xvY2spOw0K
Pj4gLSAgICAgICAgICAgIHJldHVybiB0cnVlOw0KPj4gKyAgICAgICAgICAgIGJyZWFrOw0KPj4g
ICAgICAgICAgIH0NCj4+ICAgDQo+PiAtICAgICAgICBpZiAoIHJjICkNCj4+ICsgICAgICAgIGhl
YWRlciA9ICZwZGV2LT52cGNpLT5oZWFkZXI7DQo+PiArICAgICAgICBmb3IgKCBpID0gMDsgaSA8
IEFSUkFZX1NJWkUoaGVhZGVyLT5iYXJzKTsgaSsrICkNCj4+ICAgICAgICAgICB7DQo+PiAtICAg
ICAgICAgICAgc3Bpbl9sb2NrKCZwZGV2LT52cGNpLT5sb2NrKTsNCj4+IC0gICAgICAgICAgICAv
KiBEaXNhYmxlIG1lbW9yeSBkZWNvZGluZyB1bmNvbmRpdGlvbmFsbHkgb24gZmFpbHVyZS4gKi8N
Cj4+IC0gICAgICAgICAgICBtb2RpZnlfZGVjb2RpbmcocGRldiwgdi0+dnBjaS5jbWQgJiB+UENJ
X0NPTU1BTkRfTUVNT1JZLA0KPj4gLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZSk7
DQo+PiAtICAgICAgICAgICAgc3Bpbl91bmxvY2soJnBkZXYtPnZwY2ktPmxvY2spOw0KPj4gKyAg
ICAgICAgICAgIHN0cnVjdCB2cGNpX2JhciAqYmFyID0gJmhlYWRlci0+YmFyc1tpXTsNCj4+ICsg
ICAgICAgICAgICBzdHJ1Y3QgcmFuZ2VzZXQgKm1lbSA9IHYtPnZwY2kuYmFyX21lbVtpXTsNCj4+
ICsgICAgICAgICAgICBzdHJ1Y3QgbWFwX2RhdGEgZGF0YSA9IHsNCj4+ICsgICAgICAgICAgICAg
ICAgLmQgPSB2LT5kb21haW4sDQo+PiArICAgICAgICAgICAgICAgIC5tYXAgPSB2LT52cGNpLm1l
bW9yeS5jbWQgJiBQQ0lfQ09NTUFORF9NRU1PUlksDQo+PiArICAgICAgICAgICAgICAgIC5iYXIg
PSBiYXIsDQo+PiArICAgICAgICAgICAgfTsNCj4+ICsgICAgICAgICAgICBpbnQgcmM7DQo+PiAr
DQo+PiArICAgICAgICAgICAgaWYgKCByYW5nZXNldF9pc19lbXB0eShtZW0pICkNCj4+ICsgICAg
ICAgICAgICAgICAgY29udGludWU7DQo+PiAgIA0KPj4gLSAgICAgICAgICAgIC8qIENsZWFuIGFs
bCB0aGUgcmFuZ2VzZXRzICovDQo+PiAtICAgICAgICAgICAgZm9yICggaSA9IDA7IGkgPCBBUlJB
WV9TSVpFKGhlYWRlci0+YmFycyk7IGkrKyApDQo+PiAtICAgICAgICAgICAgICAgIGlmICggIXJh
bmdlc2V0X2lzX2VtcHR5KHYtPnZwY2kuYmFyX21lbVtpXSkgKQ0KPj4gLSAgICAgICAgICAgICAg
ICAgICAgIHJhbmdlc2V0X3B1cmdlKHYtPnZwY2kuYmFyX21lbVtpXSk7DQo+PiArICAgICAgICAg
ICAgcmMgPSByYW5nZXNldF9jb25zdW1lX3JhbmdlcyhtZW0sIG1hcF9yYW5nZSwgJmRhdGEpOw0K
Pj4gICANCj4+IC0gICAgICAgICAgICB2LT52cGNpLnBkZXYgPSBOVUxMOw0KPj4gKyAgICAgICAg
ICAgIGlmICggcmMgPT0gLUVSRVNUQVJUICkNCj4+ICsgICAgICAgICAgICB7DQo+PiArICAgICAg
ICAgICAgICAgIHJlYWRfdW5sb2NrKCZ2LT5kb21haW4tPnBjaV9sb2NrKTsNCj4+ICsgICAgICAg
ICAgICAgICAgcmV0dXJuIHRydWU7DQo+PiArICAgICAgICAgICAgfQ0KPj4gICANCj4+IC0gICAg
ICAgICAgICByZWFkX3VubG9jaygmdi0+ZG9tYWluLT5wY2lfbG9jayk7DQo+PiArICAgICAgICAg
ICAgaWYgKCByYyApDQo+PiArICAgICAgICAgICAgew0KPj4gKyAgICAgICAgICAgICAgICBzcGlu
X2xvY2soJnBkZXYtPnZwY2ktPmxvY2spOw0KPj4gKyAgICAgICAgICAgICAgICAvKiBEaXNhYmxl
IG1lbW9yeSBkZWNvZGluZyB1bmNvbmRpdGlvbmFsbHkgb24gZmFpbHVyZS4gKi8NCj4+ICsgICAg
ICAgICAgICAgICAgbW9kaWZ5X2RlY29kaW5nKHBkZXYsIHYtPnZwY2kubWVtb3J5LmNtZCAmIH5Q
Q0lfQ09NTUFORF9NRU1PUlksDQo+PiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBm
YWxzZSk7DQo+PiArICAgICAgICAgICAgICAgIHNwaW5fdW5sb2NrKCZwZGV2LT52cGNpLT5sb2Nr
KTsNCj4+ICsNCj4+ICsgICAgICAgICAgICAgICAgLyogQ2xlYW4gYWxsIHRoZSByYW5nZXNldHMg
Ki8NCj4+ICsgICAgICAgICAgICAgICAgZm9yICggaSA9IDA7IGkgPCBBUlJBWV9TSVpFKGhlYWRl
ci0+YmFycyk7IGkrKyApDQo+PiArICAgICAgICAgICAgICAgICAgICBpZiAoICFyYW5nZXNldF9p
c19lbXB0eSh2LT52cGNpLmJhcl9tZW1baV0pICkNCj4+ICsgICAgICAgICAgICAgICAgICAgICAg
ICByYW5nZXNldF9wdXJnZSh2LT52cGNpLmJhcl9tZW1baV0pOw0KPj4gKw0KPj4gKyAgICAgICAg
ICAgICAgICB2LT52cGNpLm1lbW9yeS5wZGV2ID0gTlVMTDsNCj4+ICsNCj4+ICsgICAgICAgICAg
ICAgICAgcmVhZF91bmxvY2soJnYtPmRvbWFpbi0+cGNpX2xvY2spOw0KPj4gICANCj4+IC0gICAg
ICAgICAgICBpZiAoICFpc19oYXJkd2FyZV9kb21haW4odi0+ZG9tYWluKSApDQo+PiAtICAgICAg
ICAgICAgICAgIGRvbWFpbl9jcmFzaCh2LT5kb21haW4pOw0KPj4gKyAgICAgICAgICAgICAgICBp
ZiAoICFpc19oYXJkd2FyZV9kb21haW4odi0+ZG9tYWluKSApDQo+PiArICAgICAgICAgICAgICAg
ICAgICBkb21haW5fY3Jhc2godi0+ZG9tYWluKTsNCj4+ICAgDQo+PiAtICAgICAgICAgICAgcmV0
dXJuIGZhbHNlOw0KPj4gKyAgICAgICAgICAgICAgICBicmVhazsNCj4+ICsgICAgICAgICAgICB9
DQo+PiAgICAgICAgICAgfQ0KPj4gLSAgICB9DQo+PiAtICAgIHYtPnZwY2kucGRldiA9IE5VTEw7
DQo+PiArICAgICAgICB2LT52cGNpLm1lbW9yeS5wZGV2ID0gTlVMTDsNCj4+ICAgDQo+PiAtICAg
IHNwaW5fbG9jaygmcGRldi0+dnBjaS0+bG9jayk7DQo+PiAtICAgIG1vZGlmeV9kZWNvZGluZyhw
ZGV2LCB2LT52cGNpLmNtZCwgdi0+dnBjaS5yb21fb25seSk7DQo+PiAtICAgIHNwaW5fdW5sb2Nr
KCZwZGV2LT52cGNpLT5sb2NrKTsNCj4+ICsgICAgICAgIHNwaW5fbG9jaygmcGRldi0+dnBjaS0+
bG9jayk7DQo+PiArICAgICAgICBtb2RpZnlfZGVjb2RpbmcocGRldiwgdi0+dnBjaS5tZW1vcnku
Y21kLCB2LT52cGNpLm1lbW9yeS5yb21fb25seSk7DQo+PiArICAgICAgICBzcGluX3VubG9jaygm
cGRldi0+dnBjaS0+bG9jayk7DQo+PiAgIA0KPj4gLSAgICByZWFkX3VubG9jaygmdi0+ZG9tYWlu
LT5wY2lfbG9jayk7DQo+PiArICAgICAgICByZWFkX3VubG9jaygmdi0+ZG9tYWluLT5wY2lfbG9j
ayk7DQo+PiArDQo+PiArICAgICAgICBicmVhazsNCj4+ICsgICAgfQ0KPj4gKyAgICBjYXNlIFdB
SVQ6DQo+PiArICAgICAgICBpZiAoIE5PVygpIDwgdi0+dnBjaS53YWl0LmVuZCApDQo+PiArICAg
ICAgICAgICAgcmV0dXJuIHRydWU7DQo+PiArICAgICAgICB2LT52cGNpLndhaXQuY2FsbGJhY2so
di0+dnBjaS53YWl0LmRhdGEpOw0KPj4gKyAgICAgICAgYnJlYWs7DQo+IA0KPiBBcyBqdXN0IGlu
ZGljYXRlZCBpbiByZXBseSB0byBwYXRjaCA2LCBidXN5IHdhaXRpbmcgaXNuJ3QgcmVhbGx5IGFj
Y2VwdGFibGUuDQo+IFRoaXMgaXMgZXZlbiBtb3JlIHNvIHdoZW4gdGhlIHdhaXRpbmcgZXhjZWVk
cyB0aGUgdHlwaWNhbCBsZW5ndGggb2YgYQ0KPiBzY2hlZHVsaW5nIHRpbWVzbGljZS4NCj4gDQo+
IEluIHRoYXQgb3RoZXIgcmVwbHkgSSBzYWlkIHRvIHB1dCB0aGUgdkNQVSB0byBzbGVlcCwgYnV0
IHlvdSBuZWVkIHRvIGJlIGNhcmVmdWwNCj4gdGhlcmUgdG9vOiBUaGUgZG9tYWluIG1heSBub3Qg
ZXhwZWN0IGl0cyB2Q1BVIHRvIG5vdCBtYWtlIGFueSBwcm9ncmVzcyBmb3Igc3VjaA0KPiBhbiBl
eHRlbmRlZCBwZXJpb2Qgb2YgdGltZS4gVGhpcyBtYXkgbmVlZCBkb2luZyBlbnRpcmVseSBkaWZm
ZXJlbnRseTogT25jZSB0aGUNCj4gY29tbWFuZCByZWdpc3RlciB3YXMgd3JpdHRlbiwgeW91IG1h
eSB3YW50IHRvIHJlY29yZCB0aGUgdGltZSBhZnRlciB3aGljaA0KPiBhY2Nlc3NlcyB0byB0aGUg
VkYgcmVnaXN0ZXJzIGFyZSBwZXJtaXR0ZWQuIEVhcmxpZXIgYWNjZXNzZXMgd291bGQgc2ltcGx5
IGJlDQo+IHRlcm1pbmF0ZWQuIFlvdSBtYXkgc3RpbGwgYWRkaXRpb25hbGx5IG5lZWQgYSB0aW1l
ciwgaW4gb3JkZXIgdG8ga2ljayBvZmYgQkFSDQo+IG1hcHBpbmcgYWZ0ZXIgdGhhdCB0aW1lLiAo
WWV0IGJldHRlciB3b3VsZCAgYmUgaWYgdGhlIEJBUiBtYXBwaW5nIGNvdWxkIGJlDQo+IGRvbmUg
ZHVyaW5nIHRob3NlIDEwMG1zLiBBZnRlciBhbGwgdGhhdCBtYXkgYmUgYSByZWFzb24gd2h5IHRo
aXMgbG9uZyBhIGRlbGF5DQo+IGlzIHNwZWNpZmllZDogRmlybXdhcmUgb24gdGhlIGRldmljZSBt
YXkgYWxzbyByZXF1aXJlIHNvbWUgdGltZSB0byBzZXQgdXAgdGhlDQo+IEJBUnMgYWNjb3JkaW5n
bHkuKQ0KPiANCj4gSmFuDQoNCkkgYW0gbm90IHN1cmUgaXQgd291bGQgd29yayB0aGF0IHdheS4g
SWYgd2UgbG9vayBhdCBob3cgbGludXggDQppbml0aWFsaXplZCBzcmlvdiwgaXQgd3JpdGVzIFZG
RSBhbmQgTVNFIGJpdHMsIHdhaXRzIDEwMG1zIGFuZCB0aGVuIA0KZXhwZWN0cyBWRnMgdG8gYmUg
b3BlcmF0aW9uYWwuIElmIHRoZXkgYXJlIG5vdCBvcGVyYXRpb25hbCBhdCB0aGF0IA0KbW9tZW50
LCB0aGVuIGl0IGNvbnNpZGVycyB0aGUgb3BlcmF0aW9uIGZhaWxlZCBhbmQgcmVtb3ZlcyBhbGwg
VkZzLiBJZiANCndlIGFsc28gd2FpdCAxMDBtcyBiZWZvcmUgZW5hYmxpbmcgYWNjZXNzLCB0aGUg
cHJvYmFiaWxpdHkgb2YgYSBndWVzdCANCnRyeWluZyB0byBhY2Nlc3Mgc29tZXRoaW5nIGJlZm9y
ZSB3ZSBhbGxvdyBpdCB3b3VsZCBiZSB2ZXJ5IGhpZ2guDQoNClNvIEkgdGhpbmsgdGhlcmUgaXMg
bm8gd2F5IHRvIGFkZCBWRnMgaW4gWGVuIHdpdGhvdXQgYmxvY2tpbmcgdGhlIA0KZ3Vlc3TigJlz
IHZDUFUgaW4gc29tZSB3YXkuIFdlIGNhbiByZXZlcnQgYmFjayB0byB0aGUgb2xkIHZhcmlhbnQg
YW5kIHJlbHkgDQpvbiBwaHlzZGV2IG9wIHRvIGFkZCBWRnMgb25lIGJ5IG9uZSBhcyB0aGV5IGFy
ZSBkaXNjb3ZlcmVkIGJ5IERvbTAsIHRoZW4gDQp3ZSB3aWxsIG5vdCBuZWVkIHRvIGV4cGxpY2l0
bHkgd2FpdC4NCkBSb2dlciBhcmUgeW91IG9rYXkgd2l0aCB0aGF0Pw0KDQoNClNuaXBwZXQgZnJv
bSBMaW51eDoNCg0Kc3RhdGljIGludCBzcmlvdl9lbmFibGUoc3RydWN0IHBjaV9kZXYgKmRldiwg
aW50IG5yX3ZpcnRmbikNCnsNCgkuLi4NCglwY2lfaW92X3NldF9udW12ZnMoZGV2LCBucl92aXJ0
Zm4pOw0KCWlvdi0+Y3RybCB8PSBQQ0lfU1JJT1ZfQ1RSTF9WRkUgfCBQQ0lfU1JJT1ZfQ1RSTF9N
U0U7DQoJcGNpX2NmZ19hY2Nlc3NfbG9jayhkZXYpOw0KCXBjaV93cml0ZV9jb25maWdfd29yZChk
ZXYsIGlvdi0+cG9zICsgUENJX1NSSU9WX0NUUkwsIGlvdi0+Y3RybCk7DQoJbXNsZWVwKDEwMCk7
DQoJcGNpX2NmZ19hY2Nlc3NfdW5sb2NrKGRldik7DQoNCglyYyA9IHNyaW92X2FkZF92ZnMoZGV2
LCBpbml0aWFsKTsNCglpZiAocmMpDQoJCWdvdG8gZXJyX3BjaWJpb3M7DQoJLi4uDQp9DQoNCg0K
DQoNCg0KLS0gDQpNeWt5dGE=


From xen-devel-bounces@lists.xenproject.org Wed Apr 01 08:11:22 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 01 Apr 2026 08:11:22 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1269858.1558729 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1w7qfV-0004Cc-F7; Wed, 01 Apr 2026 08:11:17 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1269858.1558729; Wed, 01 Apr 2026 08:11: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 1w7qfV-0004CV-CN; Wed, 01 Apr 2026 08:11:17 +0000
Received: by outflank-mailman (input) for mailman id 1269858;
 Wed, 01 Apr 2026 08:11:15 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <jbeulich@suse.com>) id 1w7qfT-0004CP-Ps
 for xen-devel@lists.xenproject.org; Wed, 01 Apr 2026 08:11:15 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1w7qfR-000WZI-5y
 for xen-devel@lists.xenproject.org; Wed, 01 Apr 2026 10:11:14 +0200
Received: from [10.42.69.8] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <jbeulich@suse.com>)
 id 69ccd2f8-2eae-0a2a0a5409dd-0a2a45088496-46
 for <xen-devel@lists.xenproject.org>; Wed, 01 Apr 2026 10:11:14 +0200
Received: from [209.85.128.51] (helo=mail-wm1-f51.google.com)
 by tlsNG-c1860d.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.0)
 (envelope-from <jbeulich@suse.com>)
 id 69ccd322-fab6-0a2a45080019-d1558033d156-3
 for <xen-devel@lists.xenproject.org>; Wed, 01 Apr 2026 10:11:14 +0200
Received: by mail-wm1-f51.google.com with SMTP id
 5b1f17b1804b1-4853e1ce427so80899885e9.3
 for <xen-devel@lists.xenproject.org>; Wed, 01 Apr 2026 01:11:14 -0700 (PDT)
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-4887c7510d3sm49049345e9.5.2026.04.01.01.11.13
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Wed, 01 Apr 2026 01:11:13 -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=google header.d=suse.com header.i="@suse.com" header.h="Content-Transfer-Encoding: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=1775031074; x=1775635874; darn=lists.xenproject.org;
        h=content-transfer-encoding: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;
        bh=5w+WmLob+2xlITweK4A5efrKFyu7+9IJMRP/UeTyNVI=;
        b=IO6cLc4ym/G66/j04oM0fsyNBVONBmND/OZ2/DgPTptubqM/5tIIhcFC/qj+VCBe3v
         1CZiQidVy+pNuVaFP+NquwNE88YYDXSDnoSOiJVVls6UpdKZFwIU1bc7L4nDNbVjyz37
         COFh4nblJkiP6IBFt0EHKmA91d2ZZlxEskVdfKVIXw8/i1jVVf+k8ztZqZcooU81qcai
         c6Ho+qRa7AsvuEiDF7nXAtsy0TOYNUxpvl7l279WV3i3nGFZDRX5KB1gjEqOQn9bKRcn
         tiyTpfMuU5TVGgrEhnL1w34/LfaGhAEvvPWQ+H2oaYLRzDsIHta3QKu8oDZYuz9YoPNa
         IyAg==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20251104; t=1775031074; x=1775635874;
        h=content-transfer-encoding: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;
        bh=5w+WmLob+2xlITweK4A5efrKFyu7+9IJMRP/UeTyNVI=;
        b=Svk5YLIRAKyYtNLCu0TIbHh4roNrYXCXQFP30+x95aL14kigHUse/Aeu5a+bTyQXOG
         WoJ2NYCgHDYZ7BXheY8iakon3qpKJxyyZVNHLlpUEx/BdaJNEt1I9SlxlS3qrTqC3JM1
         iA1w2AvujIvPUlDhgNipB1a0tj3Ewoyukjexyr1xYO/J+Uw6tuZPc0cp3q2VX5ZTghmq
         YkPmbtWCG1CCw3x6sacaoySU441HNVAl+kfJ1PtduC6izUhwZkA9BbKcpPUYk5ioe2Jj
         zJk4of8KX4XlJOX6gpJ8d5rY4jKEIGSfJbKF7aMCTbBSMidQ4H+rP8b+5CAPocr2YZH7
         WNgg==
X-Gm-Message-State: AOJu0Yz9fs+sKPFOYqGG2eN6yKwjK9ErNwtbk4R79G53dBQtBxXxG0UX
	6XaXR8TFplWD1QwIOeucw2e6OfXd4bvCViJG5n1g5GKc2+xxw546HONklWUi9cXwcg==
X-Gm-Gg: ATEYQzz6wtdLOFrXj7z+KNBhqf6F1V9dJnqKPoUEVb37oiHTh3UmgtbXFz58OboAAKn
	hAicqIYOO8f+YrLj8T9XzFvO5QzcdIEcTDXN6af+JPRjslg3gWyt8JRAe35KxnWizAvIW7Lsyvq
	i74keqWmxJ24Kby5DkOFbAgM3CU+MPuu4FhNx5cOw2oyoHSs57btltVvJVfEWmvQlKwb8JAvk1t
	lnlTXETZ3UrAnvk+TMGo/JI50B2LtS97fOcOWXEeUWKyoohdqP3gTE7QQVduDFdTk4wiSf0sTmn
	AJjsR8cu6SORKU6UUGyPC+KbQZkw9oeLqVsji8M0EgiKAY68RNENvAs8n7nhYSiPKsWI6KMO1VB
	DCWEdnqvDiTgjc8VZG2K3ywNBBpEDnQ3oxVWvhXdP6jsMVbsAw5OePmBil7CDLOoctrsRIWhUGn
	hHU+V2U23XVSgupY1jTJehXtKCJp5GoBa0Ir4WlBq5ilKdCy16Nu6Edb4xlhwLv9AEJ3YI/Ecwo
	NuT2BYT5aaGmXp2+QCvOj/PSA==
X-Received: by 2002:a05:600c:5303:b0:488:7f69:4abf with SMTP id 5b1f17b1804b1-488835675a6mr41681585e9.12.1775031073982;
        Wed, 01 Apr 2026 01:11:13 -0700 (PDT)
Message-ID: <6020226f-5e38-42f5-923e-2692d17bc4e9@suse.com>
Date: Wed, 1 Apr 2026 10:11:12 +0200
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: IOMMU faults after S3
To: Andrew Cooper <andrew.cooper3@citrix.com>,
 =?UTF-8?Q?Marek_Marczykowski-G=C3=B3recki?= <marmarek@invisiblethingslab.com>
Cc: xen-devel <xen-devel@lists.xenproject.org>
References: <acZZmGXIJlmN3KGm@mail-itl>
 <e8bbaae2-5cff-4549-9f27-fbbda7346f60@suse.com>
 <913f75e3-0039-4a7e-9884-7564c329557f@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: <913f75e3-0039-4a7e-9884-7564c329557f@citrix.com>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
X-purgate-ID: tlsNG-c1860d/1775031074-77348497-3A991F04/0/0
X-purgate-type: clean
X-purgate-size: 2559

On 01.04.2026 09:20, Andrew Cooper wrote:
> On 01/04/2026 9:14 am, Jan Beulich wrote:
>> On 27.03.2026 11:19, Marek Marczykowski-Górecki wrote:
>>> I noticed that on some systems, there are a lot of IOMMU faults after
>>> S3. I can see it also on a laptop with MTL, but it affects also the ADL
>>> gitlab runner:
>>>
>>>     https://gitlab.com/xen-project/hardware/xen/-/jobs/13661033722
>>>     (XEN) [   37.201160] [VT-D]DMAR:[DMA Write] Request device [0000:00:1e.6] fault addr 0
>>>     (XEN) [   37.201164] [VT-D]DMAR: reason 02 - Present bit in context entry is clear
>>>     (XEN) [   37.202332] [VT-D]DMAR:[DMA Write] Request device [0000:00:1e.6] fault addr 0
>>>     (XEN) [   37.202339] [VT-D]DMAR: reason 02 - Present bit in context entry is clear
>>>
>>> Interestingly, the 0000:00:1e.6 device is not even listed by lspci.
>>>
>>> The issue is present only on staging, not staging-4.21.
>>>
>>> Bisect says:
>>>
>>> 5ec93b2f19ff8873fca65d38c1164b0a56d3898b is the first bad commit
>>> commit 5ec93b2f19ff8873fca65d38c1164b0a56d3898b
>>> Author: Jan Beulich <jbeulich@suse.com>
>>> Date:   Thu Jan 22 14:13:35 2026 +0100
>>>
>>>     x86/HPET: drop .set_affinity hook
>> Looking into this, I find several things I can't quite understand (yet).
>> First there is
>>
>> (XEN) [000000456c0fe39f] Disabling HPET for being unreliable
>>
>> which looks to only affect clocksource selection, but not use as
>> broadcast source for CPU-idle management. (This may be an independent
>> issue.)
>>
>> Then there is
>>
>> (XEN) [    2.760248] HPET: 8 timers usable for broadcast (8 total)
>>
>> which should only occur on ARAT-incapable systems. That should only be
>> older hardware.
> 
> I'm not sure that's a reasonable assertion to draw.  The number of HPET
> channels is down to the HPET alone, not anything to do with the CPU
> capabilities.

My statement was about the mere presence of that message, not the number
of channels that are reported.

>>  (On my much older Skylake I don't see this line, for
>> example.) What does CPUID leaf 6 have on this system? Sadly xen-cpuid
>> is purely featureset based, and hence doesn't expose info about that
>> leaf.
> 
> xen-cpuid -p
> 
> That will get you leaf 6, but there's no human-readable decode of it.

Raw numbers is good enough here. How did I miss that option when looking
at --help output? Oh, simply because it isn't shown there.

Marek, that'll be better than bare metal kernel data, as it gives us both
raw and host policies.

Jan


From xen-devel-bounces@lists.xenproject.org Wed Apr 01 08:14:19 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 01 Apr 2026 08:14:19 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1269870.1558738 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1w7qiI-0004iN-Rm; Wed, 01 Apr 2026 08:14:10 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1269870.1558738; Wed, 01 Apr 2026 08:14: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 1w7qiI-0004iG-Oe; Wed, 01 Apr 2026 08:14:10 +0000
Received: by outflank-mailman (input) for mailman id 1269870;
 Wed, 01 Apr 2026 08:14:10 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <jbeulich@suse.com>) id 1w7qiI-0004iA-8l
 for xen-devel@lists.xenproject.org; Wed, 01 Apr 2026 08:14:10 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1w7qiH-001xmy-Kn
 for xen-devel@lists.xenproject.org; Wed, 01 Apr 2026 10:14:09 +0200
Received: from [10.42.69.5] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <jbeulich@suse.com>)
 id 69ccd3cb-2eae-0a2a0a5409dd-0a2a4505adaa-20
 for <xen-devel@lists.xenproject.org>; Wed, 01 Apr 2026 10:14:09 +0200
Received: from [209.85.128.53] (helo=mail-wm1-f53.google.com)
 by tlsNG-c201ff.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.0)
 (envelope-from <jbeulich@suse.com>)
 id 69ccd3d1-3760-0a2a45050019-d1558035d5a1-3
 for <xen-devel@lists.xenproject.org>; Wed, 01 Apr 2026 10:14:09 +0200
Received: by mail-wm1-f53.google.com with SMTP id
 5b1f17b1804b1-488879b2e6aso1600495e9.1
 for <xen-devel@lists.xenproject.org>; Wed, 01 Apr 2026 01:14:09 -0700 (PDT)
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-43cf330872asm31379856f8f.17.2026.04.01.01.14.08
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Wed, 01 Apr 2026 01:14:08 -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=google header.d=suse.com header.i="@suse.com" header.h="Content-Transfer-Encoding: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=1775031249; x=1775636049; darn=lists.xenproject.org;
        h=content-transfer-encoding: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;
        bh=i9xSBchp0EQkC31IJ7rHy+sCf5eE/J+x0FI8uOxAYJs=;
        b=dGCcEFL4bsuSNF04Ucmj9xd88A++5RHJlJq2vNRL4a5DQJeWD519+xDnJHAOqqWVES
         1a1M8gmKTcf9BBQb1sBSmRcQnRSQBSuf5EqZE7PX+bYZqjRMTGdNQbrxuVK+S0i63Ez2
         e1SoqDzoa4h7uGgh+FrDRi8qflMk7M1jc3INupgXjAFbdhm/JSvM6OcHrg3nFurlyU/T
         jztJkyDhNwpy6gmpMLYN+Q/uKHtRIAS7TKXmRhJDAhBJYWgzC4EItEzD2ZhJDg0Bws1/
         5rG/pRfqetS4ElCBFNxqmU0Fqw8j15qV/N9jJjThuoT1IXnomKWbMHIytFEI5XYeOydS
         6fzg==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20251104; t=1775031249; x=1775636049;
        h=content-transfer-encoding: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;
        bh=i9xSBchp0EQkC31IJ7rHy+sCf5eE/J+x0FI8uOxAYJs=;
        b=cz2pa8M1vfefoKR/uYiFORLR5rLtBWyNUxtrP9reAclHFuivk+MVi3D5hED15IwiC6
         4GvNuvFQSfUmiZPfvaY2K+4fVzu17phvjDpntqz/MS5RZ81dfXEp/nj2PEJqFgkiA+dH
         ZmSCCE9gMTo8rj3+HgvXZ0nt0mSLLwXJXorrMUqU+CmISCI9lqBaH9fjmsd1spmcwCSS
         aKt3Rr3s1ngRUUFKsiZOzGFwSxCmGZ/3h5wjT6P5yBpYzBD9w8k/ge/QBUpJvDJ/1PeX
         vrHjRqzSILLeYszWupy3To4dSxYC6J8nnpdd2HwtkrYEv4ScguCuXr3AOmrPbGSQgDu4
         1bBg==
X-Forwarded-Encrypted: i=1; AJvYcCWP6KTtj99FtdLICyo788MR5S5df/0HN47i88202KgskyPbjZi74oLZ8/RpzAnzq+AU0thz+/Y4ULk=@lists.xenproject.org
X-Gm-Message-State: AOJu0YyJzzimEu4hU/TEH9PwZVWruEMuIzfCOSf1OhSQEXjzHxbVdyfk
	LJOD/644CRiXvizTfjpBCagXyKvzwpiRBscah12WFJwqUtdqHSYCdTB1uT0XuF7gbA==
X-Gm-Gg: ATEYQzyQPcQgKLYrTN6X7GYgGAU5umOhVxQRDNMNc4Gl05rWRnAl8W97oauXZsonKcU
	gxFDzJmci4i6nHrP6vA5BRkhbmpUCNWvQMpmwmaEcy3R3aOW2wLE2Qocd/xXDtcDNtAjKfFGOpU
	lSFsXKIyJO24GD6GTaBg/8ZntFOP6NKQOCnq/67RM1EwM52+dCDYNVSrYXV8md7enZMNKTtDm7I
	mCstrlrhHHnojJhMTCnN/ObmPSCssP1ZvQI/D7x86eHLJtp4lILcQ42vGQ0Q/7IIkzzdpAJ5+FM
	zcYNVUuwA8ggIdngEcRUikAtktCPCEYiZ/iXdn9nD+895OqCQdKIvZFShoRlksvZON/uuCKa/Yx
	dsvGBFweWvpLziMsOyD8KFRQHZcimJ5BdciiJNqJnGuRNMN2B6dgUUIJZY+Gh/U/aM9uUkBL3ES
	ZeCtPJgTNPausnS66U0U7IBvoD5Z0UdRoObqxaTS7oqX7NT2+CeTROtDHvERTj4XyGX3lFz7UGn
	RCGOIvW0pspTG6kGjObspM/hQ==
X-Received: by 2002:a05:600c:c107:b0:485:4136:99a8 with SMTP id 5b1f17b1804b1-48883595d96mr28079995e9.22.1775031248865;
        Wed, 01 Apr 2026 01:14:08 -0700 (PDT)
Message-ID: <5b16e00e-9a4d-4a18-8a5e-dde10b42a043@suse.com>
Date: Wed, 1 Apr 2026 10:14:07 +0200
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH v3] xen/arm: vpsci: ignore upper 32 bits for SMC32 PSCI
 arguments
To: Mykola Kvach <xakep.amatop@gmail.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>,
 xen-devel@lists.xenproject.org
References: <e1d18d55557ebe232fd62174f186b1cf228e48e5.1774981189.git.mykola_kvach@epam.com>
 <dc5550d7-5a2d-4ca1-85de-5a17c24aeac4@suse.com>
 <CAGeoDV-ffZsOW+Cu0-oPA1obBOv_1nWU8_PAdaqaoy6=YUHGig@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: <CAGeoDV-ffZsOW+Cu0-oPA1obBOv_1nWU8_PAdaqaoy6=YUHGig@mail.gmail.com>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
X-purgate-ID: tlsNG-c201ff/1775031249-3332496F-66B8F4DB/0/0
X-purgate-type: clean
X-purgate-size: 3783

On 01.04.2026 09:13, Mykola Kvach wrote:
> Hi Jan,
> 
> On Wed, Apr 1, 2026 at 9:29 AM Jan Beulich <jbeulich@suse.com> wrote:
>>
>> On 31.03.2026 20:31, Mykola Kvach wrote:
>>> From: Mykola Kvach <mykola_kvach@epam.com>
>>>
>>> SMCCC DEN0028G, section 3.1, states that for AArch64 SMC/HVC calls
>>> using Wn, only the least significant 32 bits are significant and the
>>> upper 32 bits must be ignored by the implementation.
>>>
>>> So for SMC32 PSCI calls, Xen must not treat non-zero upper bits in the
>>> argument registers as an error. Instead, they should be discarded when
>>> decoding the arguments.
>>>
>>> Arm ARM DDI 0487J.a (D1-5406) also notes that the upper 32 bits may be
>>> implementation defined when entering from AArch32. Xen zeros them on
>>> entry, but that guarantee is only relevant for 32-bit domains.
>>>
>>> Update PSCI v0.2+ CPU_ON, CPU_SUSPEND, AFFINITY_INFO and SYSTEM_SUSPEND
>>> to read SMC32 arguments via PSCI_ARG32(), while keeping the SMC64
>>> handling unchanged.
>>>
>>> No functional change is intended for PSCI 0.1.
>>>
>>> Suggested-by: Julien Grall <julien@xen.org>
>>> Signed-off-by: Mykola Kvach <mykola_kvach@epam.com>
>>> Reviewed-by: Bertrand Marquis <bertrand.marquis@arm.com>
>>
>> I thought I might as well include this in my next commit sweep, but isn't
>> this R-b being invalidated by ...
>>
>>> ---
>>> v3:
>>>  - use PSCI_ARG_CONV for SYSTEM_SUSPEND
>>
>> ... this change. That's ...
>>
>>> @@ -422,14 +427,8 @@ bool do_vpsci_0_2_call(struct cpu_user_regs *regs, uint32_t fid)
>>>      case PSCI_1_0_FN32_SYSTEM_SUSPEND:
>>>      case PSCI_1_0_FN64_SYSTEM_SUSPEND:
>>>      {
>>> -        register_t epoint = PSCI_ARG(regs, 1);
>>> -        register_t cid = PSCI_ARG(regs, 2);
>>> -
>>> -        if ( fid == PSCI_1_0_FN32_SYSTEM_SUSPEND )
>>> -        {
>>> -            epoint &= GENMASK(31, 0);
>>> -            cid &= GENMASK(31, 0);
>>> -        }
>>> +        register_t epoint = PSCI_ARG_CONV(regs, 1, is_conv_64);
>>> +        register_t cid = PSCI_ARG_CONV(regs, 2, is_conv_64);
>>>
>>>          perfc_incr(vpsci_system_suspend);
>>>          PSCI_SET_RESULT(regs, do_psci_1_0_system_suspend(epoint, cid));
>>
>> ... this hunk aiui, which is far from merely cosmetic imo. While
> 
> Nobody said that the change had to be purely cosmetic in order to keep
> the tag. I understood it differently from the official Xen
> documentation pages.
> 
>> behavior looks to remain the same for PSCI_1_0_FN32_SYSTEM_SUSPEND, it
> 
> Exactly. If the changes are not substantial, I do not see a reason to
> drop the tag ...
> 
>> clearly changes for PSCI_1_0_FN64_SYSTEM_SUSPEND. That may be intended
>> and for the better, but the change clearly wasn't reviewed by Bertrand,
>> nor - when offering the R-b - did he ask for this extra change.
> 
> ... and this is also how I understood the Xen patch submission
> guidelines [1], which say:
> 
> "Note that if there are several revisions of a patch, you ought to
> copy tags that have accumulated during the review. For example, if
> person A and person B added a Reviewed-by: tag to v1 of your patch,
> include it into v2 of your patch. If you make substantial changes
> after certain tags were already applied, you will want to consider
> which ones are no longer applicable (and may require re-providing)."
> 
> So my understanding was that tags should normally be kept across
> revisions, unless the changes are substantial enough to make them no
> longer applicable.

Maybe our understanding of "substantial" differs. To me that's anything
changing functionality. Style adjustments, typo corrections, and alike
generally aren't substantial (albeit even then there may be exceptions).

Jan


From xen-devel-bounces@lists.xenproject.org Wed Apr 01 08:17:00 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 01 Apr 2026 08:17:00 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1269880.1558755 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1w7qkz-0005Rx-Gt; Wed, 01 Apr 2026 08:16:57 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1269880.1558755; Wed, 01 Apr 2026 08:16: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 1w7qkz-0005Rq-E7; Wed, 01 Apr 2026 08:16:57 +0000
Received: by outflank-mailman (input) for mailman id 1269880;
 Wed, 01 Apr 2026 08:16:56 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <fengchengwen@huawei.com>) id 1w7qky-0005EX-9N
 for xen-devel@lists.xenproject.org; Wed, 01 Apr 2026 08:16:56 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1w7qkx-00Ez1l-LQ
 for xen-devel@lists.xenproject.org; Wed, 01 Apr 2026 10:16:55 +0200
Received: from [10.42.69.3] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <fengchengwen@huawei.com>)
 id 69ccd472-e002-0a2a0a5209dd-0a2a4503cd14-16
 for <xen-devel@lists.xenproject.org>; Wed, 01 Apr 2026 10:16:55 +0200
Received: from [113.46.200.220] (helo=canpmsgout05.his.huawei.com)
 by tlsNG-33051d.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.0)
 (envelope-from <fengchengwen@huawei.com>)
 id 69ccd474-02b3-0a2a45030019-712ec8dc5d7e-3
 for <xen-devel@lists.xenproject.org>; Wed, 01 Apr 2026 10:16:55 +0200
Received: from mail.maildlp.com (unknown [172.19.163.0])
 by canpmsgout05.his.huawei.com (SkyGuard) with ESMTPS id 4flyPC3klwz12LG4;
 Wed,  1 Apr 2026 16:11:27 +0800 (CST)
Received: from kwepemk500009.china.huawei.com (unknown [7.202.194.94])
 by mail.maildlp.com (Postfix) with ESMTPS id CEA0F40537;
 Wed,  1 Apr 2026 16:16:50 +0800 (CST)
Received: from localhost.localdomain (10.50.163.32) by
 kwepemk500009.china.huawei.com (7.202.194.94) with Microsoft SMTP Server
 (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id
 15.2.1544.11; Wed, 1 Apr 2026 16:16:48 +0800
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
Authentication-Results: eu.smtp.expurgate.cloud; dkim=pass header.s=dkim header.d=huawei.com header.i="@huawei.com" header.h=From
dkim-signature: v=1; a=rsa-sha256; d=huawei.com; s=dkim;
	c=relaxed/relaxed; q=dns/txt;
	h=From;
	bh=BAu9Jx0jggsoB9DdjhBMDzv6GW2fgZQZhQIfabnTV1w=;
	b=0iNno9KssbzJIwOx46kM6OnZNBBxZqavG7rHHC5bdLxsRgIt4sx/XNjUZTTVDZXEoVFcegx0c
	Yif2aSgMI7B+vjuMbgqzpMuvUrJW1SQ8yRstGcNtfNLWFUMM/xjzPhZAjZffDLNoeTFLUbEByDb
	+8fyvzP5gn6CQVDmf4awY48=
From: Chengwen Feng <fengchengwen@huawei.com>
To: Bjorn Helgaas <bhelgaas@google.com>, Catalin Marinas
	<catalin.marinas@arm.com>, Will Deacon <will@kernel.org>, "Rafael J .
 Wysocki" <rafael@kernel.org>
CC: Jonathan Corbet <corbet@lwn.net>, WANG Xuerui <kernel@xen0n.name>, Thomas
 Gleixner <tglx@kernel.org>, Dave Hansen <dave.hansen@linux.intel.com>, "H .
 Peter Anvin" <hpa@zytor.com>, Juergen Gross <jgross@suse.com>, Boris
 Ostrovsky <boris.ostrovsky@oracle.com>, Len Brown <lenb@kernel.org>, Sunil V
 L <sunilvl@ventanamicro.com>, Mark Rutland <mark.rutland@arm.com>, Jonathan
 Cameron <jonathan.cameron@huawei.com>, Kees Cook <kees@kernel.org>, Yanteng
 Si <si.yanteng@linux.dev>, Sean Christopherson <seanjc@google.com>, Kai Huang
	<kai.huang@intel.com>, Tom Lendacky <thomas.lendacky@amd.com>, Thomas Huth
	<thuth@redhat.com>, Thorsten Blum <thorsten.blum@linux.dev>, Kevin Loughlin
	<kevinloughlin@google.com>, Zheyun Shen <szy0127@sjtu.edu.cn>, Peter Zijlstra
	<peterz@infradead.org>, Pawan Gupta <pawan.kumar.gupta@linux.intel.com>, Xin
 Li <xin@zytor.com>, "Ahmed S . Darwish" <darwi@linutronix.de>, Sohil Mehta
	<sohil.mehta@intel.com>, Ilkka Koskinen <ilkka@os.amperecomputing.com>, Robin
 Murphy <robin.murphy@arm.com>, James Clark <james.clark@linaro.org>, Besar
 Wicaksono <bwicaksono@nvidia.com>, Ma Ke <make24@iscas.ac.cn>, Wei Huang
	<wei.huang2@amd.com>, Andy Gospodarek <andrew.gospodarek@broadcom.com>,
	Somnath Kotur <somnath.kotur@broadcom.com>, <punit.agrawal@oss.qualcomm.com>,
	<guohanjun@huawei.com>, <suzuki.poulose@arm.com>, <ryan.roberts@arm.com>,
	<chenl311@chinatelecom.cn>, <masahiroy@kernel.org>,
	<wangyuquan1236@phytium.com.cn>, <anshuman.khandual@arm.com>,
	<heinrich.schuchardt@canonical.com>, <Eric.VanTassell@amd.com>,
	<wangzhou1@hisilicon.com>, <wanghuiqiang@huawei.com>,
	<liuyonglong@huawei.com>, <fengchengwen@huawei.com>,
	<linux-pci@vger.kernel.org>, <linux-doc@vger.kernel.org>,
	<linux-kernel@vger.kernel.org>, <linux-arm-kernel@lists.infradead.org>,
	<loongarch@lists.linux.dev>, <linux-riscv@lists.infradead.org>,
	<xen-devel@lists.xenproject.org>, <linux-acpi@vger.kernel.org>,
	<linux-perf-users@vger.kernel.org>, <stable@vger.kernel.org>,
	<x86@kernel.org>
Subject: [PATCH RESEND v10 2/8] LoongArch: Add acpi_get_cpu_uid() for unified ACPI CPU UID retrieval
Date: Wed, 1 Apr 2026 16:16:34 +0800
Message-ID: <20260401081640.26875-3-fengchengwen@huawei.com>
X-Mailer: git-send-email 2.17.1
In-Reply-To: <20260401081640.26875-1-fengchengwen@huawei.com>
References: <20260401081640.26875-1-fengchengwen@huawei.com>
MIME-Version: 1.0
Content-Type: text/plain
X-Originating-IP: [10.50.163.32]
X-ClientProxiedBy: kwepems200001.china.huawei.com (7.221.188.67) To
 kwepemk500009.china.huawei.com (7.202.194.94)
X-purgate-ID: tlsNG-33051d/1775031415-CBF2DC9A-FC401EC5/0/0
X-purgate-type: clean
X-purgate-size: 1483

As a step towards unifying the interface for retrieving ACPI CPU UID
across architectures, introduce a new function acpi_get_cpu_uid() for
loongarch. While at it, add input validation to make the code more
robust.

Cc: stable@vger.kernel.org
Signed-off-by: Chengwen Feng <fengchengwen@huawei.com>
Reviewed-by: Jonathan Cameron <jonathan.cameron@huawei.com>
---
 arch/loongarch/include/asm/acpi.h | 1 +
 arch/loongarch/kernel/acpi.c      | 9 +++++++++
 2 files changed, 10 insertions(+)

diff --git a/arch/loongarch/include/asm/acpi.h b/arch/loongarch/include/asm/acpi.h
index 7376840fa9f7..8bb101b4557e 100644
--- a/arch/loongarch/include/asm/acpi.h
+++ b/arch/loongarch/include/asm/acpi.h
@@ -44,6 +44,7 @@ static inline u32 get_acpi_id_for_cpu(unsigned int cpu)
 {
 	return acpi_core_pic[cpu_logical_map(cpu)].processor_id;
 }
+int acpi_get_cpu_uid(unsigned int cpu, u32 *uid);
 
 #endif /* !CONFIG_ACPI */
 
diff --git a/arch/loongarch/kernel/acpi.c b/arch/loongarch/kernel/acpi.c
index 1367ca759468..058f0dbe8e8f 100644
--- a/arch/loongarch/kernel/acpi.c
+++ b/arch/loongarch/kernel/acpi.c
@@ -385,3 +385,12 @@ int acpi_unmap_cpu(int cpu)
 EXPORT_SYMBOL(acpi_unmap_cpu);
 
 #endif /* CONFIG_ACPI_HOTPLUG_CPU */
+
+int acpi_get_cpu_uid(unsigned int cpu, u32 *uid)
+{
+	if (cpu >= nr_cpu_ids)
+		return -EINVAL;
+	*uid = acpi_core_pic[cpu_logical_map(cpu)].processor_id;
+	return 0;
+}
+EXPORT_SYMBOL_GPL(acpi_get_cpu_uid);
-- 
2.17.1



From xen-devel-bounces@lists.xenproject.org Wed Apr 01 08:17:00 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 01 Apr 2026 08:17:00 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1269881.1558765 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1w7ql0-0005fe-TO; Wed, 01 Apr 2026 08:16:58 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1269881.1558765; Wed, 01 Apr 2026 08:16: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 1w7ql0-0005fP-OJ; Wed, 01 Apr 2026 08:16:58 +0000
Received: by outflank-mailman (input) for mailman id 1269881;
 Wed, 01 Apr 2026 08:16:57 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <fengchengwen@huawei.com>) id 1w7qkz-0005OH-3h
 for xen-devel@lists.xenproject.org; Wed, 01 Apr 2026 08:16:57 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1w7qky-00Ez1l-Fb
 for xen-devel@lists.xenproject.org; Wed, 01 Apr 2026 10:16:56 +0200
Received: from [10.42.69.3] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <fengchengwen@huawei.com>)
 id 69ccd472-e002-0a2a0a5209dd-0a2a4503cd14-18
 for <xen-devel@lists.xenproject.org>; Wed, 01 Apr 2026 10:16:56 +0200
Received: from [113.46.200.227] (helo=canpmsgout12.his.huawei.com)
 by tlsNG-33051d.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.0)
 (envelope-from <fengchengwen@huawei.com>)
 id 69ccd473-02b3-0a2a45030019-712ec8e3c802-3
 for <xen-devel@lists.xenproject.org>; Wed, 01 Apr 2026 10:16:55 +0200
Received: from mail.maildlp.com (unknown [172.19.163.200])
 by canpmsgout12.his.huawei.com (SkyGuard) with ESMTPS id 4flyP93zz2znTYc;
 Wed,  1 Apr 2026 16:11:25 +0800 (CST)
Received: from kwepemk500009.china.huawei.com (unknown [7.202.194.94])
 by mail.maildlp.com (Postfix) with ESMTPS id 2C8174056C;
 Wed,  1 Apr 2026 16:16:49 +0800 (CST)
Received: from localhost.localdomain (10.50.163.32) by
 kwepemk500009.china.huawei.com (7.202.194.94) with Microsoft SMTP Server
 (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id
 15.2.1544.11; Wed, 1 Apr 2026 16:16:47 +0800
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
Authentication-Results: eu.smtp.expurgate.cloud; dkim=pass header.s=dkim header.d=huawei.com header.i="@huawei.com" header.h=From
dkim-signature: v=1; a=rsa-sha256; d=huawei.com; s=dkim;
	c=relaxed/relaxed; q=dns/txt;
	h=From;
	bh=cX9nX5J0dlT1awVPQ/6cRzsJrYfbjG8pE8PbO0C/Hhc=;
	b=i+j26ictNtsg7O/F6lBPFRPqM46wxpGQx6OUUfHHZ8jfyEiP2gCA6kxZgTIcJa4j5pbOBLJLQ
	c+HcxUl949mY9sPM4NfmX+Zase+tnrgONPI+R/E8bfr+487HRMp/f+b+3k2YIASwaiRxC/kJzyc
	ytRMmF8nbgor8UF3Ii+ThkQ=
From: Chengwen Feng <fengchengwen@huawei.com>
To: Bjorn Helgaas <bhelgaas@google.com>, Catalin Marinas
	<catalin.marinas@arm.com>, Will Deacon <will@kernel.org>, "Rafael J .
 Wysocki" <rafael@kernel.org>
CC: Jonathan Corbet <corbet@lwn.net>, WANG Xuerui <kernel@xen0n.name>, Thomas
 Gleixner <tglx@kernel.org>, Dave Hansen <dave.hansen@linux.intel.com>, "H .
 Peter Anvin" <hpa@zytor.com>, Juergen Gross <jgross@suse.com>, Boris
 Ostrovsky <boris.ostrovsky@oracle.com>, Len Brown <lenb@kernel.org>, Sunil V
 L <sunilvl@ventanamicro.com>, Mark Rutland <mark.rutland@arm.com>, Jonathan
 Cameron <jonathan.cameron@huawei.com>, Kees Cook <kees@kernel.org>, Yanteng
 Si <si.yanteng@linux.dev>, Sean Christopherson <seanjc@google.com>, Kai Huang
	<kai.huang@intel.com>, Tom Lendacky <thomas.lendacky@amd.com>, Thomas Huth
	<thuth@redhat.com>, Thorsten Blum <thorsten.blum@linux.dev>, Kevin Loughlin
	<kevinloughlin@google.com>, Zheyun Shen <szy0127@sjtu.edu.cn>, Peter Zijlstra
	<peterz@infradead.org>, Pawan Gupta <pawan.kumar.gupta@linux.intel.com>, Xin
 Li <xin@zytor.com>, "Ahmed S . Darwish" <darwi@linutronix.de>, Sohil Mehta
	<sohil.mehta@intel.com>, Ilkka Koskinen <ilkka@os.amperecomputing.com>, Robin
 Murphy <robin.murphy@arm.com>, James Clark <james.clark@linaro.org>, Besar
 Wicaksono <bwicaksono@nvidia.com>, Ma Ke <make24@iscas.ac.cn>, Wei Huang
	<wei.huang2@amd.com>, Andy Gospodarek <andrew.gospodarek@broadcom.com>,
	Somnath Kotur <somnath.kotur@broadcom.com>, <punit.agrawal@oss.qualcomm.com>,
	<guohanjun@huawei.com>, <suzuki.poulose@arm.com>, <ryan.roberts@arm.com>,
	<chenl311@chinatelecom.cn>, <masahiroy@kernel.org>,
	<wangyuquan1236@phytium.com.cn>, <anshuman.khandual@arm.com>,
	<heinrich.schuchardt@canonical.com>, <Eric.VanTassell@amd.com>,
	<wangzhou1@hisilicon.com>, <wanghuiqiang@huawei.com>,
	<liuyonglong@huawei.com>, <fengchengwen@huawei.com>,
	<linux-pci@vger.kernel.org>, <linux-doc@vger.kernel.org>,
	<linux-kernel@vger.kernel.org>, <linux-arm-kernel@lists.infradead.org>,
	<loongarch@lists.linux.dev>, <linux-riscv@lists.infradead.org>,
	<xen-devel@lists.xenproject.org>, <linux-acpi@vger.kernel.org>,
	<linux-perf-users@vger.kernel.org>, <stable@vger.kernel.org>,
	<x86@kernel.org>
Subject: [PATCH RESEND v10 1/8] arm64: acpi: Add acpi_get_cpu_uid() for unified ACPI CPU UID retrieval
Date: Wed, 1 Apr 2026 16:16:33 +0800
Message-ID: <20260401081640.26875-2-fengchengwen@huawei.com>
X-Mailer: git-send-email 2.17.1
In-Reply-To: <20260401081640.26875-1-fengchengwen@huawei.com>
References: <20260401081640.26875-1-fengchengwen@huawei.com>
MIME-Version: 1.0
Content-Type: text/plain
X-Originating-IP: [10.50.163.32]
X-ClientProxiedBy: kwepems200001.china.huawei.com (7.221.188.67) To
 kwepemk500009.china.huawei.com (7.202.194.94)
X-purgate-ID: tlsNG-33051d/1775031416-41B15C9A-04D77A0F/0/0
X-purgate-type: clean
X-purgate-size: 2371

As a step towards unifying the interface for retrieving ACPI CPU UID
across architectures, introduce a new function acpi_get_cpu_uid() for
arm64. While at it, add input validation to make the code more robust.

Reimplement get_cpu_for_acpi_id() based on acpi_get_cpu_uid() for
consistency, and move its implementation next to the new function for
code coherence.

Cc: stable@vger.kernel.org
Signed-off-by: Chengwen Feng <fengchengwen@huawei.com>
Reviewed-by: Jonathan Cameron <jonathan.cameron@huawei.com>
Acked-by: Catalin Marinas <catalin.marinas@arm.com>
---
 arch/arm64/include/asm/acpi.h | 14 ++------------
 arch/arm64/kernel/acpi.c      | 30 ++++++++++++++++++++++++++++++
 2 files changed, 32 insertions(+), 12 deletions(-)

diff --git a/arch/arm64/include/asm/acpi.h b/arch/arm64/include/asm/acpi.h
index c07a58b96329..2219a3301e72 100644
--- a/arch/arm64/include/asm/acpi.h
+++ b/arch/arm64/include/asm/acpi.h
@@ -118,18 +118,8 @@ static inline u32 get_acpi_id_for_cpu(unsigned int cpu)
 {
 	return	acpi_cpu_get_madt_gicc(cpu)->uid;
 }
-
-static inline int get_cpu_for_acpi_id(u32 uid)
-{
-	int cpu;
-
-	for (cpu = 0; cpu < nr_cpu_ids; cpu++)
-		if (acpi_cpu_get_madt_gicc(cpu) &&
-		    uid == get_acpi_id_for_cpu(cpu))
-			return cpu;
-
-	return -EINVAL;
-}
+int acpi_get_cpu_uid(unsigned int cpu, u32 *uid);
+int get_cpu_for_acpi_id(u32 uid);
 
 static inline void arch_fix_phys_package_id(int num, u32 slot) { }
 void __init acpi_init_cpus(void);
diff --git a/arch/arm64/kernel/acpi.c b/arch/arm64/kernel/acpi.c
index af90128cfed5..24b9d934be54 100644
--- a/arch/arm64/kernel/acpi.c
+++ b/arch/arm64/kernel/acpi.c
@@ -458,3 +458,33 @@ int acpi_unmap_cpu(int cpu)
 }
 EXPORT_SYMBOL(acpi_unmap_cpu);
 #endif /* CONFIG_ACPI_HOTPLUG_CPU */
+
+int acpi_get_cpu_uid(unsigned int cpu, u32 *uid)
+{
+	struct acpi_madt_generic_interrupt *gicc;
+
+	if (cpu >= nr_cpu_ids)
+		return -EINVAL;
+
+	gicc = acpi_cpu_get_madt_gicc(cpu);
+	if (!gicc)
+		return -ENODEV;
+
+	*uid = gicc->uid;
+	return 0;
+}
+EXPORT_SYMBOL_GPL(acpi_get_cpu_uid);
+
+int get_cpu_for_acpi_id(u32 uid)
+{
+	u32 cpu_uid;
+	int ret;
+
+	for (int cpu = 0; cpu < nr_cpu_ids; cpu++) {
+		ret = acpi_get_cpu_uid(cpu, &cpu_uid);
+		if (ret == 0 && uid == cpu_uid)
+			return cpu;
+	}
+
+	return -EINVAL;
+}
-- 
2.17.1



From xen-devel-bounces@lists.xenproject.org Wed Apr 01 08:17:00 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 01 Apr 2026 08:17:00 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1269882.1558769 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1w7ql1-0005jE-7N; Wed, 01 Apr 2026 08:16:59 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1269882.1558769; Wed, 01 Apr 2026 08:16: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 1w7ql1-0005in-1v; Wed, 01 Apr 2026 08:16:59 +0000
Received: by outflank-mailman (input) for mailman id 1269882;
 Wed, 01 Apr 2026 08:16:57 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <fengchengwen@huawei.com>) id 1w7qkz-0005Q0-8o
 for xen-devel@lists.xenproject.org; Wed, 01 Apr 2026 08:16:57 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1w7qkx-000XNy-39
 for xen-devel@lists.xenproject.org; Wed, 01 Apr 2026 10:16:56 +0200
Received: from [10.42.69.2] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <fengchengwen@huawei.com>)
 id 69ccd476-bab6-0a2a0a5309dd-0a2a450280cc-12
 for <xen-devel@lists.xenproject.org>; Wed, 01 Apr 2026 10:16:56 +0200
Received: from [113.46.200.226] (helo=canpmsgout11.his.huawei.com)
 by tlsNG-720697.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.0)
 (envelope-from <fengchengwen@huawei.com>)
 id 69ccd475-42fa-0a2a45020019-712ec8e28bec-3
 for <xen-devel@lists.xenproject.org>; Wed, 01 Apr 2026 10:16:56 +0200
Received: from mail.maildlp.com (unknown [172.19.163.163])
 by canpmsgout11.his.huawei.com (SkyGuard) with ESMTPS id 4flyNJ5zjPzKm91;
 Wed,  1 Apr 2026 16:10:40 +0800 (CST)
Received: from kwepemk500009.china.huawei.com (unknown [7.202.194.94])
 by mail.maildlp.com (Postfix) with ESMTPS id 743394048B;
 Wed,  1 Apr 2026 16:16:52 +0800 (CST)
Received: from localhost.localdomain (10.50.163.32) by
 kwepemk500009.china.huawei.com (7.202.194.94) with Microsoft SMTP Server
 (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id
 15.2.1544.11; Wed, 1 Apr 2026 16:16:50 +0800
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
Authentication-Results: eu.smtp.expurgate.cloud; dkim=pass header.s=dkim header.d=huawei.com header.i="@huawei.com" header.h=From
dkim-signature: v=1; a=rsa-sha256; d=huawei.com; s=dkim;
	c=relaxed/relaxed; q=dns/txt;
	h=From;
	bh=BMMryEb1CdnOx2gMiVv+9iHKONhR3XK5c+5CZUibkPo=;
	b=l/7oJpMqJuYSGHZyOqLiw5LD07h+45LWAipYVAvEt9pYxSp4UxJSqwXgX66M8/EZ74aeSBY3M
	qLpVsSs+rpKpxDOoVmFTloYQFQ4DUIG80JTpBOmlHJ7rSI3KUDZxGFyGCXDxs8sVu0UH3BlI+It
	fJwAj4fQtMaqP5gUwirfIBk=
From: Chengwen Feng <fengchengwen@huawei.com>
To: Bjorn Helgaas <bhelgaas@google.com>, Catalin Marinas
	<catalin.marinas@arm.com>, Will Deacon <will@kernel.org>, "Rafael J .
 Wysocki" <rafael@kernel.org>
CC: Jonathan Corbet <corbet@lwn.net>, WANG Xuerui <kernel@xen0n.name>, Thomas
 Gleixner <tglx@kernel.org>, Dave Hansen <dave.hansen@linux.intel.com>, "H .
 Peter Anvin" <hpa@zytor.com>, Juergen Gross <jgross@suse.com>, Boris
 Ostrovsky <boris.ostrovsky@oracle.com>, Len Brown <lenb@kernel.org>, Sunil V
 L <sunilvl@ventanamicro.com>, Mark Rutland <mark.rutland@arm.com>, Jonathan
 Cameron <jonathan.cameron@huawei.com>, Kees Cook <kees@kernel.org>, Yanteng
 Si <si.yanteng@linux.dev>, Sean Christopherson <seanjc@google.com>, Kai Huang
	<kai.huang@intel.com>, Tom Lendacky <thomas.lendacky@amd.com>, Thomas Huth
	<thuth@redhat.com>, Thorsten Blum <thorsten.blum@linux.dev>, Kevin Loughlin
	<kevinloughlin@google.com>, Zheyun Shen <szy0127@sjtu.edu.cn>, Peter Zijlstra
	<peterz@infradead.org>, Pawan Gupta <pawan.kumar.gupta@linux.intel.com>, Xin
 Li <xin@zytor.com>, "Ahmed S . Darwish" <darwi@linutronix.de>, Sohil Mehta
	<sohil.mehta@intel.com>, Ilkka Koskinen <ilkka@os.amperecomputing.com>, Robin
 Murphy <robin.murphy@arm.com>, James Clark <james.clark@linaro.org>, Besar
 Wicaksono <bwicaksono@nvidia.com>, Ma Ke <make24@iscas.ac.cn>, Wei Huang
	<wei.huang2@amd.com>, Andy Gospodarek <andrew.gospodarek@broadcom.com>,
	Somnath Kotur <somnath.kotur@broadcom.com>, <punit.agrawal@oss.qualcomm.com>,
	<guohanjun@huawei.com>, <suzuki.poulose@arm.com>, <ryan.roberts@arm.com>,
	<chenl311@chinatelecom.cn>, <masahiroy@kernel.org>,
	<wangyuquan1236@phytium.com.cn>, <anshuman.khandual@arm.com>,
	<heinrich.schuchardt@canonical.com>, <Eric.VanTassell@amd.com>,
	<wangzhou1@hisilicon.com>, <wanghuiqiang@huawei.com>,
	<liuyonglong@huawei.com>, <fengchengwen@huawei.com>,
	<linux-pci@vger.kernel.org>, <linux-doc@vger.kernel.org>,
	<linux-kernel@vger.kernel.org>, <linux-arm-kernel@lists.infradead.org>,
	<loongarch@lists.linux.dev>, <linux-riscv@lists.infradead.org>,
	<xen-devel@lists.xenproject.org>, <linux-acpi@vger.kernel.org>,
	<linux-perf-users@vger.kernel.org>, <stable@vger.kernel.org>,
	<x86@kernel.org>
Subject: [PATCH RESEND v10 3/8] RISC-V: ACPI: Add acpi_get_cpu_uid() for unified ACPI CPU UID retrieval
Date: Wed, 1 Apr 2026 16:16:35 +0800
Message-ID: <20260401081640.26875-4-fengchengwen@huawei.com>
X-Mailer: git-send-email 2.17.1
In-Reply-To: <20260401081640.26875-1-fengchengwen@huawei.com>
References: <20260401081640.26875-1-fengchengwen@huawei.com>
MIME-Version: 1.0
Content-Type: text/plain
X-Originating-IP: [10.50.163.32]
X-ClientProxiedBy: kwepems200001.china.huawei.com (7.221.188.67) To
 kwepemk500009.china.huawei.com (7.202.194.94)
X-purgate-ID: tlsNG-720697/1775031416-46B27CD1-77581FE3/0/0
X-purgate-type: clean
X-purgate-size: 3045

As a step towards unifying the interface for retrieving ACPI CPU UID
across architectures, introduce a new function acpi_get_cpu_uid() for
riscv. While at it, add input validation to make the code more robust.

And also update acpi_numa.c and rhct.c to use the new interface instead
of the legacy get_acpi_id_for_cpu().

Cc: stable@vger.kernel.org
Signed-off-by: Chengwen Feng <fengchengwen@huawei.com>
Reviewed-by: Jonathan Cameron <jonathan.cameron@huawei.com>
---
 arch/riscv/include/asm/acpi.h |  1 +
 arch/riscv/kernel/acpi.c      | 16 ++++++++++++++++
 arch/riscv/kernel/acpi_numa.c |  9 ++++++---
 drivers/acpi/riscv/rhct.c     |  7 ++++++-
 4 files changed, 29 insertions(+), 4 deletions(-)

diff --git a/arch/riscv/include/asm/acpi.h b/arch/riscv/include/asm/acpi.h
index 6e13695120bc..f3520cc85af3 100644
--- a/arch/riscv/include/asm/acpi.h
+++ b/arch/riscv/include/asm/acpi.h
@@ -65,6 +65,7 @@ static inline u32 get_acpi_id_for_cpu(int cpu)
 {
 	return acpi_cpu_get_madt_rintc(cpu)->uid;
 }
+int acpi_get_cpu_uid(unsigned int cpu, u32 *uid);
 
 int acpi_get_riscv_isa(struct acpi_table_header *table,
 		       unsigned int cpu, const char **isa);
diff --git a/arch/riscv/kernel/acpi.c b/arch/riscv/kernel/acpi.c
index 71698ee11621..322ea92aa39f 100644
--- a/arch/riscv/kernel/acpi.c
+++ b/arch/riscv/kernel/acpi.c
@@ -337,3 +337,19 @@ int raw_pci_write(unsigned int domain, unsigned int bus,
 }
 
 #endif	/* CONFIG_PCI */
+
+int acpi_get_cpu_uid(unsigned int cpu, u32 *uid)
+{
+	struct acpi_madt_rintc *rintc;
+
+	if (cpu >= nr_cpu_ids)
+		return -EINVAL;
+
+	rintc = acpi_cpu_get_madt_rintc(cpu);
+	if (!rintc)
+		return -ENODEV;
+
+	*uid = rintc->uid;
+	return 0;
+}
+EXPORT_SYMBOL_GPL(acpi_get_cpu_uid);
diff --git a/arch/riscv/kernel/acpi_numa.c b/arch/riscv/kernel/acpi_numa.c
index 130769e3a99c..6a2d4289f806 100644
--- a/arch/riscv/kernel/acpi_numa.c
+++ b/arch/riscv/kernel/acpi_numa.c
@@ -37,11 +37,14 @@ static int __init acpi_numa_get_nid(unsigned int cpu)
 
 static inline int get_cpu_for_acpi_id(u32 uid)
 {
-	int cpu;
+	u32 cpu_uid;
+	int ret;
 
-	for (cpu = 0; cpu < nr_cpu_ids; cpu++)
-		if (uid == get_acpi_id_for_cpu(cpu))
+	for (int cpu = 0; cpu < nr_cpu_ids; cpu++) {
+		ret = acpi_get_cpu_uid(cpu, &cpu_uid);
+		if (ret == 0 && uid == cpu_uid)
 			return cpu;
+	}
 
 	return -EINVAL;
 }
diff --git a/drivers/acpi/riscv/rhct.c b/drivers/acpi/riscv/rhct.c
index caa2c16e1697..8f3f38c64a88 100644
--- a/drivers/acpi/riscv/rhct.c
+++ b/drivers/acpi/riscv/rhct.c
@@ -44,10 +44,15 @@ int acpi_get_riscv_isa(struct acpi_table_header *table, unsigned int cpu, const
 	struct acpi_rhct_isa_string *isa_node;
 	struct acpi_table_rhct *rhct;
 	u32 *hart_info_node_offset;
-	u32 acpi_cpu_id = get_acpi_id_for_cpu(cpu);
+	u32 acpi_cpu_id;
+	int ret;
 
 	BUG_ON(acpi_disabled);
 
+	ret = acpi_get_cpu_uid(cpu, &acpi_cpu_id);
+	if (ret != 0)
+		return ret;
+
 	if (!table) {
 		rhct = acpi_get_rhct();
 		if (!rhct)
-- 
2.17.1



From xen-devel-bounces@lists.xenproject.org Wed Apr 01 08:17:00 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 01 Apr 2026 08:17:00 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1269879.1558746 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1w7qky-0005Ef-8m; Wed, 01 Apr 2026 08:16:56 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1269879.1558746; Wed, 01 Apr 2026 08:16: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 1w7qky-0005EY-5G; Wed, 01 Apr 2026 08:16:56 +0000
Received: by outflank-mailman (input) for mailman id 1269879;
 Wed, 01 Apr 2026 08:16:55 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <fengchengwen@huawei.com>) id 1w7qkw-0005EK-OQ
 for xen-devel@lists.xenproject.org; Wed, 01 Apr 2026 08:16:55 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1w7qkv-003Uhh-By
 for xen-devel@lists.xenproject.org; Wed, 01 Apr 2026 10:16:54 +0200
Received: from [10.42.69.2] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <fengchengwen@huawei.com>)
 id 69ccd468-5cb7-0a2a0a5109dd-0a2a4502cf5e-48
 for <xen-devel@lists.xenproject.org>; Wed, 01 Apr 2026 10:16:53 +0200
Received: from [113.46.200.219] (helo=canpmsgout04.his.huawei.com)
 by tlsNG-720697.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.0)
 (envelope-from <fengchengwen@huawei.com>)
 id 69ccd472-42fa-0a2a45020019-712ec8dbfa84-3
 for <xen-devel@lists.xenproject.org>; Wed, 01 Apr 2026 10:16:52 +0200
Received: from mail.maildlp.com (unknown [172.19.163.0])
 by canpmsgout04.his.huawei.com (SkyGuard) with ESMTPS id 4flyNC08FCz1prLN;
 Wed,  1 Apr 2026 16:10:35 +0800 (CST)
Received: from kwepemk500009.china.huawei.com (unknown [7.202.194.94])
 by mail.maildlp.com (Postfix) with ESMTPS id 9190740537;
 Wed,  1 Apr 2026 16:16:47 +0800 (CST)
Received: from localhost.localdomain (10.50.163.32) by
 kwepemk500009.china.huawei.com (7.202.194.94) with Microsoft SMTP Server
 (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id
 15.2.1544.11; Wed, 1 Apr 2026 16:16:45 +0800
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
Authentication-Results: eu.smtp.expurgate.cloud; dkim=pass header.s=dkim header.d=huawei.com header.i="@huawei.com" header.h=From
dkim-signature: v=1; a=rsa-sha256; d=huawei.com; s=dkim;
	c=relaxed/relaxed; q=dns/txt;
	h=From;
	bh=c9AlrYXsxBFF3IzNBDnKrFfgKSQZlOG3wlCt2foyY+Y=;
	b=s0jHWYuxfoxkRN+t4KseYGhpk5P2m2+oPxvld1K2wRhg/xq/KJ6rPLjiy3A+eHJcZDd4LECJR
	hk2c9oJcG9N70ZRCYC/HPCz/7V6gQufIs9IC6ExJohMMFTan9KIJsB7lPAuY/r27HFSh7GQcO9C
	uY27gGt24m7NlqDK+Rfdv9c=
From: Chengwen Feng <fengchengwen@huawei.com>
To: Bjorn Helgaas <bhelgaas@google.com>, Catalin Marinas
	<catalin.marinas@arm.com>, Will Deacon <will@kernel.org>, "Rafael J .
 Wysocki" <rafael@kernel.org>
CC: Jonathan Corbet <corbet@lwn.net>, WANG Xuerui <kernel@xen0n.name>, Thomas
 Gleixner <tglx@kernel.org>, Dave Hansen <dave.hansen@linux.intel.com>, "H .
 Peter Anvin" <hpa@zytor.com>, Juergen Gross <jgross@suse.com>, Boris
 Ostrovsky <boris.ostrovsky@oracle.com>, Len Brown <lenb@kernel.org>, Sunil V
 L <sunilvl@ventanamicro.com>, Mark Rutland <mark.rutland@arm.com>, Jonathan
 Cameron <jonathan.cameron@huawei.com>, Kees Cook <kees@kernel.org>, Yanteng
 Si <si.yanteng@linux.dev>, Sean Christopherson <seanjc@google.com>, Kai Huang
	<kai.huang@intel.com>, Tom Lendacky <thomas.lendacky@amd.com>, Thomas Huth
	<thuth@redhat.com>, Thorsten Blum <thorsten.blum@linux.dev>, Kevin Loughlin
	<kevinloughlin@google.com>, Zheyun Shen <szy0127@sjtu.edu.cn>, Peter Zijlstra
	<peterz@infradead.org>, Pawan Gupta <pawan.kumar.gupta@linux.intel.com>, Xin
 Li <xin@zytor.com>, "Ahmed S . Darwish" <darwi@linutronix.de>, Sohil Mehta
	<sohil.mehta@intel.com>, Ilkka Koskinen <ilkka@os.amperecomputing.com>, Robin
 Murphy <robin.murphy@arm.com>, James Clark <james.clark@linaro.org>, Besar
 Wicaksono <bwicaksono@nvidia.com>, Ma Ke <make24@iscas.ac.cn>, Wei Huang
	<wei.huang2@amd.com>, Andy Gospodarek <andrew.gospodarek@broadcom.com>,
	Somnath Kotur <somnath.kotur@broadcom.com>, <punit.agrawal@oss.qualcomm.com>,
	<guohanjun@huawei.com>, <suzuki.poulose@arm.com>, <ryan.roberts@arm.com>,
	<chenl311@chinatelecom.cn>, <masahiroy@kernel.org>,
	<wangyuquan1236@phytium.com.cn>, <anshuman.khandual@arm.com>,
	<heinrich.schuchardt@canonical.com>, <Eric.VanTassell@amd.com>,
	<wangzhou1@hisilicon.com>, <wanghuiqiang@huawei.com>,
	<liuyonglong@huawei.com>, <fengchengwen@huawei.com>,
	<linux-pci@vger.kernel.org>, <linux-doc@vger.kernel.org>,
	<linux-kernel@vger.kernel.org>, <linux-arm-kernel@lists.infradead.org>,
	<loongarch@lists.linux.dev>, <linux-riscv@lists.infradead.org>,
	<xen-devel@lists.xenproject.org>, <linux-acpi@vger.kernel.org>,
	<linux-perf-users@vger.kernel.org>, <stable@vger.kernel.org>,
	<x86@kernel.org>
Subject: [PATCH RESEND v10 0/8] ACPI: Unify CPU UID interface and fix ARM64 TPH steer-tag issue
Date: Wed, 1 Apr 2026 16:16:32 +0800
Message-ID: <20260401081640.26875-1-fengchengwen@huawei.com>
X-Mailer: git-send-email 2.17.1
MIME-Version: 1.0
Content-Type: text/plain
X-Originating-IP: [10.50.163.32]
X-ClientProxiedBy: kwepems200001.china.huawei.com (7.221.188.67) To
 kwepemk500009.china.huawei.com (7.202.194.94)
X-purgate-ID: tlsNG-720697/1775031413-ADD38CD1-8503821E/0/0
X-purgate-type: clean
X-purgate-size: 2769

This patchset unifies ACPI Processor UID retrieval across
arm64/loongarch/riscv/x86 via acpi_get_cpu_uid() (with input validation)
and fixes ARM64 CPU steer-tag retrieval failure in PCI/TPH:

1-4: Add acpi_get_cpu_uid() for arm64/loongarch/riscv/x86 (update
     respective users)
5: Centralize acpi_get_cpu_uid() declaration in include/linux/acpi.h
6: Clean up perf/arm_cspmu
7: Clean up ACPI/PPTT and remove unused get_acpi_id_for_cpu()
8: Pass ACPI Processor UID to Cache Locality _DSM

The interface refactor ensures consistent CPU UID retrieval across
architectures (no functional changes for valid inputs) and provides the
unified interface required for the ARM64 TPH fix

---
Changes in v10-resend:
- Add Catalin's ack-by for arm64 commit
- Add CC to x86@kernel.org

Changes in v10:
- Refine commit header&log according to Punit's and Bjorn's review
- Split perf/arm_cspmu as a separate commit which address Punit's
  review

Changes in v9:
- Address Bjorn's review: split commits to each platform so that make
  them easy to review

Changes in v8:
- Moving arm64's get_cpu_for_acpi_id() to kernel/acpi.c which address
  Jeremy's review

Chengwen Feng (8):
  arm64: acpi: Add acpi_get_cpu_uid() for unified ACPI CPU UID retrieval
  LoongArch: Add acpi_get_cpu_uid() for unified ACPI CPU UID retrieval
  RISC-V: ACPI: Add acpi_get_cpu_uid() for unified ACPI CPU UID
    retrieval
  x86/acpi: Add acpi_get_cpu_uid() for unified ACPI CPU UID retrieval
  ACPI: Centralize acpi_get_cpu_uid() declaration in
    include/linux/acpi.h
  perf: arm_cspmu: Switch to acpi_get_cpu_uid() from
    get_acpi_id_for_cpu()
  ACPI: PPTT: Use acpi_get_cpu_uid() and remove get_acpi_id_for_cpu()
  PCI/TPH: Pass ACPI Processor UID to Cache Locality _DSM

 Documentation/PCI/tph.rst          |  4 +--
 arch/arm64/include/asm/acpi.h      | 17 +---------
 arch/arm64/kernel/acpi.c           | 30 ++++++++++++++++++
 arch/loongarch/include/asm/acpi.h  |  5 ---
 arch/loongarch/kernel/acpi.c       |  9 ++++++
 arch/riscv/include/asm/acpi.h      |  4 ---
 arch/riscv/kernel/acpi.c           | 16 ++++++++++
 arch/riscv/kernel/acpi_numa.c      |  9 ++++--
 arch/x86/include/asm/cpu.h         |  1 -
 arch/x86/include/asm/smp.h         |  1 -
 arch/x86/kernel/acpi/boot.c        | 20 ++++++++++++
 arch/x86/xen/enlighten_hvm.c       |  5 +--
 drivers/acpi/pptt.c                | 50 ++++++++++++++++++++++--------
 drivers/acpi/riscv/rhct.c          |  7 ++++-
 drivers/pci/tph.c                  | 16 +++++++---
 drivers/perf/arm_cspmu/arm_cspmu.c |  6 ++--
 include/linux/acpi.h               | 11 +++++++
 include/linux/pci-tph.h            |  4 +--
 18 files changed, 158 insertions(+), 57 deletions(-)

-- 
2.17.1



From xen-devel-bounces@lists.xenproject.org Wed Apr 01 08:17:01 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 01 Apr 2026 08:17:01 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1269883.1558783 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1w7ql3-00068t-Fj; Wed, 01 Apr 2026 08:17:01 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1269883.1558783; Wed, 01 Apr 2026 08:17: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 1w7ql3-00068e-Cb; Wed, 01 Apr 2026 08:17:01 +0000
Received: by outflank-mailman (input) for mailman id 1269883;
 Wed, 01 Apr 2026 08:17:00 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <fengchengwen@huawei.com>) id 1w7ql2-0005zU-2l
 for xen-devel@lists.xenproject.org; Wed, 01 Apr 2026 08:17:00 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1w7ql1-003Uhh-Dx
 for xen-devel@lists.xenproject.org; Wed, 01 Apr 2026 10:16:59 +0200
Received: from [10.42.69.1] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <fengchengwen@huawei.com>)
 id 69ccd472-5cb7-0a2a0a5109dd-0a2a4501cb74-24
 for <xen-devel@lists.xenproject.org>; Wed, 01 Apr 2026 10:16:59 +0200
Received: from [113.46.200.220] (helo=canpmsgout05.his.huawei.com)
 by tlsNG-d62444.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.0)
 (envelope-from <fengchengwen@huawei.com>)
 id 69ccd478-6fc9-0a2a45010019-712ec8dc105a-3
 for <xen-devel@lists.xenproject.org>; Wed, 01 Apr 2026 10:16:58 +0200
Received: from mail.maildlp.com (unknown [172.19.162.144])
 by canpmsgout05.his.huawei.com (SkyGuard) with ESMTPS id 4flyPG5v0Lz12LJb;
 Wed,  1 Apr 2026 16:11:30 +0800 (CST)
Received: from kwepemk500009.china.huawei.com (unknown [7.202.194.94])
 by mail.maildlp.com (Postfix) with ESMTPS id 225C340538;
 Wed,  1 Apr 2026 16:16:54 +0800 (CST)
Received: from localhost.localdomain (10.50.163.32) by
 kwepemk500009.china.huawei.com (7.202.194.94) with Microsoft SMTP Server
 (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id
 15.2.1544.11; Wed, 1 Apr 2026 16:16:52 +0800
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
Authentication-Results: eu.smtp.expurgate.cloud; dkim=pass header.s=dkim header.d=huawei.com header.i="@huawei.com" header.h=From
dkim-signature: v=1; a=rsa-sha256; d=huawei.com; s=dkim;
	c=relaxed/relaxed; q=dns/txt;
	h=From;
	bh=/bDHT0vostLWviBcH0LGnrUXN/7+wtQhJKC8xvlaZ1w=;
	b=I76d5QkgB06G/X/wos41vVtgRQepXQMzc5bCmZUjG61rsMvqBqMxjyiWV13dSj/N0vARfMR+I
	TIpo+e0ZZ/G2PYTKyAK+od5BAX4GJxZnIIHvWHRL80Tl9ySzHsM4ReaK/m6QcwIZU7CfdK4/sr4
	hK45B5FTc4PW95z2AIDDxVc=
From: Chengwen Feng <fengchengwen@huawei.com>
To: Bjorn Helgaas <bhelgaas@google.com>, Catalin Marinas
	<catalin.marinas@arm.com>, Will Deacon <will@kernel.org>, "Rafael J .
 Wysocki" <rafael@kernel.org>
CC: Jonathan Corbet <corbet@lwn.net>, WANG Xuerui <kernel@xen0n.name>, Thomas
 Gleixner <tglx@kernel.org>, Dave Hansen <dave.hansen@linux.intel.com>, "H .
 Peter Anvin" <hpa@zytor.com>, Juergen Gross <jgross@suse.com>, Boris
 Ostrovsky <boris.ostrovsky@oracle.com>, Len Brown <lenb@kernel.org>, Sunil V
 L <sunilvl@ventanamicro.com>, Mark Rutland <mark.rutland@arm.com>, Jonathan
 Cameron <jonathan.cameron@huawei.com>, Kees Cook <kees@kernel.org>, Yanteng
 Si <si.yanteng@linux.dev>, Sean Christopherson <seanjc@google.com>, Kai Huang
	<kai.huang@intel.com>, Tom Lendacky <thomas.lendacky@amd.com>, Thomas Huth
	<thuth@redhat.com>, Thorsten Blum <thorsten.blum@linux.dev>, Kevin Loughlin
	<kevinloughlin@google.com>, Zheyun Shen <szy0127@sjtu.edu.cn>, Peter Zijlstra
	<peterz@infradead.org>, Pawan Gupta <pawan.kumar.gupta@linux.intel.com>, Xin
 Li <xin@zytor.com>, "Ahmed S . Darwish" <darwi@linutronix.de>, Sohil Mehta
	<sohil.mehta@intel.com>, Ilkka Koskinen <ilkka@os.amperecomputing.com>, Robin
 Murphy <robin.murphy@arm.com>, James Clark <james.clark@linaro.org>, Besar
 Wicaksono <bwicaksono@nvidia.com>, Ma Ke <make24@iscas.ac.cn>, Wei Huang
	<wei.huang2@amd.com>, Andy Gospodarek <andrew.gospodarek@broadcom.com>,
	Somnath Kotur <somnath.kotur@broadcom.com>, <punit.agrawal@oss.qualcomm.com>,
	<guohanjun@huawei.com>, <suzuki.poulose@arm.com>, <ryan.roberts@arm.com>,
	<chenl311@chinatelecom.cn>, <masahiroy@kernel.org>,
	<wangyuquan1236@phytium.com.cn>, <anshuman.khandual@arm.com>,
	<heinrich.schuchardt@canonical.com>, <Eric.VanTassell@amd.com>,
	<wangzhou1@hisilicon.com>, <wanghuiqiang@huawei.com>,
	<liuyonglong@huawei.com>, <fengchengwen@huawei.com>,
	<linux-pci@vger.kernel.org>, <linux-doc@vger.kernel.org>,
	<linux-kernel@vger.kernel.org>, <linux-arm-kernel@lists.infradead.org>,
	<loongarch@lists.linux.dev>, <linux-riscv@lists.infradead.org>,
	<xen-devel@lists.xenproject.org>, <linux-acpi@vger.kernel.org>,
	<linux-perf-users@vger.kernel.org>, <stable@vger.kernel.org>,
	<x86@kernel.org>
Subject: [PATCH RESEND v10 4/8] x86/acpi: Add acpi_get_cpu_uid() for unified ACPI CPU UID retrieval
Date: Wed, 1 Apr 2026 16:16:36 +0800
Message-ID: <20260401081640.26875-5-fengchengwen@huawei.com>
X-Mailer: git-send-email 2.17.1
In-Reply-To: <20260401081640.26875-1-fengchengwen@huawei.com>
References: <20260401081640.26875-1-fengchengwen@huawei.com>
MIME-Version: 1.0
Content-Type: text/plain
X-Originating-IP: [10.50.163.32]
X-ClientProxiedBy: kwepems200001.china.huawei.com (7.221.188.67) To
 kwepemk500009.china.huawei.com (7.202.194.94)
X-purgate-ID: tlsNG-d62444/1775031419-14EE3185-4F85D5D4/0/0
X-purgate-type: clean
X-purgate-size: 3673

As a step towards unifying the interface for retrieving ACPI CPU UID
across architectures, introduce a new function acpi_get_cpu_uid() for
x86. While at it, add input validation to make the code more robust.

Update Xen-related code to use acpi_get_cpu_uid() instead of the legacy
cpu_acpi_id() function, and remove the now-unused cpu_acpi_id() to clean
up redundant code.

Cc: stable@vger.kernel.org
Signed-off-by: Chengwen Feng <fengchengwen@huawei.com>
Reviewed-by: Jonathan Cameron <jonathan.cameron@huawei.com>
Reviewed-by: Juergen Gross <jgross@suse.com>
---
 arch/x86/include/asm/acpi.h  |  2 ++
 arch/x86/include/asm/cpu.h   |  1 -
 arch/x86/include/asm/smp.h   |  1 -
 arch/x86/kernel/acpi/boot.c  | 20 ++++++++++++++++++++
 arch/x86/xen/enlighten_hvm.c |  5 +++--
 5 files changed, 25 insertions(+), 4 deletions(-)

diff --git a/arch/x86/include/asm/acpi.h b/arch/x86/include/asm/acpi.h
index a03aa6f999d1..92b5c27c4fea 100644
--- a/arch/x86/include/asm/acpi.h
+++ b/arch/x86/include/asm/acpi.h
@@ -157,6 +157,8 @@ static inline bool acpi_has_cpu_in_madt(void)
 	return !!acpi_lapic;
 }
 
+int acpi_get_cpu_uid(unsigned int cpu, u32 *uid);
+
 #define ACPI_HAVE_ARCH_SET_ROOT_POINTER
 static __always_inline void acpi_arch_set_root_pointer(u64 addr)
 {
diff --git a/arch/x86/include/asm/cpu.h b/arch/x86/include/asm/cpu.h
index ad235dda1ded..57a0786dfd75 100644
--- a/arch/x86/include/asm/cpu.h
+++ b/arch/x86/include/asm/cpu.h
@@ -11,7 +11,6 @@
 
 #ifndef CONFIG_SMP
 #define cpu_physical_id(cpu)			boot_cpu_physical_apicid
-#define cpu_acpi_id(cpu)			0
 #endif /* CONFIG_SMP */
 
 #ifdef CONFIG_HOTPLUG_CPU
diff --git a/arch/x86/include/asm/smp.h b/arch/x86/include/asm/smp.h
index 84951572ab81..05d1d479b4cf 100644
--- a/arch/x86/include/asm/smp.h
+++ b/arch/x86/include/asm/smp.h
@@ -130,7 +130,6 @@ __visible void smp_call_function_interrupt(struct pt_regs *regs);
 __visible void smp_call_function_single_interrupt(struct pt_regs *r);
 
 #define cpu_physical_id(cpu)	per_cpu(x86_cpu_to_apicid, cpu)
-#define cpu_acpi_id(cpu)	per_cpu(x86_cpu_to_acpiid, cpu)
 
 /*
  * This function is needed by all SMP systems. It must _always_ be valid
diff --git a/arch/x86/kernel/acpi/boot.c b/arch/x86/kernel/acpi/boot.c
index a3f2fb1fea1b..ceba24f65ae3 100644
--- a/arch/x86/kernel/acpi/boot.c
+++ b/arch/x86/kernel/acpi/boot.c
@@ -1848,3 +1848,23 @@ void __iomem * (*acpi_os_ioremap)(acpi_physical_address phys, acpi_size size) =
 	x86_acpi_os_ioremap;
 EXPORT_SYMBOL_GPL(acpi_os_ioremap);
 #endif
+
+int acpi_get_cpu_uid(unsigned int cpu, u32 *uid)
+{
+	u32 acpi_id;
+
+	if (cpu >= nr_cpu_ids)
+		return -EINVAL;
+
+#ifdef CONFIG_SMP
+	acpi_id = per_cpu(x86_cpu_to_acpiid, cpu);
+	if (acpi_id == CPU_ACPIID_INVALID)
+		return -ENODEV;
+#else
+	acpi_id = 0;
+#endif
+
+	*uid = acpi_id;
+	return 0;
+}
+EXPORT_SYMBOL_GPL(acpi_get_cpu_uid);
diff --git a/arch/x86/xen/enlighten_hvm.c b/arch/x86/xen/enlighten_hvm.c
index fe57ff85d004..2f9fa27e5a3c 100644
--- a/arch/x86/xen/enlighten_hvm.c
+++ b/arch/x86/xen/enlighten_hvm.c
@@ -151,6 +151,7 @@ static void xen_hvm_crash_shutdown(struct pt_regs *regs)
 
 static int xen_cpu_up_prepare_hvm(unsigned int cpu)
 {
+	u32 cpu_uid;
 	int rc = 0;
 
 	/*
@@ -161,8 +162,8 @@ static int xen_cpu_up_prepare_hvm(unsigned int cpu)
 	 */
 	xen_uninit_lock_cpu(cpu);
 
-	if (cpu_acpi_id(cpu) != CPU_ACPIID_INVALID)
-		per_cpu(xen_vcpu_id, cpu) = cpu_acpi_id(cpu);
+	if (acpi_get_cpu_uid(cpu, &cpu_uid) == 0)
+		per_cpu(xen_vcpu_id, cpu) = cpu_uid;
 	else
 		per_cpu(xen_vcpu_id, cpu) = cpu;
 	xen_vcpu_setup(cpu);
-- 
2.17.1



From xen-devel-bounces@lists.xenproject.org Wed Apr 01 08:17:03 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 01 Apr 2026 08:17:03 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1269884.1558792 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1w7ql5-0006QW-Op; Wed, 01 Apr 2026 08:17:03 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1269884.1558792; Wed, 01 Apr 2026 08:17: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 1w7ql5-0006QL-L1; Wed, 01 Apr 2026 08:17:03 +0000
Received: by outflank-mailman (input) for mailman id 1269884;
 Wed, 01 Apr 2026 08:17:02 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <fengchengwen@huawei.com>) id 1w7ql4-0006G2-24
 for xen-devel@lists.xenproject.org; Wed, 01 Apr 2026 08:17:02 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1w7ql3-00Ez7l-Dz
 for xen-devel@lists.xenproject.org; Wed, 01 Apr 2026 10:17:01 +0200
Received: from [10.42.69.6] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <fengchengwen@huawei.com>)
 id 69ccd476-2eae-0a2a0a5409dd-0a2a4506e4f2-26
 for <xen-devel@lists.xenproject.org>; Wed, 01 Apr 2026 10:17:00 +0200
Received: from [113.46.200.217] (helo=canpmsgout02.his.huawei.com)
 by tlsNG-16d1c6.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.0)
 (envelope-from <fengchengwen@huawei.com>)
 id 69ccd478-0df0-0a2a45060019-712ec8d97316-3
 for <xen-devel@lists.xenproject.org>; Wed, 01 Apr 2026 10:16:59 +0200
Received: from mail.maildlp.com (unknown [172.19.162.140])
 by canpmsgout02.his.huawei.com (SkyGuard) with ESMTPS id 4flyNW224WzcZxn;
 Wed,  1 Apr 2026 16:10:51 +0800 (CST)
Received: from kwepemk500009.china.huawei.com (unknown [7.202.194.94])
 by mail.maildlp.com (Postfix) with ESMTPS id BC54C203B2;
 Wed,  1 Apr 2026 16:16:55 +0800 (CST)
Received: from localhost.localdomain (10.50.163.32) by
 kwepemk500009.china.huawei.com (7.202.194.94) with Microsoft SMTP Server
 (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id
 15.2.1544.11; Wed, 1 Apr 2026 16:16:53 +0800
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
Authentication-Results: eu.smtp.expurgate.cloud; dkim=pass header.s=dkim header.d=huawei.com header.i="@huawei.com" header.h=From
dkim-signature: v=1; a=rsa-sha256; d=huawei.com; s=dkim;
	c=relaxed/relaxed; q=dns/txt;
	h=From;
	bh=ANvjKw/V+x/xgnK84bsEKs2slfuc72S2wtUZ6Ltd7AU=;
	b=gAhZczIG65dC2yh+2aADvwVAp++19t5FyGF4ZzbeSLiKAirv37HFkiFuy/A1lWBlr5MpsM4Ut
	Lnhv1/GDpeZI1w99rpED8gfQlunCOXOTiUjR1yp3rBy23eO6v/Ttq6ZYJsfo+fm/1xgWotDODEb
	YV0jLZY6lrTP0qpYzZ1KoG4=
From: Chengwen Feng <fengchengwen@huawei.com>
To: Bjorn Helgaas <bhelgaas@google.com>, Catalin Marinas
	<catalin.marinas@arm.com>, Will Deacon <will@kernel.org>, "Rafael J .
 Wysocki" <rafael@kernel.org>
CC: Jonathan Corbet <corbet@lwn.net>, WANG Xuerui <kernel@xen0n.name>, Thomas
 Gleixner <tglx@kernel.org>, Dave Hansen <dave.hansen@linux.intel.com>, "H .
 Peter Anvin" <hpa@zytor.com>, Juergen Gross <jgross@suse.com>, Boris
 Ostrovsky <boris.ostrovsky@oracle.com>, Len Brown <lenb@kernel.org>, Sunil V
 L <sunilvl@ventanamicro.com>, Mark Rutland <mark.rutland@arm.com>, Jonathan
 Cameron <jonathan.cameron@huawei.com>, Kees Cook <kees@kernel.org>, Yanteng
 Si <si.yanteng@linux.dev>, Sean Christopherson <seanjc@google.com>, Kai Huang
	<kai.huang@intel.com>, Tom Lendacky <thomas.lendacky@amd.com>, Thomas Huth
	<thuth@redhat.com>, Thorsten Blum <thorsten.blum@linux.dev>, Kevin Loughlin
	<kevinloughlin@google.com>, Zheyun Shen <szy0127@sjtu.edu.cn>, Peter Zijlstra
	<peterz@infradead.org>, Pawan Gupta <pawan.kumar.gupta@linux.intel.com>, Xin
 Li <xin@zytor.com>, "Ahmed S . Darwish" <darwi@linutronix.de>, Sohil Mehta
	<sohil.mehta@intel.com>, Ilkka Koskinen <ilkka@os.amperecomputing.com>, Robin
 Murphy <robin.murphy@arm.com>, James Clark <james.clark@linaro.org>, Besar
 Wicaksono <bwicaksono@nvidia.com>, Ma Ke <make24@iscas.ac.cn>, Wei Huang
	<wei.huang2@amd.com>, Andy Gospodarek <andrew.gospodarek@broadcom.com>,
	Somnath Kotur <somnath.kotur@broadcom.com>, <punit.agrawal@oss.qualcomm.com>,
	<guohanjun@huawei.com>, <suzuki.poulose@arm.com>, <ryan.roberts@arm.com>,
	<chenl311@chinatelecom.cn>, <masahiroy@kernel.org>,
	<wangyuquan1236@phytium.com.cn>, <anshuman.khandual@arm.com>,
	<heinrich.schuchardt@canonical.com>, <Eric.VanTassell@amd.com>,
	<wangzhou1@hisilicon.com>, <wanghuiqiang@huawei.com>,
	<liuyonglong@huawei.com>, <fengchengwen@huawei.com>,
	<linux-pci@vger.kernel.org>, <linux-doc@vger.kernel.org>,
	<linux-kernel@vger.kernel.org>, <linux-arm-kernel@lists.infradead.org>,
	<loongarch@lists.linux.dev>, <linux-riscv@lists.infradead.org>,
	<xen-devel@lists.xenproject.org>, <linux-acpi@vger.kernel.org>,
	<linux-perf-users@vger.kernel.org>, <stable@vger.kernel.org>,
	<x86@kernel.org>
Subject: [PATCH RESEND v10 5/8] ACPI: Centralize acpi_get_cpu_uid() declaration in include/linux/acpi.h
Date: Wed, 1 Apr 2026 16:16:37 +0800
Message-ID: <20260401081640.26875-6-fengchengwen@huawei.com>
X-Mailer: git-send-email 2.17.1
In-Reply-To: <20260401081640.26875-1-fengchengwen@huawei.com>
References: <20260401081640.26875-1-fengchengwen@huawei.com>
MIME-Version: 1.0
Content-Type: text/plain
X-Originating-IP: [10.50.163.32]
X-ClientProxiedBy: kwepems200001.china.huawei.com (7.221.188.67) To
 kwepemk500009.china.huawei.com (7.202.194.94)
X-purgate-ID: tlsNG-16d1c6/1775031420-5F93A3D8-FD3324E8/0/0
X-purgate-type: clean
X-purgate-size: 3353

Centralize acpi_get_cpu_uid() in include/linux/acpi.h (global scope) and
remove arch-specific declarations from arm64/loongarch/riscv/x86
asm/acpi.h. This unifies the interface across architectures and
simplifies maintenance by eliminating duplicate prototypes.

Cc: stable@vger.kernel.org
Signed-off-by: Chengwen Feng <fengchengwen@huawei.com>
Reviewed-by: Jonathan Cameron <jonathan.cameron@huawei.com>
---
 arch/arm64/include/asm/acpi.h     |  1 -
 arch/loongarch/include/asm/acpi.h |  1 -
 arch/riscv/include/asm/acpi.h     |  1 -
 arch/x86/include/asm/acpi.h       |  2 --
 include/linux/acpi.h              | 11 +++++++++++
 5 files changed, 11 insertions(+), 5 deletions(-)

diff --git a/arch/arm64/include/asm/acpi.h b/arch/arm64/include/asm/acpi.h
index 2219a3301e72..bdb0ecf95b5c 100644
--- a/arch/arm64/include/asm/acpi.h
+++ b/arch/arm64/include/asm/acpi.h
@@ -118,7 +118,6 @@ static inline u32 get_acpi_id_for_cpu(unsigned int cpu)
 {
 	return	acpi_cpu_get_madt_gicc(cpu)->uid;
 }
-int acpi_get_cpu_uid(unsigned int cpu, u32 *uid);
 int get_cpu_for_acpi_id(u32 uid);
 
 static inline void arch_fix_phys_package_id(int num, u32 slot) { }
diff --git a/arch/loongarch/include/asm/acpi.h b/arch/loongarch/include/asm/acpi.h
index 8bb101b4557e..7376840fa9f7 100644
--- a/arch/loongarch/include/asm/acpi.h
+++ b/arch/loongarch/include/asm/acpi.h
@@ -44,7 +44,6 @@ static inline u32 get_acpi_id_for_cpu(unsigned int cpu)
 {
 	return acpi_core_pic[cpu_logical_map(cpu)].processor_id;
 }
-int acpi_get_cpu_uid(unsigned int cpu, u32 *uid);
 
 #endif /* !CONFIG_ACPI */
 
diff --git a/arch/riscv/include/asm/acpi.h b/arch/riscv/include/asm/acpi.h
index f3520cc85af3..6e13695120bc 100644
--- a/arch/riscv/include/asm/acpi.h
+++ b/arch/riscv/include/asm/acpi.h
@@ -65,7 +65,6 @@ static inline u32 get_acpi_id_for_cpu(int cpu)
 {
 	return acpi_cpu_get_madt_rintc(cpu)->uid;
 }
-int acpi_get_cpu_uid(unsigned int cpu, u32 *uid);
 
 int acpi_get_riscv_isa(struct acpi_table_header *table,
 		       unsigned int cpu, const char **isa);
diff --git a/arch/x86/include/asm/acpi.h b/arch/x86/include/asm/acpi.h
index 92b5c27c4fea..a03aa6f999d1 100644
--- a/arch/x86/include/asm/acpi.h
+++ b/arch/x86/include/asm/acpi.h
@@ -157,8 +157,6 @@ static inline bool acpi_has_cpu_in_madt(void)
 	return !!acpi_lapic;
 }
 
-int acpi_get_cpu_uid(unsigned int cpu, u32 *uid);
-
 #define ACPI_HAVE_ARCH_SET_ROOT_POINTER
 static __always_inline void acpi_arch_set_root_pointer(u64 addr)
 {
diff --git a/include/linux/acpi.h b/include/linux/acpi.h
index 4d2f0bed7a06..74a73f0e5944 100644
--- a/include/linux/acpi.h
+++ b/include/linux/acpi.h
@@ -324,6 +324,17 @@ int acpi_unmap_cpu(int cpu);
 
 acpi_handle acpi_get_processor_handle(int cpu);
 
+/**
+ * acpi_get_cpu_uid() - Get ACPI Processor UID of from MADT table
+ * @cpu: Logical CPU number (0-based)
+ * @uid: Pointer to store ACPI Processor UID
+ *
+ * Return: 0 on success (ACPI Processor ID stored in *uid);
+ *         -EINVAL if CPU number is invalid or out of range;
+ *         -ENODEV if ACPI Processor UID for the CPU is not found.
+ */
+int acpi_get_cpu_uid(unsigned int cpu, u32 *uid);
+
 #ifdef CONFIG_ACPI_HOTPLUG_IOAPIC
 int acpi_get_ioapic_id(acpi_handle handle, u32 gsi_base, u64 *phys_addr);
 #endif
-- 
2.17.1



From xen-devel-bounces@lists.xenproject.org Wed Apr 01 08:17:04 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 01 Apr 2026 08:17:04 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1269885.1558797 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1w7ql6-0006UN-CI; Wed, 01 Apr 2026 08:17:04 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1269885.1558797; Wed, 01 Apr 2026 08: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 1w7ql5-0006Sh-Vy; Wed, 01 Apr 2026 08:17:03 +0000
Received: by outflank-mailman (input) for mailman id 1269885;
 Wed, 01 Apr 2026 08:17:02 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <fengchengwen@huawei.com>) id 1w7ql4-0006M0-MF
 for xen-devel@lists.xenproject.org; Wed, 01 Apr 2026 08:17:02 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1w7ql4-003Ul3-0o
 for xen-devel@lists.xenproject.org; Wed, 01 Apr 2026 10:17:02 +0200
Received: from [10.42.69.1] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <fengchengwen@huawei.com>)
 id 69ccd472-5cb7-0a2a0a5109dd-0a2a4501cb74-40
 for <xen-devel@lists.xenproject.org>; Wed, 01 Apr 2026 10:17:01 +0200
Received: from [113.46.200.222] (helo=canpmsgout07.his.huawei.com)
 by tlsNG-d62444.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.0)
 (envelope-from <fengchengwen@huawei.com>)
 id 69ccd47a-6fc9-0a2a45010019-712ec8de30dc-3
 for <xen-devel@lists.xenproject.org>; Wed, 01 Apr 2026 10:17:01 +0200
Received: from mail.maildlp.com (unknown [172.19.163.127])
 by canpmsgout07.his.huawei.com (SkyGuard) with ESMTPS id 4flyNS2tVFzLlXm;
 Wed,  1 Apr 2026 16:10:48 +0800 (CST)
Received: from kwepemk500009.china.huawei.com (unknown [7.202.194.94])
 by mail.maildlp.com (Postfix) with ESMTPS id 6117940572;
 Wed,  1 Apr 2026 16:16:57 +0800 (CST)
Received: from localhost.localdomain (10.50.163.32) by
 kwepemk500009.china.huawei.com (7.202.194.94) with Microsoft SMTP Server
 (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id
 15.2.1544.11; Wed, 1 Apr 2026 16:16:55 +0800
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
Authentication-Results: eu.smtp.expurgate.cloud; dkim=pass header.s=dkim header.d=huawei.com header.i="@huawei.com" header.h=From
dkim-signature: v=1; a=rsa-sha256; d=huawei.com; s=dkim;
	c=relaxed/relaxed; q=dns/txt;
	h=From;
	bh=zauzEDoW1iZZVg1rc8HmzuZCwLSftmOLfB8Jb8RY2BQ=;
	b=J5TZKxoHIReSEQmbTRfXFVLNZ+/IUwuE+uW11i8+jkMuLeZGtwJVXLQfuq4LHOSczhwfghmzc
	YFCMaPt2RTCEgwugJISj0LKEbk2ZW0qVVKN1TRrnTPUfnEonx2LqeBG0wXshmZawXX2M7xbOaMf
	BcPDzWOBbKROUN5RO0vtU+I=
From: Chengwen Feng <fengchengwen@huawei.com>
To: Bjorn Helgaas <bhelgaas@google.com>, Catalin Marinas
	<catalin.marinas@arm.com>, Will Deacon <will@kernel.org>, "Rafael J .
 Wysocki" <rafael@kernel.org>
CC: Jonathan Corbet <corbet@lwn.net>, WANG Xuerui <kernel@xen0n.name>, Thomas
 Gleixner <tglx@kernel.org>, Dave Hansen <dave.hansen@linux.intel.com>, "H .
 Peter Anvin" <hpa@zytor.com>, Juergen Gross <jgross@suse.com>, Boris
 Ostrovsky <boris.ostrovsky@oracle.com>, Len Brown <lenb@kernel.org>, Sunil V
 L <sunilvl@ventanamicro.com>, Mark Rutland <mark.rutland@arm.com>, Jonathan
 Cameron <jonathan.cameron@huawei.com>, Kees Cook <kees@kernel.org>, Yanteng
 Si <si.yanteng@linux.dev>, Sean Christopherson <seanjc@google.com>, Kai Huang
	<kai.huang@intel.com>, Tom Lendacky <thomas.lendacky@amd.com>, Thomas Huth
	<thuth@redhat.com>, Thorsten Blum <thorsten.blum@linux.dev>, Kevin Loughlin
	<kevinloughlin@google.com>, Zheyun Shen <szy0127@sjtu.edu.cn>, Peter Zijlstra
	<peterz@infradead.org>, Pawan Gupta <pawan.kumar.gupta@linux.intel.com>, Xin
 Li <xin@zytor.com>, "Ahmed S . Darwish" <darwi@linutronix.de>, Sohil Mehta
	<sohil.mehta@intel.com>, Ilkka Koskinen <ilkka@os.amperecomputing.com>, Robin
 Murphy <robin.murphy@arm.com>, James Clark <james.clark@linaro.org>, Besar
 Wicaksono <bwicaksono@nvidia.com>, Ma Ke <make24@iscas.ac.cn>, Wei Huang
	<wei.huang2@amd.com>, Andy Gospodarek <andrew.gospodarek@broadcom.com>,
	Somnath Kotur <somnath.kotur@broadcom.com>, <punit.agrawal@oss.qualcomm.com>,
	<guohanjun@huawei.com>, <suzuki.poulose@arm.com>, <ryan.roberts@arm.com>,
	<chenl311@chinatelecom.cn>, <masahiroy@kernel.org>,
	<wangyuquan1236@phytium.com.cn>, <anshuman.khandual@arm.com>,
	<heinrich.schuchardt@canonical.com>, <Eric.VanTassell@amd.com>,
	<wangzhou1@hisilicon.com>, <wanghuiqiang@huawei.com>,
	<liuyonglong@huawei.com>, <fengchengwen@huawei.com>,
	<linux-pci@vger.kernel.org>, <linux-doc@vger.kernel.org>,
	<linux-kernel@vger.kernel.org>, <linux-arm-kernel@lists.infradead.org>,
	<loongarch@lists.linux.dev>, <linux-riscv@lists.infradead.org>,
	<xen-devel@lists.xenproject.org>, <linux-acpi@vger.kernel.org>,
	<linux-perf-users@vger.kernel.org>, <stable@vger.kernel.org>,
	<x86@kernel.org>
Subject: [PATCH RESEND v10 6/8] perf: arm_cspmu: Switch to acpi_get_cpu_uid() from get_acpi_id_for_cpu()
Date: Wed, 1 Apr 2026 16:16:38 +0800
Message-ID: <20260401081640.26875-7-fengchengwen@huawei.com>
X-Mailer: git-send-email 2.17.1
In-Reply-To: <20260401081640.26875-1-fengchengwen@huawei.com>
References: <20260401081640.26875-1-fengchengwen@huawei.com>
MIME-Version: 1.0
Content-Type: text/plain
X-Originating-IP: [10.50.163.32]
X-ClientProxiedBy: kwepems200001.china.huawei.com (7.221.188.67) To
 kwepemk500009.china.huawei.com (7.202.194.94)
X-purgate-ID: tlsNG-d62444/1775031421-B7CFA185-2B2C221B/0/0
X-purgate-type: clean
X-purgate-size: 1347

Update arm_cspmu to use acpi_get_cpu_uid() instead of
get_acpi_id_for_cpu(), aligning with unified ACPI CPU UID interface.

No functional changes are introduced by this switch (valid inputs retain
original behavior).

Cc: stable@vger.kernel.org
Signed-off-by: Chengwen Feng <fengchengwen@huawei.com>
Reviewed-by: Jonathan Cameron <jonathan.cameron@huawei.com>
---
 drivers/perf/arm_cspmu/arm_cspmu.c | 6 ++++--
 1 file changed, 4 insertions(+), 2 deletions(-)

diff --git a/drivers/perf/arm_cspmu/arm_cspmu.c b/drivers/perf/arm_cspmu/arm_cspmu.c
index 34430b68f602..ed72c3d1f796 100644
--- a/drivers/perf/arm_cspmu/arm_cspmu.c
+++ b/drivers/perf/arm_cspmu/arm_cspmu.c
@@ -1107,15 +1107,17 @@ static int arm_cspmu_acpi_get_cpus(struct arm_cspmu *cspmu)
 {
 	struct acpi_apmt_node *apmt_node;
 	int affinity_flag;
+	u32 cpu_uid;
 	int cpu;
+	int ret;
 
 	apmt_node = arm_cspmu_apmt_node(cspmu->dev);
 	affinity_flag = apmt_node->flags & ACPI_APMT_FLAGS_AFFINITY;
 
 	if (affinity_flag == ACPI_APMT_FLAGS_AFFINITY_PROC) {
 		for_each_possible_cpu(cpu) {
-			if (apmt_node->proc_affinity ==
-			    get_acpi_id_for_cpu(cpu)) {
+			ret = acpi_get_cpu_uid(cpu, &cpu_uid);
+			if (ret == 0 && apmt_node->proc_affinity == cpu_uid) {
 				cpumask_set_cpu(cpu, &cspmu->associated_cpus);
 				break;
 			}
-- 
2.17.1



From xen-devel-bounces@lists.xenproject.org Wed Apr 01 08:17:05 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 01 Apr 2026 08:17:05 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1269886.1558802 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1w7ql6-0006fb-V4; Wed, 01 Apr 2026 08:17:04 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1269886.1558802; Wed, 01 Apr 2026 08: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 1w7ql6-0006bx-NW; Wed, 01 Apr 2026 08:17:04 +0000
Received: by outflank-mailman (input) for mailman id 1269886;
 Wed, 01 Apr 2026 08:17:03 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <fengchengwen@huawei.com>) id 1w7ql5-0006Pe-Kq
 for xen-devel@lists.xenproject.org; Wed, 01 Apr 2026 08:17:03 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1w7ql4-003Ulf-WB
 for xen-devel@lists.xenproject.org; Wed, 01 Apr 2026 10:17:03 +0200
Received: from [10.42.69.9] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <fengchengwen@huawei.com>)
 id 69ccd474-bab6-0a2a0a5309dd-0a2a4509c454-34
 for <xen-devel@lists.xenproject.org>; Wed, 01 Apr 2026 10:17:02 +0200
Received: from [113.46.200.219] (helo=canpmsgout04.his.huawei.com)
 by tlsNG-bad1c0.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.0)
 (envelope-from <fengchengwen@huawei.com>)
 id 69ccd47b-bf79-0a2a45090019-712ec8db9016-3
 for <xen-devel@lists.xenproject.org>; Wed, 01 Apr 2026 10:17:02 +0200
Received: from mail.maildlp.com (unknown [172.19.163.0])
 by canpmsgout04.his.huawei.com (SkyGuard) with ESMTPS id 4flyNQ3F6jz1prLN;
 Wed,  1 Apr 2026 16:10:46 +0800 (CST)
Received: from kwepemk500009.china.huawei.com (unknown [7.202.194.94])
 by mail.maildlp.com (Postfix) with ESMTPS id 093EB40537;
 Wed,  1 Apr 2026 16:16:59 +0800 (CST)
Received: from localhost.localdomain (10.50.163.32) by
 kwepemk500009.china.huawei.com (7.202.194.94) with Microsoft SMTP Server
 (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id
 15.2.1544.11; Wed, 1 Apr 2026 16:16:57 +0800
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
Authentication-Results: eu.smtp.expurgate.cloud; dkim=pass header.s=dkim header.d=huawei.com header.i="@huawei.com" header.h=From
dkim-signature: v=1; a=rsa-sha256; d=huawei.com; s=dkim;
	c=relaxed/relaxed; q=dns/txt;
	h=From;
	bh=/eBsZSTPYF/YtxnkPhtkEULxH4VEHo0dKDplLzt2h+U=;
	b=ypbclQg4Iukdlkqpoizb0I/F7L+DePAd+M0//lXkMgfo2Tebtl3dWlIRb5T+BpmkoHuv3dAUf
	q4obfVRqfYA+w4THr01Bmp7st54V9VWVLRFBbSiDcMjxC61DIiVgmZCmNOX7nmSXAg0dF57r5Ul
	C2JQqU6Aei7BxV0EFNUv0ls=
From: Chengwen Feng <fengchengwen@huawei.com>
To: Bjorn Helgaas <bhelgaas@google.com>, Catalin Marinas
	<catalin.marinas@arm.com>, Will Deacon <will@kernel.org>, "Rafael J .
 Wysocki" <rafael@kernel.org>
CC: Jonathan Corbet <corbet@lwn.net>, WANG Xuerui <kernel@xen0n.name>, Thomas
 Gleixner <tglx@kernel.org>, Dave Hansen <dave.hansen@linux.intel.com>, "H .
 Peter Anvin" <hpa@zytor.com>, Juergen Gross <jgross@suse.com>, Boris
 Ostrovsky <boris.ostrovsky@oracle.com>, Len Brown <lenb@kernel.org>, Sunil V
 L <sunilvl@ventanamicro.com>, Mark Rutland <mark.rutland@arm.com>, Jonathan
 Cameron <jonathan.cameron@huawei.com>, Kees Cook <kees@kernel.org>, Yanteng
 Si <si.yanteng@linux.dev>, Sean Christopherson <seanjc@google.com>, Kai Huang
	<kai.huang@intel.com>, Tom Lendacky <thomas.lendacky@amd.com>, Thomas Huth
	<thuth@redhat.com>, Thorsten Blum <thorsten.blum@linux.dev>, Kevin Loughlin
	<kevinloughlin@google.com>, Zheyun Shen <szy0127@sjtu.edu.cn>, Peter Zijlstra
	<peterz@infradead.org>, Pawan Gupta <pawan.kumar.gupta@linux.intel.com>, Xin
 Li <xin@zytor.com>, "Ahmed S . Darwish" <darwi@linutronix.de>, Sohil Mehta
	<sohil.mehta@intel.com>, Ilkka Koskinen <ilkka@os.amperecomputing.com>, Robin
 Murphy <robin.murphy@arm.com>, James Clark <james.clark@linaro.org>, Besar
 Wicaksono <bwicaksono@nvidia.com>, Ma Ke <make24@iscas.ac.cn>, Wei Huang
	<wei.huang2@amd.com>, Andy Gospodarek <andrew.gospodarek@broadcom.com>,
	Somnath Kotur <somnath.kotur@broadcom.com>, <punit.agrawal@oss.qualcomm.com>,
	<guohanjun@huawei.com>, <suzuki.poulose@arm.com>, <ryan.roberts@arm.com>,
	<chenl311@chinatelecom.cn>, <masahiroy@kernel.org>,
	<wangyuquan1236@phytium.com.cn>, <anshuman.khandual@arm.com>,
	<heinrich.schuchardt@canonical.com>, <Eric.VanTassell@amd.com>,
	<wangzhou1@hisilicon.com>, <wanghuiqiang@huawei.com>,
	<liuyonglong@huawei.com>, <fengchengwen@huawei.com>,
	<linux-pci@vger.kernel.org>, <linux-doc@vger.kernel.org>,
	<linux-kernel@vger.kernel.org>, <linux-arm-kernel@lists.infradead.org>,
	<loongarch@lists.linux.dev>, <linux-riscv@lists.infradead.org>,
	<xen-devel@lists.xenproject.org>, <linux-acpi@vger.kernel.org>,
	<linux-perf-users@vger.kernel.org>, <stable@vger.kernel.org>,
	<x86@kernel.org>
Subject: [PATCH RESEND v10 7/8] ACPI: PPTT: Use acpi_get_cpu_uid() and remove get_acpi_id_for_cpu()
Date: Wed, 1 Apr 2026 16:16:39 +0800
Message-ID: <20260401081640.26875-8-fengchengwen@huawei.com>
X-Mailer: git-send-email 2.17.1
In-Reply-To: <20260401081640.26875-1-fengchengwen@huawei.com>
References: <20260401081640.26875-1-fengchengwen@huawei.com>
MIME-Version: 1.0
Content-Type: text/plain
X-Originating-IP: [10.50.163.32]
X-ClientProxiedBy: kwepems200001.china.huawei.com (7.221.188.67) To
 kwepemk500009.china.huawei.com (7.202.194.94)
X-purgate-ID: tlsNG-bad1c0/1775031422-2D951152-EC45E0DA/0/0
X-purgate-type: clean
X-purgate-size: 7428

Update acpi/pptt.c to use acpi_get_cpu_uid() and remove unused
get_acpi_id_for_cpu() from arm64/loongarch/riscv, completing PPTT's
migration to the unified ACPI CPU UID interface

Cc: stable@vger.kernel.org
Signed-off-by: Chengwen Feng <fengchengwen@huawei.com>
Reviewed-by: Jonathan Cameron <jonathan.cameron@huawei.com>
---
 arch/arm64/include/asm/acpi.h     |  4 ---
 arch/loongarch/include/asm/acpi.h |  5 ----
 arch/riscv/include/asm/acpi.h     |  4 ---
 drivers/acpi/pptt.c               | 50 +++++++++++++++++++++++--------
 4 files changed, 37 insertions(+), 26 deletions(-)

diff --git a/arch/arm64/include/asm/acpi.h b/arch/arm64/include/asm/acpi.h
index bdb0ecf95b5c..8a54ca6ba602 100644
--- a/arch/arm64/include/asm/acpi.h
+++ b/arch/arm64/include/asm/acpi.h
@@ -114,10 +114,6 @@ static inline bool acpi_has_cpu_in_madt(void)
 }
 
 struct acpi_madt_generic_interrupt *acpi_cpu_get_madt_gicc(int cpu);
-static inline u32 get_acpi_id_for_cpu(unsigned int cpu)
-{
-	return	acpi_cpu_get_madt_gicc(cpu)->uid;
-}
 int get_cpu_for_acpi_id(u32 uid);
 
 static inline void arch_fix_phys_package_id(int num, u32 slot) { }
diff --git a/arch/loongarch/include/asm/acpi.h b/arch/loongarch/include/asm/acpi.h
index 7376840fa9f7..eda9d4d0a493 100644
--- a/arch/loongarch/include/asm/acpi.h
+++ b/arch/loongarch/include/asm/acpi.h
@@ -40,11 +40,6 @@ extern struct acpi_madt_core_pic acpi_core_pic[MAX_CORE_PIC];
 
 extern int __init parse_acpi_topology(void);
 
-static inline u32 get_acpi_id_for_cpu(unsigned int cpu)
-{
-	return acpi_core_pic[cpu_logical_map(cpu)].processor_id;
-}
-
 #endif /* !CONFIG_ACPI */
 
 #define ACPI_TABLE_UPGRADE_MAX_PHYS ARCH_LOW_ADDRESS_LIMIT
diff --git a/arch/riscv/include/asm/acpi.h b/arch/riscv/include/asm/acpi.h
index 6e13695120bc..26ab37c171bc 100644
--- a/arch/riscv/include/asm/acpi.h
+++ b/arch/riscv/include/asm/acpi.h
@@ -61,10 +61,6 @@ static inline void arch_fix_phys_package_id(int num, u32 slot) { }
 
 void acpi_init_rintc_map(void);
 struct acpi_madt_rintc *acpi_cpu_get_madt_rintc(int cpu);
-static inline u32 get_acpi_id_for_cpu(int cpu)
-{
-	return acpi_cpu_get_madt_rintc(cpu)->uid;
-}
 
 int acpi_get_riscv_isa(struct acpi_table_header *table,
 		       unsigned int cpu, const char **isa);
diff --git a/drivers/acpi/pptt.c b/drivers/acpi/pptt.c
index de5f8c018333..7bd5bc1f225a 100644
--- a/drivers/acpi/pptt.c
+++ b/drivers/acpi/pptt.c
@@ -459,11 +459,14 @@ static void cache_setup_acpi_cpu(struct acpi_table_header *table,
 {
 	struct acpi_pptt_cache *found_cache;
 	struct cpu_cacheinfo *this_cpu_ci = get_cpu_cacheinfo(cpu);
-	u32 acpi_cpu_id = get_acpi_id_for_cpu(cpu);
+	u32 acpi_cpu_id;
 	struct cacheinfo *this_leaf;
 	unsigned int index = 0;
 	struct acpi_pptt_processor *cpu_node = NULL;
 
+	if (acpi_get_cpu_uid(cpu, &acpi_cpu_id) != 0)
+		return;
+
 	while (index < get_cpu_cacheinfo(cpu)->num_leaves) {
 		this_leaf = this_cpu_ci->info_list + index;
 		found_cache = acpi_find_cache_node(table, acpi_cpu_id,
@@ -546,7 +549,10 @@ static int topology_get_acpi_cpu_tag(struct acpi_table_header *table,
 				     unsigned int cpu, int level, int flag)
 {
 	struct acpi_pptt_processor *cpu_node;
-	u32 acpi_cpu_id = get_acpi_id_for_cpu(cpu);
+	u32 acpi_cpu_id;
+
+	if (acpi_get_cpu_uid(cpu, &acpi_cpu_id) != 0)
+		return -ENOENT;
 
 	cpu_node = acpi_find_processor_node(table, acpi_cpu_id);
 	if (cpu_node) {
@@ -614,18 +620,22 @@ static int find_acpi_cpu_topology_tag(unsigned int cpu, int level, int flag)
  *
  * Check the node representing a CPU for a given flag.
  *
- * Return: -ENOENT if the PPTT doesn't exist, the CPU cannot be found or
- *	   the table revision isn't new enough.
+ * Return: -ENOENT if can't get CPU's ACPI Processor UID, the PPTT doesn't
+ *	   exist, the CPU cannot be found or the table revision isn't new
+ *	   enough.
  *	   1, any passed flag set
  *	   0, flag unset
  */
 static int check_acpi_cpu_flag(unsigned int cpu, int rev, u32 flag)
 {
 	struct acpi_table_header *table;
-	u32 acpi_cpu_id = get_acpi_id_for_cpu(cpu);
+	u32 acpi_cpu_id;
 	struct acpi_pptt_processor *cpu_node = NULL;
 	int ret = -ENOENT;
 
+	if (acpi_get_cpu_uid(cpu, &acpi_cpu_id) != 0)
+		return -ENOENT;
+
 	table = acpi_get_pptt();
 	if (!table)
 		return -ENOENT;
@@ -651,7 +661,8 @@ static int check_acpi_cpu_flag(unsigned int cpu, int rev, u32 flag)
  * in the PPTT. Errors caused by lack of a PPTT table, or otherwise, return 0
  * indicating we didn't find any cache levels.
  *
- * Return: -ENOENT if no PPTT table or no PPTT processor struct found.
+ * Return: -ENOENT if no PPTT table, can't get CPU's ACPI Process UID or no PPTT
+ *	   processor struct found.
  *	   0 on success.
  */
 int acpi_get_cache_info(unsigned int cpu, unsigned int *levels,
@@ -671,7 +682,9 @@ int acpi_get_cache_info(unsigned int cpu, unsigned int *levels,
 
 	pr_debug("Cache Setup: find cache levels for CPU=%d\n", cpu);
 
-	acpi_cpu_id = get_acpi_id_for_cpu(cpu);
+	if (acpi_get_cpu_uid(cpu, &acpi_cpu_id))
+		return -ENOENT;
+
 	cpu_node = acpi_find_processor_node(table, acpi_cpu_id);
 	if (!cpu_node)
 		return -ENOENT;
@@ -780,8 +793,9 @@ int find_acpi_cpu_topology_package(unsigned int cpu)
  * It may not exist in single CPU systems. In simple multi-CPU systems,
  * it may be equal to the package topology level.
  *
- * Return: -ENOENT if the PPTT doesn't exist, the CPU cannot be found
- * or there is no toplogy level above the CPU..
+ * Return: -ENOENT if the PPTT doesn't exist, can't get CPU's ACPI
+ * Processor UID, the CPU cannot be found or there is no toplogy level
+ * above the CPU.
  * Otherwise returns a value which represents the package for this CPU.
  */
 
@@ -797,7 +811,9 @@ int find_acpi_cpu_topology_cluster(unsigned int cpu)
 	if (!table)
 		return -ENOENT;
 
-	acpi_cpu_id = get_acpi_id_for_cpu(cpu);
+	if (acpi_get_cpu_uid(cpu, &acpi_cpu_id) != 0)
+		return -ENOENT;
+
 	cpu_node = acpi_find_processor_node(table, acpi_cpu_id);
 	if (!cpu_node || !cpu_node->parent)
 		return -ENOENT;
@@ -872,7 +888,9 @@ static void acpi_pptt_get_child_cpus(struct acpi_table_header *table_hdr,
 	cpumask_clear(cpus);
 
 	for_each_possible_cpu(cpu) {
-		acpi_id = get_acpi_id_for_cpu(cpu);
+		if (acpi_get_cpu_uid(cpu, &acpi_id) != 0)
+			continue;
+
 		cpu_node = acpi_find_processor_node(table_hdr, acpi_id);
 
 		while (cpu_node) {
@@ -966,10 +984,13 @@ int find_acpi_cache_level_from_id(u32 cache_id)
 	for_each_possible_cpu(cpu) {
 		bool empty;
 		int level = 1;
-		u32 acpi_cpu_id = get_acpi_id_for_cpu(cpu);
+		u32 acpi_cpu_id;
 		struct acpi_pptt_cache *cache;
 		struct acpi_pptt_processor *cpu_node;
 
+		if (acpi_get_cpu_uid(cpu, &acpi_cpu_id) != 0)
+			continue;
+
 		cpu_node = acpi_find_processor_node(table, acpi_cpu_id);
 		if (!cpu_node)
 			continue;
@@ -1030,10 +1051,13 @@ int acpi_pptt_get_cpumask_from_cache_id(u32 cache_id, cpumask_t *cpus)
 	for_each_possible_cpu(cpu) {
 		bool empty;
 		int level = 1;
-		u32 acpi_cpu_id = get_acpi_id_for_cpu(cpu);
+		u32 acpi_cpu_id;
 		struct acpi_pptt_cache *cache;
 		struct acpi_pptt_processor *cpu_node;
 
+		if (acpi_get_cpu_uid(cpu, &acpi_cpu_id) != 0)
+			continue;
+
 		cpu_node = acpi_find_processor_node(table, acpi_cpu_id);
 		if (!cpu_node)
 			continue;
-- 
2.17.1



From xen-devel-bounces@lists.xenproject.org Wed Apr 01 08:17:09 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 01 Apr 2026 08:17:09 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1269891.1558819 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1w7qlB-0007JV-BO; Wed, 01 Apr 2026 08:17:09 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1269891.1558819; Wed, 01 Apr 2026 08:17: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 1w7qlB-0007JI-6m; Wed, 01 Apr 2026 08:17:09 +0000
Received: by outflank-mailman (input) for mailman id 1269891;
 Wed, 01 Apr 2026 08:17:08 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <fengchengwen@huawei.com>) id 1w7ql9-0007FB-V2
 for xen-devel@lists.xenproject.org; Wed, 01 Apr 2026 08:17:08 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1w7ql9-003Ulf-Av
 for xen-devel@lists.xenproject.org; Wed, 01 Apr 2026 10:17:07 +0200
Received: from [10.42.69.12] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <fengchengwen@huawei.com>)
 id 69ccd47c-bab6-0a2a0a5309dd-0a2a450ccf46-30
 for <xen-devel@lists.xenproject.org>; Wed, 01 Apr 2026 10:17:07 +0200
Received: from [113.46.200.220] (helo=canpmsgout05.his.huawei.com)
 by tlsNG-d25034.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.0)
 (envelope-from <fengchengwen@huawei.com>)
 id 69ccd47d-f40c-0a2a450c0019-712ec8dcccee-3
 for <xen-devel@lists.xenproject.org>; Wed, 01 Apr 2026 10:17:06 +0200
Received: from mail.maildlp.com (unknown [172.19.163.0])
 by canpmsgout05.his.huawei.com (SkyGuard) with ESMTPS id 4flyPP34Mzz12LG4;
 Wed,  1 Apr 2026 16:11:37 +0800 (CST)
Received: from kwepemk500009.china.huawei.com (unknown [7.202.194.94])
 by mail.maildlp.com (Postfix) with ESMTPS id B64C540537;
 Wed,  1 Apr 2026 16:17:00 +0800 (CST)
Received: from localhost.localdomain (10.50.163.32) by
 kwepemk500009.china.huawei.com (7.202.194.94) with Microsoft SMTP Server
 (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id
 15.2.1544.11; Wed, 1 Apr 2026 16:16:58 +0800
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
Authentication-Results: eu.smtp.expurgate.cloud; dkim=pass header.s=dkim header.d=huawei.com header.i="@huawei.com" header.h=From
dkim-signature: v=1; a=rsa-sha256; d=huawei.com; s=dkim;
	c=relaxed/relaxed; q=dns/txt;
	h=From;
	bh=hE9w7JoPF7q5rCf6KhhEJWJqCptovuDZd/Iy/+tLfKo=;
	b=qLgUdTXyB2huFMYWwsBs6yJ/F+9lt0zGJ2NBn+WC66I23Xw4lD/MYLZdp/AaESL9MDwbvh4PG
	4g/cCYoR/67GmTbgs1X5afshxewzUwAWGLnOlgBOHKQjEtF2bK4P57/PDC46EmJDfRwKl3h1FiZ
	k+9EKAAKSPQbPzHjYnS4Cu4=
From: Chengwen Feng <fengchengwen@huawei.com>
To: Bjorn Helgaas <bhelgaas@google.com>, Catalin Marinas
	<catalin.marinas@arm.com>, Will Deacon <will@kernel.org>, "Rafael J .
 Wysocki" <rafael@kernel.org>
CC: Jonathan Corbet <corbet@lwn.net>, WANG Xuerui <kernel@xen0n.name>, Thomas
 Gleixner <tglx@kernel.org>, Dave Hansen <dave.hansen@linux.intel.com>, "H .
 Peter Anvin" <hpa@zytor.com>, Juergen Gross <jgross@suse.com>, Boris
 Ostrovsky <boris.ostrovsky@oracle.com>, Len Brown <lenb@kernel.org>, Sunil V
 L <sunilvl@ventanamicro.com>, Mark Rutland <mark.rutland@arm.com>, Jonathan
 Cameron <jonathan.cameron@huawei.com>, Kees Cook <kees@kernel.org>, Yanteng
 Si <si.yanteng@linux.dev>, Sean Christopherson <seanjc@google.com>, Kai Huang
	<kai.huang@intel.com>, Tom Lendacky <thomas.lendacky@amd.com>, Thomas Huth
	<thuth@redhat.com>, Thorsten Blum <thorsten.blum@linux.dev>, Kevin Loughlin
	<kevinloughlin@google.com>, Zheyun Shen <szy0127@sjtu.edu.cn>, Peter Zijlstra
	<peterz@infradead.org>, Pawan Gupta <pawan.kumar.gupta@linux.intel.com>, Xin
 Li <xin@zytor.com>, "Ahmed S . Darwish" <darwi@linutronix.de>, Sohil Mehta
	<sohil.mehta@intel.com>, Ilkka Koskinen <ilkka@os.amperecomputing.com>, Robin
 Murphy <robin.murphy@arm.com>, James Clark <james.clark@linaro.org>, Besar
 Wicaksono <bwicaksono@nvidia.com>, Ma Ke <make24@iscas.ac.cn>, Wei Huang
	<wei.huang2@amd.com>, Andy Gospodarek <andrew.gospodarek@broadcom.com>,
	Somnath Kotur <somnath.kotur@broadcom.com>, <punit.agrawal@oss.qualcomm.com>,
	<guohanjun@huawei.com>, <suzuki.poulose@arm.com>, <ryan.roberts@arm.com>,
	<chenl311@chinatelecom.cn>, <masahiroy@kernel.org>,
	<wangyuquan1236@phytium.com.cn>, <anshuman.khandual@arm.com>,
	<heinrich.schuchardt@canonical.com>, <Eric.VanTassell@amd.com>,
	<wangzhou1@hisilicon.com>, <wanghuiqiang@huawei.com>,
	<liuyonglong@huawei.com>, <fengchengwen@huawei.com>,
	<linux-pci@vger.kernel.org>, <linux-doc@vger.kernel.org>,
	<linux-kernel@vger.kernel.org>, <linux-arm-kernel@lists.infradead.org>,
	<loongarch@lists.linux.dev>, <linux-riscv@lists.infradead.org>,
	<xen-devel@lists.xenproject.org>, <linux-acpi@vger.kernel.org>,
	<linux-perf-users@vger.kernel.org>, <stable@vger.kernel.org>,
	<x86@kernel.org>
Subject: [PATCH RESEND v10 8/8] PCI/TPH: Pass ACPI Processor UID to Cache Locality _DSM
Date: Wed, 1 Apr 2026 16:16:40 +0800
Message-ID: <20260401081640.26875-9-fengchengwen@huawei.com>
X-Mailer: git-send-email 2.17.1
In-Reply-To: <20260401081640.26875-1-fengchengwen@huawei.com>
References: <20260401081640.26875-1-fengchengwen@huawei.com>
MIME-Version: 1.0
Content-Type: text/plain
X-Originating-IP: [10.50.163.32]
X-ClientProxiedBy: kwepems200001.china.huawei.com (7.221.188.67) To
 kwepemk500009.china.huawei.com (7.202.194.94)
X-purgate-ID: tlsNG-d25034/1775031427-83F42A3D-4AA409DA/0/0
X-purgate-type: clean
X-purgate-size: 5074

pcie_tph_get_cpu_st() uses the Query Cache Locality Features _DSM [1]
to retrieve the TPH Steering Tag for memory associated with the CPU
identified by its "cpu_uid" parameter, a Linux logical CPU ID.

The _DSM requires an ACPI Processor UID, which pcie_tph_get_cpu_st()
previously assumed was the same as the Linux logical CPU ID. This is
true on x86 but not on arm64, so pcie_tph_get_cpu_st() returned the
wrong Steering Tag, resulting in incorrect TPH functionality on arm64.

Convert the Linux logical CPU ID to the ACPI Processor UID with
acpi_get_cpu_uid() before passing it to the _DSM. Additionally, rename
the pcie_tph_get_cpu_st() parameter from "cpu_uid" to "cpu" to reflect
that it represents a logical CPU ID (not an ACPI Processor UID).

[1] According to ECN_TPH-ST_Revision_20200924
    (https://members.pcisig.com/wg/PCI-SIG/document/15470), the input
    is defined as: "If the target is a processor, then this field
    represents the ACPI Processor UID of the processor as specified in
    the MADT. If the target is a processor container, then this field
    represents the ACPI Processor UID of the processor container as
    specified in the PPTT."

Fixes: d2e8a34876ce ("PCI/TPH: Add Steering Tag support")
Cc: stable@vger.kernel.org
Signed-off-by: Chengwen Feng <fengchengwen@huawei.com>
Reviewed-by: Jonathan Cameron <jonathan.cameron@huawei.com>
Reviewed-by: Bjorn Helgaas <bhelgaas@google.com>
---
 Documentation/PCI/tph.rst |  4 ++--
 drivers/pci/tph.c         | 16 +++++++++++-----
 include/linux/pci-tph.h   |  4 ++--
 3 files changed, 15 insertions(+), 9 deletions(-)

diff --git a/Documentation/PCI/tph.rst b/Documentation/PCI/tph.rst
index e8993be64fd6..b6cf22b9bd90 100644
--- a/Documentation/PCI/tph.rst
+++ b/Documentation/PCI/tph.rst
@@ -79,10 +79,10 @@ To retrieve a Steering Tag for a target memory associated with a specific
 CPU, use the following function::
 
   int pcie_tph_get_cpu_st(struct pci_dev *pdev, enum tph_mem_type type,
-                          unsigned int cpu_uid, u16 *tag);
+                          unsigned int cpu, u16 *tag);
 
 The `type` argument is used to specify the memory type, either volatile
-or persistent, of the target memory. The `cpu_uid` argument specifies the
+or persistent, of the target memory. The `cpu` argument specifies the
 CPU where the memory is associated to.
 
 After the ST value is retrieved, the device driver can use the following
diff --git a/drivers/pci/tph.c b/drivers/pci/tph.c
index ca4f97be7538..b67c9ad14bda 100644
--- a/drivers/pci/tph.c
+++ b/drivers/pci/tph.c
@@ -236,21 +236,27 @@ static int write_tag_to_st_table(struct pci_dev *pdev, int index, u16 tag)
  * with a specific CPU
  * @pdev: PCI device
  * @mem_type: target memory type (volatile or persistent RAM)
- * @cpu_uid: associated CPU id
+ * @cpu: associated CPU id
  * @tag: Steering Tag to be returned
  *
  * Return the Steering Tag for a target memory that is associated with a
- * specific CPU as indicated by cpu_uid.
+ * specific CPU as indicated by cpu.
  *
  * Return: 0 if success, otherwise negative value (-errno)
  */
 int pcie_tph_get_cpu_st(struct pci_dev *pdev, enum tph_mem_type mem_type,
-			unsigned int cpu_uid, u16 *tag)
+			unsigned int cpu, u16 *tag)
 {
 #ifdef CONFIG_ACPI
 	struct pci_dev *rp;
 	acpi_handle rp_acpi_handle;
 	union st_info info;
+	u32 cpu_uid;
+	int ret;
+
+	ret = acpi_get_cpu_uid(cpu, &cpu_uid);
+	if (ret != 0)
+		return ret;
 
 	rp = pcie_find_root_port(pdev);
 	if (!rp || !rp->bus || !rp->bus->bridge)
@@ -265,9 +271,9 @@ int pcie_tph_get_cpu_st(struct pci_dev *pdev, enum tph_mem_type mem_type,
 
 	*tag = tph_extract_tag(mem_type, pdev->tph_req_type, &info);
 
-	pci_dbg(pdev, "get steering tag: mem_type=%s, cpu_uid=%d, tag=%#04x\n",
+	pci_dbg(pdev, "get steering tag: mem_type=%s, cpu=%d, tag=%#04x\n",
 		(mem_type == TPH_MEM_TYPE_VM) ? "volatile" : "persistent",
-		cpu_uid, *tag);
+		cpu, *tag);
 
 	return 0;
 #else
diff --git a/include/linux/pci-tph.h b/include/linux/pci-tph.h
index ba28140ce670..be68cd17f2f8 100644
--- a/include/linux/pci-tph.h
+++ b/include/linux/pci-tph.h
@@ -25,7 +25,7 @@ int pcie_tph_set_st_entry(struct pci_dev *pdev,
 			  unsigned int index, u16 tag);
 int pcie_tph_get_cpu_st(struct pci_dev *dev,
 			enum tph_mem_type mem_type,
-			unsigned int cpu_uid, u16 *tag);
+			unsigned int cpu, u16 *tag);
 void pcie_disable_tph(struct pci_dev *pdev);
 int pcie_enable_tph(struct pci_dev *pdev, int mode);
 u16 pcie_tph_get_st_table_size(struct pci_dev *pdev);
@@ -36,7 +36,7 @@ static inline int pcie_tph_set_st_entry(struct pci_dev *pdev,
 { return -EINVAL; }
 static inline int pcie_tph_get_cpu_st(struct pci_dev *dev,
 				      enum tph_mem_type mem_type,
-				      unsigned int cpu_uid, u16 *tag)
+				      unsigned int cpu, u16 *tag)
 { return -EINVAL; }
 static inline void pcie_disable_tph(struct pci_dev *pdev) { }
 static inline int pcie_enable_tph(struct pci_dev *pdev, int mode)
-- 
2.17.1



From xen-devel-bounces@lists.xenproject.org Wed Apr 01 08:21:08 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 01 Apr 2026 08:21:08 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1269979.1558828 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1w7qp1-00034X-UC; Wed, 01 Apr 2026 08:21:07 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1269979.1558828; Wed, 01 Apr 2026 08:21: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 1w7qp1-00034Q-RS; Wed, 01 Apr 2026 08:21:07 +0000
Received: by outflank-mailman (input) for mailman id 1269979;
 Wed, 01 Apr 2026 08:21:05 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <jbeulich@suse.com>) id 1w7qoz-00034J-Ot
 for xen-devel@lists.xenproject.org; Wed, 01 Apr 2026 08:21:05 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1w7qox-000YMk-If
 for xen-devel@lists.xenproject.org; Wed, 01 Apr 2026 10:21:05 +0200
Received: from [10.42.69.1] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <jbeulich@suse.com>)
 id 69ccd55d-2eae-0a2a0a5409dd-0a2a4501a526-36
 for <xen-devel@lists.xenproject.org>; Wed, 01 Apr 2026 10:21:05 +0200
Received: from [209.85.128.44] (helo=mail-wm1-f44.google.com)
 by tlsNG-d62444.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.0)
 (envelope-from <jbeulich@suse.com>)
 id 69ccd570-6fc9-0a2a45010019-d155802cbd2b-3
 for <xen-devel@lists.xenproject.org>; Wed, 01 Apr 2026 10:21:04 +0200
Received: by mail-wm1-f44.google.com with SMTP id
 5b1f17b1804b1-486ff201041so64693665e9.1
 for <xen-devel@lists.xenproject.org>; Wed, 01 Apr 2026 01:21:04 -0700 (PDT)
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-4887e86ecf6sm101587655e9.14.2026.04.01.01.21.03
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Wed, 01 Apr 2026 01:21:03 -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=google header.d=suse.com header.i="@suse.com" header.h="Content-Transfer-Encoding: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=1775031664; x=1775636464; darn=lists.xenproject.org;
        h=content-transfer-encoding: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;
        bh=seIAo9jazCSzDuMCur8dal7aJZxneO3k2hNmp9zzh8c=;
        b=PFKCIDKAJ6jXP2A9+cvAkQRlCOTgjhXQJm7InWvMO4Bl4evTlKjyr7b4GdOxwVbfG9
         Kic/INHeNLQhaxhVNLoPngpS5wYrZNcPGXB0Hul/uhbZRlfy9GQJt7RpCp1s14w9Velj
         DXksiqoGzjM9MNfU7cJL/qKOa3K+BiFvwOV+zsZT31IguoUSX3TnD78uuMJQbJ/zt1UY
         XxazMDS5tYOzDXOpos1ANocX8B18SnkwZtBAlolMy8n391gt4ftEpW7ihKWFI63ZzZwu
         x2RZJkXDwdw2O849nKWyxRr5uc9BbWmlowUDVwsjOMCX/5nvrvpnaonmDlNQI43/i6ay
         tVIA==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20251104; t=1775031664; x=1775636464;
        h=content-transfer-encoding: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;
        bh=seIAo9jazCSzDuMCur8dal7aJZxneO3k2hNmp9zzh8c=;
        b=WhZ2HRL1Y1DIjNOW2QUq0lTybXD2yXr/kMtr8dTYMT86zW09b6fJqPSh2dzk/w+g+0
         qv0z855bQeNyy1CIvmN51LvR8C/xWWllq5DaS7DTo3rMYExhvrNLe/D5XovOWwWDgNYl
         nsY6bDV2oW8s8U2Zdl0ogxc7VoKH3H42J7aI5YOtW3h8O4hEKUWsnj/6KW+zNnJCAWit
         sr7bpZzVxOKAVa2gIr/b+MCU3LPP1OOK1PDAsgXj0hfyWTitOPpEtoBIy5C7Z3XvcNLN
         yR6ZOTyvQ4BVB053KX9Jgq4TMuT/uIBNo08t6cQudB08I/xgWOE9FO62ddkXdzgft6x2
         AIWg==
X-Forwarded-Encrypted: i=1; AJvYcCUSrTZywa3Y7Fd4ksPosvpGlneG6fdoilpP/t83Up5f+5wGEse58PRRcuS2hIQD65Ms1yQAuGl2LU0=@lists.xenproject.org
X-Gm-Message-State: AOJu0Yyrv0MvX6hK9OV3EWIEmJ+koZoGoswgs9C+frw6Auw/ZYe1gbm3
	cHzUzethsTL/V0DHQFqKL+RrrMdAq2uzCMhgXdIxv+01JvegvComomP1uYPBMTxVDQ==
X-Gm-Gg: ATEYQzzN3qGLIsFJgLxLl5DEtWLK8uFwyixbcOE6Y8NnS/alacMxM5oz+5aCgNc/ItL
	b9zX2FyzVyCREEOk48FwaaXuC0jvBE5BqyYn0FGCAjmYuXRZjVC1adqK4oK8/uU3aDiDuSw4w1u
	zAsd02kpe3esPXfmbcxwm4vLNS4QwXGSGAXDcnDja6OAGqPyOKoGux+y7rNBCtNhPM5Wgcb/d5v
	izOT51NQltSkVAXGjOJZyHlBu5qK29UL/dQUFwPEajbnkjURQ1kQX+B4t1jetn30y2QOHPxoJUd
	gI8l+L4CkQFbCabXZcRDt3xyj2Jv8gCx5fN6kZpARPOqOMed1LzTgHMUe+iXoXY5UgSMGlKR+fY
	tV+gkrp08900D5uIN6ZB2ulDtwSAT7KewMsm1aaVN7OHO9jKBvzEw40r275qBgUh4gVHhNXvjUs
	sEXysB02WbnQt2E05H9CzkWxU3twuey6qs/b1kpu5Qo/Vm1rzLbpc4t0mcFeCRLAUnbvI2+1q2P
	+8SBo66pn6w/LY=
X-Received: by 2002:a05:600c:4f43:b0:487:1114:d431 with SMTP id 5b1f17b1804b1-4888358cebemr44468135e9.18.1775031663675;
        Wed, 01 Apr 2026 01:21:03 -0700 (PDT)
Message-ID: <46f4a4c5-cc44-47d7-8d6d-03ddaa75bb7f@suse.com>
Date: Wed, 1 Apr 2026 10:21:02 +0200
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH v2 4/8] vpci: add a wait operation to the vpci vcpu
 pending actions
To: Mykyta Poturai <Mykyta_Poturai@epam.com>
Cc: =?UTF-8?Q?Roger_Pau_Monn=C3=A9?= <roger.pau@citrix.com>,
 Stewart Hildebrand <stewart.hildebrand@amd.com>,
 "xen-devel@lists.xenproject.org" <xen-devel@lists.xenproject.org>
References: <cover.1772806036.git.mykyta_poturai@epam.com>
 <ec941fbf4f8bde23fc3867e47f5ada028f8003aa.1772806036.git.mykyta_poturai@epam.com>
 <f546ae19-2107-469e-847b-7a4cde2c95fd@suse.com>
 <0275be7d-d1d9-47ee-bec2-bfbbb90b4bae@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: <0275be7d-d1d9-47ee-bec2-bfbbb90b4bae@epam.com>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 7bit
X-purgate-ID: tlsNG-d62444/1775031664-B78FC185-2F43AE5F/0/0
X-purgate-type: clean
X-purgate-size: 7091

On 01.04.2026 09:59, Mykyta Poturai wrote:
> On 3/31/26 17:55, Jan Beulich wrote:
>> On 09.03.2026 12:08, Mykyta Poturai wrote:
>>> --- a/xen/drivers/vpci/header.c
>>> +++ b/xen/drivers/vpci/header.c
>>> @@ -175,76 +175,92 @@ static void modify_decoding(const struct pci_dev *pdev, uint16_t cmd,
>>>   
>>>   bool vpci_process_pending(struct vcpu *v)
>>>   {
>>> -    const struct pci_dev *pdev = v->vpci.pdev;
>>> -    struct vpci_header *header = NULL;
>>> -    unsigned int i;
>>> -
>>> -    if ( !pdev )
>>> -        return false;
>>> -
>>> -    read_lock(&v->domain->pci_lock);
>>> -
>>> -    if ( !pdev->vpci || (v->domain != pdev->domain) )
>>> +    switch ( v->vpci.task )
>>>       {
>>> -        v->vpci.pdev = NULL;
>>> -        read_unlock(&v->domain->pci_lock);
>>> -        return false;
>>> -    }
>>> -
>>> -    header = &pdev->vpci->header;
>>> -    for ( i = 0; i < ARRAY_SIZE(header->bars); i++ )
>>> +    case MODIFY_MEMORY:
>>>       {
>>> -        struct vpci_bar *bar = &header->bars[i];
>>> -        struct rangeset *mem = v->vpci.bar_mem[i];
>>> -        struct map_data data = {
>>> -            .d = v->domain,
>>> -            .map = v->vpci.cmd & PCI_COMMAND_MEMORY,
>>> -            .bar = bar,
>>> -        };
>>> -        int rc;
>>> +        const struct pci_dev *pdev = v->vpci.memory.pdev;
>>> +        struct vpci_header *header = NULL;
>>> +        unsigned int i;
>>>   
>>> -        if ( rangeset_is_empty(mem) )
>>> -            continue;
>>> +        if ( !pdev )
>>> +            break;
>>>   
>>> -        rc = rangeset_consume_ranges(mem, map_range, &data);
>>> +        read_lock(&v->domain->pci_lock);
>>>   
>>> -        if ( rc == -ERESTART )
>>> +        if ( !pdev->vpci || (v->domain != pdev->domain) )
>>>           {
>>> +            v->vpci.memory.pdev = NULL;
>>>               read_unlock(&v->domain->pci_lock);
>>> -            return true;
>>> +            break;
>>>           }
>>>   
>>> -        if ( rc )
>>> +        header = &pdev->vpci->header;
>>> +        for ( i = 0; i < ARRAY_SIZE(header->bars); i++ )
>>>           {
>>> -            spin_lock(&pdev->vpci->lock);
>>> -            /* Disable memory decoding unconditionally on failure. */
>>> -            modify_decoding(pdev, v->vpci.cmd & ~PCI_COMMAND_MEMORY,
>>> -                            false);
>>> -            spin_unlock(&pdev->vpci->lock);
>>> +            struct vpci_bar *bar = &header->bars[i];
>>> +            struct rangeset *mem = v->vpci.bar_mem[i];
>>> +            struct map_data data = {
>>> +                .d = v->domain,
>>> +                .map = v->vpci.memory.cmd & PCI_COMMAND_MEMORY,
>>> +                .bar = bar,
>>> +            };
>>> +            int rc;
>>> +
>>> +            if ( rangeset_is_empty(mem) )
>>> +                continue;
>>>   
>>> -            /* Clean all the rangesets */
>>> -            for ( i = 0; i < ARRAY_SIZE(header->bars); i++ )
>>> -                if ( !rangeset_is_empty(v->vpci.bar_mem[i]) )
>>> -                     rangeset_purge(v->vpci.bar_mem[i]);
>>> +            rc = rangeset_consume_ranges(mem, map_range, &data);
>>>   
>>> -            v->vpci.pdev = NULL;
>>> +            if ( rc == -ERESTART )
>>> +            {
>>> +                read_unlock(&v->domain->pci_lock);
>>> +                return true;
>>> +            }
>>>   
>>> -            read_unlock(&v->domain->pci_lock);
>>> +            if ( rc )
>>> +            {
>>> +                spin_lock(&pdev->vpci->lock);
>>> +                /* Disable memory decoding unconditionally on failure. */
>>> +                modify_decoding(pdev, v->vpci.memory.cmd & ~PCI_COMMAND_MEMORY,
>>> +                                false);
>>> +                spin_unlock(&pdev->vpci->lock);
>>> +
>>> +                /* Clean all the rangesets */
>>> +                for ( i = 0; i < ARRAY_SIZE(header->bars); i++ )
>>> +                    if ( !rangeset_is_empty(v->vpci.bar_mem[i]) )
>>> +                        rangeset_purge(v->vpci.bar_mem[i]);
>>> +
>>> +                v->vpci.memory.pdev = NULL;
>>> +
>>> +                read_unlock(&v->domain->pci_lock);
>>>   
>>> -            if ( !is_hardware_domain(v->domain) )
>>> -                domain_crash(v->domain);
>>> +                if ( !is_hardware_domain(v->domain) )
>>> +                    domain_crash(v->domain);
>>>   
>>> -            return false;
>>> +                break;
>>> +            }
>>>           }
>>> -    }
>>> -    v->vpci.pdev = NULL;
>>> +        v->vpci.memory.pdev = NULL;
>>>   
>>> -    spin_lock(&pdev->vpci->lock);
>>> -    modify_decoding(pdev, v->vpci.cmd, v->vpci.rom_only);
>>> -    spin_unlock(&pdev->vpci->lock);
>>> +        spin_lock(&pdev->vpci->lock);
>>> +        modify_decoding(pdev, v->vpci.memory.cmd, v->vpci.memory.rom_only);
>>> +        spin_unlock(&pdev->vpci->lock);
>>>   
>>> -    read_unlock(&v->domain->pci_lock);
>>> +        read_unlock(&v->domain->pci_lock);
>>> +
>>> +        break;
>>> +    }
>>> +    case WAIT:
>>> +        if ( NOW() < v->vpci.wait.end )
>>> +            return true;
>>> +        v->vpci.wait.callback(v->vpci.wait.data);
>>> +        break;
>>
>> As just indicated in reply to patch 6, busy waiting isn't really acceptable.
>> This is even more so when the waiting exceeds the typical length of a
>> scheduling timeslice.
>>
>> In that other reply I said to put the vCPU to sleep, but you need to be careful
>> there too: The domain may not expect its vCPU to not make any progress for such
>> an extended period of time. This may need doing entirely differently: Once the
>> command register was written, you may want to record the time after which
>> accesses to the VF registers are permitted. Earlier accesses would simply be
>> terminated. You may still additionally need a timer, in order to kick off BAR
>> mapping after that time. (Yet better would  be if the BAR mapping could be
>> done during those 100ms. After all that may be a reason why this long a delay
>> is specified: Firmware on the device may also require some time to set up the
>> BARs accordingly.)
> 
> I am not sure it would work that way. If we look at how linux 
> initialized sriov, it writes VFE and MSE bits, waits 100ms and then 
> expects VFs to be operational. If they are not operational at that 
> moment, then it considers the operation failed and removes all VFs. If 
> we also wait 100ms before enabling access, the probability of a guest 
> trying to access something before we allow it would be very high.

Well, not really. Our counting of the 100ms necessarily starts before Dom0's.
Furthermore it may be acceptable (or even appropriate) to stall premature
accesses (because they shouldn't occur in the first place), by blocking the
vCPU at that point. A middle route may be possible: Terminate accesses in,
say, the first 90ms, and stall the vCPU for any access past that, but before
the 100ms expired.

Jan


From xen-devel-bounces@lists.xenproject.org Wed Apr 01 08:22:54 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 01 Apr 2026 08:22:54 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1269993.1558837 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1w7qqf-0003dT-Cf; Wed, 01 Apr 2026 08:22:49 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1269993.1558837; Wed, 01 Apr 2026 08:22: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 1w7qqf-0003dM-90; Wed, 01 Apr 2026 08:22:49 +0000
Received: by outflank-mailman (input) for mailman id 1269993;
 Wed, 01 Apr 2026 08:22:48 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <fengchengwen@huawei.com>) id 1w7qqd-0003dE-Jg
 for xen-devel@lists.xenproject.org; Wed, 01 Apr 2026 08:22:48 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1w7qqc-00AToi-Uv
 for xen-devel@lists.xenproject.org; Wed, 01 Apr 2026 10:22:46 +0200
Received: from [10.42.69.11] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <fengchengwen@huawei.com>)
 id 69ccd5d5-e002-0a2a0a5209dd-0a2a450be3d6-8
 for <xen-devel@lists.xenproject.org>; Wed, 01 Apr 2026 10:22:46 +0200
Received: from [113.46.200.225] (helo=canpmsgout10.his.huawei.com)
 by tlsNG-42698a.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.0)
 (envelope-from <fengchengwen@huawei.com>)
 id 69ccd5d3-bca8-0a2a450b0019-712ec8e14828-3
 for <xen-devel@lists.xenproject.org>; Wed, 01 Apr 2026 10:22:46 +0200
Received: from mail.maildlp.com (unknown [172.19.162.92])
 by canpmsgout10.his.huawei.com (SkyGuard) with ESMTPS id 4flyW63nb4z1K9VW;
 Wed,  1 Apr 2026 16:16:34 +0800 (CST)
Received: from kwepemk500009.china.huawei.com (unknown [7.202.194.94])
 by mail.maildlp.com (Postfix) with ESMTPS id 071664056C;
 Wed,  1 Apr 2026 16:22:42 +0800 (CST)
Received: from [10.67.121.161] (10.67.121.161) by
 kwepemk500009.china.huawei.com (7.202.194.94) with Microsoft SMTP Server
 (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id
 15.2.1544.11; Wed, 1 Apr 2026 16:22:40 +0800
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
Authentication-Results: eu.smtp.expurgate.cloud; dkim=pass header.s=dkim header.d=huawei.com header.i="@huawei.com" header.h=From
dkim-signature: v=1; a=rsa-sha256; d=huawei.com; s=dkim;
	c=relaxed/relaxed; q=dns/txt;
	h=From;
	bh=MTNaVMsdonTBgQUg0Ejtg6uI8JOpWHbQuBn8i2Muytk=;
	b=zfVqdZWZzivpJLTuZeEYbETVgUbpjxcc6vmJiz9VmBmGK7+p3ocbi7KhRl4SW1imGIWS+H+/S
	GEL7RNT6jhEzLuaPxUUhmMIjHBiCm2o5aipjEt5QgHPSsV8YAFhEn4y9speX8o0Hs3CLk5Jp28M
	LXlEaI+zkFwl4t8bQIqGT9w=
Message-ID: <504b43e1-fa7d-4694-b8af-fe4975823db3@huawei.com>
Date: Wed, 1 Apr 2026 16:22:39 +0800
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH v10 0/8] ACPI: Unify CPU UID interface and fix ARM64 TPH
 steer-tag issue
To: "Rafael J. Wysocki" <rafael@kernel.org>
CC: Bjorn Helgaas <bhelgaas@google.com>, Catalin Marinas
	<catalin.marinas@arm.com>, Will Deacon <will@kernel.org>, Jonathan Corbet
	<corbet@lwn.net>, Palmer Dabbelt <palmer@dabbelt.com>, Borislav Petkov
	<bp@alien8.de>, "H . Peter Anvin" <hpa@zytor.com>, Juergen Gross
	<jgross@suse.com>, Boris Ostrovsky <boris.ostrovsky@oracle.com>, Sunil V L
	<sunilvl@ventanamicro.com>, Mark Rutland <mark.rutland@arm.com>, Jonathan
 Cameron <jonathan.cameron@huawei.com>, Kees Cook <kees@kernel.org>, Yanteng
 Si <si.yanteng@linux.dev>, Sean Christopherson <seanjc@google.com>, Kai Huang
	<kai.huang@intel.com>, Tom Lendacky <thomas.lendacky@amd.com>, Thomas Huth
	<thuth@redhat.com>, Thorsten Blum <thorsten.blum@linux.dev>, Kevin Loughlin
	<kevinloughlin@google.com>, Zheyun Shen <szy0127@sjtu.edu.cn>, Peter Zijlstra
	<peterz@infradead.org>, Pawan Gupta <pawan.kumar.gupta@linux.intel.com>, Xin
 Li <xin@zytor.com>, "Ahmed S . Darwish" <darwi@linutronix.de>, Sohil Mehta
	<sohil.mehta@intel.com>, Ilkka Koskinen <ilkka@os.amperecomputing.com>, Robin
 Murphy <robin.murphy@arm.com>, James Clark <james.clark@linaro.org>, Besar
 Wicaksono <bwicaksono@nvidia.com>, Ma Ke <make24@iscas.ac.cn>, Wei Huang
	<wei.huang2@amd.com>, Andy Gospodarek <andrew.gospodarek@broadcom.com>,
	Somnath Kotur <somnath.kotur@broadcom.com>, <punit.agrawal@oss.qualcomm.com>,
	<guohanjun@huawei.com>, <suzuki.poulose@arm.com>, <ryan.roberts@arm.com>,
	<chenl311@chinatelecom.cn>, <masahiroy@kernel.org>,
	<wangyuquan1236@phytium.com.cn>, <anshuman.khandual@arm.com>,
	<heinrich.schuchardt@canonical.com>, <Eric.VanTassell@amd.com>,
	<wangzhou1@hisilicon.com>, <wanghuiqiang@huawei.com>,
	<liuyonglong@huawei.com>, <linux-pci@vger.kernel.org>,
	<linux-doc@vger.kernel.org>, <linux-kernel@vger.kernel.org>,
	<linux-arm-kernel@lists.infradead.org>, <loongarch@lists.linux.dev>,
	<linux-riscv@lists.infradead.org>, <xen-devel@lists.xenproject.org>,
	<linux-acpi@vger.kernel.org>, <linux-perf-users@vger.kernel.org>
References: <20260320031737.35048-1-fengchengwen@huawei.com>
 <CAJZ5v0gO1VSPs58JeupaiTZBkP3i_-H2bEQpfU-6k2TXjdiaOQ@mail.gmail.com>
Content-Language: en-US
From: fengchengwen <fengchengwen@huawei.com>
In-Reply-To: <CAJZ5v0gO1VSPs58JeupaiTZBkP3i_-H2bEQpfU-6k2TXjdiaOQ@mail.gmail.com>
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: 8bit
X-Originating-IP: [10.67.121.161]
X-ClientProxiedBy: kwepems500002.china.huawei.com (7.221.188.17) To
 kwepemk500009.china.huawei.com (7.202.194.94)
X-purgate-ID: tlsNG-42698a/1775031766-F5BC22A1-E052D146/0/0
X-purgate-type: clean
X-purgate-size: 3381

On 3/31/2026 8:24 PM, Rafael J. Wysocki wrote:
> On Fri, Mar 20, 2026 at 4:17 AM Chengwen Feng <fengchengwen@huawei.com> wrote:
>>
>> This patchset unifies ACPI Processor UID retrieval across
>> arm64/loongarch/riscv/x86 via acpi_get_cpu_uid() (with input validation)
>> and fixes ARM64 CPU steer-tag retrieval failure in PCI/TPH:
>>
>> 1-4: Add acpi_get_cpu_uid() for arm64/loongarch/riscv/x86 (update
>>      respective users)
>> 5: Centralize acpi_get_cpu_uid() declaration in include/linux/acpi.h
>> 6: Clean up perf/arm_cspmu
>> 7: Clean up ACPI/PPTT and remove unused get_acpi_id_for_cpu()
>> 8: Pass ACPI Processor UID to Cache Locality _DSM
>>
>> The interface refactor ensures consistent CPU UID retrieval across
>> architectures (no functional changes for valid inputs) and provides the
>> unified interface required for the ARM64 TPH fix.
>>
>> ---
>> Changes in v10:
>> - Refine commit header&log according to Punit's and Bjorn's review
>> - Split perf/arm_cspmu as a separate commit which address Punit's
>>   review
>>
>> Changes in v9:
>> - Address Bjorn's review: split commits to each platform so that make
>>   them easy to review
>>
>> Changes in v8:
>> - Moving arm64's get_cpu_for_acpi_id() to kernel/acpi.c which address
>>   Jeremy's review
>>
>> Chengwen Feng (8):
>>   arm64: acpi: Add acpi_get_cpu_uid() for unified ACPI CPU UID retrieval
>>   LoongArch: Add acpi_get_cpu_uid() for unified ACPI CPU UID retrieval
>>   RISC-V: ACPI: Add acpi_get_cpu_uid() for unified ACPI CPU UID
>>     retrieval
>>   x86/acpi: Add acpi_get_cpu_uid() for unified ACPI CPU UID retrieval
>>   ACPI: Centralize acpi_get_cpu_uid() declaration in
>>     include/linux/acpi.h
>>   perf: arm_cspmu: Switch to acpi_get_cpu_uid() from
>>     get_acpi_id_for_cpu()
>>   ACPI: PPTT: Use acpi_get_cpu_uid() and remove get_acpi_id_for_cpu()
>>   PCI/TPH: Pass ACPI Processor UID to Cache Locality _DSM
>>
>>  Documentation/PCI/tph.rst          |  4 +--
>>  arch/arm64/include/asm/acpi.h      | 17 +---------
>>  arch/arm64/kernel/acpi.c           | 30 ++++++++++++++++++
>>  arch/loongarch/include/asm/acpi.h  |  5 ---
>>  arch/loongarch/kernel/acpi.c       |  9 ++++++
>>  arch/riscv/include/asm/acpi.h      |  4 ---
>>  arch/riscv/kernel/acpi.c           | 16 ++++++++++
>>  arch/riscv/kernel/acpi_numa.c      |  9 ++++--
>>  arch/x86/include/asm/cpu.h         |  1 -
>>  arch/x86/include/asm/smp.h         |  1 -
>>  arch/x86/kernel/acpi/boot.c        | 20 ++++++++++++
>>  arch/x86/xen/enlighten_hvm.c       |  5 +--
>>  drivers/acpi/pptt.c                | 50 ++++++++++++++++++++++--------
>>  drivers/acpi/riscv/rhct.c          |  7 ++++-
>>  drivers/pci/tph.c                  | 16 +++++++---
>>  drivers/perf/arm_cspmu/arm_cspmu.c |  6 ++--
>>  include/linux/acpi.h               | 11 +++++++
>>  include/linux/pci-tph.h            |  4 +--
>>  18 files changed, 158 insertions(+), 57 deletions(-)
>>
>> --
> 
> It doesn't look like anyone has a particular heartburn related to this
> series, so I could apply it in principle, but I'd appreciate some ACKs
> from arch maintainers.
> 
> Why don't you resend it with all of the tags collected so far (and
> please add x86@kernel.org to the CC list)?

done for resend v10 which with all the review/ack tag, add add x86@kernel.org to CC list

Thanks


From xen-devel-bounces@lists.xenproject.org Wed Apr 01 08:49:41 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 01 Apr 2026 08:49:41 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1270015.1558845 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1w7rGX-0008DQ-BN; Wed, 01 Apr 2026 08:49:33 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1270015.1558845; Wed, 01 Apr 2026 08:49: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 1w7rGX-0008DJ-8Q; Wed, 01 Apr 2026 08:49:33 +0000
Received: by outflank-mailman (input) for mailman id 1270015;
 Wed, 01 Apr 2026 08:49:32 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <xakep.amatop@gmail.com>) id 1w7rGW-0008DD-AT
 for xen-devel@lists.xenproject.org; Wed, 01 Apr 2026 08:49:32 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1w7rGU-000gCP-4L
 for xen-devel@lists.xenproject.org; Wed, 01 Apr 2026 10:49:31 +0200
Received: from [10.42.69.6] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <xakep.amatop@gmail.com>)
 id 69ccdc11-5cb7-0a2a0a5109dd-0a2a4506e6dc-46
 for <xen-devel@lists.xenproject.org>; Wed, 01 Apr 2026 10:49:31 +0200
Received: from [209.85.167.48] (helo=mail-lf1-f48.google.com)
 by tlsNG-16d1c6.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.0)
 (envelope-from <xakep.amatop@gmail.com>)
 id 69ccdc1b-0df0-0a2a45060019-d155a730f020-3
 for <xen-devel@lists.xenproject.org>; Wed, 01 Apr 2026 10:49:31 +0200
Received: by mail-lf1-f48.google.com with SMTP id
 2adb3069b0e04-5a2a58b0cbdso5818586e87.2
 for <xen-devel@lists.xenproject.org>; Wed, 01 Apr 2026 01:49:31 -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=20251104 header.d=gmail.com header.i="@gmail.com" header.h="Content-Transfer-Encoding:Cc:To:Subject:Message-ID:Date:From:In-Reply-To:References:MIME-Version"
ARC-Seal: i=1; a=rsa-sha256; t=1775033371; cv=none;
        d=google.com; s=arc-20240605;
        b=W2Cbfu+nxaDaG+DPnen6M3inS9SDug0YpKE7O1uhs8rnVaPqBhhagaM3E2jTB6aH7e
         AC4J/96g4q+lfsxnYoD5v5XcpaJ4SAgIPoE1rRSflBtM2LWv5Pwtf0BNVrhY0ZOacUhh
         r/racb/VHahlT2yVsyCQHhfPtphN1/sA9C6kWbn3g6nnkjUdB7LhvGBe89n+X1FxG9dS
         5Oufyn2UUcKb3ngzE8QapNF1QmFNB85uA42HiQgRNVfrz156jrfoWSah/4bCfjVqpLjH
         C5MWxjs3xMxyq0nY1Uh1eFtPvQwVhl1Wr6+I5kzPT/GdKkqzWjH4lHeSnCuL09/xt5j8
         fiZQ==
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20240605;
        h=content-transfer-encoding:cc:to:subject:message-id:date:from
         :in-reply-to:references:mime-version:dkim-signature;
        bh=vVK0QStF2GdKVLmaGgjkhNe8NUIJ8vpEmv3PLMPy05k=;
        fh=E1tx1CTO87TVP+rJvI0fR5+M2AY+4nOLumwAR6+VAi0=;
        b=kXUK9SG7sdBzzxrgZIp9B+2bcv/K5w05EGIWmMCaxrqm45Vg4N3MehnOpQxLYUjla/
         FILZOTYGxoEW15F0zdYujPwXdXcyJB2nmzwoFK94a4AEr+qcMf8ti5tD+Rd7VPnVSQUZ
         pTxyIBNr0Vk/hABAbblnVS1fdZGpheTOncgGvIIIS8kh81n8Qyr9t8oLy/YjgeoJUSXt
         HhfVipeuuyhwTy6tThkzEFuSO0pAuzLHCSJCkJwn8NFyaCqD92ZJrFqaSAv7vmvMt8gG
         1AhJRqNYuO7wAlo+i9e+c6nkYSlFDGtsYUE5H2ofPbyWNqszA8ILX0eevOu5lFU99g4w
         P20g==;
        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=20251104; t=1775033371; x=1775638171; darn=lists.xenproject.org;
        h=content-transfer-encoding:cc:to:subject:message-id:date:from
         :in-reply-to:references:mime-version:from:to:cc:subject:date
         :message-id:reply-to;
        bh=vVK0QStF2GdKVLmaGgjkhNe8NUIJ8vpEmv3PLMPy05k=;
        b=U7cVPadvQOY6L98OAU8ZH5WkN4UKuQfXdB8gHyawjyu3MyBqEdPGJyYmnHCybplff8
         xnBbWhKIhR0doHP1EpHNDUXKTV+6VwBI2kVngMwAR8W2GvOpbqwAeOa4oXpbontZncg0
         BjC/YJ9XhVPbjvZb+ZeASSWsQm4FlGYKjQd/B+nfqM8Gp7mpmpZohXyU9ODGMwGH9WCh
         Qrf3WOQzAifPZqsgZ0XWM/VBeglAUqi8W3OZZ/JEHHmFz3CfGyJrhPNNhHWP3aedsdY3
         YTMsWYSAkza9V37p8ThePBxI/UcDxDo2lQWomO9PkUdeHXkljzqRIr0jXU61yFUt41PE
         qgbQ==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20251104; t=1775033371; x=1775638171;
        h=content-transfer-encoding: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;
        bh=vVK0QStF2GdKVLmaGgjkhNe8NUIJ8vpEmv3PLMPy05k=;
        b=NsBm6ld0f94v6LaUgjcbpMSN2026GDooV+61ySdyA1IsqdJioge6ZwFgKB2XLpj9/X
         VVyZNw5Qwbts32gTd5c4hfsWtuiT4qsxQnQDD6kyi9GOPS15VFDP5ppB7MYIAeGpmFNS
         wjI6V+enEciRZ+ocDEx7GUyqzTpQ0IjnPQNS/jHG9+9WrxHUH36ggYFLm6QHfsiJ6/oB
         9vIU3zAXq2dLU8mlk1rccCrfWR3X1XN35yaxFFFvsIQLwxpbcLhZXIvivASlbQHd8WOJ
         u2/iLF44rqFmYyaCnIToNfj1eGx9wE2Y5qWaw1SjRMh4ki47WCMMlcFbN9dBHuO/uiBr
         i25A==
X-Forwarded-Encrypted: i=1; AJvYcCVrKJEphbdlGtDTSYnujoh2zcRbEkMwPV7jnPbMAYMlUK+crzQml2d33NGBJVyXMtItXvQX5AaXJeU=@lists.xenproject.org
X-Gm-Message-State: AOJu0YwoBu9bnyVslSLsy8viWHwGMx4RpSh+cys9yGL6Pw8j1ZERjNNf
	+OYRRoN6xyq2vr5NaBFR/UPE3YgkraxlbBZ3SM4eFIshNqc3k3SmwfW0YS76IKGPHnJilxPos3S
	RAj66qoU1p3O117cNFUXPLhjwlC/jUPw=
X-Gm-Gg: ATEYQzyl4FV/6jOtz9Vi4e+sbLftxdlDFVxUrwgfTeflGYkT2WLp0WyATRsj/iaOCq/
	9/lpSegwXnNGJt1jiRRY82xwTwRbejyDDQhfgdeHwLMd328mGrI+exgT9yNNDso9kwrRE9cdeCw
	Rkd/khG8D3LreaI0arytweZTjr68zdmHSnhmaZwCXaOJ7XzVvOexL+7wB7+E0rX0dgKui4dNf5Y
	Rgjk3fd4TH5ftcHCJBidR7vfJnUlLajH1mkU1Rzh1mq3FyME1ToSoIBeTrvyQfSFAZ6tN3J5tNR
	hOFq
X-Received: by 2002:ac2:5fcc:0:b0:5a2:c433:a82 with SMTP id
 2adb3069b0e04-5a2c4330ad9mr361667e87.2.1775033370462; Wed, 01 Apr 2026
 01:49:30 -0700 (PDT)
MIME-Version: 1.0
References: <e1d18d55557ebe232fd62174f186b1cf228e48e5.1774981189.git.mykola_kvach@epam.com>
 <dc5550d7-5a2d-4ca1-85de-5a17c24aeac4@suse.com> <CAGeoDV-ffZsOW+Cu0-oPA1obBOv_1nWU8_PAdaqaoy6=YUHGig@mail.gmail.com>
 <5b16e00e-9a4d-4a18-8a5e-dde10b42a043@suse.com>
In-Reply-To: <5b16e00e-9a4d-4a18-8a5e-dde10b42a043@suse.com>
From: Mykola Kvach <xakep.amatop@gmail.com>
Date: Wed, 1 Apr 2026 11:49:19 +0300
X-Gm-Features: AQROBzCpNjKvUG3SbuecfJwM4JlrHWgyfWLx9uPuD5FWJ92wv9TITUcMGszK-04
Message-ID: <CAGeoDV_Cdpa6beFemKaVcCguwmo95x0g0rsRYbS1x5dAUxFPLQ@mail.gmail.com>
Subject: Re: [PATCH v3] xen/arm: vpsci: ignore upper 32 bits for SMC32 PSCI arguments
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>, 
	xen-devel@lists.xenproject.org
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: quoted-printable
X-purgate-ID: tlsNG-16d1c6/1775033371-5D92A3D8-9BBE9142/0/0
X-purgate-type: clean
X-purgate-size: 4968

On Wed, Apr 1, 2026 at 11:14=E2=80=AFAM Jan Beulich <jbeulich@suse.com> wro=
te:
>
> On 01.04.2026 09:13, Mykola Kvach wrote:
> > Hi Jan,
> >
> > On Wed, Apr 1, 2026 at 9:29=E2=80=AFAM Jan Beulich <jbeulich@suse.com> =
wrote:
> >>
> >> On 31.03.2026 20:31, Mykola Kvach wrote:
> >>> From: Mykola Kvach <mykola_kvach@epam.com>
> >>>
> >>> SMCCC DEN0028G, section 3.1, states that for AArch64 SMC/HVC calls
> >>> using Wn, only the least significant 32 bits are significant and the
> >>> upper 32 bits must be ignored by the implementation.
> >>>
> >>> So for SMC32 PSCI calls, Xen must not treat non-zero upper bits in th=
e
> >>> argument registers as an error. Instead, they should be discarded whe=
n
> >>> decoding the arguments.
> >>>
> >>> Arm ARM DDI 0487J.a (D1-5406) also notes that the upper 32 bits may b=
e
> >>> implementation defined when entering from AArch32. Xen zeros them on
> >>> entry, but that guarantee is only relevant for 32-bit domains.
> >>>
> >>> Update PSCI v0.2+ CPU_ON, CPU_SUSPEND, AFFINITY_INFO and SYSTEM_SUSPE=
ND
> >>> to read SMC32 arguments via PSCI_ARG32(), while keeping the SMC64
> >>> handling unchanged.
> >>>
> >>> No functional change is intended for PSCI 0.1.
> >>>
> >>> Suggested-by: Julien Grall <julien@xen.org>
> >>> Signed-off-by: Mykola Kvach <mykola_kvach@epam.com>
> >>> Reviewed-by: Bertrand Marquis <bertrand.marquis@arm.com>
> >>
> >> I thought I might as well include this in my next commit sweep, but is=
n't
> >> this R-b being invalidated by ...
> >>
> >>> ---
> >>> v3:
> >>>  - use PSCI_ARG_CONV for SYSTEM_SUSPEND
> >>
> >> ... this change. That's ...
> >>
> >>> @@ -422,14 +427,8 @@ bool do_vpsci_0_2_call(struct cpu_user_regs *reg=
s, uint32_t fid)
> >>>      case PSCI_1_0_FN32_SYSTEM_SUSPEND:
> >>>      case PSCI_1_0_FN64_SYSTEM_SUSPEND:
> >>>      {
> >>> -        register_t epoint =3D PSCI_ARG(regs, 1);
> >>> -        register_t cid =3D PSCI_ARG(regs, 2);
> >>> -
> >>> -        if ( fid =3D=3D PSCI_1_0_FN32_SYSTEM_SUSPEND )
> >>> -        {
> >>> -            epoint &=3D GENMASK(31, 0);
> >>> -            cid &=3D GENMASK(31, 0);
> >>> -        }
> >>> +        register_t epoint =3D PSCI_ARG_CONV(regs, 1, is_conv_64);
> >>> +        register_t cid =3D PSCI_ARG_CONV(regs, 2, is_conv_64);
> >>>
> >>>          perfc_incr(vpsci_system_suspend);
> >>>          PSCI_SET_RESULT(regs, do_psci_1_0_system_suspend(epoint, cid=
));
> >>
> >> ... this hunk aiui, which is far from merely cosmetic imo. While
> >
> > Nobody said that the change had to be purely cosmetic in order to keep
> > the tag. I understood it differently from the official Xen
> > documentation pages.
> >
> >> behavior looks to remain the same for PSCI_1_0_FN32_SYSTEM_SUSPEND, it
> >
> > Exactly. If the changes are not substantial, I do not see a reason to
> > drop the tag ...
> >
> >> clearly changes for PSCI_1_0_FN64_SYSTEM_SUSPEND. That may be intended
> >> and for the better, but the change clearly wasn't reviewed by Bertrand=
,
> >> nor - when offering the R-b - did he ask for this extra change.
> >
> > ... and this is also how I understood the Xen patch submission
> > guidelines [1], which say:
> >
> > "Note that if there are several revisions of a patch, you ought to
> > copy tags that have accumulated during the review. For example, if
> > person A and person B added a Reviewed-by: tag to v1 of your patch,
> > include it into v2 of your patch. If you make substantial changes
> > after certain tags were already applied, you will want to consider
> > which ones are no longer applicable (and may require re-providing)."
> >
> > So my understanding was that tags should normally be kept across
> > revisions, unless the changes are substantial enough to make them no
> > longer applicable.
>
> Maybe our understanding of "substantial" differs. To me that's anything
> changing functionality. Style adjustments, typo corrections, and alike
> generally aren't substantial (albeit even then there may be exceptions).

Thanks for clarifying what you consider substantial.

Even under that interpretation, I do not see a functionality change
here. "Refactoring" seems like the more accurate term in this case:
the internal form changes, but the intended external behavior does
not.

It may be that we are using "functional change" in slightly different
senses here.

For v3, the switch to PSCI_ARG_CONV() in SYSTEM_SUSPEND was meant to
make this case consistent with the helper-based argument decoding used
elsewhere, not to change behavior.

In particular, I do not see a functional change for
PSCI_1_0_FN64_SYSTEM_SUSPEND: v2 used PSCI_ARG(regs, 1/2), and in v3
PSCI_ARG_CONV(regs, 1/2, is_conv_64) should resolve to the same thing
when is_conv_64 is true.

If I am missing a behavioral difference in the FN64 case, please point
out which one.


Best regards,
Mykola

>
> Jan


From xen-devel-bounces@lists.xenproject.org Wed Apr 01 08:52:42 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 01 Apr 2026 08:52:42 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1270025.1558855 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1w7rJZ-0001GE-Of; Wed, 01 Apr 2026 08:52:41 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1270025.1558855; Wed, 01 Apr 2026 08:52: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 1w7rJZ-0001G7-Ln; Wed, 01 Apr 2026 08:52:41 +0000
Received: by outflank-mailman (input) for mailman id 1270025;
 Wed, 01 Apr 2026 08:52:40 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <jbeulich@suse.com>) id 1w7rJY-0001G1-3D
 for xen-devel@lists.xenproject.org; Wed, 01 Apr 2026 08:52:40 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1w7rJV-000i76-Ti
 for xen-devel@lists.xenproject.org; Wed, 01 Apr 2026 10:52:39 +0200
Received: from [10.42.69.4] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <jbeulich@suse.com>)
 id 69ccdcd4-2eae-0a2a0a5409dd-0a2a450496b4-18
 for <xen-devel@lists.xenproject.org>; Wed, 01 Apr 2026 10:52:39 +0200
Received: from [209.85.128.42] (helo=mail-wm1-f42.google.com)
 by tlsNG-ebf023.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.0)
 (envelope-from <jbeulich@suse.com>)
 id 69ccdcd7-bb33-0a2a45040019-d155802ad1a9-3
 for <xen-devel@lists.xenproject.org>; Wed, 01 Apr 2026 10:52:39 +0200
Received: by mail-wm1-f42.google.com with SMTP id
 5b1f17b1804b1-4853e1ce427so81441185e9.3
 for <xen-devel@lists.xenproject.org>; Wed, 01 Apr 2026 01:52:39 -0700 (PDT)
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-43cf21e265fsm35928746f8f.1.2026.04.01.01.52.38
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Wed, 01 Apr 2026 01:52:38 -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=google header.d=suse.com header.i="@suse.com" header.h="Content-Transfer-Encoding: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=1775033559; x=1775638359; darn=lists.xenproject.org;
        h=content-transfer-encoding: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;
        bh=F3XXD4t95daMHDkYOgQ1NzCXzD43KbIUUcpMFxOeYh0=;
        b=St99gkx5OwrnMcihlB+EGbEakxMd9FoiWuNRO6si1Ulsm5oQEk8QqKfG6wPqgpmIh6
         2w6I4L+nV2S2XJ8kca3Yjd+KFpzmnxIoJ7sljY04Hu4bnnS7ooYnLRLvl4qn/oJHO52M
         ot0MwbCp93uZ+vn4Gpx2F5y/3oPAMgPJGaV92rl48v0qQpawpb3YUtQWuyxOoH7l3bky
         j4jgSNFKRRKjJ95xSvJpM6hNdUK6Qd5Y7UqOmfOEcNiU8i9OLf4cPreN4zXqdCJ2CNw6
         XaDxZ0gNTj2XAWC1RRL3Vf5FpxkXm5aE6QrOE7q9INW6LY28sOXDIkRSCSy+bcbqUh1H
         A0aA==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20251104; t=1775033559; x=1775638359;
        h=content-transfer-encoding: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;
        bh=F3XXD4t95daMHDkYOgQ1NzCXzD43KbIUUcpMFxOeYh0=;
        b=nyXKXGNMjERc864nZu1KlfEW/8GNCdAwzxxegJSPNUSBBdj4qF/4yMv2Ux9LwnbO/S
         kVUfI/XHDfoctDS71cKBIbwEyOKOyHtF0fZ1QgZ0qJMPrTK6hdgeZkdh4UHx2aA0GDr7
         Ny1/I1IApRz2ZB6k+m67j9g6t8dH/GrKuvDQzkGsPWHly+TJlSr35cFdDXhcA10ixU11
         7auuf8chXqsURvAEuebHiJjSH/42zZwroZejTKInhodcxuoBYebr+KtDoZDfN+2ybwnl
         D8iPB6fjFuoih/AUgrPRvIYKN+8EDJoWmeR9pMdo+bkKjDRpmu1cyJIUIN2FtdKXRcMG
         mOhg==
X-Gm-Message-State: AOJu0YxR8eMUN7ztxD8t5zIyLsLxh+Jp6/usms4VLMPwn+xuZn3bl5zT
	j333w1B7BuvMRunjfJXbPvLA0RnbqSfUnDF+I8m4HPTKi9e+ImVLdlW7oyZX3QS0q+FLcUCf+iL
	cjh3GNQ==
X-Gm-Gg: ATEYQzzyom4EpJnegD9JwtQa4ulBLdbCRuY5E1sB0jnsxH5j6eAojzdIRQm0J8VibaX
	aMpOrsSfLau6WYBuA9ELgu+tir9QsF3SVxo5Unyhwlw8MaGVlSWDGoXrnBAPtRzyW8OuMwD4wmQ
	7rjASKfTUQU1OQ4Va3vOOT9FAxuoJQx3dgTAy54KsPy0pog1kHB9zT04Nn8/ZY3pOOuOTGY9nAV
	SReKguSX6tQr6SUwMwoE9BBD217taVVY7lnsr2ycLeGLvXEUPYaNGQpCQj27EqMaNBffi4s7xLD
	xkokYqR+vVG4+P32jDGwgY1TAbPDJbiMgin6G9gncRcC6fvIhXkoLlCglJVIOCEsqbuFxGryMXn
	ftNOMscI3+eusUN/2EcZWIaK3sq38FC7QdeTKwytf7DoHvhVnHJj81HnseF7Y1KR/lT1i8zRhdT
	FSfMrrr1qvy9luY8a3TFX/Ybaxgxi+yOFGbLHtDPw1nWla7BJWCukmAk9D8JJIuIgWhtjbGbWb9
	BvMIcvfnlvTzyE=
X-Received: by 2002:a05:6000:4201:b0:43c:f66e:f24 with SMTP id ffacd0b85a97d-43d150d5c14mr5405444f8f.35.1775033558669;
        Wed, 01 Apr 2026 01:52:38 -0700 (PDT)
Message-ID: <090b8b8f-141b-4a24-92eb-879c0a0c73e1@suse.com>
Date: Wed, 1 Apr 2026 10:52:37 +0200
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: IOMMU faults after S3
From: Jan Beulich <jbeulich@suse.com>
To: =?UTF-8?Q?Marek_Marczykowski-G=C3=B3recki?=
 <marmarek@invisiblethingslab.com>
Cc: xen-devel <xen-devel@lists.xenproject.org>
References: <acZZmGXIJlmN3KGm@mail-itl>
 <e8bbaae2-5cff-4549-9f27-fbbda7346f60@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: <e8bbaae2-5cff-4549-9f27-fbbda7346f60@suse.com>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
X-purgate-ID: tlsNG-ebf023/1775033559-B253B51B-6B86F8DE/0/0
X-purgate-type: clean
X-purgate-size: 3397

On 01.04.2026 09:14, Jan Beulich wrote:
> On 27.03.2026 11:19, Marek Marczykowski-Górecki wrote:
>> I noticed that on some systems, there are a lot of IOMMU faults after
>> S3. I can see it also on a laptop with MTL, but it affects also the ADL
>> gitlab runner:
>>
>>     https://gitlab.com/xen-project/hardware/xen/-/jobs/13661033722
>>     (XEN) [   37.201160] [VT-D]DMAR:[DMA Write] Request device [0000:00:1e.6] fault addr 0
>>     (XEN) [   37.201164] [VT-D]DMAR: reason 02 - Present bit in context entry is clear
>>     (XEN) [   37.202332] [VT-D]DMAR:[DMA Write] Request device [0000:00:1e.6] fault addr 0
>>     (XEN) [   37.202339] [VT-D]DMAR: reason 02 - Present bit in context entry is clear
>>
>> Interestingly, the 0000:00:1e.6 device is not even listed by lspci.
>>
>> The issue is present only on staging, not staging-4.21.
>>
>> Bisect says:
>>
>> 5ec93b2f19ff8873fca65d38c1164b0a56d3898b is the first bad commit
>> commit 5ec93b2f19ff8873fca65d38c1164b0a56d3898b
>> Author: Jan Beulich <jbeulich@suse.com>
>> Date:   Thu Jan 22 14:13:35 2026 +0100
>>
>>     x86/HPET: drop .set_affinity hook
> 
> Looking into this, I find several things I can't quite understand (yet).
> First there is
> 
> (XEN) [000000456c0fe39f] Disabling HPET for being unreliable
> 
> which looks to only affect clocksource selection, but not use as
> broadcast source for CPU-idle management. (This may be an independent
> issue.)
> 
> Then there is
> 
> (XEN) [    2.760248] HPET: 8 timers usable for broadcast (8 total)
> 
> which should only occur on ARAT-incapable systems. That should only be
> older hardware. (On my much older Skylake I don't see this line, for
> example.) What does CPUID leaf 6 have on this system? Sadly xen-cpuid
> is purely featureset based, and hence doesn't expose info about that
> leaf. The leaf also isn't exposed to domains, so CPUID output in Dom0
> isn't useful to look at either. It would need to be CPUID output on a
> bare metal kernel.
> 
> Further I suspect the fingered commit may only have uncovered an issue
> elsewhere. I don't think we clear any context table entries during
> suspend or resume. Hence in
> 
> (XEN) [   20.554813] [VT-D]DMAR:[DMA Write] Request device [0000:00:1e.6] fault addr 0
> (XEN) [   20.554819] [VT-D]DMAR: reason 02 - Present bit in context entry is clear
> 
> the latter message is confusing me.
> 
> The fault address being zero may, otoh, be a hint of hpet_msi_write()
> never having run post-resume. Which may be the connection to the
> dropping of hpet_msi_set_affinity(), as that did call that function.

There clearly is an issue with the handling of the max_cstate variable,
but I expect you don't use xenpm to limit usable C-states (there clearly
is no respective command line option in the log you referenced)?

>From what the log has, I conclude hpet_broadcast_resume() is called.
Question is whether it does what we want it to. Could you instrument it
some, so we have confirmation that it is called, and we also know whether
__hpet_setup_msi_irq() is not only called on all 8 channels, but also
succeeds there? (If it failed, I suppose we better wouldn't set
HPET_TN_FSB and/or HPET_TN_ENABLE.) If, however, it succeeds, I couldn't
explain why the fault address would be reported as 0, as then we
definitely must have written HPET_Tn_ROUTE.

Jan


From xen-devel-bounces@lists.xenproject.org Wed Apr 01 08:58:58 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 01 Apr 2026 08:58:58 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1270041.1558864 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1w7rPa-0002L5-Fq; Wed, 01 Apr 2026 08:58:54 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1270041.1558864; Wed, 01 Apr 2026 08:58: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 1w7rPa-0002Ky-C1; Wed, 01 Apr 2026 08:58:54 +0000
Received: by outflank-mailman (input) for mailman id 1270041;
 Wed, 01 Apr 2026 08:58:53 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <jbeulich@suse.com>) id 1w7rPZ-0002Ks-C2
 for xen-devel@lists.xenproject.org; Wed, 01 Apr 2026 08:58:53 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1w7rPY-00AbGc-OC
 for xen-devel@lists.xenproject.org; Wed, 01 Apr 2026 10:58:52 +0200
Received: from [10.42.69.5] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <jbeulich@suse.com>)
 id 69ccde3e-5cb7-0a2a0a5109dd-0a2a450592b2-32
 for <xen-devel@lists.xenproject.org>; Wed, 01 Apr 2026 10:58:52 +0200
Received: from [209.85.128.41] (helo=mail-wm1-f41.google.com)
 by tlsNG-c201ff.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.0)
 (envelope-from <jbeulich@suse.com>)
 id 69ccde4c-3760-0a2a45050019-d1558029e56b-3
 for <xen-devel@lists.xenproject.org>; Wed, 01 Apr 2026 10:58:52 +0200
Received: by mail-wm1-f41.google.com with SMTP id
 5b1f17b1804b1-48334ee0aeaso59269905e9.1
 for <xen-devel@lists.xenproject.org>; Wed, 01 Apr 2026 01:58:52 -0700 (PDT)
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-4887eb5aff3sm141709225e9.15.2026.04.01.01.58.51
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Wed, 01 Apr 2026 01:58:51 -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=google header.d=suse.com header.i="@suse.com" header.h="Content-Transfer-Encoding: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=1775033932; x=1775638732; darn=lists.xenproject.org;
        h=content-transfer-encoding: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;
        bh=KqAYsIV/DmBO32oQbhpURcICJKetiNIvgP+vIH+N9uw=;
        b=g4FsSdm/+EWJ3EGEU1IB/JupduM7XC5KrzwaICzXKqKtDlP8ZXc0Uc4y3iS/NqGwZ2
         kMzswUWRwSVwKLPoUp6Gt6UXogXN4ZWim2AAct9koaeah2XAQlIzSy0ajBz+2hWbA5IG
         uzLV5j4POhwmpZl9oNygX4hx28aVqweI2GC1BQru57rz+Q6rO8bREGopi8yMnxOOmF8M
         3ikjFD2++X9fDb/t3ez3RvwYPPOz7LvU1XSLC4cdAl55DHx0IDWJg11+0cECq5ePGoAs
         x/NZv7TLLoDTa5THa/HkKAHeEyfeVPhRXLxyTUu9XML9jsj9jn+/NySo2IrM8kQHzaAk
         TQSg==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20251104; t=1775033932; x=1775638732;
        h=content-transfer-encoding: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;
        bh=KqAYsIV/DmBO32oQbhpURcICJKetiNIvgP+vIH+N9uw=;
        b=qN5UWlDl2GoyVXDMbrPvcxirfCGtuefsmGJ1jCHlukPwG2aZadlhNOujaNv0TBSX1N
         S074H1tZFkriHP0OhAXc1hw0ebKKwLIecMW4PUs/glMCx92QYhmjqDBT4NfhI7c/9iZx
         pwch1dGqCXmvVUuKRQsdiJP6hBRnqjPzSfD374mgD40TjXzWscvwexmgozdFStnyXjgN
         qfJ9IfVia3Kz+9fF3ciBi7KcksEp/ssA+04jBvKyjz0YulEOsIhuy1dH1gDuT1f7yXJI
         eyE8B53snLDxiQxjqYRP1YqJNI0ObbkjtR9sws0GuKgHzfPe1QEZ/qzArslE0q3CjcIm
         j6hg==
X-Gm-Message-State: AOJu0Ywd2xLfnPriru1Os4N7V2rEHKkbw5N0ARz7/0jM8d+CI7qSvEdS
	2NvlwOQRah8k2wcl1z77J3H3Xshs803PQ/sn8BBv9+2I/jIMqw6wfuGUFHVBesXLna7pEOOMfTL
	fDXxRUQ==
X-Gm-Gg: ATEYQzw2/ZhslH2DpgAWtojm+kHO6+e93adKQGG+ZddBhSs1H8A8ryQJwiDIBOG1Ird
	ZswoI/eDgqxVnxdWzAQCq4oBcv9pQBYIPpBkVQnP87NlGgFSJKw1jr2/vKAkKJZiaOIGhXbHaBo
	5rOtJIPK9sWoZjO4G7jStmcMAunVmRWjimNmJ3XB29JRyqomzq1B40b+AAMGWa8++UXPzUlbtCz
	WKMUbQMT9gZ3+9ajERIBmMZh2Uh1/aObXhoMjJ+ZqdqmdAGQQmxDNA14ZUo+T1hNghMF58snGjz
	uS5rWP+gROIjuhxH+O/r0q5bwDcXt0QdiPV46W6pbZbXZFoR0ni1ckTTEdMSLjKFljR6wbXTtsC
	X29I401TT30N23Ycwtyk4rJYYRMMhDhtEro/75ean9+tTjyEwfnwA+83TSB99Ximw3+ltnL5/KK
	1Nv8DniitLe4Ve96/PEGYQM4m2ToXwdgVc4CP1e+JAs2IlclytxBbhsRbXmWZwungPgtSIXtUsn
	nBDkoc1VYAM2/0=
X-Received: by 2002:a05:600c:a4c:b0:487:1c2:6a56 with SMTP id 5b1f17b1804b1-4888356844bmr45338675e9.3.1775033931802;
        Wed, 01 Apr 2026 01:58:51 -0700 (PDT)
Message-ID: <69782260-4d92-4979-b624-9c5c6e9a4cba@suse.com>
Date: Wed, 1 Apr 2026 10:58:50 +0200
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: IOMMU faults after S3
From: Jan Beulich <jbeulich@suse.com>
To: =?UTF-8?Q?Marek_Marczykowski-G=C3=B3recki?=
 <marmarek@invisiblethingslab.com>
Cc: xen-devel <xen-devel@lists.xenproject.org>
References: <acZZmGXIJlmN3KGm@mail-itl>
 <e8bbaae2-5cff-4549-9f27-fbbda7346f60@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: <e8bbaae2-5cff-4549-9f27-fbbda7346f60@suse.com>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 7bit
X-purgate-ID: tlsNG-c201ff/1775033932-2312596F-A91EE571/0/0
X-purgate-type: clean
X-purgate-size: 759

On 01.04.2026 09:14, Jan Beulich wrote:
> Further I suspect the fingered commit may only have uncovered an issue
> elsewhere. I don't think we clear any context table entries during
> suspend or resume. Hence in
> 
> (XEN) [   20.554813] [VT-D]DMAR:[DMA Write] Request device [0000:00:1e.6] fault addr 0
> (XEN) [   20.554819] [VT-D]DMAR: reason 02 - Present bit in context entry is clear
> 
> the latter message is confusing me.

Actually, it makes sense. The address being outside of the interrupt remap
MMIO window (FEExxxxx), it's subject to DMA translation. Yet the HPET has no
entry in the context table; only its IRQs have entries in the intremap table.

So it really all looks to be boiling down to missing HPET_Tn_ROUTE writes.

Jan


From xen-devel-bounces@lists.xenproject.org Wed Apr 01 09:22:21 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 01 Apr 2026 09:22:21 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1270055.1558876 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1w7rm8-0006oI-82; Wed, 01 Apr 2026 09:22:12 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1270055.1558876; Wed, 01 Apr 2026 09: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 1w7rm8-0006oB-5M; Wed, 01 Apr 2026 09:22:12 +0000
Received: by outflank-mailman (input) for mailman id 1270055;
 Wed, 01 Apr 2026 09:22:11 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <jbeulich@suse.com>) id 1w7rm7-0006mz-5o
 for xen-devel@lists.xenproject.org; Wed, 01 Apr 2026 09:22:11 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1w7rm6-0067Xe-0K
 for xen-devel@lists.xenproject.org; Wed, 01 Apr 2026 11:22:10 +0200
Received: from [10.42.69.6] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <jbeulich@suse.com>)
 id 69cce3b4-5cb7-0a2a0a5109dd-0a2a4506ad20-48
 for <xen-devel@lists.xenproject.org>; Wed, 01 Apr 2026 11:22:09 +0200
Received: from [209.85.221.44] (helo=mail-wr1-f44.google.com)
 by tlsNG-16d1c6.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.0)
 (envelope-from <jbeulich@suse.com>)
 id 69cce3c1-0df0-0a2a45060019-d155dd2ce1b9-3
 for <xen-devel@lists.xenproject.org>; Wed, 01 Apr 2026 11:22:09 +0200
Received: by mail-wr1-f44.google.com with SMTP id
 ffacd0b85a97d-43b87970468so5835749f8f.3
 for <xen-devel@lists.xenproject.org>; Wed, 01 Apr 2026 02:22:09 -0700 (PDT)
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-43cf21eba4dsm37814996f8f.11.2026.04.01.02.22.08
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Wed, 01 Apr 2026 02:22:08 -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=google header.d=suse.com header.i="@suse.com" header.h="Content-Transfer-Encoding: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=1775035329; x=1775640129; darn=lists.xenproject.org;
        h=content-transfer-encoding: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;
        bh=y2mTrv0LYWhq0hWmlRZPqFn2Vc/n1ZSN0MxahCgrF7E=;
        b=FNJqWw/hneMK8Y/FUcK70SuFXcnP14LTORP3rx8HXtjzBjNyHLjgNqGDGiXn53My+K
         E/ebwTyA8HSwJTakAN5AjJ+c4QD1r0YhhCAEkAyH9Me+Yuv7oVKHN6Wu7WoV1PmIexPV
         mL4Nq2QXs/ap52UDzX48opqazUKLoC8syGpDyns/3bWSTYPWADjXfHG5oCQCNKcj0exA
         Kc8MjcKKwVQxxQg7nB3SEUJdxc1LlCSI9OKhXtf4NTPSDkDSEtsNm5nvX9crjYNiKexX
         lrxkAyHt8d3PJr9g2dkCtwpUFHFaPjzhD+T1aPZVDvlhdoiPuMUPVgHwIHIdFWzvAogU
         J2KQ==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20251104; t=1775035329; x=1775640129;
        h=content-transfer-encoding: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;
        bh=y2mTrv0LYWhq0hWmlRZPqFn2Vc/n1ZSN0MxahCgrF7E=;
        b=XzLVJfW4vDkjPGUhCeG+JsFRvdywfjxcCz7WAzw3YA5Ev5pruwzU7/FB+4G22hMf6Q
         0rm4uAOZsIjTtZi4LknJvDNWrkOSTl3/rjQ4N28RZuYReSGS7ECkQp1FOvLLB4hmVCgT
         f2yavwqMUMy5/6S7itbNSp3acMHW4X8LkoG/L0PGQViuFo/BlubggawlSayIunNW3Fhx
         0KzGjxyonc2LmSgP5HijfJvyP+YRP8QOjjg/whH40FfOaGx1bKWb6NwakkBN+oppFEtK
         zhWGvZixFTKYlYt4E27QlXItFxv8+iQYJKauaN3Qq2WRIAJwIw6KkjuXm9JGdz1Gj58T
         Xj8g==
X-Forwarded-Encrypted: i=1; AJvYcCXs9hMx9Bwgdymodn8do2phAw5uezJy0qtwfq+PgJ49CkZZ7vfmAKyS+Jxffo7N6MP3BVj2Zfw8N+E=@lists.xenproject.org
X-Gm-Message-State: AOJu0YxAx4SHcP7nlq5iOl4r/7JsByJQGBt1S4ovLbY5UJr8IV+ITTfD
	7kWhrwirSHMg+m9NpQM42sV8YdDVwz4G+vTXK0GHa/OasotL3658O6+G2uhIhiUz7g==
X-Gm-Gg: ATEYQzwTQX2tnVkJLrDAIv15O7EdghMbbjuzcGJoUduQuPqkRlTJmohgLLiOA/BGNpo
	8ktqSXNgKKhayK5X8/OiEvnG0ShRx+OW8wUFvcmONS0sxlvnVYKltk9NA2k+eIoZX4haCmI5XKG
	hhP2lf5Nvl+P42JUYm2Gel0OisAbQ0aAD2Mf5AM/aINmeFhaX68lWl3WiqBIjNEy+LQtHp+76a4
	WgKIAS/9S4SRrZg33pI/FBkeCOz3Lw/SR41TlSwZ/r3GZwWsjELFa/OTLfZbZvdVFvJ+DlKjWAO
	GFKaDYIrcIcyBuZpll9LfilsaF+RBLsmH7E5TWf4xFokNeh25rYPQxQkr+mJjvmuIvPAAyS7HFa
	trMbuYexq/WkqrHAzojiy1W8cqpK645KW0CQdF0kI4asKyKBk+vmOqkfjnoVioEaI9rUCI8uRPk
	fr+mz8lJMm6Kf5yF3Un3Dqlhhau46W0T3KV4Od/MrSp/T6izKCiGFDUvrMYm0DrBqHmYoqMTSMh
	r2ajSW7DGfq+qs=
X-Received: by 2002:a05:6000:2503:b0:43d:7ef:552f with SMTP id ffacd0b85a97d-43d150e848cmr5482451f8f.25.1775035329090;
        Wed, 01 Apr 2026 02:22:09 -0700 (PDT)
Message-ID: <5fb9b5ee-ee71-49ec-b545-62c8ec27fc15@suse.com>
Date: Wed, 1 Apr 2026 11:22:07 +0200
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH v3] xen/arm: vpsci: ignore upper 32 bits for SMC32 PSCI
 arguments
To: Mykola Kvach <xakep.amatop@gmail.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>,
 xen-devel@lists.xenproject.org
References: <e1d18d55557ebe232fd62174f186b1cf228e48e5.1774981189.git.mykola_kvach@epam.com>
 <dc5550d7-5a2d-4ca1-85de-5a17c24aeac4@suse.com>
 <CAGeoDV-ffZsOW+Cu0-oPA1obBOv_1nWU8_PAdaqaoy6=YUHGig@mail.gmail.com>
 <5b16e00e-9a4d-4a18-8a5e-dde10b42a043@suse.com>
 <CAGeoDV_Cdpa6beFemKaVcCguwmo95x0g0rsRYbS1x5dAUxFPLQ@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: <CAGeoDV_Cdpa6beFemKaVcCguwmo95x0g0rsRYbS1x5dAUxFPLQ@mail.gmail.com>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
X-purgate-ID: tlsNG-16d1c6/1775035329-5C9223D8-BC893BCF/0/0
X-purgate-type: clean
X-purgate-size: 5739

On 01.04.2026 10:49, Mykola Kvach wrote:
> On Wed, Apr 1, 2026 at 11:14 AM Jan Beulich <jbeulich@suse.com> wrote:
>> On 01.04.2026 09:13, Mykola Kvach wrote:
>>> On Wed, Apr 1, 2026 at 9:29 AM Jan Beulich <jbeulich@suse.com> wrote:
>>>> On 31.03.2026 20:31, Mykola Kvach wrote:
>>>>> From: Mykola Kvach <mykola_kvach@epam.com>
>>>>>
>>>>> SMCCC DEN0028G, section 3.1, states that for AArch64 SMC/HVC calls
>>>>> using Wn, only the least significant 32 bits are significant and the
>>>>> upper 32 bits must be ignored by the implementation.
>>>>>
>>>>> So for SMC32 PSCI calls, Xen must not treat non-zero upper bits in the
>>>>> argument registers as an error. Instead, they should be discarded when
>>>>> decoding the arguments.
>>>>>
>>>>> Arm ARM DDI 0487J.a (D1-5406) also notes that the upper 32 bits may be
>>>>> implementation defined when entering from AArch32. Xen zeros them on
>>>>> entry, but that guarantee is only relevant for 32-bit domains.
>>>>>
>>>>> Update PSCI v0.2+ CPU_ON, CPU_SUSPEND, AFFINITY_INFO and SYSTEM_SUSPEND
>>>>> to read SMC32 arguments via PSCI_ARG32(), while keeping the SMC64
>>>>> handling unchanged.
>>>>>
>>>>> No functional change is intended for PSCI 0.1.
>>>>>
>>>>> Suggested-by: Julien Grall <julien@xen.org>
>>>>> Signed-off-by: Mykola Kvach <mykola_kvach@epam.com>
>>>>> Reviewed-by: Bertrand Marquis <bertrand.marquis@arm.com>
>>>>
>>>> I thought I might as well include this in my next commit sweep, but isn't
>>>> this R-b being invalidated by ...
>>>>
>>>>> ---
>>>>> v3:
>>>>>  - use PSCI_ARG_CONV for SYSTEM_SUSPEND
>>>>
>>>> ... this change. That's ...
>>>>
>>>>> @@ -422,14 +427,8 @@ bool do_vpsci_0_2_call(struct cpu_user_regs *regs, uint32_t fid)
>>>>>      case PSCI_1_0_FN32_SYSTEM_SUSPEND:
>>>>>      case PSCI_1_0_FN64_SYSTEM_SUSPEND:
>>>>>      {
>>>>> -        register_t epoint = PSCI_ARG(regs, 1);
>>>>> -        register_t cid = PSCI_ARG(regs, 2);
>>>>> -
>>>>> -        if ( fid == PSCI_1_0_FN32_SYSTEM_SUSPEND )
>>>>> -        {
>>>>> -            epoint &= GENMASK(31, 0);
>>>>> -            cid &= GENMASK(31, 0);
>>>>> -        }
>>>>> +        register_t epoint = PSCI_ARG_CONV(regs, 1, is_conv_64);
>>>>> +        register_t cid = PSCI_ARG_CONV(regs, 2, is_conv_64);
>>>>>
>>>>>          perfc_incr(vpsci_system_suspend);
>>>>>          PSCI_SET_RESULT(regs, do_psci_1_0_system_suspend(epoint, cid));
>>>>
>>>> ... this hunk aiui, which is far from merely cosmetic imo. While
>>>
>>> Nobody said that the change had to be purely cosmetic in order to keep
>>> the tag. I understood it differently from the official Xen
>>> documentation pages.
>>>
>>>> behavior looks to remain the same for PSCI_1_0_FN32_SYSTEM_SUSPEND, it
>>>
>>> Exactly. If the changes are not substantial, I do not see a reason to
>>> drop the tag ...
>>>
>>>> clearly changes for PSCI_1_0_FN64_SYSTEM_SUSPEND. That may be intended
>>>> and for the better, but the change clearly wasn't reviewed by Bertrand,
>>>> nor - when offering the R-b - did he ask for this extra change.
>>>
>>> ... and this is also how I understood the Xen patch submission
>>> guidelines [1], which say:
>>>
>>> "Note that if there are several revisions of a patch, you ought to
>>> copy tags that have accumulated during the review. For example, if
>>> person A and person B added a Reviewed-by: tag to v1 of your patch,
>>> include it into v2 of your patch. If you make substantial changes
>>> after certain tags were already applied, you will want to consider
>>> which ones are no longer applicable (and may require re-providing)."
>>>
>>> So my understanding was that tags should normally be kept across
>>> revisions, unless the changes are substantial enough to make them no
>>> longer applicable.
>>
>> Maybe our understanding of "substantial" differs. To me that's anything
>> changing functionality. Style adjustments, typo corrections, and alike
>> generally aren't substantial (albeit even then there may be exceptions).
> 
> Thanks for clarifying what you consider substantial.
> 
> Even under that interpretation, I do not see a functionality change
> here. "Refactoring" seems like the more accurate term in this case:
> the internal form changes, but the intended external behavior does
> not.
> 
> It may be that we are using "functional change" in slightly different
> senses here.
> 
> For v3, the switch to PSCI_ARG_CONV() in SYSTEM_SUSPEND was meant to
> make this case consistent with the helper-based argument decoding used
> elsewhere, not to change behavior.
> 
> In particular, I do not see a functional change for
> PSCI_1_0_FN64_SYSTEM_SUSPEND: v2 used PSCI_ARG(regs, 1/2), and in v3
> PSCI_ARG_CONV(regs, 1/2, is_conv_64) should resolve to the same thing
> when is_conv_64 is true.

Isn't the whole point of the patch to alter behavior when is_conv_64 is
false? For that case PSCI_1_0_FN64_SYSTEM_SUSPEND behavior looks to
change in v3, when it didn't in v2. Whereas for
PSCI_1_0_FN32_SYSTEM_SUSPEND the v3 change indeed only eliminates open-
coding, which one may or may not regard as "substantial".

Personally I'm taking what's written in a pretty strict sense: If in
doubt, drop tags which may no longer cover all changes they would
apply to. (This is, in my interpretation, generally less of a problem
for A-b, as that only conveys "this kind of change is okay to make",
without covering much of the details. In the case here retaining A-b
would probably have been acceptable, albeit there's still room for
interpretation. For example, if an A-b was offered based on somebody
else's R-b, then likely the A-b would need dropping if the R-b is
dropped.)

Jan


From xen-devel-bounces@lists.xenproject.org Wed Apr 01 09:51:20 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 01 Apr 2026 09:51:20 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1270079.1558885 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1w7sEE-0003Cl-BJ; Wed, 01 Apr 2026 09:51:14 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1270079.1558885; Wed, 01 Apr 2026 09:51: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 1w7sEE-0003Ce-8g; Wed, 01 Apr 2026 09:51:14 +0000
Received: by outflank-mailman (input) for mailman id 1270079;
 Wed, 01 Apr 2026 09:51:13 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <xakep.amatop@gmail.com>) id 1w7sED-0003CY-F8
 for xen-devel@lists.xenproject.org; Wed, 01 Apr 2026 09:51:13 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1w7sEC-00Amil-Qx
 for xen-devel@lists.xenproject.org; Wed, 01 Apr 2026 11:51:12 +0200
Received: from [10.42.69.7] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <xakep.amatop@gmail.com>)
 id 69ccea60-e002-0a2a0a5209dd-0a2a4507941a-44
 for <xen-devel@lists.xenproject.org>; Wed, 01 Apr 2026 11:51:12 +0200
Received: from [209.85.208.46] (helo=mail-ed1-f46.google.com)
 by tlsNG-ef75cf.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.0)
 (envelope-from <xakep.amatop@gmail.com>)
 id 69ccea90-ba2d-0a2a45070019-d155d02eb144-3
 for <xen-devel@lists.xenproject.org>; Wed, 01 Apr 2026 11:51:12 +0200
Received: by mail-ed1-f46.google.com with SMTP id
 4fb4d7f45d1cf-66dd27d4465so898055a12.3
 for <xen-devel@lists.xenproject.org>; Wed, 01 Apr 2026 02:51:12 -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=20251104 header.d=gmail.com header.i="@gmail.com" header.h="Content-Transfer-Encoding:Cc:To:Subject:Message-ID:Date:From:In-Reply-To:References:MIME-Version"
ARC-Seal: i=1; a=rsa-sha256; t=1775037072; cv=none;
        d=google.com; s=arc-20240605;
        b=UuYzPTX/khGzL7pbdHBn+EPpH5f/H4ZYf/PW+sLHQ9GVFl24GHPpv4lqClBZMvA8GV
         8lR3u9ePtlJ4xXBRinkGopslGjahldpNq+7kOCYJgQCXit35q+c4wj/ae4G1D9EkmtfP
         aNdAxG+yJOJ9ZfzljVbm3sjha/i3j51OH3SUEonUbG4neYpzb0nSkojsmArv9HjIx+4+
         gxpMLGlBF9ZiKnhgpSOA9OFT5/PV3AFhcAATttLwhsObzZhctzXnZFkCTGMcL/Uw1uR1
         cTG9S71WRz4HEbC9AZ9f24/2M6UB99SjqP6BDMZ86e9xR84ZNnWE450f/BX3ygZhuKml
         qL/Q==
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20240605;
        h=content-transfer-encoding:cc:to:subject:message-id:date:from
         :in-reply-to:references:mime-version:dkim-signature;
        bh=qqOxVJSOhlw5ozKDEA2l/kprJZUMQ9y432cAxgYgfp8=;
        fh=bL0eezStd3aXRSa1QAyu7N6zVeBx5OkniALhDBsoIuk=;
        b=eqY84/OmmyjhUVx0S3wv2bR5fWb1IN6eioEs7hibtSkZU/fkauoI/0Rp63t0gDF6P1
         ShhzNIP6GgHHX2+2f8Orv2YMxxsjJDDmpaQYDGaLJr49L1VOCZpx9AUAS933kW4RYdN5
         W+eHM4ynYUCbAvmGqXaaRKD+eS6zeUC4EUlzntQ3WCJtGrMOxTCd3T//CTO050G4SHDH
         mkuTU4VG4JpJdbwShol7ZLon0HFntt2dc0VYNMD02QqAbrpWaK1wGOLftzsgHzgVC95t
         zWr4IV33HKsJIVR3RgOkkvVJwjEDh0v4YlZxfEuwc44P+m++U9S60OzRwLVY5VlvRJ9I
         5bnA==;
        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=20251104; t=1775037072; x=1775641872; darn=lists.xenproject.org;
        h=content-transfer-encoding:cc:to:subject:message-id:date:from
         :in-reply-to:references:mime-version:from:to:cc:subject:date
         :message-id:reply-to;
        bh=qqOxVJSOhlw5ozKDEA2l/kprJZUMQ9y432cAxgYgfp8=;
        b=WuyFue/JGFOozuNHoi7WRKsH96fOfLRmXMMUmSTc6Py+qRyA6WnDoN4Db8U9RSPJFS
         85BU0uQH0OJ+0UL9P8zGysmfn2TuO1d7vBQHTdFMJkAlaBDM6dNRQ85uqaFcqticbQeA
         2zX7rarXRzN6iYSh5icl58pZQYNeBiyoghiI2YoUkNSMg6HWPGKrK/q5YRMZoVrV7Ac1
         OgAt4M4eTXxGAM5oEyPhby/Uq1VXwFklMYRGog3gq3zOb8E2W3772zMvMuTBl5guDimr
         5W3jfEVplPQcxTH0mMOlaFRPAKL27i4JK2GtZY3ES6jODqYsA/2cGXVyQwSovHldyEiS
         xNqA==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20251104; t=1775037072; x=1775641872;
        h=content-transfer-encoding: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;
        bh=qqOxVJSOhlw5ozKDEA2l/kprJZUMQ9y432cAxgYgfp8=;
        b=RbgitCUV75ECvshiBi+TuftSgk25xEr57OsHSvJHjIu5HTOCPu4khOY4AaOhHHDwfe
         r3XHkooqe4D+NviNm0lOdqLWj+vX6292UDfq0GJWekUHieIB7TnQ1hyY9cpFTgtjqQB7
         phlaaMSR4N7Tmsons8jsUNIKg+3tdP9LjifUBE9O3yaqIFdJmtqGz51qmzM3/g466TL3
         BVN9B9+BPc1mDKLtoPJcNbwVhZcdnyt7cnwGZEmDgvI5fgpAN4pZjsEkc9drVwAzBeYR
         IR1JCLRhGA3snFoTOnKBxVEoivOmMTxjRPTgYjXT2JXBFcesA8n9laHViyu+l/SurpFs
         v9Cw==
X-Forwarded-Encrypted: i=1; AJvYcCVn3jUDfcgCpAGMCAZJESJ2aECbNMESdVN46G79E5bUyF5Zf6xWtu0jLD+kGU0bV/wzFv8SNtI1ZSM=@lists.xenproject.org
X-Gm-Message-State: AOJu0YzQJjQwMNP9QqxlGRrPK8RffpP/4NE4uWuCWHc4lc6wZwrOJJLR
	Brmnu1+dExC6yt2kcDvEwJ4xFrw88z27i/35JNgMBgZboJ6MUauz7tWT0nd8HN5FxJiUZ06MG6j
	vFbII+501L/bRSgwAIx3kZU/ODfMBiXU=
X-Gm-Gg: ATEYQzwjsdkR1kymKJAyl7lIIe2SFtLDG+XiNolnuvlPYmfw6rtVNIwC0Xl/VcT9Ach
	Z/tXOulJwpduOPDah2dmszNsISgWMErS3fHu1mIhMIDFVynMs3sE7BpdGOOS0oUjdgKYO7J1cSD
	Z5KNKOMPKSbOSGcBnDumso+S9dD0Oj3Aw2P0IDfGhs5eX8DE/MbFFwqFAGm8xzQJP0PfOQ9C5ZI
	v5Tc6dFSegWhXUFQc9d8693Nx2MOFPSa5Og29XMstIDXSH8SgUabJpTKSbrlHbQHKUYbliHcEX4
	GMkN
X-Received: by 2002:a05:6402:528a:b0:66b:f737:95f4 with SMTP id
 4fb4d7f45d1cf-66db00b3e35mr1585165a12.7.1775037071866; Wed, 01 Apr 2026
 02:51:11 -0700 (PDT)
MIME-Version: 1.0
References: <e1d18d55557ebe232fd62174f186b1cf228e48e5.1774981189.git.mykola_kvach@epam.com>
 <dc5550d7-5a2d-4ca1-85de-5a17c24aeac4@suse.com> <CAGeoDV-ffZsOW+Cu0-oPA1obBOv_1nWU8_PAdaqaoy6=YUHGig@mail.gmail.com>
 <5b16e00e-9a4d-4a18-8a5e-dde10b42a043@suse.com> <CAGeoDV_Cdpa6beFemKaVcCguwmo95x0g0rsRYbS1x5dAUxFPLQ@mail.gmail.com>
 <5fb9b5ee-ee71-49ec-b545-62c8ec27fc15@suse.com>
In-Reply-To: <5fb9b5ee-ee71-49ec-b545-62c8ec27fc15@suse.com>
From: Mykola Kvach <xakep.amatop@gmail.com>
Date: Wed, 1 Apr 2026 12:51:00 +0300
X-Gm-Features: AQROBzB70yO3YCeggq1-mH2mrx_MlMC40IhOrPlmmwIj0lwROslqAZfropiRQ-0
Message-ID: <CAGeoDV-HCKUXZ-CZBASLik=xkR02w-n=5+HVsYGwfDf4zD-3zA@mail.gmail.com>
Subject: Re: [PATCH v3] xen/arm: vpsci: ignore upper 32 bits for SMC32 PSCI arguments
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>, 
	xen-devel@lists.xenproject.org
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: quoted-printable
X-purgate-ID: tlsNG-ef75cf/1775037072-1079541E-8B15F73D/0/0
X-purgate-type: clean
X-purgate-size: 6707

On Wed, Apr 1, 2026 at 12:22=E2=80=AFPM Jan Beulich <jbeulich@suse.com> wro=
te:
>
> On 01.04.2026 10:49, Mykola Kvach wrote:
> > On Wed, Apr 1, 2026 at 11:14=E2=80=AFAM Jan Beulich <jbeulich@suse.com>=
 wrote:
> >> On 01.04.2026 09:13, Mykola Kvach wrote:
> >>> On Wed, Apr 1, 2026 at 9:29=E2=80=AFAM Jan Beulich <jbeulich@suse.com=
> wrote:
> >>>> On 31.03.2026 20:31, Mykola Kvach wrote:
> >>>>> From: Mykola Kvach <mykola_kvach@epam.com>
> >>>>>
> >>>>> SMCCC DEN0028G, section 3.1, states that for AArch64 SMC/HVC calls
> >>>>> using Wn, only the least significant 32 bits are significant and th=
e
> >>>>> upper 32 bits must be ignored by the implementation.
> >>>>>
> >>>>> So for SMC32 PSCI calls, Xen must not treat non-zero upper bits in =
the
> >>>>> argument registers as an error. Instead, they should be discarded w=
hen
> >>>>> decoding the arguments.
> >>>>>
> >>>>> Arm ARM DDI 0487J.a (D1-5406) also notes that the upper 32 bits may=
 be
> >>>>> implementation defined when entering from AArch32. Xen zeros them o=
n
> >>>>> entry, but that guarantee is only relevant for 32-bit domains.
> >>>>>
> >>>>> Update PSCI v0.2+ CPU_ON, CPU_SUSPEND, AFFINITY_INFO and SYSTEM_SUS=
PEND
> >>>>> to read SMC32 arguments via PSCI_ARG32(), while keeping the SMC64
> >>>>> handling unchanged.
> >>>>>
> >>>>> No functional change is intended for PSCI 0.1.
> >>>>>
> >>>>> Suggested-by: Julien Grall <julien@xen.org>
> >>>>> Signed-off-by: Mykola Kvach <mykola_kvach@epam.com>
> >>>>> Reviewed-by: Bertrand Marquis <bertrand.marquis@arm.com>
> >>>>
> >>>> I thought I might as well include this in my next commit sweep, but =
isn't
> >>>> this R-b being invalidated by ...
> >>>>
> >>>>> ---
> >>>>> v3:
> >>>>>  - use PSCI_ARG_CONV for SYSTEM_SUSPEND
> >>>>
> >>>> ... this change. That's ...
> >>>>
> >>>>> @@ -422,14 +427,8 @@ bool do_vpsci_0_2_call(struct cpu_user_regs *r=
egs, uint32_t fid)
> >>>>>      case PSCI_1_0_FN32_SYSTEM_SUSPEND:
> >>>>>      case PSCI_1_0_FN64_SYSTEM_SUSPEND:
> >>>>>      {
> >>>>> -        register_t epoint =3D PSCI_ARG(regs, 1);
> >>>>> -        register_t cid =3D PSCI_ARG(regs, 2);
> >>>>> -
> >>>>> -        if ( fid =3D=3D PSCI_1_0_FN32_SYSTEM_SUSPEND )
> >>>>> -        {
> >>>>> -            epoint &=3D GENMASK(31, 0);
> >>>>> -            cid &=3D GENMASK(31, 0);
> >>>>> -        }
> >>>>> +        register_t epoint =3D PSCI_ARG_CONV(regs, 1, is_conv_64);
> >>>>> +        register_t cid =3D PSCI_ARG_CONV(regs, 2, is_conv_64);
> >>>>>
> >>>>>          perfc_incr(vpsci_system_suspend);
> >>>>>          PSCI_SET_RESULT(regs, do_psci_1_0_system_suspend(epoint, c=
id));
> >>>>
> >>>> ... this hunk aiui, which is far from merely cosmetic imo. While
> >>>
> >>> Nobody said that the change had to be purely cosmetic in order to kee=
p
> >>> the tag. I understood it differently from the official Xen
> >>> documentation pages.
> >>>
> >>>> behavior looks to remain the same for PSCI_1_0_FN32_SYSTEM_SUSPEND, =
it
> >>>
> >>> Exactly. If the changes are not substantial, I do not see a reason to
> >>> drop the tag ...
> >>>
> >>>> clearly changes for PSCI_1_0_FN64_SYSTEM_SUSPEND. That may be intend=
ed
> >>>> and for the better, but the change clearly wasn't reviewed by Bertra=
nd,
> >>>> nor - when offering the R-b - did he ask for this extra change.
> >>>
> >>> ... and this is also how I understood the Xen patch submission
> >>> guidelines [1], which say:
> >>>
> >>> "Note that if there are several revisions of a patch, you ought to
> >>> copy tags that have accumulated during the review. For example, if
> >>> person A and person B added a Reviewed-by: tag to v1 of your patch,
> >>> include it into v2 of your patch. If you make substantial changes
> >>> after certain tags were already applied, you will want to consider
> >>> which ones are no longer applicable (and may require re-providing)."
> >>>
> >>> So my understanding was that tags should normally be kept across
> >>> revisions, unless the changes are substantial enough to make them no
> >>> longer applicable.
> >>
> >> Maybe our understanding of "substantial" differs. To me that's anythin=
g
> >> changing functionality. Style adjustments, typo corrections, and alike
> >> generally aren't substantial (albeit even then there may be exceptions=
).
> >
> > Thanks for clarifying what you consider substantial.
> >
> > Even under that interpretation, I do not see a functionality change
> > here. "Refactoring" seems like the more accurate term in this case:
> > the internal form changes, but the intended external behavior does
> > not.
> >
> > It may be that we are using "functional change" in slightly different
> > senses here.
> >
> > For v3, the switch to PSCI_ARG_CONV() in SYSTEM_SUSPEND was meant to
> > make this case consistent with the helper-based argument decoding used
> > elsewhere, not to change behavior.
> >
> > In particular, I do not see a functional change for
> > PSCI_1_0_FN64_SYSTEM_SUSPEND: v2 used PSCI_ARG(regs, 1/2), and in v3
> > PSCI_ARG_CONV(regs, 1/2, is_conv_64) should resolve to the same thing
> > when is_conv_64 is true.
>
> Isn't the whole point of the patch to alter behavior when is_conv_64 is
> false? For that case PSCI_1_0_FN64_SYSTEM_SUSPEND behavior looks to
> change in v3, when it didn't in v2. Whereas for
> PSCI_1_0_FN32_SYSTEM_SUSPEND the v3 change indeed only eliminates open-
> coding, which one may or may not regard as "substantial".

I think the point I was trying to make is slightly narrower: in this
code path, is_conv_64 is derived directly from fid via
smccc_is_conv_64(fid) before the switch (fid).

So for PSCI_1_0_FN64_SYSTEM_SUSPEND, I do not see how
is_conv_64 =3D=3D false could arise here: if we are in the FN64 case,
the function ID already encodes the 64-bit convention.

Conversely, if is_conv_64 is false here, then this cannot be the
FN64 case.

On that basis, I do not see a behavioral change for the FN64
SYSTEM_SUSPEND case in v3.


Best regards,
Mykola

>
> Personally I'm taking what's written in a pretty strict sense: If in
> doubt, drop tags which may no longer cover all changes they would
> apply to. (This is, in my interpretation, generally less of a problem
> for A-b, as that only conveys "this kind of change is okay to make",
> without covering much of the details. In the case here retaining A-b
> would probably have been acceptable, albeit there's still room for
> interpretation. For example, if an A-b was offered based on somebody
> else's R-b, then likely the A-b would need dropping if the R-b is
> dropped.)
>
> Jan


From xen-devel-bounces@lists.xenproject.org Wed Apr 01 10:42:54 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 01 Apr 2026 10:42:54 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1270116.1558895 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1w7t1z-00028O-3h; Wed, 01 Apr 2026 10:42:39 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1270116.1558895; Wed, 01 Apr 2026 10:42: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 1w7t1z-00028H-0Z; Wed, 01 Apr 2026 10:42:39 +0000
Received: by outflank-mailman (input) for mailman id 1270116;
 Wed, 01 Apr 2026 10:42:37 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <Oleksii_Moisieiev@epam.com>) id 1w7t1x-000287-OI
 for xen-devel@lists.xenproject.org; Wed, 01 Apr 2026 10:42:37 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1w7t1x-0054rc-44
 for xen-devel@lists.xenproject.org; Wed, 01 Apr 2026 12:42:37 +0200
Received: from [10.42.69.8] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <Oleksii_Moisieiev@epam.com>)
 id 69ccf697-5cb7-0a2a0a5109dd-0a2a450883fe-30
 for <xen-devel@lists.xenproject.org>; Wed, 01 Apr 2026 12:42:37 +0200
Received: from [52.101.84.128]
 (helo=DB3PR0202CU003.outbound.protection.outlook.com)
 by tlsNG-c1860d.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.0)
 (envelope-from <Oleksii_Moisieiev@epam.com>)
 id 69ccf69c-fab6-0a2a45080019-346554803d0c-3
 for <xen-devel@lists.xenproject.org>; Wed, 01 Apr 2026 12:42:37 +0200
Received: from DU5PR03MB10263.eurprd03.prod.outlook.com (2603:10a6:10:519::5)
 by PAVPR03MB9139.eurprd03.prod.outlook.com (2603:10a6:102:326::15)
 with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9769.17; Wed, 1 Apr
 2026 10:42:34 +0000
Received: from DU5PR03MB10263.eurprd03.prod.outlook.com
 ([fe80::8c9e:b301:61c0:3908]) by DU5PR03MB10263.eurprd03.prod.outlook.com
 ([fe80::8c9e:b301:61c0:3908%5]) with mapi id 15.20.9769.016; Wed, 1 Apr 2026
 10:42: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=UxoSgd6yIWi3ivcRGT7578zYuyGVd3v+ORwigAe2W/+7FSY0/A/kgNn5Wr64YuKvuTVehRDd1cNd5kHeGU1k5XFqINLWjkLLHp6ZfQFAT9XPRIl9AzCBayhB2GcHf53hkxMo9zPPHzU+IE/PX8P6q8St0hSbBRw+HLNOC/dcw18jtjMNBUaC7R4B9XANEQ+sMku4EXtgjADrngDLMbEnAxiU+DqJ9sr77kKZBXvyxa/zXnaniQgjcmMKFm+SkcCjNHp7ZClIpgg1SvgRyLx4BO2+kzoJbh09yn9CjOOJIpwB927hMIAlnY8BA3rF0wKw/1AbI69MdsnXLx5wknatUg==
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com;
 s=arcselector10001;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1;
 bh=RVY3b3fWcKAQXVxPXu4SXEFjoVVDvCCE5N7bue1Qb1A=;
 b=uNfr2X/iX2J0Mcw1GdnthZ82FzDq++vrGB6KkXK8a9ROARs5DruuwjI7ewJFvt3arJZQ06iV8luci9m+CeOKpn7EBmvxs/SyyEyYsujsVvPKcobbVQeWrmzRaGkZsLdcBsH6htKqCi2koESR5T7hDVClunWZ8vn+SW0QKJNq6SzIK6y8XvlSuWhLZ1/dggLVTRfz9Tr8x+JMaRwF+HbdgfSBKoU0SSMXXRN3vCo85bXdTyyVNhr5SPK5uCXPZZJQyZBM/87/UEShwbxnHpdx2EWIT+IcCSyijA8R46J8h0Ani9Y8v3ukeNzH7Y1RSrS5iO/rsHqbqB0vLEIY0qlYSg==
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=RVY3b3fWcKAQXVxPXu4SXEFjoVVDvCCE5N7bue1Qb1A=;
 b=JwuerzPQm6StZXtNsRxNA/NLNC4Mhyv26p+xF1c6iyE9ur3c8oiIQGO12UejHVCLXJfwutUC1fUrTBY2dlAbnLMOFjiaqx86ycNnwnBwrukdJQmrQIRPtCQn3J3ZEqpoB3aGvlKZ6nbARxl0PDHmJgmwEe19uhKhNo+9ncvcR7iVWnEwoKORP4gs8JwArE0psvjSYpwUB4SSl7LKnsMunorQGc4k5+nLXQbqIpMHfmPGI7oAQjwhSUNFNvwN/xj6hnxZWkNwqzxJSi+p7E60M9awFhOvE4aipaf+VNhjxZV7lU8YmcuTWG65iprzVVFX5AUaldLWoh+C1RC0LDrajQ==
Authentication-Results: dkim=none (message not signed)
 header.d=none;dmarc=none action=none header.from=epam.com;
Message-ID: <2e6e0203-da8b-4261-8817-f4590350f8c9@epam.com>
Date: Wed, 1 Apr 2026 13:42:33 +0300
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH] xen/sched: rtds: prevent extratime priority_level
 wraparound
To: Jan Beulich <jbeulich@suse.com>
Cc: Dario Faggioli <dfaggioli@suse.com>, George Dunlap <gwd@xenproject.org>,
 Juergen Gross <jgross@suse.com>, Meng Xu <mengxu@cis.upenn.edu>,
 "xen-devel@lists.xenproject.org" <xen-devel@lists.xenproject.org>
References: <b6e65a9fb94d581a31e1d06b241522c17a7863cc.1774943670.git.oleksii_moisieiev@epam.com>
 <5b1e5de7-b2b0-4dae-bbe6-03809637d239@suse.com>
Content-Language: en-US
From: Oleksii Moisieiev <oleksii_moisieiev@epam.com>
In-Reply-To: <5b1e5de7-b2b0-4dae-bbe6-03809637d239@suse.com>
Content-Type: text/plain; charset=UTF-8; format=flowed
Content-Transfer-Encoding: 7bit
X-ClientProxiedBy: FR4P281CA0396.DEUP281.PROD.OUTLOOK.COM
 (2603:10a6:d10:cf::10) To DU5PR03MB10263.eurprd03.prod.outlook.com
 (2603:10a6:10:519::5)
MIME-Version: 1.0
X-MS-PublicTrafficType: Email
X-MS-TrafficTypeDiagnostic: DU5PR03MB10263:EE_|PAVPR03MB9139:EE_
X-MS-Office365-Filtering-Correlation-Id: 71a786e5-97f3-4de0-81d5-08de8fdb626a
X-MS-Exchange-SenderADCheck: 1
X-MS-Exchange-AntiSpam-Relay: 0
X-Microsoft-Antispam:
	BCL:0;ARA:13230040|366016|376014|1800799024|56012099003|22082099003|18002099003;
X-Microsoft-Antispam-Message-Info:
	qWZVINSx0pAaO6XPj5UnJ0CTS/8n8an/MTBUxX1CsR1Pe/v9BXSr2THY334I9c8hPLhUMXWYZlk4AmqK/A5QinV0dMQ3yFQozlltfalEk1MLs2ZWgAo/pYav+tMTqTEanwAjfI3gyZCOrhrW0h2pdNeYtEdtLgz1uN1AFk4j/9V4USclR0NRncRBaMytRFE+KTYcjTDPAng7A/v+kDPmOB2NZSXKQtUIzPU3KkZp/2Lk6jQLrqN5YrvEJtZ8qO+0bH7kp58Y1wWapFVUqt14GdB5IhndFrn5I2Wwy9sDQB6DZ+Km2DS4kLj/3uOgIsT7n1HL4+7Q1kw+N4IDJ9r8zFfqTRGdTe7alQJpsm8OAQKMER+5VO7HV0lVHNPpUqmjm2i5j//wCuNcyEY5k6ZviEZOdUZ51Bkv1alFeq9qLE2Ie6+CFfjVZDnoKC9DHA79LEUVBJ/n2MCnPYQcmk4c2fIbVXuKMAe8utxFvBu8sgnK3Q801tA387vYZmkfTYhwYRj1F+jllVs+geUemto9W2MFv+sw1QaADrBrB7CG1dTV9D/G8H/VR5IGbnZm/GGCQQ3URXQnM65O1EJthvLo2/rB6Bo8Nwylf72hdX5XSSmDPE12/DH3DzEE0l3DSeAVJJg0cBI4AhGvcz+NpDT6O2jLpd7ia3SO4UIUTRF4B6koV2pMuUs92/du7aaDLP/l3nW72k4qEBgFgoqO4Rb5ihRTGiaBdqfs06OoPVQFkMY=
X-Forefront-Antispam-Report:
	CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:DU5PR03MB10263.eurprd03.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(366016)(376014)(1800799024)(56012099003)(22082099003)(18002099003);DIR:OUT;SFP:1102;
X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1
X-MS-Exchange-AntiSpam-MessageData-0:
	=?utf-8?B?RkI0TzF5UndpTXYwLzRyZkNndFVqUm5sRWkxQXAvWXlOQ05ScExaYlcrVHdR?=
 =?utf-8?B?OStUbWpSalU4S1FKdVJvVkk2b0lpZmtOMTVBOWlMQUlENlA4VERudHovb1Jx?=
 =?utf-8?B?ZjQ5VDI0N0Z6dUpwbC9SR25YV3YwWElwMzhuM1I3em55UDJINGJLaEFzWmRK?=
 =?utf-8?B?RXV2OG1oaTFsVXdPemVJSG1sODg2SldGN3NzOG5IRVk2L0tkSElSd2tUR0V5?=
 =?utf-8?B?bjJvZ1JFSEl0czRUamk4RUZFZFZGRDNwMWtMOFRjdHVTYWp6VitZM0JWaTJn?=
 =?utf-8?B?cVBCV3BZTWFEcnZNckFjKzZYU1ZrZFpEQW0yUVlhclpLTkl6SkdzMEIyTnI0?=
 =?utf-8?B?M2RFblVuMWRQanAydXFBY3JWcFN5MkhndXZHUVh3alkvQmU0b2l1dEExdlFB?=
 =?utf-8?B?OGJ6L1N4cXpXTmNYMndIVWxKUW0vRG1SWDdvQWtuazBqbW5RemdBSDlWYnZJ?=
 =?utf-8?B?aVNMKzF6WTBQVGwxMkV5ZWFvdzQxRDdxdGZ3M2ZhNUtJZ1dKQ2lFSlZMUFZR?=
 =?utf-8?B?SThLeTB6aElXMkwvcjYrUmlKVXJVbDRYN21PaGlNc2ZPUFhHb01LWHozZ1JT?=
 =?utf-8?B?WHhUaUpZRFdObnFYaU1yUUV5dWJMSTYrWG01TUN0ZHg2eE9YWDI2REhuZytx?=
 =?utf-8?B?dndmb1YyN0FqK2MwMUdBekNsK3lYVXhmSm9vU012QlpXaG1OSVEzekx5UE9o?=
 =?utf-8?B?N2g0K3k2MWE3NUpndUFJa09ZK1hjSGVXWjUweXg0TW90Tkl3RmhXaXhXZTFs?=
 =?utf-8?B?bVZHNW45Y202ZFZGeDA0UTdQZitqbnZvZWpmSWE1TTk5MXhIaENqbGErVTFF?=
 =?utf-8?B?dUZWOFZQbC9qNnVNOXR6QTBDTkFiNTZmVW1lMW8xTldHSDJCWU5ROXdqbUI4?=
 =?utf-8?B?V1paNzE4Rk5XVDM3Tkl6VHAxLzlhanJIRmpRT0ZEMFRvWHdBUGVkb0hyNTJo?=
 =?utf-8?B?bTZqTzNzc21sZitUSXpNVmYyVy82aUZucjF5NFZOV09qRHNDUTJ5S0lkTWJ4?=
 =?utf-8?B?bi9VczBSME9rM3JNZnVXQSs2ZE1KWmJPTm9nSmZXNXZIZGVUdnZhRFhjMHc0?=
 =?utf-8?B?YjdpbHRvSDB6a0QrSWk0UDczc1dWOEw5V01KeE5Wc1BROEIxNDMzRStxYmtq?=
 =?utf-8?B?OVdIUW9hWWFKT2dtb2V6VTAxT29MNDUrWDE4dEVoa3BZa01aSkdFeHM0ajRX?=
 =?utf-8?B?QVNhcWpRTXVrcEtHWTdvZWcxbDl2b1g2WWdSbXFSaU41MlhTV3c0NEF5U09B?=
 =?utf-8?B?MFhUOFdIQUFQZnFURjNQRHZZUFJla3ZERU5JRXRHVFFjNU8wdEVuNzc5bEEw?=
 =?utf-8?B?N2RBQ2xwWFpnVEtlcGFsOERyR0wzdEJCQno4UEt2TkdiaDRZT1h0TE1OR0l3?=
 =?utf-8?B?czhTTmZpRW1hTnpsTkhSTjJCVUs3SzVqZjY3RE1lSUxVOXkvVzQrRDR4QnNv?=
 =?utf-8?B?LzFoNWFwekRaaXFmVklhRytnTVdGY2hSUUtxN0xGQWtLN2pFWkJIU2I3cVRs?=
 =?utf-8?B?WFF2NldianB5Z044ZmgxN1RQblQ1RkU0K09RYmFsM09pUWVRcDdhUUtHMW41?=
 =?utf-8?B?NjAwTUc1K0p0T0MwUUVJbDlJMkMzNWhONHVCZ0lKb3VBWStMbzRkWThWd3Nn?=
 =?utf-8?B?cGNoQnduSVNWKy9RRGFoaTlSSUJ3b0JOS0FXUWNIZnE2NlNQeDhzK3ZaVGwv?=
 =?utf-8?B?cC9tOTd6Rzl3QUlUTENQSDI0clJyQVlHRG1QN0ZodnRSYkdGUm40WHkrTUVE?=
 =?utf-8?B?OGt4aVl1TkpLVGlxbTN6L2RaZ3BQYzY0UStKUTVOc3F5MjRkZGkxVmtUVWVD?=
 =?utf-8?B?cVUwUE9FeU56TnVIb0VYUEhEdFo1T2hsRFArLzVmMmlHd25kd3FVR3dFZDRO?=
 =?utf-8?B?ME8vNlhIUnFhclVTTWRZeWhHaVNEdDFZdEpyZDg2V2FDRzhsNDAzY3AwbEpB?=
 =?utf-8?B?OTlQRmpzd3VSUVhmV0hDSSt3Rk95WWxZU1podXRnM05NUVBKQXpXNXpiWWFq?=
 =?utf-8?B?UWl2YVltZGNoejhzVDZyK2JrM0NxdFpsWWUwTEJKVlNhOFhwTUF6ZjMwNjJ3?=
 =?utf-8?B?cDVKc1lCK0FvczMxMkRxUUJ5d0E0WTM3aUt1eWtLaVJxUnN1bUQrN0ZjZ0U1?=
 =?utf-8?B?ODlvWEMrZFV1VUJZUXVvUnBXbnB4M3lFL2dHRTJpMGpkd3ZsckxoREl0TkdF?=
 =?utf-8?B?c0JIVzJMTzlFQTF5ZS9uek0xdnpiSlhBdlRsVlA5MHBnS3pzeEZ3QTduVzNu?=
 =?utf-8?B?bGtsbUhjYUdYL0FTSnk1UEp0UDhqR1phSlh4eW5rWlBmaDU2ZkRsRGQ0U1pF?=
 =?utf-8?B?UjhCaWluT3RLZ1RBMUJqbVBnclhzdXQ2Y3d3Ymx4ZW1YVXA2dmNwMUEwdDdS?=
 =?utf-8?Q?NTAttBfTuJAO/RzE=3D?=
X-OriginatorOrg: epam.com
X-MS-Exchange-CrossTenant-Network-Message-Id: 71a786e5-97f3-4de0-81d5-08de8fdb626a
X-MS-Exchange-CrossTenant-AuthSource: DU5PR03MB10263.eurprd03.prod.outlook.com
X-MS-Exchange-CrossTenant-AuthAs: Internal
X-MS-Exchange-CrossTenant-OriginalArrivalTime: 01 Apr 2026 10:42:34.6560
 (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: lkclCdHCI8mVQvjan5cKa/pnua+7jv08rQ1fOrteM92EEF+3FshMIgtzH6NqIgA9sLhptZC2CwP3TqNIDAmZwORlwIBKCk4tvPkXgcCE3N8=
X-MS-Exchange-Transport-CrossTenantHeadersStamped: PAVPR03MB9139
X-purgate-ID: tlsNG-c1860d/1775040157-F6D4B497-71F19D2E/0/0
X-purgate-type: clean
X-purgate-size: 1109

Hi Jan,

I have an R-b from Juergen. Should I post another version with "Fixes:"

or it could be added to the commit message during merge?

--

Oleksii

On 31/03/2026 11:10, Jan Beulich wrote:
> On 31.03.2026 09:54, Oleksii Moisieiev wrote:
>> In RTDS, burn_budget() increments priority_level for extratime units
>> whenever cur_budget is exhausted. As priority_level is unsigned and was
>> unbounded, it could eventually overflow to 0.
>>
>> A wrapped value of 0 is the highest RTDS priority, so an extratime unit
>> could unexpectedly regain top priority and preempt units with active
>> real-time reservations, violating EDF intent.
>>
>> Fix this by saturating priority_level at RTDS_MAX_PRIORITY_LEVEL instead
>> of incrementing unconditionally. Budget refill semantics are unchanged.
>>
>> Normal behavior is unchanged. Once saturated, priority_level remains at
>> the lowest priority until the next period update resets it.
>>
>> Signed-off-by: Oleksii Moisieiev <oleksii_moisieiev@epam.com>
>  From the description, this looks to want to have a Fixes: tag added.
>
> Jan


From xen-devel-bounces@lists.xenproject.org Wed Apr 01 12:03:54 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 01 Apr 2026 12:03:54 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1270156.1558904 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1w7uIP-0004xW-U4; Wed, 01 Apr 2026 12:03:41 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1270156.1558904; Wed, 01 Apr 2026 12:03: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 1w7uIP-0004xP-RR; Wed, 01 Apr 2026 12:03:41 +0000
Received: by outflank-mailman (input) for mailman id 1270156;
 Wed, 01 Apr 2026 12:03:40 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <jbeulich@suse.com>) id 1w7uIO-0004wz-Kq
 for xen-devel@lists.xenproject.org; Wed, 01 Apr 2026 12:03:40 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1w7uIO-00BHgK-0Y
 for xen-devel@lists.xenproject.org; Wed, 01 Apr 2026 14:03:40 +0200
Received: from [10.42.69.2] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <jbeulich@suse.com>)
 id 69cd0999-e002-0a2a0a5209dd-0a2a4502e3f0-8
 for <xen-devel@lists.xenproject.org>; Wed, 01 Apr 2026 14:03:39 +0200
Received: from [209.85.128.46] (helo=mail-wm1-f46.google.com)
 by tlsNG-720697.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.0)
 (envelope-from <jbeulich@suse.com>)
 id 69cd099b-42fa-0a2a45020019-d155802ed0a6-3
 for <xen-devel@lists.xenproject.org>; Wed, 01 Apr 2026 14:03:39 +0200
Received: by mail-wm1-f46.google.com with SMTP id
 5b1f17b1804b1-48702d51cd0so80262575e9.2
 for <xen-devel@lists.xenproject.org>; Wed, 01 Apr 2026 05:03:39 -0700 (PDT)
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-4887e93c014sm129593595e9.10.2026.04.01.05.03.38
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Wed, 01 Apr 2026 05:03:39 -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=google header.d=suse.com header.i="@suse.com" header.h="Content-Transfer-Encoding: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=1775045019; x=1775649819; darn=lists.xenproject.org;
        h=content-transfer-encoding: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;
        bh=ncQ7EwCCia3SUh+upWdtn/VSemhWNEj5HdIH6WAMNTQ=;
        b=atBge1e+2Iifj6pIjBIMveQdPU341FG78zKUHoDAM4SJ+he+cTgZRW7+FDeldx3vQf
         iZQBgPXsI3N+INo81NdODPuxMtHOCuKhJXE9dtFKuJL/WqQq46YNYs+jky3q5QutPOZB
         DzzPmTELixdKEGDL8I1OerpR32F2Znwj01PcGqH1Wvdz9jDRsCaARS+aRB6dDk74qk87
         6E4PW8sBsZFSR686zzAMasNHpqO44h3vq3qJ843vyt38+eGt/zh9dXECapEDFq4Esr2O
         1eA+yU4MsPdtM8d1442cCB4eXGGqt7B9xyMceqQbgPZLiNLfWRF4wfN6HFDx5Qoxnhwa
         i+hA==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20251104; t=1775045019; x=1775649819;
        h=content-transfer-encoding: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;
        bh=ncQ7EwCCia3SUh+upWdtn/VSemhWNEj5HdIH6WAMNTQ=;
        b=Vg8ks3H8VNLGvMZTBv3glH4khjAwsn5c4Fh7+Jeu56xmsSf7/roHRdL5DJurEJhDLo
         YOKbqaipBSj7DGmRrHsNBOJcVWXyug9FXDKx6aWafszmZNAJ3QkLF4SMBgig/UzRQQck
         pUJhKoN+40Z9e+k0nlbAnj9sDZbQ0sJ6nNXV16891mFm0rFtzWzxrnRDA6RnXjEFbO8J
         6mLcc5P7iksEjmeyTJuMNRD4lwfdha+Cs0N+e//g9KKrqRokpffrHh3AFt5SiFk+qtXh
         WsKwhVj4ihDFLLfdKNpAFbT06r7Gsblnn1RrHBY//2wcS1LiNWUht99SgqxRrkUIAty+
         Kjag==
X-Forwarded-Encrypted: i=1; AJvYcCW4PYnq0WkqA/7TcvptBZPktzXwq8NaAK/Nv9gv1it4svfO4yIRb4ZXwALfhtKNQ2VWLEgWkEFfJ/4=@lists.xenproject.org
X-Gm-Message-State: AOJu0YxnfW49vSjRUTpsanYrbJJHJBAXuNdWSCluhn1frtqJ7zD/jNuZ
	6G6LwUqW+CNVcraYt3smVt1bfudhqoci9cQulWMOsGBHqizc2I2w07Tvgnp5OACbjA==
X-Gm-Gg: ATEYQzwkRrUrKkhy1bP8LV0JHi7pOUKDXc4QNkfRKzlgU6QOM8VafogOf4OeghPxiya
	i9GXFeQ8rMTEzinmzGXkztd5OtXXcwB6VtKQuK7SVvTxTS5toaaqBC9KpbRgUcxr2zNSZhTi/Lp
	bdVUlLnPiTBoJZ6IhpX5oFHA2qSeM5M4xg8M6v2FnmPCOTWEH0FGTBnzE7+jM2Xck6b/rt2Y5+a
	mBm1HQGCZ0ENyEH0bvraz9sSmpuIZOcVkFFNdz3zzPK6dOYvUbPzWyh9hg7umrpk4TRlD6OSDW9
	7PrjTpBozK4XYXVYPkgx4i+HX+A5/sWWnMl8/oFpdZuz7zfZxTWLRaLItfAcyz5fyJAni9/05ck
	w+EysvQtkN4ZiZxXn11UTlnVB9ORpDZRP7m9PR1FQR4KKufMSHCfUJMClJUypIQdC8pYbbDNGS8
	hltq39CNcug42w+rUye/Fb/p4uCsb13jwNXrL2Zn6FM8Alpbo1k9qdHqlNBQE2IQFXJCFJbTYZk
	xh8DX83OWkCrlk=
X-Received: by 2002:a05:600c:34d0:b0:487:2651:dd6b with SMTP id 5b1f17b1804b1-4888359ac5bmr58215705e9.29.1775045019310;
        Wed, 01 Apr 2026 05:03:39 -0700 (PDT)
Message-ID: <87ba5427-ff89-44f9-aa4d-35f9ac05081a@suse.com>
Date: Wed, 1 Apr 2026 14:03:37 +0200
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH] xen/sched: rtds: prevent extratime priority_level
 wraparound
To: Oleksii Moisieiev <oleksii_moisieiev@epam.com>
Cc: Dario Faggioli <dfaggioli@suse.com>, George Dunlap <gwd@xenproject.org>,
 Juergen Gross <jgross@suse.com>, Meng Xu <mengxu@cis.upenn.edu>,
 "xen-devel@lists.xenproject.org" <xen-devel@lists.xenproject.org>
References: <b6e65a9fb94d581a31e1d06b241522c17a7863cc.1774943670.git.oleksii_moisieiev@epam.com>
 <5b1e5de7-b2b0-4dae-bbe6-03809637d239@suse.com>
 <2e6e0203-da8b-4261-8817-f4590350f8c9@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: <2e6e0203-da8b-4261-8817-f4590350f8c9@epam.com>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 7bit
X-purgate-ID: tlsNG-720697/1775045019-4792ECD1-649FF7FD/0/0
X-purgate-type: clean
X-purgate-size: 341

On 01.04.2026 12:42, Oleksii Moisieiev wrote:
> I have an R-b from Juergen. Should I post another version with "Fixes:"
> 
> or it could be added to the commit message during merge?

It can be folded in while committing, sure, but first you need to collect
a maintainer ack. See also "The meaning of nesting" in ./MAINTAINERS.

Jan


From xen-devel-bounces@lists.xenproject.org Wed Apr 01 12:25:07 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 01 Apr 2026 12:25:07 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1270175.1558912 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1w7ud4-0008G5-HU; Wed, 01 Apr 2026 12:25:02 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1270175.1558912; Wed, 01 Apr 2026 12:25: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 1w7ud4-0008Fy-Ep; Wed, 01 Apr 2026 12:25:02 +0000
Received: by outflank-mailman (input) for mailman id 1270175;
 Wed, 01 Apr 2026 12:25:01 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <jbeulich@suse.com>) id 1w7ud3-0008Fs-3K
 for xen-devel@lists.xenproject.org; Wed, 01 Apr 2026 12:25:01 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1w7ud2-00FvJp-FN
 for xen-devel@lists.xenproject.org; Wed, 01 Apr 2026 14:25:00 +0200
Received: from [10.42.69.8] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <jbeulich@suse.com>)
 id 69cd0e98-2eae-0a2a0a5409dd-0a2a4508d5bc-16
 for <xen-devel@lists.xenproject.org>; Wed, 01 Apr 2026 14:25:00 +0200
Received: from [209.85.128.54] (helo=mail-wm1-f54.google.com)
 by tlsNG-c1860d.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.0)
 (envelope-from <jbeulich@suse.com>)
 id 69cd0e9c-fab6-0a2a45080019-d1558036c9e2-3
 for <xen-devel@lists.xenproject.org>; Wed, 01 Apr 2026 14:25:00 +0200
Received: by mail-wm1-f54.google.com with SMTP id
 5b1f17b1804b1-48558d6ef83so68468665e9.3
 for <xen-devel@lists.xenproject.org>; Wed, 01 Apr 2026 05:25:00 -0700 (PDT)
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-4887c8d3684sm39777325e9.29.2026.04.01.05.24.58
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Wed, 01 Apr 2026 05:24:59 -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=google header.d=suse.com header.i="@suse.com" header.h="Content-Transfer-Encoding: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=1775046300; x=1775651100; darn=lists.xenproject.org;
        h=content-transfer-encoding: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;
        bh=s7MQ0xAq1xuMEk8BAn5zv6LzYyLL0WqnQCl5ZROUK08=;
        b=e8q++qem7pIFK510Ft9E92gOzxDX47fEryGi2iit4zee3z0s+hxuIlml2LHgl7g86N
         jmiVdGQD5o1kM4v7o8NdJIDbx2o0jx+0C6sXVDPxKZUwdWa4hmC8kHzf7s7AnSpe0B6O
         MXbYEwrFauai5gbcHKHj9WlTcKO/dAkqjeUP9RrVzkrsslFpP6E42n+AKDEjTCulal+x
         BJiNDY3daLoqU/k2A02zWtI91IAyCkEndqscoFQg/jQ6nRoLn4G6i4q7jKdLWVv6y/49
         GwXK7lnVBPt/jZDffwJrifThpJfEdkVGOeVzt89n1ESmPDe5PErsrPiXRo8tfd2bFA3q
         1KcA==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20251104; t=1775046300; x=1775651100;
        h=content-transfer-encoding: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;
        bh=s7MQ0xAq1xuMEk8BAn5zv6LzYyLL0WqnQCl5ZROUK08=;
        b=eTShQl647VZ0G67F0VaHGIfA8OEihUYzUo9gKuQHATxvnPJfGlgTzX/4QjkfuWMr8l
         gSjrW8qlig8/LYskiVL/KD+VYoja0OXHCe/NxuFCz2psSzefwetrRihMTwJQeeQ310Ud
         x2txNcmZL8F4FgAcfmQbeHzrSr3LLPNv8ipsAsvBC7rxLZyRYnlxN2dvE1orbsGCzJ0V
         lFdwZuLNdVmif6ZtlChXZ22vxaTZjT2uZnjtmqEQh65elpEJSX9eLmccuQByBoiOr4m/
         2FVNk1aUYADAMOlwpbwg+zkKxHofDxFTUR+F4yDIE6xFdyA4dO4pMhazIzbxuc7EpHKh
         wffQ==
X-Forwarded-Encrypted: i=1; AJvYcCUDsNMikbaodBDEby3fcQX9B7wo2vUzB2bKUicLqDRJ8MfQGqtRXq3UMTzM2gcKFnSzkLmqEOWQ3+k=@lists.xenproject.org
X-Gm-Message-State: AOJu0Yx3NCo3FkhmypVpdfMwr79PKMWmrVKL2w3zWsnqaYn1AU3OG4rw
	HG0dDNAyg9Id4O1a3RAYxl9ZGILIGgW1MJZxMNE/pRat09HZ/rB3QvQkBTZVmSOB3g==
X-Gm-Gg: ATEYQzxCsQekvZxVHPIcj1ZL/scm2Y+lHQSmvL6Hlf+8RBTLY4+IuPGgsdOG/zliIUh
	6SXBfeiVtX5M3ExmCXZYRgD3hbIb/c0/JFbbASoCE9hnmpgpv2C9aAehhZshY1jIS21RIFC5Eou
	MJXkOF/rr/npiX9GKXG/4ap3A3UmaY4BmtI9yxsxYi9R+IO6C7n+WD/bYjq/CNWSgz9dwxSmHL4
	jwrQ0UpLKMqhY7EFYv2VEDKzYVj+ggLsDqNaZ1+O+/aJHgHF6kXA2/vuo+sfNU5hoWKMb5N+KR/
	VDhzVVcIkritcNDJDnkLTCheNhN9BD6DWBBbMUvc1H9CadRlGQ8XmXd9SCZ0TZ+i9tOlj5Y1HtT
	2N7ob60fmqsw/oXX5VTq6nPcrqOuD98PW/3VUG7VLU2WuGFInRthoDMzSI5L5QOZYQlCwkHPOgd
	pAqvL6/nGPWhjcG/JZSf9DQmsKUQKCrrB7eB13JV04Br+jd1ZsImzQF/IIlZSdVBgAMdIEzBmfz
	uUJcG19R5TrE9g=
X-Received: by 2002:a05:600c:c056:b0:485:3a86:6392 with SMTP id 5b1f17b1804b1-488835b75c4mr38932165e9.20.1775046299658;
        Wed, 01 Apr 2026 05:24:59 -0700 (PDT)
Message-ID: <425cdc68-5e25-4e01-b5d9-6469e2d08abb@suse.com>
Date: Wed, 1 Apr 2026 14:24:57 +0200
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH v3] xen/arm: vpsci: ignore upper 32 bits for SMC32 PSCI
 arguments
To: Mykola Kvach <xakep.amatop@gmail.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>,
 xen-devel@lists.xenproject.org
References: <e1d18d55557ebe232fd62174f186b1cf228e48e5.1774981189.git.mykola_kvach@epam.com>
 <dc5550d7-5a2d-4ca1-85de-5a17c24aeac4@suse.com>
 <CAGeoDV-ffZsOW+Cu0-oPA1obBOv_1nWU8_PAdaqaoy6=YUHGig@mail.gmail.com>
 <5b16e00e-9a4d-4a18-8a5e-dde10b42a043@suse.com>
 <CAGeoDV_Cdpa6beFemKaVcCguwmo95x0g0rsRYbS1x5dAUxFPLQ@mail.gmail.com>
 <5fb9b5ee-ee71-49ec-b545-62c8ec27fc15@suse.com>
 <CAGeoDV-HCKUXZ-CZBASLik=xkR02w-n=5+HVsYGwfDf4zD-3zA@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: <CAGeoDV-HCKUXZ-CZBASLik=xkR02w-n=5+HVsYGwfDf4zD-3zA@mail.gmail.com>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
X-purgate-ID: tlsNG-c1860d/1775046300-F4F5A497-C9044C30/0/0
X-purgate-type: clean
X-purgate-size: 6421

On 01.04.2026 11:51, Mykola Kvach wrote:
> On Wed, Apr 1, 2026 at 12:22 PM Jan Beulich <jbeulich@suse.com> wrote:
>> On 01.04.2026 10:49, Mykola Kvach wrote:
>>> On Wed, Apr 1, 2026 at 11:14 AM Jan Beulich <jbeulich@suse.com> wrote:
>>>> On 01.04.2026 09:13, Mykola Kvach wrote:
>>>>> On Wed, Apr 1, 2026 at 9:29 AM Jan Beulich <jbeulich@suse.com> wrote:
>>>>>> On 31.03.2026 20:31, Mykola Kvach wrote:
>>>>>>> From: Mykola Kvach <mykola_kvach@epam.com>
>>>>>>>
>>>>>>> SMCCC DEN0028G, section 3.1, states that for AArch64 SMC/HVC calls
>>>>>>> using Wn, only the least significant 32 bits are significant and the
>>>>>>> upper 32 bits must be ignored by the implementation.
>>>>>>>
>>>>>>> So for SMC32 PSCI calls, Xen must not treat non-zero upper bits in the
>>>>>>> argument registers as an error. Instead, they should be discarded when
>>>>>>> decoding the arguments.
>>>>>>>
>>>>>>> Arm ARM DDI 0487J.a (D1-5406) also notes that the upper 32 bits may be
>>>>>>> implementation defined when entering from AArch32. Xen zeros them on
>>>>>>> entry, but that guarantee is only relevant for 32-bit domains.
>>>>>>>
>>>>>>> Update PSCI v0.2+ CPU_ON, CPU_SUSPEND, AFFINITY_INFO and SYSTEM_SUSPEND
>>>>>>> to read SMC32 arguments via PSCI_ARG32(), while keeping the SMC64
>>>>>>> handling unchanged.
>>>>>>>
>>>>>>> No functional change is intended for PSCI 0.1.
>>>>>>>
>>>>>>> Suggested-by: Julien Grall <julien@xen.org>
>>>>>>> Signed-off-by: Mykola Kvach <mykola_kvach@epam.com>
>>>>>>> Reviewed-by: Bertrand Marquis <bertrand.marquis@arm.com>
>>>>>>
>>>>>> I thought I might as well include this in my next commit sweep, but isn't
>>>>>> this R-b being invalidated by ...
>>>>>>
>>>>>>> ---
>>>>>>> v3:
>>>>>>>  - use PSCI_ARG_CONV for SYSTEM_SUSPEND
>>>>>>
>>>>>> ... this change. That's ...
>>>>>>
>>>>>>> @@ -422,14 +427,8 @@ bool do_vpsci_0_2_call(struct cpu_user_regs *regs, uint32_t fid)
>>>>>>>      case PSCI_1_0_FN32_SYSTEM_SUSPEND:
>>>>>>>      case PSCI_1_0_FN64_SYSTEM_SUSPEND:
>>>>>>>      {
>>>>>>> -        register_t epoint = PSCI_ARG(regs, 1);
>>>>>>> -        register_t cid = PSCI_ARG(regs, 2);
>>>>>>> -
>>>>>>> -        if ( fid == PSCI_1_0_FN32_SYSTEM_SUSPEND )
>>>>>>> -        {
>>>>>>> -            epoint &= GENMASK(31, 0);
>>>>>>> -            cid &= GENMASK(31, 0);
>>>>>>> -        }
>>>>>>> +        register_t epoint = PSCI_ARG_CONV(regs, 1, is_conv_64);
>>>>>>> +        register_t cid = PSCI_ARG_CONV(regs, 2, is_conv_64);
>>>>>>>
>>>>>>>          perfc_incr(vpsci_system_suspend);
>>>>>>>          PSCI_SET_RESULT(regs, do_psci_1_0_system_suspend(epoint, cid));
>>>>>>
>>>>>> ... this hunk aiui, which is far from merely cosmetic imo. While
>>>>>
>>>>> Nobody said that the change had to be purely cosmetic in order to keep
>>>>> the tag. I understood it differently from the official Xen
>>>>> documentation pages.
>>>>>
>>>>>> behavior looks to remain the same for PSCI_1_0_FN32_SYSTEM_SUSPEND, it
>>>>>
>>>>> Exactly. If the changes are not substantial, I do not see a reason to
>>>>> drop the tag ...
>>>>>
>>>>>> clearly changes for PSCI_1_0_FN64_SYSTEM_SUSPEND. That may be intended
>>>>>> and for the better, but the change clearly wasn't reviewed by Bertrand,
>>>>>> nor - when offering the R-b - did he ask for this extra change.
>>>>>
>>>>> ... and this is also how I understood the Xen patch submission
>>>>> guidelines [1], which say:
>>>>>
>>>>> "Note that if there are several revisions of a patch, you ought to
>>>>> copy tags that have accumulated during the review. For example, if
>>>>> person A and person B added a Reviewed-by: tag to v1 of your patch,
>>>>> include it into v2 of your patch. If you make substantial changes
>>>>> after certain tags were already applied, you will want to consider
>>>>> which ones are no longer applicable (and may require re-providing)."
>>>>>
>>>>> So my understanding was that tags should normally be kept across
>>>>> revisions, unless the changes are substantial enough to make them no
>>>>> longer applicable.
>>>>
>>>> Maybe our understanding of "substantial" differs. To me that's anything
>>>> changing functionality. Style adjustments, typo corrections, and alike
>>>> generally aren't substantial (albeit even then there may be exceptions).
>>>
>>> Thanks for clarifying what you consider substantial.
>>>
>>> Even under that interpretation, I do not see a functionality change
>>> here. "Refactoring" seems like the more accurate term in this case:
>>> the internal form changes, but the intended external behavior does
>>> not.
>>>
>>> It may be that we are using "functional change" in slightly different
>>> senses here.
>>>
>>> For v3, the switch to PSCI_ARG_CONV() in SYSTEM_SUSPEND was meant to
>>> make this case consistent with the helper-based argument decoding used
>>> elsewhere, not to change behavior.
>>>
>>> In particular, I do not see a functional change for
>>> PSCI_1_0_FN64_SYSTEM_SUSPEND: v2 used PSCI_ARG(regs, 1/2), and in v3
>>> PSCI_ARG_CONV(regs, 1/2, is_conv_64) should resolve to the same thing
>>> when is_conv_64 is true.
>>
>> Isn't the whole point of the patch to alter behavior when is_conv_64 is
>> false? For that case PSCI_1_0_FN64_SYSTEM_SUSPEND behavior looks to
>> change in v3, when it didn't in v2. Whereas for
>> PSCI_1_0_FN32_SYSTEM_SUSPEND the v3 change indeed only eliminates open-
>> coding, which one may or may not regard as "substantial".
> 
> I think the point I was trying to make is slightly narrower: in this
> code path, is_conv_64 is derived directly from fid via
> smccc_is_conv_64(fid) before the switch (fid).
> 
> So for PSCI_1_0_FN64_SYSTEM_SUSPEND, I do not see how
> is_conv_64 == false could arise here: if we are in the FN64 case,
> the function ID already encodes the 64-bit convention.
> 
> Conversely, if is_conv_64 is false here, then this cannot be the
> FN64 case.

Ah, I see. To figure that out, I would have had to do a proper review. I
was after committing only, which ought to be an entirely mechanical step.

> On that basis, I do not see a behavioral change for the FN64
> SYSTEM_SUSPEND case in v3.

I agree (now). I'm still not going to pick up that patch, but rather
leave it to the Arm maintainers. While not as clear cut as it first
seemed to me, I still consider it within the grey area.

Jan


From xen-devel-bounces@lists.xenproject.org Wed Apr 01 12:29:10 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 01 Apr 2026 12:29:10 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1270187.1558921 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1w7uh3-0000an-0Q; Wed, 01 Apr 2026 12:29:09 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1270187.1558921; Wed, 01 Apr 2026 12: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 1w7uh2-0000ae-U5; Wed, 01 Apr 2026 12:29:08 +0000
Received: by outflank-mailman (input) for mailman id 1270187;
 Wed, 01 Apr 2026 12:29:08 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <jbeulich@suse.com>) id 1w7uh2-0000aY-AA
 for xen-devel@lists.xenproject.org; Wed, 01 Apr 2026 12:29:08 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1w7uh1-005NjJ-MP
 for xen-devel@lists.xenproject.org; Wed, 01 Apr 2026 14:29:07 +0200
Received: from [10.42.69.10] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <jbeulich@suse.com>)
 id 69cd0f8b-5cb7-0a2a0a5109dd-0a2a450a9b3a-24
 for <xen-devel@lists.xenproject.org>; Wed, 01 Apr 2026 14:29:07 +0200
Received: from [209.85.128.54] (helo=mail-wm1-f54.google.com)
 by tlsNG-4011c0.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.0)
 (envelope-from <jbeulich@suse.com>)
 id 69cd0f93-ee98-0a2a450a0019-d1558036ed79-3
 for <xen-devel@lists.xenproject.org>; Wed, 01 Apr 2026 14:29:07 +0200
Received: by mail-wm1-f54.google.com with SMTP id
 5b1f17b1804b1-48541edecf9so81879485e9.1
 for <xen-devel@lists.xenproject.org>; Wed, 01 Apr 2026 05:29:07 -0700 (PDT)
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-4888955d711sm10356895e9.9.2026.04.01.05.29.06
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Wed, 01 Apr 2026 05:29: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=google header.d=suse.com header.i="@suse.com" header.h="Content-Transfer-Encoding:In-Reply-To:Autocrypt:Content-Language:References: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=1775046547; x=1775651347; darn=lists.xenproject.org;
        h=content-transfer-encoding:in-reply-to:autocrypt:content-language
         :references:cc:to:subject:from:user-agent:mime-version:date
         :message-id:from:to:cc:subject:date:message-id:reply-to;
        bh=qwg/dNojIcS8dKm6nwTGbFnT48bXea1jlZe4yMFVPgg=;
        b=NfinOVLOjyt5GPPRzi6RqVHCZSHwuomHhD4qARIC4dSNppTEQ2oMKu2FZbLoqMrqFo
         00758wRpVRqwfKXJP62srsHPROqT9KcBv8AGtuq1kDEit8dkhcwuCGSHpTXmDvbmVN0U
         ejocRv2/gJDZI4iP0LEFrpb8AKegGKFdE4B2h7NWd0CQ9seqQOUqgabCSBNQ9h3rZFuG
         GydCwv198aDhsZf8xCKF+Ki7U0cYQXd7FSw9/UVrr0vZoCLV9RLL6IRKEKAGj0Ma7BbC
         f+biCfsSPdwWNvMuAtewfuHaO3Yw/jR1Agm4kLEGS/4OXYm52XSERuaG+8vrL2270rhy
         aJHQ==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20251104; t=1775046547; x=1775651347;
        h=content-transfer-encoding:in-reply-to:autocrypt:content-language
         :references: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;
        bh=qwg/dNojIcS8dKm6nwTGbFnT48bXea1jlZe4yMFVPgg=;
        b=f3GOsmxp32YEyYYSF8Cdd6BFzrUGTBcyXiBhl478J/VW4ZHBIOmPUhareqsIQQWyZJ
         bO4kMgF3vfCiXqoz9bbpP8IVxgk8zkMr6C8eFGP9AIOvsQ29uRwifm+BjYlF4ejdoaZo
         JivQBsPt4XLlG1xSBJ148jetObS8PECPAS6WLNUjFHzY3xezyx/2e72MAA0u8W/uta/X
         VMBm6DGE+bw/gnqDD2y935YAxE7ZOR4rrcvXhxOMciqRnmMMAtFbEmpe9c1ZOQdTGAXb
         ywlRvUcqDc2XO7AJg9BD35TCFjC3hq/gQM/GtrtZOQTt6bFSvNO1OPu5y5Wlu0+AFGvr
         NgmA==
X-Gm-Message-State: AOJu0Yws7hIAYmdevnzfC8XDCeCqCQTcA8ZdWMVt57dDBz6XakwP0X+1
	iobPUZ/R4SfhLWogysV+fVbFgD4/jlB261aIfEa99a16e7DMWP6UXA28M12ZVsCoE8lNPQ7uKb5
	ub3LSZw==
X-Gm-Gg: ATEYQzxb9zCrAc9GIttpnw5hQpSaW+USnSwsiyGushwlrIL+dXmEj8WfTJJII9CqFPV
	3e0MrWks9SoDP48Gu7dm6viac1v7WraIxECbmqZlajA8MAQ3EpMX6nL27GmCicVcDUtan/0LSWM
	b5x3ej2EhoNcWkA/Ympfuidn5Qt7Vm1y6yy9GAgQWI2jo7ZZfINazQhGwWhVXqnJIZfjmNmi9lt
	+IGlkK0VhdoOPNapInpDuVcV5Qz+IWW3t9aECCzu+bTlMSayOuQVYQSJKwTF4+JZXx0O67WCZg7
	qvRqqfA7x78SzRFxzCl7dUU2CVg/2GnwVUWDcBY7YnjemSeIgAU4oA7TExfKn4ZUZzcFq+NAliw
	cE1VvLEXHzmyc1ynp5esRIAjOCUNkmS5+qr8Gf9lH7XfBWl+jhFqO96kl4FXW+4WCdW1aGZWq6g
	EFsKGaZoWwjxh75R7OtwUd9K5KkhTXQKTZ3lKH8w0sXtxAPjLCrl5MC/70Ac0ZSUfDSFwWr4SVd
	5hFl9c67I2ckhg=
X-Received: by 2002:a05:600c:1f11:b0:485:4278:2558 with SMTP id 5b1f17b1804b1-48883569dcamr55333905e9.6.1775046546922;
        Wed, 01 Apr 2026 05:29:06 -0700 (PDT)
Message-ID: <4a4c011e-9666-4416-be1b-33d1dcad5afe@suse.com>
Date: Wed, 1 Apr 2026 14:29:05 +0200
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
From: Jan Beulich <jbeulich@suse.com>
Subject: [PATCH v3] arinc653: don't assume Dom0 is the control domain
To: "xen-devel@lists.xenproject.org" <xen-devel@lists.xenproject.org>
Cc: Nathan Studer <nathan.studer@dornerworks.com>,
 Stewart Hildebrand <stewart@stew.dk>, Juergen Gross <jgross@suse.com>
References: <89d17a24-0a1f-4f3f-ac2f-f3701a8d78dd@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: <89d17a24-0a1f-4f3f-ac2f-f3701a8d78dd@suse.com>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 7bit
X-purgate-ID: tlsNG-4011c0/1775046547-0FB450B1-69CB6168/0/0
X-purgate-type: clean
X-purgate-size: 1116

Leaving aside highly disaggregated environments, the control domain is
what will invoke XEN_SYSCTL_SCHEDOP_putinfo. Its vCPU-s therefore need to
be able to run unconditionally, not those of the domain with ID 0 (which
may not exist at all).

Fixes: 9f0c658baedc ("arinc: add cpu-pool support to scheduler")
Signed-off-by: Jan Beulich <jbeulich@suse.com>
---
There being no "else" to the if(), what about other control domain vCPU-s?
---
v3: Don't mistakenly include the idle domain.
v2: New.

--- a/xen/common/sched/arinc653.c
+++ b/xen/common/sched/arinc653.c
@@ -411,10 +411,10 @@ a653sched_alloc_udata(const struct sched
     spin_lock_irqsave(&sched_priv->lock, flags);
 
     /*
-     * Add every one of dom0's units to the schedule, as long as there are
-     * slots available.
+     * Add every one of the control domain's units to the schedule, as long as
+     * there are slots available.
      */
-    if ( unit->domain->domain_id == 0 )
+    if ( is_control_domain(unit->domain) && !is_idle_domain(unit->domain) )
     {
         entry = sched_priv->num_schedule_entries;
 


From xen-devel-bounces@lists.xenproject.org Wed Apr 01 12:33:40 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 01 Apr 2026 12:33:40 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1270198.1558931 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1w7ulM-00027b-HS; Wed, 01 Apr 2026 12:33:36 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1270198.1558931; Wed, 01 Apr 2026 12:33: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 1w7ulM-00027U-Em; Wed, 01 Apr 2026 12:33:36 +0000
Received: by outflank-mailman (input) for mailman id 1270198;
 Wed, 01 Apr 2026 12:33:35 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <jbeulich@suse.com>) id 1w7ulL-00027O-1l
 for xen-devel@lists.xenproject.org; Wed, 01 Apr 2026 12:33:35 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1w7ulK-00C2Tg-Du
 for xen-devel@lists.xenproject.org; Wed, 01 Apr 2026 14:33:34 +0200
Received: from [10.42.69.8] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <jbeulich@suse.com>)
 id 69cd108d-5cb7-0a2a0a5109dd-0a2a4508dec8-40
 for <xen-devel@lists.xenproject.org>; Wed, 01 Apr 2026 14:33:34 +0200
Received: from [209.85.128.47] (helo=mail-wm1-f47.google.com)
 by tlsNG-c1860d.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.0)
 (envelope-from <jbeulich@suse.com>)
 id 69cd109e-fab6-0a2a45080019-d155802fbdec-3
 for <xen-devel@lists.xenproject.org>; Wed, 01 Apr 2026 14:33:34 +0200
Received: by mail-wm1-f47.google.com with SMTP id
 5b1f17b1804b1-486ff201041so67496455e9.1
 for <xen-devel@lists.xenproject.org>; Wed, 01 Apr 2026 05:33:34 -0700 (PDT)
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-43cf21e3602sm36541686f8f.4.2026.04.01.05.33.33
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Wed, 01 Apr 2026 05:33:33 -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=google header.d=suse.com header.i="@suse.com" header.h="Content-Transfer-Encoding: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=1775046814; x=1775651614; darn=lists.xenproject.org;
        h=content-transfer-encoding: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;
        bh=A4jre5ZL0ZR14ylZjsrp9i7n8+7Of9Lvm5Ieg71s3uY=;
        b=dcPK08B6/OsASpwTu/E6CZCxhC+XQLG11lkIhGVguR/5Af1vyJASJo6ftueFy57uks
         n03hLIdS0ZZ6cPaL9dlRNcdZdyOaGGANawKxwDBA6lHV+TRrMgsVSXzGm2z4xUh8O9sC
         Fg8dp5M+zjBSbvAuErfDjIoMDw2hmJG9D6J1FsZSvfqdbkQ7w/9vhT0k+37HOn9tavEX
         IDzGrf4c4ZBrIkgyqQFDauUBV5pT4sMh3BVrdUfU4NoHfiQ20lrlzOWDQo/IrwA6+rIO
         YZGTAeVwc108fe8DKgG6HA5jTPzWIpJASfPAuLVw1uNE8gEUy22+ZIqkUpNa3M3QHEH6
         lX/Q==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20251104; t=1775046814; x=1775651614;
        h=content-transfer-encoding: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;
        bh=A4jre5ZL0ZR14ylZjsrp9i7n8+7Of9Lvm5Ieg71s3uY=;
        b=PEc8vcppYuBfUyKCOB84gohpRxLIX8wxp2C7cCOe2GI5H44QfdYsI+UuRnrNNtTGR6
         RydTcIDUnS8geAKkoAOhoBDFG4J5uameaJ5/88hR8LHkt0eCkmBE12U47MbobbOVU0LK
         h8YozmRd2HMyToTeO2sTGICW4FTQ5Xkm/WcvyKns/p4bok+JHoI61bjrr6d/kJHOPTx/
         1IFU7t+WVIlY99d47hjGfdHjdokADBkIKklXg9ONu9BL205JxVYIR/GJBQDlpf94uvuJ
         wE1c6IMfdRpfNTiWvANIJc5ik4EPt3w41ANCFoDe8vu94OGyJPyq+JnWTbdbJPDh7mRP
         pxDw==
X-Gm-Message-State: AOJu0Yze6wO+LWhWHlUW6j7uHaC8AGrXkfAVMNk+dQiHarkDb3wyn3gx
	f00Qaba/ZYnvjfJuMFqoglA4m/IhoGJ6IfYw1HoK9LX+QY3WjiY80ryi4aqDcKaDbW1VKaTC26n
	fKJQ32w==
X-Gm-Gg: ATEYQzzMfXvh3rIzH9M9kNtUbZdpK7Be9gOwbawLlBr8YVKv7yBe2g1olpRIsd3z/Kz
	uxl5O6ZpImxmQmol7W/HKfdNP7aV+pCnz6gvUdl1/i8rI3kOVwf6QfT+uHX73C1GqZXlBxOsUvd
	VAVyuhUJ4WSKTsGn+SQrWkry7SPHvczoG9xplC7/7uZQF4rdVWVs33MntsW8Yu81QMnqS6YlOgi
	QlRbw/W19Tkb8A9EbnPjfnr3wVdOSyQneiTYDWlGtKy/161UM5isO3ADquuKHtBSuJw7IogwoXi
	kkh9BJizaCgTsfzDkBQ1jhRfGSKAm+/QDXfhj1JH1ZWKvD3/JziAwjXZGO8DmV36+YT79/CkJTN
	fBoHRRDHeBDyrx7UVWpjscANIIgRXgD0jI5EYEn4r8P+tlxkfabkmem/81h7mthAkJdkVcVLqzJ
	AMGMdkXw1yl0YgeUjO+p0cSbQ0nzl0q0H4S5q0eT8ebk4NQwro/4sEzM2ImHx8mdXgihDzTUSyW
	nqogDIHgc76obw=
X-Received: by 2002:a05:600c:4744:b0:487:716:2fa2 with SMTP id 5b1f17b1804b1-4888358ccf6mr55191775e9.16.1775046813525;
        Wed, 01 Apr 2026 05:33:33 -0700 (PDT)
Message-ID: <6d7b4344-8755-4dcd-a5bd-e7e5f982c11f@suse.com>
Date: Wed, 1 Apr 2026 14:33:32 +0200
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Ping: [PATCH v2 0/2] EFI: cfg file parsing adjustments
From: Jan Beulich <jbeulich@suse.com>
To: Marek Marczykowski <marmarek@invisiblethingslab.com>,
 Daniel Smith <dpsmith@apertussolutions.com>
Cc: "xen-devel@lists.xenproject.org" <xen-devel@lists.xenproject.org>
References: <aa19318c-c91a-4cda-b36f-d2049914c42c@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: <aa19318c-c91a-4cda-b36f-d2049914c42c@suse.com>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 7bit
X-purgate-ID: tlsNG-c1860d/1775046814-7455F497-28268A60/0/0
X-purgate-type: clean
X-purgate-size: 195

On 25.03.2026 14:22, Jan Beulich wrote:
> 1: avoid OOB config file reads
> 2: move pre_parse() back next to get_value()

May I ask for feedback (preferably an ack, as you may guess)?

Jan


From xen-devel-bounces@lists.xenproject.org Wed Apr 01 12:35:11 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 01 Apr 2026 12:35:11 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1270211.1558940 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1w7umq-0002hi-VM; Wed, 01 Apr 2026 12:35:08 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1270211.1558940; Wed, 01 Apr 2026 12:35: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 1w7umq-0002hb-S2; Wed, 01 Apr 2026 12:35:08 +0000
Received: by outflank-mailman (input) for mailman id 1270211;
 Wed, 01 Apr 2026 12:35:07 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <jbeulich@suse.com>) id 1w7ump-0002hV-Px
 for xen-devel@lists.xenproject.org; Wed, 01 Apr 2026 12:35:07 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1w7ump-002sCg-5k
 for xen-devel@lists.xenproject.org; Wed, 01 Apr 2026 14:35:07 +0200
Received: from [10.42.69.10] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <jbeulich@suse.com>)
 id 69cd10f9-e002-0a2a0a5209dd-0a2a450a8aa4-6
 for <xen-devel@lists.xenproject.org>; Wed, 01 Apr 2026 14:35:07 +0200
Received: from [209.85.128.42] (helo=mail-wm1-f42.google.com)
 by tlsNG-4011c0.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.0)
 (envelope-from <jbeulich@suse.com>)
 id 69cd10fa-ee98-0a2a450a0019-d155802ae90b-3
 for <xen-devel@lists.xenproject.org>; Wed, 01 Apr 2026 14:35:07 +0200
Received: by mail-wm1-f42.google.com with SMTP id
 5b1f17b1804b1-486fba7ce4cso69026615e9.3
 for <xen-devel@lists.xenproject.org>; Wed, 01 Apr 2026 05:35:06 -0700 (PDT)
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-4887e93c014sm132146815e9.10.2026.04.01.05.35.05
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Wed, 01 Apr 2026 05:35: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=google header.d=suse.com header.i="@suse.com" header.h="Content-Transfer-Encoding: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=1775046906; x=1775651706; darn=lists.xenproject.org;
        h=content-transfer-encoding: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;
        bh=4NvExuADLXgRx3FYtwj2Q29e0ezRqq7EWmr7qMj9xUI=;
        b=BFDb98GmIBEkn62Bf1G1uBj2LzLXlRbWsUiI9VM3mGG8Stx7mMzE0LcGv2nhiCKTd+
         HircMga866EJG4SGJtEKjKoXPcdzmnmdtsG1JmMYWnnRlLxp+p5r8GNdp4R+hdlPmXX7
         TMcMH8HRmzRcjVyKlZRUmST4rPd44AQsT/WgNIpYe8IRyjidHlG3Q89XCijtG8mXBqwJ
         IhRqxiOWKG8BT1ogLw+WJBdshOCrSc467CeKjjv/Ce/8iLdaRDUpnm/Tih3HpXKc/6wH
         QWheccRj9gO2U6ZAnlZut1gBZeEvTYiuxBSNKK+BgesSwwMgHeezDziaZZlpoBkcQSW6
         59wg==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20251104; t=1775046906; x=1775651706;
        h=content-transfer-encoding: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;
        bh=4NvExuADLXgRx3FYtwj2Q29e0ezRqq7EWmr7qMj9xUI=;
        b=Gcz7WGPP98f4C662FgqFzrMahxG0IZceSdmmKh9mBRBMMgQqqqxurwfbYKOYpi+ccC
         p2v8RP5B46EQ7ErpYzMbCjRKxLt1pdzx9n4YHoxd2F4ErGpn1AoU0+kMynL45/Z5dgsa
         WOWLY1butEChEnHv2V89bpZWB1thZEtxtZ/uvcyH1oBk2kz2RGsTZjFduCN7x0ux/V5X
         kzEcs8kcPzQnzNOGq+PjOh5ICXkQ+AUQe8KzzOD6Lw4cbZYSlACUQAbouhPaaeNP3ueT
         HBqGX6WfJHrftJxzR7xVQ+RgXNaKptkYu92sDHheVt9uh5y65+G53Rq3co70WjHI11DI
         Cmpg==
X-Forwarded-Encrypted: i=1; AJvYcCWk7Cglr2g/Q6ZmsuX/IL6rmk8KxBg1o55fVws4OJFfhloEfnrYArniwj8ybonm6hm2rcMRdznpA9k=@lists.xenproject.org
X-Gm-Message-State: AOJu0YxEOCvCXqQY2qQT29326hG9VO9AUwIf/W2MkEpmZjSPfpfAF2s4
	Td8SbEjsd1EXO8Vxgslm7Mi5uo7J0o81Vr9K7SLdmDSDf+Me7D6RTCcE/h4FinS6Hg==
X-Gm-Gg: ATEYQzy+yKaIe10IkU/7Us9fvG9VK5yUt5vu+EWmCf53n4japXwEuG5YopuaFi2F0xy
	htgrjXtKoOuLVwqf7ErDBJVXdVZg7odOSpxV65bieaPy+asvvyi8CvFGvOaTnuFCGuLcmEgbdNQ
	O8uX8UiNOztqnSeTZH8LIWv7SRAsKh9OzecbZCd1yLTpIcWL1rhkASXmicWZ/YwGthvsYiyRt1R
	QUA2xCpY4cL6jtcF81bSc9fqY41WBLzItYEuND0M0yn/VtP8KbWZ5xyFoh3Hyc/rdKmrfXbIM38
	jFd+1AbyaRMSglyPa5lg7Hl2TzTh0HFgYm4P17z99Il0nF6XisgcjJF2lwwQSbWvl6GuNE37qFM
	aLaqyhsOiO9qHhvoB/ClsbmpBbyM47neoovITvD/S9eBc1IJ3jCb7vM95VvCNQA+N6FQ4OZiTyq
	Wbw6SARukvkmwKHto1DG4RsbSqbh4lmwOi04r5kWaQ+dMEQXHp/hfBDsnDuN29qZwjP8h96YMRk
	NJ+fGhys7Qtudc=
X-Received: by 2002:a05:600c:a016:b0:485:3f30:6250 with SMTP id 5b1f17b1804b1-4888359d87amr57279975e9.20.1775046906452;
        Wed, 01 Apr 2026 05:35:06 -0700 (PDT)
Message-ID: <52f3cc91-5b5f-4cc7-b445-313704ed8563@suse.com>
Date: Wed, 1 Apr 2026 14:35:04 +0200
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Ping: [PATCH 0/5] input (mainly cmdline) parsing corrections
From: Jan Beulich <jbeulich@suse.com>
To: 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.pau@citrix.com>
Cc: Kamil Frankowicz <kamil.frankowicz@cert.pl>,
 "xen-devel@lists.xenproject.org" <xen-devel@lists.xenproject.org>
References: <63284ab7-8e38-4448-a789-1b9c23c4d95c@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: <63284ab7-8e38-4448-a789-1b9c23c4d95c@suse.com>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 7bit
X-purgate-ID: tlsNG-4011c0/1775046907-0FB450B1-86594997/0/0
X-purgate-type: clean
X-purgate-size: 508

On 24.03.2026 17:34, Jan Beulich wrote:
> A number of issues were identified by Kamil, by way of fuzzing.
> 
> 1: EFI: avoid OOB config file reads

Leaving aside this one, which was redone quite differently (and re-submitted
independently), ...

> 2: llc-coloring: improve checking while parsing
> 3: ns16550: harden name/value pair parsing
> 4: ns16550: harden positional parsing
> 5: video/vesa: harden font height parsing

... may I ask for acks (or otherwise) on these ones?

Thanks, Jan


From xen-devel-bounces@lists.xenproject.org Wed Apr 01 12:47:58 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 01 Apr 2026 12:47:58 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1270226.1558949 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1w7uzB-0004vY-2d; Wed, 01 Apr 2026 12:47:53 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1270226.1558949; Wed, 01 Apr 2026 12:47: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 1w7uzA-0004vR-VX; Wed, 01 Apr 2026 12:47:52 +0000
Received: by outflank-mailman (input) for mailman id 1270226;
 Wed, 01 Apr 2026 12:47:51 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <jbeulich@suse.com>) id 1w7uz9-0004vL-TC
 for xen-devel@lists.xenproject.org; Wed, 01 Apr 2026 12:47:51 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1w7uz9-005Rwc-8x
 for xen-devel@lists.xenproject.org; Wed, 01 Apr 2026 14:47:51 +0200
Received: from [10.42.69.2] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <jbeulich@suse.com>)
 id 69cd13ea-2eae-0a2a0a5409dd-0a2a4502c192-38
 for <xen-devel@lists.xenproject.org>; Wed, 01 Apr 2026 14:47:51 +0200
Received: from [209.85.221.49] (helo=mail-wr1-f49.google.com)
 by tlsNG-720697.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.0)
 (envelope-from <jbeulich@suse.com>)
 id 69cd13f6-42fa-0a2a45020019-d155dd31dc64-3
 for <xen-devel@lists.xenproject.org>; Wed, 01 Apr 2026 14:47:51 +0200
Received: by mail-wr1-f49.google.com with SMTP id
 ffacd0b85a97d-43cfe71e5d3so2985690f8f.0
 for <xen-devel@lists.xenproject.org>; Wed, 01 Apr 2026 05:47:51 -0700 (PDT)
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-43cf24739easm36511173f8f.30.2026.04.01.05.47.50
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Wed, 01 Apr 2026 05:47:50 -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=google header.d=suse.com header.i="@suse.com" header.h="Content-Transfer-Encoding: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=1775047670; x=1775652470; darn=lists.xenproject.org;
        h=content-transfer-encoding:autocrypt:subject:from:cc:to
         :content-language:user-agent:mime-version:date:message-id:from:to:cc
         :subject:date:message-id:reply-to;
        bh=hnoWLYxJhaCj3Jj7awngaMiBmtIWL7JmQB/asOb6f0A=;
        b=F9KUgpJRpWi5rkK/wim6LRLOfee8v85ZcohPAKDH5U1MbvVBUvKdSy8r7FQUvHD/dh
         oL2d6Q+q/xKX5atvPNuYUr9yOEOupr/8Pd3PbP5VGQsiweSacG/r2nyvKU1eA23Eo5et
         93qYIwwhsCFgoaZcCw63jRgGSsKg6aiu6P0xqhC0AzYeU22rP8Re7x7TrD5QHlAwxbg2
         YtSsUmU7GbRTWq+dtCLXmwcN1m6JfJMUjUjBXq/9sMjMQNLdikxExb4ZDGBMHlpn3WZ3
         Xoacws7frkRr8Ilnosi7PIGlNiLUQcm3kWjxtmFX8+tGYT17n0xQtXhCTDqkimZ37pAq
         eLaw==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20251104; t=1775047670; x=1775652470;
        h=content-transfer-encoding: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;
        bh=hnoWLYxJhaCj3Jj7awngaMiBmtIWL7JmQB/asOb6f0A=;
        b=hWSuOdSzfrzFE0EZCidpldjDFmACPM13Td9U/2v8HqINbAWHATFICPAP13BmLCFDzQ
         eRZ1UHHzKzvPesTHR2fiag7hBaY/ehJlxU0OnzogkUli+b7QYwBDfeuFmecP4dDXqIxC
         B8p0FcLS6d+CvIgJOhx8uU9mfoo87F4OsY6FsR3zaNW2+DfxH6yQx9oe/JdtaX5IUrDX
         ex1VQm/xSmOd12E17lEal112BrS2jJ60JxLDfIV5F6hJtoT6tpzWYKITKtWOKC3MJg5X
         muHGlCVb7nBYydk0VI5g630auH+rhLFXmrSyM+UTvjPpGXmwmPTwvpf2bjqt9rjdVo0o
         1ehg==
X-Gm-Message-State: AOJu0YzwMuTs62we7/BpZHkzRNuX7v1n0jtTTQSYwwhzbm07Qv77QRGo
	oSFzfjqTgFJm/N8mXAyVhOHEnXBEsQvvoNgmazMg+eoPujVzIlsQTrlfqTPANG+L8Leb4GE2ttp
	hI0bckQ==
X-Gm-Gg: ATEYQzzU3euN+t/hRyrnzyZW4ZVu3pwm1QMMyIzekq2mgMXWEkhOeldt0GRsaIJZlMt
	E1kA55pSgWHTKtK8Shl1ubCg+qTzcWOxE+kU7suLFVQdyS3yK8g8xvh/G/TV2E9Mo9c6w6jmU26
	72CTlcK7+J3GgjN+rdLLs3MqlykcFaGNwUhxdP7GxfHdFEHS6GmdMYm1MVsOWne93rhUre1mnlD
	KYjhPlcms0CJxBp79O1y59cdh4w9G0MfehG/rQgCJqDeL0Crfg25XUZGKIsCyURhG24510KDefY
	swsbMT3w3v+vz/wf0u4GqI0FHvJr+uEe9Cn4LxWWwQCGXGGXYRqjk7b7NmnFNsv8+vEpSEUT520
	pWJSi9h0Jeo7Dv+KL81rQ02e7MuL9msuOYfEuejU0BxnnpQyDdA1d0XKs7nt6SeDLjqwCjHAwnK
	Tv7vgn34D5C8jRCO07ygEGWrZYx607w9NwaDPU8v5+Sr7MqD6OkUyUrv0JosdwK7e0v2g9EJFeA
	4QB450NyzodvMs=
X-Received: by 2002:a05:6000:2c06:b0:43b:8f4e:27f8 with SMTP id ffacd0b85a97d-43d1505e841mr6508406f8f.12.1775047670527;
        Wed, 01 Apr 2026 05:47:50 -0700 (PDT)
Message-ID: <1903a57a-524e-4e6d-bd47-a87fadda4aa0@suse.com>
Date: Wed, 1 Apr 2026 14:47:48 +0200
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>,
 =?UTF-8?Q?Roger_Pau_Monn=C3=A9?= <roger.pau@citrix.com>
From: Jan Beulich <jbeulich@suse.com>
Subject: [PATCH] VT-d: avoid multi-message-MSI check for HPET
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/1775047671-AF323CD1-9399B89B/0/0
X-purgate-type: clean
X-purgate-size: 746

Having this immediately below a PCI-dev vs HPET conditional is (mildly)
confusing. Move that if() into the body of the earlier one.

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

--- a/xen/drivers/passthrough/vtd/intremap.c
+++ b/xen/drivers/passthrough/vtd/intremap.c
@@ -513,13 +513,13 @@ static int msi_msg_to_remap_entry(
 
         if ( rc )
             return rc;
+
+        if ( msi_desc->msi_attrib.type == PCI_CAP_ID_MSI )
+            nr = msi_desc->msi.nvec;
     }
     else
         set_hpet_source_id(msi_desc->hpet_id, &new_ire);
 
-    if ( msi_desc->msi_attrib.type == PCI_CAP_ID_MSI )
-        nr = msi_desc->msi.nvec;
-
     spin_lock_irqsave(&iommu->intremap.lock, flags);
 
     if ( msg == NULL )


From xen-devel-bounces@lists.xenproject.org Wed Apr 01 12:57:14 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 01 Apr 2026 12:57:14 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1270237.1558958 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1w7v88-0006Wp-Rz; Wed, 01 Apr 2026 12:57:08 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1270237.1558958; Wed, 01 Apr 2026 12:57: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 1w7v88-0006Wi-PI; Wed, 01 Apr 2026 12:57:08 +0000
Received: by outflank-mailman (input) for mailman id 1270237;
 Wed, 01 Apr 2026 12:57:07 +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 1w7v87-0006Wc-3V
 for xen-devel@lists.xenproject.org; Wed, 01 Apr 2026 12:57:07 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1w7v86-004Xoh-4t
 for xen-devel@lists.xenproject.org; Wed, 01 Apr 2026 14:57:06 +0200
Received: from [10.42.69.7] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <jgross@suse.com>)
 id 69cd1607-e002-0a2a0a5209dd-0a2a4507aef2-44
 for <xen-devel@lists.xenproject.org>; Wed, 01 Apr 2026 14:57:06 +0200
Received: from [209.85.208.41] (helo=mail-ed1-f41.google.com)
 by tlsNG-ef75cf.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.0)
 (envelope-from <jgross@suse.com>)
 id 69cd1621-ba2d-0a2a45070019-d155d029e406-3
 for <xen-devel@lists.xenproject.org>; Wed, 01 Apr 2026 14:57:05 +0200
Received: by mail-ed1-f41.google.com with SMTP id
 4fb4d7f45d1cf-66c4c7e2bb7so2508051a12.0
 for <xen-devel@lists.xenproject.org>; Wed, 01 Apr 2026 05:57:05 -0700 (PDT)
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
 a640c23a62f3a-b9b7b1df761sm520131066b.42.2026.04.01.05.57.04
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Wed, 01 Apr 2026 05:57:05 -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=google header.d=suse.com header.i="@suse.com" header.h="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=1775048225; x=1775653025; darn=lists.xenproject.org;
        h=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;
        bh=e8jbriwqhYKh55tSUwSjeU1qcLXSE6SKmM4As6KTyU4=;
        b=XtvIFHeOSjDfKGE9B82xD4fHcBNIVz/bLQuOV+O/J0PW0T6Ou17a91QJlqXmiM7TYC
         2CttNqeqSzl+aGYo03fQZTnL/QDY9QEfnFRZoaG/ACUjuvbsnT6OEZiLA6oMrLZ5A5ug
         bFPKc5yipNxjIjEGCyyKIiDmbY+85pHwZW+LO4cHLTkWi8Uid3+GeZD1Q4ppLK8lZiQU
         CvRmSnF9W6RURbUbKC10nbeRB2lXcafhU0lPbg32UpRYLNY83MbbcoHpab5+VfkIud26
         3nY4UdTSsIo4HvWaRnJHD0hwDaV9W7j3pViHypeJGBNqLK3asvD2Mas4xvjwqJ107nBM
         602Q==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20251104; t=1775048225; x=1775653025;
        h=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;
        bh=e8jbriwqhYKh55tSUwSjeU1qcLXSE6SKmM4As6KTyU4=;
        b=slr+czWYSNuyeNTpT4jgB2olagWXpNb+iWjO3RA2q8X0YQxTdRFtyprCC7zbeh7t+n
         OuGPJZFvDdDV/bwhxeq9IsnkjYb8RJ7m6wfHQMlJRGdrXhVIDyUgOixDUZ0FggUTLW/d
         AjHqBkk2wrnxZByYVF8CNgsU9EyeGB3AcWdPBnWGgHd0iR1uba1SeVLvH4hplZUtErgn
         m36jxkQo1zzba9NDfWAi5dGmioo5VTrkSSCtftl1N021wS+Y2UMebXeGLLrsFW0+RL2O
         KTKvVx+9ge3J0RWThAAm00ocjNFMWKqvNnTT0Ihq+yvrEtYtO636pmZzNxzl4mwaMBOa
         lzjQ==
X-Forwarded-Encrypted: i=1; AJvYcCW3D+g+CQINDd91NgErQOhr+TfpBHMCOJp+Xh1MGjhaLjO+rJdeW5WN+KtLaQUvRW3NWP//f9Vz76U=@lists.xenproject.org
X-Gm-Message-State: AOJu0YyTcsiT/m/046RYrzxCGjobijs8UOzNlzY0RmNGqkMxvL6BeahG
	GRKhCmkgWj7C+02Z/uW34x+ZvsOuxeSR/G77COkv/sLRKkvX/G9jPkgJllF9ENBZkfE=
X-Gm-Gg: ATEYQzz+jNm0T3YRtFR6gH6szkINtZI5BIBlMzbAD6PbyOHFRemmAhjRJlLROvxC1/m
	WOPVc5HLC9cUmAgaO+VNpLZXessBJTozyFAXra21lpuKf5OJq9ejOX9T56ElDzRoZquLMQSnPiD
	CL9wmEPSS3IvuXaTs6mtJX+ZEj+72FsCKVUq2rdtmwdMA5uoyUZHjO1tEG9jkMiIft4hk0qC+gs
	MnBnQ+rWRBSuoDZNVTdDbrPodRymlGdJitl2dUWlE1ozwA1XlcMK5uxa5nRGXP1xQmLq6q/uRyX
	GA0TGkadjD2a/kKWEFZh3boxfmYGu1RVjTLltAKJ2rjja3EzcqB4yD6Pb3z/jDTzETvhJhLBY8Z
	ShJNkQvQ7RJsze1IUtt4ctxXUAU5/Umh2WG1pBviymgc7P9ISc9hOedVRQUv8FZtqqW/KG8oFLL
	7XOOIJmAXKz9MHRNNPzstx+3FBQRbu69HHUk/AkE5fs8/oZst8fEOIdloWM/p5pMhIVWKT7OWHl
	Mn4Rqbr/cRNC0I+7OnUQjdBeH2wS/WcKDz6djwGWQj4Z4/+lP3e0Q==
X-Received: by 2002:a17:907:c789:b0:b99:1074:74d with SMTP id a640c23a62f3a-b9c13ce565cmr216593666b.49.1775048225345;
        Wed, 01 Apr 2026 05:57:05 -0700 (PDT)
Message-ID: <73e51afc-ae7c-4d08-9054-75dab660bf42@suse.com>
Date: Wed, 1 Apr 2026 14:57:04 +0200
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH v3] arinc653: don't assume Dom0 is the control domain
To: Jan Beulich <jbeulich@suse.com>,
 "xen-devel@lists.xenproject.org" <xen-devel@lists.xenproject.org>
Cc: Nathan Studer <nathan.studer@dornerworks.com>,
 Stewart Hildebrand <stewart@stew.dk>
References: <89d17a24-0a1f-4f3f-ac2f-f3701a8d78dd@suse.com>
 <4a4c011e-9666-4416-be1b-33d1dcad5afe@suse.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: <4a4c011e-9666-4416-be1b-33d1dcad5afe@suse.com>
Content-Type: multipart/signed; micalg=pgp-sha256;
 protocol="application/pgp-signature";
 boundary="------------DQCt9CVS1Vvmkgx7LdJwDmwK"
X-purgate-ID: tlsNG-ef75cf/1775048226-1334C41E-567A9673/0/0
X-purgate-type: clean
X-purgate-size: 10488

This is an OpenPGP/MIME signed message (RFC 4880 and 3156)
--------------DQCt9CVS1Vvmkgx7LdJwDmwK
Content-Type: multipart/mixed; boundary="------------tvq1gyNl077XUXcsIgVdKB77";
 protected-headers="v1"
From: =?UTF-8?B?SsO8cmdlbiBHcm/Dnw==?= <jgross@suse.com>
To: Jan Beulich <jbeulich@suse.com>,
 "xen-devel@lists.xenproject.org" <xen-devel@lists.xenproject.org>
Cc: Nathan Studer <nathan.studer@dornerworks.com>,
 Stewart Hildebrand <stewart@stew.dk>
Message-ID: <73e51afc-ae7c-4d08-9054-75dab660bf42@suse.com>
Subject: Re: [PATCH v3] arinc653: don't assume Dom0 is the control domain
References: <89d17a24-0a1f-4f3f-ac2f-f3701a8d78dd@suse.com>
 <4a4c011e-9666-4416-be1b-33d1dcad5afe@suse.com>
In-Reply-To: <4a4c011e-9666-4416-be1b-33d1dcad5afe@suse.com>
Autocrypt-Gossip: 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
 Y2ggPGpiZXVsaWNoQHN1c2UuY29tPsJ3BBMRAgAgBQJZN5xEAhsDBgsJCAcDAgQVAggDBBYC
 AwECHgECF4AAIQkQoDSui/t3IH4WIQQ+pJkfkcoLMCa4X6CgNK6L+3cgfgn7AJ9DmMd0SMJE
 ePbc7/m22D2v04iu7ACffXTdZQhNl557tJuDXZSBxDmW/tLOwU0EWTecRBAIAIK5OMKMU5R2
 Lk2bbjgX7vyQuCFFyKf9rC/4itNwhYWFSlKzVj3WJBDsoi2KvPm7AI+XB6NIkNAkshL5C0kd
 pcNd5Xo0jRR5/WE/bT7LyrJ0OJWS/qUit5eNNvsO+SxGAk28KRa1ieVLeZi9D03NL0+HIAtZ
 tecfqwgl3Y72UpLUyt+r7LQhcI/XR5IUUaD4C/chB4Vq2QkDKO7Q8+2HJOrFIjiVli4lU+Sf
 OBp64m//Y1xys++Z4ODoKh7tkh5DxiO3QBHG7bHK0CSQsJ6XUvPVYubAuy1XfSDzSeSBl//C
 v78Fclb+gi9GWidSTG/4hsEzd1fY5XwCZG/XJJY9M/sAAwUH/09Ar9W2U1Qm+DwZeP2ii3Ou
 14Z9VlVVPhcEmR/AFykL9dw/OV2O/7cdi52+l00reUu6Nd4Dl8s4f5n8b1YFzmkVVIyhwjvU
 jxtPyUgDOt6DRa+RaDlXZZmxQyWcMv2anAgYWGVszeB8Myzsw8y7xhBEVV1S+1KloCzw4V8Z
 DSJrcsZlyMDoiTb7FyqxwQnM0f6qHxWbmOOnbzJmBqpNpFuDcz/4xNsymJylm6oXiucHQBAP
 Xb/cE1YNHpuaH4SRhIxwQilCYEznWowQphNAbJtEKOmcocY7EbSt8VjXTzmYENkIfkrHRyXQ
 dUm5AoL51XZljkCqNwrADGkTvkwsWSvCSQQYEQIACQUCWTecRAIbDAAKCRCgNK6L+3cgfuef
 AJ9wlZQNQUp0KwEf8Tl37RmcxCL4bQCcC5alCSMzUBJ5DBIcR4BY+CyQFAs=

--------------tvq1gyNl077XUXcsIgVdKB77
Content-Type: multipart/mixed; boundary="------------q9w39TgOQsvHK0ALw5JTyJla"

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

T24gMDEuMDQuMjYgMTQ6MjksIEphbiBCZXVsaWNoIHdyb3RlOg0KPiBMZWF2aW5nIGFzaWRl
IGhpZ2hseSBkaXNhZ2dyZWdhdGVkIGVudmlyb25tZW50cywgdGhlIGNvbnRyb2wgZG9tYWlu
IGlzDQo+IHdoYXQgd2lsbCBpbnZva2UgWEVOX1NZU0NUTF9TQ0hFRE9QX3B1dGluZm8uIEl0
cyB2Q1BVLXMgdGhlcmVmb3JlIG5lZWQgdG8NCj4gYmUgYWJsZSB0byBydW4gdW5jb25kaXRp
b25hbGx5LCBub3QgdGhvc2Ugb2YgdGhlIGRvbWFpbiB3aXRoIElEIDAgKHdoaWNoDQo+IG1h
eSBub3QgZXhpc3QgYXQgYWxsKS4NCj4gDQo+IEZpeGVzOiA5ZjBjNjU4YmFlZGMgKCJhcmlu
YzogYWRkIGNwdS1wb29sIHN1cHBvcnQgdG8gc2NoZWR1bGVyIikNCj4gU2lnbmVkLW9mZi1i
eTogSmFuIEJldWxpY2ggPGpiZXVsaWNoQHN1c2UuY29tPg0KPiAtLS0NCj4gVGhlcmUgYmVp
bmcgbm8gImVsc2UiIHRvIHRoZSBpZigpLCB3aGF0IGFib3V0IG90aGVyIGNvbnRyb2wgZG9t
YWluIHZDUFUtcz8NCg0KSSBndWVzcyB0aGlzIGlzIGEgc3RhbGUgbGVmdG92ZXIuIERvZXNu
J3QgbWF0dGVyIGZvciBjb21taXR0aW5nIGFueXdheS4NCg0KPiAtLS0NCj4gdjM6IERvbid0
IG1pc3Rha2VubHkgaW5jbHVkZSB0aGUgaWRsZSBkb21haW4uDQo+IHYyOiBOZXcuDQo+IA0K
PiAtLS0gYS94ZW4vY29tbW9uL3NjaGVkL2FyaW5jNjUzLmMNCj4gKysrIGIveGVuL2NvbW1v
bi9zY2hlZC9hcmluYzY1My5jDQo+IEBAIC00MTEsMTAgKzQxMSwxMCBAQCBhNjUzc2NoZWRf
YWxsb2NfdWRhdGEoY29uc3Qgc3RydWN0IHNjaGVkDQo+ICAgICAgIHNwaW5fbG9ja19pcnFz
YXZlKCZzY2hlZF9wcml2LT5sb2NrLCBmbGFncyk7DQo+ICAgDQo+ICAgICAgIC8qDQo+IC0g
ICAgICogQWRkIGV2ZXJ5IG9uZSBvZiBkb20wJ3MgdW5pdHMgdG8gdGhlIHNjaGVkdWxlLCBh
cyBsb25nIGFzIHRoZXJlIGFyZQ0KPiAtICAgICAqIHNsb3RzIGF2YWlsYWJsZS4NCj4gKyAg
ICAgKiBBZGQgZXZlcnkgb25lIG9mIHRoZSBjb250cm9sIGRvbWFpbidzIHVuaXRzIHRvIHRo
ZSBzY2hlZHVsZSwgYXMgbG9uZyBhcw0KPiArICAgICAqIHRoZXJlIGFyZSBzbG90cyBhdmFp
bGFibGUuDQo+ICAgICAgICAqLw0KPiAtICAgIGlmICggdW5pdC0+ZG9tYWluLT5kb21haW5f
aWQgPT0gMCApDQo+ICsgICAgaWYgKCBpc19jb250cm9sX2RvbWFpbih1bml0LT5kb21haW4p
ICYmICFpc19pZGxlX2RvbWFpbih1bml0LT5kb21haW4pICkNCj4gICAgICAgew0KPiAgICAg
ICAgICAgZW50cnkgPSBzY2hlZF9wcml2LT5udW1fc2NoZWR1bGVfZW50cmllczsNCj4gICAN
Cg0KSG1tLCBpcyBpdCByZWFsbHkgdGhlIGNvbnRyb2wgZG9tYWluIG9ubHkgd2hpY2ggd2Fu
dHMgdG8gYmUgc2NoZWR1bGVkIGluaXRpYWxseT8NCkkgd291bGQgdGhpbmsgdGhhdCBhdCBs
ZWFzdCB0aGUgaGFyZHdhcmUgZG9tYWluIGFuZCBwcm9iYWJseSBhIFhlbnN0b3JlIGRvbWFp
bg0Kd291bGQgd2FudCB0byBiZSBpbmNsdWRlZCwgdG9vLg0KDQpJbiB0aGUgZW5kIGl0IG1p
Z2h0IGV2ZW4gYmUgdGhhdCBvdGhlciBkb21haW5zIGNyZWF0ZWQgdmlhIGRvbTBsZXNzIHdv
dWxkIHdhbnQNCnRvIGJlIGFibGUgdG8gcnVuIGluaXRpYWxseS4gVGhleSBjb3VsZCBiZSBw
YXJ0IG9mIGEgbWFuZGF0b3J5IGluZnJhc3RydWN0dXJlLg0KV2h5IHdvdWxkIHRoZXkgbmVl
ZCB0byBiZSBjcmVhdGVkIGF0IGJvb3QgaWYgdGhleSBhcmUgTk9UIGltcG9ydGFudD8NCg0K
VGhlIHF1ZXN0aW9uIGlzIHdoZXRoZXIgdGhlIGFyaW5jNjUzIHNjaGVkdWxlciBpcyByZWFs
bHkgbWVhbnQgZm9yIHN1Y2ggc2V0dXBzLg0KT1RPSCBqdXN0IG1vZGlmeWluZyB0aGUgdGVz
dCB0bzoNCg0KICAgICBpZiAoIHN5c3RlbV9zdGF0ZSA8IFNZU19TVEFURV9hY3RpdmUgJiYN
CiAgICAgICAgICB1bml0LT5kb21haW4tPmRvbWFpbl9pZCA8IERPTUlEX0ZJUlNUX1JFU0VS
VkVEICkNCg0Kc2VlbXMgdG8gYmUgZmluZSBmb3IgY2F0Y2hpbmcgYWxsIHRob3NlIGNhc2Vz
Lg0KDQpXaXRoIG9yIHdpdGhvdXQgdGhpcyBtb2RpZmljYXRpb246DQoNClJldmlld2VkLWJ5
OiBKdWVyZ2VuIEdyb3NzIDxqZ3Jvc3NAc3VzZS5jb20+DQoNCg0KSnVlcmdlbg0K
--------------q9w39TgOQsvHK0ALw5JTyJla
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-----

--------------q9w39TgOQsvHK0ALw5JTyJla--

--------------tvq1gyNl077XUXcsIgVdKB77--

--------------DQCt9CVS1Vvmkgx7LdJwDmwK
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/Ey8FAmnNFiAFAwAAAAAACgkQsN6d1ii/Ey+H
wQf/YIekTd0xOwsf2o9bcHYob1t5lnJAnZgZ6eDxRL8UQgK0MZbK9Mj69xGHfiqeL5BXI8xhwHBZ
k7Q7B/LsoqQqaVvlQkmcqOk4KxTE4Z39swakgaO6x3FnkRqVFmhORuUYuoh2atqfMSttDn6ijpVZ
eW/GgmkKdVgs44NNhIiXmDi0qNoEErLchY90RoZz6Skvn9eJ7z4Ql7+9X9uQMXMhrZFpewGvWlfM
7+DOEpUrkI48E6Uk5nlZU6ivHQyECzSwUZW6T4EYaWF2gtQlOxolIEa+0Z8UEAqfMBiJlaPmfLkD
NDlQx/it+BH0uVxwDMyQLQETWRHmVgifHqI/lVyt1A==
=hV1Y
-----END PGP SIGNATURE-----

--------------DQCt9CVS1Vvmkgx7LdJwDmwK--


From xen-devel-bounces@lists.xenproject.org Wed Apr 01 12:57:54 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 01 Apr 2026 12:57:54 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1270249.1558967 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1w7v8s-0007Gs-7f; Wed, 01 Apr 2026 12:57:54 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1270249.1558967; Wed, 01 Apr 2026 12: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 1w7v8s-0007Gk-4d; Wed, 01 Apr 2026 12:57:54 +0000
Received: by outflank-mailman (input) for mailman id 1270249;
 Wed, 01 Apr 2026 12:57:53 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <jbeulich@suse.com>) id 1w7v8q-0007Ga-U1
 for xen-devel@lists.xenproject.org; Wed, 01 Apr 2026 12:57:53 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1w7v8q-001VCs-9w
 for xen-devel@lists.xenproject.org; Wed, 01 Apr 2026 14:57:52 +0200
Received: from [10.42.69.8] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <jbeulich@suse.com>)
 id 69cd164d-e002-0a2a0a5209dd-0a2a4508865a-10
 for <xen-devel@lists.xenproject.org>; Wed, 01 Apr 2026 14:57:52 +0200
Received: from [209.85.221.48] (helo=mail-wr1-f48.google.com)
 by tlsNG-c1860d.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.0)
 (envelope-from <jbeulich@suse.com>)
 id 69cd1650-fab6-0a2a45080019-d155dd30ccb4-3
 for <xen-devel@lists.xenproject.org>; Wed, 01 Apr 2026 14:57:52 +0200
Received: by mail-wr1-f48.google.com with SMTP id
 ffacd0b85a97d-43cf8d550bdso3082429f8f.0
 for <xen-devel@lists.xenproject.org>; Wed, 01 Apr 2026 05:57:52 -0700 (PDT)
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-43cf21ebef9sm38004880f8f.13.2026.04.01.05.57.51
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Wed, 01 Apr 2026 05:57:51 -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=google header.d=suse.com header.i="@suse.com" header.h="Content-Transfer-Encoding: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=1775048272; x=1775653072; darn=lists.xenproject.org;
        h=content-transfer-encoding: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;
        bh=eC0Mb6oTeX6UxFBHxxuPt3AeFwUamDuOUF/SNXhgpno=;
        b=Pkj7uyV04Il7NRzjYuRL0JF0YW0tX17hXhMZYmH4MMonVF6mfrdOU/h8WyOduyKRvq
         NETO3HARFY2ZLWlxOvtK2+wDk2gqfuKwitLPcx7DUQJWG69GQHZ5cafIZ9UezFChdIAw
         WkdZrFqqOuJbv056cWNT8hAXeDqtSfyyr+2Co2DmOmDlZjLh+xeBMyHeydMtjYfF3/Vv
         JNruuwpspN9EOoPoHgmjqLhV7GjXYVihgD1f8CqBykBxJXycMKYyK17C3p1OT0OzWNbJ
         J4Ao/4E96lkJmD6UZoJsIpZKuDWqiHP6uGu3vOdvwCCnSRT+2A/9NQvvCm6HT+C3FL2T
         Z4Sg==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20251104; t=1775048272; x=1775653072;
        h=content-transfer-encoding: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;
        bh=eC0Mb6oTeX6UxFBHxxuPt3AeFwUamDuOUF/SNXhgpno=;
        b=CWot9LYYAdTNaWBlWh/ZzPf1a85bn4Bmw0IfTME0o70I1lRSF5zCGJkibJFQb4vjUx
         t5cTyFqB8spyoHW6qyfiy7OWgpRCAfhmaq3bOhMgSw0NvZ41G/50dlsnCdAeecIMu4yG
         e6jjQDmQA3EUMrlxRqAd0IaXPSpvCXHS2YktPb0EIDZjjqpbccjrB017tdza6ThvuSbZ
         94oU/PwMU3/280FcOeM7ixzOBCtanK5Mhz9UJTGrh+qAM/sWbkFSyXqZ6/HtFlGC77IJ
         Gg3T2O2l6v7brxaTmufeOo3x7inHAEJrjkgc6vW5S9tKQFC4Q1X/VHHfNcm0F4rqVfzz
         r2zw==
X-Forwarded-Encrypted: i=1; AJvYcCVjcoO2jbbIRN7NVSiGRjbbLN62SkRlQ8iFn/kNId8UWnTLtUqQ/FddRfG8vhPFV9VfrhIkhScDSmk=@lists.xenproject.org
X-Gm-Message-State: AOJu0YxYaVNmDRi/KKlmwENW2zc1TMbZN9WAa9bF1vtM1g9O00I4DIsE
	cObzhvktY2ekiyz+EK4Emz8xywcWZRcle4ovf7+f3fINhbhrtZk/gxqXYjDAUAASsw==
X-Gm-Gg: ATEYQzyTULBiCfbDGAO8t9+TT8ZDJlGbVjEgFmnZ3UlPZBLNK3dYZJczISxtKHZLv5g
	gfuVzyB+sDmjl0LQnGBORiutPyvOnLbodnf2Dxvtk906pzqoBS+wfnr0LE2DWX/6ZOYBddYS8K9
	RayyU6+R7fcupKvCV3X3rBLftbWwjC5cqZ5GAX/CFGWT2mw4XFqVWKay294fLWy/SYl5YUp1rKB
	DG2WQt5QgiWjH/kx3Uk0/+mVIdK+kqYlOPXf942ODCNGY95DAtbGQHPjX/4QbLiitufPQNQa945
	xQA8nwPoo2jyvPBLgrgbYXD7Qe9s4LXk14HnFYIghONmGAU0CyIH0vuluHfLCFoytZ2FrQPBDNa
	mMLl22al9eFc1NiQqArFGCep7RLC8sThmop440/WjUbg7YklK3528TJCUtw1V/3CgDV9dUmmnRW
	nySwhFuuh3qsSg8dlKy1drFKvsBk8Db4Kxu0DTJGK5/kRgk2iSB4s65bgqVDD6tZmM5G5SS358y
	5konW1O9zvoTha1NGBxAxqEFQ==
X-Received: by 2002:a5d:588f:0:b0:43c:f7f6:6016 with SMTP id ffacd0b85a97d-43d150d3d2emr7240304f8f.32.1775048271615;
        Wed, 01 Apr 2026 05:57:51 -0700 (PDT)
Message-ID: <2cec4690-b23e-4057-841f-efca4348af5c@suse.com>
Date: Wed, 1 Apr 2026 14:57:49 +0200
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH v1 03/27] xen/riscv: implement prerequisites for
 domain_create()
To: Oleksii Kurochko <oleksii.kurochko@gmail.com>
Cc: Romain Caritey <Romain.Caritey@microchip.com>,
 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.pau@citrix.com>,
 Stefano Stabellini <sstabellini@kernel.org>, xen-devel@lists.xenproject.org
References: <cover.1773157782.git.oleksii.kurochko@gmail.com>
 <ccd6d21b224b478c88ca5f2fdd2d1dd507671510.1773157782.git.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: <ccd6d21b224b478c88ca5f2fdd2d1dd507671510.1773157782.git.oleksii.kurochko@gmail.com>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 7bit
X-purgate-ID: tlsNG-c1860d/1775048272-77B44497-941A95E2/0/0
X-purgate-type: clean
X-purgate-size: 2598

On 10.03.2026 18:08, Oleksii Kurochko wrote:
> arch_domain_create() and arch_sanitise_domain_config() are prerequisites for
> domain_create().
> 
> arch_sanitise_domain_config() currently returns 0, as there is no specific
> work required at this stage.
> 
> arch_domain_create() performs basic initialization, such as setting up the P2M
> and initializing the domain's virtual timer.

Does it? I can spot only the former; instead there is ...

> --- a/xen/arch/riscv/domain.c
> +++ b/xen/arch/riscv/domain.c
> @@ -288,6 +288,33 @@ void sync_vcpu_execstate(struct vcpu *v)
>      /* Nothing to do -- no lazy switching */
>  }
>  
> +int arch_sanitise_domain_config(struct xen_domctl_createdomain *config)
> +{
> +    return 0;
> +}
> +
> +int arch_domain_create(struct domain *d,
> +                       struct xen_domctl_createdomain *config,
> +                       unsigned int flags)
> +{
> +    int rc = 0;
> +
> +    if ( is_idle_domain(d) )
> +        return 0;
> +
> +    if ( (rc = p2m_init(d)) != 0)
> +        goto fail;
> +
> +    d->arch.next_phandle = GUEST_PHANDLE_LAST + 1;

... this, which I can't make any sense of. I can't find matching Arm code
either, which might otherwise have helped.

> +    return rc;
> +
> + fail:
> +    d->is_dying = DOMDYING_dead;
> +    arch_domain_destroy(d);

(At least) for the use here, that other function would better also move out
of stubs.c at the same time (and no longer have unconditional BUG_ON() in it).

> --- a/xen/arch/riscv/stubs.c
> +++ b/xen/arch/riscv/stubs.c
> @@ -101,14 +101,7 @@ void dump_pageframe_info(struct domain *d)
>      BUG_ON("unimplemented");
>  }
>  
> -int arch_sanitise_domain_config(struct xen_domctl_createdomain *config)
> -{
> -    BUG_ON("unimplemented");
> -}
> -
> -int arch_domain_create(struct domain *d,
> -                       struct xen_domctl_createdomain *config,
> -                       unsigned int flags)
> +void vcpu_switch_to_aarch64_mode(struct vcpu *v)

What is this? Surely nothing with this name should exist under riscv/.

> --- 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_LAST GUEST_PHANDLE_IOMMU

This, to me, looks like a questionable addition to the public interface.
Yet I'm not a DT person, so I may simply be missing why something like
this might be wanted (and how stable it then would be, long term).

Jan


From xen-devel-bounces@lists.xenproject.org Wed Apr 01 13:04:12 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 01 Apr 2026 13:04:12 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1270263.1558976 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1w7vEh-0000Wg-RE; Wed, 01 Apr 2026 13:03:55 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1270263.1558976; Wed, 01 Apr 2026 13:03: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 1w7vEh-0000WZ-Nq; Wed, 01 Apr 2026 13:03:55 +0000
Received: by outflank-mailman (input) for mailman id 1270263;
 Wed, 01 Apr 2026 13:03:54 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <jbeulich@suse.com>) id 1w7vEg-0000WT-Aa
 for xen-devel@lists.xenproject.org; Wed, 01 Apr 2026 13:03:54 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1w7vEf-00G3Um-Eh
 for xen-devel@lists.xenproject.org; Wed, 01 Apr 2026 15:03:53 +0200
Received: from [10.42.69.9] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <jbeulich@suse.com>)
 id 69cd17b2-2eae-0a2a0a5409dd-0a2a4509899c-10
 for <xen-devel@lists.xenproject.org>; Wed, 01 Apr 2026 15:03:53 +0200
Received: from [209.85.128.52] (helo=mail-wm1-f52.google.com)
 by tlsNG-bad1c0.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.0)
 (envelope-from <jbeulich@suse.com>)
 id 69cd17b9-bf79-0a2a45090019-d1558034ec0c-3
 for <xen-devel@lists.xenproject.org>; Wed, 01 Apr 2026 15:03:53 +0200
Received: by mail-wm1-f52.google.com with SMTP id
 5b1f17b1804b1-486507134e4so77588135e9.0
 for <xen-devel@lists.xenproject.org>; Wed, 01 Apr 2026 06:03:53 -0700 (PDT)
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-43cf330872asm33496849f8f.17.2026.04.01.06.03.51
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Wed, 01 Apr 2026 06:03:52 -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=google header.d=suse.com header.i="@suse.com" header.h="Content-Transfer-Encoding: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=1775048633; x=1775653433; darn=lists.xenproject.org;
        h=content-transfer-encoding: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;
        bh=h/lioYAC4GUA58SdhE5ceGXkvUy8ColhOQryMEBxi4k=;
        b=CjdH5TfG+dqDxJCDNRcj7TH+IexwmVmChMKQSqqO6u+U42d4Z1B8bevG707YTdIN4b
         6accHLsmaalaEJdYh6vzq0QIWATAeYO9Mev9e2DMEFieun0rh+nUqUIhwldm2iS2l/BU
         1bns6huNfLvf8dVgweuXQl3/wczCDmcqzAGC4pFbBN82YZHo041UbL5wfTRoUw6fmeas
         BrwuiWnYk0uXGPDUJLZ9F/pR0HUXT1d6ILLphHrnoUu94Ltsy4jebZV/7s7gq0gSVDWq
         5vfNuypE5oCHXAFOGSaOHSyBeh8XlJINY4frGAsHVuE/9aQhDpqgEcx+8VaFR4RR5G00
         WtyA==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20251104; t=1775048633; x=1775653433;
        h=content-transfer-encoding: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;
        bh=h/lioYAC4GUA58SdhE5ceGXkvUy8ColhOQryMEBxi4k=;
        b=Si+jeFlkM8VYP08uq4rulUGbNFHgOXzvRVIImF2GOLNOUSRdWv0R4dkrezSEt+dJ5i
         DsML0MCRbOQesrXvmkR988WabMYTMaZq3ugneeotDUVJACihnXaBwzDZ1YjCSXro9pk4
         R9tIu1VpfWqN+3DRCaRxkzLAoaQW7P7ZsqxIKYB98GPe4QLyVnf1VdqbZoNbmCApp4zG
         xGXjIe+DnsLZ/b3m6E0w/c+xB6qaiI9vB/akYyeMNIIPkAAGYrFY8QMq99Xm9V3x6qo8
         JMrglRd7HcKsiBgy5ScGmbdBXyV3mGucPiFmSa7c2l8mhuBJe5WgYdwm1U6E3/xI/xV3
         6asA==
X-Forwarded-Encrypted: i=1; AJvYcCV0j5hWxgFH4VdyU5BryWRBqgMI4D7rEOgN4Ax23DgHIzDEe2cZ3Ep45+oAHiOhBVXS4WsbHoyw0lM=@lists.xenproject.org
X-Gm-Message-State: AOJu0Yw6JxdvqGV7bO9A0p1l+SjmOMjpBuegb6An/kNCr+kVneL4/zCA
	4auAdhSbIHIViVNyVqpTyvU4v/khber6tTliFMv1JZWH2g8rb+lqnhA15wBza2AHAg==
X-Gm-Gg: ATEYQzxQqJDCSUK3Vre7ycZBbMBjLDb8EEhXRXOrF6NLnAnmD+HRSoXkdzGEXrk7Cj1
	E8vq5GfH2dI6NGOCFO8gPElSRvtpBvNGIYoOGWaZLvIR41Pfr9+kfKjEN86WzNZKesCgrPhMpw/
	sWIunnVoFZDPM8xSnasJ0OYx6d2f0xENAJrInWvzqEMy72fjFV5GU/OrQlFtIPBMc5PueYE1fAS
	OFBN7iDICLZ/Vkbx/wqj0IdBDd695asMZcFpF6cTclu1bY9KphyJuZXWWT4HA9zXe5RPKWoHIP4
	hDcLslnPFxOw9TI8Eg2mxEFikgg59qnqZ1BJ2It6P6CsAoq//vN1N+dQbxdZ7pyOBCSKmTWfGFV
	KuG051fPR1QsUIxHxdm0T5u1CBBHovPVTODSZrJgp4G11r1XLySbLWOFp/SHrNg8nywrD5WcpxQ
	JS24tjNjv+ZV39IMbLywSWSL7bn7DdC/4bAHp2XxtYoOZztHTfBltiVowx6GGC96lNlMuTRW7u5
	fs/lioprL3ra4Q=
X-Received: by 2002:a05:600c:3baa:b0:485:3b34:2f62 with SMTP id 5b1f17b1804b1-4888359ce97mr59716455e9.14.1775048632521;
        Wed, 01 Apr 2026 06:03:52 -0700 (PDT)
Message-ID: <ca934061-f3e2-4511-bdad-465c4f2d0de1@suse.com>
Date: Wed, 1 Apr 2026 15:03:50 +0200
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH v3] arinc653: don't assume Dom0 is the control domain
To: =?UTF-8?B?SsO8cmdlbiBHcm/Dnw==?= <jgross@suse.com>
Cc: Nathan Studer <nathan.studer@dornerworks.com>,
 Stewart Hildebrand <stewart@stew.dk>,
 "xen-devel@lists.xenproject.org" <xen-devel@lists.xenproject.org>
References: <89d17a24-0a1f-4f3f-ac2f-f3701a8d78dd@suse.com>
 <4a4c011e-9666-4416-be1b-33d1dcad5afe@suse.com>
 <73e51afc-ae7c-4d08-9054-75dab660bf42@suse.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: <73e51afc-ae7c-4d08-9054-75dab660bf42@suse.com>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
X-purgate-ID: tlsNG-bad1c0/1775048633-5515D152-7A2A2607/0/0
X-purgate-type: clean
X-purgate-size: 2600

On 01.04.2026 14:57, Jürgen Groß wrote:
> On 01.04.26 14:29, Jan Beulich wrote:
>> Leaving aside highly disaggregated environments, the control domain is
>> what will invoke XEN_SYSCTL_SCHEDOP_putinfo. Its vCPU-s therefore need to
>> be able to run unconditionally, not those of the domain with ID 0 (which
>> may not exist at all).
>>
>> Fixes: 9f0c658baedc ("arinc: add cpu-pool support to scheduler")
>> Signed-off-by: Jan Beulich <jbeulich@suse.com>
>> ---
>> There being no "else" to the if(), what about other control domain vCPU-s?
> 
> I guess this is a stale leftover. Doesn't matter for committing anyway.
> 
>> ---
>> v3: Don't mistakenly include the idle domain.
>> v2: New.
>>
>> --- a/xen/common/sched/arinc653.c
>> +++ b/xen/common/sched/arinc653.c
>> @@ -411,10 +411,10 @@ a653sched_alloc_udata(const struct sched
>>       spin_lock_irqsave(&sched_priv->lock, flags);
>>   
>>       /*
>> -     * Add every one of dom0's units to the schedule, as long as there are
>> -     * slots available.
>> +     * Add every one of the control domain's units to the schedule, as long as
>> +     * there are slots available.
>>        */
>> -    if ( unit->domain->domain_id == 0 )
>> +    if ( is_control_domain(unit->domain) && !is_idle_domain(unit->domain) )
>>       {
>>           entry = sched_priv->num_schedule_entries;
>>   
> 
> Hmm, is it really the control domain only which wants to be scheduled initially?
> I would think that at least the hardware domain and probably a Xenstore domain
> would want to be included, too.
> 
> In the end it might even be that other domains created via dom0less would want
> to be able to run initially. They could be part of a mandatory infrastructure.
> Why would they need to be created at boot if they are NOT important?

This part is easy to answer: Because in a dom0less setup you simply may have
no toolstack at all. (At which point there may also be nothing to set a
schedule, yes.)

> The question is whether the arinc653 scheduler is really meant for such setups.
> OTOH just modifying the test to:
> 
>      if ( system_state < SYS_STATE_active &&
>           unit->domain->domain_id < DOMID_FIRST_RESERVED )
> 
> seems to be fine for catching all those cases.
> 
> With or without this modification:
> 
> Reviewed-by: Juergen Gross <jgross@suse.com>

Thanks, yet I'll have to leave to the maintainers to decide which form it
should ultimately take. One remark: A restartable control domain wouldn't
pass that conditional. Granted that's looking far into the future.

Jan


From xen-devel-bounces@lists.xenproject.org Wed Apr 01 13:19:45 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 01 Apr 2026 13:19:45 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1270274.1558985 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1w7vTv-0002sy-2a; Wed, 01 Apr 2026 13:19:39 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1270274.1558985; Wed, 01 Apr 2026 13:19: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 1w7vTv-0002sr-00; Wed, 01 Apr 2026 13:19:39 +0000
Received: by outflank-mailman (input) for mailman id 1270274;
 Wed, 01 Apr 2026 13:19:37 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <jbeulich@suse.com>) id 1w7vTt-0002sl-Ep
 for xen-devel@lists.xenproject.org; Wed, 01 Apr 2026 13:19:37 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1w7vTs-006ySa-Bz
 for xen-devel@lists.xenproject.org; Wed, 01 Apr 2026 15:19:36 +0200
Received: from [10.42.69.8] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <jbeulich@suse.com>)
 id 69cd1b67-2eae-0a2a0a5409dd-0a2a4508e4f2-2
 for <xen-devel@lists.xenproject.org>; Wed, 01 Apr 2026 15:19:36 +0200
Received: from [209.85.128.49] (helo=mail-wm1-f49.google.com)
 by tlsNG-c1860d.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.0)
 (envelope-from <jbeulich@suse.com>)
 id 69cd1b68-fab6-0a2a45080019-d1558031d4df-3
 for <xen-devel@lists.xenproject.org>; Wed, 01 Apr 2026 15:19:36 +0200
Received: by mail-wm1-f49.google.com with SMTP id
 5b1f17b1804b1-4852a9c6309so57933505e9.0
 for <xen-devel@lists.xenproject.org>; Wed, 01 Apr 2026 06:19:36 -0700 (PDT)
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-4887e80a6ebsm141695325e9.6.2026.04.01.06.19.34
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Wed, 01 Apr 2026 06:19:35 -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=google header.d=suse.com header.i="@suse.com" header.h="Content-Transfer-Encoding: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=1775049576; x=1775654376; darn=lists.xenproject.org;
        h=content-transfer-encoding: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;
        bh=zLQfiXJzjyIanyKM/ntrl0B1r1SLW8jps6XddgVsxEI=;
        b=PCYOgn52AEh4fydVvyhLzFrgSreCJ/3oomqJ39Mz80/AQuqq/2wXltMVky2Pb3wFnc
         n0lZGkjHneb2tGylF/fG6uov4uUvvSv6zeusEATx2VTObthcGR7xWK345KsYqLFlZuAO
         L6fB0oacGCrprTYjOTnP1Xe4/ZcYiJsxg8Ib8Fa543HDWKGWyfRLGqekzNWMjT58olnM
         Ldx4qcvC5ADhPf2Cm2tVim3cED4LY6yHb9dvhW8vZh6FRROr6dVgXO+BU9XBUpSeR4jj
         hRwtCpxYXbuWxi4pn1rgp4J80dN3UKx3Xnzcr2h8MPJ103nxsASixO/c4+2vdYXwGecH
         /YKw==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20251104; t=1775049576; x=1775654376;
        h=content-transfer-encoding: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;
        bh=zLQfiXJzjyIanyKM/ntrl0B1r1SLW8jps6XddgVsxEI=;
        b=frndD0fCFkXENvv5afEOL7kCK4v5DN6eFJAfv5sWi67Ty2bcWVF2/r1LJ54iFFhq09
         bUwxmcLtkkOmNb4hNlAwLaDTn2SRM4agKUVFo7U69nU4MOmvOh8rWpdnQ+rQImb07gzV
         sYHdXwa1X9thw9zM3wfpP92fSG06bBsNZxgWaYEffs7v/63CB+UkA306iWMBp3oTUfPY
         xHJVkEID7zmzDI0smogpxaJP1GBvUgCTFrckw8nb2iW18YWhGGT9ndZX67vvhgNdckXk
         oP5ZG0gVYIeJsKw4aImkkEEq916yJ0MgduV0xVsXXyLouCjJzoy8XTNIw/XoAc+wECTG
         9xqQ==
X-Forwarded-Encrypted: i=1; AJvYcCXVeJJCOxAIt8amtb9Xj325sZcAmNoInWT0Ph0kzY6xlfNaRKwf8raaU0t6wLNsKT675cOpUHdqiH4=@lists.xenproject.org
X-Gm-Message-State: AOJu0Yws5FpEGR84i14qsCuO1wiExVxKoDcJkr5/8HxOJgv6XHNY2EUD
	YYHuWMiMoxzzrKMxx+KX4/6os22/IHCJLoCLA6j5BqTc+xY8aCjIuCxpEJJzbVbFcA==
X-Gm-Gg: ATEYQzxsfFCHAOhj9H1J3t7oT2Ht09kINIpdjAjR1rFNNt8U3JIs6hg6bFEFM0crMiK
	ieIBhZ3GPw3VnEl45sHhkftuyssPVoe9rn4oMvBUWnv1MQZIrMnEr/l74xIYy8gFgpmbNvMxXvN
	dry1jliWpWDxdVQ4sbRXEx50wAHH8+5JTpbrvDS4l8vZYopH4MyDqmailaTqvJRgB/XiLGfIXXy
	WERJOPGoYox845IUmKyrNuRpCYzVelgxxlMwLSiTYHBiWwuUA66q7BmlIgtncgjHfQfbIRbD9Mp
	n+RkiXo+Mo+SI7EbNbn/oKpDXQJyWgqAXj+Nl8BPg9sYo9N7Hb1yhtSPFByZsCR1Q5puyBbXQb9
	Is9ynSmZTzHol/6Yx8jRjBoAFsZVWFYCD4YRj6diyorZzWci/BtCFQJFv7CkE0/WFeMqkS+7YCY
	PzfZFV0UTXRGz4lVPCobNlHuxcIFIAc9ioN6pDTr0DKd93DTdJcGzh8kJsh10JW+7V7XeGxEXex
	1Fdb2Flqiw5O3A=
X-Received: by 2002:a05:600c:c04a:b0:486:fbf6:abd4 with SMTP id 5b1f17b1804b1-488835636f1mr45223005e9.9.1775049575591;
        Wed, 01 Apr 2026 06:19:35 -0700 (PDT)
Message-ID: <fb4a8f75-d3f8-4e8c-9b45-1194c78659f5@suse.com>
Date: Wed, 1 Apr 2026 15:19:33 +0200
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH v1 04/27] xen/riscv: rework G-stage mode handling
To: Oleksii Kurochko <oleksii.kurochko@gmail.com>
Cc: Romain Caritey <Romain.Caritey@microchip.com>,
 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.pau@citrix.com>,
 Stefano Stabellini <sstabellini@kernel.org>, xen-devel@lists.xenproject.org
References: <cover.1773157782.git.oleksii.kurochko@gmail.com>
 <2c8f1ea25b8d3ec78b00510fbe604a87e759e194.1773157782.git.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: <2c8f1ea25b8d3ec78b00510fbe604a87e759e194.1773157782.git.oleksii.kurochko@gmail.com>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 7bit
X-purgate-ID: tlsNG-c1860d/1775049576-7674E497-6799F8DF/0/0
X-purgate-type: clean
X-purgate-size: 3413

On 10.03.2026 18:08, Oleksii Kurochko wrote:
> Rework G-stage mode handling to make the selected mode descriptor reusable
> outside of p2m initialization.
> 
> As max_gstage_mode is going to be reused by code that creates CPU nodes for
> guest domains, not only max_gstage_mode->mode but also max_gstage_mode->name
> is required.

I guess I'm not DT-savvy enough to understand why that would be.

> To support this, make max_gstage_mode a global pointer to one of
> the entries in a global modes[] array, and remove get_max_supported_mode().
> 
> Update struct p2m_domain to store a pointer to a mode descriptor instead of
> embedding the structure directly.
> 
> Refactor the modes[] array so that mode->name contains only the MMU scheme
> name (without the "x4" suffix), as this value is reused when filling the
> maximum MMU type passed to the guest. According to DT bindings [1], the MMU
> type must not include the "x4" suffix. Use "none" for the Bare mode to match
> the DT binding requirements.

I expect this DT aspect is also why Sv changes to sv in the table? (Which
is a little unhelpful for the printk() where it's used.)

> Adjust modes[]->paging_levels to represent the maximum paging level rather
> than the total number of levels. This ensures that P2M_ROOT_LEVEL() and its
> users behave correctly without relying on hardcoded p2m mode values.
> 
> Finally, drop __initconst from the modes[] declaration, as the array is
> referenced via p2m->mode and max_gstage_mode beyond the init stage.
> 
> [1] https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/tree/Documentation/devicetree/bindings/riscv/cpus.yaml?h=v6.19-rc3#n82

Is a reference into Linux doc really providing something "canonical"? Surely
there's an independent spec somewhere?

> --- a/xen/arch/riscv/p2m.c
> +++ b/xen/arch/riscv/p2m.c
> @@ -45,18 +45,32 @@ struct p2m_pte_ctx {
>      unsigned int level;          /* Paging level at which the PTE resides. */
>  };
>  
> -static struct gstage_mode_desc __ro_after_init max_gstage_mode = {
> -    .mode = HGATP_MODE_OFF,
> -    .paging_levels = 0,
> -    .name = "Bare",
> -};
> -
>  /*
>   * Set to the maximum configured support for IPA bits, so the number of IPA bits can be
>   * restricted by external entity (e.g. IOMMU).
>   */
>  unsigned int __read_mostly p2m_ipa_bits = PADDR_BITS;
>  
> +static const struct gstage_mode_desc modes[] = {

As a function scope static this was a fine identifier. Please consider whether
with the wider scope gstage_modes[] might not be better.

> +    /*
> +     * Based on the RISC-V spec:
> +     *   Bare mode is always supported, regardless of SXLEN.
> +     *   When SXLEN=32, the only other valid setting for MODE is Sv32.
> +     *   When SXLEN=64, three paged virtual-memory schemes are defined:
> +     *   Sv39, Sv48, and Sv57.
> +     */
> +    [0] = { HGATP_MODE_OFF,    0, "none" },
> +#ifdef CONFIG_RISCV_32
> +    [1] = { HGATP_MODE_SV32X4, 1, "sv32" }
> +#else
> +    [2] = { HGATP_MODE_SV39X4, 2, "sv39" },
> +    [3] = { HGATP_MODE_SV48X4, 3, "sv48" },
> +    [4] = { HGATP_MODE_SV57X4, 4, "sv57" },
> +#endif
> +};

The dedicated initializer form isn't adding any value here (whereas it slightly
hampers readability). You really don't want the array to be sparsely populated,
so perhaps better to leave as it was before?

Jan


From xen-devel-bounces@lists.xenproject.org Wed Apr 01 13:39:20 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 01 Apr 2026 13:39:20 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1270290.1558994 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1w7vmr-0006Bf-Ox; Wed, 01 Apr 2026 13:39:13 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1270290.1558994; Wed, 01 Apr 2026 13:39: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 1w7vmr-0006BY-LQ; Wed, 01 Apr 2026 13:39:13 +0000
Received: by outflank-mailman (input) for mailman id 1270290;
 Wed, 01 Apr 2026 13:39:12 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92) id 1w7vmq-0006BS-5R
 for xen-devel@lists.xenproject.org; Wed, 01 Apr 2026 13:39:12 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1w7vmp-00BePh-Hg
 for xen-devel@lists.xenproject.org; Wed, 01 Apr 2026 15:39:11 +0200
Received: from [10.42.69.1] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <oleksii.kurochko@gmail.com>)
 id 69cd1fe8-5cb7-0a2a0a5109dd-0a2a4501e6aa-46
 for <xen-devel@lists.xenproject.org>; Wed, 01 Apr 2026 15:39:11 +0200
Received: from [209.85.128.46] (helo=mail-wm1-f46.google.com)
 by tlsNG-d62444.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.0)
 (envelope-from <oleksii.kurochko@gmail.com>)
 id 69cd1fff-6fc9-0a2a45010019-d155802ea9c1-3
 for <xen-devel@lists.xenproject.org>; Wed, 01 Apr 2026 15:39:11 +0200
Received: by mail-wm1-f46.google.com with SMTP id
 5b1f17b1804b1-486fe36cfabso6127305e9.1
 for <xen-devel@lists.xenproject.org>; Wed, 01 Apr 2026 06:39:11 -0700 (PDT)
Received: from ?IPV6:2a01:cb15:80df:da00:6d45:ff60:3ad6:d7fa?
 ([2a01:cb15:80df:da00:6d45:ff60:3ad6:d7fa])
 by smtp.gmail.com with ESMTPSA id
 ffacd0b85a97d-43cf24739easm36837455f8f.30.2026.04.01.06.39.09
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Wed, 01 Apr 2026 06:39:10 -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=20251104 header.d=gmail.com header.i="@gmail.com" header.h="Content-Transfer-Encoding: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=20251104; t=1775050751; x=1775655551; darn=lists.xenproject.org;
        h=content-transfer-encoding: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;
        bh=4G+kgc23Mtl85Ap4hYz1pVGsMbvbcuun3C37EJxn4xY=;
        b=r8qz/UCVsm95B1rKYoCUtl3bagd7h2gG6jW7PTe/ZggGi3zs5Rl8cz0VEUVxcMu7JL
         LahR9Bu/8DCxB32AojqJmrJAFIZACfA1pvMfhDITVCEcIwn3x66E4thBD5TMCAN1JDpL
         9wzNZqtW2gUb/ai2BUYYX5cdhk9ll/qprnxec/PSssFRqU6q9je5XWEnq5dCwOgKucCV
         ziMK721TmFXBF3OfRx5JNFOvFNt3wZd80itprLEDCi/vuRlqYOe4+uze44dG+WOPfrRm
         feif5OtFovDhdlBhRKfzC6T/liYQp35KIie6gSPlzEOp5ps5N8dGAMDIWn1n4/NwXXFK
         VTJA==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20251104; t=1775050751; x=1775655551;
        h=content-transfer-encoding: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;
        bh=4G+kgc23Mtl85Ap4hYz1pVGsMbvbcuun3C37EJxn4xY=;
        b=VsrMUOJh4xpvwDJlK9rYqW4iJ7nKul8zqowjhvpiEjRJdYhWKTzgzxg8XW1/5tqrRL
         mnzNP5nppvH17CPmCniaBx1H69EGZibWhLl3DaW/w995sw8qAcWcp+DuLDX7flcyBqLZ
         TGWhiKcIse0R1M8hOtYJWARvbePcWNHJsg3POmF025LE5QJWHGneKIk9GZERWmjIVZsm
         0Z9ZI+OKsZPOQi8bMf12g8zOVJKt4Exzz/fj2eZ5QiLYtHyvPVGSIPc8hfzvJEx0M4+4
         UMJ9mP7Rv913YUU3peDaCkQDenVCLB9o0486u/15y97sxWjX3B042/EMi+p8wbvuDZTM
         LuQQ==
X-Forwarded-Encrypted: i=1; AJvYcCXj6d+2K4lAB2uTVvwB0fpYvCnBpcTcwVRrPHsvhHBdO6LNKi+wEQ2Z9BlL/RPJzDZJFQrowqiTWQo=@lists.xenproject.org
X-Gm-Message-State: AOJu0Yy/ApPszIVQ/mDZxGm904kX0zkqrFAcds57wBJ1PY4fU9ZPwlhZ
	L6KItnZGfYEGMLoe9M2K4WuvoHOIUryyY6QPgD8C8JhDFHqwiS6QK3Tu
X-Gm-Gg: ATEYQzx3izDyRmzNonyQpZ5RdOADGa5RzxZTkq4rdqiLeQyfDSTgSsjXaHjyeFXOCzy
	BkwMiGSaLvZoKg+vSg9Vt1IoPKUta9uB5nWS91vy+JL/vGg5wjMBBUzkkJm6M4hwieAjtFbbrtV
	ejdHk0HFttgfnnvtgkp8b17CsvhJiPTIQLvYi7aHUQ19+b8Nh8DkFGPQxBL/7Pux6tMPEYC+g4T
	cybDIWd05szqVvIsDK5N4JGad7oy1dPUUIruUX+7veLnnN+y+RW4AAs9D2LvJM7O2Fc/URCC3MV
	llU70fcBpFMGdkHLTuw/SnG/EI0FAMkR9PfPLxRsPXK5MWMxpjN10Y7CYdwAwFKuYSNr+PRZrAy
	RneHrPFYncu7G8eLDnH/LCvlS5zIBlsLzFUm1r4tRQy+ViDf1BsUr6FUl06/sw/QIAu+sxPpVdd
	ycPY5ysnepM3pnJDSOLl+q29nQLonaX4SMEpZ9k4hQhWO/SwSyN2mpTSrMHL5VzGtLzvPHEk4YM
	ZPfYACxhcn5shYc8f6zc3s=
X-Received: by 2002:a05:600c:1551:b0:486:f893:56c6 with SMTP id 5b1f17b1804b1-488835a15d2mr62276295e9.10.1775050750718;
        Wed, 01 Apr 2026 06:39:10 -0700 (PDT)
Message-ID: <c2e31e0f-17f3-463d-8439-1e5a301dafab@gmail.com>
Date: Wed, 1 Apr 2026 15:39:09 +0200
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH v2 4/4] xen/riscv: init_csr_masks()-related improvements
To: Jan Beulich <jbeulich@suse.com>
Cc: Romain Caritey <Romain.Caritey@microchip.com>,
 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.pau@citrix.com>,
 Stefano Stabellini <sstabellini@kernel.org>, xen-devel@lists.xenproject.org
References: <cover.1774863161.git.oleksii.kurochko@gmail.com>
 <8eb8327bfb2f273cd0fa32ba65e84bb79e8607d4.1774863161.git.oleksii.kurochko@gmail.com>
 <46dd0df2-ccf1-4c5e-9f89-9b0b197e1c95@suse.com>
Content-Language: en-US
From: Oleksii Kurochko <oleksii.kurochko@gmail.com>
In-Reply-To: <46dd0df2-ccf1-4c5e-9f89-9b0b197e1c95@suse.com>
Content-Type: text/plain; charset=UTF-8; format=flowed
Content-Transfer-Encoding: 7bit
X-purgate-ID: tlsNG-d62444/1775050751-B4358185-8BE4C0B3/10/73395122804
X-purgate-type: spam
X-purgate-size: 900



On 4/1/26 8:19 AM, Jan Beulich wrote:
> On 31.03.2026 21:04, Oleksii Kurochko wrote:
>> There is no reason to use _UL() in define-s sitting in C file hence use UL
>> suffix instead.
>>
>> Drop 3d argument of INIT_CSR_MASK() and INIT_RO_ONE_MASK() to reduce risk
>> of incomplete editing after copy-and-paste, or other typo-ing.
>>
>> Use _VALID_ infix instead of _AVAIL_ as the mask identifies architecturally
>> defined bits, not bits available for software use.
>>
>> Suggested-by: Jan Beulich <jbeulich@suse.com>
>> Signed-off-by: Oleksii Kurochko <oleksii.kurochko@gmail.com>
>> Reviewed-by: Jan Beulich <jbeulich@suse.com>
> 
> Seeing this is ready to go in, am I overlooking any dependency on earlier
> patches, or could this indeed go in right away?

No, there is no any dependency, it could go earlier then other patches 
of this patch series.

Thanks.

~ Oleksii


From xen-devel-bounces@lists.xenproject.org Wed Apr 01 13:49:31 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 01 Apr 2026 13:49:31 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1270305.1559002 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1w7vwk-00083N-M1; Wed, 01 Apr 2026 13:49:26 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1270305.1559002; Wed, 01 Apr 2026 13:49: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 1w7vwk-00083G-Is; Wed, 01 Apr 2026 13:49:26 +0000
Received: by outflank-mailman (input) for mailman id 1270305;
 Wed, 01 Apr 2026 13:49:25 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <jbeulich@suse.com>) id 1w7vwj-00082P-5T
 for xen-devel@lists.xenproject.org; Wed, 01 Apr 2026 13:49:25 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1w7vwi-0074BD-HW
 for xen-devel@lists.xenproject.org; Wed, 01 Apr 2026 15:49:24 +0200
Received: from [10.42.69.8] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <jbeulich@suse.com>)
 id 69cd2253-5cb7-0a2a0a5109dd-0a2a4508bf48-28
 for <xen-devel@lists.xenproject.org>; Wed, 01 Apr 2026 15:49:24 +0200
Received: from [209.85.128.44] (helo=mail-wm1-f44.google.com)
 by tlsNG-c1860d.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.0)
 (envelope-from <jbeulich@suse.com>)
 id 69cd2264-fab6-0a2a45080019-d155802ce0af-3
 for <xen-devel@lists.xenproject.org>; Wed, 01 Apr 2026 15:49:24 +0200
Received: by mail-wm1-f44.google.com with SMTP id
 5b1f17b1804b1-486b96760easo76685635e9.2
 for <xen-devel@lists.xenproject.org>; Wed, 01 Apr 2026 06:49:24 -0700 (PDT)
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-4887e843a55sm96574955e9.12.2026.04.01.06.49.22
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Wed, 01 Apr 2026 06:49:23 -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=google header.d=suse.com header.i="@suse.com" header.h="Content-Transfer-Encoding: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=1775051364; x=1775656164; darn=lists.xenproject.org;
        h=content-transfer-encoding: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;
        bh=2jGw2rrI8V1cOSlVi277JEgtmimJFPcYSIO7U6jarSo=;
        b=LmJPws/G0+/1IEQrlOU+7m5H/GEQKFmjW6M3D0yHicpXxiOUqjYiE28zwsRJkF5pXe
         F87zSiSBajpx0MxHGNHPcBmS458n4UByj39L45RG7VgU0TInS1ehwahXDSv70fyXWDaK
         NbyU3kU12hwHzfbZ8yCP/T4bPlFxX+n42HxXsmLIhA3+eO50E+75RGaoOsItWSCNSHVF
         AKmxch72EvnR5Kw10/npqL6IX76lsasUUE3KoyytxADEJOBtn84M3pnNft+Wzs9Wcx7U
         0d9brcDHvmGUWxrSIdkvz5oxQJbaxEpqzjBO/QO9jrtCuusVYDWcbyx5/BWazfFt3FLr
         ZRyQ==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20251104; t=1775051364; x=1775656164;
        h=content-transfer-encoding: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;
        bh=2jGw2rrI8V1cOSlVi277JEgtmimJFPcYSIO7U6jarSo=;
        b=sFh2u5m+6WCRtP+7R0on6/37J0DTeaGvN7r8KkZ2flDNevVvJhaTI8CQmBrlJ71qN8
         AJx4dRKu6slAcyPTJi/ZPO0OYrY5OiNmsjR8Hl5d7ocYPFjtkcg5uaO9UYabWI9h9zNU
         yvaFEbijqhQdlQI60OBSDYTKOfLgPAvADgJPe8di/ORXhysW56BEI1ipmCceQmbsnD08
         LcN3bAKggA3/A+9cI+jLy8EQ5S0w8kHKyKY71OdFL9lrl/obR00Fp8ns8nRBFHNhphKd
         Ettkc64GUixD9YdZDqIiVbSDyIjvCZ6JB6AZi7Y0ufcDAihCoR1WJrdzBp4Tvao8MD4P
         ou1A==
X-Forwarded-Encrypted: i=1; AJvYcCUvUXmaZSwOacVVVrZlA6xyM4dPH3+xjEqK3cBMWts6+dgaQ7XoreB00uBZIy5loycrg5baWmWj3x0=@lists.xenproject.org
X-Gm-Message-State: AOJu0Yxr/iCNAzbasDY6f1bWj63S2R0Z/2e16iFbHM8WzqsNqx+C8xHg
	GVqyrV98wBpPAX+TH5dHEYywJ3zJCs1T6N48CgLYC+RsOHVSNUe1kHdfA7lUYIlcTQ==
X-Gm-Gg: ATEYQzyMTCjC1ZA5MSoMhgNPR3/Bnfsp70w7qnh5f2s8tLf3Iug+yshZ0TZZGN6Punn
	Hj36lVBI9s1YBQyE7BKRlD3a9p41/2iD4ZmjQB8wcxHNKPI0/e0SawXZaliHkNqFONM02RyF1Y+
	dKThuNV/T5Dl/w7T/dingCBHrqs82dJZqvX8IaUoiZRSj86t+ZGgs/K4nlWj0t/U2ANKjkW8tse
	PjuLXQ2SRaBosy5gutfLHZnPluNFBJIVX0uB7Win9zsakKBb7OQ6uTnpSEoitvM4xS52o2A3Dh+
	LLZ/Tvl8LwaRJQOHRtTu5yDCAPD++o9WskQYRMobGjkJScI4hO08tOTHl+l952c5F6TcxiMoRAb
	qTLUCDpE27Gh/hg+bRT73UF3dubGbRAVBiaOhxcseVi7XI1f2Kh1nB2ehiBoI8kOgy8cXOVg5Cf
	tnHePwFnO8JVw6zzCSKNmswFK72Os/wQn+5zi0K1MxZiDls5tWpAZuSDKtLDpBkQV4dFyAzYoPK
	fYvuvnBNfvk7O4=
X-Received: by 2002:a05:600c:8b88:b0:485:3f38:3de3 with SMTP id 5b1f17b1804b1-4888355e6e3mr65651705e9.3.1775051363743;
        Wed, 01 Apr 2026 06:49:23 -0700 (PDT)
Message-ID: <efe5b1f5-29a0-43a8-92f8-cc20bd922e62@suse.com>
Date: Wed, 1 Apr 2026 15:49:21 +0200
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH v1 05/27] xen/riscv: introduce guest riscv,isa string
To: Oleksii Kurochko <oleksii.kurochko@gmail.com>
Cc: Romain Caritey <Romain.Caritey@microchip.com>,
 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.pau@citrix.com>,
 Stefano Stabellini <sstabellini@kernel.org>, xen-devel@lists.xenproject.org
References: <cover.1773157782.git.oleksii.kurochko@gmail.com>
 <007c0a0243ac7ff1d1ab3faa4ebcdd6fcd14e485.1773157782.git.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: <007c0a0243ac7ff1d1ab3faa4ebcdd6fcd14e485.1773157782.git.oleksii.kurochko@gmail.com>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 7bit
X-purgate-ID: tlsNG-c1860d/1775051364-75557497-9D6FEE11/0/0
X-purgate-type: clean
X-purgate-size: 4483

On 10.03.2026 18:08, Oleksii Kurochko wrote:
> Introduce generation of the riscv,isa string passed to the guest via the
> Device Tree riscv,isa property.

Title as well as this suggest this is all about guest properties. Then ...

> The following changes are introduced:
> 
> - According to the RISC-V privileged specification, M-mode software controls
>   the XLEN value used by S-mode and U-mode. For RV64 harts, the SXL and UXL
>   fields of the mstatus register are WARL fields that define the XLEN for
>   S-mode and U-mode.
> 
>   The XLEN value is provided by M-mode software (OpenSBI in the case of Xen)
>   via the riscv,isa DT property. Introduce and initialize an xlen variable
>   when parsing the host riscv,isa string in riscv_isa_parse_string().

... suddenly talk is of host aspects? (See below as to what "xlen" really
is meant to hold.)

> --- a/xen/arch/riscv/cpufeature.c
> +++ b/xen/arch/riscv/cpufeature.c
> @@ -38,6 +38,8 @@ struct riscv_isa_ext_data {
>  /* Host ISA bitmap */
>  static __ro_after_init DECLARE_BITMAP(riscv_isa, RISCV_ISA_EXT_MAX);
>  
> +static __ro_after_init unsigned int xlen;

Nit: Attribute between type and identifier please, whenever possible (it
isn't neatly possible in riscv_isa above, due to DECLARE_BITMAP()).

> @@ -160,6 +162,19 @@ static const struct riscv_isa_ext_data __initconst required_extensions[] = {
>      RISCV_ISA_EXT_DATA(svpbmt),
>  };
>  
> +static const unsigned int __initconst guest_unsupp_exts[] = {
> +    RISCV_ISA_EXT_f,
> +    RISCV_ISA_EXT_d,
> +    RISCV_ISA_EXT_h,
> +    RISCV_ISA_EXT_q,
> +    RISCV_ISA_EXT_v,
> +};

This could do with a comment clarifying what needs (and what doesn't need)
putting here. My expectation would have been that everything in
riscv_isa_ext[] which shouldn't be exposed to guests should appear here.
Yet then there is V (which riscv_isa_ext[] doesn't have), while e.g. Svade
and Svpbmt (which iirc won't be available to guests right away) aren't
there.

> +static __ro_after_init DECLARE_BITMAP(guest_unsupp_bmp, RISCV_ISA_EXT_MAX);

Is the _bmp suffix really needed? riscv_isa, for example, doesn't have it.

> +#define MAX_GUEST_ISA_STR_LEN 256
> +char guest_isa_str[MAX_GUEST_ISA_STR_LEN];

__ro_after_init?

Yet then - can this really be a global? Isn't the set of extensions
available to a guest a per-guest property, i.e. a global could at best
represent an upper bound on features?

> @@ -193,6 +208,15 @@ static void __init match_isa_ext(const char *name, const char *name_end,
>               !memcmp(name, ext->name, name_end - name) )
>          {
>              __set_bit(ext->id, bitmap);
> +
> +            if ( riscv_isa_extension_available(guest_unsupp_bmp, ext->id) )
> +                break;
> +
> +            if ( ext->id >= RISCV_ISA_EXT_BASE )
> +                safe_strcat(guest_isa_str, "_");
> +
> +            safe_strcat(guest_isa_str, ext->name);

Shouldn't you check the (kind-of-)return value? (Yet better would be a build-
time check, but I can't think of a way to achieve that.)

> @@ -207,13 +231,17 @@ static int __init riscv_isa_parse_string(const char *isa,
>  #if defined(CONFIG_RISCV_32)
>      if ( isa[2] != '3' && isa[3] != '2' )
>          return -EINVAL;
> +    xlen = 32;
>  #elif defined(CONFIG_RISCV_64)
>      if ( isa[2] != '6' && isa[3] != '4' )
>          return -EINVAL;
> +    xlen = 64;
>  #else
>  # error "unsupported RISC-V bitness"
>  #endif

This can be had with an initializer of "xlen". Then the (kind-of-)variable
could be const unsigned int. Seeing the use below, is the variable
correctly named, though? I.e. shouldn't it be guest_xlen or some such?

Independently I expect you will want to support 32-bit guests on 64-bit Xen
at some point, in which case encoding this value into a global string won't
work very well.

> +    snprintf(guest_isa_str, sizeof(guest_isa_str), "rv%d", xlen);

%u please with unsigned int.

This being the only use of the variable (afaics), why is it not function-
scope?

> @@ -487,6 +515,11 @@ void __init riscv_fill_hwcap(void)
>      bool all_extns_available = true;
>      struct trap_info trap;
>  
> +    for ( i = 0; i < ARRAY_SIZE(guest_unsupp_exts); i++ )
> +    {
> +        __set_bit(guest_unsupp_exts[i], guest_unsupp_bmp);
> +    }

Nit: No need for braces here. And anyway - can't this be had with an
initializer for guest_unsupp_bmp?

Jan


From xen-devel-bounces@lists.xenproject.org Wed Apr 01 13:50:17 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 01 Apr 2026 13:50:17 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1270314.1559011 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1w7vxY-000148-Tt; Wed, 01 Apr 2026 13:50:16 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1270314.1559011; Wed, 01 Apr 2026 13: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 1w7vxY-000141-RF; Wed, 01 Apr 2026 13:50:16 +0000
Received: by outflank-mailman (input) for mailman id 1270314;
 Wed, 01 Apr 2026 13:50:15 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92) id 1w7vxX-00013t-ST
 for xen-devel@lists.xenproject.org; Wed, 01 Apr 2026 13:50:15 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1w7vxX-00GDwF-8U
 for xen-devel@lists.xenproject.org; Wed, 01 Apr 2026 15:50:15 +0200
Received: from [10.42.69.9] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <oleksii.kurochko@gmail.com>)
 id 69cd2295-bab6-0a2a0a5309dd-0a2a4509e6aa-14
 for <xen-devel@lists.xenproject.org>; Wed, 01 Apr 2026 15:50:15 +0200
Received: from [209.85.221.49] (helo=mail-wr1-f49.google.com)
 by tlsNG-bad1c0.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.0)
 (envelope-from <oleksii.kurochko@gmail.com>)
 id 69cd2297-bf79-0a2a45090019-d155dd31ecb5-3
 for <xen-devel@lists.xenproject.org>; Wed, 01 Apr 2026 15:50:15 +0200
Received: by mail-wr1-f49.google.com with SMTP id
 ffacd0b85a97d-43cf5d14d6eso3231214f8f.0
 for <xen-devel@lists.xenproject.org>; Wed, 01 Apr 2026 06:50:15 -0700 (PDT)
Received: from ?IPV6:2a01:cb15:80df:da00:6d45:ff60:3ad6:d7fa?
 ([2a01:cb15:80df:da00:6d45:ff60:3ad6:d7fa])
 by smtp.gmail.com with ESMTPSA id
 ffacd0b85a97d-43cf245f8a3sm38054907f8f.24.2026.04.01.06.50.13
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Wed, 01 Apr 2026 06:50:14 -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=20251104 header.d=gmail.com header.i="@gmail.com" header.h="Content-Transfer-Encoding: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=20251104; t=1775051415; x=1775656215; darn=lists.xenproject.org;
        h=content-transfer-encoding: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;
        bh=VxHyxqrHvN88qc5owbRsRtQnGxMvq/IHuJE5KUREEAU=;
        b=R2H/WImVVqIes+ZPyszqH5ee7eebBnX2eKWoA4MfwdJKTFB5IjEfvLitdlxKONkDDa
         3psQ4scJSoDWHGAytorLfHec5H6BNZv2orP89TucP1ZBUljEXyQvWfc61dBjFsj9U6pT
         pr2IqHeOG9T9IdJSTaVxs+4DiOGLmpvG/dbm3pcGGGfQp2wB34ZiDoQ6hZv3vfZlPkLe
         +83j2JF0Ii/c5GQxacQGTUfc4KPVVE+SdtHRrZJxprlZdOCGe33PmTkkuNv1jSKhSw0N
         WiykSfZsP78PkFdnSAhCCaBZ8fjkjWm7Fni+C7PW8gszq7JvWPitm2OGn7D7q5lswFmj
         4WIA==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20251104; t=1775051415; x=1775656215;
        h=content-transfer-encoding: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;
        bh=VxHyxqrHvN88qc5owbRsRtQnGxMvq/IHuJE5KUREEAU=;
        b=GmcFLunlVqgLk0DihWK95uvLRs6grVY/cgwsCywFuXyhhJCmAVOogLqZf5vk7d2xLf
         x9gqACg8OPOsXq/kG0Qeh39fWl6p/vKgzF7CJDJ8wN/dtHIYX2T2wqIzP7dvAAiWI96D
         UMjXdlFBLGdybjRGGpo3N/buvq79BM/5f1XO8ziTAynWF6r+sl7B1qhVbmO6cbJTzffi
         VzZCgC32JyMSBKtY+Lo8MY2Xdp9NTunXSfxFjImGVJOmIlWBvfwSp0z0PFYfnYIejVVd
         /d+dwKXXEGW8LDZOJPhj4gnPL5gwWNf4JYb5T+FWBZxgab+/EUFFPCccmSz6szS2Lw2M
         18cQ==
X-Forwarded-Encrypted: i=1; AJvYcCVinYwSJgSywY0zkXtkoIfmo6AjfTF7NCuOaNr9gOqc97DaXmtW2q9zf2GFisU4sky6nvbKhdIUPqg=@lists.xenproject.org
X-Gm-Message-State: AOJu0YyjIQbTCON0t+I9EnMoROdaru4D2X+5a3fTfwlGcsojHODj1LpH
	1nBms+cmELShrmQ5twYHEy9VfBOnPaBeZOR7p6kOeOVCuSCdRsVGdze2
X-Gm-Gg: ATEYQzzL/sfWKFYSEfEoiPZZuJhP0hIjTh2jBIhA8KNM82NJDOIcloQojE8EdNlhvR6
	Y/7KxGCnnjVgdc7zzg0hYGNNFwT8WvA3arOTY9E21aFqi4MTn/dtkuC3nUZiOl+heu68prm8gy0
	l0wrLZpbT3ta6jaLIf9al8A3m4IA+7kn/a/PWf54PRCQ0N1b7ZOZ3QmH60bciOWiQ1rKN8LGJDX
	70qTvEG3mKHjhQQYGyCww6QETZyxdpXmixwd4nTkrdz72Tn2GghBGamhlbNwO6rlfbaGw8c7JbQ
	fWYFixXSFcmM6bVOxj8zypIbTSPT7LcOLwiqRT/mpJGllod7/HV+SwUOA3D/HHDHE5EX1pFYfke
	jUxOEHZHcRfG0emUGH+jCbXyfsJW+TyEhln4vp24iWeymoc6vpGlGVuTSWuXHe+RvGZ8JOWHLnm
	dH4AyfGj+sbauHzBAIqs2hvMlxoSyVqllWmGKBxUDfQbb+fQ/hvGX7Mmxx5hOTB7c7WO0jIdsHg
	PWICYyGlaQ=
X-Received: by 2002:a05:6000:2586:b0:439:b8b2:fad0 with SMTP id ffacd0b85a97d-43d1504958fmr7170561f8f.5.1775051414506;
        Wed, 01 Apr 2026 06:50:14 -0700 (PDT)
Message-ID: <eeadb9f7-83d6-4335-ab72-8efb2ce4360e@gmail.com>
Date: Wed, 1 Apr 2026 15:50:13 +0200
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH v2 09/11] xen/riscv: introduce p2m_gpa_bits
To: Jan Beulich <jbeulich@suse.com>
Cc: Romain Caritey <Romain.Caritey@microchip.com>,
 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.pau@citrix.com>,
 Stefano Stabellini <sstabellini@kernel.org>, xen-devel@lists.xenproject.org
References: <cover.1774281309.git.oleksii.kurochko@gmail.com>
 <775374eab7b9868b7cabe6c76fa1b7ac2f8466d8.1774281309.git.oleksii.kurochko@gmail.com>
 <4a0f4313-2694-4986-810c-0f4eac191cef@suse.com>
 <c87ef4d3-abad-4e46-ae86-f078eb4a5f0e@gmail.com>
 <0f20593e-1cad-475a-9bc4-f4f1b38c5087@suse.com>
Content-Language: en-US
From: Oleksii Kurochko <oleksii.kurochko@gmail.com>
In-Reply-To: <0f20593e-1cad-475a-9bc4-f4f1b38c5087@suse.com>
Content-Type: text/plain; charset=UTF-8; format=flowed
Content-Transfer-Encoding: 7bit
X-purgate-ID: tlsNG-bad1c0/1775051415-5455B152-068715B0/10/73395122804
X-purgate-type: spam
X-purgate-size: 1179



On 4/1/26 8:07 AM, Jan Beulich wrote:
>>>> @@ -191,8 +209,13 @@ static void __init gstage_mode_detect(void)
>>>>    
>>>>    void __init guest_mm_init(void)
>>>>    {
>>>> +    unsigned int gpa_bits;
>>>> +    unsigned int paging_levels = default_gstage_mode.paging_levels;
>>> Deriving a global from a default, when ...
>>>
>>>>        gstage_mode_detect();
>>>>    
>>>> +    ASSERT(default_gstage_mode.paging_levels <= max_gstage_mode.paging_levels);
>>> ... the default isn't the maximum possible, isn't going to fly.
>> I didn't get you here.
>>
>> If we want Xen uses Sv39 for G-stage, we want to limit guest's 56-bit
>> GPA to 39-bit GPA, but not the maximum supported by h/w mode for G-stage
>> mode.
> I can only repeat what I thought I had got across already on an earlier
> series of yours: What mode a guest is going to use is going to be a guest
> property. The default mode therefore isn't the only mode that may be used
> at runtime.

I remember that, but i don't really understand what is wrong now with 
the ASSERT(). It should be changed or dropped at all when this property 
you are talking about will be introduced.

~ Oleksii


From xen-devel-bounces@lists.xenproject.org Wed Apr 01 13:57:41 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 01 Apr 2026 13:57:41 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1270328.1559020 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1w7w4d-0001pm-MC; Wed, 01 Apr 2026 13:57:35 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1270328.1559020; Wed, 01 Apr 2026 13:57: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 1w7w4d-0001pf-JG; Wed, 01 Apr 2026 13:57:35 +0000
Received: by outflank-mailman (input) for mailman id 1270328;
 Wed, 01 Apr 2026 13:57:34 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <jbeulich@suse.com>) id 1w7w4b-0001pZ-Vw
 for xen-devel@lists.xenproject.org; Wed, 01 Apr 2026 13:57:34 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1w7w4b-00BiaU-27
 for xen-devel@lists.xenproject.org; Wed, 01 Apr 2026 15:57:33 +0200
Received: from [10.42.69.2] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <jbeulich@suse.com>)
 id 69cd2438-2eae-0a2a0a5409dd-0a2a4502d9dc-46
 for <xen-devel@lists.xenproject.org>; Wed, 01 Apr 2026 15:57:32 +0200
Received: from [209.85.128.51] (helo=mail-wm1-f51.google.com)
 by tlsNG-720697.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.0)
 (envelope-from <jbeulich@suse.com>)
 id 69cd244c-42fa-0a2a45020019-d1558033c02d-3
 for <xen-devel@lists.xenproject.org>; Wed, 01 Apr 2026 15:57:32 +0200
Received: by mail-wm1-f51.google.com with SMTP id
 5b1f17b1804b1-486ff3a0fc1so63746065e9.2
 for <xen-devel@lists.xenproject.org>; Wed, 01 Apr 2026 06:57:32 -0700 (PDT)
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-4887e829c43sm110119815e9.5.2026.04.01.06.57.31
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Wed, 01 Apr 2026 06:57:31 -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=google header.d=suse.com header.i="@suse.com" header.h="Content-Transfer-Encoding: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=1775051852; x=1775656652; darn=lists.xenproject.org;
        h=content-transfer-encoding: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;
        bh=XZVH6ygFcgCX2n5i1JSwSYkFbwZ9ApzI3czu4SHxdNE=;
        b=WoSDFizSd16tA9cxH6xpyYvktGGwbr22/wJnAh9IScfHzzIAOR/UCWDd7i5C3YuT4l
         fcc05TNeh9HvuT7B1s5csVsCoQJ+Tf1fcKm9LikdVMt2k+/lHiRABfOmbc2xPpaP6zCW
         ZqjVKa8UbzmjZ+GIwX7HP99NFJoIaraARcOa4Plmi0/PJ9brKLwX4s8Ij48D85+obtsa
         jAt8vYgliGS8iuxfTT//MwFMct0LPAJyMZhMn2RGNUNDyY/xIopSj+WqoK1V37qGV8q7
         LLK4twzZKaT7SDBUwm0tT6E5c/CQIPq8IhfJJi1Ta5I4NLah83vka97niBryvO687vAR
         9LQw==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20251104; t=1775051852; x=1775656652;
        h=content-transfer-encoding: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;
        bh=XZVH6ygFcgCX2n5i1JSwSYkFbwZ9ApzI3czu4SHxdNE=;
        b=T2TJOJ9hONfJbVNcM7xcdublai+qbbrOJ71zbz/WLcI/FYl8sT5asEqTnuOFukGbQP
         pI0zr3TUlHCWjwEHIb16dNpWPKRlzg0agqV+Z7n2BmgIUw44lnH28JBLcSNHlGnf7Kc+
         UFjUKmO/84pHR9nKQf6lkzbXvaej2fppk5NaMUmUaINGVhiUkHJAmF+VShR22zOu1r6d
         F4tYDsFGhfAlPHbWNvL7uOYrQwlX1CY5mnnm4liZvy1WpeRJLvUom0/+O+3WrPHpinKf
         9k+kxO2XRy3BkcQ9VKvghK75njWJdnO9JrwM4NLWp9OE0m7STumGLSLJOcMF2exVoYj/
         L/kw==
X-Forwarded-Encrypted: i=1; AJvYcCUyqPUtabp4/5Cj+0atqZxtgNnbHKrQ1WhNImxuKEa4ko0qlTnB0Rd3K93a9iri1IJTnP4UsAVobNs=@lists.xenproject.org
X-Gm-Message-State: AOJu0YwzumTla3dgu4K1RO+6pgSNFZmvcxr5K99L/hnd6aT58MDeIu1K
	zVupRMR+nykM0oZcyEmCyc97lvM22FCUAXlw9Rvd1hzsh16x6drWO6pYlqGRH1JARQ==
X-Gm-Gg: ATEYQzwjb4bEWvTSwdtDxpizToIHZH3VP3xm6sa56k2L9IxxaBNS/1AZCO6F/1uIRfg
	/+zvTffkTgbvTYWb/6kvKt877sl1CN2uJ7d0XDDb4RpEU84eyUUI/Gq2xKS7z68HTbRxMy2pwuG
	HO2I1kmreppyBtEFyXX769COQeIcACh2wL4Pa9H3nGg3p0pueVBETEmb9QOBW0QXqRYHwxKEBvY
	O6/q1LBYv6f7bMxGCDv8XJoJudy/hPVnbelWYQ6TmtVFRpZJQqj31Z7lYiwNczvBZeA4DviHNng
	KkR6pB/LingUJFe8c6IZWMRVXNj/XzHC3aDlIS7wvKyFdJHJ7ZEDZxCiuQI+bUFZgegmrXi2Pu/
	Tdfu59oeYa96jGLIlhhlYZGB4DTCPJV/hBgM0LjYrYeLk5npMeP2sCycZwmW6WEFBMxPJ7/R6d3
	URzQozdK6WlnvriTMF3vdrkpdCWwNPTbkC0vIteaMwjPjPXqfKcEN4eZqzC5czfMOvx1I22mRIe
	Q4+qM/13HyK768=
X-Received: by 2002:a05:600c:821a:b0:485:4135:5c92 with SMTP id 5b1f17b1804b1-48883306dd5mr66033725e9.0.1775051852179;
        Wed, 01 Apr 2026 06:57:32 -0700 (PDT)
Message-ID: <34e89f92-43ea-4cfb-a7cc-668b0e915662@suse.com>
Date: Wed, 1 Apr 2026 15:57:30 +0200
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH v2 09/11] xen/riscv: introduce p2m_gpa_bits
To: Oleksii Kurochko <oleksii.kurochko@gmail.com>
Cc: Romain Caritey <Romain.Caritey@microchip.com>,
 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.pau@citrix.com>,
 Stefano Stabellini <sstabellini@kernel.org>, xen-devel@lists.xenproject.org
References: <cover.1774281309.git.oleksii.kurochko@gmail.com>
 <775374eab7b9868b7cabe6c76fa1b7ac2f8466d8.1774281309.git.oleksii.kurochko@gmail.com>
 <4a0f4313-2694-4986-810c-0f4eac191cef@suse.com>
 <c87ef4d3-abad-4e46-ae86-f078eb4a5f0e@gmail.com>
 <0f20593e-1cad-475a-9bc4-f4f1b38c5087@suse.com>
 <eeadb9f7-83d6-4335-ab72-8efb2ce4360e@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: <eeadb9f7-83d6-4335-ab72-8efb2ce4360e@gmail.com>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 7bit
X-purgate-ID: tlsNG-720697/1775051852-AE926CD1-2F2D9564/0/0
X-purgate-type: clean
X-purgate-size: 1637

On 01.04.2026 15:50, Oleksii Kurochko wrote:
> On 4/1/26 8:07 AM, Jan Beulich wrote:
>>>>> @@ -191,8 +209,13 @@ static void __init gstage_mode_detect(void)
>>>>>    
>>>>>    void __init guest_mm_init(void)
>>>>>    {
>>>>> +    unsigned int gpa_bits;
>>>>> +    unsigned int paging_levels = default_gstage_mode.paging_levels;
>>>> Deriving a global from a default, when ...

This earlier comment may have been placed a little unhelpfully. The global
talked about is p2m_gpa_bits. IOW ...

>>>>>        gstage_mode_detect();
>>>>>    
>>>>> +    ASSERT(default_gstage_mode.paging_levels <= max_gstage_mode.paging_levels);
>>>> ... the default isn't the maximum possible, isn't going to fly.
>>> I didn't get you here.
>>>
>>> If we want Xen uses Sv39 for G-stage, we want to limit guest's 56-bit
>>> GPA to 39-bit GPA, but not the maximum supported by h/w mode for G-stage
>>> mode.
>> I can only repeat what I thought I had got across already on an earlier
>> series of yours: What mode a guest is going to use is going to be a guest
>> property. The default mode therefore isn't the only mode that may be used
>> at runtime.
> 
> I remember that, but i don't really understand what is wrong now with 
> the ASSERT(). It should be changed or dropped at all when this property 
> you are talking about will be introduced.

... the comment wasn't about the assertion itself, but the mere existence
of default_gstage_mode. Imo you really don't want to redo this later, but
maintain per-guest settings per guest right away, even if for the time
being all guests may end up with identical settings.

Jan


From xen-devel-bounces@lists.xenproject.org Wed Apr 01 13:57:57 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 01 Apr 2026 13:57:57 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1270334.1559029 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1w7w4z-0002Ke-0s; Wed, 01 Apr 2026 13:57:57 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1270334.1559029; Wed, 01 Apr 2026 13:57: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 1w7w4y-0002KX-UY; Wed, 01 Apr 2026 13:57:56 +0000
Received: by outflank-mailman (input) for mailman id 1270334;
 Wed, 01 Apr 2026 13:57:55 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92) id 1w7w4x-0002K0-BW
 for xen-devel@lists.xenproject.org; Wed, 01 Apr 2026 13:57:55 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1w7w4w-0075oB-NN
 for xen-devel@lists.xenproject.org; Wed, 01 Apr 2026 15:57:54 +0200
Received: from [10.42.69.9] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <oleksii.kurochko@gmail.com>)
 id 69cd2457-5cb7-0a2a0a5109dd-0a2a4509a278-40
 for <xen-devel@lists.xenproject.org>; Wed, 01 Apr 2026 15:57:54 +0200
Received: from [209.85.221.47] (helo=mail-wr1-f47.google.com)
 by tlsNG-bad1c0.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.0)
 (envelope-from <oleksii.kurochko@gmail.com>)
 id 69cd2462-bf79-0a2a45090019-d155dd2fbcf9-3
 for <xen-devel@lists.xenproject.org>; Wed, 01 Apr 2026 15:57:54 +0200
Received: by mail-wr1-f47.google.com with SMTP id
 ffacd0b85a97d-43d17bb1c65so428429f8f.0
 for <xen-devel@lists.xenproject.org>; Wed, 01 Apr 2026 06:57:54 -0700 (PDT)
Received: from ?IPV6:2a01:cb15:80df:da00:6d45:ff60:3ad6:d7fa?
 ([2a01:cb15:80df:da00:6d45:ff60:3ad6:d7fa])
 by smtp.gmail.com with ESMTPSA id
 ffacd0b85a97d-43d1e4e52a0sm12470f8f.30.2026.04.01.06.57.53
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Wed, 01 Apr 2026 06:57:53 -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=20251104 header.d=gmail.com header.i="@gmail.com" header.h="Content-Transfer-Encoding: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=20251104; t=1775051874; x=1775656674; darn=lists.xenproject.org;
        h=content-transfer-encoding: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;
        bh=lUZMAdF4ivbIXalcOFKTDwoVQAHa9uHqKk5ZVbAmvHo=;
        b=kLrQbLsEuK7Oib0oeh7LP7chiWqQuB0kTdijuhvx+Ss0EwFUlkXrzV0/Rs24omsGWI
         lw9palfhx5GFVZ3I2NM+VhnnQUQ4yUEgZ8AjKrbchS0Wk6nc5IOQeSSRggt0tyNdRSkM
         IRNtr7U5adkrCtHGNTMHsgV4XqLcw/4/p5eL2yFAY18DOpnXVstDPDndF8yhuNc0vXeL
         Nn2mTqyR+a8F2prdoUYgbOlChxk16fRZYUzVTt4svFvfO0man9TDA14bYLpI0TekSP7z
         5OMlfhcxNvyAmV3V7bCPhT5eeREM4dFlz0dt0P+819UtQ+mvLe/P36JabRn0c/zDNELF
         ueQg==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20251104; t=1775051874; x=1775656674;
        h=content-transfer-encoding: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;
        bh=lUZMAdF4ivbIXalcOFKTDwoVQAHa9uHqKk5ZVbAmvHo=;
        b=XahNZRJ5ub3tCIOMYgS09CG6RjQfVXJLrJnvlh8eYWFmNAyt8YhBQ6wDzkqUftcd8h
         2JOZA5yF3TeJzjYdTmTYJZhSUSFEyGHMfWpnNPSyXyFUrIBA+ytmdlozEkeAmMODCJ30
         h3wKWjnlnj5OGKwkykswOOTgItUMqPTGS/mqkcoGPydY6l4i77Pl0bdo+kcBpAn4X6OU
         00Vvthj1T96Dw+K1dObUlLYpiE8KdOFQrL3TwgDQ0sHZOgwgDjgT+Eb+x0FS2B+PdbgV
         pca8Dn4aMIdhxjkAnm75Z5MnDZNXsib0gvHMqjT00FSDq3svjJpv4PVHEmMm1Qispwov
         +JhA==
X-Forwarded-Encrypted: i=1; AJvYcCU6WicD0nLzPj0WNOngkyQ9NUAYHNz1XAymgfo7hovKPy2gpOaiVc6NdRUcSQzu1LL24/G6+geYLbU=@lists.xenproject.org
X-Gm-Message-State: AOJu0YyVE+rZPAwOWuQY7iTF41722KmJ0ZFaRccONvTeGgJwFnoGV7Hi
	4AgomAD5/BnAcb0f50JIJm2amWVOqj+OOvh/R850YRvGMVHB0RloJpWB
X-Gm-Gg: ATEYQzwEeUQRdPepGLWqOmC+HSxaJqm0vOZNR/4vTwfN6myuBHsGq2NRMi9MW4okY9n
	/Ok9m94SS+6zeY+x3wV+Oo//qnXNtD5+clZE4ALpWYyrQm0E2gy2/SYGvV89Wnya6O/t0mXfFaf
	CUjK/nQwE+kj0s/6oVLeyAaOQZAn93PE9hHMnOgTkWqZjSKBAP3PxnMFsvYgMwHczXAKcZIwwyu
	Qp8DAdnBC/H7x/hpnRaTnmw9GB00xOP3p9WW6zqdpuqVNfF+bU4DQ9k9aBFdjLuKVV3g6kYzWV3
	SU76szfRONFUJf1/m83roSqKJ1iVGYgO4THSZ/7lD8owb0aiykGXmQz50saNVRFk1F/AGoQI1zg
	fqXdlMNfF+n6Tfd2GflfGHF5mbqtFgg/XhMh0Dqg4f/pB/8m08KObDhkMRFVbbIK0fhr0ivdj4v
	caoJXSdy31yTLsaBonFEpSJzPhksdnPE/pYBj0/YSjxI6nmiqB5xKJxOZi8fa/GccF9SnadpV2O
	HbvnIq8S8aVrUGRDczBJw==
X-Received: by 2002:a05:6000:18a3:b0:43c:faee:87e with SMTP id ffacd0b85a97d-43d1512f373mr7334739f8f.48.1775051873960;
        Wed, 01 Apr 2026 06:57:53 -0700 (PDT)
Message-ID: <2bae9e12-8f71-4ff0-b077-bfb4215e5e14@gmail.com>
Date: Wed, 1 Apr 2026 15:57:52 +0200
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH v2 10/11] xen/riscv: add definition of guest RAM banks
To: Jan Beulich <jbeulich@suse.com>
Cc: Romain Caritey <Romain.Caritey@microchip.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.pau@citrix.com>,
 Stefano Stabellini <sstabellini@kernel.org>, xen-devel@lists.xenproject.org
References: <cover.1774281309.git.oleksii.kurochko@gmail.com>
 <8278256f3d270b456d19cb9891b89b88a46548a5.1774281309.git.oleksii.kurochko@gmail.com>
 <1a3a316e-f0ea-4514-95d6-9813d6d5ca76@suse.com>
 <691be850-9145-4bbf-a897-d10a0193b730@gmail.com>
 <dfd2a666-f3a5-4d88-b034-438f8fbb85ba@suse.com>
Content-Language: en-US
From: Oleksii Kurochko <oleksii.kurochko@gmail.com>
In-Reply-To: <dfd2a666-f3a5-4d88-b034-438f8fbb85ba@suse.com>
Content-Type: text/plain; charset=UTF-8; format=flowed
Content-Transfer-Encoding: 7bit
X-purgate-ID: tlsNG-bad1c0/1775051874-2E949152-40001258/10/73395122804
X-purgate-type: spam
X-purgate-size: 2432



On 4/1/26 8:17 AM, Jan Beulich wrote:
> On 31.03.2026 18:14, Oleksii Kurochko wrote:
>> On 3/30/26 5:51 PM, Jan Beulich wrote:
>>> On 23.03.2026 17:29, Oleksii Kurochko wrote:
>>>> The dom0less solution uses defined RAM banks as compile-time constants,
>>>> so introduce macros to describe guest RAM banks.
>>>>
>>>> The reason for 2 banks is that there is typically always a use case for
>>>> low memory under 4 GB, but the bank under 4 GB ends up being small because
>>>> there are other things under 4 GB it can conflict with (interrupt
>>>> controller, PCI BARs, etc.).
>>> Fixed layouts like the one you suggest come with (potentially severe)
>>> downsides. For example, what if more than 2Gb of MMIO space are needed
>>> for non-64-bit BARs?
>> It looks where usually RAM on RISC-V boards start, so I expect that 2gb
>> before RAM start is enough for MMIO space.
> Likely in the common case. Board designers aren't constrained by this,
> though (aiui). Whereas you set in stone a single, fixed layout.
> 
> Arm maintainers - since a similar fixed layout is used there iirc,
> could you chime in here, please?
> 
>> Answering your question it will be an issue or it will also use some
>> space before banks, no?
> I fear I don't understand what you're trying to tell me.

I meant that there is also some space between banks and pretty big which 
could be used for MMIO which could be used for non-64-bit BARs.

> 
>> Further, assuming that the space 4G...8G is what
>>> you expect 64-bit BARs to be put into, what if there's a device with a
>>> 4G BAR? It'll eat up that entire space, requiring everything else to
>>> fit in the 2G you reserve below 4G.
>> I assume that such big devices could use high memory without any issue.
> Well, I could go (almost) arbitrarily low with individual BAR size,
> merely increasing the number of BARs accordingly. Assuming 2G BARs are
> 64-bit capable is likely fine. Maybe the same is true for 1G and 512M
> ones as well. Yet a some size the assumption will break.
> 
> IMO RAM layout wants establishing dynamically based on the MMIO needs
> of a guest.

I have this in my TODO.

But with the current implementation of dom0less it requires to have RAM 
banks defined in compile time.

Can we process with the current suggested way with the following update 
of dom0less code to work with dynamically allocated RAM layout?

~ Oleksii


From xen-devel-bounces@lists.xenproject.org Wed Apr 01 14:04:28 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 01 Apr 2026 14:04:28 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1270351.1559040 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1w7wB5-0004Ao-NR; Wed, 01 Apr 2026 14:04:15 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1270351.1559040; Wed, 01 Apr 2026 14:04: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 1w7wB5-0004Ah-Iq; Wed, 01 Apr 2026 14:04:15 +0000
Received: by outflank-mailman (input) for mailman id 1270351;
 Wed, 01 Apr 2026 14:04:13 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <SRS0=7629=CB=ubuntu.com=enr0n@fe-bounces.ubuntu.com>)
 id 1w7wB3-0004Ab-J8
 for xen-devel@lists.xenproject.org; Wed, 01 Apr 2026 14:04:13 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1w7wB2-00CLV8-FB
 for xen-devel@lists.xenproject.org; Wed, 01 Apr 2026 16:04:12 +0200
Received: from [10.42.69.6] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <SRS0=7629=CB=ubuntu.com=enr0n@fe-bounces.ubuntu.com>)
 id 69cd25db-e002-0a2a0a5209dd-0a2a4506b7a0-10
 for <xen-devel@lists.xenproject.org>; Wed, 01 Apr 2026 16:04:12 +0200
Received: from [121.127.44.66] (helo=smtp.forwardemail.net)
 by tlsNG-16d1c6.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.0)
 (envelope-from <SRS0=7629=CB=ubuntu.com=enr0n@fe-bounces.ubuntu.com>)
 id 69cd25da-0df0-0a2a45060019-797f2c42241f-3
 for <xen-devel@lists.xenproject.org>; Wed, 01 Apr 2026 16:04:12 +0200
Received: by mail-vk1-f200.google.com with SMTP id
 71dfb90a1353d-56ce17e1f56so4892866e0c.0
 for <xen-devel@lists.xenproject.org>; Wed, 01 Apr 2026 07:04: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=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=1775052250;
 bh=ZYLQqX4T/QfgbLaRjWzbcTh4jjHfhPMxLig3H0OSreo=;
 b=bBr8arU/+f2uonEskRZVY+POvjpQeC7J+ZSxU6i5Ry54oTtTQdz3avq/CRPCHQMgecKMdt6hr
 5KKLS5dRKqCUCnmRfYj5mwgMsY99KLsWX6WFN7k2QgspbrWJ57XKKE96DxrQxkcON4g2NXxBQqn
 mgwfET9xxJNYDX05ZZnwIpZznfVsO0/UuIS5TLSoxEBzHdXtd2Ftf4f/QU1pFbGze/aEDA2dIcv
 dYZ6R+tUet8PDFXDubS3NbSs9JWGC126alRQEoWi1Hh4tU9/17oihfokxofCE4QKBrXdmupMcau
 A9jNPJZUxAU/Oet4Fu7OLzA609A60OAGpR4AdhXrhYwA==
X-Forward-Email-ID: 69cd25d713aa77a31744c685
X-Forward-Email-Sender: rfc822; enr0n@ubuntu.com, smtp.forwardemail.net,
 121.127.44.66
X-Forward-Email-Version: 2.6.64
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: AOJu0YyoF3wHoM9k8JaBiirgQVfXFqWYLCTL3Vk+IyAtE5JTvq+0Uh7b
	3nf3x5htfwOW6ZVWA6eo7H68GufJ5XVPeOdi72uEnw5loMghXdzX5AdZFRibqgkYfzXhadogoBd
	67asvCDKPlbswhK0vW5DR2YXail4XFVsVnC542VjwiqRnPFNGrvQ3KhPjKzFHf9YWiHMXuhHhH/
	/V0UigUc7DbuRGzYIREANw0TTqrulWQsVIg+7X6mvIPBMzWoWD/jT1WC5Z2TM=
X-Gm-Gg: ATEYQzyoRbmosTflW2feJ//TwyxehQUZSrvQvt4qCMfCJ8gpHPby2yIrg2VlkA10xG6
	2BhDUL4wuekKfsOn8Q7NzN1aeRV1R3QB5vAezpjRmLP3v2YT0hMzHZshsJEW89xPGL4CQpxpK9+
	YzrclwX2lXp472/Mi5UdDtAYloLCjSujcC1LZ76Vmq1j5VhyFcwDbW6dfqWQprx40oclwkkUypa
	1+o
X-Received: by 2002:a05:6122:6087:b0:56c:dacc:9c3a with SMTP id 71dfb90a1353d-56d8a975f93mr1564556e0c.16.1775052245521;
        Wed, 01 Apr 2026 07:04:05 -0700 (PDT)
X-Received: by 2002:a05:6122:6087:b0:56c:dacc:9c3a with SMTP id
 71dfb90a1353d-56d8a975f93mr1564518e0c.16.1775052245226; Wed, 01 Apr 2026
 07:04:05 -0700 (PDT)
MIME-Version: 1.0
References: <cover.1774918270.git.milan_djokic@epam.com> <5bcbeb1d614be413c13196a38d13eb3de5c549e4.1774918270.git.milan_djokic@epam.com>
In-Reply-To: <5bcbeb1d614be413c13196a38d13eb3de5c549e4.1774918270.git.milan_djokic@epam.com>
From: Nick Rosbrook <enr0n@ubuntu.com>
Date: Wed, 1 Apr 2026 10:03:54 -0400
X-Gmail-Original-Message-ID: <CAEN5XSFSZ+LYxX0FSP3P54dH+GY6AnNZv0E8SRdXmpJZR8q1kQ@mail.gmail.com>
X-Gm-Features: AQROBzDsIAkTT-BXTxpHUg7wEs4HsANEVI2yOsm8f9UXch0MQDO40ngiQI9DM5g
Message-ID: <CAEN5XSFSZ+LYxX0FSP3P54dH+GY6AnNZv0E8SRdXmpJZR8q1kQ@mail.gmail.com>
Subject: Re: [PATCH v3 06/23] xen/domctl: Add XEN_DOMCTL_CONFIG_VIOMMU_* and
 viommu config param
To: Milan Djokic <milan_djokic@epam.com>
Cc: "xen-devel@lists.xenproject.org" <xen-devel@lists.xenproject.org>, Rahul Singh <rahul.singh@arm.com>, 
	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-16d1c6/1775052252-64A4C3D8-CE7ECAD2/0/0
X-purgate-type: clean
X-purgate-size: 3457

On Mon, Mar 30, 2026 at 9:52=E2=80=AFPM Milan Djokic <milan_djokic@epam.com=
> wrote:
>
> 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>
> ---
>  docs/man/xl.cfg.5.pod.in             | 13 +++++++++++++
>  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, 55 insertions(+)
>
> diff --git a/docs/man/xl.cfg.5.pod.in b/docs/man/xl.cfg.5.pod.in
> index 3aac0bc4fb..4de8db42ac 100644
> --- a/docs/man/xl.cfg.5.pod.in
> +++ b/docs/man/xl.cfg.5.pod.in
> @@ -3175,6 +3175,19 @@ option.
>
>  =3Dback
>
> +=3Dover 4
> +
> +=3Ditem B<viommu=3D"N">
> +
> +To enable viommu, user must specify the following option in the VM
> +config file:
> +
> +viommu =3D "smmuv3"
> +
> +Currently, only the "smmuv3" type is supported for ARM.
> +
> +=3Dback
> +
>  =3Dhead3 x86
>
>  =3Dover 4
> diff --git a/tools/golang/xenlight/helpers.gen.go b/tools/golang/xenlight=
/helpers.gen.go
> index b0c09da910..b24cfd0533 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=
 nil {
>  return fmt.Errorf("converting field ArchX86.MsrRelaxed: %v", err)
>  }
> diff --git a/tools/golang/xenlight/types.gen.go b/tools/golang/xenlight/t=
ypes.gen.go
> index e0fd78ec03..e306f9c1ac 100644
> --- a/tools/golang/xenlight/types.gen.go
> +++ b/tools/golang/xenlight/types.gen.go
> @@ -530,6 +530,12 @@ type ArmSci struct {
>  Type ArmSciType
>  }
>
> +type ViommuType int
> +const(
> +ViommuTypeNone ViommuType =3D 0
> +ViommuTypeSmmuv3 ViommuType =3D 1
> +)
> +
>  type RdmReserve struct {
>  Strategy RdmReserveStrategy
>  Policy RdmReservePolicy
> @@ -619,6 +625,7 @@ Vuart VuartType
>  SveVl SveType
>  NrSpis uint32
>  ArmSci ArmSci
> +ViommuType ViommuType
>  }
>  ArchX86 struct {
>  MsrRelaxed Defbool

This looks right now. For the golang bits:

Acked-by: Nick Rosbrook <enr0n@ubuntu.com>

-Nick


From xen-devel-bounces@lists.xenproject.org Wed Apr 01 14:07:23 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 01 Apr 2026 14:07:23 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1270363.1559048 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1w7wE6-0004iB-3C; Wed, 01 Apr 2026 14:07:22 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1270363.1559048; Wed, 01 Apr 2026 14:07: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 1w7wE6-0004i4-0O; Wed, 01 Apr 2026 14:07:22 +0000
Received: by outflank-mailman (input) for mailman id 1270363;
 Wed, 01 Apr 2026 14:07:20 +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 1w7wE4-0004hy-IA
 for xen-devel@lists.xenproject.org; Wed, 01 Apr 2026 14:07:20 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1w7wE3-00GHo9-SN
 for xen-devel@lists.xenproject.org; Wed, 01 Apr 2026 16:07:19 +0200
Received: from [10.42.69.3] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <Mykyta_Poturai@epam.com>)
 id 69cd2695-e002-0a2a0a5209dd-0a2a4503a766-12
 for <xen-devel@lists.xenproject.org>; Wed, 01 Apr 2026 16:07:19 +0200
Received: from [40.107.130.138]
 (helo=MRWPR03CU001.outbound.protection.outlook.com)
 by tlsNG-33051d.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.0)
 (envelope-from <Mykyta_Poturai@epam.com>)
 id 69cd2697-02b3-0a2a45030019-286b828a08ea-4
 for <xen-devel@lists.xenproject.org>; Wed, 01 Apr 2026 16:07:19 +0200
Received: from PAVPR03MB10102.eurprd03.prod.outlook.com
 (2603:10a6:102:30d::12) by GVXPR03MB10247.eurprd03.prod.outlook.com
 (2603:10a6:150:15c::5) with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9769.15; Wed, 1 Apr
 2026 14:07:17 +0000
Received: from PAVPR03MB10102.eurprd03.prod.outlook.com
 ([fe80::b8c6:f37a:987a:beb]) by PAVPR03MB10102.eurprd03.prod.outlook.com
 ([fe80::b8c6:f37a:987a:beb%5]) with mapi id 15.20.9745.027; Wed, 1 Apr 2026
 14:07: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=TNip1FhlsVINwKipBAn0Oua4DeJMtbe3VkGzOmVRpbSubZ3pAVIQ6wFvf+A1Z/lz/T6vrA9HaN7p5vRPoMKnCXn0gNzeK+dt6BQmwNMjnke25ovHuspB06wrP13jNiT02njYAJO4C+zWqljo5c3d+A2rv6VUpSYkS4S4S0GIC2VGD1AUamBhfJNMVT1AHnHStWvRZ0YpANINzGvXClgdOnvhYZK4zhsxBC0MGpfM3IDYmmHnZbvvMkj+1UqrG1e//jM2Rm0sXHme4gr/AY12gKQS+9flFJT0BC2d3JrLwptpkbB8A+kAQWXTcnAQxE5DfZsz9gNLbUU4Nc3RD4xoCA==
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com;
 s=arcselector10001;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1;
 bh=U9+z0TQLIKNTYmNzetCC+8epCDmJMvnYSr4IQDMSKGY=;
 b=o4oU0dihqDF5xYVZ1NPQoy/9GjXu8e4DRvR1aYfcnT87mNJ1ScFR53XVckfa4KKbZembcFB6MmX6wrE8RwL6gWsd4mKX7UH2Hzy35Gp+LKMGt5AR2H++c6H3Thc4XxV/ZzAsICCME8BuA0OH8GVXr+wHDM85xNxbUyuwSFiq0wlKkpWBTLQE2EFuFIJixExyBeXLgvN/CEY446FPUeq3a5QbYyK05QH2kl7f+VwysQyvhNfGEQKsjtuABwC0U+YUmVidAU4vrkHIexR90NGrhJq6lFNr+QWA5VHaqcbK/yJJLMNde6jAix+xFTWg6saVInWJL/j/3E19qFyNAzeGvg==
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=U9+z0TQLIKNTYmNzetCC+8epCDmJMvnYSr4IQDMSKGY=;
 b=th3/5AOzZxrnIJ/yMV3NzoHchlpdn/GZt/YRxTjdUrUusOV7LLAYJVwNzfjDSXYcM+arSTzCdsRQXEzRs7n45Rp9oYD6bxxMLA1t207Ysdxa/fFEfnmGyWAPlyhvONN2KBtaFCSEQY2u5yriIpaYGXSQB/aut28BZKObKhSfuxunzM5axQlxPn9LVON2BDh8y7mn/JHZfsjd7Lw1r+R34qXd8DD0o12LEw72twz4qseCOrY8QJKQbbtayj5CrzrtlUZOC4WQsWOCFJlIhFZ8YV3iAfyphjfb1BeT7/LKevI+TRUYVGDx2QgcoU0x4QfXBUr7U6yOlgHQmHbrkZTagQ==
From: Mykyta Poturai <Mykyta_Poturai@epam.com>
To: Jan Beulich <jbeulich@suse.com>
CC: =?utf-8?B?Um9nZXIgUGF1IE1vbm7DqQ==?= <roger.pau@citrix.com>, Stewart
 Hildebrand <stewart.hildebrand@amd.com>, "xen-devel@lists.xenproject.org"
	<xen-devel@lists.xenproject.org>
Subject: Re: [PATCH v2 4/8] vpci: add a wait operation to the vpci vcpu
 pending actions
Thread-Topic: [PATCH v2 4/8] vpci: add a wait operation to the vpci vcpu
 pending actions
Thread-Index: AQHcr7UNjpbdOXJQP0qdir/zrd85obXI3WYAgAEeNICAAAXvAIAAYLsA
Date: Wed, 1 Apr 2026 14:07:15 +0000
Message-ID: <13714c88-838b-4dc7-bc0b-b6ca590fd944@epam.com>
References: <cover.1772806036.git.mykyta_poturai@epam.com>
 <ec941fbf4f8bde23fc3867e47f5ada028f8003aa.1772806036.git.mykyta_poturai@epam.com>
 <f546ae19-2107-469e-847b-7a4cde2c95fd@suse.com>
 <0275be7d-d1d9-47ee-bec2-bfbbb90b4bae@epam.com>
 <46f4a4c5-cc44-47d7-8d6d-03ddaa75bb7f@suse.com>
In-Reply-To: <46f4a4c5-cc44-47d7-8d6d-03ddaa75bb7f@suse.com>
Accept-Language: en-US
Content-Language: en-US
X-MS-Has-Attach:
X-MS-TNEF-Correlator:
authentication-results: dkim=none (message not signed)
 header.d=none;dmarc=none action=none header.from=epam.com;
x-ms-publictraffictype: Email
x-ms-traffictypediagnostic: PAVPR03MB10102:EE_|GVXPR03MB10247:EE_
x-ms-office365-filtering-correlation-id: fac61236-a5e7-4ebe-8b1d-08de8ff7fa8e
x-ms-exchange-senderadcheck: 1
x-ms-exchange-antispam-relay: 0
x-microsoft-antispam:
 BCL:0;ARA:13230040|1800799024|366016|376014|38070700021|18002099003|22082099003|56012099003;
x-microsoft-antispam-message-info:
 0tDUqT14fYl5NiSSR+BUqniS4sgqzQZW21t+B2GJVvKr8tCyQM4rqrAp9WqdPMmtnF9b1ACnTWllpFRX0lwmnwGjHSMHbI2DrwAjmFLYxFL2d4Y5LjZc2sUF+nq8MAHNo52IxRIFVzf/REJtch5dxgK9XYK+AdzhSda9RdUwsiawLcX9yX3/4CsqB5NBhNcLZ4KdPUcDnDtOpJDRSjL+ywhRFP3iTNhn53P6+t240LxtYYwCYWiSP5g2/dGyGmLlntRPvwuJkmrlEnB4d3JaTgOdFR8aeYYvDeSzIEdg1TZEyNTTZrwijR6ziaSt2ltJxMCvGziKmGoQnHjFV2nJSg/GC7rWOmrjRjojlOHuYDFwNPTEp3qGc+AZMVGSB3O/ycJTI9PcBTGZPHYuPZyzHdbrsgVAkvMUQ8izhNrJoScnbnFBPWWVTcIgU4MsnTsUHsRc3YUdVuNfp+B5A3iU8e5XuHrAPhqTrwTTA2EimGin5qC9PEdlAQizUoSfQ7238vWtK5fs6XMq5c3u9tjTxikoXm4LuT1nCSE/roVKromwxOtTY/E/UtcK4RYZfmJSqa7pNpDo4wgHVh2yGbjSxoQ+Q5HgmEst5v2UP6vdMiuSvXXc9XuwKx03zNV0UeOYmJpTP26CJWdva+6NhUC2UtvHgN+G2PU/58KS1bJ4OeAEYcVQ0RJvye+08UAJmFqlgi8IuNGb48MHRFE3jZp5HOrRCaVP+n0kKkE+N/WhGlJH9VDPF3WAzcZGHMq+UNtWFVSnZ68DArFWl9oKzc9Mxc7aDlQ6D7XsgWeMIO/HXcU=
x-forefront-antispam-report:
 CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:PAVPR03MB10102.eurprd03.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(1800799024)(366016)(376014)(38070700021)(18002099003)(22082099003)(56012099003);DIR:OUT;SFP:1102;
x-ms-exchange-antispam-messagedata-chunkcount: 1
x-ms-exchange-antispam-messagedata-0:
 =?utf-8?B?U0dzVFpQTTYzQjV2eFV3WmVQUGhHS0MvaWxOSnc1Qy9DS0dtbG81K0lqU0ow?=
 =?utf-8?B?SmtDZVo2VUdWc2Zrd2VhRGdKUW5GUE1ZejBrZnBNdi9DZVI3aWdhUkxPanla?=
 =?utf-8?B?N3Rici96NllneWxDdnVTNGpFeDZhUyttazNEWTB6RGlkWThNNTI3ZWpjbnUx?=
 =?utf-8?B?dGhBaUwxTVhiTE04R2dDTmdVRFpxNzdGVUdlV1hNa0FwbTFvQWNVRlNYR0NX?=
 =?utf-8?B?TWY2YkVoUG53Lzd5bHRSR3VQYVpjekJ5YVhya3pBRS9uVXY5RjZtMExFTFQ5?=
 =?utf-8?B?OFJVQnJhcnVPRXZSRHdFUitBMUJ6b3JPN3p0RjczU1UwNEpaNXd3U2RjdFJU?=
 =?utf-8?B?TXJFakxERU9hQ1ZJQ0dUNFc2bXdpd01SZTdZZTF3Uk1TNUlYZ0dJUzcxQnBn?=
 =?utf-8?B?eHZXb1ZLN3Bra3dJTk5XeFMzcUNuUDN1V1Y5ZVpVY29vTHo1SXExSHlPVStw?=
 =?utf-8?B?dkIvcWpkYkEvLy9qZjlhWFlGU2FKeVUwbVlNTjdHQk9Qc1hJVkFoeEpZcHFJ?=
 =?utf-8?B?SzRvbGxnVCs4VFVUcENzYVRWSXZxQnllVjZKb01keE90UUtCR09UQ1E5a0lv?=
 =?utf-8?B?SlVtRkJmeHh2N1p3SmxBSXBOUmpBNUFoLzFzRGtIUVhlL25idVBoeEVDSnJu?=
 =?utf-8?B?ZEx5SklybkZyem5VSEJZL3VBVGFtemE0UldPalFnVHRHRVFQNXlhMDBQWW5R?=
 =?utf-8?B?N0tBRGd4YUplaGIwUE5pSDFzK2lxWkFTblJaUkErajVDMjk5ZStMdnpaRjhn?=
 =?utf-8?B?TWVzTXpLU2ZxSlhSZW5rdEhPVUsydUYzWHpPQ2xMaEV4bHlWcTJLUU1OQ3k2?=
 =?utf-8?B?WnRKNGFuS1JqVWdYWGRhVUZIV1ViNUZZVDFBSkg1T0tBNHhab1ZFNmhlUTBN?=
 =?utf-8?B?cEN4M3JuUTlyV0hVU1A2MHVJT0dSMTQyVzhsbHBmbUYzTTVTLzMvK1BJMjNO?=
 =?utf-8?B?RzMrWHp0Z1ZHelN4NFphZ3ZVVitnb25SdDJmQWFVZVlMZWE0eTZNVDhadVJX?=
 =?utf-8?B?V3FKR3R1S3RYRUJLSUNhdDRtVkRZRmNIK2tERjA2K0dkSTdDL0dVaWtTU3Bh?=
 =?utf-8?B?Wm45VWFZWElsRG1FVFpleVRZWlVheGtXZnFmeHpCWjk5RkhzYmw2YjRNbS9H?=
 =?utf-8?B?ajdWeGxQRW1BYU1yYld3cHZGWUtaOVI5aFBOeTJNYktIZXlxNHhZemlMOE1Z?=
 =?utf-8?B?K1pYVkY4aCs1YmdZVVhmNTdHOFNYRWRMS2FUT2FkVWJXdm85aE9MUGlhRHZG?=
 =?utf-8?B?dlRzWHdPTFJ0ZjBSaFZ4eWJ3ckNicUNvSWdNbGRUS1dXTDhCTzdDMEQwUi81?=
 =?utf-8?B?Rm5xYWgwdC81QWJJaGM0c3hpMnM3RU9KVjVQVkU5cTAzUlRtL2FVbjVxTE9M?=
 =?utf-8?B?b0o3aEwyTmpQVEJVWE1LYnBxTGJjalorU2xpcGFjQ0tucndCQjhHQVhSeklY?=
 =?utf-8?B?T3VZZG5Qa094NUluOUhiejE4NkpSNmY2ZzQ4b0pLZ2Rxb0tBVzhzdlExa2ha?=
 =?utf-8?B?YnFST01xMEJCbjEvUGJvR0xrZlBUdUN1elJYOFVSc2JGV1lTejBTcC8vbmV0?=
 =?utf-8?B?enhBcGJUb2c5UHJtam56a0tnL3ptdWF4SEs3bzM4NzNEa0pzUkxIaWxheFQw?=
 =?utf-8?B?eGdtN0x6QS8zL3BCeUo0VHRMMWE5TDBvVGlrbHlMdUJUalBoMXlhNk1XMnBR?=
 =?utf-8?B?cVpaUDFraWtLam8zV29ET2tCVWZvSzVvT0c0ZFVZeWZlME5odHNDVmlzeGVQ?=
 =?utf-8?B?eG9tQzFUS2xSMmJkd3hBMHZ3TlFQeDNoemdzZ3NpR2laYWVGZDk1dnRXdThK?=
 =?utf-8?B?bHBBUFlpSXJ0TWl3aHdmMURtQ2NnVVBhVk1yMUZLY3hGWXhwdys4emhrSnhY?=
 =?utf-8?B?cDdBN1QwQS85eWQyazFWdFZWV1k3a1ltNVFmNFp4bWtOVm5oN1AvVm55dHlS?=
 =?utf-8?B?aUxHTGFvbU9UT3BBRHdELzl1Y1Jua2k3VG5PWnpNTTREMCs5WGFvYTZoQnNa?=
 =?utf-8?B?UWJ4eUVyVTYrRkhrR1pzOFZBbmx4SjZUWk9LV0pvZEtVTEVZSXc2bU55RHlF?=
 =?utf-8?B?RlNGaWVwdjYwaXFOaWh1NUs0UlpURVJyVkZ5Tm5kcU01amQ4QTR1VXpFbC9l?=
 =?utf-8?B?dU9hZDJ1NVdlSmxHemw5alZIcTJvVXcvSnd4R1dON21TQ0dDVm9hdnRlZ0tB?=
 =?utf-8?B?M3BUMzc4WHprTmJwakFFcjJpVTU5Q0c0S2lGVTlQMnZxbjkrQjBmdmt3dU5x?=
 =?utf-8?B?Tm9ZVi9FUHZVbEVWdnAva0dyR21DUE55aHgyaG9DUEFvbTFuOGJFd3E5Qkdx?=
 =?utf-8?B?YTcybmhhbzY3K2ZhZ09ocWpiMXZQRGV3bTN3N05PVFlxRmRsZVVVUVFJT1FK?=
 =?utf-8?Q?jsLtfTiiWYT5hFYA=3D?=
Content-Type: text/plain; charset="utf-8"
Content-ID: <0430F22134C73B4D889B8DD8E66E1621@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: PAVPR03MB10102.eurprd03.prod.outlook.com
X-MS-Exchange-CrossTenant-Network-Message-Id: fac61236-a5e7-4ebe-8b1d-08de8ff7fa8e
X-MS-Exchange-CrossTenant-originalarrivaltime: 01 Apr 2026 14:07:15.5907
 (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: j4BLoqlcC1Eyb7KLNl4i/S1DLszpmVNua7v/L/Ca0QY9eywSyO46rMNF6wrXoq4RRd3l6nmvUcUmCwd4r6g2yw==
X-MS-Exchange-Transport-CrossTenantHeadersStamped: GVXPR03MB10247
X-purgate-ID: tlsNG-33051d/1775052439-40369C9A-9EC1B4A1/0/0
X-purgate-type: clean
X-purgate-size: 10608

DQoNCk9uIDQvMS8yNiAxMToyMSwgSmFuIEJldWxpY2ggd3JvdGU6DQo+IE9uIDAxLjA0LjIwMjYg
MDk6NTksIE15a3l0YSBQb3R1cmFpIHdyb3RlOg0KPj4gT24gMy8zMS8yNiAxNzo1NSwgSmFuIEJl
dWxpY2ggd3JvdGU6DQo+Pj4gT24gMDkuMDMuMjAyNiAxMjowOCwgTXlreXRhIFBvdHVyYWkgd3Jv
dGU6DQo+Pj4+IC0tLSBhL3hlbi9kcml2ZXJzL3ZwY2kvaGVhZGVyLmMNCj4+Pj4gKysrIGIveGVu
L2RyaXZlcnMvdnBjaS9oZWFkZXIuYw0KPj4+PiBAQCAtMTc1LDc2ICsxNzUsOTIgQEAgc3RhdGlj
IHZvaWQgbW9kaWZ5X2RlY29kaW5nKGNvbnN0IHN0cnVjdCBwY2lfZGV2ICpwZGV2LCB1aW50MTZf
dCBjbWQsDQo+Pj4+ICAgIA0KPj4+PiAgICBib29sIHZwY2lfcHJvY2Vzc19wZW5kaW5nKHN0cnVj
dCB2Y3B1ICp2KQ0KPj4+PiAgICB7DQo+Pj4+IC0gICAgY29uc3Qgc3RydWN0IHBjaV9kZXYgKnBk
ZXYgPSB2LT52cGNpLnBkZXY7DQo+Pj4+IC0gICAgc3RydWN0IHZwY2lfaGVhZGVyICpoZWFkZXIg
PSBOVUxMOw0KPj4+PiAtICAgIHVuc2lnbmVkIGludCBpOw0KPj4+PiAtDQo+Pj4+IC0gICAgaWYg
KCAhcGRldiApDQo+Pj4+IC0gICAgICAgIHJldHVybiBmYWxzZTsNCj4+Pj4gLQ0KPj4+PiAtICAg
IHJlYWRfbG9jaygmdi0+ZG9tYWluLT5wY2lfbG9jayk7DQo+Pj4+IC0NCj4+Pj4gLSAgICBpZiAo
ICFwZGV2LT52cGNpIHx8ICh2LT5kb21haW4gIT0gcGRldi0+ZG9tYWluKSApDQo+Pj4+ICsgICAg
c3dpdGNoICggdi0+dnBjaS50YXNrICkNCj4+Pj4gICAgICAgIHsNCj4+Pj4gLSAgICAgICAgdi0+
dnBjaS5wZGV2ID0gTlVMTDsNCj4+Pj4gLSAgICAgICAgcmVhZF91bmxvY2soJnYtPmRvbWFpbi0+
cGNpX2xvY2spOw0KPj4+PiAtICAgICAgICByZXR1cm4gZmFsc2U7DQo+Pj4+IC0gICAgfQ0KPj4+
PiAtDQo+Pj4+IC0gICAgaGVhZGVyID0gJnBkZXYtPnZwY2ktPmhlYWRlcjsNCj4+Pj4gLSAgICBm
b3IgKCBpID0gMDsgaSA8IEFSUkFZX1NJWkUoaGVhZGVyLT5iYXJzKTsgaSsrICkNCj4+Pj4gKyAg
ICBjYXNlIE1PRElGWV9NRU1PUlk6DQo+Pj4+ICAgICAgICB7DQo+Pj4+IC0gICAgICAgIHN0cnVj
dCB2cGNpX2JhciAqYmFyID0gJmhlYWRlci0+YmFyc1tpXTsNCj4+Pj4gLSAgICAgICAgc3RydWN0
IHJhbmdlc2V0ICptZW0gPSB2LT52cGNpLmJhcl9tZW1baV07DQo+Pj4+IC0gICAgICAgIHN0cnVj
dCBtYXBfZGF0YSBkYXRhID0gew0KPj4+PiAtICAgICAgICAgICAgLmQgPSB2LT5kb21haW4sDQo+
Pj4+IC0gICAgICAgICAgICAubWFwID0gdi0+dnBjaS5jbWQgJiBQQ0lfQ09NTUFORF9NRU1PUlks
DQo+Pj4+IC0gICAgICAgICAgICAuYmFyID0gYmFyLA0KPj4+PiAtICAgICAgICB9Ow0KPj4+PiAt
ICAgICAgICBpbnQgcmM7DQo+Pj4+ICsgICAgICAgIGNvbnN0IHN0cnVjdCBwY2lfZGV2ICpwZGV2
ID0gdi0+dnBjaS5tZW1vcnkucGRldjsNCj4+Pj4gKyAgICAgICAgc3RydWN0IHZwY2lfaGVhZGVy
ICpoZWFkZXIgPSBOVUxMOw0KPj4+PiArICAgICAgICB1bnNpZ25lZCBpbnQgaTsNCj4+Pj4gICAg
DQo+Pj4+IC0gICAgICAgIGlmICggcmFuZ2VzZXRfaXNfZW1wdHkobWVtKSApDQo+Pj4+IC0gICAg
ICAgICAgICBjb250aW51ZTsNCj4+Pj4gKyAgICAgICAgaWYgKCAhcGRldiApDQo+Pj4+ICsgICAg
ICAgICAgICBicmVhazsNCj4+Pj4gICAgDQo+Pj4+IC0gICAgICAgIHJjID0gcmFuZ2VzZXRfY29u
c3VtZV9yYW5nZXMobWVtLCBtYXBfcmFuZ2UsICZkYXRhKTsNCj4+Pj4gKyAgICAgICAgcmVhZF9s
b2NrKCZ2LT5kb21haW4tPnBjaV9sb2NrKTsNCj4+Pj4gICAgDQo+Pj4+IC0gICAgICAgIGlmICgg
cmMgPT0gLUVSRVNUQVJUICkNCj4+Pj4gKyAgICAgICAgaWYgKCAhcGRldi0+dnBjaSB8fCAodi0+
ZG9tYWluICE9IHBkZXYtPmRvbWFpbikgKQ0KPj4+PiAgICAgICAgICAgIHsNCj4+Pj4gKyAgICAg
ICAgICAgIHYtPnZwY2kubWVtb3J5LnBkZXYgPSBOVUxMOw0KPj4+PiAgICAgICAgICAgICAgICBy
ZWFkX3VubG9jaygmdi0+ZG9tYWluLT5wY2lfbG9jayk7DQo+Pj4+IC0gICAgICAgICAgICByZXR1
cm4gdHJ1ZTsNCj4+Pj4gKyAgICAgICAgICAgIGJyZWFrOw0KPj4+PiAgICAgICAgICAgIH0NCj4+
Pj4gICAgDQo+Pj4+IC0gICAgICAgIGlmICggcmMgKQ0KPj4+PiArICAgICAgICBoZWFkZXIgPSAm
cGRldi0+dnBjaS0+aGVhZGVyOw0KPj4+PiArICAgICAgICBmb3IgKCBpID0gMDsgaSA8IEFSUkFZ
X1NJWkUoaGVhZGVyLT5iYXJzKTsgaSsrICkNCj4+Pj4gICAgICAgICAgICB7DQo+Pj4+IC0gICAg
ICAgICAgICBzcGluX2xvY2soJnBkZXYtPnZwY2ktPmxvY2spOw0KPj4+PiAtICAgICAgICAgICAg
LyogRGlzYWJsZSBtZW1vcnkgZGVjb2RpbmcgdW5jb25kaXRpb25hbGx5IG9uIGZhaWx1cmUuICov
DQo+Pj4+IC0gICAgICAgICAgICBtb2RpZnlfZGVjb2RpbmcocGRldiwgdi0+dnBjaS5jbWQgJiB+
UENJX0NPTU1BTkRfTUVNT1JZLA0KPj4+PiAtICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZh
bHNlKTsNCj4+Pj4gLSAgICAgICAgICAgIHNwaW5fdW5sb2NrKCZwZGV2LT52cGNpLT5sb2NrKTsN
Cj4+Pj4gKyAgICAgICAgICAgIHN0cnVjdCB2cGNpX2JhciAqYmFyID0gJmhlYWRlci0+YmFyc1tp
XTsNCj4+Pj4gKyAgICAgICAgICAgIHN0cnVjdCByYW5nZXNldCAqbWVtID0gdi0+dnBjaS5iYXJf
bWVtW2ldOw0KPj4+PiArICAgICAgICAgICAgc3RydWN0IG1hcF9kYXRhIGRhdGEgPSB7DQo+Pj4+
ICsgICAgICAgICAgICAgICAgLmQgPSB2LT5kb21haW4sDQo+Pj4+ICsgICAgICAgICAgICAgICAg
Lm1hcCA9IHYtPnZwY2kubWVtb3J5LmNtZCAmIFBDSV9DT01NQU5EX01FTU9SWSwNCj4+Pj4gKyAg
ICAgICAgICAgICAgICAuYmFyID0gYmFyLA0KPj4+PiArICAgICAgICAgICAgfTsNCj4+Pj4gKyAg
ICAgICAgICAgIGludCByYzsNCj4+Pj4gKw0KPj4+PiArICAgICAgICAgICAgaWYgKCByYW5nZXNl
dF9pc19lbXB0eShtZW0pICkNCj4+Pj4gKyAgICAgICAgICAgICAgICBjb250aW51ZTsNCj4+Pj4g
ICAgDQo+Pj4+IC0gICAgICAgICAgICAvKiBDbGVhbiBhbGwgdGhlIHJhbmdlc2V0cyAqLw0KPj4+
PiAtICAgICAgICAgICAgZm9yICggaSA9IDA7IGkgPCBBUlJBWV9TSVpFKGhlYWRlci0+YmFycyk7
IGkrKyApDQo+Pj4+IC0gICAgICAgICAgICAgICAgaWYgKCAhcmFuZ2VzZXRfaXNfZW1wdHkodi0+
dnBjaS5iYXJfbWVtW2ldKSApDQo+Pj4+IC0gICAgICAgICAgICAgICAgICAgICByYW5nZXNldF9w
dXJnZSh2LT52cGNpLmJhcl9tZW1baV0pOw0KPj4+PiArICAgICAgICAgICAgcmMgPSByYW5nZXNl
dF9jb25zdW1lX3JhbmdlcyhtZW0sIG1hcF9yYW5nZSwgJmRhdGEpOw0KPj4+PiAgICANCj4+Pj4g
LSAgICAgICAgICAgIHYtPnZwY2kucGRldiA9IE5VTEw7DQo+Pj4+ICsgICAgICAgICAgICBpZiAo
IHJjID09IC1FUkVTVEFSVCApDQo+Pj4+ICsgICAgICAgICAgICB7DQo+Pj4+ICsgICAgICAgICAg
ICAgICAgcmVhZF91bmxvY2soJnYtPmRvbWFpbi0+cGNpX2xvY2spOw0KPj4+PiArICAgICAgICAg
ICAgICAgIHJldHVybiB0cnVlOw0KPj4+PiArICAgICAgICAgICAgfQ0KPj4+PiAgICANCj4+Pj4g
LSAgICAgICAgICAgIHJlYWRfdW5sb2NrKCZ2LT5kb21haW4tPnBjaV9sb2NrKTsNCj4+Pj4gKyAg
ICAgICAgICAgIGlmICggcmMgKQ0KPj4+PiArICAgICAgICAgICAgew0KPj4+PiArICAgICAgICAg
ICAgICAgIHNwaW5fbG9jaygmcGRldi0+dnBjaS0+bG9jayk7DQo+Pj4+ICsgICAgICAgICAgICAg
ICAgLyogRGlzYWJsZSBtZW1vcnkgZGVjb2RpbmcgdW5jb25kaXRpb25hbGx5IG9uIGZhaWx1cmUu
ICovDQo+Pj4+ICsgICAgICAgICAgICAgICAgbW9kaWZ5X2RlY29kaW5nKHBkZXYsIHYtPnZwY2ku
bWVtb3J5LmNtZCAmIH5QQ0lfQ09NTUFORF9NRU1PUlksDQo+Pj4+ICsgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGZhbHNlKTsNCj4+Pj4gKyAgICAgICAgICAgICAgICBzcGluX3VubG9j
aygmcGRldi0+dnBjaS0+bG9jayk7DQo+Pj4+ICsNCj4+Pj4gKyAgICAgICAgICAgICAgICAvKiBD
bGVhbiBhbGwgdGhlIHJhbmdlc2V0cyAqLw0KPj4+PiArICAgICAgICAgICAgICAgIGZvciAoIGkg
PSAwOyBpIDwgQVJSQVlfU0laRShoZWFkZXItPmJhcnMpOyBpKysgKQ0KPj4+PiArICAgICAgICAg
ICAgICAgICAgICBpZiAoICFyYW5nZXNldF9pc19lbXB0eSh2LT52cGNpLmJhcl9tZW1baV0pICkN
Cj4+Pj4gKyAgICAgICAgICAgICAgICAgICAgICAgIHJhbmdlc2V0X3B1cmdlKHYtPnZwY2kuYmFy
X21lbVtpXSk7DQo+Pj4+ICsNCj4+Pj4gKyAgICAgICAgICAgICAgICB2LT52cGNpLm1lbW9yeS5w
ZGV2ID0gTlVMTDsNCj4+Pj4gKw0KPj4+PiArICAgICAgICAgICAgICAgIHJlYWRfdW5sb2NrKCZ2
LT5kb21haW4tPnBjaV9sb2NrKTsNCj4+Pj4gICAgDQo+Pj4+IC0gICAgICAgICAgICBpZiAoICFp
c19oYXJkd2FyZV9kb21haW4odi0+ZG9tYWluKSApDQo+Pj4+IC0gICAgICAgICAgICAgICAgZG9t
YWluX2NyYXNoKHYtPmRvbWFpbik7DQo+Pj4+ICsgICAgICAgICAgICAgICAgaWYgKCAhaXNfaGFy
ZHdhcmVfZG9tYWluKHYtPmRvbWFpbikgKQ0KPj4+PiArICAgICAgICAgICAgICAgICAgICBkb21h
aW5fY3Jhc2godi0+ZG9tYWluKTsNCj4+Pj4gICAgDQo+Pj4+IC0gICAgICAgICAgICByZXR1cm4g
ZmFsc2U7DQo+Pj4+ICsgICAgICAgICAgICAgICAgYnJlYWs7DQo+Pj4+ICsgICAgICAgICAgICB9
DQo+Pj4+ICAgICAgICAgICAgfQ0KPj4+PiAtICAgIH0NCj4+Pj4gLSAgICB2LT52cGNpLnBkZXYg
PSBOVUxMOw0KPj4+PiArICAgICAgICB2LT52cGNpLm1lbW9yeS5wZGV2ID0gTlVMTDsNCj4+Pj4g
ICAgDQo+Pj4+IC0gICAgc3Bpbl9sb2NrKCZwZGV2LT52cGNpLT5sb2NrKTsNCj4+Pj4gLSAgICBt
b2RpZnlfZGVjb2RpbmcocGRldiwgdi0+dnBjaS5jbWQsIHYtPnZwY2kucm9tX29ubHkpOw0KPj4+
PiAtICAgIHNwaW5fdW5sb2NrKCZwZGV2LT52cGNpLT5sb2NrKTsNCj4+Pj4gKyAgICAgICAgc3Bp
bl9sb2NrKCZwZGV2LT52cGNpLT5sb2NrKTsNCj4+Pj4gKyAgICAgICAgbW9kaWZ5X2RlY29kaW5n
KHBkZXYsIHYtPnZwY2kubWVtb3J5LmNtZCwgdi0+dnBjaS5tZW1vcnkucm9tX29ubHkpOw0KPj4+
PiArICAgICAgICBzcGluX3VubG9jaygmcGRldi0+dnBjaS0+bG9jayk7DQo+Pj4+ICAgIA0KPj4+
PiAtICAgIHJlYWRfdW5sb2NrKCZ2LT5kb21haW4tPnBjaV9sb2NrKTsNCj4+Pj4gKyAgICAgICAg
cmVhZF91bmxvY2soJnYtPmRvbWFpbi0+cGNpX2xvY2spOw0KPj4+PiArDQo+Pj4+ICsgICAgICAg
IGJyZWFrOw0KPj4+PiArICAgIH0NCj4+Pj4gKyAgICBjYXNlIFdBSVQ6DQo+Pj4+ICsgICAgICAg
IGlmICggTk9XKCkgPCB2LT52cGNpLndhaXQuZW5kICkNCj4+Pj4gKyAgICAgICAgICAgIHJldHVy
biB0cnVlOw0KPj4+PiArICAgICAgICB2LT52cGNpLndhaXQuY2FsbGJhY2sodi0+dnBjaS53YWl0
LmRhdGEpOw0KPj4+PiArICAgICAgICBicmVhazsNCj4+Pg0KPj4+IEFzIGp1c3QgaW5kaWNhdGVk
IGluIHJlcGx5IHRvIHBhdGNoIDYsIGJ1c3kgd2FpdGluZyBpc24ndCByZWFsbHkgYWNjZXB0YWJs
ZS4NCj4+PiBUaGlzIGlzIGV2ZW4gbW9yZSBzbyB3aGVuIHRoZSB3YWl0aW5nIGV4Y2VlZHMgdGhl
IHR5cGljYWwgbGVuZ3RoIG9mIGENCj4+PiBzY2hlZHVsaW5nIHRpbWVzbGljZS4NCj4+Pg0KPj4+
IEluIHRoYXQgb3RoZXIgcmVwbHkgSSBzYWlkIHRvIHB1dCB0aGUgdkNQVSB0byBzbGVlcCwgYnV0
IHlvdSBuZWVkIHRvIGJlIGNhcmVmdWwNCj4+PiB0aGVyZSB0b286IFRoZSBkb21haW4gbWF5IG5v
dCBleHBlY3QgaXRzIHZDUFUgdG8gbm90IG1ha2UgYW55IHByb2dyZXNzIGZvciBzdWNoDQo+Pj4g
YW4gZXh0ZW5kZWQgcGVyaW9kIG9mIHRpbWUuIFRoaXMgbWF5IG5lZWQgZG9pbmcgZW50aXJlbHkg
ZGlmZmVyZW50bHk6IE9uY2UgdGhlDQo+Pj4gY29tbWFuZCByZWdpc3RlciB3YXMgd3JpdHRlbiwg
eW91IG1heSB3YW50IHRvIHJlY29yZCB0aGUgdGltZSBhZnRlciB3aGljaA0KPj4+IGFjY2Vzc2Vz
IHRvIHRoZSBWRiByZWdpc3RlcnMgYXJlIHBlcm1pdHRlZC4gRWFybGllciBhY2Nlc3NlcyB3b3Vs
ZCBzaW1wbHkgYmUNCj4+PiB0ZXJtaW5hdGVkLiBZb3UgbWF5IHN0aWxsIGFkZGl0aW9uYWxseSBu
ZWVkIGEgdGltZXIsIGluIG9yZGVyIHRvIGtpY2sgb2ZmIEJBUg0KPj4+IG1hcHBpbmcgYWZ0ZXIg
dGhhdCB0aW1lLiAoWWV0IGJldHRlciB3b3VsZCAgYmUgaWYgdGhlIEJBUiBtYXBwaW5nIGNvdWxk
IGJlDQo+Pj4gZG9uZSBkdXJpbmcgdGhvc2UgMTAwbXMuIEFmdGVyIGFsbCB0aGF0IG1heSBiZSBh
IHJlYXNvbiB3aHkgdGhpcyBsb25nIGEgZGVsYXkNCj4+PiBpcyBzcGVjaWZpZWQ6IEZpcm13YXJl
IG9uIHRoZSBkZXZpY2UgbWF5IGFsc28gcmVxdWlyZSBzb21lIHRpbWUgdG8gc2V0IHVwIHRoZQ0K
Pj4+IEJBUnMgYWNjb3JkaW5nbHkuKQ0KPj4NCj4+IEkgYW0gbm90IHN1cmUgaXQgd291bGQgd29y
ayB0aGF0IHdheS4gSWYgd2UgbG9vayBhdCBob3cgbGludXgNCj4+IGluaXRpYWxpemVkIHNyaW92
LCBpdCB3cml0ZXMgVkZFIGFuZCBNU0UgYml0cywgd2FpdHMgMTAwbXMgYW5kIHRoZW4NCj4+IGV4
cGVjdHMgVkZzIHRvIGJlIG9wZXJhdGlvbmFsLiBJZiB0aGV5IGFyZSBub3Qgb3BlcmF0aW9uYWwg
YXQgdGhhdA0KPj4gbW9tZW50LCB0aGVuIGl0IGNvbnNpZGVycyB0aGUgb3BlcmF0aW9uIGZhaWxl
ZCBhbmQgcmVtb3ZlcyBhbGwgVkZzLiBJZg0KPj4gd2UgYWxzbyB3YWl0IDEwMG1zIGJlZm9yZSBl
bmFibGluZyBhY2Nlc3MsIHRoZSBwcm9iYWJpbGl0eSBvZiBhIGd1ZXN0DQo+PiB0cnlpbmcgdG8g
YWNjZXNzIHNvbWV0aGluZyBiZWZvcmUgd2UgYWxsb3cgaXQgd291bGQgYmUgdmVyeSBoaWdoLg0K
PiANCj4gV2VsbCwgbm90IHJlYWxseS4gT3VyIGNvdW50aW5nIG9mIHRoZSAxMDBtcyBuZWNlc3Nh
cmlseSBzdGFydHMgYmVmb3JlIERvbTAncy4NCj4gRnVydGhlcm1vcmUgaXQgbWF5IGJlIGFjY2Vw
dGFibGUgKG9yIGV2ZW4gYXBwcm9wcmlhdGUpIHRvIHN0YWxsIHByZW1hdHVyZQ0KPiBhY2Nlc3Nl
cyAoYmVjYXVzZSB0aGV5IHNob3VsZG4ndCBvY2N1ciBpbiB0aGUgZmlyc3QgcGxhY2UpLCBieSBi
bG9ja2luZyB0aGUNCj4gdkNQVSBhdCB0aGF0IHBvaW50LiBBIG1pZGRsZSByb3V0ZSBtYXkgYmUg
cG9zc2libGU6IFRlcm1pbmF0ZSBhY2Nlc3NlcyBpbiwNCj4gc2F5LCB0aGUgZmlyc3QgOTBtcywg
YW5kIHN0YWxsIHRoZSB2Q1BVIGZvciBhbnkgYWNjZXNzIHBhc3QgdGhhdCwgYnV0IGJlZm9yZQ0K
PiB0aGUgMTAwbXMgZXhwaXJlZC4NCj4gDQoNCklzIHRoZXJlIGFueSByZWFsIGJlbmVmaXQgdG8g
ZG9pbmcgYWxsIHRoaXMgd29yayBpbnN0ZWFkIG9mIGp1c3Qgd2FpdGluZyANCmZvciBEb20wIHRv
IHJlZ2lzdGVyIHRoZSBGVnM/IEltcGxlbWVudGluZyBpdCB0aGUgd2F5IHlvdSBkZXNjcmliZWQg
DQp3b3VsZCByZXF1aXJlIGEgcmVsYXRpdmVseSBjb21wbGV4IHN0YXRlIG1hY2hpbmUgYW5kIHR3
byB0aW1lcnMgcGVyIA0Kc3Jpb3YtY2FwYWJsZSBkZXZpY2UuIEFuZCB3aWxsIGFsc28gcHJvYmFi
bHkgcmVxdWlyZSBzb21lIGhhY2tzIHRvIA0KaGFuZGxlIHBhcnRpYWxseSBpbml0aWFsaXplZCBW
RnMgaW4gWGVuLiBUaGlzIGFkZHMgYSBsb3Qgb2Ygd29yayBhbmQgDQptYW55IHBvc3NpYmxlIGJ1
Z3MgZm9yIG5vdCBhIGxvdCBvZiBiZW5lZml0IGluIG15IG9waW5pb24uDQoNCi0tIA0KTXlreXRh


From xen-devel-bounces@lists.xenproject.org Wed Apr 01 14:11:59 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 01 Apr 2026 14:11:59 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1270379.1559056 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1w7wIT-0006eW-Mp; Wed, 01 Apr 2026 14:11:53 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1270379.1559056; Wed, 01 Apr 2026 14:11: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 1w7wIT-0006eP-JW; Wed, 01 Apr 2026 14:11:53 +0000
Received: by outflank-mailman (input) for mailman id 1270379;
 Wed, 01 Apr 2026 14:11:53 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <jbeulich@suse.com>) id 1w7wIS-0006eJ-PH
 for xen-devel@lists.xenproject.org; Wed, 01 Apr 2026 14:11:52 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1w7wIS-005ki7-1I
 for xen-devel@lists.xenproject.org; Wed, 01 Apr 2026 16:11:52 +0200
Received: from [10.42.69.10] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <jbeulich@suse.com>)
 id 69cd2797-5cb7-0a2a0a5109dd-0a2a450a961e-40
 for <xen-devel@lists.xenproject.org>; Wed, 01 Apr 2026 16:11:51 +0200
Received: from [209.85.221.52] (helo=mail-wr1-f52.google.com)
 by tlsNG-4011c0.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.0)
 (envelope-from <jbeulich@suse.com>)
 id 69cd27a7-ee98-0a2a450a0019-d155dd34ad6f-3
 for <xen-devel@lists.xenproject.org>; Wed, 01 Apr 2026 16:11:51 +0200
Received: by mail-wr1-f52.google.com with SMTP id
 ffacd0b85a97d-43cfd832155so2174582f8f.1
 for <xen-devel@lists.xenproject.org>; Wed, 01 Apr 2026 07:11:51 -0700 (PDT)
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-43d1e4d2738sm101692f8f.24.2026.04.01.07.11.49
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Wed, 01 Apr 2026 07:11:49 -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=google header.d=suse.com header.i="@suse.com" header.h="Content-Transfer-Encoding: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=1775052711; x=1775657511; darn=lists.xenproject.org;
        h=content-transfer-encoding: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;
        bh=Q3lWGWqEq4HaQ9kSwZTMIzIH7MdC2UvMjfZou9rdJlo=;
        b=cpSjOc9gan8Vm8lQe7YPNzIbtnYqgTG/cYaY/EIc73touPvCT7lfVVK8wUOclChH1h
         m3jrSjAQ/qRuAH74HYY3FFJpkyOsN4Wwr8CbsSrHQIzQfZXw36iST7u2S7k7Z1br1WbS
         I8n/8L28v//VI3TolWYsoqn3TRdxRNjLrkhT+kpr24Z6Qr94T0wId9/Kdo/VSYJuDvcR
         jjL+tDW/KT5WCIacjLa74I4sA/AtNVw6JEfdtQ6CvHwQoDxSxs6VvCJTrX3dP3jiNwYb
         uxtKrYNLExGq9mjj4gu7E9XhtLeSlGjjlB/x/iKp08vl+A23+geQGKWy1NQMZsM+ZDYL
         QANA==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20251104; t=1775052711; x=1775657511;
        h=content-transfer-encoding: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;
        bh=Q3lWGWqEq4HaQ9kSwZTMIzIH7MdC2UvMjfZou9rdJlo=;
        b=YCOX3AYDm0rTfevceG0hHoCkccexMuYx3Y3aWiTZ6c0LRInMtDZAxcFXHEE8g0N9Ph
         odFIV3QSpYNusZt5bCr/IA9q0Ynz3F6WlzB9oZKM1ya90PjUWl6f4d3cFWQboEb7DJrX
         j67Il14otCEoLJyRo1ZYdOnk5YLchQ52euIMOWTNRLOcW8oLkalJVe3QfCF1n7MYpjeW
         fnDiXwwaSGsvvWNdfu5oe48GFX0HNkc1ySlz5rXpcrNNlS0a3c9KxVfY6Lj93+P/KOsS
         e3JPy0e+XvO1CdfB1ZwygIANna2QWljIhreMD68E8cKfhj+YtPlF9blJL9/Bqqu0bicZ
         6ngQ==
X-Forwarded-Encrypted: i=1; AJvYcCXSdujHDL/nI84eBnQYDpviHqP8dlz/NLp8jhVRM5+M9SZcy65OqbLPVFi4cAzMjlprhe8n2qRVR9M=@lists.xenproject.org
X-Gm-Message-State: AOJu0YziMJ1xO8wVbL8tzg+2Rwulfvrl2/bmENwUqZawD83YDPuKmZ3a
	n6htvKxmb1XzEIi4u5rL/d7JHKT3yvIOkjxnaJcYb6N4GO3b6A1M2PfyCkD9klMMDw==
X-Gm-Gg: ATEYQzzm/G4cOVLmKcS58XYKyCXpRQXsxkVhjgsyRRyFd227ZY2pptEkaX5ztN+gSA8
	4oQDchEZGv0V3k2Fun/a30SkjeQrbNjC7LE7uJ8PTowcMTg4rnRF4Jh1tldkfo5svZXSzKVxABV
	Pse7K6zUxRSJ68XGYEQoKNRyBZxaaWY/ZhRhPUA6OT/d+f2cQZrAHPIpOGHBIYyzxD2VqS8OPun
	Or/7zkwjGrDiHjLj8ETHHBcjrUFT38D2uWAlALEGtFdh16qqxYefrGyMata3nC5Gl4kzqsOidpn
	/Njox7GDjHiFZ/514AZOifFEh+iwieDRN/CdpLsj3ljc05s+srqZjQ9yBs4laEW/n/ZgjmB6EHM
	IOSbXgPDkgwMSUzQwMtlT6mOwGNVmlR+J6+Oi2RpGdHflFUDye1oMGVbOxkL5hJfJrqEIx327Y7
	vq8TQNand3AVqpEs7JYzd7MdwmTLo+8O/wfmoIUhEcZtEV9L0hAimZiUSTyomDcT1aBk7gjP1Rp
	Oeji9bJEj1JbHE=
X-Received: by 2002:a05:6000:26cb:b0:439:c040:cc8a with SMTP id ffacd0b85a97d-43d150b81c3mr6948512f8f.32.1775052709759;
        Wed, 01 Apr 2026 07:11:49 -0700 (PDT)
Message-ID: <7505a281-b481-4f3a-a7df-d8c234f28279@suse.com>
Date: Wed, 1 Apr 2026 16:11:47 +0200
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH v1 06/27] xen/riscv: implement make_cpus_node()
To: Oleksii Kurochko <oleksii.kurochko@gmail.com>
Cc: Romain Caritey <Romain.Caritey@microchip.com>,
 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.pau@citrix.com>,
 Stefano Stabellini <sstabellini@kernel.org>, xen-devel@lists.xenproject.org
References: <cover.1773157782.git.oleksii.kurochko@gmail.com>
 <fd64b8526a23e9d7775b9b48c5a933b0673c4fba.1773157782.git.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: <fd64b8526a23e9d7775b9b48c5a933b0673c4fba.1773157782.git.oleksii.kurochko@gmail.com>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 7bit
X-purgate-ID: tlsNG-4011c0/1775052711-0F1480B1-44076064/0/0
X-purgate-type: clean
X-purgate-size: 4503

On 10.03.2026 18:08, Oleksii Kurochko wrote:
> --- a/xen/arch/riscv/Makefile
> +++ b/xen/arch/riscv/Makefile
> @@ -1,6 +1,7 @@
>  obj-y += aplic.o
>  obj-y += cpufeature.o
>  obj-y += domain.o
> +obj-y += domain-build.o
>  obj-$(CONFIG_EARLY_PRINTK) += early_printk.o
>  obj-y += entry.o
>  obj-y += guestcopy.o

Doesn't this belong in patch 02? And then domain-build.init.o?

> --- a/xen/arch/riscv/domain-build.c
> +++ b/xen/arch/riscv/domain-build.c
> @@ -3,8 +3,10 @@
>  #include <xen/fdt-domain-build.h>
>  #include <xen/fdt-kernel.h>
>  #include <xen/init.h>
> +#include <xen/libfdt/libfdt.h>
>  #include <xen/sched.h>
>  
> +#include <asm/cpufeature.h>
>  #include <asm/current.h>
>  #include <asm/guest_access.h>
>  
> @@ -44,3 +46,109 @@ int __init construct_domain(struct domain *d, struct kernel_info *kinfo)
>  
>      return 0;
>  }
> +
> +int __init make_cpus_node(const struct domain *d, void *fdt)
> +{
> +    int res;
> +    const struct dt_device_node *cpus = dt_find_node_by_path("/cpus");
> +    unsigned int cpu;
> +    u32 timebase_frequency;

uint32_t please.

> +    bool frequency_valid;
> +    uint32_t *next_phandle = &((struct domain *)d)->arch.next_phandle;

No casting away of const, please.

> +    dt_dprintk("Create cpus node\n");
> +
> +    if ( !cpus )
> +    {
> +        dprintk(XENLOG_ERR, "Missing /cpus node in the device tree?\n");
> +        return -ENOENT;
> +    }
> +
> +    frequency_valid = dt_property_read_u32(cpus, "timebase-frequency",
> +                                           &timebase_frequency);
> +
> +    res = fdt_begin_node(fdt, "cpus");
> +    if ( res )
> +        return res;
> +
> +    res = fdt_property_cell(fdt, "#address-cells", 1);
> +    if ( res )
> +        return res;
> +
> +    res = fdt_property_cell(fdt, "#size-cells", 0);
> +    if ( res )
> +        return res;
> +
> +    if ( frequency_valid )
> +        res = fdt_property_cell(fdt, "timebase-frequency", timebase_frequency);

Handing through a property directly makes me wonder how that's going to
fit with migration. I understand migration may not even be a mid-term
goal, but still.

> +    for ( cpu = 0; cpu < d->max_vcpus; cpu++ )
> +    {
> +        char buf[64];
> +        uint32_t reg = cpu_to_fdt32(cpu);
> +
> +        snprintf(buf, sizeof(buf), "cpu@%u", cpu);
> +        res = fdt_begin_node(fdt, buf);
> +        if ( res )
> +            return res;
> +
> +        res = fdt_property(fdt, "reg", &reg, sizeof(reg));
> +        if ( res )
> +            return res;
> +
> +        res = fdt_property_string(fdt, "status", "okay");
> +        if ( res )
> +            return res;
> +
> +        res = fdt_property_string(fdt, "compatible", "riscv");
> +        if ( res )
> +            return res;
> +
> +        BUILD_BUG_ON((sizeof("riscv,") + sizeof_field(struct gstage_mode_desc, name) + 1) >= sizeof(buf));

Nit: Overlong line. Also, why +1? The name field has to include a nul, or
else ...

> +        snprintf(buf, sizeof(buf), "riscv,%s", max_gstage_mode->name);

... you can't use plain %s here.

> +        res = fdt_property_string(fdt, "mmu-type", buf);
> +        if ( res )
> +            return res;
> +
> +        res = fdt_property_string(fdt, "riscv,isa", guest_isa_str);
> +        if ( res )
> +            return res;
> +
> +        res = fdt_property_string(fdt, "device_type", "cpu");
> +        if ( res )
> +            return res;
> +
> +        res = fdt_begin_node(fdt, "interrupt-controller");
> +        if ( res )
> +            return res;
> +
> +        res = fdt_property_string(fdt, "compatible", "riscv,cpu-intc");
> +        if ( res )
> +            return res;
> +
> +        res = fdt_property_cell(fdt, "#interrupt-cells", 1);
> +        if ( res )
> +            return res;
> +
> +        res = fdt_property(fdt, "interrupt-controller", NULL, 0);
> +        if ( res )
> +            return res;
> +
> +        res = fdt_property_u32(fdt, "phandle", (*next_phandle)++);
> +        if ( res )
> +            return res;
> +
> +        /* end of interrupt-controller */
> +        res = fdt_end_node(fdt);
> +        if ( res )
> +            return res;
> +
> +        res = fdt_end_node(fdt);
> +        if ( res )
> +            return res;
> +    }
> +
> +    res = fdt_end_node(fdt);
> +
> +    return res;

Simply "return fdt_end_node(fdt);"?

Jan


From xen-devel-bounces@lists.xenproject.org Wed Apr 01 14:14:49 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 01 Apr 2026 14:14:49 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1270389.1559065 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1w7wLI-0007Ba-2t; Wed, 01 Apr 2026 14:14:48 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1270389.1559065; Wed, 01 Apr 2026 14:14: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 1w7wLI-0007BT-03; Wed, 01 Apr 2026 14:14:48 +0000
Received: by outflank-mailman (input) for mailman id 1270389;
 Wed, 01 Apr 2026 14:14:46 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <jbeulich@suse.com>) id 1w7wLG-0007BN-O1
 for xen-devel@lists.xenproject.org; Wed, 01 Apr 2026 14:14:46 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1w7wLF-00Bn3l-Ov
 for xen-devel@lists.xenproject.org; Wed, 01 Apr 2026 16:14:45 +0200
Received: from [10.42.69.12] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <jbeulich@suse.com>)
 id 69cd284f-e002-0a2a0a5209dd-0a2a450c9d80-20
 for <xen-devel@lists.xenproject.org>; Wed, 01 Apr 2026 16:14:45 +0200
Received: from [209.85.221.45] (helo=mail-wr1-f45.google.com)
 by tlsNG-d25034.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.0)
 (envelope-from <jbeulich@suse.com>)
 id 69cd2855-f40c-0a2a450c0019-d155dd2dbd07-3
 for <xen-devel@lists.xenproject.org>; Wed, 01 Apr 2026 16:14:45 +0200
Received: by mail-wr1-f45.google.com with SMTP id
 ffacd0b85a97d-43cfd96354aso2226729f8f.1
 for <xen-devel@lists.xenproject.org>; Wed, 01 Apr 2026 07:14:45 -0700 (PDT)
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-43d1e2a7223sm189136f8f.5.2026.04.01.07.14.44
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Wed, 01 Apr 2026 07:14:44 -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=google header.d=suse.com header.i="@suse.com" header.h="Content-Transfer-Encoding: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=1775052885; x=1775657685; darn=lists.xenproject.org;
        h=content-transfer-encoding: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;
        bh=hL/cATlmDI+H92KCyzPoZzMYt2GziKP7L0ibyB0fKAE=;
        b=AgW1rP6p5Vg4ocDC3a2M5ucoRJ37n5NtQjmoTyaawsGkxcSuJ2xtsxV84JIBhmu/ow
         4mMElM60jz6ktVsxEVdVaeqFotU/WlugKx/XHd/pKEntChy8bCNcGWJQy2onzF5vdnql
         vM06zk052YFln3egLVWW8sqUsYXbX9kR37eH+K34c1OjIT0Kg4X87gt2b120cnZy3hGf
         cc4Wpmaz/8WdqQqmMgwQ6AlO6aYqL0w62HS6thu7t8VJAMUFU2EAko8pzoj4gilDkayS
         3dCCu+81GnLpCuwVTDLG2WzG6toUWjQDw9fi6u+ACZc3Jzb7RlsO8+LTkamAenUxV7bK
         6Sig==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20251104; t=1775052885; x=1775657685;
        h=content-transfer-encoding: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;
        bh=hL/cATlmDI+H92KCyzPoZzMYt2GziKP7L0ibyB0fKAE=;
        b=VJPeaJ1j28KEM8300ASF+1S8XAkUYuYbpbL5FbjV5VNbsy7S4wHydU/fCBz2PvVU6K
         8/uhEIxGbOiKYYxCNMdbYBqQ+5Cysf6x9qqsAssuGMo2ImcCLXV4eRS8kORtQlsdQPAi
         AosXS8zfEKG3WxCuYf3tasVewjG360hkVQHpBjwXGDg0gj4XJEN4oe8BOtewaazFO1Lc
         3ae/REflKHQ8fQP3wGrbgFaX4ExH9B1Ltnl/sHzdXtj5qpzAOn86/dtUzFJ7tsnKraQt
         Y1XrS0ROFyq/KrJSEOykn0hsLHBITvpYv9Mp2Ck6zrbhMlsIxtPau2m/bUHKsEXhbn2h
         0BcA==
X-Forwarded-Encrypted: i=1; AJvYcCXidl/QhQfUhiGFM6J/cQSlQOjwdLSuG+jNZsFwMEhClVP47ZrPNHdt/lely4TcfY8qWVQTkWA6W+8=@lists.xenproject.org
X-Gm-Message-State: AOJu0YxJn9rqalaCQiPRXcLNsbkwOcigwzhzXWBifOU+5gleRBCk2kMq
	qUOvq2/WeQ75c+0EL0y1TSe4Y5ir3CTSnmUSFEneYMVeQvlYfDiGvf6QloD5tVfFNQ==
X-Gm-Gg: ATEYQzylyrmvM+/Ofp8yOATtqdRRWCCOZFCrkqYvNuaJu6SICrzV7KMMpEsKPzGQ5jo
	wypv0mCX8ZgSZJEY7IcYoXV1bYHoHAb1qjg3dw/7ftxTrzJRuPadcl6PHEBJTFtTV02UcMEq5m9
	mKmUgwE4UjVx4sYeNZ6Y/JIA6VqiPAnZEhB8YIfg90S4AVF2+mtpeHaAm6+SBIXtdpPzxIKy2T+
	FHKNdyaWqvR9MycWMmzYwSWSTx50IyiKKqun3RRk7DgBsR1AkMi/dUpVfB3+UsZeAov0M8kB0xx
	1HQUK0Rb5yBt8dRagqOV6udO42/amjUXTcATSI9oPOE7Olc2+SLHxYDWvDymSLyyOkN2DO94m6b
	IznIAdp8y2EVEjt6w65hjnkEuPfwSqE0fUI98wnPrga+i2VJOo/3pfttFYCfFPzNNgeeQy+Qcbi
	ZYEbcL8ckY0QzGxGhDbwNR6sYekJHAM0b0RKAbXeNxF0LT4cgp51Cy45iDwBbRDmualgOOjoagM
	0VRC+1P6X15BWs=
X-Received: by 2002:a05:6000:1445:b0:43c:f969:2e1 with SMTP id ffacd0b85a97d-43d15094489mr7559208f8f.6.1775052884969;
        Wed, 01 Apr 2026 07:14:44 -0700 (PDT)
Message-ID: <8856a1d8-51f7-40ee-9def-570af5c6d42f@suse.com>
Date: Wed, 1 Apr 2026 16:14:43 +0200
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH v2 4/8] vpci: add a wait operation to the vpci vcpu
 pending actions
To: Mykyta Poturai <Mykyta_Poturai@epam.com>
Cc: =?UTF-8?Q?Roger_Pau_Monn=C3=A9?= <roger.pau@citrix.com>,
 Stewart Hildebrand <stewart.hildebrand@amd.com>,
 "xen-devel@lists.xenproject.org" <xen-devel@lists.xenproject.org>
References: <cover.1772806036.git.mykyta_poturai@epam.com>
 <ec941fbf4f8bde23fc3867e47f5ada028f8003aa.1772806036.git.mykyta_poturai@epam.com>
 <f546ae19-2107-469e-847b-7a4cde2c95fd@suse.com>
 <0275be7d-d1d9-47ee-bec2-bfbbb90b4bae@epam.com>
 <46f4a4c5-cc44-47d7-8d6d-03ddaa75bb7f@suse.com>
 <13714c88-838b-4dc7-bc0b-b6ca590fd944@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: <13714c88-838b-4dc7-bc0b-b6ca590fd944@epam.com>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 7bit
X-purgate-ID: tlsNG-d25034/1775052885-A4DBDA3D-365E61DC/0/0
X-purgate-type: clean
X-purgate-size: 8059

On 01.04.2026 16:07, Mykyta Poturai wrote:
> On 4/1/26 11:21, Jan Beulich wrote:
>> On 01.04.2026 09:59, Mykyta Poturai wrote:
>>> On 3/31/26 17:55, Jan Beulich wrote:
>>>> On 09.03.2026 12:08, Mykyta Poturai wrote:
>>>>> --- a/xen/drivers/vpci/header.c
>>>>> +++ b/xen/drivers/vpci/header.c
>>>>> @@ -175,76 +175,92 @@ static void modify_decoding(const struct pci_dev *pdev, uint16_t cmd,
>>>>>    
>>>>>    bool vpci_process_pending(struct vcpu *v)
>>>>>    {
>>>>> -    const struct pci_dev *pdev = v->vpci.pdev;
>>>>> -    struct vpci_header *header = NULL;
>>>>> -    unsigned int i;
>>>>> -
>>>>> -    if ( !pdev )
>>>>> -        return false;
>>>>> -
>>>>> -    read_lock(&v->domain->pci_lock);
>>>>> -
>>>>> -    if ( !pdev->vpci || (v->domain != pdev->domain) )
>>>>> +    switch ( v->vpci.task )
>>>>>        {
>>>>> -        v->vpci.pdev = NULL;
>>>>> -        read_unlock(&v->domain->pci_lock);
>>>>> -        return false;
>>>>> -    }
>>>>> -
>>>>> -    header = &pdev->vpci->header;
>>>>> -    for ( i = 0; i < ARRAY_SIZE(header->bars); i++ )
>>>>> +    case MODIFY_MEMORY:
>>>>>        {
>>>>> -        struct vpci_bar *bar = &header->bars[i];
>>>>> -        struct rangeset *mem = v->vpci.bar_mem[i];
>>>>> -        struct map_data data = {
>>>>> -            .d = v->domain,
>>>>> -            .map = v->vpci.cmd & PCI_COMMAND_MEMORY,
>>>>> -            .bar = bar,
>>>>> -        };
>>>>> -        int rc;
>>>>> +        const struct pci_dev *pdev = v->vpci.memory.pdev;
>>>>> +        struct vpci_header *header = NULL;
>>>>> +        unsigned int i;
>>>>>    
>>>>> -        if ( rangeset_is_empty(mem) )
>>>>> -            continue;
>>>>> +        if ( !pdev )
>>>>> +            break;
>>>>>    
>>>>> -        rc = rangeset_consume_ranges(mem, map_range, &data);
>>>>> +        read_lock(&v->domain->pci_lock);
>>>>>    
>>>>> -        if ( rc == -ERESTART )
>>>>> +        if ( !pdev->vpci || (v->domain != pdev->domain) )
>>>>>            {
>>>>> +            v->vpci.memory.pdev = NULL;
>>>>>                read_unlock(&v->domain->pci_lock);
>>>>> -            return true;
>>>>> +            break;
>>>>>            }
>>>>>    
>>>>> -        if ( rc )
>>>>> +        header = &pdev->vpci->header;
>>>>> +        for ( i = 0; i < ARRAY_SIZE(header->bars); i++ )
>>>>>            {
>>>>> -            spin_lock(&pdev->vpci->lock);
>>>>> -            /* Disable memory decoding unconditionally on failure. */
>>>>> -            modify_decoding(pdev, v->vpci.cmd & ~PCI_COMMAND_MEMORY,
>>>>> -                            false);
>>>>> -            spin_unlock(&pdev->vpci->lock);
>>>>> +            struct vpci_bar *bar = &header->bars[i];
>>>>> +            struct rangeset *mem = v->vpci.bar_mem[i];
>>>>> +            struct map_data data = {
>>>>> +                .d = v->domain,
>>>>> +                .map = v->vpci.memory.cmd & PCI_COMMAND_MEMORY,
>>>>> +                .bar = bar,
>>>>> +            };
>>>>> +            int rc;
>>>>> +
>>>>> +            if ( rangeset_is_empty(mem) )
>>>>> +                continue;
>>>>>    
>>>>> -            /* Clean all the rangesets */
>>>>> -            for ( i = 0; i < ARRAY_SIZE(header->bars); i++ )
>>>>> -                if ( !rangeset_is_empty(v->vpci.bar_mem[i]) )
>>>>> -                     rangeset_purge(v->vpci.bar_mem[i]);
>>>>> +            rc = rangeset_consume_ranges(mem, map_range, &data);
>>>>>    
>>>>> -            v->vpci.pdev = NULL;
>>>>> +            if ( rc == -ERESTART )
>>>>> +            {
>>>>> +                read_unlock(&v->domain->pci_lock);
>>>>> +                return true;
>>>>> +            }
>>>>>    
>>>>> -            read_unlock(&v->domain->pci_lock);
>>>>> +            if ( rc )
>>>>> +            {
>>>>> +                spin_lock(&pdev->vpci->lock);
>>>>> +                /* Disable memory decoding unconditionally on failure. */
>>>>> +                modify_decoding(pdev, v->vpci.memory.cmd & ~PCI_COMMAND_MEMORY,
>>>>> +                                false);
>>>>> +                spin_unlock(&pdev->vpci->lock);
>>>>> +
>>>>> +                /* Clean all the rangesets */
>>>>> +                for ( i = 0; i < ARRAY_SIZE(header->bars); i++ )
>>>>> +                    if ( !rangeset_is_empty(v->vpci.bar_mem[i]) )
>>>>> +                        rangeset_purge(v->vpci.bar_mem[i]);
>>>>> +
>>>>> +                v->vpci.memory.pdev = NULL;
>>>>> +
>>>>> +                read_unlock(&v->domain->pci_lock);
>>>>>    
>>>>> -            if ( !is_hardware_domain(v->domain) )
>>>>> -                domain_crash(v->domain);
>>>>> +                if ( !is_hardware_domain(v->domain) )
>>>>> +                    domain_crash(v->domain);
>>>>>    
>>>>> -            return false;
>>>>> +                break;
>>>>> +            }
>>>>>            }
>>>>> -    }
>>>>> -    v->vpci.pdev = NULL;
>>>>> +        v->vpci.memory.pdev = NULL;
>>>>>    
>>>>> -    spin_lock(&pdev->vpci->lock);
>>>>> -    modify_decoding(pdev, v->vpci.cmd, v->vpci.rom_only);
>>>>> -    spin_unlock(&pdev->vpci->lock);
>>>>> +        spin_lock(&pdev->vpci->lock);
>>>>> +        modify_decoding(pdev, v->vpci.memory.cmd, v->vpci.memory.rom_only);
>>>>> +        spin_unlock(&pdev->vpci->lock);
>>>>>    
>>>>> -    read_unlock(&v->domain->pci_lock);
>>>>> +        read_unlock(&v->domain->pci_lock);
>>>>> +
>>>>> +        break;
>>>>> +    }
>>>>> +    case WAIT:
>>>>> +        if ( NOW() < v->vpci.wait.end )
>>>>> +            return true;
>>>>> +        v->vpci.wait.callback(v->vpci.wait.data);
>>>>> +        break;
>>>>
>>>> As just indicated in reply to patch 6, busy waiting isn't really acceptable.
>>>> This is even more so when the waiting exceeds the typical length of a
>>>> scheduling timeslice.
>>>>
>>>> In that other reply I said to put the vCPU to sleep, but you need to be careful
>>>> there too: The domain may not expect its vCPU to not make any progress for such
>>>> an extended period of time. This may need doing entirely differently: Once the
>>>> command register was written, you may want to record the time after which
>>>> accesses to the VF registers are permitted. Earlier accesses would simply be
>>>> terminated. You may still additionally need a timer, in order to kick off BAR
>>>> mapping after that time. (Yet better would  be if the BAR mapping could be
>>>> done during those 100ms. After all that may be a reason why this long a delay
>>>> is specified: Firmware on the device may also require some time to set up the
>>>> BARs accordingly.)
>>>
>>> I am not sure it would work that way. If we look at how linux
>>> initialized sriov, it writes VFE and MSE bits, waits 100ms and then
>>> expects VFs to be operational. If they are not operational at that
>>> moment, then it considers the operation failed and removes all VFs. If
>>> we also wait 100ms before enabling access, the probability of a guest
>>> trying to access something before we allow it would be very high.
>>
>> Well, not really. Our counting of the 100ms necessarily starts before Dom0's.
>> Furthermore it may be acceptable (or even appropriate) to stall premature
>> accesses (because they shouldn't occur in the first place), by blocking the
>> vCPU at that point. A middle route may be possible: Terminate accesses in,
>> say, the first 90ms, and stall the vCPU for any access past that, but before
>> the 100ms expired.
> 
> Is there any real benefit to doing all this work instead of just waiting 
> for Dom0 to register the FVs? Implementing it the way you described 
> would require a relatively complex state machine and two timers per 
> sriov-capable device. And will also probably require some hacks to 
> handle partially initialized VFs in Xen. This adds a lot of work and 
> many possible bugs for not a lot of benefit in my opinion.

Odd that you ask me this question. If there was no benefit, why did you do
it this way?

Jan


From xen-devel-bounces@lists.xenproject.org Wed Apr 01 14:22:30 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 01 Apr 2026 14:22:30 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1270402.1559076 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1w7wSe-0000dP-RV; Wed, 01 Apr 2026 14:22:24 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1270402.1559076; Wed, 01 Apr 2026 14:22: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 1w7wSe-0000dI-NF; Wed, 01 Apr 2026 14:22:24 +0000
Received: by outflank-mailman (input) for mailman id 1270402;
 Wed, 01 Apr 2026 14:22:23 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <jbeulich@suse.com>) id 1w7wSc-0000dC-Tb
 for xen-devel@lists.xenproject.org; Wed, 01 Apr 2026 14:22:23 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1w7wSc-005mml-97
 for xen-devel@lists.xenproject.org; Wed, 01 Apr 2026 16:22:22 +0200
Received: from [10.42.69.12] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <jbeulich@suse.com>)
 id 69cd2a13-bab6-0a2a0a5309dd-0a2a450c8e80-26
 for <xen-devel@lists.xenproject.org>; Wed, 01 Apr 2026 16:22:22 +0200
Received: from [209.85.128.47] (helo=mail-wm1-f47.google.com)
 by tlsNG-d25034.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.0)
 (envelope-from <jbeulich@suse.com>)
 id 69cd2a1d-f40c-0a2a450c0019-d155802fdc73-3
 for <xen-devel@lists.xenproject.org>; Wed, 01 Apr 2026 16:22:22 +0200
Received: by mail-wm1-f47.google.com with SMTP id
 5b1f17b1804b1-48557c8ad47so55071385e9.0
 for <xen-devel@lists.xenproject.org>; Wed, 01 Apr 2026 07:22:22 -0700 (PDT)
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-4887a630901sm70110215e9.0.2026.04.01.07.22.20
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Wed, 01 Apr 2026 07:22:21 -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=google header.d=suse.com header.i="@suse.com" header.h="Content-Transfer-Encoding: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=1775053341; x=1775658141; darn=lists.xenproject.org;
        h=content-transfer-encoding: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;
        bh=ZGKM4c+KwZfU+nhjGTLnKpBO8o7GVudcQfFbHy16yfs=;
        b=HLYPufP2jqf8QPxGI/5ejXZ1dDHVYH/UzAV4jX9tEmpaTp7duWAascUaTCH25n4YUt
         9DFWv3ucpm/DGWLDcpFL3bmaRasz6NH8uZub9MKnrIWOc6Yz4h1LL2Dj8sCgEMhaUrYO
         cHOLNwa9no3jiBb7b56kKEV0Jf8cteYV/tAriRExgq1nFVEMRpSJ8JzXxaRNG+GV8lg4
         4lkzIeev0sgbMTzhXW/i9HXAfm4uPDJkD5WXXEnvoGSZT67/bxal+VbGsZAxY7H+EnpI
         LPCinJv+T8U7CRCAS4Pw3SVj8u8NSVZjWEjWTxvdqumZIfn6AyPJMd8mOKQ7uyeEYmzR
         TBlw==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20251104; t=1775053341; x=1775658141;
        h=content-transfer-encoding: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;
        bh=ZGKM4c+KwZfU+nhjGTLnKpBO8o7GVudcQfFbHy16yfs=;
        b=TNvgWiidjovwXo1N8ub8wB3+gncGv66qSOIiCN1K/kCld+AB9+99WZ8kgJy33Lqhoj
         zVTP6IpaCPdc0b48bGNP8b1FfrmlO8LAxWgGIdMvT5B0TH5d29Uvh15p6cz0m8TgRuBP
         niMfxJrT06WRH9TPk3t4XJnKO/CM54TAB0Ph8k0FV4tvuLt/lSDptoh6kMaQ91M4VFOe
         hGxRwAdvKBdP3vUPJ1U8EkNP864Xt3vr7cYmTaX4TbKl6E/naodVXB90rDYDh6vUGV+2
         1PFBj5SpVWMFLAquOmBUqz3TcaBxfRwyb14LQsfV0pkNCyXa7ENf9j2UoHybcCtagDQH
         gC+g==
X-Forwarded-Encrypted: i=1; AJvYcCVWwBjzrhUh7MTZPPpTUebQ2dcisFeoswNL40hrRoW9LqTO7txzaWmslUW1yJjep+nsNWJoAo3JNWA=@lists.xenproject.org
X-Gm-Message-State: AOJu0YwpGopdVMEuV+KG2pmOEhPFk+5V62Hv/UJdq955mPl1F1zxgdFz
	jTvOz1APzXehgOkvQyhrUJSp0iE9rNgc4kNd+JI+x43lbITlkZKBRT2UsbIRXO+Wmw==
X-Gm-Gg: ATEYQzy1NcC7A3tXMgxwUCRhBJ4Q8RA+uVJrk42pG4G4366mzLVuX7ZMVJOgSmpTsBL
	+nPmj7Hy7JW5jQaAuIRYn4L6mYXECpYAEg82wuiFdwK0v2U6ILdWTqzGLFLQRWAz8NPRTITJmv1
	NqaPGZjvEj+OLGiXh27Qdy8w1UqXKfBZrCF+uH5L0e+O4sHBTi/we5Q3iAYKaX0T5GkXWwJ9pfF
	pktkKaTSWr8JevbatN/qmRyyHw74y/B0J0tNAb5BCMlVdKzEVW3kMY5Wj7dB1nW44+jqD7YvLmt
	6kELIBiF4XK69XxssJaHsevUxTERFoCKhsxk5FDH3q3II+2c0H/BfRRtbZ3KMMNYwkBjVU18Ii0
	t9wyNcWKs4xJbHaIxTjR/yb1WhWx/uiz0PTkc9DVcuYuu7HgYqnVVrEExy/Vu76/1tTZoVdFgKy
	+lzCkEG7MjYls/wcoBH9I+F8VvLlKr2086jPtEk9nc7878j4+at4MJ2xDKW+vTb4V8e42+1yR8A
	pNbrV5VPTlFj0A=
X-Received: by 2002:a05:600c:8b62:b0:487:338:b4df with SMTP id 5b1f17b1804b1-488835903abmr64709315e9.15.1775053341482;
        Wed, 01 Apr 2026 07:22:21 -0700 (PDT)
Message-ID: <ffd3a7cd-8c47-4a9b-864a-26a053b5b7d2@suse.com>
Date: Wed, 1 Apr 2026 16:22:19 +0200
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH v2 10/11] xen/riscv: add definition of guest RAM banks
To: Oleksii Kurochko <oleksii.kurochko@gmail.com>
Cc: Romain Caritey <Romain.Caritey@microchip.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.pau@citrix.com>,
 Stefano Stabellini <sstabellini@kernel.org>, xen-devel@lists.xenproject.org
References: <cover.1774281309.git.oleksii.kurochko@gmail.com>
 <8278256f3d270b456d19cb9891b89b88a46548a5.1774281309.git.oleksii.kurochko@gmail.com>
 <1a3a316e-f0ea-4514-95d6-9813d6d5ca76@suse.com>
 <691be850-9145-4bbf-a897-d10a0193b730@gmail.com>
 <dfd2a666-f3a5-4d88-b034-438f8fbb85ba@suse.com>
 <2bae9e12-8f71-4ff0-b077-bfb4215e5e14@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: <2bae9e12-8f71-4ff0-b077-bfb4215e5e14@gmail.com>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 7bit
X-purgate-ID: tlsNG-d25034/1775053342-83D43A3D-04901D80/0/0
X-purgate-type: clean
X-purgate-size: 3244

On 01.04.2026 15:57, Oleksii Kurochko wrote:
> On 4/1/26 8:17 AM, Jan Beulich wrote:
>> On 31.03.2026 18:14, Oleksii Kurochko wrote:
>>> On 3/30/26 5:51 PM, Jan Beulich wrote:
>>>> On 23.03.2026 17:29, Oleksii Kurochko wrote:
>>>>> The dom0less solution uses defined RAM banks as compile-time constants,
>>>>> so introduce macros to describe guest RAM banks.
>>>>>
>>>>> The reason for 2 banks is that there is typically always a use case for
>>>>> low memory under 4 GB, but the bank under 4 GB ends up being small because
>>>>> there are other things under 4 GB it can conflict with (interrupt
>>>>> controller, PCI BARs, etc.).
>>>> Fixed layouts like the one you suggest come with (potentially severe)
>>>> downsides. For example, what if more than 2Gb of MMIO space are needed
>>>> for non-64-bit BARs?
>>> It looks where usually RAM on RISC-V boards start, so I expect that 2gb
>>> before RAM start is enough for MMIO space.
>> Likely in the common case. Board designers aren't constrained by this,
>> though (aiui). Whereas you set in stone a single, fixed layout.
>>
>> Arm maintainers - since a similar fixed layout is used there iirc,
>> could you chime in here, please?
>>
>>> Answering your question it will be an issue or it will also use some
>>> space before banks, no?
>> I fear I don't understand what you're trying to tell me.
> 
> I meant that there is also some space between banks and pretty big which 
> could be used for MMIO which could be used for non-64-bit BARs.

I don't follow: Bank 0 extends to 4G. There's no space above it, below
bank 1, which could be use for non-64-bit BARs.

>>> Further, assuming that the space 4G...8G is what
>>>> you expect 64-bit BARs to be put into, what if there's a device with a
>>>> 4G BAR? It'll eat up that entire space, requiring everything else to
>>>> fit in the 2G you reserve below 4G.
>>> I assume that such big devices could use high memory without any issue.
>> Well, I could go (almost) arbitrarily low with individual BAR size,
>> merely increasing the number of BARs accordingly. Assuming 2G BARs are
>> 64-bit capable is likely fine. Maybe the same is true for 1G and 512M
>> ones as well. Yet a some size the assumption will break.
>>
>> IMO RAM layout wants establishing dynamically based on the MMIO needs
>> of a guest.
> 
> I have this in my TODO.
> 
> But with the current implementation of dom0less it requires to have RAM 
> banks defined in compile time.

Oh well.

> Can we process with the current suggested way with the following update 
> of dom0less code to work with dynamically allocated RAM layout?

If you want me to ack such, the limitations will need clearly calling out
as such (and why it needs doing like this). Further the public interface
wants leaving as tidy as possible, as removing stuff from there is
usually not a straightforward thing to do. Ideally, no part of this would
be encoded into the public headers, if at all possible.

You also may recall that I have reservations towards this work targeting
dom0less alone. Yet that's likely okay(ish) as long as this is the mutual
understanding of interested parties (and again clearly expressed in
relevant places).

Jan


From xen-devel-bounces@lists.xenproject.org Wed Apr 01 14:24:48 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 01 Apr 2026 14:24:48 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1270415.1559084 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1w7wUx-0001EQ-98; Wed, 01 Apr 2026 14:24:47 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1270415.1559084; Wed, 01 Apr 2026 14: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 1w7wUx-0001EJ-6R; Wed, 01 Apr 2026 14:24:47 +0000
Received: by outflank-mailman (input) for mailman id 1270415;
 Wed, 01 Apr 2026 14:24:45 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92) id 1w7wUv-0001ED-5I
 for xen-devel@lists.xenproject.org; Wed, 01 Apr 2026 14:24:45 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1w7wUu-00Bp8z-HS
 for xen-devel@lists.xenproject.org; Wed, 01 Apr 2026 16:24:44 +0200
Received: from [10.42.69.11] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <jbeulich@suse.com>)
 id 69cd2a94-e002-0a2a0a5209dd-0a2a450ba24a-30
 for <xen-devel@lists.xenproject.org>; Wed, 01 Apr 2026 16:24:44 +0200
Received: from [209.85.221.50] (helo=mail-wr1-f50.google.com)
 by tlsNG-42698a.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.0)
 (envelope-from <jbeulich@suse.com>)
 id 69cd2aac-bca8-0a2a450b0019-d155dd32ccd1-3
 for <xen-devel@lists.xenproject.org>; Wed, 01 Apr 2026 16:24:44 +0200
Received: by mail-wr1-f50.google.com with SMTP id
 ffacd0b85a97d-43cf8d550bdso3152583f8f.0
 for <xen-devel@lists.xenproject.org>; Wed, 01 Apr 2026 07:24:44 -0700 (PDT)
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-43d1e2c54bdsm233579f8f.16.2026.04.01.07.24.43
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Wed, 01 Apr 2026 07:24:43 -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=google header.d=suse.com header.i="@suse.com" header.h="Content-Transfer-Encoding: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=1775053484; x=1775658284; darn=lists.xenproject.org;
        h=content-transfer-encoding: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;
        bh=yUalkfJ034szqMpKtkJPlIOwZfmbJbERNlSYVLJC8hE=;
        b=QRGtW0o9ru2fcrPpz1Kd/z68gA9xViTEjDmmlcedKitmuKkNf/QDkYnoTttWG5Uolo
         hjhmQ1kdr9rCqIE6WmUBsMrySfUY5qZGJ/x50tGRb9YBi4qYdySTAhutKAxNEVV7bFik
         +fUEclwCbUVKDdybcwHSRnu7XI3mQssH78ttccViMpPQgV/4UEDQeU/obGQ16BeN9aNS
         R37KTDkiFnF+UsSztHhZtApYRwO1em5SUECrbVU7ehBC1F8UJ8NsqDMgtRymST8pWUbZ
         UzN5ZgfPboG0cLswIwgW9EvEI+hMS+ULD27jxrCPfLb+P4xZ7nOb2yfkgPNGock5T/TE
         uREg==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20251104; t=1775053484; x=1775658284;
        h=content-transfer-encoding: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;
        bh=yUalkfJ034szqMpKtkJPlIOwZfmbJbERNlSYVLJC8hE=;
        b=d/sjBdzfqIArz7ThtBEi8yMzQZBL7GyThutSHYMzOK7OZ9bRzKJUw28DDQ2ppRWNEE
         jBEilrkqivwq8P1wunfNo7QOKD843YJTH5Ayze6M7uTPMpkbNh5F/1I37LJlTZgeZWCj
         UbY8FNpoGSzmJLFAagbhcEH2BOpCL5O2r3orTER9H5Ey9twbhHdaAHMS6T6XIS2jjmiS
         o+I+tqT2BKY41HA/NJKn3xEaN9qWqp4R2sjEQsv83UxcXHl2J5zaiLJP3BvC9vWanLIa
         BYX/q7EKacf41TC2ikY0lSikagyLzb+i6wSZ3k2VTMyl8CDX9h0dnO8/AXGQoYCxWLJp
         5UrA==
X-Forwarded-Encrypted: i=1; AJvYcCVz1+8AL9C2TCSh85zakk06V/pi1N9DlmYyNvSJyLwgC7Brl/RTCFTaDylO61x+9y4TOFKmek2bNTs=@lists.xenproject.org
X-Gm-Message-State: AOJu0Yx8F09IpEDr5i2YtOSYN2aQSMXBV7Q9CYCg5fD5KaEXPo67Q5lY
	IpVdccFmeDFakQwld21XhIkRKPD9oNyffW2BOOIgQeYeTcBDMQvAPk+6sPZIRDjKHQ==
X-Gm-Gg: ATEYQzzjj81aeSXC1mScm5P1CqH4pG1ttDFCAlI2JgoAbh3/ZgcX9rxvkrwSCV0x85y
	o2uupcxjeKtqWmQGZZb5PdotaWNCOq+QCrhexnd+tpzvdBoI9jEuuTLlbrOwxTfxBlYSeuZ5bUO
	QC/+pYLXy3wlvi7Zzc20IxY3AUeOjL2JfuthRNfsTTTkgujJ7nc3BT7u5NY5I9cwnifJeOJi1IS
	OTkLp/xMwT8D3yln6XC8jtn/Gv8DVAb5yOUdh9+Gpad9keKvBw5gXXd/OI+NWbPUhCofInDdc1R
	071AbqlrtZQExs34RoQwIykmXhrlKp0xlKR8653s1SYnFztC/a8n+E0gFrClxboC7++Szz4bqJE
	b/pJqCRJyjOzwzlxmDpZbI8/Qdo3ridHwhACIfgtNG3B8OZ04HiCD2NLfXASEZsfTBgB638fuVg
	Tg82DKqJ2XW/kGRWYKD37XyO9yb+q7S4r2NpyVFMFjNx+ZxSOlrgqtjYy5BfrO0oDs0HU2lJhlq
	F8oTFKmQ46FqbcqY+t7zw4ijQ==
X-Received: by 2002:a05:6000:1843:b0:43c:f40f:ca56 with SMTP id ffacd0b85a97d-43d150bbb79mr7747864f8f.30.1775053483756;
        Wed, 01 Apr 2026 07:24:43 -0700 (PDT)
Message-ID: <7a491f02-e9bf-4eae-8962-cc2ecd264d96@suse.com>
Date: Wed, 1 Apr 2026 16:24:41 +0200
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH v1 07/27] xen/riscv: implement make_timer_node()
To: Oleksii Kurochko <oleksii.kurochko@gmail.com>
Cc: Romain Caritey <Romain.Caritey@microchip.com>,
 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.pau@citrix.com>,
 Stefano Stabellini <sstabellini@kernel.org>, xen-devel@lists.xenproject.org
References: <cover.1773157782.git.oleksii.kurochko@gmail.com>
 <f1b759f4fa43f3a01ede0f99f21c3ac59b61f438.1773157782.git.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: <f1b759f4fa43f3a01ede0f99f21c3ac59b61f438.1773157782.git.oleksii.kurochko@gmail.com>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 7bit
X-purgate-ID: tlsNG-42698a/1775053484-EC75A2A1-6C84F1FE/10/73395122804
X-purgate-type: spam
X-purgate-size: 460

On 10.03.2026 18:08, Oleksii Kurochko wrote:
> The make_timer_node() function is implemented to return 0,
> as RISC-V does not require the creation of a timer node.
> 
> Signed-off-by: Oleksii Kurochko <oleksii.kurochko@gmail.com>

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

Yet: Why is this needed then in the first place? If this node may not
be required, why would the function need providing? Shouldn't the call
site be conditional then?

Jan


From xen-devel-bounces@lists.xenproject.org Wed Apr 01 14:28:20 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 01 Apr 2026 14:28:20 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1270428.1559093 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1w7wYF-00029b-Nc; Wed, 01 Apr 2026 14:28:11 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1270428.1559093; Wed, 01 Apr 2026 14:28: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 1w7wYF-00029U-L0; Wed, 01 Apr 2026 14:28:11 +0000
Received: by outflank-mailman (input) for mailman id 1270428;
 Wed, 01 Apr 2026 14:28:10 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <Oleksii_Moisieiev@epam.com>) id 1w7wYE-00029O-FU
 for xen-devel@lists.xenproject.org; Wed, 01 Apr 2026 14:28:10 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1w7wYD-00CPVh-MQ
 for xen-devel@lists.xenproject.org; Wed, 01 Apr 2026 16:28:09 +0200
Received: from [10.42.69.11] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <Oleksii_Moisieiev@epam.com>)
 id 69cd2b71-e002-0a2a0a5209dd-0a2a450bc16c-38
 for <xen-devel@lists.xenproject.org>; Wed, 01 Apr 2026 16:28:09 +0200
Received: from [52.101.65.117]
 (helo=DU2PR03CU002.outbound.protection.outlook.com)
 by tlsNG-42698a.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.0)
 (envelope-from <Oleksii_Moisieiev@epam.com>)
 id 69cd2b79-bca8-0a2a450b0019-34654175e14e-3
 for <xen-devel@lists.xenproject.org>; Wed, 01 Apr 2026 16:28:09 +0200
Received: from DU5PR03MB10263.eurprd03.prod.outlook.com (2603:10a6:10:519::5)
 by GV2PR03MB11232.eurprd03.prod.outlook.com (2603:10a6:150:339::13)
 with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9769.17; Wed, 1 Apr
 2026 14:28:06 +0000
Received: from DU5PR03MB10263.eurprd03.prod.outlook.com
 ([fe80::8c9e:b301:61c0:3908]) by DU5PR03MB10263.eurprd03.prod.outlook.com
 ([fe80::8c9e:b301:61c0:3908%5]) with mapi id 15.20.9769.016; Wed, 1 Apr 2026
 14: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=SGZII860j5HIUIFx4gQ4GPf9aufrjsLS/07WLcXPYSVIrMX9CAYZQiOIbOxVThFALXjgkWCHlMIUEDEiSQgxGlrDq1Oz2JYmmA//jT7SD5dcZRsMYTSJK2YJ/Zn62j5/1mnCX5l0A04c5Zhf09nLVZSfiorxaJkwhyYs+NBq1flOwPYQUJitnOtmNEybOtaiachDG2eQsR2xpw5K1MUBZXkeKr91p1a0IY4NJQSLjBfBynx1arXndvB/WGJs7CV2RvhwDCstqOEM92r/TMTTfgSI+7LAIuknmBac/+r73CJ66Pm0bzfuCrvh3IXM3pBhLp+0ofKsUZbYE5VWZDhkrw==
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com;
 s=arcselector10001;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1;
 bh=CgbJuHA5HN2i1flL7FQga9x02Z4hCI+ZYnIiHNes5ME=;
 b=d76THy8jctl4dyAa2w7rb2Vwk3bcDj9lX42mvJgQLJz7I1lvnpVS4gw4LlCrWd4q+xUWZKEGTDhvMpmSOPdjs05jZ9OoggBEgs4zXSWpJx91oZ5o2DX8Ap0H3hZ19vVgLlJZAH5+zJDl+ER9TLXJeAbL7pnN9u7CsJ4DTP2qZiQgyGQ5b+vtxJkLHmO0ZbCxq0F2cG5+dgWrBTPLkZIM9UxTXa7eYs2HL1WijaGaMT4VP8mNb7JqRuCfB+rbBsGxUmnF4IXjbtFNPrepee8NOmiJ3jq8K9P26RmRu30DmiutGh+vWWikRtwNpKwX1m125Tz5Y/f5gtwrWyy5bVU3BA==
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=CgbJuHA5HN2i1flL7FQga9x02Z4hCI+ZYnIiHNes5ME=;
 b=H8ArWHeVLS8s1YaQY5hHsAyUK2f8i2Rak3to2E0b2wkxXdiiLJGkcs+z8xUagZIH9dfMvihL6XQgXdl2QWiRedmKlusFrdAusHwpeo0178RjR25y7n3igXLtK99jcbRCXN2p6S+sABLMoDrxYuocREIm7+gJDdFhkIJhaOLHI6swCT+2GYs3KmJwq8TOlt8AB2ocMRp3RLjoIFoYY1a7ehK3wtYpN2Boa2+HWnBxA6lib1x1cQfW2PSo8dF2U7POsAYv0KQP78OwNoZpTjQUk+k0xa/lFl/dVTTJLPEiTQO5TL9RGgC1kr3n18zrytpe8EHdBVgriS+8PoE3Vs+I4w==
From: Oleksii Moisieiev <Oleksii_Moisieiev@epam.com>
To: "xen-devel@lists.xenproject.org" <xen-devel@lists.xenproject.org>
CC: Dario Faggioli <dfaggioli@suse.com>, George Dunlap <gwd@xenproject.org>,
	Juergen Gross <jgross@suse.com>, Meng Xu <mengxu@cis.upenn.edu>, Oleksii
 Moisieiev <Oleksii_Moisieiev@epam.com>
Subject: [PATCH] xen/sched: rtds: re-arm repl_timer after timer
 re-initialization
Thread-Topic: [PATCH] xen/sched: rtds: re-arm repl_timer after timer
 re-initialization
Thread-Index: AQHcwePBLaUu3jy8fkmEFBxQMvITig==
Date: Wed, 1 Apr 2026 14:28:06 +0000
Message-ID:
 <fcb3a80f93ab16b880ed31e82bc61180f3586efd.1775053454.git.oleksii_moisieiev@epam.com>
Accept-Language: en-US
Content-Language: en-US
X-MS-Has-Attach:
X-MS-TNEF-Correlator:
authentication-results: dkim=none (message not signed)
 header.d=none;dmarc=none action=none header.from=epam.com;
x-ms-publictraffictype: Email
x-ms-traffictypediagnostic: DU5PR03MB10263:EE_|GV2PR03MB11232:EE_
x-ms-office365-filtering-correlation-id: cf858959-ed6d-4e58-84d9-08de8ffae43a
x-ms-exchange-senderadcheck: 1
x-ms-exchange-antispam-relay: 0
x-microsoft-antispam:
 BCL:0;ARA:13230040|376014|1800799024|366016|38070700021|56012099003|18002099003;
x-microsoft-antispam-message-info:
 ruJRvrSXsRObNXQSt7ULQlqNcOJFIvLw0NT8vs5QxVytQwXZPAaE/4kKPRNKQewa5FJB7jlfDBakIJ7PxsEtUD1My+c/N3JMtJCwQVHeJGC4GecTLnd/X6qA4D7ECgdL0RsMkbVom1OrptYzMmD5wwauTngKEp+AA/RiKpBvSC2nPLroh+An/ieyoWJ6ltB2u+qD8fdTciHlnY9zGFzHDk6TfkscqETDRfAnJYRK3oiMwq61jAGAI43lVlmA3ZkoslY5rxb2JwUbpN/mp2lt//79lPLny+v0GqIj1+aes0oDo4y+EkKnqFoBzqUlgoerWvokdA+4GdYudWcDjF3S3Ei+lIEVx5f/heI0iVWLmQFU9AKsP4D2FZa+q7DZn//So3+rWR9lY/OEwUXKDlL+sx4qluXT5l1NdfR8GZX7ySKDI1r4Wk1qkQ78Tfk0mlmbpQHNx/Hb1FosZoxtrSF34Y6RJyd920UD2kIoHI6fflSXoghWKdi5e/MY31MXOzoRlY6KizAA6UzZXQYPxoA5SVBBcerDLuqbdFGjFmC2MZACxpg64PpgI3xtnCd9/v6cwZtEb6AHpeg1o8Df36b058m+9S7/gMS8GeZvzfV329z+gRL/7IWvquEOoxsuUl7vDuu0B5M3vId5B/m1REaSHnFhC1M26s/eF5+oJspsajsMZXheIVNQdhI9omnn6Jmc7JuMjYdQ0O6ObpGB2uRwp3AWGz4pZb/WIDv83sez2FgV5AXNC7xtepyKj3PLvRzyDkJD0hPa92sgbTiopqUHDVxWwDxBwmf54Bzs//3DZyE=
x-forefront-antispam-report:
 CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:DU5PR03MB10263.eurprd03.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(376014)(1800799024)(366016)(38070700021)(56012099003)(18002099003);DIR:OUT;SFP:1102;
x-ms-exchange-antispam-messagedata-chunkcount: 1
x-ms-exchange-antispam-messagedata-0:
 =?iso-8859-1?Q?DY0VQ2KEIGahWlgJP8PwtmsqUmPXefJzZZE2g34+FUR+GWeVWZ4Ty2soKU?=
 =?iso-8859-1?Q?dcCoeWxiC0H9KjKPpKLAXHLtI6XY/GtPZCZbdpXAKRzLNBdLKP4IeWBVzK?=
 =?iso-8859-1?Q?sFN7BhTddWkoLZ9wgnd26bs92dYCJlT8xa8wyxCIxPMwSWO1O//GLJXXhy?=
 =?iso-8859-1?Q?H823KTuRcMrl6HONBsjpjpMBOPy6oEQ4i7oSd7EfHz+k+IoppqKZNXHGoq?=
 =?iso-8859-1?Q?0/nJXBVmdoAf5POsUH4S+9ubZ59/A/Ov3o7xe2eQ/joMcNQB/HQvXu11HT?=
 =?iso-8859-1?Q?o9NwW+fLDkEA3Dq91YNtvf5Hpe3kL5qBs7ypzoMg5ONxjF6LWlPt0RIFry?=
 =?iso-8859-1?Q?wObwnPIZNOWxtnDGMBwAhWdaWjPHf3QaD5pzZhj4zJ/GiXsSFenfYDFCSc?=
 =?iso-8859-1?Q?Jic86hxId7myxgjBiGvebR6yDBOjHNU4AUEH0wDdBhXmTIdabqH7alKrkx?=
 =?iso-8859-1?Q?C7KfKFIW2rKHetglHjq8cRmMoxma2h964sh/cAztPzv5qbRylk30F7wVjH?=
 =?iso-8859-1?Q?UvVH4pCaHxrDhqPojIRWBaNsK688y73HAwv1a5wCiDJHCyMvUw1kahPVxA?=
 =?iso-8859-1?Q?yy2AHoF4hFbL/6813otZSxsJUQMPxnclRJMrIIdTKA8uotZ44gRqTkKjDa?=
 =?iso-8859-1?Q?rIKvO8vNn3pXmAkhpZf+7QJpRaiPmfZ8RSZSAeOuNylePejUBjKwmu2GM8?=
 =?iso-8859-1?Q?WWXYFYX074D5I4AdiImmayoo75AbTA26skUN/maodUQwmSNIi4PqyBJ4NW?=
 =?iso-8859-1?Q?f2CfVzoM11WxFmfcEylInfgcwxq12XJQHNw1ehce5OtvAlXN8b+xJPm1EC?=
 =?iso-8859-1?Q?uKF4D0ZSTRWVys19buo3iSvLsEbC2bkOrjc5vk9uN/RXOr2+JkMr095AHE?=
 =?iso-8859-1?Q?zMWlLRH46xwuJv1k2pBOpQ2JKQvNRmxUQQvriXgIIIgBMCoSRkqmTp9xXs?=
 =?iso-8859-1?Q?mCFp8yBUXqeVS7/fR2EOVONIw/zLyfFULdNWh+ioxOK7+KkqNMHhKBNZvG?=
 =?iso-8859-1?Q?PuOIsqAgJae/3QfrPtkN/AGuESX4gV63KyrpbnFbpegq90hx5lKs82hJ4a?=
 =?iso-8859-1?Q?a3Rxo8/cDCrM/wAcGUOIbl3eQ5FbZB1Fjvy2hxeshq3pwkoylqMrIDQ7Pu?=
 =?iso-8859-1?Q?cRrPGB1jm4ZYw3ltN/p7JiE0oc9zjAo7CFt545fGHwV7tMLzdyUgCoRdQe?=
 =?iso-8859-1?Q?QU86EGQhxNLzHKCQJ9rDGus5QoAhXOI+I4kDWj165tx+vwTbvrpzGK0lEd?=
 =?iso-8859-1?Q?DTyucNXVsUztcDBncK9fgAk9FZao9YvOWPHvRU4s41uimwPnwatbSDfVZW?=
 =?iso-8859-1?Q?NzXgHLvB75j6Hk/GzcoPcoHlxmqRCHlIIK/pwYu0IB+a5GR1qSodC9+xsO?=
 =?iso-8859-1?Q?t7ckv08QIks9GFL+av3CuC4z3UB3lFPDkqI8/kF3Qy5R8+7RUCvxxINZSj?=
 =?iso-8859-1?Q?9MzweOU9xbnXNg6EYEHeYvnIqR6HZ6by/JjOX/KQUaivncyUIIL6H1aQ60?=
 =?iso-8859-1?Q?qVVT4l3SnPRag033XLznJ0yGNyFJisFejWKP6fpgSYi1mHXI5gOXmTVl0D?=
 =?iso-8859-1?Q?AesLzYgy+gvjYbDk20wQzJLREzhWWUGPO+v0i08vlStEnSWYFbkY/XtBOI?=
 =?iso-8859-1?Q?LkPcxPZeY69+7rEjPH2XBcn2eEgRKrfBxUXhW3U84XCKyGMULL+VQoVbSC?=
 =?iso-8859-1?Q?4PCa1NkaQAqFRnGFPtER6sZnpgQJtbQvQ6/fbr7T9ak+ZReDnbjHqWdFRZ?=
 =?iso-8859-1?Q?hPYxhsGfWABw4J/EjvKrgbncZ0X1kx7LH8fDuOJKcl9SELr4c3KzdARXRo?=
 =?iso-8859-1?Q?MQ/TlljEAUb46iecjp7Q1JNtRxopMFA=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: DU5PR03MB10263.eurprd03.prod.outlook.com
X-MS-Exchange-CrossTenant-Network-Message-Id: cf858959-ed6d-4e58-84d9-08de8ffae43a
X-MS-Exchange-CrossTenant-originalarrivaltime: 01 Apr 2026 14:28:06.6600
 (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: cxuC2hW5izi2J5UY8NvTU2x9A3AzRiWMYOY1ia4qBqhVxfl07oMSI/M0oCrTD+PIjBN+b84iSkhIzd7FL1X/BX6NPDtL15BsaxyJ9OOHjaw=
X-MS-Exchange-Transport-CrossTenantHeadersStamped: GV2PR03MB11232
X-purgate-ID: tlsNG-42698a/1775053689-F63C62A1-D5278358/0/0
X-purgate-type: clean
X-purgate-size: 1920

In RTDS, removing the last eligible pCPU can kill repl_timer.
When a pCPU is later re-added, rt_switch_sched() reinitializes the
timer object, but pending entries may already exist in replq.

Without re-arming from replq head, replenishment can remain inactive
until some unrelated event programs the timer again. This may stall
budget replenishment for non-extratime units.

Fix this by re-arming repl_timer in rt_switch_sched() immediately after
init_timer() when replq is non-empty, using the earliest pending
deadline.

This keeps behavior unchanged when replq is empty.

Add a lightweight regression script,
test_rtds_repl_timer_rearm.sh, to verify source-level guards and model
the expected re-arm decision logic.
Signed-off-by: Oleksii Moisieiev <oleksii_moisieiev@epam.com>
---

 xen/common/sched/rt.c | 9 +++++++++
 1 file changed, 9 insertions(+)

diff --git a/xen/common/sched/rt.c b/xen/common/sched/rt.c
index 7b1f64a779..59021e1110 100644
--- a/xen/common/sched/rt.c
+++ b/xen/common/sched/rt.c
@@ -741,8 +741,17 @@ rt_switch_sched(struct scheduler *new_ops, unsigned in=
t cpu,
     if ( prv->repl_timer.status =3D=3D TIMER_STATUS_invalid ||
          prv->repl_timer.status =3D=3D TIMER_STATUS_killed )
     {
+        struct list_head *replq =3D rt_replq(new_ops);
+
         init_timer(&prv->repl_timer, repl_timer_handler, (void *)new_ops, =
cpu);
         dprintk(XENLOG_DEBUG, "RTDS: timer initialized on cpu %u\n", cpu);
+
+        /*
+         * When re-adding CPUs after all RTDS CPUs were removed, replq may
+         * already contain pending replenishment events. Re-arm immediatel=
y.
+         */
+        if ( !list_empty(replq) )
+            set_timer(&prv->repl_timer, replq_elem(replq->next)->cur_deadl=
ine);
     }
=20
     sched_idle_unit(cpu)->priv =3D vdata;
--=20
2.43.0

base-commit: a7bf8ff218ca05eb3674fdfd2817f6cff471e96a=


From xen-devel-bounces@lists.xenproject.org Wed Apr 01 14:29:08 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 01 Apr 2026 14:29:08 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1270435.1559102 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1w7wZA-0002bj-0c; Wed, 01 Apr 2026 14:29:08 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1270435.1559102; Wed, 01 Apr 2026 14:29: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 1w7wZ9-0002bc-U9; Wed, 01 Apr 2026 14:29:07 +0000
Received: by outflank-mailman (input) for mailman id 1270435;
 Wed, 01 Apr 2026 14:29:07 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92) id 1w7wZ9-0002bW-5J
 for xen-devel@lists.xenproject.org; Wed, 01 Apr 2026 14:29:07 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1w7wZ8-007BsH-HN
 for xen-devel@lists.xenproject.org; Wed, 01 Apr 2026 16:29:06 +0200
Received: from [10.42.69.9] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <jbeulich@suse.com>)
 id 69cd2ba2-bab6-0a2a0a5309dd-0a2a4509c04e-24
 for <xen-devel@lists.xenproject.org>; Wed, 01 Apr 2026 16:29:06 +0200
Received: from [209.85.128.52] (helo=mail-wm1-f52.google.com)
 by tlsNG-bad1c0.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.0)
 (envelope-from <jbeulich@suse.com>)
 id 69cd2bb2-bf79-0a2a45090019-d1558034ac07-3
 for <xen-devel@lists.xenproject.org>; Wed, 01 Apr 2026 16:29:06 +0200
Received: by mail-wm1-f52.google.com with SMTP id
 5b1f17b1804b1-486fb439299so65391735e9.0
 for <xen-devel@lists.xenproject.org>; Wed, 01 Apr 2026 07:29:06 -0700 (PDT)
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-4888a63c963sm2691885e9.4.2026.04.01.07.29.05
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Wed, 01 Apr 2026 07:29:05 -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=google header.d=suse.com header.i="@suse.com" header.h="Content-Transfer-Encoding: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=1775053746; x=1775658546; darn=lists.xenproject.org;
        h=content-transfer-encoding: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;
        bh=82tjc1sSitgvrDcck9MA2eyCYZsqE3otnzzVKnNlipQ=;
        b=HsNmLl/c9eWM6R8Frq/mpydbi/ZYW+k44YqSIMZ5yT5ZF6T935hcHaVus1SRsUIcMm
         W/t/wFKLFwX8kuLl092dANKWiyJg4IpDC4ZU8hK0o69FYNpJl9qqwQvg+0N5fb+4Lg8E
         rnUB3xja6Gh3xS/iSQzMfWNsynac2xNqwoeVsUILa2yKxRyzxa2OzQtayEOXJN0MLS8Z
         v4IlHLXrI9+y9CtWPrGGl/un9BTEA6HTehAG2lVSWgchghtfS6fMyhhFJGkrCMt8Pcdv
         gWVfHqahuoEozcrAo8rJvu0vvf1nt2xa6IHPwwK5QwbgNF9uCw6NMr4qhzMnc3ccj0IH
         xlBQ==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20251104; t=1775053746; x=1775658546;
        h=content-transfer-encoding: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;
        bh=82tjc1sSitgvrDcck9MA2eyCYZsqE3otnzzVKnNlipQ=;
        b=HHj9qPAkBVSiTKpIJS/W2tiKIlvGtcZBQs4vpG7BWLwwnU/vGcoA0eW1VGChbuxlbO
         5cRSdm0vcYDW1j+2xH5B+NB0Ee9FYsu55aAFg7hGz3Rps7NSGbDP4fMVeUNhUOZf69VB
         NgJb+E+WmzEvSDExPgSWnpAVDlv1tx8A2SLfaj+S+iZXXp5s6464QNTMBsyhwNBqU3hr
         JTsV8fY/eacz7HK6jP6DmeR9y0p9ua2OWqyXBr24/NYzGVUCGXBpJK9wgmcahpoWQN8P
         mjRkUB5LDxnWb79Y51egUmod1BaThiQf9ZAYSYGYaJYv6LbTQIMY14U/BTmF8H2qXg5C
         IOPw==
X-Forwarded-Encrypted: i=1; AJvYcCWNt+iZr7AoCd48DZxUuRHKeEPBlIy3FD+yVB0Mqp/dVMZ8kpjEOWl3Rx4si4R0KquExn+OM9AbyOg=@lists.xenproject.org
X-Gm-Message-State: AOJu0YwCEL+Q+QKfoZsrYg2zKrfXr86x3Pt8ezuAhuX0WDdbGP4EZ6LL
	lhVD0Mn5n6Tjuz32O0FuqJHh83umE88I9ypzTfqtydaZ4AUGILHAKm8c8E3okNoqpA==
X-Gm-Gg: ATEYQzweQBxlyLndINhcEcwzzhggUpTKcEdlaHusF3IhIeMYinrXgIwvJeJtKWIvhi8
	OYVjLOJOeR3ZtmOAUIYE19zxGp4ZHGWQubDcUuSg5GONAOKKGxAJFkKLsRB6Y9z5NMtBOxZh+Pq
	qHbQ+dhCt7hFsvwstSVGoi+Fnl9nRksIIl7Eno2mNKcLl3+hzSy1o69OuNwL+K4NjmupAsFb0Hj
	dsHelkW8FywvdfyIubC4wyXOIccaXzTnqBUgrvibd22mg28KgTmUHFgr/+HhnXMMXakObTbgdmf
	8Fn7o9F6aWMCWhl7I6JVV7cnVFDtKYplbXBVqiDT7LeX3LE1+ixSzSBfFdXIvBaNb0zuy6slmCb
	Ql3LTtkaBDs/4e59+Z3tlyVlXj4I2oNJIwfyeJ1UQ3p/PnwYxJ5kJ7bkE55Q8F0TU8UxVyKMyrj
	zT/40tnbVOGuMK1I25WrKs5gGAhRspC6/CBq1tO/DiBZIuvkXLEtYfSkyeOpwxSc9FWlnM1xtaN
	U8Po8idGDagZFo=
X-Received: by 2002:a05:600c:c04a:b0:486:f9aa:2b57 with SMTP id 5b1f17b1804b1-48883597e39mr46941995e9.16.1775053745810;
        Wed, 01 Apr 2026 07:29:05 -0700 (PDT)
Message-ID: <08732737-e02b-4be8-a49f-fdebc38924a5@suse.com>
Date: Wed, 1 Apr 2026 16:29:03 +0200
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH v1 08/27] xen/riscv: implement make_arch_nodes()
To: Oleksii Kurochko <oleksii.kurochko@gmail.com>
Cc: Romain Caritey <Romain.Caritey@microchip.com>,
 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.pau@citrix.com>,
 Stefano Stabellini <sstabellini@kernel.org>, xen-devel@lists.xenproject.org
References: <cover.1773157782.git.oleksii.kurochko@gmail.com>
 <9c97b4bc6fb8a5e556c38cfe7e34de0eb3cbbbb0.1773157782.git.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: <9c97b4bc6fb8a5e556c38cfe7e34de0eb3cbbbb0.1773157782.git.oleksii.kurochko@gmail.com>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 7bit
X-purgate-ID: tlsNG-bad1c0/1775053746-2FD47152-3D53C688/10/73395122804
X-purgate-type: spam
X-purgate-size: 977

On 10.03.2026 18:08, Oleksii Kurochko wrote:
> No RISC-V-specific nodes need to be created at the moment,
> so make_arch_nodes() is implemented to simply return 0.
> 
> Signed-off-by: Oleksii Kurochko <oleksii.kurochko@gmail.com>

Same question as on the previous patch, albeit to a lesser degree: An
arch hook may plausibly exist (and be called) uniformly, even if on
some arch-es it doesn't do anything.

> ---
>  xen/arch/riscv/Makefile         |  1 +
>  xen/arch/riscv/dom0less-build.c | 11 +++++++++++
>  2 files changed, 12 insertions(+)
>  create mode 100644 xen/arch/riscv/dom0less-build.c

Further, on what basis is this function put in this new file, when the
earlier ones live in domain-build.c?

> --- a/xen/arch/riscv/Makefile
> +++ b/xen/arch/riscv/Makefile
> @@ -1,5 +1,6 @@
>  obj-y += aplic.o
>  obj-y += cpufeature.o
> +obj-y += dom0less-build.o

obj-$(CONFIG_DOM0LESS_BOOT) += dom0less-build.init.o

just like Arm has it?

Jan


From xen-devel-bounces@lists.xenproject.org Wed Apr 01 14:31:58 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 01 Apr 2026 14:31:58 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1270448.1559111 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1w7wbs-00049J-D1; Wed, 01 Apr 2026 14:31:56 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1270448.1559111; Wed, 01 Apr 2026 14:31: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 1w7wbs-00049C-AJ; Wed, 01 Apr 2026 14:31:56 +0000
Received: by outflank-mailman (input) for mailman id 1270448;
 Wed, 01 Apr 2026 14:31:55 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <jbeulich@suse.com>) id 1w7wbr-000496-AW
 for xen-devel@lists.xenproject.org; Wed, 01 Apr 2026 14:31:55 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1w7wbq-001ohe-Ms
 for xen-devel@lists.xenproject.org; Wed, 01 Apr 2026 16:31:54 +0200
Received: from [10.42.69.11] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <jbeulich@suse.com>)
 id 69cd2c53-5cb7-0a2a0a5109dd-0a2a450bb306-28
 for <xen-devel@lists.xenproject.org>; Wed, 01 Apr 2026 16:31:54 +0200
Received: from [209.85.128.52] (helo=mail-wm1-f52.google.com)
 by tlsNG-42698a.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.0)
 (envelope-from <jbeulich@suse.com>)
 id 69cd2c5a-bca8-0a2a450b0019-d1558034cc53-3
 for <xen-devel@lists.xenproject.org>; Wed, 01 Apr 2026 16:31:54 +0200
Received: by mail-wm1-f52.google.com with SMTP id
 5b1f17b1804b1-48540d21f7dso84709755e9.0
 for <xen-devel@lists.xenproject.org>; Wed, 01 Apr 2026 07:31:54 -0700 (PDT)
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-43d1e2a6f1esm293360f8f.2.2026.04.01.07.31.53
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Wed, 01 Apr 2026 07:31:53 -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=google header.d=suse.com header.i="@suse.com" header.h="Content-Transfer-Encoding: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=1775053914; x=1775658714; darn=lists.xenproject.org;
        h=content-transfer-encoding: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;
        bh=o1XKewLK3LBaB9H3KEKckYzFxCDadb3kNKtbvgmDaLs=;
        b=VMGlTpbCGOw2rGtbGL/YHle+P4QuSeXtroR4twXHr8sw4RCpEXw+hXDE1839cU6Key
         qnlCKsHW+iwUPWr0tvoZlZupiEhaRMDYpQO/hl2PNbvPGgiBwRdUu456hImMVVR+uqYg
         OUsaWzgl0ViR66/DK7SWFiSX11Olb/coIZHpBs/45dUWE2OIpK1IC4tQYlPS5xBwwNVb
         sj5LYE/yUtuewPLBOnoAxufhgPDbIm1QwB3PiDa6qj4MnKW10Mg5GTBWNJ4y88Fw+m6C
         8R+4MSMT9tQ8Qkauju8B77yvr8+JTjlHp5kxGW0RLKUZvp7VIj8J2dfLOtdqgtuBIuvC
         xMjA==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20251104; t=1775053914; x=1775658714;
        h=content-transfer-encoding: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;
        bh=o1XKewLK3LBaB9H3KEKckYzFxCDadb3kNKtbvgmDaLs=;
        b=LcZcG1r1BcLMu0BpOLAHHXBEL6Q1KKA8es+DigPCWe8aYOBlBg3wjAeYAcQOPz2tEJ
         cd9MjRfiYlpQcgmrCnXqKGLnSklvqXGYIzfQFbGeI2CFSMZSLNeQjczvCe78iZP58xxL
         yTj55TDBilp3FwmJcD0WmBnkbH1Tts3lrSWqjHAs6VBQcOKSGCxPV6B3VMY+YwvxjGcK
         4rFYTYoudehYVUEDwszhuWCZdlKFpHaAIZUyf5tXxfFuN2uSsY6bXvFS+Jq5Tq/axIDR
         yAmxP0eVREOE8vhqoCLVa/UoFmdV8JrJ5OVZNwhjeEeuYvvc4p7uRGY5Qi6NXc7P+oWD
         Vb/w==
X-Forwarded-Encrypted: i=1; AJvYcCVud7u0AFAIQ9eFzdti2zYTSWoMdYpUTCDJ49cNxyHAPE+XU3tXvbb2GGh1+RtyZxrL5tcTcQe1kOM=@lists.xenproject.org
X-Gm-Message-State: AOJu0Yxc4kUjvXuRzZKjaDsS7FCLJCLfdCd7Q6NRgGCVytsEFLEgJFEc
	CkGv2oF1w91HcUeKWaMVwis8jLn1yCHLVupmv+kttpvapjUE7f21VI4uwR/F0+IxQg==
X-Gm-Gg: ATEYQzxYolUGAExzXWLSh5F1l9M4Y9e9CDtomMwa24u9IC2DGWfzBgJIrdVmNLps4bt
	tB6x92fQgGDx7ZOQBbBJAcz2dutHtrnUWS52lTgi/nHOrfpgf76i5Cfw4OOpYXHZROGMwV8DCs0
	GJd816yljUj+OSyqHurGjheMLBsUk0m8PbrpYbmx9oNbaMgSCx+tPefDRsLUYR5JlvPrSV8L+Bh
	Uti4WPOZBLQrMX25VufpILYeQejeB/CLe2Rjzcympk+IoUTIwj60KMKcNFqpU6LpZUCW8dL7sja
	QNxdONgZNV2bRG7ATRXrssDpC6OFBlam8ugMBUTnGqnYodM8Nqdu2T5rgyS1VpKdBx3Fp+lITWf
	z3eyhHr+5752ckxCykLd83ebbPh01ak9zH7Hrhgms9EpSrbTxAVD5zfK2Sv7bnfmonTYhu5p5lf
	72WeMXN4W8qxZFLnsIPoywQdCmH2ngN5TzLYLcAZPqcTkQe3tLnbL6iL0H7P5VWu45NMxAuaeAw
	GFt6utLlbX5gAIVEN+hUI4CUg==
X-Received: by 2002:a05:600c:c04a:b0:485:3f72:324d with SMTP id 5b1f17b1804b1-4888358b94cmr48552075e9.14.1775053913874;
        Wed, 01 Apr 2026 07:31:53 -0700 (PDT)
Message-ID: <eb89d0de-bf24-47fb-888d-31efffd28a09@suse.com>
Date: Wed, 1 Apr 2026 16:31:52 +0200
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH] xen/sched: rtds: re-arm repl_timer after timer
 re-initialization
To: Oleksii Moisieiev <Oleksii_Moisieiev@epam.com>
Cc: Dario Faggioli <dfaggioli@suse.com>, George Dunlap <gwd@xenproject.org>,
 Juergen Gross <jgross@suse.com>, Meng Xu <mengxu@cis.upenn.edu>,
 "xen-devel@lists.xenproject.org" <xen-devel@lists.xenproject.org>
References: <fcb3a80f93ab16b880ed31e82bc61180f3586efd.1775053454.git.oleksii_moisieiev@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: <fcb3a80f93ab16b880ed31e82bc61180f3586efd.1775053454.git.oleksii_moisieiev@epam.com>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 7bit
X-purgate-ID: tlsNG-42698a/1775053914-17F462A1-59C74028/0/0
X-purgate-type: clean
X-purgate-size: 1102

On 01.04.2026 16:28, Oleksii Moisieiev wrote:
> In RTDS, removing the last eligible pCPU can kill repl_timer.
> When a pCPU is later re-added, rt_switch_sched() reinitializes the
> timer object, but pending entries may already exist in replq.
> 
> Without re-arming from replq head, replenishment can remain inactive
> until some unrelated event programs the timer again. This may stall
> budget replenishment for non-extratime units.
> 
> Fix this by re-arming repl_timer in rt_switch_sched() immediately after
> init_timer() when replq is non-empty, using the earliest pending
> deadline.
> 
> This keeps behavior unchanged when replq is empty.
> 
> Add a lightweight regression script,
> test_rtds_repl_timer_rearm.sh, to verify source-level guards and model
> the expected re-arm decision logic.
> Signed-off-by: Oleksii Moisieiev <oleksii_moisieiev@epam.com>

What is this last (improperly separated from the S-o-b) paragraph about?
No ...

> ---
> 
>  xen/common/sched/rt.c | 9 +++++++++
>  1 file changed, 9 insertions(+)

... new script is being introduced.

Jan


From xen-devel-bounces@lists.xenproject.org Wed Apr 01 14:38:07 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 01 Apr 2026 14:38:07 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1270460.1559119 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1w7whi-00054J-3R; Wed, 01 Apr 2026 14:37:58 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1270460.1559119; Wed, 01 Apr 2026 14:37: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 1w7whi-00054C-0j; Wed, 01 Apr 2026 14:37:58 +0000
Received: by outflank-mailman (input) for mailman id 1270460;
 Wed, 01 Apr 2026 14:37:57 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <Oleksii_Moisieiev@epam.com>) id 1w7whh-0004zx-0i
 for xen-devel@lists.xenproject.org; Wed, 01 Apr 2026 14:37:57 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1w7whg-003J74-2Y
 for xen-devel@lists.xenproject.org; Wed, 01 Apr 2026 16:37:56 +0200
Received: from [10.42.69.6] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <Oleksii_Moisieiev@epam.com>)
 id 69cd2db3-2eae-0a2a0a5409dd-0a2a4506c824-32
 for <xen-devel@lists.xenproject.org>; Wed, 01 Apr 2026 16:37:56 +0200
Received: from [52.101.84.132]
 (helo=DB3PR0202CU003.outbound.protection.outlook.com)
 by tlsNG-16d1c6.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.0)
 (envelope-from <Oleksii_Moisieiev@epam.com>)
 id 69cd2dc3-0df0-0a2a45060019-34655484b1eb-3
 for <xen-devel@lists.xenproject.org>; Wed, 01 Apr 2026 16:37:55 +0200
Received: from DU5PR03MB10263.eurprd03.prod.outlook.com (2603:10a6:10:519::5)
 by DU5PR03MB10326.eurprd03.prod.outlook.com (2603:10a6:10:527::9)
 with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9769.15; Wed, 1 Apr
 2026 14:37:53 +0000
Received: from DU5PR03MB10263.eurprd03.prod.outlook.com
 ([fe80::8c9e:b301:61c0:3908]) by DU5PR03MB10263.eurprd03.prod.outlook.com
 ([fe80::8c9e:b301:61c0:3908%5]) with mapi id 15.20.9769.016; Wed, 1 Apr 2026
 14:37: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=Dn2AdhOVN0I3ENJgKZcTPH1ZRoi4XnRkzaNDloenjZ7CYBmtaZIDcOB/BbWm183iRmeolxuFgA1CigAVFBN7F0akwQMw4ySPM43yJdv+O3DsU/+9u6XmsTdTiafXArA5pTI3wLE2wJDOuZh+bQw3hua976xGlcdu6cwbxLmq7lyZuNjXy9MSFP/9lJwd2OWsjBWkszo9PwOOLEjDFfEr5usK4lnrLLeOQbKz3t6epNXj8gNVCeFLXrngJqWkGHP5ynBV8TLKPz7zyM9Ty/a25dzJGZQ7+1Gop4o0Q70LAWBcUvCw0nhpiUCtLpcbWMMZ2E+wGw2DJFHEPw1E2Zskrg==
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com;
 s=arcselector10001;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1;
 bh=7nC86ZtymT+iTFCiexayQuOfNvhH+tl0LE0fjBfesSY=;
 b=Dz+2RIuTkM8oyP+KLX+x8FR6XuWQ4uB/VGtuF2uQ0LrLSm0w3gUMKzc29yOHYKwH+ZTeGxdFodHtm0yiTXcM7YxeOIamP6hxD04bePQBfWrfCe6fkkHQ5uUZ4w1yR1WarkpB0swpVNQpdGzwqatE3GUlchWqUoeAYjSkrQyQuzvk/DXzLwJ/RM1A6DchLKTn1Xbdiy0uDO3Fw24+pX90ERsKcPrFNT7D2BTfNP2B7s6gbmXk9f6lwl6KbpDEfaQxVG/omVE2cbOYANFi1TxESa0bhMN1eEc3DqMs/YoDPEXoGZequ2yMzSWL1j/DBhoITLTY8tUjRgihH4FiHgd7yw==
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=7nC86ZtymT+iTFCiexayQuOfNvhH+tl0LE0fjBfesSY=;
 b=vCzCL22uCtTzeb2FDafkGJqNJeaPsfMo6Y3FbkGbcusb+EhMZ2b2tPIw7+zXzg5TmvLNtp/Tm++iPSj39BN+GFY2e8WUf+ceBaGrahVI+iJACb34LzHy4rFxt5HpKFTllTk8WC0tUvHHDVopUGOJdTYO/0637pBse6jk+rF2yHbfkmb5hpXnl3ex42BtzDNUq7ssKZApIDXVdC1MB+dNLv7FfAFHTwLnwwIvZ88M6Ab3FCet0ZLvPaNPBcYs+iicdB5dEkJrP/Rabbed8XHnNtn7VdLSnx7O4ImLckr/hzO3C2C2iLQ1Y6bKNFw6viDRzakwSV5sfxSiYB4biFcVwg==
Authentication-Results: dkim=none (message not signed)
 header.d=none;dmarc=none action=none header.from=epam.com;
Message-ID: <85028c54-2349-41f1-a2a2-f859c9d07776@epam.com>
Date: Wed, 1 Apr 2026 17:37:52 +0300
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH] xen/sched: rtds: re-arm repl_timer after timer
 re-initialization
To: Jan Beulich <jbeulich@suse.com>
Cc: Dario Faggioli <dfaggioli@suse.com>, George Dunlap <gwd@xenproject.org>,
 Juergen Gross <jgross@suse.com>, Meng Xu <mengxu@cis.upenn.edu>,
 "xen-devel@lists.xenproject.org" <xen-devel@lists.xenproject.org>
References: <fcb3a80f93ab16b880ed31e82bc61180f3586efd.1775053454.git.oleksii_moisieiev@epam.com>
 <eb89d0de-bf24-47fb-888d-31efffd28a09@suse.com>
Content-Language: en-US
From: Oleksii Moisieiev <oleksii_moisieiev@epam.com>
In-Reply-To: <eb89d0de-bf24-47fb-888d-31efffd28a09@suse.com>
Content-Type: text/plain; charset=UTF-8; format=flowed
Content-Transfer-Encoding: 7bit
X-ClientProxiedBy: WA2P291CA0018.POLP291.PROD.OUTLOOK.COM
 (2603:10a6:1d0:1e::13) To DU5PR03MB10263.eurprd03.prod.outlook.com
 (2603:10a6:10:519::5)
MIME-Version: 1.0
X-MS-PublicTrafficType: Email
X-MS-TrafficTypeDiagnostic: DU5PR03MB10263:EE_|DU5PR03MB10326:EE_
X-MS-Office365-Filtering-Correlation-Id: e447dbde-3ca3-49ec-c4c9-08de8ffc4220
X-MS-Exchange-SenderADCheck: 1
X-MS-Exchange-AntiSpam-Relay: 0
X-Microsoft-Antispam:
	BCL:0;ARA:13230040|1800799024|366016|376014|18002099003|22082099003|56012099003;
X-Microsoft-Antispam-Message-Info:
	Vy9+eIRcii+XzJH1fHDN/IeLkN+k+yzYvraSvoQh9NlaEHLo9zei+l7XKBVaOLP9A7QJcLB6ugvWd3mfI4I/60doCu5aL33PYe+PaWGLu6wG9gZrRNP4QW/GdMpExsszgyru16TArPC7j/ndzpiPw858xb1gaI9zR6/zLpelxsUeASk/FIde+7q4yw/sDyrsks6Apq3Bl8WaYfJTXcl6qBeNDjajTbya5pizyRgeZgLHeXNbvN10BrJqX1MGJVguCCLoyL/j2Wxa32qAFXBY0yaboV6pZOlBZ2v6xhAgZLYoi+SFT6xRgHoXEYLaIFWiN6jOTktJ803+//JNhqqrnu14374TgtaNrIZ8xGRY98CLLOm8hTlg5XK/kKsFoviPhQQUc0oEIAIniDYSReyCamoAiZznJGeHgofwr0z17gF1geFUA18WUG4KEe1bvtfxux3zP6rJKF2p4jTfSW/1v8u2Brd3u+7DvdmNbcKvg9nKUiVzlCAyzeq1caFd6U8g/0uoS8MXAT7cqT5UGoWc/f79eFTWB+X7/bRxc/k3YEMFNifMUdLrFmqaaGrg9FGrkACGykve0mtzKEgqaYZtzrgxp2zqIbu/QRyJrLHX+JTUt5lvbEVpM21yK5y4YVPmrxgc4t8JgJtcu2XfC0NzQx/G8VJMIt+6/Mn9UguNvnrG2Cn8g2O7b/RrgzXra2UezulYDszJ4NP8D0M97PahggE8uIATZWs2n1vAIyC3Xog=
X-Forefront-Antispam-Report:
	CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:DU5PR03MB10263.eurprd03.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(1800799024)(366016)(376014)(18002099003)(22082099003)(56012099003);DIR:OUT;SFP:1102;
X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1
X-MS-Exchange-AntiSpam-MessageData-0:
	=?utf-8?B?alVPYkRmcXJ2cXlSM3lBbHk1Q3Bha3RCTEZXN243ekhxbHYveDN4WnEvZ1FI?=
 =?utf-8?B?bjZMbjFlandqbHNmZ3VMbklqMUxYeGJBU0hYU1Q1TDNSaVU0aHJtRHkzdUhR?=
 =?utf-8?B?V2NxZElwck1WajJoVjFSR1Eza2VqS1hvUCt0VllEUkdXN3ZnSmVkZEZSUko2?=
 =?utf-8?B?OENFcjRBK3lrREhaMHY2R0t2R21MNDAzUnRsMTFMNEtSVzRjdUd5a0ZWSE0x?=
 =?utf-8?B?ZGd6VG1mV3pjeVNGOVNNdXVrZGp5UXo4WmM2S2hJbmJEYmkrc2lmZFB1STBw?=
 =?utf-8?B?NVRoZVZvM1JiVE5iLzV2U0h3RGk2ZGxmbTJ3UXBRelhBTFUrUzZlcTV3ZVJu?=
 =?utf-8?B?R291RGVyeERqWEJlT1AzWVUrbHpraEVQVTRxOXhBNG5FZmhqTDhjdVV3TTFM?=
 =?utf-8?B?L3BTSlNmVm9YdUF6OWJlczJiVlhaS2pDWXp5VTFNSTJGejdRbURtT2xobEM2?=
 =?utf-8?B?WmNLaVJlMmZvVHVRdlROR2NtejkzL2FFQ2Zza1lmQmFkcW5EdFRscW1Bcllt?=
 =?utf-8?B?ZTdxa291cUpqRXo5ZHBaNG1LbnNuOU1XNEt4bS92a1ZiTUx4akZDYzlUbG5n?=
 =?utf-8?B?YTFnTE03Uk0xcUhqZE1wMnpyM3FWalhzaURqN1Rhdm1hcVZLVGR4aEROaklq?=
 =?utf-8?B?dmJnaEIwSllLeVlxUEEzaHZ4M3lVYUw4cDhEODUxMzA0NWIzU0t5eHBEOWs0?=
 =?utf-8?B?VG9EdDk5L2Q1REE4Z2VHcEtzY25UUEorVjZaTkpxUDU5dXhGbzRnNW1OM2lO?=
 =?utf-8?B?akhRSHZlcGlrUDBVZkZJUEZPaEJ6dlZmOEF2TkxUd08zNFBrZFF0WUpuRnBY?=
 =?utf-8?B?ME51NlZjdGdGdTlYcWVBYTlkWnJCUmFLUUk4c2hTNjJ1aDBDeWFOTnUyWVd4?=
 =?utf-8?B?UWt1MnRMSmtDUk51d2lkc1hneUtYSzN3QTJwUllVMTI0SGUxYlpidW1pRk5a?=
 =?utf-8?B?cktkU2xkZ3M4bHRDRG4yWXNuaTRDUVlEbHJSeENtVjhBZklsYUwydUJjdEt1?=
 =?utf-8?B?SmdsdndzYzNDSGtKUHR3M3pzdnVKRzZ2cDlkRG5nTnN6Ukk2V2xEald3QW9L?=
 =?utf-8?B?eXhpYll6bDlHUFEwaTVqUzlpcnRCSnN6R2RJaTJlV2xSbHJWWTFkRGZ4bXNP?=
 =?utf-8?B?NGpwQ1B4MXhud1BPZkZGR3lyTm13MHBPemErNmtzRjNBaWNadDRCNFpaWktL?=
 =?utf-8?B?WkRZamdjUmptbWoyWC9KUDMvMDNlMG9YQzBIWEI4SHpXRi9QZ3NCK29Gc0xh?=
 =?utf-8?B?cDJ2RnJPdTFaVVV1VGp1NG1VU002TWZaQWRlc2FOR0dsSkxpU256MDYvVGo5?=
 =?utf-8?B?d0NRYzhMYkt1LzlnQUR2ZDBYSU5GYlZMVDFSS0R4OFRXSS96bDMvMTZrT09E?=
 =?utf-8?B?M2o2MndldXIwdVIvc0xrV08wR1FCY2d0c0lGZEIwSEtHcCtUL2RRZWR5MWt4?=
 =?utf-8?B?aGZpdGVrU2RpNUQ2bERvRVZQNDk1ZUN2MHpob00wcysrRDZzcFR6bG9NOU1n?=
 =?utf-8?B?Zi9NNFF1bDlWUVk5TGsvL2UybW8xOFArL05KTlkwQ1IydzBEWklMQUYrRGhK?=
 =?utf-8?B?MEI1eEVBWDFhSWdMZGlEM3pvRXc2a001bkFyS2kxMzVkUXZKenJuVlJjd0dG?=
 =?utf-8?B?bmJ6clBnL3E0bXNLeC92eUFjM2daaVVCZFdCeENUUHFGY2tpeHFvd1lNZWph?=
 =?utf-8?B?VmNYSFpUZ3diMGYvaHRKdncyRXNvYU5XbVBZcWJJdUk3a2d2aEsyYkNDaGNL?=
 =?utf-8?B?dXdHWnlEK2o4ck9sOGJlWnhwK3FscGxmZFBIM3JKQ2lpM0cwdVhGU0ZDaFJ1?=
 =?utf-8?B?cUVVYjBjZEhLdjFITXdlSnBJMW9EOWc4SFZ6eHdYNWcrZlRyZlYrcFNHcVhJ?=
 =?utf-8?B?QThucmcwTldTd2JWT01xWDVkZE0zd3lkSmV5QnJSRHFiL2NkSkM1MnNIU0tl?=
 =?utf-8?B?RWNRaFpxYVZFS0IwWkJNWWlRVHlLSlVpZXZPZ3dKYmExTEYzc1Mvc2dRRFd5?=
 =?utf-8?B?ODFlMHZBald0L2tDRHNtU1RXeGFZL00reGwxS0JCa3NJbm9EUG10SFBjVVRK?=
 =?utf-8?B?b1dSNkdkYXZtMGVMKzdKS0pmVVZ0a1o5YXUxVEhpSFBEOUx6bnlXWWF1dzEz?=
 =?utf-8?B?dDFrQzJubk02M01jVmlsemMwY2NSejJad3Z3R3dkNFdleHVJODBzUjhzSFVH?=
 =?utf-8?B?OC95MGJ5YmVPbWdVVXdHNVd5ZElSRkRqUWd0QTU0ekpNcXZZRzV5RStueC9I?=
 =?utf-8?B?aHF1QmJ3Zk1ZOHl6d0ZQOWVxRzYydFRocEZ6Q0xGVkkvWEZUWVRiRnQ1elIv?=
 =?utf-8?B?U3B5d1hlbG54d1ZMd3hBSkdxYThvWC9JdTlPaTBSYWp5MXNzN0N5TDYvUFRY?=
 =?utf-8?Q?i8qNR+LQlHX8jVDM=3D?=
X-OriginatorOrg: epam.com
X-MS-Exchange-CrossTenant-Network-Message-Id: e447dbde-3ca3-49ec-c4c9-08de8ffc4220
X-MS-Exchange-CrossTenant-AuthSource: DU5PR03MB10263.eurprd03.prod.outlook.com
X-MS-Exchange-CrossTenant-AuthAs: Internal
X-MS-Exchange-CrossTenant-OriginalArrivalTime: 01 Apr 2026 14:37:53.8294
 (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: M+GuAn6Ipd80uq4WvwFBz+vloVdhuTfPyaiVcvR3bQvnVZujUYt7j4r8uwWiPqOpM5YR7sGv48z2GCZ0LXFyPF5SEICvxjG5IzIODasyyoc=
X-MS-Exchange-Transport-CrossTenantHeadersStamped: DU5PR03MB10326
X-purgate-ID: tlsNG-16d1c6/1775054276-5C5203D8-904AD78E/0/0
X-purgate-type: clean
X-purgate-size: 1275


On 01/04/2026 17:31, Jan Beulich wrote:
> On 01.04.2026 16:28, Oleksii Moisieiev wrote:
>> In RTDS, removing the last eligible pCPU can kill repl_timer.
>> When a pCPU is later re-added, rt_switch_sched() reinitializes the
>> timer object, but pending entries may already exist in replq.
>>
>> Without re-arming from replq head, replenishment can remain inactive
>> until some unrelated event programs the timer again. This may stall
>> budget replenishment for non-extratime units.
>>
>> Fix this by re-arming repl_timer in rt_switch_sched() immediately after
>> init_timer() when replq is non-empty, using the earliest pending
>> deadline.
>>
>> This keeps behavior unchanged when replq is empty.
>>
>> Add a lightweight regression script,
>> test_rtds_repl_timer_rearm.sh, to verify source-level guards and model
>> the expected re-arm decision logic.
>> Signed-off-by: Oleksii Moisieiev <oleksii_moisieiev@epam.com>
> What is this last (improperly separated from the S-o-b) paragraph about?
> No ...
>
Sry for that. this leftover from squashing... Will remove. Made a unit 
tests to check the behavior.
>> ---
>>
>>   xen/common/sched/rt.c | 9 +++++++++
>>   1 file changed, 9 insertions(+)
> ... new script is being introduced.
>
> Jan


From xen-devel-bounces@lists.xenproject.org Wed Apr 01 14:38:24 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 01 Apr 2026 14:38:24 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1270464.1559129 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1w7wi8-0005ZY-BE; Wed, 01 Apr 2026 14:38:24 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1270464.1559129; Wed, 01 Apr 2026 14:38: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 1w7wi8-0005ZR-80; Wed, 01 Apr 2026 14:38:24 +0000
Received: by outflank-mailman (input) for mailman id 1270464;
 Wed, 01 Apr 2026 14:38:22 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92) id 1w7wi6-0005VK-A3
 for xen-devel@lists.xenproject.org; Wed, 01 Apr 2026 14:38:22 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1w7wi5-003JFB-M3
 for xen-devel@lists.xenproject.org; Wed, 01 Apr 2026 16:38:21 +0200
Received: from [10.42.69.5] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <oleksii.kurochko@gmail.com>)
 id 69cd2dd3-2eae-0a2a0a5409dd-0a2a4505e82c-18
 for <xen-devel@lists.xenproject.org>; Wed, 01 Apr 2026 16:38:21 +0200
Received: from [209.85.128.43] (helo=mail-wm1-f43.google.com)
 by tlsNG-c201ff.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.0)
 (envelope-from <oleksii.kurochko@gmail.com>)
 id 69cd2ddd-3760-0a2a45050019-d155802be4d8-3
 for <xen-devel@lists.xenproject.org>; Wed, 01 Apr 2026 16:38:21 +0200
Received: by mail-wm1-f43.google.com with SMTP id
 5b1f17b1804b1-487012ce896so43148355e9.0
 for <xen-devel@lists.xenproject.org>; Wed, 01 Apr 2026 07:38:21 -0700 (PDT)
Received: from ?IPV6:2a01:cb15:80df:da00:6d45:ff60:3ad6:d7fa?
 ([2a01:cb15:80df:da00:6d45:ff60:3ad6:d7fa])
 by smtp.gmail.com with ESMTPSA id
 ffacd0b85a97d-43d1e4d2738sm265409f8f.24.2026.04.01.07.38.19
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Wed, 01 Apr 2026 07:38:20 -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=20251104 header.d=gmail.com header.i="@gmail.com" header.h="Content-Transfer-Encoding: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=20251104; t=1775054301; x=1775659101; darn=lists.xenproject.org;
        h=content-transfer-encoding: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;
        bh=+hEvzJdrLJVqVL+TYBqfIkN3Vk1B0Kgzr0IsMW38Lc8=;
        b=pshbf/To+3vJvzPkjrNVLMbUlgzrMb4831ydXBmjeQ2zcBWYFp4E9VjkB6T4YOGfRu
         +lRPZCvsB6mQDUin4Mya4vvoyZN9E4KaWMSPB9gZ8gPq+MghxRyqbgeezULPGEd+GP69
         mQULjqhD3FIfXt+MNMv1+HS2luitosZN0cM1regpv4GSmrFN8poiQ3anjN1YmFjnNE8H
         eB51QLyXd5o1kgk8MFMl3juY9nv+q1nvXiygK4CShcYEiN/55lkAHaa+/i18RcKYZ1TA
         1P0AiqHHmTA2202l2hhzvmyYUpXj05NMrKs/eZfS8+f9sW9dMTbS47hrdXTWIdnFydc8
         gKiw==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20251104; t=1775054301; x=1775659101;
        h=content-transfer-encoding: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;
        bh=+hEvzJdrLJVqVL+TYBqfIkN3Vk1B0Kgzr0IsMW38Lc8=;
        b=qQZhD/V5wwj/gQdQEw7sMG3SMSO30OoGFxLBuWk9FYdGN8TzHAsJxJtKJ9FhlhUBc/
         bXwjctVMqtl8iP3lYKu4hILiLEqcjalMUld/MuqMufNPDBfUYkswDYfy9Xr+o8GfZAK5
         uBzZPB6j60GCgfZlBefyJrGI/RQdpbNu+IU55Uu0LcmmJ30MrBRmppOBMy9kAzsGNYj7
         8Gew/SJ7Gibzwn9XnvjZPu3yyhEcaBepmVGskUSqjKpO9q3RNJ+O9xNY6sS5vHH+kRnW
         1b98ah4jvWfplebi2WoqkTJKKR8PpovFcrlX8iSOq9dV/fbcApisCY/KlzjAGCn0WWSq
         VwUA==
X-Forwarded-Encrypted: i=1; AJvYcCWk4P2CEFmGRq1ENE8iKwxevXutUqtjlOCGYVIlJtb/zP3y9yluOnqrVYEyMWv+spuUHx5yqQzQbXQ=@lists.xenproject.org
X-Gm-Message-State: AOJu0YyMrht/+Fcg4IKx+2bVFqfaES6zSVCGepAOrLbKmrith8CChzzz
	PqzBlMxQxRPuP1PPcc7FMuSO8kh5HHG8U+FPb0/cvAB6lHt38+jeTwIR
X-Gm-Gg: ATEYQzxf5V7gLiVMVZA5UwRQgCjruwEtFPFifae6KQY/Oxkpu1qhFHX6AQRrmAbswAl
	RIu+asPiWvCqw/RDomE+P6jWJiUJpgAPumL8vr7Rs1eBPnjQfWNL/LxcDOcMA5ZK5eiv+P7K7vQ
	LLz57JInEyIZpMZy5yefT4pIm12djCZd0FeXuh5Yy82u9FETUiiZgWMDkGS01bSP7NJjNny9sHK
	DAyRiGRWRFLk8V8AmTD65ldiM0HYpCMZehyBXv/+TXm1DlKABntNyuxjcuqFJU8KcC2N0A6v1n3
	BxhAl6aab/b8SaXMG1/nM5VkZlG/+UsM6D8LQC+PW6irXcDLRuG1CyeDVJEmgg+CDvSZzw0F26V
	sVQnEmcWwfA00mqdgqK4KmRwk1o/Pj7sB0lBBbuGgIWOErn2ebPSsQIuB0runi8OTHH66+7fhrK
	1FuDjreGF7bvsumHc1col5grh4LZQtupo2vYKzTonA3IKnf9+Ufq03Ktpbgqy3KMAS5az+VrJp5
	Fcbj+nQAiU6
X-Received: by 2002:a05:600c:630f:b0:487:288:1198 with SMTP id 5b1f17b1804b1-4888359da58mr55474125e9.22.1775054300710;
        Wed, 01 Apr 2026 07:38:20 -0700 (PDT)
Message-ID: <600b1b66-fd85-4b7f-8bdc-793667bccfec@gmail.com>
Date: Wed, 1 Apr 2026 16:38:19 +0200
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH v2 07/11] xen: move domain_use_host_layout() to common
 code
To: Jan Beulich <jbeulich@suse.com>
Cc: Romain Caritey <Romain.Caritey@microchip.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.pau@citrix.com>,
 xen-devel@lists.xenproject.org
References: <cover.1774281309.git.oleksii.kurochko@gmail.com>
 <533d01db2b36b8357cd87e99a64a6e66dbdd1db4.1774281309.git.oleksii.kurochko@gmail.com>
 <6df9470e-4969-48d1-bf0c-c6569a5e5577@suse.com>
 <57581b7d-cb9f-444c-9321-63b2fc3d09f0@gmail.com>
 <d1288db4-2001-4914-919f-b613fd607bcc@suse.com>
 <d67b2856-bf93-4254-afa1-745dc37e0623@gmail.com>
 <cdacc6a8-cd49-4327-a98c-636545e8579b@suse.com>
Content-Language: en-US
From: Oleksii Kurochko <oleksii.kurochko@gmail.com>
In-Reply-To: <cdacc6a8-cd49-4327-a98c-636545e8579b@suse.com>
Content-Type: text/plain; charset=UTF-8; format=flowed
Content-Transfer-Encoding: 7bit
X-purgate-ID: tlsNG-c201ff/1775054301-33B2896F-568A8917/10/73395122804
X-purgate-type: spam
X-purgate-size: 3484



On 4/1/26 7:58 AM, Jan Beulich wrote:
> On 31.03.2026 18:32, Oleksii Kurochko wrote:
>> On 3/31/26 5:53 PM, Jan Beulich wrote:
>>> On 31.03.2026 17:20, Oleksii Kurochko wrote:
>>>> On 3/30/26 5:13 PM, Jan Beulich wrote:
>>>>> On 23.03.2026 17:29, Oleksii Kurochko wrote:
>>>>>> domain_use_host_layout() is not really architecture-specific, so move it
>>>>>> from the Arm header to the common header xen/domain.h and provide a common
>>>>>> implementation in xen/common/domain.c. domain_use_host_layout() potentially
>>>>>> is needed for x86 [1].
>>>>> No matter that this may indeed be true, ...
>>>>>
>>>>>> Turn the macro into a function to avoid header dependency issues.
>>>>> ... this introduces unreachable code on x86, i.e. a Misra rule 2.1 violation.
>>>> Do we have some deviation tag for such cases when the code temporary
>>>> isn't used?
>>> I'm sorry, but it'll take me about as long as you to find out.
>> Sure, I will take a look. I just thought that maybe you have a solution
>> already just in your head.
> Well, I do: Don't make this an out-of-line function.
> 
>>    I wonder
>>> about "temporary" though: Do you have a clear understanding as to when
>>> that will change?
>> No, I don't. As Stefano mentioned they will need this function one day.
>> Another option we could use ifndef x86 or ifdef DOM0_LESS and then when
>> someone will really need it on x86, this ifdef will be dropped. I don't
>> know if it is better solution.
>>
>> It seems like the best one solution will still make a try to make
>> declare this function as macro.
> Or an inline function. There's nothing ...
> 
>>>>>> @@ -2544,6 +2544,12 @@ void thaw_domains(void)
>>>>>>     
>>>>>>     #endif /* CONFIG_SYSTEM_SUSPEND */
>>>>>>     
>>>>>> +bool domain_use_host_layout(struct domain *d)
>>>>>> +{
>>>>>> +    return is_domain_direct_mapped(d) ||
>>>>>> +           (paging_mode_translate(d) && is_hardware_domain(d));
>>>>>> +}
>>>>> The placement of paging_mode_translate() doesn't match ...
>>>>>
>>>>>> --- a/xen/include/xen/domain.h
>>>>>> +++ b/xen/include/xen/domain.h
>>>>>> @@ -62,6 +62,22 @@ void domid_free(domid_t domid);
>>>>>>     #define is_domain_direct_mapped(d) ((d)->cdf & CDF_directmap)
>>>>>>     #define is_domain_using_staticmem(d) ((d)->cdf & CDF_staticmem)
>>>>>>     
>>>>>> +/*
>>>>>> + * Is the auto-translated domain using the host memory layout?
>>>>>> + *
>>>>>> + * domain_use_host_layout() is always False for PV guests.
>>>>> ... the description of the function.
>>>> But why the placement should be different?
>>> If you focus on auto-translated, then imo paging_mode_translate()
>>> better would guard everything.
>> Then it make sense to do in the following way:
>>    bool domain_use_host_layout(struct domain *d)
>>    {
>> -    return is_domain_direct_mapped(d) ||
>> -           (paging_mode_translate(d) && is_hardware_domain(d));
>> +    return paging_mode_translate(d) &&
>> +           (is_domain_direct_mapped(d) || is_hardware_domain(d));
>>    }
> ... in here which clearly speaks against doing so. And yes, this is what I
> was asking for (with the function parameter also suitably constified).

I expect that with an inline function in xen/domain.h compiler will want 
have paging_mode_translate() be explicitly defined, so an inclusion of 
xen/paging.h will be needed, but likely I am wrong that it will be 
needed it the case of inline function.

~ Oleksii


From xen-devel-bounces@lists.xenproject.org Wed Apr 01 14:38:51 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 01 Apr 2026 14:38:51 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1270476.1559138 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1w7wiZ-000635-Iz; Wed, 01 Apr 2026 14:38:51 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1270476.1559138; Wed, 01 Apr 2026 14:38: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 1w7wiZ-00062y-GM; Wed, 01 Apr 2026 14:38:51 +0000
Received: by outflank-mailman (input) for mailman id 1270476;
 Wed, 01 Apr 2026 14:38:49 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <jbeulich@suse.com>) id 1w7wiX-00062Y-NJ
 for xen-devel@lists.xenproject.org; Wed, 01 Apr 2026 14:38:49 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1w7wiX-00GO0h-39
 for xen-devel@lists.xenproject.org; Wed, 01 Apr 2026 16:38:49 +0200
Received: from [10.42.69.3] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <jbeulich@suse.com>)
 id 69cd2dec-bab6-0a2a0a5309dd-0a2a4503909c-26
 for <xen-devel@lists.xenproject.org>; Wed, 01 Apr 2026 16:38:49 +0200
Received: from [209.85.128.50] (helo=mail-wm1-f50.google.com)
 by tlsNG-33051d.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.0)
 (envelope-from <jbeulich@suse.com>)
 id 69cd2df7-02b3-0a2a45030019-d1558032f1ad-3
 for <xen-devel@lists.xenproject.org>; Wed, 01 Apr 2026 16:38:47 +0200
Received: by mail-wm1-f50.google.com with SMTP id
 5b1f17b1804b1-486fb14227cso92586735e9.3
 for <xen-devel@lists.xenproject.org>; Wed, 01 Apr 2026 07:38:47 -0700 (PDT)
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-4887e735532sm150995725e9.0.2026.04.01.07.38.46
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Wed, 01 Apr 2026 07:38:46 -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=google header.d=suse.com header.i="@suse.com" header.h="Content-Transfer-Encoding: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=1775054327; x=1775659127; darn=lists.xenproject.org;
        h=content-transfer-encoding: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;
        bh=+sVZ8lyJfZymR2sAcSNbJsyX80kljhnFPnQXAv2d0zM=;
        b=AEeNqN2PPtPr4cyO1PJqbUwDqoG1SC5NJ5GmGGwM9RH+dB7Zy9ymfULq5FjxaoC50g
         ZQrlpFT249y3zdtwJXoeBQr9Odd/bdp+vmgqeWgpBZDy3AB1AT6KEDJ4r5Fkgcyc8rfV
         23vYGKePUNhp8UNdB7aUr8EqDMN5C+UpjqFz3cmFD33l4/3zJsGFwL58aVxNVPYmwyv2
         jNFUxvj8gpJrN7O0tCm0pxBazb41U/H50F5f8wZpmmg6cw4isOR2SvWtjhpPLnx2aKWy
         YVCNxmjZIvj3L462OVoxTtdtTKJVMvwBykgxPFk6Oeyy1n5wjrms0sE5dftPAXA7A2X9
         Ld1g==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20251104; t=1775054327; x=1775659127;
        h=content-transfer-encoding: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;
        bh=+sVZ8lyJfZymR2sAcSNbJsyX80kljhnFPnQXAv2d0zM=;
        b=ktXctLgIWj6HxEnoCBQ2oBHkDNkTwG4Yb7JajeNO8kfiDMAotg5JZHtdMjtXtvi2zL
         8U+rMWEDHlrZKIGkVDcJyIivy7g3YyI92H5TDJDB0dbgzCGXJPAvfkSk/rEqZtOf2shn
         OgLpzRfUfnwMwfJsnuYtQDl29DHeGgpRIaLSPuHZO0yz1LYAhxqLYwjyG46lMIyfSw0L
         0k08SrKHgFC0c37w6rCZDUcfwN0G0Cplt0ADivQNyHICdWs7sgTIhMsHfhPWftLrn7Hi
         1Wwg/14d+9lPjBQbzuNPgGh0sgSCDnhA6xlaTDKTjyjlYAtyezvYjaC8jFg3hgKJmslb
         RFlw==
X-Forwarded-Encrypted: i=1; AJvYcCVmqZlLL9EeiB+Yd82qHgd+XHaMGmluriRBGm0uFPAFPQYxiixPxB3AlmLs5f3zKNmI3XKlz349O94=@lists.xenproject.org
X-Gm-Message-State: AOJu0YyFH8NGypscyxW1KTWTfM8v5d246nZ27Q3gcvrZagBh1i91xrN6
	tDNSK96zIal87o5girpit1l4vdnr4hz5UppqFNwG0v6Fc4+dAOVgJs2Bng2hcYDYwQ==
X-Gm-Gg: ATEYQzzYx6W+SWC3EInu83iiOcMtg14QNUu+WrMJelA46R0L0XLskdND/ykp7Io5QHO
	xWChfpwacZfVA6ThGkxadS4IqWtyUWf/zSWS665saAUHmRewSEim9xaK7E6YMA1L305mx+XJHFR
	ZVSaCkRAFrt9XslAE0DUWsDTjGzOWCS79y9GV3h8SUeSIEgUTpH6oiUsWhnB/vS9Jrysp0TbM6f
	gLE3dS+xYWLfIvexIUDrKK9/i4UPdH0gzYX2Um4lndfo8Gjbjvgzd5u2L6x0+AoS8DFqN9NFYYz
	9v4TbRvkwPZmjq7f1pJwUJgQmquepR0QSnkwbrfNZmWCwHcRtJyfgRhQ46/3kxfIesC+iA+jPFu
	mYLivJDGa9GHZYbXe7PXW1Ui/w6U2g30a9VGgHvlviCZu42ls9WkAuSxh7pvtE+lJtZd9z4wgao
	vEmxPw7v9EkIoOdbL85DYb3IjHPWdp9/s7xAM7MaVSPHRpLluVnvrxFQ6sD6FkEUU2lh7gMml/u
	gk1uxi/uJCpTBk=
X-Received: by 2002:a05:600c:1388:b0:485:379b:57bb with SMTP id 5b1f17b1804b1-48883569e7fmr66375565e9.3.1775054326960;
        Wed, 01 Apr 2026 07:38:46 -0700 (PDT)
Message-ID: <9b3cd2ba-869b-4757-8bcd-51abad61b9f9@suse.com>
Date: Wed, 1 Apr 2026 16:38:45 +0200
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH v1 09/27] xen/riscv: implement make_intc_domU_node()
To: Oleksii Kurochko <oleksii.kurochko@gmail.com>
Cc: Romain Caritey <Romain.Caritey@microchip.com>,
 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.pau@citrix.com>,
 Stefano Stabellini <sstabellini@kernel.org>, xen-devel@lists.xenproject.org
References: <cover.1773157782.git.oleksii.kurochko@gmail.com>
 <7a7f1430090eaf50cc3bff25e894c13404bffad5.1773157782.git.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: <7a7f1430090eaf50cc3bff25e894c13404bffad5.1773157782.git.oleksii.kurochko@gmail.com>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 7bit
X-purgate-ID: tlsNG-33051d/1775054327-41D16C9A-8255C78B/0/0
X-purgate-type: clean
X-purgate-size: 1659

On 10.03.2026 18:08, Oleksii Kurochko wrote:
> --- a/xen/arch/riscv/dom0less-build.c
> +++ b/xen/arch/riscv/dom0less-build.c
> @@ -3,6 +3,15 @@
>  #include <xen/fdt-kernel.h>
>  #include <xen/init.h>
>  
> +#include <asm/intc.h>
> +
> +int __init make_intc_domU_node(struct kernel_info *kinfo)
> +{
> +    intc_make_domu_dt_node(kinfo);
> +
> +    return 0;
> +}

Is this wrapper really needed? Can't what's intc_make_domu_dt_node() right
now become make_intc_domU_node()?

> @@ -41,6 +41,10 @@ struct intc_hw_operations {
>  
>      /* handle external interrupt */
>      void (*handle_interrupt)(struct cpu_user_regs *regs);
> +
> +    /* Create interrupt controller node for domain */
> +    int (*make_dom_dt_node)(const struct kernel_info *kinfo,
> +                            const struct dt_device_node *intc);

An __init-only hook is somewhat risky, just to mention it. In IOMMU code
besides struct iommu_ops we have struct iommu_init_ops, just to give an
example of where the same could have been the case.

> --- a/xen/arch/riscv/intc.c
> +++ b/xen/arch/riscv/intc.c
> @@ -67,3 +67,11 @@ void intc_route_irq_to_xen(struct irq_desc *desc, unsigned int priority)
>      intc_set_irq_type(desc, desc->arch.type);
>      intc_set_irq_priority(desc, priority);
>  }
> +
> +int __init intc_make_domu_dt_node(const struct kernel_info *kinfo)
> +{
> +    if ( intc_hw_ops && intc_hw_ops->make_dom_dt_node )
> +        return intc_hw_ops->make_dom_dt_node(kinfo, intc_hw_ops->info->node);
> +
> +    return -ENOSYS;

How do you justify this choice of return value? This isn't even a hypercall
handler.

Jan


From xen-devel-bounces@lists.xenproject.org Wed Apr 01 14:44:29 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 01 Apr 2026 14:44:29 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1270497.1559147 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1w7wnw-0007ks-Ag; Wed, 01 Apr 2026 14:44:24 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1270497.1559147; Wed, 01 Apr 2026 14:44: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 1w7wnw-0007kl-7x; Wed, 01 Apr 2026 14:44:24 +0000
Received: by outflank-mailman (input) for mailman id 1270497;
 Wed, 01 Apr 2026 14:44:23 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92) id 1w7wnv-0007kf-KB
 for xen-devel@lists.xenproject.org; Wed, 01 Apr 2026 14:44:23 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1w7wnt-001y0G-B6
 for xen-devel@lists.xenproject.org; Wed, 01 Apr 2026 16:44:22 +0200
Received: from [10.42.69.7] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <oleksii.kurochko@gmail.com>)
 id 69cd2f29-bab6-0a2a0a5309dd-0a2a450786ee-44
 for <xen-devel@lists.xenproject.org>; Wed, 01 Apr 2026 16:44:22 +0200
Received: from [209.85.221.42] (helo=mail-wr1-f42.google.com)
 by tlsNG-ef75cf.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.0)
 (envelope-from <oleksii.kurochko@gmail.com>)
 id 69cd2f46-ba2d-0a2a45070019-d155dd2ac8e5-3
 for <xen-devel@lists.xenproject.org>; Wed, 01 Apr 2026 16:44:22 +0200
Received: by mail-wr1-f42.google.com with SMTP id
 ffacd0b85a97d-43cfb723793so2297343f8f.2
 for <xen-devel@lists.xenproject.org>; Wed, 01 Apr 2026 07:44:22 -0700 (PDT)
Received: from ?IPV6:2a01:cb15:80df:da00:6d45:ff60:3ad6:d7fa?
 ([2a01:cb15:80df:da00:6d45:ff60:3ad6:d7fa])
 by smtp.gmail.com with ESMTPSA id
 ffacd0b85a97d-43d1e1fe0b0sm420081f8f.0.2026.04.01.07.44.21
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Wed, 01 Apr 2026 07:44:21 -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=20251104 header.d=gmail.com header.i="@gmail.com" header.h="Content-Transfer-Encoding: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=20251104; t=1775054662; x=1775659462; darn=lists.xenproject.org;
        h=content-transfer-encoding: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;
        bh=dpiVB9dBVzghSP8aA3dpY/N1hXuz4Q4Khlfyme9aK48=;
        b=nhVh6e+mAWTE74hW4ZLkGfxwOpjo4nRrrDraMFSCjAQEDwvtHTSq6aIK+5/Fm39InB
         LaLz29WWbYy1FPgCe23C0TGj9xocT0aRalcdT82NAI/Rp49asbZnmxFnLlQqUP+DE8EM
         9U0q0c4pci30/57Va7ZpHuySsuC6J3xHcEnKuZRFeCsEN8T7a2rHDaiFOn2rbgXvigPA
         VPN2eiAycitVfAGt5lIyc9wGzyl5Aap+NwhE6Hi+Nl1w2+sQT0MTu2zOZss6q6fCHsPa
         lLcc9xBeOHovniF4LvEIc9fh6s94ct9hXAPbp7TsJE7aYcMjdG+gMT+5lEKEExO3j8B5
         rqlg==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20251104; t=1775054662; x=1775659462;
        h=content-transfer-encoding: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;
        bh=dpiVB9dBVzghSP8aA3dpY/N1hXuz4Q4Khlfyme9aK48=;
        b=kzPHLkQVP/lW0djHoIG+SwjokvyS5rgZHS9ztz/YM+19mvikMaKU5OIiNV+lxmTWas
         CjJhSBW95rmEph1x3WPM24SsxUabcyOYy/GUHvY7Dkw2FIGAEoQFNeqTfVy/SN8yzbrC
         BN2Y7C/+10P0NFac9LTIJcY2sZnxDCSinGht6CQLC7BDHP5GItXfyYJ12JsjfYFqdGCT
         oGgiIJbG9cX7ZAQgx79Bs1yzSvbnNTsxQkO0hj5TdkEPcNWswteFk45mZf9nZoWpP8Nc
         te2TIHxPMT0p0DQ/YlWrEzx5tnVNpi6F+CalpB3FptUi+eSSwbdf2K+H84qTJFyO/qIH
         ishg==
X-Forwarded-Encrypted: i=1; AJvYcCXOOINzR0lEpCsjH4BbkZjxzkqIN02Ci5BazFxJdzz6jafUHchdg9KEKFOqola3mgXT64uA4lT3ph0=@lists.xenproject.org
X-Gm-Message-State: AOJu0Ywy9SDAg1EIUQTJN8BubtA4MInyB6snIEkhQkOB/KJcG6MoQuJw
	4Gmkp9GwUuqs0gK165Wqu1VCutVckbjYswkAubjaR5SYaZV1Hg9bDV/t
X-Gm-Gg: ATEYQzzVVq5sWbZiQaMS4awSnzY8H0G/MM6tW3Wx0cGqyTmooGOVBWBi/cRsC9U/fuO
	HkKeafRoTonOvYUWb3IEy0ULuDT4oAu/QJBOyRqWnZXPoOroT2J9IUPc69ihLt1OcgpiNaf9IRM
	fDgtHLzB0ggH+QtxY7xktN7ssBOMRu1iTS+JIs/McyFipirZC7XyK8cyfXGEhOv84jNSHSydGRl
	sQN6uGMxngbxkfmJQFXr6U3CtORIMuxdEX1+BvxgiNIGMn6BLql5Uc76GsI8y3e0ngQL2a9tLeR
	Kob0MD2Ixbk0cks21BFg2XArqpBA6HSnq5SyffqYEYhH9B+RCiwfU0GbF/bLtRJ32lQhSO/pYNo
	w1iHz4jGkEhJNy5ZZVW2Yd90hCQeS0YmfsnidmbwxfyOq5dOJi79Ft132HWdKb1xC6WINEDrs/e
	MeA8vqbndMggeqSZcKdOK9tid9V4f0EYH6Zom8oKCfB9gbhEYjA+EuAdCAKPWOfFb3Ar31sqjlB
	ol0Q/f0AAQ=
X-Received: by 2002:a05:6000:40ce:b0:43b:3cdc:9429 with SMTP id ffacd0b85a97d-43d15047f05mr7676711f8f.1.1775054662005;
        Wed, 01 Apr 2026 07:44:22 -0700 (PDT)
Message-ID: <7fd90eb0-1fe3-4985-83a1-1d0830ccbd6f@gmail.com>
Date: Wed, 1 Apr 2026 16:44:20 +0200
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH v2 07/11] xen: move domain_use_host_layout() to common
 code
To: Jan Beulich <jbeulich@suse.com>
Cc: Romain Caritey <Romain.Caritey@microchip.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.pau@citrix.com>,
 xen-devel@lists.xenproject.org
References: <cover.1774281309.git.oleksii.kurochko@gmail.com>
 <533d01db2b36b8357cd87e99a64a6e66dbdd1db4.1774281309.git.oleksii.kurochko@gmail.com>
 <6df9470e-4969-48d1-bf0c-c6569a5e5577@suse.com>
 <57581b7d-cb9f-444c-9321-63b2fc3d09f0@gmail.com>
 <d1288db4-2001-4914-919f-b613fd607bcc@suse.com>
 <d67b2856-bf93-4254-afa1-745dc37e0623@gmail.com>
 <38d93a26-dfce-4d4e-a1d2-c4e8d13c4ead@gmail.com>
 <a57b4cee-e230-4fc5-a7a6-a62635b54a76@suse.com>
Content-Language: en-US
From: Oleksii Kurochko <oleksii.kurochko@gmail.com>
In-Reply-To: <a57b4cee-e230-4fc5-a7a6-a62635b54a76@suse.com>
Content-Type: text/plain; charset=UTF-8; format=flowed
Content-Transfer-Encoding: 8bit
X-purgate-ID: tlsNG-ef75cf/1775054662-1175241E-4E53ADC2/10/73395122804
X-purgate-type: spam
X-purgate-size: 2015



On 4/1/26 7:59 AM, Jan Beulich wrote:
> On 31.03.2026 21:49, Oleksii Kurochko wrote:
>> On 3/31/26 6:32 PM, Oleksii Kurochko wrote:
>>>>>>> @@ -2544,6 +2544,12 @@ void thaw_domains(void)
>>>>>>>     #endif /* CONFIG_SYSTEM_SUSPEND */
>>>>>>> +bool domain_use_host_layout(struct domain *d)
>>>>>>> +{
>>>>>>> +    return is_domain_direct_mapped(d) ||
>>>>>>> +           (paging_mode_translate(d) && is_hardware_domain(d));
>>>>>>> +}
>>>>>>
>>>>>> The placement of paging_mode_translate() doesn't match ...
>>>>>>
>>>>>>> --- a/xen/include/xen/domain.h
>>>>>>> +++ b/xen/include/xen/domain.h
>>>>>>> @@ -62,6 +62,22 @@ void domid_free(domid_t domid);
>>>>>>>     #define is_domain_direct_mapped(d) ((d)->cdf & CDF_directmap)
>>>>>>>     #define is_domain_using_staticmem(d) ((d)->cdf & CDF_staticmem)
>>>>>>> +/*
>>>>>>> + * Is the auto-translated domain using the host memory layout?
>>>>>>> + *
>>>>>>> + * domain_use_host_layout() is always False for PV guests.
>>>>>>
>>>>>> ... the description of the function.
>>>>>
>>>>> But why the placement should be different?
>>>>
>>>> If you focus on auto-translated, then imo paging_mode_translate()
>>>> better would guard everything.
>>>
>>> Then it make sense to do in the following way:
>>>    bool domain_use_host_layout(struct domain *d)
>>>    {
>>> -    return is_domain_direct_mapped(d) ||
>>> -           (paging_mode_translate(d) && is_hardware_domain(d));
>>> +    return paging_mode_translate(d) &&
>>> +           (is_domain_direct_mapped(d) || is_hardware_domain(d));
>>>    }
>>
>> This is not really correct.
> 
> ... because of ... ? (After all, then the comment isn't correct either.)

I thought it could break what Arm had before when 
paging_mode_translate() is false, but it is always true for Arm, so with 
paging_mode_translate() being true, the new definition is equivalent to 
what it had before. So looks goods.

~ Oleksii


> 
> Jan



From xen-devel-bounces@lists.xenproject.org Wed Apr 01 14:48:16 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 01 Apr 2026 14:48:16 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1270509.1559156 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1w7wrd-000075-QU; Wed, 01 Apr 2026 14:48:13 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1270509.1559156; Wed, 01 Apr 2026 14: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 1w7wrd-00006y-NK; Wed, 01 Apr 2026 14:48:13 +0000
Received: by outflank-mailman (input) for mailman id 1270509;
 Wed, 01 Apr 2026 14:48:12 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <jbeulich@suse.com>) id 1w7wrc-00006s-8e
 for xen-devel@lists.xenproject.org; Wed, 01 Apr 2026 14:48:12 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1w7wrb-00GPst-80
 for xen-devel@lists.xenproject.org; Wed, 01 Apr 2026 16:48:11 +0200
Received: from [10.42.69.4] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <jbeulich@suse.com>)
 id 69cd300e-2eae-0a2a0a5409dd-0a2a4504dbc0-42
 for <xen-devel@lists.xenproject.org>; Wed, 01 Apr 2026 16:48:10 +0200
Received: from [209.85.128.42] (helo=mail-wm1-f42.google.com)
 by tlsNG-ebf023.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.0)
 (envelope-from <jbeulich@suse.com>)
 id 69cd2f3a-bb33-0a2a45040019-d155802ac9c2-3
 for <xen-devel@lists.xenproject.org>; Wed, 01 Apr 2026 16:44:10 +0200
Received: by mail-wm1-f42.google.com with SMTP id
 5b1f17b1804b1-48558d6ef83so70235065e9.3
 for <xen-devel@lists.xenproject.org>; Wed, 01 Apr 2026 07:44:10 -0700 (PDT)
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-4888a7162cesm3737325e9.13.2026.04.01.07.44.09
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Wed, 01 Apr 2026 07:44:09 -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=google header.d=suse.com header.i="@suse.com" header.h="Content-Transfer-Encoding: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=1775054650; x=1775659450; darn=lists.xenproject.org;
        h=content-transfer-encoding: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;
        bh=yM+IcA/45FK8r45buFv+NL4BNEigIPDwJQ4HKl9rj+k=;
        b=Norew4Bx0Gi96zOrQsbJ4OBhatl1J4JdvjZWOzuDr4TYL18y1UY2Vegz4NSMWww6kQ
         bsyq+rrIqMN1MQibXqI6G9rHKLk68Y0AY66HpeDWC0/uc1YgiHT0E6iXAc8v5u3MUYxf
         TWtQaET3ukQlcsnUf9/GnEgIAYBotHKvIhnkJ7Ww10Pe+buvNuq90NfUgDmvYCSY0bs1
         Fl02f4AxVoSzFlRYg53k5WIzAMkI/VKVu8++jzBxeE8kRfZlhDvosxaqIoB0aNwa4sR4
         OhNNHq0g/H3jm2U4Ms7gv4R/0NqpwfprZ4vLr+lpC6Vf4rQAiUscpM8RzvBOCP8lsO0A
         N+Dg==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20251104; t=1775054650; x=1775659450;
        h=content-transfer-encoding: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;
        bh=yM+IcA/45FK8r45buFv+NL4BNEigIPDwJQ4HKl9rj+k=;
        b=bZIvoT92SwoSYzpkWjO9srwHEeCmQaieRXkrcSiRqjQ1AlNwFCaBZdMY4syxQ4X9fm
         H1WbSHbpIH3VMsxXxs96GmkwMslzvnW2G/UQYtI9Xtq7yde40qLnBO7gxYUCjjEXmfWc
         On2/nkHPTGL19FCEzFPmJP19V8Eluh/CXEHSXRHSxBmU9usJAcCK4Ari2v0kE2feib3y
         IrDmzrqkj2bynBfhbYM1pgXvAPlgJdm1v4/yxBIAXDaJQlP1badCu+t5/EDf8+bjk2ZC
         6LP1tLmr4613VRunnCQXZGfwVTRVdd/w+uyuXGPaUw2SFDxjA+qTvL2aKwFWwIkyH139
         3Hcg==
X-Forwarded-Encrypted: i=1; AJvYcCVll2q/ZeJgsA3AKndFy+ffpmbzQHlafPIzn88V1vo3xMRnVGTU5gDbx2fGgGtFkacSZ3MhDlT5aSc=@lists.xenproject.org
X-Gm-Message-State: AOJu0YxVDb6ymNLTbEGr7oBQ7lhNjDv532eZVASh4gClKCEZoybt6Rk7
	SOECIyxfFn9NuxGzI2LSrxz8DMxyPx0lOYD5p8cv/3SQnrv7y9tqsq87tm9+SZzSgw==
X-Gm-Gg: ATEYQzxY62nSkeOY/i3xLa7iu804vVEeNnCpaWUGSCHDckQECnk4XgqbnbujHYnqvFN
	8b/tl83A3p1Y5WRxx84hm9xSM1PnHlg00mtfGaDJFWvwhTImRquaKsEr0JCNQyUjklPMSAiRUdY
	O3MMH7lboMUF3/aEP/vcaQNL/jjyFalL1TiYzQVdoosMs8VRVo8u02C06fRp3CK/2HV17lR5GP5
	efxTmSy3Efse29o5nTucYduCCN06cCCrKIaVQkZTTGhn0gAg0WOJCq6mOmkKmewXazULEkcMi0T
	PlgpkGryZf8H3FF7wQzMqMQ8kYv7sva6mwT3d/vPARBoo4LIZAxIhNjxx862r90qbSTVn5ZxQfH
	KkYjZBuAzgPRtHXEelvZaBQAVJCyxBYJbPuixkn+PEfb3k6IUSd1oFvgB0oHWtqQXtBtXDZIvbs
	/0JQh0f6eGIW4YgV1eGNEn3o8pcd53PJW/r3zG9SEaBGaKx4Z+k8l8SnPneFgUHfY9K23XDbDif
	x8TTrDgLz+9XeE=
X-Received: by 2002:a05:600c:6298:b0:477:7ae0:cd6e with SMTP id 5b1f17b1804b1-48883569e2cmr62366075e9.5.1775054649948;
        Wed, 01 Apr 2026 07:44:09 -0700 (PDT)
Message-ID: <f5763c51-80b1-44c2-88ff-036a96ba89ab@suse.com>
Date: Wed, 1 Apr 2026 16:44:08 +0200
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH v2 4/8] vpci: add a wait operation to the vpci vcpu
 pending actions
To: Mykyta Poturai <Mykyta_Poturai@epam.com>
Cc: =?UTF-8?Q?Roger_Pau_Monn=C3=A9?= <roger.pau@citrix.com>,
 Stewart Hildebrand <stewart.hildebrand@amd.com>,
 "xen-devel@lists.xenproject.org" <xen-devel@lists.xenproject.org>
References: <cover.1772806036.git.mykyta_poturai@epam.com>
 <ec941fbf4f8bde23fc3867e47f5ada028f8003aa.1772806036.git.mykyta_poturai@epam.com>
 <f546ae19-2107-469e-847b-7a4cde2c95fd@suse.com>
 <0275be7d-d1d9-47ee-bec2-bfbbb90b4bae@epam.com>
 <46f4a4c5-cc44-47d7-8d6d-03ddaa75bb7f@suse.com>
 <13714c88-838b-4dc7-bc0b-b6ca590fd944@epam.com>
 <8856a1d8-51f7-40ee-9def-570af5c6d42f@suse.com>
 <e5bead4b-7187-4190-94a4-e4881f6cfa8f@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: <e5bead4b-7187-4190-94a4-e4881f6cfa8f@epam.com>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
X-purgate-ID: tlsNG-ebf023/1775054650-B293951B-8D4C63A7/13/0
X-purgate-type: clean
X-purgate-size: 9225

On 01.04.2026 16:40, Mykyta Poturai wrote:
> 
> 
> On 4/1/26 17:14, Jan Beulich wrote:
>> On 01.04.2026 16:07, Mykyta Poturai wrote:
>>> On 4/1/26 11:21, Jan Beulich wrote:
>>>> On 01.04.2026 09:59, Mykyta Poturai wrote:
>>>>> On 3/31/26 17:55, Jan Beulich wrote:
>>>>>> On 09.03.2026 12:08, Mykyta Poturai wrote:
>>>>>>> --- a/xen/drivers/vpci/header.c
>>>>>>> +++ b/xen/drivers/vpci/header.c
>>>>>>> @@ -175,76 +175,92 @@ static void modify_decoding(const struct pci_dev *pdev, uint16_t cmd,
>>>>>>>     
>>>>>>>     bool vpci_process_pending(struct vcpu *v)
>>>>>>>     {
>>>>>>> -    const struct pci_dev *pdev = v->vpci.pdev;
>>>>>>> -    struct vpci_header *header = NULL;
>>>>>>> -    unsigned int i;
>>>>>>> -
>>>>>>> -    if ( !pdev )
>>>>>>> -        return false;
>>>>>>> -
>>>>>>> -    read_lock(&v->domain->pci_lock);
>>>>>>> -
>>>>>>> -    if ( !pdev->vpci || (v->domain != pdev->domain) )
>>>>>>> +    switch ( v->vpci.task )
>>>>>>>         {
>>>>>>> -        v->vpci.pdev = NULL;
>>>>>>> -        read_unlock(&v->domain->pci_lock);
>>>>>>> -        return false;
>>>>>>> -    }
>>>>>>> -
>>>>>>> -    header = &pdev->vpci->header;
>>>>>>> -    for ( i = 0; i < ARRAY_SIZE(header->bars); i++ )
>>>>>>> +    case MODIFY_MEMORY:
>>>>>>>         {
>>>>>>> -        struct vpci_bar *bar = &header->bars[i];
>>>>>>> -        struct rangeset *mem = v->vpci.bar_mem[i];
>>>>>>> -        struct map_data data = {
>>>>>>> -            .d = v->domain,
>>>>>>> -            .map = v->vpci.cmd & PCI_COMMAND_MEMORY,
>>>>>>> -            .bar = bar,
>>>>>>> -        };
>>>>>>> -        int rc;
>>>>>>> +        const struct pci_dev *pdev = v->vpci.memory.pdev;
>>>>>>> +        struct vpci_header *header = NULL;
>>>>>>> +        unsigned int i;
>>>>>>>     
>>>>>>> -        if ( rangeset_is_empty(mem) )
>>>>>>> -            continue;
>>>>>>> +        if ( !pdev )
>>>>>>> +            break;
>>>>>>>     
>>>>>>> -        rc = rangeset_consume_ranges(mem, map_range, &data);
>>>>>>> +        read_lock(&v->domain->pci_lock);
>>>>>>>     
>>>>>>> -        if ( rc == -ERESTART )
>>>>>>> +        if ( !pdev->vpci || (v->domain != pdev->domain) )
>>>>>>>             {
>>>>>>> +            v->vpci.memory.pdev = NULL;
>>>>>>>                 read_unlock(&v->domain->pci_lock);
>>>>>>> -            return true;
>>>>>>> +            break;
>>>>>>>             }
>>>>>>>     
>>>>>>> -        if ( rc )
>>>>>>> +        header = &pdev->vpci->header;
>>>>>>> +        for ( i = 0; i < ARRAY_SIZE(header->bars); i++ )
>>>>>>>             {
>>>>>>> -            spin_lock(&pdev->vpci->lock);
>>>>>>> -            /* Disable memory decoding unconditionally on failure. */
>>>>>>> -            modify_decoding(pdev, v->vpci.cmd & ~PCI_COMMAND_MEMORY,
>>>>>>> -                            false);
>>>>>>> -            spin_unlock(&pdev->vpci->lock);
>>>>>>> +            struct vpci_bar *bar = &header->bars[i];
>>>>>>> +            struct rangeset *mem = v->vpci.bar_mem[i];
>>>>>>> +            struct map_data data = {
>>>>>>> +                .d = v->domain,
>>>>>>> +                .map = v->vpci.memory.cmd & PCI_COMMAND_MEMORY,
>>>>>>> +                .bar = bar,
>>>>>>> +            };
>>>>>>> +            int rc;
>>>>>>> +
>>>>>>> +            if ( rangeset_is_empty(mem) )
>>>>>>> +                continue;
>>>>>>>     
>>>>>>> -            /* Clean all the rangesets */
>>>>>>> -            for ( i = 0; i < ARRAY_SIZE(header->bars); i++ )
>>>>>>> -                if ( !rangeset_is_empty(v->vpci.bar_mem[i]) )
>>>>>>> -                     rangeset_purge(v->vpci.bar_mem[i]);
>>>>>>> +            rc = rangeset_consume_ranges(mem, map_range, &data);
>>>>>>>     
>>>>>>> -            v->vpci.pdev = NULL;
>>>>>>> +            if ( rc == -ERESTART )
>>>>>>> +            {
>>>>>>> +                read_unlock(&v->domain->pci_lock);
>>>>>>> +                return true;
>>>>>>> +            }
>>>>>>>     
>>>>>>> -            read_unlock(&v->domain->pci_lock);
>>>>>>> +            if ( rc )
>>>>>>> +            {
>>>>>>> +                spin_lock(&pdev->vpci->lock);
>>>>>>> +                /* Disable memory decoding unconditionally on failure. */
>>>>>>> +                modify_decoding(pdev, v->vpci.memory.cmd & ~PCI_COMMAND_MEMORY,
>>>>>>> +                                false);
>>>>>>> +                spin_unlock(&pdev->vpci->lock);
>>>>>>> +
>>>>>>> +                /* Clean all the rangesets */
>>>>>>> +                for ( i = 0; i < ARRAY_SIZE(header->bars); i++ )
>>>>>>> +                    if ( !rangeset_is_empty(v->vpci.bar_mem[i]) )
>>>>>>> +                        rangeset_purge(v->vpci.bar_mem[i]);
>>>>>>> +
>>>>>>> +                v->vpci.memory.pdev = NULL;
>>>>>>> +
>>>>>>> +                read_unlock(&v->domain->pci_lock);
>>>>>>>     
>>>>>>> -            if ( !is_hardware_domain(v->domain) )
>>>>>>> -                domain_crash(v->domain);
>>>>>>> +                if ( !is_hardware_domain(v->domain) )
>>>>>>> +                    domain_crash(v->domain);
>>>>>>>     
>>>>>>> -            return false;
>>>>>>> +                break;
>>>>>>> +            }
>>>>>>>             }
>>>>>>> -    }
>>>>>>> -    v->vpci.pdev = NULL;
>>>>>>> +        v->vpci.memory.pdev = NULL;
>>>>>>>     
>>>>>>> -    spin_lock(&pdev->vpci->lock);
>>>>>>> -    modify_decoding(pdev, v->vpci.cmd, v->vpci.rom_only);
>>>>>>> -    spin_unlock(&pdev->vpci->lock);
>>>>>>> +        spin_lock(&pdev->vpci->lock);
>>>>>>> +        modify_decoding(pdev, v->vpci.memory.cmd, v->vpci.memory.rom_only);
>>>>>>> +        spin_unlock(&pdev->vpci->lock);
>>>>>>>     
>>>>>>> -    read_unlock(&v->domain->pci_lock);
>>>>>>> +        read_unlock(&v->domain->pci_lock);
>>>>>>> +
>>>>>>> +        break;
>>>>>>> +    }
>>>>>>> +    case WAIT:
>>>>>>> +        if ( NOW() < v->vpci.wait.end )
>>>>>>> +            return true;
>>>>>>> +        v->vpci.wait.callback(v->vpci.wait.data);
>>>>>>> +        break;
>>>>>>
>>>>>> As just indicated in reply to patch 6, busy waiting isn't really acceptable.
>>>>>> This is even more so when the waiting exceeds the typical length of a
>>>>>> scheduling timeslice.
>>>>>>
>>>>>> In that other reply I said to put the vCPU to sleep, but you need to be careful
>>>>>> there too: The domain may not expect its vCPU to not make any progress for such
>>>>>> an extended period of time. This may need doing entirely differently: Once the
>>>>>> command register was written, you may want to record the time after which
>>>>>> accesses to the VF registers are permitted. Earlier accesses would simply be
>>>>>> terminated. You may still additionally need a timer, in order to kick off BAR
>>>>>> mapping after that time. (Yet better would  be if the BAR mapping could be
>>>>>> done during those 100ms. After all that may be a reason why this long a delay
>>>>>> is specified: Firmware on the device may also require some time to set up the
>>>>>> BARs accordingly.)
>>>>>
>>>>> I am not sure it would work that way. If we look at how linux
>>>>> initialized sriov, it writes VFE and MSE bits, waits 100ms and then
>>>>> expects VFs to be operational. If they are not operational at that
>>>>> moment, then it considers the operation failed and removes all VFs. If
>>>>> we also wait 100ms before enabling access, the probability of a guest
>>>>> trying to access something before we allow it would be very high.
>>>>
>>>> Well, not really. Our counting of the 100ms necessarily starts before Dom0's.
>>>> Furthermore it may be acceptable (or even appropriate) to stall premature
>>>> accesses (because they shouldn't occur in the first place), by blocking the
>>>> vCPU at that point. A middle route may be possible: Terminate accesses in,
>>>> say, the first 90ms, and stall the vCPU for any access past that, but before
>>>> the 100ms expired.
>>>
>>> Is there any real benefit to doing all this work instead of just waiting
>>> for Dom0 to register the FVs? Implementing it the way you described
>>> would require a relatively complex state machine and two timers per
>>> sriov-capable device. And will also probably require some hacks to
>>> handle partially initialized VFs in Xen. This adds a lot of work and
>>> many possible bugs for not a lot of benefit in my opinion.
>>
>> Odd that you ask me this question. If there was no benefit, why did you do
>> it this way?
> 
> Roger asked for this approach in V1, and I saw that it can be done in a 
> relatively straightforward way, so I implemented it. I didn’t exactly 
> get what the benefits were, but I assumed that there are some and the 
> effort is not too big to just do it if the maintainers are asking for it.
> 
> Now with the posibility of redoing everything *again* and making it much 
> more complex I started to really think if its really needed. So I want 
> to know your and others' opinions on registering VFs with Dom0.

Well, before I voice any view here I'd need to understand why Roger wanted
it done like that. (Apparently you must have agreed sufficiently to not
ask back.)

Jan


From xen-devel-bounces@lists.xenproject.org Wed Apr 01 14:49:34 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 01 Apr 2026 14:49:34 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1270519.1559164 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1w7wss-0000t4-3h; Wed, 01 Apr 2026 14:49:30 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1270519.1559164; Wed, 01 Apr 2026 14: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 1w7wss-0000sx-0u; Wed, 01 Apr 2026 14:49:30 +0000
Received: by outflank-mailman (input) for mailman id 1270519;
 Wed, 01 Apr 2026 14:49:28 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <jbeulich@suse.com>) id 1w7wsq-0000sp-NL
 for xen-devel@lists.xenproject.org; Wed, 01 Apr 2026 14:49:28 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1w7wsp-005rvH-UO
 for xen-devel@lists.xenproject.org; Wed, 01 Apr 2026 16:49:27 +0200
Received: from [10.42.69.6] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <jbeulich@suse.com>)
 id 69cd3067-e002-0a2a0a5209dd-0a2a4506afa8-26
 for <xen-devel@lists.xenproject.org>; Wed, 01 Apr 2026 16:49:27 +0200
Received: from [209.85.221.54] (helo=mail-wr1-f54.google.com)
 by tlsNG-16d1c6.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.0)
 (envelope-from <jbeulich@suse.com>)
 id 69cd2ed0-0df0-0a2a45060019-d155dd36a82b-3
 for <xen-devel@lists.xenproject.org>; Wed, 01 Apr 2026 16:42:24 +0200
Received: by mail-wr1-f54.google.com with SMTP id
 ffacd0b85a97d-43b949bf4easo741872f8f.0
 for <xen-devel@lists.xenproject.org>; Wed, 01 Apr 2026 07:42:24 -0700 (PDT)
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-4888a71615fsm2671605e9.12.2026.04.01.07.42.23
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Wed, 01 Apr 2026 07:42:23 -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=google header.d=suse.com header.i="@suse.com" header.h="Content-Transfer-Encoding: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=1775054544; x=1775659344; darn=lists.xenproject.org;
        h=content-transfer-encoding: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;
        bh=dJGJXJR1M4p6XhI9b433b+HJBvyLg0Kh3Ht7B/jYeBk=;
        b=GuNoAmwZW8EkT6IapaSEX3kZpNNliPojUs37JtNXjuDRYzGr+wyrTa7YMiYYUXQT5G
         TyhwRGX1AfKuNTDA5Z6NA6WwX9NSXFA1jh20Xos4EuPmrcfYOoqmsw7Yv6IRZ1PIavsr
         b7m5wxyzDToiPV87ulfH8ogjKUTPyrs8HIoUTA+HcecU1qPBPIghAwldTrIOJy5C/Nv7
         moL9jwjevhiwCrj7dXNmxatO3HIqUqdJbazW9aZiUokM04X3tzexr7OStEVTJ9669G4O
         k/3mhtH9dXmVptNrs1VL208obhjGrG/tOG3E0fBd+1uLwoGaoFBhbjrkheuvYXROADMi
         DKrQ==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20251104; t=1775054544; x=1775659344;
        h=content-transfer-encoding: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;
        bh=dJGJXJR1M4p6XhI9b433b+HJBvyLg0Kh3Ht7B/jYeBk=;
        b=hOgLo2w29iZ9RPcmo6pfxWWR59jNPjgvNH1xXoCsdcc1yGIwrCIk1UTTc+sJIHRigd
         dZvUrXyXzjODTmZA5Bagv6mlmwbNIqyZIG/IvS99VjSI9E2A0EQ2U2H5ZUkDf6jaK8ML
         QUn+WsTH5XuW9LjE0RoYbb9WPINH8JYEFMXV1ZgrtAJoJe5TTTq66hij9fk5rPaSYZhj
         lWuQeiOR85jQ4LekVDaBFUwEg0jOi1efK4DQckWb/ItYWVBuRtKhVuplQ+SjNqNFqLfi
         WDgQmgnC5yOwESgUJr0Kz6F+wF+pYmU475bjH04fxUYnR8SBzP630jQKdfEX5m1gw2EG
         Hm4A==
X-Forwarded-Encrypted: i=1; AJvYcCXvmAa7MOu3ynaS5AVEDZctQ0/iMxwwEEwphAMxO7an+/F+X1dZiUcroiDAbuSI7WdRIOcB3grc1B4=@lists.xenproject.org
X-Gm-Message-State: AOJu0Yw5yJdZ2sExaHEoFr/61Cvz+c4nfq6mdoUvTZ01hkqtaCAEcOSn
	5qNtu0HOugY8/INPQ8O76yXkjaq6wEscqqEtcwYBhLSaVkxoBYWB5CFCd4Bfy7UsNQ==
X-Gm-Gg: ATEYQzxDR3XJ4kHr09ct7ZDBHvNfDXKiz11Q236Q993EypS61cSsAvmnKLhhVg1IStY
	tQ4m3IHhftXyVoF43mqEn+ILDGRhz7IAM7px0j5t/sDj3Wr8WZ4eTdWyZdmsC3GRXKq8mqUZrfQ
	ShLLLZdfTPH20l3GAHPe9lcva/PMStIlLS2pHNUhtxlm+8gYQwsyFSNuu/GnNjT2Mt6ULBk1HVo
	wANnzNztDNv9Z4bxBwr9K5amGku5KIsF6kduoLDO+OIJ8YLbAvGlwya5vEbqNIOmE0qwIdDwwAw
	PAF/v7G04iAOJernYuNbxXHL+0zsVmeELgFsNPdaVe0JccbN5mZiJZv07y4vs19aVzVEZwJ/Jr0
	IzaI/zQvYcNI36EFnNJ5LQvnTeLumfED3gvEz36ptb8Px8jNV3WI/TqEyDV7/qoPBp0DJshe19V
	4X63N0mBmXt5/kGa8I774ny8oMsuOkFndagUhr5YCCtKnJXtYaAuxnvU2AkJ/0rDL0F/ez9uYX+
	avYZ6pJt04HP2c=
X-Received: by 2002:a05:600c:3e1a:b0:486:fbc4:8fe2 with SMTP id 5b1f17b1804b1-488835d166amr61875095e9.15.1775054544098;
        Wed, 01 Apr 2026 07:42:24 -0700 (PDT)
Message-ID: <dd39f5b0-1276-403f-a607-47caceaa151e@suse.com>
Date: Wed, 1 Apr 2026 16:42:22 +0200
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH v2 07/11] xen: move domain_use_host_layout() to common
 code
To: Oleksii Kurochko <oleksii.kurochko@gmail.com>
Cc: Romain Caritey <Romain.Caritey@microchip.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.pau@citrix.com>,
 xen-devel@lists.xenproject.org
References: <cover.1774281309.git.oleksii.kurochko@gmail.com>
 <533d01db2b36b8357cd87e99a64a6e66dbdd1db4.1774281309.git.oleksii.kurochko@gmail.com>
 <6df9470e-4969-48d1-bf0c-c6569a5e5577@suse.com>
 <57581b7d-cb9f-444c-9321-63b2fc3d09f0@gmail.com>
 <d1288db4-2001-4914-919f-b613fd607bcc@suse.com>
 <d67b2856-bf93-4254-afa1-745dc37e0623@gmail.com>
 <cdacc6a8-cd49-4327-a98c-636545e8579b@suse.com>
 <600b1b66-fd85-4b7f-8bdc-793667bccfec@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: <600b1b66-fd85-4b7f-8bdc-793667bccfec@gmail.com>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 7bit
X-purgate-ID: tlsNG-16d1c6/1775054544-658533D8-99C9EB55/0/0
X-purgate-type: clean
X-purgate-size: 3870

On 01.04.2026 16:38, Oleksii Kurochko wrote:
> 
> 
> On 4/1/26 7:58 AM, Jan Beulich wrote:
>> On 31.03.2026 18:32, Oleksii Kurochko wrote:
>>> On 3/31/26 5:53 PM, Jan Beulich wrote:
>>>> On 31.03.2026 17:20, Oleksii Kurochko wrote:
>>>>> On 3/30/26 5:13 PM, Jan Beulich wrote:
>>>>>> On 23.03.2026 17:29, Oleksii Kurochko wrote:
>>>>>>> domain_use_host_layout() is not really architecture-specific, so move it
>>>>>>> from the Arm header to the common header xen/domain.h and provide a common
>>>>>>> implementation in xen/common/domain.c. domain_use_host_layout() potentially
>>>>>>> is needed for x86 [1].
>>>>>> No matter that this may indeed be true, ...
>>>>>>
>>>>>>> Turn the macro into a function to avoid header dependency issues.
>>>>>> ... this introduces unreachable code on x86, i.e. a Misra rule 2.1 violation.
>>>>> Do we have some deviation tag for such cases when the code temporary
>>>>> isn't used?
>>>> I'm sorry, but it'll take me about as long as you to find out.
>>> Sure, I will take a look. I just thought that maybe you have a solution
>>> already just in your head.
>> Well, I do: Don't make this an out-of-line function.
>>
>>>    I wonder
>>>> about "temporary" though: Do you have a clear understanding as to when
>>>> that will change?
>>> No, I don't. As Stefano mentioned they will need this function one day.
>>> Another option we could use ifndef x86 or ifdef DOM0_LESS and then when
>>> someone will really need it on x86, this ifdef will be dropped. I don't
>>> know if it is better solution.
>>>
>>> It seems like the best one solution will still make a try to make
>>> declare this function as macro.
>> Or an inline function. There's nothing ...
>>
>>>>>>> @@ -2544,6 +2544,12 @@ void thaw_domains(void)
>>>>>>>     
>>>>>>>     #endif /* CONFIG_SYSTEM_SUSPEND */
>>>>>>>     
>>>>>>> +bool domain_use_host_layout(struct domain *d)
>>>>>>> +{
>>>>>>> +    return is_domain_direct_mapped(d) ||
>>>>>>> +           (paging_mode_translate(d) && is_hardware_domain(d));
>>>>>>> +}
>>>>>> The placement of paging_mode_translate() doesn't match ...
>>>>>>
>>>>>>> --- a/xen/include/xen/domain.h
>>>>>>> +++ b/xen/include/xen/domain.h
>>>>>>> @@ -62,6 +62,22 @@ void domid_free(domid_t domid);
>>>>>>>     #define is_domain_direct_mapped(d) ((d)->cdf & CDF_directmap)
>>>>>>>     #define is_domain_using_staticmem(d) ((d)->cdf & CDF_staticmem)
>>>>>>>     
>>>>>>> +/*
>>>>>>> + * Is the auto-translated domain using the host memory layout?
>>>>>>> + *
>>>>>>> + * domain_use_host_layout() is always False for PV guests.
>>>>>> ... the description of the function.
>>>>> But why the placement should be different?
>>>> If you focus on auto-translated, then imo paging_mode_translate()
>>>> better would guard everything.
>>> Then it make sense to do in the following way:
>>>    bool domain_use_host_layout(struct domain *d)
>>>    {
>>> -    return is_domain_direct_mapped(d) ||
>>> -           (paging_mode_translate(d) && is_hardware_domain(d));
>>> +    return paging_mode_translate(d) &&
>>> +           (is_domain_direct_mapped(d) || is_hardware_domain(d));
>>>    }
>> ... in here which clearly speaks against doing so. And yes, this is what I
>> was asking for (with the function parameter also suitably constified).
> 
> I expect that with an inline function in xen/domain.h compiler will want 
> have paging_mode_translate() be explicitly defined, so an inclusion of 
> xen/paging.h will be needed, but likely I am wrong that it will be 
> needed it the case of inline function.

I don't think you're wrong with that. What I don't understand is why it
needs to be xen/domain.h where the function would be placed. If need be
you could make an entirely new header, where (presumably) you're not
going to have any include recursion concerns.

Jan


From xen-devel-bounces@lists.xenproject.org Wed Apr 01 14:54:05 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 01 Apr 2026 14:54:05 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1270532.1559175 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1w7wxH-0002Ro-QD; Wed, 01 Apr 2026 14:54:03 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1270532.1559175; Wed, 01 Apr 2026 14:54: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 1w7wxH-0002Rh-M6; Wed, 01 Apr 2026 14:54:03 +0000
Received: by outflank-mailman (input) for mailman id 1270532;
 Wed, 01 Apr 2026 14:54:02 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92) id 1w7wxG-0002Rb-Hv
 for xen-devel@lists.xenproject.org; Wed, 01 Apr 2026 14:54:02 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1w7wxF-007GUn-UJ
 for xen-devel@lists.xenproject.org; Wed, 01 Apr 2026 16:54:01 +0200
Received: from [10.42.69.10] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <oleksii.kurochko@gmail.com>)
 id 69cd317d-2eae-0a2a0a5409dd-0a2a450aaddc-26
 for <xen-devel@lists.xenproject.org>; Wed, 01 Apr 2026 16:54:01 +0200
Received: from [209.85.128.53] (helo=mail-wm1-f53.google.com)
 by tlsNG-4011c0.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.0)
 (envelope-from <oleksii.kurochko@gmail.com>)
 id 69cd3189-ee98-0a2a450a0019-d1558035a58b-3
 for <xen-devel@lists.xenproject.org>; Wed, 01 Apr 2026 16:54:01 +0200
Received: by mail-wm1-f53.google.com with SMTP id
 5b1f17b1804b1-486fc4725f0so13566105e9.1
 for <xen-devel@lists.xenproject.org>; Wed, 01 Apr 2026 07:54:01 -0700 (PDT)
Received: from ?IPV6:2a01:cb15:80df:da00:6d45:ff60:3ad6:d7fa?
 ([2a01:cb15:80df:da00:6d45:ff60:3ad6:d7fa])
 by smtp.gmail.com with ESMTPSA id
 5b1f17b1804b1-4887c8d07cesm40615615e9.28.2026.04.01.07.54.00
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Wed, 01 Apr 2026 07:54:00 -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=20251104 header.d=gmail.com header.i="@gmail.com" header.h="Content-Transfer-Encoding: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=20251104; t=1775055241; x=1775660041; darn=lists.xenproject.org;
        h=content-transfer-encoding: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;
        bh=x18CamjqcpqcCAvMAgi2ortnoWMbij82oStnuyc+r70=;
        b=LOk2Gs866PULF0x7H90RZh5DZiPu+kBp1flTzpP8OANEjXwkOuuXdNckk8UsH3aSqJ
         huxfGkjQhTXOOr9r6AU4BjNnFn0GqhzFFM6IwMhywzJjTAixdfXSpTMo1zKHSzlNtjyB
         5wYLnfGQdxzOH4q+CSv/p9wSIGsr1/Xcof9A+yG/1yi1Y8hl1VPOvIcBYy54v8f+G+u6
         gKVeZZ1hdvpL0Kmohj4w0RuUWgSby08BQokzRA2n+xergS184/ZR/FdR+KTixzvH7+jI
         mnKjsd5VE3DSaRqP9ysGUqh7Kfkq9ii8VY0HbGchIm+I3l3PD8KyKuNlr5bWiaJIGojQ
         XSSA==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20251104; t=1775055241; x=1775660041;
        h=content-transfer-encoding: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;
        bh=x18CamjqcpqcCAvMAgi2ortnoWMbij82oStnuyc+r70=;
        b=pvwHuaVuZz2DokPQMdu+uqaCqwE3L+P2TumglCCVL33qFxQClOWUHVAdv5D4+xKapV
         StNO4EorMCLxQ43j9LzICTE1VntDY6LfF04nzGZpIBdwQTP59SZyEfhPt66bikyKfLlC
         JbxmLTNOhB7PYOybxUybIn+qVbfk1F7usp0palNMbsI6wtR81ORMEUYuZvN51N3EZaI9
         yhkQX0M0XESm355G9H41fBvVPA6CEgzRJfPwZrP3W0w/vFR23/jILbivgFBRhSEk1sdr
         bmpBj0eHqFA2LEljaIQvxaJ4f/kgZDtwro8tUoUTibvHG257ZfeziAqeyxx0PQgb+GHK
         BZTg==
X-Forwarded-Encrypted: i=1; AJvYcCX7oHmM75woY3vtEF7/uDucKEhwQj+ecQrKut40F2D+OAQeyyHU8b3fIdH8TPTL3vW6UA/rmbHEpiY=@lists.xenproject.org
X-Gm-Message-State: AOJu0YzeIz/z9KBF3VprAbWEDLvlndpudoVXmyfz2uxOHWMP2IBOPI+/
	eCCw09LqriGkymt6VU/eHpgxX7EpaxaAkKbuuXy9p88+GhAYC54sowmi
X-Gm-Gg: ATEYQzxNEUDdWMVeTl2mjHuzY+MICO/ttoN2PWYC4+MIemx5gXxbV9KqJ0VkZ0vStpZ
	tAGncClX0fcCA34430JZOKql5kG87S93h5vd3j6SQpV7EWfzARdomMUDEVDG8RN4MQ0hmcKYIEH
	NlfT8wRoERJNeIxKZX62QNwoXllfy0H87a3jaSiyBUwUvWaBkwC9wP+PeecbgFe6o74R51i8ATy
	YTWtaruH05zngS04rjM5xc40fZ8OLGclDoEY/cJgSP+WiJU/Jtv2Gx+TV5Z7b0TbGdq/91Lk+ye
	vxW/pJmlojXZiIteNItuzgLYkAEBMS0oXTS8Ll15+OuEDOhQ2rBTY03F+gaGAkAHWKteWSGL2lq
	ma7hXeAZWF96nKUszFLz30XdQW8+uiygeUikd5Jy0TO2TuV7GnadLqTmWbShG+A4kS2PTCxg6Fi
	DWrdHjM59xF1uqSmW9vUZ1D97B4zmvpI6geSFyxOzEWfoTkurj4DbtsjQXe/WYtUmF8yJ+lzdKu
	ypVA7gQ88Lb
X-Received: by 2002:a05:600c:1d0e:b0:486:faa8:9e4 with SMTP id 5b1f17b1804b1-488835bc1acmr62516155e9.12.1775055241099;
        Wed, 01 Apr 2026 07:54:01 -0700 (PDT)
Message-ID: <bc5a9826-c1ff-43b2-a3d1-1a4862301aea@gmail.com>
Date: Wed, 1 Apr 2026 16:53:59 +0200
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH v2 10/11] xen/riscv: add definition of guest RAM banks
To: Jan Beulich <jbeulich@suse.com>
Cc: Romain Caritey <Romain.Caritey@microchip.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.pau@citrix.com>,
 Stefano Stabellini <sstabellini@kernel.org>, xen-devel@lists.xenproject.org
References: <cover.1774281309.git.oleksii.kurochko@gmail.com>
 <8278256f3d270b456d19cb9891b89b88a46548a5.1774281309.git.oleksii.kurochko@gmail.com>
 <1a3a316e-f0ea-4514-95d6-9813d6d5ca76@suse.com>
 <691be850-9145-4bbf-a897-d10a0193b730@gmail.com>
 <dfd2a666-f3a5-4d88-b034-438f8fbb85ba@suse.com>
 <2bae9e12-8f71-4ff0-b077-bfb4215e5e14@gmail.com>
 <ffd3a7cd-8c47-4a9b-864a-26a053b5b7d2@suse.com>
Content-Language: en-US
From: Oleksii Kurochko <oleksii.kurochko@gmail.com>
In-Reply-To: <ffd3a7cd-8c47-4a9b-864a-26a053b5b7d2@suse.com>
Content-Type: text/plain; charset=UTF-8; format=flowed
Content-Transfer-Encoding: 7bit
X-purgate-ID: tlsNG-4011c0/1775055241-BFB450B1-75D45DB8/10/73395122804
X-purgate-type: spam
X-purgate-size: 1990



On 4/1/26 4:22 PM, Jan Beulich wrote:
> On 01.04.2026 15:57, Oleksii Kurochko wrote:
>> On 4/1/26 8:17 AM, Jan Beulich wrote:
>>> On 31.03.2026 18:14, Oleksii Kurochko wrote:
>>>> On 3/30/26 5:51 PM, Jan Beulich wrote:
>>>>> On 23.03.2026 17:29, Oleksii Kurochko wrote:
>>>>>> The dom0less solution uses defined RAM banks as compile-time constants,
>>>>>> so introduce macros to describe guest RAM banks.
>>>>>>
>>>>>> The reason for 2 banks is that there is typically always a use case for
>>>>>> low memory under 4 GB, but the bank under 4 GB ends up being small because
>>>>>> there are other things under 4 GB it can conflict with (interrupt
>>>>>> controller, PCI BARs, etc.).
>>>>> Fixed layouts like the one you suggest come with (potentially severe)
>>>>> downsides. For example, what if more than 2Gb of MMIO space are needed
>>>>> for non-64-bit BARs?
>>>> It looks where usually RAM on RISC-V boards start, so I expect that 2gb
>>>> before RAM start is enough for MMIO space.
>>> Likely in the common case. Board designers aren't constrained by this,
>>> though (aiui). Whereas you set in stone a single, fixed layout.
>>>
>>> Arm maintainers - since a similar fixed layout is used there iirc,
>>> could you chime in here, please?
>>>
>>>> Answering your question it will be an issue or it will also use some
>>>> space before banks, no?
>>> I fear I don't understand what you're trying to tell me.
>> I meant that there is also some space between banks and pretty big which
>> could be used for MMIO which could be used for non-64-bit BARs.
> I don't follow: Bank 0 extends to 4G. There's no space above it, below
> bank 1, which could be use for non-64-bit BARs.

So we have two banks:
bank[0] -> [0x80000000, 0x100000000)
bank[1] -> [0x0200000000, 10000000000)

So i think we have some space between them [0x100000000, 0x0200000000) 
-> 4gb to be used for non-64-bit BARs.

And also we have another 2gb before bank[0].

~ Oleksii


From xen-devel-bounces@lists.xenproject.org Wed Apr 01 14:58:36 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 01 Apr 2026 14:58:36 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1270545.1559193 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1w7x1d-0003iB-Jz; Wed, 01 Apr 2026 14:58:33 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1270545.1559193; Wed, 01 Apr 2026 14:58: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 1w7x1d-0003i3-EW; Wed, 01 Apr 2026 14:58:33 +0000
Received: by outflank-mailman (input) for mailman id 1270545;
 Wed, 01 Apr 2026 14:58:32 +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 1w7x1b-0003hW-V0
 for xen-devel@lists.xenproject.org; Wed, 01 Apr 2026 14:58:32 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1w7x1b-001u1t-Ag
 for xen-devel@lists.xenproject.org; Wed, 01 Apr 2026 16:58:31 +0200
Received: from [10.42.69.9] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <Michal.Orzel@amd.com>)
 id 69cd328b-5cb7-0a2a0a5109dd-0a2a45099c52-8
 for <xen-devel@lists.xenproject.org>; Wed, 01 Apr 2026 16:58:30 +0200
Received: from [40.93.201.23]
 (helo=CY3PR05CU001.outbound.protection.outlook.com)
 by tlsNG-bad1c0.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.0)
 (envelope-from <Michal.Orzel@amd.com>)
 id 69cd3295-bf79-0a2a45090019-285dc917bd8a-3
 for <xen-devel@lists.xenproject.org>; Wed, 01 Apr 2026 16:58:30 +0200
Received: from CH0PR04CA0080.namprd04.prod.outlook.com (2603:10b6:610:74::25)
 by IA1PR12MB9523.namprd12.prod.outlook.com (2603:10b6:208:595::18)
 with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9769.18; Wed, 1 Apr
 2026 14:58:23 +0000
Received: from CH2PEPF00000149.namprd02.prod.outlook.com
 (2603:10b6:610:74:cafe::93) by CH0PR04CA0080.outlook.office365.com
 (2603:10b6:610:74::25) with Microsoft SMTP Server (version=TLS1_3,
 cipher=TLS_AES_256_GCM_SHA384) id 15.20.9745.30 via Frontend Transport; Wed,
 1 Apr 2026 14:58:23 +0000
Received: from satlexmb07.amd.com (165.204.84.17) by
 CH2PEPF00000149.mail.protection.outlook.com (10.167.244.106) with Microsoft
 SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id
 15.20.9769.17 via Frontend Transport; Wed, 1 Apr 2026 14:58:22 +0000
Received: from SATLEXMB04.amd.com (10.181.40.145) by satlexmb07.amd.com
 (10.181.42.216) with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.2.2562.17; Wed, 1 Apr
 2026 09:58:22 -0500
Received: from satlexmb08.amd.com (10.181.42.217) by SATLEXMB04.amd.com
 (10.181.40.145) with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2507.39; Wed, 1 Apr
 2026 09:58:22 -0500
Received: from XIR-MICHALO-L1.xilinx.com (10.180.168.240) by
 satlexmb08.amd.com (10.181.42.217) with Microsoft SMTP Server id 15.2.2562.17
 via Frontend Transport; Wed, 1 Apr 2026 09:58:20 -0500
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@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=BFlQpEVCUBJhdVIdHrGMAfcHEr5+bhfxDG8kD5PfwF6ZROOhkhMVptqfNLFN/JTi+Xl1DaM05l6cMYPI+sN7htLtQrdwdqs8Kmuh0JIl2Yp75L5GsgBMEk0ELM0W/1t/hXTrRTUR5+Jp15DLvKPRSHFNQcbfeS+l+IKGL4HcJxZp/KisVm0JehBLhoXs3EfirYj6LgLdTtpdDKL+EwLf40X2IkbaDz4XQh4g2ND/KNiNrDur6uL2eBe7++Mfp221p0ay9ApJQTggUrNtrJHke0hUut/05SljehjQlDvT2++Hxe4R0i+AufZ8x8EAhzaERoTJ4oQGKgRXKpXbLJ0g8g==
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com;
 s=arcselector10001;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1;
 bh=uo2M5ShFMFkpBNGfNOdv7BCV8+gKP2tZKik3PjF1G/I=;
 b=jq2hevditdIQzA19X/ZKQ9AQNAwJ37wfaUkJIANEbTb+KdQP4IYdsUOstWyHEt7EOdT085obF8bk2z/xvHnm6Nc0pIiwOdZI5UeW9T7Q6oOoi4dIDOS5JTt8xLATod2iKzKtrgWUidIJztvCr1VpIwy2mDaZy8gV7uisTNBwdX6BduR/IqihkGo4QptlHHlNbQ30OLjgwp914YdTb6KJBaDPenHjQgfguF6gPIG1vgpLJ0AuBPOz0YqTFOKL36Nv01o0qSuDEVOXVU/e2NT1RQAlkMTOjR+7hKzRarIoxIMAjOda9TK58iyo5r1mqtqN2P7m4LX6KCqk5HvwUt+wsw==
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=uo2M5ShFMFkpBNGfNOdv7BCV8+gKP2tZKik3PjF1G/I=;
 b=hi+iS+E+pEc9Vd75ZNMkbwzBz1tJJn8JUDaP4Xm08TBsnWXMruDcUnC+TmTGdJL5uHZMu2lnViWjwdMPmJ/9Kto0Fh8CE+rvF5j3KDfEpQr/9je2q/YpE7RPl170nUIvbvELhTajFKmYkh1sde09hfMve5tMLei41ZCQ0wvBZks=
X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 165.204.84.17)
 smtp.mailfrom=amd.com; dkim=none (message not signed)
 header.d=none;dmarc=pass action=none header.from=amd.com;
Received-SPF: Pass (protection.outlook.com: domain of amd.com designates
 165.204.84.17 as permitted sender) receiver=protection.outlook.com;
 client-ip=165.204.84.17; helo=satlexmb07.amd.com; pr=C
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 1/3] xen/arm: acpi: Rename local acpi_size to avoid shadowing typedef
Date: Wed, 1 Apr 2026 16:58:14 +0200
Message-ID: <20260401145816.169557-2-michal.orzel@amd.com>
X-Mailer: git-send-email 2.43.0
In-Reply-To: <20260401145816.169557-1-michal.orzel@amd.com>
References: <20260401145816.169557-1-michal.orzel@amd.com>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit
Content-Type: text/plain
Received-SPF: None (SATLEXMB04.amd.com: michal.orzel@amd.com does not
 designate permitted sender hosts)
X-EOPAttributedMessage: 0
X-MS-PublicTrafficType: Email
X-MS-TrafficTypeDiagnostic: CH2PEPF00000149:EE_|IA1PR12MB9523:EE_
X-MS-Office365-Filtering-Correlation-Id: 4920bb35-0988-49b5-d3d7-08de8fff1eb6
X-MS-Exchange-SenderADCheck: 1
X-MS-Exchange-AntiSpam-Relay: 0
X-Microsoft-Antispam:
	BCL:0;ARA:13230040|376014|82310400026|36860700016|1800799024|18002099003|56012099003|22082099003;
X-Microsoft-Antispam-Message-Info:
	4IPKsd9U65PeYPDvfCJ4sdHcosoLG0GH0QixQPntgIxjuxSXzQwtlLRpAViJzlq1PjbrVDpaQOMhosHeNO3kNefMlHzHVDdwDZ9vDaj0JOMskFn+rvlbMoIQhGn3aUHIgeVCRCDBED/1smbs7ZsLZKHOahxjvSJ63gvMlJ7VfJCcA79XJKlm4zRdwEjHPH5nL+viMlhU4VNFQY/2ceXS2e5j6RoBfG81lLUjmfrqSKzW1ka62JLcgC1YhDoArH6deKiEjAPULmbhCdwQI+d84hR8qu7+hmJMw9i1tbxtV7H0Quc2C/JVzjJiLJSQq2ZfMqYF7gRCkbkac9RB4ADDEkYGUhMRoQBZJlaRVT/CREg9fdy89XHVP4qNCXIld8fP8VccdUxKnh4OGA0iV9Sh6M2u9DtUBXo7cBH8aOCvQBbXmpfFlgoM5csEBEtcy7wpoOs/vQncnIZnhbu0KZ+1mTEYIrwUQjW9PD6YGuOsyt32G8SGgcfornhoo/WAUd1IjCap/vnG9MpF+efwStq3EAfLp1X6SYwsSd3SlT5eALW8+/qO+qlPSiPPepqOBIkuR5bQ9tmPae+t9lRCN+/MvzuYI57uj6LvVtyub7JRpx66QJsn75yIdQu141x0WiijiQtvcIMtGil9gdOUxFHzpUWzRN0vHqkFSja9r3XS59Pfu0OE+wYWwerHFJAllEUpAyPjlKzoG7Gvxa1SYqaDCbsUCCSXp31DXw1n5P4Qe2cKPTEBxFMI5HOscGrwSAAWyl2kCFrS6IST6nBc5Lg7Kg==
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)(36860700016)(1800799024)(18002099003)(56012099003)(22082099003);DIR:OUT;SFP:1101;
X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1
X-MS-Exchange-AntiSpam-MessageData-0:
	MdIC+eLYGsSz9HVa3WNUwB4SBMVQ1V7IFjIqh9OIEu7eb8uKsbU48RZVpbkkVlj1TTusILNq9uCT/6iLCQqiGtGiCKvkgVBoDZp/VmM3AIzX/0utsfwYC5aQJUhJvZwTVK+YfAf6QXokRN/7v5RM2HkPv3N74GPc1cCrYpGnSn1ve9M5ko/7oE30OY2z7pdb0zS6N9TddwVyLn9NuG7Ce7Qkx9dLHRbnWlNdoJUW5RJyB96yNJKMbsYSDwsnZM5kvxp2xU61PLBNfeTQgzv7vjrQl8FW7mmSDi7CFVkLHDG28Kqqfz7TJ2xr6181JemPY9oeTl34u38+qGT2m8n/svVCwD/DbH1g5Z/NHoUQlRKXI0OU8M6N52PckjeJoCgDRaBbKfYO7F/WZ9zqyTWMLLi1vipVVY5dpYX8SX66oVfTJfQi7dL7G9kFjbjCkk3J
X-OriginatorOrg: amd.com
X-MS-Exchange-CrossTenant-OriginalArrivalTime: 01 Apr 2026 14:58:22.7348
 (UTC)
X-MS-Exchange-CrossTenant-Network-Message-Id: 4920bb35-0988-49b5-d3d7-08de8fff1eb6
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:
	CH2PEPF00000149.namprd02.prod.outlook.com
X-MS-Exchange-CrossTenant-AuthAs: Anonymous
X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem
X-MS-Exchange-Transport-CrossTenantHeadersStamped: IA1PR12MB9523
X-purgate-ID: tlsNG-bad1c0/1775055510-5734C152-E07CEAC3/0/0
X-purgate-type: clean
X-purgate-size: 2215

Rename the local variable acpi_size to acpi_len in
estimate_acpi_efi_size() to avoid shadowing the acpi_size typedef
from xen/include/acpi/actypes.h.

This resolves a MISRA C Rule 5.6 violation.

Signed-off-by: Michal Orzel <michal.orzel@amd.com>
---
 xen/arch/arm/acpi/domain_build.c | 14 +++++++-------
 1 file changed, 7 insertions(+), 7 deletions(-)

diff --git a/xen/arch/arm/acpi/domain_build.c b/xen/arch/arm/acpi/domain_build.c
index 1c3555d814cc..5a117001ef11 100644
--- a/xen/arch/arm/acpi/domain_build.c
+++ b/xen/arch/arm/acpi/domain_build.c
@@ -447,18 +447,18 @@ static int __init acpi_create_fadt(struct domain *d, struct membank tbl_add[])
 static int __init estimate_acpi_efi_size(struct domain *d,
                                          const struct kernel_info *kinfo)
 {
-    size_t efi_size, acpi_size, madt_size;
+    size_t efi_size, acpi_len, madt_size;
     u64 addr;
     struct acpi_table_rsdp *rsdp_tbl;
     struct acpi_table_header *table;
 
     efi_size = estimate_efi_size(kernel_info_get_mem_const(kinfo)->nr_banks);
 
-    acpi_size = ROUNDUP(sizeof(struct acpi_table_fadt), 8);
-    acpi_size += ROUNDUP(sizeof(struct acpi_table_stao), 8);
+    acpi_len = ROUNDUP(sizeof(struct acpi_table_fadt), 8);
+    acpi_len += ROUNDUP(sizeof(struct acpi_table_stao), 8);
 
     madt_size = gic_get_hwdom_madt_size(d);
-    acpi_size += ROUNDUP(madt_size, 8);
+    acpi_len += ROUNDUP(madt_size, 8);
 
     addr = acpi_os_get_root_pointer();
     if ( !addr )
@@ -484,12 +484,12 @@ static int __init estimate_acpi_efi_size(struct domain *d,
     }
 
     /* Add place for STAO table in XSDT table */
-    acpi_size += ROUNDUP(table->length + sizeof(u64), 8);
+    acpi_len += ROUNDUP(table->length + sizeof(u64), 8);
     acpi_os_unmap_memory(table, sizeof(struct acpi_table_header));
 
-    acpi_size += ROUNDUP(sizeof(struct acpi_table_rsdp), 8);
+    acpi_len += ROUNDUP(sizeof(struct acpi_table_rsdp), 8);
     d->arch.efi_acpi_len = PAGE_ALIGN(ROUNDUP(efi_size, 8)
-                                      + ROUNDUP(acpi_size, 8));
+                                      + ROUNDUP(acpi_len, 8));
 
     return 0;
 }
-- 
2.43.0



From xen-devel-bounces@lists.xenproject.org Wed Apr 01 14:58:36 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 01 Apr 2026 14:58:36 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1270544.1559183 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1w7x1Z-0003UJ-Aj; Wed, 01 Apr 2026 14:58:29 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1270544.1559183; Wed, 01 Apr 2026 14:58: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 1w7x1Z-0003UC-7U; Wed, 01 Apr 2026 14:58:29 +0000
Received: by outflank-mailman (input) for mailman id 1270544;
 Wed, 01 Apr 2026 14:58:28 +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 1w7x1X-0003S3-TX
 for xen-devel@lists.xenproject.org; Wed, 01 Apr 2026 14:58:28 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1w7x1W-005trN-UM
 for xen-devel@lists.xenproject.org; Wed, 01 Apr 2026 16:58:26 +0200
Received: from [10.42.69.3] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <Michal.Orzel@amd.com>)
 id 69cd328d-2eae-0a2a0a5409dd-0a2a4503e650-12
 for <xen-devel@lists.xenproject.org>; Wed, 01 Apr 2026 16:58:26 +0200
Received: from [52.101.61.37]
 (helo=DM1PR04CU001.outbound.protection.outlook.com)
 by tlsNG-33051d.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.0)
 (envelope-from <Michal.Orzel@amd.com>)
 id 69cd3290-02b3-0a2a45030019-34653d25e2a0-3
 for <xen-devel@lists.xenproject.org>; Wed, 01 Apr 2026 16:58:26 +0200
Received: from SN6PR2101CA0029.namprd21.prod.outlook.com
 (2603:10b6:805:106::39) by CY8PR12MB7609.namprd12.prod.outlook.com
 (2603:10b6:930:99::17) with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9769.16; Wed, 1 Apr
 2026 14:58:21 +0000
Received: from SN1PEPF000397B4.namprd05.prod.outlook.com
 (2603:10b6:805:106:cafe::2a) by SN6PR2101CA0029.outlook.office365.com
 (2603:10b6:805:106::39) with Microsoft SMTP Server (version=TLS1_3,
 cipher=TLS_AES_256_GCM_SHA384) id 15.20.9791.7 via Frontend Transport; Wed, 1
 Apr 2026 14:58:21 +0000
Received: from satlexmb08.amd.com (165.204.84.17) by
 SN1PEPF000397B4.mail.protection.outlook.com (10.167.248.58) with Microsoft
 SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id
 15.20.9769.17 via Frontend Transport; Wed, 1 Apr 2026 14:58:21 +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.17; Wed, 1 Apr
 2026 09:58:20 -0500
Received: from XIR-MICHALO-L1.xilinx.com (10.180.168.240) by
 satlexmb08.amd.com (10.181.42.217) with Microsoft SMTP Server id 15.2.2562.17
 via Frontend Transport; Wed, 1 Apr 2026 09:58:19 -0500
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@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=kvH1+WYR4u44VIbj1ZDoNTAy7gC4Y7g3qdnyoPzP58Cyg5GsyMaPtMRxNdvKc5kp1L8100IgQVYYSpKNSq+eL6Gz8MQ9XrdXIl4uqJhPNldcu2T53UdVHrbjIgIqS/YnS0GMC2SILKhEx0G7ykUYbbC5NrCQT1as4fVhAVuhmfzKVkL2bIqgXd2DO7gYP6BHzofeGMZx84mYClwYn3Bkfx6GKy1G2bq+po2QL9XitplYt4oOOYycACKLx/9qWvxtpJFTtam8JAtVS+OmBoGEUVsiAdEtLmkng4Rklr45moemkP5PQmmMtapVVen57WTlqjOAe/CGliasa8P22CQ5Dg==
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com;
 s=arcselector10001;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1;
 bh=/6x352bgL+ioYyETa7UTjzMbqZIqRNZIhkl+Rlwv5oM=;
 b=YNVra7WginesFmqJC4p0EmPpQTOXCeIy3OBPHoINjpphZ54/SZDJN9Q5Mye6Fmdbqd72b57T9QEguD+xiTrVLBqhOfvyVVsRp6DJlEevhOZenI0epBfR00xA1XQvyBgpygEcrCX4TK2PyybQhOx5jlE54CfO9VuUOri838dy7/Mu45rbqgRA4sTK2B6tfm7a43XHlxkCwT7dcnel6FvuQ+J1tLVhYzpGzAyUDKqw84O6DAJtYdcTkuv8kedCTZb//cgihq47JZo1TXIvmIllu82UIS8Ohfn5IDyAa0JbffRTEYqqw1voOMRU9ssmxtt7hrOnlU0aeszbgKT0Ofc8/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=/6x352bgL+ioYyETa7UTjzMbqZIqRNZIhkl+Rlwv5oM=;
 b=mO5baLAN7oMRODFGGa+dGZD2abOQY5TtnXOkzr6TnuvHe1DI2BguXxWLGHw0l2Rh91S1g/BzazBzKTdSZ7Q2SiTMwuf6POdH4lshPothY/x94nykezssFS6opIB0CkzvUSIYsFj7wy6m70cIILlLLvfTBmLDz/Xe1kzBx8l1dL8=
X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 165.204.84.17)
 smtp.mailfrom=amd.com; dkim=none (message not signed)
 header.d=none;dmarc=pass action=none header.from=amd.com;
Received-SPF: Pass (protection.outlook.com: domain of amd.com designates
 165.204.84.17 as permitted sender) receiver=protection.outlook.com;
 client-ip=165.204.84.17; helo=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>,
	Mykyta Poturai <mykyta_poturai@epam.com>
Subject: [PATCH 0/3] Misc MISRA fixes from Arm allcode report
Date: Wed, 1 Apr 2026 16:58:13 +0200
Message-ID: <20260401145816.169557-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: SN1PEPF000397B4:EE_|CY8PR12MB7609:EE_
X-MS-Office365-Filtering-Correlation-Id: bdf7f565-f81e-4286-a423-08de8fff1dcc
X-MS-Exchange-SenderADCheck: 1
X-MS-Exchange-AntiSpam-Relay: 0
X-Microsoft-Antispam:
	BCL:0;ARA:13230040|1800799024|82310400026|36860700016|376014|13003099007|56012099003|18002099003;
X-Microsoft-Antispam-Message-Info:
	0TXx+FWuSchZzeRoKexlGLt2a1dg8wKrMHArQ4M7sXfKFb3bBEx4XzDOHpISY4IzFxopNCQKIjKKdCbDKJLlPJxbcHNZJOMsigH2gDm2qxOaZSOzmyoi9rueoO0i43BnydyXXf4IdRPlwHerPh/T79pWeQxTIu/9xvCaDc5tWwIdLGiKBN2/mZNfovrP43bjkRjYuCnBuzPAS51Z2ptGku8jA+pYJGKzglSQ/SsbHhKMuPMU4rWS5HDOt0kJ2D/ya62TdDGuhGVJe/oEgW69+uFG1vRLgt5V3fodz/yVncsV/hglxloVQkY4MFyQig7EZ/8xdvyrMaX1JKhJBQt8Ub9N5l282scW6ETGRIqSX6J+v60qptuPVAkpJnkPSmTyzPVJv58KXmgJw1NzP/0EtyoVTXRwBJW3MQZtRUOW26SCBWLWDHmkBEQFQ6T+HMqlIK0O/RbSzQu6oi/MKBn1QU8MUrDYc8Gq3h5uVtGorIXuSUsW7xOtJkd40UTPapR2KWwsOooZkmrSMsGI9QYcFT97Utpwr27O72LVmsQuGxeS5279HCPvmNdpbia9knWGjsdm4NyGwN44eagda9P/WaxQi+MUlyTD2OEy6sCYxg6JDI/T4qWM4arnlbouHc+bXHDiGpVCNfc88YZx3H3ZihvRlUWam+T+N0eppm17HZSYwgp8FBWc7nT8AIzKF8CgHryNzEPHVBmIYsUyTGIoI9Vn5ldpkXO1MaoZMm+u+u4Ssg39JJV8MNFLd5OLaaLF34dmCMSsbMsVNJBkjvY4GQ==
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)(36860700016)(376014)(13003099007)(56012099003)(18002099003);DIR:OUT;SFP:1101;
X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1
X-MS-Exchange-AntiSpam-MessageData-0:
	xprQlIcsZYhhxDF8oPQGQTC0FEmg9mGofl4Uokt/o9FFnBSkL5A/6Mz8Xzd9cEuRF+V8HL3uZW6HbeOv9Od0Pn2HAkbyHy8DAfb0KaUckVpWNPiTwSonBf5zinAJWI8qI+Ye27vcfnkIp8nRZ//5lR7PlXzLvDG+utZHss2r5cTJjy64LmIQeemQoWeJmOtJ3lJS/bEw0xLU4cpDl/47xotGjC/sBRXfzXADlAd2M0S/NVUgQBIIQgREwoPUfqTZPUQao+0bmY844rYeBAW4R+H4DKygQEcsIR0YV86T7AYQjBDH2J6bKGnvR5Uj4soa2NyQJwbook+g1sfVQnNL2ka4JcWagfFXjW34a+uueNUHMbIeyjfQhZZmHQjnZuqR10vfjT3OIxSSp3GZKcv2sjjGOHk2zv2OJS1MV9q5X40Oh8TG38NibmYBMtxh4MvL
X-OriginatorOrg: amd.com
X-MS-Exchange-CrossTenant-OriginalArrivalTime: 01 Apr 2026 14:58:21.2243
 (UTC)
X-MS-Exchange-CrossTenant-Network-Message-Id: bdf7f565-f81e-4286-a423-08de8fff1dcc
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:
	SN1PEPF000397B4.namprd05.prod.outlook.com
X-MS-Exchange-CrossTenant-AuthAs: Anonymous
X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem
X-MS-Exchange-Transport-CrossTenantHeadersStamped: CY8PR12MB7609
X-purgate-ID: tlsNG-33051d/1775055506-C9F3DC9A-797C54C2/0/0
X-purgate-type: clean
X-purgate-size: 828

The number of violations for clean rules drops from 22 down to 5:
https://gitlab.com/xen-project/people/morzel/xen/-/pipelines/2423381226

Michal Orzel (3):
  xen/arm: acpi: Rename local acpi_size to avoid shadowing typedef
  xen/arm: pci: Narrow scope of file-local symbols
  xen/arm: vpci: Move content of xen/arch/arm/vpci.h to arch header

 xen/arch/arm/acpi/domain_build.c   | 14 +++++-----
 xen/arch/arm/domain.c              |  2 +-
 xen/arch/arm/include/asm/vpci.h    | 18 +++++++++++++
 xen/arch/arm/pci/pci-host-common.c |  4 +--
 xen/arch/arm/pci/pci-host-rcar4.c  |  5 ++--
 xen/arch/arm/pci/pci-host-zynqmp.c |  2 +-
 xen/arch/arm/vpci.h                | 42 ------------------------------
 7 files changed, 32 insertions(+), 55 deletions(-)
 delete mode 100644 xen/arch/arm/vpci.h

-- 
2.43.0



From xen-devel-bounces@lists.xenproject.org Wed Apr 01 14:58:38 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 01 Apr 2026 14:58:38 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1270546.1559201 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1w7x1i-0003zG-Ou; Wed, 01 Apr 2026 14:58:38 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1270546.1559201; Wed, 01 Apr 2026 14:58: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 1w7x1i-0003z6-Lw; Wed, 01 Apr 2026 14:58:38 +0000
Received: by outflank-mailman (input) for mailman id 1270546;
 Wed, 01 Apr 2026 14:58: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 1w7x1h-0003xe-8X
 for xen-devel@lists.xenproject.org; Wed, 01 Apr 2026 14:58:37 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1w7x1g-001u1t-KT
 for xen-devel@lists.xenproject.org; Wed, 01 Apr 2026 16:58:36 +0200
Received: from [10.42.69.9] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <Michal.Orzel@amd.com>)
 id 69cd328b-5cb7-0a2a0a5109dd-0a2a45099c52-14
 for <xen-devel@lists.xenproject.org>; Wed, 01 Apr 2026 16:58:36 +0200
Received: from [40.93.194.21]
 (helo=SN4PR0501CU005.outbound.protection.outlook.com)
 by tlsNG-bad1c0.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.0)
 (envelope-from <Michal.Orzel@amd.com>)
 id 69cd329a-bf79-0a2a45090019-285dc215fbb0-3
 for <xen-devel@lists.xenproject.org>; Wed, 01 Apr 2026 16:58:35 +0200
Received: from PH7P220CA0059.NAMP220.PROD.OUTLOOK.COM (2603:10b6:510:32b::23)
 by PH7PR12MB7235.namprd12.prod.outlook.com (2603:10b6:510:206::14)
 with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9769.18; Wed, 1 Apr
 2026 14:58:25 +0000
Received: from SN1PEPF000397B0.namprd05.prod.outlook.com
 (2603:10b6:510:32b:cafe::1) by PH7P220CA0059.outlook.office365.com
 (2603:10b6:510:32b::23) with Microsoft SMTP Server (version=TLS1_3,
 cipher=TLS_AES_256_GCM_SHA384) id 15.20.9745.31 via Frontend Transport; Wed,
 1 Apr 2026 14:58:18 +0000
Received: from satlexmb08.amd.com (165.204.84.17) by
 SN1PEPF000397B0.mail.protection.outlook.com (10.167.248.54) with Microsoft
 SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id
 15.20.9769.17 via Frontend Transport; Wed, 1 Apr 2026 14:58:25 +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.17; Wed, 1 Apr
 2026 09:58:25 -0500
Received: from XIR-MICHALO-L1.xilinx.com (10.180.168.240) by
 satlexmb08.amd.com (10.181.42.217) with Microsoft SMTP Server id 15.2.2562.17
 via Frontend Transport; Wed, 1 Apr 2026 09:58:23 -0500
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@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=vshDJzq/1FUERdJW0zOu2eT2OixXCDRJ4A4TZQe3PDypbEF2wDzmIdHrWrpwiV2hznn3DnvkYomqJKzrwKBfxdnXsXFUtsavKOelNK6g7jX6Ds5DsgXO7faWKiPe32ZtfRvI7zOItP8+d/IQTKOiLM8Ap9kwbSZb195FDQUmi/OXEx043rH4ceR9/Ny4Cbz2gWtlwHhiiUG/8bQaXqRZBpie6ibl7cbQmbviKbUZDV1poKsK83iz7sveOMrsdPW1WONjVpQfndbCCLaXCcYWQWPgxzPcnEzp2zgd9akTee4vhTZhi2+vhJ7umiVLQUneHj8fMY/GHtFijQkSUkrNXw==
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com;
 s=arcselector10001;
 h=From:Date:Subject:Message-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/HuOQxA0RHFb08ApkVbZL0fHFl6S6/91W7UGQFdUAk=;
 b=HonZ5FwcO+J247mAGfzHa1sXEYCuEjJG7Mr8LdH7yLV9fVt4MNm0NVZcdBebyl2GcizZX43PADyEon8QPKb0RQTOXoQMwdyz2OYUzc+/G9nCZelJehUgO2xctx4VMg/RlhDMYxz3oyZGab4P3n7ZMt/QtfH4Uyuv+ysPzg4B1qXoKyzGCHK7LPIVBM2cP92/rVaeyXQL2GC/uLEfbFxuy2xft4p7Gx5XtWXHU7zCp4uuIRZBDl63Di9Uj3kDU4ceF8yNturUIUbuh8jCo/X0X5YyLvufX/Nie9rDuiJCWcBGoTdJQi82PiboBePU0gNptawNbzyJPHvPsltMXFCz/Q==
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=B/HuOQxA0RHFb08ApkVbZL0fHFl6S6/91W7UGQFdUAk=;
 b=IcCllfrW6PPIK06LU5ktab2JXZ7Kl3W/oExQI1V/+XGB0b4X4tipoIgJd8pOPAvuYV49YQ7PTdbI+o80heM1/UaXXj+mxiQ714k6T52gX03MSr+HDlePHBQFJ44dqytWepNHjOpIT4bKGKXQmftYPX8RrEH67nPi9O0WdqN5Uvs=
X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 165.204.84.17)
 smtp.mailfrom=amd.com; dkim=none (message not signed)
 header.d=none;dmarc=pass action=none header.from=amd.com;
Received-SPF: Pass (protection.outlook.com: domain of amd.com designates
 165.204.84.17 as permitted sender) receiver=protection.outlook.com;
 client-ip=165.204.84.17; helo=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 3/3] xen/arm: vpci: Move content of xen/arch/arm/vpci.h to arch header
Date: Wed, 1 Apr 2026 16:58:16 +0200
Message-ID: <20260401145816.169557-4-michal.orzel@amd.com>
X-Mailer: git-send-email 2.43.0
In-Reply-To: <20260401145816.169557-1-michal.orzel@amd.com>
References: <20260401145816.169557-1-michal.orzel@amd.com>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit
Content-Type: text/plain
X-EOPAttributedMessage: 0
X-MS-PublicTrafficType: Email
X-MS-TrafficTypeDiagnostic: SN1PEPF000397B0:EE_|PH7PR12MB7235:EE_
X-MS-Office365-Filtering-Correlation-Id: 9bfc84cb-a4bd-472b-52a3-08de8fff205f
X-MS-Exchange-SenderADCheck: 1
X-MS-Exchange-AntiSpam-Relay: 0
X-Microsoft-Antispam:
	BCL:0;ARA:13230040|376014|82310400026|36860700016|1800799024|18002099003|22082099003|56012099003;
X-Microsoft-Antispam-Message-Info:
	c/mEPU9RjHryXAPoPXBb+PQeogepqtvCkH1itRG+ng4DoE5DBJFxVobuTFcsVqzrmPNOdcsd3VjFn7NVeaw4NZDnXKSFJJoDfhq5LRmruNAaMuhW1ad75RV3U9QIW3uZR3Myyvwr/itHNbYem0LxuGsHQP9gh350i+vvruk9t+zmzgsr70gZVIQIRAjPSemmIkUcMhsLbGUN8VGZFZpHGNxhTDDaY5zARLcIeRs+N5PuVroGRfdefG4qbofa6jmHxhmw8tPRI3Z8HJejGToq9yDOvS0JlDWG2xy84qhldfu0kIlq/10SCEP0gmpQzumlIH1PvLliWueDLtAHZWOXHJoT6UTMBD+Tx32CVbvyuD6FFBKpTZloWQH6MkctZV7aMea0Nz9kBL5BtPDriqU9Nf5L6TlBX0tXXhZeEKJtUMw0vZwi+aJyPIhmOmKNLQR/+ipxwmMXF9KpBLF4uVuX/nW7txWsCvCVbpWsPLsLhlcyE5aORa9HxjBBtujUNuSBb+ibl8j1KbarfNKe+b8jDC+YQblQTZOZ+yOjTRZQowwSueJWjINAZLpGUJTDhpGfe37EBzDuL0RYdQAF58WRmZm+SbejhWeVz9YyM+NPm2aOVR1EmvykWe072a9SvpeZ+Hc+9Tiig9mK4qbS7ZwRpz9kp2m3R7sV7/eZv6qffJo6Ej8uknzFPtBPi9pkTRuGLIlOVQk1yR79gUfKaV/bzGSkxKNaD1gdEvNjJtQ9zL5xSdCQLEu5NO36V47P4UZISACKnQN6fva3mkMNR8Q8cA==
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)(1800799024)(18002099003)(22082099003)(56012099003);DIR:OUT;SFP:1101;
X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1
X-MS-Exchange-AntiSpam-MessageData-0:
	nsSG0nyfapMxnBAK2ag+8i+B5zRzLhMsVCz615KbxFaxVF8DovMuoLVkYemtMrJqHS6NemZvnHGREx7CEKWfJrUbXT8t3uH1NWDC9sBvMZKizCir25TZ8tu61Vo0J7md0oomCFzDDb1HwYMvfgeY6YwwZ4BcxNBBo6MY2nfimdHMtHtOMKzc6ThAzm2riyfKXn6IBrXktU2MP1QFuS1UgE1MmaysN2jMrCfHbxcXOgzue4W0nTPoNywk7qmfC+GT1eSE44TpxLLzIEYH7NswLD7fY+2ringWoUo3KeEQzUV3hK99LS42SBSlw1JDPAWed0kauIEoBKWbyMmQT+6hH/gGt5A7fpp7u1zced24Q/QMGdLBrFxh7GZbo2C74RZwnh8Py5FXRJJ6Fe0570vR5Cpg8U4cUYPTkQykRO6aESGDKinfNTqSDJg7mvOoxwFe
X-OriginatorOrg: amd.com
X-MS-Exchange-CrossTenant-OriginalArrivalTime: 01 Apr 2026 14:58:25.5138
 (UTC)
X-MS-Exchange-CrossTenant-Network-Message-Id: 9bfc84cb-a4bd-472b-52a3-08de8fff205f
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:
	SN1PEPF000397B0.namprd05.prod.outlook.com
X-MS-Exchange-CrossTenant-AuthAs: Anonymous
X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem
X-MS-Exchange-Transport-CrossTenantHeadersStamped: PH7PR12MB7235
X-purgate-ID: tlsNG-bad1c0/1775055516-55F56152-6D3BC427/0/0
X-purgate-type: clean
X-purgate-size: 3589

Move domain_vpci_init() and domain_vpci_get_num_mmio_handlers()
declarations from the private xen/arch/arm/vpci.h into the public
xen/arch/arm/include/asm/vpci.h, and remove the now redundant
private header.

Update domain.c to include <asm/vpci.h> instead of the removed private
header.

This ensures the declarations are visible where the functions are
defined, resolving a MISRA C Rule 8.4 violation.

Signed-off-by: Michal Orzel <michal.orzel@amd.com>
---
I'm moving a file with GPL2+ license to a file with GPL2-only. I consider this
ok in this case becase the copyright on a file with just prototypes does not
make any sense and a license text was most likely blindly copy-pasted like for
most of the files in that era.
---
 xen/arch/arm/domain.c           |  2 +-
 xen/arch/arm/include/asm/vpci.h | 18 ++++++++++++++
 xen/arch/arm/vpci.h             | 42 ---------------------------------
 3 files changed, 19 insertions(+), 43 deletions(-)
 delete mode 100644 xen/arch/arm/vpci.h

diff --git a/xen/arch/arm/domain.c b/xen/arch/arm/domain.c
index 581f82bddd48..26380a807cad 100644
--- a/xen/arch/arm/domain.c
+++ b/xen/arch/arm/domain.c
@@ -31,10 +31,10 @@
 #include <asm/tee/tee.h>
 #include <asm/vfp.h>
 #include <asm/vgic.h>
+#include <asm/vpci.h>
 #include <asm/vpsci.h>
 #include <asm/vtimer.h>
 
-#include "vpci.h"
 #include "vuart.h"
 
 DEFINE_PER_CPU(struct vcpu *, curr_vcpu);
diff --git a/xen/arch/arm/include/asm/vpci.h b/xen/arch/arm/include/asm/vpci.h
index db04687fc099..0cc6f5a10532 100644
--- a/xen/arch/arm/include/asm/vpci.h
+++ b/xen/arch/arm/include/asm/vpci.h
@@ -2,6 +2,9 @@
 #ifndef ARM_VPCI_H
 #define ARM_VPCI_H
 
+struct domain;
+
+#ifdef CONFIG_HAS_VPCI
 /* Arch-specific MSI data for vPCI. */
 struct vpci_arch_msi {
 };
@@ -10,4 +13,19 @@ struct vpci_arch_msi {
 struct vpci_arch_msix_entry {
 };
 
+
+int domain_vpci_init(struct domain *d);
+unsigned int domain_vpci_get_num_mmio_handlers(struct domain *d);
+#else
+static inline int domain_vpci_init(struct domain *d)
+{
+    return 0;
+}
+
+static inline unsigned int domain_vpci_get_num_mmio_handlers(struct domain *d)
+{
+    return 0;
+}
+#endif /* CONFIG_HAS_VPCI */
+
 #endif /* ARM_VPCI_H */
diff --git a/xen/arch/arm/vpci.h b/xen/arch/arm/vpci.h
deleted file mode 100644
index 3c713f3fcdb5..000000000000
--- a/xen/arch/arm/vpci.h
+++ /dev/null
@@ -1,42 +0,0 @@
-/*
- * xen/arch/arm/vpci.h
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU General Public License for more details.
- */
-
-#ifndef __ARCH_ARM_VPCI_H__
-#define __ARCH_ARM_VPCI_H__
-
-#ifdef CONFIG_HAS_VPCI
-int domain_vpci_init(struct domain *d);
-unsigned int domain_vpci_get_num_mmio_handlers(struct domain *d);
-#else
-static inline int domain_vpci_init(struct domain *d)
-{
-    return 0;
-}
-
-static inline unsigned int domain_vpci_get_num_mmio_handlers(struct domain *d)
-{
-    return 0;
-}
-#endif
-
-#endif /* __ARCH_ARM_VPCI_H__ */
-
-/*
- * Local variables:
- * mode: C
- * c-file-style: "BSD"
- * c-basic-offset: 4
- * indent-tabs-mode: nil
- * End:
- */
-- 
2.43.0



From xen-devel-bounces@lists.xenproject.org Wed Apr 01 14:58:48 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 01 Apr 2026 14:58:48 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1270553.1559210 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1w7x1s-0004SU-7z; Wed, 01 Apr 2026 14:58:48 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1270553.1559210; Wed, 01 Apr 2026 14:58: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 1w7x1s-0004SN-4O; Wed, 01 Apr 2026 14:58:48 +0000
Received: by outflank-mailman (input) for mailman id 1270553;
 Wed, 01 Apr 2026 14:58:46 +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 1w7x1q-0004Oo-8R
 for xen-devel@lists.xenproject.org; Wed, 01 Apr 2026 14:58:46 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1w7x1p-005twE-Kg
 for xen-devel@lists.xenproject.org; Wed, 01 Apr 2026 16:58:45 +0200
Received: from [10.42.69.3] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <Michal.Orzel@amd.com>)
 id 69cd328d-2eae-0a2a0a5409dd-0a2a4503e650-48
 for <xen-devel@lists.xenproject.org>; Wed, 01 Apr 2026 16:58:45 +0200
Received: from [40.93.194.23]
 (helo=SN4PR0501CU005.outbound.protection.outlook.com)
 by tlsNG-33051d.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.0)
 (envelope-from <Michal.Orzel@amd.com>)
 id 69cd32a3-02b3-0a2a45030019-285dc217cd90-3
 for <xen-devel@lists.xenproject.org>; Wed, 01 Apr 2026 16:58:45 +0200
Received: from PH7P220CA0036.NAMP220.PROD.OUTLOOK.COM (2603:10b6:510:32b::35)
 by PH8PR12MB6937.namprd12.prod.outlook.com (2603:10b6:510:1bc::15)
 with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9769.16; Wed, 1 Apr
 2026 14:58:24 +0000
Received: from SN1PEPF000397B0.namprd05.prod.outlook.com
 (2603:10b6:510:32b:cafe::6c) by PH7P220CA0036.outlook.office365.com
 (2603:10b6:510:32b::35) with Microsoft SMTP Server (version=TLS1_3,
 cipher=TLS_AES_256_GCM_SHA384) id 15.20.9745.30 via Frontend Transport; Wed,
 1 Apr 2026 14:58:18 +0000
Received: from satlexmb08.amd.com (165.204.84.17) by
 SN1PEPF000397B0.mail.protection.outlook.com (10.167.248.54) with Microsoft
 SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id
 15.20.9769.17 via Frontend Transport; Wed, 1 Apr 2026 14:58:24 +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.17; Wed, 1 Apr
 2026 09:58:23 -0500
Received: from XIR-MICHALO-L1.xilinx.com (10.180.168.240) by
 satlexmb08.amd.com (10.181.42.217) with Microsoft SMTP Server id 15.2.2562.17
 via Frontend Transport; Wed, 1 Apr 2026 09:58:22 -0500
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@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=FKVF4993NQdzmJ4lL4J5vlfiIB5Ycl+sljEGTi23OFAPbrF2AI24Mk4hKi29or1DIKAXz5WiSKoK4OYegEoDpC+EJvMv0Zid3pn03qd6irPEAZo/5/A4AtaWIaJ+d0+8uC9XaztqrXw5x+YDdTPtSUt13av6TDi4gVdTririI9MDN44VcO4zUdaqsqRqovDyLmP2YYwwTTIVD09zXHz+LJD8zsWLLdf7rnXuopltvIeS3+Up4NyajdkcvMp8vJ+gtYqCXJmPR2XoyeYPsj5Bd62rF/8gd8wQH/wOLpPKNW8XYaSxILjVaxptSFzELy/2sJ1ZANFlcV8yROoSrwONtA==
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com;
 s=arcselector10001;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1;
 bh=SILGjUjbSSooX9tKAJTxY2XSLgszRtPxBBJmqIQCNh4=;
 b=pozuB6RQieA01K8G53fPmMrNLYuC937W2LVkf4CcisdubX5lR2+igvVGVdJ+vZeLnPW/fCDWrofUzrd+gzs7u56VespLACXoicjryXWjTJxz/W1bAJB7mHnH+8sf40DtfKd0kq7XYvaKlZUIGygbdKWEBx9KwbAXoGM//HJWMW3P+ojmKakQ7QU5nBSqWDlhvwD+8YLwvaSVIKz4WLLk+QPRWYY+z3SrUS6HHhyyAF68R3Z9kkO3H12rN6oq/6cij6hslct/mYIPr6BBZcmI6xz+ayUpCF8uIMUj18Dw+SfpMiMyce9YH7AzYob86swm4izJrEa3mpQgQLNh99+Q8Q==
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=SILGjUjbSSooX9tKAJTxY2XSLgszRtPxBBJmqIQCNh4=;
 b=wpQfAEIM2863b9s6/6/nWEHO/Uev9PTR19xTgZaX8HZx0fApQB+UjdUNKKuOb+Br9jD35hANbXZ5PoR1Ifn8S9m6H5dnQgPbW44nrK6PGdh0sitMqjWd0Jrr+iYrF/Q4/WmW/qmiehd6hE7D5Mj16I0DHsPWm/l0Mt3yLcwdtLk=
X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 165.204.84.17)
 smtp.mailfrom=amd.com; dkim=none (message not signed)
 header.d=none;dmarc=pass action=none header.from=amd.com;
Received-SPF: Pass (protection.outlook.com: domain of amd.com designates
 165.204.84.17 as permitted sender) receiver=protection.outlook.com;
 client-ip=165.204.84.17; helo=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>,
	Mykyta Poturai <mykyta_poturai@epam.com>
Subject: [PATCH 2/3] xen/arm: pci: Narrow scope of file-local symbols
Date: Wed, 1 Apr 2026 16:58:15 +0200
Message-ID: <20260401145816.169557-3-michal.orzel@amd.com>
X-Mailer: git-send-email 2.43.0
In-Reply-To: <20260401145816.169557-1-michal.orzel@amd.com>
References: <20260401145816.169557-1-michal.orzel@amd.com>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit
Content-Type: text/plain
X-EOPAttributedMessage: 0
X-MS-PublicTrafficType: Email
X-MS-TrafficTypeDiagnostic: SN1PEPF000397B0:EE_|PH8PR12MB6937:EE_
X-MS-Office365-Filtering-Correlation-Id: 18dfb3eb-8378-41f4-44cb-08de8fff1f8c
X-MS-Exchange-SenderADCheck: 1
X-MS-Exchange-AntiSpam-Relay: 0
X-Microsoft-Antispam:
	BCL:0;ARA:13230040|82310400026|36860700016|376014|1800799024|22082099003|18002099003|56012099003;
X-Microsoft-Antispam-Message-Info:
	rbRM5clr5BVo/NVYlU8de5PMg+vEPdtChG16vEsfq85RsgldzzE1WvcpZx7bjojmO0S8uUxvdO+222cBsbm7dqCFCQ7HxAXfxjkgb6iHov2TaVw1hsMDYZ73iGqoJg4wC0VpgqHT81ylHaT6gqnSw+xoZgx/s+V05XWsN2z7/7g4L/NFcrHBBfL2GDcS+IAi3axnMZY9srNm73RQLAmsHr5uOpwFPjbxOr9Ol+01JFyTUJhroAYP1gLrqVLn2+aBkgUAdsHV+zyP2Im92tYxhIay5RYgwDO/koFfkzvR5D+HJoX0wTOyBE30yrKghbtbPP5VvvnxFBqXbig2Bg3+DXRMBFjo40lBaW6FBZpM19qt6djBpTR2XspfPJ9nthOVAGWf1qNMHUbIJX06xpA9AX4Amn5OhFZlf2lC17+PEUiHE+NvJ4kNtgv5FlgaAxXuzVw3axE93B3Rw71cEc/TI9nbsXlMwcOm1G9n5o0K6M9IFl5pBx8Rm89ZXiY1g3/rDoWAyfUpbx01fvUCtip2nPr2mO6cuNV+Su77kuolsxKUUjWhkTbXZEchOq20SiVL4gPaPT6Q28MeF+VZv0mkonhFbn6lJKweM0VcTTnid62GsFjwXKmzY1pv/0PswwQDlHNnRgJvNDDcOu56n+hPU2aEit2ylHf5cpZVCN4pxjf+pKVL9lhV3+GCKKfWYltXrToWuwgGV6Zqp4L2bdh65XfJonjz1o8aVaHsTtHQs2/ZQaVwJ6bKfLlsvrlniMmi30UozLYWCAMQ+u63ijrLCQ==
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)(376014)(1800799024)(22082099003)(18002099003)(56012099003);DIR:OUT;SFP:1101;
X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1
X-MS-Exchange-AntiSpam-MessageData-0:
	AcrG56HInp9MW3Ca18f4YugSR/stvOMOudgEeA0EanNL64x1sYPj6DRdXHB6MIODaRXvrtzB7x3+OwaSnh4buHtJGcztcCffXoW1X1od9pgourL/qiHd5EmTkqgXKzqKHQ5D8LcPlgG9BsCbBQaAfA+CkMLbYjStx7D5bnjqY66etAL1Q8EdBn6EGZ0Y9EbsWfv+G8+T9QoYcZGGUHMIT21iszTN6wFyD9Z2XZMrNgJ/upWHmtqIu+1xLH11tpsaTZPxGF7RykppmTSSQHwM8Rjrbrr8wJkZCbb1iOobxlfhbX8qQZdXynFWoFnq9zFLhR/F07MwMGvNTWnZ3EYLiLwbgR3hOSn8HKt3n5mNb1IdgY+Cofun9GanFWvQG3vz6XxIZgH04q6w5PcGQOqitIEhU/hSxf3y+0qhwi6QcRvWdyVetd2eS9sFDw5UiGjW
X-OriginatorOrg: amd.com
X-MS-Exchange-CrossTenant-OriginalArrivalTime: 01 Apr 2026 14:58:24.1309
 (UTC)
X-MS-Exchange-CrossTenant-Network-Message-Id: 18dfb3eb-8378-41f4-44cb-08de8fff1f8c
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:
	SN1PEPF000397B0.namprd05.prod.outlook.com
X-MS-Exchange-CrossTenant-AuthAs: Anonymous
X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem
X-MS-Exchange-Transport-CrossTenantHeadersStamped: PH8PR12MB6937
X-purgate-ID: tlsNG-33051d/1775055525-40F6FC9A-284D97A4/0/0
X-purgate-type: clean
X-purgate-size: 2925

Make pci_alloc_host_bridge() and pci_add_host_bridge() in
pci-host-common.c, rcar4_pcie_ops and rcar4_pcie_child_ops in
pci-host-rcar4.c, and nwl_pcie_ops in pci-host-zynqmp.c static, as
they are only used within their respective translation units.

Also include pci-host-rcar4.h in pci-host-rcar4.c so that the
declarations of its externally visible functions are visible at the
point of definition.

This resolves MISRA C Rule 8.4 violations.

Signed-off-by: Michal Orzel <michal.orzel@amd.com>
---
 xen/arch/arm/pci/pci-host-common.c | 4 ++--
 xen/arch/arm/pci/pci-host-rcar4.c  | 5 +++--
 xen/arch/arm/pci/pci-host-zynqmp.c | 2 +-
 3 files changed, 6 insertions(+), 5 deletions(-)

diff --git a/xen/arch/arm/pci/pci-host-common.c b/xen/arch/arm/pci/pci-host-common.c
index 487c545f3a26..9060afc14d93 100644
--- a/xen/arch/arm/pci/pci-host-common.c
+++ b/xen/arch/arm/pci/pci-host-common.c
@@ -158,7 +158,7 @@ err_exit:
     return NULL;
 }
 
-struct pci_host_bridge *pci_alloc_host_bridge(void)
+static struct pci_host_bridge *pci_alloc_host_bridge(void)
 {
     struct pci_host_bridge *bridge = xzalloc(struct pci_host_bridge);
 
@@ -170,7 +170,7 @@ struct pci_host_bridge *pci_alloc_host_bridge(void)
     return bridge;
 }
 
-void pci_add_host_bridge(struct pci_host_bridge *bridge)
+static void pci_add_host_bridge(struct pci_host_bridge *bridge)
 {
     list_add_tail(&bridge->node, &pci_host_bridges);
 }
diff --git a/xen/arch/arm/pci/pci-host-rcar4.c b/xen/arch/arm/pci/pci-host-rcar4.c
index 9290c6cac5d3..e1e8eb0ee1f9 100644
--- a/xen/arch/arm/pci/pci-host-rcar4.c
+++ b/xen/arch/arm/pci/pci-host-rcar4.c
@@ -13,6 +13,7 @@
 #include <asm/pci.h>
 
 #include "pci-designware.h"
+#include "pci-host-rcar4.h"
 
 #define RCAR4_DWC_VERSION       0x520A
 
@@ -61,7 +62,7 @@ static int __init rcar4_child_cfg_reg_index(struct dt_device_node *np)
 }
 
 /* ECAM ops */
-const struct pci_ecam_ops rcar4_pcie_ops = {
+static const struct pci_ecam_ops rcar4_pcie_ops = {
     .bus_shift  = 20,
     .cfg_reg_index = rcar4_cfg_reg_index,
     .pci_ops    = {
@@ -73,7 +74,7 @@ const struct pci_ecam_ops rcar4_pcie_ops = {
     }
 };
 
-const struct pci_ecam_ops rcar4_pcie_child_ops = {
+static const struct pci_ecam_ops rcar4_pcie_child_ops = {
     .bus_shift  = 20,
     .cfg_reg_index = rcar4_child_cfg_reg_index,
     .pci_ops    = {
diff --git a/xen/arch/arm/pci/pci-host-zynqmp.c b/xen/arch/arm/pci/pci-host-zynqmp.c
index 2c4afa7a19d2..2d98b0069647 100644
--- a/xen/arch/arm/pci/pci-host-zynqmp.c
+++ b/xen/arch/arm/pci/pci-host-zynqmp.c
@@ -27,7 +27,7 @@ static int __init nwl_cfg_reg_index(struct dt_device_node *np)
 }
 
 /* ECAM ops */
-const struct pci_ecam_ops nwl_pcie_ops = {
+static const struct pci_ecam_ops nwl_pcie_ops = {
     .bus_shift  = 20,
     .cfg_reg_index = nwl_cfg_reg_index,
     .pci_ops    = {
-- 
2.43.0



From xen-devel-bounces@lists.xenproject.org Wed Apr 01 14:59:48 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 01 Apr 2026 14:59:48 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1270584.1559219 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1w7x2o-0005bz-Ha; Wed, 01 Apr 2026 14:59:46 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1270584.1559219; Wed, 01 Apr 2026 14: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 1w7x2o-0005bs-Ea; Wed, 01 Apr 2026 14:59:46 +0000
Received: by outflank-mailman (input) for mailman id 1270584;
 Wed, 01 Apr 2026 14:59:45 +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 1w7x2n-0005bc-JL
 for xen-devel@lists.xenproject.org; Wed, 01 Apr 2026 14:59:45 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1w7x2l-001zyk-CW
 for xen-devel@lists.xenproject.org; Wed, 01 Apr 2026 16:59:44 +0200
Received: from [10.42.69.6] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <Mykyta_Poturai@epam.com>)
 id 69cd32d8-5cb7-0a2a0a5109dd-0a2a4506e27e-38
 for <xen-devel@lists.xenproject.org>; Wed, 01 Apr 2026 16:59:44 +0200
Received: from [52.101.69.135]
 (helo=AM0PR83CU005.outbound.protection.outlook.com)
 by tlsNG-16d1c6.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.0)
 (envelope-from <Mykyta_Poturai@epam.com>)
 id 69cd2e68-0df0-0a2a45060019-346545871af6-3
 for <xen-devel@lists.xenproject.org>; Wed, 01 Apr 2026 16:40:40 +0200
Received: from PAVPR03MB10102.eurprd03.prod.outlook.com
 (2603:10a6:102:30d::12) by PAXPR03MB8032.eurprd03.prod.outlook.com
 (2603:10a6:102:21f::24) with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9769.17; Wed, 1 Apr
 2026 14:40:39 +0000
Received: from PAVPR03MB10102.eurprd03.prod.outlook.com
 ([fe80::b8c6:f37a:987a:beb]) by PAVPR03MB10102.eurprd03.prod.outlook.com
 ([fe80::b8c6:f37a:987a:beb%5]) with mapi id 15.20.9745.027; Wed, 1 Apr 2026
 14:40: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=ClLhBAXao+AUeBJbOxOygPkF6OtiyJicGc+chwccQiovipVaY9LfkQNicMeSo9L23qXbuUu9lCUgNYAxb2qivpXNoRePBpsBvon5EJ5on6YYD6Y3D2tXnFqsE8wbSLDd3eI1SfDlaRK91C9omkA1y+1Oi9/q5yHO29Uo4Od7kCW1KsU9Qwv0wL/HK37zy7wGYWBqy8U+EbBqK+KTdo4dobAqEkBXAAzCOpugnbR2nllSJwxiAZglByTFT56AEevWr1Qqy1bKfTze0vIMV+Xmtpii+iJqVKJbEg/YVA18x+/kcXEQ0kRk3T1Di5nQWZ457jgHilwlPhBXMi9slT17EA==
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com;
 s=arcselector10001;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1;
 bh=GQtJi37Fd/Vazf7qgfK12WLcM59LS8GY90I2uV/4frA=;
 b=mlsDHF9GuwdxhV6TmSpBHx0PBuijZdIXXQZsraZshn3bWhd7ELtxOxN7tfpv/eJhYslOloZozrLzm/R7YlIONihOX+AVOJMOl8d9ymnwDg9Qapaor952YFabntmte1MTrCIiFYO7z44TwhV0lmyyBw3T+AR0LQCWlevJ3NAApVZH6NqrRPRGssV2fW1R7AncWX3eDhT3i8+yDk7h89JTOleIe71f2EtSL6teOEvVdNtTx0r6XQIBBBVAHttiOtIPGPAGVn1P21yvt1hbtmpGmodDCtuu3ibzm6pI7VE4mwsLX7VJyD8Lb/wdDPeCN/kvTCALQIEN5Q+PckHsY+NpnQ==
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=GQtJi37Fd/Vazf7qgfK12WLcM59LS8GY90I2uV/4frA=;
 b=lKxE7pXTLZw6C2jvJFCiDEiQHv9L2+7dR+0yyFFQe4WA2tLBJZGD8qOwTvd2oS5+B7wxMhsyhAQK8NMc5ZvVnJw37EletzvEqkGj01cH/BkTBCvX1pPtNqN1lORsU47LsuUNGmHlaOkhMJbztpUbQ8xoYtu3YS6zcOcOds3B1XrJoH/kYCqB7mHZ7qYw+T2Tk1kI9PYB7lnxL9yzSWPQhFJjd4ZaIiiFtdRPCWNNpMeOX1UYk3pp8U//1N5Z7A8gL65mtzVT/BFULdU2SQZhmgjS2NBvJiJvPGa2GC46X8kIQg8UWHU3i2xUCQ7aRzr01QG2YK9KJra4CTYckqDTMw==
From: Mykyta Poturai <Mykyta_Poturai@epam.com>
To: Jan Beulich <jbeulich@suse.com>
CC: =?utf-8?B?Um9nZXIgUGF1IE1vbm7DqQ==?= <roger.pau@citrix.com>, Stewart
 Hildebrand <stewart.hildebrand@amd.com>, "xen-devel@lists.xenproject.org"
	<xen-devel@lists.xenproject.org>
Subject: Re: [PATCH v2 4/8] vpci: add a wait operation to the vpci vcpu
 pending actions
Thread-Topic: [PATCH v2 4/8] vpci: add a wait operation to the vpci vcpu
 pending actions
Thread-Index:
 AQHcr7UNjpbdOXJQP0qdir/zrd85obXI3WYAgAEeNICAAAXvAIAAYLsAgAACF4CAAAc+AA==
Date: Wed, 1 Apr 2026 14:40:38 +0000
Message-ID: <e5bead4b-7187-4190-94a4-e4881f6cfa8f@epam.com>
References: <cover.1772806036.git.mykyta_poturai@epam.com>
 <ec941fbf4f8bde23fc3867e47f5ada028f8003aa.1772806036.git.mykyta_poturai@epam.com>
 <f546ae19-2107-469e-847b-7a4cde2c95fd@suse.com>
 <0275be7d-d1d9-47ee-bec2-bfbbb90b4bae@epam.com>
 <46f4a4c5-cc44-47d7-8d6d-03ddaa75bb7f@suse.com>
 <13714c88-838b-4dc7-bc0b-b6ca590fd944@epam.com>
 <8856a1d8-51f7-40ee-9def-570af5c6d42f@suse.com>
In-Reply-To: <8856a1d8-51f7-40ee-9def-570af5c6d42f@suse.com>
Accept-Language: en-US
Content-Language: en-US
X-MS-Has-Attach:
X-MS-TNEF-Correlator:
authentication-results: dkim=none (message not signed)
 header.d=none;dmarc=none action=none header.from=epam.com;
x-ms-publictraffictype: Email
x-ms-traffictypediagnostic: PAVPR03MB10102:EE_|PAXPR03MB8032:EE_
x-ms-office365-filtering-correlation-id: bb9c7e88-d067-4225-7e6d-08de8ffca4a5
x-ms-exchange-senderadcheck: 1
x-ms-exchange-antispam-relay: 0
x-microsoft-antispam:
 BCL:0;ARA:13230040|366016|1800799024|376014|38070700021|22082099003|56012099003|18002099003;
x-microsoft-antispam-message-info:
 pwmL2i4+u8eCvawaoyBPUMkOz9IzjKCuBwGTF14d1CtdoW1hBZnXCu+i9kWxhOmzIPIooZsX8TShcnHmD1U64JjDZqaxxNRdl60serDjlw9/QWxGtoDEcYpB2tHCjfdMl/nNz1zTuqpLmDWhF30BaPvt8WXbpQNytYFAxr2+HaFQEM/4f1zhefE1xJqLHqB+bRHTjWQKPfljwWhT5mUmTiqh3+y6zFTkBiY07l2QnQThghPW/66Qp7C0aoo99xTRsj6GTqMGgDYzXBAr7O6SxxPH792ltikTVAnezuXOIzRXj4h/RLwM7z6TPdtaR2SY3qmW0DoG/FPXxsJTROzOIoJ5QhfAja2d8D7Arctrd8ybv4mUakMm9+XJX0ivDAnMnsEhGCCW1oerQ+0wKQXwf353CyMjAOLCoBmOBqN/25Xv65dxP9s7DV/w7As0OHNneD70ldmZ+5tQHFv5I3oNPDtysZ99Rnq4/HNQSYl7+AXUcIoO2AmHJTQyhigwdC8dAikXqRFYcQJbSrQaWf2gKe98x6W5NiTDi8Bh6rKWkq/aWdrAIn2qT9egYUufPuVdhls3uevHF4DO7xSPrALF7/f6gtLjoVQbdDjpC4IQCbYLzM0D7BD1yAtv4MKYTeX4y/MzUDawX7GzyUkKUlN3WhXr58nQx632j/wok5ZrEDn3CApoD2IsOO2rW1CySVv9rZfB1GLmpbtE3vw0KJCJWv1yegBStKZu3gMxt68W3psYKLpx96qxUL6dOw5Zx2hr1Zr3VtzzTsDRNeQopV2nyX4tgRX4J5/8p/OCrLEmt7s=
x-forefront-antispam-report:
 CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:PAVPR03MB10102.eurprd03.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(366016)(1800799024)(376014)(38070700021)(22082099003)(56012099003)(18002099003);DIR:OUT;SFP:1102;
x-ms-exchange-antispam-messagedata-chunkcount: 1
x-ms-exchange-antispam-messagedata-0:
 =?utf-8?B?aEhkVThsRytyQzhhZ3MyTU85L0RZNi85ajJPV1FPd1JPcm84eFFwNi8yTmhI?=
 =?utf-8?B?YVViNitxRlFvckhLWkh0RzFXNThxU0ZWTjU2bnFZVGJzUHk0S2NEZ2w1Qlk5?=
 =?utf-8?B?Ry9wN1l2L1dxVW9wT0tTeGIvRzRZa3k5WGt3MWhlRjhCeUJLSk1zeUdxRmhy?=
 =?utf-8?B?WmlHKytGbUlOL0lqVDFOTWJaNUVGNDRnbUd2dW4yRkkxRGhkb1Q3aHpuamZD?=
 =?utf-8?B?cGdsWlkxZkVlUjJRaHNGLytjdU1GUXVnRVpUZXRNdlF2MThlK0gxMUd1d05E?=
 =?utf-8?B?R3grQUNuWWlmZDFRcngxOGM2Z2NTSDhSLzhSdWhabGVaZU1YVXJUeEdJSGZF?=
 =?utf-8?B?d0dPcWozTkYyR3lEZTlwWjFPRU5sK1M0RC9CTEphcmNlb3pqekFaVkduT2s3?=
 =?utf-8?B?VUNrUlIyVkhoeU41V1dUa3c5K0RRWTNNeFV6KzNyZnFUZjAyQU4wL1F4aUpM?=
 =?utf-8?B?bWNTeENUN2VaRk5kNWhnb1EzVHIwSTZja0tjZlBVbWVuUGJZTkJwRjZRZG1S?=
 =?utf-8?B?bDd4NGQxMUkvbjR6S0JwcnlLejl1cExSQlZIS2VsN3hqRWYwNlZuc0REUkVn?=
 =?utf-8?B?NjVnOWg2UEVsbUpaUnhHbGZmWmZOOXB5YVBEV1c4WGdieDZMQ09ISTlBeVpq?=
 =?utf-8?B?bStGaE94ZG1IbHlMSjRRY21UWFRzQi9JbXRTV1VCRDl3dk42R1lTcEU4N2w5?=
 =?utf-8?B?dmN4MllqQzNRZStWZDVVMUY5M2E4MG9qbStRbnE5bUM2MVhsMXlZRWRReUtG?=
 =?utf-8?B?SmtxTmVtWTBPMmg1SVozNXBvc2c1eGZYRkp1WHBtaldGUVZKT09MTGRTY3Rs?=
 =?utf-8?B?d1FQR0tCNFZQQTV2K2JDL1IzeFF4RXpRMEFLM2RRZ0IrdUNpUTVYUHRKdU9l?=
 =?utf-8?B?Skg2YkJSMFZtaUEvbmh3SUcxNzArVldKaFpZeFJVNjhsaG4vRE9rcHNvanBS?=
 =?utf-8?B?M1krNDR4ei9UN3ZLTDhvOUE4N0t4b0FEOHIzdFlibTdyQkRiS0syd0c1ZlVV?=
 =?utf-8?B?QTVZNzg4Zkp1RlNxdm1oaTlqRExPSHdUV2lqeDhsVm50U2xsU3VBVWJsQzBD?=
 =?utf-8?B?ZStlOWxZc0Zkczkrc3BrSlZGRU5INzB3b1hWdmRsc2ZKbHg3M3l5STcwWnor?=
 =?utf-8?B?VFREUXVNL2JpcjA3TldYbkdCckloc3RuUy9uVEVGMHQwcXF3dkI2UlFXcG5a?=
 =?utf-8?B?MDZUZDQ2V244aXFDQUhtQ2tSSVlHRmFuNHIxWEx2VzNPMERndnQ5dHc0S3JN?=
 =?utf-8?B?bC95WDFGT3ZORnYzOGo4djViVy90Y3plUGdDVEppY0FxcFZMN3RKbTVLMVB1?=
 =?utf-8?B?d0ZYRllLcjlzVmhRRzdOVXR4V0lPVzlUS3B3NHc1MTI1TkN4SUQ4eDZzbUg3?=
 =?utf-8?B?TWZjQ0JVbVN6UC95blFXNlZtckxiWG1VbzlaUlk2bEZubjZ2SGlQeXdJTVh0?=
 =?utf-8?B?OW9rUUFId3I4WFBsSmJvQllXUXFPTHNvTXlDS1BoMnM4ckE2ajlKdG9sNU1z?=
 =?utf-8?B?bk00QTBwbkFROExKOW90Zlhka3Q1NUxvMFA2NUpGVVNsWlRuTmp0UEJGVmlR?=
 =?utf-8?B?M2EvUXpPNVlQSGMzVHRGUjFtK0NjaXpkVktSVVdFNWNPOFNoK0R5YzE5V1Jo?=
 =?utf-8?B?TTRzRmJSN1o1U2l6K1ozbldtRW4zVUw2cTE0RGk4Q2krZ1RiWmJnVkQrMEFP?=
 =?utf-8?B?ZStuWGVUYkpjWVZ3azZBRUxWb1Z3UTYxbnF5WDFudkVoUXhFQmlNZGc2QXVF?=
 =?utf-8?B?b2I3VUR5OXdtdEZwbTVRWUFFbzBDeHpmN3JwTm4yZWZOeTU5T2VUdjZ3c1Ay?=
 =?utf-8?B?Si9mdWFXTHJiZWZ6UE8xb3pISmFkZnFhNEFDVjI1M3BtdEFDNms4aEl5Y2RH?=
 =?utf-8?B?bnFRRTBPWGhBRmd0UUd3OFVRcEYwKzFGNzBuU3k1RlZmZlMxeFpVbW9kNlBW?=
 =?utf-8?B?dndZdTZyL0ZEaDNSTnYweGl5dTNoeUhoTTQ2UlZYWnRZZ0RVSEdhTUt1YXpG?=
 =?utf-8?B?bWw0NEFNeklYd2ZPS1RROERMKytKRU1iYytsWjJlU3N0UDFETjZTcGdsdUJk?=
 =?utf-8?B?VlZwem8xTHJaUWFBNmwxZjFVS3V0bEh2Q2NRZjZkZDQ5WkhHRnV0aGczajJS?=
 =?utf-8?B?aUtTV1FTc0lXM3R0Ulp2UkJNWE1RNXVlR3J0cVYyY1ZkSlVrdTZ4N1NTV0N3?=
 =?utf-8?B?OVdOQnlVMnVrYnF4NlVXcWpOWGhNZ2NHVVlocUgvZDNYTW9OYmd2Vk5UcFNs?=
 =?utf-8?B?ZXJOTGI5RWRFSEJjd2VsZzdnL0Uzc0JhZ3NxN2I1TEI0RFZwb1FZZVZpZ1Nw?=
 =?utf-8?B?RlNvWEpJNENYdXp2ZG5hOStKclhjVkVHWEN3ckdsck93MWh1K0FpajFUVFFQ?=
 =?utf-8?Q?soopLWsvNbplxInE=3D?=
Content-Type: text/plain; charset="utf-8"
Content-ID: <6F159ACCA81DD043898AFCDAF714D1EA@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: PAVPR03MB10102.eurprd03.prod.outlook.com
X-MS-Exchange-CrossTenant-Network-Message-Id: bb9c7e88-d067-4225-7e6d-08de8ffca4a5
X-MS-Exchange-CrossTenant-originalarrivaltime: 01 Apr 2026 14:40:38.9396
 (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: J3nhGV0SY+PXQtjiYrhb+QBDcSBjMM6Zc10UnMGBgUjeKoMP/Ysb/elr7tufoSkAKBTzR0G0ZSsX0uFOc86Tbw==
X-MS-Exchange-Transport-CrossTenantHeadersStamped: PAXPR03MB8032
X-purgate-ID: tlsNG-16d1c6/1775054440-AEB333D8-15FEFD29/38/8697268174
X-purgate-type: clean
X-purgate-size: 12078

DQoNCk9uIDQvMS8yNiAxNzoxNCwgSmFuIEJldWxpY2ggd3JvdGU6DQo+IE9uIDAxLjA0LjIwMjYg
MTY6MDcsIE15a3l0YSBQb3R1cmFpIHdyb3RlOg0KPj4gT24gNC8xLzI2IDExOjIxLCBKYW4gQmV1
bGljaCB3cm90ZToNCj4+PiBPbiAwMS4wNC4yMDI2IDA5OjU5LCBNeWt5dGEgUG90dXJhaSB3cm90
ZToNCj4+Pj4gT24gMy8zMS8yNiAxNzo1NSwgSmFuIEJldWxpY2ggd3JvdGU6DQo+Pj4+PiBPbiAw
OS4wMy4yMDI2IDEyOjA4LCBNeWt5dGEgUG90dXJhaSB3cm90ZToNCj4+Pj4+PiAtLS0gYS94ZW4v
ZHJpdmVycy92cGNpL2hlYWRlci5jDQo+Pj4+Pj4gKysrIGIveGVuL2RyaXZlcnMvdnBjaS9oZWFk
ZXIuYw0KPj4+Pj4+IEBAIC0xNzUsNzYgKzE3NSw5MiBAQCBzdGF0aWMgdm9pZCBtb2RpZnlfZGVj
b2RpbmcoY29uc3Qgc3RydWN0IHBjaV9kZXYgKnBkZXYsIHVpbnQxNl90IGNtZCwNCj4+Pj4+PiAg
ICAgDQo+Pj4+Pj4gICAgIGJvb2wgdnBjaV9wcm9jZXNzX3BlbmRpbmcoc3RydWN0IHZjcHUgKnYp
DQo+Pj4+Pj4gICAgIHsNCj4+Pj4+PiAtICAgIGNvbnN0IHN0cnVjdCBwY2lfZGV2ICpwZGV2ID0g
di0+dnBjaS5wZGV2Ow0KPj4+Pj4+IC0gICAgc3RydWN0IHZwY2lfaGVhZGVyICpoZWFkZXIgPSBO
VUxMOw0KPj4+Pj4+IC0gICAgdW5zaWduZWQgaW50IGk7DQo+Pj4+Pj4gLQ0KPj4+Pj4+IC0gICAg
aWYgKCAhcGRldiApDQo+Pj4+Pj4gLSAgICAgICAgcmV0dXJuIGZhbHNlOw0KPj4+Pj4+IC0NCj4+
Pj4+PiAtICAgIHJlYWRfbG9jaygmdi0+ZG9tYWluLT5wY2lfbG9jayk7DQo+Pj4+Pj4gLQ0KPj4+
Pj4+IC0gICAgaWYgKCAhcGRldi0+dnBjaSB8fCAodi0+ZG9tYWluICE9IHBkZXYtPmRvbWFpbikg
KQ0KPj4+Pj4+ICsgICAgc3dpdGNoICggdi0+dnBjaS50YXNrICkNCj4+Pj4+PiAgICAgICAgIHsN
Cj4+Pj4+PiAtICAgICAgICB2LT52cGNpLnBkZXYgPSBOVUxMOw0KPj4+Pj4+IC0gICAgICAgIHJl
YWRfdW5sb2NrKCZ2LT5kb21haW4tPnBjaV9sb2NrKTsNCj4+Pj4+PiAtICAgICAgICByZXR1cm4g
ZmFsc2U7DQo+Pj4+Pj4gLSAgICB9DQo+Pj4+Pj4gLQ0KPj4+Pj4+IC0gICAgaGVhZGVyID0gJnBk
ZXYtPnZwY2ktPmhlYWRlcjsNCj4+Pj4+PiAtICAgIGZvciAoIGkgPSAwOyBpIDwgQVJSQVlfU0la
RShoZWFkZXItPmJhcnMpOyBpKysgKQ0KPj4+Pj4+ICsgICAgY2FzZSBNT0RJRllfTUVNT1JZOg0K
Pj4+Pj4+ICAgICAgICAgew0KPj4+Pj4+IC0gICAgICAgIHN0cnVjdCB2cGNpX2JhciAqYmFyID0g
JmhlYWRlci0+YmFyc1tpXTsNCj4+Pj4+PiAtICAgICAgICBzdHJ1Y3QgcmFuZ2VzZXQgKm1lbSA9
IHYtPnZwY2kuYmFyX21lbVtpXTsNCj4+Pj4+PiAtICAgICAgICBzdHJ1Y3QgbWFwX2RhdGEgZGF0
YSA9IHsNCj4+Pj4+PiAtICAgICAgICAgICAgLmQgPSB2LT5kb21haW4sDQo+Pj4+Pj4gLSAgICAg
ICAgICAgIC5tYXAgPSB2LT52cGNpLmNtZCAmIFBDSV9DT01NQU5EX01FTU9SWSwNCj4+Pj4+PiAt
ICAgICAgICAgICAgLmJhciA9IGJhciwNCj4+Pj4+PiAtICAgICAgICB9Ow0KPj4+Pj4+IC0gICAg
ICAgIGludCByYzsNCj4+Pj4+PiArICAgICAgICBjb25zdCBzdHJ1Y3QgcGNpX2RldiAqcGRldiA9
IHYtPnZwY2kubWVtb3J5LnBkZXY7DQo+Pj4+Pj4gKyAgICAgICAgc3RydWN0IHZwY2lfaGVhZGVy
ICpoZWFkZXIgPSBOVUxMOw0KPj4+Pj4+ICsgICAgICAgIHVuc2lnbmVkIGludCBpOw0KPj4+Pj4+
ICAgICANCj4+Pj4+PiAtICAgICAgICBpZiAoIHJhbmdlc2V0X2lzX2VtcHR5KG1lbSkgKQ0KPj4+
Pj4+IC0gICAgICAgICAgICBjb250aW51ZTsNCj4+Pj4+PiArICAgICAgICBpZiAoICFwZGV2ICkN
Cj4+Pj4+PiArICAgICAgICAgICAgYnJlYWs7DQo+Pj4+Pj4gICAgIA0KPj4+Pj4+IC0gICAgICAg
IHJjID0gcmFuZ2VzZXRfY29uc3VtZV9yYW5nZXMobWVtLCBtYXBfcmFuZ2UsICZkYXRhKTsNCj4+
Pj4+PiArICAgICAgICByZWFkX2xvY2soJnYtPmRvbWFpbi0+cGNpX2xvY2spOw0KPj4+Pj4+ICAg
ICANCj4+Pj4+PiAtICAgICAgICBpZiAoIHJjID09IC1FUkVTVEFSVCApDQo+Pj4+Pj4gKyAgICAg
ICAgaWYgKCAhcGRldi0+dnBjaSB8fCAodi0+ZG9tYWluICE9IHBkZXYtPmRvbWFpbikgKQ0KPj4+
Pj4+ICAgICAgICAgICAgIHsNCj4+Pj4+PiArICAgICAgICAgICAgdi0+dnBjaS5tZW1vcnkucGRl
diA9IE5VTEw7DQo+Pj4+Pj4gICAgICAgICAgICAgICAgIHJlYWRfdW5sb2NrKCZ2LT5kb21haW4t
PnBjaV9sb2NrKTsNCj4+Pj4+PiAtICAgICAgICAgICAgcmV0dXJuIHRydWU7DQo+Pj4+Pj4gKyAg
ICAgICAgICAgIGJyZWFrOw0KPj4+Pj4+ICAgICAgICAgICAgIH0NCj4+Pj4+PiAgICAgDQo+Pj4+
Pj4gLSAgICAgICAgaWYgKCByYyApDQo+Pj4+Pj4gKyAgICAgICAgaGVhZGVyID0gJnBkZXYtPnZw
Y2ktPmhlYWRlcjsNCj4+Pj4+PiArICAgICAgICBmb3IgKCBpID0gMDsgaSA8IEFSUkFZX1NJWkUo
aGVhZGVyLT5iYXJzKTsgaSsrICkNCj4+Pj4+PiAgICAgICAgICAgICB7DQo+Pj4+Pj4gLSAgICAg
ICAgICAgIHNwaW5fbG9jaygmcGRldi0+dnBjaS0+bG9jayk7DQo+Pj4+Pj4gLSAgICAgICAgICAg
IC8qIERpc2FibGUgbWVtb3J5IGRlY29kaW5nIHVuY29uZGl0aW9uYWxseSBvbiBmYWlsdXJlLiAq
Lw0KPj4+Pj4+IC0gICAgICAgICAgICBtb2RpZnlfZGVjb2RpbmcocGRldiwgdi0+dnBjaS5jbWQg
JiB+UENJX0NPTU1BTkRfTUVNT1JZLA0KPj4+Pj4+IC0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgZmFsc2UpOw0KPj4+Pj4+IC0gICAgICAgICAgICBzcGluX3VubG9jaygmcGRldi0+dnBjaS0+
bG9jayk7DQo+Pj4+Pj4gKyAgICAgICAgICAgIHN0cnVjdCB2cGNpX2JhciAqYmFyID0gJmhlYWRl
ci0+YmFyc1tpXTsNCj4+Pj4+PiArICAgICAgICAgICAgc3RydWN0IHJhbmdlc2V0ICptZW0gPSB2
LT52cGNpLmJhcl9tZW1baV07DQo+Pj4+Pj4gKyAgICAgICAgICAgIHN0cnVjdCBtYXBfZGF0YSBk
YXRhID0gew0KPj4+Pj4+ICsgICAgICAgICAgICAgICAgLmQgPSB2LT5kb21haW4sDQo+Pj4+Pj4g
KyAgICAgICAgICAgICAgICAubWFwID0gdi0+dnBjaS5tZW1vcnkuY21kICYgUENJX0NPTU1BTkRf
TUVNT1JZLA0KPj4+Pj4+ICsgICAgICAgICAgICAgICAgLmJhciA9IGJhciwNCj4+Pj4+PiArICAg
ICAgICAgICAgfTsNCj4+Pj4+PiArICAgICAgICAgICAgaW50IHJjOw0KPj4+Pj4+ICsNCj4+Pj4+
PiArICAgICAgICAgICAgaWYgKCByYW5nZXNldF9pc19lbXB0eShtZW0pICkNCj4+Pj4+PiArICAg
ICAgICAgICAgICAgIGNvbnRpbnVlOw0KPj4+Pj4+ICAgICANCj4+Pj4+PiAtICAgICAgICAgICAg
LyogQ2xlYW4gYWxsIHRoZSByYW5nZXNldHMgKi8NCj4+Pj4+PiAtICAgICAgICAgICAgZm9yICgg
aSA9IDA7IGkgPCBBUlJBWV9TSVpFKGhlYWRlci0+YmFycyk7IGkrKyApDQo+Pj4+Pj4gLSAgICAg
ICAgICAgICAgICBpZiAoICFyYW5nZXNldF9pc19lbXB0eSh2LT52cGNpLmJhcl9tZW1baV0pICkN
Cj4+Pj4+PiAtICAgICAgICAgICAgICAgICAgICAgcmFuZ2VzZXRfcHVyZ2Uodi0+dnBjaS5iYXJf
bWVtW2ldKTsNCj4+Pj4+PiArICAgICAgICAgICAgcmMgPSByYW5nZXNldF9jb25zdW1lX3Jhbmdl
cyhtZW0sIG1hcF9yYW5nZSwgJmRhdGEpOw0KPj4+Pj4+ICAgICANCj4+Pj4+PiAtICAgICAgICAg
ICAgdi0+dnBjaS5wZGV2ID0gTlVMTDsNCj4+Pj4+PiArICAgICAgICAgICAgaWYgKCByYyA9PSAt
RVJFU1RBUlQgKQ0KPj4+Pj4+ICsgICAgICAgICAgICB7DQo+Pj4+Pj4gKyAgICAgICAgICAgICAg
ICByZWFkX3VubG9jaygmdi0+ZG9tYWluLT5wY2lfbG9jayk7DQo+Pj4+Pj4gKyAgICAgICAgICAg
ICAgICByZXR1cm4gdHJ1ZTsNCj4+Pj4+PiArICAgICAgICAgICAgfQ0KPj4+Pj4+ICAgICANCj4+
Pj4+PiAtICAgICAgICAgICAgcmVhZF91bmxvY2soJnYtPmRvbWFpbi0+cGNpX2xvY2spOw0KPj4+
Pj4+ICsgICAgICAgICAgICBpZiAoIHJjICkNCj4+Pj4+PiArICAgICAgICAgICAgew0KPj4+Pj4+
ICsgICAgICAgICAgICAgICAgc3Bpbl9sb2NrKCZwZGV2LT52cGNpLT5sb2NrKTsNCj4+Pj4+PiAr
ICAgICAgICAgICAgICAgIC8qIERpc2FibGUgbWVtb3J5IGRlY29kaW5nIHVuY29uZGl0aW9uYWxs
eSBvbiBmYWlsdXJlLiAqLw0KPj4+Pj4+ICsgICAgICAgICAgICAgICAgbW9kaWZ5X2RlY29kaW5n
KHBkZXYsIHYtPnZwY2kubWVtb3J5LmNtZCAmIH5QQ0lfQ09NTUFORF9NRU1PUlksDQo+Pj4+Pj4g
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2UpOw0KPj4+Pj4+ICsgICAgICAg
ICAgICAgICAgc3Bpbl91bmxvY2soJnBkZXYtPnZwY2ktPmxvY2spOw0KPj4+Pj4+ICsNCj4+Pj4+
PiArICAgICAgICAgICAgICAgIC8qIENsZWFuIGFsbCB0aGUgcmFuZ2VzZXRzICovDQo+Pj4+Pj4g
KyAgICAgICAgICAgICAgICBmb3IgKCBpID0gMDsgaSA8IEFSUkFZX1NJWkUoaGVhZGVyLT5iYXJz
KTsgaSsrICkNCj4+Pj4+PiArICAgICAgICAgICAgICAgICAgICBpZiAoICFyYW5nZXNldF9pc19l
bXB0eSh2LT52cGNpLmJhcl9tZW1baV0pICkNCj4+Pj4+PiArICAgICAgICAgICAgICAgICAgICAg
ICAgcmFuZ2VzZXRfcHVyZ2Uodi0+dnBjaS5iYXJfbWVtW2ldKTsNCj4+Pj4+PiArDQo+Pj4+Pj4g
KyAgICAgICAgICAgICAgICB2LT52cGNpLm1lbW9yeS5wZGV2ID0gTlVMTDsNCj4+Pj4+PiArDQo+
Pj4+Pj4gKyAgICAgICAgICAgICAgICByZWFkX3VubG9jaygmdi0+ZG9tYWluLT5wY2lfbG9jayk7
DQo+Pj4+Pj4gICAgIA0KPj4+Pj4+IC0gICAgICAgICAgICBpZiAoICFpc19oYXJkd2FyZV9kb21h
aW4odi0+ZG9tYWluKSApDQo+Pj4+Pj4gLSAgICAgICAgICAgICAgICBkb21haW5fY3Jhc2godi0+
ZG9tYWluKTsNCj4+Pj4+PiArICAgICAgICAgICAgICAgIGlmICggIWlzX2hhcmR3YXJlX2RvbWFp
bih2LT5kb21haW4pICkNCj4+Pj4+PiArICAgICAgICAgICAgICAgICAgICBkb21haW5fY3Jhc2go
di0+ZG9tYWluKTsNCj4+Pj4+PiAgICAgDQo+Pj4+Pj4gLSAgICAgICAgICAgIHJldHVybiBmYWxz
ZTsNCj4+Pj4+PiArICAgICAgICAgICAgICAgIGJyZWFrOw0KPj4+Pj4+ICsgICAgICAgICAgICB9
DQo+Pj4+Pj4gICAgICAgICAgICAgfQ0KPj4+Pj4+IC0gICAgfQ0KPj4+Pj4+IC0gICAgdi0+dnBj
aS5wZGV2ID0gTlVMTDsNCj4+Pj4+PiArICAgICAgICB2LT52cGNpLm1lbW9yeS5wZGV2ID0gTlVM
TDsNCj4+Pj4+PiAgICAgDQo+Pj4+Pj4gLSAgICBzcGluX2xvY2soJnBkZXYtPnZwY2ktPmxvY2sp
Ow0KPj4+Pj4+IC0gICAgbW9kaWZ5X2RlY29kaW5nKHBkZXYsIHYtPnZwY2kuY21kLCB2LT52cGNp
LnJvbV9vbmx5KTsNCj4+Pj4+PiAtICAgIHNwaW5fdW5sb2NrKCZwZGV2LT52cGNpLT5sb2NrKTsN
Cj4+Pj4+PiArICAgICAgICBzcGluX2xvY2soJnBkZXYtPnZwY2ktPmxvY2spOw0KPj4+Pj4+ICsg
ICAgICAgIG1vZGlmeV9kZWNvZGluZyhwZGV2LCB2LT52cGNpLm1lbW9yeS5jbWQsIHYtPnZwY2ku
bWVtb3J5LnJvbV9vbmx5KTsNCj4+Pj4+PiArICAgICAgICBzcGluX3VubG9jaygmcGRldi0+dnBj
aS0+bG9jayk7DQo+Pj4+Pj4gICAgIA0KPj4+Pj4+IC0gICAgcmVhZF91bmxvY2soJnYtPmRvbWFp
bi0+cGNpX2xvY2spOw0KPj4+Pj4+ICsgICAgICAgIHJlYWRfdW5sb2NrKCZ2LT5kb21haW4tPnBj
aV9sb2NrKTsNCj4+Pj4+PiArDQo+Pj4+Pj4gKyAgICAgICAgYnJlYWs7DQo+Pj4+Pj4gKyAgICB9
DQo+Pj4+Pj4gKyAgICBjYXNlIFdBSVQ6DQo+Pj4+Pj4gKyAgICAgICAgaWYgKCBOT1coKSA8IHYt
PnZwY2kud2FpdC5lbmQgKQ0KPj4+Pj4+ICsgICAgICAgICAgICByZXR1cm4gdHJ1ZTsNCj4+Pj4+
PiArICAgICAgICB2LT52cGNpLndhaXQuY2FsbGJhY2sodi0+dnBjaS53YWl0LmRhdGEpOw0KPj4+
Pj4+ICsgICAgICAgIGJyZWFrOw0KPj4+Pj4NCj4+Pj4+IEFzIGp1c3QgaW5kaWNhdGVkIGluIHJl
cGx5IHRvIHBhdGNoIDYsIGJ1c3kgd2FpdGluZyBpc24ndCByZWFsbHkgYWNjZXB0YWJsZS4NCj4+
Pj4+IFRoaXMgaXMgZXZlbiBtb3JlIHNvIHdoZW4gdGhlIHdhaXRpbmcgZXhjZWVkcyB0aGUgdHlw
aWNhbCBsZW5ndGggb2YgYQ0KPj4+Pj4gc2NoZWR1bGluZyB0aW1lc2xpY2UuDQo+Pj4+Pg0KPj4+
Pj4gSW4gdGhhdCBvdGhlciByZXBseSBJIHNhaWQgdG8gcHV0IHRoZSB2Q1BVIHRvIHNsZWVwLCBi
dXQgeW91IG5lZWQgdG8gYmUgY2FyZWZ1bA0KPj4+Pj4gdGhlcmUgdG9vOiBUaGUgZG9tYWluIG1h
eSBub3QgZXhwZWN0IGl0cyB2Q1BVIHRvIG5vdCBtYWtlIGFueSBwcm9ncmVzcyBmb3Igc3VjaA0K
Pj4+Pj4gYW4gZXh0ZW5kZWQgcGVyaW9kIG9mIHRpbWUuIFRoaXMgbWF5IG5lZWQgZG9pbmcgZW50
aXJlbHkgZGlmZmVyZW50bHk6IE9uY2UgdGhlDQo+Pj4+PiBjb21tYW5kIHJlZ2lzdGVyIHdhcyB3
cml0dGVuLCB5b3UgbWF5IHdhbnQgdG8gcmVjb3JkIHRoZSB0aW1lIGFmdGVyIHdoaWNoDQo+Pj4+
PiBhY2Nlc3NlcyB0byB0aGUgVkYgcmVnaXN0ZXJzIGFyZSBwZXJtaXR0ZWQuIEVhcmxpZXIgYWNj
ZXNzZXMgd291bGQgc2ltcGx5IGJlDQo+Pj4+PiB0ZXJtaW5hdGVkLiBZb3UgbWF5IHN0aWxsIGFk
ZGl0aW9uYWxseSBuZWVkIGEgdGltZXIsIGluIG9yZGVyIHRvIGtpY2sgb2ZmIEJBUg0KPj4+Pj4g
bWFwcGluZyBhZnRlciB0aGF0IHRpbWUuIChZZXQgYmV0dGVyIHdvdWxkICBiZSBpZiB0aGUgQkFS
IG1hcHBpbmcgY291bGQgYmUNCj4+Pj4+IGRvbmUgZHVyaW5nIHRob3NlIDEwMG1zLiBBZnRlciBh
bGwgdGhhdCBtYXkgYmUgYSByZWFzb24gd2h5IHRoaXMgbG9uZyBhIGRlbGF5DQo+Pj4+PiBpcyBz
cGVjaWZpZWQ6IEZpcm13YXJlIG9uIHRoZSBkZXZpY2UgbWF5IGFsc28gcmVxdWlyZSBzb21lIHRp
bWUgdG8gc2V0IHVwIHRoZQ0KPj4+Pj4gQkFScyBhY2NvcmRpbmdseS4pDQo+Pj4+DQo+Pj4+IEkg
YW0gbm90IHN1cmUgaXQgd291bGQgd29yayB0aGF0IHdheS4gSWYgd2UgbG9vayBhdCBob3cgbGlu
dXgNCj4+Pj4gaW5pdGlhbGl6ZWQgc3Jpb3YsIGl0IHdyaXRlcyBWRkUgYW5kIE1TRSBiaXRzLCB3
YWl0cyAxMDBtcyBhbmQgdGhlbg0KPj4+PiBleHBlY3RzIFZGcyB0byBiZSBvcGVyYXRpb25hbC4g
SWYgdGhleSBhcmUgbm90IG9wZXJhdGlvbmFsIGF0IHRoYXQNCj4+Pj4gbW9tZW50LCB0aGVuIGl0
IGNvbnNpZGVycyB0aGUgb3BlcmF0aW9uIGZhaWxlZCBhbmQgcmVtb3ZlcyBhbGwgVkZzLiBJZg0K
Pj4+PiB3ZSBhbHNvIHdhaXQgMTAwbXMgYmVmb3JlIGVuYWJsaW5nIGFjY2VzcywgdGhlIHByb2Jh
YmlsaXR5IG9mIGEgZ3Vlc3QNCj4+Pj4gdHJ5aW5nIHRvIGFjY2VzcyBzb21ldGhpbmcgYmVmb3Jl
IHdlIGFsbG93IGl0IHdvdWxkIGJlIHZlcnkgaGlnaC4NCj4+Pg0KPj4+IFdlbGwsIG5vdCByZWFs
bHkuIE91ciBjb3VudGluZyBvZiB0aGUgMTAwbXMgbmVjZXNzYXJpbHkgc3RhcnRzIGJlZm9yZSBE
b20wJ3MuDQo+Pj4gRnVydGhlcm1vcmUgaXQgbWF5IGJlIGFjY2VwdGFibGUgKG9yIGV2ZW4gYXBw
cm9wcmlhdGUpIHRvIHN0YWxsIHByZW1hdHVyZQ0KPj4+IGFjY2Vzc2VzIChiZWNhdXNlIHRoZXkg
c2hvdWxkbid0IG9jY3VyIGluIHRoZSBmaXJzdCBwbGFjZSksIGJ5IGJsb2NraW5nIHRoZQ0KPj4+
IHZDUFUgYXQgdGhhdCBwb2ludC4gQSBtaWRkbGUgcm91dGUgbWF5IGJlIHBvc3NpYmxlOiBUZXJt
aW5hdGUgYWNjZXNzZXMgaW4sDQo+Pj4gc2F5LCB0aGUgZmlyc3QgOTBtcywgYW5kIHN0YWxsIHRo
ZSB2Q1BVIGZvciBhbnkgYWNjZXNzIHBhc3QgdGhhdCwgYnV0IGJlZm9yZQ0KPj4+IHRoZSAxMDBt
cyBleHBpcmVkLg0KPj4NCj4+IElzIHRoZXJlIGFueSByZWFsIGJlbmVmaXQgdG8gZG9pbmcgYWxs
IHRoaXMgd29yayBpbnN0ZWFkIG9mIGp1c3Qgd2FpdGluZw0KPj4gZm9yIERvbTAgdG8gcmVnaXN0
ZXIgdGhlIEZWcz8gSW1wbGVtZW50aW5nIGl0IHRoZSB3YXkgeW91IGRlc2NyaWJlZA0KPj4gd291
bGQgcmVxdWlyZSBhIHJlbGF0aXZlbHkgY29tcGxleCBzdGF0ZSBtYWNoaW5lIGFuZCB0d28gdGlt
ZXJzIHBlcg0KPj4gc3Jpb3YtY2FwYWJsZSBkZXZpY2UuIEFuZCB3aWxsIGFsc28gcHJvYmFibHkg
cmVxdWlyZSBzb21lIGhhY2tzIHRvDQo+PiBoYW5kbGUgcGFydGlhbGx5IGluaXRpYWxpemVkIFZG
cyBpbiBYZW4uIFRoaXMgYWRkcyBhIGxvdCBvZiB3b3JrIGFuZA0KPj4gbWFueSBwb3NzaWJsZSBi
dWdzIGZvciBub3QgYSBsb3Qgb2YgYmVuZWZpdCBpbiBteSBvcGluaW9uLg0KPiANCj4gT2RkIHRo
YXQgeW91IGFzayBtZSB0aGlzIHF1ZXN0aW9uLiBJZiB0aGVyZSB3YXMgbm8gYmVuZWZpdCwgd2h5
IGRpZCB5b3UgZG8NCj4gaXQgdGhpcyB3YXk/DQo+IA0KDQpSb2dlciBhc2tlZCBmb3IgdGhpcyBh
cHByb2FjaCBpbiBWMSwgYW5kIEkgc2F3IHRoYXQgaXQgY2FuIGJlIGRvbmUgaW4gYSANCnJlbGF0
aXZlbHkgc3RyYWlnaHRmb3J3YXJkIHdheSwgc28gSSBpbXBsZW1lbnRlZCBpdC4gSSBkaWRu4oCZ
dCBleGFjdGx5IA0KZ2V0IHdoYXQgdGhlIGJlbmVmaXRzIHdlcmUsIGJ1dCBJIGFzc3VtZWQgdGhh
dCB0aGVyZSBhcmUgc29tZSBhbmQgdGhlIA0KZWZmb3J0IGlzIG5vdCB0b28gYmlnIHRvIGp1c3Qg
ZG8gaXQgaWYgdGhlIG1haW50YWluZXJzIGFyZSBhc2tpbmcgZm9yIGl0Lg0KDQpOb3cgd2l0aCB0
aGUgcG9zaWJpbGl0eSBvZiByZWRvaW5nIGV2ZXJ5dGhpbmcgKmFnYWluKiBhbmQgbWFraW5nIGl0
IG11Y2ggDQptb3JlIGNvbXBsZXggSSBzdGFydGVkIHRvIHJlYWxseSB0aGluayBpZiBpdHMgcmVh
bGx5IG5lZWRlZC4gU28gSSB3YW50IA0KdG8ga25vdyB5b3VyIGFuZCBvdGhlcnMnIG9waW5pb25z
IG9uIHJlZ2lzdGVyaW5nIFZGcyB3aXRoIERvbTAuDQoNCg0KLS0gDQpNeWt5dGE=


From xen-devel-bounces@lists.xenproject.org Wed Apr 01 15:06:07 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 01 Apr 2026 15:06:07 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1270606.1559228 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1w7x8k-0007If-8B; Wed, 01 Apr 2026 15:05:54 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1270606.1559228; Wed, 01 Apr 2026 15:05: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 1w7x8k-0007IY-4z; Wed, 01 Apr 2026 15:05:54 +0000
Received: by outflank-mailman (input) for mailman id 1270606;
 Wed, 01 Apr 2026 15:05:53 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <jbeulich@suse.com>) id 1w7x8j-0007IS-Ea
 for xen-devel@lists.xenproject.org; Wed, 01 Apr 2026 15:05:53 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1w7x8i-00BwTF-Lh
 for xen-devel@lists.xenproject.org; Wed, 01 Apr 2026 17:05:52 +0200
Received: from [10.42.69.11] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <jbeulich@suse.com>)
 id 69cd3437-2eae-0a2a0a5409dd-0a2a450b94c4-36
 for <xen-devel@lists.xenproject.org>; Wed, 01 Apr 2026 17:05:52 +0200
Received: from [209.85.128.41] (helo=mail-wm1-f41.google.com)
 by tlsNG-42698a.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.0)
 (envelope-from <jbeulich@suse.com>)
 id 69cd3450-bca8-0a2a450b0019-d1558029d0a6-3
 for <xen-devel@lists.xenproject.org>; Wed, 01 Apr 2026 17:05:52 +0200
Received: by mail-wm1-f41.google.com with SMTP id
 5b1f17b1804b1-48702d51cd0so82594525e9.2
 for <xen-devel@lists.xenproject.org>; Wed, 01 Apr 2026 08:05:52 -0700 (PDT)
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-43d1e4e56fesm356141f8f.27.2026.04.01.08.05.51
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Wed, 01 Apr 2026 08:05:51 -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=google header.d=suse.com header.i="@suse.com" header.h="Content-Transfer-Encoding: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=1775055952; x=1775660752; darn=lists.xenproject.org;
        h=content-transfer-encoding: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;
        bh=+iaDKuOi3FwVgN1qeXcXFnW7xUHsI7m5CwiI2dqvb60=;
        b=BVDhYstAWoFUcJKyRnGq1Fzq2OGetRnPWuo8bR5txLvK4oJS0pHyGCAWj/mPXhrERr
         50Bi6fCQJEIhh6D+YysC41S+S3Z2spzgvThC9kJ1lF72mxi0IevCvusdQnBF5V+YMSPE
         WzTGADfl7r8L20Y4M20pmlpqAn9qumt7mcxoFztcn8a2TgWono3KNcTvCATfgDf0sZNu
         WCvRS7Gj9iaRiMdPz5o5GeHxHAG/u7UtWLPIl59gagY1R2AVUNNlABqevubVYhKjy6Sx
         BoBeeVKEXW2/LU+q3085wQz51kCIb0lLUfqM4ZB4dmwCXIENyEfzFYvMsPPtDpqwkkzQ
         BjeA==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20251104; t=1775055952; x=1775660752;
        h=content-transfer-encoding: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;
        bh=+iaDKuOi3FwVgN1qeXcXFnW7xUHsI7m5CwiI2dqvb60=;
        b=fnMNvKJQ7lVAymktg0Ck0h8ZrzvbopjS0IH6tC5uEOp6V6NxX9VSjTUadyh4nD/S0O
         nNsoQ+85J+431PJ28CnwwOHmO9n3V+y+KAomMHPI3RA99aHAwrIGOns8XVl0KxQUUWX7
         5ucxXt0mq/++/+zgkDlAExOrtQYDh1gSF2w5SNH7YoF6/EEt6OcP5SYMU5LQbtwwjV9R
         aMaJWC9i/7FdZLp8gP0+89jF0PSu//FpchUMYtg+XUgV1fkF+TySSvhGDPQ6/a7W1dMV
         Sz9/xmiszr/PdxiaGnAp2AvCEMXykfRRz063/9Cr236X2Nx3jNzXRU3cQD/AL4OByC9m
         PiCg==
X-Forwarded-Encrypted: i=1; AJvYcCUD7/fGVbrRs9LtzYv7nI9f7GDMLzYVrUC3XClEiMC3ru/rfpx6w4VsynTN+td/esyYaAZ5I9OhKo8=@lists.xenproject.org
X-Gm-Message-State: AOJu0Yyojg8egRG/YVM0TwvfgNhLxHc1+r+RyM8s1G2Kue9g/cqNeYPP
	wVouUduLhw5Y1fGzih6WybR9Wn35dWtaskg/mk65BYalNzcTlCLfuZI3s8C2PqPTlA==
X-Gm-Gg: ATEYQzym6tk0xBJKqzLtFXSIjDuI3DI0PvGg7T4KjPPZa/17lVOtovsrnnEwYo/R0iB
	1bkN1IpALD8QOB7wWozTl+SC0mbDZRpHaYW+5rsf4Za1FRXkvZhRkBGKUe9BsshjOaTFwSxT5lW
	WBy2JxjmbvVflAMWyTdKIYUEnKf5QISzmn/Qx8DkeRw7Da3WKjUomhizQ3R7ezamxojbau5AsoJ
	qbYlpfYKUIRQqTKUjjiGB1qVBuD0tehIMiVJiFptE9UYFwByv0qxbY33GFeNiJk/5w12nInH60v
	CXir0kh3Apzsag+5a75SFzCsXbmN2kjwFYJTueLOqX5UH2uLiInRlgWXXR9Z8S7zvP1YaDtOWcm
	dy/KhiBzrruFhXnm8ANsLzwKn83VgqAbe6cG3taGXVIDQaVgSX6hCRQuga+7GwRJK5ElUnsol0w
	x1bsI2l+Lfs/Q58Xe8PqAUxaHSeqmrM892G2VlEUAwTRXx0+dK+OUc47uYWVtl31A0IcYGSqyXm
	a9/B3nBKOCgQmw=
X-Received: by 2002:a05:600c:46d3:b0:485:f1d1:8f3d with SMTP id 5b1f17b1804b1-4888355e820mr65800625e9.6.1775055951859;
        Wed, 01 Apr 2026 08:05:51 -0700 (PDT)
Message-ID: <93e8407e-cff0-42cc-8cfd-2d82f536a886@suse.com>
Date: Wed, 1 Apr 2026 17:05:49 +0200
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH v1 10/27] xen/riscv: generate IMSIC DT node for guest
 domains
To: Oleksii Kurochko <oleksii.kurochko@gmail.com>
Cc: Romain Caritey <Romain.Caritey@microchip.com>,
 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.pau@citrix.com>,
 Stefano Stabellini <sstabellini@kernel.org>, xen-devel@lists.xenproject.org
References: <cover.1773157782.git.oleksii.kurochko@gmail.com>
 <8154eae081d14da89f27bad581270cc5bba6ccfc.1773157782.git.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: <8154eae081d14da89f27bad581270cc5bba6ccfc.1773157782.git.oleksii.kurochko@gmail.com>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 7bit
X-purgate-ID: tlsNG-42698a/1775055952-EC9592A1-5420D53C/0/0
X-purgate-type: clean
X-purgate-size: 4271

On 10.03.2026 18:08, Oleksii Kurochko wrote:
> Guests using the IMSIC interrupt controller require a corresponding
> Device Tree description. Add support for generating an IMSIC node when
> building the guest DT.
> 
> Keep a reference to the host IMSIC DT node and reuse its compatible
> property while constructing the guest-visible node.

Again raises a migration concern. Presumably a guest would then be able
to migrate only to other hosts with the same compatible property.

> @@ -487,3 +492,111 @@ int __init imsic_init(const struct dt_device_node *node)
>  
>      return rc;
>  }
> +
> +static int __init imsic_make_reg_property(struct domain *d, void *fdt)
> +{
> +    __be32 regs[4];
> +
> +    regs[0] = cpu_to_be32(imsic_cfg.base_addr >> 32);
> +    regs[1] = cpu_to_be32(imsic_cfg.base_addr);
> +    regs[2] = cpu_to_be32((IMSIC_MMIO_PAGE_SZ * d->max_vcpus) >> 32);
> +    regs[3] = cpu_to_be32(IMSIC_MMIO_PAGE_SZ * d->max_vcpus);

Might be nice to encode as an initializer of the array variable. There don't
look to be any side effects in the expressions used, so Misra should take no
issue with this.

> +    return fdt_property(fdt, "reg", regs, sizeof(regs));
> +}
> +
> +static int __init imsic_set_interrupt_extended_prop(struct domain *d,
> +                                                    void *fdt)
> +{
> +    uint32_t len = 0, pos = 0, cpu, phandle;

At least pos and cpu should be of fixed width types.

> +    uint32_t *irq_ext;
> +    char buf[64];

Move this one into the loop's scope?

> +    int res;
> +
> +    irq_ext = xvzalloc_array(uint32_t, d->max_vcpus * 2);
> +    if ( !irq_ext )
> +        return -ENOMEM;
> +
> +    for ( cpu = 0; cpu < d->max_vcpus; cpu++ )
> +    {
> +        snprintf(buf, sizeof(buf), "/cpus/cpu@%u/interrupt-controller", cpu);
> +        phandle = fdt_get_phandle(fdt, fdt_path_offset(fdt, buf));
> +
> +        if ( phandle <= 0 )
> +            return phandle;

<= is odd to use on an unsigned type. Arm, in a similar situation, uses != .

Yet then - if 0 is an error indicator, aren't you converting this into a
success indicator for the caller?

> +        irq_ext[pos++] = cpu_to_be32(phandle);
> +        len += sizeof(uint32_t);

As before, preferably sizeof(<expression>) to clarify the connection. It's
pretty obvious here, but still. Yet then - do you really need to maintain
"len"? Why not use ...

> +        irq_ext[pos++] = cpu_to_be32(IRQ_S_EXT);
> +        len += sizeof(uint32_t);
> +    }
> +
> +    res = fdt_property(fdt, "interrupts-extended", irq_ext, len);

... "d->max_vcpus * 2 * sizeof(*irq_ext)" here?

> +    XVFREE(irq_ext);

This can be just xvfree(), as the variable goes out of scpoe just afterwards
anyway.

> +    return res;
> +}
> +
> +int __init imsic_make_dt_node(const struct kernel_info *kinfo)

So this function is unused until the next patch. Acceptable as long as Eclair
(or other) scans aren't done for RISC-V, but generally you may want to try to
get used to order patches such that this is avoided.

> +{
> +    uint32_t len;
> +    const void *data = NULL;

Why the initializer?

> +    int res = 0;
> +    void *fdt = kinfo->fdt;
> +    const struct dt_device_node *host_imsic_node = imsic_cfg.host_node;
> +    uint32_t *next_phandle = &kinfo->bd.d->arch.next_phandle;
> +
> +    res = fdt_begin_node(fdt, host_imsic_node->full_name);
> +    if ( res )
> +        return res;
> +
> +    data = dt_get_property(host_imsic_node, "compatible", &len);
> +    if ( !data )
> +    {
> +        printk(XENLOG_ERR "%s: Can't find 'compatible' property\n",
> +               host_imsic_node->full_name);
> +
> +        return -ENOENT;
> +    }

Move fdt_begin_node() down below here?

> --- a/xen/arch/riscv/include/asm/imsic.h
> +++ b/xen/arch/riscv/include/asm/imsic.h
> @@ -57,11 +57,16 @@ struct imsic_config {
>      /* MSI */
>      const struct imsic_msi *msi;
>  
> +    /* DT node of IMSIC */
> +    const struct dt_device_node *host_node;

Does "host" in the name carry much of a meaning? Maybe better dt_node, to
(potentially) distinguish it from a NUMA node which also may need tracking
for an imsic at some point?

Jan


From xen-devel-bounces@lists.xenproject.org Wed Apr 01 15:10:37 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 01 Apr 2026 15:10:37 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1270618.1559237 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1w7xDH-00014h-OD; Wed, 01 Apr 2026 15:10:35 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1270618.1559237; Wed, 01 Apr 2026 15:10: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 1w7xDH-00014a-LM; Wed, 01 Apr 2026 15:10:35 +0000
Received: by outflank-mailman (input) for mailman id 1270618;
 Wed, 01 Apr 2026 15:10:34 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <jbeulich@suse.com>) id 1w7xDF-00014U-V3
 for xen-devel@lists.xenproject.org; Wed, 01 Apr 2026 15:10:34 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1w7xDF-00By62-0e
 for xen-devel@lists.xenproject.org; Wed, 01 Apr 2026 17:10:33 +0200
Received: from [10.42.69.9] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <jbeulich@suse.com>)
 id 69cd3556-bab6-0a2a0a5309dd-0a2a45099302-46
 for <xen-devel@lists.xenproject.org>; Wed, 01 Apr 2026 17:10:32 +0200
Received: from [209.85.221.41] (helo=mail-wr1-f41.google.com)
 by tlsNG-bad1c0.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.0)
 (envelope-from <jbeulich@suse.com>)
 id 69cd3568-bf79-0a2a45090019-d155dd29a4a6-3
 for <xen-devel@lists.xenproject.org>; Wed, 01 Apr 2026 17:10:32 +0200
Received: by mail-wr1-f41.google.com with SMTP id
 ffacd0b85a97d-43ccda008cdso793157f8f.0
 for <xen-devel@lists.xenproject.org>; Wed, 01 Apr 2026 08:10:32 -0700 (PDT)
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-43d1e4e56fesm383358f8f.27.2026.04.01.08.10.31
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Wed, 01 Apr 2026 08:10:31 -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=google header.d=suse.com header.i="@suse.com" header.h="Content-Transfer-Encoding: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=1775056232; x=1775661032; darn=lists.xenproject.org;
        h=content-transfer-encoding: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;
        bh=Of1OV/sjI0XhbplbJcGwuBdgsHi+597BjgLgYsaHQDo=;
        b=PmBs8kGDNo87/N91ogIkWT/KIO8jJFEhfImKt3UcRO8bsP76r30LJDOiGbq73mx3DQ
         uKzzusYlhT1OfL6Y2O4Dy/9Thunz0quAKCJmgFWQS4MugYsqyhE2JqeWUM5mbBQNlyJi
         IqTlvWEUJJXOBMu2cUxT4ELOGHIM43Xbxa045pKJM0RXscSrSHyBMyZMGw9z67gR8SzP
         F5Y/s/i3ZIHmon3N5Kt7pp79lUE/2pNtdIVZhx57aTeC04xuWCJRZtNAlO9D9eBQYYqp
         Q8FvWnxrxVSzbasM9MjYfsQi24zLk0zSoUdsbm45rJak+8D++MYksNdX6DF8kLInAmMr
         /nrw==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20251104; t=1775056232; x=1775661032;
        h=content-transfer-encoding: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;
        bh=Of1OV/sjI0XhbplbJcGwuBdgsHi+597BjgLgYsaHQDo=;
        b=k4WeLfHHdvuFCr8GgVbNm00ax/69FhJ0PzZ4uLTe6U3oaL1cqkdTBzoEhs/d7Vsa71
         v1XAiu9ClhznnvuBQmznT8krsrrgK5caT6/ISScyBJV/wBznqod11+YVokBSWDzQQ8DN
         laFV1BK1qBYKQkrQCT3Tn4nlbR55kSl1k4QhuPOdvltSXcCICOTLUgmmD12/HFOA6+fw
         oUEqIz7isPzI3sNPgNaiHOgLrUYCHjRe3V46sPufUHQ0Bwx/MMv358jTOduUycoYxgtz
         1O5vOUfZB07jyNwD3YyKVSm4v0OVfl+aigHRFhiC6Hs0U31tXxbDaLdgMd2D+bJ53j/3
         VcZQ==
X-Forwarded-Encrypted: i=1; AJvYcCWSjNsAomfQuEoEIGDMuMpsBjlBz201oici8NPCtsMGePpjr7hdP4wfzVxZc5j1Dzbfx0SZO8fbpCU=@lists.xenproject.org
X-Gm-Message-State: AOJu0YzboU2YPQ9hPl6lSJl2OqUjyR1TkePyfyQqtw9yBPw9QkS1b59R
	FlvovPg4OploUp0o2wnf6IFqtHlh9OfGX3b/J0mCmN1/WYQnO4aX+yDQapb/dWYS/w==
X-Gm-Gg: ATEYQzxmdY2P/L0jiu4wg5gNbRUdpcXMfPvPOQ8USOetzFRLY+0SzSn6VKDMPjHcwDB
	x3qWm1kuIbRwdPxZ8m3wIL48Zr4BAtbFS7VJoKk+icBCXotFiG0tyGwyqeVFs4zo3TE22zoH7p4
	gCKFEB1SzgYTFm2ZMbFyuMicfmwVwJFNhhxMg6QmKfwBVmL6cJ4sv4k054e7JvgwUU6V/RH5MsY
	YacDPAVCbJpHuFyZKwoyVs17+B84jRGOZ6qyacmulQNwaTX9Lgm7TG6YYMa2njisQpPbGABOFSz
	YvQtc3zZ+q7gJyuzFZnc1B1D7sJ0AMbj9fQCAKhdrTnYljEVsZ7vGPfGdPkUaJlTWnXyrpr9PkF
	63SRZ+JAPzfNuvGT+tCM8yd3ONN2Q07bwMSeVQZhzawUt8BSvROZ43eRdm4c0/zUV3gaZnU3GWV
	E5nEq+arXK2NsL/H9Fi8rl/UZLvZ3fPJLsDfIQeMa4n8dLIA/ZDyUbjvmpKVlFB6j75cf4prpXc
	eVZRD6BoiVY190=
X-Received: by 2002:a05:6000:184d:b0:43c:f257:c706 with SMTP id ffacd0b85a97d-43d1561081fmr7389718f8f.23.1775056232256;
        Wed, 01 Apr 2026 08:10:32 -0700 (PDT)
Message-ID: <0e37083a-42ab-4c99-83fc-b77f519394b9@suse.com>
Date: Wed, 1 Apr 2026 17:10:30 +0200
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH v2 10/11] xen/riscv: add definition of guest RAM banks
To: Oleksii Kurochko <oleksii.kurochko@gmail.com>
Cc: Romain Caritey <Romain.Caritey@microchip.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.pau@citrix.com>,
 Stefano Stabellini <sstabellini@kernel.org>, xen-devel@lists.xenproject.org
References: <cover.1774281309.git.oleksii.kurochko@gmail.com>
 <8278256f3d270b456d19cb9891b89b88a46548a5.1774281309.git.oleksii.kurochko@gmail.com>
 <1a3a316e-f0ea-4514-95d6-9813d6d5ca76@suse.com>
 <691be850-9145-4bbf-a897-d10a0193b730@gmail.com>
 <dfd2a666-f3a5-4d88-b034-438f8fbb85ba@suse.com>
 <2bae9e12-8f71-4ff0-b077-bfb4215e5e14@gmail.com>
 <ffd3a7cd-8c47-4a9b-864a-26a053b5b7d2@suse.com>
 <bc5a9826-c1ff-43b2-a3d1-1a4862301aea@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: <bc5a9826-c1ff-43b2-a3d1-1a4862301aea@gmail.com>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 7bit
X-purgate-ID: tlsNG-bad1c0/1775056232-5535C152-3E42469B/0/0
X-purgate-type: clean
X-purgate-size: 2196

On 01.04.2026 16:53, Oleksii Kurochko wrote:
> 
> 
> On 4/1/26 4:22 PM, Jan Beulich wrote:
>> On 01.04.2026 15:57, Oleksii Kurochko wrote:
>>> On 4/1/26 8:17 AM, Jan Beulich wrote:
>>>> On 31.03.2026 18:14, Oleksii Kurochko wrote:
>>>>> On 3/30/26 5:51 PM, Jan Beulich wrote:
>>>>>> On 23.03.2026 17:29, Oleksii Kurochko wrote:
>>>>>>> The dom0less solution uses defined RAM banks as compile-time constants,
>>>>>>> so introduce macros to describe guest RAM banks.
>>>>>>>
>>>>>>> The reason for 2 banks is that there is typically always a use case for
>>>>>>> low memory under 4 GB, but the bank under 4 GB ends up being small because
>>>>>>> there are other things under 4 GB it can conflict with (interrupt
>>>>>>> controller, PCI BARs, etc.).
>>>>>> Fixed layouts like the one you suggest come with (potentially severe)
>>>>>> downsides. For example, what if more than 2Gb of MMIO space are needed
>>>>>> for non-64-bit BARs?
>>>>> It looks where usually RAM on RISC-V boards start, so I expect that 2gb
>>>>> before RAM start is enough for MMIO space.
>>>> Likely in the common case. Board designers aren't constrained by this,
>>>> though (aiui). Whereas you set in stone a single, fixed layout.
>>>>
>>>> Arm maintainers - since a similar fixed layout is used there iirc,
>>>> could you chime in here, please?
>>>>
>>>>> Answering your question it will be an issue or it will also use some
>>>>> space before banks, no?
>>>> I fear I don't understand what you're trying to tell me.
>>> I meant that there is also some space between banks and pretty big which
>>> could be used for MMIO which could be used for non-64-bit BARs.
>> I don't follow: Bank 0 extends to 4G. There's no space above it, below
>> bank 1, which could be use for non-64-bit BARs.
> 
> So we have two banks:
> bank[0] -> [0x80000000, 0x100000000)
> bank[1] -> [0x0200000000, 10000000000)
> 
> So i think we have some space between them [0x100000000, 0x0200000000) 
> -> 4gb to be used for non-64-bit BARs.

But a non-64-bit BAR need to be assigned an address below 0x100000000?

> And also we have another 2gb before bank[0].

Yes, but I talked about that before.

Jan


From xen-devel-bounces@lists.xenproject.org Wed Apr 01 15:16:43 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 01 Apr 2026 15:16:43 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1270630.1559246 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1w7xJ9-0001df-D1; Wed, 01 Apr 2026 15:16:39 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1270630.1559246; Wed, 01 Apr 2026 15:16: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 1w7xJ9-0001dY-9e; Wed, 01 Apr 2026 15:16:39 +0000
Received: by outflank-mailman (input) for mailman id 1270630;
 Wed, 01 Apr 2026 15:16:37 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <jbeulich@suse.com>) id 1w7xJ7-0001dS-NO
 for xen-devel@lists.xenproject.org; Wed, 01 Apr 2026 15:16:37 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1w7xJ6-0053IJ-UW
 for xen-devel@lists.xenproject.org; Wed, 01 Apr 2026 17:16:36 +0200
Received: from [10.42.69.2] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <jbeulich@suse.com>)
 id 69cd36c0-2eae-0a2a0a5409dd-0a2a4502c88e-38
 for <xen-devel@lists.xenproject.org>; Wed, 01 Apr 2026 17:16:36 +0200
Received: from [209.85.218.54] (helo=mail-ej1-f54.google.com)
 by tlsNG-720697.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.0)
 (envelope-from <jbeulich@suse.com>)
 id 69cd36d4-42fa-0a2a45020019-d155da36e0b1-3
 for <xen-devel@lists.xenproject.org>; Wed, 01 Apr 2026 17:16:36 +0200
Received: by mail-ej1-f54.google.com with SMTP id
 a640c23a62f3a-b982b0889d8so859745566b.2
 for <xen-devel@lists.xenproject.org>; Wed, 01 Apr 2026 08:16:36 -0700 (PDT)
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-43d1e2a6f13sm570264f8f.3.2026.04.01.08.16.35
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Wed, 01 Apr 2026 08:16:35 -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=google header.d=suse.com header.i="@suse.com" header.h="Content-Transfer-Encoding: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=1775056596; x=1775661396; darn=lists.xenproject.org;
        h=content-transfer-encoding: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;
        bh=QmAa9ky8MH+ew0LJxnDQPff8r9p6/FG1sNdb8AFPXHI=;
        b=CjWzBmPfQzQOmYyNjljDsot0kJiib01IHagMgSSvwSMY/yKewOCCDtq/WnicBvMIJi
         YULNfKbpI3PaaJOjodS2hASm3t4pCOyKVuYfIYLw3R+6Gau8Qc9v7mJvaL6IlErKIpiH
         TyNklP4hBuMs8MZYmlARr2WRuwwkQHS8ZFcU9qCOXSZM1rDL/ZzC8xej2FdKCM+8gNjR
         6ilLi+NLFLYYGBYA4sQLWLzNDT/0f09eCKY21Ej9m/ph1wsXkbv/vASuCfzZ+fvUeqjt
         ORdOCjmJrlIRtn9S2DlZ77MrUCH1DBxUcKov7gE4bj0LBcnf8bQRCx+4IZrk/DKawjIl
         ehZg==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20251104; t=1775056596; x=1775661396;
        h=content-transfer-encoding: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;
        bh=QmAa9ky8MH+ew0LJxnDQPff8r9p6/FG1sNdb8AFPXHI=;
        b=I+w4HJccihaYxWphSAxB7w+KwfMO2/3z0WWjuuhKJUZeh1DnIoYOWRkjQIE7nCnyer
         ueTx42UUdKBuHnLMwM7UCPRpJijDsQTbjLRKyG7v4N6VBL78+5A3z54WDwOn3rSsJE0S
         bNAfgKp2Ys8spk5E5ThFHEd3n3TQwYC/B3gIlMC/s9DCMVWsNJwsBpy04meSjPB6tJpL
         /o8I5yAi76mE/frDlJPNBm4hOTs06qgmL/iDLP9cPFFV6Cdv26a3K7S6LOsO3u8dxuIs
         6p0c6CmlkeGvwx45T5sDC1XToTzEAmI9+rLNzOUWjgxpj8tOIePmj2LRBgIczxMsjoKP
         A1tw==
X-Forwarded-Encrypted: i=1; AJvYcCW3ktR10qij7mWURTJ/2hsZCFF5HpnX/bm55BWRLzLukzXfIHKY/CEGY7xYR9ZFnNTeE2oknaGw5Bw=@lists.xenproject.org
X-Gm-Message-State: AOJu0YznYiNfnJIlf8Se4t0DxPqGEyVduu5SioklZfP8+tC4ZtNhCdCa
	bB9y27uhvY7BVqj/ergcS717lA3OVo573m0uUQ4BI9nR4fuV6ARREkv5yVEc2E1Xvg==
X-Gm-Gg: ATEYQzzz/5YLEScoxcYCnxnFEl4BGp6tQ0AwSAtiULsty8/etax0sWUgfZ2KrBfFEQr
	vzvvJqtobfBw2Tg+yG4hmFwUprRBo00JbmNsAsDtKwZtNURkUTjZ3iYqov7640XQcZvdMQZcFdd
	YtdXgzfloGPZQi6q/yut5NlzNNLn12FxBw7U3Uh5vULK1S1XyeC1QVlSuP1YBh6nnAK75B4TJG7
	2xWxfCqoPqIEFxOpf49rw5tLJLO6dWRW3n60LzlrI3XnwJ9FM31hwEj55kh8nipGW1Bq98raWSJ
	+A+DIkzUkiPhzwXYCi5Wurx76+oHSIdE3JOoz5eCby5yQ4SI83XyxMrLoV4t8Xhc0+KHhlWVgZj
	W31llW103wfx6dPwkdQOpOEWgOLtHdMT0u6Y+hbdQagj4lh51YNad4Ip1EmYW0Jt4ay1XbRs5eA
	9+hj37OIRECpBzLnqjwg6RbtfTmPSc8ptTcgZeAd1Ildim0jSoe/RAVnqAA0IXn7umKsqO2vQvZ
	MW1h5fq8hNQ1dM=
X-Received: by 2002:a17:906:c24d:b0:b98:36cd:7e14 with SMTP id a640c23a62f3a-b9c13cac9eemr244965066b.42.1775056596167;
        Wed, 01 Apr 2026 08:16:36 -0700 (PDT)
Message-ID: <362d1e3a-409c-40ab-8d2c-36dc30a04b88@suse.com>
Date: Wed, 1 Apr 2026 17:16:33 +0200
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH v1 11/27] xen/riscv: create APLIC DT node for guest
 domains
To: Oleksii Kurochko <oleksii.kurochko@gmail.com>
Cc: Romain Caritey <Romain.Caritey@microchip.com>,
 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.pau@citrix.com>,
 Stefano Stabellini <sstabellini@kernel.org>, xen-devel@lists.xenproject.org
References: <cover.1773157782.git.oleksii.kurochko@gmail.com>
 <462b5f7dbe4e5084a35fb869b59327c6c92d1fbf.1773157782.git.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: <462b5f7dbe4e5084a35fb869b59327c6c92d1fbf.1773157782.git.oleksii.kurochko@gmail.com>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 7bit
X-purgate-ID: tlsNG-720697/1775056596-4CBF5CD1-819FB2AD/0/0
X-purgate-type: clean
X-purgate-size: 2195

On 10.03.2026 18:08, Oleksii Kurochko wrote:
> @@ -295,6 +297,85 @@ static void cf_check aplic_set_irq_type(struct irq_desc *desc,
>      spin_unlock(&aplic.lock);
>  }
>  
> +static int __init cf_check aplic_make_dom_dt_node(
> +                                    const struct kernel_info *kinfo,
> +                                    const struct dt_device_node *aplic_node)

Nit: Entirely bogus indentation.

> +{
> +    uint32_t len;
> +    const __be32 *regs;
> +    const void *data = NULL;

Again, why the initializer?

> +    int res = 0;
> +    void *fdt = kinfo->fdt;
> +
> +    res = imsic_make_dt_node(kinfo);
> +    if ( res )
> +        return res;
> +
> +    res = fdt_begin_node(fdt, aplic_node->full_name);
> +    if (res)

Nit: Style.

> +        return res;
> +
> +    data = dt_get_property(aplic_node, "#interrupt-cells", &len);
> +    if ( !data )
> +    {
> +        printk("%s: Can't find '#interrupt-cells' property\n",
> +               aplic_node->full_name);
> +        return -FDT_ERR_XEN(ENOENT);
> +    }

Again, pull this up to be first in the function?

> +    res = fdt_property(fdt, "#interrupt-cells", data, len);
> +    if ( res )
> +        return res;

So host properties are again directly handed through to the guest?
Shouldn't the number of interrupts (aiui that's the "number of cells"
here) a guest gets be independent from the host it runs one?

> +    regs = dt_get_property(aplic_node, "reg", &len);
> +    if ( !regs )
> +    {
> +        printk("%s: Can't find 'reg' property\n", aplic_node->full_name);
> +        return -FDT_ERR_XEN(ENOENT);
> +    }
> +
> +    res = fdt_property(fdt, "reg", regs, len);
> +    if ( res )
> +        return res;
> +
> +    data = dt_get_property(aplic_node, "riscv,num-sources", &len);
> +    if ( !data )
> +    {
> +        printk("%s: Can't find 'riscv,num-sources' property\n",
> +                aplic_node->full_name);
> +        return -FDT_ERR_XEN(ENOENT);
> +    }
> +
> +    res = fdt_property(fdt, "riscv,num-sources", data, len);
> +    if ( res )
> +        return res;

Or maybe this is the number of interrupts?

Jan


From xen-devel-bounces@lists.xenproject.org Wed Apr 01 16:01:41 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 01 Apr 2026 16:01:41 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1270662.1559256 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1w7y0c-000251-Q0; Wed, 01 Apr 2026 16:01:34 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1270662.1559256; Wed, 01 Apr 2026 16:01: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 1w7y0c-00024u-LK; Wed, 01 Apr 2026 16:01:34 +0000
Received: by outflank-mailman (input) for mailman id 1270662;
 Wed, 01 Apr 2026 16:01: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 1w7y0b-00024m-Il
 for xen-devel@lists.xenproject.org; Wed, 01 Apr 2026 16:01:33 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1w7y0a-00CfIT-By
 for xen-devel@lists.xenproject.org; Wed, 01 Apr 2026 18:01:32 +0200
Received: from [10.42.69.12] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <krzk@kernel.org>)
 id 69cd414e-2eae-0a2a0a5409dd-0a2a450cdb74-28
 for <xen-devel@lists.xenproject.org>; Wed, 01 Apr 2026 18:01:32 +0200
Received: from [172.105.4.254] (helo=tor.source.kernel.org)
 by tlsNG-d25034.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.0)
 (envelope-from <krzk@kernel.org>)
 id 69cd415b-f40c-0a2a450c0019-ac6904fe98be-3
 for <xen-devel@lists.xenproject.org>; Wed, 01 Apr 2026 18:01:32 +0200
Received: from smtp.kernel.org (transwarp.subspace.kernel.org [100.75.92.58])
 by tor.source.kernel.org (Postfix) with ESMTP id 8B28B61339;
 Wed,  1 Apr 2026 16:01:30 +0000 (UTC)
Received: by smtp.kernel.org (Postfix) with ESMTPSA id E304CC19423;
 Wed,  1 Apr 2026 16: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=k20201202 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/simple; d=kernel.org;
	s=k20201202; t=1775059290;
	bh=W9qx/b89lLAH5xKATjSr4FjoF8xSzZzboxnb+4KLYY8=;
	h=Date:Subject:To:Cc:References:From:In-Reply-To:From;
	b=gKwgVmSAxxvBbw1CPLzmPJv7PtM7inQR8cZwoafTWDdo4dBnnR87DPqffL+itfKia
	 jLGAooi36YLbRnOlZDk4cfJkhQ70pO4Y86FtHaYjtr6IVn78mKX71s3sBGlNhPgVfG
	 ziq9gdKcEDwgBcmTp0E18lygeAR3rk5K2WKN/2nRQ7PyqfA+eKN4FAJKBKRLZTtLnr
	 oIBzTon1i40EZHvzz3GO0xpnaN4Crt7W9DVWwzKRyQzxha85dZAJOD/SJhCFpnm7pO
	 BqRFv9sXOXsUigZ/ZhYC9HbVHD9HkaSeYly7cBvhskECynru7k7o036e3LI0JumiYc
	 FpuYi+9bF5/xg==
Message-ID: <b64a71fc-9a3f-49c0-a035-be6fe2a1ea4d@kernel.org>
Date: Wed, 1 Apr 2026 18:01:20 +0200
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH v12 2/3] of: Factor arguments passed to of_map_id() into a
 struct
To: Frank Li <Frank.li@nxp.com>,
 Vijayanand Jitta <vijayanand.jitta@oss.qualcomm.com>
Cc: Nipun Gupta <nipun.gupta@amd.com>, Nikhil Agarwal
 <nikhil.agarwal@amd.com>, Joerg Roedel <joro@8bytes.org>,
 Will Deacon <will@kernel.org>, Robin Murphy <robin.murphy@arm.com>,
 Marc Zyngier <maz@kernel.org>, Lorenzo Pieralisi <lpieralisi@kernel.org>,
 Thomas Gleixner <tglx@kernel.org>, Saravana Kannan <saravanak@kernel.org>,
 Richard Zhu <hongxing.zhu@nxp.com>, Lucas Stach <l.stach@pengutronix.de>,
 =?UTF-8?Q?Krzysztof_Wilczy=C5=84ski?= <kwilczynski@kernel.org>,
 Manivannan Sadhasivam <mani@kernel.org>, Bjorn Helgaas
 <bhelgaas@google.com>, Sascha Hauer <s.hauer@pengutronix.de>,
 Pengutronix Kernel Team <kernel@pengutronix.de>,
 Fabio Estevam <festevam@gmail.com>, Juergen Gross <jgross@suse.com>,
 Stefano Stabellini <sstabellini@kernel.org>,
 Oleksandr Tyshchenko <oleksandr_tyshchenko@epam.com>,
 Dmitry Baryshkov <dmitry.baryshkov@oss.qualcomm.com>,
 Konrad Dybcio <konrad.dybcio@oss.qualcomm.com>,
 Bjorn Andersson <bjorn.andersson@oss.qualcomm.com>,
 Rob Herring <robh@kernel.org>, Conor Dooley <conor+dt@kernel.org>,
 Krzysztof Kozlowski <krzk+dt@kernel.org>,
 Prakash Gupta <prakash.gupta@oss.qualcomm.com>,
 Vikash Garodia <vikash.garodia@oss.qualcomm.com>,
 linux-kernel@vger.kernel.org, iommu@lists.linux.dev,
 linux-arm-kernel@lists.infradead.org, devicetree@vger.kernel.org,
 linux-pci@vger.kernel.org, imx@lists.linux.dev,
 xen-devel@lists.xenproject.org, linux-arm-msm@vger.kernel.org,
 Charan Teja Kalla <charan.kalla@oss.qualcomm.com>
References: <20260331-parse_iommu_cells-v12-0-decfd305eea9@oss.qualcomm.com>
 <20260331-parse_iommu_cells-v12-2-decfd305eea9@oss.qualcomm.com>
 <acvdqQvcitLTCZbm@lizhi-Precision-Tower-5810>
From: Krzysztof Kozlowski <krzk@kernel.org>
Content-Language: en-US
Autocrypt: addr=krzk@kernel.org; keydata=
 xsFNBFVDQq4BEAC6KeLOfFsAvFMBsrCrJ2bCalhPv5+KQF2PS2+iwZI8BpRZoV+Bd5kWvN79
 cFgcqTTuNHjAvxtUG8pQgGTHAObYs6xeYJtjUH0ZX6ndJ33FJYf5V3yXqqjcZ30FgHzJCFUu
 JMp7PSyMPzpUXfU12yfcRYVEMQrmplNZssmYhiTeVicuOOypWugZKVLGNm0IweVCaZ/DJDIH
 gNbpvVwjcKYrx85m9cBVEBUGaQP6AT7qlVCkrf50v8bofSIyVa2xmubbAwwFA1oxoOusjPIE
 J3iadrwpFvsZjF5uHAKS+7wHLoW9hVzOnLbX6ajk5Hf8Pb1m+VH/E8bPBNNYKkfTtypTDUCj
 NYcd27tjnXfG+SDs/EXNUAIRefCyvaRG7oRYF3Ec+2RgQDRnmmjCjoQNbFrJvJkFHlPeHaeS
 BosGY+XWKydnmsfY7SSnjAzLUGAFhLd/XDVpb1Een2XucPpKvt9ORF+48gy12FA5GduRLhQU
 vK4tU7ojoem/G23PcowM1CwPurC8sAVsQb9KmwTGh7rVz3ks3w/zfGBy3+WmLg++C2Wct6nM
 Pd8/6CBVjEWqD06/RjI2AnjIq5fSEH/BIfXXfC68nMp9BZoy3So4ZsbOlBmtAPvMYX6U8VwD
 TNeBxJu5Ex0Izf1NV9CzC3nNaFUYOY8KfN01X5SExAoVTr09ewARAQABzSVLcnp5c3p0b2Yg
 S296bG93c2tpIDxrcnprQGtlcm5lbC5vcmc+wsGVBBMBCgA/AhsDBgsJCAcDAgYVCAIJCgsE
 FgIDAQIeAQIXgBYhBJvQfg4MUfjVlne3VBuTQ307QWKbBQJoF1BKBQkWlnSaAAoJEBuTQ307
 QWKbHukP/3t4tRp/bvDnxJfmNdNVn0gv9ep3L39IntPalBFwRKytqeQkzAju0whYWg+R/rwp
 +r2I1Fzwt7+PTjsnMFlh1AZxGDmP5MFkzVsMnfX1lGiXhYSOMP97XL6R1QSXxaWOpGNCDaUl
 ajorB0lJDcC0q3xAdwzRConxYVhlgmTrRiD8oLlSCD5baEAt5Zw17UTNDnDGmZQKR0fqLpWy
 786Lm5OScb7DjEgcA2PRm17st4UQ1kF0rQHokVaotxRM74PPDB8bCsunlghJl1DRK9s1aSuN
 hL1Pv9VD8b4dFNvCo7b4hfAANPU67W40AaaGZ3UAfmw+1MYyo4QuAZGKzaP2ukbdCD/DYnqi
 tJy88XqWtyb4UQWKNoQqGKzlYXdKsldYqrLHGoMvj1UN9XcRtXHST/IaLn72o7j7/h/Ac5EL
 8lSUVIG4TYn59NyxxAXa07Wi6zjVL1U11fTnFmE29ALYQEXKBI3KUO1A3p4sQWzU7uRmbuxn
 naUmm8RbpMcOfa9JjlXCLmQ5IP7Rr5tYZUCkZz08LIfF8UMXwH7OOEX87Y++EkAB+pzKZNNd
 hwoXulTAgjSy+OiaLtuCys9VdXLZ3Zy314azaCU3BoWgaMV0eAW/+gprWMXQM1lrlzvwlD/k
 whyy9wGf0AEPpLssLVt9VVxNjo6BIkt6d1pMg6mHsUEVzsFNBFVDXDQBEADNkrQYSREUL4D3
 Gws46JEoZ9HEQOKtkrwjrzlw/tCmqVzERRPvz2Xg8n7+HRCrgqnodIYoUh5WsU84N03KlLue
 MNsWLJBvBaubYN4JuJIdRr4dS4oyF1/fQAQPHh8Thpiz0SAZFx6iWKB7Qrz3OrGCjTPcW6ei
 OMheesVS5hxietSmlin+SilmIAPZHx7n242u6kdHOh+/SyLImKn/dh9RzatVpUKbv34eP1wA
 GldWsRxbf3WP9pFNObSzI/Bo3kA89Xx2rO2roC+Gq4LeHvo7ptzcLcrqaHUAcZ3CgFG88CnA
 6z6lBZn0WyewEcPOPdcUB2Q7D/NiUY+HDiV99rAYPJztjeTrBSTnHeSBPb+qn5ZZGQwIdUW9
 YegxWKvXXHTwB5eMzo/RB6vffwqcnHDoe0q7VgzRRZJwpi6aMIXLfeWZ5Wrwaw2zldFuO4Dt
 91pFzBSOIpeMtfgb/Pfe/a1WJ/GgaIRIBE+NUqckM+3zJHGmVPqJP/h2Iwv6nw8U+7Yyl6gU
 BLHFTg2hYnLFJI4Xjg+AX1hHFVKmvl3VBHIsBv0oDcsQWXqY+NaFahT0lRPjYtrTa1v3tem/
 JoFzZ4B0p27K+qQCF2R96hVvuEyjzBmdq2esyE6zIqftdo4MOJho8uctOiWbwNNq2U9pPWmu
 4vXVFBYIGmpyNPYzRm0QPwARAQABwsF8BBgBCgAmAhsMFiEEm9B+DgxR+NWWd7dUG5NDfTtB
 YpsFAmgXUF8FCRaWWyoACgkQG5NDfTtBYptO0w//dlXJs5/42hAXKsk+PDg3wyEFb4NpyA1v
 qmx7SfAzk9Hf6lWwU1O6AbqNMbh6PjEwadKUk1m04S7EjdQLsj/MBSgoQtCT3MDmWUUtHZd5
 RYIPnPq3WVB47GtuO6/u375tsxhtf7vt95QSYJwCB+ZUgo4T+FV4hquZ4AsRkbgavtIzQisg
 Dgv76tnEv3YHV8Jn9mi/Bu0FURF+5kpdMfgo1sq6RXNQ//TVf8yFgRtTUdXxW/qHjlYURrm2
 H4kutobVEIxiyu6m05q3e9eZB/TaMMNVORx+1kM3j7f0rwtEYUFzY1ygQfpcMDPl7pRYoJjB
 dSsm0ZuzDaCwaxg2t8hqQJBzJCezTOIkjHUsWAK+tEbU4Z4SnNpCyM3fBqsgYdJxjyC/tWVT
 AQ18NRLtPw7tK1rdcwCl0GFQHwSwk5pDpz1NH40e6lU+NcXSeiqkDDRkHlftKPV/dV+lQXiu
 jWt87ecuHlpL3uuQ0ZZNWqHgZoQLXoqC2ZV5KrtKWb/jyiFX/sxSrodALf0zf+tfHv0FZWT2
 zHjUqd0t4njD/UOsuIMOQn4Ig0SdivYPfZukb5cdasKJukG1NOpbW7yRNivaCnfZz6dTawXw
 XRIV/KDsHQiyVxKvN73bThKhONkcX2LWuD928tAR6XMM2G5ovxLe09vuOzzfTWQDsm++9UKF a/A=
In-Reply-To: <acvdqQvcitLTCZbm@lizhi-Precision-Tower-5810>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 7bit
X-purgate-ID: tlsNG-d25034/1775059292-FF348A3D-2E1C22D6/0/0
X-purgate-type: clean
X-purgate-size: 2575

On 31/03/2026 16:43, Frank Li wrote:
> On Tue, Mar 31, 2026 at 07:34:47PM +0530, Vijayanand Jitta wrote:
>> From: Charan Teja Kalla <charan.kalla@oss.qualcomm.com>
>>
>> Change of_map_id() to take a pointer to struct of_phandle_args
>> instead of passing target device node and translated IDs separately.
>> Update all callers accordingly.
>>
>> Add an explicit filter_np parameter to of_map_id() and of_map_msi_id()
>> to separate the filter input from the output. Previously, the target
>> parameter served dual purpose: as an input filter (if non-NULL, only
>> match entries targeting that node) and as an output (receiving the
>> matched node with a reference held). Now filter_np is the explicit
>> input filter and arg->np is the pure output.
>>
>> Previously, of_map_id() would call of_node_put() on the matched node
>> when a filter was provided, making reference ownership inconsistent.
>> Remove this internal of_node_put() call so that of_map_id() now always
>> transfers ownership of the matched node reference to the caller via
>> arg->np. Callers are now consistently responsible for releasing this
>> reference with of_node_put(arg->np) when done.
>>
>> Suggested-by: Rob Herring (Arm) <robh@kernel.org>
>> Suggested-by: Dmitry Baryshkov <dmitry.baryshkov@oss.qualcomm.com>
>> Signed-off-by: Charan Teja Kalla <charan.kalla@oss.qualcomm.com>
>> Signed-off-by: Vijayanand Jitta <vijayanand.jitta@oss.qualcomm.com>
>> ---
>>  drivers/cdx/cdx_msi.c                    |  7 ++--
>>  drivers/iommu/of_iommu.c                 |  4 +-
>>  drivers/irqchip/irq-gic-its-msi-parent.c | 11 ++++--
>>  drivers/of/base.c                        | 68 +++++++++++++++++---------------
>>  drivers/of/irq.c                         | 10 ++++-
>>  drivers/pci/controller/dwc/pci-imx6.c    | 32 +++++++--------
>>
>> for imx part.
>>
>> Reviewed-by: Frank Li <Frank.Li@nxp.com>

So that's an Ack. Leaving a Rb tag for a tiny tiny piece of big patch
will give impression that everything is reviewed on v13. And the patch
was not reviewed by you.

If you cannot certify the reviewers statement of oversight then use acked

"For instance, maintainers may use it to signify that they are OK with a
patch landing, but they may not have reviewed it as thoroughly as if a
Reviewed-by: was provided."

"For example, if a patch affects multiple subsystems and has an
Acked-by: from one subsystem maintainer then this usually indicates
acknowledgement of *just the part which affects that maintainer's code.*"


Best regards,
Krzysztof


From xen-devel-bounces@lists.xenproject.org Wed Apr 01 16:05:44 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 01 Apr 2026 16:05:44 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1270674.1559263 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1w7y4c-0002d0-7u; Wed, 01 Apr 2026 16:05:42 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1270674.1559263; Wed, 01 Apr 2026 16:05: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 1w7y4c-0002ct-5F; Wed, 01 Apr 2026 16:05:42 +0000
Received: by outflank-mailman (input) for mailman id 1270674;
 Wed, 01 Apr 2026 16:05:41 +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 1w7y4a-0002cn-Ux
 for xen-devel@lists.xenproject.org; Wed, 01 Apr 2026 16:05:41 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1w7y4a-007T16-2j
 for xen-devel@lists.xenproject.org; Wed, 01 Apr 2026 18:05:40 +0200
Received: from [10.42.69.8] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <Michal.Orzel@amd.com>)
 id 69cd4248-2eae-0a2a0a5409dd-0a2a4508c04a-36
 for <xen-devel@lists.xenproject.org>; Wed, 01 Apr 2026 18:05:39 +0200
Received: from [52.101.62.62]
 (helo=DM5PR21CU001.outbound.protection.outlook.com)
 by tlsNG-c1860d.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.0)
 (envelope-from <Michal.Orzel@amd.com>)
 id 69cd4252-fab6-0a2a45080019-34653e3e0930-3
 for <xen-devel@lists.xenproject.org>; Wed, 01 Apr 2026 18:05:39 +0200
Received: from PH8PR22CA0021.namprd22.prod.outlook.com (2603:10b6:510:2d1::7)
 by SJ0PR12MB8613.namprd12.prod.outlook.com (2603:10b6:a03:44d::20)
 with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9769.15; Wed, 1 Apr
 2026 16:05:33 +0000
Received: from CY4PEPF0000FCC4.namprd03.prod.outlook.com
 (2603:10b6:510:2d1:cafe::19) by PH8PR22CA0021.outlook.office365.com
 (2603:10b6:510:2d1::7) with Microsoft SMTP Server (version=TLS1_3,
 cipher=TLS_AES_256_GCM_SHA384) id 15.20.9745.30 via Frontend Transport; Wed,
 1 Apr 2026 16:05:32 +0000
Received: from satlexmb07.amd.com (165.204.84.17) by
 CY4PEPF0000FCC4.mail.protection.outlook.com (10.167.242.106) with Microsoft
 SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id
 15.20.9769.17 via Frontend Transport; Wed, 1 Apr 2026 16:05:32 +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.17; Wed, 1 Apr
 2026 11:05:32 -0500
Received: from [10.71.194.215] (10.180.168.240) by satlexmb08.amd.com
 (10.181.42.217) with Microsoft SMTP Server id 15.2.2562.17 via Frontend
 Transport; Wed, 1 Apr 2026 11:05:30 -0500
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@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=QFpxjoxdC5coyM1Wqys6pK6OgG/kE5gqEoOycLn5k6rY37WWBPY4r+klJLwMT9/AOZmbnacy4OifLE4OVGHKR8JjCHRav12hzj/I7+amDZM6v/0vS9XG1Dt6TuzgC6+2zt5m24Oq/kxImQL9OPUEpyGHRYw3QJvy/j9QMzNb91E1MebNYobn5r5QWyqwO0RkK3o++XHBPVHddmLJl3aRCi5LONgnIFKCjwp9fMwgfL9ENDk+nKHcsDRHXHU6MMkBCUbswOPn7rYMqP94hkeQDIf38kFFSQx8T+8PPlxgB63IhaiAKGB6qLLiq/9x49OdbjfoKNcMNo3jRlFDRtwdwA==
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com;
 s=arcselector10001;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1;
 bh=fSIazrg/cqQji1+wSWpobRCOkBtPno0U1QWTzFGCx+k=;
 b=KNfFUjecw5XZTlg9+72jVOs4PMCoNyLnpYGMyr3kPs549DudZ7bXmLxOuZwhz6Iy6wfHdf0b8z8rPJSLnJhbI6Owz5pbKBEjk01Cy5JNLQHu3tnx/6MXMXlalKvr9MrlByfIySdII45OtDXV1VZheIi2ZPNuRRV+CXYs3sID7LZvRSaYfFNUuZSJE/BjKoowHhBSn7/ud2oaGXoxSm1ZqOpZKlsOfF5nQrvInX1k4MTJuPr+kZskUbbihs4L9QOdVs3nu98pDtRgjy+1OlqkB3NOZK3QtkfgP3j1fCgzradfqSwhTMxfADetJ7wR6fZqdR6eYgCmNeNSP7ScK5QgzA==
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=fSIazrg/cqQji1+wSWpobRCOkBtPno0U1QWTzFGCx+k=;
 b=mSVdlAjrMi5Bqvq/ZB/uOG91WstAQC4WKmoP0Hxyz2g5qMj3uowNu+PlUE6aLVVyFWyAFcDLSnuGJdc1yYSzXwSXyk9q7IwtM1yTZ2WcVG3UFucBNOHvJ99iJbiG8LowMXE3XXuepu9dSsTgCB0mCLO2/aXanMteNNNTow83UKE=
X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 165.204.84.17)
 smtp.mailfrom=amd.com; dkim=none (message not signed)
 header.d=none;dmarc=pass action=none header.from=amd.com;
Received-SPF: Pass (protection.outlook.com: domain of amd.com designates
 165.204.84.17 as permitted sender) receiver=protection.outlook.com;
 client-ip=165.204.84.17; helo=satlexmb07.amd.com; pr=C
Message-ID: <bf7b757f-e149-434b-b454-53877bc87a16@amd.com>
Date: Wed, 1 Apr 2026 18:05:30 +0200
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH 1/2] make ioremap_attr() common
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>, =?UTF-8?Q?Roger_Pau_Monn=C3=A9?=
	<roger.pau@citrix.com>, Alistair Francis <alistair.francis@wdc.com>, Connor
 Davis <connojdavis@gmail.com>, Oleksii Kurochko <oleksii.kurochko@gmail.com>,
	Bertrand Marquis <bertrand.marquis@arm.com>, Volodymyr Babchuk
	<volodymyr_babchuk@epam.com>, Timothy Pearson
	<tpearson@raptorengineering.com>
References: <924f3ef2-7883-4322-a921-edc814c96719@suse.com>
 <81e4f7e0-df57-4a5b-b16d-fe668682d94c@suse.com>
From: "Orzel, Michal" <michal.orzel@amd.com>
Content-Language: en-US
In-Reply-To: <81e4f7e0-df57-4a5b-b16d-fe668682d94c@suse.com>
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: 7bit
X-EOPAttributedMessage: 0
X-MS-PublicTrafficType: Email
X-MS-TrafficTypeDiagnostic: CY4PEPF0000FCC4:EE_|SJ0PR12MB8613:EE_
X-MS-Office365-Filtering-Correlation-Id: 8942affa-c2d1-4618-4cb1-08de900880e9
X-MS-Exchange-SenderADCheck: 1
X-MS-Exchange-AntiSpam-Relay: 0
X-Microsoft-Antispam:
	BCL:0;ARA:13230040|36860700016|82310400026|7416014|376014|1800799024|18002099003|22082099003|56012099003;
X-Microsoft-Antispam-Message-Info:
	xGnXgnJKj612pEKZu9FxX1E7oNdq1aOXn4W8KkFFu8iEcTGueaHMJudB1255021d6ZInPq39/ery+liX3NHm2A5TwN/8gIVeHn+BkbrP7ndvG20FjS0sXrFV6BH+3Dww2XlO5LQykGzUt3kGzVIUXlI3E7sQs7cF/rOej9d/sdhtR8mHmuVzdpXDnYFSJ/Rt9poFNpN1Vv8UwdTEiI7SllvfYB7WZEUg8w7/vGjou0063dm6FTZmuvS/5J4cNajs8g/WqezH2vIsNhakkiugmgiAGVVUmtJVK3rFwjvaN3kaSmotZO480LAbnlyenvRhiw9VlSGDC71XINR/ohziYc7bBIfU9ssU7ZYrN+4OG/cmDozAeJB4iERz/1nykoUaipINAfJNqvoA1HZd/w5Yp+wvl/Cl8CMMW8Yok0VOvuKjDFeK6yq2B693yvmvqlkRzPterQ9zZPK9L0t7jodvU6hZTzURLwGdfL7ueaE9QRmhKrvA7ewwULPNU9kAumlxbZD8FzM25Az01FN9lP6mzkMwarW3t7Wcc7CIbiAbmqLGnzae6YHbEvRR5C/PUlJ7uNBn62+I4Y/fiFz5ExHpSHZUNA9HjsBAqLT5ZVXMqKmLdhhm8rIfvnEKhhVr7mOy8lUTp93nwZJONX/oFpmWKdfV71L1ygoXFrtA3Cs/o+cburBFbcQCWlUSTXLqu0rgjtii7BLBoOIDBk1eZvE/IWxb2jE+I41aN+OKvysa9w5xuB98sY3x2FSS7MeVDvKZiwH1exizCkY2G/hROapjfQ==
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)(7416014)(376014)(1800799024)(18002099003)(22082099003)(56012099003);DIR:OUT;SFP:1101;
X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1
X-MS-Exchange-AntiSpam-MessageData-0:
	boHhRra85SIu4ZdrDm0X3dkP7PJDlYbgR3SgHo8oWCpExBsc1bQfwa6kFL5ILxcoPg4cUVmj0gVlDwk4KJyBEifd/LwqlnRvLO+Zf6y44AOqZrFuAAf19GX05lkJ48gFjUWHGSDZdF8RjBBC1DbdFXFAojQR+hQI+4VV8r0Cry6UGSORt8aO8xDfddTyF6P0bRdxR1DiIETbtGJwzFmpFTeajQmkCfLR9kfIBysoByT59TC1zlatWpPYhUlIQphhQBoxJl9S8U7qmL93sbz0DwVsm2JS5qYoC2zPFKfDf4pNlge5HWax0y46CaDE1RIDMwKBUpxD9iIbzbx88lJVks+hGM3k0ZcnWois06K4Apkn7l1Dc1lc0d2WBYh45ayhr6qlXZ7HT3rGgogM6mVuNLSHjNh3wHWqxygit+kjNXAba3SstUJ2td0obAhA51Yr
X-OriginatorOrg: amd.com
X-MS-Exchange-CrossTenant-OriginalArrivalTime: 01 Apr 2026 16:05:32.9202
 (UTC)
X-MS-Exchange-CrossTenant-Network-Message-Id: 8942affa-c2d1-4618-4cb1-08de900880e9
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:
	CY4PEPF0000FCC4.namprd03.prod.outlook.com
X-MS-Exchange-CrossTenant-AuthAs: Anonymous
X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem
X-MS-Exchange-Transport-CrossTenantHeadersStamped: SJ0PR12MB8613
X-purgate-ID: tlsNG-c1860d/1775059539-F6151497-3409965B/0/0
X-purgate-type: clean
X-purgate-size: 10085



On 19/02/2026 16:51, Jan Beulich wrote:
> This core backing function is uniform; what varies across architectures
> are the attributes passed and hence the wrappers around it. Yet of course
> extra checking or special handling may be needed per arch, so introduce a
> suitable hook. Permit such a hook to return both adjusted and un-adjusted
> (for the page offset) pointers.
> 
> Signed-off-by: Jan Beulich <jbeulich@suse.com>
> ---
> Declarations (or inline counterparts) aren't being moved around, to avoid
> the need to touch source files using the functions. Quite possibly they
> want to consistently go into xen/io.h and asm/io.h.
> 
> Of course ioremap.c could also go into lib/.
> 
> For RISC-V the wrappers likely should become inline functions?
> 
> PPC doesn't reference any of the functions just yet, so gets only a
> declaration.
> 
> For Arm, a TODO item is deliberately retained, yet seeing the use of
> ioremap_wc() in domain building (which by itself is questionable, see next
> patch) I wonder if that's even feasible as long as we don't have
> memremap() or alike.
> 
> --- a/xen/arch/arm/include/asm/io.h
> +++ b/xen/arch/arm/include/asm/io.h
> @@ -1,6 +1,8 @@
>  #ifndef _ASM_IO_H
>  #define _ASM_IO_H
>  
> +#include <xen/mm-types.h>
> +
>  #if defined(CONFIG_ARM_32)
>  # include <asm/arm32/io.h>
>  #elif defined(CONFIG_ARM_64)
> @@ -9,6 +11,16 @@
>  # error "unknown ARM variant"
>  #endif
>  
> +#ifdef CONFIG_MPU
> +void __iomem *mpu_ioremap_attr(paddr_t start, size_t len, pte_attr_t flags);
> +#define arch_ioremap_attr mpu_ioremap_attr
> +#else
> +/*
> + * ioremap_attr() should only be used to remap device address ranges.
> + * TODO: Add an arch hook to verify this assumption.
> + */
> +#endif
> +
>  #endif
>  /*
>   * Local variables:
> --- a/xen/arch/arm/include/asm/mm.h
> +++ b/xen/arch/arm/include/asm/mm.h
> @@ -5,6 +5,7 @@
>  #include <asm/page.h>
>  #include <public/xen.h>
>  #include <xen/pdx.h>
> +#include <xen/vmap.h>
>  
>  #if defined(CONFIG_ARM_32)
>  # include <asm/arm32/mm.h>
> @@ -200,13 +201,12 @@ extern int prepare_secondary_mm(int cpu)
>  extern void setup_frametable_mappings(paddr_t ps, paddr_t pe);
>  /* Helper function to setup memory management */
>  void setup_mm_helper(void);
> -/* map a physical range in virtual memory */
> -void __iomem *ioremap_attr(paddr_t start, size_t len, unsigned int attributes);
>  
>  static inline void __iomem *ioremap_nocache(paddr_t start, size_t len)
>  {
>      return ioremap_attr(start, len, PAGE_HYPERVISOR_NOCACHE);
>  }
> +#define ioremap ioremap_nocache
>  
>  static inline void __iomem *ioremap_cache(paddr_t start, size_t len)
>  {
> --- a/xen/arch/arm/mm.c
> +++ b/xen/arch/arm/mm.c
> @@ -455,11 +455,6 @@ unsigned long get_upper_mfn_bound(void)
>      return max_page - 1;
>  }
>  
> -void *ioremap(paddr_t pa, size_t len)
> -{
> -    return ioremap_attr(pa, len, PAGE_HYPERVISOR_NOCACHE);
> -}
> -
>  /*
>   * Local variables:
>   * mode: C
> --- a/xen/arch/arm/mmu/pt.c
> +++ b/xen/arch/arm/mmu/pt.c
> @@ -206,23 +206,6 @@ void clear_fixmap(unsigned int map)
>      BUG_ON(res != 0);
>  }
>  
> -/*
> - * This function should only be used to remap device address ranges
> - * TODO: add a check to verify this assumption
> - */
> -void *ioremap_attr(paddr_t start, size_t len, unsigned int attributes)
> -{
> -    mfn_t mfn = _mfn(PFN_DOWN(start));
> -    unsigned int offs = start & (PAGE_SIZE - 1);
> -    unsigned int nr = PFN_UP(offs + len);
> -    void *ptr = __vmap(&mfn, nr, 1, 1, attributes, VMAP_DEFAULT);
> -
> -    if ( ptr == NULL )
> -        return NULL;
> -
> -    return ptr + offs;
> -}
> -
>  static int create_xen_table(lpae_t *entry)
>  {
>      mfn_t mfn;
> --- a/xen/arch/arm/mpu/mm.c
> +++ b/xen/arch/arm/mpu/mm.c
> @@ -9,6 +9,8 @@
>  #include <xen/sizes.h>
>  #include <xen/spinlock.h>
>  #include <xen/types.h>
> +
> +#include <asm/io.h>
>  #include <asm/mpu.h>
>  #include <asm/mpu/mm.h>
>  #include <asm/page.h>
> @@ -593,7 +595,7 @@ void free_init_memory(void)
>      spin_unlock(&xen_mpumap_lock);
>  }
>  
> -void __iomem *ioremap_attr(paddr_t start, size_t len, unsigned int flags)
> +void __iomem *mpu_ioremap_attr(paddr_t start, size_t len, pte_attr_t flags)
>  {
>      paddr_t start_pg = round_pgdown(start);
>      paddr_t end_pg = round_pgup(start_pg + len);
> --- a/xen/arch/ppc/include/asm/io.h
> +++ b/xen/arch/ppc/include/asm/io.h
> @@ -13,4 +13,6 @@
>  #define writew(v,c)     ({ (void)(v); (void)(c); BUG_ON("unimplemented"); })
>  #define writel(v,c)     ({ (void)(v); (void)(c); BUG_ON("unimplemented"); })
>  
> +void __iomem *ioremap(paddr_t pa, size_t len);
> +
>  #endif /* __ASM_PPC_IO_H__ */
> --- a/xen/arch/riscv/include/asm/io.h
> +++ b/xen/arch/riscv/include/asm/io.h
> @@ -41,6 +41,7 @@
>  #include <xen/macros.h>
>  #include <xen/types.h>
>  
> +void __iomem *ioremap(paddr_t pa, size_t len);
>  void __iomem *ioremap_cache(paddr_t pa, size_t len);
>  void __iomem *ioremap_wc(paddr_t pa, size_t len);
>  
> --- a/xen/arch/riscv/mm.c
> +++ b/xen/arch/riscv/mm.c
> @@ -587,20 +587,6 @@ void *__init arch_vmap_virt_end(void)
>      return (void *)(VMAP_VIRT_START + VMAP_VIRT_SIZE);
>  }
>  
> -static void __iomem *ioremap_attr(paddr_t pa, size_t len,
> -                                  pte_attr_t attributes)
> -{
> -    mfn_t mfn = _mfn(PFN_DOWN(pa));
> -    unsigned int offs = pa & (PAGE_SIZE - 1);
> -    unsigned int nr = PFN_UP(offs + len);
> -    void *ptr = __vmap(&mfn, nr, 1, 1, attributes, VMAP_DEFAULT);
> -
> -    if ( ptr == NULL )
> -        return NULL;
> -
> -    return ptr + offs;
> -}
> -
>  void __iomem *ioremap_cache(paddr_t pa, size_t len)
>  {
>      return ioremap_attr(pa, len, PAGE_HYPERVISOR);
> --- a/xen/arch/x86/include/asm/io.h
> +++ b/xen/arch/x86/include/asm/io.h
> @@ -47,6 +47,9 @@ __OUT(b,"b",char)
>  __OUT(w,"w",short)
>  __OUT(l,,int)
>  
> +void __iomem *x86_ioremap_attr(paddr_t pa, size_t len, pte_attr_t attr);
> +#define arch_ioremap_attr x86_ioremap_attr
> +
>  /*
>   * Boolean indicator and function used to handle platform specific I/O port
>   * emulation.
> --- a/xen/arch/x86/include/asm/mm.h
> +++ b/xen/arch/x86/include/asm/mm.h
> @@ -611,7 +611,15 @@ void destroy_perdomain_mapping(struct do
>                                 unsigned int nr);
>  void free_perdomain_mappings(struct domain *d);
>  
> -void __iomem *ioremap_wc(paddr_t pa, size_t len);
> +static inline void __iomem *ioremap(paddr_t pa, size_t len)
> +{
> +    return ioremap_attr(pa, len, PAGE_HYPERVISOR_UCMINUS);
> +}
> +
> +static inline void __iomem *ioremap_wc(paddr_t pa, size_t len)
> +{
> +    return ioremap_attr(pa, len, PAGE_HYPERVISOR_WC);
> +}
>  
>  extern int memory_add(unsigned long spfn, unsigned long epfn, unsigned int pxm);
>  
> --- a/xen/arch/x86/mm.c
> +++ b/xen/arch/x86/mm.c
> @@ -6166,41 +6166,15 @@ void *__init arch_vmap_virt_end(void)
>      return fix_to_virt(__end_of_fixed_addresses);
>  }
>  
> -void __iomem *ioremap(paddr_t pa, size_t len)
> +void __iomem *x86_ioremap_attr(paddr_t pa, size_t len, pte_attr_t attr)
>  {
> -    mfn_t mfn = _mfn(PFN_DOWN(pa));
> -    void *va;
> -
> -    WARN_ON(page_is_ram_type(mfn_x(mfn), RAM_TYPE_CONVENTIONAL));
> +    WARN_ON(page_is_ram_type(PFN_DOWN(pa), RAM_TYPE_CONVENTIONAL));
>  
>      /* The low first Mb is always mapped. */
> -    if ( !((pa + len - 1) >> 20) )
> -        va = __va(pa);
> -    else
> -    {
> -        unsigned int offs = pa & (PAGE_SIZE - 1);
> -        unsigned int nr = PFN_UP(offs + len);
> -
> -        va = __vmap(&mfn, nr, 1, 1, PAGE_HYPERVISOR_UCMINUS, VMAP_DEFAULT);
> -        if ( va )
> -            va += offs;
> -    }
> -
> -    return (void __force __iomem *)va;
> -}
> -
> -void __iomem *__init ioremap_wc(paddr_t pa, size_t len)
> -{
> -    mfn_t mfn = _mfn(PFN_DOWN(pa));
> -    unsigned int offs = pa & (PAGE_SIZE - 1);
> -    unsigned int nr = PFN_UP(offs + len);
> -    void *va;
> -
> -    WARN_ON(page_is_ram_type(mfn_x(mfn), RAM_TYPE_CONVENTIONAL));
> -
> -    va = __vmap(&mfn, nr, 1, 1, PAGE_HYPERVISOR_WC, VMAP_DEFAULT);
> +    if ( !((pa + len - 1) >> 20) && attr == PAGE_HYPERVISOR_UCMINUS )
> +        return (void __force __iomem *)__va(pa);
>  
> -    return (void __force __iomem *)(va ? va + offs : NULL);
> +    return NULL;
>  }
>  
>  int create_perdomain_mapping(struct domain *d, unsigned long va,
> --- a/xen/common/Makefile
> +++ b/xen/common/Makefile
> @@ -19,6 +19,7 @@ obj-$(CONFIG_GRANT_TABLE) += grant_table
>  obj-y += guestcopy.o
>  obj-y += gzip/
>  obj-$(CONFIG_HYPFS) += hypfs.o
> +obj-y += ioremap.o
>  obj-$(CONFIG_IOREQ_SERVER) += ioreq.o
>  obj-y += irq.o
>  obj-y += kernel.o
> --- /dev/null
> +++ b/xen/common/ioremap.c
> @@ -0,0 +1,42 @@
> +/* SPDX-License-Identifier: GPL-2.0-only */
> +
> +#include <xen/mm.h>
> +#include <xen/pfn.h>
> +#include <xen/vmap.h>
> +
> +#include <asm/io.h>
> +
> +void __iomem *ioremap_attr(paddr_t pa, size_t len, pte_attr_t attr)
> +{
> +    void __iomem *ptr = NULL;
> +    unsigned int offs = PAGE_OFFSET(pa);
> +
> +#ifdef arch_ioremap_attr
> +    ptr = arch_ioremap_attr(pa, len, attr);
I made an observation reviewing this patch.

TL;DR: Nothing wrong with this patch

For Arm MPU, callers now receive a sub-page-offset-adjusted pointer instead of a
page-aligned one. mpu_ioremap_attr computes end_pg = round_pgup(start_pg + len)
instead of round_pgup(start + len). Before, this was masked because the returned
pointer was page-aligned, so callers effectively started from the page base. Now
that the sub-page offset is correctly applied to the returned pointer, a caller
using a non-page-aligned start with a len that crosses a page boundary would
access memory from a different region.

I need to send a fix for MPU.

Reviewed-by: Michal Orzel <michal.orzel@amd.com>

~Michal



From xen-devel-bounces@lists.xenproject.org Wed Apr 01 16:36:00 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 01 Apr 2026 16:36:00 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1270702.1559292 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1w7yXj-0007vs-2P; Wed, 01 Apr 2026 16:35:47 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1270702.1559292; Wed, 01 Apr 2026 16:35: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 1w7yXi-0007vl-Sf; Wed, 01 Apr 2026 16:35:46 +0000
Received: by outflank-mailman (input) for mailman id 1270702;
 Wed, 01 Apr 2026 16:35:45 +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 1w7yXh-0007iH-8B
 for xen-devel@lists.xenproject.org; Wed, 01 Apr 2026 16:35:45 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1w7yXg-00CBO7-Il
 for xen-devel@lists.xenproject.org; Wed, 01 Apr 2026 18:35:44 +0200
Received: from [10.42.69.12] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <ross.lagerwall@citrix.com>)
 id 69cd4956-2eae-0a2a0a5409dd-0a2a450c89f0-8
 for <xen-devel@lists.xenproject.org>; Wed, 01 Apr 2026 18:35:44 +0200
Received: from [52.101.43.11]
 (helo=SJ2PR03CU001.outbound.protection.outlook.com)
 by tlsNG-d25034.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.0)
 (envelope-from <ross.lagerwall@citrix.com>)
 id 69cd495d-f40c-0a2a450c0019-34652b0b80af-4
 for <xen-devel@lists.xenproject.org>; Wed, 01 Apr 2026 18:35:44 +0200
Received: from CH8PR03MB8274.namprd03.prod.outlook.com (2603:10b6:610:2ba::5)
 by BY5PR03MB5112.namprd03.prod.outlook.com (2603:10b6:a03:1e9::14)
 with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9769.17; Wed, 1 Apr
 2026 16:35:42 +0000
Received: from CH8PR03MB8274.namprd03.prod.outlook.com
 ([fe80::ebe2:32c1:d2be:a096]) by CH8PR03MB8274.namprd03.prod.outlook.com
 ([fe80::ebe2:32c1:d2be:a096%7]) with mapi id 15.20.9769.016; Wed, 1 Apr 2026
 16:35: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=IyqCSfvsmZ0Xgo/dh4xVIi64fvzWiRWyLOIGH8y2AMkP+fqgE52qPvGpBwzA8isEcfPqY0eADphTaFkVBfUCwW4OVFj9w1BQ7PqAnmCsK2eLgsBygFSIMhRjOD52E46WH0HHmvjUwmQKOr99zdjsqhk3nal4BTB0j6SXXbu90lGGfLVt+r9hZxS+QFtFsXLHb/X0CgOgcpwuCQLAyefwOVWWmrmOfmTCi104FDbOpGqKd6YPLrjmIJFF/A8/N8/ZRCSxgpMB6T0FM+ub4A/v29oedXv54RRENownBDnwriTeCg67Z9oGXzl2OLfHL9UlpPsvgMQvJq3Q5wKdsYZsYQ==
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com;
 s=arcselector10001;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1;
 bh=Lt7N5PLZbSHwckz9JA+IcupceAjDI4eDaGLo9LKGbGU=;
 b=byKQB08mKvQhj7K89rkbdXzUSB2X/Ge7J+nLgmG2NGJd4++tk5YtCfZHM24ulx+qo495Gh1axQKFHAzasSgQuuw6GkoXgd5iZ57chpNGLCozt34NmmJGxCaw9XfmkgXC/QQjQkChDAG8oCuw6z5CXBES26h4iF9t6MVX6je2dfZg56EYUbuL13Nv06mL1V0JS+6kd8THp1FmVALd2vQAOknCPmJSqZ6sWFUMJbjAD/vRZrJ/jdxI21itzee8VTjc2DpqpeogLqAOeBdyBBMPHIq3A4KPUPRedxAK9TjA+56jEGwcW5FWOn6RqqvFHvIef93s3RB8jhZsSQLa7C84Lw==
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=Lt7N5PLZbSHwckz9JA+IcupceAjDI4eDaGLo9LKGbGU=;
 b=cL/xWMPJF1vGcsKlZaOZLWAgKpCQ5Is1jtgkcVrMVerbdge+CL3inYIZVfZHJrMvN+tbM56rVP1YG2tVyjpwlxXgQR93UCYF76m82iNPB1MQfU6UgMnWEvy+bBBWasEgNd56Cm6FMCwuVlQuXmgK6EMl2rHAYp1PstXroRr3bcI=
Authentication-Results: dkim=none (message not signed)
 header.d=none;dmarc=none action=none header.from=citrix.com;
From: Ross Lagerwall <ross.lagerwall@citrix.com>
To: xen-devel@lists.xenproject.org
Cc: Ross Lagerwall <ross.lagerwall@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.pau@citrix.com>,
	Stefano Stabellini <sstabellini@kernel.org>
Subject: [PATCH v1 2/3] xen/smp: Rewrite on_selected_cpus() to be lockless
Date: Wed,  1 Apr 2026 17:35:20 +0100
Message-ID: <20260401163521.3603665-3-ross.lagerwall@citrix.com>
X-Mailer: git-send-email 2.53.0
In-Reply-To: <20260401163521.3603665-1-ross.lagerwall@citrix.com>
References: <20260401163521.3603665-1-ross.lagerwall@citrix.com>
Content-Transfer-Encoding: 8bit
Content-Type: text/plain
X-ClientProxiedBy: LO3P123CA0022.GBRP123.PROD.OUTLOOK.COM
 (2603:10a6:600:388::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_|BY5PR03MB5112:EE_
X-MS-Office365-Filtering-Correlation-Id: 83a11c8f-82f4-41be-f416-08de900cb749
X-MS-Exchange-SenderADCheck: 1
X-MS-Exchange-AntiSpam-Relay: 0
X-Microsoft-Antispam:
	BCL:0;ARA:13230040|376014|1800799024|366016|18002099003|22082099003|56012099003;
X-Microsoft-Antispam-Message-Info:
	mhh8D7Q7XRRFtIsE2w5ExbasElK80qbf/Rw3M3NI7iCtp9cuMHUhp1k8+c91wV5Sf0QfyTfsAZHF8HjuNsl5Hi/BRw9Dbu86/MAXNEKJoDZ7aQornRGcHQRSYtY636DtjBQJ93PXkauBlGXGgc+iWc5z7Xx+IXsDpNZSOlQK5BwCPxXbcoFKnYnDmlpbEv4HdVXQPCccwjv68MqQRKMBmVshlDGith0yyHrdFIUTmPbURBTk+j32FXTEo5KQoIrP3MwRtUw983z9xe0I0usMgj7bitN8U+XHuR2MZOol+bWsai/4Iew0G3/lt8jpYACpTW056H62vUZqt67vM/SXJmV9QA0s9Cwj1cTCMkQNE9WCqoetNzCTCPZAqznwybhsp1ihczETVTozGxoqeEuALLqdVt8/fAsmUKQRQIQU1s9Vn1Gv674VzJbDd5QCUBdX7XytdY2QI9qlQ1UeLzqJRAyuWo1wqFEzi9d++46iFNRK+rNmk8Hskj4RkNzAM9GGNDV2azQXx96cxVy4XVhpmc3ikaPgH/Ipsj9knr7hebgB93YX2j2D12Jwm3qiy2LXMe6m2z0cJwdZyOkYbGchTimu2jO6r2vsrhCdYvNw5KkxJDL5U2297IGoOXOo7N06DngTorwwvxMgeqRijqpPnoQueXY3/kyIovM6cB6gVsgQtrkL3V54+DM3Qr0G1id/Dd3rZVfE1yaYbligLazzDdFRH+0Al2zq33UPgzvGD18=
X-Forefront-Antispam-Report:
	CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:CH8PR03MB8274.namprd03.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(376014)(1800799024)(366016)(18002099003)(22082099003)(56012099003);DIR:OUT;SFP:1101;
X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1
X-MS-Exchange-AntiSpam-MessageData-0:
	=?us-ascii?Q?MsF+4+Zom55Tp3MFMKaI146ZBKSYcMyrVG1enfVb+kn0SvmCHbVF60DTk8Bl?=
 =?us-ascii?Q?8BLUbAqk4HzKMzfsG02zJ4vUar7Ore2Dd+9LT3ivf2qJlb67sFTyl5g+3T5F?=
 =?us-ascii?Q?XaDJbGaNXpKZKJA3V5FhGMnbcUcSv5uDzOzcXO+dxGF8DfEVFVyQi3BJ3X/6?=
 =?us-ascii?Q?mZOUrrzDeQihvxwi1awS0OVsFNUyFgCt8bvpCXzyV+GmXhX44j1NOlbWxaYL?=
 =?us-ascii?Q?ihCxlCwrH73K2MKLz5e5PlhIx5XmYojIylkixV3zNBkz36Wqrx6pvi1huajp?=
 =?us-ascii?Q?b/B3UJvAY8ge55LchKJTjCpmrsPaXvCBXqX/VNrVT9u6WXrj9i5M1BUQ/Pzz?=
 =?us-ascii?Q?GkbRZWfzNw7vDw5yDRZu7XFPPItQIm2hQa3bW30CdOhy58iKawnGnac3PvhZ?=
 =?us-ascii?Q?nC1iiFdQXqtiLS75E4R7oU0hOCp2pQ8E6SEdxaCnq+nfZx2mbiSBg6VFn76h?=
 =?us-ascii?Q?3mmbIewHtBdvKVKWjeKWoiaFpi8heSlpr+oikbPPMgtKoNBLwZB77ShZpuAP?=
 =?us-ascii?Q?TIzsdk7W7aON+TKG2WPjkkj/v4JbPP00WGT/Rnsfpp+0XEHIbRlxh/GLZQAZ?=
 =?us-ascii?Q?Kh4yP/qlh4s8LCCYrWFnRHzLaLkX3S18smP4lvU+mUtXI6/7N45VME3hXcRj?=
 =?us-ascii?Q?5oJEJY5lDWpoPFk4kx8L62avUJ5UbXbdmPyE3CyhZIHk2jfx8rZ4TblBojMF?=
 =?us-ascii?Q?fvmwj7Jc7sNKwnm/licuEhZB8a35DJvFWE9YEsipMeHBuofRrdNMn/Vqcrm0?=
 =?us-ascii?Q?2JN0VbD0h441IsSvgxCoyaR58Mr4dkeEx/XfswTZKaNweSW+nz9amGVQ3jDU?=
 =?us-ascii?Q?MiJIarlXtJ9lvyAmlpqahSI3XgdGUhqhihWhM9JZ3QYfZ+wQu3MwRDB+zjiD?=
 =?us-ascii?Q?UmTQQUzz0C2mrPuhz8KIWZcLMBVC08dRb+bfZ28pqQInFNwpJwszflE8JSrO?=
 =?us-ascii?Q?2hl+nsEfZzKeP4STPNJtrhJPGoD/doFiTEMU1YgiV0kJnlsqm7xfRMTlXSi/?=
 =?us-ascii?Q?6CMhqs81F3I/JvzH9bYFL/Ty/nPTEszduwbwzITaf79fXc9hFO/4XNjH9FDU?=
 =?us-ascii?Q?heEqbtus0YlTsVK4QKIORdAr0Hr0icb0MNJWGbZTf2+1VOI0TuRCdTseUSxk?=
 =?us-ascii?Q?HXHYMZc6vMkwD9m/ZFl+XsUrTR8C/l5rGfvSwh95QQgnW7YM1TbRv+tRDWu+?=
 =?us-ascii?Q?kDoEXhI6rFL/IjojXKE8YJSjF3Ulap1OtxYjh4XtJUxPH31EVYGnpgYNLElA?=
 =?us-ascii?Q?DlTfOPm6b+NkXC5JRGrfMJXG1Ktam7GIaEKBroNMJAqiaEWbGo7swkzJwulh?=
 =?us-ascii?Q?kCEAoTqYW49TM3rTVL5pEc29MR3mGxNEqICUAGJ/x/yfDcucEXYx9ogHJTZD?=
 =?us-ascii?Q?1JWTBYI7ESMRdvZDTKT/UVeBbCT6+NiR8vcPdX08MY5VtkJg1pndx3pQPi+q?=
 =?us-ascii?Q?OthqkSAQf4PmnQcCgsAZgwyrZl+FT36cGpxVe/kaDTjZJCmtAJh8250x9kYh?=
 =?us-ascii?Q?BhOQZj5DeVUcyzj1sjjHOwwCN5ikHaQqttwvZexLOKc9P06SokkBoJTtYx8x?=
 =?us-ascii?Q?zlyDkD+sr3OHqYaETgSdMGrbH2koqQHjmduwInNKBwyzqsnRg0KWEvfsFQrE?=
 =?us-ascii?Q?NKTKMfRLmsJrNKywHXvtb0nIJnUbjrofls1vkT7j8dznobWscpI3NdOhWEwO?=
 =?us-ascii?Q?t3/Rf3XX8EEx/O8v0c/YCoKlqw9UeeBk0gWKd9cVkTtakB/peR5T2AL+602t?=
 =?us-ascii?Q?HahatwnA65eSMZ5YSf0rTWmg8seAjmE=3D?=
X-OriginatorOrg: citrix.com
X-MS-Exchange-CrossTenant-Network-Message-Id: 83a11c8f-82f4-41be-f416-08de900cb749
X-MS-Exchange-CrossTenant-AuthSource: CH8PR03MB8274.namprd03.prod.outlook.com
X-MS-Exchange-CrossTenant-AuthAs: Internal
X-MS-Exchange-CrossTenant-OriginalArrivalTime: 01 Apr 2026 16:35:42.3955
 (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: Y6E62ek+7GeQcY0iE44JSyWozi/wBFhxABKOnD8vhbxHw7dGRHDpSzFB5cJBwS9PNYxz686GKUGmNGSOfr7Cb09dB8qbWuTeJm28nq2hMRk=
X-MS-Exchange-Transport-CrossTenantHeadersStamped: BY5PR03MB5112
X-purgate-ID: tlsNG-d25034/1775061344-A49BFA3D-A2293BCB/0/0
X-purgate-type: clean
X-purgate-size: 4313

on_selected_cpus() holds a global lock even if the function is to be
called on non-overlapping CPUs. This is a scalability bottleneck so to
avoid that:

1. Remove the global lock.
2. Make call_data_struct per-CPU.
3. Track which CPUs are currently running on_selected_cpus() using a
   global CPU mask. This tells CPUs running the interrupt which per-CPU
   call_data_structs to look at.

Since the call data is now per-CPU, skip waiting for CPUs to "check in"
for async calls. Instead, delay it until the next time
on_selected_cpus() is called by which point there should be nothing to
wait for.

Signed-off-by: Ross Lagerwall <ross.lagerwall@citrix.com>
---
 xen/common/smp.c | 101 +++++++++++++++++++++++++++++++----------------
 1 file changed, 66 insertions(+), 35 deletions(-)

diff --git a/xen/common/smp.c b/xen/common/smp.c
index a011f541f1ea..e592e8453fb3 100644
--- a/xen/common/smp.c
+++ b/xen/common/smp.c
@@ -24,13 +24,15 @@
 /*
  * Structure and data for smp_call_function()/on_selected_cpus().
  */
-static DEFINE_SPINLOCK(call_lock);
-static struct call_data_struct {
+struct call_data_struct {
     void (*func) (void *info);
     void *info;
     int wait;
-    cpumask_t selected;
-} call_data;
+    cpumask_t selected __cacheline_aligned;
+};
+
+DEFINE_PER_CPU(struct call_data_struct, call_data);
+static cpumask_t tasks;
 
 void smp_call_function(
     void (*func) (void *info),
@@ -50,55 +52,84 @@ void on_selected_cpus(
     void *info,
     int wait)
 {
+    struct call_data_struct *data;
+    unsigned int cpu = smp_processor_id();
+
     ASSERT(local_irq_is_enabled());
     ASSERT(cpumask_subset(selected, &cpu_online_map));
 
-    spin_lock(&call_lock);
+    if ( cpumask_empty(selected) )
+        return;
+
+    data = &this_cpu(call_data);
 
-    cpumask_copy(&call_data.selected, selected);
+    if ( !data->wait )
+    {
+        /* Wait for any previous async call to complete */
+        while ( !cpumask_empty(&data->selected) )
+            cpu_relax();
+
+        cpumask_clear_cpu(cpu, &tasks);
+    }
 
-    if ( cpumask_empty(&call_data.selected) )
-        goto out;
+    data->func = func;
+    data->info = info;
+    data->wait = wait;
 
-    call_data.func = func;
-    call_data.info = info;
-    call_data.wait = wait;
+    smp_wmb();
 
-    smp_send_call_function_mask(&call_data.selected);
+    cpumask_copy(&data->selected, selected);
 
-    while ( !cpumask_empty(&call_data.selected) )
-        cpu_relax();
+    cpumask_set_cpu(cpu, &tasks);
 
-out:
-    spin_unlock(&call_lock);
+    smp_send_call_function_mask(&data->selected);
+
+    if ( wait )
+    {
+        while ( !cpumask_empty(&data->selected) )
+            cpu_relax();
+
+        cpumask_clear_cpu(cpu, &tasks);
+    }
 }
 
 void smp_call_function_interrupt(void)
 {
-    void (*func)(void *info) = call_data.func;
-    void *info = call_data.info;
     unsigned int cpu = smp_processor_id();
-
-    if ( !cpumask_test_cpu(cpu, &call_data.selected) )
-        return;
+    unsigned int i;
+    struct call_data_struct *data;
+    void (*func)(void *info);
+    void *info;
 
     irq_enter();
 
-    if ( unlikely(!func) )
-    {
-        cpumask_clear_cpu(cpu, &call_data.selected);
-    }
-    else if ( call_data.wait )
-    {
-        (*func)(info);
-        smp_mb();
-        cpumask_clear_cpu(cpu, &call_data.selected);
-    }
-    else
+    for_each_cpu ( i, &tasks )
     {
-        smp_mb();
-        cpumask_clear_cpu(cpu, &call_data.selected);
-        (*func)(info);
+        data = &per_cpu(call_data, i);
+
+        if ( !cpumask_test_cpu(cpu, &data->selected) )
+            continue;
+
+        smp_rmb();
+        func = data->func;
+        info = data->info;
+
+        if ( unlikely(!func) )
+        {
+            cpumask_clear_cpu(cpu, &data->selected);
+        }
+        else if ( data->wait )
+        {
+            (*func)(info);
+            smp_mb();
+            cpumask_clear_cpu(cpu, &data->selected);
+        }
+        else
+        {
+            smp_mb();
+            cpumask_clear_cpu(cpu, &data->selected);
+            (*func)(info);
+        }
     }
 
     irq_exit();
-- 
2.53.0



From xen-devel-bounces@lists.xenproject.org Wed Apr 01 16:36:00 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 01 Apr 2026 16:36:00 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1270700.1559274 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1w7yXe-0007Uz-Fv; Wed, 01 Apr 2026 16:35:42 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1270700.1559274; Wed, 01 Apr 2026 16: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 1w7yXe-0007Us-Bc; Wed, 01 Apr 2026 16:35:42 +0000
Received: by outflank-mailman (input) for mailman id 1270700;
 Wed, 01 Apr 2026 16:35:41 +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 1w7yXc-0007Um-L7
 for xen-devel@lists.xenproject.org; Wed, 01 Apr 2026 16:35:41 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1w7yXa-00CBO7-Sg
 for xen-devel@lists.xenproject.org; Wed, 01 Apr 2026 18:35:38 +0200
Received: from [10.42.69.8] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <ross.lagerwall@citrix.com>)
 id 69cd4938-2eae-0a2a0a5409dd-0a2a45089a1a-40
 for <xen-devel@lists.xenproject.org>; Wed, 01 Apr 2026 18:35:38 +0200
Received: from [52.101.85.40]
 (helo=BYAPR05CU005.outbound.protection.outlook.com)
 by tlsNG-c1860d.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.0)
 (envelope-from <ross.lagerwall@citrix.com>)
 id 69cd4958-fab6-0a2a45080019-34655528271b-4
 for <xen-devel@lists.xenproject.org>; Wed, 01 Apr 2026 18:35:38 +0200
Received: from CH8PR03MB8274.namprd03.prod.outlook.com (2603:10b6:610:2ba::5)
 by CO1PR03MB5939.namprd03.prod.outlook.com (2603:10b6:303:92::15)
 with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9769.15; Wed, 1 Apr
 2026 16:35:34 +0000
Received: from CH8PR03MB8274.namprd03.prod.outlook.com
 ([fe80::ebe2:32c1:d2be:a096]) by CH8PR03MB8274.namprd03.prod.outlook.com
 ([fe80::ebe2:32c1:d2be:a096%7]) with mapi id 15.20.9769.016; Wed, 1 Apr 2026
 16:35: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=dP28bdJ0cfLHorfemxbIkaEX81nPTF8/GSV5RfLFnaLDxrTqdvBOEaxoTdQVjH0Js668aYsJVriIigvkJKIdids6dPR7r8jdeBB8iEl8J8eBXqIahbQpJXuKvorPHpVC7bz0UiM1xJBu7s0RO3cKsggo069XXu1S+EUOHgKwj5vrq+s1ZE72odn9TFWqxQyauCFwmJRbR0uRA25vbZj+qvH69cSqVQjBHWpZADZyayr5jrgzmBnt4ZNqEXmXtKIVOhLWSKfwo26MQW26nhbOMHIla/Xqqb9fh8WAmNj/NTrgl+HN4i0h4Mtev3eA68FqLatBILm/0Ziw8I9ZcatfXA==
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com;
 s=arcselector10001;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1;
 bh=nVIKuejiwA1WzmB5Jt7Veorp0CeFKLFpP3h8Lx0E96E=;
 b=v+WHFIrwlaG63gKCYnkawOgXzhtyZiRcgZEV1/msgfKty+y4YFKUf3gerBhSbTm/vXXDbUu3y0eUqBhbauz5+MU8vVljctJvsMV7zrjuZGOezWExz7XpGMtj+OPWG78HP76fSyO2r7Pd/aKEmu926vZFjiepjOBPHavklxtcULMtIPtRYQDdZHrKAwCBnfGrOSHXBOicFFPpIomTo2pPiv4ydmxcOHW+PWgp0x6Z4VXKQqNPP/kFFGziVfnIUVWFE57AbZUYwH0Fc/LP8hEvoV4yjfECvTYAK/ExmvKX9VH3q22tul3MmL/mtGBm0NRkjSX1eduP4MGPIYGtvov8MQ==
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=nVIKuejiwA1WzmB5Jt7Veorp0CeFKLFpP3h8Lx0E96E=;
 b=nEza/G8ERKdWJyVI5MHOflcJ84zf8yBZFGK65+2XerqF46TeSDrD6rNBuU+Mka7QUzt3tC4hjPnbTQJqSPktiMRyLrzfPg0zeMmxVr31ESsxPIeNtmksxqoTiTN8JWH3SMK20FZsg0B/DuD4l+/A2HMkpqp7MxG3WFKP+dounUw=
Authentication-Results: dkim=none (message not signed)
 header.d=none;dmarc=none action=none header.from=citrix.com;
From: Ross Lagerwall <ross.lagerwall@citrix.com>
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.pau@citrix.com>,
	Anthony PERARD <anthony.perard@vates.tech>,
	Michal Orzel <michal.orzel@amd.com>,
	Julien Grall <julien@xen.org>,
	Stefano Stabellini <sstabellini@kernel.org>
Subject: [PATCH v1 0/3] Lockless SMP function call and TLB flushing
Date: Wed,  1 Apr 2026 17:35:18 +0100
Message-ID: <20260401163521.3603665-1-ross.lagerwall@citrix.com>
X-Mailer: git-send-email 2.53.0
Content-Transfer-Encoding: 8bit
Content-Type: text/plain
X-ClientProxiedBy: AS4P190CA0009.EURP190.PROD.OUTLOOK.COM
 (2603:10a6:20b:5de::16) To CH8PR03MB8274.namprd03.prod.outlook.com
 (2603:10b6:610:2ba::5)
MIME-Version: 1.0
X-MS-PublicTrafficType: Email
X-MS-TrafficTypeDiagnostic: CH8PR03MB8274:EE_|CO1PR03MB5939:EE_
X-MS-Office365-Filtering-Correlation-Id: e8b88b56-a033-4010-7210-08de900cb28c
X-MS-Exchange-SenderADCheck: 1
X-MS-Exchange-AntiSpam-Relay: 0
X-Microsoft-Antispam:
	BCL:0;ARA:13230040|376014|1800799024|366016|56012099003|18002099003;
X-Microsoft-Antispam-Message-Info:
	C/DdmIOa4jsZ///NS1RpH+HvX0MiMo/6ZborC0CTpyGRmGhWSblJ8OXcgGc6PF+sAD64smuRnKZFM0rKp8Fl06bNB3Pe6jzOi4jlySXQAnWwPXLdkkLIN8VwpAW5loxg8m2YTX8PTK1eVzUYadYRV07H+aepNDi41SEFInFkV+3g4feV66mhZKevHDmtUPcb3rWl+oYJZAWQLb22B6q5qclRiu42mM3NxAEQibRuMP3wjzsbKAon+14UHvYqDGnZwNbyFCEcdjMO+qNiM9NssVD/LX3aStISYFq/cB72ddSNErMmw7opsgGiyABg1WIIEhTGw5V3vZFMljNJvisP0P5wE4SYSQoFkLE+GqbdyVdpxfwti26SQhZyuDP2bwUT3zmvVQMTQdJTf+aEcIXaFDiXWPyC7ifHW82eVrT/BMgaIZDVlfXE09Ya2HIlD3RVCqk5NnzdUbDYh4snIPpWMVQ1MvmS8XRRQqbYEeNVf3/HlZXk50uBjJ6frKLjFf6Qo3TDDz4Owoti5h4cH+mpcIMirznbgI4La+8gcVMc/c6azum0IUP4E7UT0pCtwPU7rRCtuvq1qKlrN4gX5Ex/mk5LdKRV11Y8EYKzp8TkVnEmc/62YqNPZC+XF0qXlEz1l5UVlx6U/rxdAoX7Nfn+FYy45N7A0f5I9wZFRu6XKABd++XpQ7aVA5u2yr25uQIsP1Zwmq1GqmpqWGZfA+8g4eh9jcTuFBOsoSPMV9eO6Do=
X-Forefront-Antispam-Report:
	CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:CH8PR03MB8274.namprd03.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(376014)(1800799024)(366016)(56012099003)(18002099003);DIR:OUT;SFP:1101;
X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1
X-MS-Exchange-AntiSpam-MessageData-0:
	=?us-ascii?Q?ADP1tYO0EOzguBOddM6rmwRUmNTiw7U6sNpieH5iea4y6t3yXKWCPYqDCajU?=
 =?us-ascii?Q?p/2vkb+YqmOc8ZgGK3Mliw2GTgNVVqa4gTj/ASVh06qJJdGX7yQyLpRIYykp?=
 =?us-ascii?Q?XlOcJiTMbuZVBXKGwktyHLiogryXlWHxuzEGNCKC2yRAGzON2DmWersnH5rP?=
 =?us-ascii?Q?NqD0+UrdiJ90aJuCGBV8iZg9OZYkaxCaJkkeEQxhp3wUa5Q2Zmq+tP/MItKm?=
 =?us-ascii?Q?pY3p5jndpkgQQmveOs7EYBEs5y+6ZcbJuTSwO1OBrtn/DAZLuXyY2DLxTktw?=
 =?us-ascii?Q?DTUked8uERykAjN1NnNC4t1JcdT9BDhAHovA9oJCf91KYAxJfUACF3tEy4sz?=
 =?us-ascii?Q?nVWyvNzcBWiCL0//SloIgkRnq/ylkIYRGKmPah7hZOgJgfhhIPsJYaAqsnpP?=
 =?us-ascii?Q?O+0lS9KcDww62mzSOrVJB4ewFKYiEHxSjJeG0bEn7QqMGwtXQmaGwAhyhEQM?=
 =?us-ascii?Q?UPUMtiZ1TqIVaDpoeojEW3v1j7p4z1KTL+3t4BaR9cenZEykpw8wk1QW/SdG?=
 =?us-ascii?Q?YMn1IJ/9RWh3riQtFB0uvNBweYJ/kkpaguAzA15c6+qrUwlnMsGdCi2EQ6Cc?=
 =?us-ascii?Q?GWBKB8DsA0Yr1h/Buz90PSbV1pITvt/XEFry0iJ1KH31AePkI/umZohn5vrq?=
 =?us-ascii?Q?6TUbAk1G557M4F1vE5jWV11vMz4HPRzADgHH7CZWc8nauMtZXxrbIU5346nU?=
 =?us-ascii?Q?VoRfieGJq1mc8NsZuU8b83Y/qBqzV4gu1l/Zdz85HGyNdmW4sZMkAoPu5rmr?=
 =?us-ascii?Q?q8RuV6n9PJnXHEtmX5rTZK+aL4mXhNwgIaBmblrlJV2fI0sDe2tSA6qKc375?=
 =?us-ascii?Q?d96QkcfCXeJiVfHu7NeIiQ8hFxQwqvC0FHPwkVmyd506eRyYu3L5riUMUlL8?=
 =?us-ascii?Q?w2Jgbt7Qh84T2yL3tqGS+ht+LpPtpNdPbpXAZCeoP65K1evKMOGjYCxRL5i3?=
 =?us-ascii?Q?pf7hysMowAE/XRUwf1ORumOibd7zLsABgseQl8ukqJfjE3KyAs8L/oSW3zRp?=
 =?us-ascii?Q?TZPo/Cv1wdPwEbJIPVWM4JXtLAAi6manAgsM42h8XCrUXlPU3BCNRooCGKCd?=
 =?us-ascii?Q?Dyg5Lt52WB1TE4Fv32ddcLfVr2VpNXYtEHr+9McDFEZ/DOTEVIlDL45idjwa?=
 =?us-ascii?Q?ZEF4g9bWgTcsjOp2xtWhtpOcJpfw3FrmxaLW3/g9u+pgKPY2/B7i5e3CJfQx?=
 =?us-ascii?Q?6e54DUDezb5itSBv2eOo6GFULmxCcKflZ8jsxnPLXUjzgAPgzZ5xKQ82miR4?=
 =?us-ascii?Q?+0DsDXqLn/LvnaiiuJt6s35QUqaMVwnJc6x3PIL3l812B8gXu9Sv6RW+AsHe?=
 =?us-ascii?Q?HVJ5fqLbj/K9Q2at0AyBexJ6mtEE5NFtuS/BgMKpS3E9Wua9MgZpF659uOOd?=
 =?us-ascii?Q?slRIiKt7xo/fk1WMzDtiyFZzQPe/9L0u4LfCrhUL+tU2fYzRcOhBh7Scsebr?=
 =?us-ascii?Q?xmDcbdulixChPNUsQpy6kzDLb3Ah/rk3WzbM+WQRxKpNGdcxGIb2K55b91hX?=
 =?us-ascii?Q?YehEQ0/gX1YuSI+BmZx6GuSlpGoWKyu6D4LCM0k/2k3BpWj3I7Xdw3Kf4dRP?=
 =?us-ascii?Q?IicKqlY+MNYG/fGHncGrY+JnSkSg0pc36EmMDkL0Pd1xCtlRKAe/aOjEUBIG?=
 =?us-ascii?Q?9om09oCYgT1O+pj0atL16TCcI8147nRDM4QH7//oQ/93kCtoOpno7b9Ir5dd?=
 =?us-ascii?Q?sfbDBRXjxIJez7SBG6MpHH30IdfK76MjgBEVfo2Rq6iUyyo9IR7IATV8mwIO?=
 =?us-ascii?Q?bV4edRuwTv3nS9SKFTegLBXmGFLYcbg=3D?=
X-OriginatorOrg: citrix.com
X-MS-Exchange-CrossTenant-Network-Message-Id: e8b88b56-a033-4010-7210-08de900cb28c
X-MS-Exchange-CrossTenant-AuthSource: CH8PR03MB8274.namprd03.prod.outlook.com
X-MS-Exchange-CrossTenant-AuthAs: Internal
X-MS-Exchange-CrossTenant-OriginalArrivalTime: 01 Apr 2026 16:35:34.5529
 (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: 944Vur4zGkeJ1/pvYeJ+9mBagMPm5HB5BXZq9wGxNfNtJjyydXRin5TxMvbaTMlkOo+1coIYnoIh/J3jV34bds3jx+etBfwqcOIH1PWIqGs=
X-MS-Exchange-Transport-CrossTenantHeadersStamped: CO1PR03MB5939
X-purgate-ID: tlsNG-c1860d/1775061338-F6D4B497-EFA8377B/0/0
X-purgate-type: clean
X-purgate-size: 2319

Hi,

This series implements lockless SMP function call and then rewrites x86 TLB
flushing to use SMP function calls.

We have observed that the TLB flush lock can be a point of contention for
certain workloads, e.g. migrating 10 VMs off a host during a host evacuation.

Performance numbers:

I wrote a synthetic benchmark to measure the performance. The benchmark has one
or more CPUs in Xen calling on_selected_cpus() with between 1 and 64 CPUs in
the selected mask. The executed function simply delays for 500 microseconds.

The table below shows the % change in execution time of on_selected_cpus():

                  1 thread   2 threads    4 threads
1 CPU in mask     0.02       -35.23       -51.18
2 CPUs in mask    0.01       -47.20       -69.27
4 CPUs in mask    -0.02      -42.40       -66.55
8 CPUs in mask    -0.03      -47.82       -68.39
16 CPUs in mask   0.12       -41.95       -58.26
32 CPUs in mask   0.02       -25.43       -39.35
64 CPUs in mask   0.00       -24.70       -37.83

With 1 thread (i.e. no contention), there is no regression in execution time.
With multiple threads, as expected there is a significant improvement in
execution time.

As a more practical benchmark to simulate host evacuation, I measured the
memory dirtying rate across 10 VMs after enabling log dirty (on an AMD system,
so without PML). The rate increased by 16% with this patch series, even
after the recent deferred TLB flush changes.

FWIW, my first attempt at this was to port the SMP call functionality from
Linux. I found it didn't scale well as the number of CPUs in the mask
increases so I've taken a different approach here.

Thanks,
Ross

Ross Lagerwall (3):
  x86/hap: Wait for remote CPUs during TLB flush
  xen/smp: Rewrite on_selected_cpus() to be lockless
  x86/smp: Rewrite TLB flush using on_selected_cpus()

 tools/xentrace/xenalyze.c              |   2 -
 xen/arch/x86/include/asm/irq-vectors.h |   1 -
 xen/arch/x86/include/asm/irq.h         |   1 -
 xen/arch/x86/mm/hap/hap.c              |   2 +-
 xen/arch/x86/smp.c                     |  30 ++++----
 xen/arch/x86/smpboot.c                 |   1 -
 xen/common/smp.c                       | 101 ++++++++++++++++---------
 7 files changed, 80 insertions(+), 58 deletions(-)

-- 
2.53.0



From xen-devel-bounces@lists.xenproject.org Wed Apr 01 16:36:01 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 01 Apr 2026 16:36:01 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1270701.1559282 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1w7yXh-0007iX-On; Wed, 01 Apr 2026 16:35:45 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1270701.1559282; Wed, 01 Apr 2026 16:35: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 1w7yXh-0007iQ-Lf; Wed, 01 Apr 2026 16:35:45 +0000
Received: by outflank-mailman (input) for mailman id 1270701;
 Wed, 01 Apr 2026 16:35:44 +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 1w7yXg-0007i3-DZ
 for xen-devel@lists.xenproject.org; Wed, 01 Apr 2026 16:35:44 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1w7yXf-00CBO7-NK
 for xen-devel@lists.xenproject.org; Wed, 01 Apr 2026 18:35:43 +0200
Received: from [10.42.69.12] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <ross.lagerwall@citrix.com>)
 id 69cd4956-2eae-0a2a0a5409dd-0a2a450c89f0-6
 for <xen-devel@lists.xenproject.org>; Wed, 01 Apr 2026 18:35:43 +0200
Received: from [52.101.43.11]
 (helo=SJ2PR03CU001.outbound.protection.outlook.com)
 by tlsNG-d25034.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.0)
 (envelope-from <ross.lagerwall@citrix.com>)
 id 69cd495d-f40c-0a2a450c0019-34652b0b80af-3
 for <xen-devel@lists.xenproject.org>; Wed, 01 Apr 2026 18:35:43 +0200
Received: from CH8PR03MB8274.namprd03.prod.outlook.com (2603:10b6:610:2ba::5)
 by BY5PR03MB5112.namprd03.prod.outlook.com (2603:10b6:a03:1e9::14)
 with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9769.17; Wed, 1 Apr
 2026 16:35:38 +0000
Received: from CH8PR03MB8274.namprd03.prod.outlook.com
 ([fe80::ebe2:32c1:d2be:a096]) by CH8PR03MB8274.namprd03.prod.outlook.com
 ([fe80::ebe2:32c1:d2be:a096%7]) with mapi id 15.20.9769.016; Wed, 1 Apr 2026
 16:35: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=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=dm5WlS4fHjM4OOi5FDFbF8EwnFfo79vrL5EziX9KsAQfnj7drgl3CCcjMUHU0Gb9SB5B4A4FyRWoMZcbjwsGI+OBc59Eyg92Ugn9fDVlp4D8zR7tLpbCbXFOqU46GfdYOjj9O4hxLpkmJ4K13TerGI+XGd0GxfQ1z28ZFpvb6iuZSIhbhR0X0mtt7Z4gERatJfnUqyMWEEDplgiCPdZ0/vqqblPLUnBZOnQh43j9eOkeAtLACc6nkkYK25ToqxHpHxkU0cblqzy+HFt4xbSSCJ5VbKfOi4fDajEbSGyScrMAMAdYuuyh0loagq+pTePT+fuDjbN5a0LU4Gab6WCrWQ==
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com;
 s=arcselector10001;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1;
 bh=z1T0p5+LO56SqZhy9doBFm6QObAwtVsf6lJgM5eq988=;
 b=Fh/QkfRMfQAqyi7datx7mqaalM3qztSmCYrJqApm26/WIqpvwqgiczBUB+Ry7oF4AtX9Pw+N1eEh2PUVYGMDyxIRKGGRhpM39jqVqE/t+YdKqGVaXIwre3BgQZTeqCcaCIYNSmvZ2V0ax2tL53H5VSgjawueBaC39iVAl22IZZiPhSaHd0LhERHmWmIGiHuocoSXqguUcsBbTnqaX1qW4xHbBlVJcZGiqO1r6xrsIBbfdUVpyI6JaZ4t9zrX1597lik72mF/oxS4uPc2HuxhJcbA3O7oc+8qBzKLlq97XA4amo8Ngv5QUH6tT85pQyLBx6yjTNflHfD54GoUpbYY+w==
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=z1T0p5+LO56SqZhy9doBFm6QObAwtVsf6lJgM5eq988=;
 b=CVc9N8aQFQ2JhmBzcJtvLL8XehryxVXLwX5qtpJT8U+zzwoGiPu2otNn0n1+bQq7FfMGeMPpNR56rnCZTtOj2Bt9CZgjFD2QBMuUs0x1F98ixOQans136WUD1kuuW0oiR323rZ9YrBHnGx67j8I1f7JFgVDP71XI/srwwVgR3vU=
Authentication-Results: dkim=none (message not signed)
 header.d=none;dmarc=none action=none header.from=citrix.com;
From: Ross Lagerwall <ross.lagerwall@citrix.com>
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.pau@citrix.com>
Subject: [PATCH v1 1/3] x86/hap: Wait for remote CPUs during TLB flush
Date: Wed,  1 Apr 2026 17:35:19 +0100
Message-ID: <20260401163521.3603665-2-ross.lagerwall@citrix.com>
X-Mailer: git-send-email 2.53.0
In-Reply-To: <20260401163521.3603665-1-ross.lagerwall@citrix.com>
References: <20260401163521.3603665-1-ross.lagerwall@citrix.com>
Content-Transfer-Encoding: 8bit
Content-Type: text/plain
X-ClientProxiedBy: LO3P123CA0025.GBRP123.PROD.OUTLOOK.COM
 (2603:10a6:600:388::14) To CH8PR03MB8274.namprd03.prod.outlook.com
 (2603:10b6:610:2ba::5)
MIME-Version: 1.0
X-MS-PublicTrafficType: Email
X-MS-TrafficTypeDiagnostic: CH8PR03MB8274:EE_|BY5PR03MB5112:EE_
X-MS-Office365-Filtering-Correlation-Id: 75715495-99f5-435a-4553-08de900cb4c7
X-MS-Exchange-SenderADCheck: 1
X-MS-Exchange-AntiSpam-Relay: 0
X-Microsoft-Antispam:
	BCL:0;ARA:13230040|376014|1800799024|366016|18002099003|22082099003|56012099003;
X-Microsoft-Antispam-Message-Info:
	KCF9f2TOKbqJCvkNmhLY1vW2fq8LjdPpNA82AyHHq7DKmxpgQW22DrQoB67e9r7ws+cnrSd0r8Y+RGlyKWOgmDcOCljU3erHZOXMQWPbwMGPrEYkPctOByP6txO+WFvWnQqnGOLYCp4fV/QRzTtEUcUS3Fky7qF1+fQfYbtSGjtaEAHxTxb22g8ahbgjXzWNaX92EL7VLMFfordcuyZVFRzmM44aCNXWW6Z1EkkjI3lDgMvPEBN11KuU2akMp5NiJioR/zTHbRwz6NWwXi7XmFH062HpGgaKlE+P8RbRKPzCWpGV1H7fJaSm71o3ZhI0V/2btXmoC+w/Mbj5FeXYX46TlWIhdkMUGB8vVTIWR+lsynTKpI/zvP3H7HrrowKujqv0l6vp5bYvbVta6rZPQF+fatRIbppszJkeHClE61H4zR74rIAWl/j/iGf7iy9DRHWcPKEW3Oa4lEiLLsaXHkv7UWW4HaxtrcjGP7NUWDJZHyLuiwWj9FV09k9OpAOljppBrM8sxIupIy94cmvkQ4dkUokKiU47LibpqlN9v+3qj0ApRrYlhDR0Z81ciZNlRd3kko7/hUar2sbuOBd7N0HLbOoTFbblJQ5Sv2LgatB+QLpVXDKd6Fa7tjHym5l7GSx5RpTrZl38i2jUOIQ2DgYVexxyPUx7VMorgpa02DBlhm13lOlg9uS78eFwWrDnZ5sHXkzm6hU8cuq8cJxxhFMCw/eSOjWgZ7qo47VgtF4=
X-Forefront-Antispam-Report:
	CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:CH8PR03MB8274.namprd03.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(376014)(1800799024)(366016)(18002099003)(22082099003)(56012099003);DIR:OUT;SFP:1101;
X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1
X-MS-Exchange-AntiSpam-MessageData-0:
	=?us-ascii?Q?D2zLYzOLwBYy2RypqSDOxpT1NaYm8jrSzfLrlD/yICkhnNioS5ZJdnGg1lBQ?=
 =?us-ascii?Q?DYjUoX9/zT54U5pCfZA8X/s4ebNFSY0+lel5bZ7CjW1shaslqXX4IPSJojSt?=
 =?us-ascii?Q?WT/NlTKs1cwYShIsqPgDgtBZ6Ljm2ANNxm7xIouwvrIY+OUmn4zyJKMLWnGH?=
 =?us-ascii?Q?+G6o51G/Uvb2yxKTMMSiuAujuIP3WPxMRtUYVZL6Za7+HriwyluiKvo4pbnx?=
 =?us-ascii?Q?BIkvh6lLZMua6yDCdBwcBPEVXjf1mc2Fy/DSotahcPTKnRTcMyEU7D37Chkz?=
 =?us-ascii?Q?4nKcSN6oCveLvPHCQ0eltdP7GmXg3VjuoNdyORNL7YjI1tmLWRQZwBJGQOBu?=
 =?us-ascii?Q?Akgr250gHjZlDBBpiDy138yBs7z3S+vhnINdMheYgr02KRSC0dQENKn2xWXN?=
 =?us-ascii?Q?tpLCjV5n3moI95ng/TQHq0VEEGl1K4t3OrnDQfwxfz6/y6f4MroCYIZ6OZ6o?=
 =?us-ascii?Q?4bJkZ/YUS1NNUaMMn7dPDh6wEz2OUEIsoDgfuHspQlQl1lnv4cXu+7paG+AA?=
 =?us-ascii?Q?t+yL0A8HfD/HS3LvoFWKl+dCoKWR82UTObKXDSmIZKqtbXZgABzsyCYoYkr4?=
 =?us-ascii?Q?oip09CCYHI8gw5Wf3XIoukdjR5rcd6FSwN/y6dGXcexjZDlheyJ5yTAG+w46?=
 =?us-ascii?Q?ZgD8GsKZ+ZZU9pUVuNbzKJi8KRY9uByKdVqvPNOxUbl84JgdLly9fSk5x3nD?=
 =?us-ascii?Q?c8e49HjoHiOCCn94QKz6WzXT5aZPxNvH0HyqI71kvVICs/1o6yD9O+Fh5iZS?=
 =?us-ascii?Q?+y9TMkPe3D1AVSXIZW7Ay8XGne/t1KTmBplgKdffaxS0mrrAcEEJstF0fkYm?=
 =?us-ascii?Q?xhfgNxs2iPW/QQEPgQ+7mtbU8Ef3NrblPSig6EW3ZDSH7liBHhvKI+S78ZQ4?=
 =?us-ascii?Q?SfgcrZNXLro/vMdFhVJEOG7hfd17hld7JpPYVLy/Ukwotu7B7zVKSMPKKZLH?=
 =?us-ascii?Q?2rH8N5JvX7bgDf4Gqek3sDsUjAmeMj7u4oqon1OrefUBSLY510EyK9jhbzlf?=
 =?us-ascii?Q?ejM9Kkz9gv/dkdXR3Vqyz2Kc0cqdeZRC9tuKJ9X80FgZuYJ71No0VutFiLI9?=
 =?us-ascii?Q?P2RNRLduFqzyGIS2k3rSSLJ08946o3ANjgN2wUy9cOi9nHtSJYooxkThzcD+?=
 =?us-ascii?Q?WlA74MNhaBB9j7pSkGh3VtD6ns/VvsgA6r+QII/neq4IXIIR2WA3IxOsOVwJ?=
 =?us-ascii?Q?qOrJJNW3d3kDE3LhMza/E60ELM0YmXEdlWnxebjXgbSdklDUpJoe9PluoB4y?=
 =?us-ascii?Q?fe2eMp+Dj84qdPQ96HhzmbsSkgDXAS/vsBrzZx12Jnfh3AJeB5g7PZs+yLwe?=
 =?us-ascii?Q?fOvlCPMI+uStBzxZp9akuFLahpjN55Yb9hApv9AnndIJayaLWLEGsgRcs/O1?=
 =?us-ascii?Q?+8TUoImkCA3eBDMKFWADoSRm1pdfHkbdQtyxgmWKKAXEmUurKVwbRRStKqm2?=
 =?us-ascii?Q?7+vY9+B6GN+QH6+76tX2aZGLCBEfYRRAMmpfeUiF4Z7a7l2ApjlFvhzoc62S?=
 =?us-ascii?Q?TRHpjYVS1XDbQg2qiHQlejoe3eOIXtpy2+s4SfMWEMtauKJwGlYyTdryR1/w?=
 =?us-ascii?Q?hNXeUP0U7lpb5PDOHR6kp0bUCMtJ6xokoHaZ6CAOyOKzrz3EOqLUsX28hrsQ?=
 =?us-ascii?Q?FSVfKI3kPm7H44vBtMaFcgGfO1hahkLQIHDTJR6Yf68b2NoW3rU+jwg9vpjH?=
 =?us-ascii?Q?VsgHOXm4Frs0OVy+kyk5gpM5NK6sAtkV2CzxJjkmnpmr+peXQ7Y04F+13LuK?=
 =?us-ascii?Q?h1GG5vffkjWKFLz56ad4XJS7NaFZHNo=3D?=
X-OriginatorOrg: citrix.com
X-MS-Exchange-CrossTenant-Network-Message-Id: 75715495-99f5-435a-4553-08de900cb4c7
X-MS-Exchange-CrossTenant-AuthSource: CH8PR03MB8274.namprd03.prod.outlook.com
X-MS-Exchange-CrossTenant-AuthAs: Internal
X-MS-Exchange-CrossTenant-OriginalArrivalTime: 01 Apr 2026 16:35:38.0872
 (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: Va4nqss4ns8eB8wLtbUWyn47XXAAGGeFNP3e7SEwOSFRF/20S3PsJdH6OsTFinHP32i/r7HFuVgbfbEOm75HrYwALVw1Ap5bP8RnP8BXrbY=
X-MS-Exchange-Transport-CrossTenantHeadersStamped: BY5PR03MB5112
X-purgate-ID: tlsNG-d25034/1775061343-FFF42A3D-A6CB9E5C/0/0
X-purgate-type: clean
X-purgate-size: 950

A future change to on_selected_cpus() will change the semantics of the
wait parameter so that it doesn't wait for remote CPUs to "check in" if
wait == 0. Adjust the call here to retain the existing behaviour so it
continues to wait for the remote CPUs to VMExit.

Signed-off-by: Ross Lagerwall <ross.lagerwall@citrix.com>
---
 xen/arch/x86/mm/hap/hap.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/xen/arch/x86/mm/hap/hap.c b/xen/arch/x86/mm/hap/hap.c
index 5ccb80bda5d3..fb48e470bbf5 100644
--- a/xen/arch/x86/mm/hap/hap.c
+++ b/xen/arch/x86/mm/hap/hap.c
@@ -763,7 +763,7 @@ static bool cf_check flush_tlb(const unsigned long *vcpu_bitmap)
      * not currently running will already be flushed when scheduled because of
      * the ASID tickle done in the loop above.
      */
-    on_selected_cpus(mask, NULL, NULL, 0);
+    on_selected_cpus(mask, NULL, NULL, 1);
 
     return true;
 }
-- 
2.53.0



From xen-devel-bounces@lists.xenproject.org Wed Apr 01 16:36:01 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 01 Apr 2026 16:36:01 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1270704.1559299 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1w7yXn-0008CE-70; Wed, 01 Apr 2026 16:35:51 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1270704.1559299; Wed, 01 Apr 2026 16:35: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 1w7yXn-0008C3-3x; Wed, 01 Apr 2026 16:35:51 +0000
Received: by outflank-mailman (input) for mailman id 1270704;
 Wed, 01 Apr 2026 16:35:50 +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 1w7yXl-0008Aa-RT
 for xen-devel@lists.xenproject.org; Wed, 01 Apr 2026 16:35:49 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1w7yXl-0069XP-79
 for xen-devel@lists.xenproject.org; Wed, 01 Apr 2026 18:35:49 +0200
Received: from [10.42.69.1] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <ross.lagerwall@citrix.com>)
 id 69cd495f-bab6-0a2a0a5309dd-0a2a4501c264-6
 for <xen-devel@lists.xenproject.org>; Wed, 01 Apr 2026 18:35:49 +0200
Received: from [40.107.201.65]
 (helo=CH4PR04CU002.outbound.protection.outlook.com)
 by tlsNG-d62444.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.0)
 (envelope-from <ross.lagerwall@citrix.com>)
 id 69cd4963-6fc9-0a2a45010019-286bc941a3f8-3
 for <xen-devel@lists.xenproject.org>; Wed, 01 Apr 2026 18:35:48 +0200
Received: from CH8PR03MB8274.namprd03.prod.outlook.com (2603:10b6:610:2ba::5)
 by BY5PR03MB5112.namprd03.prod.outlook.com (2603:10b6:a03:1e9::14)
 with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9769.17; Wed, 1 Apr
 2026 16:35: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%7]) with mapi id 15.20.9769.016; Wed, 1 Apr 2026
 16:35: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=FzkubG7x01jqCjp86iqQ2iB8wDKOhRnSAF/m6pprcFpllhy/POQoFrHxpq7WetPyyhsA4bCm95nIpbzq+hrQCK7uubRm8WiP1iMm0TBA0wDEyfte1M+pBkVkuUQR0giDS9dz7pruX6EbbDgeOIU6nanwBRmLTGDm0l6KUbpQ2QZU0POU1G9yxKAsEyHy5WhsVxFOc3ajQFDP6rDDonlCNyrqEB5XP1ct/8P//JW8Tn/XulxpG8fru86ssj+roz2gMXpYgKNAY8g2NNuuLnvmKhSVzTaUHxmmP8brV3y+SM94CZPJt35XsL0Ja0TTSH1AywAKJbQAtrbGXwr7GfrGDw==
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com;
 s=arcselector10001;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1;
 bh=Nwao3VQk3x8O9KAMQNctVeFtFJMAsjfx9O8DsNd7b8k=;
 b=jKF0EFuWOZs0hzeDsWUhl9FnBF7xFlwsX1NKWNlp0hS4TVXoJV7G4F1dfixTTNsv3LvTWVZLiYwSayhLdsMgK+gtLK8kZZlDxyl92EnPVUDZIoxKz+Qx2ebf8vXpj37h6YrM2qn3Owy0+OUNEXL1CNTT77L0FgCf2DcGZq4y1Lf/C9HB5UoVlUd2fi9KLcTwWiRpcwifARNEOn9vHvTawg3I/LzWk11JyKyDRA/DE18jS75/VVIHVmVvsz3H+HJkKVUpSkjNTAlwXJaGZnuc/MAzAQ2+IeVr5MFoZWprJ6n3MZFodW+wV7sYVyWpLznCUdcN5jev2brjF/piKjm87Q==
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=Nwao3VQk3x8O9KAMQNctVeFtFJMAsjfx9O8DsNd7b8k=;
 b=k1Yyv+XuRt4UMAYgAQb4UMBxNSD3hXo1+DZHEB6Txal/Pzf8PTJQOXXWT6G60wJSL5r7AGRhzWiNDQzie8ai5y0CQYn3wttdT6dOzJaXYQliKCavX7tX1VUBKsplXGYasgLpqgqTuh5XHIjDAGL3Uwpr9ADIB8NfgLxPdGan6Lk=
Authentication-Results: dkim=none (message not signed)
 header.d=none;dmarc=none action=none header.from=citrix.com;
From: Ross Lagerwall <ross.lagerwall@citrix.com>
To: xen-devel@lists.xenproject.org
Cc: Ross Lagerwall <ross.lagerwall@citrix.com>,
	Anthony PERARD <anthony.perard@vates.tech>,
	Jan Beulich <jbeulich@suse.com>,
	Andrew Cooper <andrew.cooper3@citrix.com>,
	=?UTF-8?q?Roger=20Pau=20Monn=C3=A9?= <roger.pau@citrix.com>
Subject: [PATCH v1 3/3] x86/smp: Rewrite TLB flush using on_selected_cpus()
Date: Wed,  1 Apr 2026 17:35:21 +0100
Message-ID: <20260401163521.3603665-4-ross.lagerwall@citrix.com>
X-Mailer: git-send-email 2.53.0
In-Reply-To: <20260401163521.3603665-1-ross.lagerwall@citrix.com>
References: <20260401163521.3603665-1-ross.lagerwall@citrix.com>
Content-Transfer-Encoding: 8bit
Content-Type: text/plain
X-ClientProxiedBy: LO3P123CA0019.GBRP123.PROD.OUTLOOK.COM
 (2603:10a6:600:388::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_|BY5PR03MB5112:EE_
X-MS-Office365-Filtering-Correlation-Id: a74a36f5-2417-4b91-bb66-08de900cb946
X-MS-Exchange-SenderADCheck: 1
X-MS-Exchange-AntiSpam-Relay: 0
X-Microsoft-Antispam:
	BCL:0;ARA:13230040|376014|1800799024|366016|18002099003|22082099003|56012099003;
X-Microsoft-Antispam-Message-Info:
	FKqRE24Qw9sDzywarSFJksyfGnIY/EUkSTHXinHunQOLqMxPm2SoONY+MFCQ4JNO0uoyL+uQdnjLK1/S0M/4/8lRD/eVR1GTGF484l3+z1j9f1+MzSqzy1JNPNQRCG9NjCUK0ncbfj/CFugh6PXgHsNOpKSrEemWWJJoxTJIU9J68Z1E0F9YLuSLxquis1VRVYAlAoEew4rCS4nAgkn+mJNoDeUB1ImHOH/vdGtgr+p+fhRt/cJdAqPl70eaxInEQ49hb4hV22m+t2J+Y1pvJDosvRduBbtjUkGv6tKAvV6TFj6KX8rH5m+X11MXDyAaPVJr+tOGsz09afcaJo1yKmDspUrBDTSDn+Y9WPDokEiU/qyvres7eFJKLB5fqlYfBxfFH4sQeOvagDGrP/O6DHXhSuzTpuE+RhRaF/1FtR01FYAWVpxV5S/2xeAZPjpuwzx/k6QG+yWnHGhzQWcMW0ozycqXhQlUn7GjDHKjIA3626y7UN9xq5suVZmeZYCM3rB3zO1Hamsi4G5diaPlPiQw8NaSYueOmPcQpE3O3TxBmogQkfj+DWzp25WSQmyGHyaTtzfgI2AMstTwLvTGJpKntIg14+278fQst0OUUwbxAwM6kOIXHMBEZGMzNfeEGk1WkCGzGQJoHujwat63b516OVbunlBzZDhwesN4NxDTmbolwnz7nnlBC+RqoAe674p3wQMGDtRmKEMlqiyVnr0owFfYyoytMC7aPrhgCeE=
X-Forefront-Antispam-Report:
	CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:CH8PR03MB8274.namprd03.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(376014)(1800799024)(366016)(18002099003)(22082099003)(56012099003);DIR:OUT;SFP:1101;
X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1
X-MS-Exchange-AntiSpam-MessageData-0:
	=?us-ascii?Q?0PzGTcdyM1Zh7HsNyAaI8RdZAT/bWPxn4/6K4zDC+zamZ9d+WMm2Q4v+cQCu?=
 =?us-ascii?Q?mCSDIPXlx/Cy0OMRvKYT3J2hRfWbT/OHRkqXYv9O4//dVRcVWyJvxizNqEUt?=
 =?us-ascii?Q?U0aEcz7xMO4F8CQkul92bsOaPMMpYYXhDEehCXjU4vXFnGoK4biyPKKsZtHV?=
 =?us-ascii?Q?bgsxIU6qkuQ8/0akU+LnuxifxXyW8yKUv/HoouMpkhd9j9MYqcR36zSl88Xz?=
 =?us-ascii?Q?0wk7aB/Z9JAiGlhTcXtMT6XfHvRNJH87k27wDjvS2ov1QNTvirvzkMMGwNyv?=
 =?us-ascii?Q?nadfTkIVMAHvlkfXrgV1rlVgGhJnWbaxeYPVcjwLxadugk6VN8w+DlPhB1l4?=
 =?us-ascii?Q?A74VuJDXbj58+afAlgUhwXsO2NHzYCjTQWawvx/OFEDkTdmVUdJwNNbCRyLT?=
 =?us-ascii?Q?JUflCPgdNQHTeGDaMnIhBHWfTV6h2ct/9VqsYWvKVbza9+O6ZzwQr1GZ/dT+?=
 =?us-ascii?Q?EzK3szzMsQl+5IDYrC2dihAllA7wMDoF9ZS67a41yfszT6+GrwbmTo4O7AV2?=
 =?us-ascii?Q?eD4ij38xLs7V+W4V69rXdduEEsR3W8sgf68+0yizrYyXkvQpcD03JT/WAWJg?=
 =?us-ascii?Q?p/ippJyORCWu0bxZ14wDtdjmr/1x8eJspMFLVScZMnkK5cOMELa060zKuIJm?=
 =?us-ascii?Q?xlBkPZ7cEAHcaTnI9mjYyLUA0UxZo45lZw+gDaTiKSealahwyTsQ/exI6+t6?=
 =?us-ascii?Q?g2iX7unA/EfQbX2gNYnySVifCsWvJr+kbGAklEP+lVcVg0O9CLhLQocxrLOs?=
 =?us-ascii?Q?4FZG7bp/p3/j/KIxgNezo6jlEUYMVZMdhyw1kn71guWECzQNl1rF4wmi9n1A?=
 =?us-ascii?Q?ACQN833yDsadjCivmTWVzpjIrs7HlDPKd7ytVZ6Fw9nFpvL1Vzgfl1LAhIn7?=
 =?us-ascii?Q?P08dAxbROMMfLh84sDrcwAUYuGY3sKPAGUcU1yY6YfUo4wi6Yak4lPhQKhzr?=
 =?us-ascii?Q?lXS8LfIJSF5Rr46KouIPpNRJ1+FogiIMqppuHx+0tJVd5heUFh01PFVZe+Al?=
 =?us-ascii?Q?zTWRYqJriH52rTFtHLS43d4+q92UXibcUxVMxKymHYYId2+XHtg+QSULP81h?=
 =?us-ascii?Q?GDXPvLB7u2gcShZQy1UoBgL643g/eCpAJmj54x+2WiPuF1FzcCwCBehZiSA6?=
 =?us-ascii?Q?5zLANIJXS4in8MvHax3vva7jjRuyDrbj99kSQwqzXcIyq9anqXC8g8GCIRE/?=
 =?us-ascii?Q?KgoIFbhjj5HZunhtpoZRDyUKCZ8e+3szCEbUlkiiBh+rkOpEDlaKwlz2mIoz?=
 =?us-ascii?Q?Y9epe5bExnF3FnP9/NlELvLgTXQcq5dOPZhB3uLvHCE817heI/581soMmYhL?=
 =?us-ascii?Q?FBmalt53Mi238hruHgnF6xHR0CnU4LuHBSa+AfxaJuvAKaxd+1d6uexaxjIp?=
 =?us-ascii?Q?5hKx/EL1eAGxbGgCGWQw8gM6VhB6Kfy890/VPqdtA7Vcgk5pd/NhpMnT7F2x?=
 =?us-ascii?Q?j4/deKDdf2S9b6oCTJqaJy+BXOyy9Y/cbnT1x6AANyznHyEa6Qz8WCjPPpb9?=
 =?us-ascii?Q?dRDhorNz/EyzxZqGu+9udwzHwvSqtdWJ+cY933xD6sl8oWtvdbSd5UwVU9Ri?=
 =?us-ascii?Q?kdf2TujlidTQaMbIu3Y1r5Rutthn1iMU6++VrTJzAnk7hRg9rsSTwqGfhdcj?=
 =?us-ascii?Q?4dtaHsiKKLf+cYH2HOj3KhabLjlLAvYWqRvVCvIYZptqJrVgslqBeSGJIoCM?=
 =?us-ascii?Q?wo4frkeZlMdCxtNJwD6VwtQAvq7XcNb2vxLZqkWUq3oXB4CsSQWz0bSrubY9?=
 =?us-ascii?Q?uICYAe13CdahNbvYto4bkCAuSSEQJkU=3D?=
X-OriginatorOrg: citrix.com
X-MS-Exchange-CrossTenant-Network-Message-Id: a74a36f5-2417-4b91-bb66-08de900cb946
X-MS-Exchange-CrossTenant-AuthSource: CH8PR03MB8274.namprd03.prod.outlook.com
X-MS-Exchange-CrossTenant-AuthAs: Internal
X-MS-Exchange-CrossTenant-OriginalArrivalTime: 01 Apr 2026 16:35:45.6302
 (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: BplmDTxuO12Q9SNyWGePvYkQlXOHwDVob3T2YI65K9pLaSC5GOzx6fHXxuVWDnu9SGHNzdR6xoEF/oMu6eYb6JPfKdC0/Wq/ur11Y21/49k=
X-MS-Exchange-Transport-CrossTenantHeadersStamped: BY5PR03MB5112
X-purgate-ID: tlsNG-d62444/1775061349-B76FF185-C6A02C0C/0/0
X-purgate-type: clean
X-purgate-size: 5405

With on_selected_cpus() rewritten to avoid taking a global lock, also
use it for TLB flushes rather than the existing hand-rolled
functionality.

This improves performance by allowing TLB flushes on behalf of different
guests to happen at the same time.

Signed-off-by: Ross Lagerwall <ross.lagerwall@citrix.com>
---
 tools/xentrace/xenalyze.c              |  2 --
 xen/arch/x86/include/asm/irq-vectors.h |  1 -
 xen/arch/x86/include/asm/irq.h         |  1 -
 xen/arch/x86/smp.c                     | 30 +++++++++++---------------
 xen/arch/x86/smpboot.c                 |  1 -
 5 files changed, 13 insertions(+), 22 deletions(-)

diff --git a/tools/xentrace/xenalyze.c b/tools/xentrace/xenalyze.c
index 876d59d42ca5..a32f5f378a84 100644
--- a/tools/xentrace/xenalyze.c
+++ b/tools/xentrace/xenalyze.c
@@ -866,7 +866,6 @@ const char * hvm_svm_exit_reason_name[HVM_SVM_EXIT_REASON_MAX] = {
 /* General hvm information */
 #define SPURIOUS_APIC_VECTOR  0xff
 #define ERROR_APIC_VECTOR     0xfe
-#define INVALIDATE_TLB_VECTOR 0xfd
 #define EVENT_CHECK_VECTOR    0xfc
 #define CALL_FUNCTION_VECTOR  0xfb
 #define THERMAL_APIC_VECTOR   0xfa
@@ -878,7 +877,6 @@ const char * hvm_svm_exit_reason_name[HVM_SVM_EXIT_REASON_MAX] = {
 const char * hvm_extint_vector_name[EXTERNAL_INTERRUPT_MAX] = {
     [SPURIOUS_APIC_VECTOR] = "SPURIOS_APIC",
     [ERROR_APIC_VECTOR] =    "ERROR_APIC",
-    [INVALIDATE_TLB_VECTOR]= "INVALIDATE_TLB",
     [EVENT_CHECK_VECTOR]=    "EVENT_CHECK",
     [CALL_FUNCTION_VECTOR]=  "CALL_FUNCTION",
     [THERMAL_APIC_VECTOR]=   "THERMAL_APIC",
diff --git a/xen/arch/x86/include/asm/irq-vectors.h b/xen/arch/x86/include/asm/irq-vectors.h
index d75d1c56716a..a1eb160d500b 100644
--- a/xen/arch/x86/include/asm/irq-vectors.h
+++ b/xen/arch/x86/include/asm/irq-vectors.h
@@ -4,7 +4,6 @@
 /* Processor-initiated interrupts are all high priority. */
 #define SPURIOUS_APIC_VECTOR	0xff
 #define ERROR_APIC_VECTOR	0xfe
-#define INVALIDATE_TLB_VECTOR	0xfd
 #define EVENT_CHECK_VECTOR	0xfc
 #define CALL_FUNCTION_VECTOR	0xfb
 #define LOCAL_TIMER_VECTOR	0xfa
diff --git a/xen/arch/x86/include/asm/irq.h b/xen/arch/x86/include/asm/irq.h
index 7315150b66b4..57cf2f23eb8d 100644
--- a/xen/arch/x86/include/asm/irq.h
+++ b/xen/arch/x86/include/asm/irq.h
@@ -111,7 +111,6 @@ extern int opt_irq_vector_map;
 #define platform_legacy_irq(irq)	((irq) < NR_ISA_IRQS)
 
 void cf_check event_check_interrupt(void);
-void cf_check invalidate_interrupt(void);
 void cf_check call_function_interrupt(void);
 void cf_check irq_move_cleanup_interrupt(void);
 
diff --git a/xen/arch/x86/smp.c b/xen/arch/x86/smp.c
index 7936294f5fcd..a2a9abbb2f4e 100644
--- a/xen/arch/x86/smp.c
+++ b/xen/arch/x86/smp.c
@@ -242,21 +242,20 @@ void cf_check send_IPI_mask_phys(const cpumask_t *mask, int vector)
     local_irq_restore(flags);
 }
 
-static DEFINE_SPINLOCK(flush_lock);
-static cpumask_t flush_cpumask;
-static const void *flush_va;
-static unsigned int flush_flags;
+struct flush_data {
+    const void *va;
+    unsigned int flags;
+};
 
-void cf_check invalidate_interrupt(void)
+static void cf_check invalidate_cb(void *info)
 {
-    unsigned int flags = flush_flags;
-    ack_APIC_irq();
-    perfc_incr(ipis);
+    struct flush_data *data = info;
+    unsigned int flags = data->flags;
+
     if ( (flags & FLUSH_VCPU_STATE) && __sync_local_execstate() )
         flags &= ~(FLUSH_TLB | FLUSH_TLB_GLOBAL | FLUSH_ROOT_PGTBL);
     if ( flags & ~(FLUSH_VCPU_STATE | FLUSH_ORDER_MASK) )
-        flush_area_local(flush_va, flags);
-    cpumask_clear_cpu(smp_processor_id(), &flush_cpumask);
+        flush_area_local(data->va, flags);
 }
 
 void flush_area_mask(const cpumask_t *mask, const void *va, unsigned int flags)
@@ -275,21 +274,18 @@ void flush_area_mask(const cpumask_t *mask, const void *va, unsigned int flags)
     if ( (flags & ~FLUSH_ORDER_MASK) &&
          !cpumask_subset(mask, cpumask_of(cpu)) )
     {
+        cpumask_t flush_cpumask;
+        struct flush_data data = { .va = va, .flags = flags };
+
         if ( cpu_has_hypervisor &&
              !(flags & ~(FLUSH_TLB | FLUSH_TLB_GLOBAL | FLUSH_VA_VALID |
                          FLUSH_ORDER_MASK)) &&
              !hypervisor_flush_tlb(mask, va, flags) )
             return;
 
-        spin_lock(&flush_lock);
         cpumask_and(&flush_cpumask, mask, &cpu_online_map);
         cpumask_clear_cpu(cpu, &flush_cpumask);
-        flush_va      = va;
-        flush_flags   = flags;
-        send_IPI_mask(&flush_cpumask, INVALIDATE_TLB_VECTOR);
-        while ( !cpumask_empty(&flush_cpumask) )
-            cpu_relax();
-        spin_unlock(&flush_lock);
+        on_selected_cpus(&flush_cpumask, invalidate_cb, &data, 1);
     }
 }
 
diff --git a/xen/arch/x86/smpboot.c b/xen/arch/x86/smpboot.c
index 491cbbba33ae..51e6982a1d25 100644
--- a/xen/arch/x86/smpboot.c
+++ b/xen/arch/x86/smpboot.c
@@ -1482,6 +1482,5 @@ void __init smp_intr_init(void)
     /* Direct IPI vectors. */
     set_direct_apic_vector(IRQ_MOVE_CLEANUP_VECTOR, irq_move_cleanup_interrupt);
     set_direct_apic_vector(EVENT_CHECK_VECTOR, event_check_interrupt);
-    set_direct_apic_vector(INVALIDATE_TLB_VECTOR, invalidate_interrupt);
     set_direct_apic_vector(CALL_FUNCTION_VECTOR, call_function_interrupt);
 }
-- 
2.53.0



From xen-devel-bounces@lists.xenproject.org Wed Apr 01 17:36:57 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 01 Apr 2026 17:36:57 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1270772.1559309 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1w7zUf-0001KK-ML; Wed, 01 Apr 2026 17:36:41 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1270772.1559309; Wed, 01 Apr 2026 17:36: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 1w7zUf-0001KD-IG; Wed, 01 Apr 2026 17:36:41 +0000
Received: by outflank-mailman (input) for mailman id 1270772;
 Wed, 01 Apr 2026 17:36:40 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <ariadne@ariadne.space>) id 1w7zUe-0001K7-DH
 for xen-devel@lists.xenproject.org; Wed, 01 Apr 2026 17:36:40 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1w7zUc-006Hxx-Sv
 for xen-devel@lists.xenproject.org; Wed, 01 Apr 2026 19:36:38 +0200
Received: from [10.42.69.10] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <ariadne@ariadne.space>)
 id 69cd5796-e002-0a2a0a5209dd-0a2a450ab196-30
 for <xen-devel@lists.xenproject.org>; Wed, 01 Apr 2026 19:36:38 +0200
Received: from [149.248.47.155] (helo=hermes.ariadne.space)
 by tlsNG-4011c0.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.0)
 (envelope-from <ariadne@ariadne.space>)
 id 69cd57a5-ee98-0a2a450a0019-95f82f9ba3f8-3
 for <xen-devel@lists.xenproject.org>; Wed, 01 Apr 2026 19:36:38 +0200
Received: from helios (unknown [100.74.42.12])
 by hermes.ariadne.space (Postfix) with ESMTP id 7600E2685C9
 for <xen-devel@lists.xenproject.org>; Wed, 01 Apr 2026 17:36:31 +0000 (UTC)
Received: from [100.96.180.11] (unknown [172.19.0.1])
 by helios (Postfix) with ESMTPSA id 3A04B16000D134
 for <xen-devel@lists.xenproject.org>; Wed, 01 Apr 2026 17:36: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=dkim header.d=ariadne.space header.i="@ariadne.space" header.h="From:Subject:Date:Message-ID:To:MIME-Version:Content-Type:Content-Transfer-Encoding:In-Reply-To:References"
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=ariadne.space;
	s=dkim; t=1775064991;
	h=from:from:reply-to:subject:subject:date:date:message-id:message-id:
	 to:to:cc:mime-version:mime-version:content-type:content-type:
	 content-transfer-encoding:content-transfer-encoding:
	 in-reply-to:in-reply-to:references:references;
	bh=HFjfwUNpk83YJkSRCUxCCTTOgWj5hI8q0tnVjaEpeOY=;
	b=tGVwmg2nSmfkWisRDUFBFlOvX4EIIgCfl8FtVZeKgzoQYwR4XEzsOzSdGvBZ2t0U3D12iP
	n9H+mKH7m3loZ7IWUQ1TPMFUzYmmmO6Jo6OhvmwrBt6M0enpq2uDhmdnO3EGCC0F28hH9o
	QhPURW5W2dBDzCm+vRTWoZS128svGq8=
Message-ID: <528bb66e-3eb6-41c7-a33c-43811c8f1afc@ariadne.space>
Date: Wed, 1 Apr 2026 10:36:26 -0700
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH v2 4/6] CI: use Alpine's network setup
To: xen-devel@lists.xenproject.org
References: <cover.ca38f9571ab23e254a985ecfd4715235675aa06e.1774999414.git-series.marmarek@invisiblethingslab.com>
 <2a02d9e9a4fc47674d771f22e65b202b3dbf6336.1774999414.git-series.marmarek@invisiblethingslab.com>
Content-Language: en-US
From: Ariadne Conill <ariadne@ariadne.space>
In-Reply-To: <2a02d9e9a4fc47674d771f22e65b202b3dbf6336.1774999414.git-series.marmarek@invisiblethingslab.com>
Content-Type: text/plain; charset=UTF-8; format=flowed
Content-Transfer-Encoding: 8bit
X-purgate-ID: tlsNG-4011c0/1775064998-BF1480B1-C2B180D2/0/0
X-purgate-type: clean
X-purgate-size: 1343

Hi,

On 3/31/26 16:24, Marek Marczykowski-Górecki wrote:
> This allows Alpine startup script to properly handle service
> dependencies - necessary for starting dropbear ssh server.
> For the latter, always take the IP address from DHCP, in addition to the
> test-local one.
>
> Signed-off-by: Marek Marczykowski-Górecki <marmarek@invisiblethingslab.com>
> Acked-by: Stefano Stabellini <sstabellini@kernel.org>
> ---
>   automation/scripts/qubes-x86-64.sh | 20 +++++++++-----------
>   1 file changed, 9 insertions(+), 11 deletions(-)
>
> diff --git a/automation/scripts/qubes-x86-64.sh b/automation/scripts/qubes-x86-64.sh
> index 7a59fa5f1116..91c0d5bec829 100755
> --- a/automation/scripts/qubes-x86-64.sh
> +++ b/automation/scripts/qubes-x86-64.sh
> @@ -214,25 +214,23 @@ cat "${dom0_rootfs_parts[@]}" > binaries/dom0-rootfs.cpio.gz
>   # test-local configuration
>   mkdir -p rootfs
>   cd rootfs
> -mkdir -p boot etc/local.d root
> +mkdir -p boot etc/local.d root etc/network
>   cp -a ../automation/scripts/run-tools-tests root/
>   
> +echo "
> +auto xenbr0
> +iface xenbr0 inet dhcp
> +    bridge-ports eth0
> +    bridge-stp 0
> +    up ip a a 192.168.0.1/24 dev \$IFACE

Why not "address 192.168.0.1/24" here?  The DHCP client will still get 
run.  You can verify with ifquery(8).

Ariadne



From xen-devel-bounces@lists.xenproject.org Wed Apr 01 20:30:33 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 01 Apr 2026 20:30:33 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1270829.1559318 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1w82Ch-0001Fc-1M; Wed, 01 Apr 2026 20:30:19 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1270829.1559318; Wed, 01 Apr 2026 20:30: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 1w82Cg-0001FV-Uf; Wed, 01 Apr 2026 20:30:18 +0000
Received: by outflank-mailman (input) for mailman id 1270829;
 Wed, 01 Apr 2026 20:30:17 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <marmarek@invisiblethingslab.com>) id 1w82Cf-0001FP-1w
 for xen-devel@lists.xenproject.org; Wed, 01 Apr 2026 20:30:17 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1w82Ce-00HAYp-0r
 for xen-devel@lists.xenproject.org; Wed, 01 Apr 2026 22:30:16 +0200
Received: from [10.42.69.5] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <marmarek@invisiblethingslab.com>)
 id 69cd803a-2eae-0a2a0a5409dd-0a2a4505a5c0-38
 for <xen-devel@lists.xenproject.org>; Wed, 01 Apr 2026 22:30:15 +0200
Received: from [103.168.172.144] (helo=fout-a1-smtp.messagingengine.com)
 by tlsNG-c201ff.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.0)
 (envelope-from <marmarek@invisiblethingslab.com>)
 id 69cd8056-3760-0a2a45050019-67a8ac90b11b-3
 for <xen-devel@lists.xenproject.org>; Wed, 01 Apr 2026 22:30:14 +0200
Received: from phl-compute-04.internal (phl-compute-04.internal [10.202.2.44])
 by mailfout.phl.internal (Postfix) with ESMTP id A8D54EC0318;
 Wed,  1 Apr 2026 16:30:13 -0400 (EDT)
Received: from phl-frontend-03 ([10.202.2.162])
 by phl-compute-04.internal (MEProxy); Wed, 01 Apr 2026 16:30:13 -0400
Received: by mail.messagingengine.com (Postfix) with ESMTPA; Wed,
 1 Apr 2026 16:30:11 -0400 (EDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
Authentication-Results: eu.smtp.expurgate.cloud; dkim=pass header.s=fm1 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=fm1; t=1775075413;
	 x=1775161813; bh=nWIrDkp7CaQ3Q5G2Mr+Q2/ZNmaER6IFvS4Z0xZFI/Y8=; b=
	lJevZEExgMQDimSJOgBJ/5OBVrv+gi9ZxnZ08SbI6Yh4U1ovDmfYOBtjYqf/Qf1Q
	x2WLrKrHPVhhVBrogBrDe0pcf/FJAQJgxWsHJ2cyn/PqMp9eOvRZd6O6NHT3NtH1
	AlQazrFuoTaXm2dpRMkDyCowa8intQYl/DTS5ov+14R1JSs09cjHOwHSJjVCcGSt
	fw2ArMjszmwrT55nwl/scMHWmTJnloU8whlDebBLlQf0Pm9q8GcVa3b2r6pwS6eJ
	tqb0GasEYaDxWu657imVw2yx9Z3Do4OBHQsbN6LSc4004xcy34LfgAeRr6I8wToP
	vpjVupOBfLe/duMcO82Bug==
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=
	1775075413; x=1775161813; bh=nWIrDkp7CaQ3Q5G2Mr+Q2/ZNmaER6IFvS4Z
	0xZFI/Y8=; b=WyeaXZ4bQQ370X4spbtizGDiQZQYpia/+eagwf2BWcKgnWD8bs3
	vTQSXr/zDoi+xN3RH852B35FjV4gTMe5HzGkLzKz0KxFuhjIIwtVIsN3+Z0YJ2yY
	MntQeM00YjaCzEgGwlSIyXATZWljRoxiFvxWlR8YohOpeHGSl2VwGuqJT5Z3wI1v
	MQNDSSqNpKxEk7kO5/UGzaO3B7A4sRhuPWyqsKtYbENHzFs7NSZQhiEw8sPW8/yH
	6V13Zb9cr7G6abIPMZ2PsMFJAlTMoOVqJ7p1FHK7lSuYh1vPLaEyzxF0S0EIKwD5
	sQF6CptAJsxERnChMDt94fvaiACg8p/fyVQ==
X-ME-Sender: <xms:VIDNaZ5JolWTfstbp-XjELNImtPCvp1inq_BhG5HYBcdnLZ6s9DtwA>
    <xme:VIDNaeVDt9fLx60FKC5qijNcjuf-voqCFe1JieMmqgSZlxWaEHPol0W4QZqobkWMa
    Z8EYncx1qCTjf7EKHqVsh7C7zNyXJf_TvujxDQvOaff_FZt8A>
X-ME-Received: <xmr:VIDNad2uoeETD4K0B3PZQfOAcPSTgRoIwrNOruTuPnZE5XJG_aJs-OcOUhZ->
X-ME-Proxy-Cause: gggruggvucftvghtrhhoucdtuddrgeefhedrtddtgdegtdejucetufdoteggodetrfdotf
    fvucfrrhhofhhilhgvmecuhfgrshhtofgrihhlpdfurfetoffkrfgpnffqhgenuceurghi
    lhhouhhtmecufedttdenucesvcftvggtihhpihgvnhhtshculddquddttddmnecujfgurh
    epfffhvfevuffkfhggtggujgesghdtreertddtjeenucfhrhhomhepofgrrhgvkhcuofgr
    rhgtiiihkhhofihskhhiqdfikphrvggtkhhiuceomhgrrhhmrghrvghksehinhhvihhsih
    gslhgvthhhihhnghhslhgrsgdrtghomheqnecuggftrfgrthhtvghrnhepveeujeetgeel
    leetudeuvefhtefgffejvedtvdfgieevheetheelgeeuledvjeevnecuffhomhgrihhnpe
    hgihhtlhgrsgdrtghomhenucevlhhushhtvghrufhiiigvpedtnecurfgrrhgrmhepmhgr
    ihhlfhhrohhmpehmrghrmhgrrhgvkhesihhnvhhishhisghlvghthhhinhhgshhlrggsrd
    gtohhmpdhnsggprhgtphhtthhopeefpdhmohguvgepshhmthhpohhuthdprhgtphhtthho
    pehjsggvuhhlihgthhesshhushgvrdgtohhmpdhrtghpthhtoheprghnughrvgifrdgtoh
    hophgvrhefsegtihhtrhhigidrtghomhdprhgtphhtthhopeigvghnqdguvghvvghlsehl
    ihhsthhsrdigvghnphhrohhjvggtthdrohhrgh
X-ME-Proxy: <xmx:VIDNab2FeBcVsxAUoITxfBrMUFnWTZ83wbdXsqUDioJn-Ka_TlGsNw>
    <xmx:VIDNaQ87FuFfUFt8D88eANmY01QbAnAdGF19TOooahRlbxAgWuDKNg>
    <xmx:VIDNaY0g7E2XZrgEydb5KX0vuifQYOFPitWIFP_5QlFaR92UdTPtuQ>
    <xmx:VIDNad-TlwipAJklfuW22mlpDkmtnxQvY2VbI8VdTi53SNq0UTBE4w>
    <xmx:VYDNaRPi_7S3lk8l1i-7nugeunBirScC00u0JBZRkqG_4MtoK-o5pzdI>
Feedback-ID: i1568416f:Fastmail
Date: Wed, 1 Apr 2026 22:30:10 +0200
From: Marek =?utf-8?Q?Marczykowski-G=C3=B3recki?= <marmarek@invisiblethingslab.com>
To: Jan Beulich <jbeulich@suse.com>
Cc: Andrew Cooper <andrew.cooper3@citrix.com>,
	xen-devel <xen-devel@lists.xenproject.org>
Subject: Re: IOMMU faults after S3
Message-ID: <ac2AUoNaEUDIJ-J8@mail-itl>
References: <acZZmGXIJlmN3KGm@mail-itl>
 <e8bbaae2-5cff-4549-9f27-fbbda7346f60@suse.com>
 <913f75e3-0039-4a7e-9884-7564c329557f@citrix.com>
 <6020226f-5e38-42f5-923e-2692d17bc4e9@suse.com>
MIME-Version: 1.0
Content-Type: multipart/signed; micalg=pgp-sha256;
	protocol="application/pgp-signature"; boundary="Q+ZQMjZQ5VOSBjNe"
Content-Disposition: inline
In-Reply-To: <6020226f-5e38-42f5-923e-2692d17bc4e9@suse.com>
X-purgate-ID: tlsNG-c201ff/1775075415-3252396F-5A6CF06A/0/0
X-purgate-type: clean
X-purgate-size: 13805


--Q+ZQMjZQ5VOSBjNe
Content-Type: text/plain; protected-headers=v1; charset=utf-8
Content-Disposition: inline
Content-Transfer-Encoding: quoted-printable
Date: Wed, 1 Apr 2026 22:30:10 +0200
From: Marek =?utf-8?Q?Marczykowski-G=C3=B3recki?= <marmarek@invisiblethingslab.com>
To: Jan Beulich <jbeulich@suse.com>
Cc: Andrew Cooper <andrew.cooper3@citrix.com>,
	xen-devel <xen-devel@lists.xenproject.org>
Subject: Re: IOMMU faults after S3

On Wed, Apr 01, 2026 at 10:11:12AM +0200, Jan Beulich wrote:
> On 01.04.2026 09:20, Andrew Cooper wrote:
> > On 01/04/2026 9:14 am, Jan Beulich wrote:
> >> On 27.03.2026 11:19, Marek Marczykowski-G=C3=B3recki wrote:
> >>> I noticed that on some systems, there are a lot of IOMMU faults after
> >>> S3. I can see it also on a laptop with MTL, but it affects also the A=
DL
> >>> gitlab runner:
> >>>
> >>>     https://gitlab.com/xen-project/hardware/xen/-/jobs/13661033722
> >>>     (XEN) [   37.201160] [VT-D]DMAR:[DMA Write] Request device [0000:=
00:1e.6] fault addr 0
> >>>     (XEN) [   37.201164] [VT-D]DMAR: reason 02 - Present bit in conte=
xt entry is clear
> >>>     (XEN) [   37.202332] [VT-D]DMAR:[DMA Write] Request device [0000:=
00:1e.6] fault addr 0
> >>>     (XEN) [   37.202339] [VT-D]DMAR: reason 02 - Present bit in conte=
xt entry is clear
> >>>
> >>> Interestingly, the 0000:00:1e.6 device is not even listed by lspci.
> >>>
> >>> The issue is present only on staging, not staging-4.21.
> >>>
> >>> Bisect says:
> >>>
> >>> 5ec93b2f19ff8873fca65d38c1164b0a56d3898b is the first bad commit
> >>> commit 5ec93b2f19ff8873fca65d38c1164b0a56d3898b
> >>> Author: Jan Beulich <jbeulich@suse.com>
> >>> Date:   Thu Jan 22 14:13:35 2026 +0100
> >>>
> >>>     x86/HPET: drop .set_affinity hook
> >> Looking into this, I find several things I can't quite understand (yet=
).
> >> First there is
> >>
> >> (XEN) [000000456c0fe39f] Disabling HPET for being unreliable
> >>
> >> which looks to only affect clocksource selection, but not use as
> >> broadcast source for CPU-idle management. (This may be an independent
> >> issue.)
> >>
> >> Then there is
> >>
> >> (XEN) [    2.760248] HPET: 8 timers usable for broadcast (8 total)
> >>
> >> which should only occur on ARAT-incapable systems. That should only be
> >> older hardware.
> >=20
> > I'm not sure that's a reasonable assertion to draw.=C2=A0 The number of=
 HPET
> > channels is down to the HPET alone, not anything to do with the CPU
> > capabilities.
>=20
> My statement was about the mere presence of that message, not the number
> of channels that are reported.
>=20
> >>  (On my much older Skylake I don't see this line, for
> >> example.) What does CPUID leaf 6 have on this system? Sadly xen-cpuid
> >> is purely featureset based, and hence doesn't expose info about that
> >> leaf.
> >=20
> > xen-cpuid -p
> >=20
> > That will get you leaf 6, but there's no human-readable decode of it.
>=20
> Raw numbers is good enough here. How did I miss that option when looking
> at --help output? Oh, simply because it isn't shown there.
>=20
> Marek, that'll be better than bare metal kernel data, as it gives us both
> raw and host policies.

Here is the output from ADL runner:

Xen reports there are maximum 120 leaves and 2 MSRs
Raw policy: 48 leaves, 2 MSRs
 CPUID:
  leaf     subleaf  -> eax      ebx      ecx      edx    =20
  00000000:ffffffff -> 00000020:756e6547:6c65746e:49656e69
  00000001:ffffffff -> 00090672:00800800:77fafbff:bfebfbff
  00000002:ffffffff -> 00feff01:000000f0:00000000:00000000
  00000004:00000000 -> fc004121:02c0003f:0000003f:00000000
  00000004:00000001 -> fc004122:01c0003f:0000003f:00000000
  00000004:00000002 -> fc01c143:0240003f:000007ff:00000000
  00000004:00000003 -> fc1fc163:0240003f:00007fff:00000004
  00000005:ffffffff -> 00000040:00000040:00000003:10102020
  00000006:ffffffff -> 00df8ff7:00000002:00000409:00000003
  00000007:00000000 -> 00000002:239c27eb:98c027ac:fc1cc410
  00000007:00000001 -> 00400810:00000000:00000000:00040000
  00000007:00000002 -> 00000000:00000000:00000000:00000017
  0000000a:ffffffff -> 07300605:00000000:00000007:00008603
  0000000b:00000000 -> 00000001:00000002:00000100:00000000
  0000000b:00000001 -> 00000007:00000010:00000201:00000000
  0000000d:00000000 -> 00000207:00000000:00000a88:00000000
  0000000d:00000001 -> 0000000f:00000000:00019900:00000000
  0000000d:00000002 -> 00000100:00000240:00000000:00000000
  0000000d:00000008 -> 00000080:00000000:00000001:00000000
  0000000d:00000009 -> 00000008:00000a80:00000000:00000000
  0000000d:0000000b -> 00000010:00000000:00000001:00000000
  0000000d:0000000c -> 00000018:00000000:00000001:00000000
  0000000d:0000000f -> 00000328:00000000:00000001:00000000
  0000000d:00000010 -> 00000008:00000000:00000001:00000000
  80000000:ffffffff -> 80000008:00000000:00000000:00000000
  80000001:ffffffff -> 00000000:00000000:00000121:2c100800
  80000002:ffffffff -> 68743231:6e654720:746e4920:52286c65
  80000003:ffffffff -> 6f432029:54286572:6920294d:32312d35
  80000004:ffffffff -> 4b303036:00000000:00000000:00000000
  80000006:ffffffff -> 00000000:00000000:05007040:00000000
  80000007:ffffffff -> 00000000:00000000:00000000:00000100
  80000008:ffffffff -> 0000302e:00000000:00000000:00000000
 MSRs:
  index    -> value          =20
  000000ce -> 0000000080000000
  0000010a -> 000000001488fd6b
Host policy: 41 leaves, 2 MSRs
 CPUID:
  leaf     subleaf  -> eax      ebx      ecx      edx    =20
  00000000:ffffffff -> 0000000d:756e6547:6c65746e:49656e69
  00000001:ffffffff -> 00090672:00800800:77fafbff:bfebfbff
  00000002:ffffffff -> 00feff01:000000f0:00000000:00000000
  00000004:00000000 -> fc004121:02c0003f:0000003f:00000000
  00000004:00000001 -> fc004122:01c0003f:0000003f:00000000
  00000004:00000002 -> fc01c143:0240003f:000007ff:00000000
  00000004:00000003 -> fc1fc163:0240003f:00007fff:00000004
  00000005:ffffffff -> 00000040:00000040:00000003:10102020
  00000006:ffffffff -> 00df8ff7:00000002:00000409:00000003
  00000007:00000000 -> 00000002:239c27eb:984027ac:fc1cc410
  00000007:00000001 -> 00000810:00000000:00000000:00040000
  00000007:00000002 -> 00000000:00000000:00000000:00000017
  0000000b:00000000 -> 00000001:00000002:00000100:00000000
  0000000b:00000001 -> 00000007:00000010:00000201:00000000
  0000000d:00000000 -> 00000207:00000000:00000a88:00000000
  0000000d:00000001 -> 0000000f:00000000:00000000:00000000
  0000000d:00000002 -> 00000100:00000240:00000000:00000000
  0000000d:00000009 -> 00000008:00000a80:00000000:00000000
  80000000:ffffffff -> 80000008:00000000:00000000:00000000
  80000001:ffffffff -> 00000000:00000000:00000121:2c100800
  80000002:ffffffff -> 68743231:6e654720:746e4920:52286c65
  80000003:ffffffff -> 6f432029:54286572:6920294d:32312d35
  80000004:ffffffff -> 4b303036:00000000:00000000:00000000
  80000006:ffffffff -> 00000000:00000000:05007040:00000000
  80000007:ffffffff -> 00000000:00000000:00000000:00000100
  80000008:ffffffff -> 0000302e:00000000:00000000:00000000
 MSRs:
  index    -> value          =20
  000000ce -> 0000000080000000
  0000010a -> 400000001488fd6b
PV Max policy: 58 leaves, 2 MSRs
 CPUID:
  leaf     subleaf  -> eax      ebx      ecx      edx    =20
  00000000:ffffffff -> 0000000d:756e6547:6c65746e:49656e69
  00000001:ffffffff -> 00090672:00800800:f6f83203:1fc9cbf5
  00000002:ffffffff -> 00feff01:000000f0:00000000:00000000
  00000004:00000000 -> fc004121:02c0003f:0000003f:00000000
  00000004:00000001 -> fc004122:01c0003f:0000003f:00000000
  00000004:00000002 -> fc01c143:0240003f:000007ff:00000000
  00000004:00000003 -> fc1fc163:0240003f:00007fff:00000004
  00000007:00000000 -> 00000002:218c0329:18400700:ac004410
  00000007:00000001 -> 00000810:00000000:00000000:00000000
  00000007:00000002 -> 00000000:00000000:00000000:00000001
  0000000d:00000000 -> 00000007:00000000:00000340:00000000
  0000000d:00000001 -> 00000007:00000000:00000000:00000000
  0000000d:00000002 -> 00000100:00000240:00000000:00000000
  80000000:ffffffff -> 80000021:00000000:00000000:00000000
  80000001:ffffffff -> 00000000:00000000:00000123:28100800
  80000002:ffffffff -> 68743231:6e654720:746e4920:52286c65
  80000003:ffffffff -> 6f432029:54286572:6920294d:32312d35
  80000004:ffffffff -> 4b303036:00000000:00000000:00000000
  80000006:ffffffff -> 00000000:00000000:05007040:00000000
  80000007:ffffffff -> 00000000:00000000:00000000:00000100
  80000008:ffffffff -> 0000302e:00001000:00000000:00000000
 MSRs:
  index    -> value          =20
  000000ce -> 0000000080000000
  0000010a -> 40000000140ae167
HVM Max policy: 65 leaves, 2 MSRs
 CPUID:
  leaf     subleaf  -> eax      ebx      ecx      edx    =20
  00000000:ffffffff -> 0000000d:756e6547:6c65746e:49656e69
  00000001:ffffffff -> 00090672:00800800:f7fa3223:1fcbfbff
  00000002:ffffffff -> 00feff01:000000f0:00000000:00000000
  00000004:00000000 -> fc004121:02c0003f:0000003f:00000000
  00000004:00000001 -> fc004122:01c0003f:0000003f:00000000
  00000004:00000002 -> fc01c143:0240003f:000007ff:00000000
  00000004:00000003 -> fc1fc163:0240003f:00007fff:00000004
  00000007:00000000 -> 00000002:219c07ab:9840070c:bc004410
  00000007:00000001 -> 00000810:00000000:00000000:00000000
  00000007:00000002 -> 00000000:00000000:00000000:00000017
  0000000d:00000000 -> 00000207:00000000:00000a88:00000000
  0000000d:00000001 -> 0000000f:00000000:00000000:00000000
  0000000d:00000002 -> 00000100:00000240:00000000:00000000
  0000000d:00000009 -> 00000008:00000a80:00000000:00000000
  80000000:ffffffff -> 80000021:00000000:00000000:00000000
  80000001:ffffffff -> 00000000:00000000:00000123:2c100800
  80000002:ffffffff -> 68743231:6e654720:746e4920:52286c65
  80000003:ffffffff -> 6f432029:54286572:6920294d:32312d35
  80000004:ffffffff -> 4b303036:00000000:00000000:00000000
  80000006:ffffffff -> 00000000:00000000:05007040:00000000
  80000007:ffffffff -> 00000000:00000000:00000000:00000100
  80000008:ffffffff -> 0000302e:00101000:00000000:00000000
 MSRs:
  index    -> value          =20
  000000ce -> 0000000080000000
  0000010a -> 40000000140ae167
PV Default policy: 33 leaves, 2 MSRs
 CPUID:
  leaf     subleaf  -> eax      ebx      ecx      edx    =20
  00000000:ffffffff -> 0000000d:756e6547:6c65746e:49656e69
  00000001:ffffffff -> 00090672:00800800:f6d83203:1fc9cbf5
  00000002:ffffffff -> 00feff01:000000f0:00000000:00000000
  00000004:00000000 -> fc004121:02c0003f:0000003f:00000000
  00000004:00000001 -> fc004122:01c0003f:0000003f:00000000
  00000004:00000002 -> fc01c143:0240003f:000007ff:00000000
  00000004:00000003 -> fc1fc163:0240003f:00007fff:00000004
  00000007:00000000 -> 00000002:218c0329:00400700:ac004410
  00000007:00000001 -> 00000810:00000000:00000000:00000000
  00000007:00000002 -> 00000000:00000000:00000000:00000001
  0000000d:00000000 -> 00000007:00000000:00000340:00000000
  0000000d:00000001 -> 00000007:00000000:00000000:00000000
  0000000d:00000002 -> 00000100:00000240:00000000:00000000
  80000000:ffffffff -> 80000008:00000000:00000000:00000000
  80000001:ffffffff -> 00000000:00000000:00000121:28100800
  80000002:ffffffff -> 68743231:6e654720:746e4920:52286c65
  80000003:ffffffff -> 6f432029:54286572:6920294d:32312d35
  80000004:ffffffff -> 4b303036:00000000:00000000:00000000
  80000006:ffffffff -> 00000000:00000000:05007040:00000000
  80000008:ffffffff -> 0000302e:00001000:00000000:00000000
 MSRs:
  index    -> value          =20
  000000ce -> 0000000080000000
  0000010a -> 400000001408e163
HVM Default policy: 40 leaves, 2 MSRs
 CPUID:
  leaf     subleaf  -> eax      ebx      ecx      edx    =20
  00000000:ffffffff -> 0000000d:756e6547:6c65746e:49656e69
  00000001:ffffffff -> 00090672:00800800:f7fa3203:1fcbfbff
  00000002:ffffffff -> 00feff01:000000f0:00000000:00000000
  00000004:00000000 -> fc004121:02c0003f:0000003f:00000000
  00000004:00000001 -> fc004122:01c0003f:0000003f:00000000
  00000004:00000002 -> fc01c143:0240003f:000007ff:00000000
  00000004:00000003 -> fc1fc163:0240003f:00007fff:00000004
  00000007:00000000 -> 00000002:219c07ab:8040070c:bc004410
  00000007:00000001 -> 00000810:00000000:00000000:00000000
  00000007:00000002 -> 00000000:00000000:00000000:00000017
  0000000d:00000000 -> 00000207:00000000:00000a88:00000000
  0000000d:00000001 -> 0000000f:00000000:00000000:00000000
  0000000d:00000002 -> 00000100:00000240:00000000:00000000
  0000000d:00000009 -> 00000008:00000a80:00000000:00000000
  80000000:ffffffff -> 80000008:00000000:00000000:00000000
  80000001:ffffffff -> 00000000:00000000:00000121:2c100800
  80000002:ffffffff -> 68743231:6e654720:746e4920:52286c65
  80000003:ffffffff -> 6f432029:54286572:6920294d:32312d35
  80000004:ffffffff -> 4b303036:00000000:00000000:00000000
  80000006:ffffffff -> 00000000:00000000:05007040:00000000
  80000008:ffffffff -> 0000302e:00101000:00000000:00000000
 MSRs:
  index    -> value          =20
  000000ce -> 0000000080000000
  0000010a -> 400000001408e163


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

--Q+ZQMjZQ5VOSBjNe
Content-Type: application/pgp-signature; name=signature.asc

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

iQEzBAEBCAAdFiEEhrpukzGPukRmQqkK24/THMrX1ywFAmnNgFIACgkQ24/THMrX
1yzIcwf/YF3i17KCsGAt5e7sC+ztxTW6zyo+LhMELsKV/ujAS6OGzleYfsBsw7lr
d5C//jAoMgBJhv4q4M99T2rOK06m6Y6hU9mfSNyxx8rw0q02+PpYURfLuKE+BbGI
cUI06lvqYQUrfeqY9cuODbDi8tG2EmL4zvucAjamu9PewRu9I8OuJddlZCaZHSSg
RcTpGe1Cr413Oiupu0rEbg3nvsU3yyYlitnpBtfG2gnRnQ/XQuanVu+Ny9qfmjOU
RwtrJIRYEXQ+v5Vh4MMTiDcOAOeihXY1rqYsNFExnwR9MLEGL+mDs0VCVgnfM2SM
KMi0lyXL42NO9dlDWYVzkkYjMmN4uw==
=dQVe
-----END PGP SIGNATURE-----

--Q+ZQMjZQ5VOSBjNe--


From xen-devel-bounces@lists.xenproject.org Wed Apr 01 23:17:54 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 01 Apr 2026 23:17:54 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1270869.1559326 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1w84oa-0004Rm-EY; Wed, 01 Apr 2026 23:17:36 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1270869.1559326; Wed, 01 Apr 2026 23:17: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 1w84oa-0004Rf-Aq; Wed, 01 Apr 2026 23:17:36 +0000
Received: by outflank-mailman (input) for mailman id 1270869;
 Wed, 01 Apr 2026 23:17:35 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <marmarek@invisiblethingslab.com>) id 1w84oY-0004RZ-VL
 for xen-devel@lists.xenproject.org; Wed, 01 Apr 2026 23:17:35 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1w84oY-002vWG-2E
 for xen-devel@lists.xenproject.org; Thu, 02 Apr 2026 01:17:34 +0200
Received: from [10.42.69.6] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <marmarek@invisiblethingslab.com>)
 id 69cda742-5cb7-0a2a0a5109dd-0a2a4506bf86-30
 for <xen-devel@lists.xenproject.org>; Thu, 02 Apr 2026 01:17:33 +0200
Received: from [202.12.124.144] (helo=fout-b1-smtp.messagingengine.com)
 by tlsNG-16d1c6.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.0)
 (envelope-from <marmarek@invisiblethingslab.com>)
 id 69cda78b-0df0-0a2a45060019-ca0c7c90d475-3
 for <xen-devel@lists.xenproject.org>; Thu, 02 Apr 2026 01:17:32 +0200
Received: from phl-compute-02.internal (phl-compute-02.internal [10.202.2.42])
 by mailfout.stl.internal (Postfix) with ESMTP id 8E35C1D00256;
 Wed,  1 Apr 2026 19:17:31 -0400 (EDT)
Received: from phl-frontend-04 ([10.202.2.163])
 by phl-compute-02.internal (MEProxy); Wed, 01 Apr 2026 19:17:31 -0400
Received: by mail.messagingengine.com (Postfix) with ESMTPA; Wed,
 1 Apr 2026 19:17:30 -0400 (EDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
Authentication-Results: eu.smtp.expurgate.cloud; dkim=pass header.s=fm1 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=fm1; t=1775085451;
	 x=1775171851; bh=Sx2r4/ZWKQ+Iol+JybbT8A58yQbfqz2kJA8DoxwRPWE=; b=
	N0O/7b/8uB0x4DxDqeDda3v9OpTjX8BmXzoRbMkPt6PQAs39JffnlaPf8N5DvqmE
	0ozFvLyonOgGd0gIKogp8EjUc/w7P1/GOu9/1bWz/K2fNOAShEfEWTWOUuX2V6Gd
	uoSeYOiB/5nPgstsXiJeEMk0FRdwjQssyHmhhkEHK+QTZKwrhtHL/sSIqOku7c/w
	aBr9ar3hzdbDSQXHYZ0dTG/hYsWGHPK3lpQIKqhhCkuGPT9lltgU17WdlsRKrBVn
	x7w3t5SDGZ8SWO3iL7J1aCKVSEGFqkIjsdynWKoUeUk56Stmr9cm57A1Opzpysrj
	jQWZaGGTIaajvSr569H68A==
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=
	1775085451; x=1775171851; bh=Sx2r4/ZWKQ+Iol+JybbT8A58yQbfqz2kJA8
	DoxwRPWE=; b=Cvzm7/lbULNN7Qc/IrwdSZa6Zx4b0M17qvBtI5gaVkHMqeCnple
	vEAfmAqLMddXVVRjGdWEjJewM8qIZtkNZwBPFBgqYgpmEqD4Vc0KJLih7iL9ZbRP
	B+5P37iaqsIcMYnLVoteGMfE7I9KtfSJF1XuUP/msba0bPVbcznjx20KyBKP0oN3
	/J0EnqrwRcpm3uAJcdgtEBv0FXJkSDZv8dyBisucTmSzgKbQewGYdDcyUYJHi2LC
	9Eooyoso5Nb8wan8WGMPr3hY9r5uN4gzJ4S4shJvgVQGy8ntyli+/Dc5E/h2anYG
	HVdGY7goID7N8i65IbShQ0yGuP784wf69LQ==
X-ME-Sender: <xms:i6fNacKoOt42eVHyPZk0dvt8w0VtmXvCIou4JuzRQJ0OwjNcVJNjfw>
    <xme:i6fNaSLGA_rTv0M12yXw0gnKV7B4nSZ-RTLq6IjWT-tM-P7Skzuv9JCtreEgqY6rx
    nk18JQ4aUwH8TP3vL9JQwUa_3TyjWjDDIs1aNJrxhs6nJmb>
X-ME-Received: <xmr:i6fNaaXePi-XQFEfO7arWhHQikK7w7JsiynTNty6spodjvZWHfG9HRiGWRur>
X-ME-Proxy-Cause: gggruggvucftvghtrhhoucdtuddrgeefhedrtddtgdeggeefucetufdoteggodetrfdotf
    fvucfrrhhofhhilhgvmecuhfgrshhtofgrihhlpdfurfetoffkrfgpnffqhgenuceurghi
    lhhouhhtmecufedttdenucesvcftvggtihhpihgvnhhtshculddquddttddmnecujfgurh
    epfffhvfevuffkfhggtggujgesghdtreertddtjeenucfhrhhomhepofgrrhgvkhcuofgr
    rhgtiiihkhhofihskhhiqdfikphrvggtkhhiuceomhgrrhhmrghrvghksehinhhvihhsih
    gslhgvthhhihhnghhslhgrsgdrtghomheqnecuggftrfgrthhtvghrnhepveeujeetgeel
    leetudeuvefhtefgffejvedtvdfgieevheetheelgeeuledvjeevnecuffhomhgrihhnpe
    hgihhtlhgrsgdrtghomhenucevlhhushhtvghrufhiiigvpedtnecurfgrrhgrmhepmhgr
    ihhlfhhrohhmpehmrghrmhgrrhgvkhesihhnvhhishhisghlvghthhhinhhgshhlrggsrd
    gtohhmpdhnsggprhgtphhtthhopedvpdhmohguvgepshhmthhpohhuthdprhgtphhtthho
    pehjsggvuhhlihgthhesshhushgvrdgtohhmpdhrtghpthhtohepgigvnhdquggvvhgvlh
    eslhhishhtshdrgigvnhhprhhojhgvtghtrdhorhhg
X-ME-Proxy: <xmx:i6fNaUhTwxdLkwjkG7xIFMXJxz61wF_rTtDL052UiSCugDm1Bu8RfA>
    <xmx:i6fNaV-jI7sOtwBG6d3ZkGFHNYggbR-p9RoB6TTEboOvFKFQlbTGPg>
    <xmx:i6fNaeDUH06SWU1adcpMN03dplU6IX0PL7MviGPSnC1lvxDqgStoag>
    <xmx:i6fNaSKW4zboAzLR8U1szdy1E366IWG2e0HadsoSjHiAnmFxOzukBA>
    <xmx:i6fNaUdlHZRVE9rF_DVx-wJE9ZDAFbEC0KbREpLIdKcpKZV6IyvprEP6>
Feedback-ID: i1568416f:Fastmail
Date: Thu, 2 Apr 2026 01:17:29 +0200
From: Marek =?utf-8?Q?Marczykowski-G=C3=B3recki?= <marmarek@invisiblethingslab.com>
To: Jan Beulich <jbeulich@suse.com>
Cc: xen-devel <xen-devel@lists.xenproject.org>
Subject: Re: IOMMU faults after S3
Message-ID: <ac2nibFfvGm_7elv@mail-itl>
References: <acZZmGXIJlmN3KGm@mail-itl>
 <e8bbaae2-5cff-4549-9f27-fbbda7346f60@suse.com>
 <090b8b8f-141b-4a24-92eb-879c0a0c73e1@suse.com>
MIME-Version: 1.0
Content-Type: multipart/signed; micalg=pgp-sha256;
	protocol="application/pgp-signature"; boundary="C5W4Ug/2V60Qa5F1"
Content-Disposition: inline
In-Reply-To: <090b8b8f-141b-4a24-92eb-879c0a0c73e1@suse.com>
X-purgate-ID: tlsNG-16d1c6/1775085453-6464A3D8-9E5424A5/0/0
X-purgate-type: clean
X-purgate-size: 9143


--C5W4Ug/2V60Qa5F1
Content-Type: multipart/mixed; protected-headers=v1;
	boundary="ArA7zpzUrS2vfZ23"
Content-Disposition: inline
Date: Thu, 2 Apr 2026 01:17:29 +0200
From: Marek =?utf-8?Q?Marczykowski-G=C3=B3recki?= <marmarek@invisiblethingslab.com>
To: Jan Beulich <jbeulich@suse.com>
Cc: xen-devel <xen-devel@lists.xenproject.org>
Subject: Re: IOMMU faults after S3


--ArA7zpzUrS2vfZ23
Content-Type: text/plain; charset=utf-8
Content-Disposition: inline
Content-Transfer-Encoding: quoted-printable

On Wed, Apr 01, 2026 at 10:52:37AM +0200, Jan Beulich wrote:
> On 01.04.2026 09:14, Jan Beulich wrote:
> > On 27.03.2026 11:19, Marek Marczykowski-G=C3=B3recki wrote:
> >> I noticed that on some systems, there are a lot of IOMMU faults after
> >> S3. I can see it also on a laptop with MTL, but it affects also the ADL
> >> gitlab runner:
> >>
> >>     https://gitlab.com/xen-project/hardware/xen/-/jobs/13661033722
> >>     (XEN) [   37.201160] [VT-D]DMAR:[DMA Write] Request device [0000:0=
0:1e.6] fault addr 0
> >>     (XEN) [   37.201164] [VT-D]DMAR: reason 02 - Present bit in contex=
t entry is clear
> >>     (XEN) [   37.202332] [VT-D]DMAR:[DMA Write] Request device [0000:0=
0:1e.6] fault addr 0
> >>     (XEN) [   37.202339] [VT-D]DMAR: reason 02 - Present bit in contex=
t entry is clear
> >>
> >> Interestingly, the 0000:00:1e.6 device is not even listed by lspci.
> >>
> >> The issue is present only on staging, not staging-4.21.
> >>
> >> Bisect says:
> >>
> >> 5ec93b2f19ff8873fca65d38c1164b0a56d3898b is the first bad commit
> >> commit 5ec93b2f19ff8873fca65d38c1164b0a56d3898b
> >> Author: Jan Beulich <jbeulich@suse.com>
> >> Date:   Thu Jan 22 14:13:35 2026 +0100
> >>
> >>     x86/HPET: drop .set_affinity hook
> >=20
> > Looking into this, I find several things I can't quite understand (yet).
> > First there is
> >=20
> > (XEN) [000000456c0fe39f] Disabling HPET for being unreliable
> >=20
> > which looks to only affect clocksource selection, but not use as
> > broadcast source for CPU-idle management. (This may be an independent
> > issue.)
> >=20
> > Then there is
> >=20
> > (XEN) [    2.760248] HPET: 8 timers usable for broadcast (8 total)
> >=20
> > which should only occur on ARAT-incapable systems. That should only be
> > older hardware. (On my much older Skylake I don't see this line, for
> > example.) What does CPUID leaf 6 have on this system? Sadly xen-cpuid
> > is purely featureset based, and hence doesn't expose info about that
> > leaf. The leaf also isn't exposed to domains, so CPUID output in Dom0
> > isn't useful to look at either. It would need to be CPUID output on a
> > bare metal kernel.
> >=20
> > Further I suspect the fingered commit may only have uncovered an issue
> > elsewhere. I don't think we clear any context table entries during
> > suspend or resume. Hence in
> >=20
> > (XEN) [   20.554813] [VT-D]DMAR:[DMA Write] Request device [0000:00:1e.=
6] fault addr 0
> > (XEN) [   20.554819] [VT-D]DMAR: reason 02 - Present bit in context ent=
ry is clear
> >=20
> > the latter message is confusing me.
> >=20
> > The fault address being zero may, otoh, be a hint of hpet_msi_write()
> > never having run post-resume. Which may be the connection to the
> > dropping of hpet_msi_set_affinity(), as that did call that function.
>=20
> There clearly is an issue with the handling of the max_cstate variable,
> but I expect you don't use xenpm to limit usable C-states (there clearly
> is no respective command line option in the log you referenced)?

No, I don't think so.

> From what the log has, I conclude hpet_broadcast_resume() is called.

I don't think so... I applied changes as attached and got this on
resume:

(XEN) [   69.486120] Enabling non-boot CPUs  ...
(XEN) [   69.486404] mwait-idle: state C1 is disabled
(XEN) [   69.587869] mwait-idle: state C1 is disabled
(XEN) [   69.588008] mwait-idle: state C1 is disabled
(XEN) [   69.689438] mwait-idle: state C1 is disabled
(XEN) [   69.689608] mwait-idle: state C1 is disabled
(XEN) [   69.791066] mwait-idle: state C1 is disabled
(XEN) [   69.791334] mwait-idle: state C1 is disabled
(XEN) [   69.892938] mwait-idle: state C1 is disabled
(XEN) [   69.893209] mwait-idle: state C1 is disabled
(XEN) [   69.994890] mwait-idle: state C1 is disabled
(XEN) [   69.995096] mwait-idle: state C1 is disabled
(XEN) [   70.096638] mwait-idle: state C1 is disabled
(XEN) [   70.096915] mwait-idle: state C1 is disabled
(XEN) [   70.097093] mwait-idle: state C1 is disabled
(XEN) [   70.097272] mwait-idle: state C1 is disabled
(XEN) [   70.203357] [VT-D]DMAR:[DMA Write] Request device [0000:00:1e.6] f=
ault addr 0
(XEN) [   70.203363] [VT-D]DMAR: reason 02 - Present bit in context entry i=
s clear

> Question is whether it does what we want it to. Could you instrument it
> some, so we have confirmation that it is called, and we also know whether
> __hpet_setup_msi_irq() is not only called on all 8 channels, but also
> succeeds there? (If it failed, I suppose we better wouldn't set
> HPET_TN_FSB and/or HPET_TN_ENABLE.) If, however, it succeeds, I couldn't
> explain why the fault address would be reported as 0, as then we
> definitely must have written HPET_Tn_ROUTE.
>=20
> Jan

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

--ArA7zpzUrS2vfZ23
Content-Type: text/plain; charset=utf-8
Content-Disposition: attachment; filename=xen-debug.diff
Content-Transfer-Encoding: quoted-printable

diff --git a/xen/arch/x86/hpet.c b/xen/arch/x86/hpet.c
index 1ea8ae457424..4c5bf079b728 100644
--- a/xen/arch/x86/hpet.c
+++ b/xen/arch/x86/hpet.c
@@ -658,6 +658,8 @@ void hpet_broadcast_resume(void)
     u32 cfg;
     unsigned int i, n;
=20
+    printk("%s:%d: hpet_events: %p\n", __func__, __LINE__, hpet_events);
+
     if ( !hpet_events )
         return;
=20
@@ -667,23 +669,30 @@ void hpet_broadcast_resume(void)
=20
     if ( num_hpets_used > 0 )
     {
+        printk("%s:%d: num_hpets_used: %d\n", __func__, __LINE__, num_hpet=
s_used);
         /* Stop HPET legacy interrupts */
         cfg &=3D ~HPET_CFG_LEGACY;
         n =3D num_hpets_used;
     }
     else if ( hpet_events->flags & HPET_EVT_DISABLE )
+    {
+        printk("%s:%d: hpet_events->flags: %#x\n", __func__, __LINE__, hpe=
t_events->flags);
         return;
+    }
     else
     {
         /* Start HPET legacy interrupts */
+        printk("%s:%d\n", __func__, __LINE__);
         cfg |=3D HPET_CFG_LEGACY;
         n =3D 1;
     }
=20
+    printk("%s:%d: cfg: %#x\n", __func__, __LINE__, cfg);
     hpet_write32(cfg, HPET_CFG);
=20
     for ( i =3D 0; i < n; i++ )
     {
+        printk("%s:%d: i:%d, hpet_events[i].msi.irq: %d, hpet_events[i].fl=
ags: %#x\n", __func__, __LINE__, i, hpet_events[i].msi.irq, hpet_events[i].=
flags);
         if ( hpet_events[i].msi.irq >=3D 0 )
             __hpet_setup_msi_irq(irq_to_desc(hpet_events[i].msi.irq));
=20
@@ -694,6 +703,7 @@ void hpet_broadcast_resume(void)
         if ( !(hpet_events[i].flags & HPET_EVT_LEGACY) )
             cfg |=3D HPET_TN_FSB;
         hpet_write32(cfg, HPET_Tn_CFG(hpet_events[i].idx));
+        printk("%s:%d: i:%d, cfg: %#x\n", __func__, __LINE__, i, cfg);
=20
         hpet_events[i].next_event =3D STIME_MAX;
     }
diff --git a/xen/arch/x86/time.c b/xen/arch/x86/time.c
index fed30a919d2c..15113ebdfb6c 100644
--- a/xen/arch/x86/time.c
+++ b/xen/arch/x86/time.c
@@ -2646,6 +2646,7 @@ static int _disable_pit_irq(bool init)
 {
     int ret =3D 1;
=20
+    printk("%s:%d: using_pit: %d, cpu_has_apic: %d\n", __func__, __LINE__,=
 using_pit, cpu_has_apic);
     if ( using_pit || !cpu_has_apic )
         return -1;
=20
@@ -2655,8 +2656,10 @@ static int _disable_pit_irq(bool init)
      * XXX dom0 may rely on RTC interrupt delivery, so only enable
      * hpet_broadcast if FSB mode available or if force_hpet_broadcast.
      */
+    printk("%s:%d: cpuidle_using_deep_cstate: %d, boot_cpu_has(X86_FEATURE=
_XEN_ARAT): %d\n", __func__, __LINE__, cpuidle_using_deep_cstate(), boot_cp=
u_has(X86_FEATURE_XEN_ARAT));
     if ( cpuidle_using_deep_cstate() && !boot_cpu_has(X86_FEATURE_XEN_ARAT=
) )
     {
+        printk("%s:%d: init: %d\n", __func__, __LINE__, init);
         init ? hpet_broadcast_init() : hpet_broadcast_resume();
         if ( !hpet_broadcast_is_available() )
         {

--ArA7zpzUrS2vfZ23--

--C5W4Ug/2V60Qa5F1
Content-Type: application/pgp-signature; name=signature.asc

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

iQEzBAEBCAAdFiEEhrpukzGPukRmQqkK24/THMrX1ywFAmnNp4kACgkQ24/THMrX
1ywHdAf8CsgOaRYooAk/aXo7Z4hncTLEcBBOwXYH419N+fqvycjl8MM+NPyQW8aS
FbckFM6z/Q/nAKQ3bj+PvGEY/sADvKMrVvzYyY7kwMXMrWU+xgibJsX0hdP6RrU3
sS7uLPEzwfGBd70OKn+RtCZgWsKr8y1sRiMyXrkcW03gOm7i2cOoZfWLL4KSGPjU
r86zyD7IhrKyCFwerhvBCKd4hheMPUGlmG0Z3LKPfqiJZmzyTBCgB0i1p/AZBS40
ctVa3BRKADhkhrP+nojy0Jz2LG1XVvB8ol7y/9cS+D55z5KhieILsIx7PUcMUwSW
x73jvWolOGkoCD7uRIQbR1fN8EsPMg==
=YQri
-----END PGP SIGNATURE-----

--C5W4Ug/2V60Qa5F1--


From xen-devel-bounces@lists.xenproject.org Thu Apr 02 02:31:18 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 02 Apr 2026 02:31:18 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1270964.1559336 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1w87pk-0004X6-6T; Thu, 02 Apr 2026 02:31:00 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1270964.1559336; Thu, 02 Apr 2026 02: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 1w87pk-0004Wx-1b; Thu, 02 Apr 2026 02:31:00 +0000
Received: by outflank-mailman (input) for mailman id 1270964;
 Thu, 02 Apr 2026 02:30:58 +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 1w87pi-0004Wr-UF
 for xen-devel@lists.xenproject.org; Thu, 02 Apr 2026 02:30:58 +0000
Received: from xenbits.xenproject.org ([104.239.192.120])
 by mail.xenproject.org with esmtp (Exim 4.96)
 (envelope-from <julien@xen.org>) id 1w87pi-005Z3a-25;
 Thu, 02 Apr 2026 02:30:58 +0000
Received: from [2001:268:9abd:66c7:b99f:63d7:98fa:3237]
 by xenbits.xenproject.org with esmtpsa (TLS1.3) tls
 TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (Exim 4.96)
 (envelope-from <julien@xen.org>) id 1w87pi-00EOeS-0n;
 Thu, 02 Apr 2026 02:30: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>
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=XNBeaCFJnRrOzCHOlR24NIMb8hWks2v97D7twN+FcCI=; b=zSe6pZOGM/HocuH/i49FXELydD
	ZT7rN1QxUXae4V7vGTVkhcO4NXOadMF8FWSCO9nig3xqTH7ZhkrE7bH9lxtg3eNqZuqN+qHweKOKD
	Gw8oeGi76QATzjBYM/M4o34ZV7vmG6IhIDEP6/slcyFTq4zzP1wDRXl+W3QUjK9KaOFo=;
Message-ID: <e1a380cd-e1ec-4b24-ad04-29e6795cf6d5@xen.org>
Date: Thu, 2 Apr 2026 03:30:50 +0100
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH 1/3] xen/arm: acpi: Rename local acpi_size to avoid
 shadowing typedef
Content-Language: en-GB
To: Michal Orzel <michal.orzel@amd.com>, xen-devel@lists.xenproject.org
Cc: Stefano Stabellini <sstabellini@kernel.org>,
 Bertrand Marquis <bertrand.marquis@arm.com>,
 Volodymyr Babchuk <Volodymyr_Babchuk@epam.com>
References: <20260401145816.169557-1-michal.orzel@amd.com>
 <20260401145816.169557-2-michal.orzel@amd.com>
From: Julien Grall <julien@xen.org>
In-Reply-To: <20260401145816.169557-2-michal.orzel@amd.com>
Content-Type: text/plain; charset=UTF-8; format=flowed
Content-Transfer-Encoding: 7bit

Hi Michal,

On 01/04/2026 15:58, Michal Orzel wrote:
> Rename the local variable acpi_size to acpi_len in
> estimate_acpi_efi_size() to avoid shadowing the acpi_size typedef
> from xen/include/acpi/actypes.h.

We can't change actypes.h but I wish they were suffixing the types with _t.

> 
> This resolves a MISRA C Rule 5.6 violation.
> 
> Signed-off-by: Michal Orzel <michal.orzel@amd.com>

Acked-by: Julien Grall <julien@xen.org>

Cheers,

-- 
Julien Grall



From xen-devel-bounces@lists.xenproject.org Thu Apr 02 02:32:42 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 02 Apr 2026 02:32:42 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1270972.1559345 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1w87rN-00051K-EQ; Thu, 02 Apr 2026 02:32:41 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1270972.1559345; Thu, 02 Apr 2026 02:32: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 1w87rN-00051D-BN; Thu, 02 Apr 2026 02:32:41 +0000
Received: by outflank-mailman (input) for mailman id 1270972;
 Thu, 02 Apr 2026 02:32:40 +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 1w87rM-000515-RX
 for xen-devel@lists.xenproject.org; Thu, 02 Apr 2026 02:32:40 +0000
Received: from xenbits.xenproject.org ([104.239.192.120])
 by mail.xenproject.org with esmtp (Exim 4.96)
 (envelope-from <julien@xen.org>) id 1w87rM-005Z5t-25;
 Thu, 02 Apr 2026 02:32:40 +0000
Received: from [2001:268:9abd:66c7:b99f:63d7:98fa:3237]
 by xenbits.xenproject.org with esmtpsa (TLS1.3) tls
 TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (Exim 4.96)
 (envelope-from <julien@xen.org>) id 1w87rM-00EOhr-1N;
 Thu, 02 Apr 2026 02:32: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=xen.org;
	s=20200302mail; h=Content-Transfer-Encoding:Content-Type:In-Reply-To:From:
	References:Cc:To:Subject:MIME-Version:Date:Message-ID;
	bh=jk79Nf5qcm4Ba3ail7gIn9YqUlOCJh8bmnbe6pvjWUM=; b=gfMBch6uOjwqnK4jfPitlrzw/O
	e2wLIeTdkI1dTRtufTCALd8FbjEPuRqyrEIo1KWYvPk+3aohU2gs2PQXP6rT5p6XU0fUGkIUGdPNF
	Efk/7slVsW6JQhS2eb8sZg9rKKv59LJBz6yyOsEKnLLg86dzEyo3xr9XxLuWH/oEB7eU=;
Message-ID: <021a8ae4-f29f-4eb9-9f62-25eae32b4ad6@xen.org>
Date: Thu, 2 Apr 2026 11:32:30 +0900
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH 2/3] xen/arm: pci: Narrow scope of file-local symbols
Content-Language: en-GB
To: Michal Orzel <michal.orzel@amd.com>, xen-devel@lists.xenproject.org
Cc: Stefano Stabellini <sstabellini@kernel.org>,
 Bertrand Marquis <bertrand.marquis@arm.com>,
 Volodymyr Babchuk <Volodymyr_Babchuk@epam.com>,
 Mykyta Poturai <mykyta_poturai@epam.com>
References: <20260401145816.169557-1-michal.orzel@amd.com>
 <20260401145816.169557-3-michal.orzel@amd.com>
From: Julien Grall <julien@xen.org>
In-Reply-To: <20260401145816.169557-3-michal.orzel@amd.com>
Content-Type: text/plain; charset=UTF-8; format=flowed
Content-Transfer-Encoding: 7bit

Hi Michal,

On 01/04/2026 15:58, Michal Orzel wrote:
> Make pci_alloc_host_bridge() and pci_add_host_bridge() in
> pci-host-common.c, rcar4_pcie_ops and rcar4_pcie_child_ops in
> pci-host-rcar4.c, and nwl_pcie_ops in pci-host-zynqmp.c static, as
> they are only used within their respective translation units.
> 
> Also include pci-host-rcar4.h in pci-host-rcar4.c so that the
> declarations of its externally visible functions are visible at the
> point of definition.
> 
> This resolves MISRA C Rule 8.4 violations.
> 
> Signed-off-by: Michal Orzel <michal.orzel@amd.com>

Acked-by: Julien Grall <julien@xen.org>

Cheers,

-- 
Julien Grall



From xen-devel-bounces@lists.xenproject.org Thu Apr 02 02:44:21 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 02 Apr 2026 02:44:21 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1270990.1559354 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1w882a-0006m0-G4; Thu, 02 Apr 2026 02:44:16 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1270990.1559354; Thu, 02 Apr 2026 02: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 1w882a-0006ls-B6; Thu, 02 Apr 2026 02:44:16 +0000
Received: by outflank-mailman (input) for mailman id 1270990;
 Thu, 02 Apr 2026 02:44:15 +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 1w882Z-0006lm-EJ
 for xen-devel@lists.xenproject.org; Thu, 02 Apr 2026 02:44:15 +0000
Received: from xenbits.xenproject.org ([104.239.192.120])
 by mail.xenproject.org with esmtp (Exim 4.96)
 (envelope-from <julien@xen.org>) id 1w882Z-005ZI7-0U;
 Thu, 02 Apr 2026 02:44:14 +0000
Received: from [2001:268:9abd:66c7:b99f:63d7:98fa:3237]
 by xenbits.xenproject.org with esmtpsa (TLS1.3) tls
 TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (Exim 4.96)
 (envelope-from <julien@xen.org>) id 1w882Y-00EPXS-2a;
 Thu, 02 Apr 2026 02:44: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>
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=z0GW4RDS24EFGZmnCHWhCEF0cYKZ1yETgAEawsy0IjE=; b=l6esDJ0iIVUXBCJie4xRO/JGQv
	MefY3xQ6aYMCaAI7uVJZTi8MIxM9oX+OkZUX2Kh7lAhF3SabeqgrnCjA1wP4DCvnT5d8T3y/2JhV3
	Lk4daPDv71Ju4TrH0MeIAivaDexQSAONWXOwTJlhmM4XCVXlbS52vx1RO97LKbuZXC5o=;
Message-ID: <e21642ec-ad45-4a61-8482-768ee666f438@xen.org>
Date: Thu, 2 Apr 2026 11:44:04 +0900
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH 3/3] xen/arm: vpci: Move content of xen/arch/arm/vpci.h to
 arch header
Content-Language: en-GB
To: Michal Orzel <michal.orzel@amd.com>, xen-devel@lists.xenproject.org
Cc: Stefano Stabellini <sstabellini@kernel.org>,
 Bertrand Marquis <bertrand.marquis@arm.com>,
 Volodymyr Babchuk <Volodymyr_Babchuk@epam.com>
References: <20260401145816.169557-1-michal.orzel@amd.com>
 <20260401145816.169557-4-michal.orzel@amd.com>
From: Julien Grall <julien@xen.org>
In-Reply-To: <20260401145816.169557-4-michal.orzel@amd.com>
Content-Type: text/plain; charset=UTF-8; format=flowed
Content-Transfer-Encoding: 7bit

Hi Michal,

On 01/04/2026 15:58, Michal Orzel wrote:
> Move domain_vpci_init() and domain_vpci_get_num_mmio_handlers()
> declarations from the private xen/arch/arm/vpci.h into the public
> xen/arch/arm/include/asm/vpci.h, and remove the now redundant
> private header.

Can you provide a brief explanation why we don't couldn't include 
"vpci.h" from "arch/arm/vpci.c"? Such approach would ...

> 
> Update domain.c to include <asm/vpci.h> instead of the removed private
> header.
> 
> This ensures the declarations are visible where the functions are
> defined, resolving a MISRA C Rule 8.4 violation.
> 
> Signed-off-by: Michal Orzel <michal.orzel@amd.com>
> ---
> I'm moving a file with GPL2+ license to a file with GPL2-only. I consider this
> ok in this case becase the copyright on a file with just prototypes does not
> make any sense and a license text was most likely blindly copy-pasted like for
> most of the files in that era.

... avoid the licensing discussion. I am in the opinion that it is ok to 
move from GPLv2+ to GPLv2 because the license says "either version 2 of 
the License, or (at your option) any later version". But I remember not 
everyone agrees on this interpretation and we never solved the 
discussion on whether we need to request permission from the original 
copyright holder.

Alternatively, I see this file was only modified by two companies (EPAM 
and Arm). I see one employee of each company are already CCed. So you 
could confirm with them if the change is fine.

Cheers,

-- 
Julien Grall



From xen-devel-bounces@lists.xenproject.org Thu Apr 02 03:31:50 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 02 Apr 2026 03:31:50 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1271020.1559363 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1w88mO-0004oR-U3; Thu, 02 Apr 2026 03:31:36 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1271020.1559363; Thu, 02 Apr 2026 03: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 1w88mO-0004oK-Qv; Thu, 02 Apr 2026 03:31:36 +0000
Received: by outflank-mailman (input) for mailman id 1271020;
 Thu, 02 Apr 2026 03:31:35 +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 1w88mN-0004oE-4e
 for xen-devel@lists.xenproject.org; Thu, 02 Apr 2026 03:31:35 +0000
Received: from xenbits.xenproject.org ([104.239.192.120])
 by mail.xenproject.org with esmtp (Exim 4.96)
 (envelope-from <julien@xen.org>) id 1w88mM-005aBa-1q;
 Thu, 02 Apr 2026 03:31:34 +0000
Received: from [2001:268:9abd:66c7:b99f:63d7:98fa:3237]
 by xenbits.xenproject.org with esmtpsa (TLS1.3) tls
 TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (Exim 4.96)
 (envelope-from <julien@xen.org>) id 1w88mL-00ERXg-0f;
 Thu, 02 Apr 2026 03:31: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>
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=txgbhLlqWf03T/qCGMgtK8VOthSG10CY10iyPb0O4Os=; b=c6pfJbXuGOBqlEzcfUAT1H9FK0
	knpzRG85M1sVJFuPX5C8tnf3vAlWv+HiPsBIZHTTPNun5piUfFEekjWaEOFSRrxMD3QmUexDKm5uq
	GZ6GCxV6FMtqCGiD85uOgG+Q6w93OHUttLnNMNtL0YNqDP9WBhyFqlSJ8gMfxdX8w1Hg=;
Message-ID: <97c56309-1bbf-471b-88c4-d13af3867f95@xen.org>
Date: Thu, 2 Apr 2026 12:31:22 +0900
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH 2/2] make ioremap_wc() x86 only (for the time being)
Content-Language: en-GB
To: Oleksii Kurochko <oleksii.kurochko@gmail.com>,
 Jan Beulich <jbeulich@suse.com>,
 "xen-devel@lists.xenproject.org" <xen-devel@lists.xenproject.org>
Cc: Stefano Stabellini <sstabellini@kernel.org>,
 Anthony PERARD <anthony.perard@vates.tech>,
 Michal Orzel <michal.orzel@amd.com>,
 Alistair Francis <alistair.francis@wdc.com>,
 Connor Davis <connojdavis@gmail.com>,
 Bertrand Marquis <bertrand.marquis@arm.com>
References: <924f3ef2-7883-4322-a921-edc814c96719@suse.com>
 <20adacfa-06ce-4508-916d-f15d8f17788f@suse.com>
 <3bf90b33-c028-4f45-bda0-9d1bd5386c02@gmail.com>
 <6fa82fcc-d21d-476d-b020-fc40a645a74c@gmail.com>
From: Julien Grall <julien@xen.org>
In-Reply-To: <6fa82fcc-d21d-476d-b020-fc40a645a74c@gmail.com>
Content-Type: text/plain; charset=UTF-8; format=flowed
Content-Transfer-Encoding: 7bit

Hi Oleksii,

On 30/03/2026 15:24, Oleksii Kurochko wrote:
> 
> 
> On 3/30/26 4:22 PM, Oleksii Kurochko wrote:
>>
>>
>> On 2/19/26 4:53 PM, Jan Beulich wrote:
>>> Its use in domain building is questionable: Already at the point both 
>>> uses
>>> were introduced, ioremap_cache() existed. I can't see why kernel and
>>> initrd would need mapping WC, when at the same time other similar 
>>> mappings
>>> (in common/device-tree/) are done WB.
>>>
>>> With those uses replaced, neither Arm nor RISC-V have a need for the
>>> function anymore.
>>>
>>
>> It is okay for RISC-V, but for Arm, IIRC, likely it was done because 
>> guest might start with cache disabled and PAGE_HYPERVISOR_WC on Arm 
>> uses "Normal Non-cacheable" what could lead to that guest won't see 
>> some part of kernel and/or initrd as it could be in a cache and won't 
>> be flushed to RAM.
>>
>> But probably I misremembered something and 
>> clean_and_invalidate_dcache_va_range() or something similar should be 
>> called before guest is laucned.
> 
> okay, so for this case copy_to_guest_phys_flush_dcache() is called after 
> initrd and kernel are loaded.

Looking at the code, we are using ioremap_wc() on the source side rather 
than the destination. So the use of copy_to_guest_phys_flush_cache() 
would not matter as this only applies to the destination.

Regarding the source side, the cache only guarantees coherency when either:
   * the memory attributes are similar between the component that loaded 
it (most likely the firmware) and Xen
   * The component that loaded it issued a cache flush

I saw Jan mentioned that other part of the device-tree code are using 
ioremap_cache(). They were adding afterwards and I can't remember why we 
consisder it was ok. For older mapping we would be switching from a 
non-cacheable mapping (HYPERVISOR_WC) to a cacheable one (HYPERVISOR).

While I agree we should have some consistency in the mappings, I am a 
bit unease to change the attributes without any written details on why 
there will not be any impact. Can you share more details?

I would also be ok if we decide to keep ioremap_wc() for arm as well.

Cheers,

-- 
Julien Grall



From xen-devel-bounces@lists.xenproject.org Thu Apr 02 06:01:04 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 02 Apr 2026 06:01:04 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1271072.1559372 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1w8B6p-0006AT-5L; Thu, 02 Apr 2026 06:00:51 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1271072.1559372; Thu, 02 Apr 2026 06:00: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 1w8B6p-0006AM-2G; Thu, 02 Apr 2026 06:00:51 +0000
Received: by outflank-mailman (input) for mailman id 1271072;
 Thu, 02 Apr 2026 06:00:49 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <jbeulich@suse.com>) id 1w8B6n-0006AG-EK
 for xen-devel@lists.xenproject.org; Thu, 02 Apr 2026 06:00:49 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1w8B6m-008rsg-IM
 for xen-devel@lists.xenproject.org; Thu, 02 Apr 2026 08:00:48 +0200
Received: from [10.42.69.8] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <jbeulich@suse.com>)
 id 69ce060d-e002-0a2a0a5209dd-0a2a45088202-8
 for <xen-devel@lists.xenproject.org>; Thu, 02 Apr 2026 08:00:48 +0200
Received: from [209.85.221.50] (helo=mail-wr1-f50.google.com)
 by tlsNG-c1860d.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.0)
 (envelope-from <jbeulich@suse.com>)
 id 69ce0610-fab6-0a2a45080019-d155dd32e0ea-3
 for <xen-devel@lists.xenproject.org>; Thu, 02 Apr 2026 08:00:48 +0200
Received: by mail-wr1-f50.google.com with SMTP id
 ffacd0b85a97d-43d0deb7ad5so451053f8f.2
 for <xen-devel@lists.xenproject.org>; Wed, 01 Apr 2026 23:00:48 -0700 (PDT)
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-43d1e2a6f5bsm5101239f8f.7.2026.04.01.23.00.47
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Wed, 01 Apr 2026 23:00:47 -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=google header.d=suse.com header.i="@suse.com" header.h="Content-Transfer-Encoding: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=1775109648; x=1775714448; darn=lists.xenproject.org;
        h=content-transfer-encoding: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;
        bh=yaf0L/aba7KFXbNtMvWN19EjHOGvOBBMQ+U+ojOOcWE=;
        b=PGR/5hECkMQ1lKD+eDmTfWSgsdqOWOzqVNULRlFYUZoG8tv7MScdtID32vjL3e3A1z
         K1jQlwYNxoB2gYIlvfkgYAXtC1ziJMMckiDmjpCbaz+7eQsTyskbiiWWw69BadptuAgP
         UFCYuGSvremUnIF4BMc1GA5rvTRYJ1n/02lpaYoyOq1fP4sUbt+s/OARiI0Ns8ZzDtYc
         LUatVSZj1PhzUFAzSADbJplGIYKX+ow3/SCMxA02UXK4+y0V7lCd7WPoAByyWXk1/P2o
         ipRGVv5gG/j6n4kPcVsdMYjD/XQrL8BdXh+6F2QUrQQODVQi0j7kPUmAZ+3apd9TREe+
         5ZsA==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20251104; t=1775109648; x=1775714448;
        h=content-transfer-encoding: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;
        bh=yaf0L/aba7KFXbNtMvWN19EjHOGvOBBMQ+U+ojOOcWE=;
        b=a31eKQj1rLZ50eCsE+mdiRVk7h07bQPz+XgJlvYmkuMhly3hko0JpWgMG1wtcUpfi6
         8rtT6xx/BHCea4tomc7n8iqx/m9vDGGXKynuPZhe2l3BSPfVxxfv+o4W6VFwe/YhZG/S
         4EyuP+ApB9Il8QqAWZHRpJgSls9Tid1v0k2Jc1rXHCxZ2jyvccVF/uQDTrK1A0vdXLEo
         b8p8C3m2+DXYIcP/5pfJ111M5km88PYawe1+AujXWJc9AFXP43IBt3rVr3uU73jbgK9K
         UDHIgwTzq3Wlu7nzkvY6zbnIVroggfjruhZjKM9GOgxGPrlU4bNfJltySTHze9DaQkxR
         pC/A==
X-Forwarded-Encrypted: i=1; AJvYcCU+/gd10STEjKKx15c9ev4QWUCk8jBnHSkJ9tEdrM9+xXdHx8iCX0e7eBFWNQMTp0nR6qcgp2xnTk4=@lists.xenproject.org
X-Gm-Message-State: AOJu0YxN1AkSievcRETS7nVCNn7Q83TwhVAracIm/OjMQwTmFfmtLQ0Q
	PbcUiIxFiufaRR+FTNvHaMmBM4miGfF0KwvML4Tyr1VcKQZRioVjFXNlrunSL4rLQw==
X-Gm-Gg: ATEYQzzHdaeVZvGkcJN9LCSsA8g2Mxdsc0U9pW6TWX1icKwUnFrIZMTPrf7Wu+p66vm
	faRyOZEpvEogVWxJ14/KJEUyUxhAycd4GjJOJo/Lx2iTuWSlxmE9WBTp8KJNWgHG3LnkvGiU0Ng
	fXUwZULvDSfFMK0enNb9bF5uEvqSbbv5tg10rE+79Sf7zeGijji/YGStgZrKCL/lY3Kxr0pwnli
	gQLxxSDfifrfAfZYhyYyl/LQ9rwdF3gPdr+mrHuPjyNnytU6UT+beoaXjqutDFfWQRVc7jvh3vy
	JPe8/mtjksatVFsZlUVqEG60WNrhvBpsuOYd11HfhzSbilcMeMCaV45KNKH+fCqirqfJzuy1Zdz
	MVerzKGJBXF0IEL27tJjOQQ/zsfW9NEKCmb66dBZpM/ICGa/oZNvlM/xSmUD1W34MKIZEA+Kpb1
	bBaLIHWxLAIX3z0s9LChPLNIs0ToCt7lXFBolFVTVhIiv5xpMoBFS7Fk9JTXvrHrM17jXfBmN6l
	tNZcM9W8Em1zcE=
X-Received: by 2002:a5d:5f86:0:b0:437:75c1:5777 with SMTP id ffacd0b85a97d-43d1507b692mr11678625f8f.16.1775109647701;
        Wed, 01 Apr 2026 23:00:47 -0700 (PDT)
Message-ID: <51916e05-6b41-4fc6-8cce-57b580f17aea@suse.com>
Date: Thu, 2 Apr 2026 08:00:46 +0200
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH 2/2] make ioremap_wc() x86 only (for the time being)
To: Julien Grall <julien@xen.org>
Cc: Stefano Stabellini <sstabellini@kernel.org>,
 Anthony PERARD <anthony.perard@vates.tech>,
 Michal Orzel <michal.orzel@amd.com>,
 Alistair Francis <alistair.francis@wdc.com>,
 Connor Davis <connojdavis@gmail.com>,
 Oleksii Kurochko <oleksii.kurochko@gmail.com>,
 "xen-devel@lists.xenproject.org" <xen-devel@lists.xenproject.org>,
 Bertrand Marquis <bertrand.marquis@arm.com>
References: <924f3ef2-7883-4322-a921-edc814c96719@suse.com>
 <20adacfa-06ce-4508-916d-f15d8f17788f@suse.com>
 <3bf90b33-c028-4f45-bda0-9d1bd5386c02@gmail.com>
 <6fa82fcc-d21d-476d-b020-fc40a645a74c@gmail.com>
 <97c56309-1bbf-471b-88c4-d13af3867f95@xen.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: <97c56309-1bbf-471b-88c4-d13af3867f95@xen.org>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 7bit
X-purgate-ID: tlsNG-c1860d/1775109648-75159497-32347FC1/0/0
X-purgate-type: clean
X-purgate-size: 3282

On 02.04.2026 05:31, Julien Grall wrote:
> Hi Oleksii,
> 
> On 30/03/2026 15:24, Oleksii Kurochko wrote:
>>
>>
>> On 3/30/26 4:22 PM, Oleksii Kurochko wrote:
>>>
>>>
>>> On 2/19/26 4:53 PM, Jan Beulich wrote:
>>>> Its use in domain building is questionable: Already at the point both 
>>>> uses
>>>> were introduced, ioremap_cache() existed. I can't see why kernel and
>>>> initrd would need mapping WC, when at the same time other similar 
>>>> mappings
>>>> (in common/device-tree/) are done WB.
>>>>
>>>> With those uses replaced, neither Arm nor RISC-V have a need for the
>>>> function anymore.
>>>>
>>>
>>> It is okay for RISC-V, but for Arm, IIRC, likely it was done because 
>>> guest might start with cache disabled and PAGE_HYPERVISOR_WC on Arm 
>>> uses "Normal Non-cacheable" what could lead to that guest won't see 
>>> some part of kernel and/or initrd as it could be in a cache and won't 
>>> be flushed to RAM.
>>>
>>> But probably I misremembered something and 
>>> clean_and_invalidate_dcache_va_range() or something similar should be 
>>> called before guest is laucned.
>>
>> okay, so for this case copy_to_guest_phys_flush_dcache() is called after 
>> initrd and kernel are loaded.
> 
> Looking at the code, we are using ioremap_wc() on the source side rather 
> than the destination. So the use of copy_to_guest_phys_flush_cache() 
> would not matter as this only applies to the destination.
> 
> Regarding the source side, the cache only guarantees coherency when either:
>    * the memory attributes are similar between the component that loaded 
> it (most likely the firmware) and Xen
>    * The component that loaded it issued a cache flush
> 
> I saw Jan mentioned that other part of the device-tree code are using 
> ioremap_cache(). They were adding afterwards and I can't remember why we 
> consisder it was ok.

This sounds like you think it isn't okay.

> For older mapping we would be switching from a 
> non-cacheable mapping (HYPERVISOR_WC) to a cacheable one (HYPERVISOR).

Whereas this sounds like you think switching everything to WB (or whatever
the correct term on Arm) would be okay. IOW - I'm confused, and hence I'm
...

> While I agree we should have some consistency in the mappings, I am a 
> bit unease to change the attributes without any written details on why 
> there will not be any impact.

... also unclear as to whether this actually is an objection to the Arm
part of the change (incl patch 1). Please clarify.

As to written details: Mappings of ordinary RAM shouldn't need any extra
documentation when done WB. Any non-standard mappings (like WC) should
instead have comments. The absence of such comments indicates to me that
at the time the "best thing thought to be available" was used, i.e. WC
preferred over UC (which plain ioremap() would have used). Additionally,
the use of ioremap_wc() from initrd_load() (not Arm-specific) pretty
clearly isn't appropriate for RISC-V, aiui.

That said, using ioremap*() for RAM feels bogus in the first place. At
the time vmap() didn't exist yet, so it may have been appropriate. If
there are reasons not to use it here, perhaps something like Linux'es
memremap() should long have been introduced?

Jan


From xen-devel-bounces@lists.xenproject.org Thu Apr 02 06:09:24 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 02 Apr 2026 06:09:24 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1271086.1559381 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1w8BF1-0006nO-UI; Thu, 02 Apr 2026 06:09:19 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1271086.1559381; Thu, 02 Apr 2026 06:09: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 1w8BF1-0006nH-Qb; Thu, 02 Apr 2026 06:09:19 +0000
Received: by outflank-mailman (input) for mailman id 1271086;
 Thu, 02 Apr 2026 06:09:19 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <jbeulich@suse.com>) id 1w8BF1-0006nB-51
 for xen-devel@lists.xenproject.org; Thu, 02 Apr 2026 06:09:19 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1w8BF0-008t0F-Hl
 for xen-devel@lists.xenproject.org; Thu, 02 Apr 2026 08:09:18 +0200
Received: from [10.42.69.10] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <jbeulich@suse.com>)
 id 69ce0806-5cb7-0a2a0a5109dd-0a2a450aea0e-18
 for <xen-devel@lists.xenproject.org>; Thu, 02 Apr 2026 08:09:18 +0200
Received: from [209.85.128.43] (helo=mail-wm1-f43.google.com)
 by tlsNG-4011c0.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.0)
 (envelope-from <jbeulich@suse.com>)
 id 69ce080e-ee98-0a2a450a0019-d155802bb881-3
 for <xen-devel@lists.xenproject.org>; Thu, 02 Apr 2026 08:09:18 +0200
Received: by mail-wm1-f43.google.com with SMTP id
 5b1f17b1804b1-48891776099so2070785e9.2
 for <xen-devel@lists.xenproject.org>; Wed, 01 Apr 2026 23:09:18 -0700 (PDT)
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-43d1e2c60a2sm5214493f8f.10.2026.04.01.23.09.17
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Wed, 01 Apr 2026 23:09:17 -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=google header.d=suse.com header.i="@suse.com" header.h="Content-Transfer-Encoding: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=1775110158; x=1775714958; darn=lists.xenproject.org;
        h=content-transfer-encoding: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;
        bh=wvcurm6D7Kk9ztMyZ9pmbclUAnFvWsUBR6b0jGFOz3M=;
        b=AUIQQIqus3HHDEB1hqUhwmGoihc37TfM3xIJ4Si3WhsAgcb/YbCKJR3n6JlvZnkj83
         rJ9ufpYrVCcAriLNSkjohGS5is50MVvIwhEQy/EfEhvaT+yy2UcVRcwkkGqgPsVRigFZ
         tHWZaZ8P/kFgTU6Gg2rDQrsbn2KF3Zwz/yiE1GgzPteSHXIWX/q7zIFmkUwYgcMwKizK
         OAt/vQMJz9ZbOd/muZFHij9lT0WT/G3m4XSK8kOFQ+kn82UOKWZ0H7TRtjGqOY4pg5e5
         Dr0CfXg43JeE0IIwvaO6jdPYiyLXpHqnBoRXkh4Sd5EAaVdUdD+1p6+iozx8a7xqSh9J
         AZZA==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20251104; t=1775110158; x=1775714958;
        h=content-transfer-encoding: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;
        bh=wvcurm6D7Kk9ztMyZ9pmbclUAnFvWsUBR6b0jGFOz3M=;
        b=AYKp6oL0OgWeiHLA4k8nMXSYj3+t5iFz71lXcyztdvipd4OhF7zDFhj2iteaYD4T72
         qhm8PXUiUgORGV4l6mgBFevYXUNUlGQl4/RH9JLBmhlAI9mvgKLJjB9QBQQ00OL6Th6j
         RRnkL6jtUzukW2dSb+3Mgs9BakO347MegTNdx3INMqBhJ7+qpvseV9FzEO3+JDbkWbjN
         QteX8n0KSE9I5gEBh28bF8mnyZG6er8dIjFCLrJhlRBtMq994seoCguuALprbCjGqMaO
         +FBuIGfl+1B9xTJdLeNvkoFgeRqUPYF4Dk8UvNZyumAKuZnDRRrNGdjDYaQZkaiL7yR/
         Poag==
X-Forwarded-Encrypted: i=1; AJvYcCWFC9+hac8QTDvTCKisw7e4yFegoFebX7ea6qTNuJp6uaymF0tK4DNOSB2rpNwQhPmU9E9zmcY6V/Y=@lists.xenproject.org
X-Gm-Message-State: AOJu0Yyy5wB08qDmXdxQXxtvuGItDOZGTd46Bie4qOMGkOW5KT7b1pdS
	KBSw4apQWxvl5yQkDLb4xBlztGzrf51YyktITApIHChVRnp7iC9w6UYNw3IwdQ2t1w==
X-Gm-Gg: ATEYQzwSKl29rbMFqHcqU9/c8H14+Uu6oHsP00tfaXMslDfgPmKpOA482w6Ppo9Na/F
	/yOVsl6USy8A48Vte5U6uNuFJv5r5iT6HLS4FxdFpdOwMHM3plWUk6KGDeCAExSpO6iKoZKW3RG
	jvxF4oV+HXuatW+nsVSVsRJajV+n1ZQ+qG2ynxeK2QDf7r6DsJx9KBpGI0ownneeP8hCr+O3dAN
	hdmoOArE6r2u8/sij+WQC9rJ6yhrMYKrnih71bzGEFOuqrfZ//yulL96GxONxB7jaC1+qgtFhE9
	n/U7LCM3J0+YjbPUNJNIJ2BKasLuk5cg0iS6kETwvJzMVHXyrg2iL+vXuDVSb2p9nSbxBLb6a8o
	rY4R5aurcCBOwqBH59DjWo53gnDnqC4+kYIXY0YqsgaremLQJi1kZdWf/1brSaHxv5krfRDKep4
	VsjO7lNVRfiRqGgO3tQHzuPpJqLR8B+USVrNe1VMSY0KNAe7DhWsBKOpLQ9utxbG7IMyQh9/8O4
	pSc1mj8XwAfmhg=
X-Received: by 2002:a05:600c:1f89:b0:485:303b:c50a with SMTP id 5b1f17b1804b1-4888b7135d1mr32158855e9.13.1775110157857;
        Wed, 01 Apr 2026 23:09:17 -0700 (PDT)
Message-ID: <94b2e444-844a-4d34-9c9f-de0b9e6e23b1@suse.com>
Date: Thu, 2 Apr 2026 08:09:16 +0200
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH v1 0/3] Lockless SMP function call and TLB flushing
To: Ross Lagerwall <ross.lagerwall@citrix.com>
Cc: Andrew Cooper <andrew.cooper3@citrix.com>,
 =?UTF-8?Q?Roger_Pau_Monn=C3=A9?= <roger.pau@citrix.com>,
 Anthony PERARD <anthony.perard@vates.tech>,
 Michal Orzel <michal.orzel@amd.com>, Julien Grall <julien@xen.org>,
 Stefano Stabellini <sstabellini@kernel.org>, xen-devel@lists.xenproject.org
References: <20260401163521.3603665-1-ross.lagerwall@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: <20260401163521.3603665-1-ross.lagerwall@citrix.com>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 7bit
X-purgate-ID: tlsNG-4011c0/1775110158-BE1500B1-E009B9EE/0/0
X-purgate-type: clean
X-purgate-size: 2028

On 01.04.2026 18:35, Ross Lagerwall wrote:
> Hi,
> 
> This series implements lockless SMP function call and then rewrites x86 TLB
> flushing to use SMP function calls.
> 
> We have observed that the TLB flush lock can be a point of contention for
> certain workloads, e.g. migrating 10 VMs off a host during a host evacuation.
> 
> Performance numbers:
> 
> I wrote a synthetic benchmark to measure the performance. The benchmark has one
> or more CPUs in Xen calling on_selected_cpus() with between 1 and 64 CPUs in
> the selected mask. The executed function simply delays for 500 microseconds.
> 
> The table below shows the % change in execution time of on_selected_cpus():
> 
>                   1 thread   2 threads    4 threads
> 1 CPU in mask     0.02       -35.23       -51.18
> 2 CPUs in mask    0.01       -47.20       -69.27
> 4 CPUs in mask    -0.02      -42.40       -66.55
> 8 CPUs in mask    -0.03      -47.82       -68.39
> 16 CPUs in mask   0.12       -41.95       -58.26
> 32 CPUs in mask   0.02       -25.43       -39.35
> 64 CPUs in mask   0.00       -24.70       -37.83
> 
> With 1 thread (i.e. no contention), there is no regression in execution time.
> With multiple threads, as expected there is a significant improvement in
> execution time.
> 
> As a more practical benchmark to simulate host evacuation, I measured the
> memory dirtying rate across 10 VMs after enabling log dirty (on an AMD system,
> so without PML). The rate increased by 16% with this patch series, even
> after the recent deferred TLB flush changes.

Is this a positive thing though? In the context of some related work something
similar was mentioned iirc, accompanied by stating that this is actually
problematic. A guest in log-dirty mode generally wants to be making progress,
but also wants to be throttled enough to limit re-dirtying, such that
subsequent iterations (in particular the final one) of page contents
migration won't have to process overly many pages a 2nd time.

Jan


From xen-devel-bounces@lists.xenproject.org Thu Apr 02 06:25:06 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 02 Apr 2026 06:25:06 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1271100.1559390 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1w8BUB-0001DN-9F; Thu, 02 Apr 2026 06:24:59 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1271100.1559390; Thu, 02 Apr 2026 06: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 1w8BUB-0001DF-6A; Thu, 02 Apr 2026 06:24:59 +0000
Received: by outflank-mailman (input) for mailman id 1271100;
 Thu, 02 Apr 2026 06:24:58 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <jbeulich@suse.com>) id 1w8BUA-0001D9-10
 for xen-devel@lists.xenproject.org; Thu, 02 Apr 2026 06:24:58 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1w8BU7-003rfY-On
 for xen-devel@lists.xenproject.org; Thu, 02 Apr 2026 08:24:57 +0200
Received: from [10.42.69.6] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <jbeulich@suse.com>)
 id 69ce0bb9-2eae-0a2a0a5409dd-0a2a4506c406-0
 for <xen-devel@lists.xenproject.org>; Thu, 02 Apr 2026 08:24:57 +0200
Received: from [209.85.128.50] (helo=mail-wm1-f50.google.com)
 by tlsNG-16d1c6.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.0)
 (envelope-from <jbeulich@suse.com>)
 id 69ce0bb9-0df0-0a2a45060019-d1558032c5c9-3
 for <xen-devel@lists.xenproject.org>; Thu, 02 Apr 2026 08:24:57 +0200
Received: by mail-wm1-f50.google.com with SMTP id
 5b1f17b1804b1-486fd3a577eso3862715e9.1
 for <xen-devel@lists.xenproject.org>; Wed, 01 Apr 2026 23:24:57 -0700 (PDT)
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-4887c8852a5sm138753715e9.9.2026.04.01.23.24.55
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Wed, 01 Apr 2026 23:24:56 -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=google header.d=suse.com header.i="@suse.com" header.h="Content-Transfer-Encoding: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=1775111097; x=1775715897; darn=lists.xenproject.org;
        h=content-transfer-encoding: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;
        bh=KYjlo8eTh1e3f7SUAmu5caQMG1Fwh+iun7Ol8ixjQvw=;
        b=DNdW34uJAEAGG5x29sxLnCUUqO/QBMtB+/1x0p/qYcj26OZ7jlGehsKLUHNfJqIhzI
         ESlMgslyuFSYchKs8U4w9GXhby52kzkmOzEIKsKq/o0hrxj+Lrx3A7fr9k6t5boqvnMU
         WV+MiQJp+B/Rme15QfE40JbopjZtBd7Xam37iW41dVvkEs16U3QLiVngkhPmR1YxlJzd
         Qra14NH61zAnUF5PSK08JSWLMeVWhJR+Os1LT4UMswNUXp65lZiOEtqCjNAinRb/lyCK
         VmmkIaPzv5vufGPHUdtM5lGWxQosF34uEWlhmyfMS5wpaBVFp6GJpdTxII52A6pki2p9
         112g==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20251104; t=1775111097; x=1775715897;
        h=content-transfer-encoding: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;
        bh=KYjlo8eTh1e3f7SUAmu5caQMG1Fwh+iun7Ol8ixjQvw=;
        b=chIC+JuqqWNhc8VLlUQ3t+JUKeDZL2TB37988yJFxPSf3H7xFqaqQLjW+vBsGwfM2i
         9bcEy+gyhMtpqIu0FmvRSq4o8sSOwsxEDn4Gk9MvvSliMg/bgGTgYrn5IlN764XnRdoN
         Y86O3Gv9q/iftqO8SiNi/6SCD9soC8+Tn4xaCnhEVQnwq1w7kFFEZ8UkECYIcm72gQYS
         hxMmCueB+1TeUBri3FTL/6w+VJIuJ2EXz/JCQwK+6D0txuTfGdD5CERAjAgFJ4f8Y3mC
         5/ek1Y9AUOD1U3ufSvZEfBvQS5HQkXFb9kHPQAZcs7LdKiOm+MUB+pd219xkE1j/wIxy
         XmnA==
X-Forwarded-Encrypted: i=1; AJvYcCWvKsXmaE5iLsEn2pLXSODC8lgeWRBee7mr5QLIyKaqfp3j/geFcPQU2oJAh5HXiX38sq64r61lDHU=@lists.xenproject.org
X-Gm-Message-State: AOJu0Yzeqy82L/Xo115mahJEYyCZWaKLWBKwOihDTAQHsnrIg5gbfbVM
	Qkx9ymQqpIlF3AqzmxCIXqsTKxzAurDxr3HMlz4oNXTBX18v5Zi98/nTYlEdjCh5ow==
X-Gm-Gg: ATEYQzycvc/mrOMbcQ164UnmbBP5T8TCMR708MRYtsUdxOJEw3Sdw1B7uY0Nq6SeaXJ
	TBv2XQjyOupmmeg0khGLbi0f1AoE0GvLKsv3oobMSF/v4NQ8mJPUYU1YnSHqhhaYcgyteUWQC3L
	qb3HK4rZxFtBZPwthvQ3TxrLM7HZhme3n2GPgegKi7MzNTbtTq8smAhO/lfDIHiMuOByJ14x+zC
	riJ2aw6ZTs5MztbcPcImXqRwESYDZ7VYSOv4fncJhe7rSTDFiy37ZERUkL75gV4QKLSl4+0d5aq
	iqsb9EJUjyvUIoKH3OKhURCGTUcru1LHb2etsTaXICrutsKI6EG2vbTHXhRrMGvukIw67YolW4L
	ra5bDcY2lH1wJFWh3h8Zapukor2DI4IHqeWpMLJafse6QFQTmXRJGgtzmmE/aEcEfkU5nnUfgYm
	pKr8TA70+hy/K1P7c0n9ueh2zpAJZ62AW2KuQWtUNUeH0y23UBmPcbi/3O/eQ4Fc5dOJTF7N4H2
	QCZPmN2moOwyiE=
X-Received: by 2002:a05:600c:4594:b0:486:ffa3:55f with SMTP id 5b1f17b1804b1-488835d0f0cmr108092575e9.27.1775111096583;
        Wed, 01 Apr 2026 23:24:56 -0700 (PDT)
Message-ID: <a6c95e44-e324-493d-8e55-532223e56b17@suse.com>
Date: Thu, 2 Apr 2026 08:24:55 +0200
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH v2 1/4] xen/riscv: add exception table support
To: Oleksii Kurochko <oleksii.kurochko@gmail.com>
Cc: Romain Caritey <Romain.Caritey@microchip.com>,
 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.pau@citrix.com>,
 Stefano Stabellini <sstabellini@kernel.org>, xen-devel@lists.xenproject.org
References: <cover.1774863161.git.oleksii.kurochko@gmail.com>
 <dcf5786b4ec99edcec6554a338904c52f0c3b03f.1774863161.git.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: <dcf5786b4ec99edcec6554a338904c52f0c3b03f.1774863161.git.oleksii.kurochko@gmail.com>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 7bit
X-purgate-ID: tlsNG-16d1c6/1775111097-5D92A3D8-69493B11/0/0
X-purgate-type: clean
X-purgate-size: 2982

On 31.03.2026 21:04, Oleksii Kurochko wrote:
> --- /dev/null
> +++ b/xen/arch/riscv/extable.c
> @@ -0,0 +1,85 @@
> +/* SPDX-License-Identifier: GPL-2.0-only */
> +
> +#include <xen/init.h>
> +#include <xen/bsearch.h>
> +#include <xen/lib.h>
> +#include <xen/livepatch.h>
> +#include <xen/sort.h>
> +#include <xen/virtual_region.h>
> +
> +#include <asm/extable.h>
> +#include <asm/processor.h>
> +
> +#define EX_FIELD(ptr, field) ((unsigned long)&(ptr)->field + (ptr)->field)
> +
> +static inline unsigned long ex_insn(const struct exception_table_entry *ex)
> +{
> +    return EX_FIELD(ex, insn);
> +}
> +
> +static inline unsigned long ex_fixup(const struct exception_table_entry *ex)
> +{
> +    return EX_FIELD(ex, fixup);
> +}
> +
> +static void __init cf_check swap_ex(void *a, void *b)
> +{
> +    struct exception_table_entry *x = a, *y = b, tmp;
> +    long delta = b - a;
> +
> +    tmp = *x;
> +    x->insn = y->insn + delta;
> +    y->insn = tmp.insn - delta;
> +
> +    x->fixup = y->fixup + delta;
> +    y->fixup = tmp.fixup - delta;
> +}
> +
> +static int cf_check cmp_ex(const void *a, const void *b)
> +{
> +    const unsigned long insn_a = ex_insn(a);
> +    const unsigned long insn_b = ex_insn(b);
> +
> +    /* avoid overflow */
> +    return (insn_a > insn_b) - (insn_a < insn_b);

What is the (slightly malformed) comment about? I don't see anything close
to possibly causing overflow here.

> --- /dev/null
> +++ b/xen/arch/riscv/include/asm/extable.h
> @@ -0,0 +1,58 @@
> +/* SPDX-License-Identifier: GPL-2.0-only */
> +
> +#ifndef ASM__RISCV__ASM_EXTABLE_H
> +#define ASM__RISCV__ASM_EXTABLE_H
> +
> +#ifdef __ASSEMBLER__
> +
> +#define ASM_EXTABLE(insn, fixup)    \
> +    .pushsection .ex_table, "a";    \
> +    .balign     4;                  \
> +    .long       ((insn) - .);       \
> +    .long       ((fixup) - .);      \

For readability's sake I'm generally advocating for having enough, but
not more parentheses than necessary. What's the purpose of the outer pair
here and ...

> +    .popsection;
> +
> +.macro asm_extable, insn, fixup
> +    ASM_EXTABLE(\insn, \fixup)
> +.endm
> +
> +#else /* __ASSEMBLER__ */
> +
> +#include <xen/stringify.h>
> +#include <xen/types.h>
> +
> +struct cpu_user_regs;
> +
> +#define ASM_EXTABLE(insn, fixup)        \
> +    ".pushsection .ex_table, \"a\"\n"   \
> +    ".balign    4\n"                    \
> +    ".long      ((" #insn ") - .)\n"    \
> +    ".long      ((" #fixup ") - .)\n"   \

... here?

I'm also uncertain about the use of .long (generally in RISC-V code, and
really also in some other architectures). Imo, considering suffixes used
in the instruction set (e.g. load/store insns or OP-32 ones in RV64) .word
may be the more expressive directive.

Preferably with the adjustments:
Acked-by: Jan Beulich <jbeulich@suse.com>
Happy to carry out while committing, provided you agree.

Jan


From xen-devel-bounces@lists.xenproject.org Thu Apr 02 06:30:34 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 02 Apr 2026 06:30:34 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1271111.1559399 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1w8BZT-0002oB-S7; Thu, 02 Apr 2026 06:30:27 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1271111.1559399; Thu, 02 Apr 2026 06: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 1w8BZT-0002o4-OW; Thu, 02 Apr 2026 06:30:27 +0000
Received: by outflank-mailman (input) for mailman id 1271111;
 Thu, 02 Apr 2026 06:30:26 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <jbeulich@suse.com>) id 1w8BZS-0002ny-Md
 for xen-devel@lists.xenproject.org; Thu, 02 Apr 2026 06:30:26 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1w8BZS-000iIe-2h
 for xen-devel@lists.xenproject.org; Thu, 02 Apr 2026 08:30:26 +0200
Received: from [10.42.69.10] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <jbeulich@suse.com>)
 id 69ce0d00-2eae-0a2a0a5409dd-0a2a450adba8-6
 for <xen-devel@lists.xenproject.org>; Thu, 02 Apr 2026 08:30:25 +0200
Received: from [209.85.128.42] (helo=mail-wm1-f42.google.com)
 by tlsNG-4011c0.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.0)
 (envelope-from <jbeulich@suse.com>)
 id 69ce0d01-ee98-0a2a450a0019-d155802ae8c9-3
 for <xen-devel@lists.xenproject.org>; Thu, 02 Apr 2026 08:30:25 +0200
Received: by mail-wm1-f42.google.com with SMTP id
 5b1f17b1804b1-4853c1ca73aso4168135e9.2
 for <xen-devel@lists.xenproject.org>; Wed, 01 Apr 2026 23:30:25 -0700 (PDT)
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-4888a66c766sm42807645e9.8.2026.04.01.23.30.24
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Wed, 01 Apr 2026 23:30:24 -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=google header.d=suse.com header.i="@suse.com" header.h="Content-Transfer-Encoding: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=1775111425; x=1775716225; darn=lists.xenproject.org;
        h=content-transfer-encoding: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;
        bh=PnHnPivMYhqkCaCgYVM251gRAV0D5haFazOmw5q5iWM=;
        b=atyAXFw5w7wZuIpSOrCay5AOxY+1OS3y1Q8sBe+PI5dXNIUWZVi3k9v2O6UY1M9pLM
         RfUngTHoLlAvFFx/Se6W1hF0d1aeDhSqSWUHfEKqMLIn4ZLjUnhdF/F/GIDt3Mw4PTha
         ECBAiKF8AIllnt5kZzhXum0XxQoy4J4bo58kwNcAlfl/dPP8HU3F0S+uKTIjvcznjci1
         CFEtTW0hhRKVhQA4ASH6CPVH/zKSvyc5V0ajFy1R+ix/e4O9KlgKCVA8C4lnZxaU6abB
         upOootCUT28iIePt2B47gz0jEL7+6MC54aWKAmQEE2Zl0P6iABNw0Y5Ty2qcnD/BQNL4
         YHTg==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20251104; t=1775111425; x=1775716225;
        h=content-transfer-encoding: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;
        bh=PnHnPivMYhqkCaCgYVM251gRAV0D5haFazOmw5q5iWM=;
        b=d2K+sfpFQq8q4mki3owLnZpxlER8m60r2xwSwhMoa/j2nM9eJUwFQtZMMcH51h2wbc
         oz77k3WQMr02TGSKkBMtsGm2UxxyG4aZ3amNUJJM9VevLhs+V+eu0aPqgLZ1lFEr339B
         jS18p3O5ztCtifdueaBjEI57VKpRwWGqAkw5pZV6aATseLK0SZL3NQVjs9HToaPrCZZ1
         qEnRQf4OVNHm/oLplIWpbONPaIhoLJcV4zw+RNroKnhef7Ora4Nsx/HDwVaW3SFt0v3k
         liXEqtbj/Py5UfVC3aJAhYlLWxrT7qvKlNQRXdTpeOwyAapK6w3SBJxlvKRk+do2TmN7
         a7qA==
X-Forwarded-Encrypted: i=1; AJvYcCX2EAlg5s0Bkl7P9iQWIi1P369zgDJJfTxhksKOe6E64uGQ63QpPxrHNGpCcC9NmOieMzUWcXZRlBc=@lists.xenproject.org
X-Gm-Message-State: AOJu0YzGb5uZ2uv3zI8FyNdrsUC/6k/5b0IwuP08pnoaOqhY0cJ/bJ0u
	mCCBP8DuVUMXdNWIgNTQeg0NrHQLilkmnw2CJxZzFu2Wieq6mpLBwym/tT6HkH9/lg==
X-Gm-Gg: ATEYQzxUL4ACqnIsGMm9tJsX90rTTM9u/t674P9vMfiKO1MGagp8+olW9SbMIStTU2t
	GDLezoCO04fxi/aDMRwl3bYi5ngJqtSLPjhBxOi+++a2qKTTD97IVS15o0SnrGAOY1C0Je/oZEC
	MtbJFvAx4dU1OJcW1L2Gc2AbV4yen51SLf8b+QV7wqR6Qr4snBlLYZiibjOr7dzJ9ANfUrgZwMJ
	WdVEzqaY3L5zu74IntKE5izn01AHiX7SYPPwXWK5ErbmYHVb4eXNzfChJ21ZtT7ZEsNYeyo/0/e
	WBjfgAaWoxEz2g7mFVMCqidi8951KYbRRdRVH4SkZAyPhHge7Iw+eTxXfrikQWQwZpykPjiIEn+
	qEMnLvFcBGxpsb642UxYru8kmDoXC5kP3D4YfGR0O0rmVPHGglFPLkSf1XCMh3Y0UBt8IzddE2z
	8CYeFxnYE0ll0889NawwmPeNu43ukWqfeNk6qbElxpKcF/y+/BCDlZNISEJA/8cwEsCDSE7ns8q
	4PavlCsimii7Bk=
X-Received: by 2002:a05:600c:4f91:b0:483:64b4:79da with SMTP id 5b1f17b1804b1-488835b7582mr99390035e9.26.1775111425231;
        Wed, 01 Apr 2026 23:30:25 -0700 (PDT)
Message-ID: <f28b1c99-9d84-4338-9278-b85cf283e7ef@suse.com>
Date: Thu, 2 Apr 2026 08:30:24 +0200
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH v2 2/4] xen/riscv: add csr_read_safe() helper
To: Oleksii Kurochko <oleksii.kurochko@gmail.com>
Cc: Romain Caritey <Romain.Caritey@microchip.com>,
 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.pau@citrix.com>,
 Stefano Stabellini <sstabellini@kernel.org>, xen-devel@lists.xenproject.org
References: <cover.1774863161.git.oleksii.kurochko@gmail.com>
 <f870d5def964ee06471d6dde0f66d6585eb5ca36.1774863161.git.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: <f870d5def964ee06471d6dde0f66d6585eb5ca36.1774863161.git.oleksii.kurochko@gmail.com>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 7bit
X-purgate-ID: tlsNG-4011c0/1775111425-0F3490B1-FC35DB84/0/0
X-purgate-type: clean
X-purgate-size: 1113

On 31.03.2026 21:04, Oleksii Kurochko wrote:
> @@ -78,6 +80,38 @@
>                             : "memory" );                        \
>  })
>  
> +static always_inline bool csr_read_safe(unsigned long csr,
> +                                        unsigned long *val)
> +{
> +#ifdef CONFIG_CC_HAS_ASM_GOTO_OUTPUT
> +    asm_inline goto (
> +        "1: csrr %[val], %[csr]\n"
> +        ASM_EXTABLE(1b, %l[fault])
> +        : [val] "=&r" (*val)

Why the & when there's only a single insn?

> +        : [csr] "i" (csr)
> +        :
> +        : fault );
> +
> +    return true;
> +
> + fault:
> +    return false;
> +#else
> +    bool allowed = false;
> +
> +    asm_inline volatile (
> +        "1: csrr %[val], %[csr]\n"
> +        "   li %[allowed], 1\n"
> +        "2:\n"
> +        ASM_EXTABLE(1b, 2b)
> +        : [val] "=&r" (*val), [allowed] "+r" (allowed)
> +        : [csr] "i" (csr)
> +        : );

Why the excess colon?

With these adjusted (again happy to do so while committing, so long
as you agree):
Reviewed-by: Jan Beulich <jbeulich@suse.com>

Jan


From xen-devel-bounces@lists.xenproject.org Thu Apr 02 06:32:36 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 02 Apr 2026 06:32:36 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1271121.1559408 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1w8BbX-0003Kt-7C; Thu, 02 Apr 2026 06:32:35 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1271121.1559408; Thu, 02 Apr 2026 06:32: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 1w8BbX-0003Km-3Y; Thu, 02 Apr 2026 06:32:35 +0000
Received: by outflank-mailman (input) for mailman id 1271121;
 Thu, 02 Apr 2026 06:32:34 +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 1w8BbV-0003Ke-Tu
 for xen-devel@lists.xenproject.org; Thu, 02 Apr 2026 06:32:34 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1w8BbV-0056TE-A8
 for xen-devel@lists.xenproject.org; Thu, 02 Apr 2026 08:32:33 +0200
Received: from [10.42.69.10] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <Michal.Orzel@amd.com>)
 id 69ce0d7f-5cb7-0a2a0a5109dd-0a2a450ab40a-8
 for <xen-devel@lists.xenproject.org>; Thu, 02 Apr 2026 08:32:32 +0200
Received: from [52.101.56.45]
 (helo=BN1PR04CU002.outbound.protection.outlook.com)
 by tlsNG-4011c0.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.0)
 (envelope-from <Michal.Orzel@amd.com>)
 id 69ce0d7f-ee98-0a2a450a0019-3465382d165a-4
 for <xen-devel@lists.xenproject.org>; Thu, 02 Apr 2026 08:32:32 +0200
Received: from DS7PR03CA0173.namprd03.prod.outlook.com (2603:10b6:5:3b2::28)
 by DS7PR12MB5814.namprd12.prod.outlook.com (2603:10b6:8:76::7) with Microsoft
 SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id
 15.20.9769.17; Thu, 2 Apr 2026 06:32:27 +0000
Received: from CH3PEPF00000012.namprd21.prod.outlook.com
 (2603:10b6:5:3b2:cafe::b9) by DS7PR03CA0173.outlook.office365.com
 (2603:10b6:5:3b2::28) with Microsoft SMTP Server (version=TLS1_3,
 cipher=TLS_AES_256_GCM_SHA384) id 15.20.9745.30 via Frontend Transport; Thu,
 2 Apr 2026 06:32:27 +0000
Received: from satlexmb08.amd.com (165.204.84.17) by
 CH3PEPF00000012.mail.protection.outlook.com (10.167.244.117) with Microsoft
 SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id
 15.20.9791.0 via Frontend Transport; Thu, 2 Apr 2026 06:32:27 +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.17; Thu, 2 Apr
 2026 01:32:26 -0500
Received: from [10.71.194.215] (10.180.168.240) by satlexmb07.amd.com
 (10.181.42.216) with Microsoft SMTP Server id 15.2.2562.17 via Frontend
 Transport; Thu, 2 Apr 2026 01:32:25 -0500
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@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=GX7x/VnYTFxVDSGk8exq3wko2W9s3YW/uTpmw3eCoe1UcEtFiNIs/Eq4BNfetno14JycswZlUx7vYJ9YM2k3CizM+G4nIw8G3XwgAR0E4MH/m87ISFk3xACvSsg7Cmc4Hq1pAcWn51Q+mD+q80tD9lvnDw+liGjT40cx21s2PtkyijTfBQCN9tS3tcDbq27mUY5zw4UunPPX1ETjViIJT63YA3fa2uCJXvmegSM624fKItWEStgQuH9H1TuMotmhA2qP1dbN+37UK77Hg5PH1H48wgsVrOZSIzc2bxcQALGeU5gop61dZ2rQ/vg0R7xkBf6E+aPRs+LDojZwk8NaMQ==
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com;
 s=arcselector10001;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1;
 bh=3yf/Fj9NGf9DFpMm0y6U37tUWNDfvgAqG/ER6cYBwdM=;
 b=X+WLmrQx4W/HjtgxDDFPx4N8dYiVOOxm9bfhcp4AxhNb7OakcWEAcjOY8jWG2YBSaIdqyMgw+7un/v/8i4J2w1k8IysZ7lM6XoVX2SRzoq+SBDownYd2YktMNKz2cqzU/FF61iCI8ggA1vFxfFYfK7SgUn0K7dHG/hYGWJD2xiT2zLGDC16HgRH8JroB3LlXhhInjcehs6BpOG54ZiaUudi47jA+8g82nuETnabuoNJN1O8RGwuTLhw4BXenTLpWrErdFMCnWOpstcBhOqxk2o2xXSPks5GkuaZh3VivOE1zVN98wrYWDvA1zFHMJiCyZ27vWpMtYBfeKElRtnKP2A==
ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass (sender ip is
 165.204.84.17) smtp.rcpttodomain=xen.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=3yf/Fj9NGf9DFpMm0y6U37tUWNDfvgAqG/ER6cYBwdM=;
 b=3BDpkhFTWagmodImbQK0JrIGzyu2xmhifuQjG7OUE7vfayA2EwxnZfHPGTap2pBuThpqynyH+hFVHmIPVMFyzp1WqS3lOwFy0ToxeYNBgopPu9HluTLFNVExVphQD5h0t/K5IXbgMqbLdUj3fnUGE5DJw49aLxFgNEL167XC7Yc=
X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 165.204.84.17)
 smtp.mailfrom=amd.com; dkim=none (message not signed)
 header.d=none;dmarc=pass action=none header.from=amd.com;
Received-SPF: Pass (protection.outlook.com: domain of amd.com designates
 165.204.84.17 as permitted sender) receiver=protection.outlook.com;
 client-ip=165.204.84.17; helo=satlexmb08.amd.com; pr=C
Message-ID: <bc80e004-25a5-449f-b4dc-a6afb8dc54c7@amd.com>
Date: Thu, 2 Apr 2026 08:32:19 +0200
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH 3/3] xen/arm: vpci: Move content of xen/arch/arm/vpci.h to
 arch header
To: Julien Grall <julien@xen.org>, <xen-devel@lists.xenproject.org>
CC: Stefano Stabellini <sstabellini@kernel.org>, Bertrand Marquis
	<bertrand.marquis@arm.com>, Volodymyr Babchuk <Volodymyr_Babchuk@epam.com>,
	Rahul Singh <rahul.singh@arm.com>
References: <20260401145816.169557-1-michal.orzel@amd.com>
 <20260401145816.169557-4-michal.orzel@amd.com>
 <e21642ec-ad45-4a61-8482-768ee666f438@xen.org>
From: "Orzel, Michal" <michal.orzel@amd.com>
Content-Language: en-US
In-Reply-To: <e21642ec-ad45-4a61-8482-768ee666f438@xen.org>
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: 7bit
X-EOPAttributedMessage: 0
X-MS-PublicTrafficType: Email
X-MS-TrafficTypeDiagnostic: CH3PEPF00000012:EE_|DS7PR12MB5814:EE_
X-MS-Office365-Filtering-Correlation-Id: ea30c74f-5bfb-4ea8-1dd4-08de90819bea
X-MS-Exchange-SenderADCheck: 1
X-MS-Exchange-AntiSpam-Relay: 0
X-Microsoft-Antispam:
	BCL:0;ARA:13230040|1800799024|36860700016|376014|82310400026|22082099003|18002099003|56012099003;
X-Microsoft-Antispam-Message-Info:
	I8SiPHXfsr4GtcjRG8WObaGmipr17DDfx7iEy1G0AWPnHRnsvFpspRFBmxN5cTocGmjp6cjn2YgRTIqR3YLscDK0GBP1Vk9+98y8UDdJIJzd4V+1T1y1TOpLNpF3KMQnEVBQJzmhDJ6aJWoLZsWQLaqlOl6dE6RCf+oyxLLOB/YanlXJghIrLb3LYOkyWmsrLV5TZFBoyeSUtxyu4saAlGP9yQj7jGAyHB1saRMtEqaq04VL5ms+gvqkyfPtgUvr79kRqDhXezSRCB/UqG5+MupJJBGrmNwZRr60Yw3DctB7nF8ULQ2xv+J9VEoy407D4JfbEBj9evv3kGcR/0gV64uQzpXi5vlILsRv8AJ8JOg1VQwbK6REtx7hYeTuHwBgyQS48YfXvuNsiZCycncvWFGPEOkCtyb90QE0u7KVzVDkrBxgSKX4LDGSWwux39wQto6Cvy7OwT7Bjd3hdZgd8yoy6OruYM5cXk+H7z+AWhyl+xTxK/K/ld624idTPDcSXz8Zdu9jtyIA52p8atwh9KRfLjTp5sTm4KO8RIxrirUA44dqtH5iAfSY+9nUyYdclqkrTorBQyuFnpdoCJDDIJwHFc/2EV6zYY5v+u/NCfDNeWSSDJXYaEnSD2IGALYgnGypvmOq3HwzfbSJoFYtDGdE3Pba3++kkuZmnhNnIWujkynv0N/qRz6Ep37PuJzhb42mXeTxU4rRttWAzOYAQkQ5U1ryoHYgIfW2rX5Z8xU/NdQsILNbMEVKelWlm2L0jHopgxmIX5dwRSQfoIgBlg==
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)(36860700016)(376014)(82310400026)(22082099003)(18002099003)(56012099003);DIR:OUT;SFP:1101;
X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1
X-MS-Exchange-AntiSpam-MessageData-0:
	aokqyNAL0ooDn7IOE36lPnh+XZQT2U3MedEYYfvRRp1aDSR75/aVlhrm7IlXocUn8425z/UbTQ1H4kWWesh0UrYxP8WVGGl9uWzqJ5+sRvnMMdnXMPi1Kh1JI35XLfUjRDhb6idZ94RUMaQqAEH0HqgBZXWzZdzm8g/NwaT03lxBXYhAiVVrqXuEENWgES7zcUh/PE6PR2XaZz5+PzEJfR8oIw+Ae+ozzLczeUIS+16MK0PfQ06cAAkiCcLqes6zDV6Py26BJdzfUSLs8fC7tNNgdRvsUWTYXBo+RIHY0SAFI7ly1n7xzTCnd/zOFbbmyA1HMjBfMu3FUlhSQAUR1BJix1tNmYJkC84JBgUTCImyGHum6BQdlmQ22HJqJNpkL2nDuMToYPXxqsT1rfdgvfh8ep2AzmGCjCbPi21lsF84JfPWnZPVIYuylFyCyNVM
X-OriginatorOrg: amd.com
X-MS-Exchange-CrossTenant-OriginalArrivalTime: 02 Apr 2026 06:32:27.3620
 (UTC)
X-MS-Exchange-CrossTenant-Network-Message-Id: ea30c74f-5bfb-4ea8-1dd4-08de90819bea
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:
	CH3PEPF00000012.namprd21.prod.outlook.com
X-MS-Exchange-CrossTenant-AuthAs: Anonymous
X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem
X-MS-Exchange-Transport-CrossTenantHeadersStamped: DS7PR12MB5814
X-purgate-ID: tlsNG-4011c0/1775111552-C481C0B1-5DC809E6/0/0
X-purgate-type: clean
X-purgate-size: 1957

+Rahul

On 02/04/2026 04:44, Julien Grall wrote:
> Hi Michal,
> 
> On 01/04/2026 15:58, Michal Orzel wrote:
>> Move domain_vpci_init() and domain_vpci_get_num_mmio_handlers()
>> declarations from the private xen/arch/arm/vpci.h into the public
>> xen/arch/arm/include/asm/vpci.h, and remove the now redundant
>> private header.
> 
> Can you provide a brief explanation why we don't couldn't include 
> "vpci.h" from "arch/arm/vpci.c"? Such approach would ...
Yes, we could but I think it's better not to use local headers if the main ones
under include already exists. This matches the x86.

> 
>>
>> Update domain.c to include <asm/vpci.h> instead of the removed private
>> header.
>>
>> This ensures the declarations are visible where the functions are
>> defined, resolving a MISRA C Rule 8.4 violation.
>>
>> Signed-off-by: Michal Orzel <michal.orzel@amd.com>
>> ---
>> I'm moving a file with GPL2+ license to a file with GPL2-only. I consider this
>> ok in this case becase the copyright on a file with just prototypes does not
>> make any sense and a license text was most likely blindly copy-pasted like for
>> most of the files in that era.
> 
> ... avoid the licensing discussion. I am in the opinion that it is ok to 
> move from GPLv2+ to GPLv2 because the license says "either version 2 of 
> the License, or (at your option) any later version". But I remember not 
> everyone agrees on this interpretation and we never solved the 
> discussion on whether we need to request permission from the original 
> copyright holder.
> 
> Alternatively, I see this file was only modified by two companies (EPAM 
> and Arm). I see one employee of each company are already CCed. So you 
> could confirm with them if the change is fine.
The header was introduced by Rahul Singh from Arm and Oleksandr Andruschenko
from EPAM. @Rahul, @Bertrand, @Volodymyr - are you ok to move this file to
GPL2-only?

~Michal



From xen-devel-bounces@lists.xenproject.org Thu Apr 02 06:41:27 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 02 Apr 2026 06:41:27 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1271135.1559417 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1w8Bk1-00057x-WD; Thu, 02 Apr 2026 06:41:22 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1271135.1559417; Thu, 02 Apr 2026 06:41: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 1w8Bk1-00057q-Tb; Thu, 02 Apr 2026 06:41:21 +0000
Received: by outflank-mailman (input) for mailman id 1271135;
 Thu, 02 Apr 2026 06:41:20 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <jbeulich@suse.com>) id 1w8Bjz-00057k-T9
 for xen-devel@lists.xenproject.org; Thu, 02 Apr 2026 06:41:20 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1w8Bjy-006qKl-TD
 for xen-devel@lists.xenproject.org; Thu, 02 Apr 2026 08:41:18 +0200
Received: from [10.42.69.3] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <jbeulich@suse.com>)
 id 69ce0f8c-bab6-0a2a0a5309dd-0a2a450389f4-10
 for <xen-devel@lists.xenproject.org>; Thu, 02 Apr 2026 08:41:18 +0200
Received: from [209.85.128.51] (helo=mail-wm1-f51.google.com)
 by tlsNG-33051d.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.0)
 (envelope-from <jbeulich@suse.com>)
 id 69ce0f8e-02b3-0a2a45030019-d1558033c450-3
 for <xen-devel@lists.xenproject.org>; Thu, 02 Apr 2026 08:41:18 +0200
Received: by mail-wm1-f51.google.com with SMTP id
 5b1f17b1804b1-4888244e9f9so3892885e9.0
 for <xen-devel@lists.xenproject.org>; Wed, 01 Apr 2026 23:41:18 -0700 (PDT)
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-43d1e2c5419sm6218262f8f.11.2026.04.01.23.41.17
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Wed, 01 Apr 2026 23:41:17 -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=google header.d=suse.com header.i="@suse.com" header.h="Content-Transfer-Encoding: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=1775112078; x=1775716878; darn=lists.xenproject.org;
        h=content-transfer-encoding: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;
        bh=uoSZwaA3X/0HvUMbGP9CLY6I+PK9oHLjZKdiTnymqFM=;
        b=UVhxbQeKHwUUWX/zfzCYdPT29SxdvTDMoptOZ5064E7D/fmc6bvauZeY71PrXuYpai
         UJMnRoYhXuZ5hiE3NnhZCsA73gv1/eb8xnX2LjAZVB98oYvRHrGCAKLS5Hp5JvfANHHK
         tOWdPrJyD0uadrRxRaaEFpLLMsPPpmRw5hWQtKvaggU2mpHizp8BRNm6JHS8fVeh1tg9
         Z8V5Gbh/pqv8ygcwbmg7O+ajimD3AlFzIchB7e/HUpMHTQQ0OWEFOj4Q6MEcfvGG6Ljq
         dKl0/YQLGtEyVcB3tQErLxMpzcZ/UXydns50/d+YKfC983bv8/z2eQvcsAUcvex4Sd5q
         7kAw==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20251104; t=1775112078; x=1775716878;
        h=content-transfer-encoding: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;
        bh=uoSZwaA3X/0HvUMbGP9CLY6I+PK9oHLjZKdiTnymqFM=;
        b=rMAQ22mHbtGylJJXXogbeU4craGlVjKmaQX6owrhwFlexIVTUCK80EITn8QxGiNtOQ
         0rAe0oYZYdRsDhVNQiTpsV8LENIFA3gjd04T3ndE9JZwEEqjaRwk2t/sjHl3aw5ErokX
         EEXMR3WCCk/nJCKSHBNkNNPry8AnB8LkDLmsCP2M23j4YR9JE3xCUA0L5SmMCRkmKMed
         GB0bpg75M4dULjrSZgoL0+vPRwRYo7mnZ9e6hhZpVPewW4yECGX918XNcruvF5B1kFXP
         wvTx31RDmKdXv2wGtEVNnvQwbKN3VQeFtRc+ur5eG/3Ds8F33yCzCkgKCdla01tJu4EV
         i5dg==
X-Forwarded-Encrypted: i=1; AJvYcCV9WGxb0y8oOmC30N4y9pQ6/fy7H22/7GX7ocF8nq+faIU04ps9LVZZqDq6C3hFit2ZShOOFlPPTZk=@lists.xenproject.org
X-Gm-Message-State: AOJu0YymxaohPpUX00gKr6T4r9ztBdDezUOREJ7oGB+cusdhPSTHuFQN
	G0D6mbxAnnbtYgxC+B7v02UOhdO7Db88vuVygRFI8T5LkXLJWPqR1qNpZn4PHVKrMA==
X-Gm-Gg: ATEYQzyKzzKkZLijcOJdGf2RsRDuYpfGbSo5B9D7Kq67rlOR/Egd7XNleudieSFtImf
	jlcWmwRCJPgDIwvOk6k7YAA06eG5C3s9taOytL5zSWB2natrEQoB+3zqp7pMDJ63uWO3ThWgTGW
	y7xVN14yqy17/hd6sEvM5GCqALIUNpGsELuEnzHQ9ZsOAeARK9RA/pulmLv1cZ1W58Zu7PWoohj
	kOSlbs0ajJDz1fP3a9lmIIlyrmabSN2+qZgQUzBQ/pv7Cm2GEOpLFT4oHSfTfuMs3vbvhpOc2oJ
	t4fZTe5ziIFcHwKOHg+p2zpTeOakImFP3hjNuywkKI4tEh42MyoQw/LgLSs46XyWgfe4gEoi4EB
	XlgKuG6hLT5ThkVewhX/AVkVxCqkUoAjM+PeCkitdnFkfXAdN94K9o5az6SfeKYUGtNgeeUpgb6
	GnaMmp0unPZ1nmDjgPagOEwK7qEQQttQwl9s+UIP1Jo5B/9ES6ZoweAHqeJQHY+/5zyzSnL1Psh
	WI1p9gPT9gCOfjkAphdEtBHKA==
X-Received: by 2002:a05:600c:8b38:b0:487:1fbf:e0bb with SMTP id 5b1f17b1804b1-4888356a021mr112730705e9.6.1775112078127;
        Wed, 01 Apr 2026 23:41:18 -0700 (PDT)
Message-ID: <df6fb4f1-b420-4b5f-90e1-dea9069311bf@suse.com>
Date: Thu, 2 Apr 2026 08:41:16 +0200
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH v2 3/4] xen/riscv: allow Xen to use SSTC while hiding it
 from guests
To: Oleksii Kurochko <oleksii.kurochko@gmail.com>
Cc: Romain Caritey <Romain.Caritey@microchip.com>,
 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.pau@citrix.com>,
 Stefano Stabellini <sstabellini@kernel.org>, xen-devel@lists.xenproject.org
References: <cover.1774863161.git.oleksii.kurochko@gmail.com>
 <ff0e2e7332d5b887d00ad10caf01952f90f5da5c.1774863161.git.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: <ff0e2e7332d5b887d00ad10caf01952f90f5da5c.1774863161.git.oleksii.kurochko@gmail.com>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 7bit
X-purgate-ID: tlsNG-33051d/1775112078-4792AC9A-747ADD21/0/0
X-purgate-type: clean
X-purgate-size: 3080

On 31.03.2026 21:04, Oleksii Kurochko wrote:
> @@ -495,6 +498,36 @@ void __init riscv_fill_hwcap(void)
>          panic("HW capabilities parsing failed: %s\n", failure_msg);
>      }
>  
> +    if ( csr_read_safe(CSR_STIMECMP, &tmp) )
> +    {
> +        printk("SSTC is detected but is supported only for Xen usage not for "
> +               "a guest\n");

Please don't wrap format strings. Them going slightly beyond 80 columns is okay.
Them going much beyond that is a good indication that you want to consider re-
wording. (Here e.g. "SSTC detected; supported for Xen use, but not for guests".)

I question though whether something like this needs logging.

> +        /*
> +         * As SSTC for guest isn't supported it is needed temprorary to:

Nit: temporary

> +         *
> +         * 1. Clear bit RISCV_ISA_EXT_sstc in riscv_isa as theoretuically it

Nit: theoretically

> +         *    could be that OpenSBI (it doesn't pass it now) or whatever ran
> +         *    before Xen will add SSTC to riscv,isa string. This bit clear
> +         *    won't allow guest to use SSTC extension as vtimer context
> +         *    switch and restore isn't ready for that.
> +         */
> +        __clear_bit(RISCV_ISA_EXT_sstc, riscv_isa);

Seeing your other series, shouldn't this instead be done without affecting
riscv_isa? The BUG_ON()s in vtimer.x therefore also look inappropriate.

> @@ -61,20 +73,7 @@ int reprogram_timer(s_time_t timeout)
>      if ( deadline <= now )
>          return 0;
>  
> -    /*
> -     * TODO: When the SSTC extension is supported, it would be preferable to
> -     *       use the supervisor timer registers directly here for better
> -     *       performance, since an SBI call and mode switch would no longer
> -     *       be required.
> -     *
> -     *       This would also reduce reliance on a specific SBI implementation.
> -     *       For example, it is not ideal to panic() if sbi_set_timer() returns
> -     *       a non-zero value. Currently it can return 0 or -ENOSUPP, and
> -     *       without SSTC we still need an implementation because only the
> -     *       M-mode timer is available, and it can only be programmed in
> -     *       M-mode.
> -     */
> -    if ( (rc = sbi_set_timer(deadline)) )
> +    if ( (rc = set_xen_timer(deadline)) )
>          panic("%s: timer wasn't set because: %d\n", __func__, rc);
>  
>      /* Enable timer interrupt */
> @@ -85,10 +84,17 @@ int reprogram_timer(s_time_t timeout)
>  
>  void __init preinit_xen_time(void)
>  {
> +    unsigned long tmp;
> +
>      if ( acpi_disabled )
>          preinit_dt_xen_time();
>      else
>          panic("%s: ACPI isn't supported\n", __func__);
>  
>      boot_clock_cycles = get_cycles();
> +
> +    if ( csr_read_safe(CSR_STIMECMP, &tmp) )
> +        set_xen_timer = sstc_set_xen_timer;
> +    else
> +        set_xen_timer = sbi_set_timer;
>  }

Doesn't all of this together eliminate the need for sbi_set_timer as a
separate global variable?

Jan


From xen-devel-bounces@lists.xenproject.org Thu Apr 02 06:55:11 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 02 Apr 2026 06:55:11 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1271151.1559427 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1w8BxJ-0006xl-7C; Thu, 02 Apr 2026 06:55:05 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1271151.1559427; Thu, 02 Apr 2026 06:55: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 1w8BxJ-0006xe-3Y; Thu, 02 Apr 2026 06:55:05 +0000
Received: by outflank-mailman (input) for mailman id 1271151;
 Thu, 02 Apr 2026 06:55:04 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <jbeulich@suse.com>) id 1w8BxI-0006xY-GQ
 for xen-devel@lists.xenproject.org; Thu, 02 Apr 2026 06:55:04 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1w8BxH-000n5B-T7
 for xen-devel@lists.xenproject.org; Thu, 02 Apr 2026 08:55:03 +0200
Received: from [10.42.69.8] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <jbeulich@suse.com>)
 id 69ce12b4-e002-0a2a0a5209dd-0a2a450887b0-42
 for <xen-devel@lists.xenproject.org>; Thu, 02 Apr 2026 08:55:03 +0200
Received: from [209.85.128.45] (helo=mail-wm1-f45.google.com)
 by tlsNG-c1860d.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.0)
 (envelope-from <jbeulich@suse.com>)
 id 69ce12c7-fab6-0a2a45080019-d155802da46c-3
 for <xen-devel@lists.xenproject.org>; Thu, 02 Apr 2026 08:55:03 +0200
Received: by mail-wm1-f45.google.com with SMTP id
 5b1f17b1804b1-4887ca8e529so3381565e9.0
 for <xen-devel@lists.xenproject.org>; Wed, 01 Apr 2026 23:55:03 -0700 (PDT)
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-4887e829c43sm155359695e9.5.2026.04.01.23.55.02
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Wed, 01 Apr 2026 23:55:02 -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=google header.d=suse.com header.i="@suse.com" header.h="Content-Transfer-Encoding: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=1775112903; x=1775717703; darn=lists.xenproject.org;
        h=content-transfer-encoding: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;
        bh=DgXxlUTwDNFLGpbDaypQWXDu0GRnlJmHE1ZauKGwKAk=;
        b=PJ0jIo0rvCoJV1d5Cer3cKFe6WybRX1S2GOOOZkCpZcyNAeCogpWeG7rYUcWMGMhaW
         5RtWM7n+zaDFqEGa+VvAeLQHHpUuYz94Sm9nICwwyNJ8NCs8tOU/S9AcynHt7jy/9TgX
         t2mtsIu13ZordiGU5fFFPoyk6JHE0jkw7kNy22vHjniF5Cnw/cZdWY27A2Xqw2LWoL7g
         BcToOaRgLM597PYTKTYKsbx2mKTo1Y0YUdS+IVT2csRWaZPS4++Zkdh/w8DujfEJLJAm
         edxrmfkgY2MNsIGDFypajflv1h/uiz0c/cA4TlKXLVluZ08EiH4OVYqLvfyU8WqJ6r27
         /7Ag==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20251104; t=1775112903; x=1775717703;
        h=content-transfer-encoding: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;
        bh=DgXxlUTwDNFLGpbDaypQWXDu0GRnlJmHE1ZauKGwKAk=;
        b=krAj7wJNFQGVP6RtEzRJpj937pKbT334yFHb4vk420I7Uq0UG3CW8fx3lyqyK7Fcyl
         amLDLrB0lGkVmLOl5QL9f5m3U/XZbQOyzsx73Xo6mflu0/Da/OLmR93eg6bRv6nBptVm
         lhsf6Zv6cntBdP62T6JepGrHxoWhtT9MzlfogUKJSwk92TLJBCwR/2Ks2oQqVv3jMTA7
         Ia3SdvjB7wqv05II74b40VC3mNiUjqTbpRLpcFc2WuRA7RVEy2+DR9oP96YOq5LEJ6Ya
         dG3BwKH47qxR+tH343UIFw8lXUShtX58uNJ0oEaGkm1tFgzr7/i+Q0rIOMBMZBCCG4d1
         KufQ==
X-Forwarded-Encrypted: i=1; AJvYcCXsTQ1aGBWMvryJn7uX7VrKmDCgUvecrVRDPN6oSIF3Rfpduwqr+mZo95o3WA4qe3rWV6juooTtaCs=@lists.xenproject.org
X-Gm-Message-State: AOJu0YzKMlGk7rMaaqZlB1bR5/4d3GiByMwl8maWSGM11YsnrziaYA/n
	3LwTlMcPvoDrKEk/9PmWCOzGohJ2xIKrvvYbhQVdp9Uq7E3okytEnJheaD5hN0bORA==
X-Gm-Gg: ATEYQzxqOG0EaYWOMPNhD/wgpbV/OhlFrsJvesU8tZoMtNYbtOrLF7yEPXbg973WLye
	IFD4rqqWFLFYMsZf6OA6llGt5ookpV0sY9TR5L+blmUIMHc22peJqYWXUOGao5rPWERoytFVsjx
	ImAPeLuZT9FXHCbWNw8rMa5pvXhlJJX54bI5w0IuMtNwOPF1SoR7hdzbKGjMt8yIcBTzGRgoVuZ
	cTRjaejoPGpqm2uL+IlGTaneE3O+YJuUMLkmc06e4LEhDgihaYdNtVd5VtY/pzkoj2rl+3b2cN2
	3hthH4hxUFgLlStbcqriqJpXxSKvob3tItbXy+I/rCuG9kmR/dJmPpnFSIifn43XDn4T8cvGnd7
	abvtlWZL/o5hktcwJyaYKhSuWmkfPl8R3u33nOmX7O8CPrS3sHwO+8DcO6thb+9ChqI8upA+bCr
	IizbNMp5HZB0SBIY/vUauXKN/Olcutw+ew0rNKdl6t6WJ7e8Sp7Wdr7Z9j92TJ17MKgH8SBXE5O
	N/iCjzebJODgxU=
X-Received: by 2002:a05:600c:c107:b0:46e:59bd:f7e2 with SMTP id 5b1f17b1804b1-4888e0b0022mr13699165e9.11.1775112902781;
        Wed, 01 Apr 2026 23:55:02 -0700 (PDT)
Message-ID: <93c147b2-1fbf-4afd-badd-cc3ba475e006@suse.com>
Date: Thu, 2 Apr 2026 08:55:01 +0200
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: IOMMU faults after S3
To: =?UTF-8?Q?Marek_Marczykowski-G=C3=B3recki?=
 <marmarek@invisiblethingslab.com>
Cc: Andrew Cooper <andrew.cooper3@citrix.com>,
 xen-devel <xen-devel@lists.xenproject.org>
References: <acZZmGXIJlmN3KGm@mail-itl>
 <e8bbaae2-5cff-4549-9f27-fbbda7346f60@suse.com>
 <913f75e3-0039-4a7e-9884-7564c329557f@citrix.com>
 <6020226f-5e38-42f5-923e-2692d17bc4e9@suse.com> <ac2AUoNaEUDIJ-J8@mail-itl>
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: <ac2AUoNaEUDIJ-J8@mail-itl>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
X-purgate-ID: tlsNG-c1860d/1775112903-76D4B497-D672ED31/0/0
X-purgate-type: clean
X-purgate-size: 5829

On 01.04.2026 22:30, Marek Marczykowski-Górecki wrote:
> On Wed, Apr 01, 2026 at 10:11:12AM +0200, Jan Beulich wrote:
>> On 01.04.2026 09:20, Andrew Cooper wrote:
>>> On 01/04/2026 9:14 am, Jan Beulich wrote:
>>>> On 27.03.2026 11:19, Marek Marczykowski-Górecki wrote:
>>>>> I noticed that on some systems, there are a lot of IOMMU faults after
>>>>> S3. I can see it also on a laptop with MTL, but it affects also the ADL
>>>>> gitlab runner:
>>>>>
>>>>>     https://gitlab.com/xen-project/hardware/xen/-/jobs/13661033722
>>>>>     (XEN) [   37.201160] [VT-D]DMAR:[DMA Write] Request device [0000:00:1e.6] fault addr 0
>>>>>     (XEN) [   37.201164] [VT-D]DMAR: reason 02 - Present bit in context entry is clear
>>>>>     (XEN) [   37.202332] [VT-D]DMAR:[DMA Write] Request device [0000:00:1e.6] fault addr 0
>>>>>     (XEN) [   37.202339] [VT-D]DMAR: reason 02 - Present bit in context entry is clear
>>>>>
>>>>> Interestingly, the 0000:00:1e.6 device is not even listed by lspci.
>>>>>
>>>>> The issue is present only on staging, not staging-4.21.
>>>>>
>>>>> Bisect says:
>>>>>
>>>>> 5ec93b2f19ff8873fca65d38c1164b0a56d3898b is the first bad commit
>>>>> commit 5ec93b2f19ff8873fca65d38c1164b0a56d3898b
>>>>> Author: Jan Beulich <jbeulich@suse.com>
>>>>> Date:   Thu Jan 22 14:13:35 2026 +0100
>>>>>
>>>>>     x86/HPET: drop .set_affinity hook
>>>> Looking into this, I find several things I can't quite understand (yet).
>>>> First there is
>>>>
>>>> (XEN) [000000456c0fe39f] Disabling HPET for being unreliable
>>>>
>>>> which looks to only affect clocksource selection, but not use as
>>>> broadcast source for CPU-idle management. (This may be an independent
>>>> issue.)
>>>>
>>>> Then there is
>>>>
>>>> (XEN) [    2.760248] HPET: 8 timers usable for broadcast (8 total)
>>>>
>>>> which should only occur on ARAT-incapable systems. That should only be
>>>> older hardware.
>>>
>>> I'm not sure that's a reasonable assertion to draw.  The number of HPET
>>> channels is down to the HPET alone, not anything to do with the CPU
>>> capabilities.
>>
>> My statement was about the mere presence of that message, not the number
>> of channels that are reported.
>>
>>>>  (On my much older Skylake I don't see this line, for
>>>> example.) What does CPUID leaf 6 have on this system? Sadly xen-cpuid
>>>> is purely featureset based, and hence doesn't expose info about that
>>>> leaf.
>>>
>>> xen-cpuid -p
>>>
>>> That will get you leaf 6, but there's no human-readable decode of it.
>>
>> Raw numbers is good enough here. How did I miss that option when looking
>> at --help output? Oh, simply because it isn't shown there.
>>
>> Marek, that'll be better than bare metal kernel data, as it gives us both
>> raw and host policies.
> 
> Here is the output from ADL runner:
> 
> Xen reports there are maximum 120 leaves and 2 MSRs
> Raw policy: 48 leaves, 2 MSRs
>  CPUID:
>   leaf     subleaf  -> eax      ebx      ecx      edx     
>   00000000:ffffffff -> 00000020:756e6547:6c65746e:49656e69
>   00000001:ffffffff -> 00090672:00800800:77fafbff:bfebfbff
>   00000002:ffffffff -> 00feff01:000000f0:00000000:00000000
>   00000004:00000000 -> fc004121:02c0003f:0000003f:00000000
>   00000004:00000001 -> fc004122:01c0003f:0000003f:00000000
>   00000004:00000002 -> fc01c143:0240003f:000007ff:00000000
>   00000004:00000003 -> fc1fc163:0240003f:00007fff:00000004
>   00000005:ffffffff -> 00000040:00000040:00000003:10102020
>   00000006:ffffffff -> 00df8ff7:00000002:00000409:00000003
>   00000007:00000000 -> 00000002:239c27eb:98c027ac:fc1cc410
>   00000007:00000001 -> 00400810:00000000:00000000:00040000
>   00000007:00000002 -> 00000000:00000000:00000000:00000017
>   0000000a:ffffffff -> 07300605:00000000:00000007:00008603
>   0000000b:00000000 -> 00000001:00000002:00000100:00000000
>   0000000b:00000001 -> 00000007:00000010:00000201:00000000
>   0000000d:00000000 -> 00000207:00000000:00000a88:00000000
>   0000000d:00000001 -> 0000000f:00000000:00019900:00000000
>   0000000d:00000002 -> 00000100:00000240:00000000:00000000
>   0000000d:00000008 -> 00000080:00000000:00000001:00000000
>   0000000d:00000009 -> 00000008:00000a80:00000000:00000000
>   0000000d:0000000b -> 00000010:00000000:00000001:00000000
>   0000000d:0000000c -> 00000018:00000000:00000001:00000000
>   0000000d:0000000f -> 00000328:00000000:00000001:00000000
>   0000000d:00000010 -> 00000008:00000000:00000001:00000000
>   80000000:ffffffff -> 80000008:00000000:00000000:00000000
>   80000001:ffffffff -> 00000000:00000000:00000121:2c100800
>   80000002:ffffffff -> 68743231:6e654720:746e4920:52286c65
>   80000003:ffffffff -> 6f432029:54286572:6920294d:32312d35
>   80000004:ffffffff -> 4b303036:00000000:00000000:00000000
>   80000006:ffffffff -> 00000000:00000000:05007040:00000000
>   80000007:ffffffff -> 00000000:00000000:00000000:00000100
>   80000008:ffffffff -> 0000302e:00000000:00000000:00000000
>  MSRs:
>   index    -> value           
>   000000ce -> 0000000080000000
>   0000010a -> 000000001488fd6b
> Host policy: 41 leaves, 2 MSRs
>  CPUID:
>   leaf     subleaf  -> eax      ebx      ecx      edx     
>   00000000:ffffffff -> 0000000d:756e6547:6c65746e:49656e69
>   00000001:ffffffff -> 00090672:00800800:77fafbff:bfebfbff
>   00000002:ffffffff -> 00feff01:000000f0:00000000:00000000
>   00000004:00000000 -> fc004121:02c0003f:0000003f:00000000
>   00000004:00000001 -> fc004122:01c0003f:0000003f:00000000
>   00000004:00000002 -> fc01c143:0240003f:000007ff:00000000
>   00000004:00000003 -> fc1fc163:0240003f:00007fff:00000004
>   00000005:ffffffff -> 00000040:00000040:00000003:10102020
>   00000006:ffffffff -> 00df8ff7:00000002:00000409:00000003

And everything as expected: The ARAT bit is set.

Jan


From xen-devel-bounces@lists.xenproject.org Thu Apr 02 07:01:29 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 02 Apr 2026 07:01:29 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1271164.1559435 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1w8C3I-0000D7-RI; Thu, 02 Apr 2026 07:01:16 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1271164.1559435; Thu, 02 Apr 2026 07: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 1w8C3I-0000D0-OD; Thu, 02 Apr 2026 07:01:16 +0000
Received: by outflank-mailman (input) for mailman id 1271164;
 Thu, 02 Apr 2026 07:01:15 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <jbeulich@suse.com>) id 1w8C3H-0000Ct-8Y
 for xen-devel@lists.xenproject.org; Thu, 02 Apr 2026 07:01:15 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1w8C3G-003mJV-H0
 for xen-devel@lists.xenproject.org; Thu, 02 Apr 2026 09:01:14 +0200
Received: from [10.42.69.9] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <jbeulich@suse.com>)
 id 69ce1439-bab6-0a2a0a5309dd-0a2a4509cb64-4
 for <xen-devel@lists.xenproject.org>; Thu, 02 Apr 2026 09:01:14 +0200
Received: from [209.85.128.50] (helo=mail-wm1-f50.google.com)
 by tlsNG-bad1c0.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.0)
 (envelope-from <jbeulich@suse.com>)
 id 69ce143a-bf79-0a2a45090019-d1558032d072-3
 for <xen-devel@lists.xenproject.org>; Thu, 02 Apr 2026 09:01:14 +0200
Received: by mail-wm1-f50.google.com with SMTP id
 5b1f17b1804b1-48702d51cd0so6150715e9.2
 for <xen-devel@lists.xenproject.org>; Thu, 02 Apr 2026 00:01:14 -0700 (PDT)
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-4887e80a63esm223399785e9.3.2026.04.02.00.01.12
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Thu, 02 Apr 2026 00:01:12 -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=google header.d=suse.com header.i="@suse.com" header.h="Content-Transfer-Encoding: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=1775113274; x=1775718074; darn=lists.xenproject.org;
        h=content-transfer-encoding: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;
        bh=RXj4wQc0dD5YbepVx6YL3xGwKLgJdWHMNwkXvgvjak4=;
        b=D6hU9a9tGEZvCnG6RMvi33x7sLOw6WV2npjTWsWSG0B47beBj7YHiGH11TIjn24ly+
         y0tWcQndb++ekM1hID3W3/27ve1oB1R5EhHEJQ83EPr5VvR1/uWJ5v5iipxHyMFWZYWR
         82EFdoWxhGFGkjYw4jGMvz9q3sACkizCGKNBXsXGVzdWaHB5GvRdR/v7vXYH6tuBSlIz
         XupmOhFauvv3ui2QRWNe3jbtHoSXKk6f/3FBcpqfdoGiJjM8N2HLMA9hyYbjSdsL6Pj6
         fMunXK4fTt3L939HSenAl+vlGUmse8T1NLzsv44iev5Wzduq3wDiKnly0Uh5Zo4iqBE8
         Y9dA==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20251104; t=1775113274; x=1775718074;
        h=content-transfer-encoding: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;
        bh=RXj4wQc0dD5YbepVx6YL3xGwKLgJdWHMNwkXvgvjak4=;
        b=XKtP483Pdh5rpTtDmI4kaCnn1PzVOvoo4rqvsmTroWGNSmKNlJRuFxynbuo1i5Mafb
         dVMIK0sUfooPtzi39uiNorM6gKIEbEmm0OenWqiNSZW59TgQ39rasSCvxNow3qEQzQhN
         +3BmQrqwnaZnRiAgnpyHhXI+Bk0es/KiHtNugjPfpWLl6dWie/wp2SGmzGj5mHV8h1Qx
         ocdRNsbWXGJJZDMU88uv4qieTzzdt8kAilDQjQhI7agdomh6MZ3+Mv0o9rr4QWwm0c0T
         XGJLvbviqyKiJN2yd5KxbZkdNI+4bqo4va1Nb86HkAzcfcaWuuUj+LXEz/ymbxJErWNm
         x+lw==
X-Gm-Message-State: AOJu0Yw/5Mg2A8JgKdccd0DKmcKAcbpV5LrG+J04keNHBUaiCCdLoHYe
	U1l6khDpI/ec7X1IQQGNWHT7KmqIrHBNWuRd7PSJs+WG6T41xX6jTwVtMoR9ZBxQ1A==
X-Gm-Gg: ATEYQzwQbrwksJxHNnbuhNKNxG2fw+ozflaJNL5ShQ/FDYOQHtQtk+WVkyv6wam9RW7
	qSup3/22QstiTJcFUz9+DxZqmL+cWObprikk+dWgWbv5MOxi1Y6nlY9NyjpEpNGBPeIdpCve8PP
	ub08Rfg9moavYw2iF41h+HR7Wz10YWEM9Wi6WLBnsENsgvSGI7rqPdmaRolxcHxzTa+zK+5M3VM
	OOHV73b5/7SS498IZDGF0yOkvF/lxSm0lcZIdJo+pHTwHvRI8oPFb2x9Rzzb8Ne1Ch3sBSB/4/+
	77LDNAISInFT8RXgTee7GsNJ9r5G0xNznububpupGXkgqhMEM9Vn2EPL/CFMzf1EGG6VPedZrfZ
	JxVkcNZKB0KumCyHDg+zlNvTB8cse6HpELqlRo0yOUr6ju8rHSKMvNxazxsBD+U1M6srAqqkT/A
	8NTcFuLeFc2CIPYd+fnxoUXfdo3hXfnA/yeXkG3nD3xBGvRTe/ZcpYqup52jYcr3eHIg2NJASIe
	ifMT2/8HceqSHT48QGrbhWntg==
X-Received: by 2002:a05:600c:818f:b0:485:3423:727d with SMTP id 5b1f17b1804b1-48883595de9mr102907305e9.26.1775113273211;
        Thu, 02 Apr 2026 00:01:13 -0700 (PDT)
Message-ID: <933a3e95-33d2-4e20-a4d5-2d8b20c2da7f@suse.com>
Date: Thu, 2 Apr 2026 09:01:12 +0200
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: IOMMU faults after S3
To: =?UTF-8?Q?Marek_Marczykowski-G=C3=B3recki?=
 <marmarek@invisiblethingslab.com>
Cc: xen-devel <xen-devel@lists.xenproject.org>
References: <acZZmGXIJlmN3KGm@mail-itl>
 <e8bbaae2-5cff-4549-9f27-fbbda7346f60@suse.com>
 <090b8b8f-141b-4a24-92eb-879c0a0c73e1@suse.com> <ac2nibFfvGm_7elv@mail-itl>
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: <ac2nibFfvGm_7elv@mail-itl>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
X-purgate-ID: tlsNG-bad1c0/1775113274-2DD57152-703E4107/0/0
X-purgate-type: clean
X-purgate-size: 4693

On 02.04.2026 01:17, Marek Marczykowski-Górecki wrote:
> On Wed, Apr 01, 2026 at 10:52:37AM +0200, Jan Beulich wrote:
>> On 01.04.2026 09:14, Jan Beulich wrote:
>>> On 27.03.2026 11:19, Marek Marczykowski-Górecki wrote:
>>>> I noticed that on some systems, there are a lot of IOMMU faults after
>>>> S3. I can see it also on a laptop with MTL, but it affects also the ADL
>>>> gitlab runner:
>>>>
>>>>     https://gitlab.com/xen-project/hardware/xen/-/jobs/13661033722
>>>>     (XEN) [   37.201160] [VT-D]DMAR:[DMA Write] Request device [0000:00:1e.6] fault addr 0
>>>>     (XEN) [   37.201164] [VT-D]DMAR: reason 02 - Present bit in context entry is clear
>>>>     (XEN) [   37.202332] [VT-D]DMAR:[DMA Write] Request device [0000:00:1e.6] fault addr 0
>>>>     (XEN) [   37.202339] [VT-D]DMAR: reason 02 - Present bit in context entry is clear
>>>>
>>>> Interestingly, the 0000:00:1e.6 device is not even listed by lspci.
>>>>
>>>> The issue is present only on staging, not staging-4.21.
>>>>
>>>> Bisect says:
>>>>
>>>> 5ec93b2f19ff8873fca65d38c1164b0a56d3898b is the first bad commit
>>>> commit 5ec93b2f19ff8873fca65d38c1164b0a56d3898b
>>>> Author: Jan Beulich <jbeulich@suse.com>
>>>> Date:   Thu Jan 22 14:13:35 2026 +0100
>>>>
>>>>     x86/HPET: drop .set_affinity hook
>>>
>>> Looking into this, I find several things I can't quite understand (yet).
>>> First there is
>>>
>>> (XEN) [000000456c0fe39f] Disabling HPET for being unreliable
>>>
>>> which looks to only affect clocksource selection, but not use as
>>> broadcast source for CPU-idle management. (This may be an independent
>>> issue.)
>>>
>>> Then there is
>>>
>>> (XEN) [    2.760248] HPET: 8 timers usable for broadcast (8 total)
>>>
>>> which should only occur on ARAT-incapable systems. That should only be
>>> older hardware. (On my much older Skylake I don't see this line, for
>>> example.) What does CPUID leaf 6 have on this system? Sadly xen-cpuid
>>> is purely featureset based, and hence doesn't expose info about that
>>> leaf. The leaf also isn't exposed to domains, so CPUID output in Dom0
>>> isn't useful to look at either. It would need to be CPUID output on a
>>> bare metal kernel.
>>>
>>> Further I suspect the fingered commit may only have uncovered an issue
>>> elsewhere. I don't think we clear any context table entries during
>>> suspend or resume. Hence in
>>>
>>> (XEN) [   20.554813] [VT-D]DMAR:[DMA Write] Request device [0000:00:1e.6] fault addr 0
>>> (XEN) [   20.554819] [VT-D]DMAR: reason 02 - Present bit in context entry is clear
>>>
>>> the latter message is confusing me.
>>>
>>> The fault address being zero may, otoh, be a hint of hpet_msi_write()
>>> never having run post-resume. Which may be the connection to the
>>> dropping of hpet_msi_set_affinity(), as that did call that function.
>>
>> There clearly is an issue with the handling of the max_cstate variable,
>> but I expect you don't use xenpm to limit usable C-states (there clearly
>> is no respective command line option in the log you referenced)?
> 
> No, I don't think so.
> 
>> From what the log has, I conclude hpet_broadcast_resume() is called.
> 
> I don't think so... I applied changes as attached and got this on
> resume:
> 
> (XEN) [   69.486120] Enabling non-boot CPUs  ...
> (XEN) [   69.486404] mwait-idle: state C1 is disabled
> (XEN) [   69.587869] mwait-idle: state C1 is disabled
> (XEN) [   69.588008] mwait-idle: state C1 is disabled
> (XEN) [   69.689438] mwait-idle: state C1 is disabled
> (XEN) [   69.689608] mwait-idle: state C1 is disabled
> (XEN) [   69.791066] mwait-idle: state C1 is disabled
> (XEN) [   69.791334] mwait-idle: state C1 is disabled
> (XEN) [   69.892938] mwait-idle: state C1 is disabled
> (XEN) [   69.893209] mwait-idle: state C1 is disabled
> (XEN) [   69.994890] mwait-idle: state C1 is disabled
> (XEN) [   69.995096] mwait-idle: state C1 is disabled
> (XEN) [   70.096638] mwait-idle: state C1 is disabled
> (XEN) [   70.096915] mwait-idle: state C1 is disabled
> (XEN) [   70.097093] mwait-idle: state C1 is disabled
> (XEN) [   70.097272] mwait-idle: state C1 is disabled
> (XEN) [   70.203357] [VT-D]DMAR:[DMA Write] Request device [0000:00:1e.6] fault addr 0
> (XEN) [   70.203363] [VT-D]DMAR: reason 02 - Present bit in context entry is clear

That was on the serial console or from xl dmesg? I ask because console_resume()
runs after time_resume(), so nothing appearing on the serial console would be
expected (I think).

Without hpet_broadcast_resume() running, I don't think I could explain how the
channels (and their FSB interrupts) would get enabled.

Jan


From xen-devel-bounces@lists.xenproject.org Thu Apr 02 07:55:32 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 02 Apr 2026 07:55:32 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1271199.1559444 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1w8Ctg-0006dv-Iz; Thu, 02 Apr 2026 07:55:24 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1271199.1559444; Thu, 02 Apr 2026 07:55: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 1w8Ctg-0006dn-Fb; Thu, 02 Apr 2026 07:55:24 +0000
Received: by outflank-mailman (input) for mailman id 1271199;
 Thu, 02 Apr 2026 07:55:23 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <marmarek@invisiblethingslab.com>) id 1w8Ctf-0006dh-IT
 for xen-devel@lists.xenproject.org; Thu, 02 Apr 2026 07:55:23 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1w8Cte-0011Yd-Pm
 for xen-devel@lists.xenproject.org; Thu, 02 Apr 2026 09:55:22 +0200
Received: from [10.42.69.11] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <marmarek@invisiblethingslab.com>)
 id 69ce20e2-5cb7-0a2a0a5109dd-0a2a450be780-26
 for <xen-devel@lists.xenproject.org>; Thu, 02 Apr 2026 09:55:22 +0200
Received: from [103.168.172.151] (helo=fout-a8-smtp.messagingengine.com)
 by tlsNG-42698a.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.0)
 (envelope-from <marmarek@invisiblethingslab.com>)
 id 69ce20e9-bca8-0a2a450b0019-67a8ac978271-3
 for <xen-devel@lists.xenproject.org>; Thu, 02 Apr 2026 09:55:22 +0200
Received: from phl-compute-06.internal (phl-compute-06.internal [10.202.2.46])
 by mailfout.phl.internal (Postfix) with ESMTP id 25F11EC01BF;
 Thu,  2 Apr 2026 03:55:21 -0400 (EDT)
Received: from phl-frontend-03 ([10.202.2.162])
 by phl-compute-06.internal (MEProxy); Thu, 02 Apr 2026 03:55:21 -0400
Received: by mail.messagingengine.com (Postfix) with ESMTPA; Thu,
 2 Apr 2026 03:55:19 -0400 (EDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
Authentication-Results: eu.smtp.expurgate.cloud; dkim=pass header.s=fm1 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=fm1; t=1775116521;
	 x=1775202921; bh=r6N+BPz6/4M9kFGy5RytlOtPbtcKh1UnxQLFi6GD31g=; b=
	JFBmNUoJj5JPmgUmDkSILFnW6DkcnplrYBv2ykiHYusunBF/I6Ubj4ZlwDa+v9zT
	mjRkgECGDZY/ykHXoFwLmBZfdCu2OS83rELDHQk43t+HRvxJ9H5F9qlgD2x7gDaQ
	p9V9USl8Abd7SMARCYnxMTyJiL5xFAJrERlWvLzsXHJOpMxom+zI/HiHqkGtYLfy
	zcAfeTgs0gW2LICRC7GgQjosTUvzLMxr+lbcqyq1lKFBauQpH04gqPAA3qNuidRA
	dFKYcbVSqNB2yBcrHvwGHd6fKfitome1ylHszhucYPxpp0JlQJ2zH3CG64J7UGJB
	jBSCD4AfaBwpDJey1IMRig==
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=
	1775116521; x=1775202921; bh=r6N+BPz6/4M9kFGy5RytlOtPbtcKh1UnxQL
	Fi6GD31g=; b=sHwxvQbYji4ZgT1QB/oywkhigpGXAb2XOUCYPjTugNH/tTGcD+t
	XHiv8fqLIkOLydtgVkmnu3zkdvBC+SmoPzaMDDKM/2I4F0zXDI57w+GIItKUdMAo
	IvvsOfiMgO7x6GX2Cw/6rOMnS1U7oA/SnHTniIi87RTdx9BP4jKmPyw6O+sr81Ae
	I7J7EjTmC19ZhxtWnPUNtv+AzSh3Gut2rGMm+W1jAbFDzOv+Jj9fzSs0/6+nd6bG
	6uV9EMwPo+6VnVXAxQrFWm8V9g+YralOKk+65Q5qkLCkFsG5BG+ZSf3+UorD5pE3
	HhSr4RY0F/26y4SdQM7AWoEf7gnx1CR1b2A==
X-ME-Sender: <xms:6CDOaX27MEnZQLritHiNyZvxow6nXE_WsNOPpbGI6lEa6OF6ShkIMA>
    <xme:6CDOadgZQOGY6g8iBqjBa6_DOUu5Wo96GYTesk69VRV5UH-h0OxQK1t4VNXW7-Hro
    XVgvwYRFvQuP2Lq74uLzBHtq80kdR0GTmsA1a_B3KdwImFlcw>
X-ME-Received: <xmr:6CDOaVQZIddMFHToY8n8fJnIXDcBnyCAunZDQl0NIjhrJIXoMV_Q6jw>
X-ME-Proxy-Cause: gggruggvucftvghtrhhoucdtuddrgeefhedrtddtgdehgeejucetufdoteggodetrfdotf
    fvucfrrhhofhhilhgvmecuhfgrshhtofgrihhlpdfurfetoffkrfgpnffqhgenuceurghi
    lhhouhhtmecufedttdenucesvcftvggtihhpihgvnhhtshculddquddttddmnecujfgurh
    epfffhvfevuffkfhggtggujgesghdtreertddtjeenucfhrhhomhepofgrrhgvkhcuofgr
    rhgtiiihkhhofihskhhiuceomhgrrhhmrghrvghksehinhhvihhsihgslhgvthhhihhngh
    hslhgrsgdrtghomheqnecuggftrfgrthhtvghrnhepgfekuddtffettefhieeuheffkeeu
    ffelvdffuddtteetledtveekfeekleehjefgnecuvehluhhsthgvrhfuihiivgeptdenuc
    frrghrrghmpehmrghilhhfrhhomhepmhgrrhhmrghrvghksehinhhvihhsihgslhgvthhh
    ihhnghhslhgrsgdrtghomhdpnhgspghrtghpthhtohepfedpmhhouggvpehsmhhtphhouh
    htpdhrtghpthhtohepjhgsvghulhhitghhsehsuhhsvgdrtghomhdprhgtphhtthhopeig
    vghnqdguvghvvghlsehlihhsthhsrdigvghnphhrohhjvggtthdrohhrghdprhgtphhtth
    hopeguphhsmhhithhhsegrphgvrhhtuhhsshholhhuthhiohhnshdrtghomh
X-ME-Proxy: <xmx:6CDOaWjEE3A9_FIgi6GqPvexLA3a6HHiza-xNuQpFT67EVxlKwDNsw>
    <xmx:6CDOad6LISVIo6fmMvJV4EJccT86L4GpLfNHlOsVOkM3Pg_zbkm75w>
    <xmx:6CDOabCCK3I0ue0zS9JrSqsHSQLyveN9oT__i8EiroPuVNhbBjAjRQ>
    <xmx:6CDOacbOAzwRfLK2FZBE9JkMUIxcrx9AA8hH5VRymBNocsUAgX2Uag>
    <xmx:6SDOae67o2yD4rcBKw8lGyXPmVtOo1vCPi5o9_YnJPZnO-SA2dRoP8wK>
Feedback-ID: i1568416f:Fastmail
Date: Thu, 2 Apr 2026 09:55:17 +0200
From: Marek Marczykowski <marmarek@invisiblethingslab.com>
To: Jan Beulich <jbeulich@suse.com>
Cc: "xen-devel@lists.xenproject.org" <xen-devel@lists.xenproject.org>,
	Daniel Smith <dpsmith@apertussolutions.com>
Subject: Re: [PATCH v2 0/2] EFI: cfg file parsing adjustments
Message-ID: <ac4g5ZwuiSSGg8jD@mail-itl>
References: <aa19318c-c91a-4cda-b36f-d2049914c42c@suse.com>
MIME-Version: 1.0
Content-Type: multipart/signed; micalg=pgp-sha256;
	protocol="application/pgp-signature"; boundary="+dL6MHepi0FMhhT8"
Content-Disposition: inline
In-Reply-To: <aa19318c-c91a-4cda-b36f-d2049914c42c@suse.com>
X-purgate-ID: tlsNG-42698a/1775116522-F55CD2A1-476980B4/0/0
X-purgate-type: clean
X-purgate-size: 1404


--+dL6MHepi0FMhhT8
Content-Type: text/plain; protected-headers=v1; charset=utf-8
Content-Disposition: inline
Content-Transfer-Encoding: quoted-printable
Date: Thu, 2 Apr 2026 09:55:17 +0200
From: Marek Marczykowski <marmarek@invisiblethingslab.com>
To: Jan Beulich <jbeulich@suse.com>
Cc: "xen-devel@lists.xenproject.org" <xen-devel@lists.xenproject.org>,
	Daniel Smith <dpsmith@apertussolutions.com>
Subject: Re: [PATCH v2 0/2] EFI: cfg file parsing adjustments

On Wed, Mar 25, 2026 at 02:22:57PM +0100, Jan Beulich wrote:
> 1: avoid OOB config file reads
> 2: move pre_parse() back next to get_value()

For the series:
Acked-by: Marek Marczykowski-G=C3=B3recki <marmarek@invisiblethingslab.com>

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

--+dL6MHepi0FMhhT8
Content-Type: application/pgp-signature; name=signature.asc

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

iQEzBAEBCAAdFiEEhrpukzGPukRmQqkK24/THMrX1ywFAmnOIOUACgkQ24/THMrX
1yw8lQf/cLC86DoKVly3CoLDw9JqxyNwUweMZmo8uWqDObsDp8SoZCCpsxjGjmPF
uA6E2yVtlaPZwZilVCJ0AzX5CJ+sdfguChs2uKn3O885bVHssbiNLBKbpohA05xF
mgwOISfFCJBOgQuBEmf1vl+m4T/f+/zAAGt2Ie7IAxdhmsHPzmVMCqmClp2ncdUN
CYSuUJyQ6OAyOLSsfqzHFQ7JYhJlEkYsHQy/2DqzXigYCPsMZCb75Pn/EntRiqoZ
wOkkTwt3UZwyMF3XFCfYgklb0+r6riFZ+y2wBvnBzw3Ftp02DidUlLm27BiIpPC3
Pwjvt5/sRkYDw883VGmbtCgiQv+VdQ==
=khtC
-----END PGP SIGNATURE-----

--+dL6MHepi0FMhhT8--


From xen-devel-bounces@lists.xenproject.org Thu Apr 02 07:57:04 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 02 Apr 2026 07:57:04 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1271211.1559452 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1w8CvH-0007DM-VB; Thu, 02 Apr 2026 07:57:03 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1271211.1559452; Thu, 02 Apr 2026 07:57: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 1w8CvH-0007DF-Sf; Thu, 02 Apr 2026 07:57:03 +0000
Received: by outflank-mailman (input) for mailman id 1271211;
 Thu, 02 Apr 2026 07:57:02 +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 1w8CvG-0007D9-Jm
 for xen-devel@lists.xenproject.org; Thu, 02 Apr 2026 07:57:02 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1w8CvF-00E31A-WE
 for xen-devel@lists.xenproject.org; Thu, 02 Apr 2026 09:57:02 +0200
Received: from [10.42.69.4] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <Michal.Orzel@amd.com>)
 id 69ce2147-e002-0a2a0a5209dd-0a2a4504c31c-18
 for <xen-devel@lists.xenproject.org>; Thu, 02 Apr 2026 09:57:01 +0200
Received: from [40.93.195.63]
 (helo=SN4PR2101CU001.outbound.protection.outlook.com)
 by tlsNG-ebf023.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.0)
 (envelope-from <Michal.Orzel@amd.com>)
 id 69ce214b-bb33-0a2a45040019-285dc33f491f-4
 for <xen-devel@lists.xenproject.org>; Thu, 02 Apr 2026 09:57:01 +0200
Received: from CH5P223CA0010.NAMP223.PROD.OUTLOOK.COM (2603:10b6:610:1f3::11)
 by CH3PR12MB8909.namprd12.prod.outlook.com (2603:10b6:610:179::10)
 with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9769.18; Thu, 2 Apr
 2026 07:56:56 +0000
Received: from CH1PEPF0000A348.namprd04.prod.outlook.com
 (2603:10b6:610:1f3:cafe::5f) by CH5P223CA0010.outlook.office365.com
 (2603:10b6:610:1f3::11) with Microsoft SMTP Server (version=TLS1_3,
 cipher=TLS_AES_256_GCM_SHA384) id 15.20.9769.18 via Frontend Transport; Thu,
 2 Apr 2026 07:56:56 +0000
Received: from satlexmb07.amd.com (165.204.84.17) by
 CH1PEPF0000A348.mail.protection.outlook.com (10.167.244.4) with Microsoft
 SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id
 15.20.9769.17 via Frontend Transport; Thu, 2 Apr 2026 07:56:56 +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.17; Thu, 2 Apr
 2026 02:56:55 -0500
Received: from XIR-MICHALO-L1.xilinx.com (10.180.168.240) by
 satlexmb08.amd.com (10.181.42.217) with Microsoft SMTP Server id 15.2.2562.17
 via Frontend Transport; Thu, 2 Apr 2026 02:56:54 -0500
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@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=lbkW3URMXAJXcFq6QnW15PpK2YwbPGg/wGv6FKqq2DeuwUhvjtPkO2JwsMvna0CllQ/8CSK2im2ncPOHBPDa6nrf1/adVViRl4yee1OjGr6lpjwrvwgcBSl6WgJ/B4/hb/oNRqNTen53ej9WsGR46p9Uok0rdUerY+TjQCpE400Q8UVGoqo3+L+ywHy3ZV6cN6l2+QSqhsp7IW92oQSRVKOsoIweLjpi+b8qyw9+YpfryHg5CEYhNaBhb/SuWcS+/QmSFr9dL1Q0uGGwbwYmmmluso8dOwAcf4eXyXVds8id7/TcUDCAhEF1bBSVy8Ce/uZiAZ5XDGpoD7peP5u7gg==
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com;
 s=arcselector10001;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1;
 bh=NN+Hj3NXD8BbcBpU/hqwCcd8XXUb5DDshpgmWT1oq/I=;
 b=Zey3PFosMWCxID+zcIo2izhdAjs/nIOV+tR5I/LJjTsqTo+4sA47y7S7nT+WRmspRWHxnDTeocJMwj75/nIUhB7zzDbKZi+rn1vs1Ba2wrUyjF+aHFRx1aJJMM059IKSvW5bxs20eUgprHiYaLH+V/g3kCn+ShshbkPca7OIU7A7f8VnvQZTE8i0nPc4osCQg6G+mcg0dyHRklE4wI2wreGYek5Msmq/MjYBpQgWM3vJ0UhMM1lessWG+3NvXRr5/zgIM7fXFdcMFFstA67SGaI42uRn9s6OhsdGj6tzaSSLGmybLo+xW/9CcnDHh6mdINCy/VgRcIBgTjWyqKj2oQ==
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=NN+Hj3NXD8BbcBpU/hqwCcd8XXUb5DDshpgmWT1oq/I=;
 b=EAvyY1sZFEPGNfpcF1NUZCa0nzjH2jMe6GmsLkaVqd0hPPzyqgHqnwW7yxkwg2PyLrVM3W5XOzNHmh+M1sQCQ8sJH/AiKMpP3VzNOLBcj8vAuk321xfBXAWr+zYsn0Rrr/7mSFOms9i4OaPRfJRaYqv7BzWxVKIMRWt7I3AR9N8=
X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 165.204.84.17)
 smtp.mailfrom=amd.com; dkim=none (message not signed)
 header.d=none;dmarc=pass action=none header.from=amd.com;
Received-SPF: Pass (protection.outlook.com: domain of amd.com designates
 165.204.84.17 as permitted sender) receiver=protection.outlook.com;
 client-ip=165.204.84.17; helo=satlexmb07.amd.com; pr=C
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: mpu: Fix ioremap_attr region size and return value
Date: Thu, 2 Apr 2026 09:56:45 +0200
Message-ID: <20260402075645.52583-1-michal.orzel@amd.com>
X-Mailer: git-send-email 2.43.0
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: CH1PEPF0000A348:EE_|CH3PR12MB8909:EE_
X-MS-Office365-Filtering-Correlation-Id: d6a4d0f9-acb1-4137-9f08-08de908d694e
X-MS-Exchange-SenderADCheck: 1
X-MS-Exchange-AntiSpam-Relay: 0
X-Microsoft-Antispam:
	BCL:0;ARA:13230040|82310400026|1800799024|36860700016|376014|56012099003|18002099003;
X-Microsoft-Antispam-Message-Info:
	+elA5Ll5Kz+jfZhU/4XwElU7f/a66YcPTwJHCVpBPjtRwVdffpn7AOhwhVxX8O7VG+gtca7TnRg1finSwQaMDLIz1cjQ3Orpwk6gbGfIujCl/OEzTErjtqsiUKGW5OMv35zgbzy+p6lRRpu2vIkiwpqli/wXxaIzzhFA90GkHLBl2Myaam8nnu1sKack8eNdZ1dok3aKICNVQDE8irqG0vhYKav9P9PCiWAoo5waQUkcLstdN+bk0Aw2Yv4JXfXJigj8ZZCwuCg9TaKxduQKAfVSBDpVUqxp4PbA+ffXdqcci1vgce/GSjX183fsML8tjVPjhrKVQmEP5E0tqbYACMTdNgemaAi0M7mHENjd6m2BS6vkXdhL6FTr4KgnHefwj4wV0MonCF9u0uk3VaFuszPgqhxtagQxU8au6mfRMQtHOgyP4QM1mM/WjfaL7SJ1vz5TVvzBUXDaV0BRlROIPVBHB/hMhm+WHRzzw4xnrG+6Uot0u7ErJXBypQnx3596i/37k+PbKupIYYdDULSWZBZJyGJxun6xHq2SK4AUvwiGGnOuOZJOA4FSe/FYoxlF/XgqLr5xXFHOm8p9y4YiMtdwoCUeDG+ZwJZONV3EYYhsjFGjLr6sff0Bb6vHJk0TOWHebiMmC5A4QKOsx41makzB63kO8EYY6Hla+0vLfsk1K7wShrr6fn4ZiupSGcfjMzAlz3tS3PJBpWqr8qxsDtSRtY6IBYeS2WYiHDzE7XEzujseDWiAE2lH8UAv0LdejAnpVd0ktti8TKJbTW3rIg==
X-Forefront-Antispam-Report:
	CIP:165.204.84.17;CTRY:US;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:satlexmb07.amd.com;PTR:InfoDomainNonexistent;CAT:NONE;SFS:(13230040)(82310400026)(1800799024)(36860700016)(376014)(56012099003)(18002099003);DIR:OUT;SFP:1101;
X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1
X-MS-Exchange-AntiSpam-MessageData-0:
	Iyr20FpUSgXtvjbbbrb6yY9pinKqgCdGsXmnW4CuwpH/rk3IjxhciWZCI2pJWqTlDnsOfD6xCXP3zh1ocay/lyIcwIwfj00tCOScYjb5LxL1OcqN6e2yFlrKmciMXZUDUsEJz4fbDFuHrp/OzPCQf9p5xgLgZHwiIyxwqq3aAFYkljsH+nKQtl/l2TJprLGITQrCKTeagpHu0fFXurkP/CDysPtwVuHfupf+lYVItSfrCJmKednZvs1FUh6kfJEBoTzFT2IdGKXzewak3MbtM47lHsVYch+hRyud/qknc5eafcTdHX8PofHkRtiqo9pS4P3NEW7DiVySDJ6ZK/TFUKBpZMwhL/DNrjIZkpkhoyOXIcm+SEiDEubtUx1ZQ/5M2eP6pcBZGssEmvzyevo8XYOmyB3G3yjRejPJplhfrttRgEgbjy7r7jAMFLuFYTWl
X-OriginatorOrg: amd.com
X-MS-Exchange-CrossTenant-OriginalArrivalTime: 02 Apr 2026 07:56:56.4185
 (UTC)
X-MS-Exchange-CrossTenant-Network-Message-Id: d6a4d0f9-acb1-4137-9f08-08de908d694e
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:
	CH1PEPF0000A348.namprd04.prod.outlook.com
X-MS-Exchange-CrossTenant-AuthAs: Anonymous
X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem
X-MS-Exchange-Transport-CrossTenantHeadersStamped: CH3PR12MB8909
X-purgate-ID: tlsNG-ebf023/1775116621-3253B51B-0596B155/0/0
X-purgate-type: clean
X-purgate-size: 1635

ioremap_attr() computes end_pg as round_pgup(start_pg + len), but
start_pg has already had the sub-page offset stripped by round_pgdown().
When start is not page-aligned, the sub-page offset is lost and the
resulting MPU protection region can be one page too small, leaving the
tail of the requested range covered by something else.

Additionally, the function returns maddr_to_virt(start_pg) — the
page-aligned base dropping the sub-page offset that callers (e.g. ioremap
of an unaligned MMIO base) depend on to reach the correct register block.

Fix end_pg to use the original start so the sub-page tail is included
in the rounding, and return the original start address to preserve the
offset, matching the behaviour of other ioremap implementations.

Fixes: efeec4c70798 ("arm/mpu: Implement ioremap_attr for MPU")
Signed-off-by: Michal Orzel <michal.orzel@amd.com>
---
 xen/arch/arm/mpu/mm.c | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/xen/arch/arm/mpu/mm.c b/xen/arch/arm/mpu/mm.c
index 6b3b0b06e95d..aff88bd3a9c1 100644
--- a/xen/arch/arm/mpu/mm.c
+++ b/xen/arch/arm/mpu/mm.c
@@ -596,13 +596,13 @@ void free_init_memory(void)
 void __iomem *ioremap_attr(paddr_t start, size_t len, unsigned int flags)
 {
     paddr_t start_pg = round_pgdown(start);
-    paddr_t end_pg = round_pgup(start_pg + len);
+    paddr_t end_pg = round_pgup(start + len);
 
     if ( xen_mpumap_update(start_pg, end_pg, flags) )
         return NULL;
 
     /* Mapped or already mapped */
-    return maddr_to_virt(start_pg);
+    return maddr_to_virt(start);
 }
 
 /*
-- 
2.43.0



From xen-devel-bounces@lists.xenproject.org Thu Apr 02 08:09:01 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 02 Apr 2026 08:09:01 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1271235.1559463 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1w8D6f-0001CC-AH; Thu, 02 Apr 2026 08:08:49 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1271235.1559463; Thu, 02 Apr 2026 08:08: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 1w8D6f-0001C5-6X; Thu, 02 Apr 2026 08:08:49 +0000
Received: by outflank-mailman (input) for mailman id 1271235;
 Thu, 02 Apr 2026 08:08:48 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <marmarek@invisiblethingslab.com>) id 1w8D6e-0001Bz-JF
 for xen-devel@lists.xenproject.org; Thu, 02 Apr 2026 08:08:48 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1w8D6c-004BUV-Cn
 for xen-devel@lists.xenproject.org; Thu, 02 Apr 2026 10:08:47 +0200
Received: from [10.42.69.3] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <marmarek@invisiblethingslab.com>)
 id 69ce240e-5cb7-0a2a0a5109dd-0a2a4503d084-8
 for <xen-devel@lists.xenproject.org>; Thu, 02 Apr 2026 10:08:47 +0200
Received: from [103.168.172.151] (helo=fout-a8-smtp.messagingengine.com)
 by tlsNG-33051d.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.0)
 (envelope-from <marmarek@invisiblethingslab.com>)
 id 69ce240e-02b3-0a2a45030019-67a8ac97d77b-3
 for <xen-devel@lists.xenproject.org>; Thu, 02 Apr 2026 10:08:47 +0200
Received: from phl-compute-02.internal (phl-compute-02.internal [10.202.2.42])
 by mailfout.phl.internal (Postfix) with ESMTP id C9C79EC01BE;
 Thu,  2 Apr 2026 04:08:45 -0400 (EDT)
Received: from phl-frontend-04 ([10.202.2.163])
 by phl-compute-02.internal (MEProxy); Thu, 02 Apr 2026 04:08:45 -0400
Received: by mail.messagingengine.com (Postfix) with ESMTPA; Thu,
 2 Apr 2026 04:08:44 -0400 (EDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
Authentication-Results: eu.smtp.expurgate.cloud; dkim=pass header.s=fm1 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=fm1; t=1775117325;
	 x=1775203725; bh=OKUvNuiD6UMaS5rdnTjVP4+tYJV//TVFbwC5VSDpJbc=; b=
	BEKqK0zadc9xebfCjZMGyLEeKgo9QmqhT8hTsAdJKXh0Xt3R2zHfLmDvUunXd/dn
	QRBCBQ1zK7SQ5f/NpamRkZHtTHRVlFUbmCtrhzfexXXzHnGVr5F3C+xLQQ3XPaYc
	2eHS/NjlaqHAOkQq7bvh9BuyDtY2Uvv85kBIvoYpUemDE9NzF4C+bZSSC+9ZeVIo
	7Vn7avWhV/ASpgaCuKVwkeSeDV+pB2rM9Dd7Ziku39HyvqjOGZBQidf6OXXTv7yw
	D/u3wWfwOIk1suX/SDxDYaeDF2zarrmzJ2ilCEzXur/fSWp43pCF7y1RgVvNx+v/
	K2GDleYwIIoi206dKTs+Yg==
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=
	1775117325; x=1775203725; bh=OKUvNuiD6UMaS5rdnTjVP4+tYJV//TVFbwC
	5VSDpJbc=; b=RvgsNUkIkCZ9Gm88zMESiDMeyYsbrQGywgG8qe8l8UND0BiJHQf
	+v/bzO0JGPzviWXSpbFRnrBSk7VUm/GCpLlr6gKIv2BKXp6W2B31Myl0cl/V//ON
	aO+4xbT6o5Uaxb+714qgELBoxLMsIXpPsjejTXWOQNPYlfxrEtniJ3vmKvDjxHLG
	qG2M4rOjWrcGCadkd9vEhjg0I9QuF8WflsPmcZMmQhVt2fC4m2q/xpgMkI40cdl+
	doA4cgC8JhyDYz2l9zjhq7WHVkOdqoypXSmU0fDJ8BoDBKGHf5sv5aR6sidhgI1T
	Pso6UDMj14ap6hlhzmSN3h54sCLFhCQ/iOw==
X-ME-Sender: <xms:DSTOaQnq7zqXFG4CeLhR67bEB2pVzc_gcNaft1jdIv5cmwhl1w9MqQ>
    <xme:DSTOaV1bSgsl-YfjVv78G3unr3sKYRyn-5dDbL016CgopRPojpKvRmBcLzgLTBTsY
    OJRa_ypZw5kSKsGiDxt2TDg8HdyC5I_LhA6p5gPPXNVqsEy3A>
X-ME-Received: <xmr:DSTOacRqw7BxfY-ddaAFhbS4OOe9YZWi41YQ7-THABk2wjrovSbfJok>
X-ME-Proxy-Cause: gggruggvucftvghtrhhoucdtuddrgeefhedrtddtgdehhedtucetufdoteggodetrfdotf
    fvucfrrhhofhhilhgvmecuhfgrshhtofgrihhlpdfurfetoffkrfgpnffqhgenuceurghi
    lhhouhhtmecufedttdenucesvcftvggtihhpihgvnhhtshculddquddttddmnecujfgurh
    epfffhvfevuffkfhggtggujgesghdtreertddtjeenucfhrhhomhepofgrrhgvkhcuofgr
    rhgtiiihkhhofihskhhiqdfikphrvggtkhhiuceomhgrrhhmrghrvghksehinhhvihhsih
    gslhgvthhhihhnghhslhgrsgdrtghomheqnecuggftrfgrthhtvghrnhepveeujeetgeel
    leetudeuvefhtefgffejvedtvdfgieevheetheelgeeuledvjeevnecuffhomhgrihhnpe
    hgihhtlhgrsgdrtghomhenucevlhhushhtvghrufhiiigvpedtnecurfgrrhgrmhepmhgr
    ihhlfhhrohhmpehmrghrmhgrrhgvkhesihhnvhhishhisghlvghthhhinhhgshhlrggsrd
    gtohhmpdhnsggprhgtphhtthhopedvpdhmohguvgepshhmthhpohhuthdprhgtphhtthho
    pehjsggvuhhlihgthhesshhushgvrdgtohhmpdhrtghpthhtohepgigvnhdquggvvhgvlh
    eslhhishhtshdrgigvnhhprhhojhgvtghtrdhorhhg
X-ME-Proxy: <xmx:DSTOaXvWqmEta84K4IEoCveXYwH6uH958JaRwvFdm4l_MhN8-mMF7Q>
    <xmx:DSTOaRZSml88k1vydHGYey45ZnNQBfozhHiDkLDK4-0zvhqmeDbiEQ>
    <xmx:DSTOacuiVLgViT6VScxBxjweE9k7kzMLscJTzg9MuhZFTC94finsuQ>
    <xmx:DSTOaTFlBH9qXk_E-CpYp2tsRpktkkV7ynV3lOOX5MgH1-g9H2cgDg>
    <xmx:DSTOaS4A3NJQJkgGQlXUYoxNlLEFh3oA3NuOQA1a79A76t0Suussfzhs>
Feedback-ID: i1568416f:Fastmail
Date: Thu, 2 Apr 2026 10:08:42 +0200
From: Marek =?utf-8?Q?Marczykowski-G=C3=B3recki?= <marmarek@invisiblethingslab.com>
To: Jan Beulich <jbeulich@suse.com>
Cc: xen-devel <xen-devel@lists.xenproject.org>
Subject: Re: IOMMU faults after S3
Message-ID: <ac4kCq87SQSc6ddV@mail-itl>
References: <acZZmGXIJlmN3KGm@mail-itl>
 <e8bbaae2-5cff-4549-9f27-fbbda7346f60@suse.com>
 <090b8b8f-141b-4a24-92eb-879c0a0c73e1@suse.com>
 <ac2nibFfvGm_7elv@mail-itl>
 <933a3e95-33d2-4e20-a4d5-2d8b20c2da7f@suse.com>
MIME-Version: 1.0
Content-Type: multipart/signed; micalg=pgp-sha256;
	protocol="application/pgp-signature"; boundary="bhkLNO4Ucmh0/XDZ"
Content-Disposition: inline
In-Reply-To: <933a3e95-33d2-4e20-a4d5-2d8b20c2da7f@suse.com>
X-purgate-ID: tlsNG-33051d/1775117327-4076BC9A-8DFE98A3/0/0
X-purgate-type: clean
X-purgate-size: 18585


--bhkLNO4Ucmh0/XDZ
Content-Type: text/plain; protected-headers=v1; charset=utf-8
Content-Disposition: inline
Content-Transfer-Encoding: quoted-printable
Date: Thu, 2 Apr 2026 10:08:42 +0200
From: Marek =?utf-8?Q?Marczykowski-G=C3=B3recki?= <marmarek@invisiblethingslab.com>
To: Jan Beulich <jbeulich@suse.com>
Cc: xen-devel <xen-devel@lists.xenproject.org>
Subject: Re: IOMMU faults after S3

On Thu, Apr 02, 2026 at 09:01:12AM +0200, Jan Beulich wrote:
> On 02.04.2026 01:17, Marek Marczykowski-G=C3=B3recki wrote:
> > On Wed, Apr 01, 2026 at 10:52:37AM +0200, Jan Beulich wrote:
> >> On 01.04.2026 09:14, Jan Beulich wrote:
> >>> On 27.03.2026 11:19, Marek Marczykowski-G=C3=B3recki wrote:
> >>>> I noticed that on some systems, there are a lot of IOMMU faults after
> >>>> S3. I can see it also on a laptop with MTL, but it affects also the =
ADL
> >>>> gitlab runner:
> >>>>
> >>>>     https://gitlab.com/xen-project/hardware/xen/-/jobs/13661033722
> >>>>     (XEN) [   37.201160] [VT-D]DMAR:[DMA Write] Request device [0000=
:00:1e.6] fault addr 0
> >>>>     (XEN) [   37.201164] [VT-D]DMAR: reason 02 - Present bit in cont=
ext entry is clear
> >>>>     (XEN) [   37.202332] [VT-D]DMAR:[DMA Write] Request device [0000=
:00:1e.6] fault addr 0
> >>>>     (XEN) [   37.202339] [VT-D]DMAR: reason 02 - Present bit in cont=
ext entry is clear
> >>>>
> >>>> Interestingly, the 0000:00:1e.6 device is not even listed by lspci.
> >>>>
> >>>> The issue is present only on staging, not staging-4.21.
> >>>>
> >>>> Bisect says:
> >>>>
> >>>> 5ec93b2f19ff8873fca65d38c1164b0a56d3898b is the first bad commit
> >>>> commit 5ec93b2f19ff8873fca65d38c1164b0a56d3898b
> >>>> Author: Jan Beulich <jbeulich@suse.com>
> >>>> Date:   Thu Jan 22 14:13:35 2026 +0100
> >>>>
> >>>>     x86/HPET: drop .set_affinity hook
> >>>
> >>> Looking into this, I find several things I can't quite understand (ye=
t).
> >>> First there is
> >>>
> >>> (XEN) [000000456c0fe39f] Disabling HPET for being unreliable
> >>>
> >>> which looks to only affect clocksource selection, but not use as
> >>> broadcast source for CPU-idle management. (This may be an independent
> >>> issue.)
> >>>
> >>> Then there is
> >>>
> >>> (XEN) [    2.760248] HPET: 8 timers usable for broadcast (8 total)
> >>>
> >>> which should only occur on ARAT-incapable systems. That should only be
> >>> older hardware. (On my much older Skylake I don't see this line, for
> >>> example.) What does CPUID leaf 6 have on this system? Sadly xen-cpuid
> >>> is purely featureset based, and hence doesn't expose info about that
> >>> leaf. The leaf also isn't exposed to domains, so CPUID output in Dom0
> >>> isn't useful to look at either. It would need to be CPUID output on a
> >>> bare metal kernel.
> >>>
> >>> Further I suspect the fingered commit may only have uncovered an issue
> >>> elsewhere. I don't think we clear any context table entries during
> >>> suspend or resume. Hence in
> >>>
> >>> (XEN) [   20.554813] [VT-D]DMAR:[DMA Write] Request device [0000:00:1=
e.6] fault addr 0
> >>> (XEN) [   20.554819] [VT-D]DMAR: reason 02 - Present bit in context e=
ntry is clear
> >>>
> >>> the latter message is confusing me.
> >>>
> >>> The fault address being zero may, otoh, be a hint of hpet_msi_write()
> >>> never having run post-resume. Which may be the connection to the
> >>> dropping of hpet_msi_set_affinity(), as that did call that function.
> >>
> >> There clearly is an issue with the handling of the max_cstate variable,
> >> but I expect you don't use xenpm to limit usable C-states (there clear=
ly
> >> is no respective command line option in the log you referenced)?
> >=20
> > No, I don't think so.
> >=20
> >> From what the log has, I conclude hpet_broadcast_resume() is called.
> >=20
> > I don't think so... I applied changes as attached and got this on
> > resume:
> >=20
> > (XEN) [   69.486120] Enabling non-boot CPUs  ...
> > (XEN) [   69.486404] mwait-idle: state C1 is disabled
> > (XEN) [   69.587869] mwait-idle: state C1 is disabled
> > (XEN) [   69.588008] mwait-idle: state C1 is disabled
> > (XEN) [   69.689438] mwait-idle: state C1 is disabled
> > (XEN) [   69.689608] mwait-idle: state C1 is disabled
> > (XEN) [   69.791066] mwait-idle: state C1 is disabled
> > (XEN) [   69.791334] mwait-idle: state C1 is disabled
> > (XEN) [   69.892938] mwait-idle: state C1 is disabled
> > (XEN) [   69.893209] mwait-idle: state C1 is disabled
> > (XEN) [   69.994890] mwait-idle: state C1 is disabled
> > (XEN) [   69.995096] mwait-idle: state C1 is disabled
> > (XEN) [   70.096638] mwait-idle: state C1 is disabled
> > (XEN) [   70.096915] mwait-idle: state C1 is disabled
> > (XEN) [   70.097093] mwait-idle: state C1 is disabled
> > (XEN) [   70.097272] mwait-idle: state C1 is disabled
> > (XEN) [   70.203357] [VT-D]DMAR:[DMA Write] Request device [0000:00:1e.=
6] fault addr 0
> > (XEN) [   70.203363] [VT-D]DMAR: reason 02 - Present bit in context ent=
ry is clear
>=20
> That was on the serial console or from xl dmesg? I ask because console_re=
sume()
> runs after time_resume(), so nothing appearing on the serial console woul=
d be
> expected (I think).

Ah, right, that's why I don't see my messages.
The xl dmesg output (from MTL this time):

    (XEN) [  123.477511] Entering ACPI S3 state.
    (XEN) [18446743903.571842] _disable_pit_irq:2649: using_pit: 0, cpu_has=
_apic: 1
    (XEN) [18446743903.571856] _disable_pit_irq:2659: cpuidle_using_deep_cs=
tate: 1, boot_cpu_has(X86_FEATURE_XEN_ARAT): 0
    (XEN) [18446743903.571866] _disable_pit_irq:2662: init: 0
    (XEN) [18446743903.571877] hpet_broadcast_resume:661: hpet_events: ffff=
83046bc1f080
    (XEN) [18446743903.572020] hpet_broadcast_resume:672: num_hpets_used: 8
    (XEN) [18446743903.572029] hpet_broadcast_resume:690: cfg: 0x1
    (XEN) [18446743903.572040] hpet_broadcast_resume:695: i:0, hpet_events[=
i].msi.irq: 122, hpet_events[i].flags: 0
    (XEN) [18446743903.572081] hpet_broadcast_resume:706: i:0, cfg: 0xc134
    (XEN) [18446743903.572089] hpet_broadcast_resume:695: i:1, hpet_events[=
i].msi.irq: 123, hpet_events[i].flags: 0
    (XEN) [18446743903.572123] hpet_broadcast_resume:706: i:1, cfg: 0xc104
    (XEN) [18446743903.572132] hpet_broadcast_resume:695: i:2, hpet_events[=
i].msi.irq: 124, hpet_events[i].flags: 0
    (XEN) [18446743903.572167] hpet_broadcast_resume:706: i:2, cfg: 0xc104
    (XEN) [18446743903.572175] hpet_broadcast_resume:695: i:3, hpet_events[=
i].msi.irq: 125, hpet_events[i].flags: 0
    (XEN) [18446743903.572210] hpet_broadcast_resume:706: i:3, cfg: 0xc104
    (XEN) [18446743903.572218] hpet_broadcast_resume:695: i:4, hpet_events[=
i].msi.irq: 126, hpet_events[i].flags: 0
    (XEN) [18446743903.572252] hpet_broadcast_resume:706: i:4, cfg: 0xc104
    (XEN) [18446743903.572261] hpet_broadcast_resume:695: i:5, hpet_events[=
i].msi.irq: 127, hpet_events[i].flags: 0
    (XEN) [18446743903.572294] hpet_broadcast_resume:706: i:5, cfg: 0xc104
    (XEN) [18446743903.572303] hpet_broadcast_resume:695: i:6, hpet_events[=
i].msi.irq: 128, hpet_events[i].flags: 0
    (XEN) [18446743903.572338] hpet_broadcast_resume:706: i:6, cfg: 0xc104
    (XEN) [18446743903.572347] hpet_broadcast_resume:695: i:7, hpet_events[=
i].msi.irq: 129, hpet_events[i].flags: 0
    (XEN) [18446743903.572382] hpet_broadcast_resume:706: i:7, cfg: 0xc104

And the xen-cpuid -p output from this system:

    Xen reports there are maximum 120 leaves and 2 MSRs
    Raw policy: 48 leaves, 2 MSRs
     CPUID:
      leaf     subleaf  -> eax      ebx      ecx      edx    =20
      00000000:ffffffff -> 00000023:756e6547:6c65746e:49656e69
      00000001:ffffffff -> 000a06a4:20800800:77fafbff:bfebfbff
      00000002:ffffffff -> 00feff01:000000f0:00000000:00000000
      00000004:00000000 -> fc004121:02c0003f:0000003f:00000000
      00000004:00000001 -> fc004122:03c0003f:0000003f:00000000
      00000004:00000002 -> fc01c143:03c0003f:000007ff:00000000
      00000004:00000003 -> fc0fc163:02c0003f:00007fff:00000004
      00000005:ffffffff -> 00000040:00000040:00000003:11112020
      00000006:ffffffff -> 00dfcff7:00000002:00000409:00040003
      00000007:00000000 -> 00000002:239c27eb:994007ac:fc18c410
      00000007:00000001 -> 40400910:00000001:00000000:00040000
      00000007:00000002 -> 00000000:00000000:00000000:0000003f
      0000000a:ffffffff -> 07300805:00000000:00000007:00008603
      0000000b:00000000 -> 00000001:00000002:00000100:00000020
      0000000b:00000001 -> 00000007:00000016:00000201:00000020
      0000000d:00000000 -> 00000207:00000000:00000a88:00000000
      0000000d:00000001 -> 0000000f:00000000:00019900:00000000
      0000000d:00000002 -> 00000100:00000240:00000000:00000000
      0000000d:00000008 -> 00000080:00000000:00000001:00000000
      0000000d:00000009 -> 00000008:00000a80:00000000:00000000
      0000000d:0000000b -> 00000010:00000000:00000001:00000000
      0000000d:0000000c -> 00000018:00000000:00000001:00000000
      0000000d:0000000f -> 00000328:00000000:00000001:00000000
      0000000d:00000010 -> 00000008:00000000:00000001:00000000
      80000000:ffffffff -> 80000008:00000000:00000000:00000000
      80000001:ffffffff -> 00000000:00000000:00000121:2c100800
      80000002:ffffffff -> 65746e49:2952286c:726f4320:4d542865
      80000003:ffffffff -> 6c552029:20617274:35312037:00004835
      80000006:ffffffff -> 00000000:00000000:08007040:00000000
      80000007:ffffffff -> 00000000:00000000:00000000:00000100
      80000008:ffffffff -> 0000302e:00000000:00000000:00000000
     MSRs:
      index    -> value          =20
      000000ce -> 0000000080000000
      0000010a -> 000000000d89fd6b
    Host policy: 41 leaves, 2 MSRs
     CPUID:
      leaf     subleaf  -> eax      ebx      ecx      edx    =20
      00000000:ffffffff -> 0000000d:756e6547:6c65746e:49656e69
      00000001:ffffffff -> 000a06a4:20800800:77fafbff:bfebfbff
      00000002:ffffffff -> 00feff01:000000f0:00000000:00000000
      00000004:00000000 -> fc004121:02c0003f:0000003f:00000000
      00000004:00000001 -> fc004122:03c0003f:0000003f:00000000
      00000004:00000002 -> fc01c143:03c0003f:000007ff:00000000
      00000004:00000003 -> fc0fc163:02c0003f:00007fff:00000004
      00000005:ffffffff -> 00000040:00000040:00000003:11112020
      00000006:ffffffff -> 00dfcff7:00000002:00000409:00040003
      00000007:00000000 -> 00000002:239c27eb:994007ac:fc18c410
      00000007:00000001 -> 40000910:00000001:00000000:00040000
      00000007:00000002 -> 00000000:00000000:00000000:0000003f
      0000000b:00000000 -> 00000001:00000002:00000100:00000020
      0000000b:00000001 -> 00000007:00000016:00000201:00000020
      0000000d:00000000 -> 00000207:00000000:00000a88:00000000
      0000000d:00000001 -> 0000000f:00000000:00000000:00000000
      0000000d:00000002 -> 00000100:00000240:00000000:00000000
      0000000d:00000009 -> 00000008:00000a80:00000000:00000000
      80000000:ffffffff -> 80000008:00000000:00000000:00000000
      80000001:ffffffff -> 00000000:00000000:00000121:2c100800
      80000002:ffffffff -> 65746e49:2952286c:726f4320:4d542865
      80000003:ffffffff -> 6c552029:20617274:35312037:00004835
      80000006:ffffffff -> 00000000:00000000:08007040:00000000
      80000007:ffffffff -> 00000000:00000000:00000000:00000100
      80000008:ffffffff -> 0000302e:00000000:00000000:00000000
     MSRs:
      index    -> value          =20
      000000ce -> 0000000080000000
      0000010a -> 400000000d89fd6b
    PV Max policy: 58 leaves, 2 MSRs
     CPUID:
      leaf     subleaf  -> eax      ebx      ecx      edx    =20
      00000000:ffffffff -> 0000000d:756e6547:6c65746e:49656e69
      00000001:ffffffff -> 000a06a4:00800800:f6f83203:1fc9cbf5
      00000002:ffffffff -> 00feff01:000000f0:00000000:00000000
      00000004:00000000 -> fc004121:02c0003f:0000003f:00000000
      00000004:00000001 -> fc004122:03c0003f:0000003f:00000000
      00000004:00000002 -> fc01c143:03c0003f:000007ff:00000000
      00000004:00000003 -> fc0fc163:02c0003f:00007fff:00000004
      00000007:00000000 -> 00000002:218c0329:18400700:ac004410
      00000007:00000001 -> 00000810:00000000:00000000:00000000
      00000007:00000002 -> 00000000:00000000:00000000:00000021
      0000000d:00000000 -> 00000007:00000000:00000340:00000000
      0000000d:00000001 -> 00000007:00000000:00000000:00000000
      0000000d:00000002 -> 00000100:00000240:00000000:00000000
      80000000:ffffffff -> 80000021:00000000:00000000:00000000
      80000001:ffffffff -> 00000000:00000000:00000123:28100800
      80000002:ffffffff -> 65746e49:2952286c:726f4320:4d542865
      80000003:ffffffff -> 6c552029:20617274:35312037:00004835
      80000006:ffffffff -> 00000000:00000000:08007040:00000000
      80000007:ffffffff -> 00000000:00000000:00000000:00000100
      80000008:ffffffff -> 0000302e:00001000:00000000:00000000
     MSRs:
      index    -> value          =20
      000000ce -> 0000000080000000
      0000010a -> 400000001d0ae167
    HVM Max policy: 65 leaves, 2 MSRs
     CPUID:
      leaf     subleaf  -> eax      ebx      ecx      edx    =20
      00000000:ffffffff -> 0000000d:756e6547:6c65746e:49656e69
      00000001:ffffffff -> 000a06a4:00800800:f7fa3223:1fcbfbff
      00000002:ffffffff -> 00feff01:000000f0:00000000:00000000
      00000004:00000000 -> fc004121:02c0003f:0000003f:00000000
      00000004:00000001 -> fc004122:03c0003f:0000003f:00000000
      00000004:00000002 -> fc01c143:03c0003f:000007ff:00000000
      00000004:00000003 -> fc0fc163:02c0003f:00007fff:00000004
      00000007:00000000 -> 00000002:219c07ab:9840070c:bc004410
      00000007:00000001 -> 00000810:00000000:00000000:00000000
      00000007:00000002 -> 00000000:00000000:00000000:00000037
      0000000d:00000000 -> 00000207:00000000:00000a88:00000000
      0000000d:00000001 -> 0000000f:00000000:00000000:00000000
      0000000d:00000002 -> 00000100:00000240:00000000:00000000
      0000000d:00000009 -> 00000008:00000a80:00000000:00000000
      80000000:ffffffff -> 80000021:00000000:00000000:00000000
      80000001:ffffffff -> 00000000:00000000:00000123:2c100800
      80000002:ffffffff -> 65746e49:2952286c:726f4320:4d542865
      80000003:ffffffff -> 6c552029:20617274:35312037:00004835
      80000006:ffffffff -> 00000000:00000000:08007040:00000000
      80000007:ffffffff -> 00000000:00000000:00000000:00000100
      80000008:ffffffff -> 0000302e:00101000:00000000:00000000
     MSRs:
      index    -> value          =20
      000000ce -> 0000000080000000
      0000010a -> 400000001d0ae167
    PV Default policy: 33 leaves, 2 MSRs
     CPUID:
      leaf     subleaf  -> eax      ebx      ecx      edx    =20
      00000000:ffffffff -> 0000000d:756e6547:6c65746e:49656e69
      00000001:ffffffff -> 000a06a4:00800800:f6d83203:1fc9cbf5
      00000002:ffffffff -> 00feff01:000000f0:00000000:00000000
      00000004:00000000 -> fc004121:02c0003f:0000003f:00000000
      00000004:00000001 -> fc004122:03c0003f:0000003f:00000000
      00000004:00000002 -> fc01c143:03c0003f:000007ff:00000000
      00000004:00000003 -> fc0fc163:02c0003f:00007fff:00000004
      00000007:00000000 -> 00000002:218c0329:00400700:ac004410
      00000007:00000001 -> 00000810:00000000:00000000:00000000
      00000007:00000002 -> 00000000:00000000:00000000:00000021
      0000000d:00000000 -> 00000007:00000000:00000340:00000000
      0000000d:00000001 -> 00000007:00000000:00000000:00000000
      0000000d:00000002 -> 00000100:00000240:00000000:00000000
      80000000:ffffffff -> 80000008:00000000:00000000:00000000
      80000001:ffffffff -> 00000000:00000000:00000121:28100800
      80000002:ffffffff -> 65746e49:2952286c:726f4320:4d542865
      80000003:ffffffff -> 6c552029:20617274:35312037:00004835
      80000006:ffffffff -> 00000000:00000000:08007040:00000000
      80000008:ffffffff -> 0000302e:00001000:00000000:00000000
     MSRs:
      index    -> value          =20
      000000ce -> 0000000080000000
      0000010a -> 400000000d08e163
    HVM Default policy: 40 leaves, 2 MSRs
     CPUID:
      leaf     subleaf  -> eax      ebx      ecx      edx    =20
      00000000:ffffffff -> 0000000d:756e6547:6c65746e:49656e69
      00000001:ffffffff -> 000a06a4:00800800:f7fa3203:1fcbfbff
      00000002:ffffffff -> 00feff01:000000f0:00000000:00000000
      00000004:00000000 -> fc004121:02c0003f:0000003f:00000000
      00000004:00000001 -> fc004122:03c0003f:0000003f:00000000
      00000004:00000002 -> fc01c143:03c0003f:000007ff:00000000
      00000004:00000003 -> fc0fc163:02c0003f:00007fff:00000004
      00000007:00000000 -> 00000002:219c07ab:8040070c:bc004410
      00000007:00000001 -> 00000810:00000000:00000000:00000000
      00000007:00000002 -> 00000000:00000000:00000000:00000037
      0000000d:00000000 -> 00000207:00000000:00000a88:00000000
      0000000d:00000001 -> 0000000f:00000000:00000000:00000000
      0000000d:00000002 -> 00000100:00000240:00000000:00000000
      0000000d:00000009 -> 00000008:00000a80:00000000:00000000
      80000000:ffffffff -> 80000008:00000000:00000000:00000000
      80000001:ffffffff -> 00000000:00000000:00000121:2c100800
      80000002:ffffffff -> 65746e49:2952286c:726f4320:4d542865
      80000003:ffffffff -> 6c552029:20617274:35312037:00004835
      80000006:ffffffff -> 00000000:00000000:08007040:00000000
      80000008:ffffffff -> 0000302e:00101000:00000000:00000000
     MSRs:
      index    -> value          =20
      000000ce -> 0000000080000000
      0000010a -> 400000000d08e163


> Without hpet_broadcast_resume() running, I don't think I could explain ho=
w the
> channels (and their FSB interrupts) would get enabled.
>=20
> Jan

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

--bhkLNO4Ucmh0/XDZ
Content-Type: application/pgp-signature; name=signature.asc

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

iQEzBAEBCAAdFiEEhrpukzGPukRmQqkK24/THMrX1ywFAmnOJAoACgkQ24/THMrX
1ywgjQf+MvVujC4YpqJQhwpwSXfO9xSRDGd9Yc/rGdLx/v4BnFrZMnG90owIhCQt
63wMOX39c+HddLxhxCFBjCe6XS6T+b0kg+piIS2O5+4VPsa+p4maTa/0OymwcOWd
l7+fKouKpOB/WvBQBV2PRW3xIr5xG5DT8GjuoTg9wNO43u5NMppiiAmH978klGrI
+LIRaK/5Wzrqu27LVVhxWVt+W9gdWiGPQBSgiykxQIaOPMGPsZSO+cohZkPouDCU
TIK5IkJR/L1pPeeuME0B71UpLBfHCOdmBjLduhY7/ICwy+bVOW0KgM4l/Ur9nvOS
BACW9R5QI1sNgx3iiuwAtbs9k/cSFQ==
=HSRk
-----END PGP SIGNATURE-----

--bhkLNO4Ucmh0/XDZ--


From xen-devel-bounces@lists.xenproject.org Thu Apr 02 08:19:07 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 02 Apr 2026 08:19:07 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1271254.1559470 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1w8DGV-0002x0-9g; Thu, 02 Apr 2026 08:18:59 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1271254.1559470; Thu, 02 Apr 2026 08: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 1w8DGV-0002wt-71; Thu, 02 Apr 2026 08:18:59 +0000
Received: by outflank-mailman (input) for mailman id 1271254;
 Thu, 02 Apr 2026 08:18:58 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <Luca.Fancellu@arm.com>) id 1w8DGT-0002wn-U1
 for xen-devel@lists.xenproject.org; Thu, 02 Apr 2026 08:18:58 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1w8DGS-00E9va-Uq
 for xen-devel@lists.xenproject.org; Thu, 02 Apr 2026 10:18:57 +0200
Received: from [10.42.69.9] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <Luca.Fancellu@arm.com>)
 id 69ce2660-e002-0a2a0a5209dd-0a2a4509aab8-48
 for <xen-devel@lists.xenproject.org>; Thu, 02 Apr 2026 10:18:55 +0200
Received: from [40.107.162.47]
 (helo=PA4PR04CU001.outbound.protection.outlook.com)
 by tlsNG-bad1c0.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.0)
 (envelope-from <Luca.Fancellu@arm.com>)
 id 69ce266f-bf79-0a2a45090019-286ba22fbc21-3
 for <xen-devel@lists.xenproject.org>; Thu, 02 Apr 2026 10:18:55 +0200
Received: from DU2PR04CA0227.eurprd04.prod.outlook.com (2603:10a6:10:2b1::22)
 by VI0PR08MB11985.eurprd08.prod.outlook.com (2603:10a6:800:346::8)
 with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9769.18; Thu, 2 Apr
 2026 08:18:50 +0000
Received: from DB1PEPF000509F5.eurprd02.prod.outlook.com
 (2603:10a6:10:2b1:cafe::c) by DU2PR04CA0227.outlook.office365.com
 (2603:10a6:10:2b1::22) with Microsoft SMTP Server (version=TLS1_3,
 cipher=TLS_AES_256_GCM_SHA384) id 15.20.9745.30 via Frontend Transport; Thu,
 2 Apr 2026 08:18:50 +0000
Received: from outbound-uk1.az.dlp.m.darktrace.com (4.158.2.129) by
 DB1PEPF000509F5.mail.protection.outlook.com (10.167.242.151) with Microsoft
 SMTP Server (version=TLS1_3, cipher=TLS_AES_256_GCM_SHA384) id 15.20.9769.17
 via Frontend Transport; Thu, 2 Apr 2026 08:18:49 +0000
Received: from DU2PR08MB7272.eurprd08.prod.outlook.com (2603:10a6:10:2d7::16)
 by GV2PR08MB11395.eurprd08.prod.outlook.com (2603:10a6:150:2a5::18)
 with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9769.17; Thu, 2 Apr
 2026 08:17:47 +0000
Received: from DU2PR08MB7272.eurprd08.prod.outlook.com
 ([fe80::5d34:206f:373:a323]) by DU2PR08MB7272.eurprd08.prod.outlook.com
 ([fe80::5d34:206f:373:a323%6]) with mapi id 15.20.9769.018; Thu, 2 Apr 2026
 08:17: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=arm.com header.i="@arm.com" header.h="From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck"; dkim=pass header.s=selector1 header.d=arm.com header.i="@arm.com" header.h="From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck"
ARC-Seal: i=2; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=pass;
 b=DxHAbccolIbSmecPqJLVZkr4YaEA/186gbcI3+tj58R4Ka6Z61ucA88s4jJB+AhgbxGSihvzeEuXIEXS2IawhwG/PyQwgLlfKysuZvjWqQRDSCAgphrJea+5IlVaDjhL10066Ovw+7eSkTvBy8lWHbNxuyBvZjkOdzbLlz28onlravkqadrBih7CGdyeXU0jTe5TpuiQYgZ5XvJ+MZe3nvNQ9WQjTLHfJfEWLs+ejGfPGiZG0DzFYO8w8FZfpf3YfTWM3P7pCptJXU1gbBu4xQXV3EAdN7hbyn2zFXSrMPlrIDcIrbc6NRIuq3/b5dejVv3MPQ+ztQbO9sOSTB9kOg==
ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com;
 s=arcselector10001;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1;
 bh=e2XYJZR51dIbykVyt2stnsLHXYp1DL1SGjAbkVzeZsY=;
 b=wPoFiywIlCZN3lM3KbrncB4DtiHdcnteYpryTIpEZHQ9UH9SuuwmhPuRL/07wgRYniCf37sU+uQK3dzBsc5RwdcPqfzDxCGNmKDWcABxPhuv8saZgWr0pWk11b+bZs8FJ/cv9jFNjwNFVG/gPxPtbyQm7+B9SXYBf3pkhvKd31NAOtDrPt8LM7uhlR9aCvfoF1tkKaTFmCv06kQzEsDJr8KpAyLZHphnZUrNu6XQEOH74xeHCqCbAT28nFrkYBuC9Japnh0mY0ZZ37BREF1NPDDYZHE9q9ZAJLQ2ldtTUVUeSg4YaZzA2r25tbLtqHqrI07Si+4QElpkhgYvVyX7Mw==
ARC-Authentication-Results: i=2; mx.microsoft.com 1; spf=pass (sender ip is
 4.158.2.129) smtp.rcpttodomain=amd.com smtp.mailfrom=arm.com; dmarc=pass
 (p=none sp=none pct=100) action=none header.from=arm.com; dkim=pass
 (signature was verified) header.d=arm.com; arc=pass (0 oda=1 ltdi=1
 spf=[1,1,smtp.mailfrom=arm.com] dkim=[1,1,header.d=arm.com]
 dmarc=[1,1,header.from=arm.com])
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=arm.com; s=selector1;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck;
 bh=e2XYJZR51dIbykVyt2stnsLHXYp1DL1SGjAbkVzeZsY=;
 b=ZFNJn0lhMO2EdB4PtTiAlkj2Jo1nZAymy3BOZN61y40sypEB7D0bFuQxEsiKF1g00I+A71hN/QBUHGIP9kJ7LQTYXv656/QLKAobgfgfzv+J9IPcUy++ZJi/RcjTBZS0HYi2bIBp58LrNPLkDsdAaSxuZPi/rIcpo7708ghUXIE=
X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 4.158.2.129)
 smtp.mailfrom=arm.com; dkim=pass (signature was verified)
 header.d=arm.com;dmarc=pass action=none header.from=arm.com;
Received-SPF: Pass (protection.outlook.com: domain of arm.com designates
 4.158.2.129 as permitted sender) receiver=protection.outlook.com;
 client-ip=4.158.2.129; helo=outbound-uk1.az.dlp.m.darktrace.com; pr=C
ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none;
 b=l09mxAgwZR6pHKyc2qhmJuPyoN3FRjpMSUtxVbYMbD1M2CWbxYs7yY4Z88Ci6bEzaQN3ratCOY6hlJbWxpYj97bf6guTycvy/YK9PJlsJr1JFi00LXeNHW3SLb5VOzfKNlww+j/WKKGc8kgWf4IzJ4tS6xQhw7pEb7HDvSVmcHCIAAFevViWspJkjhbupzvX7pPW82vibTsLJPt/tDhdmy2BAepUT1F8Rudeh9e7hLrDUK22Pnbk7kxCmrSTDiI6k11s+4H1m1ByWX/y0Pmk3tumfaxdyoUm+XhXKvsedjEcRwmpBMMDYZsRqJjSy+GbJqZw/feNkZyTkoObQ/P0UQ==
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com;
 s=arcselector10001;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1;
 bh=e2XYJZR51dIbykVyt2stnsLHXYp1DL1SGjAbkVzeZsY=;
 b=KRirKXq6vzD+seJI+rz07AobJZ81zcUa9/Zu5MEtcneg4dv++JYIx/qDf+WA98MVDmUxzUc2PvyMxCxvyFzO3YYvHAkdNXCDmcKg30ql5eV0Pt9lGst+E2Dr0J3iXgdDc0LzahejJh+que7MTK5q7Ej+J4ZpTb+/Y6mwqGt8FV00cfGi1hoX0nEzkqEddH+A11nyHZhen+snoziSi9h9XSbk5E50Kbf+dw0MJ18PAEiHr6MhnVX4fn1of0i4AUNXyAiP9EQIWmDHEWtD9H8bMe+aH2mFr//dOf0RmdLhj5oL7iEjBuQfpBWKmN1yN+Mzs8DG1PbUc6mdvV2qYas8rw==
ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass
 smtp.mailfrom=arm.com; dmarc=pass action=none header.from=arm.com; dkim=pass
 header.d=arm.com; arc=none
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=arm.com; s=selector1;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck;
 bh=e2XYJZR51dIbykVyt2stnsLHXYp1DL1SGjAbkVzeZsY=;
 b=ZFNJn0lhMO2EdB4PtTiAlkj2Jo1nZAymy3BOZN61y40sypEB7D0bFuQxEsiKF1g00I+A71hN/QBUHGIP9kJ7LQTYXv656/QLKAobgfgfzv+J9IPcUy++ZJi/RcjTBZS0HYi2bIBp58LrNPLkDsdAaSxuZPi/rIcpo7708ghUXIE=
From: Luca Fancellu <Luca.Fancellu@arm.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>, Volodymyr Babchuk
	<Volodymyr_Babchuk@epam.com>
Subject: Re: [PATCH] xen/arm: mpu: Fix ioremap_attr region size and return
 value
Thread-Topic: [PATCH] xen/arm: mpu: Fix ioremap_attr region size and return
 value
Thread-Index: AQHcwnZX7LJ68/q3sE+uKvflFE4pcLXLbU4A
Date: Thu, 2 Apr 2026 08:17:46 +0000
Message-ID: <B8E1DD34-FB7B-444B-9996-BE8F55C2A33C@arm.com>
References: <20260402075645.52583-1-michal.orzel@amd.com>
In-Reply-To: <20260402075645.52583-1-michal.orzel@amd.com>
Accept-Language: en-GB, en-US
Content-Language: en-US
X-MS-Has-Attach:
X-MS-TNEF-Correlator:
x-mailer: Apple Mail (2.3826.700.81.1.4)
Authentication-Results-Original: dkim=none (message not signed)
 header.d=none;dmarc=none action=none header.from=arm.com;
x-ms-traffictypediagnostic:
	DU2PR08MB7272:EE_|GV2PR08MB11395:EE_|DB1PEPF000509F5:EE_|VI0PR08MB11985:EE_
X-MS-Office365-Filtering-Correlation-Id: 9e550a82-5c7b-4976-6ffe-08de90907841
x-checkrecipientrouted: true
nodisclaimer: true
X-MS-Exchange-SenderADCheck: 1
X-MS-Exchange-AntiSpam-Relay: 0
X-Microsoft-Antispam-Untrusted:
 BCL:0;ARA:13230040|376014|366016|1800799024|56012099003|22082099003|18002099003|38070700021;
X-Microsoft-Antispam-Message-Info-Original:
 npjOcQo4zYGBFFJxM2cq7JsnPtCUNgzdBNkBICau4NzXfJhRrOZwprBAUluhhlvfTx9ocJDN1LxG7a92cbe4lOqZ1DSONtwug+gLVSYbmAWO+m5ilfSwoB9LQ2nb6ATW68n3SsWvzn7ye19fDGGm6OM30edOpTRPAi0UwfFMjwsQ+PrzKeUtxzDIWA2G+aznnYGbXVS8D2u2aPaB4IsGkb24Wx33L2vT7rBcblYBVdhS/Dgc2a2sqUEHApcgQ7J2oNj0sokYIjjM26N//Kh9xaXoURw51La9mqsq7NcjNpCVWbdaugC9u/nKU4jTeft9C45BSqSMS1krzLTzvNyWBalMyZBbc18i7t481prJSrxL9WhmE/8JJejFz9deCccriBSbm39xy8Y/Bc8Hb3HjAlFfdKmh9Vhrrpwn1w2OGBYCck89UN0dfte9plt24udUdr60d1B9EMfd4ImX9AmQOPQXF4R4u2oi0jLh5XPJjSm0PRp6h5+Tr2j+6VE217IuClQXKB1BHeHA9Jswb5ilXlvjoxLp67r/idBUvVf8ti9oyOyrwNMddhC0H6k2vmHQfpBgTerUVmsvEHMzsZA8wqak0RvwpDZh8bCZev8ZLBaqBkzIEBlw9LGE/tt2qKuTg/37YXqVpctCFDODqdLeJ4fxYQ4pqQF8B8Ma/BISHJ1gQ/g/WX5w95uo6EO2tNZuVCIoq9UEEr+W895ff3nesXbiGMpkweotIq7DXYKw5c/OvqYJj9wQLXRugvjkRVh3WpM2s7nq2q61kLHdH576gi0+hFdzRYkHFbNvI3vz05I=
X-Forefront-Antispam-Report-Untrusted:
 CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:DU2PR08MB7272.eurprd08.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(376014)(366016)(1800799024)(56012099003)(22082099003)(18002099003)(38070700021);DIR:OUT;SFP:1101;
Content-Type: text/plain; charset="utf-8"
Content-ID: <3FEA93D4FB4D8041AEE32AF43B0D7310@eurprd08.prod.outlook.com>
Content-Transfer-Encoding: base64
MIME-Version: 1.0
X-Exchange-RoutingPolicyChecked:
 oDHvzMHQUDln3VmzFaG52CU0wnSN7HeYNWSzq4iM0CzzVlc2VKLxoynNEdo1ySSD3DZzQu2b3EXUGTyhKdK0nq+xRnBJ8AfRmLx+b1OfbtvwCBGJTfpWzV0UvNdvw6qKLHVUf9629iPwoUBxrYdjLzmVI6hurzvdIMO4mc5DR0aKtWB88PMDvRkGvWxX+h/WTC1yIDybekCcYmJMlFQu4GcE+s59M7u+wIV5JOswYazlpd5t9XbYJsokLSWbiu+Psa1sUBJ4i8r1G8I8OGS3iDhjxSi+KXQPgIMyCg0Jog+X8xFggu/f0jye/nDlzoMMLK8GMqyvtGqkEwiSfUdc4w==
X-MS-Exchange-Transport-CrossTenantHeadersStamped: GV2PR08MB11395
X-EOPAttributedMessage: 0
X-MS-Exchange-Transport-CrossTenantHeadersStripped:
 DB1PEPF000509F5.eurprd02.prod.outlook.com
X-MS-PublicTrafficType: Email
X-MS-Office365-Filtering-Correlation-Id-Prvs:
	d608fbfc-fee5-4c2b-25ef-08de909052b4
X-Microsoft-Antispam:
	BCL:0;ARA:13230040|14060799003|36860700016|376014|82310400026|35042699022|1800799024|18002099003|56012099003|22082099003;
X-Microsoft-Antispam-Message-Info:
	XXtOsDC4LqbwJUpMn8ERXoPEJH8n5rlWBD/L3FXCVGYrCtSHttPKh763Muv1zFXiCC85PrQ6RJ9DDy5aiyjVO7gslQNbkzgxn/5XQDZ+jdq/h1EqqsrFaQb6lcktiYW9bpK7/dTyonCqzIaG7FKoPzNISQI1WRSeDy//s4gq0HZlsafjw4PiXSsYadF15YDa/6ydsiOqFgfrb8D2Ey3YRgq6l7+Uy/Sv7gdwhZw+NdyRIE2Irz83+9yUsRckjyC79zIrGGPyy5mhnf2oxeR4yjAc9L7iaaIIVLDOsC5UKKUjIlRpiohyC1AoF28rLmUaviEYW9ew0HqamuGevQPjH833WpKlbgaPxEU3+d3VlyRqfG756WJfVLqPWaptusQksCuDOeRdPiPD2ezKOxPR07Bpx4lthXtIxmmEM3sBy8oTrdDgTlaP2Z/DVwfLv6//1wJ0CsJrnXHweq2RB8nckUV3RSuUb3cBdbvhMRWC1o8dyOfc0gk9VFpR9ON8nmNEtRsHnZGIfi4/mNX+VJU5x2YUeTD6a1zB8JmIHe431vGMf7innt3ZTNtaBPGRZJturTTV0pHqcZJ9A/a79w4n26/NS5ZHrVEnpkzBGgLIg2iClpHTbuG4y++HVvSlqmytJdz+QSajN7mB6VFLqurElbXzJAeuzwnd1JioA+BhGqNc+y8l9s+HslQdFeNIGpZ9Y8KeYPWiuvFrq76bgmkKJfhk5//mSVPsB9/YMeZ+08CK8fWErWrZZByXd9Pshzk+7N/LuiSPnVb4E+ootrU/Yg==
X-Forefront-Antispam-Report:
	CIP:4.158.2.129;CTRY:GB;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:outbound-uk1.az.dlp.m.darktrace.com;PTR:InfoDomainNonexistent;CAT:NONE;SFS:(13230040)(14060799003)(36860700016)(376014)(82310400026)(35042699022)(1800799024)(18002099003)(56012099003)(22082099003);DIR:OUT;SFP:1101;
X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1
X-MS-Exchange-AntiSpam-MessageData-0:
	MUjrpHYNwFGRySuTgFFaoXILVRzlu2h+FzJbaztGp/7eysRRqlzFVJ8QaEJzaSM7LKbdWE/A7AcGBOc/cLUbLWeewTkcGVt/rxj/ojhWe/0VgHggKJsqobmWHpXTDyK5qLiXj1daEToKXoCh8iM07QLEeWVzsh5LKGIb9/vUvuaDSg3VAc2cW4+eqcot/CLNzO4mL7aYea10VCR/OE3RQZ+ATM6em+8I5rGbl+zrkhVbpJGcpsJBaFJwlEhA6XixS9kDIMxYBdKQzNWGJL9qQ9kL1stBu31haYDb5vaJH5xIRCVD4WinRyC/ev4+C4c5qPEQPRNVre0HFo0PInU3VQ56h9bu0rpPmyxeegNf9hYUCEuWehzsq3nAiOfn0/o6ru2TpXjZAJreD+HOOCKOVq6fcV7hBaNLEd0FOTrNWzkeVdujhQyHougfsxudsEkH
X-OriginatorOrg: arm.com
X-MS-Exchange-CrossTenant-OriginalArrivalTime: 02 Apr 2026 08:18:49.9442
 (UTC)
X-MS-Exchange-CrossTenant-Network-Message-Id: 9e550a82-5c7b-4976-6ffe-08de90907841
X-MS-Exchange-CrossTenant-Id: f34e5979-57d9-4aaa-ad4d-b122a662184d
X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=f34e5979-57d9-4aaa-ad4d-b122a662184d;Ip=[4.158.2.129];Helo=[outbound-uk1.az.dlp.m.darktrace.com]
X-MS-Exchange-CrossTenant-AuthSource:
	DB1PEPF000509F5.eurprd02.prod.outlook.com
X-MS-Exchange-CrossTenant-AuthAs: Anonymous
X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem
X-MS-Exchange-Transport-CrossTenantHeadersStamped: VI0PR08MB11985
X-purgate-ID: tlsNG-bad1c0/1775117935-2E354152-06EC882B/0/0
X-purgate-type: clean
X-purgate-size: 2588

SGkgTWljaGFsLA0KDQo+IE9uIDIgQXByIDIwMjYsIGF0IDA4OjU2LCBNaWNoYWwgT3J6ZWwgPG1p
Y2hhbC5vcnplbEBhbWQuY29tPiB3cm90ZToNCj4gDQo+IGlvcmVtYXBfYXR0cigpIGNvbXB1dGVz
IGVuZF9wZyBhcyByb3VuZF9wZ3VwKHN0YXJ0X3BnICsgbGVuKSwgYnV0DQo+IHN0YXJ0X3BnIGhh
cyBhbHJlYWR5IGhhZCB0aGUgc3ViLXBhZ2Ugb2Zmc2V0IHN0cmlwcGVkIGJ5IHJvdW5kX3BnZG93
bigpLg0KPiBXaGVuIHN0YXJ0IGlzIG5vdCBwYWdlLWFsaWduZWQsIHRoZSBzdWItcGFnZSBvZmZz
ZXQgaXMgbG9zdCBhbmQgdGhlDQo+IHJlc3VsdGluZyBNUFUgcHJvdGVjdGlvbiByZWdpb24gY2Fu
IGJlIG9uZSBwYWdlIHRvbyBzbWFsbCwgbGVhdmluZyB0aGUNCj4gdGFpbCBvZiB0aGUgcmVxdWVz
dGVkIHJhbmdlIGNvdmVyZWQgYnkgc29tZXRoaW5nIGVsc2UuDQo+IA0KPiBBZGRpdGlvbmFsbHks
IHRoZSBmdW5jdGlvbiByZXR1cm5zIG1hZGRyX3RvX3ZpcnQoc3RhcnRfcGcpIOKAlCB0aGUNCj4g
cGFnZS1hbGlnbmVkIGJhc2UgZHJvcHBpbmcgdGhlIHN1Yi1wYWdlIG9mZnNldCB0aGF0IGNhbGxl
cnMgKGUuZy4gaW9yZW1hcA0KPiBvZiBhbiB1bmFsaWduZWQgTU1JTyBiYXNlKSBkZXBlbmQgb24g
dG8gcmVhY2ggdGhlIGNvcnJlY3QgcmVnaXN0ZXIgYmxvY2suDQo+IA0KPiBGaXggZW5kX3BnIHRv
IHVzZSB0aGUgb3JpZ2luYWwgc3RhcnQgc28gdGhlIHN1Yi1wYWdlIHRhaWwgaXMgaW5jbHVkZWQN
Cj4gaW4gdGhlIHJvdW5kaW5nLCBhbmQgcmV0dXJuIHRoZSBvcmlnaW5hbCBzdGFydCBhZGRyZXNz
IHRvIHByZXNlcnZlIHRoZQ0KPiBvZmZzZXQsIG1hdGNoaW5nIHRoZSBiZWhhdmlvdXIgb2Ygb3Ro
ZXIgaW9yZW1hcCBpbXBsZW1lbnRhdGlvbnMuDQo+IA0KPiBGaXhlczogZWZlZWM0YzcwNzk4ICgi
YXJtL21wdTogSW1wbGVtZW50IGlvcmVtYXBfYXR0ciBmb3IgTVBVIikNCj4gU2lnbmVkLW9mZi1i
eTogTWljaGFsIE9yemVsIDxtaWNoYWwub3J6ZWxAYW1kLmNvbT4NCj4gLS0tDQo+IHhlbi9hcmNo
L2FybS9tcHUvbW0uYyB8IDQgKystLQ0KPiAxIGZpbGUgY2hhbmdlZCwgMiBpbnNlcnRpb25zKCsp
LCAyIGRlbGV0aW9ucygtKQ0KPiANCj4gZGlmZiAtLWdpdCBhL3hlbi9hcmNoL2FybS9tcHUvbW0u
YyBiL3hlbi9hcmNoL2FybS9tcHUvbW0uYw0KPiBpbmRleCA2YjNiMGIwNmU5NWQuLmFmZjg4YmQz
YTljMSAxMDA2NDQNCj4gLS0tIGEveGVuL2FyY2gvYXJtL21wdS9tbS5jDQo+ICsrKyBiL3hlbi9h
cmNoL2FybS9tcHUvbW0uYw0KPiBAQCAtNTk2LDEzICs1OTYsMTMgQEAgdm9pZCBmcmVlX2luaXRf
bWVtb3J5KHZvaWQpDQo+IHZvaWQgX19pb21lbSAqaW9yZW1hcF9hdHRyKHBhZGRyX3Qgc3RhcnQs
IHNpemVfdCBsZW4sIHVuc2lnbmVkIGludCBmbGFncykNCj4gew0KPiAgICAgcGFkZHJfdCBzdGFy
dF9wZyA9IHJvdW5kX3BnZG93bihzdGFydCk7DQo+IC0gICAgcGFkZHJfdCBlbmRfcGcgPSByb3Vu
ZF9wZ3VwKHN0YXJ0X3BnICsgbGVuKTsNCj4gKyAgICBwYWRkcl90IGVuZF9wZyA9IHJvdW5kX3Bn
dXAoc3RhcnQgKyBsZW4pOw0KPiANCj4gICAgIGlmICggeGVuX21wdW1hcF91cGRhdGUoc3RhcnRf
cGcsIGVuZF9wZywgZmxhZ3MpICkNCj4gICAgICAgICByZXR1cm4gTlVMTDsNCj4gDQo+ICAgICAv
KiBNYXBwZWQgb3IgYWxyZWFkeSBtYXBwZWQgKi8NCj4gLSAgICByZXR1cm4gbWFkZHJfdG9fdmly
dChzdGFydF9wZyk7DQo+ICsgICAgcmV0dXJuIG1hZGRyX3RvX3ZpcnQoc3RhcnQpOw0KPiB9DQo+
IA0KPiAvKg0KPiAtLSANCj4gMi40My4wDQo+IA0KPiANCg0KZ29vZCBjYXRjaCENCg0KUmV2aWV3
ZWQtYnk6IEx1Y2EgRmFuY2VsbHUgPGx1Y2EuZmFuY2VsbHVAYXJtLmNvbT4NCg0KQ2hlZXJzLA0K
THVjYQ0KDQo=


From xen-devel-bounces@lists.xenproject.org Thu Apr 02 08:23:55 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 02 Apr 2026 08:23:55 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1271264.1559480 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1w8DLF-0004Si-Qm; Thu, 02 Apr 2026 08:23:53 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1271264.1559480; Thu, 02 Apr 2026 08:23: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 1w8DLF-0004Sb-NS; Thu, 02 Apr 2026 08:23:53 +0000
Received: by outflank-mailman (input) for mailman id 1271264;
 Thu, 02 Apr 2026 08:23:52 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <jbeulich@suse.com>) id 1w8DLE-0004SV-HG
 for xen-devel@lists.xenproject.org; Thu, 02 Apr 2026 08:23:52 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1w8DLD-0047lU-Tx
 for xen-devel@lists.xenproject.org; Thu, 02 Apr 2026 10:23:51 +0200
Received: from [10.42.69.3] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <jbeulich@suse.com>)
 id 69ce2791-e002-0a2a0a5209dd-0a2a4503c624-30
 for <xen-devel@lists.xenproject.org>; Thu, 02 Apr 2026 10:23:51 +0200
Received: from [209.85.128.49] (helo=mail-wm1-f49.google.com)
 by tlsNG-33051d.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.0)
 (envelope-from <jbeulich@suse.com>)
 id 69ce2797-02b3-0a2a45030019-d1558031d522-3
 for <xen-devel@lists.xenproject.org>; Thu, 02 Apr 2026 10:23:51 +0200
Received: by mail-wm1-f49.google.com with SMTP id
 5b1f17b1804b1-488879b2e6aso4728715e9.1
 for <xen-devel@lists.xenproject.org>; Thu, 02 Apr 2026 01:23:51 -0700 (PDT)
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-4887c77df84sm99511845e9.4.2026.04.02.01.23.50
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Thu, 02 Apr 2026 01:23:50 -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=google header.d=suse.com header.i="@suse.com" header.h="Content-Transfer-Encoding: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=1775118231; x=1775723031; darn=lists.xenproject.org;
        h=content-transfer-encoding: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;
        bh=5wp1BnHQ6M7OkIshoJy1+C2KV5ll9nd5dev44fAEeXc=;
        b=Inn+Dq07OQQAKHCulXzi2F8ZomiTtCRE3xwm/h0Kfft/SdpnQlhEOk4xMby+oGlttY
         8xWtT80F2DwlNX5dJfbyNVTDWZeqNCko3E3wT5kgzRczYm5YcEkoM4v6cKkhXiWTq1qc
         PnRnH2lJ0PulQYOE7nnxn/bWHZpYByrfvA3NRrZVsDYOdqwXqvtV4O2y2AeEe8SiAYsM
         /8uafsYe/CKS313od/FEROxP7IxJfog5sinBXOkpLCsDhbciWg8a46MyN7WUe7vye1LM
         p3+sNee8XhUT9XRJwDzPjip3JAYkic4SWCmCqxgmD7IrH/m2FE2TgaItIRz0aR3EubP+
         BYtQ==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20251104; t=1775118231; x=1775723031;
        h=content-transfer-encoding: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;
        bh=5wp1BnHQ6M7OkIshoJy1+C2KV5ll9nd5dev44fAEeXc=;
        b=Ps1ELJVjkOIl2nuBdmMMK9tLSXs16rEjIzhWrzJjf1g7Kkblz0/RbzTnXg7+JHY9R0
         1q5PzDs3/QbcbtBIUGclIsVmGa7dXP43MsSHJr05Pe3QICi50R2S4h/7fu8G0Eduu+ZF
         ETvnLiHKHOIK6MVnNB62S98YPiuo96zyqtlk41QGW3w0XRTOHrV9yidq+3JjMQ+zzmc7
         vebfaiuq+eqCxsi17cM/PNnPer8YcUBIAKnioUiGCczwRxvu9FUOKuL3QjbIJpv8Ocho
         407DJBNRypGAMAeVIuHvUwulxP8Gvf1ng0SLI90XhSha4Kiv1bJc4B3EvNWbyYMQmg2z
         9gpg==
X-Gm-Message-State: AOJu0YwhK8lyRNwzXoffu4fjgrTNsYVaAogD+RTfO4h0d9rKqLlkwoKh
	m83yw5fxg82Bdlq0Yvo4RovT0UiZgubtU9WXlNMpmWAIYc0JpLlnr2aQ5guN/vt6WjhlkGz1Ses
	fdtT6Cg==
X-Gm-Gg: ATEYQzxf5nQDn52hijKFlZuj+eIdG5nBoGMOqjybbt39tIRXYfas0MTk15ZBSNo5eHH
	SdHySP2pN745RYrC00U5PPX4QuitZIXMbNykrM+/MaofIP6Yc2NPQHdcYlBLYxpQl5Gxi8RZ4g6
	dkbFdvlTGQ8MZYMd2g7IPEOmqVk/jhRGzOWCrZsRwMt4F2bdkbyT/IaVtZUo3j6SztZao9z/OkN
	2uXUi2MDI/qqRJqqVR0EnHtaOuOKmhlGR26969TQPMS1BbDNKu6pG3GEIrFzJ21cC7DO4cTWVHa
	7Fzb8H6ICY4e+ZsSUoQjoecoVKLFrGQASK8Xm4Rg1Q0/txn8ch6YUE2WltE5PnvU00DEhnltvdN
	9Bu5SyRHetmWOxjnfR2PbeEexzVfyVrFp0GO1lkCAECMuJrFlffkvMhZcA0/Pfk36zIXxUREgTj
	cWZvRpZRRhELkiZonX2Wdm1fUkastQIWQlu4q+pLXp0mKGm3Mh+O9Nq7ZaFpmJiuSIWIDC+4pTn
	GHFji6oRuIJt/w=
X-Received: by 2002:a05:600c:34d5:b0:487:20ee:bef6 with SMTP id 5b1f17b1804b1-48883566134mr133390725e9.11.1775118230951;
        Thu, 02 Apr 2026 01:23:50 -0700 (PDT)
Message-ID: <5310a923-ab2c-478f-9854-7542a7940778@suse.com>
Date: Thu, 2 Apr 2026 10:23:50 +0200
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: Slow (higher scheduling latency?) system after S3 - regression
 4.17 -> 4.19 ?
To: =?UTF-8?Q?Marek_Marczykowski-G=C3=B3recki?=
 <marmarek@invisiblethingslab.com>
Cc: xen-devel <xen-devel@lists.xenproject.org>, =?UTF-8?B?SsO8cmdlbiBHcm8=?=
 =?UTF-8?B?w58=?= <jgross@suse.com>
References: <aPzBO_eW8mQHM66u@mail-itl> <acQzzlXNDxNq885V@mail-itl>
 <29775afa-e17b-4c44-a2a8-4ef4bc7cdf0f@suse.com> <acUqOL232lp-Lw1v@mail-itl>
 <cbed767b-4ac4-4989-8778-43ff321ae977@suse.com> <acVWX8vkhZiFfonP@mail-itl>
 <88c65ec7-b7f7-4d8b-a453-d707440b43cb@suse.com> <acZ8ez4dmQay1JSw@mail-itl>
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: <acZ8ez4dmQay1JSw@mail-itl>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
X-purgate-ID: tlsNG-33051d/1775118231-C9F3DC9A-1E7986AF/0/0
X-purgate-type: clean
X-purgate-size: 10544

On 27.03.2026 13:47, Marek Marczykowski-Górecki wrote:
> Some further observation, this time regarding timers:
> 
> Just before S3:
> 
>     (XEN) [  150.264757] Dumping timer queues:
>     (XEN) [  150.265181] CPU00:
>     (XEN) [  150.265497]   ex=         736us timer=ffff82d040643540 cb=drivers/char/xhci-dbc.c#dbc_uart_poll(ffff82d0404e5e78)
>     (XEN) [  150.266590]   ex=      460377us timer=ffff82d04065d2c0 cb=arch/x86/time.c#time_calibration(0000000000000000)
>     (XEN) [  150.267636]   ex=     1377460us timer=ffff82d04065d220 cb=arch/x86/time.c#plt_overflow(0000000000000000)
>     (XEN) [  150.268651]   ex=    13525100us timer=ffff82d040644c20 cb=arch/x86/cpu/mcheck/intel-nonfatal.c#mce_work_fn(0000000000000000)
>     (XEN) [  150.269820] CPU02:
>     (XEN) [  150.270126]   ex=      616653us timer=ffff830461931070 cb=common/sched/core.c#vcpu_singleshot_timer_fn(ffff830461931000)
>     (XEN) [  150.271276] CPU04:
>     (XEN) [  150.271577]   ex=      630577us timer=ffff830461935070 cb=common/sched/core.c#vcpu_singleshot_timer_fn(ffff830461935000)
>     (XEN) [  150.272734]   ex=      634586us timer=ffff830461921070 cb=common/sched/core.c#vcpu_singleshot_timer_fn(ffff830461921000)
>     (XEN) [  150.273884] CPU06:
>     (XEN) [  150.274184]   ex=       44474us timer=ffff830461905070 cb=common/sched/core.c#vcpu_singleshot_timer_fn(ffff830461905000)
>     (XEN) [  150.275334] CPU08:
>     (XEN) [  150.275633]   ex=       11465us timer=ffff83046190d070 cb=common/sched/core.c#vcpu_singleshot_timer_fn(ffff83046190d000)
>     (XEN) [  150.276783] CPU09:
>     (XEN) [  150.277083]   ex=       12465us timer=ffff830461909070 cb=common/sched/core.c#vcpu_singleshot_timer_fn(ffff830461909000)
>     (XEN) [  150.278236] CPU10:
>     (XEN) [  150.278536]   ex=       14464us timer=ffff830461901070 cb=common/sched/core.c#vcpu_singleshot_timer_fn(ffff830461901000)
>     (XEN) [  150.279686] CPU11:
>     (XEN) [  150.279986]   ex=       15464us timer=ffff830461911070 cb=common/sched/core.c#vcpu_singleshot_timer_fn(ffff830461911000)
>     (XEN) [  150.281139] CPU12:
>     (XEN) [  150.281438]   ex=       17463us timer=ffff830461919070 cb=common/sched/core.c#vcpu_singleshot_timer_fn(ffff830461919000)
>     (XEN) [  150.282592] CPU13:
>     (XEN) [  150.282890]   ex=      347090us timer=ffff830461941070 cb=common/sched/core.c#vcpu_singleshot_timer_fn(ffff830461941000)
>     (XEN) [  150.284040] CPU14:
>     (XEN) [  150.284341]   ex=       20462us timer=ffff83046191d070 cb=common/sched/core.c#vcpu_singleshot_timer_fn(ffff83046191d000)
>     (XEN) [  150.285496] CPU15:
>     (XEN) [  150.285806]   ex=         470us timer=ffff83046192d070 cb=common/sched/core.c#vcpu_singleshot_timer_fn(ffff83046192d000)
>     (XEN) [  150.286972]   ex=       15316us timer=ffff8304619cdaa0 cb=drivers/cpufreq/cpufreq_ondemand.c#do_dbs_timer(ffff8304619cdae0)
>     (XEN) [  150.288156]   ex=        6230us timer=ffff8304619e8ed0 cb=common/sched/core.c#s_timer_fn(0000000000000000)
>     (XEN) [  150.289192] CPU16:
>     (XEN) [  150.289492]   ex=      633594us timer=ffff830461929070 cb=common/sched/core.c#vcpu_singleshot_timer_fn(ffff830461929000)
>     (XEN) [  150.290642] CPU18:
>     (XEN) [  150.290942]   ex=      614601us timer=ffff830461939070 cb=common/sched/core.c#vcpu_singleshot_timer_fn(ffff830461939000)
>     (XEN) [  150.292094] CPU20:
>     (XEN) [  150.292394]   ex=       27459us timer=ffff830461915070 cb=common/sched/core.c#vcpu_singleshot_timer_fn(ffff830461915000)
>     (XEN) [  150.293553]   ex=       55316us timer=ffff830461979aa0 cb=drivers/cpufreq/cpufreq_ondemand.c#do_dbs_timer(ffff830461979ae0)
>     (XEN) [  150.294744]   ex=       35413us timer=ffff83046198fdc0 cb=common/sched/core.c#s_timer_fn(0000000000000000)
>     (XEN) [  150.295776] CPU21:
>     (XEN) [  150.296076]   ex=      617580us timer=ffff830461925070 cb=common/sched/core.c#vcpu_singleshot_timer_fn(ffff830461925000)
> 
> Just after S3:
> 
>     (XEN) [  164.462198] Dumping timer queues:
>     (XEN) [  164.462630] CPU00:
>     (XEN) [  164.462949]   ex=         768us timer=ffff82d040643540 cb=drivers/char/xhci-dbc.c#dbc_uart_poll(ffff82d0404e5e78)
>     (XEN) [  164.464064]   ex=     1286532us timer=ffff82d04065d220 cb=arch/x86/time.c#plt_overflow(0000000000000000)
>     (XEN) [  164.465099]   ex=      395997us timer=ffff830461921070 cb=common/sched/core.c#vcpu_singleshot_timer_fn(ffff830461921000)
>     (XEN) [  164.466262]   ex=    15327843us timer=ffff82d040644c20 cb=arch/x86/cpu/mcheck/intel-nonfatal.c#mce_work_fn(0000000000000000)
>     (XEN) [  164.467461] CPU02:
>     (XEN) [  164.467773]   ex=       37756us timer=ffff830461931070 cb=common/sched/core.c#vcpu_singleshot_timer_fn(ffff830461931000)
>     (XEN) [  164.468953] CPU04:
>     (XEN) [  164.469267]   ex=      940042us timer=ffff830461935070 cb=common/sched/core.c#vcpu_singleshot_timer_fn(ffff830461935000)
>     (XEN) [  164.470444] CPU06:
>     (XEN) [  164.470759]   ex=      485896us timer=ffff830461905070 cb=common/sched/core.c#vcpu_singleshot_timer_fn(ffff830461905000)
>     (XEN) [  164.471937] CPU08:
>     (XEN) [  164.472251]   ex=      459720us timer=ffff83046190d070 cb=common/sched/core.c#vcpu_singleshot_timer_fn(ffff83046190d000)
>     (XEN) [  164.473430] CPU09:
>     (XEN) [  164.473745]   ex=     1563081us timer=ffff830461909070 cb=common/sched/core.c#vcpu_singleshot_timer_fn(ffff830461909000)
>     (XEN) [  164.474922] CPU10:
>     (XEN) [  164.475237]   ex=      948204us timer=ffff830461901070 cb=common/sched/core.c#vcpu_singleshot_timer_fn(ffff830461901000)
>     (XEN) [  164.476417] CPU11:
>     (XEN) [  164.476732]   ex=      948071us timer=ffff830461911070 cb=common/sched/core.c#vcpu_singleshot_timer_fn(ffff830461911000)
>     (XEN) [  164.477912] CPU12:
>     (XEN) [  164.478219]   ex=      892163us timer=ffff830461919070 cb=common/sched/core.c#vcpu_singleshot_timer_fn(ffff830461919000)
>     (XEN) [  164.479398] CPU13:
>     (XEN) [  164.479713]   ex=      308429us timer=ffff830461941070 cb=common/sched/core.c#vcpu_singleshot_timer_fn(ffff830461941000)
>     (XEN) [  164.480893] CPU14:
>     (XEN) [  164.481208]   ex=      954493us timer=ffff83046191d070 cb=common/sched/core.c#vcpu_singleshot_timer_fn(ffff83046191d000)
>     (XEN) [  164.482386] CPU15:
>     (XEN) [  164.482700]   ex=     1487692us timer=ffff83046192d070 cb=common/sched/core.c#vcpu_singleshot_timer_fn(ffff83046192d000)
>     (XEN) [  164.483881] CPU16:
>     (XEN) [  164.484195]   ex=       22890us timer=ffff830461929070 cb=common/sched/core.c#vcpu_singleshot_timer_fn(ffff830461929000)
>     (XEN) [  164.485373] CPU18:
>     (XEN) [  164.485688]   ex=       85902us timer=ffff830461939070 cb=common/sched/core.c#vcpu_singleshot_timer_fn(ffff830461939000)
>     (XEN) [  164.486864] CPU20:
>     (XEN) [  164.487171]   ex=         895us timer=ffff830461915070 cb=common/sched/core.c#vcpu_singleshot_timer_fn(ffff830461915000)
>     (XEN) [  164.488358]   ex=       17895us timer=ffff830461979aa0 cb=drivers/cpufreq/cpufreq_ondemand.c#do_dbs_timer(ffff830461979ae0)
>     (XEN) [  164.489569]   ex=        2914us timer=ffff83046198fdc0 cb=common/sched/core.c#s_timer_fn(0000000000000000)
>     (XEN) [  164.490633] CPU21:
>     (XEN) [  164.490947]   ex=      461154us timer=ffff830461925070 cb=common/sched/core.c#vcpu_singleshot_timer_fn(ffff830461925000)
> 
> In the latter case, I see only one cb=common/sched/core.c#s_timer_fn
> (two of them before). And also only one
> cb=drivers/cpufreq/cpufreq_ondemand.c#do_dbs_timer.

Let's start with this one. It's active when the ondemand governor is in use,
and when a CPU isn't (in the process of being put into) a C-state. There
being only two instances means the system was reasonably idle at the time you
dumped the timer queues ahead of entering S3, and just slightly more idle
after getting back out of S3. I've just checked my Skylake: Without it ever
having gone through an S3 cycle, there's only one instance there when the
system is running nothing but an "xl dmesg".

If you place enough load on the system to keep all CPUs busy, more instances
of the timer should appear. How many of them it'll be does, however, also
depend on the scope of the policy (supplied by firmware). The topology ...

> Is the s_timer_fn related to runqueues? I have two of them:
> 
>     (XEN) [   11.751480] Adding cpu 0 to runqueue 0
>     (XEN) [   11.753580]  First cpu on runqueue, activating
>     (XEN) [   11.755731] Adding cpu 2 to runqueue 0
>     (XEN) [   11.757818] Adding cpu 4 to runqueue 0
>     (XEN) [   11.759891] Adding cpu 6 to runqueue 0
>     (XEN) [   11.761955] Adding cpu 8 to runqueue 0
>     (XEN) [   11.764001] Adding cpu 9 to runqueue 0
>     (XEN) [   11.766029] Adding cpu 10 to runqueue 0
>     (XEN) [   11.768045] Adding cpu 11 to runqueue 0
>     (XEN) [   11.770050] Adding cpu 12 to runqueue 1
>     (XEN) [   11.772033]  First cpu on runqueue, activating
>     (XEN) [   11.774051] Adding cpu 13 to runqueue 1
>     (XEN) [   11.776047] Adding cpu 14 to runqueue 1
>     (XEN) [   11.777993] Adding cpu 15 to runqueue 1
>     (XEN) [   11.779913] Adding cpu 16 to runqueue 1
>     (XEN) [   11.781872] Adding cpu 18 to runqueue 1
>     (XEN) [   11.783912] Adding cpu 20 to runqueue 1
>     (XEN) [   11.785855] Adding cpu 21 to runqueue 1

... of this system looks somewhat "interesting", judging from these CPU
numbers.

Assuming the system was (supposedly) equally idle before and after S3,
the absence of the 2nd timer(s?) may indicate that some (background?)
load that was there before S3 didn't re-appear afterwards. Such
background load could be something which monitors and tunes the system.
(Yet as indicated, I'm looking at the CPUfreq part only right now. I'm
kind of hoping that a scheduler maintainer may look at the other aspect.)

> Could the issue be related to those timer differences?

Possibly. For the CPUfreq aspect you could simply turn that off to see if
it makes a difference. Or you could switch to a governor different from
the ondemand one.

With the ondemand governor, does the pattern (will require multiple runs)
change across S3 that "xenpm get-cpufreq-states" produces? For example,
does load move towards CPU0? (Thinking of it, did you check whether
interrupt affinities change across S3? More going to CPU0 could also be
part of the problem, for example.)

Jan


From xen-devel-bounces@lists.xenproject.org Thu Apr 02 08:39:51 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 02 Apr 2026 08:39:51 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1271287.1559505 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1w8Dab-0006d9-B6; Thu, 02 Apr 2026 08:39:45 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1271287.1559505; Thu, 02 Apr 2026 08: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 1w8Dab-0006d2-8M; Thu, 02 Apr 2026 08:39:45 +0000
Received: by outflank-mailman (input) for mailman id 1271287;
 Thu, 02 Apr 2026 08:39:44 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <jbeulich@suse.com>) id 1w8Daa-0006cw-Dh
 for xen-devel@lists.xenproject.org; Thu, 02 Apr 2026 08:39:44 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1w8DaZ-001Cqk-QE
 for xen-devel@lists.xenproject.org; Thu, 02 Apr 2026 10:39:43 +0200
Received: from [10.42.69.6] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <jbeulich@suse.com>)
 id 69ce2b4a-e002-0a2a0a5209dd-0a2a4506d760-8
 for <xen-devel@lists.xenproject.org>; Thu, 02 Apr 2026 10:39:43 +0200
Received: from [209.85.128.43] (helo=mail-wm1-f43.google.com)
 by tlsNG-16d1c6.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.0)
 (envelope-from <jbeulich@suse.com>)
 id 69ce2b4f-0df0-0a2a45060019-d155802bb57e-3
 for <xen-devel@lists.xenproject.org>; Thu, 02 Apr 2026 10:39:43 +0200
Received: by mail-wm1-f43.google.com with SMTP id
 5b1f17b1804b1-48704db565eso6243655e9.1
 for <xen-devel@lists.xenproject.org>; Thu, 02 Apr 2026 01:39:43 -0700 (PDT)
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-4887e832585sm328006935e9.6.2026.04.02.01.39.42
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Thu, 02 Apr 2026 01:39:42 -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=google header.d=suse.com header.i="@suse.com" header.h="Content-Transfer-Encoding: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=1775119183; x=1775723983; darn=lists.xenproject.org;
        h=content-transfer-encoding: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;
        bh=FTEc4Up5NS5nmekNW2xg2XC0IwNoFW18OBkCBWWQUS8=;
        b=NEQ4y2BBwHfRe+UKsjCLUAnYeR8LFSZUY2vU2TZqElAsu1Uk3eCzI1gLae4N/OBC8D
         r3mpAJHvixE/38o81JsSTbxT3wjaYyJRqpmgZUB9BX+tzXzpEGqap2uecUFlllL/shFe
         n08NB7rdq3crHYQ9yi06nz0Lxm7zwssdtRIDZGQKCU+xcIBoqfkmD2VU5gSbujGpN2sR
         Beqi0SxqpnD0KxW1Vh8xmMxy5q0rja55puO3fER+62OopfkNvN4+m6cFaj4z0/ctI6K7
         HSMrm0zp/QqXRvQ4DxpXqxBT+G83wiUjI9eRYS+kQH3Foh+S0DpKoDPfjdkqyy56tIw6
         0QJA==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20251104; t=1775119183; x=1775723983;
        h=content-transfer-encoding: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;
        bh=FTEc4Up5NS5nmekNW2xg2XC0IwNoFW18OBkCBWWQUS8=;
        b=N5Wn2WUUMLnmiFyTFrLBi9r7d/CgcmwsN7ZJyv6O8o7ehUUwjsF8UrrtBbSh4Bz6+m
         1OrkL36aJ4TpnC9FtrKwtz1POzS7UYwd3HpcFuOmBNOExQDoFlwfn6RlfFflMDgVeKen
         45BpX798x4IL71ezCiQBuI/xCvbcRos9Xbmcr2fKN6HKlzGJ0KGuEYWku2Da4y3oOdWQ
         KrggghE2nkcdfwlcbhJIxUrj2F17Z7m+0TCsJ4qo3U+wL3EHdHl9B+7ZnITh/C2Krj9o
         qAYiNUGJbah2C0evW96LIRB/6xnlJURv+Bl2XsZBumPFUZqBa00kJOh4lfw5LZVHH3Zy
         Dk1w==
X-Gm-Message-State: AOJu0Yz95kRwNHrr3SYuoImvmehOoqKLpIIc0yRZaC2SiK0U0blnDy4e
	alQYDXmyK7reC8oHhGOdRNO2bEP7JmpcS8vccaSnY36o6ClolF6D5pFT48O0GnDcpBlPt6eB4kt
	xGieMjQ==
X-Gm-Gg: ATEYQzyZxXGqPC+ptRIXYgmUg0/dF7hVgLXjlE6VFyZoNvPZCAlfa5eFJoiKHREEAAH
	IObC3RM87YwsUCmP04cKvGLzpN8D1Q4U5hyocY6g0kJf1WYsjlYHWoWV71V/3m/ddEQjGSF7A++
	uoIwEqpJkZ/tC6tC3KoirK2L0WTLPpEVt2DpkHCteg3+Kewe1BnOvSgvyC3tCib/EygK/SWgQ6m
	HRWvFyWXxtOyrUf//X7VC74tSOspWNrXiSk2UvH+liynJM9BI0eopX6zZL8RFT5ZGXhhCgwBFId
	LB/5WIGupioI0h5R3geJKX2hAw7IgPlINtFqEPYPXmkGJYcD0JV/qKeyrrdkxYtxe1Csd6sbSWc
	wbtzr+oRjxMeCxt6DdgKkg0QupEnSNNyUPmNcwp+VpslohT9ctmcMWpSmJHD5RK8I3EM+NH4Tcc
	EsnmoDVc4EbAypAbJTJG/GvrjvV97I/uk6sml+jV0ty0rP0PFP5wGc+Z1RTzYXmGcDcblvPWk8T
	oSUssrxBj65/50=
X-Received: by 2002:a05:600c:310b:b0:485:531d:28b9 with SMTP id 5b1f17b1804b1-4888b769851mr41616695e9.14.1775119183071;
        Thu, 02 Apr 2026 01:39:43 -0700 (PDT)
Message-ID: <aa6910f1-365a-4534-b229-9730b3aede02@suse.com>
Date: Thu, 2 Apr 2026 10:39:41 +0200
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: IOMMU faults after S3
To: =?UTF-8?Q?Marek_Marczykowski-G=C3=B3recki?=
 <marmarek@invisiblethingslab.com>
Cc: xen-devel <xen-devel@lists.xenproject.org>
References: <acZZmGXIJlmN3KGm@mail-itl>
 <e8bbaae2-5cff-4549-9f27-fbbda7346f60@suse.com>
 <090b8b8f-141b-4a24-92eb-879c0a0c73e1@suse.com> <ac2nibFfvGm_7elv@mail-itl>
 <933a3e95-33d2-4e20-a4d5-2d8b20c2da7f@suse.com> <ac4kCq87SQSc6ddV@mail-itl>
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: <ac4kCq87SQSc6ddV@mail-itl>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
X-purgate-ID: tlsNG-16d1c6/1775119183-642483D8-4995561C/0/0
X-purgate-type: clean
X-purgate-size: 5827

On 02.04.2026 10:08, Marek Marczykowski-Górecki wrote:
> The xl dmesg output (from MTL this time):
> 
>     (XEN) [  123.477511] Entering ACPI S3 state.
>     (XEN) [18446743903.571842] _disable_pit_irq:2649: using_pit: 0, cpu_has_apic: 1
>     (XEN) [18446743903.571856] _disable_pit_irq:2659: cpuidle_using_deep_cstate: 1, boot_cpu_has(X86_FEATURE_XEN_ARAT): 0

XEN_ARAT being off is the one odd aspect here. That'll want tracking down
separately. As per xen-cpuid output (below) ARAT is available.

>     (XEN) [18446743903.571866] _disable_pit_irq:2662: init: 0
>     (XEN) [18446743903.571877] hpet_broadcast_resume:661: hpet_events: ffff83046bc1f080
>     (XEN) [18446743903.572020] hpet_broadcast_resume:672: num_hpets_used: 8
>     (XEN) [18446743903.572029] hpet_broadcast_resume:690: cfg: 0x1
>     (XEN) [18446743903.572040] hpet_broadcast_resume:695: i:0, hpet_events[i].msi.irq: 122, hpet_events[i].flags: 0
>     (XEN) [18446743903.572081] hpet_broadcast_resume:706: i:0, cfg: 0xc134
>     (XEN) [18446743903.572089] hpet_broadcast_resume:695: i:1, hpet_events[i].msi.irq: 123, hpet_events[i].flags: 0
>     (XEN) [18446743903.572123] hpet_broadcast_resume:706: i:1, cfg: 0xc104
>     (XEN) [18446743903.572132] hpet_broadcast_resume:695: i:2, hpet_events[i].msi.irq: 124, hpet_events[i].flags: 0
>     (XEN) [18446743903.572167] hpet_broadcast_resume:706: i:2, cfg: 0xc104
>     (XEN) [18446743903.572175] hpet_broadcast_resume:695: i:3, hpet_events[i].msi.irq: 125, hpet_events[i].flags: 0
>     (XEN) [18446743903.572210] hpet_broadcast_resume:706: i:3, cfg: 0xc104
>     (XEN) [18446743903.572218] hpet_broadcast_resume:695: i:4, hpet_events[i].msi.irq: 126, hpet_events[i].flags: 0
>     (XEN) [18446743903.572252] hpet_broadcast_resume:706: i:4, cfg: 0xc104
>     (XEN) [18446743903.572261] hpet_broadcast_resume:695: i:5, hpet_events[i].msi.irq: 127, hpet_events[i].flags: 0
>     (XEN) [18446743903.572294] hpet_broadcast_resume:706: i:5, cfg: 0xc104
>     (XEN) [18446743903.572303] hpet_broadcast_resume:695: i:6, hpet_events[i].msi.irq: 128, hpet_events[i].flags: 0
>     (XEN) [18446743903.572338] hpet_broadcast_resume:706: i:6, cfg: 0xc104
>     (XEN) [18446743903.572347] hpet_broadcast_resume:695: i:7, hpet_events[i].msi.irq: 129, hpet_events[i].flags: 0
>     (XEN) [18446743903.572382] hpet_broadcast_resume:706: i:7, cfg: 0xc104

Hmm, but what you didn't log is whether __hpet_setup_msi_irq() actually
succeeded everywhere. (And if it did, also logging HPET_Tn_ROUTE() values
might be a good idea, if only to double check.)

All values logged look entirely plausible, with XEN_ARAT being off.

> And the xen-cpuid -p output from this system:
> 
>     Xen reports there are maximum 120 leaves and 2 MSRs
>     Raw policy: 48 leaves, 2 MSRs
>      CPUID:
>       leaf     subleaf  -> eax      ebx      ecx      edx     
>       00000000:ffffffff -> 00000023:756e6547:6c65746e:49656e69
>       00000001:ffffffff -> 000a06a4:20800800:77fafbff:bfebfbff
>       00000002:ffffffff -> 00feff01:000000f0:00000000:00000000
>       00000004:00000000 -> fc004121:02c0003f:0000003f:00000000
>       00000004:00000001 -> fc004122:03c0003f:0000003f:00000000
>       00000004:00000002 -> fc01c143:03c0003f:000007ff:00000000
>       00000004:00000003 -> fc0fc163:02c0003f:00007fff:00000004
>       00000005:ffffffff -> 00000040:00000040:00000003:11112020
>       00000006:ffffffff -> 00dfcff7:00000002:00000409:00040003
>       00000007:00000000 -> 00000002:239c27eb:994007ac:fc18c410
>       00000007:00000001 -> 40400910:00000001:00000000:00040000
>       00000007:00000002 -> 00000000:00000000:00000000:0000003f
>       0000000a:ffffffff -> 07300805:00000000:00000007:00008603
>       0000000b:00000000 -> 00000001:00000002:00000100:00000020
>       0000000b:00000001 -> 00000007:00000016:00000201:00000020
>       0000000d:00000000 -> 00000207:00000000:00000a88:00000000
>       0000000d:00000001 -> 0000000f:00000000:00019900:00000000
>       0000000d:00000002 -> 00000100:00000240:00000000:00000000
>       0000000d:00000008 -> 00000080:00000000:00000001:00000000
>       0000000d:00000009 -> 00000008:00000a80:00000000:00000000
>       0000000d:0000000b -> 00000010:00000000:00000001:00000000
>       0000000d:0000000c -> 00000018:00000000:00000001:00000000
>       0000000d:0000000f -> 00000328:00000000:00000001:00000000
>       0000000d:00000010 -> 00000008:00000000:00000001:00000000
>       80000000:ffffffff -> 80000008:00000000:00000000:00000000
>       80000001:ffffffff -> 00000000:00000000:00000121:2c100800
>       80000002:ffffffff -> 65746e49:2952286c:726f4320:4d542865
>       80000003:ffffffff -> 6c552029:20617274:35312037:00004835
>       80000006:ffffffff -> 00000000:00000000:08007040:00000000
>       80000007:ffffffff -> 00000000:00000000:00000000:00000100
>       80000008:ffffffff -> 0000302e:00000000:00000000:00000000
>      MSRs:
>       index    -> value           
>       000000ce -> 0000000080000000
>       0000010a -> 000000000d89fd6b
>     Host policy: 41 leaves, 2 MSRs
>      CPUID:
>       leaf     subleaf  -> eax      ebx      ecx      edx     
>       00000000:ffffffff -> 0000000d:756e6547:6c65746e:49656e69
>       00000001:ffffffff -> 000a06a4:20800800:77fafbff:bfebfbff
>       00000002:ffffffff -> 00feff01:000000f0:00000000:00000000
>       00000004:00000000 -> fc004121:02c0003f:0000003f:00000000
>       00000004:00000001 -> fc004122:03c0003f:0000003f:00000000
>       00000004:00000002 -> fc01c143:03c0003f:000007ff:00000000
>       00000004:00000003 -> fc0fc163:02c0003f:00007fff:00000004
>       00000005:ffffffff -> 00000040:00000040:00000003:11112020
>       00000006:ffffffff -> 00dfcff7:00000002:00000409:00040003

Still ARAT available as per here.

Jan


From xen-devel-bounces@lists.xenproject.org Thu Apr 02 08:40:35 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 02 Apr 2026 08:40:35 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1271296.1559513 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1w8DbP-00082i-Km; Thu, 02 Apr 2026 08:40:35 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1271296.1559513; Thu, 02 Apr 2026 08:40: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 1w8DbP-00082b-I1; Thu, 02 Apr 2026 08:40:35 +0000
Received: by outflank-mailman (input) for mailman id 1271296;
 Thu, 02 Apr 2026 08:40:34 +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 1w8DbO-00082T-Mm
 for xen-devel@lists.xenproject.org; Thu, 02 Apr 2026 08:40:34 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1w8DbO-00EFAf-35
 for xen-devel@lists.xenproject.org; Thu, 02 Apr 2026 10:40:34 +0200
Received: from [10.42.69.9] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <ross.lagerwall@citrix.com>)
 id 69ce2b7d-bab6-0a2a0a5309dd-0a2a45099cae-36
 for <xen-devel@lists.xenproject.org>; Thu, 02 Apr 2026 10:40:34 +0200
Received: from [52.101.52.59]
 (helo=BL2PR02CU003.outbound.protection.outlook.com)
 by tlsNG-bad1c0.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.0)
 (envelope-from <ross.lagerwall@citrix.com>)
 id 69ce2b80-bf79-0a2a45090019-3465343b2cfc-3
 for <xen-devel@lists.xenproject.org>; Thu, 02 Apr 2026 10:40:33 +0200
Received: from CH8PR03MB8274.namprd03.prod.outlook.com (2603:10b6:610:2ba::5)
 by DS3PR03MB989216.namprd03.prod.outlook.com (2603:10b6:8:38e::22)
 with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9769.18; Thu, 2 Apr
 2026 08:40:31 +0000
Received: from CH8PR03MB8274.namprd03.prod.outlook.com
 ([fe80::ebe2:32c1:d2be:a096]) by CH8PR03MB8274.namprd03.prod.outlook.com
 ([fe80::ebe2:32c1:d2be:a096%7]) with mapi id 15.20.9769.018; Thu, 2 Apr 2026
 08:40: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=KT7I28GgIEUiOR5mRQ9B8pQfjtwYi00pmeSjiKiG1DXiLH2aDzSfTt5JpGx475Xwf5/cnOY5Z7zzZk1tJhmwbgtfovO7VV/vlMpjuWN57K1S4guQ21IT8tjH0zYgyercTTVAQzftwEOkmq/v0ji+iXk1SMlQy2ADJa6D6Zm2MqqGm6y34Khv6gSv+orCQt0rnWNRVFAHaBzQBRAOBkQSMki5Bz9wX5+3El5+OY+38PWpEgGHOpTijaovnae/GQ9uFXdrxhAALZYHKxlPZVi2HR8/8LLHQIgVhecAQXmjsllCjqjudkAh0HW7v28M9MlBzhLNTCKIqTJF/z2HP2gbxg==
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com;
 s=arcselector10001;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1;
 bh=VdfQ8Ppn8w3mAl8W9T0lMjJOVO/ZVKu+sDdhkmaWNwU=;
 b=JQ17+Wbe/vimkuO6HIRcih6++auws3aicAOAzUJ4nTiH1/1a2I46OJwPAGrv1b/23L4ZVLbbkwnPTSTCkGjHKgxXIZkOHNh9fLMVh/oePfEOwH+N/rEbaRgQgCux61j/XBOCO3jgkRWL6XNw1ISvUNLBPXxcC4zbdCfPLNJLvXov7qgOHRefrUQsnCjDcneLOCyi1g1YoczAgLt6THHUweUmnIcYjUlLh0l/OzwkWqJ/4x0c99dRaBcEI4t0uek3gub/9jKDLpDK2jh87N+zt+eIaqJqeBH8V9k7zS221tlBTbyDJkltdCZ7joh+6NQd2lAhP1qd3LieLPmr04diUQ==
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=VdfQ8Ppn8w3mAl8W9T0lMjJOVO/ZVKu+sDdhkmaWNwU=;
 b=VZ427re7rHirDSoxbBw7PhAz01yFkNBFTPAWrSdLa+JHXwuzUn2FoHuHGUOlcHitJlaTJ2NA3MAZXGovDdrgcDbTwH56XgZaGbL7IW8XcOBBBXeHA7Xg/HKzD5m+TAvebKkjlhXYzpF7w6otFi8yBzZqci4sw+PNVPnlP989UMU=
Authentication-Results: dkim=none (message not signed)
 header.d=none;dmarc=none action=none header.from=citrix.com;
Message-ID: <17c4e7b4-297a-4bf9-9160-659723d15e48@citrix.com>
Date: Thu, 2 Apr 2026 09:40:26 +0100
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH v1 0/3] Lockless SMP function call and TLB flushing
To: Jan Beulich <jbeulich@suse.com>
Cc: Andrew Cooper <andrew.cooper3@citrix.com>,
 =?UTF-8?Q?Roger_Pau_Monn=C3=A9?= <roger.pau@citrix.com>,
 Anthony PERARD <anthony.perard@vates.tech>,
 Michal Orzel <michal.orzel@amd.com>, Julien Grall <julien@xen.org>,
 Stefano Stabellini <sstabellini@kernel.org>, xen-devel@lists.xenproject.org
References: <20260401163521.3603665-1-ross.lagerwall@citrix.com>
 <94b2e444-844a-4d34-9c9f-de0b9e6e23b1@suse.com>
Content-Language: en-US
From: Ross Lagerwall <ross.lagerwall@citrix.com>
In-Reply-To: <94b2e444-844a-4d34-9c9f-de0b9e6e23b1@suse.com>
Content-Type: text/plain; charset=UTF-8; format=flowed
Content-Transfer-Encoding: 7bit
X-ClientProxiedBy: LO6P123CA0055.GBRP123.PROD.OUTLOOK.COM
 (2603:10a6:600:310::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_|DS3PR03MB989216:EE_
X-MS-Office365-Filtering-Correlation-Id: dd8cde06-91bc-449c-c8b8-08de90937fc5
X-MS-Exchange-SenderADCheck: 1
X-MS-Exchange-AntiSpam-Relay: 0
X-Microsoft-Antispam:
	BCL:0;ARA:13230040|366016|1800799024|376014|56012099003|22082099003|18002099003;
X-Microsoft-Antispam-Message-Info:
	AgIpKNJJ+xdlDu43vNZjQy5bcBPd7yLP/uu9lhq3jBgLLWmfvC30F2qfs4gkIwni7S5cLxjdpaam/2CaH8f62b3DINdpO9l0bqLeMZt9iryjyDWmwy5LQ/77jfQdJLqyujDEX+TDcb1dRfm6TKu6rcsp7HwlEqtXRnm0m2ZoCFbV4rbY3wamUBssTOqp/4f9tUl40ktR+WM41DyOUb1g95bfsS8LtfgFmRVrvz6iITN4zxjohvBjI4JqdxcG+p+tEXJWiZFaBPmS99H+DDNtYLrf6VtNqaKBGH6fSvRhIQvhPnfcF0D+yGyBp1DKtDcmvGDPQoxICah6yZYrXVo+g4p0Su/Wj6EWcs9i+mKdgvkzszoL+U/AfE8XH08XsOJlI2/FH5IBhZINvhPdvX+BpWO/8bs7nBkhvFe5awS5jGm/ns+i7Oyp0u9TwS1kkWT+fyUqa/9oJM3PUUUsfJugxBt3JXMvHvfKWfMovCYrWJlvrGKK0YRyyKN+moC5s6curwCBYGGH3fWsfixNMySxkIFqYgqR+//Sqw67zrve7BMqa0cixR32BxDdpgISI5rxOsNRQ28tXOfJyTl+3TaTwsq0ochTVNT1FC+GSFHpuVVDHo214r8B5E5txF2nEcymc1CWJyLUKMQtdya7zvR+1oy3xynVOpgaZ3mm5UmeIaLvtYCDapP4LaP4J1wli2IZHy2gEEPAyS3wAEHl9iyPWyznHEafxxGSeaqhRvxxFpM=
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)(56012099003)(22082099003)(18002099003);DIR:OUT;SFP:1101;
X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1
X-MS-Exchange-AntiSpam-MessageData-0:
	=?utf-8?B?L0VSVTViVkQ5WXEreFVOZ2NPcTAvczdSRVBMNmFmQTBpb3RWUWVKQVlFOWRI?=
 =?utf-8?B?Rklab25iS1hmYUU0U0YwOW1jTEdSRkpuMkNjVzhRZjhadUhzSlhoY0VLU25I?=
 =?utf-8?B?RkM4U3hQQVdSMUdsQUJOM3hFZm1YbkYxaXlJTTZhUUZrZmpsdzkxVTZFOXRs?=
 =?utf-8?B?cDZjN3g5TDhGMmtWNVJEbDRGTkd1KzVRQmZxeVREOFk1UnVaTGRheUVCcHZS?=
 =?utf-8?B?WjdWakdiL2FHbm93c3oyb29jZVo5TThHTExNMWhSMDFRRVF4ME5QWmhhOUgv?=
 =?utf-8?B?OVlVWXFTQ3paajAyS0xSZ3BGUHpjNGpRQ0JuUUs4SGlxeEhnVkVqTkcrWTY4?=
 =?utf-8?B?a3V3NGZqZHBhaTBCZ2xhRXhObEUvUEM0UHN5THA3T1NBMTRxK2tnTHlZQ3JZ?=
 =?utf-8?B?cTVLSU9ZUCtPZlp1QkUyQ1Jkd3FCQVZsZEtBeERBZVV3V0VBMDhyR2x0V1dh?=
 =?utf-8?B?YUlzM00wSTQ2eURqRVdvRUlRejQwTDAxQ0ljYm91bTl2MTY4TUNTR2NoRnFJ?=
 =?utf-8?B?WDhTNnRwU0JCR1BvS0NLekE1Q0g0U1RwTG12MHdBeFhYY1UzUDlMc2IvckNx?=
 =?utf-8?B?aDNRa240ZFptNzNlTU9hOE04SFJoUkVwaGxaREFwOXlkMi9NdUVTbWh4US9r?=
 =?utf-8?B?LzFiMG9IanlpN1VGeWZWRzlqblRzTHBnOGZhRjlDNmtZbGFocTY2TUVmNzdr?=
 =?utf-8?B?M3M4MEhnQXJKWWl3RmVKdEFZMWFYTkZob1hseHNnN1NtMVhaTG1nZUJ3SldU?=
 =?utf-8?B?NGtMK2g5alhFUVh5U0Y5RlFadHkxMURHNXVVYXdZekwrNGRDalNyNzlpdmVj?=
 =?utf-8?B?QlFjZWl3L2dMeDI2TjBEZzN0a2pra3l1YkNGaFNIZG1jd2tTUW53QUxqWWdK?=
 =?utf-8?B?S2Z2TVQyUitrN3E1OG1KWm9EUlFvaEh3ZGl4S0RqcndzaVhOVEc4T1NZcEFp?=
 =?utf-8?B?WUFOTVN3b0F3OVBKbHJNZVMrZXRncnl4Z3RYSkIvWUhkVW44R2o5S2hWQXdI?=
 =?utf-8?B?Y2hqenoyUmZtaVQraGtSeXpocFRtYjZENjBCWDlidnNRSzhtUmsyMFd0SXor?=
 =?utf-8?B?Zk5yNlJlTWh5NDg5ZHA3SlByZXZHaVlNZmoxMExFNldobFNTVUtDMXpvV1Fp?=
 =?utf-8?B?dUpnNmN4cUxRdU5NWXZOMHo5Ykg3ckI2Ty9RdS9VYXppRkNuc0FNaGpSOHBF?=
 =?utf-8?B?K05QQVlwbFJsVnZRbXpGUFM2NkFEbG9rYURqZ3pTT3JoNnk2QUo1MUVhZ0ow?=
 =?utf-8?B?SzVmbGRENWZKcXRkWkFOMFVsYTB4R1pYeXlwOGhTaUxzcnpTQjlHZGQ1K01z?=
 =?utf-8?B?Qjd3aGpyRDNncTBEWDA5OFVhVE5uRUNnblBGVkZWOUNyQS9lV2QwMzRrN0lE?=
 =?utf-8?B?UnVYMWRMQ2kyN0JCWkgzR2tHSHN5R2xGQkJSeGdWR3UyS2gyTzdiMlMvdzNN?=
 =?utf-8?B?Nm5NbFRCMWRpaXRKWnhEQWdFczJNNGRKSGZXRC8rSDBMdXRSV2M1REQ5ZVV6?=
 =?utf-8?B?TkhtbXpWNEJEK2Q4bDNBelBLNXNQN2UrM2o0VWVrendtdSswRVM4YjNkRllH?=
 =?utf-8?B?UkU0SlZlNEdPZzVoY2VqbEJ6N1FzbFVWOSsveWtDNExHdnZMV0w2NWJSeElt?=
 =?utf-8?B?Q0d3UkhhcG1XTDlzV1BwQVgya1hwYWFoVjExYkFCTVlxcHFtMHBBcWJKQ25n?=
 =?utf-8?B?a3RGZWlHcnRqbEdmb21QYVloLzlNcXBjdzBtT1N5QXphd1BZZldHaC9ZWjA5?=
 =?utf-8?B?VndzWTljWDlXNTJJOVNFUGRRS3l4czM4MFRpWG1CejJ3b1Njd1NHZElycHQ4?=
 =?utf-8?B?WXpOcVNCZUkxRFkxYUdzVFN3R2hOU3RtbWxER2ovVjFkQk90N292ZG52R1Jn?=
 =?utf-8?B?ZEF0eG5mdldoU3RMU2xmcVJOTTh5bk9GK2Z6NkhORjRaZ3JBM2c3c0g3bXll?=
 =?utf-8?B?TzJTZnNrYjBLTWlYeDNoZXQ0bUJ6d3BCTjljQTRDc0ZodzBHUk5RVENBNTlr?=
 =?utf-8?B?RUpYejBua1c1bTA2UzA0SEJoWTFNVVRYeUl4QytBREFHd2pFK0NRQmZXTktq?=
 =?utf-8?B?Y0N6WURwZDM0VGFhRjFMTWM3WnhHQXF2cXhib1ZIUHMvTWZlUnZCQ3M1Vkhx?=
 =?utf-8?B?R2Y5Z3Q3RGlCMUF2MWQxZFppUzJudURkcHRBeE84RDFnQW5pY3YwcitpRXpx?=
 =?utf-8?B?MjJRSTl3cVNkbUplTUMvOGZheTFLdy9GdmR4YjN3YVRrMTU5ZVBRVElhK2Vx?=
 =?utf-8?B?ZW42OElhRTlwakU1MVdpWnpuWHdJd3ZUK2pDcWhSUUVZYlZmQmRHWkFQdG02?=
 =?utf-8?B?eURwcENtODg4T002K3ZUekVmakFTTEJRMUNDZy9VODNIQVdiMmFYMlZmbVU0?=
 =?utf-8?Q?/CHNKYu5SsoIz0ok=3D?=
X-OriginatorOrg: citrix.com
X-MS-Exchange-CrossTenant-Network-Message-Id: dd8cde06-91bc-449c-c8b8-08de90937fc5
X-MS-Exchange-CrossTenant-AuthSource: CH8PR03MB8274.namprd03.prod.outlook.com
X-MS-Exchange-CrossTenant-AuthAs: Internal
X-MS-Exchange-CrossTenant-OriginalArrivalTime: 02 Apr 2026 08:40:31.3191
 (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: 75obsVRFqr+8cMfjn/5kF4q5uQaKqZA8owC6yekEcmFVxTbkVoypq1LbfyNAQReY0qnqVbXmHjQ5LOpKj7ohI5Uo7BTroHs2o881DJuAx8w=
X-MS-Exchange-Transport-CrossTenantHeadersStamped: DS3PR03MB989216
X-purgate-ID: tlsNG-bad1c0/1775119233-5DBE8152-B7D40290/0/0
X-purgate-type: clean
X-purgate-size: 2803

On 4/2/26 7:09 AM, Jan Beulich wrote:
> On 01.04.2026 18:35, Ross Lagerwall wrote:
>> Hi,
>>
>> This series implements lockless SMP function call and then rewrites x86 TLB
>> flushing to use SMP function calls.
>>
>> We have observed that the TLB flush lock can be a point of contention for
>> certain workloads, e.g. migrating 10 VMs off a host during a host evacuation.
>>
>> Performance numbers:
>>
>> I wrote a synthetic benchmark to measure the performance. The benchmark has one
>> or more CPUs in Xen calling on_selected_cpus() with between 1 and 64 CPUs in
>> the selected mask. The executed function simply delays for 500 microseconds.
>>
>> The table below shows the % change in execution time of on_selected_cpus():
>>
>>                    1 thread   2 threads    4 threads
>> 1 CPU in mask     0.02       -35.23       -51.18
>> 2 CPUs in mask    0.01       -47.20       -69.27
>> 4 CPUs in mask    -0.02      -42.40       -66.55
>> 8 CPUs in mask    -0.03      -47.82       -68.39
>> 16 CPUs in mask   0.12       -41.95       -58.26
>> 32 CPUs in mask   0.02       -25.43       -39.35
>> 64 CPUs in mask   0.00       -24.70       -37.83
>>
>> With 1 thread (i.e. no contention), there is no regression in execution time.
>> With multiple threads, as expected there is a significant improvement in
>> execution time.
>>
>> As a more practical benchmark to simulate host evacuation, I measured the
>> memory dirtying rate across 10 VMs after enabling log dirty (on an AMD system,
>> so without PML). The rate increased by 16% with this patch series, even
>> after the recent deferred TLB flush changes.
> 
> Is this a positive thing though? In the context of some related work something
> similar was mentioned iirc, accompanied by stating that this is actually
> problematic. A guest in log-dirty mode generally wants to be making progress,
> but also wants to be throttled enough to limit re-dirtying, such that
> subsequent iterations (in particular the final one) of page contents
> migration won't have to process overly many pages a 2nd time.
> 

In the context of a real migration, both the process copying the pages
out of the guest and the guest itself will be hitting the TLB flush lock
so reducing that bottleneck may increase throughput on both sides.
Whether or not the overall migration time increases or decreases depends
on many factors (number of migrations in parallel, the rate the guest is
dirtying memory, the line speed of the NIC, whether PML is used, ...)
which is why I measured a more controlled scenario to demonstrate the
change.

IMO throttling of a guest during a migration should be something
intentional and controlled by userspace policy rather than a side effect
of some internal global locks.

Ross


From xen-devel-bounces@lists.xenproject.org Thu Apr 02 08:40:38 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 02 Apr 2026 08:40:38 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1271297.1559523 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1w8DbS-0008Gr-RU; Thu, 02 Apr 2026 08:40:38 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1271297.1559523; Thu, 02 Apr 2026 08:40: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 1w8DbS-0008Gk-ON; Thu, 02 Apr 2026 08:40:38 +0000
Received: by outflank-mailman (input) for mailman id 1271297;
 Thu, 02 Apr 2026 08:40:37 +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 1w8DbR-0008Fz-0w
 for xen-devel@lists.xenproject.org; Thu, 02 Apr 2026 08:40:37 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1w8DbQ-001D7O-DX
 for xen-devel@lists.xenproject.org; Thu, 02 Apr 2026 10:40:36 +0200
Received: from [10.42.69.10] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <ross.lagerwall@citrix.com>)
 id 69ce2b77-e002-0a2a0a5209dd-0a2a450a9c72-10
 for <xen-devel@lists.xenproject.org>; Thu, 02 Apr 2026 10:40:36 +0200
Received: from [40.107.200.69]
 (helo=CH5PR02CU005.outbound.protection.outlook.com)
 by tlsNG-4011c0.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.0)
 (envelope-from <ross.lagerwall@citrix.com>)
 id 69ce2b83-ee98-0a2a450a0019-286bc845e156-3
 for <xen-devel@lists.xenproject.org>; Thu, 02 Apr 2026 10:40:36 +0200
Received: from CH8PR03MB8274.namprd03.prod.outlook.com (2603:10b6:610:2ba::5)
 by DS3PR03MB989216.namprd03.prod.outlook.com (2603:10b6:8:38e::22)
 with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9769.18; Thu, 2 Apr
 2026 08:40:34 +0000
Received: from CH8PR03MB8274.namprd03.prod.outlook.com
 ([fe80::ebe2:32c1:d2be:a096]) by CH8PR03MB8274.namprd03.prod.outlook.com
 ([fe80::ebe2:32c1:d2be:a096%7]) with mapi id 15.20.9769.018; Thu, 2 Apr 2026
 08:40: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=HNBFMrT1D+ZdPa9WZGjq4ACFo5/TguifaAIY6dmO1C+FbqHW5hJEOs8bLbBzCdde1OmXG0LgiahHE1E64ZIhI6W6ImbZ+UsTHKD165cIpzZwLC9lY1Ex+SINH/o6WdYDKuFD0XFv0gdQEEdtiAU72BIi6Hri/VXJbzkPqcAyWh+A/0nXxrGXOlHR9H7e5R3x54N11w46Yf01chcXDf2U7p2D1M0E1vWfaF3psN+XOtx9b8YlSdEaUtvn4MC7Vvg7dQprGwL2P7frgDa7SvPTADL1fPWOB+Oyznpw1V9Y6Vtb5xUq/i4s5pwMgluAk//3vgKfx7JdAPEJqKZ3T8p1sg==
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com;
 s=arcselector10001;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1;
 bh=VdfQ8Ppn8w3mAl8W9T0lMjJOVO/ZVKu+sDdhkmaWNwU=;
 b=ehqPr0C/7ONp0C0aiPWiuUBTwhcH6+VDjZlDkMAvJx6o77Z7chXBoJcCHH2I6c8mdy2a0FhZcVxKSjisnTqd6szGxpZEsHInS/SsKmxMlBYL1F5BArKwBHLjBamm0ULjVmUxeXlMjA7BWCzWi5dqE1dbbH86xYJYeOfHfvbLbDHMBUpvflzVR2zZNTk3rvd0NkMUPZSLikSCKIcPlMaz9loATByCd5cCc3lQj12Jtg2mR/1pAamP8d5x9+5VA+6HWRFk9o9tpRlaxtKObzjgxX7OesNcDMYGg23o8RYwvaoxuiMEq/zW3pSGKm6ucisyVhZAq459HJmdtAYSgSEPJQ==
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=VdfQ8Ppn8w3mAl8W9T0lMjJOVO/ZVKu+sDdhkmaWNwU=;
 b=VZ427re7rHirDSoxbBw7PhAz01yFkNBFTPAWrSdLa+JHXwuzUn2FoHuHGUOlcHitJlaTJ2NA3MAZXGovDdrgcDbTwH56XgZaGbL7IW8XcOBBBXeHA7Xg/HKzD5m+TAvebKkjlhXYzpF7w6otFi8yBzZqci4sw+PNVPnlP989UMU=
Authentication-Results: dkim=none (message not signed)
 header.d=none;dmarc=none action=none header.from=citrix.com;
Message-ID: <17c4e7b4-297a-4bf9-9160-659723d15e48@citrix.com>
Date: Thu, 2 Apr 2026 09:40:26 +0100
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH v1 0/3] Lockless SMP function call and TLB flushing
To: Jan Beulich <jbeulich@suse.com>
Cc: Andrew Cooper <andrew.cooper3@citrix.com>,
 =?UTF-8?Q?Roger_Pau_Monn=C3=A9?= <roger.pau@citrix.com>,
 Anthony PERARD <anthony.perard@vates.tech>,
 Michal Orzel <michal.orzel@amd.com>, Julien Grall <julien@xen.org>,
 Stefano Stabellini <sstabellini@kernel.org>, xen-devel@lists.xenproject.org
References: <20260401163521.3603665-1-ross.lagerwall@citrix.com>
 <94b2e444-844a-4d34-9c9f-de0b9e6e23b1@suse.com>
Content-Language: en-US
From: Ross Lagerwall <ross.lagerwall@citrix.com>
In-Reply-To: <94b2e444-844a-4d34-9c9f-de0b9e6e23b1@suse.com>
Content-Type: text/plain; charset=UTF-8; format=flowed
Content-Transfer-Encoding: 7bit
X-ClientProxiedBy: LO3P265CA0028.GBRP265.PROD.OUTLOOK.COM
 (2603:10a6:600:387::11) To CH8PR03MB8274.namprd03.prod.outlook.com
 (2603:10b6:610:2ba::5)
MIME-Version: 1.0
X-MS-PublicTrafficType: Email
X-MS-TrafficTypeDiagnostic: CH8PR03MB8274:EE_|DS3PR03MB989216:EE_
X-MS-Office365-Filtering-Correlation-Id: 1f7a3d8b-3c90-4e7c-b884-08de90938150
X-MS-Exchange-SenderADCheck: 1
X-MS-Exchange-AntiSpam-Relay: 0
X-Microsoft-Antispam:
	BCL:0;ARA:13230040|366016|1800799024|376014|56012099003|22082099003|18002099003;
X-Microsoft-Antispam-Message-Info:
	JoJE7nW3Axl4A6BtWe+erKCFIT7SApXdn3afPB5VPdRFrOiDZ0FQwcobgP2TPa/j0DJ3HZtIu0ryogdKPwHir9sQca1YdA/BxoUmUGD9ZYbOkNLn7FvRtthdWG/nD1DGhimeIhGmUJNwwaaz5QARdcQnzhbsvacHopEiCBgrYzVQLRwgOKyzg2iEnSvX/5GlOoxQX5gRqS0RZn+GxtAa6PjIIGV03PFAu7ODVnRrU27EMnte7GWdKbTwsyW6CqW0VQIcyg0rvNeNEhsui9T7j6Od1ibw/jTLy1H29o2NTma0CQrmD0DrjMheacY5AZmLwWJdnCLXgrdGB8GKBQuutxDOgwp1XvEPRr2IZoSOvVQV93/Codu9I3DY7Cw4OuZmITS59LxjCUHjXAFbJUXl6DmRLkhPeMUeREfpoDNWposioMltyjrWSlSbxkHs5Wd+S6xmTaZauDUhn+tBOHeItptOK+3qmiGfZnwkNCNsR62QlzZMXN90Pc9hOjdghnCdCLkblIGAHml2U83SNcgsvAUtyVUohgKYVuWHOWNIPY+YxEY2XP4L30PbAdjp+afrhFLXorkKjJvjOMufzErvbwg5tH6rGuKXv+CIJvmNjcTkPaZjTib34bMdHf5DBbFbyZ46sDNf2uQ8kiRFu+ukJ0HnapNblIwXcBTKGSLIN5yab8FJJ9/9ZQKnpbSI5scrJxiKfElK36zFQiZPJlWae02BPcka9uxPPrn1Z69zmRQ=
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)(56012099003)(22082099003)(18002099003);DIR:OUT;SFP:1101;
X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1
X-MS-Exchange-AntiSpam-MessageData-0:
	=?utf-8?B?U2RIL05jQmphQjhrcy92YzA0Rk96Y3VPZzN0RVBQVG9Ia3ZxN0FUV1RFdVg1?=
 =?utf-8?B?VE15L3FlN1FDS295TzlFZ05EN0RFRUNaRlhjSjFCdVhQcUFWQ3BhM0JJVG9l?=
 =?utf-8?B?cWgySzNzbXg2aTNsMHZTNVUvejhveGxQZzRMQWppMUcwczFRWkNaRHRGM1dq?=
 =?utf-8?B?RUhPM3VaVVpjRU9ZS0NMSi9EYUYrMVRESi9tc0ZPNEkzL2dsWDAyTzFNTkF0?=
 =?utf-8?B?VnNQVnh3RmJTZFNOVFFDZkVMZnp3WkJtSWlKaFpBUFJqZUhCMXowZkp1MzJC?=
 =?utf-8?B?dkF6UEpLMHNBTkRYU2FpYks4eUZuaFlkbFVwd2hROGc0bFFMMjBZVE0yWXRu?=
 =?utf-8?B?S3dtczFxdnRONEJpbFF3MXlRTnFVcStLZTI5aHlPOEk4VW9CcDBCQnhHL01a?=
 =?utf-8?B?TTJ3MkMyUUJUOHhvWjNybklnUE9YMDZuekYrK1hGQkQwYXJEK0RtZURtQWFo?=
 =?utf-8?B?VWFGQ0tmVG1nYjBxM2FZekF6cmk5Y3NKbXpvVEVsRzRGb3dOVjZVMTNxWmZF?=
 =?utf-8?B?M3lwckFKc1dia1d5aVdNeTd5L014b2NZUG1IMHJLbzVjY2Q2SzlnTkgyVVZa?=
 =?utf-8?B?ZlNzdnpDS1VDb3FVK28vdTV1VUxQcFo2UEdZYTBNM0JKazVhMVFBTU1WcUlT?=
 =?utf-8?B?dFZqZGFONXAzYS91dHFHL0YvWmdYZm1iOURObGh0WVFjZFNuRFl4ZzhkT0tp?=
 =?utf-8?B?WVM3WDAwd2pad1YyKysxRlpkZlRnTG9IaFY1N1VzdVJrd0s2b1p4OEQ5eEp2?=
 =?utf-8?B?dWhuMnZMd2wrYjFObDVNOFZCZ25yR2hxL01NRzRCd1NJWllIaXEvOXk3UE9q?=
 =?utf-8?B?aEVWeUpjazRzNWJBNlRSK282VVVkNEtrQmRMd3hPbnhMTkRteFFzYU92YWlC?=
 =?utf-8?B?RGIvTERDODB6Qnd3NkNaaHVWQmt5cktiZldvM1pGT1htWFJSMUJRak03dk9n?=
 =?utf-8?B?NU55aGQ1V3A2V0g1b29LMFVXYlJGS05KTFE2eUFLdExCZzBrVHV1V1JVUnpr?=
 =?utf-8?B?OTBldWRzVXJ0SFR6UktsR0R5ZjFMaERDR1J5Lzdta1Z1MTM3U1FwQXdvUElP?=
 =?utf-8?B?emRRb1EvMis3TUpQWkRDa29ZU1J5eVFSMHU5WWNYdHNoSGNnRXJXS0U5N3lO?=
 =?utf-8?B?eDMrQzVodXZIdDVtbjBZNDBiTW9oZUw5Q1lwMXNSL21oQmZyUzB5eVBzcHY0?=
 =?utf-8?B?R1JXdVNaSzBQNTkrcWtLVGQyL3ZuZUdFWERoNHp5NTM5NTNOWGx6cStQbzN2?=
 =?utf-8?B?Rmw5Qmo3bW0xdzdwcUE2dDhvWWVwaXEzT3VBMGdZb25FNFRPcHRCNzZDVUd5?=
 =?utf-8?B?ZFRiMmFtUUd3eWJHMkhPeTlJakNmY1FUSFRVak0xVTZ6TWY0SHJwN3lab2NE?=
 =?utf-8?B?eStVdExrYlBGNzdDdDhaYzlDeThmaStoWlN5aEtkT3lGeUMwM3RERUZjdXlv?=
 =?utf-8?B?dExTdmp0d0taUlBMYWRqMUQrbDR1aHdEbGkyOGxQSVlRU3U2R1ZTdFFIbUhu?=
 =?utf-8?B?MEVILzVBMG9zQ1hpb2owckR6WGE3cnJJdi9kU3NtcXlWR1dGbXA3elhJMTRn?=
 =?utf-8?B?cWlNYlBnVzhoRjE1b2s3L1FTYlVDTnZYa2ZIWER0MGpjSWZyTlhlUzJ1OEFK?=
 =?utf-8?B?QXFrWTVoMW00dmR0SG1PL1JyMzlaWTU0VUZrU2R1UG9PYmRXci9NS3JVSDRL?=
 =?utf-8?B?NUtZWHh1UU1mOU1pNG9XZTM0c0tGY0p6OENxUXNTNGwxWk5CbDVJRmFJYkJL?=
 =?utf-8?B?cURlNHppd3ZrYjl6UVhUYzdnQmRaTk5mcFptVlNmTGRYRkZ2Y05HQm1kVkNs?=
 =?utf-8?B?akJTdFB3cTBCZ3NTU3h5dGlId25IUC9WT2pQMnA2UWhhZXY0aFdwL0xpUHU5?=
 =?utf-8?B?TWNCU2lNalV0SVVzMmpaSk9IbG8wOUFUa1J1UkVkRjRiWDNkS3ZBMnRBcGNk?=
 =?utf-8?B?b21YMWFnZUhQMHhrWWxlYVlIQ2J3Zyt5VG81d3JGVmVLSVZ3NVlGOWRsT3Nz?=
 =?utf-8?B?cW5zcGlFellmK0lYWkFra29uVFRMOXpUelhtKzJqeVVlaFpHcjExcnVyMjRt?=
 =?utf-8?B?cmYxWU4rNmExTGg3RTI5NXZ0WVFUcjNZcnJVVXBKck41TG1oSTZqdG9sbVJk?=
 =?utf-8?B?Y3lrajJZeWxhR2pHOVQ2bSt4NzFQL0xzTU5RWnhPQS94dkFIU3BsVUd5L1ph?=
 =?utf-8?B?dFRnSFRFeVBKMGVKVUNpUVpuQ1ZhMVh0UU5IdVRMQ1BxYlU5alo1K052RmFW?=
 =?utf-8?B?QmNqV29qNTRaTDdSQmxhUzlQZlpCdWxLL2ZYY3ZUZ3VDMVREQVhPN0Mzc2VE?=
 =?utf-8?B?OHM4b3FsU0Q3RXFseEFkYmdnQkUzbnlxRE9xNlBDVFo0TUpsL0lpZE9JNkph?=
 =?utf-8?Q?mfTMj+u7gLcWkj4w=3D?=
X-OriginatorOrg: citrix.com
X-MS-Exchange-CrossTenant-Network-Message-Id: 1f7a3d8b-3c90-4e7c-b884-08de90938150
X-MS-Exchange-CrossTenant-AuthSource: CH8PR03MB8274.namprd03.prod.outlook.com
X-MS-Exchange-CrossTenant-AuthAs: Internal
X-MS-Exchange-CrossTenant-OriginalArrivalTime: 02 Apr 2026 08:40:33.8829
 (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: REngbXTmkn/KeaTi85VDkWhfGhAIZu2la1L1RE6kWolycYgywV6n1NypN3ST18oRCTHU4Y7ApDESnClKSFbHeA5B22IF3IjXjEQ2Ic3TQjc=
X-MS-Exchange-Transport-CrossTenantHeadersStamped: DS3PR03MB989216
X-purgate-ID: tlsNG-4011c0/1775119236-BD1580B1-CFD10952/0/0
X-purgate-type: clean
X-purgate-size: 2803

On 4/2/26 7:09 AM, Jan Beulich wrote:
> On 01.04.2026 18:35, Ross Lagerwall wrote:
>> Hi,
>>
>> This series implements lockless SMP function call and then rewrites x86 TLB
>> flushing to use SMP function calls.
>>
>> We have observed that the TLB flush lock can be a point of contention for
>> certain workloads, e.g. migrating 10 VMs off a host during a host evacuation.
>>
>> Performance numbers:
>>
>> I wrote a synthetic benchmark to measure the performance. The benchmark has one
>> or more CPUs in Xen calling on_selected_cpus() with between 1 and 64 CPUs in
>> the selected mask. The executed function simply delays for 500 microseconds.
>>
>> The table below shows the % change in execution time of on_selected_cpus():
>>
>>                    1 thread   2 threads    4 threads
>> 1 CPU in mask     0.02       -35.23       -51.18
>> 2 CPUs in mask    0.01       -47.20       -69.27
>> 4 CPUs in mask    -0.02      -42.40       -66.55
>> 8 CPUs in mask    -0.03      -47.82       -68.39
>> 16 CPUs in mask   0.12       -41.95       -58.26
>> 32 CPUs in mask   0.02       -25.43       -39.35
>> 64 CPUs in mask   0.00       -24.70       -37.83
>>
>> With 1 thread (i.e. no contention), there is no regression in execution time.
>> With multiple threads, as expected there is a significant improvement in
>> execution time.
>>
>> As a more practical benchmark to simulate host evacuation, I measured the
>> memory dirtying rate across 10 VMs after enabling log dirty (on an AMD system,
>> so without PML). The rate increased by 16% with this patch series, even
>> after the recent deferred TLB flush changes.
> 
> Is this a positive thing though? In the context of some related work something
> similar was mentioned iirc, accompanied by stating that this is actually
> problematic. A guest in log-dirty mode generally wants to be making progress,
> but also wants to be throttled enough to limit re-dirtying, such that
> subsequent iterations (in particular the final one) of page contents
> migration won't have to process overly many pages a 2nd time.
> 

In the context of a real migration, both the process copying the pages
out of the guest and the guest itself will be hitting the TLB flush lock
so reducing that bottleneck may increase throughput on both sides.
Whether or not the overall migration time increases or decreases depends
on many factors (number of migrations in parallel, the rate the guest is
dirtying memory, the line speed of the NIC, whether PML is used, ...)
which is why I measured a more controlled scenario to demonstrate the
change.

IMO throttling of a guest during a migration should be something
intentional and controlled by userspace policy rather than a side effect
of some internal global locks.

Ross


From xen-devel-bounces@lists.xenproject.org Thu Apr 02 08:48:00 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 02 Apr 2026 08:48:00 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1271323.1559532 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1w8DiW-0000y7-MV; Thu, 02 Apr 2026 08:47:56 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1271323.1559532; Thu, 02 Apr 2026 08: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 1w8DiW-0000y0-JC; Thu, 02 Apr 2026 08:47:56 +0000
Received: by outflank-mailman (input) for mailman id 1271323;
 Thu, 02 Apr 2026 08:47:55 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <jbeulich@suse.com>) id 1w8DiV-0000xu-Hu
 for xen-devel@lists.xenproject.org; Thu, 02 Apr 2026 08:47:55 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1w8DiU-007MfG-SW
 for xen-devel@lists.xenproject.org; Thu, 02 Apr 2026 10:47:54 +0200
Received: from [10.42.69.5] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <jbeulich@suse.com>)
 id 69ce2d2c-bab6-0a2a0a5309dd-0a2a45058858-34
 for <xen-devel@lists.xenproject.org>; Thu, 02 Apr 2026 10:47:54 +0200
Received: from [209.85.128.44] (helo=mail-wm1-f44.google.com)
 by tlsNG-c201ff.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.0)
 (envelope-from <jbeulich@suse.com>)
 id 69ce2d3a-3760-0a2a45050019-d155802ca8c1-3
 for <xen-devel@lists.xenproject.org>; Thu, 02 Apr 2026 10:47:54 +0200
Received: by mail-wm1-f44.google.com with SMTP id
 5b1f17b1804b1-482f454be5bso18173545e9.0
 for <xen-devel@lists.xenproject.org>; Thu, 02 Apr 2026 01:47:54 -0700 (PDT)
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-4887eb5aff3sm248494055e9.15.2026.04.02.01.47.53
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Thu, 02 Apr 2026 01:47:53 -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=google header.d=suse.com header.i="@suse.com" header.h="Content-Transfer-Encoding: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=1775119674; x=1775724474; darn=lists.xenproject.org;
        h=content-transfer-encoding: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;
        bh=+/dIpSUX6m9AHy1yu7JbuA+PtyXNUucVXR5mC8rj3HI=;
        b=JhfeVGDSgVz3cpPBJV8zYTqfBG6reeVoEghPU84RUHqR4PzswF1bU5ffoG92QB/kGR
         Brk01gVjJuDJMy5YDSQ9gc0Mb2aagWR96+5aAxtcNk0Uk3sCAf0uNBaUOEFozps4ARLV
         fdqBeZDnkrSGOdwkXHHcFe1L+ioH76/Mus9W39hVkSxX9CvT0KHD4pCWhHc9wuCSgyyE
         FJN9KhYWPtIzqeSl1+RG+lE84ItM68i9CCkP50+Q46OKDFJeCk01w2X8Q3VFLRsT7eni
         NPP+/NDwidtRmYqUjTFvCafoTlQRexB1n0P8QAARSB/rgrqr9CIb/5CWKt3kQXeI6UPZ
         Dw1A==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20251104; t=1775119674; x=1775724474;
        h=content-transfer-encoding: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;
        bh=+/dIpSUX6m9AHy1yu7JbuA+PtyXNUucVXR5mC8rj3HI=;
        b=TQoaUG+M+JPZ4xSXb7Ic15HeTD8V9BYoNOw/wQ5PKr98K3jUrKl7P5fdFXxRWlpdci
         2Iw1TUduUwVVoxGXzeDBKcwm67PrUoeCSF6GsNDiztgOxKJ2ROfbLAKi/mfPV71kJWt0
         pIGsxgfoktjibUclA7aP7+JNnK4mzWv611DuwrOjkRfSSKU2MPByOfWdbxUlCv6So37z
         kXwhD3XqT3brfzL7fnbiu+pFeV7L9o4MRBMz1YGOrfH5K71QaV+wHSK0dqMSnB9TxvzT
         hUatLyPvZ+lEr1XqUxuE82Zq+d7q5arFETUOlcr1dtRTqJAtxucYZqvkxsqE5Q1wOwyQ
         Obow==
X-Gm-Message-State: AOJu0YzL3s6o1v6UhLwEYrN3BJ38TLnLj++laSxfPyBXzsASsLAgIdvR
	ZqW+YQRY0UbIioIwA1Lrvil0/GjLVsf5KL3D4nP8AJs8lAKRF4B+h7JZXorQXYSnsg==
X-Gm-Gg: ATEYQzwEL7/q4yrzgVFQTjxYROHdX+fCPpEiIqQb9IwadrjPnswMnisbQ9bbOP1x1Yn
	nm4+FCmbqAbm096JnPByO1njL6mdQQKL5lXZMKxC4d/4d6S65vQNbHut9YdgzFlhvs9yVzFy/qb
	RwwzKxcqAz9oSauWo6XLpXaREp4FH4l8EfOFaU+hGrHZ+HrPb0k57FMkOVilFsmRbruVfGev+Cw
	CLWI7f+88aEvxf93s+3U00xYDcqHIcZNGRYtmoAzUtkqh/+3XyTzPX7xaOXVOWVA2NDQH++QTIO
	rzzdfi83KjALrsfPn6Lq6i9wJ4HXbJlJFdu5PlRx43T93KJZQw1+n/eMVZjhGL9ipNOyqCwt/20
	INZ63V19eQ5QPD+ZKJ4vU9ODpKnG7WtTCot87uGh/Vu0Z4yDjFt7YqkT8LgDvC6SSjKQ9WBER3F
	13cCXEeuAkVxV2LXb/d1EzxIOEXjkg29/Ma00dQWuPnryPTduZ9CJkRodt+WOOKcR6MsPg7/fHn
	UTrWYPkY6gaqcw=
X-Received: by 2002:a05:600c:3b0a:b0:486:f893:56c6 with SMTP id 5b1f17b1804b1-4888e09ba82mr21701295e9.10.1775119674150;
        Thu, 02 Apr 2026 01:47:54 -0700 (PDT)
Message-ID: <97bfb299-a465-48a3-a036-f217de683c2c@suse.com>
Date: Thu, 2 Apr 2026 10:47:53 +0200
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: IOMMU faults after S3
From: Jan Beulich <jbeulich@suse.com>
To: =?UTF-8?Q?Marek_Marczykowski-G=C3=B3recki?=
 <marmarek@invisiblethingslab.com>
Cc: xen-devel <xen-devel@lists.xenproject.org>
References: <acZZmGXIJlmN3KGm@mail-itl>
 <e8bbaae2-5cff-4549-9f27-fbbda7346f60@suse.com>
 <090b8b8f-141b-4a24-92eb-879c0a0c73e1@suse.com> <ac2nibFfvGm_7elv@mail-itl>
 <933a3e95-33d2-4e20-a4d5-2d8b20c2da7f@suse.com> <ac4kCq87SQSc6ddV@mail-itl>
 <aa6910f1-365a-4534-b229-9730b3aede02@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: <aa6910f1-365a-4534-b229-9730b3aede02@suse.com>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
X-purgate-ID: tlsNG-c201ff/1775119674-3153B96F-47482C8D/0/0
X-purgate-type: clean
X-purgate-size: 925

On 02.04.2026 10:39, Jan Beulich wrote:
> On 02.04.2026 10:08, Marek Marczykowski-Górecki wrote:
>> The xl dmesg output (from MTL this time):
>>
>>     (XEN) [  123.477511] Entering ACPI S3 state.
>>     (XEN) [18446743903.571842] _disable_pit_irq:2649: using_pit: 0, cpu_has_apic: 1
>>     (XEN) [18446743903.571856] _disable_pit_irq:2659: cpuidle_using_deep_cstate: 1, boot_cpu_has(X86_FEATURE_XEN_ARAT): 0
> 
> XEN_ARAT being off is the one odd aspect here. That'll want tracking down
> separately. As per xen-cpuid output (below) ARAT is available.

For this you may want to also add logging to intel_init_arat(): Since opt_arat
can be false only due to command line option use, it can only be the function
not being called (which looks impossible on plain staging code), or cpu_has_arat
being false despite the xen-cpuid output that you supplied earlier (inexplicable
as well, at least for now).

Jan


From xen-devel-bounces@lists.xenproject.org Thu Apr 02 08:49:56 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 02 Apr 2026 08:49:56 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1271334.1559542 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1w8DkR-0001Us-1b; Thu, 02 Apr 2026 08:49:55 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1271334.1559542; Thu, 02 Apr 2026 08:49: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 1w8DkQ-0001Ul-U9; Thu, 02 Apr 2026 08:49:54 +0000
Received: by outflank-mailman (input) for mailman id 1271334;
 Thu, 02 Apr 2026 08:49:53 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <jbeulich@suse.com>) id 1w8DkP-0001Ud-5Y
 for xen-devel@lists.xenproject.org; Thu, 02 Apr 2026 08:49:53 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1w8DkO-001Ewa-7E
 for xen-devel@lists.xenproject.org; Thu, 02 Apr 2026 10:49:52 +0200
Received: from [10.42.69.8] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <jbeulich@suse.com>)
 id 69ce2daa-e002-0a2a0a5209dd-0a2a45089892-34
 for <xen-devel@lists.xenproject.org>; Thu, 02 Apr 2026 10:49:52 +0200
Received: from [209.85.221.49] (helo=mail-wr1-f49.google.com)
 by tlsNG-c1860d.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.0)
 (envelope-from <jbeulich@suse.com>)
 id 69ce2daf-fab6-0a2a45080019-d155dd31d47f-3
 for <xen-devel@lists.xenproject.org>; Thu, 02 Apr 2026 10:49:52 +0200
Received: by mail-wr1-f49.google.com with SMTP id
 ffacd0b85a97d-43cfbd17589so510493f8f.0
 for <xen-devel@lists.xenproject.org>; Thu, 02 Apr 2026 01:49:52 -0700 (PDT)
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-43d1e4e221bsm5930563f8f.29.2026.04.02.01.49.50
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Thu, 02 Apr 2026 01:49:51 -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=google header.d=suse.com header.i="@suse.com" header.h="Content-Transfer-Encoding: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=1775119791; x=1775724591; darn=lists.xenproject.org;
        h=content-transfer-encoding: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;
        bh=PJvtI6OmRB2GyErsUGjwbuj7RD4YiReTnFi8H3i0LD0=;
        b=QLKZ6OXnwtN0iUirZBsRxQ7m/fbgB96l8z0b/VpBpux4Cxealn4qjy1qwhMq0JJhzH
         thTtURpYE92i3RHdhGCxTDGZ9/OAmPrd3pVrVQYhGK+wNbMZBWX+6wNWjNUI1ESKzfiN
         WD13KVA6VlrI+aifwBj0vxexV5IFoievod/eNL0SHccGV8jIeUR/k/uVKtTu5mb+3l3g
         ef0SgwXm3tjvdYxH5t4lvnf9P9/Z6NhH8gceBdGKmMBhmtyTuewxckk48QmYqavukBTw
         Xcpwa8naWyuUVBeUFCZQZDVbr11LwvMY7wuyU+nawDTlZfmOWCXP79ELx45OoSIT0/Gg
         O13Q==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20251104; t=1775119791; x=1775724591;
        h=content-transfer-encoding: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;
        bh=PJvtI6OmRB2GyErsUGjwbuj7RD4YiReTnFi8H3i0LD0=;
        b=Xs86FW1XhxsuixQXO8tpd002T0jx6GN+a7bv4nVbdk0bF5vAAXQvP6ECh8uGWKu8u7
         3ldEFbhjOT1H2R+LzYn9islGMQ9YjLSPXZfxUS56Ra2tleGQKm5089LYYUVDc+FkpYcB
         I3IbPKWtAdq+gpOteAZKBpvZDYFavoLEtrc77sdJ/tTGZqqCzLUPvAug/EEte029Mp1g
         gW0RpPZm3xVG9yUnvT/RDRrgZFjXEotCPvmgRhoREqidz8jcKMFAA+g0GYnLyQ71VJVy
         Z1f0NAjngv5HwgHCMZy5oJRHz8f8I1+VqUvfXBCDWTtiQqnluvc+FsMZMhTV9Y6IWXzH
         +nkg==
X-Forwarded-Encrypted: i=1; AJvYcCXF9QCnTTMg2tcCSl1OLunR9ULXFCS0Jeu0UvXkvq54gKJ2Ev73KLg5nSTw+KO7YoJhbNQZ4uXohks=@lists.xenproject.org
X-Gm-Message-State: AOJu0YzNnDNkCruwBDPs9Vy1CWDYV8EL9vqShfvdnT7MrdOzfXwW28S/
	5HAAS44sKyj4YIVXzL4ymnf9OXvd/aB1McnKInje7Gvx3FeK/RnOW+Z/U74Q7hdzbw==
X-Gm-Gg: ATEYQzwWKu77kMpcj/IvZMcjFy2rS/If4QuygWADKCYkyvRNtE7Z2OjSksh2eXg8+r1
	H1xtnpBlprtKolQjpt3A/7WSJoaeBAw0TgcJLfcBd+XVrW1zQvybPlS/PQ5q5oBaZsKk+DWYPuu
	5MxWN8Ie1sLT89DlqzNDutCZrOlFnlchJ8EMiwl3CR+h+8fLU75ty5Fy6BC38VOKhwQ2hXUYehV
	tc7eyL8PkypwS2rg5WDkPB0oyuS0p9BGK7s1Ia0tH0f20hhMlRUzUgESDxEaXzmlXg6l96XUvzR
	tUrnbNr2xtvi0JC0itODmn91L1IJJOKD1g8q7yi5r/kgWkphzPgsXRisI0kC001m76bVLyRSZ1A
	7GduDT1q8Zsul29uv4YbN1wlmfiqrPvOH8Xm7WP49XVwKsojyAehcgslzlZ8YWg4hvqJPz/RY4a
	Uq4kgwSPrID/KAT54hraTf9e+ySozK+d7oXiPVwZCZiO5tO2/1lw7jPN8DE+g/SErzKPIoCA1+V
	UlrGiRYtThDke8=
X-Received: by 2002:a05:6000:230c:b0:43b:4273:a6ce with SMTP id ffacd0b85a97d-43d1504d2b4mr12438444f8f.3.1775119791495;
        Thu, 02 Apr 2026 01:49:51 -0700 (PDT)
Message-ID: <b0f721a9-42ba-4e71-8250-83fcfcec2313@suse.com>
Date: Thu, 2 Apr 2026 10:49:50 +0200
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH v1 0/3] Lockless SMP function call and TLB flushing
To: Ross Lagerwall <ross.lagerwall@citrix.com>
Cc: Andrew Cooper <andrew.cooper3@citrix.com>,
 =?UTF-8?Q?Roger_Pau_Monn=C3=A9?= <roger.pau@citrix.com>,
 Anthony PERARD <anthony.perard@vates.tech>,
 Michal Orzel <michal.orzel@amd.com>, Julien Grall <julien@xen.org>,
 Stefano Stabellini <sstabellini@kernel.org>, xen-devel@lists.xenproject.org
References: <20260401163521.3603665-1-ross.lagerwall@citrix.com>
 <94b2e444-844a-4d34-9c9f-de0b9e6e23b1@suse.com>
 <17c4e7b4-297a-4bf9-9160-659723d15e48@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: <17c4e7b4-297a-4bf9-9160-659723d15e48@citrix.com>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 7bit
X-purgate-ID: tlsNG-c1860d/1775119792-94962497-DF860817/0/0
X-purgate-type: clean
X-purgate-size: 2881

On 02.04.2026 10:40, Ross Lagerwall wrote:
> On 4/2/26 7:09 AM, Jan Beulich wrote:
>> On 01.04.2026 18:35, Ross Lagerwall wrote:
>>> We have observed that the TLB flush lock can be a point of contention for
>>> certain workloads, e.g. migrating 10 VMs off a host during a host evacuation.
>>>
>>> Performance numbers:
>>>
>>> I wrote a synthetic benchmark to measure the performance. The benchmark has one
>>> or more CPUs in Xen calling on_selected_cpus() with between 1 and 64 CPUs in
>>> the selected mask. The executed function simply delays for 500 microseconds.
>>>
>>> The table below shows the % change in execution time of on_selected_cpus():
>>>
>>>                    1 thread   2 threads    4 threads
>>> 1 CPU in mask     0.02       -35.23       -51.18
>>> 2 CPUs in mask    0.01       -47.20       -69.27
>>> 4 CPUs in mask    -0.02      -42.40       -66.55
>>> 8 CPUs in mask    -0.03      -47.82       -68.39
>>> 16 CPUs in mask   0.12       -41.95       -58.26
>>> 32 CPUs in mask   0.02       -25.43       -39.35
>>> 64 CPUs in mask   0.00       -24.70       -37.83
>>>
>>> With 1 thread (i.e. no contention), there is no regression in execution time.
>>> With multiple threads, as expected there is a significant improvement in
>>> execution time.
>>>
>>> As a more practical benchmark to simulate host evacuation, I measured the
>>> memory dirtying rate across 10 VMs after enabling log dirty (on an AMD system,
>>> so without PML). The rate increased by 16% with this patch series, even
>>> after the recent deferred TLB flush changes.
>>
>> Is this a positive thing though? In the context of some related work something
>> similar was mentioned iirc, accompanied by stating that this is actually
>> problematic. A guest in log-dirty mode generally wants to be making progress,
>> but also wants to be throttled enough to limit re-dirtying, such that
>> subsequent iterations (in particular the final one) of page contents
>> migration won't have to process overly many pages a 2nd time.
> 
> In the context of a real migration, both the process copying the pages
> out of the guest and the guest itself will be hitting the TLB flush lock
> so reducing that bottleneck may increase throughput on both sides.
> Whether or not the overall migration time increases or decreases depends
> on many factors (number of migrations in parallel, the rate the guest is
> dirtying memory, the line speed of the NIC, whether PML is used, ...)
> which is why I measured a more controlled scenario to demonstrate the
> change.
> 
> IMO throttling of a guest during a migration should be something
> intentional and controlled by userspace policy rather than a side effect
> of some internal global locks.

I definitely agree here, but side effects going away may make it necessary to
add such explicit throttling.

Jan


From xen-devel-bounces@lists.xenproject.org Thu Apr 02 08:50:34 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 02 Apr 2026 08:50:34 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1271342.1559550 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1w8Dl4-0002tz-8b; Thu, 02 Apr 2026 08:50:34 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1271342.1559550; Thu, 02 Apr 2026 08:50: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 1w8Dl4-0002ts-5h; Thu, 02 Apr 2026 08:50:34 +0000
Received: by outflank-mailman (input) for mailman id 1271342;
 Thu, 02 Apr 2026 08:50:33 +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 1w8Dl3-0002tk-2G
 for xen-devel@lists.xenproject.org; Thu, 02 Apr 2026 08:50:33 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1w8Dl2-00EHPy-En
 for xen-devel@lists.xenproject.org; Thu, 02 Apr 2026 10:50:32 +0200
Received: from [10.42.69.4] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <jgross@suse.com>)
 id 69ce2dd6-2eae-0a2a0a5409dd-0a2a45049604-16
 for <xen-devel@lists.xenproject.org>; Thu, 02 Apr 2026 10:50:32 +0200
Received: from [209.85.128.47] (helo=mail-wm1-f47.google.com)
 by tlsNG-ebf023.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.0)
 (envelope-from <jgross@suse.com>)
 id 69ce2dd8-bb33-0a2a45040019-d155802fb871-3
 for <xen-devel@lists.xenproject.org>; Thu, 02 Apr 2026 10:50:32 +0200
Received: by mail-wm1-f47.google.com with SMTP id
 5b1f17b1804b1-48891776099so4145135e9.2
 for <xen-devel@lists.xenproject.org>; Thu, 02 Apr 2026 01:50:32 -0700 (PDT)
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-4887c561750sm219982525e9.2.2026.04.02.01.50.30
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Thu, 02 Apr 2026 01:50:31 -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=google header.d=suse.com header.i="@suse.com" header.h="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=1775119832; x=1775724632; darn=lists.xenproject.org;
        h=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;
        bh=o2yvOWrzEPkN6v0fiFG4bJlHSqGiLfB0SLq8KCjR6iE=;
        b=R2dzCImDiGhWGtIuZoDyh6C3ePB4eA47xy8VCQ//iCwqR9e1a6QEa2BgEV6vD+ellU
         t1bJ5zVReqiyHtEEoVgZl6GNMFKCr9sF3sOSD/HV9svjFw1ALdKmPZBj8G0gjGyJ4ezw
         VEllmwzl9YNMeBNis+26+4RXGLfOkNkGKCOW5SSAwZ3cexRBE4ml0UpDCwwGRE3335bN
         ODGoJee7+9hDUu2VJYBXbae058l73dCl/gWP9pT4vVHpTCkW1U9kXHk7MRHYrr3Pdazp
         gdOFpgQpQNPGqXgJMyWFLvIKiD6mbXukQqpiFtrWE32/alN565oarVFjCmFZbS1q5+20
         roXw==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20251104; t=1775119832; x=1775724632;
        h=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;
        bh=o2yvOWrzEPkN6v0fiFG4bJlHSqGiLfB0SLq8KCjR6iE=;
        b=arMOrTEuvDTLdVnCdVqfExt7gEPGsjAC6XKtCO8ZcVYYLW77ts1tX9RkTr2/qIWz2X
         vKRYVU5c7Oy9szkVts8bMbu9qqCM3DUevQkCSe1L9PaWem9sQJf5YF8ti7+v75h2/hFN
         PrkvWveiiNlLK61N3yT7W0nT/x24CO4N9y+vLXq0/X4EtGuY1nOrfTMxqqJf54YwH7EN
         xvc5YAbCXqEozQx23cPZep+RKRXvIifwR42wZymN1DIrEZ8BVWzNVqyrTEb6BIaGrCld
         DLjU1pNlar6PWalZK5YfV+zvhSEeFY46OXuQPlz8J5r2F+q/LfhQVTuLf9i3Ah8Nru4P
         Hwgw==
X-Gm-Message-State: AOJu0Yy2Dh8wrC2ntPFmCJzoaYToH1oyMpL2GX677M9MyEKaqPVzxLE/
	9uLz4wffuOlF27QQuzNAOA7HG/LUZ7EBWSGI29DCrZcpAMAeXp7lP3T1NW5NUEoCNbMjuFmPNGG
	mB9DKPI8=
X-Gm-Gg: ATEYQzy6tqrtqhg3Mv3mkCy//skQkFfnNuqaXIUddyV4NjmLc/y3d8pPHsoUtdIT8pE
	idDvClKU4PzaeSyTNG9ubRm3NhAYKY1zrlUVYomvGV+hzsERPasy/svMa0yqpkonrS0mmLN9Z/j
	EiSrtfs44bQi8GKyx9f98+s/TSGrNHDU/BGtPU47upvut9oNUgtbqhzEsZ0Dlm2O5Of8dchcS/1
	TChOdF6YMoCQzlx8g0uJEyG76Mp4TbjWEpaho8mT9cJn52ShEQX4/F/qwcZUmOE8VhhQc5YbdOG
	0cIZJcZtUpwAJF7062IPdJqEO5OGfo8aPnf2yR5maqyjutQZbCmGbfkD4al0XUYTP1dgnzgwpmg
	9iZytAE7bAYC8EKC5dmZaagKKiIR2+1cxx+VrWpzgideHDBbNOpD/gmfAwAohnbLNzNQGaBX6c8
	T5d4stRZfPyvKRSe3x1gS8WdytCHELtq4OHNV8eZqe6OXHRvvjizzb0022vyNCu2WJsjZAgK4JH
	G/iQprr7cG7qFUeuRNuyVTLCxbmq6FKGZh8YGgL5x+RG0yZ27mPpg==
X-Received: by 2002:a05:600c:3f0c:b0:485:40a4:364 with SMTP id 5b1f17b1804b1-4888b79fc1dmr42179835e9.26.1775119831540;
        Thu, 02 Apr 2026 01:50:31 -0700 (PDT)
Message-ID: <65173416-63b1-4721-beec-198673e7d234@suse.com>
Date: Thu, 2 Apr 2026 10:50:30 +0200
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: Slow (higher scheduling latency?) system after S3 - regression
 4.17 -> 4.19 ?
To: Jan Beulich <jbeulich@suse.com>,
 =?UTF-8?Q?Marek_Marczykowski-G=C3=B3recki?= <marmarek@invisiblethingslab.com>
Cc: xen-devel <xen-devel@lists.xenproject.org>
References: <aPzBO_eW8mQHM66u@mail-itl> <acQzzlXNDxNq885V@mail-itl>
 <29775afa-e17b-4c44-a2a8-4ef4bc7cdf0f@suse.com> <acUqOL232lp-Lw1v@mail-itl>
 <cbed767b-4ac4-4989-8778-43ff321ae977@suse.com> <acVWX8vkhZiFfonP@mail-itl>
 <88c65ec7-b7f7-4d8b-a453-d707440b43cb@suse.com> <acZ8ez4dmQay1JSw@mail-itl>
 <5310a923-ab2c-478f-9854-7542a7940778@suse.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: <5310a923-ab2c-478f-9854-7542a7940778@suse.com>
Content-Type: multipart/signed; micalg=pgp-sha256;
 protocol="application/pgp-signature";
 boundary="------------imUU5YsKuph0YghZe5yj5YrN"
X-purgate-ID: tlsNG-ebf023/1775119832-B052B51B-5BAC7417/0/0
X-purgate-type: clean
X-purgate-size: 22106

This is an OpenPGP/MIME signed message (RFC 4880 and 3156)
--------------imUU5YsKuph0YghZe5yj5YrN
Content-Type: multipart/mixed; boundary="------------5RFojAeVNZF4t0PvMZL8y6Wd";
 protected-headers="v1"
From: =?UTF-8?B?SsO8cmdlbiBHcm/Dnw==?= <jgross@suse.com>
To: Jan Beulich <jbeulich@suse.com>,
 =?UTF-8?Q?Marek_Marczykowski-G=C3=B3recki?= <marmarek@invisiblethingslab.com>
Cc: xen-devel <xen-devel@lists.xenproject.org>
Message-ID: <65173416-63b1-4721-beec-198673e7d234@suse.com>
Subject: Re: Slow (higher scheduling latency?) system after S3 - regression
 4.17 -> 4.19 ?
References: <aPzBO_eW8mQHM66u@mail-itl> <acQzzlXNDxNq885V@mail-itl>
 <29775afa-e17b-4c44-a2a8-4ef4bc7cdf0f@suse.com> <acUqOL232lp-Lw1v@mail-itl>
 <cbed767b-4ac4-4989-8778-43ff321ae977@suse.com> <acVWX8vkhZiFfonP@mail-itl>
 <88c65ec7-b7f7-4d8b-a453-d707440b43cb@suse.com> <acZ8ez4dmQay1JSw@mail-itl>
 <5310a923-ab2c-478f-9854-7542a7940778@suse.com>
In-Reply-To: <5310a923-ab2c-478f-9854-7542a7940778@suse.com>
Autocrypt-Gossip: 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
 Y2ggPGpiZXVsaWNoQHN1c2UuY29tPsJ3BBMRAgAgBQJZN5xEAhsDBgsJCAcDAgQVAggDBBYC
 AwECHgECF4AAIQkQoDSui/t3IH4WIQQ+pJkfkcoLMCa4X6CgNK6L+3cgfgn7AJ9DmMd0SMJE
 ePbc7/m22D2v04iu7ACffXTdZQhNl557tJuDXZSBxDmW/tLOwU0EWTecRBAIAIK5OMKMU5R2
 Lk2bbjgX7vyQuCFFyKf9rC/4itNwhYWFSlKzVj3WJBDsoi2KvPm7AI+XB6NIkNAkshL5C0kd
 pcNd5Xo0jRR5/WE/bT7LyrJ0OJWS/qUit5eNNvsO+SxGAk28KRa1ieVLeZi9D03NL0+HIAtZ
 tecfqwgl3Y72UpLUyt+r7LQhcI/XR5IUUaD4C/chB4Vq2QkDKO7Q8+2HJOrFIjiVli4lU+Sf
 OBp64m//Y1xys++Z4ODoKh7tkh5DxiO3QBHG7bHK0CSQsJ6XUvPVYubAuy1XfSDzSeSBl//C
 v78Fclb+gi9GWidSTG/4hsEzd1fY5XwCZG/XJJY9M/sAAwUH/09Ar9W2U1Qm+DwZeP2ii3Ou
 14Z9VlVVPhcEmR/AFykL9dw/OV2O/7cdi52+l00reUu6Nd4Dl8s4f5n8b1YFzmkVVIyhwjvU
 jxtPyUgDOt6DRa+RaDlXZZmxQyWcMv2anAgYWGVszeB8Myzsw8y7xhBEVV1S+1KloCzw4V8Z
 DSJrcsZlyMDoiTb7FyqxwQnM0f6qHxWbmOOnbzJmBqpNpFuDcz/4xNsymJylm6oXiucHQBAP
 Xb/cE1YNHpuaH4SRhIxwQilCYEznWowQphNAbJtEKOmcocY7EbSt8VjXTzmYENkIfkrHRyXQ
 dUm5AoL51XZljkCqNwrADGkTvkwsWSvCSQQYEQIACQUCWTecRAIbDAAKCRCgNK6L+3cgfuef
 AJ9wlZQNQUp0KwEf8Tl37RmcxCL4bQCcC5alCSMzUBJ5DBIcR4BY+CyQFAs=

--------------5RFojAeVNZF4t0PvMZL8y6Wd
Content-Type: multipart/mixed; boundary="------------w4lFI0WQ1qH7KVcEkuI9evJP"

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

T24gMDIuMDQuMjYgMTA6MjMsIEphbiBCZXVsaWNoIHdyb3RlOg0KPiBPbiAyNy4wMy4yMDI2
IDEzOjQ3LCBNYXJlayBNYXJjenlrb3dza2ktR8OzcmVja2kgd3JvdGU6DQo+PiBTb21lIGZ1
cnRoZXIgb2JzZXJ2YXRpb24sIHRoaXMgdGltZSByZWdhcmRpbmcgdGltZXJzOg0KPj4NCj4+
IEp1c3QgYmVmb3JlIFMzOg0KPj4NCj4+ICAgICAgKFhFTikgWyAgMTUwLjI2NDc1N10gRHVt
cGluZyB0aW1lciBxdWV1ZXM6DQo+PiAgICAgIChYRU4pIFsgIDE1MC4yNjUxODFdIENQVTAw
Og0KPj4gICAgICAoWEVOKSBbICAxNTAuMjY1NDk3XSAgIGV4PSAgICAgICAgIDczNnVzIHRp
bWVyPWZmZmY4MmQwNDA2NDM1NDAgY2I9ZHJpdmVycy9jaGFyL3hoY2ktZGJjLmMjZGJjX3Vh
cnRfcG9sbChmZmZmODJkMDQwNGU1ZTc4KQ0KPj4gICAgICAoWEVOKSBbICAxNTAuMjY2NTkw
XSAgIGV4PSAgICAgIDQ2MDM3N3VzIHRpbWVyPWZmZmY4MmQwNDA2NWQyYzAgY2I9YXJjaC94
ODYvdGltZS5jI3RpbWVfY2FsaWJyYXRpb24oMDAwMDAwMDAwMDAwMDAwMCkNCj4+ICAgICAg
KFhFTikgWyAgMTUwLjI2NzYzNl0gICBleD0gICAgIDEzNzc0NjB1cyB0aW1lcj1mZmZmODJk
MDQwNjVkMjIwIGNiPWFyY2gveDg2L3RpbWUuYyNwbHRfb3ZlcmZsb3coMDAwMDAwMDAwMDAw
MDAwMCkNCj4+ICAgICAgKFhFTikgWyAgMTUwLjI2ODY1MV0gICBleD0gICAgMTM1MjUxMDB1
cyB0aW1lcj1mZmZmODJkMDQwNjQ0YzIwIGNiPWFyY2gveDg2L2NwdS9tY2hlY2svaW50ZWwt
bm9uZmF0YWwuYyNtY2Vfd29ya19mbigwMDAwMDAwMDAwMDAwMDAwKQ0KPj4gICAgICAoWEVO
KSBbICAxNTAuMjY5ODIwXSBDUFUwMjoNCj4+ICAgICAgKFhFTikgWyAgMTUwLjI3MDEyNl0g
ICBleD0gICAgICA2MTY2NTN1cyB0aW1lcj1mZmZmODMwNDYxOTMxMDcwIGNiPWNvbW1vbi9z
Y2hlZC9jb3JlLmMjdmNwdV9zaW5nbGVzaG90X3RpbWVyX2ZuKGZmZmY4MzA0NjE5MzEwMDAp
DQo+PiAgICAgIChYRU4pIFsgIDE1MC4yNzEyNzZdIENQVTA0Og0KPj4gICAgICAoWEVOKSBb
ICAxNTAuMjcxNTc3XSAgIGV4PSAgICAgIDYzMDU3N3VzIHRpbWVyPWZmZmY4MzA0NjE5MzUw
NzAgY2I9Y29tbW9uL3NjaGVkL2NvcmUuYyN2Y3B1X3NpbmdsZXNob3RfdGltZXJfZm4oZmZm
ZjgzMDQ2MTkzNTAwMCkNCj4+ICAgICAgKFhFTikgWyAgMTUwLjI3MjczNF0gICBleD0gICAg
ICA2MzQ1ODZ1cyB0aW1lcj1mZmZmODMwNDYxOTIxMDcwIGNiPWNvbW1vbi9zY2hlZC9jb3Jl
LmMjdmNwdV9zaW5nbGVzaG90X3RpbWVyX2ZuKGZmZmY4MzA0NjE5MjEwMDApDQo+PiAgICAg
IChYRU4pIFsgIDE1MC4yNzM4ODRdIENQVTA2Og0KPj4gICAgICAoWEVOKSBbICAxNTAuMjc0
MTg0XSAgIGV4PSAgICAgICA0NDQ3NHVzIHRpbWVyPWZmZmY4MzA0NjE5MDUwNzAgY2I9Y29t
bW9uL3NjaGVkL2NvcmUuYyN2Y3B1X3NpbmdsZXNob3RfdGltZXJfZm4oZmZmZjgzMDQ2MTkw
NTAwMCkNCj4+ICAgICAgKFhFTikgWyAgMTUwLjI3NTMzNF0gQ1BVMDg6DQo+PiAgICAgIChY
RU4pIFsgIDE1MC4yNzU2MzNdICAgZXg9ICAgICAgIDExNDY1dXMgdGltZXI9ZmZmZjgzMDQ2
MTkwZDA3MCBjYj1jb21tb24vc2NoZWQvY29yZS5jI3ZjcHVfc2luZ2xlc2hvdF90aW1lcl9m
bihmZmZmODMwNDYxOTBkMDAwKQ0KPj4gICAgICAoWEVOKSBbICAxNTAuMjc2NzgzXSBDUFUw
OToNCj4+ICAgICAgKFhFTikgWyAgMTUwLjI3NzA4M10gICBleD0gICAgICAgMTI0NjV1cyB0
aW1lcj1mZmZmODMwNDYxOTA5MDcwIGNiPWNvbW1vbi9zY2hlZC9jb3JlLmMjdmNwdV9zaW5n
bGVzaG90X3RpbWVyX2ZuKGZmZmY4MzA0NjE5MDkwMDApDQo+PiAgICAgIChYRU4pIFsgIDE1
MC4yNzgyMzZdIENQVTEwOg0KPj4gICAgICAoWEVOKSBbICAxNTAuMjc4NTM2XSAgIGV4PSAg
ICAgICAxNDQ2NHVzIHRpbWVyPWZmZmY4MzA0NjE5MDEwNzAgY2I9Y29tbW9uL3NjaGVkL2Nv
cmUuYyN2Y3B1X3NpbmdsZXNob3RfdGltZXJfZm4oZmZmZjgzMDQ2MTkwMTAwMCkNCj4+ICAg
ICAgKFhFTikgWyAgMTUwLjI3OTY4Nl0gQ1BVMTE6DQo+PiAgICAgIChYRU4pIFsgIDE1MC4y
Nzk5ODZdICAgZXg9ICAgICAgIDE1NDY0dXMgdGltZXI9ZmZmZjgzMDQ2MTkxMTA3MCBjYj1j
b21tb24vc2NoZWQvY29yZS5jI3ZjcHVfc2luZ2xlc2hvdF90aW1lcl9mbihmZmZmODMwNDYx
OTExMDAwKQ0KPj4gICAgICAoWEVOKSBbICAxNTAuMjgxMTM5XSBDUFUxMjoNCj4+ICAgICAg
KFhFTikgWyAgMTUwLjI4MTQzOF0gICBleD0gICAgICAgMTc0NjN1cyB0aW1lcj1mZmZmODMw
NDYxOTE5MDcwIGNiPWNvbW1vbi9zY2hlZC9jb3JlLmMjdmNwdV9zaW5nbGVzaG90X3RpbWVy
X2ZuKGZmZmY4MzA0NjE5MTkwMDApDQo+PiAgICAgIChYRU4pIFsgIDE1MC4yODI1OTJdIENQ
VTEzOg0KPj4gICAgICAoWEVOKSBbICAxNTAuMjgyODkwXSAgIGV4PSAgICAgIDM0NzA5MHVz
IHRpbWVyPWZmZmY4MzA0NjE5NDEwNzAgY2I9Y29tbW9uL3NjaGVkL2NvcmUuYyN2Y3B1X3Np
bmdsZXNob3RfdGltZXJfZm4oZmZmZjgzMDQ2MTk0MTAwMCkNCj4+ICAgICAgKFhFTikgWyAg
MTUwLjI4NDA0MF0gQ1BVMTQ6DQo+PiAgICAgIChYRU4pIFsgIDE1MC4yODQzNDFdICAgZXg9
ICAgICAgIDIwNDYydXMgdGltZXI9ZmZmZjgzMDQ2MTkxZDA3MCBjYj1jb21tb24vc2NoZWQv
Y29yZS5jI3ZjcHVfc2luZ2xlc2hvdF90aW1lcl9mbihmZmZmODMwNDYxOTFkMDAwKQ0KPj4g
ICAgICAoWEVOKSBbICAxNTAuMjg1NDk2XSBDUFUxNToNCj4+ICAgICAgKFhFTikgWyAgMTUw
LjI4NTgwNl0gICBleD0gICAgICAgICA0NzB1cyB0aW1lcj1mZmZmODMwNDYxOTJkMDcwIGNi
PWNvbW1vbi9zY2hlZC9jb3JlLmMjdmNwdV9zaW5nbGVzaG90X3RpbWVyX2ZuKGZmZmY4MzA0
NjE5MmQwMDApDQo+PiAgICAgIChYRU4pIFsgIDE1MC4yODY5NzJdICAgZXg9ICAgICAgIDE1
MzE2dXMgdGltZXI9ZmZmZjgzMDQ2MTljZGFhMCBjYj1kcml2ZXJzL2NwdWZyZXEvY3B1ZnJl
cV9vbmRlbWFuZC5jI2RvX2Ric190aW1lcihmZmZmODMwNDYxOWNkYWUwKQ0KPj4gICAgICAo
WEVOKSBbICAxNTAuMjg4MTU2XSAgIGV4PSAgICAgICAgNjIzMHVzIHRpbWVyPWZmZmY4MzA0
NjE5ZThlZDAgY2I9Y29tbW9uL3NjaGVkL2NvcmUuYyNzX3RpbWVyX2ZuKDAwMDAwMDAwMDAw
MDAwMDApDQo+PiAgICAgIChYRU4pIFsgIDE1MC4yODkxOTJdIENQVTE2Og0KPj4gICAgICAo
WEVOKSBbICAxNTAuMjg5NDkyXSAgIGV4PSAgICAgIDYzMzU5NHVzIHRpbWVyPWZmZmY4MzA0
NjE5MjkwNzAgY2I9Y29tbW9uL3NjaGVkL2NvcmUuYyN2Y3B1X3NpbmdsZXNob3RfdGltZXJf
Zm4oZmZmZjgzMDQ2MTkyOTAwMCkNCj4+ICAgICAgKFhFTikgWyAgMTUwLjI5MDY0Ml0gQ1BV
MTg6DQo+PiAgICAgIChYRU4pIFsgIDE1MC4yOTA5NDJdICAgZXg9ICAgICAgNjE0NjAxdXMg
dGltZXI9ZmZmZjgzMDQ2MTkzOTA3MCBjYj1jb21tb24vc2NoZWQvY29yZS5jI3ZjcHVfc2lu
Z2xlc2hvdF90aW1lcl9mbihmZmZmODMwNDYxOTM5MDAwKQ0KPj4gICAgICAoWEVOKSBbICAx
NTAuMjkyMDk0XSBDUFUyMDoNCj4+ICAgICAgKFhFTikgWyAgMTUwLjI5MjM5NF0gICBleD0g
ICAgICAgMjc0NTl1cyB0aW1lcj1mZmZmODMwNDYxOTE1MDcwIGNiPWNvbW1vbi9zY2hlZC9j
b3JlLmMjdmNwdV9zaW5nbGVzaG90X3RpbWVyX2ZuKGZmZmY4MzA0NjE5MTUwMDApDQo+PiAg
ICAgIChYRU4pIFsgIDE1MC4yOTM1NTNdICAgZXg9ICAgICAgIDU1MzE2dXMgdGltZXI9ZmZm
ZjgzMDQ2MTk3OWFhMCBjYj1kcml2ZXJzL2NwdWZyZXEvY3B1ZnJlcV9vbmRlbWFuZC5jI2Rv
X2Ric190aW1lcihmZmZmODMwNDYxOTc5YWUwKQ0KPj4gICAgICAoWEVOKSBbICAxNTAuMjk0
NzQ0XSAgIGV4PSAgICAgICAzNTQxM3VzIHRpbWVyPWZmZmY4MzA0NjE5OGZkYzAgY2I9Y29t
bW9uL3NjaGVkL2NvcmUuYyNzX3RpbWVyX2ZuKDAwMDAwMDAwMDAwMDAwMDApDQo+PiAgICAg
IChYRU4pIFsgIDE1MC4yOTU3NzZdIENQVTIxOg0KPj4gICAgICAoWEVOKSBbICAxNTAuMjk2
MDc2XSAgIGV4PSAgICAgIDYxNzU4MHVzIHRpbWVyPWZmZmY4MzA0NjE5MjUwNzAgY2I9Y29t
bW9uL3NjaGVkL2NvcmUuYyN2Y3B1X3NpbmdsZXNob3RfdGltZXJfZm4oZmZmZjgzMDQ2MTky
NTAwMCkNCj4+DQo+PiBKdXN0IGFmdGVyIFMzOg0KPj4NCj4+ICAgICAgKFhFTikgWyAgMTY0
LjQ2MjE5OF0gRHVtcGluZyB0aW1lciBxdWV1ZXM6DQo+PiAgICAgIChYRU4pIFsgIDE2NC40
NjI2MzBdIENQVTAwOg0KPj4gICAgICAoWEVOKSBbICAxNjQuNDYyOTQ5XSAgIGV4PSAgICAg
ICAgIDc2OHVzIHRpbWVyPWZmZmY4MmQwNDA2NDM1NDAgY2I9ZHJpdmVycy9jaGFyL3hoY2kt
ZGJjLmMjZGJjX3VhcnRfcG9sbChmZmZmODJkMDQwNGU1ZTc4KQ0KPj4gICAgICAoWEVOKSBb
ICAxNjQuNDY0MDY0XSAgIGV4PSAgICAgMTI4NjUzMnVzIHRpbWVyPWZmZmY4MmQwNDA2NWQy
MjAgY2I9YXJjaC94ODYvdGltZS5jI3BsdF9vdmVyZmxvdygwMDAwMDAwMDAwMDAwMDAwKQ0K
Pj4gICAgICAoWEVOKSBbICAxNjQuNDY1MDk5XSAgIGV4PSAgICAgIDM5NTk5N3VzIHRpbWVy
PWZmZmY4MzA0NjE5MjEwNzAgY2I9Y29tbW9uL3NjaGVkL2NvcmUuYyN2Y3B1X3NpbmdsZXNo
b3RfdGltZXJfZm4oZmZmZjgzMDQ2MTkyMTAwMCkNCj4+ICAgICAgKFhFTikgWyAgMTY0LjQ2
NjI2Ml0gICBleD0gICAgMTUzMjc4NDN1cyB0aW1lcj1mZmZmODJkMDQwNjQ0YzIwIGNiPWFy
Y2gveDg2L2NwdS9tY2hlY2svaW50ZWwtbm9uZmF0YWwuYyNtY2Vfd29ya19mbigwMDAwMDAw
MDAwMDAwMDAwKQ0KPj4gICAgICAoWEVOKSBbICAxNjQuNDY3NDYxXSBDUFUwMjoNCj4+ICAg
ICAgKFhFTikgWyAgMTY0LjQ2Nzc3M10gICBleD0gICAgICAgMzc3NTZ1cyB0aW1lcj1mZmZm
ODMwNDYxOTMxMDcwIGNiPWNvbW1vbi9zY2hlZC9jb3JlLmMjdmNwdV9zaW5nbGVzaG90X3Rp
bWVyX2ZuKGZmZmY4MzA0NjE5MzEwMDApDQo+PiAgICAgIChYRU4pIFsgIDE2NC40Njg5NTNd
IENQVTA0Og0KPj4gICAgICAoWEVOKSBbICAxNjQuNDY5MjY3XSAgIGV4PSAgICAgIDk0MDA0
MnVzIHRpbWVyPWZmZmY4MzA0NjE5MzUwNzAgY2I9Y29tbW9uL3NjaGVkL2NvcmUuYyN2Y3B1
X3NpbmdsZXNob3RfdGltZXJfZm4oZmZmZjgzMDQ2MTkzNTAwMCkNCj4+ICAgICAgKFhFTikg
WyAgMTY0LjQ3MDQ0NF0gQ1BVMDY6DQo+PiAgICAgIChYRU4pIFsgIDE2NC40NzA3NTldICAg
ZXg9ICAgICAgNDg1ODk2dXMgdGltZXI9ZmZmZjgzMDQ2MTkwNTA3MCBjYj1jb21tb24vc2No
ZWQvY29yZS5jI3ZjcHVfc2luZ2xlc2hvdF90aW1lcl9mbihmZmZmODMwNDYxOTA1MDAwKQ0K
Pj4gICAgICAoWEVOKSBbICAxNjQuNDcxOTM3XSBDUFUwODoNCj4+ICAgICAgKFhFTikgWyAg
MTY0LjQ3MjI1MV0gICBleD0gICAgICA0NTk3MjB1cyB0aW1lcj1mZmZmODMwNDYxOTBkMDcw
IGNiPWNvbW1vbi9zY2hlZC9jb3JlLmMjdmNwdV9zaW5nbGVzaG90X3RpbWVyX2ZuKGZmZmY4
MzA0NjE5MGQwMDApDQo+PiAgICAgIChYRU4pIFsgIDE2NC40NzM0MzBdIENQVTA5Og0KPj4g
ICAgICAoWEVOKSBbICAxNjQuNDczNzQ1XSAgIGV4PSAgICAgMTU2MzA4MXVzIHRpbWVyPWZm
ZmY4MzA0NjE5MDkwNzAgY2I9Y29tbW9uL3NjaGVkL2NvcmUuYyN2Y3B1X3NpbmdsZXNob3Rf
dGltZXJfZm4oZmZmZjgzMDQ2MTkwOTAwMCkNCj4+ICAgICAgKFhFTikgWyAgMTY0LjQ3NDky
Ml0gQ1BVMTA6DQo+PiAgICAgIChYRU4pIFsgIDE2NC40NzUyMzddICAgZXg9ICAgICAgOTQ4
MjA0dXMgdGltZXI9ZmZmZjgzMDQ2MTkwMTA3MCBjYj1jb21tb24vc2NoZWQvY29yZS5jI3Zj
cHVfc2luZ2xlc2hvdF90aW1lcl9mbihmZmZmODMwNDYxOTAxMDAwKQ0KPj4gICAgICAoWEVO
KSBbICAxNjQuNDc2NDE3XSBDUFUxMToNCj4+ICAgICAgKFhFTikgWyAgMTY0LjQ3NjczMl0g
ICBleD0gICAgICA5NDgwNzF1cyB0aW1lcj1mZmZmODMwNDYxOTExMDcwIGNiPWNvbW1vbi9z
Y2hlZC9jb3JlLmMjdmNwdV9zaW5nbGVzaG90X3RpbWVyX2ZuKGZmZmY4MzA0NjE5MTEwMDAp
DQo+PiAgICAgIChYRU4pIFsgIDE2NC40Nzc5MTJdIENQVTEyOg0KPj4gICAgICAoWEVOKSBb
ICAxNjQuNDc4MjE5XSAgIGV4PSAgICAgIDg5MjE2M3VzIHRpbWVyPWZmZmY4MzA0NjE5MTkw
NzAgY2I9Y29tbW9uL3NjaGVkL2NvcmUuYyN2Y3B1X3NpbmdsZXNob3RfdGltZXJfZm4oZmZm
ZjgzMDQ2MTkxOTAwMCkNCj4+ICAgICAgKFhFTikgWyAgMTY0LjQ3OTM5OF0gQ1BVMTM6DQo+
PiAgICAgIChYRU4pIFsgIDE2NC40Nzk3MTNdICAgZXg9ICAgICAgMzA4NDI5dXMgdGltZXI9
ZmZmZjgzMDQ2MTk0MTA3MCBjYj1jb21tb24vc2NoZWQvY29yZS5jI3ZjcHVfc2luZ2xlc2hv
dF90aW1lcl9mbihmZmZmODMwNDYxOTQxMDAwKQ0KPj4gICAgICAoWEVOKSBbICAxNjQuNDgw
ODkzXSBDUFUxNDoNCj4+ICAgICAgKFhFTikgWyAgMTY0LjQ4MTIwOF0gICBleD0gICAgICA5
NTQ0OTN1cyB0aW1lcj1mZmZmODMwNDYxOTFkMDcwIGNiPWNvbW1vbi9zY2hlZC9jb3JlLmMj
dmNwdV9zaW5nbGVzaG90X3RpbWVyX2ZuKGZmZmY4MzA0NjE5MWQwMDApDQo+PiAgICAgIChY
RU4pIFsgIDE2NC40ODIzODZdIENQVTE1Og0KPj4gICAgICAoWEVOKSBbICAxNjQuNDgyNzAw
XSAgIGV4PSAgICAgMTQ4NzY5MnVzIHRpbWVyPWZmZmY4MzA0NjE5MmQwNzAgY2I9Y29tbW9u
L3NjaGVkL2NvcmUuYyN2Y3B1X3NpbmdsZXNob3RfdGltZXJfZm4oZmZmZjgzMDQ2MTkyZDAw
MCkNCj4+ICAgICAgKFhFTikgWyAgMTY0LjQ4Mzg4MV0gQ1BVMTY6DQo+PiAgICAgIChYRU4p
IFsgIDE2NC40ODQxOTVdICAgZXg9ICAgICAgIDIyODkwdXMgdGltZXI9ZmZmZjgzMDQ2MTky
OTA3MCBjYj1jb21tb24vc2NoZWQvY29yZS5jI3ZjcHVfc2luZ2xlc2hvdF90aW1lcl9mbihm
ZmZmODMwNDYxOTI5MDAwKQ0KPj4gICAgICAoWEVOKSBbICAxNjQuNDg1MzczXSBDUFUxODoN
Cj4+ICAgICAgKFhFTikgWyAgMTY0LjQ4NTY4OF0gICBleD0gICAgICAgODU5MDJ1cyB0aW1l
cj1mZmZmODMwNDYxOTM5MDcwIGNiPWNvbW1vbi9zY2hlZC9jb3JlLmMjdmNwdV9zaW5nbGVz
aG90X3RpbWVyX2ZuKGZmZmY4MzA0NjE5MzkwMDApDQo+PiAgICAgIChYRU4pIFsgIDE2NC40
ODY4NjRdIENQVTIwOg0KPj4gICAgICAoWEVOKSBbICAxNjQuNDg3MTcxXSAgIGV4PSAgICAg
ICAgIDg5NXVzIHRpbWVyPWZmZmY4MzA0NjE5MTUwNzAgY2I9Y29tbW9uL3NjaGVkL2NvcmUu
YyN2Y3B1X3NpbmdsZXNob3RfdGltZXJfZm4oZmZmZjgzMDQ2MTkxNTAwMCkNCj4+ICAgICAg
KFhFTikgWyAgMTY0LjQ4ODM1OF0gICBleD0gICAgICAgMTc4OTV1cyB0aW1lcj1mZmZmODMw
NDYxOTc5YWEwIGNiPWRyaXZlcnMvY3B1ZnJlcS9jcHVmcmVxX29uZGVtYW5kLmMjZG9fZGJz
X3RpbWVyKGZmZmY4MzA0NjE5NzlhZTApDQo+PiAgICAgIChYRU4pIFsgIDE2NC40ODk1Njld
ICAgZXg9ICAgICAgICAyOTE0dXMgdGltZXI9ZmZmZjgzMDQ2MTk4ZmRjMCBjYj1jb21tb24v
c2NoZWQvY29yZS5jI3NfdGltZXJfZm4oMDAwMDAwMDAwMDAwMDAwMCkNCj4+ICAgICAgKFhF
TikgWyAgMTY0LjQ5MDYzM10gQ1BVMjE6DQo+PiAgICAgIChYRU4pIFsgIDE2NC40OTA5NDdd
ICAgZXg9ICAgICAgNDYxMTU0dXMgdGltZXI9ZmZmZjgzMDQ2MTkyNTA3MCBjYj1jb21tb24v
c2NoZWQvY29yZS5jI3ZjcHVfc2luZ2xlc2hvdF90aW1lcl9mbihmZmZmODMwNDYxOTI1MDAw
KQ0KPj4NCj4+IEluIHRoZSBsYXR0ZXIgY2FzZSwgSSBzZWUgb25seSBvbmUgY2I9Y29tbW9u
L3NjaGVkL2NvcmUuYyNzX3RpbWVyX2ZuDQo+PiAodHdvIG9mIHRoZW0gYmVmb3JlKS4gQW5k
IGFsc28gb25seSBvbmUNCj4+IGNiPWRyaXZlcnMvY3B1ZnJlcS9jcHVmcmVxX29uZGVtYW5k
LmMjZG9fZGJzX3RpbWVyLg0KPiANCj4gTGV0J3Mgc3RhcnQgd2l0aCB0aGlzIG9uZS4gSXQn
cyBhY3RpdmUgd2hlbiB0aGUgb25kZW1hbmQgZ292ZXJub3IgaXMgaW4gdXNlLA0KPiBhbmQg
d2hlbiBhIENQVSBpc24ndCAoaW4gdGhlIHByb2Nlc3Mgb2YgYmVpbmcgcHV0IGludG8pIGEg
Qy1zdGF0ZS4gVGhlcmUNCj4gYmVpbmcgb25seSB0d28gaW5zdGFuY2VzIG1lYW5zIHRoZSBz
eXN0ZW0gd2FzIHJlYXNvbmFibHkgaWRsZSBhdCB0aGUgdGltZSB5b3UNCj4gZHVtcGVkIHRo
ZSB0aW1lciBxdWV1ZXMgYWhlYWQgb2YgZW50ZXJpbmcgUzMsIGFuZCBqdXN0IHNsaWdodGx5
IG1vcmUgaWRsZQ0KPiBhZnRlciBnZXR0aW5nIGJhY2sgb3V0IG9mIFMzLiBJJ3ZlIGp1c3Qg
Y2hlY2tlZCBteSBTa3lsYWtlOiBXaXRob3V0IGl0IGV2ZXINCj4gaGF2aW5nIGdvbmUgdGhy
b3VnaCBhbiBTMyBjeWNsZSwgdGhlcmUncyBvbmx5IG9uZSBpbnN0YW5jZSB0aGVyZSB3aGVu
IHRoZQ0KPiBzeXN0ZW0gaXMgcnVubmluZyBub3RoaW5nIGJ1dCBhbiAieGwgZG1lc2ciLg0K
PiANCj4gSWYgeW91IHBsYWNlIGVub3VnaCBsb2FkIG9uIHRoZSBzeXN0ZW0gdG8ga2VlcCBh
bGwgQ1BVcyBidXN5LCBtb3JlIGluc3RhbmNlcw0KPiBvZiB0aGUgdGltZXIgc2hvdWxkIGFw
cGVhci4gSG93IG1hbnkgb2YgdGhlbSBpdCdsbCBiZSBkb2VzLCBob3dldmVyLCBhbHNvDQo+
IGRlcGVuZCBvbiB0aGUgc2NvcGUgb2YgdGhlIHBvbGljeSAoc3VwcGxpZWQgYnkgZmlybXdh
cmUpLiBUaGUgdG9wb2xvZ3kgLi4uDQo+IA0KPj4gSXMgdGhlIHNfdGltZXJfZm4gcmVsYXRl
ZCB0byBydW5xdWV1ZXM/IEkgaGF2ZSB0d28gb2YgdGhlbToNCj4+DQo+PiAgICAgIChYRU4p
IFsgICAxMS43NTE0ODBdIEFkZGluZyBjcHUgMCB0byBydW5xdWV1ZSAwDQo+PiAgICAgIChY
RU4pIFsgICAxMS43NTM1ODBdICBGaXJzdCBjcHUgb24gcnVucXVldWUsIGFjdGl2YXRpbmcN
Cj4+ICAgICAgKFhFTikgWyAgIDExLjc1NTczMV0gQWRkaW5nIGNwdSAyIHRvIHJ1bnF1ZXVl
IDANCj4+ICAgICAgKFhFTikgWyAgIDExLjc1NzgxOF0gQWRkaW5nIGNwdSA0IHRvIHJ1bnF1
ZXVlIDANCj4+ICAgICAgKFhFTikgWyAgIDExLjc1OTg5MV0gQWRkaW5nIGNwdSA2IHRvIHJ1
bnF1ZXVlIDANCj4+ICAgICAgKFhFTikgWyAgIDExLjc2MTk1NV0gQWRkaW5nIGNwdSA4IHRv
IHJ1bnF1ZXVlIDANCj4+ICAgICAgKFhFTikgWyAgIDExLjc2NDAwMV0gQWRkaW5nIGNwdSA5
IHRvIHJ1bnF1ZXVlIDANCj4+ICAgICAgKFhFTikgWyAgIDExLjc2NjAyOV0gQWRkaW5nIGNw
dSAxMCB0byBydW5xdWV1ZSAwDQo+PiAgICAgIChYRU4pIFsgICAxMS43NjgwNDVdIEFkZGlu
ZyBjcHUgMTEgdG8gcnVucXVldWUgMA0KPj4gICAgICAoWEVOKSBbICAgMTEuNzcwMDUwXSBB
ZGRpbmcgY3B1IDEyIHRvIHJ1bnF1ZXVlIDENCj4+ICAgICAgKFhFTikgWyAgIDExLjc3MjAz
M10gIEZpcnN0IGNwdSBvbiBydW5xdWV1ZSwgYWN0aXZhdGluZw0KPj4gICAgICAoWEVOKSBb
ICAgMTEuNzc0MDUxXSBBZGRpbmcgY3B1IDEzIHRvIHJ1bnF1ZXVlIDENCj4+ICAgICAgKFhF
TikgWyAgIDExLjc3NjA0N10gQWRkaW5nIGNwdSAxNCB0byBydW5xdWV1ZSAxDQo+PiAgICAg
IChYRU4pIFsgICAxMS43Nzc5OTNdIEFkZGluZyBjcHUgMTUgdG8gcnVucXVldWUgMQ0KPj4g
ICAgICAoWEVOKSBbICAgMTEuNzc5OTEzXSBBZGRpbmcgY3B1IDE2IHRvIHJ1bnF1ZXVlIDEN
Cj4+ICAgICAgKFhFTikgWyAgIDExLjc4MTg3Ml0gQWRkaW5nIGNwdSAxOCB0byBydW5xdWV1
ZSAxDQo+PiAgICAgIChYRU4pIFsgICAxMS43ODM5MTJdIEFkZGluZyBjcHUgMjAgdG8gcnVu
cXVldWUgMQ0KPj4gICAgICAoWEVOKSBbICAgMTEuNzg1ODU1XSBBZGRpbmcgY3B1IDIxIHRv
IHJ1bnF1ZXVlIDENCj4gDQo+IC4uLiBvZiB0aGlzIHN5c3RlbSBsb29rcyBzb21ld2hhdCAi
aW50ZXJlc3RpbmciLCBqdWRnaW5nIGZyb20gdGhlc2UgQ1BVDQo+IG51bWJlcnMuDQo+IA0K
PiBBc3N1bWluZyB0aGUgc3lzdGVtIHdhcyAoc3VwcG9zZWRseSkgZXF1YWxseSBpZGxlIGJl
Zm9yZSBhbmQgYWZ0ZXIgUzMsDQo+IHRoZSBhYnNlbmNlIG9mIHRoZSAybmQgdGltZXIocz8p
IG1heSBpbmRpY2F0ZSB0aGF0IHNvbWUgKGJhY2tncm91bmQ/KQ0KPiBsb2FkIHRoYXQgd2Fz
IHRoZXJlIGJlZm9yZSBTMyBkaWRuJ3QgcmUtYXBwZWFyIGFmdGVyd2FyZHMuIFN1Y2gNCj4g
YmFja2dyb3VuZCBsb2FkIGNvdWxkIGJlIHNvbWV0aGluZyB3aGljaCBtb25pdG9ycyBhbmQg
dHVuZXMgdGhlIHN5c3RlbS4NCj4gKFlldCBhcyBpbmRpY2F0ZWQsIEknbSBsb29raW5nIGF0
IHRoZSBDUFVmcmVxIHBhcnQgb25seSByaWdodCBub3cuIEknbQ0KPiBraW5kIG9mIGhvcGlu
ZyB0aGF0IGEgc2NoZWR1bGVyIG1haW50YWluZXIgbWF5IGxvb2sgYXQgdGhlIG90aGVyIGFz
cGVjdC4pDQoNClRoZSBzX3RpbWVyX2ZuKCkgd2lsbCBiZSBhY3RpdmUgb25seSBpZiBhIENQ
VSBpcyBqdXN0IHJ1bm5pbmcgYSB2Y3B1LiBTbw0KaXQgaXMgc2ltaWxhciB0byB0aGUgZG9f
ZGJzX3RpbWVyKCkgaW4gdGhpcyByZWdhcmQuDQoNCg0KSnVlcmdlbg0K
--------------w4lFI0WQ1qH7KVcEkuI9evJP
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-----

--------------w4lFI0WQ1qH7KVcEkuI9evJP--

--------------5RFojAeVNZF4t0PvMZL8y6Wd--

--------------imUU5YsKuph0YghZe5yj5YrN
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/Ey8FAmnOLdYFAwAAAAAACgkQsN6d1ii/Ey9S
kQf/Wve7BCj6o/NqOU+5RNUSNWpNPruX4dwg2IaCX2513+LRiZx41eHFvoAIgV4AZ4HDU1A0A/x5
5wZwmHQmicfHACYtVuUotCkytOABT5TfQBcIv79t65uFjtcUkJ3AbQKvvzHGyEpix7xFxsc2Ur5B
4PWpC9P3qor0U3Ag26jXu9HOLeLyVoqAFIYPXRg6cfmg1sb4W08jYDewljXeeBdAU4a3G6DDj5/t
LRE4GWGgo7OOnGLDXGel7Q6FIYNFhiHl0MuOl9OZ8D9v5/bcmnNIJG30ru+dku2y/SXVBURhEmQy
P+oAla16YDD4wq4jZIGq5Oz2bINU4g+uEe65lLXMEQ==
=qvXM
-----END PGP SIGNATURE-----

--------------imUU5YsKuph0YghZe5yj5YrN--


From xen-devel-bounces@lists.xenproject.org Thu Apr 02 09:00:27 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 02 Apr 2026 09:00:27 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1271368.1559559 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1w8DuX-0004ra-8s; Thu, 02 Apr 2026 09:00:21 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1271368.1559559; Thu, 02 Apr 2026 09:00: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 1w8DuX-0004rT-5G; Thu, 02 Apr 2026 09:00:21 +0000
Received: by outflank-mailman (input) for mailman id 1271368;
 Thu, 02 Apr 2026 09:00:20 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <jbeulich@suse.com>) id 1w8DuW-0004rM-8A
 for xen-devel@lists.xenproject.org; Thu, 02 Apr 2026 09:00:20 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1w8DuV-004H3w-9x
 for xen-devel@lists.xenproject.org; Thu, 02 Apr 2026 11:00:19 +0200
Received: from [10.42.69.7] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <jbeulich@suse.com>)
 id 69ce3018-2eae-0a2a0a5409dd-0a2a45079790-32
 for <xen-devel@lists.xenproject.org>; Thu, 02 Apr 2026 11:00:19 +0200
Received: from [209.85.221.46] (helo=mail-wr1-f46.google.com)
 by tlsNG-ef75cf.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.0)
 (envelope-from <jbeulich@suse.com>)
 id 69ce301f-ba2d-0a2a45070019-d155dd2ec5a5-3
 for <xen-devel@lists.xenproject.org>; Thu, 02 Apr 2026 11:00:15 +0200
Received: by mail-wr1-f46.google.com with SMTP id
 ffacd0b85a97d-43cfa33a983so403459f8f.1
 for <xen-devel@lists.xenproject.org>; Thu, 02 Apr 2026 02:00:15 -0700 (PDT)
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-43d1e4d29bbsm6563011f8f.21.2026.04.02.02.00.14
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Thu, 02 Apr 2026 02:00:14 -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=google header.d=suse.com header.i="@suse.com" header.h="Content-Transfer-Encoding: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=1775120415; x=1775725215; darn=lists.xenproject.org;
        h=content-transfer-encoding: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;
        bh=BLOc/JW8ZMw+OFh6xrKpF1PhXLvQuUzOtlqad9fG2lc=;
        b=Tcbd+aq7tTejc8uKubmtpjcp3iCIp193ssSayVGwZaKyk7d8RinnjOFmdHaFVv5i7D
         cdlkpznmbpCSRiJoGO8mzxtsEoqiZzh6w/5PnSdSeEkpcVRSoTSwJ7mmykUycux9+pks
         9Nh29VrGrJhNgb9QJVawtZj3UOAWgscTvZaGq+Lwowigs2w8PlY1Q4K8//CIPNGWHK5l
         Mi3ZwP8o1NxegaFEhntv3OqYzttQs7q6eVZF/nixYc8HO3UHsH2isfhxbz3BkjRqbATt
         oCYELvZN2htxmT5fplrKbwQ+DxcCx6T5byzuA+c12ip5hq2tudYJeWnpNFxC2T8q2Doo
         a0wA==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20251104; t=1775120415; x=1775725215;
        h=content-transfer-encoding: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;
        bh=BLOc/JW8ZMw+OFh6xrKpF1PhXLvQuUzOtlqad9fG2lc=;
        b=awgKEieHRIq3vfVi6/7ngN6uVnQ2YEgAkar6eKSwKEYQNeDUKFxgwBFMeXiiWG39iQ
         hONawE3frW5LIjQ9Lg0UKkXxjLpSdueA3cnShxnnAZ/5fIIAJrJQ8hHDA6PN97WwJa26
         ueMH/ew3JDTdc4kYu2u6bZImg9NO4cmQ7huxGzQ2oEc7Of5geUHeAInEsLjVQOGwOJVl
         /knuIYujpUN2WVD6K5x+uWwrSXZAI3Rojg/l8q1FJFCJ9oSAs+/0J9cFQO38B0DDEaN7
         OEjB6tuoKc0k2au+AFHz/YkKbFGdf02bmXEhdNGXz2T9JOjrVu1oxUcnCk/YahE0kwuC
         W0sw==
X-Forwarded-Encrypted: i=1; AJvYcCVXolr+NYTG3fUjelhLzgJ6z/ibe4AFivTTQuMjY45qitvQDjuIPdAKgX1AAzv7KIZfiC5KdS4NxWA=@lists.xenproject.org
X-Gm-Message-State: AOJu0YwR2QRLOfi0JCC+S/gmAfLHzfY51+l8yHwAkZdJtvKcJUeLLtxm
	2OxzJI+oZJVqgpwVv1t31W131CHPr3Bq7e+TksM5sT07biP6GkrCUXq9Io8uKVet2A==
X-Gm-Gg: ATEYQzy1Y7HQ+a6o0QxM/HwO9uCwQUPnjHpctZFxi8lK3fY7rizg4IhTQF2/nUWBsX0
	v4h1CsYS9miaBDD+5341cABvUxlJx6bqb5+4Dk02JAtaGVDYlSt+s1fRsOcS7SfBgE7qX0GSPD9
	055jHAc5HQipG08LUA5tXknFztC9+pYYwD2IT2eNK5yXZxx5lygb5D08vEvNFSML6vayNqqig2u
	OGK3QEMffz2PrVBmm654/koZGcfTnxuajYj0M0zF5mwU6z3RqqySNVG9j1QYpQ8qKwmIFIaqPHN
	fl4B2U4HiVuttMQ+Rcqh3Gmsnq5ptOmQKnLeaCH3G/P7Z01eZ7jfGd9MUPhj7aKUNZn12cni5ba
	TqDHbECukIzJClTcz3dRLAQB/2EYYl/G1tTW4lavSrxZpSUlEsdMhsVs0i1JcNOZcmiWSk1my6d
	1Z5Hwb/GImDyPpXdbtSCnrkCtuSLab75zGnVI+fRuHAQMMuRn7nIi/9pfLRouBRbgJedq9hRaQA
	0uigJfg1CebjGg=
X-Received: by 2002:a05:6000:2909:b0:43d:29a:e42a with SMTP id ffacd0b85a97d-43d150c211dmr12433330f8f.29.1775120414796;
        Thu, 02 Apr 2026 02:00:14 -0700 (PDT)
Message-ID: <8393b8fe-6ba9-439c-ae15-a84409d0976d@suse.com>
Date: Thu, 2 Apr 2026 11:00:13 +0200
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH v1 12/27] xen/riscv: introduce aia_init() and
 aia_available()
To: Oleksii Kurochko <oleksii.kurochko@gmail.com>
Cc: Romain Caritey <Romain.Caritey@microchip.com>,
 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.pau@citrix.com>,
 Stefano Stabellini <sstabellini@kernel.org>, xen-devel@lists.xenproject.org
References: <cover.1773157782.git.oleksii.kurochko@gmail.com>
 <74f15b1db86139b36b721ef9d12b998fe4f0f348.1773157782.git.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: <74f15b1db86139b36b721ef9d12b998fe4f0f348.1773157782.git.oleksii.kurochko@gmail.com>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 7bit
X-purgate-ID: tlsNG-ef75cf/1775120415-1334C41E-922DAA10/0/0
X-purgate-type: clean
X-purgate-size: 1521

On 10.03.2026 18:08, Oleksii Kurochko wrote:
> aia_init() is going to contain all the stuff related to AIA initialization.
> At the moment, it is just Check if SSAIA extension is available and if yes
> set is_aia_available to true.

And (future) users of aia_available() can't directly call
riscv_isa_extension_available()? Nor can aia_available() be a convenience
wrapper around that call? It's only ...

> --- /dev/null
> +++ b/xen/arch/riscv/aia.c
> @@ -0,0 +1,25 @@
> +/* SPDX-License-Identifier: GPL-2.0-only */
> +
> +#include <xen/errno.h>
> +#include <xen/init.h>
> +#include <xen/sections.h>
> +#include <xen/types.h>
> +
> +#include <asm/cpufeature.h>
> +
> +static bool __ro_after_init is_aia_available;

... a boolean, yes, but still.

> +bool aia_available(void)
> +{
> +    return is_aia_available;
> +}
> +
> +int __init aia_init(void)
> +{
> +    if ( !riscv_isa_extension_available(NULL, RISCV_ISA_EXT_ssaia) )
> +        return -ENODEV;
> +
> +    is_aia_available = true;
> +
> +    return 0;
> +}

Why the return value, when ...

> --- a/xen/arch/riscv/intc.c
> +++ b/xen/arch/riscv/intc.c
> @@ -8,6 +8,7 @@
>  #include <xen/lib.h>
>  #include <xen/spinlock.h>
>  
> +#include <asm/aia.h>
>  #include <asm/intc.h>
>  
>  static const struct intc_hw_operations *__ro_after_init intc_hw_ops;
> @@ -27,6 +28,8 @@ void __init intc_preinit(void)
>  
>  void __init intc_init(void)
>  {
> +    aia_init();

... the sole caller doesn't care?

Jan


From xen-devel-bounces@lists.xenproject.org Thu Apr 02 09:35:26 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 02 Apr 2026 09:35:26 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1271401.1559567 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1w8ESG-00015P-Of; Thu, 02 Apr 2026 09:35:12 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1271401.1559567; Thu, 02 Apr 2026 09: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 1w8ESG-00015I-LY; Thu, 02 Apr 2026 09:35:12 +0000
Received: by outflank-mailman (input) for mailman id 1271401;
 Thu, 02 Apr 2026 09:35:11 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <marmarek@invisiblethingslab.com>) id 1w8ESF-00015C-4X
 for xen-devel@lists.xenproject.org; Thu, 02 Apr 2026 09:35:11 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1w8ESD-005hHv-NE
 for xen-devel@lists.xenproject.org; Thu, 02 Apr 2026 11:35:09 +0200
Received: from [10.42.69.9] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <marmarek@invisiblethingslab.com>)
 id 69ce383c-2eae-0a2a0a5409dd-0a2a4509de0e-48
 for <xen-devel@lists.xenproject.org>; Thu, 02 Apr 2026 11:35:09 +0200
Received: from [103.168.172.144] (helo=fout-a1-smtp.messagingengine.com)
 by tlsNG-bad1c0.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.0)
 (envelope-from <marmarek@invisiblethingslab.com>)
 id 69ce384c-bf79-0a2a45090019-67a8ac90ba1f-3
 for <xen-devel@lists.xenproject.org>; Thu, 02 Apr 2026 11:35:09 +0200
Received: from phl-compute-02.internal (phl-compute-02.internal [10.202.2.42])
 by mailfout.phl.internal (Postfix) with ESMTP id 11DF5EC017D;
 Thu,  2 Apr 2026 05:35:08 -0400 (EDT)
Received: from phl-frontend-04 ([10.202.2.163])
 by phl-compute-02.internal (MEProxy); Thu, 02 Apr 2026 05:35:08 -0400
Received: by mail.messagingengine.com (Postfix) with ESMTPA; Thu,
 2 Apr 2026 05:35:06 -0400 (EDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
Authentication-Results: eu.smtp.expurgate.cloud; dkim=pass header.s=fm1 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=fm1; t=1775122507;
	 x=1775208907; bh=apQO9KLZiAeVK8BLrH4tF5lCXaQLZ06gLCcaCkpBSKE=; b=
	JE+XUUHwBtcaZNxIbuvhmEivNvbKJUfkOnEFTAvTGPBiHXM5wFpjvci4QwsU4O/f
	cDNCEVWvNzs2xhCx1jFrLaP9Q/qiRzBuheETtE/QEtj4PmLd+RqrPH4Dw4rEXqiS
	B0noFkqqNcGQwMBjURkP/T38zpiA8wEJwG6FSGWo2ZPwbvV555LBG3KbidqzWNqz
	A21GumU5i1OiFSkA+lQxN8qCtLN8VUYtI38Ek1g5k4NHP/9cN8wFCLrlvSYv7Ze2
	vgNtRmh03tiBrxzkcN9sbzQb+56xB2POsfA8KDH1Phl+gXeARtEOndM7ZGFE+DWJ
	obm5PAJFGYJH8f6eRWRShw==
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=
	1775122507; x=1775208907; bh=apQO9KLZiAeVK8BLrH4tF5lCXaQLZ06gLCc
	aCkpBSKE=; b=NZW8hKJjL0CpWhSgjnMlBqF9Cx+3VaB5sDkGVJerWv1ZDHd8i+2
	njrZUeJUtijVL59F6oId1rYTkniG6agrZSFnL1xwk8bqYhkmf736FsVxFMK0BIBw
	BKJei451D4BTlkHE3+/7pC9M963ew8obGu8HHOL9Rom4mjauevNEOFqTNLjwliCP
	ysufmr0sHiybhxNh/HeYVqHj5uiuLnY+jhCUIammWuuroUFPBeaBDhoklSOp0knz
	z0b0CVnPWqHLGCy3WF2o6MqYGER6TRQ+d6D2iWxxnTT/Uzd9ShEqbWCAnvFOvNFy
	2tDjDfvpZ3uNkb5VA1TMh5gxpBLVoLX0YoQ==
X-ME-Sender: <xms:SzjOaQqeBOYMjeWhKyMHuiEVarbCJ87JY6Hg9i_d_GAS9r91LukZjg>
    <xme:SzjOacrlv0uXcIqV00l5ue5AU055mqYHRklvBkObxeYRvqzIkfEFwEu7M_OUAxLfA
    Js1GM-33mIn_Lc53E3bqeXkyFpKxYsIosr1TsaADZFtBSTc>
X-ME-Received: <xmr:SzjOaS1Jqd82hT6v0Gt9eBgV2zTsfGlJYvwjNrHI1lKEZYr_pPkqCg77>
X-ME-Proxy-Cause: gggruggvucftvghtrhhoucdtuddrgeefhedrtddtgdehieejucetufdoteggodetrfdotf
    fvucfrrhhofhhilhgvmecuhfgrshhtofgrihhlpdfurfetoffkrfgpnffqhgenuceurghi
    lhhouhhtmecufedttdenucesvcftvggtihhpihgvnhhtshculddquddttddmnecujfgurh
    epfffhvfevuffkfhggtggujgesghdtreertddtjeenucfhrhhomhepofgrrhgvkhcuofgr
    rhgtiiihkhhofihskhhiqdfikphrvggtkhhiuceomhgrrhhmrghrvghksehinhhvihhsih
    gslhgvthhhihhnghhslhgrsgdrtghomheqnecuggftrfgrthhtvghrnhepgfduleetfeev
    hfefheeiteeliefhjefhleduveetteekveettddvgeeuteefjedunecuvehluhhsthgvrh
    fuihiivgeptdenucfrrghrrghmpehmrghilhhfrhhomhepmhgrrhhmrghrvghksehinhhv
    ihhsihgslhgvthhhihhnghhslhgrsgdrtghomhdpnhgspghrtghpthhtohepvddpmhhoug
    gvpehsmhhtphhouhhtpdhrtghpthhtohepjhgsvghulhhitghhsehsuhhsvgdrtghomhdp
    rhgtphhtthhopeigvghnqdguvghvvghlsehlihhsthhsrdigvghnphhrohhjvggtthdroh
    hrgh
X-ME-Proxy: <xmx:SzjOaTDfKPbUKxwi_TrQj7hYbGMpIn6S81YUYEKsFQ0aUehahgsZSw>
    <xmx:SzjOaSel8tE89SvAGnO955uPqBO5US71MQs09OLYDGH9UU_4mBpVgg>
    <xmx:SzjOaQhHPRRCAsZ3TqJQnuQdKEbSXbW0YK-vFPfC8ZmE8QJCHUbZsQ>
    <xmx:SzjOaSoh3fImrgiR6FKY_Ibmzat6vD9kA7iMxVUJbURiCHTQHWUUnw>
    <xmx:SzjOaY_dR8sHxhHOstOtSBUykwfYaf3g2jK5wgK_FsuCaDEpmNGovHUJ>
Feedback-ID: i1568416f:Fastmail
Date: Thu, 2 Apr 2026 11:35:05 +0200
From: Marek =?utf-8?Q?Marczykowski-G=C3=B3recki?= <marmarek@invisiblethingslab.com>
To: Jan Beulich <jbeulich@suse.com>
Cc: xen-devel <xen-devel@lists.xenproject.org>
Subject: Re: IOMMU faults after S3
Message-ID: <ac44SVW1cPhKYFKU@mail-itl>
References: <acZZmGXIJlmN3KGm@mail-itl>
 <e8bbaae2-5cff-4549-9f27-fbbda7346f60@suse.com>
 <090b8b8f-141b-4a24-92eb-879c0a0c73e1@suse.com>
 <ac2nibFfvGm_7elv@mail-itl>
 <933a3e95-33d2-4e20-a4d5-2d8b20c2da7f@suse.com>
 <ac4kCq87SQSc6ddV@mail-itl>
 <aa6910f1-365a-4534-b229-9730b3aede02@suse.com>
MIME-Version: 1.0
Content-Type: multipart/signed; micalg=pgp-sha256;
	protocol="application/pgp-signature"; boundary="DAxEOqDSYZNEEJoQ"
Content-Disposition: inline
In-Reply-To: <aa6910f1-365a-4534-b229-9730b3aede02@suse.com>
X-purgate-ID: tlsNG-bad1c0/1775122509-2E155152-A8CA5F06/0/0
X-purgate-type: clean
X-purgate-size: 11641


--DAxEOqDSYZNEEJoQ
Content-Type: multipart/mixed; protected-headers=v1;
	boundary="NVNT4aiuL2yDymiY"
Content-Disposition: inline
Date: Thu, 2 Apr 2026 11:35:05 +0200
From: Marek =?utf-8?Q?Marczykowski-G=C3=B3recki?= <marmarek@invisiblethingslab.com>
To: Jan Beulich <jbeulich@suse.com>
Cc: xen-devel <xen-devel@lists.xenproject.org>
Subject: Re: IOMMU faults after S3


--NVNT4aiuL2yDymiY
Content-Type: text/plain; charset=utf-8
Content-Disposition: inline
Content-Transfer-Encoding: quoted-printable

On Thu, Apr 02, 2026 at 10:39:41AM +0200, Jan Beulich wrote:
> On 02.04.2026 10:08, Marek Marczykowski-G=C3=B3recki wrote:
> > The xl dmesg output (from MTL this time):
> >=20
> >     (XEN) [  123.477511] Entering ACPI S3 state.
> >     (XEN) [18446743903.571842] _disable_pit_irq:2649: using_pit: 0, cpu=
_has_apic: 1
> >     (XEN) [18446743903.571856] _disable_pit_irq:2659: cpuidle_using_dee=
p_cstate: 1, boot_cpu_has(X86_FEATURE_XEN_ARAT): 0

> Hmm, but what you didn't log is whether __hpet_setup_msi_irq() actually
> succeeded everywhere. (And if it did, also logging HPET_Tn_ROUTE() values
> might be a good idea, if only to double check.)

Updated output:

    (XEN) [18446743899.720395] _disable_pit_irq:2649: using_pit: 0, cpu_has=
_apic: 1
    (XEN) [18446743899.720409] _disable_pit_irq:2659: cpuidle_using_deep_cs=
tate: 1, boot_cpu_has(X86_FEATURE_XEN_ARAT): 0
    (XEN) [18446743899.720420] _disable_pit_irq:2662: init: 0
    (XEN) [18446743899.720431] hpet_broadcast_resume:663: hpet_events: ffff=
83046bc1f080
    (XEN) [18446743899.720579] hpet_broadcast_resume:674: num_hpets_used: 8
    (XEN) [18446743899.720587] hpet_broadcast_resume:692: cfg: 0x1
    (XEN) [18446743899.720599] hpet_broadcast_resume:697: i:0, hpet_events[=
i].msi.irq: 122, hpet_events[i].flags: 0
    (XEN) [18446743899.720612] hpet_msi_write:283: iommu_intremap: 2 (iommu=
_intremap_off: 0), HPET_Tn_ROUTE(ch->idx): 0x110
    (XEN) [18446743899.720638] hpet_msi_write:287: iommu_update_ire_from_ms=
i rc: 0
    (XEN) [18446743899.720649] hpet_broadcast_resume:701: i:0, __hpet_setup=
_msi_irq ret: 0
    (XEN) [18446743899.720665] hpet_broadcast_resume:711: i:0, cfg: 0xc134
    (XEN) [18446743899.720674] hpet_broadcast_resume:697: i:1, hpet_events[=
i].msi.irq: 123, hpet_events[i].flags: 0
    (XEN) [18446743899.720684] hpet_msi_write:283: iommu_intremap: 2 (iommu=
_intremap_off: 0), HPET_Tn_ROUTE(ch->idx): 0x130
    (XEN) [18446743899.720707] hpet_msi_write:287: iommu_update_ire_from_ms=
i rc: 0
    (XEN) [18446743899.720717] hpet_broadcast_resume:701: i:1, __hpet_setup=
_msi_irq ret: 0
    (XEN) [18446743899.720728] hpet_broadcast_resume:711: i:1, cfg: 0xc104
    (XEN) [18446743899.720737] hpet_broadcast_resume:697: i:2, hpet_events[=
i].msi.irq: 124, hpet_events[i].flags: 0
    (XEN) [18446743899.720747] hpet_msi_write:283: iommu_intremap: 2 (iommu=
_intremap_off: 0), HPET_Tn_ROUTE(ch->idx): 0x150
    (XEN) [18446743899.720771] hpet_msi_write:287: iommu_update_ire_from_ms=
i rc: 0
    (XEN) [18446743899.720781] hpet_broadcast_resume:701: i:2, __hpet_setup=
_msi_irq ret: 0
    (XEN) [18446743899.720797] hpet_broadcast_resume:711: i:2, cfg: 0xc104
    (XEN) [18446743899.720805] hpet_broadcast_resume:697: i:3, hpet_events[=
i].msi.irq: 125, hpet_events[i].flags: 0
    (XEN) [18446743899.720816] hpet_msi_write:283: iommu_intremap: 2 (iommu=
_intremap_off: 0), HPET_Tn_ROUTE(ch->idx): 0x170
    (XEN) [18446743899.720838] hpet_msi_write:287: iommu_update_ire_from_ms=
i rc: 0
    (XEN) [18446743899.720848] hpet_broadcast_resume:701: i:3, __hpet_setup=
_msi_irq ret: 0
    (XEN) [18446743899.720863] hpet_broadcast_resume:711: i:3, cfg: 0xc104
    (XEN) [18446743899.720872] hpet_broadcast_resume:697: i:4, hpet_events[=
i].msi.irq: 126, hpet_events[i].flags: 0
    (XEN) [18446743899.720882] hpet_msi_write:283: iommu_intremap: 2 (iommu=
_intremap_off: 0), HPET_Tn_ROUTE(ch->idx): 0x190
    (XEN) [18446743899.720905] hpet_msi_write:287: iommu_update_ire_from_ms=
i rc: 0
    (XEN) [18446743899.720915] hpet_broadcast_resume:701: i:4, __hpet_setup=
_msi_irq ret: 0
    (XEN) [18446743899.720931] hpet_broadcast_resume:711: i:4, cfg: 0xc104
    (XEN) [18446743899.720939] hpet_broadcast_resume:697: i:5, hpet_events[=
i].msi.irq: 127, hpet_events[i].flags: 0
    (XEN) [18446743899.720949] hpet_msi_write:283: iommu_intremap: 2 (iommu=
_intremap_off: 0), HPET_Tn_ROUTE(ch->idx): 0x1b0
    (XEN) [18446743899.720971] hpet_msi_write:287: iommu_update_ire_from_ms=
i rc: 0
    (XEN) [18446743899.720981] hpet_broadcast_resume:701: i:5, __hpet_setup=
_msi_irq ret: 0
    (XEN) [18446743899.720997] hpet_broadcast_resume:711: i:5, cfg: 0xc104
    (XEN) [18446743899.721006] hpet_broadcast_resume:697: i:6, hpet_events[=
i].msi.irq: 128, hpet_events[i].flags: 0
    (XEN) [18446743899.721016] hpet_msi_write:283: iommu_intremap: 2 (iommu=
_intremap_off: 0), HPET_Tn_ROUTE(ch->idx): 0x1d0
    (XEN) [18446743899.721039] hpet_msi_write:287: iommu_update_ire_from_ms=
i rc: 0
    (XEN) [18446743899.721048] hpet_broadcast_resume:701: i:6, __hpet_setup=
_msi_irq ret: 0
    (XEN) [18446743899.721064] hpet_broadcast_resume:711: i:6, cfg: 0xc104
    (XEN) [18446743899.721072] hpet_broadcast_resume:697: i:7, hpet_events[=
i].msi.irq: 129, hpet_events[i].flags: 0
    (XEN) [18446743899.721082] hpet_msi_write:283: iommu_intremap: 2 (iommu=
_intremap_off: 0), HPET_Tn_ROUTE(ch->idx): 0x1f0
    (XEN) [18446743899.721105] hpet_msi_write:287: iommu_update_ire_from_ms=
i rc: 0
    (XEN) [18446743899.721115] hpet_broadcast_resume:701: i:7, __hpet_setup=
_msi_irq ret: 0
    (XEN) [18446743899.721130] hpet_broadcast_resume:711: i:7, cfg: 0xc104

And the current debug diff attached.

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

--NVNT4aiuL2yDymiY
Content-Type: text/plain; charset=utf-8
Content-Disposition: attachment; filename=xen-debug.diff
Content-Transfer-Encoding: quoted-printable

diff --git a/xen/arch/x86/cpu-policy.c b/xen/arch/x86/cpu-policy.c
index 5273fe0ae435..9916afd5ed68 100644
--- a/xen/arch/x86/cpu-policy.c
+++ b/xen/arch/x86/cpu-policy.c
@@ -364,6 +364,7 @@ static void __init calculate_host_policy(void)
     struct cpu_policy *p =3D &host_cpu_policy;
     unsigned int max_extd_leaf;
=20
+    printk("%s:%d\n", __func__, __LINE__);
     *p =3D raw_cpu_policy;
=20
     p->basic.max_leaf =3D
diff --git a/xen/arch/x86/cpu/intel.c b/xen/arch/x86/cpu/intel.c
index 18b3c79dc97f..51a3d1c4b5f3 100644
--- a/xen/arch/x86/cpu/intel.c
+++ b/xen/arch/x86/cpu/intel.c
@@ -671,6 +671,7 @@ const struct cpu_dev __initconst_cf_clobber intel_cpu_d=
ev =3D {
=20
 void __init intel_init_arat(void)
 {
+    printk("%s:%d: opt_arat: %d, cpu_has_arat: %d\n", __func__, __LINE__, =
opt_arat, cpu_has_arat);
     if ( opt_arat && cpu_has_arat )
         setup_force_cpu_cap(X86_FEATURE_XEN_ARAT);
 }
diff --git a/xen/arch/x86/hpet.c b/xen/arch/x86/hpet.c
index 1ea8ae457424..7731654efa9b 100644
--- a/xen/arch/x86/hpet.c
+++ b/xen/arch/x86/hpet.c
@@ -280,9 +280,11 @@ static int hpet_msi_write(struct hpet_event_channel *c=
h, struct msi_msg *msg)
 {
     ch->msi.msg =3D *msg;
=20
+    printk("%s:%d: iommu_intremap: %d (iommu_intremap_off: %d), HPET_Tn_RO=
UTE(ch->idx): %#x\n", __func__, __LINE__, iommu_intremap, iommu_intremap_of=
f, HPET_Tn_ROUTE(ch->idx));
     if ( iommu_intremap !=3D iommu_intremap_off )
     {
         int rc =3D iommu_update_ire_from_msi(&ch->msi, msg);
+        printk("%s:%d: iommu_update_ire_from_msi rc: %d\n", __func__, __LI=
NE__, rc);
=20
         if ( rc < 0 )
             return rc;
@@ -658,6 +660,8 @@ void hpet_broadcast_resume(void)
     u32 cfg;
     unsigned int i, n;
=20
+    printk("%s:%d: hpet_events: %p\n", __func__, __LINE__, hpet_events);
+
     if ( !hpet_events )
         return;
=20
@@ -667,25 +671,35 @@ void hpet_broadcast_resume(void)
=20
     if ( num_hpets_used > 0 )
     {
+        printk("%s:%d: num_hpets_used: %d\n", __func__, __LINE__, num_hpet=
s_used);
         /* Stop HPET legacy interrupts */
         cfg &=3D ~HPET_CFG_LEGACY;
         n =3D num_hpets_used;
     }
     else if ( hpet_events->flags & HPET_EVT_DISABLE )
+    {
+        printk("%s:%d: hpet_events->flags: %#x\n", __func__, __LINE__, hpe=
t_events->flags);
         return;
+    }
     else
     {
         /* Start HPET legacy interrupts */
+        printk("%s:%d\n", __func__, __LINE__);
         cfg |=3D HPET_CFG_LEGACY;
         n =3D 1;
     }
=20
+    printk("%s:%d: cfg: %#x\n", __func__, __LINE__, cfg);
     hpet_write32(cfg, HPET_CFG);
=20
     for ( i =3D 0; i < n; i++ )
     {
+        printk("%s:%d: i:%d, hpet_events[i].msi.irq: %d, hpet_events[i].fl=
ags: %#x\n", __func__, __LINE__, i, hpet_events[i].msi.irq, hpet_events[i].=
flags);
         if ( hpet_events[i].msi.irq >=3D 0 )
-            __hpet_setup_msi_irq(irq_to_desc(hpet_events[i].msi.irq));
+        {
+            int ret =3D __hpet_setup_msi_irq(irq_to_desc(hpet_events[i].ms=
i.irq));
+            printk("%s:%d: i:%d, __hpet_setup_msi_irq ret: %d\n", __func__=
, __LINE__, i, ret);
+        }
=20
         /* set HPET Tn as oneshot */
         cfg =3D hpet_read32(HPET_Tn_CFG(hpet_events[i].idx));
@@ -694,6 +708,7 @@ void hpet_broadcast_resume(void)
         if ( !(hpet_events[i].flags & HPET_EVT_LEGACY) )
             cfg |=3D HPET_TN_FSB;
         hpet_write32(cfg, HPET_Tn_CFG(hpet_events[i].idx));
+        printk("%s:%d: i:%d, cfg: %#x\n", __func__, __LINE__, i, cfg);
=20
         hpet_events[i].next_event =3D STIME_MAX;
     }
diff --git a/xen/arch/x86/time.c b/xen/arch/x86/time.c
index fed30a919d2c..15113ebdfb6c 100644
--- a/xen/arch/x86/time.c
+++ b/xen/arch/x86/time.c
@@ -2646,6 +2646,7 @@ static int _disable_pit_irq(bool init)
 {
     int ret =3D 1;
=20
+    printk("%s:%d: using_pit: %d, cpu_has_apic: %d\n", __func__, __LINE__,=
 using_pit, cpu_has_apic);
     if ( using_pit || !cpu_has_apic )
         return -1;
=20
@@ -2655,8 +2656,10 @@ static int _disable_pit_irq(bool init)
      * XXX dom0 may rely on RTC interrupt delivery, so only enable
      * hpet_broadcast if FSB mode available or if force_hpet_broadcast.
      */
+    printk("%s:%d: cpuidle_using_deep_cstate: %d, boot_cpu_has(X86_FEATURE=
_XEN_ARAT): %d\n", __func__, __LINE__, cpuidle_using_deep_cstate(), boot_cp=
u_has(X86_FEATURE_XEN_ARAT));
     if ( cpuidle_using_deep_cstate() && !boot_cpu_has(X86_FEATURE_XEN_ARAT=
) )
     {
+        printk("%s:%d: init: %d\n", __func__, __LINE__, init);
         init ? hpet_broadcast_init() : hpet_broadcast_resume();
         if ( !hpet_broadcast_is_available() )
         {
diff --git a/xen/source b/xen/source
new file mode 120000
index 000000000000..945c9b46d684
--- /dev/null
+++ b/xen/source
@@ -0,0 +1 @@
+.
\ No newline at end of file

--NVNT4aiuL2yDymiY--

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

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

iQEzBAEBCAAdFiEEhrpukzGPukRmQqkK24/THMrX1ywFAmnOOEkACgkQ24/THMrX
1yyr3Af/YrnnApygs7blpY0N0dlpMs479gI7O4+mv0PjmEMajTt9+Lsb3DSowbPL
H88eI33brO740l/t1w1YYmOAZBBgKuZNbsjR1jzJLqjWkJ/l0SBe463DgEtfhaXa
Qo4H3mF2JHXqHh0V3TtcuqRxIHUIUziIV5LiWKiIrrc0X1gQU9CYUGo1reh5iW56
5Wvxd6eNnJiSXNMSt9B02OpIgBaT42SsIYMnrzEGtmZcw2h9whE3+/e+3fLCCx37
Vb93YeXPMo88H5yVKj2REb/9LR9FsfIX/eCoHjibfqBBMqeDWrBEmcVPXftkv9sI
Uhs/wUWR2sdA5cpUJyIi1Lq25OvzPA==
=px07
-----END PGP SIGNATURE-----

--DAxEOqDSYZNEEJoQ--


From xen-devel-bounces@lists.xenproject.org Thu Apr 02 09:43:03 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 02 Apr 2026 09:43:03 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1271412.1559578 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1w8EZn-0002md-Gx; Thu, 02 Apr 2026 09:42:59 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1271412.1559578; Thu, 02 Apr 2026 09:42: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 1w8EZn-0002mW-Cf; Thu, 02 Apr 2026 09:42:59 +0000
Received: by outflank-mailman (input) for mailman id 1271412;
 Thu, 02 Apr 2026 09:42:57 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <marmarek@invisiblethingslab.com>) id 1w8EZl-0002mQ-CO
 for xen-devel@lists.xenproject.org; Thu, 02 Apr 2026 09:42:57 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1w8EZk-004SXH-Kn
 for xen-devel@lists.xenproject.org; Thu, 02 Apr 2026 11:42:56 +0200
Received: from [10.42.69.9] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <marmarek@invisiblethingslab.com>)
 id 69ce3a18-e002-0a2a0a5209dd-0a2a4509d698-20
 for <xen-devel@lists.xenproject.org>; Thu, 02 Apr 2026 11:42:56 +0200
Received: from [103.168.172.154] (helo=fhigh-a3-smtp.messagingengine.com)
 by tlsNG-bad1c0.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.0)
 (envelope-from <marmarek@invisiblethingslab.com>)
 id 69ce3a1f-bf79-0a2a45090019-67a8ac9acb89-3
 for <xen-devel@lists.xenproject.org>; Thu, 02 Apr 2026 11:42:56 +0200
Received: from phl-compute-07.internal (phl-compute-07.internal [10.202.2.47])
 by mailfhigh.phl.internal (Postfix) with ESMTP id 2EF4514002A9;
 Thu,  2 Apr 2026 05:42:55 -0400 (EDT)
Received: from phl-frontend-03 ([10.202.2.162])
 by phl-compute-07.internal (MEProxy); Thu, 02 Apr 2026 05:42:55 -0400
Received: by mail.messagingengine.com (Postfix) with ESMTPA; Thu,
 2 Apr 2026 05:42:54 -0400 (EDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
Authentication-Results: eu.smtp.expurgate.cloud; dkim=pass header.s=fm1 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=fm1; t=1775122975;
	 x=1775209375; bh=8DISmlHTfzszmPnkDHG6TflZ1u3w587QEZOQbAgBg30=; b=
	EPKf+Oo//lp9G39e8mW7VzzopJHiOfrSrRtQZf1gXcdD9/8ADu3u3KMBidpK9rHi
	bqjljWm1cD6b96s6HfqU+sovQYZhjoalPnVmZZiTG6dZOoA2KxnkjnK+aW+pnBP9
	rBLjHo1bcWMszbnexFknKwdy1JY8Bn484xnPLC+E/Y/HOoPVuDu1ydP8zc0s7K5N
	0n0yNJ3Z7n2iHEiBGL4TgDiwDXDceJIhS5PB4aK1zpOmheZoXdx6EoQr3EneuWOT
	eN6WeqaKkR++bYKCLOkFyPnZDsMuozeIe4tcSeNu8zXQxsRRHR8kKPERzOWl4oVU
	QF9IZZu8yqVnRE2sBgRyzw==
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=
	1775122975; x=1775209375; bh=8DISmlHTfzszmPnkDHG6TflZ1u3w587QEZO
	QbAgBg30=; b=VwMhdCqGOsyUJWgBxffbw/0rY4PWAL4JiJEyflejTG68aZyCi6w
	TnHHgTB8YjaILIthSIeZPzhpWMl9a0X0+DpaipjgwkctcPlRP4y5igt76w7X9pH2
	fu3ySfMvFzpCaa5u5EFNvlNouWx4JC0EYXLDzvi/NofGP1f5lw8Y3cn4Gg1qzOYo
	VZlQ04kBa8qye1kz+SghFZHphQL6RsQRYuKevfxQ2Hk9ipaJ2OrvAUpaGpPyKeE2
	O3Bfjuo8zKZm2kP0ekGoypure1j0trvfp5Iuru2AqLJJW2gAgR8cMKMwjsHh6QNr
	nnvxUra7xj3CGvm7vy/+zJte+qnHHI8lP5A==
X-ME-Sender: <xms:HjrOaWx_h4J2boiBSHyyBAAtrScX4hlsLSlaMsf9doLue2l1XhKqxQ>
    <xme:HjrOaYToT0gQVez-AzfuefVdBopUr03bEe8uruOl-XrLEImjHOHq9bgzPsct3g5ro
    OhK7AXzoKluNcqDE7JRB-KO6hoiS2XTMsWA3cC6hVcDbBP_iQ>
X-ME-Received: <xmr:HjrOaV-O5ZojqlvE2HzM3JG-KPhNf-QhAyrWCzUq-m90ppbfuzLkinBE>
X-ME-Proxy-Cause: gggruggvucftvghtrhhoucdtuddrgeefhedrtddtgdehieelucetufdoteggodetrfdotf
    fvucfrrhhofhhilhgvmecuhfgrshhtofgrihhlpdfurfetoffkrfgpnffqhgenuceurghi
    lhhouhhtmecufedttdenucesvcftvggtihhpihgvnhhtshculddquddttddmnecujfgurh
    epfffhvfevuffkfhggtggujgesghdtreertddtjeenucfhrhhomhepofgrrhgvkhcuofgr
    rhgtiiihkhhofihskhhiqdfikphrvggtkhhiuceomhgrrhhmrghrvghksehinhhvihhsih
    gslhgvthhhihhnghhslhgrsgdrtghomheqnecuggftrfgrthhtvghrnhepgfduleetfeev
    hfefheeiteeliefhjefhleduveetteekveettddvgeeuteefjedunecuvehluhhsthgvrh
    fuihiivgeptdenucfrrghrrghmpehmrghilhhfrhhomhepmhgrrhhmrghrvghksehinhhv
    ihhsihgslhgvthhhihhnghhslhgrsgdrtghomhdpnhgspghrtghpthhtohepvddpmhhoug
    gvpehsmhhtphhouhhtpdhrtghpthhtohepjhgsvghulhhitghhsehsuhhsvgdrtghomhdp
    rhgtphhtthhopeigvghnqdguvghvvghlsehlihhsthhsrdigvghnphhrohhjvggtthdroh
    hrgh
X-ME-Proxy: <xmx:HjrOaXpBFfseIJjvy0tgW3YPS7l8fd_AHKZM7p6vjUSOavlFblUXEg>
    <xmx:HjrOaan6HhOoyiiT3nsTz2tW7Bkyhin9BIuVZwfAZjyT48ErDFkrtw>
    <xmx:HjrOaWJ7yDg8298kPXxMPaFwiOVhK8K25prM-mFd4lxAit-2CBxU2w>
    <xmx:HjrOaXxHI-LbioiuFS7uojkh1yc0GehoZe1WZNouPRsiXNunW8GxqQ>
    <xmx:HzrOabH1xkMfz8YeDoM1m7c4W1zLDAM19nRNlcUvd6MnheG_VAKm1Bbn>
Feedback-ID: i1568416f:Fastmail
Date: Thu, 2 Apr 2026 11:42:52 +0200
From: Marek =?utf-8?Q?Marczykowski-G=C3=B3recki?= <marmarek@invisiblethingslab.com>
To: Jan Beulich <jbeulich@suse.com>
Cc: xen-devel <xen-devel@lists.xenproject.org>
Subject: Re: IOMMU faults after S3
Message-ID: <ac46HK_KiUaLdK4N@mail-itl>
References: <acZZmGXIJlmN3KGm@mail-itl>
 <e8bbaae2-5cff-4549-9f27-fbbda7346f60@suse.com>
 <090b8b8f-141b-4a24-92eb-879c0a0c73e1@suse.com>
 <ac2nibFfvGm_7elv@mail-itl>
 <933a3e95-33d2-4e20-a4d5-2d8b20c2da7f@suse.com>
 <ac4kCq87SQSc6ddV@mail-itl>
 <aa6910f1-365a-4534-b229-9730b3aede02@suse.com>
 <97bfb299-a465-48a3-a036-f217de683c2c@suse.com>
MIME-Version: 1.0
Content-Type: multipart/signed; micalg=pgp-sha256;
	protocol="application/pgp-signature"; boundary="mx62jTLu5jLR+11M"
Content-Disposition: inline
In-Reply-To: <97bfb299-a465-48a3-a036-f217de683c2c@suse.com>
X-purgate-ID: tlsNG-bad1c0/1775122976-5475A152-DA4A2FFE/0/0
X-purgate-type: clean
X-purgate-size: 2580


--mx62jTLu5jLR+11M
Content-Type: text/plain; protected-headers=v1; charset=utf-8
Content-Disposition: inline
Content-Transfer-Encoding: quoted-printable
Date: Thu, 2 Apr 2026 11:42:52 +0200
From: Marek =?utf-8?Q?Marczykowski-G=C3=B3recki?= <marmarek@invisiblethingslab.com>
To: Jan Beulich <jbeulich@suse.com>
Cc: xen-devel <xen-devel@lists.xenproject.org>
Subject: Re: IOMMU faults after S3

On Thu, Apr 02, 2026 at 10:47:53AM +0200, Jan Beulich wrote:
> On 02.04.2026 10:39, Jan Beulich wrote:
> > On 02.04.2026 10:08, Marek Marczykowski-G=C3=B3recki wrote:
> >> The xl dmesg output (from MTL this time):
> >>
> >>     (XEN) [  123.477511] Entering ACPI S3 state.
> >>     (XEN) [18446743903.571842] _disable_pit_irq:2649: using_pit: 0, cp=
u_has_apic: 1
> >>     (XEN) [18446743903.571856] _disable_pit_irq:2659: cpuidle_using_de=
ep_cstate: 1, boot_cpu_has(X86_FEATURE_XEN_ARAT): 0
> >=20
> > XEN_ARAT being off is the one odd aspect here. That'll want tracking do=
wn
> > separately. As per xen-cpuid output (below) ARAT is available.
>=20
> For this you may want to also add logging to intel_init_arat(): Since opt=
_arat
> can be false only due to command line option use, it can only be the func=
tion
> not being called (which looks impossible on plain staging code), or cpu_h=
as_arat
> being false despite the xen-cpuid output that you supplied earlier (inexp=
licable
> as well, at least for now).

Hm, I got this:

    (XEN) [   11.403340] intel_init_arat:674: opt_arat: 1, cpu_has_arat: 0

so, cpu_has_arat=3D0 ...
next lines are those, to hint when it happened in the boot process:

    (XEN) [   11.409754] mwait-idle: MWAIT substates: 0x11112020
    (XEN) [   11.416130] mwait-idle: v0.4.1 model 0xaa
    (XEN) [   11.422396] mwait-idle: lapic_timer_reliable_states 0x2

Looks like calculate_host_policy() runs much later...


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

--mx62jTLu5jLR+11M
Content-Type: application/pgp-signature; name=signature.asc

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

iQEzBAEBCAAdFiEEhrpukzGPukRmQqkK24/THMrX1ywFAmnOOhwACgkQ24/THMrX
1yxpOAf+M+z16dMhGpvaOF7lRARXqYIX2Ln+S+KJG2vz60SjG/NPwZGR/YB6QtOI
JxXNxyfyOT9FTOUOG2jqBRP+JMoSmwTkebm1Y/fCLDPggJQ8cLXTjSOlRpyYR1bf
ssIME+HAgBgy6fWxAAeGPQWA9vmW62QdJvyOf0KQtOQazpyM8tYcZjjMux0wJXMr
dEiq3VpbMI0wB0HfQQAUYLzYSV64VKQc1SEhFsLjKM5U3BJ5fsbKSfia2na/u4YS
UDe0TPXRS3uHLdcQPOmrwfiMrwrfG/WWsywLlCozAwCJb0ga8qJO6J7Jj4IvTwu/
5N/1Aq5P7TPuNQsAX13+0d3urQ49fQ==
=Wwtv
-----END PGP SIGNATURE-----

--mx62jTLu5jLR+11M--


From xen-devel-bounces@lists.xenproject.org Thu Apr 02 09:59:02 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 02 Apr 2026 09:59:02 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1271437.1559602 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1w8EpF-0004rl-08; Thu, 02 Apr 2026 09:58:57 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1271437.1559602; Thu, 02 Apr 2026 09:58: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 1w8EpE-0004re-TB; Thu, 02 Apr 2026 09:58:56 +0000
Received: by outflank-mailman (input) for mailman id 1271437;
 Thu, 02 Apr 2026 09:58:56 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <bernhard.kaindl@citrix.com>) id 1w8EpD-0004rY-S1
 for xen-devel@lists.xenproject.org; Thu, 02 Apr 2026 09:58:56 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1w8EpB-004b1f-MO
 for xen-devel@lists.xenproject.org; Thu, 02 Apr 2026 11:58:55 +0200
Received: from [10.42.69.8] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <bernhard.kaindl@citrix.com>)
 id 69ce3dd2-5cb7-0a2a0a5109dd-0a2a4508b1ae-34
 for <xen-devel@lists.xenproject.org>; Thu, 02 Apr 2026 11:58:55 +0200
Received: from [160.101.131.8] (helo=na1pdmzitismtp01.tibco.com)
 by tlsNG-c1860d.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.0)
 (envelope-from <bernhard.kaindl@citrix.com>)
 id 69ce3ddd-fab6-0a2a45080019-a0658308d9ec-3
 for <xen-devel@lists.xenproject.org>; Thu, 02 Apr 2026 11:58:54 +0200
Received: from debian.eng.citrite.net (unknown [10.113.40.46])
 by na1pdmzitismtp01.tibco.com (Postfix) with ESMTP id BF8514270A5C;
 Thu,  2 Apr 2026 05:58:15 -0400 (EDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-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: Bernhard Kaindl <bernhard.kaindl@citrix.com>
To: bernhard.kaindl@gmail.com,
	xen-devel@lists.xenproject.org
Cc: Bernhard Kaindl <bernhard.kaindl@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.pau@citrix.com>,
	Stefano Stabellini <sstabellini@kernel.org>
Subject: [PATCH] docs: Add Draft Design Documentation for NUMA-aware claim sets
Date: Thu,  2 Apr 2026 10:57:35 +0100
Message-Id: <40bc3d33bda11ac8526a50e8165aef1e8642c719.1775123578.git.bernhard.kaindl@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-c1860d/1775123934-F6D4B737-C0001AD6/0/0
X-purgate-type: clean
X-purgate-size: 97289

The NUMA-aware claims v4 series allowed a domain to claim memory on a
single NUMA node, but not across multiple nodes.

There was no strong practical need for multi-node claims at the time,
as customers generally saw the best performance when domains were
aligned 1:1 with NUMA nodes.

Jan hinted that a multi-node implementation would look quite different,
and also Roger Pau Monné proposed this design earlier:
https://lists.xenproject.org/archives/html/xen-devel/2025-06/msg00484.html

Quote:

> 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.

This is a significant change, and so this design document is intended to
provide a reference for the rationale behind the design decisions, and
to support review of the implementation.

It is integrated into the Sphinx documentation for the Xen hypervisor
below ./docs/designs, and is structured in a way that allows readers
to easily navigate to the sections that are most relevant to them.

It uses Sphinx's integrated C domain, which makes it possible to create
surprisingly comprehensive documentation for C code, including function
signatures, parameters, return values and types. For reference:
https://www.sphinx-doc.org/en/master/usage/domains/c.html

Suggested-by: Jan Beulich <jbeulich@suse.com>
Suggested-by: Roger Pau Monné <roger.pau@citrix.com>
Signed-off-by: Bernhard Kaindl <bernhard.kaindl@citrix.com>

--
Dear reviewers,

for convenience, the rendered design document is available here for review:
https://bernhard-xen.readthedocs.io/en/claim-sets-v1-design/designs/claims/

The Sphinx site can be built and viewed locally with the following commands:

git pull git@gitlab.com:bernhardkaindl/xen.git claim-sets-v1-design

make -C docs sphinx-env-build # xdg-open docs/sphinx/html/index.html
or start a minimal HTTP server: (cd docs/sphinx/html; python -m http.server)

The specific acknowledgements are included in the design document.
Many thanks to everyone who has contributed to the previous work and
implementation of this feature, and to everyone who will review it.

Best regards,

  Bernhard
---
 .readthedocs.yaml                             |   4 +-
 docs/.gitignore                               |   1 +
 docs/Makefile                                 |  12 +-
 docs/conf.py                                  |  36 +-
 docs/designs/claims/accounting.rst            | 270 ++++++++++
 docs/designs/claims/design.rst                | 330 ++++++++++++
 docs/designs/claims/edge-cases.rst            |  24 +
 docs/designs/claims/history.rst               |  82 +++
 docs/designs/claims/implementation.rst        | 502 ++++++++++++++++++
 docs/designs/claims/index.rst                 |  43 ++
 docs/designs/claims/installation.rst          | 122 +++++
 docs/designs/claims/invariants.mmd            |  36 ++
 docs/designs/claims/protection.rst            |  41 ++
 docs/designs/claims/retirement.rst            |  70 +++
 docs/designs/claims/usecases.rst              |  39 ++
 docs/designs/index.rst                        |  16 +
 docs/designs/launch/hyperlaunch.rst           |   4 +-
 .../dom/DOMCTL_claim_memory-data.mmd          |  43 ++
 .../dom/DOMCTL_claim_memory-seqdia.mmd        |  23 +
 .../dom/DOMCTL_claim_memory-workflow.mmd      |  23 +
 docs/guest-guide/dom/DOMCTL_claim_memory.rst  |  81 +++
 docs/guest-guide/dom/index.rst                |  14 +
 docs/guest-guide/index.rst                    |  23 +
 docs/guest-guide/mem/XENMEM_claim_pages.rst   | 100 ++++
 docs/guest-guide/mem/index.rst                |  12 +
 docs/hypervisor-guide/index.rst               |   7 +
 docs/index.rst                                |   7 +-
 27 files changed, 1955 insertions(+), 10 deletions(-)
 create mode 100644 docs/designs/claims/accounting.rst
 create mode 100644 docs/designs/claims/design.rst
 create mode 100644 docs/designs/claims/edge-cases.rst
 create mode 100644 docs/designs/claims/history.rst
 create mode 100644 docs/designs/claims/implementation.rst
 create mode 100644 docs/designs/claims/index.rst
 create mode 100644 docs/designs/claims/installation.rst
 create mode 100644 docs/designs/claims/invariants.mmd
 create mode 100644 docs/designs/claims/protection.rst
 create mode 100644 docs/designs/claims/retirement.rst
 create mode 100644 docs/designs/claims/usecases.rst
 create mode 100644 docs/designs/index.rst
 create mode 100644 docs/guest-guide/dom/DOMCTL_claim_memory-data.mmd
 create mode 100644 docs/guest-guide/dom/DOMCTL_claim_memory-seqdia.mmd
 create mode 100644 docs/guest-guide/dom/DOMCTL_claim_memory-workflow.mmd
 create mode 100644 docs/guest-guide/dom/DOMCTL_claim_memory.rst
 create mode 100644 docs/guest-guide/dom/index.rst
 create mode 100644 docs/guest-guide/mem/XENMEM_claim_pages.rst
 create mode 100644 docs/guest-guide/mem/index.rst

diff --git a/.readthedocs.yaml b/.readthedocs.yaml
index d3aff7662ebf..f6dbb4ffa86f 100644
--- a/.readthedocs.yaml
+++ b/.readthedocs.yaml
@@ -12,7 +12,9 @@ build:
   jobs:
     post_install:
       # Instead of needing a separate requirements.txt
-      - python -m pip install --upgrade --no-cache-dir sphinx-rtd-theme
+      - >
+        python -m pip install --upgrade --no-cache-dir sphinx-rtd-theme
+        sphinxcontrib-mermaid
 
 sphinx:
   configuration: docs/conf.py
diff --git a/docs/.gitignore b/docs/.gitignore
index c3ce50335ae6..80c3d14ede69 100644
--- a/docs/.gitignore
+++ b/docs/.gitignore
@@ -1,3 +1,4 @@
+/.sphinx/
 /figs/*.png
 /html/
 /man/xl.cfg.5.pod
diff --git a/docs/Makefile b/docs/Makefile
index 8e68300e3b44..47e9f366ce7a 100644
--- a/docs/Makefile
+++ b/docs/Makefile
@@ -55,6 +55,16 @@ build: html txt pdf man-pages figs
 sphinx-html:
 	sphinx-build -b html . sphinx/html
 
+# Sphinx build target that sets up a virtual environment and installs
+# dependencies. This is intended for use by developers who want to build
+# the Sphinx documentation locally. Keep it the dependencies in sync with
+# .readthedocs.yaml.
+sphinx-env-build:
+	if [ ! -d .sphinx ]; then python -m venv .sphinx; fi
+	. .sphinx/bin/activate && \
+	pip install sphinx-rtd-theme sphinxcontrib-mermaid && \
+	$(MAKE) sphinx-html
+
 .PHONY: html
 html: $(DOC_HTML) html/index.html
 
@@ -76,7 +86,7 @@ pdf: $(DOC_PDF)
 clean: clean-man-pages
 	$(MAKE) -C figs clean
 	rm -rf .word_count *.aux *.dvi *.bbl *.blg *.glo *.idx *~
-	rm -rf *.ilg *.log *.ind *.toc *.bak *.tmp core
+	rm -rf *.ilg *.log *.ind *.toc *.bak *.tmp core .sphinx
 	rm -rf html txt pdf sphinx/html
 
 .PHONY: distclean
diff --git a/docs/conf.py b/docs/conf.py
index 2fb8bafe6589..5e51df6a21b9 100644
--- a/docs/conf.py
+++ b/docs/conf.py
@@ -61,7 +61,33 @@ needs_sphinx = '1.4'
 # Add any Sphinx extension module names here, as strings. They can be
 # extensions coming with Sphinx (named 'sphinx.ext.*') or your custom
 # ones.
-extensions = []
+extensions = ["sphinx.ext.autosectionlabel"]
+
+try:
+    import sphinxcontrib.mermaid
+except ImportError:
+    sys.stderr.write("""
+        Warning: The Sphinx 'sphinxcontrib.mermaid' extension was not found.
+        Make sure you have the extension installed to render mermaid diagrams
+        in the documentation. On Debian-based systems, you can install it with:
+        sudo apt install python3-sphinxcontrib-mermaid\n
+        In any case, after installing pipx, you can install the latest versions
+        of sphinx and the needed extras in an isolated environment with:\n
+        pipx install sphinx
+        pipx inject sphinx sphinxcontrib-mermaid sphinx-rtd-theme\n
+        """)
+else:
+    extensions.append("sphinxcontrib.mermaid")
+
+# Extension options
+
+# sphinxcontrib.mermaid
+mermaid_init_js = """
+mermaid.initialize({ startOnLoad: true });
+"""
+
+# sphinx.ext.autosectionlabel
+autosectionlabel_prefix_document = True
 
 # Add any paths that contain templates here, relative to this directory.
 templates_path = ['_templates']
@@ -82,7 +108,7 @@ language = 'en'
 # List of patterns, relative to source directory, that match files and
 # directories to ignore when looking for source files.
 # This pattern also affects html_static_path and html_extra_path.
-exclude_patterns = [u'sphinx/output', 'Thumbs.db', '.DS_Store']
+exclude_patterns = [u'sphinx/output', 'Thumbs.db', '.DS_Store', '.sphinx']
 
 # The name of the Pygments (syntax highlighting) style to use.
 pygments_style = None
@@ -99,7 +125,11 @@ highlight_language = 'none'
 try:
     import sphinx_rtd_theme
     html_theme = 'sphinx_rtd_theme'
-    html_theme_path = [sphinx_rtd_theme.get_html_theme_path()]
+    # The sphinx_rtd_theme package versions prior to 3.0.0 require the theme
+    # path to be added to html_theme_path, while newer are warning about it:
+    # https://sphinx-rtd-theme.readthedocs.io/en/stable/changelog.html#deprecations
+    if sphinx_rtd_theme.__version__.split('.') < ['3', '0', '0']:
+        html_theme_path = [sphinx_rtd_theme.get_html_theme_path()]
 except ImportError:
     sys.stderr.write('Warning: The Sphinx \'sphinx_rtd_theme\' HTML theme was not found. Make sure you have the theme installed to produce pretty HTML output. Falling back to the default theme.\n')
 
diff --git a/docs/designs/claims/accounting.rst b/docs/designs/claims/accounting.rst
new file mode 100644
index 000000000000..79843406d92a
--- /dev/null
+++ b/docs/designs/claims/accounting.rst
@@ -0,0 +1,270 @@
+.. SPDX-License-Identifier: CC-BY-4.0
+
+Claims Accounting
+-----------------
+
+.. contents:: Table of Contents
+   :local:
+
+.. note::
+   Claims accounting state is only updated while holding :c:expr:`heap_lock`.
+   See :ref:`designs/claims/accounting:Locking of claims accounting`
+   for details on the locks used to protect claims accounting state.
+
+This section formalizes the internal state and invariants that Xen must
+maintain to ensure correctness.
+
+For readers following the design in order, the preceding sections are:
+
+1. :doc:`/designs/claims/design` introduces the overall model and goals.
+2. :doc:`/designs/claims/installation` explains how claim sets are installed.
+3. :doc:`/designs/claims/protection` describes how claimed memory is
+   protected during allocation.
+4. :doc:`/designs/claims/retirement` explains how claims are retired as
+   allocations succeed.
+
+Overview
+^^^^^^^^
+
+.. table:: Table 1: Claims accounting - All accesses, Aggregate state,
+           and invariants protected by :c:expr:`heap_lock`.
+   :widths: auto
+
+   ============ ======================================= =======================
+   Level           Claims must be lower or equal to       Available memory
+   ============ ======================================= =======================
+   Node         :c:expr:`node_outstanding_claims[node]` :c:expr:`node_avail_pages[node]`
+                  Aggregate state:
+
+                  Over all domains:
+
+                  SUM(:c:expr:`domain.claims[node]`)
+   Global       :c:expr:`outstanding_claims` =          :c:expr:`total_avail_pages` =
+                 Aggregate state:                        Aggregate state:
+
+                 SUM() over all domains:                 SUM() over all nodes:
+
+                 :c:expr:`domain.global_claims` +        :c:expr:`node_avail_pages[]`
+                 :c:expr:`domain.node_claims`
+
+                 Also, the sum over all nodes:
+
+                 :c:expr:`node_outstanding_claims[*]`
+   Dom global   :c:expr:`domain.global_claims`          :c:expr:`total_avail_pages`
+   Dom per-node :c:expr:`domain.claims[node]`           :c:expr:`node_avail_pages[node]`
+   Dom slow tot :c:expr:`domain.global_claims` +        :c:expr:`total_avail_pages`
+                SUM(:c:expr:`domain.claims[node]`)
+   Aggregate:   :c:expr:`domain.node_claims` =
+                SUM(:c:expr:`domain.claims[node]`)
+   Domain total :c:expr:`domain.global_claims`          :c:expr:`total_avail_pages`
+                + :c:expr:`domain.node_claims`
+   Domain mem   :c:expr:`domain_tot_pages(domain)`      Invariant: must be
+                 - plus :c:expr:`domain.global_claims`   lower or equal to
+
+                 + plus :c:expr:`domain.node_claims`     :c:expr:`domain.max_pages`
+   ============ ======================================= =======================
+
+Claims accounting state
+^^^^^^^^^^^^^^^^^^^^^^^
+
+When installing claims and retiring them during allocation, the page
+allocator updates:
+
+:c:expr:`domain.global_claims`
+  The domain's global claim.
+
+:c:expr:`domain.claims[MAX_NUMNODES]`
+  The domain's claims for specific NUMA nodes, indexed by node ID.
+
+Aggregate state
+^^^^^^^^^^^^^^^
+
+Xen also maintains aggregate state for fast checks in allocator hot paths:
+
+:c:expr:`outstanding_claims`:
+  The sum of all claims across all domains for global and node claims.
+
+:c:expr:`node_outstanding_claims[MAX_NUMNODES]`:
+  The sum of all claims across all domains for specific NUMA nodes, indexed
+  by node ID, used for efficient checks in the allocator hot paths to ensure
+  that node claims do not exceed the available memory on the respective node.
+
+:c:expr:`domain.node_claims`:
+  The total of the domain's node claims,
+  equal to the sum of :c:expr:`domain.claims[MAX_NUMNODES]` for all nodes
+  and used for efficient checks in the allocator.
+
+:c:expr:`domain_tot_pages(domain)`
+  The total pages allocated to the domain, used for validating that claims do
+  not exceed the domain's maximum page limits. This is the sum of the
+  domain's global claim and node claims, i.e. :c:expr:`domain.global_claims`
+  + :c:expr:`domain.node_claims`.
+
+Claims accounting invariants
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+Xen must maintain the following invariants:
+
+- Global claims:
+    :c:expr:`outstanding_claims` :math:`\le` :c:expr:`total_avail_pages`
+
+- Node claims:
+    :c:expr:`node_outstanding_claims[alloc_node]` :math:`\le`
+    :c:expr:`node_avail_pages[alloc_node]`
+- Domain claims:
+    :c:expr:`domain.global_claims` + :c:expr:`domain.node_claims` +
+    :c:expr:`domain_tot_pages(domain)` :math:`\le` :c:expr:`domain.max_pages`
+
+   See :doc:`retirement` for details on the latter invariant.
+
+Locking of claims accounting
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+.. c:alias:: domain.page_alloc_lock
+
+.. c:var:: spinlock_t heap_lock
+
+   Lock for all heap operations including claims. It protects the claims state
+   and invariants from concurrent updates and ensures that checks in the
+   allocator hot paths see a consistent view of the claims state.
+
+   If :c:expr:`domain.page_alloc_lock` is needed to check
+   :c:expr:`domain_tot_pages(domain)` on top of new claims against
+   :c:expr:`domain.max_pages` for the domain, it needs to be taken
+   before :c:expr:`heap_lock` for consistent locking order to avoid deadlocks.
+
+Variables and data structures
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+.. c:type:: uint8_t nodeid_t
+
+   Type for :term:`NUMA node` IDs. The :c:expr:`memflags` variable of
+   :c:expr:`xc_populate_physmap()` and related functions for populating
+   the :term:`physmap` allocates 8 bits in the flags for the node ID, which
+   limits the theoretical maximum value of ``CONFIG_NR_NUMA_NODES`` at 254,
+   which is far beyond the current maximum of 64 supported by Xen and should
+   be sufficient for the foreseeable future.
+
+.. c:macro:: MAX_NUMNODES
+
+   The maximum number of NUMA nodes supported by Xen. Used for validating
+   node IDs in the :c:expr:`memory_claim_t` entries of claim sets.
+   When Xen is built without NUMA support, it is 1.
+   The default on x86_64 is 64 which is sufficient for current hardware and
+   allows for efficient storage of e.g. the :c:expr:`node_online_map` for
+   online nodes and :c:expr:`domain.node_affinity` in a single 64-bit value,
+   and in the :c:expr:`domain.claims[MAX_NUMNODES]` array.
+
+   ``xen/arch/Kconfig`` limits the maximum number of NUMA nodes to 64. While
+   Xen can be compiled for up to 254 nodes, configuring machines to split
+   the installed memory into more than 64 nodes would be unusual.
+   For example, dual-socket servers, even when using multiple chips per CPU
+   package should typically be configured for 2 NUMA nodes by default.
+
+.. c:var:: long total_avail_pages
+
+   Total available pages in the system, including both free and claimed pages.
+   This is used for validating that global claims do not exceed the total
+   available memory in the system.
+
+.. c:var:: long outstanding_claims
+
+   The total global claims across all domains. This is maintained for
+   efficient checks in the allocator hot paths to ensure the global claims
+   invariant that total claims do not exceed the total available memory is not
+   violated.
+
+.. c:var:: long node_avail_pages[MAX_NUMNODES]
+
+   Available pages for each NUMA node, including both free and claimed pages.
+   This is used for validating that node claims do not exceed the available
+   memory on the respective NUMA node.
+
+.. c:var:: long node_outstanding_claims[MAX_NUMNODES]
+
+   The total claims across all domains for each NUMA node, indexed by node
+   ID. This is maintained for efficient checks in the allocator hot paths.
+
+.. c:macro:: domain_tot_pages(domain)
+
+   The total pages allocated to the domain, used for validating that this
+   allocation and the domain's claims do not exceed :c:expr:`domain.max_pages`.
+
+.. c:struct:: domain
+
+   .. c:member:: unsigned int global_claims
+
+      The domain's global claim, representing the number of pages claimed
+      globally for the domain.
+
+   .. c:member:: unsigned int node_claims
+
+      The total of the domain's node claims, equal to the sum of
+      :c:expr:`claims` for all nodes.
+      It is maintained for efficient checks in the allocator hot paths
+      without needing to sum over the per-node claims each time.
+
+   .. c:member:: unsigned int claims[MAX_NUMNODES]
+
+      The domain's claims for each :term:`NUMA node`, indexed by node ID.
+
+      As :c:expr:`domain` is allocated using a dedicated page for each domain,
+      this allows for efficient and fast storage with direct indexing without
+      consuming any additional memory for an additional allocation.
+
+      The page allocated for struct :c:expr:`domain` is large enough
+      to accommodate this array several times, even beyond the current
+      :c:expr:`MAX_NUMNODES` limit of 64, so it should be sufficient even
+      for future expansion of the maximum number of supported NUMA nodes
+      if needed. The allocation has a build-time assertion for safety to
+      ensure that struct :c:expr:`domain` fits within the allocated page.
+
+      The sum of these claims is stored in :c:expr:`domain.node_claims`
+      for efficient checks in the allocator hot paths which need to know
+      the total number of node claims for the :term:`domain`.
+
+   .. c:member:: unsigned int max_pages
+
+      The maximum number of pages the domain is allowed to claim, set at
+      domain creation time.
+
+   .. c:member:: rspinlock_t page_alloc_lock
+
+      Lock for checking :c:expr:`domain_tot_pages(domain)` on top of new claims
+      against :c:expr:`domain.max_pages` when installing these new claims.
+      This is a recursive spinlock to allow for nested calls into the allocator
+      while holding it, such as when retiring claims during page allocation.
+      It is taken before :c:expr:`heap_lock` when installing claims to ensure a
+      consistent locking order and may not be taken while holding
+      :c:expr:`heap_lock` to avoid deadlocks.
+
+   .. c:member:: nodemask_t node_affinity
+
+      A :c:expr:`nodemask_t` representing the set of NUMA nodes the domain
+      is affine to. This is used for efficient checks in the allocator hot
+      paths to quickly get the set of nodes a domain is affine to for
+      memory allocation decisions.
+
+.. c:type:: nodemask_t
+
+   A bitmap representing a set of NUMA nodes, used for status information
+   like :c:expr:`node_online_map` and the :c:expr:`domain.node_affinity`
+   and to track which nodes are online and which nodes are in a domain's
+   node affinity.
+
+.. c:var:: nodemask_t node_online_map
+
+   A bitmap representing which NUMA nodes are currently online in the system.
+   This is used for validating that claims are only made for online nodes and
+   for efficient checks in the allocator hot paths to quickly determine which
+   nodes are online. Currently, Xen does not support hotplug of NUMA nodes,
+   so this is set at boot time based on the platform firmware configuration
+   and does not change at runtime.
+
+Claims Accounting Diagram
+^^^^^^^^^^^^^^^^^^^^^^^^^
+
+This diagram illustrates the claims accounting state and the invariants:
+
+.. mermaid:: invariants.mmd
+  :caption: Diagram: Claims accounting state and invariants
diff --git a/docs/designs/claims/design.rst b/docs/designs/claims/design.rst
new file mode 100644
index 000000000000..8d313da2387e
--- /dev/null
+++ b/docs/designs/claims/design.rst
@@ -0,0 +1,330 @@
+.. SPDX-License-Identifier: CC-BY-4.0
+
+#############
+Claims Design
+#############
+
+.. contents:: Table of Contents
+    :backlinks: entry
+    :local:
+
+************
+Introduction
+************
+
+Xen's page allocator supports a :term:`claims` API that allows privileged
+:term:`domain builders` to reserve an amount of available memory before
+:term:`populating` the :term:`guest physical memory` of new :term:`domains`
+they are creating, configuring and building.
+
+These reservations are called :term:`claims`. They ensure that the claimed
+memory remains available for the :term:`domains` when allocating it, even
+if other :term:`domains` are allocating memory at the same time.
+
+:term:`Installing claims` is a privileged operation performed by
+:term:`domain builders` before they populate the :term:`guest physical memory`.
+This prevents other :term:`domains` from allocating memory earmarked
+for :term:`domains` under construction. Xen maintains the per-domain
+claim state for pages that are claimed but not yet allocated.
+
+When claim installation succeeds, Xen updates the claim state to reflect
+the new targets and protects the claimed memory until it is allocated or
+the claim is released. As Xen allocates pages for the domain, claims are
+retired by reducing the claim state by the size of each allocation.
+
+************
+Design Goals
+************
+
+The design's primary goals are:
+
+1. Allow :term:`domain builders` to claim memory
+   on multiple :term:`NUMA nodes` using a :term:`claim set` atomically.
+
+2. Preserve the existing :c:expr:`XENMEM_claim_pages` hypercall command
+   for compatibility with existing :term:`domain builders` and its legacy
+   semantics, while introducing a new, unrestricted hypercall command for
+   new use cases such as NUMA-aware claim sets.
+
+3. Global claims are supported for compatibility with existing domain builders
+   and for use cases where a flexible claim that can be satisfied from any node
+   is desirable, such as on UMA machines or as a fallback for memory that comes
+   available on any node. This means we cannot remove or replace the legacy
+   global claim call nor the needed variables maintaining the global claim
+   state. They are still very much needed: claims are not just for NUMA use
+   cases, but for :term:`parallel domain builds` in general.
+
+   Only on UMA machines is a global claim the same as a claim on node 0,
+   but the same is not true for NUMA machines, where global claims can claim
+   more memory than any single node, and the global claim can be used as a
+   flexible fallback for claiming memory on any node, which can be useful
+   when preferred NUMA node(s) should be claimed, but may have insufficient
+   free memory at the time of claim installation, and the global claim can
+   ensure that the shortfall is available from any node.
+
+4. Use fast allocation-time claims protection in the allocator's hot paths
+   to protect claimed memory from parallel allocations from other domain
+   builders in case of parallel domain builds, and to protect claimed
+   memory from allocations from already running domains.
+
+***************
+Design Overview
+***************
+
+The legacy :ref:`XENMEM_claim_pages` hypercall is superseded by
+:c:expr:`XEN_DOMCTL_claim_memory`. This hypercall installs a :term:`claim set`.
+It is an array of :c:expr:`memory_claim_t` entries, where each entry specifies
+a page count and a target: either a specific NUMA node ID or a special selector
+(for example, a global or flexible claim).
+
+Like legacy claims, claim sets are validated and installed under
+:c:expr:`domain.page_alloc_lock` and :c:expr:`heap_lock`: Either the entire
+set is accepted, or the request fails with no side effects.  Repeated calls
+to install claims replace any existing claims for the domain rather than
+accumulating.
+
+As installing claim sets after allocations is not a supported use case,
+the legacy behaviour of subtracting existing allocations from installed
+claims is somewhat surprising and counterintuitive, and page exchanges
+make incremental per-node tracking of already-allocated pages on a per-node
+basis difficult. Therefore, claim sets do not retain the legacy behaviour of
+subtracting existing allocations, optionally on a per-node basis, from the
+installed claims across the individual claim set entries.
+
+Summary:
+
+- Legacy domain builders can continue to use the previous (now deprecated)
+  :c:expr:`XENMEM_claim_pages` hypercall command to install single-node claims
+  with the legacy semantics and, aside from improvements or fixes to global
+  claims in general, observe no changes in their behaviour.
+- Updated domain builders can take advantage of claim sets to install
+  NUMA-aware :term:`claims` on multiple :term:`NUMA nodes` and/or globally
+  in a single step.
+
+For readers following the design in order, the next sections cover the
+following topics:
+
+1. :doc:`/designs/claims/installation` explains how claim sets are installed.
+2. :doc:`/designs/claims/protection` describes how claimed memory is
+   protected during allocation.
+3. :doc:`/designs/claims/retirement` explains how claims are retired as
+   allocations succeed.
+4. :doc:`/designs/claims/accounting` describes the accounting model that
+   underpins those steps.
+
+********************
+Key design decisions
+********************
+
+.. glossary::
+
+ :c:expr:`node_outstanding_claims[MAX_NUMNODES]`
+  Tracks the sum of all claims on a node. :c:expr:`get_free_buddy()` checks
+  it before scanning zones on a node, so claimed memory is protected from
+  other allocations.
+
+ :c:expr:`claims_retire_allocation()`
+  Retires claims in order: First, it retires claims from the allocation node's
+  claim. If this is not sufficient, it retires claims from the global claim as
+  a fallback. This allows the global claim to be used as a flexible fallback
+  for claiming allocations on any node. Finally, remaining claims are retired
+  from other nodes to prevent the increase of :c:expr:`domain_tot_pages(domain)`
+  caused by the allocation on top of
+  :c:expr:`domain.global_claims` and :c:expr:`domain.node_claims` to exceed
+  :c:expr:`domain.max_pages`.
+
+ :c:expr:`domain.global_claims` (formerly :c:expr:`domain.outstanding_claims`)
+  Support for :term:`global claims` is maintained for two reasons: first,
+  for compatibility with existing domain builders, and second, for use cases
+  where a flexible claim that can be satisfied from any node is desirable.
+
+  When the preferred NUMA node(s) for a domain do not have sufficient free
+  memory to satisfy the domain's memory requirements, global claims provide
+  a flexible fallback for the memory shortfall from the preferred node(s) that
+  can be satisfied from any available node.
+
+  In this case, :term:`domain builders` can exploit a combination of passing
+  the preferred node to :c:expr:`xc_domain_populate_physmap()` and
+  :term:`NUMA node affinity` to steer allocations towards the preferred NUMA
+  node(s), while letting the global claim ensure that the shortfall is
+  available.
+
+  This allows the domain builder to define a set of desired NUMA nodes to
+  allocate from and even specify which nodes to prefer for an allocation,
+  but the claim for the shortfall is flexible, not specific to any node.
+
+*********
+Non-goals
+*********
+
+Legacy behaviours
+=================
+
+Installing claims is a privileged operation performed by domain builders
+before they populate guest memory. As such, tracking previous allocations
+is not in scope for claims.
+
+For the following reasons, claim sets do not retain the legacy behaviour
+of subtracting existing allocations from installed claims:
+
+- Xen does not currently maintain a ``d->node_tot_pages[node]`` count,
+  and the hypercall to exchange extents of memory with new memory makes
+  such accounting relatively complicated.
+
+- The legacy behaviour is somewhat surprising and counterintuitive.
+  Because installing claims after allocations is not a supported use case,
+  subtracting existing allocations at installation time is unnecessary.
+
+- Claim sets are a new API and can provide more intuitive semantics
+  without subtracting existing allocations from installed claims. This
+  also simplifies the implementation and makes it easier to maintain.
+
+Versioned hypercall
+===================
+
+The :term:`domain builders` using the :c:expr:`XEN_DOMCTL_claim_memory`
+hypercall also need to use other version-controlled hypercalls which
+are wrapped through the :term:`libxenctrl` library.
+
+Wrapping this call in :term:`libxenctrl` is therefore a practical approach;
+otherwise, we would have a mix of version-controlled and unversioned hypercalls,
+which could be confusing for API users and for future maintenance. From the
+domain builders' viewpoint, it is more consistent to expose the claims
+hypercall in the same way as the other calls they use.
+
+Stable interfaces also have drawbacks: with stable syscalls, Linux needs
+to maintain the old interface indefinitely, which can be a maintenance burden
+and can limit the ability to make improvements or changes to the interface
+in the future. Linux carries many system call successor families, e.g., oldstat,
+stat, newstat, stat64, fstatat, statx, with similar examples including openat,
+openat2, clone3, dup3, waitid, mmap2, epoll_create1, pselect6 and many more.
+Glibc hides that complexity from users by providing a consistent API, but it
+still needs to maintain the old system calls for compatibility.
+
+In contrast, versioned hypercalls allow for more flexibility and evolution of
+the API while still providing a clear path to adopt new features. The reserved
+fields and reserved bits in the structures of this hypercall allow for many
+future extensions without breaking existing callers.
+
+********
+Glossary
+********
+
+.. glossary::
+
+ claims
+  Reservations of memory for :term:`domains` that are installed by
+  :term:`domain builders` before :term:`populating` the domain's memory.
+  Claims ensure that the reserved memory remains available for the
+  :term:`domains` when allocating it, even if other :term:`domains` are
+  allocating memory at the same time.
+
+ claim set
+  An array of :c:expr:`memory_claim_t` entries, each specifying a page count
+  and a target (either a NUMA node ID or a special value for global claims),
+  that can be installed atomically for a domain to reserve memory on multiple
+  NUMA nodes. The chapter on :ref:`designs/claims/installation:claim sets`
+  provides further information on the structure and semantics of claim sets.
+
+ claim set installation
+ installing claim sets
+ installing claims
+  The process of validating and installing a claim set for a domain under
+  :c:expr:`domain.page_alloc_lock` and :c:expr:`heap_lock`, ensuring that
+  either the entire set is accepted and installed, or the request fails with
+  no side effects.
+  The chapter on :ref:`designs/claims/installation:claim set installation`
+  provides further information on the structure and semantics of claim sets.
+
+ domain builders
+  Privileged entities (such as :term:`toolstacks` in management :term:`domains`)
+  responsible for constructing and configuring :term:`domains`, including
+  installing :term:`claims`, :term:`populating` memory, and setting up other
+  resources before the :term:`domains` are started.
+
+ domains
+  Virtual machine instances managed by Xen, built by :term:`domain builders`.
+
+ global claims
+  :term:`claims` that can be satisfied from any NUMA node, required for
+  compatibility with existing domain builders and for use cases where
+  strict node-local placement is not required or not possible, such as on
+  UMA machines or as a fallback for memory that comes available on any node.
+
+ libxenctrl
+  A library used by :term:`domain builders` running in privileged
+  :term:`domains` to interact with the hypervisor, including making
+  hypercalls to install claims and populate memory.
+
+ libxenguest
+  A library used by :term:`domain builders` running in privileged
+  :term:`domains` to interact with the hypervisor, including making
+  hypercalls to install claims and populate memory.
+
+ meminit
+  The phase of a domain build where the guest's physical memory is populated,
+  which involves allocating and mapping physical memory for the domain's guest
+  :term:`physmap`. This should be performed after installing :term:`claims`
+  to protect the process against parallel allocations of other domain builder
+  processes in case of parallel domain builds.
+
+  It is implemented in :term:`libxenguest` and optionally installs
+  :term:`claims` to ensure the claimed memory is reserved before populating
+  the :term:`physmap` using calls to :c:expr:`xc_domain_populate_physmap()`.
+
+ nodemask
+  A bitmap representing a set of NUMA nodes, used for status information
+  like :c:expr:`node_online_map` and the :c:expr:`domain.node_affinity`.
+
+ node
+ NUMA node
+ NUMA nodes
+  A grouping of CPUs and memory in a NUMA architecture. NUMA nodes have
+  varying access latencies to memory, and NUMA-aware claims allow
+  :term:`domain builders` to reserve memory on specific NUMA nodes
+  for performance reasons. Platform firmware configures what constitutes
+  a NUMA node, and Xen relies on that configuration for NUMA-related features.
+
+  When this design refers to NUMA nodes, it is referring to the NUMA nodes
+  as defined by the platform firmware and exposed to Xen, initialized at boot
+  time and not changing at runtime (so far).
+
+  The NUMA node ID is a numeric identifier for a NUMA node, used whenever code
+  specifies a NUMA node, such as the target of a claim or indexing into arrays
+  related to NUMA nodes.
+
+  NUMA node IDs start at 0 and are less than :c:expr:`MAX_NUMNODES`.
+
+  Some NUMA nodes may be offline, and the :c:expr:`node_online_map` is used
+  to track which nodes are online. Currently, Xen does not support hotplug
+  of NUMA nodes, so the set of online NUMA nodes is determined at boot time
+  based on the platform firmware configuration and does not change at runtime.
+
+ NUMA node affinity
+  The preference of a :term:`domain` for a set of NUMA nodes, which can be used
+  by :term:`domain builders` to guide memory allocation even when not forcing
+  the buddy allocator to only consider (or prefer) a specific node when
+  allocating memory, but even a set of preferred NUMA nodes.
+
+  By default, domains have NUMA node auto-affinity, which means their NUMA
+  node affinity is determined automatically by the hypervisor based on the
+  CPU affinity of their vCPUs, but it can be disabled and configured.
+
+ guest physical memory
+ physmap
+  The mapping of a domain's guest physical memory to the host's
+  machine address space. The :term:`physmap` defines how the guest's
+  physical memory corresponds to the actual memory locations on the host.
+
+ populating
+  The process of allocating and mapping physical memory for a domain's guest
+  :term:`physmap`, performed by the :term:`domain builders`, preferably after
+  installing :term:`claims` to protect the process against parallel allocations
+  of other domain builder processes in case of parallel domain builds.
+
+ toolstacks
+  Privileged entities (running in privileged :term:`domains`) responsible for
+  managing :term:`domains`, including building, configuring, and controlling
+  their lifecycle using :term:`domain builders`. One toolstack may run
+  multiple :term:`domain builders` in parallel to build multiple :term:`domains`
+  at the same time.
diff --git a/docs/designs/claims/edge-cases.rst b/docs/designs/claims/edge-cases.rst
new file mode 100644
index 000000000000..cfb37ef24259
--- /dev/null
+++ b/docs/designs/claims/edge-cases.rst
@@ -0,0 +1,24 @@
+.. SPDX-License-Identifier: CC-BY-4.0
+
+Handling Edge Cases
+-------------------
+
+Allocations exceeding claims
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+When an allocation exceeds the domain's claims, the allocator must check
+whether unclaimed memory can satisfy the remainder of the request before
+rejecting the allocation.
+
+Previously, if a domain's remaining claim did not fully cover a request,
+the allocator rejected the allocation even when enough unclaimed memory
+existed to satisfy it.
+
+This forced the :term:`meminit` API to fall back from ``1G`` pages to ``2M``
+and eventually to ``4K`` pages, reducing performance due to higher TLB
+pressure and increased page bookkeeping.
+
+Supporting the use of unclaimed memory to satisfy the remainder of the
+request in such cases lets builders continue to use large pages when the
+combination of claims and unclaimed memory allows it, possibly improving
+runtime performance in such scenarios.
diff --git a/docs/designs/claims/history.rst b/docs/designs/claims/history.rst
new file mode 100644
index 000000000000..3c6d745e948c
--- /dev/null
+++ b/docs/designs/claims/history.rst
@@ -0,0 +1,82 @@
+.. SPDX-License-Identifier: CC-BY-4.0
+
+*******************
+Development History
+*******************
+
+.. note:: This section provides historical context on the development of
+   NUMA-aware claims, including previous implementations and feedback received,
+   to give a better understanding of the design decisions made in the current
+   implementation.
+
+The initial `implementation of single-node claims <v1_>`_ (by Alejandro Vallejo)
+introduced node-exact claims, allowing :term:`domain builders` to claim memory
+on one :term:`NUMA node`. It passed a NUMA node in the node bits of the
+:c:expr:`xen_memory_reservation.mem_flags`
+field of the pre-existing claims hypercall :ref:`XENMEM_claim_pages` and, by
+adding the flag ``d->claim_node`` and updating it to the passed node, defined
+the target of the claim as either the specified NUMA node or global memory.
+
+.. sidebar:: Feedback and suggestions for multi-node claim sets
+
+   The initial implementations of single-node claims received feedback from the
+   community, with multiple suggestions to extend the API to support `multi-node
+   claim sets <v1m_>`_. This feedback highlighted the need for a more flexible
+   and extensible design that could accommodate claims on multiple NUMA nodes.
+
+This design was relatively simple and allowed for a quick implementation of
+single-node claims, but it had limitations in terms of flexibility and future
+extensibility.
+
+The `v2 series added a hypercall API for multi-node claims <v2_>`_, opening the
+door to future multi-node claim sets and further work in that direction.
+
+The `v3 series refactored and improved the implementation <v3_>`_, protecting
+claimed memory against parallel allocations by other domain builders.
+
+Between v3 and v4, `Roger Pau Monné and Andrew Cooper developed and merged
+several critical fixes <fix1_>`_ for Xen's overall claims implementation.
+These fixes also allowed Roger to improve the implementation for retiring
+claims during domain memory allocation. In turn, this enabled a
+fully working implementation that protected claimed memory against parallel
+allocations by other domain builders.
+
+With the `v4 series <v4_>`_, we submitted the combined work that completed the
+fixes for protecting claimed memory on NUMA nodes. The review process indicated
+that supporting multiple claim sets would require a `redesign <v4-03_>`_ of
+claim installation and management, which led to this design document.
+
+Acknowledgements
+----------------
+
+The claim sets design builds on the single-node claims implementation
+described above and the feedback it generated. The following people
+should be acknowledged for their contributions:
+
+- *Alejandro Vallejo* for initiating the single-node NUMA claims series.
+- *Roger Pau Monné* for merging critical fixes and proposing the initial
+   multi-node claim-sets specification that inspired this design.
+- *Andrew Cooper* for integrating and validating the work internally,
+   helping to stabilise and productise the single-node implementation.
+- *Jan Beulich* for providing reviews that led to many improvements.
+- *Bernhard Kaindl* for maintaining the single-node series, initiating
+   the multi-node implementation and authoring this design document.
+- *Marcus Granado* and *Edwin Török* for contributing design input,
+   providing guidance, debugging and testing of single-node implementations.
+
+.. _fix1:
+   https://lists.xenproject.org/archives/html/xen-devel/2026-01/msg00164.html
+
+.. _v1:
+   https://patchew.org/Xen/20250314172502.53498-1-alejandro.vallejo@cloud.com/
+.. _v1m:
+   https://lists.xenproject.org/archives/html/xen-devel/2025-06/msg00484.html
+.. _v2:
+   https://lists.xen.org/archives/html/xen-devel/2025-08/msg01076.html
+.. _v3:
+   https://patchew.org/Xen/cover.1757261045.git.bernhard.kaindl@cloud.com/
+.. _v4:
+    https://lists.xenproject.org/archives/html/xen-devel/2026-02/msg01387.html
+.. _v4-03: https://patchwork.kernel.org/project/xen-devel/
+   patch/6927e45bf7c2ce56b8849c16a2024edb86034358.1772098423
+   .git.bernhard.kaindl@citrix.com/
diff --git a/docs/designs/claims/implementation.rst b/docs/designs/claims/implementation.rst
new file mode 100644
index 000000000000..ebc5b045701a
--- /dev/null
+++ b/docs/designs/claims/implementation.rst
@@ -0,0 +1,502 @@
+.. SPDX-License-Identifier: CC-BY-4.0
+
+#####################
+Claims Implementation
+#####################
+
+.. contents:: Table of Contents
+    :backlinks: entry
+    :local:
+
+.. note:: This part describes implementation details of claims and their
+    interaction with memory allocation in Xen. It covers the functions and
+    data structures involved in :term:`installing claims`, allocating memory
+    with :term:`claims`, and handling related edge cases.
+
+Functions related to the implementation of claims and their interaction
+with memory allocation.
+
+**********************
+Installation of claims
+**********************
+
+This section describes the functions and data structures involved
+in :term:`installing claims` for domains and the internal functions for
+validating and installing claim sets.
+
+xc_domain_claim_memory()
+------------------------
+
+.. c:function:: int xc_domain_claim_memory(xc_interface *xch, \
+                                           uint32_t domid, \
+                                           uint32_t nr_claims, \
+                                           memory_claim_t *claims)
+
+    :param xch:       The libxenctrl interface to use for the hypercall
+    :param domid:     The ID of the domain for which to install the claim set
+    :param nr_claims: The number of claims in the claim set
+    :param claims:    The claim set to install for the domain
+    :type xch:        xc_interface *
+    :type domid:      uint32_t
+    :type nr_claims:  uint32_t
+    :type claims:     memory_claim_t *
+    :returns:         0 on success, or a negative error code on failure.
+
+    Wrapper for :c:expr:`XEN_DOMCTL_claim_memory` to install
+    :ref:`claim sets <designs/claims/installation:claim sets>` for a domain.
+
+domain_set_outstanding_pages()
+------------------------------
+
+.. c:function:: int domain_set_outstanding_pages(struct domain *d, \
+                                                 unsigned long pages)
+
+    :param d:     The domain for which to set the outstanding claims
+    :param pages: The number of pages to claim globally for the domain
+    :type d:      struct domain *
+    :type pages:  unsigned long
+    :returns: 0 on success, or a negative error code on failure.
+
+    Handles claim installation for :c:expr:`XENMEM_claim_pages` and
+    :c:expr:`XEN_DOMCTL_claim_memory` with
+    :c:expr:`XEN_DOMCTL_CLAIM_MEMORY_LEGACY` by setting the domain's
+    :term:`global claims` to the specified number of pages. It calculates
+    the claims as the requested pages minus the domain's total pages.
+    When :c:expr:`pages == 0`, it clears the claims of the domain.
+
+domain_set_node_claims()
+------------------------
+
+.. c:function:: int domain_set_node_claims(struct domain *d, \
+                                           unsigned int nr_claims, \
+                                           memory_claim_t *claims)
+
+    :param d: The domain for which to set the node claims
+    :param nr_claims: The number of claims in the claim set
+    :param claims: The claim set to install for the domain
+    :type claims: memory_claim_t *
+    :type d: struct domain *
+    :type nr_claims: unsigned int
+    :returns: 0 on success, or a negative error code on failure.
+
+    Handles :term:`installing claim sets`. It performs the validation
+    of the :term:`claim set` and updates the domain's claims accordingly.
+
+    The function works in four phases:
+
+     1. Validating claim entries and checking node-local availability
+     2. Validating total claims and checking global availability
+     3. Resetting any current claims of the domain
+     4. Installing the claim set as the domain's claiming state
+
+    Phase 1 checks claim entries for validity and memory availability:
+
+     1. Target must be :c:expr:`XEN_DOMCTL_CLAIM_MEMORY_GLOBAL` or a node.
+     2. Each target node may only appear once in the claim set.
+     3. For node-local claims, requested pages must not exceed the available
+        memory on that node after accounting for existing claims.
+     4. The explicit padding field must be zero for forward compatibility.
+
+    Phase 2 checks:
+
+     1. The sum of claims must not exceed globally available memory.
+     2. The claims must not exceed the :c:expr:`domain.max_pages` limit.
+        See :doc:`accounting` and :doc:`retirement` for the accounting
+        checks that enforce the domain's :c:expr:`domain.max_pages` limit.
+
+************************************
+Helper functions for managing claims
+************************************
+
+:c:expr:`claims_retire_global()` and :c:expr:`claims_retire_node()` are helper
+functions used to retire claims when necessary:
+
+- :c:expr:`claims_retire_allocation()`
+  uses them to retire claims when allocating memory.
+- :c:expr:`claims_retire_nodes()`
+  uses :c:expr:`claims_retire_node()` to reset all node-local claims
+  of a domain when resetting the claim state of the domain.
+- :c:expr:`reserve_offlined_page()`
+  uses them to recall claims when offlining pages reduces
+  available memory below the currently claimed memory. See
+  :ref:`designs/claims/implementation:Offlining memory in presence of claims`
+  for further information.
+
+claims_retire_global()
+----------------------
+
+.. c:function:: unsigned long claims_retire_global(struct domain *d, \
+                                                   unsigned long \
+                                                   pages_to_retire)
+
+    :param d: The domain for which to retire the global claim
+    :param pages_to_retire: The number of pages to retire
+    :type d: struct domain *
+    :type pages_to_retire: unsigned long
+    :returns: The number of pages actually retired from the global claim.
+
+    This function retires the specified number of globally claimed pages
+    and updates the global outstanding totals accordingly.
+
+claims_retire_node()
+--------------------
+
+.. c:function:: unsigned long claims_retire_node(struct domain *d, \
+                                                 nodeid_t node, \
+                                                 unsigned long pages_to_retire)
+
+    :param d: The domain for which to retire the node claim
+    :param node: The node for which to retire the claim
+    :param pages_to_retire: The number of pages to retire from the claim
+    :type d: struct domain *
+    :type node: nodeid_t
+    :type pages_to_retire: unsigned long
+    :returns: The number of pages actually retired from the claim
+
+    This function retires a specified number of pages from a domain's
+    claim on a specific node. It limits the retirement to the number of
+    pages actually claimed by the domain on that node and updates the
+    node-local claims currently held by the domain on that node,
+    and it updates the global and node-level claim state accordingly.
+
+claims_retire_nodes()
+---------------------
+
+.. c:function:: void claims_retire_nodes(struct domain *d)
+
+    :param d: The domain for which to retire the node claims.
+    :type d: struct domain *
+
+    This function is used by
+    :ref:`designs/claims/implementation:domain_set_outstanding_pages()`
+    to reset node-local parts of the domain's claiming state.
+
+**********************
+Allocation with claims
+**********************
+
+The functions below play a key role in allocating memory for domains.
+
+xc_domain_populate_physmap()
+----------------------------
+
+ .. c:function:: int xc_domain_populate_physmap(xc_interface *xch, \
+                                           uint32_t domid, \
+                                           unsigned long nr_extents, \
+                                           unsigned int extent_order, \
+                                           unsigned int mem_flags, \
+                                           xen_pfn_t *extent_start)
+
+    :param xch: The :term:`libxenctrl` interface
+    :param domid: The ID of the domain
+    :param nr_extents: Number of extents
+    :param extent_order: Order of the extents
+    :param mem_flags: Allocation flags
+    :param extent_start: Starting PFN
+    :type xch: xc_interface *
+    :type domid: uint32_t
+    :type nr_extents: unsigned long
+    :type extent_order: unsigned int
+    :type mem_flags: unsigned int
+    :type extent_start: xen_pfn_t *
+    :returns: 0 on success, or a negative error code on failure.
+
+    This function is a wrapper for the ``XENMEM_populate_physmap`` hypercall,
+    which is handled by the :c:expr:`populate_physmap()` function in the
+    hypervisor. It is used by :term:`libxenguest` for populating the
+    :term:`guest physical memory` of a domain. :term:`domain builders` can
+    set the :term:`NUMA node affinity` and pass the preferred node to this
+    function to steer allocations towards the preferred NUMA node(s) and let
+    :term:`claims` ensure that the memory will be available even in cases
+    of :term:`parallel domain builds` where multiple domains are being built
+    at the same time.
+
+
+populate_physmap()
+------------------
+
+The :term:`meminit` API calls :c:expr:`xc_domain_populate_physmap()`
+for populating the :term:`guest physical memory`. It invokes the restartable
+``XENMEM_populate_physmap`` hypercall implemented by
+:c:expr:`populate_physmap()`.
+
+.. c:function:: void populate_physmap(struct memop_args *a)
+
+    :param a: Provides status and hypercall restart info
+    :type a: struct memop_args *
+
+    Allocates memory for building a domain and uses it for populating the
+    :term:`physmap`. For allocation, it uses
+    :c:expr:`alloc_domheap_pages()`, which forwards the request to
+    :c:expr:`alloc_heap_pages()`.
+
+    During domain creation, it adds the ``MEMF_no_scrub`` flag to the request
+    for populating the :term:`physmap` to optimize domain startup by allowing
+    the use of unscrubbed pages.
+
+    When that happens, it scrubs the pages as needed using hypercall
+    continuation to avoid long hypercall latency and watchdog timeouts.
+
+    Domain builders can optimise on-demand scrubbing by running
+    :term:`physmap` population pinned to the domain's NUMA node,
+    keeping scrubbing local and avoiding cross-node traffic.
+
+alloc_heap_pages()
+------------------
+
+.. c:function:: struct page_info *alloc_heap_pages(unsigned int zone_lo, \
+                                                   unsigned int zone_hi, \
+                                                   unsigned int order, \
+                                                   unsigned int memflags, \
+                                                   struct domain *d)
+
+    :param zone_lo: The lowest zone index to consider for allocation
+    :param zone_hi: The highest zone index to consider for allocation
+    :param order: The order of the pages to allocate (2^order pages)
+    :param memflags: Memory allocation flags that may affect the allocation
+    :param d: The domain for which to allocate memory or NULL
+    :type zone_lo: unsigned int
+    :type zone_hi: unsigned int
+    :type order: unsigned int
+    :type memflags: unsigned int
+    :type d: struct domain *
+    :returns: The allocated page_info structure, or NULL on failure
+
+    This function allocates a contiguous block of pages from the heap.
+    It checks claims and available memory before attempting the
+    allocation. On success, it updates relevant counters and retires
+    claims as necessary.
+
+    It first checks whether the request can be satisfied given the domain's
+    claims and available memory using :c:expr:`claims_permit_request()`.
+    If claims and availability permit the request, it calls
+    :c:expr:`get_free_buddy()` to find a suitable block of free pages
+    while respecting node and zone constraints.
+
+    If ``MEMF_no_scrub`` is allowed, it may return unscrubbed pages. When that
+    happens, :c:expr:`populate_physmap()` scrubs them if needed with hypercall
+    continuation to avoid long hypercall latency and watchdog timeouts.
+
+    Simplified pseudo-code of its logic:
+.. code:: C
+
+    struct page_info *alloc_heap_pages(unsigned int zone_lo,
+                                       unsigned int zone_hi,
+                                       unsigned int order,
+                                       unsigned int memflags,
+                                       struct domain *d) {
+        /* Check whether claims and available memory permit the request.
+         * `avail_pages` and `claims` are placeholders for the appropriate
+         * global or node-local availability/counts used by the real code. */
+        if (!claims_permit_request(d, avail_pages, claims, memflags,
+                                   1UL << order, NUMA_NO_NODE))
+            return NULL;
+
+        /* Find a suitable buddy block. Pass the zone range, order and
+         * memflags so the helper can apply node and zone selection. */
+        pg = get_free_buddy(zone_lo, zone_hi, order, memflags, d);
+        if (!pg)
+            return NULL;
+
+        claims_retire_allocation(d, 1UL << order, node_of(pg));
+        update_counters_and_stats(d, order);
+        if (pg_has_dirty_pages(pg))
+            scrub_dirty_pages(pg);
+        return pg;
+    }
+
+get_free_buddy()
+----------------
+
+.. c:function:: struct page_info *get_free_buddy(unsigned int zone_lo, \
+                                                 unsigned int zone_hi, \
+                                                 unsigned int order, \
+                                                 unsigned int memflags, \
+                                                 const struct domain *d)
+
+    :param zone_lo: The lowest zone index to consider for allocation
+    :param zone_hi: The highest zone index to consider for allocation
+    :param order: The order of the pages to allocate (2^order pages)
+    :param memflags: Flags for conducting the allocation
+    :param d: domain to allocate memory for or NULL
+    :type zone_lo: unsigned int
+    :type zone_hi: unsigned int
+    :type order: unsigned int
+    :type memflags: unsigned int
+    :type d: struct domain *
+    :returns: The allocated page_info structure, or NULL on failure
+
+    This function finds a suitable block of free pages in the buddy
+    allocator while respecting claims and node-level available memory.
+
+    Called by :c:expr:`alloc_heap_pages()` after verifying the request is
+    permissible, it iterates over nodes and zones to find a buddy block
+    that satisfies the request. It checks node-local claims before
+    attempting allocation from a node.
+
+    Using :c:expr:`claims_permit_request()`, it checks whether the node
+    has enough unclaimed memory to satisfy the request or whether the
+    domain's claims can permit the request on that node after accounting
+    for outstanding claims.
+
+    If the node can satisfy the request, it searches for a suitable block
+    in the specified zones. If found, it returns the block; otherwise it
+    tries the next node until all online nodes are exhausted.
+
+    Simplified pseudo-code of its logic:
+.. code:: C
+
+    /*
+     * preferred_node_or_next_node() represents the policy to first try the
+     * preferred/requested node then fall back to other online nodes.
+     */
+    struct page_info *get_free_buddy(unsigned int zone_lo,
+                                     unsigned int zone_hi,
+                                     unsigned int order,
+                                     unsigned int memflags,
+                                     const struct domain *d) {
+        nodeid_t request_node = MEMF_get_node(memflags);
+
+        /*
+         * Iterate over candidate nodes: start with preferred node (if any),
+         * then try other online nodes according to the normal placement policy.
+         */
+        while (there are more nodes to try) {
+            nodeid_t node = preferred_node_or_next_node(request_node);
+            if (!node_allocatable_request(d, node_avail_pages[node],
+                                          node_outstanding_claims[node],
+                                          memflags, 1UL << order, node))
+                goto try_next_node;
+
+            /* Find a zone on this node with a suitable buddy */
+            for (int zone = highest_zone; zone >= lowest_zone; zone--)
+                for (int j = order; j <= MAX_ORDER; j++)
+                    if ((pg = remove_head(&heap(node, zone, j))) != NULL)
+                        return pg;
+         try_next_node:
+            if (request_node != NUMA_NO_NODE && (memflags & MEMF_exact_node))
+                return NULL;
+            /* Fall back to the next node and repeat. */
+        }
+        return NULL;
+    }
+
+*******************************************
+Helper functions for allocation with claims
+*******************************************
+
+For allocating memory while respecting claims, :c:expr:`alloc_heap_pages()`
+and :c:expr:`get_free_buddy()` use :c:expr:`claims_permit_request()` to
+check whether the claims permit the request before attempting allocation.
+
+If permitted, the allocation proceeds, and after success,
+:c:expr:`claims_retire_allocation()` retires the claims for the allocation
+based on the domain's claiming state and the node of the allocation.
+
+See :ref:`designs/claims/design:Key design decisions` for the
+rationale behind this design and the accounting checks that enforce
+the :c:expr:`domain.max_pages` limit during allocation with claims.
+
+claims_permit_request()
+-----------------------
+
+.. c:function:: bool claims_permit_request(const struct domain *d, \
+                                           unsigned long avail_pages, \
+                                           unsigned long claims, \
+                                           unsigned int memflags, \
+                                           unsigned long request, \
+                                           nodeid_t node)
+
+    :param d: domain for which to check
+    :param avail_pages: pages available globally or on node
+    :param claims: outstanding claims globally or on node
+    :param memflags: memory allocation flags for the request
+    :param request: pages requested for allocation
+    :param node: node of the request or NUMA_NO_NODE for global
+    :type d: const struct domain *
+    :type avail_pages: unsigned long
+    :type claims: unsigned long
+    :type memflags: unsigned int
+    :type request: unsigned long
+    :type node: nodeid_t
+    :returns: true if claims and available memory permit the request, \
+              false otherwise.
+
+    This function checks whether a memory allocation request can be
+    satisfied given the current state of available memory and outstanding
+    claims for the domain. It calculates the amount of unclaimed memory
+    and determines whether it is sufficient to satisfy the request.
+
+    If unclaimed memory is insufficient, it checks if the domain's claims
+    can cover the shortfall, taking into account whether the request is
+    node-specific or global.
+
+claims_retire_allocation()
+--------------------------
+
+.. c:function:: void claims_retire_allocation(struct domain *d, \
+                                              unsigned long allocation, \
+                                              nodeid_t alloc_node)
+
+    :param d: The domain for which to retire claims
+    :param allocation: The number of pages allocated
+    :param alloc_node: The node on which the allocation was made
+    :type d: struct domain *
+    :type allocation: unsigned long
+    :type alloc_node: nodeid_t
+
+    See :doc:`retirement` for details on retiring claims after allocation.
+
+**************************************
+Offlining memory in presence of claims
+**************************************
+
+When offlining pages, Xen must ensure that available memory on a node or
+globally does not fall below outstanding claims. If it does, Xen recalls
+claims from domains until accounting is valid again.
+
+This is triggered by privileged domains via the
+``XEN_SYSCTL_page_offline_op`` sysctl or by machine-check memory errors.
+
+Offlining currently allocated pages does not immediately reduce available
+memory: pages are marked offlining and become offline only when freed.
+Pages marked offlining will not become available again, so this does not
+affect claim invariants.
+
+However, when already free pages are offlined, free memory can drop
+below outstanding claims; in that case the offlining process calls
+:c:expr:`reserve_offlined_page()` to offline the page.
+
+It checks whether offlining the page would cause available memory on the
+page's node, or globally, to fall below the respective outstanding claims:
+
+- When
+  :c:expr:`node_outstanding_claims[offline_node]` exceeds
+  :c:expr:`node_avail_pages[offline_node]` for the node of the offlined page,
+  :c:expr:`reserve_offlined_page()` calls :c:expr:`claims_retire_node()`
+  to recall claims on that node from domains with claims on the node of the
+  offlined buddy until the claim accounting of the node is valid again.
+
+- When total :c:expr:`outstanding_claims` exceeds :c:expr:`total_avail_pages`,
+  :c:expr:`reserve_offlined_page()` calls :c:expr:`claims_retire_global()` to
+  recall global claims from domains with global claims until global accounting
+  is valid again.
+
+This can violate claim guarantees, but it is necessary to maintain system
+stability when memory must be offlined.
+
+reserve_offlined_page()
+-----------------------
+
+.. c:function:: int reserve_offlined_page(struct page_info *head)
+
+    :param head: The page being offlined
+    :type head: struct page_info *
+    :returns: 0 on success, or a negative error code on failure.
+
+    This function is called during the offlining process to offline pages.
+
+    If offlining a page causes available memory to fall below outstanding
+    claims, it checks the node and global claim accounting and recalls
+    claims from domains as necessary to ensure accounting invariants hold
+    after a buddy is offlined.
diff --git a/docs/designs/claims/index.rst b/docs/designs/claims/index.rst
new file mode 100644
index 000000000000..1d4eff32850b
--- /dev/null
+++ b/docs/designs/claims/index.rst
@@ -0,0 +1,43 @@
+.. SPDX-License-Identifier: CC-BY-4.0
+
+NUMA-aware Claim Sets
+=====================
+
+Design and implementation of NUMA-aware claim sets.
+
+Status: Draft for review
+
+This design first introduces the external behaviour of claim sets: how claims
+are installed, how they protect allocations, and how they are retired.
+It then covers the underlying accounting model and implementation details.
+
+For readers following the design in order, the next sections cover the
+following topics:
+
+1. :doc:`/designs/claims/usecases` describes the use cases for claim sets.
+2. :doc:`/designs/claims/history` provides the development's historical context
+3. :doc:`/designs/claims/design` introduces the overall model and goals.
+4. :doc:`/designs/claims/installation` explains how claim sets are installed.
+5. :doc:`/designs/claims/protection` describes how claimed memory is
+   protected during allocation.
+6. :doc:`/designs/claims/retirement` explains how claims are retired as
+   allocations succeed.
+7. :doc:`/designs/claims/accounting` describes the accounting model that
+   underpins those steps.
+
+.. toctree:: :caption: Contents
+   :maxdepth: 2
+
+   usecases
+   history
+   design
+   installation
+   protection
+   retirement
+   accounting
+   implementation
+   edge-cases
+
+.. contents::
+    :backlinks: entry
+    :local:
diff --git a/docs/designs/claims/installation.rst b/docs/designs/claims/installation.rst
new file mode 100644
index 000000000000..70f97abbae66
--- /dev/null
+++ b/docs/designs/claims/installation.rst
@@ -0,0 +1,122 @@
+.. SPDX-License-Identifier: CC-BY-4.0
+
+########################
+Claim Installation Paths
+########################
+
+**********
+Claim sets
+**********
+
+A claim set is an array of :c:expr:`memory_claim_t` entries, each specifying
+a page count and a target.  Targets are either a NUMA node ID, or one of two
+special values:
+
+.. c:macro:: XEN_DOMCTL_CLAIM_MEMORY_GLOBAL
+
+   Value for the :c:expr:`xen_memory_claim.target` field of a claim set entry
+   to specify a global claim satisfied from any node, useful when strict
+   per-node placement is not required or as a fallback for memory that
+   may be populated on any node.
+
+   These claims are retired on allocation only when the allocation node's
+   claims are exhausted, so they provide a way to claim memory when the
+   available memory on the allocation nodes is not fully sufficient to
+   satisfy the domain's needs, but the global pool has sufficient free
+   memory to cover the shortfall and the domain can tolerate some fallback
+   to non-preferred nodes without selecting a specific node for the fallback.
+
+   Supported by :c:expr:`XEN_DOMCTL_claim_memory` but not the legacy claim path.
+
+.. c:macro:: XEN_DOMCTL_CLAIM_MEMORY_LEGACY
+
+   This is a special selector for :c:expr:`xen_memory_claim.target` that can
+   only be used in a single-entry claim set to indicate that the claim set
+   should be processed by the legacy claim installation logic. It is not a
+   valid target for regular claims and is not supported for multi-entry
+   claim sets and is only used for backward compatibility and is not
+   intended for use in new code.
+
+.. note:: The legacy path is deprecated. Use :c:expr:`XEN_DOMCTL_claim_memory`
+   with :c:expr:`XEN_DOMCTL_CLAIM_MEMORY_GLOBAL` for global claims in new
+   code instead of :c:expr:`XEN_DOMCTL_CLAIM_MEMORY_LEGACY`.
+
+.. c:type:: memory_claim_t
+
+   Typedef for :c:expr:`xen_memory_claim`,
+   the structure for passing claim sets to the hypervisor.
+
+.. c:struct:: xen_memory_claim
+
+   Underlying structure for passing claim sets to the hypervisor.
+
+   This structure represents an individual claim entry in a claim set.
+   It specifies the number of pages claimed and the target of the claim,
+   which can be a specific NUMA node or a special value for global claims.
+
+   The structure includes padding for future expansion, and it is important
+   to zero-initialise it or use designated initializers to ensure forward
+   compatibility. Members are as follows:
+
+   .. c:member:: uint64_aligned_t pages
+
+      Number of pages for this claim entry.
+
+   .. c:member:: uint32_t target
+
+      The target of the claim, which can be a specific NUMA node
+      or a special selector to steer the claim to the global pool
+      or to invoke the legacy claim path.
+      Valid values are either a node ID in the range of valid NUMA nodes, or:
+
+      :c:expr:`XEN_DOMCTL_CLAIM_MEMORY_GLOBAL` for a global claim, or
+      :c:expr:`XEN_DOMCTL_CLAIM_MEMORY_LEGACY` for the legacy claim path.
+
+   .. c:member:: uint32_t pad
+
+      Reserved for future use, must be 0 for forward compatibility.
+
+.. c:type:: uint64_aligned_t
+
+   64-bit unsigned integer type with alignment requirements suitable for
+   representing page counts in the claim structure.
+
+**********************
+Claim set installation
+**********************
+
+Claim set installation is invoked via :c:expr:`XEN_DOMCTL_claim_memory` and
+:ref:`designs/claims/implementation:domain_set_node_claims()` implements
+the claim set installation logic.
+
+Claim sets using
+:c:expr:`XEN_DOMCTL_CLAIM_MEMORY_LEGACY` are dispatched to
+:ref:`designs/claims/implementation:domain_set_outstanding_pages()`
+for the legacy claim installation logic.
+
+See :doc:`accounting` for details on the claims accounting state.
+
+*************************
+Legacy claim installation
+*************************
+
+.. note:: The legacy path is deprecated.
+   Use :c:expr:`XEN_DOMCTL_claim_memory` for new code.
+
+Legacy claims are set via the :ref:`XENMEM_claim_pages` command,
+implemented by
+:ref:`designs/claims/implementation:domain_set_outstanding_pages()`
+with the following semantics:
+
+- The request contains exactly one global claim entry of the form
+  :c:expr:`xen_memory_claim.target = XEN_DOMCTL_CLAIM_MEMORY_LEGACY`.
+- It sets :c:expr:`domain.global_claims` to the requested pages, minus
+  the domain's total pages, i.e. the pages allocated to the domain so far,
+  so that the domain's global outstanding claims reflect the shortfall of
+  allocated pages from claimed pages:
+  :c:expr:`xen_memory_claim.pages - domain_tot_pages(domain)`.
+- Passing :c:expr:`xen_memory_claim.pages == 0`
+  clears all claims installed for the domain.
+
+Aside from the edge cases for allocations exceeding claims and
+offlining pages, the legacy path is functionally unchanged.
diff --git a/docs/designs/claims/invariants.mmd b/docs/designs/claims/invariants.mmd
new file mode 100644
index 000000000000..ac9bfba34d49
--- /dev/null
+++ b/docs/designs/claims/invariants.mmd
@@ -0,0 +1,36 @@
+%% SPDX-License-Identifier: CC-BY-4.0
+%% Claim variables and their Invariants
+flowchart TD
+
+subgraph "Access&nbsp;under&nbsp;the&nbsp;<tt><b>heap_lock</b></tt>&nbsp;only:"
+   direction TB
+   Memory_of_Nodes --"&nbsp; Contribute to &nbsp;"--> Overall_Memory
+   Overall_Memory --"&nbsp; Available to &nbsp;"--> Memory_of_Domains
+end
+
+subgraph Memory_of_Nodes["Per-node claims and available memory"]
+    direction LR
+    per_node_claims -->|"&nbsp; less or equal to &nbsp;"| node_avail_pages
+    per_node_claims["Claims on the node:
+                     <tt>node_outstanding_claims[n]"]
+    node_avail_pages["Available pages on the node:
+                      <tt>node_avail_pages[n]"]
+end
+
+subgraph Overall_Memory["Overall claims and available memory"]
+    direction LR
+    outstanding -->|"&nbsp; less or equal to &nbsp;"| avail_pages
+    outstanding["Total claims on the host:
+                 <tt>outstanding_claims"]
+    avail_pages["Available pages on the host:
+                 <tt>total_avail_pages"]
+end
+
+subgraph Memory_of_Domains["Per-domain&nbsp;claims and available memory"]
+    direction LR
+    claims -->|"&nbsp; less or equal to &nbsp;"| available_memory_for_domains
+    claims["Claims of the domain:<br><tt>d->claims[n]
+                                         d->global_claims"]
+    available_memory_for_domains["Available pages:<br><tt>node_avail_pages[n]
+                                                          total_avail_pages"]
+end
\ No newline at end of file
diff --git a/docs/designs/claims/protection.rst b/docs/designs/claims/protection.rst
new file mode 100644
index 000000000000..2de6097d2c74
--- /dev/null
+++ b/docs/designs/claims/protection.rst
@@ -0,0 +1,41 @@
+.. SPDX-License-Identifier: CC-BY-4.0
+
+Protection of Claims
+--------------------
+
+Claimed memory must be protected from unrelated allocations while remaining
+available to the claiming domain.
+
+The allocator performs two checks.
+
+Global check
+^^^^^^^^^^^^
+
+``alloc_heap_pages()`` first verifies whether the request fits the global
+pool after accounting for claims. The request is permitted when either:
+
+- Enough unclaimed memory exists globally to satisfy the request.
+- The requesting domain's outstanding claims cover the shortfall.
+
+For this check, the domain's applicable claim is
+``d->global_claims + d->node_claims``. The domain therefore receives
+credit for its complete claim set, whether reservations are global,
+per-node, or both.
+
+Node check
+^^^^^^^^^^
+
+After passing the global check, the allocator calls ``get_free_buddy()``
+to find free pages. It loops over the NUMA nodes to find a suitable
+node with enough free memory to satisfy the request.
+
+It performs an additional node-local claims check using the domain's claim
+for that node (``d->claims[node]``) to determine whether the node is qualified
+to satisfy the request before examining that node's free lists.
+
+Unless the caller requested an exact node, the allocator loops
+over nodes until it finds one where the request can be satisfied
+by the unclaimed memory and the node-local claim for that node.
+
+If no qualifying node is found, the allocator rejects the request
+due to insufficient memory.
diff --git a/docs/designs/claims/retirement.rst b/docs/designs/claims/retirement.rst
new file mode 100644
index 000000000000..2912a082b878
--- /dev/null
+++ b/docs/designs/claims/retirement.rst
@@ -0,0 +1,70 @@
+.. SPDX-License-Identifier: CC-BY-4.0
+
+Claim Retirement
+----------------
+
+After a successful allocation,
+:ref:`designs/claims/implementation:claims_retire_allocation()` retires
+claims up to the size of the allocation in the same critical region
+that updates the free-page counters.
+
+The function performs the following steps to retire the matching claims
+for this allocation, ensuring the domain's total memory allocation as
+:c:expr:`domain_tot_pages(domain)` plus its outstanding claims as
+:c:expr:`domain.global_claims + domain.node_claims` remain within the
+domain's limits, defined by :c:expr:`domain.max_pages`:
+
+Step 1:
+ Retire claims from :c:expr:`domain.claims[alloc_node]` on the allocation
+ node, up to the size of that claim.
+Step 2:
+ If the allocation exceeds :c:expr:`domain.claims[alloc_node]`, retire the
+ remaining pages from the global fallback claim :c:expr:`domain.global_claims`
+ (if one exists).
+Step 3:
+ If the allocation exceeds the combination of those claims, retire the
+ remaining pages from other per-node claims so that the domain's total
+ allocation plus claims remain within the domain's :c:expr:`domain.max_pages`
+ limit.
+
+Enforcing the :c:expr:`domain.max_pages` limit
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+:c:expr:`domain_tot_pages(domain)` +
+:c:expr:`domain.global_claims + domain.node_claims`
+must not exceed the :c:expr:`domain.max_pages` limit, otherwise
+the domain would exceed its memory entitlement.
+
+At claim installation time
+ This check is done by
+ :c:expr:`domain_set_node_claims()` and
+ :c:expr:`domain_set_outstanding_pages()`.
+
+.. :sidebar::
+   See :ref:`designs/claims/accounting:Locking of claims accounting`
+   for the locks used to protect claims accounting state and invariants.
+
+A memory allocation time
+ It is also possible for claims to become excessive after allocating memory
+ if the domain has claims that are not retired by the allocation:
+
+ If allocations would not retire enough claims to keep the sum of the domain's
+ allocation and claims within the domain's :c:expr:`domain.max_pages` limit,
+ the combination of the allocation and claims could exceed the domain's limit.
+
+ In this case, the domain's claims could exceed its memory entitlement.
+ Such excess beyond :c:expr:`domain.max_pages` claims could be actually
+ physically allocated for that domain, but would still prevent other
+ domains from using the excess claimed memory.
+
+ :ref:`designs/claims/implementation:claims_retire_allocation()` cannot execute
+ this exact step race-free during step 3 because it would have to take the
+ :c:expr:`domain.page_alloc_lock` to inspect the domain's limits
+ and current allocation. Taking that lock while holding the
+ :c:expr:`heap_lock` would invert the locking order and could
+ lead to deadlocks.
+
+Therefore, :ref:`designs/claims/implementation:claims_retire_allocation()`
+retires the remaining allocation from other-node claims to ensure
+the sum of the domain's claims and populated pages remains within the
+domain's :c:expr:`domain.max_pages` limit.
diff --git a/docs/designs/claims/usecases.rst b/docs/designs/claims/usecases.rst
new file mode 100644
index 000000000000..5a618f0d0280
--- /dev/null
+++ b/docs/designs/claims/usecases.rst
@@ -0,0 +1,39 @@
+.. SPDX-License-Identifier: CC-BY-4.0
+
+#########
+Use Cases
+#########
+
+.. glossary::
+
+ Parallel :term:`domain builds`
+
+  When many domains need to be created and built, many :term:`domain builders`
+  compete for the same pools of memory, which can lead to inefficient NUMA
+  placement of :term:`guest physical memory` and thus suboptimal performance
+  for the domains.
+
+  NUMA-aware claims can help solve this problem and ensure that memory
+  is available on the appropriate NUMA nodes.
+
+ Domain builds
+
+  The process of constructing and configuring :term:`domains` by
+  :term:`domain builders`, which includes installing :term:`claims`,
+  :term:`populating` memory, and setting up other resources before the
+  :term:`domains` are started. When multiple :term:`domain builders` can
+  run in parallel, this is referred to as parallel domain builds, which can
+  benefit from NUMA-aware claims because the domain builders are competing for
+  the same pools of memory on the NUMA nodes.
+
+ Boot storms
+
+  It is common for many domains to be booted at the same time, such as during
+  system startup or when large numbers of domains need to be started.
+
+ Parallel migrations
+
+  Similar to :term:`boot storms`, except that the domains are being migrated
+  instead of booted, which can happen when other hosts are being drained
+  for maintenance (host evacuation) or when workloads are being rebalanced
+  across hosts.
diff --git a/docs/designs/index.rst b/docs/designs/index.rst
new file mode 100644
index 000000000000..036653303231
--- /dev/null
+++ b/docs/designs/index.rst
@@ -0,0 +1,16 @@
+.. SPDX-License-Identifier: CC-BY-4.0
+
+Design documents
+================
+
+Design documents and implementation details for the Xen hypervisor itself.
+This is intended for developers working on the Xen hypervisor,
+and for those interested in the internal workings of Xen.
+
+.. toctree::
+   :maxdepth: 2
+   :numbered: 4
+
+   launch/hyperlaunch
+   launch/hyperlaunch-devicetree
+   claims/index
diff --git a/docs/designs/launch/hyperlaunch.rst b/docs/designs/launch/hyperlaunch.rst
index 3bed36f97637..aa7c2798a380 100644
--- a/docs/designs/launch/hyperlaunch.rst
+++ b/docs/designs/launch/hyperlaunch.rst
@@ -2,8 +2,6 @@
 Hyperlaunch Design Document
 ###########################
 
-.. sectnum:: :depth: 4
-
 This post is a Request for Comment on the included v4 of a design document that
 describes Hyperlaunch: a new method of launching the Xen hypervisor, relating
 to dom0less and work from the Hyperlaunch project. We invite discussion of this
@@ -13,6 +11,8 @@ Xen Development mailing list.
 
 
 .. contents:: :depth: 3
+   :backlinks: entry
+   :local:
 
 
 Introduction
diff --git a/docs/guest-guide/dom/DOMCTL_claim_memory-data.mmd b/docs/guest-guide/dom/DOMCTL_claim_memory-data.mmd
new file mode 100644
index 000000000000..50687392fd20
--- /dev/null
+++ b/docs/guest-guide/dom/DOMCTL_claim_memory-data.mmd
@@ -0,0 +1,43 @@
+%% SPDX-License-Identifier: CC-BY-4.0
+classDiagram
+class do_domctl["Args passed to <tt>do_domctl()</tt>"] {
+    +uint32_t cmd: XEN_DOMCTL_claim_memory
+    +uint32_t domain: Domain ID
+    +xen_domctl_claim_memory: Claim set
+}
+class xen_domctl_claim_memory["Claim set passed to <tt>do_domctl()</tt>"] {
+    +memory_claim_t* claims: Claim entries
+    +uint32_t nr_claims: Number of claim entries
+    +uint32_t pad: always 0 for future use
+}
+class memory_claim_t["Claim set: Array of claim entries"] {
+    +pages: Pages to claim
+    +node: Claim selector or node
+    +pad: always 0 for future use
+}
+class xc_domain_claim_memory["xc_domain_claim_memory()"] {
+    +xc_interface* xch
+    +uint32_t domid
+    +uint32_t nr_claims
+    +memory_claim_t* claims
+}
+class global_claimss["Global and Node claim counters"] {
+    global free = total_avail_pages - outstanding_claims
+    node free = node_avail_pages[node] - node_outstanding_claims[node]
+}
+class claim["XEN_DOMCTL_claim_memory"] {
+    +domain_set_outstanding_pages()
+    +domain_set_node_claims()
+}
+class domain["Claim fields in struct domain"] {
+    +global_claims - Global claims of the domain
+    +node_claims - Sum of claims on all nodes of the domain
+    +claims[] - Array of claims on specific nodes
+}
+xen_domctl_claim_memory o--> memory_claim_t
+do_domctl o--> xen_domctl_claim_memory
+xc_domain_claim_memory ..> do_domctl: passes<br> <tt>Claim set</tt>
+xc_domain_claim_memory ..> claim : calls <tt>do_domctl()</tt>
+claim ..> xen_domctl_claim_memory : reads
+claim ..> domain : sets
+domain ..> global_claimss : updates outstanding claims
diff --git a/docs/guest-guide/dom/DOMCTL_claim_memory-seqdia.mmd b/docs/guest-guide/dom/DOMCTL_claim_memory-seqdia.mmd
new file mode 100644
index 000000000000..05d688c59f13
--- /dev/null
+++ b/docs/guest-guide/dom/DOMCTL_claim_memory-seqdia.mmd
@@ -0,0 +1,23 @@
+%% SPDX-License-Identifier: CC-BY-4.0
+sequenceDiagram
+
+actor DomainBuilder
+participant OcamlStub as OCaml stub for<br>xc_domain<br>claim_memory
+participant Libxc as xc_domain<br>claim_memory
+participant Domctl as XEN_DOMCTL<br>claim_memory
+#participant DomainLogic as claim_memory
+participant Alloc as domain<br>set<br>outstanding_pages
+
+DomainBuilder->>OcamlStub: claims
+OcamlStub->>OcamlStub: marshall claims -----> OCaml to C
+OcamlStub->>Libxc: claims
+
+Libxc->>Domctl: do_domctl
+
+Domctl->>Domctl: copy_from_guest(claim)
+Domctl->>Domctl: validate claim
+Domctl->>Alloc: set<br>outstanding_pages
+Alloc-->>Domctl: result
+Domctl-->>Libxc: rc
+Libxc-->>OcamlStub: rc
+OcamlStub-->>DomainBuilder: claim_result
\ No newline at end of file
diff --git a/docs/guest-guide/dom/DOMCTL_claim_memory-workflow.mmd b/docs/guest-guide/dom/DOMCTL_claim_memory-workflow.mmd
new file mode 100644
index 000000000000..372f2bb7a616
--- /dev/null
+++ b/docs/guest-guide/dom/DOMCTL_claim_memory-workflow.mmd
@@ -0,0 +1,23 @@
+%% SPDX-License-Identifier: CC-BY-4.0
+sequenceDiagram
+
+participant Toolstack
+participant Xen
+participant NUMA Node memory
+
+Toolstack->>Xen: XEN_DOMCTL_createdomain
+Toolstack->>Xen: XEN_DOMCTL_max_mem(max_pages)
+
+Toolstack->>Xen: XEN_DOMCTL_claim_memory(pages, node)
+Xen->>NUMA Node memory: Claim pages on node
+Xen-->>Toolstack: Claim granted
+
+Toolstack->>Xen: XEN_DOMCTL_set_nodeaffinity(node)
+
+loop Populate domain memory
+    Toolstack->>Xen: XENMEM_populate_physmap(memflags:node)
+    Xen->>NUMA Node memory: alloc from claimed node
+end
+
+Toolstack->>Xen: XEN_DOMCTL_claim_memory(0, NO_NODE)
+Xen-->>Toolstack: Remaining claims released
diff --git a/docs/guest-guide/dom/DOMCTL_claim_memory.rst b/docs/guest-guide/dom/DOMCTL_claim_memory.rst
new file mode 100644
index 000000000000..d435799c57a6
--- /dev/null
+++ b/docs/guest-guide/dom/DOMCTL_claim_memory.rst
@@ -0,0 +1,81 @@
+.. SPDX-License-Identifier: CC-BY-4.0
+
+.. c:macro:: XEN_DOMCTL_claim_memory
+
+   Hypercall command for installing claim sets for a domain.
+
+   This hypercall command allows :term:`domain builders` to install a
+   :term:`claim set` targeting :term:`NUMA nodes` and :term:`global claims`.
+
+   The hypervisor tracks the installed claims for each domain and enforces
+   them during memory allocation, so that claimed memory is protected from
+   other allocations and the domain's memory requirements can be met even
+   when other parallel domain builders are also allocating memory for other
+   domains in parallel.
+
+   :ref:`designs/claims/installation:Claim set installation` describes
+   how the Xen hypervisor processes the claim sets installed via this
+   hypercall command.
+
+API example using libxenctrl
+----------------------------
+
+The example below shows how a domain builder can install a claim set and
+later replace or clear it. :c:expr:`memory_claim_t` contains padding for future
+expansion; zero-initialise the structure or use designated initializers to
+ensure forward compatibility.
+
+.. code-block:: C
+
+  #include <xenctrl.h>
+
+  void example_claims(xc_interface *xch, uint32_t domid)
+  {
+    /* Claim 1024 pages on node 0, 1024 pages on node 1, and 1024 global */
+    memory_claim_t claims[] = {
+      {.pages = 1024, .node = XEN_DOMCTL_CLAIM_MEMORY_GLOBAL},
+      {.pages = 1024, .node = 0},
+      {.pages = 1024, .node = 1}
+    };
+    xc_domain_claim_memory(xch, domid, ARRAY_SIZE(claims), claims);
+
+    /* Replace the claim set with claims on nodes 1, 2, and 3 */
+    memory_claim_t claims2[] = {
+      {.pages = 1024, .node = 1},
+      {.pages = 1024, .node = 2},
+      {.pages = 1024, .node = 3},
+    };
+    xc_domain_claim_memory(xch, domid, ARRAY_SIZE(claims2), claims2);
+
+    /* Release any remaining claim once the domain is built */
+    memory_claim_t clear[] = {
+      {.pages = 0, .node = XEN_DOMCTL_CLAIM_MEMORY_GLOBAL}
+    };
+    xc_domain_claim_memory(xch, domid, ARRAY_SIZE(clear), clear);
+  }
+
+Call sequence diagram
+---------------------
+
+The following sequence diagram illustrates the call flow for claiming memory
+for a domain using this hypercall command from an OCaml domain builder:
+
+.. mermaid:: DOMCTL_claim_memory-seqdia.mmd
+  :caption: Sequence diagram: Call flow for claiming memory for a domain
+
+Claim workflow
+--------------
+
+This diagram illustrates a workflow for claiming and populating memory:
+
+.. mermaid:: DOMCTL_claim_memory-workflow.mmd
+  :caption: Workflow diagram: Claiming and populating memory for a domain
+
+Used functions & data structures
+--------------------------------
+
+This diagram illustrates the key functions and data structures involved in
+installing claims via the :c:expr:`XEN_DOMCTL_claim_memory` hypercall command:
+
+.. mermaid:: DOMCTL_claim_memory-data.mmd
+  :caption: Diagram: Function and data relationships for installing claims
diff --git a/docs/guest-guide/dom/index.rst b/docs/guest-guide/dom/index.rst
new file mode 100644
index 000000000000..445ccf599047
--- /dev/null
+++ b/docs/guest-guide/dom/index.rst
@@ -0,0 +1,14 @@
+.. SPDX-License-Identifier: CC-BY-4.0
+
+Domctl Hypercall
+================
+
+Through domctl hypercalls, toolstacks in privileged domains can perform
+operations related to domain management.  This includes operations such as
+creating, destroying, and modifying domains, as well as querying domain
+information.
+
+.. toctree::
+   :maxdepth: 2
+
+   DOMCTL_claim_memory
diff --git a/docs/guest-guide/index.rst b/docs/guest-guide/index.rst
index 5455c67479cf..d9611cd7504d 100644
--- a/docs/guest-guide/index.rst
+++ b/docs/guest-guide/index.rst
@@ -3,6 +3,29 @@
 Guest documentation
 ===================
 
+Xen exposes a set of hypercalls that allow domains and toolstacks in
+privileged contexts (such as Dom0) to request services from the hypervisor.
+
+Through these hypercalls, privileged domains can perform privileged operations
+such as querying system information, memory and domain management,
+and enabling inter-domain communication via shared memory and event channels.
+
+These hypercalls are documented in the following sections, grouped by their
+functionality. Each section provides an overview of the hypercalls, their
+parameters, and examples of how to use them.
+
+Hypercall API documentation
+---------------------------
+
+.. toctree::
+   :maxdepth: 2
+
+   dom/index
+   mem/index
+
+Hypercall ABI documentation
+---------------------------
+
 .. toctree::
    :maxdepth: 2
 
diff --git a/docs/guest-guide/mem/XENMEM_claim_pages.rst b/docs/guest-guide/mem/XENMEM_claim_pages.rst
new file mode 100644
index 000000000000..1e8a50afc856
--- /dev/null
+++ b/docs/guest-guide/mem/XENMEM_claim_pages.rst
@@ -0,0 +1,100 @@
+.. SPDX-License-Identifier: CC-BY-4.0
+.. _XENMEM_claim_pages:
+
+XENMEM_claim_pages
+==================
+
+.. note:: This API is deprecated;
+   Use :c:expr:`XEN_DOMCTL_claim_memory` for new code.
+
+.. c:macro:: XENMEM_claim_pages
+
+   Hypercall command for installing legacy claims.
+
+   :ref:`designs/claims/installation:Legacy claim installation` describes
+   the API for installing legacy claims via this hypercall command.
+
+   It passes a single claim entry to the hypervisor via a
+   :c:expr:`xen_memory_reservation` structure with the page count in the
+   :c:expr:`xen_memory_reservation.nr_extents` field and the domain ID
+   :c:expr:`xen_memory_reservation.domid` field. The claim entry's target is
+   implicitly global, and the legacy claim path is invoked in the hypervisor
+   to process the claim:
+
+.. c:struct:: xen_memory_reservation
+
+   Structure for passing claim requests to the hypervisor via
+   :ref:`XENMEM_claim_pages` and other memory reservation hypercalls.
+
+   .. code-block:: C
+
+      struct xen_memory_reservation {
+          xen_pfn_t   *extent_start; /* not used for XENMEM_claim_pages */
+          xen_ulong_t  nr_extents;   /* pass page counts to claim */
+          unsigned int extent_order; /* must be 0 */
+          unsigned int mem_flags;    /* XENMEMF flags. */
+          domid_t      domid;        /* domain to apply the claim to */
+      };
+      typedef struct xen_memory_reservation xen_memory_reservation_t;
+
+   .. c:member:: xen_ulong_t nr_extents
+
+      For :ref:`XENMEM_claim_pages`, the page count to claim.
+
+   .. c:member:: domid_t domid
+
+        Domain ID for the claim.
+
+   .. c:member:: unsigned int mem_flags
+
+      Must be 0 for :ref:`XENMEM_claim_pages`; not used for claims.
+
+      In principle, it supports all the :c:expr:`XENMEMF_*` flags, including
+      the possibility of passing a single NUMA node ID, but using it to pass
+      a NUMA node ID is not currently supported by the legacy claim path.
+
+      During review of the NUMA extension of the legacy claim path, it
+      was used, but the request was made to instead create a new hypercall
+      which is now :c:expr:`XEN_DOMCTL_claim_memory` with support for claim sets.
+
+   .. c:member:: unsigned int extent_order
+   .. c:member:: xen_pfn_t *extent_start
+
+      Both are not used for :ref:`XENMEM_claim_pages`, but are used for other
+      memory reservation hypercalls.
+
+   See :ref:`designs/claims/installation:Legacy claim installation` for details.
+
+API example using libxenctrl
+----------------------------
+
+The example below claims pages, populates the domain,
+and then clears the claim.
+
+.. code-block:: C
+
+  #include <xenctrl.h>
+
+  int build_with_claims(xc_interface *xch, uint32_t domid,
+                        unsigned long nr_pages)
+  {
+      int ret;
+
+      /* Claim pages for the domain build. */
+      ret = xc_domain_claim_pages(xch, domid, nr_pages);
+      if ( ret < 0 )
+          return ret;
+
+      /* Populate the domain's physmap. */
+      ret = xc_domain_populate_physmap(xch, domid, /* ... */);
+      if ( ret < 0 )
+          return ret;
+
+      /* Release any remaining claim after populating the domain memory. */
+      ret = xc_domain_claim_pages(xch, domid, 0);
+      if ( ret < 0 )
+          return ret;
+
+      /* Unpause the domain to allow it to run. */
+      return xc_unpause_domain(xch, domid);
+  }
diff --git a/docs/guest-guide/mem/index.rst b/docs/guest-guide/mem/index.rst
new file mode 100644
index 000000000000..086281f082a0
--- /dev/null
+++ b/docs/guest-guide/mem/index.rst
@@ -0,0 +1,12 @@
+.. SPDX-License-Identifier: CC-BY-4.0
+
+Memctl Hypercall
+================
+
+The XENMEM hypercall interface allows guests to perform various control
+operations related to memory management.
+
+.. toctree::
+   :maxdepth: 2
+
+   XENMEM_claim_pages
diff --git a/docs/hypervisor-guide/index.rst b/docs/hypervisor-guide/index.rst
index 520fe01554ab..904f8daeb79e 100644
--- a/docs/hypervisor-guide/index.rst
+++ b/docs/hypervisor-guide/index.rst
@@ -3,9 +3,16 @@
 Hypervisor documentation
 ========================
 
+.. The toctree of the hypervisor design documentation,
+   providing an overview and links to the various design
+   documents are added in the `designs` directory and
+   are referenced using the `designs/index` page here.
+   (this is a documentation comment which is not rendered)
+
 .. toctree::
    :maxdepth: 2
 
+   ../designs/index
    code-coverage
 
    x86/index
diff --git a/docs/index.rst b/docs/index.rst
index bd87d736b9c3..b6803f6a341e 100644
--- a/docs/index.rst
+++ b/docs/index.rst
@@ -53,17 +53,18 @@ kind of development environment.
    hypervisor-guide/index
    misc/ci
 
-
 Unsorted documents
 ------------------
 
 Documents in need of some rearranging.
 
+.. The design documentation is added in the `designs` directory
+   included in the hypervisor guide now.
+   (this is a documentation comment which is not rendered)
+
 .. toctree::
    :maxdepth: 2
 
-   designs/launch/hyperlaunch
-   designs/launch/hyperlaunch-devicetree
    misc/xen-makefiles/makefiles
    misra/index
    fusa/index
-- 
2.39.5



From xen-devel-bounces@lists.xenproject.org Thu Apr 02 10:04:08 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 02 Apr 2026 10:04:08 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1271473.1559611 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1w8EuB-0006Yl-NQ; Thu, 02 Apr 2026 10:04:03 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1271473.1559611; Thu, 02 Apr 2026 10:04: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 1w8EuB-0006Ye-Ke; Thu, 02 Apr 2026 10:04:03 +0000
Received: by outflank-mailman (input) for mailman id 1271473;
 Thu, 02 Apr 2026 10:04:02 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <jbeulich@suse.com>) id 1w8EuA-0006YY-R5
 for xen-devel@lists.xenproject.org; Thu, 02 Apr 2026 10:04:02 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1w8EuA-00F5J2-36
 for xen-devel@lists.xenproject.org; Thu, 02 Apr 2026 12:04:02 +0200
Received: from [10.42.69.11] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <jbeulich@suse.com>)
 id 69ce3f11-2eae-0a2a0a5409dd-0a2a450b8f02-2
 for <xen-devel@lists.xenproject.org>; Thu, 02 Apr 2026 12:04:01 +0200
Received: from [209.85.128.52] (helo=mail-wm1-f52.google.com)
 by tlsNG-42698a.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.0)
 (envelope-from <jbeulich@suse.com>)
 id 69ce3f11-bca8-0a2a450b0019-d1558034d03d-3
 for <xen-devel@lists.xenproject.org>; Thu, 02 Apr 2026 12:04:01 +0200
Received: by mail-wm1-f52.google.com with SMTP id
 5b1f17b1804b1-48702d51cd0so8413765e9.2
 for <xen-devel@lists.xenproject.org>; Thu, 02 Apr 2026 03:04:01 -0700 (PDT)
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-4888a626100sm104214135e9.1.2026.04.02.03.04.00
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Thu, 02 Apr 2026 03:04:00 -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=google header.d=suse.com header.i="@suse.com" header.h="Content-Transfer-Encoding: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=1775124241; x=1775729041; darn=lists.xenproject.org;
        h=content-transfer-encoding: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;
        bh=sEeSB2R8YMZaBkK4fuhIHo275MsR8H9lYYg2WvMdxmA=;
        b=fIU5SMFnsp/Km/TL3ZI7s9/JIhG02SHouOjCKgVj1GLBkoygYvNNOItkNztGOLl3zi
         UQQ/snKJ/R923r9ynRSfdSSucuYG7SLco0ND4w2w9YCfYS6ng3c0SXy7JBZnTLC/QD10
         HPvDLfieShtlLThfm0Cf5D8HDRt7KDo2d2Sl++daRq9ssWK7nGYMVM5asBQm1bqYpMEP
         soUkjxNTrMyb/G3fSyG1/Y65nLXyVenI66sM40ocr5hEt2IyyXXK9//oXzPnRCXWibcw
         6XmPgI8aKd/lCK7fs6GPpcE2RW3sxPtoB4MiwaRVtXy7ZrFjQ+dh+kewUb14ULAr+STa
         T99w==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20251104; t=1775124241; x=1775729041;
        h=content-transfer-encoding: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;
        bh=sEeSB2R8YMZaBkK4fuhIHo275MsR8H9lYYg2WvMdxmA=;
        b=Mq/bCGBG0sdxxG5fLlaJVSTzgJXH63++4r/79QRp1Lr+S+KOl4kVSi2KW4qbXpSnME
         wYmlbCO20LRPwI6/f8gD6gdQwEOt2mfJY4N0yCE3dsEAnpVy2EHI6OBCgRp8KvGmgCBZ
         isiU/FB85cSuD3KD/l8fJn2ahaLDgHzczZguNwaS3EMn10e7ZxO+PY6xDW3dDWs4czLa
         GrRjV21/zqid+UaJA4eKyN4/ZqFYr7AIk5ps9zl5j8gfOlNGWzAXucMYVQFESZnDWlju
         7VVamkFxxWiNwxerJWlc/IHZbWra/VRuN/yS30NV/YMptJKXVLSX9Z/2QjBr12JnM66W
         41EQ==
X-Forwarded-Encrypted: i=1; AJvYcCV+p1eEAPPtyXGWOP08UHM7zS1+Q9+ofNqYhpjVGFbA1zUbQy7pwIe9owZ6Kj8ecmewM7Vke4qwzj8=@lists.xenproject.org
X-Gm-Message-State: AOJu0YzoxnQZcI7rRAGSQWMrcRy3jz0d0cV6vd8bkg04KKviAK2dyK9i
	Hb7jXt2P9PZjEiwL5w2uFm03i6dEHXO9DvqE7hx/I82QRi7vW2anEvY/yM4SHWi/hg==
X-Gm-Gg: ATEYQzzDMrsP91ADaXwnykv3xxiKMqtI9Uft6HlOxdXtehWP5vnqi+whXLjfo5CMQRv
	+W/aFxAl5094OX3cpf1ZDUnBusGrWspIWTxk754n7vkK35xnb1zMAxpFui7amr8RNyfL7GGO7+M
	zu9p5uBYMzdWxs1DEuKFzCqbHFnpDmwXOzDCjGrt0XEC79z0vryJSqRd7sz4SuZAm1xJhtxoF0A
	ek6L/I5udA4zEUBN8eiczOireD0ZFyNw3+dk9oxQwzZ2BqQKbzrDP6YcObnlCe+QTHuD3Q+CsdL
	OuVM6mtrD57eMe6BlQYvqOCBvnys0vldMtQ3Us10NUhT3LKUiAKgNX0/dKXpRG5IUnspJcwAqbI
	NUARKCdnfTR4UgWa98m14tdvPC4mEjBpk9wfcvsY923rcGgTy26wLpyQbi3N/nUYIX05+KntWCn
	qx3ORl0QHmtAIjTshIR9Ir84/lcJOLT4NK2CVTHzqEeYxgcy7zt7G/TH7tAcTF++8htqC07kz+O
	eHxV+A7PAWhNKL5teV12s714g==
X-Received: by 2002:a05:600c:354a:b0:487:1fb4:7e1 with SMTP id 5b1f17b1804b1-48883592076mr113085105e9.22.1775124241164;
        Thu, 02 Apr 2026 03:04:01 -0700 (PDT)
Message-ID: <09fed304-685c-46a9-9159-72baa1721224@suse.com>
Date: Thu, 2 Apr 2026 12:03:59 +0200
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH v1 13/27] xen/riscv: add basic VGEIN management for AIA
 guests
To: Oleksii Kurochko <oleksii.kurochko@gmail.com>
Cc: Romain Caritey <Romain.Caritey@microchip.com>,
 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.pau@citrix.com>,
 Stefano Stabellini <sstabellini@kernel.org>, xen-devel@lists.xenproject.org
References: <cover.1773157782.git.oleksii.kurochko@gmail.com>
 <f358325514c91c540e0edf992ca51414a1964fe0.1773157782.git.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: <f358325514c91c540e0edf992ca51414a1964fe0.1773157782.git.oleksii.kurochko@gmail.com>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 7bit
X-purgate-ID: tlsNG-42698a/1775124241-F49CB2A1-DDE6FB35/0/0
X-purgate-type: clean
X-purgate-size: 7886

On 10.03.2026 18:08, Oleksii Kurochko wrote:
> AIA provides a hardware-accelerated mechanism for delivering external
> interrupts to domains via "guest interrupt files" located in IMSIC.
> A single physical hart can implement multiple such files (up to GEILEN),
> allowing several virtual harts to receive interrupts directly from hardware

Isn't use of such an optimization coming prematurely? Shouldn't this series
focus on getting basic functionality in place?

> --- a/xen/arch/riscv/aia.c
> +++ b/xen/arch/riscv/aia.c
> @@ -1,11 +1,24 @@
>  /* SPDX-License-Identifier: GPL-2.0-only */
>  
> +#include <xen/bitmap.h>
>  #include <xen/errno.h>
>  #include <xen/init.h>
>  #include <xen/sections.h>
> +#include <xen/sched.h>
> +#include <xen/spinlock.h>
>  #include <xen/types.h>
> +#include <xen/xvmalloc.h>
>  
> +#include <asm/aia.h>
>  #include <asm/cpufeature.h>
> +#include <asm/csr.h>
> +#include <asm/current.h>
> +
> +/*
> + * Bitmap for each physical cpus to detect which VS (guest)
> + * interrupt file id was used.
> + */
> +DEFINE_PER_CPU(struct vgein_bmp, vgein_bmp);

Why can this not be static? All management looks to be in this same file.

> @@ -14,12 +27,109 @@ bool aia_available(void)
>      return is_aia_available;
>  }
>  
> +int __init vgein_init(unsigned int cpu)

If this needs invoking once per CPU being brought up, it can't be __init.

Also - static?

> +{
> +    struct vgein_bmp *vgein = &per_cpu(vgein_bmp, cpu);
> +
> +    csr_write(CSR_HGEIE, -1UL);
> +    vgein->geilen = flsl(csr_read(CSR_HGEIE));
> +    csr_write(CSR_HGEIE, 0);
> +    if ( vgein->geilen )
> +        vgein->geilen--;

I don't understand this. The "len" in "geilen" stands for "length", I suppose,
i.e. the number of bits. Hmm, the spec itself is inconsistent: "The number of
bits implemented in hgeip and hgeie for guest external interrupts is UNSPECIFIED
and may be zero. This number is known as GEILEN." This may or may not include
bit 0 (which is implemented, but r/o zero). Then saying "Hence, if GEILEN is
nonzero, bits GEILEN:1 shall be writable in ..." suggests 0 isn't included, but
that's not unambiguous.

Anyway, may I suggest

    vgein->geilen = flsl(csr_read(CSR_HGEIE) >> 1);

instead?

> +    BUG_ON(!vgein->geilen);

You can return (an error, but see the respective remark on the earlier patch),
no need to crash the system. That return may want to come after the printk()
below, though.

> +    printk("cpu%d.geilen=%d\n", cpu, vgein->geilen);

As before - %u please with unsigned int.

> +    if ( !vgein->bmp )

Why would this check be needed?

> +    {
> +        vgein->bmp = xvzalloc_array(unsigned long, BITS_TO_LONGS(vgein->geilen));

With the determination above, isn't BITS_TO_LONGS(vgein->geilen) ==
BITS_PER_LONG in all cases? Surely you don't mean to runtime-allocate
space for a single unsigned long? So I wonder is the dimension used
is wrong.

If it isn't, dynamically allocating the owners array may be more
useful, as (on RV64) occupies a fixed 512 bytes right now.

> +        if ( !vgein->bmp )
> +            return -ENOMEM;
> +    }
> +
> +    spin_lock_init(&vgein->lock);
> +
> +    return 0;
> +}
> +
>  int __init aia_init(void)
>  {
> +    int rc = 0;
> +
>      if ( !riscv_isa_extension_available(NULL, RISCV_ISA_EXT_ssaia) )
>          return -ENODEV;
>  
> +    if ( (rc = vgein_init(0)) )
> +        return rc;
> +
>      is_aia_available = true;

Ah, this answers a question of mine on the earlier patch: This boolean
indicates more than just the extension being available. But why does
the description there not simply say so? How am I as a reviewer supposed
to know?

> -    return 0;
> +    return rc;
> +}
> +
> +unsigned int vgein_assign(struct vcpu *v)
> +{
> +    unsigned int vgein_id;
> +

Seemingly undue blank line.

> +    struct vgein_bmp *vgein_bmp = &per_cpu(vgein_bmp, v->processor);
> +    unsigned long *bmp = vgein_bmp->bmp;
> +    unsigned long flags;
> +
> +    spin_lock_irqsave(&vgein_bmp->lock, flags);
> +    vgein_id = bitmap_weight(bmp, vgein_bmp->geilen);

How can the ID to use be the number of bits which are set? This only works
if all set bits are contiguous at the bottom.

> +    /*
> +     * All vCPU guest interrupt files are used and we don't support a case
> +     * when number of vCPU on 1 pCPU is bigger then geilen.
> +     */

This wants checking in vgein_init() then. CPUs (beyond the boot one)
violating this should not be brought online.

> +    ASSERT(vgein_id < vgein_bmp->geilen);

What if not bit is available? By asserting, you assume the caller will not
call here when no ID is available. Yet there is no caller of this function,
so how can one verify whether this assertion is appropriate?

> +    bitmap_set(bmp, vgein_id, 1);

__set_bit()?

> +    spin_unlock_irqrestore(&vgein_bmp->lock, flags);
> +
> +    /*
> +     * The vgein_id shouldn't be zero, as it will indicate that no guest
> +     * external interrupt source is selected for VS-level external interrupts
> +     * according to RISC-V priviliged spec:
> +     *   8.2.1 Hypervisor Status Register (hstatus) in RISC-V priviliged spec:

Please avoid section numbers in such references. The section of this name
in the version I'm looking at is 21.2.1.

> +     *   The VGEIN (Virtual Guest External Interrupt Number) field selects
> +     *   a guest external interrupt source for VS-level external interrupts.
> +     *   VGEIN is a WLRL field that must be able to hold values between zero
> +     *   and the maximum guest external interrupt number (known as GEILEN),
> +     *   inclusive.
> +     *   When VGEIN=0, no guest external interrupt source is selected for
> +     *   VS-level external interrupts.
> +     */
> +    vgein_id++;

Related to my comment regarding GEILEN, this shouldn't be necessary. Keep
bits in their natural positions, and simply avoid using bit 0 (either by
setting it during init and then never clearing it, or by starting the
scan for clear bits at bit 1).

> +#ifdef VGEIN_DEBUG
> +    printk("%s: %pv: vgein_id(%u), xen_cpu%d_bmp=%#lx\n",
> +           __func__, v, vgein_id, v->processor, *bmp);
> +#endif
> +
> +    vcpu_guest_cpu_user_regs(v)->hstatus &= ~HSTATUS_VGEIN;
> +    vcpu_guest_cpu_user_regs(v)->hstatus |=
> +        MASK_INSR(vgein_id, HSTATUS_VGEIN);

When is this function going to be invoked? (As before, not knowing this is
one of the problems with introducing functions with no callers.)

> +    return vgein_id;
> +}
> +
> +void vgein_release(struct vcpu *v, unsigned int vgen_id)
> +{
> +    unsigned long flags;
> +

Another seemingly stray blank line.

> +    struct vgein_bmp *vgein_bmp = &per_cpu(vgein_bmp, v->processor);
> +
> +    spin_lock_irqsave(&vgein_bmp->lock, flags);
> +    bitmap_clear(vgein_bmp->bmp, vgen_id - 1, 1);

__clear_bit()?

> +    spin_unlock_irqrestore(&vgein_bmp->lock, flags);
> +
> +#ifdef VGEIN_DEBUG
> +    printk("%s: vgein_id(%u), xen_cpu%d_bmp=%#lx\n",
> +           __func__, vgen_id, v->processor, *vgein_bmp->bmp);

I can't spot a difference from the message in vgein_assign(). How is one
to distinguish the two in a log?

> --- a/xen/arch/riscv/include/asm/aia.h
> +++ b/xen/arch/riscv/include/asm/aia.h
> @@ -3,8 +3,26 @@
>  #ifndef ASM__RISCV__AIA_H
>  #define ASM__RISCV__AIA_H
>  
> +#include <xen/percpu.h>
> +#include <xen/spinlock.h>
> +
> +struct vcpu;
> +
> +struct vgein_bmp {

What does the _bmp suffix indicate here? There's ...

> +    unsigned long *bmp;

... a bitmap field, yes, but ...

> +    spinlock_t lock;
> +    struct vcpu *owners[BITS_PER_LONG];
> +    unsigned int geilen;
> +};

... the structure as a whole has quite a bit more.

Jan


From xen-devel-bounces@lists.xenproject.org Thu Apr 02 10:26:20 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 02 Apr 2026 10:26:20 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1271499.1559619 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1w8FFd-000166-E0; Thu, 02 Apr 2026 10:26:13 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1271499.1559619; Thu, 02 Apr 2026 10:26: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 1w8FFd-00015z-BQ; Thu, 02 Apr 2026 10:26:13 +0000
Received: by outflank-mailman (input) for mailman id 1271499;
 Thu, 02 Apr 2026 10:26:11 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <jbeulich@suse.com>) id 1w8FFb-00015s-HM
 for xen-devel@lists.xenproject.org; Thu, 02 Apr 2026 10:26:11 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1w8FFa-008YTB-QH
 for xen-devel@lists.xenproject.org; Thu, 02 Apr 2026 12:26:10 +0200
Received: from [10.42.69.2] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <jbeulich@suse.com>)
 id 69ce442e-2eae-0a2a0a5409dd-0a2a4502b270-44
 for <xen-devel@lists.xenproject.org>; Thu, 02 Apr 2026 12:26:10 +0200
Received: from [209.85.221.51] (helo=mail-wr1-f51.google.com)
 by tlsNG-720697.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.0)
 (envelope-from <jbeulich@suse.com>)
 id 69ce438d-42fa-0a2a45020019-d155dd33f094-3
 for <xen-devel@lists.xenproject.org>; Thu, 02 Apr 2026 12:23:10 +0200
Received: by mail-wr1-f51.google.com with SMTP id
 ffacd0b85a97d-43d23305225so290635f8f.2
 for <xen-devel@lists.xenproject.org>; Thu, 02 Apr 2026 03:23:10 -0700 (PDT)
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-43d1e4f5016sm7290604f8f.33.2026.04.02.03.23.08
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Thu, 02 Apr 2026 03:23:09 -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=google header.d=suse.com header.i="@suse.com" header.h="Content-Transfer-Encoding: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=1775125389; x=1775730189; darn=lists.xenproject.org;
        h=content-transfer-encoding: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;
        bh=TByXgXUf0dXmY7eeNlUMjgWwY1dliRPveG2PCCoifUQ=;
        b=R8DTZ8J/CBD6TOwPi8Lvyy1rUB4gC0M3ApxUxKDeb5ZQHpfdzQ09wgDVi0np79wNMx
         SC0p0UigZ57Z5BlX7BF0nQoKL4xC4LSiCCFu+DdtH5sWckWU2h7mUzTXwYyR24nn6bcH
         LBqDlxHj9o+V6LxpLajz6dafrE/GtHK4JGYUS31TZ0dJDLUnyLUEeZyvz9xRWX6f1pve
         mgGdrHqk+5bf4KR8HpeBwydH9tLEuLtn2p+DWok9qployoHiqb/anRj6DE8X+oOGWYxr
         29u25kJSXktj6noJt/h5/SPxPdQvupKy+vTo7+eMPlDb0ktSv0ob5M6t+QvZ5UKWFGP1
         3uaw==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20251104; t=1775125389; x=1775730189;
        h=content-transfer-encoding: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;
        bh=TByXgXUf0dXmY7eeNlUMjgWwY1dliRPveG2PCCoifUQ=;
        b=q8T3uLcI2Ps/VC1z53QdVzqEi/9SHvNCOs0rp/0tjubJ5nksr7Q84wz7DTxY+txPYV
         YaO3GGxFbtkZwx+FE3SJKA5U6rkOIA5KzBDKl/VK9pyS1FV6JAy3pncwPEsIzvCp685y
         QwLflgxjg+8cmNj9z1kkP9HJzdlXVBpjp6fAPfTXxgfp50VkZZ+2WZhjI196IcwjRdpc
         jfXN2Dzp0Y8cMOJZ4kJOPfq6Vktut17b3rSEUsqTbEa+oXDiBQv6kqnOIdSnxH+3d+Py
         edb3VBFnhMseLSikN2+l8nnqesrVLWtJsWttia3HdU4IIQYDjXxjPqwwydP5QoiIti41
         Mj2A==
X-Gm-Message-State: AOJu0YxXChRj3tzGjHDNDhIcRMt5Y0MEiXNgO93zeSgtil7E7H/6lxMo
	HUW7n65pW7O4AM+QGJb/llXepLLeVa5t1ER+rUq+ID/CmsbDN2yDv32MIk/6xorGoA==
X-Gm-Gg: AeBDiev3Zbw69GX4GeV8mAOFofnN2Cqp1b5qAGpmgAo7lEE4Lp4Q0v5NNYe2RwEn21m
	7ooGSYGrsrDsFZFIaLHOd7TgIEaYPdn2h2LUpCw3XdsBoibu7P627NPdicmX8wngXjXIPZli8ZD
	kpr0aI2Z0u6JodchBiF1WYi3naPsMsAk79iJNOrLkGsgmNqLR1Q8QbacRS4RAQUZg+HT3MCZxft
	QK5CJlKApg4u/BzRj/LP1TAXhdJ1gh5ZwcN4czl16hYXS6qteqOnTxSSve1vkEmqmcfTmPpPttk
	qx0q6lfhVQfHNoQVBPqABujVn0livJqsGgKZCEddhUZCA7Uir+jiIfqjYTZjRST0G2Ka0L/5FWD
	R4RIu1mHd1rkHgvP2GDdZhtVeRzNHih64r6cGDX7ntXBj2e6JFI1YpVnKnSWT7CAxwFb1O/PlwX
	2xwz1E0iU2n6LJjyCEvltsdlizXE6VVzK7oUuGCR8aacPoblGT8v8Zwy8rQ3AguCgCpptX8yh7x
	Wbo80zr0o8QPrw=
X-Received: by 2002:a5d:584a:0:b0:43b:5672:efe with SMTP id ffacd0b85a97d-43d150488e1mr13247849f8f.9.1775125389460;
        Thu, 02 Apr 2026 03:23:09 -0700 (PDT)
Message-ID: <0b284c32-4dd3-4663-881b-834c47070328@suse.com>
Date: Thu, 2 Apr 2026 12:23:08 +0200
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: IOMMU faults after S3
To: =?UTF-8?Q?Marek_Marczykowski-G=C3=B3recki?=
 <marmarek@invisiblethingslab.com>, Andrew Cooper <andrew.cooper3@citrix.com>
Cc: xen-devel <xen-devel@lists.xenproject.org>,
 =?UTF-8?Q?Roger_Pau_Monn=C3=A9?= <roger.pau@citrix.com>
References: <acZZmGXIJlmN3KGm@mail-itl>
 <e8bbaae2-5cff-4549-9f27-fbbda7346f60@suse.com>
 <090b8b8f-141b-4a24-92eb-879c0a0c73e1@suse.com> <ac2nibFfvGm_7elv@mail-itl>
 <933a3e95-33d2-4e20-a4d5-2d8b20c2da7f@suse.com> <ac4kCq87SQSc6ddV@mail-itl>
 <aa6910f1-365a-4534-b229-9730b3aede02@suse.com>
 <97bfb299-a465-48a3-a036-f217de683c2c@suse.com> <ac46HK_KiUaLdK4N@mail-itl>
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: <ac46HK_KiUaLdK4N@mail-itl>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
X-purgate-ID: tlsNG-720697/1775125390-AEF21CD1-987A9CF9/13/0
X-purgate-type: clean
X-purgate-size: 3288

On 02.04.2026 11:42, Marek Marczykowski-Górecki wrote:
> On Thu, Apr 02, 2026 at 10:47:53AM +0200, Jan Beulich wrote:
>> On 02.04.2026 10:39, Jan Beulich wrote:
>>> On 02.04.2026 10:08, Marek Marczykowski-Górecki wrote:
>>>> The xl dmesg output (from MTL this time):
>>>>
>>>>     (XEN) [  123.477511] Entering ACPI S3 state.
>>>>     (XEN) [18446743903.571842] _disable_pit_irq:2649: using_pit: 0, cpu_has_apic: 1
>>>>     (XEN) [18446743903.571856] _disable_pit_irq:2659: cpuidle_using_deep_cstate: 1, boot_cpu_has(X86_FEATURE_XEN_ARAT): 0
>>>
>>> XEN_ARAT being off is the one odd aspect here. That'll want tracking down
>>> separately. As per xen-cpuid output (below) ARAT is available.
>>
>> For this you may want to also add logging to intel_init_arat(): Since opt_arat
>> can be false only due to command line option use, it can only be the function
>> not being called (which looks impossible on plain staging code), or cpu_has_arat
>> being false despite the xen-cpuid output that you supplied earlier (inexplicable
>> as well, at least for now).
> 
> Hm, I got this:
> 
>     (XEN) [   11.403340] intel_init_arat:674: opt_arat: 1, cpu_has_arat: 0
> 
> so, cpu_has_arat=0 ...
> next lines are those, to hint when it happened in the boot process:
> 
>     (XEN) [   11.409754] mwait-idle: MWAIT substates: 0x11112020
>     (XEN) [   11.416130] mwait-idle: v0.4.1 model 0xaa
>     (XEN) [   11.422396] mwait-idle: lapic_timer_reliable_states 0x2
> 
> Looks like calculate_host_policy() runs much later...

Hmm, yes, and that's the problem. The reason I don't see this is that a newer
version of [1] has this

--- a/xen/arch/x86/cpu/common.c
+++ b/xen/arch/x86/cpu/common.c
@@ -628,6 +628,8 @@ void identify_cpu(struct cpuinfo_x86 *c)
 	}
 
 	/* Now the feature flags better reflect actual CPU features! */
+	if (c == &boot_cpu_data)
+		calculate_host_policy();
 
 	xstate_init(c);
 
--- a/xen/arch/x86/cpu-policy.c
+++ b/xen/arch/x86/cpu-policy.c
@@ -384,7 +384,7 @@ void calculate_raw_cpu_policy(void)
     /* Was already added by probe_cpuid_faulting() */
 }
 
-static void __init calculate_host_policy(void)
+void __init calculate_host_policy(void)
 {
     struct cpu_policy *p = &host_cpu_policy;
 
@@ -959,6 +959,7 @@ static void __init calculate_hvm_def_pol
 
 void __init init_guest_cpu_policies(void)
 {
+    /* Do this a 2nd time to account for setup_{clear,force}_cpu_cap() uses. */
     calculate_host_policy();
 
     if ( IS_ENABLED(CONFIG_PV) )

and of course I'm doing my work (and my analysis) with that in place.

I may need to break this out and submit independently, but really the problem
here is that the containing series has been sitting largely unreviewed (and
hence not in a position to plausibly re-post) for almost 5 years. Andrew,
(maybe also Roger) - I'm open to suggestions how to proceed. When your xstate
cleanup patches were helped to go in ahead of mine, you promised to help mine
going in afterwards. Yet nothing has happened (and I'm tired of re-submitting
large pieces of work just for the sake of re-submitting, i.e. without having
has [sufficient] feedback on the earlier version).

Jan

[1] https://lists.xen.org/archives/html/xen-devel/2021-04/msg01336.html


From xen-devel-bounces@lists.xenproject.org Thu Apr 02 10:47:38 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 02 Apr 2026 10:47:38 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1271525.1559674 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1w8FaH-00055g-PN; Thu, 02 Apr 2026 10:47:33 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1271525.1559674; Thu, 02 Apr 2026 10:47: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 1w8FaH-00054u-KI; Thu, 02 Apr 2026 10:47:33 +0000
Received: by outflank-mailman (input) for mailman id 1271525;
 Thu, 02 Apr 2026 10:47:32 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <xakep.amatop@gmail.com>) id 1w8FaG-0004dR-6T
 for xen-devel@lists.xenproject.org; Thu, 02 Apr 2026 10:47:32 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1w8FaF-009qA7-JE
 for xen-devel@lists.xenproject.org; Thu, 02 Apr 2026 12:47:31 +0200
Received: from [10.42.69.12] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <xakep.amatop@gmail.com>)
 id 69ce4932-e002-0a2a0a5209dd-0a2a450cd128-32
 for <xen-devel@lists.xenproject.org>; Thu, 02 Apr 2026 12:47:31 +0200
Received: from [209.85.218.41] (helo=mail-ej1-f41.google.com)
 by tlsNG-d25034.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.0)
 (envelope-from <xakep.amatop@gmail.com>)
 id 69ce4943-f40c-0a2a450c0019-d155da29cd5e-3
 for <xen-devel@lists.xenproject.org>; Thu, 02 Apr 2026 12:47:31 +0200
Received: by mail-ej1-f41.google.com with SMTP id
 a640c23a62f3a-b9910707d82so95092866b.1
 for <xen-devel@lists.xenproject.org>; Thu, 02 Apr 2026 03:47:31 -0700 (PDT)
Received: from EPUAKYIW02F7.. ([45.12.26.38]) by smtp.gmail.com with ESMTPSA id
 a640c23a62f3a-b9c3d028955sm76392366b.61.2026.04.02.03.47.28
 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
 Thu, 02 Apr 2026 03:47:29 -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=20251104 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=20251104; t=1775126850; x=1775731650; 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;
        bh=qk9ILGeqhLaxN17ATAwS/XwCMf4ZnQc5O/7gi3JtyMs=;
        b=W2Opd3NOXDhqwaHjQ8eyEy6U8TOtgVfW0ynPPf7Fd9T/NOFIQ0to/UC5HxhgoxJyI3
         lgzK7pP/tpks1HUR6xY9FN1X56jp6+ETN3wYpcYMjmJcrE38QhXcIKUOt8D8BlLtTYrm
         IdlqM1fJHt3YE+y/EmXU8biawm+fQMT+8Rxz0TrigSbwjXwwpb7q3/m0NYk8935fndcG
         x53BXqZy3srjMaU633N+S6int/NTI09Dqf+dTxlSq7gFDfIHVdCOGweFCJ4UOoKpPCTf
         VZWWtY7G6j+yVi6qpbqc1aM8gtCKFu7/KLos/96hARe0ZqWVNZJIjIOZ79Bm9Kq3HSFF
         gjHg==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20251104; t=1775126850; x=1775731650;
        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;
        bh=qk9ILGeqhLaxN17ATAwS/XwCMf4ZnQc5O/7gi3JtyMs=;
        b=UTu3MV1++V0XV6ubyzlS37DUYWZQEC7Hb3iONDj7F5LxaJkqnjXG0k2nBvcFyq/b75
         yvKLHLfo7ZF+iVa98/dubLF+gZu23ICxRc53vAPaJHHHI1L+l9aYcfpdsT1IB6GfwCqb
         nWUpwgRqKvC3svXWEU34GqpFf19NaAY33blRRLhfY3vo6TrxQPcd4VzTw7veryglP7gf
         nZkZidzT3v8Rw8lI+1Q1+pI7CxLk//NpnLUAjfqp1MEtDE+jkcy4KZ66udj2kTdtqZcG
         YQGvieGENvp2DVJYSFYIoRHvWPLW1Qb4/EmZME0z2DlZlOsuJqcEQjHdSU/d3pGgGkzd
         J9aA==
X-Gm-Message-State: AOJu0Ywicsxvk28ncZC9mwKYtqpHqA1BruQUwhxuOcAwPmW2btH+OcUT
	4R+BQhjgP+CG/IvyHNGOAkWn2ne51pqgNX6VJRnOy+Ip4MYMAknCLTQ7PqCoGHET
X-Gm-Gg: ATEYQzxAOeTpy4iksfHwyIe24RYxH0ZLuVgZslhLrVNIVaegd+4BDpqFZiHqZrJSMur
	ziNXD91CgA0HKYO7K8n8GvM3cEEIe4+Czv9aPzIZLgeIGM7iD6g5Aut4qa+rwvTp2R/AvaThuWJ
	J6dj1bhCEJZIcPTwcSgYAylzN2jSSzfJRf6JREyoo1oGsDgibPdNBtUHM4EyY6BSkIfg253acef
	Pyuc3mksGqmWexInwnrQ6VnB3IW7WmzF0FgoBqL7w4hzKocDA2OXPmFq4b5waaHE9hKEEOaDIOe
	bNl4x8Xs5G/JY4JBrafI1JW7j2eKTB93OoK88a6e4an0HP8ci4CT41rYbN5DgM4uVfL3mS6t7MU
	Pd+4H5hCboc8zZwjFpunCaQHs4AdlU7cAikkWw9UyF5H6W5letnvXOOfFCI0DsiPGlpBvn9oBMr
	4+65b2aYxZHXxjEJPges2H07x22w==
X-Received: by 2002:a17:907:1c85:b0:b93:7d70:20a0 with SMTP id a640c23a62f3a-b9c137a08acmr482815566b.4.1775126850107;
        Thu, 02 Apr 2026 03:47:30 -0700 (PDT)
From: Mykola Kvach <xakep.amatop@gmail.com>
To: xen-devel@lists.xenproject.org
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>,
	Jan Beulich <jbeulich@suse.com>,
	=?UTF-8?q?Roger=20Pau=20Monn=C3=A9?= <roger.pau@citrix.com>
Subject: [PATCH v8 05/13] xen/arm: gic-v3: add ITS suspend/resume support
Date: Thu,  2 Apr 2026 13:45:06 +0300
Message-ID: <5a42b7c32fadf21262b8342f27e685916d0e5812.1775125380.git.mykola_kvach@epam.com>
X-Mailer: git-send-email 2.43.0
In-Reply-To: <cover.1775125380.git.mykola_kvach@epam.com>
References: <cover.1775125380.git.mykola_kvach@epam.com>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit
X-purgate-ID: tlsNG-d25034/1775126851-FE74EA3D-D1CDCDD3/0/0
X-purgate-type: clean
X-purgate-size: 9675

From: Mykola Kvach <mykola_kvach@epam.com>

Handle system suspend/resume for GICv3 with an ITS present so LPIs keep
working after firmware powers the GIC down. Snapshot the CPU interface,
distributor and last-CPU redistributor state, disable the ITS to cache its
CTLR/CBASER/BASER registers, then restore everything and re-arm the
collection on resume.

Add list_for_each_entry_continue_reverse() in list.h for the ITS suspend
error path that needs to roll back partially saved state.

Based on Linux commit dba0bc7b76dc ("irqchip/gic-v3-its: Add ability to save/restore ITS state")
Signed-off-by: Mykola Kvach <mykola_kvach@epam.com>
---
Changes in V8:
- Reword the CBASER/CWRITER comment to match Xen and drop the stale Linux
  cmd_write reference.
- Clarify the list_for_each_entry_continue_reverse() comment.
- Factor out per-ITS helpers for collection setup and resume.
- Restore each ITS and re-establish its collection mapping in the same
  loop, so a failed ITS resume is not followed by MAPC/SYNC on that
  un-restored instance.
- panic in case when resume of an ITS failed
- cleanup baser cache during suspend
---
 xen/arch/arm/gic-v3-its.c             | 126 ++++++++++++++++++++++++--
 xen/arch/arm/gic-v3.c                 |  15 ++-
 xen/arch/arm/include/asm/gic_v3_its.h |  23 +++++
 xen/include/xen/list.h                |  14 +++
 4 files changed, 166 insertions(+), 12 deletions(-)

diff --git a/xen/arch/arm/gic-v3-its.c b/xen/arch/arm/gic-v3-its.c
index 9ba068c46f..fe2865eac9 100644
--- a/xen/arch/arm/gic-v3-its.c
+++ b/xen/arch/arm/gic-v3-its.c
@@ -335,6 +335,22 @@ static int its_send_cmd_inv(struct host_its *its,
     return its_send_command(its, cmd);
 }
 
+static int gicv3_its_setup_collection_single(struct host_its *its,
+                                             unsigned int cpu)
+{
+    int ret;
+
+    ret = its_send_cmd_mapc(its, cpu, cpu);
+    if ( ret )
+        return ret;
+
+    ret = its_send_cmd_sync(its, cpu);
+    if ( ret )
+        return ret;
+
+    return gicv3_its_wait_commands(its);
+}
+
 /* Set up the (1:1) collection mapping for the given host CPU. */
 int gicv3_its_setup_collection(unsigned int cpu)
 {
@@ -343,15 +359,7 @@ int gicv3_its_setup_collection(unsigned int cpu)
 
     list_for_each_entry(its, &host_its_list, entry)
     {
-        ret = its_send_cmd_mapc(its, cpu, cpu);
-        if ( ret )
-            return ret;
-
-        ret = its_send_cmd_sync(its, cpu);
-        if ( ret )
-            return ret;
-
-        ret = gicv3_its_wait_commands(its);
+        ret = gicv3_its_setup_collection_single(its, cpu);
         if ( ret )
             return ret;
     }
@@ -1209,6 +1217,106 @@ int gicv3_its_init(void)
     return 0;
 }
 
+#ifdef CONFIG_SYSTEM_SUSPEND
+int gicv3_its_suspend(void)
+{
+    struct host_its *its;
+    int ret;
+
+    list_for_each_entry(its, &host_its_list, entry)
+    {
+        unsigned int i;
+        void __iomem *base = its->its_base;
+
+        its->suspend_ctx.ctlr = readl_relaxed(base + GITS_CTLR);
+        ret = gicv3_disable_its(its);
+        if ( ret )
+        {
+            writel_relaxed(its->suspend_ctx.ctlr, base + GITS_CTLR);
+            goto err;
+        }
+
+        its->suspend_ctx.cbaser = readq_relaxed(base + GITS_CBASER);
+
+        for (i = 0; i < GITS_BASER_NR_REGS; i++)
+        {
+            uint64_t baser = readq_relaxed(base + GITS_BASER0 + i * 8);
+
+            its->suspend_ctx.baser[i] = 0;
+
+            if ( !(baser & GITS_VALID_BIT) )
+                continue;
+
+            its->suspend_ctx.baser[i] = baser;
+        }
+    }
+
+    return 0;
+
+ err:
+    list_for_each_entry_continue_reverse(its, &host_its_list, entry)
+        writel_relaxed(its->suspend_ctx.ctlr, its->its_base + GITS_CTLR);
+
+    return ret;
+}
+
+static int gicv3_its_resume_single(struct host_its *its, unsigned int cpu)
+{
+    void __iomem *base = its->its_base;
+    unsigned int i;
+    int ret;
+
+    /*
+     * Make sure that the ITS is disabled. If it fails to quiesce,
+     * don't restore it since writing to CBASER or BASER<n>
+     * registers is undefined according to the GIC v3 ITS
+     * Specification.
+     */
+    WARN_ON(readl_relaxed(base + GITS_CTLR) & GITS_CTLR_ENABLE);
+    ret = gicv3_disable_its(its);
+    if ( ret )
+        return ret;
+
+    writeq_relaxed(its->suspend_ctx.cbaser, base + GITS_CBASER);
+
+    /*
+     * Writing CBASER resets CREADR to 0, so reset CWRITER to
+     * keep the command queue pointers aligned.
+     */
+    writeq_relaxed(0, base + GITS_CWRITER);
+
+    /* Restore GITS_BASER from the value cache. */
+    for ( i = 0; i < GITS_BASER_NR_REGS; i++ )
+    {
+        uint64_t baser = its->suspend_ctx.baser[i];
+
+        if ( !(baser & GITS_VALID_BIT) )
+            continue;
+
+        writeq_relaxed(baser, base + GITS_BASER0 + i * 8);
+    }
+
+    writel_relaxed(its->suspend_ctx.ctlr, base + GITS_CTLR);
+
+    return gicv3_its_setup_collection_single(its, cpu);
+}
+
+void gicv3_its_resume(void)
+{
+    struct host_its *its;
+    unsigned int cpu = smp_processor_id();
+    int ret;
+
+    list_for_each_entry(its, &host_its_list, entry)
+    {
+        ret = gicv3_its_resume_single(its, cpu);
+        if ( ret )
+            panic("GICv3: ITS@%"PRIpaddr": failed to restore during resume: %d\n",
+                   its->addr, ret);
+    }
+}
+
+#endif /* CONFIG_SYSTEM_SUSPEND */
 
 /*
  * Local variables:
diff --git a/xen/arch/arm/gic-v3.c b/xen/arch/arm/gic-v3.c
index d182a71478..ef8318dd50 100644
--- a/xen/arch/arm/gic-v3.c
+++ b/xen/arch/arm/gic-v3.c
@@ -862,7 +862,7 @@ static bool gicv3_enable_lpis(void)
     return true;
 }
 
-static int __init gicv3_populate_rdist(void)
+static int gicv3_populate_rdist(void)
 {
     int i;
     uint32_t aff;
@@ -932,7 +932,7 @@ static int __init gicv3_populate_rdist(void)
                     ret = gicv3_lpi_init_rdist(ptr);
                     if ( ret && ret != -ENODEV && ret != -EBUSY )
                     {
-                        printk("GICv3: CPU%d: Cannot initialize LPIs: %u\n",
+                        printk("GICv3: CPU%d: Cannot initialize LPIs: %d\n",
                                smp_processor_id(), ret);
                         break;
                     }
@@ -2101,10 +2101,14 @@ static int gicv3_suspend(void)
 
     gicv3_disable_interface();
 
-    ret = gicv3_disable_redist();
+    ret = gicv3_its_suspend();
     if ( ret )
         goto out_enable_iface;
 
+    ret = gicv3_disable_redist();
+    if ( ret )
+        goto out_its_resume;
+
     /* Save GICR configuration */
     gicv3_redist_wait_for_rwp();
 
@@ -2140,6 +2144,9 @@ static int gicv3_suspend(void)
 
     return 0;
 
+ out_its_resume:
+    gicv3_its_resume();
+
  out_enable_iface:
     gicv3_hyp_enable(true);
     WRITE_SYSREG(gicv3_ctx.cpu.ctlr, ICC_CTLR_EL1);
@@ -2212,6 +2219,8 @@ static void gicv3_resume(void)
 
     gicv3_redist_wait_for_rwp();
 
+    gicv3_its_resume();
+
     WRITE_SYSREG(gicv3_ctx.cpu.sre_el2, ICC_SRE_EL2);
     isb();
 
diff --git a/xen/arch/arm/include/asm/gic_v3_its.h b/xen/arch/arm/include/asm/gic_v3_its.h
index 081bd19180..3ca74435c8 100644
--- a/xen/arch/arm/include/asm/gic_v3_its.h
+++ b/xen/arch/arm/include/asm/gic_v3_its.h
@@ -129,6 +129,13 @@ struct host_its {
     spinlock_t cmd_lock;
     void *cmd_buf;
     unsigned int flags;
+#ifdef CONFIG_SYSTEM_SUSPEND
+    struct suspend_ctx {
+        uint32_t ctlr;
+        uint64_t cbaser;
+        uint64_t baser[GITS_BASER_NR_REGS];
+    } suspend_ctx;
+#endif
 };
 
 /* Map a collection for this host CPU to each host ITS. */
@@ -205,6 +212,11 @@ uint64_t gicv3_its_get_cacheability(void);
 uint64_t gicv3_its_get_shareability(void);
 unsigned int gicv3_its_get_memflags(void);
 
+#ifdef CONFIG_SYSTEM_SUSPEND
+int gicv3_its_suspend(void);
+void gicv3_its_resume(void);
+#endif
+
 #else
 
 #ifdef CONFIG_ACPI
@@ -272,6 +284,17 @@ static inline int gicv3_its_make_hwdom_dt_nodes(const struct domain *d,
     return 0;
 }
 
+#ifdef CONFIG_SYSTEM_SUSPEND
+static inline int gicv3_its_suspend(void)
+{
+    return 0;
+}
+
+static inline void gicv3_its_resume(void)
+{
+}
+#endif
+
 #endif /* CONFIG_HAS_ITS */
 
 #endif
diff --git a/xen/include/xen/list.h b/xen/include/xen/list.h
index 98d8482dab..2aab274157 100644
--- a/xen/include/xen/list.h
+++ b/xen/include/xen/list.h
@@ -535,6 +535,20 @@ static inline void list_splice_init(struct list_head *list,
          &(pos)->member != (head);                                        \
          (pos) = list_entry((pos)->member.next, typeof(*(pos)), member))
 
+/**
+ * list_for_each_entry_continue_reverse - iterate backwards from the given point
+ * @pos:    the type * to use as a loop cursor.
+ * @head:   the head for your list.
+ * @member: the name of the list_head within the struct.
+ *
+ * Iterate over list of given type backwards, starting from the element previous
+ * to the current one in list order.
+ */
+#define list_for_each_entry_continue_reverse(pos, head, member)           \
+    for ((pos) = list_entry((pos)->member.prev, typeof(*(pos)), member);  \
+         &(pos)->member != (head);                                        \
+         (pos) = list_entry((pos)->member.prev, typeof(*(pos)), member))
+
 /**
  * list_for_each_entry_from - iterate over list of given type from the
  *                            current point
-- 
2.43.0



From xen-devel-bounces@lists.xenproject.org Thu Apr 02 10:47:38 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 02 Apr 2026 10:47:38 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1271520.1559634 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1w8FaD-00045P-Di; Thu, 02 Apr 2026 10:47:29 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1271520.1559634; Thu, 02 Apr 2026 10:47: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 1w8FaD-00044A-Ah; Thu, 02 Apr 2026 10:47:29 +0000
Received: by outflank-mailman (input) for mailman id 1271520;
 Thu, 02 Apr 2026 10:47:28 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <xakep.amatop@gmail.com>) id 1w8FaC-0003yr-3q
 for xen-devel@lists.xenproject.org; Thu, 02 Apr 2026 10:47:28 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1w8FaB-009q68-FZ
 for xen-devel@lists.xenproject.org; Thu, 02 Apr 2026 12:47:27 +0200
Received: from [10.42.69.10] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <xakep.amatop@gmail.com>)
 id 69ce493f-e002-0a2a0a5209dd-0a2a450a8a2e-0
 for <xen-devel@lists.xenproject.org>; Thu, 02 Apr 2026 12:47:27 +0200
Received: from [209.85.218.46] (helo=mail-ej1-f46.google.com)
 by tlsNG-4011c0.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.0)
 (envelope-from <xakep.amatop@gmail.com>)
 id 69ce493f-ee98-0a2a450a0019-d155da2edc71-3
 for <xen-devel@lists.xenproject.org>; Thu, 02 Apr 2026 12:47:27 +0200
Received: by mail-ej1-f46.google.com with SMTP id
 a640c23a62f3a-b9c280322e0so86796966b.0
 for <xen-devel@lists.xenproject.org>; Thu, 02 Apr 2026 03:47:27 -0700 (PDT)
Received: from EPUAKYIW02F7.. ([45.12.26.38]) by smtp.gmail.com with ESMTPSA id
 a640c23a62f3a-b9c3d028955sm76392366b.61.2026.04.02.03.47.25
 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
 Thu, 02 Apr 2026 03:47:25 -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=20251104 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=20251104; t=1775126846; x=1775731646; 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;
        bh=Q0cUh9DunvbioAZLIRhQfJTs0EihHFj+/wkrJJoLmJs=;
        b=DgsaPB8gZzUseSYFpEQGPQeE1chIRot2lr90k5iTVS6HNsRvjL3FdDv9QcOPCABT/P
         A1uq2WUW68cKqRyyEpnDc/+DjEbG4e+8Ckbkvt60Xup+8z3aJXEx7pIhTO/PulvORb0M
         9bEHd0M4vf8yhjWS/WAfyuhw8JOuZhfSSQfWxX+O8iYaJ63cucfQCkGwnaCorqVfJnro
         XKEz2jTeXX6KIgAYP8n/agVJpnNx8vREO4etwfGlzvoioHL5GeQ7LAeMqERcZ32dPl2M
         uiVN5oiWafmVmjIVEsmSZiJhZATbMvVdWF3+M8mT7eKayh9En1uGB2fN6AX/IyotDxQW
         0MSQ==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20251104; t=1775126846; x=1775731646;
        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;
        bh=Q0cUh9DunvbioAZLIRhQfJTs0EihHFj+/wkrJJoLmJs=;
        b=gZytgkB6vKqyY+dzHO/Y3UaM+13tJKlw+dFJNCQWe4CbX+lN/K3foXvpeQ1v0NimgN
         lDJLqERFzNfYbYX1xuADkMxedSkSoUA7UPPwuX1DGXe6V66HgXcFYRW9mEAnJl+Uvaaj
         PPE/OJlEmmHDhyhxcJccJQP9EoBRJp68++qQNoOe4ukupiH/xj4i/L2jxANYSmKeYusA
         lCgqxqfZDv/06LKUjvuX3swEwaGydpc0/JCt3oklcU24MnPUy541RFtsv0garZQfqaIb
         ihujNOBI4UYDa4GQF13vsd/G1WD2fcCBn8yyr64zldZTxX/pt7f8CSp61j+dHP7rcWav
         /Jhw==
X-Gm-Message-State: AOJu0YzSR2/+zYY8IW1ws+/2d3y6DFr9rR8PE/UJX+h7fjoOpPtDg5Ed
	4iLjluHt81Mwyq+cwZq5jsWhoEzgHS/iZEqWNzP+W6eHjKchjm9t7P19EdhUZkwJ
X-Gm-Gg: ATEYQzycnmdYyIMhm/MJPwYLF7L3O+oWUJka+LdoaEBitdbYA/okopmmhNwrx5lgvRS
	h9ZJ5iOE1dUSnTPBAd2IftxPwQfdbv+pPYlBXl5xFFMa6ov9FaqLK+I3WSyNQYSDSiW2bGRKWm2
	k1VbNk04LOngCGVLpGG9DyXsU/kp+P9w7wxFZbbb6K7e85F1YcTZ/zhe74v5c4rgxzJsY6KXVxX
	l9095o1BJELbpFn7mhDC93VWriz3fQ9YY5wZ/s1WKcqMI4NNT9+oV1Nu7jorJltelUl0To31mTv
	35VK/XDlqbANtbZrFFyLXP9aPpXObSfY+r0ivWzeWzebKZYL1UYRpRX9eVd8eL2ldawfO3y0b8d
	crrn4WGwjHF9VP3d8uyOZlNleA61UH4Ix+ESMSKd30VA1lj+gcS+ufhAEGc6ucwQwxXrWqhEg3X
	T34dyHGRmq96oUkzG0CDdUvPc/K+2wrEOt2hJj
X-Received: by 2002:a17:907:724d:b0:b97:98b3:67ce with SMTP id a640c23a62f3a-b9c13b3ccc9mr480119866b.32.1775126845902;
        Thu, 02 Apr 2026 03:47:25 -0700 (PDT)
From: Mykola Kvach <xakep.amatop@gmail.com>
To: xen-devel@lists.xenproject.org
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>,
	Julien Grall <jgrall@amazon.com>
Subject: [PATCH v8 01/13] xen/arm: Add suspend and resume timer helpers
Date: Thu,  2 Apr 2026 13:45:02 +0300
Message-ID: <9b5e454f55d20d3e81771da53ae06fb511bd198e.1775125380.git.mykola_kvach@epam.com>
X-Mailer: git-send-email 2.43.0
In-Reply-To: <cover.1775125380.git.mykola_kvach@epam.com>
References: <cover.1775125380.git.mykola_kvach@epam.com>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit
X-purgate-ID: tlsNG-4011c0/1775126847-0F3490B1-23AF1613/0/0
X-purgate-type: clean
X-purgate-size: 5007

From: Mirela Simonovic <mirela.simonovic@aggios.com>

Timer interrupts must be disabled while the system is suspended to prevent
spurious wake-ups. Suspending timers in Xen consists of disabling the
physical timer and the hypervisor timer on the current CPU. The virtual
timer does not need explicit handling here, as it is already disabled on
vCPU context switch and its state is restored per-vCPU on the next context
restore.

Resuming consists of raising TIMER_SOFTIRQ, which prompts the generic
timer code to reprogram the hypervisor timer with the correct timeout.

Xen does not use or expose the physical timer, so it remains disabled
across suspend/resume.

Introduce a new helper, disable_phys_hyp_timers(), to encapsulate disabling
of the physical and hypervisor timers.

Signed-off-by: Mirela Simonovic <mirela.simonovic@aggios.com>
Signed-off-by: Saeed Nowshadi <saeed.nowshadi@xilinx.com>
Signed-off-by: Mykola Kvach <mykola_kvach@epam.com>
Acked-by: Julien Grall <jgrall@amazon.com>
---
Changes in V7:
  - Dropped EL1/EL2 wording; use "physical timer" and "hypervisor timer"
  - Renamed helper to disable_phys_hyp_timers() to reflect its actual scope
  - Clarified virtual timer handling (disabled on vCPU switch-out, restored on
    context restore) and added comments in suspend/resume paths
  - Added resume comment explaining which timers are restored by TIMER_SOFTIRQ
---
 xen/arch/arm/include/asm/time.h |  5 ++++
 xen/arch/arm/time.c             | 44 ++++++++++++++++++++++++++++-----
 2 files changed, 43 insertions(+), 6 deletions(-)

diff --git a/xen/arch/arm/include/asm/time.h b/xen/arch/arm/include/asm/time.h
index c194dbb9f5..9313b157ea 100644
--- a/xen/arch/arm/include/asm/time.h
+++ b/xen/arch/arm/include/asm/time.h
@@ -105,6 +105,11 @@ void preinit_xen_time(void);
 
 void force_update_vcpu_system_time(struct vcpu *v);
 
+#ifdef CONFIG_SYSTEM_SUSPEND
+void time_suspend(void);
+void time_resume(void);
+#endif /* CONFIG_SYSTEM_SUSPEND */
+
 #endif /* __ARM_TIME_H__ */
 /*
  * Local variables:
diff --git a/xen/arch/arm/time.c b/xen/arch/arm/time.c
index a12912a106..f91dc64099 100644
--- a/xen/arch/arm/time.c
+++ b/xen/arch/arm/time.c
@@ -296,6 +296,14 @@ static void check_timer_irq_cfg(unsigned int irq, const char *which)
 static DEFINE_PER_CPU_READ_MOSTLY(struct irqaction, irq_hyp);
 static DEFINE_PER_CPU_READ_MOSTLY(struct irqaction, irq_virt);
 
+/* Disable physical and hypervisor timers on the current CPU */
+static inline void disable_phys_hyp_timers(void)
+{
+    WRITE_SYSREG(0, CNTP_CTL_EL0);    /* Physical timer disabled */
+    WRITE_SYSREG(0, CNTHP_CTL_EL2);   /* Hypervisor's timer disabled */
+    isb();
+}
+
 /* Set up the timer interrupt on this CPU */
 void init_timer_interrupt(void)
 {
@@ -306,9 +314,7 @@ void init_timer_interrupt(void)
     WRITE_SYSREG64(0, CNTVOFF_EL2);     /* No VM-specific offset */
     /* Do not let the VMs program the physical timer, only read the physical counter */
     WRITE_SYSREG(CNTHCTL_EL2_EL1PCTEN, CNTHCTL_EL2);
-    WRITE_SYSREG(0, CNTP_CTL_EL0);    /* Physical timer disabled */
-    WRITE_SYSREG(0, CNTHP_CTL_EL2);   /* Hypervisor's timer disabled */
-    isb();
+    disable_phys_hyp_timers();
 
     hyp_action->name = "hyptimer";
     hyp_action->handler = htimer_interrupt;
@@ -333,9 +339,7 @@ void init_timer_interrupt(void)
  */
 static void deinit_timer_interrupt(void)
 {
-    WRITE_SYSREG(0, CNTP_CTL_EL0);    /* Disable physical timer */
-    WRITE_SYSREG(0, CNTHP_CTL_EL2);   /* Disable hypervisor's timer */
-    isb();
+    disable_phys_hyp_timers();
 
     release_irq(timer_irq[TIMER_HYP_PPI], NULL);
     release_irq(timer_irq[TIMER_VIRT_PPI], NULL);
@@ -375,6 +379,34 @@ void domain_set_time_offset(struct domain *d, int64_t time_offset_seconds)
     /* XXX update guest visible wallclock time */
 }
 
+#ifdef CONFIG_SYSTEM_SUSPEND
+
+void time_suspend(void)
+{
+    /* CNTV already disabled by virt_timer_save() during vcpu context switch. */
+    disable_phys_hyp_timers();
+}
+
+void time_resume(void)
+{
+    /*
+     * Raising TIMER_SOFTIRQ triggers generic timer code to reprogram the
+     * hypervisor timer with the correct timeout (not known here).
+     *
+     * Xen doesn't use or expose the physical timer, so it remains disabled
+     * across suspend/resume.
+     *
+     * The virtual timer state is restored per-vCPU on the next context switch.
+     *
+     * No further action is needed to restore timekeeping after power down,
+     * since the system counter is unaffected. See ARM DDI 0487 L.a, D12.1.2
+     * "The system counter must be implemented in an always-on power domain."
+     */
+    raise_softirq(TIMER_SOFTIRQ);
+}
+
+#endif /* CONFIG_SYSTEM_SUSPEND */
+
 static int cpu_time_callback(struct notifier_block *nfb,
                              unsigned long action,
                              void *hcpu)
-- 
2.43.0



From xen-devel-bounces@lists.xenproject.org Thu Apr 02 10:47:38 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 02 Apr 2026 10:47:38 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1271526.1559682 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1w8FaJ-0005NL-6z; Thu, 02 Apr 2026 10:47:35 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1271526.1559682; Thu, 02 Apr 2026 10:47: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 1w8FaJ-0005N0-3l; Thu, 02 Apr 2026 10:47:35 +0000
Received: by outflank-mailman (input) for mailman id 1271526;
 Thu, 02 Apr 2026 10:47:33 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <xakep.amatop@gmail.com>) id 1w8FaH-0004vd-62
 for xen-devel@lists.xenproject.org; Thu, 02 Apr 2026 10:47:33 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1w8FaG-00Ej0u-IP
 for xen-devel@lists.xenproject.org; Thu, 02 Apr 2026 12:47:32 +0200
Received: from [10.42.69.11] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <xakep.amatop@gmail.com>)
 id 69ce493d-2eae-0a2a0a5409dd-0a2a450be30c-20
 for <xen-devel@lists.xenproject.org>; Thu, 02 Apr 2026 12:47:32 +0200
Received: from [209.85.208.46] (helo=mail-ed1-f46.google.com)
 by tlsNG-42698a.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.0)
 (envelope-from <xakep.amatop@gmail.com>)
 id 69ce4944-bca8-0a2a450b0019-d155d02eadcf-3
 for <xen-devel@lists.xenproject.org>; Thu, 02 Apr 2026 12:47:32 +0200
Received: by mail-ed1-f46.google.com with SMTP id
 4fb4d7f45d1cf-65c4152313fso1006449a12.1
 for <xen-devel@lists.xenproject.org>; Thu, 02 Apr 2026 03:47:32 -0700 (PDT)
Received: from EPUAKYIW02F7.. ([45.12.26.38]) by smtp.gmail.com with ESMTPSA id
 a640c23a62f3a-b9c3d028955sm76392366b.61.2026.04.02.03.47.30
 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
 Thu, 02 Apr 2026 03:47:30 -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=20251104 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=20251104; t=1775126852; x=1775731652; 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;
        bh=Tm0K7gfsRpBFVrENvrubslPphiODpeHwAJ+aZ5FZLuc=;
        b=HFYnDybK1UebaDizt6eZk5c/4D3c+mPJXXC6AbSiViBhbZG5antkrqTM9lJUkh3ZGD
         neu0txMAzrokKucmGjVz+qCAU5oPoVFHgNO00ejSQdWPWJabozdybnkBVIc+46aD7KFc
         kRN//S1D/0uVC/AZywsm+MRozj4nEvC6ZWn2eLHKsxOcb9Zn0c4bmO9as6M5B9h/oQBF
         rRpkkoiBCRplhwBANaIGo64VeXvlgUNXvAVtelFJKnWwuQBXOqNpN6tnE6O3U+mdY6EI
         KhjTUuYCukQ3n5RW1ViuDMKzTrgp0O9s5zbe2xbOkeX+jiXzzsVJLmH/yub36nb/uTS9
         HsXg==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20251104; t=1775126852; x=1775731652;
        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;
        bh=Tm0K7gfsRpBFVrENvrubslPphiODpeHwAJ+aZ5FZLuc=;
        b=FlAzh8urW6VtDmpUrQ4PIzbfsw8YxRyC0u6808JRJo0JZGDcST3X4FB7izpnd+OmP/
         tiOZCgyqtnvKfHJOyqjhbNVn/lbYJ78gBTIfaA61mDLrowRxq6xdMwOFxrPoRLFX2Dyg
         elqeBC2BIIut92kS1thTWZHx1ZuLUqf4byz6zMdm0ga5hCicFvbeg4jS21GJG3wMLit4
         ymhdeg3ihvs1Q7n3HxSxkMpxJTSatorShWhTdLHZ+xtEt/IRkXWIxcWtQXebiTtvyGF4
         0h1NIDhLNxMvAle+UsvRJyiR5gHC3B9D8zRnsqYJEWz9kWNpS3bwiPABDWAjoQYBgpUL
         B4LQ==
X-Gm-Message-State: AOJu0YzDWOsv2om6poBHpliKwqJTujoEwPNq4xMV2CKCqe+YSVi8QIqC
	LFb7k1TuJj1v1+V4uuTldCLy/tE1Vgp04NiIXl10ear8U+Tscf5G2oBxUiG9sQ7N
X-Gm-Gg: ATEYQzzCqvHHryOIyPZlc0Jc1lLNhDkoNbLXIVl4tt/uNWAe/oKqOHEln4HuWOI1wSn
	pt1bxl6S5bJqKjj34NMcPejC8+HHwi6Z9gcgiMR65aYnEsm5x3M66jN2Ala/+m1vyrVve7QMvEa
	7047Hj6qnT/Gu3oAKcItDtMkRmDLrYfAn+SU+E7FDSumGInnIeeXiQgfmYyBT72zSbGdVj2pqQ+
	rhFUPRsc0lhZIIcoX3SzPteQp6C09i2HwBe7k5kcDL9H9+VMcZrNsDHtEsItdyVWFGC9vIuPItn
	YPBXQAxKr6B9w65gMSVMeNMGIq1ZWwFMQ/92fVCG68nTnYuEKzpq9LBkmG+myCfgUZ8mMjjav6A
	kgM/UwEtUrcz3peVq7q2w44UkeDSC2Jwf8y+b+YkcLhzAZVFZm4BduBKcLE/1PHYYgKs0/As3+V
	neZpebnNnjMkaT+Tx/A9yMlPX1RQ==
X-Received: by 2002:a17:906:6207:b0:b98:3d79:40c1 with SMTP id a640c23a62f3a-b9c13b0a2f2mr479932666b.33.1775126851612;
        Thu, 02 Apr 2026 03:47:31 -0700 (PDT)
From: Mykola Kvach <xakep.amatop@gmail.com>
To: xen-devel@lists.xenproject.org
Cc: Mykola Kvach <mykola_kvach@epam.com>,
	Volodymyr Babchuk <volodymyr_babchuk@epam.com>,
	Bertrand Marquis <bertrand.marquis@arm.com>,
	Jens Wiklander <jens.wiklander@linaro.org>,
	Stefano Stabellini <sstabellini@kernel.org>,
	Julien Grall <julien@xen.org>,
	Michal Orzel <michal.orzel@amd.com>
Subject: [PATCH v8 06/13] xen/arm: tee: keep init_tee_secondary() for hotplug and resume
Date: Thu,  2 Apr 2026 13:45:07 +0300
Message-ID: <666917e8e8e435640c272c19908f412c315b2dc6.1775125380.git.mykola_kvach@epam.com>
X-Mailer: git-send-email 2.43.0
In-Reply-To: <cover.1775125380.git.mykola_kvach@epam.com>
References: <cover.1775125380.git.mykola_kvach@epam.com>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit
X-purgate-ID: tlsNG-42698a/1775126852-1714D2A1-F11E7718/0/0
X-purgate-type: clean
X-purgate-size: 892

From: Mykola Kvach <mykola_kvach@epam.com>

init_tee_secondary() was marked __init and freed after boot. Calling it
from the CPU hotplug/resume path then executed discarded code, which
could crash Xen. Drop __init so the TEE mediator secondary init can run
safely on hotplugged and resumed CPUs.

Signed-off-by: Mykola Kvach <mykola_kvach@epam.com>
---
 xen/arch/arm/tee/tee.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/xen/arch/arm/tee/tee.c b/xen/arch/arm/tee/tee.c
index 8501443c8e..00e561fc78 100644
--- a/xen/arch/arm/tee/tee.c
+++ b/xen/arch/arm/tee/tee.c
@@ -128,7 +128,7 @@ static int __init tee_init(void)
 
 presmp_initcall(tee_init);
 
-void __init init_tee_secondary(void)
+void init_tee_secondary(void)
 {
     if ( cur_mediator && cur_mediator->ops->init_secondary )
         cur_mediator->ops->init_secondary();
-- 
2.43.0



From xen-devel-bounces@lists.xenproject.org Thu Apr 02 10:47:38 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 02 Apr 2026 10:47:38 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1271521.1559642 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1w8FaD-0004Ay-RV; Thu, 02 Apr 2026 10:47:29 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1271521.1559642; Thu, 02 Apr 2026 10:47: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 1w8FaD-00049E-K6; Thu, 02 Apr 2026 10:47:29 +0000
Received: by outflank-mailman (input) for mailman id 1271521;
 Thu, 02 Apr 2026 10:47:28 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <xakep.amatop@gmail.com>) id 1w8FaC-0003z0-Jl
 for xen-devel@lists.xenproject.org; Thu, 02 Apr 2026 10:47:28 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1w8FaC-009q68-0I
 for xen-devel@lists.xenproject.org; Thu, 02 Apr 2026 12:47:28 +0200
Received: from [10.42.69.7] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <xakep.amatop@gmail.com>)
 id 69ce4936-e002-0a2a0a5209dd-0a2a4507b904-28
 for <xen-devel@lists.xenproject.org>; Thu, 02 Apr 2026 12:47:27 +0200
Received: from [209.85.208.45] (helo=mail-ed1-f45.google.com)
 by tlsNG-ef75cf.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.0)
 (envelope-from <xakep.amatop@gmail.com>)
 id 69ce493f-ba2d-0a2a45070019-d155d02dccda-3
 for <xen-devel@lists.xenproject.org>; Thu, 02 Apr 2026 12:47:27 +0200
Received: by mail-ed1-f45.google.com with SMTP id
 4fb4d7f45d1cf-66bb66db39dso1187246a12.0
 for <xen-devel@lists.xenproject.org>; Thu, 02 Apr 2026 03:47:27 -0700 (PDT)
Received: from EPUAKYIW02F7.. ([45.12.26.38]) by smtp.gmail.com with ESMTPSA id
 a640c23a62f3a-b9c3d028955sm76392366b.61.2026.04.02.03.47.26
 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
 Thu, 02 Apr 2026 03:47:26 -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=20251104 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=20251104; t=1775126847; x=1775731647; 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;
        bh=C35Ftt8QbrUmubgD8i7RuPmnD1qKmnwaEWSlycGvL4g=;
        b=hz35lygR8MHzWP3b0MJ40QrwDo/zKjxPh3QFAgw2VXUr6o8r8OnexxoOyKpAfu2YN7
         ILh50Jm7ZBOD9fsRrNYy/oHlwfQoC9dI42DyNNkWvVCqRi10TNZkw8yIq10mZ96PQUcq
         NbozaB2x5vpGcIiuYlEW956StTwZS7SXMi9ipEOF7/ITinfwcLbrxNHEMgInXFrjCPff
         YGIIwwBRhf+Kz4QfR/wMjnMS9AUXH2NwF4FQoYj2f5brfyA/F8qHw6/zdxNAmhl8eE1g
         MVXVyFhs5mbU1aiNq2+86vucV11Pr7stNupPBkD+j5PVJ6vKhA/WmwaFuW7LJZ5oByoC
         Tkug==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20251104; t=1775126847; x=1775731647;
        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;
        bh=C35Ftt8QbrUmubgD8i7RuPmnD1qKmnwaEWSlycGvL4g=;
        b=jDcf+m3XnRP4P+Z/DHP5EHK622fDR5DWAJs7PQ3ql8gNP21b78deh5/9Bg+tFTttxQ
         7jMyPA+aUUtmdObE4NXETErnpKemOwXa8DMvn6ahKxkiDI4AjmwdNILMaGAW5B2yK5rr
         E/1zJRJe5dhKNTk3lqsCXJ7eoPYNKqbgvkYcMGOAMrnt0dD0IjHF7BXGWP9yOTLw8yyZ
         3dbWuwQgC5LHJrzCJmouYz/Mi1h7T8YaQMvLU37lnAGlu6j3UaztLYJkCtA9NymuTpMR
         8oSRsmRoIkhoeibvLNprxaVtwA41U90OLzaNVqWjXD0bPy1teU/JKHemPp6R7YEcr+2c
         b3rw==
X-Gm-Message-State: AOJu0Yyn2zBftPTsPqGSgZizwHqs8HPjW0Kv2MwmiemTAFKaThetmfuk
	r4dNZgfZRvalaEhqU0Jb1fzz3J8lHOJBhC3xqp7jvMItqdIyzjGwsplrBwpV8boG
X-Gm-Gg: ATEYQzziXu5ZR0leLvmKpAClf/UquHRzyNgfSBfgvYbG0w+AQNP9tg9UfYF7XY0aK6e
	ikdLwIYo9QBjD2h9Yj0V4Mkql/Le+yflnLtc79pyDALA+EdluqAWu5abUtCqIM1RoIvPbvi3cSK
	rmNBgeiN3gMOEAQZibQqGdfldfCNFH0yLvjX82Q5CH1YwKaz08U+e6+dJ2RYttxwBzN2Y4CBdbs
	JAZ3SON0ETksgg+j7b8Q8zuJ50m0XWroQ1w1Wnfcd1WAnMnhGaiV0BG1qGwqxY2zmLQjr9YDm9P
	K5tiZoLIApDLHcCGu8tfcBig2BSKAfLtD4UKeJV6qH9UGuOr2xIzh+fEfafqs3SLOFF7KVQIwej
	PaC3z0j9AvqXyL55eg9++Jsdo6Og8ugAJ/YLrMiqOZHwsGbJ7+Yvhl9Mh9l7vZb6XJx+FyXazkC
	DSiLyoWvOjA0mww0lKWWhWNkZXiQ==
X-Received: by 2002:a17:906:9582:b0:b97:464:956e with SMTP id a640c23a62f3a-b9c13b41d82mr319751366b.34.1775126846740;
        Thu, 02 Apr 2026 03:47:26 -0700 (PDT)
From: Mykola Kvach <xakep.amatop@gmail.com>
To: xen-devel@lists.xenproject.org
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>
Subject: [PATCH v8 02/13] xen/arm: gic-v2: Implement GIC suspend/resume functions
Date: Thu,  2 Apr 2026 13:45:03 +0300
Message-ID: <5e1951e1c17037e020de9c0eecb5fba94edcd9dd.1775125380.git.mykola_kvach@epam.com>
X-Mailer: git-send-email 2.43.0
In-Reply-To: <cover.1775125380.git.mykola_kvach@epam.com>
References: <cover.1775125380.git.mykola_kvach@epam.com>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit
X-purgate-ID: tlsNG-ef75cf/1775126847-1839741E-EDA16485/0/0
X-purgate-type: clean
X-purgate-size: 8460

From: Mirela Simonovic <mirela.simonovic@aggios.com>

System suspend may lead to a state where GIC would be powered down.
Therefore, Xen should save/restore the context of GIC on suspend/resume.

Note that the context consists of states of registers which are
controlled by the hypervisor. Other GIC registers which are accessible
by guests are saved/restored on context switch.

Signed-off-by: Mirela Simonovic <mirela.simonovic@aggios.com>
Signed-off-by: Saeed Nowshadi <saeed.nowshadi@xilinx.com>
Signed-off-by: Mykyta Poturai <mykyta_poturai@epam.com>
Signed-off-by: Mykola Kvach <mykola_kvach@epam.com>
---
Changes in V8:
- disable cpu interface + distributor before suspend
- change 0xffffffff to GENMASK;
- cosmetic changes;

Changes in V7:
- Allocate one contiguous memory block for the GICv2 dist suspend context.
- gicv2_resume() no longer unconditionally re-enables the distributor/CPU interface;
  it now writes back the saved CTLR values as-is.
- gicv2_alloc_context() now returns 0 on success and panics on failure, since
  suspend context allocation is not recoverable.
---
 xen/arch/arm/gic-v2.c          | 132 +++++++++++++++++++++++++++++++++
 xen/arch/arm/gic.c             |  29 ++++++++
 xen/arch/arm/include/asm/gic.h |  12 +++
 3 files changed, 173 insertions(+)

diff --git a/xen/arch/arm/gic-v2.c b/xen/arch/arm/gic-v2.c
index b23e72a3d0..dbff470962 100644
--- a/xen/arch/arm/gic-v2.c
+++ b/xen/arch/arm/gic-v2.c
@@ -1098,6 +1098,129 @@ static int gicv2_iomem_deny_access(struct domain *d)
     return iomem_deny_access(d, mfn, mfn + nr);
 }
 
+#ifdef CONFIG_SYSTEM_SUSPEND
+
+/* This struct represents block of 32 IRQs */
+struct irq_block {
+    uint32_t icfgr[2]; /* 2 registers of 16 IRQs each */
+    uint32_t ipriorityr[8];
+    uint32_t isenabler;
+    uint32_t isactiver;
+    uint32_t itargetsr[8];
+};
+
+/* GICv2 registers to be saved/restored on system suspend/resume */
+struct gicv2_context {
+    /* GICC context */
+    struct cpu_ctx {
+        uint32_t ctlr;
+        uint32_t pmr;
+        uint32_t bpr;
+    } cpu;
+
+    /* GICD context */
+    struct dist_ctx {
+        uint32_t ctlr;
+        /* Includes banked SGI/PPI state for the boot CPU. */
+        struct irq_block *irqs;
+    } dist;
+};
+
+static struct gicv2_context gic_ctx;
+
+static int gicv2_suspend(void)
+{
+    unsigned int i, blocks = DIV_ROUND_UP(gicv2_info.nr_lines, 32);
+
+    /* Save GICC_CTLR configuration. */
+    gic_ctx.cpu.ctlr = readl_gicc(GICC_CTLR);
+
+    /* Quiesce the GIC CPU interface before suspend. */
+    gicv2_cpu_disable();
+
+    /* Save GICD configuration */
+    gic_ctx.dist.ctlr = readl_gicd(GICD_CTLR);
+    writel_gicd(0, GICD_CTLR);
+
+    gic_ctx.cpu.pmr = readl_gicc(GICC_PMR);
+    gic_ctx.cpu.bpr = readl_gicc(GICC_BPR);
+
+    for ( i = 0; i < blocks; i++ )
+    {
+        struct irq_block *irqs = gic_ctx.dist.irqs + i;
+        size_t j, off = i * sizeof(irqs->isenabler);
+
+        irqs->isenabler = readl_gicd(GICD_ISENABLER + off);
+        irqs->isactiver = readl_gicd(GICD_ISACTIVER + off);
+
+        off = i * sizeof(irqs->ipriorityr);
+        for ( j = 0; j < ARRAY_SIZE(irqs->ipriorityr); j++ )
+        {
+            irqs->ipriorityr[j] = readl_gicd(GICD_IPRIORITYR + off + j * 4);
+            irqs->itargetsr[j] = readl_gicd(GICD_ITARGETSR + off + j * 4);
+        }
+
+        off = i * sizeof(irqs->icfgr);
+        for ( j = 0; j < ARRAY_SIZE(irqs->icfgr); j++ )
+            irqs->icfgr[j] = readl_gicd(GICD_ICFGR + off + j * 4);
+    }
+
+    return 0;
+}
+
+static void gicv2_resume(void)
+{
+    unsigned int i, blocks = DIV_ROUND_UP(gicv2_info.nr_lines, 32);
+
+    gicv2_cpu_disable();
+    /* Disable distributor */
+    writel_gicd(0, GICD_CTLR);
+
+    for ( i = 0; i < blocks; i++ )
+    {
+        struct irq_block *irqs = gic_ctx.dist.irqs + i;
+        size_t j, off = i * sizeof(irqs->isenabler);
+
+        writel_gicd(GENMASK(31, 0), GICD_ICENABLER + off);
+        writel_gicd(irqs->isenabler, GICD_ISENABLER + off);
+
+        writel_gicd(GENMASK(31, 0), GICD_ICACTIVER + off);
+        writel_gicd(irqs->isactiver, GICD_ISACTIVER + off);
+
+        off = i * sizeof(irqs->ipriorityr);
+        for ( j = 0; j < ARRAY_SIZE(irqs->ipriorityr); j++ )
+        {
+            writel_gicd(irqs->ipriorityr[j], GICD_IPRIORITYR + off + j * 4);
+            writel_gicd(irqs->itargetsr[j], GICD_ITARGETSR + off + j * 4);
+        }
+
+        off = i * sizeof(irqs->icfgr);
+        for ( j = 0; j < ARRAY_SIZE(irqs->icfgr); j++ )
+            writel_gicd(irqs->icfgr[j], GICD_ICFGR + off + j * 4);
+    }
+
+    /* Make sure all registers are restored and enable distributor */
+    writel_gicd(gic_ctx.dist.ctlr, GICD_CTLR);
+
+    /* Restore GIC CPU interface configuration */
+    writel_gicc(gic_ctx.cpu.pmr, GICC_PMR);
+    writel_gicc(gic_ctx.cpu.bpr, GICC_BPR);
+
+    /* Enable GIC CPU interface */
+    writel_gicc(gic_ctx.cpu.ctlr, GICC_CTLR);
+}
+
+static void __init gicv2_alloc_context(void)
+{
+    uint32_t blocks = DIV_ROUND_UP(gicv2_info.nr_lines, 32);
+
+    gic_ctx.dist.irqs = xzalloc_array(struct irq_block, blocks);
+    if ( !gic_ctx.dist.irqs )
+        panic("Failed to allocate memory for GICv2 suspend context\n");
+}
+
+#endif /* CONFIG_SYSTEM_SUSPEND */
+
 #ifdef CONFIG_ACPI
 static unsigned long gicv2_get_hwdom_extra_madt_size(const struct domain *d)
 {
@@ -1302,6 +1425,11 @@ static int __init gicv2_init(void)
 
     spin_unlock(&gicv2.lock);
 
+#ifdef CONFIG_SYSTEM_SUSPEND
+    /* Allocate memory to be used for saving GIC context during the suspend */
+    gicv2_alloc_context();
+#endif /* CONFIG_SYSTEM_SUSPEND */
+
     return 0;
 }
 
@@ -1345,6 +1473,10 @@ static const struct gic_hw_operations gicv2_ops = {
     .map_hwdom_extra_mappings = gicv2_map_hwdom_extra_mappings,
     .iomem_deny_access   = gicv2_iomem_deny_access,
     .do_LPI              = gicv2_do_LPI,
+#ifdef CONFIG_SYSTEM_SUSPEND
+    .suspend             = gicv2_suspend,
+    .resume              = gicv2_resume,
+#endif /* CONFIG_SYSTEM_SUSPEND */
 };
 
 /* Set up the GIC */
diff --git a/xen/arch/arm/gic.c b/xen/arch/arm/gic.c
index ee75258fc3..7727ffed5a 100644
--- a/xen/arch/arm/gic.c
+++ b/xen/arch/arm/gic.c
@@ -432,6 +432,35 @@ int gic_iomem_deny_access(struct domain *d)
     return gic_hw_ops->iomem_deny_access(d);
 }
 
+#ifdef CONFIG_SYSTEM_SUSPEND
+
+int gic_suspend(void)
+{
+    /* Must be called by boot CPU#0 with interrupts disabled */
+    ASSERT(!local_irq_is_enabled());
+    ASSERT(!smp_processor_id());
+
+    if ( !gic_hw_ops->suspend || !gic_hw_ops->resume )
+        return -ENOSYS;
+
+    return gic_hw_ops->suspend();
+}
+
+void gic_resume(void)
+{
+    /*
+     * Must be called by boot CPU#0 with interrupts disabled after gic_suspend
+     * has returned successfully.
+     */
+    ASSERT(!local_irq_is_enabled());
+    ASSERT(!smp_processor_id());
+    ASSERT(gic_hw_ops->resume);
+
+    gic_hw_ops->resume();
+}
+
+#endif /* CONFIG_SYSTEM_SUSPEND */
+
 static int cpu_gic_callback(struct notifier_block *nfb,
                             unsigned long action,
                             void *hcpu)
diff --git a/xen/arch/arm/include/asm/gic.h b/xen/arch/arm/include/asm/gic.h
index 8e713aa477..8e8f4ac4c5 100644
--- a/xen/arch/arm/include/asm/gic.h
+++ b/xen/arch/arm/include/asm/gic.h
@@ -280,6 +280,12 @@ extern int gicv_setup(struct domain *d);
 extern void gic_save_state(struct vcpu *v);
 extern void gic_restore_state(struct vcpu *v);
 
+#ifdef CONFIG_SYSTEM_SUSPEND
+/* Suspend/resume */
+extern int gic_suspend(void);
+extern void gic_resume(void);
+#endif /* CONFIG_SYSTEM_SUSPEND */
+
 /* SGI (AKA IPIs) */
 enum gic_sgi {
     GIC_SGI_EVENT_CHECK,
@@ -423,6 +429,12 @@ struct gic_hw_operations {
     int (*iomem_deny_access)(struct domain *d);
     /* Handle LPIs, which require special handling */
     void (*do_LPI)(unsigned int lpi);
+#ifdef CONFIG_SYSTEM_SUSPEND
+    /* Save GIC configuration due to the system suspend */
+    int (*suspend)(void);
+    /* Restore GIC configuration due to the system resume */
+    void (*resume)(void);
+#endif /* CONFIG_SYSTEM_SUSPEND */
 };
 
 extern const struct gic_hw_operations *gic_hw_ops;
-- 
2.43.0



From xen-devel-bounces@lists.xenproject.org Thu Apr 02 10:47:38 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 02 Apr 2026 10:47:38 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1271527.1559689 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1w8FaJ-0005RK-PK; Thu, 02 Apr 2026 10:47:35 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1271527.1559689; Thu, 02 Apr 2026 10:47: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 1w8FaJ-0005R1-GB; Thu, 02 Apr 2026 10:47:35 +0000
Received: by outflank-mailman (input) for mailman id 1271527;
 Thu, 02 Apr 2026 10:47:34 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <xakep.amatop@gmail.com>) id 1w8FaI-0005CF-8o
 for xen-devel@lists.xenproject.org; Thu, 02 Apr 2026 10:47:34 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1w8FaH-009qA7-Lh
 for xen-devel@lists.xenproject.org; Thu, 02 Apr 2026 12:47:33 +0200
Received: from [10.42.69.12] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <xakep.amatop@gmail.com>)
 id 69ce4932-e002-0a2a0a5209dd-0a2a450cd128-40
 for <xen-devel@lists.xenproject.org>; Thu, 02 Apr 2026 12:47:33 +0200
Received: from [209.85.218.49] (helo=mail-ej1-f49.google.com)
 by tlsNG-d25034.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.0)
 (envelope-from <xakep.amatop@gmail.com>)
 id 69ce4945-f40c-0a2a450c0019-d155da31ad3b-3
 for <xen-devel@lists.xenproject.org>; Thu, 02 Apr 2026 12:47:33 +0200
Received: by mail-ej1-f49.google.com with SMTP id
 a640c23a62f3a-b932fe2e1a7so84945766b.1
 for <xen-devel@lists.xenproject.org>; Thu, 02 Apr 2026 03:47:33 -0700 (PDT)
Received: from EPUAKYIW02F7.. ([45.12.26.38]) by smtp.gmail.com with ESMTPSA id
 a640c23a62f3a-b9c3d028955sm76392366b.61.2026.04.02.03.47.31
 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
 Thu, 02 Apr 2026 03:47:32 -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=20251104 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=20251104; t=1775126853; x=1775731653; 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;
        bh=E2TvwCSkEBb4iQcEjFfj1UiUN2JVsCuECcxIJOnRftY=;
        b=jRdeBmAlBkJ9d7HKYA1KQjZt6GAJcV3zxI57FF1bfypMIDOk29Q5LUJt+GfHevhl/6
         nmYuLiLgDgR8X8ULKWPvEfzvmF6DKwe2ZT4nIdBDkFZIoieRkoR9ucEPset5ELOvn1J8
         PG7OHn8JPTd/jpwwnTLek4JuFDGWcSDEtI8/6DbM/5vFckkImvfT8snl07grHHz0IdgQ
         EyYUCz8b4MAJXIAH34lcwhi9mgzouWpabG9gf504rCzJAKAmVaQODJqZztl1XTQsw5eY
         Wvu9WotApk4fkEXZQkrdtjQb+4kuDf7zj6LKQti6G/+Oe2mWQKdP1WDOEx/u2kwCK+X7
         28uA==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20251104; t=1775126853; x=1775731653;
        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;
        bh=E2TvwCSkEBb4iQcEjFfj1UiUN2JVsCuECcxIJOnRftY=;
        b=pk/Sn5S8f6f5Jd+huJEvjmV3RQOfPwM8QPuWz/TjmcxY7vudxAIg3omq8jqiPQTzd4
         VgMn8VnTBQVOAmspVxwgvZVcfpkaGFVKwp88tAn0rj8DnnbEZxdLOSaWvfaVjduk0yHn
         KEDJ6HCHbZpB34hNVQYM910V65Y3tP9Yl0CSyoucGlQlWfI00EmiVZlDFvRDIMSa1pi6
         zM232UvmnSBCqQEcDiTy6urGUqug2GvSowLDruMXXRaBTFDie+a4LIcZ1SbEtjGK2vDk
         p6k2DRAOBDvbrIx1oVM/OfiAE5Klo8BpX22tm/SZJlhjZBF+ImjyNZzl5AiPnVeioR4L
         cFkg==
X-Gm-Message-State: AOJu0YympHjsWZAXTF0MdK44dh71T/9up9yYNAMPEDQmQxYoJFu890aP
	qXcAI3r0Vij825KpUHSILdSvesOCwfAOaIe3LvKrFueQ9UItrzcADuVNX+crkz6G
X-Gm-Gg: ATEYQzzH20BgsMnl/jrvpnZDX9bb31UjHPdYvZk4bTq2i7uhIDxQlRyotzUwPlhDfXY
	Hpur2q8uikY71dLmP1ENLv1YKoqxmlVUISHpNYq1yTRQ9yTkqUp4NCEmLMOLrStGeZFbeWRR3GI
	hblxwoVGL4N0EA0bVpQtfDI5I0j4PE3xsTEUM6YQc/tS33Zpbq+4BMh2/Saww2CvBRIBztmzyFs
	fJKl7JZ1p08CUm6AeTJlRMKNKAXG+c9Kj3TUVbfF0cGl9LZqkG49t53KNd//rwAcupUn+cp28un
	mDH3CNZEBZS4UP123Ste+aX8DZsv58abKiJkTEd9kr6KC0xmfhlcKYXFgXfKOjZCoAO/b0MK9hk
	dU6Q26bjiQrbPAzb0Nlx9XM7BZHhVlAcIizkTHYNTK13qX7dvL2kmQQi4ZMAM+okwdcB/TYxHYz
	BfGe0Dp9K1M0w5VTEg2c9/MxSWIQ==
X-Received: by 2002:a17:906:ba84:b0:b94:2648:4672 with SMTP id a640c23a62f3a-b9c13b7bdbemr484677266b.41.1775126852622;
        Thu, 02 Apr 2026 03:47:32 -0700 (PDT)
From: Mykola Kvach <xakep.amatop@gmail.com>
To: xen-devel@lists.xenproject.org
Cc: Mykola Kvach <mykola_kvach@epam.com>,
	Volodymyr Babchuk <volodymyr_babchuk@epam.com>,
	Bertrand Marquis <bertrand.marquis@arm.com>,
	Jens Wiklander <jens.wiklander@linaro.org>,
	Stefano Stabellini <sstabellini@kernel.org>,
	Julien Grall <julien@xen.org>,
	Michal Orzel <michal.orzel@amd.com>
Subject: [PATCH v8 07/13] xen/arm: ffa: fix notification SRI across CPU hotplug/suspend
Date: Thu,  2 Apr 2026 13:45:08 +0300
Message-ID: <a977e246d1d0a32a6618efd1385ad178779c2a61.1775125380.git.mykola_kvach@epam.com>
X-Mailer: git-send-email 2.43.0
In-Reply-To: <cover.1775125380.git.mykola_kvach@epam.com>
References: <cover.1775125380.git.mykola_kvach@epam.com>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit
X-purgate-ID: tlsNG-d25034/1775126853-81557A3D-86A1C0B4/0/0
X-purgate-type: clean
X-purgate-size: 3590

From: Mykola Kvach <mykola_kvach@epam.com>

The FF-A notification SRI interrupt handler was not correctly tied to
CPU hotplug and suspend/resume. As a result, CPUs going offline and
back online could end up with stale or missing handlers, breaking
delivery of FF-A notifications.

Signed-off-by: Mykola Kvach <mykola_kvach@epam.com>
---
 xen/arch/arm/tee/ffa_notif.c | 63 ++++++++++++++++++++++++++++--------
 1 file changed, 50 insertions(+), 13 deletions(-)

diff --git a/xen/arch/arm/tee/ffa_notif.c b/xen/arch/arm/tee/ffa_notif.c
index 186e726412..513c399594 100644
--- a/xen/arch/arm/tee/ffa_notif.c
+++ b/xen/arch/arm/tee/ffa_notif.c
@@ -360,10 +360,28 @@ static int32_t ffa_notification_bitmap_destroy(uint16_t vm_id)
     return ffa_simple_call(FFA_NOTIFICATION_BITMAP_DESTROY, vm_id, 0, 0, 0);
 }
 
-void ffa_notif_init_interrupt(void)
+static DEFINE_PER_CPU_READ_MOSTLY(struct irqaction, sri_irq);
+
+static int request_sri_irq(void)
 {
     int ret;
+    struct irqaction *sri_action = &this_cpu(sri_irq);
+
+    sri_action->name = "FF-A notif";
+    sri_action->handler = notif_irq_handler;
+    sri_action->dev_id = NULL;
+    sri_action->free_on_release = 0;
+
+    ret = setup_irq(notif_sri_irq, 0, sri_action);
+    if ( ret )
+        printk(XENLOG_ERR "ffa: setup_irq irq %u failed: error %d\n",
+               notif_sri_irq, ret);
 
+    return ret;
+}
+
+void ffa_notif_init_interrupt(void)
+{
     if ( fw_notif_enabled && notif_sri_irq < NR_GIC_SGI )
     {
         /*
@@ -376,14 +394,36 @@ void ffa_notif_init_interrupt(void)
          * pending, while the SPMC in the secure world will not notice that
          * the interrupt was lost.
          */
-        ret = request_irq(notif_sri_irq, 0, notif_irq_handler, "FF-A notif",
-                          NULL);
-        if ( ret )
-            printk(XENLOG_ERR "ffa: request_irq irq %u failed: error %d\n",
-                   notif_sri_irq, ret);
+        request_sri_irq();
     }
 }
 
+static void deinit_ffa_notif_interrupt(void)
+{
+    if ( fw_notif_enabled && notif_sri_irq < NR_GIC_SGI )
+        release_irq(notif_sri_irq, NULL);
+}
+
+static int cpu_ffa_notif_callback(struct notifier_block *nfb,
+                                  unsigned long action,
+                                  void *hcpu)
+{
+    switch ( action )
+    {
+    case CPU_DYING:
+        deinit_ffa_notif_interrupt();
+        break;
+    default:
+        break;
+    }
+
+    return NOTIFY_DONE;
+}
+
+static struct notifier_block cpu_ffa_notif_nfb = {
+    .notifier_call = cpu_ffa_notif_callback,
+};
+
 void ffa_notif_init(void)
 {
     const struct arm_smccc_1_2_regs arg = {
@@ -392,7 +432,6 @@ void ffa_notif_init(void)
     };
     struct arm_smccc_1_2_regs resp;
     unsigned int irq;
-    int ret;
 
     /* Only enable fw notification if all ABIs we need are supported */
     if ( ffa_fw_supports_fid(FFA_NOTIFICATION_BITMAP_CREATE) &&
@@ -408,13 +447,11 @@ void ffa_notif_init(void)
         notif_sri_irq = irq;
         if ( irq >= NR_GIC_SGI )
             irq_set_type(irq, IRQ_TYPE_EDGE_RISING);
-        ret = request_irq(irq, 0, notif_irq_handler, "FF-A notif", NULL);
-        if ( ret )
-        {
-            printk(XENLOG_ERR "ffa: request_irq irq %u failed: error %d\n",
-                   irq, ret);
+
+        if ( request_sri_irq() )
             return;
-        }
+
+        register_cpu_notifier(&cpu_ffa_notif_nfb);
         fw_notif_enabled = true;
     }
 }
-- 
2.43.0



From xen-devel-bounces@lists.xenproject.org Thu Apr 02 10:47:38 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 02 Apr 2026 10:47:38 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1271523.1559661 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1w8FaG-0004fZ-9S; Thu, 02 Apr 2026 10:47:32 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1271523.1559661; Thu, 02 Apr 2026 10:47: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 1w8FaG-0004e6-2Y; Thu, 02 Apr 2026 10:47:32 +0000
Received: by outflank-mailman (input) for mailman id 1271523;
 Thu, 02 Apr 2026 10:47:30 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <xakep.amatop@gmail.com>) id 1w8FaE-0004Wm-Mn
 for xen-devel@lists.xenproject.org; Thu, 02 Apr 2026 10:47:30 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1w8FaE-00Ej0u-35
 for xen-devel@lists.xenproject.org; Thu, 02 Apr 2026 12:47:30 +0200
Received: from [10.42.69.8] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <xakep.amatop@gmail.com>)
 id 69ce4935-2eae-0a2a0a5409dd-0a2a4508a782-8
 for <xen-devel@lists.xenproject.org>; Thu, 02 Apr 2026 12:47:30 +0200
Received: from [209.85.218.53] (helo=mail-ej1-f53.google.com)
 by tlsNG-c1860d.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.0)
 (envelope-from <xakep.amatop@gmail.com>)
 id 69ce4941-fab6-0a2a45080019-d155da35c9f8-3
 for <xen-devel@lists.xenproject.org>; Thu, 02 Apr 2026 12:47:30 +0200
Received: by mail-ej1-f53.google.com with SMTP id
 a640c23a62f3a-b9c3a9fe80fso90505966b.3
 for <xen-devel@lists.xenproject.org>; Thu, 02 Apr 2026 03:47:29 -0700 (PDT)
Received: from EPUAKYIW02F7.. ([45.12.26.38]) by smtp.gmail.com with ESMTPSA id
 a640c23a62f3a-b9c3d028955sm76392366b.61.2026.04.02.03.47.27
 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
 Thu, 02 Apr 2026 03:47:28 -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=20251104 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=20251104; t=1775126849; x=1775731649; 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;
        bh=NDTHUo0iRavupmsXxpHOoWQVA9mce1asVaUpgFiaZZQ=;
        b=b+ZECLIghcIgTlcgPUDvEZaEmp7ruge7IOSO7wchuTMmQKKmmoyM2zEDQt38PVqmi3
         pfCUXXaqSSXYmFdPPltiuxLETvrAw71fDG7kV01HgHKuUQJUyN+YbFIVHicmRx9Xsklu
         Ac17lKFolu7/vjOeteXykKm9M+5linLu91nZVampW6Q8rMh32WBvVKY5IlBX6A+H1cB4
         bPXZbVA1Z2yuNXpiRg4u4eI6+60z9CQdOISEwyr9k8KZaAVpDiYNHMKoJ8zDxzSqNYBv
         CavfFoZZOa81yYRvLIguyR5QPTWA5vqLxxO/Jv9j1mFIqWMHbj+cpxjt70GyuPYWTCO/
         ujQg==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20251104; t=1775126849; x=1775731649;
        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;
        bh=NDTHUo0iRavupmsXxpHOoWQVA9mce1asVaUpgFiaZZQ=;
        b=q+Zv3eLgDusNY097ZmspCbHQ2mfoDqhHI2KRU+6qrCavDrY9aPKuOUCETumxLV1OIA
         u1Fi0M0MK6U0PTdOYRNornFWQags3OHS2poyo6JRaGYM6KSoDMAVjOVS4kk4/izMMJmB
         CJoLFZk1EOeSlJW5mIuo62xb8EeunK/vtNpgePdd62WfGcvx3hxiOZGEzCsPRBTNNkrW
         AsRK2hFrB9LhePH6EU+8NgbKiDBU42ocbAYfsslWD3OxQqz9M4oPM3Wm1zG5QzTB2DOM
         H8XcfKvBtOQDAAsbTtzrSwD1M+1PLrfWZi36PbjSKz7Zt/ui5b4FM6q1OaTGMca85/Yp
         7WLw==
X-Gm-Message-State: AOJu0YxoPLhabGP8oG1o8l1wQKUsww1pgLHx1xIMreINKy52JjkD0ZYp
	pVBkqzRMOpapKEah+b/tZ4qRanGZh+Sw01R4TSdbUqGOAp4f4e5rfkiGuFEaKP+x
X-Gm-Gg: ATEYQzym8GXRk8UFptAL8aH1rUBEMVRaHHRWs1L2gCtB19F+2lZd5WSvkOabNx6K0+B
	9Uz366xzxgS8SyeU3XxWKIq/rNri4S5X7nfv5buk9d+44/KxeCIvUoBFZE2QCIKtoh/CXB/JoI/
	iKs4ns266TPgA0xPxctBhfUcVZFK/uyHNciXNjyxTDt31/aywZvOFeC0Wz+4FXXctqiR6Ff8N6n
	boWkIeqoIG32uWgqR57Dr5fk5mIKQnULBE8d/cjam2+KB/+aXORNbMitWRW6MKtbVc38IjdoToi
	i3iKPL8WJBPRP1EXWcubbnNTrI2NtZ7sJ135t49wWekA75bA+SHDAz+voeB5dF3PR0UAU4mxVWq
	k99+abtRCbInVBp8gYOw1H/uE2xAo+eoISicoDDkaNZ6DzXZthSkA/HKIKZ8l9mjB6UbPeyGLUw
	RsgD4Z+5lJCjJZ30YraWOl1l8d2Q==
X-Received: by 2002:a17:907:c789:b0:b9c:ed9:50c8 with SMTP id a640c23a62f3a-b9c13b2c4e2mr463323366b.26.1775126848495;
        Thu, 02 Apr 2026 03:47:28 -0700 (PDT)
From: Mykola Kvach <xakep.amatop@gmail.com>
To: xen-devel@lists.xenproject.org
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>
Subject: [PATCH v8 04/13] xen/arm: gic-v3: Implement GICv3 suspend/resume functions
Date: Thu,  2 Apr 2026 13:45:05 +0300
Message-ID: <d3398c62b8604bb869c204e3786f0b0246de7375.1775125380.git.mykola_kvach@epam.com>
X-Mailer: git-send-email 2.43.0
In-Reply-To: <cover.1775125380.git.mykola_kvach@epam.com>
References: <cover.1775125380.git.mykola_kvach@epam.com>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit
X-purgate-ID: tlsNG-c1860d/1775126850-7495D497-CD7F2EA0/0/0
X-purgate-type: clean
X-purgate-size: 14084

From: Mykola Kvach <mykola_kvach@epam.com>

System suspend may lead to a state where GIC would be powered down.
Therefore, Xen should save/restore the context of GIC on suspend/resume.

Note that the context consists of states of registers which are
controlled by the hypervisor. Other GIC registers which are accessible
by guests are saved/restored on context switch.

Signed-off-by: Mykola Kvach <mykola_kvach@epam.com>
---
Changes in V8:
- use right rdist base for prop/pend baser and ctrl

Changes in V7:
- restore LPI regs on resume
- add timeout during redist disabling
- squash with suspend/resume handling for GICv3 eSPI registers
- drop ITS guard paths so suspend/resume always runs; switch missing ctx
  allocation to panic
- trim TODO comments; narrow redistributor storage to PPI icfgr
- keep distributor context allocation even without ITS; adjust resume
  to use GENMASK(31, 0) for clearing enables
- drop storage of the SGI configuration register, as SGIs are always
  edge-triggered
---
 xen/arch/arm/gic-v3-lpi.c              |   3 +
 xen/arch/arm/gic-v3.c                  | 321 ++++++++++++++++++++++++-
 xen/arch/arm/include/asm/gic_v3_defs.h |   1 +
 3 files changed, 322 insertions(+), 3 deletions(-)

diff --git a/xen/arch/arm/gic-v3-lpi.c b/xen/arch/arm/gic-v3-lpi.c
index 125f51e61b..01120aeed9 100644
--- a/xen/arch/arm/gic-v3-lpi.c
+++ b/xen/arch/arm/gic-v3-lpi.c
@@ -466,6 +466,9 @@ static int cpu_callback(struct notifier_block *nfb, unsigned long action,
     switch ( action )
     {
     case CPU_UP_PREPARE:
+        if ( system_state == SYS_STATE_resume )
+            break;
+
         rc = gicv3_lpi_allocate_pendtable(cpu);
         if ( rc )
             printk(XENLOG_ERR "Unable to allocate the pendtable for CPU%lu\n",
diff --git a/xen/arch/arm/gic-v3.c b/xen/arch/arm/gic-v3.c
index 34fb065afc..d182a71478 100644
--- a/xen/arch/arm/gic-v3.c
+++ b/xen/arch/arm/gic-v3.c
@@ -1072,12 +1072,12 @@ out:
     return res;
 }
 
-static void gicv3_hyp_disable(void)
+static void gicv3_hyp_enable(bool enable)
 {
     register_t hcr;
 
     hcr = READ_SYSREG(ICH_HCR_EL2);
-    hcr &= ~GICH_HCR_EN;
+    hcr = enable ? (hcr | GICH_HCR_EN) : (hcr & ~GICH_HCR_EN);
     WRITE_SYSREG(hcr, ICH_HCR_EL2);
     isb();
 }
@@ -1184,7 +1184,7 @@ static void gicv3_disable_interface(void)
     spin_lock(&gicv3.lock);
 
     gicv3_cpu_disable();
-    gicv3_hyp_disable();
+    gicv3_hyp_enable(false);
 
     spin_unlock(&gicv3.lock);
 }
@@ -1920,6 +1920,313 @@ static bool gic_dist_supports_lpis(void)
     return (readl_relaxed(GICD + GICD_TYPER) & GICD_TYPE_LPIS);
 }
 
+#ifdef CONFIG_SYSTEM_SUSPEND
+
+/* This struct represent block of 32 IRQs */
+struct dist_irq_block {
+    uint32_t icfgr[2];
+    uint32_t ipriorityr[8];
+    uint64_t irouter[32];
+    uint32_t isactiver;
+    uint32_t isenabler;
+};
+
+struct redist_ctx {
+    uint32_t ctlr;
+    uint32_t icfgr; /* only PPIs stored */
+    uint32_t igroupr;
+    uint32_t ipriorityr[8];
+    uint32_t isactiver;
+    uint32_t isenabler;
+
+    uint64_t pendbase;
+    uint64_t propbase;
+};
+
+/* GICv3 registers to be saved/restored on system suspend/resume */
+struct gicv3_ctx {
+    struct dist_ctx {
+        uint32_t ctlr;
+        struct dist_irq_block *irqs, *espi_irqs;
+    } dist;
+
+    /* have only one rdist structure for last running CPU during suspend */
+    struct redist_ctx rdist;
+
+    struct cpu_ctx {
+        uint32_t ctlr;
+        uint32_t pmr;
+        uint32_t bpr;
+        uint32_t sre_el2;
+        uint32_t grpen;
+    } cpu;
+};
+
+static struct gicv3_ctx gicv3_ctx;
+
+static void __init gicv3_alloc_context(void)
+{
+    uint32_t blocks = DIV_ROUND_UP(gicv3_info.nr_lines, 32);
+
+    /* The spec allows for systems without any SPIs */
+    if ( blocks > 1 )
+    {
+        gicv3_ctx.dist.irqs = xzalloc_array(struct dist_irq_block, blocks - 1);
+        if ( !gicv3_ctx.dist.irqs )
+            panic("Failed to allocate memory for GICv3 suspend context\n");
+    }
+
+#ifdef CONFIG_GICV3_ESPI
+    if ( !gic_number_espis() )
+        return;
+
+    blocks = gic_number_espis() / 32;
+    gicv3_ctx.dist.espi_irqs = xzalloc_array(struct dist_irq_block, blocks);
+    if ( !gicv3_ctx.dist.espi_irqs )
+        panic("Failed to allocate memory for GICv3 eSPI suspend context\n");
+#endif
+}
+
+static int gicv3_disable_redist(void)
+{
+    void __iomem *waker = GICD_RDIST_BASE + GICR_WAKER;
+    s_time_t deadline;
+
+    /*
+     * Avoid infinite loop if Non-secure does not have access to GICR_WAKER.
+     * See Arm IHI 0069H.b, 12.11.42 GICR_WAKER:
+     *     When GICD_CTLR.DS == 0 and an access is Non-secure accesses to this
+     *     register are RAZ/WI.
+     */
+    if ( !(readl_relaxed(GICD + GICD_CTLR) & GICD_CTLR_DS) )
+        return 0;
+
+    deadline = NOW() + MILLISECS(1000);
+
+    writel_relaxed(readl_relaxed(waker) | GICR_WAKER_ProcessorSleep, waker);
+    while ( (readl_relaxed(waker) & GICR_WAKER_ChildrenAsleep) == 0 )
+    {
+        if ( NOW() > deadline )
+        {
+            printk("GICv3: Timeout waiting for redistributor to sleep\n");
+            return -ETIMEDOUT;
+        }
+        cpu_relax();
+        udelay(10);
+    }
+
+    return 0;
+}
+
+#define GET_SPI_REG_OFFSET(name, is_espi) \
+    ((is_espi) ? GICD_##name##nE : GICD_##name)
+
+static void gicv3_store_spi_irq_block(struct dist_irq_block *irqs,
+                                      unsigned int i, bool is_espi)
+{
+    void __iomem *base;
+    unsigned int irq;
+
+    base = GICD + GET_SPI_REG_OFFSET(ICFGR, is_espi) + i * sizeof(irqs->icfgr);
+    irqs->icfgr[0] = readl_relaxed(base);
+    irqs->icfgr[1] = readl_relaxed(base + 4);
+
+    base = GICD + GET_SPI_REG_OFFSET(IPRIORITYR, is_espi);
+    base += i * sizeof(irqs->ipriorityr);
+    for ( irq = 0; irq < ARRAY_SIZE(irqs->ipriorityr); irq++ )
+        irqs->ipriorityr[irq] = readl_relaxed(base + 4 * irq);
+
+    base = GICD + GET_SPI_REG_OFFSET(IROUTER, is_espi);
+    base += i * sizeof(irqs->irouter);
+    for ( irq = 0; irq < ARRAY_SIZE(irqs->irouter); irq++ )
+        irqs->irouter[irq] = readq_relaxed_non_atomic(base + 8 * irq);
+
+    base = GICD + GET_SPI_REG_OFFSET(ISACTIVER, is_espi);
+    base += i * sizeof(irqs->isactiver);
+    irqs->isactiver = readl_relaxed(base);
+
+    base = GICD + GET_SPI_REG_OFFSET(ISENABLER, is_espi);
+    base += i * sizeof(irqs->isenabler);
+    irqs->isenabler = readl_relaxed(base);
+}
+
+static void gicv3_restore_spi_irq_block(struct dist_irq_block *irqs,
+                                        unsigned int i, bool is_espi)
+{
+    void __iomem *base;
+    unsigned int irq;
+
+    base = GICD + GET_SPI_REG_OFFSET(ICFGR, is_espi) + i * sizeof(irqs->icfgr);
+    writel_relaxed(irqs->icfgr[0], base);
+    writel_relaxed(irqs->icfgr[1], base + 4);
+
+    base = GICD + GET_SPI_REG_OFFSET(IPRIORITYR, is_espi);
+    base += i * sizeof(irqs->ipriorityr);
+    for ( irq = 0; irq < ARRAY_SIZE(irqs->ipriorityr); irq++ )
+        writel_relaxed(irqs->ipriorityr[irq], base + 4 * irq);
+
+    base = GICD + GET_SPI_REG_OFFSET(IROUTER, is_espi);
+    base += i * sizeof(irqs->irouter);
+    for ( irq = 0; irq < ARRAY_SIZE(irqs->irouter); irq++ )
+        writeq_relaxed_non_atomic(irqs->irouter[irq], base + 8 * irq);
+
+    base = GICD + GET_SPI_REG_OFFSET(ICENABLER, is_espi) + i * 4;
+    writel_relaxed(GENMASK(31, 0), base);
+
+    base = GICD + GET_SPI_REG_OFFSET(ISENABLER, is_espi);
+    base += i * sizeof(irqs->isenabler);
+    writel_relaxed(irqs->isenabler, base);
+
+    base = GICD + GET_SPI_REG_OFFSET(ICACTIVER, is_espi) + i * 4;
+    writel_relaxed(GENMASK(31, 0), base);
+
+    base = GICD + GET_SPI_REG_OFFSET(ISACTIVER, is_espi);
+    base += i * sizeof(irqs->isactiver);
+    writel_relaxed(irqs->isactiver, base);
+}
+
+static int gicv3_suspend(void)
+{
+    unsigned int i;
+    void __iomem *base;
+    int ret;
+    struct redist_ctx *rdist = &gicv3_ctx.rdist;
+
+    /* Save GICC configuration */
+    gicv3_ctx.cpu.ctlr     = READ_SYSREG(ICC_CTLR_EL1);
+    gicv3_ctx.cpu.pmr      = READ_SYSREG(ICC_PMR_EL1);
+    gicv3_ctx.cpu.bpr      = READ_SYSREG(ICC_BPR1_EL1);
+    gicv3_ctx.cpu.sre_el2  = READ_SYSREG(ICC_SRE_EL2);
+    gicv3_ctx.cpu.grpen    = READ_SYSREG(ICC_IGRPEN1_EL1);
+
+    gicv3_disable_interface();
+
+    ret = gicv3_disable_redist();
+    if ( ret )
+        goto out_enable_iface;
+
+    /* Save GICR configuration */
+    gicv3_redist_wait_for_rwp();
+
+    base = GICD_RDIST_BASE;
+
+    rdist->ctlr = readl_relaxed(base + GICR_CTLR);
+
+    rdist->propbase = readq_relaxed(base + GICR_PROPBASER);
+    rdist->pendbase = readq_relaxed(base + GICR_PENDBASER);
+
+    base = GICD_RDIST_SGI_BASE;
+
+    /* Save priority on PPI and SGI interrupts */
+    for ( i = 0; i < NR_GIC_LOCAL_IRQS / 4; i++ )
+        rdist->ipriorityr[i] = readl_relaxed(base + GICR_IPRIORITYR0 + 4 * i);
+
+    rdist->isactiver = readl_relaxed(base + GICR_ISACTIVER0);
+    rdist->isenabler = readl_relaxed(base + GICR_ISENABLER0);
+    rdist->igroupr   = readl_relaxed(base + GICR_IGROUPR0);
+    rdist->icfgr     = readl_relaxed(base + GICR_ICFGR1);
+
+    /* Save GICD configuration */
+    gicv3_dist_wait_for_rwp();
+    gicv3_ctx.dist.ctlr = readl_relaxed(GICD + GICD_CTLR);
+
+    for ( i = 1; i < DIV_ROUND_UP(gicv3_info.nr_lines, 32); i++ )
+        gicv3_store_spi_irq_block(gicv3_ctx.dist.irqs + i - 1, i, false);
+
+#ifdef CONFIG_GICV3_ESPI
+    for ( i = 0; i < gic_number_espis() / 32; i++ )
+        gicv3_store_spi_irq_block(gicv3_ctx.dist.espi_irqs + i, i, true);
+#endif
+
+    return 0;
+
+ out_enable_iface:
+    gicv3_hyp_enable(true);
+    WRITE_SYSREG(gicv3_ctx.cpu.ctlr, ICC_CTLR_EL1);
+    isb();
+
+    return ret;
+}
+
+static void gicv3_resume(void)
+{
+    int ret;
+    unsigned int i;
+    void __iomem *base;
+    struct redist_ctx *rdist = &gicv3_ctx.rdist;
+
+    writel_relaxed(0, GICD + GICD_CTLR);
+
+    for ( i = NR_GIC_LOCAL_IRQS; i < gicv3_info.nr_lines; i += 32 )
+        writel_relaxed(GENMASK(31, 0), GICD + GICD_IGROUPR + (i / 32) * 4);
+
+    for ( i = 1; i < DIV_ROUND_UP(gicv3_info.nr_lines, 32); i++ )
+        gicv3_restore_spi_irq_block(gicv3_ctx.dist.irqs + i - 1, i, false);
+
+#ifdef CONFIG_GICV3_ESPI
+    for ( i = 0; i < gic_number_espis() / 32; i++ )
+        gicv3_restore_spi_irq_block(gicv3_ctx.dist.espi_irqs + i, i, true);
+#endif
+
+    writel_relaxed(gicv3_ctx.dist.ctlr, GICD + GICD_CTLR);
+    gicv3_dist_wait_for_rwp();
+
+    ret = gicv3_lpi_init_rdist(GICD_RDIST_BASE);
+    /*
+     * If LPIs are already enabled, assume firmware or the still-powered
+     * redistributor has valid PROPBASER/PENDBASER and skip reprogramming.
+     * Return -EBUSY so callers can ignore this case.
+     */
+    if ( ret && ret != -ENODEV && ret != -EBUSY )
+        panic("GICv3: Failed to re-initialize LPIs during resume\n");
+    else if ( ret == -EBUSY ) /* extra checks, just to be sure */
+    {
+        base = GICD_RDIST_BASE;
+        if ( readq_relaxed(base + GICR_PROPBASER) != rdist->propbase ||
+             readq_relaxed(base + GICR_PENDBASER) != rdist->pendbase )
+        {
+            panic("GICv3: LPIs already enabled with unexpected PROPBASER/PENDBASER during resume\n");
+        }
+    }
+
+    /* Restore GICR (Redistributor) configuration */
+    if ( gicv3_enable_redist() )
+        panic("GICv3: Failed to re-enable redistributor during resume\n");
+
+    base = GICD_RDIST_SGI_BASE;
+
+    writel_relaxed(GENMASK(31, 0), base + GICR_ICENABLER0);
+    gicv3_redist_wait_for_rwp();
+
+    for ( i = 0; i < NR_GIC_LOCAL_IRQS / 4; i++ )
+        writel_relaxed(rdist->ipriorityr[i], base + GICR_IPRIORITYR0 + i * 4);
+
+    writel_relaxed(rdist->isactiver, base + GICR_ISACTIVER0);
+    writel_relaxed(rdist->igroupr,   base + GICR_IGROUPR0);
+    writel_relaxed(rdist->icfgr,     base + GICR_ICFGR1);
+
+    gicv3_redist_wait_for_rwp();
+
+    writel_relaxed(rdist->isenabler, base + GICR_ISENABLER0);
+    writel_relaxed(rdist->ctlr, GICD_RDIST_BASE + GICR_CTLR);
+
+    gicv3_redist_wait_for_rwp();
+
+    WRITE_SYSREG(gicv3_ctx.cpu.sre_el2, ICC_SRE_EL2);
+    isb();
+
+    /* Restore CPU interface (System registers) */
+    WRITE_SYSREG(gicv3_ctx.cpu.pmr,   ICC_PMR_EL1);
+    WRITE_SYSREG(gicv3_ctx.cpu.bpr,   ICC_BPR1_EL1);
+    WRITE_SYSREG(gicv3_ctx.cpu.ctlr,  ICC_CTLR_EL1);
+    WRITE_SYSREG(gicv3_ctx.cpu.grpen, ICC_IGRPEN1_EL1);
+    isb();
+
+    gicv3_hyp_init();
+}
+
+#endif /* CONFIG_SYSTEM_SUSPEND */
+
 /* Set up the GIC */
 static int __init gicv3_init(void)
 {
@@ -1994,6 +2301,10 @@ static int __init gicv3_init(void)
 
     gicv3_hyp_init();
 
+#ifdef CONFIG_SYSTEM_SUSPEND
+    gicv3_alloc_context();
+#endif
+
 out:
     spin_unlock(&gicv3.lock);
 
@@ -2033,6 +2344,10 @@ static const struct gic_hw_operations gicv3_ops = {
 #endif
     .iomem_deny_access   = gicv3_iomem_deny_access,
     .do_LPI              = gicv3_do_LPI,
+#ifdef CONFIG_SYSTEM_SUSPEND
+    .suspend             = gicv3_suspend,
+    .resume              = gicv3_resume,
+#endif
 };
 
 static int __init gicv3_dt_preinit(struct dt_device_node *node, const void *data)
diff --git a/xen/arch/arm/include/asm/gic_v3_defs.h b/xen/arch/arm/include/asm/gic_v3_defs.h
index c373b94d19..992c8f9c2f 100644
--- a/xen/arch/arm/include/asm/gic_v3_defs.h
+++ b/xen/arch/arm/include/asm/gic_v3_defs.h
@@ -94,6 +94,7 @@
 #define GICD_TYPE_LPIS               (1U << 17)
 
 #define GICD_CTLR_RWP                (1UL << 31)
+#define GICD_CTLR_DS                 (1U << 6)
 #define GICD_CTLR_ARE_NS             (1U << 4)
 #define GICD_CTLR_ENABLE_G1A         (1U << 1)
 #define GICD_CTLR_ENABLE_G1          (1U << 0)
-- 
2.43.0



From xen-devel-bounces@lists.xenproject.org Thu Apr 02 10:47:38 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 02 Apr 2026 10:47:38 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1271528.1559700 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1w8FaL-0005pC-5R; Thu, 02 Apr 2026 10:47:37 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1271528.1559700; Thu, 02 Apr 2026 10:47: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 1w8FaK-0005nm-Qw; Thu, 02 Apr 2026 10:47:36 +0000
Received: by outflank-mailman (input) for mailman id 1271528;
 Thu, 02 Apr 2026 10:47:35 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <xakep.amatop@gmail.com>) id 1w8FaJ-0005RM-Pj
 for xen-devel@lists.xenproject.org; Thu, 02 Apr 2026 10:47:35 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1w8FaJ-00Ej0u-5A
 for xen-devel@lists.xenproject.org; Thu, 02 Apr 2026 12:47:35 +0200
Received: from [10.42.69.5] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <xakep.amatop@gmail.com>)
 id 69ce4947-2eae-0a2a0a5409dd-0a2a4505b638-0
 for <xen-devel@lists.xenproject.org>; Thu, 02 Apr 2026 12:47:35 +0200
Received: from [209.85.218.41] (helo=mail-ej1-f41.google.com)
 by tlsNG-c201ff.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.0)
 (envelope-from <xakep.amatop@gmail.com>)
 id 69ce4946-3760-0a2a45050019-d155da29e11d-3
 for <xen-devel@lists.xenproject.org>; Thu, 02 Apr 2026 12:47:35 +0200
Received: by mail-ej1-f41.google.com with SMTP id
 a640c23a62f3a-b980785a0bfso91460766b.3
 for <xen-devel@lists.xenproject.org>; Thu, 02 Apr 2026 03:47:35 -0700 (PDT)
Received: from EPUAKYIW02F7.. ([45.12.26.38]) by smtp.gmail.com with ESMTPSA id
 a640c23a62f3a-b9c3d028955sm76392366b.61.2026.04.02.03.47.32
 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
 Thu, 02 Apr 2026 03:47:33 -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=20251104 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=20251104; t=1775126854; x=1775731654; 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;
        bh=k/YQHTjWfFNRfU47XoZ3xNzm7CYArEgw/v+Ue+GlOW0=;
        b=lnfUgyTTEAX+efdmLlJO5cw9uROFTg3MldGocgRl1rxBowGzT8U5HjVsjWu9ZrQ1+1
         36rt6CTizZU0Q1lK5Y7Lned7VpzbnxKD+1yc/sHuj3V3CA3c+jv4nqM4NJQNpVMFZcrp
         aiArnhpMRtkFJ2wRqjcPiniE4lXpJgSoL5LuOX9Y/Uayw6c9h305eCLESJWnzHJnKw+5
         wQTBd1ruiTSm3/kty2w3oM3sszeENP3VCoj1oDXE0fHTmruNfqR/fac5LrmBEDj/XrFt
         QAgRA4QNKUsVCoRRbIqP7KmVpJQLr2bv8OAsJqt/iDGl3yk2HSMlKgwiEpjxw/NIi7Qv
         E+/g==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20251104; t=1775126854; x=1775731654;
        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;
        bh=k/YQHTjWfFNRfU47XoZ3xNzm7CYArEgw/v+Ue+GlOW0=;
        b=He7r4SakySDTerwigVxefZm7DpVJWaoPD0kZuS5U0Amt9ldQ+M4LL0TlCBzJ/9zBw3
         uJ3uPdhQa1Wni3cq3uUCfcBAEPI58wkXxU9T+uiAtyiiU1YQrMGeH/SNy2GJVEQ748B1
         BnvVxMaCztXaRNgxxmOaYcBSUHU2VUpmCuQMk8tVQ0Mvf3fibaEtHWVt25M8H9xJSvvd
         Noi0CeJq4PByR7l2VnGNO42oKPeq/DXa///dReuhjWd/mceEtL4PW8YAv4f6wdo/YH1U
         ZiBXqHSpk0bNKo9ptU6cQexROD4EKNWbaXRMZ56ojICZxMsHtZ0827kKce8QG+oavOT5
         Zyfw==
X-Gm-Message-State: AOJu0Yybx2pmpgQ4bs9hbrfn1oQ7+1y8zFGslDxcCbfy9aGHextfdmc7
	jG74afandmpq3Nk7Fl+uufpYA+DgF19N2zBY1QZuhCYz3VdBn2L1/lZ6S0V0Sgu8
X-Gm-Gg: ATEYQzxhTrVQ7FD5jpQqwqgmf8AdLMIt5CxKt54wbTVwRFUFFZS2pp4a13P91Z0WUXv
	qTmZga0Je0vmowDML5RLYbajr9ls1Rzz+/V4vjdhe0wL8PAxa1JSD7pU+3Ps2VJCXaz6Y4i7btZ
	qmO06PwdcdrlX6jfPyGDpKEz7vy1/HPIh65zknyGr7ZYd1LlQkd56F6JVpgtvlneQgEvCD/PJ9g
	/iwzHFi5V+L1U7OCllYrkSK3/ENrfOq3quEer0994kY6wJiYNK6qmghcJOGErWOeA/rZFf06h1s
	1Jr9GLnp6F1JgVCzniUqqBLAFm+dsruCS+w0YL5KC4lmxRW3QqMneaFHqO45pNSCidgzAEIwjiW
	V9COlAYvzDz6864inm8+cOVk89VPQ9nYotDB2zQzuVinR63KIukmH+fep/qAYUGpnO6kKQftvMW
	LAnmsCr5CIVweyrQJ9U5+0QA05dw==
X-Received: by 2002:a17:907:e8a:b0:b97:eae9:d45e with SMTP id a640c23a62f3a-b9c13cc4dd3mr438756766b.50.1775126853726;
        Thu, 02 Apr 2026 03:47:33 -0700 (PDT)
From: Mykola Kvach <xakep.amatop@gmail.com>
To: xen-devel@lists.xenproject.org
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>
Subject: [PATCH v8 08/13] iommu/ipmmu-vmsa: Implement suspend/resume callbacks
Date: Thu,  2 Apr 2026 13:45:09 +0300
Message-ID: <63b219c3cae5201c5db804f69c3b88ac41c9bdf6.1775125380.git.mykola_kvach@epam.com>
X-Mailer: git-send-email 2.43.0
In-Reply-To: <cover.1775125380.git.mykola_kvach@epam.com>
References: <cover.1775125380.git.mykola_kvach@epam.com>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit
X-purgate-ID: tlsNG-c201ff/1775126855-32B2096F-9C3AE72C/0/0
X-purgate-type: clean
X-purgate-size: 13035

From: Oleksandr Tyshchenko <oleksandr_tyshchenko@epam.com>

Store and restore active context and micro-TLB registers.

Tested on R-Car H3 Starter Kit.

Signed-off-by: Oleksandr Tyshchenko <oleksandr_tyshchenko@epam.com>
Signed-off-by: Mykola Kvach <mykola_kvach@epam.com>
---
Changes in V7:
- moved suspend context allocation before pci stuff
---
 xen/drivers/passthrough/arm/ipmmu-vmsa.c | 305 ++++++++++++++++++++++-
 1 file changed, 298 insertions(+), 7 deletions(-)

diff --git a/xen/drivers/passthrough/arm/ipmmu-vmsa.c b/xen/drivers/passthrough/arm/ipmmu-vmsa.c
index ea9fa9ddf3..6765bd3083 100644
--- a/xen/drivers/passthrough/arm/ipmmu-vmsa.c
+++ b/xen/drivers/passthrough/arm/ipmmu-vmsa.c
@@ -71,6 +71,8 @@
 })
 #endif
 
+#define dev_dbg(dev, fmt, ...)    \
+    dev_print(dev, XENLOG_DEBUG, fmt, ## __VA_ARGS__)
 #define dev_info(dev, fmt, ...)    \
     dev_print(dev, XENLOG_INFO, fmt, ## __VA_ARGS__)
 #define dev_warn(dev, fmt, ...)    \
@@ -130,6 +132,24 @@ struct ipmmu_features {
     unsigned int imuctr_ttsel_mask;
 };
 
+#ifdef CONFIG_SYSTEM_SUSPEND
+
+struct ipmmu_reg_ctx {
+    unsigned int imttlbr0;
+    unsigned int imttubr0;
+    unsigned int imttbcr;
+    unsigned int imctr;
+};
+
+struct ipmmu_vmsa_backup {
+    struct device *dev;
+    unsigned int *utlbs_val;
+    unsigned int *asids_val;
+    struct list_head list;
+};
+
+#endif
+
 /* Root/Cache IPMMU device's information */
 struct ipmmu_vmsa_device {
     struct device *dev;
@@ -142,6 +162,9 @@ struct ipmmu_vmsa_device {
     struct ipmmu_vmsa_domain *domains[IPMMU_CTX_MAX];
     unsigned int utlb_refcount[IPMMU_UTLB_MAX];
     const struct ipmmu_features *features;
+#ifdef CONFIG_SYSTEM_SUSPEND
+    struct ipmmu_reg_ctx *reg_backup[IPMMU_CTX_MAX];
+#endif
 };
 
 /*
@@ -547,6 +570,245 @@ static void ipmmu_domain_free_context(struct ipmmu_vmsa_device *mmu,
     spin_unlock_irqrestore(&mmu->lock, flags);
 }
 
+#ifdef CONFIG_SYSTEM_SUSPEND
+
+static DEFINE_SPINLOCK(ipmmu_devices_backup_lock);
+static LIST_HEAD(ipmmu_devices_backup);
+
+static struct ipmmu_reg_ctx root_pgtable[IPMMU_CTX_MAX];
+
+static uint32_t ipmmu_imuasid_read(struct ipmmu_vmsa_device *mmu,
+                                   unsigned int utlb)
+{
+    return ipmmu_read(mmu, ipmmu_utlb_reg(mmu, IMUASID(utlb)));
+}
+
+static void ipmmu_utlbs_backup(struct ipmmu_vmsa_device *mmu)
+{
+    struct ipmmu_vmsa_backup *backup_data;
+
+    dev_dbg(mmu->dev, "Handle micro-TLBs backup\n");
+
+    spin_lock(&ipmmu_devices_backup_lock);
+
+    list_for_each_entry( backup_data, &ipmmu_devices_backup, list )
+    {
+        struct iommu_fwspec *fwspec = dev_iommu_fwspec_get(backup_data->dev);
+        unsigned int i;
+
+        if ( to_ipmmu(backup_data->dev) != mmu )
+            continue;
+
+        for ( i = 0; i < fwspec->num_ids; i++ )
+        {
+            unsigned int utlb = fwspec->ids[i];
+
+            backup_data->asids_val[i] = ipmmu_imuasid_read(mmu, utlb);
+            backup_data->utlbs_val[i] = ipmmu_imuctr_read(mmu, utlb);
+        }
+    }
+
+    spin_unlock(&ipmmu_devices_backup_lock);
+}
+
+static void ipmmu_utlbs_restore(struct ipmmu_vmsa_device *mmu)
+{
+    struct ipmmu_vmsa_backup *backup_data;
+
+    dev_dbg(mmu->dev, "Handle micro-TLBs restore\n");
+
+    spin_lock(&ipmmu_devices_backup_lock);
+
+    list_for_each_entry( backup_data, &ipmmu_devices_backup, list )
+    {
+        struct iommu_fwspec *fwspec = dev_iommu_fwspec_get(backup_data->dev);
+        unsigned int i;
+
+        if ( to_ipmmu(backup_data->dev) != mmu )
+            continue;
+
+        for ( i = 0; i < fwspec->num_ids; i++ )
+        {
+            unsigned int utlb = fwspec->ids[i];
+
+            ipmmu_imuasid_write(mmu, utlb, backup_data->asids_val[i]);
+            ipmmu_imuctr_write(mmu, utlb, backup_data->utlbs_val[i]);
+        }
+    }
+
+    spin_unlock(&ipmmu_devices_backup_lock);
+}
+
+static void ipmmu_domain_backup_context(struct ipmmu_vmsa_domain *domain)
+{
+    struct ipmmu_vmsa_device *mmu = domain->mmu->root;
+    struct ipmmu_reg_ctx *regs = mmu->reg_backup[domain->context_id];
+
+    dev_dbg(mmu->dev, "Handle domain context %u backup\n", domain->context_id);
+
+    regs->imttlbr0 = ipmmu_ctx_read_root(domain, IMTTLBR0);
+    regs->imttubr0 = ipmmu_ctx_read_root(domain, IMTTUBR0);
+    regs->imttbcr  = ipmmu_ctx_read_root(domain, IMTTBCR);
+    regs->imctr    = ipmmu_ctx_read_root(domain, IMCTR);
+}
+
+static void ipmmu_domain_restore_context(struct ipmmu_vmsa_domain *domain)
+{
+    struct ipmmu_vmsa_device *mmu = domain->mmu->root;
+    struct ipmmu_reg_ctx *regs  = mmu->reg_backup[domain->context_id];
+
+    dev_dbg(mmu->dev, "Handle domain context %u restore\n", domain->context_id);
+
+    ipmmu_ctx_write_root(domain, IMTTLBR0, regs->imttlbr0);
+    ipmmu_ctx_write_root(domain, IMTTUBR0, regs->imttubr0);
+    ipmmu_ctx_write_root(domain, IMTTBCR,  regs->imttbcr);
+    ipmmu_ctx_write_all(domain,  IMCTR,    regs->imctr | IMCTR_FLUSH);
+}
+
+/*
+ * Xen: Unlike Linux implementation, Xen uses a single driver instance
+ * for handling all IPMMUs. There is no framework for ipmmu_suspend/resume
+ * callbacks to be invoked for each IPMMU device. So, we need to iterate
+ * through all registered IPMMUs performing required actions.
+ *
+ * Also take care of restoring special settings, such as translation
+ * table format, etc.
+ */
+static int __must_check ipmmu_suspend(void)
+{
+    struct ipmmu_vmsa_device *mmu;
+
+    if ( !iommu_enabled )
+        return 0;
+
+    printk(XENLOG_DEBUG "ipmmu: Suspending...\n");
+
+    spin_lock(&ipmmu_devices_lock);
+
+    list_for_each_entry( mmu, &ipmmu_devices, list )
+    {
+        if ( ipmmu_is_root(mmu) )
+        {
+            unsigned int i;
+
+            for ( i = 0; i < mmu->num_ctx; i++ )
+            {
+                if ( !mmu->domains[i] )
+                    continue;
+                ipmmu_domain_backup_context(mmu->domains[i]);
+            }
+        }
+        else
+            ipmmu_utlbs_backup(mmu);
+    }
+
+    spin_unlock(&ipmmu_devices_lock);
+
+    return 0;
+}
+
+static void ipmmu_resume(void)
+{
+    struct ipmmu_vmsa_device *mmu;
+
+    if ( !iommu_enabled )
+        return;
+
+    printk(XENLOG_DEBUG "ipmmu: Resuming...\n");
+
+    spin_lock(&ipmmu_devices_lock);
+
+    list_for_each_entry( mmu, &ipmmu_devices, list )
+    {
+        uint32_t reg;
+
+        /* Do not use security group function */
+        reg = IMSCTLR + mmu->features->control_offset_base;
+        ipmmu_write(mmu, reg, ipmmu_read(mmu, reg) & ~IMSCTLR_USE_SECGRP);
+
+        if ( ipmmu_is_root(mmu) )
+        {
+            unsigned int i;
+
+            /* Use stage 2 translation table format */
+            reg = IMSAUXCTLR + mmu->features->control_offset_base;
+            ipmmu_write(mmu, reg, ipmmu_read(mmu, reg) | IMSAUXCTLR_S2PTE);
+
+            for ( i = 0; i < mmu->num_ctx; i++ )
+            {
+                if ( !mmu->domains[i] )
+                    continue;
+                ipmmu_domain_restore_context(mmu->domains[i]);
+            }
+        }
+        else
+            ipmmu_utlbs_restore(mmu);
+    }
+
+    spin_unlock(&ipmmu_devices_lock);
+}
+
+static int ipmmu_alloc_ctx_suspend(struct device *dev)
+{
+    struct ipmmu_vmsa_backup *backup_data;
+    unsigned int *utlbs_val, *asids_val;
+    struct iommu_fwspec *fwspec = dev_iommu_fwspec_get(dev);
+
+    utlbs_val = xzalloc_array(unsigned int, fwspec->num_ids);
+    if ( !utlbs_val )
+        return -ENOMEM;
+
+    asids_val = xzalloc_array(unsigned int, fwspec->num_ids);
+    if ( !asids_val )
+    {
+        xfree(utlbs_val);
+        return -ENOMEM;
+    }
+
+    backup_data = xzalloc(struct ipmmu_vmsa_backup);
+    if ( !backup_data )
+    {
+        xfree(utlbs_val);
+        xfree(asids_val);
+        return -ENOMEM;
+    }
+
+    backup_data->dev = dev;
+    backup_data->utlbs_val = utlbs_val;
+    backup_data->asids_val = asids_val;
+
+    spin_lock(&ipmmu_devices_backup_lock);
+    list_add(&backup_data->list, &ipmmu_devices_backup);
+    spin_unlock(&ipmmu_devices_backup_lock);
+
+    return 0;
+}
+
+#ifdef CONFIG_HAS_PCI
+static void ipmmu_free_ctx_suspend(struct device *dev)
+{
+    struct ipmmu_vmsa_backup *backup_data, *tmp;
+
+    spin_lock(&ipmmu_devices_backup_lock);
+
+    list_for_each_entry_safe( backup_data, tmp, &ipmmu_devices_backup, list )
+    {
+        if ( backup_data->dev == dev )
+        {
+            list_del(&backup_data->list);
+            xfree(backup_data->utlbs_val);
+            xfree(backup_data->asids_val);
+            xfree(backup_data);
+            break;
+        }
+    }
+
+    spin_unlock(&ipmmu_devices_backup_lock);
+}
+#endif /* CONFIG_HAS_PCI */
+
+#endif /* CONFIG_SYSTEM_SUSPEND */
+
 static int ipmmu_domain_init_context(struct ipmmu_vmsa_domain *domain)
 {
     uint64_t ttbr;
@@ -559,6 +821,9 @@ static int ipmmu_domain_init_context(struct ipmmu_vmsa_domain *domain)
         return ret;
 
     domain->context_id = ret;
+#ifdef CONFIG_SYSTEM_SUSPEND
+    domain->mmu->root->reg_backup[ret] = &root_pgtable[ret];
+#endif
 
     /*
      * TTBR0
@@ -615,6 +880,9 @@ static void ipmmu_domain_destroy_context(struct ipmmu_vmsa_domain *domain)
     ipmmu_ctx_write_root(domain, IMCTR, IMCTR_FLUSH);
     ipmmu_tlb_sync(domain);
 
+#ifdef CONFIG_SYSTEM_SUSPEND
+    domain->mmu->root->reg_backup[domain->context_id] = NULL;
+#endif
     ipmmu_domain_free_context(domain->mmu->root, domain->context_id);
 }
 
@@ -1340,10 +1608,11 @@ static int ipmmu_add_device(u8 devfn, struct device *dev)
     struct iommu_fwspec *fwspec;
 
 #ifdef CONFIG_HAS_PCI
+    int ret;
+
     if ( dev_is_pci(dev) )
     {
         struct pci_dev *pdev = dev_to_pci(dev);
-        int ret;
 
         if ( devfn != pdev->devfn )
             return 0;
@@ -1371,6 +1640,15 @@ static int ipmmu_add_device(u8 devfn, struct device *dev)
         /* Let Xen know that the master device is protected by an IOMMU. */
         dt_device_set_protected(dev_to_dt(dev));
     }
+
+#ifdef CONFIG_SYSTEM_SUSPEND
+    if ( ipmmu_alloc_ctx_suspend(dev) )
+    {
+        dev_err(dev, "Failed to allocate context for suspend\n");
+        return -ENOMEM;
+    }
+#endif
+
 #ifdef CONFIG_HAS_PCI
     if ( dev_is_pci(dev) )
     {
@@ -1379,26 +1657,28 @@ static int ipmmu_add_device(u8 devfn, struct device *dev)
         struct pci_host_bridge *bridge;
         struct iommu_fwspec *fwspec_bridge;
         unsigned int utlb_osid0 = 0;
-        int ret;
 
         bridge = pci_find_host_bridge(pdev->seg, pdev->bus);
         if ( !bridge )
         {
             dev_err(dev, "Failed to find host bridge\n");
-            return -ENODEV;
+            ret = -ENODEV;
+            goto free_suspend_ctx;
         }
 
         fwspec_bridge = dev_iommu_fwspec_get(dt_to_dev(bridge->dt_node));
         if ( fwspec_bridge->num_ids < 1 )
         {
             dev_err(dev, "Failed to find host bridge uTLB\n");
-            return -ENXIO;
+            ret = -ENXIO;
+            goto free_suspend_ctx;
         }
 
         if ( fwspec->num_ids < 1 )
         {
             dev_err(dev, "Failed to find uTLB");
-            return -ENXIO;
+            ret = -ENXIO;
+            goto free_suspend_ctx;
         }
 
         rcar4_pcie_osid_regs_init(bridge);
@@ -1407,7 +1687,7 @@ static int ipmmu_add_device(u8 devfn, struct device *dev)
         if ( ret < 0 )
         {
             dev_err(dev, "No unused OSID regs\n");
-            return ret;
+            goto free_suspend_ctx;
         }
         reg_id = ret;
 
@@ -1422,7 +1702,7 @@ static int ipmmu_add_device(u8 devfn, struct device *dev)
         {
             rcar4_pcie_osid_bdf_clear(bridge, reg_id);
             rcar4_pcie_osid_reg_free(bridge, reg_id);
-            return ret;
+            goto free_suspend_ctx;
         }
     }
 #endif
@@ -1431,6 +1711,13 @@ static int ipmmu_add_device(u8 devfn, struct device *dev)
              dev_name(fwspec->iommu_dev), fwspec->num_ids);
 
     return 0;
+#ifdef CONFIG_HAS_PCI
+ free_suspend_ctx:
+#ifdef CONFIG_SYSTEM_SUSPEND
+    ipmmu_free_ctx_suspend(dev);
+#endif
+    return ret;
+#endif
 }
 
 static int ipmmu_iommu_domain_init(struct domain *d)
@@ -1492,6 +1779,10 @@ static const struct iommu_ops ipmmu_iommu_ops =
     .unmap_page      = arm_iommu_unmap_page,
     .dt_xlate        = ipmmu_dt_xlate,
     .add_device      = ipmmu_add_device,
+#ifdef CONFIG_SYSTEM_SUSPEND
+    .suspend         = ipmmu_suspend,
+    .resume          = ipmmu_resume,
+#endif
 };
 
 static __init int ipmmu_init(struct dt_device_node *node, const void *data)
-- 
2.43.0



From xen-devel-bounces@lists.xenproject.org Thu Apr 02 10:47:38 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 02 Apr 2026 10:47:38 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1271519.1559629 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1w8FaD-0003zE-2M; Thu, 02 Apr 2026 10:47:29 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1271519.1559629; Thu, 02 Apr 2026 10:47: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 1w8FaC-0003z7-UQ; Thu, 02 Apr 2026 10:47:28 +0000
Received: by outflank-mailman (input) for mailman id 1271519;
 Thu, 02 Apr 2026 10:47:27 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <xakep.amatop@gmail.com>) id 1w8FaB-0003yl-8z
 for xen-devel@lists.xenproject.org; Thu, 02 Apr 2026 10:47:27 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1w8FaA-00EiuO-LB
 for xen-devel@lists.xenproject.org; Thu, 02 Apr 2026 12:47:26 +0200
Received: from [10.42.69.11] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <xakep.amatop@gmail.com>)
 id 69ce493d-2eae-0a2a0a5409dd-0a2a450be30c-2
 for <xen-devel@lists.xenproject.org>; Thu, 02 Apr 2026 12:47:26 +0200
Received: from [209.85.218.53] (helo=mail-ej1-f53.google.com)
 by tlsNG-42698a.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.0)
 (envelope-from <xakep.amatop@gmail.com>)
 id 69ce493e-bca8-0a2a450b0019-d155da35e825-3
 for <xen-devel@lists.xenproject.org>; Thu, 02 Apr 2026 12:47:26 +0200
Received: by mail-ej1-f53.google.com with SMTP id
 a640c23a62f3a-b79f8f7ea43so122347466b.2
 for <xen-devel@lists.xenproject.org>; Thu, 02 Apr 2026 03:47:26 -0700 (PDT)
Received: from EPUAKYIW02F7.. ([45.12.26.38]) by smtp.gmail.com with ESMTPSA id
 a640c23a62f3a-b9c3d028955sm76392366b.61.2026.04.02.03.47.24
 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
 Thu, 02 Apr 2026 03:47:24 -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=20251104 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=20251104; t=1775126845; x=1775731645; 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;
        bh=lTzPtWY93Ld+V54zoC04jqY3UY+XBvaAgSHzfOFCgx8=;
        b=H10uUo8+EILPV4xBcSUbz9SQjNiyIgaFGxL3nmX79r7W9zXR8ekud61IgxpZHP4o7b
         wJwLuUCNK7UuARE5O/0OmZSXUH1dypjiM1wYyvGzwgUhFUTtwe2ubN9PB4dYsIlga6Vc
         f3WkGMwAmqgobwGsLhIg2ts2m4lnBzosI3n/wpvkpw2BQoiaiyAYbSuPCfQpLnj0Ws08
         eGHEteHUXd4yMCG+cGDeFvQ4+1eL2NE6ynV102OgX+FHY17HXwgfnlNnv3DOCpx8zI5m
         C+a9tehmgyXQz5/ZhHQbG05iOithWDnG6rr0WxzrvTtHktcaxZWBjVo8tY3AZiRz6el8
         oy4A==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20251104; t=1775126845; x=1775731645;
        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;
        bh=lTzPtWY93Ld+V54zoC04jqY3UY+XBvaAgSHzfOFCgx8=;
        b=RR//slf3g0g351eImPuQIevZdGm4RiFRjrupadltfEAj2mriwDbGM+Wb+Gllicm2Oi
         9ps04tQ4nOw+zAtVQTLvMXqdmUT2dQiAU4HXgbyxCOBW0/KdWaN+tK0UIeHU51CuelqN
         SS7PBkwov30K7SaKzj9Bb6/U5wZsnZkiqhdCJvwo2tLnKpHJq+8ZqacrUGAD0a3s1AY/
         QdOtpEJ7nVETELt8Ary7HjcUDC7jZZkwyW091/eO8GbJDR7YLzKAJ0/XlO+tgS/iULXd
         6XSXC7XfWcLmZHYF3/ZAni0g4B7HJLgWTaVp8dyjneHFkBPfXaG/JaJIUpYA/tZWEt5S
         4pCA==
X-Gm-Message-State: AOJu0YxMsbQ/KqjCQ8qDDJUSbgziTNBDbiD3GGKE4hFRRuflXc5NaQoV
	7HyKHLMIlxdKlcGxGXZFKYoz1OYZCOrih80Pu++7OiZ3C8w/5MVfUNSqlYGIwcwQ
X-Gm-Gg: ATEYQzxS78jUNqRfdshIXvfpf/sK8Q8LzM3Cmson6EFXC7hHzO9HtYGu3TdjqivOahG
	h33iALkr9lmW+WVFHVuD7WTh8G3oRO9nlS4wZ8jXeTr8MgUJnPTLJbMIIzBoOFzQdqWtq2VWyRH
	jbz5CoinSB4lY/DHfTAqWCksh8pvh4+YSvirrdoOExs1qkfvdJEVK/GPOQbvG25EnU9t5vzO2Pc
	BLpHNhizTD/fOrnTmklKlmXj17FB3N3//6vT/EApPf4gxJvA+tCS9ZrTAypVlZ3ukKOZugqhnNW
	qzQqV44Luy3LHuZKFYqK8gZR5wrQQT0LWAOTQninrzU34wSnW2OnorHeWGUzG0yhQFq790Pre5z
	jy+SORHnF4lzYMPLsofzP8StwQE/qN8+hI+aUCO+uyLDAr6bXSWhy1ppoIo4O+qBVNQD2gcXwm2
	wbqk9sPotvGyfyYZxrWxNpFhR7T4SY+/Ttc0Vc
X-Received: by 2002:a17:907:a688:b0:b98:549d:8367 with SMTP id a640c23a62f3a-b9c13902737mr477342166b.17.1775126845041;
        Thu, 02 Apr 2026 03:47:25 -0700 (PDT)
From: Mykola Kvach <xakep.amatop@gmail.com>
To: xen-devel@lists.xenproject.org
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>,
	Jan Beulich <jbeulich@suse.com>,
	=?UTF-8?q?Roger=20Pau=20Monn=C3=A9?= <roger.pau@citrix.com>,
	Jens Wiklander <jens.wiklander@linaro.org>,
	Rahul Singh <rahul.singh@arm.com>
Subject: [PATCH v8 00/13] Add initial Xen Suspend-to-RAM support on ARM64
Date: Thu,  2 Apr 2026 13:45:01 +0300
Message-ID: <cover.1775125380.git.mykola_kvach@epam.com>
X-Mailer: git-send-email 2.43.0
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit
X-purgate-ID: tlsNG-42698a/1775126846-EF9412A1-304DDA15/0/0
X-purgate-type: clean
X-purgate-size: 5285

From: Mykola Kvach <mykola_kvach@epam.com>

This is part 2 of version 8 of the ARM Xen system suspend/resume patch
series, based on earlier work by Mirela Simonovic and Mykyta Poturai.

The first part is in mainline.

NOTE: Most of the code is guarded by CONFIG_SYSTEM_SUSPEND, which can
currently only be selected when UNSUPPORTED is set, and thus the
functionality is neither enabled by default nor even built.

This version is ported to Xen master and includes extensive improvements
based on reviewer feedback. The patch series restructures code to improve
robustness, maintainability, and implements system Suspend-to-RAM support
on ARM64 hardware/control domains.

Key updates in this series:
 - Introduced architecture-specific suspend/resume infrastructure
 - Integrated GICv2/GICv3 suspend and resume, including memory-backed context
   save/restore with error handling
 - Added time and IRQ suspend/resume hooks, ensuring correct timer/interrupt
   state across suspend cycles
 - Implemented proper PSCI SYSTEM_SUSPEND invocation and version checks
 - Improved state management and recovery in error cases during suspend/resume
 - Added support for IPMMU-VMSA/SMMUv3 context save/restore
 - Added support for GICv3 eSPI registers context save/restore
 - Added support for ITS registers context save/restore
---

TODOs:
 - Enable "xl suspend" support on ARM
 - Add suspend/resume CI test for ARM (QEMU if feasible)
 - PCI suspend ?
---

Detailed changelogs can be found in each patch.

Changes in v8:
- Rebased to latest master and refreshed the series accordingly.
- Added a new GICv3 patch to tolerate retained redistributor LPI state
  across CPU_OFF/CPU_ON.
- GICv2 suspend now disables the CPU interface and distributor before
  saving state.
- GICv3 suspend/resume fixes the redistributor base used for LPI state.
- ITS and SMMUv3 suspend/resume paths were tightened, with safer
  restore/rollback handling and stricter fatal-error handling.
- System suspend now checks that all domains are already in
  SHUTDOWN_suspend before proceeding, and renames the hardware-domain
  suspend capability/helper for clearer semantics.
- Fixed alignment/cleanup issues in the low-level suspend/resume code.

Changes in v7:
- Timer helper renamed/clarified; virtual/hyper/phys handling documented.
- GICv2 uses one context block; restore saved CTLR; panic on alloc failure.
- GICv3/eSPI/ITS always suspend/resume; restore LPI/eSPI; rdist timeout.
- IPMMU suspend context allocated before PCI setup.
- System suspend: control domain drives host suspend.
- Dropped v6 IRQ descriptor restore patches; use setup_irq and re-register
  local IRQs on resume instead.

For earlier changelogs, please refer to the previous cover letters.

Mirela Simonovic (6):
  xen/arm: Add suspend and resume timer helpers
  xen/arm: gic-v2: Implement GIC suspend/resume functions
  xen/arm: Resume memory management on Xen resume
  xen/arm: Save/restore context on suspend/resume
  xen/arm: Implement PSCI SYSTEM_SUSPEND call (host interface)
  xen/arm: Add support for system suspend triggered by hardware domain

Mykola Kvach (6):
  xen/arm: gic-v3: tolerate retained redistributor LPI state across
    CPU_OFF
  xen/arm: gic-v3: Implement GICv3 suspend/resume functions
  xen/arm: gic-v3: add ITS suspend/resume support
  xen/arm: tee: keep init_tee_secondary() for hotplug and resume
  xen/arm: ffa: fix notification SRI across CPU hotplug/suspend
  arm/smmu-v3: add suspend/resume handlers

Oleksandr Tyshchenko (1):
  iommu/ipmmu-vmsa: Implement suspend/resume callbacks

 xen/arch/arm/Kconfig                     |   2 +
 xen/arch/arm/Makefile                    |   1 +
 xen/arch/arm/arm64/head.S                | 112 ++++++++
 xen/arch/arm/gic-v2.c                    | 132 +++++++++
 xen/arch/arm/gic-v3-its.c                | 126 +++++++-
 xen/arch/arm/gic-v3-lpi.c                |  80 +++++-
 xen/arch/arm/gic-v3.c                    | 349 ++++++++++++++++++++++-
 xen/arch/arm/gic.c                       |  29 ++
 xen/arch/arm/include/asm/gic.h           |  12 +
 xen/arch/arm/include/asm/gic_v3_defs.h   |   1 +
 xen/arch/arm/include/asm/gic_v3_its.h    |  24 ++
 xen/arch/arm/include/asm/mm.h            |   2 +
 xen/arch/arm/include/asm/psci.h          |   1 +
 xen/arch/arm/include/asm/suspend.h       |  31 ++
 xen/arch/arm/include/asm/time.h          |   5 +
 xen/arch/arm/mmu/smpboot.c               |   2 +-
 xen/arch/arm/psci.c                      |  23 +-
 xen/arch/arm/suspend.c                   | 195 +++++++++++++
 xen/arch/arm/tee/ffa_notif.c             |  63 +++-
 xen/arch/arm/tee/tee.c                   |   2 +-
 xen/arch/arm/time.c                      |  44 ++-
 xen/arch/arm/vpsci.c                     |  12 +-
 xen/common/Kconfig                       |   3 +
 xen/common/domain.c                      |   7 +-
 xen/drivers/passthrough/arm/ipmmu-vmsa.c | 305 +++++++++++++++++++-
 xen/drivers/passthrough/arm/smmu-v3.c    | 172 ++++++++---
 xen/drivers/passthrough/arm/smmu.c       |  10 +
 xen/include/xen/list.h                   |  14 +
 28 files changed, 1670 insertions(+), 89 deletions(-)
 create mode 100644 xen/arch/arm/suspend.c

-- 
2.43.0


From xen-devel-bounces@lists.xenproject.org Thu Apr 02 10:47:38 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 02 Apr 2026 10:47:38 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1271522.1559656 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1w8FaG-0004d6-04; Thu, 02 Apr 2026 10:47:32 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1271522.1559656; Thu, 02 Apr 2026 10:47: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 1w8FaF-0004cw-Sq; Thu, 02 Apr 2026 10:47:31 +0000
Received: by outflank-mailman (input) for mailman id 1271522;
 Thu, 02 Apr 2026 10:47:30 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <xakep.amatop@gmail.com>) id 1w8FaD-0004Am-SA
 for xen-devel@lists.xenproject.org; Thu, 02 Apr 2026 10:47:29 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1w8FaD-004haJ-8O
 for xen-devel@lists.xenproject.org; Thu, 02 Apr 2026 12:47:29 +0200
Received: from [10.42.69.6] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <xakep.amatop@gmail.com>)
 id 69ce4932-5cb7-0a2a0a5109dd-0a2a4506ed0e-16
 for <xen-devel@lists.xenproject.org>; Thu, 02 Apr 2026 12:47:29 +0200
Received: from [209.85.218.50] (helo=mail-ej1-f50.google.com)
 by tlsNG-16d1c6.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.0)
 (envelope-from <xakep.amatop@gmail.com>)
 id 69ce4941-0df0-0a2a45060019-d155da32a5de-3
 for <xen-devel@lists.xenproject.org>; Thu, 02 Apr 2026 12:47:29 +0200
Received: by mail-ej1-f50.google.com with SMTP id
 a640c23a62f3a-b9a0762ed5fso112563066b.1
 for <xen-devel@lists.xenproject.org>; Thu, 02 Apr 2026 03:47:29 -0700 (PDT)
Received: from EPUAKYIW02F7.. ([45.12.26.38]) by smtp.gmail.com with ESMTPSA id
 a640c23a62f3a-b9c3d028955sm76392366b.61.2026.04.02.03.47.26
 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
 Thu, 02 Apr 2026 03:47:27 -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=20251104 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=20251104; t=1775126848; x=1775731648; 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;
        bh=OrY9cE1nd2J0of99KnQlF14iwjljRp7bNvn2AnZysGw=;
        b=L3PM+kaAyXPWdp2b4PzoPDl1+HMP/cbwZ0q3PZmcNcfboIlOZXjhh5gHQcyE7P5Ag3
         Ssom/tpJUMz+g79mk12p+p11Vx/yzDQ/PZ79X8yI6ZYgzYzNGePB9wzf4pab6TSS1yEs
         pPN1+4yiBG+3FXDmRB+s3A5QsfDYVxv2DY5ZAMDrpzmpTP+3kp0V5CGGnBkviq3FtqFS
         EwNVfdnmKE8a6xZj10YIc79NCAaBfXQ/pL6BLxKmZuBe3hk7WcUaHDazhGIsTXcEKUFv
         w7GkjCxcuLir3BZ014pHQxCT6vVKVze2dUAoxhqK7Rb0Sb7f5mkIdRW/G8EtReLncKEM
         bphA==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20251104; t=1775126848; x=1775731648;
        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;
        bh=OrY9cE1nd2J0of99KnQlF14iwjljRp7bNvn2AnZysGw=;
        b=SJfaEwqtSzLmI4/MlAqA6wGSMA/USHAIzzztFcN1HXmQS58ypHK/we3qYtBOe7w+ut
         zXlk2zN56NiEvvc47Y5BZzYaAYzSegsRAkXlCMfmbYnqaqNDuJr+jDQRrPLfFsRmdT8M
         ixJy+xIlBX4kwYPna4l630sNP+gJikgaUqYzdX/RRHOmNpwdISYUL/4hGHgUE1paWlZf
         3lyWFsGdUtk0ueKAIHqg/fqfOgIADkohD+/iblD/HL2M4un6KSdhIMmpIguXg/wbxmTW
         HKcxky7CUnhlTowi8xG0dWAO0Ta9WedlAWIQRwJTK+InccRIJrJHUzl60d8zz2phzqiA
         SSlg==
X-Gm-Message-State: AOJu0YxrIKkKAHslIGajy3KX+gzhP7PUhodCPQS48xLpGl8C3BQL5lXM
	eALKluwg4M4sLXVRCFHLIL7ucUgSbNf+YLwGz3xjNqfXulJTnG172kpPt7pprG8a
X-Gm-Gg: ATEYQzyeM1ISVBxTfqhC00SAKkeD1igixeMUPiyIikwYN10H0n4Z3aas8+xqG1/h9/G
	OHa/mEMjzeLnfMAvM27lbuLtnhacxEvwrpl+MgSrkMTiBJv1DnSm5wUcnpvgFQI4+IN1NvBegSO
	EgKAuORgmBidV0fJgrE7lPm0C3SEBuq4d+vxhflmrTSvYkYqjwFl/9SrmzJ1h9DBBJpFM0W+XGk
	Wfvj7VudvIUYOmjUi4UQt5/qYmTiw8a/b5bEW9puYX1Q23A/4KAA+7ikg8dPUtiAu4EHEwYiG5u
	CYpbp/KCakXscDaHmPuXM6/NVymz70/Kt31kvt6chAKvQvqLI8MikT79v01Egknr+NkFZLrn9bf
	XDi18Kc1z6p0sIuuGbqbb0xBCPHj6HNZi9XZWyeLy0Mi7o0jQLRWRWSqGOKSS/jdMrICrce+SXA
	myS+7D9WRfcKvrPs6l4xwNRzvXKg==
X-Received: by 2002:a17:907:3d56:b0:b94:231f:26ca with SMTP id a640c23a62f3a-b9c46fedc37mr91352666b.20.1775126847635;
        Thu, 02 Apr 2026 03:47:27 -0700 (PDT)
From: Mykola Kvach <xakep.amatop@gmail.com>
To: xen-devel@lists.xenproject.org
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>
Subject: [PATCH v8 03/13] xen/arm: gic-v3: tolerate retained redistributor LPI state across CPU_OFF
Date: Thu,  2 Apr 2026 13:45:04 +0300
Message-ID: <df183c2bc095ec611cff03e15ac1e358f0faa982.1775125380.git.mykola_kvach@epam.com>
X-Mailer: git-send-email 2.43.0
In-Reply-To: <cover.1775125380.git.mykola_kvach@epam.com>
References: <cover.1775125380.git.mykola_kvach@epam.com>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit
X-purgate-ID: tlsNG-16d1c6/1775126849-5E5303D8-0CBBBD7E/0/0
X-purgate-type: clean
X-purgate-size: 8639

From: Mykola Kvach <mykola_kvach@epam.com>

PSCI does not guarantee that a GICv3 redistributor is powered down across
CPU_OFF -> CPU_ON.

DEN0022F.b says CPU_OFF powers down the calling core (5.5) and CPU_ON
brings the core back with a defined initial CPU state (5.6, 6.4).
However, PSCI leaves interrupt migration and GIC re-initialization to the
supervisory software/firmware stack: the caller must migrate interrupts
away before CPU_OFF (5.5.2), and the execution context that is lost in a
powerdown state must be saved and restored by software (6.8). PSCI also
calls out GIC management explicitly in 6.8, including retargeting SPIs,
preventing PPIs/SGIs from targeting a powered down CPU, and reinitializing
the CPU interface after CPU_ON.

This matches the GIC architecture. IHI0069H.b Chapter 11.1 requires the PE
and CPU interface to share a power domain, but explicitly allows the
associated redistributor, distributor, and ITS to remain powered while the
PE and CPU interface are off. All other GIC power-management behavior is
IMPLEMENTATION DEFINED. DEN0050D Chapter 4.2, "Generic Interrupt
Controller (GIC)", says the GICv3 redistributor may live either in the AP
core power domain or in a relatively always-on parent domain. So after
CPU_OFF -> CPU_ON a secondary CPU can legitimately come back to a live
redistributor with GICR_CTLR.EnableLPIs still set.

Handle that case in the LPI setup path instead of assuming a fully reset
redistributor.

The LPI path needs special care because the GIC spec makes redistributor
LPI state sticky and partially implementation defined. IHI0069H.b 5.1.1
and 5.1.2 say that changing GICR_PROPBASER or GICR_PENDBASER while
GICR_CTLR.EnableLPIs == 1 is UNPREDICTABLE. After clearing EnableLPIs,
software must wait for GICR_CTLR.RWP == 0 before touching the pending
table. The architecture also permits implementations where, once
EnableLPIs has been set, clearing it again is not guaranteed to work.
Where an ITS is present, the spec strongly recommends moving LPIs to
another redistributor before clearing EnableLPIs.

Because of that, treat a retained EnableLPIs state as valid when the
redistributor still points at Xen's expected PROPBASER/PENDBASER tables.
Only try to clear EnableLPIs when the retained configuration does not
match Xen's state, and wait for RWP before reprogramming the tables.

This is also consistent with platform firmware reality: PSCI and the GIC
architecture allow platform-specific redistributor power handling, and not
all TF-A platforms force a full redistributor power-off through
implementation-defined controls during CPU_OFF. Xen therefore needs to
tolerate retained redistributor state on secondary CPU bring-up.

Tested using Xen's non-boot CPU disable/enable path on Arm
FVP_Base_RevC-2xAEMvA, both with and without:
-C gic_distributor.allow-LPIEN-clear=1
-C gic_distributor.GICR-clear-enable-supported=1
and on Orange Pi 5.

Signed-off-by: Mykola Kvach <mykola_kvach@epam.com>
---
 xen/arch/arm/gic-v3-lpi.c             | 77 ++++++++++++++++++++++++++-
 xen/arch/arm/gic-v3.c                 | 15 ++++--
 xen/arch/arm/include/asm/gic_v3_its.h |  1 +
 3 files changed, 87 insertions(+), 6 deletions(-)

diff --git a/xen/arch/arm/gic-v3-lpi.c b/xen/arch/arm/gic-v3-lpi.c
index de5052e5cf..125f51e61b 100644
--- a/xen/arch/arm/gic-v3-lpi.c
+++ b/xen/arch/arm/gic-v3-lpi.c
@@ -81,6 +81,13 @@ static DEFINE_PER_CPU(struct lpi_redist_data, lpi_redist);
 #define MAX_NR_HOST_LPIS   (lpi_data.max_host_lpi_ids - LPI_OFFSET)
 #define HOST_LPIS_PER_PAGE      (PAGE_SIZE / sizeof(union host_lpi))
 
+#define GICR_PROPBASER_XEN_MASK  GENMASK_ULL(51, 12)
+/*
+ * For retained redistributor state, match the pending table by address only.
+ * Attribute bits such as PTZ may not read back with the programmed value.
+ */
+#define GICR_PENDBASER_XEN_MASK  GENMASK_ULL(51, 16)
+
 static union host_lpi *gic_get_host_lpi(uint32_t plpi)
 {
     union host_lpi *block;
@@ -296,6 +303,60 @@ static int gicv3_lpi_set_pendtable(void __iomem *rdist_base)
     return 0;
 }
 
+static uint64_t gicv3_lpi_expected_proptable(void)
+{
+    return virt_to_maddr(lpi_data.lpi_property);
+}
+
+static uint64_t gicv3_lpi_expected_pendtable(void)
+{
+    return virt_to_maddr(this_cpu(lpi_redist).pending_table);
+}
+
+static bool gicv3_lpi_tables_match(void __iomem *rdist_base)
+{
+    uint64_t propbase, pendbase;
+
+    if ( !lpi_data.lpi_property || !this_cpu(lpi_redist).pending_table )
+        return false;
+
+    propbase = readq_relaxed(rdist_base + GICR_PROPBASER);
+    pendbase = readq_relaxed(rdist_base + GICR_PENDBASER);
+
+    return ((propbase & GICR_PROPBASER_XEN_MASK) ==
+            (gicv3_lpi_expected_proptable() & GICR_PROPBASER_XEN_MASK)) &&
+           ((pendbase & GICR_PENDBASER_XEN_MASK) ==
+            (gicv3_lpi_expected_pendtable() & GICR_PENDBASER_XEN_MASK));
+}
+
+static int gicv3_lpi_disable_lpis(void __iomem *rdist_base)
+{
+    uint32_t reg = readl_relaxed(rdist_base + GICR_CTLR);
+    int ret;
+
+    if ( !(reg & GICR_CTLR_ENABLE_LPIS) )
+        return 0;
+
+    writel_relaxed(reg & ~GICR_CTLR_ENABLE_LPIS, rdist_base + GICR_CTLR);
+
+    /*
+     * The spec only guarantees programmability when we have observed the bit
+     * cleared. Where clearing is supported, RWP must reach 0 before touching
+     * PROPBASER/PENDBASER again.
+     */
+    wmb();
+
+    ret = gicv3_do_wait_for_rwp(rdist_base);
+    if ( ret )
+        return ret;
+
+    reg = readl_relaxed(rdist_base + GICR_CTLR);
+    if ( reg & GICR_CTLR_ENABLE_LPIS )
+        return -EBUSY;
+
+    return 0;
+}
+
 /*
  * Tell a redistributor about the (shared) property table, allocating one
  * if not already done.
@@ -373,7 +434,21 @@ int gicv3_lpi_init_rdist(void __iomem * rdist_base)
     /* Make sure LPIs are disabled before setting up the tables. */
     reg = readl_relaxed(rdist_base + GICR_CTLR);
     if ( reg & GICR_CTLR_ENABLE_LPIS )
-        return -EBUSY;
+    {
+        if ( gicv3_lpi_tables_match(rdist_base) )
+            return -EBUSY;
+
+        ret = gicv3_lpi_disable_lpis(rdist_base);
+        if ( ret == -EBUSY )
+        {
+            printk(XENLOG_ERR
+                   "GICv3: CPU%d: LPIs still enabled with unexpected redistributor tables\n",
+                   smp_processor_id());
+            return -EINVAL;
+        }
+        if ( ret )
+            return ret;
+    }
 
     ret = gicv3_lpi_set_pendtable(rdist_base);
     if ( ret )
diff --git a/xen/arch/arm/gic-v3.c b/xen/arch/arm/gic-v3.c
index bc07f97c16..34fb065afc 100644
--- a/xen/arch/arm/gic-v3.c
+++ b/xen/arch/arm/gic-v3.c
@@ -274,8 +274,8 @@ static void gicv3_enable_sre(void)
     isb();
 }
 
-/* Wait for completion of a distributor change */
-static void gicv3_do_wait_for_rwp(void __iomem *base)
+/* Wait for completion of a distributor/redistributor write-pending change. */
+int gicv3_do_wait_for_rwp(void __iomem *base)
 {
     uint32_t val;
     bool timeout = false;
@@ -295,17 +295,22 @@ static void gicv3_do_wait_for_rwp(void __iomem *base)
     } while ( 1 );
 
     if ( timeout )
+    {
         dprintk(XENLOG_ERR, "RWP timeout\n");
+        return -ETIMEDOUT;
+    }
+
+    return 0;
 }
 
 static void gicv3_dist_wait_for_rwp(void)
 {
-    gicv3_do_wait_for_rwp(GICD);
+    (void)gicv3_do_wait_for_rwp(GICD);
 }
 
 static void gicv3_redist_wait_for_rwp(void)
 {
-    gicv3_do_wait_for_rwp(GICD_RDIST_BASE);
+    (void)gicv3_do_wait_for_rwp(GICD_RDIST_BASE);
 }
 
 static void gicv3_wait_for_rwp(int irq)
@@ -925,7 +930,7 @@ static int __init gicv3_populate_rdist(void)
                     gicv3_set_redist_address(rdist_addr, procnum);
 
                     ret = gicv3_lpi_init_rdist(ptr);
-                    if ( ret && ret != -ENODEV )
+                    if ( ret && ret != -ENODEV && ret != -EBUSY )
                     {
                         printk("GICv3: CPU%d: Cannot initialize LPIs: %u\n",
                                smp_processor_id(), ret);
diff --git a/xen/arch/arm/include/asm/gic_v3_its.h b/xen/arch/arm/include/asm/gic_v3_its.h
index fc5a84892c..081bd19180 100644
--- a/xen/arch/arm/include/asm/gic_v3_its.h
+++ b/xen/arch/arm/include/asm/gic_v3_its.h
@@ -133,6 +133,7 @@ struct host_its {
 
 /* Map a collection for this host CPU to each host ITS. */
 int gicv3_its_setup_collection(unsigned int cpu);
+int gicv3_do_wait_for_rwp(void __iomem *base);
 
 #ifdef CONFIG_HAS_ITS
 
-- 
2.43.0



From xen-devel-bounces@lists.xenproject.org Thu Apr 02 10:47:39 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 02 Apr 2026 10:47:39 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1271531.1559708 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1w8FaM-00068u-VC; Thu, 02 Apr 2026 10:47:38 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1271531.1559708; Thu, 02 Apr 2026 10:47: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 1w8FaM-00068W-LF; Thu, 02 Apr 2026 10:47:38 +0000
Received: by outflank-mailman (input) for mailman id 1271531;
 Thu, 02 Apr 2026 10:47:37 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <xakep.amatop@gmail.com>) id 1w8FaK-0005kv-QR
 for xen-devel@lists.xenproject.org; Thu, 02 Apr 2026 10:47:36 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1w8FaK-004haJ-6K
 for xen-devel@lists.xenproject.org; Thu, 02 Apr 2026 12:47:36 +0200
Received: from [10.42.69.2] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <xakep.amatop@gmail.com>)
 id 69ce4943-5cb7-0a2a0a5109dd-0a2a4502ebd6-10
 for <xen-devel@lists.xenproject.org>; Thu, 02 Apr 2026 12:47:36 +0200
Received: from [209.85.218.44] (helo=mail-ej1-f44.google.com)
 by tlsNG-720697.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.0)
 (envelope-from <xakep.amatop@gmail.com>)
 id 69ce4948-42fa-0a2a45020019-d155da2cf1bf-3
 for <xen-devel@lists.xenproject.org>; Thu, 02 Apr 2026 12:47:36 +0200
Received: by mail-ej1-f44.google.com with SMTP id
 a640c23a62f3a-b9825ba7e8dso100467666b.3
 for <xen-devel@lists.xenproject.org>; Thu, 02 Apr 2026 03:47:36 -0700 (PDT)
Received: from EPUAKYIW02F7.. ([45.12.26.38]) by smtp.gmail.com with ESMTPSA id
 a640c23a62f3a-b9c3d028955sm76392366b.61.2026.04.02.03.47.33
 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
 Thu, 02 Apr 2026 03:47:34 -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=20251104 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=20251104; t=1775126855; x=1775731655; 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;
        bh=DKnYT2Yc1d3B8QvA2ZhD3FJdUHpvRkUQIwPnTMgKX5Y=;
        b=bCrEUNUJ0ujzdDmlWh/za3go8C0Ea+LBzhUnSFUJ38jS8kUWk0cLniOqlZpbUSLSq+
         FBjtALoMRQVzsuUdV1Lh60j+u7vS7cKDlZi2Xa4MRPe4ggIa0xjMC7IsGWwV3oLvB64w
         FPt0qtj6kP1VT3lKi3qxap/eD72vYNys+ETk75Rvf4tNMvyUILf468bjdb/ZmyayfyyT
         o3xjXlTUpkfDutf5Y5yDQ4qJ7AVuPtqptoqys+vC8nUzAgBDTslTv1JIumjOn7pCU89B
         gTuDwug4LpegVWWoxigP+w9/xgWVSQivVYJMpanebh8OzPDPZU9o+MBJobfqiev+Yzsr
         YnpQ==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20251104; t=1775126855; x=1775731655;
        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;
        bh=DKnYT2Yc1d3B8QvA2ZhD3FJdUHpvRkUQIwPnTMgKX5Y=;
        b=GHkDA51O2lmTEW6QDZXWNZeSpNh0mGWB7O4wPFwK+WwK/Hx7W9apYYTmVGF0Q9VP9r
         DRr4XBkadXfNk1p3iO5v3nggkVl6sB8tOm2VbO0yDdtue28kifGKHJKbjDaKFYPC3o7c
         R7pFXWFn7QDmberRqY8VuqgFkHLBsRVlqVbyCaE1Om1VVhz8Xd4Zkqv7XrYEnULflPgC
         g9mmnr8/muXOKP0yKv5H9FJjMb0S6ddGC0A/lTEWnk2f/LENmr0s8cU6VyKz/d8PA0Ug
         FA4d8d4TM6ZmQISacB1UbwNGxzhAOnYMdFWa+UbeLZHWIJ7kuC52EAuOhjAHu2SLUbH4
         RJFw==
X-Gm-Message-State: AOJu0YxXbb82FalwVJV9nZ3hLvbK8K6IUzuAebn0zgE0zDQG/xP1Aey1
	J6PogFycwjQdQ27Kqiiu7qVQhi6q5e4tcx7jaQ6RfD3EFQ9IL9xNH2n68gXm/9JV
X-Gm-Gg: ATEYQzxdXI4uWAb226DU5VzAbYXHxZQKFV0p6O0gwnUL6dJweqNXMjlZ+RWdyZuAAIo
	ArMVgIwlRkb/491TiyNjyq79lOJ45GBESSX3ObFpLAg9m/IWv4eY1ezcrt0U84akApJOA5BWDQE
	Yi7CsKcg72kkd8xAUpFDFhbG8pj64siLGBAVuSu3HVTILj7OLmwmWFyxVs6qy5yzKAXrKEXVCcK
	Ao1tanTuXJK0puLg+hSFaWUck8h7Fue06dc7xV4wouL6MQBpMR2V00g6locnFdaMeWFsO3Ynh8A
	yjlv3e0OnZiY0eXSHyXoN2xSCoY6/VtAzl8BA6qfI0RDw155iUYqvolp0o3Izc1CeYwONxc3h+n
	F/pMAsYXS/Dt1pjMZfVKKmqq71esN/vb5hmpVQJvghick1WiaqZLkiv4LN9IjFlw02Ke2viNLH+
	gZILTm6iaSn4sTBSyFX+p9ezIS3Q==
X-Received: by 2002:a17:906:5789:b0:b93:ff4d:8e38 with SMTP id a640c23a62f3a-b9c138f657dmr370628066b.20.1775126855136;
        Thu, 02 Apr 2026 03:47:35 -0700 (PDT)
From: Mykola Kvach <xakep.amatop@gmail.com>
To: xen-devel@lists.xenproject.org
Cc: Mykola Kvach <mykola_kvach@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>
Subject: [PATCH v8 09/13] arm/smmu-v3: add suspend/resume handlers
Date: Thu,  2 Apr 2026 13:45:10 +0300
Message-ID: <038337ec0e3f1474c6cc6a92090e28c6972e4dc6.1775125380.git.mykola_kvach@epam.com>
X-Mailer: git-send-email 2.43.0
In-Reply-To: <cover.1775125380.git.mykola_kvach@epam.com>
References: <cover.1775125380.git.mykola_kvach@epam.com>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit
X-purgate-ID: tlsNG-720697/1775126856-AEB27CD1-92ABB1C3/0/0
X-purgate-type: clean
X-purgate-size: 8574

Before we suspend SMMU, we want to ensure that all commands (especially
ATC_INV) have been flushed by the CMDQ, i.e. the CMDQs are empty.

The suspend callback configures the SMMU to abort new transactions,
disables the main translation unit and then drains the command queue
to ensure completion of any in-flight commands.

The resume callback performs a full device reset via 'arm_smmu_device_reset'
to bring the SMMU back to an operational state.

Signed-off-by: Mykola Kvach <mykola_kvach@epam.com>
---
Changes in V8:
- Honor ARM_SMMU_FEAT_SEV when draining the CMDQ during suspend, matching
  the existing runtime CMD_SYNC path.
- Fold the suspend rollback reset path into a helper and rename the error
  reporting to describe suspend rollback rather than resume.
- Treat SMMU reset failure during resume as fatal instead of logging and
  continuing with a potentially unusable IOMMU.
- cosmetic changes
---
 xen/drivers/passthrough/arm/smmu-v3.c | 172 ++++++++++++++++++++------
 1 file changed, 136 insertions(+), 36 deletions(-)

diff --git a/xen/drivers/passthrough/arm/smmu-v3.c b/xen/drivers/passthrough/arm/smmu-v3.c
index bf153227db..7607ffc9ca 100644
--- a/xen/drivers/passthrough/arm/smmu-v3.c
+++ b/xen/drivers/passthrough/arm/smmu-v3.c
@@ -1814,8 +1814,7 @@ static int arm_smmu_write_reg_sync(struct arm_smmu_device *smmu, u32 val,
 }
 
 /* GBPA is "special" */
-static int __init arm_smmu_update_gbpa(struct arm_smmu_device *smmu,
-                                       u32 set, u32 clr)
+static int arm_smmu_update_gbpa(struct arm_smmu_device *smmu, u32 set, u32 clr)
 {
 	int ret;
 	u32 reg, __iomem *gbpa = smmu->base + ARM_SMMU_GBPA;
@@ -1995,10 +1994,29 @@ err_free_evtq_irq:
 	return ret;
 }
 
+static int arm_smmu_enable_irqs(struct arm_smmu_device *smmu)
+{
+	int ret;
+	u32 irqen_flags = IRQ_CTRL_EVTQ_IRQEN | IRQ_CTRL_GERROR_IRQEN;
+
+	if ( smmu->features & ARM_SMMU_FEAT_PRI )
+		irqen_flags |= IRQ_CTRL_PRIQ_IRQEN;
+
+	/* Enable interrupt generation on the SMMU */
+	ret = arm_smmu_write_reg_sync(smmu, irqen_flags,
+				      ARM_SMMU_IRQ_CTRL, ARM_SMMU_IRQ_CTRLACK);
+	if ( ret )
+	{
+		dev_warn(smmu->dev, "failed to enable irqs\n");
+		return ret;
+	}
+
+	return 0;
+}
+
 static int __init arm_smmu_setup_irqs(struct arm_smmu_device *smmu)
 {
 	int ret, irq;
-	u32 irqen_flags = IRQ_CTRL_EVTQ_IRQEN | IRQ_CTRL_GERROR_IRQEN;
 
 	/* Disable IRQs first */
 	ret = arm_smmu_write_reg_sync(smmu, 0, ARM_SMMU_IRQ_CTRL,
@@ -2028,22 +2046,7 @@ static int __init arm_smmu_setup_irqs(struct arm_smmu_device *smmu)
 		}
 	}
 
-	if (smmu->features & ARM_SMMU_FEAT_PRI)
-		irqen_flags |= IRQ_CTRL_PRIQ_IRQEN;
-
-	/* Enable interrupt generation on the SMMU */
-	ret = arm_smmu_write_reg_sync(smmu, irqen_flags,
-				      ARM_SMMU_IRQ_CTRL, ARM_SMMU_IRQ_CTRLACK);
-	if (ret) {
-		dev_warn(smmu->dev, "failed to enable irqs\n");
-		goto err_free_irqs;
-	}
-
 	return 0;
-
-err_free_irqs:
-	arm_smmu_free_irqs(smmu);
-	return ret;
 }
 
 static int arm_smmu_device_disable(struct arm_smmu_device *smmu)
@@ -2057,7 +2060,7 @@ static int arm_smmu_device_disable(struct arm_smmu_device *smmu)
 	return ret;
 }
 
-static int __init arm_smmu_device_reset(struct arm_smmu_device *smmu)
+static int arm_smmu_device_reset(struct arm_smmu_device *smmu)
 {
 	int ret;
 	u32 reg, enables;
@@ -2163,17 +2166,9 @@ static int __init arm_smmu_device_reset(struct arm_smmu_device *smmu)
 		}
 	}
 
-	ret = arm_smmu_setup_irqs(smmu);
-	if (ret) {
-		dev_err(smmu->dev, "failed to setup irqs\n");
+	ret = arm_smmu_enable_irqs(smmu);
+	if ( ret )
 		return ret;
-	}
-
-	/* Initialize tasklets for threaded IRQs*/
-	tasklet_init(&smmu->evtq_irq_tasklet, arm_smmu_evtq_tasklet, smmu);
-	tasklet_init(&smmu->priq_irq_tasklet, arm_smmu_priq_tasklet, smmu);
-	tasklet_init(&smmu->combined_irq_tasklet, arm_smmu_combined_irq_tasklet,
-				 smmu);
 
 	/* Enable the SMMU interface, or ensure bypass */
 	if (disable_bypass) {
@@ -2181,20 +2176,16 @@ static int __init arm_smmu_device_reset(struct arm_smmu_device *smmu)
 	} else {
 		ret = arm_smmu_update_gbpa(smmu, 0, GBPA_ABORT);
 		if (ret)
-			goto err_free_irqs;
+			return ret;
 	}
 	ret = arm_smmu_write_reg_sync(smmu, enables, ARM_SMMU_CR0,
 				      ARM_SMMU_CR0ACK);
 	if (ret) {
 		dev_err(smmu->dev, "failed to enable SMMU interface\n");
-		goto err_free_irqs;
+		return ret;
 	}
 
 	return 0;
-
-err_free_irqs:
-	arm_smmu_free_irqs(smmu);
-	return ret;
 }
 
 static int arm_smmu_device_hw_probe(struct arm_smmu_device *smmu)
@@ -2558,10 +2549,23 @@ static int __init arm_smmu_device_probe(struct platform_device *pdev)
 	if (ret)
 		goto out_free;
 
+	ret = arm_smmu_setup_irqs(smmu);
+	if ( ret )
+	{
+		dev_err(smmu->dev, "failed to setup irqs\n");
+		goto out_free;
+	}
+
+	/* Initialize tasklets for threaded IRQs*/
+	tasklet_init(&smmu->evtq_irq_tasklet, arm_smmu_evtq_tasklet, smmu);
+	tasklet_init(&smmu->priq_irq_tasklet, arm_smmu_priq_tasklet, smmu);
+	tasklet_init(&smmu->combined_irq_tasklet, arm_smmu_combined_irq_tasklet,
+				smmu);
+
 	/* Reset the device */
 	ret = arm_smmu_device_reset(smmu);
 	if (ret)
-		goto out_free;
+		goto out_free_irqs;
 
 	/*
 	 * Keep a list of all probed devices. This will be used to query
@@ -2575,6 +2579,8 @@ static int __init arm_smmu_device_probe(struct platform_device *pdev)
 
 	return 0;
 
+out_free_irqs:
+	arm_smmu_free_irqs(smmu);
 
 out_free:
 	arm_smmu_free_structures(smmu);
@@ -2855,6 +2861,96 @@ static void arm_smmu_iommu_xen_domain_teardown(struct domain *d)
 	xfree(xen_domain);
 }
 
+#ifdef CONFIG_SYSTEM_SUSPEND
+
+static void arm_smmu_reset_for_suspend_rollback(struct arm_smmu_device *smmu)
+{
+	int ret = arm_smmu_device_reset(smmu);
+
+	if ( ret )
+		dev_err(smmu->dev, "Failed to reset during suspend rollback: %d\n",
+				ret);
+}
+
+static int arm_smmu_suspend(void)
+{
+	struct arm_smmu_device *smmu;
+	int ret = 0;
+
+	list_for_each_entry(smmu, &arm_smmu_devices, devices)
+	{
+		bool wfe = !!(smmu->features & ARM_SMMU_FEAT_SEV);
+
+		/* Abort all transactions before disable to avoid spurious bypass */
+		ret = arm_smmu_update_gbpa(smmu, GBPA_ABORT, 0);
+		if ( ret )
+			goto fail;
+
+		/* Disable the SMMU via CR0.EN and all queues except CMDQ */
+		ret = arm_smmu_write_reg_sync(smmu, CR0_CMDQEN, ARM_SMMU_CR0,
+					ARM_SMMU_CR0ACK);
+		if ( ret )
+		{
+			dev_err(smmu->dev, "Timed-out while disabling smmu\n");
+			goto fail;
+		}
+
+		/*
+		 * At this point the SMMU is completely disabled and won't access
+		 * any translation/config structures, even speculative accesses
+		 * aren't performed as per the IHI0070 spec (section 6.3.9.6).
+		 */
+
+		/* Wait for the CMDQs to be drained to flush any pending commands */
+		ret = queue_poll_cons(&smmu->cmdq.q, true, wfe);
+		if ( ret )
+		{
+			dev_err(smmu->dev, "Draining queues timed-out\n");
+			goto fail;
+		}
+
+		/* Disable everything */
+		ret = arm_smmu_device_disable(smmu);
+		if ( ret )
+			goto fail;
+
+		dev_dbg(smmu->dev, "Suspended smmu\n");
+	}
+
+	return 0;
+
+ fail:
+	/* Reset the device that failed as well as any already-suspended ones. */
+	arm_smmu_reset_for_suspend_rollback(smmu);
+
+	list_for_each_entry_continue_reverse(smmu, &arm_smmu_devices, devices)
+		arm_smmu_reset_for_suspend_rollback(smmu);
+
+	return ret;
+}
+
+static void arm_smmu_resume(void)
+{
+	int ret;
+	struct arm_smmu_device *smmu;
+
+	list_for_each_entry(smmu, &arm_smmu_devices, devices)
+	{
+		dev_dbg(smmu->dev, "Resuming device\n");
+
+		/*
+		 * The reset will re-initialize all the base addresses, queues,
+		 * prod and cons maintained within struct arm_smmu_device as well as
+		 * re-enable the interrupts.
+		 */
+		ret = arm_smmu_device_reset(smmu);
+		if ( ret )
+			panic("SMMUv3: %s: Failed to reset during resume: %d\n",
+			      dev_name(smmu->dev), ret);
+	}
+}
+#endif
+
 static const struct iommu_ops arm_smmu_iommu_ops = {
 	.page_sizes		= PAGE_SIZE_4K,
 	.init			= arm_smmu_iommu_xen_domain_init,
@@ -2867,6 +2963,10 @@ static const struct iommu_ops arm_smmu_iommu_ops = {
 	.unmap_page		= arm_iommu_unmap_page,
 	.dt_xlate		= arm_smmu_dt_xlate,
 	.add_device		= arm_smmu_add_device,
+#ifdef CONFIG_SYSTEM_SUSPEND
+	.suspend		= arm_smmu_suspend,
+	.resume			= arm_smmu_resume,
+#endif
 };
 
 static __init int arm_smmu_dt_init(struct dt_device_node *dev,
-- 
2.43.0



From xen-devel-bounces@lists.xenproject.org Thu Apr 02 10:47:40 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 02 Apr 2026 10:47:40 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1271535.1559717 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1w8FaO-0006NJ-II; Thu, 02 Apr 2026 10:47:40 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1271535.1559717; Thu, 02 Apr 2026 10:47: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 1w8FaO-0006M9-19; Thu, 02 Apr 2026 10:47:40 +0000
Received: by outflank-mailman (input) for mailman id 1271535;
 Thu, 02 Apr 2026 10:47:38 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <xakep.amatop@gmail.com>) id 1w8FaM-00064W-Hd
 for xen-devel@lists.xenproject.org; Thu, 02 Apr 2026 10:47:38 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1w8FaL-00Ej0u-T9
 for xen-devel@lists.xenproject.org; Thu, 02 Apr 2026 12:47:37 +0200
Received: from [10.42.69.5] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <xakep.amatop@gmail.com>)
 id 69ce4947-2eae-0a2a0a5409dd-0a2a4505b638-10
 for <xen-devel@lists.xenproject.org>; Thu, 02 Apr 2026 12:47:37 +0200
Received: from [209.85.218.51] (helo=mail-ej1-f51.google.com)
 by tlsNG-c201ff.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.0)
 (envelope-from <xakep.amatop@gmail.com>)
 id 69ce4949-3760-0a2a45050019-d155da33c8ee-3
 for <xen-devel@lists.xenproject.org>; Thu, 02 Apr 2026 12:47:37 +0200
Received: by mail-ej1-f51.google.com with SMTP id
 a640c23a62f3a-b97e6e48b24so109055566b.2
 for <xen-devel@lists.xenproject.org>; Thu, 02 Apr 2026 03:47:37 -0700 (PDT)
Received: from EPUAKYIW02F7.. ([45.12.26.38]) by smtp.gmail.com with ESMTPSA id
 a640c23a62f3a-b9c3d028955sm76392366b.61.2026.04.02.03.47.35
 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
 Thu, 02 Apr 2026 03:47:35 -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=20251104 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=20251104; t=1775126857; x=1775731657; 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;
        bh=Wn2YE/N1073l2aBvkRQ/5nSVLZsSRqqVHeilL+wTO7s=;
        b=i476hIDYFm4HFhwljw3XbCq42pjM+Ftx25bW+E5ROSF0ZOBHy5bckqYeb9vMLbe5Mq
         E2xZoYvjukoeowBDIWrlL3enDj5XHGcUwxnWH3Psvg3B4MWZUHybgUrNWVC//xWUg/u4
         O8waZZ1Jl6JzxQMAJiikWW7I7Pjfz2iHJOwi43c2Ful9L2DJhZLhEQl1PSqWEgtoC9KI
         REEHmSd7O0b5Xi1VVvH1pnn3JkNP1fSB4bmAb8bche0tCosJIy1DgLKrBQz9kDLLzHXA
         A6cSWnArndeqoUAfh3CKVpMiPewpufAqiKfNZ+tYC9S4PqI//d42Hela85Jols7f7rR7
         +mBg==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20251104; t=1775126857; x=1775731657;
        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;
        bh=Wn2YE/N1073l2aBvkRQ/5nSVLZsSRqqVHeilL+wTO7s=;
        b=kbrlyWWDW3NVU5PQTeutWPAwx9pM+QX1ZflYsPnI0CT2s8DU2go050bUK8sckq2TDB
         OuGQKkzRKX35dBFwY9I4l1lKb5OksSaVmSB6jGsmhEi63N8/ddozVb5+Co14O4IEmTF+
         p9g/coRPWqBGHFy53FM0JILVDsr+LoDAcLiAgQS2TaiBK6zTPlVvah388Gj9SEq1CQ+C
         cixCw0Ejbrr0SzZPeM3emJ3f+d4+HrwhWifo0IqpE9gCZWT1bLQ096AqCzzHTCW2wTV5
         WBn9F4h2TE0RTDnVcftt8dVEIgsx4pw0x9AiaErKG8hwDWzPxvAWnSedpMLZhb8WScFH
         fnew==
X-Gm-Message-State: AOJu0YwAmA+uoZy8ssgWoPlOSrewkOb9JGcd/JMVp9bd+F7hRe8Ue9bE
	WpROyS3tgTtU2fUot4egjnZixRv65rNwOcCr+K+4IjvxXc3cLmsuok/wWiiWR4Si
X-Gm-Gg: ATEYQzzHkIkMKvnF/cyPy/hY/HlxnjnmqFi1tSjOQqHSyKbsBqGRla9QAOCmtbzYaKC
	8bd82D26v0zR8Q5dhEbfLU+GP6JoBcVdjsNEvL33P1ABfX+U2tUW5xbS4kq5guXZaWLOtKgHccU
	L1BRzPuwSSd+qiJrPyHY2deRfsWc+1eb0dmkwDtyCL2p4TOXn+yNSBKkGxffCSq9URxAJhcsoMK
	o625QSAkrh3tZ0YQmiIpjEc2rp9NyG5Ua9WB3695v9E5m0eQu5gG38g2YWSTBEhxUajgB2wpa8E
	GmeIID5aa0U+pas56tVqgBeiFcceAAsPdP5zpjCYz9AxywKR/6X50UBocfsNM+uSvEw7r7AVd5m
	vTiqH2wGmVLEaTSFZ5LOKYPTNdADZiYfppM8Rd99dEpRLAMQmRZp+KWJA3Z5r18ueglkd0D07yP
	z/6O6hRDHWbqRhS8sGdJPOSyPrLakFzLY07Vjb
X-Received: by 2002:a17:907:86a5:b0:b98:6984:6630 with SMTP id a640c23a62f3a-b9c137b3ccdmr462677366b.8.1775126856213;
        Thu, 02 Apr 2026 03:47:36 -0700 (PDT)
From: Mykola Kvach <xakep.amatop@gmail.com>
To: xen-devel@lists.xenproject.org
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>
Subject: [PATCH v8 10/13] xen/arm: Resume memory management on Xen resume
Date: Thu,  2 Apr 2026 13:45:11 +0300
Message-ID: <02b55a02f329d09c9f8b15d97ca9176b3c33017a.1775125380.git.mykola_kvach@epam.com>
X-Mailer: git-send-email 2.43.0
In-Reply-To: <cover.1775125380.git.mykola_kvach@epam.com>
References: <cover.1775125380.git.mykola_kvach@epam.com>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit
X-purgate-ID: tlsNG-c201ff/1775126857-3959396F-ED9056AE/0/0
X-purgate-type: clean
X-purgate-size: 1771

From: Mirela Simonovic <mirela.simonovic@aggios.com>

The MMU must be enabled during the resume path before restoring context,
as virtual addresses are used to access the saved context data.

This patch adds MMU setup during resume by reusing the existing
enable_secondary_cpu_mm function, which enables data cache and the MMU.
Before the MMU is enabled, the content of TTBR0_EL2 is changed to point
to init_ttbr (page tables used at runtime).

Signed-off-by: Mirela Simonovic <mirela.simonovic@aggios.com>
Signed-off-by: Saeed Nowshadi <saeed.nowshadi@xilinx.com>
Signed-off-by: Mykyta Poturai <mykyta_poturai@epam.com>
Signed-off-by: Mykola Kvach <mykola_kvach@epam.com>
---
Changes in v7:
- no functional changes, just moved commit
---
 xen/arch/arm/arm64/head.S | 24 ++++++++++++++++++++++++
 1 file changed, 24 insertions(+)

diff --git a/xen/arch/arm/arm64/head.S b/xen/arch/arm/arm64/head.S
index 72c7b24498..596e960152 100644
--- a/xen/arch/arm/arm64/head.S
+++ b/xen/arch/arm/arm64/head.S
@@ -561,6 +561,30 @@ END(efi_xen_start)
 
 #endif /* CONFIG_ARM_EFI */
 
+#ifdef CONFIG_SYSTEM_SUSPEND
+
+FUNC(hyp_resume)
+        /* Initialize the UART if earlyprintk has been enabled. */
+#ifdef CONFIG_EARLY_PRINTK
+        bl    init_uart
+#endif
+        PRINT_ID("- Xen resuming -\r\n")
+
+        bl    check_cpu_mode
+        bl    cpu_init
+
+        ldr   x0, =start
+        adr   x20, start             /* x20 := paddr (start) */
+        sub   x20, x20, x0           /* x20 := phys-offset */
+        ldr   lr, =mmu_resumed
+        b     enable_secondary_cpu_mm
+
+mmu_resumed:
+        b .
+END(hyp_resume)
+
+#endif /* CONFIG_SYSTEM_SUSPEND */
+
 /*
  * Local variables:
  * mode: ASM
-- 
2.43.0



From xen-devel-bounces@lists.xenproject.org Thu Apr 02 10:47:41 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 02 Apr 2026 10:47:41 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1271537.1559723 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1w8FaP-0006U2-Gm; Thu, 02 Apr 2026 10:47:41 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1271537.1559723; Thu, 02 Apr 2026 10:47: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 1w8FaO-0006RL-IG; Thu, 02 Apr 2026 10:47:40 +0000
Received: by outflank-mailman (input) for mailman id 1271537;
 Thu, 02 Apr 2026 10:47:39 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <xakep.amatop@gmail.com>) id 1w8FaM-00067Z-PE
 for xen-devel@lists.xenproject.org; Thu, 02 Apr 2026 10:47:38 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1w8FaM-00Ej0u-4t
 for xen-devel@lists.xenproject.org; Thu, 02 Apr 2026 12:47:38 +0200
Received: from [10.42.69.5] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <xakep.amatop@gmail.com>)
 id 69ce4947-2eae-0a2a0a5409dd-0a2a4505b638-12
 for <xen-devel@lists.xenproject.org>; Thu, 02 Apr 2026 12:47:38 +0200
Received: from [209.85.218.45] (helo=mail-ej1-f45.google.com)
 by tlsNG-c201ff.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.0)
 (envelope-from <xakep.amatop@gmail.com>)
 id 69ce494a-3760-0a2a45050019-d155da2da5b5-3
 for <xen-devel@lists.xenproject.org>; Thu, 02 Apr 2026 12:47:38 +0200
Received: by mail-ej1-f45.google.com with SMTP id
 a640c23a62f3a-b9a0762ed5fso112580866b.1
 for <xen-devel@lists.xenproject.org>; Thu, 02 Apr 2026 03:47:38 -0700 (PDT)
Received: from EPUAKYIW02F7.. ([45.12.26.38]) by smtp.gmail.com with ESMTPSA id
 a640c23a62f3a-b9c3d028955sm76392366b.61.2026.04.02.03.47.36
 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
 Thu, 02 Apr 2026 03:47: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=20251104 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=20251104; t=1775126857; x=1775731657; 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;
        bh=zPqg0vXhWWH1w1hlbbZTkVgax5cKCfDJE6WmuksoUYo=;
        b=XzNNXBZ0XzWFnGtiBZ1yT3Mphevk23hj5Lzrx0nbE/kKI0Kd6lkbAs4bNnRgse3cOl
         BVX2smmpF5UqejCDojw+b3v3bpeLIeaY5poKd2LGN+m6EEg4Z6pa0q8RBmRePnMFvEjk
         xPqnhAhSeDJ5+FqKn3Cz6MOVJjOvuF5m5BTqNK0hJ/XJXgAcN0SQT5Y3odwjhO/h/HcM
         fiu6IeEWNTh4N2hh7AdxvXtwFkcw1XNH2ehMxtuE0lydLq3A0QtCRga98qdC4CwgEVu0
         044j0x/l9N4kMyS9G4o18D4/ywWIYf/yQL9xB1xc743Mrj5EwRfwYiIdvZJGmIeqrjmW
         00fg==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20251104; t=1775126857; x=1775731657;
        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;
        bh=zPqg0vXhWWH1w1hlbbZTkVgax5cKCfDJE6WmuksoUYo=;
        b=MFDW1hOZmdwkhYwFXb/iV4a3OsW+icPDVCZ71xYZxBYE87ZKFahTNlKruEVvRdmDD3
         rNNvr2tYD9ZSDQSKKV2CmvBgzOGeuhas54bBXNOyf0szn84Suzq3OKAGfhfYnf7qHAuY
         L727wWKLIE5cYZCQuEYvuI+Xr4SfEb+TooOxQhpzpK+RiXylpkmLdI39MGYCd0Sec3nh
         3BxPuNFORmr5Tss6Am0TUCxF6aOkD7ykJfRxleM1CVyfllUDOMKdt0Y60rsMmGZAqlf1
         w9n59HD5nc2Z48tWqTB9PlUWhwO84RVMcr45llWE30eJOYKZmPPux3QBH3Lpkgdhe+++
         IYvw==
X-Gm-Message-State: AOJu0Yws0fxml572L6y7c59gdQbXlu4MXPTNWXHbpL0//AbjS+QDLrYa
	XxEOVG0Y7WeLFX8lITdx2Tu8nr4a+Hl+K9puPB9oiuPDZHkI6xCcKbvgUxEhEQrz
X-Gm-Gg: ATEYQzwHtZUkKsviNXdX3X+dd2X1K67kgj3P/lbhGWi2Ft/T6uYs1m9yObm0zQ8NJdB
	ROY/tmdEMuNCjt0gyoIgvk7Eq6wiFws6ze24LrojsYWFOkd6teo+7Fz7qsCTsrYPR3GSAqU0f9v
	VOAuAXrzLm79qSLbdQnvqgNLe8+k33PX9Ndb8K4ekJBVVQUaJQITpcA/GiAbsqnfd4U7GglFJdF
	mY9ughY6Oo4wmZjh2ZoPDfNxftA6j1UV0KfODNK7V602yqFaJ0rywDd/2z9lptQSsDy/gY3DDOc
	JTvHiKiSqp9CvtHZrsOEGHQ9cPaqWPMLnTCGJL9KuEh42iS9TCYLOSy/CCoNl43K1qBjJ5W4DkD
	p5qO18Y0IpmjDetYwh5dYZz7NoEBueZdOnjDoaDIeiN5JAtqH8FU5Ln/lc18KjU6HhX+9uuvitm
	h8Fi1F+vMyYHoAohm0elXluPSNSg==
X-Received: by 2002:a17:907:c22:b0:b98:f1d:6a63 with SMTP id a640c23a62f3a-b9c46e25d10mr98516666b.9.1775126857055;
        Thu, 02 Apr 2026 03:47:37 -0700 (PDT)
From: Mykola Kvach <xakep.amatop@gmail.com>
To: xen-devel@lists.xenproject.org
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>
Subject: [PATCH v8 11/13] xen/arm: Save/restore context on suspend/resume
Date: Thu,  2 Apr 2026 13:45:12 +0300
Message-ID: <f87a2bcb6b09e95e07e51c27541ad91406e849d1.1775125380.git.mykola_kvach@epam.com>
X-Mailer: git-send-email 2.43.0
In-Reply-To: <cover.1775125380.git.mykola_kvach@epam.com>
References: <cover.1775125380.git.mykola_kvach@epam.com>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit
X-purgate-ID: tlsNG-c201ff/1775126858-3979296F-423BE752/0/0
X-purgate-type: clean
X-purgate-size: 7252

From: Mirela Simonovic <mirela.simonovic@aggios.com>

The context of CPU general purpose and system control registers must be
saved on suspend and restored on resume. This is implemented in
prepare_resume_ctx and before the return from the hyp_resume function.
The prepare_resume_ctx must be invoked just before the PSCI system suspend
call is issued to the ATF. The prepare_resume_ctx must return a non-zero
value so that the calling 'if' statement evaluates to true, causing the
system suspend to be invoked. Upon resume, the context saved on suspend
will be restored, including the link register. Therefore, after
restoring the context, the control flow will return to the address
pointed to by the saved link register, which is the place from which
prepare_resume_ctx was called. To ensure that the calling 'if' statement
does not again evaluate to true and initiate system suspend, hyp_resume
must return a zero value after restoring the context.

Note that the order of saving register context into cpu_context structure
must match the order of restoring.

Support for ARM32 is not implemented. Instead, compilation fails with a
build-time error if suspend is enabled for ARM32.

Signed-off-by: Mirela Simonovic <mirela.simonovic@aggios.com>
Signed-off-by: Saeed Nowshadi <saeed.nowshadi@xilinx.com>
Signed-off-by: Mykyta Poturai <mykyta_poturai@epam.com>
Signed-off-by: Mykola Kvach <mykola_kvach@epam.com>
---
Changes in v8:
- fix alignments in code

Changes in v7:
- no changes
---
 xen/arch/arm/Makefile              |  1 +
 xen/arch/arm/arm64/head.S          | 90 +++++++++++++++++++++++++++++-
 xen/arch/arm/include/asm/suspend.h | 26 +++++++++
 xen/arch/arm/suspend.c             | 14 +++++
 4 files changed, 130 insertions(+), 1 deletion(-)
 create mode 100644 xen/arch/arm/suspend.c

diff --git a/xen/arch/arm/Makefile b/xen/arch/arm/Makefile
index 69200b2728..c36158271a 100644
--- a/xen/arch/arm/Makefile
+++ b/xen/arch/arm/Makefile
@@ -51,6 +51,7 @@ obj-y += setup.o
 obj-y += shutdown.o
 obj-y += smp.o
 obj-y += smpboot.o
+obj-$(CONFIG_SYSTEM_SUSPEND) += suspend.o
 obj-$(CONFIG_SYSCTL) += sysctl.o
 obj-y += time.o
 obj-y += traps.o
diff --git a/xen/arch/arm/arm64/head.S b/xen/arch/arm/arm64/head.S
index 596e960152..2cb02ee314 100644
--- a/xen/arch/arm/arm64/head.S
+++ b/xen/arch/arm/arm64/head.S
@@ -562,6 +562,52 @@ END(efi_xen_start)
 #endif /* CONFIG_ARM_EFI */
 
 #ifdef CONFIG_SYSTEM_SUSPEND
+/*
+ * int prepare_resume_ctx(struct cpu_context *ptr)
+ *
+ * x0 - pointer to the storage where callee's context will be saved
+ *
+ * CPU context saved here will be restored on resume in hyp_resume function.
+ * prepare_resume_ctx shall return a non-zero value. Upon restoring context
+ * hyp_resume shall return value zero instead. From C code that invokes
+ * prepare_resume_ctx, the return value is interpreted to determine whether
+ * the context is saved (prepare_resume_ctx) or restored (hyp_resume).
+ */
+FUNC(prepare_resume_ctx)
+        /* Store callee-saved registers */
+        stp   x19, x20, [x0], #16
+        stp   x21, x22, [x0], #16
+        stp   x23, x24, [x0], #16
+        stp   x25, x26, [x0], #16
+        stp   x27, x28, [x0], #16
+        stp   x29, lr, [x0], #16
+
+        /* Store stack-pointer */
+        mov   x2, sp
+        str   x2, [x0], #8
+
+        /* Store system control registers */
+        mrs   x2, VBAR_EL2
+        str   x2, [x0], #8
+        mrs   x2, VTCR_EL2
+        str   x2, [x0], #8
+        mrs   x2, VTTBR_EL2
+        str   x2, [x0], #8
+        mrs   x2, TPIDR_EL2
+        str   x2, [x0], #8
+        mrs   x2, MDCR_EL2
+        str   x2, [x0], #8
+        mrs   x2, HSTR_EL2
+        str   x2, [x0], #8
+        mrs   x2, CPTR_EL2
+        str   x2, [x0], #8
+        mrs   x2, HCR_EL2
+        str   x2, [x0], #8
+
+        /* prepare_resume_ctx must return a non-zero value */
+        mov   x0, #1
+        ret
+END(prepare_resume_ctx)
 
 FUNC(hyp_resume)
         /* Initialize the UART if earlyprintk has been enabled. */
@@ -580,7 +626,49 @@ FUNC(hyp_resume)
         b     enable_secondary_cpu_mm
 
 mmu_resumed:
-        b .
+        /* Now we can access the cpu_context, so restore the context here */
+        ldr   x0, =cpu_context
+
+        /* Restore callee-saved registers */
+        ldp   x19, x20, [x0], #16
+        ldp   x21, x22, [x0], #16
+        ldp   x23, x24, [x0], #16
+        ldp   x25, x26, [x0], #16
+        ldp   x27, x28, [x0], #16
+        ldp   x29, lr, [x0], #16
+
+        /* Restore stack pointer */
+        ldr   x2, [x0], #8
+        mov   sp, x2
+
+        /* Restore system control registers */
+        ldr   x2, [x0], #8
+        msr   VBAR_EL2, x2
+        ldr   x2, [x0], #8
+        msr   VTCR_EL2, x2
+        ldr   x2, [x0], #8
+        msr   VTTBR_EL2, x2
+        ldr   x2, [x0], #8
+        msr   TPIDR_EL2, x2
+        ldr   x2, [x0], #8
+        msr   MDCR_EL2, x2
+        ldr   x2, [x0], #8
+        msr   HSTR_EL2, x2
+        ldr   x2, [x0], #8
+        msr   CPTR_EL2, x2
+        ldr   x2, [x0], #8
+        msr   HCR_EL2, x2
+        isb
+
+        /*
+         * Since context is restored return from this function will appear
+         * as return from prepare_resume_ctx. To distinguish a return from
+         * prepare_resume_ctx which is called upon finalizing the suspend,
+         * as opposed to return from this function which executes on resume,
+         * we need to return zero value here.
+         */
+        mov   x0, #0
+        ret
 END(hyp_resume)
 
 #endif /* CONFIG_SYSTEM_SUSPEND */
diff --git a/xen/arch/arm/include/asm/suspend.h b/xen/arch/arm/include/asm/suspend.h
index 31a98a1f1b..c127fa3d78 100644
--- a/xen/arch/arm/include/asm/suspend.h
+++ b/xen/arch/arm/include/asm/suspend.h
@@ -3,6 +3,8 @@
 #ifndef ARM_SUSPEND_H
 #define ARM_SUSPEND_H
 
+#include <xen/types.h>
+
 struct domain;
 struct vcpu;
 struct vcpu_guest_context;
@@ -14,6 +16,30 @@ struct resume_info {
 
 void arch_domain_resume(struct domain *d);
 
+#ifdef CONFIG_SYSTEM_SUSPEND
+#ifdef CONFIG_ARM_64
+struct cpu_context {
+    register_t callee_regs[12];
+    register_t sp;
+    register_t vbar_el2;
+    register_t vtcr_el2;
+    register_t vttbr_el2;
+    register_t tpidr_el2;
+    register_t mdcr_el2;
+    register_t hstr_el2;
+    register_t cptr_el2;
+    register_t hcr_el2;
+} __aligned(16);
+#else
+#error "Define cpu_context structure for arm32"
+#endif
+
+extern struct cpu_context cpu_context;
+
+int prepare_resume_ctx(struct cpu_context *ptr);
+void hyp_resume(void);
+#endif /* CONFIG_SYSTEM_SUSPEND */
+
 #endif /* ARM_SUSPEND_H */
 
 /*
diff --git a/xen/arch/arm/suspend.c b/xen/arch/arm/suspend.c
new file mode 100644
index 0000000000..e38566b0b7
--- /dev/null
+++ b/xen/arch/arm/suspend.c
@@ -0,0 +1,14 @@
+/* SPDX-License-Identifier: GPL-2.0-only */
+
+#include <asm/suspend.h>
+
+struct cpu_context cpu_context = {};
+
+/*
+ * Local variables:
+ * mode: C
+ * c-file-style: "BSD"
+ * c-basic-offset: 4
+ * indent-tabs-mode: nil
+ * End:
+ */
-- 
2.43.0



From xen-devel-bounces@lists.xenproject.org Thu Apr 02 10:47:42 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 02 Apr 2026 10:47:42 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1271541.1559727 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1w8FaQ-0006iW-I0; Thu, 02 Apr 2026 10:47:42 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1271541.1559727; Thu, 02 Apr 2026 10:47: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 1w8FaQ-0006fr-2F; Thu, 02 Apr 2026 10:47:42 +0000
Received: by outflank-mailman (input) for mailman id 1271541;
 Thu, 02 Apr 2026 10:47:40 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <xakep.amatop@gmail.com>) id 1w8FaN-0006KE-Vk
 for xen-devel@lists.xenproject.org; Thu, 02 Apr 2026 10:47:39 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1w8FaN-009qA7-Bp
 for xen-devel@lists.xenproject.org; Thu, 02 Apr 2026 12:47:39 +0200
Received: from [10.42.69.10] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <xakep.amatop@gmail.com>)
 id 69ce493f-e002-0a2a0a5209dd-0a2a450a8a2e-32
 for <xen-devel@lists.xenproject.org>; Thu, 02 Apr 2026 12:47:39 +0200
Received: from [209.85.218.47] (helo=mail-ej1-f47.google.com)
 by tlsNG-4011c0.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.0)
 (envelope-from <xakep.amatop@gmail.com>)
 id 69ce494b-ee98-0a2a450a0019-d155da2fc914-3
 for <xen-devel@lists.xenproject.org>; Thu, 02 Apr 2026 12:47:39 +0200
Received: by mail-ej1-f47.google.com with SMTP id
 a640c23a62f3a-b9c3a9fe80fso90523266b.3
 for <xen-devel@lists.xenproject.org>; Thu, 02 Apr 2026 03:47:39 -0700 (PDT)
Received: from EPUAKYIW02F7.. ([45.12.26.38]) by smtp.gmail.com with ESMTPSA id
 a640c23a62f3a-b9c3d028955sm76392366b.61.2026.04.02.03.47.37
 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
 Thu, 02 Apr 2026 03:47:37 -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=20251104 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=20251104; t=1775126858; x=1775731658; 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;
        bh=81pZ/JS38wYFIEh/dUJCFhVaISUWS/A04krI0+LMlhc=;
        b=SDOkkIyDwrY3ZrWFPgJIw6PL8GyiWY1v5MhVp/l8F+tUoVVT/nTNpetUO+QpqS1r7K
         zVp0FZBbGrtCJBMqBNCcvsowgw4zpY8/YUEW9LeDtnsBMtWUXeO41YE3oLdFMqGqHvt1
         CP1Wya6R0lmaSa4W8qlwbgV7YGRiT5Uoug0MX+p/T/V5BeDhjvPrUP8hUHsriXHQWI89
         zQXbF1otUr7OzWXseQR0+sbz18giN8vhqxhocfzc9F7XS8gynS+P19Wkv7non3zH2veW
         O4IpKpNz5B2Dp+I9e3i8/FpyhTxtC3mH2r/U+FuHjhbiKZGp5e71qaN+2byVyCSmvRDi
         NyZA==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20251104; t=1775126858; x=1775731658;
        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;
        bh=81pZ/JS38wYFIEh/dUJCFhVaISUWS/A04krI0+LMlhc=;
        b=jPQX7Jh21qUuiZbps5Ze29GE8Z71NPr2wQJ7qKKNDo2RFaY3Zh6l3MrMjDA5lhCIQ2
         IuY9n3ZamtEm5zF87bN0HYqFS0zdj1rDk+zbBZeCDFtqlz9hqJlKdncZj5xM0OnUxRkH
         yqLQmxfB6NIiOik8wXuyI+U4i2ey6fzd/e/M7kh4qTYJFePPLd+AZE3DiDVEU6QhXYqI
         XvxGtU3nnmyK7BjsHd1oZ/HmWk9xMgGhVFJePsb2kbRtFr0e8fTKhQ5PobBALrWtkJWe
         qIoPbulXdNr5h1fJDW6dVJthPAsra0pX5wLBiLzQ2IvBJEQRAjk/nQGSorUSFf5VIPw3
         4lEw==
X-Gm-Message-State: AOJu0YyGkOx6Tne3XBgqnG7RjihFwrKo0JtI+eoHbceW/KVhBkeQHgkM
	si+F6AC9gVRA+PSPQAhbud76IBCKxt+hbWl0Y7Ho65J4BAx+NSMscCS7Uq4sy+It
X-Gm-Gg: ATEYQzx9FrkaJ3Hf5CgmnbwtWadW6wmisEoY0mpleq6oJPr11SMkZvFMHzeNgxcuh7/
	NBmatmBV9ALkWiZ9THJNtVIAjuK5KVMT+Cs89XM0E3XjqWk7RxXl73BVwNHBpRAUg22ZPCWSDbL
	VFkNcolwKBKfFcGTzSlfnsxAou71R8POyudW5RSwiY/OEpSexywPhAg81pesMKgjXpmDkX4G+JO
	eEwLy+8z59PQFwbJTcFF9X0r0utCFsL9SuZBIbTZuehvf5+WxDi6XGvhx5ATFIaP2WGstdonS2V
	1Tayzk2mflimsLaIvEszKY42uNYwD+UhUa8migUBHB+ovhQJsnDWRiPkGpFNvFhEY3N4qiyu87W
	u25+z7xbSUIySgCzZzuWR0QQwSp5Mgs0gk2w+NNcvrtwGbd96E60otacDvOZEe8q5mA8JYAOIRl
	fGxAM+jhf2gQUFC23q0QIW5KoQGQ==
X-Received: by 2002:a17:906:a50:b0:b98:8d3a:7d26 with SMTP id a640c23a62f3a-b9c138fa8bemr342137866b.15.1775126858181;
        Thu, 02 Apr 2026 03:47:38 -0700 (PDT)
From: Mykola Kvach <xakep.amatop@gmail.com>
To: xen-devel@lists.xenproject.org
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>
Subject: [PATCH v8 12/13] xen/arm: Implement PSCI SYSTEM_SUSPEND call (host interface)
Date: Thu,  2 Apr 2026 13:45:13 +0300
Message-ID: <8767d4129cd5bc56086172e58320539be7da4059.1775125380.git.mykola_kvach@epam.com>
X-Mailer: git-send-email 2.43.0
In-Reply-To: <cover.1775125380.git.mykola_kvach@epam.com>
References: <cover.1775125380.git.mykola_kvach@epam.com>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit
X-purgate-ID: tlsNG-4011c0/1775126859-BE3510B1-A701E6B6/0/0
X-purgate-type: clean
X-purgate-size: 2949

From: Mirela Simonovic <mirela.simonovic@aggios.com>

Invoke PSCI SYSTEM_SUSPEND to finalize Xen's suspend sequence on ARM64 platforms.
Pass the resume entry point (hyp_resume) as the first argument to EL3. The resume
handler is currently a stub and will be implemented later in assembly. Ignore the
context ID argument, as is done in Linux.

Only enable this path when CONFIG_SYSTEM_SUSPEND is set and
PSCI version is >= 1.0.

Signed-off-by: Mirela Simonovic <mirela.simonovic@aggios.com>
Signed-off-by: Saeed Nowshadi <saeed.nowshadi@xilinx.com>
Signed-off-by: Mykyta Poturai <mykyta_poturai@epam.com>
Signed-off-by: Mykola Kvach <mykola_kvach@epam.com>
---
Changes in v7:
- no changes
---
 xen/arch/arm/include/asm/psci.h |  1 +
 xen/arch/arm/psci.c             | 23 ++++++++++++++++++++++-
 2 files changed, 23 insertions(+), 1 deletion(-)

diff --git a/xen/arch/arm/include/asm/psci.h b/xen/arch/arm/include/asm/psci.h
index 48a93e6b79..bb3c73496e 100644
--- a/xen/arch/arm/include/asm/psci.h
+++ b/xen/arch/arm/include/asm/psci.h
@@ -23,6 +23,7 @@ int call_psci_cpu_on(int cpu);
 void call_psci_cpu_off(void);
 void call_psci_system_off(void);
 void call_psci_system_reset(void);
+int call_psci_system_suspend(void);
 
 /* Range of allocated PSCI function numbers */
 #define	PSCI_FNUM_MIN_VALUE                 _AC(0,U)
diff --git a/xen/arch/arm/psci.c b/xen/arch/arm/psci.c
index b6860a7760..c9d126b195 100644
--- a/xen/arch/arm/psci.c
+++ b/xen/arch/arm/psci.c
@@ -17,17 +17,20 @@
 #include <asm/cpufeature.h>
 #include <asm/psci.h>
 #include <asm/acpi.h>
+#include <asm/suspend.h>
 
 /*
  * While a 64-bit OS can make calls with SMC32 calling conventions, for
  * some calls it is necessary to use SMC64 to pass or return 64-bit values.
- * For such calls PSCI_0_2_FN_NATIVE(x) will choose the appropriate
+ * For such calls PSCI_*_FN_NATIVE(x) will choose the appropriate
  * (native-width) function ID.
  */
 #ifdef CONFIG_ARM_64
 #define PSCI_0_2_FN_NATIVE(name)    PSCI_0_2_FN64_##name
+#define PSCI_1_0_FN_NATIVE(name)    PSCI_1_0_FN64_##name
 #else
 #define PSCI_0_2_FN_NATIVE(name)    PSCI_0_2_FN32_##name
+#define PSCI_1_0_FN_NATIVE(name)    PSCI_1_0_FN32_##name
 #endif
 
 uint32_t psci_ver;
@@ -60,6 +63,24 @@ void call_psci_cpu_off(void)
     }
 }
 
+int call_psci_system_suspend(void)
+{
+#ifdef CONFIG_SYSTEM_SUSPEND
+    struct arm_smccc_res res;
+
+    if ( psci_ver < PSCI_VERSION(1, 0) )
+        return PSCI_NOT_SUPPORTED;
+
+    /* 2nd argument (context ID) is not used */
+    arm_smccc_smc(PSCI_1_0_FN_NATIVE(SYSTEM_SUSPEND), __pa(hyp_resume), &res);
+    return PSCI_RET(res);
+#else
+    dprintk(XENLOG_WARNING,
+            "SYSTEM_SUSPEND not supported (CONFIG_SYSTEM_SUSPEND disabled)\n");
+    return PSCI_NOT_SUPPORTED;
+#endif
+}
+
 void call_psci_system_off(void)
 {
     if ( psci_ver > PSCI_VERSION(0, 1) )
-- 
2.43.0



From xen-devel-bounces@lists.xenproject.org Thu Apr 02 10:47:43 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 02 Apr 2026 10:47:43 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1271546.1559732 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1w8FaR-0006uD-Ld; Thu, 02 Apr 2026 10:47:43 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1271546.1559732; Thu, 02 Apr 2026 10:47: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 1w8FaR-0006sC-4i; Thu, 02 Apr 2026 10:47:43 +0000
Received: by outflank-mailman (input) for mailman id 1271546;
 Thu, 02 Apr 2026 10:47:41 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <xakep.amatop@gmail.com>) id 1w8FaP-0006V5-2R
 for xen-devel@lists.xenproject.org; Thu, 02 Apr 2026 10:47:41 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1w8FaO-009qA7-Ef
 for xen-devel@lists.xenproject.org; Thu, 02 Apr 2026 12:47:40 +0200
Received: from [10.42.69.12] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <xakep.amatop@gmail.com>)
 id 69ce4948-e002-0a2a0a5209dd-0a2a450c8ce0-20
 for <xen-devel@lists.xenproject.org>; Thu, 02 Apr 2026 12:47:40 +0200
Received: from [209.85.218.45] (helo=mail-ej1-f45.google.com)
 by tlsNG-d25034.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.0)
 (envelope-from <xakep.amatop@gmail.com>)
 id 69ce494c-f40c-0a2a450c0019-d155da2db009-3
 for <xen-devel@lists.xenproject.org>; Thu, 02 Apr 2026 12:47:40 +0200
Received: by mail-ej1-f45.google.com with SMTP id
 a640c23a62f3a-b8f97c626aaso122290666b.2
 for <xen-devel@lists.xenproject.org>; Thu, 02 Apr 2026 03:47:40 -0700 (PDT)
Received: from EPUAKYIW02F7.. ([45.12.26.38]) by smtp.gmail.com with ESMTPSA id
 a640c23a62f3a-b9c3d028955sm76392366b.61.2026.04.02.03.47.38
 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
 Thu, 02 Apr 2026 03:47:38 -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=20251104 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=20251104; t=1775126860; x=1775731660; 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;
        bh=PNu7eJ7Z0b3llwWlHGEbTagm+9rNR0YOT8JLveV1JGo=;
        b=KbGPLCldm1ssHRBbB1PjHxZV4J4qieBqYD1xDaTjCJl7e/yJ//qd0XEpJR2zRdSocS
         ZQAWJrK5m0bDoHP/uXSNJcZ8y/o6gJmTEVvTu1iTsOPqTkLYcZsBE1qgj9jxspDQz1L4
         5krMpNBx/Gd8K4HFKZ8ZPKTMWHQvWIWY2lUQ0mz94SVgV5Y9KtvggPCt1vduNCVSArA7
         D2CcmNA5n9YAR/z1kWbyR/THqBftvr5xnIb5ONiyndhVwgwBwfJ/HVqX1J2/HYAQDT4o
         rdP2ap/v7LySDZn7g7IDeOati7/MKyRR7OQtmNjg/L7A5ThJl5FWnsxAgaLZWhQLoHyE
         emCw==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20251104; t=1775126860; x=1775731660;
        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;
        bh=PNu7eJ7Z0b3llwWlHGEbTagm+9rNR0YOT8JLveV1JGo=;
        b=YNat4XG4aWdaWH4ArFu/kAToUf/pXRrJZBWnvxoTo3yNXtNgTF6COzGO6hMxrudAjo
         9XnmXlU8NzIWR+1d7UDFUGXwY+ZTWoLIwKzZQ7HdWeH5Df+NtgQmw1JAGr4xHEnCg8H0
         NsCOBggaawCAdWTIW9V01dPrfn0pUg+gqJgmJMYG+jABVuCohhK5miN684YQEBxa+FQ+
         qKr43TcwMVR+h/r0QqZsyi7QcUUZ3JKcett6rysAREs70Gg8dcl6MSDjfoQH6Z2YIVG1
         Zq1bcHr3nospWcJJdwLgCQ0s79hFaj5K0zypZWvHH6VcnPOWVp1N7pN3yaqtAb+TFuyQ
         TqDQ==
X-Gm-Message-State: AOJu0YxOKPtSQmRzA9cWSgOCOVuPGrqOgFX3tsP4L/gnHgMf3BKVWXkG
	nV248zl47P3pUHLnGI0C3csMi6tRqugP+OUEHlZsmuzkowiBRRPBQzNQtnr26ejn
X-Gm-Gg: ATEYQzxnLd9O2cxo0RJ9n88S8VczcX1T+qFGxTSocNYiZzM57/bHoO04XGNf9irtKk5
	iq1T3rbl2HEeTyqfbdcQevZKcdSnYljRZLX+C/3LUoESMmYTdPMP65rEB+a49vV5ryxQza5syRA
	NV7xQbssNwLG5HWjwW5T8AuKQejS/m8z5cuFVOt34jjPq9KL++/SfGX44t6AAhtcPRFlLScTZEd
	sTQ1AhHPKxQFx9LmMJzpQZ0/Doh2QW4Be4zsdO4CK5VFbyzYNClDVDrJhrdXkiW7a58E036GS8T
	lQkez+/rnFNLoFu+raeKr5OI7UauNIvevYnFAaDLp6DpGz1gokEa7hQibHSrp81nHB8oovsAm15
	jei8vtho8CTtJL67kCdxQmoNq3C2i+BMYmWJqGGlao7Vixow9bYdeV9asyVBnJKln7YjnCoVff9
	Z/XQPh3KrD7aoGhsflb2EHg8z5d1CkHSynLZM1
X-Received: by 2002:a17:907:6d16:b0:b9c:4248:7773 with SMTP id a640c23a62f3a-b9c42487e4amr138809366b.26.1775126859321;
        Thu, 02 Apr 2026 03:47:39 -0700 (PDT)
From: Mykola Kvach <xakep.amatop@gmail.com>
To: xen-devel@lists.xenproject.org
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>,
	Jan Beulich <jbeulich@suse.com>,
	=?UTF-8?q?Roger=20Pau=20Monn=C3=A9?= <roger.pau@citrix.com>,
	Rahul Singh <rahul.singh@arm.com>
Subject: [PATCH v8 13/13] xen/arm: Add support for system suspend triggered by hardware domain
Date: Thu,  2 Apr 2026 13:45:14 +0300
Message-ID: <9b0f8922cd33df2b8e8038d639c1b8d8d73ce401.1775125380.git.mykola_kvach@epam.com>
X-Mailer: git-send-email 2.43.0
In-Reply-To: <cover.1775125380.git.mykola_kvach@epam.com>
References: <cover.1775125380.git.mykola_kvach@epam.com>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit
X-purgate-ID: tlsNG-d25034/1775126860-FFF42A3D-F1949B49/0/0
X-purgate-type: clean
X-purgate-size: 14142

From: Mirela Simonovic <mirela.simonovic@aggios.com>

Trigger Xen suspend when the hardware domain initiates suspend via
SHUTDOWN_suspend. Redirect system suspend to CPU#0 to ensure the
suspend logic runs on the boot CPU, as required.

Introduce full suspend/resume infrastructure gated by CONFIG_SYSTEM_SUSPEND,
including logic to:
 - disable and enable non-boot physical CPUs
 - freeze and thaw domains
 - suspend and resume the GIC, timer, iommu and console
 - maintain system state before and after suspend

On boot, init_ttbr is normally initialized during secondary CPU hotplug.
On uniprocessor systems, this would leave init_ttbr uninitialized,
causing resume to fail. To address this, the boot CPU now sets init_ttbr
during suspend.

Remove the restriction in the vPSCI interface preventing suspend from the
hardware domain.

Select HAS_SYSTEM_SUSPEND for ARM_64.

Introduce CONFIG_HAS_HWDOM_SYSTEM_SUSPEND as an architecture-selected
capability for platforms where the hardware domain survives
SHUTDOWN_suspend without hwdom_shutdown(). ARM_64 selects it with
SYSTEM_SUSPEND enabled; other architectures keep the existing behaviour.

Note: the code is behind CONFIG_HAS_SYSTEM_SUSPEND, which is currently only
selected when UNSUPPORTED is set and when MPU isn't set, so the functionality
is built but disabled by default.

Signed-off-by: Mirela Simonovic <mirela.simonovic@aggios.com>
Signed-off-by: Saeed Nowshadi <saeed.nowshadi@xilinx.com>
Signed-off-by: Mykyta Poturai <mykyta_poturai@epam.com>
Signed-off-by: Mykola Kvach <mykola_kvach@epam.com>
---
Changes in V8:
- Add a pre-suspend check in system_suspend() after scheduler_disable()
  to require all domains to be in the shut down state with
  SHUTDOWN_suspend before proceeding with the global suspend flow.
- Drop the common-level depends on !ARM_64 || !SYSTEM_SUSPEND from
  CONFIG_HAS_HWDOM_SHUTDOWN_ON_SUSPEND and model the ARM64 suspend
  case with an arch-selected capability instead.
- Rename CONFIG_HAS_HWDOM_SHUTDOWN_ON_SUSPEND to CONFIG_HAS_HWDOM_SYSTEM_SUSPEND.
- Rename need_hwdom_shutdown() to want_hwdom_shutdown().

Changes in V7:
- Control domain is responsible for host suspend
- Move the is_hardware_domain check into host_system_suspend()
- Add an empty inline host_system_suspend() function when SYSTEM_SUSPEND
  config is disabled
- Use IS_ENABLED() for config checking instead of #ifdef
- Replace #ifdef checks in domain_shutdown() with IS_ENABLED() to simplify
  control flow.
- Factor hardware domain shutdown condition into a helper
  (need_hwdom_shutdown()) to avoid preprocessor directives inside the function.
- Squash with iommu suspend/resume commit
---
 xen/arch/arm/Kconfig               |   2 +
 xen/arch/arm/include/asm/mm.h      |   2 +
 xen/arch/arm/include/asm/suspend.h |   7 +-
 xen/arch/arm/mmu/smpboot.c         |   2 +-
 xen/arch/arm/suspend.c             | 181 +++++++++++++++++++++++++++++
 xen/arch/arm/vpsci.c               |  12 +-
 xen/common/Kconfig                 |   3 +
 xen/common/domain.c                |   7 +-
 xen/drivers/passthrough/arm/smmu.c |  10 ++
 9 files changed, 220 insertions(+), 6 deletions(-)

diff --git a/xen/arch/arm/Kconfig b/xen/arch/arm/Kconfig
index 2f2b501fda..c2e63ce8ff 100644
--- a/xen/arch/arm/Kconfig
+++ b/xen/arch/arm/Kconfig
@@ -8,6 +8,8 @@ config ARM_64
 	depends on !ARM_32
 	select 64BIT
 	select HAS_FAST_MULTIPLY
+	select HAS_HWDOM_SYSTEM_SUSPEND if SYSTEM_SUSPEND
+	select HAS_SYSTEM_SUSPEND if !MPU && UNSUPPORTED
 	select HAS_VPCI_GUEST_SUPPORT if PCI_PASSTHROUGH
 
 config ARM
diff --git a/xen/arch/arm/include/asm/mm.h b/xen/arch/arm/include/asm/mm.h
index 72a6928624..87b54a55dc 100644
--- a/xen/arch/arm/include/asm/mm.h
+++ b/xen/arch/arm/include/asm/mm.h
@@ -360,6 +360,8 @@ static inline void page_set_xenheap_gfn(struct page_info *p, gfn_t gfn)
     } while ( (y = cmpxchg(&p->u.inuse.type_info, x, nx)) != x );
 }
 
+void set_init_ttbr(lpae_t *root);
+
 #endif /*  __ARCH_ARM_MM__ */
 /*
  * Local variables:
diff --git a/xen/arch/arm/include/asm/suspend.h b/xen/arch/arm/include/asm/suspend.h
index c127fa3d78..c36ba23b10 100644
--- a/xen/arch/arm/include/asm/suspend.h
+++ b/xen/arch/arm/include/asm/suspend.h
@@ -38,7 +38,12 @@ extern struct cpu_context cpu_context;
 
 int prepare_resume_ctx(struct cpu_context *ptr);
 void hyp_resume(void);
-#endif /* CONFIG_SYSTEM_SUSPEND */
+void host_system_suspend(struct domain *d);
+
+#else /* !CONFIG_SYSTEM_SUSPEND */
+
+static inline void host_system_suspend(struct domain *d) { (void)d; }
+#endif
 
 #endif /* ARM_SUSPEND_H */
 
diff --git a/xen/arch/arm/mmu/smpboot.c b/xen/arch/arm/mmu/smpboot.c
index 37e91d72b7..ff508ecf40 100644
--- a/xen/arch/arm/mmu/smpboot.c
+++ b/xen/arch/arm/mmu/smpboot.c
@@ -72,7 +72,7 @@ static void clear_boot_pagetables(void)
     clear_table(boot_third);
 }
 
-static void set_init_ttbr(lpae_t *root)
+void set_init_ttbr(lpae_t *root)
 {
     /*
      * init_ttbr is part of the identity mapping which is read-only. So
diff --git a/xen/arch/arm/suspend.c b/xen/arch/arm/suspend.c
index e38566b0b7..4d1289776b 100644
--- a/xen/arch/arm/suspend.c
+++ b/xen/arch/arm/suspend.c
@@ -1,9 +1,190 @@
 /* SPDX-License-Identifier: GPL-2.0-only */
 
+#include <asm/psci.h>
 #include <asm/suspend.h>
 
+#include <public/sched.h>
+#include <xen/console.h>
+#include <xen/cpu.h>
+#include <xen/errno.h>
+#include <xen/iommu.h>
+#include <xen/sched.h>
+#include <xen/tasklet.h>
+
 struct cpu_context cpu_context = {};
 
+static int can_system_suspend(void)
+{
+    int ret = 0;
+    struct domain *d;
+
+    rcu_read_lock(&domlist_read_lock);
+
+    for_each_domain ( d )
+    {
+        bool domain_suspended;
+
+        spin_lock(&d->shutdown_lock);
+        domain_suspended = d->is_shut_down &&
+                           d->shutdown_code == SHUTDOWN_suspend;
+        spin_unlock(&d->shutdown_lock);
+
+        if ( domain_suspended )
+            continue;
+
+        printk(XENLOG_ERR
+               "System suspend requires all domains to be shut down for suspend (dom%d: isn't in suspend state)\n",
+               d->domain_id);
+
+        ret = -EBUSY;
+        break;
+    }
+
+    rcu_read_unlock(&domlist_read_lock);
+
+    return ret;
+}
+
+/* Xen suspend. data identifies the domain that initiated suspend. */
+static void system_suspend(void *data)
+{
+    int status;
+    unsigned long flags;
+    struct domain *d = (struct domain *)data;
+
+    BUG_ON(system_state != SYS_STATE_active);
+
+    system_state = SYS_STATE_suspend;
+
+    printk("Xen suspending...\n");
+
+    freeze_domains();
+    scheduler_disable();
+
+    status = can_system_suspend();
+    if ( status )
+    {
+        system_state = SYS_STATE_resume;
+        goto resume_scheduler;
+    }
+
+    /*
+     * Non-boot CPUs have to be disabled on suspend and enabled on resume
+     * (hotplug-based mechanism). Disabling non-boot CPUs will lead to PSCI
+     * CPU_OFF to be called by each non-boot CPU. Depending on the underlying
+     * platform capabilities, this may lead to the physical powering down of
+     * CPUs.
+     */
+    status = disable_nonboot_cpus();
+    if ( status )
+    {
+        system_state = SYS_STATE_resume;
+        goto resume_nonboot_cpus;
+    }
+
+    time_suspend();
+
+    status = iommu_suspend();
+    if ( status )
+    {
+        system_state = SYS_STATE_resume;
+        goto resume_time;
+    }
+
+    console_start_sync();
+    status = console_suspend();
+    if ( status )
+    {
+        dprintk(XENLOG_ERR, "Failed to suspend the console, err=%d\n", status);
+        system_state = SYS_STATE_resume;
+        goto resume_end_sync;
+    }
+
+    local_irq_save(flags);
+    status = gic_suspend();
+    if ( status )
+    {
+        system_state = SYS_STATE_resume;
+        goto resume_irqs;
+    }
+
+    set_init_ttbr(xen_pgtable);
+
+    /*
+     * Enable identity mapping before entering suspend to simplify
+     * the resume path
+     */
+    update_boot_mapping(true);
+
+    if ( prepare_resume_ctx(&cpu_context) )
+    {
+        status = call_psci_system_suspend();
+        /*
+         * If suspend is finalized properly by above system suspend PSCI call,
+         * the code below in this 'if' branch will never execute. Execution
+         * will continue from hyp_resume which is the hypervisor's resume point.
+         * In hyp_resume CPU context will be restored and since link-register is
+         * restored as well, it will appear to return from prepare_resume_ctx.
+         * The difference in returning from prepare_resume_ctx on system suspend
+         * versus resume is in function's return value: on suspend, the return
+         * value is a non-zero value, on resume it is zero. That is why the
+         * control flow will not re-enter this 'if' branch on resume.
+         */
+        if ( status )
+            dprintk(XENLOG_WARNING, "PSCI system suspend failed, err=%d\n",
+                    status);
+    }
+
+    system_state = SYS_STATE_resume;
+    update_boot_mapping(false);
+
+    gic_resume();
+
+ resume_irqs:
+    local_irq_restore(flags);
+
+    console_resume();
+ resume_end_sync:
+    console_end_sync();
+
+    iommu_resume();
+
+ resume_time:
+    time_resume();
+
+ resume_nonboot_cpus:
+    /*
+     * The rcu_barrier() has to be added to ensure that the per cpu area is
+     * freed before a non-boot CPU tries to initialize it (_free_percpu_area()
+     * has to be called before the init_percpu_area()). This scenario occurs
+     * when non-boot CPUs are hot-unplugged on suspend and hotplugged on resume.
+     */
+    rcu_barrier();
+    enable_nonboot_cpus();
+
+ resume_scheduler:
+    scheduler_enable();
+    thaw_domains();
+
+    system_state = SYS_STATE_active;
+
+    printk("Resume (status %d)\n", status);
+
+    domain_resume(d);
+}
+
+static DECLARE_TASKLET(system_suspend_tasklet, system_suspend, NULL);
+
+void host_system_suspend(struct domain *d)
+{
+    system_suspend_tasklet.data = (void *)d;
+    /*
+     * The suspend procedure has to be finalized by the pCPU#0 (non-boot pCPUs
+     * will be disabled during the suspend).
+     */
+    tasklet_schedule_on_cpu(&system_suspend_tasklet, 0);
+}
+
 /*
  * Local variables:
  * mode: C
diff --git a/xen/arch/arm/vpsci.c b/xen/arch/arm/vpsci.c
index bd87ec430d..8fb9172186 100644
--- a/xen/arch/arm/vpsci.c
+++ b/xen/arch/arm/vpsci.c
@@ -5,6 +5,7 @@
 
 #include <asm/current.h>
 #include <asm/domain.h>
+#include <asm/suspend.h>
 #include <asm/vgic.h>
 #include <asm/vpsci.h>
 #include <asm/event.h>
@@ -232,8 +233,7 @@ static int32_t do_psci_1_0_system_suspend(register_t epoint, register_t cid)
     if ( is_64bit_domain(d) && is_thumb )
         return PSCI_INVALID_ADDRESS;
 
-    /* SYSTEM_SUSPEND is not supported for the hardware domain yet */
-    if ( is_hardware_domain(d) )
+    if ( !IS_ENABLED(CONFIG_SYSTEM_SUSPEND) && is_hardware_domain(d) )
         return PSCI_NOT_SUPPORTED;
 
     /* Ensure that all CPUs other than the calling one are offline */
@@ -266,6 +266,9 @@ static int32_t do_psci_1_0_system_suspend(register_t epoint, register_t cid)
             "SYSTEM_SUSPEND requested, epoint=%#"PRIregister", cid=%#"PRIregister"\n",
             epoint, cid);
 
+    if ( is_control_domain(d) )
+        host_system_suspend(d);
+
     return rc;
 }
 
@@ -290,7 +293,10 @@ static int32_t do_psci_1_0_features(uint32_t psci_func_id)
         return 0;
     case PSCI_1_0_FN32_SYSTEM_SUSPEND:
     case PSCI_1_0_FN64_SYSTEM_SUSPEND:
-        return is_hardware_domain(current->domain) ? PSCI_NOT_SUPPORTED : 0;
+        if ( IS_ENABLED(CONFIG_SYSTEM_SUSPEND) ||
+             !is_hardware_domain(current->domain) )
+            return 0;
+        fallthrough;
     default:
         return PSCI_NOT_SUPPORTED;
     }
diff --git a/xen/common/Kconfig b/xen/common/Kconfig
index 0a20aa0a12..feb1336f46 100644
--- a/xen/common/Kconfig
+++ b/xen/common/Kconfig
@@ -137,6 +137,9 @@ config HAS_EX_TABLE
 config HAS_FAST_MULTIPLY
 	bool
 
+config HAS_HWDOM_SYSTEM_SUSPEND
+	bool
+
 config HAS_IOPORTS
 	bool
 
diff --git a/xen/common/domain.c b/xen/common/domain.c
index bb9e210c28..d3edfb2a13 100644
--- a/xen/common/domain.c
+++ b/xen/common/domain.c
@@ -1375,6 +1375,11 @@ void __domain_crash(struct domain *d)
     domain_shutdown(d, SHUTDOWN_crash);
 }
 
+static inline bool want_hwdom_shutdown(uint8_t reason)
+{
+    return !IS_ENABLED(CONFIG_HAS_HWDOM_SYSTEM_SUSPEND) ||
+           reason != SHUTDOWN_suspend;
+}
 
 int domain_shutdown(struct domain *d, u8 reason)
 {
@@ -1391,7 +1396,7 @@ int domain_shutdown(struct domain *d, u8 reason)
         d->shutdown_code = reason;
     reason = d->shutdown_code;
 
-    if ( is_hardware_domain(d) )
+    if ( is_hardware_domain(d) && want_hwdom_shutdown(reason) )
         hwdom_shutdown(reason);
 
     if ( d->is_shutting_down )
diff --git a/xen/drivers/passthrough/arm/smmu.c b/xen/drivers/passthrough/arm/smmu.c
index 22d306d0cb..45f29ef8ec 100644
--- a/xen/drivers/passthrough/arm/smmu.c
+++ b/xen/drivers/passthrough/arm/smmu.c
@@ -2947,6 +2947,13 @@ static void arm_smmu_iommu_domain_teardown(struct domain *d)
 	xfree(xen_domain);
 }
 
+#ifdef CONFIG_SYSTEM_SUSPEND
+static int arm_smmu_suspend(void)
+{
+	return -ENOSYS;
+}
+#endif
+
 static const struct iommu_ops arm_smmu_iommu_ops = {
     .page_sizes = PAGE_SIZE_4K,
     .init = arm_smmu_iommu_domain_init,
@@ -2960,6 +2967,9 @@ static const struct iommu_ops arm_smmu_iommu_ops = {
     .map_page = arm_iommu_map_page,
     .unmap_page = arm_iommu_unmap_page,
     .dt_xlate = arm_smmu_dt_xlate_generic,
+#ifdef CONFIG_SYSTEM_SUSPEND
+    .suspend = arm_smmu_suspend,
+#endif
 };
 
 static struct arm_smmu_device *find_smmu(const struct device *dev)
-- 
2.43.0



From xen-devel-bounces@lists.xenproject.org Thu Apr 02 10:48:18 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 02 Apr 2026 10:48:18 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1271638.1559755 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1w8Fb0-00024D-QY; Thu, 02 Apr 2026 10:48:18 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1271638.1559755; Thu, 02 Apr 2026 10:48: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 1w8Fb0-000246-Mj; Thu, 02 Apr 2026 10:48:18 +0000
Received: by outflank-mailman (input) for mailman id 1271638;
 Thu, 02 Apr 2026 10:48:17 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <jbeulich@suse.com>) id 1w8Faz-00021o-CY
 for xen-devel@lists.xenproject.org; Thu, 02 Apr 2026 10:48:17 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1w8Fax-004mWN-7H
 for xen-devel@lists.xenproject.org; Thu, 02 Apr 2026 12:48:16 +0200
Received: from [10.42.69.9] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <jbeulich@suse.com>)
 id 69ce495b-5cb7-0a2a0a5109dd-0a2a4509bee0-48
 for <xen-devel@lists.xenproject.org>; Thu, 02 Apr 2026 12:48:16 +0200
Received: from [209.85.128.41] (helo=mail-wm1-f41.google.com)
 by tlsNG-bad1c0.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.0)
 (envelope-from <jbeulich@suse.com>)
 id 69ce4970-bf79-0a2a45090019-d1558029dc9f-3
 for <xen-devel@lists.xenproject.org>; Thu, 02 Apr 2026 12:48:16 +0200
Received: by mail-wm1-f41.google.com with SMTP id
 5b1f17b1804b1-48557c8ad47so5649975e9.0
 for <xen-devel@lists.xenproject.org>; Thu, 02 Apr 2026 03:48:16 -0700 (PDT)
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-4887e83682fsm206263625e9.7.2026.04.02.03.48.15
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Thu, 02 Apr 2026 03:48:15 -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=google header.d=suse.com header.i="@suse.com" header.h="Content-Transfer-Encoding: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=1775126896; x=1775731696; darn=lists.xenproject.org;
        h=content-transfer-encoding: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;
        bh=8RfkRDBqm7zGX7zPvUe+Ek39HXEMr1cOqSz99rC/mTI=;
        b=AKSAI+N3uLbpruU1DInvyOw7hcnYFzD1tyvAKA0CqY6U88xpCNRbquk63GKFHsRx6T
         9o6X2kveuEqWMJRm0HVn7YMPJVMs5evmoAlGEHzvuiay4D1q2a+uFn7D4YOI2nBrdvap
         vXo8/CUOQp6DOLBjg0OtDo944izwkQdLktnCIpoqn4ESt1YvM0U5JUy4q+H1Ej2BKizb
         /CypNk9QuN2dWXVKD5Veic0et+p4XgFEomNBwLGIZsm5/ena08M0uevdrvbJBJeOl/xu
         fOw0CI/ySD9hehADpLhMy2CDssfl+CIP1Ol4IrImedcOuQp6XDVWDCnWGf7xYXAefRzp
         2UAA==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20251104; t=1775126896; x=1775731696;
        h=content-transfer-encoding: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;
        bh=8RfkRDBqm7zGX7zPvUe+Ek39HXEMr1cOqSz99rC/mTI=;
        b=g14wHvJXC378GSiL9HZHeTZXqzbFVNH0EVSHlOoYnu+dFUrJp+ZEuU7dzRVmwFK78W
         xBBC2sAPmjj5DNTjnC3/rKpGV3QPqdVWocUNbeEk1kR3U3TXg/CT4Zs9ZiCbxWiHfP7d
         1d17CcUyOkoNMRsjDPRX9uztWVkbjwG+hdfMBDEE8QO5lXxgbETbEoEImO7Xot5Sr1FR
         Abrqvkxcft+tNnBGcPe9EFTW/IEqQ2jcZJBpNS7TtsyrHRGQQ7ncNgBL1IodUy/d5d3r
         nCl2rHoDN+IsyaLUQzcloRoJxSfV+sANqvmf45KJ3vnIFDx+sx8zYpgsPui3kkVv84YV
         zT0g==
X-Gm-Message-State: AOJu0YyKxgv2lQ3l6uloivI6Uvp/RXNVql/2+yk2zHpOLMPzz1c/DQS1
	+sd163y9cXRHqbBMQOeGd6P9zya4qUQCWkDDiH0PEuRZ8RyLlDwnRUJHUksWzJZhiA==
X-Gm-Gg: ATEYQzzTRH809i6eh2uIAaX3SJ/12Q1oHCdyE6I1jtjUb1joIwI5yVWW4YVJuSldOvQ
	oiwWSnY4tZhPZ+ukdTKyMPp2OWWgEgBA419v43nk3ha9ulDYBbiADnvYRI7690XrOLcyurUD+iH
	FFoZ0bo04AIukWDZVp8T5XCJdZcZuq9LKqUqvBHXYIir5jnnmakHjV6DjMUVAmObhsbHWD7gnDz
	kztx3nch8mpYOO98MlI5JdPHbrL4/3mUatzAhyUp1g4OR8mYGFTRMjmsP4cGKOujU2GlTHiFr9t
	65ywdlrdGv2wJwxtRyIakYWUwDTmJ0XOVpqVhds+a72XqBSKyU+75O7bCXwNRTqNfwigp0jwUR7
	gzIp9G47VllL8LDRuoqx21Aqvc008Jj+lRHupFYmN8bzgI5/jQrlJhmrag+FRXb+hTxiOs93wbp
	HlXWRHtlQWU5eY7Bff4qUMH+7Rg4PQ9Nr8nfR+tPH9x4JLsdfgz9UKHM2uKghC4mcoCLSStdmun
	VdsTm1jzyKEPgEeMLG09wW5jA==
X-Received: by 2002:a05:600c:1389:b0:488:9439:881a with SMTP id 5b1f17b1804b1-48894398b65mr3879265e9.2.1775126895921;
        Thu, 02 Apr 2026 03:48:15 -0700 (PDT)
Message-ID: <2caff339-4ce9-42ea-9b78-afeac42b6f0f@suse.com>
Date: Thu, 2 Apr 2026 12:48:14 +0200
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: IOMMU faults after S3
To: =?UTF-8?Q?Marek_Marczykowski-G=C3=B3recki?=
 <marmarek@invisiblethingslab.com>
Cc: xen-devel <xen-devel@lists.xenproject.org>
References: <acZZmGXIJlmN3KGm@mail-itl>
 <e8bbaae2-5cff-4549-9f27-fbbda7346f60@suse.com>
 <090b8b8f-141b-4a24-92eb-879c0a0c73e1@suse.com> <ac2nibFfvGm_7elv@mail-itl>
 <933a3e95-33d2-4e20-a4d5-2d8b20c2da7f@suse.com> <ac4kCq87SQSc6ddV@mail-itl>
 <aa6910f1-365a-4534-b229-9730b3aede02@suse.com> <ac44SVW1cPhKYFKU@mail-itl>
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: <ac44SVW1cPhKYFKU@mail-itl>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
X-purgate-ID: tlsNG-bad1c0/1775126896-55752152-FB4D72CC/0/0
X-purgate-type: clean
X-purgate-size: 2289

On 02.04.2026 11:35, Marek Marczykowski-Górecki wrote:
> On Thu, Apr 02, 2026 at 10:39:41AM +0200, Jan Beulich wrote:
>> On 02.04.2026 10:08, Marek Marczykowski-Górecki wrote:
>>> The xl dmesg output (from MTL this time):
>>>
>>>     (XEN) [  123.477511] Entering ACPI S3 state.
>>>     (XEN) [18446743903.571842] _disable_pit_irq:2649: using_pit: 0, cpu_has_apic: 1
>>>     (XEN) [18446743903.571856] _disable_pit_irq:2659: cpuidle_using_deep_cstate: 1, boot_cpu_has(X86_FEATURE_XEN_ARAT): 0
> 
>> Hmm, but what you didn't log is whether __hpet_setup_msi_irq() actually
>> succeeded everywhere. (And if it did, also logging HPET_Tn_ROUTE() values
>> might be a good idea, if only to double check.)
> 
> Updated output:
> 
>     (XEN) [18446743899.720395] _disable_pit_irq:2649: using_pit: 0, cpu_has_apic: 1
>     (XEN) [18446743899.720409] _disable_pit_irq:2659: cpuidle_using_deep_cstate: 1, boot_cpu_has(X86_FEATURE_XEN_ARAT): 0
>     (XEN) [18446743899.720420] _disable_pit_irq:2662: init: 0
>     (XEN) [18446743899.720431] hpet_broadcast_resume:663: hpet_events: ffff83046bc1f080
>     (XEN) [18446743899.720579] hpet_broadcast_resume:674: num_hpets_used: 8
>     (XEN) [18446743899.720587] hpet_broadcast_resume:692: cfg: 0x1
>     (XEN) [18446743899.720599] hpet_broadcast_resume:697: i:0, hpet_events[i].msi.irq: 122, hpet_events[i].flags: 0
>     (XEN) [18446743899.720612] hpet_msi_write:283: iommu_intremap: 2 (iommu_intremap_off: 0), HPET_Tn_ROUTE(ch->idx): 0x110
>     (XEN) [18446743899.720638] hpet_msi_write:287: iommu_update_ire_from_msi rc: 0

So it succeeds, and the low half of HPET_Tn_ROUTE also looks plausible. The high
half is, however, the address that the low half value is written to. It's hard
to imagine that it would be zero when the low half isn't, but it is about the
last thing I can think of which could explain observed behavior. (Yet then, all
of this is pretty meaningless; see below.)

> And the current debug diff attached.

Hmm, you log HPET_Tn_ROUTE _before_ our update. That's not very useful. You want
to move that part of logging to the bottom of hpet_msi_write(), or maybe to
where you also log the per-channel cfg value in hpet_broadcast_resume() (thus
making the logging overall less verbose).

Jan


From xen-devel-bounces@lists.xenproject.org Thu Apr 02 10:58:43 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 02 Apr 2026 10:58:43 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1271689.1559764 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1w8Fl0-0004wh-TG; Thu, 02 Apr 2026 10:58:38 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1271689.1559764; Thu, 02 Apr 2026 10:58: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 1w8Fl0-0004wa-Pf; Thu, 02 Apr 2026 10:58:38 +0000
Received: by outflank-mailman (input) for mailman id 1271689;
 Thu, 02 Apr 2026 10:58:37 +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 1w8Fkz-0004wS-Dl
 for xen-devel@lists.xenproject.org; Thu, 02 Apr 2026 10:58:37 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1w8Fky-00Elor-Pq
 for xen-devel@lists.xenproject.org; Thu, 02 Apr 2026 12:58:36 +0200
Received: from [10.42.69.5] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <ross.lagerwall@citrix.com>)
 id 69ce4bdc-e002-0a2a0a5209dd-0a2a4505e04e-4
 for <xen-devel@lists.xenproject.org>; Thu, 02 Apr 2026 12:58:36 +0200
Received: from [52.101.57.54]
 (helo=BN8PR05CU002.outbound.protection.outlook.com)
 by tlsNG-c201ff.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.0)
 (envelope-from <ross.lagerwall@citrix.com>)
 id 69ce4bdb-3760-0a2a45050019-3465393631f5-3
 for <xen-devel@lists.xenproject.org>; Thu, 02 Apr 2026 12:58:36 +0200
Received: from CH8PR03MB8274.namprd03.prod.outlook.com (2603:10b6:610:2ba::5)
 by SA1PR03MB6561.namprd03.prod.outlook.com (2603:10b6:806:1c8::21)
 with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9745.28; Thu, 2 Apr
 2026 10:58:33 +0000
Received: from CH8PR03MB8274.namprd03.prod.outlook.com
 ([fe80::ebe2:32c1:d2be:a096]) by CH8PR03MB8274.namprd03.prod.outlook.com
 ([fe80::ebe2:32c1:d2be:a096%7]) with mapi id 15.20.9769.018; Thu, 2 Apr 2026
 10:58: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=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=qC//zhSQK2leDfGDXoltnTpMVYUbDYPhl9CN5C77LwGur3HtDNsstCwccpDNvaPoOLStsC7HyAS2Vr5J+jUAEFuML7fbI9XekAT4uCG0/eosygYzFISmMZeRyBoW76ebA2KEbMNDQPj+lNX6a7HuIcEo4nTE/LkT7fGPB12E0VsFCp98wVPyRqLCadA1r8wKxx1o87aqFIGhp6xL7of4cW9obKBDt3HO9j+qfxFGyxDkUdceAGITa8/RWB+riaQISOcxLEa0byb4IZqNJP8lGMv5uVAuAgrNmKRgZKSC/Z0pdr1xOVCwOxsmVEHjeUJOs4VobGg46W7MhCLf2KeaQw==
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com;
 s=arcselector10001;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1;
 bh=HPgkq20skk4tn02oyEvhIipQf9VMYMraeaVg31hkWY4=;
 b=jrGitfEKlgI4WTsJnULrf0iAwuvp4CDV60Ug3uxGouRU1d4iM4dCG+q3xagegy74/vxqR3z5pCDqBlgwq1mlPpMOB0SNZZmtS/gfEYY0eAAMkcfkV+Ao+sfdt3QBtkw3faAPEJrAdwRSLUI9Av58HfyI3oMhSjUcYHRgzHZdB4SjJGksdKt1l12MHCYSF0Q1+0bqGHm+lcJ1k1+4L2rvIYAIhjy0VVNiQL9myLXp6+pw0u4GKPYaXGih5atYI0W8dzZdgPHuBwZ0CKM+hVuPaEo3EGm2CtNgVs0sy3IenslFCndVbOCY6xZDozUDYGJT6XQ5/M+wr5jQXNaPFDc67w==
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=HPgkq20skk4tn02oyEvhIipQf9VMYMraeaVg31hkWY4=;
 b=eXZv0KrWbI5Eni9sEVncnqL9AFzbAPB8HIg3z/nXywk3vFLGyWTXfu97OWw596mewH8fo5DA8zkQdTA5x21k54V6bdt0L+a+q9lACk7wBM3QCcNIpf3IN/cFk/NpcQVGFwB4jxXTgfRvvuNQ3JwZEo3kDjxtYgM97liVHrH1sFs=
Authentication-Results: dkim=none (message not signed)
 header.d=none;dmarc=none action=none header.from=citrix.com;
Message-ID: <834d60b8-fec5-42ce-a6ab-a26ea9452ed2@citrix.com>
Date: Thu, 2 Apr 2026 11:57:23 +0100
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH v1 0/3] Lockless SMP function call and TLB flushing
To: Jan Beulich <jbeulich@suse.com>
Cc: Andrew Cooper <andrew.cooper3@citrix.com>,
 =?UTF-8?Q?Roger_Pau_Monn=C3=A9?= <roger.pau@citrix.com>,
 Anthony PERARD <anthony.perard@vates.tech>,
 Michal Orzel <michal.orzel@amd.com>, Julien Grall <julien@xen.org>,
 Stefano Stabellini <sstabellini@kernel.org>, xen-devel@lists.xenproject.org
References: <20260401163521.3603665-1-ross.lagerwall@citrix.com>
 <94b2e444-844a-4d34-9c9f-de0b9e6e23b1@suse.com>
 <17c4e7b4-297a-4bf9-9160-659723d15e48@citrix.com>
 <b0f721a9-42ba-4e71-8250-83fcfcec2313@suse.com>
Content-Language: en-US
From: Ross Lagerwall <ross.lagerwall@citrix.com>
In-Reply-To: <b0f721a9-42ba-4e71-8250-83fcfcec2313@suse.com>
Content-Type: text/plain; charset=UTF-8; format=flowed
Content-Transfer-Encoding: 7bit
X-ClientProxiedBy: LO6P123CA0044.GBRP123.PROD.OUTLOOK.COM
 (2603:10a6:600:2fe::20) To CH8PR03MB8274.namprd03.prod.outlook.com
 (2603:10b6:610:2ba::5)
MIME-Version: 1.0
X-MS-PublicTrafficType: Email
X-MS-TrafficTypeDiagnostic: CH8PR03MB8274:EE_|SA1PR03MB6561:EE_
X-MS-Office365-Filtering-Correlation-Id: 5316b0d0-eae1-400f-e99f-08de90a6c7f6
X-MS-Exchange-SenderADCheck: 1
X-MS-Exchange-AntiSpam-Relay: 0
X-Microsoft-Antispam:
	BCL:0;ARA:13230040|1800799024|376014|366016|22082099003|18002099003|56012099003;
X-Microsoft-Antispam-Message-Info:
	sfyhxYSfitjN5xUQ4QlSa9JbQgsorIsvt0ixR6njkGI+2kOa3zhVg/JgDGzqVPW1aPDkTHI8wfUJJc5LqrASMopx0P2twDRNdLxFytlwtBsSGO0JxKM5QVOBCgYTnXkRvbHT8P36PyAHIQUAjWDqVZn4WuGnTdSlWRCZENU6pOEkNBCRXRNq+lHVFICh7UOEz3m81OyFUryhl/IpU9OsY87rA523v9aM/DdBRJB3KABexRgExIfqh/05nWQWfROlCO9+nR+2ryZ6X2TpJqOgCGVFDAbX2HeYanC288M6vrG3Ld/a7SOHdEMuTnQ9k1wXGHtzVwOr6lz0ik3NFuRiWDxDRic2GtVBXEZTrdIEskZknjIKjFhf9aViBv85bUjbDMVp0Wqw35q5vQO35fvL9ar56Lo/HXMV//ET7PET81E/WhIs7IetHPJdbf8dmfLQuKWuzfiVn+6mhyoswW2yoPs7N2Il98Vz4RqWWiQQBLQcOW3Newl/SB0oeWnETAJy7qr3JBNJgqnWt0SZkKpKGngkkS9dr7dCjBjsMXsCjaHjFOdDPayCf92sEaLNdf/H4Y6NQ3wCHAKhMUJ710ebv66Rixj+mRuph3gZXZsyTbrU90wiEvpORrwJGG7zNUx3hsRVEtv2ka5XYRmKzZJVe3DAlqWp7L2HF8C6SWQBjZKLa5eoczW37N8czetjhPmmUAoL+onA48Jo8s+wo5gh5QF1kLSdA9E3IngCR4D9E5E=
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)(1800799024)(376014)(366016)(22082099003)(18002099003)(56012099003);DIR:OUT;SFP:1101;
X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1
X-MS-Exchange-AntiSpam-MessageData-0:
	=?utf-8?B?dFIxQUhLSnhvbnQxTFNZNDJJa3NkNXl0VzZiak9KWXVmTVB1RkJCWk5NbU9J?=
 =?utf-8?B?K1J5OGtnNkJTTHJSK3lqWndEeUM0cDRHa3hJSjBKejhTdFNxZTBHSTJDV0Nz?=
 =?utf-8?B?VnQrV05UNXU5M011TWF1ZkxJSVU3U0lGaXliL0Z2N3g3cUFaUTFXWGZZQkxP?=
 =?utf-8?B?Zk9rVTE1VXFnSFFtTGNTQUZhWG5tSGJTaWU1ZGRWUHJtUkh1RUM3TUw4MGwz?=
 =?utf-8?B?Q1BhWGlUdE8ySk9MSHJJWndSMVRpYVNYc3lUMldHeStOWWhMcitGaG1aNFZk?=
 =?utf-8?B?K2ErUmhWK2hHY2FObys0OHhmVEpKTHBId21oTGJTcFAzWWhCNEllNk1UWWNI?=
 =?utf-8?B?TEJmL1dqVGY5TmVFL0RUcGd4aldkT2pyNVdQUk9VcVM4ZjRJT2hTdk4vN3d4?=
 =?utf-8?B?UjdRQnJkNlBwN1dVSFVET0ZheXRMMUhFcHlkcEhQeXpkUERLeXZIaGZsaTFU?=
 =?utf-8?B?UzZXWnZTOVkxa2FsV0toTS8ySGJlZ3NrelRhSFJCdzVYVVF1bEZkdDU2c1BW?=
 =?utf-8?B?dXJzdzJ4Q0dRRE56VVNtejVYUzBFUk90UjcydTVGNjhyZHordXVGcWR5cFZk?=
 =?utf-8?B?VHMzeXVlNnhONEE0Nzh5dXNXOXdlVSt4S0R5VXBCUytob0hIdEdLNk9RZWVZ?=
 =?utf-8?B?cmZzK2xDWEIyUUdkTkZaNTVXNEhrck1RMWR2TWZqb1JjbG8zd1VDR0lubWZI?=
 =?utf-8?B?UlAzN0FoWlAvRUZxWTFHMmc1dnkzc1VoT1dkTUZZdGJQdUxBQm0zUG9QYlBW?=
 =?utf-8?B?ck9CQkpWUHFrYVdGQzAwZCtUNS9vWFNhU3Y2R3ZiMHNxRG82SHZEeG1hc3kx?=
 =?utf-8?B?aXl0WWptVW1TM1d0b2ExUDEwcVhhNExiU1lydldZYUx2VHkvdUwzL0pPbFlz?=
 =?utf-8?B?YWNwd0pndjRIUTBIenlhV05WNDFveWdVTXhOMmFVQUVjNkRMR2EvL1NxQjRj?=
 =?utf-8?B?MGxWSWdqVWRQNWw2YXU2c0hwQ2FaNnV5NjFERzU0OGF2RFNmemk3VjZWcmpK?=
 =?utf-8?B?REVvYllNNWdCL3h4RzF5ZWNjZ29tUnZ6NmhIRUdPUWhOazIxcGFEcWdPZGFP?=
 =?utf-8?B?MXltRk9NdVBjcTY3QWxWdUVvOXlWWCsrN3Q1MUNLeTVBN3JRUGlHbjVnYUwx?=
 =?utf-8?B?NHhTYnExbG8zQ3VadnZuNU9pQW5YeC8wZnllandaVkI3Um9PUCtUKzRzdWs0?=
 =?utf-8?B?K2sxK1hTaGlyY1NpTS9xem1ka0w5N3BDdC9tcmszdmxGTGRpUlQrVEtKR0Y3?=
 =?utf-8?B?UkMwL2gwOHJLR2l6Q0Jld3JxaGsyQnJPMEl1SnJnNFFMNmxUQ21wNzVYUm1Q?=
 =?utf-8?B?OUpSTzRUUEMyWEhvUXVKZVllVkF2RGZ6QjdOck4ycll6QTM0OGNBVXpjeDVG?=
 =?utf-8?B?R2w2WFVENTNGZXZMUC9MZmJyeVBjaUZ1OU45OE5xU1BuWnpjL1QxTUMrV3Nn?=
 =?utf-8?B?NE9lQm9FMll1SnFiZW1kMXVSRFByYjNvWDh5aHBkTU1qNzJZdkNtQUgvSlhH?=
 =?utf-8?B?cHcxbEQvOHJlOFkvL2pZemJRcXk3NkMwOWlIZ2pLNXZsLzNyV0FkQzJyKzRX?=
 =?utf-8?B?cjVNUW44S0ZQUm45WXJTUGhXc1p3K1ZMOFkvYWVBSGhvL0g3Y2xneDJFeGwr?=
 =?utf-8?B?UTJDbTVIbHRNUVY1RDNaRm56VE9FWFVKRTZsY0t1N0RJUzRuU0hhcXFqQVNt?=
 =?utf-8?B?dElFVTRwUGtSQjJUcjZ6OUdMS0tYVkQ4WFJxc3NZKy9rYmxGb0ZHOHNWL1pK?=
 =?utf-8?B?dUtuN1pZVTRTTGx1d0FwcTFkNXNFUVlMdmVMejRMelpWMkpmR29aODNJZzRw?=
 =?utf-8?B?QjcyTkZYVEhrMytJQ05CMkdVSU5mZ29qUHFaMGhnMVQ4b09XeFZFK0FYMC9y?=
 =?utf-8?B?SkVieHZpVmJGcUNPTFpzV2pGSDFPNlV0R3R0L0IvZi9JbGxhRXd4R0I3TDNi?=
 =?utf-8?B?YzFmRWNjdnRXNm9OdklCSlcwTjJyQXhLdVRGNEtRcXdzR0M2MDBaNy9tSmdp?=
 =?utf-8?B?bDV0MS9adUg3NkFEK2Y0ci95R2Irc0ppVTVxOWR2b1dPUTNzeDJzL2p0L3Jx?=
 =?utf-8?B?aHdianZFWUwyQ1psdzc4ZmpFZWJObHF2dkFBYm9wakNrWExlbjQ2dDYxekxB?=
 =?utf-8?B?eXRNMVNZZHdDd1F0Y0xFS1BMejU3aE9PYTFERXdKNWtCVG5nS0taNkdpTzE5?=
 =?utf-8?B?VU1UZkRIdzA2MFBod3hEdys2SmRYUGR5SVovSEVkL3o5VEZTSGJuVzQrQUc4?=
 =?utf-8?B?ekxrMUQrVHdhQ2xHRUpjVDE0a2JTUDNyN2hiSEdiK3Q3ZjlzNk1Cc1RoUkZm?=
 =?utf-8?B?UHh2eUxtK2wwa1Nndk5qWWZUVWdHS2YxRGlvVlBTNUpwY1pSOC9JcjdiSVRy?=
 =?utf-8?Q?I+7l+9eH4BYatM0E=3D?=
X-OriginatorOrg: citrix.com
X-MS-Exchange-CrossTenant-Network-Message-Id: 5316b0d0-eae1-400f-e99f-08de90a6c7f6
X-MS-Exchange-CrossTenant-AuthSource: CH8PR03MB8274.namprd03.prod.outlook.com
X-MS-Exchange-CrossTenant-AuthAs: Internal
X-MS-Exchange-CrossTenant-OriginalArrivalTime: 02 Apr 2026 10:58:32.8967
 (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: pqPnKaISJ4BqCdY9UGZkQ9uzmAtFM/a5d89AbSOnZBhJ0WcAXVtj5CfVIWe4kb50UciyyfcLSDqFtYF7xUvzrs6NAP/wZsAe+pHZbS+Siq4=
X-MS-Exchange-Transport-CrossTenantHeadersStamped: SA1PR03MB6561
X-purgate-ID: tlsNG-c201ff/1775127516-31B3896F-3A20B97D/0/0
X-purgate-type: clean
X-purgate-size: 3383

On 4/2/26 9:49 AM, Jan Beulich wrote:
> On 02.04.2026 10:40, Ross Lagerwall wrote:
>> On 4/2/26 7:09 AM, Jan Beulich wrote:
>>> On 01.04.2026 18:35, Ross Lagerwall wrote:
>>>> We have observed that the TLB flush lock can be a point of contention for
>>>> certain workloads, e.g. migrating 10 VMs off a host during a host evacuation.
>>>>
>>>> Performance numbers:
>>>>
>>>> I wrote a synthetic benchmark to measure the performance. The benchmark has one
>>>> or more CPUs in Xen calling on_selected_cpus() with between 1 and 64 CPUs in
>>>> the selected mask. The executed function simply delays for 500 microseconds.
>>>>
>>>> The table below shows the % change in execution time of on_selected_cpus():
>>>>
>>>>                     1 thread   2 threads    4 threads
>>>> 1 CPU in mask     0.02       -35.23       -51.18
>>>> 2 CPUs in mask    0.01       -47.20       -69.27
>>>> 4 CPUs in mask    -0.02      -42.40       -66.55
>>>> 8 CPUs in mask    -0.03      -47.82       -68.39
>>>> 16 CPUs in mask   0.12       -41.95       -58.26
>>>> 32 CPUs in mask   0.02       -25.43       -39.35
>>>> 64 CPUs in mask   0.00       -24.70       -37.83
>>>>
>>>> With 1 thread (i.e. no contention), there is no regression in execution time.
>>>> With multiple threads, as expected there is a significant improvement in
>>>> execution time.
>>>>
>>>> As a more practical benchmark to simulate host evacuation, I measured the
>>>> memory dirtying rate across 10 VMs after enabling log dirty (on an AMD system,
>>>> so without PML). The rate increased by 16% with this patch series, even
>>>> after the recent deferred TLB flush changes.
>>>
>>> Is this a positive thing though? In the context of some related work something
>>> similar was mentioned iirc, accompanied by stating that this is actually
>>> problematic. A guest in log-dirty mode generally wants to be making progress,
>>> but also wants to be throttled enough to limit re-dirtying, such that
>>> subsequent iterations (in particular the final one) of page contents
>>> migration won't have to process overly many pages a 2nd time.
>>
>> In the context of a real migration, both the process copying the pages
>> out of the guest and the guest itself will be hitting the TLB flush lock
>> so reducing that bottleneck may increase throughput on both sides.
>> Whether or not the overall migration time increases or decreases depends
>> on many factors (number of migrations in parallel, the rate the guest is
>> dirtying memory, the line speed of the NIC, whether PML is used, ...)
>> which is why I measured a more controlled scenario to demonstrate the
>> change.
>>
>> IMO throttling of a guest during a migration should be something
>> intentional and controlled by userspace policy rather than a side effect
>> of some internal global locks.
> 
> I definitely agree here, but side effects going away may make it necessary to
> add such explicit throttling.
> 

Explicit throttling is much more important for the already existing
case of Intel systems with PML. With log dirty enabled, a VM on an Intel
system can dirty memory an order of magnitude faster than an AMD system
without PML.

As an aside, for the same test an Intel machine without PML is still a
lot faster than AMD so there is probably something to improve in this
area for AMD machines.

Ross


From xen-devel-bounces@lists.xenproject.org Thu Apr 02 11:01:03 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 02 Apr 2026 11:01:03 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1271700.1559772 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1w8FnL-0006So-8A; Thu, 02 Apr 2026 11:01:03 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1271700.1559772; Thu, 02 Apr 2026 11:01: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 1w8FnL-0006Sh-5E; Thu, 02 Apr 2026 11:01:03 +0000
Received: by outflank-mailman (input) for mailman id 1271700;
 Thu, 02 Apr 2026 11:01:01 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <jbeulich@suse.com>) id 1w8FnJ-0006Sb-Cl
 for xen-devel@lists.xenproject.org; Thu, 02 Apr 2026 11:01:01 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1w8FnI-007mxg-P5
 for xen-devel@lists.xenproject.org; Thu, 02 Apr 2026 13:01:00 +0200
Received: from [10.42.69.11] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <jbeulich@suse.com>)
 id 69ce4c6a-5cb7-0a2a0a5109dd-0a2a450be07a-6
 for <xen-devel@lists.xenproject.org>; Thu, 02 Apr 2026 13:01:00 +0200
Received: from [209.85.128.44] (helo=mail-wm1-f44.google.com)
 by tlsNG-42698a.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.0)
 (envelope-from <jbeulich@suse.com>)
 id 69ce4c6c-bca8-0a2a450b0019-d155802ccdf8-3
 for <xen-devel@lists.xenproject.org>; Thu, 02 Apr 2026 13:01:00 +0200
Received: by mail-wm1-f44.google.com with SMTP id
 5b1f17b1804b1-4887d4c6234so9307805e9.1
 for <xen-devel@lists.xenproject.org>; Thu, 02 Apr 2026 04:01:00 -0700 (PDT)
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-4887c561750sm229542455e9.2.2026.04.02.04.00.59
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Thu, 02 Apr 2026 04:00:59 -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=google header.d=suse.com header.i="@suse.com" header.h="Content-Transfer-Encoding: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=1775127660; x=1775732460; darn=lists.xenproject.org;
        h=content-transfer-encoding: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;
        bh=ncklvoF5otYx97jBSQ6JDFXPzpLgz3WdfvaXJOFtuLE=;
        b=gsgzadRM6eRzOiAOVS6aPx+AFM/2ewvq/zIaRYixUnmPl9uViCjachQU3hkdGU9Lj+
         SXy/+bDovscoKqpX24XukmgssdvCurX7rY/XSgqlfpcgvxEeR/nt2CHprn6e9QKYuS7m
         O4poKBT4GketDaKGh8J7fQxhHcgy0IbH5UC6XpEMRHH1Fl5mmvjjUC2L+jOGcf3MMj66
         QKtWc1iSzSp+7l/K43frUvkHFW2oPvj8ecGmgY0DDMkLAKBlD6cD/BWH4COdD3hm7Ggp
         T3S6mc0q+aS8RUnvmz9iScOuH8m7ksCD1ARGvGmW5KL8YVtHzFMHHSxxlMGd08rLQ4VG
         xv5A==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20251104; t=1775127660; x=1775732460;
        h=content-transfer-encoding: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;
        bh=ncklvoF5otYx97jBSQ6JDFXPzpLgz3WdfvaXJOFtuLE=;
        b=TyJBHX3NQaW9s7sDoBmpxOVvH471ouXt3oPJD7qXK/io8BvGl8uSYRp1/XBuACPoni
         UaNajtIkBro2xxtsobOoDNTiXy+Zypubq2mCzTzp0VxiRFy5JfJXwRMrX8wmWqgYzKzX
         GoCXMHf6oiv03bImjGK0bUEsNFlFcBvy2YvbGWAF626UUYC8lSLrWKfmHmf4ar62OHXN
         bWSL/gG+XJ+fy25NKAqp5UQ/wDRKBCVRye5aQ19NNiVCqxrRGYCTtgGCQ7vdCDwuCDpu
         PdJEWf0TT3br6jpx3aDIWtEXycCO6ptLVfpptkcMtSlXmDsrZBSESKIbkgKAzwn5coyh
         Mzmw==
X-Forwarded-Encrypted: i=1; AJvYcCWy4ImUfC/zcPLWfGRmJu//plGi3l7tYiO9MYDgURoxHvasGAuqGzhVJZxQ1HcdbpVMzVPyjQRDP/U=@lists.xenproject.org
X-Gm-Message-State: AOJu0YzNWBu++20Kx2P5bp4YCV7+/andBKyGMAnwdwk2Pk/LYoU3lLG7
	hgTlC4QD2+gfq14mHL6zeqp+QSC2gtKryUfJEy2cTK6ojMXpx6tCRPXxC+M1459XOQ==
X-Gm-Gg: ATEYQzySbhAIZ6Yj9Tzyu06yzGa6DYdQrfKIUcshhWbCiA0yfbqjTOB2t0r3idVXAn8
	qhD6wcYQmUged/0FXVD5mvMvbVvu2VGoCKz+456YsjXmTx0QO11ToR+ObBe2zUup+7ppxDULgmE
	GgVgKGEOx5qXxjkwZbBWtGGKRj22SVrHoJvLmWHIcuZzVh7pf5kssf8tzQUQw4McLXd8/Gnz/VJ
	brvxo+0e07BCTNvL6C6TAzfsruQqMlHCROVv4zrA/DUPCinvxWuXTLoxuczFITcjbxMZdKzSlJ6
	/L4inewccN5b9adlDG0+Xow1YUaqkPgiEO79IDlhiyUQGmbDzgWnRRef0DDvkhMDMn+4G0DJQqY
	EDuiz69iLztVt07Yr5orhHkkQNo0mcpaU0NzxVJqMQsPrQnWSeo4pgMxNsCc/SU5CjZ+bCZzmDP
	LUGyCavye/Y5cs3ngonrsw4eBeQTuRyQ/5QudzoSIlX6qz0f6NXJ0j+0s4aL71BE2ttz4QBORhS
	86dmzM8pducKaw=
X-Received: by 2002:a05:600c:8b4b:b0:485:3fa9:358c with SMTP id 5b1f17b1804b1-4888358c814mr110796525e9.17.1775127659917;
        Thu, 02 Apr 2026 04:00:59 -0700 (PDT)
Message-ID: <104d1273-78d7-466c-ac9f-c06250211e9c@suse.com>
Date: Thu, 2 Apr 2026 13:00:58 +0200
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH v8 13/13] xen/arm: Add support for system suspend
 triggered by hardware domain
To: Mykola Kvach <xakep.amatop@gmail.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.pau@citrix.com>,
 Rahul Singh <rahul.singh@arm.com>, xen-devel@lists.xenproject.org
References: <cover.1775125380.git.mykola_kvach@epam.com>
 <9b0f8922cd33df2b8e8038d639c1b8d8d73ce401.1775125380.git.mykola_kvach@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: <9b0f8922cd33df2b8e8038d639c1b8d8d73ce401.1775125380.git.mykola_kvach@epam.com>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 7bit
X-purgate-ID: tlsNG-42698a/1775127660-EE3542A1-3CD4198C/0/0
X-purgate-type: clean
X-purgate-size: 1927

On 02.04.2026 12:45, Mykola Kvach wrote:
> +/* Xen suspend. data identifies the domain that initiated suspend. */
> +static void system_suspend(void *data)
> +{
> +    int status;
> +    unsigned long flags;
> +    struct domain *d = (struct domain *)data;
> +
> +    BUG_ON(system_state != SYS_STATE_active);
> +
> +    system_state = SYS_STATE_suspend;
> +
> +    printk("Xen suspending...\n");
> +
> +    freeze_domains();
> +    scheduler_disable();
> +
> +    status = can_system_suspend();
> +    if ( status )
> +    {
> +        system_state = SYS_STATE_resume;
> +        goto resume_scheduler;
> +    }
> +
> +    /*
> +     * Non-boot CPUs have to be disabled on suspend and enabled on resume
> +     * (hotplug-based mechanism). Disabling non-boot CPUs will lead to PSCI
> +     * CPU_OFF to be called by each non-boot CPU. Depending on the underlying
> +     * platform capabilities, this may lead to the physical powering down of
> +     * CPUs.
> +     */
> +    status = disable_nonboot_cpus();
> +    if ( status )
> +    {
> +        system_state = SYS_STATE_resume;
> +        goto resume_nonboot_cpus;
> +    }
> +
> +    time_suspend();
> +
> +    status = iommu_suspend();
> +    if ( status )
> +    {
> +        system_state = SYS_STATE_resume;
> +        goto resume_time;
> +    }

So you've frozen the system just to get ...

> --- a/xen/drivers/passthrough/arm/smmu.c
> +++ b/xen/drivers/passthrough/arm/smmu.c
> @@ -2947,6 +2947,13 @@ static void arm_smmu_iommu_domain_teardown(struct domain *d)
>  	xfree(xen_domain);
>  }
>  
> +#ifdef CONFIG_SYSTEM_SUSPEND
> +static int arm_smmu_suspend(void)
> +{
> +	return -ENOSYS;
> +}
> +#endif

... unconditional failure from here?

Also, ENOSYS is clearly inappropriate to use here. EOPNOTSUPP or something yet
better distinguishable, please (if this can't be dropped altogether).

Jan


From xen-devel-bounces@lists.xenproject.org Thu Apr 02 11:04:00 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 02 Apr 2026 11:04:00 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1271712.1559782 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1w8Fq5-0006ye-L2; Thu, 02 Apr 2026 11:03:53 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1271712.1559782; Thu, 02 Apr 2026 11:03: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 1w8Fq5-0006yX-ID; Thu, 02 Apr 2026 11:03:53 +0000
Received: by outflank-mailman (input) for mailman id 1271712;
 Thu, 02 Apr 2026 11:03:51 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <Oleksandr_Tyshchenko@epam.com>) id 1w8Fq3-0006yR-J7
 for xen-devel@lists.xenproject.org; Thu, 02 Apr 2026 11:03:51 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1w8Fq2-00En3k-KJ
 for xen-devel@lists.xenproject.org; Thu, 02 Apr 2026 13:03:50 +0200
Received: from [10.42.69.9] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <Oleksandr_Tyshchenko@epam.com>)
 id 69ce4d13-bab6-0a2a0a5309dd-0a2a4509aba0-16
 for <xen-devel@lists.xenproject.org>; Thu, 02 Apr 2026 13:03:50 +0200
Received: from [52.101.69.107]
 (helo=AM0PR83CU005.outbound.protection.outlook.com)
 by tlsNG-bad1c0.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.0)
 (envelope-from <Oleksandr_Tyshchenko@epam.com>)
 id 69ce4d16-bf79-0a2a45090019-3465456be1bc-3
 for <xen-devel@lists.xenproject.org>; Thu, 02 Apr 2026 13:03:50 +0200
Received: from AM4PR03MB11152.eurprd03.prod.outlook.com
 (2603:10a6:20b:6cc::22) by AS8PR03MB6984.eurprd03.prod.outlook.com
 (2603:10a6:20b:29e::9) with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9769.17; Thu, 2 Apr
 2026 11:03:48 +0000
Received: from AM4PR03MB11152.eurprd03.prod.outlook.com
 ([fe80::bbbf:5b9b:1043:4510]) by AM4PR03MB11152.eurprd03.prod.outlook.com
 ([fe80::bbbf:5b9b:1043:4510%5]) with mapi id 15.20.9769.016; Thu, 2 Apr 2026
 11:03: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=m8GMt58p7L9fxdS/EDVqGFAwBccm3YBNH23Qz2rHKWa/xJPbg9PbQ8bz5U4Omt5KjMmgJVLr246Kr/xVblBD9FI49ex6qIbqhOIsU+nCpx9YRyYoqUAuzY1oSYZU1vKUL+xMmh1hBm38aT2V/DncXFJVpLdpKJ8dcutyqcUVnWen08Cg61Xuluac6L+YmaYyO9NLnHM7PkgXM7E9w/ReLz9m+ZOPFoLKbB7SontHdR1STS3XTP7izptbTPvpiSu7uhvk47frx77to+nnP5/lCzN3oQ3HLWTqScLBnMcR53A/hA7eJU5g5KFsFe66JJZpfNHmOnc9JAV+rTVlR9rd1g==
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com;
 s=arcselector10001;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1;
 bh=uwecGfUgjnXcZt7A/fraa8cxaYLtuD5RKkI7VkYfn60=;
 b=TM+BMf6drXqiyIbvpmZ/4Rqr9outoLGP1GhQia7LKftql4UZy/J5QUHWT84IA5SGN9gy2tdkG9F6beQvkkGGRJedN3NigVsgo0oNxWYjzUYyU6u6FvfNhAFFYVwYPGATm/b9Dv5lbQRfjFxh5mg32TrUNB93SC1QQoghbAnxY9NxTeSPehBK269rZxJzA1uHYu6HE/nidSpj2AjYU4lyk9KEKZ+zEwSW6nTn5sgUi/RcuEpjcL8N9FQwenIR5bgNgh9UZOE7RUSWYLAFRUKMbo+xxUR/VGtPE7D9N/tyeJ7gPKQaHGvzzpFp6wL3u7anH79Au3p5Mry3bpTTdOM0LQ==
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=uwecGfUgjnXcZt7A/fraa8cxaYLtuD5RKkI7VkYfn60=;
 b=mNpGMuMaPq+Y9VG0daCqFYuRpmdC2uhFFozmN97nNDufDnDaP/Tm69zvkFAmAfQUW4iDgsFgGevsDFXhTsP7+hOPybBYjlYMdY+NhamCEdlyaxChYuUONkttDoGmtS/B+CD8zVB7CUcMkk9Kq7FioryH0j//97in1Ge2BZt/q/3VpQt/KAxV2Ir6rTvViGEhVuhlpc9bBRefrXUd4k7hoO6/Rwl6akkhURTTHkSOfICsh2CfoRJWFojzWU7IgC61mm9YsfUpcD9XZYjnD5Cb/sPkFOtiUPOBisR/oZtCXy2w7Y03jELui66h0+YnMgonwu4hwbHa3zqnkO591emGLA==
From: Oleksandr Tyshchenko <Oleksandr_Tyshchenko@epam.com>
To: "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>
Subject: [PATCH] xen/device-tree: Fix off-by-one bounds check in
 make_memory_node()
Thread-Topic: [PATCH] xen/device-tree: Fix off-by-one bounds check in
 make_memory_node()
Thread-Index: AQHcwpBhsnhldIRLa0qtQ6xVjLEK7A==
Date: Thu, 2 Apr 2026 11:03:48 +0000
Message-ID: <20260402110330.3580124-1-oleksandr_tyshchenko@epam.com>
Accept-Language: en-US, ru-RU
Content-Language: en-US
X-MS-Has-Attach:
X-MS-TNEF-Correlator:
authentication-results: dkim=none (message not signed)
 header.d=none;dmarc=none action=none header.from=epam.com;
x-ms-publictraffictype: Email
x-ms-traffictypediagnostic: AM4PR03MB11152:EE_|AS8PR03MB6984:EE_
x-ms-office365-filtering-correlation-id: 2b5291b2-224d-4df2-2a23-08de90a7844f
x-ms-exchange-senderadcheck: 1
x-ms-exchange-antispam-relay: 0
x-microsoft-antispam:
 BCL:0;ARA:13230040|376014|366016|1800799024|42112799006|18002099003|56012099003|38070700021;
x-microsoft-antispam-message-info:
 3H2wVMRbyQRS4Mfyspm/AXHTALQ9vwHtGBCUVqJbFfQjVyd2LEuDw9oMC+nEtrI/IcntCbhqDbCz6wwq4VQOQUxHuNaBmG70ZrkC9xLPDoKpkvOhWppmeciARsDuYGimilhEBDTzXAMecjEK5yTaYj1vO8VtyS+wxnC/JOkJNDmEvf1a0Bwk7mLbx//m65vkhjaJFlox5q7GDX96Cu98SOtPjZtkPFQ8M+t18rj11dwRkwhZCpabnZ8W8gvjllUM3lx1/u1wDvEGqige7yZ8nRG2XCaPkmI5ImdNU57Yv8goUKpKTyFRd+cgczEcQnkd6O1Sdej4/1jHI4h+uXu/FqFT1R0OVKmvNG8ro4Ygux6tL6eXTULjFa0whGzXcWLwG+sp5LP25HRzBSkw3ODC4TRYj6LBurQ6C1mdQWVU3gbjhHb1LkB6BvKx50mmEcQebHv0UxfMz6Ql87yPSZxRXgwwXkQte3z46hD30KHxJ0aYnLmVOyCb9YPnML1FmYmm6tJyXnPX+Na3qsySE8cWhGxUmcrMe0PlKsYtm7VJZGGgqWRVwVGbaO58TT5dyPd0CEUoRNlMkOkK3RHshy5oQHcRrO0AVp2JenWJlDpylFM2oy/xTQ18aI8R4HpkXdMFZvFY4RHAQBAY02LFXi6Nml1VMlNBDksBh2t/t+6kaSSNnIKcoAdPIta1Ytp4+3/GRD/7oeUXBngykR1OHoPZmOTzdEFJIfqkN765FgagPjpzmRveCfpCMM3mnATjpVTuCl1AJI84PtqXYEUNVP16X2AbZGnJ6ZM1jSxvmVCW9d4=
x-forefront-antispam-report:
 CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:AM4PR03MB11152.eurprd03.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(376014)(366016)(1800799024)(42112799006)(18002099003)(56012099003)(38070700021);DIR:OUT;SFP:1102;
x-ms-exchange-antispam-messagedata-chunkcount: 1
x-ms-exchange-antispam-messagedata-0:
 =?iso-8859-1?Q?SwGMDHxgyEpfmtBR0n3yaGMhxAcAhAKJ34fWugb1Nu9sDfnunKDAXbcU7R?=
 =?iso-8859-1?Q?oJm1QdYnei0C6ngndfi5bE5fouMdsVTfn4AYuGn6e9exqL2laIO/xTlnH/?=
 =?iso-8859-1?Q?jY1zRNV3fYFxle0xoWT7DIK36UZfO4TnuSLrh9r42TTkUZcMMoEu2bG6Nb?=
 =?iso-8859-1?Q?3bHC+Q3y0MSDs67pSGGk/k9NigSQ4H1CmBB+VXcFbBL5xVHJu8ycYjOrem?=
 =?iso-8859-1?Q?tBnTIVz4CcIGYT28snweKXsz3rVDvokpHhNfSBzMX6LsPjJQR/5jM0W+Ff?=
 =?iso-8859-1?Q?XKafT0tJhjzb0e+TSXTVFcLnd9vdq27dvTAOvr7iPIdQVOPwGDwYsc6MXe?=
 =?iso-8859-1?Q?slfwMo5YJCpIqgsL0qe/m66Xrr1JEuoUVzEmVFi1K5vaweyecu3/fJkhtV?=
 =?iso-8859-1?Q?OGE9kjpG+ET/pvP+eGZTlXHZzuzZZnAd33TmwZP/kmEcLH0CDt7/2ly3wx?=
 =?iso-8859-1?Q?Rgo+Mtn/9PEh7inVjP3ZfE+vq7LRTZrzaeuDe4r9pf1mdYoQ8P9AWyUKNb?=
 =?iso-8859-1?Q?ePlNOF+O83IPr2aGPJr2X2C4x2NXCS64TqUEVsYQkpAr7Wnw38jRU/gKo2?=
 =?iso-8859-1?Q?FKO5jOW/+4YOfkiD5inTRqLGKqbFypZ+rmP0WUO+FjBbxOjBPlevZnXrQe?=
 =?iso-8859-1?Q?PtT/PB5AwVRup6kWYnv/186ChNTz+Yc5Wd/P0yTTuXm3GwFSEJXDFv+c1R?=
 =?iso-8859-1?Q?pNo8ldcncH8I4oF900GbKHb5pRo+qjxCGEGTQP7l1n4/74Cx75dGb++5AI?=
 =?iso-8859-1?Q?ikODdDhcu4wVRJ1KJa8bP8r+oXzXZ9dYJYK/UKkh2+W4hH+3T+rfEd5qY7?=
 =?iso-8859-1?Q?yfRsxJdGLoSl6wShG3ybwmFBoW5jZZvo/SchFS421YzBgR5vE9Qj/OKsEe?=
 =?iso-8859-1?Q?Ae4tzhRZjkg3hkLmr/LAUBBwFWVibMRB0AncEHa1907tNFJD35lSyrWc1J?=
 =?iso-8859-1?Q?TTriFaOiH1yc5h43kpTUj8CDE7biAck3IRLu/ATY5WaRk5dY3LmZiuYOHQ?=
 =?iso-8859-1?Q?alIV44+X4r3ex4j7klr+jDmzgHjIQuWxc+u8Atwt27EmcQAg2JKZ32enrb?=
 =?iso-8859-1?Q?UE/pz1Nujt/37j7Zk6T05/aatJ8/QiMr6/6/gMrrCCVrIzj1WNCqpiAe2H?=
 =?iso-8859-1?Q?l7N7nG2ywRf2enud+RuZ/0CLNMRTjsJ7c1QDzZ36e7CmVEiv26HkGowIAJ?=
 =?iso-8859-1?Q?TB2+xVZHig+l5qFf6Q/FfvjVMQlFC3w2TaDF/gOLhYcEZiQFsfAqteUMNw?=
 =?iso-8859-1?Q?wboN7XpIeHmtdnGzCTAchBLrIPgkwBsnZCw0FqrxTtyMPVgxfvWEX7f/T6?=
 =?iso-8859-1?Q?hjFkh3XDq4dorn6nE/CarGh3X9H1mLvPdtrGn0kPuegrIEglkkZQcwLa7g?=
 =?iso-8859-1?Q?nldanhFOqnJko27Vqti8TxBByeEUMf1POdKNyqKMlKitTaEmLGtkFI+faq?=
 =?iso-8859-1?Q?t4FfGkwVJqtwJQIeZ1ilITVIrTkWyCizOiwZj0W+lglu+SccF5wKjSQAID?=
 =?iso-8859-1?Q?E7CfqamwHhGw4CDyblGA4SKTsSebfU4NALgUuw98zkXJXs4W+p/35ROE1b?=
 =?iso-8859-1?Q?LTEqWfdk2s/BOLlL+U0m1n8fELH1Q/YJneSbzw49+5zjA97d3sHtVZySpH?=
 =?iso-8859-1?Q?oP+Owjkyr+TqE7xUIoNp2V609NE9ZqYOWcBd5v4mHFlGUv203Y2LFT8t5t?=
 =?iso-8859-1?Q?U/v4Sv9THFSn+9NvlsKb1USIveSFO02KWJQXhieNCbUpO4XEn/1MrFwKE0?=
 =?iso-8859-1?Q?HNGa7S8+35zNgyD8DTaVKYrz95b1aHlnb7jBkq8pNxcZM4ER+N+d6Ur6PZ?=
 =?iso-8859-1?Q?VZgUXE6vSNCOsNPjILuj55C9rWXJ/lQ3gtbAFlvSKryTrnz5/jq7?=
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: AM4PR03MB11152.eurprd03.prod.outlook.com
X-MS-Exchange-CrossTenant-Network-Message-Id: 2b5291b2-224d-4df2-2a23-08de90a7844f
X-MS-Exchange-CrossTenant-originalarrivaltime: 02 Apr 2026 11:03:48.4663
 (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: yr+QQrRCfl734s8GYNx4ctuJidJ4neiIXiDFDrS0i/g8IGPys6UOmucJqPa7ZInS7ladvLpt/x6jmk4JLXMx2ULeAwFvVsuAQNj04dU79Fo=
X-MS-Exchange-Transport-CrossTenantHeadersStamped: AS8PR03MB6984
X-purgate-ID: tlsNG-bad1c0/1775127830-2E74A152-E7EA62D9/0/0
X-purgate-type: clean
X-purgate-size: 2697

When building Xen with CONFIG_STATIC_SHM=3Dn, booting a hardware
domain with exactly NR_MEM_BANKS (256) reserved-memory regions
causes a panic:

(XEN) Xen BUG at common/device-tree/domain-build.c:497
(XEN) Xen call trace:
(XEN)    [<00000a0000289aa8>] make_memory_node+0x178/0x234 (PC)

This occurs due to an off-by-one error in the bounds checking of
the reg array in make_memory_node(). The check:
    BUG_ON(nr_cells >=3D ARRAY_SIZE(reg));
incorrectly triggers when the array is exactly full (i.e., when
nr_cells =3D=3D ARRAY_SIZE(reg)), preventing the 256th and final valid
memory region from being written.

When CONFIG_STATIC_SHM=3Dy, this bug remains hidden because
DT_MEM_NODE_REG_RANGE_SIZE adds extra space for SHM banks.
This extra capacity prevents the array from ever reaching its
maximum limit while processing the 256th memory region.

Fix this by changing the condition to strictly greater than (>).
Apply the exact same fix to shm_mem_node_fill_reg_range() to
prevent the same error.

Signed-off-by: Oleksandr Tyshchenko <oleksandr_tyshchenko@epam.com>
---
For context, this issue was also discovered while testing maximum limits.
I did not notice it while working on my previous DOM0_FDT_EXTRA_SIZE patch
because my .config had CONFIG_STATIC_SHM=3Dy enabled at the time, which
masks the error.
---
 xen/common/device-tree/domain-build.c | 2 +-
 xen/common/device-tree/static-shmem.c | 2 +-
 2 files changed, 2 insertions(+), 2 deletions(-)

diff --git a/xen/common/device-tree/domain-build.c b/xen/common/device-tree=
/domain-build.c
index 6708c9dd66..540627b74e 100644
--- a/xen/common/device-tree/domain-build.c
+++ b/xen/common/device-tree/domain-build.c
@@ -494,7 +494,7 @@ int __init make_memory_node(const struct kernel_info *k=
info, int addrcells,
             continue;
=20
         nr_cells +=3D reg_size;
-        BUG_ON(nr_cells >=3D ARRAY_SIZE(reg));
+        BUG_ON(nr_cells > ARRAY_SIZE(reg));
         dt_child_set_range(&cells, addrcells, sizecells, start, size);
     }
=20
diff --git a/xen/common/device-tree/static-shmem.c b/xen/common/device-tree=
/static-shmem.c
index 79f23caa77..4c4cc1b123 100644
--- a/xen/common/device-tree/static-shmem.c
+++ b/xen/common/device-tree/static-shmem.c
@@ -838,7 +838,7 @@ void __init shm_mem_node_fill_reg_range(const struct ke=
rnel_info *kinfo,
         paddr_t size =3D mem->bank[i].size;
=20
         *nr_cells +=3D addrcells + sizecells;
-        BUG_ON(*nr_cells >=3D DT_MEM_NODE_REG_RANGE_SIZE);
+        BUG_ON(*nr_cells > DT_MEM_NODE_REG_RANGE_SIZE);
         dt_child_set_range(&cells, addrcells, sizecells, start, size);
     }
 }
--=20
2.34.1


From xen-devel-bounces@lists.xenproject.org Thu Apr 02 11:31:18 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 02 Apr 2026 11:31:18 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1271729.1559791 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1w8GGU-00035I-OR; Thu, 02 Apr 2026 11:31:10 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1271729.1559791; Thu, 02 Apr 2026 11:31: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 1w8GGU-00035B-LG; Thu, 02 Apr 2026 11:31:10 +0000
Received: by outflank-mailman (input) for mailman id 1271729;
 Thu, 02 Apr 2026 11:31:09 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <jbeulich@suse.com>) id 1w8GGT-000355-KM
 for xen-devel@lists.xenproject.org; Thu, 02 Apr 2026 11:31:09 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1w8GGT-0066G9-0g
 for xen-devel@lists.xenproject.org; Thu, 02 Apr 2026 13:31:09 +0200
Received: from [10.42.69.11] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <jbeulich@suse.com>)
 id 69ce537c-e002-0a2a0a5209dd-0a2a450bb440-2
 for <xen-devel@lists.xenproject.org>; Thu, 02 Apr 2026 13:31:08 +0200
Received: from [209.85.128.50] (helo=mail-wm1-f50.google.com)
 by tlsNG-42698a.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.0)
 (envelope-from <jbeulich@suse.com>)
 id 69ce537c-bca8-0a2a450b0019-d1558032b851-3
 for <xen-devel@lists.xenproject.org>; Thu, 02 Apr 2026 13:31:08 +0200
Received: by mail-wm1-f50.google.com with SMTP id
 5b1f17b1804b1-48891776099so6362445e9.2
 for <xen-devel@lists.xenproject.org>; Thu, 02 Apr 2026 04:31:08 -0700 (PDT)
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-43d1e4e221bsm6966582f8f.29.2026.04.02.04.31.07
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Thu, 02 Apr 2026 04:31:08 -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=google header.d=suse.com header.i="@suse.com" header.h="Content-Transfer-Encoding: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=1775129468; x=1775734268; darn=lists.xenproject.org;
        h=content-transfer-encoding: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;
        bh=UwgFaFS040PUOj+XjGLXXnLnN9/5WsK6qngXTqgJqUQ=;
        b=axnuXaegysWpWKNcGadjcpsWVAPkvfzQ9OK3JPhlZYHHmZBBAwRg6gujUqv5Wl2K0o
         WljZhmBcZhD4cKQ+4neNxTglLUPABGZvjjBufZXjYmTReUm6tmkxAUxJd2Vw3YjRd+tH
         bZDXDHTbwgL1vnBNnsq11baXTQckq+V+7K8I5KoU20TQj/HiK8iy2SaNyle/TFNsmdQs
         nFPgH2QRCjIeIUYzTXbGPtQ8EwmXHqVEnoNzAqGfwKimfNefRqVsGKKHQcuqj6dTpEbI
         fVbTPkS2gRK/KEkM8Bd2jlKHODtOIYLAa66WtcrHqjTiFrlIjtYpyEd/aAalws2rFiDu
         NyJg==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20251104; t=1775129468; x=1775734268;
        h=content-transfer-encoding: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;
        bh=UwgFaFS040PUOj+XjGLXXnLnN9/5WsK6qngXTqgJqUQ=;
        b=chQb88i71OglHJYHnx342iK4IkUXDaAn117/9JPfPz2NsbgYaY2S0Ffe1kr/5ZOWxT
         jVFC023l4N8onltNOf2yDwoK9RcBjQNc9wLdxIhZPBEAokH9SiN1ET6SIdP35IAZufkP
         8Sz8D4bao95fiJTU3Y9KDDA/3v2zBUucEv3XTCF2cMI6n00hB5DW1TlRsCIaB1rPC5RB
         lAm6MgMdNM4biPNiJZ71KzO1DFjYvCDFHQj7d67YwFiquovnW26ThKf8OgUyy9Pq3nFq
         Y3O1Czv9IVnHTNsuBw6ja+FOkUIOwt8m2NVPYkhdzB9wos5jIUzrQqsPhZVNnbtlWLgq
         M/pQ==
X-Forwarded-Encrypted: i=1; AJvYcCVmeXnSpkXxsNNlSi4Wnzw5cOB+r4nSPj7nT86cA6sWyyLYVNZ/fLx0HXzbyr1ossHGMXLwH6WeuoY=@lists.xenproject.org
X-Gm-Message-State: AOJu0YzAPvBRNVcPDPAJyCxvkaoKFV1IS9Si6u9OzcIb6Cmr0tYi6cbd
	VC+M9S+yMK85bOVKEFUVPhD6+zaF2kLRtcLYD9zpzrMKe6o0Rt2eWREdFLjRKuaCqQ==
X-Gm-Gg: ATEYQzxJppvs+0V+AC5v9vTHSZNYm0woaKxZilzbmNj2uH3y1h0v6WO/1dZtHZnycau
	XAOyymNj9zjeJD9fOE5xAJJoWHdwl9/+RGRN+QRGcjbgVehpzVv7SphgMftnixTH1dgsYhWwXGH
	MInTQJjJia0sNJvkvue5XVYII+n/Rj6OWFcOZ7m9LbQIfzEo09AJOrBw6/LASBdjQYQ16gFhphJ
	VLQWEsNv4U8dQmivF6uCYa09UE7A+TdLbL2ju/wfV7ZmcfEXZ3SXOAfJzVu6o+hcCdjy+DVf2Ii
	iBAtCE4c3i9aX1GJb/Yjufl2o6o/swWifhI2XF9LRJb4+1JLCTIxMdTuprGwJREuMwfyy+EILcN
	q+GU4GOcjDil25sVpP91jPj6TRj1e1hjNodA7+g4vWLUzo61jA/ketRrryAmgzFb1L8rzgtkkA/
	9KIe8Jx/PdB9Ud+6ublUhMksFyHL8OOggbENL7j6nX6boOATmoyCS7aMz6sLkojKZjlwsH/opje
	I3bAFYLfLEaoKE=
X-Received: by 2002:a05:600c:3f0c:b0:485:40a4:364 with SMTP id 5b1f17b1804b1-4888b79fc1dmr52135345e9.26.1775129468292;
        Thu, 02 Apr 2026 04:31:08 -0700 (PDT)
Message-ID: <1f5e262d-da1f-49a2-8e89-87fb714e51bf@suse.com>
Date: Thu, 2 Apr 2026 13:31:07 +0200
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH v1 14/27] xen/riscv: introduce per-vCPU IMSIC state
To: Oleksii Kurochko <oleksii.kurochko@gmail.com>
Cc: Romain Caritey <Romain.Caritey@microchip.com>,
 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.pau@citrix.com>,
 Stefano Stabellini <sstabellini@kernel.org>, xen-devel@lists.xenproject.org
References: <cover.1773157782.git.oleksii.kurochko@gmail.com>
 <8196fa8f000e384af697a44cb3d50ece966e82a7.1773157782.git.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: <8196fa8f000e384af697a44cb3d50ece966e82a7.1773157782.git.oleksii.kurochko@gmail.com>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 7bit
X-purgate-ID: tlsNG-42698a/1775129468-EF7422A1-62C998B7/0/0
X-purgate-type: clean
X-purgate-size: 3283

On 10.03.2026 18:08, Oleksii Kurochko wrote:
> Each vCPU interacting with the IMSIC requires state to track the
> associated guest interrupt file and its backing context.
> 
> Introduce a per-vCPU structure to hold IMSIC-related state, including
> the guest interrupt file identifier and the CPU providing the backing
> VS-file. Access to the guest file identifier is protected by a lock.
> 
> Initialize this structure during vCPU setup and store it in arch_vcpu.
> The initial state marks the VS-file as software-backed until it becomes
> associated with a physical CPU.
> 
> Add helpers to retrieve and update the guest interrupt file identifier.

Yet again a functions with no callers.

> --- a/xen/arch/riscv/imsic.c
> +++ b/xen/arch/riscv/imsic.c
> @@ -59,6 +59,29 @@ do {                            \
>      csr_clear(CSR_SIREG, v);    \
>  } while (0)
>  
> +unsigned int vcpu_guest_file_id(const struct vcpu *v)
> +{
> +    struct imsic_state *imsic_state = v->arch.imsic_state;
> +    unsigned long flags;
> +    unsigned int vsfile_id;
> +
> +    read_lock_irqsave(&imsic_state->vsfile_lock, flags);
> +    vsfile_id = imsic_state->guest_file_id;
> +    read_unlock_irqrestore(&imsic_state->vsfile_lock, flags);

What purpose does this locking have? Already ...

> +    return vsfile_id;

... here the value can be stale, if indeed there is a chance of races.
Did you perhaps mean to use ACCESS_ONCE() here and where the value is
set?

> @@ -315,6 +338,25 @@ static int imsic_parse_node(const struct dt_device_node *node,
>      return 0;
>  }
>  
> +int __init vcpu_imsic_init(struct vcpu *v)

__init for a function involved in setting up a vCPU?

> +{
> +    struct imsic_state *imsic_state;
> +
> +    /* Allocate IMSIC context */
> +    imsic_state = xvzalloc(struct imsic_state);
> +    if ( !imsic_state )
> +        return -ENOMEM;
> +
> +    v->arch.imsic_state = imsic_state;
> +
> +    /* Setup IMSIC context  */
> +    rwlock_init(&imsic_state->vsfile_lock);
> +
> +    imsic_state->guest_file_id = imsic_state->vsfile_pcpu = NR_CPUS;

Iirc Misra dislikes such double assignments, so better avoid them right away.
(As per a comment at the bottom this may need splitting anyway.)

> --- a/xen/arch/riscv/include/asm/domain.h
> +++ b/xen/arch/riscv/include/asm/domain.h
> @@ -52,6 +52,8 @@ struct arch_vcpu {
>  
>      struct vtimer vtimer;
>  
> +    struct imsic_state *imsic_state;

Just like it's "vtimer", perhaps also "vimsic_state" for both the field
and the struct tag?

> @@ -64,8 +65,20 @@ struct imsic_config {
>      spinlock_t lock;
>  };
>  
> +struct imsic_state {
> +    /* IMSIC VS-file */
> +    rwlock_t vsfile_lock;
> +    unsigned int guest_file_id;
> +    /*
> +     * (vsfile_pcpu >= 0) => h/w IMSIC VS-file
> +     * (vsfile_pcpu == NR_CPUS) => s/w IMSIC SW-file
> +     */
> +    unsigned long vsfile_pcpu;

And why unsigned long, when unsigned int will do (as about everywhere else
for CPU numbers)? That'll also shrink the structure size by 8 bytes.

As to the comment - as per vcpu_imsic_init() NR_CPUS also has some special
meaning for guest_file_id, yet there's no comment there. How do file ID and
NR_CPUS fit together anyway?

Jan


From xen-devel-bounces@lists.xenproject.org Thu Apr 02 11:57:23 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 02 Apr 2026 11:57:23 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1271755.1559800 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1w8Gff-00065U-Nk; Thu, 02 Apr 2026 11:57:11 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1271755.1559800; Thu, 02 Apr 2026 11:57: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 1w8Gff-00065N-K7; Thu, 02 Apr 2026 11:57:11 +0000
Received: by outflank-mailman (input) for mailman id 1271755;
 Thu, 02 Apr 2026 11:57:10 +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 1w8Gfd-00065H-VH
 for xen-devel@lists.xenproject.org; Thu, 02 Apr 2026 11:57:10 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1w8Gfc-00FSdj-Te
 for xen-devel@lists.xenproject.org; Thu, 02 Apr 2026 13:57:08 +0200
Received: from [10.42.69.11] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <andrew.cooper@citrix.com>)
 id 69ce598f-5cb7-0a2a0a5109dd-0a2a450bb9aa-8
 for <xen-devel@lists.xenproject.org>; Thu, 02 Apr 2026 13:57:08 +0200
Received: from [52.101.201.28]
 (helo=PH7PR06CU001.outbound.protection.outlook.com)
 by tlsNG-42698a.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.0)
 (envelope-from <andrew.cooper@citrix.com>)
 id 69ce5992-bca8-0a2a450b0019-3465c91c3563-3
 for <xen-devel@lists.xenproject.org>; Thu, 02 Apr 2026 13:57:08 +0200
Received: from CH8PR03MB8275.namprd03.prod.outlook.com (2603:10b6:610:2b9::7)
 by IA1PR03MB8261.namprd03.prod.outlook.com (2603:10b6:208:5b0::23)
 with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9769.19; Thu, 2 Apr
 2026 11:57:05 +0000
Received: from CH8PR03MB8275.namprd03.prod.outlook.com
 ([fe80::a70d:dc32:bba8:ce37]) by CH8PR03MB8275.namprd03.prod.outlook.com
 ([fe80::a70d:dc32:bba8:ce37%6]) with mapi id 15.20.9769.018; Thu, 2 Apr 2026
 11:57: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=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=NmEWLLEf31rgIxCWd1Vsg1xGywKhwuEHS75pmuj+2ROtkiSPVGjf7G3hweX6v/+qvUbf/618N5PKxTuBdOUgRWGwcBg1VYaiXlF4Yc+MoUkvUDjifcezIq2DbBNNe7TmKWssBimLfHO1NWUz62iSzvJRzK8nNU/Sm5gA2AbLp8bdiqDqWaYP+9ADC7cx7g6kE+5R6wR5oOxSkeU2KlYGoe/Y2gdrLgLTmL0C3SOUgbp8PxOFy5t5v1+VYCieV5BMpwVPASkBl5S77MLCSx57XmWH3sL5kG+xcCKSFdL/MQCDKZqG0DpbBGpb5PFhmTOI7NsKEhDw1+DL1JgndWarKQ==
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com;
 s=arcselector10001;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1;
 bh=27LXP7OPrzIQPYurdOksMR/ZzTLa2Avh0F8HbvZb1TA=;
 b=jyJRK80FxpJdVJZ1g6Z/sKX3VuZBjlDuRU9GGSNMRtJFYykTQxGBzj70QyTFZHLnzY1xFWmeQ3UkugID/OwM/VXiW7glBIe9x+zRDZ2bNMKT135Enkdo69iEmEvmyvm50mgUc9k50LRLWJ3XMWyKatIs3gYdJfDuZQpFai0P7hryArhAdIOIiuB/5+oHY+F5/6P2me+aeMeLPRIeSEnU2uQjtx5KQ2NkiuElaM91qLc8Kt3HYlV+UxXk6v4uRFP4oVTO8ggHfjUMyG6DFR26xpgYwB8CNofWexcol1Byd9pEE5pRZ/zxOK9aHKkpnQ5jKF42/0TIoaEJsOIxbcS5zQ==
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=27LXP7OPrzIQPYurdOksMR/ZzTLa2Avh0F8HbvZb1TA=;
 b=Nu2Qpwu00sKDYfcwd5ypiSZwqweJFFbyfoHDEaAVHezAQ8jruh5XkJuHWUk72fVQ19Nq5dQUohsqKNZFwk1S1rZED+zGniRRs4KM1r/n00jqs5Q+zJrnxGz2XBkK3viNFS+UzzBTofQc2L2djDISTNJsailLN5Qu6bteyhKVdtU=
Authentication-Results: dkim=none (message not signed)
 header.d=none;dmarc=none action=none header.from=citrix.com;
Message-ID: <8b754178-94c8-448f-9ec2-26b6a23565b8@citrix.com>
Date: Thu, 2 Apr 2026 13:57:00 +0200
User-Agent: Mozilla Thunderbird
Cc: Andrew Cooper <andrew.cooper3@citrix.com>,
 =?UTF-8?Q?Roger_Pau_Monn=C3=A9?= <roger.pau@citrix.com>,
 Anthony PERARD <anthony.perard@vates.tech>,
 Michal Orzel <michal.orzel@amd.com>, Julien Grall <julien@xen.org>,
 Stefano Stabellini <sstabellini@kernel.org>, xen-devel@lists.xenproject.org
Subject: Re: [PATCH v1 0/3] Lockless SMP function call and TLB flushing
To: Ross Lagerwall <ross.lagerwall@citrix.com>,
 Jan Beulich <jbeulich@suse.com>
References: <20260401163521.3603665-1-ross.lagerwall@citrix.com>
 <94b2e444-844a-4d34-9c9f-de0b9e6e23b1@suse.com>
 <17c4e7b4-297a-4bf9-9160-659723d15e48@citrix.com>
 <b0f721a9-42ba-4e71-8250-83fcfcec2313@suse.com>
 <834d60b8-fec5-42ce-a6ab-a26ea9452ed2@citrix.com>
Content-Language: en-GB
From: Andrew Cooper <andrew.cooper3@citrix.com>
In-Reply-To: <834d60b8-fec5-42ce-a6ab-a26ea9452ed2@citrix.com>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
X-ClientProxiedBy: MR1P264CA0097.FRAP264.PROD.OUTLOOK.COM
 (2603:10a6:501:50::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_|IA1PR03MB8261:EE_
X-MS-Office365-Filtering-Correlation-Id: 141e1db2-b319-4217-0a3d-08de90aef585
X-MS-Exchange-SenderADCheck: 1
X-MS-Exchange-AntiSpam-Relay: 0
X-Microsoft-Antispam:
	BCL:0;ARA:13230040|1800799024|366016|376014|22082099003|18002099003|56012099003;
X-Microsoft-Antispam-Message-Info:
	4mSIRKiwTA8zajXbzEqWB9EyogDbyrbobXFb4tAm/ZH7KoFmf6Gwd7OtrcIeQm7xbuW9K/SLs8MWBqQHcTpJvKwIwt3g3dYf/o3lOrZ+MaJJiOqDY8geBug3Yk/B+SryESWEH17M44Bo0t73b3bTHXy5Alilow2FDX/HvtFpsi8rLFSvgMFNVdnEsk6GjC8qiMcEty/0pNT1mCHX05d5GSUazr2IWCzZIljHKewjtSfep4kjbxtoEd0YmG8A/GePvf2PU+myYZbLojvdjiRIA+WChvpQ6kACDetW4lNk48fLhgzcY6ckC4560jOEPxgz5rrL6rNFQ+2wcTJoVCFRDXG/pnhUa5qyLS3/fNf8XrL4RJML2ppleqn4qa3yd478VTT0hWa/u9IiLRuWAmV4WkqOZlJiIqrnomn7ongmoU1q/I8WVSWld7JFaMwd+z8+ecyWHSC+DITLa16Xg6HG9k4Ew6pc6qdk35O7keJIMOXNqF5aVq7RgfEAp++yNFHGLKimTEAxhCo1spULMrR5PK4CwN86c/y+CauVc3ec7GaVfDcInF7i+DCbllR66vgu4ZgM6cG8CDoDnhtVxFjBm4sKj4WNgMcJpe2bABdk2CcnlVrM5pQfc6XQEpGvWiQksKUnOPgQBs5DlikMo21P246+8dWbEyZIXBc+z4fzwQyP12hZb8HFxGXuNoVzkDG1qEPuIcPGtsL2YHaQTJooJc6vOrSawqfAGOwB78NC3WQ=
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)(22082099003)(18002099003)(56012099003);DIR:OUT;SFP:1101;
X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1
X-MS-Exchange-AntiSpam-MessageData-0:
	=?utf-8?B?UjlQVWpzcVRmblZEVG9NNHA2LzQwZTlZYndIck1uQSsxQ2FKVEtWOVY0UGR2?=
 =?utf-8?B?bmVVV1NOSmRwV2JDeWo2Slp2SG0yTEROcVFCYkNVb3E5d3R2ck1heDVseU5X?=
 =?utf-8?B?aGZETm93RHB4LzZPaHBFWjk4L1c3Q09pY2FZWExmZEtRcnpwQUxXcUVWMmV1?=
 =?utf-8?B?cWtOQzZ5cU42akNxcUtWc0RnZGg0WExtSUN5d3ZqY3pkMlBXQkdkYW9aWnJk?=
 =?utf-8?B?Q2RhS2tDM1huREgvL3hFSnd2U09hZWRaVEZtb2dHQitOUG8wR09nWkk4ZTc3?=
 =?utf-8?B?dlc5UG5abWRZUjQvWnExQ1ZIOVNUbUs3Y0s3Z0RXcHhxR1NVVVV6eVFlbm5j?=
 =?utf-8?B?dkdZZ0JyOVBPTWtFOGR3di9yZEMxUy9VZ2xGd2h1UE1nK2F6SHJZMW0xNmRR?=
 =?utf-8?B?ZUtJbTBCYVdlbno4RlZkN1ZqRm45OHlacmd1Vm5tb1ZJc25tS3lOWjRNT2tj?=
 =?utf-8?B?Z2k0NmJkTkRwUnB3b2xUajNSeFhKbG9sOTBYQkhRQVI5aDlOMlBzVFlMK0dr?=
 =?utf-8?B?MFprV094ejgyMTlPdFN6ZWRlZmJYUWljSExuVm9ObnJEdk5DcTNZM1BrY3NU?=
 =?utf-8?B?MDc5TFU1dUZZaTVJbzFqeG1pNE5TVlp6WUVjMHFIS0VGZkhlUUYwdUMxY2xh?=
 =?utf-8?B?OUIybFJxZHhsaEFkZXE0d1JobXdZemo5SENXZzlxSkU4VTZaV0ZGQ20vVG5j?=
 =?utf-8?B?U2t5ZUJaL0R5RnUzNjlsaTRFYTFrOVlubkMyWHFqTHN6YzJJcUFvU1hJOW9m?=
 =?utf-8?B?MEhMVURkNHJESG4rN09jR0M1SUZ0VHRvb3AzdWZqTm9nN3l6NVJOeTlwVmhr?=
 =?utf-8?B?WHpFWDQrT1NtcS8yWnJKb0QzZy85Y1RaL1Q0MU1aMmhhSzRuazNOZXV2TnVW?=
 =?utf-8?B?a1R1VklDUWpZZDZWb2NDNWw1SEpNSTFvdU5qQmhmOWdXdU1sRzY2Z1ZiVXJ2?=
 =?utf-8?B?RERydEpXeGdDYWU5d21JVytFRWpRdHhWNll3KzFncWVBM3IwbGZnNUhHLzV4?=
 =?utf-8?B?VThuM0F4NWR5SE0vQnhDK3Z6Sk1Zbm5WRzBXOXovamJBZ1NpaW02YTRRVHRR?=
 =?utf-8?B?bm1GS0dnZTZSeWZ2Y01zQytyU2ZLYlZkSEZGbC9TSUxBNjBHLzRxL05GTVZt?=
 =?utf-8?B?MXVHT1hXaDhuK2dnTGJmS2FlSzhGNTZYSTJ4eDErWnlMSER1TmxTZjdybDVv?=
 =?utf-8?B?UlpiSHhPRytyTDIyWXQrL3JveVFOZGxSRXo5V1NmbHVkR1ZwanR5cXVFdHd5?=
 =?utf-8?B?eWZCcjZlWVRQMVdHV0xGOUtGeDBOVFQ0dFhNbWpYaDJkZWpOYlFRcm9HNjhM?=
 =?utf-8?B?Zlc0YUx5cjRhK2tBRzdUaGdQR1ZiMklJQllBbEVuSDV4NzRDRVhnSmM1K044?=
 =?utf-8?B?NllIRWZiaThTVFJBb3AxaFRKWDlaS3hKZHA2VGFsbmxNMUR4TUhVYVJoemFl?=
 =?utf-8?B?dVlYcnM1NnVEZG9US2hZOGZNSjlXbXFsQUZCbVFnWGtXb0Z1bHlacCticXVm?=
 =?utf-8?B?MWdkN2F5Nm91K2NHeXNUWWI5dDVHMXY2eUU0eFByMEhObUdJL1VFdldlT1RD?=
 =?utf-8?B?aGRYNkhzdHFzWlBYelhiZWNZOFdKYTR2dXl1bFdkclNGdUFvRzRneCs5UWs4?=
 =?utf-8?B?WUMzSTdWaklzSXgyRXFKcklOcXNOVEVSN1RHY2p5YnZ5N2ZYMHRQQXZtVU14?=
 =?utf-8?B?NGdVaW5GWGljTnFoY3hJR2htWmluRkp2QS9wNGxFelJQdk0rUWtTT2xodzNz?=
 =?utf-8?B?c0ZXdGo4aGlkVFYyZ0E0RTIzMlpVSWQrZVQrNWVMRk5CcGxFekprZG5LUmNB?=
 =?utf-8?B?T25LNldEbHJXTnBPSUFvQjkxWm1MTGtsQ0Qzc3l1QlNtUURtQ09vRktsamZa?=
 =?utf-8?B?dEdoZ1B4dWsydUN5UzRNeHo0RjNUQ3RrRktNQlkzT3daTytJV0JRSWgzNm50?=
 =?utf-8?B?VnVvQjVHQnRsWHk0c1NBT290TjFRcDBwL3cyd2tnOHZRY3JuQXZ5UDUvTWxC?=
 =?utf-8?B?UUsrRGtxc2dTUENDeStML0hsVzc5YUhnWlpOeTNyQ0lEdzlqSnErOVVFaWc4?=
 =?utf-8?B?aGVTQ2hkN2ttTGFDaGZsbDhnQW1xbGg5UlNJa2lPYVR4enJJQk1xaHpZVlBj?=
 =?utf-8?B?SXJEckpJRlM1MUVhNzNNejd0U1E4SkNXN0NzM2dxZFVlRXBpWTN5N2I5djRQ?=
 =?utf-8?B?Wm9yOCtHSkNPNkU5YjZSM1hKbnE1MW5PSVZ2Z2FLZTdaR2FMRFR2aWdFKzdl?=
 =?utf-8?B?RGRpSThaZ1NrUkc2aHdyaW1WemVCQk5pa0pIWmlQdnd5VkdKNERmVHYvTnFj?=
 =?utf-8?B?OFRwaisxRzJXWUxFRnd3ZWdoWVRUWm03VURrbnFEd0VWQmlyS2x5QT09?=
X-OriginatorOrg: citrix.com
X-MS-Exchange-CrossTenant-Network-Message-Id: 141e1db2-b319-4217-0a3d-08de90aef585
X-MS-Exchange-CrossTenant-AuthSource: CH8PR03MB8275.namprd03.prod.outlook.com
X-MS-Exchange-CrossTenant-AuthAs: Internal
X-MS-Exchange-CrossTenant-OriginalArrivalTime: 02 Apr 2026 11:57:05.2124
 (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: J6/nmex6Sk6C9nZ1V2ci1Wsyu2AoCMtuMa7occyRt/2EvPqym6zTfSXdtLugpETkd/JNeEc92V9J3Yul5IWlfM3Uku+LG6HCyjuxRJ2hqIU=
X-MS-Exchange-Transport-CrossTenantHeadersStamped: IA1PR03MB8261
X-purgate-ID: tlsNG-42698a/1775131028-EE9492A1-A4BB5A9B/0/0
X-purgate-type: clean
X-purgate-size: 4298

On 02/04/2026 12:57 pm, Ross Lagerwall wrote:
> On 4/2/26 9:49 AM, Jan Beulich wrote:
>> On 02.04.2026 10:40, Ross Lagerwall wrote:
>>> On 4/2/26 7:09 AM, Jan Beulich wrote:
>>>> On 01.04.2026 18:35, Ross Lagerwall wrote:
>>>>> We have observed that the TLB flush lock can be a point of
>>>>> contention for
>>>>> certain workloads, e.g. migrating 10 VMs off a host during a host
>>>>> evacuation.
>>>>>
>>>>> Performance numbers:
>>>>>
>>>>> I wrote a synthetic benchmark to measure the performance. The
>>>>> benchmark has one
>>>>> or more CPUs in Xen calling on_selected_cpus() with between 1 and
>>>>> 64 CPUs in
>>>>> the selected mask. The executed function simply delays for 500
>>>>> microseconds.
>>>>>
>>>>> The table below shows the % change in execution time of
>>>>> on_selected_cpus():
>>>>>
>>>>>                     1 thread   2 threads    4 threads
>>>>> 1 CPU in mask     0.02       -35.23       -51.18
>>>>> 2 CPUs in mask    0.01       -47.20       -69.27
>>>>> 4 CPUs in mask    -0.02      -42.40       -66.55
>>>>> 8 CPUs in mask    -0.03      -47.82       -68.39
>>>>> 16 CPUs in mask   0.12       -41.95       -58.26
>>>>> 32 CPUs in mask   0.02       -25.43       -39.35
>>>>> 64 CPUs in mask   0.00       -24.70       -37.83
>>>>>
>>>>> With 1 thread (i.e. no contention), there is no regression in
>>>>> execution time.
>>>>> With multiple threads, as expected there is a significant
>>>>> improvement in
>>>>> execution time.
>>>>>
>>>>> As a more practical benchmark to simulate host evacuation, I
>>>>> measured the
>>>>> memory dirtying rate across 10 VMs after enabling log dirty (on an
>>>>> AMD system,
>>>>> so without PML). The rate increased by 16% with this patch series,
>>>>> even
>>>>> after the recent deferred TLB flush changes.
>>>>
>>>> Is this a positive thing though? In the context of some related
>>>> work something
>>>> similar was mentioned iirc, accompanied by stating that this is
>>>> actually
>>>> problematic. A guest in log-dirty mode generally wants to be making
>>>> progress,
>>>> but also wants to be throttled enough to limit re-dirtying, such that
>>>> subsequent iterations (in particular the final one) of page contents
>>>> migration won't have to process overly many pages a 2nd time.
>>>
>>> In the context of a real migration, both the process copying the pages
>>> out of the guest and the guest itself will be hitting the TLB flush
>>> lock
>>> so reducing that bottleneck may increase throughput on both sides.
>>> Whether or not the overall migration time increases or decreases
>>> depends
>>> on many factors (number of migrations in parallel, the rate the
>>> guest is
>>> dirtying memory, the line speed of the NIC, whether PML is used, ...)
>>> which is why I measured a more controlled scenario to demonstrate the
>>> change.
>>>
>>> IMO throttling of a guest during a migration should be something
>>> intentional and controlled by userspace policy rather than a side
>>> effect
>>> of some internal global locks.
>>
>> I definitely agree here, but side effects going away may make it
>> necessary to
>> add such explicit throttling.
>>
>
> Explicit throttling is much more important for the already existing
> case of Intel systems with PML. With log dirty enabled, a VM on an Intel
> system can dirty memory an order of magnitude faster than an AMD system
> without PML.
>
> As an aside, for the same test an Intel machine without PML is still a
> lot faster than AMD so there is probably something to improve in this
> area for AMD machines. 

AMD have PML on the way. 
https://docs.amd.com/v/u/en-US/69208_1.00_AMD64_PML_PUB

There is a mis-step with how support for Intel's PML is done, meaning
that draining the vCPU's PML buffers is extraordinarily expensive even
when there's no action to take.  (Specifically, the remote VMCS acquire)

A better option is this:  When logdirty is active, any VMExit will drain
the PML buffer into the logdirty bitmap before processing the main exit
reason.  This way, you drain all the PML buffers by just IPI-ing the
domain dirty mask.

~Andrew


From xen-devel-bounces@lists.xenproject.org Thu Apr 02 11:58:44 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 02 Apr 2026 11:58:44 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1271763.1559808 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1w8Gh9-0006cu-1H; Thu, 02 Apr 2026 11:58:43 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1271763.1559808; Thu, 02 Apr 2026 11:58: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 1w8Gh8-0006cn-Ur; Thu, 02 Apr 2026 11:58:42 +0000
Received: by outflank-mailman (input) for mailman id 1271763;
 Thu, 02 Apr 2026 11:58:41 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <jbeulich@suse.com>) id 1w8Gh7-0006ch-BF
 for xen-devel@lists.xenproject.org; Thu, 02 Apr 2026 11:58:41 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1w8Gh6-008pgi-Nl
 for xen-devel@lists.xenproject.org; Thu, 02 Apr 2026 13:58:40 +0200
Received: from [10.42.69.1] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <jbeulich@suse.com>)
 id 69ce59e8-bab6-0a2a0a5309dd-0a2a4501982e-20
 for <xen-devel@lists.xenproject.org>; Thu, 02 Apr 2026 13:58:40 +0200
Received: from [209.85.221.50] (helo=mail-wr1-f50.google.com)
 by tlsNG-d62444.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.0)
 (envelope-from <jbeulich@suse.com>)
 id 69ce59f0-6fc9-0a2a45010019-d155dd32f097-3
 for <xen-devel@lists.xenproject.org>; Thu, 02 Apr 2026 13:58:40 +0200
Received: by mail-wr1-f50.google.com with SMTP id
 ffacd0b85a97d-43d23305225so379660f8f.2
 for <xen-devel@lists.xenproject.org>; Thu, 02 Apr 2026 04:58:40 -0700 (PDT)
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-43d1e2c50a7sm8025973f8f.15.2026.04.02.04.58.39
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Thu, 02 Apr 2026 04:58:39 -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=google header.d=suse.com header.i="@suse.com" header.h="Content-Transfer-Encoding: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=1775131120; x=1775735920; darn=lists.xenproject.org;
        h=content-transfer-encoding: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;
        bh=ph6lv5enDlnHnphb3TeTozu2i8QavBSGqx7LJLVqtag=;
        b=bHGVD+HuKsPA5f+Ws0chMDlQsOcIgSep8VuRiHTM1NBPiAR5HUhzId6KlGW74p/noR
         v0TleSsslSn9NKMXeEk1JPCQAj5j1HYX0eydQYSFgUHP3vQ1mc5LW51uA8CIqOEL9irZ
         YA+YXf+PzTjONaudBwmb7R3V+Qk+IMcyflbxRescr5+P48R8ZBFOkHEkQgvnoKo50TR1
         0J7QgWunjxULYkVihk4OLrzoh1c270m6YZrN8JmWEN6gqTYCHOttfWSOHkvW20wJHqxN
         gfV5/4NPIEYnP7JD3VYP0axLvyRDAtQ09QhTyxsiMU/AZNn/DE2FI8euWDHbrd51SEEq
         x8YA==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20251104; t=1775131120; x=1775735920;
        h=content-transfer-encoding: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;
        bh=ph6lv5enDlnHnphb3TeTozu2i8QavBSGqx7LJLVqtag=;
        b=mWU5gzgX3YiLl1sUAOxGw6EGNo3oPJpJrbLwBR2g9Uo4Oneb2RpDQ8gnw/CGUpEiC9
         w89l/p94FmBFMa9OIlmA+yFaxFpH8UL6YhBIKcN4WcIZekpPPpMkLSKhwAxxcMw9Q7md
         6GyvI0MjYdtoeAj5HE1nF9UBe21LlLGcuoOpDenXSUiyVak+D0x8GDCNiovMzczItYA1
         SuS9h8qIJdRBeAOn9+l5mQi6Hggx8xqc4jF3Lw3meG0qipWexzlRh5+84wg5QqrMxktS
         GZqpQZpUyIN4DjguUtgZZ3CtulI7cj7rag+Xwngu53RFpzVPRfEMPHbe2CbiMsh//dgU
         MlEA==
X-Forwarded-Encrypted: i=1; AJvYcCUbij5OuwPZkEJ2aHfSheCS9sh+AhDaxUGctiTzFoRtWguCofmNd2zN//AGxPedq5/IieDBr6Ql2+0=@lists.xenproject.org
X-Gm-Message-State: AOJu0YxMUZlO0AVjzCF/6TjVm+A6tri0zkzm9ERLD29oOtfOV9gOVtcL
	vus7wu/MHw32fBLS8hOU4cScyKonpj96IUbCgKEu6gEpsavGkGrAAaYMxqugKpOJXQ==
X-Gm-Gg: AeBDievpFjs28u9jbdZBSeE4fzqHweSI6QPa7NMxn22oQnMP10ULVhTgSfVZCmc+iwa
	EtvG+fVFddr5S+Zgz4DqYDLZgpKLv9CvTKqlsNq4q0E0YVuX61UxZPnc5zzq/IqCP/FwFCAmuUk
	utERx9NyICQ/I4djU50w8TNy74C8qQFZgO9XuJOtgF5RmgTykoGhnin8eP6RYDsnnlEDT1zRPUI
	QrEb/6SyIDlcH770LKhxHv/9XN/l/Q7Jr5fnla8dQPBAWN5jB046oDrsV6FBGsyNgObNGR3mxMU
	DkJzghmpkZ1v/GV76/US65iQykU+Mlt4nLmqy4gtC5AaB6NJewi6F3/h2NdZPQ14Y/kEWSYu3Xy
	hxu2xSoVVvHDq0j2tegt9SCAcA+AhwuLZQ2h9FJzsfwcXungqGQOA77P8Iv/4ornzigxait9JlP
	x90YI/Q25lBd59rCLMy6NH4qqYS0JuaSOh15fgxx/30BJyR6UdvvXZ7kHxHJsylldSfTuml10yR
	OoVukWeIuMi27w=
X-Received: by 2002:a05:6000:18a8:b0:43c:f90b:5663 with SMTP id ffacd0b85a97d-43d150d7563mr13187395f8f.37.1775131119896;
        Thu, 02 Apr 2026 04:58:39 -0700 (PDT)
Message-ID: <44cb3124-8972-4a0c-b785-64f2022f178b@suse.com>
Date: Thu, 2 Apr 2026 13:58:38 +0200
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH v1 15/27] xen/riscv: add very early virtual APLIC (vAPLIC)
 initialization support
To: Oleksii Kurochko <oleksii.kurochko@gmail.com>
Cc: Romain Caritey <Romain.Caritey@microchip.com>,
 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.pau@citrix.com>,
 Stefano Stabellini <sstabellini@kernel.org>, xen-devel@lists.xenproject.org
References: <cover.1773157782.git.oleksii.kurochko@gmail.com>
 <e8bcf5618a19fb44d4391410f2f67ffd98a96647.1773157782.git.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: <e8bcf5618a19fb44d4391410f2f67ffd98a96647.1773157782.git.oleksii.kurochko@gmail.com>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 7bit
X-purgate-ID: tlsNG-d62444/1775131120-16AF5185-DDCAC4BE/0/0
X-purgate-type: clean
X-purgate-size: 4906

On 10.03.2026 18:08, Oleksii Kurochko wrote:
> @@ -47,6 +48,19 @@ struct intc_hw_operations {
>                              const struct dt_device_node *intc);
>  };
>  
> +struct vintc_ops {
> +    /* Initialize some vINTC-related stuff for a vCPU */
> +    int (*vcpu_init)(struct vcpu *vcpu);

v as the parameter name, to fit our convention? (Same below for the other
hook.)

> +    /* Check if a register is virtual interrupt controller MMIO */
> +    int (*is_access)(const struct vcpu *vcpu, const unsigned long addr);

What does "register" in the comment refer to. All I see is an address.
(The const will also want dropping from the parameter in this declaration.)

> +};
> +
> +struct vintc {
> +    const struct intc_info *info;

Isn't this referencing a physical INTC's structure? Why would the virtual
one's properties have to match that of the physical one?

> --- /dev/null
> +++ b/xen/arch/riscv/include/asm/vaplic.h
> @@ -0,0 +1,36 @@
> +/* SPDX-License-Identifier: MIT */
> +/*
> + * xen/arch/riscv/vaplic.c
> + *
> + * Virtual RISC-V Advanced Platform-Level Interrupt Controller support
> + *
> + * Copyright (c) Microchip.
> + */
> +
> +#ifndef ASM__RISCV__VAPLIC_H
> +#define ASM__RISCV__VAPLIC_H
> +
> +#include <xen/kernel.h>
> +#include <xen/types.h>
> +
> +#include <asm/intc.h>
> +
> +struct domain;
> +
> +#define to_vaplic(v) container_of(v, struct vaplic, base)

I'm confused here, maybe first of all because of the use of v. v is our
common identified for struct vcpu * instances. Using it in a macro like
this one suggests a struct vcpu * needs passing into the macro. Yet from
the two uses of the macro that doesn't look to be the case.

Perhaps best to have a struct domain * passed into here?

> +struct vaplic_regs {
> +    uint32_t domaincfg;
> +    uint32_t smsiaddrcfg;
> +    uint32_t smsiaddrcfgh;

The latter two aren't used, and generally I'd expect a h-suffixed field to
exist only for RV32. (The un-suffixed field then would need to be unsigned
long, of course.)

> +};
> +
> +struct vaplic {
> +    struct vintc base;

How does "base" fit with the type of the field?

> --- a/xen/arch/riscv/intc.c
> +++ b/xen/arch/riscv/intc.c
> @@ -6,6 +6,7 @@
>  #include <xen/init.h>
>  #include <xen/irq.h>
>  #include <xen/lib.h>
> +#include <xen/sched.h>
>  #include <xen/spinlock.h>

Why is this change needed all of the sudden?

> --- /dev/null
> +++ b/xen/arch/riscv/vaplic.c
> @@ -0,0 +1,74 @@
> +/* SPDX-License-Identifier: MIT */
> +/*
> + * xen/arch/riscv/vaplic.c
> + *
> + * Virtual RISC-V Advanced Platform-Level Interrupt Controller support
> + *
> + * Copyright (c) Microchip.
> + * Copyright (c) Vates
> + */
> +
> +#include <xen/errno.h>
> +#include <xen/sched.h>
> +#include <xen/xvmalloc.h>
> +
> +#include <asm/aia.h>
> +#include <asm/imsic.h>
> +#include <asm/intc.h>
> +#include <asm/vaplic.h>
> +
> +#include "aplic-priv.h"
> +
> +static int __init cf_check vcpu_vaplic_init(struct vcpu *v)
> +{
> +    int rc = 0;
> +
> +    rc = vcpu_imsic_init(v);
> +    if ( rc )
> +        return rc;
> +
> +    imsic_set_guest_file_id(v, vgein_assign(v));

And vgein_assign() can't fail? (Rhetorical question - of course it can. That
function shouldn't assert that it can fine a valid ID.)

But then - aren't you limiting the number of vCPU-s a host can handle by the
number vgein IDs?

> +    return rc;
> +}
> +
> +static const struct vintc_ops vaplic_ops = {
> +    .vcpu_init = vcpu_vaplic_init,
> +};
> +
> +static struct vintc * __init vaplic_alloc(void)
> +{
> +    struct vaplic *v = NULL;

Onve again - why the initializer? In fact, ...

> +    v = xvzalloc(struct vaplic);

... this could be the initializer.

> +    if ( !v )
> +        return NULL;
> +
> +    return &v->base;
> +}

If you returned and ...

> +int __init domain_vaplic_init(struct domain *d)
> +{
> +    int ret = 0;
> +
> +    d->arch.vintc = vaplic_alloc();

... stored struct vaplic *, the slightly odd to_vaplic() macro wouldn't
be needed.

> +    if ( !d->arch.vintc )
> +    {
> +        ret = -ENOMEM;
> +        goto fail;

Nit: goto when simply return could be used.

> +    }
> +
> +    d->arch.vintc->ops = &vaplic_ops;

Are other kinds of ops structures going to appear? If not, why the extra
indirection?

> +    to_vaplic(d->arch.vintc)->regs.domaincfg =
> +        APLIC_DOMAINCFG_IE | APLIC_DOMAINCFG_DM;
> +
> + fail:
> +    return ret;
> +}
> +
> +void __init domain_vaplic_deinit(struct domain *d)
> +{
> +    struct vaplic *vaplic = to_vaplic(d->arch.vintc);
> +
> +    XVFREE(vaplic);

If this cleared the struct domain field, then yes. But the way it is, just
xvfree() will suffice. (Re-work following other remarks may want it to
become XVFREE() again, though.)

Jan



From xen-devel-bounces@lists.xenproject.org Thu Apr 02 12:15:38 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 02 Apr 2026 12:15:38 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1271789.1559820 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1w8GxP-00014j-I9; Thu, 02 Apr 2026 12:15:31 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1271789.1559820; Thu, 02 Apr 2026 12:15: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 1w8GxP-00014c-FN; Thu, 02 Apr 2026 12:15:31 +0000
Received: by outflank-mailman (input) for mailman id 1271789;
 Thu, 02 Apr 2026 12:15:31 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <roger.pau@citrix.com>) id 1w8GxO-00014W-TG
 for xen-devel@lists.xenproject.org; Thu, 02 Apr 2026 12:15:31 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1w8GxO-00F3C3-9T
 for xen-devel@lists.xenproject.org; Thu, 02 Apr 2026 14:15:30 +0200
Received: from [10.42.69.11] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <roger.pau@citrix.com>)
 id 69ce5ddb-bab6-0a2a0a5309dd-0a2a450b8546-26
 for <xen-devel@lists.xenproject.org>; Thu, 02 Apr 2026 14:15:30 +0200
Received: from [52.101.193.56]
 (helo=CH1PR05CU001.outbound.protection.outlook.com)
 by tlsNG-42698a.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.0)
 (envelope-from <roger.pau@citrix.com>)
 id 69ce5de0-bca8-0a2a450b0019-3465c138bd2b-3
 for <xen-devel@lists.xenproject.org>; Thu, 02 Apr 2026 14:15:30 +0200
Received: from CH7PR03MB7860.namprd03.prod.outlook.com (2603:10b6:610:24e::14)
 by CH2PR03MB5157.namprd03.prod.outlook.com (2603:10b6:610:9b::18)
 with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9769.18; Thu, 2 Apr
 2026 12:15:24 +0000
Received: from CH7PR03MB7860.namprd03.prod.outlook.com
 ([fe80::f5ba:35df:1c9f:b343]) by CH7PR03MB7860.namprd03.prod.outlook.com
 ([fe80::f5ba:35df:1c9f:b343%4]) with mapi id 15.20.9769.014; Thu, 2 Apr 2026
 12:15: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=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=IRe/2umaq4cy/0gVEXELik8ipLp3RL/fEoteoYi18NWQH63RpXaXMax8s5NTlnDnJpd8JZCOeuPU+gjbsFzS8raUZbkhp1Y2nhg+UF6XeK2OiPlNZIrFPmGN6x2POLHr5HMoG3aOkjtFfMIcOwzzqWZp6Ouy89ONsAodJrawzauajepYSea+FB/B/3iAX/7X4kFLDuwuwnIPpDqh1CRzx5PCgq3ReAR0g4qq6gpMVTo8bOfCa9mfheYkU32K9B3s98BT3mTYqdENVupHztJ8xTPtJe09Dk3msxWUxzrZQXYV2uVyAI7gzxNtI+RRNuMzysdSAelPw25P8YnxvVmTYA==
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com;
 s=arcselector10001;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1;
 bh=Wc8pq1IrTylV6Ip5xEgF/nhMeWw+c6NQxoQbG71vexY=;
 b=uhd6tV5uEFUeBCKr3BOOb9Gbhg9uA+7DwoT4jJOvFCW1vlsyl9vKhgiaLg+KknIbpEwYkYcDYs3gh1DCCPhyBl/4zJYZvo4QBEvmc2xW2hVKJKSCyzenbWhRMRwd5RjOdrgE2grg5BjA4eE19xHl6H6FRnB7ZQvnf+QaykP8IcmJrlN7b4PnPhQFsjZljG46RY1vQuu4ji5Mdqqa5v//5c4ARpJbKEoI8s5yhPUYfYplq7DUkmEfmlqvnXHVZ8S1K9s+jc1mJKgxPdOYIo0unzhe/3+jE414akwQaDyZVv69uocOpjN9l1Hv51kJyupgG7NCCsWmEYo/pkvZKnD4lA==
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=Wc8pq1IrTylV6Ip5xEgF/nhMeWw+c6NQxoQbG71vexY=;
 b=R//MpD5pV7ZsjwC82ebVsqLG/GuIN1DxKnbZrk9KhYTQ2tsVrzW2EVa8tY1Oz8w8r2x7FI+GwBtetdac+pVXrZ8t0H7ha6Tn0Zy6g1F4NbFf4M4Iyb43XLpLo3iAEy0343D/CuN0zvZT5EaMERBAKFrE2KhmE6UxmNGbeVXSbO0=
Authentication-Results: dkim=none (message not signed)
 header.d=none;dmarc=none action=none header.from=citrix.com;
Date: Thu, 2 Apr 2026 14:15:19 +0200
From: Roger Pau =?utf-8?B?TW9ubsOp?= <roger.pau@citrix.com>
To: Jan Beulich <jbeulich@suse.com>
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>,
	Alistair Francis <alistair.francis@wdc.com>,
	Connor Davis <connojdavis@gmail.com>,
	Oleksii Kurochko <oleksii.kurochko@gmail.com>,
	Bertrand Marquis <bertrand.marquis@arm.com>,
	Volodymyr Babchuk <volodymyr_babchuk@epam.com>,
	Timothy Pearson <tpearson@raptorengineering.com>
Subject: Re: [PATCH 1/2] make ioremap_attr() common
Message-ID: <ac5d1zBaSQk7f0nE@wifi-campus-l-10-3-197-236.u-ga.fr>
References: <924f3ef2-7883-4322-a921-edc814c96719@suse.com>
 <81e4f7e0-df57-4a5b-b16d-fe668682d94c@suse.com>
Content-Type: text/plain; charset=utf-8
Content-Disposition: inline
In-Reply-To: <81e4f7e0-df57-4a5b-b16d-fe668682d94c@suse.com>
X-ClientProxiedBy: MR1P264CA0137.FRAP264.PROD.OUTLOOK.COM
 (2603:10a6:501:51::21) To CH7PR03MB7860.namprd03.prod.outlook.com
 (2603:10b6:610:24e::14)
MIME-Version: 1.0
X-MS-PublicTrafficType: Email
X-MS-TrafficTypeDiagnostic: CH7PR03MB7860:EE_|CH2PR03MB5157:EE_
X-MS-Office365-Filtering-Correlation-Id: 8117fb39-bfa8-4f78-6592-08de90b184e2
X-MS-Exchange-SenderADCheck: 1
X-MS-Exchange-AntiSpam-Relay: 0
X-Microsoft-Antispam:
	BCL:0;ARA:13230040|7416014|376014|366016|1800799024|56012099003|18002099003|22082099003;
X-Microsoft-Antispam-Message-Info:
	D2On05KBdP/9tUhWEHi5Wlx3Veual6YlpwzPqCsx7hdml1PurbGTQWL9CfGAZaHsSU2BYrOglpdDKXS/uu+5sQoowMM8wZ92xDF8Hs6LLYVtT+7+fzDmYCdmmt/eaIl4Jr7yANjCoxrV6KaikgIyAUv5NhXA7HyZlF2STzX9qZ9VppaHtEKZF3Y+lhEGWwh8Cy0EFejUFflgtO6/QFCdJKsskNgdbfh6XftZAYWUH6nY/PwyJt7xJ+gXaiGnju1WUI1dBCx+PUfpLCcLl3AAzv54fI/c7duIoxFBNhros4fgXJCEjjtAjdc+L/oC4LINYRM1cyopeutI1/RRoTT6gvyo+J4FBzVOymAppcHgCgXmDrmooS4CTmUb+Z/mDu55xYGVsQEqPwWKMqSaUI75E03uBdq7G0zdsgI17HJ8h++5cAtbCBM4KRUtMU59ye/dVUV4XbC1JRcnSBWSQkN//ILbjt1zdaJn9G8aFCRdQHaNf61Pd1SXTDlv5V2j4bElDp245Wn5V9oGTFYGQtvkF2b2UeMe/eLbjbpLzdCD/FHM1HqS1kGEuxNMT3TdXpUxjaj3whtXRj6Yhfxol/BbmyJK8YOgkUIa1JbWHaU6ikfU1j4Zhec1PCykXmvCT19oxlzwxFg/RPFUSr4ck0x8D1oFkUGorBR1xV/whzzJWvUeNwJil6LQyyjynxl2Q3kJobsOSZAhqn9soCrmC5gJ1EAcuMr+KZM9XCEtJ85b620=
X-Forefront-Antispam-Report:
	CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:CH7PR03MB7860.namprd03.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(7416014)(376014)(366016)(1800799024)(56012099003)(18002099003)(22082099003);DIR:OUT;SFP:1101;
X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1
X-MS-Exchange-AntiSpam-MessageData-0:
	=?utf-8?B?dDRFRVRTdTZFNkp6QmpGMW9rSlVIbE9BMFd6S0JRWFpxbndpQ05CNWRYRUp5?=
 =?utf-8?B?T0ZpeWFYMjVTRnNOMkoxbHhISmYyakdVdk9WbkNYSFd5N3U1c1RLRDRzTENT?=
 =?utf-8?B?RTBUbTVOVVNFTTdCK1RtbGFoak1CbkZNeXVZMGdYOGxVSWhHa2lHei8vVWRC?=
 =?utf-8?B?Y0lsNXo5dWxuM1JmTW90UlVSbFR0U05XSGhvaEhzVHB4Nndod0JHRURwTEtG?=
 =?utf-8?B?b0FsTWVTbExmek5DOUE4VjErSWdWSE1RODJpRCs5L3hIdDUwUE5Od2dQbEUz?=
 =?utf-8?B?SDMvblhoeXBSUkI4Z254RUFvS1RhaHJZN0I2T0htekZrMjExRTJxVW1KRGZP?=
 =?utf-8?B?NjErMjAvNmNEK2d2Qzk2OEgvM0YyRE5oWGhiR2M0Q2IxaHZwTndscWVTYTdH?=
 =?utf-8?B?RzlMYXJzYiszV2NxbkxYcVZjR1E4WUpIU1M0RzgzSmo0VEt5Y0ZLRlpqZDFN?=
 =?utf-8?B?aWhEcFlxZ2xhUEJMemN6ZkJXK2VWaUFXeHRoRHB5Ni9oTStNVEI2TnRPTTBo?=
 =?utf-8?B?cVZNY0RwTnRlV0IyWWllNlFyYnRkZEZOZ01SVEpySDdQZzhpLzhESnk4aDl3?=
 =?utf-8?B?Ym54V3lKNjZuU1JEbTRzcC9iRU9qdGdld3dnUVFDUTlNc1AxNGM5eE5JcC83?=
 =?utf-8?B?ZDlMM3RHeG5HUS8wTU5BQW1uR05Xd2VnQ0xsWEk4OXNsYjZMM0JYcW1FREpK?=
 =?utf-8?B?cERoMEtGKzQ5bHQ5S2VJZUlLbGwzV1BDYVBmSUJnaVJ3dXJ6SEVyVlVlQ1o5?=
 =?utf-8?B?dnEyNW1IQ0lCM004K0F4ZXRHZEw1NE5RRHdYTXgzVzdORG1ycWdnRzFPOFFS?=
 =?utf-8?B?bGJUVnJZbkpxNUVuaXRTcVA2UmJXdzZ1N29vUlpKQ2VHaitaUTlMRHRaV0di?=
 =?utf-8?B?dmNYNHF3Tm1md1BUc3ZaU3Y4Q1NuMHUwSEpQdDl2ZjU3ZmR1dldEUHlwOUtF?=
 =?utf-8?B?Wlhuampzc0x5NEZWV1FtSG9iWTc4cHhQcEZHTmtaTlR4SWlpNy9KR3duOWxC?=
 =?utf-8?B?VUdlWWkwdEZhOUdrTlVjWjl2RitqUkdDL2lZRC9SZFBnTjk4TEVlUHNsYW5T?=
 =?utf-8?B?TGVCSE5qbklQSEN2UFBUc095c285Z05za0VjUllITDd2d2czNDBXNzZKZVZG?=
 =?utf-8?B?NE1saUlJeFg3eWE3V05HOWtZQUorQWh3cEJOUlJ0Q3Y1MTByczV1ekpFWDJ5?=
 =?utf-8?B?bmttejJ1ZkZFQTdzOFdpdWw1U08yak5zTnh2THNoVG9yRTN3MHd4Q0hNQ2du?=
 =?utf-8?B?UHFJKytXVHpueUdlZWtOS1luS295d2NvTHQ4cFVKQjhiOVNnbG13RUo2WE5R?=
 =?utf-8?B?Yy9zZlArUDBlNmtmWlRlbk5qMFRZdVNqMFp4WERsSnd2UE1DN3g2dWhBR3Ar?=
 =?utf-8?B?bGJ2VG96blBybFg4dnVITmxBYW44L0dRakpzZ3hNZ3ppNGR6dklJd3R2Ym1Y?=
 =?utf-8?B?ODN1NkxTbFJnSEVrYVFhTnV3THlBTzVaS2RrN3FadXQvUVV6M1FVaGxKbzAw?=
 =?utf-8?B?b2dxSDFNZ0pNUG5xR0I0WThQU1dBRjYwNkx5WHNIbDNrLys5QU5MOWFmUjd0?=
 =?utf-8?B?L0RvalQ2SVQ0YzllMFZydndGWURoaUt2RVhrb2s3dkgvMTgwV2gyV2pKU3ZJ?=
 =?utf-8?B?a1VFT1R3cHpCMFR3WUowc2hSYlRsTlEwRGtJa1NLdHgwbXJCMGduTTdhWmcr?=
 =?utf-8?B?bnA1S2xzWWtSTTFJNE1wTnVCTFYyblVVUmg4SzBmbzhXSU1YOHFBbHA5cGVR?=
 =?utf-8?B?UlZqT2lzQ0Mrekl2ZExEaDd6a09vVExlc0hPMUtqZStUTGlONi9mK2VDdWVH?=
 =?utf-8?B?Q0MwMVpqa3E1V1pPZG1wYjVCTkZMdU1VSTNIR0pKclowY2d6MEltYzA3OWtL?=
 =?utf-8?B?NTNJWnZHVk81UVdJYlZNVk1QajRBTDNROURLc3hZRHFkQWNUSno3N2VsMHR1?=
 =?utf-8?B?bENXa1U5dWZpT05vNkpHaXVuR3o3UGtoYnRDR3QzQWFLQ0hWd0RXNFlnTzNH?=
 =?utf-8?B?M3d2VG00UWJhWXE5djBJdEkreXVydHczaUpBa1ljYVVGQzhhd1JwaHBXM2VN?=
 =?utf-8?B?TUlUb2ptZnhRWGRKN3g5S2tHTzZ6V3YrYkhjaHpQV1o3WnQrN0NIdnBBNGlo?=
 =?utf-8?B?SWMzaXUrUlF3T3FhRXdPdHpkeG56VTZBcERjMUp3YWtRTnFNbkFzQ25vNTJS?=
 =?utf-8?B?MHJIaXE3czhDeVJDWHUrK0RnaWdjWEJjenBmN2lLNnpaVnpBQ2djbDRwblI0?=
 =?utf-8?B?UTNjM3E4Y2FNVUxNdXFUTk5DOVIvTTBXNVRtNm5jMnZkQmovMjA3amxwVS92?=
 =?utf-8?B?ZDNDYjFmZWVLYUU1OG9RMnlYekYzdG1CMG1ZMkM3dWJhRkNEVXlKdz09?=
X-OriginatorOrg: citrix.com
X-MS-Exchange-CrossTenant-Network-Message-Id: 8117fb39-bfa8-4f78-6592-08de90b184e2
X-MS-Exchange-CrossTenant-AuthSource: CH7PR03MB7860.namprd03.prod.outlook.com
X-MS-Exchange-CrossTenant-AuthAs: Internal
X-MS-Exchange-CrossTenant-OriginalArrivalTime: 02 Apr 2026 12:15:24.8402
 (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: lHunHXyGMjar8aifkIo+malhdAAAE9ssHvT0hbEIQNvGXOr3u5icZYKVpLgvxllbiJJostVE9LR+td8EKQmgGA==
X-MS-Exchange-Transport-CrossTenantHeadersStamped: CH2PR03MB5157
X-purgate-ID: tlsNG-42698a/1775132130-EC75A2A1-C158F601/0/0
X-purgate-type: clean
X-purgate-size: 3559

On Thu, Feb 19, 2026 at 04:51:54PM +0100, Jan Beulich wrote:
> --- a/xen/arch/x86/mm.c
> +++ b/xen/arch/x86/mm.c
> @@ -6166,41 +6166,15 @@ void *__init arch_vmap_virt_end(void)
>      return fix_to_virt(__end_of_fixed_addresses);
>  }
>  
> -void __iomem *ioremap(paddr_t pa, size_t len)
> +void __iomem *x86_ioremap_attr(paddr_t pa, size_t len, pte_attr_t attr)
>  {
> -    mfn_t mfn = _mfn(PFN_DOWN(pa));
> -    void *va;
> -
> -    WARN_ON(page_is_ram_type(mfn_x(mfn), RAM_TYPE_CONVENTIONAL));
> +    WARN_ON(page_is_ram_type(PFN_DOWN(pa), RAM_TYPE_CONVENTIONAL));
>  
>      /* The low first Mb is always mapped. */
> -    if ( !((pa + len - 1) >> 20) )
> -        va = __va(pa);
> -    else
> -    {
> -        unsigned int offs = pa & (PAGE_SIZE - 1);
> -        unsigned int nr = PFN_UP(offs + len);
> -
> -        va = __vmap(&mfn, nr, 1, 1, PAGE_HYPERVISOR_UCMINUS, VMAP_DEFAULT);
> -        if ( va )
> -            va += offs;
> -    }
> -
> -    return (void __force __iomem *)va;
> -}
> -
> -void __iomem *__init ioremap_wc(paddr_t pa, size_t len)
> -{
> -    mfn_t mfn = _mfn(PFN_DOWN(pa));
> -    unsigned int offs = pa & (PAGE_SIZE - 1);
> -    unsigned int nr = PFN_UP(offs + len);
> -    void *va;
> -
> -    WARN_ON(page_is_ram_type(mfn_x(mfn), RAM_TYPE_CONVENTIONAL));
> -
> -    va = __vmap(&mfn, nr, 1, 1, PAGE_HYPERVISOR_WC, VMAP_DEFAULT);
> +    if ( !((pa + len - 1) >> 20) && attr == PAGE_HYPERVISOR_UCMINUS )
> +        return (void __force __iomem *)__va(pa);

Sorry, I'm possibly a bit lost: I see that on the bootstrap
page-tables we map the VGA hole (0xa0000-0xc0000) as UC-, but I'm not
seeing this being done to the directmap?

>  
> -    return (void __force __iomem *)(va ? va + offs : NULL);
> +    return NULL;
>  }
>  
>  int create_perdomain_mapping(struct domain *d, unsigned long va,
> --- a/xen/common/Makefile
> +++ b/xen/common/Makefile
> @@ -19,6 +19,7 @@ obj-$(CONFIG_GRANT_TABLE) += grant_table
>  obj-y += guestcopy.o
>  obj-y += gzip/
>  obj-$(CONFIG_HYPFS) += hypfs.o
> +obj-y += ioremap.o
>  obj-$(CONFIG_IOREQ_SERVER) += ioreq.o
>  obj-y += irq.o
>  obj-y += kernel.o
> --- /dev/null
> +++ b/xen/common/ioremap.c
> @@ -0,0 +1,42 @@
> +/* SPDX-License-Identifier: GPL-2.0-only */
> +
> +#include <xen/mm.h>
> +#include <xen/pfn.h>
> +#include <xen/vmap.h>
> +
> +#include <asm/io.h>
> +
> +void __iomem *ioremap_attr(paddr_t pa, size_t len, pte_attr_t attr)
> +{
> +    void __iomem *ptr = NULL;
> +    unsigned int offs = PAGE_OFFSET(pa);
> +
> +#ifdef arch_ioremap_attr
> +    ptr = arch_ioremap_attr(pa, len, attr);
> +    if ( PAGE_OFFSET(ptr) )
> +        return ptr;

IMO it's a bit confusing to deal with the offset addition detached
form here, I would rather do:

if ( ptr != NULL )
{
    ASSERT(PAGE_OFFSET(ptr) == offs);
    return PAGE_OFFSET(ptr) ? ptr : ptr + off;
}

And get rid of the !ptr check in the if below.  So that when
arch_ioremap_attr() succeeds it's all dealt with in the #ifdef
protected block.

> +#endif
> +
> +    if ( IS_ENABLED(CONFIG_HAS_VMAP) && !ptr )
> +    {
> +        mfn_t mfn = _mfn(PFN_DOWN(pa));
> +
> +        ptr = (void __force __iomem *)__vmap(&mfn, PFN_UP(offs + len), 1, 1,
> +                                             attr, VMAP_DEFAULT);
> +    }
> +
> +    if ( !ptr )
> +        return NULL;
> +
> +    return ptr + offs;

I would also join the NULL checking using a ternary operator:

return ptr ? ptr + off : NULL;

Thanks, Roger.


From xen-devel-bounces@lists.xenproject.org Thu Apr 02 12:22:11 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 02 Apr 2026 12:22:11 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1271802.1559829 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1w8H3n-0002fy-6L; Thu, 02 Apr 2026 12:22:07 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1271802.1559829; Thu, 02 Apr 2026 12:22: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 1w8H3n-0002fr-3g; Thu, 02 Apr 2026 12:22:07 +0000
Received: by outflank-mailman (input) for mailman id 1271802;
 Thu, 02 Apr 2026 12:22:06 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <jbeulich@suse.com>) id 1w8H3m-0002fk-7t
 for xen-devel@lists.xenproject.org; Thu, 02 Apr 2026 12:22:06 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1w8H3l-004yf9-EW
 for xen-devel@lists.xenproject.org; Thu, 02 Apr 2026 14:22:05 +0200
Received: from [10.42.69.3] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <jbeulich@suse.com>)
 id 69ce5f6c-5cb7-0a2a0a5109dd-0a2a4503cde2-6
 for <xen-devel@lists.xenproject.org>; Thu, 02 Apr 2026 14:22:05 +0200
Received: from [209.85.128.53] (helo=mail-wm1-f53.google.com)
 by tlsNG-33051d.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.0)
 (envelope-from <jbeulich@suse.com>)
 id 69ce5f6c-02b3-0a2a45030019-d1558035b812-3
 for <xen-devel@lists.xenproject.org>; Thu, 02 Apr 2026 14:22:05 +0200
Received: by mail-wm1-f53.google.com with SMTP id
 5b1f17b1804b1-48891776099so7015075e9.2
 for <xen-devel@lists.xenproject.org>; Thu, 02 Apr 2026 05:22:05 -0700 (PDT)
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-4887e80a5e2sm186986815e9.1.2026.04.02.05.22.03
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Thu, 02 Apr 2026 05:22:03 -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=google header.d=suse.com header.i="@suse.com" header.h="Content-Transfer-Encoding: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=1775132524; x=1775737324; darn=lists.xenproject.org;
        h=content-transfer-encoding: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;
        bh=b1vGARey5N3YvRifc1YXop3C+THVXVRbO3vO8dDWXhg=;
        b=HokUVfdU8gamttq4qju5al1Fx1oxvTq5AWrBO2uBGyGRPQJwHhg98uteVRc8bCB19Y
         92MNNQUVSCKn972wRTgP5xA1vYhEiXqp+Vqi96bmM1DqNAy6DUXw+pNfcZR7hryHrZw3
         Ppm4uGnsGQy5v0lvQ66+EaWmIKok3e9Z8cJ6l1TYgLW2SOYJNbkMXOWYzBidT36Ct53C
         vq3+h+jcYmpUCDIbnWHoNE+gNp53CtrrXo7SWNAuzIH7TxzJJJOtazopiw50rIMI6055
         L5MGE9LW6LII/ASmDDzxkyFyhd8dWWkxqVv63nGD0yN4rI1LyCxaYmXVeBPwGHlsVWyA
         y4Fw==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20251104; t=1775132524; x=1775737324;
        h=content-transfer-encoding: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;
        bh=b1vGARey5N3YvRifc1YXop3C+THVXVRbO3vO8dDWXhg=;
        b=K42LNAcmwblQbgcePebq3R+ThBk3ZQSXI4N+kbQbf9tkAe/3prpzNuRjfa5tq3FAZY
         dpWMOfKT/PHEi9fTuVPLMq0R5pbDJ33/4jeuRgnxlOLTksTNqaLQ6iPYk7I/7YzO16Rj
         5n4ERDe32Cd+T4gibnplpbqA8euqS6aZAgxM3aPeUPNNlQQQcrlSgv7B64QY6De4l+za
         VISAkhEM+Gh+3nTpX8M2mFkil/DhPbL5VDBU2JVp95OJUQV5b3E4rddTxMYsbC2axZAM
         h16wi7l5IgpJnyTYD/sVmq/SsQv/EFAvCEEtKMQHRHXWFLxma7khLpTN236deVQs/4JZ
         1sdA==
X-Forwarded-Encrypted: i=1; AJvYcCWVl2VFmtoVxzWxDTgpBcUzrEulJ3QbqtBXZlz6CO+NZLvh3o8lnpVk358Hps1bNHmXSAAou+fdgOg=@lists.xenproject.org
X-Gm-Message-State: AOJu0YxjMMJ0omHy9g2rEVW0PW+u+Vr/LOtn0FKuRJtKySyZLUOuBbyf
	XVF79NGuRZmDjvGdvmFQd0qtDO8yOUkbPxbXqEuINpkVtOUOQVtOrEYejqC5odFdhQ==
X-Gm-Gg: ATEYQzyJrUtCoF4ttAQAOzweoKeZf3fQ9H7jG++EbLRE2xhn7Chz7hOtfg+vFFlawpt
	2zamHusnQKHsq1qhue99r83FyBaFQDKch8yR3pVx8DSEnOglzk+7sLvcih4qerUofHUA1KjRJCz
	AO9KZPv/efHIxIRw4Hip9CRarSdMn0GJHHsIGS+rPeDACAfxdO+r1Ej1cbqXRHzZ7xURy/Tw0/5
	fu6zPHRH9roH3P0TcSU8h0ODhpZSzjkLUq4kPFfU16j3UG8fA+ODlUf1fsglyPDkJo1ZI5kDHeR
	cfEcBAO99viEMWVcp/pwTiTEayzfjTob74EgKp7sHZvu6aXo/fGmOmbxcMVRCR0pKDrj9C4oovJ
	OHEZKh3l4/UKHQnshsO5fCMoHpZcrudC4TuA24oQkJ6iUAF0dNHsa9QLsF9w3J01wkfttXVIXjU
	0GLx5TOq0ew69xuqsIMUEZ8PqrB2L7vCz9rfqOVAlOmVwjhgasUXf/1gFyFHi0y4OSMV4XP5c7M
	m8QhKbtyB5OlyA=
X-Received: by 2002:a05:600c:1d29:b0:485:3b50:fe54 with SMTP id 5b1f17b1804b1-4888b7129f6mr59190215e9.11.1775132524439;
        Thu, 02 Apr 2026 05:22:04 -0700 (PDT)
Message-ID: <8a8a2afd-6f53-4f45-b8c8-fb34a6fbb970@suse.com>
Date: Thu, 2 Apr 2026 14:22:02 +0200
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH v1 16/27] xen/riscv: implement IRQ mapping for device
 passthrough
To: Oleksii Kurochko <oleksii.kurochko@gmail.com>
Cc: Romain Caritey <Romain.Caritey@microchip.com>,
 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.pau@citrix.com>,
 Stefano Stabellini <sstabellini@kernel.org>, xen-devel@lists.xenproject.org
References: <cover.1773157782.git.oleksii.kurochko@gmail.com>
 <10654a6c38fa929b5fdf6f214badfe4f60fe78d4.1773157782.git.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: <10654a6c38fa929b5fdf6f214badfe4f60fe78d4.1773157782.git.oleksii.kurochko@gmail.com>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 7bit
X-purgate-ID: tlsNG-33051d/1775132525-40B6DC9A-B9543FF6/0/0
X-purgate-type: clean
X-purgate-size: 6213

On 10.03.2026 18:08, Oleksii Kurochko wrote:
> --- a/xen/arch/riscv/include/asm/setup.h
> +++ b/xen/arch/riscv/include/asm/setup.h
> @@ -5,6 +5,10 @@
>  
>  #include <xen/types.h>
>  
> +struct domain;
> +struct dt_device_node;
> +struct rangeset;
> +
>  #define max_init_domid (0)
>  
>  void setup_mm(void);
> @@ -13,6 +17,19 @@ void copy_from_paddr(void *dst, paddr_t paddr, unsigned long len);
>  
>  void init_csr_masks(void);
>  
> +/* TODO: move somewhere to common header? */

Counter question: Why ...

> +/*
> + * Retrieves the interrupts configuration from a device tree node and maps
> + * those interrupts to the target domain.
> + *
> + * Returns:
> + *   < 0 error
> + *   0   success
> + */
> +int map_device_irqs_to_domain(struct domain *d, struct dt_device_node *dev,
> +                              bool need_mapping,
> +                              struct rangeset *irq_ranges);

... is this not an inline function, when ...

> --- a/xen/arch/riscv/intc.c
> +++ b/xen/arch/riscv/intc.c
> @@ -79,3 +79,11 @@ int __init intc_make_domu_dt_node(const struct kernel_info *kinfo)
>  
>      return -ENOSYS;
>  }
> +
> +int map_device_irqs_to_domain(struct domain *d, struct dt_device_node *dev,
> +                              bool need_mapping,
> +                              struct rangeset *irq_ranges)
> +{
> +    return d->arch.vintc->ops->map_device_irqs_to_domain(d, dev, need_mapping,
> +                                                         irq_ranges);
> +}

... it's merely a wrapper around an indirect function call? And then the
function isn't used anywhere anyway.

> --- a/xen/arch/riscv/vaplic.c
> +++ b/xen/arch/riscv/vaplic.c
> @@ -9,6 +9,7 @@
>   */
>  
>  #include <xen/errno.h>
> +#include <xen/iocap.h>
>  #include <xen/sched.h>
>  #include <xen/xvmalloc.h>
>  
> @@ -19,6 +20,113 @@
>  
>  #include "aplic-priv.h"
>  
> +struct vaplic_priv {
> +    /* Contains a legal interrupts for a domain */
> +    uint32_t auth_irq_bmp[APLIC_NUM_REGS];
> +};

With it apparently plural that is correct, the first "a" wants dropping
from the comment.

> +static bool is_irq_shared_among_domains(const struct domain *d,
> +                                        const unsigned int irq_num)
> +{
> +    struct domain *tmp;

const

> +    unsigned int reg_num = irq_num / APLIC_NUM_REGS;
> +    unsigned int bit_pos = irq_num % APLIC_NUM_REGS;
> +
> +    for_each_domain ( tmp )

See other uses of the construct for how this needs synchronizing. But looping
over all domains looks pretty inefficient anyway for ...

> +    {
> +        uint32_t *auth_irq_bmp;
> +
> +        if ( tmp == d )
> +            continue;
> +
> +        auth_irq_bmp = tmp->arch.vintc->private;
> +
> +        if ( auth_irq_bmp[reg_num] & BIT(bit_pos, U) )
> +        {
> +            printk("%s: irq%d is shared between %pd and %pd\n", __func__,
> +                   irq_num, tmp, d);
> +
> +            return true;
> +        }

... the intended purpose. If IRQs can't be shared, can't you maintain global
state of which ones are in use _somewhere_?

> +    }
> +
> +    return false;
> +}

This together with ...

> +int vaplic_map_device_irqs_to_domain(struct domain *d,
> +                                     struct dt_device_node *dev,
> +                                     bool need_mapping,
> +                                     struct rangeset *irq_ranges)
> +{
> +    unsigned int i, nirq;
> +    int res, irq;
> +    struct dt_raw_irq rirq;
> +    uint32_t *auth_irq_bmp = d->arch.vintc->private;
> +    unsigned int reg_num;
> +
> +    nirq = dt_number_of_irq(dev);
> +
> +    /* Give permission and map IRQs */
> +    for ( i = 0; i < nirq; i++ )
> +    {
> +        res = dt_device_get_raw_irq(dev, i, &rirq);
> +        if ( res )
> +        {
> +            printk(XENLOG_ERR "Unable to retrieve irq %u for %s\n",
> +                   i, dt_node_full_name(dev));
> +            return res;
> +        }
> +
> +        /*
> +         * Don't map IRQ that have no physical meaning
> +         * ie: IRQ whose controller is not APLIC/IMSIC/PLIC.
> +         */
> +        if ( rirq.controller != dt_interrupt_controller )
> +        {
> +            dt_dprintk("irq %u not connected to primary controller."
> +                       "Connected to %s\n", i,
> +                       dt_node_full_name(rirq.controller));
> +            continue;
> +        }
> +
> +        irq = platform_get_irq(dev, i);
> +        if ( irq < 0 )
> +        {
> +            printk("Unable to get irq %u for %s\n", i, dt_node_full_name(dev));
> +            return irq;
> +        }
> +
> +        res = irq_permit_access(d, irq);
> +        if ( res )
> +        {
> +            printk(XENLOG_ERR "Unable to permit to %pd access to IRQ %u\n", d,
> +                   irq);

This time the other way around: %d please with plain int. (Again at least
once further down.)

> +            return res;
> +        }
> +
> +        reg_num = irq / APLIC_NUM_REGS;
> +
> +        if ( is_irq_shared_among_domains(d, irq) )
> +        {
> +            printk("%s: Shared IRQ isn't supported\n", __func__);
> +            return -EINVAL;
> +        }
> +
> +        auth_irq_bmp[reg_num] |= BIT(irq % APLIC_NUM_REGS, U);

... all of this leaves me with the impression that IRQ numbering isn't really
virtualized. IRQs are merely split into groups, one group per domain (and
maybe some unused). How are you going to fit in truly virtual IRQs?

> +        dt_dprintk("  - IRQ: %u\n", irq);
> +
> +        if ( irq_ranges )
> +        {
> +            res = rangeset_add_singleton(irq_ranges, irq);
> +            if ( res )
> +                return res;
> +        }

What is irq_ranges?

> @@ -34,6 +142,7 @@ static int __init cf_check vcpu_vaplic_init(struct vcpu *v)
>  
>  static const struct vintc_ops vaplic_ops = {
>      .vcpu_init = vcpu_vaplic_init,
> +    .map_device_irqs_to_domain = vaplic_map_device_irqs_to_domain,
>  };

What about the inverse function, needed for domain cleanup?

Jan


From xen-devel-bounces@lists.xenproject.org Thu Apr 02 12:43:03 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 02 Apr 2026 12:43:03 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1271826.1559838 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1w8HNx-0005XJ-Le; Thu, 02 Apr 2026 12:42:57 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1271826.1559838; Thu, 02 Apr 2026 12:42: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 1w8HNx-0005XC-J3; Thu, 02 Apr 2026 12:42:57 +0000
Received: by outflank-mailman (input) for mailman id 1271826;
 Thu, 02 Apr 2026 12:42:56 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <jbeulich@suse.com>) id 1w8HNw-0005X6-Qq
 for xen-devel@lists.xenproject.org; Thu, 02 Apr 2026 12:42:56 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1w8HNw-00AFWD-7D
 for xen-devel@lists.xenproject.org; Thu, 02 Apr 2026 14:42:56 +0200
Received: from [10.42.69.12] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <jbeulich@suse.com>)
 id 69ce6440-2eae-0a2a0a5409dd-0a2a450cadac-38
 for <xen-devel@lists.xenproject.org>; Thu, 02 Apr 2026 14:42:56 +0200
Received: from [209.85.128.49] (helo=mail-wm1-f49.google.com)
 by tlsNG-d25034.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.0)
 (envelope-from <jbeulich@suse.com>)
 id 69ce644f-f40c-0a2a450c0019-d1558031dd13-3
 for <xen-devel@lists.xenproject.org>; Thu, 02 Apr 2026 14:42:56 +0200
Received: by mail-wm1-f49.google.com with SMTP id
 5b1f17b1804b1-4887f49ec5aso11869805e9.1
 for <xen-devel@lists.xenproject.org>; Thu, 02 Apr 2026 05:42:56 -0700 (PDT)
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-4887a630922sm241522585e9.0.2026.04.02.05.42.54
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Thu, 02 Apr 2026 05:42:55 -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=google header.d=suse.com header.i="@suse.com" header.h="Content-Transfer-Encoding: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=1775133775; x=1775738575; darn=lists.xenproject.org;
        h=content-transfer-encoding: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;
        bh=AaKMhlI7D75wd7Uq9NDSqWs94NMfdWkPyEvr/vQbMKI=;
        b=BuQuV83TO5l3fYlBLknIHsW0rIrjbXOPKcK4OjMWclSleFpS58jxtmQ4OkhrIu+YpF
         jF8zNi+NBi8vYV+DqJZHPol7bEEhDmoSV7IfMksPthRk1NpRLgbDHYMlk8kOb3qWZ1cE
         6ar64pnpcJlnnDRPaU1mm4OAbc9fWJ0VY9PUhmPKgfOT+R5ap4K9OUbbBP/Mr3duQqj2
         uLXPbVGh8MRriqDsUosuplDxQSjU0cypLwLRorVXJuo15RZgm1b9MAh/kfBJd9dUCGYX
         EadjRuv789DRrB4gCstGKJYPvmpe5qw5j4cVw+wFjSV+kTqzRiafhw0/WodBjXuyShh8
         dssw==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20251104; t=1775133775; x=1775738575;
        h=content-transfer-encoding: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;
        bh=AaKMhlI7D75wd7Uq9NDSqWs94NMfdWkPyEvr/vQbMKI=;
        b=BInVWOy/ynS32wQVfSRyySHAhTt4ehWuD/MAjbCukaVdLp7V1lwmro08EEyyI+TxP0
         h2VRcNbzBYfs2ullxXr0Qv+NN6VCNjCl2wGVzsgXXGAXv422l2dHXBAVD8H4C6t10gKj
         5WLZkRgO9+Xvt+0HofcfCIS7d572HH8XSQ/ZthxyR+R2JPCdyJ/kENu4UA5N1YOQ9WFv
         ofU8bkFB2WoiJtra/q1a2zIGAA2KNUH1V7DIW/2mPmSeVYJnXoaBxeRbsxNVWeThvccq
         Vp64cJaYozy+FKvXsO+C/gZxDR20Zt1YIR4mPljChjcqv49mP96Azb79pXaNMlq279Wj
         JVsA==
X-Gm-Message-State: AOJu0Yx5FVpEynvqxYrUMCEYOixLakUCyNDpIPnRRkAebzU5IFh9LXqj
	rFkUi/jqIvzLKEGe0o4b8y/LDqVZt1uqnPfi1FdnHgR7S+gzRaYfX7z9Qq9KHinONQ==
X-Gm-Gg: ATEYQzyz6xVZ6qgn+4jV4E7Gso8HEg6h94Cd4rVQMJQEMv+nByvOSekVbfJNHQLYJW5
	bdN3j74tPwQwooAQeumiyhCbqUOLxXAsW6xg2upqEKuPkzYHFSTRGMDt+Re+7XCfRm0c1aJEpZP
	ZWlUD/VYJ1fwHN9rYnDiBlmnwBRO4R+d/9dAw8HERvDCeMICaE+xb7KzvwRIRF60GhMmyGmgAG+
	12NsA4Iho9yit+Q41QxbyZDc+Tc+5YswlpdEFOlUaciPPjSXIIF+NWKZpePwyKT4Ro7kb59R9W8
	ivWwhrZTi56W6GjIUuKt+eSCUxgw0PaK2qAdBzoB/Vl/gGlJhw1v0qDkuoenId17aUeVNdTqoYZ
	W4l9sY7AKQXr9bHfojGZNhf1UiLBH9WXFAXeAsCCyYIEk8SP8dGZPjmabdG9xKqIrjFO3T+UB00
	/sC5x9a0e7fMfUg0fsnymyqJXQx2Tm78JarWmSUA9xrFiERKoq9pNjXNHrL70GP+APbiN0D4nOZ
	elwNDYLcooqRaA=
X-Received: by 2002:a05:600c:a113:b0:485:5ba3:37d8 with SMTP id 5b1f17b1804b1-4888355e6c8mr96954225e9.5.1775133775473;
        Thu, 02 Apr 2026 05:42:55 -0700 (PDT)
Message-ID: <b7e7b1e5-60ff-419f-9a89-2ac7fc3cd21c@suse.com>
Date: Thu, 2 Apr 2026 14:42:54 +0200
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH 1/2] make ioremap_attr() common
To: =?UTF-8?Q?Roger_Pau_Monn=C3=A9?= <roger.pau@citrix.com>
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>,
 Alistair Francis <alistair.francis@wdc.com>,
 Connor Davis <connojdavis@gmail.com>,
 Oleksii Kurochko <oleksii.kurochko@gmail.com>,
 Bertrand Marquis <bertrand.marquis@arm.com>,
 Volodymyr Babchuk <volodymyr_babchuk@epam.com>,
 Timothy Pearson <tpearson@raptorengineering.com>
References: <924f3ef2-7883-4322-a921-edc814c96719@suse.com>
 <81e4f7e0-df57-4a5b-b16d-fe668682d94c@suse.com>
 <ac5d1zBaSQk7f0nE@wifi-campus-l-10-3-197-236.u-ga.fr>
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: <ac5d1zBaSQk7f0nE@wifi-campus-l-10-3-197-236.u-ga.fr>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
X-purgate-ID: tlsNG-d25034/1775133776-FF348A3D-880614EF/0/0
X-purgate-type: clean
X-purgate-size: 3866

On 02.04.2026 14:15, Roger Pau Monné wrote:
> On Thu, Feb 19, 2026 at 04:51:54PM +0100, Jan Beulich wrote:
>> --- a/xen/arch/x86/mm.c
>> +++ b/xen/arch/x86/mm.c
>> @@ -6166,41 +6166,15 @@ void *__init arch_vmap_virt_end(void)
>>      return fix_to_virt(__end_of_fixed_addresses);
>>  }
>>  
>> -void __iomem *ioremap(paddr_t pa, size_t len)
>> +void __iomem *x86_ioremap_attr(paddr_t pa, size_t len, pte_attr_t attr)
>>  {
>> -    mfn_t mfn = _mfn(PFN_DOWN(pa));
>> -    void *va;
>> -
>> -    WARN_ON(page_is_ram_type(mfn_x(mfn), RAM_TYPE_CONVENTIONAL));
>> +    WARN_ON(page_is_ram_type(PFN_DOWN(pa), RAM_TYPE_CONVENTIONAL));
>>  
>>      /* The low first Mb is always mapped. */
>> -    if ( !((pa + len - 1) >> 20) )
>> -        va = __va(pa);
>> -    else
>> -    {
>> -        unsigned int offs = pa & (PAGE_SIZE - 1);
>> -        unsigned int nr = PFN_UP(offs + len);
>> -
>> -        va = __vmap(&mfn, nr, 1, 1, PAGE_HYPERVISOR_UCMINUS, VMAP_DEFAULT);
>> -        if ( va )
>> -            va += offs;
>> -    }
>> -
>> -    return (void __force __iomem *)va;
>> -}
>> -
>> -void __iomem *__init ioremap_wc(paddr_t pa, size_t len)
>> -{
>> -    mfn_t mfn = _mfn(PFN_DOWN(pa));
>> -    unsigned int offs = pa & (PAGE_SIZE - 1);
>> -    unsigned int nr = PFN_UP(offs + len);
>> -    void *va;
>> -
>> -    WARN_ON(page_is_ram_type(mfn_x(mfn), RAM_TYPE_CONVENTIONAL));
>> -
>> -    va = __vmap(&mfn, nr, 1, 1, PAGE_HYPERVISOR_WC, VMAP_DEFAULT);
>> +    if ( !((pa + len - 1) >> 20) && attr == PAGE_HYPERVISOR_UCMINUS )
>> +        return (void __force __iomem *)__va(pa);
> 
> Sorry, I'm possibly a bit lost: I see that on the bootstrap
> page-tables we map the VGA hole (0xa0000-0xc0000) as UC-, but I'm not
> seeing this being done to the directmap?

I'm not changing that aspect here, do I? ioremap() used the direct map
(apparently assuming the cache attribute is suitable), and so do I now.

Yet then, to address the point you make anyway, I certainly see use of
__PAGE_HYPERVISOR_UCMINUS in l1_directmap[].

>> --- /dev/null
>> +++ b/xen/common/ioremap.c
>> @@ -0,0 +1,42 @@
>> +/* SPDX-License-Identifier: GPL-2.0-only */
>> +
>> +#include <xen/mm.h>
>> +#include <xen/pfn.h>
>> +#include <xen/vmap.h>
>> +
>> +#include <asm/io.h>
>> +
>> +void __iomem *ioremap_attr(paddr_t pa, size_t len, pte_attr_t attr)
>> +{
>> +    void __iomem *ptr = NULL;
>> +    unsigned int offs = PAGE_OFFSET(pa);
>> +
>> +#ifdef arch_ioremap_attr
>> +    ptr = arch_ioremap_attr(pa, len, attr);
>> +    if ( PAGE_OFFSET(ptr) )
>> +        return ptr;
> 
> IMO it's a bit confusing to deal with the offset addition detached
> form here, I would rather do:
> 
> if ( ptr != NULL )
> {
>     ASSERT(PAGE_OFFSET(ptr) == offs);
>     return PAGE_OFFSET(ptr) ? ptr : ptr + off;
> }
> 
> And get rid of the !ptr check in the if below.  So that when
> arch_ioremap_attr() succeeds it's all dealt with in the #ifdef
> protected block.

Possible, yet I deemed the other variant better.

The assertion you suggest isn't valid anyway (see the last sentence of the
description and xen/arch/arm/mpu/mm.c:ioremap_attr() prior to Michal's
"xen/arm: mpu: Fix ioremap_attr region size and return value"). Now that
that's changing, things may indeed be possible to simplify here.

>> +#endif
>> +
>> +    if ( IS_ENABLED(CONFIG_HAS_VMAP) && !ptr )
>> +    {
>> +        mfn_t mfn = _mfn(PFN_DOWN(pa));
>> +
>> +        ptr = (void __force __iomem *)__vmap(&mfn, PFN_UP(offs + len), 1, 1,
>> +                                             attr, VMAP_DEFAULT);
>> +    }
>> +
>> +    if ( !ptr )
>> +        return NULL;
>> +
>> +    return ptr + offs;
> 
> I would also join the NULL checking using a ternary operator:
> 
> return ptr ? ptr + off : NULL;

Can do, sure.

Jan


From xen-devel-bounces@lists.xenproject.org Thu Apr 02 12:45:28 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 02 Apr 2026 12:45:28 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1271839.1559848 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1w8HQM-000688-4H; Thu, 02 Apr 2026 12:45:26 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1271839.1559848; Thu, 02 Apr 2026 12:45: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 1w8HQM-000681-1Q; Thu, 02 Apr 2026 12:45:26 +0000
Received: by outflank-mailman (input) for mailman id 1271839;
 Thu, 02 Apr 2026 12:45:24 +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 1w8HQK-00067q-MJ
 for xen-devel@lists.xenproject.org; Thu, 02 Apr 2026 12:45:24 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1w8HQJ-00FeHE-Tn
 for xen-devel@lists.xenproject.org; Thu, 02 Apr 2026 14:45:23 +0200
Received: from [10.42.69.2] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <Michal.Orzel@amd.com>)
 id 69ce64da-5cb7-0a2a0a5109dd-0a2a4502d56c-12
 for <xen-devel@lists.xenproject.org>; Thu, 02 Apr 2026 14:45:23 +0200
Received: from [52.101.46.64]
 (helo=CO1PR03CU002.outbound.protection.outlook.com)
 by tlsNG-720697.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.0)
 (envelope-from <Michal.Orzel@amd.com>)
 id 69ce64e1-42fa-0a2a45020019-34652e406e5b-3
 for <xen-devel@lists.xenproject.org>; Thu, 02 Apr 2026 14:45:23 +0200
Received: from IA1P220CA0016.NAMP220.PROD.OUTLOOK.COM (2603:10b6:208:464::10)
 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.20.9769.18; Thu, 2 Apr
 2026 12:45:14 +0000
Received: from BN3PEPF0000B074.namprd04.prod.outlook.com
 (2603:10b6:208:464:cafe::41) by IA1P220CA0016.outlook.office365.com
 (2603:10b6:208:464::10) with Microsoft SMTP Server (version=TLS1_3,
 cipher=TLS_AES_256_GCM_SHA384) id 15.20.9769.18 via Frontend Transport; Thu,
 2 Apr 2026 12:45:14 +0000
Received: from satlexmb07.amd.com (165.204.84.17) by
 BN3PEPF0000B074.mail.protection.outlook.com (10.167.243.119) with Microsoft
 SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id
 15.20.9769.17 via Frontend Transport; Thu, 2 Apr 2026 12:45:14 +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.17; Thu, 2 Apr
 2026 07:45:14 -0500
Received: from [10.71.194.215] (10.180.168.240) by satlexmb07.amd.com
 (10.181.42.216) with Microsoft SMTP Server id 15.2.2562.17 via Frontend
 Transport; Thu, 2 Apr 2026 07:45:13 -0500
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@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=vcAzMIHoWgegDxpUn/641PLBde6tHNURntOJq3CiLXNqcWwvCajepoTcNC+cyVnT+LLJlagfBooIwHA113haij53ld86+k5qgYrGso5oEn/ZQqp/pjVPfgBUA7NeFcd/U5fUSc1nn//s5BDVyxc83xhOIH1Q0l3Ls48EThadAp7ug0YrsQYzFSsn3yWEXaqlpf2CbtTBSES8K+ymlpm9nntkrG6BVBIByEi+UQ4YKyHq8MsLErIUVajB6OsFnoHIozpYjNMXOHkQaig4+yn7mKVeTM4X3ee6aqHXhNoIeAuOkm1hfjADpnGrprcERLJ96yXmd97MELuB040gnIfTsw==
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com;
 s=arcselector10001;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1;
 bh=MDmhePtrtBr7bsPa52Us9Qvv5pPPG/pN9Cg8adr9NEg=;
 b=pVJhIAyBszpK2s5DvdFUrCafmgYHBSt5c81/Y5teKTQFjl6UfDcvrWwPtogAsqu6HsbPWgCRC76OqMEZW5XFMxUVFYyfG+lOY0UFzYjerOzkd4TeJGweidgA+OUZJqI93TckrIOOGIQ7LgYOfBNnnsaaZ7d4WsPRT7DvWyrpqwhnn+tA/rsSKEUzepyuQxMDz1LlYOaPruboqsJI+E9YsUyRc8b4p1PkqRn1r9663/0oYbyPoe9zYvPBkQdZ7mUgz4R3Pj7x/8Mr9D6FVGmci6vQsHY4BEGjKCiUGq03mA8bSNnhpWma51xNsTIGs4YvMCHBr/nShohxqWjTXeUEzg==
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=MDmhePtrtBr7bsPa52Us9Qvv5pPPG/pN9Cg8adr9NEg=;
 b=xVf2gPz7e8GUPkWjnPhNjoG04aHRhtPjOi0LFMKjGDw8lCVHiwXPVD+6VzGQX7oo/u3OrY+VQanBEaYFjF0EkbCOa8XLIMuZKT5x/W+VacY1kEvURvgAYrHuDQQlj9NVyO6Gk74HOMv/2IYAL9BYVyG5EBCbP1pXYSwg2uC3d9w=
X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 165.204.84.17)
 smtp.mailfrom=amd.com; dkim=none (message not signed)
 header.d=none;dmarc=pass action=none header.from=amd.com;
Received-SPF: Pass (protection.outlook.com: domain of amd.com designates
 165.204.84.17 as permitted sender) receiver=protection.outlook.com;
 client-ip=165.204.84.17; helo=satlexmb07.amd.com; pr=C
Message-ID: <865ae6a0-15e0-4a27-9537-0c5e6cb0a1cb@amd.com>
Date: Thu, 2 Apr 2026 14:45:12 +0200
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH] xen/device-tree: Fix off-by-one bounds check in
 make_memory_node()
To: Oleksandr Tyshchenko <Oleksandr_Tyshchenko@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>
References: <20260402110330.3580124-1-oleksandr_tyshchenko@epam.com>
From: "Orzel, Michal" <michal.orzel@amd.com>
Content-Language: en-US
In-Reply-To: <20260402110330.3580124-1-oleksandr_tyshchenko@epam.com>
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: 7bit
X-EOPAttributedMessage: 0
X-MS-PublicTrafficType: Email
X-MS-TrafficTypeDiagnostic: BN3PEPF0000B074:EE_|MN2PR12MB4126:EE_
X-MS-Office365-Filtering-Correlation-Id: 8b0ce731-8a0a-49b6-f0bf-08de90b5afbb
X-MS-Exchange-SenderADCheck: 1
X-MS-Exchange-AntiSpam-Relay: 0
X-Microsoft-Antispam:
	BCL:0;ARA:13230040|82310400026|36860700016|376014|1800799024|22082099003|56012099003|18002099003;
X-Microsoft-Antispam-Message-Info:
	5KoNdoBUJxpPIlmSgkJ7t7bYZEdtlWceF0nUJygc3BrhUY8iA7K7ghgND1QkQrBN8QSAif0VjyGXqP37Jap1WD/Uf0OQNHxoXBprtDaku8PHni2ZIDZAKtsV8ZNhw7knJCw5Wwk29h7fHHgoyyviEV9FmNfCujbPr0Ea+JbWrxGal/qxG1ZMIWdeTLHDFquf7C+yE5s+p7+FaDxcvon8woHO9YVUOA6/vKHBttgvbLgzQAaq+vFNmU5WPNGcESHpoS1pUCD9RMOxAewFJt/3QCEsL9lrj2BJk/NwkKFvmI1ZT+m/qdk0vMQKcTGjqFCD95AAPuGVTLdjkPx7SlmFTKfpD2L7+14IBql3FfshTgx6+aPnrZwGsQWdBQq55lU8jnSUny9AUghgBqanZ7QacET9PLGPAFns3A0pbCf4CAFS3PTOIngac3OyJr5+5AXAyDaoT0tdSQ/bM4de8FCElj+WsuXS5OkuLLCiwk1tktDLZDQMxocFvSJVsA+IMBdszfBlyTbkYp2l7XYHmVml36eHXtrVT8D986i7GnlklxS/sF+2Xdxo7ispRD9MCtWB4FPP8VqhIcA4ZjNT/3lspHn+lh9uyzOX23nJ/7Vd3oCZaDK8O0y/iBHhwvTKCKOz7zrzqNg5QJFqT8wSRrxQj27EEd5ocr3eqUIiycVICGE/GBmPF7vf+4SpxbwrKOw4EiQ1WwvB7h8RradgV61ubRns5+fe0ja+2+WoewHMBk7CE4woGrWzkHBG+o1kTjthHXARRTFhR32x5tOsOF8D7w==
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)(376014)(1800799024)(22082099003)(56012099003)(18002099003);DIR:OUT;SFP:1101;
X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1
X-MS-Exchange-AntiSpam-MessageData-0:
	Vc6/8abjOR/WhcjOXKkQXh5zx3spC3HtKeM4U6sy4Cg1KtxNMNgVfqqdRymqo2880atk5/Y6NVxN63oqAhinJaQQq9Nmr4sgN1URs/Z2rkImDOSu0heJ3jcsPnUw7XQV8nWcjgJfcgff951tL+NO/YX4HxoKviCAl4d0vGrCHVNQ07cOIJQVElbE9q+pPjg+TQ28a8bkAOLvekBxG9LFxOwsbJux6c5lyCYPumi3kKSb9bYoUw4ZkZ47a/q+4N43tcwtkT6XmzNNaOV4aRcFhhWFePttwq/zlUPh58Tli457LeZDomHDOU+U6xhqfiyIAJWEqoOK88A0OkSzsNvJNJ1yBsSFjXKECrrGxEzVk8+/7iEeSrYkp2lrQYCbl+3apMv67BVZUm0MiLZWD5PnxPP1AncKJaVaN7oTIDK6s9dXMh8b4vPXNvluyLEOUngb
X-OriginatorOrg: amd.com
X-MS-Exchange-CrossTenant-OriginalArrivalTime: 02 Apr 2026 12:45:14.4598
 (UTC)
X-MS-Exchange-CrossTenant-Network-Message-Id: 8b0ce731-8a0a-49b6-f0bf-08de90b5afbb
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:
	BN3PEPF0000B074.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-720697/1775133923-4CDF6CD1-32F2E584/0/0
X-purgate-type: clean
X-purgate-size: 1416



On 02/04/2026 13:03, Oleksandr Tyshchenko wrote:
> When building Xen with CONFIG_STATIC_SHM=n, booting a hardware
> domain with exactly NR_MEM_BANKS (256) reserved-memory regions
> causes a panic:
> 
> (XEN) Xen BUG at common/device-tree/domain-build.c:497
> (XEN) Xen call trace:
> (XEN)    [<00000a0000289aa8>] make_memory_node+0x178/0x234 (PC)
> 
> This occurs due to an off-by-one error in the bounds checking of
> the reg array in make_memory_node(). The check:
>     BUG_ON(nr_cells >= ARRAY_SIZE(reg));
> incorrectly triggers when the array is exactly full (i.e., when
> nr_cells == ARRAY_SIZE(reg)), preventing the 256th and final valid
> memory region from being written.
> 
> When CONFIG_STATIC_SHM=y, this bug remains hidden because
AFAICT it remains hidden as long as you don't add NR_SHMEM_BANKS banks.
In that case you will also hit this problem.

> DT_MEM_NODE_REG_RANGE_SIZE adds extra space for SHM banks.
> This extra capacity prevents the array from ever reaching its
> maximum limit while processing the 256th memory region.
> 
> Fix this by changing the condition to strictly greater than (>).
> Apply the exact same fix to shm_mem_node_fill_reg_range() to
> prevent the same error.
> 
> Signed-off-by: Oleksandr Tyshchenko <oleksandr_tyshchenko@epam.com>
This should have a Fixes tag.
With that:
Reviewed-by: Michal Orzel <michal.orzel@amd.com>

~Michal



From xen-devel-bounces@lists.xenproject.org Thu Apr 02 12:51:58 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 02 Apr 2026 12:51:58 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1271859.1559857 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1w8HWc-0007tt-OY; Thu, 02 Apr 2026 12:51:54 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1271859.1559857; Thu, 02 Apr 2026 12:51: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 1w8HWc-0007tl-LV; Thu, 02 Apr 2026 12:51:54 +0000
Received: by outflank-mailman (input) for mailman id 1271859;
 Thu, 02 Apr 2026 12:51:53 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92) id 1w8HWb-0007tc-Gr
 for xen-devel@lists.xenproject.org; Thu, 02 Apr 2026 12:51:53 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1w8HWa-00FAUJ-Sc
 for xen-devel@lists.xenproject.org; Thu, 02 Apr 2026 14:51:52 +0200
Received: from [10.42.69.12] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <jbeulich@suse.com>)
 id 69ce6668-e002-0a2a0a5209dd-0a2a450c8076-0
 for <xen-devel@lists.xenproject.org>; Thu, 02 Apr 2026 14:51:52 +0200
Received: from [209.85.128.54] (helo=mail-wm1-f54.google.com)
 by tlsNG-d25034.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.0)
 (envelope-from <jbeulich@suse.com>)
 id 69ce6668-f40c-0a2a450c0019-d1558036e0a6-3
 for <xen-devel@lists.xenproject.org>; Thu, 02 Apr 2026 14:51:52 +0200
Received: by mail-wm1-f54.google.com with SMTP id
 5b1f17b1804b1-486b96760easo9214975e9.2
 for <xen-devel@lists.xenproject.org>; Thu, 02 Apr 2026 05:51:52 -0700 (PDT)
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-4888a62616dsm85845275e9.3.2026.04.02.05.51.51
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Thu, 02 Apr 2026 05:51:51 -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=google header.d=suse.com header.i="@suse.com" header.h="Content-Transfer-Encoding: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=1775134312; x=1775739112; darn=lists.xenproject.org;
        h=content-transfer-encoding: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;
        bh=37oUeQzwd1FO/hzuvv6FbRflQOYLfg6X3dRmyiH+plc=;
        b=g11PVKHPhDIvEfBHtyug51nGw/HbR9WSItss8NiUzET+oAJsFF5Awxq7C82ALIHJpT
         SJAU6g18OaXlEVD050T3F08ebDb5IrfbMytclTlJZbK5DHWVw7p56seRv8OMOAys7Y8F
         oSR8rb4bAwn/SVTZrlFaV3yrV15xK0+hqoOtxxtv0o1XUG6Sf/P99vbrL3HQWkkb92lX
         jDdC4V0QpQ4saQ+vU59AUfEZDTMtBM9j9wIz9YUCYMeNJ79sDwEaPhZ3UN6BKnHYEQHf
         RyF06jlL50yxrLnHjlRpGrpEJVax/LVdfGMx9g/l5retkTTkwe2Xe0izi1HFtZpDGL+k
         If2Q==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20251104; t=1775134312; x=1775739112;
        h=content-transfer-encoding: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;
        bh=37oUeQzwd1FO/hzuvv6FbRflQOYLfg6X3dRmyiH+plc=;
        b=X1b2JohFbNOYen6tgWM4hshYa+BbAS24Fk84z1hZzbli5l5ufe9z9xhferkI3yUDQP
         OJCrg9JzH2FZKQK9icSpGZc7z0MRR9XR9JBF+2WeGpqDAYDBBT8a8hFhmH9/X//+53Ix
         69zw/KQsxNNPMIPO6U8oPwTY+hKf86sZ0fQfa0sSO+OXuxcXgX/GPh+cBK++3W4Ln+6N
         6Z5FsrkKwL6qW3TCEAzZoejbPU2+GNq07sFAy2mHR5bwhQTb8CWxcfIabz1+8+AapDPj
         lStyy01B7mHpL8lDRzL/vlBA79Z6ykfW7HY++fLgidD41vnRu9u1M3M1hchdTG7RVzVM
         OQtg==
X-Forwarded-Encrypted: i=1; AJvYcCWzbDTbTkT2XzksB6ZmRdGKeiUXDVrfn6ek68sW4e8sHtAAzYUrMLDuZ29520fQIgi2z42JL9+cbwk=@lists.xenproject.org
X-Gm-Message-State: AOJu0YwsooCMBOo0HcwECwPhi4ueLGoAan6OHW0LW7bEry0kvRHneSBf
	DPGA/J7Hfbr21csbnNcgNX1/fYYgBUTtW+B0ysCqhFzO5Xec7dv0H9XApbDCO3yepA==
X-Gm-Gg: ATEYQzzLF917fc8BGH23R7xaAv6oEA88A2ARlxS0iLqIH+dUpbeRdc7KVkEnf4kbwss
	pQPxmtzp7YDrPEngDZEoqjyoeXXWMAq/7LkBGbQah60/o4PzjnMlgV4MivopJBk1fvTETbQgi0b
	dsXv/jgROJycuprzDg4iue/d3Fe9a3XOr75Cb28DR57T7NnDAa+188zPT4UK2jxtCuN+DqKOMvJ
	Y6oqEQTztqxDjEnXWxZCFAk5asOfnrPgQZ6BwoTDBvt/baWBOdCnSqZ6aVTzCeQGwqdErflzUMh
	d9Ojko/utZgq8rhls61mnprNDHluqwKYXPhS+WlWacZpTRWZFwKfl0eI685cFuqp5rGbhvhmAcR
	4mT499HayS+LiuSfTl0DOxWOmiABlaxuuFLEyI3XG9sLmpePYVP62IfMH8ooBnfH+v4tifDqt5+
	7DN+5vxL0QLpYJHK6qa5vpCCMlWN8ERb8uBOXHkrSd//YR9GntuHA42LgaxEmuKX3qTPjC701v8
	zSJF8fUHcCIPIc=
X-Received: by 2002:a05:600c:4f12:b0:485:9a50:3369 with SMTP id 5b1f17b1804b1-488835a1820mr126393215e9.29.1775134312033;
        Thu, 02 Apr 2026 05:51:52 -0700 (PDT)
Message-ID: <072c0f21-a223-46dd-8ea2-f3591c2fd547@suse.com>
Date: Thu, 2 Apr 2026 14:51:50 +0200
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH v1 17/27] xen/riscv: add missing APLIC register offsets,
 masks to asm/aplic.h.
To: Oleksii Kurochko <oleksii.kurochko@gmail.com>
Cc: Romain Caritey <Romain.Caritey@microchip.com>,
 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.pau@citrix.com>,
 Stefano Stabellini <sstabellini@kernel.org>, xen-devel@lists.xenproject.org
References: <cover.1773157782.git.oleksii.kurochko@gmail.com>
 <2097fefb49fca36f641ddd7d7fb31e796a03619e.1773157782.git.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: <2097fefb49fca36f641ddd7d7fb31e796a03619e.1773157782.git.oleksii.kurochko@gmail.com>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 7bit
X-purgate-ID: tlsNG-d25034/1775134312-A51BBA3D-BC82449B/10/73395122804
X-purgate-type: spam
X-purgate-size: 2380

On 10.03.2026 18:08, Oleksii Kurochko wrote:
> These definitions are required for correct decoding of APLIC MMIO
> accesses and target configuration, and will be used by both the
> physical and virtual APLIC implementations.
> 
> No functional change is intended by this patch; it only centralises
> hardware definitions that were previously missing.
> 
> Co-developed-by: Romain Caritey <Romain.Caritey@microchip.com>
> Signed-off-by: Oleksii Kurochko <oleksii.kurochko@gmail.com>

I can commit this as is (with my ack added), but I'd like you to consider
again my remark elsewhere as to ...

> --- a/xen/arch/riscv/include/asm/aplic.h
> +++ b/xen/arch/riscv/include/asm/aplic.h
> @@ -17,6 +17,11 @@
>  
>  #define APLIC_NUM_REGS 32
>  
> +#define APLIC_REG_OFFSET_MASK   0x3FFF
> +#define APLIC_TARGET_IPRIO_MASK 0xFF
> +#define APLIC_TARGET_GUEST_IDX_SHIFT 12
> +#define APLIC_TARGET_EIID_MASK  0x7FF
> +
>  #define APLIC_DOMAINCFG_IE      BIT(8, U)
>  #define APLIC_DOMAINCFG_DM      BIT(2, U)
>  
> @@ -27,6 +32,36 @@
>  #define APLIC_SOURCECFG_SM_LEVEL_HIGH   0x6
>  #define APLIC_SOURCECFG_SM_LEVEL_LOW    0x7
>  
> +#define APLIC_DOMAINCFG         0x0000
> +#define APLIC_SOURCECFG_BASE    0x0004
> +#define APLIC_SOURCECFG_LAST    0x0FFC
> +
> +#define APLIC_SMSICFGADDR       0x1BC8
> +#define APLIC_SMSICFGADDRH      0x1BCC
> +
> +#define APLIC_SETIP_BASE        0x1C00
> +#define APLIC_SETIP_LAST        0x1C7C
> +#define APLIC_SETIPNUM          0x1CDC
> +
> +#define APLIC_CLRIP_BASE        0x1D00
> +#define APLIC_CLRIP_LAST        0x1D7C
> +#define APLIC_CLRIPNUM          0x1DDC
> +
> +#define APLIC_SETIE_BASE        0x1E00
> +#define APLIC_SETIE_LAST        0x1E7C
> +#define APLIC_SETIENUM          0x1EDC
> +
> +#define APLIC_CLRIE_BASE        0x1F00
> +#define APLIC_CLRIE_LAST        0x1F7C
> +#define APLIC_CLRIENUM          0x1FDC
> +
> +#define APLIC_SETIPNUM_LE       0x2000
> +
> +#define APLIC_GENMSI            0x3000
> +
> +#define APLIC_TARGET_BASE       0x3004
> +#define APLIC_TARGET_LAST       0x3FFC

... the case of hex digits vs the need to have L (and hence U) suffixes in
upper case for Misra's sake. Those suffixes are easier to spot as such when
the hex digits use lower case. Then even for un-suffixed numbers lower case
is preferable imo, for overall consistency.

Jan


From xen-devel-bounces@lists.xenproject.org Thu Apr 02 13:02:33 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 02 Apr 2026 13:02:33 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1271874.1559868 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1w8Hgk-0001D1-M4; Thu, 02 Apr 2026 13:02:22 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1271874.1559868; Thu, 02 Apr 2026 13:02: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 1w8Hgk-0001Cu-JH; Thu, 02 Apr 2026 13:02:22 +0000
Received: by outflank-mailman (input) for mailman id 1271874;
 Thu, 02 Apr 2026 13:02:20 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <marmarek@invisiblethingslab.com>) id 1w8Hgi-0001CY-9G
 for xen-devel@lists.xenproject.org; Thu, 02 Apr 2026 13:02:20 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1w8Hgh-008C1P-1f
 for xen-devel@lists.xenproject.org; Thu, 02 Apr 2026 15:02:19 +0200
Received: from [10.42.69.12] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <marmarek@invisiblethingslab.com>)
 id 69ce68d8-5cb7-0a2a0a5109dd-0a2a450c930a-16
 for <xen-devel@lists.xenproject.org>; Thu, 02 Apr 2026 15:02:18 +0200
Received: from [103.168.172.152] (helo=fhigh-a1-smtp.messagingengine.com)
 by tlsNG-d25034.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.0)
 (envelope-from <marmarek@invisiblethingslab.com>)
 id 69ce68d9-f40c-0a2a450c0019-67a8ac98be9d-3
 for <xen-devel@lists.xenproject.org>; Thu, 02 Apr 2026 15:02:18 +0200
Received: from phl-compute-02.internal (phl-compute-02.internal [10.202.2.42])
 by mailfhigh.phl.internal (Postfix) with ESMTP id 319DE14000A4;
 Thu,  2 Apr 2026 09:02:17 -0400 (EDT)
Received: from phl-frontend-04 ([10.202.2.163])
 by phl-compute-02.internal (MEProxy); Thu, 02 Apr 2026 09:02:17 -0400
Received: by mail.messagingengine.com (Postfix) with ESMTPA; Thu,
 2 Apr 2026 09:02:16 -0400 (EDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
Authentication-Results: eu.smtp.expurgate.cloud; dkim=pass header.s=fm1 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=fm1; t=1775134937;
	 x=1775221337; bh=ym2eMeFIoCCsFKppruamwrkn//7rVgTN9+G1lJzgWJY=; b=
	PcjLSVGIg//O9ZtDedZ8Sm2/vvgO1KrCfzTcl4XZ+G+PNtQfGSdHS2U6qQ7xz/8m
	jX1MW91du/DL0j9MzyptdBITcalDp6UFTx2O1zzI3j5XkQmSVlqLTFVPyLI2E/oH
	GRhcjABMRgGcRlc+5FzdFw+KbC6XmjQG/PsmUEAEOVGDCdi47W4jM9xPzIMbLyr4
	bzrrFvGYYkgYHExZ1XdQq24E4dwwHX3phePjnatA2zEbV5MgEzUiP6iWcaIQy4bq
	1N+486DUDQW1URhf0YB6YDan0O1/bOZzFFX2qRaqMDNA0OrHw+qlwAfJYhl6Dro2
	k75eo0AJFksTcVcxeTWbxQ==
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=
	1775134937; x=1775221337; bh=ym2eMeFIoCCsFKppruamwrkn//7rVgTN9+G
	1lJzgWJY=; b=CNc8RMcKq9X20+Pz2d5UpoNOnts65Q6T6c9LxXzYxModTUq6+t0
	NklTrTU9NzGbt6H1ZYC+E77TgXSbCbeX81Uxj0n7WU3czJtNPfawOM+7tGlpSq07
	Yz2YvOuRZKp7BOEO3wSJErnos6KP5Kbga8fpNGo2bFueD8GHX0fO/vcA+YJcamdb
	XkoFF/9Y7P4rAMXKUxoFqh3rsEfviwzUni5dpKGR69FgMh/PSP/o+2ioXAc4FZG4
	Mc123cTsLIAZ7/LBDpSyGiK8A6u5KONnUgoMswqlLXpq2kFjsByuX1yaxfer7diz
	9EFn6WIwHHnuMCInQxrB4iLaet8+G/FKHXQ==
X-ME-Sender: <xms:2GjOaUE_R0SdmcR_MYD2rLjG52DA8tUPFAy9UjMwwGjoHWA-CDYT1A>
    <xme:2GjOaUUVRSaCLg3b_dY6-ufiQnWliZcnZmlzsCM1g9mJZcXz_r9ZgPNnv7Gf2wOn-
    Sc7d9O7kz0Rs8o8ps6c3MEDwubC1AlcryTsfi6m3dvtaPPW>
X-ME-Received: <xmr:2GjOaTIaDDwIXcDmruTPCVZAxKhjwkCSDQWcBrdSmLGmdWBGOaPWISjlXMAN8XsxvGtQnqqBg2lUyd5UlqO0>
X-ME-Proxy-Cause: gggruggvucftvghtrhhoucdtuddrgeefhedrtddtgdeiuddtucetufdoteggodetrfdotf
    fvucfrrhhofhhilhgvmecuhfgrshhtofgrihhlpdfurfetoffkrfgpnffqhgenuceurghi
    lhhouhhtmecufedttdenucesvcftvggtihhpihgvnhhtshculddquddttddmnecujfgurh
    epfffhvfevuffkfhggtggujgesghdtreertddtjeenucfhrhhomhepofgrrhgvkhcuofgr
    rhgtiiihkhhofihskhhiqdfikphrvggtkhhiuceomhgrrhhmrghrvghksehinhhvihhsih
    gslhgvthhhihhnghhslhgrsgdrtghomheqnecuggftrfgrthhtvghrnhepgfduleetfeev
    hfefheeiteeliefhjefhleduveetteekveettddvgeeuteefjedunecuvehluhhsthgvrh
    fuihiivgeptdenucfrrghrrghmpehmrghilhhfrhhomhepmhgrrhhmrghrvghksehinhhv
    ihhsihgslhgvthhhihhnghhslhgrsgdrtghomhdpnhgspghrtghpthhtohepgedpmhhoug
    gvpehsmhhtphhouhhtpdhrtghpthhtohepjhgsvghulhhitghhsehsuhhsvgdrtghomhdp
    rhgtphhtthhopeigvghnqdguvghvvghlsehlihhsthhsrdigvghnphhrohhjvggtthdroh
    hrghdprhgtphhtthhopehjghhrohhsshesshhushgvrdgtohhmpdhrtghpthhtoheprhho
    ghgvrhdrphgruhestghithhrihigrdgtohhm
X-ME-Proxy: <xmx:2GjOaU8h6Mtb4dpzYqItgGfS3YRwM8HqMzros09IryU-iiPgWE98Ww>
    <xmx:2WjOaWJe2EM4ViUiqk_wuqD2fnzFDfN98SWm1aPvzbmGC5Ete0bQ5w>
    <xmx:2WjOaZmJ2pTDA7E9ubCygKjAUIIarwIqfEXPd5I5vCdzyBNgRdFkNg>
    <xmx:2WjOaaMfo8e8msSec6aAKWkT1Z3GQMFTyKkYnCBP-wOWL58F65ka8g>
    <xmx:2WjOaUDHZudgnSpxX0WEqcSdSZTltpnz5JS348-MPOxSnLN_2yzuNLJp>
Feedback-ID: i1568416f:Fastmail
Date: Thu, 2 Apr 2026 15:02:15 +0200
From: Marek =?utf-8?Q?Marczykowski-G=C3=B3recki?= <marmarek@invisiblethingslab.com>
To: Jan Beulich <jbeulich@suse.com>
Cc: xen-devel <xen-devel@lists.xenproject.org>,
	=?utf-8?B?SsO8cmdlbiBHcm/Dnw==?= <jgross@suse.com>,
	Roger Pau =?utf-8?B?TW9ubsOp?= <roger.pau@citrix.com>
Subject: Re: Slow (higher scheduling latency?) system after S3 - regression
 4.17 -> 4.19 ?
Message-ID: <ac5l-HgbDRcVkiWb@mail-itl>
References: <aPzBO_eW8mQHM66u@mail-itl>
 <acQzzlXNDxNq885V@mail-itl>
 <29775afa-e17b-4c44-a2a8-4ef4bc7cdf0f@suse.com>
 <acUqOL232lp-Lw1v@mail-itl>
 <cbed767b-4ac4-4989-8778-43ff321ae977@suse.com>
 <acVWX8vkhZiFfonP@mail-itl>
 <88c65ec7-b7f7-4d8b-a453-d707440b43cb@suse.com>
 <acZ8ez4dmQay1JSw@mail-itl>
MIME-Version: 1.0
Content-Type: multipart/signed; micalg=pgp-sha256;
	protocol="application/pgp-signature"; boundary="fej7YXlfo2xZKE7n"
Content-Disposition: inline
In-Reply-To: <acZ8ez4dmQay1JSw@mail-itl>
X-purgate-ID: tlsNG-d25034/1775134938-8254FA3D-92A60490/0/0
X-purgate-type: clean
X-purgate-size: 9770


--fej7YXlfo2xZKE7n
Content-Type: text/plain; protected-headers=v1; charset=utf-8
Content-Disposition: inline
Content-Transfer-Encoding: quoted-printable
Date: Thu, 2 Apr 2026 15:02:15 +0200
From: Marek =?utf-8?Q?Marczykowski-G=C3=B3recki?= <marmarek@invisiblethingslab.com>
To: Jan Beulich <jbeulich@suse.com>
Cc: xen-devel <xen-devel@lists.xenproject.org>,
	=?utf-8?B?SsO8cmdlbiBHcm/Dnw==?= <jgross@suse.com>,
	Roger Pau =?utf-8?B?TW9ubsOp?= <roger.pau@citrix.com>
Subject: Re: Slow (higher scheduling latency?) system after S3 - regression
 4.17 -> 4.19 ?

On Fri, Mar 27, 2026 at 01:47:55PM +0100, Marek Marczykowski-G=C3=B3recki w=
rote:
> Some further observation, this time regarding timers:

In the meantime Roger suggested it might be about C-states. So, I just
tried booting with max_cstate=3D0. I got this:

    [2026-04-02 11:41:57] (XEN) [    4.327519] mwait-idle: disabled

But then xenpm reports C1 is still used:

    # xenpm get-cpuidle-states=20
    Max possible C-state: C0

    cpu id               : 0
    total C-states       : 2
    idle time(ms)        : 3727115
    C0                   : transition [                   0]
                           residency  [             3769835 ms]
    C1                   : transition [                   0]
                           residency  [                   0 ms]

    cpu id               : 1
    total C-states       : 2
    idle time(ms)        : 3763654
    C0                   : transition [                   1]
                           residency  [                   0 ms]
    C1                   : transition [                   1]
                           residency  [             3769838 ms]

    cpu id               : 2
    total C-states       : 2
    idle time(ms)        : 3729168
    C0                   : transition [                   1]
                           residency  [                   0 ms]
    C1                   : transition [                   1]
                           residency  [             3769838 ms]

    cpu id               : 3
    total C-states       : 2
    idle time(ms)        : 3750226
    C0                   : transition [                   1]
                           residency  [                   0 ms]
    C1                   : transition [                   1]
                           residency  [             3769840 ms]

    cpu id               : 4
    total C-states       : 2
    idle time(ms)        : 3726369
    C0                   : transition [                   1]
                           residency  [                   0 ms]
    C1                   : transition [                   1]
                           residency  [             3769840 ms]

    cpu id               : 5
    total C-states       : 2
    idle time(ms)        : 3755733
    C0                   : transition [                   1]
                           residency  [                   0 ms]
    C1                   : transition [                   1]
                           residency  [             3769840 ms]

    cpu id               : 6
    total C-states       : 2
    idle time(ms)        : 3725747
    C0                   : transition [                   1]
                           residency  [                   0 ms]
    C1                   : transition [                   1]
                           residency  [             3769841 ms]

    cpu id               : 7
    total C-states       : 2
    idle time(ms)        : 3730190
    C0                   : transition [                   1]
                           residency  [                   0 ms]
    C1                   : transition [                   1]
                           residency  [             3769841 ms]

    cpu id               : 8
    total C-states       : 2
    idle time(ms)        : 3716485
    C0                   : transition [                   1]
                           residency  [                   0 ms]
    C1                   : transition [                   1]
                           residency  [             3769841 ms]

    cpu id               : 9
    total C-states       : 2
    idle time(ms)        : 3710830
    C0                   : transition [                   1]
                           residency  [                   0 ms]
    C1                   : transition [                   1]
                           residency  [             3769842 ms]

    cpu id               : 10
    total C-states       : 2
    idle time(ms)        : 3704881
    C0                   : transition [                   1]
                           residency  [                   0 ms]
    C1                   : transition [                   1]
                           residency  [             3769842 ms]

    cpu id               : 11
    total C-states       : 2
    idle time(ms)        : 3719333
    C0                   : transition [                   1]
                           residency  [                   0 ms]
    C1                   : transition [                   1]
                           residency  [             3769842 ms]

    cpu id               : 12
    total C-states       : 2
    idle time(ms)        : 3715059
    C0                   : transition [                   1]
                           residency  [                   0 ms]
    C1                   : transition [                   1]
                           residency  [             3769842 ms]

    cpu id               : 13
    total C-states       : 2
    idle time(ms)        : 3711681
    C0                   : transition [                   1]
                           residency  [                   0 ms]
    C1                   : transition [                   1]
                           residency  [             3769843 ms]

    cpu id               : 14
    total C-states       : 2
    idle time(ms)        : 3709380
    C0                   : transition [                   1]
                           residency  [                   0 ms]
    C1                   : transition [                   1]
                           residency  [             3769843 ms]

    cpu id               : 15
    total C-states       : 2
    idle time(ms)        : 3720119
    C0                   : transition [                   1]
                           residency  [                   0 ms]
    C1                   : transition [                   1]
                           residency  [             3769843 ms]

    cpu id               : 16
    total C-states       : 2
    idle time(ms)        : 3737637
    C0                   : transition [                   1]
                           residency  [                   0 ms]
    C1                   : transition [                   1]
                           residency  [             3769844 ms]

    cpu id               : 17
    total C-states       : 2
    idle time(ms)        : 3737662
    C0                   : transition [                   1]
                           residency  [                   0 ms]
    C1                   : transition [                   1]
                           residency  [             3769844 ms]

    cpu id               : 18
    total C-states       : 2
    idle time(ms)        : 3729870
    C0                   : transition [                   1]
                           residency  [                   0 ms]
    C1                   : transition [                   1]
                           residency  [             3769844 ms]

    cpu id               : 19
    total C-states       : 2
    idle time(ms)        : 3745564
    C0                   : transition [                   1]
                           residency  [                   0 ms]
    C1                   : transition [                   1]
                           residency  [             3769845 ms]

    cpu id               : 20
    total C-states       : 2
    idle time(ms)        : 3717089
    C0                   : transition [                   1]
                           residency  [                   0 ms]
    C1                   : transition [                   1]
                           residency  [             3769845 ms]

    cpu id               : 21
    total C-states       : 2
    idle time(ms)        : 3590257
    C0                   : transition [                   1]
                           residency  [                   0 ms]
    C1                   : transition [                   1]
                           residency  [             3769845 ms]

And the issue still happens...

Honestly, I'm confused about the above output. The system is mostly
idle, but I wouldn't expect it to be _that_ idle - there is xenstored +
xenconsoled running, plus occasional xl create for testing with
short-lived domU. Does it really all happen only on CPU0 here?

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

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

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

iQEzBAEBCAAdFiEEhrpukzGPukRmQqkK24/THMrX1ywFAmnOaNcACgkQ24/THMrX
1yyp+AgAj4GAG/xT8PTinO9+JGlXbFwmYWi9ykBHcTslns7tHSyNirLLKjlnA1sP
TIboxm6BrjOxHIdpQJK5AXfSGVX2Lms3JFCW1J235h7eKSqh+XxVhYR9hzRNTQBo
G1FxX3vd00WMx+AoWC2GCCK124j/Yha5Fw8WRbIC4ba1SkluScUmlCytstUkp+Sj
c1GBYjaDgOIn2DXnXVxjSwz2QBb92MpJdMQ+RaICtYEbaXGGIfAd4yaBdIdtIYT+
S3ajEsLVWJ8lMHKWF4ejEaWUpc6rkgVkFzslaLz8Y2eUEIfsfpZ+yl+vrkguflaf
KRvz9J5Iab4ZoR0Eh3qBqJnaFihz8Q==
=HOe2
-----END PGP SIGNATURE-----

--fej7YXlfo2xZKE7n--


From xen-devel-bounces@lists.xenproject.org Thu Apr 02 13:03:41 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 02 Apr 2026 13:03:41 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1271884.1559878 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1w8Hi0-0001jN-4d; Thu, 02 Apr 2026 13:03:40 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1271884.1559878; Thu, 02 Apr 2026 13:03: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 1w8Hi0-0001jG-1e; Thu, 02 Apr 2026 13:03:40 +0000
Received: by outflank-mailman (input) for mailman id 1271884;
 Thu, 02 Apr 2026 13:03:38 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <jbeulich@suse.com>) id 1w8Hhy-0001j6-L3
 for xen-devel@lists.xenproject.org; Thu, 02 Apr 2026 13:03:38 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1w8Hhy-008CQ1-1C
 for xen-devel@lists.xenproject.org; Thu, 02 Apr 2026 15:03:38 +0200
Received: from [10.42.69.4] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <jbeulich@suse.com>)
 id 69ce6923-5cb7-0a2a0a5109dd-0a2a4504edbe-18
 for <xen-devel@lists.xenproject.org>; Thu, 02 Apr 2026 15:03:37 +0200
Received: from [209.85.128.44] (helo=mail-wm1-f44.google.com)
 by tlsNG-ebf023.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.0)
 (envelope-from <jbeulich@suse.com>)
 id 69ce6929-bb33-0a2a45040019-d155802cc582-3
 for <xen-devel@lists.xenproject.org>; Thu, 02 Apr 2026 15:03:37 +0200
Received: by mail-wm1-f44.google.com with SMTP id
 5b1f17b1804b1-486fd3a577eso7607815e9.1
 for <xen-devel@lists.xenproject.org>; Thu, 02 Apr 2026 06:03:37 -0700 (PDT)
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-4887c8d07cesm61446195e9.28.2026.04.02.06.03.36
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Thu, 02 Apr 2026 06:03:37 -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=google header.d=suse.com header.i="@suse.com" header.h="Content-Transfer-Encoding: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=1775135017; x=1775739817; darn=lists.xenproject.org;
        h=content-transfer-encoding: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;
        bh=QDQtcHnd3MirlEmo5DRIiY01a7CnSZ+4+yBBAAKQROM=;
        b=coLSVhWrmomnUmcsGIsy9vHIg6YFTut4+jHMKLTyZGcV5PBAy9f/Dl42tvV3AcsZMl
         qPr9CDZdeuUA5yPW9+TbCCu5D0S8pAsglGocrA3373FnsorKmQ+5/FylLlaipovBP8Gg
         AGO2PSEnM4mrFYd8py9N9VucAaxFEHhimHHIXY7WaZeEb/boWk6vBUbLLat+FlP4VtFT
         9xhOMYsXug2hfVFzEsvjPh/q3e19uslb4W464L7TWDArdtjN2yKCK9zZCfRm5nqltt8I
         uIleDs4nstqKyX2RZEIzofGY750RrVO4bDybl9EXGJqERcnzjwTH/CfQ516hhqNdLezs
         L5ng==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20251104; t=1775135017; x=1775739817;
        h=content-transfer-encoding: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;
        bh=QDQtcHnd3MirlEmo5DRIiY01a7CnSZ+4+yBBAAKQROM=;
        b=WHsd0ywuq2EVA0IP7z/VZxu34gXuYI8QE61cuZt609Y+NC1c1ZcMIjz+KTOrwIzRml
         M7vSuMIfZyORoriIuHJcA9k+e73FEmRVPYReY6f6+58jO/UGy+M5h/dDQ0iH+wjSnKqU
         Ls2JAnABo1YtYwVl6RBfPcCxtc/1usELYntC3hcM49YCssRXrdaAkgNJPOjT/dbZVCJk
         qiTlvf0Vkvy0/qvDa0sUJZR7P2boNIaiVUxsP0dpIeCkINTFvbgDC52mZDc8YTItP4gi
         /rN4s/fvSjPx8R1g+v/KPpVtvBVqni6j82J4s72BXZ6wgt3x7kqaqVTOqmQMDUIMURbs
         R/KA==
X-Gm-Message-State: AOJu0YwnAaM6MNi/BR9k9907iubgUg2VMxCfKSchTghGx28Ma4wFUmZk
	LvunT4R7k4NtproXv4jrwmeqxY1oY63Hl7j5wclXYAxaT8fu4YKZKyy+cCLC3U6TUg==
X-Gm-Gg: ATEYQzz4wBYn7zB9lAKjGce2rLCnqgnvYUN8J6br0a8NEw72OlKctHK7ceCwsFV6Sqy
	pW0gjTX6YhmFSRiDVi4oKN7Bm9ZTNe7TbLstTQEo+ZQCWqaUAfIiZHhyVw+w+HBCHn01pVVpxDY
	a4J1O8q2cW+dZcJCDum8Z3ci4KW0mBY8i+wZaQrN76ARb6O3w/xWovFW04QW1roxNkgSMAADHUn
	TutdFVkkNATdXFcYIyRWKz1ksRsYmBg7hJfTIwxgiU08DNZDir0twryNBdJNwEi4tGcGrJyZAP8
	E1NOnqCq7qJwC/EWjVfw3wQp+OZt7yEWHhK4MuUh5UrrWqSTjAFCusm3ife3s9WQ3Ioa7q9gQlF
	r5WZEFctGedaD377yODef3W+vzLj5/mD6aU9+FUeU5jSNVfAx05fEc6N1xnUf1moA+Td9NG7Duj
	qD4McNlZeYPsiPCZUBtyib0PZtuoU8MZzvJYj3cHq7eANEsPaoR1ReeD5LJmaAmWIyWm5DZ//Se
	/rwQ39ecHezpnGlaVvdsgzwyg==
X-Received: by 2002:a05:600c:4f91:b0:485:3b5b:eb8 with SMTP id 5b1f17b1804b1-488835cd541mr118149665e9.26.1775135017337;
        Thu, 02 Apr 2026 06:03:37 -0700 (PDT)
Message-ID: <5eb109ff-c786-4b05-a438-78a5b93193a5@suse.com>
Date: Thu, 2 Apr 2026 15:03:36 +0200
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: Slow (higher scheduling latency?) system after S3 - regression
 4.17 -> 4.19 ?
To: =?UTF-8?Q?Marek_Marczykowski-G=C3=B3recki?=
 <marmarek@invisiblethingslab.com>
Cc: xen-devel <xen-devel@lists.xenproject.org>, =?UTF-8?B?SsO8cmdlbiBHcm8=?=
 =?UTF-8?B?w58=?= <jgross@suse.com>, =?UTF-8?Q?Roger_Pau_Monn=C3=A9?=
 <roger.pau@citrix.com>
References: <aPzBO_eW8mQHM66u@mail-itl> <acQzzlXNDxNq885V@mail-itl>
 <29775afa-e17b-4c44-a2a8-4ef4bc7cdf0f@suse.com> <acUqOL232lp-Lw1v@mail-itl>
 <cbed767b-4ac4-4989-8778-43ff321ae977@suse.com> <acVWX8vkhZiFfonP@mail-itl>
 <88c65ec7-b7f7-4d8b-a453-d707440b43cb@suse.com> <acZ8ez4dmQay1JSw@mail-itl>
 <ac5l-HgbDRcVkiWb@mail-itl>
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: <ac5l-HgbDRcVkiWb@mail-itl>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
X-purgate-ID: tlsNG-ebf023/1775135017-3373251B-757BA64C/0/0
X-purgate-type: clean
X-purgate-size: 502

On 02.04.2026 15:02, Marek Marczykowski-Górecki wrote:
> On Fri, Mar 27, 2026 at 01:47:55PM +0100, Marek Marczykowski-Górecki wrote:
>> Some further observation, this time regarding timers:
> 
> In the meantime Roger suggested it might be about C-states. So, I just
> tried booting with max_cstate=0. I got this:
> 
>     [2026-04-02 11:41:57] (XEN) [    4.327519] mwait-idle: disabled
> 
> But then xenpm reports C1 is still used:

Of course, that represents use of the HLT insn.

Jan


From xen-devel-bounces@lists.xenproject.org Thu Apr 02 13:10:51 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 02 Apr 2026 13:10:51 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1271903.1559887 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1w8Hot-0003UL-R7; Thu, 02 Apr 2026 13:10:47 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1271903.1559887; Thu, 02 Apr 2026 13:10: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 1w8Hot-0003UE-NS; Thu, 02 Apr 2026 13:10:47 +0000
Received: by outflank-mailman (input) for mailman id 1271903;
 Thu, 02 Apr 2026 13:10:46 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <jbeulich@suse.com>) id 1w8Hos-0003U8-DH
 for xen-devel@lists.xenproject.org; Thu, 02 Apr 2026 13:10:46 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1w8Hor-006TsW-P6
 for xen-devel@lists.xenproject.org; Thu, 02 Apr 2026 15:10:45 +0200
Received: from [10.42.69.12] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <jbeulich@suse.com>)
 id 69ce6ab8-bab6-0a2a0a5309dd-0a2a450c9af0-46
 for <xen-devel@lists.xenproject.org>; Thu, 02 Apr 2026 15:10:45 +0200
Received: from [209.85.128.51] (helo=mail-wm1-f51.google.com)
 by tlsNG-d25034.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.0)
 (envelope-from <jbeulich@suse.com>)
 id 69ce6ad5-f40c-0a2a450c0019-d1558033e899-3
 for <xen-devel@lists.xenproject.org>; Thu, 02 Apr 2026 15:10:45 +0200
Received: by mail-wm1-f51.google.com with SMTP id
 5b1f17b1804b1-4853c1ca73aso8511245e9.2
 for <xen-devel@lists.xenproject.org>; Thu, 02 Apr 2026 06:10:45 -0700 (PDT)
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-4887e822227sm218935645e9.4.2026.04.02.06.10.44
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Thu, 02 Apr 2026 06:10:44 -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=google header.d=suse.com header.i="@suse.com" header.h="Content-Transfer-Encoding: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=1775135445; x=1775740245; darn=lists.xenproject.org;
        h=content-transfer-encoding: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;
        bh=+GiadCBpp/EPZJ4qjhCkJKpc2ggsBpsuuZYB8N8xf+g=;
        b=HxrsXIop7RVOskq/Wotd3iiuwFyKAF7SlmjspU9Rl0VZVoeHEEhgwg49dA6lMPP/js
         tbtpI6FZl3DNEdIRkthe/qHg5lchUnH9jgJlWG3kOCUgnK1XEJSo1tIvSchdzVmDNYfx
         78ZP4QnFAc/sZuHsrvb6hhwUfh4Hhlf4ckrsIItEM1chZpppKkqTXTspgOxSjR1FaQFu
         6CISRnKyJx/y6T1aTkrkEVuBkiRce1mxIU7R00ZUr7gol9bkZFc6he0TFBefaR5DrZzU
         UKmGw7zhatRLuDfu7sTUzt0bUuxPKgo/JRrnMmayVU8j/Z41S63NeQs1erwoB/uiY3a+
         Cg1A==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20251104; t=1775135445; x=1775740245;
        h=content-transfer-encoding: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;
        bh=+GiadCBpp/EPZJ4qjhCkJKpc2ggsBpsuuZYB8N8xf+g=;
        b=UojxBKP4kPRbsoUDgO86z/Ywz6Mso8oPweqMiUX/jp7Fy8XT3M+zd9mvVu9oG/wfSU
         zEZxScEUagWpziviQfmgRDPrtAnPPDK13PCNW+GoGrt0BclReLRgquSm6nGyGsxBoFBM
         gXl63cAg2sK/msjFX9B7aB+ARs+VFm12RZEft73If5eo7STghBBNCKPYVFNc8sZtC8xF
         BR6/Zs98kX4gwCJgRnGK6MVnb9a1EOMAeXHKTFbkZI0AgW3cDNo/qBohP54ZjAZC3Zxp
         c0xG1WsO5Nq8YXm+sx6BbAz8TadCh//tQZH9CvowZ5L/A8j4PA92aJqjZrzFqCcB1rTo
         gLEg==
X-Forwarded-Encrypted: i=1; AJvYcCVIJlsa5mHjPzHrAZHMHoOixQ6itaw4S9LuAQWLvqZ8RiEhqDfp7bR8vPFYVyIwETD1JqKWahAT7as=@lists.xenproject.org
X-Gm-Message-State: AOJu0YwJmRONHdo5AFDAbiWrB8phMsKtx4aOVdrZGRkXwKatxyTkUwnq
	DIuV+m8KFnSQC1e10LVlGBr3UgUQqy9YmfFLtf7yFKHwV0kLIGAt+ZQglxpfwUTadg==
X-Gm-Gg: ATEYQzz2yz5i6NEu4hiROkKy0gig8/gFSVp2uuUBNtGaE7871og2tVTt0wr8Gjz8W+t
	p+q/y+pK76cb95ELkgYDVPuPtMq1smnGn3MqjVzppfesfe4jye7HposVXzxvw3dDQP9Fs0k1CuW
	UEuEdXdsuhlYYbrf1aNBWd51QiAQe1zqlBX8Y08FR8aJyvUEUqswYqn5GcEO5JEwAN6uMUAsD5C
	isDQ/Ydb5ikL5EYlmXf4rUJsFPJFWXWtj9+N+ns4lJ0ttAFUJVlPIkBZiKfCfXPAV3wDPAF+JIT
	n4Y9x66qKVR+1FNXYFOnEextklV3BzNmUYWOeqvRcIkVqMh4c7vrzH8U93izzj2DJjcexBTF9v7
	OD8lqIsx1NVW0payXyFNtqfAh1GoWxlY7jE79Hx1DHYVNW5/Rl6ulWqenVaUAUeJVneqOWWwTLr
	ah9pVOB2j91QCkMolKgkjIVMnYScoCBg8eHi3QYLos2yPWLruQTX0oJ391sa0LPayq03cMpETzO
	Tla6hzJJpCwjQw=
X-Received: by 2002:a05:600c:4707:b0:486:f634:ef1 with SMTP id 5b1f17b1804b1-48883597cfamr134534075e9.17.1775135444917;
        Thu, 02 Apr 2026 06:10:44 -0700 (PDT)
Message-ID: <0519fb8a-48e3-4f36-8d6c-a966080ffb55@suse.com>
Date: Thu, 2 Apr 2026 15:10:43 +0200
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH v1 18/27] xen/riscv: add vaplic access check
To: Oleksii Kurochko <oleksii.kurochko@gmail.com>
Cc: Romain Caritey <Romain.Caritey@microchip.com>,
 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.pau@citrix.com>,
 Stefano Stabellini <sstabellini@kernel.org>, xen-devel@lists.xenproject.org
References: <cover.1773157782.git.oleksii.kurochko@gmail.com>
 <0fc9adf790d4f981e8117bd9759c7e64bb11e439.1773157782.git.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: <0fc9adf790d4f981e8117bd9759c7e64bb11e439.1773157782.git.oleksii.kurochko@gmail.com>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 7bit
X-purgate-ID: tlsNG-d25034/1775135445-83746A3D-F2DA4913/0/0
X-purgate-type: clean
X-purgate-size: 1404

On 10.03.2026 18:08, Oleksii Kurochko wrote:
> --- a/xen/arch/riscv/aplic.c
> +++ b/xen/arch/riscv/aplic.c
> @@ -38,6 +38,7 @@ static struct aplic_priv aplic = {
>  
>  static struct intc_info __ro_after_init aplic_info = {
>      .hw_version = INTC_APLIC,
> +    .private = &aplic,

Isn't this the host instance again? How can you ...

> --- a/xen/arch/riscv/vaplic.c
> +++ b/xen/arch/riscv/vaplic.c
> @@ -127,6 +127,20 @@ int vaplic_map_device_irqs_to_domain(struct domain *d,
>      return 0;
>  }
>  
> +static int cf_check vaplic_is_access(const struct vcpu *vcpu,
> +                                     const unsigned long addr)
> +{
> +    const struct vaplic *vaplic = to_vaplic(vcpu->domain->arch.vintc);
> +    const struct aplic_priv *priv = vaplic->base.info->private;
> +    const paddr_t paddr_end = priv->paddr_start + priv->size;
> +
> +    /* check if it is an APLIC access */
> +    if ( priv->paddr_start <= addr && addr < paddr_end )

... use that here? Or asked differently, again: Where's the virtualization,
i.e. the abstraction away from host properties?

Furthermore, is it really sufficient to check just the starting address of
an access? Shouldn't the last byte accessed also fall into the range in
question?

> +        return 1;
> +
> +    return 0;
> +}

This function looks to want to return bool (and then use true/false).

Jan


From xen-devel-bounces@lists.xenproject.org Thu Apr 02 13:46:24 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 02 Apr 2026 13:46:24 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1271938.1559895 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1w8INF-0007ay-Ae; Thu, 02 Apr 2026 13:46:17 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1271938.1559895; Thu, 02 Apr 2026 13:46: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 1w8INF-0007ar-7o; Thu, 02 Apr 2026 13:46:17 +0000
Received: by outflank-mailman (input) for mailman id 1271938;
 Thu, 02 Apr 2026 13:46:15 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <roger.pau@citrix.com>) id 1w8IND-0007al-By
 for xen-devel@lists.xenproject.org; Thu, 02 Apr 2026 13:46:15 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1w8INC-008Mwd-OT
 for xen-devel@lists.xenproject.org; Thu, 02 Apr 2026 15:46:14 +0200
Received: from [10.42.69.5] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <roger.pau@citrix.com>)
 id 69ce7315-2eae-0a2a0a5409dd-0a2a450599aa-32
 for <xen-devel@lists.xenproject.org>; Thu, 02 Apr 2026 15:46:14 +0200
Received: from [52.101.57.54]
 (helo=BN8PR05CU002.outbound.protection.outlook.com)
 by tlsNG-c201ff.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.0)
 (envelope-from <roger.pau@citrix.com>)
 id 69ce7325-3760-0a2a45050019-34653936402f-3
 for <xen-devel@lists.xenproject.org>; Thu, 02 Apr 2026 15:46:14 +0200
Received: from CH7PR03MB7860.namprd03.prod.outlook.com (2603:10b6:610:24e::14)
 by CH4PR03MB7602.namprd03.prod.outlook.com (2603:10b6:610:236::9)
 with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9769.16; Thu, 2 Apr
 2026 13:46:11 +0000
Received: from CH7PR03MB7860.namprd03.prod.outlook.com
 ([fe80::f5ba:35df:1c9f:b343]) by CH7PR03MB7860.namprd03.prod.outlook.com
 ([fe80::f5ba:35df:1c9f:b343%4]) with mapi id 15.20.9769.014; Thu, 2 Apr 2026
 13:46: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=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=h8/UQc8axSA41dqS1CITE6TMp0E6/UDjena30otZAjx4wiJ3g4A1zDBuA7QYcmEGTxRC6KwavOkU24VkD9BzxOSelsFNRV6YXN8MocUN9qw3KnP4jMKn9Oct9eYfdN04g7GzvYmlEj2Mg2neMTF6Gcbc8uecu7iAMakHBU0qO4m4OoUTsI3NXHodINrl2wHZYP0NknVQXWi6lO0O/DHGbqisIa+V3vAOZDfWqHnFM1cVOt5z75ybk91G2peFluDXxeGFaPNgZCBK+z+QcJGtwMk7vDeEv/NfEN5OXwq5+WNb05YF6nNbp+PCQti4hO8is7pyz7T91CJpOSkSXrTJNg==
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com;
 s=arcselector10001;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1;
 bh=JjuCzCu9l3c0FgRD9+k5xTZ56Hp4cgz6aZuEbcUI6e8=;
 b=hQQTI9k5demWbyfd31HSdCJ8YJRzt7dNHeIKSLnDeLhlC2gP5XRg4EupuZ0+8QKlvHOffWBbQ0pdmrOcuH146j96Ujg7pEgFITLvlzLiYR6T9Kzi71yU81xoEPEwsdn4IuH1boEN6F5uR/FXYORJQzZ7hi35a7BJJ312OD12wZWwE5GzbiAeGjhUqxWqaEVwK3lG1qpMOpa9dNdS/9qfCptcoeEaPPPozgx18THk4vB/HVraG7YKiPfOOoKRiYXsgBfIR0o+H7XeJJMYR/ooN8K8sQtAsUCP/+KMygUMe7qqSi4TtYsHbLAn/qIF/peY0U9xPInR6KAXeMHOrwi3Uw==
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=JjuCzCu9l3c0FgRD9+k5xTZ56Hp4cgz6aZuEbcUI6e8=;
 b=w8gMFhbUwI61qRf+xe2YLrCh5r9NLh0TbF43U4v0RSGupKFOnh6KOI4k8BobGaydqhU17Bi45rju0dSuByCUZDpENKF+McLGbYqPtXNjLqlfuIuhG3CVvDwtJozqTqwpE87/Ou2vr0Wj/ALY6ySATJ3S3VzHO55UZsXtMLGrD28=
Authentication-Results: dkim=none (message not signed)
 header.d=none;dmarc=none action=none header.from=citrix.com;
Date: Thu, 2 Apr 2026 15:46:05 +0200
From: Roger Pau =?utf-8?B?TW9ubsOp?= <roger.pau@citrix.com>
To: Jan Beulich <jbeulich@suse.com>
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>,
	Alistair Francis <alistair.francis@wdc.com>,
	Connor Davis <connojdavis@gmail.com>,
	Oleksii Kurochko <oleksii.kurochko@gmail.com>,
	Bertrand Marquis <bertrand.marquis@arm.com>,
	Volodymyr Babchuk <volodymyr_babchuk@epam.com>,
	Timothy Pearson <tpearson@raptorengineering.com>
Subject: Re: [PATCH 1/2] make ioremap_attr() common
Message-ID: <ac5zHQO4k-Hr45BO@wifi-campus-l-10-3-197-236.u-ga.fr>
References: <924f3ef2-7883-4322-a921-edc814c96719@suse.com>
 <81e4f7e0-df57-4a5b-b16d-fe668682d94c@suse.com>
 <ac5d1zBaSQk7f0nE@wifi-campus-l-10-3-197-236.u-ga.fr>
 <b7e7b1e5-60ff-419f-9a89-2ac7fc3cd21c@suse.com>
Content-Type: text/plain; charset=utf-8
Content-Disposition: inline
Content-Transfer-Encoding: 8bit
In-Reply-To: <b7e7b1e5-60ff-419f-9a89-2ac7fc3cd21c@suse.com>
X-ClientProxiedBy: GV0P278CA0024.CHEP278.PROD.OUTLOOK.COM
 (2603:10a6:710:28::11) To CH7PR03MB7860.namprd03.prod.outlook.com
 (2603:10b6:610:24e::14)
MIME-Version: 1.0
X-MS-PublicTrafficType: Email
X-MS-TrafficTypeDiagnostic: CH7PR03MB7860:EE_|CH4PR03MB7602:EE_
X-MS-Office365-Filtering-Correlation-Id: 5d9b4212-b736-44ee-d3b1-08de90be32e6
X-MS-Exchange-SenderADCheck: 1
X-MS-Exchange-AntiSpam-Relay: 0
X-Microsoft-Antispam:
	BCL:0;ARA:13230040|1800799024|7416014|376014|366016|18002099003|56012099003|22082099003;
X-Microsoft-Antispam-Message-Info:
	xZX9BYiqUNalaCUx97Dt27XSOs91G8zTouosVk536PvAOZ/QxRiXYOwZMMeUlBOTHzluyfIm/GNsBwjhpeJrjimej1zzjGoWWVUsNscVbJyQdRZCD4lxh2SsO/Q8yiA9r+xmehBZ4BxwLGYQjH6rbAnt96iR4BpAts2yEeZWz9h72gbdYR2hrsMPklfnmN56wwddBikgMIjBELl2+vKaLmwqNByGrhmbo00eKrH9bOdjEd9NE1ELAyKS1jldcG0OWJGMIIJtqpEDE3PGbRm6f4sWPwg22yTqIgVawojiWVx4B7psJgpnXg6/1yQ8Aq2oF/4cRqdABoab7mHzQJbgTBsXLGp4r7n6jalCsWc+yq9uwfPMGUIW9SvXCyHd+BQleCBuLEEqM56p0H6XUZlbA893zc6cWGLExE1tC8k60YD50968/jXt6WKjMttjS5w34rWApGIdkLZ2iqOroaz486rTU3eXzIemQm+LKhyXXF5GVbcieu17s4IWdgOlAi3VQ9bCEozknIFntT+wTjMXtgRIy9xLbDtasx41pW6eHKeZKLhq8L5xYwQ1fvMIx9AqzSNxVXs6tBiJkVtzcQLqeO0u4HUbKZjbKjacPU8YPHQzSCbSog96rH8kYI+hFc630wLot/4a5ceYUJU4xyEOCCmowbwbd1b7xQA0kzREfSPnj5tMi+LLdvUeW0T9hQaQeB5mhYArXrZpluAQ4Gaha97N0CBdcaLqnB9rv/Z2Wkc=
X-Forefront-Antispam-Report:
	CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:CH7PR03MB7860.namprd03.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(1800799024)(7416014)(376014)(366016)(18002099003)(56012099003)(22082099003);DIR:OUT;SFP:1101;
X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1
X-MS-Exchange-AntiSpam-MessageData-0:
	=?utf-8?B?aG94bjU0ai9OQUxCa2R6VVFDOWFIWWVlWHpNNEtCdEdhTFJ2THQwcEFFWmpZ?=
 =?utf-8?B?MGR1WHNtellJeXdJVktlYW1kM0tJMXhoQmJ6WHQ3ZkpQejB4aDVBalB2anpN?=
 =?utf-8?B?Q0wwZGcwSldFcnkxU05Mbmg2aUFZcHYwU3NhSXdFQ2ZnbTBFb3VXSi9NbDd3?=
 =?utf-8?B?dUMrSGlEcmE2QVpYZXcyb09uRE1sZDJUSjZIdDh5SHl3a2hUVzJNMlUwZ0Rn?=
 =?utf-8?B?bmlaYjVsaFRTWjU1ZGNYN1o4QTFOcG9keDErUzl4VVcvR094OUt4WmNjVmI1?=
 =?utf-8?B?aTNKU01udXpSRG5SWVkyMUpoRyszWUtvNzBhUWtqbElsVkVJY1c1aFdxeHEr?=
 =?utf-8?B?NTliUTIvYVJtYWxOOWttcDNrL3VBcXY2WkpnVkNWbEJHWTllWkFHWTlQYmxq?=
 =?utf-8?B?MGI4V1RWR24zNUFac08wZTFHdjJjWUVqdlhOaEJVTGNjWkdNVGlhQzFKUU04?=
 =?utf-8?B?TG9LaHF3Sk5USkJ6V2Zab3NMZUxqQmFwREtKZStNYlE1U2hDRlBQbktsZUhS?=
 =?utf-8?B?Uk1abHE0WHczUTZnY1NIeUpzSWp5YXFQbVhOQlZ3ekxWbGdtaWIzMU9vRzd4?=
 =?utf-8?B?QkUyRGVFbDYrSDRieVZqcTRLWHdsNkV6a2VKSkRRK0RXRDQrcXBkc3MwdnI1?=
 =?utf-8?B?Q3JhTXNOWnB3Mllwb2RHQ2g2TC82eUNCenM4VDIwMEQzeUsvZHBjNWZqdTdj?=
 =?utf-8?B?dDF1WGc3Y2VXNVQrZndOandxSklBaURIUDJvUkNYcmJPZ3BtaGhINm9TZkwz?=
 =?utf-8?B?bUtFcGNxRkNiSnhQa0VTbVNWZ2FtT1M2RHhSNlpQbFhHeDhlRFJWR3I3dUww?=
 =?utf-8?B?WGJhUEVuTmV2ZENNcUNVU1dQK0JLa2hFSENhcURXWkFLV1dXN3ZOZURId25Y?=
 =?utf-8?B?NFVRcjZUd3QzRG1TWHpya1NBM1hIczhJZEFucVFWS2tvdFF0MHpEaGxLV1pB?=
 =?utf-8?B?dGl1Ums4T1hXdC9oaE1PWXZ1dVpIVkpoVlR5bnJzNzk1aEduSjBrSEpvTXBn?=
 =?utf-8?B?OU0zRXA1QWJrNS9OT3BOUGtGTGhJeERiQ25heWVhVVh4TVdUakVSV1pwSHhR?=
 =?utf-8?B?dzZ1QjR6Mk9xV09oWUo4WHJHS25MN2VuRnRwMERyTW1LVXNTOHNHV2p2MlpS?=
 =?utf-8?B?eXdMeTVlRmxlc1VodDU0bVM5eCtLc0U5d0I2bTNRbUFVeGkwZEJaaVZsSUVV?=
 =?utf-8?B?b3NUTitCanZ6VWgzdmpPbEZFNzlnNXJIMmc5RlFpYzJkaTNkOWxqK1BhdU5z?=
 =?utf-8?B?S3I5MzdDblZpOFBaRVhsSWNySStUTEdqN3NWalFWMlFuS3ZIN0puSGJ4clpw?=
 =?utf-8?B?TlplVlFJcWFENk9ieVcvMTJabCtSSUhyZFVXMVg3NmwxZFNGcDIxTVdaYktk?=
 =?utf-8?B?UnlNLzZwelpMdXRKRlM4NDUwa09MK3VmcU14Q1p6RnIvbENTN1dwQ285amVP?=
 =?utf-8?B?enVTcldvMGlyemsvajhmRFI0V0dieVNOWVJ2RHplVnMwVmliSDlPY3Q1R1JD?=
 =?utf-8?B?dksvMHo3OTVlTE5tKy8zek1peXlxMUNnUUdaVUQwNERuaE1mdEUxZlVrb0Q0?=
 =?utf-8?B?OG1pRklvTmxVL0VNZDdmTm5seXhkTW9hdkdteDZITlRyaUtMTFFIWEJKMVg3?=
 =?utf-8?B?cWhWaGp0MWhwWERQNis1WHVsR2xXa1hvZlpXZTBHVVB1bTlEWmJSSmNTWVpX?=
 =?utf-8?B?WVhiT1NzbjUwNDJrQ0Z3Tm5GQVIyTlRzOFU3VDhVQ0JmU1hqMjVJaXpjU2JT?=
 =?utf-8?B?RVRuSzRicWhCdmhlZk5jY0hqcCs0Ky9uZ3pjSWRyakxlS3FjdDhIU1MwMEZN?=
 =?utf-8?B?K1Zpa09DWmtOVEl6YlVoOVE3OVRLaXFPNjFHNGx6OUdvSjk3MDV6TUVTaE40?=
 =?utf-8?B?YXhxOENGMkdKcTJNWG5FdCtNTERteHpRTVo5c25RMnV4OFhDUlBoTkxLVUI3?=
 =?utf-8?B?d3RrMExoeDluL1QrZ29WWFM0R3NlSTRoeFIvVmg3d0w1dFMwQk5PRGlMV0xL?=
 =?utf-8?B?Zk00TTF5VXM2bHc0T0V2U0UrSU5EcjZXRkNScUFlWDJ2NE5FYWRSVlY4L0Ns?=
 =?utf-8?B?eXBNRFR0NERYdXhodG5VMEpkeWZoVnRmbXY2UDB4Tmx4OW9XTmxoRWZqVnV5?=
 =?utf-8?B?U0dPdnNJR3lKd3JFa09YTzZHemJsNkZGVVRXUFVOYWJYbVhuWndNcVB4RjAy?=
 =?utf-8?B?TEhzK0t1dVZiSFBFUS9nblhQdllNbHNzOCtvcndGdjBvenJ1YkRIeWJidCtn?=
 =?utf-8?B?eFFBay9tSGt5eVNEQnV6b255eDZSNUNoN280TmZJUmJxa0JIcmpwajdnbi92?=
 =?utf-8?B?WUZQVytlUVhLWEptM2Urb2cvclNkaE5JZk9kZVh3R05ZaFdTM1lhZz09?=
X-OriginatorOrg: citrix.com
X-MS-Exchange-CrossTenant-Network-Message-Id: 5d9b4212-b736-44ee-d3b1-08de90be32e6
X-MS-Exchange-CrossTenant-AuthSource: CH7PR03MB7860.namprd03.prod.outlook.com
X-MS-Exchange-CrossTenant-AuthAs: Internal
X-MS-Exchange-CrossTenant-OriginalArrivalTime: 02 Apr 2026 13:46:10.8054
 (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: yC5xnvf56S2uApgJB66ab93MMo5vLOQHUFvD7ZXrbB5jKSdRqnbZk8mFPEOhXKP3+bkmz1pD/agDKVMkDg+3BA==
X-MS-Exchange-Transport-CrossTenantHeadersStamped: CH4PR03MB7602
X-purgate-ID: tlsNG-c201ff/1775137574-393EC96F-E7ACA0A9/0/0
X-purgate-type: clean
X-purgate-size: 4054

On Thu, Apr 02, 2026 at 02:42:54PM +0200, Jan Beulich wrote:
> On 02.04.2026 14:15, Roger Pau Monné wrote:
> > On Thu, Feb 19, 2026 at 04:51:54PM +0100, Jan Beulich wrote:
> >> --- a/xen/arch/x86/mm.c
> >> +++ b/xen/arch/x86/mm.c
> >> @@ -6166,41 +6166,15 @@ void *__init arch_vmap_virt_end(void)
> >>      return fix_to_virt(__end_of_fixed_addresses);
> >>  }
> >>  
> >> -void __iomem *ioremap(paddr_t pa, size_t len)
> >> +void __iomem *x86_ioremap_attr(paddr_t pa, size_t len, pte_attr_t attr)
> >>  {
> >> -    mfn_t mfn = _mfn(PFN_DOWN(pa));
> >> -    void *va;
> >> -
> >> -    WARN_ON(page_is_ram_type(mfn_x(mfn), RAM_TYPE_CONVENTIONAL));
> >> +    WARN_ON(page_is_ram_type(PFN_DOWN(pa), RAM_TYPE_CONVENTIONAL));
> >>  
> >>      /* The low first Mb is always mapped. */
> >> -    if ( !((pa + len - 1) >> 20) )
> >> -        va = __va(pa);
> >> -    else
> >> -    {
> >> -        unsigned int offs = pa & (PAGE_SIZE - 1);
> >> -        unsigned int nr = PFN_UP(offs + len);
> >> -
> >> -        va = __vmap(&mfn, nr, 1, 1, PAGE_HYPERVISOR_UCMINUS, VMAP_DEFAULT);
> >> -        if ( va )
> >> -            va += offs;
> >> -    }
> >> -
> >> -    return (void __force __iomem *)va;
> >> -}
> >> -
> >> -void __iomem *__init ioremap_wc(paddr_t pa, size_t len)
> >> -{
> >> -    mfn_t mfn = _mfn(PFN_DOWN(pa));
> >> -    unsigned int offs = pa & (PAGE_SIZE - 1);
> >> -    unsigned int nr = PFN_UP(offs + len);
> >> -    void *va;
> >> -
> >> -    WARN_ON(page_is_ram_type(mfn_x(mfn), RAM_TYPE_CONVENTIONAL));
> >> -
> >> -    va = __vmap(&mfn, nr, 1, 1, PAGE_HYPERVISOR_WC, VMAP_DEFAULT);
> >> +    if ( !((pa + len - 1) >> 20) && attr == PAGE_HYPERVISOR_UCMINUS )
> >> +        return (void __force __iomem *)__va(pa);
> > 
> > Sorry, I'm possibly a bit lost: I see that on the bootstrap
> > page-tables we map the VGA hole (0xa0000-0xc0000) as UC-, but I'm not
> > seeing this being done to the directmap?
> 
> I'm not changing that aspect here, do I? ioremap() used the direct map
> (apparently assuming the cache attribute is suitable), and so do I now.
> 
> Yet then, to address the point you make anyway, I certainly see use of
> __PAGE_HYPERVISOR_UCMINUS in l1_directmap[].

Yes, sorry, I know you are not adding this here.  Just took a look at
the code, and I couldn't find where the directmap entries for the low
1M get adjusted to use UC-.  I should have made the comment clearer.

> >> --- /dev/null
> >> +++ b/xen/common/ioremap.c
> >> @@ -0,0 +1,42 @@
> >> +/* SPDX-License-Identifier: GPL-2.0-only */
> >> +
> >> +#include <xen/mm.h>
> >> +#include <xen/pfn.h>
> >> +#include <xen/vmap.h>
> >> +
> >> +#include <asm/io.h>
> >> +
> >> +void __iomem *ioremap_attr(paddr_t pa, size_t len, pte_attr_t attr)
> >> +{
> >> +    void __iomem *ptr = NULL;
> >> +    unsigned int offs = PAGE_OFFSET(pa);
> >> +
> >> +#ifdef arch_ioremap_attr
> >> +    ptr = arch_ioremap_attr(pa, len, attr);
> >> +    if ( PAGE_OFFSET(ptr) )
> >> +        return ptr;
> > 
> > IMO it's a bit confusing to deal with the offset addition detached
> > form here, I would rather do:
> > 
> > if ( ptr != NULL )
> > {
> >     ASSERT(PAGE_OFFSET(ptr) == offs);
> >     return PAGE_OFFSET(ptr) ? ptr : ptr + off;
> > }
> > 
> > And get rid of the !ptr check in the if below.  So that when
> > arch_ioremap_attr() succeeds it's all dealt with in the #ifdef
> > protected block.
> 
> Possible, yet I deemed the other variant better.

OK, I'm not going to insist then.  It just took me a bit to notice the
extra !ptr check in the if condition below.

> The assertion you suggest isn't valid anyway (see the last sentence of the
> description and xen/arch/arm/mpu/mm.c:ioremap_attr() prior to Michal's
> "xen/arm: mpu: Fix ioremap_attr region size and return value"). Now that
> that's changing, things may indeed be possible to simplify here.

Oh, I see, right you are.  It should be:

ASSERT(!PAGE_OFFSET(ptr) || PAGE_OFFSET(ptr) == offs);

Thanks, Roger.


From xen-devel-bounces@lists.xenproject.org Thu Apr 02 13:53:50 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 02 Apr 2026 13:53:50 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1271956.1559904 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1w8IUV-0000oE-AD; Thu, 02 Apr 2026 13:53:47 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1271956.1559904; Thu, 02 Apr 2026 13:53: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 1w8IUV-0000o7-6z; Thu, 02 Apr 2026 13:53:47 +0000
Received: by outflank-mailman (input) for mailman id 1271956;
 Thu, 02 Apr 2026 13:53:46 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <Luca.Fancellu@arm.com>) id 1w8IUT-0000o1-Og
 for xen-devel@lists.xenproject.org; Thu, 02 Apr 2026 13:53:46 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1w8IUT-006cnS-4X
 for xen-devel@lists.xenproject.org; Thu, 02 Apr 2026 15:53:45 +0200
Received: from [10.42.69.4] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <Luca.Fancellu@arm.com>)
 id 69ce74df-e002-0a2a0a5209dd-0a2a4504df60-14
 for <xen-devel@lists.xenproject.org>; Thu, 02 Apr 2026 15:53:44 +0200
Received: from [40.107.130.20]
 (helo=MRWPR03CU001.outbound.protection.outlook.com)
 by tlsNG-ebf023.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.0)
 (envelope-from <Luca.Fancellu@arm.com>)
 id 69ce74e7-bb33-0a2a45040019-286b8214f44b-3
 for <xen-devel@lists.xenproject.org>; Thu, 02 Apr 2026 15:53:44 +0200
Received: from AS9PR04CA0031.eurprd04.prod.outlook.com (2603:10a6:20b:46a::10)
 by DU4PR08MB11032.eurprd08.prod.outlook.com (2603:10a6:10:570::10)
 with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9769.15; Thu, 2 Apr
 2026 13:53:36 +0000
Received: from AMS0EPF000001B1.eurprd05.prod.outlook.com
 (2603:10a6:20b:46a:cafe::61) by AS9PR04CA0031.outlook.office365.com
 (2603:10a6:20b:46a::10) with Microsoft SMTP Server (version=TLS1_3,
 cipher=TLS_AES_256_GCM_SHA384) id 15.20.9745.30 via Frontend Transport; Thu,
 2 Apr 2026 13:53:36 +0000
Received: from outbound-uk1.az.dlp.m.darktrace.com (4.158.2.129) by
 AMS0EPF000001B1.mail.protection.outlook.com (10.167.16.165) with Microsoft
 SMTP Server (version=TLS1_3, cipher=TLS_AES_256_GCM_SHA384) id 15.20.9745.21
 via Frontend Transport; Thu, 2 Apr 2026 13:53:36 +0000
Received: from DU2PR08MB7272.eurprd08.prod.outlook.com (2603:10a6:10:2d7::16)
 by DB9PR08MB11498.eurprd08.prod.outlook.com (2603:10a6:10:60e::6)
 with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9769.17; Thu, 2 Apr
 2026 13:52:34 +0000
Received: from DU2PR08MB7272.eurprd08.prod.outlook.com
 ([fe80::5d34:206f:373:a323]) by DU2PR08MB7272.eurprd08.prod.outlook.com
 ([fe80::5d34:206f:373:a323%6]) with mapi id 15.20.9769.018; Thu, 2 Apr 2026
 13:52: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=arm.com header.i="@arm.com" header.h="From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck"; dkim=pass header.s=selector1 header.d=arm.com header.i="@arm.com" header.h="From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck"
ARC-Seal: i=2; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=pass;
 b=Fznp38IiYihEhsiUIK/mTxsHj6u1fw9aBea03SEAaBGAq5KE+naLSsu1gYHu+5CAV3XQ6LaY3E8O9evc2Wbc/NCMiUZw5IZTNf8ZpsVj6lFaDJhMe9CAnhupkI6zkpREjPNkydBBWeTLitsunY0UxoY/LeoSkO0LYayGhvDS+aFLFsza8hCmATDGTtTQB2s1CttqE2/UlREiQqfUczrlX8zkuZOMrgaHwUNxCpvucJuNSyNlQIVzNFWbY3t1KENaK8L+Mf9FPhpqCXuUvmZ3fHovUWloO6dDMZZT7UvpnlLaO4RZjJHlCDjZlCjJUsywRO4sHE/ojTZVSyjh45caIg==
ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com;
 s=arcselector10001;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1;
 bh=guZ76xgGdbjnIGMb4dvq5+mcx2b3gMQVs8akOL7JWVs=;
 b=TL8uyYUEiu2GClRss+G+wbh/cRuYNY2UlcyjiJQfxPgfllU0cx0PAoM+/QcPdBt6Hzt0aMZ3IOffCEnT/v+kXWVo1iXOVW2b20qDDIRjkGyIGwkUKYvRWbVM4wvpU58zQZZvmVdV1yMKuwjbQmN6toj/OFCqbC9/1OJyagxPzo56kivwcCNZ6B+gjJSMcvBUdHsiks5hTARM3i+X5azOlK7/hzWKoVlKkAwqWNElJ6TgSlEccnER6TJfH60d2fY1ulBKx93kWwyXrq4VSNy5SVakriySm7KJZnrEi8KXnFLkUinzYTPszfg+uSD/ASiTqvA7A7EvNKQeVSz+HmCRvg==
ARC-Authentication-Results: i=2; mx.microsoft.com 1; spf=pass (sender ip is
 4.158.2.129) smtp.rcpttodomain=amd.com smtp.mailfrom=arm.com; dmarc=pass
 (p=none sp=none pct=100) action=none header.from=arm.com; dkim=pass
 (signature was verified) header.d=arm.com; arc=pass (0 oda=1 ltdi=1
 spf=[1,1,smtp.mailfrom=arm.com] dkim=[1,1,header.d=arm.com]
 dmarc=[1,1,header.from=arm.com])
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=arm.com; s=selector1;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck;
 bh=guZ76xgGdbjnIGMb4dvq5+mcx2b3gMQVs8akOL7JWVs=;
 b=WTqkAoELHnO6J/9NzohmvOw4braxEzm5mMM+K8wkaUKlxOPqMCHpq8ssa5KMczFPu66+1AJl3u0uylpBxZzxG+PDtUKFwA8tTE0tWfngWQNXJoJIQqQ5s3mhy+06qn+Cle0pR6yqdjM2IVk2P29Yhmgx4BcO2X10b3wRjwu31pU=
X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 4.158.2.129)
 smtp.mailfrom=arm.com; dkim=pass (signature was verified)
 header.d=arm.com;dmarc=pass action=none header.from=arm.com;
Received-SPF: Pass (protection.outlook.com: domain of arm.com designates
 4.158.2.129 as permitted sender) receiver=protection.outlook.com;
 client-ip=4.158.2.129; helo=outbound-uk1.az.dlp.m.darktrace.com; pr=C
ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none;
 b=NKcJFd1hC0zayjPgfo8XuP5E6lfm/0cK8jie/B2cHsY2UN9d9gf80DJ0VGgmailooNxvNBCE2OTm5tZjg3ewiW9YYO1UplZCGHtGJBeFO8e6Am2xMUrQrgXBcPsaov67WbgXRzHXNiI4fao0MMLRC3XfhVGqPI22lMGYK0Uip3qsuwFgp9B6iBLAxwepYaLVuAnkmrc254UgggncpBcP3y+c91AqUx3q+a/20TU1gGdk7Wnrjj1v/lMJ5v/IZvo4ivVzTDFX65jh4JvNOEt5prsUXRYebyu61QdmMM1dOmNVA/wr3hC8d2RX3PS1DEHx1qSSQwVHzuVdO0DMLrIq8Q==
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com;
 s=arcselector10001;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1;
 bh=guZ76xgGdbjnIGMb4dvq5+mcx2b3gMQVs8akOL7JWVs=;
 b=NtYDFBNCPUPtjJRRLNzDfteg7mfClholAQblOml4mEt7oKM9IPpEVjNwFP5sek5KJhXl4d0P4v/M9h/OAL4R9f+AVwrvLbrQiHQ86Z7cCcB0u2jcnkBU+vQmpTCqMGp5UGCunenspZlS+Ebbrk6eCf90YmASeZM+mlrZ1I/Z78XITGb5zQ02+bOzthDjF2+OqLYTsehVcbrOq9KGEw3+bxFFRw1A+bp6G6dgFA7QRQOo8MMrKraExKSW1vFZxi3GQ/t6gERX2dSZnOkNEwTASsatX+QCJUgqigv5upqEwzDFmaq04Tymq0aDH6oym1ZoUa0YTPj0Hb7uolI15X/hXg==
ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass
 smtp.mailfrom=arm.com; dmarc=pass action=none header.from=arm.com; dkim=pass
 header.d=arm.com; arc=none
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=arm.com; s=selector1;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck;
 bh=guZ76xgGdbjnIGMb4dvq5+mcx2b3gMQVs8akOL7JWVs=;
 b=WTqkAoELHnO6J/9NzohmvOw4braxEzm5mMM+K8wkaUKlxOPqMCHpq8ssa5KMczFPu66+1AJl3u0uylpBxZzxG+PDtUKFwA8tTE0tWfngWQNXJoJIQqQ5s3mhy+06qn+Cle0pR6yqdjM2IVk2P29Yhmgx4BcO2X10b3wRjwu31pU=
From: Luca Fancellu <Luca.Fancellu@arm.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>, Volodymyr Babchuk
	<Volodymyr_Babchuk@epam.com>
Subject: Re: [PATCH 3/3] xen/arm: vpci: Move content of xen/arch/arm/vpci.h to
 arch header
Thread-Topic: [PATCH 3/3] xen/arm: vpci: Move content of xen/arch/arm/vpci.h
 to arch header
Thread-Index: AQHcwqf1UiwmSRu720SQ2OCjFIvjkQ==
Date: Thu, 2 Apr 2026 13:52:34 +0000
Message-ID: <7BEC5356-37E4-4A53-B508-5748A2C8C935@arm.com>
References: <20260401145816.169557-1-michal.orzel@amd.com>
 <20260401145816.169557-4-michal.orzel@amd.com>
In-Reply-To: <20260401145816.169557-4-michal.orzel@amd.com>
Accept-Language: en-GB, en-US
Content-Language: en-US
X-MS-Has-Attach:
X-MS-TNEF-Correlator:
x-mailer: Apple Mail (2.3826.700.81.1.4)
Authentication-Results-Original: dkim=none (message not signed)
 header.d=none;dmarc=none action=none header.from=arm.com;
x-ms-traffictypediagnostic:
	DU2PR08MB7272:EE_|DB9PR08MB11498:EE_|AMS0EPF000001B1:EE_|DU4PR08MB11032:EE_
X-MS-Office365-Filtering-Correlation-Id: b45e3a85-bd63-4e50-2c96-08de90bf3ced
x-checkrecipientrouted: true
nodisclaimer: true
X-MS-Exchange-SenderADCheck: 1
X-MS-Exchange-AntiSpam-Relay: 0
X-Microsoft-Antispam-Untrusted:
 BCL:0;ARA:13230040|376014|366016|1800799024|38070700021|22082099003|18002099003|56012099003;
X-Microsoft-Antispam-Message-Info-Original:
 G7739GMp/yFHtUamiPxwUM2EXlBancaXzDrzgdwoev0S6ntCAl4nC74D/RrX1yPuCBmuGy7dFTNQxnk9vWvES9YydDlC6ki+voYjKdC/M4DmtXg61+eMKwq9P5FJ9+07ML0ny9FQANrll7vUFdVzBwv2IaY2K8ALhKnTEOjIdk5qRfoVLlAWgNpYecgTlcVPifVHulrLvvln3iex/q7vmHiT1ksJuu/YA9MW9OAcbXWKK2mlaf5aL0gFEOcoZ12zuzSS0WZs5ezfDi1w3ZSiGSTRNU4eCRt0VGgFI9sbOq++dNaLESod+/HvgHqaRq+EjD2hp5UpjZmDtQtGuowZk0QGHfr7lnr4wNIo5qjP2ceUNhQ3pbu1vpeKpECAMrVQR83Y0YQwauAXXnQUOWOIlY5kIXcMEj9i6bOYeNsScnNwwgcTNQHewuxmcxTuTI1xp7mKRLd4+x7npgc2TJuImjP9ME3buARVxBgX8hvQd8ifuxmXjXoojwBIPj95jqnjSrzw6oz3mcoO5d7O5V221gMtn56JMc3fF6M7bGyGuvT+YE+AyOHTthUr5zvb6BU17whNYih0gC765u5qyVQhTvsfEv54LWIg8QE+6bWIfxBMdxLcJ1FaScX/CNtb7BI//xodJAgRI76o6o53Cq/zsG8L6eO1pgcvf24WMEERjGCs5p5TM0Bg0gado0RX9+2OepZOZmiZo/8fbvg+n126tWBWjdDn3I7eMH/Z3XWUd9Bh15oqkzPdhlniuHJIQhLrK6XjbpFqFlWofiLxy5Fx+HpYGXhRb72B2mA1ZZPApJ8=
X-Forefront-Antispam-Report-Untrusted:
 CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:DU2PR08MB7272.eurprd08.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(376014)(366016)(1800799024)(38070700021)(22082099003)(18002099003)(56012099003);DIR:OUT;SFP:1101;
Content-Type: text/plain; charset="utf-8"
Content-ID: <EB8076081A664D41A9D8DF0BFB4B57E0@eurprd08.prod.outlook.com>
Content-Transfer-Encoding: base64
MIME-Version: 1.0
X-Exchange-RoutingPolicyChecked:
 oD8i+k1nOtemhGivJE28JuPNQHiggTE4A/ywTdlZi2nldBVvZA2XRVKJcXEO3bXfc2cLEvxRW+x0DS5BALe27Gv4b20f6rvXEd+qE0WjgCKWqyuK5pcc92Jm30HyZoH3LazcRUNk0drAPlnQ+xVjrklrWOpI2e+pIQT52J+GI0ypchfTPxdoeBiUAxionFNphlTkUQSYljYxTapCfiSiZUJkG3abPppM44o8a9x29iJpvCoCZuKmWIlgaWTrZITuSTYqF0l9S5Qm74MyQKkASVFW6loWzj5xIzoHq3mhgFUEdJfFeo7/qqhYSYNxSZbmNoNWTL/F9OkYKsYLjkfqZw==
X-MS-Exchange-Transport-CrossTenantHeadersStamped: DB9PR08MB11498
X-EOPAttributedMessage: 0
X-MS-Exchange-Transport-CrossTenantHeadersStripped:
 AMS0EPF000001B1.eurprd05.prod.outlook.com
X-MS-PublicTrafficType: Email
X-MS-Office365-Filtering-Correlation-Id-Prvs:
	5fe2e974-dcd5-40e9-8d0f-08de90bf17a1
X-Microsoft-Antispam:
	BCL:0;ARA:13230040|35042699022|1800799024|14060799003|82310400026|36860700016|376014|18002099003|56012099003|22082099003;
X-Microsoft-Antispam-Message-Info:
	iJ3tu9qLpS9oCp91ag6qk2Pxmk2TbrFXCNHtsfydbZiXhmqo6AC58u+/lerEdN7v6nhj+czDnLa+UBELhGHBb+xEcxK2mcen/Y9NoIEgxEIPzyHwOec5tVI04d+gcpNV2nly74LvxABoAVwDQZnfTxML7QH/Z2k8sABBSNqQ6up6j8VU5aZRJmjcIpX7b4h8y5oTIgWuInIyo0UIy3hYg6AfEhvyZD03Jf/TuDc+pzhkBBRCXYy1z5F9JVbz2vz//nRz/J+553Jr/7dgBWQFqLyfs03Yh8gMZPRQRCZR0c1t8w6vMnO2UylDISL5DZnp978VbUsdw6FQeXXZxrKpIOZKJv6qszMHnF5QFp5LaTHXbyFh2vUh41TdT/vFJyp7QMnoKOUo6UUczKo2E6j6wXHpysSFxWW/HvY6GdrVkMoaP6zyT/92PMBP7KDHfy4EJ22B1rrk3MqBZNyJ4/65WpTR8vTQWaU/KVnKhtrMmxUhN3h5N4Ej4NH6pW8IDLhCXybpaCAD6/6r8+DaKhXRlJufFOLUkMxyZaoHwf/20tFeDpNaBAcTIsMnJvWORMhPUttX4Gj3FEKhjFa27PZ4ESzZWW0+IJZ25aNB6JnCpK+ed0YF62vcFsUCnIrUxmfymbLGqPfQMY3bZKgrTVqs8vqTy0keMkFjloDYWewU6vFDKY1JFTYhXnsUvbFof3fPBFnsE1gRJWRuKtAhtrwjLDmzZYNPR0XKlF920pgcjVsn/p/IX1CBVAoNwXfAEF1BWaUXXBZSCqGty+I41WNX8g==
X-Forefront-Antispam-Report:
	CIP:4.158.2.129;CTRY:GB;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:outbound-uk1.az.dlp.m.darktrace.com;PTR:InfoDomainNonexistent;CAT:NONE;SFS:(13230040)(35042699022)(1800799024)(14060799003)(82310400026)(36860700016)(376014)(18002099003)(56012099003)(22082099003);DIR:OUT;SFP:1101;
X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1
X-MS-Exchange-AntiSpam-MessageData-0:
	wba5a/vvS1QNApwuIN/loge0EOLtB7/tnQVkCAA5/xZjVenSbXCTDc8iozef3wIi04U/V9VeX4J1WcZR0vZziTocXKMQg0lgTUKSUSVFg8tMQX43dcqXcpc4VlorkBvORmVt2yuoSTdxFZbmiK83WOL/Y/xugPdoVYP3GCS7kCDEiV/WTxcxh0HNZ8jMch5begmE2H1k2K+/Si2hW1AIfJakmG8Ul+EELotcPolsfahk599qPg9PbX516zKy0A1QZ/ZzFFcZlMwLUtxkZj0+mwFQb9NCROz4Roqr3WWwuMiJpBeu0I8ldCNIYQU3CPPWw73+kk7qR0xv7RerTtVOQh8Jkjm+woLcm+7SwlkotghYmboBhTpmhABu5oQbfmR0d1O2emD3CYZDpbOMcfeER2yJ/8uQqfsb5/RWA/7UNPbJf0VsNVIAV5U1kXIVIKtI
X-OriginatorOrg: arm.com
X-MS-Exchange-CrossTenant-OriginalArrivalTime: 02 Apr 2026 13:53:36.7605
 (UTC)
X-MS-Exchange-CrossTenant-Network-Message-Id: b45e3a85-bd63-4e50-2c96-08de90bf3ced
X-MS-Exchange-CrossTenant-Id: f34e5979-57d9-4aaa-ad4d-b122a662184d
X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=f34e5979-57d9-4aaa-ad4d-b122a662184d;Ip=[4.158.2.129];Helo=[outbound-uk1.az.dlp.m.darktrace.com]
X-MS-Exchange-CrossTenant-AuthSource:
	AMS0EPF000001B1.eurprd05.prod.outlook.com
X-MS-Exchange-CrossTenant-AuthAs: Anonymous
X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem
X-MS-Exchange-Transport-CrossTenantHeadersStamped: DU4PR08MB11032
X-purgate-ID: tlsNG-ebf023/1775138024-31D2751B-FE03D212/0/0
X-purgate-type: clean
X-purgate-size: 1722

SGkgTWljaGFsLA0KDQo+IE9uIDEgQXByIDIwMjYsIGF0IDE1OjU4LCBNaWNoYWwgT3J6ZWwgPG1p
Y2hhbC5vcnplbEBhbWQuY29tPiB3cm90ZToNCj4gDQo+IE1vdmUgZG9tYWluX3ZwY2lfaW5pdCgp
IGFuZCBkb21haW5fdnBjaV9nZXRfbnVtX21taW9faGFuZGxlcnMoKQ0KPiBkZWNsYXJhdGlvbnMg
ZnJvbSB0aGUgcHJpdmF0ZSB4ZW4vYXJjaC9hcm0vdnBjaS5oIGludG8gdGhlIHB1YmxpYw0KPiB4
ZW4vYXJjaC9hcm0vaW5jbHVkZS9hc20vdnBjaS5oLCBhbmQgcmVtb3ZlIHRoZSBub3cgcmVkdW5k
YW50DQo+IHByaXZhdGUgaGVhZGVyLg0KPiANCj4gVXBkYXRlIGRvbWFpbi5jIHRvIGluY2x1ZGUg
PGFzbS92cGNpLmg+IGluc3RlYWQgb2YgdGhlIHJlbW92ZWQgcHJpdmF0ZQ0KPiBoZWFkZXIuDQo+
IA0KPiBUaGlzIGVuc3VyZXMgdGhlIGRlY2xhcmF0aW9ucyBhcmUgdmlzaWJsZSB3aGVyZSB0aGUg
ZnVuY3Rpb25zIGFyZQ0KPiBkZWZpbmVkLCByZXNvbHZpbmcgYSBNSVNSQSBDIFJ1bGUgOC40IHZp
b2xhdGlvbi4NCj4gDQo+IFNpZ25lZC1vZmYtYnk6IE1pY2hhbCBPcnplbCA8bWljaGFsLm9yemVs
QGFtZC5jb20+DQo+IC0tLQ0KPiBJJ20gbW92aW5nIGEgZmlsZSB3aXRoIEdQTDIrIGxpY2Vuc2Ug
dG8gYSBmaWxlIHdpdGggR1BMMi1vbmx5LiBJIGNvbnNpZGVyIHRoaXMNCj4gb2sgaW4gdGhpcyBj
YXNlIGJlY2FzZSB0aGUgY29weXJpZ2h0IG9uIGEgZmlsZSB3aXRoIGp1c3QgcHJvdG90eXBlcyBk
b2VzIG5vdA0KPiBtYWtlIGFueSBzZW5zZSBhbmQgYSBsaWNlbnNlIHRleHQgd2FzIG1vc3QgbGlr
ZWx5IGJsaW5kbHkgY29weS1wYXN0ZWQgbGlrZSBmb3INCj4gbW9zdCBvZiB0aGUgZmlsZXMgaW4g
dGhhdCBlcmEuDQo+IC0tLQ0KPiB4ZW4vYXJjaC9hcm0vZG9tYWluLmMgICAgICAgICAgIHwgIDIg
Ky0NCj4geGVuL2FyY2gvYXJtL2luY2x1ZGUvYXNtL3ZwY2kuaCB8IDE4ICsrKysrKysrKysrKysr
DQo+IHhlbi9hcmNoL2FybS92cGNpLmggICAgICAgICAgICAgfCA0MiAtLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0NCj4gMyBmaWxlcyBjaGFuZ2VkLCAxOSBpbnNlcnRpb25zKCspLCA0
MyBkZWxldGlvbnMoLSkNCj4gZGVsZXRlIG1vZGUgMTAwNjQ0IHhlbi9hcmNoL2FybS92cGNpLmgN
Cg0KSeKAmW0gb2sgZm9yIHRoZSBtb3ZlLCB5b3UgbmVlZCB0byBjaGFzZSBFUEFNIGFwcHJvdmFs
DQoNClJldmlld2VkLWJ5OiBMdWNhIEZhbmNlbGx1IDxsdWNhLmZhbmNlbGx1QGFybS5jb20+DQoN
Cg0K


From xen-devel-bounces@lists.xenproject.org Thu Apr 02 14:02:21 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 02 Apr 2026 14:02:21 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1271968.1559913 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1w8Icf-0002Si-2n; Thu, 02 Apr 2026 14:02:13 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1271968.1559913; Thu, 02 Apr 2026 14:02: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 1w8Ice-0002Sb-WB; Thu, 02 Apr 2026 14:02:12 +0000
Received: by outflank-mailman (input) for mailman id 1271968;
 Thu, 02 Apr 2026 14:02:12 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <marmarek@invisiblethingslab.com>) id 1w8Icd-0002SV-Sq
 for xen-devel@lists.xenproject.org; Thu, 02 Apr 2026 14:02:12 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1w8Icb-005Qv4-9D
 for xen-devel@lists.xenproject.org; Thu, 02 Apr 2026 16:02:11 +0200
Received: from [10.42.69.11] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <marmarek@invisiblethingslab.com>)
 id 69ce76df-e002-0a2a0a5209dd-0a2a450ba9a6-30
 for <xen-devel@lists.xenproject.org>; Thu, 02 Apr 2026 16:02:10 +0200
Received: from [103.168.172.149] (helo=fout-a6-smtp.messagingengine.com)
 by tlsNG-42698a.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.0)
 (envelope-from <marmarek@invisiblethingslab.com>)
 id 69ce76e1-bca8-0a2a450b0019-67a8ac95e8e9-3
 for <xen-devel@lists.xenproject.org>; Thu, 02 Apr 2026 16:02:10 +0200
Received: from phl-compute-06.internal (phl-compute-06.internal [10.202.2.46])
 by mailfout.phl.internal (Postfix) with ESMTP id E4B67EC010A;
 Thu,  2 Apr 2026 10:02:08 -0400 (EDT)
Received: from phl-frontend-04 ([10.202.2.163])
 by phl-compute-06.internal (MEProxy); Thu, 02 Apr 2026 10:02:08 -0400
Received: by mail.messagingengine.com (Postfix) with ESMTPA; Thu,
 2 Apr 2026 10:02:07 -0400 (EDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
Authentication-Results: eu.smtp.expurgate.cloud; dkim=pass header.s=fm1 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=fm1; t=1775138528;
	 x=1775224928; bh=0aAFsg0zA/lQnvSnAk+SdaY5anWlYW6E61WO/iarBk4=; b=
	WVQRbvRwQCWebdVoTYV4PQ8PSMT5OkJOuQsMsXOUBItbgE3Ru6YVUTrQ4sVMgs/v
	CSHOobi+ljeAPttcunhJmW4dJpkOcsKDRu5YeaF/8XsHieii3dqTAqSpIm0D0YKj
	q9tQBC19Ff3/SfuUk+zUesG1uQvWAFBoRlbyrBvQYkGSFDP7eu3H9nJOBnIuH5JK
	vLSsXMVwwXGRWzR52knIbtLlqO4JI85kj3hbO2L40cKmP4Is3WCmlSalmSMKRsik
	io18o0JoiJF4XCFbZSAE9UQnuXhSLm87dnmdn8KSFCjBtfpqnbU8PlhIp6TLlvJ3
	v4VpkCEYnMHJqkLLOJPiIA==
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=
	1775138528; x=1775224928; bh=0aAFsg0zA/lQnvSnAk+SdaY5anWlYW6E61W
	O/iarBk4=; b=rRYZT3eYIGy9zdLeQvsqTHUhqHYqBsMevGJsAAZRowTdUsw6YVy
	qJ20SCec1GiQwNwq76Q0015pD2P1+I5F8cxcTCAeT8gWNsCljZXaoCrhvuMmifC0
	j9qTUl4CYpcKP8P2epKOOvGpxNlNqQ45npEE1cV6twvvr7ljC+WmUSich3zXWQCi
	d72IxgpJDrzTBi7W2Joo+kif5FbPYNxhubiz38nmoPHy3Joop10nF6FIifrOyWle
	ahhhTh6GUdnowNfwlCJJfkJPUCtaup3k9S1+qpnlpaxA/rPIE06mWpdRlgPaS92y
	oo3vxK4SKAHoIxDRYgiQFVlbtf3tmHp5ymw==
X-ME-Sender: <xms:4HbOacSgJe2xA07fTdY1oIrOo5zOWUegrnZfSB7hsSoQX6eOAZMt7w>
    <xme:4HbOaQxMVFfni-yKbFzgPaSCPWF-_JtxFwy9B7Jbr-C7EsdCECHtnoB3G7zLKb0iP
    SnWdTkGzJsESnZTdGrSa-2_7banqKHCurgrgl5IuodAcqRV_Q>
X-ME-Received: <xmr:4HbOae02MdwSEmyoViDlRdtVDFvreOsoEG6iRy91gydgzj7B0ur5MNFO-t8>
X-ME-Proxy-Cause: gggruggvucftvghtrhhoucdtuddrgeefhedrtddtgdeivddvucetufdoteggodetrfdotf
    fvucfrrhhofhhilhgvmecuhfgrshhtofgrihhlpdfurfetoffkrfgpnffqhgenuceurghi
    lhhouhhtmecufedttdenucesvcftvggtihhpihgvnhhtshculddquddttddmnecujfgurh
    epfffhvfevuffkfhggtggujgesghdtreertddtjeenucfhrhhomhepofgrrhgvkhcuofgr
    rhgtiiihkhhofihskhhiqdfikphrvggtkhhiuceomhgrrhhmrghrvghksehinhhvihhsih
    gslhgvthhhihhnghhslhgrsgdrtghomheqnecuggftrfgrthhtvghrnhepgeffudduleff
    kefhjeelfeegkeegteeikeduteevleefudfhfeehueduhfdugeffnecuffhomhgrihhnpe
    igvghnrdhorhhgnecuvehluhhsthgvrhfuihiivgeptdenucfrrghrrghmpehmrghilhhf
    rhhomhepmhgrrhhmrghrvghksehinhhvihhsihgslhgvthhhihhnghhslhgrsgdrtghomh
    dpnhgspghrtghpthhtohepgedpmhhouggvpehsmhhtphhouhhtpdhrtghpthhtohepjhgs
    vghulhhitghhsehsuhhsvgdrtghomhdprhgtphhtthhopegrnhgurhgvfidrtghoohhpvg
    hrfeestghithhrihigrdgtohhmpdhrtghpthhtohepgigvnhdquggvvhgvlheslhhishht
    shdrgigvnhhprhhojhgvtghtrdhorhhgpdhrtghpthhtoheprhhoghgvrhdrphgruhestg
    hithhrihigrdgtohhm
X-ME-Proxy: <xmx:4HbOae5e6fnS5BsM0C0CBqfU8r5veiztvHMUtR5OZQ2n19YBuEklcA>
    <xmx:4HbOaRV1UKgCjtGxjN97nWSOmxQuEgzjzX3ikIS7Ta7UINTyoT09yw>
    <xmx:4HbOadAFZWcVTErXcGydV-JaAaZCdaXMoSweBew-HkNoc5mEwe6QAQ>
    <xmx:4HbOaQ5t5wzHQ64T0H6xKzeAOo5ek7AXDMC38rj7DIQyXmiKCu6R5g>
    <xmx:4HbOaXMzZyubR5x7pxAsRx2QuRznP11-BEW98z1dGeRwoKpzSf35kppY>
Feedback-ID: i1568416f:Fastmail
Date: Thu, 2 Apr 2026 16:02:06 +0200
From: Marek =?utf-8?Q?Marczykowski-G=C3=B3recki?= <marmarek@invisiblethingslab.com>
To: Jan Beulich <jbeulich@suse.com>
Cc: Andrew Cooper <andrew.cooper3@citrix.com>,
	xen-devel <xen-devel@lists.xenproject.org>,
	Roger Pau =?utf-8?B?TW9ubsOp?= <roger.pau@citrix.com>
Subject: Re: IOMMU faults after S3
Message-ID: <ac523jvUdQ7hw0Ts@mail-itl>
References: <acZZmGXIJlmN3KGm@mail-itl>
 <e8bbaae2-5cff-4549-9f27-fbbda7346f60@suse.com>
 <090b8b8f-141b-4a24-92eb-879c0a0c73e1@suse.com>
 <ac2nibFfvGm_7elv@mail-itl>
 <933a3e95-33d2-4e20-a4d5-2d8b20c2da7f@suse.com>
 <ac4kCq87SQSc6ddV@mail-itl>
 <aa6910f1-365a-4534-b229-9730b3aede02@suse.com>
 <97bfb299-a465-48a3-a036-f217de683c2c@suse.com>
 <ac46HK_KiUaLdK4N@mail-itl>
 <0b284c32-4dd3-4663-881b-834c47070328@suse.com>
MIME-Version: 1.0
Content-Type: multipart/signed; micalg=pgp-sha256;
	protocol="application/pgp-signature"; boundary="ZeCWVrsmPc3PCgY3"
Content-Disposition: inline
In-Reply-To: <0b284c32-4dd3-4663-881b-834c47070328@suse.com>
X-purgate-ID: tlsNG-42698a/1775138530-EF9412A1-A3C9AF4F/0/0
X-purgate-type: clean
X-purgate-size: 5075


--ZeCWVrsmPc3PCgY3
Content-Type: text/plain; protected-headers=v1; charset=utf-8
Content-Disposition: inline
Content-Transfer-Encoding: quoted-printable
Date: Thu, 2 Apr 2026 16:02:06 +0200
From: Marek =?utf-8?Q?Marczykowski-G=C3=B3recki?= <marmarek@invisiblethingslab.com>
To: Jan Beulich <jbeulich@suse.com>
Cc: Andrew Cooper <andrew.cooper3@citrix.com>,
	xen-devel <xen-devel@lists.xenproject.org>,
	Roger Pau =?utf-8?B?TW9ubsOp?= <roger.pau@citrix.com>
Subject: Re: IOMMU faults after S3

On Thu, Apr 02, 2026 at 12:23:08PM +0200, Jan Beulich wrote:
> On 02.04.2026 11:42, Marek Marczykowski-G=C3=B3recki wrote:
> > On Thu, Apr 02, 2026 at 10:47:53AM +0200, Jan Beulich wrote:
> >> On 02.04.2026 10:39, Jan Beulich wrote:
> >>> On 02.04.2026 10:08, Marek Marczykowski-G=C3=B3recki wrote:
> >>>> The xl dmesg output (from MTL this time):
> >>>>
> >>>>     (XEN) [  123.477511] Entering ACPI S3 state.
> >>>>     (XEN) [18446743903.571842] _disable_pit_irq:2649: using_pit: 0, =
cpu_has_apic: 1
> >>>>     (XEN) [18446743903.571856] _disable_pit_irq:2659: cpuidle_using_=
deep_cstate: 1, boot_cpu_has(X86_FEATURE_XEN_ARAT): 0
> >>>
> >>> XEN_ARAT being off is the one odd aspect here. That'll want tracking =
down
> >>> separately. As per xen-cpuid output (below) ARAT is available.
> >>
> >> For this you may want to also add logging to intel_init_arat(): Since =
opt_arat
> >> can be false only due to command line option use, it can only be the f=
unction
> >> not being called (which looks impossible on plain staging code), or cp=
u_has_arat
> >> being false despite the xen-cpuid output that you supplied earlier (in=
explicable
> >> as well, at least for now).
> >=20
> > Hm, I got this:
> >=20
> >     (XEN) [   11.403340] intel_init_arat:674: opt_arat: 1, cpu_has_arat=
: 0
> >=20
> > so, cpu_has_arat=3D0 ...
> > next lines are those, to hint when it happened in the boot process:
> >=20
> >     (XEN) [   11.409754] mwait-idle: MWAIT substates: 0x11112020
> >     (XEN) [   11.416130] mwait-idle: v0.4.1 model 0xaa
> >     (XEN) [   11.422396] mwait-idle: lapic_timer_reliable_states 0x2
> >=20
> > Looks like calculate_host_policy() runs much later...
>=20
> Hmm, yes, and that's the problem. The reason I don't see this is that a n=
ewer
> version of [1] has this
>
> --- a/xen/arch/x86/cpu/common.c
> +++ b/xen/arch/x86/cpu/common.c
> @@ -628,6 +628,8 @@ void identify_cpu(struct cpuinfo_x86 *c)
>  	}
> =20
>  	/* Now the feature flags better reflect actual CPU features! */
> +	if (c =3D=3D &boot_cpu_data)
> +		calculate_host_policy();
> =20
>  	xstate_init(c);
> =20
> --- a/xen/arch/x86/cpu-policy.c
> +++ b/xen/arch/x86/cpu-policy.c
> @@ -384,7 +384,7 @@ void calculate_raw_cpu_policy(void)
>      /* Was already added by probe_cpuid_faulting() */
>  }
> =20
> -static void __init calculate_host_policy(void)
> +void __init calculate_host_policy(void)
>  {
>      struct cpu_policy *p =3D &host_cpu_policy;
> =20
> @@ -959,6 +959,7 @@ static void __init calculate_hvm_def_pol
> =20
>  void __init init_guest_cpu_policies(void)
>  {
> +    /* Do this a 2nd time to account for setup_{clear,force}_cpu_cap() u=
ses. */
>      calculate_host_policy();
> =20
>      if ( IS_ENABLED(CONFIG_PV) )
>=20
> and of course I'm doing my work (and my analysis) with that in place.

FWIW, with this patch applied I get:
(XEN) [18446743899.051851] _disable_pit_irq:2649: using_pit: 0, cpu_has_api=
c: 1
(XEN) [18446743899.051865] _disable_pit_irq:2659: cpuidle_using_deep_cstate=
: 1, boot_cpu_has(X86_FEATURE_XEN_ARAT): 1

And no IOMMU faults anymore.

> I may need to break this out and submit independently, but really the pro=
blem
> here is that the containing series has been sitting largely unreviewed (a=
nd
> hence not in a position to plausibly re-post) for almost 5 years. Andrew,
> (maybe also Roger) - I'm open to suggestions how to proceed. When your xs=
tate
> cleanup patches were helped to go in ahead of mine, you promised to help =
mine
> going in afterwards. Yet nothing has happened (and I'm tired of re-submit=
ting
> large pieces of work just for the sake of re-submitting, i.e. without hav=
ing
> has [sufficient] feedback on the earlier version).
>=20
> Jan
>=20
> [1] https://lists.xen.org/archives/html/xen-devel/2021-04/msg01336.html

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

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

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

iQEzBAEBCAAdFiEEhrpukzGPukRmQqkK24/THMrX1ywFAmnOdt4ACgkQ24/THMrX
1yzHWggAhjmKXWAUnZLU2gP7Hf9Muj88OfxSbxUvk9QJGkt/LHnn9BWFw/Af5Vzd
2cb3s0Bhh3dNhZQCF7/Bqz2B1Ih3q8jH8x3pijIb3h5tBmenJadyPW58WEdSqZxg
7m6P7QUQkqQHNrzn/WTbIckUleDipk9Zxwqjhi1RKXZJBYmYabKMskdvd7A1t9of
jMlNIV1dQQIyRIhWMXAo3NzSnqRTykA//aMWXtsbGz2Yl4+PmdV8vV9aMAgUJVC9
xnnRQkbSGHDhVX2Lr/7AH2B8wvwFP5P+EDqcsvNpvHFvhbfLyLZZMe8C0eXCQ/p9
11aOidTUEDwE+q/RUN9MD4ClXDCmqQ==
=Rg5l
-----END PGP SIGNATURE-----

--ZeCWVrsmPc3PCgY3--


From xen-devel-bounces@lists.xenproject.org Thu Apr 02 14:19:07 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 02 Apr 2026 14:19:07 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1271988.1559922 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1w8Isq-0004FR-EO; Thu, 02 Apr 2026 14:18:56 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1271988.1559922; Thu, 02 Apr 2026 14: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 1w8Isq-0004FK-BK; Thu, 02 Apr 2026 14:18:56 +0000
Received: by outflank-mailman (input) for mailman id 1271988;
 Thu, 02 Apr 2026 14:18:55 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <jbeulich@suse.com>) id 1w8Isp-0004FE-52
 for xen-devel@lists.xenproject.org; Thu, 02 Apr 2026 14:18:55 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1w8Iso-006i0p-HZ
 for xen-devel@lists.xenproject.org; Thu, 02 Apr 2026 16:18:54 +0200
Received: from [10.42.69.11] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <jbeulich@suse.com>)
 id 69ce7ab5-2eae-0a2a0a5409dd-0a2a450bebea-44
 for <xen-devel@lists.xenproject.org>; Thu, 02 Apr 2026 16:18:54 +0200
Received: from [209.85.128.47] (helo=mail-wm1-f47.google.com)
 by tlsNG-42698a.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.0)
 (envelope-from <jbeulich@suse.com>)
 id 69ce7ace-bca8-0a2a450b0019-d155802fa845-3
 for <xen-devel@lists.xenproject.org>; Thu, 02 Apr 2026 16:18:54 +0200
Received: by mail-wm1-f47.google.com with SMTP id
 5b1f17b1804b1-482f454be5bso22003065e9.0
 for <xen-devel@lists.xenproject.org>; Thu, 02 Apr 2026 07:18:54 -0700 (PDT)
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-4887c91f0casm68395145e9.35.2026.04.02.07.18.52
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Thu, 02 Apr 2026 07:18:53 -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=google header.d=suse.com header.i="@suse.com" header.h="Content-Transfer-Encoding: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=1775139534; x=1775744334; darn=lists.xenproject.org;
        h=content-transfer-encoding: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;
        bh=SrEYNmGCkRbsJ5OZAB5kHulUugfhQtUS60EntDDH4+A=;
        b=Ft4Ry5YlQhyEKi60HTx3aTfieNLvJ2WugwvQrIkZzXbxxaMtqDwuWVsSQdyJwBH1RP
         tsqRbNbngGxRKVAMaj6ArGo9aXYVIFJGaAgr+pYGXxLtFlODAzzNOiXTHYIQ33QfkCzK
         kRIpSoayJERkqx3AOVVcUvwQlEblPmubtcRVfz9kMhpPw1+z0GN6c3KkAfvSVTDHclNu
         mvUiheMP5htsWYHC2MpjETwO7u/vIdf5DZUC4XYLVNKm7HZnQca9noy14hokQ4OGXqWV
         R/+hJlTc9HnnRL41fQ0iXAue4IZUH/JBlMQk6vnfkEWX+V/FO0LdqVXaPhLemtJ5X1do
         EhAA==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20251104; t=1775139534; x=1775744334;
        h=content-transfer-encoding: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;
        bh=SrEYNmGCkRbsJ5OZAB5kHulUugfhQtUS60EntDDH4+A=;
        b=nVDlj30ymzEyiUE4zQC2YCCwcE/McwvBRPdtrwyB5CzX9+/FkbQMMXr9tgnmR4Yjp5
         +1NLIGyuu088HMdYDg1HHec7jblwHz51sawhW2OCtEnutjshQyDIiK2HqsZKA5rRo8WA
         xPG6yei+K6NGiL5z3oqfuM2N8623h2rVn5eRSMQOGAGeUl300ETdYF+FIhOpAnCsBFTB
         xdJUfmlq87rsJo3G6Aq3j+6cZsMF+i2iVKvNHIjaxK8p0SCKNMWRoL8vqBsm3p55c5Xa
         3R+9mODtSRY82PLLNGOkqmuvhFmfJ9lezyU/TL6Co6594IN9ykSQwSUk+2OzA09eL8wf
         aXHw==
X-Forwarded-Encrypted: i=1; AJvYcCUmMhXxgY2E35lmssTkjzf8A3pVzKeL3MRInRe2bDdH6qwPOSOVf0WnD8hNt1xAFiGAIdOwTfc3fjQ=@lists.xenproject.org
X-Gm-Message-State: AOJu0YxK4kk+IsoFMiSfQJewCFCxKR3IWtaMmkzur18P3IqW1A8CKPDy
	6uJzel/ooJWMP2p/V6FYBP7LsflMLUVY4NHIPipt/aQCimaOKKnTe4YKZoC82xW4Qg==
X-Gm-Gg: ATEYQzxOSLDo//9yJNLWEBQ5w52/ZHYtcf5P8nIav0iDpKXWYmZaJ8sd8seGfjFmIzD
	WZAdz+UpC9YRHSZgSJxbWLjkEJMlrEbaJLzXwEtUfka9+0DKgU4ivvdlK83hf/buWOsXMr6S1IL
	8lJyIvWVeishxIUP4ADbIzX8CesdWyLTvxvZqKiYV6SpGRqFhb99qqGYcQyjRgCNNTCH6pzW/6l
	h+0gyaIkt2Mx9ElJ84ZbOmKm2E077h/12Dg9cCE5N5NNlyKf22iTfjFYwKPxD2RB2C0VWaIwyDo
	0EEZotaRrPxf+TUGv2ilkcWEb7idn5ZLsPvUY3HIVw/cW/Spec1OQGfORZSV076BJfYuvdu5SQT
	xMCkqflMbyTRvqALl+8gIlkTJdbMj7ErPkpYIb8jV4IdNSNf8EGyr/pgxheuX9mKEJlRvN/hG9j
	9ZocWuWoKyhbr2VRWDiYjHA4uG+rkG5i1nSG4aWMUfOpJulJp3saRA+4kUz3BQ1IZK+outj6mum
	N1tTxXxEtS+HXk=
X-Received: by 2002:a05:600c:8708:b0:486:fe83:861c with SMTP id 5b1f17b1804b1-4888e064a89mr46414935e9.7.1775139533530;
        Thu, 02 Apr 2026 07:18:53 -0700 (PDT)
Message-ID: <2bff40f5-2eef-4e72-8191-b3442607e0e4@suse.com>
Date: Thu, 2 Apr 2026 16:18:52 +0200
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH v1 19/27] xen/riscv: emulate guest writes to virtual APLIC
 MMIO
To: Oleksii Kurochko <oleksii.kurochko@gmail.com>
Cc: Romain Caritey <Romain.Caritey@microchip.com>,
 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.pau@citrix.com>,
 Stefano Stabellini <sstabellini@kernel.org>, xen-devel@lists.xenproject.org
References: <cover.1773157782.git.oleksii.kurochko@gmail.com>
 <e29eace5006929e61da347814b9759896d179e28.1773157782.git.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: <e29eace5006929e61da347814b9759896d179e28.1773157782.git.oleksii.kurochko@gmail.com>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 7bit
X-purgate-ID: tlsNG-42698a/1775139534-F4BCA2A1-0F354E63/0/0
X-purgate-type: clean
X-purgate-size: 8616

On 10.03.2026 18:08, Oleksii Kurochko wrote:
> --- a/xen/arch/riscv/vaplic.c
> +++ b/xen/arch/riscv/vaplic.c
> @@ -20,6 +20,16 @@
>  
>  #include "aplic-priv.h"
>  
> +#define APLIC_REG_GET(addr, offset) \
> +    readl((void *)((vaddr_t)(addr) + offset))
> +#define APLIC_REG_SET(addr, offset, value) \
> +    writel(value, (void *)((vaddr_t)(addr) + offset))

Why is addr properly parenthesized, but offset isn't?

> +#define AUTH_IRQ_BIT(irqnum) (auth_irq_bmp[(irqnum) / APLIC_NUM_REGS] & \
> +                              BIT((irqnum) % APLIC_NUM_REGS, U))
> +
> +#define regval_to_irqn(reg_val) ((reg_val) / sizeof(uint32_t))

I'm trying to make sense of the division here, but I think the main issue
is with naming: It's not a "register value" which is passed into here, but
a register index (offset from a range's base register).

> @@ -127,6 +137,164 @@ int vaplic_map_device_irqs_to_domain(struct domain *d,
>      return 0;
>  }
>  
> +static void vaplic_dm_update_target(const unsigned long hart_id, uint32_t *iprio)
> +{
> +    *iprio &= APLIC_TARGET_IPRIO_MASK;
> +    *iprio |= (hart_id << APLIC_TARGET_HART_IDX_SHIFT);
> +}
> +
> +static void vaplic_update_target(const struct imsic_config *imsic,
> +                                 const int guest_id,
> +                                 const unsigned long hart_id, uint32_t *value)
> +{
> +    unsigned long group_index;
> +    unsigned int hhxw = imsic->group_index_bits;
> +    unsigned int lhxw = imsic->hart_index_bits;
> +    unsigned int hhxs = imsic->group_index_shift - IMSIC_MMIO_PAGE_SHIFT * 2;
> +    unsigned long base_ppn = imsic->msi[hart_id].base_addr >> IMSIC_MMIO_PAGE_SHIFT;
> +
> +    group_index = (base_ppn >> (hhxs + 12)) & (BIT(hhxw, UL) - 1);

And there's no constant available to make this literal 12 more descriptive?

> +    *value &= APLIC_TARGET_EIID_MASK;
> +    *value |= guest_id << APLIC_TARGET_GUEST_IDX_SHIFT;
> +    *value |= hart_id << APLIC_TARGET_HART_IDX_SHIFT;
> +    *value |= group_index << (lhxw + APLIC_TARGET_HART_IDX_SHIFT) ;
> +}

Both functions returning void right now, why would they need to return their
result via indirection?

> +#define CALC_REG_VALUE(base) \
> +{ \
> +    uint32_t index; \
> +    uint32_t tmp_val; \

Combine these two, or have the variables have initializers?

> +    index = regval_to_irqn(offset - base); \

There's no "offset" declared or passed into here, nor ...

> +    tmp_val = APLIC_REG_GET(priv->regs, aplic_addr) & ~auth_irq_bmp[index]; \

... "priv", nor ...

> +    value &= auth_irq_bmp[index]; \
> +    value |= tmp_val; \

... "value". It may remain like this, but then it wants putting inside the
sole function that uses it, and be #undef-ed at the end of the function.

> +}

Please wrap in do/while(0), for use sites to be required to have semicolons
(and hence look like normal statements). Or make it a statement expression
properly returning the calculated value.

> +static int cf_check vaplic_emulate_store(const struct vcpu *vcpu,
> +                                         unsigned long addr, uint32_t value)
> +{
> +    struct vaplic *vaplic = to_vaplic(vcpu->domain->arch.vintc);
> +    struct aplic_priv *priv = vaplic->base.info->private;
> +    uint32_t offset = addr & APLIC_REG_OFFSET_MASK;

See ./CODING_STYLE as to uses of fixed-width types.

> +    unsigned long aplic_addr = addr - priv->paddr_start;
> +    const uint32_t *auth_irq_bmp = vcpu->domain->arch.vintc->private;
> +
> +    switch ( offset )
> +    {
> +    case APLIC_SETIP_BASE ... APLIC_SETIP_LAST:

And (taking this just as example) any misaligned accesses falling in this range
are fine?

> +        CALC_REG_VALUE(APLIC_SETIP_BASE);
> +        break;
> +
> +    case APLIC_CLRIP_BASE ... APLIC_CLRIP_LAST:
> +        CALC_REG_VALUE(APLIC_CLRIP_BASE);
> +        break;
> +
> +    case APLIC_SETIE_BASE ... APLIC_SETIE_LAST:
> +        CALC_REG_VALUE(APLIC_SETIE_BASE);
> +        break;
> +
> +    case APLIC_CLRIE_BASE ... APLIC_CLRIE_LAST:
> +        CALC_REG_VALUE(APLIC_CLRIE_BASE);
> +        break;
> +
> +    case APLIC_SOURCECFG_BASE ... APLIC_SOURCECFG_LAST:
> +        /* We don't suppert delagation, so bit10 if sourcecfg should be 0 */
> +        ASSERT(!(value & BIT(10, U)));

And that bit doesn't have a proper #define?

> +        /*
> +         * As sourcecfg register starts from 1:
> +         *   0x0000 domaincfg
> +         *   0x0004 sourcecfg[1]
> +         *   0x0008 sourcecfg[2]
> +         *    ...
> +         *   0x0FFC sourcecfg[1023]
> +         * It is necessary to calculate an interrupt number by substracting

Nit: subtracting

> +         * of APLIC_DOMAINCFG instead of APLIC_SOURCECFG_BASE.
> +         */
> +        if ( !AUTH_IRQ_BIT(regval_to_irqn(offset - APLIC_DOMAINCFG)) )
> +            /* interrupt not enabled, ignore it */

Throughout the series: Please adhere to ./CODING_STYLE.

> +            return 0;
> +
> +        break;

And any value is okay to write?

> +    case APLIC_TARGET_BASE ... APLIC_TARGET_LAST:
> +        struct vcpu *target_vcpu = NULL;
> +
> +        /*
> +         * Look at vaplic_emulate_load() for explanation why
> +         * APLIC_GENMSI is substracted.
> +         */

There's no vaplic_emulate_load() - how can I go look there?

Also same typo again as above.

> +        if ( !AUTH_IRQ_BIT(regval_to_irqn(offset - APLIC_GENMSI)) )
> +            /* interrupt not enabled, ignore it */
> +            return 0;
> +
> +        for ( int i = 0; i < vcpu->domain->max_vcpus; i++ )

unsigned int

> +        {
> +            struct vcpu *v = vcpu->domain->vcpu[i];
> +
> +            if ( v->vcpu_id == (value >> APLIC_TARGET_HART_IDX_SHIFT) )
> +            {
> +                target_vcpu = v;
> +                break;
> +            }
> +        }
> +
> +        ASSERT(target_vcpu);

What guarantees the pointer to be non-NULL? The incoming value can be
arbitrary, afaict.

> +        if ( !(vaplic->regs.domaincfg & APLIC_DOMAINCFG_DM) )
> +        {
> +            vaplic_dm_update_target(cpuid_to_hartid(target_vcpu->processor),
> +                                    &value);
> +        }
> +        else
> +            vaplic_update_target(priv->imsic_cfg,
> +                                 vcpu_guest_file_id(target_vcpu),
> +                                 cpuid_to_hartid(target_vcpu->processor),
> +                                 &value);

I'm struggling with the naming here: When DM is clear, a function with "dm"
in the name is called.

For the latter one, unless other uses are intended speaking against that,
instead of the middle two arguments simply pass target_vcpu?

Also please omit the braces consistently from both branches.

> +        break;
> +
> +    case APLIC_SETIPNUM:
> +    case APLIC_SETIPNUM_LE:

What about APLIC_SETIPNUM_BE?

> +    case APLIC_CLRIPNUM:
> +    case APLIC_SETIENUM:
> +    case APLIC_CLRIENUM:
> +        if ( AUTH_IRQ_BIT(value) )
> +            break;

Aren't you easily overrunning auth_irq_bmp[] here?

> +        return 0;
> +
> +    case APLIC_DOMAINCFG:
> +        /*
> +         * TODO:
> +         * The domaincfg register has this format:
> +         * bits 31:24 read-only 0x80
> +         * bit 8      IE
> +         * bit 7      read-only 0
> +         * bit 2      DM (WARL)
> +         * bit 0      BE (WARL)
> +         *
> +         * The most interesting bit for us is IE(Interrupt Enable) bit.
> +         * At the moment, at least, Linux doesn't use domaincfg.IE bit to
> +         * disable interrupts globally, but if one day someone will use it
> +         * then extra actions should be done.
> +         */
> +
> +        printk_once("%s: Nothing to do, domaincfg is set by aplic during "
> +                    "initialization in Xen\n", __func__);

As per the comment it's not "nothing to do", but your choice to ignore writes
even if they may be relevant.

> +        return 0;
> +
> +    default:
> +        panic("%s: unsupported register offset: %#x\n", __func__, offset);

Crashing the host for the guest doing something odd? It's odd that the function
only ever returns 0 anyway - it could simply return an error here (if the
itention is to not ignore such writes).

As it's not clear what values other than zero such a function may return, I
also can't comment on its (and the hook's) return type (may want to be bool
instead of int).

Jan


From xen-devel-bounces@lists.xenproject.org Thu Apr 02 14:23:15 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 02 Apr 2026 14:23:15 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1272001.1559931 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1w8Ix0-0005oB-3A; Thu, 02 Apr 2026 14:23:14 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1272001.1559931; Thu, 02 Apr 2026 14:23: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 1w8Ix0-0005o4-00; Thu, 02 Apr 2026 14:23:14 +0000
Received: by outflank-mailman (input) for mailman id 1272001;
 Thu, 02 Apr 2026 14:23:13 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <jbeulich@suse.com>) id 1w8Iwy-0005ny-Tz
 for xen-devel@lists.xenproject.org; Thu, 02 Apr 2026 14:23:13 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1w8Iww-005Vl2-Or
 for xen-devel@lists.xenproject.org; Thu, 02 Apr 2026 16:23:12 +0200
Received: from [10.42.69.5] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <jbeulich@suse.com>)
 id 69ce7bc5-bab6-0a2a0a5309dd-0a2a4505d22a-26
 for <xen-devel@lists.xenproject.org>; Thu, 02 Apr 2026 16:23:12 +0200
Received: from [209.85.128.41] (helo=mail-wm1-f41.google.com)
 by tlsNG-c201ff.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.0)
 (envelope-from <jbeulich@suse.com>)
 id 69ce7bd0-3760-0a2a45050019-d1558029b976-3
 for <xen-devel@lists.xenproject.org>; Thu, 02 Apr 2026 16:23:12 +0200
Received: by mail-wm1-f41.google.com with SMTP id
 5b1f17b1804b1-48374014a77so11730105e9.3
 for <xen-devel@lists.xenproject.org>; Thu, 02 Apr 2026 07:23:12 -0700 (PDT)
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-43d1e2a720dsm8483584f8f.4.2026.04.02.07.23.11
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Thu, 02 Apr 2026 07:23:11 -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=google header.d=suse.com header.i="@suse.com" header.h="Content-Transfer-Encoding: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=1775139792; x=1775744592; darn=lists.xenproject.org;
        h=content-transfer-encoding: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;
        bh=sI/pGzzCdA2riNjxS8Wnwz+LjiRpIcPmJ6cB/3wcj6Q=;
        b=OeWEF8iVjoH/aFfm2gQYAYlokhmH8yS/WWiF7/RYmnQIp6x1sIw906Po+UFnWE2u1N
         6KeUnLsYsDulJ5EFlpfHt+DPCYIS75J51whQ6bkbiqyk62O2zJVzrNS/P0oiDRlvKYuK
         SXq9dvB49A5DbsFQA6vcuuwRYVJZZ9a+EBYf7yhXB6LsZDg/pq0XNIDLMGQZl3IacFHq
         3IvvN8ZCAdnznfuqE1+bEx88tJmqIU4nV0EagBJtAIqe3iMRuzqbLi34c6jkSJnW1qt3
         Zd5YBqMO8hB6rWCaWDyo7//9WFuGbMnN8GpIy/jk0caP3pygfkqVDFrg18iCwsZuHKK4
         hGbw==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20251104; t=1775139792; x=1775744592;
        h=content-transfer-encoding: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;
        bh=sI/pGzzCdA2riNjxS8Wnwz+LjiRpIcPmJ6cB/3wcj6Q=;
        b=W2XOE1WxkEfVhYUt7/8IRdN3jqVUTkc1AZK8aIPQd3thzqfc1bkXzkzuSHVajErpah
         g6lD2yc5duKRrg07z2QwtPqs+FyJPsSghcziAlFLPBHybi5+qbjg8bitfDUO31X5tXID
         gc1LWVeHa9er62UHYKq9nr0MUNBLXViKxqU9/Nqus2rfQ5nYWw6Ow5r3xsymx+lm6vcj
         +tfFjZO9l0L5uq+IYqpBcG0IR79uOXo25+QfNlP5h4QwBTQDCj1NsmUBQ1kIQSYfBgb3
         4xLYo4JHc91iSrbkUZEUvTZ1M0MgToyTaL51UiwDCyglGNgHNK5q8XyLuCiUda44R/eN
         ERcg==
X-Forwarded-Encrypted: i=1; AJvYcCVBb/JtqeHVGxGVmgxth5eFgow5CFLa9UTLBu2kRXSSOnPZWtk2dFPd8mKv0WEeivgwSydM6Rx92OU=@lists.xenproject.org
X-Gm-Message-State: AOJu0YwyWjmYjYP83vbFBTeRfB+fO1kOl+u6KwigCshKkICRUfqffi62
	pnAGK+mFpr+/Oy8KSJBnDF583Vzj1PCsuKIAb+xWYPszFVjn3cj/VTrOc5lwmLEOlA==
X-Gm-Gg: ATEYQzww3dAsl9sarOvdPuULrkdGrzKia/75YvmkYvOR983iq9TsKmUWYaqg3pBidAU
	FI7Wqgf/HeGVT0wRuQi6Lz7Fo6EzMNJ55QcUG6/1pwJAdR1IWXQpALce4zETnfOJMUveZiuxlbv
	nQnkQ64Yv5PsUPTsSI2pdvV76qgaMzLp0dBN1f4A3/vqjLSMGhiu8/wzxB/Ns0lf+IHHOuephDo
	07waOO1eAKiqMT6yNZN75OYV314hod7dRsxbDlDpKEOhHIBmhcKKzkwj44h7T5qRhMm8cLrZ4j2
	wzIqdD0pU4E+aFSqQ6VxN8i61/Ooc4bjmPFX0kYprjd2YKlHYADac80f8k0rcSjK8XJ2wmZKQCr
	OaGnPV6vQZbfJL4fSOzRcaEfrg7VNqI1IvcTdJiAtStEi4FKRVwFqo8dVsDv/mkGlxHzO3oqwl+
	WVnAZTzgbQTAl8ROGy3K+qvoZlQbvFv6BlldwJ/7Oh4LleH6HIhS4ZgcBBOLe8YIJ3xcerm+jo6
	DMEN/dQtphZFJY=
X-Received: by 2002:a05:600c:a30a:b0:488:8577:d9c2 with SMTP id 5b1f17b1804b1-4888b7866c3mr45233235e9.22.1775139791692;
        Thu, 02 Apr 2026 07:23:11 -0700 (PDT)
Message-ID: <fe50ff8f-1ac6-427d-8db9-3e19a6dd6734@suse.com>
Date: Thu, 2 Apr 2026 16:23:10 +0200
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: IOMMU faults after S3
To: =?UTF-8?Q?Marek_Marczykowski-G=C3=B3recki?=
 <marmarek@invisiblethingslab.com>
Cc: Andrew Cooper <andrew.cooper3@citrix.com>,
 xen-devel <xen-devel@lists.xenproject.org>,
 =?UTF-8?Q?Roger_Pau_Monn=C3=A9?= <roger.pau@citrix.com>
References: <acZZmGXIJlmN3KGm@mail-itl>
 <e8bbaae2-5cff-4549-9f27-fbbda7346f60@suse.com>
 <090b8b8f-141b-4a24-92eb-879c0a0c73e1@suse.com> <ac2nibFfvGm_7elv@mail-itl>
 <933a3e95-33d2-4e20-a4d5-2d8b20c2da7f@suse.com> <ac4kCq87SQSc6ddV@mail-itl>
 <aa6910f1-365a-4534-b229-9730b3aede02@suse.com>
 <97bfb299-a465-48a3-a036-f217de683c2c@suse.com> <ac46HK_KiUaLdK4N@mail-itl>
 <0b284c32-4dd3-4663-881b-834c47070328@suse.com> <ac523jvUdQ7hw0Ts@mail-itl>
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: <ac523jvUdQ7hw0Ts@mail-itl>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
X-purgate-ID: tlsNG-c201ff/1775139792-2272296F-242D17DB/0/0
X-purgate-type: clean
X-purgate-size: 3379

On 02.04.2026 16:02, Marek Marczykowski-Górecki wrote:
> On Thu, Apr 02, 2026 at 12:23:08PM +0200, Jan Beulich wrote:
>> On 02.04.2026 11:42, Marek Marczykowski-Górecki wrote:
>>> On Thu, Apr 02, 2026 at 10:47:53AM +0200, Jan Beulich wrote:
>>>> On 02.04.2026 10:39, Jan Beulich wrote:
>>>>> On 02.04.2026 10:08, Marek Marczykowski-Górecki wrote:
>>>>>> The xl dmesg output (from MTL this time):
>>>>>>
>>>>>>     (XEN) [  123.477511] Entering ACPI S3 state.
>>>>>>     (XEN) [18446743903.571842] _disable_pit_irq:2649: using_pit: 0, cpu_has_apic: 1
>>>>>>     (XEN) [18446743903.571856] _disable_pit_irq:2659: cpuidle_using_deep_cstate: 1, boot_cpu_has(X86_FEATURE_XEN_ARAT): 0
>>>>>
>>>>> XEN_ARAT being off is the one odd aspect here. That'll want tracking down
>>>>> separately. As per xen-cpuid output (below) ARAT is available.
>>>>
>>>> For this you may want to also add logging to intel_init_arat(): Since opt_arat
>>>> can be false only due to command line option use, it can only be the function
>>>> not being called (which looks impossible on plain staging code), or cpu_has_arat
>>>> being false despite the xen-cpuid output that you supplied earlier (inexplicable
>>>> as well, at least for now).
>>>
>>> Hm, I got this:
>>>
>>>     (XEN) [   11.403340] intel_init_arat:674: opt_arat: 1, cpu_has_arat: 0
>>>
>>> so, cpu_has_arat=0 ...
>>> next lines are those, to hint when it happened in the boot process:
>>>
>>>     (XEN) [   11.409754] mwait-idle: MWAIT substates: 0x11112020
>>>     (XEN) [   11.416130] mwait-idle: v0.4.1 model 0xaa
>>>     (XEN) [   11.422396] mwait-idle: lapic_timer_reliable_states 0x2
>>>
>>> Looks like calculate_host_policy() runs much later...
>>
>> Hmm, yes, and that's the problem. The reason I don't see this is that a newer
>> version of [1] has this
>>
>> --- a/xen/arch/x86/cpu/common.c
>> +++ b/xen/arch/x86/cpu/common.c
>> @@ -628,6 +628,8 @@ void identify_cpu(struct cpuinfo_x86 *c)
>>  	}
>>  
>>  	/* Now the feature flags better reflect actual CPU features! */
>> +	if (c == &boot_cpu_data)
>> +		calculate_host_policy();
>>  
>>  	xstate_init(c);
>>  
>> --- a/xen/arch/x86/cpu-policy.c
>> +++ b/xen/arch/x86/cpu-policy.c
>> @@ -384,7 +384,7 @@ void calculate_raw_cpu_policy(void)
>>      /* Was already added by probe_cpuid_faulting() */
>>  }
>>  
>> -static void __init calculate_host_policy(void)
>> +void __init calculate_host_policy(void)
>>  {
>>      struct cpu_policy *p = &host_cpu_policy;
>>  
>> @@ -959,6 +959,7 @@ static void __init calculate_hvm_def_pol
>>  
>>  void __init init_guest_cpu_policies(void)
>>  {
>> +    /* Do this a 2nd time to account for setup_{clear,force}_cpu_cap() uses. */
>>      calculate_host_policy();
>>  
>>      if ( IS_ENABLED(CONFIG_PV) )
>>
>> and of course I'm doing my work (and my analysis) with that in place.
> 
> FWIW, with this patch applied I get:
> (XEN) [18446743899.051851] _disable_pit_irq:2649: using_pit: 0, cpu_has_apic: 1
> (XEN) [18446743899.051865] _disable_pit_irq:2659: cpuidle_using_deep_cstate: 1, boot_cpu_has(X86_FEATURE_XEN_ARAT): 1
> 
> And no IOMMU faults anymore.

Right, because then - as intended - HPET broadcast isn't used. You'd see them
again if you put "no-arat" on the command line. (And we really want to figure
out that issue, if at all possible.)

Jan


From xen-devel-bounces@lists.xenproject.org Thu Apr 02 14:47:48 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 02 Apr 2026 14:47:48 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1272036.1559941 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1w8JKb-0000Nl-0l; Thu, 02 Apr 2026 14:47:37 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1272036.1559941; Thu, 02 Apr 2026 14:47: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 1w8JKa-0000Ne-U0; Thu, 02 Apr 2026 14:47:36 +0000
Received: by outflank-mailman (input) for mailman id 1272036;
 Thu, 02 Apr 2026 14:47:35 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <marmarek@invisiblethingslab.com>) id 1w8JKZ-0000NY-Lu
 for xen-devel@lists.xenproject.org; Thu, 02 Apr 2026 14:47:35 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1w8JKZ-00FZxd-0l
 for xen-devel@lists.xenproject.org; Thu, 02 Apr 2026 16:47:35 +0200
Received: from [10.42.69.1] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <marmarek@invisiblethingslab.com>)
 id 69ce8173-2eae-0a2a0a5409dd-0a2a45018934-32
 for <xen-devel@lists.xenproject.org>; Thu, 02 Apr 2026 16:47:34 +0200
Received: from [103.168.172.149] (helo=fout-a6-smtp.messagingengine.com)
 by tlsNG-d62444.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.0)
 (envelope-from <marmarek@invisiblethingslab.com>)
 id 69ce8185-6fc9-0a2a45010019-67a8ac95aaeb-3
 for <xen-devel@lists.xenproject.org>; Thu, 02 Apr 2026 16:47:34 +0200
Received: from phl-compute-08.internal (phl-compute-08.internal [10.202.2.48])
 by mailfout.phl.internal (Postfix) with ESMTP id 89645EC016E;
 Thu,  2 Apr 2026 10:47:33 -0400 (EDT)
Received: from phl-frontend-04 ([10.202.2.163])
 by phl-compute-08.internal (MEProxy); Thu, 02 Apr 2026 10:47:33 -0400
Received: by mail.messagingengine.com (Postfix) with ESMTPA; Thu,
 2 Apr 2026 10:47:32 -0400 (EDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
Authentication-Results: eu.smtp.expurgate.cloud; dkim=pass header.s=fm1 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=fm1; t=1775141253;
	 x=1775227653; bh=Nalez2hzKJmYtxPhZ2f0O/FHVE9aXYFcgl08Ai4+JtA=; b=
	gs3SrGnWaanBkcPrEClsUS/MMJTe/6LWzChuDvGST/NRxndaM7hRds9lR9eYN0wi
	HDkOz9Bm4wobTII9YYYjObVF5+qcjHx0e/Vaa1Xu2MIAXPd0xmb9mW6AJHEwmeMq
	NW2I86WQbomoPaTxq/sDm71vuM+zNqDln2FWh9flbn2nBgz8HpgH8oJb8TnQ1Z2y
	vap5cSJyKmZfwK2ixOXtClEOsTkNNG8+U6R/qjXbRh331gTayMG6ciMVBktXOsXJ
	SQhlycVyCUEzCD5ZxZOBfJP0nF0Z+0gQ2LIkRfELLK67e+VQorAzQyRda8ibh0q9
	TWb2A7KRqbTc/Pti9D3X7Q==
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=
	1775141253; x=1775227653; bh=Nalez2hzKJmYtxPhZ2f0O/FHVE9aXYFcgl0
	8Ai4+JtA=; b=E2tOvpG7P82HWs+97bEBSzLJ5oAeJFf1mxL7fIcS5EIwUfaFhqS
	DuTxxXAjMsk2Y1nlKQS8fvpeVeafVvVjArb256jgdyCbDVg39auf17yiA3CZu9bK
	/CjnNmfSHy/ZqSpKkJ7GL3qlf9gxH0TvOv1I1ZU87jQebelZe0atuuiAJ+o2gVSL
	BpmY4x+BabZ5ZIAVgstsevoQ5s9V4scLDlc4c4u7l5rndfPUEq/sJOtUVvNRw6FM
	+nL1aygHVdYp5XpegDFwKJPjI4RUelsoc5Q/BIIrW3myvB7K2PMDYFy/GIb2ftxu
	Wjr7xWIbnPWrpULT1I1BQbd9DmpXJZzSsJQ==
X-ME-Sender: <xms:hYHOae2miEhb5B1t6lS707pbSgEbK2eWv3MuKfzrwJ7glXMmhIe7qA>
    <xme:hYHOaXGgN-kNAlyLQnTfHmZ6nap2rksgJvor-niE1riL9j1eYZsoN-1CfdCg4HPhf
    rYKvBT1hlolphLxtsJCVZO88fZiT_qlYOOGBAnqV5pOMAQ7EA>
X-ME-Received: <xmr:hYHOaUjMSWFyvOysrbd4hMEuYjl0hTvjCgITwerALXCJa6jbMORiL4nGXGE>
X-ME-Proxy-Cause: gggruggvucftvghtrhhoucdtuddrgeefhedrtddtgdeifeduucetufdoteggodetrfdotf
    fvucfrrhhofhhilhgvmecuhfgrshhtofgrihhlpdfurfetoffkrfgpnffqhgenuceurghi
    lhhouhhtmecufedttdenucesvcftvggtihhpihgvnhhtshculddquddttddmnecujfgurh
    epfffhvfevuffkfhggtggujgesghdtreertddtjeenucfhrhhomhepofgrrhgvkhcuofgr
    rhgtiiihkhhofihskhhiqdfikphrvggtkhhiuceomhgrrhhmrghrvghksehinhhvihhsih
    gslhgvthhhihhnghhslhgrsgdrtghomheqnecuggftrfgrthhtvghrnhepgfduleetfeev
    hfefheeiteeliefhjefhleduveetteekveettddvgeeuteefjedunecuvehluhhsthgvrh
    fuihiivgeptdenucfrrghrrghmpehmrghilhhfrhhomhepmhgrrhhmrghrvghksehinhhv
    ihhsihgslhgvthhhihhnghhslhgrsgdrtghomhdpnhgspghrtghpthhtohepvddpmhhoug
    gvpehsmhhtphhouhhtpdhrtghpthhtohepjhgsvghulhhitghhsehsuhhsvgdrtghomhdp
    rhgtphhtthhopeigvghnqdguvghvvghlsehlihhsthhsrdigvghnphhrohhjvggtthdroh
    hrgh
X-ME-Proxy: <xmx:hYHOaa_zLqS1iEhNsIFYnVn4IJN3zK1tYNmtypJPjPLtGHAKRMlz4g>
    <xmx:hYHOaTp5B2iKUd6xFbKvfTztwa1GDCODzRLHWptfj7iwQBNmzY-gdg>
    <xmx:hYHOaR-lKK2ujtO2GSCCUfd6omMgVcqGYxOQFoqz5yoUtwkKwFnbZA>
    <xmx:hYHOafXa0DRvfCGzx7CMr3zi9e1KJtMArPpGXt5yrtY1Lw-tkWDKeQ>
    <xmx:hYHOaZIWirSqz_WJDF_eiJQ_sgxPYcbYQKpfVKD2O3FYoGyt9uiZTYMR>
Feedback-ID: i1568416f:Fastmail
Date: Thu, 2 Apr 2026 16:47:31 +0200
From: Marek =?utf-8?Q?Marczykowski-G=C3=B3recki?= <marmarek@invisiblethingslab.com>
To: Jan Beulich <jbeulich@suse.com>
Cc: xen-devel <xen-devel@lists.xenproject.org>
Subject: Re: IOMMU faults after S3
Message-ID: <ac6Bg21hMLBRDNdm@mail-itl>
References: <acZZmGXIJlmN3KGm@mail-itl>
 <e8bbaae2-5cff-4549-9f27-fbbda7346f60@suse.com>
 <090b8b8f-141b-4a24-92eb-879c0a0c73e1@suse.com>
 <ac2nibFfvGm_7elv@mail-itl>
 <933a3e95-33d2-4e20-a4d5-2d8b20c2da7f@suse.com>
 <ac4kCq87SQSc6ddV@mail-itl>
 <aa6910f1-365a-4534-b229-9730b3aede02@suse.com>
 <ac44SVW1cPhKYFKU@mail-itl>
 <2caff339-4ce9-42ea-9b78-afeac42b6f0f@suse.com>
MIME-Version: 1.0
Content-Type: multipart/signed; micalg=pgp-sha256;
	protocol="application/pgp-signature"; boundary="ISpOtCzGrGc4UBsj"
Content-Disposition: inline
In-Reply-To: <2caff339-4ce9-42ea-9b78-afeac42b6f0f@suse.com>
X-purgate-ID: tlsNG-d62444/1775141254-168F4185-1F0BEAB7/0/0
X-purgate-type: clean
X-purgate-size: 14224


--ISpOtCzGrGc4UBsj
Content-Type: multipart/mixed; protected-headers=v1;
	boundary="XVDyUL3T4K294TsS"
Content-Disposition: inline
Date: Thu, 2 Apr 2026 16:47:31 +0200
From: Marek =?utf-8?Q?Marczykowski-G=C3=B3recki?= <marmarek@invisiblethingslab.com>
To: Jan Beulich <jbeulich@suse.com>
Cc: xen-devel <xen-devel@lists.xenproject.org>
Subject: Re: IOMMU faults after S3


--XVDyUL3T4K294TsS
Content-Type: text/plain; charset=utf-8
Content-Disposition: inline
Content-Transfer-Encoding: quoted-printable

On Thu, Apr 02, 2026 at 12:48:14PM +0200, Jan Beulich wrote:
> On 02.04.2026 11:35, Marek Marczykowski-G=C3=B3recki wrote:
> > On Thu, Apr 02, 2026 at 10:39:41AM +0200, Jan Beulich wrote:
> >> On 02.04.2026 10:08, Marek Marczykowski-G=C3=B3recki wrote:
> >>> The xl dmesg output (from MTL this time):
> >>>
> >>>     (XEN) [  123.477511] Entering ACPI S3 state.
> >>>     (XEN) [18446743903.571842] _disable_pit_irq:2649: using_pit: 0, c=
pu_has_apic: 1
> >>>     (XEN) [18446743903.571856] _disable_pit_irq:2659: cpuidle_using_d=
eep_cstate: 1, boot_cpu_has(X86_FEATURE_XEN_ARAT): 0
> >=20
> >> Hmm, but what you didn't log is whether __hpet_setup_msi_irq() actually
> >> succeeded everywhere. (And if it did, also logging HPET_Tn_ROUTE() val=
ues
> >> might be a good idea, if only to double check.)
> >=20
> > Updated output:
> >=20
> >     (XEN) [18446743899.720395] _disable_pit_irq:2649: using_pit: 0, cpu=
_has_apic: 1
> >     (XEN) [18446743899.720409] _disable_pit_irq:2659: cpuidle_using_dee=
p_cstate: 1, boot_cpu_has(X86_FEATURE_XEN_ARAT): 0
> >     (XEN) [18446743899.720420] _disable_pit_irq:2662: init: 0
> >     (XEN) [18446743899.720431] hpet_broadcast_resume:663: hpet_events: =
ffff83046bc1f080
> >     (XEN) [18446743899.720579] hpet_broadcast_resume:674: num_hpets_use=
d: 8
> >     (XEN) [18446743899.720587] hpet_broadcast_resume:692: cfg: 0x1
> >     (XEN) [18446743899.720599] hpet_broadcast_resume:697: i:0, hpet_eve=
nts[i].msi.irq: 122, hpet_events[i].flags: 0
> >     (XEN) [18446743899.720612] hpet_msi_write:283: iommu_intremap: 2 (i=
ommu_intremap_off: 0), HPET_Tn_ROUTE(ch->idx): 0x110
> >     (XEN) [18446743899.720638] hpet_msi_write:287: iommu_update_ire_fro=
m_msi rc: 0
>=20
> So it succeeds, and the low half of HPET_Tn_ROUTE also looks plausible. T=
he high
> half is, however, the address that the low half value is written to. It's=
 hard
> to imagine that it would be zero when the low half isn't, but it is about=
 the
> last thing I can think of which could explain observed behavior. (Yet the=
n, all
> of this is pretty meaningless; see below.)
>=20
> > And the current debug diff attached.
>=20
> Hmm, you log HPET_Tn_ROUTE _before_ our update. That's not very useful. Y=
ou want
> to move that part of logging to the bottom of hpet_msi_write(), or maybe =
to
> where you also log the per-channel cfg value in hpet_broadcast_resume() (=
thus
> making the logging overall less verbose).

This test is with the updated patch (attached) + your extra
calculate_host_policy() call and "no-arat" on cmdline:

    (XEN) [18446743900.569705] _disable_pit_irq:2649: using_pit: 0, cpu_has=
_apic: 1
    (XEN) [18446743900.569720] _disable_pit_irq:2659: cpuidle_using_deep_cs=
tate: 1, boot_cpu_has(X86_FEATURE_XEN_ARAT): 0
    (XEN) [18446743900.569730] _disable_pit_irq:2662: init: 0
    (XEN) [18446743900.569741] hpet_broadcast_resume:662: hpet_events: ffff=
83046bc1f080
    (XEN) [18446743900.569885] hpet_broadcast_resume:673: num_hpets_used: 8
    (XEN) [18446743900.569893] hpet_broadcast_resume:691: cfg: 0x1
    (XEN) [18446743900.569905] hpet_broadcast_resume:696: i:0, hpet_events[=
i].msi.irq: 122, hpet_events[i].flags: 0
    (XEN) [18446743900.569935] hpet_msi_write:286: iommu_update_ire_from_ms=
i rc: 0
    (XEN) [18446743900.569946] hpet_broadcast_resume:700: i:0, __hpet_setup=
_msi_irq ret: 0
    (XEN) [18446743900.569970] hpet_broadcast_resume:710: i:0, cfg: 0xc134,=
 HPET_Tn_ROUTE(hpet_events[i].idx): 0x110
    (XEN) [18446743900.569980] hpet_broadcast_resume:713: HPET_Tn_ROUTE(hpe=
t_events[i].idx): 0x110
    (XEN) [18446743900.569989] hpet_broadcast_resume:696: i:1, hpet_events[=
i].msi.irq: 123, hpet_events[i].flags: 0
    (XEN) [18446743900.570012] hpet_msi_write:286: iommu_update_ire_from_ms=
i rc: 0
    (XEN) [18446743900.570022] hpet_broadcast_resume:700: i:1, __hpet_setup=
_msi_irq ret: 0
    (XEN) [18446743900.570040] hpet_broadcast_resume:710: i:1, cfg: 0xc104,=
 HPET_Tn_ROUTE(hpet_events[i].idx): 0x130
    (XEN) [18446743900.570050] hpet_broadcast_resume:713: HPET_Tn_ROUTE(hpe=
t_events[i].idx): 0x130
    (XEN) [18446743900.570059] hpet_broadcast_resume:696: i:2, hpet_events[=
i].msi.irq: 124, hpet_events[i].flags: 0
    (XEN) [18446743900.570082] hpet_msi_write:286: iommu_update_ire_from_ms=
i rc: 0
    (XEN) [18446743900.570092] hpet_broadcast_resume:700: i:2, __hpet_setup=
_msi_irq ret: 0
    (XEN) [18446743900.570105] hpet_broadcast_resume:710: i:2, cfg: 0xc104,=
 HPET_Tn_ROUTE(hpet_events[i].idx): 0x150
    (XEN) [18446743900.570114] hpet_broadcast_resume:713: HPET_Tn_ROUTE(hpe=
t_events[i].idx): 0x150
    (XEN) [18446743900.570123] hpet_broadcast_resume:696: i:3, hpet_events[=
i].msi.irq: 125, hpet_events[i].flags: 0
    (XEN) [18446743900.570145] hpet_msi_write:286: iommu_update_ire_from_ms=
i rc: 0
    (XEN) [18446743900.570155] hpet_broadcast_resume:700: i:3, __hpet_setup=
_msi_irq ret: 0
    (XEN) [18446743900.570172] hpet_broadcast_resume:710: i:3, cfg: 0xc104,=
 HPET_Tn_ROUTE(hpet_events[i].idx): 0x170
    (XEN) [18446743900.570181] hpet_broadcast_resume:713: HPET_Tn_ROUTE(hpe=
t_events[i].idx): 0x170
    (XEN) [18446743900.570191] hpet_broadcast_resume:696: i:4, hpet_events[=
i].msi.irq: 126, hpet_events[i].flags: 0
    (XEN) [18446743900.570214] hpet_msi_write:286: iommu_update_ire_from_ms=
i rc: 0
    (XEN) [18446743900.570225] hpet_broadcast_resume:700: i:4, __hpet_setup=
_msi_irq ret: 0
    (XEN) [18446743900.570242] hpet_broadcast_resume:710: i:4, cfg: 0xc104,=
 HPET_Tn_ROUTE(hpet_events[i].idx): 0x190
    (XEN) [18446743900.570251] hpet_broadcast_resume:713: HPET_Tn_ROUTE(hpe=
t_events[i].idx): 0x190
    (XEN) [18446743900.570260] hpet_broadcast_resume:696: i:5, hpet_events[=
i].msi.irq: 127, hpet_events[i].flags: 0
    (XEN) [18446743900.570282] hpet_msi_write:286: iommu_update_ire_from_ms=
i rc: 0
    (XEN) [18446743900.570292] hpet_broadcast_resume:700: i:5, __hpet_setup=
_msi_irq ret: 0
    (XEN) [18446743900.570309] hpet_broadcast_resume:710: i:5, cfg: 0xc104,=
 HPET_Tn_ROUTE(hpet_events[i].idx): 0x1b0
    (XEN) [18446743900.570318] hpet_broadcast_resume:713: HPET_Tn_ROUTE(hpe=
t_events[i].idx): 0x1b0
    (XEN) [18446743900.570327] hpet_broadcast_resume:696: i:6, hpet_events[=
i].msi.irq: 128, hpet_events[i].flags: 0
    (XEN) [18446743900.570351] hpet_msi_write:286: iommu_update_ire_from_ms=
i rc: 0
    (XEN) [18446743900.570361] hpet_broadcast_resume:700: i:6, __hpet_setup=
_msi_irq ret: 0
    (XEN) [18446743900.570374] hpet_broadcast_resume:710: i:6, cfg: 0xc104,=
 HPET_Tn_ROUTE(hpet_events[i].idx): 0x1d0
    (XEN) [18446743900.570383] hpet_broadcast_resume:713: HPET_Tn_ROUTE(hpe=
t_events[i].idx): 0x1d0
    (XEN) [18446743900.570392] hpet_broadcast_resume:696: i:7, hpet_events[=
i].msi.irq: 129, hpet_events[i].flags: 0
    (XEN) [18446743900.570415] hpet_msi_write:286: iommu_update_ire_from_ms=
i rc: 0
    (XEN) [18446743900.570425] hpet_broadcast_resume:700: i:7, __hpet_setup=
_msi_irq ret: 0
    (XEN) [18446743900.570442] hpet_broadcast_resume:710: i:7, cfg: 0xc104,=
 HPET_Tn_ROUTE(hpet_events[i].idx): 0x1f0
    (XEN) [18446743900.570451] hpet_broadcast_resume:713: HPET_Tn_ROUTE(hpe=
t_events[i].idx): 0x1f0


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

--XVDyUL3T4K294TsS
Content-Type: text/plain; charset=utf-8
Content-Disposition: attachment; filename=0001-DEBUG.patch
Content-Transfer-Encoding: quoted-printable

=46rom 34e6a34cf0504233776337ace8ac69a92297984e Mon Sep 17 00:00:00 2001
=46rom: =3D?UTF-8?q?Marek=3D20Marczykowski-G=3DC3=3DB3recki?=3D
 <marmarek@invisiblethingslab.com>
Date: Thu, 2 Apr 2026 11:09:32 +0200
Subject: [PATCH] DEBUG

---
 xen/arch/x86/cpu-policy.c |  1 +
 xen/arch/x86/cpu/intel.c  |  1 +
 xen/arch/x86/hpet.c       | 17 ++++++++++++++++-
 xen/arch/x86/time.c       |  3 +++
 xen/source                |  1 +
 5 files changed, 22 insertions(+), 1 deletion(-)
 create mode 120000 xen/source

diff --git a/xen/arch/x86/cpu-policy.c b/xen/arch/x86/cpu-policy.c
index 5273fe0ae435..9916afd5ed68 100644
--- a/xen/arch/x86/cpu-policy.c
+++ b/xen/arch/x86/cpu-policy.c
@@ -364,6 +364,7 @@ static void __init calculate_host_policy(void)
     struct cpu_policy *p =3D &host_cpu_policy;
     unsigned int max_extd_leaf;
=20
+    printk("%s:%d\n", __func__, __LINE__);
     *p =3D raw_cpu_policy;
=20
     p->basic.max_leaf =3D
diff --git a/xen/arch/x86/cpu/intel.c b/xen/arch/x86/cpu/intel.c
index 18b3c79dc97f..51a3d1c4b5f3 100644
--- a/xen/arch/x86/cpu/intel.c
+++ b/xen/arch/x86/cpu/intel.c
@@ -671,6 +671,7 @@ const struct cpu_dev __initconst_cf_clobber intel_cpu_d=
ev =3D {
=20
 void __init intel_init_arat(void)
 {
+    printk("%s:%d: opt_arat: %d, cpu_has_arat: %d\n", __func__, __LINE__, =
opt_arat, cpu_has_arat);
     if ( opt_arat && cpu_has_arat )
         setup_force_cpu_cap(X86_FEATURE_XEN_ARAT);
 }
diff --git a/xen/arch/x86/hpet.c b/xen/arch/x86/hpet.c
index 1ea8ae457424..cef060cb18bb 100644
--- a/xen/arch/x86/hpet.c
+++ b/xen/arch/x86/hpet.c
@@ -283,6 +283,7 @@ static int hpet_msi_write(struct hpet_event_channel *ch=
, struct msi_msg *msg)
     if ( iommu_intremap !=3D iommu_intremap_off )
     {
         int rc =3D iommu_update_ire_from_msi(&ch->msi, msg);
+        printk("%s:%d: iommu_update_ire_from_msi rc: %d\n", __func__, __LI=
NE__, rc);
=20
         if ( rc < 0 )
             return rc;
@@ -658,6 +659,8 @@ void hpet_broadcast_resume(void)
     u32 cfg;
     unsigned int i, n;
=20
+    printk("%s:%d: hpet_events: %p\n", __func__, __LINE__, hpet_events);
+
     if ( !hpet_events )
         return;
=20
@@ -667,25 +670,35 @@ void hpet_broadcast_resume(void)
=20
     if ( num_hpets_used > 0 )
     {
+        printk("%s:%d: num_hpets_used: %d\n", __func__, __LINE__, num_hpet=
s_used);
         /* Stop HPET legacy interrupts */
         cfg &=3D ~HPET_CFG_LEGACY;
         n =3D num_hpets_used;
     }
     else if ( hpet_events->flags & HPET_EVT_DISABLE )
+    {
+        printk("%s:%d: hpet_events->flags: %#x\n", __func__, __LINE__, hpe=
t_events->flags);
         return;
+    }
     else
     {
         /* Start HPET legacy interrupts */
+        printk("%s:%d\n", __func__, __LINE__);
         cfg |=3D HPET_CFG_LEGACY;
         n =3D 1;
     }
=20
+    printk("%s:%d: cfg: %#x\n", __func__, __LINE__, cfg);
     hpet_write32(cfg, HPET_CFG);
=20
     for ( i =3D 0; i < n; i++ )
     {
+        printk("%s:%d: i:%d, hpet_events[i].msi.irq: %d, hpet_events[i].fl=
ags: %#x\n", __func__, __LINE__, i, hpet_events[i].msi.irq, hpet_events[i].=
flags);
         if ( hpet_events[i].msi.irq >=3D 0 )
-            __hpet_setup_msi_irq(irq_to_desc(hpet_events[i].msi.irq));
+        {
+            int ret =3D __hpet_setup_msi_irq(irq_to_desc(hpet_events[i].ms=
i.irq));
+            printk("%s:%d: i:%d, __hpet_setup_msi_irq ret: %d\n", __func__=
, __LINE__, i, ret);
+        }
=20
         /* set HPET Tn as oneshot */
         cfg =3D hpet_read32(HPET_Tn_CFG(hpet_events[i].idx));
@@ -694,8 +707,10 @@ void hpet_broadcast_resume(void)
         if ( !(hpet_events[i].flags & HPET_EVT_LEGACY) )
             cfg |=3D HPET_TN_FSB;
         hpet_write32(cfg, HPET_Tn_CFG(hpet_events[i].idx));
+        printk("%s:%d: i:%d, cfg: %#x, HPET_Tn_ROUTE(hpet_events[i].idx): =
%#x\n", __func__, __LINE__, i, cfg, HPET_Tn_ROUTE(hpet_events[i].idx));
=20
         hpet_events[i].next_event =3D STIME_MAX;
+        printk("%s:%d: HPET_Tn_ROUTE(hpet_events[i].idx): %#x\n", __func__=
, __LINE__, HPET_Tn_ROUTE(hpet_events[i].idx));
     }
 }
=20
diff --git a/xen/arch/x86/time.c b/xen/arch/x86/time.c
index fed30a919d2c..15113ebdfb6c 100644
--- a/xen/arch/x86/time.c
+++ b/xen/arch/x86/time.c
@@ -2646,6 +2646,7 @@ static int _disable_pit_irq(bool init)
 {
     int ret =3D 1;
=20
+    printk("%s:%d: using_pit: %d, cpu_has_apic: %d\n", __func__, __LINE__,=
 using_pit, cpu_has_apic);
     if ( using_pit || !cpu_has_apic )
         return -1;
=20
@@ -2655,8 +2656,10 @@ static int _disable_pit_irq(bool init)
      * XXX dom0 may rely on RTC interrupt delivery, so only enable
      * hpet_broadcast if FSB mode available or if force_hpet_broadcast.
      */
+    printk("%s:%d: cpuidle_using_deep_cstate: %d, boot_cpu_has(X86_FEATURE=
_XEN_ARAT): %d\n", __func__, __LINE__, cpuidle_using_deep_cstate(), boot_cp=
u_has(X86_FEATURE_XEN_ARAT));
     if ( cpuidle_using_deep_cstate() && !boot_cpu_has(X86_FEATURE_XEN_ARAT=
) )
     {
+        printk("%s:%d: init: %d\n", __func__, __LINE__, init);
         init ? hpet_broadcast_init() : hpet_broadcast_resume();
         if ( !hpet_broadcast_is_available() )
         {
diff --git a/xen/source b/xen/source
new file mode 120000
index 000000000000..945c9b46d684
--- /dev/null
+++ b/xen/source
@@ -0,0 +1 @@
+.
\ No newline at end of file
--=20
2.53.0


--XVDyUL3T4K294TsS--

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

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

iQEzBAEBCAAdFiEEhrpukzGPukRmQqkK24/THMrX1ywFAmnOgYMACgkQ24/THMrX
1yxBTAf/atqaW9Tw6fqQ8dOiUs/f30vfa+hLXJhauCGlVPjPDQIy96tY58CsgbYK
vYcdG6Le4eHD7Xe3sif7HSUlXHIrta8EJ/se01eEdpSmm5162gVjBIkZ4e7/qo24
Ox2WXlwPtwLs16rfSXv5X5kzLJd6sXTCqRVYLqNEfchhYER+egwXZiVQxRq5E2dZ
gEZQQLU7I4J+FIC6zgvoq3gXxddxbwByHvWH7rTft2pjdujKC+x/g+lNyX13Rem5
WZjOu4lYVbA4sR5EHGyyK0DWiPVHi+IltcUPNHcoMZbBxKMUNB55vhtmTFK+bmuO
xluur8JBZrdYc0Qt3dmkzD9LC1i6dw==
=zN8b
-----END PGP SIGNATURE-----

--ISpOtCzGrGc4UBsj--


From xen-devel-bounces@lists.xenproject.org Thu Apr 02 14:53:40 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 02 Apr 2026 14:53:40 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1272050.1559950 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1w8JQN-0001x7-Nb; Thu, 02 Apr 2026 14:53:35 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1272050.1559950; Thu, 02 Apr 2026 14:53: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 1w8JQN-0001x0-Kq; Thu, 02 Apr 2026 14:53:35 +0000
Received: by outflank-mailman (input) for mailman id 1272050;
 Thu, 02 Apr 2026 14:53:34 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <jbeulich@suse.com>) id 1w8JQM-0001wu-Nk
 for xen-devel@lists.xenproject.org; Thu, 02 Apr 2026 14:53:34 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1w8JQM-00G5ny-0F
 for xen-devel@lists.xenproject.org; Thu, 02 Apr 2026 16:53:34 +0200
Received: from [10.42.69.1] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <jbeulich@suse.com>)
 id 69ce82df-5cb7-0a2a0a5109dd-0a2a4501bd88-34
 for <xen-devel@lists.xenproject.org>; Thu, 02 Apr 2026 16:53:33 +0200
Received: from [209.85.128.47] (helo=mail-wm1-f47.google.com)
 by tlsNG-d62444.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.0)
 (envelope-from <jbeulich@suse.com>)
 id 69ce82ed-6fc9-0a2a45010019-d155802fcdd8-3
 for <xen-devel@lists.xenproject.org>; Thu, 02 Apr 2026 16:53:33 +0200
Received: by mail-wm1-f47.google.com with SMTP id
 5b1f17b1804b1-48896199cbaso1965735e9.1
 for <xen-devel@lists.xenproject.org>; Thu, 02 Apr 2026 07:53:33 -0700 (PDT)
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-4888a63c963sm75853905e9.4.2026.04.02.07.53.31
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Thu, 02 Apr 2026 07:53:32 -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=google header.d=suse.com header.i="@suse.com" header.h="Content-Transfer-Encoding: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=1775141613; x=1775746413; darn=lists.xenproject.org;
        h=content-transfer-encoding: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;
        bh=7dQsPxzGMnU0cJkFn26xNgt7cwiaPetYYEyXRgo4A4w=;
        b=fCS4c3ZWh7AZM6ZDj0+ot8FrT79yRuVi3KZadM2gxCtlUEL20Q/DAPSQ9A3ds+Ku0z
         j5/cOtod2sLiMQz7mi6kA+kv9ohPu2hc1a8ry6+dQz/rMVa/wLk8GRwfjYN1bt63eu9U
         9/rOzR+gNFzay8WM8Mebk9SlXRXGQPq/raNOwBndlSquFF/OGkmaVDdE5AJDGlqjz9nE
         YV1beLoyyI33clTMnijkI5M0X7fx85gjuOl6Co5S3kVJ0S8yqE5+bJulX6pz6iQ261Mh
         9Y9m4KbjN2ACTYE2jZEdEev+SkR7hr3jEr8g8dTjCgBWxEMUUeDiRdhfG39A6oUaE2iI
         xKUA==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20251104; t=1775141613; x=1775746413;
        h=content-transfer-encoding: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;
        bh=7dQsPxzGMnU0cJkFn26xNgt7cwiaPetYYEyXRgo4A4w=;
        b=LT1qZ0QBoxU7mo9W12nTv/8rqYtOWzyjaFbzlAEMWjv/h5nVdt+ExylqVhii+H0+H8
         nO8oCjccvqIr6da5Uzgm1CwSGpjR+Lba2vDhpe36VxYj0miM3cAtL3ybyYI/CcUscxYS
         WNrxxLIZw1dbp7uL1Az8KB1Y8Cu4QygYvSwbQTZaIvqX9MzJTvhkZBfdQuqxBC7WSjsq
         P43TxATb854U1YVCGDJbEuv+qY6iBVS0jdOgvBmReBXgUUJaLE/J7y1D8UNExxVz1bjn
         e0XgJn1aaCcc0/Df8KXKuBVJdOumymkoU68guvY8Uf1gv5buKVyMeABv7p5K5MAvv0Qt
         bozw==
X-Gm-Message-State: AOJu0YyCDHFANuQyWSFA+uVHDVECqrnSRQFXjj3dVGw50pP45iKPS6kk
	FZ2el6GVS2uPG37NvdB+sLLWOh9fsoKQxVJJXzfwQVjMuzlyJD0YSzRCxBtoh4c1OJVu1HlLfpB
	TJiReLA==
X-Gm-Gg: ATEYQzwwtnNrQ2kh8K057dufTley86fzqgSzpV6Lcw+x2B7GIJ5x85lBx93lOn71i1u
	7TqUckm3XNfnHcKgFWf9dlC5gWU4KRn6aLpHuXN9DrCD7Xfoe961pZaJomkwsPvxH/m8RxIwkDg
	ByFgx27AXxPuGwqjDUHjyJCFxqnmJgh9pIiK1hs0dB/OYU4jM3JcoWNq4BJm5Hx7//JESgMj8kz
	mlAI2j2+o+wrhb9z0nexzKmV0kD9GzWPIhyd95U9Ju8kDQ86g6ekymh4Tifr1OPXnTf9gau9S7G
	GXilH0KK6mO+XAvugvU5BvnMTqroQrphOXgDFqnAEMTaCPBt6nLrty0KP46UUj9RgLoiTj3SLVc
	rHxTkR8V08Xh+/djiEhrjkopqRsXYYybvJJzWYKK+wDcDA/r7HMAuZ52fTkE4FAQQ8Um0Ijn+TT
	TLDoJw5rZlfIxw0xS1bEvW/dkCBbsoktRfacCEfaM0fMLv/8TNoVpkS2WlmnA5CMseAy0RmZhJU
	rlwL13+BhtLlAs=
X-Received: by 2002:a05:600c:818f:b0:485:3423:727d with SMTP id 5b1f17b1804b1-48883595de9mr129217095e9.26.1775141613115;
        Thu, 02 Apr 2026 07:53:33 -0700 (PDT)
Message-ID: <92e0151b-3fb1-4108-9788-f0fbac43512b@suse.com>
Date: Thu, 2 Apr 2026 16:53:31 +0200
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: IOMMU faults after S3
To: =?UTF-8?Q?Marek_Marczykowski-G=C3=B3recki?=
 <marmarek@invisiblethingslab.com>
Cc: xen-devel <xen-devel@lists.xenproject.org>
References: <acZZmGXIJlmN3KGm@mail-itl>
 <e8bbaae2-5cff-4549-9f27-fbbda7346f60@suse.com>
 <090b8b8f-141b-4a24-92eb-879c0a0c73e1@suse.com> <ac2nibFfvGm_7elv@mail-itl>
 <933a3e95-33d2-4e20-a4d5-2d8b20c2da7f@suse.com> <ac4kCq87SQSc6ddV@mail-itl>
 <aa6910f1-365a-4534-b229-9730b3aede02@suse.com> <ac44SVW1cPhKYFKU@mail-itl>
 <2caff339-4ce9-42ea-9b78-afeac42b6f0f@suse.com> <ac6Bg21hMLBRDNdm@mail-itl>
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: <ac6Bg21hMLBRDNdm@mail-itl>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
X-purgate-ID: tlsNG-d62444/1775141613-B62E9185-6D6F6108/0/0
X-purgate-type: clean
X-purgate-size: 2778

On 02.04.2026 16:47, Marek Marczykowski-Górecki wrote:
> On Thu, Apr 02, 2026 at 12:48:14PM +0200, Jan Beulich wrote:
>> On 02.04.2026 11:35, Marek Marczykowski-Górecki wrote:
>>> On Thu, Apr 02, 2026 at 10:39:41AM +0200, Jan Beulich wrote:
>>>> On 02.04.2026 10:08, Marek Marczykowski-Górecki wrote:
>>>>> The xl dmesg output (from MTL this time):
>>>>>
>>>>>     (XEN) [  123.477511] Entering ACPI S3 state.
>>>>>     (XEN) [18446743903.571842] _disable_pit_irq:2649: using_pit: 0, cpu_has_apic: 1
>>>>>     (XEN) [18446743903.571856] _disable_pit_irq:2659: cpuidle_using_deep_cstate: 1, boot_cpu_has(X86_FEATURE_XEN_ARAT): 0
>>>
>>>> Hmm, but what you didn't log is whether __hpet_setup_msi_irq() actually
>>>> succeeded everywhere. (And if it did, also logging HPET_Tn_ROUTE() values
>>>> might be a good idea, if only to double check.)
>>>
>>> Updated output:
>>>
>>>     (XEN) [18446743899.720395] _disable_pit_irq:2649: using_pit: 0, cpu_has_apic: 1
>>>     (XEN) [18446743899.720409] _disable_pit_irq:2659: cpuidle_using_deep_cstate: 1, boot_cpu_has(X86_FEATURE_XEN_ARAT): 0
>>>     (XEN) [18446743899.720420] _disable_pit_irq:2662: init: 0
>>>     (XEN) [18446743899.720431] hpet_broadcast_resume:663: hpet_events: ffff83046bc1f080
>>>     (XEN) [18446743899.720579] hpet_broadcast_resume:674: num_hpets_used: 8
>>>     (XEN) [18446743899.720587] hpet_broadcast_resume:692: cfg: 0x1
>>>     (XEN) [18446743899.720599] hpet_broadcast_resume:697: i:0, hpet_events[i].msi.irq: 122, hpet_events[i].flags: 0
>>>     (XEN) [18446743899.720612] hpet_msi_write:283: iommu_intremap: 2 (iommu_intremap_off: 0), HPET_Tn_ROUTE(ch->idx): 0x110
>>>     (XEN) [18446743899.720638] hpet_msi_write:287: iommu_update_ire_from_msi rc: 0
>>
>> So it succeeds, and the low half of HPET_Tn_ROUTE also looks plausible. The high
>> half is, however, the address that the low half value is written to. It's hard
>> to imagine that it would be zero when the low half isn't, but it is about the
>> last thing I can think of which could explain observed behavior. (Yet then, all
>> of this is pretty meaningless; see below.)
>>
>>> And the current debug diff attached.
>>
>> Hmm, you log HPET_Tn_ROUTE _before_ our update. That's not very useful. You want
>> to move that part of logging to the bottom of hpet_msi_write(), or maybe to
>> where you also log the per-channel cfg value in hpet_broadcast_resume() (thus
>> making the logging overall less verbose).
> 
> This test is with the updated patch (attached) + your extra
> calculate_host_policy() call and "no-arat" on cmdline:

And IOMMU faults still occurring as before, I expect.

Sadly you now log the low halves of HPET_Tn_ROUTE twice, while you don't log
the high halves at all.

Jan


From xen-devel-bounces@lists.xenproject.org Thu Apr 02 14:58:23 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 02 Apr 2026 14:58:23 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1272063.1559959 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1w8JUz-0002g1-7Z; Thu, 02 Apr 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 1272063.1559959; Thu, 02 Apr 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 1w8JUz-0002fu-4B; Thu, 02 Apr 2026 14:58:21 +0000
Received: by outflank-mailman (input) for mailman id 1272063;
 Thu, 02 Apr 2026 14:58:20 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <jbeulich@suse.com>) id 1w8JUy-0002fo-3p
 for xen-devel@lists.xenproject.org; Thu, 02 Apr 2026 14:58:20 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1w8JUx-005QZB-Gd
 for xen-devel@lists.xenproject.org; Thu, 02 Apr 2026 16:58:19 +0200
Received: from [10.42.69.6] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <jbeulich@suse.com>)
 id 69ce8405-2eae-0a2a0a5409dd-0a2a4506df86-20
 for <xen-devel@lists.xenproject.org>; Thu, 02 Apr 2026 16:58:19 +0200
Received: from [209.85.221.41] (helo=mail-wr1-f41.google.com)
 by tlsNG-16d1c6.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.0)
 (envelope-from <jbeulich@suse.com>)
 id 69ce840b-0df0-0a2a45060019-d155dd29a936-3
 for <xen-devel@lists.xenproject.org>; Thu, 02 Apr 2026 16:58:19 +0200
Received: by mail-wr1-f41.google.com with SMTP id
 ffacd0b85a97d-43cf3ee0fc1so1527574f8f.1
 for <xen-devel@lists.xenproject.org>; Thu, 02 Apr 2026 07:58:19 -0700 (PDT)
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-43d1e2a6f08sm9966660f8f.6.2026.04.02.07.58.17
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Thu, 02 Apr 2026 07:58:18 -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=google header.d=suse.com header.i="@suse.com" header.h="Content-Transfer-Encoding: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=1775141899; x=1775746699; darn=lists.xenproject.org;
        h=content-transfer-encoding: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;
        bh=kSwcmUGlWSvHjg16bVFgvYlXHPpn/x1Y+S982f7nVuI=;
        b=G+7+DslEQ4NCN/nYYfumfjiM8VHGOEI7eq2suQINln7Nt6R1Mnb8L+s/yy3zd7q+sF
         fALNClsv8OoYec0FxCIv8E2YAfekAI/LFxDaAXNGcF1FR2fVHjdRAVk0e9kY4/14dKDQ
         OK6THZfQtfp8HXLlQ2mT5e+my8Y4ZrpGRoytvSmMMcHY6dTWLlX1vyS8HoSvpaajWd7F
         fFCdzjn6fFyxpKxSH7Pk1lWojAExkxWEp+nbMZMRPzyRUCZGrAR1ye7PGjSEP99/oGCL
         VF6ShZ7AuWYSKMe5Lut+diCRnx2NacjdSF8a6js2hh2oGPi2Ig3VFALGzxM4dTNbpCPo
         +7Ow==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20251104; t=1775141899; x=1775746699;
        h=content-transfer-encoding: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;
        bh=kSwcmUGlWSvHjg16bVFgvYlXHPpn/x1Y+S982f7nVuI=;
        b=PT4z5td3MdVablRJ4RtWZu2rDNsMCslxh8oCtOn1eyuP2QDDkjQwXyIoEYC0XHgPid
         mgnIpvAQT96EXO5m3kX8ggLhEcCt2cWnlc4t0VaqPsS5VZzd/9nBb8Ag+hV8LqtQTKBg
         RxZ3kaDuQowC6fSh6/kBSteSwiPNKPOxkkOK9KdPbLV2ckHA0qXUlUyXVP9+i0eOImUi
         9jJwI1Ewt9mZhk9pgda6yT3b9yg89QZwHr3NnmQUdKFvyV/ByfgTr3YPfTH9mJbKlQnA
         zEJoY5a2BPoUY8O55js6FluUlG2KBuBo/TsHZWG5DWagcUaFZL1uvOSB9fqg50NG2r26
         gY+w==
X-Forwarded-Encrypted: i=1; AJvYcCUgio2NyRfaXFueSFh7gIQudqKQGtwn1vMjoANTFhiR+VBm4gqioTolU3xYafdoY5uLJqHFsBv6F1I=@lists.xenproject.org
X-Gm-Message-State: AOJu0YzCY0O1tFw54sHVinJ2Kve4BGNJmHMWOH8A+IilaQNm9d6kFsmV
	FCYR2Oak9K1c2nZQd1vMTFjlCDpc/8QliTVnH2V0/L6MUVZhKFqYLa5iPcyHvYPtRQ==
X-Gm-Gg: AeBDietDrCImLzNnJNEoDCBr/qvw2Js0VjIssdHkHJwJqXDsQClONw/Zb7fwLPJZGGv
	WgmO0l3udybYiwFCB4HnN4Mz4uyBiQGD4rz5t9p9jNX2fODOrfZ6Ck+lhDmjsiW32QkQZuDgmfX
	2yAazNEVYxjGwT184CmONiWTvncgtRWvTuF8DsCBR7CqcAzm9IXzNfOFBoOiPgnDIUG4qHYVnJT
	SKAd1qPEt0pkUYfpSm8AWYQicbz7RL9eXRzFWH0ExgwsqUA2sEywSyKSE2Ik5ZX6+t67OE/V7sd
	bEd3uO043oJV565WBZBhelNnrsysZ8GmQ0y2E3ehpfrV91cTRg8dGRkvJz8YdHtpLBpoXzLxceq
	ETuZZNHhwfkxhHU72SKr4PAq3gmNWnkggloTkMnUdFVK58BbpnulQrxt0PdkMDZVymaV8kAnouA
	ZZvHfkG4T3Mnn7D++igVJ0rIIYzIAA6jaO817BfmeQKTATgnj/pvucXBu7IcJc5O5HyJFNXblT7
	J1l1TmonGHwkMA=
X-Received: by 2002:a05:6000:4a07:b0:43b:4461:7adc with SMTP id ffacd0b85a97d-43d2124cd7bmr4123083f8f.20.1775141898700;
        Thu, 02 Apr 2026 07:58:18 -0700 (PDT)
Message-ID: <cf20ebc8-ff58-456d-a7f6-c844cb427306@suse.com>
Date: Thu, 2 Apr 2026 16:58:17 +0200
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH v1 21/27] xen/riscv: introduce (de)initialization helpers
 for vINTC
To: Oleksii Kurochko <oleksii.kurochko@gmail.com>
Cc: Romain Caritey <Romain.Caritey@microchip.com>,
 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.pau@citrix.com>,
 Stefano Stabellini <sstabellini@kernel.org>, xen-devel@lists.xenproject.org
References: <cover.1773157782.git.oleksii.kurochko@gmail.com>
 <61311834fef7cf8a736a8fa972b6461bbfd46e6d.1773157782.git.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: <61311834fef7cf8a736a8fa972b6461bbfd46e6d.1773157782.git.oleksii.kurochko@gmail.com>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 7bit
X-purgate-ID: tlsNG-16d1c6/1775141899-5C9223D8-47B1F03A/0/0
X-purgate-type: clean
X-purgate-size: 729

On 10.03.2026 18:08, Oleksii Kurochko wrote:
> @@ -96,4 +97,7 @@ void intc_handle_external_irqs(struct cpu_user_regs *regs);
>  
>  int intc_make_domu_dt_node(const struct kernel_info *kinfo);
>  
> +int domain_vintc_init(struct domain *d);
> +void domain_vintc_deinit(struct domain *d);

The former has a caller added, but the later hasn't.

> @@ -87,3 +88,42 @@ int map_device_irqs_to_domain(struct domain *d, struct dt_device_node *dev,
>      return d->arch.vintc->ops->map_device_irqs_to_domain(d, dev, need_mapping,
>                                                           irq_ranges);
>  }
> +
> +int __init domain_vintc_init(struct domain *d)

The __init here and below is questionable again.

Jan


From xen-devel-bounces@lists.xenproject.org Thu Apr 02 15:00:20 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 02 Apr 2026 15:00:20 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1272073.1559967 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1w8JWp-0004As-IC; Thu, 02 Apr 2026 15:00:15 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1272073.1559967; Thu, 02 Apr 2026 15:00: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 1w8JWp-0004Al-FT; Thu, 02 Apr 2026 15:00:15 +0000
Received: by outflank-mailman (input) for mailman id 1272073;
 Thu, 02 Apr 2026 15:00:14 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92) id 1w8JWo-0004Af-QY
 for xen-devel@lists.xenproject.org; Thu, 02 Apr 2026 15:00:14 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1w8JWo-00G7KA-4v
 for xen-devel@lists.xenproject.org; Thu, 02 Apr 2026 17:00:14 +0200
Received: from [10.42.69.7] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <jbeulich@suse.com>)
 id 69ce8479-5cb7-0a2a0a5109dd-0a2a45078f18-16
 for <xen-devel@lists.xenproject.org>; Thu, 02 Apr 2026 17:00:14 +0200
Received: from [209.85.128.42] (helo=mail-wm1-f42.google.com)
 by tlsNG-ef75cf.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.0)
 (envelope-from <jbeulich@suse.com>)
 id 69ce847d-ba2d-0a2a45070019-d155802ad47a-3
 for <xen-devel@lists.xenproject.org>; Thu, 02 Apr 2026 17:00:14 +0200
Received: by mail-wm1-f42.google.com with SMTP id
 5b1f17b1804b1-4852a9c6309so8248825e9.0
 for <xen-devel@lists.xenproject.org>; Thu, 02 Apr 2026 08:00:14 -0700 (PDT)
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-4887e967badsm260400105e9.14.2026.04.02.08.00.12
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Thu, 02 Apr 2026 08:00:13 -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=google header.d=suse.com header.i="@suse.com" header.h="Content-Transfer-Encoding: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=1775142013; x=1775746813; darn=lists.xenproject.org;
        h=content-transfer-encoding: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;
        bh=3SX0trmUDpZkTT/c+gJcovk9TCylzBwm7jeXYqJ5JR4=;
        b=A+v/N0nSkzRN/JNloxWMQmFUX/8jAPBGIJsVamdgHMs4tD/OMjgoBS76IZQbWLLBo3
         ldLqw18TSO0ldf2vaQE5isF+TtjQgPWfGGond4dqpUmIQQ3Qa65Pr1UZsEnuSog87r5K
         5j5zI1UcLCAYBuLez6gZ0Lk53Fj24yhbiqhsO3TllwPoekVZIaHAFu84knnSfHKHf46v
         wtzX+0pMvwKtxZbtCHPl5acRdrXKo8Tegdifwg6w8w2Q7psiMgbZOiIWTLQg6fyjelHq
         +X6ykoifQhod1VXuh8MehOwl5Riy6+BFzG/HOawHk5BTKPI7IIcju09pW2ZThFxZfGot
         yboA==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20251104; t=1775142013; x=1775746813;
        h=content-transfer-encoding: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;
        bh=3SX0trmUDpZkTT/c+gJcovk9TCylzBwm7jeXYqJ5JR4=;
        b=PtUl8t+pAqmLmuIgIA13VwU0PmDF7+tuZKDW3HjvAY7dzTYg661WCNxE/CqKudNv2s
         gXaQE14J7mJ6mFK1+PTxdtNlhY3yqLj+Armo1T4RXGoNC3XoNQxcGQr7Kl1vMi1o7+Op
         ZnWNLdOwQtST2b+zu0LGqwfPWewHWDZC4QQtRFQOwy1IuqjP2pGuahpjc5vLxVncb4RD
         K+SJYMkwBhNPrw3DRBXRxqdT4PK2lMufz1ACXXv7lPCJOaZ/aNZisX9fN32O2uXfpEHN
         eick9l10OKtI3bXxRhWj1WLQTVb/I9p6js7S9QvR7QfuoLzgf/+II7SEcFGuSIUNIFWH
         6whQ==
X-Forwarded-Encrypted: i=1; AJvYcCUHLs49z2RxD+PJvI7MpRLAk8WmHbSWFA3qAN8R0aY7pPKx0bzv4/JFF759DsD4kGSXQgXw1AdlZjk=@lists.xenproject.org
X-Gm-Message-State: AOJu0YxccMiDTO4OVkVbqI2XZ2PibPWFieU/s0Wmpb3+2Su47BWRHpj+
	cPTFDH/ywtq49VSDBtvBF11ilknOzbPdjIv1KOrBAbBZEOv96evBlhngfdpLqUeCnQ==
X-Gm-Gg: ATEYQzxELoQLJnUc7E5SOoZDnzGC/3gbl8u1oI9Fo9twMZNmm3RwWdAdvdn9IEQU5Az
	rtHknXeYjzJOQuV9gbpCcZdlnuRz15Mv3Tqm0HDp9L1BvBmV8UuuQSBpKrV+DDocKMGNu6BuPil
	2TLyxFASdeGKQS3t0Yo30QEZAP2CIpugiF7VVwDV1KB6CCoMZV+KECxTfquSRukQZxscEB5Rr54
	aK195U6ag9akPbTKz4iHdynhYgwei0izYdfGCEZTZa5gcRMH52bndtsQQjqWJePp3evJlngEeCY
	oKSvh1o0oWy5noTf2KmTWc1GUltB2Rv5FxdD+jXZj2uiZikGLgS7WTb8OdsI7YEAYIndOzWYhpJ
	mD99n8dVfl2VTcWwtevYezgaVcWk+JFdd4ka5NRXzwGuask46wzuifrVHfQBrVnMV0bcWAm1mka
	inwcBzre4O4r5V0QXow5FiaGtHshiTwbNwQ+d4XlvilBLcUUfj1Fzp1rliN3Bbccr3rPAtFRyd7
	QT9Xa+9U5B+9EU=
X-Received: by 2002:a05:600c:8488:b0:486:f4d2:eac6 with SMTP id 5b1f17b1804b1-488835682c8mr140731245e9.13.1775142013481;
        Thu, 02 Apr 2026 08:00:13 -0700 (PDT)
Message-ID: <e033cae3-b158-414b-9360-67b42edd6b81@suse.com>
Date: Thu, 2 Apr 2026 17:00:10 +0200
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH v1 22/27] xen/riscv: implement init_intc_phandle()
To: Oleksii Kurochko <oleksii.kurochko@gmail.com>
Cc: Romain Caritey <Romain.Caritey@microchip.com>,
 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.pau@citrix.com>,
 Stefano Stabellini <sstabellini@kernel.org>, xen-devel@lists.xenproject.org
References: <cover.1773157782.git.oleksii.kurochko@gmail.com>
 <b0669c89d963c31426acb239bc7c436c13d6ba45.1773157782.git.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: <b0669c89d963c31426acb239bc7c436c13d6ba45.1773157782.git.oleksii.kurochko@gmail.com>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 7bit
X-purgate-ID: tlsNG-ef75cf/1775142014-8A74A41E-99739340/10/73395122804
X-purgate-type: spam
X-purgate-size: 396

On 10.03.2026 18:08, Oleksii Kurochko wrote:
> Implement init_intc_phandle() to read phandle of interrupt controller
> node and save it in kernel->phandle_intc for the future usage during
> creation of guest interrupt controller node.
> 
> Signed-off-by: Oleksii Kurochko <oleksii.kurochko@gmail.com>

On the basis that it matches Arm's:
Acked-by: Jan Beulich <jbeulich@suse.com>

Jan


From xen-devel-bounces@lists.xenproject.org Thu Apr 02 15:02:03 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 02 Apr 2026 15:02:03 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1272082.1559977 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1w8JYY-0004fm-SY; Thu, 02 Apr 2026 15:02:02 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1272082.1559977; Thu, 02 Apr 2026 15:02: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 1w8JYY-0004ff-Pu; Thu, 02 Apr 2026 15:02:02 +0000
Received: by outflank-mailman (input) for mailman id 1272082;
 Thu, 02 Apr 2026 15:02:01 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92) id 1w8JYX-0004fZ-Hm
 for xen-devel@lists.xenproject.org; Thu, 02 Apr 2026 15:02:01 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1w8JYW-008cgH-Qg
 for xen-devel@lists.xenproject.org; Thu, 02 Apr 2026 17:02:00 +0200
Received: from [10.42.69.9] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <jbeulich@suse.com>)
 id 69ce84e1-5cb7-0a2a0a5109dd-0a2a4509ae58-28
 for <xen-devel@lists.xenproject.org>; Thu, 02 Apr 2026 17:02:00 +0200
Received: from [209.85.128.47] (helo=mail-wm1-f47.google.com)
 by tlsNG-bad1c0.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.0)
 (envelope-from <jbeulich@suse.com>)
 id 69ce84e8-bf79-0a2a45090019-d155802fe5d1-3
 for <xen-devel@lists.xenproject.org>; Thu, 02 Apr 2026 17:02:00 +0200
Received: by mail-wm1-f47.google.com with SMTP id
 5b1f17b1804b1-48334ee0aeaso9405135e9.1
 for <xen-devel@lists.xenproject.org>; Thu, 02 Apr 2026 08:02:00 -0700 (PDT)
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-48885553118sm45398915e9.14.2026.04.02.08.01.59
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Thu, 02 Apr 2026 08:01:59 -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=google header.d=suse.com header.i="@suse.com" header.h="Content-Transfer-Encoding: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=1775142120; x=1775746920; darn=lists.xenproject.org;
        h=content-transfer-encoding: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;
        bh=f0yt+3efUoC6uHT4hidYZz5Gx0Xpp4Vc6nbKmpmd794=;
        b=BAcgBf39w+goaHBq05AAesTmaAkxn4Q/ppnHc+72BNB4uG07KF9tPfRVioA13MdM8w
         /PLfruFRVeoE9gNCpmNZInmPuT8TV347Vk2ehelECQvH/wcm5/4/xQWmPA40bfnHBHhG
         64798aKeXo1G1SULjz+EYiQ9tsGTHG0LNg1YVAFQyM9PiV2LtVZixoyXnMbiwG1pcsYS
         WINKp0GA2ZdoCQLmG2y/SbZTukGkDvHFVSnlcNhPNZP8DDJ3S2cIxVj1fZOOwskhkrX4
         BInSbrUW6zmuZLVSHoFl/kfbFsaP2/+lRb4dFri9Vk0rxPbu/Y4cGupvhMZFx7xme5Np
         SBvg==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20251104; t=1775142120; x=1775746920;
        h=content-transfer-encoding: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;
        bh=f0yt+3efUoC6uHT4hidYZz5Gx0Xpp4Vc6nbKmpmd794=;
        b=sjzcrYvT4r5HRVkF1Oeha5g996BkVRZzt4ISRtcNYm72El+fyFZfHxd80GaVJCiH+D
         klKC1Bvap+YCx5KCuYt95umQQH/wTogndkYnSRxKuPwQhUpxEk6/+DvW1ndVewHajJm9
         a3mU3Bfe2+UVYpNAdSyvZn5C1V69QKYCFKSOuiW6I/ecwbMLO+19XZsQDctrtjJgYtwd
         L6Tp4Kqxu1/4lis2OiqmE3jWLJt9fcblSQJzzUDobnxKEAYFVSj5/xfmBRsO2cSjNvkH
         t81/kNq+jdIjUd2izHdkKgJx57vZ2fpyhY1On41j9U5bgAS4JtvnWgwsSi9FdHWF0FqP
         Kz8w==
X-Forwarded-Encrypted: i=1; AJvYcCUyWge/KnGzGWojLOc9mgmsUwL1hNK4oau0d9wFmspn8pPWFUeMXBLpyjaQkbb752liQmyKq5v5xgA=@lists.xenproject.org
X-Gm-Message-State: AOJu0YybFUptLk7oI+ls2f7+qSUm5pMf8FqKERht4FHiA6D0u3ZSxEQi
	wQTu9GV+qMUbYUWFc1kiF595hnL2KYKswp93uvCn9EAMf5ULE/R4H+ThScDe5jUXdg==
X-Gm-Gg: ATEYQzz0i/8dVR0FhzyaRu802M/GXU/cDwUTeMTPSd5YixcpH4p8bU96ledU3IKx34S
	KpgLoKRgeSsiK+Sd1iDIiPgbI/sCkhkLX9j4fS4kbKDqHbddsc3eZpzxg+kkbG0vB/6yAnUcqnp
	rRymsXF5IjxY0+BuP6CqJOhW2PzWqdYaOJrMhD2a3zY2FwoxgNg/HCdvKP7AozcZWO0db0LXh/3
	6k3Zt26JLFZHahwJQEIWNrbrIz8Y5+eBrJEVMrXeCKkVYj1Cchgq55NBupohefv5ZeIoczBKxnk
	qq6mWf4Uyfllo4IYyH+6kX/3f+ZH4hfAaqjIZ6AJ2M5Sni70D2trKOCwI4XBhIJwE5R7RcdV4TD
	ESSEtRMMlnQujfEvzSbIFON30y8hupv8hr6wDMCADxVeVJ+3d6Ld4nlYE2ZAfD2wf8Jmvdn9CF2
	uS7V3FD8BJal0Ab9ksyp7xJAvLwONZ9JgLdIyXsV9T4e2B7hzb2NlZSsQDJDM3/VVXqnvlJ2TOd
	cugquP7xTIOOW8=
X-Received: by 2002:a05:600c:4f91:b0:483:64b4:79da with SMTP id 5b1f17b1804b1-488835b7582mr128852825e9.26.1775142119827;
        Thu, 02 Apr 2026 08:01:59 -0700 (PDT)
Message-ID: <1061368b-c13e-4967-83fe-c8ff911050bd@suse.com>
Date: Thu, 2 Apr 2026 17:01:58 +0200
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH v1 23/27] xen/riscv: call do_initcalls() in start_xen()
To: Oleksii Kurochko <oleksii.kurochko@gmail.com>
Cc: Romain Caritey <Romain.Caritey@microchip.com>,
 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.pau@citrix.com>,
 Stefano Stabellini <sstabellini@kernel.org>, xen-devel@lists.xenproject.org
References: <cover.1773157782.git.oleksii.kurochko@gmail.com>
 <e039f2a351bca2f37bb40655b5bf2eb41ab40c9b.1773157782.git.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: <e039f2a351bca2f37bb40655b5bf2eb41ab40c9b.1773157782.git.oleksii.kurochko@gmail.com>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 7bit
X-purgate-ID: tlsNG-bad1c0/1775142120-57742152-1022F23C/10/73395122804
X-purgate-type: spam
X-purgate-size: 411

On 10.03.2026 18:08, Oleksii Kurochko wrote:
> Execute initcall function. Additionally, before do_initcalls() call
> scheduler_init() which is needed because of cpupool_create_pool()
> is called by do_initcalls(); otherwise BUG_ON(IS_ERR(pool)) will occur
> in inside cpupool_create_pool().
> 
> Signed-off-by: Oleksii Kurochko <oleksii.kurochko@gmail.com>

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



From xen-devel-bounces@lists.xenproject.org Thu Apr 02 15:03:21 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 02 Apr 2026 15:03:21 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1272094.1559986 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1w8JZl-0005Dl-AD; Thu, 02 Apr 2026 15:03:17 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1272094.1559986; Thu, 02 Apr 2026 15:03: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 1w8JZl-0005De-7L; Thu, 02 Apr 2026 15:03:17 +0000
Received: by outflank-mailman (input) for mailman id 1272094;
 Thu, 02 Apr 2026 15:03:15 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92) id 1w8JZj-0005DP-Fd
 for xen-devel@lists.xenproject.org; Thu, 02 Apr 2026 15:03:15 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1w8JZi-002R86-SB
 for xen-devel@lists.xenproject.org; Thu, 02 Apr 2026 17:03:14 +0200
Received: from [10.42.69.7] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <jbeulich@suse.com>)
 id 69ce852f-2eae-0a2a0a5409dd-0a2a4507a756-10
 for <xen-devel@lists.xenproject.org>; Thu, 02 Apr 2026 17:03:14 +0200
Received: from [209.85.218.41] (helo=mail-ej1-f41.google.com)
 by tlsNG-ef75cf.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.0)
 (envelope-from <jbeulich@suse.com>)
 id 69ce8532-ba2d-0a2a45070019-d155da29f04a-3
 for <xen-devel@lists.xenproject.org>; Thu, 02 Apr 2026 17:03:14 +0200
Received: by mail-ej1-f41.google.com with SMTP id
 a640c23a62f3a-b7cf4a975d2so126686366b.2
 for <xen-devel@lists.xenproject.org>; Thu, 02 Apr 2026 08:03:14 -0700 (PDT)
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-43d1e4e221bsm8139050f8f.29.2026.04.02.08.03.13
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Thu, 02 Apr 2026 08:03:13 -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=google header.d=suse.com header.i="@suse.com" header.h="Content-Transfer-Encoding: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=1775142194; x=1775746994; darn=lists.xenproject.org;
        h=content-transfer-encoding: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;
        bh=4baSTKvFt8Hik/FkCGZRrex94YsWhkN9Rz4fX8kotrQ=;
        b=YHva/mONZHGRet8awQb0E8iWdly2/j4+YT2CMfx94KaPSHysON+EyC65Ac28OCkE/x
         8534lHM9LlfKd8iA0PMrXz7taxeYE/AoCxnwN98gZJKoWnF5nrOBT6Y7CiFfGaXdY1e1
         YCHuLQ4d7wRdTO5T5/DyhuyLFz4VPclAeVXgUJUuX2A+LkEvkPQIPWJW21BgltyXyK36
         1nMWW12mm6CRpgvN+tjFnYs1CYTBrQulBRuKhn5zWCphiN5VkqAJOHBnqRyHp0OK7PvM
         7quRhqqeh5t2KY8sRPHcSu3gEygay8ARnfjAbjs2nvBlIGuqxIbHXjiY65tuYlwpVK4o
         AKlQ==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20251104; t=1775142194; x=1775746994;
        h=content-transfer-encoding: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;
        bh=4baSTKvFt8Hik/FkCGZRrex94YsWhkN9Rz4fX8kotrQ=;
        b=Mhvl+s00BvvdLftU6bcy/vNjiQWrLf4d0ou3GIWL6xCmNPUB07BGxWWscCK+Vtdubp
         K6kavwy7SG4spTVTT5VpuPLf4S6HhFUUmQk8Bs+w3uKwte9UUnIizmWtbKTHnMcDyH/a
         jP50wpJ3fu9/FROSK3kLzN35RWhyfuVQMrTOrPqnHuz+eln1VspKTahSFXMRHBK7Dfux
         uQukK+ax5HBT4IIz63/5LWO0PepSg3lTZn28f9zM11qWWrOP5urorcsKsxL4g7kcIHO5
         jR1I2Y4Nt7JCR4lRUa/ggReiOsqwgxe/bCaFVDQDVzk5bcASqJlo229fAknbimp4u8B7
         RpJw==
X-Forwarded-Encrypted: i=1; AJvYcCUsbvQJWpiNmmGZXHQoGIZsgHDIFOz2qxlTnN9SjtRaew9j6ACgNQW/ue9cTHWtiAFP0bV1qkbrR1Q=@lists.xenproject.org
X-Gm-Message-State: AOJu0Yw7nKBU52E5KWLijZ0yHwDAB092fZtHGN5nwYzK3vdEieFsv0j7
	SsTMeGwFZAQP9TpoZ7Stx+xvaoOeTIBwR0doYfb6PUbCO0GPOtvYWKw5bQKFLJiSuQ==
X-Gm-Gg: ATEYQzyJCGeR4pi3bcMTvl3SbMtsnauGnymP9m3K8rcSbNP5wbZHHDuYJLa5HCWX2JV
	ewFIKDWbfhJ+NrfaXJkAzaGfMiSa4iRBT3P/V3Jj9n15OBS/mfQzGry0pRHvCryprUKHJttftht
	O8XtaFQZsh2BA1lYN0VCBboLaGBE4PDMZWmJ5POTKRVBI1qLQDWdOysPclRsAC1bgnQzbOZdfkb
	CWLum11IsBSdMLBiaaDPYKlioJJ2JtnouIxytLwG4VU8WYXPxlwq8mPaat/6EL6ZtjhonrhgAj3
	RRmQKVqeEi0CBZ5ty3gK/3uYftw6NF6eq8a8O0K/zTa/ywVzs2wt4t9wb9UNSl2KKbOuzYiR3vN
	ar+xJLTZouabVW2cKipBCaYaGZQKn6jLX7hvPK7uQgd6YFK94h0UAEzdvCA/xknTYe7EQqeJtto
	b/M9tOVeG6qrVuwWpFFltEBHIwRgc1Hnmr7El+vR+EO1LrJ2iz4KM4Q/UmWMEQCSLkRo0oXfuG0
	VKstsLJkNp+pkg=
X-Received: by 2002:a17:907:d40b:b0:b97:acca:fcf6 with SMTP id a640c23a62f3a-b9c139105eamr498413166b.23.1775142194046;
        Thu, 02 Apr 2026 08:03:14 -0700 (PDT)
Message-ID: <81e37c32-56dd-43eb-97a0-ffe405e1ac19@suse.com>
Date: Thu, 2 Apr 2026 17:03:12 +0200
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH v1 24/27] xen/riscv: init rcu
To: Oleksii Kurochko <oleksii.kurochko@gmail.com>
Cc: Romain Caritey <Romain.Caritey@microchip.com>,
 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.pau@citrix.com>,
 Stefano Stabellini <sstabellini@kernel.org>, xen-devel@lists.xenproject.org
References: <cover.1773157782.git.oleksii.kurochko@gmail.com>
 <c55191b5c4ec8f42bc73bfb2d680945b439c6db6.1773157782.git.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: <c55191b5c4ec8f42bc73bfb2d680945b439c6db6.1773157782.git.oleksii.kurochko@gmail.com>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 7bit
X-purgate-ID: tlsNG-ef75cf/1775142194-10F5E41E-A232DDFA/10/73395122804
X-purgate-type: spam
X-purgate-size: 661

On 10.03.2026 18:08, Oleksii Kurochko wrote:
> Signed-off-by: Oleksii Kurochko <oleksii.kurochko@gmail.com>

Fold patches 23-25 into a single one, with an adjusted title?

Jan

> --- a/xen/arch/riscv/setup.c
> +++ b/xen/arch/riscv/setup.c
> @@ -9,6 +9,7 @@
>  #include <xen/init.h>
>  #include <xen/irq.h>
>  #include <xen/mm.h>
> +#include <xen/rcupdate.h>
>  #include <xen/sched.h>
>  #include <xen/serial.h>
>  #include <xen/shutdown.h>
> @@ -154,6 +155,8 @@ void __init noreturn start_xen(unsigned long bootcpu_id,
>  
>      timer_init();
>  
> +    rcu_init();
> +
>      local_irq_enable();
>  
>      console_init_postirq();



From xen-devel-bounces@lists.xenproject.org Thu Apr 02 15:52:35 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 02 Apr 2026 15:52:35 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1272143.1559994 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1w8KLI-0003OW-N7; Thu, 02 Apr 2026 15:52:24 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1272143.1559994; Thu, 02 Apr 2026 15:52: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 1w8KLI-0003OP-KQ; Thu, 02 Apr 2026 15:52:24 +0000
Received: by outflank-mailman (input) for mailman id 1272143;
 Thu, 02 Apr 2026 15:52:23 +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 1w8KLH-0003O3-3E
 for xen-devel@lists.xenproject.org; Thu, 02 Apr 2026 15:52:23 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1w8KLE-005maE-Sk
 for xen-devel@lists.xenproject.org; Thu, 02 Apr 2026 17:52:22 +0200
Received: from [10.42.69.4] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <Mykyta_Poturai@epam.com>)
 id 69ce90a5-bab6-0a2a0a5309dd-0a2a4504e2ac-24
 for <xen-devel@lists.xenproject.org>; Thu, 02 Apr 2026 17:52:22 +0200
Received: from [52.101.84.86]
 (helo=DB3PR0202CU003.outbound.protection.outlook.com)
 by tlsNG-ebf023.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.0)
 (envelope-from <Mykyta_Poturai@epam.com>)
 id 69ce90b5-bb33-0a2a45040019-346554562de3-4
 for <xen-devel@lists.xenproject.org>; Thu, 02 Apr 2026 17:52:22 +0200
Received: from PAVPR03MB10102.eurprd03.prod.outlook.com
 (2603:10a6:102:30d::12) by FRZPR03MB11711.eurprd03.prod.outlook.com
 (2603:10a6:d10:1c9::6) with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9769.17; Thu, 2 Apr
 2026 15:52:20 +0000
Received: from PAVPR03MB10102.eurprd03.prod.outlook.com
 ([fe80::b8c6:f37a:987a:beb]) by PAVPR03MB10102.eurprd03.prod.outlook.com
 ([fe80::b8c6:f37a:987a:beb%5]) with mapi id 15.20.9769.016; Thu, 2 Apr 2026
 15:52: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=Xc0cNF1uBD55s83KHL26RXwXJJ8T0KuQ1D0MFM2dnB/JXgILtMI/cwN6xfbo1X93P/I4zq7GIo6qSlUAy1EKTB1IoW/MrRHxlC4pfV3VAt8ODPS9PcZ9NVJ/mMD6Fz7I+27zlBE0Ioee67VRCdnYm2cL2bqr06kyMcPGHTnx6L17PiTQpJZDIpYR1c37FS2LRbJ28CVw7yQawBK4OOgEGJa4DJSvXSm3kWNCY3bN+HDJHckQ6J3ROjqniI+USonw58DHWROUbQ4Vdmd9FQXJfwIBmY9SqTvKGvAiu2c7+3JLXRjS4tsKoskgtmRp2hTu1tDzzYP7GFRL1Ecx3HM5Ew==
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com;
 s=arcselector10001;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1;
 bh=JaeQ8h1iJNhyinlJBVQjg89/c/eTss9GxwDuxdgoFJA=;
 b=Pq0YMEZjvkdgUaHAG5os+uU/GQvv/WbdEFeSg0mrmP2UdG3D9l4lyaGkH+JKHFfM+xyxTPSmEBZCK218gxCAcOtDozLoc4bp3rIvwHY0TspgcYrPQ7LR2ptKe1Z52J0X3G7bk9iVBR8dRwy5Mul/JKBOFJ8vH98fZm9AcUhFOlTcHEXi7uBzDuwCyM8vu/TtDug0Jw8ecxqlF7HVuG4/zkll870RTvwd56xyYY+RP38Bx8cTx+RJStAcpplCQ9g3xNlt8g0IgcXxpp+gtI9WCDv3m82DaZsd9yWl6p79iasb1eYFjXPfwZ3CnwUr8DTctQ0tNaS+uoHLeHCcmKwoHw==
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=JaeQ8h1iJNhyinlJBVQjg89/c/eTss9GxwDuxdgoFJA=;
 b=RlMmMV406ZGgLVgHhS+6UPiZoAZ7i1q6DMjIB9DJgGxGaFeKLSWQIzFa0DeoiOVuamks4u4tOzvZ4Hyirt/M7L0urAAAMpCua59OvL0gOHg65kqUjwPU4m4ytScdWg0bwJTAAfunewUZ0Kmdk8ZY59+gX9F1nv1U6pLtmDf+PZXxu3q4ASlwAdCWjhxrtMNAEA/6qHohVSmYgp0RnwtC6OxDLbNfnZs6UXaM+ik0pmWXBSaBvDMITxBOErzAYyPD7lx5AdewEKko+cQahcytj9gKilFIP71yPSVVh8kMEygulU+N4u8qM0FdrKJ/dJqZgKJ3Ps2gAfQxGS6Dl0NEqw==
From: Mykyta Poturai <Mykyta_Poturai@epam.com>
To: Stewart Hildebrand <stewart.hildebrand@amd.com>,
	"xen-devel@lists.xenproject.org" <xen-devel@lists.xenproject.org>
CC: =?utf-8?B?Um9nZXIgUGF1IE1vbm7DqQ==?= <roger.pau@citrix.com>
Subject: Re: [PATCH v3 2/4] vpci: allow queueing of mapping operations
Thread-Topic: [PATCH v3 2/4] vpci: allow queueing of mapping operations
Thread-Index: AQHcuzsjSQhCcIF69U+TfmTRWDgaEbXL+uoA
Date: Thu, 2 Apr 2026 15:52:20 +0000
Message-ID: <d792d3dc-a99c-4dc6-a3d0-13b9c2762299@epam.com>
References: <20260324030513.700217-1-stewart.hildebrand@amd.com>
 <20260324030513.700217-3-stewart.hildebrand@amd.com>
In-Reply-To: <20260324030513.700217-3-stewart.hildebrand@amd.com>
Accept-Language: en-US
Content-Language: en-US
X-MS-Has-Attach:
X-MS-TNEF-Correlator:
authentication-results: dkim=none (message not signed)
 header.d=none;dmarc=none action=none header.from=epam.com;
x-ms-publictraffictype: Email
x-ms-traffictypediagnostic: PAVPR03MB10102:EE_|FRZPR03MB11711:EE_
x-ms-office365-filtering-correlation-id: e349892b-de38-4a18-3687-08de90cfd305
x-ms-exchange-senderadcheck: 1
x-ms-exchange-antispam-relay: 0
x-microsoft-antispam:
 BCL:0;ARA:13230040|1800799024|376014|366016|38070700021|22082099003|56012099003|18002099003;
x-microsoft-antispam-message-info:
 TLVpAp2HWBKjf1BttJu+UJ40j2w6wjMX/nydH/yw68tkn43TJHzfnxT2Vr/uGFbKKnzsXlpSIpHeMRRimKmzO8GQ7RL5+S13wBSOMHm81Mepthq/PZp3W0GoxYcjWI7OLYBYYJ+ESwvnKHAKG/svugQ7acJnNFhluh/U0cayKr12zvGo3JcJsLkl8MsTRmP3TRUso3o4GIJ4Rfx4kGdHzgHmmOX/7s8pKRIZT40SAF5cZpv6cxWbxsRis6ptf+M34IqXVkPr4kSrcwy8tb8uVknE87M66auReoPF7/W5BfQkq8EBbzwHPdZuUoDT6F0jzyDQnNN28ctt4d1c3R6svvOKvmA8PmdlbrVhGIJokj1UO4xzd671dMvCRz8hsf/uUq+diLAxLFNpVBfBL97Y/ojowVOyfQSXSCYpKg+2uQ4GMwIYbZAd9CtktZQEDhApqa4WORlU9wquVtUWZqu4IYIC0YETS3X8FkgXjUfW2LADc7qyn5wUElE7ZMsFwhevNpv0exrQT1vipB6YmWWoSd3dGS/Q1GlUVSuv+8v1JM3horo3i6Fd9mrnm+ng8/g3D8GGA4EPbFfCVievyN+RnKQKHPdw8by2v2hzbxBLxpnXNTKmNGUqdYhGv03C5iT/F21l+V8fhI6LZvZF0wmRHGXdi5yGbF7+sirP/oPmzZLUgVEaibM7tJ1BDuMSnJH9l0EUvex1tC5p1CN5DP7tLD/bcl/vkAS8st6+IXxTN4i7gYcVWOlPh5z+WnSWuVuz
x-forefront-antispam-report:
 CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:PAVPR03MB10102.eurprd03.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(1800799024)(376014)(366016)(38070700021)(22082099003)(56012099003)(18002099003);DIR:OUT;SFP:1102;
x-ms-exchange-antispam-messagedata-chunkcount: 1
x-ms-exchange-antispam-messagedata-0:
 =?utf-8?B?Z2E5VjlJaUZnaWlRc3Q4R0lGb29MZDl1SDJheE1wSUV3RUhVYVpOWTJscTNo?=
 =?utf-8?B?dDNBVFkvMGNycExDLzNjNlQ3SlVUZDFiMVBJUVc5d1lwOThVV0Y1NDJwR1Ns?=
 =?utf-8?B?cXRLbkpkUWVvdGhVU21MUDBkSnV5RGpjbU5pU1RVRldtQks4YXlXVlZPb1Ft?=
 =?utf-8?B?akQxZ2Q4U0VmcUdFVHhrRkVqZUVZdjl6QnM0T0s2dTRuZk1OVVRrZldTZlow?=
 =?utf-8?B?MDQvR0pGanVtclNwSkpQd2VZQzk5OER0cFVmMlVQMUVFOExhb0FpNUJ6Vzg4?=
 =?utf-8?B?Wlk3QVhDTmxGTU92RDZtTm83RU5MMHFvcHZJVDhRdWcyNTJCTGRsdlJyVitO?=
 =?utf-8?B?ZWExbldWYXYyMk0wOTJIR2hoZjNTdnpQdWd5OFVBT3NLT2pOOXp5MzlBTGlq?=
 =?utf-8?B?U2JwVDBlWnpUaUNIV0tjc25ITnZlRjhEVWYzTkxKNUNDZlN3YlRiL2k3cUhF?=
 =?utf-8?B?R2NQWGZ4K2VSdXRWTkxBakJDRm5IaXY0MkNjdUtBYmF6a0J5MFFyK2tOMDBa?=
 =?utf-8?B?NjlOK1g4QU9FaTIrZjhtdXViK2NTQktSc2EwN2NFZWEwTlFYa212S3FUOUZq?=
 =?utf-8?B?Q0FZUG9iN3JEWTRaYlNtODVreHYwZit5Nk9CdGoxWmpXQ21yQWJHNFRLSnJS?=
 =?utf-8?B?d1FQeGRIMGRZQU1jOGQ0MDlEWXBsUU10WG9icE4veHo4OExLT2swNTZrOEVz?=
 =?utf-8?B?SHROdVBtWktaVFNwY285NXFjS2NiSVYwSjBZbnNvTllPTS9oOXJyaTljMHVj?=
 =?utf-8?B?Uy9ZQmIrcTAwejBVa1hkZDRGT3Z0RVRIQUh5NFdQWVhJUDZjbSsvcHNOeFVr?=
 =?utf-8?B?eWdGWWtKNHlvTFBJNUl4RzlPRVdWK1owUHp5dFZHRXpkeVhHbTY5Q1pVUDM2?=
 =?utf-8?B?SlRkYjdJUk9Qa0tTNHlrVzluQmY2RmpSVTR6NS9MZUpSczVkZjV4bVhWSEZR?=
 =?utf-8?B?UXlwampYd2twL0ZVUktLYUNXc3ZvaEppNlh6OG8rRlJJSkk2b3JXTGJxaE4v?=
 =?utf-8?B?WGRReWhUaGFGZE9CM21UZmYwZGtQZ1MwTGtHNVBpTkVjc1BZdXFBb1ZJQjNZ?=
 =?utf-8?B?SXB1S1hVM0swZXZvN3M4YWVlN3dpL0tJeUVtY3hOTG80YzgvaEwzUm4wbzd0?=
 =?utf-8?B?NllNWlQxUjBINm5NYmJlNEh0RUlmeVNsZ3V4Yk0zZEdJVGpLZSs0YXcvRHdv?=
 =?utf-8?B?cFFnMmhCa3djRCtmUkdkWHMySkJTbmtoZzJ6WitpYWxGdERYSFBqSW5HZWlG?=
 =?utf-8?B?dXFLUkI3SDhuY2FqOXR2eWZKVWJEdmVhVDVJeUFLaHFLME5Day9rY2g5cGF2?=
 =?utf-8?B?TGVOZG51aWNRUXFDTE9iRlRkb2hUWFBZSnB5Y2tOL3NYVHlGSi9nUk9NYWJu?=
 =?utf-8?B?Z0FNRm80MFZ2OUcxRUhlWitsSHBGL1RuS1NHZTVMb3Y2RnlNSWxyVlhtTTY5?=
 =?utf-8?B?ekp4WDJuREh6TmlWT2tlNERPZFdoQTRIc3dkRHI3ZGJEdkJOMjZ3Sm83eDA0?=
 =?utf-8?B?MFhsbS9hRTJSTlJOWUlLdk9IK2MxR0FwdWR5dVUralh0amk3OHZBTFpaa05C?=
 =?utf-8?B?NmRyUVFYWW9SQWRQTURXYnJqa0dGdVRrMkFtWVR1Zkw3RDlQclo2SERGblB6?=
 =?utf-8?B?NlMwQm5jOVNJRGxFZTFERWRYam83UUN5SVBPdFl4b3ZBMFNoa1NUeEhLUEZ3?=
 =?utf-8?B?Mk0rL3hWQnpoUmJYSjI1VnNmNzUwTnQ0bitscTFFUnBrbUR2azE1N2UwQUE1?=
 =?utf-8?B?dFRub1RhRi9nVndBRWk4d2xZbEtlMEdrbk1uOUoxV3hLQU1UTVFORFpuYVUx?=
 =?utf-8?B?TGpHSUJ3S3d5T1E3TXJJeGdjVGh0SVU0aVIxUnV0bExGL0xGYm5ITEk0emlT?=
 =?utf-8?B?NDA0RXJxTitacjRNNkZ1aWlmclBtTkIvQ2hoSkN1emFENUQ1VVREek1aN2dJ?=
 =?utf-8?B?OHludXlna2hDTnFpUldaVnJMRTg4NENPSUtIbUVQTUFyRXZHZVQwMlRkdENj?=
 =?utf-8?B?VkJTNzZIbnRZa3JaTXloU3lpOUhlWHo1S09TT0twWFlCeFBGRUt5clVWMk5a?=
 =?utf-8?B?LzNKbTlPVEZ2K3ZuVWpYZGNsV2hNUzFTd1dwT1YvRjkvQ1luK3B2VDdmOW02?=
 =?utf-8?B?N1pnbmUwVXgxYzJjRCtxTjNRd2xWMS9DdVdFV05CTXdHMisvTFJaTEJqM212?=
 =?utf-8?B?Q1oxNWdxV2lNejl3RGZ5RlIxTE56SDJnNUIvdDltNTZUb3RIMXdSK1g0ZWdD?=
 =?utf-8?B?SmxUK0RFK1hwZktheW84aTlnRitLL1JiYzdiakl6QWFoV0FFQnNqL2lYSkNE?=
 =?utf-8?B?WXMvdDIvYjRrR3RvbnlMcTVOUUFmNkxMcnlZTlltZGswajlkNXlSaEVRSWxj?=
 =?utf-8?Q?TQSfBfmv2cRxDSRo=3D?=
Content-Type: text/plain; charset="utf-8"
Content-ID: <E08560B0CDA42B4686C4BDB721795C6F@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: PAVPR03MB10102.eurprd03.prod.outlook.com
X-MS-Exchange-CrossTenant-Network-Message-Id: e349892b-de38-4a18-3687-08de90cfd305
X-MS-Exchange-CrossTenant-originalarrivaltime: 02 Apr 2026 15:52:20.5634
 (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: 26EHGJk3o4gBggpX+4d3OtgjDnZCMo44PhsXGvDuvzK1hh8/8fSPalxHjoImOy+IjIMqU3u/z/Du3uynjujQ2A==
X-MS-Exchange-Transport-CrossTenantHeadersStamped: FRZPR03MB11711
X-purgate-ID: tlsNG-ebf023/1775145142-32F3E51B-77C6B6CB/0/0
X-purgate-type: clean
X-purgate-size: 2058

T24gMy8yNC8yNiAwNTowNCwgU3Rld2FydCBIaWxkZWJyYW5kIHdyb3RlOg0KPiBJbnRyb2R1Y2Ug
dlBDSSBCQVIgbWFwcGluZyB0YXNrIHF1ZXVlLiBTdG9yZSBpbmZvcm1hdGlvbiBuZWNlc3Nhcnkg
aW4gYW4NCj4gYXJyYXkgaW4gc3RydWN0IHZwY2lfdmNwdSB0byBwZXJmb3JtIG11bHRpcGxlIHAy
bSBvcGVyYXRpb25zIGFzc29jaWF0ZWQNCj4gd2l0aCBzaW5nbGUgZGV2aWNlLg0KPiANCj4gVGhp
cyBpcyBwcmVwYXJhdG9yeSB3b3JrIGZvciBmdXJ0aGVyIGNoYW5nZXMgdGhhdCBuZWVkIHRvIHBl
cmZvcm0NCj4gbXVsdGlwbGUgdW5tYXAvbWFwIG9wZXJhdGlvbnMgYmVmb3JlIHJldHVybmluZyB0
byBndWVzdC4NCj4gDQo+IEF0IHRoZSBtb21lbnQsIG9ubHkgYSBzaW5nbGUgc2xvdCBpcyBuZWVk
ZWQgaW4gdGhlIGFycmF5LiBIb3dldmVyLCB3aGVuDQo+IG11bHRpcGxlIG9wZXJhdGlvbnMgYXJl
IHF1ZXVlZCBhbmQgcGVuZGluZywgdGhlcmUgaXMgYSBjaGVjayBpbg0KPiBtb2RpZnlfYmFycygp
IHRvIHNraXAgQkFScyBhbHJlYWR5IGluIHRoZSByZXF1ZXN0ZWQgc3RhdGUgdGhhdCBpcyBub3QN
Cj4gYWNjdXJhdGUuIFJlbW92ZSB0aGlzIGNoZWNrLg0KPiANCj4gU2lnbmVkLW9mZi1ieTogU3Rl
d2FydCBIaWxkZWJyYW5kIDxzdGV3YXJ0LmhpbGRlYnJhbmRAYW1kLmNvbT4NCj4gLS0tDQo+IGFw
cGx5X21hcCgpIGFuZCB2cGNpX3Byb2Nlc3NfbWFwX3Rhc2soKSBhcmUgdmVyeSBzaW1pbGFyLiBT
aG91bGQgd2UgdHJ5DQo+IHRvIGNvbWJpbmUgdGhlbSBpbnRvIGEgc2luZ2xlIGZ1bmN0aW9uPw0K
PiANCj4gdjItPnYzOg0KPiAqIGJhc2Ugb24gKCJ2cGNpOiBVc2UgcGVydmNwdSByYW5nZXMgZm9y
IEJBUiBtYXBwaW5nIikgZnJvbSBbMV0NCj4gKiByZXdvcmsgd2l0aCBmaXhlZCBhcnJheSBvZiBt
YXAvdW5tYXAgc2xvdHMNCj4gDQo+IFsxXSBodHRwczovL2xvcmUua2VybmVsLm9yZy94ZW4tZGV2
ZWwvY292ZXIuMTc3MjgwNjAzNi5naXQubXlreXRhX3BvdHVyYWlAZXBhbS5jb20vVC8jdA0KPiAN
Cj4gdjEtPnYyOg0KPiAqIG5ldyBwYXRjaA0KDQpIaSBldmVyeW9uZSwNCg0KDQpXb3VsZCBpdCBi
ZSBwb3NzaWJsZSB0byBtb3ZlIGJhY2sgdG8gYSBkeW5hbWljYWxseSBhbGxvY2F0ZWQgbnVtYmVy
IG9mIA0KdGFza3M/IFRoaXMgd291bGQgaGVscCB3aXRoIG1hcHBpbmcgU1ItSU9WIHZpcnR1YWwg
ZnVuY3Rpb25zIGEgbG90LiANCkBTdGV3YXJ0IEBSb2dlciwgd2hhdCBhcmUgeW91ciB0aG91Z2h0
cz8NCg0KQWx0ZXJuYXRpdmVseSwgSSBjYW4gY29udGludWUgd2l0aCBhbiBhcHByb2FjaCBkZXNj
cmliZWQgaW4gU1ItSU9WIA0Kc2VyaWVzLCB3aGVyZSBWRnMgYXJlIGhhbmRsZWQgc2VwYXJhdGVs
eS4gSSBmaWd1cmVkIG91dCBob3cgdG8gcmV0dXJuIHRvIA0KZG9fc29mdGlycSBhZnRlciBtYXBw
aW5nIGVhY2ggVkYsIHNvIGl0IHNob3VsZCBub3QgYmxvY2sgdGhlIENQVSBmb3IgdG9vIA0KbG9u
Zy4NCg0KDQotLSANCk15a3l0YQ==


From xen-devel-bounces@lists.xenproject.org Thu Apr 02 15:55:23 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 02 Apr 2026 15:55:23 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1272155.1560004 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1w8KOA-0003v3-4P; Thu, 02 Apr 2026 15:55:22 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1272155.1560004; Thu, 02 Apr 2026 15:55: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 1w8KOA-0003uw-17; Thu, 02 Apr 2026 15:55:22 +0000
Received: by outflank-mailman (input) for mailman id 1272155;
 Thu, 02 Apr 2026 15:55:20 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <freddy77@gmail.com>) id 1w8KO8-0003uo-LN
 for xen-devel@lists.xenproject.org; Thu, 02 Apr 2026 15:55:20 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1w8KO8-00Flc6-1Q
 for xen-devel@lists.xenproject.org; Thu, 02 Apr 2026 17:55:20 +0200
Received: from [10.42.69.1] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <freddy77@gmail.com>)
 id 69ce915d-bab6-0a2a0a5309dd-0a2a4501bcca-26
 for <xen-devel@lists.xenproject.org>; Thu, 02 Apr 2026 17:55:20 +0200
Received: from [209.85.128.46] (helo=mail-wm1-f46.google.com)
 by tlsNG-d62444.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.0)
 (envelope-from <freddy77@gmail.com>)
 id 69ce9167-6fc9-0a2a45010019-d155802ee096-3
 for <xen-devel@lists.xenproject.org>; Thu, 02 Apr 2026 17:55:19 +0200
Received: by mail-wm1-f46.google.com with SMTP id
 5b1f17b1804b1-486b96760easo11582775e9.2
 for <xen-devel@lists.xenproject.org>; Thu, 02 Apr 2026 08:55:19 -0700 (PDT)
Received: from localhost.localdomain (5.116.208.46.dyn.plus.net.
 [46.208.116.5]) by smtp.gmail.com with ESMTPSA id
 5b1f17b1804b1-4888a62616dsm98260155e9.3.2026.04.02.08.55.18
 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
 Thu, 02 Apr 2026 08:55:18 -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=20251104 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=20251104; t=1775145319; x=1775750119; 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;
        bh=3sc+GVPgMu2RbwBMk8uqaoY6h1yyfHiG33iexYIz/sA=;
        b=NUDQjsDCDLpld/Hx0eeIJ4v9mW/E+1xx727kXDb76HtZ31NmUqsii42t521EnceKX/
         DfYq4kDNUoBSgXzTTyWqs06kPXq9K2aU0vRM61uI52b7SqUXY+O0RK1Arp3km0EyJnAS
         H3I5E/BN7TSuFG1qCvRmhKQ4HXv7nEpqaMCGpbqspOmL7LK8QGQABB8W1fwLSkSeEFRB
         ev3tb/KLMoVTbmAm15sHhJ3RCZODVw4URiQJhSs/AvrhmkqDj2EBWz8/Kb0V5nlOswSm
         GnV2ty934SxtBhSd69fwKe0tL1YoT38EbQxKqcZkRlS1h/EWX0aOVypBmtxyfnA4dOxO
         a7PA==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20251104; t=1775145319; x=1775750119;
        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;
        bh=3sc+GVPgMu2RbwBMk8uqaoY6h1yyfHiG33iexYIz/sA=;
        b=FafzpjVDTel4+knwCIRLIfPeGL0VQXjKPyTdoJ81/ZYZmGUzNaU2i2rnx4n6u3l8CK
         CLzOKm2zT3bi//VnUV/Bx3vXWlJT8LCl3OtvlFDQ7z0eBedlWchUOYhOfD3jYKg/8W/8
         BHe0dscoWDX+EdyL8zrEamIwpIgpYO4B7CshYs3RYg7PdK5izqxovJXkOb9dJ4Ugh6hJ
         IaaDqiG7Wd8BP4h2ITEGSH1+WBIvskuIaO+jGSNsiN4HeNHcBwriPgNqWp8E7dTmNjTV
         6MbqZhJbL54IjZuN4dzhZ/x5J2yYV7/iM9DGteeyIMmP3D6C7bTkt/PuP8XCQYLVh1sQ
         D+dA==
X-Gm-Message-State: AOJu0YzuXge+DMFIamNTSfyMjm8dv6QgL2T9r44p+MkEhbXFEjyXTjR0
	TGgvsW15U62PsT30ayTGu/7U443//vndNBGnPQkk/wtL2Lr87u+LCPn6Qt9u8LWU
X-Gm-Gg: ATEYQzy8NB+m5F0uRZ79eItTevulY2fBECpsrgXUH/8Yf3ZUhsoCm6A0siYrxRUMlPi
	F8uumGc6yb9TcCweY4Z0r7lj6kxwfJci1NBausea+EQaKgykebc+p4kN/UM8BTApBsB7hxtV6SV
	ux+1YCbP0tBDSIB8UDfsUBRIV/CDo6YEBkz9Y4Mo9hpildmndDV9v8dLDTWyQXT9XhRkYOzzJJP
	lgULxi60j5CgS/GoSjsC6VFECBj9NCmR4LAtBGU6Gk+StPG91xljM/WXpBN9bpPAOYCa/Mt9xfr
	upjc5udEzjf7V5O6avH5KziN9RdUXeLzT+YizRLcJ/lLmvCRgUQAGJjcRF5//d9wvEb7KJWW8uG
	z1bmqDZy+CgXllwNpf7hcK0iiNrJSxVwVXmSfZ9YkTaltpUslGjejcKAHUXEfmp/emksVYqPPqM
	v1B+LPtrAxT558r17Z16n67qNMs810irFSGjBXg/25PzzX1reQJeAFWeFN58k/Jrl3lg==
X-Received: by 2002:a05:600c:1798:b0:488:8bdd:cfde with SMTP id 5b1f17b1804b1-4888bddd1bemr39642745e9.7.1775145318911;
        Thu, 02 Apr 2026 08:55:18 -0700 (PDT)
From: Frediano Ziglio <freddy77@gmail.com>
X-Google-Original-From: Frediano Ziglio <frediano.ziglio@cloud.com>
To: xen-devel@lists.xenproject.org
Cc: Frediano Ziglio <frediano.ziglio@cloud.com>,
	Jan Beulich <jbeulich@suse.com>,
	Andrew Cooper <andrew.cooper3@citrix.com>,
	=?UTF-8?q?Roger=20Pau=20Monn=C3=A9?= <roger.pau@citrix.com>
Subject: [PATCH v2] xen/x86: Check supported features even for PVH dom0
Date: Thu,  2 Apr 2026 16:55:10 +0100
Message-ID: <20260402155512.80170-1-frediano.ziglio@cloud.com>
X-Mailer: git-send-email 2.43.0
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit
X-purgate-ID: tlsNG-d62444/1775145319-160E8185-07A24108/0/0
X-purgate-type: clean
X-purgate-size: 3330

The supported features ELF notes was tested only if the dom0 was
PV. Factor out a function to check ELF notes and reuse it even
for PVH.

Signed-off-by: Frediano Ziglio <frediano.ziglio@cloud.com>
--
Changes since v1:
- fix typo in title;
- fix minor formatting issue;
- use is_hardware_domain instead of checking is_pv_shim;
- reduce indentation returning earlier;
- return error instead of jumping to cleanup code.
---
 xen/arch/x86/dom0_build.c             | 14 ++++++++++++++
 xen/arch/x86/hvm/dom0_build.c         |  3 +++
 xen/arch/x86/include/asm/dom0_build.h |  2 ++
 xen/arch/x86/pv/dom0_build.c          | 10 ++--------
 4 files changed, 21 insertions(+), 8 deletions(-)

diff --git a/xen/arch/x86/dom0_build.c b/xen/arch/x86/dom0_build.c
index 864dd9e53e..a33ce77321 100644
--- a/xen/arch/x86/dom0_build.c
+++ b/xen/arch/x86/dom0_build.c
@@ -320,6 +320,20 @@ unsigned long __init dom0_paging_pages(const struct domain *d,
     return DIV_ROUND_UP(memkb, 1024) << (20 - PAGE_SHIFT);
 }
 
+int __init dom0_check_parms(
+    struct domain *d, const struct elf_dom_parms *parms)
+{
+    if ( parms->elf_notes[XEN_ELFNOTE_SUPPORTED_FEATURES].type == XEN_ENT_NONE )
+        return 0;
+
+    if ( is_hardware_domain(d) && !test_bit(XENFEAT_dom0, parms->f_supported) )
+    {
+        printk("Kernel does not support Dom0 operation\n");
+        return -EINVAL;
+    }
+
+    return 0;
+}
 
 /*
  * If allocation isn't specified, reserve 1/16th of available memory for
diff --git a/xen/arch/x86/hvm/dom0_build.c b/xen/arch/x86/hvm/dom0_build.c
index d69a83b089..f95a00acfd 100644
--- a/xen/arch/x86/hvm/dom0_build.c
+++ b/xen/arch/x86/hvm/dom0_build.c
@@ -699,6 +699,9 @@ static int __init pvh_load_kernel(
     if ( !check_and_adjust_load_address(d, &elf, &parms) )
         return -ENOSPC;
 
+    if ( (rc = dom0_check_parms(d, &parms)) != 0 )
+        return rc;
+
     elf_set_vcpu(&elf, v);
     rc = elf_load_binary(&elf);
     if ( rc < 0 )
diff --git a/xen/arch/x86/include/asm/dom0_build.h b/xen/arch/x86/include/asm/dom0_build.h
index ff021c24af..b7bbfcbe6a 100644
--- a/xen/arch/x86/include/asm/dom0_build.h
+++ b/xen/arch/x86/include/asm/dom0_build.h
@@ -8,6 +8,8 @@
 
 extern unsigned int dom0_memflags;
 
+int dom0_check_parms(struct domain *d,
+                     const struct elf_dom_parms *parms);
 unsigned long dom0_compute_nr_pages(struct domain *d,
                                     struct elf_dom_parms *parms,
                                     unsigned long initrd_len);
diff --git a/xen/arch/x86/pv/dom0_build.c b/xen/arch/x86/pv/dom0_build.c
index 075a3646c2..d50e1b9f78 100644
--- a/xen/arch/x86/pv/dom0_build.c
+++ b/xen/arch/x86/pv/dom0_build.c
@@ -494,14 +494,8 @@ static int __init dom0_construct(const struct boot_domain *bd)
         return -EINVAL;
     }
 
-    if ( parms.elf_notes[XEN_ELFNOTE_SUPPORTED_FEATURES].type != XEN_ENT_NONE )
-    {
-        if ( !pv_shim && !test_bit(XENFEAT_dom0, parms.f_supported) )
-        {
-            printk("Kernel does not support Dom0 operation\n");
-            return -EINVAL;
-        }
-    }
+    if ( (rc = dom0_check_parms(d, &parms)) != 0 )
+        return rc;
 
     nr_pages = dom0_compute_nr_pages(d, &parms, initrd_len);
 
-- 
2.43.0



From xen-devel-bounces@lists.xenproject.org Thu Apr 02 15:58:24 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 02 Apr 2026 15:58:24 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1272170.1560012 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1w8KR1-0004bU-Gi; Thu, 02 Apr 2026 15:58:19 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1272170.1560012; Thu, 02 Apr 2026 15:58: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 1w8KR1-0004bN-E4; Thu, 02 Apr 2026 15:58:19 +0000
Received: by outflank-mailman (input) for mailman id 1272170;
 Thu, 02 Apr 2026 15:58:18 +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 1w8KQz-0004bC-T6
 for xen-devel@lists.xenproject.org; Thu, 02 Apr 2026 15:58:18 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1w8KQz-008lW7-9Q
 for xen-devel@lists.xenproject.org; Thu, 02 Apr 2026 17:58:17 +0200
Received: from [10.42.69.8] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <Volodymyr_Babchuk@epam.com>)
 id 69ce920c-5cb7-0a2a0a5109dd-0a2a450897ea-28
 for <xen-devel@lists.xenproject.org>; Thu, 02 Apr 2026 17:58:17 +0200
Received: from [52.101.84.126]
 (helo=DB3PR0202CU003.outbound.protection.outlook.com)
 by tlsNG-c1860d.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.0)
 (envelope-from <Volodymyr_Babchuk@epam.com>)
 id 69ce9218-fab6-0a2a45080019-3465547ea023-3
 for <xen-devel@lists.xenproject.org>; Thu, 02 Apr 2026 17:58:17 +0200
Received: from GV1PR03MB10456.eurprd03.prod.outlook.com
 (2603:10a6:150:16a::21) by PA3PR03MB10987.eurprd03.prod.outlook.com
 (2603:10a6:102:4b0::10) with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9769.19; Thu, 2 Apr
 2026 15:58:13 +0000
Received: from GV1PR03MB10456.eurprd03.prod.outlook.com
 ([fe80::4484:fcf4:18ec:fbf3]) by GV1PR03MB10456.eurprd03.prod.outlook.com
 ([fe80::4484:fcf4:18ec:fbf3%7]) with mapi id 15.20.9769.014; Thu, 2 Apr 2026
 15:58: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=tghpiMlACZd75LK4R9JBKJ++WtcM4WG9gY5BcmnT1lEOdrxPnYL+4VIyTRRHd10DdRA/6xxzDAX4BMKvPUy2cVLPitl7whPZfEpl29BJ9J8IxbUYxMU1vf1VhjOI0/89XkhO0Oxwd3ldPK65/s3zaxZbrrMIdMEEdz8nvuMJfGqfBE/RqlHNdyfYvmhqa3qpsZWxoCPJrGhiceOhmCN+s0z0PE6uj20EdaXoN1g6vb+lNFTWrj9ZXqDAO/RCXxa9r0S9FMvxzuvEeHUHCjFqiM85sf5rjvDGPqcC1aVuzBrbe8/gt+UYgi8IngfV3VhpwslR5T9TyBa075j0c85dCg==
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com;
 s=arcselector10001;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1;
 bh=XpfWSwmVil6HbzgJvVm7d1Y6W9dnAroOSqqCWz94rOE=;
 b=i7/us2nvthidol+qCjWIoeq2MwaTNG3wTZNi76AzQF9KHjETORyxRMFiZfj8ufpill//brlilc9cXm8pvdWewYlul6l0sxNQ2N1EHvZ5JhOLFfbx/UAU9jnxnjPaEW4Pe2QYpgS6FO8LyM956l0QNRakojuPSGimr220oNFjOJqZ/WkYxghoo2y4eM6VJXn3fLmpXPEj2g1Xh1UiaUXThAYDxsxYGbcphPHTxOhq/dTkPd1GtD6a9DuBhGGl4caaoZ00TVRE4/6Xd2eAtCxKxFvg107C8xb2xi0s5TGdFPVH0IBQYjU3UliJWKLQRFjHN6oc2d41Q3qhxdQ5WJiSEw==
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=XpfWSwmVil6HbzgJvVm7d1Y6W9dnAroOSqqCWz94rOE=;
 b=g4+vRidenSv5GJRpuioclB0pWPVWmFyPKRE9tnY+RnVG6W+UFmcQtlVkDe5DSODdtqiLZHz9kQGUJudVkTXk2DQEoQlxwUopAzme87lTpPsqWC2y9qHZiEvCOeoWrBoCYjYXAyzzt7pWRnv5RpFQn8/gBIlxcci3l3c/UfEROOQhZyuE+izXbLMcz7ETJxmjEXMzHLYPex1/lUx8v+tmYiNieKyMj+z0bSUaYnY33cWRuT4uh0bgKFxUXJZrMmb+84ldkckJ1su3e0PzKU+gIZw59eRKcnwgAis+WKQGrv1Y6fclMxB33fYWGx+LhVvwZmmLncbvfBOgv8EbcEqJLw==
From: Volodymyr Babchuk <Volodymyr_Babchuk@epam.com>
To: "Orzel, Michal" <michal.orzel@amd.com>
CC: Julien Grall <julien@xen.org>, "xen-devel@lists.xenproject.org"
	<xen-devel@lists.xenproject.org>, Stefano Stabellini
	<sstabellini@kernel.org>, Bertrand Marquis <bertrand.marquis@arm.com>, Rahul
 Singh <rahul.singh@arm.com>
Subject: Re: [PATCH 3/3] xen/arm: vpci: Move content of xen/arch/arm/vpci.h to
 arch header
Thread-Topic: [PATCH 3/3] xen/arm: vpci: Move content of xen/arch/arm/vpci.h
 to arch header
Thread-Index: AQHcwegF4agxAfWvg0qW+yyLTWDkbA==
Date: Thu, 2 Apr 2026 15:58:13 +0000
Message-ID: <87se9dtkvf.fsf@epam.com>
References: <20260401145816.169557-1-michal.orzel@amd.com>
	<20260401145816.169557-4-michal.orzel@amd.com>
	<e21642ec-ad45-4a61-8482-768ee666f438@xen.org>
	<bc80e004-25a5-449f-b4dc-a6afb8dc54c7@amd.com>
In-Reply-To: <bc80e004-25a5-449f-b4dc-a6afb8dc54c7@amd.com> (Michal Orzel's
	message of "Thu, 2 Apr 2026 08:32:19 +0200")
Accept-Language: en-US
Content-Language: en-US
X-MS-Has-Attach:
X-MS-TNEF-Correlator:
authentication-results: dkim=none (message not signed)
 header.d=none;dmarc=none action=none header.from=epam.com;
x-ms-publictraffictype: Email
x-ms-traffictypediagnostic: GV1PR03MB10456:EE_|PA3PR03MB10987:EE_
x-ms-office365-filtering-correlation-id: 37fd81aa-4626-4d1b-e613-08de90d0a56b
x-ms-exchange-senderadcheck: 1
x-ms-exchange-antispam-relay: 0
x-microsoft-antispam:
 BCL:0;ARA:13230040|376014|1800799024|42112799006|366016|38070700021|56012099003|18002099003|22082099003;
x-microsoft-antispam-message-info:
 1cfCW0Gg9L3MAcF7F0LZTt+VMAlJyxel/IAQjgd5nTqgYHcqxc5Tpyl0NgRo0Jv96qXunYzS4JxVRBZ+7GkZlVk6ndpHvhlGy85HRkFIuYGLI5PXQe77+KhT/GxRCLVBtkM4b3EHntJGWP0lhJvAnvtL19ET6Jw8E/8hCojzA+6fKBZ1D7fs81f2RRtWmzwvTgBdnkftsxWFGTaxjg1FX0N3j1xSXYOYpjyOwXoSxetRQMzlv1MYv+FzfY2CmI8WQESgBGZ6+uxEt75ZPZZ/DyiZGe1b5ujmx4qnaaZtAOcFA8s1bzNXtG2+H4B6mzf7MsOgoAGQgZQwEFLUuVsAhszzl3WngbG4GIpkXZeyEK5ZwXU+kOLUBhgzOUGshk8wddaSxYD8RCjmE7x7+9OTiVITRHoCRT35Ykp6rE540xSDveiX4CjhZwA5Igqn3Y85MyXiq8hyg2ns40+izaPZf47TfichqSMnYs53gonLTkp3pcobJofbamr4/QDybkLC0+L5cudVrwhbr1hQhHEEPChglHG0GTEHw6aPC7eRl9ttm1HyCPb0xjyojQBPM2rDXLXtAWkJohrERTfEaid4VxwjevYEXhO0BYWvd+R6lQYz2JosbV4oiJ+y7czF10kPfZasLpMxjYa6WjdgN0jdJbJnCQvHtVJXl956Dk1uLFmO73RKhlFl/UqqqN88yMx95LONGofviUO/wqdRI04LPo6jjF6ortgl3XHO4XMlbXUz1NRRRO2g8Rj5iYWRP/zNpuePLOAeFNLxSkjEUwJnQcWe/FN5+0qELAP6e2/YgPc=
x-forefront-antispam-report:
 CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:GV1PR03MB10456.eurprd03.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(376014)(1800799024)(42112799006)(366016)(38070700021)(56012099003)(18002099003)(22082099003);DIR:OUT;SFP:1102;
x-ms-exchange-antispam-messagedata-chunkcount: 1
x-ms-exchange-antispam-messagedata-0:
 =?iso-8859-1?Q?pO3R4ZEgqcmPhQKwL6BpR/eYdCCKmUnuEWPkgW/dbGMikU+UJNy8KrYWVx?=
 =?iso-8859-1?Q?8fqPE0MDKItJmNFmAYlOYddhTy1gqdN/LFNMGF3Bd0sROmE32P8pv3U4P/?=
 =?iso-8859-1?Q?wwZNvAryLDNlfydwKtLRc9asCwWs4FJXtQru/JxvLYSJ/sLmG7jg7bvEGH?=
 =?iso-8859-1?Q?Av/W+hoqNDvWkdg7/nIOA19UmNIq5WnzizSTRdhSbsZnSZEQv81SgcP7nw?=
 =?iso-8859-1?Q?aJ1V4XNVmtMV5qsOIswyfIWyJsvuRqyilRpU1ns/rg0x3CVceBGMV/CxjP?=
 =?iso-8859-1?Q?3wb2UTlOipZpo84fsrdrkl91013eFtGjlmmuw3aDqJt3kw4ngPd5j7M0p+?=
 =?iso-8859-1?Q?j1nf7VeYAE3w7yCNZT1aN8aED3Uo4ELo47Vuc8W+8zEqKDvRH0IzC2M/iz?=
 =?iso-8859-1?Q?GrfxLFdsn8dTjXcjtTsAuzjwc0t8p2eF2Deb1wm9ZdgZZcel0YlU+recty?=
 =?iso-8859-1?Q?f25Br0SARmR6M+z8BUzYlk5MHDJQtHVNK+CrDu3I3dtU6OC44e3DqI63Dj?=
 =?iso-8859-1?Q?nXhUutGGPZoNdxyUMHBdljJrAZau7IytlGA9frNoEOCgOmUmqx/63PChbL?=
 =?iso-8859-1?Q?6jHD4yc34Fj+SM4jxj9GjQVwqPeaJIdtrQDWzY/28FEZVDO4KR5fiNAdrr?=
 =?iso-8859-1?Q?lP/3kxY0dnHg2XqJFCk2cAEQwetQQ52Ogdb4G5cJqbq0HgrQ2XYV/s4ntG?=
 =?iso-8859-1?Q?MNJg044RGbKyUBkhmkJ6itW4qBzR9cka9nZRVIZUUukH0wOyxWQ9bB98ZU?=
 =?iso-8859-1?Q?JxmiyL4KkvU/BF4p0OJtcc7FST1GIS5RmOJqdPmO80reQNfsN+bWyrLHZC?=
 =?iso-8859-1?Q?+HvwXJ+n9op5/SscIue95wvCt489OiRbyvhFkfV+A6syI78xj7PSq8o1Oi?=
 =?iso-8859-1?Q?BRkWZStkfEd2x3+xeoy8lSjiLTURT9DiQAoGjrWoPwpiy9NFmDok+Pemff?=
 =?iso-8859-1?Q?o44fjQNdA0HsXLLEqxyW84Hwx0yh8/W0UoRtGzYt7/MNMZV+5HDInwhSn1?=
 =?iso-8859-1?Q?o3qQ/KvNFLSaz80oRP/h33IlzbaMV6LPzbnCodip5cy3VVkeHF3qMSZuhh?=
 =?iso-8859-1?Q?22gk9/CAL9wORP0PL/bgKFqmNX4VTyqK7gHsT/X2r2qAP3zj/8EzBKDLeT?=
 =?iso-8859-1?Q?6u+VNHyl7qsbaBMOnxozN8FUkf+wHQCasCrsO6gAD+Zml3TIjmbJ36DqmG?=
 =?iso-8859-1?Q?hAlNTeMPKrITw5G/hcVMLqLTYDETR0idwvXaGQtPZLbX8CnZQnSuLf58Gu?=
 =?iso-8859-1?Q?XHpZ42NmFh+holwyurVWYSF+Ak+O5OBdE6A3DRAdIGrNt2Em3/M2dzeZsE?=
 =?iso-8859-1?Q?+/kmm5pKVqqBX0FPJTPO+V0hUol3YBxUYepQdR75Qk/NCaPBc6ADWN+NlN?=
 =?iso-8859-1?Q?+N0HziGBm9rjWfjeNB4xHnJOxZq2f55agPEdmHidYoC4JcqTiNP3AlDVxD?=
 =?iso-8859-1?Q?famJsyccUhp93UcP8kLX/DSxEdhapEyl2AWpAYOrHUrGgIDULh8i1/zkUn?=
 =?iso-8859-1?Q?5o66VF9kHZFKYQUUSH0GBiJHAvsy2vFrqacztE81a9t5VP7AyqWizPCk2G?=
 =?iso-8859-1?Q?ILbHj52fMjbdhMpkYrFJNup5ZZYJm8j+zcI7XblsIMuy8HyUg3eYlqTudl?=
 =?iso-8859-1?Q?BEYKOQPJHDPEC5mt8xIBMo+EOeScfm0WX428tdFsc5QeokzOpmfBnRHckp?=
 =?iso-8859-1?Q?Wbj2g8+6GKrCUdENCrEe2hM7nQFPuHbYQPuzh+7smbRbg0Sx9nMJDWeYyy?=
 =?iso-8859-1?Q?PHAPtFnrb1jXHv3qysDX5tWW6TdsN0+Ptvn7TpGgtw8P3NqVjso8qfpV0Y?=
 =?iso-8859-1?Q?6e7MM0NZ2yFzbFOJjgHk8+Cg0JfXGQM=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: GV1PR03MB10456.eurprd03.prod.outlook.com
X-MS-Exchange-CrossTenant-Network-Message-Id: 37fd81aa-4626-4d1b-e613-08de90d0a56b
X-MS-Exchange-CrossTenant-originalarrivaltime: 02 Apr 2026 15:58:13.6007
 (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: Y85V/52DYENo7Jt/oaLS9lO91crE1LNNxB2EpsDgdwMVYKj5siL72sCAZ1zMSoS0nc5BCsKaLkMm+Xavc51BwdUEpO7WFdr8dT+gdal/YhI=
X-MS-Exchange-Transport-CrossTenantHeadersStamped: PA3PR03MB10987
X-purgate-ID: tlsNG-c1860d/1775145497-75557497-01D7A56A/0/0
X-purgate-type: clean
X-purgate-size: 2229

Hi Michal,

"Orzel, Michal" <michal.orzel@amd.com> writes:

> +Rahul
>
> On 02/04/2026 04:44, Julien Grall wrote:
>> Hi Michal,
>>=20
>> On 01/04/2026 15:58, Michal Orzel wrote:
>>> Move domain_vpci_init() and domain_vpci_get_num_mmio_handlers()
>>> declarations from the private xen/arch/arm/vpci.h into the public
>>> xen/arch/arm/include/asm/vpci.h, and remove the now redundant
>>> private header.
>>=20
>> Can you provide a brief explanation why we don't couldn't include=20
>> "vpci.h" from "arch/arm/vpci.c"? Such approach would ...
> Yes, we could but I think it's better not to use local headers if the mai=
n ones
> under include already exists. This matches the x86.
>
>>=20
>>>
>>> Update domain.c to include <asm/vpci.h> instead of the removed private
>>> header.
>>>
>>> This ensures the declarations are visible where the functions are
>>> defined, resolving a MISRA C Rule 8.4 violation.
>>>
>>> Signed-off-by: Michal Orzel <michal.orzel@amd.com>
>>> ---
>>> I'm moving a file with GPL2+ license to a file with GPL2-only. I consid=
er this
>>> ok in this case becase the copyright on a file with just prototypes doe=
s not
>>> make any sense and a license text was most likely blindly copy-pasted l=
ike for
>>> most of the files in that era.
>>=20
>> ... avoid the licensing discussion. I am in the opinion that it is ok to=
=20
>> move from GPLv2+ to GPLv2 because the license says "either version 2 of=
=20
>> the License, or (at your option) any later version". But I remember not=
=20
>> everyone agrees on this interpretation and we never solved the=20
>> discussion on whether we need to request permission from the original=20
>> copyright holder.
>>=20
>> Alternatively, I see this file was only modified by two companies (EPAM=
=20
>> and Arm). I see one employee of each company are already CCed. So you=20
>> could confirm with them if the change is fine.
> The header was introduced by Rahul Singh from Arm and Oleksandr Andrusche=
nko
> from EPAM. @Rahul, @Bertrand, @Volodymyr - are you ok to move this file t=
o
> GPL2-only?

Yes, I'm okay with that:

Acked-by: Volodymyr Babchuk <volodymyr_babchuk@epam.com>

--=20
WBR, Volodymyr=


From xen-devel-bounces@lists.xenproject.org Thu Apr 02 16:50:46 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 02 Apr 2026 16:50:46 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1272228.1560022 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1w8LFb-0004Pr-Cw; Thu, 02 Apr 2026 16:50:35 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1272228.1560022; Thu, 02 Apr 2026 16:50: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 1w8LFb-0004Pk-A4; Thu, 02 Apr 2026 16:50:35 +0000
Received: by outflank-mailman (input) for mailman id 1272228;
 Thu, 02 Apr 2026 16:50:33 +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 1w8LFZ-0004Pe-HM
 for xen-devel@lists.xenproject.org; Thu, 02 Apr 2026 16:50:33 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1w8LFY-005i9M-Tt
 for xen-devel@lists.xenproject.org; Thu, 02 Apr 2026 18:50:32 +0200
Received: from [10.42.69.5] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <Volodymyr_Babchuk@epam.com>)
 id 69ce9e4c-5cb7-0a2a0a5109dd-0a2a45059ad6-8
 for <xen-devel@lists.xenproject.org>; Thu, 02 Apr 2026 18:50:32 +0200
Received: from [52.101.84.94]
 (helo=DB3PR0202CU003.outbound.protection.outlook.com)
 by tlsNG-c201ff.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.0)
 (envelope-from <Volodymyr_Babchuk@epam.com>)
 id 69ce9e58-3760-0a2a45050019-3465545eae3a-3
 for <xen-devel@lists.xenproject.org>; Thu, 02 Apr 2026 18:50:32 +0200
Received: from DU5PR03MB10441.eurprd03.prod.outlook.com (2603:10a6:10:516::14)
 by VI0PR03MB10927.eurprd03.prod.outlook.com (2603:10a6:800:26b::10)
 with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9769.20; Thu, 2 Apr
 2026 16:50:30 +0000
Received: from DU5PR03MB10441.eurprd03.prod.outlook.com
 ([fe80::de05:9ff1:c370:ecc9]) by DU5PR03MB10441.eurprd03.prod.outlook.com
 ([fe80::de05:9ff1:c370:ecc9%4]) with mapi id 15.20.9769.017; Thu, 2 Apr 2026
 16:50: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=OE32+BfIYnCTNmxXSyp1HnnXmHQ9JoEQ1kwXo05100v6h4Nw0YRH1XEmymy4tWanzIQLx/tv17ERQUqWG+dgBmOI3tNEvb0o8n4GfNagtLyFR6OEYBKW8t0zKTMVUORm6B1BThZghr9fvUIVgvsI5kBKMVXKkhWGWGgpqkr0959inPqhDE/JvuBGxpTV5TtvCDGucrwt0lnP54u/qZ1bSqxLfnVLJNbtF07AtLuxNpHeXnjuTKrIh7YxROkgFpZMljC/GfIwbK6I69YZCOhK2+23MvICilWPTYqU5LmtAESbGj+qcYHIT4TGF+Ga8KxL8bHRSyCMQW3jYSYjT/yeuw==
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com;
 s=arcselector10001;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1;
 bh=lKwH9C469n0MZkNn5G71hkv/tIYCKSWoOrPW9Jr8RpU=;
 b=dYLQXeFvX7kPpnecqUO2XNwKhH+OOcrekenqw9/6fNTcVwqw0QOfREzr2YW8nss8aQmiHPphtu6SoHdnqhiG449aMCICcNuDR0O/BQABZMo4Hn0KhMmPF7TryQyIJto2kcmTJP1rCW5gBLcYXejAlafqJ45B0pVbtYlOrA1QkqeyeH5QFaOr8TLwbIx+vMEWzfm9utz4XEcXhLMlgn7zTyf3IajmOK5i9Xz1drFk0Xj3c1UCBq0/shkWMRZ9MieemJ2u2WO56K9OwdNrlbM9paqEG7laulsM366SBTuOre0WctfdGz6hFx6ldxQ8san8BPVIcZLIdLrPCpq2zNLgEA==
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=lKwH9C469n0MZkNn5G71hkv/tIYCKSWoOrPW9Jr8RpU=;
 b=qt1WbRn5YTQgxwJlQ3mKMdRyvQ78YT25279xSa2DOe+rJ7dNHTTo16F+I7JO4k4PnHfHeUXCqED4HINbBbaw/L+uoR88NqYZkN9HxpAZW3yooYd2AgWUhVeZp9YYDd+yuNSuzRp1n3J/1HbITr4lJpxcnQVBneTloFVuzjI7cMsda1BSRj1NP1y1DvE0ROfvMKg9oL/uP2PA9nMW6pqQ2/ZyBuYcIpMD+NMXlEwwUqx6w5lRJ5wWm/GlPbqBX/Fh1fguvbktzyeGZog4VPporRDKe+e/RWii5YpVx57DLEwLMN/8XEOnwjkAinFAoV0aHQiZ4i+xwULNnhumM2M0xQ==
From: Volodymyr Babchuk <Volodymyr_Babchuk@epam.com>
To: Mykola Kvach <xakep.amatop@gmail.com>
CC: "xen-devel@lists.xenproject.org" <xen-devel@lists.xenproject.org>, 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>
Subject: Re: [PATCH 2/4] xen/arm: its: add platform match callback for ITS
 quirks
Thread-Topic: [PATCH 2/4] xen/arm: its: add platform match callback for ITS
 quirks
Thread-Index: AQHcvEPkvPnBPPoH7U6Wnzsnt2hLeg==
Date: Thu, 2 Apr 2026 16:50:29 +0000
Message-ID: <87jyuptigb.fsf@epam.com>
References: <cover.1774431310.git.mykola_kvach@epam.com>
	<10da5cf38dded9c3373c4b0ba54d7f7a7b2fd98f.1774431311.git.mykola_kvach@epam.com>
	<87341ovugw.fsf@epam.com>
	<CAGeoDV_1Zzh8pxBe=Mf7Yu1OXfNhzH7aFpsT+ktM62DwK-ropg@mail.gmail.com>
	<87a4vovo7u.fsf@epam.com>
	<CAGeoDV_X8Opf4Hb9Kg43d-sR5WLK1ULHLZ_DZjcoE+U1VfPJvQ@mail.gmail.com>
In-Reply-To:
 <CAGeoDV_X8Opf4Hb9Kg43d-sR5WLK1ULHLZ_DZjcoE+U1VfPJvQ@mail.gmail.com>	(Mykola
 Kvach's message of "Tue, 31 Mar 2026 11:15:53 +0300")
Accept-Language: en-US
Content-Language: en-US
X-MS-Has-Attach:
X-MS-TNEF-Correlator:
authentication-results: dkim=none (message not signed)
 header.d=none;dmarc=none action=none header.from=epam.com;
x-ms-publictraffictype: Email
x-ms-traffictypediagnostic: DU5PR03MB10441:EE_|VI0PR03MB10927:EE_
x-ms-office365-filtering-correlation-id: 67c91901-3472-4c35-5580-08de90d7f2dc
x-ms-exchange-senderadcheck: 1
x-ms-exchange-antispam-relay: 0
x-microsoft-antispam:
 BCL:0;ARA:13230040|1800799024|366016|376014|42112799006|22082099003|38070700021|18002099003|56012099003;
x-microsoft-antispam-message-info:
 V7yr/TggMevtbMMGEG+ZrxIwQSy6OrOeTTy+vUP3/+EYwWT3gn1bUanXf9vbZ18n9SgvLt0rlzvgq7hOZmSOxCZ6+4ZbBdUUFx/jkoCY2thBkeFrM15Q2P3cjgCPFSyEM3EUBUa0CtGAIth4KZKGJzGwH4WYvmMTNw4FDj0HNH4niXmaNgjD33etYzh2bQpRwb6eBXaOCBM18sBkRx7SNeeYh1cUIW7GfJSj29MxGvAGYniNyJRp/S6xHXES8RPQ6zZ0xxBQhL7/bMVidoOAw5FyUsf9JEVuiP/ILZnKIgEVdaxvGotICVQgHM9A91VA9GEM96eIvRrx7q1zvsgsmmEpzs3872fdyhS5KnMV69Q1B+Uay92utM7Cl7Dw97ghpNvw+e7U9MiemcaDOqXUoQ5rK2DXSZCU93N4U6wDKxu3EKiVbuRYq8IpV7/ZeWAXXpqgFC4LroP7VAgzlstm0q7hyidSpjIAGVOA3JN5woIgwgsUdxH2TA/6nO7sR4Qt2Tf2b47BO8UV/m8ijCWcbmSikzYQ+IdQY7RUruT6cpe8aP8yR1TEe8xBe9GxeDasZT7Hc8CVR/yXCeAxSdWpwGrtkoNAsFcAJNryUAV7KvPQsi2FpIJ+ULNPoxRBSxXMKLje3b6u0JS8F26TrSuewShr2afxQ8dfVVedh3aNj1SVDnykgbpHicxPergW3jq6OM6h6OHDKt1hE8NJm2uARiyC97MMiQ5Odf3UVYOq+kA6a25/bV5bpPFxNOkngVl54kFujXAXnQDL+/G0W1ESzEfTScUQLtLPm0IOPQNJpeY=
x-forefront-antispam-report:
 CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:DU5PR03MB10441.eurprd03.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(1800799024)(366016)(376014)(42112799006)(22082099003)(38070700021)(18002099003)(56012099003);DIR:OUT;SFP:1102;
x-ms-exchange-antispam-messagedata-chunkcount: 1
x-ms-exchange-antispam-messagedata-0:
 =?utf-8?B?Z3pZNG1qem5CS2liaEk1bGE0TUZtMk4yY0kySUtzd0t2SkFxbXYxaEZKOVRJ?=
 =?utf-8?B?cXhTbUxuckhud0dYWXBtZ0JrMWZvTVlQU0gwcjl1b0h4YlBJaHJxMWJhL1FT?=
 =?utf-8?B?WHFHeGR3dGxkVXgvQW43RDZ0VmpIOXkrdWhTeG1IMUQ3anIwR0dzeXNRR2ZE?=
 =?utf-8?B?aTZZbE9GRUM2c2ZPZFY1czhNTWRRZXNWVktiZ3B3YmpSdCt1MUJJTHhHaVNV?=
 =?utf-8?B?RThHSnpEeXdEaXhYQ3FLMWNqUnFRZGlNSmdET28wazZPRDIrVU9pdWhrVDJp?=
 =?utf-8?B?YXNobk1PczJrTTRONlVxVDhab3NXTTUzNjhnZ250QVY4S01rMGx2R0FlYStr?=
 =?utf-8?B?SjJsZ3VndHBYcE9EUFNkNHBsREVodEN4b1g0aEdjZVc0bFFNOUpybWZHbnd5?=
 =?utf-8?B?b1lmNHRSTVBXVGlMTGJTYXUvcHBTY2tMeFBjQ0wrdjFhMjdpeFNNdzBVZXRr?=
 =?utf-8?B?L2VyR2dDRXBKcXRKenhrWlo0MzJQSUdFNVFPSkdmMS9PM0NIL0hwYk1xKzBu?=
 =?utf-8?B?MHExSDZwaE16K1JucFNyM2h6WUo0MURRTDF1ZnBJanJ6VGgwdkpFQjlYOEhG?=
 =?utf-8?B?d0I5Y01WZ1BPdE9Fd1ZkWkNtajU1YTZUV1hXdTFSQVc2bkdTRW5PSzJqM1Nq?=
 =?utf-8?B?cXQwT0ltbU5veW1UNjF6ZG5uUUlMMUliaDRxeGlsZ0NQK3JzWGN5OFVlaTVW?=
 =?utf-8?B?L1JYN3hTZDRqMVhMNTVJWTd0WmEvalQ3anJiRFBQUkFzeG1VTHBoWmt2OThv?=
 =?utf-8?B?aUw3UUpjNjRkeVZFVjRvQTRtVkZVOGRwd1dNeGNBTWJ3MEcxNFJuUm8wbFhw?=
 =?utf-8?B?UFRoZzBqeTV2OHBUTUUwaFVhbEhKZ2NKVndrVG9kdjBheCtsWGQ2RXJnMGxp?=
 =?utf-8?B?R2Zvbk9CSnMvbVZvM2RwakpudEh6VWFYcTBoTEVaaUxYVWZOcTl6OVRrQlJB?=
 =?utf-8?B?amtGbTRRbTM1T0IzcGN2c292VHJ1WGdmazd5b3MvQW1ic0hjSUpuSk01NjJj?=
 =?utf-8?B?QWxyY09FbVAveVMxTWFhRFZ1NUdwVmtKbytIanhEM3liOHlZVGIrRmtUOGk0?=
 =?utf-8?B?ekRIVEVGWERFRkNMWFVUUWkydm0zbUdLMUcyRFFOTlVjZnU4UnhDNmVmYkE1?=
 =?utf-8?B?b2MxK3FQL2diN3FzaVowbklKU2J3c1JZZzhLbllySzJnNDZRYlk4SWJ1SVpT?=
 =?utf-8?B?K05MV1RrdzZlTlN6WU4wNjh6eXJvMFEyaXlmVVcvT2x1VTA4bDR4aDNyaEJM?=
 =?utf-8?B?TndmdGJqVnBmRHJ1bDYwYXNWN2dYRng2eldJYVRtWmpFNmovcmlvSlVscmhP?=
 =?utf-8?B?YnlhdVMzY1NxT0tUWFBybGdtM2FCakprVzhRUkNKU3l0eCtmTnlvTkR0V0dJ?=
 =?utf-8?B?MUkvOFNmTVpLSVFKamtOdTQyL25SYmdVNm9mK1M0M2xXS2lUZC9HL2RPbjZY?=
 =?utf-8?B?eWE2V05aZGlWU1JFYlNKcWJKMGR0K0diY3B5N2JHOURjdFkydlJZa1NoeGhZ?=
 =?utf-8?B?amJGai9HcWNzT0JGQS9vZEE2VnVNcXlPL2pvaWlhTWdEbEcxUHVaeXN2eGZQ?=
 =?utf-8?B?dEhxdmMyeFFSbnVnMThHOW90TTlNR1UwdC9zN2gzMTJwc3BXbVc3OWtjZFVy?=
 =?utf-8?B?eWlSa2o4UklFV1RsQ3NpY1lDLy9mYjlHVDd2S2h3YlRua0kxQndNUm8vczBn?=
 =?utf-8?B?YUVUWFVlMVBaQnpYYXNUdUZZMTFUdVh1ZGdaZysrQmJ4Q2YxOExoR3ZYNldX?=
 =?utf-8?B?MmJJbGZXTmc4dGV5aGd4QnQ1OHI0S0c0Y0JnNzlBN3QrVjNZOS9IanNzclNo?=
 =?utf-8?B?dEEvWnMwMjd3Zzg0dHpDUlduMGF0SlJLdE5XN09XUTJja1RFRWNlcnhPbitU?=
 =?utf-8?B?YnFsZWgrcWpVS1dmbzQwcmtaRktmME1GR1FQVEw2eVAxSlRwa3dpcXdvT0xt?=
 =?utf-8?B?V3hhWlpZRStld0FHQUoxa0VocTZzYm81VHBCUFpNbkRxWEhJTFR4ZmdxMGdq?=
 =?utf-8?B?UzNycGQ5OFROVjBvbkxKZjJkUERPK1oyOVVpdnEzRCtRaUUzL1VSYXhlYkFl?=
 =?utf-8?B?ZnlyMUlvTXg1NXAwb1Z3dFRXRmlWbUpseWhCVE16ZlBjZi80OTZkSzM4blpD?=
 =?utf-8?B?NWU2VllSMG1lUE1uWTZycUd4ZXZxdmdNU0xlVUJTdkMwU3ZESlZDbzBJZG5X?=
 =?utf-8?B?NFFTMnErNktaWm1hZUlwUlRocDRhWmpUQWowQXRlYTNsN2QyWExjTE1FRHEr?=
 =?utf-8?B?L29GVWlNaTVKeXJITUEwY0FuZ0dRNHhpYXJ2eW9xWkpBN0JFRTNVaWpzdGNZ?=
 =?utf-8?B?VndNZW01bFVyTkdmMWFRTTVVNDkxK1EvQSs0aktiMVNmUitKdkc1Zy9TYTJs?=
 =?utf-8?Q?k4XHnCm1l04ZXDzo=3D?=
Content-Type: text/plain; charset="utf-8"
Content-ID: <331EC585FFDFDE43872AD17E8BE471D6@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: DU5PR03MB10441.eurprd03.prod.outlook.com
X-MS-Exchange-CrossTenant-Network-Message-Id: 67c91901-3472-4c35-5580-08de90d7f2dc
X-MS-Exchange-CrossTenant-originalarrivaltime: 02 Apr 2026 16:50:29.9973
 (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: B3oK+o0N9zZhWdHdMC6AgP4QCvYL79vqhq/VLHj6Qcu35KAPCWvSb1a6RXJk5gY1ZG7Rqub0qZZmdlEvcqhuatfJVv2tWwKYbus8Bzi55S0=
X-MS-Exchange-Transport-CrossTenantHeadersStamped: VI0PR03MB10927
X-purgate-ID: tlsNG-c201ff/1775148632-2332496F-250A185C/0/0
X-purgate-type: clean
X-purgate-size: 11956

SGkgTXlrb2xhLA0KDQpNeWtvbGEgS3ZhY2ggPHhha2VwLmFtYXRvcEBnbWFpbC5jb20+IHdyaXRl
czoNCg0KPiBPbiBUdWUsIE1hciAzMSwgMjAyNiBhdCAzOjI24oCvQU0gVm9sb2R5bXlyIEJhYmNo
dWsNCj4gPFZvbG9keW15cl9CYWJjaHVrQGVwYW0uY29tPiB3cm90ZToNCj4+DQo+PiBIaSBNeWtv
bGEsDQo+Pg0KPj4gTXlrb2xhIEt2YWNoIDx4YWtlcC5hbWF0b3BAZ21haWwuY29tPiB3cml0ZXM6
DQo+Pg0KPj4gPiBIaSBWb2xvZHlteXIsDQo+PiA+DQo+PiA+IFRoYW5rIHlvdSBmb3IgdGhlIHJl
dmlldy4NCj4+ID4NCj4+ID4gT24gV2VkLCBNYXIgMjUsIDIwMjYgYXQgNDo0NeKAr1BNIFZvbG9k
eW15ciBCYWJjaHVrDQo+PiA+IDxWb2xvZHlteXJfQmFiY2h1a0BlcGFtLmNvbT4gd3JvdGU6DQo+
PiA+Pg0KPj4gPj4gSGkgTXlrb2xhLA0KPj4gPj4NCj4+ID4+IE15a29sYSBLdmFjaCA8eGFrZXAu
YW1hdG9wQGdtYWlsLmNvbT4gd3JpdGVzOg0KPj4gPj4NCj4+ID4+ID4gRnJvbTogTXlrb2xhIEt2
YWNoIDxteWtvbGFfa3ZhY2hAZXBhbS5jb20+DQo+PiA+PiA+DQo+PiA+PiA+IEV4dGVuZCBJVFMg
cXVpcmsgbG9va3VwIHdpdGggYW4gb3B0aW9uYWwgbWF0Y2ggY2FsbGJhY2sgc28gdGhhdA0KPj4g
Pj4gPiBwbGF0Zm9ybXMgc2hhcmluZyB0aGUgc2FtZSBJSURSIGNhbiBzdGlsbCBiZSBkaXN0aW5n
dWlzaGVkLg0KPj4gPj4gPg0KPj4gPj4gPiBVc2UgdGhlIGJvYXJkIGNvbXBhdGlibGUgc3RyaW5n
IHRvIHBvc2l0aXZlbHkgaWRlbnRpZnkgUmVuZXNhcyBSLUNhcg0KPj4gPj4gPiBHZW40IGJlZm9y
ZSBhcHBseWluZyBJVFMgd29ya2Fyb3VuZCBmbGFncywgcHJldmVudGluZyBmYWxzZSBtYXRjaGVz
DQo+PiA+PiA+IG9uIG90aGVyIFNvQ3MgdGhhdCBoYXBwZW4gdG8gdXNlIHRoZSBzYW1lIEdJQyBJ
UCBibG9jay4NCj4+ID4+ID4NCj4+ID4+ID4gU2lnbmVkLW9mZi1ieTogTXlrb2xhIEt2YWNoIDxt
eWtvbGFfa3ZhY2hAZXBhbS5jb20+DQo+PiA+PiA+IC0tLQ0KPj4gPj4gPiAgeGVuL2FyY2gvYXJt
L2dpYy12My1pdHMuYyB8IDIyICsrKysrKysrKysrKysrKysrKystLS0NCj4+ID4+ID4gIDEgZmls
ZSBjaGFuZ2VkLCAxOSBpbnNlcnRpb25zKCspLCAzIGRlbGV0aW9ucygtKQ0KPj4gPj4gPg0KPj4g
Pj4gPiBkaWZmIC0tZ2l0IGEveGVuL2FyY2gvYXJtL2dpYy12My1pdHMuYyBiL3hlbi9hcmNoL2Fy
bS9naWMtdjMtaXRzLmMNCj4+ID4+ID4gaW5kZXggMDA1MjRiNDNhMy4uYzQwNjI5NzMxZiAxMDA2
NDQNCj4+ID4+ID4gLS0tIGEveGVuL2FyY2gvYXJtL2dpYy12My1pdHMuYw0KPj4gPj4gPiArKysg
Yi94ZW4vYXJjaC9hcm0vZ2ljLXYzLWl0cy5jDQo+PiA+PiA+IEBAIC01Nyw2ICs1Nyw3IEBAIHN0
cnVjdCBpdHNfZGV2aWNlIHsNCj4+ID4+ID4gICAqLw0KPj4gPj4gPiAgc3RydWN0IGl0c19xdWly
ayB7DQo+PiA+PiA+ICAgICAgY29uc3QgY2hhciAqZGVzYzsNCj4+ID4+ID4gKyAgICBib29sICgq
bWF0Y2gpKGNvbnN0IHN0cnVjdCBob3N0X2l0cyAqaHdfaXRzKTsNCj4+ID4+DQo+PiA+PiBJZiB5
b3UgYXJlIGludHJvZHVjaW5nIG1hdGNoIHByZWRpY2F0ZSwgdGhlbiB3aHkgZG8geW91IG5lZWQu
Li4NCj4+ID4+DQo+PiA+PiA+ICAgICAgdWludDMyX3QgaWlkcjsNCj4+ID4+ID4gICAgICB1aW50
MzJfdCBtYXNrOw0KPj4gPj4gPiAgICAgIHVpbnQzMl90IGZsYWdzOw0KPj4gPj4NCj4+ID4+IHRo
ZXNlPyBZb3UgY2FuIHVzZSBhIHByZWRpY2F0ZSBmdW5jdGlvbiB0byBtYXRjaCBhZ2FpbnN0IGlp
ZHINCj4+ID4NCj4+ID4gVGhlIHJhdGlvbmFsZSBmb3Iga2VlcGluZyBpaWRyL21hc2sgd2hpbGUg
YWRkaW5nIG1hdGNoKCkgaXMgdG8ga2VlcA0KPj4gPiB0aGUgcXVpcmsgdGFibGUgZGVjbGFyYXRp
dmUgYW5kIGVhc3kgdG8gcmVhZC4gVGhlIG1hdGNoKCkgY2FsbGJhY2sgaXMNCj4+ID4gbWVhbnQg
b25seSBhcyBhbiBvcHRpb25hbCByZWZpbmVtZW50IGZvciBhbWJpZ3VvdXMgY2FzZXMgd2hlcmUg
SUlEUg0KPj4gPiBhbG9uZSBpcyBub3Qgc3VmZmljaWVudCB0byBpZGVudGlmeSB0aGUgcGxhdGZv
cm0uDQo+PiA+DQo+PiA+IEluIHRoaXMgZGVzaWduLCBpaWRyL21hc2sgcmVtYWlucyB0aGUgcHJp
bWFyeSBtYXRjaCBrZXkuIElmIG1hdGNoaW5nDQo+PiA+IHdlcmUgbWFkZSBlbnRpcmVseSBjYWxs
YmFjay1iYXNlZCwgdGhlIHN0YW5kYXJkIElJRFIgY29tcGFyaXNvbiB3b3VsZA0KPj4gPiBoYXZl
IHRvIG1vdmUgaW50byBjYWxsYmFjayBjb2RlIGFzIHdlbGwuIFRoYXQgd291bGQgbWFrZSBxdWly
ayBlbnRyaWVzDQo+PiA+IG1vcmUgb3Blbi1jb2RlZCBhbmQgbGVzcyBkYXRhLWRyaXZlbiwgd2hp
bGUgdGhlIGN1cnJlbnQgc3BsaXQga2VlcHMgdGhlDQo+PiA+IGNvbW1vbiBjYXNlIHNpbXBsZSBh
bmQgc3RydWN0dXJlZC4NCj4+ID4NCj4+ID4gVGhpcyBpcyBhbHNvIGNsb3NlIHRvIHdoYXQgTGlu
dXggZG9lczogSUlEUi1iYXNlZCBtYXRjaGluZyByZW1haW5zIHRoZQ0KPj4gPiBnZW5lcmljIGRl
Y2xhcmF0aXZlIG1lY2hhbmlzbSwgYW5kIHBsYXRmb3JtLXNwZWNpZmljIGNoZWNrcyBzdWNoIGFz
DQo+PiA+IGNvbXBhdGlibGUgc3RyaW5ncyBhcmUgYWRkZWQgb25seSB3aGVyZSBuZWVkZWQuDQo+
PiA+DQo+PiA+IFRoYXQgc2FpZCwgSSBhZ3JlZSB0aGF0IHRoZSBjYWxsYmFja3MgaW50cm9kdWNl
ZCBpbiB0aGlzIHNlcmllcyBhcmUgYWxsDQo+PiA+IGRvaW5nIHJvdWdobHkgdGhlIHNhbWUga2lu
ZCBvZiBwbGF0Zm9ybSBpZGVudGlmaWNhdGlvbi4gQSByZWFzb25hYmxlDQo+PiA+IGZvbGxvdy11
cCBjbGVhbnVwIHdvdWxkIGJlIHRvIG1vZGVsIHRoaXMgbW9yZSBnZW5lcmljYWxseSwgZm9yIGV4
YW1wbGUNCj4+ID4gYnkgYWRkaW5nIGFuIG9wdGlvbmFsIGNvbXBhdGlibGUgc3RyaW5nIGxpc3Qg
dG8gc3RydWN0IGl0c19xdWlyaywgYW5kDQo+PiA+IHJlc2VydmluZyBtYXRjaCgpIGZvciBjYXNl
cyB0aGF0IGNhbm5vdCBiZSBleHByZXNzZWQgdGhyb3VnaCBzdGF0aWMNCj4+ID4gZGF0YS4NCj4+
ID4NCj4+ID4gU28gdGhlIGludGVudCBoZXJlIHdhcyB0byBrZWVwIHRoZSB0YWJsZSBjbGVhbiwg
d2l0aCBtYXRjaGluZyBsb2dpYw0KPj4gPiBlZmZlY3RpdmVseSBiZWluZzoNCj4+ID4NCj4+ID4g
ICBxdWlya19tYXRjaCA9IElJRFIgbWF0Y2ggJiYgKG5vIGV4dHJhIG1hdGNoIHJ1bGUgfHwgZXh0
cmEgbWF0Y2ggcGFzc2VzKQ0KPj4gPg0KPj4gPiBJZiB5b3UgcHJlZmVyLCBJIGNhbiByZXdvcmsg
dGhpcyBlaXRoZXIgaW50byBhIGZ1bGx5IGNhbGxiYWNrLWJhc2VkDQo+PiA+IHNjaGVtZSwgb3Ig
aW50cm9kdWNlIGdlbmVyaWMgY29tcGF0aWJsZS1zdHJpbmcgbWF0Y2hpbmcgaW4gdGhpcyBzZXJp
ZXMNCj4+ID4gYW5kIGRyb3AgdGhlIG1hdGNoKCkgY2FsbGJhY2sgZm9yIG5vdy4NCj4+DQo+PiBX
ZWxsLCBJIGRvbid0IHRoaW5rIHRoYXQgaW50cm9kdWNpbmcgImNvbXBhdGlibGUiIHN0cmluZyBt
YXRjaGluZyB3aWxsDQo+PiBkbyBhbnkgZ29vZC4gQWN0dWFsbHksIEkgdGhpbmsgdGhhdCBpdCB3
aWxsIGludHJvZHVjZSBtb3JlIHByb2JsZW1zLg0KPj4NCj4+IFdoYXQgeW91IGNhbiBkbywgaXMg
dG8gaW50cm9kdWNlIGFuIGFkZGl0aW9uYWwgZGF0YToNCj4+DQo+PiBzdHJ1Y3QgaXRzX3F1aXJr
IHsNCj4+ICAgICAgICAgY29uc3QgY2hhciAqZGVzYzsNCj4+ICAgICAgICAgYm9vbCAoKm1hdGNo
KShjb25zdCBzdHJ1Y3QgaG9zdF9pdHMgKmh3X2l0cywgdm9pZCAqcHJpdik7DQo+PiAgICAgICAg
IHZvaWQgKnByaXY7DQo+PiAgICAgICAgIHVpbnQzMl90IGZsYWdzOw0KPj4gfTsNCj4+DQo+PiBz
dHJ1Y3QgaXRzX2lpZHJfbWF0Y2ggew0KPj4gICAgICAgICB1aW50MzJfdCBpaWRyOw0KPj4gICAg
ICAgICB1aW50MzJfdCBtYXNrOw0KPj4gfTsNCj4+DQo+PiBzdGF0aWMgYm9vbCBpaWRyX21hdGNo
KGNvbnN0IHN0cnVjdCBob3N0X2l0cyAqaHdfaXRzLCB2b2lkICpwcml2KTsNCj4+IHN0YXRpYyBi
b29sIHBsYXRmb3JtX2NvbXBhdGJpbGVfbWF0Y2goY29uc3Qgc3RydWN0IGhvc3RfaXRzICpod19p
dHMsIHZvaWQgKnByaXYpOw0KPj4NCj4+IHN0YXRpYyBzdHJ1Y3QgaXRzX3F1aXJrIHF1aXJrc1td
ID0gew0KPj4gICAgICAgICB7Lm1hdGNoID0gaWlkcl9tYXRjaCwNCj4+ICAgICAgICAgIC5wcml2
ID0gJihzdHJ1Y3QgaXRzX2lpZHJfbWF0Y2gpIHsuaWlkciA9IDB4YWFhYSwgLm1hc2sgPSAweGJi
YmJ9fSwNCj4+ICAgICAgICAgey5tYXRjaCA9IHBsYXRmb3JtX2NvbXBhdGJpbGVfbWF0Y2gsDQo+
PiAgICAgICAgICAucHJpdiA9ICJyZW5lc2FzLHI4YTc3OWcwIn0sDQo+PiB9Ow0KPj4NCj4+IFNv
bWV0aGluZyBsaWtlIHRoYXQuIEluIHRoaXMgd2F5IHlvdSBjYW4gdXNlIGVpdGhlciBhIGdlbmVy
aWMgcHJlZGljYXRlDQo+PiBmdW5jdGlvbiBvciBpbXBsZW1lbnQgeW91ciBvd24gZm9yIG1vcmUg
Y29tcGxleCBjYXNlcy4NCj4+DQo+PiA+DQo+PiA+Pg0KPj4gPj4gPiBAQCAtNjQsMTEgKzY1LDI0
IEBAIHN0cnVjdCBpdHNfcXVpcmsgew0KPj4gPj4gPg0KPj4gPj4gPiAgc3RhdGljIHVpbnQzMl90
IF9fcm9fYWZ0ZXJfaW5pdCBpdHNfcXVpcmtfZmxhZ3M7DQo+PiA+PiA+DQo+PiA+PiA+ICtzdGF0
aWMgYm9vbCBnaWN2M19pdHNfbWF0Y2hfcXVpcmtfZ2VuNChjb25zdCBzdHJ1Y3QgaG9zdF9pdHMg
Kmh3X2l0cykNCj4+ID4+ID4gK3sNCj4+ID4+ID4gKyAgICBpZiAoICFod19pdHMtPmR0X25vZGUg
KQ0KPj4gPj4gPiArICAgICAgICByZXR1cm4gZmFsc2U7DQo+PiA+PiA+ICsNCj4+ID4+ID4gKyAg
ICBpZiAoICFkdF9tYWNoaW5lX2lzX2NvbXBhdGlibGUoInJlbmVzYXMscjhhNzc5ZjAiKSAmJg0K
Pj4gPj4gPiArICAgICAgICAgIWR0X21hY2hpbmVfaXNfY29tcGF0aWJsZSgicmVuZXNhcyxyOGE3
NzlnMCIpICkNCj4+ID4+ID4gKyAgICAgICAgcmV0dXJuIGZhbHNlOw0KPj4gPj4gPiArDQo+PiA+
PiA+ICsgICAgcmV0dXJuIHRydWU7DQo+PiA+PiA+ICt9DQo+PiA+PiA+ICsNCj4+ID4+ID4gIHN0
YXRpYyBjb25zdCBzdHJ1Y3QgaXRzX3F1aXJrIGl0c19xdWlya3NbXSA9IHsNCj4+ID4+ID4gICAg
ICB7DQo+PiA+PiA+ICAgICAgICAgIC5kZXNjICA9ICJSLUNhciBHZW40IiwNCj4+ID4+ID4gICAg
ICAgICAgLmlpZHIgID0gMHgwMjAxNzQzYiwNCj4+ID4+ID4gICAgICAgICAgLm1hc2sgID0gMHhm
ZmZmZmZmZlUsDQo+PiA+PiA+ICsgICAgICAgIC5tYXRjaCA9IGdpY3YzX2l0c19tYXRjaF9xdWly
a19nZW40LA0KPj4gPj4gPiAgICAgICAgICAuZmxhZ3MgPSBIT1NUX0lUU19XT1JLQVJPVU5EX05D
X05TIHwNCj4+ID4+ID4gICAgICAgICAgICAgICAgICAgSE9TVF9JVFNfV09SS0FST1VORF8zMkJJ
VF9BRERSLA0KPj4gPj4gPiAgICAgIH0sDQo+PiA+PiA+IEBAIC03Nyw3ICs5MSw4IEBAIHN0YXRp
YyBjb25zdCBzdHJ1Y3QgaXRzX3F1aXJrIGl0c19xdWlya3NbXSA9IHsNCj4+ID4+ID4gICAgICB9
DQo+PiA+PiA+ICB9Ow0KPj4gPj4gPg0KPj4gPj4gPiAtc3RhdGljIGNvbnN0IHN0cnVjdCBpdHNf
cXVpcmsgKmdpY3YzX2l0c19maW5kX3F1aXJrKHVpbnQzMl90IGlpZHIpDQo+PiA+PiA+ICtzdGF0
aWMgY29uc3Qgc3RydWN0IGl0c19xdWlyayAqZ2ljdjNfaXRzX2ZpbmRfcXVpcmsoDQo+PiA+PiA+
ICsgICAgY29uc3Qgc3RydWN0IGhvc3RfaXRzICpod19pdHMsIHVpbnQzMl90IGlpZHIpDQo+PiA+
PiA+ICB7DQo+PiA+PiA+ICAgICAgY29uc3Qgc3RydWN0IGl0c19xdWlyayAqcXVpcmsgPSBpdHNf
cXVpcmtzOw0KPj4gPj4gPg0KPj4gPj4gPiBAQCAtODYsNyArMTAxLDggQEAgc3RhdGljIGNvbnN0
IHN0cnVjdCBpdHNfcXVpcmsgKmdpY3YzX2l0c19maW5kX3F1aXJrKHVpbnQzMl90IGlpZHIpDQo+
PiA+PiA+ICAgICAgICAgIGlmICggcXVpcmstPmlpZHIgIT0gKHF1aXJrLT5tYXNrICYgaWlkcikg
KQ0KPj4gPj4gPiAgICAgICAgICAgICAgY29udGludWU7DQo+PiA+PiA+DQo+PiA+PiA+IC0gICAg
ICAgIHJldHVybiBxdWlyazsNCj4+ID4+ID4gKyAgICAgICAgaWYgKCAhcXVpcmstPm1hdGNoIHx8
IHF1aXJrLT5tYXRjaChod19pdHMpICkNCj4+ID4+ID4gKyAgICAgICAgICAgIHJldHVybiBxdWly
azsNCj4+ID4NCj4+ID4gQWxzbywgd2hpbGUgcmV2aWV3aW5nIGdpY3YzX2l0c19maW5kX3F1aXJr
KCkgSSByZWFsaXplZCB0aGF0IHRoZQ0KPj4gPiBjdXJyZW50IGZpcnN0LW1hdGNoIHNlbWFudGlj
cyBtYXkgbm90IHNjYWxlIHdlbGwuIFNpbmNlIHRoZSB0YWJsZQ0KPj4gPiBzdXBwb3J0cyBwYXJ0
aWFsIElJRFIgbWFza3MsIHdlIGNvdWxkIGhhdmUgYSBicm9hZCBlbnRyeSBjb3ZlcmluZw0KPj4g
PiBhbiBlbnRpcmUgR0lDIGZhbWlseSBhbG9uZ3NpZGUgYSBuYXJyb3dlciBlbnRyeSBmb3IgYSBz
cGVjaWZpYw0KPj4gPiBwbGF0Zm9ybS4gV2l0aCBmaXJzdC1tYXRjaCwgb25seSBvbmUgb2YgdGhl
bSB3b3VsZCBldmVyIGFwcGx5LCBzbw0KPj4gPiB0aGVpciBmbGFncyBjb3VsZCBuZXZlciBiZSBj
b21iaW5lZC4gVGhlIHNhbWUgaXNzdWUgYXBwbGllcyB0byB0aGUNCj4+ID4gbWF0Y2goKSBjYWxs
YmFjazogaWYgYW4gZW50cnkgd2l0aCBtYXRjaCgpIGlzIGNoZWNrZWQgZmlyc3QgYW5kDQo+PiA+
IGZhaWxzLCB0aGUgbG9vcCBkb2VzIGNvbnRpbnVlLCBidXQgaWYgaXQgc3VjY2VlZHMsIGFsbCBz
dWJzZXF1ZW50DQo+PiA+IGVudHJpZXMgZm9yIHRoZSBzYW1lIElJRFIgLS0gd2hldGhlciB3aXRo
IGRpZmZlcmVudCBtYXNrcyBvciBkaWZmZXJlbnQNCj4+ID4gbWF0Y2goKSBwcmVkaWNhdGVzIC0t
IGFyZSBza2lwcGVkIGVudGlyZWx5Lg0KPj4gPg0KPj4gPiBJZiBvdGhlcnMgYWdyZWUsIEkgd2ls
bCBzd2l0Y2ggdG8gYWNjdW11bGF0aW5nIGZsYWdzIGZyb20gYWxsDQo+PiA+IG1hdGNoaW5nIGVu
dHJpZXMgaW4gdjIuDQo+Pg0KPj4gSSBkb24ndCB0aGluayB0aGF0IHRoZXJlIGlzIGEgZ29vZCB1
c2UgY2FzZSBmb3IgdGhpcyByaWdodCBub3csIHNvDQo+PiBwZXJzb25hbGx5IEknZCBza2lwIGZs
YWdzIGFjY3VtdWxhdGlvbi4gSnVzdCB3cml0ZSBhIGNvbW1lbnQgdGhhdCBjb2RlDQo+PiBzdG9w
cyBhbmQgZmlyc3QgbWF0Y2gsIHNvIG1vcmUgc3BlY2lmaWMgcXVpcmtzIHNob3VsZCBnbyBmaXJz
dC4NCj4NCj4gSSBzZWUgdGhlIHBvaW50IGFib3V0IG5vdCBtaXhpbmcgYW4gb3Blbi1jb2RlZCBE
VCBwcm9wZXJ0eSBjaGVjayB3aXRoDQo+IHRoZSBnZW5lcmljIHF1aXJrIG1hdGNoaW5nIHBhdGgg
aW4gdGhlIGZpcnN0IHBhdGNoIG9mIHRoaXMgc2VyaWVzLg0KPg0KPiBIb3dldmVyLCB0YWtlbiB0
b2dldGhlciB3aXRoIHlvdXIgY29tbWVudCBoZXJlLCB0aGF0IHNlZW1zIHRvIHB1bGwgdGhlDQo+
IGRlc2lnbiBpbiB0d28gZGlmZmVyZW50IGRpcmVjdGlvbnMuDQo+DQo+IE15IGNvbmNlcm4gaXMg
dGhhdCBkbWEtbm9uY29oZXJlbnQgaXMgbm90IHJlYWxseSBhbiBhbHRlcm5hdGl2ZQ0KPiBwbGF0
Zm9ybSBxdWlyaywgYnV0IGFuIG9ydGhvZ29uYWwgSVRTIHByb3BlcnR5IHRoYXQgbWF5IG5lZWQg
dG8NCj4gY29leGlzdCB3aXRoIG90aGVyIHF1aXJrcyBtYXRjaGVkIHZpYSBJSURSLCBtYWNoaW5l
IGNvbXBhdGlibGUsIG9yIGENCj4gY3VzdG9tIG1hdGNoKCkgY2FsbGJhY2suDQo+DQo+IFdpdGgg
dGhlIGN1cnJlbnQgZmlyc3QtbWF0Y2ggc2VtYW50aWNzLCBpZiBkbWEtbm9uY29oZXJlbnQgaXMg
cHJvbW90ZWQNCj4gdG8gYSByZWd1bGFyIHN0cnVjdCBpdHNfcXVpcmsgZW50cnksIHRoZW4gb25s
eSBvbmUgZW50cnkgd291bGQgYXBwbHksDQo+IGFuZCB3ZSBjb3VsZCBub3QgY29tYmluZSBpdCB3
aXRoIGFub3RoZXIgcGxhdGZvcm0tc3BlY2lmaWMgcXVpcmsgZm9yDQo+IHRoZSBzYW1lIElUUy4g
SW4gdGhhdCBtb2RlbCwgbW92aW5nIGRtYS1ub25jb2hlcmVudCBpbnRvIHRoZSB0YWJsZQ0KPiB3
b3VsZCBhY3R1YWxseSBtYWtlIHRoZSBiZWhhdmlvciBsZXNzIGdlbmVyaWMsIG5vdCBtb3JlLg0K
Pg0KPiBTbyBJIHRoaW5rIHRoZXJlIGFyZSB0d28gY29uc2lzdGVudCBvcHRpb25zOg0KPg0KPiAx
LiBrZWVwIGZpcnN0LW1hdGNoIHNlbWFudGljcyBhbmQgbGVhdmUgZG1hLW5vbmNvaGVyZW50IGFz
IGEgc2VwYXJhdGUNCj4gYWRkaXRpdmUgcHJvcGVydHksIG9yDQo+IDIuIG1vdmUgZG1hLW5vbmNv
aGVyZW50IGludG8gdGhlIHF1aXJrIHRhYmxlIGFuZCBzd2l0Y2ggdGhlIGxvb2t1cCB0bw0KPiBh
Y2N1bXVsYXRlIGZsYWdzIGZyb20gYWxsIG1hdGNoaW5nIGVudHJpZXMuDQo+DQo+IFRoYXQgaXMg
d2h5IEkgYnJvdWdodCB1cCBhY2N1bXVsYXRpb24gaW4gdGhlIGZpcnN0IHBsYWNlOg0KPiBkbWEt
bm9uY29oZXJlbnQgbG9va3MgbGlrZSBhIGNvbmNyZXRlIGNhc2Ugd2hlcmUgcXVpcmtzIGFyZQ0K
PiBjb21wb3NhYmxlIHJhdGhlciB0aGFuIG11dHVhbGx5IGV4Y2x1c2l2ZS4NCg0KT2theSwgSSBz
ZWUgeW91ciBwb2ludC4gQnV0LCBpZiB5b3UgYXJlIHNheWluZyB0aGF0IGRtYS1ub25jb2hlcmVu
dCBpcw0Kb3J0aG9nb25hbCB0byBxdWlya3MsIHdoeSBpdCBpcyBoYW5kbGVkIGJ5IHRoZSBxdWly
ayBjb2RlPyBJIGV4cGVjdA0KcXVpcmtzIHRvIGJlIGludGVybmFsbHkgY29oZXJlbnQgKG5vIHB1
biBpbnRlbmRlZCkuIFNvIHllcywgZm9yIG1lLCB0aGUNCmZpcnN0IG9wdGlvbiBzb3VuZHMgYmV0
dGVyLiBCdXQgbGV0J3Mgd2FpdCBmb3Igb3BpbmlvbiBmcm9tIG1haW50YWluZXJzLg0KDQotLSAN
CldCUiwgVm9sb2R5bXly


From xen-devel-bounces@lists.xenproject.org Thu Apr 02 16:54:03 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 02 Apr 2026 16:54:03 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1272241.1560030 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1w8LIr-0004vu-QQ; Thu, 02 Apr 2026 16:53:57 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1272241.1560030; Thu, 02 Apr 2026 16:53: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 1w8LIr-0004vn-Ns; Thu, 02 Apr 2026 16:53:57 +0000
Received: by outflank-mailman (input) for mailman id 1272241;
 Thu, 02 Apr 2026 16:53:55 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <Oleksandr_Tyshchenko@epam.com>) id 1w8LIp-0004vh-OD
 for xen-devel@lists.xenproject.org; Thu, 02 Apr 2026 16:53:55 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1w8LIp-0076RP-4h
 for xen-devel@lists.xenproject.org; Thu, 02 Apr 2026 18:53:55 +0200
Received: from [10.42.69.2] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <Oleksandr_Tyshchenko@epam.com>)
 id 69ce9eff-bab6-0a2a0a5309dd-0a2a4502b5bc-40
 for <xen-devel@lists.xenproject.org>; Thu, 02 Apr 2026 18:53:55 +0200
Received: from [52.101.84.93]
 (helo=DB3PR0202CU003.outbound.protection.outlook.com)
 by tlsNG-720697.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.0)
 (envelope-from <Oleksandr_Tyshchenko@epam.com>)
 id 69ce9f22-42fa-0a2a45020019-3465545da5a1-3
 for <xen-devel@lists.xenproject.org>; Thu, 02 Apr 2026 18:53:55 +0200
Received: from AM4PR03MB11152.eurprd03.prod.outlook.com
 (2603:10a6:20b:6cc::22) by AM9PR03MB6705.eurprd03.prod.outlook.com
 (2603:10a6:20b:2d6::15) with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9769.18; Thu, 2 Apr
 2026 16:53:52 +0000
Received: from AM4PR03MB11152.eurprd03.prod.outlook.com
 ([fe80::bbbf:5b9b:1043:4510]) by AM4PR03MB11152.eurprd03.prod.outlook.com
 ([fe80::bbbf:5b9b:1043:4510%5]) with mapi id 15.20.9769.016; Thu, 2 Apr 2026
 16:53: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=W2J5Sc7rq+8noD4ETOCtKt1UsXupyQPfdAhhQI9XyFkxQwAuE3D8W0RGF7e547UA0/JwShj+NkWVjAlt++Wg/vPDd+riDBY8riEcWCfI3m4ZuriH/7/FwJI5TUFMRgQA9wswrt11Jx2jvZDFjNofUXTp3mGRZGqkuVWu0YoWik8/gORYKYeVzwjHlkdkckjQbi8SV/LiYRJYBdc7qB7KLk0lKaZHiutPlDtNt8R+zXWS4Pzb1jfhe3znKKqS98PO+fB2fcOokLaOkMXqgIOMYO5vBMj1fJs94B7//SGRN5lapaicgk2X+yE1s0OcSeRSgkeCliRW555RQJxzkINPCA==
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com;
 s=arcselector10001;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1;
 bh=aQqd8AKyR5za5xp0S+ghLRo8Ij748iWcoDWX/6XquFE=;
 b=sar5C4xs3MGF8INAz+FmDQHty4ILMm9d7XYEbMhl6faNWDeZmM+u7AzatUNjfKjJzDE5GwXFYvuL0DtZdjY9f1ziR+GjbzspCSwCPdumNN8o1jW+uEc8yG+U0ieuYGsr2UgXPAkTDZjGnXuAks08MZiuhELhWVTRAzglXQLo38KwLzT6IZC1YCI9R/3nOaNU0kNf83Pql6DvNpH4jUNFuno7UCR4tCMXR1bjGMbAzLBFNtn/GfYisCm9Qj4Ax1p+B3k4E03EhZmUoeYR3/XmDZsm2bBwAJro+ekiE/YTx85QoCEk56fZ0hyw5sanrX9b1PGV/z2SoUXpYCtmb28H0w==
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=aQqd8AKyR5za5xp0S+ghLRo8Ij748iWcoDWX/6XquFE=;
 b=aElk5qmfZZJ9iZZUjNdBcZIqrEJhu+DjsLMIlE8gpr4yqf7i/rjBS2XBp3lArEFZ7R1GgI5GX6oDELY8iH1yVB1JHWvt1+CXvLdsxy0bQ7/HWgGSFTSUmeMfE7T4I0Hxs8dx/ATmeVsb+Z+VkFsTrUQsIDCj5+/DD/mhsF8/NjcUg+JeUUlg7v/j52f7wr8lHTScKP9hDmoGMB8+BNuSmHYjCEm0xzmYPnNdQwWvG5AVz+LV+WvHh047JLppRn7nAqze878TIzyRpbSA2VYjm5yUK3ntzF6cNPOGDNy/x7CAS6VDOZLuocn9jKZxcs6MCcTmo5OX4dkvpwyBgd5F+g==
From: Oleksandr Tyshchenko <Oleksandr_Tyshchenko@epam.com>
To: "Orzel, Michal" <michal.orzel@amd.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>
Subject: Re: [PATCH] xen/device-tree: Fix off-by-one bounds check in
 make_memory_node()
Thread-Topic: [PATCH] xen/device-tree: Fix off-by-one bounds check in
 make_memory_node()
Thread-Index: AQHcwpBhsnhldIRLa0qtQ6xVjLEK7LXLt/YAgABFcwA=
Date: Thu, 2 Apr 2026 16:53:52 +0000
Message-ID: <d7691062-3c01-4a70-a7b1-dd1534383119@epam.com>
References: <20260402110330.3580124-1-oleksandr_tyshchenko@epam.com>
 <865ae6a0-15e0-4a27-9537-0c5e6cb0a1cb@amd.com>
In-Reply-To: <865ae6a0-15e0-4a27-9537-0c5e6cb0a1cb@amd.com>
Accept-Language: en-US, ru-RU
Content-Language: en-US
X-MS-Has-Attach:
X-MS-TNEF-Correlator:
authentication-results: dkim=none (message not signed)
 header.d=none;dmarc=none action=none header.from=epam.com;
x-ms-publictraffictype: Email
x-ms-traffictypediagnostic: AM4PR03MB11152:EE_|AM9PR03MB6705:EE_
x-ms-office365-filtering-correlation-id: 2f346556-2a2e-4e97-63bf-08de90d86b71
x-ms-exchange-senderadcheck: 1
x-ms-exchange-antispam-relay: 0
x-microsoft-antispam:
 BCL:0;ARA:13230040|1800799024|376014|366016|42112799006|38070700021|56012099003|22082099003|18002099003;
x-microsoft-antispam-message-info:
 OyUHFqLHGmXS0nEZ0mPtQfZlxDy0sOtImGLzJGIMqEUDwxEXYrlroMW+EI7mUW6tu3HBvPnyld/77eMWvE4fNoNYltGVLt3V93VMwv1qfNIGlVM6CbKZV6s5BCFNl3ywyGgP5LC63UUv9nJ51vKsxTNIwcZ6Gpphdl2e3KR6hnQybLrVv446f0nfRxH8GztARidIVMMC+ZzEpYAbk3QBwiY4LH0JZYOSVq5NOcQE4XP7IZgGS11OdiP7dv9J64TIoQjopf92tnmDK0W0ItauHz3prCkD6nzkF6xjHpKd1Thm8byZc+6mAdGli4RmbFQxVUjLMc5fqSj5g33gzPV33nRQ1c9vH2RT/RmXBSNUljviTGe48fYIlJwgWOc+eMHF4loT7a6cqFq40z3oV8ezcqTMkGayRf+C6pKkgqXnEmEsynGVtzBkd+5nJDR2Y8IMP2e9JequMEf5FCZi9SSWtbCUbg3SqBRUl1CXD37lNoY8BSKQbf9S79zSyxhIKLMZq4I/XgNmetaYktUk1oayYhx1xgEbCk2LPMwp5Ij10QWAwXApc1+vfr+vx7nyPQAJ4T0vL8ZtWqvsy5LTE5HDedb/6WJ2KIoX2d30nJcmi+rMWK1GAwrfo2gsu/eRKGXt0lz/C9D7nPEdC0SWj5rkvxANDFE3maDPPjMtlVzzTAnRfEuaWgXqjJi6SWPVNMqjkgRq0LRLNoQIelHd/F/DCjvNtpNVy4Q0t3t8SOJ5EJduJbB2zMtc0A/4RCaZNly0M3MLkuVBHJ+Yp3HHH9Gn/M2vVOU5xpinfK3B7l5fi2g=
x-forefront-antispam-report:
 CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:AM4PR03MB11152.eurprd03.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(1800799024)(376014)(366016)(42112799006)(38070700021)(56012099003)(22082099003)(18002099003);DIR:OUT;SFP:1102;
x-ms-exchange-antispam-messagedata-chunkcount: 1
x-ms-exchange-antispam-messagedata-0:
 =?utf-8?B?dzN6d1BSZkRaR3h4T29XR3d0dXNBYzJiOExTa0NENmtKK2dvZEVNVkg4Z3JF?=
 =?utf-8?B?eUpCbU1pZ25sck9YTnI1Z0plcU5ORWlkQ1BZVzd5ekxYUWdlclpXOW81a2Ir?=
 =?utf-8?B?L3JFYXcxWWFkMFV3czNTd25hZkduMmV1NTdzQXN4THlMdEZxUlVZbGJOZmt3?=
 =?utf-8?B?RlgwcTNmRURKYWdaYTdabm9iR2JWV0YweGdFQkhIQlVvVDVkSm13bEhuU2FD?=
 =?utf-8?B?enB3bE53dlNJcGc5SlZNczhSN05RY2lWa2N6OWNVRkxuQlV5VzUzUHlqT0c4?=
 =?utf-8?B?VE1iNE5zMzhYQXlsU1JuQUhsd1B4Z0MrNGVpTUQ4OUF3cTF1clNIZmNSeGdk?=
 =?utf-8?B?OSs3SUJKK0ZsVGxQdkN2bGVQS3l1ckQrdndpQUhEVW1VS0JHSmc3VE5GTFo3?=
 =?utf-8?B?WFpEMERYeG1JeDhVQllENUMyaGdmUllxZXViMEcwYk1UaWVROFpuSmtlNEZP?=
 =?utf-8?B?dFhzWTdTU2ZKbTdvd3MyWnJDMjRwb1M4TmhUcFFkWTlibmJEejU5RXFqTitZ?=
 =?utf-8?B?L0RXc005S0p0WnhmVTBXK1FMU0Z3NnZmUk5xK2hxeGtrWFlmbS8xaXpHc0py?=
 =?utf-8?B?c01nS0hrVWp4OXROUEtmOGVqcytwY3JIL1UyUjBPUGJQUU0yRkxHYzF6cG5G?=
 =?utf-8?B?aWV4T1BqdUQvRW8reTU3cXpMekc5Q0Y5UmFVeGV2QVVFR09ST0hMUmNQZC93?=
 =?utf-8?B?R2lSL01FVnlUOGZhYWVCckMxSVZFSVdkUlhwYUlWRXFCQ2dYeWYyNUtyVU15?=
 =?utf-8?B?cWJJVjQ4eGtEMk1TbmVJTWM5ZityQVh3UGpkZEdKU0R1Qm0vcFFtMlhKN1NP?=
 =?utf-8?B?QXFQNzFrT3NKdWk1WXlZQ21Bd0hOK21wbzFzcXNUTUVjSnN4YnFiNStMVUZU?=
 =?utf-8?B?N3dCZkprNWcyWk8rWlMwK1Z4Wms5M1RxaVg3SVFMTGdsS280YUFva0Vobzg2?=
 =?utf-8?B?MjJhZ2xqcDc5eEEzendZUG1ETEZ5ZHZhNG55aUczNEZQZWhMWGt1YkhVUUE3?=
 =?utf-8?B?cGxMMDdxY1VoZ0FrV2VsSE52KzNIQW5PR3VRQ3lJNTExLzB1elRwbUpxRVMw?=
 =?utf-8?B?clhhVzUxZ1RJdElxNjNyNDN5eldZbmdKei94TEQ5YVAzNkc0UmNpSlMvd3ds?=
 =?utf-8?B?REtkSHZFOFNiYTlaSGFBekJvcEp2V21QSW5RaUh5dXUzU3k3czhmRWI2MzhW?=
 =?utf-8?B?SnpZc3BoQkQxTVhsZ1NGNjJ2SktmUktQK1UxY1A0djFMWHlLU1EyWUdYUTJk?=
 =?utf-8?B?WmRtUllEVU5uWDN5b3lwaFZ3K3lwSmtobE5wakViM3JNanFoWG1WeGllZlp0?=
 =?utf-8?B?SE5QTVlsN1kvaUwxVXpjL3R3eHNxTjcwdFR2V2hOWW9hbHFjTlhiK0dUUHUx?=
 =?utf-8?B?dHVUOWJ5dkpZbGtrT2ltSy9nRjNkSDFEbW5oM3JRRkh0K2RHZ1JRS3ZnR0JO?=
 =?utf-8?B?aHlPMGphNjFNVVZidWkrT1I0R1g3M3hZV3BTWEpVdVQrckpWSTZJODR6V0Fv?=
 =?utf-8?B?VmNIMk9pZFNGKzdNL2RoV2JCSVk4empCcDJvakgrMnN2d21lb25wWkhZU3Uz?=
 =?utf-8?B?SFhVT0dUd1htL29wVUZWdVFCQmhCSU9ldWJmSmMwb2pkNVlhWng3U2FFMHV0?=
 =?utf-8?B?TmlxbnpkZ1lra25ldUZvSVRUMVBPTnBXUkRTUlg1NXZ0UVlRR3RISXNZUFlF?=
 =?utf-8?B?Zi9BS2RFRTBxSlZGdStMOWNIQ0M2WWsxbENCK0JZdDFicGtnbUw5b2FZY2dy?=
 =?utf-8?B?aEhJMUNRVUpuWTVsN2JQTkh5L3dWeFR4MnlvL1VvTkoybmkrdWFqb3U5NlFG?=
 =?utf-8?B?TnBadEVqdVZXRE83Wmc0QkZ4RWhvNFp0Wi9IRlBTL3B4TUdlbzdZUHJaUTlQ?=
 =?utf-8?B?UDZKYjMvNVZwMkorOTA0YWJxQ2lpL2NSaDRHV0h0UlhCM3lOTlRETmdqT3VL?=
 =?utf-8?B?WmtSVi9TL3hhMlFFVFVXY1llQ1gwM1orRFRPdXBsUEtoaHIxMzVuUk9RNHNR?=
 =?utf-8?B?NkR0dE42d2RFUGF1KzBRaEN2K0lDVVA4aWJNdkZ5cHQwRlpiRW5kcmx1ZllT?=
 =?utf-8?B?OXRPZEVVcUpMaDFBd0FWK3ZHREVtZklMZDcvNVJpOUUrQ0ZJUW1jbW05M3p1?=
 =?utf-8?B?ZHg5ZUxJcDdERTVRcHJ6KzBBSzd1Z1ZGYWpBRm5SbDBTOTJ3eVFaaUZpQXVC?=
 =?utf-8?B?aEh0ZXdpajdQUFVLUzdadGNwby9TU3hMRW02ZFk3WHFUbEwvSkRoZ2xhd0tk?=
 =?utf-8?B?VklaSjNMWmxERUh1c0h0UldkMHlHY25iM2lwLzdtNlNxUE53bHI1V2NmQlBq?=
 =?utf-8?B?aGpnaE5acTBMU0FKZkVYaUc3WXJQWFg0eGNNM3FTeDhrOElYdVQwN09sQWoy?=
 =?utf-8?Q?kJ7FDTbOM1axtJpk=3D?=
Content-Type: text/plain; charset="utf-8"
Content-ID: <E13DAD1AC91DCF4DA53DDEBFB502FE94@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: AM4PR03MB11152.eurprd03.prod.outlook.com
X-MS-Exchange-CrossTenant-Network-Message-Id: 2f346556-2a2e-4e97-63bf-08de90d86b71
X-MS-Exchange-CrossTenant-originalarrivaltime: 02 Apr 2026 16:53:52.2753
 (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: HhmwlRvIX2vfjbfSOitoQSOmHXWqXaqSTs/SgDo4aZm8TmoFeclLTrp23PVC48BIEU4L5hBsCv+dExXEdpIpcnOdLNIrX6cj9A/eaieP77Q=
X-MS-Exchange-Transport-CrossTenantHeadersStamped: AM9PR03MB6705
X-purgate-ID: tlsNG-720697/1775148835-AF323CD1-DF0E7D9C/0/0
X-purgate-type: clean
X-purgate-size: 3092

DQoNCk9uIDQvMi8yNiAxNTo0NSwgT3J6ZWwsIE1pY2hhbCB3cm90ZToNCg0KSGVsbG8gTWljaGFs
DQoNCj4gDQo+IA0KPiBPbiAwMi8wNC8yMDI2IDEzOjAzLCBPbGVrc2FuZHIgVHlzaGNoZW5rbyB3
cm90ZToNCj4+IFdoZW4gYnVpbGRpbmcgWGVuIHdpdGggQ09ORklHX1NUQVRJQ19TSE09biwgYm9v
dGluZyBhIGhhcmR3YXJlDQo+PiBkb21haW4gd2l0aCBleGFjdGx5IE5SX01FTV9CQU5LUyAoMjU2
KSByZXNlcnZlZC1tZW1vcnkgcmVnaW9ucw0KPj4gY2F1c2VzIGEgcGFuaWM6DQo+Pg0KPj4gKFhF
TikgWGVuIEJVRyBhdCBjb21tb24vZGV2aWNlLXRyZWUvZG9tYWluLWJ1aWxkLmM6NDk3DQo+PiAo
WEVOKSBYZW4gY2FsbCB0cmFjZToNCj4+IChYRU4pICAgIFs8MDAwMDBhMDAwMDI4OWFhOD5dIG1h
a2VfbWVtb3J5X25vZGUrMHgxNzgvMHgyMzQgKFBDKQ0KPj4NCj4+IFRoaXMgb2NjdXJzIGR1ZSB0
byBhbiBvZmYtYnktb25lIGVycm9yIGluIHRoZSBib3VuZHMgY2hlY2tpbmcgb2YNCj4+IHRoZSBy
ZWcgYXJyYXkgaW4gbWFrZV9tZW1vcnlfbm9kZSgpLiBUaGUgY2hlY2s6DQo+PiAgICAgIEJVR19P
Tihucl9jZWxscyA+PSBBUlJBWV9TSVpFKHJlZykpOw0KPj4gaW5jb3JyZWN0bHkgdHJpZ2dlcnMg
d2hlbiB0aGUgYXJyYXkgaXMgZXhhY3RseSBmdWxsIChpLmUuLCB3aGVuDQo+PiBucl9jZWxscyA9
PSBBUlJBWV9TSVpFKHJlZykpLCBwcmV2ZW50aW5nIHRoZSAyNTZ0aCBhbmQgZmluYWwgdmFsaWQN
Cj4+IG1lbW9yeSByZWdpb24gZnJvbSBiZWluZyB3cml0dGVuLg0KPj4NCj4+IFdoZW4gQ09ORklH
X1NUQVRJQ19TSE09eSwgdGhpcyBidWcgcmVtYWlucyBoaWRkZW4gYmVjYXVzZQ0KPiBBRkFJQ1Qg
aXQgcmVtYWlucyBoaWRkZW4gYXMgbG9uZyBhcyB5b3UgZG9uJ3QgYWRkIE5SX1NITUVNX0JBTktT
IGJhbmtzLg0KPiBJbiB0aGF0IGNhc2UgeW91IHdpbGwgYWxzbyBoaXQgdGhpcyBwcm9ibGVtLg0K
DQpJIHRoaW5rLCB5b3UgYXJlIHJpZ2h0Lg0KDQo+IA0KPj4gRFRfTUVNX05PREVfUkVHX1JBTkdF
X1NJWkUgYWRkcyBleHRyYSBzcGFjZSBmb3IgU0hNIGJhbmtzLg0KPj4gVGhpcyBleHRyYSBjYXBh
Y2l0eSBwcmV2ZW50cyB0aGUgYXJyYXkgZnJvbSBldmVyIHJlYWNoaW5nIGl0cw0KPj4gbWF4aW11
bSBsaW1pdCB3aGlsZSBwcm9jZXNzaW5nIHRoZSAyNTZ0aCBtZW1vcnkgcmVnaW9uLg0KPj4NCj4+
IEZpeCB0aGlzIGJ5IGNoYW5naW5nIHRoZSBjb25kaXRpb24gdG8gc3RyaWN0bHkgZ3JlYXRlciB0
aGFuICg+KS4NCj4+IEFwcGx5IHRoZSBleGFjdCBzYW1lIGZpeCB0byBzaG1fbWVtX25vZGVfZmls
bF9yZWdfcmFuZ2UoKSB0bw0KPj4gcHJldmVudCB0aGUgc2FtZSBlcnJvci4NCj4+DQo+PiBTaWdu
ZWQtb2ZmLWJ5OiBPbGVrc2FuZHIgVHlzaGNoZW5rbyA8b2xla3NhbmRyX3R5c2hjaGVua29AZXBh
bS5jb20+DQo+IFRoaXMgc2hvdWxkIGhhdmUgYSBGaXhlcyB0YWcuDQoNCkl0IHRvb2sgc29tZSBk
aWdnaW5nIHRvIGxvY2F0ZSB0aGUgZXhhY3QgY29tbWl0IHNpbmNlIHRoaXMgY29kZSBoYXMgYmVl
biANCm1vdmVkIGFuZCB1cGRhdGVkIHNldmVyYWwgdGltZXMuDQoNCkluaXRpYWxseSwgSSB0aG91
Z2h0IGFib3V0IDlhYWY0MzdjZDM2MSAoInhlbi9hcm06IGRvbid0IGFzc2lnbiBkb21VIA0Kc3Rh
dGljLW1lbSB0byBkb20wIGFzIHJlc2VydmVkLW1lbW9yeSIpLiBIb3dldmVyLCBsb29raW5nIGNs
b3NlbHkgYXQgdGhlIA0KZGlmZiwgdGhhdCBjb21taXQgb25seSBtb3ZlZCB0aGUgb2ZmZW5kaW5n
IEJVR19PTigpIGluc2lkZSBhIGxvb3AgcmF0aGVyIA0KdGhhbiBpbnRyb2R1Y2luZyBpdC4gVW5s
ZXNzIEkgYW0gbWlzdGFrZW4sIHRoZSBjb3JyZWN0IHRhcmdldCBmb3IgdGhlIA0KRml4ZXM6IGlz
IGNkODAxNWI2MzRiMCAoIkFSTS9kb20wOiBBdm9pZCB1c2luZyBhIHZhcmlhYmxlIGxlbmd0aCBh
cnJheSANCmluIG1ha2VfbWVtb3J5X25vZGUoKSIpLg0KDQpBcyBmb3Igc2htX21lbV9ub2RlX2Zp
bGxfcmVnX3JhbmdlKCksIDc4NDZmNzY5OWZlYSAoInhlbi9hcm06IExpc3QgDQpzdGF0aWMgc2hh
cmVkIG1lbW9yeSByZWdpb25zIGFzIC9tZW1vcnkgbm9kZXMiKSBzaW1wbHkgY29waWVkIHRoZSAN
CmV4aXN0aW5nIEJVR19PTigpIGxvZ2ljIGludG8gdGhlIG5ldyBmdW5jdGlvbi4NCg0KDQo+IFdp
dGggdGhhdDoNCj4gUmV2aWV3ZWQtYnk6IE1pY2hhbCBPcnplbCA8bWljaGFsLm9yemVsQGFtZC5j
b20+DQoNClRoYW5rcw0KDQo+IA0KPiB+TWljaGFsDQo+IA0K


From xen-devel-bounces@lists.xenproject.org Thu Apr 02 17:02:37 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 02 Apr 2026 17:02:37 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1272261.1560040 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1w8LRA-0006gy-Oc; Thu, 02 Apr 2026 17:02:32 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1272261.1560040; Thu, 02 Apr 2026 17:02: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 1w8LRA-0006gr-Lh; Thu, 02 Apr 2026 17:02:32 +0000
Received: by outflank-mailman (input) for mailman id 1272261;
 Thu, 02 Apr 2026 17:02:32 +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 1w8LR9-0006gl-Qy
 for xen-devel@lists.xenproject.org; Thu, 02 Apr 2026 17:02:31 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1w8LR9-0077q3-7J
 for xen-devel@lists.xenproject.org; Thu, 02 Apr 2026 19:02:31 +0200
Received: from [10.42.69.4] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <Volodymyr_Babchuk@epam.com>)
 id 69cea0fd-2eae-0a2a0a5409dd-0a2a45048162-38
 for <xen-devel@lists.xenproject.org>; Thu, 02 Apr 2026 19:02:31 +0200
Received: from [40.107.162.138]
 (helo=PA4PR04CU001.outbound.protection.outlook.com)
 by tlsNG-ebf023.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.0)
 (envelope-from <Volodymyr_Babchuk@epam.com>)
 id 69cea126-bb33-0a2a45040019-286ba28ae5eb-3
 for <xen-devel@lists.xenproject.org>; Thu, 02 Apr 2026 19:02:31 +0200
Received: from DU5PR03MB10441.eurprd03.prod.outlook.com (2603:10a6:10:516::14)
 by VI1PR0301MB6670.eurprd03.prod.outlook.com (2603:10a6:800:17c::16)
 with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9769.19; Thu, 2 Apr
 2026 17:02:28 +0000
Received: from DU5PR03MB10441.eurprd03.prod.outlook.com
 ([fe80::de05:9ff1:c370:ecc9]) by DU5PR03MB10441.eurprd03.prod.outlook.com
 ([fe80::de05:9ff1:c370:ecc9%4]) with mapi id 15.20.9769.017; Thu, 2 Apr 2026
 17:02: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=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=nZmh/NKY1ZHm3wIhXJSXGKrW7XEdUZqD6/Yb1jVy8jXpEtS6Da1RmPeoqEgfd6+1DErL+oZuYA03HvQ4Gsub4a3ISBB4HX9N9LfDzYyNkpIWyCxDGwZyraPEofNdZ629/deKW0eHpp4OURwmKPNivTIVedf0qQ1iwkj2r7G2KIi4kukHmtlZMdC9c3AEngcR+ih7QBakuc+xwsizyLWu0hpYXSbBGrpdrGX1fcYKkNXP/RJCYKl+fuGAZ+cl9B5Z68FHZpuzfuNz+yQbhGokovtg5mX77725YT7WTfw03a6jS8KR/j2+pT5Z9X82ZmmdtnJiATNEAYnEX6K47oXe9w==
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com;
 s=arcselector10001;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1;
 bh=bDlZg/NiG5Fe7uEXhyxORDB5ECosDw8AtFyvtmG3f3k=;
 b=BxCE3x4fwJnHi/eE6iKYLTg0YUF/jIf6YMQib0AHd+7mXlHdkQnnBJl9tUZlX/l2c7N248DSNTIh/3ABdHgJSXQKZg8ESLvwxaQB/lDEts5l3zD3AKf1U0roqiParMFeGoBnmCrnKk8zyTUh5q4bCNS+g7hAc4GrRPgwTgk+K+T7DP7KoX1hkkRk562Zcj2EtE+lcvP1NvYCzHC6CMeSlKeLYDRVRuii26uA+F3ueNKMngW6gKb3AF8GjoVKw4GDf055vOgIvzipaUxePxEI0dVj2UY5VysCRSXEEj3MnLuNYctwHwYwoYNW/ZF22Bok8qLcIHVDu1etbuopPjfJsw==
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=bDlZg/NiG5Fe7uEXhyxORDB5ECosDw8AtFyvtmG3f3k=;
 b=otAbQHMCd2XCp6gI3vakfNOCplAruUhpRsEnPt2nBwQjZaqW22uhSw4WuDAheQkDrZuOVp/s0xXtzNmQ7iM+sKgz8rDCfapeVphsaLKhpuG8JgNu3vZpHdNtpKuXGes/Vxgy9rhBnrdrs/MnWuzjqSOeNQ7etv6j/mIEAr+JiiH+AOlkK6LfzChJAUFQRFIwbocd7rLhUz//WyYJdWYJeWQ5nxcExaq2irNAiJHqYPDH1/AGbJKm3vhQ6uJGDDucpO74+7TnLxsDLCs3m/rMy5cozvPAlFNNfMQheFfzgV9kGMEHI6xXu0ajhEFQpbLRXfvWz2azpf9JlRB/X8cqRw==
From: Volodymyr Babchuk <Volodymyr_Babchuk@epam.com>
To: Mykola Kvach <xakep.amatop@gmail.com>
CC: "xen-devel@lists.xenproject.org" <xen-devel@lists.xenproject.org>, 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>
Subject: Re: [PATCH 4/4] xen/arm: its: pre-initialize ITS quirks before LPI
 setup
Thread-Topic: [PATCH 4/4] xen/arm: its: pre-initialize ITS quirks before LPI
 setup
Thread-Index: AQHcvEPnDsMTi8ib6UWvK8EWGL+9fw==
Date: Thu, 2 Apr 2026 17:02:28 +0000
Message-ID: <87341dthwc.fsf@epam.com>
References: <cover.1774431310.git.mykola_kvach@epam.com>
	<a7732487959e777ff1de318cb28c588db69fbaa1.1774431311.git.mykola_kvach@epam.com>
In-Reply-To:
 <a7732487959e777ff1de318cb28c588db69fbaa1.1774431311.git.mykola_kvach@epam.com>
	(Mykola Kvach's message of "Wed, 25 Mar 2026 12:38:33 +0200")
Accept-Language: en-US
Content-Language: en-US
X-MS-Has-Attach:
X-MS-TNEF-Correlator:
authentication-results: dkim=none (message not signed)
 header.d=none;dmarc=none action=none header.from=epam.com;
x-ms-publictraffictype: Email
x-ms-traffictypediagnostic: DU5PR03MB10441:EE_|VI1PR0301MB6670:EE_
x-ms-office365-filtering-correlation-id: 1df2077f-3790-485c-f12e-08de90d99ee2
x-ms-exchange-senderadcheck: 1
x-ms-exchange-antispam-relay: 0
x-microsoft-antispam:
 BCL:0;ARA:13230040|376014|366016|1800799024|42112799006|38070700021|56012099003|18002099003|22082099003;
x-microsoft-antispam-message-info:
 LzaO6ryevKfHKaZGnlrNeUWCa9MGklQq7Cc5BK8Ek3cTKJBj9S/YLMxFpudbM5ux0MqBJxwCOQ0AxHyiwPXH/zqxpUKUHyg0XES86H36ovboYGu7CInCe98XnTPBod8aSEfJVaLJU+B62cgr3ha/sfhQW7ohsTmxuFW+KsiKO1qiO2buQV+Z14gEuCClVZE5Iby4n9L1LEkRwMpFgerzl1Dgs5GlCpvuznvEBswiKrzQeDHfaRcEeYOPutBWGNbKXmfzSMYESdUQlE3hjAVYq/Ne+nA0e11VV2vvtcsWGlr6Sp7sg9j+9eBnGpwLhhKRsUg/Vla4MPau3fj4FHW4hYiw2BpvBI3UhBPuOSFLuvkkF7FQ1UXUg9UxP5D/j939QIbI/h9ZHgVR8KiA2AAUXQuLgVru3QcZ+ar9sua4BNhlStA7zGuOAW0IHsTOxbcl1VCpGtHvqcTQgZTCxsGUc8YkHKZYDVlNJ6a8C9HUfCrIgMDOGVrP3OlJFUf9ifLrusZ9FwjPhFsiC38no6XY+2cfV0nhjfxjrKh6xeBC82SF7pAStKu4smv1dZJKKWTwwS90JEaElhqj09f739DP6RIIh7gCi5DqO4nQGVNdz1hU2NRwsoA4wZcdtzwKcSpFYjhkOk/VoUOZiASwH2bS7NOLTqcmfM0i4qrfxXrSL1bY0pxnszwcei19sHpyyW86kZXuGltsqVaPpHmx+fvX5LFNi01kq1BlpfC4i+bbxt46nCN1O4PRgFWWI0XfDmgbh1xCzjbuKgoO31t73WlzE61mqQPrzmXSfdUFxPZ2MKE=
x-forefront-antispam-report:
 CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:DU5PR03MB10441.eurprd03.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(376014)(366016)(1800799024)(42112799006)(38070700021)(56012099003)(18002099003)(22082099003);DIR:OUT;SFP:1102;
x-ms-exchange-antispam-messagedata-chunkcount: 1
x-ms-exchange-antispam-messagedata-0:
 =?iso-8859-1?Q?Boj6dahQ4982XwVuOmvmj2CW5f0CUhnSet5Xgodc52m0fwF8mIZpbzvtyf?=
 =?iso-8859-1?Q?QP4+DeGkPaWH/vs3JX0C7s9kF5M772aikpSsRVFe7TEqZEVhZIXKT/SLVe?=
 =?iso-8859-1?Q?70Xpvz/Q3h+5U+2MyDuk7e7VtVavauOGEArgGlR76M9PCJGoGYD9chyUVP?=
 =?iso-8859-1?Q?WiwF+V/DuSrR0HC6tIb6WZvzJtUVvdEC+U9/FZI8iCowH63/zTdmv5esn2?=
 =?iso-8859-1?Q?QA8ApNSSGOZsgPJ6h+QsChkrIurniLoorvpQ0gCVQEkzz2QzmOMB7Enl8B?=
 =?iso-8859-1?Q?BWneeFVn5Iov88V4Hs/7xUr1JKfiFDlKNAU+BHio7av8IdqU0fqUAWuOxM?=
 =?iso-8859-1?Q?pVWJbUeSThvywBLIYOvO4qSk1hGCtGjj2w8GROL5PEmH+1MDDbpswju2fV?=
 =?iso-8859-1?Q?8m8eOmF5O7yvYC0yS+Tvo03XbvGaE4ITcocic1Ytbqk7eJ0qrJzDS/dnlQ?=
 =?iso-8859-1?Q?r3d9e5I2Ru42BLArGyibjqqfE53vVbcwsnfytgPwaVT7RoK+l15n3AtgPK?=
 =?iso-8859-1?Q?UNup2JAcdKl6bz7xsi+nNT/iCshvqVOjx6DrzY9YhN26vqTtA3VkAbLNyc?=
 =?iso-8859-1?Q?4I5+/jvi9qil4miBtyDo6ppnC4vlzKpRPIiZqZF4caabmRq/gErKRawc+p?=
 =?iso-8859-1?Q?kT07P/qxZbSGp/5puceqqfIC9Wqe/hL3R68/7+LoFOApX5jYsaTbVR1f8+?=
 =?iso-8859-1?Q?qJv1N5j3jsutNPXZvpl9LtG1l982W3/Xkm5ZHu/CxvXnwY8hvIUArrueiN?=
 =?iso-8859-1?Q?74xUko+IujUFmgSCP9X2AVAt/eJ0IkWbXDsj6ZIl0YNRsdUcA5Fs7JgQTG?=
 =?iso-8859-1?Q?xAVrn/eRdg3dDHRlnoeVP/doSQ1NN0eylIavPXTonCdv3CiqXs7lW//wI0?=
 =?iso-8859-1?Q?I1t5rFsoFnj2CxlUL5meVbqgCI4mB1ozuKHZHCMUUJde04Z2J+wmeLy9L1?=
 =?iso-8859-1?Q?OFJnGYg5VxYn6S4ReR8EM648uPy9dABo9i+K+QJvn8idRJLWeqakV8A1Sg?=
 =?iso-8859-1?Q?/qqjkiKlv8Cw3RbNIDNcwEEmLrSdNlTr0YCRsDhbHPo7vlAGZc6BissHXa?=
 =?iso-8859-1?Q?dHM9uGeSImqDeXNZrqP2lmCkBcfEzNnq5rnxYsILy25+kCYE9ttzwa/0YI?=
 =?iso-8859-1?Q?xdvL/4KV9RHJvj6OpF64pQyU6X7ht4yDhDDl/Mph4J1v5Bu4GE1a7zb6BD?=
 =?iso-8859-1?Q?i5F471qb2I7YwRwtS9LXPxR3FQ5TW5uLA/sAoE5QAkY3kbsO4HpLKSykqs?=
 =?iso-8859-1?Q?UaULAnAVb3cDCg/4FRWv9/ZylfsiMqIZ2hFNnFYynoYPN9KCtEbTmVgUUb?=
 =?iso-8859-1?Q?ovV7mtK737DLgb3PASqR6b9Bda6+yQ1s3v6Yar841X8C2SzxvF9qt+R/io?=
 =?iso-8859-1?Q?Cx+orCLNtrdOtK8tf7wbDUTvOIcHRPjeYWP8T6WvQMhozwVo1miIIznDys?=
 =?iso-8859-1?Q?UVbQrmdztGXTvTIOIKtn3Tk6QVtCld+JRowNFlpurV5QFqbmGnSmuccNf2?=
 =?iso-8859-1?Q?cme9ojrohRwm7sEJKmZyB7vmm49+LY4ZHY/14YJbAHWm0Dlixg3eLYMLLh?=
 =?iso-8859-1?Q?1NxXaOJHo9PLneGBY8ppY/FIOzgPPFRrXeUuZY0X5FHSxfxGNCLIR04cji?=
 =?iso-8859-1?Q?aR9olxV+3wiQ3G5Sbcu5ueaU3eBWSYL5qabo57s7f/VgughR7g4akmq4tq?=
 =?iso-8859-1?Q?bxLJ/pOhb/ilBmh2i7b2LIpaG8o6YRaq9Pd+Vpnvz3jTIhdVfMQUrzCbLv?=
 =?iso-8859-1?Q?AHmSFRtT5R/6jAfZHAK2CD5xmvnlQEdvOS26ReEQt3IJzdMjqjdiSsrRpD?=
 =?iso-8859-1?Q?7vKTLTQFDk2audh2yEcvolkoygq8n9A=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: DU5PR03MB10441.eurprd03.prod.outlook.com
X-MS-Exchange-CrossTenant-Network-Message-Id: 1df2077f-3790-485c-f12e-08de90d99ee2
X-MS-Exchange-CrossTenant-originalarrivaltime: 02 Apr 2026 17:02:28.1109
 (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: Has+XzRvg8J0WDvKqmNyqoEpmY0I0tSXLLDf3hwSndm0kfa9U71/YG5U6q+bKi/e30F04CRt9jl5E2oljLJtvH83xH7ZQd4IRH9J9+62g4k=
X-MS-Exchange-Transport-CrossTenantHeadersStamped: VI1PR0301MB6670
X-purgate-ID: tlsNG-ebf023/1775149351-B031451B-6E1DB5E0/0/0
X-purgate-type: clean
X-purgate-size: 6190

Hi,

Mykola Kvach <xakep.amatop@gmail.com> writes:

> From: Mykola Kvach <mykola_kvach@epam.com>
>
> In the current initialization flow, gicv3_init() calls gicv3_dist_init()
> before gicv3_its_init().
>
> When LPIs are supported, gicv3_dist_init() calls
> gicv3_lpi_init_host_lpis(), which initializes host LPI state and allocate=
s
> the boot CPU pending table before ITS quirk flags are computed. Non-boot
> CPUs allocate their pending tables later from the CPU_UP_PREPARE notifier=
,
> while redistributor LPI programming happens separately in
> gicv3_lpi_init_rdist().
>
> This means the boot CPU LPI setup can observe default ITS memory attribut=
es
> before dma-noncoherent and other ITS quirks are applied.
>
> Introduce gicv3_its_preinit() and call it before gicv3_dist_init(). This
> keeps the actual ITS hardware initialization in gicv3_its_init(), but mov=
es
> ITS discovery, quirk validation and quirk flag setup early enough for the
> subsequent LPI initialization to use the correct attributes.

I must say that it was hard to review this patch, because it does more
description says.

>
> Signed-off-by: Mykola Kvach <mykola_kvach@epam.com>
> ---
> TODO: Think about separating Redistributor/LPI attributes from ITS.
> ---
>  xen/arch/arm/gic-v3-its.c             | 36 +++++++++++++++++----------
>  xen/arch/arm/gic-v3.c                 |  7 ++++++
>  xen/arch/arm/include/asm/gic_v3_its.h |  5 ++++
>  3 files changed, 35 insertions(+), 13 deletions(-)
>
> diff --git a/xen/arch/arm/gic-v3-its.c b/xen/arch/arm/gic-v3-its.c
> index ee432088cd..0251d91630 100644
> --- a/xen/arch/arm/gic-v3-its.c
> +++ b/xen/arch/arm/gic-v3-its.c
> @@ -63,6 +63,7 @@ struct its_quirk {
>      uint32_t flags;
>  };
> =20
> +/* TODO: Separate Redistributor/LPI attributes from ITS quirks. */
>  static uint32_t __ro_after_init its_quirk_flags;
> =20
>  static bool gicv3_its_match_quirk_gen4(const struct host_its *hw_its)
> @@ -148,9 +149,15 @@ static uint32_t gicv3_its_collect_quirks(const struc=
t host_its *hw_its,
>      return flags;
>  }
> =20
> -static void gicv3_its_enable_quirks(struct host_its *hw_its)
> +static void gicv3_its_enable_quirks(void)
>  {
>      const struct its_quirk *quirk;
> +    const struct host_its *hw_its;
> +
> +    if ( list_empty(&host_its_list) )
> +        return;
> +
> +    hw_its =3D list_first_entry(&host_its_list, struct host_its, entry);
> =20
>      its_quirk_flags =3D gicv3_its_collect_quirks(hw_its, &quirk);
> =20
> @@ -603,16 +610,10 @@ static int gicv3_its_init_single_its(struct host_it=
s *hw_its)
>      uint64_t reg;
>      int i, ret;
> =20
> -    hw_its->its_base =3D ioremap_nocache(hw_its->addr, hw_its->size);
> -    if ( !hw_its->its_base )
> -        return -ENOMEM;
> -
>      ret =3D gicv3_disable_its(hw_its);
>      if ( ret )
>          return ret;
> =20
> -    gicv3_its_enable_quirks(hw_its);
> -
>      reg =3D readq_relaxed(hw_its->its_base + GITS_TYPER);
>      hw_its->devid_bits =3D GITS_TYPER_DEVICE_ID_BITS(reg);
>      hw_its->evid_bits =3D GITS_TYPER_EVENT_ID_BITS(reg);
> @@ -1161,6 +1162,11 @@ static void add_to_host_its_list(paddr_t addr, pad=
dr_t size,
>      its_data->size =3D size;
>      its_data->dt_node =3D node;
> =20
> +    its_data->its_base =3D ioremap_nocache(its_data->addr, its_data->siz=
e);

It is very confusing that add_to_host_its_list() function ioremaps
ITS. It should not do this. Or at least renamed it to
map_and_add_to_host_its_list() or consider moving this to
gicv3_its_preinit(), maybe?

> +    if ( !its_data->its_base )
> +        panic("GICv3: Cannot map ITS frame: 0x%lx, 0x%lx\n",
> +            its_data->addr, its_data->size);
> +
>      printk("GICv3: Found ITS @0x%lx\n", addr);
> =20
>      list_add_tail(&its_data->entry, &host_its_list);
> @@ -1238,16 +1244,22 @@ static void gicv3_its_acpi_init(void)
> =20
>  #endif
> =20
> -int gicv3_its_init(void)
> +void __init gicv3_its_preinit(void)
>  {
> -    struct host_its *hw_its;
> -    int ret;
> -
>      if ( acpi_disabled )
>          gicv3_its_dt_init(dt_interrupt_controller);
>      else
>          gicv3_its_acpi_init();
> =20
> +    gicv3_its_validate_quirks();
> +    gicv3_its_enable_quirks();
> +}
> +
> +int gicv3_its_init(void)
> +{
> +    struct host_its *hw_its;
> +    int ret;
> +
>      list_for_each_entry(hw_its, &host_its_list, entry)
>      {
>          ret =3D gicv3_its_init_single_its(hw_its);
> @@ -1255,8 +1267,6 @@ int gicv3_its_init(void)
>              return ret;
>      }
> =20
> -    gicv3_its_validate_quirks();
> -
>      return 0;
>  }
> =20
> diff --git a/xen/arch/arm/gic-v3.c b/xen/arch/arm/gic-v3.c
> index bc07f97c16..6e44d23d64 100644
> --- a/xen/arch/arm/gic-v3.c
> +++ b/xen/arch/arm/gic-v3.c
> @@ -1974,6 +1974,13 @@ static int __init gicv3_init(void)
> =20
>      spin_lock(&gicv3.lock);
> =20
> +    if ( gic_dist_supports_lpis() )
> +        /*
> +         * Apply ITS quirks before gicv3_dist_init() sets up host LPIs,
> +         * so pending tables use the correct ITS memory attributes.
> +         */
> +        gicv3_its_preinit();
> +
>      gicv3_dist_init();
> =20
>      if ( gic_dist_supports_lpis() )
> diff --git a/xen/arch/arm/include/asm/gic_v3_its.h b/xen/arch/arm/include=
/asm/gic_v3_its.h
> index fc5a84892c..e1d7522ea5 100644
> --- a/xen/arch/arm/include/asm/gic_v3_its.h
> +++ b/xen/arch/arm/include/asm/gic_v3_its.h
> @@ -156,6 +156,7 @@ int gicv3_lpi_init_rdist(void __iomem * rdist_base);
> =20
>  /* Initialize the host structures for LPIs and the host ITSes. */
>  int gicv3_lpi_init_host_lpis(unsigned int host_lpi_bits);
> +void gicv3_its_preinit(void);
>  int gicv3_its_init(void);
> =20
>  /* Store the physical address and ID for each redistributor as read from=
 DT. */
> @@ -219,6 +220,10 @@ static inline int gicv3_its_deny_access(struct domai=
n *d)
>      return 0;
>  }
> =20
> +static inline void gicv3_its_preinit(void)
> +{
> +}
> +
>  static inline bool gicv3_its_host_has_its(void)
>  {
>      return false;

--=20
WBR, Volodymyr=


From xen-devel-bounces@lists.xenproject.org Thu Apr 02 18:38:54 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 02 Apr 2026 18:38:54 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1272334.1560048 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1w8MwC-0000Qv-BA; Thu, 02 Apr 2026 18:38:40 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1272334.1560048; Thu, 02 Apr 2026 18:38: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 1w8MwC-0000Qo-8V; Thu, 02 Apr 2026 18:38:40 +0000
Received: by outflank-mailman (input) for mailman id 1272334;
 Thu, 02 Apr 2026 18:38:39 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <Oleksandr_Tyshchenko@epam.com>) id 1w8MwA-0000Qa-PX
 for xen-devel@lists.xenproject.org; Thu, 02 Apr 2026 18:38:38 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1w8MwA-002vpY-5y
 for xen-devel@lists.xenproject.org; Thu, 02 Apr 2026 20:38:38 +0200
Received: from [10.42.69.9] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <Oleksandr_Tyshchenko@epam.com>)
 id 69ceb7ae-5cb7-0a2a0a5109dd-0a2a4509c00e-0
 for <xen-devel@lists.xenproject.org>; Thu, 02 Apr 2026 20:38:38 +0200
Received: from [52.101.83.140]
 (helo=GVXPR05CU001.outbound.protection.outlook.com)
 by tlsNG-bad1c0.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.0)
 (envelope-from <Oleksandr_Tyshchenko@epam.com>)
 id 69ceb7ad-bf79-0a2a45090019-3465538c3268-3
 for <xen-devel@lists.xenproject.org>; Thu, 02 Apr 2026 20:38:38 +0200
Received: from AM4PR03MB11152.eurprd03.prod.outlook.com
 (2603:10a6:20b:6cc::22) by PAVPR03MB9408.eurprd03.prod.outlook.com
 (2603:10a6:102:307::15) with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9769.15; Thu, 2 Apr
 2026 18:38:35 +0000
Received: from AM4PR03MB11152.eurprd03.prod.outlook.com
 ([fe80::bbbf:5b9b:1043:4510]) by AM4PR03MB11152.eurprd03.prod.outlook.com
 ([fe80::bbbf:5b9b:1043:4510%5]) with mapi id 15.20.9769.016; Thu, 2 Apr 2026
 18:38: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=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=W9gIPlxvCp1zTRpNxVpdIIv0hZ1WXGQ2nvOGc1MrtTF2jgq6qQpkf+CTt+1YvXtYAG+wOeiXmeEjSSYq6RoWXEPuy/qZ6iwLp3AIg17ZMXJXLvkn5lCAQ1AvxgEIykHKqNbHo2cl6DxlOJo14QacmNUxNEK4aCqmsjuOAXgiz+R25Wb7V8fXW/pVySNOW7Ag9nCIqeDcfCHyCAUGpZDjuenqiZAhQmVduoS3EQ3Zj7ZUHYaz9zFVcsB7I7NVL4O/h7921roJEdmZoXeP5T+xVLrqjKCZpD9ZrMwvy5m8Ydn29PxBuHeo5uc4O4oJwVnrhnuRFH0lGjgeF1eay5SJtg==
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com;
 s=arcselector10001;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1;
 bh=8yXz7rfI4PY70kRbzfvSDIjlUz3zdZiB6oYj3pBrM1E=;
 b=Qn5aB7yYin9znS1typM4QGLlnIVRnxJk9fslCN4irNDPOjqMVsMpdA4mYcRcpPZJNwGZ5BIz56+7iosJQkYx9FdhuhJ0QUTRppuZDYxL8JP6alouHeaDcCr9X+phGeH2Kmp1aKeIpit0n3fKgUVmHz5iha++NFsWpjYHSaKMz0007eCsuTm9NJNv6seu3ZgzenyTPCY7DLQtJHbIobOzM7uvd4y28ew9fOiU77okN9lHNuUGvZaFvJyVYInFgJL0N9PtwynEemPAAb0oZI+HH7b/jouFjpGPKPINgA+BFva8NMq/EkwaG1ysz1AG4uif5Fg0iObb+8ulJnKDzcUEAA==
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=8yXz7rfI4PY70kRbzfvSDIjlUz3zdZiB6oYj3pBrM1E=;
 b=HJZjQlZinVrWadmtCHtqIDba4pKXx+aeAp+4IKeqrfKY7MbERwOZlC6S4tdyUi9i3z5EQw+JATRnzwQv2gc53uHTihlylN8xHn/cVm9pKQlKxqgBaQb11bIU8v9gFyeqNX1J/kPj9I0tsIQ7kstyePdH+J2o9uuBVn9t0GnvrYhnprpa7flvaGtJ3Wtc+b36m+s4XI4bTYCUU1OwEBskufZqG2TtwhY8HPrrKTsOOJT10tqxoI8tlL7tDPjYzMSHceyUEdyTYCZL2gq6aPmmEgV0Gfsfs0rjB7XthMfFiTBtVlY6d1Gmd2D7THfLO3XnTwwADXVyzwP5Mhl0m9zBhA==
From: Oleksandr Tyshchenko <Oleksandr_Tyshchenko@epam.com>
To: "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>, Ayan Kumar Halder <ayankuma@amd.com>
Subject: [PATCH V2] xen/device-tree: Fix off-by-one bounds check in
 make_memory_node()
Thread-Topic: [PATCH V2] xen/device-tree: Fix off-by-one bounds check in
 make_memory_node()
Thread-Index: AQHcws/qu0Bt5vsAHEqQEICE62xUmQ==
Date: Thu, 2 Apr 2026 18:38:35 +0000
Message-ID: <20260402183834.3660003-1-oleksandr_tyshchenko@epam.com>
Accept-Language: en-US, ru-RU
Content-Language: en-US
X-MS-Has-Attach:
X-MS-TNEF-Correlator:
authentication-results: dkim=none (message not signed)
 header.d=none;dmarc=none action=none header.from=epam.com;
x-ms-publictraffictype: Email
x-ms-traffictypediagnostic: AM4PR03MB11152:EE_|PAVPR03MB9408:EE_
x-ms-office365-filtering-correlation-id: 664bf726-6373-48e6-7918-08de90e70cad
x-ms-exchange-senderadcheck: 1
x-ms-exchange-antispam-relay: 0
x-microsoft-antispam:
 BCL:0;ARA:13230040|366016|1800799024|42112799006|376014|38070700021|56012099003|18002099003;
x-microsoft-antispam-message-info:
 025p32btwj6Pa9Ga/+IM9sLpqowj2IqS3RgadJn75NnzXnebwI7tgb2Ix/CJRtyQ5y5/vofN0WZAHXDxMAESfS0nrndBJs0ze4vHFYPRYQzmDVmHGOElMfBOuIy3FZYUG+Ro39zrZ6yK2OZdRYVk+ryy+d6IQ6CJt+Ghzt5P82ZCYHFcDGeuLpy6Es2kPijJWwM9d6ws+9CPwzZerHadrcl23ads+V5hDv+onOCVm9kmfJyjE1CdCii6BI2rToPN/OgA+dBjbfj1lU1tFD7jGnzBh5USIsjqU1Iz0EHUrdJZLVNkWToSb4Eujat8F1sAhLrmAxgIC6ej+sOIROjX2C3p5u/nGFZB/6z+F5dwmrp1Dm/rFzHS/ctZlJUzhALYyXPu7GXZ9zJuaHjaz+Kf4EvsHMFYR3Wo2iucvQYr0kWf6bY4O42QxBCqybdF1BDcTUdDFrp2sio+y+uuGO9B1wbT+sh+BhuSsrMytRzE2A+OPwWx/qm8B4cwrruo/R5Eclrl5o5+rXUVtjk8halrdejF5MmWKsjMGXY2Ogv2Rps8rJwH5qFzzbmJpNlkDeGW6S0/37fqDAGPvGj1rAIDF5A6O2TiUoAChpsa5bMHz4GqvKH6PQkFGWR2gohoDLToOyn/2P2fBtfIjojNGLDzuIqZY2DfCfL56mzj+Dqvb5Aecfct4wIyx10YVnDJSg0IoiYohF1IkEcISnpHUo6MDLK5gZWsmS0j/cbydgaRIYg3eDcAyMK6AhPvr0SmefXaewDbPFYwHB8U1m+Ppf1w2wr5X54Rj+d6VxPTDBfBNtI=
x-forefront-antispam-report:
 CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:AM4PR03MB11152.eurprd03.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(366016)(1800799024)(42112799006)(376014)(38070700021)(56012099003)(18002099003);DIR:OUT;SFP:1102;
x-ms-exchange-antispam-messagedata-chunkcount: 1
x-ms-exchange-antispam-messagedata-0:
 =?iso-8859-1?Q?WrJ56VkQCFUmTQH9aGnbiReplAGa4xxw7mZqKYJUy8mW2dgmqXpB5doQzS?=
 =?iso-8859-1?Q?fTDHTsQNwm0KrWbV6SwCO39477WMxRGGp+xUYmmiNEsJFjEc4a3+c8gpyc?=
 =?iso-8859-1?Q?NwZPxS6ZuKl1ym6SIkIvyL81dxnhajWVCpgY1XOfO55Cpu5GF/1daoFWJ2?=
 =?iso-8859-1?Q?2fqfZAVaGsZQ8aDCm3c8aQpiJiXtMayV4gtzMWYyLGQsr+GVzlmfUzyq38?=
 =?iso-8859-1?Q?LDqj5rfZsQiyDaneXSV3QaVBdizYwT7FPQ/AR9B2vi6ozWEEz5LPEyUDC2?=
 =?iso-8859-1?Q?TVfT8r5hNjl9v2eyxr82l8GkP9a5OtmTCHU+QeR2dCv0u7V0hv3r2K7Ti4?=
 =?iso-8859-1?Q?YtYY3w9QWqEiAsS+UVdkEJZdU4VG3Og8s5u8epgSGVScnpgAZfwy5FVpxw?=
 =?iso-8859-1?Q?EwBTeaqOTA7kRwjTCcJ5ccw2iXtBFJkqad/91qG59Kbm+PYZyFFKTktYmE?=
 =?iso-8859-1?Q?aok6XXq7fuV0nE4e+9ddAn0a3Qly/yJuJ0h8zutnjQ4og7BCw1SUlP9RO8?=
 =?iso-8859-1?Q?NJvWTZNFEfJWeT3Zh+4qL/NggTJAK5jv0u5pm9Aj8Qb1LG5VdADWWa3o1Z?=
 =?iso-8859-1?Q?odc+1aOk3olavkOKxQE4QHHf2lHYczJyjYSo5NS4+3KGB0zD4fMyIpT14P?=
 =?iso-8859-1?Q?QWVRFBNFDs10oVXkqpicXMwaDpZkhoP4KYcHj0WTSI6DP6bmUGe5qubAc9?=
 =?iso-8859-1?Q?Jp/KjXokwJMm66KhQ90JLjc1PDnwfUA6aPPnog5Q2KJmejnPOZG69oxLed?=
 =?iso-8859-1?Q?SZAS+EOFvbvcCn/Ockxk46Vnf+X7OED3Nyd7LCuiJGhcyiktAOO6f+33Od?=
 =?iso-8859-1?Q?MQTKwL/17lNfO75TqJ7866e6Jg7e+8/Qq1bP6AeDKhSXDo5lI07AhLx26H?=
 =?iso-8859-1?Q?DnBotQdEY8rhcTYPVKJgQTe40u6LpzK4+xNUr5bA16qkG8p5iDt693pys5?=
 =?iso-8859-1?Q?GiCnMkGkNbC7Z6V4Sjax46IbsZ8L6HygIGDtE9zszZCBTev0F4fG/purdQ?=
 =?iso-8859-1?Q?eo09ih8Ftr1P7w8u+dQSyytsebQMVJ5MLy2ZFGzhcIWzb6mRA+cn8A/Xkm?=
 =?iso-8859-1?Q?+RM4pc2ehyc6F2PKvx5gYQfeO9rzKhSumbd200Iz2RbJPnUnAOic3+5MSJ?=
 =?iso-8859-1?Q?9sdfg48IUCa83QHP62d2S99hQau8GWERjYuAFnKrMrJQKdBh4euH/NK02H?=
 =?iso-8859-1?Q?smlqbnHci4ZmiGNMrtSacEizOtHuFmiBpr6fMU4gIZukt6PHqi+EA+aYMZ?=
 =?iso-8859-1?Q?TViVCovRc5s4E6MAdPd9yjL3RZPyyJVemL4LR3gKiS4NrD/oRuGJrDxDWd?=
 =?iso-8859-1?Q?ghxEO+qygTjq/sqTBLNAhlmecKtfyasZsUE0vT3eGQsmlOvEg0vvbDMct9?=
 =?iso-8859-1?Q?Ukxy4HcT4qBKiK5CQmsXbQ1WmHV/8vda7oYhHbOiFoneb7YRM13X3bKpSW?=
 =?iso-8859-1?Q?mh3NUN6NN23gwxCrsInH1vqLKwNt+5E2GJsVrqldrnWTW2BwkL1AHeN7YO?=
 =?iso-8859-1?Q?dNmHixNr77kamUhDStjzQzYd2aI0a2ecauHtJrE4q7p3XvxZMziZnrUxh7?=
 =?iso-8859-1?Q?aPvjFb/Zv35TEriwW1/FuHTBehMQeRaMrg6MUC87jDslrQBcCykEUyiR3l?=
 =?iso-8859-1?Q?nYsV4OTIk0HEbhmrzIDkmerxIpAVQ2XcX1aK66ndmGcFvuHvekBuR+mIJN?=
 =?iso-8859-1?Q?JepyygjnF0FxnrqtZvhMkBzpwdDx/nwBvRoQZM2gVhkaWa3jsd+1NmuLiu?=
 =?iso-8859-1?Q?kPm0yzhl01AqjIKmg7J0dxnomNNbAYNKfAitiHbGWM6sl+AbTai2DXM9EC?=
 =?iso-8859-1?Q?vkRwf3hK5aFjfPEuVTrbCGExtjC4IJ8=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: AM4PR03MB11152.eurprd03.prod.outlook.com
X-MS-Exchange-CrossTenant-Network-Message-Id: 664bf726-6373-48e6-7918-08de90e70cad
X-MS-Exchange-CrossTenant-originalarrivaltime: 02 Apr 2026 18:38:35.7281
 (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: J1MM2j5L5EK1Kk9cHeC9CiPF/LRCykjsOmvA1LrBJyodECzHP5+de3BeH6J5cdTOaj7gvUk2EbY4l54S07F0J1aGzogoT6uBx81+kTEsnmU=
X-MS-Exchange-Transport-CrossTenantHeadersStamped: PAVPR03MB9408
X-purgate-ID: tlsNG-bad1c0/1775155118-2DD57152-E3D40AC0/0/0
X-purgate-type: clean
X-purgate-size: 2949

When building Xen with CONFIG_STATIC_SHM=3Dn, booting a hardware
domain with exactly NR_MEM_BANKS (256) reserved-memory regions
causes a panic:

(XEN) Xen BUG at common/device-tree/domain-build.c:497
(XEN) Xen call trace:
(XEN)    [<00000a0000289aa8>] make_memory_node+0x178/0x234 (PC)

This occurs due to an off-by-one error in the bounds checking of
the reg array in make_memory_node(). The check:
    BUG_ON(nr_cells >=3D ARRAY_SIZE(reg));
incorrectly triggers when the array is exactly full (i.e., when
nr_cells =3D=3D ARRAY_SIZE(reg)), preventing the 256th and final valid
memory region from being written.

When CONFIG_STATIC_SHM=3Dy, this bug is usually hidden because
DT_MEM_NODE_REG_RANGE_SIZE adds extra space for SHM banks.
This extra capacity prevents the array from reaching its
maximum limit while processing the 256th memory region.
However, if a domain is configured with exactly NR_MEM_BANKS
and NR_SHMEM_BANKS, the array will completely fill up and trigger
the same panic.

Fix this by changing the condition to strictly greater than (>).
Apply the exact same fix to shm_mem_node_fill_reg_range() to
prevent the same error.

Fixes: cd8015b634b0 ("ARM/dom0: Avoid using a variable length array in make=
_memory_node()")
Fixes: 7846f7699fea ("xen/arm: List static shared memory regions as /memory=
 nodes")
Signed-off-by: Oleksandr Tyshchenko <oleksandr_tyshchenko@epam.com>
Reviewed-by: Michal Orzel <michal.orzel@amd.com>
---
  V2:
   - slightly update commit desc (according to Michal's remark)
   - add Fixes tags
   - add R-b tag
---
---
 xen/common/device-tree/domain-build.c | 2 +-
 xen/common/device-tree/static-shmem.c | 2 +-
 2 files changed, 2 insertions(+), 2 deletions(-)

diff --git a/xen/common/device-tree/domain-build.c b/xen/common/device-tree=
/domain-build.c
index 6708c9dd66..540627b74e 100644
--- a/xen/common/device-tree/domain-build.c
+++ b/xen/common/device-tree/domain-build.c
@@ -494,7 +494,7 @@ int __init make_memory_node(const struct kernel_info *k=
info, int addrcells,
             continue;
=20
         nr_cells +=3D reg_size;
-        BUG_ON(nr_cells >=3D ARRAY_SIZE(reg));
+        BUG_ON(nr_cells > ARRAY_SIZE(reg));
         dt_child_set_range(&cells, addrcells, sizecells, start, size);
     }
=20
diff --git a/xen/common/device-tree/static-shmem.c b/xen/common/device-tree=
/static-shmem.c
index 79f23caa77..4c4cc1b123 100644
--- a/xen/common/device-tree/static-shmem.c
+++ b/xen/common/device-tree/static-shmem.c
@@ -838,7 +838,7 @@ void __init shm_mem_node_fill_reg_range(const struct ke=
rnel_info *kinfo,
         paddr_t size =3D mem->bank[i].size;
=20
         *nr_cells +=3D addrcells + sizecells;
-        BUG_ON(*nr_cells >=3D DT_MEM_NODE_REG_RANGE_SIZE);
+        BUG_ON(*nr_cells > DT_MEM_NODE_REG_RANGE_SIZE);
         dt_child_set_range(&cells, addrcells, sizecells, start, size);
     }
 }
--=20
2.34.1


From xen-devel-bounces@lists.xenproject.org Thu Apr 02 23:06:53 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 02 Apr 2026 23:06:53 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1272433.1560057 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1w8R7W-0005Lf-5z; Thu, 02 Apr 2026 23:06:38 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1272433.1560057; Thu, 02 Apr 2026 23:06: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 1w8R7W-0005LY-3M; Thu, 02 Apr 2026 23:06:38 +0000
Received: by outflank-mailman (input) for mailman id 1272433;
 Thu, 02 Apr 2026 23:06:37 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <marmarek@invisiblethingslab.com>) id 1w8R7U-0005LS-Lq
 for xen-devel@lists.xenproject.org; Thu, 02 Apr 2026 23:06:37 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1w8R7T-007pBR-07
 for xen-devel@lists.xenproject.org; Fri, 03 Apr 2026 01:06:35 +0200
Received: from [10.42.69.12] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <marmarek@invisiblethingslab.com>)
 id 69cef65d-2eae-0a2a0a5409dd-0a2a450cbe9a-46
 for <xen-devel@lists.xenproject.org>; Fri, 03 Apr 2026 01:06:34 +0200
Received: from [103.168.172.159] (helo=fhigh-a8-smtp.messagingengine.com)
 by tlsNG-d25034.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.0)
 (envelope-from <marmarek@invisiblethingslab.com>)
 id 69cef677-f40c-0a2a450c0019-67a8ac9fd733-3
 for <xen-devel@lists.xenproject.org>; Fri, 03 Apr 2026 01:06:33 +0200
Received: from phl-compute-06.internal (phl-compute-06.internal [10.202.2.46])
 by mailfhigh.phl.internal (Postfix) with ESMTP id 5D23D14003B3;
 Thu,  2 Apr 2026 19:06:31 -0400 (EDT)
Received: from phl-frontend-04 ([10.202.2.163])
 by phl-compute-06.internal (MEProxy); Thu, 02 Apr 2026 19:06:31 -0400
Received: by mail.messagingengine.com (Postfix) with ESMTPA; Thu,
 2 Apr 2026 19:06:30 -0400 (EDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
Authentication-Results: eu.smtp.expurgate.cloud; dkim=pass header.s=fm1 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=fm1; t=1775171191;
	 x=1775257591; bh=X+clZ5enQvBxtYJdPEKxn/+Re5Vq6l3RFjkF4cyvR4g=; b=
	ZESAzYbcrUvnFJKk/B9Uk5SjgMtqdNkonBA6XQDKuLd8ivKTAf5/04NnHW3h0kZO
	rLnWqloDCGPy1xKg6KZ3x+mMX4aekxBHPqFcfHPojIee1Lg50SPnCYROKzCRjx9w
	9tZxJNgMT589BD38l1zNnU7ocIuMqHn3ekPP0vAypn61RI+btDwdvRtLxftZ/g2l
	jZjkcJDLW3hfU/yu5Eo4uQC2aK3HsaP7nkYf3ecDjfOaD8IvtJq9yRBd1eUqc5Zg
	Tc5KFpj3ggag1MNJK+pYew9rdUpRxLPGrcXMaHygWCdgsCFleqci7S+rS6hyHLXe
	amEXj55otP36A2HMHS0SJQ==
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=
	1775171191; x=1775257591; bh=X+clZ5enQvBxtYJdPEKxn/+Re5Vq6l3RFjk
	F4cyvR4g=; b=P0uzHr9q/2Bhymle34GnK+JFsoN/tG8IUFkt2j8wa+SJft6ynlI
	/EcOx46MxfxYDY6Bs5o+CRfxn8lyjR9lYgQz3YRsMQjirUyX1IuJ6PJk8RIuK7FN
	hRoE8dYlMSDmwdlZqsh3wvV9KMkNIsY4R5z6XYa9MCZoA3FpHMiLyXVuiJuQW4fp
	z3krpLKtJ43L2lzdCKZewseukD196lW95uV3CfCUBRM3KkSkq4zhaEtP0ea8ntmh
	qEkS5NeFTWaBwVsibi+eVVxofpOIUA2W8k/zWghuzC4ELlIFQ4M8EKN+nH+7/QKU
	bNg0FYBRiEoPvjnswvMdCJxSrS0yv5L/vrQ==
X-ME-Sender: <xms:d_bOadJkBqNseM0tsNe3S4308IDJ4tUmPepspyGjtAEKQO03pBU7AA>
    <xme:d_bOafI4eQ57688lbF0gUOcO2vVLT8ZzSoOP_HJryuokR9DKoirtoId4oOT7yFG6b
    dy2DwbqWMAf75dQMNtmKmfpO9xtuBlSsbpj5Aq5bsB6moNlmuo>
X-ME-Received: <xmr:d_bOaTWhJ6Jf7WSV8T9W5rLh5gOsJx-uGB_yeNs2JiB3AeNGPG3hqMUI8KC2dSdRf4avdKXMaQ>
X-ME-Proxy-Cause: gggruggvucftvghtrhhoucdtuddrgeefhedrtddtgdejfeduucetufdoteggodetrfdotf
    fvucfrrhhofhhilhgvmecuhfgrshhtofgrihhlpdfurfetoffkrfgpnffqhgenuceurghi
    lhhouhhtmecufedttdenucesvcftvggtihhpihgvnhhtshculddquddttddmnecujfgurh
    epfffhvfevuffkfhggtggujgesghdtreertddtjeenucfhrhhomhepofgrrhgvkhcuofgr
    rhgtiiihkhhofihskhhiqdfikphrvggtkhhiuceomhgrrhhmrghrvghksehinhhvihhsih
    gslhgvthhhihhnghhslhgrsgdrtghomheqnecuggftrfgrthhtvghrnhepgfduleetfeev
    hfefheeiteeliefhjefhleduveetteekveettddvgeeuteefjedunecuvehluhhsthgvrh
    fuihiivgeptdenucfrrghrrghmpehmrghilhhfrhhomhepmhgrrhhmrghrvghksehinhhv
    ihhsihgslhgvthhhihhnghhslhgrsgdrtghomhdpnhgspghrtghpthhtohepvddpmhhoug
    gvpehsmhhtphhouhhtpdhrtghpthhtohepjhgsvghulhhitghhsehsuhhsvgdrtghomhdp
    rhgtphhtthhopeigvghnqdguvghvvghlsehlihhsthhsrdigvghnphhrohhjvggtthdroh
    hrgh
X-ME-Proxy: <xmx:d_bOaZiKa2CcwZwhm6QCoItOK3c9RqdyOeys80bMaTiaDI9HZIrk8Q>
    <xmx:d_bOaW8QNSoTOU3n1qUzeLhHdR5lGtwotW99aU-41l6DMY86nZf2bA>
    <xmx:d_bOabCkR6tQaeBYQOKnycDz4sqKHnw_UEYXtgv0Cwa5derhaT4Nrg>
    <xmx:d_bOabLxS5mVp0B7L18kwU19PEFN_Of3Vv86WCzFMRA0v8E9vPZzQw>
    <xmx:d_bOaVc3ZtTINPSGFpOS20xTq0cWer2kZMi6tSI5M8YJmfRWulWYNBKA>
Feedback-ID: i1568416f:Fastmail
Date: Fri, 3 Apr 2026 01:06:30 +0200
From: Marek =?utf-8?Q?Marczykowski-G=C3=B3recki?= <marmarek@invisiblethingslab.com>
To: Jan Beulich <jbeulich@suse.com>
Cc: xen-devel <xen-devel@lists.xenproject.org>
Subject: Re: IOMMU faults after S3
Message-ID: <ac72dp3yEHikJzw2@mail-itl>
References: <e8bbaae2-5cff-4549-9f27-fbbda7346f60@suse.com>
 <090b8b8f-141b-4a24-92eb-879c0a0c73e1@suse.com>
 <ac2nibFfvGm_7elv@mail-itl>
 <933a3e95-33d2-4e20-a4d5-2d8b20c2da7f@suse.com>
 <ac4kCq87SQSc6ddV@mail-itl>
 <aa6910f1-365a-4534-b229-9730b3aede02@suse.com>
 <ac44SVW1cPhKYFKU@mail-itl>
 <2caff339-4ce9-42ea-9b78-afeac42b6f0f@suse.com>
 <ac6Bg21hMLBRDNdm@mail-itl>
 <92e0151b-3fb1-4108-9788-f0fbac43512b@suse.com>
MIME-Version: 1.0
Content-Type: multipart/signed; micalg=pgp-sha256;
	protocol="application/pgp-signature"; boundary="fbsx/PxUsQ8mae8A"
Content-Disposition: inline
In-Reply-To: <92e0151b-3fb1-4108-9788-f0fbac43512b@suse.com>
X-purgate-ID: tlsNG-d25034/1775171194-80D5BA3D-E652C045/0/0
X-purgate-type: clean
X-purgate-size: 8514


--fbsx/PxUsQ8mae8A
Content-Type: text/plain; protected-headers=v1; charset=utf-8
Content-Disposition: inline
Content-Transfer-Encoding: quoted-printable
Date: Fri, 3 Apr 2026 01:06:30 +0200
From: Marek =?utf-8?Q?Marczykowski-G=C3=B3recki?= <marmarek@invisiblethingslab.com>
To: Jan Beulich <jbeulich@suse.com>
Cc: xen-devel <xen-devel@lists.xenproject.org>
Subject: Re: IOMMU faults after S3

On Thu, Apr 02, 2026 at 04:53:31PM +0200, Jan Beulich wrote:
> On 02.04.2026 16:47, Marek Marczykowski-G=C3=B3recki wrote:
> > On Thu, Apr 02, 2026 at 12:48:14PM +0200, Jan Beulich wrote:
> >> On 02.04.2026 11:35, Marek Marczykowski-G=C3=B3recki wrote:
> >>> On Thu, Apr 02, 2026 at 10:39:41AM +0200, Jan Beulich wrote:
> >>>> On 02.04.2026 10:08, Marek Marczykowski-G=C3=B3recki wrote:
> >>>>> The xl dmesg output (from MTL this time):
> >>>>>
> >>>>>     (XEN) [  123.477511] Entering ACPI S3 state.
> >>>>>     (XEN) [18446743903.571842] _disable_pit_irq:2649: using_pit: 0,=
 cpu_has_apic: 1
> >>>>>     (XEN) [18446743903.571856] _disable_pit_irq:2659: cpuidle_using=
_deep_cstate: 1, boot_cpu_has(X86_FEATURE_XEN_ARAT): 0
> >>>
> >>>> Hmm, but what you didn't log is whether __hpet_setup_msi_irq() actua=
lly
> >>>> succeeded everywhere. (And if it did, also logging HPET_Tn_ROUTE() v=
alues
> >>>> might be a good idea, if only to double check.)
> >>>
> >>> Updated output:
> >>>
> >>>     (XEN) [18446743899.720395] _disable_pit_irq:2649: using_pit: 0, c=
pu_has_apic: 1
> >>>     (XEN) [18446743899.720409] _disable_pit_irq:2659: cpuidle_using_d=
eep_cstate: 1, boot_cpu_has(X86_FEATURE_XEN_ARAT): 0
> >>>     (XEN) [18446743899.720420] _disable_pit_irq:2662: init: 0
> >>>     (XEN) [18446743899.720431] hpet_broadcast_resume:663: hpet_events=
: ffff83046bc1f080
> >>>     (XEN) [18446743899.720579] hpet_broadcast_resume:674: num_hpets_u=
sed: 8
> >>>     (XEN) [18446743899.720587] hpet_broadcast_resume:692: cfg: 0x1
> >>>     (XEN) [18446743899.720599] hpet_broadcast_resume:697: i:0, hpet_e=
vents[i].msi.irq: 122, hpet_events[i].flags: 0
> >>>     (XEN) [18446743899.720612] hpet_msi_write:283: iommu_intremap: 2 =
(iommu_intremap_off: 0), HPET_Tn_ROUTE(ch->idx): 0x110
> >>>     (XEN) [18446743899.720638] hpet_msi_write:287: iommu_update_ire_f=
rom_msi rc: 0
> >>
> >> So it succeeds, and the low half of HPET_Tn_ROUTE also looks plausible=
=2E The high
> >> half is, however, the address that the low half value is written to. I=
t's hard
> >> to imagine that it would be zero when the low half isn't, but it is ab=
out the
> >> last thing I can think of which could explain observed behavior. (Yet =
then, all
> >> of this is pretty meaningless; see below.)
> >>
> >>> And the current debug diff attached.
> >>
> >> Hmm, you log HPET_Tn_ROUTE _before_ our update. That's not very useful=
=2E You want
> >> to move that part of logging to the bottom of hpet_msi_write(), or may=
be to
> >> where you also log the per-channel cfg value in hpet_broadcast_resume(=
) (thus
> >> making the logging overall less verbose).
> >=20
> > This test is with the updated patch (attached) + your extra
> > calculate_host_policy() call and "no-arat" on cmdline:
>=20
> And IOMMU faults still occurring as before, I expect.
>=20
> Sadly you now log the low halves of HPET_Tn_ROUTE twice, while you don't =
log
> the high halves at all.

I was missing hpet_read32 there...

Updated:
(XEN) [  116.921573] Entering ACPI S3 state.
(XEN) [18446743895.088893] _disable_pit_irq:2649: using_pit: 0, cpu_has_api=
c: 1
(XEN) [18446743895.088907] _disable_pit_irq:2659: cpuidle_using_deep_cstate=
: 1, boot_cpu_has(X86_FEATURE_XEN_ARAT): 0
(XEN) [18446743895.088918] _disable_pit_irq:2662: init: 0
(XEN) [18446743895.088928] hpet_broadcast_resume:662: hpet_events: ffff8304=
6bc1f080
(XEN) [18446743895.089072] hpet_broadcast_resume:673: num_hpets_used: 8
(XEN) [18446743895.089081] hpet_broadcast_resume:691: cfg: 0x1
(XEN) [18446743895.089092] hpet_broadcast_resume:696: i:0, hpet_events[i].m=
si.irq: 122, hpet_events[i].flags: 0
(XEN) [18446743895.089122] hpet_msi_write:286: iommu_update_ire_from_msi rc=
: 0
(XEN) [18446743895.089132] hpet_broadcast_resume:700: i:0, __hpet_setup_msi=
_irq ret: 0
(XEN) [18446743895.089168] hpet_broadcast_resume:710: i:0, cfg: 0xc134, hpe=
t_read32(HPET_Tn_ROUTE(hpet_events[i].idx)): 0, hpet_read32(HPET_Tn_ROUTE(h=
pet_events[i].idx) + 4): 0xf18
(XEN) [18446743895.089180] hpet_broadcast_resume:696: i:1, hpet_events[i].m=
si.irq: 123, hpet_events[i].flags: 0
(XEN) [18446743895.089203] hpet_msi_write:286: iommu_update_ire_from_msi rc=
: 0
(XEN) [18446743895.089213] hpet_broadcast_resume:700: i:1, __hpet_setup_msi=
_irq ret: 0
(XEN) [18446743895.089242] hpet_broadcast_resume:710: i:1, cfg: 0xc104, hpe=
t_read32(HPET_Tn_ROUTE(hpet_events[i].idx)): 0, hpet_read32(HPET_Tn_ROUTE(h=
pet_events[i].idx) + 4): 0xf38
(XEN) [18446743895.089254] hpet_broadcast_resume:696: i:2, hpet_events[i].m=
si.irq: 124, hpet_events[i].flags: 0
(XEN) [18446743895.089278] hpet_msi_write:286: iommu_update_ire_from_msi rc=
: 0
(XEN) [18446743895.089288] hpet_broadcast_resume:700: i:2, __hpet_setup_msi=
_irq ret: 0
(XEN) [18446743895.089316] hpet_broadcast_resume:710: i:2, cfg: 0xc104, hpe=
t_read32(HPET_Tn_ROUTE(hpet_events[i].idx)): 0, hpet_read32(HPET_Tn_ROUTE(h=
pet_events[i].idx) + 4): 0xf58
(XEN) [18446743895.089327] hpet_broadcast_resume:696: i:3, hpet_events[i].m=
si.irq: 125, hpet_events[i].flags: 0
(XEN) [18446743895.089350] hpet_msi_write:286: iommu_update_ire_from_msi rc=
: 0
(XEN) [18446743895.089361] hpet_broadcast_resume:700: i:3, __hpet_setup_msi=
_irq ret: 0
(XEN) [18446743895.089390] hpet_broadcast_resume:710: i:3, cfg: 0xc104, hpe=
t_read32(HPET_Tn_ROUTE(hpet_events[i].idx)): 0, hpet_read32(HPET_Tn_ROUTE(h=
pet_events[i].idx) + 4): 0xf78
(XEN) [18446743895.089401] hpet_broadcast_resume:696: i:4, hpet_events[i].m=
si.irq: 126, hpet_events[i].flags: 0
(XEN) [18446743895.089425] hpet_msi_write:286: iommu_update_ire_from_msi rc=
: 0
(XEN) [18446743895.089436] hpet_broadcast_resume:700: i:4, __hpet_setup_msi=
_irq ret: 0
(XEN) [18446743895.089465] hpet_broadcast_resume:710: i:4, cfg: 0xc104, hpe=
t_read32(HPET_Tn_ROUTE(hpet_events[i].idx)): 0, hpet_read32(HPET_Tn_ROUTE(h=
pet_events[i].idx) + 4): 0xf98
(XEN) [18446743895.089476] hpet_broadcast_resume:696: i:5, hpet_events[i].m=
si.irq: 127, hpet_events[i].flags: 0
(XEN) [18446743895.089499] hpet_msi_write:286: iommu_update_ire_from_msi rc=
: 0
(XEN) [18446743895.089509] hpet_broadcast_resume:700: i:5, __hpet_setup_msi=
_irq ret: 0
(XEN) [18446743895.089540] hpet_broadcast_resume:710: i:5, cfg: 0xc104, hpe=
t_read32(HPET_Tn_ROUTE(hpet_events[i].idx)): 0, hpet_read32(HPET_Tn_ROUTE(h=
pet_events[i].idx) + 4): 0xfb8
(XEN) [18446743895.089551] hpet_broadcast_resume:696: i:6, hpet_events[i].m=
si.irq: 128, hpet_events[i].flags: 0
(XEN) [18446743895.089574] hpet_msi_write:286: iommu_update_ire_from_msi rc=
: 0
(XEN) [18446743895.089584] hpet_broadcast_resume:700: i:6, __hpet_setup_msi=
_irq ret: 0
(XEN) [18446743895.089622] hpet_broadcast_resume:710: i:6, cfg: 0xc104, hpe=
t_read32(HPET_Tn_ROUTE(hpet_events[i].idx)): 0, hpet_read32(HPET_Tn_ROUTE(h=
pet_events[i].idx) + 4): 0xfd8
(XEN) [18446743895.089633] hpet_broadcast_resume:696: i:7, hpet_events[i].m=
si.irq: 129, hpet_events[i].flags: 0
(XEN) [18446743895.089655] hpet_msi_write:286: iommu_update_ire_from_msi rc=
: 0
(XEN) [18446743895.089665] hpet_broadcast_resume:700: i:7, __hpet_setup_msi=
_irq ret: 0
(XEN) [18446743895.089702] hpet_broadcast_resume:710: i:7, cfg: 0xc104, hpe=
t_read32(HPET_Tn_ROUTE(hpet_events[i].idx)): 0, hpet_read32(HPET_Tn_ROUTE(h=
pet_events[i].idx) + 4): 0xff8




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

--fbsx/PxUsQ8mae8A
Content-Type: application/pgp-signature; name=signature.asc

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

iQEzBAEBCAAdFiEEhrpukzGPukRmQqkK24/THMrX1ywFAmnO9nYACgkQ24/THMrX
1yw4+ggAjeBgaIS4YoxfNLIVVP+1oVkX3F6I6XhD3x1yiZ/zciW6Cm1NxHRdiUVu
78pZSaK9adlOW5I6XQ2Dr02J152I1N12a8nWyYurUcbrKQzecJ70kKIPm/hCEszv
RCrrPreY1WoLrhsgxSXQV0txJ3R/gRfsELJEgOwK3aXZ6ZmiO8ZJchA1KDzb4lzS
u+Y/ypQ6PFXi2lc/EMDVItBT+guBaQs5ByS1Tw/P1+zM+ZmhFH9EUuGoL04gi4Lr
H48uFWzirwwTIwNgCVcf6SBHhsHDLfmLSzSM42bHfkpeXOTYH1JgSuzwGHEnfzAc
xXi5E3locUdzihMNYmMGFMxOs9YBdw==
=MpIb
-----END PGP SIGNATURE-----

--fbsx/PxUsQ8mae8A--


From xen-devel-bounces@lists.xenproject.org Fri Apr 03 06:03:28 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Fri, 03 Apr 2026 06:03:28 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1272575.1560070 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1w8Xcj-0002Ya-A9; Fri, 03 Apr 2026 06:03:17 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1272575.1560070; Fri, 03 Apr 2026 06:03: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 1w8Xcj-0002Xe-5y; Fri, 03 Apr 2026 06:03:17 +0000
Received: by outflank-mailman (input) for mailman id 1272575;
 Fri, 03 Apr 2026 05:33:55 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <pengpeng@iscas.ac.cn>) id 1w8XAJ-0007Zl-7U
 for xen-devel@lists.xenproject.org; Fri, 03 Apr 2026 05:33:55 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1w8XAI-00B7EO-Jt
 for xen-devel@lists.xenproject.org; Fri, 03 Apr 2026 07:33:54 +0200
Received: from [10.42.69.11] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <pengpeng@iscas.ac.cn>)
 id 69cf5134-bab6-0a2a0a5309dd-0a2a450badec-26
 for <xen-devel@lists.xenproject.org>; Fri, 03 Apr 2026 07:33:53 +0200
Received: from [159.226.251.81] (helo=cstnet.cn)
 by tlsNG-42698a.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.0)
 (envelope-from <pengpeng@iscas.ac.cn>)
 id 69cf513e-bca8-0a2a450b0019-9fe2fb5184e8-3
 for <xen-devel@lists.xenproject.org>; Fri, 03 Apr 2026 07:33:52 +0200
Received: from 0002-arm-xen.resend.eml (unknown [111.196.245.197])
 by APP-03 (Coremail) with SMTP id rQCowACHqeA9Uc9pjEK7DA--.32598S2;
 Fri, 03 Apr 2026 13:33:49 +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: Pengpeng Hou <pengpeng@iscas.ac.cn>
Date: Fri, 3 Apr 2026 10:42:09 +0800
Message-ID: <20260403151502.2-dt-arm-xen-resend-pengpeng@iscas.ac.cn>
To: Stefano Stabellini <sstabellini@kernel.org>
Cc: xen-devel@lists.xenproject.org, linux-arm-kernel@lists.infradead.org, linux-kernel@vger.kernel.org, pengpeng@iscas.ac.cn
Subject: [PATCH] ARM: xen: validate hypervisor compatible before parsing its
 version
X-CM-TRANSID:rQCowACHqeA9Uc9pjEK7DA--.32598S2
X-Coremail-Antispam: 1UD129KBjvJXoW7Zr4rtFWkCF4rJr1kZF1UKFg_yoW8Zw4fpF
	Zakr9avFWrt3WxWa4IyFyv9Fy5GF4kXrW2qFykZ3Wjyrnrtw1rXrWIvF1SvFn3ArW8W343
	ZrWjyFn5AF47X3DanT9S1TB71UUUUU7qnTZGkaVYY2UrUUUUjbIjqfuFe4nvWSU5nxnvy2
	9KBjDU0xBIdaVrnRJUUUkq14x267AKxVWUJVW8JwAFc2x0x2IEx4CE42xK8VAvwI8IcIk0
	rVWrJVCq3wAFIxvE14AKwVWUJVWUGwA2ocxC64kIII0Yj41l84x0c7CEw4AK67xGY2AK02
	1l84ACjcxK6xIIjxv20xvE14v26ryj6F1UM28EF7xvwVC0I7IYx2IY6xkF7I0E14v26r4j
	6F4UM28EF7xvwVC2z280aVAFwI0_GcCE3s1l84ACjcxK6I8E87Iv6xkF7I0E14v26rxl6s
	0DM2AIxVAIcxkEcVAq07x20xvEncxIr21l5I8CrVACY4xI64kE6c02F40Ex7xfMcIj6xII
	jxv20xvE14v26r106r15McIj6I8E87Iv67AKxVW8JVWxJwAm72CE4IkC6x0Yz7v_Jr0_Gr
	1lF7xvr2IY64vIr41lF7I21c0EjII2zVCS5cI20VAGYxC7MxkF7I0En4kS14v26r126r1D
	MxAIw28IcxkI7VAKI48JMxC20s026xCaFVCjc4AY6r1j6r4UMI8I3I0E5I8CrVAFwI0_Jr
	0_Jr4lx2IqxVCjr7xvwVAFwI0_JrI_JrWlx4CE17CEb7AF67AKxVWUAVWUtwCIc40Y0x0E
	wIxGrwCI42IY6xIIjxv20xvE14v26r1j6r1xMIIF0xvE2Ix0cI8IcVCY1x0267AKxVWUJV
	W8JwCI42IY6xAIw20EY4v20xvaj40_Jr0_JF4lIxAIcVC2z280aVAFwI0_Gr0_Cr1lIxAI
	cVC2z280aVCY1x0267AKxVW8JVW8JrUvcSsGvfC2KfnxnUUI43ZEXa7VUjG-e7UUUUU==
X-Originating-IP: [111.196.245.197]
X-CM-SenderInfo: pshqw1xhqjqxpvfd2hldfou0/
X-purgate-ID: tlsNG-42698a/1775194433-F47D42A1-6AE0A4CF/0/0
X-purgate-type: clean
X-purgate-size: 2060

fdt_find_hyper_node() reads the raw compatible property and then
derives hyper_node.version from a prefix match before later printing it
with %s. Flat DT properties are external boot input, and this path does
not prove that the compatible string is NUL-terminated within its
declared bounds.

Fetch the first compatible entry with fdt_stringlist_get() so malformed
unterminated properties are rejected before the version suffix is
parsed.

Signed-off-by: Pengpeng Hou <pengpeng@iscas.ac.cn>
---
 arch/arm/xen/enlighten.c | 12 +++++++-----
 1 file changed, 7 insertions(+), 5 deletions(-)

diff --git a/arch/arm/xen/enlighten.c b/arch/arm/xen/enlighten.c
index 4feed2c2498d..f69290a4c639 100644
--- a/arch/arm/xen/enlighten.c
+++ b/arch/arm/xen/enlighten.c
@@ -19,6 +19,7 @@
 #include <asm/efi.h>
 #include <linux/interrupt.h>
 #include <linux/irqreturn.h>
+#include <linux/libfdt.h>
 #include <linux/module.h>
 #include <linux/of.h>
 #include <linux/of_fdt.h>
@@ -218,8 +219,9 @@ static __initdata struct {
 static int __init fdt_find_hyper_node(unsigned long node, const char *uname,
 				      int depth, void *data)
 {
-	const void *s = NULL;
+	const char *s = NULL;
 	int len;
+	size_t prefix_len = strlen(hyper_node.prefix);
 
 	if (depth != 1 || strcmp(uname, "hypervisor") != 0)
 		return 0;
@@ -227,10 +229,10 @@ static int __init fdt_find_hyper_node(unsigned long node, const char *uname,
 	if (of_flat_dt_is_compatible(node, hyper_node.compat))
 		hyper_node.found = true;
 
-	s = of_get_flat_dt_prop(node, "compatible", &len);
-	if (strlen(hyper_node.prefix) + 3  < len &&
-	    !strncmp(hyper_node.prefix, s, strlen(hyper_node.prefix)))
-		hyper_node.version = s + strlen(hyper_node.prefix);
+	s = fdt_stringlist_get(initial_boot_params, node, "compatible", 0, &len);
+	if (s && len > prefix_len + 2 &&
+	    !strncmp(hyper_node.prefix, s, prefix_len))
+		hyper_node.version = s + prefix_len;
 
 	/*
 	 * Check if Xen supports EFI by checking whether there is the
-- 
2.50.1 (Apple Git-155)



From xen-devel-bounces@lists.xenproject.org Fri Apr 03 06:03:28 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Fri, 03 Apr 2026 06:03:28 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1272521.1560066 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1w8Xcj-0002Va-11; Fri, 03 Apr 2026 06:03:17 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1272521.1560066; Fri, 03 Apr 2026 06:03: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 1w8Xci-0002VT-Uf; Fri, 03 Apr 2026 06:03:16 +0000
Received: by outflank-mailman (input) for mailman id 1272521;
 Fri, 03 Apr 2026 02:50:03 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <pengpeng@iscas.ac.cn>) id 1w8Ubj-0005tH-D3
 for xen-devel@lists.xenproject.org; Fri, 03 Apr 2026 02:50:03 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1w8Ubi-009xNC-PV
 for xen-devel@lists.xenproject.org; Fri, 03 Apr 2026 04:50:02 +0200
Received: from [10.42.69.3] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <pengpeng@iscas.ac.cn>)
 id 69cf2a9c-2eae-0a2a0a5409dd-0a2a4503ac78-24
 for <xen-devel@lists.xenproject.org>; Fri, 03 Apr 2026 04:50:01 +0200
Received: from [159.226.251.81] (helo=cstnet.cn)
 by tlsNG-33051d.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.0)
 (envelope-from <pengpeng@iscas.ac.cn>)
 id 69cf2ad6-02b3-0a2a45030019-9fe2fb51aed2-3
 for <xen-devel@lists.xenproject.org>; Fri, 03 Apr 2026 04:50:00 +0200
Received: from 0002-arm-xen.eml (unknown [111.196.245.197])
 by APP-03 (Coremail) with SMTP id rQCowACXtt3UKs9pxlS4DA--.8142S2;
 Fri, 03 Apr 2026 10:49:56 +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
X-purgate-ID: tlsNG-33051d/1775184601-41311C9A-214F4CF7/0/0
X-purgate-type: clean
X-purgate-size: 3762
Message-Id: <E1w8Xcj-0002Va-11@lists.xenproject.org>
From: xen-devel-bounces@lists.xenproject.org
Date: Fri, 03 Apr 2026 06:03:17 +0000

>From beef0e250a8453d76f9c6fb530a61b8110d4bd53 Mon Sep 17 00:00:00 2001
From: Pengpeng Hou <pengpeng@iscas.ac.cn>
Date: Fri, 3 Apr 2026 10:42:09 +0800
Message-ID: <20260403111502.2-dt-arm-xen-pengpeng@iscas.ac.cn>
To: Stefano Stabellini <sstabellini@kernel.org>
Cc: xen-devel@lists.xenproject.org, linux-arm-kernel@lists.infradead.org, linux-kernel@vger.kernel.org, pengpeng@iscas.ac.cn
Subject: [PATCH] ARM: xen: validate hypervisor compatible before parsing its
 version
X-CM-TRANSID:rQCowACXtt3UKs9pxlS4DA--.8142S2
X-Coremail-Antispam: 1UD129KBjvJXoW7Zr4rtFWkCF4rJr1kZF1UKFg_yoW8Zw4fpF
	Zakr9avFWrt3WxWa4IyFyv9Fy5GF4kXrW2qFykZ3Wjyrnrtw1rXrWIvF1SvFn3ArW8W343
	ZrWjyFn5AF47X3DanT9S1TB71UUUUU7qnTZGkaVYY2UrUUUUjbIjqfuFe4nvWSU5nxnvy2
	9KBjDU0xBIdaVrnRJUUUkm14x267AKxVWUJVW8JwAFc2x0x2IEx4CE42xK8VAvwI8IcIk0
	rVWrJVCq3wAFIxvE14AKwVWUJVWUGwA2ocxC64kIII0Yj41l84x0c7CEw4AK67xGY2AK02
	1l84ACjcxK6xIIjxv20xvE14v26F1j6w1UM28EF7xvwVC0I7IYx2IY6xkF7I0E14v26F4j
	6r4UJwA2z4x0Y4vEx4A2jsIE14v26F4UJVW0owA2z4x0Y4vEx4A2jsIEc7CjxVAFwI0_Gc
	CE3s1le2I262IYc4CY6c8Ij28IcVAaY2xG8wAqx4xG64xvF2IEw4CE5I8CrVC2j2WlYx0E
	2Ix0cI8IcVAFwI0_Jrv_JF1lYx0Ex4A2jsIE14v26r1j6r4UMcvjeVCFs4IE7xkEbVWUJV
	W8JwACjcxG0xvEwIxGrwACjI8F5VA0II8E6IAqYI8I648v4I1lc7CjxVAaw2AFwI0_JF0_
	Jw1l42xK82IYc2Ij64vIr41l4I8I3I0E4IkC6x0Yz7v_Jr0_Gr1lx2IqxVAqx4xG67AKxV
	WUJVWUGwC20s026x8GjcxK67AKxVWUGVWUWwC2zVAF1VAY17CE14v26r126r1DMIIYrxkI
	7VAKI48JMIIF0xvE2Ix0cI8IcVAFwI0_Jr0_JF4lIxAIcVC0I7IYx2IY6xkF7I0E14v26r
	1j6r4UMIIF0xvE42xK8VAvwI8IcIk0rVWUJVWUCwCI42IY6I8E87Iv67AKxVWUJVW8JwCI
	42IY6I8E87Iv6xkF7I0E14v26r4j6r4UJbIYCTnIWIevJa73UjIFyTuYvjfU5oGQDUUUU
X-Originating-IP: [111.196.245.197]
X-CM-SenderInfo: pshqw1xhqjqxpvfd2hldfou0/

fdt_find_hyper_node() reads the raw compatible property and then
derives hyper_node.version from a prefix match before later printing it
with %s. Flat DT properties are external boot input, and this path does
not prove that the compatible string is NUL-terminated within its
declared bounds.

Fetch the first compatible entry with fdt_stringlist_get() so malformed
unterminated properties are rejected before the version suffix is
parsed.

Signed-off-by: Pengpeng Hou <pengpeng@iscas.ac.cn>
---
 arch/arm/xen/enlighten.c | 12 +++++++-----
 1 file changed, 7 insertions(+), 5 deletions(-)

diff --git a/arch/arm/xen/enlighten.c b/arch/arm/xen/enlighten.c
index 4feed2c2498d..f69290a4c639 100644
--- a/arch/arm/xen/enlighten.c
+++ b/arch/arm/xen/enlighten.c
@@ -19,6 +19,7 @@
 #include <asm/efi.h>
 #include <linux/interrupt.h>
 #include <linux/irqreturn.h>
+#include <linux/libfdt.h>
 #include <linux/module.h>
 #include <linux/of.h>
 #include <linux/of_fdt.h>
@@ -218,8 +219,9 @@ static __initdata struct {
 static int __init fdt_find_hyper_node(unsigned long node, const char *uname,
 				      int depth, void *data)
 {
-	const void *s = NULL;
+	const char *s = NULL;
 	int len;
+	size_t prefix_len = strlen(hyper_node.prefix);
 
 	if (depth != 1 || strcmp(uname, "hypervisor") != 0)
 		return 0;
@@ -227,10 +229,10 @@ static int __init fdt_find_hyper_node(unsigned long node, const char *uname,
 	if (of_flat_dt_is_compatible(node, hyper_node.compat))
 		hyper_node.found = true;
 
-	s = of_get_flat_dt_prop(node, "compatible", &len);
-	if (strlen(hyper_node.prefix) + 3  < len &&
-	    !strncmp(hyper_node.prefix, s, strlen(hyper_node.prefix)))
-		hyper_node.version = s + strlen(hyper_node.prefix);
+	s = fdt_stringlist_get(initial_boot_params, node, "compatible", 0, &len);
+	if (s && len > prefix_len + 2 &&
+	    !strncmp(hyper_node.prefix, s, prefix_len))
+		hyper_node.version = s + prefix_len;
 
 	/*
 	 * Check if Xen supports EFI by checking whether there is the
-- 
2.50.1 (Apple Git-155)



From xen-devel-bounces@lists.xenproject.org Fri Apr 03 08:54:57 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Fri, 03 Apr 2026 08:54:57 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1272690.1560105 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1w8aIg-0006Ft-91; Fri, 03 Apr 2026 08:54:46 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1272690.1560105; Fri, 03 Apr 2026 08:54: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 1w8aIg-0006Fm-6I; Fri, 03 Apr 2026 08:54:46 +0000
Received: by outflank-mailman (input) for mailman id 1272690;
 Fri, 03 Apr 2026 08:54:44 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <Stewart.Hildebrand@amd.com>) id 1w8aIe-0006Fg-6V
 for xen-devel@lists.xenproject.org; Fri, 03 Apr 2026 08:54:44 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1w8aId-007YVz-BS
 for xen-devel@lists.xenproject.org; Fri, 03 Apr 2026 10:54:43 +0200
Received: from [10.42.69.1] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <Stewart.Hildebrand@amd.com>)
 id 69cf803d-5cb7-0a2a0a5109dd-0a2a4501c6b6-14
 for <xen-devel@lists.xenproject.org>; Fri, 03 Apr 2026 10:54:42 +0200
Received: from [40.107.201.24]
 (helo=CH4PR04CU002.outbound.protection.outlook.com)
 by tlsNG-d62444.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.0)
 (envelope-from <Stewart.Hildebrand@amd.com>)
 id 69cf8051-6fc9-0a2a45010019-286bc918806a-3
 for <xen-devel@lists.xenproject.org>; Fri, 03 Apr 2026 10:54:42 +0200
Received: from PH7P220CA0061.NAMP220.PROD.OUTLOOK.COM (2603:10b6:510:32c::25)
 by MN0PR12MB5762.namprd12.prod.outlook.com (2603:10b6:208:375::12)
 with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9769.17; Fri, 3 Apr
 2026 08:54:37 +0000
Received: from MW1PEPF00016159.namprd21.prod.outlook.com
 (2603:10b6:510:32c:cafe::ae) by PH7P220CA0061.outlook.office365.com
 (2603:10b6:510:32c::25) with Microsoft SMTP Server (version=TLS1_3,
 cipher=TLS_AES_256_GCM_SHA384) id 15.20.9769.20 via Frontend Transport; Fri,
 3 Apr 2026 08:54:37 +0000
Received: from satlexmb08.amd.com (165.204.84.17) by
 MW1PEPF00016159.mail.protection.outlook.com (10.167.249.84) with Microsoft
 SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id
 15.20.9791.0 via Frontend Transport; Fri, 3 Apr 2026 08:54:36 +0000
Received: from SATLEXMB04.amd.com (10.181.40.145) by satlexmb08.amd.com
 (10.181.42.217) with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.2.2562.17; Fri, 3 Apr
 2026 03:54:36 -0500
Received: from satlexmb08.amd.com (10.181.42.217) by SATLEXMB04.amd.com
 (10.181.40.145) with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2507.39; Fri, 3 Apr
 2026 03:54:36 -0500
Received: from [172.24.72.131] (10.180.168.240) by satlexmb08.amd.com
 (10.181.42.217) with Microsoft SMTP Server id 15.2.2562.17 via Frontend
 Transport; Fri, 3 Apr 2026 03:54:35 -0500
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@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=wV+uT3gA4veXlDBeuaKpmHxs6qa0LV89yFzmCgz3n4GjBXTQQ0WuLhzEQ0UcMCxGRWq53itgQoLu/Nm4UtaRAVYYwnopsTrABadCTzj7HZcKuBDkYhOs60hze8755P80a0hQ+oEjOWoH5XPn6RCTDyJEQzK5MB2RUEg+P0KfdvXJuHYTrHrVLuDU1th5NOs+Dd+hWh+e3iZWujuTsfp/HCxd0fQkXEm584tfRJGlsunc4jd5yH4UX9wooBldBPCb4/8RO4XN75DhpaLRuGZ/4GJe+yrg3JjgL4/9bCIbBt1ChiFOjwHQXedydjrZg9bfe8i4O4sMyGT476SQHPbIFQ==
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com;
 s=arcselector10001;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1;
 bh=6pUPD6ERaLox44Hs8k1Jg3sa3tTqiLYmT0AJ6/LvpnM=;
 b=ahNtCifhCSqcVgRwbw5igtBj/2hz6hZbZ5NfPrWMLAS2noC9BcIu8rcCcbdxiw4thpW86wHoj/Bon/RHBxfLnSCZe7Z5Wyy96xt/WI5gQP+4/lRcUguIHfqRA7Yg23fE6wn+ZVoiIyXUtGX1+kN8ctiUZbPWtIh78CHzVz/Ug60lzAMsZNAQ4ms849d0/FpaWKfibW4Govp3+stvlK6PU+s80rBeZPi6oU0V778mUzwPbdq1RxMdR+z2mJQ4M2jJxVuPDglvTrmXPsiQrd7HKKjlHzKu6z29febfUFnSRzVECGlft9BSkWvzQP8MYlW6B7cv1TYO5qSCtAHfrBuCtw==
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=6pUPD6ERaLox44Hs8k1Jg3sa3tTqiLYmT0AJ6/LvpnM=;
 b=MDIPul3+5BkdjsO4liiSuZCzLuEiGCE6Sgl1xE2JVAJ+CA+a8BhfBN0j34g1pZ5gT69X1GQKPwQvhkzYgsOfuGMi22ytstbyAOjfi7nhUBo7CiUj0p0W+Z0A+R8sVRCbj+sJoNxWS1kBbnOqZ1gwz0ZoLO3Q6xjHjVXyee3GPd0=
X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 165.204.84.17)
 smtp.mailfrom=amd.com; dkim=none (message not signed)
 header.d=none;dmarc=pass action=none header.from=amd.com;
Received-SPF: Pass (protection.outlook.com: domain of amd.com designates
 165.204.84.17 as permitted sender) receiver=protection.outlook.com;
 client-ip=165.204.84.17; helo=satlexmb08.amd.com; pr=C
Message-ID: <fa04f9e1-bc9e-4b34-84f4-dc7ca8999eb3@amd.com>
Date: Fri, 3 Apr 2026 04:47:22 -0400
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH v3] arinc653: don't assume Dom0 is the control domain
To: Jan Beulich <jbeulich@suse.com>, =?UTF-8?B?SsO8cmdlbiBHcm/Dnw==?=
	<jgross@suse.com>
CC: Nathan Studer <nathan.studer@dornerworks.com>, Stewart Hildebrand
	<stewart@stew.dk>, "xen-devel@lists.xenproject.org"
	<xen-devel@lists.xenproject.org>
References: <89d17a24-0a1f-4f3f-ac2f-f3701a8d78dd@suse.com>
 <4a4c011e-9666-4416-be1b-33d1dcad5afe@suse.com>
 <73e51afc-ae7c-4d08-9054-75dab660bf42@suse.com>
 <ca934061-f3e2-4511-bdad-465c4f2d0de1@suse.com>
Content-Language: en-US
From: Stewart Hildebrand <stewart.hildebrand@amd.com>
In-Reply-To: <ca934061-f3e2-4511-bdad-465c4f2d0de1@suse.com>
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: 8bit
Received-SPF: None (SATLEXMB04.amd.com: stewart.hildebrand@amd.com does not
 designate permitted sender hosts)
X-EOPAttributedMessage: 0
X-MS-PublicTrafficType: Email
X-MS-TrafficTypeDiagnostic: MW1PEPF00016159:EE_|MN0PR12MB5762:EE_
X-MS-Office365-Filtering-Correlation-Id: 277b0599-881b-4467-111e-08de915ea24f
X-MS-Exchange-SenderADCheck: 1
X-MS-Exchange-AntiSpam-Relay: 0
X-Microsoft-Antispam:
	BCL:0;ARA:13230040|82310400026|376014|36860700016|1800799024|18002099003|56012099003|22082099003;
X-Microsoft-Antispam-Message-Info:
	ASNkt3Q4ZuMZ1sYzkmZhksFmSeYkCAdsLIiWnG5T2Vzuj4fa8tItYkQlg3rx13yBytwIs7n2o8tXIGTXlAAJJqR1YmrdKspgDTk+DNsMfEXEIwD0Cuop0IsfuUxg12QIn6GysYnjRDFEuivywjk/a7JzAA2MATwH5L86WBP+2s5PvEVo0AiynZlUeQRhWhELDu/KtibzMMilj8B4e92xOUsIgZrH29iSecvaLgo9jsej+KvDmgNrVK3oZK50zF3+EWSYVV2gprAnC6HAmzq6ltHDMasI2FrnAYECN5n1E/Lzd9UAGys/laKFoBMullg/4bAu1aQKK4OsM+a7Ixt88fDbvVINDRbnQ0DEhKdg2RrTf0P9aUrpK2toUJh5lqsgOCrYyyuZEpDSMWJrd/oIHxQm2PPztWa3RWkslGv51Gaugu95P26aUI6JbFLa7uzvAXjLVv+fbI2ITYs3XUtVoSdYFmSBKREg6m5pRjG26wSv1Vdk0KVDVZOS89KCWUHGhTG/xjxBpBfnmqYg0tdmRNGxJKUvhaFWfOugCzxFmnbf0MoH+RgCZ2nmVqP2yHSKELoeRB/XvBAgnoFPcYiVyIa0t3IGCheh4bQF1pXaofkY71CAC1sWyMN5wvvyUeOYoEMEQ4scfcaLC+WMtDkcvX4qvyvPMbZC8TQ4nwWquVE/5msVYSbPKUAbOkW/A1yABBgTL/ckSI6QPo3Vk5Wo4a6PTR1w5ENKy+XZgn+AknM=
X-Forefront-Antispam-Report:
	CIP:165.204.84.17;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:satlexmb08.amd.com;PTR:InfoDomainNonexistent;CAT:NONE;SFS:(13230040)(82310400026)(376014)(36860700016)(1800799024)(18002099003)(56012099003)(22082099003);DIR:OUT;SFP:1101;
X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1
X-MS-Exchange-AntiSpam-MessageData-0:
	vryGxbmzsLPt6iutfMC0oxnj37X2B4seVkhebo6fjFgJqe+GIjCxMY3oc1JKlX0AvTC0XL2sDmQOAnUv0MBcZiS0/Fw+whPjGJzjb7ubXi6etKlmBozPRz1dO3T3ayZcawnIu24zz+Bpj03b21K3b8o8/A+6j3ytnDquUAOCmlhWnumVTaYm0rJHI4EeMZyveTyMrCyKp9xgRPMLWe5ds6ZHSvhrcZK22+eY2elh+5vFHrv3CGMeR0cjZ3q1F71QHmCounBFJFXbau5VHtsjasAvR6mM4mT4Wt1Rhmk6eboODoXCIbidbfCSffvxsbNILErpu5SigHfeUR14gDbJxBpatW+q3MLWCZd5jzdQMU73FJmNeR/VSomYq/EXj+xdjafpzbCIilqhMYml+hlEN02IP1bbsqhWvc8dbYcIBa09RYeCwNwxGtSGTbEvos7E
X-OriginatorOrg: amd.com
X-MS-Exchange-CrossTenant-OriginalArrivalTime: 03 Apr 2026 08:54:36.8438
 (UTC)
X-MS-Exchange-CrossTenant-Network-Message-Id: 277b0599-881b-4467-111e-08de915ea24f
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:
	MW1PEPF00016159.namprd21.prod.outlook.com
X-MS-Exchange-CrossTenant-AuthAs: Anonymous
X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem
X-MS-Exchange-Transport-CrossTenantHeadersStamped: MN0PR12MB5762
X-purgate-ID: tlsNG-d62444/1775206482-B62E9185-E787EA1F/0/0
X-purgate-type: clean
X-purgate-size: 4143

On 4/1/26 09:03, Jan Beulich wrote:
> On 01.04.2026 14:57, Jürgen Groß wrote:
>> On 01.04.26 14:29, Jan Beulich wrote:
>>> Leaving aside highly disaggregated environments, the control domain is
>>> what will invoke XEN_SYSCTL_SCHEDOP_putinfo. Its vCPU-s therefore need to
>>> be able to run unconditionally, not those of the domain with ID 0 (which
>>> may not exist at all).
>>>
>>> Fixes: 9f0c658baedc ("arinc: add cpu-pool support to scheduler")
>>> Signed-off-by: Jan Beulich <jbeulich@suse.com>
>>> ---
>>> There being no "else" to the if(), what about other control domain vCPU-s?
>>
>> I guess this is a stale leftover. Doesn't matter for committing anyway.
>>
>>> ---
>>> v3: Don't mistakenly include the idle domain.
>>> v2: New.
>>>
>>> --- a/xen/common/sched/arinc653.c
>>> +++ b/xen/common/sched/arinc653.c
>>> @@ -411,10 +411,10 @@ a653sched_alloc_udata(const struct sched
>>>       spin_lock_irqsave(&sched_priv->lock, flags);
>>>   
>>>       /*
>>> -     * Add every one of dom0's units to the schedule, as long as there are
>>> -     * slots available.
>>> +     * Add every one of the control domain's units to the schedule, as long as
>>> +     * there are slots available.
>>>        */
>>> -    if ( unit->domain->domain_id == 0 )
>>> +    if ( is_control_domain(unit->domain) && !is_idle_domain(unit->domain) )
>>>       {
>>>           entry = sched_priv->num_schedule_entries;
>>>   
>>
>> Hmm, is it really the control domain only which wants to be scheduled initially?
>> I would think that at least the hardware domain and probably a Xenstore domain
>> would want to be included, too.
>>
>> In the end it might even be that other domains created via dom0less would want
>> to be able to run initially. They could be part of a mandatory infrastructure.
>> Why would they need to be created at boot if they are NOT important?
> 
> This part is easy to answer: Because in a dom0less setup you simply may have
> no toolstack at all. (At which point there may also be nothing to set a
> schedule, yes.)

This is a known limitation. In a dom0less/hyperlaunch scenario, as future work,
I would like to see the ability to configure the ARINC653 schedule in device
tree, which would likely extend the existing boot time cpu pool work.

>> The question is whether the arinc653 scheduler is really meant for such setups.
>> OTOH just modifying the test to:
>>
>>      if ( system_state < SYS_STATE_active &&
>>           unit->domain->domain_id < DOMID_FIRST_RESERVED )
>>
>> seems to be fine for catching all those cases.
>>
>> With or without this modification:
>>
>> Reviewed-by: Juergen Gross <jgross@suse.com>
> 
> Thanks, yet I'll have to leave to the maintainers to decide which form it
> should ultimately take. One remark: A restartable control domain wouldn't
> pass that conditional. Granted that's looking far into the future.

It may not be desirable to schedule domUs until the control domain has had a say
in the matter, considering that the default schedule is unlikely to contain the
desired minor frame runtimes. It's less clear whether to include hardware and
xenstore domains in the default schedule, though I'm leaning toward only
including the domain with ability to invoke XEN_SYSCTL_SCHEDOP_putinfo for now
(i.e. the control domain).

Hm, the suggested 'system_state < SYS_STATE_active' check is possibly a good
addition. This reinforces that the default schedule's purpose is merely to get a
system booting until a user-provided schedule can be installed. Without this
check, restarting the control domain could result in new entries being added
while old entries remain, possibly ending up with duplicates and/or exhausting
the schedule. However, the restarted domain would need to retain its uuid if it
expects to be scheduled after restart.

Lastly, we may consider restricting the default schedule to Pool-0, and
eventually we may want a mechanism to disable the default schedule altogether
(e.g. when boot time cpupools are in use), but I don't think it's necessary to
conflate those with the current patch.


From xen-devel-bounces@lists.xenproject.org Fri Apr 03 09:29:32 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Fri, 03 Apr 2026 09:29:32 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1272732.1560134 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1w8aqE-00028b-2q; Fri, 03 Apr 2026 09:29:26 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1272732.1560134; Fri, 03 Apr 2026 09:29: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 1w8aqD-00028U-WD; Fri, 03 Apr 2026 09:29:26 +0000
Received: by outflank-mailman (input) for mailman id 1272732;
 Fri, 03 Apr 2026 09:29:25 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <Oleksii_Moisieiev@epam.com>) id 1w8aqD-00028O-8p
 for xen-devel@lists.xenproject.org; Fri, 03 Apr 2026 09:29:25 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1w8aqC-008zKY-Ky
 for xen-devel@lists.xenproject.org; Fri, 03 Apr 2026 11:29:24 +0200
Received: from [10.42.69.3] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <Oleksii_Moisieiev@epam.com>)
 id 69cf885e-2eae-0a2a0a5409dd-0a2a4503ed66-16
 for <xen-devel@lists.xenproject.org>; Fri, 03 Apr 2026 11:29:24 +0200
Received: from [40.107.159.106]
 (helo=OSPPR02CU001.outbound.protection.outlook.com)
 by tlsNG-33051d.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.0)
 (envelope-from <Oleksii_Moisieiev@epam.com>)
 id 69cf8874-02b3-0a2a45030019-286b9f6a060f-3
 for <xen-devel@lists.xenproject.org>; Fri, 03 Apr 2026 11:29:24 +0200
Received: from DU5PR03MB10263.eurprd03.prod.outlook.com (2603:10a6:10:519::5)
 by AM9PR03MB7236.eurprd03.prod.outlook.com (2603:10a6:20b:260::7)
 with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9769.21; Fri, 3 Apr
 2026 09:29:22 +0000
Received: from DU5PR03MB10263.eurprd03.prod.outlook.com
 ([fe80::8c9e:b301:61c0:3908]) by DU5PR03MB10263.eurprd03.prod.outlook.com
 ([fe80::8c9e:b301:61c0:3908%5]) with mapi id 15.20.9769.020; Fri, 3 Apr 2026
 09:29: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=Tv52o/E/BWwJiHAyX6/kyAOn3JhU05z2KNfdXrQy+OwOJzXoxgSifUoY2GarTQTKQ4t5aZ8NeRi2vQz8rqi9aaBO7mP4cnbhma9aMNO9GbBy2aTwPpTVw1KQ1x1EJTfPIwfPKTv3ZNEy6giqcNgr/XT7CRXw/+xhjXWAACiQyROSgrdx1vSIpSnFajm36M2lDdIdHzZuN9VPPX6Tx1iIAAfRE2qSYHeqeqK1O0v56EJRdD2FHsgE67yarhjKoaNGVD2MZTFDjRJfRC0tunB0CGo78DbM8jFX8MCRwpIrMNW0BOwSGAcWiJH3Yy24hTyT5Ucu+g2jqUdmMfhWChNLeQ==
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com;
 s=arcselector10001;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1;
 bh=K9e2KZc+muJukT2Hv/BjeYVECVhK83W83VEOsdy6uUk=;
 b=IwePs3tf7Z9u0Wvr7YEcT5KxNaH87e50Wf11TFdzUfq8LDINskgL6QgWYV5zgUOaDrkWuMry2h/R1HWBYONW85UuGDeVmNKrslFls94pX5uuqwn2wcOpxpIyWexJ1ocQ4T6XPfVEkmAKYhzlaZKmT5N4foElT5+PPBE/pPrD47JEvSEqbXyB63jZPMm2Q7L3sZZb6gbGZjmS3HWgQ9v3El1QsVLc9PQplKZcaa/cRksJUrvMSpKyRB7Z9cB3XvLjghKpKWFG23dGqdCtgRsSGrewK2AjxeVi6K0n8fssW1AENCmB6ekSHHmOxQtYLxh9gxZ53+y6t2GypTpFadRx+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=K9e2KZc+muJukT2Hv/BjeYVECVhK83W83VEOsdy6uUk=;
 b=t7+GPiP/6qH8fjrmxuIOVlnYVxk3tR3dYvon2d5Zyf+eY2iNogeG7rM9f1O+5nf4vskQkeL7Qvk6DKkYkESU6ucLEKTaBLw5AFaUf5vaAi09ZZ2v+2RVOLUhJfouIo+qpzKEE5u8NyNQXcbYPwPCbYrqr01LzNyXnFo3k0AthAvBC2unmyp3mh0wsWAasTlvRLDCXJbKJ1rF9iBy2HM4Z8RB3JdNgAHC3rQE0CHohM3WHNz1ltfLPSiod+RMYlmaaeOyPI8zKkw6NBP5HVe4RFyHge1jUEiNo/UDy3xo0vIDKo1MLqMfzzhiD7NE7cMnywr6BeYwj5tpWbJrp4fa0g==
From: Oleksii Moisieiev <Oleksii_Moisieiev@epam.com>
To: "xen-devel@lists.xenproject.org" <xen-devel@lists.xenproject.org>
CC: Dario Faggioli <dfaggioli@suse.com>, George Dunlap <gwd@xenproject.org>,
	Juergen Gross <jgross@suse.com>, Meng Xu <mengxu@cis.upenn.edu>, Oleksii
 Moisieiev <Oleksii_Moisieiev@epam.com>
Subject: [PATCH v2] xen/sched: rtds: re-arm repl_timer after timer
 re-initialization
Thread-Topic: [PATCH v2] xen/sched: rtds: re-arm repl_timer after timer
 re-initialization
Thread-Index: AQHcw0xaLi1v6OicGUys1RGy4ug5LA==
Date: Fri, 3 Apr 2026 09:29:22 +0000
Message-ID:
 <548ea03cc3c3287b1f5dcd101b3c2990ebc08089.1775208527.git.oleksii_moisieiev@epam.com>
Accept-Language: en-US
Content-Language: en-US
X-MS-Has-Attach:
X-MS-TNEF-Correlator:
authentication-results: dkim=none (message not signed)
 header.d=none;dmarc=none action=none header.from=epam.com;
x-ms-publictraffictype: Email
x-ms-traffictypediagnostic: DU5PR03MB10263:EE_|AM9PR03MB7236:EE_
x-ms-office365-filtering-correlation-id: 256f5695-61d4-4dbc-a40a-08de91637d82
x-ms-exchange-senderadcheck: 1
x-ms-exchange-antispam-relay: 0
x-microsoft-antispam:
 BCL:0;ARA:13230040|366016|376014|1800799024|38070700021|18002099003|56012099003;
x-microsoft-antispam-message-info:
 gb7nMh7cU+F3wvqt2f4rjOWzmKHONTvq8yWv/sKpX6/WOLGsP5oARRcWaoHLHeg7UtwpOWD/HdwbAP8y4pYxl1kjBZe9QyicPZ4GZ2UWf8zZ4NRApORokOdbQPryrsh4xuu30/3F54fDSiH9RvNetnqVYEI3/HKbCUsSabVw13FEQUNiSND8VQ7Jc2bTU0pIcaxxJXb4GvnYYdylR5R4JIBdFay/HNaj7+kYnWknhSTdvLORHZ0sUIdWEoRb18ifoDLHnsLIQKaTVmEtetnd1DRgHK/Y/wzXvwFbyABmZjRCt0A+d6FM/YUy8yOf2MAsWjNEZZHE7a0EUqct7e5QlfSQw6qq/VMYgQqgH1YP9DVQQfHYRsjunr3oyCdoevoHCIZMkeo9wGeZCAbF8uczyBSUrmMcjWAl+0lEapx2/DqdiBL3Rgc4B1CELALfn4ckYKj0xmSAHPSnMcgNbKcwvdiklzJIrv6YVXyxGAdVkBzO6XCjFZMJpXyRxp686C6zbF6BwOF4UEdxvtnWZ/WbC8AxU71kxy6MOgDRvf4CjIWqPbCSOBLBFdLH7AvR3rL8nJgF16exxq98j5mi7YAczz+eNMYbvJQ9PLa4xjhjJvAvQGU090NUOD0a5YOfFKQgs7rftQtqAqhdiS142lTFkImoH7otIkUfWxMy8Ucg+0bEFPsK8YuDhqqpf83T4T9BHZPqE/6Fv6c5l7QlFZ4M+2SbYmfbeVZ3d0dwYf43fBQ0EjgxvBZwU1pmv7EPSXJxu7kXna4dZ2Z2LEy0F8J/V2Ymzxec9tNUCCLe3fPgI5w=
x-forefront-antispam-report:
 CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:DU5PR03MB10263.eurprd03.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(366016)(376014)(1800799024)(38070700021)(18002099003)(56012099003);DIR:OUT;SFP:1102;
x-ms-exchange-antispam-messagedata-chunkcount: 1
x-ms-exchange-antispam-messagedata-0:
 =?iso-8859-1?Q?1gAWRpxazIaSn9XhjBbHt8CIYzdwyP/sQrQuQX0Y8fTiKIwwZ+bQSLkHb+?=
 =?iso-8859-1?Q?1AdmXJzIfDjLVIZ512R0SvI7yAhaGXjg/q3cGk12AJdv5JinotfdQSixkl?=
 =?iso-8859-1?Q?OfQ5ziwwdLiWLlgjV1+su2kH1t2VDeomsNhBjQMAuUF+A7NB9+7CDjPHrk?=
 =?iso-8859-1?Q?Yh5QsX1f47/w8/8Z0qwqtVB6aQXxFUe8CTfT24aDUcEJnAn0kukTvVUHfE?=
 =?iso-8859-1?Q?tAf78XzQyYc8iEgkCPwyCzCXZYGt0tzlXuARbPLxUgDuK5XKHyIa5Pbu0e?=
 =?iso-8859-1?Q?C/fQdG2W7lvjQ0U/Vj0Tp/XQqPwzPRW/Op5+w3Nq6cveHolLPRlJrfZEKt?=
 =?iso-8859-1?Q?HwdrSYKGLMFP2N6+r43RQ6ievD8ZbALxSBwvIkiiH32Ol5/unAcI/wqaVC?=
 =?iso-8859-1?Q?eeDmIG/u3lItcJAaEqMKLjS3rioF3RdIn+EVqqsaht381IErbZvJNFgQca?=
 =?iso-8859-1?Q?X/xNu+XfLz3U6rA2g1BlDEDEZledLWSC+6suOO7sa0rgBydfYhgcGW6CPJ?=
 =?iso-8859-1?Q?SsuUQS5ued4Jtj3u6P4T5X5dDpF4Ojz/UUze3TnWvUkCKX7oqcdpB2de5q?=
 =?iso-8859-1?Q?Z3UkJPVZAPAcx1TwK7f8UiVvq9sOvr1lxuss/Qe3s4XCWxoj7+jx6fhGpW?=
 =?iso-8859-1?Q?fDghA9uF5MZGEmXWM5jFsqaF6CRhannyCu6CJbII3z8DCbeod8RRy/mXHW?=
 =?iso-8859-1?Q?gJ9SqhL+b1S6K8PbaP5p9PvUCpMYRePp0Y6Mj6/VHaQUqBJ26Qgz3pCIZ6?=
 =?iso-8859-1?Q?n/BPFp9b2c64J5SbWqjp0DHug1fq77vWhBg3SjQkw4A5etX94Z9RWM8z8U?=
 =?iso-8859-1?Q?ZqBR6TMH0EwbSzy2k/4TEn9Ob59LnjUrxdvpCgJT3bQ9UUt0pfcV0P9JuT?=
 =?iso-8859-1?Q?Rr2Ro81msB63OC/d7O1LbGDqdsDgLKm5wZZwOpOZUZ11sWdUzdkXLHfdox?=
 =?iso-8859-1?Q?PyuZRie8RKTK0W6iqJu23AxK0UFAK/C7fB/RJyv0naqXdbt/SLNh4VI1LC?=
 =?iso-8859-1?Q?YiiQ/bceHUDiVue3rxcJp+OkhKL/PMGT+SdtzFuk1mimpkBLejCZlHAN15?=
 =?iso-8859-1?Q?t7CjN3qeCBFYg494hWjMsLOOZXoGR27B8JhYMgLAMvmb96YU9t1jfhfO2I?=
 =?iso-8859-1?Q?zYtwit9TgRHkqZT2sAVgFg2zIv1f6DVC2NZxjDJfEWik/iXwRsJf4hM6ew?=
 =?iso-8859-1?Q?m8sqMqKAb9NKTlhwgVVwgObW0fJkeLgZqWlyB95IcClHWfztPb3k6F3dg6?=
 =?iso-8859-1?Q?Lq1TxtKbQXMrAuh9e6Od3P+jSmRV5WXgxenoLAvlsHeDfUkOVM+Ytbbhmf?=
 =?iso-8859-1?Q?ne/goxI6P4BB6PqljKvRb0dXsxL92vVlZoQahou9qos4cIUqTO/k3Bf+rQ?=
 =?iso-8859-1?Q?9XcoBNqWWv1QeMS/+EL78/+xMMClX5RMLaODguCFybPT/mascRPws0y7S+?=
 =?iso-8859-1?Q?Wx94cVlJ1Cjm5NHOEwcjlGBDwNHna6PO+pmo/QGwZEwC3X7yxuOpfCtAdk?=
 =?iso-8859-1?Q?pSPaFhCa8EM38vXS8yzHaboMdY0MGf3vM+WNyH9GbUuAmbIKEegQLWQ8Os?=
 =?iso-8859-1?Q?Z+q/S4WPgC4AxXeTz9cACSEB5yA1rOnirlX6xltILLeXOYZQFUAuCI4z/b?=
 =?iso-8859-1?Q?fT7TGbxwZKTzuoZzQl7DPD5gdJTcaMy0NeEYjPGe/H9wNDZn9XKQn6Ge7d?=
 =?iso-8859-1?Q?+c15ImzUFlMbMFr3GxkicIkLWV+192OXqdLQVMwrHbplANcP2klD9dHywd?=
 =?iso-8859-1?Q?7NAb3hp/Vzllw1NH/zapsDG09scSulqVErOGly52XiPiEYn4w/mhcYHyGB?=
 =?iso-8859-1?Q?z3598ujcbUxMKilZWjjMQlqGVNhd80U=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: DU5PR03MB10263.eurprd03.prod.outlook.com
X-MS-Exchange-CrossTenant-Network-Message-Id: 256f5695-61d4-4dbc-a40a-08de91637d82
X-MS-Exchange-CrossTenant-originalarrivaltime: 03 Apr 2026 09:29:22.6610
 (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: pJHEKfU//YA4XFzdNJyLnqX4KLMu5UjYwIh/8ozuEpoqGeR+4pVAp1JG1NZwnUEFz5mOn5+cjdnMzR/tS1HU8DIvYztYlianASNtGGFVx9Q=
X-MS-Exchange-Transport-CrossTenantHeadersStamped: AM9PR03MB7236
X-purgate-ID: tlsNG-33051d/1775208564-C9136C9A-C712BD37/0/0
X-purgate-type: clean
X-purgate-size: 1847

In RTDS, removing the last eligible pCPU can kill repl_timer.
When a pCPU is later re-added, rt_switch_sched() reinitializes the
timer object, but pending entries may already exist in replq.

Without re-arming from replq head, replenishment can remain inactive
until some unrelated event programs the timer again. This may stall
budget replenishment for non-extratime units.

Fix this by re-arming repl_timer in rt_switch_sched() immediately after
init_timer() when replq is non-empty, using the earliest pending
deadline.

This keeps behavior unchanged when replq is empty.

Signed-off-by: Oleksii Moisieiev <oleksii_moisieiev@epam.com>
---

Changes in v2:
- update commit description, remove unneeded paragraph

 xen/common/sched/rt.c | 9 +++++++++
 1 file changed, 9 insertions(+)

diff --git a/xen/common/sched/rt.c b/xen/common/sched/rt.c
index 7b1f64a779..59021e1110 100644
--- a/xen/common/sched/rt.c
+++ b/xen/common/sched/rt.c
@@ -741,8 +741,17 @@ rt_switch_sched(struct scheduler *new_ops, unsigned in=
t cpu,
     if ( prv->repl_timer.status =3D=3D TIMER_STATUS_invalid ||
          prv->repl_timer.status =3D=3D TIMER_STATUS_killed )
     {
+        struct list_head *replq =3D rt_replq(new_ops);
+
         init_timer(&prv->repl_timer, repl_timer_handler, (void *)new_ops, =
cpu);
         dprintk(XENLOG_DEBUG, "RTDS: timer initialized on cpu %u\n", cpu);
+
+        /*
+         * When re-adding CPUs after all RTDS CPUs were removed, replq may
+         * already contain pending replenishment events. Re-arm immediatel=
y.
+         */
+        if ( !list_empty(replq) )
+            set_timer(&prv->repl_timer, replq_elem(replq->next)->cur_deadl=
ine);
     }
=20
     sched_idle_unit(cpu)->priv =3D vdata;
--=20
2.43.0

base-commit: a7bf8ff218ca05eb3674fdfd2817f6cff471e96a=


From xen-devel-bounces@lists.xenproject.org Fri Apr 03 10:11:20 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Fri, 03 Apr 2026 10:11:20 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1272784.1560143 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1w8bUc-0008NQ-8u; Fri, 03 Apr 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 1272784.1560143; Fri, 03 Apr 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 1w8bUc-0008NJ-5W; Fri, 03 Apr 2026 10:11:10 +0000
Received: by outflank-mailman (input) for mailman id 1272784;
 Fri, 03 Apr 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 <roger.pau@citrix.com>) id 1w8bUa-0008ND-Au
 for xen-devel@lists.xenproject.org; Fri, 03 Apr 2026 10:11:08 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1w8bUZ-000oXX-Mk
 for xen-devel@lists.xenproject.org; Fri, 03 Apr 2026 12:11:07 +0200
Received: from [10.42.69.6] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <roger.pau@citrix.com>)
 id 69cf91bc-2eae-0a2a0a5409dd-0a2a4506ba5e-44
 for <xen-devel@lists.xenproject.org>; Fri, 03 Apr 2026 12:11:07 +0200
Received: from [40.93.195.52]
 (helo=SN4PR2101CU001.outbound.protection.outlook.com)
 by tlsNG-16d1c6.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.0)
 (envelope-from <roger.pau@citrix.com>)
 id 69cf923a-0df0-0a2a45060019-285dc334818c-3
 for <xen-devel@lists.xenproject.org>; Fri, 03 Apr 2026 12:11:07 +0200
Received: from CH7PR03MB7860.namprd03.prod.outlook.com (2603:10b6:610:24e::14)
 by LV9PR03MB8365.namprd03.prod.outlook.com (2603:10b6:408:368::6)
 with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9769.19; Fri, 3 Apr
 2026 10:11:04 +0000
Received: from CH7PR03MB7860.namprd03.prod.outlook.com
 ([fe80::f5ba:35df:1c9f:b343]) by CH7PR03MB7860.namprd03.prod.outlook.com
 ([fe80::f5ba:35df:1c9f:b343%4]) with mapi id 15.20.9769.014; Fri, 3 Apr 2026
 10:11: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=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=QzXJdjS6Q46QCYEgJbRIl1sYBfTOfCpPCD8UbYtwRxUFSarY7bthALAXdSNzIoSCadFqoLZcxjxJNkLL95jrA2vepfyqpiJCLys2WQ6dAvdkqmnnmo2Tthogb3HtY/+7zUvC1bp0qJLcaYKlhiwnCnmJK6YYa3kt58BHLrThRItm6Pcgs1Fb6b6CekYNliMAOlUwtI/zVLy9hs97A0VJUwftocgFXQlsIOQBnG4fakguz0uPQ5TZaoXbW/HmTRPVVEFbfCg+lL1H5zMTeRCBFBEyNSWDEPlnukQRKrzZbCmEn6uRDGfQtE813aSilYJ3ua64gAnxKb1Icluoaf8xew==
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com;
 s=arcselector10001;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1;
 bh=MIjkorNB9CPnV6O+GF6fe4Ge+rZOSD9pos/2Nuym3Z4=;
 b=gkmSFwUsKoyloJZ4r3IMv58hVfg7n3GRR+VLWZlv3J0Nd3R//7xeQmow6NZJSAycAh2vTqmcw8yt1+WvvY5frKBELF6Ccg+hl/aq2zHEfeVysLphh/udmnZu5i1mKH+tCGhH2pvpf7RJ00EHArCRJwcCw6TXG4moT/hS2CzjJpmloeJ1JTuLd8CU3SEJygeFhN2XebimIY8BvNFMUaIlSbvnaoM3EkiF4yWDojpzZExusXtuX5n7f5Et0XRYv3gGZA7g+Xu3DnCh/CjuEXltIvgBMNHUnVW5cgmHyw+Y4WM/PfeEs1HIqNMtpnibG1NRaqecK0BRJj+a4/NGyJ/JHg==
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=MIjkorNB9CPnV6O+GF6fe4Ge+rZOSD9pos/2Nuym3Z4=;
 b=GrAb3/4+T7AXm0/Ps91cspQo3UjX9tQ5sOHCjw8UoMstLrtN6NfIF+DrEtIrhQXvGMlTfJa6qz5zRx7E95/o42EqNlAxO8Dw/MbJsERFyyNTlvcNIpH0dAMYwD1AyG0jFePZRWpadEsfRsuC+NuIaUmVjsJgNPe0b9HX1FiZP7g=
Authentication-Results: dkim=none (message not signed)
 header.d=none;dmarc=none action=none header.from=citrix.com;
Date: Fri, 3 Apr 2026 12:11:00 +0200
From: Roger Pau =?utf-8?B?TW9ubsOp?= <roger.pau@citrix.com>
To: Frediano Ziglio <freddy77@gmail.com>
Cc: xen-devel@lists.xenproject.org,
	Frediano Ziglio <frediano.ziglio@cloud.com>,
	Jan Beulich <jbeulich@suse.com>,
	Andrew Cooper <andrew.cooper3@citrix.com>
Subject: Re: [PATCH v2] xen/x86: Check supported features even for PVH dom0
Message-ID: <ac-SNHWwML98cLYA@wifi-campus-l-10-3-197-236.u-ga.fr>
References: <20260402155512.80170-1-frediano.ziglio@cloud.com>
Content-Type: text/plain; charset=utf-8
Content-Disposition: inline
Content-Transfer-Encoding: 8bit
In-Reply-To: <20260402155512.80170-1-frediano.ziglio@cloud.com>
X-ClientProxiedBy: MR1P264CA0141.FRAP264.PROD.OUTLOOK.COM
 (2603:10a6:501:51::15) To CH7PR03MB7860.namprd03.prod.outlook.com
 (2603:10b6:610:24e::14)
MIME-Version: 1.0
X-MS-PublicTrafficType: Email
X-MS-TrafficTypeDiagnostic: CH7PR03MB7860:EE_|LV9PR03MB8365:EE_
X-MS-Office365-Filtering-Correlation-Id: d3906a63-819d-47d7-3340-08de91695070
X-MS-Exchange-SenderADCheck: 1
X-MS-Exchange-AntiSpam-Relay: 0
X-Microsoft-Antispam:
	BCL:0;ARA:13230040|366016|1800799024|376014|56012099003|22082099003|18002099003;
X-Microsoft-Antispam-Message-Info:
	tHaWS+vq99PxLebakcXJ1qV7g8ea0vUH89yAnK63J06qmE6ncwdOAB23ttkjL03DF7KQC0Myc5+0HrVEX6IOmMNaxd7W1lAq0bXPQcvk44/xEzggssgxcq1WvkU5E8FdtA1+tpVd1iOGnQpJZZUQ7+ublJlDWH9bvbeJu63hNpZx9cN3ZKV0ApGNkv/1n+hI9EWASk/3GtNLdhZNPHQP+31n2FRyvuhnCVGgxN8AdsLmhAu6JGGKiMrkrIPRQ06WBrXb3VrG10F1AQA6k88MPj9UVdfyXGfBIv/UIhTf170UZVBsjxGbFu/TIVpPt7yl+KvLs4XTUZmTQ1Acc2IN7IpEJAU68ITY6OoJQgkTsSdO5uoa87mb1SUTlcHRfLPFQP9g66IU/FMpYRkALimik2XE4V/U6hhCGBXfnFV8QtEU9rrv7iOHbnID1EnrrVwPZVIjod+dqdW0L0QYiBiODOZ2x8pscBj/phzxKZ7i6UXNhPfzkbRk1KcLdxMOmkSB1oyXgyAHDH2U1pDcwWF8fl3ZnGAtrLwDJuNwgKc0RwJ8m5MCE8PDZ8zWja1DGyiHGOW2gFuc0WRvizz3s8x1oRiXhu3kgXAbtVlH0NkLK8Luws5jZuKgBtyERSfnCeJzENLQ2UV/es4HgsZyaPYNmctTl/f8h0sHDL142CGwrJRd8nDxdAoquZNfJ2uQYjQvcKBfxDkhtXntI+bXK2qxlC++3J5Rea7cMKb9Qxhg/q4=
X-Forefront-Antispam-Report:
	CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:CH7PR03MB7860.namprd03.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(366016)(1800799024)(376014)(56012099003)(22082099003)(18002099003);DIR:OUT;SFP:1101;
X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1
X-MS-Exchange-AntiSpam-MessageData-0:
	=?utf-8?B?YWRncFMrWDN3QVlTdUN0dXNBMEFvbXROaTkwQ3ExSDlrbm1OWFJIMDVvR3dG?=
 =?utf-8?B?S0g4U2V1SkZBUGZCMzltN0NiZHZFemRhcXVLaXRzR215SExwQzc0MW5kNW1r?=
 =?utf-8?B?ZWJBY2VSRFgzZnZ5SGlCRjE5MTZzK2JhVUtFZ1EyM3MwN1o2MVNQTUxpazB0?=
 =?utf-8?B?TGx0amZNekNzWjNwSGtzNkUxeE15bzg3N0R2SmJSaUlBQzh5TTJwTTlnUkVO?=
 =?utf-8?B?RTJDUmxrYWdrTG9uaTA2WUpiaVRSM0F0WDdCUlJJUjhYM0tUNFUwZlI0SHhi?=
 =?utf-8?B?Uk1DVnU0ZmxjaExMbzRrYWVWVkVzNitLQlRrNkxOS3RYNWR3dzA0RjJxZWRm?=
 =?utf-8?B?UTVKWU9qZzJRblZ5aExBVHZUeUkwL1g0R1kxUEpNR29FTkNFRHRBbmpvTDk3?=
 =?utf-8?B?KzVPUGI2UnZOWDU1V2VpaGZBdGlmV0tkUlhjZTRQUzRYSkRlZ3lYUmdSVGto?=
 =?utf-8?B?dTZPeTZOZUpidlorRlMycmhPSy9XcVFEVkMyTDBXZXcwQmV5RENqRURibytj?=
 =?utf-8?B?TDF1ZDkzc3EzMW5vYkQvcFhoUkE0YkRkR3lCc1pqZk5jMFJZaXd3ZnRhU1k4?=
 =?utf-8?B?c3JSRHVLN2c4TVFHZnFscmVlYWgrdHNQQ21aMzI2bmszSHIrNElyR2NoMHpI?=
 =?utf-8?B?dW9ESHpxak5QMnBrNkVRTngwRnd2UkNGcTI3b3RQY0d2YzhUNlVTZ3IxYjVD?=
 =?utf-8?B?VUxudjMrdlVSRDRxL1NGVzRkL2pWcDZpK3QyWWkrS3VOcWlqZ1FpMHpveDZi?=
 =?utf-8?B?NkRWZE5Nejd4RS9ITWNnYzRyVXQ1UWY2dHc5QVVXMjJuT3ZBTEk3UEpiTTBZ?=
 =?utf-8?B?eDdvSm9JV003VEd6bjJ3eW9ONFV3VzlxRHQrNjlMWEN6cEd1T2E0TUlreFBm?=
 =?utf-8?B?Qy9BQ3BHQitraENGUHRwSFkrMUNNcHMrc0Y1WU1VbEhDZWtHSWYxYXF2YndB?=
 =?utf-8?B?bmJjUkNqb2VkSWRHdHlwcEZNWUVya25DcDUwamRNQ3BYbFI2S2pIMUVjQTlB?=
 =?utf-8?B?WVgxZW96bXNYVGQ3aHhra0NudEFsQVBxRmszb0hJQ3diMVNaRlN2dVlRK0tk?=
 =?utf-8?B?MjBzbHpRQ3BqRXNQMEhoaFBsMllrKzBMMlVSd2Mzdkc2ZzdtcGN4U1M4NUM1?=
 =?utf-8?B?MFRGS3ptNE9qWGxiRU5BRlFQSnZDSTQzTzMxV2hwUk5peTdqMnl5VVB0eG41?=
 =?utf-8?B?LzBMUUJUVndQQ0tBREU2NElVMmx1cXR4Q1ZzdkFqNnJXdUkwMkV0bHA5emxS?=
 =?utf-8?B?ZXNuNGJVcHk2U1BBbmxwQVhlditPaWwxOXJ5YWhialN6OVpNOC9mL3gxaUM5?=
 =?utf-8?B?TjVUcktldkNzWGxjekVJNVRKQk1ZK2ZuU1Z5MElFR3pheFVmTmdHV1N1ajRS?=
 =?utf-8?B?YXo4amdUUXAxRmIzcDJuWjJvVk9xWnM1VXZJVy9JS3ZGWXpkeDVWNHVyb2Z3?=
 =?utf-8?B?QVRUNTZWOUE1N2oya21OZjVlNzRnZjN0VTJuaElhbzhVZUlTa2pEMWhBaTRY?=
 =?utf-8?B?K0lTc0hvd2dxa1haaWlRNkJISFhEd0N5Q3FkVHd3YmhVSW1YNTZNUHYxbjJy?=
 =?utf-8?B?bzIxSCtvN3o5SFpEcHBEd1BQQTBYTENNUFM0dzVVNUtOcjBFRmVGUUt1dVVl?=
 =?utf-8?B?MmR5SEpjYUE0UG1pQ3d3dmNodUJXSGNjbGVzOWdjNlV0QStUbE5OK1ZJc0pl?=
 =?utf-8?B?aDZlUHZBY0tNRVlrZy9TTElZL2tUL2lJQ0M5bVZpcXBJKzI1dkNjd3IyR3dx?=
 =?utf-8?B?ek9OWVIxNzc2cjQ1Z09PMThOTVlKcmI2TnpZek1lUUcwalNLSGV3NVZZclJ0?=
 =?utf-8?B?bkY3S3ZKd0tFU1pOUElVbE9oYU5NdVBuU29memt3ekFwUzJoZkhISzlGakNq?=
 =?utf-8?B?MUZIZlBzaGwrZUJrNjhtTXJOVGVXait0U3llR1ppdkJOdDNxRGx4YytWUW13?=
 =?utf-8?B?U0ZrMkxabjA1SUJYUWFIWkVETzZVZDhsdzFGUmtBLzROZ0pJSUZKSW93cEJK?=
 =?utf-8?B?RDZCa2ZKaXFGWENwMmJqT0sremZxc1N4di9jM1lXVWFXVmtBcTRwbStPTVpM?=
 =?utf-8?B?bTEvM3pucHV5RTd4WXBROXQxYzNLaFBLa2wwTkVKZnFSemV0d0dGU25FL2RH?=
 =?utf-8?B?anVGaGZSci8wM0hwbnRSVjVwamQ0dHRIb2c4OFNHeDlPcUMxR2hZd2FIRVA2?=
 =?utf-8?B?WU44N1Y5K2xrTmdhNWNqRG54MkFuWFNhOEI3SzVYRTl5YVM5dGcySm83Nmdm?=
 =?utf-8?B?NmlmY0kzVFFaTmY2alZ0S0NzajNLZCtCeEZiVm9FQUw3OW5iNEw2dHZMY24x?=
 =?utf-8?B?Z3F1SEdFcXhBQnpuT2tBeEhlbkQ3emY5dzdKZkZnbm1QUmF4cmwrUT09?=
X-OriginatorOrg: citrix.com
X-MS-Exchange-CrossTenant-Network-Message-Id: d3906a63-819d-47d7-3340-08de91695070
X-MS-Exchange-CrossTenant-AuthSource: CH7PR03MB7860.namprd03.prod.outlook.com
X-MS-Exchange-CrossTenant-AuthAs: Internal
X-MS-Exchange-CrossTenant-OriginalArrivalTime: 03 Apr 2026 10:11:04.2552
 (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: Zb0H0mze0yusd+pQ61wrr2zYH+h8DWzfZ8kov5i8lkK01IrMLb+2GAk9HNXtbrPFnkQhDtZ7T3MfI2VHRQEP0g==
X-MS-Exchange-Transport-CrossTenantHeadersStamped: LV9PR03MB8365
X-purgate-ID: tlsNG-16d1c6/1775211067-5FF3D3D8-95598DC1/0/0
X-purgate-type: clean
X-purgate-size: 2494

On Thu, Apr 02, 2026 at 04:55:10PM +0100, Frediano Ziglio wrote:
> The supported features ELF notes was tested only if the dom0 was
> PV. Factor out a function to check ELF notes and reuse it even
> for PVH.
> 
> Signed-off-by: Frediano Ziglio <frediano.ziglio@cloud.com>
> --
> Changes since v1:
> - fix typo in title;
> - fix minor formatting issue;
> - use is_hardware_domain instead of checking is_pv_shim;
> - reduce indentation returning earlier;
> - return error instead of jumping to cleanup code.
> ---
>  xen/arch/x86/dom0_build.c             | 14 ++++++++++++++
>  xen/arch/x86/hvm/dom0_build.c         |  3 +++
>  xen/arch/x86/include/asm/dom0_build.h |  2 ++
>  xen/arch/x86/pv/dom0_build.c          | 10 ++--------
>  4 files changed, 21 insertions(+), 8 deletions(-)
> 
> diff --git a/xen/arch/x86/dom0_build.c b/xen/arch/x86/dom0_build.c
> index 864dd9e53e..a33ce77321 100644
> --- a/xen/arch/x86/dom0_build.c
> +++ b/xen/arch/x86/dom0_build.c
> @@ -320,6 +320,20 @@ unsigned long __init dom0_paging_pages(const struct domain *d,
>      return DIV_ROUND_UP(memkb, 1024) << (20 - PAGE_SHIFT);
>  }
>  
> +int __init dom0_check_parms(
> +    struct domain *d, const struct elf_dom_parms *parms)

d should be const also.

> +{
> +    if ( parms->elf_notes[XEN_ELFNOTE_SUPPORTED_FEATURES].type == XEN_ENT_NONE )
> +        return 0;
> +
> +    if ( is_hardware_domain(d) && !test_bit(XENFEAT_dom0, parms->f_supported) )
> +    {
> +        printk("Kernel does not support Dom0 operation\n");
> +        return -EINVAL;
> +    }
> +
> +    return 0;
> +}
>  
>  /*
>   * If allocation isn't specified, reserve 1/16th of available memory for
> diff --git a/xen/arch/x86/hvm/dom0_build.c b/xen/arch/x86/hvm/dom0_build.c
> index d69a83b089..f95a00acfd 100644
> --- a/xen/arch/x86/hvm/dom0_build.c
> +++ b/xen/arch/x86/hvm/dom0_build.c
> @@ -699,6 +699,9 @@ static int __init pvh_load_kernel(
>      if ( !check_and_adjust_load_address(d, &elf, &parms) )
>          return -ENOSPC;
>  
> +    if ( (rc = dom0_check_parms(d, &parms)) != 0 )
> +        return rc;

I would do the check ahead of check_and_adjust_load_address(), as then
we could avoid the load address adjustment if we detect earlier than
the dom0 feature is not present.  But that's just my taste.

I can adjust the const-ification of d on commit if there are no
further objections:

Reviewed-by: Roger Pau Monné <roger.pau@citrix.com>

Thanks, Roger.


From xen-devel-bounces@lists.xenproject.org Fri Apr 03 13:55:29 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Fri, 03 Apr 2026 13:55:29 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1272940.1560151 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1w8ezT-0008DS-H2; Fri, 03 Apr 2026 13:55:15 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1272940.1560151; Fri, 03 Apr 2026 13:55: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 1w8ezT-0008DL-Dv; Fri, 03 Apr 2026 13:55:15 +0000
Received: by outflank-mailman (input) for mailman id 1272940;
 Fri, 03 Apr 2026 13:55:14 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <marmarek@invisiblethingslab.com>) id 1w8ezS-0008DF-IB
 for xen-devel@lists.xenproject.org; Fri, 03 Apr 2026 13:55:14 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1w8ezR-008CrE-CZ
 for xen-devel@lists.xenproject.org; Fri, 03 Apr 2026 15:55:13 +0200
Received: from [10.42.69.4] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <marmarek@invisiblethingslab.com>)
 id 69cfc6b9-bab6-0a2a0a5309dd-0a2a4504c820-16
 for <xen-devel@lists.xenproject.org>; Fri, 03 Apr 2026 15:55:13 +0200
Received: from [103.168.172.152] (helo=fhigh-a1-smtp.messagingengine.com)
 by tlsNG-ebf023.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.0)
 (envelope-from <marmarek@invisiblethingslab.com>)
 id 69cfc6be-bb33-0a2a45040019-67a8ac9885b9-3
 for <xen-devel@lists.xenproject.org>; Fri, 03 Apr 2026 15:55:11 +0200
Received: from phl-compute-05.internal (phl-compute-05.internal [10.202.2.45])
 by mailfhigh.phl.internal (Postfix) with ESMTP id 99CF91400396;
 Fri,  3 Apr 2026 09:55:10 -0400 (EDT)
Received: from phl-frontend-04 ([10.202.2.163])
 by phl-compute-05.internal (MEProxy); Fri, 03 Apr 2026 09:55:10 -0400
Received: by mail.messagingengine.com (Postfix) with ESMTPA; Fri,
 3 Apr 2026 09:55:09 -0400 (EDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
Authentication-Results: eu.smtp.expurgate.cloud; dkim=pass header.s=fm1 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=fm1; t=1775224510;
	 x=1775310910; bh=vGoHzO6shWBU4GS9q1bK9VFcrxVyD7bmDd/q3PRgf4c=; b=
	nsVc+K66eHi1uG618fynDy8fZaGRti1+yYVHiBqMIGYvT5g+VW8lvHLDxvQ5Ienn
	YudjTbcZihJpHNs2mjnvtdnL8Qr7bzE5hIT+0OO0uAtMJbYacI2ww5GwBRaxulGy
	lIXgdUYxTBNGhGRaiTf1R/KCFkfLbiwd5rsUHv+ZxKG6zJpoDOmCCnLIp7hqHx12
	Yb6js1yzSunUPHod/iH8NuKPidg5OuxE3aoNXfCbRpMSUORu8vWKskZ27j5/v12P
	zvviwT0W9UGjfyLjdKfZaCDQv2FvE/Th34HFqq1LeO2/DeD4ymFoklyYq0a5PECx
	vAmStjCZzxHMrtOsYIacKw==
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=
	1775224510; x=1775310910; bh=vGoHzO6shWBU4GS9q1bK9VFcrxVyD7bmDd/
	q3PRgf4c=; b=MLWwX0aoe45KjWtgosT0Bh3FA5aUtkifeFt3Xlb6/EpAVWiJcXS
	IVE/onzga8GZNQC8mYDtNdkuX/sGHPcGUjz/1Pg1NEnGdHtzEpR0/9qaWN9wGaVN
	WpvnOvbXUzuoPaWrmqe/mVbiUTXzYExyOHY/NkoXZp1QpUSZu4k/a/YzTOv5oCzb
	/DnU6yABVTmQFECY5eOieyF8arjvKVOlgmq5JAaB6cIpGxmLemIaupeUfNSlakRo
	D7mCEnUqnz68n3HfKLrJ4RxuhHbsu1sUFzCS8XdBxf5SI2BflLaLrO8z4a/AQUb/
	mH3KcKCBfJtbF6MT1NjZk575HeDWh0Z+sqQ==
X-ME-Sender: <xms:vsbPaaZavNrjohpUDTpU_BbjMzm4MEI8zLTp_HE2ZJV0dOne4m4F3w>
    <xme:vsbPaUZ92kO4Frxdiwz_Sfi6NFCzpxpX2p7Gq2UEp2PqBmUpDx-FIbl-PV_s7yOjU
    9ngNtxA5SusRWpdf6xiIl9nK6yI-xHFGnQvIUJhcu2VX-n2bw>
X-ME-Received: <xmr:vsbPaZ9IBs93dWSVw9_JqG6GNID8ik5F6fh524XTW8HpBfRx8piLCL_4WOZJ8r8MFiSsvrgR6wwYLCtDOPZf>
X-ME-Proxy-Cause: gggruggvucftvghtrhhoucdtuddrgeefhedrtddtgdeludduucetufdoteggodetrfdotf
    fvucfrrhhofhhilhgvmecuhfgrshhtofgrihhlpdfurfetoffkrfgpnffqhgenuceurghi
    lhhouhhtmecufedttdenucesvcftvggtihhpihgvnhhtshculddquddttddmnecujfgurh
    epfffhvfevuffkfhggtggujgesghdtreertddtjeenucfhrhhomhepofgrrhgvkhcuofgr
    rhgtiiihkhhofihskhhiqdfikphrvggtkhhiuceomhgrrhhmrghrvghksehinhhvihhsih
    gslhgvthhhihhnghhslhgrsgdrtghomheqnecuggftrfgrthhtvghrnhepgfduleetfeev
    hfefheeiteeliefhjefhleduveetteekveettddvgeeuteefjedunecuvehluhhsthgvrh
    fuihiivgeptdenucfrrghrrghmpehmrghilhhfrhhomhepmhgrrhhmrghrvghksehinhhv
    ihhsihgslhgvthhhihhnghhslhgrsgdrtghomhdpnhgspghrtghpthhtohepgedpmhhoug
    gvpehsmhhtphhouhhtpdhrtghpthhtohepjhgsvghulhhitghhsehsuhhsvgdrtghomhdp
    rhgtphhtthhopeigvghnqdguvghvvghlsehlihhsthhsrdigvghnphhrohhjvggtthdroh
    hrghdprhgtphhtthhopehjghhrohhsshesshhushgvrdgtohhmpdhrtghpthhtoheprhho
    ghgvrhdrphgruhestghithhrihigrdgtohhm
X-ME-Proxy: <xmx:vsbPabjTn3hKrHYtDU__CfVUPQucLew1ldEBpSj8m5NRPveEf8tPkQ>
    <xmx:vsbPaRerJV9HDC2cV6xIzSK7BN48MVENZyV_gs4-0T2vr2n0M_6X7w>
    <xmx:vsbPaarQilSyIOIJVJYP-bawRQywpT-4cQy4AuAE4Gb8eKU8aP4jxw>
    <xmx:vsbPaeCnNgeAS1lWalBvzMatiXG94d8V311o4MeWqj7LJm33Dmnbxg>
    <xmx:vsbPaXWS6Yg1AwVuQ46wZclsSUUU90ZaBgEVxpECHzRCwMf8cM1EFIpz>
Feedback-ID: i1568416f:Fastmail
Date: Fri, 3 Apr 2026 15:55:07 +0200
From: Marek =?utf-8?Q?Marczykowski-G=C3=B3recki?= <marmarek@invisiblethingslab.com>
To: Jan Beulich <jbeulich@suse.com>
Cc: xen-devel <xen-devel@lists.xenproject.org>,
	=?utf-8?B?SsO8cmdlbiBHcm/Dnw==?= <jgross@suse.com>,
	Roger Pau =?utf-8?B?TW9ubsOp?= <roger.pau@citrix.com>
Subject: Re: Slow (higher scheduling latency?) system after S3 - regression
 4.17 -> 4.19 ?
Message-ID: <ac_Gu2lm4Jnoz7WN@mail-itl>
References: <aPzBO_eW8mQHM66u@mail-itl>
 <acQzzlXNDxNq885V@mail-itl>
 <29775afa-e17b-4c44-a2a8-4ef4bc7cdf0f@suse.com>
 <acUqOL232lp-Lw1v@mail-itl>
 <cbed767b-4ac4-4989-8778-43ff321ae977@suse.com>
 <acVWX8vkhZiFfonP@mail-itl>
 <88c65ec7-b7f7-4d8b-a453-d707440b43cb@suse.com>
 <acZ8ez4dmQay1JSw@mail-itl>
 <ac5l-HgbDRcVkiWb@mail-itl>
MIME-Version: 1.0
Content-Type: multipart/signed; micalg=pgp-sha256;
	protocol="application/pgp-signature"; boundary="IAFUchFxljARC2be"
Content-Disposition: inline
In-Reply-To: <ac5l-HgbDRcVkiWb@mail-itl>
X-purgate-ID: tlsNG-ebf023/1775224512-3212551B-8CF3F5C1/0/0
X-purgate-type: clean
X-purgate-size: 1836


--IAFUchFxljARC2be
Content-Type: text/plain; protected-headers=v1; charset=utf-8
Content-Disposition: inline
Content-Transfer-Encoding: quoted-printable
Date: Fri, 3 Apr 2026 15:55:07 +0200
From: Marek =?utf-8?Q?Marczykowski-G=C3=B3recki?= <marmarek@invisiblethingslab.com>
To: Jan Beulich <jbeulich@suse.com>
Cc: xen-devel <xen-devel@lists.xenproject.org>,
	=?utf-8?B?SsO8cmdlbiBHcm/Dnw==?= <jgross@suse.com>,
	Roger Pau =?utf-8?B?TW9ubsOp?= <roger.pau@citrix.com>
Subject: Re: Slow (higher scheduling latency?) system after S3 - regression
 4.17 -> 4.19 ?

On Thu, Apr 02, 2026 at 03:02:15PM +0200, Marek Marczykowski-G=C3=B3recki w=
rote:
> On Fri, Mar 27, 2026 at 01:47:55PM +0100, Marek Marczykowski-G=C3=B3recki=
 wrote:
> > Some further observation, this time regarding timers:
>=20
> In the meantime Roger suggested it might be about C-states. So, I just
> tried booting with max_cstate=3D0. I got this:

We had a design session on this issue, and managed to find (thanks Roger!)
that adding:

    tsc_mode=3D'always_emulate'

to the domU config fixes the issue. Now, the question is how to fix it
properly...

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

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

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

iQEzBAEBCAAdFiEEhrpukzGPukRmQqkK24/THMrX1ywFAmnPxrsACgkQ24/THMrX
1yxMjQf+ISAAxXFtNjrTNrWA/GXqU1GQjp3JY1Rcze1mkNkMkDtKcd7C4f8A4ing
o5uwsZJhHAjOxHqt3RN0RoWw1gb5q70aOe50sBmtZ7+AEQI9LRHHh3Ug2v6v6PS2
7QFN7PrBG6Nh4Q34YzMZ5koZwoJDUJCghGprhR8L+tP/dIgSrMDPIlK0+JcVrXRm
U5uRHG4XYGrRvRSYt0xw8a3zkN2fz2F1KZ51oud9eBacDZeR4YeTrWP0zZAepxP2
qCTnGJiSmu6TJ24kcgb3k0wPxSR+wGDMSdT5DIFzKL77RRMZMtGhEdI47ocwTExh
ZLwXbVvdkB46Y1iKzqTHEKrcDjBaiw==
=wCLO
-----END PGP SIGNATURE-----

--IAFUchFxljARC2be--


From xen-devel-bounces@lists.xenproject.org Fri Apr 03 18:51:28 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Fri, 03 Apr 2026 18:51:28 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1273254.1560194 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1w8jbq-00033D-Vu; Fri, 03 Apr 2026 18:51:10 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1273254.1560194; Fri, 03 Apr 2026 18:51: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 1w8jbq-000334-Qh; Fri, 03 Apr 2026 18:51:10 +0000
Received: by outflank-mailman (input) for mailman id 1273254;
 Fri, 03 Apr 2026 18:51:09 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <Stewart.Hildebrand@amd.com>) id 1w8jbp-00032y-Gf
 for xen-devel@lists.xenproject.org; Fri, 03 Apr 2026 18:51:09 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1w8jbo-00E4cm-PZ
 for xen-devel@lists.xenproject.org; Fri, 03 Apr 2026 20:51:08 +0200
Received: from [10.42.69.11] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <Stewart.Hildebrand@amd.com>)
 id 69d00bae-5cb7-0a2a0a5109dd-0a2a450ba402-46
 for <xen-devel@lists.xenproject.org>; Fri, 03 Apr 2026 20:51:08 +0200
Received: from [40.107.209.50]
 (helo=PH8PR06CU001.outbound.protection.outlook.com)
 by tlsNG-42698a.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.0)
 (envelope-from <Stewart.Hildebrand@amd.com>)
 id 69d00c1a-bca8-0a2a450b0019-286bd132ab92-3
 for <xen-devel@lists.xenproject.org>; Fri, 03 Apr 2026 20:51:08 +0200
Received: from SJ0PR03CA0067.namprd03.prod.outlook.com (2603:10b6:a03:331::12)
 by SAVPR12MB999143.namprd12.prod.outlook.com (2603:10b6:806:4e5::21)
 with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9769.16; Fri, 3 Apr
 2026 18:51:03 +0000
Received: from BY1PEPF0001AE16.namprd04.prod.outlook.com
 (2603:10b6:a03:331:cafe::b6) by SJ0PR03CA0067.outlook.office365.com
 (2603:10b6:a03:331::12) with Microsoft SMTP Server (version=TLS1_3,
 cipher=TLS_AES_256_GCM_SHA384) id 15.20.9769.20 via Frontend Transport; Fri,
 3 Apr 2026 18:51:03 +0000
Received: from satlexmb07.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.20.9769.17 via Frontend Transport; Fri, 3 Apr 2026 18:51:03 +0000
Received: from SATLEXMB03.amd.com (10.181.40.144) by satlexmb07.amd.com
 (10.181.42.216) with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.2.2562.17; Fri, 3 Apr
 2026 13:51:02 -0500
Received: from satlexmb08.amd.com (10.181.42.217) by SATLEXMB03.amd.com
 (10.181.40.144) with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2507.39; Fri, 3 Apr
 2026 13:51:02 -0500
Received: from [172.17.186.79] (10.180.168.240) by satlexmb08.amd.com
 (10.181.42.217) with Microsoft SMTP Server id 15.2.2562.17 via Frontend
 Transport; Fri, 3 Apr 2026 13:51:01 -0500
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@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=B3hbgRxyaBq5CBnIW9dhbEvXJkU5l5GsdUmWJu6RCpfkRC+RPHLFH7k9XytesAnK1WcsQwsfTgovCEQzBXLNqOV1baY5OEpK3EW9b4+lOMGBid4DEe1nYl9kdNeeZMYiATq4a2Q6+cfizHy0hc9rbIs0bk2neUeWc+i0Iu/6mcZ8loldBUwdv2u5VffsQ8CYZ+rrT1yv9W02CeRAS8/iga5T0SKvE73kjVfKOy5iv28Pcu2jJZYrpR1aV306qVf1kw2JpFu6wdP5VzOeOs4rONCYvlTp5yESh9VVVcx+JudHAvnG01qLCzotaLP18+CgUZsdgI/JZO4KAo5H7jS07w==
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com;
 s=arcselector10001;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1;
 bh=oC6lf+/IxzAXK7sLui9otpPRDv6pzf0mVrn8HUpJay0=;
 b=MIuMkyK0iSB6Z9njTlCsapLIwQTvSfGLwFrkbA5jcsCONNahr6ivmjkoz6IRzK8rl/jzp7q3LJ1wNutJn/kz0qeX4Uu2YW3GEMR7U1+4d4JhrcxS60hXKoSmpQ/jkwCouKOpczKka7XLNWxcD1ynCMECqr1q15BE2YYha8E/EpU2qTfCqwjOFyoT2sSb3hSsNHz3B3YfbK686Iqqn2jQzuYk8rvEV9N5v7S+jSK3kEfY9i/A+lQM3tVbsc3dIDi8Ue+RG7Oruhj433seNnegC+HI2clkTcMl+gDnflvQmawz+COSIZ+QCyzpjzMt3SRsUZzpQ2zbIOhQIKKIYKExDg==
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=oC6lf+/IxzAXK7sLui9otpPRDv6pzf0mVrn8HUpJay0=;
 b=LMtb+BfHy8fYtlAjtrewy4NeIPKQ8O9Ha3TAbBP0gvwvsAWcJuA2I/+OlI/dPMWPdo6HZGqGdDuX3wLtGSwxi6PsohGN9wDSSCHOSyBQHhO/+qlepziXKF2vrYt8WpKxPiCxyqFwDtISBrYhY3KGDK2oAAkyVK0XcV8PXYsBwiY=
X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 165.204.84.17)
 smtp.mailfrom=amd.com; dkim=none (message not signed)
 header.d=none;dmarc=pass action=none header.from=amd.com;
Received-SPF: Pass (protection.outlook.com: domain of amd.com designates
 165.204.84.17 as permitted sender) receiver=protection.outlook.com;
 client-ip=165.204.84.17; helo=satlexmb07.amd.com; pr=C
Message-ID: <746e808c-6219-4f84-bb53-a49a95ed4085@amd.com>
Date: Fri, 3 Apr 2026 14:51:01 -0400
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH v3 2/4] vpci: allow queueing of mapping operations
To: Mykyta Poturai <Mykyta_Poturai@epam.com>, "xen-devel@lists.xenproject.org"
	<xen-devel@lists.xenproject.org>
CC: =?UTF-8?Q?Roger_Pau_Monn=C3=A9?= <roger.pau@citrix.com>
References: <20260324030513.700217-1-stewart.hildebrand@amd.com>
 <20260324030513.700217-3-stewart.hildebrand@amd.com>
 <d792d3dc-a99c-4dc6-a3d0-13b9c2762299@epam.com>
Content-Language: en-US
From: Stewart Hildebrand <stewart.hildebrand@amd.com>
In-Reply-To: <d792d3dc-a99c-4dc6-a3d0-13b9c2762299@epam.com>
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: 7bit
Received-SPF: None (SATLEXMB03.amd.com: stewart.hildebrand@amd.com does not
 designate permitted sender hosts)
X-EOPAttributedMessage: 0
X-MS-PublicTrafficType: Email
X-MS-TrafficTypeDiagnostic: BY1PEPF0001AE16:EE_|SAVPR12MB999143:EE_
X-MS-Office365-Filtering-Correlation-Id: d44835ee-67ec-4494-7524-08de91b1f4ca
X-MS-Exchange-SenderADCheck: 1
X-MS-Exchange-AntiSpam-Relay: 0
X-Microsoft-Antispam:
	BCL:0;ARA:13230040|36860700016|376014|1800799024|82310400026|18002099003|56012099003|13003099007|22082099003;
X-Microsoft-Antispam-Message-Info:
	nzFG7FXLlxhowY6zb47tzay+J8pKAicys6bzWy/5QFJo9gxN94btv6xsNInedP/wsVi1nF8nznwcnOuifJEQ/jPq7AAEU8UhO9EmacQWAQEpO6ONFUAzH363M5/wFPgR4cs9Y3HYHEOgR1eJrx0xfyWw9x6247c9xebkvJfvxS/oL9mk8/9Cf76RICy78xBZYax60CyKyBlPwXnuY7tNMZ5FjglAg75yk1V/CTNmh1+WeaIbrAb60fmUeb/frsngSqdtouffV0yOjb19owBWOg0bcXZsrHJWZtQ19d830lW5z3hX0KTXCQ3EGKU1rZSAyvXyalB95MFXOLv4Wrd/sm78oK8FDYz+9+SAvVJVyMU3y+kyTFsG1wzb3O1ibbx4uWnrjegE1lRKy9yFsY7elHUuZ2xhQW9xOAXbVUQflclu1db/0uIIEYtwHDWH/RUxKwSUaLeJGZmTZW9P9iY399ygmqzP5oTbQolV7rsupUJ/X7Ra959PPnKBk0fQU4pVkeOHONDaKu5G3iFZuwo83D7FmUWnatAXcfVjMoDO6CJDDykon/KDe229x+0lYsWu6KO//mAbPPSffJ5YTnhjEYPrnpdSkxW9SkrCCSRpY6EwK0kGdawP9C00V1vbcDRfURbFO9Ky7UpLsMo1xMtz5so5zWwPVhZTdfLu6FEyrCU12Cwn6TT7SPoHxXrw8lFHCxVuoBxjc+N+dT0z8NG6AVq9rxJ0HR9hdvzcTZMTQjE=
X-Forefront-Antispam-Report:
	CIP:165.204.84.17;CTRY:US;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:satlexmb07.amd.com;PTR:InfoDomainNonexistent;CAT:NONE;SFS:(13230040)(36860700016)(376014)(1800799024)(82310400026)(18002099003)(56012099003)(13003099007)(22082099003);DIR:OUT;SFP:1101;
X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1
X-MS-Exchange-AntiSpam-MessageData-0:
	4yau+5MtKFQewfJYaYqbUIutXYgHCHzAUlHA12LYYEgNmBlvpMNc6lZx3qIJH5Fh8LBc9+dJKHb4hkliAhp7Kn6t/Bbb327cbv7/CTpda9+Us7N0EGeUxzX8QEDIrcAta8PUBMFsZPcBDsfzSAFv03MJmXFqtohvxD4gMN0KSmgzeviDKEhJMWjg7AFSmQxwt2mqJoSxkL671hzrdeLhGNK8uUioy+glS7OhEeRjBIg6RalzVnAa6MiMUoA1O91QvFtnN7XZa1c6gCMHAhfiNHaie9iZ/9Bl+/IeCL8s1oZNevSL4rk1tk92V2Zwf9PfDpblwdXplCOvoS31zC+bEfJyIFyUH+ndek4463+PbuyhAuEggJE1PbzIWdzI7/2NePfvFgWwaTNDYY0xbF4TitChod9heRGuMxTNIQ6mNtAIJn/lcgYI0CvSyIS7SryE
X-OriginatorOrg: amd.com
X-MS-Exchange-CrossTenant-OriginalArrivalTime: 03 Apr 2026 18:51:03.4617
 (UTC)
X-MS-Exchange-CrossTenant-Network-Message-Id: d44835ee-67ec-4494-7524-08de91b1f4ca
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:
	BY1PEPF0001AE16.namprd04.prod.outlook.com
X-MS-Exchange-CrossTenant-AuthAs: Anonymous
X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem
X-MS-Exchange-Transport-CrossTenantHeadersStamped: SAVPR12MB999143
X-purgate-ID: tlsNG-42698a/1775242268-F53CE2A1-837B41EB/0/0
X-purgate-type: clean
X-purgate-size: 2015

On 4/2/26 11:52, Mykyta Poturai wrote:
> On 3/24/26 05:04, Stewart Hildebrand wrote:
>> Introduce vPCI BAR mapping task queue. Store information necessary in an
>> array in struct vpci_vcpu to perform multiple p2m operations associated
>> with single device.
>>
>> This is preparatory work for further changes that need to perform
>> multiple unmap/map operations before returning to guest.
>>
>> At the moment, only a single slot is needed in the array. However, when
>> multiple operations are queued and pending, there is a check in
>> modify_bars() to skip BARs already in the requested state that is not
>> accurate. Remove this check.
>>
>> Signed-off-by: Stewart Hildebrand <stewart.hildebrand@amd.com>
>> ---
>> apply_map() and vpci_process_map_task() are very similar. Should we try
>> to combine them into a single function?
>>
>> v2->v3:
>> * base on ("vpci: Use pervcpu ranges for BAR mapping") from [1]
>> * rework with fixed array of map/unmap slots
>>
>> [1] https://lore.kernel.org/xen-devel/cover.1772806036.git.mykyta_poturai@epam.com/T/#t
>>
>> v1->v2:
>> * new patch
> 
> Hi everyone,
> 
> 
> Would it be possible to move back to a dynamically allocated number of 
> tasks? This would help with mapping SR-IOV virtual functions a lot. 
> @Stewart @Roger, what are your thoughts?

Yes, assuming each VF will need another queued map operation, and there could be
a lot of VFs, statically pre-allocating that much seems wasteful. Only the
control and/or hardware domains will queue a lot of operations, and only when
enabling SR-IOV. DomUs will only queue 1 operation (possibly 2 if we will allow
domU BAR writes with memory decoding enabled).

So I'll plan to switch back to dynamically allocated map tasks for v4.

> Alternatively, I can continue with an approach described in SR-IOV 
> series, where VFs are handled separately. I figured out how to return to 
> do_softirq after mapping each VF, so it should not block the CPU for too 
> long.
> 


From xen-devel-bounces@lists.xenproject.org Fri Apr 03 21:24:30 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Fri, 03 Apr 2026 21:24:30 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1273326.1560203 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1w8m01-0003lP-2v; Fri, 03 Apr 2026 21:24:17 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1273326.1560203; Fri, 03 Apr 2026 21:24: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 1w8m01-0003lI-0M; Fri, 03 Apr 2026 21:24:17 +0000
Received: by outflank-mailman (input) for mailman id 1273326;
 Fri, 03 Apr 2026 21:24:15 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <marmarek@invisiblethingslab.com>) id 1w8lzz-0003lA-RL
 for xen-devel@lists.xenproject.org; Fri, 03 Apr 2026 21:24:15 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1w8lzy-006Als-Ua
 for xen-devel@lists.xenproject.org; Fri, 03 Apr 2026 23:24:15 +0200
Received: from [10.42.69.7] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <marmarek@invisiblethingslab.com>)
 id 69d02fb5-bab6-0a2a0a5309dd-0a2a4507e826-30
 for <xen-devel@lists.xenproject.org>; Fri, 03 Apr 2026 23:24:14 +0200
Received: from [202.12.124.154] (helo=fhigh-b3-smtp.messagingengine.com)
 by tlsNG-ef75cf.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.0)
 (envelope-from <marmarek@invisiblethingslab.com>)
 id 69d02ffc-ba2d-0a2a45070019-ca0c7c9a97bf-3
 for <xen-devel@lists.xenproject.org>; Fri, 03 Apr 2026 23:24:13 +0200
Received: from phl-compute-06.internal (phl-compute-06.internal [10.202.2.46])
 by mailfhigh.stl.internal (Postfix) with ESMTP id 3151F7A01CB;
 Fri,  3 Apr 2026 17:24:12 -0400 (EDT)
Received: from phl-frontend-03 ([10.202.2.162])
 by phl-compute-06.internal (MEProxy); Fri, 03 Apr 2026 17:24:12 -0400
Received: by mail.messagingengine.com (Postfix) with ESMTPA; Fri,
 3 Apr 2026 17:24:09 -0400 (EDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
Authentication-Results: eu.smtp.expurgate.cloud; dkim=pass header.s=fm1 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=fm1; t=1775251451;
	 x=1775337851; bh=wJDhh1aYQ1l4wE/5x0P8ZIQHMCjj0qGX6ZaMgUpSYDs=; b=
	aAt3L47A9yhTQN+76uDqU6NmR6i1x68uMDpeEEV2ENc92vb/nKT/P50ht5Rh7yNH
	zlrAdkk0T9LEJUl2LGaiShm6nrWTQ63f/clxqaXyuUcpcDlT5jSyhvzwX0wJMOwF
	rChvsk0D5T+utpa8GcCE8TKjJ0i4qk9Fl+7jDnjIfM64oQN2MwSD1A/AgYy2DPYN
	qOsh/clXlm1OTfS58WOpqOqCyuckuTmtwrZSCuuc5DWvgAjX2uL2t+K+Wjgh9W3o
	uAstcaF5f0WuACIFuBBRkbiuqe1pbfGqB4NMox9L6llq8Fk6iAuBfohxPQATImp2
	77GrkYqP8XoJ9mibPRegAA==
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=
	1775251451; x=1775337851; bh=wJDhh1aYQ1l4wE/5x0P8ZIQHMCjj0qGX6Za
	MgUpSYDs=; b=kXAxLxfti1IaQGTj5DE1eTHOVU3fz2e6HtUfswfA34t2NmT3GYy
	T0ANeA6MPaa7PwVpoMzWJ56wliT+IA004jOEyDytWbpJT3Asvk+ziuyuQy348QBJ
	UC3wzuSvg7PGMPWJPSgScb2oKO170l40zL7u5pPCZONCbWYfAiZlXB3c6t8BApIQ
	wPzPnwVlWFKBeNGVPgtLtHQlBykAbU7xbio1Cpu5FXOXnjrZgv4VY7FgOo6ToIaN
	FDfCTJb+MjFUkXXDKltkUPo21EhsCAw5KAV6e4lV+EpfXWCYZIv1pVDLOPrbi+kj
	ic8ZODfHppRaqjhSSnlaw/e68ivExmWTbwg==
X-ME-Sender: <xms:-y_QaRr1XTAQ9LyrLFOTPLlOumIgLtbXY3IN9h-aKuVs7xuuiFzniw>
    <xme:-y_QaUUm3hDRjGEgKKc4_OY_USIx7Ot-s3oZvcSuPSaQEQOAqZe2qSXhZ9aPDXWVL
    43z0grLVYPrs36reD07Zfpl1j3ZPGmgtb7UCaYPc_A0n9rmBA>
X-ME-Received: <xmr:-y_QacYdSSqSmKaieuB8VmUHk4MphOc0deUQEqblCeedqzy4HW2bcMn21A>
X-ME-Proxy-Cause: gggruggvucftvghtrhhoucdtuddrgeefhedrtddtgddutddtudcutefuodetggdotefrod
    ftvfcurfhrohhfihhlvgemucfhrghsthforghilhdpuffrtefokffrpgfnqfghnecuuegr
    ihhlohhuthemuceftddtnecusecvtfgvtghiphhivghnthhsucdlqddutddtmdenucfjug
    hrpeffhffvvefukfhfgggtuggjsehgtderredttdejnecuhfhrohhmpeforghrvghkucfo
    rghrtgiihihkohifshhkihdqifpkrhgvtghkihcuoehmrghrmhgrrhgvkhesihhnvhhish
    hisghlvghthhhinhhgshhlrggsrdgtohhmqeenucggtffrrghtthgvrhhnpefgudelteef
    vefhfeehieetleeihfejhfeludevteetkeevtedtvdegueetfeejudenucevlhhushhtvg
    hrufhiiigvpedtnecurfgrrhgrmhepmhgrihhlfhhrohhmpehmrghrmhgrrhgvkhesihhn
    vhhishhisghlvghthhhinhhgshhlrggsrdgtohhmpdhnsggprhgtphhtthhopeejpdhmoh
    guvgepshhmthhpohhuthdprhgtphhtthhopehtvgguugihrdgrshhtihgvsehvrghtvghs
    rdhtvggthhdprhgtphhtthhopehvrghlsehinhhvihhsihgslhgvthhhihhnghhslhgrsg
    drtghomhdprhgtphhtthhopeguvghmihhosggvnhhouhhrsehgmhgrihhlrdgtohhmpdhr
    tghpthhtohepgigvnhdquggvvhgvlheslhhishhtshdrgigvnhhprhhojhgvtghtrdhorh
    hgpdhrtghpthhtohepughrihdquggvvhgvlheslhhishhtshdrfhhrvggvuggvshhkthho
    phdrohhrghdprhgtphhtthhopehlihhnuhigqdhmmheskhhvrggtkhdrohhrghdprhgtph
    htthhopegrrhhirggunhgvsegrrhhirggunhgvrdhsphgrtggv
X-ME-Proxy: <xmx:-y_QaRfxtirIBioAWRbktAN6gJkuRnR1Ev5RQjHr2vJoizemSi6lTg>
    <xmx:-y_QaW2sjTPblbnJqzQf3RHHa_I6V-7ksolTPLy5osm8Q8GnAQdDgg>
    <xmx:-y_QaYJTIUWPC-0nxvANtutqJl3H2VayrOkd-Hz_jzPH6aNL2eLSZw>
    <xmx:-y_QaVEYnKui8E_TxwxLNAFiA4fij7N4ZS6lWjiBy3_wCrh8LoWPeA>
    <xmx:-y_QadRujxaY6YfeywYpy0HDzSrdZ0nAizMKR0kLY1kncJmTVSVzuRq->
Feedback-ID: i1568416f:Fastmail
Date: Fri, 3 Apr 2026 23:24:07 +0200
From: Marek =?utf-8?Q?Marczykowski-G=C3=B3recki?= <marmarek@invisiblethingslab.com>
To: Teddy Astie <teddy.astie@vates.tech>
Cc: Val Packett <val@invisiblethingslab.com>,
	Demi Marie Obenour <demiobenour@gmail.com>,
	Xen developer discussion <xen-devel@lists.xenproject.org>,
	dri-devel@lists.freedesktop.org, linux-mm@kvack.org,
	Ariadne Conill <ariadne@ariadne.space>
Subject: Re: Why memory lending is needed for GPU acceleration
Message-ID: <adAv-HfiyKptEVvq@mail-itl>
References: <84462c4b-7813-4ad1-aeb2-862ae4f3a627@gmail.com>
 <c38387fe-beef-4f50-b928-74f96b881b7a@gmail.com>
 <0bbf0349-1006-485f-a2db-6c8b795b4242@invisiblethingslab.com>
 <1de15ce0-9f7e-4253-80a7-ecd94caa4325@vates.tech>
MIME-Version: 1.0
Content-Type: multipart/signed; micalg=pgp-sha256;
	protocol="application/pgp-signature"; boundary="4Ae0y7aT9vuqArIi"
Content-Disposition: inline
In-Reply-To: <1de15ce0-9f7e-4253-80a7-ecd94caa4325@vates.tech>
X-purgate-ID: tlsNG-ef75cf/1775251454-8975241E-EA13BEEB/0/0
X-purgate-type: clean
X-purgate-size: 1920


--4Ae0y7aT9vuqArIi
Content-Type: text/plain; protected-headers=v1; charset=utf-8
Content-Disposition: inline
Content-Transfer-Encoding: quoted-printable
Date: Fri, 3 Apr 2026 23:24:07 +0200
From: Marek =?utf-8?Q?Marczykowski-G=C3=B3recki?= <marmarek@invisiblethingslab.com>
To: Teddy Astie <teddy.astie@vates.tech>
Cc: Val Packett <val@invisiblethingslab.com>,
	Demi Marie Obenour <demiobenour@gmail.com>,
	Xen developer discussion <xen-devel@lists.xenproject.org>,
	dri-devel@lists.freedesktop.org, linux-mm@kvack.org,
	Ariadne Conill <ariadne@ariadne.space>
Subject: Re: Why memory lending is needed for GPU acceleration

On Tue, Mar 31, 2026 at 09:42:22AM +0000, Teddy Astie wrote:
> XEN_GNTDEV_DMABUF has been designed for GPU use-cases, and more
> precisely for paravirtualizing a display. The only issue I would have
> with it is that grants are not scalable for GPU 3D use cases (with
> hundreds of MB to share).

FWIW we do use grants for graphics buffers already - window composition
buffers specifically. We do run xen with extra options for that:
gnttab_max_frames=3D2048 gnttab_max_maptrack_frames=3D4096
And similarly, on domU side:
echo 1073741824 > /sys/module/xen_gntalloc/parameters/limit

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

--4Ae0y7aT9vuqArIi
Content-Type: application/pgp-signature; name=signature.asc

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

iQEzBAEBCAAdFiEEhrpukzGPukRmQqkK24/THMrX1ywFAmnQL/gACgkQ24/THMrX
1yxbGQf+OgsupCAnm7yeXU50i8UAUbaCxLl6LTgomVWE8BqqFLLzbd1uZRBaxgwi
08KM6UwaNDnWYrJjTzzuVajjgvb364NRxaCcDQMU1gg9QaScwe0rvqNXjTCyyZIZ
KcGYITuyNobu6TEOlxjMZCYe09hjh5Tv6YIAjNytG/v4Wj0BeLd6dpU3y/K79rsz
k5Q2KuSQNJBm0DrX1xHtYDI34Ecs8kMi+QNmTxBNirLjkzswlCpewSvOONNsy8Ff
8k+hGeZuhbRQMidzb/toBQpk5p82359YvtUwGWz6rn/YnryTk6+3x3Vr1octMvgz
5SPKxfVNDvikjgpYpZpWowiX1sDLHw==
=Aya7
-----END PGP SIGNATURE-----

--4Ae0y7aT9vuqArIi--


From xen-devel-bounces@lists.xenproject.org Fri Apr 03 23:48:18 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Fri, 03 Apr 2026 23:48:18 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1273371.1560213 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1w8oF9-0003TV-KQ; Fri, 03 Apr 2026 23:48:03 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1273371.1560213; Fri, 03 Apr 2026 23: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 1w8oF9-0003TO-H5; Fri, 03 Apr 2026 23:48:03 +0000
Received: by outflank-mailman (input) for mailman id 1273371;
 Fri, 03 Apr 2026 23:48:02 +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 1w8oF7-0003TI-Td
 for xen-devel@lists.xenproject.org; Fri, 03 Apr 2026 23:48:01 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1w8oF7-009MjX-9u
 for xen-devel@lists.xenproject.org; Sat, 04 Apr 2026 01:48:01 +0200
Received: from [10.42.69.7] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <sstabellini@kernel.org>)
 id 69d051af-5cb7-0a2a0a5109dd-0a2a4507bfd6-6
 for <xen-devel@lists.xenproject.org>; Sat, 04 Apr 2026 01:48:01 +0200
Received: from [172.234.252.31] (helo=sea.source.kernel.org)
 by tlsNG-ef75cf.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.0)
 (envelope-from <sstabellini@kernel.org>)
 id 69d051af-ba2d-0a2a45070019-aceafc1f8c1a-3
 for <xen-devel@lists.xenproject.org>; Sat, 04 Apr 2026 01:48:00 +0200
Received: from smtp.kernel.org (transwarp.subspace.kernel.org [100.75.92.58])
 by sea.source.kernel.org (Postfix) with ESMTP id D209643BAA;
 Fri,  3 Apr 2026 23:47:58 +0000 (UTC)
Received: by smtp.kernel.org (Postfix) with ESMTPSA id 134E6C4CEF7;
 Fri,  3 Apr 2026 23:47: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=k20201202 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/simple; d=kernel.org;
	s=k20201202; t=1775260078;
	bh=A/UuuA1NVFkJMO81wS0G58dAgB2oCFTP3hEqag6xc8c=;
	h=Date:From:To:cc:Subject:In-Reply-To:References:From;
	b=GJl0pGY4rSCZdff2BVZvDGgyy/PfbnKnWwsgH/4L92t8PypTgMmGCNS58Ab86tTra
	 5NKgnGl1oFDIfLg5xe7Yf3J2iHFHk1dG/uQJIpLQZCr7OY69AvYjJbzqUvwIG5ryxW
	 /zHLZ7IKxVrKRxpWHSJqMKRfyYiC4zkjF00C+Mr/fAQNgp5PD7J8FsmEdIv0nrnPJ7
	 oyCUPGhqIjOsXeb7MNN/AuSy3sJrTQrP8nqmEA0x2ct7z32sJgecpC+AMcB8jxGYdN
	 F8GCcJKKje1tvzAR8OCYbqtAHMk2ve3lIHaBQZiOZtuhLaglBgnEPpP4XEeXVnmdWS
	 Jga7pSoh180UQ==
Date: Fri, 3 Apr 2026 16:47:49 -0700 (PDT)
From: Stefano Stabellini <sstabellini@kernel.org>
X-X-Sender: sstabellini@ubuntu-linux-20-04-desktop
To: Pengpeng Hou <pengpeng@iscas.ac.cn>
cc: Stefano Stabellini <sstabellini@kernel.org>, 
    xen-devel@lists.xenproject.org, linux-arm-kernel@lists.infradead.org, 
    linux-kernel@vger.kernel.org
Subject: Re: [PATCH] ARM: xen: validate hypervisor compatible before parsing
 its version
In-Reply-To: <20260403151502.2-dt-arm-xen-resend-pengpeng@iscas.ac.cn>
Message-ID: <alpine.DEB.2.22.394.2604031637130.2873990@ubuntu-linux-20-04-desktop>
References: <20260403151502.2-dt-arm-xen-resend-pengpeng@iscas.ac.cn>
User-Agent: Alpine 2.22 (DEB 394 2020-01-19)
MIME-Version: 1.0
Content-Type: text/plain; charset=US-ASCII
X-purgate-ID: tlsNG-ef75cf/1775260081-1274A41E-A6D6C45C/0/0
X-purgate-type: clean
X-purgate-size: 2310

On Fri, 3 Apr 2026, Pengpeng Hou wrote:
> fdt_find_hyper_node() reads the raw compatible property and then
> derives hyper_node.version from a prefix match before later printing it
> with %s. Flat DT properties are external boot input, and this path does
> not prove that the compatible string is NUL-terminated within its
> declared bounds.
> 
> Fetch the first compatible entry with fdt_stringlist_get() so malformed
> unterminated properties are rejected before the version suffix is
> parsed.
> 
> Signed-off-by: Pengpeng Hou <pengpeng@iscas.ac.cn>
> ---
>  arch/arm/xen/enlighten.c | 12 +++++++-----
>  1 file changed, 7 insertions(+), 5 deletions(-)
> 
> diff --git a/arch/arm/xen/enlighten.c b/arch/arm/xen/enlighten.c
> index 4feed2c2498d..f69290a4c639 100644
> --- a/arch/arm/xen/enlighten.c
> +++ b/arch/arm/xen/enlighten.c
> @@ -19,6 +19,7 @@
>  #include <asm/efi.h>
>  #include <linux/interrupt.h>
>  #include <linux/irqreturn.h>
> +#include <linux/libfdt.h>
>  #include <linux/module.h>
>  #include <linux/of.h>
>  #include <linux/of_fdt.h>
> @@ -218,8 +219,9 @@ static __initdata struct {
>  static int __init fdt_find_hyper_node(unsigned long node, const char *uname,
>  				      int depth, void *data)
>  {
> -	const void *s = NULL;
> +	const char *s = NULL;
>  	int len;
> +	size_t prefix_len = strlen(hyper_node.prefix);
>  
>  	if (depth != 1 || strcmp(uname, "hypervisor") != 0)
>  		return 0;
> @@ -227,10 +229,10 @@ static int __init fdt_find_hyper_node(unsigned long node, const char *uname,
>  	if (of_flat_dt_is_compatible(node, hyper_node.compat))
>  		hyper_node.found = true;
>  
> -	s = of_get_flat_dt_prop(node, "compatible", &len);
> -	if (strlen(hyper_node.prefix) + 3  < len &&
> -	    !strncmp(hyper_node.prefix, s, strlen(hyper_node.prefix)))
> -		hyper_node.version = s + strlen(hyper_node.prefix);
> +	s = fdt_stringlist_get(initial_boot_params, node, "compatible", 0, &len);
> +	if (s && len > prefix_len + 2 &&
> +	    !strncmp(hyper_node.prefix, s, prefix_len))
> +		hyper_node.version = s + prefix_len;

I'd prefer to go with:

  s = of_get_flat_dt_prop(node, "compatible", &len);
  if (s && len > 0 && strnlen(s, len) < len &&
      len > prefix_len + 3 &&
      !strncmp(hyper_node.prefix, s, prefix_len))



From xen-devel-bounces@lists.xenproject.org Sat Apr 04 11:32:49 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Sat, 04 Apr 2026 11:32:49 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1273628.1560239 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1w8zEv-0001ut-PR; Sat, 04 Apr 2026 11:32:33 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1273628.1560239; Sat, 04 Apr 2026 11:32: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 1w8zEv-0001um-MZ; Sat, 04 Apr 2026 11:32:33 +0000
Received: by outflank-mailman (input) for mailman id 1273628;
 Sat, 04 Apr 2026 11:32:32 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <freddy77@gmail.com>) id 1w8zEu-0001ug-2c
 for xen-devel@lists.xenproject.org; Sat, 04 Apr 2026 11:32:32 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1w8zEt-003J0d-Ek
 for xen-devel@lists.xenproject.org; Sat, 04 Apr 2026 13:32:31 +0200
Received: from [10.42.69.5] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <freddy77@gmail.com>)
 id 69d0f6c2-5cb7-0a2a0a5109dd-0a2a450589c6-12
 for <xen-devel@lists.xenproject.org>; Sat, 04 Apr 2026 13:32:31 +0200
Received: from [74.125.224.50] (helo=mail-yx1-f50.google.com)
 by tlsNG-c201ff.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.0)
 (envelope-from <freddy77@gmail.com>)
 id 69d0f6ce-3760-0a2a45050019-4a7de032c071-3
 for <xen-devel@lists.xenproject.org>; Sat, 04 Apr 2026 13:32:31 +0200
Received: by mail-yx1-f50.google.com with SMTP id
 956f58d0204a3-65009bfdcfdso2736914d50.2
 for <xen-devel@lists.xenproject.org>; Sat, 04 Apr 2026 04:32:31 -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=20251104 header.d=gmail.com header.i="@gmail.com" header.h="Content-Transfer-Encoding:Cc:To:Subject:Message-ID:Date:From:In-Reply-To:References:MIME-Version"
ARC-Seal: i=1; a=rsa-sha256; t=1775302350; cv=none;
        d=google.com; s=arc-20240605;
        b=JQRxQQOHWy4IgqgNYUm0IdKHxqJmBWyZXk8xsQY84e1uO+5uk3zVkErLB+9Ps+b8RR
         VLVsMeaWxMmb7T366PVO/U9/cwtXopAuItdEWl94caziAkhJzUCb8ht9pcAkKyurOZub
         KEZsgqawnzDmpgCNex5Kx2IVb5Nkv0gkpigH8j6CwlXdKZy0vqv6s86hJ8yx0R6WlSia
         H+02OubRmIZCni5g1x9WDL+vDhCk/j3a9+GSeZCqTLCDsxoZcKiAM1SccJwzyB9d7EGK
         TQi1B7T1r+QFPS+p++xx/n6XF/9hjbKhjKJsRUz1MAuXcLgkCggYUG/43q+lvVnHnU9g
         8hiw==
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20240605;
        h=content-transfer-encoding:cc:to:subject:message-id:date:from
         :in-reply-to:references:mime-version:dkim-signature;
        bh=qSgJUGOjVvt6CunX03PcQu1j3L3Kic8yq9H+84Der8g=;
        fh=jtpI8BNv+OQCCB7Kc0MT2qsQdfu4U3IegNxehlgRw8Y=;
        b=YsCcweSqNCvDj3eEciFcFUM5wsB9N0BYqLyAjoYrIZPkuoUn7StGkcqYFrNdiNslsE
         n3b1NBTNv2Ek26WBG8ZMNOolfNDZ4pDikkDD/qMz1UKZVaA2n3ENhgdaCmzCudNvsQVG
         y2kPTIMKrmbRhIpKNXqPgo/2TI1ngbipacpXCnJOY1RkiOAw4jooZkHmiId9Xfn+Iuop
         Y60/kyaR7Ez5vdXXDZtzzMOpBn8l10vTjf8huE8TZlOntN3RX5z2SC2a/VFDwqsxMUlN
         alqxyPbbK8KVYjJR0b2OU/k/PE/mbQ+evHVRQfQchwUNWQMIi5opqWYSlCnmyjQHnU4p
         3xmg==;
        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=20251104; t=1775302350; x=1775907150; darn=lists.xenproject.org;
        h=content-transfer-encoding:cc:to:subject:message-id:date:from
         :in-reply-to:references:mime-version:from:to:cc:subject:date
         :message-id:reply-to;
        bh=qSgJUGOjVvt6CunX03PcQu1j3L3Kic8yq9H+84Der8g=;
        b=qGp//11lcFrkOg6Xh7UmzWvWYee+kGdrBFAIyMJLkka1DwoJEIOxdFiD8G3RkjKEOZ
         dPJJmiBQ4sh2jUQXFKXhPeYi7Kr6Uxe/1gTJQIGfBKXALx41kfqxIyi6AiV9PIYZtBEv
         rXQF7z0jS8xyNSxbERmAgmapcSln0g7I/qRCzhmeEECHJeYuagX3Cy3QxXTvv9PV2qo+
         4XLODwAJ+Lts7sZn7Fd99L4diN5+yzrLqMp8vBGY42LZx3gdCVAGIfoPfvaj35hXcszf
         gzAp3oGlvNzacdxVJyrvPEDr/8BvDrwnGAFlkMNpCePyjFVP301RtobqJ5/W5WSFVD6v
         R5rg==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20251104; t=1775302350; x=1775907150;
        h=content-transfer-encoding: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;
        bh=qSgJUGOjVvt6CunX03PcQu1j3L3Kic8yq9H+84Der8g=;
        b=D4GjWElfYBVM0ivrFXK9ryjRO106vF3bRSrhZEd26PCnC2EkFy3DCKMIufq1AlJhp6
         td4+C+2FQGlfer4Ty9x1oNSqDlW1jrCL7uPM11bobj5WNX7nKAo7Fs6vqJaZRpJMu7nx
         5W0Tv6RvFhvN27cZNIbxmfs6BZ8cy6pAxb93mjeOyimMClHyyWNlHhI0yPUMY4DRG72Z
         bD0Z8mI0nM/I0WfivsY+g9f10CsMaOznAgQbLtxDrtPr3E9HLqrxb66W8Urzh/khMWSY
         mrox/NfshlFCYER0Gj1f9YV8Hs57lCayRdxWAUr1h/OA3fRiHrMo6kjVA5c9oPUP6IMf
         GBIA==
X-Gm-Message-State: AOJu0YwI7HYvBcuF+DQnDRlwDU3oJAVhtjoFaHWUFyCwHq4hNFKYNWNz
	qWQCFs85meHo1r21nR8nb3nTbnzA92bEe6JVQVd0561Rk9Wbd974p/f2RXEFTnvL2LaofUlvb4T
	CDhaWNV9eEGMrunVaVQR2wQIj8/YgwVI=
X-Gm-Gg: AeBDietDWroRf8Y7ep91OccYfqZ7ebnjCJMkx+vwxYxBkN2OkcZHyaf4K4mws/2jeky
	q15hbO4PvtsSwCwdx1JQb2Sr/8yMmcGATcJZR8GS/ywaBn0eEc3VeiZxlCjYACJyOW80BbTLskm
	MuRzADvrmOGzNZr8VFiEwIRtsUw79/g2zGvhx1C7uiD+QUCSz0KdvUbJawzw8iv9uu1fvgApiFm
	HS7+0tvShn5oePgQE0x9MIYh2wwQ6Ftyez87YE6cXZgo9Sm/YhOr3RE/8ZEYGre2zt6zEoZczN6
	d52NWLjN7NTQ7zya
X-Received: by 2002:a05:690e:140b:b0:64a:e589:ecb2 with SMTP id
 956f58d0204a3-65048877510mr5853419d50.62.1775302349827; Sat, 04 Apr 2026
 04:32:29 -0700 (PDT)
MIME-Version: 1.0
References: <20260402155512.80170-1-frediano.ziglio@cloud.com> <ac-SNHWwML98cLYA@wifi-campus-l-10-3-197-236.u-ga.fr>
In-Reply-To: <ac-SNHWwML98cLYA@wifi-campus-l-10-3-197-236.u-ga.fr>
From: Frediano Ziglio <freddy77@gmail.com>
Date: Sat, 4 Apr 2026 12:32:18 +0100
X-Gm-Features: AQROBzA2RkU_b1hqzlm5riiCwhlWPKxXibwghJW3qQteUFSuVYYYfA4AzhDVtUk
Message-ID: <CAHt6W4c-aF+6+Cb6XKMGs_gr9RhsZHPJN1uN7KeH1F1MJqT+FA@mail.gmail.com>
Subject: Re: [PATCH v2] xen/x86: Check supported features even for PVH dom0
To: =?UTF-8?Q?Roger_Pau_Monn=C3=A9?= <roger.pau@citrix.com>
Cc: xen-devel@lists.xenproject.org, 
	Frediano Ziglio <frediano.ziglio@cloud.com>, Jan Beulich <jbeulich@suse.com>, 
	Andrew Cooper <andrew.cooper3@citrix.com>
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: quoted-printable
X-purgate-ID: tlsNG-c201ff/1775302351-30D3796F-605BCF37/0/0
X-purgate-type: clean
X-purgate-size: 2761

On Fri, 3 Apr 2026 at 11:11, Roger Pau Monn=C3=A9 <roger.pau@citrix.com> wr=
ote:
>
> On Thu, Apr 02, 2026 at 04:55:10PM +0100, Frediano Ziglio wrote:
> > The supported features ELF notes was tested only if the dom0 was
> > PV. Factor out a function to check ELF notes and reuse it even
> > for PVH.
> >
> > Signed-off-by: Frediano Ziglio <frediano.ziglio@cloud.com>
> > --
> > Changes since v1:
> > - fix typo in title;
> > - fix minor formatting issue;
> > - use is_hardware_domain instead of checking is_pv_shim;
> > - reduce indentation returning earlier;
> > - return error instead of jumping to cleanup code.
> > ---
> >  xen/arch/x86/dom0_build.c             | 14 ++++++++++++++
> >  xen/arch/x86/hvm/dom0_build.c         |  3 +++
> >  xen/arch/x86/include/asm/dom0_build.h |  2 ++
> >  xen/arch/x86/pv/dom0_build.c          | 10 ++--------
> >  4 files changed, 21 insertions(+), 8 deletions(-)
> >
> > diff --git a/xen/arch/x86/dom0_build.c b/xen/arch/x86/dom0_build.c
> > index 864dd9e53e..a33ce77321 100644
> > --- a/xen/arch/x86/dom0_build.c
> > +++ b/xen/arch/x86/dom0_build.c
> > @@ -320,6 +320,20 @@ unsigned long __init dom0_paging_pages(const struc=
t domain *d,
> >      return DIV_ROUND_UP(memkb, 1024) << (20 - PAGE_SHIFT);
> >  }
> >
> > +int __init dom0_check_parms(
> > +    struct domain *d, const struct elf_dom_parms *parms)
>
> d should be const also.
>
> > +{
> > +    if ( parms->elf_notes[XEN_ELFNOTE_SUPPORTED_FEATURES].type =3D=3D =
XEN_ENT_NONE )
> > +        return 0;
> > +
> > +    if ( is_hardware_domain(d) && !test_bit(XENFEAT_dom0, parms->f_sup=
ported) )
> > +    {
> > +        printk("Kernel does not support Dom0 operation\n");
> > +        return -EINVAL;
> > +    }
> > +
> > +    return 0;
> > +}
> >
> >  /*
> >   * If allocation isn't specified, reserve 1/16th of available memory f=
or
> > diff --git a/xen/arch/x86/hvm/dom0_build.c b/xen/arch/x86/hvm/dom0_buil=
d.c
> > index d69a83b089..f95a00acfd 100644
> > --- a/xen/arch/x86/hvm/dom0_build.c
> > +++ b/xen/arch/x86/hvm/dom0_build.c
> > @@ -699,6 +699,9 @@ static int __init pvh_load_kernel(
> >      if ( !check_and_adjust_load_address(d, &elf, &parms) )
> >          return -ENOSPC;
> >
> > +    if ( (rc =3D dom0_check_parms(d, &parms)) !=3D 0 )
> > +        return rc;
>
> I would do the check ahead of check_and_adjust_load_address(), as then
> we could avoid the load address adjustment if we detect earlier than
> the dom0 feature is not present.  But that's just my taste.
>
> I can adjust the const-ification of d on commit if there are no
> further objections:
>
> Reviewed-by: Roger Pau Monn=C3=A9 <roger.pau@citrix.com>
>
> Thanks, Roger.

Fine with me.

Frediano


From xen-devel-bounces@lists.xenproject.org Sat Apr 04 15:02:38 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Sat, 04 Apr 2026 15:02:38 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1273752.1560274 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1w92Vw-0001DZ-B3; Sat, 04 Apr 2026 15:02:20 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1273752.1560274; Sat, 04 Apr 2026 15:02: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 1w92Vw-0001DR-7h; Sat, 04 Apr 2026 15:02:20 +0000
Received: by outflank-mailman (input) for mailman id 1273752;
 Sat, 04 Apr 2026 15:02:19 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <dakr@kernel.org>) id 1w92Vv-0001DL-1d
 for xen-devel@lists.xenproject.org; Sat, 04 Apr 2026 15:02:19 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1w92Vu-007yaP-AA
 for xen-devel@lists.xenproject.org; Sat, 04 Apr 2026 17:02:18 +0200
Received: from [10.42.69.11] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <dakr@kernel.org>)
 id 69d127e8-e002-0a2a0a5209dd-0a2a450b9104-24
 for <xen-devel@lists.xenproject.org>; Sat, 04 Apr 2026 17:02:18 +0200
Received: from [172.105.4.254] (helo=tor.source.kernel.org)
 by tlsNG-42698a.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.0)
 (envelope-from <dakr@kernel.org>)
 id 69d127f9-bca8-0a2a450b0019-ac6904fe9486-3
 for <xen-devel@lists.xenproject.org>; Sat, 04 Apr 2026 17:02:17 +0200
Received: from smtp.kernel.org (transwarp.subspace.kernel.org [100.75.92.58])
 by tor.source.kernel.org (Postfix) with ESMTP id 32414600CB;
 Sat,  4 Apr 2026 15:02:16 +0000 (UTC)
Received: by smtp.kernel.org (Postfix) with ESMTPSA id B9BB2C19421;
 Sat,  4 Apr 2026 15:02: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=k20201202 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/simple; d=kernel.org;
	s=k20201202; t=1775314935;
	bh=yS1a8GmMxhd+gaXjsrUMOyEcZUcN2vLf71oRyrhAVkk=;
	h=From:To:Cc:Subject:Date:In-Reply-To:References:From;
	b=fcd1WH1uMPDFcW95A5bP6twrmSlGywxDbhV9K4GUdxmnw9OhLho72J9OlIZREDDfv
	 Evf5eg+FhGKnEBZMEi0xrGzL0W0wBBPFC5ZbOalQpNWyhGwDm3HuLGvy/jgjYAq60X
	 Jsa257f9xIzRC/LnmHpxdh9mv/JRHNm7utYMn96WoZP6ZRATrlwe1+3BmjlR9bxRPR
	 tiA87cPHB5ojtZQJ2zSKPbtecnXGON24oyWbrZcP9XuN+XivvmLrVCQGu5orrMZe/a
	 +xDtWMIwREbTcGNYdTKbgyxE7aDCuXqmHaashK055GEOETa+XQlaspyrGVn7GrwOhI
	 UHZOaAkc+kiUA==
From: Danilo Krummrich <dakr@kernel.org>
To: Russell King <linux@armlinux.org.uk>,
	Greg Kroah-Hartman <gregkh@linuxfoundation.org>,
	"Rafael J. Wysocki" <rafael@kernel.org>,
	Ioana Ciornei <ioana.ciornei@nxp.com>,
	Nipun Gupta <nipun.gupta@amd.com>,
	Nikhil Agarwal <nikhil.agarwal@amd.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>,
	Bjorn Helgaas <bhelgaas@google.com>,
	Armin Wolf <W_Armin@gmx.de>,
	Bjorn Andersson <andersson@kernel.org>,
	Mathieu Poirier <mathieu.poirier@linaro.org>,
	Vineeth Vijayan <vneethv@linux.ibm.com>,
	Peter Oberparleiter <oberpar@linux.ibm.com>,
	Heiko Carstens <hca@linux.ibm.com>,
	Vasily Gorbik <gor@linux.ibm.com>,
	Alexander Gordeev <agordeev@linux.ibm.com>,
	Christian Borntraeger <borntraeger@linux.ibm.com>,
	Sven Schnelle <svens@linux.ibm.com>,
	Harald Freudenberger <freude@linux.ibm.com>,
	Holger Dengler <dengler@linux.ibm.com>,
	Mark Brown <broonie@kernel.org>,
	"Michael S. Tsirkin" <mst@redhat.com>,
	Jason Wang <jasowang@redhat.com>,
	Xuan Zhuo <xuanzhuo@linux.alibaba.com>,
	=?UTF-8?q?Eugenio=20P=C3=A9rez?= <eperezma@redhat.com>,
	Alex Williamson <alex@shazbot.org>,
	Juergen Gross <jgross@suse.com>,
	Stefano Stabellini <sstabellini@kernel.org>,
	Oleksandr Tyshchenko <oleksandr_tyshchenko@epam.com>,
	"Christophe Leroy (CS GROUP)" <chleroy@kernel.org>
Cc: linux-kernel@vger.kernel.org,
	driver-core@lists.linux.dev,
	linuxppc-dev@lists.ozlabs.org,
	linux-hyperv@vger.kernel.org,
	linux-pci@vger.kernel.org,
	platform-driver-x86@vger.kernel.org,
	linux-arm-msm@vger.kernel.org,
	linux-remoteproc@vger.kernel.org,
	linux-s390@vger.kernel.org,
	linux-spi@vger.kernel.org,
	virtualization@lists.linux.dev,
	kvm@vger.kernel.org,
	xen-devel@lists.xenproject.org,
	linux-arm-kernel@lists.infradead.org,
	Danilo Krummrich <dakr@kernel.org>,
	Michael Kelley <mhklinux@outlook.com>,
	Gui-Dong Han <hanguidong02@gmail.com>
Subject: [PATCH v2] Drivers: hv: vmbus: use generic driver_override infrastructure
Date: Sat,  4 Apr 2026 17:01:49 +0200
Message-ID: <20260404150155.3473682-1-dakr@kernel.org>
X-Mailer: git-send-email 2.53.0
In-Reply-To: <BN7PR02MB414825D0532A1DFE16F3B671D449A@BN7PR02MB4148.namprd02.prod.outlook.com>
References: <BN7PR02MB414825D0532A1DFE16F3B671D449A@BN7PR02MB4148.namprd02.prod.outlook.com>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit
X-purgate-ID: tlsNG-42698a/1775314938-EC3642A1-FAE8CD37/0/0
X-purgate-type: clean
X-purgate-size: 4285

When a driver is probed through __driver_attach(), the bus' match()
callback is called without the device lock held, thus accessing the
driver_override field without a lock, which can cause a UAF.

Fix this by using the driver-core driver_override infrastructure taking
care of proper locking internally.

Note that calling match() from __driver_attach() without the device lock
held is intentional. [1]

Tested-by: Michael Kelley <mhklinux@outlook.com>
Reviewed-by: Michael Kelley <mhklinux@outlook.com>
Link: https://lore.kernel.org/driver-core/DGRGTIRHA62X.3RY09D9SOK77P@kernel.org/ [1]
Reported-by: Gui-Dong Han <hanguidong02@gmail.com>
Closes: https://bugzilla.kernel.org/show_bug.cgi?id=220789
Fixes: d765edbb301c ("vmbus: add driver_override support")
Signed-off-by: Danilo Krummrich <dakr@kernel.org>
---
Changes in v2:
  - Change patch subject and comments according to Michael's suggestion.
---
 drivers/hv/vmbus_drv.c | 43 ++++++++++--------------------------------
 include/linux/hyperv.h |  5 -----
 2 files changed, 10 insertions(+), 38 deletions(-)

diff --git a/drivers/hv/vmbus_drv.c b/drivers/hv/vmbus_drv.c
index bc4fc1951ae1..ba7326ec6add 100644
--- a/drivers/hv/vmbus_drv.c
+++ b/drivers/hv/vmbus_drv.c
@@ -541,34 +541,6 @@ static ssize_t device_show(struct device *dev,
 }
 static DEVICE_ATTR_RO(device);
 
-static ssize_t driver_override_store(struct device *dev,
-				     struct device_attribute *attr,
-				     const char *buf, size_t count)
-{
-	struct hv_device *hv_dev = device_to_hv_device(dev);
-	int ret;
-
-	ret = driver_set_override(dev, &hv_dev->driver_override, buf, count);
-	if (ret)
-		return ret;
-
-	return count;
-}
-
-static ssize_t driver_override_show(struct device *dev,
-				    struct device_attribute *attr, char *buf)
-{
-	struct hv_device *hv_dev = device_to_hv_device(dev);
-	ssize_t len;
-
-	device_lock(dev);
-	len = sysfs_emit(buf, "%s\n", hv_dev->driver_override);
-	device_unlock(dev);
-
-	return len;
-}
-static DEVICE_ATTR_RW(driver_override);
-
 /* Set up per device attributes in /sys/bus/vmbus/devices/<bus device> */
 static struct attribute *vmbus_dev_attrs[] = {
 	&dev_attr_id.attr,
@@ -599,7 +571,6 @@ static struct attribute *vmbus_dev_attrs[] = {
 	&dev_attr_channel_vp_mapping.attr,
 	&dev_attr_vendor.attr,
 	&dev_attr_device.attr,
-	&dev_attr_driver_override.attr,
 	NULL,
 };
 
@@ -711,9 +682,11 @@ static const struct hv_vmbus_device_id *hv_vmbus_get_id(const struct hv_driver *
 {
 	const guid_t *guid = &dev->dev_type;
 	const struct hv_vmbus_device_id *id;
+	int ret;
 
-	/* When driver_override is set, only bind to the matching driver */
-	if (dev->driver_override && strcmp(dev->driver_override, drv->name))
+	/* If a driver override is set, only bind to the matching driver */
+	ret = device_match_driver_override(&dev->device, &drv->driver);
+	if (ret == 0)
 		return NULL;
 
 	/* Look at the dynamic ids first, before the static ones */
@@ -721,8 +694,11 @@ static const struct hv_vmbus_device_id *hv_vmbus_get_id(const struct hv_driver *
 	if (!id)
 		id = hv_vmbus_dev_match(drv->id_table, guid);
 
-	/* driver_override will always match, send a dummy id */
-	if (!id && dev->driver_override)
+	/*
+	 * If there's a matching driver override, this function should succeed,
+	 * thus return a dummy device ID if no matching ID is found.
+	 */
+	if (!id && ret > 0)
 		id = &vmbus_device_null;
 
 	return id;
@@ -1024,6 +1000,7 @@ static const struct dev_pm_ops vmbus_pm = {
 /* The one and only one */
 static const struct bus_type  hv_bus = {
 	.name =		"vmbus",
+	.driver_override =	true,
 	.match =		vmbus_match,
 	.shutdown =		vmbus_shutdown,
 	.remove =		vmbus_remove,
diff --git a/include/linux/hyperv.h b/include/linux/hyperv.h
index dfc516c1c719..bf689d07d750 100644
--- a/include/linux/hyperv.h
+++ b/include/linux/hyperv.h
@@ -1272,11 +1272,6 @@ struct hv_device {
 	u16 device_id;
 
 	struct device device;
-	/*
-	 * Driver name to force a match.  Do not set directly, because core
-	 * frees it.  Use driver_set_override() to set or clear it.
-	 */
-	const char *driver_override;
 
 	struct vmbus_channel *channel;
 	struct kset	     *channels_kset;
-- 
2.53.0



From xen-devel-bounces@lists.xenproject.org Sat Apr 04 15:08:07 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Sat, 04 Apr 2026 15:08:07 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1273762.1560283 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1w92bS-0001rF-TH; Sat, 04 Apr 2026 15:08:02 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1273762.1560283; Sat, 04 Apr 2026 15: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 1w92bS-0001r8-QO; Sat, 04 Apr 2026 15:08:02 +0000
Received: by outflank-mailman (input) for mailman id 1273762;
 Sat, 04 Apr 2026 15:08:01 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <dakr@kernel.org>) id 1w92bR-0001r2-Nm
 for xen-devel@lists.xenproject.org; Sat, 04 Apr 2026 15:08:01 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1w92bR-00AxRE-0A
 for xen-devel@lists.xenproject.org; Sat, 04 Apr 2026 17:08:01 +0200
Received: from [10.42.69.12] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <dakr@kernel.org>)
 id 69d128db-2eae-0a2a0a5409dd-0a2a450cc12c-12
 for <xen-devel@lists.xenproject.org>; Sat, 04 Apr 2026 17:08:00 +0200
Received: from [172.105.4.254] (helo=tor.source.kernel.org)
 by tlsNG-d25034.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.0)
 (envelope-from <dakr@kernel.org>)
 id 69d1294f-f40c-0a2a450c0019-ac6904fea140-3
 for <xen-devel@lists.xenproject.org>; Sat, 04 Apr 2026 17:08:00 +0200
Received: from smtp.kernel.org (transwarp.subspace.kernel.org [100.75.92.58])
 by tor.source.kernel.org (Postfix) with ESMTP id 09D4760008;
 Sat,  4 Apr 2026 15:07:59 +0000 (UTC)
Received: by smtp.kernel.org (Postfix) with ESMTPSA id 11D01C19421;
 Sat,  4 Apr 2026 15: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=k20201202 header.d=kernel.org header.i="@kernel.org" header.h="Date:To:From:Subject:Cc:References:In-Reply-To"
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org;
	s=k20201202; t=1775315278;
	bh=vsboea1jS0mbXrEN888C7vI6KSnNsfnadcjKrpMmAnY=;
	h=Date:To:From:Subject:Cc:References:In-Reply-To:From;
	b=BqFwLyJnTBhpomTB+sXRdwyVaWyzA1LM4x/jRCX0BFGrA8JpgKS8rfJ3LIpPDY9yk
	 p+d1jqhJ1Mjf2wU0RpwYFVVUOlAbdMj9UlGnuClj9FmR1QC9ZSfTvrkB18QTB/RfaR
	 3w4rXTh/VlmdJJ+A6SXPJawUID7A7XZSgzuHSGqEFu6Tbouz8uVWV9o1VaA1GFu7gI
	 3NdNsOM8C1NHzuvTeKFcIyrqClEFUe0UqumonfV9MfwITs9dnEyWj08ERsdYv9WbWd
	 01HVmLT594g3v4oxts7zZYAk6RxZP3qVHdO7PiI+5yTu0pvGRJP4QeyHxy5PzJrrxp
	 3oxcw/dlirZ+g==
Mime-Version: 1.0
Content-Transfer-Encoding: quoted-printable
Content-Type: text/plain; charset=UTF-8
Date: Sat, 04 Apr 2026 17:07:48 +0200
Message-Id: <DHKGQN6D0ANO.2QYY3JTM5435O@kernel.org>
To: "Russell King" <linux@armlinux.org.uk>, "Greg Kroah-Hartman"
 <gregkh@linuxfoundation.org>, "Rafael J. Wysocki" <rafael@kernel.org>,
 "Ioana Ciornei" <ioana.ciornei@nxp.com>, "Nipun Gupta"
 <nipun.gupta@amd.com>, "Nikhil Agarwal" <nikhil.agarwal@amd.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>, "Bjorn Helgaas" <bhelgaas@google.com>, "Armin
 Wolf" <W_Armin@gmx.de>, "Bjorn Andersson" <andersson@kernel.org>, "Mathieu
 Poirier" <mathieu.poirier@linaro.org>, "Vineeth Vijayan"
 <vneethv@linux.ibm.com>, "Peter Oberparleiter" <oberpar@linux.ibm.com>,
 "Heiko Carstens" <hca@linux.ibm.com>, "Vasily Gorbik" <gor@linux.ibm.com>,
 "Alexander Gordeev" <agordeev@linux.ibm.com>, "Christian Borntraeger"
 <borntraeger@linux.ibm.com>, "Sven Schnelle" <svens@linux.ibm.com>, "Harald
 Freudenberger" <freude@linux.ibm.com>, "Holger Dengler"
 <dengler@linux.ibm.com>, "Mark Brown" <broonie@kernel.org>, "Michael S.
 Tsirkin" <mst@redhat.com>, "Jason Wang" <jasowang@redhat.com>, "Xuan Zhuo"
 <xuanzhuo@linux.alibaba.com>, =?utf-8?q?Eugenio_P=C3=A9rez?=
 <eperezma@redhat.com>, "Alex Williamson" <alex@shazbot.org>, "Juergen
 Gross" <jgross@suse.com>, "Stefano Stabellini" <sstabellini@kernel.org>,
 "Oleksandr Tyshchenko" <oleksandr_tyshchenko@epam.com>, "Christophe Leroy
 (CS GROUP)" <chleroy@kernel.org>
From: "Danilo Krummrich" <dakr@kernel.org>
Subject: Re: (subset) [PATCH 00/12] treewide: Convert buses to use generic
 driver_override
Cc: <linux-kernel@vger.kernel.org>, <driver-core@lists.linux.dev>,
 <linuxppc-dev@lists.ozlabs.org>, <linux-hyperv@vger.kernel.org>,
 <linux-pci@vger.kernel.org>, <platform-driver-x86@vger.kernel.org>,
 <linux-arm-msm@vger.kernel.org>, <linux-remoteproc@vger.kernel.org>,
 <linux-s390@vger.kernel.org>, <linux-spi@vger.kernel.org>,
 <virtualization@lists.linux.dev>, <kvm@vger.kernel.org>,
 <xen-devel@lists.xenproject.org>, <linux-arm-kernel@lists.infradead.org>,
 "Danilo Krummrich" <dakr@kernel.org>
References: <20260324005919.2408620-1-dakr@kernel.org>
In-Reply-To: <20260324005919.2408620-1-dakr@kernel.org>
X-purgate-ID: tlsNG-d25034/1775315280-83945A3D-E95B2C17/0/0
X-purgate-type: clean
X-purgate-size: 974

On Tue Mar 24, 2026 at 1:59 AM CET, Danilo Krummrich wrote:
> Danilo Krummrich (12):
>   PCI: use generic driver_override infrastructure
>   platform/wmi: use generic driver_override infrastructure
>   vdpa: use generic driver_override infrastructure
>   s390/cio: use generic driver_override infrastructure
>   s390/ap: use generic driver_override infrastructure

Applied to driver-core-testing, thanks!

>   amba: use generic driver_override infrastructure
>   cdx: use generic driver_override infrastructure
>   hv: vmbus: use generic driver_override infrastructure
>   rpmsg: use generic driver_override infrastructure

I have not picked these up, as they have not received ACKs from the
corresponding subsystem maintainers so far.

>   bus: fsl-mc: use generic driver_override infrastructure
>   spi: use generic driver_override infrastructure

These have already been picked up via the respective subsystem trees -- tha=
nks!

Thanks,
Danilo


From xen-devel-bounces@lists.xenproject.org Sat Apr 04 16:56:43 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Sat, 04 Apr 2026 16:56:43 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1273815.1560292 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1w94IQ-0007JF-Cu; Sat, 04 Apr 2026 16:56:30 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1273815.1560292; Sat, 04 Apr 2026 16:56: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 1w94IQ-0007J8-9r; Sat, 04 Apr 2026 16:56:30 +0000
Received: by outflank-mailman (input) for mailman id 1273815;
 Sat, 04 Apr 2026 16:56:28 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <chleroy@kernel.org>) id 1w94IO-0007J1-FN
 for xen-devel@lists.xenproject.org; Sat, 04 Apr 2026 16:56:28 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1w94IN-003sCG-Rl
 for xen-devel@lists.xenproject.org; Sat, 04 Apr 2026 18:56:27 +0200
Received: from [10.42.69.12] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <chleroy@kernel.org>)
 id 69d14272-bab6-0a2a0a5309dd-0a2a450ca3fc-34
 for <xen-devel@lists.xenproject.org>; Sat, 04 Apr 2026 18:56:27 +0200
Received: from [172.234.252.31] (helo=sea.source.kernel.org)
 by tlsNG-d25034.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.0)
 (envelope-from <chleroy@kernel.org>)
 id 69d142b9-f40c-0a2a450c0019-aceafc1fa3d6-3
 for <xen-devel@lists.xenproject.org>; Sat, 04 Apr 2026 18:56:27 +0200
Received: from smtp.kernel.org (transwarp.subspace.kernel.org [100.75.92.58])
 by sea.source.kernel.org (Postfix) with ESMTP id C91694059C;
 Sat,  4 Apr 2026 16:56:24 +0000 (UTC)
Received: by smtp.kernel.org (Postfix) with ESMTPSA id A189EC19421;
 Sat,  4 Apr 2026 16:56: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=k20201202 header.d=kernel.org header.i="@kernel.org" header.h="Date:Subject:From:To:Cc:References:In-Reply-To"
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org;
	s=k20201202; t=1775321784;
	bh=z0EKK9uCRclvxyjrhd1+SN0RRq/OFfBzrXy9eOqqb1Y=;
	h=Date:Subject:From:To:Cc:References:In-Reply-To:From;
	b=Pvkgz2VYtss1MeKDd1hCnXOqFhZSJT7sCBgib4Ld40MuoHbsbTzaQtqEQlHI315/z
	 sSsTrUhsdTJPdFsI6MsazCxIagVra3Yz7Nj6ieza8kV78SqaqqkR1jw4ERelqbogu8
	 P2C5HKTLPE156wtoOmaEhBjNWmWs1/5XjIm7Pn+IztUEvzTxOWgE4ijDSgxwxt7sHW
	 /z+by/VjXh6iXK4C6vfLmsq7Ld8muhOBjOIJmJuiMgdiDbMtkSfkPxjp0+PDXt64DF
	 SAsEhipno3UJ1XHvp0XZyChIymjhWJhckqoZh6Dfi1SExI1b8SJikdcJieSIN27yIj
	 n1QGwKpOYjS/A==
Message-ID: <faa68f96-5b10-45d0-a5dc-fac4350a7dd7@kernel.org>
Date: Sat, 4 Apr 2026 18:56:08 +0200
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH 02/12] bus: fsl-mc: use generic driver_override
 infrastructure
From: "Christophe Leroy (CS GROUP)" <chleroy@kernel.org>
To: Ioana Ciornei <ioana.ciornei@nxp.com>, Danilo Krummrich <dakr@kernel.org>
Cc: Russell King <linux@armlinux.org.uk>,
 Greg Kroah-Hartman <gregkh@linuxfoundation.org>,
 "Rafael J. Wysocki" <rafael@kernel.org>, Nipun Gupta <nipun.gupta@amd.com>,
 Nikhil Agarwal <nikhil.agarwal@amd.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>, Bjorn Helgaas <bhelgaas@google.com>,
 Armin Wolf <W_Armin@gmx.de>, Bjorn Andersson <andersson@kernel.org>,
 Mathieu Poirier <mathieu.poirier@linaro.org>,
 Vineeth Vijayan <vneethv@linux.ibm.com>,
 Peter Oberparleiter <oberpar@linux.ibm.com>,
 Heiko Carstens <hca@linux.ibm.com>, Vasily Gorbik <gor@linux.ibm.com>,
 Alexander Gordeev <agordeev@linux.ibm.com>,
 Christian Borntraeger <borntraeger@linux.ibm.com>,
 Sven Schnelle <svens@linux.ibm.com>,
 Harald Freudenberger <freude@linux.ibm.com>,
 Holger Dengler <dengler@linux.ibm.com>, Mark Brown <broonie@kernel.org>,
 "Michael S. Tsirkin" <mst@redhat.com>, Jason Wang <jasowang@redhat.com>,
 Xuan Zhuo <xuanzhuo@linux.alibaba.com>, =?UTF-8?Q?Eugenio_P=C4=82=C2=A9rez?=
 <eperezma@redhat.com>, Alex Williamson <alex@shazbot.org>,
 Juergen Gross <jgross@suse.com>, Stefano Stabellini
 <sstabellini@kernel.org>,
 Oleksandr Tyshchenko <oleksandr_tyshchenko@epam.com>,
 linux-kernel@vger.kernel.org, driver-core@lists.linux.dev,
 linuxppc-dev@lists.ozlabs.org, linux-hyperv@vger.kernel.org,
 linux-pci@vger.kernel.org, platform-driver-x86@vger.kernel.org,
 linux-arm-msm@vger.kernel.org, linux-remoteproc@vger.kernel.org,
 linux-s390@vger.kernel.org, linux-spi@vger.kernel.org,
 virtualization@lists.linux.dev, kvm@vger.kernel.org,
 xen-devel@lists.xenproject.org, linux-arm-kernel@lists.infradead.org,
 Gui-Dong Han <hanguidong02@gmail.com>
References: <20260324005919.2408620-1-dakr@kernel.org>
 <20260324005919.2408620-3-dakr@kernel.org>
 <cvcetxkxjq2tz6n2vsofhyzove3qdi2e4r6rq6yxou3joejk2h@rmt5ygav7ssu>
 <4c5e9bad-82f0-4714-99c2-8ccd79a45043@kernel.org>
Content-Language: fr-FR
In-Reply-To: <4c5e9bad-82f0-4714-99c2-8ccd79a45043@kernel.org>
Content-Type: text/plain; charset=UTF-8; format=flowed
Content-Transfer-Encoding: 8bit
X-purgate-ID: tlsNG-d25034/1775321787-81F52A3D-CE7E2EFD/0/0
X-purgate-type: clean
X-purgate-size: 3496



Le 28/03/2026 à 13:10, Christophe Leroy (CS GROUP) a écrit :
> 
> 
> Le 25/03/2026 à 13:01, Ioana Ciornei a écrit :
>> On Tue, Mar 24, 2026 at 01:59:06AM +0100, Danilo Krummrich wrote:
>>> When a driver is probed through __driver_attach(), the bus' match()
>>> callback is called without the device lock held, thus accessing the
>>> driver_override field without a lock, which can cause a UAF.
>>>
>>> Fix this by using the driver-core driver_override infrastructure taking
>>> care of proper locking internally.
>>>
>>> Note that calling match() from __driver_attach() without the device lock
>>> held is intentional. [1]
>>>
>>> Link: https://eur01.safelinks.protection.outlook.com/? 
>>> url=https%3A%2F%2Flore.kernel.org%2Fdriver- 
>>> core%2FDGRGTIRHA62X.3RY09D9SOK77P%40kernel.org%2F&data=05%7C02%7Cchristophe.leroy%40csgroup.eu%7C4b9262ddecdd4ce29f9808de8a66485e%7C8b87af7d86474dc78df45f69a2011bb5%7C0%7C0%7C639100369055903282%7CUnknown%7CTWFpbGZsb3d8eyJFbXB0eU1hcGkiOnRydWUsIlYiOiIwLjAuMDAwMCIsIlAiOiJXaW4zMiIsIkFOIjoiTWFpbCIsIldUIjoyfQ%3D%3D%7C0%7C%7C%7C&sdata=%2BRfjlUkq7oWV%2F0v2S2B%2BEuxCY%2FLRQv6qHiEWiupd6kc%3D&reserved=0 [1]
>>> Reported-by: Gui-Dong Han <hanguidong02@gmail.com>
>>> Closes: https://eur01.safelinks.protection.outlook.com/? 
>>> url=https%3A%2F%2Fbugzilla.kernel.org%2Fshow_bug.cgi%3Fid%3D220789&data=05%7C02%7Cchristophe.leroy%40csgroup.eu%7C4b9262ddecdd4ce29f9808de8a66485e%7C8b87af7d86474dc78df45f69a2011bb5%7C0%7C0%7C639100369055936232%7CUnknown%7CTWFpbGZsb3d8eyJFbXB0eU1hcGkiOnRydWUsIlYiOiIwLjAuMDAwMCIsIlAiOiJXaW4zMiIsIkFOIjoiTWFpbCIsIldUIjoyfQ%3D%3D%7C0%7C%7C%7C&sdata=XL1K1ICiygOZnlvDUbQFe192KnLsBQms0HFNGCuyz%2Fw%3D&reserved=0
>>> Fixes: 1f86a00c1159 ("bus/fsl-mc: add support for 'driver_override' 
>>> in the mc-bus")
>>> Signed-off-by: Danilo Krummrich <dakr@kernel.org>
>>
>> Tested-by: Ioana Ciornei <ioana.ciornei@nxp.com>
>> Signed-off-by: Ioana Ciornei <ioana.ciornei@nxp.com>
>>
> 
> 
> Applied, thanks

Have to drop it for now, build fails:

   CALL    scripts/checksyscalls.sh
   CC      drivers/bus/fsl-mc/fsl-mc-bus.o
drivers/bus/fsl-mc/fsl-mc-bus.c: In function 'fsl_mc_bus_match':
drivers/bus/fsl-mc/fsl-mc-bus.c:92:15: error: implicit declaration of 
function 'device_match_driver_override' 
[-Werror=implicit-function-declaration]
    92 |         ret = device_match_driver_override(dev, drv);
       |               ^~~~~~~~~~~~~~~~~~~~~~~~~~~~
drivers/bus/fsl-mc/fsl-mc-bus.c: At top level:
drivers/bus/fsl-mc/fsl-mc-bus.c:321:10: error: 'const struct bus_type' 
has no member named 'driver_override'
   321 |         .driver_override = true,
       |          ^~~~~~~~~~~~~~~
drivers/bus/fsl-mc/fsl-mc-bus.c:321:28: warning: initialization of 
'const char *' from 'int' makes pointer from integer without a cast 
[-Wint-conversion]
   321 |         .driver_override = true,
       |                            ^~~~
drivers/bus/fsl-mc/fsl-mc-bus.c:321:28: note: (near initialization for 
'fsl_mc_bus_type.dev_name')
cc1: some warnings being treated as errors
make[5]: *** [scripts/Makefile.build:289: 
drivers/bus/fsl-mc/fsl-mc-bus.o] Error 1
make[4]: *** [scripts/Makefile.build:546: drivers/bus/fsl-mc] Error 2
make[3]: *** [scripts/Makefile.build:546: drivers/bus] Error 2
make[2]: *** [scripts/Makefile.build:546: drivers] Error 2
make[1]: *** [/home/chleroy/linux-powerpc/Makefile:2101: .] Error 2
make: *** [Makefile:248: __sub-make] Error 2

Christophe



From xen-devel-bounces@lists.xenproject.org Sat Apr 04 16:59:15 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Sat, 04 Apr 2026 16:59:15 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1273825.1560300 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1w94L4-0007sP-Pq; Sat, 04 Apr 2026 16:59:14 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1273825.1560300; Sat, 04 Apr 2026 16:59: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 1w94L4-0007sI-N3; Sat, 04 Apr 2026 16:59:14 +0000
Received: by outflank-mailman (input) for mailman id 1273825;
 Sat, 04 Apr 2026 16:59:13 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <chleroy@kernel.org>) id 1w94L3-0007sB-5J
 for xen-devel@lists.xenproject.org; Sat, 04 Apr 2026 16:59:13 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1w94L2-003sNx-Hl
 for xen-devel@lists.xenproject.org; Sat, 04 Apr 2026 18:59:12 +0200
Received: from [10.42.69.5] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <chleroy@kernel.org>)
 id 69d1430e-bab6-0a2a0a5309dd-0a2a4505c9c6-22
 for <xen-devel@lists.xenproject.org>; Sat, 04 Apr 2026 18:59:12 +0200
Received: from [172.234.252.31] (helo=sea.source.kernel.org)
 by tlsNG-c201ff.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.0)
 (envelope-from <chleroy@kernel.org>)
 id 69d1435e-3760-0a2a45050019-aceafc1fd69e-3
 for <xen-devel@lists.xenproject.org>; Sat, 04 Apr 2026 18:59:12 +0200
Received: from smtp.kernel.org (transwarp.subspace.kernel.org [100.75.92.58])
 by sea.source.kernel.org (Postfix) with ESMTP id 0732D40212;
 Sat,  4 Apr 2026 16:59:10 +0000 (UTC)
Received: by smtp.kernel.org (Postfix) with ESMTPSA id 6DDF2C19421;
 Sat,  4 Apr 2026 16:58:54 +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=k20201202 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/simple; d=kernel.org;
	s=k20201202; t=1775321949;
	bh=2nmDBifOoextQmoTG695I77JtU4IfJ6hHi18F/uovOA=;
	h=Date:Subject:To:Cc:References:From:In-Reply-To:From;
	b=pzHa0ltJ7P/3nc4QK7/bV808HOZOGXaMyVekR/DB1WE+018orzHWLwztSYy1/aXtb
	 SzI8tsEInej9eoHjBzyIJaVGBr9u74dLFfrXcTThineYb99ODPDwsaOS5PNoPpADEf
	 RKWNJ7Ic0kSfp5FmUOXVQ6PFQBKcfI9b1bar1hvVu+oDjNbThyquuuXTFP/2f4hh2r
	 sNZXBYXoEYlp3D9Lzsjn9fgXUhLg5zak6jG42FprWSVJLQdnerHFANSStlrij56Tl/
	 nq4W3Agf2uSQ+xhFuLGyUpc0A63CtjXoWAelZzEtiaPysfp3k4jpj5PHDxaigPyBx2
	 FsekL+yzYor6g==
Message-ID: <76355cb5-0b5d-4a29-9702-8d020a79f4c0@kernel.org>
Date: Sat, 4 Apr 2026 18:58:53 +0200
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: (subset) [PATCH 00/12] treewide: Convert buses to use generic
 driver_override
To: Danilo Krummrich <dakr@kernel.org>, Russell King <linux@armlinux.org.uk>,
 Greg Kroah-Hartman <gregkh@linuxfoundation.org>,
 "Rafael J. Wysocki" <rafael@kernel.org>,
 Ioana Ciornei <ioana.ciornei@nxp.com>, Nipun Gupta <nipun.gupta@amd.com>,
 Nikhil Agarwal <nikhil.agarwal@amd.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>, Bjorn Helgaas <bhelgaas@google.com>,
 Armin Wolf <W_Armin@gmx.de>, Bjorn Andersson <andersson@kernel.org>,
 Mathieu Poirier <mathieu.poirier@linaro.org>,
 Vineeth Vijayan <vneethv@linux.ibm.com>,
 Peter Oberparleiter <oberpar@linux.ibm.com>,
 Heiko Carstens <hca@linux.ibm.com>, Vasily Gorbik <gor@linux.ibm.com>,
 Alexander Gordeev <agordeev@linux.ibm.com>,
 Christian Borntraeger <borntraeger@linux.ibm.com>,
 Sven Schnelle <svens@linux.ibm.com>,
 Harald Freudenberger <freude@linux.ibm.com>,
 Holger Dengler <dengler@linux.ibm.com>, Mark Brown <broonie@kernel.org>,
 "Michael S. Tsirkin" <mst@redhat.com>, Jason Wang <jasowang@redhat.com>,
 Xuan Zhuo <xuanzhuo@linux.alibaba.com>, =?UTF-8?Q?Eugenio_P=C3=A9rez?=
 <eperezma@redhat.com>, Alex Williamson <alex@shazbot.org>,
 Juergen Gross <jgross@suse.com>, Stefano Stabellini
 <sstabellini@kernel.org>,
 Oleksandr Tyshchenko <oleksandr_tyshchenko@epam.com>,
 "Christophe Leroy (CS GROUP)" <chleroy@kernel.org>
Cc: linux-kernel@vger.kernel.org, driver-core@lists.linux.dev,
 linuxppc-dev@lists.ozlabs.org, linux-hyperv@vger.kernel.org,
 linux-pci@vger.kernel.org, platform-driver-x86@vger.kernel.org,
 linux-arm-msm@vger.kernel.org, linux-remoteproc@vger.kernel.org,
 linux-s390@vger.kernel.org, linux-spi@vger.kernel.org,
 virtualization@lists.linux.dev, kvm@vger.kernel.org,
 xen-devel@lists.xenproject.org, linux-arm-kernel@lists.infradead.org
References: <20260324005919.2408620-1-dakr@kernel.org>
 <DHKGQN6D0ANO.2QYY3JTM5435O@kernel.org>
Content-Language: fr-FR
From: "Christophe Leroy (CS GROUP)" <chleroy@kernel.org>
In-Reply-To: <DHKGQN6D0ANO.2QYY3JTM5435O@kernel.org>
Content-Type: text/plain; charset=UTF-8; format=flowed
Content-Transfer-Encoding: 8bit
X-purgate-ID: tlsNG-c201ff/1775321952-2292196F-DDB74BE1/0/0
X-purgate-type: clean
X-purgate-size: 1207



Le 04/04/2026 à 17:07, Danilo Krummrich a écrit :
> On Tue Mar 24, 2026 at 1:59 AM CET, Danilo Krummrich wrote:
>> Danilo Krummrich (12):
>>    PCI: use generic driver_override infrastructure
>>    platform/wmi: use generic driver_override infrastructure
>>    vdpa: use generic driver_override infrastructure
>>    s390/cio: use generic driver_override infrastructure
>>    s390/ap: use generic driver_override infrastructure
> 
> Applied to driver-core-testing, thanks!
> 
>>    amba: use generic driver_override infrastructure
>>    cdx: use generic driver_override infrastructure
>>    hv: vmbus: use generic driver_override infrastructure
>>    rpmsg: use generic driver_override infrastructure
> 
> I have not picked these up, as they have not received ACKs from the
> corresponding subsystem maintainers so far.
> 
>>    bus: fsl-mc: use generic driver_override infrastructure

I droped it from soc_fsl tree, some dependency must be missing.

Feal free to take it if you can, it is acked-by Ioana.

>>    spi: use generic driver_override infrastructure
> 
> These have already been picked up via the respective subsystem trees -- thanks!
> 
> Thanks,
> Danilo



From xen-devel-bounces@lists.xenproject.org Sat Apr 04 17:04:43 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Sat, 04 Apr 2026 17:04:43 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1273841.1560310 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1w94QG-00012d-C5; Sat, 04 Apr 2026 17:04:36 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1273841.1560310; Sat, 04 Apr 2026 17:04: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 1w94QG-00012W-9N; Sat, 04 Apr 2026 17:04:36 +0000
Received: by outflank-mailman (input) for mailman id 1273841;
 Sat, 04 Apr 2026 17:04:35 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <dakr@kernel.org>) id 1w94QF-00012Q-TT
 for xen-devel@lists.xenproject.org; Sat, 04 Apr 2026 17:04:35 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1w94QF-003tOI-9E
 for xen-devel@lists.xenproject.org; Sat, 04 Apr 2026 19:04:35 +0200
Received: from [10.42.69.10] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <dakr@kernel.org>)
 id 69d14455-bab6-0a2a0a5309dd-0a2a450aece0-24
 for <xen-devel@lists.xenproject.org>; Sat, 04 Apr 2026 19:04:35 +0200
Received: from [172.234.252.31] (helo=sea.source.kernel.org)
 by tlsNG-4011c0.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.0)
 (envelope-from <dakr@kernel.org>)
 id 69d144a1-ee98-0a2a450a0019-aceafc1f9a0c-3
 for <xen-devel@lists.xenproject.org>; Sat, 04 Apr 2026 19:04:34 +0200
Received: from smtp.kernel.org (transwarp.subspace.kernel.org [100.75.92.58])
 by sea.source.kernel.org (Postfix) with ESMTP id 979924060D;
 Sat,  4 Apr 2026 17:04:32 +0000 (UTC)
Received: by smtp.kernel.org (Postfix) with ESMTPSA id 6663AC19421;
 Sat,  4 Apr 2026 17:04: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=k20201202 header.d=kernel.org header.i="@kernel.org" header.h="Date:Cc:To:From:Subject:References:In-Reply-To"
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org;
	s=k20201202; t=1775322272;
	bh=7PzP6n6U4E9ZflmrRkBSMwOeYsGN0d+ge+8bYc26zsY=;
	h=Date:Cc:To:From:Subject:References:In-Reply-To:From;
	b=fe5eJq1d99JHNmPB8IpFig8PRyyyj5sltf3KPYrDsk0N8TKZGpBePJLkrkPDItx5u
	 OD9XiP1BsdzxhDnieDTpdRavUaIxIOsfwema+FPuAf2OftNWG3RNzfc/+E74+vzYXL
	 hr6gl/9eoMudVQ+SB7i9KoJ64jNeCH7KBFn19c9SoYtuyJxnlnjg/gnFezKFCEM8UT
	 pXBEauClp409xFE/+hMuTZWOGegzPULPyvlbewkUUrLyfkmmluI/xnbmAAlztMocbH
	 5TCceEPtW/9Z41b0BUe5ZnMFG66SCb9IcaE5AfJKxdvb9nrxftJLbDrCkbK9ayIBu8
	 7zufDNhS7HSYw==
Mime-Version: 1.0
Content-Transfer-Encoding: quoted-printable
Content-Type: text/plain; charset=UTF-8
Date: Sat, 04 Apr 2026 19:04:21 +0200
Message-Id: <DHKJ7VWI1CHO.3ETHUGQVPFFDE@kernel.org>
Cc: "Russell King" <linux@armlinux.org.uk>, "Greg Kroah-Hartman"
 <gregkh@linuxfoundation.org>, "Rafael J. Wysocki" <rafael@kernel.org>,
 "Ioana Ciornei" <ioana.ciornei@nxp.com>, "Nipun Gupta"
 <nipun.gupta@amd.com>, "Nikhil Agarwal" <nikhil.agarwal@amd.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>, "Bjorn Helgaas" <bhelgaas@google.com>, "Armin
 Wolf" <W_Armin@gmx.de>, "Bjorn Andersson" <andersson@kernel.org>, "Mathieu
 Poirier" <mathieu.poirier@linaro.org>, "Vineeth Vijayan"
 <vneethv@linux.ibm.com>, "Peter Oberparleiter" <oberpar@linux.ibm.com>,
 "Heiko Carstens" <hca@linux.ibm.com>, "Vasily Gorbik" <gor@linux.ibm.com>,
 "Alexander Gordeev" <agordeev@linux.ibm.com>, "Christian Borntraeger"
 <borntraeger@linux.ibm.com>, "Sven Schnelle" <svens@linux.ibm.com>, "Harald
 Freudenberger" <freude@linux.ibm.com>, "Holger Dengler"
 <dengler@linux.ibm.com>, "Mark Brown" <broonie@kernel.org>, "Michael S.
 Tsirkin" <mst@redhat.com>, "Jason Wang" <jasowang@redhat.com>, "Xuan Zhuo"
 <xuanzhuo@linux.alibaba.com>, =?utf-8?q?Eugenio_P=C3=A9rez?=
 <eperezma@redhat.com>, "Alex Williamson" <alex@shazbot.org>, "Juergen
 Gross" <jgross@suse.com>, "Stefano Stabellini" <sstabellini@kernel.org>,
 "Oleksandr Tyshchenko" <oleksandr_tyshchenko@epam.com>,
 <linux-kernel@vger.kernel.org>, <driver-core@lists.linux.dev>,
 <linuxppc-dev@lists.ozlabs.org>, <linux-hyperv@vger.kernel.org>,
 <linux-pci@vger.kernel.org>, <platform-driver-x86@vger.kernel.org>,
 <linux-arm-msm@vger.kernel.org>, <linux-remoteproc@vger.kernel.org>,
 <linux-s390@vger.kernel.org>, <linux-spi@vger.kernel.org>,
 <virtualization@lists.linux.dev>, <kvm@vger.kernel.org>,
 <xen-devel@lists.xenproject.org>, <linux-arm-kernel@lists.infradead.org>
To: "Christophe Leroy (CS GROUP)" <chleroy@kernel.org>
From: "Danilo Krummrich" <dakr@kernel.org>
Subject: Re: (subset) [PATCH 00/12] treewide: Convert buses to use generic
 driver_override
References: <20260324005919.2408620-1-dakr@kernel.org>
 <DHKGQN6D0ANO.2QYY3JTM5435O@kernel.org>
 <76355cb5-0b5d-4a29-9702-8d020a79f4c0@kernel.org>
In-Reply-To: <76355cb5-0b5d-4a29-9702-8d020a79f4c0@kernel.org>
X-purgate-ID: tlsNG-4011c0/1775322275-C481C0B1-1A2EBE86/0/0
X-purgate-type: clean
X-purgate-size: 1399

On Sat Apr 4, 2026 at 6:58 PM CEST, Christophe Leroy (CS GROUP) wrote:
>
>
> Le 04/04/2026 =C3=A0 17:07, Danilo Krummrich a =C3=A9crit=C2=A0:
>> On Tue Mar 24, 2026 at 1:59 AM CET, Danilo Krummrich wrote:
>>> Danilo Krummrich (12):
>>>    PCI: use generic driver_override infrastructure
>>>    platform/wmi: use generic driver_override infrastructure
>>>    vdpa: use generic driver_override infrastructure
>>>    s390/cio: use generic driver_override infrastructure
>>>    s390/ap: use generic driver_override infrastructure
>>=20
>> Applied to driver-core-testing, thanks!
>>=20
>>>    amba: use generic driver_override infrastructure
>>>    cdx: use generic driver_override infrastructure
>>>    hv: vmbus: use generic driver_override infrastructure
>>>    rpmsg: use generic driver_override infrastructure
>>=20
>> I have not picked these up, as they have not received ACKs from the
>> corresponding subsystem maintainers so far.
>>=20
>>>    bus: fsl-mc: use generic driver_override infrastructure
>
> I droped it from soc_fsl tree, some dependency must be missing.
>
> Feal free to take it if you can, it is acked-by Ioana.

It is based on v7.0-rc5; if you want I can pick it up.

>>>    spi: use generic driver_override infrastructure
>>=20
>> These have already been picked up via the respective subsystem trees -- =
thanks!
>>=20
>> Thanks,
>> Danilo



From xen-devel-bounces@lists.xenproject.org Sat Apr 04 17:12:38 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Sat, 04 Apr 2026 17:12:38 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1273859.1560319 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1w94Xw-0002ps-5b; Sat, 04 Apr 2026 17:12:32 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1273859.1560319; Sat, 04 Apr 2026 17:12: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 1w94Xw-0002pl-2v; Sat, 04 Apr 2026 17:12:32 +0000
Received: by outflank-mailman (input) for mailman id 1273859;
 Sat, 04 Apr 2026 17:12:31 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <chleroy@kernel.org>) id 1w94Xv-0002pf-3c
 for xen-devel@lists.xenproject.org; Sat, 04 Apr 2026 17:12:31 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1w94Xu-00CKAX-GC
 for xen-devel@lists.xenproject.org; Sat, 04 Apr 2026 19:12:30 +0200
Received: from [10.42.69.8] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <chleroy@kernel.org>)
 id 69d14646-e002-0a2a0a5209dd-0a2a4508e3d0-20
 for <xen-devel@lists.xenproject.org>; Sat, 04 Apr 2026 19:12:30 +0200
Received: from [172.234.252.31] (helo=sea.source.kernel.org)
 by tlsNG-c1860d.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.0)
 (envelope-from <chleroy@kernel.org>)
 id 69d145c8-fab6-0a2a45080019-aceafc1fc7d0-3
 for <xen-devel@lists.xenproject.org>; Sat, 04 Apr 2026 19:09:29 +0200
Received: from smtp.kernel.org (transwarp.subspace.kernel.org [100.75.92.58])
 by sea.source.kernel.org (Postfix) with ESMTP id AE6C643C1D;
 Sat,  4 Apr 2026 17:09:27 +0000 (UTC)
Received: by smtp.kernel.org (Postfix) with ESMTPSA id 6956BC19421;
 Sat,  4 Apr 2026 17:09: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=k20201202 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/simple; d=kernel.org;
	s=k20201202; t=1775322567;
	bh=u8kt7OrQ/vRwebR8QID4XnX8+JNDMp1i5iK/K6bdNDA=;
	h=Date:Subject:To:Cc:References:From:In-Reply-To:From;
	b=Mur2l9g+deVKWOVOfXlkgvgdKFA4eMN3VFsDjrp+nvoKeM3X3pstiyexcKEvOeD0a
	 RbWpztozc0h4lQoSWYVOnXtkhFF+JRtMTTya2FNPQi3D7loBz93/IYN7Ge2fCwnYY6
	 Re4J05NhHq8kCVMn7SJKTXcUdNw54AUQcOdwffM3zMjz7evbLjl/s54+7J+0y2RhZM
	 +Mi+DO81POzfix85rvYo25MmliRWwTmiQ4w8GEjh3lU6Bg01dUBrobNBgfy2tPEGch
	 AFl8Q1R0jHMSDedYpY3Yug+qqjGh5y0LuX4UV4lD2NPGO2GuUGdy7lPrJwFQklpETH
	 wOUF3U6ODslbQ==
Message-ID: <a8c85884-e2ba-4a3a-a660-9715f0de2704@kernel.org>
Date: Sat, 4 Apr 2026 19:09:11 +0200
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: (subset) [PATCH 00/12] treewide: Convert buses to use generic
 driver_override
To: Danilo Krummrich <dakr@kernel.org>
Cc: Russell King <linux@armlinux.org.uk>,
 Greg Kroah-Hartman <gregkh@linuxfoundation.org>,
 "Rafael J. Wysocki" <rafael@kernel.org>,
 Ioana Ciornei <ioana.ciornei@nxp.com>, Nipun Gupta <nipun.gupta@amd.com>,
 Nikhil Agarwal <nikhil.agarwal@amd.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>, Bjorn Helgaas <bhelgaas@google.com>,
 Armin Wolf <W_Armin@gmx.de>, Bjorn Andersson <andersson@kernel.org>,
 Mathieu Poirier <mathieu.poirier@linaro.org>,
 Vineeth Vijayan <vneethv@linux.ibm.com>,
 Peter Oberparleiter <oberpar@linux.ibm.com>,
 Heiko Carstens <hca@linux.ibm.com>, Vasily Gorbik <gor@linux.ibm.com>,
 Alexander Gordeev <agordeev@linux.ibm.com>,
 Christian Borntraeger <borntraeger@linux.ibm.com>,
 Sven Schnelle <svens@linux.ibm.com>,
 Harald Freudenberger <freude@linux.ibm.com>,
 Holger Dengler <dengler@linux.ibm.com>, Mark Brown <broonie@kernel.org>,
 "Michael S. Tsirkin" <mst@redhat.com>, Jason Wang <jasowang@redhat.com>,
 Xuan Zhuo <xuanzhuo@linux.alibaba.com>, =?UTF-8?Q?Eugenio_P=C3=A9rez?=
 <eperezma@redhat.com>, Alex Williamson <alex@shazbot.org>,
 Juergen Gross <jgross@suse.com>, Stefano Stabellini
 <sstabellini@kernel.org>,
 Oleksandr Tyshchenko <oleksandr_tyshchenko@epam.com>,
 linux-kernel@vger.kernel.org, driver-core@lists.linux.dev,
 linuxppc-dev@lists.ozlabs.org, linux-hyperv@vger.kernel.org,
 linux-pci@vger.kernel.org, platform-driver-x86@vger.kernel.org,
 linux-arm-msm@vger.kernel.org, linux-remoteproc@vger.kernel.org,
 linux-s390@vger.kernel.org, linux-spi@vger.kernel.org,
 virtualization@lists.linux.dev, kvm@vger.kernel.org,
 xen-devel@lists.xenproject.org, linux-arm-kernel@lists.infradead.org
References: <20260324005919.2408620-1-dakr@kernel.org>
 <DHKGQN6D0ANO.2QYY3JTM5435O@kernel.org>
 <76355cb5-0b5d-4a29-9702-8d020a79f4c0@kernel.org>
 <DHKJ7VWI1CHO.3ETHUGQVPFFDE@kernel.org>
Content-Language: fr-FR
From: "Christophe Leroy (CS GROUP)" <chleroy@kernel.org>
In-Reply-To: <DHKJ7VWI1CHO.3ETHUGQVPFFDE@kernel.org>
Content-Type: text/plain; charset=UTF-8; format=flowed
Content-Transfer-Encoding: 8bit
X-purgate-ID: tlsNG-c1860d/1775322570-F7B44497-16658D0D/37/8700017816-1414974
X-purgate-type: clean
X-purgate-size: 1558



Le 04/04/2026 à 19:04, Danilo Krummrich a écrit :
> On Sat Apr 4, 2026 at 6:58 PM CEST, Christophe Leroy (CS GROUP) wrote:
>>
>>
>> Le 04/04/2026 à 17:07, Danilo Krummrich a écrit :
>>> On Tue Mar 24, 2026 at 1:59 AM CET, Danilo Krummrich wrote:
>>>> Danilo Krummrich (12):
>>>>     PCI: use generic driver_override infrastructure
>>>>     platform/wmi: use generic driver_override infrastructure
>>>>     vdpa: use generic driver_override infrastructure
>>>>     s390/cio: use generic driver_override infrastructure
>>>>     s390/ap: use generic driver_override infrastructure
>>>
>>> Applied to driver-core-testing, thanks!
>>>
>>>>     amba: use generic driver_override infrastructure
>>>>     cdx: use generic driver_override infrastructure
>>>>     hv: vmbus: use generic driver_override infrastructure
>>>>     rpmsg: use generic driver_override infrastructure
>>>
>>> I have not picked these up, as they have not received ACKs from the
>>> corresponding subsystem maintainers so far.
>>>
>>>>     bus: fsl-mc: use generic driver_override infrastructure
>>
>> I droped it from soc_fsl tree, some dependency must be missing.
>>
>> Feal free to take it if you can, it is acked-by Ioana.
> 
> It is based on v7.0-rc5; if you want I can pick it up.

Yes please pick it up as my tree is based on rc1.

Thanks
Christophe


> 
>>>>     spi: use generic driver_override infrastructure
>>>
>>> These have already been picked up via the respective subsystem trees -- thanks!
>>>
>>> Thanks,
>>> Danilo
> 



From xen-devel-bounces@lists.xenproject.org Sat Apr 04 19:20:45 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Sat, 04 Apr 2026 19:20:45 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1273911.1560327 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1w96Xm-0001xN-1r; Sat, 04 Apr 2026 19:20:30 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1273911.1560327; Sat, 04 Apr 2026 19: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 1w96Xl-0001xG-V8; Sat, 04 Apr 2026 19:20:29 +0000
Received: by outflank-mailman (input) for mailman id 1273911;
 Sat, 04 Apr 2026 19:20:28 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <dakr@kernel.org>) id 1w96Xk-0001xA-6N
 for xen-devel@lists.xenproject.org; Sat, 04 Apr 2026 19:20:28 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1w96Xi-00BNq2-RA
 for xen-devel@lists.xenproject.org; Sat, 04 Apr 2026 21:20:26 +0200
Received: from [10.42.69.3] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <dakr@kernel.org>)
 id 69d16411-5cb7-0a2a0a5109dd-0a2a4503d914-28
 for <xen-devel@lists.xenproject.org>; Sat, 04 Apr 2026 21:20:26 +0200
Received: from [172.234.252.31] (helo=sea.source.kernel.org)
 by tlsNG-33051d.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.0)
 (envelope-from <dakr@kernel.org>)
 id 69d16479-02b3-0a2a45030019-aceafc1f9f56-3
 for <xen-devel@lists.xenproject.org>; Sat, 04 Apr 2026 21:20:26 +0200
Received: from smtp.kernel.org (transwarp.subspace.kernel.org [100.75.92.58])
 by sea.source.kernel.org (Postfix) with ESMTP id 1359541720;
 Sat,  4 Apr 2026 19:20:24 +0000 (UTC)
Received: by smtp.kernel.org (Postfix) with ESMTPSA id 00214C19421;
 Sat,  4 Apr 2026 19:20: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=k20201202 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/simple; d=kernel.org;
	s=k20201202; t=1775330423;
	bh=Gm9FGkRc1QRpNSImSwgwSEPvOU2SLgI61ARuYW5LgUM=;
	h=Date:Subject:Cc:To:From:References:In-Reply-To:From;
	b=jmGUx9ea8KKZGI+yk4InrpqyltSpIFXbxzumeqJLrPMsCCsI1AmriWu84nJMybHDm
	 YQX3Ac/MMmi2g9ubzYQwGTmoLjoD5HvqXXGENZ7sZF+bdgDoJQgXEb5+YyoFBlZFth
	 rIDl6Or9j72Pxfg8gbRbLoxXUMFAACLFbQ4DfxU/vKJfbDZ88r7qcAUikXvNARJnPR
	 UKzC1aGXBRx4bgxjkQ5ETAqx1gHtveCsTmzJzi7+wf9pVTh4t9trQOG4pictre3Zqy
	 coxYtZTwXCoUTOSXcrTxyqOyBWyu2eDrD5N4/86+0enySLlkVbuU3KeCQL6A1XpL4u
	 dWWtgOZ4j3TJA==
Mime-Version: 1.0
Content-Transfer-Encoding: quoted-printable
Content-Type: text/plain; charset=UTF-8
Date: Sat, 04 Apr 2026 21:20:13 +0200
Message-Id: <DHKM3WP2ZJYE.84WX6IAGUH5@kernel.org>
Subject: Re: (subset) [PATCH 00/12] treewide: Convert buses to use generic
 driver_override
Cc: "Russell King" <linux@armlinux.org.uk>, "Greg Kroah-Hartman"
 <gregkh@linuxfoundation.org>, "Rafael J. Wysocki" <rafael@kernel.org>,
 "Ioana Ciornei" <ioana.ciornei@nxp.com>, "Nipun Gupta"
 <nipun.gupta@amd.com>, "Nikhil Agarwal" <nikhil.agarwal@amd.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>, "Bjorn Helgaas" <bhelgaas@google.com>, "Armin
 Wolf" <W_Armin@gmx.de>, "Bjorn Andersson" <andersson@kernel.org>, "Mathieu
 Poirier" <mathieu.poirier@linaro.org>, "Vineeth Vijayan"
 <vneethv@linux.ibm.com>, "Peter Oberparleiter" <oberpar@linux.ibm.com>,
 "Heiko Carstens" <hca@linux.ibm.com>, "Vasily Gorbik" <gor@linux.ibm.com>,
 "Alexander Gordeev" <agordeev@linux.ibm.com>, "Christian Borntraeger"
 <borntraeger@linux.ibm.com>, "Sven Schnelle" <svens@linux.ibm.com>, "Harald
 Freudenberger" <freude@linux.ibm.com>, "Holger Dengler"
 <dengler@linux.ibm.com>, "Mark Brown" <broonie@kernel.org>, "Michael S.
 Tsirkin" <mst@redhat.com>, "Jason Wang" <jasowang@redhat.com>, "Xuan Zhuo"
 <xuanzhuo@linux.alibaba.com>, =?utf-8?q?Eugenio_P=C3=A9rez?=
 <eperezma@redhat.com>, "Alex Williamson" <alex@shazbot.org>, "Juergen
 Gross" <jgross@suse.com>, "Stefano Stabellini" <sstabellini@kernel.org>,
 "Oleksandr Tyshchenko" <oleksandr_tyshchenko@epam.com>,
 <linux-kernel@vger.kernel.org>, <driver-core@lists.linux.dev>,
 <linuxppc-dev@lists.ozlabs.org>, <linux-hyperv@vger.kernel.org>,
 <linux-pci@vger.kernel.org>, <platform-driver-x86@vger.kernel.org>,
 <linux-arm-msm@vger.kernel.org>, <linux-remoteproc@vger.kernel.org>,
 <linux-s390@vger.kernel.org>, <linux-spi@vger.kernel.org>,
 <virtualization@lists.linux.dev>, <kvm@vger.kernel.org>,
 <xen-devel@lists.xenproject.org>, <linux-arm-kernel@lists.infradead.org>
To: "Christophe Leroy (CS GROUP)" <chleroy@kernel.org>
From: "Danilo Krummrich" <dakr@kernel.org>
References: <20260324005919.2408620-1-dakr@kernel.org>
 <DHKGQN6D0ANO.2QYY3JTM5435O@kernel.org>
 <76355cb5-0b5d-4a29-9702-8d020a79f4c0@kernel.org>
 <DHKJ7VWI1CHO.3ETHUGQVPFFDE@kernel.org>
 <a8c85884-e2ba-4a3a-a660-9715f0de2704@kernel.org>
In-Reply-To: <a8c85884-e2ba-4a3a-a660-9715f0de2704@kernel.org>
X-purgate-ID: tlsNG-33051d/1775330426-42319C9A-8B47D58F/0/0
X-purgate-type: clean
X-purgate-size: 178

On Sat Apr 4, 2026 at 7:09 PM CEST, Christophe Leroy (CS GROUP) wrote:
> Yes please pick it up as my tree is based on rc1.

Applied the patch to driver-core-testing, thanks!


From xen-devel-bounces@lists.xenproject.org Sun Apr 05 02:15:23 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Sun, 05 Apr 2026 02:15:23 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1273969.1560361 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1w9D11-0007LJ-Fc; Sun, 05 Apr 2026 02:15:07 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1273969.1560361; Sun, 05 Apr 2026 02:15: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 1w9D11-0007LB-AN; Sun, 05 Apr 2026 02:15:07 +0000
Received: by outflank-mailman (input) for mailman id 1273969;
 Sun, 05 Apr 2026 02:15:06 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <pengpeng@iscas.ac.cn>) id 1w9D10-0007L2-Kz
 for xen-devel@lists.xenproject.org; Sun, 05 Apr 2026 02:15:06 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1w9D0y-00HESx-8N
 for xen-devel@lists.xenproject.org; Sun, 05 Apr 2026 04:15:04 +0200
Received: from [10.42.69.4] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <pengpeng@iscas.ac.cn>)
 id 69d1c4b5-e002-0a2a0a5209dd-0a2a4504aa54-36
 for <xen-devel@lists.xenproject.org>; Sun, 05 Apr 2026 04:15:02 +0200
Received: from [159.226.251.21] (helo=cstnet.cn)
 by tlsNG-ebf023.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.0)
 (envelope-from <pengpeng@iscas.ac.cn>)
 id 69d1c5a3-bb33-0a2a45040019-9fe2fb15c5ca-3
 for <xen-devel@lists.xenproject.org>; Sun, 05 Apr 2026 04:15:01 +0200
Received: from 0005-arm-xen-v2.eml (unknown [111.196.245.197])
 by APP-01 (Coremail) with SMTP id qwCowADnjGihxdFpUAU5DA--.3582S2;
 Sun, 05 Apr 2026 10:14:57 +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: Pengpeng Hou <pengpeng@iscas.ac.cn>
Date: Sun, 5 Apr 2026 08:42:00 +0800
Message-ID: <20260405094005.5-arm-xen-v2-pengpeng@iscas.ac.cn>
To: Stefano Stabellini <sstabellini@kernel.org>
Cc: xen-devel@lists.xenproject.org, linux-arm-kernel@lists.infradead.org, linux-kernel@vger.kernel.org, pengpeng@iscas.ac.cn
In-Reply-To: <20260403111502.2-dt-arm-xen-pengpeng@iscas.ac.cn>
References: <20260403111502.2-dt-arm-xen-pengpeng@iscas.ac.cn>
Subject: [PATCH v2] ARM: xen: validate hypervisor compatible before parsing
 its version
X-CM-TRANSID:qwCowADnjGihxdFpUAU5DA--.3582S2
X-Coremail-Antispam: 1UD129KBjvJXoW7Zr4rKFW7Jw13Zryxtry5urg_yoW8CFyDpF
	WFg3sIvFWfta4xW34IyFWDWFy5G3WkXrW7XFyku3W7Ars8t34rKrW2qr1SvF93Ary8G3ya
	vrW0yF18AF4UJaUanT9S1TB71UUUUU7qnTZGkaVYY2UrUUUUjbIjqfuFe4nvWSU5nxnvy2
	9KBjDU0xBIdaVrnRJUUUkl14x267AKxVWUJVW8JwAFc2x0x2IEx4CE42xK8VAvwI8IcIk0
	rVWrJVCq3wAFIxvE14AKwVWUJVWUGwA2ocxC64kIII0Yj41l84x0c7CEw4AK67xGY2AK02
	1l84ACjcxK6xIIjxv20xvE14v26ryj6F1UM28EF7xvwVC0I7IYx2IY6xkF7I0E14v26F4j
	6r4UJwA2z4x0Y4vEx4A2jsIE14v26F4UJVW0owA2z4x0Y4vEx4A2jsIEc7CjxVAFwI0_Cr
	1j6rxdM2AIxVAIcxkEcVAq07x20xvEncxIr21l5I8CrVACY4xI64kE6c02F40Ex7xfMcIj
	6xIIjxv20xvE14v26r126r1DMcIj6I8E87Iv67AKxVWUJVW8JwAm72CE4IkC6x0Yz7v_Jr
	0_Gr1lF7xvr2IY64vIr41lF7I21c0EjII2zVCS5cI20VAGYxC7MxkF7I0En4kS14v26r12
	6r1DMxAIw28IcxkI7VAKI48JMxC20s026xCaFVCjc4AY6r1j6r4UMI8I3I0E5I8CrVAFwI
	0_Jr0_Jr4lx2IqxVCjr7xvwVAFwI0_JrI_JrWlx4CE17CEb7AF67AKxVWUAVWUtwCIc40Y
	0x0EwIxGrwCI42IY6xIIjxv20xvE14v26r1j6r1xMIIF0xvE2Ix0cI8IcVCY1x0267AKxV
	W8JVWxJwCI42IY6xAIw20EY4v20xvaj40_Jr0_JF4lIxAIcVC2z280aVAFwI0_Jr0_Gr1l
	IxAIcVC2z280aVCY1x0267AKxVW8JVW8JrUvcSsGvfC2KfnxnUUI43ZEXa7VUjiID7UUUU
	U==
X-Originating-IP: [111.196.245.197]
X-CM-SenderInfo: pshqw1xhqjqxpvfd2hldfou0/
X-purgate-ID: tlsNG-ebf023/1775355302-3152351B-AFCB4424/0/0
X-purgate-type: clean
X-purgate-size: 1932

fdt_find_hyper_node() reads the raw compatible property and then derives
hyper_node.version from a prefix match before later printing it with %s.
Flat DT properties are external boot input, and this path does not prove
that the first compatible entry is NUL-terminated within the returned
property length.

Keep the existing flat-DT lookup path, but verify that the first
compatible entry terminates within the returned property length before
deriving the version suffix from it.

Signed-off-by: Pengpeng Hou <pengpeng@iscas.ac.cn>
---
Changes since v1:
- keep `of_get_flat_dt_prop()` instead of switching to `fdt_stringlist_get()`
- validate the first compatible entry with bounded `strnlen()`

 arch/arm/xen/enlighten.c | 9 ++++++---
 1 file changed, 6 insertions(+), 3 deletions(-)

diff --git a/arch/arm/xen/enlighten.c b/arch/arm/xen/enlighten.c
index 4feed2c2..25a0ce3b 100644
--- a/arch/arm/xen/enlighten.c
+++ b/arch/arm/xen/enlighten.c
@@ -218,8 +218,9 @@ static __initdata struct {
 static int __init fdt_find_hyper_node(unsigned long node, const char *uname,
 				      int depth, void *data)
 {
-	const void *s = NULL;
+	const char *s = NULL;
 	int len;
+	size_t prefix_len = strlen(hyper_node.prefix);
 
 	if (depth != 1 || strcmp(uname, "hypervisor") != 0)
 		return 0;
@@ -228,9 +229,10 @@ static int __init fdt_find_hyper_node(unsigned long node, const char *uname,
 		hyper_node.found = true;
 
 	s = of_get_flat_dt_prop(node, "compatible", &len);
-	if (strlen(hyper_node.prefix) + 3  < len &&
-	    !strncmp(hyper_node.prefix, s, strlen(hyper_node.prefix)))
-		hyper_node.version = s + strlen(hyper_node.prefix);
+	if (s && len > 0 && strnlen(s, len) < len &&
+	    len > prefix_len + 3 &&
+	    !strncmp(hyper_node.prefix, s, prefix_len))
+		hyper_node.version = s + prefix_len;
 
 	/*
 	 * Check if Xen supports EFI by checking whether there is the
-- 
2.50.1



From xen-devel-bounces@lists.xenproject.org Sun Apr 05 09:41:46 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Sun, 05 Apr 2026 09:41:46 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1274018.1560370 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1w9Jz0-0008Dg-FV; Sun, 05 Apr 2026 09:41:30 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1274018.1560370; Sun, 05 Apr 2026 09:41: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 1w9Jz0-0008DZ-Cj; Sun, 05 Apr 2026 09:41:30 +0000
Received: by outflank-mailman (input) for mailman id 1274018;
 Sun, 05 Apr 2026 09:41:29 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <marmarek@invisiblethingslab.com>) id 1w9Jyy-0008DS-Ng
 for xen-devel@lists.xenproject.org; Sun, 05 Apr 2026 09:41:29 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1w9Jyx-00Cm8U-L5
 for xen-devel@lists.xenproject.org; Sun, 05 Apr 2026 11:41:28 +0200
Received: from [10.42.69.5] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <marmarek@invisiblethingslab.com>)
 id 69d22e00-5cb7-0a2a0a5109dd-0a2a4505c066-28
 for <xen-devel@lists.xenproject.org>; Sun, 05 Apr 2026 11:41:27 +0200
Received: from [103.168.172.145] (helo=fout-a2-smtp.messagingengine.com)
 by tlsNG-c201ff.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.0)
 (envelope-from <marmarek@invisiblethingslab.com>)
 id 69d22e45-3760-0a2a45050019-67a8ac91c3b3-3
 for <xen-devel@lists.xenproject.org>; Sun, 05 Apr 2026 11:41:26 +0200
Received: from phl-compute-02.internal (phl-compute-02.internal [10.202.2.42])
 by mailfout.phl.internal (Postfix) with ESMTP id 6ADE1EC0104;
 Sun,  5 Apr 2026 05:41:25 -0400 (EDT)
Received: from phl-frontend-04 ([10.202.2.163])
 by phl-compute-02.internal (MEProxy); Sun, 05 Apr 2026 05:41:25 -0400
Received: by mail.messagingengine.com (Postfix) with ESMTPA; Sun,
 5 Apr 2026 05:41:22 -0400 (EDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
Authentication-Results: eu.smtp.expurgate.cloud; dkim=pass header.s=fm1 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=fm1; t=1775382085;
	 x=1775468485; bh=QvhlfoP+8qUIG8tid6MgtVoRBcoarzphsI9W4aAkT5w=; b=
	v8of00BWmlnpqvMHcCKixvOiXa9xBPp19xBV1Sq9o26Ya56J5LnDjKFYDJF1sx5p
	bCquqKUsZ8gLOjNDiZhLq/eCdwBUjUfo3V3gcJTDtxEmQiAom7URCBm1Wpp80+Cz
	2tm0lLBJFlkG4NQzDL4blGTggcnLIODiP6uTRM5i0pXXTKIaqaoo2GYwzlzSMKwh
	AuqrB3HGAKQvY57Ez4y3r0+IgTZorzeYN253TdC5pWrvAcfy3A/OW7BGmvslNS/7
	ZAqVViXb3gYneesOmi/O+YEkjTU6TO7Z+3IiONOdOGo0Vd3Ln89gM7TFZ04iFpag
	6qUXrHoLAmyO1LKAULqHWw==
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=
	1775382085; x=1775468485; bh=QvhlfoP+8qUIG8tid6MgtVoRBcoarzphsI9
	W4aAkT5w=; b=vcipGLvGGS1iG/QH/vca/+ortGyIO3e7bxbU7uJOx61y3ZWICXC
	/hVDIBZN9aDgiHx9ux4wVtL6KVPHpczwf9s52TLhxlsxYb25nD4UXqZl3+g4evaA
	m6FoJGWvMbSgPClEIIIQLygZ8QniOfpq06LsLFYDU7/0vhttI/Jq0mgIKi3rZAQx
	RAR9rwYm2C2rdz1kird9cuVUu26KI1ziSLa9g5CvkgjRNUgP9qYe8t+dFfUJFC8R
	bm1i5X/sQrIzb/pL1QikeAmOxq3egUbYFO15xYM5bLnGrrAmHKI5wxn7WEXPvSli
	AuN51teCMM1jUdO9vW2S6zzWyN8YAAfddQw==
X-ME-Sender: <xms:RS7SaUedSWfyIJHApL1cJfJ-oW8b209_x3_I0nlIuepM7aUaOl4XNA>
    <xme:RS7SadGnRsil7gVMuMyv5XTDqCNt4hG1u5DJiOfQlXNtD4V1lKw6B14CrCe2A873m
    OVY-n15LqFU_uwCXpW5YNk_xswZ0Mc2i6cJhHI8buQ7OKI>
X-ME-Received: <xmr:RS7Sad3MmVZU1FC8L5wxbkW1lKHm62DznBef9my7vhvJJ-9f27XA_9oPFQ>
X-ME-Proxy-Cause: gggruggvucftvghtrhhoucdtuddrgeefhedrtddtgddugeegvdcutefuodetggdotefrod
    ftvfcurfhrohhfihhlvgemucfhrghsthforghilhdpuffrtefokffrpgfnqfghnecuuegr
    ihhlohhuthemuceftddtnecusecvtfgvtghiphhivghnthhsucdlqddutddtmdenucfjug
    hrpeffhffvvefukfhfgggtuggjsehgtderredttdejnecuhfhrohhmpeforghrvghkucfo
    rghrtgiihihkohifshhkihdqifpkrhgvtghkihcuoehmrghrmhgrrhgvkhesihhnvhhish
    hisghlvghthhhinhhgshhlrggsrdgtohhmqeenucggtffrrghtthgvrhhnpedvieegfefg
    ieejuedutefhffehjeegjeevuedtgeduteeujeetveevudevieffkeenucffohhmrghinh
    epghhithhhuhgsrdgtohhmpdhkvghrnhgvlhdrohhrghenucevlhhushhtvghrufhiiigv
    pedtnecurfgrrhgrmhepmhgrihhlfhhrohhmpehmrghrmhgrrhgvkhesihhnvhhishhisg
    hlvghthhhinhhgshhlrggsrdgtohhmpdhnsggprhgtphhtthhopeehpdhmohguvgepshhm
    thhpohhuthdprhgtphhtthhopehjghhrohhsshesshhushgvrdgtohhmpdhrtghpthhtoh
    epkhgvvhhinhdrsghrohgushhkhiesrghrmhdrtghomhdprhgtphhtthhopegrnhgurhgv
    fidrtghoohhpvghrfeestghithhrihigrdgtohhmpdhrtghpthhtohepgigvnhdquggvvh
    gvlheslhhishhtshdrgigvnhhprhhojhgvtghtrdhorhhgpdhrtghpthhtohepsghorhhi
    shdrohhsthhrohhvshhkhiesohhrrggtlhgvrdgtohhm
X-ME-Proxy: <xmx:RS7SaVny5xTMtBkZlbyW5wYPUVGISvLvVDJQB6uZlU5b1y3bpaZrqA>
    <xmx:RS7Sad_inxd9LpmgcDl4pXOqAYdm3jvLMpM5agiYYXPeja1yfDX1Zw>
    <xmx:RS7SaapMeEDzxvh0m2T9L4BqkKTbUKn4PwONmuCGnhhFkFaY6G4q0A>
    <xmx:RS7SaWmoCvfbp-RHaDnN_S9dv1--N0tV2NAdblmZlq_KZJ3LTP80Bw>
    <xmx:RS7Sad6zGR28dK2q3rK3pZKw9d35047BJDDlsC0ov9sYWcUm1DZ7WM_U>
Feedback-ID: i1568416f:Fastmail
Date: Sun, 5 Apr 2026 11:41:18 +0200
From: Marek =?utf-8?Q?Marczykowski-G=C3=B3recki?= <marmarek@invisiblethingslab.com>
To: =?utf-8?B?SsO8cmdlbiBHcm/Dnw==?= <jgross@suse.com>,
	Kevin Brodsky <kevin.brodsky@arm.com>
Cc: Andrew Cooper <andrew.cooper3@citrix.com>,
	xen-devel <xen-devel@lists.xenproject.org>,
	Boris Ostrovsky <boris.ostrovsky@oracle.com>
Subject: Re: kernel BUG around vmap/vfree -
 xen_enter_lazy_mmu()/xen_leave_lazy_mmu() - Linux 7.0-rc1
Message-ID: <adIuP7-sNwuOid80@mail-itl>
References: <aaBH3EAchUwKhrUA@mail-itl>
 <c2f973a0-fcb5-48ea-9638-cd73fa3e37ce@citrix.com>
 <c712c06f-7fcf-4876-b2d7-f2b7bc6f0dea@suse.com>
MIME-Version: 1.0
Content-Type: multipart/signed; micalg=pgp-sha256;
	protocol="application/pgp-signature"; boundary="C0DK1UxqrVq6HEXJ"
Content-Disposition: inline
In-Reply-To: <c712c06f-7fcf-4876-b2d7-f2b7bc6f0dea@suse.com>
X-purgate-ID: tlsNG-c201ff/1775382087-3999196F-EEBA8345/0/0
X-purgate-type: clean
X-purgate-size: 11170


--C0DK1UxqrVq6HEXJ
Content-Type: text/plain; protected-headers=v1; charset=utf-8
Content-Disposition: inline
Content-Transfer-Encoding: quoted-printable
Date: Sun, 5 Apr 2026 11:41:18 +0200
From: Marek =?utf-8?Q?Marczykowski-G=C3=B3recki?= <marmarek@invisiblethingslab.com>
To: =?utf-8?B?SsO8cmdlbiBHcm/Dnw==?= <jgross@suse.com>,
	Kevin Brodsky <kevin.brodsky@arm.com>
Cc: Andrew Cooper <andrew.cooper3@citrix.com>,
	xen-devel <xen-devel@lists.xenproject.org>,
	Boris Ostrovsky <boris.ostrovsky@oracle.com>
Subject: Re: kernel BUG around vmap/vfree -
 xen_enter_lazy_mmu()/xen_leave_lazy_mmu() - Linux 7.0-rc1

On Thu, Feb 26, 2026 at 02:41:12PM +0100, J=C3=BCrgen Gro=C3=9F wrote:
> On 26.02.26 14:27, Andrew Cooper wrote:
> > On 26/02/2026 1:17 pm, Marek Marczykowski-G=C3=B3recki wrote:
> > > Hi,
> > >=20
> > > When testing Linux 7.0-rc1 in PV dom0, I hit the following panic
> > > sometimes:
> > >=20
> > > [  436.849614] ------------[ cut here ]------------
> > > [  436.849669] kernel BUG at arch/x86/include/asm/xen/hypervisor.h:78!
> > > [  436.849693] Oops: invalid opcode: 0000 [#1] SMP NOPTI
> > > [  436.849710] CPU: 3 UID: 0 PID: 4021 Comm: kworker/u25:1 Not tainte=
d 7.0.0-0.rc1.1.qubes.1001.fc41.x86_64 #1 PREEMPT(full)
> > > [  436.849729] Hardware name: Star Labs StarBook/StarBook, BIOS 8.97 =
10/03/2023
> > > [  436.849743] Workqueue: i915_flip intel_atomic_commit_work [i915]
> > > [  436.850226] RIP: e030:xen_enter_lazy_mmu+0x24/0x30
> > > [  436.850245] Code: 90 90 90 90 90 90 f3 0f 1e fa 0f 1f 44 00 00 65 =
8b 05 b8 e5 02 03 85 c0 75 10 65 c7 05 a9 e5 02 03 01 00 00 00 c3 cc cc cc =
cc <0f> 0b 66 2e 0f 1f 84 00 00 00 00 00 90 90 90 90 90 90 90 90 90 90
> > > [  436.850270] RSP: e02b:ffffc90045727a68 EFLAGS: 00010202
> > > [  436.850283] RAX: 0000000000000001 RBX: ffff8881042fa6d0 RCX: 000ff=
fffffe00000
> > > [  436.850296] RDX: 0000000000000001 RSI: ffff88810a5a2980 RDI: 00000=
00000000000
> > > [  436.850308] RBP: ffffc90049eda000 R08: ffffc90049edc000 R09: ffffc=
90049edc000
> > > [  436.850320] R10: ffffc90049edc000 R11: ffffc90049edbfff R12: ffffc=
90049edc000
> > > [  436.850332] R13: ffffc90045727bb0 R14: ffffc90045727b28 R15: 80000=
0000000006b
> > > [  436.850356] FS:  0000000000000000(0000) GS:ffff888201e6e000(0000) =
knlGS:0000000000000000
> > > [  436.850371] CS:  e030 DS: 0000 ES: 0000 CR0: 0000000080050033
> > > [  436.850383] CR2: 00006543dbade250 CR3: 0000000115ef1000 CR4: 00000=
00000050660
> > > [  436.850401] Call Trace:
> > > [  436.850410]  <TASK>
> > > [  436.850420]  vmap_pages_pud_range+0x47c/0x530
> > > [  436.850439]  vmap_small_pages_range_noflush+0x1f1/0x2b0
> > > [  436.850451]  ? __get_vm_area_node+0x10a/0x170
> > > [  436.850465]  vmap+0x79/0xd0
> > > [  436.850476]  i915_gem_object_map_page+0x13b/0x210 [i915]
> > > [  436.850812]  i915_gem_object_pin_map+0x1e2/0x210 [i915]
> > > [  436.851123]  i915_gem_object_pin_map_unlocked+0x2d/0xa0 [i915]
> > > [  436.851424]  intel_dsb_buffer_create+0xed/0x1a0 [i915]
> > > [  436.851778]  intel_dsb_prepare+0xca/0x1a0 [i915]
> > > [  436.852110]  intel_atomic_dsb_finish+0x92/0x350 [i915]
> > > [  436.852456]  intel_atomic_commit_tail+0x326/0xd40 [i915]
> > > [  436.852769]  process_one_work+0x18d/0x380
> > > [  436.852779]  worker_thread+0x196/0x300
> > > [  436.852787]  ? __pfx_worker_thread+0x10/0x10
> > > [  436.852796]  kthread+0xe3/0x120
> > > [  436.852805]  ? __pfx_kthread+0x10/0x10
> > > [  436.852815]  ret_from_fork+0x19e/0x260
> > > [  436.852824]  ? __pfx_kthread+0x10/0x10
> > > [  436.852832]  ret_from_fork_asm+0x1a/0x30
> > > [  436.852842]  </TASK>
> > > [  436.852847] Modules linked in: snd_seq_dummy snd_hrtimer snd_hda_c=
odec_intelhdmi snd_hda_codec_hdmi snd_hda_codec_alc269 snd_hda_codec_realte=
k_lib snd_hda_scodec_component snd_hda_codec_generic snd_hda_intel snd_sof_=
pci_intel_tgl snd_sof_pci_intel_cnl snd_sof_intel_hda_generic soundwire_int=
el snd_sof_intel_hda_sdw_bpt snd_sof_intel_hda_common snd_soc_hdac_hda snd_=
sof_intel_hda_mlink snd_sof_intel_hda soundwire_cadence snd_sof_pci snd_sof=
_xtensa_dsp snd_sof snd_sof_utils snd_soc_acpi_intel_match snd_soc_acpi_int=
el_sdca_quirks soundwire_generic_allocation snd_soc_sdw_utils snd_soc_acpi =
crc8 intel_rapl_msr soundwire_bus intel_rapl_common snd_soc_sdca snd_soc_av=
s snd_soc_hda_codec snd_hda_ext_core snd_hda_codec vfat intel_uncore_freque=
ncy_common fat snd_hda_core snd_intel_dspcfg snd_intel_sdw_acpi snd_hwdep i=
ntel_powerclamp snd_soc_core iwlwifi snd_compress spi_nor iTCO_wdt ac97_bus=
 intel_pmc_bxt ee1004 mtd snd_pcm_dmaengine snd_seq cfg80211 snd_seq_device=
 pcspkr spi_intel_pci snd_pcm rfkill spi_intel snd_timer snd
> > > [  436.852939]  i2c_i801 soundcore i2c_smbus idma64 intel_pmc_core pm=
t_telemetry pmt_discovery pmt_class intel_hid intel_pmc_ssram_telemetry int=
el_scu_pltdrv sparse_keymap joydev loop fuse xenfs nfnetlink vsock_loopback=
 vmw_vsock_virtio_transport_common vmw_vsock_vmci_transport vsock zram vmw_=
vmci lz4hc_compress lz4_compress dm_thin_pool dm_persistent_data dm_bio_pri=
son dm_crypt xe drm_ttm_helper drm_suballoc_helper gpu_sched drm_gpuvm drm_=
exec drm_gpusvm_helper i915 i2c_algo_bit drm_buddy hid_multitouch i2c_hid_a=
cpi ghash_clmulni_intel video nvme wmi ttm i2c_hid nvme_core nvme_keyring d=
rm_display_helper nvme_auth xhci_pci pinctrl_tigerlake thunderbolt hkdf cec=
 xhci_hcd intel_vsec serio_raw xen_acpi_processor xen_privcmd xen_pciback x=
en_blkback xen_gntalloc xen_gntdev xen_evtchn scsi_dh_rdac scsi_dh_emc scsi=
_dh_alua uinput i2c_dev
> > > [  436.853183] ---[ end trace 0000000000000000 ]---
> > >=20
> > > or this:
> > >=20
> > > [  548.736884] ------------[ cut here ]------------
> > > [  548.736907] kernel BUG at arch/x86/include/asm/xen/hypervisor.h:85!
> > > [  548.736923] Oops: invalid opcode: 0000 [#1] SMP NOPTI
> > > [  548.736935] CPU: 0 UID: 0 PID: 206 Comm: kworker/0:2 Not tainted 7=
=2E0.0-0.rc1.1.qubes.1001.fc41.x86_64 #1 PREEMPT(full)
> > > [  548.736949] Hardware name: LENOVO 2347A45/2347A45, BIOS CBET4000 N=
itrokey-v0.2.0-2608-ga649597 01/01/1970
> > > [  548.736962] Workqueue: events delayed_vfree_work
> > > [  548.736976] RIP: e030:xen_leave_lazy_mmu+0x44/0x50
> > > [  548.736989] Code: 02 03 83 f8 01 75 23 65 c7 05 6c e4 02 03 00 00 =
00 00 65 ff 0d 7d b8 02 03 74 05 c3 cc cc cc cc e8 61 5d fd ff c3 cc cc cc =
cc <0f> 0b 66 2e 0f 1f 84 00 00 00 00 00 90 90 90 90 90 90 90 90 90 90
> > > [  548.737010] RSP: e02b:ffffc90040607cf0 EFLAGS: 00010297
> > > [  548.737018] RAX: 0000000000000000 RBX: ffff888164a70408 RCX: 00000=
00000000000
> > > [  548.737029] RDX: 0000000000000000 RSI: 000ffffffffff000 RDI: ffff8=
881069c0000
> > > [  548.737039] RBP: ffffc90049681000 R08: ffffc90049681000 R09: 00000=
00000000027
> > > [  548.737050] R10: 0000000000000027 R11: fefefefefefefeff R12: ffffc=
90049681000
> > > [  548.737060] R13: ffff8881002fd258 R14: 0000000000000000 R15: ffffc=
90040607dac
> > > [  548.737079] FS:  0000000000000000(0000) GS:ffff8881f88ee000(0000) =
knlGS:0000000000000000
> > > [  548.737090] CS:  e030 DS: 0000 ES: 0000 CR0: 0000000080050033
> > > [  548.737099] CR2: 000055576c2e6058 CR3: 000000010d47b000 CR4: 00000=
00000050660
> > > [  548.737115] Call Trace:
> > > [  548.737123]  <TASK>
> > > [  548.737128]  vunmap_pmd_range.isra.0+0x1f1/0x2e0
> > > [  548.737142]  vunmap_p4d_range+0x17d/0x290
> > > [  548.737151]  __vunmap_range_noflush+0x182/0x1d0
> > > [  548.737161]  ? _raw_spin_unlock+0xe/0x30
> > > [  548.737171]  remove_vm_area+0x40/0x70
> > > [  548.737180]  vfree.part.0+0x1b/0x290
> > > [  548.737189]  delayed_vfree_work+0x35/0x50
> > > [  548.737198]  process_one_work+0x18d/0x380
> > > [  548.737207]  worker_thread+0x196/0x300
> > > [  548.737215]  ? __pfx_worker_thread+0x10/0x10
> > > [  548.737224]  kthread+0xe3/0x120
> > > [  548.737233]  ? __pfx_kthread+0x10/0x10
> > > [  548.737242]  ret_from_fork+0x19e/0x260
> > > [  548.737250]  ? __pfx_kthread+0x10/0x10
> > > [  548.737258]  ret_from_fork_asm+0x1a/0x30
> > > [  548.737269]  </TASK>
> > > [  548.737274] Modules linked in: vfat fat snd_seq_dummy snd_hrtimer =
ath9k ath9k_common snd_hda_codec_intelhdmi snd_hda_codec_hdmi ath9k_hw snd_=
hda_codec_alc269 snd_hda_codec_realtek_lib snd_hda_scodec_component snd_hda=
_codec_generic snd_hda_intel snd_hda_codec mac80211 snd_hda_core snd_intel_=
dspcfg snd_intel_sdw_acpi snd_hwdep ath snd_seq snd_seq_device snd_ctl_led =
cfg80211 snd_pcm at24 thinkpad_acpi intel_rapl_msr i2c_i801 snd_timer spars=
e_keymap iTCO_wdt intel_rapl_common platform_profile intel_powerclamp intel=
_pmc_bxt pcspkr i2c_smbus rfkill libarc4 snd soundcore mei_me e1000e mei jo=
ydev lpc_ich loop fuse xenfs nfnetlink vsock_loopback vmw_vsock_virtio_tran=
sport_common vmw_vsock_vmci_transport vsock zram vmw_vmci lz4hc_compress lz=
4_compress dm_thin_pool dm_persistent_data dm_bio_prison dm_crypt i915 i2c_=
algo_bit drm_buddy ghash_clmulni_intel ttm sdhci_pci drm_display_helper sdh=
ci_uhs2 sdhci video xhci_pci cqhci wmi cec xhci_hcd ehci_pci mmc_core ehci_=
hcd serio_raw xen_acpi_processor xen_privcmd xen_pciback
> > > [  548.737348]  xen_blkback xen_gntalloc xen_gntdev xen_evtchn scsi_d=
h_rdac scsi_dh_emc scsi_dh_alua uinput i2c_dev
> > > [  548.737469] ---[ end trace 0000000000000000 ]---
> > >=20
> > > I don't have clear pattern when this happens, one was during host
> > > suspend, but the other was during "normal" test run (starting/stopping
> > > domUs and running stuff around them). Note also one of those is Intel
> > > and the other AMD, so it isn't really hardware specific.
> > >=20
> > > Slightly more details with links (especially serial0.txt in the logs
> > > tab) at
> > > https://github.com/QubesOS/qubes-linux-kernel/pull/662#issuecomment-3=
963326188
> > >=20
> > > Any idea?
> > >=20
> >=20
> > That looks like the issue Juergen fixed with:
> >=20
> > https://lore.kernel.org/xen-devel/20260220123715.834848-1-jgross@suse.c=
om/
>=20
> No, it doesn't. The fix is already in rc1, and the crash was quite early =
during
> boot (before any secondary CPUs were brought up).
>=20
> I guess this problem is related to the lazy_mmu_state series [1].

FWIW, the issue still happens on 7.0-rc6.

> Juergen
>=20
> [1]: https://lore.kernel.org/lkml/20251215150323.2218608-1-kevin.brodsky@=
arm.com/

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

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

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

iQEzBAEBCAAdFiEEhrpukzGPukRmQqkK24/THMrX1ywFAmnSLj4ACgkQ24/THMrX
1yymYwf+L8DVCpnBOyKU8gkMp1NPN7ipNFMkj0k8jb9gqrRurhwocXwCFkRlvpoI
RhoqB0cC1yPh5B/7vCJz7Yz7JfHVxpFpfXOr0gjLFvtIqHM+hxGrd5eSSauknZ9z
iOOOmjGuMCS1f1dNPceCbV0N0cwocJm2CJb06veRVOETdhrJnsPZ1lki1Z1SQpxO
ajlyYWJlEOYOnMsCj03l55sxpcoyekuD+WSeDnGNOMNUJIYcDVXVYLb524x6IJV9
62Gm7tFpGLBttlFHGakT8nWk93Fl3AGgB+UIfSaB1gMpk+mLUvyyrom/UEIBxzMe
6nJGbEerWbdgcBZOgR+5Qox+nt0nxg==
=Ofpl
-----END PGP SIGNATURE-----

--C0DK1UxqrVq6HEXJ--


From xen-devel-bounces@lists.xenproject.org Mon Apr 06 09:07:04 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 06 Apr 2026 09:07:04 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1274196.1560379 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1w9fux-0007tp-Kf; Mon, 06 Apr 2026 09:06:47 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1274196.1560379; Mon, 06 Apr 2026 09:06: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 1w9fux-0007ti-H7; Mon, 06 Apr 2026 09:06:47 +0000
Received: by outflank-mailman (input) for mailman id 1274196;
 Mon, 06 Apr 2026 09:06:45 +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 1w9fuv-0007tc-Ra
 for xen-devel@lists.xenproject.org; Mon, 06 Apr 2026 09:06:45 +0000
Received: from xenbits.xenproject.org ([104.239.192.120])
 by mail.xenproject.org with esmtp (Exim 4.96)
 (envelope-from <cody.zuschlag@xenproject.org>) id 1w9fuw-00COtD-01
 for xen-devel@lists.xenproject.org; Mon, 06 Apr 2026 09:06:45 +0000
Received: from mail-lf1-f41.google.com ([209.85.167.41])
 by xenbits.xenproject.org with esmtpsa (TLS1.3) tls
 TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (Exim 4.96)
 (envelope-from <cody.zuschlag@xenproject.org>) id 1w9fuw-002gaR-03
 for xen-devel@lists.xenproject.org; Mon, 06 Apr 2026 09:06:45 +0000
Received: by mail-lf1-f41.google.com with SMTP id
 2adb3069b0e04-5a2c9932781so3780490e87.1
 for <xen-devel@lists.xenproject.org>; Mon, 06 Apr 2026 02:06:45 -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>
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=uRb9zU1nhO8e66PvPrcitDqoBWT7m96rvAgdxUxGxxs=; b=mYSZfzT
	kWYD341u2Uz2w/rIJJwJ+q4QpGR6Qid3R2rds/c2vj5uOocP+gdze1/9fm/NRrd6UlqpshNWKVh9B
	x7OyiapT72MiHC0aCZtjzEq5fziYIy/fH1+Ap5GndSqesaDZ4t8MrK8ReJl+L8xhlhaPaVW4w6v69
	45puPP0Sto=;
X-Gm-Message-State: AOJu0YzCnj97ZOndULFE5VDV1okf/mTf1xOg9N3ma8O2V2wNE4Xb0RPk
	9OzywR8f1syHfV90YLfqq4gYLB5VgoKzLefOwQdA7iTr8X+cYly7Eubydk612e0CI4QUi8O6pJ4
	lGr2+tXZyy98RnSqN8M3O5Zjhv1owdco=
X-Received: by 2002:a05:6512:3a93:b0:5a1:334a:dd62 with SMTP id
 2adb3069b0e04-5a2c8d8f938mr4230825e87.13.1775466403726; Mon, 06 Apr 2026
 02:06:43 -0700 (PDT)
MIME-Version: 1.0
From: Cody Zuschlag <cody.zuschlag@xenproject.org>
Date: Mon, 6 Apr 2026 11:06:32 +0200
X-Gmail-Original-Message-ID: <CAJbE=KyqAjLWvjkfuxsCgM-xX8+HcYUdJwf-gfTKZUtGE50wSw@mail.gmail.com>
X-Gm-Features: AQROBzDr_VmetOvd5rMOvgnacPtnetEjpPE4300kz-lR7yQQw5yD1vBdap3V09I
Message-ID: <CAJbE=KyqAjLWvjkfuxsCgM-xX8+HcYUdJwf-gfTKZUtGE50wSw@mail.gmail.com>
Subject: [ANNOUNCE] Call for agenda items for April 9 Xen Community Call @
 15:00 UTC
To: xen-devel@lists.xenproject.org
Content-Type: multipart/alternative; boundary="0000000000004e0cfb064ec6fc20"

--0000000000004e0cfb064ec6fc20
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: quoted-printable

Hi everyone,

It=E2=80=99s time for the April Xen Project Community Call, happening this =
Thursday
at 4 pm UK time.

We=E2=80=99d love to have you join. You=E2=80=99re welcome to participate o=
r just listen
in. It=E2=80=99s a good chance to stay aligned, hear what others are workin=
g on,
and share updates across the community.


*Preparation:  *Please take a moment to review and update the agenda ahead
of the call:
=F0=9F=91=89 Agenda
<https://docs.google.com/document/d/1kJmtG6RzNDzqgvLuOZK4JYrriFApdcpl69KHJW=
EPDKE/edit?usp=3Dsharing>


*Feel free to:*- Add topics or updates
- Clean up anything that=E2=80=99s no longer relevant
- Drop in links to patches, threads, or docs where helpful


*Call Details:  *Date: Thursday, 9 April 2026
Time: 15:00 UTC (agenda starts at 15:05 UTC)
Find your local timezone here
<https://www.worldtimebuddy.com/?qm=3D1&lid=3D5368361,2988507,5128581,26437=
43,100,1850147,6&h=3D2988507&date=3D2026-4-9&sln=3D17-18&hf=3Dundefined&c=
=3D1450>

Join: https://meet.jit.si/XenProjectCommunityCall

We=E2=80=99ll open the room at 15:00 UTC and start the agenda at 15:05 UTC =
to give
folks a few minutes to join.

Want to be CC=E2=80=99d on future calls?
Add or remove yourself from our Sign-up Sheet
<https://cryptpad.fr/pad/#/2/pad/edit/D9vGzihPxxAOe6RFPz0sRCf+/>.

See you there!


Cody Zuschlag
Xen Project - Community Manager

--0000000000004e0cfb064ec6fc20
Content-Type: text/html; charset="UTF-8"
Content-Transfer-Encoding: quoted-printable

<div dir=3D"ltr"><div>Hi everyone,<br><br>It=E2=80=99s time for the April X=
en Project Community Call, happening this Thursday at 4 pm UK time.<br><br>=
We=E2=80=99d love to have you join. You=E2=80=99re welcome to participate o=
r just listen in. It=E2=80=99s a good chance to stay aligned, hear what oth=
ers are working on, and share updates across the community.<br><br><b>Prepa=
ration: =C2=A0<br></b>Please take a moment to review and update the agenda =
ahead of the call: =C2=A0<br>=F0=9F=91=89=C2=A0<a href=3D"https://docs.goog=
le.com/document/d/1kJmtG6RzNDzqgvLuOZK4JYrriFApdcpl69KHJWEPDKE/edit?usp=3Ds=
haring">Agenda</a><br><br><b>Feel free to:<br></b>- Add topics or updates =
=C2=A0<br>- Clean up anything that=E2=80=99s no longer relevant =C2=A0<br>-=
 Drop in links to patches, threads, or docs where helpful =C2=A0<br><br><b>=
Call Details: =C2=A0<br></b>Date: Thursday, 9 April 2026 =C2=A0<br>Time: 15=
:00 UTC (agenda starts at 15:05 UTC) =C2=A0<br><a href=3D"https://www.world=
timebuddy.com/?qm=3D1&amp;lid=3D5368361,2988507,5128581,2643743,100,1850147=
,6&amp;h=3D2988507&amp;date=3D2026-4-9&amp;sln=3D17-18&amp;hf=3Dundefined&a=
mp;c=3D1450">Find your local timezone here</a> =C2=A0<br>Join: <a href=3D"h=
ttps://meet.jit.si/XenProjectCommunityCall">https://meet.jit.si/XenProjectC=
ommunityCall </a>=C2=A0<br><br>We=E2=80=99ll open the room at 15:00 UTC and=
 start the agenda at 15:05 UTC to give folks a few minutes to join.</div><d=
iv><br></div><div>Want to be CC=E2=80=99d on future calls?<br>Add or remove=
 yourself from our=C2=A0<a href=3D"https://cryptpad.fr/pad/#/2/pad/edit/D9v=
GzihPxxAOe6RFPz0sRCf+/" target=3D"_blank">Sign-up Sheet</a>.<br><br>See you=
 there!</div><div><br></div><div><div dir=3D"ltr" class=3D"gmail_signature"=
 data-smartmail=3D"gmail_signature"><div dir=3D"ltr"><img src=3D"https://ci=
3.googleusercontent.com/mail-sig/AIorK4x5nkRDCOFJDJAv9aMXdZ0mghItsp3D36JrwB=
CQtitBSW_0NeDS6mBmJ2F4vZVE2oBOqnY6IaJUrl12"><br><div>Cody Zuschlag</div><di=
v>Xen Project - Community Manager</div></div></div></div></div>

--0000000000004e0cfb064ec6fc20--


From xen-devel-bounces@lists.xenproject.org Mon Apr 06 14:59:34 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 06 Apr 2026 14:59:34 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1274219.1560388 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1w9lQA-0005Zp-9p; Mon, 06 Apr 2026 14:59:22 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1274219.1560388; Mon, 06 Apr 2026 14:59: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 1w9lQA-0005Zi-6N; Mon, 06 Apr 2026 14:59:22 +0000
Received: by outflank-mailman (input) for mailman id 1274219;
 Mon, 06 Apr 2026 14:59:20 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <rafael@kernel.org>) id 1w9lQ8-0005Za-Hn
 for xen-devel@lists.xenproject.org; Mon, 06 Apr 2026 14:59:20 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1w9lQ6-001A8P-Qa
 for xen-devel@lists.xenproject.org; Mon, 06 Apr 2026 16:59:18 +0200
Received: from [10.42.69.10] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <rafael@kernel.org>)
 id 69d3c9e9-e002-0a2a0a5209dd-0a2a450ae32c-44
 for <xen-devel@lists.xenproject.org>; Mon, 06 Apr 2026 16:59:18 +0200
Received: from [172.234.252.31] (helo=sea.source.kernel.org)
 by tlsNG-4011c0.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.0)
 (envelope-from <rafael@kernel.org>)
 id 69d3ca44-ee98-0a2a450a0019-aceafc1f8362-3
 for <xen-devel@lists.xenproject.org>; Mon, 06 Apr 2026 16:59:18 +0200
Received: from smtp.kernel.org (transwarp.subspace.kernel.org [100.75.92.58])
 by sea.source.kernel.org (Postfix) with ESMTP id E4B394456D
 for <xen-devel@lists.xenproject.org>; Mon,  6 Apr 2026 14:59:15 +0000 (UTC)
Received: by smtp.kernel.org (Postfix) with ESMTPSA id CA74EC2BCAF
 for <xen-devel@lists.xenproject.org>; Mon,  6 Apr 2026 14:59:15 +0000 (UTC)
Received: by mail-oi1-f175.google.com with SMTP id
 5614622812f47-470145d7e6fso691448b6e.2
 for <xen-devel@lists.xenproject.org>; Mon, 06 Apr 2026 07:59:15 -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=k20201202 header.d=kernel.org header.i="@kernel.org" header.h="References:In-Reply-To:From:Date:Subject:To:Cc"
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org;
	s=k20201202; t=1775487555;
	bh=xQ7o66TtbbwulQnJW5l2ZtOfYQA79hhGSfn9VhPlO6U=;
	h=References:In-Reply-To:From:Date:Subject:To:Cc:From;
	b=MLkaENd1y02jG6YsphOhuZTp0iQI96L6WFY5DEmo/DZ6WCfvoSBDZJV2ohYZSu1N9
	 ac4WV6CKVr3vtjWO5PyYEkAdXK0hp0G+RobW161z0dcu3s/VU0gY22kCs+MYXqUHBH
	 Liz1EHAuKjE4fTRx4+YsiI+t4vTTDKeLdDI2YZy0dAHG/YzL3nR/Rt8+yoiTCr6Y7R
	 31IDqYUjMqFbupJ1fx/4xFWsQpHeFVPqQZdMM9fWEudaIkvMRtjafaQw7H2b7xvoYg
	 xYFQlwgI/yUaOmD2NLJlqgiOeQ45VmSMD64YK+4sRFnv7nXs5NX2dbzF574dvLBFqO
	 XtniXv49RXROw==
X-Forwarded-Encrypted: i=1; AJvYcCU51LRlYmWTCYBjiS/bjkT9ql4tNGOEY6NcTvJ8Z2Nm+kVowu+C0zb9v1qaVSMgLjzaDu/SZk+JDQc=@lists.xenproject.org
X-Gm-Message-State: AOJu0YxKOfxsclLcyuqDDA9OgUVaLOPDta6cLHRj7l7qwWuGEwmTeH6u
	B/hZFKMpn1qX5YrPlfw62E0KbC5UlITqn6wBWTFYUxCZgTEbLpFTaJRX4pdGxO908N7omtEPdjk
	zT9IFfK4asM5RtRD2M1z//rHtZeBYcrI=
X-Received: by 2002:a05:6808:1910:b0:468:776:1ead with SMTP id
 5614622812f47-46ef5af739fmr6450744b6e.21.1775487554002; Mon, 06 Apr 2026
 07:59:14 -0700 (PDT)
MIME-Version: 1.0
References: <20260401081640.26875-1-fengchengwen@huawei.com>
In-Reply-To: <20260401081640.26875-1-fengchengwen@huawei.com>
From: "Rafael J. Wysocki" <rafael@kernel.org>
Date: Mon, 6 Apr 2026 16:58:58 +0200
X-Gmail-Original-Message-ID: <CAJZ5v0gE9jLbaGy0yJhNZdpQJTR9stE-ABNQVvP5jqss3LQpFw@mail.gmail.com>
X-Gm-Features: AQROBzDy996ma1a9twY_5lJC3Avr9hchzSyUdEAhSG92k1NHCBaaPp2eIIIoft4
Message-ID: <CAJZ5v0gE9jLbaGy0yJhNZdpQJTR9stE-ABNQVvP5jqss3LQpFw@mail.gmail.com>
Subject: Re: [PATCH RESEND v10 0/8] ACPI: Unify CPU UID interface and fix
 ARM64 TPH steer-tag issue
To: Chengwen Feng <fengchengwen@huawei.com>
Cc: Bjorn Helgaas <bhelgaas@google.com>, Catalin Marinas <catalin.marinas@arm.com>, 
	Will Deacon <will@kernel.org>, "Rafael J . Wysocki" <rafael@kernel.org>, Jonathan Corbet <corbet@lwn.net>, 
	WANG Xuerui <kernel@xen0n.name>, Thomas Gleixner <tglx@kernel.org>, 
	Dave Hansen <dave.hansen@linux.intel.com>, "H . Peter Anvin" <hpa@zytor.com>, 
	Juergen Gross <jgross@suse.com>, Boris Ostrovsky <boris.ostrovsky@oracle.com>, 
	Len Brown <lenb@kernel.org>, Sunil V L <sunilvl@ventanamicro.com>, 
	Mark Rutland <mark.rutland@arm.com>, Jonathan Cameron <jonathan.cameron@huawei.com>, 
	Kees Cook <kees@kernel.org>, Yanteng Si <si.yanteng@linux.dev>, 
	Sean Christopherson <seanjc@google.com>, Kai Huang <kai.huang@intel.com>, 
	Tom Lendacky <thomas.lendacky@amd.com>, Thomas Huth <thuth@redhat.com>, 
	Thorsten Blum <thorsten.blum@linux.dev>, Kevin Loughlin <kevinloughlin@google.com>, 
	Zheyun Shen <szy0127@sjtu.edu.cn>, Peter Zijlstra <peterz@infradead.org>, 
	Pawan Gupta <pawan.kumar.gupta@linux.intel.com>, Xin Li <xin@zytor.com>, 
	"Ahmed S . Darwish" <darwi@linutronix.de>, Sohil Mehta <sohil.mehta@intel.com>, 
	Ilkka Koskinen <ilkka@os.amperecomputing.com>, Robin Murphy <robin.murphy@arm.com>, 
	James Clark <james.clark@linaro.org>, Besar Wicaksono <bwicaksono@nvidia.com>, 
	Ma Ke <make24@iscas.ac.cn>, Wei Huang <wei.huang2@amd.com>, 
	Andy Gospodarek <andrew.gospodarek@broadcom.com>, Somnath Kotur <somnath.kotur@broadcom.com>, 
	punit.agrawal@oss.qualcomm.com, guohanjun@huawei.com, suzuki.poulose@arm.com, 
	ryan.roberts@arm.com, chenl311@chinatelecom.cn, masahiroy@kernel.org, 
	wangyuquan1236@phytium.com.cn, anshuman.khandual@arm.com, 
	heinrich.schuchardt@canonical.com, Eric.VanTassell@amd.com, 
	wangzhou1@hisilicon.com, wanghuiqiang@huawei.com, liuyonglong@huawei.com, 
	linux-pci@vger.kernel.org, linux-doc@vger.kernel.org, 
	linux-kernel@vger.kernel.org, linux-arm-kernel@lists.infradead.org, 
	loongarch@lists.linux.dev, linux-riscv@lists.infradead.org, 
	xen-devel@lists.xenproject.org, linux-acpi@vger.kernel.org, 
	linux-perf-users@vger.kernel.org, stable@vger.kernel.org, x86@kernel.org
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: quoted-printable
X-purgate-ID: tlsNG-4011c0/1775487558-BE3510B1-C94A14ED/0/0
X-purgate-type: clean
X-purgate-size: 3276

On Wed, Apr 1, 2026 at 10:16=E2=80=AFAM Chengwen Feng <fengchengwen@huawei.=
com> wrote:
>
> This patchset unifies ACPI Processor UID retrieval across
> arm64/loongarch/riscv/x86 via acpi_get_cpu_uid() (with input validation)
> and fixes ARM64 CPU steer-tag retrieval failure in PCI/TPH:
>
> 1-4: Add acpi_get_cpu_uid() for arm64/loongarch/riscv/x86 (update
>      respective users)
> 5: Centralize acpi_get_cpu_uid() declaration in include/linux/acpi.h
> 6: Clean up perf/arm_cspmu
> 7: Clean up ACPI/PPTT and remove unused get_acpi_id_for_cpu()
> 8: Pass ACPI Processor UID to Cache Locality _DSM
>
> The interface refactor ensures consistent CPU UID retrieval across
> architectures (no functional changes for valid inputs) and provides the
> unified interface required for the ARM64 TPH fix
>
> ---
> Changes in v10-resend:
> - Add Catalin's ack-by for arm64 commit
> - Add CC to x86@kernel.org
>
> Changes in v10:
> - Refine commit header&log according to Punit's and Bjorn's review
> - Split perf/arm_cspmu as a separate commit which address Punit's
>   review
>
> Changes in v9:
> - Address Bjorn's review: split commits to each platform so that make
>   them easy to review
>
> Changes in v8:
> - Moving arm64's get_cpu_for_acpi_id() to kernel/acpi.c which address
>   Jeremy's review
>
> Chengwen Feng (8):
>   arm64: acpi: Add acpi_get_cpu_uid() for unified ACPI CPU UID retrieval
>   LoongArch: Add acpi_get_cpu_uid() for unified ACPI CPU UID retrieval
>   RISC-V: ACPI: Add acpi_get_cpu_uid() for unified ACPI CPU UID
>     retrieval
>   x86/acpi: Add acpi_get_cpu_uid() for unified ACPI CPU UID retrieval
>   ACPI: Centralize acpi_get_cpu_uid() declaration in
>     include/linux/acpi.h
>   perf: arm_cspmu: Switch to acpi_get_cpu_uid() from
>     get_acpi_id_for_cpu()
>   ACPI: PPTT: Use acpi_get_cpu_uid() and remove get_acpi_id_for_cpu()
>   PCI/TPH: Pass ACPI Processor UID to Cache Locality _DSM
>
>  Documentation/PCI/tph.rst          |  4 +--
>  arch/arm64/include/asm/acpi.h      | 17 +---------
>  arch/arm64/kernel/acpi.c           | 30 ++++++++++++++++++
>  arch/loongarch/include/asm/acpi.h  |  5 ---
>  arch/loongarch/kernel/acpi.c       |  9 ++++++
>  arch/riscv/include/asm/acpi.h      |  4 ---
>  arch/riscv/kernel/acpi.c           | 16 ++++++++++
>  arch/riscv/kernel/acpi_numa.c      |  9 ++++--
>  arch/x86/include/asm/cpu.h         |  1 -
>  arch/x86/include/asm/smp.h         |  1 -
>  arch/x86/kernel/acpi/boot.c        | 20 ++++++++++++
>  arch/x86/xen/enlighten_hvm.c       |  5 +--
>  drivers/acpi/pptt.c                | 50 ++++++++++++++++++++++--------
>  drivers/acpi/riscv/rhct.c          |  7 ++++-
>  drivers/pci/tph.c                  | 16 +++++++---
>  drivers/perf/arm_cspmu/arm_cspmu.c |  6 ++--
>  include/linux/acpi.h               | 11 +++++++
>  include/linux/pci-tph.h            |  4 +--
>  18 files changed, 158 insertions(+), 57 deletions(-)
>
> --

Applied as 7.1 material, but please note that I haven't tagged it
explicitly for "stable".

The last patch carries a Fixes: tag which should be suitable for
"stable" to pick it up and you may as well request the whole series to
be picked up by "stable" when it hits the mainline.

Thanks!


From xen-devel-bounces@lists.xenproject.org Mon Apr 06 15:30:13 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 06 Apr 2026 15:30:13 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1274229.1560396 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1w9ltw-00021k-BY; Mon, 06 Apr 2026 15:30:08 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1274229.1560396; Mon, 06 Apr 2026 15:30: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 1w9ltw-00021d-91; Mon, 06 Apr 2026 15:30:08 +0000
Received: by outflank-mailman (input) for mailman id 1274229;
 Mon, 06 Apr 2026 15:30:07 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <marmarek@invisiblethingslab.com>) id 1w9ltu-0001yI-Sq
 for xen-devel@lists.xenproject.org; Mon, 06 Apr 2026 15:30:07 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1w9ltt-001E1I-Od
 for xen-devel@lists.xenproject.org; Mon, 06 Apr 2026 17:30:05 +0200
Received: from [10.42.69.1] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <marmarek@invisiblethingslab.com>)
 id 69d3d15a-2eae-0a2a0a5409dd-0a2a4501e71a-42
 for <xen-devel@lists.xenproject.org>; Mon, 06 Apr 2026 17:30:05 +0200
Received: from [103.168.172.151] (helo=fout-a8-smtp.messagingengine.com)
 by tlsNG-d62444.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.0)
 (envelope-from <marmarek@invisiblethingslab.com>)
 id 69d3d17b-6fc9-0a2a45010019-67a8ac97a193-3
 for <xen-devel@lists.xenproject.org>; Mon, 06 Apr 2026 17:30:04 +0200
Received: from phl-compute-03.internal (phl-compute-03.internal [10.202.2.43])
 by mailfout.phl.internal (Postfix) with ESMTP id 5A028EC03FD;
 Mon,  6 Apr 2026 11:30:02 -0400 (EDT)
Received: from phl-frontend-04 ([10.202.2.163])
 by phl-compute-03.internal (MEProxy); Mon, 06 Apr 2026 11:30:02 -0400
Received: by mail.messagingengine.com (Postfix) with ESMTPA; Mon,
 6 Apr 2026 11:30:00 -0400 (EDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
Authentication-Results: eu.smtp.expurgate.cloud; dkim=pass header.s=fm1 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=fm1; t=1775489402;
	 x=1775575802; bh=0sQ1pmUCsIAULZ6+kpDaBqJOkWcTJ+PmOvsnYD2tNLc=; b=
	mDWMz2S3AwyfHzecVu8tSEYVEFQrhkhQ9m2hZl4ZLBRyBpOIDp/I39Z23f412D5X
	Hg1oALXcNmOl6lJ0zFUr6g68platPKNO06DEo8OfBxq1ti+nRyhsszqOaWGazv60
	MEEaYIouR3ibsgR3JKjkRljV/29mBmON9XXQLbBkCkhmupld/66utzd+on5Qq60y
	BOA2HqMj2/BBQE+Uw0AsFoTDJOX1tHXBU4bJuK7d2n4g8bG/cjnXUpDz8izCu9jT
	rF+jSCdXNcF6jVNYoqqKsqrczOw+B3YCHIBmGPaXjpqVBBwRx2QT3wKc/AYGLm3H
	b75n/u0pNpMKfN1ft3iniw==
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=
	1775489402; x=1775575802; bh=0sQ1pmUCsIAULZ6+kpDaBqJOkWcTJ+PmOvs
	nYD2tNLc=; b=o5ry1wnS6FC549d+HELAr/PD9Za4Uz3432rvWFhXC7/37JjWKje
	U9ogjzPZpBT51g1YnGxrNM8h+f/KpJcDZVmoA17qQtte1IuzaKq7YI4z14TUfxL+
	jzFqn28Yxw/2FbSZTnkWu3T94rpJclj4qV8OEXTKgGZcwe4yp/n3amV9rGEpGmZF
	S+0F5LIzUgpUuXZRHETouu8wq1+sZArI7pNobvCRD/yir7f/pkoJXyW2Gz/u4yh9
	HKG3VKSs6/xWXWKftDh0lVNoewBjAlVGZEt1cY17WpE6S7kmSWdWskGdtnuHSRCy
	coOeozHSMsdF9EUgwLldXeUXVS1FBIGJo9Q==
X-ME-Sender: <xms:edHTaRT0wMMo9r9PNyztsNytDPXE8ogAM5C3bjYGYbIP1ttXAeuTnQ>
    <xme:edHTaRylEHLlYPEHqV1bZni4RWBc_N_Txdu-1POwERG673CH5edhrQcT7jwDG1a1y
    t5tDm0vg3uL_kU0giFtU4_of6b0EqQ6RMBShRxnGhlE-51O>
X-ME-Received: <xmr:edHTab2CJ3ESCZMxXUU9LSxf0tWPI4oX6wxwuXQ2zjMGHNfP7YxYLgGGzQJmHG4iCPFS1ZisU9fUFbxVV-_d_QEQg0BsFQEY25k>
X-ME-Proxy-Cause: gggruggvucftvghtrhhoucdtuddrgeefhedrtddtgddukedtkecutefuodetggdotefrod
    ftvfcurfhrohhfihhlvgemucfhrghsthforghilhdpuffrtefokffrpgfnqfghnecuuegr
    ihhlohhuthemuceftddtnecusecvtfgvtghiphhivghnthhsucdlqddutddtmdenucfjug
    hrpeffhffvvefukfhfgggtuggjsehgtdorredttdejnecuhfhrohhmpeforghrvghkucfo
    rghrtgiihihkohifshhkihdqifpkrhgvtghkihcuoehmrghrmhgrrhgvkhesihhnvhhish
    hisghlvghthhhinhhgshhlrggsrdgtohhmqeenucggtffrrghtthgvrhhnpeeukeegleef
    uedvffekleefveeggedtueejhfeggfeflefgieejhedtkeejheffjeenucffohhmrghinh
    epnhhtphdrohhrghenucevlhhushhtvghrufhiiigvpedtnecurfgrrhgrmhepmhgrihhl
    fhhrohhmpehmrghrmhgrrhgvkhesihhnvhhishhisghlvghthhhinhhgshhlrggsrdgtoh
    hmpdhnsggprhgtphhtthhopeegpdhmohguvgepshhmthhpohhuthdprhgtphhtthhopehj
    sggvuhhlihgthhesshhushgvrdgtohhmpdhrtghpthhtohepgigvnhdquggvvhgvlheslh
    hishhtshdrgigvnhhprhhojhgvtghtrdhorhhgpdhrtghpthhtohepjhhgrhhoshhssehs
    uhhsvgdrtghomhdprhgtphhtthhopehrohhgvghrrdhprghusegtihhtrhhigidrtghomh
X-ME-Proxy: <xmx:edHTaX6GpPLzOK7FiPeIajuZZoka5iug9AnmSPL33sQUj7e4NiWTlQ>
    <xmx:edHTaWWtSw4pW4UAqf4ljmaoN5x2SKVk9aRT49yJxS-SnUa9vutOLw>
    <xmx:edHTaeDfs9GdMzFlQruC4ULel8MecFbcspJEmvIwZrgcj1_S_zX8cg>
    <xmx:edHTad6lJA9x04ifEPN8nVeGs_6spvUDmS46d3wpNj8CQPs5sEKj-Q>
    <xmx:etHTacPTdHHo6j-SK6E_4WSl_SdRauuF3gEyCeOwq3lq3r76yJ6FcBlR>
Feedback-ID: i1568416f:Fastmail
Date: Mon, 6 Apr 2026 17:29:58 +0200
From: Marek =?utf-8?Q?Marczykowski-G=C3=B3recki?= <marmarek@invisiblethingslab.com>
To: Jan Beulich <jbeulich@suse.com>
Cc: xen-devel <xen-devel@lists.xenproject.org>,
	=?utf-8?B?SsO8cmdlbiBHcm/Dnw==?= <jgross@suse.com>,
	Roger Pau =?utf-8?B?TW9ubsOp?= <roger.pau@citrix.com>
Subject: Re: Slow (higher scheduling latency?) system after S3 - regression
 4.17 -> 4.19 ?
Message-ID: <adPRdiCTLZEXtXpq@mail-itl>
References: <aPzBO_eW8mQHM66u@mail-itl>
 <acQzzlXNDxNq885V@mail-itl>
 <29775afa-e17b-4c44-a2a8-4ef4bc7cdf0f@suse.com>
 <acUqOL232lp-Lw1v@mail-itl>
 <cbed767b-4ac4-4989-8778-43ff321ae977@suse.com>
 <acVWX8vkhZiFfonP@mail-itl>
 <88c65ec7-b7f7-4d8b-a453-d707440b43cb@suse.com>
 <acZ8ez4dmQay1JSw@mail-itl>
 <ac5l-HgbDRcVkiWb@mail-itl>
 <ac_Gu2lm4Jnoz7WN@mail-itl>
MIME-Version: 1.0
Content-Type: multipart/signed; micalg=pgp-sha256;
	protocol="application/pgp-signature"; boundary="F629bKJhvAiDwbl3"
Content-Disposition: inline
In-Reply-To: <ac_Gu2lm4Jnoz7WN@mail-itl>
X-purgate-ID: tlsNG-d62444/1775489405-BC766185-E61D7C9F/0/0
X-purgate-type: clean
X-purgate-size: 3042


--F629bKJhvAiDwbl3
Content-Type: text/plain; protected-headers=v1; charset=utf-8
Content-Disposition: inline
Content-Transfer-Encoding: quoted-printable
Date: Mon, 6 Apr 2026 17:29:58 +0200
From: Marek =?utf-8?Q?Marczykowski-G=C3=B3recki?= <marmarek@invisiblethingslab.com>
To: Jan Beulich <jbeulich@suse.com>
Cc: xen-devel <xen-devel@lists.xenproject.org>,
	=?utf-8?B?SsO8cmdlbiBHcm/Dnw==?= <jgross@suse.com>,
	Roger Pau =?utf-8?B?TW9ubsOp?= <roger.pau@citrix.com>
Subject: Re: Slow (higher scheduling latency?) system after S3 - regression
 4.17 -> 4.19 ?

On Fri, Apr 03, 2026 at 03:55:07PM +0200, Marek Marczykowski-G=C3=B3recki w=
rote:
> On Thu, Apr 02, 2026 at 03:02:15PM +0200, Marek Marczykowski-G=C3=B3recki=
 wrote:
> > On Fri, Mar 27, 2026 at 01:47:55PM +0100, Marek Marczykowski-G=C3=B3rec=
ki wrote:
> > > Some further observation, this time regarding timers:
> >=20
> > In the meantime Roger suggested it might be about C-states. So, I just
> > tried booting with max_cstate=3D0. I got this:
>=20
> We had a design session on this issue, and managed to find (thanks Roger!)
> that adding:
>=20
>     tsc_mode=3D'always_emulate'
>=20
> to the domU config fixes the issue. Now, the question is how to fix it
> properly...

I also did another test with NTP inside domU (after host S3):

$ ntpdate -q pool.ntp.org
2026-04-06 00:07:01.559218 (+0200) -0.216281 +/- 0.012486 pool.ntp.org 141.=
144.241.16 s2 no-leap
$ ntpdate -q pool.ntp.org
2026-04-06 00:57:40.852612 (+0200) -0.255782 +/- 0.013022 pool.ntp.org 185.=
252.140.125 s2 no-leap
$ ntpdate -q pool.ntp.org
2026-04-06 13:07:57.647126 (+0200) -0.791802 +/- 0.056578 pool.ntp.org 185.=
248.188.98 s1 no-leap
$ ntpdate -q pool.ntp.org
2026-04-06 13:08:01.844118 (+0200) -0.832599 +/- 0.012563 pool.ntp.org 185.=
248.188.98 s1 no-leap
$ ntpdate -q 141.144.241.16
2026-04-06 13:08:47.835271 (+0200) -0.819725 +/- 0.028655 141.144.241.16 s2=
 no-leap
$ ntpdate -q 141.144.241.16
2026-04-06 13:08:51.290526 (+0200) -0.833668 +/- 0.015501 141.144.241.16 s2=
 no-leap
$ ntpdate -q 141.144.241.16
2026-04-06 13:08:56.136567 (+0200) -0.832294 +/- 0.014493 141.144.241.16 s2=
 no-leap
$ ntpdate -q 141.144.241.16
2026-04-06 17:21:41.017554 (+0200) -1.044511 +/- 0.021817 141.144.241.16 s2=
 no-leap

So, domU's clock definitely drifts.

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

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

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

iQEzBAEBCAAdFiEEhrpukzGPukRmQqkK24/THMrX1ywFAmnT0XYACgkQ24/THMrX
1yynEwf/eRO74GKeVMvcaA9wOJKDjsLG/ZweEvDhjBWJRfwMXyWfOFb/CbUfBWDc
CBcOa5DtGph5YQnU9ckWdyN16HlW0GiDSuY/X99KfcUpCFXaJLdxSLlJdRBXFHvh
vinuBwUty868tWz8wED0OvRlmZOK6X8SwAi26ea6ur4FJ5JRC2Gjjv8efqY2HLjM
kEqg5jxUCMSGivAl/HVrlYSIGiZZhQ6f0/647JlFMzww6zNS0Xvew+80egOQniqy
rrOLtyrIWSnmHJj/dqAKfTmj2WwwWmgBJNpuU/LS93C16lgLqnUMHdxbCK2jfYu6
xJkXeln+ATuroCLIbyouNn+N59LlTw==
=tz0q
-----END PGP SIGNATURE-----

--F629bKJhvAiDwbl3--


From xen-devel-bounces@lists.xenproject.org Mon Apr 06 15:43:26 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 06 Apr 2026 15:43:26 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1274238.1560405 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1w9m6j-0003gC-F2; Mon, 06 Apr 2026 15:43:21 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1274238.1560405; Mon, 06 Apr 2026 15:43: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 1w9m6j-0003g5-C3; Mon, 06 Apr 2026 15:43:21 +0000
Received: by outflank-mailman (input) for mailman id 1274238;
 Mon, 06 Apr 2026 15:43:19 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92) id 1w9m6h-0003fz-At
 for xen-devel@lists.xenproject.org; Mon, 06 Apr 2026 15:43:19 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1w9m6g-001FUV-8x
 for xen-devel@lists.xenproject.org; Mon, 06 Apr 2026 17:43:18 +0200
Received: from [10.42.69.1] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <oleksii.kurochko@gmail.com>)
 id 69d3d465-2eae-0a2a0a5409dd-0a2a4501e4ba-40
 for <xen-devel@lists.xenproject.org>; Mon, 06 Apr 2026 17:43:18 +0200
Received: from [209.85.128.52] (helo=mail-wm1-f52.google.com)
 by tlsNG-d62444.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.0)
 (envelope-from <oleksii.kurochko@gmail.com>)
 id 69d3d496-6fc9-0a2a45010019-d1558034b4a3-3
 for <xen-devel@lists.xenproject.org>; Mon, 06 Apr 2026 17:43:18 +0200
Received: by mail-wm1-f52.google.com with SMTP id
 5b1f17b1804b1-488af96f6b2so15926475e9.0
 for <xen-devel@lists.xenproject.org>; Mon, 06 Apr 2026 08:43:18 -0700 (PDT)
Received: from [192.168.1.6] (user-109-243-69-121.play-internet.pl.
 [109.243.69.121]) by smtp.gmail.com with ESMTPSA id
 5b1f17b1804b1-48899e49229sm98976505e9.15.2026.04.06.08.43.16
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Mon, 06 Apr 2026 08:43:17 -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=20251104 header.d=gmail.com header.i="@gmail.com" header.h="Content-Transfer-Encoding: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=20251104; t=1775490198; x=1776094998; darn=lists.xenproject.org;
        h=content-transfer-encoding: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;
        bh=Qp9xvCexd+og9CWs2NBxRDicMXJNAJsIGHdkUhjLJDY=;
        b=ry1H4Ms3BCf3jKsKykgJNYO1kaRN0zv3731TVMf/e2Shf0h1qyATNQOmu45EZSEaMc
         c5FJReCMT8oT/rCDY0DyMvxGEv4WUWSC8FedEKpPh9E393Fdla501CVyaV78CbulF24Q
         EOfq6//3CNguAoUMjDdsT+pl+e/V9Eb/uHL6EUBEb1Pqm+1P0kbOd+3EBneUlaNyC6Hp
         PURocFYe/mPrfjlV0AcNcmyTIzqTqDghx5hKBrr8CMGuVaxDigzdGEv7qdySEBpUJi0D
         MqQq4GS8VKDlVor/fjHkzElfU64dCBqhRtqjHbp9vWsHzqspD2e3RVXRX8281wtBVjgQ
         X+DA==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20251104; t=1775490198; x=1776094998;
        h=content-transfer-encoding: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;
        bh=Qp9xvCexd+og9CWs2NBxRDicMXJNAJsIGHdkUhjLJDY=;
        b=L4xqivsy5WnYIs8n+/d53SJzWX/fawlat/UtJCJuxFL1BdDZkgkHx86sEjc7QVBX76
         lvL0m3qUYaKL22fx5tHWWc8I9JH+9rw1+5mtciWrTtpHV++je7IeINVWaGWShv+nphLv
         iJwKOY5E40QTfi66XYygTeXrrpGUnKC5B7q0T+7jcXv33Iac55/IeaJaKnsGkwt4DY1+
         Nv5zRwlvUa9upY0UJCMyUGdDp7DrvhCB9LymXqG5s7rM07aeYO9ICncRM1ODAkQFTsax
         J3jqNhKYTlCz6gKYTIfJtGoGnRlj2vGSL4ttrT3Wfyea6x6GgJeY5fGy/c54/FZVGmeC
         XddA==
X-Forwarded-Encrypted: i=1; AJvYcCUCiO/5GWbpje6vUk+29XzLdwV3ns8HwYUxomOUaF+WyR6WoLgMIZJNfw6eVoHDcUsoggeWyJdISU0=@lists.xenproject.org
X-Gm-Message-State: AOJu0YxgmHNCG3emi+G2gq0Q/0/gwkCEmPeKGdvR4OY85WTA5BqeSogS
	K/CvRQJgj1pQoF4aJz3R72mcIYW4Opi4DR2qpzHfAwxLN+3mhEg5g8hE
X-Gm-Gg: AeBDietHCcoFBjv5sR/4UEBIFEyciX/MhPMUz2NgxCdHnqznwX5jQhahL+zC9MuLsce
	7SoXHW3mbkBiAF52xHiUv0bz42Bupi7ywEuVmRszK+r83nv9T8cypx+9NA8MC5XabpU1S5CJreq
	fcUf3bBcSR1QC2568WOHFadljh04QrjReAh5WhopBKKLabeKhbfLNwP8SJ0jA13CPbW3Kc/scLY
	IeOiUfgQgrD7tWRZdUTbn86f2PwJRfluqpz9VPoNpED9mNWmddBHkrPZbCY84GPAnA821sAP5Aw
	z3YI7yNblKJ7eDSOzDrnlKXQoSnmQbUj+mb7FNNt2NkJsoWbxtIEbwhKekbzm2cmfzQ3QtInDh3
	BSwG0HFAfzbjNvC9punXffMtNgPnCtPxxucGLa4hZMO35x8iwbqUH+TAoV1M3c0Wcq9chwD3FXR
	NCEn7DfFE04ThODyCOyVODrj1l/UBbAZxNu0+LmLBxPKMhjz/IeNXjuCsJhx+NYAMXDdEmnQbrU
	fj5jOgyhh8LlQ==
X-Received: by 2002:a05:600c:8599:b0:488:aff1:a7cc with SMTP id 5b1f17b1804b1-488aff1a9ebmr54576975e9.9.1775490197429;
        Mon, 06 Apr 2026 08:43:17 -0700 (PDT)
Message-ID: <912263a2-8dff-414e-bea4-64428ce2ec36@gmail.com>
Date: Mon, 6 Apr 2026 17:43:16 +0200
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH v2 10/11] xen/riscv: add definition of guest RAM banks
To: Jan Beulich <jbeulich@suse.com>
Cc: Romain Caritey <Romain.Caritey@microchip.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.pau@citrix.com>,
 Stefano Stabellini <sstabellini@kernel.org>, xen-devel@lists.xenproject.org
References: <cover.1774281309.git.oleksii.kurochko@gmail.com>
 <8278256f3d270b456d19cb9891b89b88a46548a5.1774281309.git.oleksii.kurochko@gmail.com>
 <1a3a316e-f0ea-4514-95d6-9813d6d5ca76@suse.com>
 <691be850-9145-4bbf-a897-d10a0193b730@gmail.com>
 <dfd2a666-f3a5-4d88-b034-438f8fbb85ba@suse.com>
 <2bae9e12-8f71-4ff0-b077-bfb4215e5e14@gmail.com>
 <ffd3a7cd-8c47-4a9b-864a-26a053b5b7d2@suse.com>
 <bc5a9826-c1ff-43b2-a3d1-1a4862301aea@gmail.com>
 <0e37083a-42ab-4c99-83fc-b77f519394b9@suse.com>
Content-Language: en-US
From: Oleksii Kurochko <oleksii.kurochko@gmail.com>
In-Reply-To: <0e37083a-42ab-4c99-83fc-b77f519394b9@suse.com>
Content-Type: text/plain; charset=UTF-8; format=flowed
Content-Transfer-Encoding: 7bit
X-purgate-ID: tlsNG-d62444/1775490198-156EF185-1987B9D1/10/73395122804
X-purgate-type: spam
X-purgate-size: 2515



On 4/1/26 5:10 PM, Jan Beulich wrote:
> On 01.04.2026 16:53, Oleksii Kurochko wrote:
>>
>>
>> On 4/1/26 4:22 PM, Jan Beulich wrote:
>>> On 01.04.2026 15:57, Oleksii Kurochko wrote:
>>>> On 4/1/26 8:17 AM, Jan Beulich wrote:
>>>>> On 31.03.2026 18:14, Oleksii Kurochko wrote:
>>>>>> On 3/30/26 5:51 PM, Jan Beulich wrote:
>>>>>>> On 23.03.2026 17:29, Oleksii Kurochko wrote:
>>>>>>>> The dom0less solution uses defined RAM banks as compile-time constants,
>>>>>>>> so introduce macros to describe guest RAM banks.
>>>>>>>>
>>>>>>>> The reason for 2 banks is that there is typically always a use case for
>>>>>>>> low memory under 4 GB, but the bank under 4 GB ends up being small because
>>>>>>>> there are other things under 4 GB it can conflict with (interrupt
>>>>>>>> controller, PCI BARs, etc.).
>>>>>>> Fixed layouts like the one you suggest come with (potentially severe)
>>>>>>> downsides. For example, what if more than 2Gb of MMIO space are needed
>>>>>>> for non-64-bit BARs?
>>>>>> It looks where usually RAM on RISC-V boards start, so I expect that 2gb
>>>>>> before RAM start is enough for MMIO space.
>>>>> Likely in the common case. Board designers aren't constrained by this,
>>>>> though (aiui). Whereas you set in stone a single, fixed layout.
>>>>>
>>>>> Arm maintainers - since a similar fixed layout is used there iirc,
>>>>> could you chime in here, please?
>>>>>
>>>>>> Answering your question it will be an issue or it will also use some
>>>>>> space before banks, no?
>>>>> I fear I don't understand what you're trying to tell me.
>>>> I meant that there is also some space between banks and pretty big which
>>>> could be used for MMIO which could be used for non-64-bit BARs.
>>> I don't follow: Bank 0 extends to 4G. There's no space above it, below
>>> bank 1, which could be use for non-64-bit BARs.
>>
>> So we have two banks:
>> bank[0] -> [0x80000000, 0x100000000)
>> bank[1] -> [0x0200000000, 10000000000)
>>
>> So i think we have some space between them [0x100000000, 0x0200000000)
>> -> 4gb to be used for non-64-bit BARs.
> 
> But a non-64-bit BAR need to be assigned an address below 0x100000000?

Right, I had in mind that RV32 uses for guest Sv32x4 which could 
translate 34-bit GPA into 34-bit MPA and automatically applied that to 
32-bit BAR...

I can keep first 4gb for MMIO purpose and start bank[0] at 4gb as 34 MPA 
address space is more then enough to cover reserved 2gb of bank[0] after 
4gb.

~ Oleksii




From xen-devel-bounces@lists.xenproject.org Mon Apr 06 16:39:14 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 06 Apr 2026 16:39:14 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1274256.1560433 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1w9myh-0002Y3-3i; Mon, 06 Apr 2026 16:39:07 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1274256.1560433; Mon, 06 Apr 2026 16:39: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 1w9myh-0002Xu-0Y; Mon, 06 Apr 2026 16:39:07 +0000
Received: by outflank-mailman (input) for mailman id 1274256;
 Mon, 06 Apr 2026 16:39:05 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <Oleksii_Moisieiev@epam.com>) id 1w9myf-00027P-Ca
 for xen-devel@lists.xenproject.org; Mon, 06 Apr 2026 16:39:05 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1w9mye-001MTX-ON
 for xen-devel@lists.xenproject.org; Mon, 06 Apr 2026 18:39:04 +0200
Received: from [10.42.69.6] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <Oleksii_Moisieiev@epam.com>)
 id 69d3e1a7-bab6-0a2a0a5309dd-0a2a4506d52e-4
 for <xen-devel@lists.xenproject.org>; Mon, 06 Apr 2026 18:39:04 +0200
Received: from [52.101.66.107]
 (helo=DUZPR83CU001.outbound.protection.outlook.com)
 by tlsNG-16d1c6.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.0)
 (envelope-from <Oleksii_Moisieiev@epam.com>)
 id 69d3e1a8-0df0-0a2a45060019-3465426b20b6-3
 for <xen-devel@lists.xenproject.org>; Mon, 06 Apr 2026 18:39:04 +0200
Received: from DU5PR03MB10263.eurprd03.prod.outlook.com (2603:10a6:10:519::5)
 by AM9PR03MB6817.eurprd03.prod.outlook.com (2603:10a6:20b:2df::15)
 with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9769.18; Mon, 6 Apr
 2026 16:39:01 +0000
Received: from DU5PR03MB10263.eurprd03.prod.outlook.com
 ([fe80::8c9e:b301:61c0:3908]) by DU5PR03MB10263.eurprd03.prod.outlook.com
 ([fe80::8c9e:b301:61c0:3908%5]) with mapi id 15.20.9769.020; Mon, 6 Apr 2026
 16:39: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=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=i8N9QNy8aaTGxZqft+2igwW6+IS8WUXVv5SE5xM43FxqweV9jk4BuMYB4IhgLs5tGaNUQ8C0J2MSnHZwpss2zLWOOwZbfDP1I4znVwxNeYasDJ64TOicqAM/+z5f1gf8KcW+dQD1/yIB2zWKa3mu9S2gO5KiIXmwMxbNRU2TQu3/7uHn3U1NmivY47rL/zVXP8gkuW3jZ3O1g+FCwHumxRgjg1njZhMp1nwt9OgneYtYchsl6fY8LsCa3gK6TcimUrNi+Vmx/9kJ5TW1AspWb1vcpRz2Ego8dZlgEH0x/Oj0WFOec/OEpGHqnncRuWz0K2NQjlB/KGT9wnt2n1zgXA==
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com;
 s=arcselector10001;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1;
 bh=BDSwSTsX27NgoVM+O3HHagj+kmjoXQ2HlmfVzfyV5GY=;
 b=YZmruingZjuMuui7lCFm1+SzHNOffxp+EC9oGDNqFoReZG/TAGZDBSwUFVEvvvxUbOlpM3Sd1bNLTa7LWTWZdmtJKsRoPlkk/jeqrQesA0S4lf6uVthpzyBsedpgy7GA4qo4aGbIR0fKJcqeqw9q8Syl8APd1Pm4396xun10ai97pG6oi6X5lGeK9zSHWJ9zibKW+VMDQNuo1RkTgdEsZIKV2OVDnZtF/yUNPzvpFZazIuMzuKGusvwWuQ9oxM62/qpqzM3WOW3sohVCb3ntuM60FpmPBzf8di8jerrj09qAFAxrvxpk2fMD5TOFnHYe/3yHXRZcWQS0oe3FhrLVUQ==
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=BDSwSTsX27NgoVM+O3HHagj+kmjoXQ2HlmfVzfyV5GY=;
 b=Mv/sHKM9XotLSowkC8tnXKJBiUMJ0dzUe0PATI5xFkSd+4Rx7XRY/VN7V/xe64PERbLICH05dlLspqU5zGSzULcZcRAHBvyf+2UaP7G/bA8wtw/g23OhTt1pdU9krA8DFyPyNL1UJEwTnU8lzn8pglnmpJbMTb0xgRMgLNDZxO7S3aOJBmULWvAc54p7ipHgscf/5zTzwgaGekmtt9KIyudQZ69TXk7/EiMrATmm/P5YOIgNyFvUtt0iT8p+JnXX4X16d+1orGpBu/M2YihCDQxbmhIjndEtdU2MKpYXuRJ8bdtvTlvQWhaVbbGT+be7IUEIqHF581TjcUmaqBFCTw==
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>, =?iso-8859-1?Q?Roger_Pau_Monn=E9?=
	<roger.pau@citrix.com>, Stefano Stabellini <sstabellini@kernel.org>,
	Volodymyr Babchuk <Volodymyr_Babchuk@epam.com>, Grygorii Strashko
	<grygorii_strashko@epam.com>
Subject: [PATCH v11 2/6] xen: arm: smccc: add INVALID_PARAMETER error code
Thread-Topic: [PATCH v11 2/6] xen: arm: smccc: add INVALID_PARAMETER error
 code
Thread-Index: AQHcxePfnz5vMO8s00qEGI8zQhJdGw==
Date: Mon, 6 Apr 2026 16:39:01 +0000
Message-ID:
 <45015ff9c93705bdad30288942af405afaf53312.1775493499.git.oleksii_moisieiev@epam.com>
References: <cover.1775493499.git.oleksii_moisieiev@epam.com>
In-Reply-To: <cover.1775493499.git.oleksii_moisieiev@epam.com>
Accept-Language: en-US
Content-Language: en-US
X-MS-Has-Attach:
X-MS-TNEF-Correlator:
authentication-results: dkim=none (message not signed)
 header.d=none;dmarc=none action=none header.from=epam.com;
x-ms-publictraffictype: Email
x-ms-traffictypediagnostic: DU5PR03MB10263:EE_|AM9PR03MB6817:EE_
x-ms-office365-filtering-correlation-id: 0eeed215-86eb-4173-346b-08de93fb024f
x-ms-exchange-senderadcheck: 1
x-ms-exchange-antispam-relay: 0
x-microsoft-antispam:
 BCL:0;ARA:13230040|1800799024|7416014|376014|366016|18002099003|38070700021|22082099003|56012099003;
x-microsoft-antispam-message-info:
 6G2IKwo4H5v5xw1Q8ylIh/o3+L1LjyhcmqTxGZoI9Aen4Pjz2+7sAT0Y/2wVfnmnjuoD1sy4s0dK6EvJDnzSF1vO/d0IMlm02g1tc+0v5X8qf18+SOjTlfhyqia7b860+iqzygjc3e0c8i8jOXtgxQ9Ko+vtI75jis8SBU3zX/EGHHnYLagV7zRxL0sFaYQ0iYXz8MgVirj3fLu+NvFj/EAXagLVKp2vXtw1xKoWafNMELOYnu5QH44mnuBjfCk1vSDDKWhf7gCqE3GmgC3NX7tCwfYHIXLtNcIVM1qsRMfqSy2GvaemsZqdIMGMeoBhpXJNPOmeALKqAW1E9jTBrSUfqW8t6o/Emqm1W8Er0vuB+qTtIe8VxHkeKr5iz3WBieR/ks86UdGdJrnTvvOCssYa1eY1JrD6LIEFl/6s5Upi3jpl08VeWRe95dQI7dj1rpQ1DQQ3+LXNlYj6XDtatvPL98CP3U8RshrZjjQff9hJvZ/3idN4JSe2NW6Qf8H0x0VPkLHsOhGlzytBhFRwQzQClBA++gydGdITiRyAxtElalD4wY5THhlAiyKqwzK6KDwljIhuUEA91bY1qR46qZX3ZtHGf03W/ASSfwMUMDeGjfcnsmZNG4yNyayiIDlifGBj0lFVbCfSvfSHzgqvdqbMXyeIMzDUH2tQDWJ3ez3N+LZrEKFLwPHHnWf5POtONjbtmztaXbBusBCbnflaxVGEGWziuS1+xELrY9FYH6bzd/aakZQ/cROxLVsnnDEb
x-forefront-antispam-report:
 CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:DU5PR03MB10263.eurprd03.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(1800799024)(7416014)(376014)(366016)(18002099003)(38070700021)(22082099003)(56012099003);DIR:OUT;SFP:1102;
x-ms-exchange-antispam-messagedata-chunkcount: 1
x-ms-exchange-antispam-messagedata-0:
 =?iso-8859-1?Q?zLJ5bnmVGF3qY6m4ECk2DHjika5+UcESEzpfohNTjUeZZP1DZjbvLA9aXe?=
 =?iso-8859-1?Q?FmmPabkS/LiDARE7ivXa1mMlYA2E03Mlu9jQ1fi4P00r4NI9xYhxtJOeOn?=
 =?iso-8859-1?Q?JdCWEwNydpuJcG0k/Gp3DC9DWoxtEb/7Gz4CHkM+vmuz5xwaqH0jRmgo0E?=
 =?iso-8859-1?Q?nFIRGj7an1Mnjeu5cA73OdifSshuIsRlRU8UmIndptu66Ae33q30S8OgnU?=
 =?iso-8859-1?Q?l9PfoeXMmQ2f00lnQc+6G+6WyFld3VIddFtdgGraWuVr/yJJdWUkJGmDAM?=
 =?iso-8859-1?Q?CLvaG0+5BLYQoCbnEdFnfJK6RQFteMzRpOy3xZAhRE+/4+r9rZBBcpaqJs?=
 =?iso-8859-1?Q?qIy7Y7j+uB9h1WhDAKD2aOr0ZD45KMChHUhYKfhs5wiIEFYOvfRkTmm+cm?=
 =?iso-8859-1?Q?tFaIoa5XzJsEWWDJmu8uE2t0tkjABmeI3Shbgfy6Gvsekbis6PnDKSQYAG?=
 =?iso-8859-1?Q?8UJ0AoGUJkyE5baD+bNEVgnti+WwKajVGhHgrLXqURy0l4njF8dme4Zns5?=
 =?iso-8859-1?Q?FgY6Peiy+HiAV2c/vwihmdvjmEOOWIHc5JKqw8ihYrTMPhF86dZEvdiZX6?=
 =?iso-8859-1?Q?YbcniUKvs8ExmpdStX2roURmgIAZ3aNtP7KupeNc5z0y8wNs4s/gdKND8H?=
 =?iso-8859-1?Q?gBe86RXy8dbNjzdYqppYCXyKsEbUFicAgHTF3WsvETrLZItRIKNb4tXOLG?=
 =?iso-8859-1?Q?KKYaQmJiuhWYpR/E+wBCj8weOxSbbBQtWUmprggoC25hGFnmFDr1eE3+gs?=
 =?iso-8859-1?Q?15YG6bVtwC8Pw3xNjUQzDgeLnIOgXLz3IumAStDnEDOatyusQwH7Wq/g15?=
 =?iso-8859-1?Q?eG0LYbMg6RVUGzO+TkUMXhYXAwgLnKoZC4GAYN5uD7Y5OD+pnLjLwjIJWJ?=
 =?iso-8859-1?Q?dp4A7rwiJYIDlYUNB5sO7Ocxd7ksV07+rjqUMqVuKgmauXuMg8Pa4WRPOh?=
 =?iso-8859-1?Q?9Ywf3/PjDqKdgzJNgtA/q/lXNZLZy6fi/7x+oan11ZSWV17o1Hk241fv9E?=
 =?iso-8859-1?Q?m/b8sP1PTyJv1A4n7ns2SAwrpdkvuONJnQ0MvMiBRI5LiqOAoaRBA8hzhY?=
 =?iso-8859-1?Q?e7fbkwY922NzX/0qfzr16ZgDMJvG5p+UZ2f9BHA9gpfYYv1qw9WpWalEgQ?=
 =?iso-8859-1?Q?KGY/6ChedhAQOhbwLFHA/IUyQdaeR5mPF2ETvxY1wQNDrBA6Qiyz7nfDmp?=
 =?iso-8859-1?Q?gvJR098gQZm1We5v0+xtEdjcPWdFa85MLZll187kZfowukCyVyKsFfrzhP?=
 =?iso-8859-1?Q?JHqjT6iH7P5hJmprUJrlGCP590iqzTkYSowuZVBl9ICTl0WIGtz72aiaXK?=
 =?iso-8859-1?Q?WykDMbf1eqpRheZ9GZ+B87A5LRNYTLXFKcmQ2rNgMqxtDvhEwaz+/41tms?=
 =?iso-8859-1?Q?sw9+DDOlvUmJiwOd0ZloKlGwB4V9+IfHdctJ8jqapJbq4ltvg0ua9ObT4D?=
 =?iso-8859-1?Q?9+GD4C7mVc8mxZtQTt6blzSkIX0v94c+CfPY/CLl0IcjcJPs87Mf1Ea18g?=
 =?iso-8859-1?Q?vCziIxDZX6vBfwzBJlmfXQGOp1Doc3PhfF1jMy5ks/uUkHlh9ZqfzvU1Zn?=
 =?iso-8859-1?Q?/i0e/d0FeXcGKOxSb39jiOU4fJ1E2CTMM4PgRadd2xcxiAlfx74bRu7gm4?=
 =?iso-8859-1?Q?P9g2zcEvFEcUlQowrAF2+L5H1VDh1iWf+85hE84dfUp31FHGcAwQHys0Y7?=
 =?iso-8859-1?Q?6/zdXfhpILAXZO+qz4d54zz86sczzWIHljUuucWmOhcHa1YUp/v2diD1WC?=
 =?iso-8859-1?Q?FWv/J1+KxX+JNauK/5b/xZGWyNAJK7m5DaYXB8vE5WBal7GJUrSgEzZgoG?=
 =?iso-8859-1?Q?yAUf8s4if9NngMRl0re5xU5LbOpx3KI=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: DU5PR03MB10263.eurprd03.prod.outlook.com
X-MS-Exchange-CrossTenant-Network-Message-Id: 0eeed215-86eb-4173-346b-08de93fb024f
X-MS-Exchange-CrossTenant-originalarrivaltime: 06 Apr 2026 16:39:01.7722
 (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: BnaRi+Lf9AQvWinzP8aFenbB9JoGb2cuPbLKUzCyvucKc2I9IROwLCo+cGq+I2cMaZUCxTHJBMuMWDynIcs1S059S/3CxBemN2Egt8d7Nps=
X-MS-Exchange-Transport-CrossTenantHeadersStamped: AM9PR03MB6817
X-purgate-ID: tlsNG-16d1c6/1775493544-64A4C3D8-EDE9E374/0/0
X-purgate-type: clean
X-purgate-size: 1003

According to the "7.1 Return Codes" section of DEN0028 [1]
INVALID_PARAMETER code (-3) is returned when one of the call
parameters has a non-supported value.
Adding this error code to the common smccc header file.

[1]: https://documentation-service.arm.com/static/5f8edaeff86e16515cdbe4c6

Signed-off-by: Oleksii Moisieiev <oleksii_moisieiev@epam.com>
---



 xen/arch/arm/include/asm/smccc.h | 1 +
 1 file changed, 1 insertion(+)

diff --git a/xen/arch/arm/include/asm/smccc.h b/xen/arch/arm/include/asm/sm=
ccc.h
index 441b3ab65d..478444fb09 100644
--- a/xen/arch/arm/include/asm/smccc.h
+++ b/xen/arch/arm/include/asm/smccc.h
@@ -381,6 +381,7 @@ void arm_smccc_1_2_smc(const struct arm_smccc_1_2_regs =
*args,
                        0x3FFF)
=20
 /* SMCCC error codes */
+#define ARM_SMCCC_INVALID_PARAMETER     (-3)
 #define ARM_SMCCC_NOT_REQUIRED          (-2)
 #define ARM_SMCCC_ERR_UNKNOWN_FUNCTION  (-1)
 #define ARM_SMCCC_NOT_SUPPORTED         (-1)
--=20
2.43.0


From xen-devel-bounces@lists.xenproject.org Mon Apr 06 16:39:14 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 06 Apr 2026 16:39:14 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1274255.1560421 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1w9myf-0002AP-OY; Mon, 06 Apr 2026 16:39:05 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1274255.1560421; Mon, 06 Apr 2026 16: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 1w9myf-00029W-Ig; Mon, 06 Apr 2026 16:39:05 +0000
Received: by outflank-mailman (input) for mailman id 1274255;
 Mon, 06 Apr 2026 16:39:04 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <Oleksii_Moisieiev@epam.com>) id 1w9mye-00027D-76
 for xen-devel@lists.xenproject.org; Mon, 06 Apr 2026 16:39:04 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1w9myd-001MTX-9h
 for xen-devel@lists.xenproject.org; Mon, 06 Apr 2026 18:39:03 +0200
Received: from [10.42.69.6] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <Oleksii_Moisieiev@epam.com>)
 id 69d3e1a7-bab6-0a2a0a5309dd-0a2a4506d52e-0
 for <xen-devel@lists.xenproject.org>; Mon, 06 Apr 2026 18:39:03 +0200
Received: from [52.101.72.89]
 (helo=AM0PR02CU008.outbound.protection.outlook.com)
 by tlsNG-16d1c6.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.0)
 (envelope-from <Oleksii_Moisieiev@epam.com>)
 id 69d3e1a6-0df0-0a2a45060019-34654859bef8-3
 for <xen-devel@lists.xenproject.org>; Mon, 06 Apr 2026 18:39:03 +0200
Received: from DU5PR03MB10263.eurprd03.prod.outlook.com (2603:10a6:10:519::5)
 by AM9PR03MB6817.eurprd03.prod.outlook.com (2603:10a6:20b:2df::15)
 with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9769.18; Mon, 6 Apr
 2026 16:39:01 +0000
Received: from DU5PR03MB10263.eurprd03.prod.outlook.com
 ([fe80::8c9e:b301:61c0:3908]) by DU5PR03MB10263.eurprd03.prod.outlook.com
 ([fe80::8c9e:b301:61c0:3908%5]) with mapi id 15.20.9769.020; Mon, 6 Apr 2026
 16:39: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=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=ZKjB98zHVj8wfjTuY6TUHKHh1QvFVyY23V9ezTfIPJSEQLyw7ND3NROq5+cH14soYQMnQznAiQpLmXZiR8KEGIEgBDbhsEoj40THWQF7Q/rvoGNZF1MSEQgOKhq8uUAH+Z22XinxkqYteDy26USDFZ3savB4ibCoYuYYGNuwRl2AMqzbRP0WPZwnBiLI02gMiwxWtZ0TThMls16P7hoW7ja77fT8SOlOhr6FN/QVcirqTA5Q5G9gKbQtRG1o0+wfQH84ItlLgcDvuviY3sfqIwKer/QSP/bkgEZE3fauGnfZmBkAnsbAAPOP/mxgoP4J9kXoeZ/S83Q6YgqbNWZ14A==
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com;
 s=arcselector10001;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1;
 bh=fbEO3RVvEwhUUyzboTiopXddvgM7h+yrLsQzWylsC0I=;
 b=rCYfuE/AhGdoovguitZWJIKW9u3vOKLyVQeDIzQXxxjrEe0tA+GQyEpWricIrAi6e03ERW/1idSwmvSgygpCG+u2Yjtikze/ISwaDbzAvMahgGUzef76fkzHJ6uv4Fs5HYhfdZo7SBoYtunNKFEt7vdPbJz6hlVI7jbnWkha83zA/M+M2bDk9bkZ7dgw9bgUb4/0EOD1kO+yqzMhsjEfmPc6XOIVIqgouaMeTE30qTfqW6Ing6FNZui8IUvA25aa2eZK7D5lyxY6TzF2GQjHVdmJdVeCZG/XZN4Ko+/5JwYb5tu7/xo82NqvOaGf7b4ToJRIQBFVpzIglSDNmqc2Bw==
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=fbEO3RVvEwhUUyzboTiopXddvgM7h+yrLsQzWylsC0I=;
 b=QFHWvLObFTWy1nosQLJUaX8xTaLbfo1QOQJMyinUgvYSRLQfnS1uXsgwuDNLR2b6bhy6aAjZeNvOcEWj8Lj5p+f8SlDR5X4ZTCRbu+UBsko/gDRIK7ODRgSmFLfbhzOYUXogXfvG+qk2vilA97dKtLufl1y4b0OCGtfVQGA/QEKtqrTq7PIQsL8gDP1BNIRVHUMhNeHVgBICoqHGpii4PSYfPte7r1Q5j3rOnau7gSOg3uOuQ1rqYWBiVgVP22gzxmQj7aQGG9YJK6nuei7pd4RIWlT2wNJqtLwgBBC+N8+itySvnqhOVPXm5hZSEdaI9TXskSP6vE8D/gFniW66cA==
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.pau@citrix.com>, Stefano Stabellini <sstabellini@kernel.org>,
	Volodymyr Babchuk <Volodymyr_Babchuk@epam.com>, Grygorii Strashko
	<grygorii_strashko@epam.com>
Subject: [PATCH v11 1/6] xen/domctl: chain SCI handling before IOMMU in
 assign_device domctl
Thread-Topic: [PATCH v11 1/6] xen/domctl: chain SCI handling before IOMMU in
 assign_device domctl
Thread-Index: AQHcxePfx39ACAuRcE2aBj5D+lufNQ==
Date: Mon, 6 Apr 2026 16:39:01 +0000
Message-ID:
 <594def52910bbdac9a30d2e4a397b044411b66a6.1775493499.git.oleksii_moisieiev@epam.com>
References: <cover.1775493499.git.oleksii_moisieiev@epam.com>
In-Reply-To: <cover.1775493499.git.oleksii_moisieiev@epam.com>
Accept-Language: en-US
Content-Language: en-US
X-MS-Has-Attach:
X-MS-TNEF-Correlator:
authentication-results: dkim=none (message not signed)
 header.d=none;dmarc=none action=none header.from=epam.com;
x-ms-publictraffictype: Email
x-ms-traffictypediagnostic: DU5PR03MB10263:EE_|AM9PR03MB6817:EE_
x-ms-office365-filtering-correlation-id: dabf50da-5c19-4139-4c41-08de93fb021c
x-ms-exchange-senderadcheck: 1
x-ms-exchange-antispam-relay: 0
x-microsoft-antispam:
 BCL:0;ARA:13230040|1800799024|7416014|376014|366016|18002099003|38070700021|22082099003|56012099003;
x-microsoft-antispam-message-info:
 a/txYcaIINzLQsAakcO2ScQeUDcBs3Ycul6CJ+UlOi17XpAhMJM7PUpVkpo5lMTTTDfJPDzdasBzy9jFW0jzOVmWbymn3IfgQHrNQZmJp9LnlxiyCvXUmDRr+m9/esoV+AOoX/L7g5m1MT7k42OmQBCnhuzzJ2sLbd+ocDXyIupcWARlLPg+L48hNG0Dc12qZFpg3K7Ves10g2XOFpa/IP3B/B0yMY+YVJkSYdnGQeGSGxRUFObL27vbUozyH/YavgiwSJu9U8WP9aaDuAhThRtpgYR6yE98DGDS86nl3UXuvznBmcLWNiTaf9wmj73IHYH3NZqjv1qnA7nzicu4xGa7jvGZ2X+KqeA0KglNOwoDbW591qdaBhlQV4z2gDlo9FN5Vke2PnpiD26VV2LVERzfkA0edGog/A9bBOie5sPr9bdGe35X/U1jpUIWCaxqPv09mMiyIkBBMgbWItnZ7ZPQITj13DPZrAmb32VD5R08X4o2A8Cdin69gZJkBQV8BRt9S4wwaLJtnk/Pd0CY7a1Tx8QODGFCRPXgog/4lsBupuyxWj3t9MVybncs134kHb+SkviOvI4tB3RRn5XX8yk8ohW/d+RlBHvfdAyk11aWPv9SEjjEI/pJxarnri/8QWvwNdP7gkkHDl6X+aBeH5oWdWVLUygeuzGhu7sfqx9JfKzafnmwsYukrcGnsn/ZH8HiUUNRiDmSDgFpJlFgSI6EgfkmVcidvj8uJcasGDUniTLpP+toviSXY/hzhPUX9X149Oy/gCl2GOO84q9JrzOc7biFk7OcZdhzOk3iVBA=
x-forefront-antispam-report:
 CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:DU5PR03MB10263.eurprd03.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(1800799024)(7416014)(376014)(366016)(18002099003)(38070700021)(22082099003)(56012099003);DIR:OUT;SFP:1102;
x-ms-exchange-antispam-messagedata-chunkcount: 1
x-ms-exchange-antispam-messagedata-0:
 =?utf-8?B?Y1J6NDl1cFMvbjFJNFZlZTRhWENTVWd5R1RVRTVFVDRJbThIb3BnTy9XeWNw?=
 =?utf-8?B?TkpTUC9YSXQxQWxqRzZ2aWRGRFhxN3J3NnorRnpJcUhpTEE5Rk9zRzUrWWZi?=
 =?utf-8?B?REN0cnlWbnpCYmZTVEtQdzBBblc4QW9vUU9maWVWelpvajNKYjVhNUtaaWd1?=
 =?utf-8?B?YXVLZ245RU0zeERBMEhwT0lrN21TQmNuVmRiemZhb3ozdkVCbFI3OHNSbWRw?=
 =?utf-8?B?L255bzljaStuK2xxTVRBcmZWbUFqNXNOTHZOMWhwN2dyNDdCaUVZNXpsK3J3?=
 =?utf-8?B?MkpNRkhnUFJQK3dPbVI2L0h0cktHMXRuM3g2TVNNTHUza1lSaEdwNkYrY3FE?=
 =?utf-8?B?a0FabmJTajk1RFlOVmJaSFJzZDRlWjMwTnRZL0RRUUtqb1FSVVVZTjcxQmFm?=
 =?utf-8?B?Q3k5ajQ1VjEwYllxVlQ5VmYraTZLanhIcDE2U3NLVWRtLzVXb0JFL2RuTWJX?=
 =?utf-8?B?R2g5cXROdmlVU2pMeG1OMTUramVpckk1dlRLTS9ldzkvZE5MbkRyb2orNEZE?=
 =?utf-8?B?WGw2V2Y3dWljbGh4ck1YNk9WeVpNMnJqN05OcmhyMlhKRWZ2aW1VczlRQkYv?=
 =?utf-8?B?UnRvSTNZZm9DSkZMRGxWdU1FK0FyZ2tlUEdJdktXOFBrZ2FtTTU1bmJFZnRs?=
 =?utf-8?B?NWFSSG5seXZDaFk1YXBjcnlLTXlOOXJOZ1pWamJCOUxpZ1ZReU44TTF4aFVt?=
 =?utf-8?B?SUFqZVlOaWZwcy9PR1QyR0FpZ0FPWm96ZzArbzRnUk8waGZuTlNtT0xReFNF?=
 =?utf-8?B?Q3NnS05rd0lBbEJZV3U3aTBvbHgzNmI5NDJpTDdQYlhiSjlHeCtFOXpxUFdy?=
 =?utf-8?B?akpGNWhIQnVaYXJpOUYrQXEwZGM1VXRaeldpVll2elNPQ3hrRnEydUpRZ0Yv?=
 =?utf-8?B?VFRmWkZiOFNVLzJxUnVtb3hmeURmckVUVnZ4QUp6TXFwZzBweEp0alZvK2ho?=
 =?utf-8?B?cXpMbGxFSTdtY3BwMXRjNysvTk5xcTBmM3cyWnNVYzRneG5adlZrYWQ0cnNY?=
 =?utf-8?B?RVZlcUFLTlcvWlgycWVINFd0WGk5azMySm84cHl6RG80ZGs5Z0QzTkxRWkx2?=
 =?utf-8?B?N1JZZjJTdTNBVVpHQ2I3amI1d0xYcGVQc2tQNnROemJjc0ZNcU9JVmFvZDBG?=
 =?utf-8?B?ZHk2ZS9WN0tyZ3U4bmhML0k4RHRrNWRTRXVRbXdINFlzc25ad3VhTWpEWXNV?=
 =?utf-8?B?R1drUWxsWXA0VFRRNnA1SXg4Zi9TVlpCSWZwWEpNdTZScGxMelJRKy9Ka3Nv?=
 =?utf-8?B?b3hsSTNOR0NKdWtpL3QzdWNTanRvZmdEbHo2cy96MGd3SXc5cGRHRzcyZnVl?=
 =?utf-8?B?MThZWitLN2tueDRjV1IrdWZkS0N5YVk2aEtIN3NWUEVTTEQrMDdDR213cThB?=
 =?utf-8?B?QUo0dzhVNmJtODNFODR4ejZSdDZ0bklydXQwQmU5SURqeVF4U0x1L0owanlz?=
 =?utf-8?B?Wld2ODJJeVI3Q0ZMSTVUQXM0L3ZsLytoMDVZZTAvbk1nMnhXV2U4Rm5Sd3N1?=
 =?utf-8?B?dm1SdXpPYXUrdDRlWjM2SjZlQXJPazN6Z1p4a2hSWmZsTnFnUThaVjNxZjl1?=
 =?utf-8?B?Y2F1YmM3cDhGUjB0QkZ0UXpvRVhGdmdrVThIcVh3dVFVRlpUU3hYYVM1cGh4?=
 =?utf-8?B?QVk2b0VURUZJeStMTldyejFPNUsrSWhpN0NIdTJmcUdZOS9Kam1pYzJMU1F2?=
 =?utf-8?B?TytyeWFrY0NJU3NyeGxnUVlBM2RCRjk1SDhmM2V3T281cW55NmVGdk5uZFp3?=
 =?utf-8?B?cGdmMFhIZlVzSlY5UGJkcnE4bTBmQ21DNnZoakpMZHBMOHk2NmFQVk5PSGZo?=
 =?utf-8?B?Uk9KcjYvOHV3N0J2VmNDNGhQSWhwZGhuZHh3MElSNjhGSnBsSzc0bk5wTkFi?=
 =?utf-8?B?Vjd0VVBCWUtyeGp1Y2U1Vk9qV05sVG91R1hMTjdFKy8ycUszV01hN1Q4R1B5?=
 =?utf-8?B?VkxEN1JnYWRJWXRGVUV6dnZ5c3Z6WUF2dzlpd0hrbHFaOVRyaGdtRUZvSUpj?=
 =?utf-8?B?ZGQ1SFVYSWVzQStwenYvYjlOK2Y3Zy84T0JpUWhiMVdzTE9RVHFQblhXa2pv?=
 =?utf-8?B?eDVMQlprbEwwdFYxc3dVb2h6V1NoNlh0eDcraWNxcGR3d1ZldkZvSE5peDQv?=
 =?utf-8?B?cFVyVFErbkJ1bDcrMW1lMFRIM1g1NktuVjlObWQ0ZWxxTDAzRlJoaHh5YnpG?=
 =?utf-8?B?dzJHWE81bVp0L2dEclBGemNvaWZuQ0FJN0lNTm1hRXFkSnZORDJweE1qSUZB?=
 =?utf-8?B?MW9iZFZiOThWVFhSdDRDWFdlL2QwQ04zL0hSclJpUmFDZ1lJNFIvNnIvTGcv?=
 =?utf-8?B?TGlrb0orQ0RSd0dZOWpSSXhlU0Fzdm53UjlrNDJTZFh5NUQ3dWlLZHZxK2FH?=
 =?utf-8?Q?TPc4zKba/mtU4Wls=3D?=
Content-Type: text/plain; charset="utf-8"
Content-ID: <A0327011C25F854AB6AA48839287C104@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: DU5PR03MB10263.eurprd03.prod.outlook.com
X-MS-Exchange-CrossTenant-Network-Message-Id: dabf50da-5c19-4139-4c41-08de93fb021c
X-MS-Exchange-CrossTenant-originalarrivaltime: 06 Apr 2026 16:39:01.4217
 (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: zPsvbWao3jTIlOA/uC4PtatftmIaMeWTXSGp+DD/5a3+QiioRkt9xPZcpGiyrwMWHQGvGpaaz/BZh0pDRO4GCve79J8nxaAF+d5u1zs09Zo=
X-MS-Exchange-Transport-CrossTenantHeadersStamped: AM9PR03MB6817
X-purgate-ID: tlsNG-16d1c6/1775493543-5DB2B3D8-C3150066/0/0
X-purgate-type: clean
X-purgate-size: 11048

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+DQotLS0NCg0KKG5vIGNoYW5nZXMgc2luY2UgdjEwKQ0KDQpDaGFu
Z2VzIGluIHYxMDoNCi0gcmVtb3ZlIHVudXNlZCBzY2lfZG9fZG9tY3RsIHN0dWIgZnJvbSBzY2ku
aA0KDQpDaGFuZ2VzIGluIHY5Og0KLSB0cmVhdCBTQ0kgYXMgYSBnYXRlIGZvciBYRU5fRE9NQ1RM
Xyphc3NpZ25fZGV2aWNlOiBhYm9ydCBiZWZvcmUNCklPTU1VIGlmIHNjaV9kb19kb21jdGwoKSBy
ZXR1cm5zIGFuIGVycm9yIG90aGVyIHRoYW4gLUVOWElPLCBpbnN0ZWFkDQpvZiB0cnlpbmcgdG8g
cHJvcGFnYXRlIFNDSSBlcnJvcnMgYWZ0ZXIgYSBzdWNjZXNzZnVsIElPTU1VDQpvcGVyYXRpb24u
IFRoaXMgYXZvaWRzIHBhcnRpYWwgc3VjY2VzcyBhbmQgdGhlIG5lZWQgZm9yIElPTU1VIHJvbGxi
YWNrLg0KLSByZW1vdmUgZWFybHkgcmV0dXJuIGZyb20gZG9fZG9tY3RsKCkgaW4gdGhlIGFzc2ln
bl9kZXZpY2UNCnBhdGggdG8ga2VlcCBSQ1UgaGFuZGxpbmcgaW50YWN0Lg0KLSBjaGFuZ2UgSVNf
RU5BQkxFRCgqKSB0byAjaWZkZWYgaW4gc2NpX2RvX2RvbWN0bCBxdWFyZA0KDQpDaGFuZ2VzIGlu
IHY4Og0KLSBjaGVjayBmb3IgQ09ORklHX0FSTV9TQ0kgdG8gYmUgZWJhYmxlZCBpbnN0ZWFkIG9m
IENPTUZJR19BUk0gYmVmb3JlDQpjYWxsaW5nIHNjaV9kb19kb21jdGwNCi0gcmV3b3JrIHNjaV9k
b19kb21jdGwgY2FsbCB0byBhdm9pZCBleHRyYSBjaGVja3MsIGltcHJvdmVkIGVycm9yDQpoYW5k
bGluZy4NCi0gZG8gbm90IHByb3BhZ2F0ZSByZXQxIGlmIHNjaV9kb19kb21jdGwgcmV0dXJuZWQg
cG9zaXRpdmUgcmV0DQotIHVwZGF0ZWQgY29tbWVudCBpbiBkb21jdGwuYyBjb2RlDQoNCkNoYW5n
ZXMgaW4gdjc6DQotIHVwZGF0ZSBkb21jdGwgdG8gYnVpbGQgb24gYm90aCBBcm0gYW5kIHg4NiBw
bGF0Zm9ybXMNCi0gbW92ZSByZXQxIGRlY2xhcmF0aW9uIHRvIHRoZSB0b3Agb2YgdGhlIGZ1bmN0
aW9uIGFzIHJlcXVpcmVkIGJ5IGNvZGUNCnN0eWxlDQoNCkNoYW5nZXMgaW4gdjY6DQotIGNoYW5n
ZSBpb21tdV9kb19kb21jdGwgYW5kIHNjaV9kb19kb21jdGwgY29tbWFuZCBvcmRlciBhbmQNCmNh
bGwgc2NpX2RvX2RvbWN0bCBmaXJzdCB3aGljaCB3aWxsIHByb2R1Y2UgY2xlYW5lciBjb2RlIHBh
dGguDQpBbHNvIGRyb3BwZWQgY2hhbmdpbmcgcmV0dXJuIGNvZGUgd2hlbiBpb21tdSB3YXMgZGlz
YWJsZWQgaW4NCmlvbW11X2RvX2RvbWN0bC4NCg0KQ2hhbmdlcyBpbiB2NToNCi0gcmV0dXJuIC1F
SU5WQUwgaWYgbWVkaWF0b3Igd2l0aG91dCBhc3NpZ25fZHRfZGV2aWNlIHdhcyBwcm92aWRlZA0K
LSBpbnZlcnQgcmV0dXJuIGNvZGUgY2hlY2sgZm9yIGlvbW11X2RvX2RvbWN0bCBpbg0KWEVOX0RP
TUNUTF9hc3NpZ25fZGV2aWNlIGRvbWN0bCBwcm9jZXNzaW5nIHRvIG1ha2UgY2xlYW5lciBjb2Rl
DQotIGNoYW5nZSAtRU5PVFNVUFAgZXJyb3IgY29kZSB0byAtRU5YSU8gaW4gc2NpX2RvX2RvbWN0
bA0KLSBoYW5kbGUgLUVOWElPIHJldHVybiBjb21kZSBvZiBpb21tdV9kb19kb21jdGwNCi0gbGVh
dmUgIWR0X2RldmljZV9pc19wcm90ZWN0ZWQgY2hlY2sgaW4gaW9tbXVfZG9fZHRfZG9tY3RsIHRv
IG1ha2UNCmNvZGUgd29yayB0aGUgc2FtZSB3YXkgaXQncyBkb25lIGluICJoYW5kbGVfZGV2aWNl
IiBjYWxsIHdoaWxlDQpjcmVhdGluZyBod2RvbShkb20wKSBhbmQgImhhbmRsZV9wYXNzdGhyb3Vn
aF9wcm9wIiBjYWxsIGZvciBkb20wbGVzcw0KY3JlYXRpb24NCi0gZHJvcCByZXR1cm4gY2hlY2sg
ZnJvbSBzY2lfYXNzaWduX2R0X2RldmljZSBjYWxsIGFzIG5vdCBuZWVkZWQNCi0gZG8gbm90IHJl
dHVybiBFSU5WQUwgd2hlbiBhZGRpZ25fZHRfZGV2aWNlIGlzIG5vdCBzZXQuIFRoYXQgaXMNCmJl
Y2F1c2UgdGhpcyBjYWxsYmFjayBpcyBvcHRpb25hbCBhbmQgbm90IGltcGxlbWVudGVkIGluIHNp
bmdsZS1hZ2VudCBkcml2ZXINCg0KIHhlbi9hcmNoL2FybS9maXJtd2FyZS9zY2kuYyAgICAgICAg
ICAgICB8IDM2ICsrKysrKysrKysrKysrKysrKysrKysrKysNCiB4ZW4vYXJjaC9hcm0vaW5jbHVk
ZS9hc20vZmlybXdhcmUvc2NpLmggfCAgOCArKysrKysNCiB4ZW4vY29tbW9uL2RvbWN0bC5jICAg
ICAgICAgICAgICAgICAgICAgfCAxNSArKysrKysrKysrKw0KIHhlbi9kcml2ZXJzL3Bhc3N0aHJv
dWdoL2RldmljZV90cmVlLmMgICB8ICA2ICsrKysrDQogNCBmaWxlcyBjaGFuZ2VkLCA2NSBpbnNl
cnRpb25zKCspDQoNCmRpZmYgLS1naXQgYS94ZW4vYXJjaC9hcm0vZmlybXdhcmUvc2NpLmMgYi94
ZW4vYXJjaC9hcm0vZmlybXdhcmUvc2NpLmMNCmluZGV4IGFhOTNjZGE3ZjAuLmE2YzY0N2EwOWQg
MTAwNjQ0DQotLS0gYS94ZW4vYXJjaC9hcm0vZmlybXdhcmUvc2NpLmMNCisrKyBiL3hlbi9hcmNo
L2FybS9maXJtd2FyZS9zY2kuYw0KQEAgLTEyNiw2ICsxMjYsNDIgQEAgaW50IHNjaV9hc3NpZ25f
ZHRfZGV2aWNlKHN0cnVjdCBkb21haW4gKmQsIHN0cnVjdCBkdF9kZXZpY2Vfbm9kZSAqZGV2KQ0K
ICAgICByZXR1cm4gMDsNCiB9DQogDQoraW50IHNjaV9kb19kb21jdGwoc3RydWN0IHhlbl9kb21j
dGwgKmRvbWN0bCwgc3RydWN0IGRvbWFpbiAqZCwNCisgICAgICAgICAgICAgICAgICBYRU5fR1VF
U1RfSEFORExFX1BBUkFNKHhlbl9kb21jdGxfdCkgdV9kb21jdGwpDQorew0KKyAgICBzdHJ1Y3Qg
ZHRfZGV2aWNlX25vZGUgKmRldjsNCisgICAgaW50IHJldCA9IDA7DQorDQorICAgIHN3aXRjaCAo
IGRvbWN0bC0+Y21kICkNCisgICAgew0KKyAgICBjYXNlIFhFTl9ET01DVExfYXNzaWduX2Rldmlj
ZToNCisgICAgICAgIHJldCA9IC1FTlhJTzsNCisgICAgICAgIGlmICggZG9tY3RsLT51LmFzc2ln
bl9kZXZpY2UuZGV2ICE9IFhFTl9ET01DVExfREVWX0RUICkNCisgICAgICAgICAgICBicmVhazsN
CisNCisgICAgICAgIGlmICggIWN1cl9tZWRpYXRvciApDQorICAgICAgICAgICAgYnJlYWs7DQor
DQorICAgICAgICBpZiAoICFjdXJfbWVkaWF0b3ItPmFzc2lnbl9kdF9kZXZpY2UgKQ0KKyAgICAg
ICAgICAgIGJyZWFrOw0KKw0KKyAgICAgICAgcmV0ID0gZHRfZmluZF9ub2RlX2J5X2dwYXRoKGRv
bWN0bC0+dS5hc3NpZ25fZGV2aWNlLnUuZHQucGF0aCwNCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBkb21jdGwtPnUuYXNzaWduX2RldmljZS51LmR0LnNpemUsICZkZXYpOw0K
KyAgICAgICAgaWYgKCByZXQgKQ0KKyAgICAgICAgICAgIHJldHVybiByZXQ7DQorDQorICAgICAg
ICByZXQgPSBzY2lfYXNzaWduX2R0X2RldmljZShkLCBkZXYpOw0KKw0KKyAgICAgICAgYnJlYWs7
DQorDQorICAgIGRlZmF1bHQ6DQorICAgICAgICAvKiBkbyBub3QgZmFpbCBoZXJlIGFzIGNhbGwg
aXMgY2hhaW5lZCB3aXRoIGlvbW11IGhhbmRsaW5nICovDQorICAgICAgICBicmVhazsNCisgICAg
fQ0KKw0KKyAgICByZXR1cm4gcmV0Ow0KK30NCisNCiBzdGF0aWMgaW50IF9faW5pdCBzY2lfaW5p
dCh2b2lkKQ0KIHsNCiAgICAgc3RydWN0IGR0X2RldmljZV9ub2RlICpucDsNCmRpZmYgLS1naXQg
YS94ZW4vYXJjaC9hcm0vaW5jbHVkZS9hc20vZmlybXdhcmUvc2NpLmggYi94ZW4vYXJjaC9hcm0v
aW5jbHVkZS9hc20vZmlybXdhcmUvc2NpLmgNCmluZGV4IDM1MDAyMTZiYzIuLjVlZTVhMTY2NzQg
MTAwNjQ0DQotLS0gYS94ZW4vYXJjaC9hcm0vaW5jbHVkZS9hc20vZmlybXdhcmUvc2NpLmgNCisr
KyBiL3hlbi9hcmNoL2FybS9pbmNsdWRlL2FzbS9maXJtd2FyZS9zY2kuaA0KQEAgLTE0Niw2ICsx
NDYsMTQgQEAgaW50IHNjaV9kdF9maW5hbGl6ZShzdHJ1Y3QgZG9tYWluICpkLCB2b2lkICpmZHQp
Ow0KICAqIGNvbnRyb2wiIGZ1bmN0aW9uYWxpdHkuDQogICovDQogaW50IHNjaV9hc3NpZ25fZHRf
ZGV2aWNlKHN0cnVjdCBkb21haW4gKmQsIHN0cnVjdCBkdF9kZXZpY2Vfbm9kZSAqZGV2KTsNCisN
CisvKg0KKyAqIFNDSSBkb21jdGwgaGFuZGxlcg0KKyAqDQorICogT25seSBYRU5fRE9NQ1RMX2Fz
c2lnbl9kZXZpY2UgaXMgaGFuZGxlZCBmb3Igbm93Lg0KKyAqLw0KK2ludCBzY2lfZG9fZG9tY3Rs
KHN0cnVjdCB4ZW5fZG9tY3RsICpkb21jdGwsIHN0cnVjdCBkb21haW4gKmQsDQorICAgICAgICAg
ICAgICAgICAgWEVOX0dVRVNUX0hBTkRMRV9QQVJBTSh4ZW5fZG9tY3RsX3QpIHVfZG9tY3RsKTsN
CiAjZWxzZQ0KIA0KIHN0YXRpYyBpbmxpbmUgYm9vbCBzY2lfZG9tYWluX2lzX2VuYWJsZWQoc3Ry
dWN0IGRvbWFpbiAqZCkNCmRpZmYgLS1naXQgYS94ZW4vY29tbW9uL2RvbWN0bC5jIGIveGVuL2Nv
bW1vbi9kb21jdGwuYw0KaW5kZXggMjlhNzcyNmQzMi4uYjNkMTM4MTE4MiAxMDA2NDQNCi0tLSBh
L3hlbi9jb21tb24vZG9tY3RsLmMNCisrKyBiL3hlbi9jb21tb24vZG9tY3RsLmMNCkBAIC0yOSw2
ICsyOSw5IEBADQogI2luY2x1ZGUgPHhlbi94dm1hbGxvYy5oPg0KIA0KICNpbmNsdWRlIDxhc20v
Y3VycmVudC5oPg0KKyNpZmRlZiBDT05GSUdfQVJNDQorI2luY2x1ZGUgPGFzbS9maXJtd2FyZS9z
Y2kuaD4NCisjZW5kaWYNCiAjaW5jbHVkZSA8YXNtL2lycS5oPg0KICNpbmNsdWRlIDxhc20vcGFn
ZS5oPg0KICNpbmNsdWRlIDxhc20vcDJtLmg+DQpAQCAtODMzLDYgKzgzNiwxOCBAQCBsb25nIGRv
X2RvbWN0bChYRU5fR1VFU1RfSEFORExFX1BBUkFNKHhlbl9kb21jdGxfdCkgdV9kb21jdGwpDQog
ICAgIGNhc2UgWEVOX0RPTUNUTF90ZXN0X2Fzc2lnbl9kZXZpY2U6DQogICAgIGNhc2UgWEVOX0RP
TUNUTF9kZWFzc2lnbl9kZXZpY2U6DQogICAgIGNhc2UgWEVOX0RPTUNUTF9nZXRfZGV2aWNlX2dy
b3VwOg0KKyAgICAgICAgLyoNCisgICAgICAgICAqIENoYWluIFNDSSBEVCBoYW5kbGluZyBhaGVh
ZCBvZiB0aGUgSU9NTVUgcGF0aCBzbyBhbiBTQ0kgbWVkaWF0b3INCisgICAgICAgICAqIGNhbiBh
dXRob3Jpc2UgYWNjZXNzLWNvbnRyb2xsZWQgRFQgZGV2aWNlcy4gVW5oYW5kbGVkIGNhc2VzIHJl
cG9ydA0KKyAgICAgICAgICogLUVOWElPLCB3aGljaCBpcyBpZ25vcmVkLiBBbnkgb3RoZXIgU0NJ
IGVycm9yIGFib3J0cyBiZWZvcmUgdGhlDQorICAgICAgICAgKiBJT01NVSBwYXRoIHJ1bnMuDQor
ICAgICAgICAgKi8NCisjaWZkZWYgQ09ORklHX0FSTV9TQ0kNCisgICAgICAgIHJldCA9IHNjaV9k
b19kb21jdGwob3AsIGQsIHVfZG9tY3RsKTsNCisgICAgICAgIGlmICggcmV0IDwgMCAmJiByZXQg
IT0gLUVOWElPICkNCisgICAgICAgICAgICBicmVhazsNCisjZW5kaWYNCisNCiAgICAgICAgIHJl
dCA9IGlvbW11X2RvX2RvbWN0bChvcCwgZCwgdV9kb21jdGwpOw0KICAgICAgICAgYnJlYWs7DQog
DQpkaWZmIC0tZ2l0IGEveGVuL2RyaXZlcnMvcGFzc3Rocm91Z2gvZGV2aWNlX3RyZWUuYyBiL3hl
bi9kcml2ZXJzL3Bhc3N0aHJvdWdoL2RldmljZV90cmVlLmMNCmluZGV4IGY1ODUwYTI2MDcuLjI5
YTQ0ZGM3NzMgMTAwNjQ0DQotLS0gYS94ZW4vZHJpdmVycy9wYXNzdGhyb3VnaC9kZXZpY2VfdHJl
ZS5jDQorKysgYi94ZW4vZHJpdmVycy9wYXNzdGhyb3VnaC9kZXZpY2VfdHJlZS5jDQpAQCAtMzc5
LDYgKzM3OSwxMiBAQCBpbnQgaW9tbXVfZG9fZHRfZG9tY3RsKHN0cnVjdCB4ZW5fZG9tY3RsICpk
b21jdGwsIHN0cnVjdCBkb21haW4gKmQsDQogICAgICAgICAgICAgYnJlYWs7DQogICAgICAgICB9
DQogDQorICAgICAgICBpZiAoICFkdF9kZXZpY2VfaXNfcHJvdGVjdGVkKGRldikgKQ0KKyAgICAg
ICAgew0KKyAgICAgICAgICAgIHJldCA9IDA7DQorICAgICAgICAgICAgYnJlYWs7DQorICAgICAg
ICB9DQorDQogICAgICAgICByZXQgPSBpb21tdV9hc3NpZ25fZHRfZGV2aWNlKGQsIGRldik7DQog
DQogICAgICAgICBpZiAoIHJldCApDQotLSANCjIuNDMuMA0K


From xen-devel-bounces@lists.xenproject.org Mon Apr 06 16:39:14 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 06 Apr 2026 16:39:14 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1274259.1560447 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1w9myi-0002oo-2t; Mon, 06 Apr 2026 16:39:08 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1274259.1560447; Mon, 06 Apr 2026 16:39: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 1w9myh-0002lt-TY; Mon, 06 Apr 2026 16:39:07 +0000
Received: by outflank-mailman (input) for mailman id 1274259;
 Mon, 06 Apr 2026 16:39:06 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <Oleksii_Moisieiev@epam.com>) id 1w9myg-0002NA-Cd
 for xen-devel@lists.xenproject.org; Mon, 06 Apr 2026 16:39:06 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1w9myf-001MTX-On
 for xen-devel@lists.xenproject.org; Mon, 06 Apr 2026 18:39:05 +0200
Received: from [10.42.69.6] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <Oleksii_Moisieiev@epam.com>)
 id 69d3e1a7-bab6-0a2a0a5309dd-0a2a4506d52e-16
 for <xen-devel@lists.xenproject.org>; Mon, 06 Apr 2026 18:39:05 +0200
Received: from [52.101.66.107]
 (helo=DUZPR83CU001.outbound.protection.outlook.com)
 by tlsNG-16d1c6.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.0)
 (envelope-from <Oleksii_Moisieiev@epam.com>)
 id 69d3e1a8-0df0-0a2a45060019-3465426b20b6-6
 for <xen-devel@lists.xenproject.org>; Mon, 06 Apr 2026 18:39:05 +0200
Received: from DU5PR03MB10263.eurprd03.prod.outlook.com (2603:10a6:10:519::5)
 by AM9PR03MB6817.eurprd03.prod.outlook.com (2603:10a6:20b:2df::15)
 with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9769.18; Mon, 6 Apr
 2026 16:39:03 +0000
Received: from DU5PR03MB10263.eurprd03.prod.outlook.com
 ([fe80::8c9e:b301:61c0:3908]) by DU5PR03MB10263.eurprd03.prod.outlook.com
 ([fe80::8c9e:b301:61c0:3908%5]) with mapi id 15.20.9769.020; Mon, 6 Apr 2026
 16:39:03 +0000
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@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=sV1hZ81hZIIL492nJfMVoYUOh1lIdzM/lv3zbpoVUhwvxuPhOJiSj+S7AqSgQvwgWBoy3nVnpjU1Q6o6UVEI8L6mFvyYhubTNrBV3AqWLNTiGbfGJIX/osiQQWky3WJLeFeAlyyiVkcaRzOyQPxBtm/ckWFSSykAr1jE5w8iG0ibYpfOF5ZgKq9/tfPjvVv0U6nZ+hvNCA65m6FRqDb9D74hTpRiTEQB8wsTrUyOzR6zRic20clOxtQZE+vt5hhNbvGzX0HZhEN46LuTBg7MLuDq070R1l0yf+GANQANyaE7fxgjnDCVdkzFdMhJZcFXutcriN3pNuQG1eU2YQ3rlw==
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com;
 s=arcselector10001;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1;
 bh=Q8E1uH1ghRjURszM4EUPbXz1UjDrU3ETiQTk9RQClDU=;
 b=khbLoxinsI1VvIDr+xHQGTXFGqC0rMRYh3qWXTq8w1hZ+JoiVbN0G2H/BydIf9Wjgf4q0Ut6GqSgu89L2MtrvqUGcGrtmncLvNE7cL/HwHDPP8jOb4iBYzP3ksAxCpq3GqcFxNZOGoe6kKRCvtL0HYyazb6797ejrzsoGszIXsnbIb+3JsMkZ9H7VhhegWShOQ4W9umkWWxoQEZJ7Vonlqj01SiNnSyg0ieFanoSbkcsQXFrl6gaAKv77sS1Rv5bVNhXgFSZBtnuIBbmbywDjEXSQ3XX93iLAse9if8dh1hcWaJMNImq049jAL61BZi6JlX9g9HuiP8IpnGTAoOPmQ==
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=Q8E1uH1ghRjURszM4EUPbXz1UjDrU3ETiQTk9RQClDU=;
 b=FZSb0PlNnIGZOj4JK2FINfGROyu5gh5oQ4uSynL51jLKHfPeI/d7Py0wE0/xXLcU7F+mB/Br+U5ZasXukfDJpo49h08AHK0TPgmUWPn0e8FZf6eApTKNJuFGzJ8xOwzti4T5L2ee1fgYmRRwRVjQScAcys8oUFhZwAoHEWmKmmRZ1nqq77VFmWCVqtawOgLnynsFkDLOGI/JCf1fRMdWuulmOsRv0LIVRYCnz8zKftTWUyht4UvB0d5WaK1D0xcFnTWammAmABr5+nyOpR75VTh4ZLOa8kah6Ttc7xYM2s2E2ygSR9V6/+8ouuYduoHPnxDYLPGdG0sq61dbVAuT4A==
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>, =?iso-8859-1?Q?Roger_Pau_Monn=E9?=
	<roger.pau@citrix.com>, Stefano Stabellini <sstabellini@kernel.org>,
	Volodymyr Babchuk <Volodymyr_Babchuk@epam.com>, Grygorii Strashko
	<grygorii_strashko@epam.com>
Subject: [PATCH v11 4/6] xen/arm: scmi: introduce SCI SCMI SMC multi-agent
 driver
Thread-Topic: [PATCH v11 4/6] xen/arm: scmi: introduce SCI SCMI SMC
 multi-agent driver
Thread-Index: AQHcxePgRqI3n96hREefP/HRl0OEDw==
Date: Mon, 6 Apr 2026 16:39:02 +0000
Message-ID:
 <1cdbcff5f26743172add46587390f17dec12fb08.1775493499.git.oleksii_moisieiev@epam.com>
References: <cover.1775493499.git.oleksii_moisieiev@epam.com>
In-Reply-To: <cover.1775493499.git.oleksii_moisieiev@epam.com>
Accept-Language: en-US
Content-Language: en-US
X-MS-Has-Attach:
X-MS-TNEF-Correlator:
authentication-results: dkim=none (message not signed)
 header.d=none;dmarc=none action=none header.from=epam.com;
x-ms-publictraffictype: Email
x-ms-traffictypediagnostic: DU5PR03MB10263:EE_|AM9PR03MB6817:EE_
x-ms-office365-filtering-correlation-id: f20ce1df-2239-43e7-9c73-08de93fb0348
x-ms-exchange-senderadcheck: 1
x-ms-exchange-antispam-relay: 0
x-microsoft-antispam:
 BCL:0;ARA:13230040|1800799024|7416014|376014|366016|18002099003|38070700021|22082099003|56012099003;
x-microsoft-antispam-message-info:
 mNoIhtgWM+PN/UAx+9Qj/7OEf0U/ak0Tk8mC5+4VCEdTQ1JsZyJNA6Sg0ykwR9IK1OXxCTA4hJghqP+mkDkk9hpGZfnnqSWLW5Rsrbcbs3c/SV7Z8GPOooDGOgRufukrdV3sEUXXwdGbTYtmGpKjknf/W6RR3VG10+AWHcL7DIsYelLMSvqPbaWQ0WdsePyn1rudALnN4obwSWqwoUsrZlFsdAjI+7nvJTbuuGt0UnsrAEOE798830q/lI6CRiw+DQR7U9ZLOPcq/dlKB7UFDOvaZ7GbPIv0+HPGIg73iaYjzjv6hZP0jCOQmgHRV42R7z4wpdOKG6DMfBD3n94orLFUzCvn5MPmdzdeN/Dd+Vbr1Vp/N/ZH3nDYwoGhvc97iVnGaOus+Fj54Y3zTIkUARX8WGv8O+49PENLB6Rynjh8Z1rLgLGC3JAO4mgeU+J3xAl0SvAZPqC791gNADJFbdYVGjoiKMExALgNrRmprBMtWngxOe95lZ+w7dzZhkazvMv5nfp1l+zTytSQaxv8B4c3U4F522z50h1iRATqFS8jNvyveWyJv0662O7l2rIxhIG1SjqTDLt7285EbxHex45dFrrkj0+AP8guIzMJZs1Yl4NAJ64Uy/2+AhUdXELFVG7mdOasVxuFHCjIKLPHSulShpQSwRqNX15wU3Z53hU6LUKPBY8Ef9i+iwypHracw/R36aa4zAiDtlKTZFfOAnxJLbNCjWu9JR61qgSEJLUi0WAohdtiodeCY2kEXJ2Y
x-forefront-antispam-report:
 CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:DU5PR03MB10263.eurprd03.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(1800799024)(7416014)(376014)(366016)(18002099003)(38070700021)(22082099003)(56012099003);DIR:OUT;SFP:1102;
x-ms-exchange-antispam-messagedata-chunkcount: 1
x-ms-exchange-antispam-messagedata-0:
 =?iso-8859-1?Q?DgATQ5XfS3rBJ6eSte8irGic/1CoK3AQF1NhqVSzTzZ1E+i40FzomWWqHZ?=
 =?iso-8859-1?Q?IVTNADuygy3uOpN954t+nNVwZqP+fhElhqgz7DTyQ1ZVnknNKN7yb3hB0V?=
 =?iso-8859-1?Q?R76VdX5hEGCWw05Pt4kib/n/G0zyYkvGHUMFGPZ4x/uxTMuQ0TePeTU/Gi?=
 =?iso-8859-1?Q?YN/iiJLw8xroWyPe9jMIDHmkH2ly3Mun8keq1tv2mo9EoKxOS1U0fVSI7N?=
 =?iso-8859-1?Q?ch11enSA2Rt2/Osmjt3r1vZDXlcELGIpKAhiBsVSYkwK0MHgSlks2eVYjL?=
 =?iso-8859-1?Q?jyoI/jzAVPEjto11f4pZFoYqsX+uXCwOrhEDm0kuD3ge759Yk1U+n5QkQm?=
 =?iso-8859-1?Q?8huoZ8MSP2BwiqwZ/JGQQDHTn0tu1+pGeBBo26gisXDhLGpUuxICL5uiA5?=
 =?iso-8859-1?Q?RiESNxNmGvu7/HAa93xto8rGN5IrG7vZG792F2rYvsrnGTkRaLjT9oNCgB?=
 =?iso-8859-1?Q?6wTe6+t0Cel4zUGH5A/R345jaQcxv7Z5+QFe2h29Pgv3hHq2EYSrfU/g/0?=
 =?iso-8859-1?Q?1mnk/Lbl4Celb8fcT2lZ4Yx8kbiDVSSaEGNLWnBL7q1kDdStrdqNdQge9S?=
 =?iso-8859-1?Q?n2RSROWAcRZ/81PRPsH60ZMn04rwVslwpbdM4zxbPnsQ19D/4GvA7TLuBa?=
 =?iso-8859-1?Q?pRh7a5Kc58Q79tweG7ByySYRVD1LciI9IL5aeLAO8QaMf62xyYnfXUMko8?=
 =?iso-8859-1?Q?gcuc95wlNe+uN4qXL9up0RwBBiKrXnbfZKT8KIRKyDIVunqwAL9JKjLDk+?=
 =?iso-8859-1?Q?1vn/sWvENRrKrfvAmaQX2gXDiyQ5/liovzIH7E6p5ZSdiF3QcSlOlUxzrN?=
 =?iso-8859-1?Q?eixfobTau+YtZSrmv+YFnS6/9GB+uk1Z2B1R/rfA3bNgvyAGovBbM0bK9P?=
 =?iso-8859-1?Q?pBUibuzq6ZcawsZtn8BLQYy3Xu35elmT6teqhld0c0U4NTYQYrfOBmiw13?=
 =?iso-8859-1?Q?2/r8VNxx0jJXD73Bfq0prm15JJ9xhXh76NWsKHfvglBJgwH2byoxbeT088?=
 =?iso-8859-1?Q?WB6YlBocN++aXS6OFPG0j7f+ezyJF/oJdFkjjYHi0yRQYDHRwSmeLIrN2R?=
 =?iso-8859-1?Q?1XveW3Na25T2MepaetKZv12DaG5m0BeHj05XgrxDNxh5Qt6JnJmYmzs5L0?=
 =?iso-8859-1?Q?7AwL3bQbfFFcZb3bUbUcv+IcViy/w6SIERm5sfHiK9MJa9v9IC+YM4DFB7?=
 =?iso-8859-1?Q?4lSzeRteVIOrU5Q1NsNsQ3TaNDTFIN4r9aw5oZRLZFfsIawCwKLqZx4HNj?=
 =?iso-8859-1?Q?1ODX3Fi3FwVpNQTYpzNQ0QL9n8NaleApWa8r+bpYyOSK6+EHy6kV16UizX?=
 =?iso-8859-1?Q?OMBQUqXKCIws0j9IK1EJlwWEbmUnVXJ9+QbiLexkUScHf3xwmwWc7Y3Hu3?=
 =?iso-8859-1?Q?OGvYC0xmBvGVkwGBGkAvyu6DOUWYrhAlwGDTNB3TmRuFpjOJ5BxWrdseAE?=
 =?iso-8859-1?Q?cssQNa7J+IuPovm9qlTe887QWF/BmInlh0hg8Ur4lFi+pQnGB2JoSQbQIP?=
 =?iso-8859-1?Q?A4FPGHHYhHjs8PhXO0e349g6DkZbtf1SnpMGBr2sqFfxYqrK9FKjPoecnu?=
 =?iso-8859-1?Q?+3cssHMpKT2qLyq6618ACSnhef1DW86LVc/Js74GkvlFw+wGYHBiGYKYGm?=
 =?iso-8859-1?Q?g1LBKlsMMk1x4MpVTdllg49IzyhBgjDLqzzuyDORteSYbfzNawiQ8oVCfb?=
 =?iso-8859-1?Q?vIR1pxIo+jiEEw4vS+7ENxYYymKL0EOsyujzJ8GZG8WlGKQbMC+I+TqEbC?=
 =?iso-8859-1?Q?7D6iIC7ExslTWf1ykIhw0W3bHDet/fFLZiYzP8yaT2vyY9FYIQO0CXqCjq?=
 =?iso-8859-1?Q?nAoO/kwU9sLg+Iyj7NkBO+mMv6cYNLo=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: DU5PR03MB10263.eurprd03.prod.outlook.com
X-MS-Exchange-CrossTenant-Network-Message-Id: f20ce1df-2239-43e7-9c73-08de93fb0348
X-MS-Exchange-CrossTenant-originalarrivaltime: 06 Apr 2026 16:39:02.5185
 (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: KDKR+3u0DXfFsHKauJ1d6oCZcS0jt+J4ya+G2pUb/Vq+i9phK8/qvB1C0Cb+xxTTFn7nhJqjxGsvLvmjB8mZeOqbMC4Y2mloah8bkdUVhRE=
X-MS-Exchange-Transport-CrossTenantHeadersStamped: AM9PR03MB6817
X-purgate-ID: tlsNG-16d1c6/1775493545-5DF2D078-AC4E314B/0/0
X-purgate-type: clean
X-purgate-size: 68366

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 memort is mapped with the following flags:
 MT_DEVICE_nGnRE.

The follwoing SCMI Agents are expected to be defined by SCMI FW to enable S=
CMI
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 (optional if agent_id was provided)
- BASE_RESET_AGENT_CONFIGURATION (optional)
- BASE_SET_DEVICE_PERMISSIONS (optional)

The SCI SCMI SMC multi-agent driver implements following
functionality:
- The driver is initialized from the Xen SCMI container ``xen_scmi_config``
  (compatible ``xen,sci``) placed under ``/chosen/xen``. Only the
  ``arm,scmi-smc`` node that is a child of this container will bind to Xen;
  other SCMI nodes (for example under ``/firmware``) are ignored to avoid
  stealing the host OSPM instance.

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 smc-id
        #address-cells =3D < 1>;
        #size-cells =3D < 0>;
        #access-controller-cells =3D < 1>;
        shmem =3D <&scmi_shm_1>; <--- Xen management agent shmem
};

- The driver obtains Xen specific SCMI Agent's configuration from the
  Host DT, probes Agents and builds SCMI Agents list. The Agents
  configuration is taken from "scmi-secondary-agents" property where
  first item is "arm,smc-id", second - "arm,scmi-shmem" phandle and
  third is optional "agent_id":

/ {
  chosen {
    xen {
      ranges;
      xen_scmi_config {
        compatible =3D "xen,sci";
        #address-cells =3D <2>;
        #size-cells =3D <2>;
        ranges;

        scmi_shm_0: sram@47ff0000 {
          compatible =3D "arm,scmi-shmem";
          reg =3D <0x0 0x47ff0000 0x0 0x1000>;
        };

        /* Xen SCMI 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-secondary-agents =3D <
          0x82000002 &scmi_shm_0 0
          0x82000004 &scmi_shm_2 2
          0x82000005 &scmi_shm_3 3>; <--- func_id, shmem, agent_id
        #scmi-secondary-agents-cells =3D <3>;
        xen,dom0-sci-agent-id =3D <0>;

        scmi_xen: scmi {
          compatible =3D "arm,scmi-smc";
          arm,smc-id =3D <0x82000003>; <--- Xen management agent func_id
          #address-cells =3D <1>;
          #size-cells =3D <0>;
          #access-controller-cells =3D <1>;
          shmem =3D <&scmi_shm_1>; <--- Xen management agent shmem
        };
      };
    };
  };
};

/ {
    /*
     * Host SCMI OSPM channel - provided to the Dom0 as is if SCMI
     * enabled for it, ignored by Xen multi-agent mediator
     */
    scmi_shm: 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>; <--- Host OSPM agent shmem

        protocol@X{
        };
      };
   };
};

This approach allows defining multiple SCMI Agents by adding
Xen-specific properties under the ``/chosen`` node to the Host Device
Tree, leaving the main part unchanged. The Host DT SCMI channel will
be passed to Dom0.

The Xen management agent is described as a ``scmi_xen`` node under the
``xen,sci`` comaptible node, which is used by Xen to control other
SCMI Agents in the system.

All secondary agents' configurations are provided in the
``scmi-secondary-agents`` property with an optional ``agent_id`` field.

The ``agent_id`` from the ``scmi-secondary-agents`` property is used
to identify the agent in the system and can be omitted by setting
``#scmi-secondary-agents-cells =3D <2>``, so the Secondary Agents
configuration will look like this:

/ {
  chosen {
    xen {
      xen_scmi_config {
        compatible =3D "xen,sci";
        #address-cells =3D <2>;
        #size-cells =3D <2>;
        ranges;

        /* Shared memory nodes as defined earlier */

        scmi-secondary-agents =3D <
          0x82000003 &scmi_shm_0
          0x82000004 &scmi_shm_2
          0x82000005 &scmi_shm_3
          0x82000006 &scmi_shm_4>;
        #scmi-secondary-agents-cells =3D <2>;
      };
    };
  };
}

In this case, Xen will use the ``SCMI_BASE_DISCOVER_AGENT`` call to
discover the ``agent_id`` for each secondary agent. Providing the
``agent_id`` in the ``scmi-secondary-agents`` property allows skipping
the discovery call, which is useful when the secondary agent's shared
memory is not accessible by Xen or when boot time is important because
it allows skipping the agent discovery procedure.

  Note that Xen is the only one entry in the system which need to know
  about SCMI multi-agent support.

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 multiple
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 permission
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 privileged
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 supported
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 forwards
  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 provid=
ed
   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 shmem
   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.git/=
tree/Documentation/devicetree/bindings/firmware/arm,scmi.yaml
[2] https://web.git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/=
tree/Documentation/devicetree/bindings/access-controllers/access-controller=
s.yaml

Signed-off-by: Grygorii Strashko <grygorii_strashko@epam.com>
Signed-off-by: Oleksii Moisieiev <oleksii_moisieiev@epam.com>
---

(no changes since v10)

Changes in v10:
- Fix tabs in MAINTAINERS file
- remove duplicate SPDX tag from scmi-shmem.c
- add cast to ARM_SMCCC_INVALID_PARAMETER to settle the sign since
ARM_SMCCC_INVALID_PARAMETER is -3 which is part of the spec and resp
is the default smccc call structure.
- update free_channel_list. Add spinlock to avoid race condition and
a comment with a description of the function work
- preserve error of smc_create_channel in scmi_probe
- check scmi shmem address alignment as wel as it is done for size
- check for d->arch.sci_data !=3D NULL in scmi_handle_call
- use SCMI_SHMEM_MAPPED size for iomem_permit_access
- change len type to unsigned in shmem_{get|put}_message
- rename shmem_channel_is_free to shmem_channel_status
- add comment about skipping message status when getting message response
- Set correct agent_id ranges for dom0less and a toolstack. Agent_id 0
is not binded for dom0 so can be reused. Also mentioned that
UINT8_MAX (255) is treated as invalid agent_id.
- Split hypervisor and toolstack changes into separate commits
- move init list and spin init after initial checks in probe call
- fix typo in comments
- clean resources when sci_register returns an error.

Changes in v9:
- sort and refactor MAINTAINERS enties
- remove Spurious changes
- add extra check to avoid ASSERT when calling unmap_channel_memory
from assign device method
- set correct tx flag to SCMI_BASE_AGENT_PERMISSIONS_RESET when
freeing resources. Flag should be set to 1 according to the
section 4.2.2.12 [0].
- fix dt node copmaring
- moved channel->shmem check from ASSERT in unmap_memory_channel to
"if" statement. This will prevent firing ASSERT if
unmap_channel_memory was called twice on the same channel.

Changes in v8:
- update xen_scmi func_id in commit description
- updated documentation with the new DT format
- updated opt_dom0_scmi_agent_id setting to avoid it to be equal
SCMI_AGENT_ID_INVALID.
- changed SCMI_AGENT_ID_INVALID from 0xff to UINT8_MAX which makes
code more clear showing that UINT8_MAX is theated like invalid
agent_id and couldn't be used. Also excluded SCMI_AGENT_ID_INVALID
from acceptable value range
- remove outdated xen,config property ignore, added xen,sci compatible
to skip_matches in handle_node
- add documentation for pre-existing scmi-smc-passthrough command line
option in alphabetically correct location (in 's' section)
- add note to commit description about documentation for previously
undocumented scmi-smc-passthrough
- Fix SMC IDs in DT examples (Xen management uses 0x82000003, Dom0 uses 0x8=
2000002)
- Add explicit note explaining why Dom0 and Xen channels do not conflict
- Document dom0less multi-agent configuration example (xen,sci_type / xen,s=
ci-agent-id)
- Add scmi_xen node to agent-discovery example with #scmi-secondary-agents-=
cells =3D 2
- Drop dom0=3Dsci-agent-id command line handling; Dom0 SCMI is now enabled =
via
  xen,dom0-sci-agent-id in the xen,sci DT container
- Refresh docs and examples to mention the DT property instead of the cmdli=
ne option

Changes in v7:
- rework scmi nodes for xen to match on compatible string instead of
the direct path

Changes in v6:
- updated scmi-shmem to use io.h from generic location
- update scmi_agent_id parameter to be provided inside dom0=3D parameter
list and have the following format "dom0=3Dsci-agent-id=3D0"
This change was done as a response for Stefano comment and
requires a lot of code changes, but produces much cleaner solution
that's why I've added it to the code.
- fix file comments and return codes
- fix lenght checks in shmem_{get,put}_message to use offsetof
- remove len member from scmi_channel structure as it is not used
- set scmi-secondary-agents property to be mandatory since if no
secondary agents were provided then there is no sence to enable scmi
when no secondary agents are populated to the Domains
- update documentation in booting.txt, added xen_scmi node to the
example
- adjust d->arch.sci_enabled value in scmi_domain_destroy
- fix lock management in smc_create_channel call
- avoid extra map_channel_memory command for Xen management channel
because collect_agent_id call unmaps memory if DOMID_XEN is not
set. So for Xen management channel we can init domain_id ad DOMID_XEN
before calling collect_agent_id so memory shouldn't be unmapped.

Changes in v5:
- fix device-tree example format in booting.txt, added ";" after "}".
- update define in scmi-proto.h
- update define in scmi-shmem.h file
- scmi_assign_device - do not ignore -EOPNOTSUPP return
code of the do_smc_xfer
- remove overwriting agent_channel->agent_id after
SCMI_BASE_DISCOVER_AGENT call
- add multi-agent files to the MAINTAINERS
- add SCMI multi-agent description to the SUPPORT.md
- handle ARM_SMCCC_INVALID_PARAMETER return code and return -EINVAL
for smc call
- updated collect_agents function. Set agent_id parameter as optional
in scmi-secondary-agents device-tree property
- introduce "#scmi-secondary-agents-cells" parameter to set if
agent_id was provided
- reanme xen,scmi-secondary-agents property to scmi-secondary-agents
- move memcpu_toio/fromio for the generic place
- update Xen to get management channel from /chosen/xen,config node
- get hypervisor channnel from node instead of using hardcoded
- update handling scmi and shmem nodes for the domain
- Set multi-agent driver to support only Arm64

Changes in v4:
- toolstack comments from Anthony PERARD
- added dom0less support
- added doc for "xen,scmi-secondary-agents"

 MAINTAINERS                                 |   1 +
 SUPPORT.md                                  |  11 +
 docs/misc/arm/device-tree/booting.txt       | 197 +++++
 xen/arch/arm/dom0less-build.c               |  11 +
 xen/arch/arm/domain_build.c                 |  39 +
 xen/arch/arm/firmware/Kconfig               |  12 +
 xen/arch/arm/firmware/Makefile              |   1 +
 xen/arch/arm/firmware/scmi-proto.h          | 164 ++++
 xen/arch/arm/firmware/scmi-shmem.c          | 118 +++
 xen/arch/arm/firmware/scmi-shmem.h          |  45 ++
 xen/arch/arm/firmware/scmi-smc-multiagent.c | 830 ++++++++++++++++++++
 xen/include/public/arch-arm.h               |   3 +
 12 files changed, 1432 insertions(+)
 create mode 100644 xen/arch/arm/firmware/scmi-proto.h
 create mode 100644 xen/arch/arm/firmware/scmi-shmem.c
 create mode 100644 xen/arch/arm/firmware/scmi-shmem.h
 create mode 100644 xen/arch/arm/firmware/scmi-smc-multiagent.c

diff --git a/MAINTAINERS b/MAINTAINERS
index bf00be928c..def49c327e 100644
--- a/MAINTAINERS
+++ b/MAINTAINERS
@@ -529,6 +529,7 @@ SCI MEDIATORS
 R:	Oleksii Moisieiev <oleksii_moisieiev@epam.com>
 S:	Supported
 F:	xen/arch/arm/firmware/sci.c
+F:	xen/arch/arm/firmware/scmi-*.[ch]
 F:	xen/arch/arm/include/asm/firmware/sci.h
=20
 SEABIOS UPSTREAM
diff --git a/SUPPORT.md b/SUPPORT.md
index d441bccf37..03e3985da2 100644
--- a/SUPPORT.md
+++ b/SUPPORT.md
@@ -956,6 +956,17 @@ by hwdom. Some platforms use SCMI for access to system=
-level resources.
=20
     Status: Supported
=20
+### Arm: SCMI SMC multi-agent support
+
+Enable support for the multi-agent configuration of the EL3 Firmware, whic=
h
+allows Xen to provide an SCMI interface to the Domains.
+Xen manages access permissions to the HW resources and provides an SCMI in=
terface
+to the Domains. Each Domain is represented as a separate Agent, which can
+communicate with EL3 Firmware using a dedicated shared memory region, and
+notifications are passed through by Xen.
+
+    Status, ARM64: Tech Preview
+
 ### ARM: Guest PSCI support
=20
 Emulated PSCI interface exposed to guests. We support all mandatory
diff --git a/docs/misc/arm/device-tree/booting.txt b/docs/misc/arm/device-t=
ree/booting.txt
index 977b428608..f0d1c458c9 100644
--- a/docs/misc/arm/device-tree/booting.txt
+++ b/docs/misc/arm/device-tree/booting.txt
@@ -322,6 +322,21 @@ with the following properties:
     Should be used together with scmi-smc-passthrough Xen command line
     option.
=20
+    - "scmi_smc_multiagent"
+
+    Enables ARM SCMI SMC multi-agent support for the guest by enabling SCM=
I over
+    SMC calls forwarding from domain to the EL3 firmware (like ARM
+    Trusted Firmware-A) with a multi SCMI OSPM agent support.
+    The SCMI agent_id should be specified for the guest with "xen,sci-agen=
t-id"
+    property.
+
+- "xen,sci-agent-id"
+
+    Specifies ARM SCMI agent id for the guest. This option is mandatory if=
 the
+    SCMI SMC "scmi_smc_multiagent" support is enabled for the guest. The a=
gent ids
+    of guest must be unique and in the range [0..254]. UINT8_MAX (255) is
+    treated as invalid.
+
 Under the "xen,domain" compatible node, one or more sub-nodes are present
 for the DomU kernel and ramdisk.
=20
@@ -824,3 +839,185 @@ The automatically allocated static shared memory will=
 get mapped at
 0x80000000 in DomU1 guest physical address space, and at 0x90000000 in Dom=
U2
 guest physical address space. DomU1 is explicitly defined as the owner dom=
ain,
 and DomU2 is the borrower domain.
+
+SCMI SMC multi-agent support
+=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
+
+For enabling the ARM SCMI SMC multi-agent support (enabled by CONFIG_SCMI_=
SMC_MA)
+the Xen specific SCMI Agent's configuration shall be provided in the Host =
DT
+according to the SCMI compliant EL3 Firmware specification with ARM SMC/HV=
C
+transport. The SCMI configuration must live under the Xen SCMI container
+"xen,sci" beneath "/chosen" (for example "/chosen/xen/xen_scmi_config/scmi=
"). The
+Xen SCMI mediator will bind only to the "arm,scmi-smc" node that is a chil=
d of
+this "xen,sci" container; any other "arm,scmi-smc" nodes (for example unde=
r
+"/firmware") are ignored to avoid stealing the host's SCMI OSPM instance.
+
+- scmi-secondary-agents
+
+    Defines a set of SCMI agents configuration supported by SCMI EL3 FW an=
d
+    available for Xen. Each Agent defined as triple consisting of:
+    SMC/HVC function_id assigned for the agent transport ("arm,smc-id"),
+    phandle to SCMI SHM assigned for the agent transport ("arm,scmi-shmem"=
),
+    SCMI agent_id (optional) if not set - Xen will determine Agent ID for
+    each provided channel using BASE_DISCOVER_AGENT message.
+
+- xen,dom0-sci-agent-id
+
+    Optional. Specifies the Dom0/hwdom SCMI agent_id inside the ``xen,sci`=
`
+    container. When provided, Dom0 will be configured for SCMI multi-agent
+    support; when omitted, SCMI remains disabled for Dom0. The value must
+    match the ``func_id`` and shmem pairing that EL3 firmware exposes for
+    Dom0 (for example via ``/firmware/scmi``).
+
+As an example:
+
+/ {
+    chosen {
+        xen {
+            ranges;
+            xen_scmi_config {
+                compatible =3D "xen,sci";
+                #address-cells =3D <2>;
+                #size-cells =3D <2>;
+                ranges;
+
+                scmi_shm_0: sram@47ff0000 {
+                    compatible =3D "arm,scmi-shmem";
+                    reg =3D <0x0 0x47ff0000 0x0 0x1000>;
+                };
+
+                /* Xen SCMI 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>;
+                };
+
+                xen,dom0-sci-agent-id =3D <0>; <--- dom0 agent id
+                scmi-secondary-agents =3D <
+                    0x82000002 &scmi_shm_0 0
+                    0x82000004 &scmi_shm_2 2
+                    0x82000005 &scmi_shm_3 3>; <--- func_id, shmem, agent_=
id
+                #scmi-secondary-agents-cells =3D <3>;
+
+                scmi_xen: scmi {
+                    compatible =3D "arm,scmi-smc";
+                    arm,smc-id =3D <0x82000003>; <--- Xen management agent=
 func_id
+                    #address-cells =3D <1>;
+                    #size-cells =3D <0>;
+                    #access-controller-cells =3D <1>;
+                    shmem =3D <&scmi_shm_1>; <--- Xen management agent shm=
em
+                };
+            };
+        };
+    };
+};
+
+Note: This example keeps the Host DT unchanged for Dom0 and baremetal Linu=
x
+by using func_id 0x82000002 / shmem 0x47ff0000 for Dom0, while Xen uses a
+separate privileged channel func_id 0x82000003 / shmem 0x47ff1000. EL3
+firmware enforces permissions per agent_id, so there is no conflict betwee=
n
+Dom0 and Xen channels.
+
+- #scmi-secondary-agents-cells
+
+    Defines whether Agent_id is set in the "scmi-secondary-agents" propert=
y.
+    Possible values are: 2, 3.
+    When set to 3 (the default), expect agent_id to be present in the seco=
ndary
+    agents list.
+    When set to 2, agent_id will be discovered for each channel using
+    BASE_DISCOVER_AGENT message.
+
+
+Example:
+
+/ {
+    chosen {
+        xen {
+            ranges;
+            xen_scmi_config {
+                compatible =3D "xen,sci";
+                #address-cells =3D <2>;
+                #size-cells =3D <2>;
+                ranges;
+
+                /* Shared memory nodes as in the previous example */
+
+                scmi-secondary-agents =3D <
+                    0x82000002 &scmi_shm_0
+                    0x82000004 &scmi_shm_2
+                    0x82000005 &scmi_shm_3
+                    0x82000006 &scmi_shm_4>;
+                #scmi-secondary-agents-cells =3D <2>;
+
+                scmi_xen: scmi {
+                    compatible =3D "arm,scmi-smc";
+                    arm,smc-id =3D <0x82000003>; <--- Xen management agent=
 func_id
+                    #address-cells =3D <1>;
+                    #size-cells =3D <0>;
+                    #access-controller-cells =3D <1>;
+                    shmem =3D <&scmi_shm_1>; <--- Xen management agent shm=
em
+                };
+            };
+        };
+    };
+};
+
+Dom0less example (multi-agent)
+-------------------------------
+
+Below is a minimal dom0less configuration showing how to enable SCMI SMC
+multi-agent for a pre-defined guest domain using xen,sci_type and
+xen,sci-agent-id, together with the Xen SCMI container:
+
+chosen {
+    xen {
+        ranges;
+        xen_scmi_config {
+            compatible =3D "xen,sci";
+            #address-cells =3D <2>;
+            #size-cells =3D <2>;
+            ranges;
+
+            /* Xen management channel shared memory */
+            scmi_shm_1: sram@47ff1000 {
+                compatible =3D "arm,scmi-shmem";
+                reg =3D <0x0 0x47ff1000 0x0 0x1000>;
+            };
+
+            scmi_shm_domu: sram@47ff2000 {
+                compatible =3D "arm,scmi-shmem";
+                reg =3D <0x0 0x47ff2000 0x0 0x1000>;
+            };
+
+            scmi-secondary-agents =3D <
+                0x82000004 &scmi_shm_domu 2>;
+            #scmi-secondary-agents-cells =3D <3>;
+
+            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>;
+            };
+        };
+    };
+
+    xen,domain@1 {
+        compatible =3D "xen,domain";
+        xen,sci_type =3D "scmi_smc_multiagent";
+        xen,sci-agent-id =3D <2>;
+        /* Additional domain properties (memory, cpus, kernels, etc.) */
+    };
+};
diff --git a/xen/arch/arm/dom0less-build.c b/xen/arch/arm/dom0less-build.c
index 4181c10538..1f8c1d851d 100644
--- a/xen/arch/arm/dom0less-build.c
+++ b/xen/arch/arm/dom0less-build.c
@@ -299,6 +299,17 @@ static int __init domu_dt_sci_parse(struct dt_device_n=
ode *node,
         d_cfg->arch.arm_sci_type =3D XEN_DOMCTL_CONFIG_ARM_SCI_NONE;
     else if ( !strcmp(sci_type, "scmi_smc") )
         d_cfg->arch.arm_sci_type =3D XEN_DOMCTL_CONFIG_ARM_SCI_SCMI_SMC;
+    else if ( !strcmp(sci_type, "scmi_smc_multiagent") )
+    {
+        uint32_t agent_id =3D 0;
+
+        if ( !dt_property_read_u32(node, "xen,sci-agent-id", &agent_id) ||
+             agent_id >=3D UINT8_MAX )
+            return -EINVAL;
+
+        d_cfg->arch.arm_sci_type =3D XEN_DOMCTL_CONFIG_ARM_SCI_SCMI_SMC_MA=
;
+        d_cfg->arch.arm_sci_agent_id =3D agent_id;
+    }
     else
     {
         printk(XENLOG_ERR "xen,sci_type in not valid (%s) for domain %s\n"=
,
diff --git a/xen/arch/arm/domain_build.c b/xen/arch/arm/domain_build.c
index 986a456f17..c09f50040e 100644
--- a/xen/arch/arm/domain_build.c
+++ b/xen/arch/arm/domain_build.c
@@ -86,6 +86,37 @@ int __init parse_arch_dom0_param(const char *s, const ch=
ar *e)
     return -EINVAL;
 }
=20
+/* SCMI agent ID for dom0 obtained from xen,sci container */
+#define SCMI_AGENT_ID_INVALID UINT8_MAX
+
+static uint8_t __init get_dom0_scmi_agent_id(void)
+{
+    const struct dt_device_node *config_node;
+    u32 val;
+    const struct dt_property *prop;
+
+    config_node =3D dt_find_compatible_node(NULL, NULL, "xen,sci");
+    if ( !config_node )
+        return SCMI_AGENT_ID_INVALID;
+
+    prop =3D dt_find_property(config_node, "xen,dom0-sci-agent-id", NULL);
+    if ( !prop )
+        return SCMI_AGENT_ID_INVALID;
+
+    if ( !dt_property_read_u32(config_node, "xen,dom0-sci-agent-id", &val)=
 )
+        return SCMI_AGENT_ID_INVALID;
+
+    if ( val >=3D SCMI_AGENT_ID_INVALID )
+    {
+         printk(XENLOG_WARNING
+             "Invalid xen,dom0-sci-agent-id=3D%u, SCMI disabled for Dom0\n=
",
+             val);
+        return SCMI_AGENT_ID_INVALID;
+    }
+
+    return val;
+}
+
 /* Override macros from asm/page.h to make them work with mfn_t */
 #undef virt_to_mfn
 #define virt_to_mfn(va) _mfn(__virt_to_mfn(va))
@@ -1459,6 +1490,7 @@ static int __init handle_node(struct domain *d, struc=
t kernel_info *kinfo,
         DT_MATCH_TYPE("memory"),
         /* The memory mapped timer is not supported by Xen. */
         DT_MATCH_COMPATIBLE("arm,armv7-timer-mem"),
+        DT_MATCH_COMPATIBLE("xen,sci"),
         { /* sentinel */ },
     };
     static const struct dt_device_match timer_matches[] __initconst =3D
@@ -1947,6 +1979,13 @@ void __init create_dom0(void)
     dom0_cfg.arch.tee_type =3D tee_get_type();
     dom0_cfg.max_vcpus =3D dom0_max_vcpus();
=20
+    /* Set up SCMI agent ID if provided in the xen,sci container */
+    dom0_cfg.arch.arm_sci_agent_id =3D get_dom0_scmi_agent_id();
+    dom0_cfg.arch.arm_sci_type =3D (dom0_cfg.arch.arm_sci_agent_id !=3D
+                                  SCMI_AGENT_ID_INVALID) ?
+                                 XEN_DOMCTL_CONFIG_ARM_SCI_SCMI_SMC_MA :
+                                 XEN_DOMCTL_CONFIG_ARM_SCI_NONE;
+
     if ( iommu_enabled )
         dom0_cfg.flags |=3D XEN_DOMCTL_CDF_iommu;
=20
diff --git a/xen/arch/arm/firmware/Kconfig b/xen/arch/arm/firmware/Kconfig
index 5c5f0880c4..972cd9b173 100644
--- a/xen/arch/arm/firmware/Kconfig
+++ b/xen/arch/arm/firmware/Kconfig
@@ -29,6 +29,18 @@ config SCMI_SMC
 	  driver domain.
 	  Use with EL3 firmware which supports only single SCMI OSPM agent.
=20
+config SCMI_SMC_MA
+	bool "Enable ARM SCMI SMC multi-agent driver"
+	depends on ARM_64
+	select ARM_SCI
+	help
+	  Enables SCMI SMC/HVC multi-agent in XEN to pass SCMI requests from Doma=
ins
+	  to EL3 firmware (TF-A) which supports multi-agent feature.
+	  This feature allows to enable SCMI per Domain using unique SCMI agent_i=
d,
+	  so Domain is identified by EL3 firmware as an SCMI Agent and can access
+	  allowed platform resources through dedicated SMC/HVC Shared memory base=
d
+	  transport.
+
 endchoice
=20
 endmenu
diff --git a/xen/arch/arm/firmware/Makefile b/xen/arch/arm/firmware/Makefil=
e
index 71bdefc24a..37927e690e 100644
--- a/xen/arch/arm/firmware/Makefile
+++ b/xen/arch/arm/firmware/Makefile
@@ -1,2 +1,3 @@
 obj-$(CONFIG_ARM_SCI) +=3D sci.o
 obj-$(CONFIG_SCMI_SMC) +=3D scmi-smc.o
+obj-$(CONFIG_SCMI_SMC_MA) +=3D scmi-shmem.o scmi-smc-multiagent.o
diff --git a/xen/arch/arm/firmware/scmi-proto.h b/xen/arch/arm/firmware/scm=
i-proto.h
new file mode 100644
index 0000000000..49f63cfc0a
--- /dev/null
+++ b/xen/arch/arm/firmware/scmi-proto.h
@@ -0,0 +1,164 @@
+/* SPDX-License-Identifier: GPL-2.0-only */
+/*
+ * Arm System Control and Management Interface definitions
+ * Version 3.0 (DEN0056C)
+ *
+ * Copyright (c) 2025 EPAM Systems
+ */
+
+#ifndef ARM_FIRMWARE_SCMI_PROTO_H_
+#define ARM_FIRMWARE_SCMI_PROTO_H_
+
+#include <xen/stdint.h>
+
+#define SCMI_SHORT_NAME_MAX_SIZE 16
+
+/* SCMI status codes. See section 4.1.4 */
+#define SCMI_SUCCESS              0
+#define SCMI_NOT_SUPPORTED      (-1)
+#define SCMI_INVALID_PARAMETERS (-2)
+#define SCMI_DENIED             (-3)
+#define SCMI_NOT_FOUND          (-4)
+#define SCMI_OUT_OF_RANGE       (-5)
+#define SCMI_BUSY               (-6)
+#define SCMI_COMMS_ERROR        (-7)
+#define SCMI_GENERIC_ERROR      (-8)
+#define SCMI_HARDWARE_ERROR     (-9)
+#define SCMI_PROTOCOL_ERROR     (-10)
+
+/* Protocol IDs */
+#define SCMI_BASE_PROTOCOL 0x10
+
+/* Base protocol message IDs */
+#define SCMI_BASE_PROTOCOL_VERSION            0x0
+#define SCMI_BASE_PROTOCOL_ATTIBUTES          0x1
+#define SCMI_BASE_PROTOCOL_MESSAGE_ATTRIBUTES 0x2
+#define SCMI_BASE_DISCOVER_AGENT              0x7
+#define SCMI_BASE_SET_DEVICE_PERMISSIONS      0x9
+#define SCMI_BASE_RESET_AGENT_CONFIGURATION   0xB
+
+typedef struct scmi_msg_header {
+    uint8_t id;
+    uint8_t type;
+    uint8_t protocol;
+    uint32_t status;
+} scmi_msg_header_t;
+
+/* Table 2 Message header format */
+#define SCMI_HDR_ID    GENMASK(7, 0)
+#define SCMI_HDR_TYPE  GENMASK(9, 8)
+#define SCMI_HDR_PROTO GENMASK(17, 10)
+
+#define SCMI_FIELD_GET(_mask, _reg)                                       =
     \
+    ((typeof(_mask))(((_reg) & (_mask)) >> (ffs64(_mask) - 1)))
+#define SCMI_FIELD_PREP(_mask, _val)                                      =
     \
+    (((typeof(_mask))(_val) << (ffs64(_mask) - 1)) & (_mask))
+
+static inline uint32_t pack_scmi_header(scmi_msg_header_t *hdr)
+{
+    return SCMI_FIELD_PREP(SCMI_HDR_ID, hdr->id) |
+           SCMI_FIELD_PREP(SCMI_HDR_TYPE, hdr->type) |
+           SCMI_FIELD_PREP(SCMI_HDR_PROTO, hdr->protocol);
+}
+
+static inline void unpack_scmi_header(uint32_t msg_hdr, scmi_msg_header_t =
*hdr)
+{
+    hdr->id =3D SCMI_FIELD_GET(SCMI_HDR_ID, msg_hdr);
+    hdr->type =3D SCMI_FIELD_GET(SCMI_HDR_TYPE, msg_hdr);
+    hdr->protocol =3D SCMI_FIELD_GET(SCMI_HDR_PROTO, msg_hdr);
+}
+
+static inline int scmi_to_xen_errno(int scmi_status)
+{
+    if ( scmi_status =3D=3D SCMI_SUCCESS )
+        return 0;
+
+    switch ( scmi_status )
+    {
+    case SCMI_NOT_SUPPORTED:
+        return -EOPNOTSUPP;
+    case SCMI_INVALID_PARAMETERS:
+        return -EINVAL;
+    case SCMI_DENIED:
+        return -EACCES;
+    case SCMI_NOT_FOUND:
+        return -ENOENT;
+    case SCMI_OUT_OF_RANGE:
+        return -ERANGE;
+    case SCMI_BUSY:
+        return -EBUSY;
+    case SCMI_COMMS_ERROR:
+        return -ENOTCONN;
+    case SCMI_GENERIC_ERROR:
+        return -EIO;
+    case SCMI_HARDWARE_ERROR:
+        return -ENXIO;
+    case SCMI_PROTOCOL_ERROR:
+        return -EBADMSG;
+    default:
+        return -EINVAL;
+    }
+}
+
+/* PROTOCOL_VERSION */
+#define SCMI_VERSION_MINOR GENMASK(15, 0)
+#define SCMI_VERSION_MAJOR GENMASK(31, 16)
+
+struct scmi_msg_prot_version_p2a {
+    uint32_t version;
+} __packed;
+
+/* BASE PROTOCOL_ATTRIBUTES */
+#define SCMI_BASE_ATTR_NUM_PROTO GENMASK(7, 0)
+#define SCMI_BASE_ATTR_NUM_AGENT GENMASK(15, 8)
+
+struct scmi_msg_base_attributes_p2a {
+    uint32_t attributes;
+} __packed;
+
+/*
+ * BASE_DISCOVER_AGENT
+ */
+#define SCMI_BASE_AGENT_ID_OWN 0xFFFFFFFF
+
+struct scmi_msg_base_discover_agent_a2p {
+    uint32_t agent_id;
+} __packed;
+
+struct scmi_msg_base_discover_agent_p2a {
+    uint32_t agent_id;
+    char name[SCMI_SHORT_NAME_MAX_SIZE];
+} __packed;
+
+/*
+ * BASE_SET_DEVICE_PERMISSIONS
+ */
+#define SCMI_BASE_DEVICE_ACCESS_ALLOW           BIT(0, UL)
+
+struct scmi_msg_base_set_device_permissions_a2p {
+    uint32_t agent_id;
+    uint32_t device_id;
+    uint32_t flags;
+} __packed;
+
+/*
+ * BASE_RESET_AGENT_CONFIGURATION
+ */
+#define SCMI_BASE_AGENT_PERMISSIONS_RESET       BIT(0, UL)
+
+struct scmi_msg_base_reset_agent_cfg_a2p {
+    uint32_t agent_id;
+    uint32_t flags;
+} __packed;
+
+#endif /* ARM_FIRMWARE_SCMI_PROTO_H_ */
+
+/*
+ * 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/arm/firmware/scmi-shmem.c b/xen/arch/arm/firmware/scm=
i-shmem.c
new file mode 100644
index 0000000000..e36745a85e
--- /dev/null
+++ b/xen/arch/arm/firmware/scmi-shmem.c
@@ -0,0 +1,118 @@
+/* SPDX-License-Identifier: GPL-2.0-only */
+/*
+ * SMC/HVC shmem transport implementation used by
+ * SCI SCMI multi-agent driver.
+ *
+ * Oleksii Moisieiev <oleksii_moisieiev@epam.com>
+ * Copyright (c) 2025 EPAM Systems
+ */
+
+#include <xen/err.h>
+#include <xen/io.h>
+#include <asm/io.h>
+
+#include "scmi-proto.h"
+#include "scmi-shmem.h"
+
+static inline int
+shmem_channel_status(const volatile struct scmi_shared_mem __iomem *shmem)
+{
+    return (readl(&shmem->channel_status) &
+            SCMI_SHMEM_CHAN_STAT_CHANNEL_FREE) ? 0 : -EBUSY;
+}
+
+int shmem_put_message(volatile struct scmi_shared_mem __iomem *shmem,
+                      scmi_msg_header_t *hdr, void *data, unsigned int len=
)
+{
+    int ret;
+
+    if ( (len + offsetof(struct scmi_shared_mem, msg_payload)) >
+         SCMI_SHMEM_MAPPED_SIZE )
+    {
+        printk(XENLOG_ERR "scmi: Wrong size of smc message. Data is invali=
d\n");
+        return -EINVAL;
+    }
+
+    ret =3D shmem_channel_status(shmem);
+    if ( ret )
+        return ret;
+
+    writel_relaxed(0x0, &shmem->channel_status);
+    /* Writing 0x0 right now, but "shmem"_FLAG_INTR_ENABLED can be set */
+    writel_relaxed(0x0, &shmem->flags);
+    writel_relaxed(sizeof(shmem->msg_header) + len, &shmem->length);
+    writel(pack_scmi_header(hdr), &shmem->msg_header);
+
+    if ( len > 0 && data )
+        memcpy_toio(shmem->msg_payload, data, len);
+
+    return 0;
+}
+
+int shmem_get_response(const volatile struct scmi_shared_mem __iomem *shme=
m,
+                       scmi_msg_header_t *hdr, void *data, unsigned int le=
n)
+{
+    int recv_len;
+    int ret;
+    /*
+     * First word of msg_payload carries the returned status; exclude it f=
rom
+     * recv_len so only the protocol payload is copied back to the caller.
+     */
+    int pad =3D sizeof(hdr->status);
+
+    if ( len >=3D SCMI_SHMEM_MAPPED_SIZE -
+         offsetof(struct scmi_shared_mem, msg_payload) )
+    {
+        printk(XENLOG_ERR
+               "scmi: Wrong size of input smc message. Data may be invalid=
\n");
+        return -EINVAL;
+    }
+
+    ret =3D shmem_channel_status(shmem);
+    if ( ret )
+        return ret;
+
+    recv_len =3D readl(&shmem->length) - sizeof(shmem->msg_header);
+
+    if ( recv_len < 0 )
+    {
+        printk(XENLOG_ERR
+               "scmi: Wrong size of smc message. Data may be invalid\n");
+        return -EINVAL;
+    }
+
+    unpack_scmi_header(readl(&shmem->msg_header), hdr);
+
+    hdr->status =3D readl(&shmem->msg_payload);
+    recv_len =3D recv_len > pad ? recv_len - pad : 0;
+
+    ret =3D scmi_to_xen_errno(hdr->status);
+    if ( ret )
+    {
+        printk(XENLOG_DEBUG "scmi: Error received: %d\n", ret);
+        return ret;
+    }
+
+    if ( recv_len > len )
+    {
+        printk(XENLOG_ERR
+               "scmi: Not enough buffer for message %d, expecting %d\n",
+               recv_len, len);
+        return -EINVAL;
+    }
+
+    if ( recv_len > 0 )
+        memcpy_fromio(data, shmem->msg_payload + pad, recv_len);
+
+    return 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/arm/firmware/scmi-shmem.h b/xen/arch/arm/firmware/scm=
i-shmem.h
new file mode 100644
index 0000000000..722263aa77
--- /dev/null
+++ b/xen/arch/arm/firmware/scmi-shmem.h
@@ -0,0 +1,45 @@
+/* SPDX-License-Identifier: GPL-2.0-only */
+/*
+ * Arm System Control and Management Interface definitions
+ * Version 3.0 (DEN0056C)
+ * Shared Memory based Transport
+ *
+ * Copyright (c) 2024 EPAM Systems
+ */
+
+#ifndef ARM_FIRMWARE_SCMI_SHMEM_H_
+#define ARM_FIRMWARE_SCMI_SHMEM_H_
+
+#include <xen/stdint.h>
+
+#define SCMI_SHMEM_CHAN_STAT_CHANNEL_FREE  BIT(0, UL)
+#define SCMI_SHMEM_CHAN_STAT_CHANNEL_ERROR BIT(1, UL)
+
+struct scmi_shared_mem {
+    uint32_t reserved;
+    uint32_t channel_status;
+    uint32_t reserved1[2];
+    uint32_t flags;
+    uint32_t length;
+    uint32_t msg_header;
+    uint8_t msg_payload[];
+};
+
+#define SCMI_SHMEM_MAPPED_SIZE PAGE_SIZE
+
+int shmem_put_message(volatile struct scmi_shared_mem __iomem *shmem,
+                      scmi_msg_header_t *hdr, void *data, unsigned int len=
);
+
+int shmem_get_response(const volatile struct scmi_shared_mem __iomem *shme=
m,
+                       scmi_msg_header_t *hdr, void *data, unsigned int le=
n);
+#endif /* ARM_FIRMWARE_SCMI_SHMEM_H_ */
+
+/*
+ * 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/arm/firmware/scmi-smc-multiagent.c b/xen/arch/arm/fir=
mware/scmi-smc-multiagent.c
new file mode 100644
index 0000000000..113af22ec3
--- /dev/null
+++ b/xen/arch/arm/firmware/scmi-smc-multiagent.c
@@ -0,0 +1,830 @@
+/* SPDX-License-Identifier: GPL-2.0-only */
+/*
+ * SCI SCMI multi-agent driver, using SMC/HVC shmem as transport.
+ *
+ * Oleksii Moisieiev <oleksii_moisieiev@epam.com>
+ * Copyright (c) 2025 EPAM Systems
+ */
+
+#include <xen/acpi.h>
+
+#include <xen/device_tree.h>
+#include <xen/init.h>
+#include <xen/iocap.h>
+#include <xen/err.h>
+#include <xen/libfdt/libfdt.h>
+#include <xen/string.h>
+#include <xen/param.h>
+#include <xen/sched.h>
+#include <xen/vmap.h>
+
+#include <asm/firmware/sci.h>
+#include <asm/smccc.h>
+
+#include "scmi-proto.h"
+#include "scmi-shmem.h"
+
+#define SCMI_SECONDARY_AGENTS "scmi-secondary-agents"
+
+struct scmi_channel {
+    uint32_t agent_id;
+    uint32_t func_id;
+    domid_t domain_id;
+    uint64_t paddr;
+    struct scmi_shared_mem __iomem *shmem;
+    spinlock_t lock;
+    struct list_head list;
+};
+
+struct scmi_data {
+    struct list_head channel_list;
+    spinlock_t channel_list_lock;
+    uint32_t func_id;
+    bool initialized;
+    uint32_t shmem_phandle;
+    uint32_t hyp_channel_agent_id;
+    struct dt_device_node *dt_dev;
+};
+
+static struct scmi_data scmi_data;
+
+static bool scmi_is_under_xen_sci(const struct dt_device_node *node)
+{
+    const struct dt_device_node *p;
+
+    for ( p =3D node->parent; p; p =3D p->parent )
+        if ( dt_device_is_compatible(p, "xen,sci") )
+            return true;
+
+    return false;
+}
+
+static int send_smc_message(struct scmi_channel *chan_info,
+                            scmi_msg_header_t *hdr, void *data, int len)
+{
+    struct arm_smccc_res resp;
+    int ret;
+
+    ret =3D shmem_put_message(chan_info->shmem, hdr, data, len);
+    if ( ret )
+        return ret;
+
+    arm_smccc_1_1_smc(chan_info->func_id, 0, 0, 0, 0, 0, 0, 0, &resp);
+
+    if ( resp.a0 =3D=3D (unsigned long)ARM_SMCCC_INVALID_PARAMETER )
+        return -EINVAL;
+
+    if ( resp.a0 )
+        return -EOPNOTSUPP;
+
+    return 0;
+}
+
+static int do_smc_xfer(struct scmi_channel *chan_info, scmi_msg_header_t *=
hdr,
+                       void *tx_data, int tx_size, void *rx_data, int rx_s=
ize)
+{
+    int ret =3D 0;
+
+    ASSERT(chan_info && chan_info->shmem);
+
+    if ( !hdr )
+        return -EINVAL;
+
+    spin_lock(&chan_info->lock);
+
+    printk(XENLOG_DEBUG
+           "scmi: agent_id =3D %d msg_id =3D %x type =3D %d, proto =3D %x\=
n",
+           chan_info->agent_id, hdr->id, hdr->type, hdr->protocol);
+
+    ret =3D send_smc_message(chan_info, hdr, tx_data, tx_size);
+    if ( ret )
+        goto clean;
+
+    ret =3D shmem_get_response(chan_info->shmem, hdr, rx_data, rx_size);
+
+clean:
+    printk(XENLOG_DEBUG
+           "scmi: get smc response agent_id =3D %d msg_id =3D %x proto =3D=
 %x res=3D%d\n",
+           chan_info->agent_id, hdr->id, hdr->protocol, ret);
+
+    spin_unlock(&chan_info->lock);
+
+    return ret;
+}
+
+static struct scmi_channel *get_channel_by_id(uint32_t agent_id)
+{
+    struct scmi_channel *curr;
+    bool found =3D false;
+
+    spin_lock(&scmi_data.channel_list_lock);
+    list_for_each_entry(curr, &scmi_data.channel_list, list)
+    {
+        if ( curr->agent_id =3D=3D agent_id )
+        {
+            found =3D true;
+            break;
+        }
+    }
+
+    spin_unlock(&scmi_data.channel_list_lock);
+    if ( found )
+        return curr;
+
+    return NULL;
+}
+
+static struct scmi_channel *acquire_scmi_channel(struct domain *d,
+                                                 uint32_t agent_id)
+{
+    struct scmi_channel *curr;
+    struct scmi_channel *ret =3D ERR_PTR(-ENOENT);
+
+    spin_lock(&scmi_data.channel_list_lock);
+    list_for_each_entry(curr, &scmi_data.channel_list, list)
+    {
+        if ( curr->agent_id =3D=3D agent_id )
+        {
+            if ( curr->domain_id !=3D DOMID_INVALID )
+            {
+                ret =3D ERR_PTR(-EEXIST);
+                break;
+            }
+
+            curr->domain_id =3D d->domain_id;
+            ret =3D curr;
+            break;
+        }
+    }
+
+    spin_unlock(&scmi_data.channel_list_lock);
+
+    return ret;
+}
+
+static void relinquish_scmi_channel(struct scmi_channel *channel)
+{
+    ASSERT(channel !=3D NULL);
+
+    spin_lock(&scmi_data.channel_list_lock);
+    channel->domain_id =3D DOMID_INVALID;
+    spin_unlock(&scmi_data.channel_list_lock);
+}
+
+static int map_channel_memory(struct scmi_channel *channel)
+{
+    ASSERT(channel && channel->paddr);
+    channel->shmem =3D ioremap_nocache(channel->paddr, SCMI_SHMEM_MAPPED_S=
IZE);
+    if ( !channel->shmem )
+        return -ENOMEM;
+
+    channel->shmem->channel_status =3D SCMI_SHMEM_CHAN_STAT_CHANNEL_FREE;
+    printk(XENLOG_DEBUG "scmi: Got shmem %lx after vmap %p\n", channel->pa=
ddr,
+           channel->shmem);
+
+    return 0;
+}
+
+static void unmap_channel_memory(struct scmi_channel *channel)
+{
+    ASSERT(channel);
+
+    if ( !channel->shmem )
+        return;
+
+    iounmap(channel->shmem);
+    channel->shmem =3D NULL;
+}
+
+static struct scmi_channel *smc_create_channel(uint32_t agent_id,
+                                               uint32_t func_id, uint64_t =
addr)
+{
+    struct scmi_channel *channel, *curr;
+
+    spin_lock(&scmi_data.channel_list_lock);
+
+    /* Check if channel already exists while holding the lock */
+    list_for_each_entry(curr, &scmi_data.channel_list, list)
+    {
+        if ( curr->agent_id =3D=3D agent_id )
+        {
+            spin_unlock(&scmi_data.channel_list_lock);
+            return ERR_PTR(-EEXIST);
+        }
+    }
+
+    channel =3D xmalloc(struct scmi_channel);
+    if ( !channel )
+    {
+        spin_unlock(&scmi_data.channel_list_lock);
+        return ERR_PTR(-ENOMEM);
+    }
+
+    spin_lock_init(&channel->lock);
+    channel->agent_id =3D agent_id;
+    channel->func_id =3D func_id;
+    channel->domain_id =3D DOMID_INVALID;
+    channel->shmem =3D NULL;
+    channel->paddr =3D addr;
+    list_add_tail(&channel->list, &scmi_data.channel_list);
+
+    spin_unlock(&scmi_data.channel_list_lock);
+    return channel;
+}
+
+static void free_channel_list(void)
+{
+    struct scmi_channel *curr, *_curr;
+    /*
+     * Called only on the __init error path, before any runtime users exis=
t,
+     * so no other thread is iterating channel_list. Keep the lock for the
+     * whole drain for clarity and to avoid misleading readers about possi=
ble
+     * concurrent access.
+     */
+    spin_lock(&scmi_data.channel_list_lock);
+    list_for_each_entry_safe(curr, _curr, &scmi_data.channel_list, list)
+    {
+        list_del(&curr->list);
+        xfree(curr);
+    }
+    spin_unlock(&scmi_data.channel_list_lock);
+}
+
+static int __init
+scmi_dt_read_hyp_channel_addr(struct dt_device_node *scmi_node, u64 *addr,
+                              u64 *size)
+{
+    struct dt_device_node *shmem_node;
+    const __be32 *prop;
+
+    prop =3D dt_get_property(scmi_node, "shmem", NULL);
+    if ( !prop )
+        return -EINVAL;
+
+    shmem_node =3D dt_find_node_by_phandle(be32_to_cpu(*prop));
+    if ( IS_ERR_OR_NULL(shmem_node) )
+    {
+        printk(XENLOG_ERR
+               "scmi: Device tree error, can't parse reserved memory %ld\n=
",
+               PTR_ERR(shmem_node));
+        return PTR_ERR(shmem_node);
+    }
+
+    return dt_device_get_address(shmem_node, 0, addr, size);
+}
+
+/*
+ * Handle Dom0 SCMI specific DT nodes
+ *
+ * Make a decision on copying SCMI specific nodes into Dom0 device tree.
+ * For SCMI multi-agent case:
+ * - shmem nodes will not be copied and generated instead if SCMI
+ *   is enabled for Dom0
+ * - scmi node will be copied if SCMI is enabled for Dom0
+ */
+static bool scmi_dt_handle_node(struct domain *d, struct dt_device_node *n=
ode)
+{
+    static const struct dt_device_match shmem_matches[] __initconst =3D {
+        DT_MATCH_COMPATIBLE("arm,scmi-shmem"),
+        { /* sentinel */ },
+    };
+    static const struct dt_device_match scmi_matches[] __initconst =3D {
+        DT_MATCH_PATH("/firmware/scmi"),
+        { /* sentinel */ },
+    };
+
+    if ( !scmi_data.initialized )
+        return false;
+
+    /* skip scmi shmem node for dom0 if scmi not enabled */
+    if ( dt_match_node(shmem_matches, node) && !sci_domain_is_enabled(d) )
+    {
+        dt_dprintk("  Skip scmi shmem node\n");
+        return true;
+    }
+
+    /* drop scmi if not enabled */
+    if ( dt_match_node(scmi_matches, node) && !sci_domain_is_enabled(d) )
+    {
+        dt_dprintk("  Skip scmi node\n");
+        return true;
+    }
+
+    return false;
+}
+
+static int scmi_assign_device(uint32_t agent_id, uint32_t device_id,
+                              uint32_t flags)
+{
+    struct scmi_msg_base_set_device_permissions_a2p tx;
+    struct scmi_channel *channel;
+    scmi_msg_header_t hdr;
+
+    channel =3D get_channel_by_id(scmi_data.hyp_channel_agent_id);
+    if ( !channel )
+        return -EINVAL;
+
+    hdr.id =3D SCMI_BASE_SET_DEVICE_PERMISSIONS;
+    hdr.type =3D 0;
+    hdr.protocol =3D SCMI_BASE_PROTOCOL;
+
+    tx.agent_id =3D agent_id;
+    tx.device_id =3D device_id;
+    tx.flags =3D flags;
+
+    return do_smc_xfer(channel, &hdr, &tx, sizeof(tx), NULL, 0);
+}
+
+static int scmi_dt_assign_device(struct domain *d,
+                                 struct dt_phandle_args *ac_spec)
+{
+    struct scmi_channel *agent_channel;
+    uint32_t scmi_device_id =3D ac_spec->args[0];
+    int ret;
+
+    if ( !d->arch.sci_data )
+        return 0;
+
+    /* The access-controllers is specified for DT dev, but it's not a SCMI=
 */
+    if ( !scmi_data.dt_dev ||
+         !dt_node_path_is_equal(ac_spec->np, scmi_data.dt_dev->full_name) =
)
+        return 0;
+
+    agent_channel =3D d->arch.sci_data;
+
+    spin_lock(&agent_channel->lock);
+
+    ret =3D scmi_assign_device(agent_channel->agent_id, scmi_device_id,
+                             SCMI_BASE_DEVICE_ACCESS_ALLOW);
+    if ( ret )
+    {
+        printk(XENLOG_ERR
+               "scmi: could not assign dev for %pd agent:%d dev_id:%u (%d)=
",
+               d, agent_channel->agent_id, scmi_device_id, ret);
+    }
+
+    spin_unlock(&agent_channel->lock);
+    return ret;
+}
+
+static int collect_agent_id(struct scmi_channel *agent_channel)
+{
+    int ret;
+    scmi_msg_header_t hdr;
+    struct scmi_msg_base_discover_agent_p2a da_rx;
+    struct scmi_msg_base_discover_agent_a2p da_tx;
+
+    ret =3D map_channel_memory(agent_channel);
+    if ( ret )
+        return ret;
+
+    hdr.id =3D SCMI_BASE_DISCOVER_AGENT;
+    hdr.type =3D 0;
+    hdr.protocol =3D SCMI_BASE_PROTOCOL;
+
+    da_tx.agent_id =3D agent_channel->agent_id;
+
+    ret =3D do_smc_xfer(agent_channel, &hdr, &da_tx, sizeof(da_tx), &da_rx=
,
+                        sizeof(da_rx));
+    if ( agent_channel->domain_id !=3D DOMID_XEN )
+        unmap_channel_memory(agent_channel);
+    if ( ret )
+        return ret;
+
+    printk(XENLOG_DEBUG "id=3D0x%x name=3D%s\n", da_rx.agent_id, da_rx.nam=
e);
+    agent_channel->agent_id =3D da_rx.agent_id;
+    return 0;
+}
+
+static __init int collect_agents(struct dt_device_node *scmi_node)
+{
+    const struct dt_device_node *config_node;
+    const __be32 *prop;
+    uint32_t len;
+    const __be32 *end;
+    uint32_t cells_per_entry =3D 3; /* Default to 3 cells if property is a=
bsent. */
+
+    config_node =3D dt_find_compatible_node(NULL, NULL, "xen,sci");
+    if ( !config_node )
+    {
+        printk(XENLOG_WARNING "scmi: xen,sci node not found, no agents to =
collect.\n");
+        return -ENOENT;
+    }
+
+    /* Check for the optional '#scmi-secondary-agents-cells' property. */
+    if ( dt_property_read_u32(config_node, "#scmi-secondary-agents-cells",
+                              &cells_per_entry) )
+    {
+        if ( cells_per_entry !=3D 2 && cells_per_entry !=3D 3 )
+        {
+            printk(XENLOG_ERR "scmi: Invalid #scmi-secondary-agents-cells =
value: %u\n",
+                   cells_per_entry);
+            return -EINVAL;
+        }
+    }
+
+    prop =3D dt_get_property(config_node, SCMI_SECONDARY_AGENTS, &len);
+    if ( !prop )
+    {
+        printk(XENLOG_ERR "scmi: No %s property found, no agents to collec=
t.\n",
+               SCMI_SECONDARY_AGENTS);
+        return -EINVAL;
+    }
+
+    /* Validate that the property length is a multiple of the cell size. *=
/
+    if ( len =3D=3D 0 || len % (cells_per_entry * sizeof(uint32_t)) !=3D 0=
 )
+    {
+        printk(XENLOG_ERR "scmi: Invalid length of %s property: %u for %u =
cells per entry\n",
+               SCMI_SECONDARY_AGENTS, len, cells_per_entry);
+        return -EINVAL;
+    }
+
+    end =3D (const __be32 *)((const u8 *)prop + len);
+
+    for ( ; prop < end; )
+    {
+        uint32_t agent_id;
+        uint32_t smc_id;
+        uint32_t shmem_phandle;
+        struct dt_device_node *node;
+        u64 addr, size;
+        int ret;
+        struct scmi_channel *agent_channel;
+
+        smc_id =3D be32_to_cpu(*prop++);
+        shmem_phandle =3D be32_to_cpu(*prop++);
+
+        if ( cells_per_entry =3D=3D 3 )
+            agent_id =3D be32_to_cpu(*prop++);
+        else
+            agent_id =3D SCMI_BASE_AGENT_ID_OWN;
+
+        node =3D dt_find_node_by_phandle(shmem_phandle);
+        if ( !node )
+        {
+            printk(XENLOG_ERR "scmi: Could not find shmem node for agent %=
u\n",
+                   agent_id);
+            return -EINVAL;
+        }
+
+        ret =3D dt_device_get_address(node, 0, &addr, &size);
+        if ( ret )
+        {
+            printk(XENLOG_ERR
+                   "scmi: Could not read shmem address for agent %u: %d\n"=
,
+                   agent_id, ret);
+            return ret;
+        }
+
+        if ( !IS_ALIGNED(size, SCMI_SHMEM_MAPPED_SIZE) ||
+             !IS_ALIGNED(addr, SCMI_SHMEM_MAPPED_SIZE) )
+        {
+            printk(XENLOG_ERR "scmi: shmem memory is not aligned\n");
+            return -EINVAL;
+        }
+
+        agent_channel =3D smc_create_channel(agent_id, smc_id, addr);
+        if ( IS_ERR(agent_channel) )
+        {
+            printk(XENLOG_ERR "scmi: Could not create channel for agent %u=
: %ld\n",
+                   agent_id, PTR_ERR(agent_channel));
+            return PTR_ERR(agent_channel);
+        }
+
+        if ( cells_per_entry =3D=3D 2 )
+        {
+            ret =3D collect_agent_id(agent_channel);
+            if ( ret )
+                return ret;
+        }
+
+        printk(XENLOG_DEBUG "scmi: Agent %u SMC %X addr %lx\n", agent_chan=
nel->agent_id,
+               smc_id, (unsigned long)addr);
+    }
+
+    return 0;
+}
+
+static int scmi_domain_init(struct domain *d,
+                            struct xen_domctl_createdomain *config)
+{
+    struct scmi_channel *channel;
+    int ret;
+
+    if ( !scmi_data.initialized )
+        return 0;
+
+    /*
+     * SCMI support is configured via:
+     * - For dom0: xen,dom0-sci-agent-id property under the xen,sci contai=
ner
+     * - For dom0less: xen,sci-agent-id in the domain node
+     * The config->arch.arm_sci_type and config->arch.arm_sci_agent_id
+     * are already set by domain_build.c or dom0less-build.c
+     */
+
+    if ( config->arch.arm_sci_type =3D=3D XEN_DOMCTL_CONFIG_ARM_SCI_NONE )
+        return 0;
+
+    channel =3D acquire_scmi_channel(d, config->arch.arm_sci_agent_id);
+    if ( IS_ERR(channel) )
+    {
+        printk(XENLOG_ERR
+               "scmi: Failed to acquire SCMI channel for agent_id %u: %ld\=
n",
+               config->arch.arm_sci_agent_id, PTR_ERR(channel));
+        return PTR_ERR(channel);
+    }
+
+    printk(XENLOG_INFO
+           "scmi: Acquire channel id =3D 0x%x, domain_id =3D %d paddr =3D =
0x%lx\n",
+           channel->agent_id, channel->domain_id, channel->paddr);
+
+    /*
+     * Dom0 (if present) needs to have an access to the guest memory range
+     * to satisfy iomem_access_permitted() check in XEN_DOMCTL_iomem_permi=
ssion
+     * domctl.
+     */
+    if ( hardware_domain && !is_hardware_domain(d) )
+    {
+        ret =3D iomem_permit_access(hardware_domain, paddr_to_pfn(channel-=
>paddr),
+                                  paddr_to_pfn(channel->paddr +
+                                  SCMI_SHMEM_MAPPED_SIZE - 1));
+        if ( ret )
+            goto error;
+    }
+
+    d->arch.sci_data =3D channel;
+    d->arch.sci_enabled =3D true;
+
+    return 0;
+
+error:
+    relinquish_scmi_channel(channel);
+    return ret;
+}
+
+int scmi_domain_sanitise_config(struct xen_domctl_createdomain *config)
+{
+    if ( config->arch.arm_sci_type !=3D XEN_DOMCTL_CONFIG_ARM_SCI_NONE &&
+         config->arch.arm_sci_type !=3D XEN_DOMCTL_CONFIG_ARM_SCI_SCMI_SMC=
_MA )
+    {
+        dprintk(XENLOG_INFO, "scmi: Unsupported ARM_SCI type\n");
+        return -EINVAL;
+    }
+
+    return 0;
+}
+
+static int scmi_relinquish_resources(struct domain *d)
+{
+    int ret;
+    struct scmi_channel *channel, *agent_channel;
+    scmi_msg_header_t hdr;
+    struct scmi_msg_base_reset_agent_cfg_a2p tx;
+
+    if ( !d->arch.sci_data )
+        return 0;
+
+    agent_channel =3D d->arch.sci_data;
+
+    spin_lock(&agent_channel->lock);
+    tx.agent_id =3D agent_channel->agent_id;
+    spin_unlock(&agent_channel->lock);
+
+    channel =3D get_channel_by_id(scmi_data.hyp_channel_agent_id);
+    if ( !channel )
+    {
+        printk(XENLOG_ERR
+               "scmi: Unable to get Hypervisor scmi channel for domain %d\=
n",
+               d->domain_id);
+        return -EINVAL;
+    }
+
+    hdr.id =3D SCMI_BASE_RESET_AGENT_CONFIGURATION;
+    hdr.type =3D 0;
+    hdr.protocol =3D SCMI_BASE_PROTOCOL;
+
+    tx.flags =3D SCMI_BASE_AGENT_PERMISSIONS_RESET;
+
+    ret =3D do_smc_xfer(channel, &hdr, &tx, sizeof(tx), NULL, 0);
+    if ( ret =3D=3D -EOPNOTSUPP )
+        return 0;
+
+    return ret;
+}
+
+static void scmi_domain_destroy(struct domain *d)
+{
+    struct scmi_channel *channel;
+
+    if ( !d->arch.sci_data )
+        return;
+
+    channel =3D d->arch.sci_data;
+    spin_lock(&channel->lock);
+
+    relinquish_scmi_channel(channel);
+    printk(XENLOG_DEBUG "scmi: Free domain %d\n", d->domain_id);
+
+    d->arch.sci_data =3D NULL;
+    d->arch.sci_enabled =3D false;
+
+    spin_unlock(&channel->lock);
+}
+
+static bool scmi_handle_call(struct cpu_user_regs *regs)
+{
+    uint32_t fid =3D (uint32_t)get_user_reg(regs, 0);
+    struct scmi_channel *agent_channel;
+    struct domain *d =3D current->domain;
+    struct arm_smccc_res resp;
+    bool res =3D false;
+
+    if ( (!sci_domain_is_enabled(d)) || (!d->arch.sci_data) )
+        return false;
+
+    agent_channel =3D d->arch.sci_data;
+    spin_lock(&agent_channel->lock);
+
+    if ( agent_channel->func_id !=3D fid )
+    {
+        res =3D false;
+        goto unlock;
+    }
+
+    arm_smccc_1_1_smc(fid,
+                      get_user_reg(regs, 1),
+                      get_user_reg(regs, 2),
+                      get_user_reg(regs, 3),
+                      get_user_reg(regs, 4),
+                      get_user_reg(regs, 5),
+                      get_user_reg(regs, 6),
+                      get_user_reg(regs, 7),
+                      &resp);
+
+    set_user_reg(regs, 0, resp.a0);
+    set_user_reg(regs, 1, resp.a1);
+    set_user_reg(regs, 2, resp.a2);
+    set_user_reg(regs, 3, resp.a3);
+    res =3D true;
+unlock:
+    spin_unlock(&agent_channel->lock);
+
+    return res;
+}
+
+static const struct sci_mediator_ops scmi_ops =3D {
+    .domain_init =3D scmi_domain_init,
+    .domain_destroy =3D scmi_domain_destroy,
+    .relinquish_resources =3D scmi_relinquish_resources,
+    .handle_call =3D scmi_handle_call,
+    .dom0_dt_handle_node =3D scmi_dt_handle_node,
+    .domain_sanitise_config =3D scmi_domain_sanitise_config,
+    .assign_dt_device =3D scmi_dt_assign_device,
+};
+
+static int __init scmi_check_smccc_ver(void)
+{
+    if ( smccc_ver < ARM_SMCCC_VERSION_1_1 )
+    {
+        printk(XENLOG_WARNING
+               "scmi: No SMCCC 1.1 support, SCMI calls forwarding disabled=
\n");
+        return -ENOSYS;
+    }
+
+    return 0;
+}
+
+static int __init scmi_dt_hyp_channel_read(struct dt_device_node *scmi_nod=
e,
+                                           struct scmi_data *scmi_data,
+                                           u64 *addr)
+{
+    int ret;
+    u64 size;
+
+    if ( !dt_property_read_u32(scmi_node, "arm,smc-id", &scmi_data->func_i=
d) )
+    {
+        printk(XENLOG_ERR "scmi: unable to read smc-id from DT\n");
+        return -ENOENT;
+    }
+
+    ret =3D scmi_dt_read_hyp_channel_addr(scmi_node, addr, &size);
+    if ( IS_ERR_VALUE(ret) )
+        return -ENOENT;
+
+    if ( !IS_ALIGNED(size, SCMI_SHMEM_MAPPED_SIZE) )
+    {
+        printk(XENLOG_ERR "scmi: shmem memory is not aligned\n");
+        return -EINVAL;
+    }
+
+    return 0;
+}
+
+static __init int scmi_probe(struct dt_device_node *scmi_node, const void =
*data)
+{
+    u64 addr;
+    int ret;
+    struct scmi_channel *channel;
+    unsigned int n_agents;
+    scmi_msg_header_t hdr;
+    struct scmi_msg_base_attributes_p2a rx;
+
+    ASSERT(scmi_node !=3D NULL);
+
+    /*
+     * Only bind to the SCMI node provided by Xen under the xen,sci contai=
ner
+     * (e.g. /chosen/xen/xen_scmi_config/scmi). This avoids binding to fir=
mware
+     * SCMI nodes that belong to the host OSPM and keeps the mediator scop=
ed to
+     * Xen-provided configuration only.
+     */
+    if ( !scmi_is_under_xen_sci(scmi_node) )
+        return -ENODEV;
+
+    if ( !acpi_disabled )
+    {
+        printk(XENLOG_WARNING "scmi: is not supported when using ACPI\n");
+        return -EINVAL;
+    }
+
+    ret =3D scmi_check_smccc_ver();
+    if ( ret )
+        return ret;
+
+    ret =3D scmi_dt_hyp_channel_read(scmi_node, &scmi_data, &addr);
+    if ( ret )
+        return ret;
+
+    INIT_LIST_HEAD(&scmi_data.channel_list);
+    spin_lock_init(&scmi_data.channel_list_lock);
+
+    scmi_data.dt_dev =3D scmi_node;
+
+    channel =3D smc_create_channel(SCMI_BASE_AGENT_ID_OWN, scmi_data.func_=
id, addr);
+    if ( IS_ERR(channel) )
+    {
+        ret =3D PTR_ERR(channel);
+        goto out;
+    }
+
+    /* Mark as Xen management channel before collecting agent ID */
+    channel->domain_id =3D DOMID_XEN;
+
+    /* Request agent id for Xen management channel */
+    ret =3D collect_agent_id(channel);
+    if ( ret )
+        goto error;
+
+    /* Save the agent id for Xen management channel */
+    scmi_data.hyp_channel_agent_id =3D channel->agent_id;
+
+    hdr.id =3D SCMI_BASE_PROTOCOL_ATTIBUTES;
+    hdr.type =3D 0;
+    hdr.protocol =3D SCMI_BASE_PROTOCOL;
+
+    ret =3D do_smc_xfer(channel, &hdr, NULL, 0, &rx, sizeof(rx));
+    if ( ret )
+        goto error;
+
+    n_agents =3D SCMI_FIELD_GET(SCMI_BASE_ATTR_NUM_AGENT, rx.attributes);
+    printk(XENLOG_DEBUG "scmi: Got agent count %d\n", n_agents);
+    ret =3D collect_agents(scmi_node);
+    if ( ret )
+        goto error;
+
+    ret =3D sci_register(&scmi_ops);
+    if ( ret )
+    {
+        printk(XENLOG_ERR "SCMI: mediator already registered (ret =3D %d)\=
n",
+               ret);
+        goto error;
+    }
+
+    scmi_data.initialized =3D true;
+    goto out;
+
+error:
+    unmap_channel_memory(channel);
+    free_channel_list();
+out:
+    return ret;
+}
+
+static const struct dt_device_match scmi_smc_match[] __initconst =3D {
+    DT_MATCH_COMPATIBLE("arm,scmi-smc"),
+    { /* sentinel */ },
+};
+
+DT_DEVICE_START(scmi_smc_ma, "SCMI SMC MEDIATOR", DEVICE_FIRMWARE)
+        .dt_match =3D scmi_smc_match,
+        .init =3D scmi_probe,
+DT_DEVICE_END
+
+/*
+ * Local variables:
+ * mode: C
+ * c-file-style: "BSD"
+ * c-basic-offset: 4
+ * tab-width: 4
+ * indent-tabs-mode: nil
+ * End:
+ */
diff --git a/xen/include/public/arch-arm.h b/xen/include/public/arch-arm.h
index d30a288592..8f0f68544e 100644
--- a/xen/include/public/arch-arm.h
+++ b/xen/include/public/arch-arm.h
@@ -329,6 +329,7 @@ DEFINE_XEN_GUEST_HANDLE(vcpu_guest_context_t);
=20
 #define XEN_DOMCTL_CONFIG_ARM_SCI_NONE      0
 #define XEN_DOMCTL_CONFIG_ARM_SCI_SCMI_SMC  1
+#define XEN_DOMCTL_CONFIG_ARM_SCI_SCMI_SMC_MA  2
=20
 struct xen_arch_domainconfig {
     /* IN/OUT */
@@ -355,6 +356,8 @@ struct xen_arch_domainconfig {
     uint32_t clock_frequency;
     /* IN */
     uint8_t arm_sci_type;
+    /* IN */
+    uint8_t arm_sci_agent_id;
 };
 #endif /* __XEN__ || __XEN_TOOLS__ */
=20
--=20
2.43.0


From xen-devel-bounces@lists.xenproject.org Mon Apr 06 16:39:14 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 06 Apr 2026 16:39:14 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1274257.1560439 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1w9myh-0002bM-Ek; Mon, 06 Apr 2026 16:39:07 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1274257.1560439; Mon, 06 Apr 2026 16:39: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 1w9myh-0002as-9T; Mon, 06 Apr 2026 16:39:07 +0000
Received: by outflank-mailman (input) for mailman id 1274257;
 Mon, 06 Apr 2026 16:39:05 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <Oleksii_Moisieiev@epam.com>) id 1w9myf-00027p-Mf
 for xen-devel@lists.xenproject.org; Mon, 06 Apr 2026 16:39:05 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1w9myf-001MTX-2C
 for xen-devel@lists.xenproject.org; Mon, 06 Apr 2026 18:39:05 +0200
Received: from [10.42.69.6] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <Oleksii_Moisieiev@epam.com>)
 id 69d3e1a7-bab6-0a2a0a5309dd-0a2a4506d52e-8
 for <xen-devel@lists.xenproject.org>; Mon, 06 Apr 2026 18:39:05 +0200
Received: from [52.101.66.107]
 (helo=DUZPR83CU001.outbound.protection.outlook.com)
 by tlsNG-16d1c6.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.0)
 (envelope-from <Oleksii_Moisieiev@epam.com>)
 id 69d3e1a8-0df0-0a2a45060019-3465426b20b6-4
 for <xen-devel@lists.xenproject.org>; Mon, 06 Apr 2026 18:39:04 +0200
Received: from DU5PR03MB10263.eurprd03.prod.outlook.com (2603:10a6:10:519::5)
 by AM9PR03MB6817.eurprd03.prod.outlook.com (2603:10a6:20b:2df::15)
 with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9769.18; Mon, 6 Apr
 2026 16:39:03 +0000
Received: from DU5PR03MB10263.eurprd03.prod.outlook.com
 ([fe80::8c9e:b301:61c0:3908]) by DU5PR03MB10263.eurprd03.prod.outlook.com
 ([fe80::8c9e:b301:61c0:3908%5]) with mapi id 15.20.9769.020; Mon, 6 Apr 2026
 16:39:03 +0000
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@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=XL4mn3grunJVkdkbyFXjxE/vmJ0HlEiDuPqT2sHUim5NRCu4M7RbkG6H1T6JS3jfE8aVBhsWtwzlivXG9GHif96zzHrMk19VW7to+qAP2nY9IC3y8k9Yb56FWcFAuwOQQaGq4Or6xoxg0asXCZEmuNbTi0+MeKWoR4UYtvCIIzcGgLbWMqW5ygjSt1EWbP2OP+X/110XxESFODCLEnq/xqLtGmgrwUHiM9mWD2z5kU/gimF4OVTYO2JS5GE1dUBSiRIn/ICFlIuKWYPo4EJDyj+ENz4JqtSfygYgZpsGI6D6uaSJ/I54sUdPsNY/yxS0k90KxB5T1F0TaTPZosUKAg==
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com;
 s=arcselector10001;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1;
 bh=nacdSuLgMnit26+NeXY9PeF1h2zzMcf5fo7BogXgr4U=;
 b=qZ89eZOS0SugjR2Y3TXDRVdHoN5CLrgs3GxgOyD7npzvSIv7fBI/7LulJu0fnXLby0/lJX29jOp47+hZ8cOxwEUGFwoFVGZ2kzbPiL+1lCWUGYQuO1/zgLNlTx37Tcv1xgEwqfyJyoLqvJCSHXt0ew0HG4jLD9VtR0NuBOMyCSxZkgPqhuaFmCCkJoIfxKo9VwF87k2/xH4WYEkrVCW3J9jp+lFUb3kgplsBcqTa2gLs76jo3NUGSUSkqjiVNVnYgj7bUD63ac9dfb5R0yKHF20N66tu1idq9RxCp430gvxXfwCsgS0DRW0S9ZN/xHHPCJ2EWskobk9w8RD96FCRNA==
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=nacdSuLgMnit26+NeXY9PeF1h2zzMcf5fo7BogXgr4U=;
 b=O/AqzRCfsJ/alz7jbhUi/3TztLQ+hEUirLRC5vW+rm5vUL7lrJEz80fcY0lsa6MHpVEwIQdYAtZQa5o1hbWQujL4EnQVURnKJU+ov8av7q6ESaJcnZZ7EWaEpn20fmkwtqbU8ZiGBqiN/rAPB6Ne0/SzwGm5uZjZLneDLb+I6iJmKZA7u1Ni2K62oIVCh88ewXRlPy9h7JNQd2ZKSouFcvVHWUSmQoE0nSXQ4ZGvlKgTVcx8QRwz/qUkL8jVhr9uXJQAGjIkQQwFgVszChLpWVBkM5pbg5k2kgwlMNbyklWdaqZUZ837fhV2JkFfpbiEe7tGnH8wdBcLrDb4f4Ca8Q==
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>, =?iso-8859-1?Q?Roger_Pau_Monn=E9?=
	<roger.pau@citrix.com>, Stefano Stabellini <sstabellini@kernel.org>,
	Volodymyr Babchuk <Volodymyr_Babchuk@epam.com>, Grygorii Strashko
	<grygorii_strashko@epam.com>
Subject: [PATCH v11 3/6] lib/arm: Add I/O memory copy helpers
Thread-Topic: [PATCH v11 3/6] lib/arm: Add I/O memory copy helpers
Thread-Index: AQHcxePgRVFXhI5qpkuIZJEl2rqVHg==
Date: Mon, 6 Apr 2026 16:39:02 +0000
Message-ID:
 <4f6427e64b0a0ce46dbf768a6fb64b0e349e2ca4.1775493499.git.oleksii_moisieiev@epam.com>
References: <cover.1775493499.git.oleksii_moisieiev@epam.com>
In-Reply-To: <cover.1775493499.git.oleksii_moisieiev@epam.com>
Accept-Language: en-US
Content-Language: en-US
X-MS-Has-Attach:
X-MS-TNEF-Correlator:
authentication-results: dkim=none (message not signed)
 header.d=none;dmarc=none action=none header.from=epam.com;
x-ms-publictraffictype: Email
x-ms-traffictypediagnostic: DU5PR03MB10263:EE_|AM9PR03MB6817:EE_
x-ms-office365-filtering-correlation-id: bc3fb145-af4b-48f4-89f8-08de93fb0323
x-ms-exchange-senderadcheck: 1
x-ms-exchange-antispam-relay: 0
x-microsoft-antispam:
 BCL:0;ARA:13230040|1800799024|7416014|376014|366016|18002099003|38070700021|22082099003|56012099003;
x-microsoft-antispam-message-info:
 O1DY9zMvMqtLGwGgGDOF6KawzMEFPUS+UpTOtE9ZixgVSNlYaAh+Qfi3Yfe7RUwNmkYuf1gElPW9C+bR8mUwt0CvARtGlCukz5shViVFr0L0RsuFPcFOUle6kVRxrnWhdwYYAQjbu7K2Ym10wtpko6IcbpBecJVtspHjoxSAi9SMylaGPILik3gvVbEncd3GIv1hb5nMRKm0b/U4KkMgKMgtNzeYMzBcsbCzQZq8ElVLhdA6MCWkxSHdxaOhxs1ePmJ/acB25F8a6MU0R0j77VF99nRbdbby2fygrQu3igOz/Yuhnmo4GwDE++0c6mTriS3AbCOggYnaedbVck4oomkV79MCvqk56c3Q8gv9DayktTH1IaqwILLxjRaKlVhOu+LwMIH2Nlvn9X+VOcTE0gH6brLuwR+roetx3T+CBBQaHCJS+xoQKKqcdd3EOXkOW/sYT/NNnWCkMU9IPyRVxLFMxrsw9J3a/0j00+PsBuFKbePJRUYdl/9LreH/PP9e88MGH0VKVF2KC7nSCsG/TpMmCH6dNBzKNjet9+Lb/VYaImrq3hXNizJRhvGYyGab6HL4XfXa+95lN+5YP/N+KqJ0Ft5FYxu3zXKXt5Wz/ymMXVx1icHmFvAU01Xx1wpczm/feqzBRQL/sW07bdYIzaaEsuZnY8mzcB21OTmTzKaxZGATH75uqu9voRGL/fo0dJ5lZcHArDhqf2OkXkNCVsIxlJNXAd8klWYGKCAPlBkQ9gsQagiCTRZPfA9FzkEzPjxKPqHLyZz5a2SpXsj9AD3xEqU1ejBSDdOI6NP9zvM=
x-forefront-antispam-report:
 CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:DU5PR03MB10263.eurprd03.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(1800799024)(7416014)(376014)(366016)(18002099003)(38070700021)(22082099003)(56012099003);DIR:OUT;SFP:1102;
x-ms-exchange-antispam-messagedata-chunkcount: 1
x-ms-exchange-antispam-messagedata-0:
 =?iso-8859-1?Q?G9rH2Qn4usyoeJnvmjjLjZ7hbfxG+swcpU4LI7oOEi4iidsbNU4obQj1Js?=
 =?iso-8859-1?Q?cfcfi9ax/zXmxjAYBSlLNjyrSPgnuy2mbBz+srOCBbPfVNfMsKcIkX8ihL?=
 =?iso-8859-1?Q?pWEe52Y6V1M+1itysXFOQEC+C6bsbQSuxQOnaavZSo6dlJq1iUXX4jbS0m?=
 =?iso-8859-1?Q?2m50TTPddWAimpi86ZTgdjZKJVda4Hrq9dmAc+sC+Pcy6zo8dbA4BctsQv?=
 =?iso-8859-1?Q?Y8LP4/M7sbe7DL0VgcyVcDfKw4XZPNWIVFAE9s0DHPKYOANWFIBcFN3P/T?=
 =?iso-8859-1?Q?/LRKOQmaYM1V1vC9lucQZE4L0NGCctYYpxJgKgUbFEl97G3d+BtnkMoUF5?=
 =?iso-8859-1?Q?jlopAQKR3O8+VADTefxuCU0PVHHs9q3muREG1nDVjCBX/sFH8vzBFRlC9t?=
 =?iso-8859-1?Q?owSIEp0UpQ6zAoZUmS2B4MxrRWwJnD6XJ4PeMVF3IOzL3CZkTTT8DSvYnZ?=
 =?iso-8859-1?Q?EUYoBSBE2zv4ipT6ofQza+tj4/ey42wJPXt8mjmuvAaknISw6CJowdDnmm?=
 =?iso-8859-1?Q?+ZYuFvvfO7eojc/t4uirnP1Osxb5fnECD4dFi8keMZ4+7/aUxp1w3Fpe2m?=
 =?iso-8859-1?Q?wVO43aq1/RHNcn/BjGcKXZGbdnBnk3dWyis2GIk1mqrmp6X6A6Z0nHhV45?=
 =?iso-8859-1?Q?51OR4P/141Zm3/qnbKxvtKaE5XAdsdL1r+cjR1VmrlDS4pDCM39OkmPb5K?=
 =?iso-8859-1?Q?q0ekD519+7dMM8cg5dXrLjhwiyo2LsSUf/qIciJXZQJ0TJ53dPgwkowdKu?=
 =?iso-8859-1?Q?kNFGM9uFdt79bkLEaZSo37/dHIVBDy565JHoFnvSknOP7ZLBkbtmvNRefG?=
 =?iso-8859-1?Q?M+kENgiXTAXlkO/yu+nDsPSnxAJ/tN2vpBObQD+eWbUAUFdanQ5t5vzBPn?=
 =?iso-8859-1?Q?CjovWtfXfT+GJxUq8i3P/Fn2xg87r6/1ZF05PzZn3eFAIyv8fyccZvSdtD?=
 =?iso-8859-1?Q?Fr4HOVBubswZlXHpQCQicdq/+ZIo5m+Crib5vvIOeKNsgdzHPpwcC0Oh+H?=
 =?iso-8859-1?Q?2jA96OOxpQwVPMyyuRsVeto1D9ZPCDu7B4jxWAfzYCyA9ZxFZTedrdZmbQ?=
 =?iso-8859-1?Q?nSiYv+lbq96mi2ZzII//m/OdpJWzH7oZEHxvQzmNP2guXYDOYgL5qXO6lZ?=
 =?iso-8859-1?Q?U9Q/OwYskIwVKJSyoKdgn1t8tslcKukNIhIkkh0nD5COcrfFeXffR+SAmA?=
 =?iso-8859-1?Q?nPY3lD0QFKwdm9y3NiwrTkrmPLlzW5g6Fewi/d+GgwyVGf+ZXEqWPiSUUa?=
 =?iso-8859-1?Q?lwZ94KSe20OKusiRAzIMMlEiP3xjpMDvY5MFSSdPRoPqvRWCsSzVItlZBc?=
 =?iso-8859-1?Q?nVyX1R6rJ/r3QQCIFcXiWbIuN7Z1jlhQYh1YEwQUZJaCmSVq0bJQXyqvU2?=
 =?iso-8859-1?Q?bynpVbx2ABrlSGIO0cRaPyN5b8KKrmOXUAhwjEUo5sdD+Oek7in9yrIKa9?=
 =?iso-8859-1?Q?FAQ6H1sumnyHfGVSrAC3PAyxb7G6CKY1C33+L9jVPtN29LLhtNk8R6Uh8l?=
 =?iso-8859-1?Q?NbqlHUiDestAiulp6nxdzncoUX+9aSFuDT5r5PRTVcfew6zySdKo0Y0gcV?=
 =?iso-8859-1?Q?Ewf1wHCHUIJ4Ed4w/d0Ef1612hhYPY+byUDl++8eVvI9ApK6lW35ICSCCn?=
 =?iso-8859-1?Q?r09dw6yu33cC2bCgRijJoT/y8jW0F5PsdesRs856WDFZ8elYeH/gY4XRPk?=
 =?iso-8859-1?Q?oUNCWjqnEPBhCbJTrGLv2at+46YNy8rqGE8AZVAyHKV8RpviqI4Nv7wnyf?=
 =?iso-8859-1?Q?pF2/JMNvnd2jYp37qYIisIYWym70lXAr0iANjzzLyAPUdUoTwdIE74Snni?=
 =?iso-8859-1?Q?jUn83BlW7vSqshlPu+AwfOAla8G0uF8=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: DU5PR03MB10263.eurprd03.prod.outlook.com
X-MS-Exchange-CrossTenant-Network-Message-Id: bc3fb145-af4b-48f4-89f8-08de93fb0323
X-MS-Exchange-CrossTenant-originalarrivaltime: 06 Apr 2026 16:39:02.1128
 (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: 3EfzXaYo2ao5+7rfmijynTWYL/Q5FfnOOKH4AZrovJVI+dpmKl4XCRb9+WeGeJWL6Je4ckbdKmx8z/QMvqOWmm9ecjQ5tKU1c4+N6NspZIc=
X-MS-Exchange-Transport-CrossTenantHeadersStamped: AM9PR03MB6817
X-purgate-ID: tlsNG-16d1c6/1775493545-AEB333D8-EC0B7C7B/0/0
X-purgate-type: clean
X-purgate-size: 8506

Introduce memcpy_fromio() and memcpy_toio() helpers to copy between
regular memory and MMIO space on Arm. The generic prototypes live in
io.h so other architectures can provide their own implementations.

These helpers handle alignment safely by using ordered byte accesses for
any leading/trailing unaligned bytes and ordered 32-bit accesses for the
aligned bulk transfer. Using the ordered `readb/readl` and
`writeb/writel` accessors avoids unintended endianness conversion while
respecting device ordering requirements on ARM32/ARM64 hardware that may
not support 64-bit MMIO atomically.

The interface lives in the generic header so other architectures can
provide their own implementations (as macros or functions). The ARM
implementation is placed under `arch/arm/lib/` (mirroring the x86
reference layout) and is split into separate compilation units added via
the architecture-specific lib Makefile.

Signed-off-by: Oleksii Moisieiev <oleksii_moisieiev@epam.com>
---

(no changes since v10)

Changes in v10:
- removed extra include in memcpy-{to/from}io.c files

Changes in v9:
- reword commit description to refer to memcpy_fromio and memcpy_toio
- ordering obj-y in Makefile
- rename ALL_LIBS to ARCH_LIBS
- drop io.h and move definitions to the common header, fix comments to
be arch neutral
- update comments for memcpy_{from/to}io implementation

Changes in v8:
- switched to ordered accessors to address the ordering and barrier
concerns.
- updated the documentation to match the implementation and explicitly
state the supported access sizes and granularity.
- rename memcpy_* implementation files to memcpu-* to follow naming
convension
- fix indentation to match Xen style
- fix intendation to match Xen style
- move memcpy-{from/to}io to more convenient library place

Changes in v7:
- x86 guidance: removed the speculative note; header now just says
  each arch supplies its own implementation or macro.
- name spacing: dropped the double-underscore; the helpers are now
  memcpy_fromio / memcpy_toio. The header also explicitly allows an
  arch to define these as macros before including it.
- updated io.c to keep 32-bit transfers safe on arm32
- moved to __raw_read*/__raw_write* accessors to avoid endianness conversio=
n.
- split the helpers into separate compilation units

Changes in v6:
- sorted objs in Makefile alhabetically
- added newline at the end of Makefile
- used uint{N}_t intead of u{N}
- add comment about why 32 bit IO operations were used
- updated cast opertaions to avoid dropping constness which is wrong
- move function definitions to generic place so the could be reused by
other arch
- add SPDX tag to io.c

Changes in v5:
- move memcpy_toio/fromio to the generic place

 xen/arch/arm/Makefile            |  1 +
 xen/arch/arm/arch.mk             |  1 +
 xen/arch/arm/lib/Makefile        |  2 ++
 xen/arch/arm/lib/memcpy-fromio.c | 55 ++++++++++++++++++++++++++++++++
 xen/arch/arm/lib/memcpy-toio.c   | 55 ++++++++++++++++++++++++++++++++
 xen/include/xen/io.h             | 10 ++++++
 6 files changed, 124 insertions(+)
 create mode 100644 xen/arch/arm/lib/Makefile
 create mode 100644 xen/arch/arm/lib/memcpy-fromio.c
 create mode 100644 xen/arch/arm/lib/memcpy-toio.c

diff --git a/xen/arch/arm/Makefile b/xen/arch/arm/Makefile
index 7494a0f926..5b8e170e01 100644
--- a/xen/arch/arm/Makefile
+++ b/xen/arch/arm/Makefile
@@ -8,6 +8,7 @@ ifneq ($(CONFIG_NO_PLAT),y)
 obj-y +=3D platforms/
 endif
 obj-y +=3D firmware/
+obj-y +=3D lib/
 obj-$(CONFIG_TEE) +=3D tee/
 obj-$(CONFIG_HAS_VPCI) +=3D vpci.o
=20
diff --git a/xen/arch/arm/arch.mk b/xen/arch/arm/arch.mk
index dea8dbd18a..009bb22c45 100644
--- a/xen/arch/arm/arch.mk
+++ b/xen/arch/arm/arch.mk
@@ -2,6 +2,7 @@
 # arm-specific definitions
=20
 ARCH_LIBS-y +=3D arch/arm/$(ARCH)/lib/lib.a
+ARCH_LIBS-y +=3D arch/arm/lib/lib.a
=20
 $(call cc-options-add,CFLAGS,CC,$(EMBEDDED_EXTRA_CFLAGS))
 $(call cc-option-add,CFLAGS,CC,-Wnested-externs)
diff --git a/xen/arch/arm/lib/Makefile b/xen/arch/arm/lib/Makefile
new file mode 100644
index 0000000000..07a0d9186c
--- /dev/null
+++ b/xen/arch/arm/lib/Makefile
@@ -0,0 +1,2 @@
+lib-y +=3D memcpy-fromio.o
+lib-y +=3D memcpy-toio.o
diff --git a/xen/arch/arm/lib/memcpy-fromio.c b/xen/arch/arm/lib/memcpy-fro=
mio.c
new file mode 100644
index 0000000000..3b27ab2949
--- /dev/null
+++ b/xen/arch/arm/lib/memcpy-fromio.c
@@ -0,0 +1,55 @@
+/* SPDX-License-Identifier: GPL-2.0-only */
+
+#include <xen/io.h>
+
+/*
+ * Arm implementation notes / limitations:
+ * - Uses ordered 8-bit for leading/trailing unaligned bytes and ordered
+ *   32-bit accesses for the aligned bulk; no wider accesses are issued.
+ * - Only suitable for devices that tolerate 8-bit and 32-bit accesses;
+ *   do not use with devices requiring strictly 16-bit or 64-bit accesses.
+ * - MMIO must be mapped with appropriate device attributes to preserve
+ *   ordering; no extra barriers beyond the ordered accessors are added.
+ * - If source or destination is misaligned, leading bytes are copied
+ *   byte-by-byte until both sides are 32-bit aligned, then bulk copy uses
+ *   32-bit accesses.
+ */
+
+void memcpy_fromio(void *to, const volatile void __iomem *from,
+                   size_t count)
+{
+    while ( count && (!IS_ALIGNED((unsigned long)from, 4) ||
+                      !IS_ALIGNED((unsigned long)to, 4)) )
+    {
+        *(uint8_t *)to =3D readb(from);
+        from++;
+        to++;
+        count--;
+    }
+
+    while ( count >=3D 4 )
+    {
+        *(uint32_t *)to =3D readl(from);
+        from +=3D 4;
+        to +=3D 4;
+        count -=3D 4;
+    }
+
+    while ( count )
+    {
+        *(uint8_t *)to =3D readb(from);
+        from++;
+        to++;
+        count--;
+    }
+}
+
+/*
+ * Local variables:
+ * mode: C
+ * c-file-style: "BSD"
+ * c-basic-offset: 8
+ * tab-width: 8
+ * indent-tabs-mode: t
+ * End:
+ */
diff --git a/xen/arch/arm/lib/memcpy-toio.c b/xen/arch/arm/lib/memcpy-toio.=
c
new file mode 100644
index 0000000000..a6ad08b805
--- /dev/null
+++ b/xen/arch/arm/lib/memcpy-toio.c
@@ -0,0 +1,55 @@
+/* SPDX-License-Identifier: GPL-2.0-only */
+
+#include <xen/io.h>
+
+/*
+ * Arm implementation notes / limitations:
+ * - Uses ordered 8-bit for leading/trailing unaligned bytes and ordered
+ *   32-bit accesses for the aligned bulk; no wider accesses are issued.
+ * - Only suitable for devices that tolerate 8-bit and 32-bit accesses;
+ *   do not use with devices requiring strictly 16-bit or 64-bit accesses.
+ * - MMIO must be mapped with appropriate device attributes to preserve
+ *   ordering; no extra barriers beyond the ordered accessors are added.
+ * - If source or destination is misaligned, leading bytes are copied
+ *   byte-by-byte until both sides are 32-bit aligned, then bulk copy uses
+ *   32-bit accesses.
+ */
+
+void memcpy_toio(volatile void __iomem *to, const void *from,
+                 size_t count)
+{
+    while ( count && (!IS_ALIGNED((unsigned long)to, 4) ||
+                      !IS_ALIGNED((unsigned long)from, 4)) )
+    {
+        writeb(*(const uint8_t *)from, to);
+        from++;
+        to++;
+        count--;
+    }
+
+    while ( count >=3D 4 )
+    {
+        writel(*(const uint32_t *)from, to);
+        from +=3D 4;
+        to +=3D 4;
+        count -=3D 4;
+    }
+
+    while ( count )
+    {
+        writeb(*(const uint8_t *)from, to);
+        from++;
+        to++;
+        count--;
+    }
+}
+
+/*
+ * Local variables:
+ * mode: C
+ * c-file-style: "BSD"
+ * c-basic-offset: 8
+ * tab-width: 8
+ * indent-tabs-mode: t
+ * End:
+ */
diff --git a/xen/include/xen/io.h b/xen/include/xen/io.h
index 164a20c5d7..1bb164b6ef 100644
--- a/xen/include/xen/io.h
+++ b/xen/include/xen/io.h
@@ -67,4 +67,14 @@ static inline bool write_mmio(volatile void __iomem *mem=
, unsigned long data,
     return true;
 }
=20
+/*
+ * Copy between regular memory and MMIO space.  Implementations are
+ * architecture-specific and must use appropriate MMIO accessors for
+ * their memory and I/O models.
+ */
+void memcpy_fromio(void *to, const volatile void __iomem *from,
+                   size_t count);
+void memcpy_toio(volatile void __iomem *to, const void *from,
+                 size_t count);
+
 #endif /* XEN_IO_H */
--=20
2.43.0


From xen-devel-bounces@lists.xenproject.org Mon Apr 06 16:39:14 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 06 Apr 2026 16:39:14 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1274254.1560415 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1w9myf-00027X-Fg; Mon, 06 Apr 2026 16:39:05 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1274254.1560415; Mon, 06 Apr 2026 16: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 1w9myf-00027Q-BX; Mon, 06 Apr 2026 16:39:05 +0000
Received: by outflank-mailman (input) for mailman id 1274254;
 Mon, 06 Apr 2026 16:39:04 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <Oleksii_Moisieiev@epam.com>) id 1w9mye-00027E-9f
 for xen-devel@lists.xenproject.org; Mon, 06 Apr 2026 16:39:04 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1w9myd-001MTX-IT
 for xen-devel@lists.xenproject.org; Mon, 06 Apr 2026 18:39:03 +0200
Received: from [10.42.69.6] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <Oleksii_Moisieiev@epam.com>)
 id 69d3e1a7-bab6-0a2a0a5309dd-0a2a4506d52e-2
 for <xen-devel@lists.xenproject.org>; Mon, 06 Apr 2026 18:39:03 +0200
Received: from [52.101.72.89]
 (helo=AM0PR02CU008.outbound.protection.outlook.com)
 by tlsNG-16d1c6.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.0)
 (envelope-from <Oleksii_Moisieiev@epam.com>)
 id 69d3e1a6-0df0-0a2a45060019-34654859bef8-4
 for <xen-devel@lists.xenproject.org>; Mon, 06 Apr 2026 18:39:03 +0200
Received: from DU5PR03MB10263.eurprd03.prod.outlook.com (2603:10a6:10:519::5)
 by AM9PR03MB6817.eurprd03.prod.outlook.com (2603:10a6:20b:2df::15)
 with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9769.18; Mon, 6 Apr
 2026 16:39:01 +0000
Received: from DU5PR03MB10263.eurprd03.prod.outlook.com
 ([fe80::8c9e:b301:61c0:3908]) by DU5PR03MB10263.eurprd03.prod.outlook.com
 ([fe80::8c9e:b301:61c0:3908%5]) with mapi id 15.20.9769.020; Mon, 6 Apr 2026
 16:39: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=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=LIPG+hYc17Ih3KIOHdNWlQ9AvxJgYFefHb+tgJuHEU8HAhHyv0XZBw6YfUL0JXBIu5dWsbUBK8b+gxQkPiFl+et7aTCryTLsdkICz5mX3SzKY01nttUZkb8xJfT3hBVMV7Cp/x2jTiXWNLcQdxq1Q6mNCIaAuuGfRb8v7fyNKMrtrJBNf7tj+xnPQmuYTXhqoBoWPB+2aHELZ1FvEM2gEbG3QnnornsGIBkot8Av3WJbEPavv3iANkcSjOb/0dNig9fEqPJmMpu0OZcvRL5cQ8eSupIBiOhCdyai/bbcTt9TAc/wkob8QTYzf/f9hfcD+Sd6RP+7J0c7ACS5hGuuuQ==
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com;
 s=arcselector10001;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1;
 bh=/zn7U6dT9m8+T6RNeGGhjrD1sbLKrd9u3O16P+RZggA=;
 b=eR8Wxs34eNvuyTX1aeNPQJ5afn8NW3bBEH87LwPImKv4iSNqdW7WoQrV8pRMnajNlOny6qg4YnpIoqd5lLbLS2O7NloHkO82Z1zm/sDl6P7hgwi7p0VYLJ60xDtYrdPMoE5jnTl7yVF8WGgTx/+VKt2eJPNTgoqwKD9IindN9o8zhZjviLV64DfmJsCEXcvbn+p897IEp5u1TKz4VZAUzYioQXqsSreL0NV8ee5YR0ssSqa1gDI4OHkZdB4btXhKAKchJ9XTbrTzBvGb2XOLL/jG/un8uA6a3smRqgGg7xTJLLLpY+/nI0/iHKH8KatXduiUiNu770o/YCUjeDrOVA==
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=/zn7U6dT9m8+T6RNeGGhjrD1sbLKrd9u3O16P+RZggA=;
 b=XdK/H8jXybgdJF+B+HyrWiPRcpR8Zhn/yT2E6I94GLal9KygBmMUaBu6Ih5lwVbPoAvPPG1eOwAkIsQTvtt2YWfQqrExcQ3L4/nRtHVBi4RS4BRV2LmXWTSZjMDohJWEQhReHNo4o/Lanf3dhifQAqz4UE1ZJYS4rvuK40SSQpYyYioKPwlDj7WztHNyldp29aGgPAkPBxNYq9MbBkbrahuORgCYwM40RdbtrSFgZGp2pFhxPEjAncctFkIsH0dNx80Zja4Rz+YBGDM4GwExVItn59at9a4DZYGw4mQo7XkXukMbTeU/JHCxmzedAj5vOn3RFv/3wRmMOsyyYa2VWw==
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.pau@citrix.com>, Stefano Stabellini <sstabellini@kernel.org>,
	Volodymyr Babchuk <Volodymyr_Babchuk@epam.com>, Grygorii Strashko
	<grygorii_strashko@epam.com>
Subject: [PATCH v11 0/6] xen/arm: scmi: introduce SCI SCMI SMC multi-agent
 support
Thread-Topic: [PATCH v11 0/6] xen/arm: scmi: introduce SCI SCMI SMC
 multi-agent support
Thread-Index: AQHcxePfUvPrfaWdP0ux/aDz5cifFQ==
Date: Mon, 6 Apr 2026 16:39:01 +0000
Message-ID: <cover.1775493499.git.oleksii_moisieiev@epam.com>
Accept-Language: en-US
Content-Language: en-US
X-MS-Has-Attach:
X-MS-TNEF-Correlator:
authentication-results: dkim=none (message not signed)
 header.d=none;dmarc=none action=none header.from=epam.com;
x-ms-publictraffictype: Email
x-ms-traffictypediagnostic: DU5PR03MB10263:EE_|AM9PR03MB6817:EE_
x-ms-office365-filtering-correlation-id: 99a302a1-3508-4280-a3da-08de93fb01e5
x-ms-exchange-senderadcheck: 1
x-ms-exchange-antispam-relay: 0
x-microsoft-antispam:
 BCL:0;ARA:13230040|1800799024|7416014|376014|366016|18002099003|38070700021|56012099003;
x-microsoft-antispam-message-info:
 sQaXs/PlwL+bUs5Y8IcD2sNFVPnVGpZJku3gzWyReFEKe2yRtL7Ok+TSZcy1LK8fxZsjlE8qcvhUmcF9YZp+UVjswTatWTmY0HonnhSH6kie6PpdSEYhNFzMoDL9CF1vTsxLB7PNme1atb0oSg39GLmeJTcmrpZK0iKaRGbKWMCRbpDBzHwtJu2ge7fuTvc5l71jIsrAGKGmWuea5vUdD5JrWnkVZrPiAENmkpkJRbO+LeMOSm3YagDWXKZq6de556HMIvhw9iFr5xXyljJSiZI7YSB5TpaxeZu5FQX1GoA1TKH3oMoV99k1HZoLlRl0Q4K1MOunU+N1rfvftj1pqspVVQyO4Gju1zwD+v6mIx/nXdTaSGjuBCdPL1Nhywqji1BS3Y7ZjJPZGvbhhIlFhW1U5vMPwOemBoHfSgHongsbqIUkl0qTZY9jn3OXn1tMpFEElmse2NG2NgkspbyUCj1q/ioQ5sH267GQNHPKRuVn59cNbgXdAMT1Veq/PFMV+4S7o5jy3VqCJa1lHtix78R6bt+pKe7V7Bd/UTjm8w58JMj2lAOpuWbkkYkPmeDS+BoJ01xOAo5z4lhgsUf+RFzXxroKRH2gGPX3xGtk1GDvUK4bYkUTshNU3TeH1HwctGcRqrkgMB28u2qNYjLnWQBDputweum/fX3SbmJP7IV2D0m2xgFZMJJNrkUK59/VWrxG5U77jfrRvFqsAspO8OgwEfwAfLDYSQGowrdJ+NQMjpNsQIivN4cNEoeiguDP
x-forefront-antispam-report:
 CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:DU5PR03MB10263.eurprd03.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(1800799024)(7416014)(376014)(366016)(18002099003)(38070700021)(56012099003);DIR:OUT;SFP:1102;
x-ms-exchange-antispam-messagedata-chunkcount: 1
x-ms-exchange-antispam-messagedata-0:
 =?utf-8?B?SzRadWpGU3hVZm9KeTNSaTVoOFN4VVVCTnlsOW11ZTZUclBXRkF2M1oxQldO?=
 =?utf-8?B?VGlpREhTcnMwSGc4elBLS01iWEpBTERHMnZtNHk3YXR2ejBScGpOUUF5bS8z?=
 =?utf-8?B?b2JNNmM3Z1FBNXB6SHV3OHZaRGlxUUg1bGFJKzJ2Q1lZa3dmM2FuUlFUQjIz?=
 =?utf-8?B?ZUV4RjdLay9qVEt0M3FjOGlvYWQvbGU5blpqTVlCV0hkSDlNZHJxMlU5dEtQ?=
 =?utf-8?B?bUxtUzhxa2Y3WnlFMU9PZTU5SHNldU5WMVNqc2NjZnFqL2NPcUh4ZFRkWGhz?=
 =?utf-8?B?WlpNU2hUT1QxelFxbnk0ZTN1ZER2MUlvN2N1dFhEamYxNzVsUW1uSnNITWJV?=
 =?utf-8?B?SG1OZWJPTlRid28wRXZjb1phc3lFcndnaStWekVEVHErRUVPaFA3RFlZV0J0?=
 =?utf-8?B?cmNDUXpBZjcwTUxueVhKUTdxQ3VtcnVnd0FMb1BlMkxlbEYwei9JSzgxd3g3?=
 =?utf-8?B?OU0rRDZvRVprd1VuRzZMdXp5TU9MeW5kVWkweUJCRmdYTjlHeFJFeSt0djd2?=
 =?utf-8?B?bUN3MkptK0RMTkVka0tFKzRPOGp2ZDFBZU4wMXZFTTNBQUcrcVREUGVRdldV?=
 =?utf-8?B?VzNydkxoc0RtQjR0a0hIWjJ5TGtDR0lTTHBlNm92MG4rY2ZicmtQY2RkcHNz?=
 =?utf-8?B?TE5Ba3JlamhTVUk3Z3JVWUdyTStOMCsyL3JMaHY2UnQ2alZvL3BtUG9IN0lt?=
 =?utf-8?B?dVhBL1hVT2NYN05QODNQeDBJRERYZEZLaWpkRGEyVHhMdEFnQy9vTkhSLzcr?=
 =?utf-8?B?blJ2UDYvTGI0N1pQaEFHVmd5ZDdhb2Rjb21raVhtVnJyYmxqdForSnBFQW0y?=
 =?utf-8?B?cjNKV2JCbjR3dEZiRWhMODR2VkowS0ZaVytXVWMvQlNoRmozM0dnUjFhT1F5?=
 =?utf-8?B?bVNhd2p6UzMvQkxaTitER0EzazJtaGk3cXN4aS91dTBCZGpRSWVFcXNVakVp?=
 =?utf-8?B?Unc5QzloYVRVeGxEelJ0OTd6Y09idmZySUNlTHRKb3BmUlY3cjV2ZVdJOEhy?=
 =?utf-8?B?eXE5bDMwWnhyZGE2VWtBVVdUTHlyWGtlTnZhdkNHWU02Uy9BMEdqMCthVkox?=
 =?utf-8?B?aGFvaVJyOGg0aTRXdXdObHFmcExtM2w1RStVOHZEYUg5YkZHbFdlRjNCUHcy?=
 =?utf-8?B?YnNpeGxzQ00yUVpKdnJsL3hRWmduRkx0SUYyNDM5bUlVTkYrU3dMOXVLMEc4?=
 =?utf-8?B?aWpsRFBvbFhQc2QwZSt0em9TejRYN3JOeis0dEIyakkwczBGYnpIVGhKT3lD?=
 =?utf-8?B?aUh4Ujc4anJKRWZBcldVS2ROOGdQOEE4bFVYYkpnejZzU2ZMcEtIZ29qRTYv?=
 =?utf-8?B?VXJqS0g4bXFmNXJGY0poa09TMUdSd0Y0cnZ3OEQvVGtiZUlEVlNJTG9qVU9x?=
 =?utf-8?B?MTFyQzcyaHg5eG1KNU9aendLUVRRa0FMZFYwZ1ZLMi9qY3gxRGtwNkE1NFBY?=
 =?utf-8?B?d0JqMHY0Um9GQU44ekF3U0dXZDNSbkt3L1lnTG1WbkFrRTBKNlRqdEpyRklO?=
 =?utf-8?B?R2p6NnN1a0dZQXpkUTc4bzcyc0loTkRvdnJDeUFlRFU0M3dyMlVwQ1RVOUtQ?=
 =?utf-8?B?OGh6Mjhzd2h1aDJLNlIybitMV2VIS1V3ejRhb3VKRGwvWGdRdWNjM2owNUx0?=
 =?utf-8?B?VVd1UXRTWHVNRmh0eENSOTNhMDNCS0o4NEwxZzJnNVRmOXR5NENSeXNwL0Zy?=
 =?utf-8?B?c3F5a3RwU0ZjWXVJMTJqaVpaTWJSM0tMYUpJb2taZFRjTmx3RkxyQXJQeHJt?=
 =?utf-8?B?ODRvZHM5anRmKzBPaWN2eU8vS1IrSnpMUHc0M3hBdFpxZkZQSnFsNnhyU3oz?=
 =?utf-8?B?ZTVDcjc2YWQxR2VlZFNad1ZiM1luNVdvdGhEdkhmQTByTGcxcWdXbXhSS0N4?=
 =?utf-8?B?dVdPMUxIbXBOaW1VbWpabGlUQmlHRlN3RGEwTk0vczVuZWRGYStpUGcwSElu?=
 =?utf-8?B?dHQ5dDhCK2VxQnJvVE96M2haU2FWZWZEeFpJbTUyMWhmOXV3aW4xUERBbC9r?=
 =?utf-8?B?VUFDZXNmdS9DNHdjMmZOLzByM3B3QXIzeTRMTmJzL2VzZU03QzFtTzVUdUpQ?=
 =?utf-8?B?bnhaSnZhSWU1WFZjL0RrN3pKa1ozN0kxZnFZZGpnTTU0TDFMN2lmcFVIS0RZ?=
 =?utf-8?B?dHZQL0pnUE1lR2FTVE9vMll6b1VlcHRValUxYXZBNk0xUFhISEpYK2JhbUZo?=
 =?utf-8?B?aHFCYnovYktDZldacFN5SnNOdmMxVmwxRlBVb0lXMFMxNS83SWZiWWJNOC91?=
 =?utf-8?B?Mzk0enhldzRSR2ZHTWhRYXBISnIvL2lVcW4vb0l0WUxKK2szVTh3OW0yOVpk?=
 =?utf-8?B?Y0VMbGNTbE0vL2s2cEtkWC9KZHA1ZlhuQVZRdkZvTldKS05aUEd2cW5vSm9B?=
 =?utf-8?Q?C01dnvFdjV6NAKRc=3D?=
Content-Type: text/plain; charset="utf-8"
Content-ID: <4FF4EDDC163F1C47AB3EBFD44F1E0F20@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: DU5PR03MB10263.eurprd03.prod.outlook.com
X-MS-Exchange-CrossTenant-Network-Message-Id: 99a302a1-3508-4280-a3da-08de93fb01e5
X-MS-Exchange-CrossTenant-originalarrivaltime: 06 Apr 2026 16:39:01.0254
 (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: 17uELNMUF1pk1lBlQW42nQItk7LHITum2UDudoeugIyNxeC96MiSxjNwNjI3gx3vEeuVFMH/HCLmvgfSNKTQwpqFJKQAU0FVvphnAePHmJ4=
X-MS-Exchange-Transport-CrossTenantHeadersStamped: AM9PR03MB6817
X-purgate-ID: tlsNG-16d1c6/1775493543-642483D8-ACFF6922/0/0
X-purgate-type: clean
X-purgate-size: 22288

SW5yb2R1Y2luZyBwYXRjaCBzZXJpZXMgd2hpY2ggaW5jbHVkZXMgaW1wbGVtZW50YXRpb24gb2Yg
dGhlIFNDSSBTQ01JDQpTTUMgbXVsdGktYWdlbnQgc3VwcG9ydC4NClRoaXMgcGF0Y2ggc2VyaWVz
IGZvbGxvd3MgUkZDIHY1IFszXSBzZXJpZXMgd2hpY2ggd2FzIGludHJvZHVjaW5nIGJvdGgNClND
TUkgc2luZ2xlLWFnZW50IGFuZCBtdWx0aS1hZ2VudCBzdXBwb3J0LiBBZnRlciB0aGUgZGlzY3Vz
c2lvbiBpdCB3YXMNCmRlY2lkZWQgdG8gc3BsaXQgZmVhdHVyZXMgYW5kIHVwc3RyZWFtIHNpbmdl
LWFnZW50IHN1cHBvcnQgZmlyc3QuIFRoaXMNCmZlYXR1cmUgaXMgbWVyZ2VkIGZvciBub3cgdG8g
djQuMjEtcmMyLg0KSSdtIHN0YXJ0aW5nIHRoaXMgcGF0Y2ggc2VyaWVzIGZyb20gdjYgdG8gc2F2
ZSB0aGUgZGlzY3Vzc2lvbiBoaXN0b3J5DQphbmQgZG9uJ3QgYnJlYWsgY2hhbmdlcyBsb2cuDQoN
ClBhdGNoIC0geGVuL2RvbWN0bDogZXh0ZW5kIFhFTl9ET01DVExfYXNzaWduX2RldmljZSB0byBo
YW5kbGUgbm90DQpvbmx5IGlvbW11DQotIGFkZCBjaGFpbmdlZCBoYW5kbGluZyBvZiBhc3NpZ25l
ZCBEVCBkZXZpY2VzIHRvIHN1cHBvcnQNCmFjY2Vzcy1jb250cm9sbGVyIGZ1bmN0aW9uYWxpdHkg
dGhyb3VnaCBTQ0kgZnJhbWV3b3JrLg0KQ2hhbmdlIHdhcyBkb25lIGluIHR3byBwYXJ0czoNCiAt
IGNhbGwgdG8gc2NpX2RvX2RvbWN0bCgpIHRvIGRvX2RvbWN0bCgpDQogLSB1cGRhdGUgaW9tbXVf
ZG9fZHRfZG9tY3RsKCkgdG8gY2hlY2sgZm9yIGR0X2RldmljZV9pc19wcm90ZWN0ZWQoKQ0KIGFu
ZCBub3QgZmFpbCBpZiBEVCBkZXZpY2UgaXMgbm90IHByb3RlY3RlZCBieSBJT01NVQ0KDQpQYXRj
aCAtIHhlbi9hcm06IHNjbWk6IGludHJvZHVjZSBTQ0kgU0NNSSBTTUMgbXVsdGktYWdlbnQgZHJp
dmVyDQotIGFkZCBYZW4tc3BlY2lmaWMgU0NNSSBjb250YWluZXIgY29tcGF0aWJsZSBgeGVuLHNj
aWANCiAgdW5kZXIgYC9jaG9zZW4veGVuYDsgWGVuIGJpbmRzIG9ubHkgdG8gdGhlIGBhcm0sc2Nt
aS1zbWNgIGluc2lkZSBpdCBhbmQNCiAgaWdub3JlcyBvdGhlciBTQ01JIG5vZGVzIChlLmcuIHVu
ZGVyIGAvZmlybXdhcmVgKS4NCi0gYWRkIGBzY21pLXNlY29uZGFyeS1hZ2VudHNgIGFuZCBgI3Nj
bWktc2Vjb25kYXJ5LWFnZW50cy1jZWxsc2AgdG8gZGVzY3JpYmUNCiAgZnVuY19pZC9zaG1lbS8o
b3B0aW9uYWwgYWdlbnRfaWQpIHR1cGxlcyBmb3Igc2Vjb25kYXJ5IGFnZW50cy4NCi0gZWFjaCBn
dWVzdCB1c2luZyBTQ01JIHN1cHBsaWVzIGl0cyBhZ2VudF9pZCAoZG9tMCB2aWENCiAgYHhlbSxk
b20wLXNjaS1hZ2VudC1pZD1gIHBhcmFtZXRlciBpbiB4ZW4sc2NpIGNvbXBhdGlibGUgbm9kZSwN
CiAgdG9vbHN0YWNrIHZpYSBgYXJtX3NjaSA9ICJ0eXBlPXNjbWlfc21jX211bHRpYWdlbnQsYWdl
bnRfaWQ9Li4uImAsIGRvbTBsZXNzDQogIHZpYSBgeGVuLHNjaV90eXBlYCArIGB4ZW4sc2NpLWFn
ZW50LWlkYCBpbiBgeGVuLGRvbWFpbmApLg0KLSBmYWN0b3Igb3V0IFNDTUkgZ2VuZXJpYyBkZWZp
bml0aW9ucyBhbmQgc2htZW0gY29kZS4NCi0gcGFzc3Rocm91Z2ggY29uZmlndXJhdGlvbiBmb3Ig
U0NNSSBndWVzdHMgbWlycm9ycyBvdGhlciBIVyBwYXNzdGhyb3VnaC4NCg0KUGF0Y2ggLSBkb2Nz
OiBhcm06IGFkZCBTQ0kgU0NNSSBTTUMgbXVsdGktYWdlbnQgZHJpdmVyIGRvY3MNCi0gZG9jdW1l
bnQgdGhlIFhlbiBTQ01JIGNvbnRhaW5lciB1bmRlciBgL2Nob3Nlbi94ZW4veGVuX3NjbWlfY29u
ZmlnYCBhbmQgdGhlDQogIG1lZGlhdG9y4oCZcyBiaW5kaW5nIHJ1bGVzOyB1cGRhdGUgZXhhbXBs
ZXMgYWNjb3JkaW5nbHkuDQoNCkFsbCBYZW4tc3BlY2lmaWMgU0NNSSBjb25maWd1cmF0aW9uIG5v
dyBsaXZlcyB1bmRlciBgL2Nob3Nlbi9gDQp0byBrZWVwIGhvc3QgRFQgY2hhbmdlcyBpc29sYXRl
ZCB3aGlsZSBsZWF2aW5nIHRoZSBob3N0IGAvZmlybXdhcmUvc2NtaWANCnVudG91Y2hlZCBmb3Ig
RG9tMCBjb25zdW1wdGlvbi4NCg0KQ29kZSBjYW4gYmUgZm91bmQgYXQ6DQpodHRwczovL2dpdGh1
Yi5jb20vb2xla3NpaW1vaXNpZWlldi94ZW4vdHJlZS9zY21pX21hX3Vwc3RydjYNCg0KWzFdIFJG
QyB2MjoNCmh0dHA6Ly9wYXRjaHdvcmsua2VybmVsLm9yZy9wcm9qZWN0L3hlbi1kZXZlbC9jb3Zl
ci9jb3Zlci4xNjQ0MzQxNjM1LmdpdC5vbGVrc2lpX21vaXNpZWlldkBlcGFtLmNvbS8NClsyXSBS
RkMgdjM6DQpodHRwczovL3BhdGNod29yay5rZXJuZWwub3JnL3Byb2plY3QveGVuLWRldmVsL3Bh
dGNoLzIwMjUwMzExMTExNjE4LjE4NTA5MjctMS1ncnlnb3JpaV9zdHJhc2hrb0BlcGFtLmNvbQ0K
WzNdIFJGQyB2NToNCmh0dHBzOi8vbG9yZS5rZXJuZWwub3JnL3hlbi1kZXZlbC9jb3Zlci4xNzUz
MTg0NDg3LmdpdC5vbGVrc2lpX21vaXNpZWlldkBlcGFtLmNvbS8NCls0XSBTQ01JIHNpbmdsZS1h
Z2VudDoNCmh0dHBzOi8vbG9yZS5rZXJuZWwub3JnL3hlbi1kZXZlbC9jb3Zlci4xNzU2OTk1NTk1
LmdpdC5vbGVrc2lpX21vaXNpZWlldkBlcGFtLmNvbS8NClNDTUkgc3BlYzoNCmh0dHBzOi8vZGV2
ZWxvcGVyLmFybS5jb20vZG9jdW1lbnRhdGlvbi9kZW4wMDU2L2UvP2xhbmc9ZW4NCg0KU0NNSSBi
aW5kaW5nczoNCmh0dHBzOi8vd2ViLmdpdC5rZXJuZWwub3JnL3B1Yi9zY20vbGludXgva2VybmVs
L2dpdC90b3J2YWxkcy9saW51eC5naXQvdHJlZS9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmlu
ZGluZ3MvZmlybXdhcmUvYXJtLHNjbWkueWFtbA0KaHR0cHM6Ly93ZWIuZ2l0Lmtlcm5lbC5vcmcv
cHViL3NjbS9saW51eC9rZXJuZWwvZ2l0L3RvcnZhbGRzL2xpbnV4LmdpdC90cmVlL0RvY3VtZW50
YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9hY2Nlc3MtY29udHJvbGxlcnMvYWNjZXNzLWNvbnRy
b2xsZXJzLnlhbWwNCg0KUmVmZXJlbmNlIEVMMyBGVzoNClJQSTU6IGh0dHBzOi8vZ2l0aHViLmNv
bS94ZW4tdHJvb3BzL2FybS10cnVzdGVkLWZpcm13YXJlL2NvbW1pdHMvcnBpNV9kZXYvDQpSZW5l
c2FzIHY0aDoNCmh0dHBzOi8vZ2l0aHViLmNvbS9HcnlnaXJpaVMvYXJtLXRydXN0ZWQtZmlybXdh
cmUvY29tbWl0cy9yY2FyX2dlbjRfdjIuN192NHgtc2NtaV91cGQvDQoNCmJhc2UtY29tbWl0OiBk
YmU2MGYyNDRjIChVcGRhdGUgWGVuIHRvIDQuMjEsIDIwMjUtMDItMjEpDQoNCkNoYW5nZXMgaW4g
djExOg0KLSBGaXggYWdlbnRfaWQgZG9jdW1lbnRhdGlvbjogY2xhcmlmeSBpdCBhcHBsaWVzIHRv
IFNDTUkgU01DDQptdWx0aS1hZ2VudCBzdXBwb3J0IG9ubHksIG5vdCBwbGFpbiBTQ01JIFNNQyAo
cmV2aWV3ZXIgZmVlZGJhY2spDQotIFJlbW92ZSAibm9uLXplcm8iIGZyb20gYWdlbnRfaWQgZGVz
Y3JpcHRpb24gdG8gbWF0Y2ggYWNjZXB0ZWQNCnJhbmdlIFswLi4yNTRdDQotIFJlbW92ZSAiVUlO
VDhfTUFYICgyNTUpIGlzIHRyZWF0ZWQgYXMgaW52YWxpZCIgZnJvbSB1c2VyDQpkb2N1bWVudGF0
aW9uIGFzIHVubmVjZXNzYXJ5IGltcGxlbWVudGF0aW9uIGRldGFpbA0KLSBBZGQgTElCWExfSEFW
RV9TQ01JX1NNQ19NVUxUSUFHRU5UIGZlYXR1cmUgbWFjcm8gaW4gbGlieGwuaCB0bw0KYWR2ZXJ0
aXNlIHRoZSBuZXcgc2NtaV9zbWNfbXVsdGlhZ2VudCB0eXBlIGFuZCBhZ2VudF9pZCBmaWVsZA0K
LSBBZGQgYWdlbnRfaWQgdmFsaWRhdGlvbiBpbg0KbGlieGxfX2FyY2hfZG9tYWluX2J1aWxkX2lu
Zm9fc2V0ZGVmYXVsdCgpIHRvIHJlamVjdCBpbnZhbGlkIHZhbHVlcyBhdA0KdGhlIGxpYnhsIGxl
dmVsLCBub3Qgb25seSBpbiB4bA0KDQpDaGFuZ2VzIGluIHYxMDoNCi0gcmVtb3ZlIHVudXNlZCBz
Y2lfZG9fZG9tY3RsIHN0dWIgZnJvbSBzY2kuaA0KLSByZW1vdmVkIGV4dHJhIGluY2x1ZGUgaW4g
bWVtY3B5LXt0by9mcm9tfWlvLmMgZmlsZXMNCi0gRml4IHRhYnMgaW4gTUFJTlRBSU5FUlMgZmls
ZQ0KLSByZW1vdmUgZHVwbGljYXRlIFNQRFggdGFnIGZyb20gc2NtaS1zaG1lbS5jDQotIGFkZCBj
YXN0IHRvIEFSTV9TTUNDQ19JTlZBTElEX1BBUkFNRVRFUiB0byBzZXR0bGUgdGhlIHNpZ24gc2lu
Y2UNCkFSTV9TTUNDQ19JTlZBTElEX1BBUkFNRVRFUiBpcyAtMyB3aGljaCBpcyBwYXJ0IG9mIHRo
ZSBzcGVjIGFuZCByZXNwDQppcyB0aGUgZGVmYXVsdCBzbWNjYyBjYWxsIHN0cnVjdHVyZS4NCi0g
dXBkYXRlIGZyZWVfY2hhbm5lbF9saXN0LiBBZGQgc3BpbmxvY2sgdG8gYXZvaWQgcmFjZSBjb25k
aXRpb24gYW5kDQphIGNvbW1lbnQgd2l0aCBhIGRlc2NyaXB0aW9uIG9mIHRoZSBmdW5jdGlvbiB3
b3JrDQotIHByZXNlcnZlIGVycm9yIG9mIHNtY19jcmVhdGVfY2hhbm5lbCBpbiBzY21pX3Byb2Jl
DQotIGNoZWNrIHNjbWkgc2htZW0gYWRkcmVzcyBhbGlnbm1lbnQgYXMgd2VsIGFzIGl0IGlzIGRv
bmUgZm9yIHNpemUNCi0gY2hlY2sgZm9yIGQtPmFyY2guc2NpX2RhdGEgIT0gTlVMTCBpbiBzY21p
X2hhbmRsZV9jYWxsDQotIHVzZSBTQ01JX1NITUVNX01BUFBFRCBzaXplIGZvciBpb21lbV9wZXJt
aXRfYWNjZXNzDQotIGNoYW5nZSBsZW4gdHlwZSB0byB1bnNpZ25lZCBpbiBzaG1lbV97Z2V0fHB1
dH1fbWVzc2FnZQ0KLSByZW5hbWUgc2htZW1fY2hhbm5lbF9pc19mcmVlIHRvIHNobWVtX2NoYW5u
ZWxfc3RhdHVzDQotIGFkZCBjb21tZW50IGFib3V0IHNraXBwaW5nIG1lc3NhZ2Ugc3RhdHVzIHdo
ZW4gZ2V0dGluZyBtZXNzYWdlIHJlc3BvbnNlDQotIFNldCBjb3JyZWN0IGFnZW50X2lkIHJhbmdl
cyBmb3IgZG9tMGxlc3MgYW5kIGEgdG9vbHN0YWNrLiBBZ2VudF9pZCAwDQppcyBub3QgYmluZGVk
IGZvciBkb20wIHNvIGNhbiBiZSByZXVzZWQuIEFsc28gbWVudGlvbmVkIHRoYXQNClVJTlQ4X01B
WCAoMjU1KSBpcyB0cmVhdGVkIGFzIGludmFsaWQgYWdlbnRfaWQuDQotIFNwbGl0IGh5cGVydmlz
b3IgYW5kIHRvb2xzdGFjayBjaGFuZ2VzIGludG8gc2VwYXJhdGUgY29tbWl0cw0KLSBtb3ZlIGlu
aXQgbGlzdCBhbmQgc3BpbiBpbml0IGFmdGVyIGluaXRpYWwgY2hlY2tzIGluIHByb2JlIGNhbGwN
Ci0gZml4IHR5cG8gaW4gY29tbWVudHMNCi0gY2xlYW4gcmVzb3VyY2VzIHdoZW4gc2NpX3JlZ2lz
dGVyIHJldHVybnMgYW4gZXJyb3IuDQotIFNwbGl0IGh5cGVydmlzb3IgYW5kIHRvb2xzdGFjayBj
aGFuZ2VzIGludG8gc2VwYXJhdGUgY29tbWl0cw0KLSByZXBocmFzZSBzZWN0aW9uIGFib3V0IC9m
aXJtd2FyZS9zY21pLiBNZW50aW9uZWQgdGhhdCB0aGlzIG5vZGUgaXMNCnRha2VuIGZyb20gSG9z
dCBEVCBhbmQgY29waWVkIHVubW9kaWZpZWQuDQotIGZpeCB4ZW4scmVnIGFkZHJlc3MgZm9yIHNl
Y29uZGFyeSBkb21haW5zIGZvciBEb20wbGVzcyBjb25maWd1cmF0aW9uDQoNCkNoYW5nZXMgaW4g
djk6DQotIHRyZWF0IFNDSSBhcyBhIGdhdGUgZm9yIFhFTl9ET01DVExfKmFzc2lnbl9kZXZpY2U6
IGFib3J0IGJlZm9yZQ0KSU9NTVUgaWYgc2NpX2RvX2RvbWN0bCgpIHJldHVybnMgYW4gZXJyb3Ig
b3RoZXIgdGhhbiAtRU5YSU8sIGluc3RlYWQNCm9mIHRyeWluZyB0byBwcm9wYWdhdGUgU0NJIGVy
cm9ycyBhZnRlciBhIHN1Y2Nlc3NmdWwgSU9NTVUNCm9wZXJhdGlvbi4gVGhpcyBhdm9pZHMgcGFy
dGlhbCBzdWNjZXNzIGFuZCB0aGUgbmVlZCBmb3IgSU9NTVUgcm9sbGJhY2suDQotIHJlbW92ZSBl
YXJseSByZXR1cm4gZnJvbSBkb19kb21jdGwoKSBpbiB0aGUgYXNzaWduX2RldmljZQ0KcGF0aCB0
byBrZWVwIFJDVSBoYW5kbGluZyBpbnRhY3QuDQotIGNoYW5nZSBJU19FTkFCTEVEKCopIHRvICNp
ZmRlZiBpbiBzY2lfZG9fZG9tY3RsIHF1YXJkDQotIHJld29yZCBjb21taXQgZGVzY3JpcHRpb24g
dG8gcmVmZXIgdG8gbWVtY3B5X2Zyb21pbyBhbmQgbWVtY3B5X3RvaW8NCi0gb3JkZXJpbmcgb2Jq
LXkgaW4gTWFrZWZpbGUNCi0gcmVuYW1lIEFMTF9MSUJTIHRvIEFSQ0hfTElCUw0KLSBkcm9wIGlv
LmggYW5kIG1vdmUgZGVmaW5pdGlvbnMgdG8gdGhlIGNvbW1vbiBoZWFkZXIsIGZpeCBjb21tZW50
cyB0bw0KYmUgYXJjaCBuZXV0cmFsDQotIHVwZGF0ZSBjb21tZW50cyBmb3IgbWVtY3B5X3tmcm9t
L3RvfWlvIGltcGxlbWVudGF0aW9uDQotIHNvcnQgYW5kIHJlZmFjdG9yIE1BSU5UQUlORVJTIGVu
dGllcw0KLSByZW1vdmUgU3B1cmlvdXMgY2hhbmdlcw0KLSBhZGQgZXh0cmEgY2hlY2sgdG8gYXZv
aWQgQVNTRVJUIHdoZW4gY2FsbGluZyB1bm1hcF9jaGFubmVsX21lbW9yeQ0KZnJvbSBhc3NpZ24g
ZGV2aWNlIG1ldGhvZA0KLSBzZXQgY29ycmVjdCB0eCBmbGFnIHRvIFNDTUlfQkFTRV9BR0VOVF9Q
RVJNSVNTSU9OU19SRVNFVCB3aGVuDQpmcmVlaW5nIHJlc291cmNlcy4gRmxhZyBzaG91bGQgYmUg
c2V0IHRvIDEgYWNjb3JkaW5nIHRvIHRoZQ0Kc2VjdGlvbiA0LjIuMi4xMiBbMF0uDQotIGZpeCBk
dCBub2RlIGNvcG1hcmluZw0KLSBtb3ZlZCBjaGFubmVsLT5zaG1lbSBjaGVjayBmcm9tIEFTU0VS
VCBpbiB1bm1hcF9tZW1vcnlfY2hhbm5lbCB0bw0KImlmIiBzdGF0ZW1lbnQuIFRoaXMgd2lsbCBw
cmV2ZW50IGZpcmluZyBBU1NFUlQgaWYNCnVubWFwX2NoYW5uZWxfbWVtb3J5IHdhcyBjYWxsZWQg
dHdpY2Ugb24gdGhlIHNhbWUgY2hhbm5lbC4NCg0KQ2hhbmdlcyBpbiB2ODoNCi0gY2hlY2sgZm9y
IENPTkZJR19BUk1fU0NJIHRvIGJlIGViYWJsZWQgaW5zdGVhZCBvZiBDT01GSUdfQVJNIGJlZm9y
ZQ0KY2FsbGluZyBzY2lfZG9fZG9tY3RsDQotIHJld29yayBzY2lfZG9fZG9tY3RsIGNhbGwgdG8g
YXZvaWQgZXh0cmEgY2hlY2tzLCBpbXByb3ZlZCBlcnJvcg0KaGFuZGxpbmcuDQotIGRvIG5vdCBw
cm9wYWdhdGUgcmV0MSBpZiBzY2lfZG9fZG9tY3RsIHJldHVybmVkIHBvc2l0aXZlIHJldA0KLSB1
cGRhdGVkIGNvbW1lbnQgaW4gZG9tY3RsLmMgY29kZQ0KLSBzd2l0Y2hlZCB0byBvcmRlcmVkIGFj
Y2Vzc29ycyB0byBhZGRyZXNzIHRoZSBvcmRlcmluZyBhbmQgYmFycmllcg0KY29uY2VybnMuDQot
IHVwZGF0ZWQgdGhlIGRvY3VtZW50YXRpb24gdG8gbWF0Y2ggdGhlIGltcGxlbWVudGF0aW9uIGFu
ZCBleHBsaWNpdGx5DQpzdGF0ZSB0aGUgc3VwcG9ydGVkIGFjY2VzcyBzaXplcyBhbmQgZ3JhbnVs
YXJpdHkuDQotIHJlbmFtZSBtZW1jcHlfKiBpbXBsZW1lbnRhdGlvbiBmaWxlcyB0byBtZW1jcHUt
KiB0byBmb2xsb3cgbmFtaW5nDQpjb252ZW5zaW9uDQotIGZpeCBpbmRlbnRhdGlvbiB0byBtYXRj
aCBYZW4gc3R5bGUNCi0gZml4IGludGVuZGF0aW9uIHRvIG1hdGNoIFhlbiBzdHlsZQ0KLSBtb3Zl
IG1lbWNweS17ZnJvbS90b31pbyB0byBtb3JlIGNvbnZlbmllbnQgbGlicmFyeSBwbGFjZQ0KLSB1
cGRhdGUgeGVuX3NjbWkgZnVuY19pZCBpbiBjb21taXQgZGVzY3JpcHRpb24NCi0gdXBkYXRlZCBk
b2N1bWVudGF0aW9uIHdpdGggdGhlIG5ldyBEVCBmb3JtYXQNCi0gdXBkYXRlZCBvcHRfZG9tMF9z
Y21pX2FnZW50X2lkIHNldHRpbmcgdG8gYXZvaWQgaXQgdG8gYmUgZXF1YWwNClNDTUlfQUdFTlRf
SURfSU5WQUxJRC4NCi0gY2hhbmdlZCBTQ01JX0FHRU5UX0lEX0lOVkFMSUQgZnJvbSAweGZmIHRv
IFVJTlQ4X01BWCB3aGljaCBtYWtlcw0KY29kZSBtb3JlIGNsZWFyIHNob3dpbmcgdGhhdCBVSU5U
OF9NQVggaXMgdGhlYXRlZCBsaWtlIGludmFsaWQNCmFnZW50X2lkIGFuZCBjb3VsZG4ndCBiZSB1
c2VkLiBBbHNvIGV4Y2x1ZGVkIFNDTUlfQUdFTlRfSURfSU5WQUxJRA0KZnJvbSBhY2NlcHRhYmxl
IHZhbHVlIHJhbmdlDQotIHJlbW92ZSBvdXRkYXRlZCB4ZW4sY29uZmlnIHByb3BlcnR5IGlnbm9y
ZSwgYWRkZWQgeGVuLHNjaSBjb21wYXRpYmxlDQp0byBza2lwX21hdGNoZXMgaW4gaGFuZGxlX25v
ZGUNCi0gYWRkIGRvY3VtZW50YXRpb24gZm9yIHByZS1leGlzdGluZyBzY21pLXNtYy1wYXNzdGhy
b3VnaCBjb21tYW5kIGxpbmUNCm9wdGlvbiBpbiBhbHBoYWJldGljYWxseSBjb3JyZWN0IGxvY2F0
aW9uIChpbiAncycgc2VjdGlvbikNCi0gYWRkIG5vdGUgdG8gY29tbWl0IGRlc2NyaXB0aW9uIGFi
b3V0IGRvY3VtZW50YXRpb24gZm9yIHByZXZpb3VzbHkNCnVuZG9jdW1lbnRlZCBzY21pLXNtYy1w
YXNzdGhyb3VnaA0KLSBGaXggU01DIElEcyBpbiBEVCBleGFtcGxlcyAoWGVuIG1hbmFnZW1lbnQg
dXNlcyAweDgyMDAwMDAzLCBEb20wIHVzZXMgMHg4MjAwMDAwMikNCi0gQWRkIGV4cGxpY2l0IG5v
dGUgZXhwbGFpbmluZyB3aHkgRG9tMCBhbmQgWGVuIGNoYW5uZWxzIGRvIG5vdCBjb25mbGljdA0K
LSBEb2N1bWVudCBkb20wbGVzcyBtdWx0aS1hZ2VudCBjb25maWd1cmF0aW9uIGV4YW1wbGUgKHhl
bixzY2lfdHlwZSAvIHhlbixzY2ktYWdlbnQtaWQpDQotIEFkZCBzY21pX3hlbiBub2RlIHRvIGFn
ZW50LWRpc2NvdmVyeSBleGFtcGxlIHdpdGggI3NjbWktc2Vjb25kYXJ5LWFnZW50cy1jZWxscyA9
IDINCi0gRHJvcCBkb20wPXNjaS1hZ2VudC1pZCBjb21tYW5kIGxpbmUgaGFuZGxpbmc7IERvbTAg
U0NNSSBpcyBub3cgZW5hYmxlZCB2aWENCiAgeGVuLGRvbTAtc2NpLWFnZW50LWlkIGluIHRoZSB4
ZW4sc2NpIERUIGNvbnRhaW5lcg0KLSBSZWZyZXNoIGRvY3MgYW5kIGV4YW1wbGVzIHRvIG1lbnRp
b24gdGhlIERUIHByb3BlcnR5IGluc3RlYWQgb2YgdGhlIGNtZGxpbmUgb3B0aW9uDQotIHVwZGF0
ZSBkb2N1bWVudGF0aW9uIHRvIG1hdGNoIHRoZSBsYXN0IERUIGZvcm1hdA0KLSBmaXhlZCBSU1Q6
ICIuLi4gY29kZS1ibG9jazo6IGR0cyIgLT4gIi4uIGNvZGUtYmxvY2s6OiBkdHMiDQotIHVwZGF0
ZSBkb2N1bWVudGF0aW9uIHdpdGggZG9tMGxlc3MgY29uZmlndXJhdGlvbiBleGFtcGxlDQotIHVw
ZGF0ZSBkb2N1bWVudGF0aW9uIHdpdGggbmV3IHBhcmFtIHhlbixkb20wLXNjaS1hZ2VudC1pZA0K
aW5zdGVhZCBvZiB0aGUgY29tbWFuZCBsaW5lIHBhcmFtZXRlcg0KDQpDaGFuZ2VzIGluIHY3Og0K
LSB1cGRhdGUgZG9tY3RsIHRvIGJ1aWxkIG9uIGJvdGggQXJtIGFuZCB4ODYgcGxhdGZvcm1zDQot
IG1vdmUgcmV0MSBkZWNsYXJhdGlvbiB0byB0aGUgdG9wIG9mIHRoZSBmdW5jdGlvbiBhcyByZXF1
aXJlZCBieSBjb2RlDQpzdHlsZQ0KLSB4ODYgZ3VpZGFuY2U6IHJlbW92ZWQgdGhlIHNwZWN1bGF0
aXZlIG5vdGU7IGhlYWRlciBub3cganVzdCBzYXlzDQogIGVhY2ggYXJjaCBzdXBwbGllcyBpdHMg
b3duIGltcGxlbWVudGF0aW9uIG9yIG1hY3JvLg0KLSBuYW1lIHNwYWNpbmc6IGRyb3BwZWQgdGhl
IGRvdWJsZS11bmRlcnNjb3JlOyB0aGUgaGVscGVycyBhcmUgbm93DQogIG1lbWNweV9mcm9taW8g
LyBtZW1jcHlfdG9pby4gVGhlIGhlYWRlciBhbHNvIGV4cGxpY2l0bHkgYWxsb3dzIGFuDQogIGFy
Y2ggdG8gZGVmaW5lIHRoZXNlIGFzIG1hY3JvcyBiZWZvcmUgaW5jbHVkaW5nIGl0Lg0KLSB1cGRh
dGVkIGlvLmMgdG8ga2VlcCAzMi1iaXQgdHJhbnNmZXJzIHNhZmUgb24gYXJtMzINCi0gbW92ZWQg
dG8gX19yYXdfcmVhZCovX19yYXdfd3JpdGUqIGFjY2Vzc29ycyB0byBhdm9pZCBlbmRpYW5uZXNz
IGNvbnZlcnNpb24uDQotIHNwbGl0IHRoZSBoZWxwZXJzIGludG8gc2VwYXJhdGUgY29tcGlsYXRp
b24gdW5pdHMNCi0gcmV3b3JrIHNjbWkgbm9kZXMgZm9yIHhlbiB0byBtYXRjaCBvbiBjb21wYXRp
YmxlIHN0cmluZyBpbnN0ZWFkIG9mDQp0aGUgZGlyZWN0IHBhdGgNCi0gdXBkYXRlIGRvY3VtZW50
YXRpb24gaW4gc2VjdGlvbiBvZiB0aGUgeGVuX3NjbWkgY29uZmlndXJhdGlvbiB3aGljaA0KaXMg
bWF0Y2hlZCBieSAieGVuLHNjaSIgY29tcGF0aWJsZSBpbnN0ZWFkIG9mIHRoZSBkaXJlY3QgcGF0
aC4NCg0KQ2hhbmdlcyBpbiB2NjoNCi0gY2hhbmdlIGlvbW11X2RvX2RvbWN0bCBhbmQgc2NpX2Rv
X2RvbWN0bCBjb21tYW5kIG9yZGVyIGFuZA0KY2FsbCBzY2lfZG9fZG9tY3RsIGZpcnN0IHdoaWNo
IHdpbGwgcHJvZHVjZSBjbGVhbmVyIGNvZGUgcGF0aC4NCkFsc28gZHJvcHBlZCBjaGFuZ2luZyBy
ZXR1cm4gY29kZSB3aGVuIGlvbW11IHdhcyBkaXNhYmxlZCBpbg0KaW9tbXVfZG9fZG9tY3RsLg0K
LSBzb3J0ZWQgb2JqcyBpbiBNYWtlZmlsZSBhbGhhYmV0aWNhbGx5DQotIGFkZGVkIG5ld2xpbmUg
YXQgdGhlIGVuZCBvZiBNYWtlZmlsZQ0KLSB1c2VkIHVpbnR7Tn1fdCBpbnRlYWQgb2YgdXtOfQ0K
LSBhZGQgY29tbWVudCBhYm91dCB3aHkgMzIgYml0IElPIG9wZXJhdGlvbnMgd2VyZSB1c2VkDQot
IHVwZGF0ZWQgY2FzdCBvcGVydGFpb25zIHRvIGF2b2lkIGRyb3BwaW5nIGNvbnN0bmVzcyB3aGlj
aCBpcyB3cm9uZw0KLSBtb3ZlIGZ1bmN0aW9uIGRlZmluaXRpb25zIHRvIGdlbmVyaWMgcGxhY2Ug
c28gdGhlIGNvdWxkIGJlIHJldXNlZCBieQ0Kb3RoZXIgYXJjaA0KLSBhZGQgU1BEWCB0YWcgdG8g
aW8uYw0KLSB1cGRhdGVkIHNjbWktc2htZW0gdG8gdXNlIGlvLmggZnJvbSBnZW5lcmljIGxvY2F0
aW9uDQotIHVwZGF0ZSBzY21pX2FnZW50X2lkIHBhcmFtZXRlciB0byBiZSBwcm92aWRlZCBpbnNp
ZGUgZG9tMD0gcGFyYW1ldGVyDQpsaXN0IGFuZCBoYXZlIHRoZSBmb2xsb3dpbmcgZm9ybWF0ICJk
b20wPXNjaS1hZ2VudC1pZD0wIg0KVGhpcyBjaGFuZ2Ugd2FzIGRvbmUgYXMgYSByZXNwb25zZSBm
b3IgU3RlZmFubyBjb21tZW50IGFuZA0KcmVxdWlyZXMgYSBsb3Qgb2YgY29kZSBjaGFuZ2VzLCBi
dXQgcHJvZHVjZXMgbXVjaCBjbGVhbmVyIHNvbHV0aW9uDQp0aGF0J3Mgd2h5IEkndmUgYWRkZWQg
aXQgdG8gdGhlIGNvZGUuDQotIGZpeCBmaWxlIGNvbW1lbnRzIGFuZCByZXR1cm4gY29kZXMNCi0g
Zml4IGxlbmdodCBjaGVja3MgaW4gc2htZW1fe2dldCxwdXR9X21lc3NhZ2UgdG8gdXNlIG9mZnNl
dG9mDQotIHJlbW92ZSBsZW4gbWVtYmVyIGZyb20gc2NtaV9jaGFubmVsIHN0cnVjdHVyZSBhcyBp
dCBpcyBub3QgdXNlZA0KLSBzZXQgc2NtaS1zZWNvbmRhcnktYWdlbnRzIHByb3BlcnR5IHRvIGJl
IG1hbmRhdG9yeSBzaW5jZSBpZiBubw0Kc2Vjb25kYXJ5IGFnZW50cyB3ZXJlIHByb3ZpZGVkIHRo
ZW4gdGhlcmUgaXMgbm8gc2VuY2UgdG8gZW5hYmxlIHNjbWkNCndoZW4gbm8gc2Vjb25kYXJ5IGFn
ZW50cyBhcmUgcG9wdWxhdGVkIHRvIHRoZSBEb21haW5zDQotIHVwZGF0ZSBkb2N1bWVudGF0aW9u
IGluIGJvb3RpbmcudHh0LCBhZGRlZCB4ZW5fc2NtaSBub2RlIHRvIHRoZQ0KZXhhbXBsZQ0KLSBh
ZGp1c3QgZC0+YXJjaC5zY2lfZW5hYmxlZCB2YWx1ZSBpbiBzY21pX2RvbWFpbl9kZXN0cm95DQot
IGZpeCBsb2NrIG1hbmFnZW1lbnQgaW4gc21jX2NyZWF0ZV9jaGFubmVsIGNhbGwNCi0gYXZvaWQg
ZXh0cmEgbWFwX2NoYW5uZWxfbWVtb3J5IGNvbW1hbmQgZm9yIFhlbiBtYW5hZ2VtZW50IGNoYW5u
ZWwNCmJlY2F1c2UgY29sbGVjdF9hZ2VudF9pZCBjYWxsIHVubWFwcyBtZW1vcnkgaWYgRE9NSURf
WEVOIGlzIG5vdA0Kc2V0LiBTbyBmb3IgWGVuIG1hbmFnZW1lbnQgY2hhbm5lbCB3ZSBjYW4gaW5p
dCBkb21haW5faWQgYWQgRE9NSURfWEVODQpiZWZvcmUgY2FsbGluZyBjb2xsZWN0X2FnZW50X2lk
IHNvIG1lbW9yeSBzaG91bGRuJ3QgYmUgdW5tYXBwZWQuDQotIHJlbW92ZSBhbGwgSFZDIG1lbnRp
b25zIGZyb20gdGhlIG11bHRpLWFnZW50IGRvYw0KLSB1cGRhdGUgc2NpLWFnZW50LWlkIHBhcmFt
ZXRlciBkZXNjcmlwdGlvbiBpbiB0aGUgZG9jdW1lbnRhdGlvbg0KLSBhZGQgbWlzc2luZyBTaWdu
LW9mDQotIG1pbm9yIGZpeGVzIGFjcm9zcyB0aGUgZG9jdW1lbnQNCg0KQ2hhbmdlcyBpbiB2NToN
Ci0gcmV0dXJuIC1FSU5WQUwgaWYgbWVkaWF0b3Igd2l0aG91dCBhc3NpZ25fZHRfZGV2aWNlIHdh
cyBwcm92aWRlZA0KLSBpbnZlcnQgcmV0dXJuIGNvZGUgY2hlY2sgZm9yIGlvbW11X2RvX2RvbWN0
bCBpbg0KWEVOX0RPTUNUTF9hc3NpZ25fZGV2aWNlIGRvbWN0bCBwcm9jZXNzaW5nIHRvIG1ha2Ug
Y2xlYW5lciBjb2RlDQotIGNoYW5nZSAtRU5PVFNVUFAgZXJyb3IgY29kZSB0byAtRU5YSU8gaW4g
c2NpX2RvX2RvbWN0bA0KLSBoYW5kbGUgLUVOWElPIHJldHVybiBjb21kZSBvZiBpb21tdV9kb19k
b21jdGwNCi0gbGVhdmUgIWR0X2RldmljZV9pc19wcm90ZWN0ZWQgY2hlY2sgaW4gaW9tbXVfZG9f
ZHRfZG9tY3RsIHRvIG1ha2UNCmNvZGUgd29yayB0aGUgc2FtZSB3YXkgaXQncyBkb25lIGluICJo
YW5kbGVfZGV2aWNlIiBjYWxsIHdoaWxlDQpjcmVhdGluZyBod2RvbShkb20wKSBhbmQgImhhbmRs
ZV9wYXNzdGhyb3VnaF9wcm9wIiBjYWxsIGZvciBkb20wbGVzcw0KY3JlYXRpb24NCi0gZHJvcCBy
ZXR1cm4gY2hlY2sgZnJvbSBzY2lfYXNzaWduX2R0X2RldmljZSBjYWxsIGFzIG5vdCBuZWVkZWQN
Ci0gZG8gbm90IHJldHVybiBFSU5WQUwgd2hlbiBhZGRpZ25fZHRfZGV2aWNlIGlzIG5vdCBzZXQu
IFRoYXQgaXMNCmJlY2F1c2UgdGhpcyBjYWxsYmFjayBpcyBvcHRpb25hbCBhbmQgbm90IGltcGxl
bWVudGVkIGluIHNpbmdsZS1hZ2VudCBkcml2ZXINCi0gbW92ZSBtZW1jcHlfdG9pby9mcm9taW8g
dG8gdGhlIGdlbmVyaWMgcGxhY2UNCi0gZml4IGRldmljZS10cmVlIGV4YW1wbGUgZm9ybWF0IGlu
IGJvb3RpbmcudHh0LCBhZGRlZCAiOyIgYWZ0ZXIgIn0iLg0KLSB1cGRhdGUgZGVmaW5lIGluIHNj
bWktcHJvdG8uaA0KLSB1cGRhdGUgZGVmaW5lIGluIHNjbWktc2htZW0uaCBmaWxlDQotIHNjbWlf
YXNzaWduX2RldmljZSAtIGRvIG5vdCBpZ25vcmUgLUVPUE5PVFNVUFAgcmV0dXJuDQpjb2RlIG9m
IHRoZSBkb19zbWNfeGZlcg0KLSByZW1vdmUgb3ZlcndyaXRpbmcgYWdlbnRfY2hhbm5lbC0+YWdl
bnRfaWQgYWZ0ZXINClNDTUlfQkFTRV9ESVNDT1ZFUl9BR0VOVCBjYWxsDQotIGFkZCBtdWx0aS1h
Z2VudCBmaWxlcyB0byB0aGUgTUFJTlRBSU5FUlMNCi0gYWRkIFNDTUkgbXVsdGktYWdlbnQgZGVz
Y3JpcHRpb24gdG8gdGhlIFNVUFBPUlQubWQNCi0gaGFuZGxlIEFSTV9TTUNDQ19JTlZBTElEX1BB
UkFNRVRFUiByZXR1cm4gY29kZSBhbmQgcmV0dXJuIC1FSU5WQUwNCmZvciBzbWMgY2FsbA0KLSB1
cGRhdGVkIGNvbGxlY3RfYWdlbnRzIGZ1bmN0aW9uLiBTZXQgYWdlbnRfaWQgcGFyYW1ldGVyIGFz
IG9wdGlvbmFsDQppbiBzY21pLXNlY29uZGFyeS1hZ2VudHMgZGV2aWNlLXRyZWUgcHJvcGVydHkN
Ci0gaW50cm9kdWNlICIjc2NtaS1zZWNvbmRhcnktYWdlbnRzLWNlbGxzIiBwYXJhbWV0ZXIgdG8g
c2V0IGlmDQphZ2VudF9pZCB3YXMgcHJvdmlkZWQNCi0gcmVhbm1lIHhlbixzY21pLXNlY29uZGFy
eS1hZ2VudHMgcHJvcGVydHkgdG8gc2NtaS1zZWNvbmRhcnktYWdlbnRzDQotIG1vdmUgbWVtY3B1
X3RvaW8vZnJvbWlvIGZvciB0aGUgZ2VuZXJpYyBwbGFjZQ0KLSB1cGRhdGUgWGVuIHRvIGdldCBt
YW5hZ2VtZW50IGNoYW5uZWwgZnJvbSAvY2hvc2VuL3hlbixjb25maWcgbm9kZQ0KLSBnZXQgaHlw
ZXJ2aXNvciBjaGFubm5lbCBmcm9tIG5vZGUgaW5zdGVhZCBvZiB1c2luZyBoYXJkY29kZWQNCi0g
dXBkYXRlIGhhbmRsaW5nIHNjbWkgYW5kIHNobWVtIG5vZGVzIGZvciB0aGUgZG9tYWluDQotIFNl
dCBtdWx0aS1hZ2VudCBkcml2ZXIgdG8gc3VwcG9ydCBvbmx5IEFybTY0DQotIHJld29yayBtdWx0
aS1hZ2VudCBkcml2ZXIgdG8gbGVhdmUgSG9zdCBEZXZpY2UtdHJlZSB1bm1vZGlmaWVkDQoNCkNo
YW5nZXMgaW4gdjQ6DQotIHRvb2xzdGFjayBjb21tZW50cyBmcm9tIEFudGhvbnkgUEVSQVJEDQot
IGFkZGVkIGRvbTBsZXNzIHN1cHBvcnQNCi0gYWRkZWQgZG9jIGZvciAieGVuLHNjbWktc2Vjb25k
YXJ5LWFnZW50cyINCg0KR3J5Z29yaWkgU3RyYXNoa28gKDIpOg0KICB4ZW4vZG9tY3RsOiBjaGFp
biBTQ0kgaGFuZGxpbmcgYmVmb3JlIElPTU1VIGluIGFzc2lnbl9kZXZpY2UgZG9tY3RsDQogIGRv
Y3M6IGFybTogYWRkIFNDSSBTQ01JIFNNQyBtdWx0aS1hZ2VudCBkcml2ZXIgZG9jcw0KDQpPbGVr
c2lpIE1vaXNpZWlldiAoNCk6DQogIHhlbjogYXJtOiBzbWNjYzogYWRkIElOVkFMSURfUEFSQU1F
VEVSIGVycm9yIGNvZGUNCiAgbGliL2FybTogQWRkIEkvTyBtZW1vcnkgY29weSBoZWxwZXJzDQog
IHhlbi9hcm06IHNjbWk6IGludHJvZHVjZSBTQ0kgU0NNSSBTTUMgbXVsdGktYWdlbnQgZHJpdmVy
DQogIHRvb2xzL3hsL2xpYnhsOiB3aXJlIHVwIFNDTUkgU01DIG11bHRpLWFnZW50IGNvbmZpZ3Vy
YXRpb24NCg0KIE1BSU5UQUlORVJTICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8
ICAgMSArDQogU1VQUE9SVC5tZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwg
IDExICsNCiAuLi4vYXJtL2Zpcm13YXJlL2FybS1zY21pLnJzdCAgICAgICAgICAgICAgICAgfCA0
MjIgKysrKysrKysrDQogZG9jcy9tYW4veGwuY2ZnLjUucG9kLmluICAgICAgICAgICAgICAgICAg
ICAgIHwgIDEzICsNCiBkb2NzL21pc2MvYXJtL2RldmljZS10cmVlL2Jvb3RpbmcudHh0ICAgICAg
ICAgfCAxOTcgKysrKysNCiB0b29scy9pbmNsdWRlL2xpYnhsLmggICAgICAgICAgICAgICAgICAg
ICAgICAgfCAgIDggKw0KIHRvb2xzL2xpYnMvbGlnaHQvbGlieGxfYXJtLmMgICAgICAgICAgICAg
ICAgICB8ICAxMyArDQogdG9vbHMvbGlicy9saWdodC9saWJ4bF90eXBlcy5pZGwgICAgICAgICAg
ICAgIHwgICA0ICstDQogdG9vbHMveGwveGxfcGFyc2UuYyAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHwgIDEyICsNCiB4ZW4vYXJjaC9hcm0vTWFrZWZpbGUgICAgICAgICAgICAgICAgICAgICAg
ICAgfCAgIDEgKw0KIHhlbi9hcmNoL2FybS9hcmNoLm1rICAgICAgICAgICAgICAgICAgICAgICAg
ICB8ICAgMSArDQogeGVuL2FyY2gvYXJtL2RvbTBsZXNzLWJ1aWxkLmMgICAgICAgICAgICAgICAg
IHwgIDExICsNCiB4ZW4vYXJjaC9hcm0vZG9tYWluX2J1aWxkLmMgICAgICAgICAgICAgICAgICAg
fCAgMzkgKw0KIHhlbi9hcmNoL2FybS9maXJtd2FyZS9LY29uZmlnICAgICAgICAgICAgICAgICB8
ICAxMiArDQogeGVuL2FyY2gvYXJtL2Zpcm13YXJlL01ha2VmaWxlICAgICAgICAgICAgICAgIHwg
ICAxICsNCiB4ZW4vYXJjaC9hcm0vZmlybXdhcmUvc2NpLmMgICAgICAgICAgICAgICAgICAgfCAg
MzYgKw0KIHhlbi9hcmNoL2FybS9maXJtd2FyZS9zY21pLXByb3RvLmggICAgICAgICAgICB8IDE2
NCArKysrDQogeGVuL2FyY2gvYXJtL2Zpcm13YXJlL3NjbWktc2htZW0uYyAgICAgICAgICAgIHwg
MTE4ICsrKw0KIHhlbi9hcmNoL2FybS9maXJtd2FyZS9zY21pLXNobWVtLmggICAgICAgICAgICB8
ICA0NSArDQogeGVuL2FyY2gvYXJtL2Zpcm13YXJlL3NjbWktc21jLW11bHRpYWdlbnQuYyAgIHwg
ODMwICsrKysrKysrKysrKysrKysrKw0KIHhlbi9hcmNoL2FybS9pbmNsdWRlL2FzbS9maXJtd2Fy
ZS9zY2kuaCAgICAgICB8ICAgOCArDQogeGVuL2FyY2gvYXJtL2luY2x1ZGUvYXNtL3NtY2NjLmgg
ICAgICAgICAgICAgIHwgICAxICsNCiB4ZW4vYXJjaC9hcm0vbGliL01ha2VmaWxlICAgICAgICAg
ICAgICAgICAgICAgfCAgIDIgKw0KIHhlbi9hcmNoL2FybS9saWIvbWVtY3B5LWZyb21pby5jICAg
ICAgICAgICAgICB8ICA1NSArKw0KIHhlbi9hcmNoL2FybS9saWIvbWVtY3B5LXRvaW8uYyAgICAg
ICAgICAgICAgICB8ICA1NSArKw0KIHhlbi9jb21tb24vZG9tY3RsLmMgICAgICAgICAgICAgICAg
ICAgICAgICAgICB8ICAxNSArDQogeGVuL2RyaXZlcnMvcGFzc3Rocm91Z2gvZGV2aWNlX3RyZWUu
YyAgICAgICAgIHwgICA2ICsNCiB4ZW4vaW5jbHVkZS9wdWJsaWMvYXJjaC1hcm0uaCAgICAgICAg
ICAgICAgICAgfCAgIDMgKw0KIHhlbi9pbmNsdWRlL3hlbi9pby5oICAgICAgICAgICAgICAgICAg
ICAgICAgICB8ICAxMCArDQogMjkgZmlsZXMgY2hhbmdlZCwgMjA5MyBpbnNlcnRpb25zKCspLCAx
IGRlbGV0aW9uKC0pDQogY3JlYXRlIG1vZGUgMTAwNjQ0IHhlbi9hcmNoL2FybS9maXJtd2FyZS9z
Y21pLXByb3RvLmgNCiBjcmVhdGUgbW9kZSAxMDA2NDQgeGVuL2FyY2gvYXJtL2Zpcm13YXJlL3Nj
bWktc2htZW0uYw0KIGNyZWF0ZSBtb2RlIDEwMDY0NCB4ZW4vYXJjaC9hcm0vZmlybXdhcmUvc2Nt
aS1zaG1lbS5oDQogY3JlYXRlIG1vZGUgMTAwNjQ0IHhlbi9hcmNoL2FybS9maXJtd2FyZS9zY21p
LXNtYy1tdWx0aWFnZW50LmMNCiBjcmVhdGUgbW9kZSAxMDA2NDQgeGVuL2FyY2gvYXJtL2xpYi9N
YWtlZmlsZQ0KIGNyZWF0ZSBtb2RlIDEwMDY0NCB4ZW4vYXJjaC9hcm0vbGliL21lbWNweS1mcm9t
aW8uYw0KIGNyZWF0ZSBtb2RlIDEwMDY0NCB4ZW4vYXJjaC9hcm0vbGliL21lbWNweS10b2lvLmMN
Cg0KLS0gDQoyLjQzLjANCg0KYmFzZS1jb21taXQ6IGYxNGZiNTM1Mzc2NzViMzFlNTYzYTNhNTFk
ZTE2ODA4ZjVhNDExMDgNCmJyYW5jaDogc2NtaV9tYV91cHN0cnYxMQ==


From xen-devel-bounces@lists.xenproject.org Mon Apr 06 16:39:14 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 06 Apr 2026 16:39:14 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1274258.1560442 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1w9myh-0002h7-Nk; Mon, 06 Apr 2026 16:39:07 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1274258.1560442; Mon, 06 Apr 2026 16:39: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 1w9myh-0002fw-Hf; Mon, 06 Apr 2026 16:39:07 +0000
Received: by outflank-mailman (input) for mailman id 1274258;
 Mon, 06 Apr 2026 16:39:06 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <Oleksii_Moisieiev@epam.com>) id 1w9myg-0002Dw-1M
 for xen-devel@lists.xenproject.org; Mon, 06 Apr 2026 16:39:06 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1w9myf-001MTX-DK
 for xen-devel@lists.xenproject.org; Mon, 06 Apr 2026 18:39:05 +0200
Received: from [10.42.69.6] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <Oleksii_Moisieiev@epam.com>)
 id 69d3e1a7-bab6-0a2a0a5309dd-0a2a4506d52e-12
 for <xen-devel@lists.xenproject.org>; Mon, 06 Apr 2026 18:39:05 +0200
Received: from [52.101.66.107]
 (helo=DUZPR83CU001.outbound.protection.outlook.com)
 by tlsNG-16d1c6.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.0)
 (envelope-from <Oleksii_Moisieiev@epam.com>)
 id 69d3e1a8-0df0-0a2a45060019-3465426b20b6-5
 for <xen-devel@lists.xenproject.org>; Mon, 06 Apr 2026 18:39:05 +0200
Received: from DU5PR03MB10263.eurprd03.prod.outlook.com (2603:10a6:10:519::5)
 by AM9PR03MB6817.eurprd03.prod.outlook.com (2603:10a6:20b:2df::15)
 with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9769.18; Mon, 6 Apr
 2026 16:39:03 +0000
Received: from DU5PR03MB10263.eurprd03.prod.outlook.com
 ([fe80::8c9e:b301:61c0:3908]) by DU5PR03MB10263.eurprd03.prod.outlook.com
 ([fe80::8c9e:b301:61c0:3908%5]) with mapi id 15.20.9769.020; Mon, 6 Apr 2026
 16:39:03 +0000
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@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=nL3NSZvWd+paMNUcVCnOoIyD9dHpUcXJyOruZzMtyq4vEcH98bgpID1QndQSUCWm/V+RjLVPkwiRWBuTfRDK5NOsQADazHpC3roqA1OYfFHE6MqCp5QgrEZnq99T5ZyCKdNOi9jkmkQbIhLUKctHuKyQToEbHZ+mJKZuTXj+NXopKHOQsk4tzLSkn52o1lrszdfuRkI6La5f9tubXu+96Y9iH1nB/y0qUZBpS8M5hzHfBtXnTtulhwNzoPIR6EigVfo+byZosOY/QU/jJZlgRep2pxt4Je8emXEP6m0IBJ6GS16Nz6245YgN0Rw4SLKg5vDVuz+suWaqFNx4ytNQSQ==
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com;
 s=arcselector10001;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1;
 bh=RLVEemqovOu2DliBxYy5M+VX2WQ7JcG7NJ+b2t4yQ0E=;
 b=XLXtgMIi98bcwE79RQaeCWvTe2Zzr98CJ6A9JLj8tq/ZC+Tg+aShOA5IFY7Acz0UOq44PjejTSlp4I8C56EQtetxIm97Ich+f9fV3jN9iCqQnj0qlUtxfdmZor8dxsw8UMIiqXifGRKhtQdKNBwp7vIxGcXsgE4rZZAp438htjepuFHDakPJ28ZZgfM/pZgGQezOxrPK99c82ZMsBtph9AepzTk4XN0fDfGKtj0pJ3J0Y60uiN8odA7yOyzTGtPrnnxc8PHZ68Kd9mQ8txgFVb4n18deZaMEQlXZmdn2eNatC7d9gVBYNJ+kD3p5f/uLHG/nn01vxAx5LDlPIRmaLg==
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=RLVEemqovOu2DliBxYy5M+VX2WQ7JcG7NJ+b2t4yQ0E=;
 b=YNh8M6zv/jwEB98LKw5OMOWWCzpm2OgWeVtV8GbdAK1pf8gtZ0d13Lw7P54jUyGC6rHLkkf52MTJ/5S8ZA+hJSRnKGX51ITzteE5ncCzN6LJTmYy7HpLeAMrLKUIKCbPREmbUX+Tfbq8WuGyLpyhfhRR1Lhdrp//nPJy3zahvRfjRTgp3lMQweYHWyRrcoAQn3lM6vRxlWmIfZ9a3DUQT30jcs7yM1ej3Bfy7NdpGotKYmbSXZVp2j6IxikahqtxEQPrC+D4KUzcac02BkQ11zCtjjLiOcqMqIevWvRKqgwDCwdryJqYuWks6YD8u2DJnj8cDZpK3qY72cApaZU6wA==
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>, =?iso-8859-1?Q?Roger_Pau_Monn=E9?=
	<roger.pau@citrix.com>, Stefano Stabellini <sstabellini@kernel.org>,
	Volodymyr Babchuk <Volodymyr_Babchuk@epam.com>, Grygorii Strashko
	<grygorii_strashko@epam.com>
Subject: [PATCH v11 5/6] tools/xl/libxl: wire up SCMI SMC multi-agent
 configuration
Thread-Topic: [PATCH v11 5/6] tools/xl/libxl: wire up SCMI SMC multi-agent
 configuration
Thread-Index: AQHcxePgoYX5wHyqiEi/h1nBRfSR5g==
Date: Mon, 6 Apr 2026 16:39:02 +0000
Message-ID:
 <34173027f83b00181688d33a5adf4b6a1f0e031a.1775493499.git.oleksii_moisieiev@epam.com>
References: <cover.1775493499.git.oleksii_moisieiev@epam.com>
In-Reply-To: <cover.1775493499.git.oleksii_moisieiev@epam.com>
Accept-Language: en-US
Content-Language: en-US
X-MS-Has-Attach:
X-MS-TNEF-Correlator:
authentication-results: dkim=none (message not signed)
 header.d=none;dmarc=none action=none header.from=epam.com;
x-ms-publictraffictype: Email
x-ms-traffictypediagnostic: DU5PR03MB10263:EE_|AM9PR03MB6817:EE_
x-ms-office365-filtering-correlation-id: 3f01544f-a4c2-4cb4-548c-08de93fb0374
x-ms-exchange-senderadcheck: 1
x-ms-exchange-antispam-relay: 0
x-microsoft-antispam:
 BCL:0;ARA:13230040|1800799024|7416014|376014|366016|18002099003|38070700021|22082099003|56012099003;
x-microsoft-antispam-message-info:
 cHvVKPwfuMYge+RrzDO2oFk0dlfJg6mE+7XPokAXkVcHX3VOoYNy4uch/74tvjWDoOROVXhDVZzErmDpkarRyLr+cUBzvANry3TyZh3LBWgh3pDNxpxFuUxYLqBQ9qN06u93gDGMaVFmuw7hJYc3OOVsMvSmW70dSpcaBp7I8x38IkpIVTsiI3cVcXAr3SUTSf4jpL7QZTrzi9PDgKlLUpJhJV5I3PsFmMxqh3VkyMSQN81Yq0V/ykNHwJNwSECRWbOBJ1EkCkRntt4guUUmKsWos7mDX+Uz3l3SBIekocbKWkKiB5wIFH/+jRiZ2N+qK9RfW4MrQQKBOInczlKDgk5UbId3lANFRr0d0TwZQkdXVSh3DZ2SGfbjprK0LyrmSCqWyv4K2n2hlU7Ry4RkJG7EWW9Wmey0bqw10D+UbhqcS+zhHJjF3HYVJGCEm78YSfRdOx2egGwmhSWk3X0Rcy/1mf456V8v3ReMpcq7PMoZZA0ZTNKoJdRQ6yxMFHyUGN0kc3TITc+BMefCRkWCfiiuL4gzEwsGzaW226822fSW9doJ2qZg+i7zBBPfh474OqWiQdkZGPa3nN7HLoLfi0sbmw0KXmmDHJerISlr5sOUw++Cx23qxlWj1nxiZqiMQep5VyFGfHXdkE5Nf67/E55R8qH+SD5iO30VcuuCezXqXQo8mGN+57miyC1JKJSNw5Amas6693EuWn50J13CjcFXafEIOY8VZng42aRTdjdKPgjOo0rNq8WHH7yU4N3mvWNIwliHnNNX6HTADSVLtOJrD6lIW7QjFFft/LyMey4=
x-forefront-antispam-report:
 CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:DU5PR03MB10263.eurprd03.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(1800799024)(7416014)(376014)(366016)(18002099003)(38070700021)(22082099003)(56012099003);DIR:OUT;SFP:1102;
x-ms-exchange-antispam-messagedata-chunkcount: 1
x-ms-exchange-antispam-messagedata-0:
 =?iso-8859-1?Q?//A4nQP4iuDwKnIv6DFkzDJrtHjiE5hNVnVDTLChP5MX0mf7jBMYqcFaj7?=
 =?iso-8859-1?Q?om+mZxA4y8bNSxrjBTo9U2DOleHgJVeHgF6Iv+CZ8KYRnz5dh/0tRFIpTC?=
 =?iso-8859-1?Q?62vHr8EVbvKsDaFPD6WNjGyXNKk8PLFESBVV3farc5E1kWJlHvgy9gAU9M?=
 =?iso-8859-1?Q?Idw3+z5mbj7IuVbdavkamR0XNEdSF56PUPfIVjCkbEX6aSEEmUdZGQzV9e?=
 =?iso-8859-1?Q?jdf7PWtJKv31E0kdppMtTzYBJk+TXQqboA7nOnI5ixnKgDgtWWKq5SsLHE?=
 =?iso-8859-1?Q?ONKnAhH2OyJ4NgWqg74fjBg5ZAy92kZQC7pfp9EsbCMGOsYroYh+pJr1c5?=
 =?iso-8859-1?Q?iLlqHVQIsI6KoLApDXC85dlpdc1ypXydNQ0hh+lnbu5YB9WLUiTzAadokZ?=
 =?iso-8859-1?Q?rVLlq9FyWTAgkvqRe1ys8QKcmfPZCptL69Gai4k1PCbwyTejIYDdzMk2V0?=
 =?iso-8859-1?Q?bLll85djET4DUQhG+RL+UCI/hwGTp4VfhDAr4UlEL5t5w94+UC6pvGCf3E?=
 =?iso-8859-1?Q?oT5BM7D4fvm6i4oX9nH+B1WzocqhSsl1JDU8p5LFe+m4gwMFZRl+g8NepC?=
 =?iso-8859-1?Q?pkbKg0T3FIqM1/ZV6gETMZmC1B0nMi0hTt6vhXy1X/0FOxzQs+skilbLuO?=
 =?iso-8859-1?Q?UVlYoh25T+y544h5x5Vob4bn6/xywr2CGwe13OwXL2zlGlzHTTrC5sVcqd?=
 =?iso-8859-1?Q?8aceyiCQj0DpWlq4xkeM5GaMjT75mB4JUillyY5StBXwHdVYNpVnsuv6tT?=
 =?iso-8859-1?Q?oRSQ6f+mdC2QiwV2e0betrugF91WrECRXkTCtSm6YOV8q2i1Xmr/MDxA5/?=
 =?iso-8859-1?Q?Jk91duH7IxfhUSGL75DsUwyAvDs1/RgayxPxazt3UugpEHTOX+B9yAsgFs?=
 =?iso-8859-1?Q?oQY4fFf1Z4u4a8TAZZaFyjOkaCTuxVcSwsikbYOeH8lsclL3YGEjKQmoYe?=
 =?iso-8859-1?Q?Epz1kNBslFXEomshcN75UpLxewzJP1ih0u8JJpdxMCjyhYmUQEBmWxHfQN?=
 =?iso-8859-1?Q?kRfL2GbbIL0eQrVjyymM56nd2RYwUTGHXiXcDeWsxhVAdg72gC0dbe+fYi?=
 =?iso-8859-1?Q?vfkK4Kq5a6wiqFU5ON1by6FGRbO1DkJ8CYAPYLIEjFLRh/HN0i1Cz716aO?=
 =?iso-8859-1?Q?W6NqrSvrLWCxO2mC+l/1tNGhRMRgCx3PyMI1G4ftXzScEXAOv+P4uO9Uqk?=
 =?iso-8859-1?Q?0iLkQ64HOeaNj2r+2jhfzGgdNQy9e3nEaexCmKechIP0tVv635/CctJhZd?=
 =?iso-8859-1?Q?lMeztxW5rQp4k3/KJKwN2mkhncmlAmpWteDqsVVdb8Lsb2XpCzIsVW04ZT?=
 =?iso-8859-1?Q?DiW6iMfE0KKrEDZV2JIMoc3VIqeiAcCSjx5mhHEy3n6qthe1yOPTEDAtZN?=
 =?iso-8859-1?Q?nU7XOvc/mwaqUa4I4iWbN+vVWE0L/Ep+e2K1XsPUiuUDpaDT2XpcqmafMs?=
 =?iso-8859-1?Q?YvxNuOt8/pjWCsOtcwZ2Lo2sbRGbwVFpck6TaqQeAxrk71114f8F6nOyya?=
 =?iso-8859-1?Q?BGU0wJG5NgJeUVfHwFIL3xpT3hLyqEiCnbiSZZU5L5DsWyHmPxlCO4g5hL?=
 =?iso-8859-1?Q?rKFmmHjtIbK4McX1OTgAW2cgMyS2JgYfU3+GlIL7SDRF/aeMCoGM53mrg7?=
 =?iso-8859-1?Q?Icig/OJaZ+9WLH5bJKSVq7crrvuQewt/KKsyEA52E2qCle6cGg+jHyH8PO?=
 =?iso-8859-1?Q?mrn0ONvPzVXrWB1a0YS3lYBjLi2C9JPwg0U8O1riNdGUxS0OANb6FKmEuC?=
 =?iso-8859-1?Q?+w36fNgq6aDwul0JUmNHlezyIyteT0g9AEDgAvW/voGkDUq2Z/hMk9jalJ?=
 =?iso-8859-1?Q?lAuaDHGCIGN/4sO0NY4UXaqrrP2U9dU=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: DU5PR03MB10263.eurprd03.prod.outlook.com
X-MS-Exchange-CrossTenant-Network-Message-Id: 3f01544f-a4c2-4cb4-548c-08de93fb0374
X-MS-Exchange-CrossTenant-originalarrivaltime: 06 Apr 2026 16:39:02.8147
 (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: r+T6ILgFiPZcq8QGPHZEArH8ZYKRUqb/ZZ5Tk9l1TvC70OfSArMYhyz1eGiJGPmxr3wBH5jGIVxQAFbPC9Ds8hLTNaOApo0SdGGwUiZduew=
X-MS-Exchange-Transport-CrossTenantHeadersStamped: AM9PR03MB6817
X-purgate-ID: tlsNG-16d1c6/1775493545-5E9323D8-ECE35C10/0/0
X-purgate-type: clean
X-purgate-size: 6139

Plumb the SCMI SMC multi-agent type through the toolstack:

- Extend libxl_arm_sci_type enumeration with scmi_smc_multiagent (value 2)
- Add agent_id field to libxl_arm_sci structure for per-domain agent assign=
ment
- Update libxl_arm.c to translate libxl config to XEN_DOMCTL_CONFIG_ARM_SCI=
_SCMI_SMC_MA
  and pass agent_id to the hypervisor via xen_domctl_createdomain
- Add xl.cfg parsing for arm_sci=3D"type=3Dscmi_smc_multiagent,agent_id=3DN=
"
- Document the new xl.cfg options in xl.cfg.5.pod.in

This completes the userspace side of multi-agent SCMI, allowing xl create
and dom0less configurations to assign unique agent_id values to domains.

Signed-off-by: Grygorii Strashko <grygorii_strashko@epam.com>
Signed-off-by: Oleksii Moisieiev <oleksii_moisieiev@epam.com>
---

Changes in v11:
- Fix agent_id documentation: clarify it applies to SCMI SMC
multi-agent support only, not plain SCMI SMC (reviewer feedback)
- Remove "non-zero" from agent_id description to match accepted
range [0..254]
- Remove "UINT8_MAX (255) is treated as invalid" from user
documentation as unnecessary implementation detail
- Add LIBXL_HAVE_SCMI_SMC_MULTIAGENT feature macro in libxl.h to
advertise the new scmi_smc_multiagent type and agent_id field
- Add agent_id validation in
libxl__arch_domain_build_info_setdefault() to reject invalid values at
the libxl level, not only in xl

Changes in v10:
- Split hypervisor and toolstack changes into separate commits

 docs/man/xl.cfg.5.pod.in         | 13 +++++++++++++
 tools/include/libxl.h            |  8 ++++++++
 tools/libs/light/libxl_arm.c     | 13 +++++++++++++
 tools/libs/light/libxl_types.idl |  4 +++-
 tools/xl/xl_parse.c              | 12 ++++++++++++
 5 files changed, 49 insertions(+), 1 deletion(-)

diff --git a/docs/man/xl.cfg.5.pod.in b/docs/man/xl.cfg.5.pod.in
index 27c455210b..f642558892 100644
--- a/docs/man/xl.cfg.5.pod.in
+++ b/docs/man/xl.cfg.5.pod.in
@@ -3156,8 +3156,21 @@ single SCMI OSPM agent support.
 Should be used together with B<scmi-smc-passthrough> Xen command line
 option.
=20
+=3Ditem B<scmi_smc_multiagent>
+
+Enables ARM SCMI SMC multi-agent support for the guest by enabling SCMI ov=
er
+SMC calls forwarding from domain to the EL3 firmware (like Trusted Firmwar=
e-A)
+with a multi SCMI OSPM agent support. The SCMI B<agent_id> should be
+specified for the guest.
+
 =3Dback
=20
+=3Ditem B<agent_id=3DNUMBER>
+
+Specifies an ARM SCI agent id for the guest. This option is mandatory
+if the SCMI SMC multi-agent support is enabled for the guest. The agent id=
s of
+domains existing on a single host must be unique and in the range [0..254]=
.
+
 =3Dback
=20
 =3Dback
diff --git a/tools/include/libxl.h b/tools/include/libxl.h
index bc35e412da..99f2734447 100644
--- a/tools/include/libxl.h
+++ b/tools/include/libxl.h
@@ -318,6 +318,14 @@
  */
 #define LIBXL_HAVE_BUILDINFO_ARCH_ARM_SCI 1
=20
+/*
+ * LIBXL_HAVE_SCMI_SMC_MULTIAGENT indicates that the
+ * LIBXL_ARM_SCI_TYPE_SCMI_SMC_MULTIAGENT value is available in the
+ * libxl_arm_sci_type enumeration and the agent_id field is available
+ * in the libxl_arm_sci structure.
+ */
+#define LIBXL_HAVE_SCMI_SMC_MULTIAGENT 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 e4407d6e3f..3adb90c286 100644
--- a/tools/libs/light/libxl_arm.c
+++ b/tools/libs/light/libxl_arm.c
@@ -240,6 +240,10 @@ int libxl__arch_domain_prepare_config(libxl__gc *gc,
     case LIBXL_ARM_SCI_TYPE_SCMI_SMC:
         config->arch.arm_sci_type =3D XEN_DOMCTL_CONFIG_ARM_SCI_SCMI_SMC;
         break;
+    case LIBXL_ARM_SCI_TYPE_SCMI_SMC_MULTIAGENT:
+        config->arch.arm_sci_type =3D XEN_DOMCTL_CONFIG_ARM_SCI_SCMI_SMC_M=
A;
+        config->arch.arm_sci_agent_id =3D d_config->b_info.arch_arm.arm_sc=
i.agent_id;
+        break;
     default:
         LOG(ERROR, "Unknown ARM_SCI type %d",
             d_config->b_info.arch_arm.arm_sci.type);
@@ -1837,6 +1841,15 @@ int libxl__arch_domain_build_info_setdefault(libxl__=
gc *gc,
         }
     }
=20
+    /* Sanitise ARM SCI agent_id parameter */
+    if (b_info->arch_arm.arm_sci.type =3D=3D LIBXL_ARM_SCI_TYPE_SCMI_SMC_M=
ULTIAGENT &&
+        b_info->arch_arm.arm_sci.agent_id >=3D UINT8_MAX) {
+        LOG(ERROR,
+            "Invalid ARM SCI agent_id: %u. Valid range is [0..254]",
+            b_info->arch_arm.arm_sci.agent_id);
+        return ERROR_FAIL;
+    }
+
     if (b_info->type !=3D LIBXL_DOMAIN_TYPE_PV)
         return 0;
=20
diff --git a/tools/libs/light/libxl_types.idl b/tools/libs/light/libxl_type=
s.idl
index 4a958f69f4..9bfbf09145 100644
--- a/tools/libs/light/libxl_types.idl
+++ b/tools/libs/light/libxl_types.idl
@@ -554,11 +554,13 @@ libxl_sve_type =3D Enumeration("sve_type", [
=20
 libxl_arm_sci_type =3D Enumeration("arm_sci_type", [
     (0, "none"),
-    (1, "scmi_smc")
+    (1, "scmi_smc"),
+    (2, "scmi_smc_multiagent")
     ], init_val =3D "LIBXL_ARM_SCI_TYPE_NONE")
=20
 libxl_arm_sci =3D Struct("arm_sci", [
     ("type", libxl_arm_sci_type),
+    ("agent_id", uint8)
     ])
=20
 libxl_rdm_reserve =3D Struct("rdm_reserve", [
diff --git a/tools/xl/xl_parse.c b/tools/xl/xl_parse.c
index 1cc41f1bff..2f1b475022 100644
--- a/tools/xl/xl_parse.c
+++ b/tools/xl/xl_parse.c
@@ -1306,6 +1306,18 @@ static int parse_arm_sci_config(XLU_Config *cfg, lib=
xl_arm_sci *arm_sci,
             }
         }
=20
+        if (MATCH_OPTION("agent_id", ptr, oparg)) {
+            unsigned long val =3D parse_ulong(oparg);
+
+            if ( val >=3D UINT8_MAX ) {
+                fprintf(stderr, "An invalid ARM_SCI agent_id specified (%l=
u). Valid range [0..254]\n",
+                        val);
+                ret =3D ERROR_INVAL;
+                goto out;
+            }
+            arm_sci->agent_id =3D val;
+        }
+
         ptr =3D strtok(NULL, ",");
     }
=20
--=20
2.43.0


From xen-devel-bounces@lists.xenproject.org Mon Apr 06 16:39:14 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 06 Apr 2026 16:39:14 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1274261.1560469 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1w9myk-0003Qw-2W; Mon, 06 Apr 2026 16:39:10 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1274261.1560469; Mon, 06 Apr 2026 16: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 1w9myj-0003QN-Tf; Mon, 06 Apr 2026 16:39:09 +0000
Received: by outflank-mailman (input) for mailman id 1274261;
 Mon, 06 Apr 2026 16:39:08 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <Oleksii_Moisieiev@epam.com>) id 1w9myh-0002gs-PI
 for xen-devel@lists.xenproject.org; Mon, 06 Apr 2026 16:39:08 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1w9myh-001MTX-4W
 for xen-devel@lists.xenproject.org; Mon, 06 Apr 2026 18:39:07 +0200
Received: from [10.42.69.6] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <Oleksii_Moisieiev@epam.com>)
 id 69d3e1a7-bab6-0a2a0a5309dd-0a2a4506d52e-20
 for <xen-devel@lists.xenproject.org>; Mon, 06 Apr 2026 18:39:07 +0200
Received: from [52.101.66.107]
 (helo=DUZPR83CU001.outbound.protection.outlook.com)
 by tlsNG-16d1c6.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.0)
 (envelope-from <Oleksii_Moisieiev@epam.com>)
 id 69d3e1a8-0df0-0a2a45060019-3465426b20b6-7
 for <xen-devel@lists.xenproject.org>; Mon, 06 Apr 2026 18:39:07 +0200
Received: from DU5PR03MB10263.eurprd03.prod.outlook.com (2603:10a6:10:519::5)
 by AM9PR03MB6817.eurprd03.prod.outlook.com (2603:10a6:20b:2df::15)
 with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9769.18; Mon, 6 Apr
 2026 16:39:04 +0000
Received: from DU5PR03MB10263.eurprd03.prod.outlook.com
 ([fe80::8c9e:b301:61c0:3908]) by DU5PR03MB10263.eurprd03.prod.outlook.com
 ([fe80::8c9e:b301:61c0:3908%5]) with mapi id 15.20.9769.020; Mon, 6 Apr 2026
 16:39:03 +0000
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@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=a1oZMidpPjdOw5gxUJDWBbr0lTHE/IKnzqSxpAbO7D5yia0RjqqfyJrBntZYZV5t8A9zCq36Fz272TSnfBqD2xY1w1MkfbinpfRA4hzvtw7F6fjWViPacuoJ4YDApwn3biXojNBaPG1kzutrypY8JCh4pQMFiYRBruhAiELG1SzQkA788NmCl7jOVUav9pBc3b2COEwbSz9puH6XgodrpllsZ0uBsMH4vex4jA8tsrDM/o+Hj5d5ZF3Ivv/MnZqvjFRdcBGSxSPX3b9MoDDRhYeuABpMzWPMOwneOyuzr5aHrrHnfi484XA6eYLqvt+sJagcPhLtY6Tp9CwqIxGFvw==
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com;
 s=arcselector10001;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1;
 bh=f5VLDzjGdXZ3fBMESadikUu6melFUxWISeZNonumRnY=;
 b=F7pcvFR+oPWAzUXPBeKeapkWgzuR2mJw+jopy6d6kXtaOhHn0AZN12VrBRmXkl7ihvSO6yBepvYpT2XtSZU4hgkyO5aX21/2vRGLkVR/FhPXMx19QefmFYlL/Ck89V4q02GlIT3XiiYWTa7qSURHgKtxB1TZBtV5pjODvJLs20pVRMl7SA1lmRgXFM2rJ7ZMiM17qIQokpSZ5EvA+gPGwmTqaH8KIu+NxOyyK3g9RhSeZCWKmDfu9zF37ya8Iccy9dj/wKpsYe9E3hXsLpypvSMaAPTF+T72PRBjdh0eRFStheNGR7FECuScejtwz6e6lNyklb/XqGkh3hoevg0qkQ==
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=f5VLDzjGdXZ3fBMESadikUu6melFUxWISeZNonumRnY=;
 b=bzDqsYmChoFaM3gFjHMQ7cPcjMQlGG2T/xcuq9lErmfzrDR6MqSleyxRgW9tWo7kCZDMBEjVR5PbrsQlbqccTme/nlmSXgn/SrH9SieKDKxed7+lXsw4pjTfTmFwbz+T1cam32g8J/Qkn4vQ5bVbYm57qKsnyn1gkVXHJ1ihlgtvE8ZSOcymu10KYdvNdJqNBeLiWi1hJ8Ly/Zg+O2UA4SIa9/JwTq89t4fh8ZRfMrBUpPEVj7sZI4zXUc7oRoMdW/f1aED2uC6zo7Wc/10Vh9Lv4/9IQvd6/DYESdqEcEsAf+JhUDngt5Mr6v65OhPctK8R01zXiMmrcMfQAWPNzA==
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>, =?iso-8859-1?Q?Roger_Pau_Monn=E9?=
	<roger.pau@citrix.com>, Stefano Stabellini <sstabellini@kernel.org>,
	Volodymyr Babchuk <Volodymyr_Babchuk@epam.com>, Grygorii Strashko
	<grygorii_strashko@epam.com>
Subject: [PATCH v11 6/6] docs: arm: add SCI SCMI SMC multi-agent driver docs
Thread-Topic: [PATCH v11 6/6] docs: arm: add SCI SCMI SMC multi-agent driver
 docs
Thread-Index: AQHcxePg8VbDB6v4I0eoLzYE9bLpPA==
Date: Mon, 6 Apr 2026 16:39:03 +0000
Message-ID:
 <0b50a7075ced262c57f0daa6e9e272566d417625.1775493499.git.oleksii_moisieiev@epam.com>
References: <cover.1775493499.git.oleksii_moisieiev@epam.com>
In-Reply-To: <cover.1775493499.git.oleksii_moisieiev@epam.com>
Accept-Language: en-US
Content-Language: en-US
X-MS-Has-Attach:
X-MS-TNEF-Correlator:
authentication-results: dkim=none (message not signed)
 header.d=none;dmarc=none action=none header.from=epam.com;
x-ms-publictraffictype: Email
x-ms-traffictypediagnostic: DU5PR03MB10263:EE_|AM9PR03MB6817:EE_
x-ms-office365-filtering-correlation-id: 39c805a7-70d5-447a-a831-08de93fb0394
x-ms-exchange-senderadcheck: 1
x-ms-exchange-antispam-relay: 0
x-microsoft-antispam:
 BCL:0;ARA:13230040|1800799024|7416014|376014|366016|18002099003|38070700021|22082099003|56012099003;
x-microsoft-antispam-message-info:
 LJgTbQ2RKGKp2/Ym1Ajuw/lm4NXiHvU9dpAscMfonAApcFspSYhC7mVfaQ3vDzzmZxayITJGNb2+8v26Ygc8hSik/zsmsswyrcTjnCndUb/BRNVY2nYqo0+aNFw4RFlZrjHUF7NOBOwjplEe1pt0rQke0KckYeAPKLjxdAnDWkW55cuNP/2DntlJWKkLIpGvWDYtwJcf3vC5FP4uQfwx5+4r+hiluRPMvYz+U3+njE6WMy0VvN7zg5KwMZEafFXBns5pP8HpRTP5ofjWjqT1O5jfZv8cZ0V/8RbbgRdDN6MeL5o4DoSoiSqraUH5rvBMwag0+Ig90I6+E9BGqtmOK7/3ozd5Wb1hJ5FL+ZiGzNn7yfUxdLDqOwY5lasWb4z5OS5ywhJKGACklNGSYPPWePfZBTMQAWk9K6+0nuGBe23/NX5+bPjoIiYCcBaui5fBwL5sG9wBLuu3dKQQgjpdICgcJaMDpr/4Fv9+LNJp3M4+pAAkpBLx2spkzkzz9pm2wgmBPXdI0oicgQevLEHkxhFvI4rydAnmr4vNMeOBVbXJ7bjej255SlIypyI9ugzbL64OeKVHThqiXipSjnP0T/e3tHxzltb1v3h631nb1DPaxSdgM+qUe5E5llvXFvLtwHv+airol+V/ARgmDYTdy/h4Oy6V4Eizy/wlcdJgjIun4GJZcL34xlxyUof3dw3/k2tfP5XUlJiumcsA9B+x3sft7cObO+p5kt8jSApGxqkW8jo4JgsrhrM5fnWqYy9x
x-forefront-antispam-report:
 CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:DU5PR03MB10263.eurprd03.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(1800799024)(7416014)(376014)(366016)(18002099003)(38070700021)(22082099003)(56012099003);DIR:OUT;SFP:1102;
x-ms-exchange-antispam-messagedata-chunkcount: 1
x-ms-exchange-antispam-messagedata-0:
 =?iso-8859-1?Q?IeiNj5Y1uO9nHFe2t3NomSv4z9+Rt9bPKHB8dohRWOtTTEdV2UClkNKPVb?=
 =?iso-8859-1?Q?mIC0AX/dHFyJgIIaS0OS9b3EXRsAOFfU5ylxxlxXn2QFkWLWQVKQJ9iq8g?=
 =?iso-8859-1?Q?FpG6iqbrFF3Vwog0K3i9X97coAZL7UKxRbXT1P62+kg9u0injLER9wKI7V?=
 =?iso-8859-1?Q?ueYnSIH0V5noHR5mp+S8LkBilSiQChbsth+Bh+nWaTmVLk7cLN8ohIdf/j?=
 =?iso-8859-1?Q?6XJWEnGblGfbOt2P85BTvghOFxVBwbuTTts2dkVW151COSIVwUq2uAmTM+?=
 =?iso-8859-1?Q?jguGVaHbveElyY5EzAoYEs3YPu1Et8Ru3eXklgNLJeKBN72Asb0Wp91aGf?=
 =?iso-8859-1?Q?lJtJRyVrjtGiG9VKK60ZYDBgxibErGsDCFXcb7Gyl9gdtSOR0yNp2/aIeV?=
 =?iso-8859-1?Q?8/GEH9QYeCAnlioFpinWwRhce2FnWTNqj1sDAR4rNTmiA0W2QxpErfmYeB?=
 =?iso-8859-1?Q?WIbRVyA8rdJbTSUAVSUBcVq4ReCGiSXuXgQsKLhp8xui+8svAtTnRUqv7y?=
 =?iso-8859-1?Q?eUHRhjwbKEL2v4ODz1cJFFiuxN5eRCQVYwgGonC6440kNJhpBddWcZCzUp?=
 =?iso-8859-1?Q?sPRslTkeTryaqL9/tTD5UgDd82KCH4YU1KpBjhPR2crikqtIvO3fDtzVW3?=
 =?iso-8859-1?Q?D1O3EliECQmRTQxpVZd7JM1tptCh+DrxPPuQIm1B+C6YoARwglMEqZ8u2A?=
 =?iso-8859-1?Q?z67pZjJrMstQg49438k/Y0/VrelRO0IJ9UoXB8ZXGfn4aptqkNUODMBmzU?=
 =?iso-8859-1?Q?d7NRL8+q1TDfgTTodtWR/FENWT29LGPy3GtucukpGayGsJF+RuBMIz3bLw?=
 =?iso-8859-1?Q?gwrbrCdtlpZTScehvO5ViZYdd3OBEy1rmFpxr9k2tP489Eb/HjlPpYkv16?=
 =?iso-8859-1?Q?SlEucXTAPFTX7E0udP1P2VljY18O90v/saI7ppdnU+IOVfSB41VGJWhcHb?=
 =?iso-8859-1?Q?pNHis0PLG70Bd02wKEg8BUupLhIxcS0l/gTjDVuUMm0Q6tWiDvye1GjrJr?=
 =?iso-8859-1?Q?Rw7CvFgl5ftW0IoOBOUEPRalEUtNUY38Ho7sn1NIAEeOwPzrtmU5lfrEb2?=
 =?iso-8859-1?Q?6neFKgpM96y4V1iB46Vcp9Z4755E3adAIvhHyZc1upgYbqosTSKpf/JFIG?=
 =?iso-8859-1?Q?YVoziJlVHLDHTWOs6DBa854NoGUdBnQJafFROuyhBBY7bwf4Me8a6USvsV?=
 =?iso-8859-1?Q?vrIoe/e00WfCCyj/0XleHf3jUVAf7iVzlM9Pc3HOXmEskVnBuo5wsfhdUC?=
 =?iso-8859-1?Q?BLexO1zeVcsMD+IGXdzGO1phbVwQuFy21Nz0xY6vqqNxOK3rKOq6cZ1r8p?=
 =?iso-8859-1?Q?PSjrpcZwsz87XG/kzcvreCkkjYwjdS6z7TE5tAB6JRhwJjc5JSOOG4Y/TZ?=
 =?iso-8859-1?Q?aGn4vjHmBGqAHmgVW3y9Mm1Q9Xl+OvJmz0OMukOedYbSAt2UxyhJGkxFNd?=
 =?iso-8859-1?Q?mB1ibIdSRFcXpzhL8YFlZRGySVVqRGIU0EMVMuhJQ064FtQFRB5t3N3U0G?=
 =?iso-8859-1?Q?Ro4NVa6CRT6sIZQN8jxFIs1c7jXpLtqqy/CbmwSK68bW9GhQrm6NPTkRJ4?=
 =?iso-8859-1?Q?ATAF2sXDf2hW96l1ZPrHMyaM+gitq8NC/CsIzy35CNL8xtCzs2+fNIwok3?=
 =?iso-8859-1?Q?1xMbLmdjEWbnLD68CKGzfaDQixNG0kqmn2zTooGiq1luO5Hbe1qMzEgPQq?=
 =?iso-8859-1?Q?/J8Sd8RzdJ+59iI6B4ppuK8+E1OT5a6hfjxEBeLXL8T5o1ZKAhMFFa5Jcj?=
 =?iso-8859-1?Q?MgenClCTCsUYoyVHZo3DSWHdqkntMHhJyjq8MZj0SopK4H4GolJOQ2Kklm?=
 =?iso-8859-1?Q?mFoUQ0gLVz+Ua6IgCa9tOZBI/dm1M0c=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: DU5PR03MB10263.eurprd03.prod.outlook.com
X-MS-Exchange-CrossTenant-Network-Message-Id: 39c805a7-70d5-447a-a831-08de93fb0394
X-MS-Exchange-CrossTenant-originalarrivaltime: 06 Apr 2026 16:39:03.1460
 (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: ThfrslhLI5Ix7SFWuhhmSh3EsMN0XzQRrSEqjRuOBsYufoB/ArqztpYI2zoJqSw2JohoQu8CsR9I8U6YqfuUf/H3EOxKR2/g97YgK/yXMdM=
X-MS-Exchange-Transport-CrossTenantHeadersStamped: AM9PR03MB6817
X-purgate-ID: tlsNG-16d1c6/1775493547-5E12E3D8-633038CC/0/0
X-purgate-type: clean
X-purgate-size: 18936

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 v10)

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                 | 422 ++++++++++++++++++
 1 file changed, 422 insertions(+)

diff --git a/docs/hypervisor-guide/arm/firmware/arm-scmi.rst b/docs/hypervi=
sor-guide/arm/firmware/arm-scmi.rst
index d9698f4e4b..8791bc665e 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 availabl=
e for Xen.
=20
 | [1] `Arm SCMI <https://developer.arm.com/documentation/den0056/latest/>`=
_
 | [2] `System Control and Management Interface (SCMI) bindings <https://we=
b.git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/tree/Documenta=
tion/devicetree/bindings/firmware/arm,scmi.yaml>`_
+| [3] `Generic Domain Access Controllers bindings <https://web.git.kernel.=
org/pub/scm/linux/kernel/git/torvalds/linux.git/tree/Documentation/devicetr=
ee/bindings/access-controllers/access-controllers.yaml>`_
+
=20
 Simple SCMI over SMC calls forwarding driver (EL3)
 ------------------------------------------------------
@@ -189,3 +191,423 @@ except explicitly enabling SCMI with "arm_sci" xl.cfg=
 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 Firmwa=
re-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-m=
emory 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 _P=
AGE_DEVICE, indicating that this
+  memory is mapped as device memory.
+
+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  a=
llowed direct HW access.
+  At least one OSPM VM agent has to be provided by FW if HW is handled onl=
y by Dom0 or Driver Domain.
+
+The EL3 SCMI FW is expected to implement following Base protocol messages:
+
+- BASE_DISCOVER_AGENT (optional if agent_id was provided)
+- BASE_RESET_AGENT_CONFIGURATION (optional)
+- BASE_SET_DEVICE_PERMISSIONS (optional)
+
+The number of supported SCMI agents and their transport specifications are=
 SCMI FW implementation
+specific.
+
+Compiling with multi-agent support
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+To build with the SCMI SMC multi-agent driver support, enable Kconfig opti=
on:
+
+::
+
+    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_config`=
`
+  under ``/chosen/xen`` (for example ``/chosen/xen/xen_scmi_config/scmi``)=
.
+  Only one SCMI interface is supported. The SCMI configuration must live u=
nder
+  the Xen SCMI container ``xen,sci`` beneath ``/chosen``.
+  The Xen SCMI mediator will bind only to the "arm,scmi-smc" node that is =
a child of
+  this "xen,sci" container; any other "arm,scmi-smc" nodes (for example un=
der
+  "/firmware") are ignored to avoid stealing the host's SCMI OSPM instance=
.
+
+.. 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 smc-id
+          #address-cells =3D < 1>;
+          #size-cells =3D < 0>;
+          #access-controller-cells =3D < 1>;
+          shmem =3D <&scmi_shm_1>; <--- Xen management agent shmem
+        };
+
+.. 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. EL3
+   firmware enforces permissions per agent_id, so there is no conflict bet=
ween
+   Dom0 and Xen channels.
+
+- The driver obtains Xen specific SCMI Agent's configuration from the Host=
 DT, probes Agents and
+  builds SCMI Agents list. The Agents configuration is taken from "scmi-se=
condary-agents"
+  property where first item is "arm,smc-id", second - "arm,scmi-shmem" pha=
ndle and third is
+  optional "agent_id":
+
+.. code-block:: dts
+
+    chosen {
+      ranges; <--- set default ranges so address can be translated when pa=
rsing scmi_shm node
+      xen {
+        ranges;
+        xen_scmi_config {
+          compatible =3D "xen,sci";
+          #address-cells =3D <2>;
+          #size-cells =3D <2>;
+          ranges; <--- set default ranges so address can be translated whe=
n parsing scmi_shm node
+          scmi-secondary-agents =3D <
+                        0x82000002 &scmi_shm_0 0
+                        0x82000004 &scmi_shm_2 2
+                        0x82000005 &scmi_shm_3 3
+                        0x82000006 &scmi_shm_4 4>;
+          #scmi-secondary-agents-cells =3D <3>; <--- optional, default 3
+          xen,dom0-sci-agent-id =3D <0>;  /* Dom0 agent ID */
+
+          scmi_shm_0 : sram@47ff0000 {
+              compatible =3D "arm,scmi-shmem";
+              reg =3D <0x0 0x47ff0000 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_shm_4: sram@47ff4000 {
+              compatible =3D "arm,scmi-shmem";
+              reg =3D <0x0 0x47ff4000 0x0 0x1000>;
+          };
+
+          // Xen SCMI management channel
+          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 smc-i=
d
+              #address-cells =3D < 1>;
+              #size-cells =3D < 0>;
+              #access-controller-cells =3D < 1>;
+              shmem =3D <&scmi_shm_1>; <--- Xen management agent shmem
+          };
+        };
+      };
+    };
+
+    /{
+        // Host SCMI OSPM channel - provided to the Dom0 as is if SCMI ena=
bled for it
+        scmi_shm: 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>; <--- Host OSPM agent shmem
+
+                protocol@X{
+                };
+            };
+        };
+    };
+
+  This approach allows defining multiple SCMI Agents by adding Xen-specifi=
c properties under
+  the ``/chosen`` node to the Host Device Tree, leaving the main part unch=
anged. The Host DT
+  SCMI channel will be passed to Dom0.
+
+  The Xen management agent is described as a ``scmi_xen`` node under the `=
`xen,sci`` compatible node,
+  which is used by Xen to control other SCMI Agents in the system.
+
+  All secondary agents' configurations are provided in the ``scmi-secondar=
y-agents`` property with
+  an optional ``agent_id`` field.
+
+  The ``agent_id`` from the ``scmi-secondary-agents`` property is used to =
identify the agent in the
+  system and can be omitted by setting ``#scmi-secondary-agents-cells =3D =
<2>``, so the Secondary
+  Agents configuration will look like this:
+
+.. code-block:: dts
+
+    chosen {
+      xen {
+        xen_scmi_config {
+          compatible =3D "xen,sci";
+          scmi-secondary-agents =3D <
+                        0x82000002 &scmi_shm_0
+                        0x82000004 &scmi_shm_2
+                        0x82000005 &scmi_shm_3
+                        0x82000006 &scmi_shm_4>;
+          #scmi-secondary-agents-cells =3D <2>;
+        };
+      };
+    }
+
+  In this case, Xen will use the ``SCMI_BASE_DISCOVER_AGENT`` call to disc=
over the ``agent_id``
+  for each secondary agent. Providing the ``agent_id`` in the ``scmi-secon=
dary-agents`` property
+  allows skipping the discovery call, which is useful when the secondary a=
gent's shared memory is
+  not accessible by Xen or when boot time is important because it allows s=
kipping the agent
+  discovery procedure.
+
+.. note::
+
+    Note that Xen is the only one entry in the system which need to know a=
bout SCMI multi-agent support.
+
+- The driver implements the SCI subsystem interface required for configuri=
ng and enabling SCMI
+  functionality for Dom0/hwdom and Guest domains. To enable SCMI functiona=
lity for guest domain
+  it has to be configured with unique supported SCMI Agent_id and use corr=
esponding 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/gets SCMI message in/from shmem;
+  - the guest triggers SMC exception with agent "smc-id" (doorbell);
+  - the Xen driver catches exception, do checks and synchronously forwards=
 it to EL3 FW.
+
+- the Xen driver sends BASE_RESET_AGENT_CONFIGURATION message to Xen manag=
ement agent channel on
+  domain destroy event. This allows to reset resources used by domain and =
so implement use-case
+  like domain reboot.
+
+
+Configure SCMI for Dom0
+^^^^^^^^^^^^^^^^^^^^^^^
+Set the Dom0 SCMI agent ID in the device tree using the Xen SCMI container=
 under ``/chosen``.
+Add ``xen,dom0-sci-agent-id`` to the ``xen,sci`` node. If the property is =
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 */
+        /* scmi-secondary-agents and scmi_xen as shown above */
+      };
+    };
+  };
+
+The Host DT ``/firmware/scmi`` node is copied to the Dom0 DT unmodified. H=
owever, for Dom0 SCMI
+configuration, Xen actually relies on ``scmi-secondary-agents`` and ``xen,=
dom0-sci-agent-id``
+properties 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, the =
Dom0 SCMI agent will not
+be configured.
+
+.. note::
+
+  The ``xen,dom0-sci-agent-id`` value must match the ``func_id`` and ``shm=
em`` pairing provided by
+  the EL3 firmware for Dom0 (for example in the ``/firmware/scmi`` node).
+
+Configure SCMI for for guest domain with toolstack
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+* 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 shou=
ld 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 shared-=
memory.
+
+* 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:
+
+.. 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" provider =
function in case
+EL3 SCMI FW implements SCMI "4.2.1.1 Device specific access control" and p=
rovides the
+BASE_SET_DEVICE_PERMISSIONS command to configure the devices that an agent=
s have access to.
+The Host DT SCMI node should have "#access-controller-cells=3D<1>" propert=
y 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 from =
toolstack to the guest:
+
+::
+
+    dtdev =3D [
+        "/soc/i2c@e6508000",
+    ]
+
+.. note::
+
+    xl.cfg:"dtdev" need contain all nodes which are under SCMI management =
(not only those which are
+    behind IOMMU) and passed-through to the guest domain.
+
+Configure SCMI for predefined domains (dom0less)
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+* 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 as =
above (toolstack case) and
+  enable access to the "arm,scmi-shmem" according to the dom0less document=
ation. 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 gue=
st partial DT according to
+  the dom0less documentation and ensure that devices SCMI management has "=
xen,path" property set:
+
+Example (dom0less, multi-agent):
+
+.. code-block:: dts
+
+  chosen {
+    xen {
+      ranges;
+      xen_scmi_config {
+        compatible =3D "xen,sci";
+        #address-cells =3D <2>;
+        #size-cells =3D <2>;
+        ranges;
+
+        /* Xen management channel shared memory */
+        scmi_shm_1: sram@47ff1000 {
+          compatible =3D "arm,scmi-shmem";
+          reg =3D <0x0 0x47ff1000 0x0 0x1000>;
+        };
+
+        scmi_shm_domu: sram@47ff2000 {
+          compatible =3D "arm,scmi-shmem";
+          reg =3D <0x0 0x47ff2000 0x0 0x1000>;
+        };
+
+        scmi-secondary-agents =3D <
+          0x82000004 &scmi_shm_domu 2>;
+        #scmi-secondary-agents-cells =3D <3>;
+
+        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>;
+        };
+      };
+    };
+
+    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;
+        };
--=20
2.43.0


From xen-devel-bounces@lists.xenproject.org Mon Apr 06 17:46:18 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 06 Apr 2026 17:46:18 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1274337.1560478 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1w9o1Q-0005fT-JL; Mon, 06 Apr 2026 17:46:00 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1274337.1560478; Mon, 06 Apr 2026 17: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 1w9o1Q-0005fM-Gj; Mon, 06 Apr 2026 17:46:00 +0000
Received: by outflank-mailman (input) for mailman id 1274337;
 Mon, 06 Apr 2026 17:45:59 +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 1w9o1P-0005fG-Su
 for xen-devel@lists.xenproject.org; Mon, 06 Apr 2026 17:45:59 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1w9o1N-00GmLw-M8
 for xen-devel@lists.xenproject.org; Mon, 06 Apr 2026 19:45:59 +0200
Received: from [10.42.69.10] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <sstabellini@kernel.org>)
 id 69d3f123-2eae-0a2a0a5409dd-0a2a450aa396-46
 for <xen-devel@lists.xenproject.org>; Mon, 06 Apr 2026 19:45:58 +0200
Received: from [172.105.4.254] (helo=tor.source.kernel.org)
 by tlsNG-4011c0.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.0)
 (envelope-from <sstabellini@kernel.org>)
 id 69d3f155-ee98-0a2a450a0019-ac6904febf76-3
 for <xen-devel@lists.xenproject.org>; Mon, 06 Apr 2026 19:45:58 +0200
Received: from smtp.kernel.org (transwarp.subspace.kernel.org [100.75.92.58])
 by tor.source.kernel.org (Postfix) with ESMTP id 06B3960103;
 Mon,  6 Apr 2026 17:45:57 +0000 (UTC)
Received: by smtp.kernel.org (Postfix) with ESMTPSA id E3A70C4CEF7;
 Mon,  6 Apr 2026 17:45: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=k20201202 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/simple; d=kernel.org;
	s=k20201202; t=1775497556;
	bh=eGWDO6+7WjkWzY6Nuvk55mQI2p6QMYb3HOtGf9ZPtvs=;
	h=Date:From:To:cc:Subject:In-Reply-To:References:From;
	b=hUoM9ayNjSVoFMJafY8c5o6aAvUJb/dRfyfVfa9S9mwp4NqtU+js5Y3gVVoICyhyv
	 Arw9WZw193LcuzHf4v0Zbc4ovk11fUbqcWx59M3vbvYoquPnBXUrzbQFShQsznjNxE
	 b8rcoh1/+vDJnJQc+cIcMFjBKHFNlk5DHKM3nTj6tBQSTfRnG9+tbWv0kJuMF75W23
	 iRVbRHKq0aJTgHoTKWSd3d2qhDq+B5U7yGz1NOoduP/aGfPTW1sVsZHzEnnAa+tInQ
	 SA+sZK/dRcPRjiF4SIuGLFvICDGgbw1flUV4Mo60kWTqAd/uATN0RV8ms07d3Z47Cc
	 kUTMIxPcVLbXw==
Date: Mon, 6 Apr 2026 10:45:54 -0700 (PDT)
From: Stefano Stabellini <sstabellini@kernel.org>
X-X-Sender: sstabellini@ubuntu-linux-20-04-desktop
To: Pengpeng Hou <pengpeng@iscas.ac.cn>
cc: Stefano Stabellini <sstabellini@kernel.org>, 
    xen-devel@lists.xenproject.org, linux-arm-kernel@lists.infradead.org, 
    linux-kernel@vger.kernel.org, jgross@suse.com
Subject: Re: [PATCH v2] ARM: xen: validate hypervisor compatible before
 parsing its version
In-Reply-To: <20260405094005.5-arm-xen-v2-pengpeng@iscas.ac.cn>
Message-ID: <alpine.DEB.2.22.394.2604061045310.2873990@ubuntu-linux-20-04-desktop>
References: <20260403111502.2-dt-arm-xen-pengpeng@iscas.ac.cn> <20260405094005.5-arm-xen-v2-pengpeng@iscas.ac.cn>
User-Agent: Alpine 2.22 (DEB 394 2020-01-19)
MIME-Version: 1.0
Content-Type: text/plain; charset=US-ASCII
X-purgate-ID: tlsNG-4011c0/1775497558-0F7470B1-931AE95D/0/0
X-purgate-type: clean
X-purgate-size: 2139

On Sun, 5 Apr 2026, Pengpeng Hou wrote:
> fdt_find_hyper_node() reads the raw compatible property and then derives
> hyper_node.version from a prefix match before later printing it with %s.
> Flat DT properties are external boot input, and this path does not prove
> that the first compatible entry is NUL-terminated within the returned
> property length.
> 
> Keep the existing flat-DT lookup path, but verify that the first
> compatible entry terminates within the returned property length before
> deriving the version suffix from it.
> 
> Signed-off-by: Pengpeng Hou <pengpeng@iscas.ac.cn>

Reviewed-by: Stefano Stabellini <sstabellini@kernel.org>


> ---
> Changes since v1:
> - keep `of_get_flat_dt_prop()` instead of switching to `fdt_stringlist_get()`
> - validate the first compatible entry with bounded `strnlen()`
> 
>  arch/arm/xen/enlighten.c | 9 ++++++---
>  1 file changed, 6 insertions(+), 3 deletions(-)
> 
> diff --git a/arch/arm/xen/enlighten.c b/arch/arm/xen/enlighten.c
> index 4feed2c2..25a0ce3b 100644
> --- a/arch/arm/xen/enlighten.c
> +++ b/arch/arm/xen/enlighten.c
> @@ -218,8 +218,9 @@ static __initdata struct {
>  static int __init fdt_find_hyper_node(unsigned long node, const char *uname,
>  				      int depth, void *data)
>  {
> -	const void *s = NULL;
> +	const char *s = NULL;
>  	int len;
> +	size_t prefix_len = strlen(hyper_node.prefix);
>  
>  	if (depth != 1 || strcmp(uname, "hypervisor") != 0)
>  		return 0;
> @@ -228,9 +229,10 @@ static int __init fdt_find_hyper_node(unsigned long node, const char *uname,
>  		hyper_node.found = true;
>  
>  	s = of_get_flat_dt_prop(node, "compatible", &len);
> -	if (strlen(hyper_node.prefix) + 3  < len &&
> -	    !strncmp(hyper_node.prefix, s, strlen(hyper_node.prefix)))
> -		hyper_node.version = s + strlen(hyper_node.prefix);
> +	if (s && len > 0 && strnlen(s, len) < len &&
> +	    len > prefix_len + 3 &&
> +	    !strncmp(hyper_node.prefix, s, prefix_len))
> +		hyper_node.version = s + prefix_len;
>  
>  	/*
>  	 * Check if Xen supports EFI by checking whether there is the
> -- 
> 2.50.1
> 


From xen-devel-bounces@lists.xenproject.org Mon Apr 06 19:12:29 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 06 Apr 2026 19:12:29 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1274354.1560495 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1w9pN5-0008Mh-P5; Mon, 06 Apr 2026 19:12:27 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1274354.1560495; Mon, 06 Apr 2026 19:12: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 1w9pN5-0008Ma-LF; Mon, 06 Apr 2026 19:12:27 +0000
Received: by outflank-mailman (input) for mailman id 1274354;
 Mon, 06 Apr 2026 19:12:26 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <Stewart.Hildebrand@amd.com>) id 1w9pN4-0008MF-7o
 for xen-devel@lists.xenproject.org; Mon, 06 Apr 2026 19:12:26 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1w9pN3-009Kc1-K4
 for xen-devel@lists.xenproject.org; Mon, 06 Apr 2026 21:12:25 +0200
Received: from [10.42.69.5] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <Stewart.Hildebrand@amd.com>)
 id 69d40582-e002-0a2a0a5209dd-0a2a45058d60-20
 for <xen-devel@lists.xenproject.org>; Mon, 06 Apr 2026 21:12:25 +0200
Received: from [40.93.198.62]
 (helo=CY7PR03CU001.outbound.protection.outlook.com)
 by tlsNG-c201ff.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.0)
 (envelope-from <Stewart.Hildebrand@amd.com>)
 id 69d40597-3760-0a2a45050019-285dc63ef092-3
 for <xen-devel@lists.xenproject.org>; Mon, 06 Apr 2026 21:12:24 +0200
Received: from DS7PR03CA0309.namprd03.prod.outlook.com (2603:10b6:8:2b::7) by
 DS0PR12MB6462.namprd12.prod.outlook.com (2603:10b6:8:c6::19) with
 Microsoft
 SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id
 15.20.9769.17; Mon, 6 Apr 2026 19:12:18 +0000
Received: from DS1PEPF0001708F.namprd03.prod.outlook.com
 (2603:10b6:8:2b:cafe::e0) by DS7PR03CA0309.outlook.office365.com
 (2603:10b6:8:2b::7) with Microsoft SMTP Server (version=TLS1_3,
 cipher=TLS_AES_256_GCM_SHA384) id 15.20.9769.32 via Frontend Transport; Mon,
 6 Apr 2026 19:12:18 +0000
Received: from satlexmb08.amd.com (165.204.84.17) by
 DS1PEPF0001708F.mail.protection.outlook.com (10.167.17.139) with Microsoft
 SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id
 15.20.9769.17 via Frontend Transport; Mon, 6 Apr 2026 19:12:18 +0000
Received: from SATLEXMB03.amd.com (10.181.40.144) by satlexmb08.amd.com
 (10.181.42.217) with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.2.2562.17; Mon, 6 Apr
 2026 14:12:17 -0500
Received: from satlexmb07.amd.com (10.181.42.216) by SATLEXMB03.amd.com
 (10.181.40.144) with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2507.39; Mon, 6 Apr
 2026 14:12:17 -0500
Received: from ubuntu (10.180.168.240) by satlexmb07.amd.com (10.181.42.216)
 with Microsoft SMTP Server id 15.2.2562.17 via Frontend Transport; Mon, 6 Apr
 2026 14:12:11 -0500
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@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=t1GOYhZ8tP/oqiH0UvNBT0K7kPyIK9ZMqoGeu6FpFzKW9M/rw3bh7wviACN+Jb5XWeMKYve2AqW7zJ1lwm/MBo7MI6uDpTFHPIg7fux/DJ/x5rPBsEN3T+iq5YdPAgsHugQUXLLF/p27OEn3vWvmk44+DT/2xgkmqyEScExnO+OSRWEd9lvNWxLl06ilMUuqLBdF75oKdHibeB6yFq+CQ4jxO7NM83z7u+DqS2t6WrK7rXJ/DdPinX+7xZOpEPmXOedAQJNz65wjy0/S0dxzYKyC3ZXXQaa/DYLQbiq518AJo1jclDwg1T/ZVIiZCL5hel1Y/AzJ1hJIf5ukONJ0SQ==
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com;
 s=arcselector10001;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1;
 bh=ra0J8gfBg1ZPmN06zQ8IQV2sjcgKKaR6kipA1wOf7Yw=;
 b=Xvra5h38lFH4ejAL0a9ggRqzbF9jf5/kJHgiJpWPsTpTg4SG0ZWFZGYviIHOmHPKxypArMDdihOzd707YX/l92DeZHW/qzRQuQJLSgtwxwy2eddQtf5UHm/zS8lTQGbUkRszoVcINcjoSbu1qY0v0vguISTmWsY0IPw8k0wNnI9Nq4i7sWG0NyaHjYfAzLbOGgHfWC/I1h+MOs+6YyfDl7JTncw0SXp+SiLHtX++DaGsJOddd8ASUyf2CQV/hCwIc7sqKQsqAqUcIdg81muAmyzfpryU9MzZpHT3SP7dHVYqujPwoJxHbEViKfI0fUgrYYxX4NASk6B7Fs0A5onmEg==
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=ra0J8gfBg1ZPmN06zQ8IQV2sjcgKKaR6kipA1wOf7Yw=;
 b=j3ItKYMNF0u35UBn8d4soHMY8mEPWtSI6SxImv/xg+PRA7sdBLy52KD6IGU+WwJyqC3rttzuFVyZc+/4DXLE1qZcAAk+PR5hJe92vznco0xWC/2AqTpjhpshWeovjnt3R230CbomGBRT+YqNpylSMdpqKf6XAdDEhtfwr3+1848=
X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 165.204.84.17)
 smtp.mailfrom=amd.com; dkim=none (message not signed)
 header.d=none;dmarc=pass action=none header.from=amd.com;
Received-SPF: Pass (protection.outlook.com: domain of amd.com designates
 165.204.84.17 as permitted sender) receiver=protection.outlook.com;
 client-ip=165.204.84.17; helo=satlexmb08.amd.com; pr=C
From: Stewart Hildebrand <stewart.hildebrand@amd.com>
To: <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>, =?UTF-8?q?Roger=20Pau=20Monn=C3=A9?=
	<roger.pau@citrix.com>, Stefano Stabellini <sstabellini@kernel.org>, "Stewart
 Hildebrand" <stewart.hildebrand@amd.com>, Mykyta Poturai
	<mykyta_poturai@epam.com>
Subject: [PATCH v4 1/4] vpci: Use pervcpu ranges for BAR mapping
Date: Mon, 6 Apr 2026 15:11:55 -0400
Message-ID: <20260406191203.97662-2-stewart.hildebrand@amd.com>
X-Mailer: git-send-email 2.53.0
In-Reply-To: <20260406191203.97662-1-stewart.hildebrand@amd.com>
References: <20260406191203.97662-1-stewart.hildebrand@amd.com>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit
Content-Type: text/plain
Received-SPF: None (SATLEXMB03.amd.com: stewart.hildebrand@amd.com does not
 designate permitted sender hosts)
X-EOPAttributedMessage: 0
X-MS-PublicTrafficType: Email
X-MS-TrafficTypeDiagnostic: DS1PEPF0001708F:EE_|DS0PR12MB6462:EE_
X-MS-Office365-Filtering-Correlation-Id: fa5b2dc2-93e2-4b79-286e-08de94106bfa
X-MS-Exchange-SenderADCheck: 1
X-MS-Exchange-AntiSpam-Relay: 0
X-Microsoft-Antispam:
	BCL:0;ARA:13230040|1800799024|376014|82310400026|36860700016|22082099003|18002099003|56012099003|13003099007;
X-Microsoft-Antispam-Message-Info:
	LdFq5eGKg4P8fg+IDLyDQXwpB/GiiYoz+MSXZtijDN+YZ6KBFXs3IaJo1a9G4fUxD4FjOPFXlhxU0FnQwZAWIpwHQ3xdXj1Zus49dydoMzhyFqoUn6LP9kJl2kBvDkHgsEYvls9YVWsN5OBPA/Q7OV1p8EcaCxC87oim5jMeL418PqACiQdBtCv4lv6pUft+veHwnWUPez0I3+CxAzaRs8hSJPKeJUgFqpoOwYCC92pXwJsC5mkJFO/Vrng7kxsjeK/Ta2JzBnHd6fo/fjLS5mVGsj1HT9LRYEAAVcLO3FyqKjGrr69/NFiuwriGLFahXMDopUXSerxg7FhsY6DF3RHbxKt5gpHSiZ7NavVFZhlnYqpRlqLK44hSYXamQSyCblOmQcgrqNuwvJ+NSnrIriqmIbpBIeHh/NseRFe0x82qaNayRyiJWRcDs1Eb+kZ2YOC3VI1A28CVICBap0AkNz5CdgmAooAt71Cir/cODqlzkuJTLakNCPMIm71fHpvFmEo4gtk1psfFpO+JzPai9GITwbcGoSg8fgDgyzMBbxEkQ/JpByKuCbjPo/WV0I/iwr6BEkMugFa373MIDnajmDosPaWoOUY8PRPDmbQ34e8YFwqUJtVJ+6uiT3IWcB2TjdKybsWZ3uzbvFVpX3BjATzVrkTHkmhy4/pjaaB+lOvdAJ4AGvChCmcWNWYzoiKCYRkdeGNpUsuulI538REdiaun/tQ3jJmZfShlvsCjIMk=
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)(82310400026)(36860700016)(22082099003)(18002099003)(56012099003)(13003099007);DIR:OUT;SFP:1101;
X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1
X-MS-Exchange-AntiSpam-MessageData-0:
	+uxT6HA7v7tEkDnHfXeiG84qUZrlP6mWQ5AT6sEZt4UAHyztezm7l6e/JwFLRQQ5R8fjnZS5lFseEK7egxjF+SfnuD9em73GkuTExtmnEP2Lkdxh991pbpgYTIzi4Xk0fdrYxPhIXICSag0ti9sL/Sc8AH8/9wnzDQZocvFaleobSqdAG10IyFkr0bRknT/3If63RTheryU8X8tCHcTZn8lz/87jZsWVWTtOCDQyZ4/X5uai/IR2mf8R7wSAZQUoIeRWjR1UmoGk+hY+qNLYARjEBi+M1GT/FzMYgzFR/FCVUTgai2Mcm1zdrhoVKQ2FTTbjnzYFmC7VE2CK8+VOuE7J/DIos/xNZpgNfmxSjcm7AmYyxK2zAHi11G3Fw4sjGQ5VRiPlXJ3JvsNgjqadp6AS6voHANapLjEckabxIEueaxEmK79Sw0Yfjswgv9Kg
X-OriginatorOrg: amd.com
X-MS-Exchange-CrossTenant-OriginalArrivalTime: 06 Apr 2026 19:12:18.4559
 (UTC)
X-MS-Exchange-CrossTenant-Network-Message-Id: fa5b2dc2-93e2-4b79-286e-08de94106bfa
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:
	DS1PEPF0001708F.namprd03.prod.outlook.com
X-MS-Exchange-CrossTenant-AuthAs: Anonymous
X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem
X-MS-Exchange-Transport-CrossTenantHeadersStamped: DS0PR12MB6462
X-purgate-ID: tlsNG-c201ff/1775502745-3053396F-03571682/0/0
X-purgate-type: clean
X-purgate-size: 13875

From: Mykyta Poturai <Mykyta_Poturai@epam.com>

There is no need to store ranges for each PCI device, as they are only
used during the mapping/unmapping process and can be reused for each
device. This also allows to avoid the need to allocate and destroy
rangesets for each device.

Move the rangesets from struct vpci_bar to struct vpci_vcpu and perform
(de-)allocation with vcpu (de-)allocation. Introduce RANGESET_DESTROY()
macro to free a rangeset and set the pointer to NULL.

Amends: 622bdd962822 ("vpci/header: handle p2m range sets per BAR")
Signed-off-by: Mykyta Poturai <mykyta_poturai@epam.com>
Signed-off-by: Stewart Hildebrand <stewart.hildebrand@amd.com>
---
It seems a bit awkward to introduce various vpci vcpu alloc/dealloc
functions here only to undo most of it in the next patch. Thoughts on
folding the next patch into this one?

v3->v4:
* no change

v2->v3:
* new patch in this series, borrowed from [1]
* add Amends tag
* remove unused variable i due to rebasing over 998060dd9101 ("vPCI:
  move vpci_init_capabilities() to a separate file")
* enclose entire struct vpci_vcpu inside #ifdef __XEN__
* s/bar_mem/mem/
* use ARRAY_SIZE
* put init/destroy in functions
* only allocate for domains with vPCI and idle domain
* replace 'if ( !mem ) continue;' with ASSERT

v1->v2 (in SR-IOV series [1]):
* new patch

[1] https://lore.kernel.org/xen-devel/cover.1772806036.git.mykyta_poturai@epam.com/T/#t
---
 xen/common/domain.c        |  5 +++
 xen/drivers/vpci/header.c  | 67 ++++++++++++++------------------------
 xen/drivers/vpci/vpci.c    | 36 +++++++++++++++++---
 xen/include/xen/rangeset.h |  7 ++++
 xen/include/xen/vpci.h     | 10 ++++--
 5 files changed, 75 insertions(+), 50 deletions(-)

diff --git a/xen/common/domain.c b/xen/common/domain.c
index bb9e210c2895..5ef7db8f0960 100644
--- a/xen/common/domain.c
+++ b/xen/common/domain.c
@@ -455,6 +455,8 @@ static int vcpu_teardown(struct vcpu *v)
  */
 static void vcpu_destroy(struct vcpu *v)
 {
+    vpci_vcpu_destroy(v);
+
     free_vcpu_struct(v);
 }
 
@@ -512,6 +514,9 @@ struct vcpu *vcpu_create(struct domain *d, unsigned int vcpu_id)
     if ( arch_vcpu_create(v) != 0 )
         goto fail_sched;
 
+    if ( vpci_vcpu_init(v) )
+        goto fail_sched;
+
     d->vcpu[vcpu_id] = v;
     if ( vcpu_id != 0 )
     {
diff --git a/xen/drivers/vpci/header.c b/xen/drivers/vpci/header.c
index a760d8c32fd6..89dce932f3b1 100644
--- a/xen/drivers/vpci/header.c
+++ b/xen/drivers/vpci/header.c
@@ -196,6 +196,7 @@ bool vpci_process_pending(struct vcpu *v)
     for ( i = 0; i < ARRAY_SIZE(header->bars); i++ )
     {
         struct vpci_bar *bar = &header->bars[i];
+        struct rangeset *mem = v->vpci.mem[i];
         struct map_data data = {
             .d = v->domain,
             .map = v->vpci.cmd & PCI_COMMAND_MEMORY,
@@ -203,10 +204,10 @@ bool vpci_process_pending(struct vcpu *v)
         };
         int rc;
 
-        if ( rangeset_is_empty(bar->mem) )
+        if ( rangeset_is_empty(mem) )
             continue;
 
-        rc = rangeset_consume_ranges(bar->mem, map_range, &data);
+        rc = rangeset_consume_ranges(mem, map_range, &data);
 
         if ( rc == -ERESTART )
         {
@@ -224,8 +225,8 @@ bool vpci_process_pending(struct vcpu *v)
 
             /* Clean all the rangesets */
             for ( i = 0; i < ARRAY_SIZE(header->bars); i++ )
-                if ( !rangeset_is_empty(header->bars[i].mem) )
-                     rangeset_purge(header->bars[i].mem);
+                if ( !rangeset_is_empty(v->vpci.mem[i]) )
+                     rangeset_purge(v->vpci.mem[i]);
 
             v->vpci.pdev = NULL;
 
@@ -260,13 +261,14 @@ static int __init apply_map(struct domain *d, const struct pci_dev *pdev,
     for ( i = 0; i < ARRAY_SIZE(header->bars); i++ )
     {
         struct vpci_bar *bar = &header->bars[i];
+        struct rangeset *mem = current->vpci.mem[i];
         struct map_data data = { .d = d, .map = true, .bar = bar };
 
-        if ( rangeset_is_empty(bar->mem) )
+        if ( rangeset_is_empty(mem) )
             continue;
 
-        while ( (rc = rangeset_consume_ranges(bar->mem, map_range,
-                                              &data)) == -ERESTART )
+        while ( (rc = rangeset_consume_ranges(mem, map_range, &data)) ==
+                -ERESTART )
         {
             /*
              * It's safe to drop and reacquire the lock in this context
@@ -331,13 +333,13 @@ static int modify_bars(const struct pci_dev *pdev, uint16_t cmd, bool rom_only)
     for ( i = 0; i < ARRAY_SIZE(header->bars); i++ )
     {
         struct vpci_bar *bar = &header->bars[i];
+        struct rangeset *mem = current->vpci.mem[i];
         unsigned long start = PFN_DOWN(bar->addr);
         unsigned long end = PFN_DOWN(bar->addr + bar->size - 1);
         unsigned long start_guest = PFN_DOWN(bar->guest_addr);
         unsigned long end_guest = PFN_DOWN(bar->guest_addr + bar->size - 1);
 
-        if ( !bar->mem )
-            continue;
+        ASSERT(mem);
 
         if ( !MAPPABLE_BAR(bar) ||
              (rom_only ? bar->type != VPCI_BAR_ROM
@@ -354,7 +356,7 @@ static int modify_bars(const struct pci_dev *pdev, uint16_t cmd, bool rom_only)
             continue;
         }
 
-        ASSERT(rangeset_is_empty(bar->mem));
+        ASSERT(rangeset_is_empty(mem));
 
         /*
          * Make sure that the guest set address has the same page offset
@@ -369,7 +371,7 @@ static int modify_bars(const struct pci_dev *pdev, uint16_t cmd, bool rom_only)
             return -EINVAL;
         }
 
-        rc = rangeset_add_range(bar->mem, start_guest, end_guest);
+        rc = rangeset_add_range(mem, start_guest, end_guest);
         if ( rc )
         {
             printk(XENLOG_G_WARNING "Failed to add [%lx, %lx]: %d\n",
@@ -380,12 +382,12 @@ static int modify_bars(const struct pci_dev *pdev, uint16_t cmd, bool rom_only)
         /* Check for overlap with the already setup BAR ranges. */
         for ( j = 0; j < i; j++ )
         {
-            struct vpci_bar *prev_bar = &header->bars[j];
+            struct rangeset *prev_mem = current->vpci.mem[j];
 
-            if ( rangeset_is_empty(prev_bar->mem) )
+            if ( rangeset_is_empty(prev_mem) )
                 continue;
 
-            rc = rangeset_remove_range(prev_bar->mem, start_guest, end_guest);
+            rc = rangeset_remove_range(prev_mem, start_guest, end_guest);
             if ( rc )
             {
                 gprintk(XENLOG_WARNING,
@@ -395,7 +397,7 @@ static int modify_bars(const struct pci_dev *pdev, uint16_t cmd, bool rom_only)
             }
         }
 
-        rc = pci_sanitize_bar_memory(bar->mem);
+        rc = pci_sanitize_bar_memory(mem);
         if ( rc )
         {
             gprintk(XENLOG_WARNING,
@@ -412,14 +414,14 @@ static int modify_bars(const struct pci_dev *pdev, uint16_t cmd, bool rom_only)
         unsigned long end = PFN_DOWN(vmsix_table_addr(pdev->vpci, i) +
                                      vmsix_table_size(pdev->vpci, i) - 1);
 
-        for ( j = 0; j < ARRAY_SIZE(header->bars); j++ )
+        for ( j = 0; j < ARRAY_SIZE(current->vpci.mem); j++ )
         {
-            const struct vpci_bar *bar = &header->bars[j];
+            struct rangeset *mem = current->vpci.mem[j];
 
-            if ( rangeset_is_empty(bar->mem) )
+            if ( rangeset_is_empty(mem) )
                 continue;
 
-            rc = rangeset_remove_range(bar->mem, start, end);
+            rc = rangeset_remove_range(mem, start, end);
             if ( rc )
             {
                 gprintk(XENLOG_WARNING,
@@ -469,8 +471,9 @@ static int modify_bars(const struct pci_dev *pdev, uint16_t cmd, bool rom_only)
                 for ( j = 0; j < ARRAY_SIZE(header->bars); j++)
                 {
                     const struct vpci_bar *bar = &header->bars[j];
+                    struct rangeset *mem = current->vpci.mem[j];
 
-                    if ( !rangeset_overlaps_range(bar->mem, start, end) ||
+                    if ( !rangeset_overlaps_range(mem, start, end) ||
                          /*
                           * If only the ROM enable bit is toggled check against
                           * other BARs in the same device for overlaps, but not
@@ -481,7 +484,7 @@ static int modify_bars(const struct pci_dev *pdev, uint16_t cmd, bool rom_only)
                           bar->type == VPCI_BAR_ROM) )
                         continue;
 
-                    rc = rangeset_remove_range(bar->mem, start, end);
+                    rc = rangeset_remove_range(mem, start, end);
                     if ( rc )
                     {
                         gprintk(XENLOG_WARNING,
@@ -732,18 +735,6 @@ static void cf_check rom_write(
     }
 }
 
-static int bar_add_rangeset(const struct pci_dev *pdev, struct vpci_bar *bar,
-                            unsigned int i)
-{
-    char str[32];
-
-    snprintf(str, sizeof(str), "%pp:BAR%u", &pdev->sbdf, i);
-
-    bar->mem = rangeset_new(pdev->domain, str, RANGESETF_no_print);
-
-    return !bar->mem ? -ENOMEM : 0;
-}
-
 int vpci_init_header(struct pci_dev *pdev)
 {
     uint16_t cmd;
@@ -853,10 +844,6 @@ int vpci_init_header(struct pci_dev *pdev)
         else
             bars[i].type = VPCI_BAR_MEM32;
 
-        rc = bar_add_rangeset(pdev, &bars[i], i);
-        if ( rc )
-            goto fail;
-
         rc = pci_size_mem_bar(pdev->sbdf, reg, &addr, &size,
                               (i == num_bars - 1) ? PCI_BAR_LAST : 0);
         if ( rc < 0 )
@@ -909,12 +896,6 @@ int vpci_init_header(struct pci_dev *pdev)
                                4, rom);
         if ( rc )
             rom->type = VPCI_BAR_EMPTY;
-        else
-        {
-            rc = bar_add_rangeset(pdev, rom, num_bars);
-            if ( rc )
-                goto fail;
-        }
     }
     else if ( !is_hwdom )
     {
diff --git a/xen/drivers/vpci/vpci.c b/xen/drivers/vpci/vpci.c
index 0ac9ec8b0475..8e6343653078 100644
--- a/xen/drivers/vpci/vpci.c
+++ b/xen/drivers/vpci/vpci.c
@@ -24,6 +24,37 @@
 
 #ifdef __XEN__
 
+void vpci_vcpu_destroy(struct vcpu *v)
+{
+    unsigned int i;
+
+    if ( !has_vpci(v->domain) && !is_idle_domain(v->domain) )
+        return;
+
+    for ( i = 0; i < ARRAY_SIZE(v->vpci.mem); i++ )
+        RANGESET_DESTROY(v->vpci.mem[i]);
+}
+
+int vpci_vcpu_init(struct vcpu *v)
+{
+    unsigned int i;
+
+    if ( !has_vpci(v->domain) && !is_idle_domain(v->domain) )
+        return 0;
+
+    for ( i = 0; i < ARRAY_SIZE(v->vpci.mem); i++ )
+    {
+        char str[32];
+
+        snprintf(str, sizeof(str), "%pv:BAR%u", v, i);
+        v->vpci.mem[i] = rangeset_new(v->domain, str, RANGESETF_no_print);
+        if ( !v->vpci.mem[i] )
+            return -ENOMEM;
+    }
+
+    return 0;
+}
+
 #ifdef CONFIG_HAS_VPCI_GUEST_SUPPORT
 static int assign_virtual_sbdf(struct pci_dev *pdev)
 {
@@ -89,8 +120,6 @@ struct vpci_register *vpci_get_register(const struct vpci *vpci,
 
 void vpci_deassign_device(struct pci_dev *pdev)
 {
-    unsigned int i;
-
     ASSERT(rw_is_write_locked(&pdev->domain->pci_lock));
 
     if ( !has_vpci(pdev->domain) || !pdev->vpci )
@@ -116,9 +145,6 @@ void vpci_deassign_device(struct pci_dev *pdev)
     }
     spin_unlock(&pdev->vpci->lock);
 
-    for ( i = 0; i < ARRAY_SIZE(pdev->vpci->header.bars); i++ )
-        rangeset_destroy(pdev->vpci->header.bars[i].mem);
-
     xfree(pdev->vpci);
     pdev->vpci = NULL;
 }
diff --git a/xen/include/xen/rangeset.h b/xen/include/xen/rangeset.h
index 817505badf6f..f01e00ec9234 100644
--- a/xen/include/xen/rangeset.h
+++ b/xen/include/xen/rangeset.h
@@ -40,6 +40,13 @@ struct rangeset *rangeset_new(
 void rangeset_destroy(
     struct rangeset *r);
 
+/* Destroy a rangeset, and zero the pointer to it. */
+#define RANGESET_DESTROY(r)  \
+    ({                       \
+        rangeset_destroy(r); \
+        (r) = NULL;          \
+    })
+
 /*
  * Set a limit on the number of ranges that may exist in set @r.
  * NOTE: This must be called while @r is empty.
diff --git a/xen/include/xen/vpci.h b/xen/include/xen/vpci.h
index 877aa391d178..b55bacbe6e01 100644
--- a/xen/include/xen/vpci.h
+++ b/xen/include/xen/vpci.h
@@ -19,6 +19,9 @@
  */
 #define VPCI_MAX_VIRT_DEV       (PCI_SLOT(~0) + 1)
 
+void vpci_vcpu_destroy(struct vcpu *v);
+int vpci_vcpu_init(struct vcpu *v);
+
 /* Assign vPCI to device by adding handlers. */
 int __must_check vpci_assign_device(struct pci_dev *pdev);
 
@@ -54,7 +57,6 @@ struct vpci {
             uint64_t guest_addr;
             uint64_t size;
             uint64_t resizable_sizes;
-            struct rangeset *mem;
             enum {
                 VPCI_BAR_EMPTY,
                 VPCI_BAR_IO,
@@ -152,14 +154,15 @@ struct vpci {
 #endif
 };
 
+#ifdef __XEN__
 struct vpci_vcpu {
     /* Per-vcpu structure to store state while {un}mapping of PCI BARs. */
     const struct pci_dev *pdev;
+    struct rangeset *mem[ARRAY_SIZE(((struct vpci_header *)NULL)->bars)];
     uint16_t cmd;
     bool rom_only : 1;
 };
 
-#ifdef __XEN__
 void vpci_dump_msi(void);
 
 /* Arch-specific vPCI MSI helpers. */
@@ -204,6 +207,9 @@ bool vpci_ecam_read(pci_sbdf_t sbdf, unsigned int reg, unsigned int len,
 #else /* !CONFIG_HAS_VPCI */
 struct vpci_vcpu {};
 
+static inline void vpci_vcpu_destroy(struct vcpu *v) { }
+static inline int vpci_vcpu_init(struct vcpu *v) { return 0; }
+
 static inline int vpci_reinit_ext_capabilities(struct pci_dev *pdev)
 {
     return 0;
-- 
2.53.0



From xen-devel-bounces@lists.xenproject.org Mon Apr 06 19:12:30 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 06 Apr 2026 19:12:30 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1274353.1560487 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1w9pMt-00087l-G3; Mon, 06 Apr 2026 19:12:15 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1274353.1560487; Mon, 06 Apr 2026 19: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 1w9pMt-00087e-DA; Mon, 06 Apr 2026 19:12:15 +0000
Received: by outflank-mailman (input) for mailman id 1274353;
 Mon, 06 Apr 2026 19:12:14 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <Stewart.Hildebrand@amd.com>) id 1w9pMs-00087Y-Ka
 for xen-devel@lists.xenproject.org; Mon, 06 Apr 2026 19:12:14 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1w9pMr-009KXP-HV
 for xen-devel@lists.xenproject.org; Mon, 06 Apr 2026 21:12:13 +0200
Received: from [10.42.69.9] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <Stewart.Hildebrand@amd.com>)
 id 69d40552-e002-0a2a0a5209dd-0a2a450987de-24
 for <xen-devel@lists.xenproject.org>; Mon, 06 Apr 2026 21:12:12 +0200
Received: from [40.93.196.28]
 (helo=SA9PR02CU001.outbound.protection.outlook.com)
 by tlsNG-bad1c0.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.0)
 (envelope-from <Stewart.Hildebrand@amd.com>)
 id 69d4058b-bf79-0a2a45090019-285dc41c0ad0-4
 for <xen-devel@lists.xenproject.org>; Mon, 06 Apr 2026 21:12:12 +0200
Received: from BYAPR05CA0053.namprd05.prod.outlook.com (2603:10b6:a03:74::30)
 by DS4PR12MB9636.namprd12.prod.outlook.com (2603:10b6:8:27f::13) with
 Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9769.19; Mon, 6 Apr
 2026 19:12:08 +0000
Received: from SJ5PEPF000001F3.namprd05.prod.outlook.com
 (2603:10b6:a03:74:cafe::c2) by BYAPR05CA0053.outlook.office365.com
 (2603:10b6:a03:74::30) with Microsoft SMTP Server (version=TLS1_3,
 cipher=TLS_AES_256_GCM_SHA384) id 15.20.9769.27 via Frontend Transport; Mon,
 6 Apr 2026 19:12:07 +0000
Received: from satlexmb07.amd.com (165.204.84.17) by
 SJ5PEPF000001F3.mail.protection.outlook.com (10.167.242.71) with Microsoft
 SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id
 15.20.9769.17 via Frontend Transport; Mon, 6 Apr 2026 19:12:07 +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.17; Mon, 6 Apr
 2026 14:12:06 -0500
Received: from ubuntu (10.180.168.240) by satlexmb07.amd.com (10.181.42.216)
 with Microsoft SMTP Server id 15.2.2562.17 via Frontend Transport; Mon, 6 Apr
 2026 14:12:05 -0500
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@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=rSznalHPByixjzsq9Ww5S04nuq3NClccU0YogrdS0DrX+Yb48X+rKUSXOFKojiMklzwOq30hQH2tMzH3OF1ElO+fDxRPVRy5aPm+evcH9HoBUztj3RqaeO8HAC/vfyBVqFu1ru2X6KKdQufOuUOQSryfVeCujaa1SuJU08cEfURy6K/rqjdOd7zVlLQSdY4bGze5hoI5MoiCgdQ5BEiKMr5L4HRjnYDDVnIsSORWH6+v1SMIEYBZcB33yaJKTRbtfMRINyNOARVgJD2AOxayMXQ4hqtbWJ2emZx8lDbBmpm3eYc5FtC9fu8FZk52gIgKrHXvo+F7YNurC4Ais5xGFA==
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com;
 s=arcselector10001;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1;
 bh=MEBWTYo8FkagdqdlvFbt8pFDDrHaPNw6e1LsgXNGcnU=;
 b=hyr6xJtUVcpy5GykmHELYJQ1K6+mJvX/cugZdd65A/SOnST+pknqMYeYDA3s0WrOS2bAbbxgl/s1KJtlTcjMxMpwBDQdeEvKyozkIVQxPfec0FMEsoRKCufOpAislrAWrWSmEGXNVy7JQ23BZdaD11cdUVvjcpZoD3VnZo5pPmf04EkRD/5FqydBoY6Qb5glAV/HgOcKtDMMGWSbZRT/hCbkCvdHHI52SYxehyXbfRdb6cRkdZMTa0k+BClguA3/Uc/2SlSozPhXqESrr+ZXC7MYQ+e1NF2LOK36oJIpHGCVNfJiEKQdGKSCEeSJoeL3Sy6GZL5WL9AYujltL4xz0Q==
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=MEBWTYo8FkagdqdlvFbt8pFDDrHaPNw6e1LsgXNGcnU=;
 b=Lwcm3gXVC3XaxSccinJcLzzPDy4jBw3do2yN++uuv9wiutwQJyPRPl9oD0nDVWL/vsBpHffgEBgfSx2e4YmxjaagymVbeQdve3FvyFZe7W5kLSHaDPEqFDTHa/X246clZnmQbTf5Nmwiu0GWorzs3eJWsQSQCq4i5BYqkYbWrXA=
X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 165.204.84.17)
 smtp.mailfrom=amd.com; dkim=none (message not signed)
 header.d=none;dmarc=pass action=none header.from=amd.com;
Received-SPF: Pass (protection.outlook.com: domain of amd.com designates
 165.204.84.17 as permitted sender) receiver=protection.outlook.com;
 client-ip=165.204.84.17; helo=satlexmb07.amd.com; pr=C
From: Stewart Hildebrand <stewart.hildebrand@amd.com>
To: <xen-devel@lists.xenproject.org>
CC: Stewart Hildebrand <stewart.hildebrand@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>, =?UTF-8?q?Roger=20Pau=20Monn=C3=A9?=
	<roger.pau@citrix.com>, Stefano Stabellini <sstabellini@kernel.org>, "Mykyta
 Poturai" <Mykyta_Poturai@epam.com>
Subject: [PATCH v4 0/4] vpci: allow 32-bit BAR writes with memory decoding enabled
Date: Mon, 6 Apr 2026 15:11:54 -0400
Message-ID: <20260406191203.97662-1-stewart.hildebrand@amd.com>
X-Mailer: git-send-email 2.53.0
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit
Content-Type: text/plain
X-EOPAttributedMessage: 0
X-MS-PublicTrafficType: Email
X-MS-TrafficTypeDiagnostic: SJ5PEPF000001F3:EE_|DS4PR12MB9636:EE_
X-MS-Office365-Filtering-Correlation-Id: b2188676-22be-4a58-57c3-08de94106582
X-MS-Exchange-SenderADCheck: 1
X-MS-Exchange-AntiSpam-Relay: 0
X-Microsoft-Antispam:
	BCL:0;ARA:13230040|1800799024|82310400026|36860700016|376014|13003099007|18002099003|56012099003;
X-Microsoft-Antispam-Message-Info:
	V3WrIhzENCDAGrOM8jWQQMsfxnvo1sqVPey7SgQ2F0JMMCqV9NDL2eSlxLIRym071g/oDxczjIulA0CwVZg8DkpxwkJ6xurKxr+pvdjClDRdzk9qM0tmo+jwgnXcHI4ERfMVZDBQx5J2eCWWMN4HjXZtQkSXucvOacE9QvC1O0CS4/LkvVaaCK4kHJNngXK0gflUICFjXtT9gBUFHlbCaZF3DRSZrfNZujqtWsJ74sYidlvvxe37s9n1hyCywVWetbT/ReDwsjxwQ63YdFTAb3AlZlEdQfHrbt4239d76bKPVqHxAvD4Jvvf9zZVyY+43XZdiQub6GsZ+zGtB8QXVUw1+mUPBzeZ3n2vS2yd3pnvUtuckEoRB7VrwMk7W4hzml0Nl4LKGis3tfE4LoVVef/tl5CwremK368gGU0frvSGgX65IVMxeDmVksYnu4AxmYOy8K9TsE6q2k6OL9MpcoPAov/pH2y4W1IA5fJWgI3TrysamUosj/a4AowJq2yFPdHg6cJHzNQ8k3UK+nFGPM5xrhN6+P6IwIBPt8OS/HMlw2UrSsNdhabAIIMqqGrj7VREwwMP8Nsv7ZRyiaRC7viBT1ImBcYaXGqQLzioh80HF2a8ghbrAqT7WdXCwLsS3/K4r0meUmvAYHm9/CAcgn1xd0LUJuiOsIPGrvMZmqXjlmUDiFaGtVq9F2rtycetLwH5WKcY58o0SpsjAFxgEsy1Awm2ut4Q8ckWs25aVWk=
X-Forefront-Antispam-Report:
	CIP:165.204.84.17;CTRY:US;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:satlexmb07.amd.com;PTR:InfoDomainNonexistent;CAT:NONE;SFS:(13230040)(1800799024)(82310400026)(36860700016)(376014)(13003099007)(18002099003)(56012099003);DIR:OUT;SFP:1101;
X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1
X-MS-Exchange-AntiSpam-MessageData-0:
	bbo62p8cci/eNJ7YIDoo3F6a4eHHyALmEb5vRP+qR2H3MdA8s41RN5DNve2bOwBoEzRzLxYJX9c+T8hOi0gtyMdUnlN/af66ljQTwX9hTCOhvhrlugXCOtRya3/iMSgI68lk7sPAtj/rIfIXV7UCMXwFdf7JvN1dBHfelp83lgIS8LVwyRDAw9dD2ArOiHpQCY9rXIB/bgPuHV21f7xvv8+xX8aQFNQcIUw3nSpR2nLT4F/VVRengUsRSQE44JqtgYmR3O83D/2SvKG/r1g4bObQ/hraxbtp4RTECHTiEzIn6Xjd2dO4nnqlfwTanbdoL92ZMKKUtxRbBlgGtdtg0bEuGDYIkvaqJZPy5iWESU2Em3zjiwLcC7N2ndKaN8tuHxzviIsrLCqRJHxl8qF3gpAD/Cdn86GZKSC7T3CZBW9a5+Cn6PfY4PPjQVpN3GHW
X-OriginatorOrg: amd.com
X-MS-Exchange-CrossTenant-OriginalArrivalTime: 06 Apr 2026 19:12:07.5531
 (UTC)
X-MS-Exchange-CrossTenant-Network-Message-Id: b2188676-22be-4a58-57c3-08de94106582
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:
	SJ5PEPF000001F3.namprd05.prod.outlook.com
X-MS-Exchange-CrossTenant-AuthAs: Anonymous
X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem
X-MS-Exchange-Transport-CrossTenantHeadersStamped: DS4PR12MB9636
X-purgate-ID: tlsNG-bad1c0/1775502732-5D3F4152-F3D4ED97/0/0
X-purgate-type: clean
X-purgate-size: 1523

These 2 patches
  ("vpci: Use pervcpu ranges for BAR mapping")
  ("vpci: allow queueing of mapping operations")
are also pre-requisites for SR-IOV.

Pipeline: https://gitlab.com/xen-project/people/stewarthildebrand/xen/-/pipelines/2432615038

v3->v4:
* switch back to dynamically allocated queue elements

v2->v3:
* add ("vpci: Use pervcpu ranges for BAR mapping")
* rework with fixed array of map/unmap slots

v1->v2:
* new approach with queued p2m operations

RFC->v1:
* rework BAR mapping machinery to support unmap-then-map operation

v3: https://lore.kernel.org/xen-devel/20260324030513.700217-1-stewart.hildebrand@amd.com/T/#t
v2: https://lore.kernel.org/xen-devel/20250723163744.13095-1-stewart.hildebrand@amd.com/T/#t
v1: https://lore.kernel.org/xen-devel/20250531125405.268984-1-stewart.hildebrand@amd.com/T/#t
RFC: https://lore.kernel.org/xen-devel/20250312195019.382926-1-stewart.hildebrand@amd.com/T/#t

Mykyta Poturai (1):
  vpci: Use pervcpu ranges for BAR mapping

Stewart Hildebrand (3):
  vpci: allow queueing of mapping operations
  vpci: allow BAR map/unmap without affecting memory decoding bit
  vpci: allow 32-bit BAR writes with memory decoding enabled

 xen/common/domain.c       |   2 +
 xen/drivers/vpci/header.c | 333 ++++++++++++++++++++++++--------------
 xen/drivers/vpci/vpci.c   |  10 +-
 xen/include/xen/vpci.h    |  22 ++-
 4 files changed, 239 insertions(+), 128 deletions(-)


base-commit: 33ceaa28275ca4e298616689ef96f19efaa87c35
-- 
2.53.0



From xen-devel-bounces@lists.xenproject.org Mon Apr 06 19:12:37 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 06 Apr 2026 19:12:37 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1274358.1560505 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1w9pNF-0000HY-69; Mon, 06 Apr 2026 19:12:37 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1274358.1560505; Mon, 06 Apr 2026 19:12: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 1w9pNF-0000HR-32; Mon, 06 Apr 2026 19:12:37 +0000
Received: by outflank-mailman (input) for mailman id 1274358;
 Mon, 06 Apr 2026 19:12:35 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <Stewart.Hildebrand@amd.com>) id 1w9pND-0000GC-B9
 for xen-devel@lists.xenproject.org; Mon, 06 Apr 2026 19:12:35 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1w9pNC-001f2t-NL
 for xen-devel@lists.xenproject.org; Mon, 06 Apr 2026 21:12:34 +0200
Received: from [10.42.69.8] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <Stewart.Hildebrand@amd.com>)
 id 69d40580-2eae-0a2a0a5409dd-0a2a4508a27a-44
 for <xen-devel@lists.xenproject.org>; Mon, 06 Apr 2026 21:12:34 +0200
Received: from [52.101.53.59]
 (helo=BL0PR03CU003.outbound.protection.outlook.com)
 by tlsNG-c1860d.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.0)
 (envelope-from <Stewart.Hildebrand@amd.com>)
 id 69d405a0-fab6-0a2a45080019-3465353b4fad-4
 for <xen-devel@lists.xenproject.org>; Mon, 06 Apr 2026 21:12:34 +0200
Received: from SJ0PR03CA0225.namprd03.prod.outlook.com (2603:10b6:a03:39f::20)
 by PH0PR12MB5680.namprd12.prod.outlook.com (2603:10b6:510:146::8)
 with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9769.17; Mon, 6 Apr
 2026 19:12:25 +0000
Received: from SJ5PEPF000001F4.namprd05.prod.outlook.com
 (2603:10b6:a03:39f:cafe::b8) by SJ0PR03CA0225.outlook.office365.com
 (2603:10b6:a03:39f::20) with Microsoft SMTP Server (version=TLS1_3,
 cipher=TLS_AES_256_GCM_SHA384) id 15.20.9769.32 via Frontend Transport; Mon,
 6 Apr 2026 19:12:25 +0000
Received: from satlexmb07.amd.com (165.204.84.17) by
 SJ5PEPF000001F4.mail.protection.outlook.com (10.167.242.72) with Microsoft
 SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id
 15.20.9769.17 via Frontend Transport; Mon, 6 Apr 2026 19:12:25 +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.17; Mon, 6 Apr
 2026 14:12:24 -0500
Received: from ubuntu (10.180.168.240) by satlexmb07.amd.com (10.181.42.216)
 with Microsoft SMTP Server id 15.2.2562.17 via Frontend Transport; Mon, 6 Apr
 2026 14:12:23 -0500
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@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=vX/KcJpIrMDz8U5t+WAvcidI3IUiYIxR6xW6GnE7Oc9Um5bbcMH6cEVGhjHATt/dbkkk5mEUFuzdhJjpdiVWyki41cZa5vWxzIiDB54Rub3qdBYnt1XjKANqL6sobEI1631rh75yzQKzwlz82+a4krGoeLHUggxp0O3n7BwNuLbv3dIMtGk9PacS5HQl0N4cojI9yLcmnm4BUp390WbW1gZVcMjMoVCnJsHIRu7n7C8Eb9Mps5J1IuaLMFa0KtVc+LB1sUlon6fQUKHa5F6erIF6D27Rqkd/Qf/PhazXW+Hnmh//LZJiflpI+rpJpcMSBiLk/2jhbN3Al5IV33YhMg==
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com;
 s=arcselector10001;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1;
 bh=tdGllGUK8TiRaZWvVqFEsyu4uOoRMu93WYGtX/iLMdg=;
 b=W9iaZ3XVeboi4gxyZe8c5t31WiM4CIOaUdNzKnavKgoX613V3TVugFUbKw0I+KOHmGCwuBupiczYgE94tnS78YOfTCgf3XOQ53h3HWTGGfcZtXasXtuTSpVFsnSy5ijVOecDkiJHp3gzIL4S//YjAo5/s2L0IBmOMnc/FJ8WXTYsPR8ZGiPs4wsK12rclWIveIyxNUdF5P9w44RYy/EPDr3wv+6kBlZvhLoe+9Cv00ZRNnhkmlVexwJ7Yu5BNzMa2I5T6zPpwKAOC1oDacLoAm8ojMVhM3+AHzYO5a/JvJYbamaoyQ0oxzh8TD63qkPDnNvHFZr9+7skA3Zm713U7A==
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=tdGllGUK8TiRaZWvVqFEsyu4uOoRMu93WYGtX/iLMdg=;
 b=0qTb0+uRhafBHRHwVP9nqpl9R/tudSlOewmfMjhHbrxMjdVRYo39x5sV0MlxhfW91WZvZqxdigeZTjhYQ2ouXM7vKce2ayxMWMjxEbBvvY2mfA+x3feJB5o4D1sbw/A6jTRS5sKSteSNwB5MCqKZPtm+b9Bw7OXbLegjDwB6DOo=
X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 165.204.84.17)
 smtp.mailfrom=amd.com; dkim=none (message not signed)
 header.d=none;dmarc=pass action=none header.from=amd.com;
Received-SPF: Pass (protection.outlook.com: domain of amd.com designates
 165.204.84.17 as permitted sender) receiver=protection.outlook.com;
 client-ip=165.204.84.17; helo=satlexmb07.amd.com; pr=C
From: Stewart Hildebrand <stewart.hildebrand@amd.com>
To: <xen-devel@lists.xenproject.org>
CC: Stewart Hildebrand <stewart.hildebrand@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>, =?UTF-8?q?Roger=20Pau=20Monn=C3=A9?=
	<roger.pau@citrix.com>, Stefano Stabellini <sstabellini@kernel.org>, "Mykyta
 Poturai" <Mykyta_Poturai@epam.com>
Subject: [PATCH v4 2/4] vpci: allow queueing of mapping operations
Date: Mon, 6 Apr 2026 15:11:56 -0400
Message-ID: <20260406191203.97662-3-stewart.hildebrand@amd.com>
X-Mailer: git-send-email 2.53.0
In-Reply-To: <20260406191203.97662-1-stewart.hildebrand@amd.com>
References: <20260406191203.97662-1-stewart.hildebrand@amd.com>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit
Content-Type: text/plain
X-EOPAttributedMessage: 0
X-MS-PublicTrafficType: Email
X-MS-TrafficTypeDiagnostic: SJ5PEPF000001F4:EE_|PH0PR12MB5680:EE_
X-MS-Office365-Filtering-Correlation-Id: 26a4cc13-f6bd-41fc-fab9-08de9410700c
X-MS-Exchange-SenderADCheck: 1
X-MS-Exchange-AntiSpam-Relay: 0
X-Microsoft-Antispam:
	BCL:0;ARA:13230040|1800799024|36860700016|376014|82310400026|56012099003|18002099003|22082099003;
X-Microsoft-Antispam-Message-Info:
	FC/OqTwKNX2oTpQAloN/lICTIwv/HsgAhl7z3DzZ6VM3eFslz/MijlcOvBf4cWTnLquEFBT9WI84WzP/eWoXEaPwNWjGutv26StfewVIvFuvJGaBRWzra8mHHFNH9g3NM62vxIgUUyJHZybMW3veAAoNh2Jbb8W6OIPSswr2PqSYGa+huDDVrkpqpKjrHnqiZ3v5wDrFE7jldOtnTLjJ6QnDh8e5Z0ZaOkueHIkRHhZIJodlYMFbRvnELqp9/uKH71LvLu8SO9Zjjarm1zlWRE9sg8leGGQVFsN4g4zMvRKQXjGXjw6wXEpsmnC+/Pip1rsBcPXIo6581oGNdsF3LQInMPQakkVjyush0IgAONU9D4Y+qYNND4Bmsb796i7ML8psAe4qWkbsvgByE4Qt8uRgu6XERecptmr9AUB5/r1U9/VQFSzNKisyn8hhhDtb8BBZXkpsFfhWW1lEwxVDVRSnmWBpX/SjT6lEtZhETbKaFMoBBDNvdXNQt5S4FZD4Yyxs/pqBUVP0ZOlEvQRyDcSy7xneKUeoRXmfCRWHmkDT98xnuD3Sv0oeDG/PhQPlQ9AiHmwgBnwht+pLV6g+9dAd291saU0x64YX5MYkKJoApv+hnqcUCepT53jve1wg7EEPZd+yd1DgKdLoSAzHTIiqI/gCyHv/kMEHl289XZAI7ZakvP3GE4zJIOFOGo2Q/xw6kpTjlLvZ3lMOiDV5khxoiURcgSaafadp+YEgMUY=
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)(36860700016)(376014)(82310400026)(56012099003)(18002099003)(22082099003);DIR:OUT;SFP:1101;
X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1
X-MS-Exchange-AntiSpam-MessageData-0:
	3XvrUkjh8W/iUp+zpqbnOR7jk1qqNxFh0P3TE/VBbLTecE55CrOM+SvhH2GK1gQc3swr6BCluTSgLf0BifMfDt8aEevu2jHCGcOaj5qgliFoX2B653MXt/ujf5LodjdqT0EYHp2WycundMAQzqGwsYAGUEnZ0QDJsApKq9YFCfQUntzsiw0F+L9bubrtjZRPLn5wU+Fn6y+jb0B7BltOqUFHBWMh8BFdvH/GblidwYcDg589IMw3nY05WujJG3MgTHyw+a8iX+xGwi+D9cxQcaekp5TiwdsvnqbK/lywVWOrGkhpJMDLruHFaEOhDhHnDV6qtUOSjaCXN8xfXPexTNpDJH9atCSQy08EldURibHM4KjLkWtJpyCwZopuxMVESLGAPPytnzN2MACZA7ipu8Qlg5B+4jlyS/rjiOfmZS4KpVqA7RlAz0E55NM+A7m6
X-OriginatorOrg: amd.com
X-MS-Exchange-CrossTenant-OriginalArrivalTime: 06 Apr 2026 19:12:25.2126
 (UTC)
X-MS-Exchange-CrossTenant-Network-Message-Id: 26a4cc13-f6bd-41fc-fab9-08de9410700c
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:
	SJ5PEPF000001F4.namprd05.prod.outlook.com
X-MS-Exchange-CrossTenant-AuthAs: Anonymous
X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem
X-MS-Exchange-Transport-CrossTenantHeadersStamped: PH0PR12MB5680
X-purgate-ID: tlsNG-c1860d/1775502754-F5B54497-CB89D6D1/0/0
X-purgate-type: clean
X-purgate-size: 19758

Introduce vPCI BAR mapping task queue. Store information needed to
map/unmap BARs in struct vpci_map_task. Allow queueing of BAR map/unmap
operations in a list, thus making it possible to perform multiple p2m
operations associated with single PCI device.

This is preparatory work for further changes that need to perform
multiple unmap/map operations before returning to guest.

At the moment, only a single operation will be queued. However, when
multiple operations are queued, there is a check in modify_bars() to
skip BARs already in the requested state that will no longer be
accurate. Remove this check in preparation of upcoming changes.

Signed-off-by: Stewart Hildebrand <stewart.hildebrand@amd.com>
---
apply_map() and vpci_process_map_task() are very similar. Should we try
to combine them into a single function?

I concede that the dynamic allocation/deallocation of struct
vpci_map_task is not ideal. However, to support SR-IOV, there will be a
need to queue many mapping operations (one per VF), and statically
pre-allocating that much would seem wasteful. Only the hardware and/or
control domain would need to queue many operations, and only when
configuring SR-IOV.

v3->v4:
* switch back to dynamically allocated queue elements

v2->v3:
* base on ("vpci: Use pervcpu ranges for BAR mapping") from [1]
* rework with fixed array of map/unmap slots

[1] https://lore.kernel.org/xen-devel/cover.1772806036.git.mykyta_poturai@epam.com/T/#t

v1->v2:
* new patch
---
 xen/common/domain.c        |   5 +-
 xen/drivers/vpci/header.c  | 227 ++++++++++++++++++++++++++-----------
 xen/drivers/vpci/vpci.c    |  30 +----
 xen/include/xen/rangeset.h |   7 --
 xen/include/xen/vpci.h     |  21 ++--
 5 files changed, 179 insertions(+), 111 deletions(-)

diff --git a/xen/common/domain.c b/xen/common/domain.c
index 5ef7db8f0960..b1931be9870b 100644
--- a/xen/common/domain.c
+++ b/xen/common/domain.c
@@ -455,8 +455,6 @@ static int vcpu_teardown(struct vcpu *v)
  */
 static void vcpu_destroy(struct vcpu *v)
 {
-    vpci_vcpu_destroy(v);
-
     free_vcpu_struct(v);
 }
 
@@ -514,8 +512,7 @@ struct vcpu *vcpu_create(struct domain *d, unsigned int vcpu_id)
     if ( arch_vcpu_create(v) != 0 )
         goto fail_sched;
 
-    if ( vpci_vcpu_init(v) )
-        goto fail_sched;
+    vpci_vcpu_init(v);
 
     d->vcpu[vcpu_id] = v;
     if ( vcpu_id != 0 )
diff --git a/xen/drivers/vpci/header.c b/xen/drivers/vpci/header.c
index 89dce932f3b1..146915e28c50 100644
--- a/xen/drivers/vpci/header.c
+++ b/xen/drivers/vpci/header.c
@@ -23,6 +23,7 @@
 #include <xen/lib.h>
 #include <xen/sched.h>
 #include <xen/softirq.h>
+#include <xen/xvmalloc.h>
 
 #include <xsm/xsm.h>
 
@@ -35,7 +36,7 @@
 
 struct map_data {
     struct domain *d;
-    const struct vpci_bar *bar;
+    const struct vpci_bar_map *bar;
     bool map;
 };
 
@@ -174,32 +175,20 @@ static void modify_decoding(const struct pci_dev *pdev, uint16_t cmd,
         ASSERT_UNREACHABLE();
 }
 
-bool vpci_process_pending(struct vcpu *v)
+static int vpci_process_map_task(const struct pci_dev *pdev,
+                                 struct vpci_map_task *task)
 {
-    const struct pci_dev *pdev = v->vpci.pdev;
-    struct vpci_header *header = NULL;
     unsigned int i;
 
-    if ( !pdev )
-        return false;
-
-    read_lock(&v->domain->pci_lock);
-
-    if ( !pdev->vpci || (v->domain != pdev->domain) )
-    {
-        v->vpci.pdev = NULL;
-        read_unlock(&v->domain->pci_lock);
-        return false;
-    }
+    ASSERT(rw_is_locked(&pdev->domain->pci_lock));
 
-    header = &pdev->vpci->header;
-    for ( i = 0; i < ARRAY_SIZE(header->bars); i++ )
+    for ( i = 0; i < ARRAY_SIZE(task->bars); i++ )
     {
-        struct vpci_bar *bar = &header->bars[i];
-        struct rangeset *mem = v->vpci.mem[i];
+        struct vpci_bar_map *bar = &task->bars[i];
+        struct rangeset *mem = bar->mem;
         struct map_data data = {
-            .d = v->domain,
-            .map = v->vpci.cmd & PCI_COMMAND_MEMORY,
+            .d = pdev->domain,
+            .map = task->cmd & PCI_COMMAND_MEMORY,
             .bar = bar,
         };
         int rc;
@@ -210,58 +199,116 @@ bool vpci_process_pending(struct vcpu *v)
         rc = rangeset_consume_ranges(mem, map_range, &data);
 
         if ( rc == -ERESTART )
-        {
-            read_unlock(&v->domain->pci_lock);
-            return true;
-        }
+            return rc;
 
         if ( rc )
         {
             spin_lock(&pdev->vpci->lock);
             /* Disable memory decoding unconditionally on failure. */
-            modify_decoding(pdev, v->vpci.cmd & ~PCI_COMMAND_MEMORY,
-                            false);
+            modify_decoding(pdev, task->cmd & ~PCI_COMMAND_MEMORY, false);
             spin_unlock(&pdev->vpci->lock);
 
-            /* Clean all the rangesets */
-            for ( i = 0; i < ARRAY_SIZE(header->bars); i++ )
-                if ( !rangeset_is_empty(v->vpci.mem[i]) )
-                     rangeset_purge(v->vpci.mem[i]);
+            if ( !is_hardware_domain(pdev->domain) )
+                domain_crash(pdev->domain);
+
+            return rc;
+        }
+    }
+
+    spin_lock(&pdev->vpci->lock);
+    modify_decoding(pdev, task->cmd, task->rom_only);
+    spin_unlock(&pdev->vpci->lock);
+
+    return 0;
+}
+
+static void destroy_map_task(struct vpci_map_task *task)
+{
+    unsigned int i;
+
+    if ( !task )
+    {
+        ASSERT_UNREACHABLE();
+        return;
+    }
+
+    for ( i = 0; i < ARRAY_SIZE(task->bars); i++ )
+        rangeset_destroy(task->bars[i].mem);
+
+    xvfree(task);
+}
+
+static void clear_map_queue(struct vcpu *v)
+{
+    struct vpci_map_task *task;
+
+    while ( (task = list_first_entry_or_null(&v->vpci.task_queue,
+                                             struct vpci_map_task,
+                                             next)) != NULL )
+    {
+        list_del(&task->next);
+        destroy_map_task(task);
+    }
+}
+
+bool vpci_process_pending(struct vcpu *v)
+{
+    const struct pci_dev *pdev = v->vpci.pdev;
+    struct vpci_map_task *task;
 
-            v->vpci.pdev = NULL;
+    if ( !pdev )
+        return false;
 
+    read_lock(&v->domain->pci_lock);
+
+    if ( !pdev->vpci || (v->domain != pdev->domain) )
+    {
+        clear_map_queue(v);
+        v->vpci.pdev = NULL;
+        read_unlock(&v->domain->pci_lock);
+        return false;
+    }
+
+    while ( (task = list_first_entry_or_null(&v->vpci.task_queue,
+                                             struct vpci_map_task,
+                                             next)) != NULL )
+    {
+        int rc = vpci_process_map_task(pdev, task);
+
+        if ( rc == -ERESTART )
+        {
             read_unlock(&v->domain->pci_lock);
+            return true;
+        }
 
-            if ( !is_hardware_domain(v->domain) )
-                domain_crash(v->domain);
+        list_del(&task->next);
+        destroy_map_task(task);
 
-            return false;
+        if ( rc )
+        {
+            clear_map_queue(v);
+            break;
         }
     }
     v->vpci.pdev = NULL;
 
-    spin_lock(&pdev->vpci->lock);
-    modify_decoding(pdev, v->vpci.cmd, v->vpci.rom_only);
-    spin_unlock(&pdev->vpci->lock);
-
     read_unlock(&v->domain->pci_lock);
 
     return false;
 }
 
 static int __init apply_map(struct domain *d, const struct pci_dev *pdev,
-                            uint16_t cmd)
+                            struct vpci_map_task *task)
 {
-    struct vpci_header *header = &pdev->vpci->header;
     int rc = 0;
     unsigned int i;
 
     ASSERT(rw_is_write_locked(&d->pci_lock));
 
-    for ( i = 0; i < ARRAY_SIZE(header->bars); i++ )
+    for ( i = 0; i < ARRAY_SIZE(task->bars); i++ )
     {
-        struct vpci_bar *bar = &header->bars[i];
-        struct rangeset *mem = current->vpci.mem[i];
+        struct vpci_bar_map *bar = &task->bars[i];
+        struct rangeset *mem = bar->mem;
         struct map_data data = { .d = d, .map = true, .bar = bar };
 
         if ( rangeset_is_empty(mem) )
@@ -281,15 +328,52 @@ static int __init apply_map(struct domain *d, const struct pci_dev *pdev,
         }
     }
     if ( !rc )
-        modify_decoding(pdev, cmd, false);
+        modify_decoding(pdev, task->cmd, false);
 
     return rc;
 }
 
-static void defer_map(const struct pci_dev *pdev, uint16_t cmd, bool rom_only)
+static struct vpci_map_task *alloc_map_task(const struct pci_dev *pdev,
+                                            uint16_t cmd, bool rom_only)
+{
+    struct vpci_map_task *task;
+    unsigned int i;
+
+    task = xvzalloc(struct vpci_map_task);
+
+    if ( !task )
+        return NULL;
+
+    for ( i = 0; i < ARRAY_SIZE(task->bars); i++ )
+    {
+        if ( !MAPPABLE_BAR(&pdev->vpci->header.bars[i]) )
+            continue;
+
+        task->bars[i].mem = rangeset_new(pdev->domain, NULL,
+                                         RANGESETF_no_print);
+
+        if ( !task->bars[i].mem )
+        {
+            destroy_map_task(task);
+            return NULL;
+        }
+
+        task->bars[i].addr = pdev->vpci->header.bars[i].addr;
+        task->bars[i].guest_addr = pdev->vpci->header.bars[i].guest_addr;
+    }
+
+    task->cmd = cmd;
+    task->rom_only = rom_only;
+
+    return task;
+}
+
+static void defer_map(const struct pci_dev *pdev, struct vpci_map_task *task)
 {
     struct vcpu *curr = current;
 
+    ASSERT(!curr->vpci.pdev || curr->vpci.pdev == pdev);
+
     /*
      * FIXME: when deferring the {un}map the state of the device should not
      * be trusted. For example the enable bit is toggled after the device
@@ -297,8 +381,8 @@ static void defer_map(const struct pci_dev *pdev, uint16_t cmd, bool rom_only)
      * started for the same device if the domain is not well-behaved.
      */
     curr->vpci.pdev = pdev;
-    curr->vpci.cmd = cmd;
-    curr->vpci.rom_only = rom_only;
+    list_add_tail(&task->next, &curr->vpci.task_queue);
+
     /*
      * Raise a scheduler softirq in order to prevent the guest from resuming
      * execution with pending mapping operations, to trigger the invocation
@@ -313,11 +397,17 @@ static int modify_bars(const struct pci_dev *pdev, uint16_t cmd, bool rom_only)
     struct pci_dev *tmp;
     const struct domain *d;
     const struct vpci_msix *msix = pdev->vpci->msix;
+    struct vpci_map_task *task;
     unsigned int i, j;
     int rc;
 
     ASSERT(rw_is_write_locked(&pdev->domain->pci_lock));
 
+    task = alloc_map_task(pdev, cmd, rom_only);
+
+    if ( !task )
+        return -ENOMEM;
+
     /*
      * Create a rangeset per BAR that represents the current device memory
      * region and compare it against all the currently active BAR memory
@@ -333,19 +423,18 @@ static int modify_bars(const struct pci_dev *pdev, uint16_t cmd, bool rom_only)
     for ( i = 0; i < ARRAY_SIZE(header->bars); i++ )
     {
         struct vpci_bar *bar = &header->bars[i];
-        struct rangeset *mem = current->vpci.mem[i];
+        struct rangeset *mem = task->bars[i].mem;
         unsigned long start = PFN_DOWN(bar->addr);
         unsigned long end = PFN_DOWN(bar->addr + bar->size - 1);
         unsigned long start_guest = PFN_DOWN(bar->guest_addr);
         unsigned long end_guest = PFN_DOWN(bar->guest_addr + bar->size - 1);
 
-        ASSERT(mem);
+        if ( !mem )
+            continue;
 
         if ( !MAPPABLE_BAR(bar) ||
              (rom_only ? bar->type != VPCI_BAR_ROM
-                       : (bar->type == VPCI_BAR_ROM && !header->rom_enabled)) ||
-             /* Skip BARs already in the requested state. */
-             bar->enabled == !!(cmd & PCI_COMMAND_MEMORY) )
+                       : (bar->type == VPCI_BAR_ROM && !header->rom_enabled)) )
             continue;
 
         if ( !pci_check_bar(pdev, _mfn(start), _mfn(end)) )
@@ -368,7 +457,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(mem, start_guest, end_guest);
@@ -376,13 +466,13 @@ 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. */
         for ( j = 0; j < i; j++ )
         {
-            struct rangeset *prev_mem = current->vpci.mem[j];
+            struct rangeset *prev_mem = task->bars[j].mem;
 
             if ( rangeset_is_empty(prev_mem) )
                 continue;
@@ -393,7 +483,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;
             }
         }
 
@@ -403,7 +493,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;
         }
     }
 
@@ -414,9 +504,9 @@ static int modify_bars(const struct pci_dev *pdev, uint16_t cmd, bool rom_only)
         unsigned long end = PFN_DOWN(vmsix_table_addr(pdev->vpci, i) +
                                      vmsix_table_size(pdev->vpci, i) - 1);
 
-        for ( j = 0; j < ARRAY_SIZE(current->vpci.mem); j++ )
+        for ( j = 0; j < ARRAY_SIZE(task->bars); j++ )
         {
-            struct rangeset *mem = current->vpci.mem[j];
+            struct rangeset *mem = task->bars[j].mem;
 
             if ( rangeset_is_empty(mem) )
                 continue;
@@ -427,7 +517,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;
             }
         }
     }
@@ -471,7 +561,7 @@ static int modify_bars(const struct pci_dev *pdev, uint16_t cmd, bool rom_only)
                 for ( j = 0; j < ARRAY_SIZE(header->bars); j++)
                 {
                     const struct vpci_bar *bar = &header->bars[j];
-                    struct rangeset *mem = current->vpci.mem[j];
+                    struct rangeset *mem = task->bars[j].mem;
 
                     if ( !rangeset_overlaps_range(mem, start, end) ||
                          /*
@@ -490,7 +580,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;
                     }
                 }
             }
@@ -513,12 +603,19 @@ static int modify_bars(const struct pci_dev *pdev, uint16_t cmd, bool rom_only)
          * will always be to establish mappings and process all the BARs.
          */
         ASSERT((cmd & PCI_COMMAND_MEMORY) && !rom_only);
-        return apply_map(pdev->domain, pdev, cmd);
+        rc = apply_map(pdev->domain, pdev, task);
+        destroy_map_task(task);
+        return rc;
     }
 
-    defer_map(pdev, cmd, rom_only);
+    defer_map(pdev, task);
 
     return 0;
+
+ fail:
+    destroy_map_task(task);
+
+    return rc;
 }
 
 static void cf_check cmd_write(
diff --git a/xen/drivers/vpci/vpci.c b/xen/drivers/vpci/vpci.c
index 8e6343653078..ce9fb5b357ff 100644
--- a/xen/drivers/vpci/vpci.c
+++ b/xen/drivers/vpci/vpci.c
@@ -24,35 +24,9 @@
 
 #ifdef __XEN__
 
-void vpci_vcpu_destroy(struct vcpu *v)
+void vpci_vcpu_init(struct vcpu *v)
 {
-    unsigned int i;
-
-    if ( !has_vpci(v->domain) && !is_idle_domain(v->domain) )
-        return;
-
-    for ( i = 0; i < ARRAY_SIZE(v->vpci.mem); i++ )
-        RANGESET_DESTROY(v->vpci.mem[i]);
-}
-
-int vpci_vcpu_init(struct vcpu *v)
-{
-    unsigned int i;
-
-    if ( !has_vpci(v->domain) && !is_idle_domain(v->domain) )
-        return 0;
-
-    for ( i = 0; i < ARRAY_SIZE(v->vpci.mem); i++ )
-    {
-        char str[32];
-
-        snprintf(str, sizeof(str), "%pv:BAR%u", v, i);
-        v->vpci.mem[i] = rangeset_new(v->domain, str, RANGESETF_no_print);
-        if ( !v->vpci.mem[i] )
-            return -ENOMEM;
-    }
-
-    return 0;
+    INIT_LIST_HEAD(&v->vpci.task_queue);
 }
 
 #ifdef CONFIG_HAS_VPCI_GUEST_SUPPORT
diff --git a/xen/include/xen/rangeset.h b/xen/include/xen/rangeset.h
index f01e00ec9234..817505badf6f 100644
--- a/xen/include/xen/rangeset.h
+++ b/xen/include/xen/rangeset.h
@@ -40,13 +40,6 @@ struct rangeset *rangeset_new(
 void rangeset_destroy(
     struct rangeset *r);
 
-/* Destroy a rangeset, and zero the pointer to it. */
-#define RANGESET_DESTROY(r)  \
-    ({                       \
-        rangeset_destroy(r); \
-        (r) = NULL;          \
-    })
-
 /*
  * Set a limit on the number of ranges that may exist in set @r.
  * NOTE: This must be called while @r is empty.
diff --git a/xen/include/xen/vpci.h b/xen/include/xen/vpci.h
index b55bacbe6e01..e34f7abe6da2 100644
--- a/xen/include/xen/vpci.h
+++ b/xen/include/xen/vpci.h
@@ -19,8 +19,7 @@
  */
 #define VPCI_MAX_VIRT_DEV       (PCI_SLOT(~0) + 1)
 
-void vpci_vcpu_destroy(struct vcpu *v);
-int vpci_vcpu_init(struct vcpu *v);
+void vpci_vcpu_init(struct vcpu *v);
 
 /* Assign vPCI to device by adding handlers. */
 int __must_check vpci_assign_device(struct pci_dev *pdev);
@@ -155,14 +154,23 @@ struct vpci {
 };
 
 #ifdef __XEN__
-struct vpci_vcpu {
+struct vpci_map_task {
     /* Per-vcpu structure to store state while {un}mapping of PCI BARs. */
-    const struct pci_dev *pdev;
-    struct rangeset *mem[ARRAY_SIZE(((struct vpci_header *)NULL)->bars)];
+    struct list_head next;
+    struct vpci_bar_map {
+        uint64_t addr;
+        uint64_t guest_addr;
+        struct rangeset *mem;
+    } bars[ARRAY_SIZE(((struct vpci_header *)NULL)->bars)];
     uint16_t cmd;
     bool rom_only : 1;
 };
 
+struct vpci_vcpu {
+    const struct pci_dev *pdev;
+    struct list_head task_queue;
+};
+
 void vpci_dump_msi(void);
 
 /* Arch-specific vPCI MSI helpers. */
@@ -207,8 +215,7 @@ bool vpci_ecam_read(pci_sbdf_t sbdf, unsigned int reg, unsigned int len,
 #else /* !CONFIG_HAS_VPCI */
 struct vpci_vcpu {};
 
-static inline void vpci_vcpu_destroy(struct vcpu *v) { }
-static inline int vpci_vcpu_init(struct vcpu *v) { return 0; }
+static inline void vpci_vcpu_init(struct vcpu *v) { }
 
 static inline int vpci_reinit_ext_capabilities(struct pci_dev *pdev)
 {
-- 
2.53.0



From xen-devel-bounces@lists.xenproject.org Mon Apr 06 19:12:42 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 06 Apr 2026 19:12:42 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1274363.1560514 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1w9pNK-0000ZT-Fg; Mon, 06 Apr 2026 19:12:42 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1274363.1560514; Mon, 06 Apr 2026 19:12: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 1w9pNK-0000ZG-Cf; Mon, 06 Apr 2026 19:12:42 +0000
Received: by outflank-mailman (input) for mailman id 1274363;
 Mon, 06 Apr 2026 19:12:42 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <Stewart.Hildebrand@amd.com>) id 1w9pNJ-0000Yf-TC
 for xen-devel@lists.xenproject.org; Mon, 06 Apr 2026 19:12:42 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1w9pNJ-00GVO4-9E
 for xen-devel@lists.xenproject.org; Mon, 06 Apr 2026 21:12:41 +0200
Received: from [10.42.69.12] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <Stewart.Hildebrand@amd.com>)
 id 69d40584-5cb7-0a2a0a5109dd-0a2a450c8bf6-36
 for <xen-devel@lists.xenproject.org>; Mon, 06 Apr 2026 21:12:40 +0200
Received: from [52.101.48.17]
 (helo=MW6PR02CU001.outbound.protection.outlook.com)
 by tlsNG-d25034.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.0)
 (envelope-from <Stewart.Hildebrand@amd.com>)
 id 69d405a7-f40c-0a2a450c0019-34653011c6d8-3
 for <xen-devel@lists.xenproject.org>; Mon, 06 Apr 2026 21:12:40 +0200
Received: from DS7P220CA0084.NAMP220.PROD.OUTLOOK.COM (2603:10b6:8:259::14) by
 DS0PR12MB6630.namprd12.prod.outlook.com (2603:10b6:8:d2::22) with
 Microsoft
 SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id
 15.20.9769.17; Mon, 6 Apr 2026 19:12:31 +0000
Received: from DS1PEPF0001708E.namprd03.prod.outlook.com
 (2603:10b6:8:259:cafe::70) by DS7P220CA0084.outlook.office365.com
 (2603:10b6:8:259::14) with Microsoft SMTP Server (version=TLS1_3,
 cipher=TLS_AES_256_GCM_SHA384) id 15.20.9769.32 via Frontend Transport; Mon,
 6 Apr 2026 19:12:40 +0000
Received: from satlexmb08.amd.com (165.204.84.17) by
 DS1PEPF0001708E.mail.protection.outlook.com (10.167.17.134) with Microsoft
 SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id
 15.20.9769.17 via Frontend Transport; Mon, 6 Apr 2026 19:12:31 +0000
Received: from SATLEXMB03.amd.com (10.181.40.144) by satlexmb08.amd.com
 (10.181.42.217) with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.2.2562.17; Mon, 6 Apr
 2026 14:12:31 -0500
Received: from satlexmb07.amd.com (10.181.42.216) by SATLEXMB03.amd.com
 (10.181.40.144) with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2507.39; Mon, 6 Apr
 2026 14:12:30 -0500
Received: from ubuntu (10.180.168.240) by satlexmb07.amd.com (10.181.42.216)
 with Microsoft SMTP Server id 15.2.2562.17 via Frontend Transport; Mon, 6 Apr
 2026 14:12:30 -0500
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@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=VjhhFJjbsCbDSZBSlFohGcViA83znlxt0aBeFGhsVJRFSJwrAGG6zJ+EDEDA2/N6xJMrGCUsZqLlaMeNMX4ApERKHRKgkHbG/AMGzmt8TIkQVXwUhQynjFz2HAfMjt5V294tstGwMTVYCnwfXbRkxMxp+zIdqnkMujW53OCKQBwawJWjVQU1TbJldyfIY+nxIIdM+Oa9Xb1mtq+1c1GFCOK0zryEEmyvc2yu/BdUoT3buZ0SN0If7JF0VrWb4JT6otwT1pNFRX5L9E74BLuCkZsg+iuL0i+CuFrvLcarzFG3u/aNlPMkBCUq5UNW9/rVRlSU3G5s0BTQJPL+VeSbvw==
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com;
 s=arcselector10001;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1;
 bh=vHjkD8mh/45ccq+3hyulqMZKE75dA55AV1KAofnrWsA=;
 b=QGO9kFTVQsnRqGpF90zB8hpfzmh7uFr7VXWjY2njLRWf+rTeVZKlBjheZEBYhgqd9ynuqUb+3BkN2ZHpWU16cIBZ+y3ktaZGgAL9Kt2OKm2LNhMmOfLT1uiIiKwyIcLOuLTRfXnEOC6fGgyDZ+sclWU5so2/lggO0VzKzqT557HVwcirgR+z9qe8aVhofy+wA9Zn+vewrbeieCpmFuxKgdEHgcf4hAWkpZlsNq8vC6WJN2jRrm28SEOLGuByzJ9MMKA6AHgBWwu8DGzSHozE4YnYbEIo215DX7AglzhPZhwHXqQx+7K4m8HQS69fyga11uyysyGibTSV+3Ndyd5Rng==
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=vHjkD8mh/45ccq+3hyulqMZKE75dA55AV1KAofnrWsA=;
 b=kc+gQYR5IHjcUztCnek9K0AG97VfccnCAum2dbLupGioyy++7zgW0L27NxGzhGytdNtM47QG/berO6Qg0stYj9OH4/UZDkmHNyNousaYqr+CpBmc0uKNaphYsISq1nvYV7u7TA0mIaQETam5+fJLVuWdbaU7cbFh1sSdyxYZrNA=
X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 165.204.84.17)
 smtp.mailfrom=amd.com; dkim=none (message not signed)
 header.d=none;dmarc=pass action=none header.from=amd.com;
Received-SPF: Pass (protection.outlook.com: domain of amd.com designates
 165.204.84.17 as permitted sender) receiver=protection.outlook.com;
 client-ip=165.204.84.17; helo=satlexmb08.amd.com; pr=C
From: Stewart Hildebrand <stewart.hildebrand@amd.com>
To: <xen-devel@lists.xenproject.org>
CC: Stewart Hildebrand <stewart.hildebrand@amd.com>,
	=?UTF-8?q?Roger=20Pau=20Monn=C3=A9?= <roger.pau@citrix.com>
Subject: [PATCH v4 3/4] vpci: allow BAR map/unmap without affecting memory decoding bit
Date: Mon, 6 Apr 2026 15:11:57 -0400
Message-ID: <20260406191203.97662-4-stewart.hildebrand@amd.com>
X-Mailer: git-send-email 2.53.0
In-Reply-To: <20260406191203.97662-1-stewart.hildebrand@amd.com>
References: <20260406191203.97662-1-stewart.hildebrand@amd.com>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit
Content-Type: text/plain
Received-SPF: None (SATLEXMB03.amd.com: stewart.hildebrand@amd.com does not
 designate permitted sender hosts)
X-EOPAttributedMessage: 0
X-MS-PublicTrafficType: Email
X-MS-TrafficTypeDiagnostic: DS1PEPF0001708E:EE_|DS0PR12MB6630:EE_
X-MS-Office365-Filtering-Correlation-Id: 6ca8c865-67e4-4bcf-4710-08de941073d2
X-MS-Exchange-SenderADCheck: 1
X-MS-Exchange-AntiSpam-Relay: 0
X-Microsoft-Antispam:
	BCL:0;ARA:13230040|376014|36860700016|1800799024|82310400026|13003099007|18002099003|56012099003|22082099003;
X-Microsoft-Antispam-Message-Info:
	enR8OMFliM5I6OmSnbwo7PrqfYxN+XH/iTsQGD/qU/5xUxTyprSd6SWqjwNmlCMLqDnay3sb1xc+fgcd4tNOppbtf2Y5UojJyveDOCpH+y9EmnSAYlGmHkPxXwL/wRB/6bJGvkt0aHAqNRWm4xx9MJ2gJNPu/kar494zcuxw8bJ2aV7t6IrrTzVokP46br07aPIgjdHV0ekNbr6NnwVWhOd/e1+LwntYxK6tQcoy51m2lxwRTxaL+qmVpQmQVVdfPmmezltmIJOJbyYXjhgx1NZQ6i5EipMVk36EMTvrIy0tD5OEO6jaPWrybJnw3AnAWjithjsaMhYdEmeaEkrouia/HR+dQC8DKVT17OmWukGR4jl3RnQ4qrYKqZXZaHutCvL4O/pDog0JMWtSey2C+p0oJgNI93shq8+cG09BjFG+jjSt7KSGsuuUeus5wgb/CrjlfWDZemKGIoHUmeXLLW5bEpx/s5kq/T1LPKi3qRhRebZxzqccr9PK2BdeBTl7Zr8sc54wsvLtLFd07msFM1gWwqND7/yacVljhoBSrz1CW+A5VJ0qp5ZuwvO8rGRuMXOLLOW52w8PQnJWDuHDi6ouFjd7GVZw7ufDc3/YG4eC6JKulL46TKrq64/Swe59P6nkN11YWmFTpJhhRHBjBAfkNxD1chmnITLnGdPF+8a8Xb5zrYwQklhuYh6MEqdGzTs4AwmZQCjtLPoarhaR3oah3W/mAyW0uv8bKoyKNktgrD8YJSbEArVnefVIR4S36g3Mfi/P5cgWF++hMaPAvw==
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)(36860700016)(1800799024)(82310400026)(13003099007)(18002099003)(56012099003)(22082099003);DIR:OUT;SFP:1101;
X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1
X-MS-Exchange-AntiSpam-MessageData-0:
	90fzKIoC6c4BCDcstdgw5brz1o+3t0pbXfWQNlcRzbsUkAnz1Qd3ilhi2lJvOC+EUbXE9Kkd8Gl6WtudNYnvHI079c+O157gwCQsxjMqtHctAmxZVVR06HTD9i9EFi+Qy6mpxcUcBG4edpzveXVnPP0F0H+r7VOtsHATAFIuVTU+V+7PiZF+TMXgqop38xj6v/XzyUvmP7KawaGahCKQXdmEWkLTiDDoz8t89UDVkqILcebSokPsk+wt4WtUtNqkn2yUQgR5Pxab4cuPpN2C3hullES9FiKYR+So03pp4fFlJjxGGzYQ/5GUasWFp3IsHfVHIOgLXlZcALJzLTB9Nlri8pzjfecm24RC8CG4lLddD/9rQtI0ve2vzCaeOpAj8gBJ9aAaGq09xT0+EhzFjAG1+nGOtEd/uPRwGl8vVy7DHesFHfeXe3uy2u1DetrG
X-OriginatorOrg: amd.com
X-MS-Exchange-CrossTenant-OriginalArrivalTime: 06 Apr 2026 19:12:31.5941
 (UTC)
X-MS-Exchange-CrossTenant-Network-Message-Id: 6ca8c865-67e4-4bcf-4710-08de941073d2
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:
	DS1PEPF0001708E.namprd03.prod.outlook.com
X-MS-Exchange-CrossTenant-AuthAs: Anonymous
X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem
X-MS-Exchange-Transport-CrossTenantHeadersStamped: DS0PR12MB6630
X-purgate-ID: tlsNG-d25034/1775502760-81F52A3D-4CA2EAAD/0/0
X-purgate-type: clean
X-purgate-size: 7003

Introduce 'bool map' and allow invoking modify_bars() without changing
the memory decoding bit. This will allow hardware domain to reposition
BARs without affecting the memory decoding bit.

Signed-off-by: Stewart Hildebrand <stewart.hildebrand@amd.com>
---
This also lays some groundwork to allow domUs to toggle the guest view
without affecting hardware, a step toward addressing the FIXME in [1].

[1] https://lore.kernel.org/xen-devel/20250814160358.95543-4-roger.pau@citrix.com/

v3->v4:
* rebase on dynamically allocated map queue

v2->v3:
* use bool
* switch to task->map in more places

v1->v2:
* new patch
---
 xen/drivers/vpci/header.c | 43 +++++++++++++++++++++------------------
 xen/include/xen/vpci.h    |  1 +
 2 files changed, 24 insertions(+), 20 deletions(-)

diff --git a/xen/drivers/vpci/header.c b/xen/drivers/vpci/header.c
index 146915e28c50..20fe380552f4 100644
--- a/xen/drivers/vpci/header.c
+++ b/xen/drivers/vpci/header.c
@@ -117,11 +117,12 @@ static int cf_check map_range(
  * BAR's enable bit has changed with the memory decoding bit already enabled.
  * If rom_only is not set then it's the memory decoding bit that changed.
  */
-static void modify_decoding(const struct pci_dev *pdev, uint16_t cmd,
-                            bool rom_only)
+static void modify_decoding(const struct pci_dev *pdev,
+                            struct vpci_map_task *task)
 {
     struct vpci_header *header = &pdev->vpci->header;
-    bool map = cmd & PCI_COMMAND_MEMORY;
+    bool rom_only = task->rom_only;
+    bool map = task->map;
     unsigned int i;
 
     for ( i = 0; i < ARRAY_SIZE(header->bars); i++ )
@@ -168,7 +169,7 @@ static void modify_decoding(const struct pci_dev *pdev, uint16_t cmd,
 
     if ( !rom_only )
     {
-        pci_conf_write16(pdev->sbdf, PCI_COMMAND, cmd);
+        pci_conf_write16(pdev->sbdf, PCI_COMMAND, task->cmd);
         header->bars_mapped = map;
     }
     else
@@ -188,7 +189,7 @@ static int vpci_process_map_task(const struct pci_dev *pdev,
         struct rangeset *mem = bar->mem;
         struct map_data data = {
             .d = pdev->domain,
-            .map = task->cmd & PCI_COMMAND_MEMORY,
+            .map = task->map,
             .bar = bar,
         };
         int rc;
@@ -203,9 +204,11 @@ static int vpci_process_map_task(const struct pci_dev *pdev,
 
         if ( rc )
         {
-            spin_lock(&pdev->vpci->lock);
             /* Disable memory decoding unconditionally on failure. */
-            modify_decoding(pdev, task->cmd & ~PCI_COMMAND_MEMORY, false);
+            task->cmd &= ~PCI_COMMAND_MEMORY;
+            task->map = false;
+            spin_lock(&pdev->vpci->lock);
+            modify_decoding(pdev, task);
             spin_unlock(&pdev->vpci->lock);
 
             if ( !is_hardware_domain(pdev->domain) )
@@ -216,7 +219,7 @@ static int vpci_process_map_task(const struct pci_dev *pdev,
     }
 
     spin_lock(&pdev->vpci->lock);
-    modify_decoding(pdev, task->cmd, task->rom_only);
+    modify_decoding(pdev, task);
     spin_unlock(&pdev->vpci->lock);
 
     return 0;
@@ -328,13 +331,14 @@ static int __init apply_map(struct domain *d, const struct pci_dev *pdev,
         }
     }
     if ( !rc )
-        modify_decoding(pdev, task->cmd, false);
+        modify_decoding(pdev, task);
 
     return rc;
 }
 
 static struct vpci_map_task *alloc_map_task(const struct pci_dev *pdev,
-                                            uint16_t cmd, bool rom_only)
+                                            uint16_t cmd, bool rom_only,
+                                            bool map)
 {
     struct vpci_map_task *task;
     unsigned int i;
@@ -364,6 +368,7 @@ static struct vpci_map_task *alloc_map_task(const struct pci_dev *pdev,
 
     task->cmd = cmd;
     task->rom_only = rom_only;
+    task->map = map;
 
     return task;
 }
@@ -391,7 +396,8 @@ static void defer_map(const struct pci_dev *pdev, struct vpci_map_task *task)
     raise_softirq(SCHEDULE_SOFTIRQ);
 }
 
-static int modify_bars(const struct pci_dev *pdev, uint16_t cmd, bool rom_only)
+static int modify_bars(const struct pci_dev *pdev, uint16_t cmd, bool rom_only,
+                       bool map)
 {
     struct vpci_header *header = &pdev->vpci->header;
     struct pci_dev *tmp;
@@ -403,7 +409,7 @@ static int modify_bars(const struct pci_dev *pdev, uint16_t cmd, bool rom_only)
 
     ASSERT(rw_is_write_locked(&pdev->domain->pci_lock));
 
-    task = alloc_map_task(pdev, cmd, rom_only);
+    task = alloc_map_task(pdev, cmd, rom_only, map);
 
     if ( !task )
         return -ENOMEM;
@@ -602,7 +608,7 @@ static int modify_bars(const struct pci_dev *pdev, uint16_t cmd, bool rom_only)
          * be called iff the memory decoding bit is enabled, thus the operation
          * will always be to establish mappings and process all the BARs.
          */
-        ASSERT((cmd & PCI_COMMAND_MEMORY) && !rom_only);
+        ASSERT(map && !rom_only);
         rc = apply_map(pdev->domain, pdev, task);
         destroy_map_task(task);
         return rc;
@@ -646,7 +652,7 @@ static void cf_check cmd_write(
          * memory decoding bit has not been changed, so leave everything as-is,
          * hoping the guest will realize and try again.
          */
-        modify_bars(pdev, cmd, false);
+        modify_bars(pdev, cmd, false, cmd & PCI_COMMAND_MEMORY);
     else
         pci_conf_write16(pdev->sbdf, reg, cmd);
 }
@@ -810,11 +816,8 @@ static void cf_check rom_write(
         header->rom_enabled = new_enabled;
         pci_conf_write32(pdev->sbdf, reg, val);
     }
-    /*
-     * Pass PCI_COMMAND_MEMORY or 0 to signal a map/unmap request, note that
-     * this fabricated command is never going to be written to the register.
-     */
-    else if ( modify_bars(pdev, new_enabled ? PCI_COMMAND_MEMORY : 0, true) )
+    /* Note that the command value 0 will never be written to the register */
+    else if ( modify_bars(pdev, 0, true, new_enabled) )
         /*
          * No memory has been added or removed from the p2m (because the actual
          * p2m changes are deferred in defer_map) and the ROM enable bit has
@@ -1004,7 +1007,7 @@ int vpci_init_header(struct pci_dev *pdev)
             goto fail;
     }
 
-    return (cmd & PCI_COMMAND_MEMORY) ? modify_bars(pdev, cmd, false) : 0;
+    return (cmd & PCI_COMMAND_MEMORY) ? modify_bars(pdev, cmd, false, true) : 0;
 
  fail:
     pci_conf_write16(pdev->sbdf, PCI_COMMAND, cmd);
diff --git a/xen/include/xen/vpci.h b/xen/include/xen/vpci.h
index e34f7abe6da2..e6d40827a43a 100644
--- a/xen/include/xen/vpci.h
+++ b/xen/include/xen/vpci.h
@@ -164,6 +164,7 @@ struct vpci_map_task {
     } bars[ARRAY_SIZE(((struct vpci_header *)NULL)->bars)];
     uint16_t cmd;
     bool rom_only : 1;
+    bool map : 1;
 };
 
 struct vpci_vcpu {
-- 
2.53.0



From xen-devel-bounces@lists.xenproject.org Mon Apr 06 19:12:48 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 06 Apr 2026 19:12:48 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1274367.1560523 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1w9pNP-0000vC-UH; Mon, 06 Apr 2026 19:12:47 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1274367.1560523; Mon, 06 Apr 2026 19: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 1w9pNP-0000v3-Py; Mon, 06 Apr 2026 19:12:47 +0000
Received: by outflank-mailman (input) for mailman id 1274367;
 Mon, 06 Apr 2026 19:12:46 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <Stewart.Hildebrand@amd.com>) id 1w9pNO-0000th-M9
 for xen-devel@lists.xenproject.org; Mon, 06 Apr 2026 19:12:46 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1w9pNO-00DVi8-2C
 for xen-devel@lists.xenproject.org; Mon, 06 Apr 2026 21:12:46 +0200
Received: from [10.42.69.10] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <Stewart.Hildebrand@amd.com>)
 id 69d40570-bab6-0a2a0a5309dd-0a2a450acf26-30
 for <xen-devel@lists.xenproject.org>; Mon, 06 Apr 2026 21:12:45 +0200
Received: from [40.107.208.41]
 (helo=PH0PR06CU001.outbound.protection.outlook.com)
 by tlsNG-4011c0.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.0)
 (envelope-from <Stewart.Hildebrand@amd.com>)
 id 69d405ac-ee98-0a2a450a0019-286bd0296cf3-3
 for <xen-devel@lists.xenproject.org>; Mon, 06 Apr 2026 21:12:45 +0200
Received: from DS7PR03CA0059.namprd03.prod.outlook.com (2603:10b6:5:3b5::34)
 by SA0PR12MB4480.namprd12.prod.outlook.com (2603:10b6:806:99::10) with
 Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9769.10; Mon, 6 Apr
 2026 19:12:38 +0000
Received: from DS1PEPF00017091.namprd03.prod.outlook.com
 (2603:10b6:5:3b5:cafe::ca) by DS7PR03CA0059.outlook.office365.com
 (2603:10b6:5:3b5::34) with Microsoft SMTP Server (version=TLS1_3,
 cipher=TLS_AES_256_GCM_SHA384) id 15.20.9769.32 via Frontend Transport; Mon,
 6 Apr 2026 19:12:38 +0000
Received: from satlexmb08.amd.com (165.204.84.17) by
 DS1PEPF00017091.mail.protection.outlook.com (10.167.17.133) with Microsoft
 SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id
 15.20.9769.17 via Frontend Transport; Mon, 6 Apr 2026 19:12:38 +0000
Received: from SATLEXMB03.amd.com (10.181.40.144) by satlexmb08.amd.com
 (10.181.42.217) with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.2.2562.17; Mon, 6 Apr
 2026 14:12:37 -0500
Received: from satlexmb07.amd.com (10.181.42.216) by SATLEXMB03.amd.com
 (10.181.40.144) with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2507.39; Mon, 6 Apr
 2026 14:12:37 -0500
Received: from ubuntu (10.180.168.240) by satlexmb07.amd.com (10.181.42.216)
 with Microsoft SMTP Server id 15.2.2562.17 via Frontend Transport; Mon, 6 Apr
 2026 14:12:37 -0500
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@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=pHVJvIgrD2pktkmpYzJn94ygxj7InypvB0yigxcj6ZeTXuF3h9Ap8ofGOyqbZwsVb9Tn87FUToRQAdEBSj6yPLRBB+BaR2+yG1icjfCfp8+L8ySRxRIwx6+YxkLR7tdO/nt+bHh3yfk6M98wLWiJErLhBokqfpn01yAux1WQmFVrOSzKUWeJW+D5n4qei2+Hx2rSSTuZuRPuwz4kSYvJGTTs/cUvsW8ScrD6AguFOWmocKL1/mf7zbW8WVtA2u0EOToB5jUcnMbuyKaiTmJtntiWim/vSKOlrvJOdgfNWJFYgx296V0chBRE8lFM2mtTZ/ZI49XnNMbSMc1quZLozw==
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com;
 s=arcselector10001;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1;
 bh=m5KAxsB5+rjJP69DJz9pK/1jNINXHR3glsZici/9duI=;
 b=dInQYgcRYjFjzUV75YCdkw2jeIIiatXIHYow8kBFUdDBzWFmUzsuDxLwtnpX32pyzh1NaqQft4i0glPvdTUfL/UghXKJSqiCHqv6Yp0dR4xHXNE8ijBeYZ2F8h7JOsXLu0m7Rc4j1PMj/EihOYdvZ5DrxEf+hq1cCfTKRnvfQg5mqjzXvgu7JXvmYBYgyEDciMHgtD/5+R2Cc0b+9QmDo7wsk+LzR89YFm6C6i6cDK1Vf5jA6rkQuWytkl9MnJnt6u1JQacn4QN5bBd3nIlWAGCkk24SqFy48kTNqCmq/GqIFp5z6b8k/iZJW7suppXnXEwX40Ft0/XCJ0i29R0x6Q==
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=m5KAxsB5+rjJP69DJz9pK/1jNINXHR3glsZici/9duI=;
 b=UqtzRE6Tf0g20EzKpj2JVg5LJrncHAFtXmi9wPmXlS1giHxlvohP7fwmp3lXNy9sLKu+pAJRlfIqeQu9xrOhrzWl6F2D0Zxk32Ph2WPXo/MlGiZbbqcCw8oohqVBl/T01eATMWE/gV0M8ra8BCzV3GGFTB4pikcjSgZ/66T8Lxg=
X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 165.204.84.17)
 smtp.mailfrom=amd.com; dkim=none (message not signed)
 header.d=none;dmarc=pass action=none header.from=amd.com;
Received-SPF: Pass (protection.outlook.com: domain of amd.com designates
 165.204.84.17 as permitted sender) receiver=protection.outlook.com;
 client-ip=165.204.84.17; helo=satlexmb08.amd.com; pr=C
From: Stewart Hildebrand <stewart.hildebrand@amd.com>
To: <xen-devel@lists.xenproject.org>
CC: Stewart Hildebrand <stewart.hildebrand@amd.com>,
	=?UTF-8?q?Roger=20Pau=20Monn=C3=A9?= <roger.pau@citrix.com>
Subject: [PATCH v4 4/4] vpci: allow 32-bit BAR writes with memory decoding enabled
Date: Mon, 6 Apr 2026 15:11:58 -0400
Message-ID: <20260406191203.97662-5-stewart.hildebrand@amd.com>
X-Mailer: git-send-email 2.53.0
In-Reply-To: <20260406191203.97662-1-stewart.hildebrand@amd.com>
References: <20260406191203.97662-1-stewart.hildebrand@amd.com>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit
Content-Type: text/plain
Received-SPF: None (SATLEXMB03.amd.com: stewart.hildebrand@amd.com does not
 designate permitted sender hosts)
X-EOPAttributedMessage: 0
X-MS-PublicTrafficType: Email
X-MS-TrafficTypeDiagnostic: DS1PEPF00017091:EE_|SA0PR12MB4480:EE_
X-MS-Office365-Filtering-Correlation-Id: 5348181e-dcf2-40d8-6071-08de941077da
X-MS-Exchange-SenderADCheck: 1
X-MS-Exchange-AntiSpam-Relay: 0
X-Microsoft-Antispam:
	BCL:0;ARA:13230040|1800799024|376014|36860700016|82310400026|13003099007|22082099003|56012099003|18002099003;
X-Microsoft-Antispam-Message-Info:
	G3MX5L2g5IlopSPWZPkdgtwUizEuoqM+dbvxxoSRkBEqa0en1bxNeriAgZ6MJPizkLiMWk7ejZsYjfFvY+y/bSia1rjIMmoqOhavzgZ9BZ6H28siPl9U+IlY4iWUKTeKhpFZ0Mq7P+Nd4GZLWG3Sn8h5tCdErIwiAFqYWcCwbkhnCd/xQP5tDSlR3xbdPWnBqXNaVppfqEoEbKGyvzv0Z8VU60kT6N/hq6gGlxW9EAUD5ruz6N0mratXo/+bM5SJtUMsAjIm2BJW0rSwpT3IlPXUrPBHAEHT1eq5ajUsNYRdc3jx/FQgedF3MRVjQ/0z2h7SlGirXj2wTwLSJ6/BV4nlR/Ff6s3gr98nvH8LRZdOHDk/NCzluRTJjEOYc1nSpZoORT03t6x7cBR3GXUrSaMmTuL491M2sgaeKcptchDL0FNuj6xBWsfR1lWj2oxCANnZSms3tKipHfaXwsbH4pchAzGsh8LZmlFkKfLbRfDAfxO9Jdk2WsRmCPS0pUlWciiqN6US8yzvvHqp1jybJiEXO7e4MyPBIvw5W6do7OGqK102e517riGMR7rWkvcITSGtIFJFCeNE/oCRPJhYhKRDuElNZAKf/s4MyWd1jjW001XEv0cch6XV8User+RyF/VW9V326rBFGt4j24m7y+wCoSbnn642jpbGQiRy+y9R4tM7ejEGaPR/uE6hKmpi6VDcjzUYkFjt+LmZ939FOMlW3ijFJdat99Q/BJ34qs9+adUSO747J0cG1IeTAkLGSpaMODyaEp7efyHeQwRhHQ==
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)(36860700016)(82310400026)(13003099007)(22082099003)(56012099003)(18002099003);DIR:OUT;SFP:1101;
X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1
X-MS-Exchange-AntiSpam-MessageData-0:
	uBV75Vm1+YeDJLyxJV5iOWAtxOZTFtYmwYCI8VgLM4g+uwdf6PE0s5As3LyoFNcDo2HPHE0B1Caa07unfbLNPre1wuZaF+SuLhSyaYizDHyk9WVbYRVtLZSj6VpBeM8XdN3zyk5NLzPrHBXsI/PSPGBptxusIodjuYah0ZBoLVFyrgVL3BW61zWDSHcJDAoQcVLNbbUPnep3AtOtxWqjn9Z2mQQ6DzjJ6SFo88nZh/pie/BhFLJEAgnSlD9WIR84jopCTSnBoGhSBgEjeYF+W+vq7OGW8WD8ory4plQMYUMSOxXPGIq4qdV9UVgYR0nrdCpqkl5tljBQuKZ2D5dOpxMKZZivJ3STHYaCTMFM0QJqW3PrgtbbC6FWmRZ9r1GWQLItvtBjn4xf4L+xkXdMDO+wgpPebFnNfQ9tDIVcyKC7GjdxvW1MZNoPTog7Q/lA
X-OriginatorOrg: amd.com
X-MS-Exchange-CrossTenant-OriginalArrivalTime: 06 Apr 2026 19:12:38.3570
 (UTC)
X-MS-Exchange-CrossTenant-Network-Message-Id: 5348181e-dcf2-40d8-6071-08de941077da
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:
	DS1PEPF00017091.namprd03.prod.outlook.com
X-MS-Exchange-CrossTenant-AuthAs: Anonymous
X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem
X-MS-Exchange-Transport-CrossTenantHeadersStamped: SA0PR12MB4480
X-purgate-ID: tlsNG-4011c0/1775502765-0FB450B1-AF63A496/0/0
X-purgate-type: clean
X-purgate-size: 3444

Currently, Xen vPCI refuses BAR writes if the BAR is mapped in p2m. If
firmware initializes a 32-bit BAR to a bad address, Linux may try to
write a new address to the 32-bit BAR without disabling memory decoding.
Since Xen refuses such writes, the BAR (and thus PCI device) will be
non-functional.

Allow the hardware domain to issue 32-bit BAR writes with memory
decoding enabled. This increases the compatibility of PVH dom0 with more
hardware.

Note that Linux aims at disabling memory decoding before writing 64-bit
BARs. Continue to refuse 64-bit BAR writes in Xen while those BARs are
mapped for now to avoid mapping half-updated BARs in p2m.

Resolves: https://gitlab.com/xen-project/xen/-/issues/197
Signed-off-by: Stewart Hildebrand <stewart.hildebrand@amd.com>
---
v3->v4:
* rebase on dynamically allocated map queue

v2->v3:
* minor tweaks for fixed number of map/unmap slots

v1->v2:
* rework on top of queued BAR map/unmap operation machinery

RFC->v1:
* keep memory decoding enabled in hardware
* allow write while memory decoding is enabled for 32-bit BARs only
* rework BAR mapping machinery to support unmap-then-map operation
---
 xen/drivers/vpci/header.c | 32 +++++++++++++++++++++++---------
 1 file changed, 23 insertions(+), 9 deletions(-)

diff --git a/xen/drivers/vpci/header.c b/xen/drivers/vpci/header.c
index 20fe380552f4..dc4f585b4e40 100644
--- a/xen/drivers/vpci/header.c
+++ b/xen/drivers/vpci/header.c
@@ -670,6 +670,7 @@ static void cf_check bar_write(
 {
     struct vpci_bar *bar = data;
     bool hi = false;
+    uint16_t cmd = 0;
 
     ASSERT(is_hardware_domain(pdev->domain));
 
@@ -683,19 +684,29 @@ static void cf_check bar_write(
         val &= PCI_BASE_ADDRESS_MEM_MASK;
 
     /*
-     * Xen only cares whether the BAR is mapped into the p2m, so allow BAR
-     * writes as long as the BAR is not mapped into the p2m.
+     * Allow 64-bit BAR writes only when the BAR is not mapped in p2m. Always
+     * allow 32-bit BAR writes.
      */
     if ( bar->enabled )
     {
-        /* If the value written is the current one avoid printing a warning. */
-        if ( val != (uint32_t)(bar->addr >> (hi ? 32 : 0)) )
-            gprintk(XENLOG_WARNING,
-                    "%pp: ignored BAR %zu write while mapped\n",
-                    &pdev->sbdf, bar - pdev->vpci->header.bars + hi);
-        return;
-    }
+        if ( bar->type == VPCI_BAR_MEM32 )
+        {
+            if ( val == bar->addr )
+                return;
 
+            cmd = pci_conf_read16(pdev->sbdf, PCI_COMMAND);
+            modify_bars(pdev, cmd, false, false);
+        }
+        else
+        {
+            /* If the value written is the same avoid printing a warning. */
+            if ( val != (uint32_t)(bar->addr >> (hi ? 32 : 0)) )
+                gprintk(XENLOG_WARNING,
+                        "%pp: ignored BAR %zu write while mapped\n",
+                        &pdev->sbdf, bar - pdev->vpci->header.bars + hi);
+            return;
+        }
+    }
 
     /*
      * Update the cached address, so that when memory decoding is enabled
@@ -715,6 +726,9 @@ static void cf_check bar_write(
     }
 
     pci_conf_write32(pdev->sbdf, reg, val);
+
+    if ( bar->enabled )
+        modify_bars(pdev, cmd, false, true);
 }
 
 static void cf_check guest_mem_bar_write(const struct pci_dev *pdev,
-- 
2.53.0



From xen-devel-bounces@lists.xenproject.org Tue Apr 07 02:25:15 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 07 Apr 2026 02:25:15 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1274421.1560532 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1w9w7d-0000iU-Ow; Tue, 07 Apr 2026 02:24:57 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1274421.1560532; Tue, 07 Apr 2026 02: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 1w9w7d-0000iM-K8; Tue, 07 Apr 2026 02:24:57 +0000
Received: by outflank-mailman (input) for mailman id 1274421;
 Tue, 07 Apr 2026 02:24:56 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <zhaoguohan@kylinos.cn>) id 1w9w7c-0000iG-JR
 for xen-devel@lists.xenproject.org; Tue, 07 Apr 2026 02:24:56 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1w9w7b-000YU8-HP
 for xen-devel@lists.xenproject.org; Tue, 07 Apr 2026 04:24:55 +0200
Received: from [10.42.69.12] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <zhaoguohan@kylinos.cn>)
 id 69d46a93-bab6-0a2a0a5309dd-0a2a450cabae-32
 for <xen-devel@lists.xenproject.org>; Tue, 07 Apr 2026 04:24:55 +0200
Received: from [124.126.103.232] (helo=mailgw.kylinos.cn)
 by tlsNG-d25034.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.0)
 (envelope-from <zhaoguohan@kylinos.cn>)
 id 69d46af4-f40c-0a2a450c0019-7c7e67e8e51a-3
 for <xen-devel@lists.xenproject.org>; Tue, 07 Apr 2026 04:24:54 +0200
Received: from localhost.localdomain [(10.44.16.150)] by mailgw.kylinos.cn
 (envelope-from <zhaoguohan@kylinos.cn>)
 (Generic MTA with TLSv1.3 TLS_AES_256_GCM_SHA384 256/256)
 with ESMTP id 730094213; Tue, 07 Apr 2026 10:24:46 +0800
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-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-UUID: f224c9a4322811f1aa26b74ffac11d73-20260407
X-CID-P-RULE: Release_Ham
X-CID-O-INFO: VERSION:1.3.12,REQID:7e94b4d7-7953-4c7f-a6e2-6f9af9de78fd,IP:0,U
	RL:0,TC:0,Content:0,EDM:0,RT:0,SF:0,FILE:0,BULK:0,RULE:Release_Ham,ACTION:
	release,TS:0
X-CID-META: VersionHash:e7bac3a,CLOUDID:7435d5df1d566edbeea2e54162a75b2b,BulkI
	D:nil,BulkQuantity:0,Recheck:0,SF:102|123|850|898,TC:nil,Content:0|15|50,E
	DM:-3,IP:nil,URL:0,File:nil,RT:nil,Bulk:nil,QS:nil,BEC:nil,COL:0,OSI:0,OSA
	:0,AV:0,LES:1,SPR:NO,DKR:0,DKP:0,BRR:0,BRE:0,ARC:0
X-CID-BVR: 2,SSN|SDN
X-CID-BAS: 2,SSN|SDN,0,_
X-CID-FACTOR: TF_CID_SPAM_SNR
X-CID-RHF: D41D8CD98F00B204E9800998ECF8427E
X-UUID: f224c9a4322811f1aa26b74ffac11d73-20260407
X-User: zhaoguohan@kylinos.cn
From: zhaoguohan@kylinos.cn
To: jgross@suse.com,
	sstabellini@kernel.org
Cc: oleksandr_tyshchenko@epam.com,
	xen-devel@lists.xenproject.org,
	linux-kernel@vger.kernel.org,
	GuoHan Zhao <zhaoguohan@kylinos.cn>
Subject: [PATCH] xen/manage: unwind partial shutdown watcher setup on error
Date: Tue,  7 Apr 2026 10:24:43 +0800
Message-ID: <20260407022443.12971-1-zhaoguohan@kylinos.cn>
X-Mailer: git-send-email 2.43.0
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit
X-purgate-ID: tlsNG-d25034/1775528695-FE74EA3D-5C680B20/0/0
X-purgate-type: clean
X-purgate-size: 2011

From: GuoHan Zhao <zhaoguohan@kylinos.cn>

setup_shutdown_watcher() registers shutdown_watch first, then the sysrq
watch, and finally publishes the supported feature-* nodes in xenstore.
If sysrq watch registration fails, or xenbus_printf() fails after one or
more feature nodes were created, the function returns immediately without
undoing the earlier setup.

This leaves the system in a partially initialized state, with registered
watches and/or stale xenstore entries despite the function reporting
failure.

Unwind the partial setup before returning an error by unregistering any
watches that were already registered and removing feature nodes that were
already published.

Signed-off-by: GuoHan Zhao <zhaoguohan@kylinos.cn>
---
 drivers/xen/manage.c | 20 +++++++++++++++++---
 1 file changed, 17 insertions(+), 3 deletions(-)

diff --git a/drivers/xen/manage.c b/drivers/xen/manage.c
index e20c40a62e64..18bf09e0192a 100644
--- a/drivers/xen/manage.c
+++ b/drivers/xen/manage.c
@@ -343,12 +343,11 @@ static int setup_shutdown_watcher(void)
 		return err;
 	}
 
-
 #ifdef CONFIG_MAGIC_SYSRQ
 	err = register_xenbus_watch(&sysrq_watch);
 	if (err) {
 		pr_err("Failed to set sysrq watcher\n");
-		return err;
+		goto err_unregister_shutdown;
 	}
 #endif
 
@@ -361,11 +360,26 @@ static int setup_shutdown_watcher(void)
 		if (err) {
 			pr_err("%s: Error %d writing %s\n", __func__,
 				err, node);
-			return err;
+			goto err_remove_features;
 		}
 	}
 
 	return 0;
+
+err_remove_features:
+	while (--idx >= 0) {
+		if (!shutdown_handlers[idx].flag)
+			continue;
+		snprintf(node, FEATURE_PATH_SIZE, "feature-%s",
+			 shutdown_handlers[idx].command);
+		xenbus_rm(XBT_NIL, "control", node);
+	}
+#ifdef CONFIG_MAGIC_SYSRQ
+	unregister_xenbus_watch(&sysrq_watch);
+#endif
+err_unregister_shutdown:
+	unregister_xenbus_watch(&shutdown_watch);
+	return err;
 }
 
 static int shutdown_event(struct notifier_block *notifier,
-- 
2.43.0



From xen-devel-bounces@lists.xenproject.org Tue Apr 07 06:14:54 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 07 Apr 2026 06:14:54 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1274438.1560541 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1w9zhy-0002eR-1m; Tue, 07 Apr 2026 06:14:42 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1274438.1560541; Tue, 07 Apr 2026 06:14: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 1w9zhx-0002eI-Sk; Tue, 07 Apr 2026 06:14:41 +0000
Received: by outflank-mailman (input) for mailman id 1274438;
 Tue, 07 Apr 2026 06:14:41 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <jbeulich@suse.com>) id 1w9zhx-0002eC-6i
 for xen-devel@lists.xenproject.org; Tue, 07 Apr 2026 06:14:41 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1w9zhv-002tEl-VH
 for xen-devel@lists.xenproject.org; Tue, 07 Apr 2026 08:14:39 +0200
Received: from [10.42.69.2] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <jbeulich@suse.com>)
 id 69d4a0cb-2eae-0a2a0a5409dd-0a2a45028af4-32
 for <xen-devel@lists.xenproject.org>; Tue, 07 Apr 2026 08:14:39 +0200
Received: from [209.85.221.51] (helo=mail-wr1-f51.google.com)
 by tlsNG-720697.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.0)
 (envelope-from <jbeulich@suse.com>)
 id 69d4a0cf-42fa-0a2a45020019-d155dd33d9ec-3
 for <xen-devel@lists.xenproject.org>; Tue, 07 Apr 2026 08:14:39 +0200
Received: by mail-wr1-f51.google.com with SMTP id
 ffacd0b85a97d-43d02a71526so2627876f8f.3
 for <xen-devel@lists.xenproject.org>; Mon, 06 Apr 2026 23:14:39 -0700 (PDT)
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-43d1e4f5016sm50588982f8f.33.2026.04.06.23.14.38
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Mon, 06 Apr 2026 23:14:38 -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=google header.d=suse.com header.i="@suse.com" header.h="Content-Transfer-Encoding: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=1775542479; x=1776147279; darn=lists.xenproject.org;
        h=content-transfer-encoding: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;
        bh=tV1fizWcuooj1WZi3D6VF5H/rrwxbj+in7H8cAwzJ9M=;
        b=LBiDHuOGKQy+c5JXjhwrKgPBon0bFP3yXlXD9vm5pw1qpjdN/EK6mJxClQ3qU6QceL
         c7ONpPWbqqjZS08k9LhWDSFqofTWy1raPvou6K7TQidHGrESK/a06+IIwv2bxMD2ps5V
         g+qsijrcA7vl0A6/FoPspIt3LTmHLOm8bC+AKuXGM8N1X3TkAgYcsZ293l42QdEuU65S
         YBMZIL/ImYo22n2JB4OoYT/o8Vm4cXL/5CzdDygFPaHX1XA0JfbPXQcRPfTgDK5HpZXj
         kyYy++kUiNOoYTbJzCNyfe6oLBagdF5VFYXGzYM1UA8gDjTMdWhsedYpuMwAuoQtlMM2
         PH2g==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20251104; t=1775542479; x=1776147279;
        h=content-transfer-encoding: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;
        bh=tV1fizWcuooj1WZi3D6VF5H/rrwxbj+in7H8cAwzJ9M=;
        b=UZYb/kaBgy/gkjPtE35mvojAL77AN5BjgYi5VdpAlo/OudfDoczOQ6AwBktzGeYBZp
         /zpswLI1TWuiKogP4xLzx/ukrFjlw5oXAoKbrAZ/kNpR7XoeFl7ItcQfLbs/DI8kZ4sB
         AuK8ZFcyEnzs6wcoVRlRUos3ZN5od9pAqaW02y3kprXQlio47tM6WSNEs9MA/6/cdB/I
         ctdu/0qdfGh/yVhTPk/357svCAWpHjZp5bxuaCnQwItsWDfbaBiMnMDu0BOVl6CjLD7C
         gIE1M7gUHb65lbidLHS+oVSAALa2ZCMwz3OVOVhVh2SxsD0s8/2TUxukqoWhaNi9re6J
         aNnQ==
X-Gm-Message-State: AOJu0YyoWgKyoxu1+5/pG28KFEkxDmAk70coX2KNqk5tU6PqwxRQA3tz
	IWTMzFHwvRiYznXIfy+6/cub4TstPuhCowdPW3s+YNM6d84aB2Hi44Wmknc/qKho8A==
X-Gm-Gg: AeBDietTBI2EVxk0O82bEdtUag00uHLLBuHuAQTy+aH1WRjjcOMQMjNj9id4Z7FkJk+
	TPb3Esu8CMpl33nDTKZP2WL7KHR9fQUD1TG2smCkL/mlnSabxdehcCI6NyY+f5Rd3HuepigWX80
	E34E5Wff9ZRA49kBORuWdofevJkDr5fPnU/bLlev9tLmhsyIZEjyACmHJjdSDrfy9avvp3JcNUc
	z5fM7ap8AmisqA6sEAVwFG1tyTC9y/Hc6p7phgLc+XkeHnddl3s1e8lLfR+7LxZjW5j71dj2VOQ
	Ca2QI/psU5FKpP6YQLAOagqkpyapjz3uhJfFiObVz6TCzA5dpVavy/st14upkQZWppO7dQTAqft
	sXA36ZeTTYdJ4bPdJuopp4ksTrxm9JlpraCdPucJimh4Al6T5YvM1qCvsm07N74LBtfuhUDZbSl
	/VhGxlTyDtSs5T1bfMZH+tbOqTpmBRtz/tKcOgxOlDdL8QCvZQ42VwZWrQ1LXbNsYp/+fT1gzMn
	tGokU9GODykCQw=
X-Received: by 2002:a05:6000:186c:b0:43b:41df:705e with SMTP id ffacd0b85a97d-43d2930fc4fmr22489562f8f.49.1775542478909;
        Mon, 06 Apr 2026 23:14:38 -0700 (PDT)
Message-ID: <b6e53859-70fd-49b0-a7f0-eb53386349df@suse.com>
Date: Tue, 7 Apr 2026 08:14:42 +0200
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: Slow (higher scheduling latency?) system after S3 - regression
 4.17 -> 4.19 ?
To: =?UTF-8?Q?Marek_Marczykowski-G=C3=B3recki?=
 <marmarek@invisiblethingslab.com>
Cc: xen-devel <xen-devel@lists.xenproject.org>, =?UTF-8?B?SsO8cmdlbiBHcm8=?=
 =?UTF-8?B?w58=?= <jgross@suse.com>, =?UTF-8?Q?Roger_Pau_Monn=C3=A9?=
 <roger.pau@citrix.com>
References: <aPzBO_eW8mQHM66u@mail-itl> <acQzzlXNDxNq885V@mail-itl>
 <29775afa-e17b-4c44-a2a8-4ef4bc7cdf0f@suse.com> <acUqOL232lp-Lw1v@mail-itl>
 <cbed767b-4ac4-4989-8778-43ff321ae977@suse.com> <acVWX8vkhZiFfonP@mail-itl>
 <88c65ec7-b7f7-4d8b-a453-d707440b43cb@suse.com> <acZ8ez4dmQay1JSw@mail-itl>
 <ac5l-HgbDRcVkiWb@mail-itl> <ac_Gu2lm4Jnoz7WN@mail-itl>
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: <ac_Gu2lm4Jnoz7WN@mail-itl>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
X-purgate-ID: tlsNG-720697/1775542479-447CBCD1-BC2D604D/0/0
X-purgate-type: clean
X-purgate-size: 855

On 03.04.2026 15:55, Marek Marczykowski-Górecki wrote:
> On Thu, Apr 02, 2026 at 03:02:15PM +0200, Marek Marczykowski-Górecki wrote:
>> On Fri, Mar 27, 2026 at 01:47:55PM +0100, Marek Marczykowski-Górecki wrote:
>>> Some further observation, this time regarding timers:
>>
>> In the meantime Roger suggested it might be about C-states. So, I just
>> tried booting with max_cstate=0. I got this:
> 
> We had a design session on this issue, and managed to find (thanks Roger!)
> that adding:
> 
>     tsc_mode='always_emulate'
> 
> to the domU config fixes the issue. Now, the question is how to fix it
> properly...

Seeing also the remarks on Matrix, what we will hence need to figure is what
TSC parameters (of the system and/or the VM) change across suspend. As per
Matrix everything looked at so far was apparently stable.

Jan


From xen-devel-bounces@lists.xenproject.org Tue Apr 07 06:18:11 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 07 Apr 2026 06:18:11 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1274446.1560550 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1w9zlJ-0003FA-Eo; Tue, 07 Apr 2026 06:18:09 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1274446.1560550; Tue, 07 Apr 2026 06:18: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 1w9zlJ-0003F3-CF; Tue, 07 Apr 2026 06:18:09 +0000
Received: by outflank-mailman (input) for mailman id 1274446;
 Tue, 07 Apr 2026 06:18:08 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <jbeulich@suse.com>) id 1w9zlI-0003Ex-6H
 for xen-devel@lists.xenproject.org; Tue, 07 Apr 2026 06:18:08 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1w9zlH-00AdVx-Ic
 for xen-devel@lists.xenproject.org; Tue, 07 Apr 2026 08:18:07 +0200
Received: from [10.42.69.7] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <jbeulich@suse.com>)
 id 69d4a181-2eae-0a2a0a5409dd-0a2a45078ba4-38
 for <xen-devel@lists.xenproject.org>; Tue, 07 Apr 2026 08:18:07 +0200
Received: from [209.85.128.50] (helo=mail-wm1-f50.google.com)
 by tlsNG-ef75cf.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.0)
 (envelope-from <jbeulich@suse.com>)
 id 69d4a19f-ba2d-0a2a45070019-d1558032dcf1-3
 for <xen-devel@lists.xenproject.org>; Tue, 07 Apr 2026 08:18:07 +0200
Received: by mail-wm1-f50.google.com with SMTP id
 5b1f17b1804b1-488ba6366a7so8336695e9.0
 for <xen-devel@lists.xenproject.org>; Mon, 06 Apr 2026 23:18:07 -0700 (PDT)
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-488b6ff70bcsm182479135e9.14.2026.04.06.23.18.06
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Mon, 06 Apr 2026 23:18: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=google header.d=suse.com header.i="@suse.com" header.h="Content-Transfer-Encoding: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=1775542687; x=1776147487; darn=lists.xenproject.org;
        h=content-transfer-encoding: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;
        bh=kcQFR3uT498ouHE205N7B6E8t/HZpBYCNaFWd85c+vY=;
        b=dPdpR11rz1CUu4NL1WbwEuYCeWLrJiQyFcOVC1ruqLf+YaYaZANYuFozbR6XuSx/IJ
         1mgXW42wgZcrN4iHeUbftkKw5kWwdCGxkUJZq57LmOGdX71OdBzWtybk+QxyztoilRdw
         AKF9Vt4oNy+/+DUFrK6U8A7DCj4zA5zPFLJLis5AmNVSrNxaTmgUDzWYrap+ZgoSAjkv
         yELcQANWf8ftJ/pC3yIYg0I5d33f0YI66POZk5sy0uvJ+5zV5F6MwUto8fIqrrJjvNTh
         l3IdRGS6rPwoizp6iqd1IvAd01Y5pnn7al386sxs1nSygpa8QK/xAhnxSplAP+RMktWP
         K4kA==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20251104; t=1775542687; x=1776147487;
        h=content-transfer-encoding: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;
        bh=kcQFR3uT498ouHE205N7B6E8t/HZpBYCNaFWd85c+vY=;
        b=i93atXPqxid2c9a+qz4fMYKeZeL80LF68cX8+20ccePjiNZFZ8f4dqLvw4fMmKY+0S
         4wOR1odV/wkZtvxROl6l47QUU1/ivxQcU4BXAsFOzTNClGQ3s1ubTKRv0dN+7/zM/cj1
         +/u9alADTlz+EcoiHdNLw1ao5g+WhKssykcghuoYKhZX4phoAq86rfKxOxocOs+uFSt4
         6WkCLMl35u2arUJoeIYbsC30aprya4BUiuMQdoTjdSVYxFKSb/O9+13uqjbCx+BVaAtv
         CxmcubXGxT9sNHFr0S+iaMqNgEsfbbXQYXlUMfNc0FcTfdc9jaDwA1CKOPN/D+7ubkP9
         oCNA==
X-Forwarded-Encrypted: i=1; AJvYcCVzCdxUt+YNZHJNa8NbTa21hv4UkH2J8eplD27r4HnqrL7HVSh1LiaXx8APFWWonvZRNQZe0sQvupI=@lists.xenproject.org
X-Gm-Message-State: AOJu0YyUKCTPeVQmYGZMHDOU+5kg3F2duN/IBuGt3uXEZXVwzNvOhuI2
	TboAAuPPk+icG07RV7rQvi7sTTB0lwTIOjHe5ia1YQXdCtGzm6LJ0SV2VRT6Mud5sg==
X-Gm-Gg: AeBDiesG0PPFak+j0ZBxIZsWyyb2B9lMhM3qLHnaU6u90ZCsPgW4mRiux3c6lRYqKpl
	QXPsdmndK3zDJPVo4lJV/Rk/pOU5xjuF5/TJXlwg9ZogtGMshI0LIbxgWp4hbKNkeQNA8wLGKY+
	0YlW/ywb3tiHe83VGe9rRCeHWUQYNYPr/Oh7vW1pQ0o4UQOmPQdn4Y+rPUfx2d3Yj79ptPnbu8+
	iRYstPNpWrsL3/W9ffB8r5TWPbLkMQleqHBVobJrvevZMCdR4tIYC1Kl0w0g4huB9RBUkN3+Zjf
	gW0Gd9c11gkb2F6B6f3J8Y7y8z8eBYmhtYcTnhByOZ2O2XVLG3yMpI+gmFzP5isstLmVgliZFEA
	jiXJIBMSZTGJwLigUadzgWo1p/bETcRbM77m16UiozgwFi5uaZIf+0Mrkfd+3kFEunJdTdk8V9o
	FdeoidIRiM5tr5WGHPMuogGd/xFllYf3ufKp5uG8W6Wmp20IKCczKxSUkHhZKBwCAP0KEvbNS9W
	yBn/kLWsn0G4Zg=
X-Received: by 2002:a05:600c:a009:b0:488:ab26:8fe0 with SMTP id 5b1f17b1804b1-488ab26986cmr116328825e9.15.1775542686718;
        Mon, 06 Apr 2026 23:18:06 -0700 (PDT)
Message-ID: <4dfd48a9-37c1-4f28-87f3-19646a339b08@suse.com>
Date: Tue, 7 Apr 2026 08:18:10 +0200
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH v3] arinc653: don't assume Dom0 is the control domain
To: Stewart Hildebrand <stewart.hildebrand@amd.com>
Cc: Nathan Studer <nathan.studer@dornerworks.com>,
 Stewart Hildebrand <stewart@stew.dk>,
 "xen-devel@lists.xenproject.org" <xen-devel@lists.xenproject.org>,
 =?UTF-8?B?SsO8cmdlbiBHcm/Dnw==?= <jgross@suse.com>
References: <89d17a24-0a1f-4f3f-ac2f-f3701a8d78dd@suse.com>
 <4a4c011e-9666-4416-be1b-33d1dcad5afe@suse.com>
 <73e51afc-ae7c-4d08-9054-75dab660bf42@suse.com>
 <ca934061-f3e2-4511-bdad-465c4f2d0de1@suse.com>
 <fa04f9e1-bc9e-4b34-84f4-dc7ca8999eb3@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: <fa04f9e1-bc9e-4b34-84f4-dc7ca8999eb3@amd.com>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
X-purgate-ID: tlsNG-ef75cf/1775542687-10F5E41E-53F6A628/0/0
X-purgate-type: clean
X-purgate-size: 4508

On 03.04.2026 10:47, Stewart Hildebrand wrote:
> On 4/1/26 09:03, Jan Beulich wrote:
>> On 01.04.2026 14:57, Jürgen Groß wrote:
>>> On 01.04.26 14:29, Jan Beulich wrote:
>>>> Leaving aside highly disaggregated environments, the control domain is
>>>> what will invoke XEN_SYSCTL_SCHEDOP_putinfo. Its vCPU-s therefore need to
>>>> be able to run unconditionally, not those of the domain with ID 0 (which
>>>> may not exist at all).
>>>>
>>>> Fixes: 9f0c658baedc ("arinc: add cpu-pool support to scheduler")
>>>> Signed-off-by: Jan Beulich <jbeulich@suse.com>
>>>> ---
>>>> There being no "else" to the if(), what about other control domain vCPU-s?
>>>
>>> I guess this is a stale leftover. Doesn't matter for committing anyway.
>>>
>>>> ---
>>>> v3: Don't mistakenly include the idle domain.
>>>> v2: New.
>>>>
>>>> --- a/xen/common/sched/arinc653.c
>>>> +++ b/xen/common/sched/arinc653.c
>>>> @@ -411,10 +411,10 @@ a653sched_alloc_udata(const struct sched
>>>>       spin_lock_irqsave(&sched_priv->lock, flags);
>>>>   
>>>>       /*
>>>> -     * Add every one of dom0's units to the schedule, as long as there are
>>>> -     * slots available.
>>>> +     * Add every one of the control domain's units to the schedule, as long as
>>>> +     * there are slots available.
>>>>        */
>>>> -    if ( unit->domain->domain_id == 0 )
>>>> +    if ( is_control_domain(unit->domain) && !is_idle_domain(unit->domain) )
>>>>       {
>>>>           entry = sched_priv->num_schedule_entries;
>>>>   
>>>
>>> Hmm, is it really the control domain only which wants to be scheduled initially?
>>> I would think that at least the hardware domain and probably a Xenstore domain
>>> would want to be included, too.
>>>
>>> In the end it might even be that other domains created via dom0less would want
>>> to be able to run initially. They could be part of a mandatory infrastructure.
>>> Why would they need to be created at boot if they are NOT important?
>>
>> This part is easy to answer: Because in a dom0less setup you simply may have
>> no toolstack at all. (At which point there may also be nothing to set a
>> schedule, yes.)
> 
> This is a known limitation. In a dom0less/hyperlaunch scenario, as future work,
> I would like to see the ability to configure the ARINC653 schedule in device
> tree, which would likely extend the existing boot time cpu pool work.
> 
>>> The question is whether the arinc653 scheduler is really meant for such setups.
>>> OTOH just modifying the test to:
>>>
>>>      if ( system_state < SYS_STATE_active &&
>>>           unit->domain->domain_id < DOMID_FIRST_RESERVED )
>>>
>>> seems to be fine for catching all those cases.
>>>
>>> With or without this modification:
>>>
>>> Reviewed-by: Juergen Gross <jgross@suse.com>
>>
>> Thanks, yet I'll have to leave to the maintainers to decide which form it
>> should ultimately take. One remark: A restartable control domain wouldn't
>> pass that conditional. Granted that's looking far into the future.
> 
> It may not be desirable to schedule domUs until the control domain has had a say
> in the matter, considering that the default schedule is unlikely to contain the
> desired minor frame runtimes. It's less clear whether to include hardware and
> xenstore domains in the default schedule, though I'm leaning toward only
> including the domain with ability to invoke XEN_SYSCTL_SCHEDOP_putinfo for now
> (i.e. the control domain).
> 
> Hm, the suggested 'system_state < SYS_STATE_active' check is possibly a good
> addition. This reinforces that the default schedule's purpose is merely to get a
> system booting until a user-provided schedule can be installed. Without this
> check, restarting the control domain could result in new entries being added
> while old entries remain, possibly ending up with duplicates and/or exhausting
> the schedule. However, the restarted domain would need to retain its uuid if it
> expects to be scheduled after restart.
> 
> Lastly, we may consider restricting the default schedule to Pool-0, and
> eventually we may want a mechanism to disable the default schedule altogether
> (e.g. when boot time cpupools are in use), but I don't think it's necessary to
> conflate those with the current patch.

So what does all of this mean for the patch here? Should I switch to Jürgen's
suggestion? Should I merely add the system_state check, but otherwise keep as
is? Or should I not change anything?

Jan


From xen-devel-bounces@lists.xenproject.org Tue Apr 07 06:23:29 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 07 Apr 2026 06:23:29 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1274458.1560558 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1w9zqP-0004q7-4i; Tue, 07 Apr 2026 06:23:25 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1274458.1560558; Tue, 07 Apr 2026 06:23: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 1w9zqP-0004q0-29; Tue, 07 Apr 2026 06:23:25 +0000
Received: by outflank-mailman (input) for mailman id 1274458;
 Tue, 07 Apr 2026 06:23:23 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <jbeulich@suse.com>) id 1w9zqN-0004pu-17
 for xen-devel@lists.xenproject.org; Tue, 07 Apr 2026 06:23:23 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1w9zqM-00Enko-9R
 for xen-devel@lists.xenproject.org; Tue, 07 Apr 2026 08:23:22 +0200
Received: from [10.42.69.8] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <jbeulich@suse.com>)
 id 69d4a2c5-2eae-0a2a0a5409dd-0a2a4508dbbc-46
 for <xen-devel@lists.xenproject.org>; Tue, 07 Apr 2026 08:23:22 +0200
Received: from [209.85.221.50] (helo=mail-wr1-f50.google.com)
 by tlsNG-c1860d.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.0)
 (envelope-from <jbeulich@suse.com>)
 id 69d4a2d9-fab6-0a2a45080019-d155dd32bd34-3
 for <xen-devel@lists.xenproject.org>; Tue, 07 Apr 2026 08:23:22 +0200
Received: by mail-wr1-f50.google.com with SMTP id
 ffacd0b85a97d-43cfd96354aso2750385f8f.1
 for <xen-devel@lists.xenproject.org>; Mon, 06 Apr 2026 23:23:22 -0700 (PDT)
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-43d1e4f5016sm50659184f8f.33.2026.04.06.23.23.20
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Mon, 06 Apr 2026 23:23:21 -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=google header.d=suse.com header.i="@suse.com" header.h="Content-Transfer-Encoding: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=1775543001; x=1776147801; darn=lists.xenproject.org;
        h=content-transfer-encoding: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;
        bh=NgWmYvzi0YbSz0p3AjXF31b3cTUVzBHVKyfc4bMxKIo=;
        b=DLNWMdCMJkhZ/XO7zy+vifh4BIYtlI+TlTMfXqW32smU4qiMoyb+1PD3F/kxZr1OLq
         gznV8tL/GG49CVGRMC0EkQuBtNSGC5rAJkXNnNlR2Bo6zWp8yH00DlrFm9Ao2Rzq3UI8
         C1ryiVakK5c71bm5OnEYZSYeuA84+899q115npTqOBAL+BYmPb2WHhdWUJmA3Km4iPM5
         ghi3chHVja1F40CGeFc4pRCJ9HrcDrbHzeDe1+0/B2Xn6uxM9rofF00+mHNWTXCfFBhm
         YgT8ITqGR4E1DI73R2IHZLlFzSPdgLOdFmqaeDoRJltrWsKIoEmRVZHe1v5oGlOb6Q9x
         Trig==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20251104; t=1775543001; x=1776147801;
        h=content-transfer-encoding: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;
        bh=NgWmYvzi0YbSz0p3AjXF31b3cTUVzBHVKyfc4bMxKIo=;
        b=TA/f3jDJYpDYhpzen4WGJ7jUK0NZTjWTt4WAFVXf5OryqqTtJ7FY25JY91idOKhdAg
         8LJ9J/xoFd0bUb2+q5eH2WeAdACa4MRUJj+eK9MiolEAQoE+ePYPEuGiJzti85ZHgk/2
         h1dprcZcrlip2aY/Zp7kixVr6ATf1QYf3OIFD6iNhrgr2jXVnPj9dA/0dHk4UIRRGc8b
         pVNBnYEvf6BSNnHvf5GqOVUQ8ePwN0f+IScdGbNaE0Dltghziv8JCo+ddiEFq51EWlt7
         3CfIjaiB9nyTQz7bst45SeJMZzYM7BQunrGnyfGYOyq5F7ZBHtuxFbngsgbHl9WppjAv
         VSqA==
X-Forwarded-Encrypted: i=1; AJvYcCXt/szULc55F66b2FUD3w6VWSHm9bIcGIa42gI+efFj7pwxFdMXwId/I22ktVHqe8lc+JEI5k29dfc=@lists.xenproject.org
X-Gm-Message-State: AOJu0YwShp5+Pm/LFFH8G09A2ujOYb6nu9Q8S9XXScISI10dBWPAyInW
	ZzQ1mPmqtBhhwI6b0FvGlozt2piE5B3fUqMCv7JHp+WA550z8vkAA85EhSc1YKaeWQ==
X-Gm-Gg: AeBDiev3IZF56xQWUuKbq8Qb85veWUnNhpmz/3vM5IOu4LTOoLapTPhwATfNxitCGEU
	v/SfaBIRuexWWbX0tqo5o/eaIumRbeo83MsQ+HQP3bqSH7xFLluOZsBDdRIIDdp19iY939f+AF3
	UEli7bzZ/ICKrQMyFmvayVCOQdqiZIqakhQPBQUc7Qsio69d7cvO7aE34joqbL9d+7FcpU1zdxo
	qZ5dlpo4X40o4a4xY/O9wzm7dw9ZC6/+NI+t4FY5YTjteWnzI3VB4vU87r66/2mFGSFlQpSwTuV
	NivC8MD7HWjBhoRa51rzuRYotYBLGMfSv6GtW4j+H55j/EWbIS/FGLCNB3mMXTY+IP/959iYIA9
	v0uNEj63FXfY2wJkSWtIomaUJ1gMVnkf2qvUGXtw5AGzMz2mdMDxTGqhhPIqy+XQrSpIgpQMPdp
	5+m9Zdsa/2tM7igAsg5HfR7xAiY1Qma1tKfm5jafmIYbt5Rf1DHcRxxVx/qdPG5He2DV/Co+wZk
	UNQG/yg4lVQTakiuaRYGQT/Pw==
X-Received: by 2002:a05:6000:26c7:b0:43c:f793:f1c5 with SMTP id ffacd0b85a97d-43d292e1b17mr22651651f8f.34.1775543001562;
        Mon, 06 Apr 2026 23:23:21 -0700 (PDT)
Message-ID: <4a1f7cfb-df74-4083-a681-f79911da10e1@suse.com>
Date: Tue, 7 Apr 2026 08:23:25 +0200
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH v2 10/11] xen/riscv: add definition of guest RAM banks
To: Oleksii Kurochko <oleksii.kurochko@gmail.com>
Cc: Romain Caritey <Romain.Caritey@microchip.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.pau@citrix.com>,
 Stefano Stabellini <sstabellini@kernel.org>, xen-devel@lists.xenproject.org
References: <cover.1774281309.git.oleksii.kurochko@gmail.com>
 <8278256f3d270b456d19cb9891b89b88a46548a5.1774281309.git.oleksii.kurochko@gmail.com>
 <1a3a316e-f0ea-4514-95d6-9813d6d5ca76@suse.com>
 <691be850-9145-4bbf-a897-d10a0193b730@gmail.com>
 <dfd2a666-f3a5-4d88-b034-438f8fbb85ba@suse.com>
 <2bae9e12-8f71-4ff0-b077-bfb4215e5e14@gmail.com>
 <ffd3a7cd-8c47-4a9b-864a-26a053b5b7d2@suse.com>
 <bc5a9826-c1ff-43b2-a3d1-1a4862301aea@gmail.com>
 <0e37083a-42ab-4c99-83fc-b77f519394b9@suse.com>
 <912263a2-8dff-414e-bea4-64428ce2ec36@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: <912263a2-8dff-414e-bea4-64428ce2ec36@gmail.com>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 7bit
X-purgate-ID: tlsNG-c1860d/1775543002-94365497-10DC61EB/0/0
X-purgate-type: clean
X-purgate-size: 2822

On 06.04.2026 17:43, Oleksii Kurochko wrote:
> 
> 
> On 4/1/26 5:10 PM, Jan Beulich wrote:
>> On 01.04.2026 16:53, Oleksii Kurochko wrote:
>>>
>>>
>>> On 4/1/26 4:22 PM, Jan Beulich wrote:
>>>> On 01.04.2026 15:57, Oleksii Kurochko wrote:
>>>>> On 4/1/26 8:17 AM, Jan Beulich wrote:
>>>>>> On 31.03.2026 18:14, Oleksii Kurochko wrote:
>>>>>>> On 3/30/26 5:51 PM, Jan Beulich wrote:
>>>>>>>> On 23.03.2026 17:29, Oleksii Kurochko wrote:
>>>>>>>>> The dom0less solution uses defined RAM banks as compile-time constants,
>>>>>>>>> so introduce macros to describe guest RAM banks.
>>>>>>>>>
>>>>>>>>> The reason for 2 banks is that there is typically always a use case for
>>>>>>>>> low memory under 4 GB, but the bank under 4 GB ends up being small because
>>>>>>>>> there are other things under 4 GB it can conflict with (interrupt
>>>>>>>>> controller, PCI BARs, etc.).
>>>>>>>> Fixed layouts like the one you suggest come with (potentially severe)
>>>>>>>> downsides. For example, what if more than 2Gb of MMIO space are needed
>>>>>>>> for non-64-bit BARs?
>>>>>>> It looks where usually RAM on RISC-V boards start, so I expect that 2gb
>>>>>>> before RAM start is enough for MMIO space.
>>>>>> Likely in the common case. Board designers aren't constrained by this,
>>>>>> though (aiui). Whereas you set in stone a single, fixed layout.
>>>>>>
>>>>>> Arm maintainers - since a similar fixed layout is used there iirc,
>>>>>> could you chime in here, please?
>>>>>>
>>>>>>> Answering your question it will be an issue or it will also use some
>>>>>>> space before banks, no?
>>>>>> I fear I don't understand what you're trying to tell me.
>>>>> I meant that there is also some space between banks and pretty big which
>>>>> could be used for MMIO which could be used for non-64-bit BARs.
>>>> I don't follow: Bank 0 extends to 4G. There's no space above it, below
>>>> bank 1, which could be use for non-64-bit BARs.
>>>
>>> So we have two banks:
>>> bank[0] -> [0x80000000, 0x100000000)
>>> bank[1] -> [0x0200000000, 10000000000)
>>>
>>> So i think we have some space between them [0x100000000, 0x0200000000)
>>> -> 4gb to be used for non-64-bit BARs.
>>
>> But a non-64-bit BAR need to be assigned an address below 0x100000000?
> 
> Right, I had in mind that RV32 uses for guest Sv32x4 which could 
> translate 34-bit GPA into 34-bit MPA and automatically applied that to 
> 32-bit BAR...
> 
> I can keep first 4gb for MMIO purpose and start bank[0] at 4gb as 34 MPA 
> address space is more then enough to cover reserved 2gb of bank[0] after 
> 4gb.

Yet having no memory below 4G won't work for guests wanting to run in bare
mode? Don't guests even start up in bare mode (and hence 32-bit ones need
to have some of their memory below 4G in all cases)?

Jan


From xen-devel-bounces@lists.xenproject.org Tue Apr 07 06:29:51 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 07 Apr 2026 06:29:51 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1274467.1560568 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1w9zwY-0005a2-Pr; Tue, 07 Apr 2026 06:29:46 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1274467.1560568; Tue, 07 Apr 2026 06:29: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 1w9zwY-0005Zv-ND; Tue, 07 Apr 2026 06:29:46 +0000
Received: by outflank-mailman (input) for mailman id 1274467;
 Tue, 07 Apr 2026 06:29:46 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <jbeulich@suse.com>) id 1w9zwX-0005Zn-TI
 for xen-devel@lists.xenproject.org; Tue, 07 Apr 2026 06:29:46 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1w9zwW-002wGl-Oa
 for xen-devel@lists.xenproject.org; Tue, 07 Apr 2026 08:29:44 +0200
Received: from [10.42.69.7] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <jbeulich@suse.com>)
 id 69d4a453-e002-0a2a0a5209dd-0a2a4507c196-12
 for <xen-devel@lists.xenproject.org>; Tue, 07 Apr 2026 08:29:44 +0200
Received: from [209.85.128.53] (helo=mail-wm1-f53.google.com)
 by tlsNG-ef75cf.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.0)
 (envelope-from <jbeulich@suse.com>)
 id 69d4a458-ba2d-0a2a45070019-d1558035b044-3
 for <xen-devel@lists.xenproject.org>; Tue, 07 Apr 2026 08:29:44 +0200
Received: by mail-wm1-f53.google.com with SMTP id
 5b1f17b1804b1-483487335c2so46425025e9.2
 for <xen-devel@lists.xenproject.org>; Mon, 06 Apr 2026 23:29:44 -0700 (PDT)
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-488a952a03asm208520745e9.0.2026.04.06.23.29.43
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Mon, 06 Apr 2026 23:29:43 -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=google header.d=suse.com header.i="@suse.com" header.h="Content-Transfer-Encoding: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=1775543384; x=1776148184; darn=lists.xenproject.org;
        h=content-transfer-encoding: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;
        bh=WmBu01omlfL0EofBvdpIQmLKev+Oe6Ag+IYd2qaMnWU=;
        b=JusGcv3M23qZwRPggxasE/Pt38RJdSJkzmgYRa3B9ezNw7oHBLvzMWQLTkWRHQ4a6U
         WBTeUlzrzcHKqguE67jiAMT+9aHfJxNQtyIHu/xVhG3prB1/B6qy0ERVuZjzE0tZUckj
         BGLIXG7H5uYjBSNJGKkr+oMyCM5MfI/gOXHaqrTbzCqiEGJwVMo6Ed4BTTKnEV2cyp+y
         iklEGsIjnAACEO/3Tn7rtxqRi2I7Y2wcinHKWVs7mj5rCvDaH5pWky5sERrV7hnv92is
         Fqh1B+dKOYCtaMFQ64I0OYhuRCePLpcZMT/QA+0QORu4kecrYjureJt1HrvE6nb3ANy6
         0MWA==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20251104; t=1775543384; x=1776148184;
        h=content-transfer-encoding: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;
        bh=WmBu01omlfL0EofBvdpIQmLKev+Oe6Ag+IYd2qaMnWU=;
        b=aVqDvXQencNXol3OQ2/R36MNv8t4+JU3ehO60WiXiwrLMGi9982oRHkkOFrJKBkOaX
         ytDH7m/damgSpmVjhGaCFik+YbzVyrTRJADN0AGjox7+/PKeVh+ycz3pv5f+8viC/5Yg
         37/8DAODwIzqgvzPz6G8cX5taEYXSYExjMQ3ZXGh+uVvUkc1xZuoQjATyPaFAd1d/pOw
         oXM+RYedO6BRMIusywwmtqr8b1Wsxdlqospg39zDgz2Pe7lvEwiSq9KozgTD7JT7eONc
         AHm/lAdithL4r7Aw8dNsC/02RZ9yurDqYaRUdwUvGV4SFmN1w9x00okFqR/ENAvbNebJ
         LvSQ==
X-Gm-Message-State: AOJu0Yx71bisqK137nhtcoofTmt+at4GqfQ9VpBxDSwWVGXcqBa935/z
	1DEdQyvpqjJXjsQH0ybFhqmymLLUi7MNdC753GSePehWGxakLJWC7VQcjVW73CqxGw==
X-Gm-Gg: AeBDiev8uSQdByR1eDWTWkeucTHyZHrqna+b6n/KFM1HzOYBtlCrys0iZD6fkHGfx7a
	t0cspodfy8XLgLKYjoyvHqy1dn0zn9G6MBSGqiOXXK1go6xy2ykdPOX8CImuEl4ObFrPBBrm6Fe
	wZ0JdqhUzPUtaXTNd1Zi9axCHvlrvm+0Tk2O49G18OeCCTt0WuFesYt2hGGh3bsqecI3Hd+tSsd
	2SyAhb4TSXrkErOjoIoNBX0ERHuDEiwt8GnWtUiWV3ODuSPmnU3e4UXmSBjs4GEbD3v/s7uxiB9
	KRF2NMYcdboGOtUdYdrlYlmCpmQyVRFuO5lpI07ZFIv5h2cXGib9fB0c9rBxD4FvNzOKd1NnCU8
	UDbK5sXk1vBhbbcujAzGpxSoWl5cOpLL4VK2J6KUg6DTvctkN5C8s9uhta/aNHCH4MxB6kyh4/B
	Pm4yFpHJ76cGy9bHVedSnkz0FW2ZcWNsKVJlwx1SVWfDR5VXjGZ9kPv+DgkIk567BTyDkH2ntRa
	hWO8sFKF5foEUBMCG6JlTuLXA==
X-Received: by 2002:a05:600c:5292:b0:485:2a85:e5ec with SMTP id 5b1f17b1804b1-488996e0ce0mr234267685e9.2.1775543383656;
        Mon, 06 Apr 2026 23:29:43 -0700 (PDT)
Message-ID: <47b140b2-596b-47db-9c0c-43672f445036@suse.com>
Date: Tue, 7 Apr 2026 08:29:48 +0200
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: IOMMU faults after S3
To: =?UTF-8?Q?Marek_Marczykowski-G=C3=B3recki?=
 <marmarek@invisiblethingslab.com>
Cc: xen-devel <xen-devel@lists.xenproject.org>
References: <e8bbaae2-5cff-4549-9f27-fbbda7346f60@suse.com>
 <090b8b8f-141b-4a24-92eb-879c0a0c73e1@suse.com> <ac2nibFfvGm_7elv@mail-itl>
 <933a3e95-33d2-4e20-a4d5-2d8b20c2da7f@suse.com> <ac4kCq87SQSc6ddV@mail-itl>
 <aa6910f1-365a-4534-b229-9730b3aede02@suse.com> <ac44SVW1cPhKYFKU@mail-itl>
 <2caff339-4ce9-42ea-9b78-afeac42b6f0f@suse.com> <ac6Bg21hMLBRDNdm@mail-itl>
 <92e0151b-3fb1-4108-9788-f0fbac43512b@suse.com> <ac72dp3yEHikJzw2@mail-itl>
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: <ac72dp3yEHikJzw2@mail-itl>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
X-purgate-ID: tlsNG-ef75cf/1775543384-10D5F41E-EBD2CF76/0/0
X-purgate-type: clean
X-purgate-size: 7845

On 03.04.2026 01:06, Marek Marczykowski-Górecki wrote:
> On Thu, Apr 02, 2026 at 04:53:31PM +0200, Jan Beulich wrote:
>> On 02.04.2026 16:47, Marek Marczykowski-Górecki wrote:
>>> On Thu, Apr 02, 2026 at 12:48:14PM +0200, Jan Beulich wrote:
>>>> On 02.04.2026 11:35, Marek Marczykowski-Górecki wrote:
>>>>> On Thu, Apr 02, 2026 at 10:39:41AM +0200, Jan Beulich wrote:
>>>>>> On 02.04.2026 10:08, Marek Marczykowski-Górecki wrote:
>>>>>>> The xl dmesg output (from MTL this time):
>>>>>>>
>>>>>>>     (XEN) [  123.477511] Entering ACPI S3 state.
>>>>>>>     (XEN) [18446743903.571842] _disable_pit_irq:2649: using_pit: 0, cpu_has_apic: 1
>>>>>>>     (XEN) [18446743903.571856] _disable_pit_irq:2659: cpuidle_using_deep_cstate: 1, boot_cpu_has(X86_FEATURE_XEN_ARAT): 0
>>>>>
>>>>>> Hmm, but what you didn't log is whether __hpet_setup_msi_irq() actually
>>>>>> succeeded everywhere. (And if it did, also logging HPET_Tn_ROUTE() values
>>>>>> might be a good idea, if only to double check.)
>>>>>
>>>>> Updated output:
>>>>>
>>>>>     (XEN) [18446743899.720395] _disable_pit_irq:2649: using_pit: 0, cpu_has_apic: 1
>>>>>     (XEN) [18446743899.720409] _disable_pit_irq:2659: cpuidle_using_deep_cstate: 1, boot_cpu_has(X86_FEATURE_XEN_ARAT): 0
>>>>>     (XEN) [18446743899.720420] _disable_pit_irq:2662: init: 0
>>>>>     (XEN) [18446743899.720431] hpet_broadcast_resume:663: hpet_events: ffff83046bc1f080
>>>>>     (XEN) [18446743899.720579] hpet_broadcast_resume:674: num_hpets_used: 8
>>>>>     (XEN) [18446743899.720587] hpet_broadcast_resume:692: cfg: 0x1
>>>>>     (XEN) [18446743899.720599] hpet_broadcast_resume:697: i:0, hpet_events[i].msi.irq: 122, hpet_events[i].flags: 0
>>>>>     (XEN) [18446743899.720612] hpet_msi_write:283: iommu_intremap: 2 (iommu_intremap_off: 0), HPET_Tn_ROUTE(ch->idx): 0x110
>>>>>     (XEN) [18446743899.720638] hpet_msi_write:287: iommu_update_ire_from_msi rc: 0
>>>>
>>>> So it succeeds, and the low half of HPET_Tn_ROUTE also looks plausible. The high
>>>> half is, however, the address that the low half value is written to. It's hard
>>>> to imagine that it would be zero when the low half isn't, but it is about the
>>>> last thing I can think of which could explain observed behavior. (Yet then, all
>>>> of this is pretty meaningless; see below.)
>>>>
>>>>> And the current debug diff attached.
>>>>
>>>> Hmm, you log HPET_Tn_ROUTE _before_ our update. That's not very useful. You want
>>>> to move that part of logging to the bottom of hpet_msi_write(), or maybe to
>>>> where you also log the per-channel cfg value in hpet_broadcast_resume() (thus
>>>> making the logging overall less verbose).
>>>
>>> This test is with the updated patch (attached) + your extra
>>> calculate_host_policy() call and "no-arat" on cmdline:
>>
>> And IOMMU faults still occurring as before, I expect.
>>
>> Sadly you now log the low halves of HPET_Tn_ROUTE twice, while you don't log
>> the high halves at all.
> 
> I was missing hpet_read32 there...
> 
> Updated:
> (XEN) [  116.921573] Entering ACPI S3 state.
> (XEN) [18446743895.088893] _disable_pit_irq:2649: using_pit: 0, cpu_has_apic: 1
> (XEN) [18446743895.088907] _disable_pit_irq:2659: cpuidle_using_deep_cstate: 1, boot_cpu_has(X86_FEATURE_XEN_ARAT): 0
> (XEN) [18446743895.088918] _disable_pit_irq:2662: init: 0
> (XEN) [18446743895.088928] hpet_broadcast_resume:662: hpet_events: ffff83046bc1f080
> (XEN) [18446743895.089072] hpet_broadcast_resume:673: num_hpets_used: 8
> (XEN) [18446743895.089081] hpet_broadcast_resume:691: cfg: 0x1
> (XEN) [18446743895.089092] hpet_broadcast_resume:696: i:0, hpet_events[i].msi.irq: 122, hpet_events[i].flags: 0
> (XEN) [18446743895.089122] hpet_msi_write:286: iommu_update_ire_from_msi rc: 0
> (XEN) [18446743895.089132] hpet_broadcast_resume:700: i:0, __hpet_setup_msi_irq ret: 0
> (XEN) [18446743895.089168] hpet_broadcast_resume:710: i:0, cfg: 0xc134, hpet_read32(HPET_Tn_ROUTE(hpet_events[i].idx)): 0, hpet_read32(HPET_Tn_ROUTE(hpet_events[i].idx) + 4): 0xf18

Okay, this would appear to clarify that the address really isn't correct. Yet I'm
confused now by the low half values: In your earlier log there was

hpet_broadcast_resume:710: i:0, cfg: 0xc134, HPET_Tn_ROUTE(hpet_events[i].idx): 0x110

and alike, i.e. clearly a non-zero value. Now all low halves are zero. I'll try
to figure how the logged values here could result, but consistent data (or an
explantation for the apparent inconsistency) would help.

Jan

> (XEN) [18446743895.089180] hpet_broadcast_resume:696: i:1, hpet_events[i].msi.irq: 123, hpet_events[i].flags: 0
> (XEN) [18446743895.089203] hpet_msi_write:286: iommu_update_ire_from_msi rc: 0
> (XEN) [18446743895.089213] hpet_broadcast_resume:700: i:1, __hpet_setup_msi_irq ret: 0
> (XEN) [18446743895.089242] hpet_broadcast_resume:710: i:1, cfg: 0xc104, hpet_read32(HPET_Tn_ROUTE(hpet_events[i].idx)): 0, hpet_read32(HPET_Tn_ROUTE(hpet_events[i].idx) + 4): 0xf38
> (XEN) [18446743895.089254] hpet_broadcast_resume:696: i:2, hpet_events[i].msi.irq: 124, hpet_events[i].flags: 0
> (XEN) [18446743895.089278] hpet_msi_write:286: iommu_update_ire_from_msi rc: 0
> (XEN) [18446743895.089288] hpet_broadcast_resume:700: i:2, __hpet_setup_msi_irq ret: 0
> (XEN) [18446743895.089316] hpet_broadcast_resume:710: i:2, cfg: 0xc104, hpet_read32(HPET_Tn_ROUTE(hpet_events[i].idx)): 0, hpet_read32(HPET_Tn_ROUTE(hpet_events[i].idx) + 4): 0xf58
> (XEN) [18446743895.089327] hpet_broadcast_resume:696: i:3, hpet_events[i].msi.irq: 125, hpet_events[i].flags: 0
> (XEN) [18446743895.089350] hpet_msi_write:286: iommu_update_ire_from_msi rc: 0
> (XEN) [18446743895.089361] hpet_broadcast_resume:700: i:3, __hpet_setup_msi_irq ret: 0
> (XEN) [18446743895.089390] hpet_broadcast_resume:710: i:3, cfg: 0xc104, hpet_read32(HPET_Tn_ROUTE(hpet_events[i].idx)): 0, hpet_read32(HPET_Tn_ROUTE(hpet_events[i].idx) + 4): 0xf78
> (XEN) [18446743895.089401] hpet_broadcast_resume:696: i:4, hpet_events[i].msi.irq: 126, hpet_events[i].flags: 0
> (XEN) [18446743895.089425] hpet_msi_write:286: iommu_update_ire_from_msi rc: 0
> (XEN) [18446743895.089436] hpet_broadcast_resume:700: i:4, __hpet_setup_msi_irq ret: 0
> (XEN) [18446743895.089465] hpet_broadcast_resume:710: i:4, cfg: 0xc104, hpet_read32(HPET_Tn_ROUTE(hpet_events[i].idx)): 0, hpet_read32(HPET_Tn_ROUTE(hpet_events[i].idx) + 4): 0xf98
> (XEN) [18446743895.089476] hpet_broadcast_resume:696: i:5, hpet_events[i].msi.irq: 127, hpet_events[i].flags: 0
> (XEN) [18446743895.089499] hpet_msi_write:286: iommu_update_ire_from_msi rc: 0
> (XEN) [18446743895.089509] hpet_broadcast_resume:700: i:5, __hpet_setup_msi_irq ret: 0
> (XEN) [18446743895.089540] hpet_broadcast_resume:710: i:5, cfg: 0xc104, hpet_read32(HPET_Tn_ROUTE(hpet_events[i].idx)): 0, hpet_read32(HPET_Tn_ROUTE(hpet_events[i].idx) + 4): 0xfb8
> (XEN) [18446743895.089551] hpet_broadcast_resume:696: i:6, hpet_events[i].msi.irq: 128, hpet_events[i].flags: 0
> (XEN) [18446743895.089574] hpet_msi_write:286: iommu_update_ire_from_msi rc: 0
> (XEN) [18446743895.089584] hpet_broadcast_resume:700: i:6, __hpet_setup_msi_irq ret: 0
> (XEN) [18446743895.089622] hpet_broadcast_resume:710: i:6, cfg: 0xc104, hpet_read32(HPET_Tn_ROUTE(hpet_events[i].idx)): 0, hpet_read32(HPET_Tn_ROUTE(hpet_events[i].idx) + 4): 0xfd8
> (XEN) [18446743895.089633] hpet_broadcast_resume:696: i:7, hpet_events[i].msi.irq: 129, hpet_events[i].flags: 0
> (XEN) [18446743895.089655] hpet_msi_write:286: iommu_update_ire_from_msi rc: 0
> (XEN) [18446743895.089665] hpet_broadcast_resume:700: i:7, __hpet_setup_msi_irq ret: 0
> (XEN) [18446743895.089702] hpet_broadcast_resume:710: i:7, cfg: 0xc104, hpet_read32(HPET_Tn_ROUTE(hpet_events[i].idx)): 0, hpet_read32(HPET_Tn_ROUTE(hpet_events[i].idx) + 4): 0xff8
> 
> 
> 
> 



From xen-devel-bounces@lists.xenproject.org Tue Apr 07 06:46:46 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 07 Apr 2026 06:46:46 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1274476.1560576 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wA0Cs-0008Lj-3E; Tue, 07 Apr 2026 06:46:38 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1274476.1560576; Tue, 07 Apr 2026 06:46: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 1wA0Cs-0008Lc-0H; Tue, 07 Apr 2026 06:46:38 +0000
Received: by outflank-mailman (input) for mailman id 1274476;
 Tue, 07 Apr 2026 06:46:37 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <jbeulich@suse.com>) id 1wA0Cq-0008LD-TH
 for xen-devel@lists.xenproject.org; Tue, 07 Apr 2026 06:46:37 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wA0Cp-0043PZ-QC
 for xen-devel@lists.xenproject.org; Tue, 07 Apr 2026 08:46:35 +0200
Received: from [10.42.69.3] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <jbeulich@suse.com>)
 id 69d4a837-2eae-0a2a0a5409dd-0a2a45038568-48
 for <xen-devel@lists.xenproject.org>; Tue, 07 Apr 2026 08:46:35 +0200
Received: from [209.85.128.53] (helo=mail-wm1-f53.google.com)
 by tlsNG-33051d.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.0)
 (envelope-from <jbeulich@suse.com>)
 id 69d4a84b-02b3-0a2a45030019-d1558035b54a-3
 for <xen-devel@lists.xenproject.org>; Tue, 07 Apr 2026 08:46:35 +0200
Received: by mail-wm1-f53.google.com with SMTP id
 5b1f17b1804b1-488b150559bso12177915e9.1
 for <xen-devel@lists.xenproject.org>; Mon, 06 Apr 2026 23:46:35 -0700 (PDT)
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-488b6ff70bcsm185497615e9.14.2026.04.06.23.46.34
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Mon, 06 Apr 2026 23:46:34 -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=google header.d=suse.com header.i="@suse.com" header.h="Content-Transfer-Encoding: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=1775544395; x=1776149195; darn=lists.xenproject.org;
        h=content-transfer-encoding:autocrypt:subject:from:cc:to
         :content-language:user-agent:mime-version:date:message-id:from:to:cc
         :subject:date:message-id:reply-to;
        bh=AaxfKa6gBRWbn+idURq+P+8t8PRpQz10PVpiC6aYltc=;
        b=bKCcSi+kx1j1DpKKeXc6Biw33JKo+hqtFYj0ZP1Ud62i9Eg/kI5sAvd4ahNqXjZUQq
         NAHixxNHTwClT1Qzgi4+trgxo8ZJX02HnNMYJ3vj3STnoXG0L9c6WZ5thXRU1TyXlppm
         FrNoBMyYZyGowFuHErFAlZt/SBA+RL35glzACgFNuQ3ZlKVs0OmhRWM01V1s3FgW+1Fj
         s0US53YwbfEsqtnI4TxMWqEW43NiOH5Ba2d+6M9j0bgoeh0W3fdlbcZuRnS/AZhZE9/N
         UtFX7yKfEqFJsmzKEJvg95xSLKKL47ZK/SZ5CfylnXxCpKCrFoQyuhB283me2q3Ls+ol
         pNmQ==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20251104; t=1775544395; x=1776149195;
        h=content-transfer-encoding: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;
        bh=AaxfKa6gBRWbn+idURq+P+8t8PRpQz10PVpiC6aYltc=;
        b=cW+i0HtcrAteLc/stc9vsrtLBHErh+yBUBF1/+KWd94+GPmmIlGUi3KiZ3UgWUovH8
         UgSxEuPJbyVUQTrHtl0HBWbZ2d94NJF12Ri07KPC8lLp2Js6ZAjJTrOM0Xm/Ne5BKegy
         rZIiSt4v3zDcDqWd3SEldTbsCs28YvWzbsCXmfRANgQBbFVAIwB3HPAtzs2yEIzbRpbw
         kmO0Q4xs1WXR5WM4vkuXhsJ0xvLB9Jf/aij+6iUDpQieNZJ6htGd5k6doed7hIbaIOG9
         2JGowo+glvsX1RIkKthmrMxOkb0N6YfIBQzoxyewNflIQ/KSjRxfZ6/sH/sfcY4e3oRf
         5Ubw==
X-Gm-Message-State: AOJu0YxEaFWljdmnFUji/GWd47ABkuc0h/yAk8VYsKFOWxfiFv6ql1Nk
	0ET+jg6o5Z2akHsqQOwdvhHdC+dL6/+gJFKlrgBcKeQn0YtVwbqBsiLtIVQIOzXCs55WgXJZCBa
	VAslgCQ==
X-Gm-Gg: AeBDievlzkQwO2tg9D9ukGSe2kMWI2PndLVDOiDACaajDgh+/YfinrtAzZ/Bp3p7k16
	m0CVRnwmeHeobzuree7wFxUOlQ74d3Pc1kVYAk6gFjS2MPN/DW4oKEKfN0X9FnojdYo3uy4srNw
	5owie1XZsVNUR0y3gMA8PGCuavL/U1Kd4sTAWlAlRKPJ5rY9E4mFbRjKTA2c8yzB7ZIXuVny9U+
	dNGp7PAiySz2l++ktrjUlfMTrmXwv90MtHA9SQ6swhh02aCjj6PdnQst3IXiP6p+bNzX835F6AN
	MrVzKhccZlzSMfOuIHwIieXVeTKw6sNUpJkniDu8zPi0K1SpDzElFqfNB6JYGft07xbUZiYqRqU
	wGfEQLU+gVIsU3qGRE3tGLMRrvBCe41rGBtYs3TVMJYKwXB8QsmLj7WfTZMmNHFU9zyRxWmLGKZ
	L1vowjfEQG/carearvJB/uedrs4bf6wW1j97maUBjcetN7VxI27Owoh6jhEib633bAYZuS3Ith3
	Y12tIL6/6iHmYjJwAdpWW/zWw==
X-Received: by 2002:a05:600c:3544:b0:485:303b:c50a with SMTP id 5b1f17b1804b1-488997352d3mr213101345e9.13.1775544395090;
        Mon, 06 Apr 2026 23:46:35 -0700 (PDT)
Message-ID: <6dccae5f-fe09-4f35-9e4a-7a38fb21e8d1@suse.com>
Date: Tue, 7 Apr 2026 08:46:39 +0200
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>,
 =?UTF-8?Q?Roger_Pau_Monn=C3=A9?= <roger.pau@citrix.com>,
 Marek Marczykowski <marmarek@invisiblethingslab.com>
From: Jan Beulich <jbeulich@suse.com>
Subject: [PATCH] x86/cpu-policy: set up host policy earlier
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: 8bit
X-purgate-ID: tlsNG-33051d/1775544395-47B2BC9A-AF9FE16B/0/0
X-purgate-type: clean
X-purgate-size: 2089

In order to use cpu_has_* expanding to host_cpu_policy.*, the host policy
needs setting up alongside boot_cpu_data.x86_capability[]. Arrange for
that towards the end of identify_cpu().

Fixes: 894bd7617924 ("x86/Intel: use host CPU policy for ARAT checking")
Reported-by: Marek Marczykowski-Górecki <marmarek@invisiblethingslab.com>
Signed-off-by: Jan Beulich <jbeulich@suse.com>
---
In the longer run we may need to (also) update the host policy from
setup_{force,clear}_cpu_cap().

This really was part of one of the XSTATE cleanup patches at the head of
the AMX series. This explains the specific placement ahead of the call to
xstate_init()). Likely anything from there downwards shouldn't really
live in identify_cpu() anyway.

--- a/xen/arch/x86/cpu/common.c
+++ b/xen/arch/x86/cpu/common.c
@@ -586,6 +586,8 @@ void identify_cpu(struct cpuinfo_x86 *c)
 	}
 
 	/* Now the feature flags better reflect actual CPU features! */
+	if (c == &boot_cpu_data)
+		calculate_host_policy();
 
 	xstate_init(c);
 
--- a/xen/arch/x86/cpu-policy.c
+++ b/xen/arch/x86/cpu-policy.c
@@ -359,7 +359,7 @@ void calculate_raw_cpu_policy(void)
     /* Was already added by probe_cpuid_faulting() */
 }
 
-static void __init calculate_host_policy(void)
+void __init calculate_host_policy(void)
 {
     struct cpu_policy *p = &host_cpu_policy;
     unsigned int max_extd_leaf;
@@ -904,6 +904,7 @@ static void __init calculate_hvm_def_pol
 
 void __init init_guest_cpu_policies(void)
 {
+    /* Do this a 2nd time to account for setup_{clear,force}_cpu_cap() uses. */
     calculate_host_policy();
 
     if ( IS_ENABLED(CONFIG_PV) )
--- a/xen/arch/x86/include/asm/cpu-policy.h
+++ b/xen/arch/x86/include/asm/cpu-policy.h
@@ -30,4 +30,10 @@ void recalculate_cpuid_policy(struct dom
  */
 void calculate_raw_cpu_policy(void);
 
+/*
+ * Collect the host CPU policy.  Called after collecting enough CPUID output,
+ * and again after all feature overrides have been put in place.
+ */
+void calculate_host_policy(void);
+
 #endif /* X86_CPU_POLICY_H */


From xen-devel-bounces@lists.xenproject.org Tue Apr 07 06:48:18 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 07 Apr 2026 06:48:18 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1274486.1560587 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wA0ET-0000aF-Ho; Tue, 07 Apr 2026 06:48:17 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1274486.1560587; Tue, 07 Apr 2026 06:48: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 1wA0ET-0000a8-E1; Tue, 07 Apr 2026 06:48:17 +0000
Received: by outflank-mailman (input) for mailman id 1274486;
 Tue, 07 Apr 2026 06:48:16 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <jbeulich@suse.com>) id 1wA0ES-0000a2-7a
 for xen-devel@lists.xenproject.org; Tue, 07 Apr 2026 06:48:16 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wA0ER-000JkJ-JG
 for xen-devel@lists.xenproject.org; Tue, 07 Apr 2026 08:48:15 +0200
Received: from [10.42.69.3] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <jbeulich@suse.com>)
 id 69d4a8af-5cb7-0a2a0a5109dd-0a2a4503cf04-0
 for <xen-devel@lists.xenproject.org>; Tue, 07 Apr 2026 08:48:15 +0200
Received: from [209.85.221.53] (helo=mail-wr1-f53.google.com)
 by tlsNG-33051d.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.0)
 (envelope-from <jbeulich@suse.com>)
 id 69d4a8af-02b3-0a2a45030019-d155dd35d444-3
 for <xen-devel@lists.xenproject.org>; Tue, 07 Apr 2026 08:48:15 +0200
Received: by mail-wr1-f53.google.com with SMTP id
 ffacd0b85a97d-43cfbd17589so3587214f8f.0
 for <xen-devel@lists.xenproject.org>; Mon, 06 Apr 2026 23:48:15 -0700 (PDT)
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-43d1e4d28a5sm43087419f8f.20.2026.04.06.23.48.14
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Mon, 06 Apr 2026 23:48:14 -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=google header.d=suse.com header.i="@suse.com" header.h="Content-Transfer-Encoding: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=1775544495; x=1776149295; darn=lists.xenproject.org;
        h=content-transfer-encoding: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;
        bh=wSuyFg9WyPQrLQwuL9FQgU/MHrcOTE4z1As89zt4V2s=;
        b=LLbaxxQy54aQjbdwDRsH766eGZQIcOQcCQwU3FpPWkdz4ZIsLrSwqhtBOD/vBeadrl
         /FM6Y4tmhsf0y6CoVpxLxndR/XrwFZcJbsfwYiTuiRSKpF7hK48ze6umPTKjkTSPDnRS
         4WF1gJocZlyR+hcUea43b6abVkvQwhwTkLcrLV15ov+p/zkhderg9CQGU9XNWeAmsUvJ
         r3EHO5deDlIBojMYuVSH3xZ10OQqhgTd46FkiMcsL6vgKmxWX1BLAAXRVT5ByRcVvErn
         AS4NIst2KKL73yvhq9RDgNQram5kkKDSe/B2gIJ2BX80hrt8PqHsJzn1P/BVVfhl8R+A
         fsew==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20251104; t=1775544495; x=1776149295;
        h=content-transfer-encoding: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;
        bh=wSuyFg9WyPQrLQwuL9FQgU/MHrcOTE4z1As89zt4V2s=;
        b=ou6fPL+9dl1Fpej0OQ7aMobIKjn/+ykJtX1y+/dW0WZ7PXN2WBKCs0iKtx1IEZB9q2
         Q1ylpOGFF5+sdoHpjYXd6hlggES+wSNmxc5wVnr9Z79dW1u0RwHdIrTOBpRM33KOCVy+
         usOekES7TLgr8cPG0sqDQEeiM3b/n6fobaghbhkFR5st+YeUaIOGqnGEfWIQWUEzvta9
         u84pcEZtuZ+5vJW5rBhwaeH4CD/h1XBClWnrwSkT9nw6Hh5EU+YnBePpkWXC8bbj50l3
         HhQXsPUO0sxKqNcMcIMx6sEewhOL2vmpanYq3otk7dtvatJBLJIt3xDQbddGMjTQP/nZ
         Y9jA==
X-Forwarded-Encrypted: i=1; AJvYcCVKAfuhT+6w3Z9dZgrFBeBQEYDUy6QNwMrzjVq1yw414rehH9Q9l+2b6Q1tDMVHfEuI1Rw9Sr63yIg=@lists.xenproject.org
X-Gm-Message-State: AOJu0Yy+hgDMSvpOuMJroXShbfyS8RTectZhfLVLwaGuZa+dupm+LU2F
	k8adR0JLrKVs7l8c0LsSA1LzdorUoLHQQq/1DCWLgPhrUC3PtPhj6TCv/ouTQnmydQ==
X-Gm-Gg: AeBDietnioASTD0ZpT4+LshSkAQ7V4lGBNEM3TQuldjcCBRD/rQEkyi2cfltTAnZiDl
	orfIxubppWduGx2YjwY661IBKzS9kJuZhJ+gZc95fr5rlhnL1bEsVL1VGvvSvK7Vw6uEgsrDzib
	xM35T9RH6+G6t/HucVaNfj/TEIn116C1yjr5tQoqDpP8hBeK6wI29rhqOqO2mW7K1ZS4BL1GnIH
	4W0UA/LUrWFp+eFVzowJFnMGMIChbo3I8zXP4UT1Un+MbgEFu+2aP6hAq0d2HlwiM+Hjn5LTZG3
	sl1h7gLYnRSd4jUQ8/4pnOGVgVq08z0prcwichw5ESnBNsnarOA1ihOH41PuMd7h0/89plUSzoJ
	RlsFQ+VvDErb497XNW+4Q0T3+dgz4gj3xjT1WUKoWyQNouX4KPgVEJ8X3GVAsNbFzqR7HpEFiMd
	z0ZY7mGp/hJykKZ57mDghmp4yvm7RK0tIDaQYgBd+hmYGZVtzt0P7IbrxZQF6ro6j8LE/EIK7vA
	lI77KTSpHKbMLE=
X-Received: by 2002:a05:6000:310a:b0:43d:1c75:db70 with SMTP id ffacd0b85a97d-43d292a4971mr20721194f8f.15.1775544494941;
        Mon, 06 Apr 2026 23:48:14 -0700 (PDT)
Message-ID: <9d77cb70-7cca-4a2a-b317-ae6fedc0f2a8@suse.com>
Date: Tue, 7 Apr 2026 08:48:19 +0200
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: IOMMU faults after S3
To: =?UTF-8?Q?Marek_Marczykowski-G=C3=B3recki?=
 <marmarek@invisiblethingslab.com>
Cc: Andrew Cooper <andrew.cooper3@citrix.com>,
 xen-devel <xen-devel@lists.xenproject.org>,
 =?UTF-8?Q?Roger_Pau_Monn=C3=A9?= <roger.pau@citrix.com>
References: <acZZmGXIJlmN3KGm@mail-itl>
 <e8bbaae2-5cff-4549-9f27-fbbda7346f60@suse.com>
 <090b8b8f-141b-4a24-92eb-879c0a0c73e1@suse.com> <ac2nibFfvGm_7elv@mail-itl>
 <933a3e95-33d2-4e20-a4d5-2d8b20c2da7f@suse.com> <ac4kCq87SQSc6ddV@mail-itl>
 <aa6910f1-365a-4534-b229-9730b3aede02@suse.com>
 <97bfb299-a465-48a3-a036-f217de683c2c@suse.com> <ac46HK_KiUaLdK4N@mail-itl>
 <0b284c32-4dd3-4663-881b-834c47070328@suse.com> <ac523jvUdQ7hw0Ts@mail-itl>
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: <ac523jvUdQ7hw0Ts@mail-itl>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
X-purgate-ID: tlsNG-33051d/1775544495-4056AC9A-CFC90C49/0/0
X-purgate-type: clean
X-purgate-size: 3296

On 02.04.2026 16:02, Marek Marczykowski-Górecki wrote:
> On Thu, Apr 02, 2026 at 12:23:08PM +0200, Jan Beulich wrote:
>> On 02.04.2026 11:42, Marek Marczykowski-Górecki wrote:
>>> On Thu, Apr 02, 2026 at 10:47:53AM +0200, Jan Beulich wrote:
>>>> On 02.04.2026 10:39, Jan Beulich wrote:
>>>>> On 02.04.2026 10:08, Marek Marczykowski-Górecki wrote:
>>>>>> The xl dmesg output (from MTL this time):
>>>>>>
>>>>>>     (XEN) [  123.477511] Entering ACPI S3 state.
>>>>>>     (XEN) [18446743903.571842] _disable_pit_irq:2649: using_pit: 0, cpu_has_apic: 1
>>>>>>     (XEN) [18446743903.571856] _disable_pit_irq:2659: cpuidle_using_deep_cstate: 1, boot_cpu_has(X86_FEATURE_XEN_ARAT): 0
>>>>>
>>>>> XEN_ARAT being off is the one odd aspect here. That'll want tracking down
>>>>> separately. As per xen-cpuid output (below) ARAT is available.
>>>>
>>>> For this you may want to also add logging to intel_init_arat(): Since opt_arat
>>>> can be false only due to command line option use, it can only be the function
>>>> not being called (which looks impossible on plain staging code), or cpu_has_arat
>>>> being false despite the xen-cpuid output that you supplied earlier (inexplicable
>>>> as well, at least for now).
>>>
>>> Hm, I got this:
>>>
>>>     (XEN) [   11.403340] intel_init_arat:674: opt_arat: 1, cpu_has_arat: 0
>>>
>>> so, cpu_has_arat=0 ...
>>> next lines are those, to hint when it happened in the boot process:
>>>
>>>     (XEN) [   11.409754] mwait-idle: MWAIT substates: 0x11112020
>>>     (XEN) [   11.416130] mwait-idle: v0.4.1 model 0xaa
>>>     (XEN) [   11.422396] mwait-idle: lapic_timer_reliable_states 0x2
>>>
>>> Looks like calculate_host_policy() runs much later...
>>
>> Hmm, yes, and that's the problem. The reason I don't see this is that a newer
>> version of [1] has this
>>
>> --- a/xen/arch/x86/cpu/common.c
>> +++ b/xen/arch/x86/cpu/common.c
>> @@ -628,6 +628,8 @@ void identify_cpu(struct cpuinfo_x86 *c)
>>  	}
>>  
>>  	/* Now the feature flags better reflect actual CPU features! */
>> +	if (c == &boot_cpu_data)
>> +		calculate_host_policy();
>>  
>>  	xstate_init(c);
>>  
>> --- a/xen/arch/x86/cpu-policy.c
>> +++ b/xen/arch/x86/cpu-policy.c
>> @@ -384,7 +384,7 @@ void calculate_raw_cpu_policy(void)
>>      /* Was already added by probe_cpuid_faulting() */
>>  }
>>  
>> -static void __init calculate_host_policy(void)
>> +void __init calculate_host_policy(void)
>>  {
>>      struct cpu_policy *p = &host_cpu_policy;
>>  
>> @@ -959,6 +959,7 @@ static void __init calculate_hvm_def_pol
>>  
>>  void __init init_guest_cpu_policies(void)
>>  {
>> +    /* Do this a 2nd time to account for setup_{clear,force}_cpu_cap() uses. */
>>      calculate_host_policy();
>>  
>>      if ( IS_ENABLED(CONFIG_PV) )
>>
>> and of course I'm doing my work (and my analysis) with that in place.
> 
> FWIW, with this patch applied I get:
> (XEN) [18446743899.051851] _disable_pit_irq:2649: using_pit: 0, cpu_has_apic: 1
> (XEN) [18446743899.051865] _disable_pit_irq:2659: cpuidle_using_deep_cstate: 1, boot_cpu_has(X86_FEATURE_XEN_ARAT): 1
> 
> And no IOMMU faults anymore.

I've Cc-ed you on the formal patch submission; please clarify whether I may
translate the above to Tested-by:.

Jan


From xen-devel-bounces@lists.xenproject.org Tue Apr 07 06:56:06 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 07 Apr 2026 06:56:06 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1274496.1560596 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wA0Ly-00029q-7u; Tue, 07 Apr 2026 06:56:02 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1274496.1560596; Tue, 07 Apr 2026 06:56: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 1wA0Ly-00029j-49; Tue, 07 Apr 2026 06:56:02 +0000
Received: by outflank-mailman (input) for mailman id 1274496;
 Tue, 07 Apr 2026 06:56:00 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <jbeulich@suse.com>) id 1wA0Lw-00029d-MF
 for xen-devel@lists.xenproject.org; Tue, 07 Apr 2026 06:56:00 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wA0Lv-001B38-Uh
 for xen-devel@lists.xenproject.org; Tue, 07 Apr 2026 08:55:59 +0200
Received: from [10.42.69.11] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <jbeulich@suse.com>)
 id 69d4aa72-e002-0a2a0a5209dd-0a2a450bc6a2-42
 for <xen-devel@lists.xenproject.org>; Tue, 07 Apr 2026 08:55:59 +0200
Received: from [209.85.128.43] (helo=mail-wm1-f43.google.com)
 by tlsNG-42698a.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.0)
 (envelope-from <jbeulich@suse.com>)
 id 69d4aa7f-bca8-0a2a450b0019-d155802be888-3
 for <xen-devel@lists.xenproject.org>; Tue, 07 Apr 2026 08:55:59 +0200
Received: by mail-wm1-f43.google.com with SMTP id
 5b1f17b1804b1-4853c1ca73aso45880115e9.2
 for <xen-devel@lists.xenproject.org>; Mon, 06 Apr 2026 23:55:59 -0700 (PDT)
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-4887e83682fsm551174805e9.7.2026.04.06.23.55.58
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Mon, 06 Apr 2026 23:55:58 -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=google header.d=suse.com header.i="@suse.com" header.h="Content-Transfer-Encoding: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=1775544959; x=1776149759; darn=lists.xenproject.org;
        h=content-transfer-encoding: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;
        bh=VM89pN3Op8hTShomCouAPnLw0wOqZDe2nhtt/VA+h0c=;
        b=BT9IM/Ul5BDVaC6mDD1s1lzp9ZLsW+mSEUhRKyjvbLVE6drR4w1l9TQIzuN8azEYry
         tIRTv5jLDx0ylRVx16KEdD3i/UCgc9LdDsU+sRzSmlqTmB9x65lHZb/WaEBpuaC5A0dd
         8QinMCOqP+QbEMRsduqMsOvHlMPdECQ2wBWkQls/GvlELCajBGyy1E1Am+lRoEr/1uil
         +nPPnCG2BYMQ5XOMVt/2N/XxiZ+2A8Bl6qzt17QAgcFy7rdhLUEgXFISNIhT3VQn9y95
         Yq9JYM80wCCBTXw2+28TjjyFUj9c1kUiWcj24TJn2PR6nunJAIVEdfOExVB2TYeL2Hsu
         mCkA==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20251104; t=1775544959; x=1776149759;
        h=content-transfer-encoding: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;
        bh=VM89pN3Op8hTShomCouAPnLw0wOqZDe2nhtt/VA+h0c=;
        b=qmvXkle8Vtvfq1afiE3zu+qvN58D70UuGjrnzXnq5hKde+t0rsduBUzATttvhr34OZ
         H1i2u84n3WT9hNOaSBCA7gBL+0bHCtMtuGnBaic9RMTyjfaWLkeNqHWCOSN/qaGrL5/s
         P38KsB13eaG1tIRBFp69v8FadhInBGMFsFWQHdGmYSJVi+0aBMYrUk5OckOQYqqPLYlh
         hpxmJWef0zgZmCgkpKlNOcC5x/fD6LOq9rbpyiO5mELxfk07WfRzTlhn+6AI1vzcvW0E
         JZWeHYXbeMj9SxQ1sc3dsCJRmnMc2b52xYqDCNjUm7eVs03A32Xvwu/UzdcklabOwrKu
         Me6Q==
X-Forwarded-Encrypted: i=1; AJvYcCWLsOMb7QyKwi8ec/blfV+Kiu9mcW52bqlmDkX7q6cACh5jBUduYYuVzTMxyG6pWpoB/5uBvjlT/Go=@lists.xenproject.org
X-Gm-Message-State: AOJu0YwQZ+ZB5UODAYdOD9jwienGwruDP8YKpSNLvhnKPrGOgkiZVbWM
	OcuIOwX/cuo8LKjRw63BW2GsJXhbunVJ7q6XEQ4kup9Lp3Eh9ExS8yKQalzGGKRodQ==
X-Gm-Gg: AeBDiesRE31LYPcjVEqI7W/ZiHdGJfdtwG38+h7SSebzL/k3EowiMuFK+xAZ4jAJ8OA
	lnTNiCdx9AT3kuu6IoklcL3UnrS4IYQSIJKOgV1IgCO4zdk/IdvZj1IxryPQR2iDF3RZnX4txWr
	y2fgXxslC+WflL0XFRzsKi7ohLuV+Ob/wmdC/HnK5Uc/1zWNuSeoqqkV2JuvqezPknIgLnxuP3e
	U8qVefIhMSAT/CydSV3cwG5FLRwT/tbh0l32Uo2NV/5ZB5CRLgeVDkDFGA8L3BSBTirdh8Jkw1W
	tx/uJ/8HCnv0/i741YdAUBifdxuvyZgYZtMJZprlPrey82qxv2kLc96J2cYltFk8SzRXFW6MB5t
	trrWIZ/4Zls+ivaAEXdc4xyO78dBrq6Bl53r6mHAuypAspLB8ZDBo5ohITEqJDxGY11CPAdTIE7
	TmaCWo0Y2mdEC0ZpYkHXw8LIFiRcGq416EBv/aweUa04yyc578/S50orrC86FXIYD1+DWb9W/1/
	P1Q0/Ohe5FFuoM=
X-Received: by 2002:a05:600c:3549:b0:471:700:f281 with SMTP id 5b1f17b1804b1-488997d5e5bmr206387665e9.25.1775544959221;
        Mon, 06 Apr 2026 23:55:59 -0700 (PDT)
Message-ID: <eb6e0314-423b-412e-af29-c423463d78dd@suse.com>
Date: Tue, 7 Apr 2026 08:56:03 +0200
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH v2] xen/x86: Check supported features even for PVH dom0
To: Frediano Ziglio <freddy77@gmail.com>,
 =?UTF-8?Q?Roger_Pau_Monn=C3=A9?= <roger.pau@citrix.com>
Cc: Frediano Ziglio <frediano.ziglio@cloud.com>,
 Andrew Cooper <andrew.cooper3@citrix.com>, xen-devel@lists.xenproject.org
References: <20260402155512.80170-1-frediano.ziglio@cloud.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: <20260402155512.80170-1-frediano.ziglio@cloud.com>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 7bit
X-purgate-ID: tlsNG-42698a/1775544959-EEB482A1-4A929AB7/0/0
X-purgate-type: clean
X-purgate-size: 811

On 02.04.2026 17:55, Frediano Ziglio wrote:
> --- a/xen/arch/x86/dom0_build.c
> +++ b/xen/arch/x86/dom0_build.c
> @@ -320,6 +320,20 @@ unsigned long __init dom0_paging_pages(const struct domain *d,
>      return DIV_ROUND_UP(memkb, 1024) << (20 - PAGE_SHIFT);
>  }
>  
> +int __init dom0_check_parms(

I understand the "dom0" in the name is owing to the filename and perhaps
adjacent other similar functions, yet ...

> +    struct domain *d, const struct elf_dom_parms *parms)
> +{
> +    if ( parms->elf_notes[XEN_ELFNOTE_SUPPORTED_FEATURES].type == XEN_ENT_NONE )
> +        return 0;
> +
> +    if ( is_hardware_domain(d) && !test_bit(XENFEAT_dom0, parms->f_supported) )

... if this was about solely Dom0, no is_hardware_domain() should be present
here. Maybe s/dom0/initdom/ ?

Jan


From xen-devel-bounces@lists.xenproject.org Tue Apr 07 06:57:13 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 07 Apr 2026 06:57:13 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1274503.1560604 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wA0N5-0002dI-GH; Tue, 07 Apr 2026 06:57:11 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1274503.1560604; Tue, 07 Apr 2026 06:57: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 1wA0N5-0002dB-Ce; Tue, 07 Apr 2026 06:57:11 +0000
Received: by outflank-mailman (input) for mailman id 1274503;
 Tue, 07 Apr 2026 06:57:09 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <jbeulich@suse.com>) id 1wA0N3-0002d5-At
 for xen-devel@lists.xenproject.org; Tue, 07 Apr 2026 06:57:09 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wA0N2-001BUm-CJ
 for xen-devel@lists.xenproject.org; Tue, 07 Apr 2026 08:57:08 +0200
Received: from [10.42.69.6] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <jbeulich@suse.com>)
 id 69d4aab6-5cb7-0a2a0a5109dd-0a2a4506a2a6-38
 for <xen-devel@lists.xenproject.org>; Tue, 07 Apr 2026 08:57:08 +0200
Received: from [209.85.221.41] (helo=mail-wr1-f41.google.com)
 by tlsNG-16d1c6.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.0)
 (envelope-from <jbeulich@suse.com>)
 id 69d4aac4-0df0-0a2a45060019-d155dd29e05e-3
 for <xen-devel@lists.xenproject.org>; Tue, 07 Apr 2026 08:57:08 +0200
Received: by mail-wr1-f41.google.com with SMTP id
 ffacd0b85a97d-43d0deb7ad5so4234561f8f.2
 for <xen-devel@lists.xenproject.org>; Mon, 06 Apr 2026 23:57:08 -0700 (PDT)
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-43d1e4e6224sm48003021f8f.25.2026.04.06.23.57.07
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Mon, 06 Apr 2026 23:57:07 -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=google header.d=suse.com header.i="@suse.com" header.h="Content-Transfer-Encoding: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=1775545028; x=1776149828; darn=lists.xenproject.org;
        h=content-transfer-encoding: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;
        bh=Fh16tsKNLfB+syP8WUFdmAE/unEga3r6/dAfO9ALguA=;
        b=Q7opw9MOMDOKPBhByk2t01/X3+nguoDjxyYLTJ2dkmvMKsJ/+vS550vKdQ4v+qltAD
         eGKaj+DaKn8XG1S0MQ5RMdsXZ94SRInbBKVgU6dM20t4too7qtwU9Fh4NfQLwhXaJzcv
         /RfhpAF3wTVAhbeNuzQs8P3Xskp8sZ69xHHXWsbnApL3j3x2ahECVxYnNCLj1gk6qJed
         I5QNRDM/NMFD0VuZuoMwqnsuf2p8yP/eIgVzvQ3fZ+/oAdQpm//gWPWIeYxpWV07uiQ1
         1iN4HThByS4EQemc1txGjXuauJ17iLzUydtQww6UNMjr+BkJeOw2DrKl6vuQolQBpEt4
         F2Jg==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20251104; t=1775545028; x=1776149828;
        h=content-transfer-encoding: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;
        bh=Fh16tsKNLfB+syP8WUFdmAE/unEga3r6/dAfO9ALguA=;
        b=npezqURYkoYzC9yO6FmNlRXR3T/Ay9azG7r5BrE4itA4GancPdrQAD7vKuaD5XfkeP
         TcFS/0ZwPSQbZyewZfwg6TgZxVZRlx5CSyYtXDspi81TGJRRQUocQ5nukjoqOXW8do+U
         ZUmnbR+aV6ZA8DSpt7L12p8cuGOFml+oT02BbbyLzWjwrMJXUw+sR89dYnXsFMfmC1Gm
         ktv/i2Cp0Iyo5mDccT01VVziW9o54OYG+QWNFYlNnW1J1r/yYxn/SHpS963xCge2WZUB
         KVAp+Qm97JpSPoOdXi6h194NQzmnKf5X2QNC0kH9Y3YOJpFviJaJ7y4IM+H+z9a3FtDA
         AxPw==
X-Gm-Message-State: AOJu0YwCmMP+rsmfMHBVvT7x1taJwECWd4JSODLXcJ3EkcZRd34ZQFhP
	CloNrZHLcxYxx7RFAZl8syaPxkORV1FF5o09Fw8BathkBo0JxMtGH5LsEn+9lTIxnw==
X-Gm-Gg: AeBDieu4c0Lwell+q6q495AvBphl6VecbKjknjdgTkSLgbJQiuUo6ILTxQWasOzPfqc
	4bESKAgEctHZsBYq9OsHwLWefpK5C/MbmVLXF/EzphmjhOUQTJLhyoTFlT47S04RCe6N7Zrphig
	/pXgHZdf8iRRiy2a2ibvZQUieO8P+0pQUUhbROU1sJTrNZlhuHWwTAsZEFUNSLexrf57BxRS6f+
	UU/vwbdGGn0wCiIs84E5n+c3/0HZYHcMy8+3Q86+FkaRi5Zw7/hZwtnGM4IVBUjikMTN7OIGEbu
	3bKtIut26xk3cUmmtsTIe0QlKz2XJXSmkzQXV9CH+WMipGHrGvM4Lc9R5it+FYezqwzlDEOup9/
	xGZQLSJGgmbgEhHZLB2fyhmjtsSK++IkfW0MaoXZcSeleh1geUuTBJFbSCB1XJ/eGWaypiXY8xy
	V2sTla12m1XOODchfnwslTPM4BSh0EBBrcw171mT8l1Pum0fM+qZLv4Waqfony77QEk14SSt+Yn
	KfLp5QO//xxt+8=
X-Received: by 2002:a05:6000:208a:b0:43b:9c73:2933 with SMTP id ffacd0b85a97d-43d2927f938mr20057301f8f.15.1775545027713;
        Mon, 06 Apr 2026 23:57:07 -0700 (PDT)
Message-ID: <572b62e7-30de-4a23-8602-98a38e02acb7@suse.com>
Date: Tue, 7 Apr 2026 08:57:12 +0200
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH v2] xen/x86: Check supported features even for PVH dom0
To: =?UTF-8?Q?Roger_Pau_Monn=C3=A9?= <roger.pau@citrix.com>,
 Frediano Ziglio <freddy77@gmail.com>
Cc: xen-devel@lists.xenproject.org,
 Frediano Ziglio <frediano.ziglio@cloud.com>,
 Andrew Cooper <andrew.cooper3@citrix.com>
References: <20260402155512.80170-1-frediano.ziglio@cloud.com>
 <ac-SNHWwML98cLYA@wifi-campus-l-10-3-197-236.u-ga.fr>
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: <ac-SNHWwML98cLYA@wifi-campus-l-10-3-197-236.u-ga.fr>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
X-purgate-ID: tlsNG-16d1c6/1775545028-64A4C3D8-0D763C1B/0/0
X-purgate-type: clean
X-purgate-size: 2506

On 03.04.2026 12:11, Roger Pau Monné wrote:
> On Thu, Apr 02, 2026 at 04:55:10PM +0100, Frediano Ziglio wrote:
>> The supported features ELF notes was tested only if the dom0 was
>> PV. Factor out a function to check ELF notes and reuse it even
>> for PVH.
>>
>> Signed-off-by: Frediano Ziglio <frediano.ziglio@cloud.com>
>> --
>> Changes since v1:
>> - fix typo in title;
>> - fix minor formatting issue;
>> - use is_hardware_domain instead of checking is_pv_shim;
>> - reduce indentation returning earlier;
>> - return error instead of jumping to cleanup code.
>> ---
>>  xen/arch/x86/dom0_build.c             | 14 ++++++++++++++
>>  xen/arch/x86/hvm/dom0_build.c         |  3 +++
>>  xen/arch/x86/include/asm/dom0_build.h |  2 ++
>>  xen/arch/x86/pv/dom0_build.c          | 10 ++--------
>>  4 files changed, 21 insertions(+), 8 deletions(-)
>>
>> diff --git a/xen/arch/x86/dom0_build.c b/xen/arch/x86/dom0_build.c
>> index 864dd9e53e..a33ce77321 100644
>> --- a/xen/arch/x86/dom0_build.c
>> +++ b/xen/arch/x86/dom0_build.c
>> @@ -320,6 +320,20 @@ unsigned long __init dom0_paging_pages(const struct domain *d,
>>      return DIV_ROUND_UP(memkb, 1024) << (20 - PAGE_SHIFT);
>>  }
>>  
>> +int __init dom0_check_parms(
>> +    struct domain *d, const struct elf_dom_parms *parms)
> 
> d should be const also.
> 
>> +{
>> +    if ( parms->elf_notes[XEN_ELFNOTE_SUPPORTED_FEATURES].type == XEN_ENT_NONE )
>> +        return 0;
>> +
>> +    if ( is_hardware_domain(d) && !test_bit(XENFEAT_dom0, parms->f_supported) )
>> +    {
>> +        printk("Kernel does not support Dom0 operation\n");
>> +        return -EINVAL;
>> +    }
>> +
>> +    return 0;
>> +}
>>  
>>  /*
>>   * If allocation isn't specified, reserve 1/16th of available memory for
>> diff --git a/xen/arch/x86/hvm/dom0_build.c b/xen/arch/x86/hvm/dom0_build.c
>> index d69a83b089..f95a00acfd 100644
>> --- a/xen/arch/x86/hvm/dom0_build.c
>> +++ b/xen/arch/x86/hvm/dom0_build.c
>> @@ -699,6 +699,9 @@ static int __init pvh_load_kernel(
>>      if ( !check_and_adjust_load_address(d, &elf, &parms) )
>>          return -ENOSPC;
>>  
>> +    if ( (rc = dom0_check_parms(d, &parms)) != 0 )
>> +        return rc;
> 
> I would do the check ahead of check_and_adjust_load_address(), as then
> we could avoid the load address adjustment if we detect earlier than
> the dom0 feature is not present.  But that's just my taste.

+1, perhaps even yet a few more lines further up.

Jan


From xen-devel-bounces@lists.xenproject.org Tue Apr 07 08:14:40 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 07 Apr 2026 08:14:40 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1274523.1560612 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wA1Zq-0004ku-5Q; Tue, 07 Apr 2026 08:14:26 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1274523.1560612; Tue, 07 Apr 2026 08: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 1wA1Zq-0004kn-2b; Tue, 07 Apr 2026 08:14:26 +0000
Received: by outflank-mailman (input) for mailman id 1274523;
 Tue, 07 Apr 2026 08:08:13 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <kroupa.matyas@gmail.com>) id 1wA1To-0003hq-QO
 for xen-devel@lists.xen.org; Tue, 07 Apr 2026 08:08:13 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wA1Tl-0011Pa-VO
 for xen-devel@lists.xen.org; Tue, 07 Apr 2026 10:08:11 +0200
Received: from [10.42.69.9] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <kroupa.matyas@gmail.com>)
 id 69d4bb69-5cb7-0a2a0a5109dd-0a2a45099586-12
 for <xen-devel@lists.xen.org>; Tue, 07 Apr 2026 10:08:11 +0200
Received: from [209.85.221.43] (helo=mail-wr1-f43.google.com)
 by tlsNG-bad1c0.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.0)
 (envelope-from <kroupa.matyas@gmail.com>)
 id 69d4bb6b-bf79-0a2a45090019-d155dd2be56e-3
 for <xen-devel@lists.xen.org>; Tue, 07 Apr 2026 10:08:11 +0200
Received: by mail-wr1-f43.google.com with SMTP id
 ffacd0b85a97d-43d43e09de5so579562f8f.1
 for <xen-devel@lists.xen.org>; Tue, 07 Apr 2026 01:08:11 -0700 (PDT)
Received: from rivendell.hailstone.cz ([2001:718:801:311:4701:d1d5:7bfd:a254])
 by smtp.gmail.com with ESMTPSA id
 ffacd0b85a97d-43d1e4d2738sm48714833f8f.24.2026.04.07.01.08.08
 for <xen-devel@lists.xen.org>
 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
 Tue, 07 Apr 2026 01:08:08 -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=20251104 header.d=gmail.com header.i="@gmail.com" header.h="Content-Transfer-Encoding:MIME-Version:Message-ID:Date:Subject:To:From"
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=gmail.com; s=20251104; t=1775549290; x=1776154090; darn=lists.xen.org;
        h=content-transfer-encoding:mime-version:message-id:date:subject:to
         :from:from:to:cc:subject:date:message-id:reply-to;
        bh=FghN7Xge3vH2+8zvcZb/VI7n3VoWaWR5ju3BI+dhG/8=;
        b=iWlpiUNSAkpruNMToH5qGw6Uz15Mn6jCV2kNQf3+18chS0rY9y3QPYCka81Hd5sEPC
         6ayIEwBvcEn8JOIVNXxamYHNVdyWWfok4wDx5GooHj1pndtQ9CL7s7VvntxipzNzv0Yf
         bkvqJDniW3Fq7Poii0q8qMrumksPpKmY7ZPDV0NoflHB+0fMPJJ1m/I26cNHLrE1I2Hs
         w4ZzcXbVYZEuQqnCe6BcMHcwYTVlGtMbwggUpB7elkArJHZe6WOvgpFf6lFJxE/rYw2z
         +P9RWJ5Javkh5F7ECs1zOq+Qny5Lj1zRspb3nYiUg5/X7yCvX5IF+xW9qSF4qUdz+oj0
         hImA==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20251104; t=1775549290; x=1776154090;
        h=content-transfer-encoding:mime-version:message-id:date:subject:to
         :from:x-gm-gg:x-gm-message-state:from:to:cc:subject:date:message-id
         :reply-to;
        bh=FghN7Xge3vH2+8zvcZb/VI7n3VoWaWR5ju3BI+dhG/8=;
        b=N6WNLsE9taiquuNCExbUGFbJiuRRued039bccI7WFlffJm8AvhZxapH9qXB00MxyBb
         b+u1GxUufUZxml2Y+MqYH47pDj3qEcT9X3Bjc/ROyfARZy50uAm1gBZ9QsmC2TNEeVT1
         hqNhs45qnXQp9cG2pbz2K4TdC4Sn4zEEwcQrnh9wlZFCEryCSO2Ve+QxXqVlmkJ8yG/i
         53/YyfwAXP+1t6M1QWmN4mUKnHwYS+dcwHQZWpE8ZJb4k6h7Ty4tkBW/fYz1+QVMaumL
         hYkKu6ZLLZDtUywYHwJHTn7ArB/e2SmFIdt1zq9daavVLooyG8CSA0UHASNWicZC9d13
         u+Aw==
X-Gm-Message-State: AOJu0YyXp9+YhlE0bTif+R7hEXlBic8I9vhKRbMO7x8Sn4TyONVttlsf
	p9eskFMVZcu717nwvw1v0Uk4ancapAo5HtdOqXWAtdZtgDGVrd9lrxHkFpQ0/A==
X-Gm-Gg: AeBDievKzdGpTUN1CFk93CoikQCm8O4evDLb5EUPLm4x/dBBB7AmH9j+lfDTRaTjEtT
	5h8+tXRa3ryOE1DwCeYzdEkhCBn+vqYHRj7n/iJ/Hvbw914NJdkjH89ieMEk9T2qfz4qROb9jDq
	9upPE/kJ4fD64VjLD5tJQcS8TDiV6OwsQIS9WjD1dMB8+JMmWYqkuLb4Q3mBxTGnDXxW3Yng/pJ
	jcac1n4wBmX6arfyQsJMOnui1UQtedvo5v3o8HzMsB4ZF3c57JOa1rEDyyugzn/nDEhhpM57cLU
	HB02yEo21O0nEew6ox1/HuIWICGnnmNYVhvLbQS/SKp9x1FLFLh8YWIdTOygV5S5qubVM4Q8RlC
	K48+U0xLPMt0s8WRbffd4mlrdc+7dG1jHuKTv4L8nbiS5SSqr7c0XdgBpsXUoCATIxTxRRxPNyF
	QmS9xgzsvT6ildxW9Xl8GPKOFXxApMRTNmkMyPm5E9els=
X-Received: by 2002:a05:6000:2885:b0:43c:f7d6:474a with SMTP id ffacd0b85a97d-43d2927bc07mr21724427f8f.19.1775549290314;
        Tue, 07 Apr 2026 01:08:10 -0700 (PDT)
From: =?UTF-8?B?TWF0ecOhxaE=?= Kroupa <kroupa.matyas@gmail.com>
To: xen-devel@lists.xen.org
Subject: Xen on Zen 3
Date: Tue, 07 Apr 2026 10:08:07 +0200
Message-ID: <5490687.niJfEyVGOH@rivendell.hailstone.cz>
MIME-Version: 1.0
Content-Type: multipart/mixed; boundary="nextPart6521316.E0xQCEvomI"
Content-Transfer-Encoding: 7Bit
X-purgate-ID: tlsNG-bad1c0/1775549291-5D1F5152-EB3E9FC2/0/0
X-purgate-type: clean
X-purgate-size: 19301

This is a multi-part message in MIME format.

--nextPart6521316.E0xQCEvomI
Content-Transfer-Encoding: quoted-printable
Content-Type: text/plain; charset="utf-8"

Hi,
I am trying to run Xen on a bare metal with Zen 3 microarchitecture (to be=
=20
specific Ryzen 9 5950X). I am using Fedora 43 as Dom0 in PVH mode. However,=
 the=20
Linux kernel crashes early in the boot causing Xen to reboot. I am not exac=
tly=20
sure if Linux or Xen is the problematic part. The kernel boots fine without=
=20
Xen. Before Ryzen 9 I had Ryzen 5 3400G (Zen+) which booted even with Xen.

The Xen is a backported from Fedora 44 (not yet released) because I need Xe=
n=20
4.21 features, mainly ReBAR support for the Arc B50 GPU. Package specificat=
ion=20
with build commands can be found on https://src.fedoraproject.org/rpms/xen/
blob/f44/f/xen.spec. There are also downstream patches and configuration.

I have set up a serial link, so I have some logs. They are in the attachmen=
t.=20
I have used gdb to translate the binary offset to source code line. The=20
problematic line is https://elixir.bootlin.com/linux/v6.19.10/source/arch/x=
86/
kernel/amd_node.c#L296. It seems that linux is detecting zero PCI roots on=
=20
non-zero number of nodes causing division by zero.

System information
Boot mode: UEFI
Secure boot: disabled
IOMMU: enabled
SR-IOV: enabled
Above 4G decoding & rebar: enabled
Xen cmdline: placeholder dom0=3Dpvh dom0_mem=3D36G com1=3D115200,8n1=20
console=3Dcom1,vga no-real-mode edd=3Doff
Linux cmdline: placeholder root=3DUUID=3D5a7af636-54c3-4f76-a164-c1138de257=
ad ro=20
rootflags=3Dsubvol=3D@ rhgb quiet console=3Dhvc0 earlyprintk=3Dxen
Xen version: 4.21.1
Linux version: 6.19.10

If you need more logs or other information, I will be more than happy to=20
provide it.
Thank you in advance
Maty=C3=A1=C5=A1 Kroupa
--nextPart6521316.E0xQCEvomI
Content-Disposition: attachment; filename="xen-4.21.1-linux-6.19.10.log"
Content-Transfer-Encoding: quoted-printable
Content-Type: text/x-log; charset="UTF-8"; name="xen-4.21.1-linux-6.19.10.log"

error: ../../grub-core/commands/loadenv.c:216:sparse file not allowed.
GRUB version 2.12

+--------------------------------------------------------------------------=
=2D-+||||||||||||||||||||||+-----------------------------------------------=
=2D----------------------------+     Use the ^ and v keys to select which e=
ntry is highlighted.         =20
      Press enter to boot the selected OS, `e' to edit the commands      =20
      before booting or `c' for a command-line. ESC to return            =20
      previous menu.                                                       =
 Fedora Linux (6.19.10-200.fc43.x86_64) 43 (Server Edition)                =
  Fedora Linux (6.19.9-200.fc43.x86_64) 43 (Server Edition)                =
   Fedora Linux (6.19.8-200.fc43.x86_64) 43 (Server Edition)               =
    Fedora Linux (6.6.84-200.fc41.x86_64) 43 (Server Edition)              =
     Fedora Linux (0-rescue-9a85b9092f254228a1dc4273a335191f) 43 (Server Ed=
itio>*Fedora, with Xen 4.21.1 and Linux 6.19.10-200.fc43.x86_64            =
       Fedora, with Xen 4.21.1 and Linux 6.19.9-200.fc43.x86_64            =
        Fedora, with Xen 4.21.1 and Linux 6.19.8-200.fc43.x86_64           =
         Fedora, with Xen 4.21.1 and Linux 6.6.84-200.fc41.x86_64          =
          UEFI Firmware Settings                                           =
                                                                           =
               The highlighted entry will be executed automatically in 5s. =
                   The highlighted entry will be executed automatically in =
4s.                    The highlighted entry will be executed automatically=
 in 3s.                                                                    =
                                                                           =
                                 Fedora, with Xen 4.21.1 and Linux 6.19.10-=
200.fc43.x86_64                  *Fedora Linux (0-rescue-9a85b9092f254228a1=
dc4273a335191f) 43 (Server Editio> Fedora Linux (0-rescue-9a85b9092f254228a=
1dc4273a335191f) 43 (Server Editio>*Fedora, with Xen 4.21.1 and Linux 6.19.=
10-200.fc43.x86_64                  Loading Xen 4.21.1 ...
Loading Linux 6.19.10-200.fc43.x86_64 ...
Loading initial ramdisk ...
Xen 4.21.1
(XEN) Xen version 4.21.1 (mockbuild@) (gcc (GCC) 15.2.1 20260123 (Red Hat 1=
5.2.1-7)) debug=3Dn Thu Apr  2 00:00:00 UTC 2026
(XEN) Latest ChangeSet:=20
(XEN) build-id: 86b71d479f28fc1106fffdfe76c8e7037e2e70fa
(XEN) CPU Vendor: AMD, Family 25 (0x19), Model 33 (0x21), Stepping 2 (raw 0=
0a20f12)
(XEN) BSP microcode revision: 0x0a201213
(XEN) Bootloader: GRUB 2.12
(XEN) Command line: placeholder dom0=3Dpvh dom0_mem=3D36G com1=3D115200,8n1=
 console=3Dcom1,vga no-real-mode edd=3Doff
(XEN) Xen image load base address: 0xb6a00000
(XEN) Video information:
(XEN)  VGA is graphics mode 1920x1080, 32 bpp
(XEN)  VBE/DDC methods: none; EDID transfer time: 0 seconds
(XEN) Disc information:
(XEN)  Found 0 MBR signatures
(XEN)  Found 3 EDD information structures
(XEN) Using IDT event delivery
(XEN) Enabling Supervisor Shadow Stacks
(XEN)   - Disabling PV32 due to CET
(XEN) EFI RAM map:
(XEN)  [0000000000000000, 000000000009ffff] (usable)
(XEN)  [00000000000a0000, 00000000000fffff] (reserved)
(XEN)  [0000000000100000, 0000000009bfefff] (usable)
(XEN)  [0000000009bff000, 0000000009ffffff] (reserved)
(XEN)  [000000000a000000, 000000000a1fffff] (usable)
(XEN)  [000000000a200000, 000000000a20dfff] (ACPI NVS)
(XEN)  [000000000a20e000, 000000000affffff] (usable)
(XEN)  [000000000b000000, 000000000b01ffff] (reserved)
(XEN)  [000000000b020000, 00000000bb13afff] (usable)
(XEN)  [00000000bb13b000, 00000000bc947fff] (reserved)
(XEN)  [00000000bc948000, 00000000bc988fff] (ACPI data)
(XEN)  [00000000bc989000, 00000000bd07cfff] (ACPI NVS)
(XEN)  [00000000bd07d000, 00000000bdbfefff] (reserved)
(XEN)  [00000000bdbff000, 00000000beffffff] (usable)
(XEN)  [00000000bf000000, 00000000bfffffff] (reserved)
(XEN)  [00000000f0000000, 00000000f7ffffff] (reserved)
(XEN)  [00000000fd200000, 00000000fd2fffff] (reserved)
(XEN)  [00000000fd600000, 00000000fd7fffff] (reserved)
(XEN)  [00000000fea00000, 00000000fea0ffff] (reserved)
(XEN)  [00000000feb80000, 00000000fec01fff] (reserved)
(XEN)  [00000000fec10000, 00000000fec10fff] (reserved)
(XEN)  [00000000fec30000, 00000000fec30fff] (reserved)
(XEN)  [00000000fed00000, 00000000fed00fff] (reserved)
(XEN)  [00000000fed40000, 00000000fed44fff] (reserved)
(XEN)  [00000000fed80000, 00000000fed8ffff] (reserved)
(XEN)  [00000000fedc2000, 00000000fedcffff] (reserved)
(XEN)  [00000000fedd4000, 00000000fedd5fff] (reserved)
(XEN)  [00000000ff000000, 00000000ffffffff] (reserved)
(XEN)  [0000000100000000, 0000000c3f2fffff] (usable)
(XEN)  [0000000c3f300000, 0000000c3fffffff] (reserved)
(XEN) ACPI: RSDP BD066014, 0024 (r2 ALASKA)
(XEN) ACPI: XSDT BD065728, 00CC (r1 ALASKA   A M I   1072009 AMI   1000013)
(XEN) ACPI: FACP BC97A000, 0114 (r6 ALASKA   A M I   1072009 AMI     10013)
(XEN) ACPI: DSDT BC973000, 60DA (r2 ALASKA   A M I   1072009 INTL 20120913)
(XEN) ACPI: FACS BD060000, 0040
(XEN) ACPI: SSDT BC980000, 8CE9 (r2    AMD AmdTable        2 MSFT  4000000)
(XEN) ACPI: SSDT BC97C000, 3CB6 (r2    AMD  AMD AOD        1 INTL 20120913)
(XEN) ACPI: SSDT BC97B000, 01CC (r2 ALASKA  CPUSSDT  1072009 AMI   1072009)
(XEN) ACPI: FIDT BC972000, 009C (r1 ALASKA    A M I  1072009 AMI     10013)
(XEN) ACPI: MCFG BC971000, 003C (r1 ALASKA    A M I  1072009 MSFT    10013)
(XEN) ACPI: AAFT BC970000, 00F1 (r1 ALASKA OEMAAFT   1072009 MSFT       97)
(XEN) ACPI: HPET BC96F000, 0038 (r1 ALASKA    A M I  1072009 AMI         5)
(XEN) ACPI: IVRS BC96E000, 00D0 (r2  AMD   AmdTable        1 AMD         1)
(XEN) ACPI: BGRT BC96D000, 0038 (r1 ALASKA   A M I   1072009 AMI     10013)
(XEN) ACPI: TPM2 BC96C000, 004C (r4 ALASKA   A M I         1 AMI         0)
(XEN) ACPI: PCCT BC96B000, 006E (r2    AMD AmdTable        1 AMD         1)
(XEN) ACPI: SSDT BC962000, 8033 (r2    AMD AmdTable        1 AMD         1)
(XEN) ACPI: CRAT BC960000, 1710 (r1    AMD AmdTable        1 AMD         1)
(XEN) ACPI: CDIT BC95F000, 0029 (r1    AMD AmdTable        1 AMD         1)
(XEN) ACPI: SSDT BC95B000, 37C4 (r2    AMD   MYRTLE        1 INTL 20120913)
(XEN) ACPI: SSDT BC95A000, 00BF (r1    AMD AmdTable     1000 INTL 20120913)
(XEN) ACPI: WSMT BC959000, 0028 (r1 ALASKA   A M I   1072009 AMI     10013)
(XEN) ACPI: APIC BC958000, 015E (r3 ALASKA   A M I   1072009 AMI     10013)
(XEN) ACPI: SSDT BC956000, 10AF (r2    AMD   MYRTLE        1 INTL 20120913)
(XEN) ACPI: FPDT BC955000, 0044 (r1 ALASKA   A M I   1072009 AMI   1000013)
(XEN) System RAM: 49075MB (50253492kB)
(XEN) No NUMA configuration found
(XEN) Faking a node at 0000000000000000-0000000c3f300000
(XEN) Domain heap initialised
(XEN) vesafb: framebuffer at 0x000000f800000000, mapped to 0xffff82c0002030=
00, using 8128k, total 8128k
(XEN) vesafb: mode is 1920x1080x32, linelength=3D7680, font 8x16
(XEN) vesafb: Truecolor: size=3D8:8:8:8, shift=3D24:16:8:0
(XEN) SMBIOS 3.3 present.
(XEN) PCI: MCFG configuration 0: base f0000000 segment 0000 buses 00 - 7f
(XEN) PCI: MCFG area at f0000000 reserved in E820
(XEN) PCI: Using MCFG for segment 0000 bus 00-7f
(XEN) Using APIC driver default
(XEN) ACPI: PM-Timer IO Port: 0x808 (32 bits)
(XEN) ACPI: v5 SLEEP INFO: control[0:0], status[0:0]
(XEN) ACPI: SLEEP INFO: pm1x_cnt[1:804,1:0], pm1x_evt[1:800,1:0]
(XEN) ACPI: 32/64X FACS address mismatch in FADT - bd060000/000000000000000=
0, using 32
(XEN) ACPI:             wakeup_vec[bd06000c], vec_size[20]
(XEN) Overriding APIC driver with bigsmp
(XEN) ACPI: IOAPIC (id[0x21] address[0xfec00000] gsi_base[0])
(XEN) IOAPIC[0]: apic_id 33, version 33, address 0xfec00000, GSI 0-23
(XEN) ACPI: IOAPIC (id[0x22] address[0xfec01000] gsi_base[24])
(XEN) IOAPIC[1]: apic_id 34, version 33, address 0xfec01000, GSI 24-55
(XEN) ACPI: INT_SRC_OVR (bus 0 bus_irq 0 global_irq 2 dfl dfl)
(XEN) ACPI: INT_SRC_OVR (bus 0 bus_irq 9 global_irq 9 low level)
(XEN) ACPI: HPET id: 0x10228201 base: 0xfed00000
(XEN) ACPI: BGRT: invalidating v1 image at 0xb762c018
(XEN) Using ACPI (MADT) for SMP configuration information
(XEN) SMP: Allowing 32 CPUs (0 hotplug CPUs)
(XEN) IRQ limits: 56 GSI, 6600 MSI/MSI-X
(XEN) AMD-Vi: IOMMU Extended Features:
(XEN) - Peripheral Page Service Request
(XEN) - NX bit
(XEN) - Invalidate All Command
(XEN) - Performance Counters
(XEN) - Host Address Translation Size: 0x2
(XEN) - Guest Address Translation Size: 0
(XEN) - Guest CR3 Root Table Level: 0x1
(XEN) - Maximum PASID: 0xf
(XEN) - SMI Filter Register: 0x1
(XEN) - SMI Filter Register Count: 0x2
(XEN) - Guest Virtual APIC Modes: 0x1
(XEN) - Dual PPR Log: 0x2
(XEN) - Dual Event Log: 0x2
(XEN) - User / Supervisor Page Protection
(XEN) - Device Table Segmentation: 0x3
(XEN) - PPR Log Overflow Early Warning
(XEN) - PPR Automatic Response
(XEN) - Memory Access Routing and Control: 0x1
(XEN) - Block StopMark Message
(XEN) - Performance Optimization
(XEN) - MSI Capability MMIO Access
(XEN) - Guest I/O Protection
(XEN) - Host Access
(XEN) - Enhanced PPR Handling
(XEN) - Attribute Forward
(XEN) - Virtualized IOMMU
(XEN) - VMGuard I/O Support
(XEN) - VM Table Size: 0x2
(XEN) Switched to APIC driver x2apic_mixed
(XEN) CPU0: 2200 ... 3400 MHz
(XEN) xstate: size: 0x988 and states: 0x207
(XEN) CPU0: AMD Fam19h machine check reporting enabled
(XEN) Speculative mitigation facilities:
(XEN)   Hardware hints: STIBP_ALWAYS IBRS_FAST IBRS_SAME_MODE
(XEN)   Hardware features: IBPB IBRS STIBP SSBD PSFD
(XEN)   Compiled-in support: INDIRECT_THUNK RETURN_THUNK SHADOW_PAGING HARD=
EN_ARRAY HARDEN_BRANCH HARDEN_GUEST_ACCESS HARDEN_LOCK
(XEN)   Xen settings: BTI-Thunk: JMP, SPEC_CTRL: IBRS+ STIBP+ SSBD- PSFD-, =
Other: VERW BRANCH_HARDEN
(XEN)   Support for HVM VMs: MSR_SPEC_CTRL MSR_VIRT_SPEC_CTRL RSB VERW IBPB=
=2Dentry
(XEN)   Support for PV VMs: VERW IBPB-entry
(XEN)   XPTI (64-bit PV only): Dom0 disabled, DomU disabled (without PCID)
(XEN)   PV L1TF shadowing: Dom0 disabled, DomU disabled
(XEN) Using scheduler: SMP Credit Scheduler rev2 (credit2)
(XEN) Initializing Credit2 scheduler
(XEN)  load_precision_shift: 18
(XEN)  load_window_shift: 30
(XEN)  underload_balance_tolerance: 0
(XEN)  overload_balance_tolerance: -3
(XEN)  runqueues arrangement: socket
(XEN)  cap enforcement granularity: 10ms
(XEN) load tracking window length 1073741824 ns
(XEN) Platform timer is 14.318MHz HPET
(XEN) Detected 3393.617 MHz processor.
(XEN) Freed 1008kB unused BSS memory
(XEN) alt table ffff82d04049bfb8 -> ffff82d0404b328e
(XEN) AMD-Vi: IOMMU 0 Enabled.
(XEN) I/O virtualisation enabled
(XEN)  - Dom0 mode: Relaxed
(XEN) Interrupt remapping enabled
(XEN) Enabling APIC mode.  Using 2 I/O APICs
(XEN) ENABLING IO-APIC IRQs
(XEN)  -> Using new ACK method
(XEN) ..TIMER: vector=3D0xF0 apic1=3D0 pin1=3D2 apic2=3D-1 pin2=3D-1
(XEN) Wallclock source: CMOS RTC
(XEN) Defaulting to alternative key handling; send 'A' to switch to normal =
mode.
(XEN) Allocated console ring of 128 KiB.
(XEN) HVM: ASIDs enabled
(XEN) SVM: Supported advanced features:
(XEN)  - Nested Page Tables (NPT)
(XEN)  - Last Branch Record (LBR) Virtualisation
(XEN)  - Next-RIP Saved on #VMEXIT
(XEN)  - VMCB Clean Bits
(XEN)  - TLB flush by ASID
(XEN)  - DecodeAssists
(XEN)  - Virtual VMLOAD/VMSAVE
(XEN)  - Virtual GIF
(XEN)  - Pause-Intercept Filter
(XEN)  - Pause-Intercept Filter Threshold
(XEN)  - TSC Rate MSR
(XEN)  - NPT Supervisor Shadow Stack
(XEN)  - MSR_SPEC_CTRL virtualisation
(XEN) HVM: SVM enabled
(XEN) HVM: Hardware Assisted Paging (HAP) detected
(XEN) HVM: HAP page sizes: 4kB, 2MB, 1GB
(XEN) Brought up 32 CPUs
(XEN) Scheduling granularity: cpu, 1 CPU per sched-resource
(XEN) Initializing Credit2 scheduler
(XEN)  load_precision_shift: 18
(XEN)  load_window_shift: 30
(XEN)  underload_balance_tolerance: 0
(XEN)  overload_balance_tolerance: -3
(XEN)  runqueues arrangement: socket
(XEN)  cap enforcement granularity: 10ms
(XEN) load tracking window length 1073741824 ns
(XEN) Adding cpu 0 to runqueue 0
(XEN)  First cpu on runqueue, activating
(XEN) Adding cpu 1 to runqueue 0
(XEN) Adding cpu 2 to runqueue 0
(XEN) Adding cpu 3 to runqueue 0
(XEN) Adding cpu 4 to runqueue 0
(XEN) Adding cpu 5 to runqueue 0
(XEN) Adding cpu 6 to runqueue 0
(XEN) Adding cpu 7 to runqueue 0
(XEN) Adding cpu 8 to runqueue 0
(XEN) Adding cpu 9 to runqueue 0
(XEN) Adding cpu 10 to runqueue 0
(XEN) Adding cpu 11 to runqueue 0
(XEN) Adding cpu 12 to runqueue 0
(XEN) Adding cpu 13 to runqueue 0
(XEN) Adding cpu 14 to runqueue 0
(XEN) Adding cpu 15 to runqueue 0
(XEN) Adding cpu 16 to runqueue 1
(XEN)  First cpu on runqueue, activating
(XEN) Adding cpu 17 to runqueue 1
(XEN) Adding cpu 18 to runqueue 1
(XEN) Adding cpu 19 to runqueue 1
(XEN) Adding cpu 20 to runqueue 1
(XEN) Adding cpu 21 to runqueue 1
(XEN) Adding cpu 22 to runqueue 1
(XEN) Adding cpu 23 to runqueue 1
(XEN) Adding cpu 24 to runqueue 1
(XEN) Adding cpu 25 to runqueue 1
(XEN) Adding cpu 26 to runqueue 1
(XEN) Adding cpu 27 to runqueue 1
(XEN) Adding cpu 28 to runqueue 1
(XEN) Adding cpu 29 to runqueue 1
(XEN) Adding cpu 30 to runqueue 1
(XEN) Adding cpu 31 to runqueue 1
(XEN) mcheck_poll: Machine check polling timer started.
(XEN) NX (Execute Disable) protection active
(XEN) d0 has maximum 6656 PIRQs
(XEN) *** Building a PVH Dom0 ***
(XEN) Initial low memory virq threshold set at 0x4000 pages.
(XEN) Scrubbing Free RAM in background
(XEN) Std. Loglevel: Errors, warnings and info
(XEN) Guest Loglevel: Nothing (Rate-limited: Errors and warnings)
(XEN) Xen is relinquishing VGA console.
(XEN) *** Serial input to DOM0 (type 'CTRL-a' three times to switch input)
(XEN) Freed 724kB init memory
Poking KASLR using RDRAND RDTSC...
[    0.622790] Oops: divide error: 0000 [#1] SMP NOPTI
[    0.622790] fbcon: Taking over console
[    0.623479] CPU: 4 UID: 0 PID: 1 Comm: swapper/0 Not tainted 6.19.10-200=
=2Efc43.x86_64 #1 PREEMPT(lazy)=20
[    0.623479] Hardware name: To Be Filled By O.E.M. B450M Steel Legend/B45=
0M Steel Legend, BIOS P10.43 06/25/2025
[    0.623479] RIP: 0010:amd_smn_init+0x1ea/0x280
[    0.623479] Code: c7 c7 13 de 16 83 e8 85 7c 44 fd eb 6f 48 89 df e8 0b =
18 ca fc 48 89 c3 48 85 c0 0f 84 5b ff ff ff 44 89 e8 31 d2 45 8d 7d 01 <66=
> f7 f5 66 85 d2 75 42 66 90 eb 2c 41 0f b7 ce 48 8d b3 c8 00 00
[    0.623479] RSP: 0018:ffffc9000004fe28 EFLAGS: 00010246
[    0.623479] RAX: 0000000000000000 RBX: ffff888103ee6000 RCX: 00000000000=
00005
[    0.623479] RDX: 0000000000000000 RSI: ffff888103ee6000 RDI: 00000000000=
00000
[    0.623479] RBP: 0000000000000000 R08: 0000000000000282 R09: ffff8881015=
cbf70
[    0.623479] R10: ffffc9000004fe28 R11: ffffffff84a4c880 R12: 00000000000=
00002
[    0.623479] R13: 0000000000000000 R14: 0000000000000000 R15: 00000000000=
00001
[    0.623479] FS:  0000000000000000(0000) GS:ffff88898e5ef000(0000) knlGS:=
0000000000000000
[    0.623479] CS:  0010 DS: 0000 ES: 0000 CR0: 0000000080050033
[    0.623479] CR2: 0000000000000000 CR3: 0000000003a2e000 CR4: 00000000007=
50ef0
[    0.623479] PKRU: 55555554
[    0.623479] Call Trace:
[    0.623479]  <TASK>
[    0.623479]  ? __pfx_amd_smn_init+0x10/0x10
[    0.623479]  do_one_initcall+0x5b/0x300
[    0.623479]  do_initcalls+0x148/0x170
[    0.623479]  kernel_init_freeable+0xf9/0x140
[    0.623479]  ? __pfx_kernel_init+0x10/0x10
[    0.623479]  kernel_init+0x1a/0x140
[    0.623479]  ret_from_fork+0x130/0x1a0
[    0.623479]  ? __pfx_kernel_init+0x10/0x10
[    0.623479]  ret_from_fork_asm+0x1a/0x30
[    0.623479]  </TASK>
[    0.623479] Modules linked in:
[    0.623480] ---[ end trace 0000000000000000 ]---
[    0.623499] RIP: 0010:amd_smn_init+0x1ea/0x280
[    0.623508] Code: c7 c7 13 de 16 83 e8 85 7c 44 fd eb 6f 48 89 df e8 0b =
18 ca fc 48 89 c3 48 85 c0 0f 84 5b ff ff ff 44 89 e8 31 d2 45 8d 7d 01 <66=
> f7 f5 66 85 d2 75 42 66 90 eb 2c 41 0f b7 ce 48 8d b3 c8 00 00
[    0.623534] RSP: 0018:ffffc9000004fe28 EFLAGS: 00010246
[    0.623547] RAX: 0000000000000000 RBX: ffff888103ee6000 RCX: 00000000000=
00005
[    0.623559] RDX: 0000000000000000 RSI: ffff888103ee6000 RDI: 00000000000=
00000
[    0.623571] RBP: 0000000000000000 R08: 0000000000000282 R09: ffff8881015=
cbf70
[    0.623583] R10: ffffc9000004fe28 R11: ffffffff84a4c880 R12: 00000000000=
00002
[    0.623595] R13: 0000000000000000 R14: 0000000000000000 R15: 00000000000=
00001
[    0.623608] FS:  0000000000000000(0000) GS:ffff88898e5ef000(0000) knlGS:=
0000000000000000
[    0.623623] CS:  0010 DS: 0000 ES: 0000 CR0: 0000000080050033
[    0.623634] CR2: 0000000000000000 CR3: 0000000003a2e000 CR4: 00000000007=
50ef0
[    0.623646] PKRU: 55555554
[    0.623653] Kernel panic - not syncing: Attempted to kill init! exitcode=
=3D0x0000000b
(XEN) Hardware Dom0 crashed: rebooting machine in 5 seconds.
(XEN) Resetting with ACPI MEMORY or I/O RESET_REG.

--nextPart6521316.E0xQCEvomI--





From xen-devel-bounces@lists.xenproject.org Tue Apr 07 08:54:33 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 07 Apr 2026 08:54:33 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1274541.1560633 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wA2CZ-0001aj-6i; Tue, 07 Apr 2026 08:54:27 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1274541.1560633; Tue, 07 Apr 2026 08:54: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 1wA2CZ-0001ab-43; Tue, 07 Apr 2026 08:54:27 +0000
Received: by outflank-mailman (input) for mailman id 1274541;
 Tue, 07 Apr 2026 08:54:25 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92) id 1wA2CX-0001ZD-Ff
 for xen-devel@lists.xenproject.org; Tue, 07 Apr 2026 08:54:25 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wA2CW-000tH1-CW
 for xen-devel@lists.xenproject.org; Tue, 07 Apr 2026 10:54:24 +0200
Received: from [10.42.69.4] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <oleksii.kurochko@gmail.com>)
 id 69d4c63b-5cb7-0a2a0a5109dd-0a2a4504c308-34
 for <xen-devel@lists.xenproject.org>; Tue, 07 Apr 2026 10:54:24 +0200
Received: from [209.85.218.46] (helo=mail-ej1-f46.google.com)
 by tlsNG-ebf023.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.0)
 (envelope-from <oleksii.kurochko@gmail.com>)
 id 69d4c640-bb33-0a2a45040019-d155da2ec88f-3
 for <xen-devel@lists.xenproject.org>; Tue, 07 Apr 2026 10:54:24 +0200
Received: by mail-ej1-f46.google.com with SMTP id
 a640c23a62f3a-b9c755b2cdeso494134966b.2
 for <xen-devel@lists.xenproject.org>; Tue, 07 Apr 2026 01:54:24 -0700 (PDT)
Received: from [192.168.1.6] (user-109-243-69-121.play-internet.pl.
 [109.243.69.121]) by smtp.gmail.com with ESMTPSA id
 a640c23a62f3a-b9c3c99ec5dsm543904166b.15.2026.04.07.01.54.22
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Tue, 07 Apr 2026 01:54:22 -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=20251104 header.d=gmail.com header.i="@gmail.com" header.h="Content-Transfer-Encoding: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=20251104; t=1775552064; x=1776156864; darn=lists.xenproject.org;
        h=content-transfer-encoding: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;
        bh=YlUfWcQ7FTA6B0/8S+TGV7D3p/4B+5XCrO/ub4Jh2Vs=;
        b=paoXeurZV+CouOOvbVxK7jok+1x1wQZ6t8tuBruw1YJ7ZxfLQsAsqeTkOIFWTT+k7q
         9UCGmGUth7mm88AfKbeuSUoH/C4aLtL5qX5ibhhozfcY1HycmUW04Qoy3F325pQzMCuq
         Tk64QJJKvTolmUbtE95xakgJdUV8PCaGfwNynbSoCqq7Eqh0GWy+QGfCQJUUbeQ3q7Us
         G4TbEXIFE0Z+sX90vLQg2m2NO3eF191eC7pHC+Vz2ld5so3pBC44P5hxLR+hw63yghIy
         EGdp1Xdo+IseNGYnA3ycd+GKejc1QqINxskA6jwOSLN547lzXaMAD5QinRxA2SA5KpXd
         OR3w==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20251104; t=1775552064; x=1776156864;
        h=content-transfer-encoding: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;
        bh=YlUfWcQ7FTA6B0/8S+TGV7D3p/4B+5XCrO/ub4Jh2Vs=;
        b=T8q9RcktDT/5XE8vDH91kOKv30oMwOHT/aBXkDtap4cjb+qgj0qS0Et93/3mO4TcgC
         8IaXHpQRQ3oG5tOJ9GgjQpvkOIDAmN7s7b3OSINtyZhqCupBhRuVepog69XSNDkeezYy
         n4dcgrxTq0RmCD/D0ZYNb4Sj8BmxRvk9ITzPO6bkYiz46EFGLbSNtdWyl4IJ9gcb4av/
         F3HM4VIFkQ30+6lRGGDAykqZU4eyEtOBdbh/3oi5iHdhDVkNEtx9U3XGiK2QGfaTWQlW
         dWIB5UEkQV8p+LeqEwEYAzARWCWHR52zzQ5AdckX0wW9P1hYQSYWOr4XNqEdsRlVeLgD
         cLGQ==
X-Forwarded-Encrypted: i=1; AJvYcCUqoALe9wpj6Ik9Ir8y2P8bm8Dj5QAJPNK9CdP6pLUUMMij5LFvNU/Rj9M7naXZn6RbOVKBF+uSHkk=@lists.xenproject.org
X-Gm-Message-State: AOJu0YwnN8qGENo6Ih7MY14N0/ELJfSqoTU4sHWeTNINkoVOjntvJ8uF
	IIpJNaeeB6oGWGXJE4JO2+Yk9YDj/aI2fvIRdE10ARaob4MwnrSPtK6u
X-Gm-Gg: AeBDievH9D9JD9muxXDjpCm0ybtkRJiVs8WdbEq67Fxp5EQNLcWviklstk6idF/72LL
	RHmaGvWCV9nMZYoceuJaNj6L2bDp/87Z+KW5Q87TChq8NOAt7HehvVXrTiKGzk25MYuGdAkUKHZ
	AN2yyVpl1LKtYwhAALAwgZimpn7UjQyklB+R+jrzcGMZewCWTEu537nT+irjIc+f849NBGbgqNw
	XfCm8yWV3Tunu4jvTnMecaOm4Vn7+aKXcmo7VZBjXH35/Bwm42/31yIxzsb/+URk8yR6EbU7qvM
	cZlr4HTISzqrh6G4esYdKm67jvl5T7Hxi9QBwbXTPVSAu6PvAN7kwi8PcpHWO1omqiNvCqWL8Li
	hjDzT1UzaCWAgCaPjQQUJmx6DaXDFJsDDIVp9FImq8qEoNFiXs4yOIkam/iQNAcdIJeOGESg1ZY
	2m4FV0nlgFzsXE8AixHybs63T6iQQjYAJsBK8Kvt46W789Bhoglq5iKqJ7c1xP7fbHDKYETjv0L
	SsLt8G8aQnyjQ==
X-Received: by 2002:a17:907:3f90:b0:b9b:207c:f7af with SMTP id a640c23a62f3a-b9c679f3b83mr807071666b.42.1775552063361;
        Tue, 07 Apr 2026 01:54:23 -0700 (PDT)
Message-ID: <538d86ca-2a87-4d22-bdd6-ecee3f89cead@gmail.com>
Date: Tue, 7 Apr 2026 10:54:21 +0200
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH v2 10/11] xen/riscv: add definition of guest RAM banks
To: Jan Beulich <jbeulich@suse.com>
Cc: Romain Caritey <Romain.Caritey@microchip.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.pau@citrix.com>,
 Stefano Stabellini <sstabellini@kernel.org>, xen-devel@lists.xenproject.org
References: <cover.1774281309.git.oleksii.kurochko@gmail.com>
 <8278256f3d270b456d19cb9891b89b88a46548a5.1774281309.git.oleksii.kurochko@gmail.com>
 <1a3a316e-f0ea-4514-95d6-9813d6d5ca76@suse.com>
 <691be850-9145-4bbf-a897-d10a0193b730@gmail.com>
 <dfd2a666-f3a5-4d88-b034-438f8fbb85ba@suse.com>
 <2bae9e12-8f71-4ff0-b077-bfb4215e5e14@gmail.com>
 <ffd3a7cd-8c47-4a9b-864a-26a053b5b7d2@suse.com>
 <bc5a9826-c1ff-43b2-a3d1-1a4862301aea@gmail.com>
 <0e37083a-42ab-4c99-83fc-b77f519394b9@suse.com>
 <912263a2-8dff-414e-bea4-64428ce2ec36@gmail.com>
 <4a1f7cfb-df74-4083-a681-f79911da10e1@suse.com>
Content-Language: en-US
From: Oleksii Kurochko <oleksii.kurochko@gmail.com>
In-Reply-To: <4a1f7cfb-df74-4083-a681-f79911da10e1@suse.com>
Content-Type: text/plain; charset=UTF-8; format=flowed
Content-Transfer-Encoding: 7bit
X-purgate-ID: tlsNG-ebf023/1775552064-33F3651B-3E6D2920/10/73395122804
X-purgate-type: spam
X-purgate-size: 3719



On 4/7/26 8:23 AM, Jan Beulich wrote:
> On 06.04.2026 17:43, Oleksii Kurochko wrote:
>>
>>
>> On 4/1/26 5:10 PM, Jan Beulich wrote:
>>> On 01.04.2026 16:53, Oleksii Kurochko wrote:
>>>>
>>>>
>>>> On 4/1/26 4:22 PM, Jan Beulich wrote:
>>>>> On 01.04.2026 15:57, Oleksii Kurochko wrote:
>>>>>> On 4/1/26 8:17 AM, Jan Beulich wrote:
>>>>>>> On 31.03.2026 18:14, Oleksii Kurochko wrote:
>>>>>>>> On 3/30/26 5:51 PM, Jan Beulich wrote:
>>>>>>>>> On 23.03.2026 17:29, Oleksii Kurochko wrote:
>>>>>>>>>> The dom0less solution uses defined RAM banks as compile-time constants,
>>>>>>>>>> so introduce macros to describe guest RAM banks.
>>>>>>>>>>
>>>>>>>>>> The reason for 2 banks is that there is typically always a use case for
>>>>>>>>>> low memory under 4 GB, but the bank under 4 GB ends up being small because
>>>>>>>>>> there are other things under 4 GB it can conflict with (interrupt
>>>>>>>>>> controller, PCI BARs, etc.).
>>>>>>>>> Fixed layouts like the one you suggest come with (potentially severe)
>>>>>>>>> downsides. For example, what if more than 2Gb of MMIO space are needed
>>>>>>>>> for non-64-bit BARs?
>>>>>>>> It looks where usually RAM on RISC-V boards start, so I expect that 2gb
>>>>>>>> before RAM start is enough for MMIO space.
>>>>>>> Likely in the common case. Board designers aren't constrained by this,
>>>>>>> though (aiui). Whereas you set in stone a single, fixed layout.
>>>>>>>
>>>>>>> Arm maintainers - since a similar fixed layout is used there iirc,
>>>>>>> could you chime in here, please?
>>>>>>>
>>>>>>>> Answering your question it will be an issue or it will also use some
>>>>>>>> space before banks, no?
>>>>>>> I fear I don't understand what you're trying to tell me.
>>>>>> I meant that there is also some space between banks and pretty big which
>>>>>> could be used for MMIO which could be used for non-64-bit BARs.
>>>>> I don't follow: Bank 0 extends to 4G. There's no space above it, below
>>>>> bank 1, which could be use for non-64-bit BARs.
>>>>
>>>> So we have two banks:
>>>> bank[0] -> [0x80000000, 0x100000000)
>>>> bank[1] -> [0x0200000000, 10000000000)
>>>>
>>>> So i think we have some space between them [0x100000000, 0x0200000000)
>>>> -> 4gb to be used for non-64-bit BARs.
>>>
>>> But a non-64-bit BAR need to be assigned an address below 0x100000000?
>>
>> Right, I had in mind that RV32 uses for guest Sv32x4 which could
>> translate 34-bit GPA into 34-bit MPA and automatically applied that to
>> 32-bit BAR...
>>
>> I can keep first 4gb for MMIO purpose and start bank[0] at 4gb as 34 MPA
>> address space is more then enough to cover reserved 2gb of bank[0] after
>> 4gb.
> 
> Yet having no memory below 4G won't work for guests wanting to run in bare
> mode? Don't guests even start up in bare mode (and hence 32-bit ones need
> to have some of their memory below 4G in all cases)?

I thought about such use case but decided that no one will want to run 
guest in bare mode and that is why we have:
     if ( max_gstage_mode.mode == HGATP_MODE_OFF )
         panic("Xen expects that G-stage won't be Bare mode\n");

Probably it is wrong assumption and we really want to support Bare mode 
for guest too. Let me know if I have to drop the panic above...

Then it isn't clear what will be the best layout for the current 
limitation that guest RAM should be compile-time constant for dom0less 
solution.
It looks to me that giving 2gb reserved for MMIO and 2gb for guest RAM 
is fair enough.
As an option 3gb for MMIO and 1gb for guest RAM will be enough as only 
Bare model will have such small amount of RAM, for other modes part of 
bank[1] could be used.

~ Oleksii


From xen-devel-bounces@lists.xenproject.org Tue Apr 07 09:05:45 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 07 Apr 2026 09:05:45 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1274552.1560643 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wA2NQ-0003Gw-5q; Tue, 07 Apr 2026 09:05:40 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1274552.1560643; Tue, 07 Apr 2026 09: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 1wA2NQ-0003Gp-33; Tue, 07 Apr 2026 09:05:40 +0000
Received: by outflank-mailman (input) for mailman id 1274552;
 Tue, 07 Apr 2026 09:05:38 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <jbeulich@suse.com>) id 1wA2NO-0003GT-Ih
 for xen-devel@lists.xen.org; Tue, 07 Apr 2026 09:05:38 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wA2NN-000w4h-Gk
 for xen-devel@lists.xen.org; Tue, 07 Apr 2026 11:05:37 +0200
Received: from [10.42.69.8] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <jbeulich@suse.com>)
 id 69d4c8de-5cb7-0a2a0a5109dd-0a2a4508ccd2-16
 for <xen-devel@lists.xen.org>; Tue, 07 Apr 2026 11:05:37 +0200
Received: from [209.85.128.49] (helo=mail-wm1-f49.google.com)
 by tlsNG-c1860d.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.0)
 (envelope-from <jbeulich@suse.com>)
 id 69d4c8e1-fab6-0a2a45080019-d1558031d46e-3
 for <xen-devel@lists.xen.org>; Tue, 07 Apr 2026 11:05:37 +0200
Received: by mail-wm1-f49.google.com with SMTP id
 5b1f17b1804b1-4852a9c6309so43541705e9.0
 for <xen-devel@lists.xen.org>; Tue, 07 Apr 2026 02:05:37 -0700 (PDT)
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-43d1e4f5294sm45279320f8f.35.2026.04.07.02.05.36
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Tue, 07 Apr 2026 02:05: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=google header.d=suse.com header.i="@suse.com" header.h="Content-Transfer-Encoding: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=1775552737; x=1776157537; darn=lists.xen.org;
        h=content-transfer-encoding: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;
        bh=+iipnUvWf3VyQXpeoKOUwRCi2Sd72keEL26IKUnCmEI=;
        b=ZqibR8WGV/wciesuuE7VCZciTuMHDGX8aj56sl79ZaMeA1q5CukgsAXXulNTRToe85
         cGp+zhgA9pMGWBZL1fPa1CVDFxWBPI5g4RtnVEo3+Gf6xzLIi3bgRbewuDZ4sr2DIEGE
         T+QHKwhptZep2YyFDcBT5CM4fd8/kkecPGbT657h8OrBfHmbzlV7SnzGjm7oQUvOUuYC
         hoPSTeyct4RrIT6S35ESnLh8QvotDWDgqdM6COhoWdxTHxWeA5BvaKLR3uOx+2PIusrK
         8sNuve/zF4Dj3R6Wd+ECu6ABHbwFwpI5/scvD901OHRk67KbqOxwnLPNr/M5I7I3qGZG
         Bpww==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20251104; t=1775552737; x=1776157537;
        h=content-transfer-encoding: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;
        bh=+iipnUvWf3VyQXpeoKOUwRCi2Sd72keEL26IKUnCmEI=;
        b=artYPTpe4/I7XIhJroKgNHYiz8JTlDWoYyv9fnaQwdIvIxZQyqVDnIQ37TstBBqrHi
         5TVpEinXkF8rxKChJMR0Cc1mJADewz/f7R8ZM26j3BUyn/zezx5LgVTuVnNsdVng4P/Y
         xE12+JXUIR5UiAhptYE+m/AKKwRUSnAuCbyEVMejAhk3dkn9oCDxYmHdFxb0FRCWebby
         E2K+RJUjAvO6A7+fTqxyEowJEYlhgsKNKHHhiyX1Sd7JA0mQMvayppff2fAFnAjaKXX4
         Ss6Uhi2VOe65d3m5bvzXNaaquyuARfDSzC1N9hQnK6Mm091gTCij6ttS6bJtfqoAZCjb
         EQ8g==
X-Gm-Message-State: AOJu0YxY3jQ2guHmXAqKjnqDUU6bM4srAiuUdBIVgBXb9cB5qC3zdA9O
	BEqV2N8wlyW3OtSrmHqbI0JWSBLiY6SfT022dxWGJPcrAlbAXloiEk3gq4NDb6BcZg==
X-Gm-Gg: AeBDiet/gn0DD0XD4mPoJprZjyeLMliDbRZ88vV97YJVsTKuf98oSMmYaQeLvNDj9ws
	3C9qIroJRtrsmYJmBRWYORqsy9PCO8ar4LEIKxafZ9a0jTUdMq2fF3j3ddcXNNGarhFrXI4jvKS
	y/C7sqS58Jc+wbwNM/OHV6ifr5IA4CRrWStrjCvoQOstBQH3ww8Gv0gN0EBzoM8LFV7lgADwOHa
	5pgQYLCIimfp8gGj8K7hzI0Webd68Kle9IY+LnUJ9ecrcKKoLw3XuoXxspdUQEtAvDkBJ1xMzow
	d8TwCXhbYBoYNLdzN5ie9ChRmogvjk1yJBQpfdc15iLoKxyAUrQyEhC5HD+RwMcvbSLN+GMk0a3
	YMPxEurVDMx0urZHqRtMNo6FE1xK+/2ynRXp+ROPNDLzFcvBU2A2qpcg7mVXvqMRviGSpec2bir
	rwN8Yb8oO74aJaolqCWPKVsmxPn+6o4CUxWPHp2s36BNtIP1pDvD14c0pnb5KmBDdyN6FJoOrol
	s0cD/pGoljzqfQ66gJQrpJ37A==
X-Received: by 2002:a05:600c:638e:b0:486:fbdb:b718 with SMTP id 5b1f17b1804b1-488997c13femr221244405e9.25.1775552736614;
        Tue, 07 Apr 2026 02:05:36 -0700 (PDT)
Message-ID: <1f1cfdeb-adbd-420d-a187-d0007fcad123@suse.com>
Date: Tue, 7 Apr 2026 11:05:40 +0200
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: Xen on Zen 3
To: =?UTF-8?B?TWF0ecOhxaEgS3JvdXBh?= <kroupa.matyas@gmail.com>
References: <5490687.niJfEyVGOH@rivendell.hailstone.cz>
Content-Language: en-US
Cc: xen-devel@lists.xen.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: <5490687.niJfEyVGOH@rivendell.hailstone.cz>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
X-purgate-ID: tlsNG-c1860d/1775552737-F7149497-34A61169/0/0
X-purgate-type: clean
X-purgate-size: 2132

On 07.04.2026 10:08, Matyáš Kroupa wrote:
> Hi,
> I am trying to run Xen on a bare metal with Zen 3 microarchitecture (to be 
> specific Ryzen 9 5950X). I am using Fedora 43 as Dom0 in PVH mode. However, the 
> Linux kernel crashes early in the boot causing Xen to reboot. I am not exactly 
> sure if Linux or Xen is the problematic part. The kernel boots fine without 
> Xen. Before Ryzen 9 I had Ryzen 5 3400G (Zen+) which booted even with Xen.
> 
> The Xen is a backported from Fedora 44 (not yet released) because I need Xen 
> 4.21 features, mainly ReBAR support for the Arc B50 GPU. Package specification 
> with build commands can be found on https://src.fedoraproject.org/rpms/xen/
> blob/f44/f/xen.spec. There are also downstream patches and configuration.
> 
> I have set up a serial link, so I have some logs. They are in the attachment. 
> I have used gdb to translate the binary offset to source code line. The 
> problematic line is https://elixir.bootlin.com/linux/v6.19.10/source/arch/x86/
> kernel/amd_node.c#L296. It seems that linux is detecting zero PCI roots on 
> non-zero number of nodes causing division by zero.

Not exactly, there is an earlier exit from the function when num_roots is 0.
If that line is the problem one, then presumably num_roots < num_nodes, thus
yielding roots_per_node as 0. Sadly you didn't enable enough verbosity for

	pr_debug("Found %d AMD root devices\n", num_roots);

to actually leave a trace in the log. I'd guess the value to be 1, but there
being multiple nodes at the same time. You may want to instrument the
function a little more to be certain.

Seeing

static inline u16 amd_num_nodes(void)
{
	return topology_amd_nodes_per_pkg() * topology_max_packages();
}

I'm not overly surprised of problems, though. Our topology representation
still has a lot of work to do before the data can be reliably used.

For your immediate purpose you may want to change the "!num_roots" check
into a "num_roots < num_nodes" one (on the assumption that num_nodes
can't be 0). Whether that's acceptable upstream I don't know, of course.

Jan


From xen-devel-bounces@lists.xenproject.org Tue Apr 07 09:09:52 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 07 Apr 2026 09:09:52 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1274561.1560651 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wA2RO-0003uo-MM; Tue, 07 Apr 2026 09:09:46 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1274561.1560651; Tue, 07 Apr 2026 09:09: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 1wA2RO-0003uh-J5; Tue, 07 Apr 2026 09:09:46 +0000
Received: by outflank-mailman (input) for mailman id 1274561;
 Tue, 07 Apr 2026 09:09:44 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <jbeulich@suse.com>) id 1wA2RM-0003ub-I8
 for xen-devel@lists.xenproject.org; Tue, 07 Apr 2026 09:09:44 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wA2RL-00BJMI-U7
 for xen-devel@lists.xenproject.org; Tue, 07 Apr 2026 11:09:43 +0200
Received: from [10.42.69.7] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <jbeulich@suse.com>)
 id 69d4c9d5-e002-0a2a0a5209dd-0a2a4507be92-18
 for <xen-devel@lists.xenproject.org>; Tue, 07 Apr 2026 11:09:43 +0200
Received: from [209.85.128.52] (helo=mail-wm1-f52.google.com)
 by tlsNG-ef75cf.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.0)
 (envelope-from <jbeulich@suse.com>)
 id 69d4c9d7-ba2d-0a2a45070019-d1558034dc0f-3
 for <xen-devel@lists.xenproject.org>; Tue, 07 Apr 2026 11:09:43 +0200
Received: by mail-wm1-f52.google.com with SMTP id
 5b1f17b1804b1-488ba6366a7so10390635e9.0
 for <xen-devel@lists.xenproject.org>; Tue, 07 Apr 2026 02:09:43 -0700 (PDT)
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-488be75215dsm39155605e9.6.2026.04.07.02.09.42
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Tue, 07 Apr 2026 02:09:42 -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=google header.d=suse.com header.i="@suse.com" header.h="Content-Transfer-Encoding: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=1775552983; x=1776157783; darn=lists.xenproject.org;
        h=content-transfer-encoding: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;
        bh=Jwf/zAXtwrN0eKv07Lzpp60Eil4P8Gd1L8PTDcCJXgk=;
        b=enOlXbPxpcKRTN0uP8XSOjEPBa6/tYNX2fFR5/+dLffaT1TImnRVZ2iNShOEPb0N4w
         EA/xAAA5cqg0ADte1iCmy9b2/ST+4ktGGSxXbXx38H3tYcGw/nULh+sSlAEUL2WCHefs
         NOoS5StXoaPgNK3Cy4fFQvRjhWlb7l2KDnIl23BkT/f467CHiuTJ4zOMYKmH/i0+7Jqv
         ZOfTP607MZdN6242Jx63dwghDMD0r2Dy783qJpg7JdxqQLBydigg8vE6oXMxB3srH2Ta
         56I4JYKrunE9MMFIaoOcavvdfObQp/YYwCH6PtRmfBgaqNtNhZ+RaW/cksBufiLsCPmP
         i9IA==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20251104; t=1775552983; x=1776157783;
        h=content-transfer-encoding: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;
        bh=Jwf/zAXtwrN0eKv07Lzpp60Eil4P8Gd1L8PTDcCJXgk=;
        b=EmQ7gkRQdDjayHMKSGBjaZsvW5l941NNNyPnAel3Od/g26UrenIWG4ZKtELaZbTYm/
         AJF2zmX7r2ptLPBNbqSa+AH6l+6NQEY0LOx2EClxerv5tCML5qwiUyiUx0XBzHhpZWM6
         k9sYIfhUW9T3GmfYTRid0Un6XOxcIzAMqe2BHsHWFKBj/EiofW2l634a1vj7Pc3/S08Y
         owb75a6go22tl4mTUgSmRIXm/HceIu6JrHZkzBSnYpaW8AxqFf6Vw2Cff5pSE/eD+PsP
         k5hwatYfb7zEHOFqAyuONqa+F7pLkSfC1h0qgtN9JBZ2TgHmSBLYwB5D58t+XcuF9UMC
         yXEA==
X-Forwarded-Encrypted: i=1; AJvYcCXeio0ObdHm09PzW+SUVUeKatEY0E0vzxo9wl4W6FAb1ML9LuNOSjFgLMLN2IotRzPNYvLSE3nuNwY=@lists.xenproject.org
X-Gm-Message-State: AOJu0YwG8F2cMbsR6ze6G4EPQ5UKg/O6xzDVe51B3bDjDUXQKedA123V
	DqxVAYL3/QadHjlcQeLbtvlVUfmC5K9eeUXrYkV1qPrzHS5y+SY9tVs+P3nyTBuYlQ==
X-Gm-Gg: AeBDiesd9PvAziHWttks4WEmvZgCZjGiApU5uAYOs5tlF5SDOD8KQDl1LnPVjxPd3OO
	Eu40cwXeFDm8mm/pfOahWyo8cVN+A6f2ZLmP4cF1W9UM0c/CImns9B639SROMozZ0rn0jO4Qy3W
	0vRJUAa6bRLIEn6zzwzP2UOFzXfzsllfCEVRDRgioX5CZJmzz3iFk1ot+9EvkHRcit4j9r0H+iy
	wiHh6itF0B5srybjZ/mCOSXP1yLpNgQgbFjDJpDkreBnO7vL7f26xkygEozBDdr5OrZe/DeU6/J
	mZ8F6ndUj1hsuJEV6GEZzP11tIF70aH7e2Hj6J5AL4C7TX78U0niyA6ujDXRhLFpMheE8rzk9bh
	Ycy6fEIxnxxP9iI9/4k0reA2nx8LZcKxOIlY5IlGC9pJwnR5dHCM1jR4ScnXFr6woD/nplxAhAi
	6ZvGCiIKum9zNvAkN3Xf7cAguvEAQD1Zk37Fq51GtpI1bTNuWIBodvyRpBhaTpWQdUGj2UPPs6d
	QgzX2+VsKbVNnI=
X-Received: by 2002:a05:600c:6cf:b0:488:a82f:bb95 with SMTP id 5b1f17b1804b1-488a82fbd0fmr78912275e9.29.1775552982905;
        Tue, 07 Apr 2026 02:09:42 -0700 (PDT)
Message-ID: <d0e8afc6-ba85-466d-be65-685b0731741a@suse.com>
Date: Tue, 7 Apr 2026 11:09:46 +0200
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH v2 10/11] xen/riscv: add definition of guest RAM banks
To: Oleksii Kurochko <oleksii.kurochko@gmail.com>
Cc: Romain Caritey <Romain.Caritey@microchip.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.pau@citrix.com>,
 Stefano Stabellini <sstabellini@kernel.org>, xen-devel@lists.xenproject.org
References: <cover.1774281309.git.oleksii.kurochko@gmail.com>
 <8278256f3d270b456d19cb9891b89b88a46548a5.1774281309.git.oleksii.kurochko@gmail.com>
 <1a3a316e-f0ea-4514-95d6-9813d6d5ca76@suse.com>
 <691be850-9145-4bbf-a897-d10a0193b730@gmail.com>
 <dfd2a666-f3a5-4d88-b034-438f8fbb85ba@suse.com>
 <2bae9e12-8f71-4ff0-b077-bfb4215e5e14@gmail.com>
 <ffd3a7cd-8c47-4a9b-864a-26a053b5b7d2@suse.com>
 <bc5a9826-c1ff-43b2-a3d1-1a4862301aea@gmail.com>
 <0e37083a-42ab-4c99-83fc-b77f519394b9@suse.com>
 <912263a2-8dff-414e-bea4-64428ce2ec36@gmail.com>
 <4a1f7cfb-df74-4083-a681-f79911da10e1@suse.com>
 <538d86ca-2a87-4d22-bdd6-ecee3f89cead@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: <538d86ca-2a87-4d22-bdd6-ecee3f89cead@gmail.com>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 7bit
X-purgate-ID: tlsNG-ef75cf/1775552983-1039741E-746A4110/0/0
X-purgate-type: clean
X-purgate-size: 4245

On 07.04.2026 10:54, Oleksii Kurochko wrote:
> 
> 
> On 4/7/26 8:23 AM, Jan Beulich wrote:
>> On 06.04.2026 17:43, Oleksii Kurochko wrote:
>>>
>>>
>>> On 4/1/26 5:10 PM, Jan Beulich wrote:
>>>> On 01.04.2026 16:53, Oleksii Kurochko wrote:
>>>>>
>>>>>
>>>>> On 4/1/26 4:22 PM, Jan Beulich wrote:
>>>>>> On 01.04.2026 15:57, Oleksii Kurochko wrote:
>>>>>>> On 4/1/26 8:17 AM, Jan Beulich wrote:
>>>>>>>> On 31.03.2026 18:14, Oleksii Kurochko wrote:
>>>>>>>>> On 3/30/26 5:51 PM, Jan Beulich wrote:
>>>>>>>>>> On 23.03.2026 17:29, Oleksii Kurochko wrote:
>>>>>>>>>>> The dom0less solution uses defined RAM banks as compile-time constants,
>>>>>>>>>>> so introduce macros to describe guest RAM banks.
>>>>>>>>>>>
>>>>>>>>>>> The reason for 2 banks is that there is typically always a use case for
>>>>>>>>>>> low memory under 4 GB, but the bank under 4 GB ends up being small because
>>>>>>>>>>> there are other things under 4 GB it can conflict with (interrupt
>>>>>>>>>>> controller, PCI BARs, etc.).
>>>>>>>>>> Fixed layouts like the one you suggest come with (potentially severe)
>>>>>>>>>> downsides. For example, what if more than 2Gb of MMIO space are needed
>>>>>>>>>> for non-64-bit BARs?
>>>>>>>>> It looks where usually RAM on RISC-V boards start, so I expect that 2gb
>>>>>>>>> before RAM start is enough for MMIO space.
>>>>>>>> Likely in the common case. Board designers aren't constrained by this,
>>>>>>>> though (aiui). Whereas you set in stone a single, fixed layout.
>>>>>>>>
>>>>>>>> Arm maintainers - since a similar fixed layout is used there iirc,
>>>>>>>> could you chime in here, please?
>>>>>>>>
>>>>>>>>> Answering your question it will be an issue or it will also use some
>>>>>>>>> space before banks, no?
>>>>>>>> I fear I don't understand what you're trying to tell me.
>>>>>>> I meant that there is also some space between banks and pretty big which
>>>>>>> could be used for MMIO which could be used for non-64-bit BARs.
>>>>>> I don't follow: Bank 0 extends to 4G. There's no space above it, below
>>>>>> bank 1, which could be use for non-64-bit BARs.
>>>>>
>>>>> So we have two banks:
>>>>> bank[0] -> [0x80000000, 0x100000000)
>>>>> bank[1] -> [0x0200000000, 10000000000)
>>>>>
>>>>> So i think we have some space between them [0x100000000, 0x0200000000)
>>>>> -> 4gb to be used for non-64-bit BARs.
>>>>
>>>> But a non-64-bit BAR need to be assigned an address below 0x100000000?
>>>
>>> Right, I had in mind that RV32 uses for guest Sv32x4 which could
>>> translate 34-bit GPA into 34-bit MPA and automatically applied that to
>>> 32-bit BAR...
>>>
>>> I can keep first 4gb for MMIO purpose and start bank[0] at 4gb as 34 MPA
>>> address space is more then enough to cover reserved 2gb of bank[0] after
>>> 4gb.
>>
>> Yet having no memory below 4G won't work for guests wanting to run in bare
>> mode? Don't guests even start up in bare mode (and hence 32-bit ones need
>> to have some of their memory below 4G in all cases)?
> 
> I thought about such use case but decided that no one will want to run 
> guest in bare mode and that is why we have:
>      if ( max_gstage_mode.mode == HGATP_MODE_OFF )
>          panic("Xen expects that G-stage won't be Bare mode\n");

How does HGATP matter here? We're talking of guest physical address space
layout, and hence it's SATP which matters.

> Probably it is wrong assumption and we really want to support Bare mode 
> for guest too. Let me know if I have to drop the panic above...
> 
> Then it isn't clear what will be the best layout for the current 
> limitation that guest RAM should be compile-time constant for dom0less 
> solution.
> It looks to me that giving 2gb reserved for MMIO and 2gb for guest RAM 
> is fair enough.
> As an option 3gb for MMIO and 1gb for guest RAM will be enough as only 
> Bare model will have such small amount of RAM, for other modes part of 
> bank[1] could be used.

All of which only supports my take that you don't want to make guest
memory layout an ABI property. Using compile-time determined banks for
now may be okay(ish), but in the longer run things will want determining
dynamically (or specifying via per-guest config).

Jan


From xen-devel-bounces@lists.xenproject.org Tue Apr 07 09:19:56 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 07 Apr 2026 09:19:56 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1274571.1560661 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wA2b0-0005h6-Kw; Tue, 07 Apr 2026 09:19:42 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1274571.1560661; Tue, 07 Apr 2026 09:19: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 1wA2b0-0005gz-HG; Tue, 07 Apr 2026 09:19:42 +0000
Received: by outflank-mailman (input) for mailman id 1274571;
 Tue, 07 Apr 2026 09:19:41 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92) id 1wA2az-0005gd-Do
 for xen-devel@lists.xenproject.org; Tue, 07 Apr 2026 09:19:41 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wA2av-000zZj-O5
 for xen-devel@lists.xenproject.org; Tue, 07 Apr 2026 11:19:37 +0200
Received: from [10.42.69.3] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <oleksii.kurochko@gmail.com>)
 id 69d4cc24-bab6-0a2a0a5309dd-0a2a4503ac08-26
 for <xen-devel@lists.xenproject.org>; Tue, 07 Apr 2026 11:19:37 +0200
Received: from [209.85.218.48] (helo=mail-ej1-f48.google.com)
 by tlsNG-33051d.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.0)
 (envelope-from <oleksii.kurochko@gmail.com>)
 id 69d4cc29-02b3-0a2a45030019-d155da30e904-3
 for <xen-devel@lists.xenproject.org>; Tue, 07 Apr 2026 11:19:37 +0200
Received: by mail-ej1-f48.google.com with SMTP id
 a640c23a62f3a-b9c9d03524cso354524566b.3
 for <xen-devel@lists.xenproject.org>; Tue, 07 Apr 2026 02:19:37 -0700 (PDT)
Received: from [192.168.1.6] (user-109-243-69-121.play-internet.pl.
 [109.243.69.121]) by smtp.gmail.com with ESMTPSA id
 a640c23a62f3a-b9c3c9721c1sm553414266b.2.2026.04.07.02.19.36
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Tue, 07 Apr 2026 02:19: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=20251104 header.d=gmail.com header.i="@gmail.com" header.h="Content-Transfer-Encoding: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=20251104; t=1775553577; x=1776158377; darn=lists.xenproject.org;
        h=content-transfer-encoding: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;
        bh=Taxvn8/g8ikpzSvz6Hi+Y5Jm1vVbggVtyECOAlRo/j4=;
        b=cJm+fjUPHiH1br79u3j5Drt0gLUq3khrXudMr5C8OjHkYKuL/p2DWTEUXCJQqsRR8O
         XbgPu1WE3AQ2Yb2qUrppQpLvKzw2Ec5a1UbFwrUmKM2Daf3hOsLZoIoMUbtJr1SRgjg1
         GVYY9AscIrJ9p32vgdQ+66Wo7rKcRrRxsMDCOS1QhDimeRzQQY3upj5kGUeSuXjOmHoa
         zs7E7Q6w3WfojSijh0as712ZdfSnB/YfOwfkZdjvy/gwe0MkRrn/fvHb9X5fC8+JYGmK
         Tn0IrKAWMNwk2seziurbw3BNo3RikISO4F++UBtPgOozPr64xRwqCF5AaGKgXVqBi06J
         YYQQ==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20251104; t=1775553577; x=1776158377;
        h=content-transfer-encoding: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;
        bh=Taxvn8/g8ikpzSvz6Hi+Y5Jm1vVbggVtyECOAlRo/j4=;
        b=oAVZ+B3aW30HYxMofRkYyoIxCT6CtCLEb/E/6+u/IO0OTqlbpmWF0VnQ61jCX8H/bF
         eHPMhfPa24bU76xwNQ+ueJNb1cSQovZqFF9uwW+C3ilLq1VYruOYHHa3SaNtGcAcvtQD
         kCV1S8s4mf9I4IND03wESeIejH7MzcKA6izcpNX9ZSNMQFlljeyA25jcjt28co8SiP0n
         s/Ed868q90++7osBYddB9O+bqAUHowzDW/q6IKuI93sSn+UvGl2I4JzIsXLbKnCbog2S
         RzOjJ/+MrBG/aGBrL4pA4X85QpjMR++BhPpeiJN6xx6xfenfuT1ERpPLublyXhxJJ2+r
         7lVg==
X-Forwarded-Encrypted: i=1; AJvYcCVSN4XXjq/fgtj8H+FRinYv7Fz1t5lnNq0kbxHNW8TrtpQdEDbvJbHjY0G5tIkVc5E34/6LxCFdqPw=@lists.xenproject.org
X-Gm-Message-State: AOJu0YwA9J0XWaChfpZ7oUvQaaFrzsmdX5AcniU/ZmI22nzTpnm63I5e
	d6+wkKt4UkifS/Fr2bcFdF2qXiAdNtP2eSdTjAGFZvaG6XmVE6aheTpzJ+TB9Q==
X-Gm-Gg: AeBDieusmAe4zgdSwkK1PAxD6RJYLK8TtaARkLsoTh+4tPlCoZPK13XVr/eK8QFDCOg
	yHQdCLU0Ot1dmm6BXb+G2DttPPTrV2h0lZPwq4rwESoGZn+I/1AQ2/Vdq4Za44xS5evWX/AF8YW
	wvc3KGSOkN38zm5ucZXHVvysvVz2Dpr4HVYksnRoi4DDgJjOnJXU/1AbNkxpCSBf6faFrKVxSkB
	AjoH8A0K/9VYQVl3iGGyImoOZJxUqolFyKzVzE0oDoVrEdCyEx70KNy/df4+y7OmT0CSKHAUMZM
	yPYdRQhb3s+/Ge3igVDCq8+zmWiplCl9u4hJcic7+Qc9f2dKKmYe8hQzbBXwrpcpZ/qi6by2Mxt
	dqzBBKKgHlMevej4JgmGdRf29byST3Wgn6qkh7BkmmgdjhsgTEWU1WNFZPMn/2I+3K9ybpS6KMG
	Hl7IEMyWh04RIuFsD/fTIhho9m+nietcKsk4B3fiZbfMiwUWktDOY98FC5WtAKu7kV1CeW4tqDv
	lkqaDFV+PWseQ==
X-Received: by 2002:a17:907:9705:b0:b98:13de:a16 with SMTP id a640c23a62f3a-b9c67a10a98mr884308366b.39.1775553576792;
        Tue, 07 Apr 2026 02:19:36 -0700 (PDT)
Message-ID: <a644a92d-2528-41dc-b755-31d80f905396@gmail.com>
Date: Tue, 7 Apr 2026 11:19:35 +0200
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH v2 10/11] xen/riscv: add definition of guest RAM banks
To: Jan Beulich <jbeulich@suse.com>
Cc: Romain Caritey <Romain.Caritey@microchip.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.pau@citrix.com>,
 Stefano Stabellini <sstabellini@kernel.org>, xen-devel@lists.xenproject.org
References: <cover.1774281309.git.oleksii.kurochko@gmail.com>
 <8278256f3d270b456d19cb9891b89b88a46548a5.1774281309.git.oleksii.kurochko@gmail.com>
 <1a3a316e-f0ea-4514-95d6-9813d6d5ca76@suse.com>
 <691be850-9145-4bbf-a897-d10a0193b730@gmail.com>
 <dfd2a666-f3a5-4d88-b034-438f8fbb85ba@suse.com>
 <2bae9e12-8f71-4ff0-b077-bfb4215e5e14@gmail.com>
 <ffd3a7cd-8c47-4a9b-864a-26a053b5b7d2@suse.com>
 <bc5a9826-c1ff-43b2-a3d1-1a4862301aea@gmail.com>
 <0e37083a-42ab-4c99-83fc-b77f519394b9@suse.com>
 <912263a2-8dff-414e-bea4-64428ce2ec36@gmail.com>
 <4a1f7cfb-df74-4083-a681-f79911da10e1@suse.com>
 <538d86ca-2a87-4d22-bdd6-ecee3f89cead@gmail.com>
 <d0e8afc6-ba85-466d-be65-685b0731741a@suse.com>
Content-Language: en-US
From: Oleksii Kurochko <oleksii.kurochko@gmail.com>
In-Reply-To: <d0e8afc6-ba85-466d-be65-685b0731741a@suse.com>
Content-Type: text/plain; charset=UTF-8; format=flowed
Content-Transfer-Encoding: 7bit
X-purgate-ID: tlsNG-33051d/1775553577-C9337C9A-48BC6800/10/73395122804
X-purgate-type: spam
X-purgate-size: 4513



On 4/7/26 11:09 AM, Jan Beulich wrote:
> On 07.04.2026 10:54, Oleksii Kurochko wrote:
>>
>>
>> On 4/7/26 8:23 AM, Jan Beulich wrote:
>>> On 06.04.2026 17:43, Oleksii Kurochko wrote:
>>>>
>>>>
>>>> On 4/1/26 5:10 PM, Jan Beulich wrote:
>>>>> On 01.04.2026 16:53, Oleksii Kurochko wrote:
>>>>>>
>>>>>>
>>>>>> On 4/1/26 4:22 PM, Jan Beulich wrote:
>>>>>>> On 01.04.2026 15:57, Oleksii Kurochko wrote:
>>>>>>>> On 4/1/26 8:17 AM, Jan Beulich wrote:
>>>>>>>>> On 31.03.2026 18:14, Oleksii Kurochko wrote:
>>>>>>>>>> On 3/30/26 5:51 PM, Jan Beulich wrote:
>>>>>>>>>>> On 23.03.2026 17:29, Oleksii Kurochko wrote:
>>>>>>>>>>>> The dom0less solution uses defined RAM banks as compile-time constants,
>>>>>>>>>>>> so introduce macros to describe guest RAM banks.
>>>>>>>>>>>>
>>>>>>>>>>>> The reason for 2 banks is that there is typically always a use case for
>>>>>>>>>>>> low memory under 4 GB, but the bank under 4 GB ends up being small because
>>>>>>>>>>>> there are other things under 4 GB it can conflict with (interrupt
>>>>>>>>>>>> controller, PCI BARs, etc.).
>>>>>>>>>>> Fixed layouts like the one you suggest come with (potentially severe)
>>>>>>>>>>> downsides. For example, what if more than 2Gb of MMIO space are needed
>>>>>>>>>>> for non-64-bit BARs?
>>>>>>>>>> It looks where usually RAM on RISC-V boards start, so I expect that 2gb
>>>>>>>>>> before RAM start is enough for MMIO space.
>>>>>>>>> Likely in the common case. Board designers aren't constrained by this,
>>>>>>>>> though (aiui). Whereas you set in stone a single, fixed layout.
>>>>>>>>>
>>>>>>>>> Arm maintainers - since a similar fixed layout is used there iirc,
>>>>>>>>> could you chime in here, please?
>>>>>>>>>
>>>>>>>>>> Answering your question it will be an issue or it will also use some
>>>>>>>>>> space before banks, no?
>>>>>>>>> I fear I don't understand what you're trying to tell me.
>>>>>>>> I meant that there is also some space between banks and pretty big which
>>>>>>>> could be used for MMIO which could be used for non-64-bit BARs.
>>>>>>> I don't follow: Bank 0 extends to 4G. There's no space above it, below
>>>>>>> bank 1, which could be use for non-64-bit BARs.
>>>>>>
>>>>>> So we have two banks:
>>>>>> bank[0] -> [0x80000000, 0x100000000)
>>>>>> bank[1] -> [0x0200000000, 10000000000)
>>>>>>
>>>>>> So i think we have some space between them [0x100000000, 0x0200000000)
>>>>>> -> 4gb to be used for non-64-bit BARs.
>>>>>
>>>>> But a non-64-bit BAR need to be assigned an address below 0x100000000?
>>>>
>>>> Right, I had in mind that RV32 uses for guest Sv32x4 which could
>>>> translate 34-bit GPA into 34-bit MPA and automatically applied that to
>>>> 32-bit BAR...
>>>>
>>>> I can keep first 4gb for MMIO purpose and start bank[0] at 4gb as 34 MPA
>>>> address space is more then enough to cover reserved 2gb of bank[0] after
>>>> 4gb.
>>>
>>> Yet having no memory below 4G won't work for guests wanting to run in bare
>>> mode? Don't guests even start up in bare mode (and hence 32-bit ones need
>>> to have some of their memory below 4G in all cases)?
>>
>> I thought about such use case but decided that no one will want to run
>> guest in bare mode and that is why we have:
>>       if ( max_gstage_mode.mode == HGATP_MODE_OFF )
>>           panic("Xen expects that G-stage won't be Bare mode\n");
> 
> How does HGATP matter here? We're talking of guest physical address space
> layout, and hence it's SATP which matters.

oh, right, it is hgatp.

> 
>> Probably it is wrong assumption and we really want to support Bare mode
>> for guest too. Let me know if I have to drop the panic above...
>>
>> Then it isn't clear what will be the best layout for the current
>> limitation that guest RAM should be compile-time constant for dom0less
>> solution.
>> It looks to me that giving 2gb reserved for MMIO and 2gb for guest RAM
>> is fair enough.
>> As an option 3gb for MMIO and 1gb for guest RAM will be enough as only
>> Bare model will have such small amount of RAM, for other modes part of
>> bank[1] could be used.
> 
> All of which only supports my take that you don't want to make guest
> memory layout an ABI property. Using compile-time determined banks for
> now may be okay(ish), but in the longer run things will want determining
> dynamically (or specifying via per-guest config).

I've already planned to move it to some arch specific header instead of 
ABI header.

Thanks.

~ Oleksii


From xen-devel-bounces@lists.xenproject.org Tue Apr 07 09:23:27 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 07 Apr 2026 09:23:27 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1274580.1560669 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wA2ec-0007A2-38; Tue, 07 Apr 2026 09:23:26 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1274580.1560669; Tue, 07 Apr 2026 09: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 1wA2ec-00079v-0O; Tue, 07 Apr 2026 09:23:26 +0000
Received: by outflank-mailman (input) for mailman id 1274580;
 Tue, 07 Apr 2026 09:23:24 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <kevin.brodsky@arm.com>) id 1wA2ea-00079p-IV
 for xen-devel@lists.xenproject.org; Tue, 07 Apr 2026 09:23:24 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wA2eZ-00BNtW-P1
 for xen-devel@lists.xenproject.org; Tue, 07 Apr 2026 11:23:23 +0200
Received: from [10.42.69.6] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <kevin.brodsky@arm.com>)
 id 69d4ccff-2eae-0a2a0a5409dd-0a2a45069cee-16
 for <xen-devel@lists.xenproject.org>; Tue, 07 Apr 2026 11:23:23 +0200
Received: from [217.140.110.172] (helo=foss.arm.com)
 by tlsNG-16d1c6.mxtls.expurgate.net with ESMTP (eXpurgate 4.56.0)
 (envelope-from <kevin.brodsky@arm.com>)
 id 69d4cd0a-0df0-0a2a45060019-d98c6eaca682-1
 for <xen-devel@lists.xenproject.org>; Tue, 07 Apr 2026 11:23:22 +0200
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 0FCE71A00;
 Tue,  7 Apr 2026 02:23:16 -0700 (PDT)
Received: from [10.43.20.57] (e126510-lin.lund.arm.com [10.43.20.57])
 by usa-sjc-imap-foss1.foss.arm.com (Postfix) with ESMTPSA id 706433F7D8;
 Tue,  7 Apr 2026 02:23:20 -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=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=1775553801; bh=IkPnuzV+3P8ZkIbAwdqeXO4+v1PveLJudtk7SO76pNw=;
	h=Date:Subject:To:Cc:References:From:In-Reply-To:From;
	b=VoPGsk5Ha2+Uko33aogP9uF/8fLqKBwHXCVhw0E2i9dMFGXgz2Ts4vs45Y8mLSzKe
	 6T/4OP+86ckjYH97YfD5JGR+fT+hiG4YahKMJ0V2/IRh1ZGs96/cT0u51D1pO3PJQ/
	 VO/XNUffoZ+p2Z21RyYRRJtdOgXpmemOY0Ls2Xv8=
Message-ID: <5d068304-837d-4aef-b8a7-87c91ccf96b4@arm.com>
Date: Tue, 7 Apr 2026 11:23:17 +0200
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: kernel BUG around vmap/vfree -
 xen_enter_lazy_mmu()/xen_leave_lazy_mmu() - Linux 7.0-rc1
To: =?UTF-8?Q?Marek_Marczykowski-G=C3=B3recki?=
 <marmarek@invisiblethingslab.com>, =?UTF-8?B?SsO8cmdlbiBHcm/Dnw==?=
 <jgross@suse.com>
Cc: Andrew Cooper <andrew.cooper3@citrix.com>,
 xen-devel <xen-devel@lists.xenproject.org>,
 Boris Ostrovsky <boris.ostrovsky@oracle.com>
References: <aaBH3EAchUwKhrUA@mail-itl>
 <c2f973a0-fcb5-48ea-9638-cd73fa3e37ce@citrix.com>
 <c712c06f-7fcf-4876-b2d7-f2b7bc6f0dea@suse.com> <adIuP7-sNwuOid80@mail-itl>
From: Kevin Brodsky <kevin.brodsky@arm.com>
Content-Language: en-GB
In-Reply-To: <adIuP7-sNwuOid80@mail-itl>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: quoted-printable
X-purgate-ID: tlsNG-16d1c6/1775553803-642483D8-9AA2B5E3/0/0
X-purgate-type: clean
X-purgate-size: 10441

On 05/04/2026 11:41, Marek Marczykowski-G=C3=B3recki wrote:
> On Thu, Feb 26, 2026 at 02:41:12PM +0100, J=C3=BCrgen Gro=C3=9F wrote:
>> On 26.02.26 14:27, Andrew Cooper wrote:
>>> On 26/02/2026 1:17 pm, Marek Marczykowski-G=C3=B3recki wrote:
>>>> Hi,
>>>>
>>>> When testing Linux 7.0-rc1 in PV dom0, I hit the following panic
>>>> sometimes:
>>>>
>>>> [  436.849614] ------------[ cut here ]------------
>>>> [  436.849669] kernel BUG at arch/x86/include/asm/xen/hypervisor.h:7=
8!
>>>> [  436.849693] Oops: invalid opcode: 0000 [#1] SMP NOPTI
>>>> [  436.849710] CPU: 3 UID: 0 PID: 4021 Comm: kworker/u25:1 Not taint=
ed 7.0.0-0.rc1.1.qubes.1001.fc41.x86_64 #1 PREEMPT(full)
>>>> [  436.849729] Hardware name: Star Labs StarBook/StarBook, BIOS 8.97=
 10/03/2023
>>>> [  436.849743] Workqueue: i915_flip intel_atomic_commit_work [i915]
>>>> [  436.850226] RIP: e030:xen_enter_lazy_mmu+0x24/0x30
>>>> [  436.850245] Code: 90 90 90 90 90 90 f3 0f 1e fa 0f 1f 44 00 00 65=
 8b 05 b8 e5 02 03 85 c0 75 10 65 c7 05 a9 e5 02 03 01 00 00 00 c3 cc cc =
cc cc <0f> 0b 66 2e 0f 1f 84 00 00 00 00 00 90 90 90 90 90 90 90 90 90 90=

>>>> [  436.850270] RSP: e02b:ffffc90045727a68 EFLAGS: 00010202
>>>> [  436.850283] RAX: 0000000000000001 RBX: ffff8881042fa6d0 RCX: 000f=
ffffffe00000
>>>> [  436.850296] RDX: 0000000000000001 RSI: ffff88810a5a2980 RDI: 0000=
000000000000
>>>> [  436.850308] RBP: ffffc90049eda000 R08: ffffc90049edc000 R09: ffff=
c90049edc000
>>>> [  436.850320] R10: ffffc90049edc000 R11: ffffc90049edbfff R12: ffff=
c90049edc000
>>>> [  436.850332] R13: ffffc90045727bb0 R14: ffffc90045727b28 R15: 8000=
00000000006b
>>>> [  436.850356] FS:  0000000000000000(0000) GS:ffff888201e6e000(0000)=
 knlGS:0000000000000000
>>>> [  436.850371] CS:  e030 DS: 0000 ES: 0000 CR0: 0000000080050033
>>>> [  436.850383] CR2: 00006543dbade250 CR3: 0000000115ef1000 CR4: 0000=
000000050660
>>>> [  436.850401] Call Trace:
>>>> [  436.850410]  <TASK>
>>>> [  436.850420]  vmap_pages_pud_range+0x47c/0x530
>>>> [  436.850439]  vmap_small_pages_range_noflush+0x1f1/0x2b0
>>>> [  436.850451]  ? __get_vm_area_node+0x10a/0x170
>>>> [  436.850465]  vmap+0x79/0xd0
>>>> [  436.850476]  i915_gem_object_map_page+0x13b/0x210 [i915]
>>>> [  436.850812]  i915_gem_object_pin_map+0x1e2/0x210 [i915]
>>>> [  436.851123]  i915_gem_object_pin_map_unlocked+0x2d/0xa0 [i915]
>>>> [  436.851424]  intel_dsb_buffer_create+0xed/0x1a0 [i915]
>>>> [  436.851778]  intel_dsb_prepare+0xca/0x1a0 [i915]
>>>> [  436.852110]  intel_atomic_dsb_finish+0x92/0x350 [i915]
>>>> [  436.852456]  intel_atomic_commit_tail+0x326/0xd40 [i915]
>>>> [  436.852769]  process_one_work+0x18d/0x380
>>>> [  436.852779]  worker_thread+0x196/0x300
>>>> [  436.852787]  ? __pfx_worker_thread+0x10/0x10
>>>> [  436.852796]  kthread+0xe3/0x120
>>>> [  436.852805]  ? __pfx_kthread+0x10/0x10
>>>> [  436.852815]  ret_from_fork+0x19e/0x260
>>>> [  436.852824]  ? __pfx_kthread+0x10/0x10
>>>> [  436.852832]  ret_from_fork_asm+0x1a/0x30
>>>> [  436.852842]  </TASK>
>>>> [  436.852847] Modules linked in: snd_seq_dummy snd_hrtimer snd_hda_=
codec_intelhdmi snd_hda_codec_hdmi snd_hda_codec_alc269 snd_hda_codec_rea=
ltek_lib snd_hda_scodec_component snd_hda_codec_generic snd_hda_intel snd=
_sof_pci_intel_tgl snd_sof_pci_intel_cnl snd_sof_intel_hda_generic soundw=
ire_intel snd_sof_intel_hda_sdw_bpt snd_sof_intel_hda_common snd_soc_hdac=
_hda snd_sof_intel_hda_mlink snd_sof_intel_hda soundwire_cadence snd_sof_=
pci snd_sof_xtensa_dsp snd_sof snd_sof_utils snd_soc_acpi_intel_match snd=
_soc_acpi_intel_sdca_quirks soundwire_generic_allocation snd_soc_sdw_util=
s snd_soc_acpi crc8 intel_rapl_msr soundwire_bus intel_rapl_common snd_so=
c_sdca snd_soc_avs snd_soc_hda_codec snd_hda_ext_core snd_hda_codec vfat =
intel_uncore_frequency_common fat snd_hda_core snd_intel_dspcfg snd_intel=
_sdw_acpi snd_hwdep intel_powerclamp snd_soc_core iwlwifi snd_compress sp=
i_nor iTCO_wdt ac97_bus intel_pmc_bxt ee1004 mtd snd_pcm_dmaengine snd_se=
q cfg80211 snd_seq_device pcspkr spi_intel_pci snd_pcm rfkill spi_intel s=
nd_timer snd
>>>> [  436.852939]  i2c_i801 soundcore i2c_smbus idma64 intel_pmc_core p=
mt_telemetry pmt_discovery pmt_class intel_hid intel_pmc_ssram_telemetry =
intel_scu_pltdrv sparse_keymap joydev loop fuse xenfs nfnetlink vsock_loo=
pback vmw_vsock_virtio_transport_common vmw_vsock_vmci_transport vsock zr=
am vmw_vmci lz4hc_compress lz4_compress dm_thin_pool dm_persistent_data d=
m_bio_prison dm_crypt xe drm_ttm_helper drm_suballoc_helper gpu_sched drm=
_gpuvm drm_exec drm_gpusvm_helper i915 i2c_algo_bit drm_buddy hid_multito=
uch i2c_hid_acpi ghash_clmulni_intel video nvme wmi ttm i2c_hid nvme_core=
 nvme_keyring drm_display_helper nvme_auth xhci_pci pinctrl_tigerlake thu=
nderbolt hkdf cec xhci_hcd intel_vsec serio_raw xen_acpi_processor xen_pr=
ivcmd xen_pciback xen_blkback xen_gntalloc xen_gntdev xen_evtchn scsi_dh_=
rdac scsi_dh_emc scsi_dh_alua uinput i2c_dev
>>>> [  436.853183] ---[ end trace 0000000000000000 ]---
>>>>
>>>> or this:
>>>>
>>>> [  548.736884] ------------[ cut here ]------------
>>>> [  548.736907] kernel BUG at arch/x86/include/asm/xen/hypervisor.h:8=
5!
>>>> [  548.736923] Oops: invalid opcode: 0000 [#1] SMP NOPTI
>>>> [  548.736935] CPU: 0 UID: 0 PID: 206 Comm: kworker/0:2 Not tainted =
7.0.0-0.rc1.1.qubes.1001.fc41.x86_64 #1 PREEMPT(full)
>>>> [  548.736949] Hardware name: LENOVO 2347A45/2347A45, BIOS CBET4000 =
Nitrokey-v0.2.0-2608-ga649597 01/01/1970
>>>> [  548.736962] Workqueue: events delayed_vfree_work
>>>> [  548.736976] RIP: e030:xen_leave_lazy_mmu+0x44/0x50
>>>> [  548.736989] Code: 02 03 83 f8 01 75 23 65 c7 05 6c e4 02 03 00 00=
 00 00 65 ff 0d 7d b8 02 03 74 05 c3 cc cc cc cc e8 61 5d fd ff c3 cc cc =
cc cc <0f> 0b 66 2e 0f 1f 84 00 00 00 00 00 90 90 90 90 90 90 90 90 90 90=

>>>> [  548.737010] RSP: e02b:ffffc90040607cf0 EFLAGS: 00010297
>>>> [  548.737018] RAX: 0000000000000000 RBX: ffff888164a70408 RCX: 0000=
000000000000
>>>> [  548.737029] RDX: 0000000000000000 RSI: 000ffffffffff000 RDI: ffff=
8881069c0000
>>>> [  548.737039] RBP: ffffc90049681000 R08: ffffc90049681000 R09: 0000=
000000000027
>>>> [  548.737050] R10: 0000000000000027 R11: fefefefefefefeff R12: ffff=
c90049681000
>>>> [  548.737060] R13: ffff8881002fd258 R14: 0000000000000000 R15: ffff=
c90040607dac
>>>> [  548.737079] FS:  0000000000000000(0000) GS:ffff8881f88ee000(0000)=
 knlGS:0000000000000000
>>>> [  548.737090] CS:  e030 DS: 0000 ES: 0000 CR0: 0000000080050033
>>>> [  548.737099] CR2: 000055576c2e6058 CR3: 000000010d47b000 CR4: 0000=
000000050660
>>>> [  548.737115] Call Trace:
>>>> [  548.737123]  <TASK>
>>>> [  548.737128]  vunmap_pmd_range.isra.0+0x1f1/0x2e0
>>>> [  548.737142]  vunmap_p4d_range+0x17d/0x290
>>>> [  548.737151]  __vunmap_range_noflush+0x182/0x1d0
>>>> [  548.737161]  ? _raw_spin_unlock+0xe/0x30
>>>> [  548.737171]  remove_vm_area+0x40/0x70
>>>> [  548.737180]  vfree.part.0+0x1b/0x290
>>>> [  548.737189]  delayed_vfree_work+0x35/0x50
>>>> [  548.737198]  process_one_work+0x18d/0x380
>>>> [  548.737207]  worker_thread+0x196/0x300
>>>> [  548.737215]  ? __pfx_worker_thread+0x10/0x10
>>>> [  548.737224]  kthread+0xe3/0x120
>>>> [  548.737233]  ? __pfx_kthread+0x10/0x10
>>>> [  548.737242]  ret_from_fork+0x19e/0x260
>>>> [  548.737250]  ? __pfx_kthread+0x10/0x10
>>>> [  548.737258]  ret_from_fork_asm+0x1a/0x30
>>>> [  548.737269]  </TASK>
>>>> [  548.737274] Modules linked in: vfat fat snd_seq_dummy snd_hrtimer=
 ath9k ath9k_common snd_hda_codec_intelhdmi snd_hda_codec_hdmi ath9k_hw s=
nd_hda_codec_alc269 snd_hda_codec_realtek_lib snd_hda_scodec_component sn=
d_hda_codec_generic snd_hda_intel snd_hda_codec mac80211 snd_hda_core snd=
_intel_dspcfg snd_intel_sdw_acpi snd_hwdep ath snd_seq snd_seq_device snd=
_ctl_led cfg80211 snd_pcm at24 thinkpad_acpi intel_rapl_msr i2c_i801 snd_=
timer sparse_keymap iTCO_wdt intel_rapl_common platform_profile intel_pow=
erclamp intel_pmc_bxt pcspkr i2c_smbus rfkill libarc4 snd soundcore mei_m=
e e1000e mei joydev lpc_ich loop fuse xenfs nfnetlink vsock_loopback vmw_=
vsock_virtio_transport_common vmw_vsock_vmci_transport vsock zram vmw_vmc=
i lz4hc_compress lz4_compress dm_thin_pool dm_persistent_data dm_bio_pris=
on dm_crypt i915 i2c_algo_bit drm_buddy ghash_clmulni_intel ttm sdhci_pci=
 drm_display_helper sdhci_uhs2 sdhci video xhci_pci cqhci wmi cec xhci_hc=
d ehci_pci mmc_core ehci_hcd serio_raw xen_acpi_processor xen_privcmd xen=
_pciback
>>>> [  548.737348]  xen_blkback xen_gntalloc xen_gntdev xen_evtchn scsi_=
dh_rdac scsi_dh_emc scsi_dh_alua uinput i2c_dev
>>>> [  548.737469] ---[ end trace 0000000000000000 ]---
>>>>
>>>> I don't have clear pattern when this happens, one was during host
>>>> suspend, but the other was during "normal" test run (starting/stoppi=
ng
>>>> domUs and running stuff around them). Note also one of those is Inte=
l
>>>> and the other AMD, so it isn't really hardware specific.
>>>>
>>>> Slightly more details with links (especially serial0.txt in the logs=

>>>> tab) at
>>>> https://github.com/QubesOS/qubes-linux-kernel/pull/662#issuecomment-=
3963326188
>>>>
>>>> Any idea?
>>>>
>>> That looks like the issue Juergen fixed with:
>>>
>>> https://lore.kernel.org/xen-devel/20260220123715.834848-1-jgross@suse=
=2Ecom/
>> No, it doesn't. The fix is already in rc1, and the crash was quite ear=
ly during
>> boot (before any secondary CPUs were brought up).
>>
>> I guess this problem is related to the lazy_mmu_state series [1].

That may well be the case - it seems that xen_enter_lazy_mmu() is called
while already in lazy MMU mode (first splat), and xen_leave_lazy_mmu()
is called without being in lazy MMU mode (second splat). I expect this
is something specific to Xen, which I didn't get the chance to test.

Looking at the series again I don't see anything obviously wrong, but I
think the riskiest change is commit 291b3abed657 ("x86/xen: use
lazy_mmu_state when context-switching") - worth trying to revert it. If
that doesn't help, I'd suggest bisecting the following range:
58852f24f956..291b3abed657

Sorry for the trouble!

- Kevin

> FWIW, the issue still happens on 7.0-rc6.
>
>> Juergen
>>
>> [1]: https://lore.kernel.org/lkml/20251215150323.2218608-1-kevin.brods=
ky@arm.com/


From xen-devel-bounces@lists.xenproject.org Tue Apr 07 09:57:09 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 07 Apr 2026 09:57:09 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1274591.1560687 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wA3B7-0003CR-Hr; Tue, 07 Apr 2026 09:57:01 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1274591.1560687; Tue, 07 Apr 2026 09:57: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 1wA3B7-0003CK-EO; Tue, 07 Apr 2026 09:57:01 +0000
Received: by outflank-mailman (input) for mailman id 1274591;
 Tue, 07 Apr 2026 09:56:59 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <bernhard.kaindl@citrix.com>) id 1wA3B5-0003CE-Rw
 for xen-devel@lists.xenproject.org; Tue, 07 Apr 2026 09:56:59 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wA3B4-00Fch6-Pk
 for xen-devel@lists.xenproject.org; Tue, 07 Apr 2026 11:56:58 +0200
Received: from [10.42.69.12] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <bernhard.kaindl@citrix.com>)
 id 69d4d4e6-e002-0a2a0a5209dd-0a2a450ca214-22
 for <xen-devel@lists.xenproject.org>; Tue, 07 Apr 2026 11:56:58 +0200
Received: from [160.101.131.8] (helo=na1pdmzitismtp01.tibco.com)
 by tlsNG-d25034.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.0)
 (envelope-from <bernhard.kaindl@citrix.com>)
 id 69d4d4e9-f40c-0a2a450c0019-a0658308be38-3
 for <xen-devel@lists.xenproject.org>; Tue, 07 Apr 2026 11:56:58 +0200
Received: from debian.eng.citrite.net (unknown [10.113.40.46])
 by na1pdmzitismtp01.tibco.com (Postfix) with ESMTP id E4006421B5C5;
 Tue,  7 Apr 2026 05:56:17 -0400 (EDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-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: Bernhard Kaindl <bernhard.kaindl@citrix.com>
To: xen-devel@lists.xenproject.org
Cc: Bernhard Kaindl <bernhard.kaindl@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.pau@citrix.com>,
	Stefano Stabellini <sstabellini@kernel.org>,
	Juergen Gross <jgross@suse.com>,
	"Daniel P. Smith" <dpsmith@apertussolutions.com>
Subject: [PATCH 0/5] xen: Introduce NUMA-aware claim sets for domains
Date: Tue,  7 Apr 2026 10:54:25 +0100
Message-Id: <cover.1775505670.git.bernhard.kaindl@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-d25034/1775555818-FFB44A3D-68112756/0/0
X-purgate-type: clean
X-purgate-size: 2870

Hi all,

This series extends Xen's memory claim handling to support claim sets
spanning multiple NUMA nodes.

Earlier review raised the concern that claims would need to evolve from a
single claim into a multi-node model. Roger Pau Monné described the core
requirement well:

  >  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.

      -- Roger Pau Monné

This series implements that model.

A claim set can contain multiple node-specific claims and an optional
global 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.

The series has been reworked substantially in response to earlier review.
Because of that, it is likely best reviewed as a fresh series rather than
incrementally.

Patch summary:

1. xen/mm: Refactor retiring claims in preparation for use in functional changes
2. xen/mm: Claims check: Allow free pages to cover a shortfall of claims
3. xen/mm: Optimise getting free page counts per NUMA node
4. xen/mm: Split d->outstanding_pages to global_claims & node_claims
5. xen/mm: Introduce Claim Sets for multiple NUMA nodes

The design document submitted ahead of this series may also help with
review. It explains the background, design rationale, and implementation
details.

Rendered version:
https://bernhardk-xen-review.readthedocs.io/node-claims-v5/designs/claims/

Posted version:
https://lists.xenproject.org/archives/html/xen-devel/2026-04/msg00108.html

Many thanks to everyone who contributed to the earlier work and review,
especially Alejandro Vallejo, Jan Beulich, Andrew Cooper, Roger Pau
Monné, Marcus Granado, and Edwin Török.

Thanks for your review.

Bernhard Kaindl

Bernhard Kaindl (5):
  xen/mm: Refactor retiring claims in preparation for functional changes
  xen/mm: alloc pages: Allow free pages to cover a shortfall of claims
  xen/mm: Optimise getting free page counts per NUMA node
  xen/mm: Split d->outstanding_pages to global_claims & node_claims
  xen/mm: Introduce Claim Sets for multiple NUMA nodes

 tools/include/xenctrl.h             |   4 +
 tools/libs/ctrl/xc_domain.c         |  38 +++
 xen/common/domctl.c                 |  56 +++-
 xen/common/page_alloc.c             | 379 ++++++++++++++++++++++++++--
 xen/include/public/domctl.h         |  32 +++
 xen/include/public/memory.h         |   9 +
 xen/include/xen/mm.h                |   3 +
 xen/include/xen/sched.h             |  13 +-
 xen/xsm/flask/hooks.c               |   1 +
 xen/xsm/flask/policy/access_vectors |   1 +
 10 files changed, 509 insertions(+), 27 deletions(-)

-- 
2.39.5



From xen-devel-bounces@lists.xenproject.org Tue Apr 07 09:58:30 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 07 Apr 2026 09:58:30 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1274609.1560695 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wA3CV-0003lu-S3; Tue, 07 Apr 2026 09:58:27 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1274609.1560695; Tue, 07 Apr 2026 09:58: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 1wA3CV-0003ln-PD; Tue, 07 Apr 2026 09:58:27 +0000
Received: by outflank-mailman (input) for mailman id 1274609;
 Tue, 07 Apr 2026 09:58:26 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <bernhard.kaindl@citrix.com>) id 1wA3CT-0003lT-VY
 for xen-devel@lists.xenproject.org; Tue, 07 Apr 2026 09:58:25 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wA3CT-003ivl-BJ
 for xen-devel@lists.xenproject.org; Tue, 07 Apr 2026 11:58:25 +0200
Received: from [10.42.69.4] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <bernhard.kaindl@citrix.com>)
 id 69d4d531-e002-0a2a0a5209dd-0a2a4504c78a-28
 for <xen-devel@lists.xenproject.org>; Tue, 07 Apr 2026 11:58:25 +0200
Received: from [160.101.131.8] (helo=na1pdmzitismtp01.tibco.com)
 by tlsNG-ebf023.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.0)
 (envelope-from <bernhard.kaindl@citrix.com>)
 id 69d4d540-bb33-0a2a45040019-a0658308a392-3
 for <xen-devel@lists.xenproject.org>; Tue, 07 Apr 2026 11:58:25 +0200
Received: from debian.eng.citrite.net (unknown [10.113.40.46])
 by na1pdmzitismtp01.tibco.com (Postfix) with ESMTP id D41E0421B0E1;
 Tue,  7 Apr 2026 05:57:44 -0400 (EDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-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: Bernhard Kaindl <bernhard.kaindl@citrix.com>
To: xen-devel@lists.xenproject.org
Cc: Bernhard Kaindl <bernhard.kaindl@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.pau@citrix.com>,
	Stefano Stabellini <sstabellini@kernel.org>
Subject: [PATCH 1/5] xen/mm: Refactor retiring claims in preparation for functional changes
Date: Tue,  7 Apr 2026 10:54:26 +0100
Message-Id: <2d450d0fe8434679b5810c0d0e11d088aa757b2f.1775505670.git.bernhard.kaindl@citrix.com>
X-Mailer: git-send-email 2.39.5
In-Reply-To: <cover.1775505670.git.bernhard.kaindl@citrix.com>
References: <cover.1775505670.git.bernhard.kaindl@citrix.com>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit
X-purgate-ID: tlsNG-ebf023/1775555905-B273A51B-67D0CA99/0/0
X-purgate-type: clean
X-purgate-size: 3471

Refactor retiring claims into a function to make the claims accounting
model easier to follow ahead of adding functional changes.

Those functional changes are NUMA claims and retiring claims when
offlining pages if all those pages on the host are claimed. For these
functional changes, we need to return the number of retired claims.

Signed-off-by: Bernhard Kaindl <bernhard.kaindl@citrix.com>
---

This 1st commit of this series is shared with another series which fixes a
number of bugs in reserve_offline_page(). If you could ack it to be merged
independent of the review of this series, we can shave it off both series
in the next review rounds of both series.

History:

Except from the function name change and extending it to return the number
of retired pages (which is required by both series) this commit is the
equivalent of commit 1 of the NUMA claims series v4, with minor changes:

1) The review comments have been applied.
2) In earlier series, I had chosen to use "releasing" and "consuming".
   Instead, speak of "retiring" claims (as they are no longer active),
   which can be used in all contexts, when using the claim for an allocation,
   when resetting a claim and when we've to recall claims when offlining.
2) The 2nd function made sense to be migrated to be part of the main NUMA
   claims commit so it is no longer a part of this commit.
---
 xen/common/page_alloc.c | 27 ++++++++++++++++++++-------
 1 file changed, 20 insertions(+), 7 deletions(-)

diff --git a/xen/common/page_alloc.c b/xen/common/page_alloc.c
index b1edef87124f..3b0909cc3ce1 100644
--- a/xen/common/page_alloc.c
+++ b/xen/common/page_alloc.c
@@ -518,6 +518,24 @@ unsigned long domain_adjust_tot_pages(struct domain *d, long pages)
     return d->tot_pages;
 }
 
+/* Retire a portion of the global claims of a domain on global memory */
+static unsigned long claims_retire_global(struct domain *d,
+                                          unsigned long pages_to_retire)
+{
+    unsigned long retired;
+
+    ASSERT(spin_is_locked(&heap_lock));
+
+    /* If the withdrawal is larger than the claims, don't withdraw beyond */
+    retired = min(d->outstanding_pages + 0UL, pages_to_retire);
+
+    /* Assert the invariant of outstanding_claims not going negative */
+    ASSERT(retired <= outstanding_claims);
+    outstanding_claims -= retired;
+    d->outstanding_pages -= retired;
+    return retired;
+}
+
 int domain_set_outstanding_pages(struct domain *d, unsigned long pages)
 {
     int ret = -ENOMEM;
@@ -535,8 +553,7 @@ int domain_set_outstanding_pages(struct domain *d, unsigned long pages)
     /* pages==0 means "unset" the claim. */
     if ( pages == 0 )
     {
-        outstanding_claims -= d->outstanding_pages;
-        d->outstanding_pages = 0;
+        claims_retire_global(d, d->outstanding_pages);
         ret = 0;
         goto out;
     }
@@ -1067,11 +1084,7 @@ 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);
-
-        BUG_ON(outstanding > outstanding_claims);
-        outstanding_claims -= outstanding;
-        d->outstanding_pages -= outstanding;
+        claims_retire_global(d, request);
     }
 
     check_low_mem_virq();
-- 
2.39.5



From xen-devel-bounces@lists.xenproject.org Tue Apr 07 09:58:39 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 07 Apr 2026 09:58:39 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1274617.1560704 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wA3Ch-00044L-97; Tue, 07 Apr 2026 09:58:39 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1274617.1560704; Tue, 07 Apr 2026 09:58: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 1wA3Ch-00044E-61; Tue, 07 Apr 2026 09:58:39 +0000
Received: by outflank-mailman (input) for mailman id 1274617;
 Tue, 07 Apr 2026 09:58:38 +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 1wA3Cg-00043W-HU
 for xen-devel@lists.xenproject.org; Tue, 07 Apr 2026 09:58:38 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wA3Cf-001tW6-TE
 for xen-devel@lists.xenproject.org; Tue, 07 Apr 2026 11:58:37 +0200
Received: from [10.42.69.11] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <Mykyta_Poturai@epam.com>)
 id 69d4d542-bab6-0a2a0a5309dd-0a2a450b9d14-38
 for <xen-devel@lists.xenproject.org>; Tue, 07 Apr 2026 11:58:37 +0200
Received: from [52.101.66.82]
 (helo=DUZPR83CU001.outbound.protection.outlook.com)
 by tlsNG-42698a.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.0)
 (envelope-from <Mykyta_Poturai@epam.com>)
 id 69d4d54d-bca8-0a2a450b0019-34654252e045-3
 for <xen-devel@lists.xenproject.org>; Tue, 07 Apr 2026 11:58:37 +0200
Received: from PAVPR03MB10102.eurprd03.prod.outlook.com
 (2603:10a6:102:30d::12) by PA4PR03MB8294.eurprd03.prod.outlook.com
 (2603:10a6:102:273::7) with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9769.17; Tue, 7 Apr
 2026 09:58:35 +0000
Received: from PAVPR03MB10102.eurprd03.prod.outlook.com
 ([fe80::b8c6:f37a:987a:beb]) by PAVPR03MB10102.eurprd03.prod.outlook.com
 ([fe80::b8c6:f37a:987a:beb%5]) with mapi id 15.20.9769.016; Tue, 7 Apr 2026
 09:58: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=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=u9wFUJ23GOx0MtbgJ8hY5zZ5mch4YD2hhaxnxdRkKHti1SOZHmzq/SPCKIRnKou5fn+/nfSrtVJx52Io4K6M4MvRgtKsdhR3ZcQAd66LcxQPvjIaGvqOfKS1N36UpYB3nwvNzWF6Y7dIjrf8avwYmDOJiLWbzShXTKLFSpFsbJy48zS4zme1KohqOoj0/XReWk1T5lpbpGafywghxJg/QcybUR2OZ6OohuiGxG86XVhetXob1yX2dsvHPAh1lbGrwAm/z1FbqCAp8Eja2V8XSx4n0COUupuljwUPdLtg6LK5GWh7KhzrsIzgIcLpP4lPuApOU6ILmrY6dV4joRJufA==
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com;
 s=arcselector10001;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1;
 bh=DM5ctd74HSf9n6McPIthpWnwvO71M4XGIm8bZHpDQj0=;
 b=Bf0U0tlL0JLRZfk7m8XKZkq89WpW3wno+jKf/m4Pa3rjAZ3eahFMoIWLKQMGxfmMWKxgN6vh5SKNW9GiypjKktX3RGjrjmJx4G2BdKIrq7S13gq0t9LsXttba4aN9wEhq47sAxg18hhOE5I2Nf59iNS7/rtJD2keiVzqNGDeerJyxO6MQizRkEKiSJxaDxQZf+xCNskjY7Js+BltauNFGHhREBKBqXSQa8xxYaKebgj/6mJuQM/4XeRloBX2rlboCVdYX1brlRuWpSQzYzu0O8gpxRiVPJ0h2wpVtyv6Loh4ENtLb8851qBnedd3+x5R0tt1wnB4GMt/a+v4aBPciw==
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=DM5ctd74HSf9n6McPIthpWnwvO71M4XGIm8bZHpDQj0=;
 b=oIRCEEgXpYvr0vOBRYIIhDsd3t/m5CMZPKyG0l3R7ILTLdt0sOli71y3l9GfphHaeQ3Bh9bFAX7rbohKoIb/JHH+nMy9saNlGBMVIzh/5SAyos1pUcKp0SsrjdtmGsIut7nJsSBsKIN38LS5oJ+sy6nc9D9ePx3uThUhcgi/pZ+1JN3OpothNJqTa3kAPPnewnWANDhzmn42sra7Kfa8RxZwsdmmYgL72qqulfFogSQ4VgR6cPgLzZL+a6ULcslnUpZ0ImyFtqxt/2gemuJd1/m8uDqxHRez26z8oFDuM5SPHlLyZNS8Lg2YfcAlE9deRABd7OMHfG3hH/L+8S6EeQ==
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>, 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>
Subject: [PATCH v1] xen/arm: smmuv3: Add support for removing devices
Thread-Topic: [PATCH v1] xen/arm: smmuv3: Add support for removing devices
Thread-Index: AQHcxnUZYHa+CmL3S0yWL3bconIhZw==
Date: Tue, 7 Apr 2026 09:58:34 +0000
Message-ID:
 <a59c2da0d4c72deb42950e9a8e3982fbdee60668.1775555766.git.mykyta_poturai@epam.com>
Accept-Language: en-US
Content-Language: en-US
X-MS-Has-Attach:
X-MS-TNEF-Correlator:
authentication-results: dkim=none (message not signed)
 header.d=none;dmarc=none action=none header.from=epam.com;
x-ms-publictraffictype: Email
x-ms-traffictypediagnostic: PAVPR03MB10102:EE_|PA4PR03MB8294:EE_
x-ms-office365-filtering-correlation-id: 55a5a121-8d89-4dc3-5dc3-08de948c3b97
x-ms-exchange-senderadcheck: 1
x-ms-exchange-antispam-relay: 0
x-microsoft-antispam:
 BCL:0;ARA:13230040|1800799024|366016|376014|38070700021|18002099003|56012099003;
x-microsoft-antispam-message-info:
 RdoUFYMNg057i7PFlk175tjAyVEyYWO3+21tggZNwouTrWcW74NA3SkjljkzJZL1N6N9/iAjVNvO12sIB9fzfO2/9j54+bS4+99mblPccnRaz4ksaUlSteFZKClsIXP9/sXTEA80aBSMicQ6E7SFrSg2g91m0VML++myBueVfmFYHkl3yu9vV6Np4Frhmx3d1EeDgV4cX4tRlGruk26SOiosCSYWv8J/TLI5emKTvO2LUJ0Y+tWV0NBIzDewfZRGpt8vusx0oQaZ2AriV1Rq1/Z5cxO9X4Wa+r1K0bFjbCCKxniPri4I2ZmxU+lX9oMuTu1m+Qp1o9Rg24pwkdmA8//+YdaHndgZugFgLOHAsIUtlronixCocIkoH7CXmPBs1PkIvISI36Na0lKkeav60i7u7+usd8+dub9E13qI+qO3bnWkcgMzRc2g/8rUYc/ytRXhPiRyGU/E3UGIHGHHOH3oM+eqedPt2g0pYnb6vEdiMrYI0mfNDZD5vgyDV1BJnmjElL1Gbru25rZJw1YjzWNWiq5L6QVEsdBHcwd5H7ehxi7/yLxPRfj3Qt1lJgSrcWZgOywPksYiq9kGQ8rEnfBMv88H7Ii7fN8T6bNJ/sIlRNiY9osf8VNUIlQdJSYyFrhDBv3pYgAJF7Qvf4PzWrZIMt407Gx9LCUBGkSna44wDKFiDknXOag1UYZlrtydYxlfZu3UFpUFXYnRnvgxgryQ+zdrTWDvQBkDYONya6HvIYyo5k++tOkw9cXynXdo
x-forefront-antispam-report:
 CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:PAVPR03MB10102.eurprd03.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(1800799024)(366016)(376014)(38070700021)(18002099003)(56012099003);DIR:OUT;SFP:1102;
x-ms-exchange-antispam-messagedata-chunkcount: 1
x-ms-exchange-antispam-messagedata-0:
 =?iso-8859-1?Q?cO9Jox+5hfuJzsZWHWuSyyl9kqFLHDP+OikNDSFtvTd5/IhHGhlmLcL6Fl?=
 =?iso-8859-1?Q?bTUez5HCZMzcShPAb4+ZVIu24W9VwX4Z78D9EvggvHPEglLmGGOta4kA+W?=
 =?iso-8859-1?Q?rxVmGWKP+7B5SBXeVZYKMscZkHrYc8HDqAejhBPJlHUqOiDtpDeJwnhncv?=
 =?iso-8859-1?Q?GeHMtjsdfN4GK2tiVeuaIu2B+uJxvXCejSR+z59LnD880HFpr8FZhU1J5H?=
 =?iso-8859-1?Q?XptXkNW4MBSMKRq5QVx+URmSyOsizqsanYIBPMV5m9amf0fiR1a0jcMbJh?=
 =?iso-8859-1?Q?a2GeKmvhhPWVVELZqHCxEhn1/tnjGIscaCY7UFifOlaJFDT1gXl+OTBNbv?=
 =?iso-8859-1?Q?XO5X3ui6sgAs4+2Z0HE2xKGV3QkbhnlrGEP+gJAfEU+4tVMnXDfyj3HTbf?=
 =?iso-8859-1?Q?hTah2268GYcOTvDp3eginadTtPNRiJ/7RgW+g3q6L6tSalALoQZJ79nviu?=
 =?iso-8859-1?Q?DlKZfz+CI6TP44DReO86UJI+NNxnQrBOgojyyJgd9ei4QvfmxNleKq+2MP?=
 =?iso-8859-1?Q?KSIoHIkIHG7d/QQ8yZbZ5fquHEi/yJpSgw5lf+Fyz9PM/YGEoz+mDX7VMh?=
 =?iso-8859-1?Q?lcgP1MWHSPIL+MrE7H0ZSlVqys3CC0sOGeCeCaR9U5AUCybQwGaBvppVaY?=
 =?iso-8859-1?Q?C4lpDWWqanS8uiarKM8whe0p56UmoRxFK0ggZCCjMtChlyqU4DnZYHF0ic?=
 =?iso-8859-1?Q?fUQer/hNc+rx/AMlROj+hbMTbuUkDyEmhWw9O8Lge9TjPreSPeKk2pIj9z?=
 =?iso-8859-1?Q?kj8R05pA1DXyRDa7FZV3papVDprdak0gZeUd3ye48J4AHtaMx4calKaPiD?=
 =?iso-8859-1?Q?RCtXPCz/AC2oLBRR0z7UFgh2Rizthi8L5Nqkd52ps4gUBlMfoa6cDDODvv?=
 =?iso-8859-1?Q?t+aj8FW+oiMrcGgYTJqm4uVn6X3Zfv9ci7aJyT9iI/yliFF5YzzOw0sd4Q?=
 =?iso-8859-1?Q?6tz8aPD4RhfL7UdNqoV2BS6AbKLSiaeBGPp5SItgo3okjQ9LmAUNJsXvAG?=
 =?iso-8859-1?Q?eLsQtOKPQm11cME1U7aNJEQpnicSNJWaEeDpK2e2KA8WoMNY8P9hNvcK+a?=
 =?iso-8859-1?Q?I0n1QxJ96N1i8ouzcCCgYeH8qd9rRBdbzs44/EqDFj9aq6lZukQc3PahTK?=
 =?iso-8859-1?Q?pbMXPa2Rc15gGa1PTs1nOz3p1fLOhbiOXFwhTLg/b+2VA4+3e1XIRIHuCC?=
 =?iso-8859-1?Q?ik6wJQLruig7hoQU8psm2aN0Q08BV3buC2Hvs8PtqF4vmUmVwmHpud+GW9?=
 =?iso-8859-1?Q?H7lIjR8bYvFH1n5tvM7J6LW0IkWK4di1Jy7jKyWPnbZuAPiJ1z7k6FxgC9?=
 =?iso-8859-1?Q?J5K6nu3e2DAwZBc0cw7IUqpkz3f0CT0Iiv+/EAISj1FXDWO1Rwwuz6XPnv?=
 =?iso-8859-1?Q?Xm+i6lOpYVhltEZEmk/yd9fPWCvZKyU0oJ6WHXDVqs7GH5GZ0oMQmPJFqP?=
 =?iso-8859-1?Q?DNyQdvBRJ63RqLZv5SJMI240XYsaEI47tBwRbH8ulW/q95zWrFHI4z316J?=
 =?iso-8859-1?Q?txUoz63fsJ2FiYcsWI2xBXKkzwLVRS8Ex02068nVlDLlz4zuJAD8moZOqy?=
 =?iso-8859-1?Q?Fba+dKrMR6GDRhP7GaA6VJm33RE/pDF/wCceaSZB9Qsn5vmx7rlBMj4+a4?=
 =?iso-8859-1?Q?wI4irlcf0T+BXJWTDAHJE5Sf+w3JeJZwtkA6w59K0JJRo6IgQcjeiX7kav?=
 =?iso-8859-1?Q?RAUNLVMV5pTp3SDLAlyk+uYubmpaXDSexApdLEgHri9RsO56/uPyf3aIvw?=
 =?iso-8859-1?Q?r8n5/TjEDZntdSfvvup8XhC7rJ8JUZ+IKHNB8YTuTP426B7fBi6/IUuaSy?=
 =?iso-8859-1?Q?VoxhkUqoosF1WmFuijP6p64kLfqkdBM=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: PAVPR03MB10102.eurprd03.prod.outlook.com
X-MS-Exchange-CrossTenant-Network-Message-Id: 55a5a121-8d89-4dc3-5dc3-08de948c3b97
X-MS-Exchange-CrossTenant-originalarrivaltime: 07 Apr 2026 09:58:34.8990
 (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: +mcOphYUUJ9SPMeZ2aIjglOzRUXo3USqQaOBmAVZQPGXO/eEM8fCIMDX9TAfYIKU71FJyxiggvGvebgS7J9RSg==
X-MS-Exchange-Transport-CrossTenantHeadersStamped: PA4PR03MB8294
X-purgate-ID: tlsNG-42698a/1775555917-EF5432A1-602F276A/0/0
X-purgate-type: clean
X-purgate-size: 3372

Allow for removing devices from SMMUv3. arm_smmu_deassign_dev handles
most of the work by disabling ATS and zeroing STEs. Additionally, unset
the dt_device_is_protected flag and free no longer needed smmu_master.

Tested on QEMU with SRIOV series[1] by repeatedly enabling/disabling
VFs.

[1]: https://patchew.org/Xen/cover.1772806036.git.mykyta._5Fpoturai@epam.co=
m/

Signed-off-by: Mykyta Poturai <mykyta_poturai@epam.com>
---
 xen/drivers/passthrough/arm/smmu-v3.c | 59 +++++++++++++++++++++++++++
 xen/include/xen/device_tree.h         |  5 +++
 2 files changed, 64 insertions(+)

diff --git a/xen/drivers/passthrough/arm/smmu-v3.c b/xen/drivers/passthroug=
h/arm/smmu-v3.c
index bf153227db..b5b834a7b7 100644
--- a/xen/drivers/passthrough/arm/smmu-v3.c
+++ b/xen/drivers/passthrough/arm/smmu-v3.c
@@ -1493,6 +1493,64 @@ static int arm_smmu_assign_dev(struct domain *d, u8 =
devfn, struct device *dev,
 static int arm_smmu_deassign_dev(struct domain *d, uint8_t devfn,
 				 struct device *dev);
=20
+static int arm_smmu_remove_device(u8 devfn, struct device *dev)
+{
+	int ret =3D 0;
+	struct arm_smmu_master *master;
+	struct iommu_fwspec *fwspec;
+
+	fwspec =3D dev_iommu_fwspec_get(dev);
+	if ( !fwspec )
+		return -ENODEV;
+
+	master =3D dev_iommu_priv_get(dev);
+	if ( !master )
+		return -ENODEV;
+
+#ifdef CONFIG_HAS_PCI
+	if ( dev_is_pci(dev) )
+	{
+		struct pci_dev *pdev =3D dev_to_pci(dev);
+
+		if ( pdev->domain )
+		{
+			ret =3D arm_smmu_deassign_dev(pdev->domain, devfn, dev);
+			if ( ret )
+				printk(XENLOG_WARNING "Failed to deassign device %pp from SMMU\n",
+					&pdev->sbdf);
+		}
+	}
+#endif
+
+	if ( !dev_is_pci(dev) )
+	{
+		if ( !dt_device_is_protected(dev_to_dt(dev)) )
+		{
+			dev_err(dev, "Not added to SMMUv3\n");
+			ret =3D -ENODEV;
+			goto out_free;
+		}
+
+		if ( master->domain && master->domain->d )
+		{
+			ret =3D arm_smmu_deassign_dev(master->domain->d, 0, dev);
+			if ( ret )
+				dev_warn(dev, "Failed to deassign device from SMMU\n");
+		}
+		dt_device_unset_protected(dev_to_dt(dev));
+	}
+
+	arm_smmu_disable_pasid(master);
+
+	dev_info(dev, "Removed master device (SMMUv3 %s StreamIds %u)\n",
+		 dev_name(fwspec->iommu_dev), fwspec->num_ids);
+
+out_free:
+	xfree(master);
+	dev_iommu_priv_set(dev, NULL);
+	return ret;
+}
+
 static int arm_smmu_add_device(u8 devfn, struct device *dev)
 {
 	int i, ret;
@@ -2867,6 +2925,7 @@ static const struct iommu_ops arm_smmu_iommu_ops =3D =
{
 	.unmap_page		=3D arm_iommu_unmap_page,
 	.dt_xlate		=3D arm_smmu_dt_xlate,
 	.add_device		=3D arm_smmu_add_device,
+	.remove_device		=3D arm_smmu_remove_device,
 };
=20
 static __init int arm_smmu_dt_init(struct dt_device_node *dev,
diff --git a/xen/include/xen/device_tree.h b/xen/include/xen/device_tree.h
index 06d7643622..1f9608cdcd 100644
--- a/xen/include/xen/device_tree.h
+++ b/xen/include/xen/device_tree.h
@@ -305,6 +305,11 @@ static inline void dt_device_set_protected(struct dt_d=
evice_node *device)
     device->is_protected =3D true;
 }
=20
+static inline void dt_device_unset_protected(struct dt_device_node *device=
)
+{
+    device->is_protected =3D false;
+}
+
 static inline bool dt_device_is_protected(const struct dt_device_node *dev=
ice)
 {
     return device->is_protected;
--=20
2.51.2


From xen-devel-bounces@lists.xenproject.org Tue Apr 07 09:59:12 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 07 Apr 2026 09:59:12 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1274644.1560714 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wA3DE-0004jk-JA; Tue, 07 Apr 2026 09:59:12 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1274644.1560714; Tue, 07 Apr 2026 09:59: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 1wA3DE-0004jd-Fh; Tue, 07 Apr 2026 09:59:12 +0000
Received: by outflank-mailman (input) for mailman id 1274644;
 Tue, 07 Apr 2026 09:59:11 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <bernhard.kaindl@citrix.com>) id 1wA3DD-0004i6-49
 for xen-devel@lists.xenproject.org; Tue, 07 Apr 2026 09:59:11 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wA3DC-0065UD-G4
 for xen-devel@lists.xenproject.org; Tue, 07 Apr 2026 11:59:10 +0200
Received: from [10.42.69.11] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <bernhard.kaindl@citrix.com>)
 id 69d4d56a-e002-0a2a0a5209dd-0a2a450bb540-48
 for <xen-devel@lists.xenproject.org>; Tue, 07 Apr 2026 11:59:10 +0200
Received: from [160.101.131.8] (helo=na1pdmzitismtp01.tibco.com)
 by tlsNG-42698a.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.0)
 (envelope-from <bernhard.kaindl@citrix.com>)
 id 69d4d56d-bca8-0a2a450b0019-a06583088bca-3
 for <xen-devel@lists.xenproject.org>; Tue, 07 Apr 2026 11:59:10 +0200
Received: from debian.eng.citrite.net (unknown [10.113.40.46])
 by na1pdmzitismtp01.tibco.com (Postfix) with ESMTP id D8A6B421B5D1;
 Tue,  7 Apr 2026 05:58:29 -0400 (EDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-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: Bernhard Kaindl <bernhard.kaindl@citrix.com>
To: xen-devel@lists.xenproject.org
Cc: Bernhard Kaindl <bernhard.kaindl@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.pau@citrix.com>,
	Stefano Stabellini <sstabellini@kernel.org>
Subject: [PATCH 2/5] xen/mm: alloc pages: Allow free pages to cover a shortfall of claims
Date: Tue,  7 Apr 2026 10:54:27 +0100
Message-Id: <1bd422498a1b258d3a733d12b5ca286d9d48ba58.1775505670.git.bernhard.kaindl@citrix.com>
X-Mailer: git-send-email 2.39.5
In-Reply-To: <cover.1775505670.git.bernhard.kaindl@citrix.com>
References: <cover.1775505670.git.bernhard.kaindl@citrix.com>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit
X-purgate-ID: tlsNG-42698a/1775555950-EC75A2A1-07870CD3/0/0
X-purgate-type: clean
X-purgate-size: 3139

When an allocation has a shortfall of claims but free, unclaimed
memory can cover this shortfall, allow the allocation to proceed.

In preparation for NUMA claims, refactor this check into a reusable
function. This will enable the same logic to be applied for NUMA nodes.

Suggested-by: Jan Beulich <jbeulich@suse.com>
Signed-off-by: Bernhard Kaindl <bernhard.kaindl@citrix.com>

---

Changes since v4: Extracted into a dedicated patch and merged the
formerly separate functions into one, as suggested by Jan Beulich.

Signed-off-by: Bernhard Kaindl <bernhard.kaindl@citrix.com>
---
 xen/common/page_alloc.c | 41 ++++++++++++++++++++++++++++++++++++++---
 1 file changed, 38 insertions(+), 3 deletions(-)

diff --git a/xen/common/page_alloc.c b/xen/common/page_alloc.c
index 3b0909cc3ce1..0fab1630e318 100644
--- a/xen/common/page_alloc.c
+++ b/xen/common/page_alloc.c
@@ -873,6 +873,42 @@ static void check_and_stop_scrub(struct page_info *head)
     }
 }
 
+/*
+ * Allow the request when unclaimed pages suffice, or when a refcounted
+ * domain's outstanding claims cover the shortfall.
+ */
+static bool claims_permit_request(const struct domain *d,
+                                  unsigned long avail_pages,
+                                  unsigned long competing_claims,
+                                  unsigned int memflags,
+                                  unsigned long requested_pages)
+{
+    unsigned long unclaimed_pages;
+
+    ASSERT(spin_is_locked(&heap_lock));
+    ASSERT(avail_pages >= competing_claims);
+
+    /* Start from the free pages not already claimed by other domains. */
+    unclaimed_pages = avail_pages - competing_claims;
+
+    /* Allow the request to proceed when unclaimed pages suffice. */
+    if ( requested_pages <= unclaimed_pages )
+        return true;
+
+    /*
+     * If unclaimed pages are insufficient, only a refcounted domain allocation
+     * may use claims to cover the shortfall.
+     */
+    if ( !d || (memflags & MEMF_no_refcount) )
+        return false;
+
+    /*
+     * Allow the request to proceed when combination of unclaimed pages and the
+     * claims held by the domain cover the shortfall for the requested_pages.
+     */
+    return requested_pages <= unclaimed_pages + d->outstanding_pages;
+}
+
 static struct page_info *get_free_buddy(unsigned int zone_lo,
                                         unsigned int zone_hi,
                                         unsigned int order, unsigned int memflags,
@@ -1017,9 +1053,8 @@ static struct page_info *alloc_heap_pages(
      * Claimed memory is considered unavailable unless the request
      * is made by a domain with sufficient unclaimed pages.
      */
-    if ( (outstanding_claims + request > total_avail_pages) &&
-          ((memflags & MEMF_no_refcount) ||
-           !d || d->outstanding_pages < request) )
+    if ( !claims_permit_request(d, total_avail_pages, outstanding_claims,
+                                memflags, request) )
     {
         spin_unlock(&heap_lock);
         return NULL;
-- 
2.39.5



From xen-devel-bounces@lists.xenproject.org Tue Apr 07 09:59:52 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 07 Apr 2026 09:59:52 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1274661.1560722 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wA3Dr-0005Hq-Ps; Tue, 07 Apr 2026 09:59:51 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1274661.1560722; Tue, 07 Apr 2026 09:59: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 1wA3Dr-0005Hj-NE; Tue, 07 Apr 2026 09:59:51 +0000
Received: by outflank-mailman (input) for mailman id 1274661;
 Tue, 07 Apr 2026 09:59:51 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <bernhard.kaindl@citrix.com>) id 1wA3Dq-0005HV-VJ
 for xen-devel@lists.xenproject.org; Tue, 07 Apr 2026 09:59:50 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wA3Dq-003jGU-B0
 for xen-devel@lists.xenproject.org; Tue, 07 Apr 2026 11:59:50 +0200
Received: from [10.42.69.10] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <bernhard.kaindl@citrix.com>)
 id 69d4d587-5cb7-0a2a0a5109dd-0a2a450a8c80-46
 for <xen-devel@lists.xenproject.org>; Tue, 07 Apr 2026 11:59:50 +0200
Received: from [160.101.131.9] (helo=na1pdmzitismtp02.tibco.com)
 by tlsNG-4011c0.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.0)
 (envelope-from <bernhard.kaindl@citrix.com>)
 id 69d4d595-ee98-0a2a450a0019-a0658309e398-3
 for <xen-devel@lists.xenproject.org>; Tue, 07 Apr 2026 11:59:50 +0200
Received: from debian.eng.citrite.net (unknown [10.113.40.46])
 by na1pdmzitismtp02.tibco.com (Postfix) with ESMTP id 06FD18185BFD;
 Tue,  7 Apr 2026 05:58:58 -0400 (EDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-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: Bernhard Kaindl <bernhard.kaindl@citrix.com>
To: xen-devel@lists.xenproject.org
Cc: Bernhard Kaindl <bernhard.kaindl@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.pau@citrix.com>,
	Stefano Stabellini <sstabellini@kernel.org>,
	Alejandro Vallejo <alejandro.vallejo@cloud.com>
Subject: [PATCH 3/5] xen/mm: Optimise getting free page counts per NUMA node
Date: Tue,  7 Apr 2026 10:54:28 +0100
Message-Id: <b7c27dda915d0295fc6c5adbe57d47f16e856f48.1775505670.git.bernhard.kaindl@citrix.com>
X-Mailer: git-send-email 2.39.5
In-Reply-To: <cover.1775505670.git.bernhard.kaindl@citrix.com>
References: <cover.1775505670.git.bernhard.kaindl@citrix.com>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit
X-purgate-ID: tlsNG-4011c0/1775555990-BEF4B0B1-32B2EA45/0/0
X-purgate-type: clean
X-purgate-size: 3145

From: Alejandro Vallejo <alejandro.vallejo@cloud.com>

Introduce per-node free page counters which enhance the
efficiency of avail_node_heap_pages():

- It no longer needs to iterate over all zones of a node.

- It is utilised by the numainfo hypercall and the debug-key 'u'
  to display NUMA information in the printk buffer

- This aggregate will be needed for the node-specific claims
  feature to determine the number of free pages in a node in
  the hot path of get_free_buddy() without looping over all
  zones of a node.

Signed-off-by: Alejandro Vallejo <alejandro.vallejo@cloud.com>
Signed-off-by: Bernhard Kaindl <bernhard.kaindl@citrix.com>

---

Applied Jan's review:
https://lists.xenproject.org/archives/html/xen-devel/2026-03/msg00144.html

Changes:
- Removed accessor macro
- Abandoned conversion to unsigned long
---
 xen/common/page_alloc.c | 19 ++++++++++++++++++-
 1 file changed, 18 insertions(+), 1 deletion(-)

diff --git a/xen/common/page_alloc.c b/xen/common/page_alloc.c
index 0fab1630e318..95bae26d1c1f 100644
--- a/xen/common/page_alloc.c
+++ b/xen/common/page_alloc.c
@@ -485,7 +485,20 @@ static unsigned long node_need_scrub[MAX_NUMNODES];
 
 static unsigned long *avail[MAX_NUMNODES];
 static long total_avail_pages;
+/*
+ * Sum of the free pages in all zones of that node.
+ * Provided via sysctl by NUMA node placement decisions of domain builders and
+ * for monitoring. It is also logged with debug-key 'u' for NUMA debugging.
+ */
+static long node_avail_pages[MAX_NUMNODES];
 
+/*
+ * The global heap lock, protecting access to the heap and related structures.
+ * It protects the heap and claims of the buddy allocator and d->*claims.
+ * The locking order is: d->page_alloc_lock (optional) -> heap_lock
+ * - Numerous external callers holding d->page_alloc_lock call functions
+ *   taking the heap_lock. Note: Violating it would cause an ABBA deadlock.
+ */
 static DEFINE_SPINLOCK(heap_lock);
 static long outstanding_claims; /* total outstanding claims by all domains */
 
@@ -1097,6 +1110,8 @@ static struct page_info *alloc_heap_pages(
         }
     }
 
+    ASSERT(node_avail_pages[node] >= request);
+    node_avail_pages[node] -= request;
     ASSERT(avail[node][zone] >= request);
     avail[node][zone] -= request;
     total_avail_pages -= request;
@@ -1287,6 +1302,7 @@ static int reserve_offlined_page(struct page_info *head)
         if ( !page_state_is(cur_head, offlined) )
             continue;
 
+        node_avail_pages[node]--;
         avail[node][zone]--;
         total_avail_pages--;
         ASSERT(total_avail_pages >= 0);
@@ -1611,6 +1627,7 @@ static void free_heap_pages(
         }
     }
 
+    node_avail_pages[node] += 1 << order;
     avail[node][zone] += 1 << order;
     total_avail_pages += 1 << order;
     if ( need_scrub )
@@ -2878,7 +2895,7 @@ unsigned long avail_domheap_pages_region(
 
 unsigned long avail_node_heap_pages(unsigned int nodeid)
 {
-    return avail_heap_pages(MEMZONE_XEN, NR_ZONES -1, nodeid);
+    return node_avail_pages[nodeid];
 }
 
 
-- 
2.39.5



From xen-devel-bounces@lists.xenproject.org Tue Apr 07 10:00:35 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 07 Apr 2026 10:00:35 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1274692.1560732 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wA3EZ-0006qh-2a; Tue, 07 Apr 2026 10:00:35 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1274692.1560732; Tue, 07 Apr 2026 10:00: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 1wA3EY-0006qa-V9; Tue, 07 Apr 2026 10:00:34 +0000
Received: by outflank-mailman (input) for mailman id 1274692;
 Tue, 07 Apr 2026 10:00:33 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <bernhard.kaindl@citrix.com>) id 1wA3EX-0006qU-Fv
 for xen-devel@lists.xenproject.org; Tue, 07 Apr 2026 10:00:33 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wA3EW-00BX2n-S5
 for xen-devel@lists.xenproject.org; Tue, 07 Apr 2026 12:00:32 +0200
Received: from [10.42.69.8] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <bernhard.kaindl@citrix.com>)
 id 69d4d5bc-5cb7-0a2a0a5109dd-0a2a4508c27c-36
 for <xen-devel@lists.xenproject.org>; Tue, 07 Apr 2026 12:00:32 +0200
Received: from [160.101.131.9] (helo=na1pdmzitismtp02.tibco.com)
 by tlsNG-c1860d.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.0)
 (envelope-from <bernhard.kaindl@citrix.com>)
 id 69d4d5bf-fab6-0a2a45080019-a065830986ba-3
 for <xen-devel@lists.xenproject.org>; Tue, 07 Apr 2026 12:00:32 +0200
Received: from debian.eng.citrite.net (unknown [10.113.40.46])
 by na1pdmzitismtp02.tibco.com (Postfix) with ESMTP id A239A818B931;
 Tue,  7 Apr 2026 05:59:41 -0400 (EDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-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: Bernhard Kaindl <bernhard.kaindl@citrix.com>
To: xen-devel@lists.xenproject.org
Cc: Bernhard Kaindl <bernhard.kaindl@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.pau@citrix.com>,
	Stefano Stabellini <sstabellini@kernel.org>
Subject: [PATCH 4/5] xen/mm: Split d->outstanding_pages to global_claims & node_claims
Date: Tue,  7 Apr 2026 10:54:29 +0100
Message-Id: <e79c792ca8e624f49a74f98539cbe6e1272f96ff.1775505670.git.bernhard.kaindl@citrix.com>
X-Mailer: git-send-email 2.39.5
In-Reply-To: <cover.1775505670.git.bernhard.kaindl@citrix.com>
References: <cover.1775505670.git.bernhard.kaindl@citrix.com>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit
X-purgate-ID: tlsNG-c1860d/1775556032-F694D497-7F31FCBA/0/0
X-purgate-type: clean
X-purgate-size: 6932

In preparation for extending claims, rename d->outstanding_pages
to d->global_claims to keep the naming easy to reason about with
the addition of NUMA node claims.

Add d->node_claims as the aggregate of the domain's node claims
for the hot path of the allocator and include it together with
d->global_claims when reporting the total claims state of d.

Signed-off-by: Bernhard Kaindl <bernhard.kaindl@citrix.com>
---
 xen/common/domctl.c     |  2 +-
 xen/common/page_alloc.c | 33 +++++++++++++++------------------
 xen/include/xen/sched.h |  7 +++++--
 3 files changed, 21 insertions(+), 21 deletions(-)

diff --git a/xen/common/domctl.c b/xen/common/domctl.c
index 93738931c575..2cc5a4ff32fd 100644
--- a/xen/common/domctl.c
+++ b/xen/common/domctl.c
@@ -97,7 +97,7 @@ void getdomaininfo(struct domain *d, struct xen_domctl_getdomaininfo *info)
 
     info->tot_pages         = domain_tot_pages(d);
     info->max_pages         = d->max_pages;
-    info->outstanding_pages = d->outstanding_pages;
+    info->outstanding_pages = d->global_claims + d->node_claims;
 #ifdef CONFIG_MEM_SHARING
     info->shr_pages         = atomic_read(&d->shr_pages);
 #endif
diff --git a/xen/common/page_alloc.c b/xen/common/page_alloc.c
index 95bae26d1c1f..a4d71f844889 100644
--- a/xen/common/page_alloc.c
+++ b/xen/common/page_alloc.c
@@ -540,12 +540,12 @@ static unsigned long claims_retire_global(struct domain *d,
     ASSERT(spin_is_locked(&heap_lock));
 
     /* If the withdrawal is larger than the claims, don't withdraw beyond */
-    retired = min(d->outstanding_pages + 0UL, pages_to_retire);
+    retired = min(d->global_claims + 0UL, pages_to_retire);
 
     /* Assert the invariant of outstanding_claims not going negative */
     ASSERT(retired <= outstanding_claims);
     outstanding_claims -= retired;
-    d->outstanding_pages -= retired;
+    d->global_claims -= retired;
     return retired;
 }
 
@@ -557,8 +557,7 @@ int domain_set_outstanding_pages(struct domain *d, unsigned long pages)
     /*
      * Two locks are needed here:
      *  - d->page_alloc_lock: protects accesses to d->{tot,max,extra}_pages.
-     *  - heap_lock: protects accesses to d->outstanding_pages, total_avail_pages
-     *    and outstanding_claims.
+     *  - heap_lock: Protects accesses to the claims and avail_pages state.
      */
     nrspin_lock(&d->page_alloc_lock);
     spin_lock(&heap_lock);
@@ -566,13 +565,13 @@ int domain_set_outstanding_pages(struct domain *d, unsigned long pages)
     /* pages==0 means "unset" the claim. */
     if ( pages == 0 )
     {
-        claims_retire_global(d, d->outstanding_pages);
+        claims_retire_global(d, d->global_claims);
         ret = 0;
         goto out;
     }
 
-    /* only one active claim per domain please */
-    if ( d->outstanding_pages )
+    /* Reject updating global claims and we can't update node claims */
+    if ( d->global_claims || d->node_claims )
     {
         ret = -EINVAL;
         goto out;
@@ -599,8 +598,8 @@ int domain_set_outstanding_pages(struct domain *d, unsigned long pages)
         goto out;
 
     /* yay, claim fits in available memory, stake the claim, success! */
-    d->outstanding_pages = claim;
-    outstanding_claims += d->outstanding_pages;
+    d->global_claims = claim;
+    outstanding_claims += claim;
     ret = 0;
 
 out:
@@ -896,7 +895,7 @@ static bool claims_permit_request(const struct domain *d,
                                   unsigned int memflags,
                                   unsigned long requested_pages)
 {
-    unsigned long unclaimed_pages;
+    unsigned long unclaimed_pages, applicable_claims;
 
     ASSERT(spin_is_locked(&heap_lock));
     ASSERT(avail_pages >= competing_claims);
@@ -919,7 +918,7 @@ static bool claims_permit_request(const struct domain *d,
      * Allow the request to proceed when combination of unclaimed pages and the
      * claims held by the domain cover the shortfall for the requested_pages.
      */
-    return requested_pages <= unclaimed_pages + d->outstanding_pages;
+    return requested_pages <= unclaimed_pages + d->global_claims;
 }
 
 static struct page_info *get_free_buddy(unsigned int zone_lo,
@@ -1067,7 +1066,7 @@ static struct page_info *alloc_heap_pages(
      * is made by a domain with sufficient unclaimed pages.
      */
     if ( !claims_permit_request(d, total_avail_pages, outstanding_claims,
-                                memflags, request) )
+                                memflags, request, NUMA_NO_NODE) )
     {
         spin_unlock(&heap_lock);
         return NULL;
@@ -1117,18 +1116,16 @@ static struct page_info *alloc_heap_pages(
     total_avail_pages -= request;
     ASSERT(total_avail_pages >= 0);
 
-    if ( d && d->outstanding_pages && !(memflags & MEMF_no_refcount) )
+    if ( d && d->global_claims && !(memflags & MEMF_no_refcount) )
     {
         /*
          * Adjust claims in the same locked region where total_avail_pages is
          * adjusted, not doing so would lead to a window where the amount of
          * free memory (avail - claimed) would be incorrect.
          *
-         * Note that by adjusting the claimed amount here it's possible for
-         * pages to fail to be assigned to the claiming domain while already
-         * having been subtracted from d->outstanding_pages.  Such claimed
-         * amount is then lost, as the pages that fail to be assigned to the
-         * domain are freed without replenishing the claim.  This is fine given
+         * Note, after retiring claims for the allocation here, assign_pages()
+         * could fail. The domain looses The retired claims as the not assigned
+         * pages are freed without replenishing the claim.  This is fine given
          * claims are only to be used during physmap population as part of
          * domain build, and any failure in assign_pages() there will result in
          * the domain being destroyed before creation is finished.  Losing part
diff --git a/xen/include/xen/sched.h b/xen/include/xen/sched.h
index 212c7d765c3e..2995c99aa34a 100644
--- a/xen/include/xen/sched.h
+++ b/xen/include/xen/sched.h
@@ -413,8 +413,11 @@ struct domain
     unsigned int     tot_pages;
 
     unsigned int     xenheap_pages;     /* pages allocated from Xen heap */
-    /* Pages claimed but not possessed, protected by global heap_lock. */
-    unsigned int     outstanding_pages;
+
+    /* All claims are protected by the heap_lock */
+    unsigned int     global_claims;     /* Global Host-level claims */
+    unsigned int     node_claims;       /* Sum of the Node-specific claims */
+
     unsigned int     max_pages;         /* maximum value for domain_tot_pages() */
     unsigned int     extra_pages;       /* pages not included in domain_tot_pages() */
 
-- 
2.39.5



From xen-devel-bounces@lists.xenproject.org Tue Apr 07 10:01:42 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 07 Apr 2026 10:01:42 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1274731.1560740 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wA3Fd-0007SN-FW; Tue, 07 Apr 2026 10:01:41 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1274731.1560740; Tue, 07 Apr 2026 10: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 1wA3Fd-0007SG-C6; Tue, 07 Apr 2026 10:01:41 +0000
Received: by outflank-mailman (input) for mailman id 1274731;
 Tue, 07 Apr 2026 10:01: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 1wA3Fc-0007S8-4P
 for xen-devel@lists.xenproject.org; Tue, 07 Apr 2026 10:01:40 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wA3Fb-0019SL-EM
 for xen-devel@lists.xenproject.org; Tue, 07 Apr 2026 12:01:39 +0200
Received: from [10.42.69.6] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <andrew.cooper@citrix.com>)
 id 69d4d5f5-e002-0a2a0a5209dd-0a2a4506a2a4-46
 for <xen-devel@lists.xenproject.org>; Tue, 07 Apr 2026 12:01:39 +0200
Received: from [40.93.196.24]
 (helo=SA9PR02CU001.outbound.protection.outlook.com)
 by tlsNG-16d1c6.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.0)
 (envelope-from <andrew.cooper@citrix.com>)
 id 69d4d601-0df0-0a2a45060019-285dc4186489-3
 for <xen-devel@lists.xenproject.org>; Tue, 07 Apr 2026 12:01:39 +0200
Received: from CH8PR03MB8275.namprd03.prod.outlook.com (2603:10b6:610:2b9::7)
 by SJ0PR03MB6438.namprd03.prod.outlook.com (2603:10b6:a03:396::17)
 with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9769.19; Tue, 7 Apr
 2026 10:01:33 +0000
Received: from CH8PR03MB8275.namprd03.prod.outlook.com
 ([fe80::a70d:dc32:bba8:ce37]) by CH8PR03MB8275.namprd03.prod.outlook.com
 ([fe80::a70d:dc32:bba8:ce37%6]) with mapi id 15.20.9769.018; Tue, 7 Apr 2026
 10:01: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=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=CPQJigelncbopTynQr0diM52lv8UfpnNEBM3RovntKSBi5isY9zosHhA5X1kOuylQoTZdVwd8wAjge5qIXNslQChOFgJtXC5esC/Q9D03pGpexIVIFPsV3dcNgHOtwLBBxDalcarsGgazqet184XD/QIyG6CBLvlNI88BE4FyShkMU4VQ7ZOXcTWXBneDDkxEo+rSSbNnnEAdS44GgEk/n2MtTYFkvDv9wzasADGignRsWMGp1rInnDU0wnRSRaw+5dyQo41Dm20PJ3S4mf+RQAHmbuWR8coXBhZuq1YjUMPr48Hb3X/Mv2x077tYuW6NJgD2rf/uo/Ae4/0If55AA==
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com;
 s=arcselector10001;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1;
 bh=0QJ7FxsW/Npm05lZODgUo5FJUy+cB+G8ycOZ+diugj8=;
 b=fol+QJOzW7ZWKZZStmIj1uLAe9pcwQ/UR+lRrL26a1zGZAxTuS3DZQWL+ysPepSOD7bYnRVLno05BhvUay6Am8vtAAPqJVn9BZFn0bbEc3B0yGnfRQ+kpkSnyhqwdqTVCL1EP0uikmjbbQVBpTyS8NCYwg52ZLgPa661DbWBP/BwiYii6W2C62dvyDPCgyngsYkXirgqYEnmlQSugOHu69dIXbVwRkDDQIdDwIeOeCOwTRqMYGCCgJqNWAg+kZxwMcHN63cvGatGvosGja4w8QDlFW7Q4gaidRV0/MdsyFB3TGV7PIX6NbCLMA2GtbT7agKH36lhjVarx3rpX70E9w==
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=0QJ7FxsW/Npm05lZODgUo5FJUy+cB+G8ycOZ+diugj8=;
 b=VzmPEuK2cDBwNdyaAZ59AgQKanlPKIvwlQxiSevreOinGCsYDijYcQqFE9H5eDNR0DVK3u65d8UJ59Av62DRRpsUHYUs9Hv4+YmxnOOwCBOO8wQhri0GLURv4zCNu6t0j5H9utVt8FvkaiwU/OThmVxJpVw9jGvUltaUR+Bv8WQ=
Authentication-Results: dkim=none (message not signed)
 header.d=none;dmarc=none action=none header.from=citrix.com;
Message-ID: <48c83963-5222-4a37-94aa-eb565529fa62@citrix.com>
Date: Tue, 7 Apr 2026 11:01:29 +0100
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>, =?UTF-8?Q?Roger_Pau_Monn=C3=A9?=
 <roger.pau@citrix.com>, Kamil Frankowicz <kamil.frankowicz@cert.pl>
Subject: Re: [PATCH 3/5] ns16550: harden name/value pair parsing
To: Jan Beulich <jbeulich@suse.com>,
 "xen-devel@lists.xenproject.org" <xen-devel@lists.xenproject.org>
References: <63284ab7-8e38-4448-a789-1b9c23c4d95c@suse.com>
 <66135036-b516-4665-b875-996456a34640@suse.com>
Content-Language: en-GB
From: Andrew Cooper <andrew.cooper3@citrix.com>
In-Reply-To: <66135036-b516-4665-b875-996456a34640@suse.com>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 7bit
X-ClientProxiedBy: PR3P251CA0012.EURP251.PROD.OUTLOOK.COM
 (2603:10a6:102:b5::27) To CH8PR03MB8275.namprd03.prod.outlook.com
 (2603:10b6:610:2b9::7)
MIME-Version: 1.0
X-MS-PublicTrafficType: Email
X-MS-TrafficTypeDiagnostic: CH8PR03MB8275:EE_|SJ0PR03MB6438:EE_
X-MS-Office365-Filtering-Correlation-Id: 27e96076-0d84-478c-0dd2-08de948ca5d9
X-MS-Exchange-SenderADCheck: 1
X-MS-Exchange-AntiSpam-Relay: 0
X-Microsoft-Antispam:
	BCL:0;ARA:13230040|1800799024|366016|376014|22082099003|18002099003|56012099003;
X-Microsoft-Antispam-Message-Info:
	t4WXjmwz1ewCzqIZt3/EGB4e89lir+utiOMMdyy3VeQUdHfcsnYu8Z0SPu7xjW1lpozd6aNh/7ip/lunUhY7kfDTypecQrAEVbw9rKSnOdD4cslasfoYD7gy0gyInINFN4GkGNLSbn3DbMwbfREceh+NaTKMAQQjiD7GYJmBuP9eu2o74YN+Jm2YKkcBBDhW3h0GzuMGK6tYp6ykH8+0UbUxHWv0mNBezMAv3Eox8VVGtmZ5BQgV8rZP4fgDIBSqwpiTxkOYQ20lhsCDzJw8xbYB2eZy0mPnza6kWxnTofW+UwGdMD+1KzClIwfMm6VrczU4kjebzuqNdgRTuBk9EaVnDCPBZVHyr7y6KL+18WI1HcKFg5rIjaosIrXouDAHea/Beuqb0Eu8HXn78QYY6wdVg8i8C5ofAJCjNuJJZgdJdZ1PkUi6y3T/DkxnqVfNuNKprHvu+BnLpWSJbOsZUfim5tg3GoPVogm1MRKxnr/DE2U0pbOWlfFh723kIOepwl7xc/QoClsa5OjBQrcI387IQ9tWXIrKmLhrDNVlDF27qa0RLOis7gb7G357qgoaWT2kOe/EKp/VX0CDp/bSFJPJGun6VLgtt1CeBGWhqfDkjCYuGXVTQehdKw/HRkwaPCs3QxVmwlLT2BdLMg7N3kA3rWsox9YwYZrCWNo2vJeW4vnXfxVwh7Te5ohwUY5K+IkJZ9Nqj78O1FAdw/Ea/osSSc3ic+YckR3hTEVFRqI=
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)(22082099003)(18002099003)(56012099003);DIR:OUT;SFP:1101;
X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1
X-MS-Exchange-AntiSpam-MessageData-0:
	=?utf-8?B?dnBQTExqM0ZwVEhwWEtWcEk2U3htYTVVeFhoN1lJUHY5VDJGWlhQVFE5SlVP?=
 =?utf-8?B?MEoyMEtORXZtc1FOdGl3djU5dUlmU2h5V3VGSDgrNnU4YUlleW1mSHg4MlpP?=
 =?utf-8?B?bFUwT3A4dkl3YXRpUFR0aU56cDJTY3JlU1dGcDA0QXJOdytwVGdGenZKMlFO?=
 =?utf-8?B?enZmcEZnQTN1c01sbDljaTFtcVBFUVlOeGVRL0JNS3hwdmVWWVhNMmRnR2di?=
 =?utf-8?B?T3JpVVhtTU1SdmFzWWZXa3o1bXFiWE83MHRzOEh4V2JNTmVZZlV2U25CbVZI?=
 =?utf-8?B?R2p5bjA0eVVOMWxDV01nOCs3ejE3QThSczcvUG9HMXM4UVFpaHZEUGx4Zmk3?=
 =?utf-8?B?Y0RWZ0dQZHcwdlZFaWVsZlpvRkJpck9zd2RiYXNZVjlYZTRsTWJRVHRzamx0?=
 =?utf-8?B?WHFGRTlNSWRHQzRQSUNWdHZhSmdFTDZRRjFQTXovOGRjdmNKUWJPZWZVZW9x?=
 =?utf-8?B?WjYxYkZXZGtqRXJLN0gvZnoyTnl6UkRzV1ZyandWcU5PdWg0MlhsdlgxNExX?=
 =?utf-8?B?S2p5UGdjY0o3UFMvRStCcmlNRTRKZnBGaVR2eEFCZ0o4UkM1TXo3cXhLWnhS?=
 =?utf-8?B?d0tFNWphSlJxZmRFVmJvbEN2NUg5NkRQcGZialhGNktTTFJGaUFiT1c2Wnl4?=
 =?utf-8?B?eEF1WVhTc0FVbnloZm9JVk9zNGMzY0RwM3dpalBlMHRjNSt0aVl6aEVjejRZ?=
 =?utf-8?B?ZnV6OHdwZzNMSUpKTEpob2QxRHRoRHVLTkZKWWdmN2NDS1BmZkxGOEw3bzZV?=
 =?utf-8?B?b2w3TzB5MW1hSElaV1VZTG5VSEo4U1piNlBZRG9YbDlrR0FSMkc1OUh4V3NB?=
 =?utf-8?B?ajRaTDlDcUFGbFkzbW5qN3ZETCtScWdKektYWTV3ZmdHbWtBMGZMazhkNXNR?=
 =?utf-8?B?YTVtZVUvNTV6aWp5WkRzQkxnOEFvZHR2Q09GQWVHek9wKzkzSzJXV1h6SStT?=
 =?utf-8?B?YzNwRGtMOUtoN0F3d2hxUkZiZXhnYzgzUlVaaWtkelk2bE1GMDJ2bUZObGdu?=
 =?utf-8?B?a1Y3d0F6RDllQWpldmN6a1hCMXVudmtyRHhPaFJpaEI0SlA3TzRFVFN5Um1N?=
 =?utf-8?B?M1dncU1xaUx1S2IySDVMRDZLVUFOK0ZGZm5waTNYQ25aTS9EWFYrZDJraUJt?=
 =?utf-8?B?bzdHRmdLeDRYWCs2SjhiODBXQ2xUdDVWRGxYMGlNem1NdWM4a0Nkc2xNMS95?=
 =?utf-8?B?Rm9LYkJMWlRtMkp2UmRJQm02TWc1ZTFrSlplV05HR2RVWGFMRXlwY2lXcWJR?=
 =?utf-8?B?dnl6bGZDWU1ucDJ1NlRteDg3TUtEalRCbVIrV1pmVmx2VkNibUJ5THlXdzNH?=
 =?utf-8?B?Q1ZwOG84eVh3dmVsVmlBNUJZWkdaaThXeWd4RG9NbGhEbzlsWXM4S1ZYbWpP?=
 =?utf-8?B?UklzeHpEakQ0ekk2cHFtTHNPMnVBbVZXWngwMWxhRWV2UEJwQm56b0hycnhN?=
 =?utf-8?B?VVRFVDdXRjFiQWRSb1NlZDV5dXNvSW1OTDRFaFUzWUE2TUsvZjhBWFMxYS9J?=
 =?utf-8?B?a3k2NXk2YVpDTzJseTR3Y2J3STZsZXEwMVRyVkZOZis0UzBrTjNCZkVuOGpo?=
 =?utf-8?B?ZVNpdmpSbUNoUllhVFZUVG9Gd0tpeHRCRTdONEJNVHJ5ZXNJU09pUXl5ZHlo?=
 =?utf-8?B?OTYwTlBYbUxuTEpmenNPQ1hkMG9TS2Iwamh2ZEg5QUtURXFENyt0djNBeUNF?=
 =?utf-8?B?R2g4aEZPZk9Da28weXVrbDNvN3UxVEFFNTN6RmFNVUtlWFVkb0FoZGdNQVlq?=
 =?utf-8?B?MmFpeERqR3VGRUNiRldsZ3BuU09GNXN5MnJ1QjFaV0lpTS9xd1RqeXVTZFh0?=
 =?utf-8?B?cjBubGh6eDRBU3J5Z00wSS9nbzgrSEZUMWgyMUJjVnlEcDkvVEozNXJuNmxs?=
 =?utf-8?B?azBRTTRBRjlmZWxobUVhRWJHbGovaXBCQ0dsaTFXL0E3cWlDMzJSL0ZHeUFF?=
 =?utf-8?B?WGxwUzRlWThZMU1RTlFYQVhEVmtkU2lURHZHQzhrMHd0ajdad3Q2SHVTb0Zu?=
 =?utf-8?B?c1NFdEdMeEZJZm9ZKy9wWHBsTDJMZ21qZy8zeWhpUTEvdjVvRlpWS2d4OUht?=
 =?utf-8?B?NUJLNmRkWExkcXlJVzJIMk9CZVBvKzREWEIrMWY0ZzdpS0JCYm45cFNuVWU4?=
 =?utf-8?B?K2pYaDFwWDRLY1VTeGVTNTU0UkRmdklVT3N2N09qMnVKdXNsTkJqcmtvTXh0?=
 =?utf-8?B?VDJvdm5lZGlIVE9IRWRKZkJjaDRxSERrRmZKc3VpSHdGVnRkTFRnTlhLRFRL?=
 =?utf-8?B?R0RFdStEVWdVMFZ6d3VKZFQ4UC9mQ3MyVTU4a2sxNExkeHBJY0JDNGhwMVRJ?=
 =?utf-8?B?SFdQNDB0VC9BWEVGSDBHckNiTnI3N25uRGhFUmZiWUU1YnB0VGZweHlYYUl5?=
 =?utf-8?Q?VRTNVQnI2RDbybR4=3D?=
X-OriginatorOrg: citrix.com
X-MS-Exchange-CrossTenant-Network-Message-Id: 27e96076-0d84-478c-0dd2-08de948ca5d9
X-MS-Exchange-CrossTenant-AuthSource: CH8PR03MB8275.namprd03.prod.outlook.com
X-MS-Exchange-CrossTenant-AuthAs: Internal
X-MS-Exchange-CrossTenant-OriginalArrivalTime: 07 Apr 2026 10:01:33.2759
 (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: AdAH6Hd40no7U4j202fepzFTGrMt1XXFHTiiRp36Sm5xjMbJ/O2JP70VC78C8LQGPV7RsKJpkj3k7AK/m0n4KEc3kKooU5zlI5YyLtmbt0c=
X-MS-Exchange-Transport-CrossTenantHeadersStamped: SJ0PR03MB6438
X-purgate-ID: tlsNG-16d1c6/1775556099-5C7213D8-D1D3E7DE/0/0
X-purgate-type: clean
X-purgate-size: 722

On 24/03/2026 4:38 pm, Jan Beulich wrote:
> strsep(), unless passed a 1st argument which itself points at a NULL
> pointer, won't return NULL. Instead if the separator(s) looked for isn't
> found, that pointed-to field would be updated to hold NULL. Hence the
> important check in get_token() is for token to be non-NULL after the call
> (which get_token()'s callers rely upon), while the checking of param_name
> is left there just in case.
>
> Fixes: 97fd49a7e074 ("ns16550: add support for UART parameters to be specifed with name-value pairs")
> Reported-by: Kamil Frankowicz <kamil.frankowicz@cert.pl>
> Signed-off-by: Jan Beulich <jbeulich@suse.com>

Acked-by: Andrew Cooper <andrew.cooper3@citrix.com>


From xen-devel-bounces@lists.xenproject.org Tue Apr 07 10:02:17 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 07 Apr 2026 10:02:17 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1274742.1560750 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wA3GA-0007ul-NT; Tue, 07 Apr 2026 10:02:14 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1274742.1560750; Tue, 07 Apr 2026 10:02: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 1wA3GA-0007ue-Jg; Tue, 07 Apr 2026 10:02:14 +0000
Received: by outflank-mailman (input) for mailman id 1274742;
 Tue, 07 Apr 2026 10:02:14 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <bernhard.kaindl@citrix.com>) id 1wA3G9-0007uW-Sc
 for xen-devel@lists.xenproject.org; Tue, 07 Apr 2026 10:02:14 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wA3G9-001uQb-8T
 for xen-devel@lists.xenproject.org; Tue, 07 Apr 2026 12:02:13 +0200
Received: from [10.42.69.12] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <bernhard.kaindl@citrix.com>)
 id 69d4d61f-2eae-0a2a0a5409dd-0a2a450cba62-46
 for <xen-devel@lists.xenproject.org>; Tue, 07 Apr 2026 12:02:13 +0200
Received: from [160.101.131.9] (helo=na1pdmzitismtp02.tibco.com)
 by tlsNG-d25034.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.0)
 (envelope-from <bernhard.kaindl@citrix.com>)
 id 69d4d624-f40c-0a2a450c0019-a0658309a622-3
 for <xen-devel@lists.xenproject.org>; Tue, 07 Apr 2026 12:02:12 +0200
Received: from debian.eng.citrite.net (unknown [10.113.40.46])
 by na1pdmzitismtp02.tibco.com (Postfix) with ESMTP id A2FC0818BA72;
 Tue,  7 Apr 2026 06:01:21 -0400 (EDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-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: Bernhard Kaindl <bernhard.kaindl@citrix.com>
To: xen-devel@lists.xenproject.org
Cc: Bernhard Kaindl <bernhard.kaindl@citrix.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>,
	=?UTF-8?q?Roger=20Pau=20Monn=C3=A9?= <roger.pau@citrix.com>,
	Stefano Stabellini <sstabellini@kernel.org>,
	"Daniel P. Smith" <dpsmith@apertussolutions.com>,
	Marcus Granado <marcus.granado@citrix.com>,
	Alejandro Vallejo <alejandro.vallejo@cloud.com>
Subject: [PATCH 5/5] xen/mm: Introduce Claim Sets for multiple NUMA nodes
Date: Tue,  7 Apr 2026 10:54:30 +0100
Message-Id: <4af33fea53f1956155cca7d5ea74c0802e6ae4d8.1775505670.git.bernhard.kaindl@citrix.com>
X-Mailer: git-send-email 2.39.5
In-Reply-To: <cover.1775505670.git.bernhard.kaindl@citrix.com>
References: <cover.1775505670.git.bernhard.kaindl@citrix.com>
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
X-purgate-ID: tlsNG-d25034/1775556133-83348A3D-325C9D5B/0/0
X-purgate-type: clean
X-purgate-size: 28557

This patch extends Xen's memory claim handling to support claim sets
spanning multiple NUMA nodes.

Earlier review raised the concern that claims would need to evolve from a
single claim into a multi-node model. Roger Pau Monné described the core
requirement well:

  >  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.

      -- Roger Pau Monné

This patch implements that model.

A claim set can contain multiple node-specific claims and an optional
global 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 patch adds:

1. Atomic installation of multi-node claim sets with a domctl.
2. Allocation-time claim checks.
3. Claim retirement on successful allocation using claims.
4. Retention of the legacy claim interface without functional change.

Suggested-by: Jan Beulich <jbeulich@suse.com>
Suggested-by: Marcus Granado <marcus.granado@citrix.com>
Signed-off-by: Alejandro Vallejo <alejandro.vallejo@cloud.com>
Signed-off-by: Roger Pau Monné <roger.pau@citrix.com>
Signed-off-by: Bernhard Kaindl <bernhard.kaindl@citrix.com>

---
The design document submitted ahead of this series may help with review.
 It explains the background, design rationale, and implementation details.

Rendered version:
https://bernhardk-xen-review.readthedocs.io/node-claims-v5/designs/claims/

Posted version:
https://lists.xenproject.org/archives/html/xen-devel/2026-04/msg00108.html

Many thanks to everyone who contributed to the earlier work and review,
especially Alejandro Vallejo, Jan Beulich, Andrew Cooper, Roger Pau
Monné, Marcus Granado, and Edwin Török.

Many thanks to everyone who contributed to the previous work, reviews,
and implementation of this feature.

Thanks,

  Bernhard
---
 tools/include/xenctrl.h             |   4 +
 tools/libs/ctrl/xc_domain.c         |  38 ++++
 xen/common/domctl.c                 |  54 ++++++
 xen/common/page_alloc.c             | 279 +++++++++++++++++++++++++++-
 xen/include/public/domctl.h         |  32 ++++
 xen/include/public/memory.h         |   9 +
 xen/include/xen/mm.h                |   3 +
 xen/include/xen/sched.h             |   6 +
 xen/xsm/flask/hooks.c               |   1 +
 xen/xsm/flask/policy/access_vectors |   1 +
 10 files changed, 422 insertions(+), 5 deletions(-)

diff --git a/tools/include/xenctrl.h b/tools/include/xenctrl.h
index d5dbf69c8968..a0a9f2143b32 100644
--- a/tools/include/xenctrl.h
+++ b/tools/include/xenctrl.h
@@ -2659,6 +2659,10 @@ int xc_domain_set_llc_colors(xc_interface *xch, uint32_t domid,
                              const uint32_t *llc_colors,
                              uint32_t num_llc_colors);
 
+int xc_domain_claim_memory(xc_interface *xch, uint32_t domid,
+                           uint32_t nr_claims,
+                           memory_claim_t *claims);
+
 #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 01c0669c8863..32cd91187d44 100644
--- a/tools/libs/ctrl/xc_domain.c
+++ b/tools/libs/ctrl/xc_domain.c
@@ -1070,6 +1070,44 @@ int xc_domain_remove_from_physmap(xc_interface *xch,
     return xc_memory_op(xch, XENMEM_remove_from_physmap, &xrfp, sizeof(xrfp));
 }
 
+/* Claim the guest memory for a domain before starting the domain build */
+int xc_domain_claim_memory(xc_interface *xch,
+                           uint32_t domid,
+                           uint32_t nr_claims,
+                           memory_claim_t *claims)
+{
+    struct xen_domctl domctl = {};
+    DECLARE_HYPERCALL_BOUNCE(claims, sizeof(*claims) * nr_claims,
+                             XC_HYPERCALL_BUFFER_BOUNCE_IN);
+    int ret;
+
+    if ( xc_hypercall_bounce_pre(xch, claims) )
+        return -1;
+
+    domctl.cmd = XEN_DOMCTL_claim_memory;
+    domctl.domain = domid;
+    domctl.u.claim_memory.nr_claims = nr_claims;
+    set_xen_guest_handle(domctl.u.claim_memory.claims, claims);
+
+    ret = do_domctl(xch, &domctl);
+
+    xc_hypercall_bounce_post(xch, claims);
+
+    return ret;
+}
+
+/*
+ * Legacy API for claiming pages, replaced by xc_domain_claim_memory()
+ *
+ * Note: This hypercall is deprecated by xc_domain_claim_memory()
+ * which provides the same claim semantics described above, and thus can be
+ * used as drop-in replacement and is extended for NUMA-node-specific claims.
+ * This hypercall should not be used by new code.
+ *
+ * See the following documentation pages for more information:
+ * docs/guest-guide/dom/DOMCTL_claim_memory.rst
+ * docs/guest-guide/mem/XENMEM_claim_pages.rst
+ */
 int xc_domain_claim_pages(xc_interface *xch,
                                uint32_t domid,
                                unsigned long nr_pages)
diff --git a/xen/common/domctl.c b/xen/common/domctl.c
index 2cc5a4ff32fd..16d239c75bde 100644
--- a/xen/common/domctl.c
+++ b/xen/common/domctl.c
@@ -51,6 +51,51 @@ static int xenctl_bitmap_to_nodemask(nodemask_t *nodemask,
                                    MAX_NUMNODES);
 }
 
+/* Claim memory for a domain (or if a claim exists, release the claim) */
+static int claim_memory(struct domain *d,
+    const struct xen_domctl_claim_memory *uinfo)
+{
+    memory_claim_t *claims;
+    int rc = -EFAULT;
+
+    /* alloc_color_heap_page() does not handle claims, reject LLC coloring. */
+    if ( llc_coloring_enabled )
+        return -EOPNOTSUPP;
+
+    if ( !uinfo->nr_claims || uinfo->pad )
+        return -EINVAL;
+
+    /* Only calls for the supported number of nodes + a global claim can pass */
+    if ( uinfo->nr_claims > MAX_NUMNODES + 1 )
+        return -E2BIG;
+
+    /*
+     * Under domctl_lock, domain_kill() sets d->is_dying and retires claims.
+     * If it set, this is in the past and we should reject the claim request.
+     */
+    if ( d->is_dying )
+        return -ESRCH;
+
+    claims = xmalloc_array(memory_claim_t, uinfo->nr_claims);
+    if ( claims == NULL )
+        return -ENOMEM;
+
+    if ( copy_from_guest(claims, uinfo->claims, uinfo->nr_claims) )
+        goto out;
+
+    rc = -EINVAL; /* Default error code for invalid claim args */
+    if ( claims[0].target == XEN_DOMCTL_CLAIM_MEMORY_LEGACY &&
+         uinfo->nr_claims == 1 )
+        /* Implement installing a legacy claim for backwards compatibility */
+        rc = domain_set_outstanding_pages(d, claims[0].pages);
+    else
+        /* domain_install_claim_set() performs validation of the claim set */
+        rc = domain_install_claim_set(d, uinfo->nr_claims, claims);
+ out:
+    xfree(claims);
+    return rc;
+}
+
 void getdomaininfo(struct domain *d, struct xen_domctl_getdomaininfo *info)
 {
     struct vcpu *v;
@@ -865,6 +910,15 @@ long do_domctl(XEN_GUEST_HANDLE_PARAM(xen_domctl_t) u_domctl)
             copyback = true;
         break;
 
+    case XEN_DOMCTL_claim_memory:
+        /* Use the same XSM hook as XENMEM_claim_pages */
+        ret = xsm_claim_pages(XSM_PRIV, d);
+        if ( ret )
+            break;
+
+        ret = claim_memory(d, &op->u.claim_memory);
+        break;
+
     default:
         ret = arch_do_domctl(op, d, u_domctl);
         break;
diff --git a/xen/common/page_alloc.c b/xen/common/page_alloc.c
index a4d71f844889..2b32b1aa8fba 100644
--- a/xen/common/page_alloc.c
+++ b/xen/common/page_alloc.c
@@ -502,6 +502,9 @@ static long node_avail_pages[MAX_NUMNODES];
 static DEFINE_SPINLOCK(heap_lock);
 static long outstanding_claims; /* total outstanding claims by all domains */
 
+/* Sum of the outstanding claims of all domains on that node. */
+static long node_outstanding_claims[MAX_NUMNODES];
+
 static unsigned long avail_heap_pages(
     unsigned int zone_lo, unsigned int zone_hi, unsigned int node)
 {
@@ -549,6 +552,164 @@ static unsigned long claims_retire_global(struct domain *d,
     return retired;
 }
 
+/* Release outstanding claims on a specific node */
+static unsigned long claims_retire_node(struct domain *d, nodeid_t node,
+                                        unsigned long release)
+{
+    unsigned long consumed = 0;
+
+    ASSERT(spin_is_locked(&heap_lock));
+
+    /* If the allocation was larger than the claims, do not release beyond it */
+    if ( d->claims[node] ) /* Release the claims for this node */
+    {
+        /* Use min_t for clarity to make the comparison type explicit */
+        consumed = min_t(unsigned long, release, d->claims[node]);
+        d->claims[node] -= consumed;
+
+        ASSERT(consumed <= outstanding_claims);
+        outstanding_claims -= consumed;
+
+        ASSERT(consumed <= node_outstanding_claims[node]);
+        node_outstanding_claims[node] -= consumed;
+
+        ASSERT(consumed <= d->node_claims);
+        d->node_claims -= consumed;
+    }
+    return consumed;
+}
+
+/* Release all outstanding claims on all online nodes */
+static void claims_retire_nodes(struct domain *d)
+{
+    nodeid_t node;
+
+    for_each_online_node ( node )
+    {
+        claims_retire_node(d, node, d->claims[node]);
+    }
+    ASSERT(d->node_claims == 0);
+}
+
+/* Validate a claim set and install it if valid. */
+int domain_install_claim_set(struct domain *d, unsigned int nr_claims,
+                             memory_claim_t *claim_set)
+{
+    nodemask_t nodes;
+    uint32_t target;
+    uint64_t pages, tot_pages, max_pages, node_requests = 0, global_request = 0;
+    bool global_target_seen = false;
+    int ret = -EINVAL;
+
+    nrspin_lock(&d->page_alloc_lock);
+    spin_lock(&heap_lock);
+
+    /*
+     * Phase 1: Check and process the individual claim entries.
+     * Result: Extracted global claims and the sum of the node-local claims.
+     */
+    nodes_clear(nodes);
+    for ( int i = 0; i < nr_claims; i++ )
+    {
+        target = claim_set[i].target;
+        pages = claim_set[i].pages;
+        if ( claim_set[i].pad ) /* Check before handling global claims */
+            goto out;
+
+        if ( target == XEN_DOMCTL_CLAIM_MEMORY_GLOBAL )
+        {
+            if ( global_target_seen ) /* Only one global target allowed */
+                goto out;
+
+            global_request = pages; /* Will be checked with the total claims */
+            global_target_seen = true;
+            continue;
+        }
+
+        if ( target >= MAX_NUMNODES || !node_online(target) )
+        {
+            ret = -ENOENT; /* Node not valid or not online */
+            goto out;
+        }
+        if ( nodemask_test(target, &nodes) || /* Duplicate node in claim set */
+             /* Check for overflow before we add the pages to node_requests */
+             pages > ((typeof(d->node_claims))-1) - node_requests )
+            goto out;
+        node_set(target, nodes);
+
+        ASSERT(node_outstanding_claims[target] >= 0 &&
+               node_avail_pages[target] >= node_outstanding_claims[target]);
+        if ( pages > (uint64_t)(node_avail_pages[target] -
+                                node_outstanding_claims[target]) +
+                         d->claims[target] ) /* current claim deduction */
+        {
+            ret = -ENOMEM; /* Claim exceeds available memory on node */
+            goto out;
+        }
+        node_requests += pages; /* Will be checked with the total claims */
+    }
+
+    max_pages = d->max_pages;
+    tot_pages = domain_tot_pages(d);
+    /*
+     * Check that the total of claims and current pages fits in d->max_pages.
+     * Subtract sequentially from max_pages instead of adding the claims:
+     * each subtraction is safe because the prior comparison guarantees
+     * the subtrahend doesn't exceed the remaining budget. This avoids
+     * overflow regardless of the type widths of the claims and max_pages,
+     * as long as the claims are non-negative (which they are, as unsigned)
+     * and max_pages is not negative, which we check as well here.
+     */
+    if ( global_request > max_pages ||
+         node_requests > max_pages - global_request ||
+         tot_pages > max_pages - global_request - node_requests )
+        goto out; /* claims + domain_tot_pages exceeds max_pages: EINVAL */
+
+    /*
+     * Check that replacing the domain's current claims with the new claim set
+     * fits within the system-wide unclaimed memory.
+     *
+     * The right-hand side subtracts all outstanding claims from the total
+     * available memory, then adds this domain's current claims back because
+     * phase 3 retires them before installing the replacement claims.
+     */
+    ASSERT(outstanding_claims >= 0 && total_avail_pages >= outstanding_claims);
+    if ( global_request + node_requests >
+         (uint64_t)(total_avail_pages - outstanding_claims) + d->global_claims +
+         d->node_claims )
+    {
+        ret = -ENOMEM;
+        goto out; /* Total claim exceeds available unclaimed memory: ENOMEM */
+    }
+
+    /* Phase 3: Recall the domain's current claims */
+    claims_retire_global(d, d->global_claims);
+    claims_retire_nodes(d);
+
+    /* Phase 4: Install claim set: Global claims and overall node claims */
+    outstanding_claims += global_request + node_requests;
+    d->global_claims = global_request;
+    d->node_claims = node_requests;
+
+    /* Phase 5: Install the individual node claims */
+    for ( int i = 0; i < nr_claims; i++ )
+    {
+        target = claim_set[i].target;
+        pages = claim_set[i].pages;
+        if ( target >= MAX_NUMNODES ) /* Skip non-node claim targets */
+            continue;
+
+        /* Install the node claim and update the node's total claims claims. */
+        d->claims[target] = pages;
+        node_outstanding_claims[target] += pages;
+    }
+    ret = 0;
+out:
+    spin_unlock(&heap_lock);
+    nrspin_unlock(&d->page_alloc_lock);
+    return ret;
+}
+
 int domain_set_outstanding_pages(struct domain *d, unsigned long pages)
 {
     int ret = -ENOMEM;
@@ -565,6 +726,7 @@ int domain_set_outstanding_pages(struct domain *d, unsigned long pages)
     /* pages==0 means "unset" the claim. */
     if ( pages == 0 )
     {
+        claims_retire_nodes(d);
         claims_retire_global(d, d->global_claims);
         ret = 0;
         goto out;
@@ -608,6 +770,87 @@ out:
     return ret;
 }
 
+/*
+ * Retire the claims to cover a successful allocation.
+ *
+ * The claims for an allocation are retired in order of specificity:
+ *
+ * 1.) Firstly, the claim for the node the allocation was from (if any),
+ * 2.) Secondly, followed by global claims as a fallback (if any), and
+ * 3.) Finally, other remaining node claims from other nodes (if any).
+ *
+ * This order ensures that the most specific claims are retired first,
+ * and that the global claim is only used as a fallback if the node-specific
+ * claim is insufficient to cover the allocation or non-existant in case
+ * the domain doesn't have a claim on the alloc_node. This preserves the
+ * intent of the claims system to allow domains to reserve memory on
+ * specific nodes and only use global claims as a fallback when necessary.
+ *
+ * Finally, if the domain doesn't have sufficient claims on the alloc_node
+ * and the global fallback claim doesn't cover the remains of the allocation,
+ * but as the domain still has other claims, retire the remaining portion
+ * of the allocation from those claims.
+ *
+ * This final step ensures that the domain's total claims (global + node
+ * claims) are always retired to cover the allocation, which in turn
+ * prevents domain_tot_pages(d) + d->global_claims + d->node_claims
+ * from exceeding the domain's d->max_pages limit.
+ *
+ * If this final step was not taken, then it would be possible for a domain to
+ * block off more than its share of system memory as defined by d->max_pages.
+ *
+ * Note: We can't reliably check d->max_pages here, at least not under the
+ * d->page_alloc_lock as taking it here would violate the locking order,
+ * but we can ensure that the domain's claims are always retired to cover
+ * the allocation, which is sufficient to preserve the intent of d->max_pages
+ * cap the domain's memory usage and claims to d->max_pages. While we could
+ * add checking it without lock as a best effort check, a domain builder is
+ * not supposed to claim memory on one set of nodes and then allocate from
+ * another set of nodes, so it would not be meaningful to add such a check,
+ * and the final check covers our bases to handle such misbehaviour anyway.
+ */
+static void claims_retire_allocation(struct domain *d,
+                                     unsigned long allocated_pages,
+                                     nodeid_t alloc_node)
+{
+    unsigned long pages_to_retire = allocated_pages;
+
+    ASSERT(spin_is_locked(&heap_lock));
+
+    /* 1.) Retire the allocation from the alloc_node's claim insofar possible */
+    if ( d->claims[alloc_node] )
+    {
+        pages_to_retire -= claims_retire_node(d, alloc_node, pages_to_retire);
+        if ( pages_to_retire == 0 )
+            return; /* The allocation is fully consumed by alloc_node claim */
+    }
+
+    /* 2.) Retire remains of the allocation from the global / fallback claims */
+    pages_to_retire -= claims_retire_global(d, pages_to_retire);
+
+    if ( pages_to_retire == 0 || !d->node_claims )
+        return; /* Allocation fully consumed or the domain has no claims left */
+
+    /*
+     * 3.) Finally, if the domain doesn't have sufficient claims on alloc_node
+     * and the global fallback claim didn't cover the remains of the allocation,
+     * consume the remaining portion of the allocation from the domain's other
+     * node claims. See the function comment for the details behind this step.
+     */
+    pages_to_retire = min(pages_to_retire, d->node_claims + 0UL);
+    if ( pages_to_retire )
+    {
+        nodeid_t node;
+
+        for_each_online_node ( node )
+        {
+            pages_to_retire -= claims_retire_node(d, node, pages_to_retire);
+            if ( pages_to_retire == 0 )
+                break;
+        }
+    }
+}
+
 #ifdef CONFIG_SYSCTL
 void get_outstanding_claims(uint64_t *free_pages, uint64_t *outstanding_pages)
 {
@@ -893,7 +1136,7 @@ static bool claims_permit_request(const struct domain *d,
                                   unsigned long avail_pages,
                                   unsigned long competing_claims,
                                   unsigned int memflags,
-                                  unsigned long requested_pages)
+                                  unsigned long requested_pages, nodeid_t node)
 {
     unsigned long unclaimed_pages, applicable_claims;
 
@@ -918,7 +1161,25 @@ static bool claims_permit_request(const struct domain *d,
      * Allow the request to proceed when combination of unclaimed pages and the
      * claims held by the domain cover the shortfall for the requested_pages.
      */
-    return requested_pages <= unclaimed_pages + d->global_claims;
+    if ( node == NUMA_NO_NODE )
+        /*
+         * We are checking global claims: For the global claims check,
+         * we apply the domain's global claims and node claims: The domain
+         * can use any of its claims to allow the global check to proceed.
+         *
+         * get_free_buddy() will repeat this check using a node which
+         * will check if either the node has enough unclaimed pages
+         * or the domain enough claims for the node (see below).
+         */
+        applicable_claims = d->node_claims + d->global_claims;
+    else
+        /*
+         * We are checking node-specific claims: For the node-specific claims
+         * check, we may only apply the domain's claim on that specific node.
+         */
+        applicable_claims = d->claims[node];
+
+    return requested_pages <= unclaimed_pages + applicable_claims;
 }
 
 static struct page_info *get_free_buddy(unsigned int zone_lo,
@@ -970,9 +1231,15 @@ static struct page_info *get_free_buddy(unsigned int zone_lo,
      */
     for ( ; ; )
     {
+        /* Ensure the target node and the claims permit this allocation */
+        if ( !claims_permit_request(d, node_avail_pages[node],
+                                    node_outstanding_claims[node], memflags,
+                                    1UL << order, node) )
+            goto try_next_node;
+
         zone = zone_hi;
         do {
-            /* Check if target node can support the allocation. */
+            /* Check if this target zone on node can support the allocation. */
             if ( !avail[node] || (avail[node][zone] < (1UL << order)) )
                 continue;
 
@@ -999,6 +1266,8 @@ static struct page_info *get_free_buddy(unsigned int zone_lo,
             }
         } while ( zone-- > zone_lo ); /* careful: unsigned zone may wrap */
 
+    try_next_node:
+        /* If MEMF_exact_node was passed, we may not skip to a different node */
         if ( (memflags & MEMF_exact_node) && req_node != NUMA_NO_NODE )
             return NULL;
 
@@ -1116,7 +1385,7 @@ static struct page_info *alloc_heap_pages(
     total_avail_pages -= request;
     ASSERT(total_avail_pages >= 0);
 
-    if ( d && d->global_claims && !(memflags & MEMF_no_refcount) )
+    if ( d && !(memflags & MEMF_no_refcount) )
     {
         /*
          * Adjust claims in the same locked region where total_avail_pages is
@@ -1131,7 +1400,7 @@ static struct page_info *alloc_heap_pages(
          * the domain being destroyed before creation is finished.  Losing part
          * of the claim makes no difference.
          */
-        claims_retire_global(d, request);
+        claims_retire_allocation(d, request, node);
     }
 
     check_low_mem_virq();
diff --git a/xen/include/public/domctl.h b/xen/include/public/domctl.h
index 8f6708c0a7cd..a4f08248e6ee 100644
--- a/xen/include/public/domctl.h
+++ b/xen/include/public/domctl.h
@@ -1276,6 +1276,36 @@ 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; /* Node and/or claim type like legacy or a global claim */
+    uint32_t pad;    /* Explicit padding: Reserved, initialize to 0 on input */
+};
+typedef struct xen_memory_claim memory_claim_t;
+DEFINE_XEN_GUEST_HANDLE(memory_claim_t);
+
+/* Special claim targets for the target field of memory_claim_t */
+#define XEN_DOMCTL_CLAIM_MEMORY_LEGACY 0x40000000U /* No node, legacy claim */
+#define XEN_DOMCTL_CLAIM_MEMORY_GLOBAL 0x80000000U /* No node, global claim */
+
+/*
+ * XEN_DOMCTL_claim_memory
+ *
+ * Claim memory for a guest domain. It sets aside an amount of memory
+ * (it is not pre-allocated) for the purpose of satisfying future memory
+ * allocation requests for building the guest's physical address space.
+ * Memory can be claimed on a set of nodes, or globally (without node
+ * affinity), or with legacy behavior. The set of claims is a claim set. See
+ * docs/guest-guide/dom/DOMCTL_claim_memory.rsti and docs/designs/claims/.
+ */
+struct xen_domctl_claim_memory {
+    /* IN: Array of struct xen_memory_claim */
+    XEN_GUEST_HANDLE_64(memory_claim_t) claims;
+    /* IN: Number of claims in the claims array handle. */
+    uint32_t nr_claims;
+    uint32_t pad;  /* Explicit padding: Reserved, initialize to 0 on input */
+};
+
 struct xen_domctl {
 /* Stable domctl ops: interface_version is required to be 0.  */
     uint32_t cmd;
@@ -1368,6 +1398,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_claim_memory                  91
 #define XEN_DOMCTL_gdbsx_guestmemio            1000
 #define XEN_DOMCTL_gdbsx_pausevcpu             1001
 #define XEN_DOMCTL_gdbsx_unpausevcpu           1002
@@ -1436,6 +1467,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_claim_memory      claim_memory;
         uint8_t                             pad[128];
     } u;
 };
diff --git a/xen/include/public/memory.h b/xen/include/public/memory.h
index bd9fc37b5297..ccec095f8660 100644
--- a/xen/include/public/memory.h
+++ b/xen/include/public/memory.h
@@ -569,6 +569,15 @@ 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 deprecated by XEN_DOMCTL_claim_memory
+ * which provides the same claim semantics described above, and thus can be
+ * used as drop-in replacement and is extended for NUMA-node-specific claims.
+ * This hypercall should not be used by new code.
+ *
+ * See the following documentation pages for more information:
+ * docs/guest-guide/dom/DOMCTL_claim_memory.rst
+ * docs/guest-guide/mem/XENMEM_claim_pages.rst
  */
 #define XENMEM_claim_pages                  24
 
diff --git a/xen/include/xen/mm.h b/xen/include/xen/mm.h
index b80bec00c124..b2d6a6f266ba 100644
--- a/xen/include/xen/mm.h
+++ b/xen/include/xen/mm.h
@@ -69,6 +69,7 @@
 #include <xen/list.h>
 #include <xen/spinlock.h>
 #include <xen/perfc.h>
+#include <public/domctl.h>
 #include <public/memory.h>
 
 struct page_info;
@@ -131,6 +132,8 @@ int populate_pt_range(unsigned long virt, unsigned long nr_mfns);
 /* Claim handling */
 unsigned long __must_check domain_adjust_tot_pages(struct domain *d,
     long pages);
+int domain_install_claim_set(struct domain *d, unsigned int nr_claims,
+                             memory_claim_t *claims);
 int domain_set_outstanding_pages(struct domain *d, unsigned long pages);
 void get_outstanding_claims(uint64_t *free_pages, uint64_t *outstanding_pages);
 
diff --git a/xen/include/xen/sched.h b/xen/include/xen/sched.h
index 2995c99aa34a..d31f4546e3b0 100644
--- a/xen/include/xen/sched.h
+++ b/xen/include/xen/sched.h
@@ -417,6 +417,12 @@ struct domain
     /* All claims are protected by the heap_lock */
     unsigned int     global_claims;     /* Global Host-level claims */
     unsigned int     node_claims;       /* Sum of the Node-specific claims */
+    /*
+     * struct domain is allocated in a dedicated page with more than enough
+     * spare capacity. It's efficient to use that page to store the
+     * per-node claims in it instead allocating a separate array for it.
+     */
+    unsigned int     claims[MAX_NUMNODES]; /* Array of per-NUMA-node claims */
 
     unsigned int     max_pages;         /* maximum value for domain_tot_pages() */
     unsigned int     extra_pages;       /* pages not included in domain_tot_pages() */
diff --git a/xen/xsm/flask/hooks.c b/xen/xsm/flask/hooks.c
index b250b2706535..adfcf081a33c 100644
--- a/xen/xsm/flask/hooks.c
+++ b/xen/xsm/flask/hooks.c
@@ -651,6 +651,7 @@ static int cf_check flask_domctl(struct domain *d, unsigned int cmd,
 
     /* These have individual XSM hooks (common/domctl.c) */
     case XEN_DOMCTL_getdomaininfo:
+    case XEN_DOMCTL_claim_memory:
     case XEN_DOMCTL_scheduler_op:
     case XEN_DOMCTL_irq_permission:
     case XEN_DOMCTL_iomem_permission:
diff --git a/xen/xsm/flask/policy/access_vectors b/xen/xsm/flask/policy/access_vectors
index ce907d50a45e..77db6f4cb38e 100644
--- a/xen/xsm/flask/policy/access_vectors
+++ b/xen/xsm/flask/policy/access_vectors
@@ -218,6 +218,7 @@ class domain2
 # XEN_DOMCTL_scheduler_op with XEN_DOMCTL_SCHEDOP_putinfo
     setscheduler
 # XENMEM_claim_pages
+# XEN_DOMCTL_claim_memory
     setclaim
 # XEN_DOMCTL_cacheflush
     cacheflush
-- 
2.39.5



From xen-devel-bounces@lists.xenproject.org Tue Apr 07 10:02:29 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 07 Apr 2026 10:02:29 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1274747.1560759 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wA3GP-0008Fp-1W; Tue, 07 Apr 2026 10:02:29 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1274747.1560759; Tue, 07 Apr 2026 10:02: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 1wA3GO-0008Fi-Uy; Tue, 07 Apr 2026 10:02:28 +0000
Received: by outflank-mailman (input) for mailman id 1274747;
 Tue, 07 Apr 2026 10:02:28 +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 1wA3GO-0008FG-7b
 for xen-devel@lists.xenproject.org; Tue, 07 Apr 2026 10:02:28 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wA3GN-00BXgv-Jn
 for xen-devel@lists.xenproject.org; Tue, 07 Apr 2026 12:02:27 +0200
Received: from [10.42.69.11] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <andrew.cooper@citrix.com>)
 id 69d4d62e-5cb7-0a2a0a5109dd-0a2a450bc51c-28
 for <xen-devel@lists.xenproject.org>; Tue, 07 Apr 2026 12:02:27 +0200
Received: from [40.93.195.16]
 (helo=SN4PR2101CU001.outbound.protection.outlook.com)
 by tlsNG-42698a.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.0)
 (envelope-from <andrew.cooper@citrix.com>)
 id 69d4d632-bca8-0a2a450b0019-285dc31035ee-3
 for <xen-devel@lists.xenproject.org>; Tue, 07 Apr 2026 12:02:27 +0200
Received: from CH8PR03MB8275.namprd03.prod.outlook.com (2603:10b6:610:2b9::7)
 by SJ0PR03MB6438.namprd03.prod.outlook.com (2603:10b6:a03:396::17)
 with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9769.19; Tue, 7 Apr
 2026 10:02:24 +0000
Received: from CH8PR03MB8275.namprd03.prod.outlook.com
 ([fe80::a70d:dc32:bba8:ce37]) by CH8PR03MB8275.namprd03.prod.outlook.com
 ([fe80::a70d:dc32:bba8:ce37%6]) with mapi id 15.20.9769.018; Tue, 7 Apr 2026
 10:02: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=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=aliNF2SEsW2Pcu/Rw7XI/AwnFzysFhyv5JoMZYPqKjpncmU8+P52ifKodWwEkw9tZ8qJYxSAOKKcCPoO1r1pe7qJA625+t/GPyTmIB17onk6Iw/qTJK4+CRVJ49X8+BzwsvjGZTEJsYXTokOneqPTW+bL/hRaVC4+jfrSq4+CBCtKX9G0MYLg+VRmXqmFwXUiL/JfA5VJKbx6KW3DIFwP9WnCIzFuW4fY5mQ4ccXYsBoUfOfihn/M0DVTDre0rbOrDkGF+Vfw3c/jL9RDpQtKlcBc/UJftGgaPiudrK8BQi/QTSp/EZBNdsQPNOCE0R5A6ugXSHFuppmE8dp9ZQCpA==
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com;
 s=arcselector10001;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1;
 bh=T2dUskJt2xzLRAQZ9C7R+tmv8D/JB/CdQYvcARuTgD4=;
 b=Op57Fhqpemv1Nni3YXCu7vCzCaBEGWYWrrUjtneOjJvwbhcTR05YFmTr+BhpxSv6q77GlhMuiuKNRPP6VgutNHh+ehPKSTTxYWyJAtxXDu010qcF/jxmMHK4aea/NX+41qtNVGgoDfBp3NCkFs+G7vEF3JZOigY6S+OzkEw5XVBiufwSst4nmVUS9ZxcfuZQZk7f744BK9qKs/+BfyOcezCjKkMNMbh0stVXdYUIHSCoRFXIYzRCVd5bl+hotv5WYr5hz1iQKL/NQ41a3cnZ0zfibnHJtPjhEO4wu/wZsStY5I55Wvj4iMLF25tP/qeGB3OQxQlVLDyVOIJteYVg3Q==
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=T2dUskJt2xzLRAQZ9C7R+tmv8D/JB/CdQYvcARuTgD4=;
 b=SOnDbNZxFSxCP9sEqyHmK627kjfd4JnT2fpmreqlz/ovKUUb8Zh3+NFZ8K7vC/XqjU0VDoCcH0lCa2op+QDmzif1LF9Sw0wZmUW3vvJNLz0TD7viP79B+KOHhbC962JBhVH586ddwPU5MI2i/yLOKjSZBqY0YMu0UQmqWnvTSJY=
Authentication-Results: dkim=none (message not signed)
 header.d=none;dmarc=none action=none header.from=citrix.com;
Message-ID: <55138b49-4a70-4f97-80ab-d28ce3deb96a@citrix.com>
Date: Tue, 7 Apr 2026 11:02:19 +0100
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>, =?UTF-8?Q?Roger_Pau_Monn=C3=A9?=
 <roger.pau@citrix.com>, Kamil Frankowicz <kamil.frankowicz@cert.pl>
Subject: Re: [PATCH 4/5] ns16550: harden positional parsing
To: Jan Beulich <jbeulich@suse.com>,
 "xen-devel@lists.xenproject.org" <xen-devel@lists.xenproject.org>
References: <63284ab7-8e38-4448-a789-1b9c23c4d95c@suse.com>
 <b34b6e26-49ba-4ab8-8f43-a53c5dac63b7@suse.com>
Content-Language: en-GB
From: Andrew Cooper <andrew.cooper3@citrix.com>
In-Reply-To: <b34b6e26-49ba-4ab8-8f43-a53c5dac63b7@suse.com>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 7bit
X-ClientProxiedBy: PR3P251CA0001.EURP251.PROD.OUTLOOK.COM
 (2603:10a6:102:b5::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_|SJ0PR03MB6438:EE_
X-MS-Office365-Filtering-Correlation-Id: 9afbd1c5-f23e-4db6-421b-08de948cc3d3
X-MS-Exchange-SenderADCheck: 1
X-MS-Exchange-AntiSpam-Relay: 0
X-Microsoft-Antispam:
	BCL:0;ARA:13230040|1800799024|366016|376014|22082099003|18002099003|56012099003;
X-Microsoft-Antispam-Message-Info:
	Tv8MLRAmJueb4lgCJfab1hAmocoAMRl7sMHqofNFHlQKfPxV9R/GCdB8mz2FZxUAwF7PR0Jgx3y/GC1tmmFmosCB6U4tz1DmZDyZf6OD10n+Na4L2QyXrPLalZ5b41p3TuPFyLJRwLE4MRBMmVK76kSx12g8WFEWsMmM3tOPUegpv2nVSm7y49sVL/6bPSZbHsXYEDB+wxJl5Q6gr+DNADu9mrTkW1E47AMtfime75+ad57oEoMOzAJzky4IGxJbeCw7uTNboNMKpRxDo++36I4Gm/3FgDzj2mugEVH0qlRE5zvjcDpn7bgECTPnLB3EBwmjkhzmlXq5L148LtSjBA+Hz7U4q2HznZox7DFqUFKr/IcmH6I0BZ8krjZPSo3qCgJ2FDULl5Iz3p6SkPSYx3cdA4p55+LCFtgqO3Wm+a7c+MOdDUMRdyK38qHLN56t6Qow/yl7h7DHy1kIO+OJJar78p8nqme+j/1oBLMxOTnnuQBI2RBypjbO0HtGS3SFUx7F+pBJVf5S+xfrWGbG4FS+RpG9e2jFIYAJhl4qOhbIUxe2cMB9zhdVaOxoPyO0ZuH/1kv9wT/FY8pchy/3ITV46427eEKqJXHim15ESFG/uGGNFfmhtlTpQHLhiz+Ov8wq+YCRwqgij+AyE4byWq9ng2UqgOVcIH7Gljsku1QL8YBA5EDUla/ifM4bleGPFh7Jy6PZUSpM/9rTp+qupHh+UC96HIcGiIBcRusqZjE=
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)(22082099003)(18002099003)(56012099003);DIR:OUT;SFP:1101;
X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1
X-MS-Exchange-AntiSpam-MessageData-0:
	=?utf-8?B?SU9wd0JCSERXekJtY29DeElleVY3YWpWS1F3MjIwUlc0RUJ6WWZRZGxCc29C?=
 =?utf-8?B?TzFlQlNnLzQ1c1R2U25VZ1hUSHdHdEl0Tkc5d0F0K3o4d08wWXpMSTQrd3R1?=
 =?utf-8?B?cEpYdFF5aVZCZEI3L1F6Y1dRejMrc0VlSTkzNGlUbVFmZlJINGlBTk1nRXph?=
 =?utf-8?B?SU41Z3QzQXZGZFJXTFdlMU1MRTVCM3pLY21BMjFDTSsrNmNlRmtKaTBvU2JU?=
 =?utf-8?B?RXkyOTVTaVVqVFVubVd4TjhKMGFOcVRGL3h3ZlhocU95VCtmVkRicndTRnFx?=
 =?utf-8?B?ZDRnNW9TOEVieUlCcEtDakt1MnJJRHB0Rk0vU05MTkhRajhWcHVGWHZIb1E3?=
 =?utf-8?B?R3RWaVIrOWV0cm1DSTB0VHVraUk1bGJxZUovREhYTTY3eUV0M211QjJLMmN2?=
 =?utf-8?B?aFRpdms0UnN6T3VVK2VQUzIrWGliUkU3bXJlb0NvS25JcXV6UUlEemlhNENo?=
 =?utf-8?B?emxLNVpTTUpKSnJSWXBVaW5lWjhKN3pqUzErMnJNVmVQdVU3RURhSVNoOTM4?=
 =?utf-8?B?MVU0Nk93WDRPVi9QYmlpTUVCVjFsY3NIMU9DYmRtMmVWbVpPUkl6a0xGcFEv?=
 =?utf-8?B?NGNoWEpsaEt0T25KZVpHVk5wRVRxUnM0QklTOEk2NS9pZlFyVUR5dUttSGpw?=
 =?utf-8?B?T3ZkdUtvWVB3SFNySjViOVdyRk1MMEVXaS9VdU5mMXNOL0xGeGY3cnFkaGdt?=
 =?utf-8?B?NVNuQ2U1b2NnbEQwOEFJOTlPSFBUYWFGTktWRE5oWUg1KzFvZ2cxY3ZXRmJI?=
 =?utf-8?B?SVF3aUQwYUxtaHJLd0pGb3pnWGRPQld0U2Z3RnljR2dabEcxWEtDaExmZVhx?=
 =?utf-8?B?UjJmZDMybFFYNWhFano3THRsL0F6Yi90WDRncTdmSDlDTTRBM09GWnlwNXpN?=
 =?utf-8?B?Y29Nb2tUOFJsWVpGQ25Ta0hQcElHTzJyS05vUjJNL1NJc281d0I5TDhLbFBS?=
 =?utf-8?B?NVo1QTAwT3hIeElxelpIUENyQ3owN0Vzem5QeW9SakY1bllsK1dpck4xcHow?=
 =?utf-8?B?RkpxT053SER3MFQvSUVIOWZMVnBSU3pTTGNtMzNCWFdkWjhoMmh5ZGpvd2w0?=
 =?utf-8?B?S1Nuc21lRUpnV2h4UktySWdUVGNqaGJRMFBKdVdFM1hGZ0pyT21heWJxeHhh?=
 =?utf-8?B?MnlqM0d0cGdmVndZSHdiNFVrRlpqRTZTMGwwV0o0VUVFdi92YVpnZGN2bkkz?=
 =?utf-8?B?UEFFZVUxTm9VVWk4VU1qSXA2SGM5MjBxTDBiMWZxVWtvZ1RlYnN2WWFUblhJ?=
 =?utf-8?B?K2JwdFBnVmNKV1hzdFYxeGZ6SUpwVmMwcCtpQ1lrdHJYOGlZZlgyeWlUT3Jr?=
 =?utf-8?B?enJUS2ErdVFwTjdyU2JMYkVPWktnSnY0VEVDOGU1ZFZjbURxU1ZyTnkxNnFD?=
 =?utf-8?B?empkQnZEdDFqaFNSN1AzcE5ESGtNTVRrcG1zRmZPUWdaOGJBZTIwNm5Ba1JP?=
 =?utf-8?B?U2c2UExBZ1NyMXVRSmNMaCtWM0w1K2hzK0pkUVcwTFdBQ1g1Z2tOMmloRWkx?=
 =?utf-8?B?YjV6QUdYK21JTyswWU1iYUxhYXF6MGN2NSt3N2xnNGxOUTgwbjZ2QU9QOVp3?=
 =?utf-8?B?SjJ5ZCtkZjM2UmpCa3VGMGZHVjhDVkJnKzlyT2k5a0N1RFVMSGthbklXU05B?=
 =?utf-8?B?OWU4ZlRSMzA3TVdwN25sQzFheW5jR1FqOXdOa2cwZmpEUUU1a2ZOUHpmaXB6?=
 =?utf-8?B?cUFjOVBtNGs3Wk1VM001cXpxRHEyRXJNUWRLSlNqWVRMWGVGYmJ0WTh6WVJ1?=
 =?utf-8?B?dTYvOTVOK1ZPRG5SNThVQ1FaMDFVRitUVFVaUXk5MUlJWFlEK2MzYVBSVWF1?=
 =?utf-8?B?R2Y3Z3E3eGw3Mnk2RjJYQ2JPcjhtdGxlaGhocjBMUG1rWTRvMFY5cUdNWTls?=
 =?utf-8?B?d25VZE5CM2pPZTNlZGdrR05KcWc1aXkwNC9WNXdZNWl2UjZwVWlvUEliZ1hn?=
 =?utf-8?B?SURXNFhwbkZSZ1l4MkZ2d2F3cWMxY3daa1RQVVY3YUN0ZXNwUG5MM2hwUEUr?=
 =?utf-8?B?MDJscWR6UmJWQmM3THh6RHFoV3BHS0IwMnpCM0lVeGdoVy83ZWZRSlNXZUNK?=
 =?utf-8?B?SUY2NTJPUEtGS0FTd0lTV2k0bmxDUCtlbFdlSU1iTUpXNXFzNVdmUGZWS0xj?=
 =?utf-8?B?ZWFmMGJuOWUxWFU0S3dRT3lXTW1oOHhoSUVSdEc2UWFsaVlGZ1ZDOEd4dU5W?=
 =?utf-8?B?bEdJYVZGcElvYU9mWTI4bW1OZW1qL3hkZkp4QU90N2sySE9QcnBtUmZiSHYx?=
 =?utf-8?B?SVJ6Y2Z6bXF4WnRFQ3ZKazJISWs5YklUYlFydDd2eUZiank4SU1UdXhPcm5n?=
 =?utf-8?B?YlhnNC83QXg5dmNlSk5Wak9pdS9UbU9rSEFORFdyUk9yS1BpaVphZFAxTVJP?=
 =?utf-8?Q?+YeNcK6aY6jcBO5U=3D?=
X-OriginatorOrg: citrix.com
X-MS-Exchange-CrossTenant-Network-Message-Id: 9afbd1c5-f23e-4db6-421b-08de948cc3d3
X-MS-Exchange-CrossTenant-AuthSource: CH8PR03MB8275.namprd03.prod.outlook.com
X-MS-Exchange-CrossTenant-AuthAs: Internal
X-MS-Exchange-CrossTenant-OriginalArrivalTime: 07 Apr 2026 10:02:23.5572
 (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: MMAaDQiRwhW5bjhEnRvyZVmRXwkleAh2xeWNUGZXkDxAxW6cnDquXO1tsWiU2f+3D7tfwPwPtDuZrMOugb5zC20m3ELDj5DiX7/RLIj4HRs=
X-MS-Exchange-Transport-CrossTenantHeadersStamped: SJ0PR03MB6438
X-purgate-ID: tlsNG-42698a/1775556147-177422A1-C4FF6A83/0/0
X-purgate-type: clean
X-purgate-size: 413

On 24/03/2026 4:38 pm, Jan Beulich wrote:
> Advancing past a character without knowing whether that's the NUL char is
> at risk of reading beyond the buffer.
>
> Fixes: 25de1f692059 ("Allow arch-specific defaults to be specified for ns16550")
> Reported-by: Kamil Frankowicz <kamil.frankowicz@cert.pl>
> Signed-off-by: Jan Beulich <jbeulich@suse.com>

Acked-by: Andrew Cooper <andrew.cooper3@citrix.com>


From xen-devel-bounces@lists.xenproject.org Tue Apr 07 10:02:30 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 07 Apr 2026 10:02:30 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1274748.1560768 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wA3GQ-0008Tu-9b; Tue, 07 Apr 2026 10:02:30 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1274748.1560768; Tue, 07 Apr 2026 10:02: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 1wA3GQ-0008Tj-5w; Tue, 07 Apr 2026 10:02:30 +0000
Received: by outflank-mailman (input) for mailman id 1274748;
 Tue, 07 Apr 2026 10:02:29 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <marmarek@invisiblethingslab.com>) id 1wA3GO-0008Fa-Qi
 for xen-devel@lists.xenproject.org; Tue, 07 Apr 2026 10:02:29 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wA3GN-001uYO-TJ
 for xen-devel@lists.xenproject.org; Tue, 07 Apr 2026 12:02:28 +0200
Received: from [10.42.69.4] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <marmarek@invisiblethingslab.com>)
 id 69d4d62c-2eae-0a2a0a5409dd-0a2a45049c22-14
 for <xen-devel@lists.xenproject.org>; Tue, 07 Apr 2026 12:02:27 +0200
Received: from [103.168.172.150] (helo=fout-a7-smtp.messagingengine.com)
 by tlsNG-ebf023.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.0)
 (envelope-from <marmarek@invisiblethingslab.com>)
 id 69d4d632-bb33-0a2a45040019-67a8ac96d855-3
 for <xen-devel@lists.xenproject.org>; Tue, 07 Apr 2026 12:02:27 +0200
Received: from phl-compute-04.internal (phl-compute-04.internal [10.202.2.44])
 by mailfout.phl.internal (Postfix) with ESMTP id 1F0FCEC013B;
 Tue,  7 Apr 2026 06:02:26 -0400 (EDT)
Received: from phl-frontend-03 ([10.202.2.162])
 by phl-compute-04.internal (MEProxy); Tue, 07 Apr 2026 06:02:26 -0400
Received: by mail.messagingengine.com (Postfix) with ESMTPA; Tue,
 7 Apr 2026 06:02:25 -0400 (EDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@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=1775556145;
	 x=1775642545; bh=/hkEB4QDit0+/ygo+/HcMq1/SLyf2WzUJ0g2G5J/pc8=; b=
	GeZqvi5Oej9sMuOtkHgPmVUjgsjOY3FQdT1GybSWnhJPX+ja9nVDzFUH5NGWjhDX
	7D/uLpICiOc68nT1uCjMOMf/auSfpyzcz1Lop9A3/0+9pGa7S4r4Ypj0YeDG6or8
	Rf1i7mBfaOLE7sNWUH1TqCih7kw8Wyk8tf3k7dyTd93PAvVBFYKj2s3FPCXT4Ogw
	Ft8I7KlUtSkjlAjFlKCecwCrHRvlIGUIJEcp7gFEpykTWRnUnw3gxPl1zG7e2RWv
	jfMS120/mngvOjcWRcFO3aGyl7MUOeqVkxC7zveFghpMElPj4NTXCh1N86kTFjHB
	ka67bBvsp8JoHi2qfNsxWA==
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=
	1775556145; x=1775642545; bh=/hkEB4QDit0+/ygo+/HcMq1/SLyf2WzUJ0g
	2G5J/pc8=; b=qj4yrdHvRQ7axxDpSNTacDNouV9h1yX+H1iStHaKdlfUxEfkXMo
	7KGzpnJl5BNrxqdZkEOdw7YS/hIonHLBWr5CieHvH95FT9/UTfcNtoCkU9PIHSu8
	uuOOzxxbC30RWpVYeiAkhG52h2F+wkGGic34DlhijOogaDIVylN+1P223bYN9v+T
	JB668MemquzcfAwH0UPZvmzZRqig72/mBl1N3LrEcaxD8SEqHzNenQctqZGEgohf
	rJhd6VvK7vpbefGReyqJtyt7i41Ww33S/MbDN8Nf1dlOg+xAtuhu3v+NHtuOu7mk
	vO/idebr40NZbpNOZQXdyIo4GXY4Eoxv6qg==
X-ME-Sender: <xms:MdbUaQtLkbFPtAO2VNzD9folD1eHQmjgkxLPjmE3ho6VnQbgsptSZA>
    <xme:MdbUaTd1ALUBlN-OPP02cDRsbngvST6bAAy39EAX7-iFpuVOPj6ez-ByPhtMCX_ls
    AwmQwYOtSwQlCwc9S_d_YaWTJhUfbKGCb2sEejaJkESczMj>
X-ME-Received: <xmr:MdbUaZZIfm_0fi_UyRiyuwmTNvXzK_0T250JzUuaXCmOWvidM4cK2xhruK-HgvT4Jy7-dZ_Fv69_H2_zr0F25I2QcHsK_Pqf0FQ>
X-ME-Proxy-Cause: gggruggvucftvghtrhhoucdtuddrgeefhedrtddtgddvtdefhecutefuodetggdotefrod
    ftvfcurfhrohhfihhlvgemucfhrghsthforghilhdpuffrtefokffrpgfnqfghnecuuegr
    ihhlohhuthemuceftddtnecusecvtfgvtghiphhivghnthhsucdlqddutddtmdenucfjug
    hrpeffhffvvefukfhfgggtuggjsehgtderredttdejnecuhfhrohhmpeforghrvghkucfo
    rghrtgiihihkohifshhkihdqifpkrhgvtghkihcuoehmrghrmhgrrhgvkhesihhnvhhish
    hisghlvghthhhinhhgshhlrggsrdgtohhmqeenucggtffrrghtthgvrhhnpefgudelteef
    vefhfeehieetleeihfejhfeludevteetkeevtedtvdegueetfeejudenucevlhhushhtvg
    hrufhiiigvpedtnecurfgrrhgrmhepmhgrihhlfhhrohhmpehmrghrmhgrrhgvkhesihhn
    vhhishhisghlvghthhhinhhgshhlrggsrdgtohhmpdhnsggprhgtphhtthhopedvpdhmoh
    guvgepshhmthhpohhuthdprhgtphhtthhopehjsggvuhhlihgthhesshhushgvrdgtohhm
    pdhrtghpthhtohepgigvnhdquggvvhgvlheslhhishhtshdrgigvnhhprhhojhgvtghtrd
    horhhg
X-ME-Proxy: <xmx:MdbUaeX0HRSRH_6w8AdL4x_whzmpDIN_orWI9sW1_8jCYn5opiG8Gg>
    <xmx:MdbUaTiBqb0nLpf8UMqVFQvTg8BgmR35SWeQH4em6bs6FSPapj5d0w>
    <xmx:MdbUaUVAfFhKRfU0-8XxTCvH_PjvAgpB8eiO9aDSVUcmx8pdux-mdQ>
    <xmx:MdbUaSMO1j-77ZdhOYSIuEP8c4KAMz_VSaYdUDr834w8yTTGpLbgjw>
    <xmx:MdbUafATiguZ2iH6nXyAkSXoURRW15UA2ImfCEOnk4gbzkdmqhmYDe1_>
Feedback-ID: i1568416f:Fastmail
Date: Tue, 7 Apr 2026 12:02:23 +0200
From: Marek =?utf-8?Q?Marczykowski-G=C3=B3recki?= <marmarek@invisiblethingslab.com>
To: Jan Beulich <jbeulich@suse.com>
Cc: xen-devel <xen-devel@lists.xenproject.org>
Subject: Re: IOMMU faults after S3
Message-ID: <adTWL3mKyz8kxOgq@mail-itl>
References: <ac2nibFfvGm_7elv@mail-itl>
 <933a3e95-33d2-4e20-a4d5-2d8b20c2da7f@suse.com>
 <ac4kCq87SQSc6ddV@mail-itl>
 <aa6910f1-365a-4534-b229-9730b3aede02@suse.com>
 <ac44SVW1cPhKYFKU@mail-itl>
 <2caff339-4ce9-42ea-9b78-afeac42b6f0f@suse.com>
 <ac6Bg21hMLBRDNdm@mail-itl>
 <92e0151b-3fb1-4108-9788-f0fbac43512b@suse.com>
 <ac72dp3yEHikJzw2@mail-itl>
 <47b140b2-596b-47db-9c0c-43672f445036@suse.com>
MIME-Version: 1.0
Content-Type: multipart/signed; micalg=pgp-sha256;
	protocol="application/pgp-signature"; boundary="OHzTrA9J+n9/U7Mb"
Content-Disposition: inline
In-Reply-To: <47b140b2-596b-47db-9c0c-43672f445036@suse.com>
X-purgate-ID: tlsNG-ebf023/1775556147-3052B51B-079D0E49/0/0
X-purgate-type: clean
X-purgate-size: 9550


--OHzTrA9J+n9/U7Mb
Content-Type: text/plain; protected-headers=v1; charset=utf-8
Content-Disposition: inline
Content-Transfer-Encoding: quoted-printable
Date: Tue, 7 Apr 2026 12:02:23 +0200
From: Marek =?utf-8?Q?Marczykowski-G=C3=B3recki?= <marmarek@invisiblethingslab.com>
To: Jan Beulich <jbeulich@suse.com>
Cc: xen-devel <xen-devel@lists.xenproject.org>
Subject: Re: IOMMU faults after S3

On Tue, Apr 07, 2026 at 08:29:48AM +0200, Jan Beulich wrote:
> On 03.04.2026 01:06, Marek Marczykowski-G=C3=B3recki wrote:
> > On Thu, Apr 02, 2026 at 04:53:31PM +0200, Jan Beulich wrote:
> >> On 02.04.2026 16:47, Marek Marczykowski-G=C3=B3recki wrote:
> >>> On Thu, Apr 02, 2026 at 12:48:14PM +0200, Jan Beulich wrote:
> >>>> On 02.04.2026 11:35, Marek Marczykowski-G=C3=B3recki wrote:
> >>>>> On Thu, Apr 02, 2026 at 10:39:41AM +0200, Jan Beulich wrote:
> >>>>>> On 02.04.2026 10:08, Marek Marczykowski-G=C3=B3recki wrote:
> >>>>>>> The xl dmesg output (from MTL this time):
> >>>>>>>
> >>>>>>>     (XEN) [  123.477511] Entering ACPI S3 state.
> >>>>>>>     (XEN) [18446743903.571842] _disable_pit_irq:2649: using_pit: =
0, cpu_has_apic: 1
> >>>>>>>     (XEN) [18446743903.571856] _disable_pit_irq:2659: cpuidle_usi=
ng_deep_cstate: 1, boot_cpu_has(X86_FEATURE_XEN_ARAT): 0
> >>>>>
> >>>>>> Hmm, but what you didn't log is whether __hpet_setup_msi_irq() act=
ually
> >>>>>> succeeded everywhere. (And if it did, also logging HPET_Tn_ROUTE()=
 values
> >>>>>> might be a good idea, if only to double check.)
> >>>>>
> >>>>> Updated output:
> >>>>>
> >>>>>     (XEN) [18446743899.720395] _disable_pit_irq:2649: using_pit: 0,=
 cpu_has_apic: 1
> >>>>>     (XEN) [18446743899.720409] _disable_pit_irq:2659: cpuidle_using=
_deep_cstate: 1, boot_cpu_has(X86_FEATURE_XEN_ARAT): 0
> >>>>>     (XEN) [18446743899.720420] _disable_pit_irq:2662: init: 0
> >>>>>     (XEN) [18446743899.720431] hpet_broadcast_resume:663: hpet_even=
ts: ffff83046bc1f080
> >>>>>     (XEN) [18446743899.720579] hpet_broadcast_resume:674: num_hpets=
_used: 8
> >>>>>     (XEN) [18446743899.720587] hpet_broadcast_resume:692: cfg: 0x1
> >>>>>     (XEN) [18446743899.720599] hpet_broadcast_resume:697: i:0, hpet=
_events[i].msi.irq: 122, hpet_events[i].flags: 0
> >>>>>     (XEN) [18446743899.720612] hpet_msi_write:283: iommu_intremap: =
2 (iommu_intremap_off: 0), HPET_Tn_ROUTE(ch->idx): 0x110
> >>>>>     (XEN) [18446743899.720638] hpet_msi_write:287: iommu_update_ire=
_from_msi rc: 0
> >>>>
> >>>> So it succeeds, and the low half of HPET_Tn_ROUTE also looks plausib=
le. The high
> >>>> half is, however, the address that the low half value is written to.=
 It's hard
> >>>> to imagine that it would be zero when the low half isn't, but it is =
about the
> >>>> last thing I can think of which could explain observed behavior. (Ye=
t then, all
> >>>> of this is pretty meaningless; see below.)
> >>>>
> >>>>> And the current debug diff attached.
> >>>>
> >>>> Hmm, you log HPET_Tn_ROUTE _before_ our update. That's not very usef=
ul. You want
> >>>> to move that part of logging to the bottom of hpet_msi_write(), or m=
aybe to
> >>>> where you also log the per-channel cfg value in hpet_broadcast_resum=
e() (thus
> >>>> making the logging overall less verbose).
> >>>
> >>> This test is with the updated patch (attached) + your extra
> >>> calculate_host_policy() call and "no-arat" on cmdline:
> >>
> >> And IOMMU faults still occurring as before, I expect.
> >>
> >> Sadly you now log the low halves of HPET_Tn_ROUTE twice, while you don=
't log
> >> the high halves at all.
> >=20
> > I was missing hpet_read32 there...
> >=20
> > Updated:
> > (XEN) [  116.921573] Entering ACPI S3 state.
> > (XEN) [18446743895.088893] _disable_pit_irq:2649: using_pit: 0, cpu_has=
_apic: 1
> > (XEN) [18446743895.088907] _disable_pit_irq:2659: cpuidle_using_deep_cs=
tate: 1, boot_cpu_has(X86_FEATURE_XEN_ARAT): 0
> > (XEN) [18446743895.088918] _disable_pit_irq:2662: init: 0
> > (XEN) [18446743895.088928] hpet_broadcast_resume:662: hpet_events: ffff=
83046bc1f080
> > (XEN) [18446743895.089072] hpet_broadcast_resume:673: num_hpets_used: 8
> > (XEN) [18446743895.089081] hpet_broadcast_resume:691: cfg: 0x1
> > (XEN) [18446743895.089092] hpet_broadcast_resume:696: i:0, hpet_events[=
i].msi.irq: 122, hpet_events[i].flags: 0
> > (XEN) [18446743895.089122] hpet_msi_write:286: iommu_update_ire_from_ms=
i rc: 0
> > (XEN) [18446743895.089132] hpet_broadcast_resume:700: i:0, __hpet_setup=
_msi_irq ret: 0
> > (XEN) [18446743895.089168] hpet_broadcast_resume:710: i:0, cfg: 0xc134,=
 hpet_read32(HPET_Tn_ROUTE(hpet_events[i].idx)): 0, hpet_read32(HPET_Tn_ROU=
TE(hpet_events[i].idx) + 4): 0xf18
>=20
> Okay, this would appear to clarify that the address really isn't correct.=
 Yet I'm
> confused now by the low half values: In your earlier log there was
>=20
> hpet_broadcast_resume:710: i:0, cfg: 0xc134, HPET_Tn_ROUTE(hpet_events[i]=
=2Eidx): 0x110

My earlier logging included literal HPET_Tn_ROUTE() macro output, not
hpet_read32() of it...

> and alike, i.e. clearly a non-zero value. Now all low halves are zero. I'=
ll try
> to figure how the logged values here could result, but consistent data (o=
r an
> explantation for the apparent inconsistency) would help.
>=20
> Jan
>=20
> > (XEN) [18446743895.089180] hpet_broadcast_resume:696: i:1, hpet_events[=
i].msi.irq: 123, hpet_events[i].flags: 0
> > (XEN) [18446743895.089203] hpet_msi_write:286: iommu_update_ire_from_ms=
i rc: 0
> > (XEN) [18446743895.089213] hpet_broadcast_resume:700: i:1, __hpet_setup=
_msi_irq ret: 0
> > (XEN) [18446743895.089242] hpet_broadcast_resume:710: i:1, cfg: 0xc104,=
 hpet_read32(HPET_Tn_ROUTE(hpet_events[i].idx)): 0, hpet_read32(HPET_Tn_ROU=
TE(hpet_events[i].idx) + 4): 0xf38
> > (XEN) [18446743895.089254] hpet_broadcast_resume:696: i:2, hpet_events[=
i].msi.irq: 124, hpet_events[i].flags: 0
> > (XEN) [18446743895.089278] hpet_msi_write:286: iommu_update_ire_from_ms=
i rc: 0
> > (XEN) [18446743895.089288] hpet_broadcast_resume:700: i:2, __hpet_setup=
_msi_irq ret: 0
> > (XEN) [18446743895.089316] hpet_broadcast_resume:710: i:2, cfg: 0xc104,=
 hpet_read32(HPET_Tn_ROUTE(hpet_events[i].idx)): 0, hpet_read32(HPET_Tn_ROU=
TE(hpet_events[i].idx) + 4): 0xf58
> > (XEN) [18446743895.089327] hpet_broadcast_resume:696: i:3, hpet_events[=
i].msi.irq: 125, hpet_events[i].flags: 0
> > (XEN) [18446743895.089350] hpet_msi_write:286: iommu_update_ire_from_ms=
i rc: 0
> > (XEN) [18446743895.089361] hpet_broadcast_resume:700: i:3, __hpet_setup=
_msi_irq ret: 0
> > (XEN) [18446743895.089390] hpet_broadcast_resume:710: i:3, cfg: 0xc104,=
 hpet_read32(HPET_Tn_ROUTE(hpet_events[i].idx)): 0, hpet_read32(HPET_Tn_ROU=
TE(hpet_events[i].idx) + 4): 0xf78
> > (XEN) [18446743895.089401] hpet_broadcast_resume:696: i:4, hpet_events[=
i].msi.irq: 126, hpet_events[i].flags: 0
> > (XEN) [18446743895.089425] hpet_msi_write:286: iommu_update_ire_from_ms=
i rc: 0
> > (XEN) [18446743895.089436] hpet_broadcast_resume:700: i:4, __hpet_setup=
_msi_irq ret: 0
> > (XEN) [18446743895.089465] hpet_broadcast_resume:710: i:4, cfg: 0xc104,=
 hpet_read32(HPET_Tn_ROUTE(hpet_events[i].idx)): 0, hpet_read32(HPET_Tn_ROU=
TE(hpet_events[i].idx) + 4): 0xf98
> > (XEN) [18446743895.089476] hpet_broadcast_resume:696: i:5, hpet_events[=
i].msi.irq: 127, hpet_events[i].flags: 0
> > (XEN) [18446743895.089499] hpet_msi_write:286: iommu_update_ire_from_ms=
i rc: 0
> > (XEN) [18446743895.089509] hpet_broadcast_resume:700: i:5, __hpet_setup=
_msi_irq ret: 0
> > (XEN) [18446743895.089540] hpet_broadcast_resume:710: i:5, cfg: 0xc104,=
 hpet_read32(HPET_Tn_ROUTE(hpet_events[i].idx)): 0, hpet_read32(HPET_Tn_ROU=
TE(hpet_events[i].idx) + 4): 0xfb8
> > (XEN) [18446743895.089551] hpet_broadcast_resume:696: i:6, hpet_events[=
i].msi.irq: 128, hpet_events[i].flags: 0
> > (XEN) [18446743895.089574] hpet_msi_write:286: iommu_update_ire_from_ms=
i rc: 0
> > (XEN) [18446743895.089584] hpet_broadcast_resume:700: i:6, __hpet_setup=
_msi_irq ret: 0
> > (XEN) [18446743895.089622] hpet_broadcast_resume:710: i:6, cfg: 0xc104,=
 hpet_read32(HPET_Tn_ROUTE(hpet_events[i].idx)): 0, hpet_read32(HPET_Tn_ROU=
TE(hpet_events[i].idx) + 4): 0xfd8
> > (XEN) [18446743895.089633] hpet_broadcast_resume:696: i:7, hpet_events[=
i].msi.irq: 129, hpet_events[i].flags: 0
> > (XEN) [18446743895.089655] hpet_msi_write:286: iommu_update_ire_from_ms=
i rc: 0
> > (XEN) [18446743895.089665] hpet_broadcast_resume:700: i:7, __hpet_setup=
_msi_irq ret: 0
> > (XEN) [18446743895.089702] hpet_broadcast_resume:710: i:7, cfg: 0xc104,=
 hpet_read32(HPET_Tn_ROUTE(hpet_events[i].idx)): 0, hpet_read32(HPET_Tn_ROU=
TE(hpet_events[i].idx) + 4): 0xff8
> >=20
> >=20
> >=20
> >=20
>=20

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

--OHzTrA9J+n9/U7Mb
Content-Type: application/pgp-signature; name=signature.asc

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

iQEzBAEBCAAdFiEEhrpukzGPukRmQqkK24/THMrX1ywFAmnU1i8ACgkQ24/THMrX
1yxryQf/RzYcIxmcNUqvxw9i8WJ4/+g66FzP7xLQLHpt577jA3wSTbEeb2wuEQ5H
Q+y2nDehCTiHOpUcHWbkqE7HK/BnSSgxGaEgoJhxRAo41YnKSh5kRnK/ShhXs3/K
P2uhIFXcfhSK51XGj+jbsfjdCpF9iaikhUJzB1/1+uSJEpVItNvdZb2zaqDmz4Pk
dpxgrToB7jzKsYTyIJM5eSBECE7FzyCupNGvK0RgQoHwKMI9GWBPp9a54jJiI8Wk
zF/cyY/LOg/fXIMYlAql0SSmVDkuitA/cD5vV/VHEXB/KwUG41FRZa95k2OuvXvT
d8AtuahE53dL/LaiSiwtYVQh2Dc/6Q==
=GM4u
-----END PGP SIGNATURE-----

--OHzTrA9J+n9/U7Mb--


From xen-devel-bounces@lists.xenproject.org Tue Apr 07 10:04:13 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 07 Apr 2026 10:04:13 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1274787.1560777 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wA3I4-00010A-Kd; Tue, 07 Apr 2026 10:04:12 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1274787.1560777; Tue, 07 Apr 2026 10:04: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 1wA3I4-000103-Hj; Tue, 07 Apr 2026 10:04:12 +0000
Received: by outflank-mailman (input) for mailman id 1274787;
 Tue, 07 Apr 2026 10:04:10 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <marmarek@invisiblethingslab.com>) id 1wA3I2-0000zx-Pq
 for xen-devel@lists.xenproject.org; Tue, 07 Apr 2026 10:04:10 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wA3I2-004oas-5L
 for xen-devel@lists.xenproject.org; Tue, 07 Apr 2026 12:04:10 +0200
Received: from [10.42.69.12] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <marmarek@invisiblethingslab.com>)
 id 69d4d699-5cb7-0a2a0a5109dd-0a2a450cede4-2
 for <xen-devel@lists.xenproject.org>; Tue, 07 Apr 2026 12:04:10 +0200
Received: from [103.168.172.152] (helo=fhigh-a1-smtp.messagingengine.com)
 by tlsNG-d25034.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.0)
 (envelope-from <marmarek@invisiblethingslab.com>)
 id 69d4d699-f40c-0a2a450c0019-67a8ac989a81-3
 for <xen-devel@lists.xenproject.org>; Tue, 07 Apr 2026 12:04:10 +0200
Received: from phl-compute-01.internal (phl-compute-01.internal [10.202.2.41])
 by mailfhigh.phl.internal (Postfix) with ESMTP id F24ED1400034;
 Tue,  7 Apr 2026 06:04:08 -0400 (EDT)
Received: from phl-frontend-03 ([10.202.2.162])
 by phl-compute-01.internal (MEProxy); Tue, 07 Apr 2026 06:04:08 -0400
Received: by mail.messagingengine.com (Postfix) with ESMTPA; Tue,
 7 Apr 2026 06:04:07 -0400 (EDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@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=1775556248;
	 x=1775642648; bh=Nh4qJ5MqF9xl0Ctu8zGw5G2TJN1cNUVOeabiaHX1EFI=; b=
	htR/Ijjpdv2NrFKA+fYLwqeaSa1HMYk6RCuvcPCDxj7kzuc/ApZc54umjOVGwkOA
	3HZ4O6btShbhpjeygIVFVHft8fVQ4ErYRsl44uQk9Cv4XY0jQEddAhmuxfCio1CM
	D5OOqXH1iN50IDse2jyCg3Uf5gWR0NMfytSBM2sJMWcDMebkkPN4ONVbL8ywrIag
	rs3jti4P55meLHFSNm0gST0ifk49Mahm0Vn7mtQLwWviEvS75C8QnNHS8NIpWtrt
	zBwk3h4DdMFoJSHALM6AgcW5tFpyvTA1V4dwn0GTLLSqvNxHZViN+k0CHxzrVjON
	92T/s3sh9zONwTs0c3hjLw==
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=
	1775556248; x=1775642648; bh=Nh4qJ5MqF9xl0Ctu8zGw5G2TJN1cNUVOeab
	iaHX1EFI=; b=CvJTKSz1NgekoDbnQ/ctFw+G1poOegr3mHFEl7FyC8zSictISav
	bweNdtit55oAQ5PjzT9yKzyGTTjT1q+xQ+oFLGq6m5dxOMGCu3Wq6QFwjUNr09Dj
	+1FBBLRBeDVrUFPQhQjzGvPqmBMDSFSfoXDpGDbJw4VuWSs+RkMoHtrgIwqOvmmi
	C831Ll9NL7Fn+5cnWfBFXvPhkTtak9nyW9bysw35dBwnH7b42WPvi25gf2A3v/cg
	cn0Yho2qqOGUbDThyjkZqZgImfLRAkpq3A8D5mOobOwTa9Q8OM32G8cNpArhiidq
	fSWkAOfVNTaKesPRGwgvOsTJU1drjpzy+2A==
X-ME-Sender: <xms:mNbUaYZ8dmf3O0-GzAmSPNnGHbv_0siX7eoXIV-5ogsO4pIbaABC0g>
    <xme:mNbUaaYpCuR4u7lokhSQMwuJxO3vsC6QeF_BNDX4UoHB9eUFsFeIj4kn8JiEWrL5A
    oUnIbOJjdKeeeKpnNOOg_ofaRKnDXvJ-mihH_quRy3kIsiw>
X-ME-Received: <xmr:mNbUaX_tsADuyTc74BdajrX-KitG822qKr4cZYLNibg8XHIJQr87LKSohRrHgXlr9_OYpTf3izDsKzNVirKDuu7llhKvRez-qz0>
X-ME-Proxy-Cause: gggruggvucftvghtrhhoucdtuddrgeefhedrtddtgddvtdefhecutefuodetggdotefrod
    ftvfcurfhrohhfihhlvgemucfhrghsthforghilhdpuffrtefokffrpgfnqfghnecuuegr
    ihhlohhuthemuceftddtnecusecvtfgvtghiphhivghnthhsucdlqddutddtmdenucfjug
    hrpeffhffvvefukfhfgggtuggjsehgtderredttdejnecuhfhrohhmpeforghrvghkucfo
    rghrtgiihihkohifshhkihcuoehmrghrmhgrrhgvkhesihhnvhhishhisghlvghthhhinh
    hgshhlrggsrdgtohhmqeenucggtffrrghtthgvrhhnpefgkedutdffteethfeiueehffek
    ueffledvffdutdetteeltdevkeefkeelheejgfenucevlhhushhtvghrufhiiigvpedtne
    curfgrrhgrmhepmhgrihhlfhhrohhmpehmrghrmhgrrhgvkhesihhnvhhishhisghlvght
    hhhinhhgshhlrggsrdgtohhmpdhnsggprhgtphhtthhopeegpdhmohguvgepshhmthhpoh
    huthdprhgtphhtthhopehjsggvuhhlihgthhesshhushgvrdgtohhmpdhrtghpthhtohep
    gigvnhdquggvvhgvlheslhhishhtshdrgigvnhhprhhojhgvtghtrdhorhhgpdhrtghpth
    htoheprghnughrvgifrdgtohhophgvrhefsegtihhtrhhigidrtghomhdprhgtphhtthho
    pehrohhgvghrrdhprghusegtihhtrhhigidrtghomh
X-ME-Proxy: <xmx:mNbUaRhH6SzNiRN8R-ttnS_RYPjwDKaP_fM1bqa4P9M6advtgV5fYg>
    <xmx:mNbUafcKlLz1hGCoNvxlf4ONTPvIKvNUmhQj6GE3gOXS_42qcsincQ>
    <xmx:mNbUaQrjLOnSrBkniXaFJxPop3LeOu3fgKbOq86_0R_ZSzFRfMwYPQ>
    <xmx:mNbUacC6Oh0Ijc99VnkpT2ExXCTh6sTDR_li1LUUsZ_unx4kVzunRw>
    <xmx:mNbUaVViZb-A6QFaYh6H9Oc4p9ARmQEuSU4dhfsUbiphtKeB_JgBVV2w>
Feedback-ID: i1568416f:Fastmail
Date: Tue, 7 Apr 2026 12:04:05 +0200
From: Marek Marczykowski <marmarek@invisiblethingslab.com>
To: Jan Beulich <jbeulich@suse.com>
Cc: "xen-devel@lists.xenproject.org" <xen-devel@lists.xenproject.org>,
	Andrew Cooper <andrew.cooper3@citrix.com>,
	Roger Pau =?utf-8?B?TW9ubsOp?= <roger.pau@citrix.com>
Subject: Re: [PATCH] x86/cpu-policy: set up host policy earlier
Message-ID: <adTWlb-6VDl1BY51@mail-itl>
References: <6dccae5f-fe09-4f35-9e4a-7a38fb21e8d1@suse.com>
MIME-Version: 1.0
Content-Type: multipart/signed; micalg=pgp-sha256;
	protocol="application/pgp-signature"; boundary="cjd2LFgO4eOZHcdQ"
Content-Disposition: inline
In-Reply-To: <6dccae5f-fe09-4f35-9e4a-7a38fb21e8d1@suse.com>
X-purgate-ID: tlsNG-d25034/1775556250-81557A3D-F6E7FC3D/0/0
X-purgate-type: clean
X-purgate-size: 3613


--cjd2LFgO4eOZHcdQ
Content-Type: text/plain; protected-headers=v1; charset=utf-8
Content-Disposition: inline
Content-Transfer-Encoding: quoted-printable
Date: Tue, 7 Apr 2026 12:04:05 +0200
From: Marek Marczykowski <marmarek@invisiblethingslab.com>
To: Jan Beulich <jbeulich@suse.com>
Cc: "xen-devel@lists.xenproject.org" <xen-devel@lists.xenproject.org>,
	Andrew Cooper <andrew.cooper3@citrix.com>,
	Roger Pau =?utf-8?B?TW9ubsOp?= <roger.pau@citrix.com>
Subject: Re: [PATCH] x86/cpu-policy: set up host policy earlier

On Tue, Apr 07, 2026 at 08:46:39AM +0200, Jan Beulich wrote:
> In order to use cpu_has_* expanding to host_cpu_policy.*, the host policy
> needs setting up alongside boot_cpu_data.x86_capability[]. Arrange for
> that towards the end of identify_cpu().
>=20
> Fixes: 894bd7617924 ("x86/Intel: use host CPU policy for ARAT checking")
> Reported-by: Marek Marczykowski-G=C3=B3recki <marmarek@invisiblethingslab=
=2Ecom>
> Signed-off-by: Jan Beulich <jbeulich@suse.com>

Tested-by: Marek Marczykowski-G=C3=B3recki <marmarek@invisiblethingslab.com>

> ---
> In the longer run we may need to (also) update the host policy from
> setup_{force,clear}_cpu_cap().
>=20
> This really was part of one of the XSTATE cleanup patches at the head of
> the AMX series. This explains the specific placement ahead of the call to
> xstate_init()). Likely anything from there downwards shouldn't really
> live in identify_cpu() anyway.
>=20
> --- a/xen/arch/x86/cpu/common.c
> +++ b/xen/arch/x86/cpu/common.c
> @@ -586,6 +586,8 @@ void identify_cpu(struct cpuinfo_x86 *c)
>  	}
> =20
>  	/* Now the feature flags better reflect actual CPU features! */
> +	if (c =3D=3D &boot_cpu_data)
> +		calculate_host_policy();
> =20
>  	xstate_init(c);
> =20
> --- a/xen/arch/x86/cpu-policy.c
> +++ b/xen/arch/x86/cpu-policy.c
> @@ -359,7 +359,7 @@ void calculate_raw_cpu_policy(void)
>      /* Was already added by probe_cpuid_faulting() */
>  }
> =20
> -static void __init calculate_host_policy(void)
> +void __init calculate_host_policy(void)
>  {
>      struct cpu_policy *p =3D &host_cpu_policy;
>      unsigned int max_extd_leaf;
> @@ -904,6 +904,7 @@ static void __init calculate_hvm_def_pol
> =20
>  void __init init_guest_cpu_policies(void)
>  {
> +    /* Do this a 2nd time to account for setup_{clear,force}_cpu_cap() u=
ses. */
>      calculate_host_policy();
> =20
>      if ( IS_ENABLED(CONFIG_PV) )
> --- a/xen/arch/x86/include/asm/cpu-policy.h
> +++ b/xen/arch/x86/include/asm/cpu-policy.h
> @@ -30,4 +30,10 @@ void recalculate_cpuid_policy(struct dom
>   */
>  void calculate_raw_cpu_policy(void);
> =20
> +/*
> + * Collect the host CPU policy.  Called after collecting enough CPUID ou=
tput,
> + * and again after all feature overrides have been put in place.
> + */
> +void calculate_host_policy(void);
> +
>  #endif /* X86_CPU_POLICY_H */

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

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

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

iQEzBAEBCAAdFiEEhrpukzGPukRmQqkK24/THMrX1ywFAmnU1pUACgkQ24/THMrX
1yyRNwf5AaCNJWlZelP3p1Zxxjnvpi55wsCFEkSrysaDmsxbUr+X7cNNEPo9mv/p
g4f4OzfIuHPj7CRdJmBFaJhi2xD/dwjZ7c+3o5yDUVF6nBJi87NQouCARg3nEobF
Te3QbhCI72hDOfei6W2KIydS3EEWJDBRYCjvvIj7Ol0JuF4vGcckQBi9EFJ3txZp
wiXnBvw1mAVL1NTNrcN+geaUeksthzA9TVlPx4ZxX4pVzv8R8/GKwI1s4xlLuqQA
JWeU8Ggy8SuESpvxsQ54ivntWx7da2Z3y4++y47bs4p8qXjEooNLtzEPPDhgPVOO
rlHtqaNELadnG5C0iovEUF+xg/p07g==
=kwlA
-----END PGP SIGNATURE-----

--cjd2LFgO4eOZHcdQ--


From xen-devel-bounces@lists.xenproject.org Tue Apr 07 10:04:15 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 07 Apr 2026 10:04:15 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1274788.1560786 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wA3I7-0001ED-0E; Tue, 07 Apr 2026 10:04:15 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1274788.1560786; Tue, 07 Apr 2026 10:04: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 1wA3I6-0001E6-Tk; Tue, 07 Apr 2026 10:04:14 +0000
Received: by outflank-mailman (input) for mailman id 1274788;
 Tue, 07 Apr 2026 10:04: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 1wA3I5-0001DK-OD
 for xen-devel@lists.xenproject.org; Tue, 07 Apr 2026 10:04:13 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wA3I5-001ACJ-3f
 for xen-devel@lists.xenproject.org; Tue, 07 Apr 2026 12:04:13 +0200
Received: from [10.42.69.5] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <andrew.cooper@citrix.com>)
 id 69d4d697-2eae-0a2a0a5409dd-0a2a4505d2a0-34
 for <xen-devel@lists.xenproject.org>; Tue, 07 Apr 2026 12:04:13 +0200
Received: from [52.101.48.15]
 (helo=MW6PR02CU001.outbound.protection.outlook.com)
 by tlsNG-c201ff.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.0)
 (envelope-from <andrew.cooper@citrix.com>)
 id 69d4d69a-3760-0a2a45050019-3465300f749a-3
 for <xen-devel@lists.xenproject.org>; Tue, 07 Apr 2026 12:04:12 +0200
Received: from CH8PR03MB8275.namprd03.prod.outlook.com (2603:10b6:610:2b9::7)
 by PH7PR03MB7133.namprd03.prod.outlook.com (2603:10b6:510:2b6::15)
 with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9769.20; Tue, 7 Apr
 2026 10:04:03 +0000
Received: from CH8PR03MB8275.namprd03.prod.outlook.com
 ([fe80::a70d:dc32:bba8:ce37]) by CH8PR03MB8275.namprd03.prod.outlook.com
 ([fe80::a70d:dc32:bba8:ce37%6]) with mapi id 15.20.9769.018; Tue, 7 Apr 2026
 10:04:03 +0000
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@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=fJi44973kh7rni6tp+NpNZJmWkx0Vxw+LMLUqDdnrB1rAmPT6oVmjO+Vy4T3rvn90NA5ZoiimTORLXJgbdrJpvAJZxXH4dnBqel9QQZkLaF5/gSxvan0KK4Hr/jfjadrU1V7CcagDmfrFJ4/mO6QqmeEPI+M+/SVQpFNxOKAm2gUQhsusLY/3OYCfDC7a0R6Z/tomi84kWdwdF93pXAxLYi/1wXmzjUH7teZwVifS5OKAAJsq5rsXMTkQDYUp7oK8+zonazUokUD8DabOCGnOroqlMldVO9c/g8f/xF8EYtucl4Jsdgnc2pYeAEDDgSANQDr0YdoaK/1cME1Nwb4vg==
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com;
 s=arcselector10001;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1;
 bh=Z7T8hHk1Lbv1tOM0HJV8Q4BYS1ZDiC5/oa/yiFSRvxk=;
 b=FiqWJ+O1pvcgrsFU7wI90VLC2VyOeSn9MyWEBZUGquQRsxgdXTAlI6CWuBLgAA+VypjXcK6DvD6DXoaj4jcy6h3WBaaESU8sjCeDxVPSh/w+PlSNxOrA5bJWidr+IhyW7jZVTIFFd03sWvhC78KmyOUZ795QysKKKZsSurdhnatA/EMCDuICVbF7g66YrJDjB/Uk6ArCit0/PA5LJtQi3C3z5hmG+0Wgnp/WdAwh6EXQCQjbD7eq+5bIryS9CErC9GFeuQAK6g2tHjjwvZEMsDyUDofC81q2TFDhCip+LEMFh0ltRWyj9klXiLhiGkwyezt0806IWczzQmgQjnNGVg==
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=Z7T8hHk1Lbv1tOM0HJV8Q4BYS1ZDiC5/oa/yiFSRvxk=;
 b=RSr0DYKq4bTXSDR1ohKhxyzZO5p7Ts7mvlJTw692fN36QHUrXYHEshmhSSksCchNpPBXnef18wsP2k/uwPN2T5cJVNwLwp1KUmmaedYOg32Vehd31AQughtXY59EMV08tBe42zo3WryZaHnNG+IisOBsSDAoYKAsxoEVHHKjfMM=
Authentication-Results: dkim=none (message not signed)
 header.d=none;dmarc=none action=none header.from=citrix.com;
Message-ID: <89973687-51e2-4ea7-bb8a-091d3b811942@citrix.com>
Date: Tue, 7 Apr 2026 11:03:59 +0100
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>, =?UTF-8?Q?Roger_Pau_Monn=C3=A9?=
 <roger.pau@citrix.com>, Kamil Frankowicz <kamil.frankowicz@cert.pl>
Subject: Re: [PATCH 5/5] video/vesa: harden font height parsing
To: Jan Beulich <jbeulich@suse.com>,
 "xen-devel@lists.xenproject.org" <xen-devel@lists.xenproject.org>
References: <63284ab7-8e38-4448-a789-1b9c23c4d95c@suse.com>
 <5e8b4faa-5540-4406-8706-d546e3d2c46b@suse.com>
Content-Language: en-GB
From: Andrew Cooper <andrew.cooper3@citrix.com>
In-Reply-To: <5e8b4faa-5540-4406-8706-d546e3d2c46b@suse.com>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 7bit
X-ClientProxiedBy: LO2P265CA0495.GBRP265.PROD.OUTLOOK.COM
 (2603:10a6:600:13a::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_|PH7PR03MB7133:EE_
X-MS-Office365-Filtering-Correlation-Id: 1013cccc-ef2b-415f-fbf6-08de948cff72
X-MS-Exchange-SenderADCheck: 1
X-MS-Exchange-AntiSpam-Relay: 0
X-Microsoft-Antispam:
	BCL:0;ARA:13230040|366016|1800799024|376014|22082099003|56012099003|18002099003;
X-Microsoft-Antispam-Message-Info:
	tCtvYOLfI8osyxc9YRo7ikcT+8C1/K5GdWcBHti3y3NpPuQckLhhNmQ3gKHsGiHyhARCtnF7lWpO67Ljt46nW9XnVyrZzrzjZ8NrDRNuNJ5OljBcKU3IskOkZnftLcP8tOMqQ7Drx8h8d1Vlt1/wWld3r6xgQQSngwXX8Bixum2R7tnHdKqkOCbdjHNVUuY9w2GDIWpHEXDJkU8SMhUmQFz2JGqY2RMMn+iQoB0xzSLY9G2SfetxjpmddTBQ0J1SX53aY3BrMv6lz2eoxOAoridpsfJUmMziBfZYQXFZiBtxkWwaVnTAzU/1ygebIN/XnER3pF6BdLKl6mAuhDIrr/Dk8PeY6YrPLPS6v0ZQVPER5+PJClc2RdOR5Ujh+KK3zB1N2dinDVVeH2zq3u6wOv0enUtBlTpc+zzfmIB15UREl+TIazeodlb6kANdxbiVMN7n7YGWLrKLHIZuGaY0is9Bg6Z2mtG6USmaL/tHJcJNTDtw75lrYVP03e4cRSlqjBD7wPRDH5v1Z4z5f5rNxfDG9+iNZqvRecujLZYJsg4O2hlQ5aS+BcqEvex72dMv/WdtjiNkVV7lTtLnfNZudWMjEvLAxdeA6gOLWErYKYCXAmD6G0E2QLzlv4YNcJ8Fi9LXOUcekmKT/biL2MQoTByHJOeN1fuverJxv5me7AuUSb16t/AgMqwfk1rAoWVQMxhKom13JAQPU+OHJoRKjM6JZVn/NwOPvF1Vgp1KNbc=
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)(22082099003)(56012099003)(18002099003);DIR:OUT;SFP:1101;
X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1
X-MS-Exchange-AntiSpam-MessageData-0:
	=?utf-8?B?eVRUTDFhRTd4M1BrTTFnYXZxZDZ2YUlqREZQa2R2dmREMlFmTVBXMFZiRlBT?=
 =?utf-8?B?c212bWxBK0NFT29uZzR5VXNFdWdtSWZSeVBDc2IyQllpbjFWNGFMd3JEaWgz?=
 =?utf-8?B?b0thUXFqbG4vQ05ZTGhnVFZkVHZ0NjdLRjVJZmg5ZWJLbTlUTjJYMzFFT1dw?=
 =?utf-8?B?TGZWb2hpWU5lVUgyM1JNbGwwNWxGampCN1RMRjc2OVZRNkJOUEZqYmROVnNJ?=
 =?utf-8?B?NEcxRWU4eUJZT0w1UEtSTTVNL1JJSzhVMnJKeU5oU3Q1WWVYbEEwWXN2cm9v?=
 =?utf-8?B?czNmSlFZTFh4TjFkbjRPWFZkb0U3anV2SkRtOThMbTkzTTZZWDREQ00ydmpR?=
 =?utf-8?B?ODUwK1IvRXRabHBYVFlqSGd6Z0lieGJZbWU2dURTSnk0Q2c4MkF4dDBNVFdI?=
 =?utf-8?B?SUJWQUF5V1kyK3Z2RzVWSUh1cWIySUswRkdHdXAvTVdZSGM4bDlIa2lLb2lX?=
 =?utf-8?B?TDJuc0V6S3hlMEFjNjRicmxIS2RCanl3YVZGMXRwTm40dktqTGp6eFIybGlh?=
 =?utf-8?B?NWVYYlNoYllCM3RxOTAvSmFjWVNRMWxqUXp0eS9qb2Vic1ZPdkErKzVPeVdq?=
 =?utf-8?B?ZVNlRkZlbGlpTkNWcFFrcG9LTGNDTTExc2o0dlZqL2cvWFRsT3A4Rlh3cnk2?=
 =?utf-8?B?eWlIb0FkOEprRTZuRW95UXB2bVZJN01nbkNTVGpLZS9SN3BSK1NlV0t0VlhP?=
 =?utf-8?B?bDlEQ2FKdXZuNzlXYlIvRmRpMUhHdHc4bWkrMFRqYXZIZ0wrU0tSblg4bzNk?=
 =?utf-8?B?SlluNXQwSXIzR0NGRmNsQkw1N3dwa1hwT2Y4QjNBNDJlWnp2QmlZRjN0ejFq?=
 =?utf-8?B?bDE4Y3BvODh4MnhTYjkyMFR5VTJBSGpCdWVydUFTemtQeVdyNlFjeHBaWTIv?=
 =?utf-8?B?WHp0alcwWCtOOEd0Q0ZTVG9WK0tJRURETkl5VGs4NHJweHFPZXRkRVBCdzI2?=
 =?utf-8?B?VXlmS21sRXBtdU0yZ0tOVzZidjJ5K2w3ajY1SkN6a05EcVp6YUlNVG9PcUJh?=
 =?utf-8?B?bm00STF0aGpjQUR1M0cvOUVmZzh6Y0JUVWJ1U2xBY2IxclZqY2Y2anZYNEo0?=
 =?utf-8?B?ZUpMM0ZJMWNxWkdabEp5eW9ON0xRbnczWTlVUmN4dXU2UkJRcEtDRXMwNTFY?=
 =?utf-8?B?by9HdDA3bTRkSXAzc0VoR0dVR01nQTBQUDRValJjWHViZ0NvSXVGMUxNSXdk?=
 =?utf-8?B?aWR6dVdRbVB0UEgvR1ZaNnpGb2VMSUJpTmNwb2h4T2ZLUEN1RU5CeERyRTRC?=
 =?utf-8?B?Zm9ha2pFZXU0TFlzbEgwSG9zSURXRzJyNHY1YSttMGl4aW4veHZWY1ZQdDZq?=
 =?utf-8?B?c1gxRjNvK2V2bGZqUTJvQ2ZnMjBzYmpHenpwSHp0NWU4OWFvenI0Qnd6a0px?=
 =?utf-8?B?ZG5PVkJ0R0dQN01RbXZJZTQzbUl2SFRDV1JxL1R4RFphVmNSWnBaZHduaEJP?=
 =?utf-8?B?Tk1zbHNkajdmWllJb3owR0d4bmVzVS93ZlltanFlSk9UcnRYMkNUT3hROE5q?=
 =?utf-8?B?MFk1UXJQMFEyL0xIQXh0UzFXYTdQVjREczBtclNtWDRVRy9GdlA2QW9XN00r?=
 =?utf-8?B?a2pxYlRkMGZZbU9abzVLaE9iK0ZjREtFSW14ZnA1TEc1blZUd2cwSUxFdEpB?=
 =?utf-8?B?dmZGQTMxejJrNkhKWU15MU1qRFhoRDV1MEZWK0x4cVNoQTBMYjBJODRTdEt2?=
 =?utf-8?B?a0lkYnpka1ZZbzZXbGxVZU81RHJLZi9SaHRhcnRwOENvbjJIZ0w5eWswWE5W?=
 =?utf-8?B?RHBoWThrM0ExS1ZuZVRsd0Q0V2FzbXdMaSs3TE1paXN3TUZZaWl5b1JST1Ja?=
 =?utf-8?B?VmVPakFUeHR5RGlKSG9CbHVMbzhPbjk5aGRhTTZWSVRFKzhQWmRZU296MHpv?=
 =?utf-8?B?UjY2Y1lsaU81cUNRV2V5Sk9MSkZxV3FhUlhpeVN6NmtGVEFZT1UwOHI4aFAw?=
 =?utf-8?B?SnJoVEVFM2Z3aW9hbXJmaGF5SUpjbFljdm0zclRBTHhkWXpZdHhNSGNScEpN?=
 =?utf-8?B?aTdLZStDVTR1Um0xMGo4RjYxN1hicGwvM05iYXhoY2xFdk5oU1BoMTZuaHpy?=
 =?utf-8?B?TlAwM1AzZUZzeUxqbWdQMWtpeFQ0NFNKYXkvTmNOcU1hR1Jwc0lDUTVXYURL?=
 =?utf-8?B?eno2Y3FqSXJiZ3pZUUI5NGp0a2J5elkxUHF2SU1iWmxxOGc4dGU3b2ExNUlT?=
 =?utf-8?B?WGFuZFlYTXU1RUhsN2w4czBia3dpZVFzelpid0dZYk9ta1l3ekxtSHJCVXdm?=
 =?utf-8?B?UC93QWR0WjdGU0Y4VjJrQW4rWWd6d0ExRHJHRkdXR0NEc1BaUDBxQVVNYmV4?=
 =?utf-8?B?U3Y1QUh3ejdWZnZUSGVhWitBU0JZL2Zkb1MyeS9MaDdvT1VwejZxZFdueFJs?=
 =?utf-8?Q?YA58Rr+urvn7RJ2Q=3D?=
X-OriginatorOrg: citrix.com
X-MS-Exchange-CrossTenant-Network-Message-Id: 1013cccc-ef2b-415f-fbf6-08de948cff72
X-MS-Exchange-CrossTenant-AuthSource: CH8PR03MB8275.namprd03.prod.outlook.com
X-MS-Exchange-CrossTenant-AuthAs: Internal
X-MS-Exchange-CrossTenant-OriginalArrivalTime: 07 Apr 2026 10:04:03.6022
 (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: GyzO77qihcbYjCo5U8IZnQ7BWouqLgYW1VGnFSaSxO6/u7u2hRmW6nLhHH0vR1VImelJFI4nPBQHwIFFKgfnBP92ZkBHLJ/ArLQoIiRXG24=
X-MS-Exchange-Transport-CrossTenantHeadersStamped: PH7PR03MB7133
X-purgate-ID: tlsNG-c201ff/1775556253-3372A96F-449B13E3/0/0
X-purgate-type: clean
X-purgate-size: 399

On 24/03/2026 4:39 pm, Jan Beulich wrote:
> We should not prematurely increment the pointer, to avoid inadvertently
> skipping the NUL terminator.
>
> Fixes: 6d9199bd0f22 ("x86-64: enable hypervisor output on VESA frame buffer")
> Reported-by: Kamil Frankowicz <kamil.frankowicz@cert.pl>
> Signed-off-by: Jan Beulich <jbeulich@suse.com>

Acked-by: Andrew Cooper <andrew.cooper3@citrix.com>


From xen-devel-bounces@lists.xenproject.org Tue Apr 07 10:15:06 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 07 Apr 2026 10:15:06 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1274819.1560795 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wA3SV-0003ap-Vk; Tue, 07 Apr 2026 10:14:59 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1274819.1560795; Tue, 07 Apr 2026 10:14: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 1wA3SV-0003ai-Sb; Tue, 07 Apr 2026 10:14:59 +0000
Received: by outflank-mailman (input) for mailman id 1274819;
 Tue, 07 Apr 2026 10:14:58 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <kroupa.matyas@gmail.com>) id 1wA3SU-0003ab-Er
 for xen-devel@lists.xen.org; Tue, 07 Apr 2026 10:14:58 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wA3SS-001Yag-4v
 for xen-devel@lists.xen.org; Tue, 07 Apr 2026 12:14:57 +0200
Received: from [10.42.69.7] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <kroupa.matyas@gmail.com>)
 id 69d4d91e-5cb7-0a2a0a5109dd-0a2a45078cee-8
 for <xen-devel@lists.xen.org>; Tue, 07 Apr 2026 12:14:57 +0200
Received: from [209.85.221.47] (helo=mail-wr1-f47.google.com)
 by tlsNG-ef75cf.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.0)
 (envelope-from <kroupa.matyas@gmail.com>)
 id 69d4d921-ba2d-0a2a45070019-d155dd2fb508-3
 for <xen-devel@lists.xen.org>; Tue, 07 Apr 2026 12:14:57 +0200
Received: by mail-wr1-f47.google.com with SMTP id
 ffacd0b85a97d-43b8e8e7432so3943839f8f.1
 for <xen-devel@lists.xen.org>; Tue, 07 Apr 2026 03:14:57 -0700 (PDT)
Received: from rivendell.hailstone.cz ([2001:718:801:311:4701:d1d5:7bfd:a254])
 by smtp.gmail.com with ESMTPSA id
 ffacd0b85a97d-43d1e4f5016sm52469198f8f.33.2026.04.07.03.14.56
 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
 Tue, 07 Apr 2026 03:14:56 -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=20251104 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=20251104; t=1775556897; x=1776161697; darn=lists.xen.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;
        bh=TXh+1wXMj23QBLmG6zr994NdcxcqVcLtfsNMsZQfwHU=;
        b=EFga7zFKIoFnS+IuaCNVlMt48J0lWQspI2df9W3phCo8SwjUhpzOKZsQzDm9fo7e78
         mE/Aj7HFBEGiLcVruiZ+i5VVTIfuPCAAR1Fpta0dbSreBDAWCngq81ohvRETuW+y9Uko
         d6VzvhYxO8QPrwXXwP4p2YwumskufKjIH7chuo1x37bRWEIKRGkLuUwYok71e+rlK2nd
         TPnrDstRij21CY5m0MG8uR2m8L2H82MaaJSeNTE4qyvWJyniQ3+z18IoGFIXTssL6pN9
         F/skE1gGgMyvVq8EOCTqggNRjUY69J69t3XyLMYjDhbA9DOUe62s+tmr+/J6XM9kB3hl
         yJgQ==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20251104; t=1775556897; x=1776161697;
        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;
        bh=TXh+1wXMj23QBLmG6zr994NdcxcqVcLtfsNMsZQfwHU=;
        b=SWLg7KQjAE+Dohc7OVwWLQC4bGPbcWEFJntXSRdCyMvqmyfTkdT9L1qR1YaM728+zL
         eYAXQdIqxq60sP1tMy+j4SX8M0uCjCE9RIgyNQL2yYXMR57yReF4x4tZRl2v47qZSGWa
         cQplNteIxH5Ts3IpxxUFNJXwW+NLMk1qeIp4NZNiC3siy7HioNwD+YqZI3axSv7G2NkI
         OjpA/8DVQ9ngZg8tnNDWekO2Z/T2Nq7OBeR3c9kUpejPMpt2zhYgTX8rFQlaJkPfNxhx
         bLKccTykWW3YMvU77rEH2gxPntPPuxItHzvbRyNBo30mOpA5dCJ0a7wEDYM+Lq+L8aXH
         yr/w==
X-Gm-Message-State: AOJu0YzsrjQpjbrqgOtTGTZJo/RkwlhvmNLgUw2Vh2Exdq4b9bS1FPhU
	0nZZ9YX/COIa7e+Zl080BpRaFbAHpLKdhR81aAoQswfsh1/DkaEDEGi+
X-Gm-Gg: AeBDievTOKK1O7UgzMb+GzYr0hMuARxE+gWm+/kxTfRDYTcKkLtiX7MlmGtlgD9BE6l
	aKkw1cDR+ApU4FsaIDVP1rfJsPsUMktPpIBdew81Byap+O9pPP+8XFDOAJ9FH5UmuHAgXekzfzV
	4EYOv4YHP+t/8qTI0WA5/pVjTU3Jwi9eri8Hqx0Vyzxck00Zj34js1sLxtprn1RZF9m4xXfSRoh
	d0nD84LjtHH3dimiMJL6UviGJ11sm00iKc/I9VVVq9BRZoJzqZgLXj/kF0ZofsrKYHCj/ZOhz4E
	wDCeBSaBsuPFGVWYqFA9nHPxfWOlJyAfecccGHjjqwBhE+ndGY02A6UVc8KbvM549MozfvrTjZu
	nrLZHX09xFutVntNqRs6g69S+R54EVS6rao//nwa4jw52rT3dUEroCKB4CkV9WK//StOtBtdn4D
	NSqPC2NaLNupME1sZi0ksjw36YQtsLl8/7m5DpI7MAhYA=
X-Received: by 2002:a05:6000:184d:b0:439:d755:a895 with SMTP id ffacd0b85a97d-43d292ec87amr24640714f8f.42.1775556896805;
        Tue, 07 Apr 2026 03:14:56 -0700 (PDT)
From: =?UTF-8?B?TWF0ecOhxaE=?= Kroupa <kroupa.matyas@gmail.com>
To: Jan Beulich <jbeulich@suse.com>
Cc: xen-devel@lists.xen.org
Subject: Re: Xen on Zen 3
Date: Tue, 07 Apr 2026 12:14:55 +0200
Message-ID: <4454038.v2OnDr8pfo@rivendell.hailstone.cz>
In-Reply-To: <1f1cfdeb-adbd-420d-a187-d0007fcad123@suse.com>
References:
 <5490687.niJfEyVGOH@rivendell.hailstone.cz>
 <1f1cfdeb-adbd-420d-a187-d0007fcad123@suse.com>
MIME-Version: 1.0
Content-Transfer-Encoding: quoted-printable
Content-Type: text/plain; charset="utf-8"
X-purgate-ID: tlsNG-ef75cf/1775556897-8A54B41E-4E55C232/0/0
X-purgate-type: clean
X-purgate-size: 1114

Dne =C3=BAter=C3=BD 7. dubna 2026 11:05:40, st=C5=99edoevropsk=C3=BD letn=
=C3=AD =C4=8Das, Jan Beulich=20
napsal(a):
> Not exactly, there is an earlier exit from the function when num_roots is=
 0.
> If that line is the problem one, then presumably num_roots < num_nodes, t=
hus
> yielding roots_per_node as 0. Sadly you didn't enable enough verbosity for
>=20
> 	pr_debug("Found %d AMD root devices\n", num_roots);
>=20
> to actually leave a trace in the log. I'd guess the value to be 1, but th=
ere
> being multiple nodes at the same time. You may want to instrument the
> function a little more to be certain.

I booted it with either loglevel=3D8 or ignore_loglevel, but could not get =
the=20
pr_debug to output anything. It did however print a lot of pci and other de=
bug=20
messages as expected.
=20
> For your immediate purpose you may want to change the "!num_roots" check
> into a "num_roots < num_nodes" one (on the assumption that num_nodes
> can't be 0). Whether that's acceptable upstream I don't know, of course.

I'll try that later

Maty=C3=A1=C5=A1 Kroupa






From xen-devel-bounces@lists.xenproject.org Tue Apr 07 10:23:27 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 07 Apr 2026 10:23:27 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1274828.1560803 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wA3aV-00059i-NG; Tue, 07 Apr 2026 10:23:15 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1274828.1560803; Tue, 07 Apr 2026 10:23: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 1wA3aV-00059b-KV; Tue, 07 Apr 2026 10:23:15 +0000
Received: by outflank-mailman (input) for mailman id 1274828;
 Tue, 07 Apr 2026 10:23:14 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <jbeulich@suse.com>) id 1wA3aU-00059V-LL
 for xen-devel@lists.xenproject.org; Tue, 07 Apr 2026 10:23:14 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wA3aU-00BZBi-14
 for xen-devel@lists.xenproject.org; Tue, 07 Apr 2026 12:23:14 +0200
Received: from [10.42.69.5] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <jbeulich@suse.com>)
 id 69d4db11-bab6-0a2a0a5309dd-0a2a450588ea-2
 for <xen-devel@lists.xenproject.org>; Tue, 07 Apr 2026 12:23:13 +0200
Received: from [209.85.221.44] (helo=mail-wr1-f44.google.com)
 by tlsNG-c201ff.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.0)
 (envelope-from <jbeulich@suse.com>)
 id 69d4db10-3760-0a2a45050019-d155dd2ce9cf-3
 for <xen-devel@lists.xenproject.org>; Tue, 07 Apr 2026 12:23:12 +0200
Received: by mail-wr1-f44.google.com with SMTP id
 ffacd0b85a97d-43b95e5b3afso2664464f8f.3
 for <xen-devel@lists.xenproject.org>; Tue, 07 Apr 2026 03:23:12 -0700 (PDT)
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-43d1e4e221bsm46894874f8f.29.2026.04.07.03.23.11
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Tue, 07 Apr 2026 03:23:11 -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=google header.d=suse.com header.i="@suse.com" header.h="Content-Transfer-Encoding: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=1775557392; x=1776162192; darn=lists.xenproject.org;
        h=content-transfer-encoding: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;
        bh=bHSig4Hoxd+ZX3I0CuB/SjgWOVwWBZL8gCIn3vdZqYQ=;
        b=S1ke6x6/TihEquWZ0ZBBUay6EntJPWTSckw4HqMDHIHk5gzCHsuYHhpSsbWOQdeyLx
         Tu657XSN/gJ8iPjNcbbWkjuZ41i3W5pEl4/uE+OUV3lDAyWUDMbXCnHp9PPkYIKtNVi6
         iIjhDsEAl0hpDCjjX6uY9/e+32jPgVjeoDzVCpKjfbFSBOVkKJtwGhDO5Gb8MrQn+3h/
         P1tUhjRIa1gh8ZkroJDWH+MbLuU5itfIAVkvTO5qLp4lZaAzHSvdOX3wXl38tf4ygp5E
         /XHZyDhWYEIN22fLIen0YzEYw45vzp1PLbltGDi9HDKkcXU8U4vi6lKvjQQ9z9MaOwEh
         fDtA==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20251104; t=1775557392; x=1776162192;
        h=content-transfer-encoding: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;
        bh=bHSig4Hoxd+ZX3I0CuB/SjgWOVwWBZL8gCIn3vdZqYQ=;
        b=c6C7OUhF/oFJ/yWg7OWojD7T/ylxADxScqbyAbEAZnhpxRjRiMrPdDcyFk1JrZCMQ7
         uWR9lVl8AhyAPRO1J6ytkDOpWNHQjxi6EEkstEdkfn6ukSn7s11aDNTEUAuzTQk4Od2f
         vq5d7B5+qRN4uTAMeoh1YnFxzuKPdGU2mQQUujbZ107FZd9W3ovsoVOymJ1okmo8WEIj
         k0k+YtVgPSmJeers8/2b1bi+5YgPMjgTFfqBBL/tTDQ5InKLsVimvNtjb0Q667lkCz/6
         A9kgOh0TM9GaPa18u+xfpVnZvTey9SdDlhhd6DMuLt8EsHM7hDBRw9C8CMStybVEirxi
         EWng==
X-Gm-Message-State: AOJu0YzfDQzT3XFyoVORbYjkFFgz5Lxeok927yhPm4g4PNeeZC8xukka
	p5IxewOhO/GVDepsZA9/qS4ZQEOfUvkkYKUAJ+JPD1/prhim2cRsKz1W7chg6seREUDPUH1TXbL
	FdNxCdg==
X-Gm-Gg: AeBDietWZF0AJdbGErIHruk8nnwQjEnFreKueGVu98FMkHHMOgXegQmyX6uKnIAKRDM
	RXyumUz3b123OmVGwmP64KgXb//zUIGlKEdJrIW/JnpoJyFuTr7Kh9yRCzhRNqjtwllkNZk+cmA
	9+nD5rsmbEHL4rSumdGhjKIaVcRk9GzBvxJEVEDLTbN3lElWmq3ONqt6cLvMZxbEEGoVCBESNXy
	hBJrb+gYaZqq15iQ7tQqeZ3sxNTOOXNo6GFIrSANv1UiNc/VT+87FMiX0KWGs/omB3p4k5LFhW7
	alEL6KBKGnktGXxlTHHjEE6JAztjHUQ9vl9b1PgKruv5C9fUn0lO45wWEzO0QI1yKU5Cje49kr8
	XMXJTe2L1xr2WUy0kAh86Ani1uaOLTBs7GlGkt3JhPT621HJDTsxbYN84QNmofUblZjAfeWqpFg
	bWBOKGJL/JHAG8kzQEn53DeLwn3rklz/JpMsJ0wUf2858Bk0G69M0TfvDXOlsGb96alhHR97fgR
	huHeM7ysWDeGc4=
X-Received: by 2002:a05:6000:2485:b0:43d:1c49:ce35 with SMTP id ffacd0b85a97d-43d29269f62mr22747594f8f.3.1775557392319;
        Tue, 07 Apr 2026 03:23:12 -0700 (PDT)
Message-ID: <8c9e5404-24bf-410d-a2e8-551cb87c6400@suse.com>
Date: Tue, 7 Apr 2026 12:23:16 +0200
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: IOMMU faults after S3
From: Jan Beulich <jbeulich@suse.com>
To: =?UTF-8?Q?Marek_Marczykowski-G=C3=B3recki?=
 <marmarek@invisiblethingslab.com>
Cc: xen-devel <xen-devel@lists.xenproject.org>
References: <e8bbaae2-5cff-4549-9f27-fbbda7346f60@suse.com>
 <090b8b8f-141b-4a24-92eb-879c0a0c73e1@suse.com> <ac2nibFfvGm_7elv@mail-itl>
 <933a3e95-33d2-4e20-a4d5-2d8b20c2da7f@suse.com> <ac4kCq87SQSc6ddV@mail-itl>
 <aa6910f1-365a-4534-b229-9730b3aede02@suse.com> <ac44SVW1cPhKYFKU@mail-itl>
 <2caff339-4ce9-42ea-9b78-afeac42b6f0f@suse.com> <ac6Bg21hMLBRDNdm@mail-itl>
 <92e0151b-3fb1-4108-9788-f0fbac43512b@suse.com> <ac72dp3yEHikJzw2@mail-itl>
 <47b140b2-596b-47db-9c0c-43672f445036@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: <47b140b2-596b-47db-9c0c-43672f445036@suse.com>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
X-purgate-ID: tlsNG-c201ff/1775557392-2272296F-229F0C6D/0/0
X-purgate-type: clean
X-purgate-size: 4004

On 07.04.2026 08:29, Jan Beulich wrote:
> On 03.04.2026 01:06, Marek Marczykowski-Górecki wrote:
>> On Thu, Apr 02, 2026 at 04:53:31PM +0200, Jan Beulich wrote:
>>> Sadly you now log the low halves of HPET_Tn_ROUTE twice, while you don't log
>>> the high halves at all.
>>
>> I was missing hpet_read32 there...
>>
>> Updated:
>> (XEN) [  116.921573] Entering ACPI S3 state.
>> (XEN) [18446743895.088893] _disable_pit_irq:2649: using_pit: 0, cpu_has_apic: 1
>> (XEN) [18446743895.088907] _disable_pit_irq:2659: cpuidle_using_deep_cstate: 1, boot_cpu_has(X86_FEATURE_XEN_ARAT): 0
>> (XEN) [18446743895.088918] _disable_pit_irq:2662: init: 0
>> (XEN) [18446743895.088928] hpet_broadcast_resume:662: hpet_events: ffff83046bc1f080
>> (XEN) [18446743895.089072] hpet_broadcast_resume:673: num_hpets_used: 8
>> (XEN) [18446743895.089081] hpet_broadcast_resume:691: cfg: 0x1
>> (XEN) [18446743895.089092] hpet_broadcast_resume:696: i:0, hpet_events[i].msi.irq: 122, hpet_events[i].flags: 0
>> (XEN) [18446743895.089122] hpet_msi_write:286: iommu_update_ire_from_msi rc: 0
>> (XEN) [18446743895.089132] hpet_broadcast_resume:700: i:0, __hpet_setup_msi_irq ret: 0
>> (XEN) [18446743895.089168] hpet_broadcast_resume:710: i:0, cfg: 0xc134, hpet_read32(HPET_Tn_ROUTE(hpet_events[i].idx)): 0, hpet_read32(HPET_Tn_ROUTE(hpet_events[i].idx) + 4): 0xf18
> 
> Okay, this would appear to clarify that the address really isn't correct. Yet I'm
> confused now by the low half values: In your earlier log there was
> 
> hpet_broadcast_resume:710: i:0, cfg: 0xc134, HPET_Tn_ROUTE(hpet_events[i].idx): 0x110
> 
> and alike, i.e. clearly a non-zero value. Now all low halves are zero. I'll try
> to figure how the logged values here could result, but consistent data (or an
> explantation for the apparent inconsistency) would help.

Could you give the patch below a try?

Jan

x86/HPET: channel handling in hpet_broadcast_resume()

The per-channel ENABLE bit is to solely be driven by hpet_enable_channel()
and hpet_msi_{,un}mask(). It doesn't need setting immediately. Except for
the (possible) channel put in legacy mode we don't do so during boot
either.

Instead reset ->arch.cpu_mask, to avoid msi_compose_msg() yielding an
all-zero message (when the passed in CPU mask has no online CPUs). Nothing
would later call msi_compose_msg() / hpet_msi_write(), and hence nothing
would later produce a well-formed message template in
hpet_events[].msi.msg.

Fixes: 15aa6c67486c ("amd iommu: use base platform MSI implementation")
Reported-by: Marek Marczykowski-Górecki <marmarek@invisiblethingslab.com>
Signed-off-by: Jan Beulich <jbeulich@suse.com>
---
As to the Fixes: tag: The issue for the HPET resume case is the
cpumask_intersects(desc->arch.cpu_mask, &cpu_online_map) check in
msi_compose_msg(). The earlier cpumask_empty() wasn't a problem, as
cpu_mask_to_apicid() returning a bogus (offline) value didn't have any bad
effect: Before use, a valid destination would have been put in place, but
other parts of .msg were properly set up. Furthermore we also didn't clear
the entire message prior to that change.

--- a/xen/arch/x86/hpet.c
+++ b/xen/arch/x86/hpet.c
@@ -685,12 +685,18 @@ void hpet_broadcast_resume(void)
     for ( i = 0; i < n; i++ )
     {
         if ( hpet_events[i].msi.irq >= 0 )
+        {
+            struct irq_desc *desc = irq_to_desc(hpet_events[i].msi.irq);
+
+            cpumask_copy(desc->arch.cpu_mask, cpumask_of(smp_processor_id()));
+
             __hpet_setup_msi_irq(irq_to_desc(hpet_events[i].msi.irq));
+        }
 
         /* set HPET Tn as oneshot */
         cfg = hpet_read32(HPET_Tn_CFG(hpet_events[i].idx));
         cfg &= ~(HPET_TN_LEVEL | HPET_TN_PERIODIC);
-        cfg |= HPET_TN_ENABLE | HPET_TN_32BIT;
+        cfg |= HPET_TN_32BIT;
         if ( !(hpet_events[i].flags & HPET_EVT_LEGACY) )
             cfg |= HPET_TN_FSB;
         hpet_write32(cfg, HPET_Tn_CFG(hpet_events[i].idx));



From xen-devel-bounces@lists.xenproject.org Tue Apr 07 10:26:13 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 07 Apr 2026 10:26:13 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1274837.1560813 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wA3dL-0005hZ-3N; Tue, 07 Apr 2026 10:26:11 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1274837.1560813; Tue, 07 Apr 2026 10:26: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 1wA3dL-0005hS-0i; Tue, 07 Apr 2026 10:26:11 +0000
Received: by outflank-mailman (input) for mailman id 1274837;
 Tue, 07 Apr 2026 10:26:10 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <jbeulich@suse.com>) id 1wA3dK-0005hM-7p
 for xen-devel@lists.xen.org; Tue, 07 Apr 2026 10:26:10 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wA3dJ-003qFl-JU
 for xen-devel@lists.xen.org; Tue, 07 Apr 2026 12:26:09 +0200
Received: from [10.42.69.6] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <jbeulich@suse.com>)
 id 69d4dbb7-e002-0a2a0a5209dd-0a2a4506da5a-42
 for <xen-devel@lists.xen.org>; Tue, 07 Apr 2026 12:26:09 +0200
Received: from [209.85.128.54] (helo=mail-wm1-f54.google.com)
 by tlsNG-16d1c6.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.0)
 (envelope-from <jbeulich@suse.com>)
 id 69d4dbc1-0df0-0a2a45060019-d1558036b980-3
 for <xen-devel@lists.xen.org>; Tue, 07 Apr 2026 12:26:09 +0200
Received: by mail-wm1-f54.google.com with SMTP id
 5b1f17b1804b1-48374014a77so64800215e9.3
 for <xen-devel@lists.xen.org>; Tue, 07 Apr 2026 03:26:09 -0700 (PDT)
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-4889b559a15sm212529775e9.2.2026.04.07.03.26.07
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Tue, 07 Apr 2026 03:26:07 -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=google header.d=suse.com header.i="@suse.com" header.h="Content-Transfer-Encoding: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=1775557569; x=1776162369; darn=lists.xen.org;
        h=content-transfer-encoding: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;
        bh=9SWgznumzZ9O+S2o6JthXmeT9POCO5TAQbD8MXJlBiE=;
        b=g5wndo/7Mb+65IM5Xg0QoPXfVASYpcVN/GT1hBHUXtPY4j6JTojLup1KVaGl+7MHTa
         CQv52mFpq/w9tVvW9Bf+5q4tBd1frOqhhdRBiTq6go1JdqW1ZC6n6viwSOZyWABNU2cJ
         8gceYzv0WacZ0BYCmFrkcilo1aOyeZNW0I3H1/IJvChhWtpsQ21WnjKEPGlr1QQYSsqH
         lUNOSepcgAG4qsWm6iV9h3Gt5C5uHp9Pwcxy5HmAYTwE0LjtPSoA5OPZO12LlEv8ki4a
         11WfxVnIQT9N0Rg0PCOTbyE8IxRyicFW+mEIWsHPnez8px+Wd1HFF2L8Obq8bBYI6jSR
         tZvw==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20251104; t=1775557569; x=1776162369;
        h=content-transfer-encoding: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;
        bh=9SWgznumzZ9O+S2o6JthXmeT9POCO5TAQbD8MXJlBiE=;
        b=U4cAUbFBxSFyaN6mS1HWiTMP/IXp60zSQyIyfuBLGE4ckqVfx4F3M8LBmNggHoNaP7
         00Q3TFDgqJbEtOC2GUNh2CgMQi1uNCLSAgMEvSK41Ze9qO4RH6OFXmKrWHJnpFvIDKeE
         pTDs0dB3R1Bqk9Sq9CNnDpC3wBXxsaP9cHVltpO/qeH4P62+YCe21IOIj0uqo5gRqkdZ
         0mWEBwigfqhS8HRi83i1z3fmJrgOcm2JhA/cmcHKtCEh1AxQiNbmAkvxDSrqcvmexD5X
         9L0OONGQscP8HtQNX0qDH6h7eAOoFypMJY/y2byMiIyExlZxTJXOLOVURtLbEiZ3Tuwx
         R74g==
X-Gm-Message-State: AOJu0Yyfw8dJxtf5T3ehv+yTwimywHVetyDu8yjQzPocsMZBCr318pfM
	73cnCQP6r2pKjAxEnLWoYJaJwelDuryFPtcQJrftg/DeAscRdOgX4P71GGvs5kYRTQ==
X-Gm-Gg: AeBDiettJ2jPPNv4lRG1fahXhE+GRYhapsnEIt65eeqe9NJzEjXXy4yXiGUCkOLhh1K
	J0x7/tC+upnnguzWJLJZRZOZfephUEXo5bKixTWgnKqNlNRenKk6+Ilg6nntz+p1nFXWbyn+us0
	lLZBmRNcu8/NFrfA4qsTjWV2ksQsAsyu5Skma1ykQFT2M3ds3rxUzRaAYF1CcV7oyyspPCft1JJ
	ZDSPmOPoV2Ti7ZYKnD+yi4/daf2ya7+kP9IkHWBa1xrCg+1pCH0JNy4OwXy7E2XoTKxAIRnTZxZ
	4OO3a2zxh3MfzGlOfT9omYDijLF/1CWLpIqxbacMjnshpuKaHokjWm5WiMRrjXULwnQyxEb6yyO
	hPAlDRtTv634Jipqr09QMj3frb3GV4lOLR5ZmpK/KL3Tx9pI69c3AThpXUKLgqgrHLj5KEEJ0Vm
	1bIQVdPURJDuiD9w1KndwJB4/DKCXYv0BUBG2945uiBDtGJCY0QgsxJQPaWNPU4qvaQpN+iaMQo
	dTJVsXPYlbPPUk=
X-Received: by 2002:a05:600c:5292:b0:488:8d44:bf98 with SMTP id 5b1f17b1804b1-488996e8254mr248407255e9.7.1775557568710;
        Tue, 07 Apr 2026 03:26:08 -0700 (PDT)
Message-ID: <e9c1f232-e81e-4202-8550-6fd3afeab206@suse.com>
Date: Tue, 7 Apr 2026 12:26:12 +0200
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: Xen on Zen 3
To: =?UTF-8?B?TWF0ecOhxaEgS3JvdXBh?= <kroupa.matyas@gmail.com>
Cc: xen-devel@lists.xen.org
References: <5490687.niJfEyVGOH@rivendell.hailstone.cz>
 <1f1cfdeb-adbd-420d-a187-d0007fcad123@suse.com>
 <4454038.v2OnDr8pfo@rivendell.hailstone.cz>
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: <4454038.v2OnDr8pfo@rivendell.hailstone.cz>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
X-purgate-ID: tlsNG-16d1c6/1775557569-5FB3B3D8-6B705426/0/0
X-purgate-type: clean
X-purgate-size: 938

On 07.04.2026 12:14, Matyáš Kroupa wrote:
> Dne úterý 7. dubna 2026 11:05:40, středoevropský letní čas, Jan Beulich 
> napsal(a):
>> Not exactly, there is an earlier exit from the function when num_roots is 0.
>> If that line is the problem one, then presumably num_roots < num_nodes, thus
>> yielding roots_per_node as 0. Sadly you didn't enable enough verbosity for
>>
>> 	pr_debug("Found %d AMD root devices\n", num_roots);
>>
>> to actually leave a trace in the log. I'd guess the value to be 1, but there
>> being multiple nodes at the same time. You may want to instrument the
>> function a little more to be certain.
> 
> I booted it with either loglevel=8 or ignore_loglevel, but could not get the 
> pr_debug to output anything. It did however print a lot of pci and other debug 
> messages as expected.

Iirc loglevel options don't affect pr_debug(); dynamic-printk options need
using instead.

Jan


From xen-devel-bounces@lists.xenproject.org Tue Apr 07 10:30:54 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 07 Apr 2026 10:30:54 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1274848.1560822 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wA3hm-0007Ic-Nw; Tue, 07 Apr 2026 10:30:46 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1274848.1560822; Tue, 07 Apr 2026 10: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 1wA3hm-0007IV-LH; Tue, 07 Apr 2026 10:30:46 +0000
Received: by outflank-mailman (input) for mailman id 1274848;
 Tue, 07 Apr 2026 10:30:45 +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 1wA3hl-0007IP-Bm
 for xen-devel@lists.xenproject.org; Tue, 07 Apr 2026 10:30:45 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wA3hk-00Flbu-Nk
 for xen-devel@lists.xenproject.org; Tue, 07 Apr 2026 12:30:44 +0200
Received: from [10.42.69.6] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <andrew.cooper@citrix.com>)
 id 69d4dcd3-2eae-0a2a0a5409dd-0a2a4506b72a-16
 for <xen-devel@lists.xenproject.org>; Tue, 07 Apr 2026 12:30:44 +0200
Received: from [52.101.52.66]
 (helo=BL2PR02CU003.outbound.protection.outlook.com)
 by tlsNG-16d1c6.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.0)
 (envelope-from <andrew.cooper@citrix.com>)
 id 69d4dcd3-0df0-0a2a45060019-346534423da9-3
 for <xen-devel@lists.xenproject.org>; Tue, 07 Apr 2026 12:30:44 +0200
Received: from CH8PR03MB8275.namprd03.prod.outlook.com (2603:10b6:610:2b9::7)
 by BN8PR03MB5027.namprd03.prod.outlook.com (2603:10b6:408:db::17)
 with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9769.20; Tue, 7 Apr
 2026 10:30: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%6]) with mapi id 15.20.9769.018; Tue, 7 Apr 2026
 10:30: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=CndLYmBHc0aMXMVFGuAX0NRoS7jHaOUz3hEwZhxGhkwlTZad2dK+cDZBB1E/3L2o1QJwUmHbadyjG/1PSkWXgatKYCjahU0kU2olscEoFdvfNj0/vj4Rndb1fxKYFpVvNEC/pDxYzgExq5Bb0i6Ro90yepx3PKj3K068XUTc/I92IvY7QA60Xj2XmwOOVG+igKAAGBsuQVWiEi0uXGzuFAHLMOgdhreK62aEpH5lxd9Kz5FF1M9EgxYI36VN410gxa8Y/jKIJpPS1rX5fw5PqEVmisyFuk7KrIjg3buBTdmGSWAi6yl8H27QmvDRo2fKsMLTSqx01rFjuV7KetYVXQ==
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com;
 s=arcselector10001;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1;
 bh=lJmN9nmRaihS2ZFAeEmVjXKX31zk7XhTbvO4dzJ5iXY=;
 b=L5YRN80fgaOGCT3f83NIqq80VmjvCjKA3x00fXcDKDftKgJwc3LzBtbYY2M2QmqF22xQhVXI72U10QsIYY00AycGeeXPfWYg7vUVEut0W/8tNt66q/JKCEskTNqD+dBr/sNTKRRP01CGIBgelc/RbRKXfsvpK5tlU7rnFRUufPGylZJD2i6ZN0jyM0XXcttBhPF/o4wSGubhLLe41uBc3YHVRC/y5pP1KMdwoRc9jUmePRHIuD6wgN3pX7apkiC09kazwdBaInH+c08e8flS1bMPky9RrT7u3wU0JHdztB5AfowWOrYJHC74+sIT7LNiJWeAMgmUdvFyeTv5ZaftBw==
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=lJmN9nmRaihS2ZFAeEmVjXKX31zk7XhTbvO4dzJ5iXY=;
 b=kNfbmvBgOyfg7lEglz54J77YY3lzEEx7Ky6PtGIFFOPxea7RnSnZM8s+FtVDwqFz2mR6e95Rj0ouNik5NMH18BXQJ/hK1yhYlMez9t7KfqIHMWtFVkb6CRqrCPTAET0NHTydS/SK7hoU8rx9RPPHpbfN2WY/C9+TSyMYB7/ywTo=
Authentication-Results: dkim=none (message not signed)
 header.d=none;dmarc=none action=none header.from=citrix.com;
Message-ID: <884db6ba-19c3-4073-b1e4-631d286ec5d2@citrix.com>
Date: Tue, 7 Apr 2026 11:30:32 +0100
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>, =?UTF-8?Q?Roger_Pau_Monn=C3=A9?=
 <roger.pau@citrix.com>, Kamil Frankowicz <kamil.frankowicz@cert.pl>
Subject: Re: [PATCH 2/5] llc-coloring: improve checking while parsing
To: Jan Beulich <jbeulich@suse.com>,
 "xen-devel@lists.xenproject.org" <xen-devel@lists.xenproject.org>
References: <63284ab7-8e38-4448-a789-1b9c23c4d95c@suse.com>
 <97d6ba6c-4ffe-4e1b-814a-d51a0bcf363e@suse.com>
Content-Language: en-GB
From: Andrew Cooper <andrew.cooper3@citrix.com>
In-Reply-To: <97d6ba6c-4ffe-4e1b-814a-d51a0bcf363e@suse.com>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
X-ClientProxiedBy: LO4P265CA0313.GBRP265.PROD.OUTLOOK.COM
 (2603:10a6:600:390::15) To CH8PR03MB8275.namprd03.prod.outlook.com
 (2603:10b6:610:2b9::7)
MIME-Version: 1.0
X-MS-PublicTrafficType: Email
X-MS-TrafficTypeDiagnostic: CH8PR03MB8275:EE_|BN8PR03MB5027:EE_
X-MS-Office365-Filtering-Correlation-Id: f17311b9-c7a2-4fab-3f38-08de9490b486
X-MS-Exchange-SenderADCheck: 1
X-MS-Exchange-AntiSpam-Relay: 0
X-Microsoft-Antispam:
	BCL:0;ARA:13230040|1800799024|376014|366016|18002099003|22082099003|56012099003;
X-Microsoft-Antispam-Message-Info:
	uBunPjIly6ERKxypnoPPX+pCSvdkY2/VG3HRZjdjU7ZGptH4+BpadQ6BCtPDTkV119p6vhDMaoh8VUS4DWv0cZAemBm+kYCKftT27kyTIoscSXFnw1PBVNhR/wDiEj00d9AmcU4eyh1gqasBDaK+7rRf7XdN9D7Llz3ZH5FkaLt+HVsq8bB6f7lm0DPOcKAupUrJzdGCK6ZlnPl5L1JbrMcIjwFej+HSQb2aT/9uom5Sr51/iuT8JCXvCF5wdwdeYC7i/Jd3zYLwKWnjoIJISE5dsRxj3zubzITdb/EFIjoWL0U7EKLZuTH2ubowBAdGnmqW4XgEa/HurpBwNpnUf5IeLftg92EPR33ASD9gChttzdVqF1VEVVT0JCqkJ5QX8eBPumE3z4tJQUQhwHLg7Pz1XGyxYIAL+UioGREwFxYglWlXWCbofFpL2d9BlHMrS2Ii1ha8wvxEbh3cxu5ekVrgg7xsP27OUfpMrxYd7i/eP5+ZOk7y1tBhF+ZY9n23x9ROVaP1OwVNO7++ctYHp/Ew40M0JNErI0xEfLKB99ZIR3wfrz4tSn/4crcBZrBh0oipX+5JuLl9168gnSppyjqVYeolfO9UlHUlCplEprJNF9X+u8jYhsiuH8Vr/srEMgYePPiRH73KXRQGfHQ3GWEQR+RTfb1HJ52xypQyG7ZPTnP9MiwXSCSjosxgkEyWlFoCnMOsymKKjgJlL3T00mDGZIpgTVHrrPIFydbPUO8=
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)(376014)(366016)(18002099003)(22082099003)(56012099003);DIR:OUT;SFP:1101;
X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1
X-MS-Exchange-AntiSpam-MessageData-0:
	=?utf-8?B?MlBiQklsY2dBREtENDkrRnhpeU1xZnZhQXVBSGIvZkR0ZW9GWDVzcldnRkd1?=
 =?utf-8?B?MUZhUFFlOElQdUZ2dU90SnV1U01oQVZyNkQ3LzgwOVlIUk1jcmNXTzd3NDFT?=
 =?utf-8?B?RDlPdU5NVlNiWmZXMm9OeXB0YUJld3poLzRXK0NwZUllQXVmblhkcUJrRFhG?=
 =?utf-8?B?R3Z1NXA0azZzVmhQTjU4UmdvVXhvZjUyaU0zT3pQY2k0enlVM216MUlWTXpP?=
 =?utf-8?B?ZmlvbVQxblMxWWtMTEVLb2FKdlI1Z1JlUEUwQnM2MFN3aG5OWmRNQWNJeW5y?=
 =?utf-8?B?djN4OUZDeGFFWlQ1YVRySjhSd0VhNWZZdkR0dzgrckloZHdFTEVJVkFEN09M?=
 =?utf-8?B?ZnJCTldKcmM4T2pLdE1NUHp5ZVhIaWVzUXJjRE15ajYwajZzTjBKOHQ1N1Mz?=
 =?utf-8?B?b0Z4bUd6Q2FZQmpHTC9mcTJhRGZna0djV2pTUjhBeTkrb1RueXM5SlR5MnpT?=
 =?utf-8?B?NzlvOURPWnBGUHhublIzVk95SGdQUlgrYlB0bnBWY2g3c0ZiV0J4K0JsRHVn?=
 =?utf-8?B?Vko0Tk9PdFNiMFRaanFqRWEvVDArajd3MjZLUzV4bWRQa2F1NkZiTTBNUnVT?=
 =?utf-8?B?eVlBZk9WSWFEWlJYM29KNVY3Q2dhTURHa0dQV2h2YWc5MFVSQWRIM0lkSWVH?=
 =?utf-8?B?Tmo4dW8rOXlrNDh6Z1Z3N2o0K1ppM1NIZ3FCVjdlME1MMzNyaFpsVWV4ZHVh?=
 =?utf-8?B?SzBOaGZpN0ZjY2tyL3hZWXI3TGl2czc3RDV1MjdnZ2t1aXAzVGpwVUZYcXp1?=
 =?utf-8?B?R3NaM2pFUXJFcWloaHdVUGRWNU9sUG9ldTR3a0szbFQrTUVuUGVrL2FaN0x4?=
 =?utf-8?B?R1F1K0l4cmdvNzE2bjdoWmx4bm5jOFhNOTd1U0hoMEJVSWNYS1MxQUFOQ3Z2?=
 =?utf-8?B?SzNOOUdiSHJIa3BnRzhaSTZMUHV5bjd0bis3clVybVJscHRvRUR2elNKZjlQ?=
 =?utf-8?B?dFhaUGt6TnJZM2E4aVprQ3VFWndZQzdyMWJPOVNNOXU2YjQzZmxmZmlrK3ZY?=
 =?utf-8?B?alhTUUZOdnN4TVdpN1djMXI4dDJXUUZvYmhRbmJSUEhQemtydURWZStUZ2Rr?=
 =?utf-8?B?N2pFVXh6RndBUHdyaGJWYzJjZlE0Q1BzRlZJZStSdXJFS1Myc0ZEdmxHbi9h?=
 =?utf-8?B?TEswemsxajVwMnJCU0ZYU2xCNWR1RTBtUS91TVNEbVBVcEtoR29iSHdqeFhV?=
 =?utf-8?B?c3ZqNU4yWlAvcjQyQTlJcDNGbVNQNzN4dDl2ZHdzVTZ5dDNjaTFWY1pLcDRl?=
 =?utf-8?B?V2paMG12ODBIalBoY3k2RXRpZ2FrRzJiWDhNc0dLMkRVdWIvajlYdUlPcXJP?=
 =?utf-8?B?NEJEdEg3WU9LR3Mzc0pFeWZkWjlBclJLdnVWY1ZVMjBJTUk4WkxvODhPVk5i?=
 =?utf-8?B?TkVuN0hMcUt0MTcxSUZxbGNzd25vVWNaVWYxdmIyaHhJem5jNFhHeDZFVUEv?=
 =?utf-8?B?Q3VlaGdrcGs2MHlzUGNBcTBrZ28yRks4c0FNemU1eStBbW9Tc2NicG94d3pB?=
 =?utf-8?B?aVI5T0o0RUhlc1JscEdSWFRDZFdZZUZMQ3FFODBlbUh5aXZOR2QrMHlDMzVn?=
 =?utf-8?B?SmN0MGl1di9uYm80Qlc4NXVqcmFzaGdSWTZWT1B2MHNTSi9rbG1XWEtXUjdv?=
 =?utf-8?B?ek1NRy9seEN2Mk1jaTZGamdJaUtPQkNXS3RHS3VKRjByRmh0RHBWZVNtalgv?=
 =?utf-8?B?d2xMckN4MkN4bGFjWDA1b0RiUldIazVldWxMUmhmMTZkYVBmbDVJY0IxaCto?=
 =?utf-8?B?T0dMQ0NpdXpzQnhndWdGM0locVRUbFBKUFEyU29oWlY2VWJNMHdWRTAwV3Y5?=
 =?utf-8?B?NkFYUDRaZy9yZnlIYTNtbDcwZ2xPTnI2b0owNWw0NHNHSTRsSWtpZTN2cE9i?=
 =?utf-8?B?aitRaG1LZnBEdXVWTkJjQXBONUZhditpQ3lIdXlvQkFrUEJjWnh1VXl4TFYz?=
 =?utf-8?B?c25aYjhGdXdXTWtaMUlPYmNUSkRHU0htVDJQd2doa2xIc1FmQ3VuK2lPM09v?=
 =?utf-8?B?THlCVVNSRjhocTZta1dFRkRWM0dDOUVSUVpZcjFJNkphM3VXdjZzS052OTAw?=
 =?utf-8?B?SFdNUUxuM1RkVHJ3Z3dPTnFuOWhRV1NodFZJWlFjeFlQM25tYWlCZitIeFQy?=
 =?utf-8?B?enRJa0lPMmJmMUJnNUFWRTZjN3pwWjIxSHNmRVBKS2dqY0F6cDh1anBBbFFs?=
 =?utf-8?B?a3FuTytCc0VFMGdiNXB1YXJPbTRhMGJSbTJuMkhNa1VKTlhmWDJwY0gwMEhJ?=
 =?utf-8?B?ZTZsRU9mTzJtdHZwb2ZHYXlNWkxnWnN2aWhkMXJLbDBxUk9DL0hQcUdNOFds?=
 =?utf-8?B?ODdRbzRmM084RDZTQWpNMEduazVGYkFpcllqOEo3UWZjMU9HaTFsTjRjRmt5?=
 =?utf-8?Q?G5wfMAxh1h+HyB/s=3D?=
X-OriginatorOrg: citrix.com
X-MS-Exchange-CrossTenant-Network-Message-Id: f17311b9-c7a2-4fab-3f38-08de9490b486
X-MS-Exchange-CrossTenant-AuthSource: CH8PR03MB8275.namprd03.prod.outlook.com
X-MS-Exchange-CrossTenant-AuthAs: Internal
X-MS-Exchange-CrossTenant-OriginalArrivalTime: 07 Apr 2026 10:30:35.8919
 (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: rMDcLNsQ8fYxmN2wpVfi+sVI+Kr0ZOH5El8onp09tD/aUxrDRrbJ4DNp8grqJk0fZKM61I902xzteK9mbyKD4BleYawbSSfmH77QKX45nTw=
X-MS-Exchange-Transport-CrossTenantHeadersStamped: BN8PR03MB5027
X-purgate-ID: tlsNG-16d1c6/1775557844-AE12E3D8-FD5B9EE8/0/0
X-purgate-type: clean
X-purgate-size: 1839

On 24/03/2026 4:37 pm, Jan Beulich wrote:
> We can easily avoid the risk of wrapping UINT_MAX <-> 0 by applying a
> check against the compile-time-constant maximum number of colors.
>
> Additionally the overflow checks suffered from an off-by-1, as the parsed
> ranges are inclusive (e.g. end == start being possible, requiring 1 array
> slot, while availability of 0 slots was checked in that case).
>
> Fixes: 6cdea3444eaf ("xen/arm: add Dom0 cache coloring support")
> Reported-by: Kamil Frankowicz <kamil.frankowicz@cert.pl>
> Signed-off-by: Jan Beulich <jbeulich@suse.com>
>
> --- a/xen/common/llc-coloring.c
> +++ b/xen/common/llc-coloring.c
> @@ -76,8 +76,9 @@ static int __init parse_color_config(con
>          else                /* Single value */
>              end = start;
>  
> -        if ( start > end || (end - start) > (UINT_MAX - *num_colors) ||
> -             (*num_colors + (end - start)) >= max_num_colors )
> +        if ( end >= NR_LLC_COLORS || start > end ||
> +             (end - start) >= (UINT_MAX - *num_colors) ||
> +             (*num_colors + (end - start + 1)) >= max_num_colors )
>              return -EINVAL;
>  
>          /* Colors are range checked in check_colors() */
>

I think this is correct, so Acked-by: Andrew Cooper
<andrew.cooper3@citrix.com>

However, the parsing logic is also ridiculous.  Most of the complexity
comes because of parsing a bitmap but storing it longhand in an array of
unsigned ints.

Instead, the global variables default_colors, dom0_colors and xen_colors
should be bitmaps sized by NR_LLC_COLORS, and d->llc_colours should be a
bitmap sized by xen_num_colors (which itself is bound by NR_LLC_COLORS).

With the default of 32 colours, this would involve no memory allocation
at all, even on 32bit builds of Xen.

~Andrew


From xen-devel-bounces@lists.xenproject.org Tue Apr 07 10:34:52 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 07 Apr 2026 10:34:52 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1274858.1560831 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wA3lj-0008Hn-7Z; Tue, 07 Apr 2026 10:34:51 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1274858.1560831; Tue, 07 Apr 2026 10:34: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 1wA3lj-0008Hg-3t; Tue, 07 Apr 2026 10:34:51 +0000
Received: by outflank-mailman (input) for mailman id 1274858;
 Tue, 07 Apr 2026 10:34:49 +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 1wA3lh-0008Ha-Eq
 for xen-devel@lists.xenproject.org; Tue, 07 Apr 2026 10:34:49 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wA3lf-001cke-5Z
 for xen-devel@lists.xenproject.org; Tue, 07 Apr 2026 12:34:48 +0200
Received: from [10.42.69.9] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <Michal.Orzel@amd.com>)
 id 69d4ddbd-e002-0a2a0a5209dd-0a2a4509a11c-18
 for <xen-devel@lists.xenproject.org>; Tue, 07 Apr 2026 12:34:47 +0200
Received: from [52.101.48.63]
 (helo=MW6PR02CU001.outbound.protection.outlook.com)
 by tlsNG-bad1c0.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.0)
 (envelope-from <Michal.Orzel@amd.com>)
 id 69d4ddc5-bf79-0a2a45090019-3465303ff9e0-3
 for <xen-devel@lists.xenproject.org>; Tue, 07 Apr 2026 12:34:47 +0200
Received: from MN0P222CA0024.NAMP222.PROD.OUTLOOK.COM (2603:10b6:208:531::26)
 by SN7PR12MB8129.namprd12.prod.outlook.com (2603:10b6:806:323::13)
 with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9769.17; Tue, 7 Apr
 2026 10:34:42 +0000
Received: from BL6PEPF0002256F.namprd02.prod.outlook.com
 (2603:10b6:208:531:cafe::6c) by MN0P222CA0024.outlook.office365.com
 (2603:10b6:208:531::26) with Microsoft SMTP Server (version=TLS1_3,
 cipher=TLS_AES_256_GCM_SHA384) id 15.20.9769.33 via Frontend Transport; Tue,
 7 Apr 2026 10:34:32 +0000
Received: from satlexmb07.amd.com (165.204.84.17) by
 BL6PEPF0002256F.mail.protection.outlook.com (10.167.249.37) with Microsoft
 SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id
 15.20.9769.17 via Frontend Transport; Tue, 7 Apr 2026 10:34:42 +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.17; Tue, 7 Apr
 2026 05:34:41 -0500
Received: from XIR-MICHALO-L1.xilinx.com (10.180.168.240) by
 satlexmb07.amd.com (10.181.42.216) with Microsoft SMTP Server id 15.2.2562.17
 via Frontend Transport; Tue, 7 Apr 2026 05:34:40 -0500
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@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=hofdSHwcauv3Cf7KTHvZivKAbLxsvGqsK/rXyTYbGnVzylaVH1BQgZwT4CMQ6hbtnWoM3ODhQxj0zKMD3wlMszv4TGDMnxo5ruUPKQSwtTZhzEKPNBZWmfwhhbd/sU34a8LS+/BrJnrMESIQC9ovbWmsVLMennNmaajKBctnlr98D5YZJYVMSB8lTtPvPff8t06cy+eUYokBDwU0mrpIEqtQiLumUMQ5gV/3YgsoeiZiuZZUc9+1yoE8/8T+a8fNzmkF/xNqVU7XZnRC0k93HetSEkcHJ4VGdwQG8zTnAfBMct1oU44EY0nT+evfg5oGcJJ+FkldiTjYWGZ5IRovfQ==
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com;
 s=arcselector10001;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1;
 bh=Jn/NYQTDmG2sUW7CaH4rHjy4giTNOf5urEynT7oWyQg=;
 b=g/oOYqXVvJmJXoaHGDm+kfoTXGidsQYUDzXwFyAmGS11c1WX2x285ZAySWa0g08hak8e1pCIR0AAIJ1Ue+s4ttjizd1PlEIcAaDP2rQ+/u/Fb8i773XREbPt9JPlAwFavQWK3Vvi17FDfgOBwUtgPQUkptY5Vgk0N3FXY2HhzPQ8oVbEYHH8NMFiW6G/BQEWQ/43HEqJSr9j5z3EQot0BJmTU2f5ZZq6Xj0Hxbmdsfj07RBTXNuoIw+Sy8y3j8+mH8HcIoT/3bT+iWLbqoocV8s7dNKx1sffFCLNz7+djYLv8UarimjgSb+i3+PQHMc5nNkiNkFf6dL5qPhHt4vCTA==
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=Jn/NYQTDmG2sUW7CaH4rHjy4giTNOf5urEynT7oWyQg=;
 b=yZ2tFOP+TCdeDwJyo8/caiC6MlyOz3Y9IM8JZL7khZo01VN0FH+99oVpXO+CC8CqA7zDDVoKljqsm4hLRbIHA2PTkSSEr2wE4JWgA3FgHjOt86FsWqzyerTbl4O0JRMHj5wFc1YkWbTk3+dTawzmExAsVT2sdeoYJiXfqKHpPNM=
X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 165.204.84.17)
 smtp.mailfrom=amd.com; dkim=none (message not signed)
 header.d=none;dmarc=pass action=none header.from=amd.com;
Received-SPF: Pass (protection.outlook.com: domain of amd.com designates
 165.204.84.17 as permitted sender) receiver=protection.outlook.com;
 client-ip=165.204.84.17; helo=satlexmb07.amd.com; pr=C
From: Michal Orzel <michal.orzel@amd.com>
To: <xen-devel@lists.xenproject.org>
CC: Michal Orzel <michal.orzel@amd.com>, Julien Grall <julien@xen.org>, "Rahul
 Singh" <rahul.singh@arm.com>, Stefano Stabellini <sstabellini@kernel.org>,
	Bertrand Marquis <bertrand.marquis@arm.com>, Volodymyr Babchuk
	<Volodymyr_Babchuk@epam.com>
Subject: [PATCH 0/2] Final series to make Arm MISRA allcode green
Date: Tue, 7 Apr 2026 12:34:31 +0200
Message-ID: <20260407103434.90838-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: BL6PEPF0002256F:EE_|SN7PR12MB8129:EE_
X-MS-Office365-Filtering-Correlation-Id: 9354d2c5-2aef-4520-51b8-08de94914754
X-MS-Exchange-SenderADCheck: 1
X-MS-Exchange-AntiSpam-Relay: 0
X-Microsoft-Antispam:
	BCL:0;ARA:13230040|82310400026|376014|1800799024|36860700016|13003099007|18002099003|56012099003;
X-Microsoft-Antispam-Message-Info:
	3UVMJK7D7phlmZPR6yxBKqmHvLNzpmrtcpnmOyNdGbkICV3qumbqp/+n8CuNgpsM3+I+Q5hpgLU8xGgW1o4wZ4y8h12ndc3MT5EjO+1IXvVWizkPXxQ+D/4IfT84hfOwQxlac8lt+F5jMN/5x8LMdHfapEb1ARWXs6dPBScOBJXR7lG1VxXw3GBNzO4WDM741FJVyygUE32Hh5/nxR1jx1DHBf0peo5Jn1pp0jRloOPdU6Kj2rXf7SFh6RUOapzxi3n/q+Mc/QeeGESwMArfVm7rERKxtppA/id49+eIJ0SlMwr0R1rK0pnYFQEYU0i0dN/REulgOcn7n7RLgNIRTk11xhZSRos3WY22mHd5xmCdQPU3umaepZcoy5nbhMXnRmb6O/3/IqygH0kn8iz8glRCIy3o6UZt8C0tGb+bzMr06hY4u0GeakraHP/rokACY4vzhtV2KbL8SkbXQ3LufZRHMD8hudJVKLmV0/ImHWPzf1WUppMxKAVbJSPeRjdjygW2euLlCqat4TMr/3+LG7Iz9OfxKBjnwqgTemLyraConCBcOIp1KP7zPoXuv/DTkLpLi+kx5aFQqLfcVR1r++Rw3h/iPOOlrSkI+n4LxzzzJ6sxtME8Ow9ix4rQyVLdpgS2oArimuyDAdG0DqVN+Nsc0KoBnzwGE5pt/622FTfccG+Z4jcDtLBlBfntNAlQasuz4ErvZnl6IlweIoGl5DuqdyVMGpDEBrJeYqRYykI=
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)(376014)(1800799024)(36860700016)(13003099007)(18002099003)(56012099003);DIR:OUT;SFP:1101;
X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1
X-MS-Exchange-AntiSpam-MessageData-0:
	cA+pluvGF2ujYmVSAntr2OEn3vRwcPx7R+6KTGzcifznC5SCIEyiMWC1/H/0SpjyQrx7bOtaUblwCbFjdKm6sZDURRQ2pu+DED0SfhpgowHIHjEnvHsTJHL4urYfPXC5W6g8iR6J1DjOUZh0XzXQM8RPn+EzKneJ3f3F0Cum8bS+xyNJkn6bsP0keETW8ljvWLHjf3IsGP0+cmqvaeorGBTNBOUZH9+l0nbSFPIVm44AOc7ZakxnZe5jaLzt0bAwM8lwdf9yp7FH5nQ4/ftEFqUFHD04k8sIwVNTPE/igswIQ3s1GdetHU/iOJSxtIFp8NHYq2VzmfolejTpc8B6+d5jbLmcGatc96wClDNpHnHAtGu567R1xVwNkmmSdE+XrR1sOIvyVAE/suWmGDe2feuXTJxhQMFCiTbE+ZUCnXgCJ95CselUX4bjqJ7quMCF
X-OriginatorOrg: amd.com
X-MS-Exchange-CrossTenant-OriginalArrivalTime: 07 Apr 2026 10:34:42.0610
 (UTC)
X-MS-Exchange-CrossTenant-Network-Message-Id: 9354d2c5-2aef-4520-51b8-08de94914754
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:
	BL6PEPF0002256F.namprd02.prod.outlook.com
X-MS-Exchange-CrossTenant-AuthAs: Anonymous
X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem
X-MS-Exchange-Transport-CrossTenantHeadersStamped: SN7PR12MB8129
X-purgate-ID: tlsNG-bad1c0/1775558087-5D5EB152-D325D88C/0/0
X-purgate-type: clean
X-purgate-size: 408

No more regressions for clean guidelines:
https://gitlab.com/xen-project/people/morzel/xen/-/pipelines/2433943072

Michal Orzel (2):
  iommu/arm: smmu: Fix variable shadowing
  iommu/arm: ipmmu-vmsa: Fix variable shadowing

 xen/drivers/passthrough/arm/ipmmu-vmsa.c | 6 ++----
 xen/drivers/passthrough/arm/smmu.c       | 7 +++----
 2 files changed, 5 insertions(+), 8 deletions(-)

-- 
2.43.0



From xen-devel-bounces@lists.xenproject.org Tue Apr 07 10:34:53 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 07 Apr 2026 10:34:53 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1274859.1560839 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wA3ll-0008VY-Do; Tue, 07 Apr 2026 10:34:53 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1274859.1560839; Tue, 07 Apr 2026 10:34: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 1wA3ll-0008VP-Aq; Tue, 07 Apr 2026 10:34:53 +0000
Received: by outflank-mailman (input) for mailman id 1274859;
 Tue, 07 Apr 2026 10:34:52 +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 1wA3lk-0008Ua-9L
 for xen-devel@lists.xenproject.org; Tue, 07 Apr 2026 10:34:52 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wA3lj-003scJ-LH
 for xen-devel@lists.xenproject.org; Tue, 07 Apr 2026 12:34:51 +0200
Received: from [10.42.69.8] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <Michal.Orzel@amd.com>)
 id 69d4ddba-2eae-0a2a0a5409dd-0a2a4508d7e0-34
 for <xen-devel@lists.xenproject.org>; Tue, 07 Apr 2026 12:34:51 +0200
Received: from [40.107.208.23]
 (helo=PH0PR06CU001.outbound.protection.outlook.com)
 by tlsNG-c1860d.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.0)
 (envelope-from <Michal.Orzel@amd.com>)
 id 69d4ddc9-fab6-0a2a45080019-286bd0177e63-4
 for <xen-devel@lists.xenproject.org>; Tue, 07 Apr 2026 12:34:50 +0200
Received: from BLAP220CA0005.NAMP220.PROD.OUTLOOK.COM (2603:10b6:208:32c::10)
 by DM4PR12MB6398.namprd12.prod.outlook.com (2603:10b6:8:b5::19) with
 Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9769.17; Tue, 7 Apr
 2026 10:34:45 +0000
Received: from BL6PEPF00022573.namprd02.prod.outlook.com
 (2603:10b6:208:32c:cafe::7a) by BLAP220CA0005.outlook.office365.com
 (2603:10b6:208:32c::10) with Microsoft SMTP Server (version=TLS1_3,
 cipher=TLS_AES_256_GCM_SHA384) id 15.20.9769.32 via Frontend Transport; Tue,
 7 Apr 2026 10:34:14 +0000
Received: from satlexmb07.amd.com (165.204.84.17) by
 BL6PEPF00022573.mail.protection.outlook.com (10.167.249.41) with Microsoft
 SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id
 15.20.9769.17 via Frontend Transport; Tue, 7 Apr 2026 10:34:45 +0000
Received: from SATLEXMB04.amd.com (10.181.40.145) by satlexmb07.amd.com
 (10.181.42.216) with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.2.2562.17; Tue, 7 Apr
 2026 05:34:44 -0500
Received: from satlexmb07.amd.com (10.181.42.216) by SATLEXMB04.amd.com
 (10.181.40.145) with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2507.39; Tue, 7 Apr
 2026 05:34:44 -0500
Received: from XIR-MICHALO-L1.xilinx.com (10.180.168.240) by
 satlexmb07.amd.com (10.181.42.216) with Microsoft SMTP Server id 15.2.2562.17
 via Frontend Transport; Tue, 7 Apr 2026 05:34:43 -0500
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@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=mTHUU4hgpNv43oTMmGQpoEem9sORjHUatH9ZtawaPM0dL+c8ieetnRBQ8a+WrLZYGF8AK9yYNgFhvaPKShSnNv3apwj/PdQsV5oEr3IIXkAnqPvzSSM5o9j8DroXFqzFyrq87/3Izaei/y2edjt57qtuqL3FKMM721g3fQX/bSe/GJZyAWvj5p+4Ye9/FDON/RPe5CylUjRKeag1+3ZQVcJslj8M5aQejs1Xvez9T2TXhqbA5Y0/d502CYs21O40KBO0eejclB7f6Sz/Ei/QVM2Xmz2nn9ePLoXUdR8dxrfbIp9VHJ/9Ei9Sjmf9v5QIS2pBJ81V2q/uJ1L8sdQH/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=nSwn/eZd22mkj92Lxkd7s8YIYQ6Q3aCLzhHR4QqHess=;
 b=An4o+z4kI/l7sv+mBi8Xxt5xDEFMx6bmsbvMb8nIiJbLg9lzT+hzN0bIkm5tfronTJq3X2c/HV1k4lU5E311B+rk3yHag+z4SGays5s4IthmE2Zn65/NboujllGn8gscoF+/YbYAIYRHFd/3OLp8N8zCqcycEafLMQHcwXSDB7tT83ATRy2UJlI4kfkTT7zMHQE/kdGTFGxXJpoB1wOxlwVdTZdb6KTS5AYc4y8Ua0w+0O8Qy9xDr5uZzIVc5CbQhItRr8Tq52GeLZInr9f5PjzzGogKuUjLBsJFEIq5iP89kfIHG779WXKm4yoMv7k4VAOYjmY/Cr3tJsxoiCxiEA==
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=nSwn/eZd22mkj92Lxkd7s8YIYQ6Q3aCLzhHR4QqHess=;
 b=1mjmYP0OKB7qftzqiclgK2TT3Iyz89Fn0pPhoWaOtdovTxLDlqgL5EdJLSmoKNLZl6lLq7LCMFDLaRm8noozGJIMFohkqW4w6+HS4BF63het53TpUg2Rg6DlH0N1aqYWmXYw602s3nbKy/RpCrfcWiMtqkVMhn5iR70hYqjTahE=
X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 165.204.84.17)
 smtp.mailfrom=amd.com; dkim=none (message not signed)
 header.d=none;dmarc=pass action=none header.from=amd.com;
Received-SPF: Pass (protection.outlook.com: domain of amd.com designates
 165.204.84.17 as permitted sender) receiver=protection.outlook.com;
 client-ip=165.204.84.17; helo=satlexmb07.amd.com; pr=C
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 2/2] iommu/arm: ipmmu-vmsa: Fix variable shadowing
Date: Tue, 7 Apr 2026 12:34:33 +0200
Message-ID: <20260407103434.90838-3-michal.orzel@amd.com>
X-Mailer: git-send-email 2.43.0
In-Reply-To: <20260407103434.90838-1-michal.orzel@amd.com>
References: <20260407103434.90838-1-michal.orzel@amd.com>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit
Content-Type: text/plain
Received-SPF: None (SATLEXMB04.amd.com: michal.orzel@amd.com does not
 designate permitted sender hosts)
X-EOPAttributedMessage: 0
X-MS-PublicTrafficType: Email
X-MS-TrafficTypeDiagnostic: BL6PEPF00022573:EE_|DM4PR12MB6398:EE_
X-MS-Office365-Filtering-Correlation-Id: d2d4ad18-a010-4583-496f-08de9491492c
X-MS-Exchange-SenderADCheck: 1
X-MS-Exchange-AntiSpam-Relay: 0
X-Microsoft-Antispam:
	BCL:0;ARA:13230040|1800799024|36860700016|376014|82310400026|56012099003|18002099003|22082099003;
X-Microsoft-Antispam-Message-Info:
	0SWErfz8ZB7oFhnH7++AZKjW6MMPL0SZiFPvvN2tynAuxZ5N9N6owEB6NplcF7eGCGOsYPOGTYBVnEPZhdfFGUsXu1Hi6by7dKfe8n8Qu95BEAXrdfJrRsaXMgTXan0Hk/PZXrKe6AT1tnTG7f+gMD9b2f/XxqCs9Ceoz8zHkgdw/uY6nkpG5eVpS0OS1d1/MIqMympkLVO7Kat6xEq/QltAfryzkqzCvVyypenOUPk+1+PGjF4f7iEj/pUanOH2uycQ/28DwbXxBYQ67ilWaXwWvKXvnJycadqeKPeWq9DI0WOZPXLYlA24sBvwuWRDahPz9Qf+bt7F38qkXQelxKZffySH00ob+aPmQ+dlw29q/14NV87eT0nRQ1J6RApdEfUQKR+JmjQ0jZShNXKIkprrlU5HVYj5ohWBJjvKXJcQ5/y5yGPV9Q8Nhb/zI+/xB043h34ySwf+aXY9znGGfn71bUOi27VX4v6AMBJj7RNWXPSGK8f5rajgbvkrSkM02aHkmy9VHjnaktYj3Afm73gHfC5BXeB/8CPhtJLqtG3fjM43vQpBnvq3uXT3K3Tou0pMGyQJo35eO0fDwbw0Jwga9Hr8GA8VPGZmGSeVI6k5ZtUqH3HOqD1DmyXwIOV9D+cryF1rJzaaus5ZCIVqFH+1VNfjFjZZ5Geydr+pNmMJA4ycXIZpGL40nZDttVI7+eXPUj1NKHhqLJTy8bafeeHUpLxTBcRwzuY2w/CDO4d43huWr7IlZeQo1v0OkJ1qWERc88JUtKz7/2F2Dvhl7w==
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)(36860700016)(376014)(82310400026)(56012099003)(18002099003)(22082099003);DIR:OUT;SFP:1101;
X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1
X-MS-Exchange-AntiSpam-MessageData-0:
	5x2pRPTXNjPQ3Rz4vGotTWguqoK+S8+grTjwH1kUZuGS3q2ItoUGzJk0RcTkjOJhNGwIaJzMXzG1AF5AWBcxbXi9t6c6XkW+ud9MDHJm9J+iOGzXXXOsdrgRULVAuM6j0OUk9vcPc5CClDYRW73JX0mfu/fhYFNPNYuf+eaBUbl/fA3xVQLSZJGSo1LeSijCdDqBNaBt7MLxFAtZqGXFr7+fCSlxdv2J+HChhpi2yC8LwkVNwPH91UnBDYSQ+3CwCLImFqoBk5CHnYmeHlq6pitzGAhDEzJTGkcVFWuZQVaTyKZy7qdYeRFSB5vget3QpKEyurKB4bROGZQjxm43FgTZr17b5Fm8x+ZRzmve0163Ut8iQUgDa9D/OvMSk3TvEZpkK1Wd3C6z7fRazzxyFX+03/sDYouxtJWklDIwqID836ZrlcJJBIJ0eM5IMlD+
X-OriginatorOrg: amd.com
X-MS-Exchange-CrossTenant-OriginalArrivalTime: 07 Apr 2026 10:34:45.1513
 (UTC)
X-MS-Exchange-CrossTenant-Network-Message-Id: d2d4ad18-a010-4583-496f-08de9491492c
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:
	BL6PEPF00022573.namprd02.prod.outlook.com
X-MS-Exchange-CrossTenant-AuthAs: Anonymous
X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem
X-MS-Exchange-Transport-CrossTenantHeadersStamped: DM4PR12MB6398
X-purgate-ID: tlsNG-c1860d/1775558091-76B4C497-64DD0121/0/0
X-purgate-type: clean
X-purgate-size: 1679

Rename 'pdev' to 'pci_dev' in the dev_print_pci() macro to avoid
shadowing local 'pdev' variables at call sites.

Remove the unused 'ret' declaration from ipmmu_assign_device() where
the function-scope 'ret' is sufficient.

This fixes MISRA C R5.3.

Signed-off-by: Michal Orzel <michal.orzel@amd.com>
---
 xen/drivers/passthrough/arm/ipmmu-vmsa.c | 6 ++----
 1 file changed, 2 insertions(+), 4 deletions(-)

diff --git a/xen/drivers/passthrough/arm/ipmmu-vmsa.c b/xen/drivers/passthrough/arm/ipmmu-vmsa.c
index ea9fa9ddf3ce..fa9ab9cb1330 100644
--- a/xen/drivers/passthrough/arm/ipmmu-vmsa.c
+++ b/xen/drivers/passthrough/arm/ipmmu-vmsa.c
@@ -65,8 +65,8 @@
         printk(lvl "ipmmu: %s: " fmt, dev_name((dev)), ## __VA_ARGS__);  \
     else                                                                \
     {                                                                   \
-        struct pci_dev *pdev = dev_to_pci((dev));                       \
-        printk(lvl "ipmmu: %pp: " fmt, &pdev->sbdf, ## __VA_ARGS__);     \
+        struct pci_dev *pci_dev = dev_to_pci((dev));                       \
+        printk(lvl "ipmmu: %pp: " fmt, &pci_dev->sbdf, ## __VA_ARGS__);     \
     }                                                                   \
 })
 #endif
@@ -1171,8 +1171,6 @@ static int ipmmu_assign_device(struct domain *d, u8 devfn, struct device *dev,
         /* dom_io is used as a sentinel for quarantined devices */
         if ( d == dom_io )
         {
-            int ret;
-
             /*
              * Try to de-assign: do not return error if it was already
              * de-assigned.
-- 
2.43.0



From xen-devel-bounces@lists.xenproject.org Tue Apr 07 10:34:55 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 07 Apr 2026 10:34:55 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1274860.1560849 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wA3ln-0000Jp-PS; Tue, 07 Apr 2026 10:34:55 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1274860.1560849; Tue, 07 Apr 2026 10: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 1wA3ln-0000Ji-MA; Tue, 07 Apr 2026 10:34:55 +0000
Received: by outflank-mailman (input) for mailman id 1274860;
 Tue, 07 Apr 2026 10:34:54 +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 1wA3lm-0000Df-8M
 for xen-devel@lists.xenproject.org; Tue, 07 Apr 2026 10:34:54 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wA3ll-003scJ-KD
 for xen-devel@lists.xenproject.org; Tue, 07 Apr 2026 12:34:53 +0200
Received: from [10.42.69.7] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <Michal.Orzel@amd.com>)
 id 69d4ddcc-2eae-0a2a0a5409dd-0a2a4507c6e0-4
 for <xen-devel@lists.xenproject.org>; Tue, 07 Apr 2026 12:34:53 +0200
Received: from [40.107.208.19]
 (helo=PH0PR06CU001.outbound.protection.outlook.com)
 by tlsNG-ef75cf.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.0)
 (envelope-from <Michal.Orzel@amd.com>)
 id 69d4ddca-ba2d-0a2a45070019-286bd0134b52-3
 for <xen-devel@lists.xenproject.org>; Tue, 07 Apr 2026 12:34:52 +0200
Received: from BLAP220CA0009.NAMP220.PROD.OUTLOOK.COM (2603:10b6:208:32c::14)
 by DS4PR12MB9684.namprd12.prod.outlook.com (2603:10b6:8:281::11) with
 Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9769.18; Tue, 7 Apr
 2026 10:34:44 +0000
Received: from BL6PEPF00022573.namprd02.prod.outlook.com
 (2603:10b6:208:32c:cafe::cd) by BLAP220CA0009.outlook.office365.com
 (2603:10b6:208:32c::14) with Microsoft SMTP Server (version=TLS1_3,
 cipher=TLS_AES_256_GCM_SHA384) id 15.20.9769.33 via Frontend Transport; Tue,
 7 Apr 2026 10:34:46 +0000
Received: from satlexmb07.amd.com (165.204.84.17) by
 BL6PEPF00022573.mail.protection.outlook.com (10.167.249.41) with Microsoft
 SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id
 15.20.9769.17 via Frontend Transport; Tue, 7 Apr 2026 10:34:43 +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.17; Tue, 7 Apr
 2026 05:34:43 -0500
Received: from XIR-MICHALO-L1.xilinx.com (10.180.168.240) by
 satlexmb07.amd.com (10.181.42.216) with Microsoft SMTP Server id 15.2.2562.17
 via Frontend Transport; Tue, 7 Apr 2026 05:34:41 -0500
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@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=KuebTZT8WYBrPrnpJZh3SOhjxXCNsG7rj7k0a9P5c66FXtsaJWZkNVf9fiZTicextd9Trak22fiKbwPdtIwLtUOcF1QZOJPxyLSELu2FwL0DompOXzRinD//Z4KOpUm+BvPDn+DBUwmqWz/AR7foaxzLdYrKnUlMsylAp9eVwYs+auNs4TUWjrPJ3vgiLl5PvvPiO61u4ve+8wVkA1BuFuuTQfBgONeTPSVnAoiAbc33EpIknt7Z1xbfq2hFmOB0DvQfgY76J1svcMgpsWht00qdEnY1ljKAmBzvtG0jd1FYa6qOw5XiXbQIbYQ0kF3gOLpiEnDb2J55OTditKh4Sg==
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com;
 s=arcselector10001;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1;
 bh=5FsyXc/HkQPSBh7FT68V2jh2g5O0eVPGIt38pfYk7xc=;
 b=L4t2+z50RWLlDtdbKbejWAFz49mVbph23myo8hTpTDr/36XmAEOJNPbc3kV9pu0AST53AqCRAOa7Zl9Hvt7RjEJUNWccsYIwhrcKCcUWC0vx+md2KZagA8mXaDGqv5y2Ad/lzPI+RZDe7iAorLZo1/qf/IrTF1XjeLZeLHgFZrebhMgOdhB259vbcTdHtLvSabbJ1ObI4D3iXs37Y41mkQe62dgtO/ZCANGYEUI5yg5u/qP6JeHoeuUuY/2BT6LPRQiau8N1FmzC7At9vjvJDBMBTVgqCPRYwyiwO+8KLw8mdhxK6RTs3IVrmf2Ps5zWyFdasqyMtAFA2z1VMA8O3Q==
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=5FsyXc/HkQPSBh7FT68V2jh2g5O0eVPGIt38pfYk7xc=;
 b=uGVyJkkFpjyy5pDkZxTZhqarRrJMkGM7AEaRCFzhqTQKI43MuKGXa83Sx6eo94oMZTyWtWRX0tcdSGUGBeGHDqr3IwsJKWZAHvg5/a1uFuUFjL+qX9jJ+618DtpE5HpTVMXIhoCw9wsZ+68NPm4EvVq2PWiwOBCj5xuLgaGkER8=
X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 165.204.84.17)
 smtp.mailfrom=amd.com; dkim=none (message not signed)
 header.d=none;dmarc=pass action=none header.from=amd.com;
Received-SPF: Pass (protection.outlook.com: domain of amd.com designates
 165.204.84.17 as permitted sender) receiver=protection.outlook.com;
 client-ip=165.204.84.17; helo=satlexmb07.amd.com; pr=C
From: Michal Orzel <michal.orzel@amd.com>
To: <xen-devel@lists.xenproject.org>
CC: Michal Orzel <michal.orzel@amd.com>, Julien Grall <julien@xen.org>, "Rahul
 Singh" <rahul.singh@arm.com>, Stefano Stabellini <sstabellini@kernel.org>,
	Bertrand Marquis <bertrand.marquis@arm.com>, Volodymyr Babchuk
	<Volodymyr_Babchuk@epam.com>
Subject: [PATCH 1/2] iommu/arm: smmu: Fix variable shadowing
Date: Tue, 7 Apr 2026 12:34:32 +0200
Message-ID: <20260407103434.90838-2-michal.orzel@amd.com>
X-Mailer: git-send-email 2.43.0
In-Reply-To: <20260407103434.90838-1-michal.orzel@amd.com>
References: <20260407103434.90838-1-michal.orzel@amd.com>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit
Content-Type: text/plain
X-EOPAttributedMessage: 0
X-MS-PublicTrafficType: Email
X-MS-TrafficTypeDiagnostic: BL6PEPF00022573:EE_|DS4PR12MB9684:EE_
X-MS-Office365-Filtering-Correlation-Id: 6c59e368-66fa-4f3b-960b-08de94914840
X-MS-Exchange-SenderADCheck: 1
X-MS-Exchange-AntiSpam-Relay: 0
X-Microsoft-Antispam:
	BCL:0;ARA:13230040|1800799024|36860700016|376014|82310400026|56012099003|18002099003|22082099003;
X-Microsoft-Antispam-Message-Info:
	qwDsbJwn3Nac1a6PpgDdC0Y0t14DfM9fDQ9OTIB7qJKT4VHLP4POJvOwQbHKokqTeda7bf4dK4/J9dAVI6HnjFsojK43z8XgH6ADTgrreJxPfW5KUVYTLO7E1bjeE3x5pMpLp4wtz5OEFxb9OPSp0KrDLwqas50gQXLUMvRLT+McJw8XnVxI/fmWFd5sE8gGMejEfGtAVfQqTI49qYuy/ApdGYKtYTcFVMJ3jCNyNq70q7iTEnSflb5PNX+pBXZMfFTlf7YTpecurbUSdLHhGGyZ9Dgt/Jx/CR2T7Q37FORUMuvrvxAxHCLmkMLTbC6OhYBd4frcVSjx6zXYD6s8uQEuxdsmsb0TMSg06bIyWH2ioaSWQ5kYihpBoJp4QG3+jh4zyXpaLVAdTdy3L9TytgNa2hlHNPx4fLd7s1efODDBiBOxB6Gst4IwmcbLLIiI2TJhPegy4stPBGdB8goG6qirbDfmDJ3P3gUSzcyS0X7AHDEfAX3UMqD1Tqs1xqKEAetGUV1Idd94/T1QpO6oCG2pGRvNWnrBhzVsaHUG+bUya5xos/Tka0vrh4hGDr1FMgREjcWY8HkRL9ymFqoyCD3TQWuuuRKpbnZD+p2ophTzTFTYm5DJjwxGECeEwnnuGxx//BaSYrYB/rMqmhfqZ4MeUKnzapQuz2oGji1sFM4wo6EXyumAaxmTBGEglI2vGFsZdgBDbf95y1IjDW5kk0P09boeDNIH3jy3vxcsMC9jXoM66wWyC5qpW9/uGQF28BYeQn6EXxoJaTrnofdurQ==
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)(36860700016)(376014)(82310400026)(56012099003)(18002099003)(22082099003);DIR:OUT;SFP:1101;
X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1
X-MS-Exchange-AntiSpam-MessageData-0:
	o5i2fVkrKIFq0qCSZOb7topoNTc25SVAThatCbo9/jAet/04sGxWWHAtT6rFUpbEpShmIrJOUXTcK2V8Ws1ppOaiUIR56cfwpGD0k6Oaq7cD7pGq7oKAomDqtHWE+YJS5zavZhmG4c+l2WC+fp2m1HjF7zS9ydhRKNOljVOFh7LuSYKRwdUJD58XtzATZpixu8Y1kGjz4mqoX9b0bbtGhylTG95XZ1sPfrEoiTsie2q0hT8TubYLrhkm0whWPXcG5EVSnqWwc2GdfbCts5mRIlV6xYGI5TkEwoss3LN+z/ABpeQybjWehhUX3Dc4oN6nTohepfUiFXhzEzSemxH5UT1Muc5oPx9FL9X/fY6JNWLmjiFuVsnfF+NM55ut3ia3nItcabPAw9q+9XnjNx9fkve03tGfh1sd7ZWBKfU7RUmDmN5cV6hCpri5GokTP1Nv
X-OriginatorOrg: amd.com
X-MS-Exchange-CrossTenant-OriginalArrivalTime: 07 Apr 2026 10:34:43.6124
 (UTC)
X-MS-Exchange-CrossTenant-Network-Message-Id: 6c59e368-66fa-4f3b-960b-08de94914840
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:
	BL6PEPF00022573.namprd02.prod.outlook.com
X-MS-Exchange-CrossTenant-AuthAs: Anonymous
X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem
X-MS-Exchange-Transport-CrossTenantHeadersStamped: DS4PR12MB9684
X-purgate-ID: tlsNG-ef75cf/1775558092-1294941E-461F5AE5/0/0
X-purgate-type: clean
X-purgate-size: 2052

Rename 'pdev' to 'pci_dev' in the dev_print_pci() macro to avoid
shadowing local 'pdev' variables at call sites.

Remove the unused 'ret' declaration from arm_smmu_dt_add_device_generic()
where the function-scope 'ret' is sufficient.

Fix shadowing of 'domain' in arm_smmu_assign_dev() by removing the
inner-scope redeclaration, using the function-scope variable instead.

This fixes MISRA C R5.3.

Signed-off-by: Michal Orzel <michal.orzel@amd.com>
---
 xen/drivers/passthrough/arm/smmu.c | 7 +++----
 1 file changed, 3 insertions(+), 4 deletions(-)

diff --git a/xen/drivers/passthrough/arm/smmu.c b/xen/drivers/passthrough/arm/smmu.c
index 22d306d0cb80..d63c9015510e 100644
--- a/xen/drivers/passthrough/arm/smmu.c
+++ b/xen/drivers/passthrough/arm/smmu.c
@@ -130,8 +130,8 @@ typedef enum irqreturn irqreturn_t;
         printk(lvl "smmu: %s: " fmt, dev_name((dev)), ## __VA_ARGS__);  \
     else                                                                \
     {                                                                   \
-        struct pci_dev *pdev = dev_to_pci((dev));                       \
-        printk(lvl "smmu: %pp: " fmt, &pdev->sbdf, ## __VA_ARGS__);     \
+        struct pci_dev *pci_dev = dev_to_pci((dev));                    \
+        printk(lvl "smmu: %pp: " fmt, &pci_dev->sbdf, ## __VA_ARGS__);  \
     }                                                                   \
 })
 #endif
@@ -927,7 +927,6 @@ static int arm_smmu_dt_add_device_generic(u8 devfn, struct device *dev)
 	if ( dev_is_pci(dev) )
 	{
 		struct pci_dev *pdev = dev_to_pci(dev);
-		int ret;
 
 		/* Ignore calls for phantom functions */
 		if ( devfn != pdev->devfn )
@@ -2788,7 +2787,7 @@ static int arm_smmu_assign_dev(struct domain *d, u8 devfn,
 		/* dom_io is used as a sentinel for quarantined devices */
 		if ( d == dom_io )
 		{
-			struct iommu_domain *domain = dev_iommu_domain(dev);
+			domain = dev_iommu_domain(dev);
 			if ( !iommu_quarantine )
 				return 0;
 
-- 
2.43.0



From xen-devel-bounces@lists.xenproject.org Tue Apr 07 10:37:21 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 07 Apr 2026 10:37:21 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1274883.1560858 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wA3o6-0001Nx-45; Tue, 07 Apr 2026 10:37:18 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1274883.1560858; Tue, 07 Apr 2026 10: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 1wA3o6-0001Nq-1B; Tue, 07 Apr 2026 10:37:18 +0000
Received: by outflank-mailman (input) for mailman id 1274883;
 Tue, 07 Apr 2026 10:37:17 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <jbeulich@suse.com>) id 1wA3o5-0001NY-2b
 for xen-devel@lists.xenproject.org; Tue, 07 Apr 2026 10:37:17 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wA3o4-004vN7-AN
 for xen-devel@lists.xenproject.org; Tue, 07 Apr 2026 12:37:16 +0200
Received: from [10.42.69.11] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <jbeulich@suse.com>)
 id 69d4de52-e002-0a2a0a5209dd-0a2a450b9d98-46
 for <xen-devel@lists.xenproject.org>; Tue, 07 Apr 2026 12:37:16 +0200
Received: from [209.85.221.41] (helo=mail-wr1-f41.google.com)
 by tlsNG-42698a.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.0)
 (envelope-from <jbeulich@suse.com>)
 id 69d4de5c-bca8-0a2a450b0019-d155dd29e101-3
 for <xen-devel@lists.xenproject.org>; Tue, 07 Apr 2026 12:37:16 +0200
Received: by mail-wr1-f41.google.com with SMTP id
 ffacd0b85a97d-43b87970468so3816833f8f.3
 for <xen-devel@lists.xenproject.org>; Tue, 07 Apr 2026 03:37:16 -0700 (PDT)
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-43d1e4f843dsm47235019f8f.37.2026.04.07.03.37.14
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Tue, 07 Apr 2026 03:37:14 -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=google header.d=suse.com header.i="@suse.com" header.h="Content-Transfer-Encoding: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=1775558236; x=1776163036; darn=lists.xenproject.org;
        h=content-transfer-encoding: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;
        bh=altMUzZOzZeondy7I1by4nBdv1QiqNwfOueTEhRITkI=;
        b=gJsXj4GhJjUI/IE7lpWgo5/qyO2QeIVN3F87uZFp7Kd5EbW1zRBY5nlrUkkDKkiMXk
         pqw+owzbuiDYcYNKLojdBpD8ulZoOVYKXOgq0Bt0FMu9EMoqpFJXPJtC3lmREZVL+rVY
         RDDPbeEnPXmMw/U5zjRZrQpp+HX9vDSar4QViQI8F+mlw5fa2adYrd2Tj+DYckYhBt66
         83236sSgZp4H06J23oMjhCWl+ClJ/fTA7HXG6ZPoFDeLz6Hz3cOqBDLqsS4I8NgMhoT/
         8rVJtIdusKnLrSG0bYWMWWeCh9LqNV3gsfI6k7vi1MoXe0n6cOYO0ZQk9h5RmCpnaCwa
         4r7g==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20251104; t=1775558236; x=1776163036;
        h=content-transfer-encoding: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;
        bh=altMUzZOzZeondy7I1by4nBdv1QiqNwfOueTEhRITkI=;
        b=LcWkWWvIxyPNtgpuo4MZB93QffbC4rAy/Qrp3o6U1tscORI8GDdQKeyzp+d5m99Eg8
         C05HEyB2ksLAX/rJa38KezmYW+wNThRaJ8vjL+dWnkMcF+qGRtmBMDv2lG60Q4VZAwDf
         CcLoFaa3ALJOzeI9sB1eqyCChKeu5xnB32hZLyLH0GRf5zN36UFVWBj94GsnlG1WU4J6
         i5uTD3oDq6AMdSlMQKM8V0nQ+uGbA5j0PZhAYFDBhzJuqOWdTxD6Xo9MQe++MZl3fRJe
         AKISYQJAOpuxLsbeCfvoBulJHFi0gAkzXmGLTOomutMawLRp9KcbdWARkPAgW83ita8N
         U6zg==
X-Forwarded-Encrypted: i=1; AJvYcCW7WoPF7yj8mvoi5wxfkFS3YlI7YEAWGnecxnuuewrxJuglL8O+YM608tPmhWYm2258BwDpgLTsayU=@lists.xenproject.org
X-Gm-Message-State: AOJu0YxjWMPnKDmcdVY7iWNbeXqV+cFi+qaYygRQsYT71ulNYoZiQKE9
	xCWjybF7qUmKsTu9VDmEUxUx/rB3GdKyaS50JU7/r2cz8RdNhB6DlrOUz3E5NLst4Q==
X-Gm-Gg: AeBDieuhMeg69D9BLEigYCl1SlGFe5FNt/VrC7o2JTvBsrMkVB2v5APNe4enQNRqPw2
	m1dt0tniU+9ve+fbrp7uHG9LBPYJClMPJeNdOQ2rULHUZlawD+QGxhzhkpr8mXUBXNMkOsvhThM
	CviddZfn2n0DVvvB4Na3kxjVlUdN37w5AXNQnqhC3woAUD/RsZ6IFwXP1hfA+W/KV1gl8vvtiXZ
	mYyTPcw+J17NnaOsNenbC6lQFsrrbjJq0tQoylo0jOMZiePsnMsw1qPMfaS4L1K1g3Qo58BjAGB
	EkuMvShJKCfA3wvxW5bcfuH+hcg/cdDe2GATUJ0yRHtcM6JcbdSIeLjfdBzFtkobehTuiWupiuO
	YWp9BsvMWD6dY+SaRmBRhnGeTtMGfxpgAv2YCBCcUKymn8bCsxxc6WfdPEwtqJJpOOcaXPWOrxd
	03tKoaczKiarZFvRDLQpD+RzTzCQko5MsDcoKG/n5iJ4nS+OFQz9VWI6afQw8E1hMyuH+IoIWgs
	t+6dLOVqRx+CB0=
X-Received: by 2002:a05:6000:4201:b0:43c:fed2:bb72 with SMTP id ffacd0b85a97d-43d29294691mr22272353f8f.19.1775558235511;
        Tue, 07 Apr 2026 03:37:15 -0700 (PDT)
Message-ID: <44abc205-c7b4-4aff-992f-25ddcadd38ec@suse.com>
Date: Tue, 7 Apr 2026 12:37:19 +0200
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH 2/5] llc-coloring: improve checking while parsing
To: Andrew Cooper <andrew.cooper3@citrix.com>,
 "xen-devel@lists.xenproject.org" <xen-devel@lists.xenproject.org>
Cc: 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.pau@citrix.com>, Kamil Frankowicz <kamil.frankowicz@cert.pl>
References: <63284ab7-8e38-4448-a789-1b9c23c4d95c@suse.com>
 <97d6ba6c-4ffe-4e1b-814a-d51a0bcf363e@suse.com>
 <884db6ba-19c3-4073-b1e4-631d286ec5d2@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: <884db6ba-19c3-4073-b1e4-631d286ec5d2@citrix.com>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
X-purgate-ID: tlsNG-42698a/1775558236-17B402A1-49F9C31D/0/0
X-purgate-type: clean
X-purgate-size: 2053

On 07.04.2026 12:30, Andrew Cooper wrote:
> On 24/03/2026 4:37 pm, Jan Beulich wrote:
>> We can easily avoid the risk of wrapping UINT_MAX <-> 0 by applying a
>> check against the compile-time-constant maximum number of colors.
>>
>> Additionally the overflow checks suffered from an off-by-1, as the parsed
>> ranges are inclusive (e.g. end == start being possible, requiring 1 array
>> slot, while availability of 0 slots was checked in that case).
>>
>> Fixes: 6cdea3444eaf ("xen/arm: add Dom0 cache coloring support")
>> Reported-by: Kamil Frankowicz <kamil.frankowicz@cert.pl>
>> Signed-off-by: Jan Beulich <jbeulich@suse.com>
>>
>> --- a/xen/common/llc-coloring.c
>> +++ b/xen/common/llc-coloring.c
>> @@ -76,8 +76,9 @@ static int __init parse_color_config(con
>>          else                /* Single value */
>>              end = start;
>>  
>> -        if ( start > end || (end - start) > (UINT_MAX - *num_colors) ||
>> -             (*num_colors + (end - start)) >= max_num_colors )
>> +        if ( end >= NR_LLC_COLORS || start > end ||
>> +             (end - start) >= (UINT_MAX - *num_colors) ||
>> +             (*num_colors + (end - start + 1)) >= max_num_colors )
>>              return -EINVAL;
>>  
>>          /* Colors are range checked in check_colors() */
>>
> 
> I think this is correct, so Acked-by: Andrew Cooper
> <andrew.cooper3@citrix.com>

Thanks.

> However, the parsing logic is also ridiculous.  Most of the complexity
> comes because of parsing a bitmap but storing it longhand in an array of
> unsigned ints.
> 
> Instead, the global variables default_colors, dom0_colors and xen_colors
> should be bitmaps sized by NR_LLC_COLORS, and d->llc_colours should be a
> bitmap sized by xen_num_colors (which itself is bound by NR_LLC_COLORS).
> 
> With the default of 32 colours, this would involve no memory allocation
> at all, even on 32bit builds of Xen.

It's pretty space inefficient, yes, but the parsing wouldn't become simpler
when using bitmaps, would it?

Jan


From xen-devel-bounces@lists.xenproject.org Tue Apr 07 10:47:55 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 07 Apr 2026 10:47:55 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1274894.1560866 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wA3yG-0003SZ-1l; Tue, 07 Apr 2026 10:47:48 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1274894.1560866; Tue, 07 Apr 2026 10:47: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 1wA3yF-0003SS-VM; Tue, 07 Apr 2026 10:47:47 +0000
Received: by outflank-mailman (input) for mailman id 1274894;
 Tue, 07 Apr 2026 10:47:46 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92) id 1wA3yD-0003OG-Ou
 for xen-devel@lists.xenproject.org; Tue, 07 Apr 2026 10:47:46 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wA3yB-001fI5-4r
 for xen-devel@lists.xenproject.org; Tue, 07 Apr 2026 12:47:44 +0200
Received: from [10.42.69.2] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <oleksii.kurochko@gmail.com>)
 id 69d4e0bf-bab6-0a2a0a5309dd-0a2a45028cdc-38
 for <xen-devel@lists.xenproject.org>; Tue, 07 Apr 2026 12:47:44 +0200
Received: from [209.85.208.51] (helo=mail-ed1-f51.google.com)
 by tlsNG-720697.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.0)
 (envelope-from <oleksii.kurochko@gmail.com>)
 id 69d4e0d0-42fa-0a2a45020019-d155d033f161-3
 for <xen-devel@lists.xenproject.org>; Tue, 07 Apr 2026 12:47:44 +0200
Received: by mail-ed1-f51.google.com with SMTP id
 4fb4d7f45d1cf-66dd0531d01so7359773a12.3
 for <xen-devel@lists.xenproject.org>; Tue, 07 Apr 2026 03:47:44 -0700 (PDT)
Received: from [192.168.1.6] (user-109-243-69-121.play-internet.pl.
 [109.243.69.121]) by smtp.gmail.com with ESMTPSA id
 4fb4d7f45d1cf-66e034c6750sm4120455a12.27.2026.04.07.03.47.42
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Tue, 07 Apr 2026 03:47:43 -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=20251104 header.d=gmail.com header.i="@gmail.com" header.h="Content-Transfer-Encoding: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=20251104; t=1775558864; x=1776163664; darn=lists.xenproject.org;
        h=content-transfer-encoding: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;
        bh=ty+nd2UtzHINDIw06cHHm4EklEis82OeP39lo5ZDPiQ=;
        b=m2DF4GJ/+NTRaskmGTrVjfgrzGXDgYK//O/z9PU2SWYtCcro3U5513fF3Su4K+4IfK
         8ylqzp1jtviLSbTGjoMuGmud22XjRyxdZRsAtFMhSpkzZ3S02SIl77nMOToHuK1Y3Xkc
         eDrsswirmbDnz1QDJLbQyO0W23/25hnepHDACDbqLmp85r2eiTp5rwQHo5tA9c0GEzhU
         okBrQzVHFLOpZvhsYX+uidh42dLc+z9VcZHFswG67wbjG0KCCcwtNq3yIE1c2e70wSV0
         nmtKWil/orVqFIgKO7c4PSLzNuXsda4vZPJLGwufMm0f6Tzab0Vmi/ry55o6pV8A4zEY
         yp9Q==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20251104; t=1775558864; x=1776163664;
        h=content-transfer-encoding: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;
        bh=ty+nd2UtzHINDIw06cHHm4EklEis82OeP39lo5ZDPiQ=;
        b=sEK1ZFLQTRsR+KYs6cZVFFQO6Z68VgA+yUWeJnRFClxfz7fk6OQYnaqt1UUeKaqcHU
         4HauNynY+wfG0q+2zlQVAkwElrh8DaT9owoyncauqONW9oBGzGluUsyoUGaV8SoIpl1y
         smVEiu0FJTtyL35h9UPQCjl2rAmMxtpJYGssszPNWomr59kbJjEm0e1zOA6Ln/Lvqdlt
         EbHpibXN0zA7EmP0/2X4OW0c8HnuriOJhM5WveR+Ja15O8KUx2mcXFGXWI202CzOjhT/
         yQOg/fsEtabv2vCNPrsrl3xuwfXEJINe6BDL87N/G5NGVbbhqCtAgVT85ZTAbUjMm+Mf
         FlHQ==
X-Forwarded-Encrypted: i=1; AJvYcCX5cDnvIyY5OWtrOX/rbp9uFGeGbsbYDnATlEGk6WuY7WfBnEMv6rOuM7IMNpZOw7zCnrkgjHYX0dI=@lists.xenproject.org
X-Gm-Message-State: AOJu0Yx2yPPfNJIUwfnlGYG+uLD/pZtLMUdCZKmG2wd5fpIYWhZC+gPb
	SHn06Rru8UZbd7IPde5MbGnurSaIy86lDuo8bjIfHqJ9qVU9a794VyQK
X-Gm-Gg: AeBDievpJ05MYCheMv6ABLZ+0pOPZmW7qR3H7arvDsi7kquOcqGaa3h6ERfsIC9ZkMk
	JxVaauHa+/9967JGrTr7uiGlB6Ulkvv97N0hhSnEkcTDW8Y32hTT2NWtDIEW1TPjIs8aXM0emyz
	t9dLafBn/MBQ8cSOkKxz8H8h49PT3flFdVNAhtjzSLpk1VGKth8oY1c7A6bGQ5w7AgEenk3GjHf
	TrN/KYjgdQYMRBfEiMolE0gF+qwpDgrh87FDK8fOkueqItJqcu6l/gpdScnZxk8b/NZHRVIWW0f
	3Pzs9foACkvlEkeVXMTVvISU/GchqgJ33ytwjwjwctUM1sOGw1X/N63dGZY/YC7QTtbD/6BqTh2
	zC9TDVPFDOm0w1KEdxK0QKcRNl9j3Oou4LMBeOp7NehnvpzNQFxC4+ewJ4phhLT/h8KBBxiM+Ax
	suG89Wf5PcexzDERs22m98CHm+loWAgqQf00cXpnHOiaS+Y3rI3KuihIUdZDfLrJLodiBRdONO/
	K7yCb0Yq7PBCA==
X-Received: by 2002:a05:6402:5254:b0:66d:d2f9:51f9 with SMTP id 4fb4d7f45d1cf-66e3f4d8b5emr8003271a12.11.1775558863738;
        Tue, 07 Apr 2026 03:47:43 -0700 (PDT)
Message-ID: <30c95ac5-bc1e-4cbd-9a8a-bb1c5ec53922@gmail.com>
Date: Tue, 7 Apr 2026 12:47:42 +0200
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH v1 04/27] xen/riscv: rework G-stage mode handling
To: Jan Beulich <jbeulich@suse.com>
Cc: Romain Caritey <Romain.Caritey@microchip.com>,
 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.pau@citrix.com>,
 Stefano Stabellini <sstabellini@kernel.org>, xen-devel@lists.xenproject.org
References: <cover.1773157782.git.oleksii.kurochko@gmail.com>
 <2c8f1ea25b8d3ec78b00510fbe604a87e759e194.1773157782.git.oleksii.kurochko@gmail.com>
 <fb4a8f75-d3f8-4e8c-9b45-1194c78659f5@suse.com>
Content-Language: en-US
From: Oleksii Kurochko <oleksii.kurochko@gmail.com>
In-Reply-To: <fb4a8f75-d3f8-4e8c-9b45-1194c78659f5@suse.com>
Content-Type: text/plain; charset=UTF-8; format=flowed
Content-Transfer-Encoding: 7bit
X-purgate-ID: tlsNG-720697/1775558864-45132CD1-A05B86F9/10/73395122804
X-purgate-type: spam
X-purgate-size: 4857



On 4/1/26 3:19 PM, Jan Beulich wrote:
> On 10.03.2026 18:08, Oleksii Kurochko wrote:
>> Rework G-stage mode handling to make the selected mode descriptor reusable
>> outside of p2m initialization.
>>
>> As max_gstage_mode is going to be reused by code that creates CPU nodes for
>> guest domains, not only max_gstage_mode->mode but also max_gstage_mode->name
>> is required.
> 
> I guess I'm not DT-savvy enough to understand why that would be.

There is an optional mmu-type property for each cpu:
https://github.com/riscv-non-isa/riscv-device-tree-doc/blob/master/bindings/riscv/cpus.txt#L73



> 
>> To support this, make max_gstage_mode a global pointer to one of
>> the entries in a global modes[] array, and remove get_max_supported_mode().
>>
>> Update struct p2m_domain to store a pointer to a mode descriptor instead of
>> embedding the structure directly.
>>
>> Refactor the modes[] array so that mode->name contains only the MMU scheme
>> name (without the "x4" suffix), as this value is reused when filling the
>> maximum MMU type passed to the guest. According to DT bindings [1], the MMU
>> type must not include the "x4" suffix. Use "none" for the Bare mode to match
>> the DT binding requirements.
> 
> I expect this DT aspect is also why Sv changes to sv in the table? (Which
> is a little unhelpful for the printk() where it's used.)

Yes. According to the link above the following options could be passed:
                             "riscv,sv32"
                             "riscv,sv39"
                             "riscv,sv48"

> 
>> Adjust modes[]->paging_levels to represent the maximum paging level rather
>> than the total number of levels. This ensures that P2M_ROOT_LEVEL() and its
>> users behave correctly without relying on hardcoded p2m mode values.
>>
>> Finally, drop __initconst from the modes[] declaration, as the array is
>> referenced via p2m->mode and max_gstage_mode beyond the init stage.
>>
>> [1] https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/tree/Documentation/devicetree/bindings/riscv/cpus.yaml?h=v6.19-rc3#n82
> 
> Is a reference into Linux doc really providing something "canonical"? Surely
> there's an independent spec somewhere?

I wasn't able to find better source for arch-specific definitions. For 
example, the source mentioned above has outdated mmu-type properties 
which should also contain riscv,sv57 and riscv,none.

> 
>> --- a/xen/arch/riscv/p2m.c
>> +++ b/xen/arch/riscv/p2m.c
>> @@ -45,18 +45,32 @@ struct p2m_pte_ctx {
>>       unsigned int level;          /* Paging level at which the PTE resides. */
>>   };
>>   
>> -static struct gstage_mode_desc __ro_after_init max_gstage_mode = {
>> -    .mode = HGATP_MODE_OFF,
>> -    .paging_levels = 0,
>> -    .name = "Bare",
>> -};
>> -
>>   /*
>>    * Set to the maximum configured support for IPA bits, so the number of IPA bits can be
>>    * restricted by external entity (e.g. IOMMU).
>>    */
>>   unsigned int __read_mostly p2m_ipa_bits = PADDR_BITS;
>>   
>> +static const struct gstage_mode_desc modes[] = {
> 
> As a function scope static this was a fine identifier. Please consider whether
> with the wider scope gstage_modes[] might not be better.
> 
>> +    /*
>> +     * Based on the RISC-V spec:
>> +     *   Bare mode is always supported, regardless of SXLEN.
>> +     *   When SXLEN=32, the only other valid setting for MODE is Sv32.
>> +     *   When SXLEN=64, three paged virtual-memory schemes are defined:
>> +     *   Sv39, Sv48, and Sv57.
>> +     */
>> +    [0] = { HGATP_MODE_OFF,    0, "none" },
>> +#ifdef CONFIG_RISCV_32
>> +    [1] = { HGATP_MODE_SV32X4, 1, "sv32" }
>> +#else
>> +    [2] = { HGATP_MODE_SV39X4, 2, "sv39" },
>> +    [3] = { HGATP_MODE_SV48X4, 3, "sv48" },
>> +    [4] = { HGATP_MODE_SV57X4, 4, "sv57" },
>> +#endif
>> +};
> 
> The dedicated initializer form isn't adding any value here (whereas it slightly
> hampers readability). You really don't want the array to be sparsely populated,
> so perhaps better to leave as it was before?

I need modes[] to be outside of gstage_mode_detect() as it then could be 
re-used. For example, if expected G-stage mode should be passed by DTS 
property then in DTS property we'll have something like:
	chosen {
             ...
             DOMU1 {
                 mmu-type="riscv,sv48";
                 ...
             }
             ...
         }

And I will need to have another functions something like:
   static unsigned int find_gstage_mode(const char *mmu_type) {...}
which will re-use modes[] to find a correspondent mode and return an 
index (or return just correspondent mode) for that mode to then re-use 
it to initialize p2m->mode:
     p2m->mode = &modes[find_gstage_mode(mmu_type)];

~ Oleksii


From xen-devel-bounces@lists.xenproject.org Tue Apr 07 10:52:36 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 07 Apr 2026 10:52:36 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1274904.1560876 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wA42t-00052L-MW; Tue, 07 Apr 2026 10:52:35 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1274904.1560876; Tue, 07 Apr 2026 10:52: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 1wA42t-00052E-Ji; Tue, 07 Apr 2026 10:52:35 +0000
Received: by outflank-mailman (input) for mailman id 1274904;
 Tue, 07 Apr 2026 10:52: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 1wA42s-000526-O4
 for xen-devel@lists.xenproject.org; Tue, 07 Apr 2026 10:52:34 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wA42s-001KgA-3o
 for xen-devel@lists.xenproject.org; Tue, 07 Apr 2026 12:52:34 +0200
Received: from [10.42.69.4] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <andrew.cooper@citrix.com>)
 id 69d4e1e0-bab6-0a2a0a5309dd-0a2a4504ca0e-48
 for <xen-devel@lists.xenproject.org>; Tue, 07 Apr 2026 12:52:34 +0200
Received: from [52.101.53.38]
 (helo=BL0PR03CU003.outbound.protection.outlook.com)
 by tlsNG-ebf023.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.0)
 (envelope-from <andrew.cooper@citrix.com>)
 id 69d4e13c-bb33-0a2a45040019-346535262dcf-3
 for <xen-devel@lists.xenproject.org>; Tue, 07 Apr 2026 12:49:33 +0200
Received: from CH8PR03MB8275.namprd03.prod.outlook.com (2603:10b6:610:2b9::7)
 by DM6PR03MB5210.namprd03.prod.outlook.com (2603:10b6:5:246::20) with
 Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9769.20; Tue, 7 Apr
 2026 10:49: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%6]) with mapi id 15.20.9769.018; Tue, 7 Apr 2026
 10:49: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=zRYiNjid0QOkqhhbO+oI5qzAStROVUw0aV7ubXE4m7i0Q0HB92S98aggEjDmxXla1xA3lRFQGjWjPT9pnQo2pGgaIny5u2Sjdyb3gIt3McHnOfLj4ey+Xj8/wwQNlr49Qdvn4FpwMhmFhwpvS+eAr4ymlXXkkCtqXjhuqB+Ru/QKnC/gsv62p78MB53Kn8qj20hxzUBWj+uv5u2Ld2I8GrRSJlieKolFgGJT8K+A1Vbud8Mcw7NZjZSTHdk1N4a9a6Fa8z9TmLfr03wudPpQ2RWnY7+ydFdNTkzBnHbs2ttBkeRWaHiNW814+jh5xCDaf9NLDyOHHgX3rNZOOj/7HA==
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com;
 s=arcselector10001;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1;
 bh=biOqghbDfwMe3yFuMk5+Lryn4VJSb1aKAF7P5vXXWkw=;
 b=agAfJCfx109AEkCV4LVHYt9GhshwDUFR/3tjCPvYuadbufeSGWafTUiMB0J8GG0DuE6dNvuHsfE6NwETCypppsao5nG39gWwnARxEk5Z6+qUbGmH0ByqY6y2ICuhUU/y4bBWB5vdWbU6uYKIcnfsEq3mRQYP/gUDIhhQG2R5bNqeRnzJtWFf+YRcRLUiKBRKxVAE+NLNf8q76UtPhcWwCJG9Q0AnAxrI2eZaf9OZNNHr+6LEhGw6c3MRHgq4ZG+Fwooi/hjx6sM5Sk+FWBAor0yvAiQykEzQpAUJf19jb/yKXmUwADGVmshMaVVgycsCw56gqOMLmFiimPNXyoUvDw==
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=biOqghbDfwMe3yFuMk5+Lryn4VJSb1aKAF7P5vXXWkw=;
 b=v2/OhrvXDPPsB0/yNad9BpnxC+DtOaDOwHrFJqzPIEKrbZPrLNmLN/ls33XMDSblEnrBC4MGqPuQzY/yBI9PBa1vd6vz/z5zi8JCefFZ3DiXlhrheKaFSwnMECZnhAxREULFFnkwpIofeF30ZA+ospMwzep66VsEPIj/DqBrnJs=
Authentication-Results: dkim=none (message not signed)
 header.d=none;dmarc=none action=none header.from=citrix.com;
Message-ID: <3ea7af3e-811e-44ba-8f4f-d46acbd9d71b@citrix.com>
Date: Tue, 7 Apr 2026 11:49:26 +0100
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>, =?UTF-8?Q?Roger_Pau_Monn=C3=A9?=
 <roger.pau@citrix.com>, Kamil Frankowicz <kamil.frankowicz@cert.pl>
Subject: Re: [PATCH 2/5] llc-coloring: improve checking while parsing
To: Jan Beulich <jbeulich@suse.com>,
 "xen-devel@lists.xenproject.org" <xen-devel@lists.xenproject.org>
References: <63284ab7-8e38-4448-a789-1b9c23c4d95c@suse.com>
 <97d6ba6c-4ffe-4e1b-814a-d51a0bcf363e@suse.com>
 <884db6ba-19c3-4073-b1e4-631d286ec5d2@citrix.com>
 <44abc205-c7b4-4aff-992f-25ddcadd38ec@suse.com>
Content-Language: en-GB
From: Andrew Cooper <andrew.cooper3@citrix.com>
In-Reply-To: <44abc205-c7b4-4aff-992f-25ddcadd38ec@suse.com>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
X-ClientProxiedBy: LO4P123CA0401.GBRP123.PROD.OUTLOOK.COM
 (2603:10a6:600:189::10) To CH8PR03MB8275.namprd03.prod.outlook.com
 (2603:10b6:610:2b9::7)
MIME-Version: 1.0
X-MS-PublicTrafficType: Email
X-MS-TrafficTypeDiagnostic: CH8PR03MB8275:EE_|DM6PR03MB5210:EE_
X-MS-Office365-Filtering-Correlation-Id: e7238f26-1b97-4635-8569-08de9493590e
X-MS-Exchange-SenderADCheck: 1
X-MS-Exchange-AntiSpam-Relay: 0
X-Microsoft-Antispam:
	BCL:0;ARA:13230040|376014|1800799024|366016|56012099003|22082099003|18002099003;
X-Microsoft-Antispam-Message-Info:
	5lUbxJS6Yqtmgyt6VoDm81jRQga8rvqH4JgPDnSBk+TPyt+DFOUn0fq9TA+7CbW+5f0shVnI0IHE00+5GYa2kgbIPIykkSs4qyeabwad2u2GYLvm+qQByKCVx8E1LN87wGFkH++q3QEEl6XUQYQcEy39hwsSVQ0fIiqMqeNuBWlaG7ZPCwcwPhtPDD7VVf5QtUbYRZGK99f8vn4V7kP0x7RraD78MXN7XEX1+rLHWw2RNcoFUF4irqtCmKHnqJ3t/BqESdfh7oQTOk2HNohZOHC7QXMjbGoyfZpKti7GXZlUJ/5fPBuHfJTXjlzTJLTthYMV1gWX3bOkw+WAHCOUAH7293TKM9BPil4hAPXNPLejgDNSp/b3jyKBg5TqJE6cqLRxLSnYSMREdjVIZUuCeB+UQkIH8H7OxXbz7Z/J+rbjkYc9ytaGmqLBEhrJCMTDoMyd2CuAAz/3pE/an7/oxCyemUpKtNWKG33hgXzHFolt/5xqWEjLUq7vrwy98s+fFIxfMS6Lx2t6WqdvPnNGgd3bp0rFa8ArWuAApKl094RB8jWF3CJC86NhiqreRYcxDk2RiC+lCihNoxuT7ijCVOisMSB+Nb6haZch81fQd2Ue1CI8vkrrT43soLPOfOzd4VJX5lWo5Fdqkwb7pl6mY7U+/ggz1mabu4A13M6Zt5tVsV/dR6fI1zXcD91/XCaatCLvtdv6BIHgRjryfN9Zhq5+HTsAL9mh3PM67ZRo86A=
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)(1800799024)(366016)(56012099003)(22082099003)(18002099003);DIR:OUT;SFP:1101;
X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1
X-MS-Exchange-AntiSpam-MessageData-0:
	=?utf-8?B?SDd4NGkxZ2ZQSW50ZkoxYTRyNHRQakNvaXY2ZzMyTS81amVVV2JZUERWdUI1?=
 =?utf-8?B?UUQwZUp2N1V6MjlsMWZwQVBJY0ZpczdEYlFvU0phbEdWQ25qODUzdVVTQnRt?=
 =?utf-8?B?aXlnaXorbytoWDJIdVhFVVhmUFJhM0J3eEdZWkpJelU3OVljZXZ4cVpibWdL?=
 =?utf-8?B?THlMaWVUZk1wOUJxbk45bHFoL09GME1qVHppYzZrMGlFV2tyN0JNUjBsRC9l?=
 =?utf-8?B?dnJmT2ZRWWZuOUJkaUlUQWhSVTkyY3Z6RkN3U2dFT2lRRjd3Rmg4TXA5VnFu?=
 =?utf-8?B?dzFXU0xkMkVLYlZVOEFaN00vTnVXUWlwUzFaeEpjaGtGVzBLdStUR1h6MHht?=
 =?utf-8?B?Y0hJMkZTVmovQm1WV0hoRTBtOSt0TTVMMGNFZXA3QStVQVdmRmZIWGNUTVIz?=
 =?utf-8?B?cjQ3b0M4b2UvN055Z2srZ0NKbGdzeFFZS0U5QlBwRHZ4QVNxREJ6MnlIaFJH?=
 =?utf-8?B?Vk93OG9NZ2tsUXpMVi9raEpiSzJYdXZwbWNaNnBicjl4bFd2bkpUTFR6UTVP?=
 =?utf-8?B?NUhJTk85cUdHYXhTMDVSRnhnd0VXNlhvS0pxSTM0TVhQaVYzWlVVVGlYVDJN?=
 =?utf-8?B?RGZmMDN3YVgyaWd6YVJvU1hsOGk2OFh4WUFFQlFWL2JSK2Q4MTI3cHBIdTk5?=
 =?utf-8?B?TU5qeVl3M1Z5SGMvdU1mRVV5VWxiOHM2dktrUXVDdGZFSThKWVIrSnVLclIx?=
 =?utf-8?B?Mk94b1c5N0prcUJINWJRNVFvV1ZLV0hHNHhOOG00QXloajNVUmNaZjg3aUo4?=
 =?utf-8?B?MmxQekZGRTQ5bklGZTB0UmVZaDcxVWRMaUs0aXJNVGxYeEhPWW9lS096STRr?=
 =?utf-8?B?Wm9ZZ2txNlZlM0UwclAxY3RIUCtuUWlNQU5PWXREdW5tbi81RnpmME5UaVE0?=
 =?utf-8?B?MERhZ2tDSUU1Wjg4OXYyVFIxQzZRa1JhM2VrcXdVQ3RGdU1RUCsyeDZFYVZX?=
 =?utf-8?B?clcyQnZ2R1RacXNydHByWWVONTcwZDRCaEpvMGNKQjFPd3AyZUZGRVo4SjFO?=
 =?utf-8?B?UzlkSDdVRW1sYUFHUzg0UXE2dW1xQVpZMTN5WXVQSjlNNlVSSmxVOHUvMjV2?=
 =?utf-8?B?OWJETi9waDF6RnBrMHlFb09jeEhuZ1ZxNW1zK0NXbzh1UmF0Z2ZCOEdRYzkv?=
 =?utf-8?B?UFdoU0NIZzRCQW1pSmxFZ0JaSm42ai8zYXEwNGN5bGNCYVp2NHN5S1JCU2Nj?=
 =?utf-8?B?eHUreEhtWW9UZ2NzUlFKWTlWR1YzdWxLV1pjZU8yRzJic0ROVjdSU1doOGhO?=
 =?utf-8?B?NXlFcTFoYjV3K0RXT04xTUc4a1NzUjRpSmJsRkRzRzgxbDNCUExtbzFtU2tq?=
 =?utf-8?B?Y3Y0dGt1MXlZYzNJbmVMZE9wMERXTmZIaWl6aHh2Rlp2ZDAwNEtBRjNpNzN4?=
 =?utf-8?B?U0xlSG9lb0FlSHhuQ2drTVFVak9PWmUzUml0NVBqMVVlZHZGYjZmZC84bzJ1?=
 =?utf-8?B?RGNIeWhhSk95OVJLWUwzdFZRc0U5QmFJNnNhTStDNXVFSUF3d1kycnNjVXMr?=
 =?utf-8?B?VmVuNFJoTlNuMFE4YXczZkcrZGpWTUpPOUZ0UmtXRHVJR0lyaEtvZG1lckww?=
 =?utf-8?B?VG5hUWRsazFFM0tBQUxueERDZlgyVEE4aERJZjFGTTRkSEZBR09vRERZbmN3?=
 =?utf-8?B?SXJtRDkzcDFLbXBXMXBCekxsZGZsT3BvSEdwaXM4bjZzMGNmZ3FZdm1yZ1dQ?=
 =?utf-8?B?SGhhY3NlUWhZOUxyTjJ0c2JQRDZSajBtS1F1UzN4ZkNRZ01QbCs5dytDYndB?=
 =?utf-8?B?UXA2dFA5czh2SHZTMWdJa1JXaWRXN2NMMHUzS1RwczFkaWFlcjZHd2RIa01x?=
 =?utf-8?B?YStobUdpV1ZFR2ZJTFBqQm5JakZOdGVES0JYeGdsZlRVd3RIZGlhY2dnVng1?=
 =?utf-8?B?ODRLQ0paZFVYVkFPbWtMd1ZjOGJXcXEzTkk4bitQa08xdjdobW1rU3ZmSzF5?=
 =?utf-8?B?dDd5VTdxUW9RemRoUytldWVpRUJTV3dsWEthbVdQZWh2ZlJidUw4YytjK3U5?=
 =?utf-8?B?MVpaOXdxNnhRU2x2THZnMkhJN0R6UTFURVBVNzNsYTJjWE9kS2R5V00rTjNR?=
 =?utf-8?B?dEt1M3BsQTVsblRZc0o4WXM5S0J5clZMZ0xDK1BxcGl0RkFWSUcrSVVkdGxQ?=
 =?utf-8?B?c1hqN0ZENE1uYjlESXErQjV4ditIVkxMMTJjVUk0Q3lva1BjN2NCcTg4c24y?=
 =?utf-8?B?ZUY1WllVY1MwQU0yZzA3SzZ5ZmIyNkxmaWVSMC9Qekg4NGJ5cEw3TzBrb2ZN?=
 =?utf-8?B?TmdRMEMvYUlKWXZXaDdIQzAxc0hXeWtNUDl6eDl5MStXelRxTzdHc1U0b0Zy?=
 =?utf-8?B?ckpoT25vSVlpWWdKVGVjVEZpL1pwcURpUDNHRFlsODNxU0ZmMXBjUU9CMVNn?=
 =?utf-8?Q?seHoUJn59PUVXUTo=3D?=
X-OriginatorOrg: citrix.com
X-MS-Exchange-CrossTenant-Network-Message-Id: e7238f26-1b97-4635-8569-08de9493590e
X-MS-Exchange-CrossTenant-AuthSource: CH8PR03MB8275.namprd03.prod.outlook.com
X-MS-Exchange-CrossTenant-AuthAs: Internal
X-MS-Exchange-CrossTenant-OriginalArrivalTime: 07 Apr 2026 10:49:30.9132
 (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: TZPox64RM/IXdNyrvYgHDKQm+kbn0csb49T3i++emHbRM5/IQEXfxEpPINE4+x+tIfTE4ExXltmlIxeN1+pYO6T5+xytp2rNwohhCfEMa14=
X-MS-Exchange-Transport-CrossTenantHeadersStamped: DM6PR03MB5210
X-purgate-ID: tlsNG-ebf023/1775558973-B212551B-0EA94B3C/37/8702371926-1425033
X-purgate-type: bulk
X-purgate-size: 2342

On 07/04/2026 11:37 am, Jan Beulich wrote:
> On 07.04.2026 12:30, Andrew Cooper wrote:
>> On 24/03/2026 4:37 pm, Jan Beulich wrote:
>>> We can easily avoid the risk of wrapping UINT_MAX <-> 0 by applying a
>>> check against the compile-time-constant maximum number of colors.
>>>
>>> Additionally the overflow checks suffered from an off-by-1, as the parsed
>>> ranges are inclusive (e.g. end == start being possible, requiring 1 array
>>> slot, while availability of 0 slots was checked in that case).
>>>
>>> Fixes: 6cdea3444eaf ("xen/arm: add Dom0 cache coloring support")
>>> Reported-by: Kamil Frankowicz <kamil.frankowicz@cert.pl>
>>> Signed-off-by: Jan Beulich <jbeulich@suse.com>
>>>
>>> --- a/xen/common/llc-coloring.c
>>> +++ b/xen/common/llc-coloring.c
>>> @@ -76,8 +76,9 @@ static int __init parse_color_config(con
>>>          else                /* Single value */
>>>              end = start;
>>>  
>>> -        if ( start > end || (end - start) > (UINT_MAX - *num_colors) ||
>>> -             (*num_colors + (end - start)) >= max_num_colors )
>>> +        if ( end >= NR_LLC_COLORS || start > end ||
>>> +             (end - start) >= (UINT_MAX - *num_colors) ||
>>> +             (*num_colors + (end - start + 1)) >= max_num_colors )
>>>              return -EINVAL;
>>>  
>>>          /* Colors are range checked in check_colors() */
>>>
>> I think this is correct, so Acked-by: Andrew Cooper
>> <andrew.cooper3@citrix.com>
> Thanks.
>
>> However, the parsing logic is also ridiculous.  Most of the complexity
>> comes because of parsing a bitmap but storing it longhand in an array of
>> unsigned ints.
>>
>> Instead, the global variables default_colors, dom0_colors and xen_colors
>> should be bitmaps sized by NR_LLC_COLORS, and d->llc_colours should be a
>> bitmap sized by xen_num_colors (which itself is bound by NR_LLC_COLORS).
>>
>> With the default of 32 colours, this would involve no memory allocation
>> at all, even on 32bit builds of Xen.
> It's pretty space inefficient, yes, but the parsing wouldn't become simpler
> when using bitmaps, would it?

Yes it would.

The current logic has opencoded bitmap helpers, and removing *num_colors
simplifies all the boundary conditions (you simply don't need a cursor
when collecting into a real bitmap.)

~Andrew


From xen-devel-bounces@lists.xenproject.org Tue Apr 07 11:27:42 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 07 Apr 2026 11:27:42 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1274916.1560886 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wA4ad-000185-Ai; Tue, 07 Apr 2026 11:27:27 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1274916.1560886; Tue, 07 Apr 2026 11:27: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 1wA4ad-00017y-6D; Tue, 07 Apr 2026 11:27:27 +0000
Received: by outflank-mailman (input) for mailman id 1274916;
 Tue, 07 Apr 2026 11:27:25 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <Stewart.Hildebrand@amd.com>) id 1wA4ab-00017e-Oo
 for xen-devel@lists.xenproject.org; Tue, 07 Apr 2026 11:27:25 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wA4ab-00FxYz-4B
 for xen-devel@lists.xenproject.org; Tue, 07 Apr 2026 13:27:25 +0200
Received: from [10.42.69.2] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <Stewart.Hildebrand@amd.com>)
 id 69d4ea0f-bab6-0a2a0a5309dd-0a2a4502a196-18
 for <xen-devel@lists.xenproject.org>; Tue, 07 Apr 2026 13:27:24 +0200
Received: from [52.101.85.26]
 (helo=BYAPR05CU005.outbound.protection.outlook.com)
 by tlsNG-720697.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.0)
 (envelope-from <Stewart.Hildebrand@amd.com>)
 id 69d4ea1a-42fa-0a2a45020019-3465551ad76b-3
 for <xen-devel@lists.xenproject.org>; Tue, 07 Apr 2026 13:27:24 +0200
Received: from BN9PR03CA0941.namprd03.prod.outlook.com (2603:10b6:408:108::16)
 by CH3PR12MB9454.namprd12.prod.outlook.com (2603:10b6:610:1c7::16)
 with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9769.21; Tue, 7 Apr
 2026 11:27:16 +0000
Received: from BN1PEPF0000468D.namprd05.prod.outlook.com
 (2603:10b6:408:108:cafe::c1) by BN9PR03CA0941.outlook.office365.com
 (2603:10b6:408:108::16) with Microsoft SMTP Server (version=TLS1_3,
 cipher=TLS_AES_256_GCM_SHA384) id 15.20.9769.27 via Frontend Transport; Tue,
 7 Apr 2026 11:27:16 +0000
Received: from satlexmb07.amd.com (165.204.84.17) by
 BN1PEPF0000468D.mail.protection.outlook.com (10.167.243.138) with Microsoft
 SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id
 15.20.9769.17 via Frontend Transport; Tue, 7 Apr 2026 11:27:16 +0000
Received: from SATLEXMB04.amd.com (10.181.40.145) by satlexmb07.amd.com
 (10.181.42.216) with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.2.2562.17; Tue, 7 Apr
 2026 06:27:15 -0500
Received: from satlexmb08.amd.com (10.181.42.217) by SATLEXMB04.amd.com
 (10.181.40.145) with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2507.39; Tue, 7 Apr
 2026 06:27:15 -0500
Received: from [172.18.74.250] (10.180.168.240) by satlexmb08.amd.com
 (10.181.42.217) with Microsoft SMTP Server id 15.2.2562.17 via Frontend
 Transport; Tue, 7 Apr 2026 06:27:14 -0500
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@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=dekDUFsnxRjJ9pN4Mu+LW4fMGaU2qHixsrR+4HXVuwEC2Js8LffbmVhjDRze9h6kgxVP+AZPY/1VDdKWbsgM6AUuUkaObD4ZVVuHSC36B01N5Ax3eYqy4obYR5Zg/QoPq3CSc9UZTqyuEJKHuplL3dYErp2p+PPJZ2hqvSHlNIgYsblxnLOByOjrRc99X2qvfR9q1LKosvHTK6k1r3D7Vne5SRShfrL6qNtNDESSTp3o8qaxPm0K1YuTVcMc6AeVt6YzyScPaWC6z8VfeHGqABekOjvbjH1N46R3yWPYvMJZrzxS8uxaOd7UWZW+gcsBgsNprNtWYe9cafVKBkU5lg==
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com;
 s=arcselector10001;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1;
 bh=YfsFG8/SjaYpBSB12NCcvkBPt3OK1vfCpzahKSH4t90=;
 b=YCn6zgmAZ1AWcGDYSBkiLrugU4DLUyEB2j5LPwg0NUW9X2e/+nccEIzy2ognbVMq9D636P45HazClVtHlnjCX9uXQpHDPWKWmU9WkmTtwr0Ura1uqgRdiZkbVJhWvNQViSup8qj42WsZXMaIdgVDoZ9bY6wZsOrIIoKuNU+IurEnYhRGQSie7QAAp6zg/lJdJ4jetOViMCfKI08YmZuMpjTqU+KCtUR9YrS34+GQJ8GaaLLoCjJe9Vqr0wi9ZpFHjy14bXtcLAuHZ33advgTURWAbAnqrNNT6PGZvtr9WuK3rQl+nOHmcCvCXTsvtk4Wj5Aqe3QO33mL+HSij6z1vw==
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=YfsFG8/SjaYpBSB12NCcvkBPt3OK1vfCpzahKSH4t90=;
 b=Acl8SLo2xG/dkwfkpYtLjh+5sxyRT+wvNZI/EghRpJhz+2/ytG2siS101uu5ZQ6iOEBHEfXBxVu4vqt2Fa6foMn9Gip7Dkj6rdPF1TPaxbdQxC9DsDX1a0HSyW1AsQyywvlgrDZ2pH6o6Fumi9pr+gii6g7DArN+m/Wg9hHQ0Dc=
X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 165.204.84.17)
 smtp.mailfrom=amd.com; dkim=none (message not signed)
 header.d=none;dmarc=pass action=none header.from=amd.com;
Received-SPF: Pass (protection.outlook.com: domain of amd.com designates
 165.204.84.17 as permitted sender) receiver=protection.outlook.com;
 client-ip=165.204.84.17; helo=satlexmb07.amd.com; pr=C
Message-ID: <7ea3a5d8-f9ff-4296-9b3e-07b9ba184e6f@amd.com>
Date: Tue, 7 Apr 2026 07:27:16 -0400
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH v3] arinc653: don't assume Dom0 is the control domain
To: Jan Beulich <jbeulich@suse.com>
CC: Nathan Studer <nathan.studer@dornerworks.com>, Stewart Hildebrand
	<stewart@stew.dk>, "xen-devel@lists.xenproject.org"
	<xen-devel@lists.xenproject.org>, =?UTF-8?B?SsO8cmdlbiBHcm/Dnw==?=
	<jgross@suse.com>
References: <89d17a24-0a1f-4f3f-ac2f-f3701a8d78dd@suse.com>
 <4a4c011e-9666-4416-be1b-33d1dcad5afe@suse.com>
 <73e51afc-ae7c-4d08-9054-75dab660bf42@suse.com>
 <ca934061-f3e2-4511-bdad-465c4f2d0de1@suse.com>
 <fa04f9e1-bc9e-4b34-84f4-dc7ca8999eb3@amd.com>
 <4dfd48a9-37c1-4f28-87f3-19646a339b08@suse.com>
Content-Language: en-US
From: Stewart Hildebrand <stewart.hildebrand@amd.com>
In-Reply-To: <4dfd48a9-37c1-4f28-87f3-19646a339b08@suse.com>
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: 8bit
Received-SPF: None (SATLEXMB04.amd.com: stewart.hildebrand@amd.com does not
 designate permitted sender hosts)
X-EOPAttributedMessage: 0
X-MS-PublicTrafficType: Email
X-MS-TrafficTypeDiagnostic: BN1PEPF0000468D:EE_|CH3PR12MB9454:EE_
X-MS-Office365-Filtering-Correlation-Id: f53c86a0-05db-409c-32a7-08de94989f48
X-MS-Exchange-SenderADCheck: 1
X-MS-Exchange-AntiSpam-Relay: 0
X-Microsoft-Antispam:
	BCL:0;ARA:13230040|376014|36860700016|30052699003|82310400026|1800799024|56012099003|22082099003|18002099003;
X-Microsoft-Antispam-Message-Info:
	ZKJd0ICmmE0fTBFwkP2Y3icRB+CeJsVJOvXT/uTL+x+KStmv71Wl5dUZxP5K2A3pCMaRu0aztT0UrOgWQd29HLafGm1v6npyTCG7BPC2k2Q9yLK3Yl5QUh59CE9+wpQRLMVNdUXs8JaQ6v4QkqTl/zvKs91+jAc4U9lYkgLu3tCMFTf8xH2QdIGrs/zFWDQ+YzGsB2G6UMtGmvbDJviXiZxvbfHcwRqPL4O5CfA71/ldYIGQmQM03eZh5bkn1oAbayaiX9Pnq2BQ3iYjmsOKzzeD59r5Y36MaBTdwpDTgQB0dPIy3nDja4l49NtSdra0ZAtwThy8oXybjeUDUx1rxa+y1YqiTPvHVXppTSpCQFyYcVdmxlDQ7kyXEOb9si11w5WZyFd/TXOSNOkBSt8v5K9U+gylsI/6JKP0YlIP9vmWzSU70huw4R11+zAtjIgHd5BaUKGF/5tXwpRElLV9X6ZnUTnEogoduxOoSuSPCoNJh/HpQF6RYLTX/l3xTcaCtmxqnjtvuhRamcxb3yZaS+MeWxEiXLcqoUKKRd7+wsjLxls24Wi9CuGd5A/+FqBtjHymzGQCryao5Oqx5hU7SRvr3C88FhgFrQ7UHiEBHSyPOEG6llOn3VJVzzXAS3eCZ/ddhaaABN5wCSojGy4ogv96QoqdSG+UuSYnmjMBREqa39T7I6UZUn+5VaJMs3F+rJ0QOcCVZECKyc0kSHhX4dNuWrzHY0nMUovPeu+DLo3F4Y4qtdaL/wOpSM8CfqLPwtg3F1FJyJ0l9nuaHH8vFA==
X-Forefront-Antispam-Report:
	CIP:165.204.84.17;CTRY:US;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:satlexmb07.amd.com;PTR:InfoDomainNonexistent;CAT:NONE;SFS:(13230040)(376014)(36860700016)(30052699003)(82310400026)(1800799024)(56012099003)(22082099003)(18002099003);DIR:OUT;SFP:1101;
X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1
X-MS-Exchange-AntiSpam-MessageData-0:
	tETvIO5kuCuTVuletiykbkKwrx8IHcOi+8qcPmxqdIr06yzFITnHvyODfS5FDGIw9c7+q1cyAZsM8T/hKcu2nv+A3B6kY5OWGNKXy8gwO/A9wnIOskV92k4lFHxkq7Xkc2UaOwYmc6XnQecBDlrMQRzrZg/E7ApQPSeauCrAxYUIGhMD/jfkA6j0yMDSj4pfsgDLmkLWhrhCdT7DS8wEpelu9jj8145P2sHEpagJUhlAQ+PgF1z34xNibN3KVHTCTS7scKk7rFrnGYFh1WlkKFfcC3LjTpl3z5m49+E7G7CDei2rKAAOQCfouBBR3teSIpzsQE2akk0Aon0tIw1Q8O6wi9yvLTuC4qgPIAD7ET2iPQVEgUJ8hkBh54SNREhNekCvTSVvi0bOkJFcK0+72b4fEOOmdJB6mcDrW5CWHUXxMG8Wz0H6X4DyB/TKRIcM
X-OriginatorOrg: amd.com
X-MS-Exchange-CrossTenant-OriginalArrivalTime: 07 Apr 2026 11:27:16.1041
 (UTC)
X-MS-Exchange-CrossTenant-Network-Message-Id: f53c86a0-05db-409c-32a7-08de94989f48
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:
	BN1PEPF0000468D.namprd05.prod.outlook.com
X-MS-Exchange-CrossTenant-AuthAs: Anonymous
X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem
X-MS-Exchange-Transport-CrossTenantHeadersStamped: CH3PR12MB9454
X-purgate-ID: tlsNG-720697/1775561244-AD53CCD1-50166499/0/0
X-purgate-type: clean
X-purgate-size: 4815

On 4/7/26 02:18, Jan Beulich wrote:
> On 03.04.2026 10:47, Stewart Hildebrand wrote:
>> On 4/1/26 09:03, Jan Beulich wrote:
>>> On 01.04.2026 14:57, Jürgen Groß wrote:
>>>> On 01.04.26 14:29, Jan Beulich wrote:
>>>>> Leaving aside highly disaggregated environments, the control domain is
>>>>> what will invoke XEN_SYSCTL_SCHEDOP_putinfo. Its vCPU-s therefore need to
>>>>> be able to run unconditionally, not those of the domain with ID 0 (which
>>>>> may not exist at all).
>>>>>
>>>>> Fixes: 9f0c658baedc ("arinc: add cpu-pool support to scheduler")
>>>>> Signed-off-by: Jan Beulich <jbeulich@suse.com>
>>>>> ---
>>>>> There being no "else" to the if(), what about other control domain vCPU-s?
>>>>
>>>> I guess this is a stale leftover. Doesn't matter for committing anyway.
>>>>
>>>>> ---
>>>>> v3: Don't mistakenly include the idle domain.
>>>>> v2: New.
>>>>>
>>>>> --- a/xen/common/sched/arinc653.c
>>>>> +++ b/xen/common/sched/arinc653.c
>>>>> @@ -411,10 +411,10 @@ a653sched_alloc_udata(const struct sched
>>>>>       spin_lock_irqsave(&sched_priv->lock, flags);
>>>>>   
>>>>>       /*
>>>>> -     * Add every one of dom0's units to the schedule, as long as there are
>>>>> -     * slots available.
>>>>> +     * Add every one of the control domain's units to the schedule, as long as
>>>>> +     * there are slots available.
>>>>>        */
>>>>> -    if ( unit->domain->domain_id == 0 )
>>>>> +    if ( is_control_domain(unit->domain) && !is_idle_domain(unit->domain) )
>>>>>       {
>>>>>           entry = sched_priv->num_schedule_entries;
>>>>>   
>>>>
>>>> Hmm, is it really the control domain only which wants to be scheduled initially?
>>>> I would think that at least the hardware domain and probably a Xenstore domain
>>>> would want to be included, too.
>>>>
>>>> In the end it might even be that other domains created via dom0less would want
>>>> to be able to run initially. They could be part of a mandatory infrastructure.
>>>> Why would they need to be created at boot if they are NOT important?
>>>
>>> This part is easy to answer: Because in a dom0less setup you simply may have
>>> no toolstack at all. (At which point there may also be nothing to set a
>>> schedule, yes.)
>>
>> This is a known limitation. In a dom0less/hyperlaunch scenario, as future work,
>> I would like to see the ability to configure the ARINC653 schedule in device
>> tree, which would likely extend the existing boot time cpu pool work.
>>
>>>> The question is whether the arinc653 scheduler is really meant for such setups.
>>>> OTOH just modifying the test to:
>>>>
>>>>      if ( system_state < SYS_STATE_active &&
>>>>           unit->domain->domain_id < DOMID_FIRST_RESERVED )
>>>>
>>>> seems to be fine for catching all those cases.
>>>>
>>>> With or without this modification:
>>>>
>>>> Reviewed-by: Juergen Gross <jgross@suse.com>
>>>
>>> Thanks, yet I'll have to leave to the maintainers to decide which form it
>>> should ultimately take. One remark: A restartable control domain wouldn't
>>> pass that conditional. Granted that's looking far into the future.
>>
>> It may not be desirable to schedule domUs until the control domain has had a say
>> in the matter, considering that the default schedule is unlikely to contain the
>> desired minor frame runtimes. It's less clear whether to include hardware and
>> xenstore domains in the default schedule, though I'm leaning toward only
>> including the domain with ability to invoke XEN_SYSCTL_SCHEDOP_putinfo for now
>> (i.e. the control domain).
>>
>> Hm, the suggested 'system_state < SYS_STATE_active' check is possibly a good
>> addition. This reinforces that the default schedule's purpose is merely to get a
>> system booting until a user-provided schedule can be installed. Without this
>> check, restarting the control domain could result in new entries being added
>> while old entries remain, possibly ending up with duplicates and/or exhausting
>> the schedule. However, the restarted domain would need to retain its uuid if it
>> expects to be scheduled after restart.
>>
>> Lastly, we may consider restricting the default schedule to Pool-0, and
>> eventually we may want a mechanism to disable the default schedule altogether
>> (e.g. when boot time cpupools are in use), but I don't think it's necessary to
>> conflate those with the current patch.
> 
> So what does all of this mean for the patch here? Should I switch to Jürgen's
> suggestion? Should I merely add the system_state check, but otherwise keep as
> is? Or should I not change anything?

I think the patch is good as is, but I just want to give it a few more days to
give Nate or others a chance to chime in. I'll follow up next week if there's no
further discussion.


From xen-devel-bounces@lists.xenproject.org Tue Apr 07 11:34:54 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 07 Apr 2026 11:34:54 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1274925.1560894 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wA4hm-0002q0-0n; Tue, 07 Apr 2026 11:34:50 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1274925.1560894; Tue, 07 Apr 2026 11:34: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 1wA4hl-0002pt-U5; Tue, 07 Apr 2026 11:34:49 +0000
Received: by outflank-mailman (input) for mailman id 1274925;
 Tue, 07 Apr 2026 11:34:49 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <marmarek@invisiblethingslab.com>) id 1wA4hk-0002pn-Od
 for xen-devel@lists.xenproject.org; Tue, 07 Apr 2026 11:34:48 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wA4hk-0057zs-2g
 for xen-devel@lists.xenproject.org; Tue, 07 Apr 2026 13:34:48 +0200
Received: from [10.42.69.12] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <marmarek@invisiblethingslab.com>)
 id 69d4ebd4-e002-0a2a0a5209dd-0a2a450cadce-14
 for <xen-devel@lists.xenproject.org>; Tue, 07 Apr 2026 13:34:48 +0200
Received: from [103.168.172.149] (helo=fout-a6-smtp.messagingengine.com)
 by tlsNG-d25034.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.0)
 (envelope-from <marmarek@invisiblethingslab.com>)
 id 69d4ebd6-f40c-0a2a450c0019-67a8ac95bd29-3
 for <xen-devel@lists.xenproject.org>; Tue, 07 Apr 2026 13:34:47 +0200
Received: from phl-compute-02.internal (phl-compute-02.internal [10.202.2.42])
 by mailfout.phl.internal (Postfix) with ESMTP id 383B2EC00B6;
 Tue,  7 Apr 2026 07:34:46 -0400 (EDT)
Received: from phl-frontend-04 ([10.202.2.163])
 by phl-compute-02.internal (MEProxy); Tue, 07 Apr 2026 07:34:46 -0400
Received: by mail.messagingengine.com (Postfix) with ESMTPA; Tue,
 7 Apr 2026 07:34:45 -0400 (EDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@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=1775561686;
	 x=1775648086; bh=Wts+sXnqpczM3cjxSRJ9r4kNO8gj2nxg9clRBSD9IIs=; b=
	dNT0NG5eE1MQo96zpgODYXttrDTh/XFaIRB6sbST8Vu9fofZAw9pGvtJU6bIUip+
	5Jk9O0+8qj+mOOKl6l0xWHdz7DwaacleG9Qv6H616nSmvmk7kz7Q9+uSdI49izcy
	i8ES3Eqf/UP+EU2n4/20mXzipdooqSehOWztCgNg/ZUKs11ew14SpaXSLToG+YSa
	HRH8VbUbIyteGO4BxgTPpI22oHlMnFZSuJOY0d5gG7gbYZK+Phvem5RD955bv/Pm
	sH2pLJUJ43ns3dsXtp4Bu7m/71Mn1WnjPS10YBTOmo/pcQLUyhMkqz0kIW9eoOT/
	mMOSnLcam2XfUL6KnjTSxg==
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=
	1775561686; x=1775648086; bh=Wts+sXnqpczM3cjxSRJ9r4kNO8gj2nxg9cl
	RBSD9IIs=; b=DYcVnDUolWQ2UC8UdXA9GDdScvpHojUfNM4x77nrn4qs3h5eaIO
	mPjO2OW91WoBjGmPVDMfroEJBOM3CGbH8m6Cox3Q8/aGhvA9yIDAe7pruNoei7bL
	KsearPRs2wwdQ28wYnLeJDN2gX9dCnvX9xP4vg2TMdHzoOGAs8mbq4aAsmWm+oMJ
	NEmJMpHIJl2/pj9SR3fINH+kMqiIfhLvM+GTwRHU05uJuf/2EAFOkDfVG1hOzOnn
	sFST1Ux5t5fhEpGeyMapfad4529804SQSMvL1B6ZnocvIQfES7DW1X07bpf8ODZR
	kHTAkKkNUlPpKhnkcD/lmy+A32t+J9+4jlA==
X-ME-Sender: <xms:1evUaeKhuBjWM6e_2pAhL1Wpd5P6cACD6elZoYYay4OjVYNE0-kn0w>
    <xme:1evUacKY-Xh3Z8Xxu6_bCueH0H4klKjx5mEZGbMcs2P7wNTJ4Vif-mTouDs8h8Dkz
    N2-8JYLWIbxg1zl22M71nwUe_nMGGls3SU6ZlHZyvQHykrlQA>
X-ME-Received: <xmr:1evUacVMpQQY_0yaFWivGeo27yex6heQjN47F2Tpd034fhPqVqqOYKERTDEMYsGI6nwFtd_aTxQ5YaMGlIWyz34Isvb6Shnru9g>
X-ME-Proxy-Cause: gggruggvucftvghtrhhoucdtuddrgeefhedrtddtgddvtdehfecutefuodetggdotefrod
    ftvfcurfhrohhfihhlvgemucfhrghsthforghilhdpuffrtefokffrpgfnqfghnecuuegr
    ihhlohhuthemuceftddtnecusecvtfgvtghiphhivghnthhsucdlqddutddtmdenucfjug
    hrpeffhffvvefukfhfgggtuggjsehgtderredttdejnecuhfhrohhmpeforghrvghkucfo
    rghrtgiihihkohifshhkihdqifpkrhgvtghkihcuoehmrghrmhgrrhgvkhesihhnvhhish
    hisghlvghthhhinhhgshhlrggsrdgtohhmqeenucggtffrrghtthgvrhhnpefgudelteef
    vefhfeehieetleeihfejhfeludevteetkeevtedtvdegueetfeejudenucevlhhushhtvg
    hrufhiiigvpedtnecurfgrrhgrmhepmhgrihhlfhhrohhmpehmrghrmhgrrhgvkhesihhn
    vhhishhisghlvghthhhinhhgshhlrggsrdgtohhmpdhnsggprhgtphhtthhopedvpdhmoh
    guvgepshhmthhpohhuthdprhgtphhtthhopehjsggvuhhlihgthhesshhushgvrdgtohhm
    pdhrtghpthhtohepgigvnhdquggvvhgvlheslhhishhtshdrgigvnhhprhhojhgvtghtrd
    horhhg
X-ME-Proxy: <xmx:1uvUaej20EDiYjazaU0Og66-o9SmsaLvIN9LY_QybLHE3FHJcn_maA>
    <xmx:1uvUaX8OdA5LUL-kAh0k_XFdkQi97VsmkXDuy1S6hsmg9lPFZqbRZQ>
    <xmx:1uvUaYAxHIn66Cidvuv8SA-JmFD52xNhqXUeajh0hhR_cRsjHM8yiA>
    <xmx:1uvUaULGDjPYBkuCMAX-nldUe828kU2YTRc72MTedEWlEXlfab6aMw>
    <xmx:1uvUaWfqLoYMd1mPBp-nu1-wMQSk520Cxc8VKsz6W0_KVJvHRc1HKEyY>
Feedback-ID: i1568416f:Fastmail
Date: Tue, 7 Apr 2026 13:34:43 +0200
From: Marek =?utf-8?Q?Marczykowski-G=C3=B3recki?= <marmarek@invisiblethingslab.com>
To: Jan Beulich <jbeulich@suse.com>
Cc: xen-devel <xen-devel@lists.xenproject.org>
Subject: Re: IOMMU faults after S3
Message-ID: <adTr0_IwZXcGgUI1@mail-itl>
References: <933a3e95-33d2-4e20-a4d5-2d8b20c2da7f@suse.com>
 <ac4kCq87SQSc6ddV@mail-itl>
 <aa6910f1-365a-4534-b229-9730b3aede02@suse.com>
 <ac44SVW1cPhKYFKU@mail-itl>
 <2caff339-4ce9-42ea-9b78-afeac42b6f0f@suse.com>
 <ac6Bg21hMLBRDNdm@mail-itl>
 <92e0151b-3fb1-4108-9788-f0fbac43512b@suse.com>
 <ac72dp3yEHikJzw2@mail-itl>
 <47b140b2-596b-47db-9c0c-43672f445036@suse.com>
 <8c9e5404-24bf-410d-a2e8-551cb87c6400@suse.com>
MIME-Version: 1.0
Content-Type: multipart/signed; micalg=pgp-sha256;
	protocol="application/pgp-signature"; boundary="r45afIgNHStFFFQy"
Content-Disposition: inline
In-Reply-To: <8c9e5404-24bf-410d-a2e8-551cb87c6400@suse.com>
X-purgate-ID: tlsNG-d25034/1775561687-8274EA3D-2A28951C/0/0
X-purgate-type: clean
X-purgate-size: 9874


--r45afIgNHStFFFQy
Content-Type: text/plain; protected-headers=v1; charset=utf-8
Content-Disposition: inline
Content-Transfer-Encoding: quoted-printable
Date: Tue, 7 Apr 2026 13:34:43 +0200
From: Marek =?utf-8?Q?Marczykowski-G=C3=B3recki?= <marmarek@invisiblethingslab.com>
To: Jan Beulich <jbeulich@suse.com>
Cc: xen-devel <xen-devel@lists.xenproject.org>
Subject: Re: IOMMU faults after S3

On Tue, Apr 07, 2026 at 12:23:16PM +0200, Jan Beulich wrote:
> On 07.04.2026 08:29, Jan Beulich wrote:
> > On 03.04.2026 01:06, Marek Marczykowski-G=C3=B3recki wrote:
> >> On Thu, Apr 02, 2026 at 04:53:31PM +0200, Jan Beulich wrote:
> >>> Sadly you now log the low halves of HPET_Tn_ROUTE twice, while you do=
n't log
> >>> the high halves at all.
> >>
> >> I was missing hpet_read32 there...
> >>
> >> Updated:
> >> (XEN) [  116.921573] Entering ACPI S3 state.
> >> (XEN) [18446743895.088893] _disable_pit_irq:2649: using_pit: 0, cpu_ha=
s_apic: 1
> >> (XEN) [18446743895.088907] _disable_pit_irq:2659: cpuidle_using_deep_c=
state: 1, boot_cpu_has(X86_FEATURE_XEN_ARAT): 0
> >> (XEN) [18446743895.088918] _disable_pit_irq:2662: init: 0
> >> (XEN) [18446743895.088928] hpet_broadcast_resume:662: hpet_events: fff=
f83046bc1f080
> >> (XEN) [18446743895.089072] hpet_broadcast_resume:673: num_hpets_used: 8
> >> (XEN) [18446743895.089081] hpet_broadcast_resume:691: cfg: 0x1
> >> (XEN) [18446743895.089092] hpet_broadcast_resume:696: i:0, hpet_events=
[i].msi.irq: 122, hpet_events[i].flags: 0
> >> (XEN) [18446743895.089122] hpet_msi_write:286: iommu_update_ire_from_m=
si rc: 0
> >> (XEN) [18446743895.089132] hpet_broadcast_resume:700: i:0, __hpet_setu=
p_msi_irq ret: 0
> >> (XEN) [18446743895.089168] hpet_broadcast_resume:710: i:0, cfg: 0xc134=
, hpet_read32(HPET_Tn_ROUTE(hpet_events[i].idx)): 0, hpet_read32(HPET_Tn_RO=
UTE(hpet_events[i].idx) + 4): 0xf18
> >=20
> > Okay, this would appear to clarify that the address really isn't correc=
t. Yet I'm
> > confused now by the low half values: In your earlier log there was
> >=20
> > hpet_broadcast_resume:710: i:0, cfg: 0xc134, HPET_Tn_ROUTE(hpet_events[=
i].idx): 0x110
> >=20
> > and alike, i.e. clearly a non-zero value. Now all low halves are zero. =
I'll try
> > to figure how the logged values here could result, but consistent data =
(or an
> > explantation for the apparent inconsistency) would help.
>=20
> Could you give the patch below a try?
>=20
> Jan
>=20
> x86/HPET: channel handling in hpet_broadcast_resume()
>=20
> The per-channel ENABLE bit is to solely be driven by hpet_enable_channel()
> and hpet_msi_{,un}mask(). It doesn't need setting immediately. Except for
> the (possible) channel put in legacy mode we don't do so during boot
> either.
>=20
> Instead reset ->arch.cpu_mask, to avoid msi_compose_msg() yielding an
> all-zero message (when the passed in CPU mask has no online CPUs). Nothing
> would later call msi_compose_msg() / hpet_msi_write(), and hence nothing
> would later produce a well-formed message template in
> hpet_events[].msi.msg.
>=20
> Fixes: 15aa6c67486c ("amd iommu: use base platform MSI implementation")
> Reported-by: Marek Marczykowski-G=C3=B3recki <marmarek@invisiblethingslab=
=2Ecom>
> Signed-off-by: Jan Beulich <jbeulich@suse.com>

This appears to fix the IOMMU faults.
Started with no-arat, the debug output is now this:

(XEN) [18446743900.509455] _disable_pit_irq:2649: using_pit: 0, cpu_has_api=
c: 1
(XEN) [18446743900.509470] _disable_pit_irq:2659: cpuidle_using_deep_cstate=
: 1, boot_cpu_has(X86_FEATURE_XEN_ARAT): 0
(XEN) [18446743900.509480] _disable_pit_irq:2662: init: 0
(XEN) [18446743900.509491] hpet_broadcast_resume:662: hpet_events: ffff8304=
61b3f080
(XEN) [18446743900.509636] hpet_broadcast_resume:673: num_hpets_used: 8
(XEN) [18446743900.509644] hpet_broadcast_resume:691: cfg: 0x1
(XEN) [18446743900.509656] hpet_broadcast_resume:696: i:0, hpet_events[i].m=
si.irq: 122, hpet_events[i].flags: 0
(XEN) [18446743900.509687] hpet_msi_write:286: iommu_update_ire_from_msi rc=
: 0
(XEN) [18446743900.509698] hpet_broadcast_resume:705: i:0, __hpet_setup_msi=
_irq ret: 0
(XEN) [18446743900.509728] hpet_broadcast_resume:715: i:0, cfg: 0xc130, hpe=
t_read32(HPET_Tn_ROUTE(hpet_events[i].idx)): 0, hpet_read32(HPET_Tn_ROUTE(h=
pet_events[i].idx) + 4): 0xfee00f18
(XEN) [18446743900.509739] hpet_broadcast_resume:696: i:1, hpet_events[i].m=
si.irq: 123, hpet_events[i].flags: 0
(XEN) [18446743900.509762] hpet_msi_write:286: iommu_update_ire_from_msi rc=
: 0
(XEN) [18446743900.509772] hpet_broadcast_resume:705: i:1, __hpet_setup_msi=
_irq ret: 0
(XEN) [18446743900.509803] hpet_broadcast_resume:715: i:1, cfg: 0xc100, hpe=
t_read32(HPET_Tn_ROUTE(hpet_events[i].idx)): 0, hpet_read32(HPET_Tn_ROUTE(h=
pet_events[i].idx) + 4): 0xfee00f38
(XEN) [18446743900.509814] hpet_broadcast_resume:696: i:2, hpet_events[i].m=
si.irq: 124, hpet_events[i].flags: 0
(XEN) [18446743900.509838] hpet_msi_write:286: iommu_update_ire_from_msi rc=
: 0
(XEN) [18446743900.509848] hpet_broadcast_resume:705: i:2, __hpet_setup_msi=
_irq ret: 0
(XEN) [18446743900.509877] hpet_broadcast_resume:715: i:2, cfg: 0xc100, hpe=
t_read32(HPET_Tn_ROUTE(hpet_events[i].idx)): 0, hpet_read32(HPET_Tn_ROUTE(h=
pet_events[i].idx) + 4): 0xfee00f58
(XEN) [18446743900.509888] hpet_broadcast_resume:696: i:3, hpet_events[i].m=
si.irq: 125, hpet_events[i].flags: 0
(XEN) [18446743900.509912] hpet_msi_write:286: iommu_update_ire_from_msi rc=
: 0
(XEN) [18446743900.509922] hpet_broadcast_resume:705: i:3, __hpet_setup_msi=
_irq ret: 0
(XEN) [18446743900.509952] hpet_broadcast_resume:715: i:3, cfg: 0xc100, hpe=
t_read32(HPET_Tn_ROUTE(hpet_events[i].idx)): 0, hpet_read32(HPET_Tn_ROUTE(h=
pet_events[i].idx) + 4): 0xfee00f78
(XEN) [18446743900.509963] hpet_broadcast_resume:696: i:4, hpet_events[i].m=
si.irq: 126, hpet_events[i].flags: 0
(XEN) [18446743900.509987] hpet_msi_write:286: iommu_update_ire_from_msi rc=
: 0
(XEN) [18446743900.509997] hpet_broadcast_resume:705: i:4, __hpet_setup_msi=
_irq ret: 0
(XEN) [18446743900.510027] hpet_broadcast_resume:715: i:4, cfg: 0xc100, hpe=
t_read32(HPET_Tn_ROUTE(hpet_events[i].idx)): 0, hpet_read32(HPET_Tn_ROUTE(h=
pet_events[i].idx) + 4): 0xfee00f98
(XEN) [18446743900.510038] hpet_broadcast_resume:696: i:5, hpet_events[i].m=
si.irq: 127, hpet_events[i].flags: 0
(XEN) [18446743900.510062] hpet_msi_write:286: iommu_update_ire_from_msi rc=
: 0
(XEN) [18446743900.510072] hpet_broadcast_resume:705: i:5, __hpet_setup_msi=
_irq ret: 0
(XEN) [18446743900.510102] hpet_broadcast_resume:715: i:5, cfg: 0xc100, hpe=
t_read32(HPET_Tn_ROUTE(hpet_events[i].idx)): 0, hpet_read32(HPET_Tn_ROUTE(h=
pet_events[i].idx) + 4): 0xfee00fb8
(XEN) [18446743900.510113] hpet_broadcast_resume:696: i:6, hpet_events[i].m=
si.irq: 128, hpet_events[i].flags: 0
(XEN) [18446743900.510138] hpet_msi_write:286: iommu_update_ire_from_msi rc=
: 0
(XEN) [18446743900.510149] hpet_broadcast_resume:705: i:6, __hpet_setup_msi=
_irq ret: 0
(XEN) [18446743900.510179] hpet_broadcast_resume:715: i:6, cfg: 0xc100, hpe=
t_read32(HPET_Tn_ROUTE(hpet_events[i].idx)): 0, hpet_read32(HPET_Tn_ROUTE(h=
pet_events[i].idx) + 4): 0xfee00fd8
(XEN) [18446743900.510191] hpet_broadcast_resume:696: i:7, hpet_events[i].m=
si.irq: 129, hpet_events[i].flags: 0
(XEN) [18446743900.510214] hpet_msi_write:286: iommu_update_ire_from_msi rc=
: 0
(XEN) [18446743900.510224] hpet_broadcast_resume:705: i:7, __hpet_setup_msi=
_irq ret: 0
(XEN) [18446743900.510253] hpet_broadcast_resume:715: i:7, cfg: 0xc100, hpe=
t_read32(HPET_Tn_ROUTE(hpet_events[i].idx)): 0, hpet_read32(HPET_Tn_ROUTE(h=
pet_events[i].idx) + 4): 0xfee00ff8


> ---
> As to the Fixes: tag: The issue for the HPET resume case is the
> cpumask_intersects(desc->arch.cpu_mask, &cpu_online_map) check in
> msi_compose_msg(). The earlier cpumask_empty() wasn't a problem, as
> cpu_mask_to_apicid() returning a bogus (offline) value didn't have any bad
> effect: Before use, a valid destination would have been put in place, but
> other parts of .msg were properly set up. Furthermore we also didn't clear
> the entire message prior to that change.
>=20
> --- a/xen/arch/x86/hpet.c
> +++ b/xen/arch/x86/hpet.c
> @@ -685,12 +685,18 @@ void hpet_broadcast_resume(void)
>      for ( i =3D 0; i < n; i++ )
>      {
>          if ( hpet_events[i].msi.irq >=3D 0 )
> +        {
> +            struct irq_desc *desc =3D irq_to_desc(hpet_events[i].msi.irq=
);
> +
> +            cpumask_copy(desc->arch.cpu_mask, cpumask_of(smp_processor_i=
d()));
> +
>              __hpet_setup_msi_irq(irq_to_desc(hpet_events[i].msi.irq));
> +        }
> =20
>          /* set HPET Tn as oneshot */
>          cfg =3D hpet_read32(HPET_Tn_CFG(hpet_events[i].idx));
>          cfg &=3D ~(HPET_TN_LEVEL | HPET_TN_PERIODIC);
> -        cfg |=3D HPET_TN_ENABLE | HPET_TN_32BIT;
> +        cfg |=3D HPET_TN_32BIT;
>          if ( !(hpet_events[i].flags & HPET_EVT_LEGACY) )
>              cfg |=3D HPET_TN_FSB;
>          hpet_write32(cfg, HPET_Tn_CFG(hpet_events[i].idx));
>=20

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

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

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

iQEzBAEBCAAdFiEEhrpukzGPukRmQqkK24/THMrX1ywFAmnU69MACgkQ24/THMrX
1yzXvAf7B0UW9UyjQV7OjCvh48ZppaP+IhfIwk44lYnzr5XBxaYw8ciZHmA7ejYg
dweE0Np/WVgZcN+54TkDoc7nVKcABG7OvW11itmFhqTsUmljWwXSETQEqexgQb9m
Hu2LtbKIuUCn3yCOfEblwSmrs6VLie0g68isAXnA1KkiuNMAIIuUBty4PrRMm3g+
CVsuLLNYZ8/oFQNgAdPm90VxHDk5Kq2SvNiOEk4aFRSTh00TJp9g/edof4h+Q8dq
rrZMMdXUaKWJpAhrNNnHNkrbTLQjiHuDpX+JMTx/he9p7wv+GY8AIdxfIYCJZ12y
hMGhfX86/B/M8hxllmrJOAl4Z0XXIw==
=wqQI
-----END PGP SIGNATURE-----

--r45afIgNHStFFFQy--


From xen-devel-bounces@lists.xenproject.org Tue Apr 07 11:52:25 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 07 Apr 2026 11:52:25 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1274937.1560902 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wA4yg-0005nx-G3; Tue, 07 Apr 2026 11:52:18 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1274937.1560902; Tue, 07 Apr 2026 11:52: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 1wA4yg-0005nq-DD; Tue, 07 Apr 2026 11:52:18 +0000
Received: by outflank-mailman (input) for mailman id 1274937;
 Tue, 07 Apr 2026 11:52:17 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <jbeulich@suse.com>) id 1wA4ye-0005nk-UK
 for xen-devel@lists.xenproject.org; Tue, 07 Apr 2026 11:52:17 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wA4ye-00BrlQ-A3
 for xen-devel@lists.xenproject.org; Tue, 07 Apr 2026 13:52:16 +0200
Received: from [10.42.69.7] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <jbeulich@suse.com>)
 id 69d4efed-2eae-0a2a0a5409dd-0a2a4507c88a-12
 for <xen-devel@lists.xenproject.org>; Tue, 07 Apr 2026 13:52:16 +0200
Received: from [209.85.221.43] (helo=mail-wr1-f43.google.com)
 by tlsNG-ef75cf.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.0)
 (envelope-from <jbeulich@suse.com>)
 id 69d4efef-ba2d-0a2a45070019-d155dd2ba5b1-3
 for <xen-devel@lists.xenproject.org>; Tue, 07 Apr 2026 13:52:15 +0200
Received: by mail-wr1-f43.google.com with SMTP id
 ffacd0b85a97d-43cf5fbacc9so2375064f8f.1
 for <xen-devel@lists.xenproject.org>; Tue, 07 Apr 2026 04:52:15 -0700 (PDT)
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-43d1e2a6f08sm52527574f8f.6.2026.04.07.04.52.14
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Tue, 07 Apr 2026 04:52:14 -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=google header.d=suse.com header.i="@suse.com" header.h="Content-Transfer-Encoding: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=1775562735; x=1776167535; darn=lists.xenproject.org;
        h=content-transfer-encoding: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;
        bh=1+gLJTYWBOHZnUmuke5uQ6K8ScG4ViJSTe+g/vhdTcY=;
        b=dtP/BiRuOt8jDhoIl7AzsRXQjj7GoLKIE3rtbgjxkiVvuYL5nVPgLEIDkzTx5i68sr
         MIjVGiVYBQGu+ukBW/3KqRs3Pxmxkc/8lMZZbaDyf9tdL50yjuF/ygpaRpuRmIEY86o3
         9+R8snYI9br+I7iZ5JBoAoTauaU26DLGJV1aeQeMYICJlnmdwNmayPbdgxhel8YbPlMH
         nOjhloHd2o5rzH96cFhd07A13lapQCFpD2BLC5iPIeszECN5pnXY64Y6MiYzaQ7A7fnF
         Y3sA9xQX8MpkZGqKHL5I+m1GfnXgarwXgUV6s8Y3gVdrW7m4f61MXG2EmBt7Cu0wIpAO
         5TCA==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20251104; t=1775562735; x=1776167535;
        h=content-transfer-encoding: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;
        bh=1+gLJTYWBOHZnUmuke5uQ6K8ScG4ViJSTe+g/vhdTcY=;
        b=GKySiut1JsvL3w7LHcWJF8Cost/07BS3ZIkDtvb0Io8rB7JTH2UW7IsDCOn4FLBJIw
         6G8miynA8SP/HhUTFxY0CzAirzL5IMrFM7LOldN88VH75aOl1CkPyy38cs0p1gkrztT/
         m9qC1PpImcIgS+G1gLZnnDFdWfm+sQS8ymTEOdnqKjbHelKksl9XeVwvah195MDENAgK
         cFg3WYiZhFh0XjlMMNoV6DGp42cQwjVyFeQ+SnrHP6D29SgHQ2pvfjXzQkp1qhLVwfER
         rIKp8rn7476mCRKSBoj8H0V3kPwoxYLUwLxA/BNt9QXJjYroM1VxEoy8JcedUHdy1tB/
         PMMg==
X-Gm-Message-State: AOJu0YyzVi3CQTPT4vPce6EPDUEDkg2atNty1S/IvfEClxYafvzbXog4
	NuAECV1hy3tyDXnlR4xZ1qLs25399m6NgrNowuoFf7MOF/YbrDkhlaOCmeSK3jgeErXDAUzNhZ4
	myfDqGw==
X-Gm-Gg: AeBDieuZzt+Z3TiEVs/Dkl1QJZewjEm5qdGz/LIZVhHmxh92q68JvYhREtx7jKTdra6
	xufMnyIwF5kf9N5uE2RdMWf7ZeYkdLwYzO90GByzJ7/d2rD7CPG/oakoZmQ8KvsCJW+SEd5cf4o
	6npU58aWQCUyUOtnnR0VAbU0nLuUFXWKat5ND4Ff3/8nxXyxpOuELcujEPiO1irJ+GuLFvXlyJu
	bTE1tc4mGPE3pLBRkaxf/fsF9L4T4aaUjhbpc5Zn/6r8/qeDqhmWY02Vrwr05j3rP31b6wRwrQH
	0Pohv4szM9sWH81YW5Awc8P/iGWEhq8vJw9WzTxy0MQpQFUMFlmra8ziXortygu+Q+VqV/CRd1O
	LqXV/RauS7KpLLhB2jwDkObWULy6FGZ0XR59dVFU31JbN2fhRPscxmxkR8N/o+7ifhLm6bNlfoT
	QSI5Wlvi2bswwwlgGMS5Biv850nQahIri06qKn1YAKTSdsHEs0elzse14Q+BNKOFBTJvNZUnH62
	zLv/Hetvvmk8rU=
X-Received: by 2002:a05:6000:288b:b0:43d:1df7:e3af with SMTP id ffacd0b85a97d-43d290f71ccmr23944241f8f.22.1775562734922;
        Tue, 07 Apr 2026 04:52:14 -0700 (PDT)
Message-ID: <9a5a290f-0abb-4afb-b58d-da21b40ac761@suse.com>
Date: Tue, 7 Apr 2026 13:52:18 +0200
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: IOMMU faults after S3
To: =?UTF-8?Q?Marek_Marczykowski-G=C3=B3recki?=
 <marmarek@invisiblethingslab.com>
Cc: xen-devel <xen-devel@lists.xenproject.org>
References: <933a3e95-33d2-4e20-a4d5-2d8b20c2da7f@suse.com>
 <ac4kCq87SQSc6ddV@mail-itl> <aa6910f1-365a-4534-b229-9730b3aede02@suse.com>
 <ac44SVW1cPhKYFKU@mail-itl> <2caff339-4ce9-42ea-9b78-afeac42b6f0f@suse.com>
 <ac6Bg21hMLBRDNdm@mail-itl> <92e0151b-3fb1-4108-9788-f0fbac43512b@suse.com>
 <ac72dp3yEHikJzw2@mail-itl> <47b140b2-596b-47db-9c0c-43672f445036@suse.com>
 <8c9e5404-24bf-410d-a2e8-551cb87c6400@suse.com> <adTr0_IwZXcGgUI1@mail-itl>
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: <adTr0_IwZXcGgUI1@mail-itl>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
X-purgate-ID: tlsNG-ef75cf/1775562735-8895941E-9347A65A/0/0
X-purgate-type: clean
X-purgate-size: 5423

On 07.04.2026 13:34, Marek Marczykowski-Górecki wrote:
> On Tue, Apr 07, 2026 at 12:23:16PM +0200, Jan Beulich wrote:
>> x86/HPET: channel handling in hpet_broadcast_resume()
>>
>> The per-channel ENABLE bit is to solely be driven by hpet_enable_channel()
>> and hpet_msi_{,un}mask(). It doesn't need setting immediately. Except for
>> the (possible) channel put in legacy mode we don't do so during boot
>> either.
>>
>> Instead reset ->arch.cpu_mask, to avoid msi_compose_msg() yielding an
>> all-zero message (when the passed in CPU mask has no online CPUs). Nothing
>> would later call msi_compose_msg() / hpet_msi_write(), and hence nothing
>> would later produce a well-formed message template in
>> hpet_events[].msi.msg.
>>
>> Fixes: 15aa6c67486c ("amd iommu: use base platform MSI implementation")
>> Reported-by: Marek Marczykowski-Górecki <marmarek@invisiblethingslab.com>
>> Signed-off-by: Jan Beulich <jbeulich@suse.com>
> 
> This appears to fix the IOMMU faults.
> Started with no-arat, the debug output is now this:

Same question here: May I translate this to Tested-by:?

Jan

> (XEN) [18446743900.509455] _disable_pit_irq:2649: using_pit: 0, cpu_has_apic: 1
> (XEN) [18446743900.509470] _disable_pit_irq:2659: cpuidle_using_deep_cstate: 1, boot_cpu_has(X86_FEATURE_XEN_ARAT): 0
> (XEN) [18446743900.509480] _disable_pit_irq:2662: init: 0
> (XEN) [18446743900.509491] hpet_broadcast_resume:662: hpet_events: ffff830461b3f080
> (XEN) [18446743900.509636] hpet_broadcast_resume:673: num_hpets_used: 8
> (XEN) [18446743900.509644] hpet_broadcast_resume:691: cfg: 0x1
> (XEN) [18446743900.509656] hpet_broadcast_resume:696: i:0, hpet_events[i].msi.irq: 122, hpet_events[i].flags: 0
> (XEN) [18446743900.509687] hpet_msi_write:286: iommu_update_ire_from_msi rc: 0
> (XEN) [18446743900.509698] hpet_broadcast_resume:705: i:0, __hpet_setup_msi_irq ret: 0
> (XEN) [18446743900.509728] hpet_broadcast_resume:715: i:0, cfg: 0xc130, hpet_read32(HPET_Tn_ROUTE(hpet_events[i].idx)): 0, hpet_read32(HPET_Tn_ROUTE(hpet_events[i].idx) + 4): 0xfee00f18
> (XEN) [18446743900.509739] hpet_broadcast_resume:696: i:1, hpet_events[i].msi.irq: 123, hpet_events[i].flags: 0
> (XEN) [18446743900.509762] hpet_msi_write:286: iommu_update_ire_from_msi rc: 0
> (XEN) [18446743900.509772] hpet_broadcast_resume:705: i:1, __hpet_setup_msi_irq ret: 0
> (XEN) [18446743900.509803] hpet_broadcast_resume:715: i:1, cfg: 0xc100, hpet_read32(HPET_Tn_ROUTE(hpet_events[i].idx)): 0, hpet_read32(HPET_Tn_ROUTE(hpet_events[i].idx) + 4): 0xfee00f38
> (XEN) [18446743900.509814] hpet_broadcast_resume:696: i:2, hpet_events[i].msi.irq: 124, hpet_events[i].flags: 0
> (XEN) [18446743900.509838] hpet_msi_write:286: iommu_update_ire_from_msi rc: 0
> (XEN) [18446743900.509848] hpet_broadcast_resume:705: i:2, __hpet_setup_msi_irq ret: 0
> (XEN) [18446743900.509877] hpet_broadcast_resume:715: i:2, cfg: 0xc100, hpet_read32(HPET_Tn_ROUTE(hpet_events[i].idx)): 0, hpet_read32(HPET_Tn_ROUTE(hpet_events[i].idx) + 4): 0xfee00f58
> (XEN) [18446743900.509888] hpet_broadcast_resume:696: i:3, hpet_events[i].msi.irq: 125, hpet_events[i].flags: 0
> (XEN) [18446743900.509912] hpet_msi_write:286: iommu_update_ire_from_msi rc: 0
> (XEN) [18446743900.509922] hpet_broadcast_resume:705: i:3, __hpet_setup_msi_irq ret: 0
> (XEN) [18446743900.509952] hpet_broadcast_resume:715: i:3, cfg: 0xc100, hpet_read32(HPET_Tn_ROUTE(hpet_events[i].idx)): 0, hpet_read32(HPET_Tn_ROUTE(hpet_events[i].idx) + 4): 0xfee00f78
> (XEN) [18446743900.509963] hpet_broadcast_resume:696: i:4, hpet_events[i].msi.irq: 126, hpet_events[i].flags: 0
> (XEN) [18446743900.509987] hpet_msi_write:286: iommu_update_ire_from_msi rc: 0
> (XEN) [18446743900.509997] hpet_broadcast_resume:705: i:4, __hpet_setup_msi_irq ret: 0
> (XEN) [18446743900.510027] hpet_broadcast_resume:715: i:4, cfg: 0xc100, hpet_read32(HPET_Tn_ROUTE(hpet_events[i].idx)): 0, hpet_read32(HPET_Tn_ROUTE(hpet_events[i].idx) + 4): 0xfee00f98
> (XEN) [18446743900.510038] hpet_broadcast_resume:696: i:5, hpet_events[i].msi.irq: 127, hpet_events[i].flags: 0
> (XEN) [18446743900.510062] hpet_msi_write:286: iommu_update_ire_from_msi rc: 0
> (XEN) [18446743900.510072] hpet_broadcast_resume:705: i:5, __hpet_setup_msi_irq ret: 0
> (XEN) [18446743900.510102] hpet_broadcast_resume:715: i:5, cfg: 0xc100, hpet_read32(HPET_Tn_ROUTE(hpet_events[i].idx)): 0, hpet_read32(HPET_Tn_ROUTE(hpet_events[i].idx) + 4): 0xfee00fb8
> (XEN) [18446743900.510113] hpet_broadcast_resume:696: i:6, hpet_events[i].msi.irq: 128, hpet_events[i].flags: 0
> (XEN) [18446743900.510138] hpet_msi_write:286: iommu_update_ire_from_msi rc: 0
> (XEN) [18446743900.510149] hpet_broadcast_resume:705: i:6, __hpet_setup_msi_irq ret: 0
> (XEN) [18446743900.510179] hpet_broadcast_resume:715: i:6, cfg: 0xc100, hpet_read32(HPET_Tn_ROUTE(hpet_events[i].idx)): 0, hpet_read32(HPET_Tn_ROUTE(hpet_events[i].idx) + 4): 0xfee00fd8
> (XEN) [18446743900.510191] hpet_broadcast_resume:696: i:7, hpet_events[i].msi.irq: 129, hpet_events[i].flags: 0
> (XEN) [18446743900.510214] hpet_msi_write:286: iommu_update_ire_from_msi rc: 0
> (XEN) [18446743900.510224] hpet_broadcast_resume:705: i:7, __hpet_setup_msi_irq ret: 0
> (XEN) [18446743900.510253] hpet_broadcast_resume:715: i:7, cfg: 0xc100, hpet_read32(HPET_Tn_ROUTE(hpet_events[i].idx)): 0, hpet_read32(HPET_Tn_ROUTE(hpet_events[i].idx) + 4): 0xfee00ff8


From xen-devel-bounces@lists.xenproject.org Tue Apr 07 11:56:34 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 07 Apr 2026 11:56:34 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1274946.1560912 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wA52n-0006LY-W1; Tue, 07 Apr 2026 11:56:33 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1274946.1560912; Tue, 07 Apr 2026 11:56: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 1wA52n-0006LR-SR; Tue, 07 Apr 2026 11:56:33 +0000
Received: by outflank-mailman (input) for mailman id 1274946;
 Tue, 07 Apr 2026 11:56:32 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <marmarek@invisiblethingslab.com>) id 1wA52m-0006LL-3v
 for xen-devel@lists.xenproject.org; Tue, 07 Apr 2026 11:56:32 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wA52l-00G4Ad-Fl
 for xen-devel@lists.xenproject.org; Tue, 07 Apr 2026 13:56:31 +0200
Received: from [10.42.69.7] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <marmarek@invisiblethingslab.com>)
 id 69d4f0e7-5cb7-0a2a0a5109dd-0a2a4507ea66-24
 for <xen-devel@lists.xenproject.org>; Tue, 07 Apr 2026 13:56:31 +0200
Received: from [103.168.172.155] (helo=fhigh-a4-smtp.messagingengine.com)
 by tlsNG-ef75cf.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.0)
 (envelope-from <marmarek@invisiblethingslab.com>)
 id 69d4f0ee-ba2d-0a2a45070019-67a8ac9b8f03-3
 for <xen-devel@lists.xenproject.org>; Tue, 07 Apr 2026 13:56:31 +0200
Received: from phl-compute-04.internal (phl-compute-04.internal [10.202.2.44])
 by mailfhigh.phl.internal (Postfix) with ESMTP id 1E5BD1400093;
 Tue,  7 Apr 2026 07:56:30 -0400 (EDT)
Received: from phl-frontend-04 ([10.202.2.163])
 by phl-compute-04.internal (MEProxy); Tue, 07 Apr 2026 07:56:30 -0400
Received: by mail.messagingengine.com (Postfix) with ESMTPA; Tue,
 7 Apr 2026 07:56:29 -0400 (EDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@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=1775562990;
	 x=1775649390; bh=+c6dX1Y4bDsPm5WcjXqg6Nh7cBYsEskKGUbCqRXAzVM=; b=
	V2UxLJolxjXoXCQ1H6WKJhO5bGGF4HNpXJP12fyKUkAeOGuifE6QZkb8VseH7pqb
	1aK+We+Dl+U4lLugDM7CXNnG7wJ7nDk7q6k5LSlxDP7TpWOgOzKk3VcOpCIPBdhN
	UicDMThMRNX2QKSRfXJIGmr5XsNGuVnmvQMwWN3B3ZTcyfSqc0xSzhNY6Xun0mMV
	xEGKK3gre6BN5DJ6EtZLSHckxpQayK3vaAGRBZBu55NkTkT9juSnmQ56+SNaNHvU
	fyvZC1PhToJyiP+m6ZbwLLuAAaye9dooFNxgudRhjIU3NaND5bipPAfvMqaxabLR
	dQSYpN/EiIuwLmRkG8P31w==
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=
	1775562990; x=1775649390; bh=+c6dX1Y4bDsPm5WcjXqg6Nh7cBYsEskKGUb
	CqRXAzVM=; b=nfaUSndGXDxDLq5vpsQvKYoGa6BTnmnJDbDPN/wjrNH0MX3d/jg
	LQi+tSxEAHNPWo9Gn19bhT/PgbTRXXca2SguhWF6N+1QkybHXm0e28/bw1atZ2Yy
	ijJaCWNf/QCx1X1eIsL+/0pX3qZBWlqc0lZ6sDye+aLwI/0LMPPWeA1LPARWSNuW
	Dj4s+kTDoaPGszaY8oCdoje+zEj/LUjDb49opLiAbDSxImoGBMeR+vefEj6Q5aqV
	fdy7IKsoix9lis8B69IYww9DGQTcOuXAUR5g4esBOAWytTXYINngQKXTx4kujgUj
	eC28mZwJzxOzl2Y35C3vIKuyiCVTysDSHPQ==
X-ME-Sender: <xms:7fDUaYTiokI-_viiGi0n5cUdeCizMffErkz9DsBfGeKH80Afo0-Vqg>
    <xme:7fDUabypINkBFmRMd7zdCyIjikSFnuUMEhI6AuloMekCbsJ0KwzfjPryCrMQCEehc
    Kpicicnr31jb3fkRHKUd12o1HN9TJFO2EI2w3Zl7-Z1Yhfb>
X-ME-Received: <xmr:7fDUaTcjAIHZKRTpLxq_gCRy1WWJ5nCxb-MximeS9fFC-mb2yIU3RyBWbwMFXi452U6-TNf1h1zjwAnkyAy36RASYGQ8H0DWS4g>
X-ME-Proxy-Cause: gggruggvucftvghtrhhoucdtuddrgeefhedrtddtgddvtdehkecutefuodetggdotefrod
    ftvfcurfhrohhfihhlvgemucfhrghsthforghilhdpuffrtefokffrpgfnqfghnecuuegr
    ihhlohhuthemuceftddtnecusecvtfgvtghiphhivghnthhsucdlqddutddtmdenucfjug
    hrpeffhffvvefukfhfgggtuggjsehgtderredttdejnecuhfhrohhmpeforghrvghkucfo
    rghrtgiihihkohifshhkihdqifpkrhgvtghkihcuoehmrghrmhgrrhgvkhesihhnvhhish
    hisghlvghthhhinhhgshhlrggsrdgtohhmqeenucggtffrrghtthgvrhhnpefgudelteef
    vefhfeehieetleeihfejhfeludevteetkeevtedtvdegueetfeejudenucevlhhushhtvg
    hrufhiiigvpedtnecurfgrrhgrmhepmhgrihhlfhhrohhmpehmrghrmhgrrhgvkhesihhn
    vhhishhisghlvghthhhinhhgshhlrggsrdgtohhmpdhnsggprhgtphhtthhopedvpdhmoh
    guvgepshhmthhpohhuthdprhgtphhtthhopehjsggvuhhlihgthhesshhushgvrdgtohhm
    pdhrtghpthhtohepgigvnhdquggvvhgvlheslhhishhtshdrgigvnhhprhhojhgvtghtrd
    horhhg
X-ME-Proxy: <xmx:7fDUaXKxQF3xOLA9FE20Nt4lOB4xBNqJEILcZnVeuvfk9twTZ-S7-A>
    <xmx:7fDUaUF31i7ikF97XDmNzqj-XXzw-60XWisKb1wOtqMLJRbxugYwKw>
    <xmx:7fDUaRoY-YtTpLdicnzrC_dWT8DztXIUYEZS9jYQl00aztqdtpgYLw>
    <xmx:7fDUadRRQwSahtUmJ8cvwqZaLYtw064cJBDJQKFXRpSxu-DWG2KyFA>
    <xmx:7vDUaclZemEKwHFwiqftoa3xsT8Csbza5d6rRADHfWspZIy2TctxczaP>
Feedback-ID: i1568416f:Fastmail
Date: Tue, 7 Apr 2026 13:56:27 +0200
From: Marek =?utf-8?Q?Marczykowski-G=C3=B3recki?= <marmarek@invisiblethingslab.com>
To: Jan Beulich <jbeulich@suse.com>
Cc: xen-devel <xen-devel@lists.xenproject.org>
Subject: Re: IOMMU faults after S3
Message-ID: <adTw66J7r84nW2uW@mail-itl>
References: <aa6910f1-365a-4534-b229-9730b3aede02@suse.com>
 <ac44SVW1cPhKYFKU@mail-itl>
 <2caff339-4ce9-42ea-9b78-afeac42b6f0f@suse.com>
 <ac6Bg21hMLBRDNdm@mail-itl>
 <92e0151b-3fb1-4108-9788-f0fbac43512b@suse.com>
 <ac72dp3yEHikJzw2@mail-itl>
 <47b140b2-596b-47db-9c0c-43672f445036@suse.com>
 <8c9e5404-24bf-410d-a2e8-551cb87c6400@suse.com>
 <adTr0_IwZXcGgUI1@mail-itl>
 <9a5a290f-0abb-4afb-b58d-da21b40ac761@suse.com>
MIME-Version: 1.0
Content-Type: multipart/signed; micalg=pgp-sha256;
	protocol="application/pgp-signature"; boundary="+vHHedGGbCLoiHVv"
Content-Disposition: inline
In-Reply-To: <9a5a290f-0abb-4afb-b58d-da21b40ac761@suse.com>
X-purgate-ID: tlsNG-ef75cf/1775562991-1059641E-8B96A51C/0/0
X-purgate-type: clean
X-purgate-size: 2348


--+vHHedGGbCLoiHVv
Content-Type: text/plain; protected-headers=v1; charset=utf-8
Content-Disposition: inline
Content-Transfer-Encoding: quoted-printable
Date: Tue, 7 Apr 2026 13:56:27 +0200
From: Marek =?utf-8?Q?Marczykowski-G=C3=B3recki?= <marmarek@invisiblethingslab.com>
To: Jan Beulich <jbeulich@suse.com>
Cc: xen-devel <xen-devel@lists.xenproject.org>
Subject: Re: IOMMU faults after S3

On Tue, Apr 07, 2026 at 01:52:18PM +0200, Jan Beulich wrote:
> On 07.04.2026 13:34, Marek Marczykowski-G=C3=B3recki wrote:
> > On Tue, Apr 07, 2026 at 12:23:16PM +0200, Jan Beulich wrote:
> >> x86/HPET: channel handling in hpet_broadcast_resume()
> >>
> >> The per-channel ENABLE bit is to solely be driven by hpet_enable_chann=
el()
> >> and hpet_msi_{,un}mask(). It doesn't need setting immediately. Except =
for
> >> the (possible) channel put in legacy mode we don't do so during boot
> >> either.
> >>
> >> Instead reset ->arch.cpu_mask, to avoid msi_compose_msg() yielding an
> >> all-zero message (when the passed in CPU mask has no online CPUs). Not=
hing
> >> would later call msi_compose_msg() / hpet_msi_write(), and hence nothi=
ng
> >> would later produce a well-formed message template in
> >> hpet_events[].msi.msg.
> >>
> >> Fixes: 15aa6c67486c ("amd iommu: use base platform MSI implementation")
> >> Reported-by: Marek Marczykowski-G=C3=B3recki <marmarek@invisiblethings=
lab.com>
> >> Signed-off-by: Jan Beulich <jbeulich@suse.com>
> >=20
> > This appears to fix the IOMMU faults.
> > Started with no-arat, the debug output is now this:
>=20
> Same question here: May I translate this to Tested-by:?

Yes.

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

--+vHHedGGbCLoiHVv
Content-Type: application/pgp-signature; name=signature.asc

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

iQEzBAEBCAAdFiEEhrpukzGPukRmQqkK24/THMrX1ywFAmnU8OsACgkQ24/THMrX
1ywIuwf/duVlrhOTtwSFrltnWpHalptZacYYoSRQwBkreihrEfqr4Icopn2SQk1G
NqJp5CGwZJjm67CxAtrs0XObNTHte9fuffbZigRQ3yFX2JV651APMSS+GymYROre
gf3N9lv8Gq3HDJk+yjMk4MyH6pKtHOi0TNR0qm5FVhJlrfr+JvObm17ZPi5c5Oon
0hfQ77vMgKTQQF8KTd791WqW3nfZWfmjWlhLsQyrOfcipwcojdFrDXxz/7trgBwC
jfNOJ+aazX8p00JB+LXq+khG1HqduN7ipu2qG8ks3BdmHPdR4PkDHQCJPDq9Vh7b
eVsGXsSQ+/uN/GCTwjkE6E+xZ4dxgQ==
=TLG8
-----END PGP SIGNATURE-----

--+vHHedGGbCLoiHVv--


From xen-devel-bounces@lists.xenproject.org Tue Apr 07 12:01:33 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 07 Apr 2026 12:01:33 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1274956.1560922 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wA57Y-0007x7-MM; Tue, 07 Apr 2026 12:01:28 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1274956.1560922; Tue, 07 Apr 2026 12:01: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 1wA57Y-0007x0-In; Tue, 07 Apr 2026 12:01:28 +0000
Received: by outflank-mailman (input) for mailman id 1274956;
 Tue, 07 Apr 2026 12:01:27 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <marmarek@invisiblethingslab.com>) id 1wA57X-0007wu-8b
 for xen-devel@lists.xenproject.org; Tue, 07 Apr 2026 12:01:27 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wA57W-002MDO-K5
 for xen-devel@lists.xenproject.org; Tue, 07 Apr 2026 14:01:26 +0200
Received: from [10.42.69.12] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <marmarek@invisiblethingslab.com>)
 id 69d4f212-5cb7-0a2a0a5109dd-0a2a450c90bc-28
 for <xen-devel@lists.xenproject.org>; Tue, 07 Apr 2026 14:01:26 +0200
Received: from [103.168.172.147] (helo=fout-a4-smtp.messagingengine.com)
 by tlsNG-d25034.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.0)
 (envelope-from <marmarek@invisiblethingslab.com>)
 id 69d4f214-f40c-0a2a450c0019-67a8ac938ad1-3
 for <xen-devel@lists.xenproject.org>; Tue, 07 Apr 2026 14:01:24 +0200
Received: from phl-compute-05.internal (phl-compute-05.internal [10.202.2.45])
 by mailfout.phl.internal (Postfix) with ESMTP id E0F16EC00B5;
 Tue,  7 Apr 2026 08:01:23 -0400 (EDT)
Received: from phl-frontend-03 ([10.202.2.162])
 by phl-compute-05.internal (MEProxy); Tue, 07 Apr 2026 08:01:23 -0400
Received: by mail.messagingengine.com (Postfix) with ESMTPA; Tue,
 7 Apr 2026 08:01:22 -0400 (EDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@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=1775563283;
	 x=1775649683; bh=z5aLCYLbZ8fU3DExyhdRa3/7HUN/hueZnJV+G8fOiAk=; b=
	ZmuaKoqwSVmpcprE+UiBNIBttTiTSyc9ThC3T4N+ziBjSNoez2Zvehw/MJoC/5qJ
	XyaeZTe1aYKgP4pXS8jn/jV6nnJx6BShvoEE1zshmm5R7JRD8jZvqLZd+Q575EE7
	kuHZakmMDqIBqTwxE7b81WeTkI/irCUzTFc2TfjRPIZAiO+rdqHGSSzMUnigFEx5
	4HIEP5JwMhUJpuOhbUq10SRnInt6RKuIHtAtVOucR57z8L1Tavp3aE6k8BLhIv+L
	BamhXDRkmU6SLsF0T8ItNKj4FvM7ZKK5pQu0p8KBeWIAjgn/ZwiZaxkCpokhmUHL
	zArOSij9x5He2e/T8J2Tzw==
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=
	1775563283; x=1775649683; bh=z5aLCYLbZ8fU3DExyhdRa3/7HUN/hueZnJV
	+G8fOiAk=; b=qb+03fIukE6OW9cxM27tSmx36a6LZOHSdE011leX+w81sYkUh66
	0KijykIEyCyZF9NPfJVQVWbyrdrqzQVsvxGkT9nU9mimdihT+Kpkn7KhshNzbG33
	FDvTFoWCuJD8PxpMZCFS17jYcYmiZ3ZbdR9p9zGtxDvt3c0rLkzLav0CJv5CBndb
	yLYEid9SOK6sPPuq/Agad3RmdHAU8GFViLqs0l70SG6S/yvvZ7EIZKRFNlIGj/lW
	ZBfbe6c7UZQIgCE+AcZD5JyJu00xOSP+cUbupKqUKiHHpVbGEB4854WSQFKxXru8
	jmRMyojoEsReoHbRPuECwGYiLqpwPAUiJRg==
X-ME-Sender: <xms:E_LUaQPH0rnbH4ZFkBAuqYRKPx5kfCoAFVK7JzSK3NkP7zuZUEvIMw>
    <xme:E_LUad8ufvGyfl0M3Dv2Qp7NxC6awOO454Pt6SDIcVmYchYIxpMDT6tBBBU2OADjA
    neroBIOufgq0R8AVhsQFv9Ea6dDTsA2sLOMsbHUkNlQe2pW6g>
X-ME-Received: <xmr:E_LUacRcVDYXI7ehfo2zYZh-_EptgLFKGoHy-KVPwWQZQ1X0aY_szao90fBCmM6LQTqswZrom0xlUQoqwMzBNbq3s5AnXULAWIY>
X-ME-Proxy-Cause: gggruggvucftvghtrhhoucdtuddrgeefhedrtddtgddvtdehlecutefuodetggdotefrod
    ftvfcurfhrohhfihhlvgemucfhrghsthforghilhdpuffrtefokffrpgfnqfghnecuuegr
    ihhlohhuthemuceftddtnecusecvtfgvtghiphhivghnthhsucdlqddutddtmdenucfjug
    hrpeffhffvvefukfhfgggtuggjsehgtdorredttdejnecuhfhrohhmpeforghrvghkucfo
    rghrtgiihihkohifshhkihdqifpkrhgvtghkihcuoehmrghrmhgrrhgvkhesihhnvhhish
    hisghlvghthhhinhhgshhlrggsrdgtohhmqeenucggtffrrghtthgvrhhnpeehledvvddu
    vedvleeggedvvdetleethfehveefffetgfekiedtfeeiudejffeugeenucffohhmrghinh
    epshgrnhguphhilhgvrdhorhhgnecuvehluhhsthgvrhfuihiivgeptdenucfrrghrrghm
    pehmrghilhhfrhhomhepmhgrrhhmrghrvghksehinhhvihhsihgslhgvthhhihhnghhslh
    grsgdrtghomhdpnhgspghrtghpthhtohepgedpmhhouggvpehsmhhtphhouhhtpdhrtghp
    thhtohepjhgsvghulhhitghhsehsuhhsvgdrtghomhdprhgtphhtthhopeigvghnqdguvg
    hvvghlsehlihhsthhsrdigvghnphhrohhjvggtthdrohhrghdprhgtphhtthhopehjghhr
    ohhsshesshhushgvrdgtohhmpdhrtghpthhtoheprhhoghgvrhdrphgruhestghithhrih
    igrdgtohhm
X-ME-Proxy: <xmx:E_LUaXmlE0NHt9H48LRM4OLgDBqb9xa6M0LCxS_o9-1N53J7KQ86GA>
    <xmx:E_LUaURg1VxJCXr1fcOB92DAV33FUHq_XLFPQzDKxb6Q_MEtT8GydQ>
    <xmx:E_LUadNinUA9zU7Mha86ERqy0JLPdzFCFwjkYkWs8WriVzGYFTkg_w>
    <xmx:E_LUaVW5O4YrGjnO-trHPU6gBH5cBSU0mhDISDMD00l6r6gt72_cDw>
    <xmx:E_LUaWs7bCkLdTGdSMb6Ey_ei76Tn2qaZcGLcaVMVcE61O1B6CW6PGgb>
Feedback-ID: i1568416f:Fastmail
Date: Tue, 7 Apr 2026 14:01:20 +0200
From: Marek =?utf-8?Q?Marczykowski-G=C3=B3recki?= <marmarek@invisiblethingslab.com>
To: Jan Beulich <jbeulich@suse.com>
Cc: xen-devel <xen-devel@lists.xenproject.org>,
	=?utf-8?B?SsO8cmdlbiBHcm/Dnw==?= <jgross@suse.com>,
	Roger Pau =?utf-8?B?TW9ubsOp?= <roger.pau@citrix.com>
Subject: Re: Slow (higher scheduling latency?) system after S3 - regression
 4.17 -> 4.19 ?
Message-ID: <adTyEazLcZEpWuvy@mail-itl>
References: <acQzzlXNDxNq885V@mail-itl>
 <29775afa-e17b-4c44-a2a8-4ef4bc7cdf0f@suse.com>
 <acUqOL232lp-Lw1v@mail-itl>
 <cbed767b-4ac4-4989-8778-43ff321ae977@suse.com>
 <acVWX8vkhZiFfonP@mail-itl>
 <88c65ec7-b7f7-4d8b-a453-d707440b43cb@suse.com>
 <acZ8ez4dmQay1JSw@mail-itl>
 <ac5l-HgbDRcVkiWb@mail-itl>
 <ac_Gu2lm4Jnoz7WN@mail-itl>
 <b6e53859-70fd-49b0-a7f0-eb53386349df@suse.com>
MIME-Version: 1.0
Content-Type: multipart/signed; micalg=pgp-sha256;
	protocol="application/pgp-signature"; boundary="bQ5tYmjyiuSDb3TB"
Content-Disposition: inline
In-Reply-To: <b6e53859-70fd-49b0-a7f0-eb53386349df@suse.com>
X-purgate-ID: tlsNG-d25034/1775563285-FDD53A3D-8C6BA6C1/0/0
X-purgate-type: clean
X-purgate-size: 5634


--bQ5tYmjyiuSDb3TB
Content-Type: multipart/mixed; protected-headers=v1;
	boundary="JAoCyMYCO6UJ7qb2"
Content-Disposition: inline
Date: Tue, 7 Apr 2026 14:01:20 +0200
From: Marek =?utf-8?Q?Marczykowski-G=C3=B3recki?= <marmarek@invisiblethingslab.com>
To: Jan Beulich <jbeulich@suse.com>
Cc: xen-devel <xen-devel@lists.xenproject.org>,
	=?utf-8?B?SsO8cmdlbiBHcm/Dnw==?= <jgross@suse.com>,
	Roger Pau =?utf-8?B?TW9ubsOp?= <roger.pau@citrix.com>
Subject: Re: Slow (higher scheduling latency?) system after S3 - regression
 4.17 -> 4.19 ?


--JAoCyMYCO6UJ7qb2
Content-Type: text/plain; charset=utf-8
Content-Disposition: inline
Content-Transfer-Encoding: quoted-printable

On Tue, Apr 07, 2026 at 08:14:42AM +0200, Jan Beulich wrote:
> On 03.04.2026 15:55, Marek Marczykowski-G=C3=B3recki wrote:
> > On Thu, Apr 02, 2026 at 03:02:15PM +0200, Marek Marczykowski-G=C3=B3rec=
ki wrote:
> >> On Fri, Mar 27, 2026 at 01:47:55PM +0100, Marek Marczykowski-G=C3=B3re=
cki wrote:
> >>> Some further observation, this time regarding timers:
> >>
> >> In the meantime Roger suggested it might be about C-states. So, I just
> >> tried booting with max_cstate=3D0. I got this:
> >=20
> > We had a design session on this issue, and managed to find (thanks Roge=
r!)
> > that adding:
> >=20
> >     tsc_mode=3D'always_emulate'
> >=20
> > to the domU config fixes the issue. Now, the question is how to fix it
> > properly...
>=20
> Seeing also the remarks on Matrix, what we will hence need to figure is w=
hat
> TSC parameters (of the system and/or the VM) change across suspend. As per
> Matrix everything looked at so far was apparently stable.

I added some more logging (based on=20
https://sandpile.org/x86/msr.htm | grep TSC) - see attached debug patch.
The output before and after S3:

    =3D=3D> msr-before.txt <=3D=3D
    (XEN) [  118.910886] MSR 00000010: 000000cd6d18d6c1
    (XEN) [  118.911110] MSR 0000003b: 0000000000000000
    (XEN) [  118.911331] MSR c0000103: 0000000000000000
    (XEN) [  118.911559] Fixup #GP[0000]: ffff82d04029ad8d [arch/x86/cpu/in=
tel.c#debug_tsc+0x76/0x84] -> ffff82d04029ad83
    (XEN) [  118.912029] MSR 000006e0: 0000000000000000
    (XEN) [  118.912253] MSR 000000e7: 000000064cf8ec5e
    (XEN) [  118.912473] MSR 000000e8: 000000065d09c019
    (XEN) [  118.912687] MSR 0000064e: 000000052ec83116


    =3D=3D> msr-after.txt <=3D=3D
    (XEN) [  146.396099] MSR 00000010: 00000012fac68ccd
    (XEN) [  146.396329] MSR 0000003b: 0000000000000000
    (XEN) [  146.396553] MSR c0000103: 0000000000000000
    (XEN) [  146.396777] Fixup #GP[0000]: ffff82d04029ad8d [arch/x86/cpu/in=
tel.c#debug_tsc+0x76/0x84] -> ffff82d04029ad83
    (XEN) [  146.397248] MSR 000006e0: 0000000000000000
    (XEN) [  146.397470] MSR 000000e7: 00000001e41a578a
    (XEN) [  146.397690] MSR 000000e8: 000000017dc5b211
    (XEN) [  146.397909] MSR 0000064e: 000000014eddbe8f

Nothing interesting here...

What other values would make sense to compare?

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

--JAoCyMYCO6UJ7qb2
Content-Type: text/plain; charset=utf-8
Content-Disposition: attachment; filename=0001-DEBUG-TSC.patch
Content-Transfer-Encoding: quoted-printable

=46rom 2d1bd9c15e605136c7817fe824a7c429cbfb137d Mon Sep 17 00:00:00 2001
=46rom: =3D?UTF-8?q?Marek=3D20Marczykowski-G=3DC3=3DB3recki?=3D
 <marmarek@invisiblethingslab.com>
Date: Tue, 7 Apr 2026 13:55:41 +0200
Subject: [PATCH] DEBUG TSC

---
 xen/arch/x86/cpu/intel.c | 28 ++++++++++++++++++++++++++++
 1 file changed, 28 insertions(+)

diff --git a/xen/arch/x86/cpu/intel.c b/xen/arch/x86/cpu/intel.c
index 51a3d1c4b5f3..846c6a704a3f 100644
--- a/xen/arch/x86/cpu/intel.c
+++ b/xen/arch/x86/cpu/intel.c
@@ -4,6 +4,7 @@
 #include <xen/sched.h>
 #include <xen/smp.h>
 #include <xen/string.h>
+#include <xen/keyhandler.h>
=20
 #include <asm/apic.h>
 #include <asm/i387.h>
@@ -675,3 +676,30 @@ void __init intel_init_arat(void)
     if ( opt_arat && cpu_has_arat )
         setup_force_cpu_cap(X86_FEATURE_XEN_ARAT);
 }
+
+static void cf_check debug_tsc(unsigned char key)
+{
+    uint64_t val;
+    int msr_idx[] =3D { 0x10,         // TSC
+                      0x3b,         // TSC_ADJUST
+                      0xc0000103,   // TSC_AUX
+                      0xc0000104,   // TSC_RATIO
+                      0x06e0,       // TSC_DEADLINE
+                      0xe7,         // MPERF
+                      0xe8,         // APERF
+                      0x64e,        // PPERF
+                      0 };
+
+    for ( int i =3D 0; msr_idx[i]; i++ )
+    {
+        if ( !rdmsr_safe(msr_idx[i], &val) )
+            printk("MSR %08x: %016lx\n", msr_idx[i], val);
+    }
+}
+
+static int __init cf_check register_debug_tsc(void)
+{
+    register_keyhandler('1', debug_tsc, "Extra TSC debug", false);
+    return 0;
+}
+__initcall(register_debug_tsc);
--=20
2.53.0


--JAoCyMYCO6UJ7qb2--

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

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

iQEzBAEBCAAdFiEEhrpukzGPukRmQqkK24/THMrX1ywFAmnU8hAACgkQ24/THMrX
1ywuIAgAm1QhozTGwws97jc5c+BB2Y8ViruL769uzkNd24Hr1BZJBtDsOSlVwQWW
Oz25zIA47k2toJD+veU4KYTNgWUW/OACkiQMW/0F2ozYIRXqBSYmwDOip+jFQaMo
LoOh+G6KUKmLLsjbdrrPMr+rB1kl8Udl/Qcdct69/GOp/iEQFIS91suQjN2VlSiJ
ojNyhyTpPWuIwUrs/83f3MPz1jr+JMHN476L6fyhftMf5SayguMtDDHRIQlnzK4w
5r44nVFvHT914TomqGePOgoINLGSkPgVbAcr7gnbzFlJAkfASQNvwU14MimmGyFn
ZKhKNw0bfgdBhix6X/HR9GxFfaUkZg==
=sP3B
-----END PGP SIGNATURE-----

--bQ5tYmjyiuSDb3TB--


From xen-devel-bounces@lists.xenproject.org Tue Apr 07 12:49:27 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 07 Apr 2026 12:49:27 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1274972.1560929 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wA5ro-0005Ja-1Z; Tue, 07 Apr 2026 12:49:16 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1274972.1560929; Tue, 07 Apr 2026 12:49: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 1wA5rn-0005JT-VH; Tue, 07 Apr 2026 12:49:15 +0000
Received: by outflank-mailman (input) for mailman id 1274972;
 Tue, 07 Apr 2026 12:49:14 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <bounce-md_30504962.69d4fd46.v1-4ef5e6487b0943b7995d36e71b58647b@bounce.vates.tech>)
 id 1wA5rm-0005JN-Jg
 for xen-devel@lists.xenproject.org; Tue, 07 Apr 2026 12:49:14 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wA5rk-00C3ho-KC
 for xen-devel@lists.xenproject.org; Tue, 07 Apr 2026 14:49:12 +0200
Received: from [10.42.69.3] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1) (envelope-from
 <bounce-md_30504962.69d4fd46.v1-4ef5e6487b0943b7995d36e71b58647b@bounce.vates.tech>)
 id 69d4fd47-e002-0a2a0a5209dd-0a2a4503e956-6
 for <xen-devel@lists.xenproject.org>; Tue, 07 Apr 2026 14:49:12 +0200
Received: from [198.2.180.46] (helo=mail180-46.suw31.mandrillapp.com)
 by tlsNG-33051d.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.0)
 (envelope-from
 <bounce-md_30504962.69d4fd46.v1-4ef5e6487b0943b7995d36e71b58647b@bounce.vates.tech>)
 id 69d4fd47-02b3-0a2a45030019-c602b42e66fe-3
 for <xen-devel@lists.xenproject.org>; Tue, 07 Apr 2026 14:49:12 +0200
Received: from pmta11.mandrill.prod.suw01.rsglab.com (localhost [127.0.0.1])
 by mail180-46.suw31.mandrillapp.com (Mailchimp) with ESMTP id
 4fqmGt6QjVz8XS3Fp
 for <xen-devel@lists.xenproject.org>; Tue,  7 Apr 2026 12:49:10 +0000 (GMT)
Received: from [37.26.189.201] by mandrillapp.com id
 4ef5e6487b0943b7995d36e71b58647b; Tue, 07 Apr 2026 12:49: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=mte1 header.d=mandrillapp.com header.i="@mandrillapp.com" header.h="From:Subject:To:Cc:Message-Id:Feedback-ID:Date:MIME-Version:Content-Type:Content-Transfer-Encoding"; dkim=pass header.s=mte1 header.d=vates.tech header.i="teddy.astie@vates.tech" header.h="From:Subject:To:Cc:Message-Id:Feedback-ID:Date:MIME-Version:Content-Type:Content-Transfer-Encoding"
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=mandrillapp.com;
	s=mte1; t=1775566150; x=1775836150;
	bh=2dO8KJZbjBKVZqh2x7EcvVUJFpqgCoHPe/hpAMGoaRQ=;
	h=From:Subject:To:Cc:Message-Id:Feedback-ID:Date:MIME-Version:
	 Content-Type:Content-Transfer-Encoding:CC:Date:Subject:From;
	b=Mok9MVCWhAyudV2MGq9djdrWXkJHc6Vp/TvePs66UzimFGwvA9mqqF95Dk+RqxqeV
	 4lZajoBSfBgjpEGYI+A4KjabPDVZnXo7JlH/l+G7X/2P9Q3N60du/B2I4pxw+Z9TeD
	 siobFgZcMdi8Y0Dooh2/QGJb9GnNgp2KbmmYzTRKbonmZP89deiB7udFvCPcgNZbJ9
	 d0qkpjGBMs6+fYKpmMx7VhX0n6E7n7wGg7wwRvduF4LQGBJVfdr0emDitjYUtKo4Cl
	 4YlTv0uPAOOyzhzB0/40QYWv1kUTJkTNFzVVFzuLYQ1vvHK9xU6sTDnq1eiFYv5jqW
	 aBCzeu8ptP6rw==
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=vates.tech; s=mte1;
	t=1775566150; x=1775826650; i=teddy.astie@vates.tech;
	bh=2dO8KJZbjBKVZqh2x7EcvVUJFpqgCoHPe/hpAMGoaRQ=;
	h=From:Subject:To:Cc:Message-Id:Feedback-ID:Date:MIME-Version:
	 Content-Type:Content-Transfer-Encoding:CC:Date:Subject:From;
	b=XBhl/6GqAkL8d+rCqjrRRK3sBt6sW2T0Uhx1QbOr1A6z9bKKZo5Zbe+BUHswkfpRK
	 e8hBzCPj7JE6iWCidEmhHWpWsJ+qu9+IvxgbPxW9PvrszZe6lSnFY7PohrscItGvCD
	 diGOr/yAjnUphg/cRwBE3NLxECbDqbGG1Io8g5JQrzjtfnX0Uzb0XRvloqT7FmhzIQ
	 rKkWeH6MxsJ+hU1IMvNpr5MioNhcduWgfnGHWdfpLgVrtQSWidQuYmGHO0uIwt/y0Z
	 ssvfg409UVdwvYd1bOMMWiNcOUtodxHS35F8NYgfE44aezZ7UAi8S58Ew/qsDXxzak
	 z5aWWbGnd3prA==
From: "Teddy Astie" <teddy.astie@vates.tech>
Subject: =?utf-8?Q?[PATCH]=20MAINTAINERS:=20Add=20myself=20as=20x86=20reviewer?=
X-Mailer: git-send-email 2.52.0
X-Bm-Disclaimer: Yes
X-Bm-Milter-Handled: 4ffbd6c1-ee69-4e1b-aabd-f977039bd3e2
X-Bm-Transport-Timestamp: 1775566148852
To: xen-devel@lists.xenproject.org
Cc: "Teddy Astie" <teddy.astie@vates.tech>, "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.pau@citrix.com>, "Stefano Stabellini" <sstabellini@kernel.org>
Message-Id: <20260407124840.80174-2-teddy.astie@vates.tech>
X-Native-Encoded: 1
X-Report-Abuse: =?UTF-8?Q?Please=20forward=20a=20copy=20of=20this=20message,=20including=20all=20headers,=20to=20abuse@mandrill.com.=20You=20can=20also=20report=20abuse=20here:=20https://mandrillapp.com/contact/abuse=3Fid=3D30504962.4ef5e6487b0943b7995d36e71b58647b?=
X-Mandrill-User: md_30504962
Feedback-ID: 30504962:30504962.20260407:md
Date: Tue, 07 Apr 2026 12:49:10 +0000
MIME-Version: 1.0
Content-Type: text/plain; charset=utf-8
Content-Transfer-Encoding: quoted-printable
X-purgate-ID: tlsNG-33051d/1775566152-CB92AC9A-193E5811/0/0
X-purgate-type: clean
X-purgate-size: 1383

I already started reviewing patches, but would like to
be more active in that area.

Signed-off-by: Teddy Astie <teddy.astie@vates.tech>
---
 MAINTAINERS | 3 +++
 1 file changed, 3 insertions(+)

diff --git a/MAINTAINERS b/MAINTAINERS
index 1ac61da59a..77f72e52f4 100644
--- a/MAINTAINERS
+++ b/MAINTAINERS
@@ -225,6 +225,7 @@ M:=09Jan Beulich <jbeulich@suse.com>
 M:=09Andrew Cooper <andrew.cooper3@citrix.com>
 M:=09Roger Pau Monn=C3=A9 <roger.pau@citrix.com>
 R:=09Jason Andryuk <jason.andryuk@amd.com>
+R:=09Teddy Astie <teddy.astie@vates.tech>
 S:=09Supported
 F:=09xen/drivers/passthrough/amd/
 
@@ -233,6 +234,7 @@ M:=09Jan Beulich <jbeulich@suse.com>
 M:=09Andrew Cooper <andrew.cooper3@citrix.com>
 M:=09Roger Pau Monn=C3=A9 <roger.pau@citrix.com>
 R:=09Jason Andryuk <jason.andryuk@amd.com>
+R:=09Teddy Astie <teddy.astie@vates.tech>
 S:=09Supported
 F:=09xen/arch/x86/cpu/vpmu_amd.c
 F:=09xen/arch/x86/hvm/svm/
@@ -613,6 +615,7 @@ X86 ARCHITECTURE
 M:=09Jan Beulich <jbeulich@suse.com>
 M:=09Andrew Cooper <andrew.cooper3@citrix.com>
 M:=09Roger Pau Monn=C3=A9 <roger.pau@citrix.com>
+R:=09Teddy Astie <teddy.astie@vates.tech>
 S:=09Supported
 L:=09xen-devel@lists.xenproject.org
 F:=09xen/arch/x86/
-- 
2.52.0



--
Teddy Astie | Vates XCP-ng Developer

XCP-ng & Xen Orchestra - Vates solutions

web: https://vates.tech




From xen-devel-bounces@lists.xenproject.org Tue Apr 07 13:33:17 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 07 Apr 2026 13:33:17 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1274987.1560950 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wA6YK-0003NU-7V; Tue, 07 Apr 2026 13:33:12 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1274987.1560950; Tue, 07 Apr 2026 13:33: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 1wA6YK-0003NL-45; Tue, 07 Apr 2026 13:33:12 +0000
Received: by outflank-mailman (input) for mailman id 1274987;
 Tue, 07 Apr 2026 13:33:11 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <jbeulich@suse.com>) id 1wA6YJ-0003Mx-0d
 for xen-devel@lists.xenproject.org; Tue, 07 Apr 2026 13:33:11 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wA6YH-00CKk5-Ur
 for xen-devel@lists.xenproject.org; Tue, 07 Apr 2026 15:33:09 +0200
Received: from [10.42.69.6] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <jbeulich@suse.com>)
 id 69d50789-bab6-0a2a0a5309dd-0a2a4506eacc-40
 for <xen-devel@lists.xenproject.org>; Tue, 07 Apr 2026 15:33:09 +0200
Received: from [209.85.128.48] (helo=mail-wm1-f48.google.com)
 by tlsNG-16d1c6.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.0)
 (envelope-from <jbeulich@suse.com>)
 id 69d50795-0df0-0a2a45060019-d1558030c9b1-3
 for <xen-devel@lists.xenproject.org>; Tue, 07 Apr 2026 15:33:09 +0200
Received: by mail-wm1-f48.google.com with SMTP id
 5b1f17b1804b1-488b8bc6bc9so9694925e9.3
 for <xen-devel@lists.xenproject.org>; Tue, 07 Apr 2026 06:33:09 -0700 (PDT)
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-48899d1c148sm190756985e9.5.2026.04.07.06.33.07
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Tue, 07 Apr 2026 06:33:08 -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=google header.d=suse.com header.i="@suse.com" header.h="Content-Transfer-Encoding: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=1775568789; x=1776173589; darn=lists.xenproject.org;
        h=content-transfer-encoding:autocrypt:subject:from:cc:to
         :content-language:user-agent:mime-version:date:message-id:from:to:cc
         :subject:date:message-id:reply-to;
        bh=e6KILfXyu71AeLqztPUAP/p5CdHQuV7gOW/9jCvRHJI=;
        b=RWqyg7Ba+NTYIrqGw9ulCP5Ka8qJGB4qlysIdS6ZvCkbLNYERmobWEWhU3blMMPFzk
         mgAX0YAR3e7+t3IqKjwuz5JzLond3B2ODmskzDYUwiV8DhJZogPLoE/dKFy8/ZDPA4ZH
         Y8FyLYP0wlRuNwJIdoOUSJklRUWH5Hy+dDo4RK53d/XL3tiwOISJmbAqh89WMYfsw+ra
         B6H0kkpE/zFvtr3S52jg8I0L9lyS08H/wdtwNIOqPgKANA5U9dD3Ec6+J9dF3Pis5Whe
         6i2TpfDfDIrgRbpe/yR2C+vnsglpVN2pYkRVWjAgT7ScWMd1PF1Q2NWAPoiADWypUUZ5
         u/JA==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20251104; t=1775568789; x=1776173589;
        h=content-transfer-encoding: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;
        bh=e6KILfXyu71AeLqztPUAP/p5CdHQuV7gOW/9jCvRHJI=;
        b=K/tcWyl21p8dq5bBQk1whMStQYYEkIqEAJXH+DBA+n2giVzgiZgJ2I8gZ3P65IObdG
         4e/hIgle14nZWEIhPwfxJLfsQTd9hedpnrCKXnIsha6UduzZgKGODWFgBUfOpxJnTqOT
         c85KR1AISR8rqq86vWnwscJQGiqDQ/cPQALe32d58TzhH7avc5NyScPhwzNVoT5edlbz
         CAW+HBtZDlE1f90uL7meGwWZtejgAK3M/2KTnyT5sJMO64dpfOo6p0J3Txwp1vgVCYvl
         Oj53fl89fYFhkpGXVbGtDnMlBt6bcvpByt+LOpOhKHStTDt9zAnV4KcIEsgMh/9FcZkj
         WJYQ==
X-Gm-Message-State: AOJu0Yzd79nk/YVsRmfhj8UGLXSgAvu8K+1zfTYVDDS6aWFVESjyV62m
	ZLWKYSkZ4UOCH+xl2Pa1doub/B0XTzvm45+aFBMy080QHkTBtxzBbZ1W5fQkY1TgXKy3b2XN3K9
	f2hy1qQ==
X-Gm-Gg: AeBDietm6Ok4qeG0ytQmFpssldgjqRQ5XO8Q2VUAB1H+Tq4BDl6jensXqx5OI8XzdZj
	YDwQRYwUsHs6ztKSfO6R/ExyS141e0L89+tpfoc+dgjallcUKfpAhU09HsROQd71dbcJA+5YaRw
	8371C1vNhu5FyTUbKsB/OR8V5oQe7RdsuJZK7AT8CH/n6Gy91ZGXt034ACYInGGJrQ5Kus/U7T1
	P3Z7UCw6NLuFqoqLJ5Y4zm8G35cLKB7hwryV6vmyjP7K8m7eP2w49qXja8cfLhjm705CY1LOOEp
	2gUwAXnMQ44hTN8bh9aqwU33VC3N/6tECKa7Dn8FQCQE/kdPbUECctdLxMH+bCAUd3utAvS8FFG
	XDckkyoHoCU0N/ZPUHycIYeDLPXfetn21IlDxNZFPNc5JaHn14AqUVFJIEyv3Bmr4rim7bEvm2x
	c5J4HeH3I9bqLcOC08sXUXErbUTFp4ijHrEnK9PXnW+D1yoQazHqAoXgRlY5zNcVstVMQA1d4KM
	mFOW5DgvA/BrUstpwfQC8oVoQ==
X-Received: by 2002:a05:600c:c8d:b0:486:ffa3:594 with SMTP id 5b1f17b1804b1-488997a6883mr230791565e9.23.1775568789016;
        Tue, 07 Apr 2026 06:33:09 -0700 (PDT)
Message-ID: <a77822d8-08f4-4c4f-b291-cc44a213cf9f@suse.com>
Date: Tue, 7 Apr 2026 15:33:12 +0200
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>,
 =?UTF-8?Q?Roger_Pau_Monn=C3=A9?= <roger.pau@citrix.com>,
 Teddy Astie <teddy.astie@vates.tech>,
 Marek Marczykowski <marmarek@invisiblethingslab.com>
From: Jan Beulich <jbeulich@suse.com>
Subject: [PATCH] x86/HPET: channel handling in hpet_broadcast_resume()
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: 8bit
X-purgate-ID: tlsNG-16d1c6/1775568789-AF7393D8-EAABA65A/0/0
X-purgate-type: clean
X-purgate-size: 2216

The per-channel ENABLE bit is to solely be driven by hpet_enable_channel()
and hpet_msi_{,un}mask(). It doesn't need setting immediately. Except for
the (possible) channel put in legacy mode we don't do so during boot
either.

Instead reset ->arch.cpu_mask, to avoid msi_compose_msg() yielding an
all-zero message (when the passed in CPU mask has no online CPUs). Nothing
would later call msi_compose_msg() / hpet_msi_write(), and hence nothing
would later produce a well-formed message template in
hpet_events[].msi.msg.

Fixes: 15aa6c67486c ("amd iommu: use base platform MSI implementation")
Reported-by: Marek Marczykowski-Górecki <marmarek@invisiblethingslab.com>
Signed-off-by: Jan Beulich <jbeulich@suse.com>
Tested-by: Marek Marczykowski-Górecki <marmarek@invisiblethingslab.com>
---
As to the Fixes: tag: The issue for the HPET resume case is the
cpumask_intersects(desc->arch.cpu_mask, &cpu_online_map) check in
msi_compose_msg(). The earlier cpumask_empty() wasn't a problem, as
cpu_mask_to_apicid() returning a bogus (offline) value didn't have any bad
effect: Before use, a valid destination would have been put in place, but
other parts of .msg were properly set up. Furthermore we also didn't clear
the entire message prior to that change.

Many thanks got to Marek for tirelessly trying out various debugging
suggestions.

--- a/xen/arch/x86/hpet.c
+++ b/xen/arch/x86/hpet.c
@@ -685,12 +685,18 @@ void hpet_broadcast_resume(void)
     for ( i = 0; i < n; i++ )
     {
         if ( hpet_events[i].msi.irq >= 0 )
+        {
+            struct irq_desc *desc = irq_to_desc(hpet_events[i].msi.irq);
+
+            cpumask_copy(desc->arch.cpu_mask, cpumask_of(smp_processor_id()));
+
             __hpet_setup_msi_irq(irq_to_desc(hpet_events[i].msi.irq));
+        }
 
         /* set HPET Tn as oneshot */
         cfg = hpet_read32(HPET_Tn_CFG(hpet_events[i].idx));
         cfg &= ~(HPET_TN_LEVEL | HPET_TN_PERIODIC);
-        cfg |= HPET_TN_ENABLE | HPET_TN_32BIT;
+        cfg |= HPET_TN_32BIT;
         if ( !(hpet_events[i].flags & HPET_EVT_LEGACY) )
             cfg |= HPET_TN_FSB;
         hpet_write32(cfg, HPET_Tn_CFG(hpet_events[i].idx));


From xen-devel-bounces@lists.xenproject.org Tue Apr 07 13:37:33 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 07 Apr 2026 13:37:33 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1274999.1560970 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wA6cW-0004CP-Pa; Tue, 07 Apr 2026 13:37:32 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1274999.1560970; Tue, 07 Apr 2026 13:37: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 1wA6cW-0004CI-N3; Tue, 07 Apr 2026 13:37:32 +0000
Received: by outflank-mailman (input) for mailman id 1274999;
 Tue, 07 Apr 2026 13:37:31 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <jbeulich@suse.com>) id 1wA6cV-0004CC-D6
 for xen-devel@lists.xenproject.org; Tue, 07 Apr 2026 13:37:31 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wA6cU-00GRJr-PG
 for xen-devel@lists.xenproject.org; Tue, 07 Apr 2026 15:37:30 +0200
Received: from [10.42.69.4] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <jbeulich@suse.com>)
 id 69d50893-2eae-0a2a0a5409dd-0a2a4504a4e0-8
 for <xen-devel@lists.xenproject.org>; Tue, 07 Apr 2026 15:37:30 +0200
Received: from [209.85.221.52] (helo=mail-wr1-f52.google.com)
 by tlsNG-ebf023.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.0)
 (envelope-from <jbeulich@suse.com>)
 id 69d5089a-bb33-0a2a45040019-d155dd34b505-3
 for <xen-devel@lists.xenproject.org>; Tue, 07 Apr 2026 15:37:30 +0200
Received: by mail-wr1-f52.google.com with SMTP id
 ffacd0b85a97d-43b8e8e7432so4122989f8f.1
 for <xen-devel@lists.xenproject.org>; Tue, 07 Apr 2026 06:37:30 -0700 (PDT)
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-43d1e2c50a7sm50487498f8f.15.2026.04.07.06.37.29
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Tue, 07 Apr 2026 06:37:29 -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=google header.d=suse.com header.i="@suse.com" header.h="Content-Transfer-Encoding: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=1775569050; x=1776173850; darn=lists.xenproject.org;
        h=content-transfer-encoding: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;
        bh=gay1F9QM5baGBw82sPQPNBF5RzElQYDYXWXl9uQuAPw=;
        b=I/+ZPh8JMHirnSA3l1PQIeVB1p7fKwtiKIPu3hfR10YTx4WOmTmCp9sA9l/SDQrZ9u
         /DYu2ATpdaXr2IqT3Bys9QxSuONc/Aep/0r3YSGk7REyIbPq1F9vMBOy4+8+ISQUL4Jm
         8pRKFkCCXD4aemwVyFfRi79JyBgpC+RHYyOumqVhYCcoQdwek/UvMOZdGcoCpiP7tZxU
         Z+smaZd/f+IvQWKvJ3wz2fXCL9uTt4Uz8gWs3A5yIv55x0yoHStWaWEwuVSZejpLxy/B
         Zjag1lcWInVYBT2WWxYuR5ZCv+e5QNslyMlWH1H/8cxb/EBqmJdprR4Ob19vaz2vl+zh
         ZPEg==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20251104; t=1775569050; x=1776173850;
        h=content-transfer-encoding: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;
        bh=gay1F9QM5baGBw82sPQPNBF5RzElQYDYXWXl9uQuAPw=;
        b=kZL4MdCJN+L427nfsANzTUSUrl1h1k1cPtk/v8ZQcILIKIegh6UKltlLpkqOcuiqYw
         xkANLFCTc9bvnJWktxSb1Fax69z/QuaaxxjSIj0ML4i60hkWRNmxVANRfsVM13caAoiG
         MmrSAyvE/O8SIsY98ki8lGU3m9OPSIxCYAZEST53UgIfxMaXkIPJ0IHFn5oZREKO8C6P
         bDOzAnoMsfQi3+OEqnNVQA6FuWpt2btpW9uHEyg7iHmXMicxGznAgfm6Fp0T/LqqC4u5
         9AKnSwbomKWc0zsRdNaEfygC2kedW1GAjeP/UZ/XUMIxboAB57MUiuK7V7mpUoOkA+vw
         6DFg==
X-Forwarded-Encrypted: i=1; AJvYcCWZqyj3Y4iRLbt7u0/pPno11Mg4qD2Eiq1/dX1N5dHiWAZnsO73ZraK3Vttu0qgswO7tNEOEz7H7/s=@lists.xenproject.org
X-Gm-Message-State: AOJu0YxXcnLy+GqOdptAshh22vg+xP9QX/R2bmNeH5R2oBvHzzY7O18r
	Wi2ag4wHC6vYA7quDiO3/4PE2DO+GwSngO+rxFc9ojtqSOfEIan+3axEIsgMeKzBnA==
X-Gm-Gg: AeBDietC/uZm1Ryjb57yPx1L+FkiAKRYyENe3R22FacJnLON0THDluT1s+u0t5MhiPB
	Zjrc4uXvgorqFmWt4BW8G/rS4Bpit8FKu/XEiw9ZwFCWzMp+nARkVFfFfFs6M4FrqELfX4B8rZu
	iyIQioDUT44yO/1UnajsLNNjRFQs+S22t5Co/xw9jA5mxZ0ePK0+4OAUKKVKYYbuU1b+/1CWVIb
	guCzdjsyvvTPoLLdEI37oVwaUQGpI0jJeLLYCnG+0dT30fwChS779eeBWNp208IxgrSvrifxBvK
	hB07/tSWmJWZ8H05dSU9NCnUH6Nw/pSIq2BWeXTZ9HuF6U1gJD/w1Fnw+x9tvJsk+S9laOEKtMU
	5PA0OuzKP1S6Adgu3QD/EXSkzTqBMkGwL/HixhFeeZNtti3l0jTb5wc04P86/vGoRzV01siLNbV
	y6gd5X/r495WbMHzkUf7lMtbU7cnHbCXFFzVT2p8alLL4kF+dKrDDmxgvWTNr1JqwycZ7JmJF+V
	KYsKYc52jJq1AYZVLUlnfeCRA==
X-Received: by 2002:a05:6000:2489:b0:43d:26a2:f8c3 with SMTP id ffacd0b85a97d-43d292e87f6mr24049750f8f.35.1775569050119;
        Tue, 07 Apr 2026 06:37:30 -0700 (PDT)
Message-ID: <85e9d1bc-dda0-4766-b0ff-b2895a63d1fd@suse.com>
Date: Tue, 7 Apr 2026 15:37:33 +0200
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH] MAINTAINERS: Add myself as x86 reviewer
To: Teddy Astie <teddy.astie@vates.tech>
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.pau@citrix.com>,
 Stefano Stabellini <sstabellini@kernel.org>, xen-devel@lists.xenproject.org
References: <20260407124840.80174-2-teddy.astie@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: <20260407124840.80174-2-teddy.astie@vates.tech>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 7bit
X-purgate-ID: tlsNG-ebf023/1775569050-32B3851B-CF0B32B6/0/0
X-purgate-type: clean
X-purgate-size: 237

On 07.04.2026 14:49, Teddy Astie wrote:
> I already started reviewing patches, but would like to
> be more active in that area.
> 
> Signed-off-by: Teddy Astie <teddy.astie@vates.tech>

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



From xen-devel-bounces@lists.xenproject.org Tue Apr 07 13:42:52 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 07 Apr 2026 13:42:52 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1275010.1560979 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wA6hZ-0005mT-El; Tue, 07 Apr 2026 13:42:45 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1275010.1560979; Tue, 07 Apr 2026 13:42: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 1wA6hZ-0005mM-C9; Tue, 07 Apr 2026 13:42:45 +0000
Received: by outflank-mailman (input) for mailman id 1275010;
 Tue, 07 Apr 2026 13:42:44 +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 1wA6hX-0005mG-WF
 for xen-devel@lists.xenproject.org; Tue, 07 Apr 2026 13:42:44 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wA6hV-002G4x-QL
 for xen-devel@lists.xenproject.org; Tue, 07 Apr 2026 15:42:43 +0200
Received: from [10.42.69.4] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <andrew.cooper@citrix.com>)
 id 69d509c9-2eae-0a2a0a5409dd-0a2a4504b56e-34
 for <xen-devel@lists.xenproject.org>; Tue, 07 Apr 2026 15:42:43 +0200
Received: from [40.107.208.34]
 (helo=PH0PR06CU001.outbound.protection.outlook.com)
 by tlsNG-ebf023.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.0)
 (envelope-from <andrew.cooper@citrix.com>)
 id 69d509d1-bb33-0a2a45040019-286bd0224056-3
 for <xen-devel@lists.xenproject.org>; Tue, 07 Apr 2026 15:42:42 +0200
Received: from CH8PR03MB8275.namprd03.prod.outlook.com (2603:10b6:610:2b9::7)
 by BY1PR03MB7216.namprd03.prod.outlook.com (2603:10b6:a03:533::20)
 with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9769.18; Tue, 7 Apr
 2026 13:42: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%6]) with mapi id 15.20.9769.018; Tue, 7 Apr 2026
 13:42: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=PMr8jNX0SmxjpMnhTyT/khrDwUUm4iB+xCJByrJZj9YurKerIPO6rdzI++cups352BTWq/7srPALymEbIh/6xxjRw8kkZznTFWdysXTuP7lPH0nbjEUfPo26VjPpgClTXY7JUVjLW9UxY6F4uKlLPZbuCNPNvJYtdHDuVWnRLN6HVOa44uDcQMJ0gtExHY+stwyNde97tA4Uj/OC+DcWulkiOMJuRGo9FGyn5KSn3aiG03kduSmbkJThXTFUW4U9D2dmhgOAlkWAzObbhtQa8pzrLlE4y2D6PnzzdqML9T4qGUPnfKvJCsaQS4TnhTR2dJeNgDqVAaVu9ZiVdPeRnA==
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com;
 s=arcselector10001;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1;
 bh=BrTWJOnsojOdwRykwQ2fcL41ksKTceX51Hx+RzWGZ3Q=;
 b=o45dR2o4OGFsFM9F9YPHd6mHfSJJhwQ1ENFRGDJ5Jyc2CPWzCaVC0hkY/tHmIu/bXVVsIROLzMDcztrKMwLNE8k4W79iV1aknUH8dY8OjOnr/y2vUOpU0uRQZPHfcYJ9z3kx2Xf/y7azhb6IT01ZxksDfzHcE6oGsLHg8RiKTLNxMMr1vmU1vVTf5vH+SdrIy55/+B3QIZNpcRO19A5APLCRCeGisCjuDKc72sXPQ3qDg89eze3/RjqP7MEtE9yIy5LhZizI+5UXXKxk8CgsIGHUhVFQmWVkxXNGytx3/2wZlOtY4FWSdJoXosU2iPmf8VImdLt7AUnOSPMGNGHBlA==
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=BrTWJOnsojOdwRykwQ2fcL41ksKTceX51Hx+RzWGZ3Q=;
 b=bYCnx0ael5QX/XgV2qqPiZjxMoZdNLkXJLR6BXNmQHGjD/8/KPDaswIxGVot57dWUMoivXEx/em9X+Y1n+7NV2VMDYF8iNjAxpaDP6hqggIN7H4E1lxVDlN6iWh8TMClrS8BD97qqG/kJAKjezy0OedHSTcRJkpsk7NTK/slzGA=
Authentication-Results: dkim=none (message not signed)
 header.d=none;dmarc=none action=none header.from=citrix.com;
Message-ID: <59a470c4-9577-4834-8740-20d1e88c6cb7@citrix.com>
Date: Tue, 7 Apr 2026 14:42:32 +0100
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>, =?UTF-8?Q?Roger_Pau_Monn=C3=A9?=
 <roger.pau@citrix.com>, Stefano Stabellini <sstabellini@kernel.org>
Subject: Re: [PATCH] MAINTAINERS: Add myself as x86 reviewer
To: Teddy Astie <teddy.astie@vates.tech>, xen-devel@lists.xenproject.org
References: <20260407124840.80174-2-teddy.astie@vates.tech>
Content-Language: en-GB
From: Andrew Cooper <andrew.cooper3@citrix.com>
In-Reply-To: <20260407124840.80174-2-teddy.astie@vates.tech>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 7bit
X-ClientProxiedBy: LO4P123CA0093.GBRP123.PROD.OUTLOOK.COM
 (2603:10a6:600:191::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_|BY1PR03MB7216:EE_
X-MS-Office365-Filtering-Correlation-Id: 5cc44497-654a-4f4a-bd61-08de94ab879f
X-MS-Exchange-SenderADCheck: 1
X-MS-Exchange-AntiSpam-Relay: 0
X-Microsoft-Antispam:
	BCL:0;ARA:13230040|366016|376014|1800799024|22082099003|18002099003|56012099003;
X-Microsoft-Antispam-Message-Info:
	0kP2yVCAPDZFVkYN8mQxD33qMUklCKQ7kNiwDTnuDyuY82uedteKtB19X1BWRz9uoefykhLWSvblZbt64KlAoqTpqMU2ymDWMS95ggZOx74VX01viAstwhEwJLgLswhLH9KAch7IOlL/WxHRIBiG1eRBkPz5XZi0y8xyHeq+nHEpmQK3/7dyzTsZb1QovO3Vmgk6S0x8PgUJ3kWNIyZbohTbHqmMVzdCjiRRp3dB0Ybomf1DrWZ9VdNnd/QB+ubvIlb2PttrUGEEBjN14O4sbhzCjX+R07O1RQsNEKk4P+vk3Ewm40yw87mzTN65JlkRWqjxB/M6MobTDaOnBEFEJYzhESTbzuj5As9MkioudQPfTqDncZSQIa5uVAs5scuw2AdvRQj+vjbvyyqyp6GOb2DxDnV4+4jAkVWx4nmwaB/EP6Oi5uXZb9WDGgDpSQSPfZ75WKr0YJOAGYSIfV9gwn11miPN950paMHXW3m3wJJUTWSzVwK1CwmEmTvgKn7+Q1Ulp8oqiP+RI9Ag3mrZ/wNqukFSngrnFeydaIEn8AL2WO7xM51jNbJ71JP08IGLLlMMkJclOYEWLo0koPWq68+3njtWabJTSstQb+FETnmLUO5KRvdDdiyxhLzUrCA8iL3tOYph/IrxJ7FR5E0FqWMTDHEr/3tq6GplCSIcHnWmfJg7y2mVeexL3bPKRR/g9SSdmJScmBdfZp1u9ka/8+raPhQIVSQLnXORCIvS/S4=
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)(1800799024)(22082099003)(18002099003)(56012099003);DIR:OUT;SFP:1101;
X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1
X-MS-Exchange-AntiSpam-MessageData-0:
	=?utf-8?B?RjhlNFdVMTlyTEczY0hZS3pOK2dQUlppUFEydFo0V0phdzlYbzJuSkt4bUUx?=
 =?utf-8?B?dDJYc1RzbTFwK2ZHbVlZMFlCYUIyRDVMQjVYZmlQa0Vha3BlN3ExNmdFYzl6?=
 =?utf-8?B?Z0d4R3M3UUxObE1WMVlaWGVER0U3L0ZQbnM5NHpOcVg0VURjVHJiU1BDL2Ns?=
 =?utf-8?B?MXNSUXVSb0szR0lsUEhqZDQvaUpOREFRVjZRWWF1a2JEYlF6aUhZeFRWK2da?=
 =?utf-8?B?N1RJNHNod2lzcVZlZWNLSG1WNitTTDNkZkpUaUJUYmtCWm42RjFZRW55MUNB?=
 =?utf-8?B?OWw2bWE2eitTNU9halY3bU1lSjRsbFJ0UGUvaFpZV1Qxb1AyRmQwN0xxK3Fr?=
 =?utf-8?B?aW52dFR5T1VtcjZqQ2NwTUNBcHVmZmtoZERENEcvNmlGYitOaThOQnB2aVc5?=
 =?utf-8?B?S0ZyZjlXMGxhK05jRTM5c0Q2WnVqS1BWNDBSM3M2QXN1YXltdHp1K0llQWw1?=
 =?utf-8?B?d3VCbmpHdEVKdGJaWEx0NFBVcXpZb2p3NzdRemFUckduUWhBRkExUEFhYWpt?=
 =?utf-8?B?UTNOMHBFay9lblliREJGZitXTGZJSllERDQ2SGdtdkNCRTNkblJhdU9YVzRW?=
 =?utf-8?B?Q0ZYUkNwTGFTbjdIN3FSdkZqSW5MZHdwV3lqWG9pZ2dZYm1FSmRsVEkyVEdy?=
 =?utf-8?B?dmJPL3Rocmc3VFhVRkw5bU1id01RR1FKWE1YWDMzNmdVKzd3QkthVm9IZFpV?=
 =?utf-8?B?Z253TisrYmU1aFRHVlJwTzFkcmJVdjUvVk9TcjNrWGg5V0ZqSVRwd3hwL1Q4?=
 =?utf-8?B?ZUN3cmF3dEw2cjBOcDZDM1ZTVXQ2TXlHUU02UThDU05rdE9MUmlDL0RZbEVQ?=
 =?utf-8?B?b2UvbERnWERPVVk1eUdNL3cyRmN1MGw3aFZaMVN2aVZWSUNGQ2dham54VW84?=
 =?utf-8?B?WlhsTW80clNvNERZSXBqaGNPclZxSzhUTm1acFBsa3M4aWRwNzNkQ0dFaFRJ?=
 =?utf-8?B?V0paTngwMWx3NEZZK3FmcmxxR3hLOTkzejlKa1hhcmJwaHhvOGdHd0Y5T2hy?=
 =?utf-8?B?UE9GdXg0K2ZLM05sbU5vRlZiRHRmTW01amg0d2NlZzVCZ2l5UzJBeGxYSnp5?=
 =?utf-8?B?WElxVVMwZklpV2ZmSG0zZVRDc2phYVlnRm90NUN1NUt0dTZIcFludjgzWjRy?=
 =?utf-8?B?LzRWUENqTDlsMVVHbVNSWXBvN2hrV2JXMi9uNVJyYUpnK0NXazRKVzhteHIw?=
 =?utf-8?B?N2hCbGxUM1FVeGNTbnl5TkFHb0J1R3FOTytld2JNZHEwY2hQK2ZkaThQa2VV?=
 =?utf-8?B?TnBsT2Znb2NFNjJrWGF6MjBHRnAyeUk3eFJraE1kVDFveFcrQ0FSbjRqcEVF?=
 =?utf-8?B?NWFnUWlmbnkzajBpSGhlZzRVN0hhTk5zdUNCTHUxNTc2UGptS0pNZlVqLzVz?=
 =?utf-8?B?TFBPMmw1eVVWOGlKbnlSMld4dVArUGw3ODI3eHhuajZmbzFuNUVrRWtsaVdn?=
 =?utf-8?B?SWVRMS91ZDZuS0tYY1o1T1Fwa2EvUWpJSS9QOU0vbTR3L3FXcUd6RmN0c0Q3?=
 =?utf-8?B?TVBHYzhHazVGMjFHZWNoemtjL0JQYmRzQ29zbllZb3Z3a1BUZUM5UHJja0xV?=
 =?utf-8?B?UjZBOUp6dG1Fc29BV1JVZnYza3BHYmdVSWNxeVlza0hlbFdiYkxBVmhtSDdp?=
 =?utf-8?B?bU14cUNyOHlHQXJVem05ZVZiV0dMcE55MUtFVi8vdkpvaENJbGtaNlYrd2pH?=
 =?utf-8?B?dVFIOWg1ZVJNSHBkQzFraWRiVEFjT055c0kvWU5EK0FmU0huVWxyUks0Smhw?=
 =?utf-8?B?ZXBxV1JjbFNDdytRaGZyTWx0akc3Y0FMaHpXTzRGeWxxbVBrTDVLdEpNNkg1?=
 =?utf-8?B?NXNsTnhzUjdENU1ZSXRPWm1qS29IeGw1WmxkbUtwdEF5UFVkbUVBZTNNbkI3?=
 =?utf-8?B?eWRGUzRDNU9JNDUyNnA0K0MrRUgyVzBzSVBUWS8vWThMNFBrSFNGUEhEOGpW?=
 =?utf-8?B?Zm8vMFlmeHRvYSt5UmcxMjRYMnZDVzJpYnMxZWxoK3RNZnBlaitEZEQ3cFE0?=
 =?utf-8?B?TkU3a2htVFlONVFjM0dPTDBNclg3RTNNVFVWeVp5SnNON08wSGVxeXBILzNn?=
 =?utf-8?B?RjBYZ0l6d0Q0dXNvaTI4MlRudGFJc3EzSVdXenBBRk1hWG5xR2hNa2Z5NmYy?=
 =?utf-8?B?N0hGNndzYUY2RXVydXFjdjNJLy9McFZJUDF5SjVSY2k3c3lrWFc5VVQ2ZG1k?=
 =?utf-8?B?N0YrWGFEZXNvWnh2MGdXZDEyTWc0RmxhS0JodWhnTkgvUHlSVTlEL3prazlR?=
 =?utf-8?B?QjBTRkhtYy8zRXFFaThkMU9pOWxmWEJGZjJVMGJCcWNlcnJJeUEvWnpyQnFW?=
 =?utf-8?B?MXNpMG1STExDM1V5ejhhanRCN05YV01mZ2NMUVAwbWtUSjhwTGIvZFF5eWlE?=
 =?utf-8?Q?ErqF0MQn7Ej+Z7Uc=3D?=
X-OriginatorOrg: citrix.com
X-MS-Exchange-CrossTenant-Network-Message-Id: 5cc44497-654a-4f4a-bd61-08de94ab879f
X-MS-Exchange-CrossTenant-AuthSource: CH8PR03MB8275.namprd03.prod.outlook.com
X-MS-Exchange-CrossTenant-AuthAs: Internal
X-MS-Exchange-CrossTenant-OriginalArrivalTime: 07 Apr 2026 13:42:37.0694
 (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: mS9z7FowM0+InyTfGJaOip/6RG4GRgJoXJ4uZVFnnKxgc/puxjTivC3uwVed+XaB/GcdeQEwQoJhYj72KYHy/8QWdFNZP7j9ju7BObXGIXM=
X-MS-Exchange-Transport-CrossTenantHeadersStamped: BY1PR03MB7216
X-purgate-ID: tlsNG-ebf023/1775569362-3273A51B-56F57A20/0/0
X-purgate-type: clean
X-purgate-size: 246

On 07/04/2026 1:49 pm, Teddy Astie wrote:
> I already started reviewing patches, but would like to
> be more active in that area.
>
> Signed-off-by: Teddy Astie <teddy.astie@vates.tech>

Acked-by: Andrew Cooper <andrew.cooper3@citrix.com>


From xen-devel-bounces@lists.xenproject.org Tue Apr 07 13:43:58 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 07 Apr 2026 13:43:58 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1275017.1560990 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wA6ih-0006Fq-P3; Tue, 07 Apr 2026 13:43:55 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1275017.1560990; Tue, 07 Apr 2026 13: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 1wA6ih-0006Fj-Kw; Tue, 07 Apr 2026 13:43:55 +0000
Received: by outflank-mailman (input) for mailman id 1275017;
 Tue, 07 Apr 2026 13:43:54 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <jbeulich@suse.com>) id 1wA6ig-0006Fb-6z
 for xen-devel@lists.xenproject.org; Tue, 07 Apr 2026 13:43:54 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wA6if-00CG6c-4b
 for xen-devel@lists.xenproject.org; Tue, 07 Apr 2026 15:43:53 +0200
Received: from [10.42.69.8] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <jbeulich@suse.com>)
 id 69d50a14-5cb7-0a2a0a5109dd-0a2a4508da10-42
 for <xen-devel@lists.xenproject.org>; Tue, 07 Apr 2026 15:43:53 +0200
Received: from [209.85.128.42] (helo=mail-wm1-f42.google.com)
 by tlsNG-c1860d.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.0)
 (envelope-from <jbeulich@suse.com>)
 id 69d50a18-fab6-0a2a45080019-d155802ad563-3
 for <xen-devel@lists.xenproject.org>; Tue, 07 Apr 2026 15:43:52 +0200
Received: by mail-wm1-f42.google.com with SMTP id
 5b1f17b1804b1-488ba840146so11599475e9.1
 for <xen-devel@lists.xenproject.org>; Tue, 07 Apr 2026 06:43:52 -0700 (PDT)
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-43d1e2a6f08sm53240039f8f.6.2026.04.07.06.43.50
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Tue, 07 Apr 2026 06:43:51 -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=google header.d=suse.com header.i="@suse.com" header.h="Content-Transfer-Encoding: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=1775569432; x=1776174232; darn=lists.xenproject.org;
        h=content-transfer-encoding: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;
        bh=dn+QGR8q2OQit7mFrGiIYJbd7Ql1aeYq31bZ0tF9Pxk=;
        b=G95nATMdN7d8G+cF8d1AFKylxRBmhLjfW/hZSiXbSmHNR3vL5ARhOcWxWzb00xFa2S
         h18TS9bMN5M1wUN1ngLcnfkDaUbOv+qTNKjU/fU0zz/w9GP0/5W2Xbmr6qW/A4TH9+Sk
         B28u5UWn2UEBgB1vFrQG8h3l/tMrIeecDgbHuCMhtXnWs12CkaGQOJS3uFWwqvzJLV/Y
         gl3+9mtR+oBJvjPnkvGdqE+l7l0/1OuJUWfLAQvA++OM8CvQNP4kVNzSqFST+m9M2aGZ
         xpmcOfDz+3QvgH2i02gtQYAbO9j2tnEH4Y5n6HtjNqzCQVFDg6srQfuE3k4Qi8M7j8bj
         W4ew==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20251104; t=1775569432; x=1776174232;
        h=content-transfer-encoding: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;
        bh=dn+QGR8q2OQit7mFrGiIYJbd7Ql1aeYq31bZ0tF9Pxk=;
        b=tQboO0K2XsVgJBETxGpacJhSY8Wn7qA/NwB4Lr9F3ap7T3SLYCcE4DH/m2ZPOhHzYh
         iLgUke7A8KV8N2E4OawUErDfRFbhwFy8uZL7RsBP4vAdf8rE0l4X57S18hbKUb9RehW7
         YTmy9cJvwNHXYCvqxOLXSq5cCV3PIAcB+b0MGk5kNVl5dZrmBqaEuBjGuoBN9SAwnPUS
         GR585vl61q7I505z7hruyOAp29K2e8p9U4KHw0A6AeZVkdWWD182gejn5aV8Y4MC6kEe
         +98l4e5EF6vfXdE4THxRjRHku0+nyMAAR2AZ8TukVS0l8MHBhGM82ryHYPoqDYifFPR+
         MFfA==
X-Forwarded-Encrypted: i=1; AJvYcCVJhSk8rP3mxQkEGQIlvogGnWn9vcu94E9rDvnk1BTE5e4TrOWe4jqCmt65UYFi2THNdwCXlLYmrqQ=@lists.xenproject.org
X-Gm-Message-State: AOJu0YyfLy2MuDbn3OJXdBPFezEU50jwii62gCNVGFgLAgO+t2ILq5tV
	sGhP9zDEfA20w1bDU/+nJlRLmhSvu+PmzW82pnoEjpcJcLw7OTuIEifJakD/p1mqAA==
X-Gm-Gg: AeBDieuMex6AIjgXkZlI7aJGD7dpJkWVvHzohebqC7+wGAUEF4VcSIynvy0cRLeiS4h
	K2EBrdBEoDr4bHmG09UTGtHSChzyhPGqgBagOvXitu2Y5myDe5z+KoCFhQb223r89L25TYt72CZ
	AyZw1JsYoTrZ0wZiJu3oOHbUeM1ImlRjcKlxsrppDHihd+Z8ECuEyDYF1j01EaM4x+2Ky7yb1xd
	lIt/KBuCit5aiPKuBndaWF+BCbt55KV1RB8jedqfXKdfDn8Qus1n6me1t5FhHP5RKTZMFhq3wXn
	RIIlJZ1tkM9VkLM6HDxSbAPOxC1AdA9AJnVpZSek53NDTveje6I1+pOnd6XjSrCQ9Q7KOPsuZzd
	kjW35biick822rARWw05erXG6ESAuM5oTqaW9UZiTQZV6Zg5vd5BeXobeo/kL9hl8GkkvBHWHiC
	xem8sIPBvYDeShJCHTRRCruzGivUWGPWNIRfZ8Lxj/T8kQTUwl2KcxthkKJNtRx3xeRqvOAEXJi
	GFitdoISuvrNdbpQFmVHIR5MA==
X-Received: by 2002:a05:600c:a311:b0:488:bfc3:efc with SMTP id 5b1f17b1804b1-488bfc316c6mr26320535e9.0.1775569431824;
        Tue, 07 Apr 2026 06:43:51 -0700 (PDT)
Message-ID: <24afc38b-9790-44f1-8a8f-b4e4b8bd6fc8@suse.com>
Date: Tue, 7 Apr 2026 15:43:55 +0200
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH v1 04/27] xen/riscv: rework G-stage mode handling
To: Oleksii Kurochko <oleksii.kurochko@gmail.com>
Cc: Romain Caritey <Romain.Caritey@microchip.com>,
 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.pau@citrix.com>,
 Stefano Stabellini <sstabellini@kernel.org>, xen-devel@lists.xenproject.org
References: <cover.1773157782.git.oleksii.kurochko@gmail.com>
 <2c8f1ea25b8d3ec78b00510fbe604a87e759e194.1773157782.git.oleksii.kurochko@gmail.com>
 <fb4a8f75-d3f8-4e8c-9b45-1194c78659f5@suse.com>
 <30c95ac5-bc1e-4cbd-9a8a-bb1c5ec53922@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: <30c95ac5-bc1e-4cbd-9a8a-bb1c5ec53922@gmail.com>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 7bit
X-purgate-ID: tlsNG-c1860d/1775569432-F6F4A497-28181E2B/0/0
X-purgate-type: clean
X-purgate-size: 2740

On 07.04.2026 12:47, Oleksii Kurochko wrote:
> On 4/1/26 3:19 PM, Jan Beulich wrote:
>> On 10.03.2026 18:08, Oleksii Kurochko wrote:
>>> --- a/xen/arch/riscv/p2m.c
>>> +++ b/xen/arch/riscv/p2m.c
>>> @@ -45,18 +45,32 @@ struct p2m_pte_ctx {
>>>       unsigned int level;          /* Paging level at which the PTE resides. */
>>>   };
>>>   
>>> -static struct gstage_mode_desc __ro_after_init max_gstage_mode = {
>>> -    .mode = HGATP_MODE_OFF,
>>> -    .paging_levels = 0,
>>> -    .name = "Bare",
>>> -};
>>> -
>>>   /*
>>>    * Set to the maximum configured support for IPA bits, so the number of IPA bits can be
>>>    * restricted by external entity (e.g. IOMMU).
>>>    */
>>>   unsigned int __read_mostly p2m_ipa_bits = PADDR_BITS;
>>>   
>>> +static const struct gstage_mode_desc modes[] = {
>>
>> As a function scope static this was a fine identifier. Please consider whether
>> with the wider scope gstage_modes[] might not be better.
>>
>>> +    /*
>>> +     * Based on the RISC-V spec:
>>> +     *   Bare mode is always supported, regardless of SXLEN.
>>> +     *   When SXLEN=32, the only other valid setting for MODE is Sv32.
>>> +     *   When SXLEN=64, three paged virtual-memory schemes are defined:
>>> +     *   Sv39, Sv48, and Sv57.
>>> +     */
>>> +    [0] = { HGATP_MODE_OFF,    0, "none" },
>>> +#ifdef CONFIG_RISCV_32
>>> +    [1] = { HGATP_MODE_SV32X4, 1, "sv32" }
>>> +#else
>>> +    [2] = { HGATP_MODE_SV39X4, 2, "sv39" },
>>> +    [3] = { HGATP_MODE_SV48X4, 3, "sv48" },
>>> +    [4] = { HGATP_MODE_SV57X4, 4, "sv57" },
>>> +#endif
>>> +};
>>
>> The dedicated initializer form isn't adding any value here (whereas it slightly
>> hampers readability). You really don't want the array to be sparsely populated,
>> so perhaps better to leave as it was before?
> 
> I need modes[] to be outside of gstage_mode_detect() as it then could be 
> re-used.

Sure, and I didn't say "where it was before". I said "as it was before", i.e.
without dedicated initializers.

Jan

> For example, if expected G-stage mode should be passed by DTS 
> property then in DTS property we'll have something like:
> 	chosen {
>              ...
>              DOMU1 {
>                  mmu-type="riscv,sv48";
>                  ...
>              }
>              ...
>          }
> 
> And I will need to have another functions something like:
>    static unsigned int find_gstage_mode(const char *mmu_type) {...}
> which will re-use modes[] to find a correspondent mode and return an 
> index (or return just correspondent mode) for that mode to then re-use 
> it to initialize p2m->mode:
>      p2m->mode = &modes[find_gstage_mode(mmu_type)];
> 
> ~ Oleksii



From xen-devel-bounces@lists.xenproject.org Tue Apr 07 13:48:13 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 07 Apr 2026 13:48:13 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1275026.1560998 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wA6mo-0006wq-7A; Tue, 07 Apr 2026 13:48:10 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1275026.1560998; Tue, 07 Apr 2026 13:48: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 1wA6mo-0006wj-49; Tue, 07 Apr 2026 13:48:10 +0000
Received: by outflank-mailman (input) for mailman id 1275026;
 Tue, 07 Apr 2026 13:48:08 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <olekstysh@gmail.com>) id 1wA6mm-0006wd-LL
 for xen-devel@lists.xenproject.org; Tue, 07 Apr 2026 13:48:08 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wA6mm-002iRk-0l
 for xen-devel@lists.xenproject.org; Tue, 07 Apr 2026 15:48:08 +0200
Received: from [10.42.69.11] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <olekstysh@gmail.com>)
 id 69d50af4-e002-0a2a0a5209dd-0a2a450bae48-42
 for <xen-devel@lists.xenproject.org>; Tue, 07 Apr 2026 15:48:07 +0200
Received: from [209.85.167.42] (helo=mail-lf1-f42.google.com)
 by tlsNG-42698a.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.0)
 (envelope-from <olekstysh@gmail.com>)
 id 69d50b17-bca8-0a2a450b0019-d155a72aa513-3
 for <xen-devel@lists.xenproject.org>; Tue, 07 Apr 2026 15:48:07 +0200
Received: by mail-lf1-f42.google.com with SMTP id
 2adb3069b0e04-5a2bd236adbso5816466e87.1
 for <xen-devel@lists.xenproject.org>; Tue, 07 Apr 2026 06:48:07 -0700 (PDT)
Received: from [192.168.0.112] ([91.123.151.140])
 by smtp.gmail.com with ESMTPSA id
 2adb3069b0e04-5a2c6c9518asm4201506e87.4.2026.04.07.06.48.05
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Tue, 07 Apr 2026 06:48: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=20251104 header.d=gmail.com header.i="@gmail.com" header.h="Content-Transfer-Encoding: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=20251104; t=1775569687; x=1776174487; darn=lists.xenproject.org;
        h=content-transfer-encoding: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;
        bh=2V1OT6EvEKlAkZcbsu51l10ucovUMTueOlbyR/zAAzo=;
        b=pw6F/3QWfqgf9voWax9CGmyvRxIBc3SLwrYH/REP63MozVucyLJ66PHqiqrIz62zy1
         N7PirMFwNnMecefPExLtBWHogwjqwSnGtcWz8HjFFjbrb3pk6v3DR4QTA98gcZhuNz1y
         fBKKTNPVh90dcMwMUCnMp3Flb8i5itqI0YgrUDuUBVd43us+0kWzBSMhXxR8rqw/j6xY
         9+tf9HTK0a6vwJgTwvlnH/slrMgS5HzTOrUL61imDO/TzJbqUzA6e+Haj+ONx4rNTAiM
         GwGktG36YDSqzFVAJ8IF36uZv1PZO4K8h2NymOSDK1x15S+HvvkCdPDnIOjv0XyCtDpZ
         bvtg==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20251104; t=1775569687; x=1776174487;
        h=content-transfer-encoding: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;
        bh=2V1OT6EvEKlAkZcbsu51l10ucovUMTueOlbyR/zAAzo=;
        b=k1rnJWeIRT+tLrHtLa95BmV+5ln//iypve2Gf7YFef1sEOK7soNEBxmL/UsrjZB7eh
         QTtqOORXSyrbKtQwwvucgmlTaD5GzDoNYK2XOZ7W0TwmyQS0WQYnXh2r1S7ieOaBPSso
         VeApSsHYygljB2kpR7Ac/F5JtBzl4MVVQOjuYgBv6Jx4fgVM783ps7WSLa8+7ERaLDkF
         BR2toXvpssZTr9FoMmFjHi8JueI4p+eNEYplmcTwyPu83k2yil/+DoihtYZg7tLqsRrs
         Dx03oI4FpQ8JJd4lPUSUg0pFcROjrfcnve34gm8BC8XJ6gvmPAx6ApSSn5tPWLtsrPjj
         1J0A==
X-Forwarded-Encrypted: i=1; AJvYcCUKAt8OUaa1dgx5vfg1tSmsKLiLeK0CD23kZALSWVJOJQU4mpvO2T3dmRD+YHQmVN8Arczqt+vvwog=@lists.xenproject.org
X-Gm-Message-State: AOJu0YwYj2eyrFqYt7+CsqZeObLRKn5eTtIVe3ITH34dU0Sij3xOuCet
	2p2GVbhKXB35KvxjErSKuiS9tMn86kIMppiPiQpDqKPDMfXp/VujN24d
X-Gm-Gg: AeBDieuARk3n7yIWRpI6EZgQ8PFt7nlAyozDG7Ao4F/qMtnPab2Zr8dBqeRgTo1oH05
	nTv4rRrVo+y6dG4u25QBx8+rhIs3iCCXqTvFcLDlYqjK+2bJPmKxMxgItIiPEoH4RiRWFJ0ZU8y
	qlgulSn1CbuWOJzOV4JLOhx3RqfnspJJw0LleYNsrSxvMBSHVX8//IPQJdeNFOtDON7sXV2+njc
	EN/+yloTRBrI/JpqDdipOjGf27sreloh+dVvLvhJc3njm+GSEfIV9jCOvi0QRSG42o2+jOHWQtP
	RW6SlRO6bbsK7oDsCF5B1xJaqeUsH1jkBlaUpEaSuHswP/9rG8VT+fC7WTMMTAUG87n+KeY3HCY
	LyrSR8CUzICLElunYjxK7qnirKJW+ugmMEnMEQ9YP+OE0pgErkO2Lp1tPxzzcJkc6Z890k0id2+
	NWQ/xgZKm7mA6OLGU4DPEyfuRbPhA=
X-Received: by 2002:a05:6512:3ca2:b0:5a2:c66a:d6d1 with SMTP id 2adb3069b0e04-5a32f6c6089mr4811428e87.6.1775569686630;
        Tue, 07 Apr 2026 06:48:06 -0700 (PDT)
Message-ID: <93e606cd-a30e-4367-b4e0-05812512ac03@gmail.com>
Date: Tue, 7 Apr 2026 16:48:04 +0300
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH 2/2] iommu/arm: ipmmu-vmsa: Fix variable shadowing
To: Michal Orzel <michal.orzel@amd.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>
References: <20260407103434.90838-1-michal.orzel@amd.com>
 <20260407103434.90838-3-michal.orzel@amd.com>
Content-Language: en-US
From: Oleksandr Tyshchenko <olekstysh@gmail.com>
In-Reply-To: <20260407103434.90838-3-michal.orzel@amd.com>
Content-Type: text/plain; charset=UTF-8; format=flowed
Content-Transfer-Encoding: 7bit
X-purgate-ID: tlsNG-42698a/1775569687-EF14D2A1-2564C7DF/0/0
X-purgate-type: clean
X-purgate-size: 1944



On 4/7/26 13:34, Michal Orzel wrote:

Hello Michal

> Rename 'pdev' to 'pci_dev' in the dev_print_pci() macro to avoid

NIT: The macro is named dev_print, not dev_print_pci.

> shadowing local 'pdev' variables at call sites.
> 
> Remove the unused 'ret' declaration from ipmmu_assign_device() where
> the function-scope 'ret' is sufficient.
> 
> This fixes MISRA C R5.3.
> 
> Signed-off-by: Michal Orzel <michal.orzel@amd.com>

Reviewed-by: Oleksandr Tyshchenko <oleksandr_tyshchenko@epam.com>

> ---
>   xen/drivers/passthrough/arm/ipmmu-vmsa.c | 6 ++----
>   1 file changed, 2 insertions(+), 4 deletions(-)
> 
> diff --git a/xen/drivers/passthrough/arm/ipmmu-vmsa.c b/xen/drivers/passthrough/arm/ipmmu-vmsa.c
> index ea9fa9ddf3ce..fa9ab9cb1330 100644
> --- a/xen/drivers/passthrough/arm/ipmmu-vmsa.c
> +++ b/xen/drivers/passthrough/arm/ipmmu-vmsa.c
> @@ -65,8 +65,8 @@
>           printk(lvl "ipmmu: %s: " fmt, dev_name((dev)), ## __VA_ARGS__);  \
>       else                                                                \
>       {                                                                   \
> -        struct pci_dev *pdev = dev_to_pci((dev));                       \
> -        printk(lvl "ipmmu: %pp: " fmt, &pdev->sbdf, ## __VA_ARGS__);     \
> +        struct pci_dev *pci_dev = dev_to_pci((dev));                       \
> +        printk(lvl "ipmmu: %pp: " fmt, &pci_dev->sbdf, ## __VA_ARGS__);     \
>       }                                                                   \
>   })
>   #endif
> @@ -1171,8 +1171,6 @@ static int ipmmu_assign_device(struct domain *d, u8 devfn, struct device *dev,
>           /* dom_io is used as a sentinel for quarantined devices */
>           if ( d == dom_io )
>           {
> -            int ret;
> -
>               /*
>                * Try to de-assign: do not return error if it was already
>                * de-assigned.



From xen-devel-bounces@lists.xenproject.org Tue Apr 07 13:52:58 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 07 Apr 2026 13:52:58 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1275033.1561006 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wA6rG-0008Rt-OP; Tue, 07 Apr 2026 13:52:46 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1275033.1561006; Tue, 07 Apr 2026 13:52: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 1wA6rG-0008Rm-LR; Tue, 07 Apr 2026 13:52:46 +0000
Received: by outflank-mailman (input) for mailman id 1275033;
 Tue, 07 Apr 2026 13:52:44 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92) id 1wA6rE-0008Rg-Mz
 for xen-devel@lists.xenproject.org; Tue, 07 Apr 2026 13:52:44 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wA6rD-002jhN-Va
 for xen-devel@lists.xenproject.org; Tue, 07 Apr 2026 15:52:43 +0200
Received: from [10.42.69.4] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <jbeulich@suse.com>)
 id 69d50c19-5cb7-0a2a0a5109dd-0a2a4504b712-32
 for <xen-devel@lists.xenproject.org>; Tue, 07 Apr 2026 15:52:43 +0200
Received: from [209.85.128.41] (helo=mail-wm1-f41.google.com)
 by tlsNG-ebf023.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.0)
 (envelope-from <jbeulich@suse.com>)
 id 69d50c2b-bb33-0a2a45040019-d1558029c893-3
 for <xen-devel@lists.xenproject.org>; Tue, 07 Apr 2026 15:52:43 +0200
Received: by mail-wm1-f41.google.com with SMTP id
 5b1f17b1804b1-48897fd88ebso37288375e9.2
 for <xen-devel@lists.xenproject.org>; Tue, 07 Apr 2026 06:52:43 -0700 (PDT)
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-4887e80a616sm1025390435e9.2.2026.04.07.06.52.42
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Tue, 07 Apr 2026 06:52:42 -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=google header.d=suse.com header.i="@suse.com" header.h="Content-Transfer-Encoding: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=1775569963; x=1776174763; darn=lists.xenproject.org;
        h=content-transfer-encoding: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;
        bh=MPta1GhncLW1FHtaZZuAkEG+3wgrwKTTvWRMJfaAmuw=;
        b=bknB2D4YjpRVNRTrm1elUQKjBHEjIuqBdzepCf15ZQ7sUmj/hxlQ6U72a4HG/r9ZQO
         91ZSOH7KL0+Anundtye5O5XUrRTp23uc/hjDUcpJjOcbnpMat9y+R2FbSBk1huSr0qJF
         CNJGEVrFotILjFUYGOAcy5MMI4PCqMNx+kK/xUffPgy2gt7/iEvqHncFJjDDv1ytn70o
         JcoTREyntcEBul1KwrGk/1BQBlpOHaORc5R04Iupee2EUvHetWGc6O7xQmN+r7h+DlFk
         ChD9yj/Rwkx68tPEm/SIHc8tukbdYEsWAOPslRowi4b2pGsDyLrCWaVUofBhz+y0qzTb
         4fsg==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20251104; t=1775569963; x=1776174763;
        h=content-transfer-encoding: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;
        bh=MPta1GhncLW1FHtaZZuAkEG+3wgrwKTTvWRMJfaAmuw=;
        b=Son4WZBqUBWNKc0KrgQ/0VBBh+tL+q2kDGfh+HunqBbYP5OxhyedbSWVsznA23g53u
         UGBOe5Bolq4bRCMIQd6eRYf4YjuNhgSw8iK8nSwVGGrnlOmws+lnpc154xq9DVoy+NO7
         et7RCz3uK4JSyFs7mhKMAt4cwQETcc//XTg03huSS/RY+4tbPQmROXyVeIAVNHAni4Wc
         j2LAU22k/L2NS3ztryZWeAuPK8ZEMnD7e8Z50hksCaiumSiYrOKZWy/MYSPhpK1BAhvD
         K8zrk33ypn1NQl7DnNxUgowL5o+WqMX5LH1+X4ebTg3/6YAKAHkDnpvZwRGncEtcnhTs
         TQEg==
X-Forwarded-Encrypted: i=1; AJvYcCVDrseXYm4qXSHGrxxrIMMJ8aV2xZGCVEQTdkmDd913aXfNTjE2r2gBqeVDDM7STCB32QGqDXuIhnk=@lists.xenproject.org
X-Gm-Message-State: AOJu0Yw8sizY2hQZWt3jKBqGH3GzPqcIHOBLmzs87yEnTeeHQUOXbE6N
	5i30sNvZxxpoEUQ8+6iAlNi2BcxHlJtruSOWrCnXvOtk7Q2993C3qQV9O0m2jVlICg==
X-Gm-Gg: AeBDieuqIXvmwuoDZdv0P6lilmy7Qwg/Ax9xOYJDH+CaKTGjPinCMrqaoYklhhLgb4B
	V092dCjrv8PwSCzxdOXnfj1emNxDQay4l+M9GNKAmBH31Mox4izhCHWNnng9YJKECKRrd0WNDq6
	+3vqqU+U29aljJEcCRx+ZYgfe43tZmerErM7VY6UZEtd6byDXxn9PQJ8eAtcWpjM0di5KS9tK+v
	DLdhBQts9X7HtmLxNMNuJGxbopVxHBsShnpnWVQN26/PiAfxCjix+2KC/XcjenpazJ5TNo5oTBC
	+qiybIM1Upe5Px9rG/OQRoQ+hp0QMIE/7u1NHBSkk9FNexed0DpXTmTXzyjsFfBNlzcMANiPSv5
	UW7oPgm408YuwncIJlx3hmJxsuU4YiPaP4VPISPrkw+bWpoeYXaRax60a+U1ws4oRhQTbJSgbEA
	+AiNHRp2sMajpLRfXSYDBj72oQAODZpFn1QOI2JeMEjHviFaTMw8zLkBSWz5HKvnnliPPDvHDg1
	7U6Z81cT6Z3yNJ2wlINiJKD5A==
X-Received: by 2002:a05:600c:c8d:b0:486:ffa3:594 with SMTP id 5b1f17b1804b1-488997a6883mr231861065e9.23.1775569962939;
        Tue, 07 Apr 2026 06:52:42 -0700 (PDT)
Message-ID: <6e95af5c-0f04-45f2-8ab2-cff6e6fb9112@suse.com>
Date: Tue, 7 Apr 2026 15:52:46 +0200
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH v1 26/27] xen/riscv: provide init_vuart()
To: Oleksii Kurochko <oleksii.kurochko@gmail.com>
Cc: Romain Caritey <Romain.Caritey@microchip.com>,
 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.pau@citrix.com>,
 Stefano Stabellini <sstabellini@kernel.org>, xen-devel@lists.xenproject.org
References: <cover.1773157782.git.oleksii.kurochko@gmail.com>
 <71483b96126964a7cfcb24253cb04379a9f662c1.1773157782.git.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: <71483b96126964a7cfcb24253cb04379a9f662c1.1773157782.git.oleksii.kurochko@gmail.com>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 7bit
X-purgate-ID: tlsNG-ebf023/1775569963-3052B51B-CEF7893F/10/73395122804
X-purgate-type: spam
X-purgate-size: 629

On 10.03.2026 18:08, Oleksii Kurochko wrote:
> For debug purpose is enough to have only print messages from guest what is
> now implemented in vsbi_legacy_ecall_handler().
> 
> For full guesst console support it will better to have something similar to
> [1], thereby there is nothing specific should be done, at least, for now
> and init_vuart() is provided to make dom0less code buildable.
> 
> [1] https://lore.kernel.org/xen-devel/alpine.DEB.2.22.394.2602041533440.3175371@ubuntu-linux-20-04-desktop/
> 
> Signed-off-by: Oleksii Kurochko <oleksii.kurochko@gmail.com>

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



From xen-devel-bounces@lists.xenproject.org Tue Apr 07 14:10:49 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 07 Apr 2026 14:10:49 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1275044.1561017 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wA78d-000357-7P; Tue, 07 Apr 2026 14:10:43 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1275044.1561017; Tue, 07 Apr 2026 14:10: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 1wA78d-000350-3o; Tue, 07 Apr 2026 14:10:43 +0000
Received: by outflank-mailman (input) for mailman id 1275044;
 Tue, 07 Apr 2026 14:10:42 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <bounce-md_30504962.69d5105d.v1-23bd0bc15e884cac9101909b7eb64678@bounce.vates.tech>)
 id 1wA78b-00034b-R9
 for xen-devel@lists.xenproject.org; Tue, 07 Apr 2026 14:10:42 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wA78Z-00229E-JA
 for xen-devel@lists.xenproject.org; Tue, 07 Apr 2026 16:10:39 +0200
Received: from [10.42.69.2] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1) (envelope-from
 <bounce-md_30504962.69d5105d.v1-23bd0bc15e884cac9101909b7eb64678@bounce.vates.tech>)
 id 69d5105a-5cb7-0a2a0a5109dd-0a2a4502cd08-30
 for <xen-devel@lists.xenproject.org>; Tue, 07 Apr 2026 16:10:39 +0200
Received: from [198.2.136.16] (helo=mail136-16.atl41.mandrillapp.com)
 by tlsNG-720697.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.0)
 (envelope-from
 <bounce-md_30504962.69d5105d.v1-23bd0bc15e884cac9101909b7eb64678@bounce.vates.tech>)
 id 69d5105e-42fa-0a2a45020019-c6028810fdb6-3
 for <xen-devel@lists.xenproject.org>; Tue, 07 Apr 2026 16:10:39 +0200
Received: from pmta11.mandrill.prod.atl01.rsglab.com (localhost [127.0.0.1])
 by mail136-16.atl41.mandrillapp.com (Mailchimp) with ESMTP id
 4fqp4t04sXz8XRqMW
 for <xen-devel@lists.xenproject.org>; Tue,  7 Apr 2026 14:10:38 +0000 (GMT)
Received: from [37.26.189.201] by mandrillapp.com id
 23bd0bc15e884cac9101909b7eb64678; Tue, 07 Apr 2026 14:10: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=mte1 header.d=mandrillapp.com header.i="@mandrillapp.com" header.h="From:Subject:To:Cc:Message-Id:Feedback-ID:Date:MIME-Version:Content-Type:Content-Transfer-Encoding"; dkim=pass header.s=mte1 header.d=vates.tech header.i="teddy.astie@vates.tech" header.h="From:Subject:To:Cc:Message-Id:Feedback-ID:Date:MIME-Version:Content-Type:Content-Transfer-Encoding"
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=mandrillapp.com;
	s=mte1; t=1775571038; x=1775841038;
	bh=ijHox48zfwhifLBy2nWwxBWaZv3Ku8mFkgnfo6+c9Ik=;
	h=From:Subject:To:Cc:Message-Id:Feedback-ID:Date:MIME-Version:
	 Content-Type:Content-Transfer-Encoding:CC:Date:Subject:From;
	b=TGrejU11l/v1fEBn9oYMugyxH4kjOsVplYjVVfJYaIKyhLblFzGuHd43P1yuN4mI1
	 3xJxr2NDlSnwWjY9n3sDR8BThCiRNJL4eMO8fu57xjiT+aJwJbPSmlraHCnwQSSZAt
	 6ta/KMsXawGTJWm+wf3LqLXYtVWXWmISOmII0dbHz0d2U7TBbDgHafysMUJgCrlR0d
	 +7CWwsWY+HHipblMuxIGLqSAQ2sZPy3nvdr2+ttbHDn+IN7LM9hiQyTauVFRs1e1KI
	 0lsDxBEXnp4xDDMQrWNk1wMudIsRLJzyY223+gs9NllU6Xg0975oNHH4qOZQ5VZqRU
	 4ayeVyhH4MsPQ==
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=vates.tech; s=mte1;
	t=1775571038; x=1775831538; i=teddy.astie@vates.tech;
	bh=ijHox48zfwhifLBy2nWwxBWaZv3Ku8mFkgnfo6+c9Ik=;
	h=From:Subject:To:Cc:Message-Id:Feedback-ID:Date:MIME-Version:
	 Content-Type:Content-Transfer-Encoding:CC:Date:Subject:From;
	b=U7TcAtP7ezIpKZRHjVWg8JcfNWodRmbmFKhoa8l+NqGkMc73chIB666TZn/RJO7gZ
	 0RxUARzotAKFh2JT0NYXFZBLSqFspGmfNOUK6Pjcnri2AK7V21EF4gXhQd4GmWjUpM
	 9nvqIUXhjGc4ywvGIHVpEPx62J9oNwWljlrNuY06Wx6xFoUhj8RFPLwI/2UZQ8N7gn
	 7lsw+l59Tb6H1no5NEOhx0g1Alx/poLaOmNE+yHyKdot83w7SSszO0lhk4X5uRl2pV
	 5PPXre25vpE6e1g9O4yDqj/g96yGVjtoqbVdkRjOHdeFpQrkPUs4jZ11c4T2GzKHKQ
	 iHlc/0ZG/4NCA==
From: "Teddy Astie" <teddy.astie@vates.tech>
Subject: =?utf-8?Q?[PATCH=20v10]=20xenpm:=20Add=20get-core-temp=20subcommand?=
X-Mailer: git-send-email 2.52.0
X-Bm-Disclaimer: Yes
X-Bm-Milter-Handled: 4ffbd6c1-ee69-4e1b-aabd-f977039bd3e2
X-Bm-Transport-Timestamp: 1775571036889
To: xen-devel@lists.xenproject.org
Cc: "Teddy Astie" <teddy.astie@vates.tech>, "Oleksii Kurochko" <oleksii.kurochko@gmail.com>, "Community Manager" <community.manager@xenproject.org>, "Anthony PERARD" <anthony.perard@vates.tech>
Message-Id: <22bcde2914c0303b2c594485542af19d2952e782.1775570823.git.teddy.astie@vates.tech>
X-Native-Encoded: 1
X-Report-Abuse: =?UTF-8?Q?Please=20forward=20a=20copy=20of=20this=20message,=20including=20all=20headers,=20to=20abuse@mandrill.com.=20You=20can=20also=20report=20abuse=20here:=20https://mandrillapp.com/contact/abuse=3Fid=3D30504962.23bd0bc15e884cac9101909b7eb64678?=
X-Mandrill-User: md_30504962
Feedback-ID: 30504962:30504962.20260407:md
Date: Tue, 07 Apr 2026 14:10:37 +0000
MIME-Version: 1.0
Content-Type: text/plain; charset=utf-8
Content-Transfer-Encoding: quoted-printable
X-purgate-ID: tlsNG-720697/1775571039-46F21CD1-A94C944A/0/0
X-purgate-type: clean
X-purgate-size: 6994

get-core-temp allows querying the per-core CPU temperature and
per-package one on processors that supports Digital Temperature Sensors
(most Intel processors; as usual Dom0 drivers cannot work due to
misalignment between Dom0 vCPU and pCPUs).

Signed-off-by: Teddy Astie <teddy.astie@vates.tech>
---
v4: https://lore.kernel.org/xen-devel/cover.1766158766.git.teddy.astie@vate=
s.tech/
v5: Removed trailing whitespace.
v6: Report errors through errno and use strerror() to display them
v7:
 - Rename get-intel-temp with get-dts-temp
 - handle properly errno
 - make process return a error code if no data
v8:
 - update Changelog
 - improve error handling
 - rename core-dts-temp with get-core-temp
v9:
 - exit with EXIT_{SUCCESS,FAILURE} instead of errno
v10:
 - make error handling more uniform
 - removed "No data" message
 - stop querying package temperature on failure

 CHANGELOG.md       |   2 +
 tools/misc/xenpm.c | 121 ++++++++++++++++++++++++++++++++++++++++++++-
 2 files changed, 122 insertions(+), 1 deletion(-)

diff --git a/CHANGELOG.md b/CHANGELOG.md
index 166df43c63..c8cb125fae 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -16,6 +16,8 @@ The format is based on [Keep a Changelog](https://keepach=
angelog.com/en/1.0.0/)
      mitigate (by rate-limiting) the system wide impact of an HVM guest
      misusing atomic instructions.
    - Support for CPIO microcode in discrete multiboot modules.
+   - Introduce get-core-temp to xenpm to query CPU temperatures on Intel
+     platforms.
 
  - On Arm:
    - Support for guest suspend and resume to/from RAM via vPSCI.
diff --git a/tools/misc/xenpm.c b/tools/misc/xenpm.c
index e4902d2e82..3371bb5be7 100644
--- a/tools/misc/xenpm.c
+++ b/tools/misc/xenpm.c
@@ -32,11 +32,14 @@
 
 #include <xen-tools/common-macros.h>
 
+#include <xen/asm/msr-index.h>
+
 #define MAX_PKG_RESIDENCIES 12
 #define MAX_CORE_RESIDENCIES 8
 
 static xc_interface *xc_handle;
 static unsigned int max_cpu_nr;
+static xc_physinfo_t physinfo;
 
 /* help message */
 void show_help(void)
@@ -93,6 +96,7 @@ void show_help(void)
             "                                           units default to \=
"us\" if unspecified.\n"
             "                                           truncates un-repre=
sentable values.\n"
             "                                           0 lets the hardwar=
e decide.\n"
+            " get-core-temp          [cpuid]      get CPU temperature for =
<cpuid> or all (Intel only)\n"
             " start [seconds]                     start collect Cx/Px stat=
istics,\n"
             "                                     output after CTRL-C or S=
IGINT or several seconds.\n"
             " enable-turbo-mode     [cpuid]       enable Turbo Mode for pr=
ocessors that support it.\n"
@@ -1354,6 +1358,121 @@ void enable_turbo_mode(int argc, char *argv[])
                 errno, strerror(errno));
 }
 
+static int fetch_dts_temp(xc_interface *xch, uint32_t cpu, bool package, i=
nt *temp)
+{
+    xc_resource_entry_t entries[] =3D {
+        { .idx =3D package ? MSR_PACKAGE_THERM_STATUS : MSR_IA32_THERM_STA=
TUS },
+        { .idx =3D MSR_TEMPERATURE_TARGET },
+    };
+    struct xc_resource_op ops =3D {
+        .cpu =3D cpu,
+        .entries =3D entries,
+        .nr_entries =3D ARRAY_SIZE(entries),
+    };
+    int tjmax;
+
+    int ret =3D xc_resource_op(xch, 1, &ops);
+
+    switch ( ret )
+    {
+    case 0:
+        /* This CPU isn't online or can't query this MSR */
+        errno =3D ENODATA;
+        return -1;
+
+    case 1:
+    {
+        /*
+         * The CPU doesn't support MSR_TEMPERATURE_TARGET, we assume it's =
100
+         * which is correct aside a few selected Atom CPUs. Check Linux
+         * kernel's coretemp.c for more information.
+         */
+        static bool has_reported_once =3D false;
+
+        if ( !has_reported_once )
+        {
+            fprintf(stderr, "MSR_TEMPERATURE_TARGET is not supported, assu=
me "
+                            "tjmax =3D 100, readings may be incorrect.\n")=
;
+            has_reported_once =3D true;
+        }
+
+        tjmax =3D 100;
+        break;
+    }
+
+    case 2:
+        tjmax =3D (entries[1].val >> 16) & 0xff;
+        break;
+
+    default:
+        if ( ret > 0 )
+        {
+            fprintf(stderr, "Got unexpected xc_resource_op return value: %=
d", ret);
+            errno =3D EINVAL;
+        }
+        return -1;
+    }
+
+    *temp =3D tjmax - ((entries[0].val >> 16) & 0xff);
+    return 0;
+}
+
+static void get_core_temp(int argc, char *argv[])
+{
+    int temp =3D -1, cpu =3D -1;
+    unsigned int socket;
+    bool has_data =3D false;
+
+    if ( argc > 0 )
+        parse_cpuid(argv[0], &cpu);
+
+    if ( cpu !=3D -1 )
+    {
+        if ( fetch_dts_temp(xc_handle, cpu, false, &temp) )
+        {
+            fprintf(stderr, "Unable to fetch temperature (%d - %s)\n",
+                    errno, strerror(errno));
+            exit(EXIT_FAILURE);
+        }
+        else
+            printf("CPU%d: %d=C2=B0C\n", cpu, temp);
+        return;
+    }
+
+    /* Per socket measurement */
+    for ( socket =3D 0, cpu =3D 0; cpu < max_cpu_nr;
+          socket++, cpu +=3D physinfo.cores_per_socket * physinfo.threads_=
per_core )
+    {
+        if ( fetch_dts_temp(xc_handle, cpu, true, &temp) )
+        {
+            fprintf(stderr,
+                    "[Package%u] Unable to fetch temperature (%d - %s)\n",
+                    cpu, errno, strerror(errno));
+            /* CPU may not support package temperatures, but still support=
 DTS */
+            break;
+        }
+
+        has_data =3D true;
+        printf("Package%u: %d=C2=B0C\n", socket, temp);
+    }
+
+    for ( cpu =3D 0; cpu < max_cpu_nr; cpu +=3D physinfo.threads_per_core =
)
+    {
+        if ( fetch_dts_temp(xc_handle, cpu, false, &temp) )
+        {
+            fprintf(stderr, "[CPU%d] Unable to fetch temperature (%d - %s)=
\n",
+                    cpu, errno, strerror(errno));
+            continue;
+        }
+        
+        has_data =3D true;
+        printf("CPU%d: %d=C2=B0C\n", cpu, temp);
+    }
+
+    if ( !has_data )
+        exit(EXIT_FAILURE);
+}
+
 void disable_turbo_mode(int argc, char *argv[])
 {
     int cpuid =3D -1;
@@ -1618,12 +1737,12 @@ struct {
     { "set-max-cstate", set_max_cstate_func},
     { "enable-turbo-mode", enable_turbo_mode },
     { "disable-turbo-mode", disable_turbo_mode },
+    { "get-core-temp", get_core_temp },
 };
 
 int main(int argc, char *argv[])
 {
     int i, ret =3D 0;
-    xc_physinfo_t physinfo;
     int nr_matches =3D 0;
     int matches_main_options[ARRAY_SIZE(main_options)];
 
-- 
2.52.0



--
Teddy Astie | Vates XCP-ng Developer

XCP-ng & Xen Orchestra - Vates solutions

web: https://vates.tech




From xen-devel-bounces@lists.xenproject.org Tue Apr 07 14:11:15 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 07 Apr 2026 14:11:15 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1275048.1561024 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wA799-0003Ur-Ea; Tue, 07 Apr 2026 14:11:15 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1275048.1561024; Tue, 07 Apr 2026 14:11: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 1wA799-0003Uk-Bb; Tue, 07 Apr 2026 14:11:15 +0000
Received: by outflank-mailman (input) for mailman id 1275048;
 Tue, 07 Apr 2026 14:11:14 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92) id 1wA798-0003SF-4J
 for xen-devel@lists.xenproject.org; Tue, 07 Apr 2026 14:11:14 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wA797-0022M9-GM
 for xen-devel@lists.xenproject.org; Tue, 07 Apr 2026 16:11:13 +0200
Received: from [10.42.69.2] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <jbeulich@suse.com>)
 id 69d5107c-5cb7-0a2a0a5109dd-0a2a4502a0ea-14
 for <xen-devel@lists.xenproject.org>; Tue, 07 Apr 2026 16:11:13 +0200
Received: from [209.85.221.47] (helo=mail-wr1-f47.google.com)
 by tlsNG-720697.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.0)
 (envelope-from <jbeulich@suse.com>)
 id 69d51081-42fa-0a2a45020019-d155dd2fb559-3
 for <xen-devel@lists.xenproject.org>; Tue, 07 Apr 2026 16:11:13 +0200
Received: by mail-wr1-f47.google.com with SMTP id
 ffacd0b85a97d-43b8e8e7432so4153722f8f.1
 for <xen-devel@lists.xenproject.org>; Tue, 07 Apr 2026 07:11:13 -0700 (PDT)
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-43d1e2a71f7sm52784821f8f.1.2026.04.07.07.11.11
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Tue, 07 Apr 2026 07:11:11 -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=google header.d=suse.com header.i="@suse.com" header.h="Content-Transfer-Encoding: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=1775571073; x=1776175873; darn=lists.xenproject.org;
        h=content-transfer-encoding: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;
        bh=Bf7hJHbgNRm6EA4s/SPWOyvDHd8fJ/4ii5mYvLbdZgs=;
        b=F7e0E1sMIC6HkvCwPd53QplZYprcBEousdxAQOXdJ7gIfi0803LAqFFxJyt0N7Y6ef
         dTWWqXFlFDxIKgDEKhASfTf1RCIJM7p0ObBP5aGJb9Xb+hlHBlzp/+r3ZfyL7tFt6g2K
         1RM6u6b0QrKEpjVcesbuIgrYpmou0FsFMjIJ5v682K0Kt5A433AK2WpUSqsKb6QEKRc+
         YxMSFHsHgwSJduSfA0Vpkr1aNrCeu3wBaadhkV3uK1k5TRblArB/YQfoj0NINpmPIlx1
         8dDyLPUCm/HwMRKIlDTYIKkDxzc5BfK0HhLWrtWFlyYfKPaZWc5vmGRR3HxqR1MaRBda
         0J7A==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20251104; t=1775571073; x=1776175873;
        h=content-transfer-encoding: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;
        bh=Bf7hJHbgNRm6EA4s/SPWOyvDHd8fJ/4ii5mYvLbdZgs=;
        b=mBJoCS+2rMtlgBtFWIqP7S/uF6kv0ePzLurWM7SP+PaT7KfVL082hRnvAtXcZEfrlD
         dN28gBtjtjbuc/M3DGG3RI3Qkqou53RwmBSrpTJyrdvRbzcHa0ScAoCLxhkJOHq7B1J5
         xJsIQwopCrbnMB/r1ZLWJM8sQYDEF3Fe5iFJOH2ipV++vAmqwFXYXipDcdu07SMP6iBB
         q6JHkX/RResODUE01RJNSd2OLD6LOwHoylYAXSqvWEpqEl+uaQdmf6ep1HSvxXclQ0WF
         UBBytqxeensyCnxijOAjVoamaFZ+V+iyxEjT7t+v/dzRhi1pgY/8gfNmBQ+2Vo3D5sgV
         VWZg==
X-Forwarded-Encrypted: i=1; AJvYcCV4EtAXMYitQ3G5UJY3wldZxALMlmpU1J7id3KmCEDSPsLHpmSCdbCZvgAQDPJ61Adgri7B8U3soW4=@lists.xenproject.org
X-Gm-Message-State: AOJu0Yy72Pnyv6jH8qxotfslrzEX2Gl+O2SNksfgOqqcOIyQbIvMxDJD
	bQbWh+sod6UJz8jOEwoxzOED/ZpE8As3/tQJuAyhxhLM3rx2hLEIkHDevbSlqWlDrA==
X-Gm-Gg: AeBDieuOZaKJEWNaO6S8qtoz9thy25gO8sAzVj2zG4iKFl+kdyJwLdDdwLI+9+Xdiqk
	N3km/diGp1sa+fVHJOUydjkECgs4HMsmvjKFp19FpT5+tLHXEVqAeiwgR+Y7i43Hi7EWCT7LnG9
	5BsYbK6ZfesoMWP1KjTHYH+3Q8oVkFBSbpl1JYqbkMlVD4M1IAadO1TDxQXYZog3iEJhNfOLWp/
	xmzsT9ifC8PbuWYYTE941B65pLeZCYlgUwbIjE7glZiY0oJCSgEp34xpCtm0ONdOagQRPErdUtX
	v4NvGpiF804gLBdghiE3hzEKubZMCT3qYbxB+43q8FGIeySodwMTVnRWIcqakxn1lNcKK7t9qyA
	VH2A2eqFoOBaOvH/9Z4Aguj5TOXxhQVjO7GivioyUYOlrQ1ku8w78MPtsH6hKw050RTd1C7Qj/+
	KsNYZ2EzSyI8gfOE25IJD3RjlqC2+0o8ZEMzV0cTQUJ8IIPfxTwYs+DWnMZZ96A6liwjgr4RLb3
	jZ3ZAvU690Pjek=
X-Received: by 2002:a05:6000:61e:b0:43d:1bf6:927 with SMTP id ffacd0b85a97d-43d29295ffdmr24659486f8f.14.1775571072623;
        Tue, 07 Apr 2026 07:11:12 -0700 (PDT)
Message-ID: <79c69067-4771-40df-a52b-8b552cd92a00@suse.com>
Date: Tue, 7 Apr 2026 16:11:16 +0200
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH v1 27/27] xen/riscv: add initial dom0less infrastructure
 support
To: Oleksii Kurochko <oleksii.kurochko@gmail.com>
Cc: Romain Caritey <Romain.Caritey@microchip.com>,
 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.pau@citrix.com>,
 Stefano Stabellini <sstabellini@kernel.org>, xen-devel@lists.xenproject.org
References: <cover.1773157782.git.oleksii.kurochko@gmail.com>
 <a66c727d0b99b9de41f516e1304b1a70192c9392.1773157782.git.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: <a66c727d0b99b9de41f516e1304b1a70192c9392.1773157782.git.oleksii.kurochko@gmail.com>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 7bit
X-purgate-ID: tlsNG-720697/1775571073-AD53CCD1-2F6E46A4/10/73395122804
X-purgate-type: spam
X-purgate-size: 4000

On 10.03.2026 18:09, Oleksii Kurochko wrote:
> Enable dom0less support for RISC-V by selecting HAS_DOM0LESS and
> providing the minimal architecture hooks required by the common
> dom0less infrastructure.
> 
> Add stub implementations for architecture-specific helpers used when
> building domains from the device tree. These currently perform no
> additional work but allow the generic dom0less code to build and run
> on RISC-V.
> 
> Introduce max_init_domid as a runtime variable rather than a constant
> so that it can be updated during dom0less domain creation.
> 
> Provide missing helpers and definitions required by the domain
> construction code,

I'm wondering about the splitting among patches: There's half a dozen
(effectively stub) functions which are added here, and then there is
the single init_vuart() which was split out into the earlier patch.
What's the pattern behind this, i.e. why isn't init_vuart() also
being added here?

> including domain bitness helpers and the
> p2m_set_allocation() prototype.
> 
> Additionally define the guest magic memory region in the public
> RISC-V interface.
> 
> Signed-off-by: Oleksii Kurochko <oleksii.kurochko@gmail.com>
> ---
> Open questions:
>  - Move declaration of p2m_set_allocation() to xen/fdt-domain-build.h or
>    xen/dom0less-build.h as it is used in common code of Dom0less and
>    there is not too much sense in declaration of it for each arch which
>    supports Dom0less. It could be ifdef-ed in common header as, at the
>    momemnt, it is used only for Dom0less.

Having a common declaration of p2m_set_allocation() is certainly a
sensible thing to do, but not in DT or dom0less headers. p2m-common.h
is, going from file names, the only plausible place for it to go.
Whether that (a) works and (b) makes sense are separate questions.

>  - Shouldn't declaration/defintion of max_init_domid move to common code
>    instead of having it for each architecture separately? If yes, then what
>    would be the best place.

What would you use to decide whether the declaration or #define is
needed? (Plausible headers to put it can surely be found: console.h,
domain.h, and perhaps more.)

> --- a/xen/arch/riscv/include/asm/domain.h
> +++ b/xen/arch/riscv/include/asm/domain.h
> @@ -20,6 +20,14 @@ struct hvm_domain
>      uint64_t              params[HVM_NR_PARAMS];
>  };
>  
> +#ifdef CONFIG_RISCV_64
> +#define is_32bit_domain(d) (0)
> +#define is_64bit_domain(d) (1)
> +#else
> +#define is_32bit_domain(d) (1)
> +#define is_64bit_domain(d) (0)
> +#endif

First, please use true/false. Then, while I agree with the RV32 part, 32-bit
guests surely will need to be an option on a 64-bit hypervisor. Imo you'd
better introduced a field in struct arch_domain to carry that information
(or to derive it from) right away. That wouldn't be set to non-zero for the
time being, i.e. that same constant-true/false would still result.

Otherwise I don't see why you use #ifdef; you could then have things
simpler as

#define is_32bit_domain(d) IS_ENABLED(CONFIG_RISCV_32)
#define is_64bit_domain(d) IS_ENABLED(CONFIG_RISCV_64)

(but I specifically don't recommend going this route).

> --- a/xen/arch/riscv/setup.c
> +++ b/xen/arch/riscv/setup.c
> @@ -32,6 +32,8 @@
>  #include <asm/traps.h>
>  #include <asm/vsbi.h>
>  
> +domid_t max_init_domid = 0;

The initializer isn't of much use, is it? Instead add __read_mostly, like
Arm has it?

> --- a/xen/include/public/arch-riscv.h
> +++ b/xen/include/public/arch-riscv.h
> @@ -58,6 +58,9 @@ typedef uint64_t xen_ulong_t;
>  #define GUEST_RAM_BANK_BASES   { GUEST_RAM0_BASE }
>  #define GUEST_RAM_BANK_SIZES   { GUEST_RAM0_SIZE }
>  
> +#define GUEST_MAGIC_BASE  xen_mk_ullong(0x39000000)
> +#define GUEST_MAGIC_SIZE  xen_mk_ullong(0x01000000)

What is this, and why does it need putting in the public interface? Plus
how come the numbers are exactly the same as what Arm uses?

Jan


From xen-devel-bounces@lists.xenproject.org Tue Apr 07 14:24:03 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 07 Apr 2026 14:24:03 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1275060.1561033 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wA7LS-0005MD-Fu; Tue, 07 Apr 2026 14:23:58 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1275060.1561033; Tue, 07 Apr 2026 14:23: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 1wA7LS-0005M6-DN; Tue, 07 Apr 2026 14:23:58 +0000
Received: by outflank-mailman (input) for mailman id 1275060;
 Tue, 07 Apr 2026 14:23:57 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <andrew.cooper3@citrix.com>) id 1wA7LR-0005M0-Ii
 for xen-devel@lists.xenproject.org; Tue, 07 Apr 2026 14:23:57 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wA7LQ-00CTsg-Gm
 for xen-devel@lists.xenproject.org; Tue, 07 Apr 2026 16:23:56 +0200
Received: from [10.42.69.5] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <andrew.cooper3@citrix.com>)
 id 69d5136d-e002-0a2a0a5209dd-0a2a4505d3ec-38
 for <xen-devel@lists.xenproject.org>; Tue, 07 Apr 2026 16:23:56 +0200
Received: from [209.85.128.47] (helo=mail-wm1-f47.google.com)
 by tlsNG-c201ff.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.0)
 (envelope-from <andrew.cooper3@citrix.com>)
 id 69d5137c-3760-0a2a45050019-d155802fd158-3
 for <xen-devel@lists.xenproject.org>; Tue, 07 Apr 2026 16:23:56 +0200
Received: by mail-wm1-f47.google.com with SMTP id
 5b1f17b1804b1-488b00ed86fso22327815e9.3
 for <xen-devel@lists.xenproject.org>; Tue, 07 Apr 2026 07:23:56 -0700 (PDT)
Received: from localhost.localdomain (host-78-146-242-105.as13285.net.
 [78.146.242.105]) by smtp.gmail.com with ESMTPSA id
 5b1f17b1804b1-4887e9630ddsm568190645e9.13.2026.04.07.07.23.53
 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
 Tue, 07 Apr 2026 07:23:53 -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=google header.d=citrix.com header.i="@citrix.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=citrix.com; s=google; t=1775571835; x=1776176635; 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;
        bh=vdXRlsvJI2LDhbcrmPKpVP0y+FqWL2ueHDugm/aw4Bg=;
        b=cpwmNIWoaZxgfVx1H+ShgByLgIZJDQc2gVpNNrCaOOtVIAnE9s0Bhhtg9Kle1pciU2
         PCWH0Ci7RVCe3Rlbq0SCcerYa0s//vy1dqA614itrZjomk6kG8DROVJu0V24GVG9XMFy
         nZmzi4Fou4P7FQ/yOOiq8sPfmXmQx4rvDfILY=
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20251104; t=1775571835; x=1776176635;
        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;
        bh=vdXRlsvJI2LDhbcrmPKpVP0y+FqWL2ueHDugm/aw4Bg=;
        b=QB3zd4WlRT4jER+0O9swlH3U18eRqVHcqO1vqjVAeDQ0T7UlGU/U35hqgvzO/iHd0T
         XU3fOrR7zRqh3/6ARjD0Jtcz/LH8Nyfdkv87+CJzpq4AJw1UosplRFeyLr3SJcrKH49r
         3wiV6DFh/nn+ISE8Wgw3gWR9/T19SzQ4OCbLV6ZcyMMxklj1yEFd4l0upliZ2ilm9jhU
         JjLH5OwGynKdnhgPgAhVzMnNZzP6T4F/ltrZL9D+9IA8JO5TUq7OGacqgNpX7ER34Ma+
         L/ccZ1zpLfFGIVIPSTStWJqHJyddZEhu3sEYbojrjIi0R7qwYWvHwDKzZ2tC8B9CsdFa
         hfQw==
X-Gm-Message-State: AOJu0Yx4OUEexwxqUJPKmZsQPKFaEQYuZ0WcNPx5ZRwe01bYDjfk/iH+
	xyDdnwnTyCe1DgJbkZqb/iiwttERZGgqterdUwXIeawU6pg2txbG3p8BitMkCH71IcNyrWgp5zv
	Un+jF
X-Gm-Gg: AeBDietgUOR6wnoVCnkCbdAriP/IZf1RPSx+ir/A87hW4H7IfXaDpaakf7YmGoWrJTl
	D/7jC5uDQgzZpZJklOBNxpi9fBncb5toNr+ONMZCc6G8daDg8q8y3AEZkUMM+LWLz/t6TBu44Ln
	iF58DZWTAQGhNiLpraq0gLwc4SMWnCpBxV0wNhP4E7VnnjmpNnDLdTMWDHDgNQP3xtC0+ur9qUp
	DpUmb2kZ1kfdO5/J60aUeZ7bFGMLftBDKAmnCMxQSuHtCe+uH4barx+Rroz1PqOTHSFO3QVdEyw
	klvv4Etol/WnyAnGPaJFB8EmkkGzgFqrIW/pHyQp4UBQn6JV+VERXBPnCLPG7MyZrA5DJUGng6D
	XPdhR5W20+QxvTsB7kdzyeQO8SDRnnGdR6IZ8WUjV6UFr+bRgcrP51zJ8eg29yQ0jJ1J6ZRTe0T
	3DClUFtxM+CKI1oJHCicW/Wn3m8kxxJD8PuyVKjcBrTDDZhTQCyUBy4dC0CdG6SiLAymVX4mq0f
	Odm
X-Received: by 2002:a05:600c:628e:b0:485:9a50:3384 with SMTP id 5b1f17b1804b1-488997da325mr226707645e9.25.1775571834567;
        Tue, 07 Apr 2026 07:23:54 -0700 (PDT)
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.pau@citrix.com>
Subject: [PATCH v2] x86/emul: Remove fallback path from SWAPGS
Date: Tue,  7 Apr 2026 15:23:51 +0100
Message-Id: <20260407142351.73049-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/1775571836-33F2E96F-13E6A62A/0/0
X-purgate-type: clean
X-purgate-size: 3241

In real hardware, accesses to the registers cannot fail.  The error paths are
just an artefact of the hook functions needing to return something.

The best effort unwind is also something that doesn't exist in real hardware,
and makes the logic more complicated to follow.  Instead, use an
ASSERT_UNREACHABLE() with a fallback of injecting #DF.  Hitting this path is
an error in Xen.

While adjusting, remove {read,write}_segment() and use {read,write}_msr() to
access MSR_GS_BASE.  There's no need to access the other parts of the GS
segment, and this is less work behind the scenes.

Signed-off-by: Andrew Cooper <andrew.cooper3@citrix.com>
---
CC: Jan Beulich <JBeulich@suse.com>
CC: Roger Pau Monné <roger.pau@citrix.com>

v2:
 * Retain x86_emul_reset_event()
 * Pass an error code for #DF
 * Drop goto done now that generate_exception() is used
 * Use 2x{read,write}_msr()

Tested using LKGS's extention of the test emulator for SWAPGS.
---
 xen/arch/x86/x86_emulate/0f01.c | 28 +++++++++++++++-------------
 1 file changed, 15 insertions(+), 13 deletions(-)

diff --git a/xen/arch/x86/x86_emulate/0f01.c b/xen/arch/x86/x86_emulate/0f01.c
index 6c10979dd650..54bd6faf0f2c 100644
--- a/xen/arch/x86/x86_emulate/0f01.c
+++ b/xen/arch/x86/x86_emulate/0f01.c
@@ -189,22 +189,24 @@ int x86emul_0f01(struct x86_emulate_state *s,
         generate_exception_if(!mode_ring0(), X86_EXC_GP, 0);
         fail_if(!ops->read_segment || !ops->read_msr ||
                 !ops->write_segment || !ops->write_msr);
-        if ( (rc = ops->read_segment(x86_seg_gs, &sreg,
-                                     ctxt)) != X86EMUL_OKAY ||
-             (rc = ops->read_msr(MSR_SHADOW_GS_BASE, &msr_val,
+        if ( (rc = ops->read_msr(MSR_GS_BASE, &sreg.base,
                                  ctxt)) != X86EMUL_OKAY ||
-             (rc = ops->write_msr(MSR_SHADOW_GS_BASE, sreg.base,
-                                  ctxt, false)) != X86EMUL_OKAY )
+             (rc = ops->read_msr(MSR_SHADOW_GS_BASE, &msr_val,
+                                 ctxt)) != X86EMUL_OKAY )
             goto done;
-        sreg.base = msr_val;
-        if ( (rc = ops->write_segment(x86_seg_gs, &sreg,
-                                      ctxt)) != X86EMUL_OKAY )
+        if ( (rc = ops->write_msr(MSR_SHADOW_GS_BASE, sreg.base,
+                                  ctxt, false)) != X86EMUL_OKAY ||
+             (rc = ops->write_msr(MSR_GS_BASE, msr_val,
+                                  ctxt, false)) != X86EMUL_OKAY )
         {
-            /* Best effort unwind (i.e. no real error checking). */
-            if ( ops->write_msr(MSR_SHADOW_GS_BASE, msr_val,
-                                ctxt, false) == X86EMUL_EXCEPTION )
-                x86_emul_reset_event(ctxt);
-            goto done;
+            /*
+             * In real hardware, access to the registers cannot fail.  It is
+             * an error in Xen if the writes fail given that both MSRs have
+             * equivalent checks.
+             */
+            ASSERT_UNREACHABLE();
+            x86_emul_reset_event(ctxt);
+            generate_exception(X86_EXC_DF, 0);
         }
         break;
 
-- 
2.39.5



From xen-devel-bounces@lists.xenproject.org Tue Apr 07 14:28:39 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 07 Apr 2026 14:28:39 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1275071.1561044 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wA7Py-00067b-72; Tue, 07 Apr 2026 14:28:38 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1275071.1561044; Tue, 07 Apr 2026 14: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 1wA7Py-00067U-3E; Tue, 07 Apr 2026 14:28:38 +0000
Received: by outflank-mailman (input) for mailman id 1275071;
 Tue, 07 Apr 2026 14:28:36 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <bounce-md_30504962.69d51491.v1-9635abaa79d7495a902f1a97067a8fcc@bounce.vates.tech>)
 id 1wA7Pw-00067O-5m
 for xen-devel@lists.xenproject.org; Tue, 07 Apr 2026 14:28:36 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wA7Pv-006w95-Hp
 for xen-devel@lists.xenproject.org; Tue, 07 Apr 2026 16:28:35 +0200
Received: from [10.42.69.12] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1) (envelope-from
 <bounce-md_30504962.69d51491.v1-9635abaa79d7495a902f1a97067a8fcc@bounce.vates.tech>)
 id 69d51488-5cb7-0a2a0a5109dd-0a2a450ce958-18
 for <xen-devel@lists.xenproject.org>; Tue, 07 Apr 2026 16:28:35 +0200
Received: from [198.2.136.16] (helo=mail136-16.atl41.mandrillapp.com)
 by tlsNG-d25034.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.0)
 (envelope-from
 <bounce-md_30504962.69d51491.v1-9635abaa79d7495a902f1a97067a8fcc@bounce.vates.tech>)
 id 69d51492-f40c-0a2a450c0019-c6028810e3da-3
 for <xen-devel@lists.xenproject.org>; Tue, 07 Apr 2026 16:28:35 +0200
Received: from pmta11.mandrill.prod.atl01.rsglab.com (localhost [127.0.0.1])
 by mail136-16.atl41.mandrillapp.com (Mailchimp) with ESMTP id
 4fqpTY5WcFz8XRqPJ
 for <xen-devel@lists.xenproject.org>; Tue,  7 Apr 2026 14:28:33 +0000 (GMT)
Received: from [37.26.189.201] by mandrillapp.com id
 9635abaa79d7495a902f1a97067a8fcc; Tue, 07 Apr 2026 14:28: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=mte1 header.d=mandrillapp.com header.i="@mandrillapp.com" header.h="From:Subject:Message-Id:To:Cc:References:In-Reply-To:Feedback-ID:Date:MIME-Version:Content-Type:Content-Transfer-Encoding"; dkim=pass header.s=mte1 header.d=vates.tech header.i="teddy.astie@vates.tech" header.h="From:Subject:Message-Id:To:Cc:References:In-Reply-To:Feedback-ID:Date:MIME-Version:Content-Type:Content-Transfer-Encoding"
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=mandrillapp.com;
	s=mte1; t=1775572113; x=1775842113;
	bh=wulGuTlcR8Sn4nzBb9YK+YbQVPxoyiSgvH5ZgGYc+/w=;
	h=From:Subject:Message-Id:To:Cc:References:In-Reply-To:Feedback-ID:
	 Date:MIME-Version:Content-Type:Content-Transfer-Encoding:CC:Date:
	 Subject:From;
	b=Zj16rsmBNZPFcrTZtvXrwjirj28wSkh4abWOmIaEXGNOHr8n5pJ8oSPcmDZdkFeym
	 i09YA30xMk6PHwt7JBCKnnFCOQoxfNy9afYkpb5h6oUfGPwb46Bn4ffFVdjGXTakJu
	 t3+XBQ6NlvmENeTlAeY+6CSYqiIMKjv/mzamaA8+TP9dbAUSVDAOVQjbDp2q2FMiqH
	 +L9BYrWOyIPI2ABOufl08HK/hEyp+Dfi22YZMSKE2G7pvS2oEGRyVfsUn4Tvd8POXH
	 4VcjFkRpm4Ya4RIyQ1WU8VgGvvNaRbEzbPLaKCx2k/IGdgIxL+DscvE5aXs0wJkkaQ
	 yH9X9Z4oM4oGQ==
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=vates.tech; s=mte1;
	t=1775572113; x=1775832613; i=teddy.astie@vates.tech;
	bh=wulGuTlcR8Sn4nzBb9YK+YbQVPxoyiSgvH5ZgGYc+/w=;
	h=From:Subject:Message-Id:To:Cc:References:In-Reply-To:Feedback-ID:
	 Date:MIME-Version:Content-Type:Content-Transfer-Encoding:CC:Date:
	 Subject:From;
	b=rWvaWa++IEb19cf8UrhBU4gW1Su6QcNaMd/Xy1PlyeFE1EzKM2p7z33FhL0ALeuez
	 TvCcO9LX2HEx/eVM50Lc353QsGXwiVTs965Fxa70q7vadNTcz+yOj5ja+eALclZvvU
	 xMiwtpkhmLgwVEqz8Ub8+rf6Ru4v65BVcIMQICZn1As3zIiFRFtHsvABi9K/2SvqFI
	 e+4C7SE97yZNpXB3kHdpNGiXeZByHq9qG/dGmjbSdPw2XWMlvUN7IAAfsnbPrWNAjl
	 7HW1P/d+/Em+5DgRSYAX2G97PftDtn2WK+mDcmXOurOoERkVW7rJKzY77sHBNBlEpB
	 pv69GmmXWxDCw==
From: "Teddy Astie" <teddy.astie@vates.tech>
Subject: =?utf-8?Q?Re:=20[PATCH]=20x86/HPET:=20channel=20handling=20in=20hpet=5Fbroadcast=5Fresume()?=
X-Bm-Disclaimer: Yes
X-Bm-Milter-Handled: 4ffbd6c1-ee69-4e1b-aabd-f977039bd3e2
X-Bm-Transport-Timestamp: 1775572112605
Message-Id: <f1d850c9-e544-49a7-922a-dedce7b8c306@vates.tech>
To: "Jan Beulich" <jbeulich@suse.com>, xen-devel@lists.xenproject.org
Cc: "Andrew Cooper" <andrew.cooper3@citrix.com>, "=?utf-8?Q?Roger=20Pau=20Monn=C3=A9?=" <roger.pau@citrix.com>, "Marek Marczykowski" <marmarek@invisiblethingslab.com>
References: <a77822d8-08f4-4c4f-b291-cc44a213cf9f@suse.com>
In-Reply-To: <a77822d8-08f4-4c4f-b291-cc44a213cf9f@suse.com>
X-Native-Encoded: 1
X-Report-Abuse: =?UTF-8?Q?Please=20forward=20a=20copy=20of=20this=20message,=20including=20all=20headers,=20to=20abuse@mandrill.com.=20You=20can=20also=20report=20abuse=20here:=20https://mandrillapp.com/contact/abuse=3Fid=3D30504962.9635abaa79d7495a902f1a97067a8fcc?=
X-Mandrill-User: md_30504962
Feedback-ID: 30504962:30504962.20260407:md
Date: Tue, 07 Apr 2026 14:28:33 +0000
MIME-Version: 1.0
Content-Type: text/plain; charset=utf-8
Content-Transfer-Encoding: quoted-printable
X-purgate-ID: tlsNG-d25034/1775572115-80360A3D-80950A2E/0/0
X-purgate-type: clean
X-purgate-size: 2721

Le 07/04/2026 =C3=A0 15:35, Jan Beulich a =C3=A9crit=C2=A0:
> The per-channel ENABLE bit is to solely be driven by hpet_enable_channel(=
)
> and hpet_msi_{,un}mask(). It doesn't need setting immediately. Except for
> the (possible) channel put in legacy mode we don't do so during boot
> either.
> 
> Instead reset ->arch.cpu_mask, to avoid msi_compose_msg() yielding an
> all-zero message (when the passed in CPU mask has no online CPUs). Nothin=
g
> would later call msi_compose_msg() / hpet_msi_write(), and hence nothing
> would later produce a well-formed message template in
> hpet_events[].msi.msg.
> 
> Fixes: 15aa6c67486c ("amd iommu: use base platform MSI implementation")
> Reported-by: Marek Marczykowski-G=C3=B3recki <marmarek@invisiblethingslab=
.com>
> Signed-off-by: Jan Beulich <jbeulich@suse.com>
> Tested-by: Marek Marczykowski-G=C3=B3recki <marmarek@invisiblethingslab.c=
om>
> ---
> As to the Fixes: tag: The issue for the HPET resume case is the
> cpumask_intersects(desc->arch.cpu_mask, &cpu_online_map) check in
> msi_compose_msg(). The earlier cpumask_empty() wasn't a problem, as
> cpu_mask_to_apicid() returning a bogus (offline) value didn't have any ba=
d
> effect: Before use, a valid destination would have been put in place, but
> other parts of .msg were properly set up. Furthermore we also didn't clea=
r
> the entire message prior to that change.
> 
> Many thanks got to Marek for tirelessly trying out various debugging
> suggestions.
> 
> --- a/xen/arch/x86/hpet.c
> +++ b/xen/arch/x86/hpet.c
> @@ -685,12 +685,18 @@ void hpet_broadcast_resume(void)
>       for ( i =3D 0; i < n; i++ )
>       {
>           if ( hpet_events[i].msi.irq >=3D 0 )
> +        {
> +            struct irq_desc *desc =3D irq_to_desc(hpet_events[i].msi.irq=
);
> +
> +            cpumask_copy(desc->arch.cpu_mask, cpumask_of(smp_processor_i=
d()));
> +
>               __hpet_setup_msi_irq(irq_to_desc(hpet_events[i].msi.irq));

We can directly reuse "desc" here since irq_to_desc(...) isn't supposed 
to change value with cpumask_copy().

i.e `__hpet_setup_msi_irq(desc);`

> +        }
>   
>           /* set HPET Tn as oneshot */
>           cfg =3D hpet_read32(HPET_Tn_CFG(hpet_events[i].idx));
>           cfg &=3D ~(HPET_TN_LEVEL | HPET_TN_PERIODIC);
> -        cfg |=3D HPET_TN_ENABLE | HPET_TN_32BIT;
> +        cfg |=3D HPET_TN_32BIT;
>           if ( !(hpet_events[i].flags & HPET_EVT_LEGACY) )
>               cfg |=3D HPET_TN_FSB;
>           hpet_write32(cfg, HPET_Tn_CFG(hpet_events[i].idx));
> 

Teddy


--
Teddy Astie | Vates XCP-ng Developer

XCP-ng & Xen Orchestra - Vates solutions

web: https://vates.tech




From xen-devel-bounces@lists.xenproject.org Tue Apr 07 15:12:15 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 07 Apr 2026 15:12:15 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1275105.1561068 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wA85w-0004Bk-D7; Tue, 07 Apr 2026 15:12:00 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1275105.1561068; Tue, 07 Apr 2026 15:12: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 1wA85w-0004Bd-A3; Tue, 07 Apr 2026 15:12:00 +0000
Received: by outflank-mailman (input) for mailman id 1275105;
 Tue, 07 Apr 2026 15:11:59 +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 1wA85v-0004BX-Kx
 for xen-devel@lists.xenproject.org; Tue, 07 Apr 2026 15:11:59 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wA85r-002YmH-9Y
 for xen-devel@lists.xenproject.org; Tue, 07 Apr 2026 17:11:56 +0200
Received: from [10.42.69.1] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <andrew.cooper@citrix.com>)
 id 69d51eb8-e002-0a2a0a5209dd-0a2a4501e41a-14
 for <xen-devel@lists.xenproject.org>; Tue, 07 Apr 2026 17:11:56 +0200
Received: from [52.101.193.16]
 (helo=CH1PR05CU001.outbound.protection.outlook.com)
 by tlsNG-d62444.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.0)
 (envelope-from <andrew.cooper@citrix.com>)
 id 69d51ebb-6fc9-0a2a45010019-3465c110c6a1-3
 for <xen-devel@lists.xenproject.org>; Tue, 07 Apr 2026 17:11:56 +0200
Received: from CH8PR03MB8275.namprd03.prod.outlook.com (2603:10b6:610:2b9::7)
 by SA2PR03MB5834.namprd03.prod.outlook.com (2603:10b6:806:f8::19)
 with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9769.20; Tue, 7 Apr
 2026 15:11:53 +0000
Received: from CH8PR03MB8275.namprd03.prod.outlook.com
 ([fe80::a70d:dc32:bba8:ce37]) by CH8PR03MB8275.namprd03.prod.outlook.com
 ([fe80::a70d:dc32:bba8:ce37%6]) with mapi id 15.20.9769.018; Tue, 7 Apr 2026
 15:11: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=pXJn1TPGxKDSdfRUPn5hp5ztx8a7/F1qnXeKVBfetTGk1fdQTapufnPAhnA+mSTaP3t5PnxKapypK5U+q1rqfrBbPiVhsl3ArxOrQGM8caLfmI8diwra9Dm5hPFnMuiJNw2MbxzVjdzw1llEB/p05/kmfW+jv2bBWb6Md8oSqokvO0khejIwkmkMm6wL188Hd1mW+cHuOaxFZJkOtfgr2QX4lGsQJ/ZKBXT3exCL/3GP3MzrvXt9x1LQLjLKYQZ7HZd7Dl/CJjEGomRrKwEo1tz0Vthpe9DIoI3myK1DjZRzaQVMxA3AJY7W9+Vgyq79QIp6ILMCdTcBB7h7vvTqZg==
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com;
 s=arcselector10001;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1;
 bh=vZW+wCXWqX8AyNyCRqHoD4suCIiZURPNLJJamfGx0KQ=;
 b=Nbh+sDNPj2q0hirRVCtRU9VX9bkmgkOjGfi9lpBePwRBFANcjucnbxHtadUAhnPhmxrsrouttbKsNeVZ9BkPAZ/Mz++Ke9LEANL4tldifro+FfJMAlSN0PCH4cHfeNhIU6AmiqbfukSYh4QIaCu8WkQOIRNw2qY8QzP1nGQMmiBJADJSP95wq/4YSrRpfXvER0IL74fePofiYFR+l1CzhSavpRTUgEO/L0gTlgfXPCiL4VCkFfPupmTb9CXtHsE2Dcw2oJbZnspe9azPfcwR2RnDnOBMhqguoNxfyiKF/mD4726n87IiSI7OaB5jhIxJHERi+VFmqu7pB1fl+Pc/+g==
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=vZW+wCXWqX8AyNyCRqHoD4suCIiZURPNLJJamfGx0KQ=;
 b=niL9ZfhNrJb/jOfxVT/Iuo8CZNRdQiZh2OJ6eiH6Kw2QF0SP5Iqo2cw8yfzNH9qfXYEEV7tPGxanIWaGQFxYj+Aq3cG24fdcCukk9IzpEZi4NrK3fo+mQnHx7j/U83EaJuc2oZyeEG3i02HchDAqQx/aJg2q8LpOAiYvNGk+vy8=
Authentication-Results: dkim=none (message not signed)
 header.d=none;dmarc=none action=none header.from=citrix.com;
Message-ID: <7c6879f6-8d70-4da6-8b6b-e03cfeb13a70@citrix.com>
Date: Tue, 7 Apr 2026 16:11:49 +0100
User-Agent: Mozilla Thunderbird
Cc: Andrew Cooper <andrew.cooper3@citrix.com>,
 =?UTF-8?Q?Roger_Pau_Monn=C3=A9?= <roger.pau@citrix.com>,
 "xen-devel@lists.xenproject.org" <xen-devel@lists.xenproject.org>
Subject: Re: [PATCH v9 10/10] x86emul: support AVX512-BMM
To: Jan Beulich <jbeulich@suse.com>
References: <926a2315-a2b7-4aad-87e6-d686c9da9e3a@suse.com>
 <732d56d9-d200-410e-8b52-48c5e25bcf5c@suse.com>
 <50ff35c6-5da2-4c6f-94b2-025440ee618f@citrix.com>
 <0c481383-1ac8-4a31-8685-def51cdc9005@suse.com>
Content-Language: en-GB
From: Andrew Cooper <andrew.cooper3@citrix.com>
In-Reply-To: <0c481383-1ac8-4a31-8685-def51cdc9005@suse.com>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
X-ClientProxiedBy: LO4P123CA0095.GBRP123.PROD.OUTLOOK.COM
 (2603:10a6:600:191::10) To CH8PR03MB8275.namprd03.prod.outlook.com
 (2603:10b6:610:2b9::7)
MIME-Version: 1.0
X-MS-PublicTrafficType: Email
X-MS-TrafficTypeDiagnostic: CH8PR03MB8275:EE_|SA2PR03MB5834:EE_
X-MS-Office365-Filtering-Correlation-Id: a1816009-fca5-4c9e-3bd7-08de94b7ffdc
X-MS-Exchange-SenderADCheck: 1
X-MS-Exchange-AntiSpam-Relay: 0
X-Microsoft-Antispam:
	BCL:0;ARA:13230040|376014|366016|1800799024|56012099003|22082099003|18002099003;
X-Microsoft-Antispam-Message-Info:
	AXZmWIdtiZ7UCaOaQmi3gEYex0v4TAV+P0PmN3RPGteNQ6H3WjmMTtMYBtl01MDhNm+PjavNcCsKXjkw4YQRk8oLfYuSujO30hn31RjVw0hVxiMof76VL2kM15V7u1a1BsvFUTUt7AGHjEgynEIUPgNokwUwnVHFuVpvLtBKRYJWwhdzgtkEkOordhcv0QgH7Rxl34m4FtRX7l5/qz2ICoFkpltO9scVtTqo59zpTa7xjJYIMU2sT5uV0F754DWY3eOc0X5f+sHEWUcAt6V6onBbHBYvEUzXrvZpCvnyPX4BmfqaWebTtfZWwScP9oLxDd4AQvmY0TWlol4GCHsIfB4TM9kmC5JsyDm8cJjNAL+w2w/MPLImyLmXebdB3ryGbGJiOf8P3v2vJIonJsgaSprEbZnzh4bl2iUOE5eyvrr3DNXgN8R3ytdd2+zMCQO9Yyo87QHOLkyLuXXk4YBWAAy2MG2FPmuLZjl/49NGjCOI5ZNckK8lmAscFN/jsENiYkgSnAAiDNVE8OquRxvvIhtzrMnvhUeSCwv1l2GQX+uoX2+cfF+PY0W6EmQIHTcuiBKW3b+Gk0ZkAdk9XCqoFtREgBek1hGF73sOuoq3IJuh0vufgOAY6lRC+qS3lljiqanVnZaErL6q948V8A6WBE77DZL35T3T8rrg6LNtPYITInNzoqHpmZMT93W/Pbp3Oijg0spjbP2+r4naDlUqfB/E9QuCnOGOHzqwAoD6fmo=
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)(56012099003)(22082099003)(18002099003);DIR:OUT;SFP:1101;
X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1
X-MS-Exchange-AntiSpam-MessageData-0:
	=?utf-8?B?ZjZSQnlsNHBrYmRmM0dzNUE2bklkT2MvVm9NSTVVUmF4RndGQ0JyWkpCOHQ1?=
 =?utf-8?B?b25QSlZ2eHFpSGFqdXlpM2tVcWhmRzJsam03V1g1ZDRUWWJ5cTRZcVVuKzVQ?=
 =?utf-8?B?bWRadVdtT1ZuVjJMQlMyblNzU0JvcmxlZ2tRcTNpUStzd3ozQ0VZdEhSVDNP?=
 =?utf-8?B?SHBVS2crSElPdEpzdGpEVGpuWWtGTlJ5dlZpTFRjdHRKb2Z3UGdPemlWdHpv?=
 =?utf-8?B?blRHRHEzU1VTcFJrdFZTcXpJYzdKaVNFL05yK3ZvbW1UZUF0VkxuazIyQmlB?=
 =?utf-8?B?SGRvNzMwbDR5VzVRdVFaeUUrNWhtazNOY3NtUDR6dFZZYm16YS9RQmtVQzg5?=
 =?utf-8?B?UDZuQ1ZaWm1OcWdTcGI1d1lOK1Uwd202cFI1azZQcEZ0Yk5yR3FwWFZESUx3?=
 =?utf-8?B?S0QzbkdhV214UUFtRkNKbWkwZ0NJeWhUbDF5KzNhdzNWTkQwVDNVWFUxbGlC?=
 =?utf-8?B?K0E3UG1YdFRLWWhXYmpZRjRlSGk0NnBuQ09xbjRrdlVkT2JwVnh6WUdqc3l3?=
 =?utf-8?B?ck5waGoxelVQdThPajFKSU9uemtYTTE1d2NFNS9hSENibTc4MEpCQmN2NURU?=
 =?utf-8?B?YjhUakJZNkk4amdlblVtUGpGc05VNGZKcURyU3RPSDFPVkZ3T21icmlEVmNn?=
 =?utf-8?B?bUdpWGwrN0JEVUpDTC92NEcyZVpTTXNJMC8ya1ZBaXpPOE1Rb0xMTFhzOEk1?=
 =?utf-8?B?TjVHMDdkaThROHhQSU9vMHRJMVBVYWxOelhCQW5NbnhHaE1YQVVZZEhwM2Jx?=
 =?utf-8?B?TkRNd2prQ3h4WHVZNGEybG9zYkxxTDBaT0pnZmNIVlhtbE5xRTFPSWR4bzc5?=
 =?utf-8?B?ZFY1SUFGNEZ5MXJhZG15UU9iV01YWmhPczZOaG9TeEVZYXpadVp2WnNnL2Nk?=
 =?utf-8?B?T2sxWkVtSE51Q042Ujd5ZGV3U2Jjd1BQMEk3Q0laaEVqREFpeFp1WnNVdzQw?=
 =?utf-8?B?NkdQaG4yQmRaZWpjME0wM1RJdkhYWCtwbW1hVjY2Q0ZYUnRBWlNSbXJHWDFi?=
 =?utf-8?B?bFZiV3d1NnNzUmlTQVIvV04rRFJkVStyUHhBdlE1TXQveGtwRTdLUFY5Kzha?=
 =?utf-8?B?THA2TW82MG1Tbm8vL2JoVHZuUWhrQkhSSHpmYjd4dUVxNVU3QWdaNTRCU2VH?=
 =?utf-8?B?bUNER3JLdTZKbzdrUUd4Q0U3dUs4aEhIdkxRNllLUzRwaUdwTi8xU3pMeEN4?=
 =?utf-8?B?R2w4UTVxK1VlU2plQS8yVHRkQWNpWFBIWDloU3o4U280WU5Sc3o2Q25HeGo5?=
 =?utf-8?B?czN3aXRkR1VBOE56SVVmSy9nUVppNVc3c0tyY1Z6SnRWaXBIZXEwK0FYWUlU?=
 =?utf-8?B?UitvQWJjaWtiV2hvRDE5dDNHbjZiazRub2pXMHhFcVcvMTNtVVEyYkNFRDVw?=
 =?utf-8?B?NUFNaFNpRDJ5NkRDS2Q5aHJqRjUzWHVQSCtmaWI2WHZoaUpHTldlQk91YWs2?=
 =?utf-8?B?Y3RUWDdyNXp1YXNpNElUVmR6bWhoWnFPR2ZZUm81THQ3MmFUUnhkTi8yZ3JF?=
 =?utf-8?B?NTExUnBubHM1NGR6M3YvL0UzLzJKblhTUUE0blYwRXlZZmRsZlJHeTBkOFhL?=
 =?utf-8?B?b295c3lNUGdnVFpTaTMrNWlFb1RKTWlVZTRDMDR5Ni9kcm00RFhqeFdTY3Y1?=
 =?utf-8?B?UG9tdHlSaXNKY1oxKzNXNVY5TXpQeU51NC9DYmxLb0pXZ0kyNWdlWWJvQlV6?=
 =?utf-8?B?ck02YVIrSDJadW01Uld6UEYrUzd4M2x5M1RkU0hhWHNjZ0pvVVAwbWNwWWdo?=
 =?utf-8?B?MGl1MHFUdDMrVnJsMnA1cDdDQXIvMjd1dk8xL1F4anNCWUU2Y3piaGI4ZzMy?=
 =?utf-8?B?YjhST1E1dVBkOHVtUFhoNmdFa1R3VDQ5NVRNck9qcTlRS0lqbUJ1Y0R4VG1q?=
 =?utf-8?B?K3JZeWtTVVA4OXIvc3ZZYW11TzBxTHhRSFpvRlBPYy9zamJTcGVaMTNDN1k1?=
 =?utf-8?B?WUg1NldTdTZqYXJvZXhLMCs2Q3hvUU1BVlExeW4za2RFRzN0TlRKTE1aVHB0?=
 =?utf-8?B?Znpib3ZxcjFBZzEwUVBiRUtVZjNScCs2amRJdkZCaHhGQnNrcmhsRW81cXo1?=
 =?utf-8?B?ZmVJNXJOcEF3NVEyUUp3OWpSdUZPYVpjNEVKN0l3bytnSEd3U3hYQ3Nwb0E1?=
 =?utf-8?B?cWszSWZ2cHgzUy9lN0R6YzN1SWJyTkowYXRNNExvZ2RheW4wNVcrUkVKZU9G?=
 =?utf-8?B?L0dNRkJwdTF0UEUxZVR6NGlJNnFBdGN2VE81TTNoY2ptVDR1THhWQ0d4UktS?=
 =?utf-8?B?NXorS1hJQmVQL0pReGRhVjgrN2lIRWcya0RuN256d0hVSHplVUdEQkNYVStY?=
 =?utf-8?B?b3diZ0hCWkUvNHU2S1JFMm1NMU43MlpLd1FKL2MxbVRaTWphZU1ERXBYcUpF?=
 =?utf-8?Q?OtxTlWDsaQnwnw7g=3D?=
X-OriginatorOrg: citrix.com
X-MS-Exchange-CrossTenant-Network-Message-Id: a1816009-fca5-4c9e-3bd7-08de94b7ffdc
X-MS-Exchange-CrossTenant-AuthSource: CH8PR03MB8275.namprd03.prod.outlook.com
X-MS-Exchange-CrossTenant-AuthAs: Internal
X-MS-Exchange-CrossTenant-OriginalArrivalTime: 07 Apr 2026 15:11:52.7597
 (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: NboMMPrYtDesitsYN+ymZRANyycUak6zfts7omgN1V37uyomq0ByMXu02otCVAYvaK9s+tsfrblK4NlK67HrjlFhZZv5oJMpcFG3SCHDpd4=
X-MS-Exchange-Transport-CrossTenantHeadersStamped: SA2PR03MB5834
X-purgate-ID: tlsNG-d62444/1775574716-150E0185-FB64FAAA/0/0
X-purgate-type: clean
X-purgate-size: 701

On 05/12/2025 12:47 pm, Jan Beulich wrote:
> On 05.12.2025 13:33, Andrew Cooper wrote:
>> Very tentatively Acked-by: Andrew Cooper <andrew.cooper3@citrix.com>
> Thanks. I'll put this into the patch as-is; it's unclear to me though
> whether I could legitimately commit the patch with this. (It really
> doesn't depend on earlier patches in the series, after all.)

For an off-by-default change like this, it's fine.  There needs to be
another patch swapping a for A when we get access to real hardware,
where any other changes can be accommodated.

In the meantime AMD have published a spec
https://docs.amd.com/v/u/en-US/69192-PUB so feel free to upgrade to a
regular A-by.

~Andrew


From xen-devel-bounces@lists.xenproject.org Tue Apr 07 15:19:22 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 07 Apr 2026 15:19:22 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1275116.1561077 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wA8D0-0004q5-2h; Tue, 07 Apr 2026 15:19:18 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1275116.1561077; Tue, 07 Apr 2026 15: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 1wA8Cz-0004py-WC; Tue, 07 Apr 2026 15:19:18 +0000
Received: by outflank-mailman (input) for mailman id 1275116;
 Tue, 07 Apr 2026 15:19:17 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <jbeulich@suse.com>) id 1wA8Cz-0004ps-Ag
 for xen-devel@lists.xenproject.org; Tue, 07 Apr 2026 15:19:17 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wA8Cy-00CaI6-JD
 for xen-devel@lists.xenproject.org; Tue, 07 Apr 2026 17:19:16 +0200
Received: from [10.42.69.4] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <jbeulich@suse.com>)
 id 69d52066-2eae-0a2a0a5409dd-0a2a4504defc-20
 for <xen-devel@lists.xenproject.org>; Tue, 07 Apr 2026 17:19:16 +0200
Received: from [209.85.128.44] (helo=mail-wm1-f44.google.com)
 by tlsNG-ebf023.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.0)
 (envelope-from <jbeulich@suse.com>)
 id 69d52074-bb33-0a2a45040019-d155802cbc14-3
 for <xen-devel@lists.xenproject.org>; Tue, 07 Apr 2026 17:19:16 +0200
Received: by mail-wm1-f44.google.com with SMTP id
 5b1f17b1804b1-488a4bc360bso16916465e9.0
 for <xen-devel@lists.xenproject.org>; Tue, 07 Apr 2026 08:19:16 -0700 (PDT)
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-488b739e00bsm155012865e9.10.2026.04.07.08.19.14
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Tue, 07 Apr 2026 08:19:14 -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=google header.d=suse.com header.i="@suse.com" header.h="Content-Transfer-Encoding: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=1775575156; x=1776179956; darn=lists.xenproject.org;
        h=content-transfer-encoding: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;
        bh=9o5xjBi7lZ26EURuFKUWFl80uEHdRXN0oZw8Lukf8j0=;
        b=Rr23SaEOHX4Owqf8H5zONNW/jgcDvIEprqXt5Pi1JRZ0rKF1pB9NYMDtGhcRaYBcgE
         jv5jD91zKrcFam7jEuJTOsN/r06Jb4fJ3E1xwUbyts3sb8HlVkOz95LtzPqPEZYCl0BI
         0OqIHyY1V42qGBb75Hv/1Mvtv1gw0stRtfAutqMNukWn5SBDsBjbF4ZnbPFyo/t7f4c9
         LoYa1V5nOzV077fKW+nhTH5wi+oJjd/T2vNDykUyQh6WbKiJX+qnFeozudBRoXgivPuh
         B4eLBfO9wstolPgbluGsncmTQ+Q0l33LoiDwa/Rys8gwa9xa21SPBYPg/vZFgTeNcbva
         lo/w==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20251104; t=1775575156; x=1776179956;
        h=content-transfer-encoding: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;
        bh=9o5xjBi7lZ26EURuFKUWFl80uEHdRXN0oZw8Lukf8j0=;
        b=MUIa9a8Kg2GA5Jn8fhfkZZoRgMksGUahn/cPxI+7MfKdGPPhivEtuQDGUbaXObX0oZ
         VC58c+GCCrag6MZEyczLL83I2PaLW+tfVQ04eePdXDFsVM3bYAUJPWA5OqlxICzkhOzu
         vz7KR/VASyVBBZYlLHuBedu80YtPAtQe9wf+mghYbO+ZOKqULGAKxrXRKwrHQTWSN2AU
         Dv1PPHjxxzjK72t+dsWRMm2qakc4NasrSItLc2hDRrQ42THQdKl0tnKxd1Q5pgMbCf5P
         c62qRtTaOvaLYObx71L0ji9u7Kk3LTsCpWvsy1YRpa8CpRI/wmy3YdUfEvA7lrwcNaR8
         4geg==
X-Forwarded-Encrypted: i=1; AJvYcCUhbNj2/LXGv5YYqVzGKcAiW/tWTnqAzHzyVdlEwddBB7pNmVxv2hWAQ+IZwOu+D8IHYP7Is11YQ7o=@lists.xenproject.org
X-Gm-Message-State: AOJu0YxTAjaDN1LZ3cJeJkogKob36qa4gsjaDtHxfHT/L2w6B+1Pd/53
	kIl+4audZ/ofge9oBvHf6k/6zwVqPqM24FgjEplLaYP/8yVRHShodlPSy7DTVMf7zDATsKklqf1
	xdIfwZg==
X-Gm-Gg: AeBDiesx7duaaIUJYnkw4uATB2Jfv00ly2fg6lcRC4gj760Lb/oSvo/4XMiKAHQbksV
	EKKYSJvjGR7Q9Da7JayAtX4k8WMswRUjMCrv0joxod0G6aJXfScgegUJfov1qmOEzCUhk+Ybf6m
	voo1NrXeUWXG2dkUVjM4kp7cnkn9G72hzv9LM5zXlR4pZRpMOvkYKr9sqxNtTm6fv+1YNft0mYI
	XSlulnG3vQG96GpDXUPgdypgWuC+k2WUxbC2jkN8JY+HQJxqOX8feapM2w16eoYx/82deb8RTFX
	1vQ+g6cChq/T4ri/JU+RIgqdEYfDfY3s5SFgznGUkXGHfrU5NFsUpr4c8zPVW96RDFM8RfmsFiI
	4yDH7opmXXt7pCvNeUINwemXhAD+ZhTkgq58t457G6G8mb8i+oMZQ0UpAZCxcKM3xE0jFg2A/Im
	2aUe8zWVllhSLyyHWsQLETezCYRtrsBEmYi0zyVtVqekOxgUD9rdToSvNlkxF6bhoJNuWfoVkGD
	MskJ0xMRL7phKY=
X-Received: by 2002:a05:600c:c8d:b0:485:4eaf:eb54 with SMTP id 5b1f17b1804b1-48899793093mr238007635e9.20.1775575155642;
        Tue, 07 Apr 2026 08:19:15 -0700 (PDT)
Message-ID: <9dc724f2-bf03-4da1-b91d-289015248548@suse.com>
Date: Tue, 7 Apr 2026 17:19:19 +0200
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH v2] x86/emul: Remove fallback path from SWAPGS
To: Andrew Cooper <andrew.cooper3@citrix.com>
Cc: =?UTF-8?Q?Roger_Pau_Monn=C3=A9?= <roger.pau@citrix.com>,
 Xen-devel <xen-devel@lists.xenproject.org>
References: <20260407142351.73049-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: <20260407142351.73049-1-andrew.cooper3@citrix.com>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 7bit
X-purgate-ID: tlsNG-ebf023/1775575156-33B3051B-4A2DAA39/0/0
X-purgate-type: clean
X-purgate-size: 775

On 07.04.2026 16:23, Andrew Cooper wrote:
> In real hardware, accesses to the registers cannot fail.  The error paths are
> just an artefact of the hook functions needing to return something.
> 
> The best effort unwind is also something that doesn't exist in real hardware,
> and makes the logic more complicated to follow.  Instead, use an
> ASSERT_UNREACHABLE() with a fallback of injecting #DF.  Hitting this path is
> an error in Xen.
> 
> While adjusting, remove {read,write}_segment() and use {read,write}_msr() to
> access MSR_GS_BASE.  There's no need to access the other parts of the GS
> segment, and this is less work behind the scenes.
> 
> Signed-off-by: Andrew Cooper <andrew.cooper3@citrix.com>

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



From xen-devel-bounces@lists.xenproject.org Tue Apr 07 15:27:09 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 07 Apr 2026 15:27:09 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1275124.1561086 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wA8KW-0006OS-Q0; Tue, 07 Apr 2026 15:27:04 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1275124.1561086; Tue, 07 Apr 2026 15:27: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 1wA8KW-0006OL-N2; Tue, 07 Apr 2026 15:27:04 +0000
Received: by outflank-mailman (input) for mailman id 1275124;
 Tue, 07 Apr 2026 15:27:03 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <kroupa.matyas@gmail.com>) id 1wA8KV-0006OF-0i
 for xen-devel@lists.xen.org; Tue, 07 Apr 2026 15:27:03 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wA8KT-00CbUr-Sf
 for xen-devel@lists.xen.org; Tue, 07 Apr 2026 17:27:01 +0200
Received: from [10.42.69.7] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <kroupa.matyas@gmail.com>)
 id 69d5222d-e002-0a2a0a5209dd-0a2a4507e1fa-20
 for <xen-devel@lists.xen.org>; Tue, 07 Apr 2026 17:27:01 +0200
Received: from [209.85.128.45] (helo=mail-wm1-f45.google.com)
 by tlsNG-ef75cf.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.0)
 (envelope-from <kroupa.matyas@gmail.com>)
 id 69d52245-ba2d-0a2a45070019-d155802db824-3
 for <xen-devel@lists.xen.org>; Tue, 07 Apr 2026 17:27:01 +0200
Received: by mail-wm1-f45.google.com with SMTP id
 5b1f17b1804b1-488a88aeec9so36759795e9.2
 for <xen-devel@lists.xen.org>; Tue, 07 Apr 2026 08:27:01 -0700 (PDT)
Received: from rivendell.hailstone.cz ([2001:718:801:311:4701:d1d5:7bfd:a254])
 by smtp.gmail.com with ESMTPSA id
 5b1f17b1804b1-488bfc31418sm96097705e9.3.2026.04.07.08.26.59
 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
 Tue, 07 Apr 2026 08:27:00 -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=20251104 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=20251104; t=1775575621; x=1776180421; darn=lists.xen.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;
        bh=IHPScCRJGZQUSpb7kpMIaL4SJh1cfTTzVvA9I+0J7iM=;
        b=fPJM0m0OVVqERYThndq/3FIM7v/GC6FFis/3dBPVs4rywEXygHpTpi5tBpyxRqnvnO
         Jb5VSVofd2LQFijPKTEVcp70lC66l6DUSLZ1qoveDkPND9rG9SPAq02PS/EavpxqZ7FG
         uz5T61f94nju7Qt1B8i5LNW1YrkvMoQmL5TWDXd4SWxp2+6MkudLEMi9+XJSbMkWR5Hs
         WtATjCoeFma2xWRIu0NdxPatjMjInTF2CdXfB6623vCK5yAxyhTL8wZClquGVcbt1X96
         FjtbmhkKqAFKWccwiSOeLY10LBaU33ICQFbO/qQ2uKh4k/lEFsK2kbTBiv/2Hx2tcoYx
         hoFA==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20251104; t=1775575621; x=1776180421;
        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;
        bh=IHPScCRJGZQUSpb7kpMIaL4SJh1cfTTzVvA9I+0J7iM=;
        b=WwSym/yLO8VeeqqWXFwAOj3p/SFnrIdHAVDMssJSofVTIKKed+VHglUm2vtxLau+ok
         aGWo5hHuzRAp6Lnm/kKIiIeFyowZeaPkG4424fnpTS5hEFR4m4+sueFYIBsJ9MfwUMqp
         39TWv47jFyfutO14cjeFNAla8HVvYH3346Qr6YIZoKepVdM9jpHcgtFaDYflF93oR+LL
         CjPWBzqvB5ItW6IgvvvjmZVQEmNBiHdFH5lHee+2cXu/9/vugxYPyCjrZp8fkxdHwDnT
         x1m5fUU3q6caH57gupaHie14IWmoGUfYG6OiRpjmgpymponCvXBMMy4Ja1OTv3zjxn5V
         CoLA==
X-Gm-Message-State: AOJu0YzXV5u+eWMXN6y9jdz0rOjmTOpoP3wgYBrgb8f9tFXxkTRtD37j
	Z+rUV31EJwZbLdCWv7v5dLxLBeYx8+JO614ITyyq01/UJMEPrJtA8GOw
X-Gm-Gg: AeBDietabWnXCm1oF4eXAcrdZeaeVeANsrN7XeW2jLSfSffrBwZFZp1b7Xi0iVUAOBq
	nKLJrJn3oZ8XjFX5pvb1oIBB72VhaBQKj/TmSddGHidzbDqAZGqz8x2i5QpdorLjln4gan0jXbX
	Ka5fvKvcnKQx1rLrqTtfeWnvr6dDfieHITFlbMXI8plUzHJdZZTy9L74A2iDLG23K9Bo90de0e2
	50tc1uzaHF/ccmcrD2I9L8KDAb8JP5a2PoQCHB9PrSBTWwZa9GSe3xl2e9yGnR2yJOwRpVZ2I/c
	cfwPQevPFnopKeKpZNOa1BenInnmP2cykIIsnc6rYxccFnYhjR8whVQ6YVJrIWHi+0bQKSI6U1P
	C+kSsYtAa/38PA50G9UCrgxPdUUht5wPHGyyCHbm18URSGbm7nSmZhUzDyASeKaPO3jQfLfEf+g
	jhVHcchJjZ7eSxiCi4nO0Qwyskdw1cxKEE77+vK8D7xx1A1zb+XH4kJA==
X-Received: by 2002:a05:600c:4f0d:b0:488:b187:d898 with SMTP id 5b1f17b1804b1-488b187d996mr117484875e9.14.1775575620942;
        Tue, 07 Apr 2026 08:27:00 -0700 (PDT)
From: =?UTF-8?B?TWF0ecOhxaE=?= Kroupa <kroupa.matyas@gmail.com>
To: Jan Beulich <jbeulich@suse.com>
Cc: xen-devel@lists.xen.org
Subject: Re: Xen on Zen 3
Date: Tue, 07 Apr 2026 17:26:59 +0200
Message-ID: <3426323.0QQBjFxQff@rivendell.hailstone.cz>
In-Reply-To: <e9c1f232-e81e-4202-8550-6fd3afeab206@suse.com>
References:
 <5490687.niJfEyVGOH@rivendell.hailstone.cz>
 <4454038.v2OnDr8pfo@rivendell.hailstone.cz>
 <e9c1f232-e81e-4202-8550-6fd3afeab206@suse.com>
MIME-Version: 1.0
Content-Type: multipart/mixed; boundary="nextPart24824718.vTCxPXJkl2"
Content-Transfer-Encoding: 7Bit
X-purgate-ID: tlsNG-ef75cf/1775575621-83B4041E-2C8F7BFC/0/0
X-purgate-type: clean
X-purgate-size: 51764

This is a multi-part message in MIME format.

--nextPart24824718.vTCxPXJkl2
Content-Transfer-Encoding: quoted-printable
Content-Type: text/plain; charset="utf-8"

> I'd guess the value to be 1, but there
> being multiple nodes at the same time. You may want to instrument the
> function a little more to be certain.

I managed to get the dyndbg working and you were right, there is 1 root dev=
ice, 2 max logical packages and 1 node per package. I have searched how lin=
ux gets the number of max logical packages and it seems to have something t=
o with the bitmap weight of the package-domain APIC map. Those are probably=
 different on bare metal and Xen.

Last time I forgot to attach logs, this time I put that right now.

Maty=C3=A1=C5=A1 Kroupa
--nextPart24824718.vTCxPXJkl2
Content-Disposition: attachment;
 filename="xen-4.21.1-linux-6.19.10-dyndbg.txt"
Content-Transfer-Encoding: 7Bit
Content-Type: text/plain; charset="UTF-8";
 name="xen-4.21.1-linux-6.19.10-dyndbg.txt"

Loading Xen 4.21.1 ...
Loading Linux 6.19.10-200.fc43.x86_64 ...
Loading initial ramdisk ...
Xen 4.21.1
(XEN) Xen version 4.21.1 (mockbuild@) (gcc (GCC) 15.2.1 20260123 (Red Hat 15.2.1-7)) debug=n Mon Apr  6 00:00:00 UTC 2026
(XEN) Latest ChangeSet: 
(XEN) build-id: 11ab961ff2580581f074fd57a1954e7cea23875c
(XEN) CPU Vendor: AMD, Family 25 (0x19), Model 33 (0x21), Stepping 2 (raw 00a20f12)
(XEN) BSP microcode revision: 0x0a201213
(XEN) Bootloader: GRUB 2.12
(XEN) Command line: placeholder dom0=pvh dom0_mem=36G com1=115200,8n1 console=com1,vga no-real-mode edd=off
(XEN) Xen image load base address: 0xb6a00000
(XEN) Video information:
(XEN)  VGA is graphics mode 1920x1080, 32 bpp
(XEN)  VBE/DDC methods: none; EDID transfer time: 0 seconds
(XEN) Disc information:
(XEN)  Found 0 MBR signatures
(XEN)  Found 3 EDD information structures
(XEN) Using IDT event delivery
(XEN) Enabling Supervisor Shadow Stacks
(XEN)   - Disabling PV32 due to CET
(XEN) EFI RAM map:
(XEN)  [0000000000000000, 000000000009ffff] (usable)
(XEN)  [00000000000a0000, 00000000000fffff] (reserved)
(XEN)  [0000000000100000, 0000000009bfefff] (usable)
(XEN)  [0000000009bff000, 0000000009ffffff] (reserved)
(XEN)  [000000000a000000, 000000000a1fffff] (usable)
(XEN)  [000000000a200000, 000000000a20dfff] (ACPI NVS)
(XEN)  [000000000a20e000, 000000000affffff] (usable)
(XEN)  [000000000b000000, 000000000b01ffff] (reserved)
(XEN)  [000000000b020000, 00000000bb13afff] (usable)
(XEN)  [00000000bb13b000, 00000000bc947fff] (reserved)
(XEN)  [00000000bc948000, 00000000bc988fff] (ACPI data)
(XEN)  [00000000bc989000, 00000000bd07cfff] (ACPI NVS)
(XEN)  [00000000bd07d000, 00000000bdbfefff] (reserved)
(XEN)  [00000000bdbff000, 00000000beffffff] (usable)
(XEN)  [00000000bf000000, 00000000bfffffff] (reserved)
(XEN)  [00000000f0000000, 00000000f7ffffff] (reserved)
(XEN)  [00000000fd200000, 00000000fd2fffff] (reserved)
(XEN)  [00000000fd600000, 00000000fd7fffff] (reserved)
(XEN)  [00000000fea00000, 00000000fea0ffff] (reserved)
(XEN)  [00000000feb80000, 00000000fec01fff] (reserved)
(XEN)  [00000000fec10000, 00000000fec10fff] (reserved)
(XEN)  [00000000fec30000, 00000000fec30fff] (reserved)
(XEN)  [00000000fed00000, 00000000fed00fff] (reserved)
(XEN)  [00000000fed40000, 00000000fed44fff] (reserved)
(XEN)  [00000000fed80000, 00000000fed8ffff] (reserved)
(XEN)  [00000000fedc2000, 00000000fedcffff] (reserved)
(XEN)  [00000000fedd4000, 00000000fedd5fff] (reserved)
(XEN)  [00000000ff000000, 00000000ffffffff] (reserved)
(XEN)  [0000000100000000, 0000000c3f2fffff] (usable)
(XEN)  [0000000c3f300000, 0000000c3fffffff] (reserved)
(XEN) ACPI: RSDP BD066014, 0024 (r2 ALASKA)
(XEN) ACPI: XSDT BD065728, 00CC (r1 ALASKA   A M I   1072009 AMI   1000013)
(XEN) ACPI: FACP BC97A000, 0114 (r6 ALASKA   A M I   1072009 AMI     10013)
(XEN) ACPI: DSDT BC973000, 60DA (r2 ALASKA   A M I   1072009 INTL 20120913)
(XEN) ACPI: FACS BD060000, 0040
(XEN) ACPI: SSDT BC980000, 8CE9 (r2    AMD AmdTable        2 MSFT  4000000)
(XEN) ACPI: SSDT BC97C000, 3CB6 (r2    AMD  AMD AOD        1 INTL 20120913)
(XEN) ACPI: SSDT BC97B000, 01CC (r2 ALASKA  CPUSSDT  1072009 AMI   1072009)
(XEN) ACPI: FIDT BC972000, 009C (r1 ALASKA    A M I  1072009 AMI     10013)
(XEN) ACPI: MCFG BC971000, 003C (r1 ALASKA    A M I  1072009 MSFT    10013)
(XEN) ACPI: AAFT BC970000, 00F1 (r1 ALASKA OEMAAFT   1072009 MSFT       97)
(XEN) ACPI: HPET BC96F000, 0038 (r1 ALASKA    A M I  1072009 AMI         5)
(XEN) ACPI: IVRS BC96E000, 00D0 (r2  AMD   AmdTable        1 AMD         1)
(XEN) ACPI: BGRT BC96D000, 0038 (r1 ALASKA   A M I   1072009 AMI     10013)
(XEN) ACPI: TPM2 BC96C000, 004C (r4 ALASKA   A M I         1 AMI         0)
(XEN) ACPI: PCCT BC96B000, 006E (r2    AMD AmdTable        1 AMD         1)
(XEN) ACPI: SSDT BC962000, 8033 (r2    AMD AmdTable        1 AMD         1)
(XEN) ACPI: CRAT BC960000, 1710 (r1    AMD AmdTable        1 AMD         1)
(XEN) ACPI: CDIT BC95F000, 0029 (r1    AMD AmdTable        1 AMD         1)
(XEN) ACPI: SSDT BC95B000, 37C4 (r2    AMD   MYRTLE        1 INTL 20120913)
(XEN) ACPI: SSDT BC95A000, 00BF (r1    AMD AmdTable     1000 INTL 20120913)
(XEN) ACPI: WSMT BC959000, 0028 (r1 ALASKA   A M I   1072009 AMI     10013)
(XEN) ACPI: APIC BC958000, 015E (r3 ALASKA   A M I   1072009 AMI     10013)
(XEN) ACPI: SSDT BC956000, 10AF (r2    AMD   MYRTLE        1 INTL 20120913)
(XEN) ACPI: FPDT BC955000, 0044 (r1 ALASKA   A M I   1072009 AMI   1000013)
(XEN) System RAM: 49075MB (50253492kB)
(XEN) No NUMA configuration found
(XEN) Faking a node at 0000000000000000-0000000c3f300000
(XEN) Domain heap initialised
(XEN) vesafb: framebuffer at 0x000000f800000000, mapped to 0xffff82c000203000, using 8128k, total 8128k
(XEN) vesafb: mode is 1920x1080x32, linelength=7680, font 8x16
(XEN) vesafb: Truecolor: size=8:8:8:8, shift=24:16:8:0
(XEN) SMBIOS 3.3 present.
(XEN) PCI: MCFG configuration 0: base f0000000 segment 0000 buses 00 - 7f
(XEN) PCI: MCFG area at f0000000 reserved in E820
(XEN) PCI: Using MCFG for segment 0000 bus 00-7f
(XEN) Using APIC driver default
(XEN) ACPI: PM-Timer IO Port: 0x808 (32 bits)
(XEN) ACPI: v5 SLEEP INFO: control[0:0], status[0:0]
(XEN) ACPI: SLEEP INFO: pm1x_cnt[1:804,1:0], pm1x_evt[1:800,1:0]
(XEN) ACPI: 32/64X FACS address mismatch in FADT - bd060000/0000000000000000, using 32
(XEN) ACPI:             wakeup_vec[bd06000c], vec_size[20]
(XEN) Overriding APIC driver with bigsmp
(XEN) ACPI: IOAPIC (id[0x21] address[0xfec00000] gsi_base[0])
(XEN) IOAPIC[0]: apic_id 33, version 33, address 0xfec00000, GSI 0-23
(XEN) ACPI: IOAPIC (id[0x22] address[0xfec01000] gsi_base[24])
(XEN) IOAPIC[1]: apic_id 34, version 33, address 0xfec01000, GSI 24-55
(XEN) ACPI: INT_SRC_OVR (bus 0 bus_irq 0 global_irq 2 dfl dfl)
(XEN) ACPI: INT_SRC_OVR (bus 0 bus_irq 9 global_irq 9 low level)
(XEN) ACPI: HPET id: 0x10228201 base: 0xfed00000
(XEN) ACPI: BGRT: invalidating v1 image at 0xb762c018
(XEN) Using ACPI (MADT) for SMP configuration information
(XEN) SMP: Allowing 32 CPUs (0 hotplug CPUs)
(XEN) IRQ limits: 56 GSI, 6600 MSI/MSI-X
(XEN) AMD-Vi: IOMMU Extended Features:
(XEN) - Peripheral Page Service Request
(XEN) - NX bit
(XEN) - Invalidate All Command
(XEN) - Performance Counters
(XEN) - Host Address Translation Size: 0x2
(XEN) - Guest Address Translation Size: 0
(XEN) - Guest CR3 Root Table Level: 0x1
(XEN) - Maximum PASID: 0xf
(XEN) - SMI Filter Register: 0x1
(XEN) - SMI Filter Register Count: 0x2
(XEN) - Guest Virtual APIC Modes: 0x1
(XEN) - Dual PPR Log: 0x2
(XEN) - Dual Event Log: 0x2
(XEN) - User / Supervisor Page Protection
(XEN) - Device Table Segmentation: 0x3
(XEN) - PPR Log Overflow Early Warning
(XEN) - PPR Automatic Response
(XEN) - Memory Access Routing and Control: 0x1
(XEN) - Block StopMark Message
(XEN) - Performance Optimization
(XEN) - MSI Capability MMIO Access
(XEN) - Guest I/O Protection
(XEN) - Host Access
(XEN) - Enhanced PPR Handling
(XEN) - Attribute Forward
(XEN) - Virtualized IOMMU
(XEN) - VMGuard I/O Support
(XEN) - VM Table Size: 0x2
(XEN) Switched to APIC driver x2apic_mixed
(XEN) CPU0: 2200 ... 3400 MHz
(XEN) xstate: size: 0x988 and states: 0x207
(XEN) CPU0: AMD Fam19h machine check reporting enabled
(XEN) Speculative mitigation facilities:
(XEN)   Hardware hints: STIBP_ALWAYS IBRS_FAST IBRS_SAME_MODE
(XEN)   Hardware features: IBPB IBRS STIBP SSBD PSFD
(XEN)   Compiled-in support: INDIRECT_THUNK RETURN_THUNK SHADOW_PAGING HARDEN_ARRAY HARDEN_BRANCH HARDEN_GUEST_ACCESS HARDEN_LOCK
(XEN)   Xen settings: BTI-Thunk: JMP, SPEC_CTRL: IBRS+ STIBP+ SSBD- PSFD-, Other: VERW BRANCH_HARDEN
(XEN)   Support for HVM VMs: MSR_SPEC_CTRL MSR_VIRT_SPEC_CTRL RSB VERW IBPB-entry
(XEN)   Support for PV VMs: VERW IBPB-entry
(XEN)   XPTI (64-bit PV only): Dom0 disabled, DomU disabled (without PCID)
(XEN)   PV L1TF shadowing: Dom0 disabled, DomU disabled
(XEN) Using scheduler: SMP Credit Scheduler rev2 (credit2)
(XEN) Initializing Credit2 scheduler
(XEN)  load_precision_shift: 18
(XEN)  load_window_shift: 30
(XEN)  underload_balance_tolerance: 0
(XEN)  overload_balance_tolerance: -3
(XEN)  runqueues arrangement: socket
(XEN)  cap enforcement granularity: 10ms
(XEN) load tracking window length 1073741824 ns
(XEN) Platform timer is 14.318MHz HPET
(XEN) Detected 3393.640 MHz processor.
(XEN) Freed 1008kB unused BSS memory
(XEN) alt table ffff82d04049bfb8 -> ffff82d0404b328e
(XEN) AMD-Vi: IOMMU 0 Enabled.
(XEN) I/O virtualisation enabled
(XEN)  - Dom0 mode: Relaxed
(XEN) Interrupt remapping enabled
(XEN) Enabling APIC mode.  Using 2 I/O APICs
(XEN) ENABLING IO-APIC IRQs
(XEN)  -> Using new ACK method
(XEN) ..TIMER: vector=0xF0 apic1=0 pin1=2 apic2=-1 pin2=-1
(XEN) Wallclock source: CMOS RTC
(XEN) Defaulting to alternative key handling; send 'A' to switch to normal mode.
(XEN) Allocated console ring of 128 KiB.
(XEN) HVM: ASIDs enabled
(XEN) SVM: Supported advanced features:
(XEN)  - Nested Page Tables (NPT)
(XEN)  - Last Branch Record (LBR) Virtualisation
(XEN)  - Next-RIP Saved on #VMEXIT
(XEN)  - VMCB Clean Bits
(XEN)  - TLB flush by ASID
(XEN)  - DecodeAssists
(XEN)  - Virtual VMLOAD/VMSAVE
(XEN)  - Virtual GIF
(XEN)  - Pause-Intercept Filter
(XEN)  - Pause-Intercept Filter Threshold
(XEN)  - TSC Rate MSR
(XEN)  - NPT Supervisor Shadow Stack
(XEN)  - MSR_SPEC_CTRL virtualisation
(XEN) HVM: SVM enabled
(XEN) HVM: Hardware Assisted Paging (HAP) detected
(XEN) HVM: HAP page sizes: 4kB, 2MB, 1GB
(XEN) Brought up 32 CPUs
(XEN) Scheduling granularity: cpu, 1 CPU per sched-resource
(XEN) Initializing Credit2 scheduler
(XEN)  load_precision_shift: 18
(XEN)  load_window_shift: 30
(XEN)  underload_balance_tolerance: 0
(XEN)  overload_balance_tolerance: -3
(XEN)  runqueues arrangement: socket
(XEN)  cap enforcement granularity: 10ms
(XEN) load tracking window length 1073741824 ns
(XEN) Adding cpu 0 to runqueue 0
(XEN)  First cpu on runqueue, activating
(XEN) Adding cpu 1 to runqueue 0
(XEN) Adding cpu 2 to runqueue 0
(XEN) Adding cpu 3 to runqueue 0
(XEN) Adding cpu 4 to runqueue 0
(XEN) Adding cpu 5 to runqueue 0
(XEN) Adding cpu 6 to runqueue 0
(XEN) Adding cpu 7 to runqueue 0
(XEN) Adding cpu 8 to runqueue 0
(XEN) Adding cpu 9 to runqueue 0
(XEN) Adding cpu 10 to runqueue 0
(XEN) Adding cpu 11 to runqueue 0
(XEN) Adding cpu 12 to runqueue 0
(XEN) Adding cpu 13 to runqueue 0
(XEN) Adding cpu 14 to runqueue 0
(XEN) Adding cpu 15 to runqueue 0
(XEN) Adding cpu 16 to runqueue 1
(XEN)  First cpu on runqueue, activating
(XEN) Adding cpu 17 to runqueue 1
(XEN) Adding cpu 18 to runqueue 1
(XEN) Adding cpu 19 to runqueue 1
(XEN) Adding cpu 20 to runqueue 1
(XEN) Adding cpu 21 to runqueue 1
(XEN) Adding cpu 22 to runqueue 1
(XEN) Adding cpu 23 to runqueue 1
(XEN) Adding cpu 24 to runqueue 1
(XEN) Adding cpu 25 to runqueue 1
(XEN) Adding cpu 26 to runqueue 1
(XEN) Adding cpu 27 to runqueue 1
(XEN) Adding cpu 28 to runqueue 1
(XEN) Adding cpu 29 to runqueue 1
(XEN) Adding cpu 30 to runqueue 1
(XEN) Adding cpu 31 to runqueue 1
(XEN) mcheck_poll: Machine check polling timer started.
(XEN) NX (Execute Disable) protection active
(XEN) d0 has maximum 6656 PIRQs
(XEN) *** Building a PVH Dom0 ***
(XEN) Initial low memory virq threshold set at 0x4000 pages.
(XEN) Scrubbing Free RAM in background
(XEN) Std. Loglevel: Errors, warnings and info
(XEN) Guest Loglevel: Nothing (Rate-limited: Errors and warnings)
(XEN) Xen is relinquishing VGA console.
(XEN) *** Serial input to DOM0 (type 'CTRL-a' three times to switch input)
(XEN) Freed 724kB init memory
[    0.000000] NX (Execute Disable) protection: active
[    0.000000] APIC: Static calls initialized
[    0.000000] efi: EFI v2.7 by American Megatrends
[    0.000000] efi: ACPI=0xbd066000 ACPI 2.0=0xbd066014 TPMFinalLog=0xbd030000 SMBIOS=0xbda22000 SMBIOS 3.0=0xbda21000 (MEMATTR=0xb753c018 unusable) ESRT=0xbc954018 MOKvar=0xbda6d000 
[    0.000000] secureboot: Secure boot disabled
[    0.000000] SMBIOS 3.3.0 present.
[    0.000000] DMI: To Be Filled By O.E.M. B450M Steel Legend/B450M Steel Legend, BIOS P10.43 06/25/2025
[    0.000000] DMI: Memory slots populated: 4/4
[    0.000000] Hypervisor detected: Xen HVM
[    0.000000] Xen version 4.21.
[    0.000003] HVMOP_pagetable_dying not supported
[    0.065007] tsc: Fast TSC calibration failed
[    0.065023] tsc: Detected 3393.640 MHz processor
[    0.065189] e820: update [mem 0x00000000-0x00000fff] usable ==> reserved
[    0.065193] e820: remove [mem 0x000a0000-0x000fffff] usable
[    0.065204] last_pfn = 0xc3f300 max_arch_pfn = 0x400000000
[    0.065232] MTRR map: 5 entries (4 fixed + 1 variable; max 21), built from 9 variable MTRRs
[    0.065236] x86/PAT: Configuration [0-7]: WB  WC  UC- UC  WB  WP  UC- WT  
[    0.066982] CPU MTRRs all blank - virtualized system.
[    0.066996] last_pfn = 0xbefff max_arch_pfn = 0x400000000
[    0.070252] esrt: Reserving ESRT space from 0x00000000bc954018 to 0x00000000bc954050.
[    0.070259] Using GB pages for direct mapping
[    0.071080] secureboot: Secure boot disabled
[    0.071083] RAMDISK: [mem 0x05600000-0x0872ffff]
[    0.071090] ACPI: Early table checksum verification disabled
[    0.071095] ACPI: RSDP 0x00000000BEFFFD00 000024 (v02 ALASKA)
[    0.071100] ACPI: XSDT 0x00000000BEFFFD24 000084 (v01 ALASKA A M I    01072009 AMI  01000013)
[    0.071107] ACPI: APIC 0x00000000BEFFFDA8 000258 (v03 ALASKA A M I    01072009 AMI  00010013)
[    0.071113] ACPI: FACP 0x00000000BC97A000 000114 (v06 ALASKA A M I    01072009 AMI  00010013)
[    0.071156] ACPI: DSDT 0x00000000BC973000 0060DA (v02 ALASKA A M I    01072009 INTL 20120913)
[    0.071161] ACPI: FACS 0x00000000BD060000 000040
[    0.071166] ACPI: SSDT 0x00000000BC980000 008CE9 (v02 AMD    AmdTable 00000002 MSFT 04000000)
[    0.071171] ACPI: SSDT 0x00000000BC97C000 003CB6 (v02 AMD    AMD AOD  00000001 INTL 20120913)
[    0.071176] ACPI: SSDT 0x00000000BC97B000 0001CC (v02 ALASKA CPUSSDT  01072009 AMI  01072009)
[    0.071182] ACPI: MCFG 0x00000000BC971000 00003C (v01 ALASKA A M I    01072009 MSFT 00010013)
[    0.071187] ACPI: TPM2 0x00000000BC96C000 00004C (v04 ALASKA A M I    00000001 AMI  00000000)
[    0.071192] ACPI: SSDT 0x00000000BC962000 008033 (v02 AMD    AmdTable 00000001 AMD  00000001)
[    0.071197] ACPI: SSDT 0x00000000BC95B000 0037C4 (v02 AMD    MYRTLE   00000001 INTL 20120913)
[    0.071203] ACPI: SSDT 0x00000000BC95A000 0000BF (v01 AMD    AmdTable 00001000 INTL 20120913)
[    0.071208] ACPI: SSDT 0x00000000BC956000 0010AF (v02 AMD    MYRTLE   00000001 INTL 20120913)
[    0.071213] ACPI: FPDT 0x00000000BC955000 000044 (v01 ALASKA A M I    01072009 AMI  01000013)
[    0.071217] ACPI: Reserving APIC table memory at [mem 0xbefffda8-0xbeffffff]
[    0.071220] ACPI: Reserving FACP table memory at [mem 0xbc97a000-0xbc97a113]
[    0.071222] ACPI: Reserving DSDT table memory at [mem 0xbc973000-0xbc9790d9]
[    0.071225] ACPI: Reserving FACS table memory at [mem 0xbd060000-0xbd06003f]
[    0.071227] ACPI: Reserving SSDT table memory at [mem 0xbc980000-0xbc988ce8]
[    0.071229] ACPI: Reserving SSDT table memory at [mem 0xbc97c000-0xbc97fcb5]
[    0.071232] ACPI: Reserving SSDT table memory at [mem 0xbc97b000-0xbc97b1cb]
[    0.071234] ACPI: Reserving MCFG table memory at [mem 0xbc971000-0xbc97103b]
[    0.071236] ACPI: Reserving TPM2 table memory at [mem 0xbc96c000-0xbc96c04b]
[    0.071239] ACPI: Reserving SSDT table memory at [mem 0xbc962000-0xbc96a032]
[    0.071241] ACPI: Reserving SSDT table memory at [mem 0xbc95b000-0xbc95e7c3]
[    0.071243] ACPI: Reserving SSDT table memory at [mem 0xbc95a000-0xbc95a0be]
[    0.071246] ACPI: Reserving SSDT table memory at [mem 0xbc956000-0xbc9570ae]
[    0.071248] ACPI: Reserving FPDT table memory at [mem 0xbc955000-0xbc955043]
[    0.071454] No NUMA configuration found
[    0.071457] Faking a node at [mem 0x0000000000000000-0x0000000c3f2fffff]
[    0.071468] NODE_DATA(0) allocated [mem 0x943f27280-0x943f51fff]
[    0.071657] Zone ranges:
[    0.071659]   DMA      [mem 0x0000000000001000-0x0000000000ffffff]
[    0.071662]   DMA32    [mem 0x0000000001000000-0x00000000ffffffff]
[    0.071665]   Normal   [mem 0x0000000100000000-0x0000000c3f2fffff]
[    0.071668]   Device   empty
[    0.071671] Movable zone start for each node
[    0.071674] Early memory node ranges
[    0.071676]   node   0: [mem 0x0000000000001000-0x000000000009ffff]
[    0.071679]   node   0: [mem 0x0000000000100000-0x0000000009bfefff]
[    0.071682]   node   0: [mem 0x000000000a000000-0x000000000a1fffff]
[    0.071684]   node   0: [mem 0x000000000a20e000-0x000000000affffff]
[    0.071686]   node   0: [mem 0x000000000b020000-0x00000000bb13afff]
[    0.071689]   node   0: [mem 0x00000000bdbff000-0x00000000beffefff]
[    0.071691]   node   0: [mem 0x0000000100000000-0x0000000c3f2fffff]
[    0.071698] Initmem setup node 0 [mem 0x0000000000001000-0x0000000c3f2fffff]
[    0.071704] On node 0, zone DMA: 1 pages in unavailable ranges
[    0.071722] On node 0, zone DMA: 96 pages in unavailable ranges
[    0.071858] On node 0, zone DMA32: 1025 pages in unavailable ranges
[    0.071873] On node 0, zone DMA32: 14 pages in unavailable ranges
[    0.075072] On node 0, zone DMA32: 32 pages in unavailable ranges
[    0.075202] On node 0, zone DMA32: 10948 pages in unavailable ranges
[    0.145002] On node 0, zone Normal: 4097 pages in unavailable ranges
[    0.145037] On node 0, zone Normal: 3328 pages in unavailable ranges
[    0.146328] ACPI: PM-Timer IO Port: 0x808
[    0.146374] IOAPIC[0]: apic_id 33, version 17, address 0xfec00000, GSI 0-23
[    0.146398] IOAPIC[1]: apic_id 34, version 17, address 0xfec01000, GSI 24-55
[    0.146402] ACPI: INT_SRC_OVR (bus 0 bus_irq 0 global_irq 2 dfl dfl)
[    0.146405] ACPI: INT_SRC_OVR (bus 0 bus_irq 9 global_irq 9 low level)
[    0.146410] ACPI: Using ACPI (MADT) for SMP configuration information
[    0.146419] CPU topo: Max. logical packages:   2
[    0.146421] CPU topo: Max. logical nodes:      1
[    0.146424] CPU topo: Num. nodes per package:  1
[    0.146430] CPU topo: Max. logical dies:       2
[    0.146433] CPU topo: Max. dies per package:   1
[    0.146444] CPU topo: Max. threads per core:   1
[    0.146447] CPU topo: Num. cores per package:    16
[    0.146449] CPU topo: Num. threads per package:  16
[    0.146452] CPU topo: Allowing 32 present CPUs plus 0 hotplug CPUs
[    0.146478] PM: hibernation: Registered nosave memory: [mem 0x00000000-0x00000fff]
[    0.146481] PM: hibernation: Registered nosave memory: [mem 0x000a0000-0x000fffff]
[    0.146485] PM: hibernation: Registered nosave memory: [mem 0x09bff000-0x09ffffff]
[    0.146488] PM: hibernation: Registered nosave memory: [mem 0x0a200000-0x0a20dfff]
[    0.146491] PM: hibernation: Registered nosave memory: [mem 0x0b000000-0x0b01ffff]
[    0.146494] PM: hibernation: Registered nosave memory: [mem 0xbb13b000-0xbdbfefff]
[    0.146497] PM: hibernation: Registered nosave memory: [mem 0xbefff000-0xffffffff]
[    0.146501] [mem 0xc0000000-0xefffffff] available for PCI devices
[    0.146507] Booting kernel on Xen PVH
[    0.146510] Xen version: 4.21.1
[    0.146514] clocksource: refined-jiffies: mask: 0xffffffff max_cycles: 0xffffffff, max_idle_ns: 1910969940391419 ns
[    0.151561] setup_percpu: NR_CPUS:8192 nr_cpumask_bits:32 nr_cpu_ids:32 nr_node_ids:1
[    0.153193] percpu: Embedded 84 pages/cpu s221184 r8192 d114688 u524288
[    0.153201] pcpu-alloc: s221184 r8192 d114688 u524288 alloc=1*2097152
[    0.153205] pcpu-alloc: [0] 00 01 02 03 [0] 04 05 06 07 
[    0.153212] pcpu-alloc: [0] 08 09 10 11 [0] 12 13 14 15 
[    0.153219] pcpu-alloc: [0] 16 17 18 19 [0] 20 21 22 23 
[    0.153225] pcpu-alloc: [0] 24 25 26 27 [0] 28 29 30 31 
[    0.153252] xen: PV spinlocks enabled
[    0.153256] PV qspinlock hash table entries: 256 (order: 0, 4096 bytes, linear)
[    0.153260] Kernel command line: placeholder root=UUID=5a7af636-54c3-4f76-a164-c1138de257ad ro rootflags=subvol=@ rhgb quiet console=hvc0 earlyprintk=xen loglevel=8 "dyndbg=file amd_node.c +p"
[    0.153350] Unknown kernel command line parameters "placeholder rhgb", will be passed to user space.
[    0.153368] random: crng init done
[    0.153371] printk: log buffer data + meta data: 262144 + 917504 = 1179648 bytes
[    0.159204] Dentry cache hash table entries: 8388608 (order: 14, 67108864 bytes, linear)
[    0.162209] Inode-cache hash table entries: 4194304 (order: 13, 33554432 bytes, linear)
[    0.162306] software IO TLB: area num 32.
[    0.173962] Fallback order for Node 0: 0 
[    0.173969] Built 1 zonelists, mobility grouping on.  Total pages: 12563371
[    0.173975] Policy zone: Normal
[    0.174203] mem auto-init: stack:all(zero), heap alloc:on, heap free:off
[    0.269440] SLUB: HWalign=64, Order=0-3, MinObjects=0, CPUs=32, Nodes=1
Poking KASLR using RDRAND RDTSC...
[    0.280270] ftrace: allocating 63414 entries in 248 pages
[    0.280275] ftrace: allocated 248 pages with 5 groups
[    0.280866] Dynamic Preempt: lazy
[    0.280976] rcu: Preemptible hierarchical RCU implementation.
[    0.280978] rcu: 	RCU event tracing is enabled.
[    0.280981] rcu: 	RCU restricting CPUs from NR_CPUS=8192 to nr_cpu_ids=32.
[    0.280984] 	Trampoline variant of Tasks RCU enabled.
[    0.280986] 	Rude variant of Tasks RCU enabled.
[    0.280988] 	Tracing variant of Tasks RCU enabled.
[    0.280990] rcu: RCU calculated value of scheduler-enlistment delay is 100 jiffies.
[    0.280993] rcu: Adjusting geometry for rcu_fanout_leaf=16, nr_cpu_ids=32
[    0.281011] RCU Tasks: Setting shift to 5 and lim to 1 rcu_task_cb_adjust=1 rcu_task_cpu_ids=32.
[    0.281015] RCU Tasks Rude: Setting shift to 5 and lim to 1 rcu_task_cb_adjust=1 rcu_task_cpu_ids=32.
[    0.281019] RCU Tasks Trace: Setting shift to 5 and lim to 1 rcu_task_cb_adjust=1 rcu_task_cpu_ids=32.
[    0.284778] Using NULL legacy PIC
[    0.284781] NR_IRQS: 524544, nr_irqs: 1224, preallocated irqs: 0
[    0.285120] xen:events: Using FIFO-based ABI
[    0.285131] xen:events: Xen HVM callback vector for event delivery is enabled
[    0.285177] rcu: srcu_init: Setting srcu_struct sizes based on contention.
[    0.285270] kfence: initialized - using 2097152 bytes for 255 objects at 0x(____ptrval____)-0x(____ptrval____)
[    0.285337] Console: colour dummy device 80x25
[    0.285342] printk: legacy console [tty0] enabled
[    0.285541] printk: legacy console [hvc0] enabled
[    0.285541] printk: legacy console [hvc0] enabled
[    0.285550] printk: legacy bootconsole [xenboot0] disabled
[    0.285550] printk: legacy bootconsole [xenboot0] disabled
[    0.285583] ACPI: Core revision 20250807
[    0.300833] Failed to register legacy timer interrupt
[    0.300840] APIC: Switch to symmetric I/O mode setup
[    0.301293] x2apic enabled
[    0.301817] APIC: Switched APIC routing to: physical x2apic
[    0.301895] clocksource: tsc-early: mask: 0xffffffffffffffff max_cycles: 0x30ead6a4c9c, max_idle_ns: 440795297796 ns
[    0.301912] Calibrating delay loop (skipped), value calculated using timer frequency.. 6787.28 BogoMIPS (lpj=3393640)
[    0.301985] x86/cpu: User Mode Instruction Prevention (UMIP) activated
[    0.302017] Last level iTLB entries: 4KB 512, 2MB 512, 4MB 256
[    0.302025] Last level dTLB entries: 4KB 2048, 2MB 2048, 4MB 1024, 1GB 0
[    0.302038] mitigations: Enabled attack vectors: user_kernel, user_user, guest_host, guest_guest, SMT mitigations: auto
[    0.302052] Speculative Store Bypass: Mitigation: Speculative Store Bypass disabled via prctl
[    0.302063] Transient Scheduler Attacks: Mitigation: Clear CPU buffers
[    0.302071] Spectre V2 : Mitigation: Retpolines
[    0.302077] Speculative Return Stack Overflow: Mitigation: Safe RET
[    0.302085] Spectre V1 : Mitigation: usercopy/swapgs barriers and __user pointer sanitization
[    0.302096] Spectre V2 : Spectre v2 / SpectreRSB: Filling RSB on context switch and VMEXIT
[    0.302105] Spectre V2 : Enabling Restricted Speculation for firmware calls
[    0.302113] Spectre V2 : mitigation: Enabling conditional Indirect Branch Prediction Barrier
[    0.302124] active return thunk: srso_alias_return_thunk
[    0.302146] x86/fpu: Supporting XSAVE feature 0x001: 'x87 floating point registers'
[    0.302155] x86/fpu: Supporting XSAVE feature 0x002: 'SSE registers'
[    0.302163] x86/fpu: Supporting XSAVE feature 0x004: 'AVX registers'
[    0.302170] x86/fpu: Supporting XSAVE feature 0x200: 'Protection Keys User registers'
[    0.302179] x86/fpu: xstate_offset[2]:  576, xstate_sizes[2]:  256
[    0.302187] x86/fpu: xstate_offset[9]:  832, xstate_sizes[9]:    8
[    0.302195] x86/fpu: Enabled xstate features 0x207, context size is 840 bytes, using 'compacted' format.
[    0.302910] Freeing SMP alternatives memory: 56K
[    0.302910] pid_max: default: 32768 minimum: 301
[    0.302910] Yama: becoming mindful.
[    0.302910] SELinux:  Initializing.
[    0.302910] LSM support for eBPF active
[    0.302910] landlock: Up and running.
[    0.302910] Mount-cache hash table entries: 131072 (order: 8, 1048576 bytes, linear)
[    0.302910] Mountpoint-cache hash table entries: 131072 (order: 8, 1048576 bytes, linear)
[    0.302910] clocksource: xen: mask: 0xffffffffffffffff max_cycles: 0x1cd42e4dffb, max_idle_ns: 881590591483 ns
[    0.302910] Xen: using vcpuop timer interface
[    0.302910] installing Xen timer for CPU 0
[    0.302910] smpboot: CPU0: AMD Ryzen 9 5950X 16-Core Processor (family: 0x19, model: 0x21, stepping: 0x2)
[    0.302910] cpu 0 spinlock event irq 28
[    0.302910] Performance Events: PMU not available due to virtualization, using software events only.
[    0.302910] signal: max sigframe size: 3376
[    0.302910] rcu: Hierarchical SRCU implementation.
[    0.302910] rcu: 	Max phase no-delay instances is 400.
[    0.302910] Timer migration: 2 hierarchy levels; 8 children per group; 2 crossnode level
[    0.359391] NMI watchdog: Perf NMI watchdog permanently disabled
[    0.359660] smp: Bringing up secondary CPUs ...
[    0.359824] installing Xen timer for CPU 1
[    0.359889] smpboot: x86: Booting SMP configuration:
[    0.359898] .... node  #0, CPUs:        #1
[    0.361128] installing Xen timer for CPU 2
[    0.361219]   #2
[    0.361608] installing Xen timer for CPU 3
[    0.361689]   #3
[    0.362112] installing Xen timer for CPU 4
[    0.362189]   #4
[    0.362581] installing Xen timer for CPU 5
[    0.362663]   #5
[    0.363109] installing Xen timer for CPU 6
[    0.363202]   #6
[    0.363612] installing Xen timer for CPU 7
[    0.363702]   #7
[    0.364123] installing Xen timer for CPU 8
[    0.364203]   #8
[    0.364545] installing Xen timer for CPU 9
[    0.364631]   #9
[    0.364997] installing Xen timer for CPU 10
[    0.365084]  #10
[    0.365451] installing Xen timer for CPU 11
[    0.365531]  #11
[    0.365955] installing Xen timer for CPU 12
[    0.366062]  #12
[    0.366407] installing Xen timer for CPU 13
[    0.366482]  #13
[    0.366832] installing Xen timer for CPU 14
[    0.366932]  #14
[    0.367308] installing Xen timer for CPU 15
[    0.367407]  #15
[    0.367802] installing Xen timer for CPU 16
[    0.367890]  #16
[    0.368283] installing Xen timer for CPU 17
[    0.368384]  #17
[    0.368846] installing Xen timer for CPU 18
[    0.368978]  #18
[    0.369408] installing Xen timer for CPU 19
[    0.369519]  #19
[    0.369991] installing Xen timer for CPU 20
[    0.370110]  #20
[    0.370551] installing Xen timer for CPU 21
[    0.370680]  #21
[    0.371143] installing Xen timer for CPU 22
[    0.371256]  #22
[    0.371695] installing Xen timer for CPU 23
[    0.371812]  #23
[    0.372261] installing Xen timer for CPU 24
[    0.372383]  #24
[    0.372818] installing Xen timer for CPU 25
[    0.372940]  #25
[    0.373402] installing Xen timer for CPU 26
[    0.373515]  #26
[    0.373950] installing Xen timer for CPU 27
[    0.374077]  #27
[    0.374519] installing Xen timer for CPU 28
[    0.374635]  #28
[    0.375078] installing Xen timer for CPU 29
[    0.375194]  #29
[    0.375586] installing Xen timer for CPU 30
[    0.375688]  #30
[    0.376132] installing Xen timer for CPU 31
[    0.376246]  #31
[    0.377089] cpu 1 spinlock event irq 153
[    0.378076] cpu 2 spinlock event irq 154
[    0.379031] cpu 3 spinlock event irq 155
[    0.380017] cpu 4 spinlock event irq 156
[    0.381042] cpu 5 spinlock event irq 157
[    0.382021] cpu 6 spinlock event irq 158
[    0.383039] cpu 7 spinlock event irq 159
[    0.384023] cpu 8 spinlock event irq 160
[    0.385038] cpu 9 spinlock event irq 161
[    0.386022] cpu 10 spinlock event irq 162
[    0.387040] cpu 11 spinlock event irq 163
[    0.388023] cpu 12 spinlock event irq 164
[    0.389025] cpu 13 spinlock event irq 165
[    0.390037] cpu 14 spinlock event irq 166
[    0.391026] cpu 15 spinlock event irq 167
[    0.392013] cpu 16 spinlock event irq 168
[    0.393005] cpu 17 spinlock event irq 169
[    0.394031] cpu 18 spinlock event irq 170
[    0.395005] cpu 19 spinlock event irq 171
[    0.396017] cpu 20 spinlock event irq 172
[    0.397005] cpu 21 spinlock event irq 173
[    0.398001] cpu 22 spinlock event irq 174
[    0.399005] cpu 23 spinlock event irq 175
[    0.400003] cpu 24 spinlock event irq 176
[    0.401003] cpu 25 spinlock event irq 177
[    0.402003] cpu 26 spinlock event irq 178
[    0.403003] cpu 27 spinlock event irq 179
[    0.404002] cpu 28 spinlock event irq 180
[    0.404993] cpu 29 spinlock event irq 181
[    0.406017] cpu 30 spinlock event irq 182
[    0.406993] cpu 31 spinlock event irq 183
[    0.407207] smp: Brought up 1 node, 32 CPUs
[    0.407220] smpboot: Total of 32 processors activated (217192.96 BogoMIPS)
[    0.408613] Memory: 36627636K/50253484K available (22589K kernel code, 4588K rwdata, 17848K rodata, 5196K init, 5796K bss, 13585756K reserved, 0K cma-reserved)
[    0.409528] devtmpfs: initialized
[    0.409599] x86/mm: Memory block size: 128MB
[    0.415459] ACPI: PM: Registering ACPI NVS region [mem 0x0a200000-0x0a20dfff] (57344 bytes)
[    0.415459] ACPI: PM: Registering ACPI NVS region [mem 0xbc989000-0xbd07cfff] (7290880 bytes)
[    0.415921] clocksource: jiffies: mask: 0xffffffff max_cycles: 0xffffffff, max_idle_ns: 1911260446275000 ns
[    0.415972] posixtimers hash table entries: 16384 (order: 6, 262144 bytes, linear)
[    0.416023] futex hash table entries: 8192 (524288 bytes on 1 NUMA nodes, total 512 KiB, linear).
[    0.416270] PM: RTC time: 11:42:23, date: 2026-04-07
[    0.417104] NET: Registered PF_NETLINK/PF_ROUTE protocol family
[    0.417135] xen:grant_table: Grant tables using version 1 layout
[    0.417163] Grant table initialized
[    0.418162] DMA: preallocated 4096 KiB GFP_KERNEL pool for atomic allocations
[    0.418336] DMA: preallocated 4096 KiB GFP_KERNEL|GFP_DMA pool for atomic allocations
[    0.418516] DMA: preallocated 4096 KiB GFP_KERNEL|GFP_DMA32 pool for atomic allocations
[    0.418539] audit: initializing netlink subsys (disabled)
[    0.418583] audit: type=2000 audit(1775562143.863:1): state=initialized audit_enabled=0 res=1
[    0.418583] thermal_sys: Registered thermal governor 'fair_share'
[    0.418583] thermal_sys: Registered thermal governor 'bang_bang'
[    0.418583] thermal_sys: Registered thermal governor 'step_wise'
[    0.418583] thermal_sys: Registered thermal governor 'user_space'
[    0.420010] acpiphp: ACPI Hot Plug PCI Controller Driver version: 0.5
[    0.420517] PCI: ECAM [mem 0xf0000000-0xf7ffffff] (base 0xf0000000) for domain 0000 [bus 00-7f]
[    0.420543] PCI: Using configuration type 1 for base access
[    0.420736] kprobes: kprobe jump-optimization is enabled. All kprobes are optimized if possible.
[    0.421021] HugeTLB: registered 1.00 GiB page size, pre-allocated 0 pages
[    0.421034] HugeTLB: 16380 KiB vmemmap can be freed for a 1.00 GiB page
[    0.421045] HugeTLB: registered 2.00 MiB page size, pre-allocated 0 pages
[    0.421055] HugeTLB: 28 KiB vmemmap can be freed for a 2.00 MiB page
[    0.435710] raid6: skipped pq benchmark and selected avx2x4
[    0.435722] raid6: using avx2x2 recovery algorithm
[    0.435806] fbcon: Taking over console
[    0.435847] ACPI: Added _OSI(Module Device)
[    0.435855] ACPI: Added _OSI(Processor Device)
[    0.435864] ACPI: Added _OSI(Processor Aggregator Device)
[    0.465547] ACPI: 8 ACPI AML tables successfully acquired and loaded
[    0.468587] ACPI: [Firmware Bug]: BIOS _OSI(Linux) query ignored
[    0.476748] ACPI: Interpreter enabled
[    0.476776] ACPI: PM: (supports S0 S3 S4 S5)
[    0.476786] ACPI: Using IOAPIC for interrupt routing
[    0.478526] PCI: Using host bridge windows from ACPI; if necessary, use "pci=nocrs" and report a bug
[    0.478541] PCI: Ignoring E820 reservations for host bridge windows
[    0.479180] ACPI: Enabled 3 GPEs in block 00 to 1F
[    0.499677] ACPI: PCI Root Bridge [PCI0] (domain 0000 [bus 00-ff])
[    0.499694] acpi PNP0A08:00: _OSC: OS supports [ExtendedConfig ASPM ClockPM Segments MSI EDR HPX-Type3]
[    0.499860] acpi PNP0A08:00: _OSC: platform does not support [SHPCHotplug LTR DPC]
[    0.500156] acpi PNP0A08:00: _OSC: OS now controls [PCIeHotplug PME AER PCIeCapability]
[    0.500180] acpi PNP0A08:00: [Firmware Info]: ECAM [mem 0xf0000000-0xf7ffffff] for domain 0000 [bus 00-7f] only partially covers this bridge
[    0.500927] PCI host bridge to bus 0000:00
[    0.500954] pci_bus 0000:00: root bus resource [io  0x0000-0x03af window]
[    0.500966] pci_bus 0000:00: root bus resource [io  0x03e0-0x0cf7 window]
[    0.500977] pci_bus 0000:00: root bus resource [io  0x03b0-0x03df window]
[    0.500988] pci_bus 0000:00: root bus resource [io  0x0d00-0xffff window]
[    0.500999] pci_bus 0000:00: root bus resource [mem 0x000a0000-0x000dffff window]
[    0.501013] pci_bus 0000:00: root bus resource [mem 0xc0000000-0xfcffffff window]
[    0.501026] pci_bus 0000:00: root bus resource [mem 0xc40000000-0xffffffffff window]
[    0.501039] pci_bus 0000:00: root bus resource [bus 00-ff]
[    0.501081] pci 0000:00:00.0: [1022:1480] type 00 class 0x060000 conventional PCI endpoint
[    0.501399] pci 0000:00:00.2: [1022:1481] type 00 class 0x080600 conventional PCI endpoint
[    0.501681] pci 0000:00:01.0: [1022:1482] type 00 class 0x060000 conventional PCI endpoint
[    0.501909] pci 0000:00:01.1: [1022:1483] type 01 class 0x060400 PCIe Root Port
[    0.501975] pci 0000:00:01.1: PCI bridge to [bus 01]
[    0.502000] pci 0000:00:01.1:   bridge window [mem 0xfcc00000-0xfccfffff]
[    0.502219] pci 0000:00:01.1: PME# supported from D0 D3hot D3cold
[    0.502623] pci 0000:00:01.3: [1022:1483] type 01 class 0x060400 PCIe Root Port
[    0.502690] pci 0000:00:01.3: PCI bridge to [bus 02-06]
[    0.502710] pci 0000:00:01.3:   bridge window [io  0xe000-0xffff]
[    0.502725] pci 0000:00:01.3:   bridge window [mem 0xfc500000-0xfc8fffff]
[    0.502777] pci 0000:00:01.3: enabling Extended Tags
[    0.502950] pci 0000:00:01.3: PME# supported from D0 D3hot D3cold
[    0.503357] pci 0000:00:02.0: [1022:1482] type 00 class 0x060000 conventional PCI endpoint
[    0.503577] pci 0000:00:03.0: [1022:1482] type 00 class 0x060000 conventional PCI endpoint
[    0.503812] pci 0000:00:03.1: [1022:1483] type 01 class 0x060400 PCIe Root Port
[    0.503886] pci 0000:00:03.1: PCI bridge to [bus 07-0a]
[    0.503914] pci 0000:00:03.1:   bridge window [mem 0xfb000000-0xfc3fffff]
[    0.503947] pci 0000:00:03.1:   bridge window [mem 0xf800000000-0xfc007fffff 64bit pref]
[    0.504165] pci 0000:00:03.1: PME# supported from D0 D3hot D3cold
[    0.504567] pci 0000:00:04.0: [1022:1482] type 00 class 0x060000 conventional PCI endpoint
[    0.504785] pci 0000:00:05.0: [1022:1482] type 00 class 0x060000 conventional PCI endpoint
[    0.505009] pci 0000:00:07.0: [1022:1482] type 00 class 0x060000 conventional PCI endpoint
[    0.505243] pci 0000:00:07.1: [1022:1484] type 01 class 0x060400 PCIe Root Port
[    0.505310] pci 0000:00:07.1: PCI bridge to [bus 0b]
[    0.505372] pci 0000:00:07.1: enabling Extended Tags
[    0.505551] pci 0000:00:07.1: PME# supported from D0 D3hot D3cold
[    0.505939] pci 0000:00:08.0: [1022:1482] type 00 class 0x060000 conventional PCI endpoint
[    0.506169] pci 0000:00:08.1: [1022:1484] type 01 class 0x060400 PCIe Root Port
[    0.506235] pci 0000:00:08.1: PCI bridge to [bus 0c]
[    0.506259] pci 0000:00:08.1:   bridge window [mem 0xfc900000-0xfcbfffff]
[    0.506308] pci 0000:00:08.1: enabling Extended Tags
[    0.506493] pci 0000:00:08.1: PME# supported from D0 D3hot D3cold
[    0.506909] pci 0000:00:14.0: [1022:790b] type 00 class 0x0c0500 conventional PCI endpoint
[    0.507154] pci 0000:00:14.3: [1022:790e] type 00 class 0x060100 conventional PCI endpoint
[    0.507428] pci 0000:00:18.0: [1022:1440] type 00 class 0x060000 conventional PCI endpoint
[    0.507606] pci 0000:00:18.1: [1022:1441] type 00 class 0x060000 conventional PCI endpoint
[    0.507782] pci 0000:00:18.2: [1022:1442] type 00 class 0x060000 conventional PCI endpoint
[    0.508000] pci 0000:00:18.3: [1022:1443] type 00 class 0x060000 conventional PCI endpoint
[    0.508181] pci 0000:00:18.4: [1022:1444] type 00 class 0x060000 conventional PCI endpoint
[    0.508362] pci 0000:00:18.5: [1022:1445] type 00 class 0x060000 conventional PCI endpoint
[    0.508538] pci 0000:00:18.6: [1022:1446] type 00 class 0x060000 conventional PCI endpoint
[    0.508715] pci 0000:00:18.7: [1022:1447] type 00 class 0x060000 conventional PCI endpoint
[    0.509189] pci 0000:01:00.0: [1987:5012] type 00 class 0x010802 PCIe Endpoint
[    0.509919] pci 0000:01:00.0: BAR 0 [mem 0xfcc00000-0xfcc03fff 64bit]
[    0.511735] pci 0000:00:01.1: PCI bridge to [bus 01]
[    0.511910] pci 0000:02:00.0: [1022:43d5] type 00 class 0x0c0330 PCIe Legacy Endpoint
[    0.512102] pci 0000:02:00.0: BAR 0 [mem 0xfc8a0000-0xfc8a7fff 64bit]
[    0.512141] pci 0000:02:00.0: enabling Extended Tags
[    0.512301] pci 0000:02:00.0: PME# supported from D3hot D3cold
[    0.512670] pci 0000:02:00.1: [1022:43c8] type 00 class 0x010601 PCIe Legacy Endpoint
[    0.513061] pci 0000:02:00.1: BAR 5 [mem 0xfc880000-0xfc89ffff]
[    0.513075] pci 0000:02:00.1: ROM [mem 0xfc800000-0xfc87ffff pref]
[    0.513101] pci 0000:02:00.1: enabling Extended Tags
[    0.513216] pci 0000:02:00.1: PME# supported from D3hot D3cold
[    0.513476] pci 0000:02:00.2: [1022:43c6] type 01 class 0x060400 PCIe Switch Upstream Port
[    0.513554] pci 0000:02:00.2: PCI bridge to [bus 03-06]
[    0.513575] pci 0000:02:00.2:   bridge window [io  0xe000-0xffff]
[    0.513591] pci 0000:02:00.2:   bridge window [mem 0xfc500000-0xfc7fffff]
[    0.513652] pci 0000:02:00.2: enabling Extended Tags
[    0.513768] pci 0000:02:00.2: PME# supported from D3hot D3cold
[    0.514074] pci 0000:00:01.3: PCI bridge to [bus 02-06]
[    0.514295] pci 0000:03:00.0: [1022:43c7] type 01 class 0x060400 PCIe Switch Downstream Port
[    0.514376] pci 0000:03:00.0: PCI bridge to [bus 04]
[    0.514456] pci 0000:03:00.0: enabling Extended Tags
[    0.514605] pci 0000:03:00.0: PME# supported from D3hot D3cold
[    0.514900] pci 0000:03:01.0: [1022:43c7] type 01 class 0x060400 PCIe Switch Downstream Port
[    0.514983] pci 0000:03:01.0: PCI bridge to [bus 05]
[    0.515006] pci 0000:03:01.0:   bridge window [io  0xf000-0xffff]
[    0.515022] pci 0000:03:01.0:   bridge window [mem 0xfc700000-0xfc7fffff]
[    0.515088] pci 0000:03:01.0: enabling Extended Tags
[    0.515240] pci 0000:03:01.0: PME# supported from D3hot D3cold
[    0.515537] pci 0000:03:04.0: [1022:43c7] type 01 class 0x060400 PCIe Switch Downstream Port
[    0.515617] pci 0000:03:04.0: PCI bridge to [bus 06]
[    0.515638] pci 0000:03:04.0:   bridge window [io  0xe000-0xefff]
[    0.515654] pci 0000:03:04.0:   bridge window [mem 0xfc500000-0xfc6fffff]
[    0.515719] pci 0000:03:04.0: enabling Extended Tags
[    0.515867] pci 0000:03:04.0: PME# supported from D3hot D3cold
[    0.516190] pci 0000:02:00.2: PCI bridge to [bus 03-06]
[    0.516310] pci 0000:03:00.0: PCI bridge to [bus 04]
[    0.516483] pci 0000:05:00.0: [10ec:8168] type 00 class 0x020000 PCIe Endpoint
[    0.516699] pci 0000:05:00.0: BAR 0 [io  0xf000-0xf0ff]
[    0.516725] pci 0000:05:00.0: BAR 2 [mem 0xfc704000-0xfc704fff 64bit]
[    0.516747] pci 0000:05:00.0: BAR 4 [mem 0xfc700000-0xfc703fff 64bit]
[    0.517016] pci 0000:05:00.0: supports D1 D2
[    0.517029] pci 0000:05:00.0: PME# supported from D0 D1 D2 D3hot D3cold
[    0.517537] pci 0000:03:01.0: PCI bridge to [bus 05]
[    0.517708] pci 0000:06:00.0: [1000:0087] type 00 class 0x010700 PCIe Endpoint
[    0.517828] pci 0000:06:00.0: BAR 0 [io  0xe000-0xe0ff]
[    0.517844] pci 0000:06:00.0: BAR 1 [mem 0xfc640000-0xfc64ffff 64bit]
[    0.517861] pci 0000:06:00.0: BAR 3 [mem 0xfc600000-0xfc63ffff 64bit]
[    0.517878] pci 0000:06:00.0: ROM [mem 0xfc500000-0xfc5fffff pref]
[    0.517906] pci 0000:06:00.0: enabling Extended Tags
[    0.518114] pci 0000:06:00.0: supports D1 D2
[    0.518302] pci 0000:06:00.0: 16.000 Gb/s available PCIe bandwidth, limited by 5.0 GT/s PCIe x4 link at 0000:03:04.0 (capable of 63.008 Gb/s with 8.0 GT/s PCIe x8 link)
[    0.518473] pci 0000:03:04.0: PCI bridge to [bus 06]
[    0.518897] pci 0000:07:00.0: [8086:e2ff] type 01 class 0x060400 PCIe Switch Upstream Port
[    0.519217] pci 0000:07:00.0: BAR 0 [mem 0xfc00000000-0xfc007fffff 64bit pref]
[    0.519243] pci 0000:07:00.0: PCI bridge to [bus 08-0a]
[    0.519278] pci 0000:07:00.0:   bridge window [mem 0xfb000000-0xfc3fffff]
[    0.519321] pci 0000:07:00.0:   bridge window [mem 0xf800000000-0xfbffffffff 64bit pref]
[    0.519927] pci 0000:07:00.0: PME# supported from D0 D3hot D3cold
[    0.520607] pci 0000:07:00.0: 63.008 Gb/s available PCIe bandwidth, limited by 8.0 GT/s PCIe x8 link at 0000:00:03.1 (capable of 252.056 Gb/s with 32.0 GT/s PCIe x8 link)
[    0.520986] pci 0000:00:03.1: PCI bridge to [bus 07-0a]
[    0.521316] pci 0000:08:01.0: [8086:e2f0] type 01 class 0x060400 PCIe Switch Downstream Port
[    0.521405] pci 0000:08:01.0: PCI bridge to [bus 09]
[    0.521429] pci 0000:08:01.0:   bridge window [mem 0xfb000000-0xfc1fffff]
[    0.521465] pci 0000:08:01.0:   bridge window [mem 0xf800000000-0xfbffffffff 64bit pref]
[    0.521630] pci 0000:08:01.0: PME# supported from D0 D3hot D3cold
[    0.521976] pci 0000:08:02.0: [8086:e2f1] type 01 class 0x060400 PCIe Switch Downstream Port
[    0.522073] pci 0000:08:02.0: PCI bridge to [bus 0a]
[    0.522099] pci 0000:08:02.0:   bridge window [mem 0xfc300000-0xfc3fffff]
[    0.522307] pci 0000:08:02.0: PME# supported from D0 D3hot D3cold
[    0.522787] pci 0000:07:00.0: PCI bridge to [bus 08-0a]
[    0.522956] pci 0000:09:00.0: [8086:e212] type 00 class 0x030000 PCIe Endpoint
[    0.596925] pci 0000:09:00.0: BAR 0 [mem 0xfb000000-0xfbffffff 64bit]
[    0.596945] pci 0000:09:00.0: BAR 2 [mem 0xf800000000-0xfbffffffff 64bit pref]
[    0.596967] pci 0000:09:00.0: ROM [mem 0xfc000000-0xfc1fffff pref]
[    0.597358] pci 0000:09:00.0: PME# supported from D0 D3hot
[    0.599097] pci 0000:08:01.0: PCI bridge to [bus 09]
[    0.599278] pci 0000:0a:00.0: [8086:e2f7] type 00 class 0x040300 PCIe Endpoint
[    0.599422] pci 0000:0a:00.0: BAR 0 [mem 0xfc300000-0xfc303fff 64bit]
[    0.599509] pci 0000:0a:00.0: PME# supported from D3hot D3cold
[    0.600261] pci 0000:08:02.0: PCI bridge to [bus 0a]
[    0.600499] pci 0000:0b:00.0: [1022:148a] type 00 class 0x130000 PCIe Endpoint
[    0.600607] pci 0000:0b:00.0: enabling Extended Tags
[    0.601172] pci 0000:00:07.1: PCI bridge to [bus 0b]
[    0.601336] pci 0000:0c:00.0: [1022:1485] type 00 class 0x130000 PCIe Endpoint
[    0.601445] pci 0000:0c:00.0: enabling Extended Tags
[    0.601954] pci 0000:0c:00.1: [1022:1486] type 00 class 0x108000 PCIe Endpoint
[    0.602047] pci 0000:0c:00.1: BAR 2 [mem 0xfca00000-0xfcafffff]
[    0.602064] pci 0000:0c:00.1: BAR 5 [mem 0xfcb08000-0xfcb09fff]
[    0.602090] pci 0000:0c:00.1: enabling Extended Tags
[    0.602541] pci 0000:0c:00.3: [1022:149c] type 00 class 0x0c0330 PCIe Endpoint
[    0.605219] pci 0000:0c:00.3: BAR 0 [mem 0xfc900000-0xfc9fffff 64bit]
[    0.605254] pci 0000:0c:00.3: enabling Extended Tags
[    0.605409] pci 0000:0c:00.3: PME# supported from D0 D3hot D3cold
[    0.605754] pci 0000:0c:00.4: [1022:1487] type 00 class 0x040300 PCIe Endpoint
[    0.605842] pci 0000:0c:00.4: BAR 0 [mem 0xfcb00000-0xfcb07fff]
[    0.605879] pci 0000:0c:00.4: enabling Extended Tags
[    0.606023] pci 0000:0c:00.4: PME# supported from D0 D3hot D3cold
[    0.606383] pci 0000:00:08.1: PCI bridge to [bus 0c]
[    0.611478] ACPI: PCI: Interrupt link LNKA configured for IRQ 0
[    0.611575] ACPI: PCI: Interrupt link LNKB configured for IRQ 0
[    0.611657] ACPI: PCI: Interrupt link LNKC configured for IRQ 0
[    0.611753] ACPI: PCI: Interrupt link LNKD configured for IRQ 0
[    0.611844] ACPI: PCI: Interrupt link LNKE configured for IRQ 0
[    0.611930] ACPI: PCI: Interrupt link LNKF configured for IRQ 0
[    0.612006] ACPI: PCI: Interrupt link LNKG configured for IRQ 0
[    0.612081] ACPI: PCI: Interrupt link LNKH configured for IRQ 0
[    0.613305] xen:balloon: Initialising balloon driver
[    0.613928] iommu: Default domain type: Translated
[    0.613930] iommu: DMA domain TLB invalidation policy: lazy mode
[    0.615031] SCSI subsystem initialized
[    0.615053] libata version 3.00 loaded.
[    0.615053] ACPI: bus type USB registered
[    0.615053] usbcore: registered new interface driver usbfs
[    0.615053] usbcore: registered new interface driver hub
[    0.615053] usbcore: registered new device driver usb
[    0.615053] pps_core: LinuxPPS API ver. 1 registered
[    0.615053] pps_core: Software ver. 5.3.6 - Copyright 2005-2007 Rodolfo Giometti <giometti@linux.it>
[    0.615053] PTP clock support registered
[    0.615053] EDAC MC: Ver: 3.0.0
[    0.615958] efivars: Registered efivars operations
[    0.616210] NetLabel: Initializing
[    0.616220] NetLabel:  domain hash size = 128
[    0.616229] NetLabel:  protocols = UNLABELED CIPSOv4 CALIPSO
[    0.616258] NetLabel:  unlabeled traffic allowed by default
[    0.616270] mctp: management component transport protocol core
[    0.616281] NET: Registered PF_MCTP protocol family
[    0.616302] PCI: Using ACPI for IRQ routing
[    0.625913] PCI: pci_cache_line_size set to 64 bytes
[    0.626741] e820: reserve RAM buffer [mem 0x09bff000-0x0bffffff]
[    0.626752] e820: reserve RAM buffer [mem 0x0a200000-0x0bffffff]
[    0.626762] e820: reserve RAM buffer [mem 0x0b000000-0x0bffffff]
[    0.626772] e820: reserve RAM buffer [mem 0xbb13b000-0xbbffffff]
[    0.626782] e820: reserve RAM buffer [mem 0xbefffd00-0xbfffffff]
[    0.626792] e820: reserve RAM buffer [mem 0xc3f300000-0xc3fffffff]
[    0.627097] pci 0000:09:00.0: vgaarb: setting as boot VGA device
[    0.627138] pci 0000:09:00.0: vgaarb: bridge control possible
[    0.627149] pci 0000:09:00.0: vgaarb: VGA device added: decodes=io+mem,owns=none,locks=none
[    0.627162] vgaarb: loaded
[    0.627162] pci 0000:00:00.0: Reserving PCI config space
[    0.627162] Found 1 AMD root devices
[    0.627162] Oops: divide error: 0000 [#1] SMP NOPTI
[    0.627162] CPU: 5 UID: 0 PID: 1 Comm: swapper/0 Not tainted 6.19.10-200.fc43.x86_64 #1 PREEMPT(lazy) 
[    0.627162] Hardware name: To Be Filled By O.E.M. B450M Steel Legend/B450M Steel Legend, BIOS P10.43 06/25/2025
[    0.627162] RIP: 0010:amd_smn_init+0x1ea/0x280
[    0.627162] Code: c7 c7 13 de 16 83 e8 85 7c 44 fd eb 6f 48 89 df e8 0b 18 ca fc 48 89 c3 48 85 c0 0f 84 5b ff ff ff 44 89 e8 31 d2 45 8d 7d 01 <66> f7 f5 66 85 d2 75 42 eb 02 eb 2c 41 0f b7 ce 48 8d b3 c8 00 00
[    0.627162] RSP: 0018:ffffc9000004fe28 EFLAGS: 00010246
[    0.627162] RAX: 0000000000000000 RBX: ffff888103fd9000 RCX: 0000000000000005
[    0.627162] RDX: 0000000000000000 RSI: ffff888103fd9000 RDI: 0000000000000000
[    0.627164] RBP: 0000000000000000 R08: 0000000000000282 R09: ffff8881040a2f90
[    0.627176] R10: ffffc9000004fe28 R11: ffffffff84a4c880 R12: 0000000000000002
[    0.627188] R13: 0000000000000000 R14: 0000000000000000 R15: 0000000000000001
[    0.627202] FS:  0000000000000000(0000) GS:ffff88898e66f000(0000) knlGS:0000000000000000
[    0.627215] CS:  0010 DS: 0000 ES: 0000 CR0: 0000000080050033
[    0.627227] CR2: 0000000000000000 CR3: 0000000003a2e000 CR4: 0000000000750ef0
[    0.627241] PKRU: 55555554
[    0.627248] Call Trace:
[    0.627254]  <TASK>
[    0.627261]  ? __pfx_amd_smn_init+0x10/0x10
[    0.627269]  do_one_initcall+0x5b/0x300
[    0.627281]  do_initcalls+0x148/0x170
[    0.627291]  kernel_init_freeable+0xf9/0x140
[    0.627301]  ? __pfx_kernel_init+0x10/0x10
[    0.627311]  kernel_init+0x1a/0x140
[    0.627319]  ret_from_fork+0x130/0x1a0
[    0.627328]  ? __pfx_kernel_init+0x10/0x10
[    0.627338]  ret_from_fork_asm+0x1a/0x30
[    0.627349]  </TASK>
[    0.627355] Modules linked in:
[    0.627364] ---[ end trace 0000000000000000 ]---
[    0.627373] RIP: 0010:amd_smn_init+0x1ea/0x280
[    0.627382] Code: c7 c7 13 de 16 83 e8 85 7c 44 fd eb 6f 48 89 df e8 0b 18 ca fc 48 89 c3 48 85 c0 0f 84 5b ff ff ff 44 89 e8 31 d2 45 8d 7d 01 <66> f7 f5 66 85 d2 75 42 eb 02 eb 2c 41 0f b7 ce 48 8d b3 c8 00 00
[    0.627407] RSP: 0018:ffffc9000004fe28 EFLAGS: 00010246
[    0.627417] RAX: 0000000000000000 RBX: ffff888103fd9000 RCX: 0000000000000005
[    0.627428] RDX: 0000000000000000 RSI: ffff888103fd9000 RDI: 0000000000000000
[    0.627440] RBP: 0000000000000000 R08: 0000000000000282 R09: ffff8881040a2f90
[    0.627452] R10: ffffc9000004fe28 R11: ffffffff84a4c880 R12: 0000000000000002
[    0.627463] R13: 0000000000000000 R14: 0000000000000000 R15: 0000000000000001
[    0.627476] FS:  0000000000000000(0000) GS:ffff88898e66f000(0000) knlGS:0000000000000000
[    0.627488] CS:  0010 DS: 0000 ES: 0000 CR0: 0000000080050033
[    0.627498] CR2: 0000000000000000 CR3: 0000000003a2e000 CR4: 0000000000750ef0
[    0.627510] PKRU: 55555554
[    0.627517] Kernel panic - not syncing: Attempted to kill init! exitcode=0x0000000b
(XEN) Hardware Dom0 crashed: rebooting machine in 5 seconds.
(XEN) Resetting with ACPI MEMORY or I/O RESET_REG.

--nextPart24824718.vTCxPXJkl2--





From xen-devel-bounces@lists.xenproject.org Tue Apr 07 15:28:05 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 07 Apr 2026 15:28:05 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1275135.1561095 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wA8LV-000725-84; Tue, 07 Apr 2026 15:28:05 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1275135.1561095; Tue, 07 Apr 2026 15:28: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 1wA8LV-00071y-4G; Tue, 07 Apr 2026 15:28:05 +0000
Received: by outflank-mailman (input) for mailman id 1275135;
 Tue, 07 Apr 2026 15:28:03 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <jbeulich@suse.com>) id 1wA8LT-00071q-JZ
 for xen-devel@lists.xenproject.org; Tue, 07 Apr 2026 15:28:03 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wA8LS-00Gkd9-Vq
 for xen-devel@lists.xenproject.org; Tue, 07 Apr 2026 17:28:02 +0200
Received: from [10.42.69.1] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <jbeulich@suse.com>)
 id 69d5227b-e002-0a2a0a5209dd-0a2a45018380-16
 for <xen-devel@lists.xenproject.org>; Tue, 07 Apr 2026 17:28:02 +0200
Received: from [209.85.128.50] (helo=mail-wm1-f50.google.com)
 by tlsNG-d62444.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.0)
 (envelope-from <jbeulich@suse.com>)
 id 69d52282-6fc9-0a2a45010019-d1558032dd36-3
 for <xen-devel@lists.xenproject.org>; Tue, 07 Apr 2026 17:28:02 +0200
Received: by mail-wm1-f50.google.com with SMTP id
 5b1f17b1804b1-4887f49ec5aso70240885e9.1
 for <xen-devel@lists.xenproject.org>; Tue, 07 Apr 2026 08:28:02 -0700 (PDT)
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-4889f6843dfsm364034885e9.12.2026.04.07.08.28.01
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Tue, 07 Apr 2026 08:28:01 -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=google header.d=suse.com header.i="@suse.com" header.h="Content-Transfer-Encoding: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=1775575682; x=1776180482; darn=lists.xenproject.org;
        h=content-transfer-encoding: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;
        bh=TLQeQCqk51d66U/YlA7wjNVsLDdjqDkwNcQb+H0Wc2s=;
        b=CKkOnM8v5XkBxNyyINwho+xL6YynMqguKRqr9jzojsSaQU1ITZpsJ1Vi+Bn7L2t8BQ
         tQ/7ZaU0l7859HPe5BaVh2drZlS6LidAzdhBDM+bhXKJns3a1V7qAcUOV1q4WhWSGrJl
         Bz6GsefRSUnDJsZ7QajAVB9LMj/8tUgTDhXhqOCuhEko3B1Q3TBL2NufPthuaa9omxfp
         /hrIeTh1ppx52ZMRwcdwwDWq9IwjbwCfXgKCRxqwymlPmsZe+lv0UxhRQWhRcNATsAzn
         jejxvOnsmXupCOyk3KY8sFCCqhgsVWi2uL/OG1W6peU4841apxpUCQTQ5WqGhe6ni1Kc
         C/hQ==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20251104; t=1775575682; x=1776180482;
        h=content-transfer-encoding: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;
        bh=TLQeQCqk51d66U/YlA7wjNVsLDdjqDkwNcQb+H0Wc2s=;
        b=ozP0ADABwkWA5ypWEbxAsX9eqjj74dKyLsU2p0aNVNr0ZMRjTeqNzQazQDHDFf9iSq
         Aw1OMd6FACwhhWIKgcxWccvgimhfmT8Q9cxVAdnVX5rZolgGE7A3FEBDxA3+2Fa89zZh
         4Y10X6NlUDB7cOhhubMrNJfD831on9DxUboebVYTDbRXHgRhfehnn90jMGUNHgpFp8Sa
         gXvAqwwo7wBKzikaDUK5F3cw/AZ1i0dvbX/nAiAGsTdJDc+gHW6TyY18F+K/2yAZpZMJ
         cnyz/Vgidf0BD2WaO/0LnR2ZzAjHSJ0j35vlpN8mdCgOkJYDjbE22ouW5iTXuKxCET49
         6OTw==
X-Forwarded-Encrypted: i=1; AJvYcCVQRd+xoeR2Tw5uwDkpk6HBops/LA5IjGJDr+ECrmBkDonqjjEOo4DlkJa8GoTUcCXV/+Swpx0WqmM=@lists.xenproject.org
X-Gm-Message-State: AOJu0Yw6OlaCsu0LbCYudgtQ1zXTLeZtZJxdqH0yXRpFv/VfNTfc77rV
	8l5+6K58kAVyhKhQuRqVo62jfE9M/JHsKYZBfKIt1A+2i7Zs/KJ6bxuNGfIZR5x34A==
X-Gm-Gg: AeBDietSrKPmaAmCxNaarI79uHYS7Pu6ldUI90UP/vJl/N8BQWqXJUeF4U3DyjurEfA
	zDIFJyDpUKcBwD5DHezS9GWmBpmpgpuWNslEpUfFocJF9kgD2wH/WlZlpPploUu6dmsJqnTSAAg
	F2nynqtA3cHZgwkcuv1/B3yCvT8oes3NBk+3th/1Tc9lv2pdBKwYt2LN9dASHuiReVJWC0tZtjy
	+T2iRlEKuNkowUqxyafJcwK6hpAgkZgktC2udn+2BW/qCSIEAoJga0pQQghQBF3/TFs05rk6wOt
	i9rkGndM7qjTWTk0+quGaFpO42Xv1uAkEmPctRl1RXlRAhj8ocgzTwc7d2UtPRonRzd4Ptet3J9
	klYrsNkCoNs5eFhE72EL1qC50WHbDthZLUoTy/RFXK6UWjCYOT1AHDNV8XgAptclGGuzqui0sbb
	oTG+UOziKoCfX+rc3cE0YdwLCfzp5CbvFvdGHR9SywfOQbj/m4+5u9We5+VtizZRuoeEKVckfor
	tlXg1hD6h2xiU0=
X-Received: by 2002:a05:600c:1553:b0:488:acbc:b2e with SMTP id 5b1f17b1804b1-488acbc0ca8mr125122075e9.17.1775575682233;
        Tue, 07 Apr 2026 08:28:02 -0700 (PDT)
Message-ID: <7411dd6c-5790-479a-8c13-51c3cd2e72d5@suse.com>
Date: Tue, 7 Apr 2026 17:28:06 +0200
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH] x86/HPET: channel handling in hpet_broadcast_resume()
To: Teddy Astie <teddy.astie@vates.tech>
Cc: Andrew Cooper <andrew.cooper3@citrix.com>,
 =?UTF-8?Q?Roger_Pau_Monn=C3=A9?= <roger.pau@citrix.com>,
 Marek Marczykowski <marmarek@invisiblethingslab.com>,
 xen-devel@lists.xenproject.org
References: <a77822d8-08f4-4c4f-b291-cc44a213cf9f@suse.com>
 <f1d850c9-e544-49a7-922a-dedce7b8c306@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: <f1d850c9-e544-49a7-922a-dedce7b8c306@vates.tech>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
X-purgate-ID: tlsNG-d62444/1775575682-BCB64185-4B92CA64/0/0
X-purgate-type: clean
X-purgate-size: 2228

On 07.04.2026 16:28, Teddy Astie wrote:
> Le 07/04/2026 à 15:35, Jan Beulich a écrit :
>> The per-channel ENABLE bit is to solely be driven by hpet_enable_channel()
>> and hpet_msi_{,un}mask(). It doesn't need setting immediately. Except for
>> the (possible) channel put in legacy mode we don't do so during boot
>> either.
>>
>> Instead reset ->arch.cpu_mask, to avoid msi_compose_msg() yielding an
>> all-zero message (when the passed in CPU mask has no online CPUs). Nothing
>> would later call msi_compose_msg() / hpet_msi_write(), and hence nothing
>> would later produce a well-formed message template in
>> hpet_events[].msi.msg.
>>
>> Fixes: 15aa6c67486c ("amd iommu: use base platform MSI implementation")
>> Reported-by: Marek Marczykowski-Górecki <marmarek@invisiblethingslab.com>
>> Signed-off-by: Jan Beulich <jbeulich@suse.com>
>> Tested-by: Marek Marczykowski-Górecki <marmarek@invisiblethingslab.com>
>> ---
>> As to the Fixes: tag: The issue for the HPET resume case is the
>> cpumask_intersects(desc->arch.cpu_mask, &cpu_online_map) check in
>> msi_compose_msg(). The earlier cpumask_empty() wasn't a problem, as
>> cpu_mask_to_apicid() returning a bogus (offline) value didn't have any bad
>> effect: Before use, a valid destination would have been put in place, but
>> other parts of .msg were properly set up. Furthermore we also didn't clear
>> the entire message prior to that change.
>>
>> Many thanks got to Marek for tirelessly trying out various debugging
>> suggestions.
>>
>> --- a/xen/arch/x86/hpet.c
>> +++ b/xen/arch/x86/hpet.c
>> @@ -685,12 +685,18 @@ void hpet_broadcast_resume(void)
>>       for ( i = 0; i < n; i++ )
>>       {
>>           if ( hpet_events[i].msi.irq >= 0 )
>> +        {
>> +            struct irq_desc *desc = irq_to_desc(hpet_events[i].msi.irq);
>> +
>> +            cpumask_copy(desc->arch.cpu_mask, cpumask_of(smp_processor_id()));
>> +
>>               __hpet_setup_msi_irq(irq_to_desc(hpet_events[i].msi.irq));
> 
> We can directly reuse "desc" here since irq_to_desc(...) isn't supposed 
> to change value with cpumask_copy().
> 
> i.e `__hpet_setup_msi_irq(desc);`

Oh, indeed - how did I not spot this?

Jan


From xen-devel-bounces@lists.xenproject.org Tue Apr 07 16:00:42 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 07 Apr 2026 16:00:42 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1275148.1561108 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wA8qx-0004N0-N6; Tue, 07 Apr 2026 16:00:35 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1275148.1561108; Tue, 07 Apr 2026 16:00: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 1wA8qx-0004Mt-KD; Tue, 07 Apr 2026 16:00:35 +0000
Received: by outflank-mailman (input) for mailman id 1275148;
 Tue, 07 Apr 2026 16:00:33 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <bounce-md_30504962.69d52a1e.v1-a08d790daf4144f5afd24c13c8ce5860@bounce.vates.tech>)
 id 1wA8qv-0004Mn-CS
 for xen-devel@lists.xenproject.org; Tue, 07 Apr 2026 16:00:33 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wA8qu-004wDb-MZ
 for xen-devel@lists.xenproject.org; Tue, 07 Apr 2026 18:00:32 +0200
Received: from [10.42.69.4] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1) (envelope-from
 <bounce-md_30504962.69d52a1e.v1-a08d790daf4144f5afd24c13c8ce5860@bounce.vates.tech>)
 id 69d52a1d-e002-0a2a0a5209dd-0a2a45049306-8
 for <xen-devel@lists.xenproject.org>; Tue, 07 Apr 2026 18:00:32 +0200
Received: from [198.2.136.16] (helo=mail136-16.atl41.mandrillapp.com)
 by tlsNG-ebf023.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.0)
 (envelope-from
 <bounce-md_30504962.69d52a1e.v1-a08d790daf4144f5afd24c13c8ce5860@bounce.vates.tech>)
 id 69d52a1f-bb33-0a2a45040019-c602881072b5-3
 for <xen-devel@lists.xenproject.org>; Tue, 07 Apr 2026 18:00:32 +0200
Received: from pmta11.mandrill.prod.atl01.rsglab.com (localhost [127.0.0.1])
 by mail136-16.atl41.mandrillapp.com (Mailchimp) with ESMTP id
 4fqrWf66W0z8XRqbL
 for <xen-devel@lists.xenproject.org>; Tue,  7 Apr 2026 16:00:30 +0000 (GMT)
Received: from [37.26.189.201] by mandrillapp.com id
 a08d790daf4144f5afd24c13c8ce5860; Tue, 07 Apr 2026 16:00: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=mte1 header.d=mandrillapp.com header.i="@mandrillapp.com" header.h="From:Subject:Message-Id:To:Cc:References:In-Reply-To:Feedback-ID:Date:MIME-Version:Content-Type:Content-Transfer-Encoding"; dkim=pass header.s=mte1 header.d=vates.tech header.i="teddy.astie@vates.tech" header.h="From:Subject:Message-Id:To:Cc:References:In-Reply-To:Feedback-ID:Date:MIME-Version:Content-Type:Content-Transfer-Encoding"
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=mandrillapp.com;
	s=mte1; t=1775577630; x=1775847630;
	bh=Dstru+kHoZmtS5qezTht3r8KRsk+jJpHtfrwwofsbNk=;
	h=From:Subject:Message-Id:To:Cc:References:In-Reply-To:Feedback-ID:
	 Date:MIME-Version:Content-Type:Content-Transfer-Encoding:CC:Date:
	 Subject:From;
	b=Gix4KMYJ41zY2aQC3rgRV2t9YRPtOS6NlN6981dZByX3DoT+y++kJTfbqHxfXE3za
	 1iMtSObOWx6smp2Gx2q7h797FCdNCuTHCqt1iNd5QcS2RcUeUw2+DFIuBWLFTlKM5f
	 GiToabz9+zDAl9q9iHh6/edHSQVvvL3t+69mQ9DdhW9/1SeN5pH6WECXa+MK8kAlgr
	 kKVxrXteyYH592SZ/zujf3igy4rcCISbLxB/tr4phSIMAyb09XD69sbvZSsdfbHK5b
	 aW59mJwf/HhzptGAE38qWxxkW+Mp+KTgKEgtLPHWTpK0LRhs/52HpQIi+7eWm97vJF
	 7cLAKrsxObUQA==
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=vates.tech; s=mte1;
	t=1775577630; x=1775838130; i=teddy.astie@vates.tech;
	bh=Dstru+kHoZmtS5qezTht3r8KRsk+jJpHtfrwwofsbNk=;
	h=From:Subject:Message-Id:To:Cc:References:In-Reply-To:Feedback-ID:
	 Date:MIME-Version:Content-Type:Content-Transfer-Encoding:CC:Date:
	 Subject:From;
	b=i7RSvmCglU0uYfR+41mqWWXTB0AVb39e+HpO2a9+h2SNTBjJGKWPGi/6H2Bn/9I8z
	 l0nhS2f1tuOWrVShpRWwgMxjAZxLQc+fcsszJ1ztnYtVDyZflTpvSMFMlSPpOEZ6QQ
	 ZcmBl6lPcodmZfij9Opd5TcvYb1fqoL7b0EFYbilozvq6l2dFuaG3f2mh4IyDTNSzc
	 VV4KlUpA+ybUMlla0pK+QK51LKJh2hEXdz9BdIyBmD6UycKyLrP7B9aHSCYIV2Kgda
	 /wFzGVRvSGpia19hXFBIr9BIHzRZw+pVJ73KksBzJpjJAm5qLuNAZIYf+/I93RvPXq
	 DVFla4nbdI7Eg==
From: "Teddy Astie" <teddy.astie@vates.tech>
Subject: =?utf-8?Q?Re:=20[PATCH=20v2]=20x86/emul:=20Remove=20fallback=20path=20from=20SWAPGS?=
X-Bm-Disclaimer: Yes
X-Bm-Milter-Handled: 4ffbd6c1-ee69-4e1b-aabd-f977039bd3e2
X-Bm-Transport-Timestamp: 1775577629235
Message-Id: <e9056cab-09a8-4874-bcb6-5b39091722cc@vates.tech>
To: "Andrew Cooper" <andrew.cooper3@citrix.com>, Xen-devel <xen-devel@lists.xenproject.org>
Cc: "Jan Beulich" <JBeulich@suse.com>, "=?utf-8?Q?Roger=20Pau=20Monn=C3=A9?=" <roger.pau@citrix.com>
References: <20260407142351.73049-1-andrew.cooper3@citrix.com>
In-Reply-To: <20260407142351.73049-1-andrew.cooper3@citrix.com>
X-Native-Encoded: 1
X-Report-Abuse: =?UTF-8?Q?Please=20forward=20a=20copy=20of=20this=20message,=20including=20all=20headers,=20to=20abuse@mandrill.com.=20You=20can=20also=20report=20abuse=20here:=20https://mandrillapp.com/contact/abuse=3Fid=3D30504962.a08d790daf4144f5afd24c13c8ce5860?=
X-Mandrill-User: md_30504962
Feedback-ID: 30504962:30504962.20260407:md
Date: Tue, 07 Apr 2026 16:00:30 +0000
MIME-Version: 1.0
Content-Type: text/plain; charset=utf-8
Content-Transfer-Encoding: quoted-printable
X-purgate-ID: tlsNG-ebf023/1775577632-B3B3051B-5D34BB8B/0/0
X-purgate-type: clean
X-purgate-size: 3876

Le 07/04/2026 =C3=A0 16:27, Andrew Cooper a =C3=A9crit=C2=A0:
> In real hardware, accesses to the registers cannot fail.  The error paths=
 are
> just an artefact of the hook functions needing to return something.
> 
> The best effort unwind is also something that doesn't exist in real hardw=
are,
> and makes the logic more complicated to follow.  Instead, use an
> ASSERT_UNREACHABLE() with a fallback of injecting #DF.  Hitting this path=
 is
> an error in Xen.
> 
> While adjusting, remove {read,write}_segment() and use {read,write}_msr()=
 to
> access MSR_GS_BASE.  There's no need to access the other parts of the GS
> segment, and this is less work behind the scenes.
> 
> Signed-off-by: Andrew Cooper <andrew.cooper3@citrix.com>
> ---
> CC: Jan Beulich <JBeulich@suse.com>
> CC: Roger Pau Monn=C3=A9 <roger.pau@citrix.com>
> 
> v2:
>   * Retain x86_emul_reset_event()
>   * Pass an error code for #DF
>   * Drop goto done now that generate_exception() is used
>   * Use 2x{read,write}_msr()
> 
> Tested using LKGS's extention of the test emulator for SWAPGS.
> ---
>   xen/arch/x86/x86_emulate/0f01.c | 28 +++++++++++++++-------------
>   1 file changed, 15 insertions(+), 13 deletions(-)
> 
> diff --git a/xen/arch/x86/x86_emulate/0f01.c b/xen/arch/x86/x86_emulate/0=
f01.c
> index 6c10979dd650..54bd6faf0f2c 100644
> --- a/xen/arch/x86/x86_emulate/0f01.c
> +++ b/xen/arch/x86/x86_emulate/0f01.c
> @@ -189,22 +189,24 @@ int x86emul_0f01(struct x86_emulate_state *s,
>           generate_exception_if(!mode_ring0(), X86_EXC_GP, 0);
>           fail_if(!ops->read_segment || !ops->read_msr ||
>                   !ops->write_segment || !ops->write_msr);

Do we still need checks for ops->{read,write}_segment if we're not using 
them anymore ?

> -        if ( (rc =3D ops->read_segment(x86_seg_gs, &sreg,
> -                                     ctxt)) !=3D X86EMUL_OKAY ||
> -             (rc =3D ops->read_msr(MSR_SHADOW_GS_BASE, &msr_val,
> +        if ( (rc =3D ops->read_msr(MSR_GS_BASE, &sreg.base,
>                                    ctxt)) !=3D X86EMUL_OKAY ||
> -             (rc =3D ops->write_msr(MSR_SHADOW_GS_BASE, sreg.base,
> -                                  ctxt, false)) !=3D X86EMUL_OKAY )
> +             (rc =3D ops->read_msr(MSR_SHADOW_GS_BASE, &msr_val,
> +                                 ctxt)) !=3D X86EMUL_OKAY )
>               goto done;
> -        sreg.base =3D msr_val;
> -        if ( (rc =3D ops->write_segment(x86_seg_gs, &sreg,
> -                                      ctxt)) !=3D X86EMUL_OKAY )
> +        if ( (rc =3D ops->write_msr(MSR_SHADOW_GS_BASE, sreg.base,
> +                                  ctxt, false)) !=3D X86EMUL_OKAY ||
> +             (rc =3D ops->write_msr(MSR_GS_BASE, msr_val,
> +                                  ctxt, false)) !=3D X86EMUL_OKAY )
>           {
> -            /* Best effort unwind (i.e. no real error checking). */
> -            if ( ops->write_msr(MSR_SHADOW_GS_BASE, msr_val,
> -                                ctxt, false) =3D=3D X86EMUL_EXCEPTION )
> -                x86_emul_reset_event(ctxt);
> -            goto done;
> +            /*
> +             * In real hardware, access to the registers cannot fail.  I=
t is
> +             * an error in Xen if the writes fail given that both MSRs h=
ave
> +             * equivalent checks.
> +             */
> +            ASSERT_UNREACHABLE();
> +            x86_emul_reset_event(ctxt);
> +            generate_exception(X86_EXC_DF, 0);
>           }
>           break;
>   

The rest looks good to me (with or without ops->{read,write}_segment 
fail_if() change).

Reviewed-by: Teddy Astie <teddy.astie@vates.tech>

Teddy


--
Teddy Astie | Vates XCP-ng Developer

XCP-ng & Xen Orchestra - Vates solutions

web: https://vates.tech




From xen-devel-bounces@lists.xenproject.org Tue Apr 07 16:10:30 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 07 Apr 2026 16:10:30 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1275156.1561116 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wA90U-00061s-IZ; Tue, 07 Apr 2026 16:10:26 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1275156.1561116; Tue, 07 Apr 2026 16:10: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 1wA90U-00061l-G4; Tue, 07 Apr 2026 16:10:26 +0000
Received: by outflank-mailman (input) for mailman id 1275156;
 Tue, 07 Apr 2026 16:10:25 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <jbeulich@suse.com>) id 1wA90T-00061f-7b
 for xen-devel@lists.xenproject.org; Tue, 07 Apr 2026 16:10:25 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wA90Q-002irY-KR
 for xen-devel@lists.xenproject.org; Tue, 07 Apr 2026 18:10:24 +0200
Received: from [10.42.69.4] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <jbeulich@suse.com>)
 id 69d52c56-5cb7-0a2a0a5109dd-0a2a4504c234-40
 for <xen-devel@lists.xenproject.org>; Tue, 07 Apr 2026 18:10:24 +0200
Received: from [209.85.221.50] (helo=mail-wr1-f50.google.com)
 by tlsNG-ebf023.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.0)
 (envelope-from <jbeulich@suse.com>)
 id 69d52c6f-bb33-0a2a45040019-d155dd32f1bf-3
 for <xen-devel@lists.xenproject.org>; Tue, 07 Apr 2026 18:10:23 +0200
Received: by mail-wr1-f50.google.com with SMTP id
 ffacd0b85a97d-43cfb723698so4595299f8f.3
 for <xen-devel@lists.xenproject.org>; Tue, 07 Apr 2026 09:10:23 -0700 (PDT)
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-43d1e2c54bdsm52396105f8f.16.2026.04.07.09.10.22
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Tue, 07 Apr 2026 09:10:22 -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=google header.d=suse.com header.i="@suse.com" header.h="Content-Transfer-Encoding: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=1775578223; x=1776183023; darn=lists.xenproject.org;
        h=content-transfer-encoding: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;
        bh=czWUKTTv0MMX+KvuawR0HjkQgAxvRnKoeBlTr8fkjFk=;
        b=Ib2550MfstsNG0mbZF2PE+QG0AdropMLDc6DBzph3bK1PfH1Uf/8hdvkhdLUovXSGk
         xBdgapBN8fGqlD8DWvGJ5PfY/p+Tdy1brhn00IUxgKOG51cTgi8jx9HB9ydGYbZ4xA7T
         6NyPMoNePUTjr5BsBhmZmzl0kqhEhL1t/9r3oiYcLOyQto6bVKnaZ0Aif/eUsU28f1aP
         wdRnTim7JA9hKaWb3e8/43/dPPjw7z+UnM1bJA68bNSBXtWxlwjbebZI5+qHtU2zVJNh
         HWTmmDhfFXQihtdXv2stexMpBh+bIHn3HEZyhTzKPTXcf/OmPAVpVJUzbFzrtCvpTpQE
         jVWQ==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20251104; t=1775578223; x=1776183023;
        h=content-transfer-encoding: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;
        bh=czWUKTTv0MMX+KvuawR0HjkQgAxvRnKoeBlTr8fkjFk=;
        b=nE+pwfuo2mLkkicBOO8qwOIijUzY6oEs8TO5d8EnVY47uKAGTuu2kEuG9/tnnM+BUr
         +bX2oFsqlLz5tASYQQ9+aqdr/ripy7z83bjmiuXJYZfhsrPja+NnvAY2XDvCRFRD2/R9
         kHj1yl2rVObiH1mhCt0incFLZhlovU3cBIX0X+wCX6/yEpd0C/9PmiTNO+IZYwEtzG7H
         Z13QCmHm/wLWTQiWYXEkLe4s4O8Ab37D5SLRhK/mLi+9j7u8Bgka7z5DwXkEQ1AqU650
         siEg4Y5psOmtDizxI+l+wGvOaApDx34eA4sVySGpanrwDl/3Y7asXd9mikwYPWACoGsX
         AGkQ==
X-Forwarded-Encrypted: i=1; AJvYcCXUdrVilFyse8lHnB8elVX0do5Xhq/ozpXe3w6YqcIXMscJ6t2zGEZSVMyCjmWAtio7C5Inf6dJAWo=@lists.xenproject.org
X-Gm-Message-State: AOJu0YxRa0Rww/+ucxLw3Lzq2xlx/KLVNzbgw8zmieGaUjXlEFoOT8fm
	G8KU26hDUJwwbJvPQnftaZUfjdPjmRWX/6HP+qNyT7VBbNJ+y1KAfIgByqUY4CKj4w==
X-Gm-Gg: AeBDievaCTMan+00QD+ztv3kxnl3OQ5t2dV+CveDJCoWMCIF93XqSLXV6FNAMj7JZU6
	0o+xTZ1gxrcbeIa7omqeAla6GHiI6uneohIaM81KZW5R8Nhb64pSmG8m90RJAp0MMsWiRTX4DGa
	c2U+sn4/g5v3a/dsmioMLSCeeZDiz9x1j6zcD/82OLJoCFvlCS6wnaF00D0i38AZH0cOUkEGc6i
	Avkh+PLJ27frWu0DeHOXXGuDpxO5GBZRbDdySfUIEQf12FrGGzbqcuYIym3OUzN13qpvbq9bWnj
	IWo1XBOGuXzGhBBcv93pyOlm/cg/M5ErG7YsS724c/hxZJVJ2BsUAt9aPNiNYtR26MtPERU6KJ4
	M2n1CerGBnw4ndM4wBMYxT9adcK/7w4m4ydJIQpD11sxCyU54697/97vUw5Xd+m6LW15WCOyvY1
	/bjKULjJ4oj7nL32SxJD34RTwIjZW1tyRCA1gaYB8vhShUe+UTdK5O/WHxzMoxnha66c3SOIKbv
	1FeQn0nuBvikIY=
X-Received: by 2002:a5d:5f42:0:b0:43d:1dfe:45b7 with SMTP id ffacd0b85a97d-43d292e2b48mr25013268f8f.46.1775578223393;
        Tue, 07 Apr 2026 09:10:23 -0700 (PDT)
Message-ID: <1c9ca75b-e118-45bf-832b-e6586b8ff5c2@suse.com>
Date: Tue, 7 Apr 2026 18:10:26 +0200
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH v2] x86/emul: Remove fallback path from SWAPGS
To: Teddy Astie <teddy.astie@vates.tech>
Cc: =?UTF-8?Q?Roger_Pau_Monn=C3=A9?= <roger.pau@citrix.com>,
 Andrew Cooper <andrew.cooper3@citrix.com>,
 Xen-devel <xen-devel@lists.xenproject.org>
References: <20260407142351.73049-1-andrew.cooper3@citrix.com>
 <e9056cab-09a8-4874-bcb6-5b39091722cc@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: <e9056cab-09a8-4874-bcb6-5b39091722cc@vates.tech>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
X-purgate-ID: tlsNG-ebf023/1775578224-B253B51B-161D86F4/0/0
X-purgate-type: clean
X-purgate-size: 2526

On 07.04.2026 18:00, Teddy Astie wrote:
> Le 07/04/2026 à 16:27, Andrew Cooper a écrit :
>> --- a/xen/arch/x86/x86_emulate/0f01.c
>> +++ b/xen/arch/x86/x86_emulate/0f01.c
>> @@ -189,22 +189,24 @@ int x86emul_0f01(struct x86_emulate_state *s,
>>           generate_exception_if(!mode_ring0(), X86_EXC_GP, 0);
>>           fail_if(!ops->read_segment || !ops->read_msr ||
>>                   !ops->write_segment || !ops->write_msr);
> 
> Do we still need checks for ops->{read,write}_segment if we're not using 
> them anymore ?
> 
>> -        if ( (rc = ops->read_segment(x86_seg_gs, &sreg,
>> -                                     ctxt)) != X86EMUL_OKAY ||
>> -             (rc = ops->read_msr(MSR_SHADOW_GS_BASE, &msr_val,
>> +        if ( (rc = ops->read_msr(MSR_GS_BASE, &sreg.base,
>>                                    ctxt)) != X86EMUL_OKAY ||
>> -             (rc = ops->write_msr(MSR_SHADOW_GS_BASE, sreg.base,
>> -                                  ctxt, false)) != X86EMUL_OKAY )
>> +             (rc = ops->read_msr(MSR_SHADOW_GS_BASE, &msr_val,
>> +                                 ctxt)) != X86EMUL_OKAY )
>>               goto done;
>> -        sreg.base = msr_val;
>> -        if ( (rc = ops->write_segment(x86_seg_gs, &sreg,
>> -                                      ctxt)) != X86EMUL_OKAY )
>> +        if ( (rc = ops->write_msr(MSR_SHADOW_GS_BASE, sreg.base,
>> +                                  ctxt, false)) != X86EMUL_OKAY ||
>> +             (rc = ops->write_msr(MSR_GS_BASE, msr_val,
>> +                                  ctxt, false)) != X86EMUL_OKAY )
>>           {
>> -            /* Best effort unwind (i.e. no real error checking). */
>> -            if ( ops->write_msr(MSR_SHADOW_GS_BASE, msr_val,
>> -                                ctxt, false) == X86EMUL_EXCEPTION )
>> -                x86_emul_reset_event(ctxt);
>> -            goto done;
>> +            /*
>> +             * In real hardware, access to the registers cannot fail.  It is
>> +             * an error in Xen if the writes fail given that both MSRs have
>> +             * equivalent checks.
>> +             */
>> +            ASSERT_UNREACHABLE();
>> +            x86_emul_reset_event(ctxt);
>> +            generate_exception(X86_EXC_DF, 0);
>>           }
>>           break;
>>   
> 
> The rest looks good to me (with or without ops->{read,write}_segment 
> fail_if() change).
As the patch was already committed, would you mind sending an incremental
patch?

Jan


From xen-devel-bounces@lists.xenproject.org Tue Apr 07 16:25:31 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 07 Apr 2026 16:25:31 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1275166.1561126 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wA9Eq-0007ky-RP; Tue, 07 Apr 2026 16:25:16 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1275166.1561126; Tue, 07 Apr 2026 16:25: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 1wA9Eq-0007kr-OT; Tue, 07 Apr 2026 16:25:16 +0000
Received: by outflank-mailman (input) for mailman id 1275166;
 Tue, 07 Apr 2026 16:25:15 +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 1wA9Ep-0007kj-5b
 for xen-devel@lists.xenproject.org; Tue, 07 Apr 2026 16:25:15 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wA9En-004zDx-Hc
 for xen-devel@lists.xenproject.org; Tue, 07 Apr 2026 18:25:13 +0200
Received: from [10.42.69.10] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <andrew.cooper@citrix.com>)
 id 69d52fdc-e002-0a2a0a5209dd-0a2a450ac31e-28
 for <xen-devel@lists.xenproject.org>; Tue, 07 Apr 2026 18:25:13 +0200
Received: from [40.107.208.35]
 (helo=PH0PR06CU001.outbound.protection.outlook.com)
 by tlsNG-4011c0.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.0)
 (envelope-from <andrew.cooper@citrix.com>)
 id 69d52fe7-ee98-0a2a450a0019-286bd023c176-3
 for <xen-devel@lists.xenproject.org>; Tue, 07 Apr 2026 18:25:13 +0200
Received: from CH8PR03MB8275.namprd03.prod.outlook.com (2603:10b6:610:2b9::7)
 by DS6PR03MB989138.namprd03.prod.outlook.com (2603:10b6:8:368::23)
 with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9745.38; Tue, 7 Apr
 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%6]) with mapi id 15.20.9769.018; Tue, 7 Apr 2026
 16:25: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=Sw3n8lrI6aKmaGbrirCUhckpE0MqOtT4Gi0BFdmWzlCrx9ipTgeCCsrhUK5tA98ilEu8Zhcz6IsLiqaCCBna3nEGpxT7CFDow6eyYRtsoAcrtONQLeJUEZw0J97MmFPVfmgZtW/oLmKkBC0k9+hYqVlInapkO/tbxccsYCPN4J+OBYdo8wbkDIFnW5OugMrLZ8mLGuTmdJ/bi8kd4qaFqPz7STARRgfo5FHP9GMMhN7VWhe0ntPWst3GigrR1XqhN+i9K1fThc4crket+9IvPlALbE39BJ0QY5OKXF41LHsDlr27qFlr3PAlfLsF35IRs2/tdsTb/5gxtsPJclHjDg==
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com;
 s=arcselector10001;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1;
 bh=EZ/xf5DEBUxtzmm1/FDTwz6hEYJLWEaVwzn+F+MvuQg=;
 b=J1jrNG5g1k3ZQV+FyrZ9NsOG6IvonWfxMBDhPaeyx1wbzbROQWvQZ95PhHHXBsD2PyN3WDOY6lilq5bAm9/+a85dRCOrTP6mA28zM7g52Kk/8ugRZtP83HZVY/KlZSu5czIAHXR5TZ4CDWu8rIz4mkwqpLuipc+tpt7OjlVOLI1+J1ihryyTwTiiJcm0wbQuURB88YmtDFvD0jnB+8Fv5QgkbdjWKSPDlf8DHWI0iyxEa3EMPPRBe2yep9DiIRKNaUzoJTI25SUjL1aOUzR7SUPRS0A+9xbmmZUo+6cyjoNXV626oM4B37on3GKqTvmidTJ3h33NStTWpiLW33uiBA==
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=EZ/xf5DEBUxtzmm1/FDTwz6hEYJLWEaVwzn+F+MvuQg=;
 b=NtKyKIrpv3W7Cesmj1VhlCvzHGifTc3lgK6NViqhK8xInoy7PoB006S+QWMIvhQdVYG3Te8Smukkq5xOKuGBjYwF8CHwyORefh+AJYgXg4j93TZhqQJWLTAtsJbHj20rP28keSEzAdHRr5qpH/bnSysTZCWnI8iwaMPgyKHmYBU=
Authentication-Results: dkim=none (message not signed)
 header.d=none;dmarc=none action=none header.from=citrix.com;
Message-ID: <1437d989-4b3c-42c4-8857-8f6f42288de1@citrix.com>
Date: Tue, 7 Apr 2026 17:25:05 +0100
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.pau@citrix.com>
Subject: Re: [PATCH v2] x86/emul: Remove fallback path from SWAPGS
To: Teddy Astie <teddy.astie@vates.tech>,
 Xen-devel <xen-devel@lists.xenproject.org>
References: <20260407142351.73049-1-andrew.cooper3@citrix.com>
 <e9056cab-09a8-4874-bcb6-5b39091722cc@vates.tech>
Content-Language: en-GB
From: Andrew Cooper <andrew.cooper3@citrix.com>
In-Reply-To: <e9056cab-09a8-4874-bcb6-5b39091722cc@vates.tech>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
X-ClientProxiedBy: LO3P265CA0032.GBRP265.PROD.OUTLOOK.COM
 (2603:10a6:600:387::15) To CH8PR03MB8275.namprd03.prod.outlook.com
 (2603:10b6:610:2b9::7)
MIME-Version: 1.0
X-MS-PublicTrafficType: Email
X-MS-TrafficTypeDiagnostic: CH8PR03MB8275:EE_|DS6PR03MB989138:EE_
X-MS-Office365-Filtering-Correlation-Id: b214fa24-6601-4d52-a168-08de94c23c8f
X-MS-Exchange-SenderADCheck: 1
X-MS-Exchange-AntiSpam-Relay: 0
X-Microsoft-Antispam:
	BCL:0;ARA:13230040|366016|1800799024|376014|22082099003|18002099003|56012099003;
X-Microsoft-Antispam-Message-Info:
	mJrZ01CqhXwmHc+roXy6XTKwHCVGLgWjsFxy1n7u32DHz7NQDrxvT5A0z2YDVY617RX7oWn197Avck4DKwhiqk70zuNo8zc4ULJoSjY3g+PY3KQMreY2I37dTMIhPas7MIBUmSTpLvJA4Xm5jcCd1QDYlDDqEAxRkNjiHYAH4Te7vDSZYPrbwhz2/ZCOKsV08w5rM/62BzpYjBZR0AE4XFB4mNm41FO6f7tFIQxQQKFkgTVhiRP8DWmEcj93knI8eXMoePhOlGn6ExcCAkkhIEFc6Q0hNjpo8lW5FOdYhfgb5IMVodNp8rqm7WwSu65eiSmwbz29PxtGq7NT6Klw7wvkSGEJEu7RdDg+w8FJBW3evSgw5LMeUkOWc3PrCibDUuBdWfwb39mcsIYxxBhQcPpvUqkR4zMoHOHYuouFBHF+D5bEAs90PHwEKAyD3uta6I7myX1UQ1OyWSiNX1NipKXi4H0mhQe3iO6rTYizovBW+ZJ/zFL3rqVY1AXGiDG+W3RZ4mvtFE3ecRrc4+ZNysWbdCPz8a4FyscaggSeqbopUq2HshDaHRIyz0s1oYTVBJk7uCIgFew4Ae3zcFSZXtfudHfa45nr2nlqW8sYgUD1tx4z+tA9cRVAIj88rT0G0A2LD3X04r/wMupueP9mlX26bnLe6kIUm2VcixoMUnAhVH4pCVRr0unGbnbDhRLHT3x1qFJm1wN4YX0hQUDI23TbpPIs6mIy28lrNWsvdGY=
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)(22082099003)(18002099003)(56012099003);DIR:OUT;SFP:1101;
X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1
X-MS-Exchange-AntiSpam-MessageData-0:
	=?utf-8?B?c0lEVlNZcjBZVmI2WmpxNklhaDQrWHlsWnl4SFhxY0d4U1d0T1F2U3BUSGRr?=
 =?utf-8?B?cnRKRHBtU0JmRGVJbFJTb0RmeloxTGVRZlNXZGZNbG8vRXFLTksxNkp6Ykdi?=
 =?utf-8?B?eXZpYllBTHBJdENyUmJMYmVXQXIyUU53TkRrMHEzaUJHZ0ZjM2thTkdtWDFw?=
 =?utf-8?B?OXQwM0FtZFN1SE5WVm5icm1kTnJENHNORnQzNzIrcEFpZGoyRUFpZXEycDdB?=
 =?utf-8?B?RHY3Zjh5K0xVclMxUnMrVkx4TUh1cEw3SFI5dlZiOFJ5Lyt5RXRHUytrOUpk?=
 =?utf-8?B?T2xMRFZoZEc1NkhQcmt5c3RQZGRvU3dLNy80NEs2dWFUc0VQb1ptU0ZEZEQr?=
 =?utf-8?B?VEVWcUwra2ovKzVabGl6N2JqblRkQmtNcllhd2cvWFk4RG80bVpJTzdkWDN6?=
 =?utf-8?B?S1U3eDcrckxJVzRVazl0eGsyaUc0MkVMelFwZlZGUjdreEt2U0ZVYlhUVVg4?=
 =?utf-8?B?SytneVhlcG5sRmFXWFVEdVlJYnJWOHArY1VBY3pMWVNWcE5CQnV4SjYwK1dQ?=
 =?utf-8?B?dS9yc1J6RDRBZnJZMFZMZ2FzeFlJRktvS1Q5MnlhbjV1cDdZOHhqWm1vRk5F?=
 =?utf-8?B?WmF3MzJDNDBPU2djMlNicTltd2tuUXF2aGg1bXJyWkh3TVMwNlNGOVZKUFIy?=
 =?utf-8?B?ak1BTmUwWTJ0N3pVVnVSK2Zlems2WFN6OGFFRE5mQVUvZmZQV2FqWmNDWXZX?=
 =?utf-8?B?UVRaZzhKc25DVC9ydDdZLzFFb3YxUk9HSEQyWUlHWGlIaC9UNkFwU0R2RU9r?=
 =?utf-8?B?SnVmUERVTTdVVFlrZzk3N3BrRFQwSEtHRWk4anJhaWxWaDBDNWJ3VzMwUm8z?=
 =?utf-8?B?Wk8zZW1RdG9nMkNqc00vc1JwNjY0cHFNMnJ4TENHd0JkVDlxUmpzYmhJTUo5?=
 =?utf-8?B?ZXdNUzdnTys5SjNRSVNjSzF0K293eWR2cklEU1ZKQVNQWmNJVFpsc1ZCT0hk?=
 =?utf-8?B?WW1UbEY2VldLNzA4L2ltdm9qaTRCN203ZXRhWEJBWXNGM2p0STlDaHZLQVhr?=
 =?utf-8?B?UGliYlhVdVo3allaZ0JuTHJxQm5qbFVNQ1k1OUlHYU5jamhjS0g4ZTVDcFJn?=
 =?utf-8?B?T0dYbDB1bU0zTU11YmZuNEtRREU5NVdPSzNXMS9hU3FtY05qQXRXdldrbllu?=
 =?utf-8?B?bnByZXFiLzhsdjduWmJkbnRsZ2ZaS29weU92SE5sa090VWdnSmJKN3ZXL2xs?=
 =?utf-8?B?dnhsUUxGNXdmbDdrcmwrSkxLRTFMZ0lFWTlpK3RkZlZWQ1MrMkJiYThLVlVl?=
 =?utf-8?B?anVUanJPZDN5NmFqeklRV0lxVHhzUXpKTGlLQ3VFSEJtc3BWVW16eUh5b2hI?=
 =?utf-8?B?Tzl0Rm9VaFJaV3FzVUNOUjl2c0pTeUJlaHdUSldGck91YWFTRVprL1JZRTV4?=
 =?utf-8?B?TUhxRHcwK3pWcGxoQTM2N2NmL0pQTWY0b2RVcnVDR3ZRV1dpUHc1ZEtrUDRK?=
 =?utf-8?B?SGtIKzRXUVJ5Y0h0QlFVa1pncEEvZHcvRFE4VTJnNXdpaGJkTElEbUtoT3Vy?=
 =?utf-8?B?UlN2d2g0UklnUmozNy8veVBYb2pqVzdpZ1VIYXhzL0tkRWNHWHIydVNRMFZR?=
 =?utf-8?B?UUx0bzhxNWNNZ0txOHMxOXljaHV2aTZuUVhBTEJQMTYyUG9oeDJURnppTjJz?=
 =?utf-8?B?c2VEVWlYZ1QxNFpwS3RNTVBmcDZPNDh3THFpd1ZMSHRsaXpPUkdzWVFzR1Ba?=
 =?utf-8?B?NGlKd1BzYVBXYThtMENaSVZLZmhyQjhjSTBGNlRhbUU1eGpaaExxY0psTmtn?=
 =?utf-8?B?em5MbnFjMnRGRTQvWkdQN3FIZEd1VmVKSTBMeFJSRS9oeUI5M2t2UmtqZXk1?=
 =?utf-8?B?VElQTGQ3NW9UR2NvS3VkakRQZE5Xam5WT1pJYVU3VkpHNUllRUo1WGVCblds?=
 =?utf-8?B?MkxUUEFtcVI4VEx6MnRFdEFab1kxUk1FUlh4Q0N1T0JvRFVxU0NVNzluY29I?=
 =?utf-8?B?YmlvZVRxaGpncUFLK2JwdGdXZkVOOVRzSS9pbG4ySmw3cHhIRFlBWmFlbVlB?=
 =?utf-8?B?YkQwQlNzaGJsaWdoRkZ6bE11bFIrbXdsWkg3S0ZMWnR2UE1SM1l2em9Rb2ww?=
 =?utf-8?B?QmprcWRtQUI4WDN1eUN4UW5vWGJ3Y1h3dUlFVEhXTDhQWUtmallBUStsNEYw?=
 =?utf-8?B?RWwySm9VSzlNQk1MQTZNa2w0MmYwOFR3TmNGYU5DdE1oVU5jdjNBRTR1TFox?=
 =?utf-8?B?aHpQMDZvOHVOcDE2cEpQREx4WmdqS1VKbGpIUFQwenBZWnFuSVhwK29sRWg2?=
 =?utf-8?B?alRzNkhXdUlLeGE2OVJtYS8xZDdYTEI1WnZaT0FidzYrazI0OENiTXVZRTVt?=
 =?utf-8?B?R3ZmMjJCd3ptU1BsTGR1MTFoV05pblYvQ2VKeVMzRDkxeFhzUlp5TTlYeFVh?=
 =?utf-8?Q?g2idtlRo8verxSuk=3D?=
X-OriginatorOrg: citrix.com
X-MS-Exchange-CrossTenant-Network-Message-Id: b214fa24-6601-4d52-a168-08de94c23c8f
X-MS-Exchange-CrossTenant-AuthSource: CH8PR03MB8275.namprd03.prod.outlook.com
X-MS-Exchange-CrossTenant-AuthAs: Internal
X-MS-Exchange-CrossTenant-OriginalArrivalTime: 07 Apr 2026 16:25:09.5569
 (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: 85I5AjJWlKcSm/UiVS5gbba42Z9gsZHiRrPsPwqWO/P6uI6pdddqqiCONsRXEZDoqCwLMs/FK/cj1sH/6OYMxCXSG5OHbDbmq6eKEIjfH0c=
X-MS-Exchange-Transport-CrossTenantHeadersStamped: DS6PR03MB989138
X-purgate-ID: tlsNG-4011c0/1775579113-0ED4A0B1-26249608/0/0
X-purgate-type: clean
X-purgate-size: 1981

On 07/04/2026 5:00 pm, Teddy Astie wrote:
> Le 07/04/2026 à 16:27, Andrew Cooper a écrit :
>> In real hardware, accesses to the registers cannot fail.  The error paths are
>> just an artefact of the hook functions needing to return something.
>>
>> The best effort unwind is also something that doesn't exist in real hardware,
>> and makes the logic more complicated to follow.  Instead, use an
>> ASSERT_UNREACHABLE() with a fallback of injecting #DF.  Hitting this path is
>> an error in Xen.
>>
>> While adjusting, remove {read,write}_segment() and use {read,write}_msr() to
>> access MSR_GS_BASE.  There's no need to access the other parts of the GS
>> segment, and this is less work behind the scenes.
>>
>> Signed-off-by: Andrew Cooper <andrew.cooper3@citrix.com>
>> ---
>> CC: Jan Beulich <JBeulich@suse.com>
>> CC: Roger Pau Monné <roger.pau@citrix.com>
>>
>> v2:
>>   * Retain x86_emul_reset_event()
>>   * Pass an error code for #DF
>>   * Drop goto done now that generate_exception() is used
>>   * Use 2x{read,write}_msr()
>>
>> Tested using LKGS's extention of the test emulator for SWAPGS.
>> ---
>>   xen/arch/x86/x86_emulate/0f01.c | 28 +++++++++++++++-------------
>>   1 file changed, 15 insertions(+), 13 deletions(-)
>>
>> diff --git a/xen/arch/x86/x86_emulate/0f01.c b/xen/arch/x86/x86_emulate/0f01.c
>> index 6c10979dd650..54bd6faf0f2c 100644
>> --- a/xen/arch/x86/x86_emulate/0f01.c
>> +++ b/xen/arch/x86/x86_emulate/0f01.c
>> @@ -189,22 +189,24 @@ int x86emul_0f01(struct x86_emulate_state *s,
>>           generate_exception_if(!mode_ring0(), X86_EXC_GP, 0);
>>           fail_if(!ops->read_segment || !ops->read_msr ||
>>                   !ops->write_segment || !ops->write_msr);
> Do we still need checks for ops->{read,write}_segment if we're not using 
> them anymore ?

Oh, yes they can be dropped now.

Please send a new patch.  I've already committed this to unblock some of
Jan's work.

~Andrew


From xen-devel-bounces@lists.xenproject.org Tue Apr 07 17:13:23 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 07 Apr 2026 17:13:23 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1275244.1561155 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wA9zI-0006sn-1z; Tue, 07 Apr 2026 17:13:16 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1275244.1561155; Tue, 07 Apr 2026 17: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 1wA9zH-0006sg-VP; Tue, 07 Apr 2026 17:13:15 +0000
Received: by outflank-mailman (input) for mailman id 1275244;
 Tue, 07 Apr 2026 17:13:15 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <marmarek@invisiblethingslab.com>) id 1wA9zG-0006sa-Rz
 for xen-devel@lists.xenproject.org; Tue, 07 Apr 2026 17:13:15 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wA9zG-003FRP-4G
 for xen-devel@lists.xenproject.org; Tue, 07 Apr 2026 19:13:14 +0200
Received: from [10.42.69.2] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <marmarek@invisiblethingslab.com>)
 id 69d53b0b-bab6-0a2a0a5309dd-0a2a45029b4e-32
 for <xen-devel@lists.xenproject.org>; Tue, 07 Apr 2026 19:13:14 +0200
Received: from [103.168.172.158] (helo=fhigh-a7-smtp.messagingengine.com)
 by tlsNG-720697.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.0)
 (envelope-from <marmarek@invisiblethingslab.com>)
 id 69d53b28-42fa-0a2a45020019-67a8ac9ecdc9-3
 for <xen-devel@lists.xenproject.org>; Tue, 07 Apr 2026 19:13:13 +0200
Received: from phl-compute-01.internal (phl-compute-01.internal [10.202.2.41])
 by mailfhigh.phl.internal (Postfix) with ESMTP id 82FC114000F2;
 Tue,  7 Apr 2026 13:13:12 -0400 (EDT)
Received: from phl-frontend-03 ([10.202.2.162])
 by phl-compute-01.internal (MEProxy); Tue, 07 Apr 2026 13:13:12 -0400
Received: by mail.messagingengine.com (Postfix) with ESMTPA; Tue,
 7 Apr 2026 13:13:11 -0400 (EDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@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=1775581992;
	 x=1775668392; bh=58Z2TUT11hf01tYwYOhIlXRYqnsG5VKeoOJMQ+AknOY=; b=
	qyTrZqR/IXzwMBLZVIkP/EOaCuIGG2vztOZY6YzTsI4kYYV0eiowIgEqrqZk0XI9
	AJGTzFfjuGAYj9rk0UCaW5Q49mrD3q1AUhA+VA4VOZDrcEiNb8jhFodi/ZPTEBKY
	ygpxeuTAAyMyPYV3tPOCZlQqKNblojCEFJNuE1QxWtWtT1ctYOB3GuxR48R1B2S4
	wCwo4eo6obUfWKxCuFYPIJQB2Vp1LMhpDEGT500OUck4dwvja42nWzBPPtmePEiW
	G4HR5kfv7ciyYu2f0R+RDbFJ1jm/HUPppCbAtx4cNxUatIfccDH5ONCpsL8wxmf4
	QSO4yoRI8lKH+GXl+3VddQ==
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=
	1775581992; x=1775668392; bh=58Z2TUT11hf01tYwYOhIlXRYqnsG5VKeoOJ
	MQ+AknOY=; b=uYmUpXgs/u8bUee7W/9r5S3tg2gs0mtkqYw2jeWctiwylDUX5dU
	h55V13mTbBwyY+G/e3ikNv9zDZDr32c6XrZLjsBCTlgjViG2Qpcnjqfwb0g+lI88
	bJiIV7YD5LAUjgnv0jCyzN/m60yQEoppCLaq/M7srdFufqpSGIZw9Z2CLTlJ6Yjf
	SMK6mIBPPK6E8FaY4kUvT4SJ3Rd2WLof0RArOa1vNe+jeD7MSBuBziOwRH7v9g16
	NZXXQhWyeqcKl8S3BfUqgMqnIPSHTIgLjg71XS3EAZuUza3rXdVGI42uZCLd1o/a
	TIMfKAYOsYgrjT+78SFPkLxUsd9OIl3QvNg==
X-ME-Sender: <xms:KDvVadZtPMc4LN6eXgBJldzFt0oN11CThdT05uGq2KNC8mqkj3gavw>
    <xme:KDvVaaanRM0UW7YMckORHJdtdPYMi1hV8A862qpbuFPlqgIUOchXqDdJtsM63ffy_
    aQDpSiRnor4PGHWxCIhbzgMg7xNmUaUk1sF-lCiqnJLGJEjbw>
X-ME-Received: <xmr:KDvVadl7K8o7K_KCHqkxgl-e0nC8bp9ApjWQyn5luj8iasBSDP3WXxxtyJIvi3ni9KCor7YO9fmGn5dw2WDWpLL5klSGnQhSp7k>
X-ME-Proxy-Cause: gggruggvucftvghtrhhoucdtuddrgeefhedrtddtgddvuddvvdcutefuodetggdotefrod
    ftvfcurfhrohhfihhlvgemucfhrghsthforghilhdpuffrtefokffrpgfnqfghnecuuegr
    ihhlohhuthemuceftddtnecusecvtfgvtghiphhivghnthhsucdlqddutddtmdenogfuuh
    hsphgvtghtffhomhgrihhnucdlgeelmdenucfjughrpeffhffvvefukfhfgggtuggjsehg
    tderredttdejnecuhfhrohhmpeforghrvghkucforghrtgiihihkohifshhkihdqifpkrh
    gvtghkihcuoehmrghrmhgrrhgvkhesihhnvhhishhisghlvghthhhinhhgshhlrggsrdgt
    ohhmqeenucggtffrrghtthgvrhhnpeefgeefheeiheduuefhtedvheeffeeuhfelieevte
    euhfdvudfgteetteekleekgfenucffohhmrghinhepghhoohhglhgvrdgtohhmnecuvehl
    uhhsthgvrhfuihiivgeptdenucfrrghrrghmpehmrghilhhfrhhomhepmhgrrhhmrghrvg
    hksehinhhvihhsihgslhgvthhhihhnghhslhgrsgdrtghomhdpnhgspghrtghpthhtohep
    vddpmhhouggvpehsmhhtphhouhhtpdhrtghpthhtoheptghougihrdiiuhhstghhlhgrgh
    esgigvnhhprhhojhgvtghtrdhorhhgpdhrtghpthhtohepgigvnhdquggvvhgvlheslhhi
    shhtshdrgigvnhhprhhojhgvtghtrdhorhhg
X-ME-Proxy: <xmx:KDvVaWz6rqdFuUuhyJWPD3EwtuR_Gqnvo2GKAjJVpftYsR5QG3TyGw>
    <xmx:KDvVabMl1Aci32V9B4fJqi_7PXO_Ruwsswt4eQONft_sfNe1PyhtYw>
    <xmx:KDvVaaTKzodLEZqnSg0p3flV7wQ2FKqzd_YMxPb1oVALgApV78ruhQ>
    <xmx:KDvVaZZS4H8XFq9ffnIpJ9MzN6MwJkVwbBVuBlL92_F68cR2MLLzFw>
    <xmx:KDvVacm2b-cJS4LqKD4uSuo48P6LIoSwdeIoOc37v45GDdHRMNkYNzgv>
Feedback-ID: i1568416f:Fastmail
Date: Tue, 7 Apr 2026 19:13:10 +0200
From: Marek =?utf-8?Q?Marczykowski-G=C3=B3recki?= <marmarek@invisiblethingslab.com>
To: Cody Zuschlag <cody.zuschlag@xenproject.org>
Cc: xen-devel@lists.xenproject.org
Subject: Re: [ANNOUNCE] Call for agenda items for April 9 Xen Community Call
 @ 15:00 UTC
Message-ID: <adU7J3fFYtZTexKp@mail-itl>
References: <CAJbE=KyqAjLWvjkfuxsCgM-xX8+HcYUdJwf-gfTKZUtGE50wSw@mail.gmail.com>
MIME-Version: 1.0
Content-Type: multipart/signed; micalg=pgp-sha256;
	protocol="application/pgp-signature"; boundary="Xmja7yza/4PH/AGb"
Content-Disposition: inline
In-Reply-To: <CAJbE=KyqAjLWvjkfuxsCgM-xX8+HcYUdJwf-gfTKZUtGE50wSw@mail.gmail.com>
X-purgate-ID: tlsNG-720697/1775581994-46D20CD1-497B3F5A/0/0
X-purgate-type: clean
X-purgate-size: 1473


--Xmja7yza/4PH/AGb
Content-Type: text/plain; protected-headers=v1; charset=utf-8
Content-Disposition: inline
Content-Transfer-Encoding: quoted-printable
Date: Tue, 7 Apr 2026 19:13:10 +0200
From: Marek =?utf-8?Q?Marczykowski-G=C3=B3recki?= <marmarek@invisiblethingslab.com>
To: Cody Zuschlag <cody.zuschlag@xenproject.org>
Cc: xen-devel@lists.xenproject.org
Subject: Re: [ANNOUNCE] Call for agenda items for April 9 Xen Community Call
 @ 15:00 UTC

On Mon, Apr 06, 2026 at 11:06:32AM +0200, Cody Zuschlag wrote:
> *Preparation:  *Please take a moment to review and update the agenda ahead
> of the call:
> =F0=9F=91=89 Agenda
> <https://docs.google.com/document/d/1kJmtG6RzNDzqgvLuOZK4JYrriFApdcpl69KH=
JWEPDKE/edit?usp=3Dsharing>

Agenda on google docs this time?

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

--Xmja7yza/4PH/AGb
Content-Type: application/pgp-signature; name=signature.asc

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

iQEzBAEBCAAdFiEEhrpukzGPukRmQqkK24/THMrX1ywFAmnVOyYACgkQ24/THMrX
1yxszQf+IYbTprONyaBHM0xdCs+8EeP7YSSPWHnX0e805PzqPs5uxnOkdxQG3FOo
EDM0qCg/natm1dUTftum6aWsIsWSnhwNF6wzV5+xPIrawc9UruCjQJ1DUxMD1xrm
9gbh0F204lT+ORf4SgZE7XwZId3QeSbMWMBKstsRcxJauhQEnpCeCEoKp2vIlCqg
XZTCeTAsI5wxAdY1NdS5kDpAX1uR+aQ+2Z4EFiv/UJMPgm2Vxgd5xewsQKteHnxv
ynKEDnML6J7D3KfsGRADUbueJ5a9WRmfzZPSOkfcPm+ekjUVF9mbyG/JLyhf6Jv6
g1pQpIRTlDePDpxCmTHalc9OcNgd7g==
=eZDJ
-----END PGP SIGNATURE-----

--Xmja7yza/4PH/AGb--


From xen-devel-bounces@lists.xenproject.org Tue Apr 07 20:02:22 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 07 Apr 2026 20:02:22 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1275321.1561180 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wACci-0003Bx-HX; Tue, 07 Apr 2026 20:02:08 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1275321.1561180; Tue, 07 Apr 2026 20:02: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 1wACci-0003Bp-DL; Tue, 07 Apr 2026 20:02:08 +0000
Received: by outflank-mailman (input) for mailman id 1275321;
 Tue, 07 Apr 2026 20:02:07 +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 1wACch-0003Bd-AE
 for xen-devel@lists.xenproject.org; Tue, 07 Apr 2026 20:02:07 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wACcf-003Ayn-4e
 for xen-devel@lists.xenproject.org; Tue, 07 Apr 2026 22:02:06 +0200
Received: from [10.42.69.10] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <Volodymyr_Babchuk@epam.com>)
 id 69d562b1-5cb7-0a2a0a5109dd-0a2a450ac446-46
 for <xen-devel@lists.xenproject.org>; Tue, 07 Apr 2026 22:02:06 +0200
Received: from [52.101.83.134]
 (helo=GVXPR05CU001.outbound.protection.outlook.com)
 by tlsNG-4011c0.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.0)
 (envelope-from <Volodymyr_Babchuk@epam.com>)
 id 69d562be-ee98-0a2a450a0019-3465538629ac-3
 for <xen-devel@lists.xenproject.org>; Tue, 07 Apr 2026 22:02:06 +0200
Received: from GV1PR03MB10456.eurprd03.prod.outlook.com
 (2603:10a6:150:16a::21) by AS8PR03MB7510.eurprd03.prod.outlook.com
 (2603:10a6:20b:2e1::7) with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9769.20; Tue, 7 Apr
 2026 20:02:04 +0000
Received: from GV1PR03MB10456.eurprd03.prod.outlook.com
 ([fe80::4484:fcf4:18ec:fbf3]) by GV1PR03MB10456.eurprd03.prod.outlook.com
 ([fe80::4484:fcf4:18ec:fbf3%7]) with mapi id 15.20.9769.018; Tue, 7 Apr 2026
 20:02: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=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=kqi953PnKF4KyI2ev6+2560LztYK5dxqT0CfDhPSTDCEfdTOLV5kpmznrfnr/zIyDs//RtFS7daPztBdxiiJIaDZfhgrGQhIyAMAIP30NmMq/tkwGhmy1g7EcMr4GK/omW+pnQoqpbbPhZXU3KrklDBbKY6Z4k3WCPQWjJahrOqEUhzpfB6Hu1V7UnRALapvqVu+yChaOvA0OQ1Ur8vvFdwyVNa0RmrmMSfcIKr8fpkD2FUt8v46FOlchPOOiBvoVk2Fnm+MNSGAaCL3scnt8yr6aP/sw+oO2FgmIxKZNL3quMsnGecPr+EC18SIe5xiGlwEEzVQ3y1TC9xA1CWbwg==
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com;
 s=arcselector10001;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1;
 bh=wxYQd4UR3yZFv0Rmy6PJQrj8rYHknxYKR0cKkkL00BM=;
 b=j7DtTXPLx5RlGewfBpQvva/mUfhH0MsExB32vweIwqwkibxYcU5fLvQAHfkElwzT2ul6hLkGUGl+R5tQM3hjWA+7jXZx8avIoopts7bSzjW5c1O3WmaNwZaO64aD7Do+nawJWnSuan5CbG8hDRM3xYa5GjbOgA+OYhKfl8O6CBtcZWOE2qBrLO4LREQMwMHeFYdo98XDatuLavkaTF6hU1ZOa7TqHKAjdb/FypknSAFFjldxXVc/OXjAL4cEhtVFz6BSPhMqhbsGhm1Bt8aXGBlUPXhHwMwiFipswa34TdjhXiUrui4PNNFUT3bWzIw5p8vYBQS+wvZTWOeR/cOVcQ==
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=wxYQd4UR3yZFv0Rmy6PJQrj8rYHknxYKR0cKkkL00BM=;
 b=kp9izs/C46MbG4pewZPlbPYXDXAw3u1A7/NwM/HTep0+suup6SPqDC87e4eDrdSuJV5+Uy8tlFfYMSeer9rhYQ4QgWQUA8mUdMBOcI8XLfv4KGz0r1ZAdmq3ND5sMbJ/OoQkLKiDmpeR/6PI6oPz1TafHSCKN20i8wzJFbmUhzTa02Jbs34+Qm380HpqSCt1J7M4VYjBt0bYBKPcUwZXSG1p7hklSBwCR7XlBwM9k9QEHTBNmI4ji88yePA08sYvRXS/3k6BS1WuPO2cXYgyJv6UsowtTyP85gefc+bTy9Eaf3E2IY23j+z2yPsStVS2ZPsh8wuMWEGa0XIIW9Mj5A==
From: Volodymyr Babchuk <Volodymyr_Babchuk@epam.com>
To: Saman Dehghan <samaan.dehghan@gmail.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>,
	=?iso-8859-1?Q?Roger_Pau_Monn=E9?= <roger.pau@citrix.com>, Stefano Stabellini
	<sstabellini@kernel.org>, Bertrand Marquis <bertrand.marquis@arm.com>
Subject: Re: [PATCH v4] xen/arm64: Add support Clang build on arm64
Thread-Topic: [PATCH v4] xen/arm64: Add support Clang build on arm64
Thread-Index: AQHcasii1+6T8d3E0U2GKVn8gBUvHg==
Date: Tue, 7 Apr 2026 20:02:03 +0000
Message-ID: <87v7e2y1xu.fsf@epam.com>
References:
 <da1f2ca7a651a5c482a68f6a4377250fcbbce715.1765465950.git.samaan.dehghan@gmail.com>
In-Reply-To:
 <da1f2ca7a651a5c482a68f6a4377250fcbbce715.1765465950.git.samaan.dehghan@gmail.com>
	(Saman Dehghan's message of "Thu, 11 Dec 2025 12:04:34 -0600")
Accept-Language: en-US
Content-Language: en-US
X-MS-Has-Attach:
X-MS-TNEF-Correlator:
authentication-results: dkim=none (message not signed)
 header.d=none;dmarc=none action=none header.from=epam.com;
x-ms-publictraffictype: Email
x-ms-traffictypediagnostic: GV1PR03MB10456:EE_|AS8PR03MB7510:EE_
x-ms-office365-filtering-correlation-id: 43056d0c-dab5-4045-1752-08de94e08a01
x-ms-exchange-senderadcheck: 1
x-ms-exchange-antispam-relay: 0
x-microsoft-antispam:
 BCL:0;ARA:13230040|42112799006|7416014|1800799024|376014|366016|38070700021|18002099003|56012099003|22082099003;
x-microsoft-antispam-message-info:
 0/qOUeH2DxiQR+xmOfpUKdeHq0XoEsfcXg4xq2j5pfrVJxhYvOt7auaaIEPc6hEYFL5FWejUJbG8yJUn+SwLy56IPvg3fnmUmF32LdTU7oAd5wrhGCfZlA/r2XDfq8HiqaxjGP+IaMf8Ttz1nJCSydHiSAs/0WNZ20co/f0XxKpuPkRXxz3WM11R7o7xTV1qxoL0YvT97jj9jtTLGxqhJKwqz/v+7wVbagCCEW1pPvF0AQgPOB0EgJx8135zf90/Nvn/Jj3fjhawSCrFwpcuEUpLVO9Fz9Qo4HRyuuHPNnpjNzWDHLZ8WVqnocTpxrtzx4Z3GHCU9QYppUoMDS3P+aHOLb2ugM2dX7RVQl4i3gWVmp0sucnhyNYK+t77UVmmqvqQ2XAFYeFlnvDZ9IAbRzMRaXoXwCrTpYYU0CFVdac2oCoZu638eQUh8hyYagpPP+2yITCH+wJOD+yQIRDuEnW4RY5kHkfo50bJacuvVWhQ0jTz7XFaWki/nufGyekNyvCpvnl7181hlb7xpV219h6gxhJmWwOuwqp6glNVNLxT2aiCdHGBqa0TT4rjjpSfzIHuv+yTsQ6cYG8Cugpj0mFNKeLqL7LeQz1RxQkyiYmj43UJENR/jXmEkS2aHkKsRVZSY3guVbI9Y622EHs3yXmpvwGsPCx2/4xCKVKipBNqlX4cDKuc9Y3eg46ooyEmRJBY3djkxnr/eYtmwjFKNqJHzdUMsIjDd5fikx93ZrgO3zmXFSH8RXg/nKgumNrZ
x-forefront-antispam-report:
 CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:GV1PR03MB10456.eurprd03.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(42112799006)(7416014)(1800799024)(376014)(366016)(38070700021)(18002099003)(56012099003)(22082099003);DIR:OUT;SFP:1102;
x-ms-exchange-antispam-messagedata-chunkcount: 1
x-ms-exchange-antispam-messagedata-0:
 =?iso-8859-1?Q?cTNH6emoUsYFpnt4cIneCr3XVK9TjxTNUp4mqHUkEuzqmbnuuMvYncwNwg?=
 =?iso-8859-1?Q?nVu3i051ae9iv0Ei1NiHYTjlij8lqqfJmr3oFQYtlEePFV8tdp42hc9pdt?=
 =?iso-8859-1?Q?XGIdHp6DPDFLU3JzjPb8pkD+iGkKxikY2uCKnIO9k6WJ4nWU3I1FSrX1gx?=
 =?iso-8859-1?Q?AphcfW6TF7Wz4hgS7vEqqfnJgZYiIvSSINbIN/0VVgpzamdVcRhFANyL0g?=
 =?iso-8859-1?Q?vwQSOlxlv/vk4DmrAvHspYi8aThqaoPX2aT0jz/R9NJL6e1EFtcHw+ZgyD?=
 =?iso-8859-1?Q?65jEODerfmVH45Dr9YHEJQPW1yHVp59IT7vCQBv2iK94iv9glHwkfEapgI?=
 =?iso-8859-1?Q?CN9c/Dp2v2YXEqHvjT3nHdL+iTZfPc1x59w+FodixWhIY446WorpYbrAB2?=
 =?iso-8859-1?Q?7fTrrImG9tEPfnavOvgvBTFKrmElQOVe/9DFlBCSyZEmmj555GiZwwXlx+?=
 =?iso-8859-1?Q?UNq6gyZxn1RdWqd68DXS0f1gP5rx5EXlHOGlAqBUPun8Q69QUmiWxjfLEX?=
 =?iso-8859-1?Q?HTRWHwnZZkW//91b63nOm0gGAWKnWiwni09VN72bU9+knuWQf6RYQB0BRH?=
 =?iso-8859-1?Q?voxub3/mkamcRq4RqiMdyxyagfUJrUM8MNQUvrrc1fObfCHYVQ3aC+VESv?=
 =?iso-8859-1?Q?f7ctJKKmI/yscqOFEdmd/RVIEFwFYvF0kUkdAIp/Z1g6wm/7X1xGVu78P1?=
 =?iso-8859-1?Q?u9PWlqSEYbsz5yBMQrDkVZ2wF5MElVxtNixzYYtucEyFZo3ncohMjueAyF?=
 =?iso-8859-1?Q?0wta0gOs7H2js4h0T9N0+AjDWOnNO34i6q0dvsscPDjoLIE+16ZMz1qgpJ?=
 =?iso-8859-1?Q?WKxI5XpCyHqEZhmxSRt4IcIXKSB7hkVzSBcHFj6G28YWzkv24ZDOmYvdwd?=
 =?iso-8859-1?Q?IADXGFpm1+e4HUHu1e497S+AFWsB28btE9sK9FYgAI5DrzSDbH0b2pyARb?=
 =?iso-8859-1?Q?pm4YW1zwYavu/HmbQyVWEK4fksg5uWWYE/Qsb+j7LTndHHHZTmHionKy+2?=
 =?iso-8859-1?Q?1PaExtUPYwYTyB7WmYy44DKRfImg1dknsjiATgmYULLt4KFWpEZd3rOuSs?=
 =?iso-8859-1?Q?gBP5u/Tjz605kJp5RKVfPjp3glAge4tdPgL3J+mcWC474e0+qMmGshmZA2?=
 =?iso-8859-1?Q?WZTT4Krr3kM020b1ggpcLhBJ9g/o7S8JHWfBk56yfNKJbiBS0jKGVQdm2d?=
 =?iso-8859-1?Q?r8Nnk8hbbzqDPcWH2cnk58f/t3/DPqcChA8uz75YmnXpGbdvV5AsrBZH/c?=
 =?iso-8859-1?Q?Wnj2hwlFlAmpXkzgrptWsp0S6bApE5AmZ2/EmubzSxYOgIQdmoZFDSBgGZ?=
 =?iso-8859-1?Q?6UpgW6xqujmT9jvSIU/NAxZ2yP8zM3thFsgTaMxfDYcP/unB3Rbuz6fsbq?=
 =?iso-8859-1?Q?brPnx4H5KKlhhg3eSxWw/s2aFQz5KAepog76miwOQGwENiZk+/Do4rrPq7?=
 =?iso-8859-1?Q?pZseb2KP6l410YB3wuSSEGTDR+BtW/VhORMY5j/SgvSaaFcZoqX3e5/vmG?=
 =?iso-8859-1?Q?shXIhRF996TRqGaDgNa1T3PqBylrCG42sb7P+PgD1nAY2zXFtGzw5itjkn?=
 =?iso-8859-1?Q?9eIQayma0u3Cfnm6vRsu8e+GtndlFlBP1Sy9/ELkhJ+/j6caQ6TkJAhhSz?=
 =?iso-8859-1?Q?skvuG0Dvoz3Q3ZZGNudK5y/dsCFZgnTzWmAvmWnIJ1AXyVXYpRjd72DCKy?=
 =?iso-8859-1?Q?7BPA5g9Sj7jgpFCDBZx/eVvSXA7H3rT3fy48TYZBphrnL5L0cLzEOwflh7?=
 =?iso-8859-1?Q?TQLSoKhWmcCmv/d9E8UcqCUkVd8Qn6NABV5wjcja4xiEmqZ5kWXeqT4H/1?=
 =?iso-8859-1?Q?RvWwQMHFRSsHbsNCN/sVOKQILY0a2gk=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: GV1PR03MB10456.eurprd03.prod.outlook.com
X-MS-Exchange-CrossTenant-Network-Message-Id: 43056d0c-dab5-4045-1752-08de94e08a01
X-MS-Exchange-CrossTenant-originalarrivaltime: 07 Apr 2026 20:02:04.1871
 (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: F4b7e/Ec4HV9OXQ95rDBx35uTFWRZoiV3/sIRKWq6DQGHogHhYOmQNpDjSHNYihX9phG3aeaM3f6Qf2OWU/WPE9UCuOo359alTQcnX1cLjg=
X-MS-Exchange-Transport-CrossTenantHeadersStamped: AS8PR03MB7510
X-purgate-ID: tlsNG-4011c0/1775592126-0EB4D0B1-35D6F21F/0/0
X-purgate-type: clean
X-purgate-size: 5667

Hi Saman,

Saman Dehghan <samaan.dehghan@gmail.com> writes:

> This patch enables building Xen for the arm64 using the Clang/LLVM compil=
er.
> Changes include:
> - Add explicit -march=3Darmv8 flag for arm64 builds.
> - Introduce `READ_FP_SYSREG` and `WRITE_FP_SYSREG` to encapsulate the req=
uired
>   `.arch_extension fp` directive for system fp register access.
> - Add ".arch_extension fp" to the inline assembly for `save_state` and
>   `restore_state`.
>

It breaks GCC-based build (see below)

Also, are you going to address to other issues that I tried to
tackle in

https://patchew.org/Xen/20241129014850.2852844-1-volodymyr._5Fbabchuk@epam.=
com/

?

> Signed-off-by: Saman Dehghan <samaan.dehghan@gmail.com>
> ---
>  README                   |  2 ++
>  xen/arch/arm/arch.mk     |  1 +
>  xen/arch/arm/arm64/vfp.c | 34 ++++++++++++++++++++++++++--------
>  3 files changed, 29 insertions(+), 8 deletions(-)
>
> diff --git a/README b/README
> index 889a4ea906..67c1aa7fe6 100644
> --- a/README
> +++ b/README
> @@ -45,6 +45,8 @@ provided by your OS distributor:
>        - For ARM:
>          - GCC 5.1 or later
>          - GNU Binutils 2.25 or later
> +        or
> +        - Clang/LLVM 11 or later
>        - For RISC-V 64-bit:
>          - GCC 12.2 or later
>          - GNU Binutils 2.39 or later
> diff --git a/xen/arch/arm/arch.mk b/xen/arch/arm/arch.mk
> index 9c4bedfb3b..bcf548069b 100644
> --- a/xen/arch/arm/arch.mk
> +++ b/xen/arch/arm/arch.mk
> @@ -13,6 +13,7 @@ ifeq ($(CONFIG_MPU),y)
>  CFLAGS-$(CONFIG_ARM_64) +=3D -march=3Darmv8-r
>  else
>  CFLAGS-$(CONFIG_ARM_64) +=3D -mcpu=3Dgeneric
> +CFLAGS-$(CONFIG_ARM_64) +=3D -march=3Darmv8

This breaks build for me:

cc1: error: unknown value 'armv8' for '-march'
cc1: note: valid arguments are: armv8-a armv8.1-a armv8.2-a armv8.3-a armv8=
.4-a armv8.5-a armv8.6-a armv8.7-a armv8.8-a armv8.9-a armv8-r armv9-a armv=
9.1-a armv9.2-a armv9.3-a armv9.4-a armv9.5-a; did you mean 'armv8-a'?


>  endif
>  CFLAGS-$(CONFIG_ARM_64) +=3D -mgeneral-regs-only # No fp registers etc
>  $(call cc-option-add,CFLAGS-$(CONFIG_ARM_64),CC,-mno-outline-atomics)
> diff --git a/xen/arch/arm/arm64/vfp.c b/xen/arch/arm/arm64/vfp.c
> index c4f89c7b0e..cd5c97cfd0 100644
> --- a/xen/arch/arm/arm64/vfp.c
> +++ b/xen/arch/arm/arm64/vfp.c
> @@ -6,7 +6,8 @@
> =20
>  static inline void save_state(uint64_t *fpregs)
>  {
> -    asm volatile("stp q0, q1, [%1, #16 * 0]\n\t"
> +    asm volatile(".arch_extension fp\n\t"
> +                 "stp q0, q1, [%1, #16 * 0]\n\t"
>                   "stp q2, q3, [%1, #16 * 2]\n\t"
>                   "stp q4, q5, [%1, #16 * 4]\n\t"
>                   "stp q6, q7, [%1, #16 * 6]\n\t"
> @@ -22,12 +23,14 @@ static inline void save_state(uint64_t *fpregs)
>                   "stp q26, q27, [%1, #16 * 26]\n\t"
>                   "stp q28, q29, [%1, #16 * 28]\n\t"
>                   "stp q30, q31, [%1, #16 * 30]\n\t"
> +                 ".arch_extension nofp\n\t"
>                   : "=3DQ" (*fpregs) : "r" (fpregs));
>  }
> =20
>  static inline void restore_state(const uint64_t *fpregs)
>  {
> -    asm volatile("ldp q0, q1, [%1, #16 * 0]\n\t"
> +    asm volatile(".arch_extension fp\n\t"
> +                 "ldp q0, q1, [%1, #16 * 0]\n\t"
>                   "ldp q2, q3, [%1, #16 * 2]\n\t"
>                   "ldp q4, q5, [%1, #16 * 4]\n\t"
>                   "ldp q6, q7, [%1, #16 * 6]\n\t"
> @@ -43,9 +46,24 @@ static inline void restore_state(const uint64_t *fpreg=
s)
>                   "ldp q26, q27, [%1, #16 * 26]\n\t"
>                   "ldp q28, q29, [%1, #16 * 28]\n\t"
>                   "ldp q30, q31, [%1, #16 * 30]\n\t"
> +                 ".arch_extension nofp\n\t"
>                   : : "Q" (*fpregs), "r" (fpregs));
>  }
> =20
> +#define WRITE_FP_SYSREG(v, name) do {                   \
> +     uint64_t _r =3D (v);                                 \
> +     asm volatile(".arch_extension fp\n\t"              \
> +                  "msr "__stringify(name)", %0\n\t"     \
> +                  ".arch_extension nofp" : : "r" (_r)); \
> +} while (0)
> +
> +#define READ_FP_SYSREG(name) ({                         \
> +     uint64_t _r;                                       \
> +     asm volatile(".arch_extension fp\n\t"              \
> +                  "mrs  %0, "__stringify(name)"\n\t"    \
> +                  ".arch_extension nofp" : "=3Dr" (_r));  \
> +_r; })
> +
>  void vfp_save_state(struct vcpu *v)
>  {
>      if ( !cpu_has_fp )
> @@ -56,10 +74,10 @@ void vfp_save_state(struct vcpu *v)
>      else
>          save_state(v->arch.vfp.fpregs);
> =20
> -    v->arch.vfp.fpsr =3D READ_SYSREG(FPSR);
> -    v->arch.vfp.fpcr =3D READ_SYSREG(FPCR);
> +    v->arch.vfp.fpsr =3D READ_FP_SYSREG(FPSR);
> +    v->arch.vfp.fpcr =3D READ_FP_SYSREG(FPCR);
>      if ( is_32bit_domain(v->domain) )
> -        v->arch.vfp.fpexc32_el2 =3D READ_SYSREG(FPEXC32_EL2);
> +        v->arch.vfp.fpexc32_el2 =3D READ_FP_SYSREG(FPEXC32_EL2);
>  }
> =20
>  void vfp_restore_state(struct vcpu *v)
> @@ -72,8 +90,8 @@ void vfp_restore_state(struct vcpu *v)
>      else
>          restore_state(v->arch.vfp.fpregs);
> =20
> -    WRITE_SYSREG(v->arch.vfp.fpsr, FPSR);
> -    WRITE_SYSREG(v->arch.vfp.fpcr, FPCR);
> +    WRITE_FP_SYSREG(v->arch.vfp.fpsr, FPSR);
> +    WRITE_FP_SYSREG(v->arch.vfp.fpcr, FPCR);
>      if ( is_32bit_domain(v->domain) )
> -        WRITE_SYSREG(v->arch.vfp.fpexc32_el2, FPEXC32_EL2);
> +        WRITE_FP_SYSREG(v->arch.vfp.fpexc32_el2, FPEXC32_EL2);
>  }

--=20
WBR, Volodymyr=


From xen-devel-bounces@lists.xenproject.org Tue Apr 07 20:30:57 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 07 Apr 2026 20:30:57 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1275333.1561188 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wAD4U-0007EM-KP; Tue, 07 Apr 2026 20:30:50 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1275333.1561188; Tue, 07 Apr 2026 20:30: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 1wAD4U-0007EF-HL; Tue, 07 Apr 2026 20:30:50 +0000
Received: by outflank-mailman (input) for mailman id 1275333;
 Tue, 07 Apr 2026 20:30:48 +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 1wAD4S-0007E9-Ka
 for xen-devel@lists.xenproject.org; Tue, 07 Apr 2026 20:30:48 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wAD4R-00HMjN-Iw
 for xen-devel@lists.xenproject.org; Tue, 07 Apr 2026 22:30:47 +0200
Received: from [10.42.69.10] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <sstabellini@kernel.org>)
 id 69d56976-2eae-0a2a0a5409dd-0a2a450aab18-10
 for <xen-devel@lists.xenproject.org>; Tue, 07 Apr 2026 22:30:47 +0200
Received: from [172.105.4.254] (helo=tor.source.kernel.org)
 by tlsNG-4011c0.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.0)
 (envelope-from <sstabellini@kernel.org>)
 id 69d56976-ee98-0a2a450a0019-ac6904feb0d2-3
 for <xen-devel@lists.xenproject.org>; Tue, 07 Apr 2026 22:30:47 +0200
Received: from smtp.kernel.org (transwarp.subspace.kernel.org [100.75.92.58])
 by tor.source.kernel.org (Postfix) with ESMTP id C8F40600CB;
 Tue,  7 Apr 2026 20:30:45 +0000 (UTC)
Received: by smtp.kernel.org (Postfix) with ESMTPSA id 8B976C116C6;
 Tue,  7 Apr 2026 20:30: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=k20201202 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/simple; d=kernel.org;
	s=k20201202; t=1775593845;
	bh=r7GXZjFcIMrR2G+JamIxXiC7lLfl4g7nO9vEyV6/buI=;
	h=Date:From:To:cc:Subject:In-Reply-To:References:From;
	b=u3Sg3O3Z8dxKDuToqJ9r1RsHN1zFh+Og11zvGUIXSDgJD4ZHMcacYU8fX5SXG8mu4
	 xQq+FaAV/i+YxKI/YKt639wAT721BhSme6SxSPuYL2ce5EyajD2ZYFCA5uBCp11uZo
	 wA/B4HoSgN0u007gMEtD3oFeGsTz3b8iV2W9XHXtKK8NP0nHpKmOz8aEHBmYDXJTGe
	 ed49S7eYtQhkQgndNtqo+mVzBfjaD8IgGblYOAkpOtgnlwgj6BPE+7YEL5MrDbmOOh
	 mgphJD93r3C099IWpPVQSdQ0PTKpeXGxBUmjMx7chlfOg37t2tZXjT8D+WoaS83fGn
	 D0IaV2CBIArSQ==
Date: Tue, 7 Apr 2026 13:30:43 -0700 (PDT)
From: Stefano Stabellini <sstabellini@kernel.org>
X-X-Sender: sstabellini@ubuntu-linux-20-04-desktop
To: Michal Orzel <michal.orzel@amd.com>
cc: xen-devel@lists.xenproject.org, Julien Grall <julien@xen.org>, 
    Rahul Singh <rahul.singh@arm.com>, 
    Stefano Stabellini <sstabellini@kernel.org>, 
    Bertrand Marquis <bertrand.marquis@arm.com>, 
    Volodymyr Babchuk <Volodymyr_Babchuk@epam.com>
Subject: Re: [PATCH 1/2] iommu/arm: smmu: Fix variable shadowing
In-Reply-To: <20260407103434.90838-2-michal.orzel@amd.com>
Message-ID: <alpine.DEB.2.22.394.2604071330270.2873990@ubuntu-linux-20-04-desktop>
References: <20260407103434.90838-1-michal.orzel@amd.com> <20260407103434.90838-2-michal.orzel@amd.com>
User-Agent: Alpine 2.22 (DEB 394 2020-01-19)
MIME-Version: 1.0
Content-Type: text/plain; charset=US-ASCII
X-purgate-ID: tlsNG-4011c0/1775593847-BC3610B1-D6A22261/0/0
X-purgate-type: clean
X-purgate-size: 2259

On Tue, 7 Apr 2026, Michal Orzel wrote:
> Rename 'pdev' to 'pci_dev' in the dev_print_pci() macro to avoid
> shadowing local 'pdev' variables at call sites.
> 
> Remove the unused 'ret' declaration from arm_smmu_dt_add_device_generic()
> where the function-scope 'ret' is sufficient.
> 
> Fix shadowing of 'domain' in arm_smmu_assign_dev() by removing the
> inner-scope redeclaration, using the function-scope variable instead.
> 
> This fixes MISRA C R5.3.
> 
> Signed-off-by: Michal Orzel <michal.orzel@amd.com>

Reviewed-by: Stefano Stabellini <sstabellini@kernel.org>


> ---
>  xen/drivers/passthrough/arm/smmu.c | 7 +++----
>  1 file changed, 3 insertions(+), 4 deletions(-)
> 
> diff --git a/xen/drivers/passthrough/arm/smmu.c b/xen/drivers/passthrough/arm/smmu.c
> index 22d306d0cb80..d63c9015510e 100644
> --- a/xen/drivers/passthrough/arm/smmu.c
> +++ b/xen/drivers/passthrough/arm/smmu.c
> @@ -130,8 +130,8 @@ typedef enum irqreturn irqreturn_t;
>          printk(lvl "smmu: %s: " fmt, dev_name((dev)), ## __VA_ARGS__);  \
>      else                                                                \
>      {                                                                   \
> -        struct pci_dev *pdev = dev_to_pci((dev));                       \
> -        printk(lvl "smmu: %pp: " fmt, &pdev->sbdf, ## __VA_ARGS__);     \
> +        struct pci_dev *pci_dev = dev_to_pci((dev));                    \
> +        printk(lvl "smmu: %pp: " fmt, &pci_dev->sbdf, ## __VA_ARGS__);  \
>      }                                                                   \
>  })
>  #endif
> @@ -927,7 +927,6 @@ static int arm_smmu_dt_add_device_generic(u8 devfn, struct device *dev)
>  	if ( dev_is_pci(dev) )
>  	{
>  		struct pci_dev *pdev = dev_to_pci(dev);
> -		int ret;
>  
>  		/* Ignore calls for phantom functions */
>  		if ( devfn != pdev->devfn )
> @@ -2788,7 +2787,7 @@ static int arm_smmu_assign_dev(struct domain *d, u8 devfn,
>  		/* dom_io is used as a sentinel for quarantined devices */
>  		if ( d == dom_io )
>  		{
> -			struct iommu_domain *domain = dev_iommu_domain(dev);
> +			domain = dev_iommu_domain(dev);
>  			if ( !iommu_quarantine )
>  				return 0;
>  
> -- 
> 2.43.0
> 


From xen-devel-bounces@lists.xenproject.org Tue Apr 07 20:32:07 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 07 Apr 2026 20:32:07 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1275340.1561197 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wAD5i-0007mx-Su; Tue, 07 Apr 2026 20:32:06 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1275340.1561197; Tue, 07 Apr 2026 20:32: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 1wAD5i-0007mq-QA; Tue, 07 Apr 2026 20:32:06 +0000
Received: by outflank-mailman (input) for mailman id 1275340;
 Tue, 07 Apr 2026 20:32:04 +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 1wAD5g-0007mk-Pn
 for xen-devel@lists.xenproject.org; Tue, 07 Apr 2026 20:32:04 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wAD5g-00HMxG-5d
 for xen-devel@lists.xenproject.org; Tue, 07 Apr 2026 22:32:04 +0200
Received: from [10.42.69.12] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <sstabellini@kernel.org>)
 id 69d569b9-bab6-0a2a0a5309dd-0a2a450ca290-36
 for <xen-devel@lists.xenproject.org>; Tue, 07 Apr 2026 22:32:04 +0200
Received: from [172.105.4.254] (helo=tor.source.kernel.org)
 by tlsNG-d25034.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.0)
 (envelope-from <sstabellini@kernel.org>)
 id 69d569c3-f40c-0a2a450c0019-ac6904feb640-3
 for <xen-devel@lists.xenproject.org>; Tue, 07 Apr 2026 22:32:03 +0200
Received: from smtp.kernel.org (transwarp.subspace.kernel.org [100.75.92.58])
 by tor.source.kernel.org (Postfix) with ESMTP id B7158600CB;
 Tue,  7 Apr 2026 20:32:02 +0000 (UTC)
Received: by smtp.kernel.org (Postfix) with ESMTPSA id 9576EC116C6;
 Tue,  7 Apr 2026 20:32: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=k20201202 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/simple; d=kernel.org;
	s=k20201202; t=1775593922;
	bh=5JPbz7ZvJhy4OvxwPpdeqCLBT41FR4vzxedbyx+6XyU=;
	h=Date:From:To:cc:Subject:In-Reply-To:References:From;
	b=bn1ZOO27Oom4tJRCmprrVSJY0kjA7o6sP76x8hUyPzS1bD9QozqPwivl+lLikx+rs
	 wRSZfwqB4oUsA7y9FW/1NdjnKBfpqgJr18BqFXAVmGkF1nSd4RwqRUc9AZDmCF/yDc
	 lPOFJSSTPwObofNpGCT6PVY4XuSoXv6eE387KyVVWm/uxEnSsCIdwLEKjcGMNKLaF8
	 VC4ECbZ3BFZXNhmrAD+UxIAmXmFjxDHAE7HWNWSb6o9AG/+Nm64VT8PhCmxu2iwP1J
	 BYXvhPcHfAMkvC1dFlWD/uGNTujpuG+ySzeSH+8iT9nZf5VW/XADn7xicik+Xwl3+K
	 4QPTQL0dnlLZw==
Date: Tue, 7 Apr 2026 13:32:00 -0700 (PDT)
From: Stefano Stabellini <sstabellini@kernel.org>
X-X-Sender: sstabellini@ubuntu-linux-20-04-desktop
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 2/2] iommu/arm: ipmmu-vmsa: Fix variable shadowing
In-Reply-To: <20260407103434.90838-3-michal.orzel@amd.com>
Message-ID: <alpine.DEB.2.22.394.2604071331290.2873990@ubuntu-linux-20-04-desktop>
References: <20260407103434.90838-1-michal.orzel@amd.com> <20260407103434.90838-3-michal.orzel@amd.com>
User-Agent: Alpine 2.22 (DEB 394 2020-01-19)
MIME-Version: 1.0
Content-Type: text/plain; charset=US-ASCII
X-purgate-ID: tlsNG-d25034/1775593924-8055FA3D-8A72AB62/0/0
X-purgate-type: clean
X-purgate-size: 1864

On Tue, 7 Apr 2026, Michal Orzel wrote:
> Rename 'pdev' to 'pci_dev' in the dev_print_pci() macro to avoid
> shadowing local 'pdev' variables at call sites.
> 
> Remove the unused 'ret' declaration from ipmmu_assign_device() where
> the function-scope 'ret' is sufficient.
> 
> This fixes MISRA C R5.3.
> 
> Signed-off-by: Michal Orzel <michal.orzel@amd.com>

Reviewed-by: Stefano Stabellini <sstabellini@kernel.org>


> ---
>  xen/drivers/passthrough/arm/ipmmu-vmsa.c | 6 ++----
>  1 file changed, 2 insertions(+), 4 deletions(-)
> 
> diff --git a/xen/drivers/passthrough/arm/ipmmu-vmsa.c b/xen/drivers/passthrough/arm/ipmmu-vmsa.c
> index ea9fa9ddf3ce..fa9ab9cb1330 100644
> --- a/xen/drivers/passthrough/arm/ipmmu-vmsa.c
> +++ b/xen/drivers/passthrough/arm/ipmmu-vmsa.c
> @@ -65,8 +65,8 @@
>          printk(lvl "ipmmu: %s: " fmt, dev_name((dev)), ## __VA_ARGS__);  \
>      else                                                                \
>      {                                                                   \
> -        struct pci_dev *pdev = dev_to_pci((dev));                       \
> -        printk(lvl "ipmmu: %pp: " fmt, &pdev->sbdf, ## __VA_ARGS__);     \
> +        struct pci_dev *pci_dev = dev_to_pci((dev));                       \
> +        printk(lvl "ipmmu: %pp: " fmt, &pci_dev->sbdf, ## __VA_ARGS__);     \
>      }                                                                   \
>  })
>  #endif
> @@ -1171,8 +1171,6 @@ static int ipmmu_assign_device(struct domain *d, u8 devfn, struct device *dev,
>          /* dom_io is used as a sentinel for quarantined devices */
>          if ( d == dom_io )
>          {
> -            int ret;
> -
>              /*
>               * Try to de-assign: do not return error if it was already
>               * de-assigned.
> -- 
> 2.43.0
> 


From xen-devel-bounces@lists.xenproject.org Tue Apr 07 21:59:04 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 07 Apr 2026 21:59:04 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1275361.1561207 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wAERd-0001GN-0T; Tue, 07 Apr 2026 21:58:49 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1275361.1561207; Tue, 07 Apr 2026 21:58: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 1wAERc-0001GG-U1; Tue, 07 Apr 2026 21:58:48 +0000
Received: by outflank-mailman (input) for mailman id 1275361;
 Tue, 07 Apr 2026 21:58:48 +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 1wAERb-0001Fq-Rh
 for xen-devel@lists.xenproject.org; Tue, 07 Apr 2026 21:58:48 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wAERa-00DF1Y-NN
 for xen-devel@lists.xenproject.org; Tue, 07 Apr 2026 23:58:46 +0200
Received: from [10.42.69.10] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <andrew.cooper@citrix.com>)
 id 69d57dcb-bab6-0a2a0a5309dd-0a2a450aa192-22
 for <xen-devel@lists.xenproject.org>; Tue, 07 Apr 2026 23:58:46 +0200
Received: from [40.93.201.50]
 (helo=CY3PR05CU001.outbound.protection.outlook.com)
 by tlsNG-4011c0.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.0)
 (envelope-from <andrew.cooper@citrix.com>)
 id 69d57e14-ee98-0a2a450a0019-285dc932751b-4
 for <xen-devel@lists.xenproject.org>; Tue, 07 Apr 2026 23:58:46 +0200
Received: from CH8PR03MB8275.namprd03.prod.outlook.com (2603:10b6:610:2b9::7)
 by PH0PR03MB7157.namprd03.prod.outlook.com (2603:10b6:510:295::14)
 with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9769.18; Tue, 7 Apr
 2026 21:58: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%6]) with mapi id 15.20.9769.018; Tue, 7 Apr 2026
 21:58: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=oOiFAQet+oKmMXnXw+pRxN04AnJzwnTzApIer3Qbwbuo1SwvHRImVuT5bjRz/zR3RAY14j6tzhPSIJqUqxoc6BF2PjT6FTdA4Ud3gaEumApix9XSmpWuih3jXJcrMBxKrKu+T12v4P0uXfMqY9giPVfnj1U3H/r7sIcXXc+HfKvg5s63AMkUhQH5pxhiI6cJgqD+nwk0Y/p/jscbw6893Y3q63aPQl6i/tBQ3PvL6lIp7kZBLPvHwOWz+vBW0HB97iIe2+NayYPe2M7aIR+kBE9QQDfZRjxRw/SsPcnXlNwucwD6nKmMSoRaGuq4oTE5oYLIjqbu++4DyIpgcOkg1A==
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com;
 s=arcselector10001;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1;
 bh=5SMKV+6V9fPJ9bAtiqyRcGIZ00A5uaU7r1e265hdtEE=;
 b=OH3+eLsWTgjihbE+dRDqZ4rtWaLk67ZWR0cdjVQVlc+eKLxEb0ZMS1pgkIWd/Frj/CnvlbhMxBPfSoEG9slcp2YaJ+N978IDbK9TQLTyCpx6fL8pnXaMaolevZYBlrsemtYaM/SgRQsWOXEFb3gPErqNO18m9SdFrsJ5suuGTKuh3g+gx88hyu0FxH18L2VvMpYnOyH1mx/epK1N9iK+UaAX8vxvz0nS9IqHxr3uMj6tr6bB/wKpVqY5DpvO3qyOJPOoS1Pn2caax0OVScpFtogNIvC3DRW/RuvraSwMhKNvv7HgQscTec/voqj1823Zy37qRpEsAFmtTJ3vtcmQzg==
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=5SMKV+6V9fPJ9bAtiqyRcGIZ00A5uaU7r1e265hdtEE=;
 b=m6cAMsPVwf+aNKusAIjYEJWKK3QynTerM9HnP23Bn6Vf23gMGm1QC66dv7IlVW1WGflYDEdbrVZcuoJbGMMesI3tZB5jBkJUuOE4kVcz9mf8Jyn35FLxZ1a/zhLkhfYQUzl7zsZfW/+Uh+ZT/vEMpZGEd3MoQBNRCa6Hk4jvssc=
Authentication-Results: dkim=none (message not signed)
 header.d=none;dmarc=none action=none header.from=citrix.com;
Message-ID: <48df7b1b-5d07-4eeb-8028-6a90c12a6e2a@citrix.com>
Date: Tue, 7 Apr 2026 22:58:39 +0100
User-Agent: Mozilla Thunderbird
Cc: Andrew Cooper <andrew.cooper3@citrix.com>,
 =?UTF-8?Q?Roger_Pau_Monn=C3=A9?= <roger.pau@citrix.com>
Subject: Re: [PATCH v9 04/10] x86/cpu-policy: re-arrange no-VMX logic
To: Jan Beulich <jbeulich@suse.com>,
 "xen-devel@lists.xenproject.org" <xen-devel@lists.xenproject.org>
References: <926a2315-a2b7-4aad-87e6-d686c9da9e3a@suse.com>
 <dfa41e40-b50c-4564-829b-0cf147fe3ee5@suse.com>
Content-Language: en-GB
From: Andrew Cooper <andrew.cooper3@citrix.com>
In-Reply-To: <dfa41e40-b50c-4564-829b-0cf147fe3ee5@suse.com>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
X-ClientProxiedBy: LO4P123CA0567.GBRP123.PROD.OUTLOOK.COM
 (2603:10a6:600:33b::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_|PH0PR03MB7157:EE_
X-MS-Office365-Filtering-Correlation-Id: 9fbab6dc-18f7-41d9-31f5-08de94f0d51c
X-MS-Exchange-SenderADCheck: 1
X-MS-Exchange-AntiSpam-Relay: 0
X-Microsoft-Antispam:
	BCL:0;ARA:13230040|376014|1800799024|366016|56012099003|18002099003|22082099003;
X-Microsoft-Antispam-Message-Info:
	W0tFlrTZ+brI7VF662DfqdQKm2DkrJKCX/OVlKPStQaSmghwtM/2jFKtTvg1hr6l+bUM5d/+g7wY/eqfeHa54Fml8VXTyShntC/AHGwFWWMqTeP1FoxjXSIVZX0cJXerBHbFwXDPYjlJQl6E/grEqKz1r9mBsJS5ZeCmPOINTaErwjyIrFZqmwiCULs8eYCVhqNhQiZVVUbd7mP0ygFI78E6dZzqbm8DK0REx50I17WsxiUUOgKg2/PnbNfEVTC5O6atU3SEBDAJMBKuiwYcQt1lCoegYhvT8DR8mO/ngZpivwnx5Zmva0fDY+B3s85x3qoefdDPwGJGqP3xT60B610hKxN82k4Zc9FGZuZYI65KtfZl/wo8GBHFiSra4FAoxVphcpBL+KOwrtNRnxKiVhoalECxo4XNrA4fnKtuSRvdR/zDmNN5oIzcgjA+kVLrhIRg1btgjqms8KlHjt30kp9QhG+g/AJb2bNkrrTLZzBnMdYKjTeD0kKNuURs+HZVWnaCNYgAa6mxTLrkI9nbxo2Q+oSHXe2QQAweeoZC6Mmdkc7noTlhURbNuAsSsJPqYxIcCbSqjerffK+zbnpGhWY5q719AaZe1UhudphcMpD1Mm4zUZjqR1Zuz2bizifDB2bSPgWr6DcqWRciyUC6fyhr+FIV2NYyzZY74rM9OD0WAWrxhI3Zz6LL8nzQww5fdXN0Z6e1KvCDhs8C/Mcg2qsB5sSBis1jHOSAq7Qwrn0=
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)(1800799024)(366016)(56012099003)(18002099003)(22082099003);DIR:OUT;SFP:1101;
X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1
X-MS-Exchange-AntiSpam-MessageData-0:
	=?utf-8?B?Q0VIOU1YaUVUUFdRUEJncnFCaHVtdnlROHExZW9VNzd6YklWbSszRC91RjEw?=
 =?utf-8?B?aXY2V3plbGRXMExZTkhzWlEreUhlTHAxWTRjY2xXNXNiNWd4RFRNVTc1M1k1?=
 =?utf-8?B?MUlMRmdVbEw3UXhOSk0rN1IxWnpSUENxaHI4TVUwZG9mWE9rM3J3Ukp2d1FR?=
 =?utf-8?B?dndSanZlYW9vUVpXWU1ESkVYQmErbkwwWWpBYzdXTDVrenIyTlhocVJHL0xa?=
 =?utf-8?B?QU4zcE05bWJpNUVDaG1mcEpKZm1SdHFidzdwb2RqVXEwcm9PSWMvc0xLRWZJ?=
 =?utf-8?B?WlVubXBleVU1UUpZZFBOZ1Q1ZFFnWG5aMGJOWHZLWGpxMWFVYXZuNHZMc1hv?=
 =?utf-8?B?cC9GaW5LTFVDSU95VWxTNXZyeHV6RHBJVUdPM3hzK1hJRXMzSVJTRzAvSHRT?=
 =?utf-8?B?WjRoWmdPejZOZEo3R0k2aUFXby9FSFRqTFdNSXJxUkRCWlJucFBDTXBUcDA1?=
 =?utf-8?B?VmFISEYwSFV4c253T2pheGxUUjJLTW5vRExiNjNVVzZXcVlQSWdJeEtoZzM0?=
 =?utf-8?B?TlJGQ3ExTUREM3hPUHZqV2lTdG1PSnh4ZTJBYjlyL2loMkFvbGd3bnJjbmFz?=
 =?utf-8?B?QWtndlBDYVlmeXU0RUMrN2krbFpyQzc0cHZqSjFnaHNseU5Bd0dQcFVBNkRn?=
 =?utf-8?B?a2dZdFF5aVpqVXpBZ2xIV3FqRTNoZEI0R0RLbTN0TldwU2RvWjk1MUkrOG5Z?=
 =?utf-8?B?dFdWRTluSVZOQzl5Qm5nZmFVdWdDdVJiQkRlcWFxZHF4dHlpQzVxNXZNRUNw?=
 =?utf-8?B?a2JIVG5BdS85TytDNjVkMVJxNXMxSkV5VmZYZG1GaVJxc1Q3Q01TNklVaDBI?=
 =?utf-8?B?cjlFU0Npa2lhaUgwb0ZKZXRRQ1VpYXJIRUhiM2g0K1grOFIxaStXNWsraW5N?=
 =?utf-8?B?OC80eVVlOXY3UEVneEI1aU8wY0QwdFJicDV0Qm1hUFNZSGxHNnlzVkFVU3ZS?=
 =?utf-8?B?aUtqcTFmRXlIZ2dUMmRuQ1JFZWhsZ25OWXB2K3lvek4vb3ZFZ1hRUE5ON0wz?=
 =?utf-8?B?alR3QzJic251UVkwcTJMTHlNakRSSGUrYlBPMmNza2J2UDFrd2pVVjFTemlr?=
 =?utf-8?B?WXY5WFZuenM3cUI3WU5odTRKSFZXNE81dktvRFJBWWFYNkF1Zml6RmtTNlNr?=
 =?utf-8?B?UkptYjJxc05vRWcrYThoU3BvN2JSRFluNk5SY0RRSUhsZ2paZG5KTlpCWTBJ?=
 =?utf-8?B?N1U1VmFEN2lVdjB0TWtYaHBxQUFHOVVxWkhNTk5UNEJUTEZaQkRvdjE0VFc1?=
 =?utf-8?B?VUVKZ2diMzFmay9CR1dtZGFrVEpSKzJIU3pEZjg3Vm8xdFpUVi9FVDFrNkxX?=
 =?utf-8?B?SVFWVVYyUTlVTHJVZ2dhYURFL0I4dmxHREloMDM1M3RvRTgwMFFBQUUxaldD?=
 =?utf-8?B?WkJSbzI1ODUvbkpac09OcnRzenloYXRmTDR1SDZ2QXVrWnd2R2hxd2VKU00y?=
 =?utf-8?B?NHh6eFA1MkpVaU5iMnZGTE56TmRUdzIxb3NwWDJRV2NhY1RoV3cyZzBNSmpW?=
 =?utf-8?B?dk1xSUhXWUxhaVAvTitZWHBseDR5ekVuVjVJNVFmM0JWYlA4eWkwYkdDc0Qy?=
 =?utf-8?B?ek1SUkx5cjVzUGdEUXNzL0xaK0NxcFBJS1ptb05BTzVXeTA1RGxNUlphVE40?=
 =?utf-8?B?Rks5R0NFWlJGbzZzbWQ2R3lEczJYYWdGR0pkblBKSnpyNDh2VmRZWml6K2hD?=
 =?utf-8?B?M3VsL2cyK2kwVWN5R21KdTlxRmI4Y1VGbUp0a2FHRy9RR0I3cXNRd0lMcWtl?=
 =?utf-8?B?aExFRlE5K1B1VUMrU2RKUHYzYWhYMlp4Y0RiTjEvdHNzM0JpNmR3OGFGbVlQ?=
 =?utf-8?B?ZzB5NFRpSUlld0JWb2hqM0FybWROZHV2eHVFSmhpMkpya0s1dGl3eWlRMkFX?=
 =?utf-8?B?TlEvR2dQUXlHclk4Y1ZJckhjeEFwS3U3bHZ2diswUzVvNm9lUi9taG1Kends?=
 =?utf-8?B?ZzhXWmVWMmpXQnAxSnJLdEdrNjI4T2g0RnpvRFB0TUg4U1RnM3RaWldrc3dG?=
 =?utf-8?B?cDgyRUFSMjIwL0p5eXE4dWRFY3laeUkydThxVkptT3praHdzR1NEWHF3KzR0?=
 =?utf-8?B?SDU1N0xVRi8yQ21OS0hpQjFCbVV1YjlwMityZVJEbW5YU2tXUnRHa1ZLNkZL?=
 =?utf-8?B?VkQ1UXdRdlNrT29RZ1JsTW9keUNUSEY2bmptU0NNSjNFQ0gzT2RWUVAvYzRy?=
 =?utf-8?B?WmxWNk0rck9XR2tTaDhySVQzd0hQTzV3OVVDM05Nbjd0aFBrditwU0l0d2lT?=
 =?utf-8?B?VTZ0KzVtbzJVZ0MzbnhhVnhocldMNDN5S3NSWHA2NzBRclljZUQ4NjVZZ3lY?=
 =?utf-8?B?anA0b1R0S08zeXkwY2JUaldML29WQ3hsUWU0MTUrckVTVjhhL3ZyMG5hTnlt?=
 =?utf-8?Q?JrHdMo8D+j6RGWEg=3D?=
X-OriginatorOrg: citrix.com
X-MS-Exchange-CrossTenant-Network-Message-Id: 9fbab6dc-18f7-41d9-31f5-08de94f0d51c
X-MS-Exchange-CrossTenant-AuthSource: CH8PR03MB8275.namprd03.prod.outlook.com
X-MS-Exchange-CrossTenant-AuthAs: Internal
X-MS-Exchange-CrossTenant-OriginalArrivalTime: 07 Apr 2026 21:58:42.2818
 (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: j/KIDVJrvbb3RjgabI5ttZJob7Wm7SvFng5B2shKTtMdHzNnKrNZ04hr5vD520Q++HPrMwrLq3RD2JzpVMeuwzd1iJnurMC9c5PP+e3eEo8=
X-MS-Exchange-Transport-CrossTenantHeadersStamped: PH0PR03MB7157
X-purgate-ID: tlsNG-4011c0/1775599126-0DD520B1-C2A03988/0/0
X-purgate-type: clean
X-purgate-size: 3048

On 24/11/2025 2:59 pm, Jan Beulich wrote:
> Move the PKS check into an "else" for the corresponding "if()", such
> that further adjustments (like for USER_MSR) can easily be put there as
> well.
>
> Signed-off-by: Jan Beulich <jbeulich@suse.com>
> ---
> v5: Re-base.
> v4: New.
>
> --- a/xen/arch/x86/cpu-policy.c
> +++ b/xen/arch/x86/cpu-policy.c
> @@ -812,19 +812,20 @@ static void __init calculate_hvm_max_pol
>          if ( !cpu_has_vmx_xsaves )
>              __clear_bit(X86_FEATURE_XSAVES, fs);
>      }
> +    else
> +    {
> +        /*
> +         * Xen doesn't use PKS, so the guest support for it has opted to not use
> +         * the VMCS load/save controls for efficiency reasons.  This depends on
> +         * the exact vmentry/exit behaviour, so don't expose PKS in other
> +         * situations until someone has cross-checked the behaviour for safety.
> +         */
> +        __clear_bit(X86_FEATURE_PKS, fs);
> +    }
>  
>      if ( !cpu_has_vmx_msrlist )
>          __clear_bit(X86_FEATURE_MSRLIST, fs);
>  
> -    /*
> -     * Xen doesn't use PKS, so the guest support for it has opted to not use
> -     * the VMCS load/save controls for efficiency reasons.  This depends on
> -     * the exact vmentry/exit behaviour, so don't expose PKS in other
> -     * situations until someone has cross-checked the behaviour for safety.
> -     */
> -    if ( !cpu_has_vmx )
> -        __clear_bit(X86_FEATURE_PKS, fs);
> -
>      /* 
>       * Make adjustments to possible (nested) virtualization features exposed
>       * to the guest
>

These clauses aren't logically doing the same thing.  So while the
compiler can merge them, I don't think it's a good idea to do so at a
source level.

The "if ( vmx ) " block we can just see the end of is for features which
need to cross-check extra VMX capabilities.  Each of RDTSCP, INVPCID and
XSAVES are #UD unless explicitly enabled.  MPX is the odd-one out,
checking the load/save capabilities.

I suspect this list is incomplete.  These cross-checks shouldn't fail on
real hardware, where the VMX capabilities should match the native
features, but nested virt is rife with enumeration bugs here.

The second "if ( !vmx )" clause is different.  This is really "I wired
up PKS based on how Intel works, and if AMD ever gains it it will
definitely need context switching changes to work".  This is in lieu of
having dedicated Intel/AMD annotations for features.

The MSRLIST addition from the prior patch is arguably misplaced, except
it's trying to cover both of the aspects.


AMD are making no obvious moves to add PKS, and I expect MSRLIST is even
lower down their priority list.

Overall, we need checks here for every guest-visible feature which:
* has VMCS/VMCB controls which are enumerated separately
* needs new context switching considerations

Maybe the "if ( !vmx )" shouldn't really be written this way.  I'm open
to suggestions, but making it an else block isn't a solution.

~Andrew


From xen-devel-bounces@lists.xenproject.org Wed Apr 08 02:47:52 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 08 Apr 2026 02:47:52 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1275377.1561216 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wAIx8-0002QZ-Le; Wed, 08 Apr 2026 02:47:38 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1275377.1561216; Wed, 08 Apr 2026 02:47: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 1wAIx8-0002QR-Gm; Wed, 08 Apr 2026 02:47:38 +0000
Received: by outflank-mailman (input) for mailman id 1275377;
 Wed, 08 Apr 2026 02:47:36 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <marmarek@invisiblethingslab.com>) id 1wAIx6-0002QL-5a
 for xen-devel@lists.xenproject.org; Wed, 08 Apr 2026 02:47:36 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wAIx4-00643i-PB
 for xen-devel@lists.xenproject.org; Wed, 08 Apr 2026 04:47:34 +0200
Received: from [10.42.69.2] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <marmarek@invisiblethingslab.com>)
 id 69d5c1b9-5cb7-0a2a0a5109dd-0a2a4502be28-10
 for <xen-devel@lists.xenproject.org>; Wed, 08 Apr 2026 04:47:34 +0200
Received: from [202.12.124.156] (helo=fhigh-b5-smtp.messagingengine.com)
 by tlsNG-720697.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.0)
 (envelope-from <marmarek@invisiblethingslab.com>)
 id 69d5c1c5-42fa-0a2a45020019-ca0c7c9cd8ed-3
 for <xen-devel@lists.xenproject.org>; Wed, 08 Apr 2026 04:47:34 +0200
Received: from phl-compute-06.internal (phl-compute-06.internal [10.202.2.46])
 by mailfhigh.stl.internal (Postfix) with ESMTP id 8A00B7A0010;
 Tue,  7 Apr 2026 22:47:32 -0400 (EDT)
Received: from phl-frontend-03 ([10.202.2.162])
 by phl-compute-06.internal (MEProxy); Tue, 07 Apr 2026 22:47:32 -0400
Received: by mail.messagingengine.com (Postfix) with ESMTPA; Tue,
 7 Apr 2026 22:47:31 -0400 (EDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@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=1775616452;
	 x=1775702852; bh=S+ckoboVkyQ99dwh0PNSzJ4p927XjfN5Li5bhcCuPkQ=; b=
	Zd6XHFDhdzT3rtGIMXSBUSVwXu58C673Vgt0pP+8h3Y3+UBpDJGId5KJvHmbTJ3o
	3EmxVz1GiR1u6ejdeUJY6+1RNYDM//S9X1FEot0HTm1Tdh6wy078hWllS6+0IIOJ
	sirm6EEPmvaJb6iCImWtfszoHjpY7G61ka+P20MjtZlX0b3uR9FGo8vk/fNoartZ
	3o200+PIddSClfkeGrW+BLkr3pmHq9uDlFYVP/19CFIpyjKtSvV/+qurxoCMDymu
	0QcItL1s75IMb/Q/SFqDGY6dSP+Cgw+6kHTCfbgpfy5EPzL2WMlSZMRTdOHHA3ax
	DXulCBCYzF8d7BOcyeFh2Q==
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=
	1775616452; x=1775702852; bh=S+ckoboVkyQ99dwh0PNSzJ4p927XjfN5Li5
	bhcCuPkQ=; b=OSXjuaywefDlEAeNoW5XrE3DIPfIHtVTeXGDQlDY9sy4EzgGcc2
	G7W1Khm29vJKKrAW2jquaBjHkA/TwKiC/gWzMj+nJDHkA810PkpCu8qtPodxRLGX
	oz31HTnW6aOWUiPSt+ffrHV+zf+kNo7uz85AzKTOC/hhmoJbrPFpa1gsTziphXmu
	fF3DTz5CZysd03SEeI/51yFN/kQx2b+J9ROBTzZ7Sa7n2jpR1QyENuTwhimKv36E
	chC8UCWpnrRjtvlVQtn2DIoJNkeHExyasIM1KZB3Xm4CHSdZuArwvjoNcIbeHq+C
	yZTZTcZayzr2FlInN/UgaEIvlYE6RhtTaDg==
X-ME-Sender: <xms:xMHVabjFiu9bXTnWAQum7J8Mr-oLURmk8raCwcDLnN8Zayb-UpGHfA>
    <xme:xMHVae5lhpyM5yE4GMskeWlU5MdNEe0r1P49yko0R1pzFV2se9cfXXTopBzLG6otR
    8C_liA9018FORTyl6m9U5lAaZMVhW_H0FlgcfISerxNR7IkjQ>
X-ME-Received: <xmr:xMHVaTbNR2O2Sy4o1-V2L7StLlB5SKXfIbZWL8qMloNnBIGjQ55oyvawoaRT5SANtgcb7lx8fjopSALJcUOyOK5Gjc-CTVdLjT8>
X-ME-Proxy-Cause: gggruggvucftvghtrhhoucdtuddrgeefhedrtddtgddvvdegtdcutefuodetggdotefrod
    ftvfcurfhrohhfihhlvgemucfhrghsthforghilhdpuffrtefokffrpgfnqfghnecuuegr
    ihhlohhuthemuceftddtnecusecvtfgvtghiphhivghnthhsucdlqddutddtmdenucfjug
    hrpeffhffvvefukfhfgggtuggjsehgtderredttdejnecuhfhrohhmpeforghrvghkucfo
    rghrtgiihihkohifshhkihdqifpkrhgvtghkihcuoehmrghrmhgrrhgvkhesihhnvhhish
    hisghlvghthhhinhhgshhlrggsrdgtohhmqeenucggtffrrghtthgvrhhnpedvieegfefg
    ieejuedutefhffehjeegjeevuedtgeduteeujeetveevudevieffkeenucffohhmrghinh
    epghhithhhuhgsrdgtohhmpdhkvghrnhgvlhdrohhrghenucevlhhushhtvghrufhiiigv
    pedtnecurfgrrhgrmhepmhgrihhlfhhrohhmpehmrghrmhgrrhgvkhesihhnvhhishhisg
    hlvghthhhinhhgshhlrggsrdgtohhmpdhnsggprhgtphhtthhopeehpdhmohguvgepshhm
    thhpohhuthdprhgtphhtthhopehkvghvihhnrdgsrhhoughskhihsegrrhhmrdgtohhmpd
    hrtghpthhtohepjhhgrhhoshhssehsuhhsvgdrtghomhdprhgtphhtthhopegrnhgurhgv
    fidrtghoohhpvghrfeestghithhrihigrdgtohhmpdhrtghpthhtohepgigvnhdquggvvh
    gvlheslhhishhtshdrgigvnhhprhhojhgvtghtrdhorhhgpdhrtghpthhtohepsghorhhi
    shdrohhsthhrohhvshhkhiesohhrrggtlhgvrdgtohhm
X-ME-Proxy: <xmx:xMHVaT4OWk-IN3ibhJGmP-r2q23DvIxWadZ3XmspcpZVoZyKyVYDTA>
    <xmx:xMHVaWCBYcxwjYre8V8fQW6pPV-SO9aj_NrXZujOdHjDwIjYEbQJUQ>
    <xmx:xMHVaZevPCi15Y2FFDPGnwlqIFVn3gIhvfYcyNkZ-YuPCVFnCpzipA>
    <xmx:xMHVaVK1Bc_5MhTHH2pm8zHx6-w7RgF-ab6FEVEgs9iXyWMmqcXzaw>
    <xmx:xMHVaXMorHxodo9VGu2ENyCZ32wC_LCfEyEwIiF6ov1SSmHyaM3cxHbe>
Feedback-ID: i1568416f:Fastmail
Date: Wed, 8 Apr 2026 04:47:29 +0200
From: Marek =?utf-8?Q?Marczykowski-G=C3=B3recki?= <marmarek@invisiblethingslab.com>
To: Kevin Brodsky <kevin.brodsky@arm.com>
Cc: =?utf-8?B?SsO8cmdlbiBHcm/Dnw==?= <jgross@suse.com>,
	Andrew Cooper <andrew.cooper3@citrix.com>,
	xen-devel <xen-devel@lists.xenproject.org>,
	Boris Ostrovsky <boris.ostrovsky@oracle.com>
Subject: Re: kernel BUG around vmap/vfree -
 xen_enter_lazy_mmu()/xen_leave_lazy_mmu() - Linux 7.0-rc1
Message-ID: <adXBwU9KAdb2gNeB@mail-itl>
References: <aaBH3EAchUwKhrUA@mail-itl>
 <c2f973a0-fcb5-48ea-9638-cd73fa3e37ce@citrix.com>
 <c712c06f-7fcf-4876-b2d7-f2b7bc6f0dea@suse.com>
 <adIuP7-sNwuOid80@mail-itl>
 <5d068304-837d-4aef-b8a7-87c91ccf96b4@arm.com>
MIME-Version: 1.0
Content-Type: multipart/signed; micalg=pgp-sha256;
	protocol="application/pgp-signature"; boundary="MOg8fIXj0kDdUuxl"
Content-Disposition: inline
In-Reply-To: <5d068304-837d-4aef-b8a7-87c91ccf96b4@arm.com>
X-purgate-ID: tlsNG-720697/1775616454-45132CD1-6BF24663/0/0
X-purgate-type: clean
X-purgate-size: 16199


--MOg8fIXj0kDdUuxl
Content-Type: text/plain; protected-headers=v1; charset=utf-8
Content-Disposition: inline
Content-Transfer-Encoding: quoted-printable
Date: Wed, 8 Apr 2026 04:47:29 +0200
From: Marek =?utf-8?Q?Marczykowski-G=C3=B3recki?= <marmarek@invisiblethingslab.com>
To: Kevin Brodsky <kevin.brodsky@arm.com>
Cc: =?utf-8?B?SsO8cmdlbiBHcm/Dnw==?= <jgross@suse.com>,
	Andrew Cooper <andrew.cooper3@citrix.com>,
	xen-devel <xen-devel@lists.xenproject.org>,
	Boris Ostrovsky <boris.ostrovsky@oracle.com>
Subject: Re: kernel BUG around vmap/vfree -
 xen_enter_lazy_mmu()/xen_leave_lazy_mmu() - Linux 7.0-rc1

On Tue, Apr 07, 2026 at 11:23:17AM +0200, Kevin Brodsky wrote:
> On 05/04/2026 11:41, Marek Marczykowski-G=C3=B3recki wrote:
> > On Thu, Feb 26, 2026 at 02:41:12PM +0100, J=C3=BCrgen Gro=C3=9F wrote:
> >> On 26.02.26 14:27, Andrew Cooper wrote:
> >>> On 26/02/2026 1:17 pm, Marek Marczykowski-G=C3=B3recki wrote:
> >>>> Hi,
> >>>>
> >>>> When testing Linux 7.0-rc1 in PV dom0, I hit the following panic
> >>>> sometimes:
> >>>>
> >>>> [  436.849614] ------------[ cut here ]------------
> >>>> [  436.849669] kernel BUG at arch/x86/include/asm/xen/hypervisor.h:7=
8!
> >>>> [  436.849693] Oops: invalid opcode: 0000 [#1] SMP NOPTI
> >>>> [  436.849710] CPU: 3 UID: 0 PID: 4021 Comm: kworker/u25:1 Not taint=
ed 7.0.0-0.rc1.1.qubes.1001.fc41.x86_64 #1 PREEMPT(full)
> >>>> [  436.849729] Hardware name: Star Labs StarBook/StarBook, BIOS 8.97=
 10/03/2023
> >>>> [  436.849743] Workqueue: i915_flip intel_atomic_commit_work [i915]
> >>>> [  436.850226] RIP: e030:xen_enter_lazy_mmu+0x24/0x30
> >>>> [  436.850245] Code: 90 90 90 90 90 90 f3 0f 1e fa 0f 1f 44 00 00 65=
 8b 05 b8 e5 02 03 85 c0 75 10 65 c7 05 a9 e5 02 03 01 00 00 00 c3 cc cc cc=
 cc <0f> 0b 66 2e 0f 1f 84 00 00 00 00 00 90 90 90 90 90 90 90 90 90 90
> >>>> [  436.850270] RSP: e02b:ffffc90045727a68 EFLAGS: 00010202
> >>>> [  436.850283] RAX: 0000000000000001 RBX: ffff8881042fa6d0 RCX: 000f=
ffffffe00000
> >>>> [  436.850296] RDX: 0000000000000001 RSI: ffff88810a5a2980 RDI: 0000=
000000000000
> >>>> [  436.850308] RBP: ffffc90049eda000 R08: ffffc90049edc000 R09: ffff=
c90049edc000
> >>>> [  436.850320] R10: ffffc90049edc000 R11: ffffc90049edbfff R12: ffff=
c90049edc000
> >>>> [  436.850332] R13: ffffc90045727bb0 R14: ffffc90045727b28 R15: 8000=
00000000006b
> >>>> [  436.850356] FS:  0000000000000000(0000) GS:ffff888201e6e000(0000)=
 knlGS:0000000000000000
> >>>> [  436.850371] CS:  e030 DS: 0000 ES: 0000 CR0: 0000000080050033
> >>>> [  436.850383] CR2: 00006543dbade250 CR3: 0000000115ef1000 CR4: 0000=
000000050660
> >>>> [  436.850401] Call Trace:
> >>>> [  436.850410]  <TASK>
> >>>> [  436.850420]  vmap_pages_pud_range+0x47c/0x530
> >>>> [  436.850439]  vmap_small_pages_range_noflush+0x1f1/0x2b0
> >>>> [  436.850451]  ? __get_vm_area_node+0x10a/0x170
> >>>> [  436.850465]  vmap+0x79/0xd0
> >>>> [  436.850476]  i915_gem_object_map_page+0x13b/0x210 [i915]
> >>>> [  436.850812]  i915_gem_object_pin_map+0x1e2/0x210 [i915]
> >>>> [  436.851123]  i915_gem_object_pin_map_unlocked+0x2d/0xa0 [i915]
> >>>> [  436.851424]  intel_dsb_buffer_create+0xed/0x1a0 [i915]
> >>>> [  436.851778]  intel_dsb_prepare+0xca/0x1a0 [i915]
> >>>> [  436.852110]  intel_atomic_dsb_finish+0x92/0x350 [i915]
> >>>> [  436.852456]  intel_atomic_commit_tail+0x326/0xd40 [i915]
> >>>> [  436.852769]  process_one_work+0x18d/0x380
> >>>> [  436.852779]  worker_thread+0x196/0x300
> >>>> [  436.852787]  ? __pfx_worker_thread+0x10/0x10
> >>>> [  436.852796]  kthread+0xe3/0x120
> >>>> [  436.852805]  ? __pfx_kthread+0x10/0x10
> >>>> [  436.852815]  ret_from_fork+0x19e/0x260
> >>>> [  436.852824]  ? __pfx_kthread+0x10/0x10
> >>>> [  436.852832]  ret_from_fork_asm+0x1a/0x30
> >>>> [  436.852842]  </TASK>
> >>>> [  436.852847] Modules linked in: snd_seq_dummy snd_hrtimer snd_hda_=
codec_intelhdmi snd_hda_codec_hdmi snd_hda_codec_alc269 snd_hda_codec_realt=
ek_lib snd_hda_scodec_component snd_hda_codec_generic snd_hda_intel snd_sof=
_pci_intel_tgl snd_sof_pci_intel_cnl snd_sof_intel_hda_generic soundwire_in=
tel snd_sof_intel_hda_sdw_bpt snd_sof_intel_hda_common snd_soc_hdac_hda snd=
_sof_intel_hda_mlink snd_sof_intel_hda soundwire_cadence snd_sof_pci snd_so=
f_xtensa_dsp snd_sof snd_sof_utils snd_soc_acpi_intel_match snd_soc_acpi_in=
tel_sdca_quirks soundwire_generic_allocation snd_soc_sdw_utils snd_soc_acpi=
 crc8 intel_rapl_msr soundwire_bus intel_rapl_common snd_soc_sdca snd_soc_a=
vs snd_soc_hda_codec snd_hda_ext_core snd_hda_codec vfat intel_uncore_frequ=
ency_common fat snd_hda_core snd_intel_dspcfg snd_intel_sdw_acpi snd_hwdep =
intel_powerclamp snd_soc_core iwlwifi snd_compress spi_nor iTCO_wdt ac97_bu=
s intel_pmc_bxt ee1004 mtd snd_pcm_dmaengine snd_seq cfg80211 snd_seq_devic=
e pcspkr spi_intel_pci snd_pcm rfkill spi_intel snd_timer snd
> >>>> [  436.852939]  i2c_i801 soundcore i2c_smbus idma64 intel_pmc_core p=
mt_telemetry pmt_discovery pmt_class intel_hid intel_pmc_ssram_telemetry in=
tel_scu_pltdrv sparse_keymap joydev loop fuse xenfs nfnetlink vsock_loopbac=
k vmw_vsock_virtio_transport_common vmw_vsock_vmci_transport vsock zram vmw=
_vmci lz4hc_compress lz4_compress dm_thin_pool dm_persistent_data dm_bio_pr=
ison dm_crypt xe drm_ttm_helper drm_suballoc_helper gpu_sched drm_gpuvm drm=
_exec drm_gpusvm_helper i915 i2c_algo_bit drm_buddy hid_multitouch i2c_hid_=
acpi ghash_clmulni_intel video nvme wmi ttm i2c_hid nvme_core nvme_keyring =
drm_display_helper nvme_auth xhci_pci pinctrl_tigerlake thunderbolt hkdf ce=
c xhci_hcd intel_vsec serio_raw xen_acpi_processor xen_privcmd xen_pciback =
xen_blkback xen_gntalloc xen_gntdev xen_evtchn scsi_dh_rdac scsi_dh_emc scs=
i_dh_alua uinput i2c_dev
> >>>> [  436.853183] ---[ end trace 0000000000000000 ]---
> >>>>
> >>>> or this:
> >>>>
> >>>> [  548.736884] ------------[ cut here ]------------
> >>>> [  548.736907] kernel BUG at arch/x86/include/asm/xen/hypervisor.h:8=
5!
> >>>> [  548.736923] Oops: invalid opcode: 0000 [#1] SMP NOPTI
> >>>> [  548.736935] CPU: 0 UID: 0 PID: 206 Comm: kworker/0:2 Not tainted =
7.0.0-0.rc1.1.qubes.1001.fc41.x86_64 #1 PREEMPT(full)
> >>>> [  548.736949] Hardware name: LENOVO 2347A45/2347A45, BIOS CBET4000 =
Nitrokey-v0.2.0-2608-ga649597 01/01/1970
> >>>> [  548.736962] Workqueue: events delayed_vfree_work
> >>>> [  548.736976] RIP: e030:xen_leave_lazy_mmu+0x44/0x50
> >>>> [  548.736989] Code: 02 03 83 f8 01 75 23 65 c7 05 6c e4 02 03 00 00=
 00 00 65 ff 0d 7d b8 02 03 74 05 c3 cc cc cc cc e8 61 5d fd ff c3 cc cc cc=
 cc <0f> 0b 66 2e 0f 1f 84 00 00 00 00 00 90 90 90 90 90 90 90 90 90 90
> >>>> [  548.737010] RSP: e02b:ffffc90040607cf0 EFLAGS: 00010297
> >>>> [  548.737018] RAX: 0000000000000000 RBX: ffff888164a70408 RCX: 0000=
000000000000
> >>>> [  548.737029] RDX: 0000000000000000 RSI: 000ffffffffff000 RDI: ffff=
8881069c0000
> >>>> [  548.737039] RBP: ffffc90049681000 R08: ffffc90049681000 R09: 0000=
000000000027
> >>>> [  548.737050] R10: 0000000000000027 R11: fefefefefefefeff R12: ffff=
c90049681000
> >>>> [  548.737060] R13: ffff8881002fd258 R14: 0000000000000000 R15: ffff=
c90040607dac
> >>>> [  548.737079] FS:  0000000000000000(0000) GS:ffff8881f88ee000(0000)=
 knlGS:0000000000000000
> >>>> [  548.737090] CS:  e030 DS: 0000 ES: 0000 CR0: 0000000080050033
> >>>> [  548.737099] CR2: 000055576c2e6058 CR3: 000000010d47b000 CR4: 0000=
000000050660
> >>>> [  548.737115] Call Trace:
> >>>> [  548.737123]  <TASK>
> >>>> [  548.737128]  vunmap_pmd_range.isra.0+0x1f1/0x2e0
> >>>> [  548.737142]  vunmap_p4d_range+0x17d/0x290
> >>>> [  548.737151]  __vunmap_range_noflush+0x182/0x1d0
> >>>> [  548.737161]  ? _raw_spin_unlock+0xe/0x30
> >>>> [  548.737171]  remove_vm_area+0x40/0x70
> >>>> [  548.737180]  vfree.part.0+0x1b/0x290
> >>>> [  548.737189]  delayed_vfree_work+0x35/0x50
> >>>> [  548.737198]  process_one_work+0x18d/0x380
> >>>> [  548.737207]  worker_thread+0x196/0x300
> >>>> [  548.737215]  ? __pfx_worker_thread+0x10/0x10
> >>>> [  548.737224]  kthread+0xe3/0x120
> >>>> [  548.737233]  ? __pfx_kthread+0x10/0x10
> >>>> [  548.737242]  ret_from_fork+0x19e/0x260
> >>>> [  548.737250]  ? __pfx_kthread+0x10/0x10
> >>>> [  548.737258]  ret_from_fork_asm+0x1a/0x30
> >>>> [  548.737269]  </TASK>
> >>>> [  548.737274] Modules linked in: vfat fat snd_seq_dummy snd_hrtimer=
 ath9k ath9k_common snd_hda_codec_intelhdmi snd_hda_codec_hdmi ath9k_hw snd=
_hda_codec_alc269 snd_hda_codec_realtek_lib snd_hda_scodec_component snd_hd=
a_codec_generic snd_hda_intel snd_hda_codec mac80211 snd_hda_core snd_intel=
_dspcfg snd_intel_sdw_acpi snd_hwdep ath snd_seq snd_seq_device snd_ctl_led=
 cfg80211 snd_pcm at24 thinkpad_acpi intel_rapl_msr i2c_i801 snd_timer spar=
se_keymap iTCO_wdt intel_rapl_common platform_profile intel_powerclamp inte=
l_pmc_bxt pcspkr i2c_smbus rfkill libarc4 snd soundcore mei_me e1000e mei j=
oydev lpc_ich loop fuse xenfs nfnetlink vsock_loopback vmw_vsock_virtio_tra=
nsport_common vmw_vsock_vmci_transport vsock zram vmw_vmci lz4hc_compress l=
z4_compress dm_thin_pool dm_persistent_data dm_bio_prison dm_crypt i915 i2c=
_algo_bit drm_buddy ghash_clmulni_intel ttm sdhci_pci drm_display_helper sd=
hci_uhs2 sdhci video xhci_pci cqhci wmi cec xhci_hcd ehci_pci mmc_core ehci=
_hcd serio_raw xen_acpi_processor xen_privcmd xen_pciback
> >>>> [  548.737348]  xen_blkback xen_gntalloc xen_gntdev xen_evtchn scsi_=
dh_rdac scsi_dh_emc scsi_dh_alua uinput i2c_dev
> >>>> [  548.737469] ---[ end trace 0000000000000000 ]---
> >>>>
> >>>> I don't have clear pattern when this happens, one was during host
> >>>> suspend, but the other was during "normal" test run (starting/stoppi=
ng
> >>>> domUs and running stuff around them). Note also one of those is Intel
> >>>> and the other AMD, so it isn't really hardware specific.
> >>>>
> >>>> Slightly more details with links (especially serial0.txt in the logs
> >>>> tab) at
> >>>> https://github.com/QubesOS/qubes-linux-kernel/pull/662#issuecomment-=
3963326188
> >>>>
> >>>> Any idea?
> >>>>
> >>> That looks like the issue Juergen fixed with:
> >>>
> >>> https://lore.kernel.org/xen-devel/20260220123715.834848-1-jgross@suse=
=2Ecom/
> >> No, it doesn't. The fix is already in rc1, and the crash was quite ear=
ly during
> >> boot (before any secondary CPUs were brought up).
> >>
> >> I guess this problem is related to the lazy_mmu_state series [1].
>=20
> That may well be the case - it seems that xen_enter_lazy_mmu() is called
> while already in lazy MMU mode (first splat), and xen_leave_lazy_mmu()
> is called without being in lazy MMU mode (second splat). I expect this
> is something specific to Xen, which I didn't get the chance to test.
>=20
> Looking at the series again I don't see anything obviously wrong, but I
> think the riskiest change is commit 291b3abed657 ("x86/xen: use
> lazy_mmu_state when context-switching") - worth trying to revert it.

With that reverted (on top of 7.0-rc6, didn't updated to rc7 yet), I
still got panic, although might be a bit different one:

[    8.099973] BUG: unable to handle page fault for address: ffff8880080006=
70
[    8.100004] #PF: supervisor write access in kernel mode
[    8.100021] #PF: error_code(0x0003) - permissions violation
[    8.100037] PGD 3a00067 P4D 3a00067 PUD 3a01067 PMD 7cd7063 PTE 80000000=
08000021
[    8.100063] Oops: Oops: 0003 [#1] SMP PTI
[    8.100079] CPU: 0 UID: 0 PID: 226 Comm: kworker/0:2 Not tainted 7.0.0-0=
=2Erc6.1.qubes.1001.fc41.x86_64 #1 PREEMPT(full)=20
[    8.100110] Workqueue: events do_free_init
[    8.100126] RIP: 0010:native_set_pte+0x4/0x10
[    8.100145] Code: 00 03 c3 cc cc cc cc 66 66 2e 0f 1f 84 00 00 00 00 00 =
0f 1f 40 00 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 f3 0f 1e fa <48=
> 89 37 c3 cc cc cc cc 0f 1f 40 00 90 90 90 90 90 90 90 90 90 90
[    8.100195] RSP: 0018:ffffc90000c97c48 EFLAGS: 00010287
[    8.100212] RAX: e00c4f3d8b48c03e RBX: ffff888008000670 RCX: e0000000000=
0003e
[    8.100234] RDX: e00c4f3d8b48c13e RSI: e00c4f3d8b48c03e RDI: ffff8880080=
00670
[    8.100260] RBP: e00c4f3d8b48c13e R08: 0000000000000000 R09: 00000000000=
00001
[    8.100282] R10: 0000003b0c274b73 R11: e00000000000013e R12: ffffc90000c=
97cf0
[    8.100304] R13: ffffffffc04ce000 R14: fffc4f3d8b48cfff R15: e0000000000=
0013e
[    8.100327] FS:  0000000000000000(0000) GS:ffff888094e81000(0000) knlGS:=
0000000000000000
[    8.100350] CS:  0010 DS: 0000 ES: 0000 CR0: 0000000080050033
[    8.100369] CR2: ffff888008000670 CR3: 000000000242e003 CR4: 00000000001=
706f0
[    8.100394] Call Trace:
[    8.100404]  <TASK>
[    8.100413]  __change_page_attr+0x24f/0x350
[    8.100429]  __change_page_attr_set_clr+0x61/0xd0
[    8.100446]  change_page_attr_set_clr+0x103/0x1a0
[    8.100467]  set_memory_nx+0x39/0x50
[    8.100481]  __execmem_cache_free+0x35/0xb0
[    8.100496]  execmem_free+0x9f/0x180
[    8.100510]  ? nft_chain_nat_exit+0xe70/0xe70 [nft_chain_nat]
[    8.100531]  do_free_init+0x2e/0x60
[    8.100545]  process_one_work+0x198/0x390
[    8.100559]  worker_thread+0x1af/0x320
[    8.100573]  ? __pfx_worker_thread+0x10/0x10
[    8.103338]  kthread+0xe3/0x120
[    8.103355]  ? __pfx_kthread+0x10/0x10
[    8.103369]  ret_from_fork+0x19e/0x260
[    8.103384]  ? __pfx_kthread+0x10/0x10
[    8.103397]  ret_from_fork_asm+0x1a/0x30
[    8.103412]  </TASK>
[    8.103421] Modules linked in: xenfs nft_reject_inet nf_reject_ipv4 nf_r=
eject_ipv6 nft_reject nft_redir nft_ct nft_chain_nat nf_nat nf_conntrack nf=
_defrag_ipv6 nf_defrag_ipv4 nf_tables binfmt_misc intel_rapl_msr intel_rapl=
_common ghash_clmulni_intel xen_netfront xen_privcmd xen_gntdev xen_gntallo=
c xen_blkback xen_evtchn fuse loop nfnetlink ip_tables overlay xen_blkfront
[    8.103529] CR2: ffff888008000670
[    8.103542] ---[ end trace 0000000000000000 ]---
[    8.103558] RIP: 0010:native_set_pte+0x4/0x10
[    8.103576] Code: 00 03 c3 cc cc cc cc 66 66 2e 0f 1f 84 00 00 00 00 00 =
0f 1f 40 00 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 f3 0f 1e fa <48=
> 89 37 c3 cc cc cc cc 0f 1f 40 00 90 90 90 90 90 90 90 90 90 90
[    8.103625] RSP: 0018:ffffc90000c97c48 EFLAGS: 00010287
[    8.103641] RAX: e00c4f3d8b48c03e RBX: ffff888008000670 RCX: e0000000000=
0003e
[    8.103664] RDX: e00c4f3d8b48c13e RSI: e00c4f3d8b48c03e RDI: ffff8880080=
00670
[    8.103686] RBP: e00c4f3d8b48c13e R08: 0000000000000000 R09: 00000000000=
00001
[    8.103708] R10: 0000003b0c274b73 R11: e00000000000013e R12: ffffc90000c=
97cf0
[    8.103730] R13: ffffffffc04ce000 R14: fffc4f3d8b48cfff R15: e0000000000=
0013e
[    8.103753] FS:  0000000000000000(0000) GS:ffff888094e81000(0000) knlGS:=
0000000000000000
[    8.103775] CS:  0010 DS: 0000 ES: 0000 CR0: 0000000080050033
[    8.103794] CR2: ffff888008000670 CR3: 000000000242e003 CR4: 00000000001=
706f0
[    8.103820] Kernel panic - not syncing: Fatal exception
[    8.103929] Kernel Offset: disabled


> If
> that doesn't help, I'd suggest bisecting the following range:
> 58852f24f956..291b3abed657

It will take some time, as the issue doesn't happen every time.

> Sorry for the trouble!
>=20
> - Kevin
>=20
> > FWIW, the issue still happens on 7.0-rc6.
> >
> >> Juergen
> >>
> >> [1]: https://lore.kernel.org/lkml/20251215150323.2218608-1-kevin.brods=
ky@arm.com/

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

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

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

iQEzBAEBCAAdFiEEhrpukzGPukRmQqkK24/THMrX1ywFAmnVwcEACgkQ24/THMrX
1yx1Mgf/RLh6CgZcJNrf48v+HsYun/qkJTgPqp0IAR/MHLzzHMNtwwiEJDFuCZLQ
U3j0Gs9hb8bMtd6dPwankJQSkibdmZ6StezSEow9MYx6v/wF6syxKC9nQo3pk5El
KoPUIJ6hqXV7nOPt2rP/dDyCjZHreaK6UtW7kuLcg6oO5qV1v70fi3vaVhT1ql23
w6p5BUrjZVPz10H0+iNmIFqhO0/OMTw2JBzIp/UjOtVsN7AXw8lQYp6sb2DuztCy
cHTcO1ULQIDexXtX8MmuhT3nY1ziOGQgEnyYnCjzZV4wy2rba+4pUNrQ+31TA23S
eEabTMMPj3sU48N6Ag+DDuATVa9aiw==
=hUuY
-----END PGP SIGNATURE-----

--MOg8fIXj0kDdUuxl--


From xen-devel-bounces@lists.xenproject.org Wed Apr 08 03:48:04 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 08 Apr 2026 03:48:04 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1275385.1561224 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wAJtP-0001bw-T7; Wed, 08 Apr 2026 03:47:51 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1275385.1561224; Wed, 08 Apr 2026 03:47: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 1wAJtP-0001bp-QL; Wed, 08 Apr 2026 03:47:51 +0000
Received: by outflank-mailman (input) for mailman id 1275385;
 Wed, 08 Apr 2026 03:47:50 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <vijayanand.jitta@oss.qualcomm.com>)
 id 1wAJtO-0001bT-Ew
 for xen-devel@lists.xenproject.org; Wed, 08 Apr 2026 03:47:50 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wAJtL-00Ds6S-TK
 for xen-devel@lists.xenproject.org; Wed, 08 Apr 2026 05:47:47 +0200
Received: from [10.42.69.6] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <vijayanand.jitta@oss.qualcomm.com>)
 id 69d5cf98-e002-0a2a0a5209dd-0a2a4506abce-32
 for <xen-devel@lists.xenproject.org>; Wed, 08 Apr 2026 05:47:47 +0200
Received: from [205.220.180.131] (helo=mx0b-0031df01.pphosted.com)
 by tlsNG-16d1c6.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.0)
 (envelope-from <vijayanand.jitta@oss.qualcomm.com>)
 id 69d5cfe2-0df0-0a2a45060019-cddcb48368da-3
 for <xen-devel@lists.xenproject.org>; Wed, 08 Apr 2026 05:47:47 +0200
Received: from pps.filterd (m0279873.ppops.net [127.0.0.1])
 by mx0a-0031df01.pphosted.com (8.18.1.11/8.18.1.11) with ESMTP id
 637J6Znx071718
 for <xen-devel@lists.xenproject.org>; Wed, 8 Apr 2026 03:47:45 GMT
Received: from mail-pl1-f199.google.com (mail-pl1-f199.google.com
 [209.85.214.199])
 by mx0a-0031df01.pphosted.com (PPS) with ESMTPS id 4dd7sx9b7y-1
 (version=TLSv1.3 cipher=TLS_AES_128_GCM_SHA256 bits=128 verify=NOT)
 for <xen-devel@lists.xenproject.org>; Wed, 08 Apr 2026 03:47:45 +0000 (GMT)
Received: by mail-pl1-f199.google.com with SMTP id
 d9443c01a7336-2b24a00d12cso63228735ad.1
 for <xen-devel@lists.xenproject.org>; Tue, 07 Apr 2026 20:47:45 -0700 (PDT)
Received: from [10.219.57.109] ([202.46.23.19])
 by smtp.gmail.com with ESMTPSA id
 d9443c01a7336-2b27478b64csm194156625ad.30.2026.04.07.20.47.33
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Tue, 07 Apr 2026 20:47:43 -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=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: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=qualcomm.com; h=
	cc:content-transfer-encoding:content-type:date:from:in-reply-to
	:message-id:mime-version:references:subject:to; s=qcppdkim1; bh=
	Y5GqDnKn52rUOOKe43UhTsLV1PBh6CrPSK05M/M7TzU=; b=DquyzA2Vf1Yevkcc
	ZrdAzF3JRX7sEPuqvNjEnuv1kpB8b+YREurAOYRZx5WAt/g2Js1VA6rI27HSqMXo
	UMCb/9cM5rt1ZYjcsuvGWl2bfqRYXkdb/uVuBsVv3S9WknVIqfKnJh6lfLpIHCJg
	9IUQE2nY6cFF2ypn1jieQjuymNiOogMutndGk2dlGUlGS9lKWQbZFXA6LWU8q1dZ
	JiZzeXWLO5CBHRwd4dylqnu+RedxsoYjO2jX/EAPejAgrwafivbwjW3SC6L+Fp8O
	3xC1heXYvzX0c/k2zPTwagU3QWjOOJOVusysRZvZevb+NHOwl9fcbbA3SAZY8wti
	/0h3NA==
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=oss.qualcomm.com; s=google; t=1775620064; x=1776224864; darn=lists.xenproject.org;
        h=content-transfer-encoding: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;
        bh=Y5GqDnKn52rUOOKe43UhTsLV1PBh6CrPSK05M/M7TzU=;
        b=QZ0eBr8abBkTdnY0mIl2Cq5/cQEjyyFwj3l1Q1k7jq4NtYlyhDyr+acvo/h3+Zjxsc
         VCTbe5JQ1oTGitIGSQRGPm0b4axQB3WaiOtMJIpTOTgsOpzSrXEpYDA1NYWKmam0qdjz
         rbcaXsm/Z9W/flAPq2SfENkq2Qopz8+xIdkHWDMw1xfoMqIQ2o3W+FjMasS3OT62E7/L
         h564kDcfND5t7cVGWVvd2Nq9iNwOEUuWham1PiU4yE6ZAaZjglIvkj939D6c3Ey1M8bs
         B2n2Dwqkto6csY+0RWMSuZTIcmIvbFj0bXkCe2ttBOwESNdlNVKq8yI1OPtAuzbE5xU3
         9RxQ==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20251104; t=1775620064; x=1776224864;
        h=content-transfer-encoding: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;
        bh=Y5GqDnKn52rUOOKe43UhTsLV1PBh6CrPSK05M/M7TzU=;
        b=PdmRfXZPnKlJ1Aq5ZJmxQu3gNUMpFk+mIjazuunZsm/nCnxROnoyE1HKFaLZIG+do7
         V08yAYrd8OSMEeIwDvW1L0tcnY13bNCDOGYgla/PEuBjT8w01MRYV3+QFUyPAmB4eMPN
         eEVysVH043BxlkM1fGK+7Qhi6QpSBvw9SGoKYU+ysecHn7aDf3PWvWzS85hzmTc7Rkc4
         FBqn00RAwOmfflJv0IiQzMBJcqEWheoJKQZJtGgXvEbvQZBMCCUcfrkEScMus76z0jpO
         FR4WUvt7ZIKET4mR6anRVZYvmUEYkD8fEl8u9bA1MVgzQbrWKIiRkDNAduZkfuCrHrPR
         EBwg==
X-Forwarded-Encrypted: i=1; AJvYcCW7wZXj1a3h656Frybv7kYP4hD2cpIT5Lf7pekLdDQv/JP8RlZs7d0Wrt8BQCUNVh50RJK/a36SmIw=@lists.xenproject.org
X-Gm-Message-State: AOJu0Yz4KAby6SHq+oBR1ZoR0UjyNBeQtYPUSL708qf8wHt1qp1gSv/V
	OLClPlbjOUTrvxeIHhe5Xqbna1tLfN0iNyl/8ukgQ5eZs7vgPWMCZAL49D7Dg4o5eZredGjhOs2
	mShMpW3z+uoOpcsNu8Yj3X70c6Ma7prqkhDPRbDBo3ol6sykcSgX6C3FOsb2Vv0B2WhHqaA==
X-Gm-Gg: AeBDieulgK7MdGztW91PbybPxRnI1pFBmmpkGX4BJ7SCat6/iOmGfXcWSpdSd47y1JE
	fx5TFYnXR2zG5lD3xvFkTg78yI9ZcTC6Yoi1m40PbHWMC72DmrPUKRIYmEziJa3Abw92WhrGjy9
	amAeGuUhBOT0P3HHxm1o+AwFVtRcPMj6jd9x0xlmg29AOgQml9czl8NSXCRatT4CuTxoxMTpfBx
	gVOGmUQl6Cfk3oxzbB4nq3qQ006iI0p05vQ9IMlOYxdii6CknkZTZ6095ND3GcaP+edaxHI0wfa
	B6BOMwt9RW6FT6MuOMAmrLKFo4V3MLJbt9kz9dfetBqAmSYwua9enHCmS/n1bvauIL2u+UXEwi3
	g6HH8QtQR5lsr2RJvD5uOBbNcLycxQdSRYfkvVfH0yGKXVYRva/EWEl3f
X-Received: by 2002:a17:903:2ec7:b0:2b2:454f:b951 with SMTP id d9443c01a7336-2b28176a3cemr203121675ad.29.1775620064290;
        Tue, 07 Apr 2026 20:47:44 -0700 (PDT)
X-Received: by 2002:a17:903:2ec7:b0:2b2:454f:b951 with SMTP id d9443c01a7336-2b28176a3cemr203121315ad.29.1775620063681;
        Tue, 07 Apr 2026 20:47:43 -0700 (PDT)
Message-ID: <92ee00a9-0094-4481-9156-709b94ba3b82@oss.qualcomm.com>
Date: Wed, 8 Apr 2026 09:16:39 +0530
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH v12 3/3] of: Respect #{iommu,msi}-cells in maps
To: Nipun Gupta <nipun.gupta@amd.com>,
        Nikhil Agarwal
 <nikhil.agarwal@amd.com>,
        Joerg Roedel <joro@8bytes.org>, Will Deacon <will@kernel.org>,
        Robin Murphy <robin.murphy@arm.com>, Marc Zyngier <maz@kernel.org>,
        Lorenzo Pieralisi <lpieralisi@kernel.org>,
        Thomas Gleixner <tglx@kernel.org>,
        Saravana Kannan <saravanak@kernel.org>,
        Richard Zhu <hongxing.zhu@nxp.com>,
        Lucas Stach <l.stach@pengutronix.de>,
        =?UTF-8?Q?Krzysztof_Wilczy=C5=84ski?= <kwilczynski@kernel.org>,
        Manivannan Sadhasivam <mani@kernel.org>,
        Bjorn Helgaas
 <bhelgaas@google.com>, Frank Li <Frank.Li@nxp.com>,
        Sascha Hauer <s.hauer@pengutronix.de>,
        Pengutronix Kernel Team <kernel@pengutronix.de>,
        Fabio Estevam <festevam@gmail.com>, Juergen Gross <jgross@suse.com>,
        Stefano Stabellini <sstabellini@kernel.org>,
        Oleksandr Tyshchenko <oleksandr_tyshchenko@epam.com>,
        Dmitry Baryshkov <dmitry.baryshkov@oss.qualcomm.com>,
        Konrad Dybcio <konrad.dybcio@oss.qualcomm.com>,
        Bjorn Andersson <bjorn.andersson@oss.qualcomm.com>,
        Rob Herring <robh@kernel.org>, Conor Dooley <conor+dt@kernel.org>,
        Krzysztof Kozlowski <krzk+dt@kernel.org>,
        Prakash Gupta <prakash.gupta@oss.qualcomm.com>,
        Vikash Garodia <vikash.garodia@oss.qualcomm.com>
Cc: linux-kernel@vger.kernel.org, iommu@lists.linux.dev,
        linux-arm-kernel@lists.infradead.org, devicetree@vger.kernel.org,
        linux-pci@vger.kernel.org, imx@lists.linux.dev,
        xen-devel@lists.xenproject.org, linux-arm-msm@vger.kernel.org,
        Charan Teja Kalla <charan.kalla@oss.qualcomm.com>
References: <20260331-parse_iommu_cells-v12-0-decfd305eea9@oss.qualcomm.com>
 <20260331-parse_iommu_cells-v12-3-decfd305eea9@oss.qualcomm.com>
Content-Language: en-US
From: Vijayanand Jitta <vijayanand.jitta@oss.qualcomm.com>
In-Reply-To: <20260331-parse_iommu_cells-v12-3-decfd305eea9@oss.qualcomm.com>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 7bit
X-Authority-Analysis: v=2.4 cv=etfvCIpX c=1 sm=1 tr=0 ts=69d5cfe1 cx=c_pps
 a=JL+w9abYAAE89/QcEU+0QA==:117 a=j4ogTh8yFefVWWEFDRgCtg==:17
 a=IkcTkHD0fZMA:10 a=A5OVakUREuEA:10 a=s4-Qcg_JpJYA:10
 a=VkNPw1HP01LnGYTKEx00:22 a=u7WPNUs3qKkmUXheDGA7:22 a=rJkE3RaqiGZ5pbrm-msn:22
 a=7CQSdrXTAAAA:8 a=EUspDBNiAAAA:8 a=OsyBWCJeBE2wmg0BnjgA:9 a=QEXdDO2ut3YA:10
 a=324X-CrmTo6CU4MGRt3R:22 a=a-qgeE7W1pNrGK8U0ZQC:22
X-Proofpoint-ORIG-GUID: U8d-0kMs7f8J6_CcJR3QfzqrrMY0MBgb
X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwNDA4MDAzMSBTYWx0ZWRfX1IwYNaWQUeib
 aTFZNA0JEu4boU+zo2DdRFlGoIACV9Xlm8xA0QIe29DPrQ+mRsRwi+XLXMXo/j7rPWlKBL52/g0
 Gokk5gDVIkzy2f1Ci/R/YZ0mq3swjh/2oflafswhUTwyFQrC8Tbqno75kfmatdSzWsQWrNkYPJi
 lOYuXso3SyM5fZDbyuOP465odbUPq4DI+e+2Ucnlvgo4LYj1XBDySqCIChV4Jk5kuqh94HIqQg1
 QUSI9Z0Zg6TNWbHS1Nysytx/1BDSe4qb9DCC/stlwFtBwo8DhYE1Mbr22B/kJP69IkWGgxqgn1i
 uvMCKjm0O4kjbQHn5HDaez4vvEtQKwwR97WZDITuul9ZkOzJSAmPi5Rp/zOkZRvkBx12SGqj4o3
 NaBtgtIqDEK4osMzNWaIO4XPat7rPhGT2K+Yy7mwNUEQzwzxvHa5GvNzjyJlDYrJ/YHi4mrP9iq
 HnP/jTbjphKtEcMdbHA==
X-Proofpoint-GUID: U8d-0kMs7f8J6_CcJR3QfzqrrMY0MBgb
X-Proofpoint-Virus-Version: vendor=baseguard
 engine=ICAP:2.0.293,Aquarius:18.0.1143,Hydra:6.1.51,FMLib:17.12.100.49
 definitions=2026-04-08_01,2026-04-07_05,2025-10-01_01
X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0
 priorityscore=1501 lowpriorityscore=0 phishscore=0 bulkscore=0
 impostorscore=0 suspectscore=0 spamscore=0 clxscore=1015 malwarescore=0
 adultscore=0 classifier=typeunknown authscore=0 authtc= authcc=
 route=outbound adjust=0 reason=mlx scancount=1 engine=8.22.0-2604010000
 definitions=main-2604080031
X-purgate-ID: tlsNG-16d1c6/1775620067-AE12E3D8-58714942/0/0
X-purgate-type: clean
X-purgate-size: 12730



On 3/31/2026 7:34 PM, Vijayanand Jitta wrote:
> From: Robin Murphy <robin.murphy@arm.com>
> 
> So far our parsing of {iommu,msi}-map properties has always blindly
> assumed that the output specifiers will always have exactly 1 cell.
> This typically does happen to be the case, but is not actually enforced
> (and the PCI msi-map binding even explicitly states support for 0 or 1
> cells) - as a result we've now ended up with dodgy DTs out in the field
> which depend on this behaviour to map a 1-cell specifier for a 2-cell
> provider, despite that being bogus per the bindings themselves.
> 
> Since there is some potential use in being able to map at least single
> input IDs to multi-cell output specifiers (and properly support 0-cell
> outputs as well), add support for properly parsing and using the target
> nodes' #cells values, albeit with the unfortunate complication of still
> having to work around expectations of the old behaviour too.
> 
> Since there are multi-cell output specifiers, the callers of of_map_id()
> may need to get the exact cell output value for further processing.
> Update of_map_id() to set args_count in the output to reflect the actual
> number of output specifier cells.
> 
> Signed-off-by: Robin Murphy <robin.murphy@arm.com>
> Signed-off-by: Charan Teja Kalla <charan.kalla@oss.qualcomm.com>
> Signed-off-by: Vijayanand Jitta <vijayanand.jitta@oss.qualcomm.com>
> ---
>  drivers/of/base.c  | 155 ++++++++++++++++++++++++++++++++++++++++-------------
>  include/linux/of.h |   6 ++-
>  2 files changed, 123 insertions(+), 38 deletions(-)
> 
> diff --git a/drivers/of/base.c b/drivers/of/base.c
> index b3d002015192..7b22e2484e1c 100644
> --- a/drivers/of/base.c
> +++ b/drivers/of/base.c
> @@ -2096,18 +2096,48 @@ int of_find_last_cache_level(unsigned int cpu)
>  	return cache_level;
>  }
>  
> +/*
> + * Some DTs have an iommu-map targeting a 2-cell IOMMU node while
> + * specifying only 1 cell. Fortunately they all consist of value '1'
> + * as the 2nd cell entry with the same target, so check for that pattern.
> + *
> + * Example:
> + *	IOMMU node:
> + *		#iommu-cells = <2>;
> + *
> + *	Device node:
> + *		iommu-map = <0x0000 &smmu 0x0000 0x1>,
> + *			    <0x0100 &smmu 0x0100 0x1>;
> + */
> +static bool of_check_bad_map(const __be32 *map, int len)
> +{
> +	__be32 phandle = map[1];
> +
> +	if (len % 4)
> +		return false;
> +	for (int i = 0; i < len; i += 4) {
> +		if (map[i + 1] != phandle || map[i + 3] != cpu_to_be32(1))
> +			return false;
> +	}
> +	return true;
> +}
> +
>  /**
>   * of_map_id - Translate an ID through a downstream mapping.
>   * @np: root complex device node.
>   * @id: device ID to map.
>   * @map_name: property name of the map to use.
> + * @cells_name: property name of target specifier cells.
>   * @map_mask_name: optional property name of the mask to use.
>   * @filter_np: optional device node to filter matches by, or NULL to match any.
>   *	If non-NULL, only map entries targeting this node will be matched.
>   * @arg: pointer to a &struct of_phandle_args for the result. On success,
> - *	@arg->args[0] will contain the translated ID. If a map entry was
> - *	matched, @arg->np will be set to the target node with a reference
> - *	held that the caller must release with of_node_put().
> + *	@arg->args_count will be set to the number of output specifier cells
> + *	as defined by @cells_name in the target node, and
> + *	@arg->args[0..args_count-1] will contain the translated output
> + *	specifier values. If a map entry was matched, @arg->np will be set
> + *	to the target node with a reference held that the caller must release
> + *	with of_node_put().
>   *
>   * Given a device ID, look up the appropriate implementation-defined
>   * platform ID and/or the target device which receives transactions on that
> @@ -2116,17 +2146,19 @@ int of_find_last_cache_level(unsigned int cpu)
>   * Return: 0 on success or a standard error code on failure.
>   */
>  int of_map_id(const struct device_node *np, u32 id,
> -	       const char *map_name, const char *map_mask_name,
> +	       const char *map_name, const char *cells_name,
> +	       const char *map_mask_name,
>  	       const struct device_node *filter_np, struct of_phandle_args *arg)
>  {
>  	u32 map_mask, masked_id;
> -	int map_len;
> +	int map_bytes, map_len, offset = 0;
> +	bool bad_map = false;
>  	const __be32 *map = NULL;
>  
>  	if (!np || !map_name || !arg)
>  		return -EINVAL;
>  
> -	map = of_get_property(np, map_name, &map_len);
> +	map = of_get_property(np, map_name, &map_bytes);
>  	if (!map) {
>  		if (filter_np)
>  			return -ENODEV;
> @@ -2136,11 +2168,9 @@ int of_map_id(const struct device_node *np, u32 id,
>  		return 0;
>  	}
>  
> -	if (!map_len || map_len % (4 * sizeof(*map))) {
> -		pr_err("%pOF: Error: Bad %s length: %d\n", np,
> -			map_name, map_len);
> -		return -EINVAL;
> -	}
> +	if (map_bytes % sizeof(*map))
> +		goto err_map_len;
> +	map_len = map_bytes / sizeof(*map);
>  
>  	/* The default is to select all bits. */
>  	map_mask = 0xffffffff;
> @@ -2153,39 +2183,82 @@ int of_map_id(const struct device_node *np, u32 id,
>  		of_property_read_u32(np, map_mask_name, &map_mask);
>  
>  	masked_id = map_mask & id;
> -	for ( ; map_len > 0; map_len -= 4 * sizeof(*map), map += 4) {
> +
> +	while (offset < map_len) {
>  		struct device_node *phandle_node;
> -		u32 id_base = be32_to_cpup(map + 0);
> -		u32 phandle = be32_to_cpup(map + 1);
> -		u32 out_base = be32_to_cpup(map + 2);
> -		u32 id_len = be32_to_cpup(map + 3);
> +		u32 id_base, phandle, id_len, id_off, cells = 0;
> +		const __be32 *out_base;
> +
> +		if (map_len - offset < 2)
> +			goto err_map_len;
> +
> +		id_base = be32_to_cpup(map + offset);
>  
>  		if (id_base & ~map_mask) {
> -			pr_err("%pOF: Invalid %s translation - %s-mask (0x%x) ignores id-base (0x%x)\n",
> -				np, map_name, map_name,
> -				map_mask, id_base);
> +			pr_err("%pOF: Invalid %s translation - %s (0x%x) ignores id-base (0x%x)\n",
> +			       np, map_name, map_mask_name, map_mask, id_base);
>  			return -EFAULT;
>  		}
>  
> -		if (masked_id < id_base || masked_id >= id_base + id_len)
> -			continue;
> -
> +		phandle = be32_to_cpup(map + offset + 1);
>  		phandle_node = of_find_node_by_phandle(phandle);
>  		if (!phandle_node)
>  			return -ENODEV;
>  
> +		if (!bad_map && of_property_read_u32(phandle_node, cells_name, &cells)) {
> +			pr_err("%pOF: missing %s property\n", phandle_node, cells_name);
> +			of_node_put(phandle_node);
> +			return -EINVAL;
> +		}
> +
> +		if (map_len - offset < 3 + cells) {
> +			of_node_put(phandle_node);
> +			goto err_map_len;
> +		}
> +
> +		if (offset == 0 && cells == 2) {
> +			bad_map = of_check_bad_map(map, map_len);
> +			if (bad_map) {
> +				pr_warn_once("%pOF: %s mismatches target %s, assuming extra cell of 0\n",
> +					     np, map_name, cells_name);
> +				cells = 1;
> +			}
> +		}
> +
> +		out_base = map + offset + 2;
> +		offset += 3 + cells;
> +
> +		id_len = be32_to_cpup(map + offset - 1);
> +		if (id_len > 1 && cells > 1) {
> +			/*
> +			 * With 1 output cell we reasonably assume its value
> +			 * has a linear relationship to the input; with more,
> +			 * we'd need help from the provider to know what to do.
> +			 */
> +			pr_err("%pOF: Unsupported %s - cannot handle %d-ID range with %d-cell output specifier\n",
> +			       np, map_name, id_len, cells);
> +			of_node_put(phandle_node);
> +			return -EINVAL;
> +		}
> +		id_off = masked_id - id_base;
> +		if (masked_id < id_base || id_off >= id_len) {
> +			of_node_put(phandle_node);
> +			continue;
> +		}
> +
>  		if (filter_np && filter_np != phandle_node) {
>  			of_node_put(phandle_node);
>  			continue;
>  		}
>  
>  		arg->np = phandle_node;
> -		arg->args[0] = masked_id - id_base + out_base;
> -		arg->args_count = 1;
> +		for (int i = 0; i < cells; i++)
> +			arg->args[i] = id_off + be32_to_cpu(out_base[i]);
> +		arg->args_count = cells;
>  
>  		pr_debug("%pOF: %s, using mask %08x, id-base: %08x, out-base: %08x, length: %08x, id: %08x -> %08x\n",
> -			np, map_name, map_mask, id_base, out_base,
> -			id_len, id, masked_id - id_base + out_base);
> +			np, map_name, map_mask, id_base, be32_to_cpup(out_base),
> +			id_len, id, id_off + be32_to_cpup(out_base));
>  		return 0;
>  	}
>  
> @@ -2196,6 +2269,10 @@ int of_map_id(const struct device_node *np, u32 id,
>  	arg->args[0] = id;
>  	arg->args_count = 1;
>  	return 0;
> +
> +err_map_len:
> +	pr_err("%pOF: Error: Bad %s length: %d\n", np, map_name, map_bytes);
> +	return -EINVAL;
>  }
>  EXPORT_SYMBOL_GPL(of_map_id);
>  
> @@ -2205,18 +2282,21 @@ EXPORT_SYMBOL_GPL(of_map_id);
>   * @id: Requester ID of the device (e.g. PCI RID/BDF or a platform
>   *      stream/device ID) used as the lookup key in the iommu-map table.
>   * @arg: pointer to a &struct of_phandle_args for the result. On success,
> - *	@arg->args[0] contains the translated ID. If a map entry was matched,
> - *	@arg->np holds a reference to the target node that the caller must
> - *	release with of_node_put().
> + *	@arg->args_count will be set to the number of output specifier cells
> + *	and @arg->args[0..args_count-1] will contain the translated output
> + *	specifier values. If a map entry was matched, @arg->np holds a
> + *	reference to the target node that the caller must release with
> + *	of_node_put().
>   *
> - * Convenience wrapper around of_map_id() using "iommu-map" and "iommu-map-mask".
> + * Convenience wrapper around of_map_id() using "iommu-map", "#iommu-cells",
> + * and "iommu-map-mask".
>   *
>   * Return: 0 on success or a standard error code on failure.
>   */
>  int of_map_iommu_id(const struct device_node *np, u32 id,
>  		    struct of_phandle_args *arg)
>  {
> -	return of_map_id(np, id, "iommu-map", "iommu-map-mask", NULL, arg);
> +	return of_map_id(np, id, "iommu-map", "#iommu-cells", "iommu-map-mask", NULL, arg);
>  }
>  EXPORT_SYMBOL_GPL(of_map_iommu_id);
>  
> @@ -2229,17 +2309,20 @@ EXPORT_SYMBOL_GPL(of_map_iommu_id);
>   *	to match any. If non-NULL, only map entries targeting this node will
>   *	be matched.
>   * @arg: pointer to a &struct of_phandle_args for the result. On success,
> - *	@arg->args[0] contains the translated ID. If a map entry was matched,
> - *	@arg->np holds a reference to the target node that the caller must
> - *	release with of_node_put().
> + *	@arg->args_count will be set to the number of output specifier cells
> + *	and @arg->args[0..args_count-1] will contain the translated output
> + *	specifier values. If a map entry was matched, @arg->np holds a
> + *	reference to the target node that the caller must release with
> + *	of_node_put().
>   *
> - * Convenience wrapper around of_map_id() using "msi-map" and "msi-map-mask".
> + * Convenience wrapper around of_map_id() using "msi-map", "#msi-cells",
> + * and "msi-map-mask".
>   *
>   * Return: 0 on success or a standard error code on failure.
>   */
>  int of_map_msi_id(const struct device_node *np, u32 id,
>  		  const struct device_node *filter_np, struct of_phandle_args *arg)
>  {
> -	return of_map_id(np, id, "msi-map", "msi-map-mask", filter_np, arg);
> +	return of_map_id(np, id, "msi-map", "#msi-cells", "msi-map-mask", filter_np, arg);
>  }
>  EXPORT_SYMBOL_GPL(of_map_msi_id);
> diff --git a/include/linux/of.h b/include/linux/of.h
> index 8548cd9eb4f1..51ac8539f2c3 100644
> --- a/include/linux/of.h
> +++ b/include/linux/of.h
> @@ -462,7 +462,8 @@ const char *of_prop_next_string(const struct property *prop, const char *cur);
>  bool of_console_check(const struct device_node *dn, char *name, int index);
>  
>  int of_map_id(const struct device_node *np, u32 id,
> -	       const char *map_name, const char *map_mask_name,
> +	       const char *map_name, const char *cells_name,
> +	       const char *map_mask_name,
>  	       const struct device_node *filter_np, struct of_phandle_args *arg);
>  
>  int of_map_iommu_id(const struct device_node *np, u32 id,
> @@ -934,7 +935,8 @@ static inline void of_property_clear_flag(struct property *p, unsigned long flag
>  }
>  
>  static inline int of_map_id(const struct device_node *np, u32 id,
> -			     const char *map_name, const char *map_mask_name,
> +			     const char *map_name, const char *cells_name,
> +			     const char *map_mask_name,
>  			     const struct device_node *filter_np,
>  			     struct of_phandle_args *arg)
>  {
> 

Gentle ping.

Thanks,
Vijay


From xen-devel-bounces@lists.xenproject.org Wed Apr 08 06:09:32 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 08 Apr 2026 06:09:32 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1275396.1561233 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wAM6E-0002CC-G8; Wed, 08 Apr 2026 06:09:14 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1275396.1561233; Wed, 08 Apr 2026 06:09: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 1wAM6E-0002C5-D0; Wed, 08 Apr 2026 06:09:14 +0000
Received: by outflank-mailman (input) for mailman id 1275396;
 Wed, 08 Apr 2026 06:09:13 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <jbeulich@suse.com>) id 1wAM6D-0002Bz-F3
 for xen-devel@lists.xenproject.org; Wed, 08 Apr 2026 06:09:13 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wAM64-008ghE-Og
 for xen-devel@lists.xenproject.org; Wed, 08 Apr 2026 08:09:04 +0200
Received: from [10.42.69.5] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <jbeulich@suse.com>)
 id 69d5f0ef-2eae-0a2a0a5409dd-0a2a45059384-44
 for <xen-devel@lists.xenproject.org>; Wed, 08 Apr 2026 08:09:04 +0200
Received: from [209.85.221.46] (helo=mail-wr1-f46.google.com)
 by tlsNG-c201ff.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.0)
 (envelope-from <jbeulich@suse.com>)
 id 69d5f100-3760-0a2a45050019-d155dd2ecda7-3
 for <xen-devel@lists.xenproject.org>; Wed, 08 Apr 2026 08:09:04 +0200
Received: by mail-wr1-f46.google.com with SMTP id
 ffacd0b85a97d-43d01d6b50cso5463720f8f.1
 for <xen-devel@lists.xenproject.org>; Tue, 07 Apr 2026 23:09:04 -0700 (PDT)
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-43d1e4f1a99sm58877902f8f.32.2026.04.07.23.09.03
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Tue, 07 Apr 2026 23:09:03 -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=google header.d=suse.com header.i="@suse.com" header.h="Content-Transfer-Encoding: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=1775628544; x=1776233344; darn=lists.xenproject.org;
        h=content-transfer-encoding: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;
        bh=+l/nur9kTFw05WGEil2W809yrbj5PGrTmLYCWyUfZjk=;
        b=aPO3X2PUNl+Ifpx/JElyjtnlp5Qvab80nZUUXI2Wai9r5y6KhJPRZrlSxISEeuPN+B
         kfRgmT07iTo0mx3FGc8M80jCcvIWXMyZrqyIJpGCGGBL+Es8od67wLJZvcFsgHWjAayl
         ut/KMjB3FxwilZzybnLnaws4r4Dk5PrYv586cQ2IZsoPg87C/U7Ub2AsZ3Op1dtL7a1P
         YWoq/mIkAR1tLcNoAcDzVYDlObMF1qRjgKuqqDavda8jrYwbcKA8+0A+d6IMnpVAug27
         7VzyrlBd9pgrryCUUiwdxhitGOeb3Su/JE6sy6O8NcsQLjUzvx9HAeAGnHubvnhDQvxy
         NuWA==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20251104; t=1775628544; x=1776233344;
        h=content-transfer-encoding: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;
        bh=+l/nur9kTFw05WGEil2W809yrbj5PGrTmLYCWyUfZjk=;
        b=lM2x2epfAktuxVN025ilMHsCRH8TH5srRgdYNfqELmo0yGMUyePb6E2ZO0qoPtfInE
         6I6TLNT9e3IZUlTzRtBTpzfhu7/7maLOEitQroT8MouAP7Dn5QRQdM1Q8CxA0XKYHuVi
         70VIhFK3Jz6B4LBjBMxgrhedTO61eR2d9XU9+2gYKVfB2sJQ0+cwznttfsZyLu8+mwQr
         g6xsBco2AZODWmtS1eIwE56NCyhMX+FxgkPUrjda6yz8ycM1ZNYP7B4FAGA67VsY/Ju0
         7rreX7YGqkki36zXBv92/PTHIpsJTMHt5/6LpwlARVjJ/MdI9CSPlhBOjA2ECtyXrPcH
         yN2Q==
X-Forwarded-Encrypted: i=1; AJvYcCWOFjkQfIdy84ov62TczbKjl8tWZ7Ay7d+nAPalAYdK9en/NItsGQ6tPIcme2Ls8oHL2PGSr+uuqqw=@lists.xenproject.org
X-Gm-Message-State: AOJu0YynI4teyzeFnNip8o59vV11Lzs1biWnQXsEYai8xyKMWIoKb/LD
	yHFYIsmiKHy8X+0Zyg5sdwa+hNRpLKXWgi1PNjxAB9+WbjNjJTO8LDhnYgnlZ2IpXw==
X-Gm-Gg: AeBDiesr/YHlGIS2UXlTxgKykA8ZPQZzi/ZC80EcZ2EuP/OMOIoputsljMbnvkkLrNs
	0XIgCvfmZzlS+4MJQLZF2XuZiKyf8bSifdR2rh46pskoBKyj7uA+B1q5Js32vNI4u0EqT2b3A3V
	LvcE4+287UtLr+pU6EMoyty/KvvoiDUmbq8IN9VRUb3+rEwT8PwtGJ55eKPjdq2C0j2xdm+GFLl
	gyGZAZcQ4IVMHK9NcSi5d0KD3uQ1gI5GNiJq5rHaFC9WrkGTgzPdAG1QaZ1Smq+nEFeGC/BV+IJ
	W8GNk3e/ws6EBOS4Ftf785Ds5XmzDa/K2X0UNKqJa0NbTaQshJ4Jgrhk6AhWAMxwuo/U+YIxIMG
	xHzph8AO5NBeTPnlG14xx2sDI+itV8W97up8JI7Vmvacnkobg7u+crTFIcphrV2cQ4u23dlXQd8
	rdxlLG2XH/g4yLEs6ogDiPvTIhyGviJy/vCJNRoCX2wo3iGr2ZaNq3Lk/3kaGkCwxShYTQqfu3g
	Ehn03R3uq3oQaU=
X-Received: by 2002:a5d:5f85:0:b0:43c:f7f6:6016 with SMTP id ffacd0b85a97d-43d292daa51mr28705894f8f.32.1775628543943;
        Tue, 07 Apr 2026 23:09:03 -0700 (PDT)
Message-ID: <a46d6578-e622-48c5-ab0f-34a88dfd2bec@suse.com>
Date: Wed, 8 Apr 2026 08:09:02 +0200
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH v9 04/10] x86/cpu-policy: re-arrange no-VMX logic
To: Andrew Cooper <andrew.cooper3@citrix.com>
Cc: =?UTF-8?Q?Roger_Pau_Monn=C3=A9?= <roger.pau@citrix.com>,
 "xen-devel@lists.xenproject.org" <xen-devel@lists.xenproject.org>
References: <926a2315-a2b7-4aad-87e6-d686c9da9e3a@suse.com>
 <dfa41e40-b50c-4564-829b-0cf147fe3ee5@suse.com>
 <48df7b1b-5d07-4eeb-8028-6a90c12a6e2a@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: <48df7b1b-5d07-4eeb-8028-6a90c12a6e2a@citrix.com>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
X-purgate-ID: tlsNG-c201ff/1775628544-32D2796F-E2271E38/0/0
X-purgate-type: clean
X-purgate-size: 3403

On 07.04.2026 23:58, Andrew Cooper wrote:
> On 24/11/2025 2:59 pm, Jan Beulich wrote:
>> --- a/xen/arch/x86/cpu-policy.c
>> +++ b/xen/arch/x86/cpu-policy.c
>> @@ -812,19 +812,20 @@ static void __init calculate_hvm_max_pol
>>          if ( !cpu_has_vmx_xsaves )
>>              __clear_bit(X86_FEATURE_XSAVES, fs);
>>      }
>> +    else
>> +    {
>> +        /*
>> +         * Xen doesn't use PKS, so the guest support for it has opted to not use
>> +         * the VMCS load/save controls for efficiency reasons.  This depends on
>> +         * the exact vmentry/exit behaviour, so don't expose PKS in other
>> +         * situations until someone has cross-checked the behaviour for safety.
>> +         */
>> +        __clear_bit(X86_FEATURE_PKS, fs);
>> +    }
>>  
>>      if ( !cpu_has_vmx_msrlist )
>>          __clear_bit(X86_FEATURE_MSRLIST, fs);
>>  
>> -    /*
>> -     * Xen doesn't use PKS, so the guest support for it has opted to not use
>> -     * the VMCS load/save controls for efficiency reasons.  This depends on
>> -     * the exact vmentry/exit behaviour, so don't expose PKS in other
>> -     * situations until someone has cross-checked the behaviour for safety.
>> -     */
>> -    if ( !cpu_has_vmx )
>> -        __clear_bit(X86_FEATURE_PKS, fs);
>> -
>>      /* 
>>       * Make adjustments to possible (nested) virtualization features exposed
>>       * to the guest
>>
> 
> These clauses aren't logically doing the same thing.  So while the
> compiler can merge them, I don't think it's a good idea to do so at a
> source level.
> 
> The "if ( vmx ) " block we can just see the end of is for features which
> need to cross-check extra VMX capabilities.  Each of RDTSCP, INVPCID and
> XSAVES are #UD unless explicitly enabled.  MPX is the odd-one out,
> checking the load/save capabilities.
> 
> I suspect this list is incomplete.  These cross-checks shouldn't fail on
> real hardware, where the VMX capabilities should match the native
> features, but nested virt is rife with enumeration bugs here.
> 
> The second "if ( !vmx )" clause is different.  This is really "I wired
> up PKS based on how Intel works, and if AMD ever gains it it will
> definitely need context switching changes to work".  This is in lieu of
> having dedicated Intel/AMD annotations for features.

Right, and this is what I'm using the new "else" body for later in the
series.

> The MSRLIST addition from the prior patch is arguably misplaced, except
> it's trying to cover both of the aspects.

Why is it misplaced? Where else would you want it to go? The VMX aspect,
as you say, is included in cpu_has_vmx_msrlist, so it doesn't need
separate checking for VMX.

> AMD are making no obvious moves to add PKS, and I expect MSRLIST is even
> lower down their priority list.
> 
> Overall, we need checks here for every guest-visible feature which:
> * has VMCS/VMCB controls which are enumerated separately
> * needs new context switching considerations

Which in this series are USER-MSR and MSR-IMM. Hence this prereq change,
to simplify the additions there.

> Maybe the "if ( !vmx )" shouldn't really be written this way.  I'm open
> to suggestions, but making it an else block isn't a solution.

Well in this situation I guess it's you to make suggestions. I have made
mine by way of this submission.

Jan


From xen-devel-bounces@lists.xenproject.org Wed Apr 08 07:34:00 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 08 Apr 2026 07:34:00 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1275464.1561275 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wANQ8-0006D6-RK; Wed, 08 Apr 2026 07:33:52 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1275464.1561275; Wed, 08 Apr 2026 07:33: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 1wANQ8-0006Cz-Og; Wed, 08 Apr 2026 07:33:52 +0000
Received: by outflank-mailman (input) for mailman id 1275464;
 Wed, 08 Apr 2026 07:33:51 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <bounce-md_30504962.69d604dc.v1-f394fed23b2e4ce4865f10734d71a531@bounce.vates.tech>)
 id 1wANQ7-0006Ct-HU
 for xen-devel@lists.xenproject.org; Wed, 08 Apr 2026 07:33:51 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wANQ6-000yRK-F1
 for xen-devel@lists.xenproject.org; Wed, 08 Apr 2026 09:33:50 +0200
Received: from [10.42.69.10] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1) (envelope-from
 <bounce-md_30504962.69d604dc.v1-f394fed23b2e4ce4865f10734d71a531@bounce.vates.tech>)
 id 69d604d6-2eae-0a2a0a5409dd-0a2a450a9eae-28
 for <xen-devel@lists.xenproject.org>; Wed, 08 Apr 2026 09:33:50 +0200
Received: from [198.2.180.46] (helo=mail180-46.suw31.mandrillapp.com)
 by tlsNG-4011c0.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.0)
 (envelope-from
 <bounce-md_30504962.69d604dc.v1-f394fed23b2e4ce4865f10734d71a531@bounce.vates.tech>)
 id 69d604dc-ee98-0a2a450a0019-c602b42ed8a3-3
 for <xen-devel@lists.xenproject.org>; Wed, 08 Apr 2026 09:33:49 +0200
Received: from pmta11.mandrill.prod.suw01.rsglab.com (localhost [127.0.0.1])
 by mail180-46.suw31.mandrillapp.com (Mailchimp) with ESMTP id
 4frFDX3KFpz8XS3d2
 for <xen-devel@lists.xenproject.org>; Wed,  8 Apr 2026 07:33:48 +0000 (GMT)
Received: from [37.26.189.201] by mandrillapp.com id
 f394fed23b2e4ce4865f10734d71a531; Wed, 08 Apr 2026 07:33: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=mte1 header.d=mandrillapp.com header.i="@mandrillapp.com" header.h="From:Subject:Message-Id:To:Cc:References:In-Reply-To:Feedback-ID:Date:MIME-Version:Content-Type:Content-Transfer-Encoding"; dkim=pass header.s=mte1 header.d=vates.tech header.i="thierry.escande@vates.tech" header.h="From:Subject:Message-Id:To:Cc:References:In-Reply-To:Feedback-ID:Date:MIME-Version:Content-Type:Content-Transfer-Encoding"
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=mandrillapp.com;
	s=mte1; t=1775633628; x=1775903628;
	bh=lf/7x995PIuMmZC7YZDG2jKn3t9Oc495yOkrRXw8d4M=;
	h=From:Subject:Message-Id:To:Cc:References:In-Reply-To:Feedback-ID:
	 Date:MIME-Version:Content-Type:Content-Transfer-Encoding:CC:Date:
	 Subject:From;
	b=cAfLHoz+9gelA+wWjlBpE5/+7ZLnszfyOQEwdGb41ArKa/AhC+x4g6dfKobJRrjKJ
	 YrUZ4ylR6PSokkdrxPlOR2xD1NrsqelHwBLyYsrv4GFmL460KJH8wxTMCQQo0Sqjs7
	 0WaxpO7ogofHR1UVmSFucR2N5Cgaix7PQJOprr7wNNRrzS7aanYtzFnw2w1MV0wvyq
	 YCuIn6vPln3WVZFO81jxk4gZuOMBQg3IEDJPT73jC7QXPWERgH/sd32yNNUzBBgL6Y
	 UPvKfLxbN+iM1hv8G6K6A0hzHehDMqxuYwrCmv9EAi7U09UJ09sx5LuE3AiB79MsIX
	 4BtPF+u2htLEw==
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=vates.tech; s=mte1;
	t=1775633628; x=1775894128; i=thierry.escande@vates.tech;
	bh=lf/7x995PIuMmZC7YZDG2jKn3t9Oc495yOkrRXw8d4M=;
	h=From:Subject:Message-Id:To:Cc:References:In-Reply-To:Feedback-ID:
	 Date:MIME-Version:Content-Type:Content-Transfer-Encoding:CC:Date:
	 Subject:From;
	b=kgD+GOfVL4hQRh+lUUqs1M6Grgfznzt40ooRn5aKRJRPf+yHks52SAVp6XPUsSR0r
	 ODnWINq2XR8hRcrmC7s0ALaVBwGt3TRawjZIvQTaMzBWwIrxYJUqok+a3rFtXfWF0s
	 qCUM+rU5X6KR0fWow9I6nGcknD1ZtRN2qXv8e3KgxQtPTfyPkpy9xxXTyPXLdrw6vx
	 i1SKDWzFBEznwUJrCQbljhs8A/ziY5wtc5JaYjHyjPkqzrT2TuIOJrd+HQl3E6hn4H
	 rJN9HSEG7G12QqBokWoaDLAekqI8AemO4neWsbfzV/q3rCBWaIiEBzQGopfcTZxcPt
	 W3Drd1rjmk9lQ==
From: "Thierry Escande" <thierry.escande@vates.tech>
Subject: =?utf-8?Q?Re:=20[PATCH=200/4]=20Xen:=20Add=20Q35=20initial=20support=20for=20HVM=20guests?=
X-Bm-Disclaimer: Yes
X-Bm-Milter-Handled: 4ffbd6c1-ee69-4e1b-aabd-f977039bd3e2
X-Bm-Transport-Timestamp: 1775633627298
Message-Id: <7db25729-b4ab-41d4-8790-097b5338fe17@vates.tech>
To: "=?utf-8?Q?Daniel=20P.=20Berrang=C3=A9?=" <berrange@redhat.com>, "Anthony PERARD" <anthony.perard@vates.tech>
Cc: "=?utf-8?Q?Marek=20Marczykowski-G=C3=B3recki?=" <marmarek@invisiblethingslab.com>, qemu-devel@nongnu.org, "Paolo Bonzini" <pbonzini@redhat.com>, "Richard Henderson" <richard.henderson@linaro.org>, "Michael S. Tsirkin" <mst@redhat.com>, "Eduardo Habkost" <eduardo@habkost.net>, xen-devel@lists.xenproject.org
References: <20260313164649.794591-1-thierry.escande@vates.tech> <abVtsK31t9tWgsaY@mail-itl> <acJZHpw8tcTMPpCn@l14> <acJgclxJ4_0YbBqT@redhat.com>
In-Reply-To: <acJgclxJ4_0YbBqT@redhat.com>
X-Native-Encoded: 1
X-Report-Abuse: =?UTF-8?Q?Please=20forward=20a=20copy=20of=20this=20message,=20including=20all=20headers,=20to=20abuse@mandrill.com.=20You=20can=20also=20report=20abuse=20here:=20https://mandrillapp.com/contact/abuse=3Fid=3D30504962.f394fed23b2e4ce4865f10734d71a531?=
X-Mandrill-User: md_30504962
Feedback-ID: 30504962:30504962.20260408:md
Date: Wed, 08 Apr 2026 07:33:48 +0000
MIME-Version: 1.0
Content-Type: text/plain; charset=utf-8
Content-Transfer-Encoding: quoted-printable
X-purgate-ID: tlsNG-4011c0/1775633630-BE54E0B1-4237DA9F/0/0
X-purgate-type: clean
X-purgate-size: 2595

Hi,

On 3/24/26 10:59, Daniel P. Berrang=C3=A9 wrote:
> On Tue, Mar 24, 2026 at 09:28:00AM +0000, Anthony PERARD wrote:
>> On Sat, Mar 14, 2026 at 03:16:15PM +0100, Marek Marczykowski-G=C3=B3reck=
i wrote:
>>> On Fri, Mar 13, 2026 at 04:46:56PM +0000, Thierry Escande wrote:
>>>> This patch series introduces Q35 chipset support for Xen HVM guests. T=
his is
>>>> based on the work from Alexey Gerasimenko (See patchset [1] for refere=
nce).
>>>>
>>>> This series does not implement device passthrough as this will need mo=
re work
>>>> on the Xen side to support multiple PCI buses. Since Q35 chipset does =
not
>>>> support device hotplugging and with current Xen mechanism for device
>>>> passthrough, they have to be plugged to a new PCIe root port, i.e. not=
 the PCI
>>>> bus 0.
>>>
>>> I always found it weird that Xen does hot-plugging of PCI passthrough
>>> devices... Wouldn't it be easier to change this (connect them from the
>>> very start, via QEMU cmdline) and declare hotplug as unsupported (at
>>> least at this time)? I realize it's more complex change at the toolstac=
k
>>> side, but overall may simplify things and maybe even improve
>>> reliability.
>>
>> Skipping hot-plug on Q35 sounds good to me.
>>
>> I though we could keep using QMP to do cold plug, with the experimental
>> "--preconfig", but "device_add" isn't allowed :-(. So yes, doing this
>> via command line sounds fine.
>>
>> In libxl, we might be able to transform the json for `device_add` into
>> the command line counterpart for `-device` fairly easily so the argument
>> are only generated in a single place. Then we could skip the QMP
>> "device_add" in libxl when it's already done via command line.
> 
> -device accepts JSON directly, so there's no transformation you
> need to do from the QMP JSON. For example:
> 
>   -device '{"driver":"pcie-root-port","port":8,"chassis":1,"id":"pci.1","=
bus":"pcie.0","multifunction":true,"addr":"0x1"}'
> 
> Likewise  -object, -audiodev and -netdev accept QMP JSON too

Thanks for your help and directions.

I have a few patches that I will send soon as RFC to gather your feedback.

They add a 'hotplug' option for pci devices, enabled by default, to
control if the device should be hot-plugged using QMP 'device_add'
command or through Qemu command line with `-device
xen-pci-passthrough,...'. The 'device_add' command is skipped but the
'pci-query' check remains.

Regards,


--
Thierry Escande | Vates XCP-ng Developer

XCP-ng & Xen Orchestra - Vates solutions

web: https://vates.tech




From xen-devel-bounces@lists.xenproject.org Wed Apr 08 08:35:10 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 08 Apr 2026 08:35:10 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1275493.1561284 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wAONA-0006Tc-EE; Wed, 08 Apr 2026 08:34:52 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1275493.1561284; Wed, 08 Apr 2026 08:34: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 1wAONA-0006TV-AJ; Wed, 08 Apr 2026 08:34:52 +0000
Received: by outflank-mailman (input) for mailman id 1275493;
 Wed, 08 Apr 2026 08:34:51 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <bounce-md_30504962.69d61328.v1-71da37fbec604bb4a1412d3b56c179dc@bounce.vates.tech>)
 id 1wAON9-0006TP-5t
 for xen-devel@lists.xenproject.org; Wed, 08 Apr 2026 08:34:51 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wAON8-009DM5-C7
 for xen-devel@lists.xenproject.org; Wed, 08 Apr 2026 10:34:50 +0200
Received: from [10.42.69.5] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1) (envelope-from
 <bounce-md_30504962.69d61328.v1-71da37fbec604bb4a1412d3b56c179dc@bounce.vates.tech>)
 id 69d6131c-5cb7-0a2a0a5109dd-0a2a4505862c-32
 for <xen-devel@lists.xenproject.org>; Wed, 08 Apr 2026 10:34:50 +0200
Received: from [198.2.180.46] (helo=mail180-46.suw31.mandrillapp.com)
 by tlsNG-c201ff.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.0)
 (envelope-from
 <bounce-md_30504962.69d61328.v1-71da37fbec604bb4a1412d3b56c179dc@bounce.vates.tech>)
 id 69d61329-3760-0a2a45050019-c602b42e3004-3
 for <xen-devel@lists.xenproject.org>; Wed, 08 Apr 2026 10:34:50 +0200
Received: from pmta11.mandrill.prod.suw01.rsglab.com (localhost [127.0.0.1])
 by mail180-46.suw31.mandrillapp.com (Mailchimp) with ESMTP id
 4frGZw5TVNz8XRyK6
 for <xen-devel@lists.xenproject.org>; Wed,  8 Apr 2026 08:34:48 +0000 (GMT)
Received: from [37.26.189.201] by mandrillapp.com id
 71da37fbec604bb4a1412d3b56c179dc; Wed, 08 Apr 2026 08:34: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=mte1 header.d=mandrillapp.com header.i="@mandrillapp.com" header.h="From:Subject:To:Cc:Message-Id:Feedback-ID:Date:MIME-Version:Content-Type:Content-Transfer-Encoding"; dkim=pass header.s=mte1 header.d=vates.tech header.i="teddy.astie@vates.tech" header.h="From:Subject:To:Cc:Message-Id:Feedback-ID:Date:MIME-Version:Content-Type:Content-Transfer-Encoding"
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=mandrillapp.com;
	s=mte1; t=1775637288; x=1775907288;
	bh=V15Ycdk9jaZJ7+p5Gd4ld56W5KMrZofjseDMn4uinCw=;
	h=From:Subject:To:Cc:Message-Id:Feedback-ID:Date:MIME-Version:
	 Content-Type:Content-Transfer-Encoding:CC:Date:Subject:From;
	b=yIZZ9DxNIY4TQwh20gN21UE8RKXrlhr2iNaYiIVs2S3KuVX4DtA0VlBdZNtS0sxcm
	 KuTnNDZXwI1rw9TOMcbBTYHvDAUxjwklvlTGYWlgHPyqvvE34HTkO+uuBt/2RKq1qP
	 CIUu8A2MNIIO81vbsE0YUHEYsx8yn/uCopl3aSF6vvERwi/K/2OEl/FIoE7P7EVdYD
	 LzU+1rV1AQGWESBpr69kTCQ9Nah4jCg3e13fy4HDXW8m8p0t53MRbv8NHJq9V4tQEE
	 yMUfoLwwKr1sBw7dIo2GPzWxZpkopSFj/sOcHn30N+VQsVPmYOB6we6Nm0/PstWVgr
	 GtxobKm5drJ1w==
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=vates.tech; s=mte1;
	t=1775637288; x=1775897788; i=teddy.astie@vates.tech;
	bh=V15Ycdk9jaZJ7+p5Gd4ld56W5KMrZofjseDMn4uinCw=;
	h=From:Subject:To:Cc:Message-Id:Feedback-ID:Date:MIME-Version:
	 Content-Type:Content-Transfer-Encoding:CC:Date:Subject:From;
	b=uyfT7i8Jl5sXFyTNuSFyTYLTM7VcDTfPHjuVSuzL9sZ+r4cdxSUDjvI0DAcQfXrMN
	 Sgc/0X8TQ1llFmAPMOZPiw4o6WehraWlmvL4WO4GM3idLhUiPOHPk3VLBp50Z8VqTa
	 TKNatiOXfWwjE06qREau4I039QkOc/5dZthUfKFhpr82FnmuRiagUQCZn7h0Tjx095
	 yCI7guG7EmcJ27qBYN0OBnSTIXN31zwN7b59tALAYN3sXCMCLk+qbbJFrmTD0zYOyg
	 Od0X8LXOZN7rnofXcC1uFrd+FC6ZkH249mB2yqXpKasJUBPjQ7S6dSnmYYETuzX6q8
	 EcNgSsc6XEZ+Q==
From: "Teddy Astie" <teddy.astie@vates.tech>
Subject: =?utf-8?Q?[PATCH]=20x86/emul:=20Remove=20ops->{read,write}=5Fsegment=20checks=20for=20swapgs?=
X-Mailer: git-send-email 2.53.0
X-Bm-Disclaimer: Yes
X-Bm-Milter-Handled: 4ffbd6c1-ee69-4e1b-aabd-f977039bd3e2
X-Bm-Transport-Timestamp: 1775637287689
To: xen-devel@lists.xenproject.org
Cc: "Teddy Astie" <teddy.astie@vates.tech>, "Jan Beulich" <jbeulich@suse.com>, "Andrew Cooper" <andrew.cooper3@citrix.com>, "=?utf-8?Q?Roger=20Pau=20Monn=C3=A9?=" <roger.pau@citrix.com>
Message-Id: <c29e790caae7642fe442fa68111582ffdb37177c.1775636817.git.teddy.astie@vates.tech>
X-Native-Encoded: 1
X-Report-Abuse: =?UTF-8?Q?Please=20forward=20a=20copy=20of=20this=20message,=20including=20all=20headers,=20to=20abuse@mandrill.com.=20You=20can=20also=20report=20abuse=20here:=20https://mandrillapp.com/contact/abuse=3Fid=3D30504962.71da37fbec604bb4a1412d3b56c179dc?=
X-Mandrill-User: md_30504962
Feedback-ID: 30504962:30504962.20260408:md
Date: Wed, 08 Apr 2026 08:34:48 +0000
MIME-Version: 1.0
Content-Type: text/plain; charset=utf-8
Content-Transfer-Encoding: 7bit
X-purgate-ID: tlsNG-c201ff/1775637290-21B3896F-1106AE6A/0/0
X-purgate-type: clean
X-purgate-size: 1193

Remove these checks now that we don't use these 2 ops anymore.

Amends: 4bedbe47eef4f ("x86/emul: Remove fallback path from SWAPGS")
Signed-off-by: Teddy Astie <teddy.astie@vates.tech>
---
 xen/arch/x86/x86_emulate/0f01.c | 3 +--
 1 file changed, 1 insertion(+), 2 deletions(-)

diff --git a/xen/arch/x86/x86_emulate/0f01.c b/xen/arch/x86/x86_emulate/0f01.c
index 54bd6faf0f..4d36c7d289 100644
--- a/xen/arch/x86/x86_emulate/0f01.c
+++ b/xen/arch/x86/x86_emulate/0f01.c
@@ -187,8 +187,7 @@ int x86emul_0f01(struct x86_emulate_state *s,
     case 0xf8: /* swapgs */
         generate_exception_if(!mode_64bit(), X86_EXC_UD);
         generate_exception_if(!mode_ring0(), X86_EXC_GP, 0);
-        fail_if(!ops->read_segment || !ops->read_msr ||
-                !ops->write_segment || !ops->write_msr);
+        fail_if(!ops->read_msr || !ops->write_msr);
         if ( (rc = ops->read_msr(MSR_GS_BASE, &sreg.base,
                                  ctxt)) != X86EMUL_OKAY ||
              (rc = ops->read_msr(MSR_SHADOW_GS_BASE, &msr_val,
-- 
2.53.0



--
Teddy Astie | Vates XCP-ng Developer

XCP-ng & Xen Orchestra - Vates solutions

web: https://vates.tech



From xen-devel-bounces@lists.xenproject.org Wed Apr 08 08:39:20 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 08 Apr 2026 08:39:20 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1275505.1561292 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wAORR-00077K-Tv; Wed, 08 Apr 2026 08:39:17 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1275505.1561292; Wed, 08 Apr 2026 08: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 1wAORR-00077D-Qo; Wed, 08 Apr 2026 08:39:17 +0000
Received: by outflank-mailman (input) for mailman id 1275505;
 Wed, 08 Apr 2026 08:39:16 +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 1wAORQ-000775-G1
 for xen-devel@lists.xenproject.org; Wed, 08 Apr 2026 08:39:16 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wAORP-006yEj-MJ
 for xen-devel@lists.xenproject.org; Wed, 08 Apr 2026 10:39:15 +0200
Received: from [10.42.69.8] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <andrew.cooper@citrix.com>)
 id 69d61425-e002-0a2a0a5209dd-0a2a4508c96a-32
 for <xen-devel@lists.xenproject.org>; Wed, 08 Apr 2026 10:39:15 +0200
Received: from [40.93.195.48]
 (helo=SN4PR2101CU001.outbound.protection.outlook.com)
 by tlsNG-c1860d.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.0)
 (envelope-from <andrew.cooper@citrix.com>)
 id 69d61431-fab6-0a2a45080019-285dc3302d11-4
 for <xen-devel@lists.xenproject.org>; Wed, 08 Apr 2026 10:39:15 +0200
Received: from CH8PR03MB8275.namprd03.prod.outlook.com (2603:10b6:610:2b9::7)
 by LV3PR03MB8003.namprd03.prod.outlook.com (2603:10b6:408:282::18)
 with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9769.19; Wed, 8 Apr
 2026 08:39: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%6]) with mapi id 15.20.9769.018; Wed, 8 Apr 2026
 08: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=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=x/nOr/pWK4jBhMv/ylDsa9STN1V9cxdo18MvbF4C4CxBSwuqSt746luIlV8lLIlm2+WSQuZq6hpyCAjHHL1P12P8bBmWaQREMUVL0urjJpDljLfbz3atqW34snaCsdQd+YRLkI3qbdH6FWshhY71zWgqnodFcbfm806I0Rm28KrHeXjY6F153zcVEuzk3Khuj1+Tm4X0Fw9oG/IB/DUUlAbn58B0rwzKY5C5gjjNPZC6lH74qdwn0hhvlcym77/P5jpw7Ae0ef3sgixEdKre/ZeObV+1+uSsqqOs0CDmS1NobBijypkAipIHsgaPARsALHC18PuAWOnzMDlPkwMT/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=k/UqbCjwap7R0TlJJCj/Sx3zNxeS0BtdthdfwijO4NA=;
 b=lm3abB+1HLWIzVCF5a6+8f5ahU57hD0mKnzW9AAW9IrZQW0n+OgvgbRlOCmTTT2izgBwR7iNz1bIEuWoFoHEgZ27q2kRr/P7yOBTnf9SqNCiqdt+2SzG6mV8x3nfuLPS7OZsHpa0QQaCRHXvYQam/UYyFE1/jnrCqMUiHxp3YaFJZDuHwNAuxb0V7bTsw8h25gr4tZOMhy3Fgxj2MLhEANVZ+NYaUKmcTNpZGAM+QKjznptDBAqsTbJXd9GEBIio0wHJz6fO9d4hv1+NtPCBFj8Br4tULWXxion6GG7DpGPyFyAcVaAA/5i+ryftTicmnrkvLAsEcKPrDfYWHQunIA==
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=k/UqbCjwap7R0TlJJCj/Sx3zNxeS0BtdthdfwijO4NA=;
 b=EsboWmadBXFEQ8qUMs/F2IhAx8VV+bgARwdc17Zk/6/d72U7Y4szzhevM5bb3J8NrwAA+WOhM+DOnCmUR1fbBUd0WIISHYzCj4eOKXAi8yrCv308L7dcDwyVDqT+TRhqwrIrtIDWhB5jgnK3MxkO6HcjG0BSoKDvgGJbdX3HhpY=
Authentication-Results: dkim=none (message not signed)
 header.d=none;dmarc=none action=none header.from=citrix.com;
Message-ID: <9b18f0a7-df40-4b37-9453-07ffdaec65ea@citrix.com>
Date: Wed, 8 Apr 2026 09:39:02 +0100
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.pau@citrix.com>
Subject: Re: [PATCH] x86/emul: Remove ops->{read,write}_segment checks for
 swapgs
To: Teddy Astie <teddy.astie@vates.tech>, xen-devel@lists.xenproject.org
References: <c29e790caae7642fe442fa68111582ffdb37177c.1775636817.git.teddy.astie@vates.tech>
Content-Language: en-GB
From: Andrew Cooper <andrew.cooper3@citrix.com>
In-Reply-To: <c29e790caae7642fe442fa68111582ffdb37177c.1775636817.git.teddy.astie@vates.tech>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 7bit
X-ClientProxiedBy: LO3P265CA0005.GBRP265.PROD.OUTLOOK.COM
 (2603:10a6:600:bb::10) To CH8PR03MB8275.namprd03.prod.outlook.com
 (2603:10b6:610:2b9::7)
MIME-Version: 1.0
X-MS-PublicTrafficType: Email
X-MS-TrafficTypeDiagnostic: CH8PR03MB8275:EE_|LV3PR03MB8003:EE_
X-MS-Office365-Filtering-Correlation-Id: 01ae097d-b9b0-46a9-487b-08de954a4b79
X-MS-Exchange-SenderADCheck: 1
X-MS-Exchange-AntiSpam-Relay: 0
X-Microsoft-Antispam:
	BCL:0;ARA:13230040|366016|1800799024|376014|22082099003|18002099003|56012099003;
X-Microsoft-Antispam-Message-Info:
	RwtVtcFf2C6bcJdydnv8OayZvr6mSLrgqLHrokUD2VIZAXxhD2h0deZrW6tYeGqRg9rOy4o4p4oKZJ4vQGmFTGJ9JWRwEapp6dXj4gKU35AgU4UShFujAeV2bBjV67RDNe4UZm8gpFT5gEdYKY2nSw2zdy97xzjQUtY7V3vQIy27/yCKYv/F6PLwd3SRWfdX2+yNmLW5wEo3tBfv5GLjq7sfN6AHjFvTXBRZiO3Yhygj1wqw6kAoSMKQVPPzFe4WZoh0f/QLojQNDDfVFh+ChRnyRex7jOWzUNldf8rfts31LAosl44xoN3QCI2Xh2OffvQ/JYbtDaeGwdiU7fvFOr/Pp4eHs6Blb1rDDVxFCDs3sH3kXVS64uWQRVw34Exde4608L1XjNQOW+hFlUnh9n9yz/H4WS2YymiX1LX4lsENgKtPJGB/9HxDuu/Si/xNMl88SJrDOjyUVdozLoUFePZmq02QqAYB7vWXlRKPO158DZ+2a0sOsIbVUEY6Df4PF44Y6l6TV0wF6X/NLo+VIfGp15iSd0LvGz582ZGHIrIpTw2uZ5jm9AWA3tFoRkKj3POi6B+C7nkZFJcZ8JH4ZfinpQ14JAC+Fzizue6lkp3KcbGSdy/6TW0zLw3WYLIgNpJtLhNT5XFeTzZ5K/JX6q55TWIk6yt/ivbBAGpdcvaumrg6oFLBQWkTPJuvDjwedTvaBwN2TQm3RboMzwUUT5Wbhg9atsrLJhM9bzBWO68=
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)(22082099003)(18002099003)(56012099003);DIR:OUT;SFP:1101;
X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1
X-MS-Exchange-AntiSpam-MessageData-0:
	=?utf-8?B?SGZDQkJuQ3JVZ1RDZmVZNzF2WTIraWErZjduSXhTR09XN1d3NWFGcnNEeVRF?=
 =?utf-8?B?MFBRK2RTa3pISDBncUkwdGpUbVdmdG1HNFBBNndoUVJraHNwNDVud21RNnVS?=
 =?utf-8?B?ME9jK0UreWdpaG1zcVA2SUpubE9EZXJ0YUJBRzBheXg4ZG9jMXpHbzBxUGZr?=
 =?utf-8?B?VlZwd0RTZTVDUkRlNW10ZW9GNDB0VWE2NTBEWGdBR1oxc3E1cUduL2dsYmQx?=
 =?utf-8?B?dVU0OEk2dFRDS0owLzRQcnllWlFDY0hZazZkSktPRHUyZkI4azhGQjRuY0xN?=
 =?utf-8?B?SXpVbkZPNEwwSExGVEZXR3BvVGR0Sy9oQTk4RjVDR2ZsdzR1SjdYNlRNN2Uz?=
 =?utf-8?B?ZE8vUjNQY1lERE1EV3d2RVZmaldwelpMMmVjVmJBZjdUc05rSGpFNWFCMXBU?=
 =?utf-8?B?ZzZKVHRsMExXdzRJSGlqei9HeEpuQjc1U1dKVFRqZzAxbFBRR3A1SFAvU2hy?=
 =?utf-8?B?bzR4eDlVYW01ZHZ1NmZabENuaUkvNzdZUmFmZEtEejZEbzZjWUExb1BCWTRL?=
 =?utf-8?B?dEIxNGpjS3F2R3JHVTZKSWo0MmRueUJWdUM3NHROalBYbHNDUkw4WitWakhK?=
 =?utf-8?B?RnpnUm85TnZHZU5RUmJlOS9rbUI2YlRuU1NVUFl4ODBnMkNSN3ZmbzRUcGNY?=
 =?utf-8?B?d1hvbzFTQ0poVVpTaXR4Yzd0ZFpqTThMYm1EbUVmT2Q1bDAvajV6alV4RnhS?=
 =?utf-8?B?YVJXQjNRamlXK2lqK3hQdC9nNHUwcWIwNXQ2YUpaam1jSVZDbzZHR0JjYnVI?=
 =?utf-8?B?MXRmN2lxM3hCTFNiT0RhNHMrQUxsbmpLaFdNN0NiR2lEcloxTS9rMTlZNlBw?=
 =?utf-8?B?eU5zaCtYdHdSQTNlN2hSQVVaREphWjhjZXBSZUpMMDQyZXJqUEhVOGh6YWdL?=
 =?utf-8?B?WFVIMmVkOUN2YVJ6UDBmTFhZMllvWUFtNjlXYnZzN2ZDa01JYllPOEEwSGRG?=
 =?utf-8?B?enRzajliV1QwYU9yeFQ1K29ES2huZklsL2VZV1l6VGxkMWFUeFptMDBjbG5q?=
 =?utf-8?B?QUR2SHJjSHA0WHVTbzRLNFRmN3hNRTNFTzFhOSsvbDBNejc3Sm5PejVDSGIv?=
 =?utf-8?B?SDBTNk1jcWZiSUI4ZERxaXdDaHROYmVpYUhLZ3JRcFRrblIvYzdNOEtlOFpX?=
 =?utf-8?B?dkhZakIxb3pIblF5MTVlOFl6elAzcWtocDdsSHdQdWRCU2h3UjBnTEg0b2Zx?=
 =?utf-8?B?MFY3UVlsTFNlOVRnbWxvblJqcWs3VVpHZElhT0QyQzVJemVQUFFMWXZwNDVD?=
 =?utf-8?B?RXdsOGs2czBYUDZSQVRQN3h6aDVwaDhQT3laNUhULzBNM09Dcys1Ny9TM1pm?=
 =?utf-8?B?T3RvUFJXSjVzOGk2eEN2dWlpM1NoRnFtc0prd2pHYklOUWxrVWwyaU9yYldu?=
 =?utf-8?B?SFlubStQS3NnMjJJVFF4d09xTkFCcHBObk5KTU8rN1ZyL2xKVzNTNi9aY0s2?=
 =?utf-8?B?UnpxMDMrZGJ1UWlKSndyeWtZNnhZVXllYjZFajZlbW1YdzU0d1hFK2pkayti?=
 =?utf-8?B?Z0w4emtVSGpCbHJLT3YxbHJsY1Y2SmJPbHk5L2FuekMvcjBXbno3ODRPZDVL?=
 =?utf-8?B?QjdmYlpFNlJtZWVRdEs1UHFWc1cvaUtudThreEtMQzRiVjdWWVMzc3hFNkI4?=
 =?utf-8?B?NVcyRXdERlYvRnZic0pRMVJoRjRmYnlvZWMxVnM1akFUYXZKelZ1RllWS3NZ?=
 =?utf-8?B?aHUvcmVrM0RLRHhtL2xvWEhZaGxFQ0xpYU5GbEM2akhGbCtqTWtlMnVTM2lS?=
 =?utf-8?B?ZDF1QUpBM1M5MjBXU1ZvT0d1WDNVKzVnejZWQnNLRjQ1MjIzV0RNcXd2SkZK?=
 =?utf-8?B?VlptS0ptMHl4NE8zUEtqNHM5dkthZVdrelFjU3cyVkNuMWU1L1BxTWNGOThE?=
 =?utf-8?B?MlBjUm4wTmJheUZ5M1k2U1Q3U3BILzVmcmdQTktXcVFXYVlaVTRwdGpZcStH?=
 =?utf-8?B?T2Q4U0tHS08rUm1iU2IzQVpzbHJjUVlaT1dvWUNiemVqYWttcHBqc2ViNjBF?=
 =?utf-8?B?R0o1cmJRWk1QOE1SUWFscGpyZzZWdnl6T3oxendueTRsUktnQ0hBTUdZdFhN?=
 =?utf-8?B?YUN3UG1pYmtBOEs5SkhvQllPTVhaTndUWEo5dHBBQkdveDdheEVkS2lTVGl1?=
 =?utf-8?B?TytSdEMvVWZsZmJWWXdPOTIxZWdFYUdvUmZoVzFWOWNFcWdKNUNWOXpRUGM0?=
 =?utf-8?B?V2FVZ1ZoZHE5SnJWZGRQclB6RDA1SHR2dWxBR0I1NUdpaUY1WTV4VFFrdG9s?=
 =?utf-8?B?UDJFOEU0eS9QUys1cGw0aDJCa0VKL1BPN0RNNVFIWmIxQldUVk9qRDZTTk5t?=
 =?utf-8?B?bEhNVkZoYmg1d0tnblJ0aTdyRXNrZEdZMzJtbkVQMjJib2N1OVczN0c2aytN?=
 =?utf-8?Q?EGcCQ/HyjowHDcW0=3D?=
X-OriginatorOrg: citrix.com
X-MS-Exchange-CrossTenant-Network-Message-Id: 01ae097d-b9b0-46a9-487b-08de954a4b79
X-MS-Exchange-CrossTenant-AuthSource: CH8PR03MB8275.namprd03.prod.outlook.com
X-MS-Exchange-CrossTenant-AuthAs: Internal
X-MS-Exchange-CrossTenant-OriginalArrivalTime: 08 Apr 2026 08:39:06.0388
 (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: zP5TjKPTq9gfXKJACUzCo4UJOUV1UJcT5ZnBxYeoBBIIsWMFzP8tY6fmhtUO8gtXWFJN+SrG7VlKPJGtfBg+hl0DcKbO4P0vg7Hq1qbSQks=
X-MS-Exchange-Transport-CrossTenantHeadersStamped: LV3PR03MB8003
X-purgate-ID: tlsNG-c1860d/1775637555-F4B5C497-7CA099DB/0/0
X-purgate-type: clean
X-purgate-size: 297

On 08/04/2026 9:34 am, Teddy Astie wrote:
> Remove these checks now that we don't use these 2 ops anymore.
>
> Amends: 4bedbe47eef4f ("x86/emul: Remove fallback path from SWAPGS")
> Signed-off-by: Teddy Astie <teddy.astie@vates.tech>

Reviewed-by: Andrew Cooper <andrew.cooper3@citrix.com>


From xen-devel-bounces@lists.xenproject.org Wed Apr 08 09:22:34 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 08 Apr 2026 09:22:34 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1275515.1561302 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wAP7B-00053G-43; Wed, 08 Apr 2026 09:22:25 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1275515.1561302; Wed, 08 Apr 2026 09:22: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 1wAP7B-000538-0o; Wed, 08 Apr 2026 09:22:25 +0000
Received: by outflank-mailman (input) for mailman id 1275515;
 Wed, 08 Apr 2026 09:22:22 +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 1wAP78-000532-No
 for xen-devel@lists.xenproject.org; Wed, 08 Apr 2026 09:22:22 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wAP77-005G0F-VG
 for xen-devel@lists.xenproject.org; Wed, 08 Apr 2026 11:22:21 +0200
Received: from [10.42.69.12] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <andrew.cooper@citrix.com>)
 id 69d61e4c-bab6-0a2a0a5309dd-0a2a450cd0b2-4
 for <xen-devel@lists.xenproject.org>; Wed, 08 Apr 2026 11:22:21 +0200
Received: from [52.101.43.37]
 (helo=SJ2PR03CU001.outbound.protection.outlook.com)
 by tlsNG-d25034.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.0)
 (envelope-from <andrew.cooper@citrix.com>)
 id 69d61e4b-f40c-0a2a450c0019-34652b253af4-4
 for <xen-devel@lists.xenproject.org>; Wed, 08 Apr 2026 11:22:21 +0200
Received: from CH8PR03MB8275.namprd03.prod.outlook.com (2603:10b6:610:2b9::7)
 by BN9PR03MB6076.namprd03.prod.outlook.com (2603:10b6:408:119::24)
 with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9769.20; Wed, 8 Apr
 2026 09:22:18 +0000
Received: from CH8PR03MB8275.namprd03.prod.outlook.com
 ([fe80::a70d:dc32:bba8:ce37]) by CH8PR03MB8275.namprd03.prod.outlook.com
 ([fe80::a70d:dc32:bba8:ce37%6]) with mapi id 15.20.9769.018; Wed, 8 Apr 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=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=EVIV+CL4KqyH46EHNpsp7q3dp8PiJ70FE/ZIZ1POAoH+BEFasuLtIxhvBJouwZdrCP/my2BI/7uEjgj9Dx18kaUUkf4Ehzjp2hFHu42iPAbChU34XD5pPswt2XW89qW9ob4UjFwlWX5OHJ1eLrPNQBO8L7aGaMaSi8SQBZvbAaPUtr0FcuxXMt3EqGUXSnomeXAp9k1KKBfnPvqqIe34DWfB/kYw0jurMgP84fz7O3+/0bpPBjqHngZObbxtSc1+aws5P0UZ+yxxP11cvtYEyaMMSvzprk7ovkuuFXNriXIGQ6wI+DKojEI0Gd8Xjplykxj53OBELP9Qkk8o6oWdlg==
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com;
 s=arcselector10001;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1;
 bh=LIYs3I+tFM7lYDAyrs4Spm1MndEzn13Bu4lr0MfEzlg=;
 b=vTAQ808w+rMfwbG4cyD+9eULHSaChSTLx6fH7q9qlAorf9LetcGpu/0m51/yYXxDD7O/QE5UH2yLKbpDVmxRO7UqoAHqri0uuyYiLTNMSDDgfg84N5EqhBcf+avASDBgYK5TXNfuuajr3rE0HZuKac2MCXqf2BZ6M6L+/HRVNaK9O1b2qSygSc13/ci4vhj7cQ42QOkpygx6kACa67c7mWx5Y6Oi5ZEYcnk05jwZnlN6ep8cKLy/njnj0bZ1nM/Cp7pk0d/5/RHXSvaD9ldwiYsk4xBnKuZdOmjmptxT3Sa/9fz+tkZyEMYMgXMcz5hzTGWb9FsbHA1UCXq4ayfbuQ==
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=LIYs3I+tFM7lYDAyrs4Spm1MndEzn13Bu4lr0MfEzlg=;
 b=mMahAD3mOA7WuZug/Er2GErAyDvY2TxWuIlCT34k/qbJ6toutrUK531rH9Wmr8Cl6SJp/GWmKLlIH8MnbfFI9WC8dT2N+a3MzFpBW4W63qnNwja4MBeoelTO5DTxuJM9ksv7cBEU8H0yND3lsKM/b3zBsUJPZC366lYtXRnoVRk=
Authentication-Results: dkim=none (message not signed)
 header.d=none;dmarc=none action=none header.from=citrix.com;
Message-ID: <68cea196-efdc-4481-9e4b-bb450bcd2071@citrix.com>
Date: Wed, 8 Apr 2026 10:22:14 +0100
User-Agent: Mozilla Thunderbird
Cc: Andrew Cooper <andrew.cooper3@citrix.com>, Julien Grall <julien@xen.org>,
 Rahul Singh <rahul.singh@arm.com>,
 Stefano Stabellini <sstabellini@kernel.org>,
 Bertrand Marquis <bertrand.marquis@arm.com>,
 Volodymyr Babchuk <Volodymyr_Babchuk@epam.com>
Subject: Re: [PATCH 0/2] Final series to make Arm MISRA allcode green
To: Michal Orzel <michal.orzel@amd.com>, xen-devel@lists.xenproject.org
References: <20260407103434.90838-1-michal.orzel@amd.com>
Content-Language: en-GB
From: Andrew Cooper <andrew.cooper3@citrix.com>
In-Reply-To: <20260407103434.90838-1-michal.orzel@amd.com>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 7bit
X-ClientProxiedBy: PA7P264CA0270.FRAP264.PROD.OUTLOOK.COM
 (2603:10a6:102:375::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_|BN9PR03MB6076:EE_
X-MS-Office365-Filtering-Correlation-Id: e8a57319-373b-4e46-f97c-08de9550548c
X-MS-Exchange-SenderADCheck: 1
X-MS-Exchange-AntiSpam-Relay: 0
X-Microsoft-Antispam:
	BCL:0;ARA:13230040|1800799024|376014|366016|18002099003|22082099003|56012099003;
X-Microsoft-Antispam-Message-Info:
	OdxKgamFHLB9w5Zbx1wcDV0uiNjh6m3052VQSAEIrF5cfQRSVPrqIHU7JVBhealFtYybYez8F3tZWnkL3WV9yWnS2sHdGzfKS5kjzCcUJFIvfa8mJ3htDl6nYna8oyaeaKtBDq0UUL5Bm+f0OAGPlGin/M4cDeyihkTnOSGXwzcFeTqqdf/pH7F67ivvaXqNkEUw6IrmI6oelgVRqASFDfyssBqLTqmDKQInJ7cN+5sNHwK/gB+weJIYrEnC3h+LekCcAcyMeScWdQ553gXgKTpsX8bs9STPXMYnruBS8S4oOW+X4uvkosmmR0/LL3HM+n9dQy5KSYtPO9uISSQhA9uTtGCS8l+WT0mJI9C52JGXU+ZAH/WleXeGxUxCQzC6HgZgauA5ohparxmW25yevzlm5rSByZpTMJo+TepvON2V8i8p0X0OsbxS0kKxyVwobEpycK5G8B097GRsJDFxY5DQu3ZNF9UjxGBid72ZWEy0CyBTL2lUhu3ZXCgIYt5yvkY3CV5gx3R9OPEUjVflPhtEcWjKMdMg0Adp5wbINaXejFsWbAfTQ0aXKCtqrvTOmDA9mrl4pw7/11aH1Xhxkuregh3kIkMpJW+RC/GQngPhsE2CuxNlLsair6a4QbmH4hBYJfgLRX5+HIYUWF0CJipmm5qrcz8bpl26jcnwy6c9AwYhQjveqgOuDE27YwW8
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)(376014)(366016)(18002099003)(22082099003)(56012099003);DIR:OUT;SFP:1101;
X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1
X-MS-Exchange-AntiSpam-MessageData-0:
	=?utf-8?B?VWtFRmhXbTJ0Nkk5V1RQZmlEYnUrR3l2akNjYXQ5VFlIUWtna05RQklCL01L?=
 =?utf-8?B?UWJoUFc5YnB6U3o1ZG9TYVh5eGpTS2gyL2NrVm5KNUJxMVpkMTJJZXZ3elZ4?=
 =?utf-8?B?ZkFPSjF1QmpNWHBxVytFS3pjWElsSENIU1V1QzZvVEI4OGU3Q3NPUFlNYWxo?=
 =?utf-8?B?cVcwdEpZamhyTHVmakkxSnZxaEdMUmVoeUM5WnNaY1BiTGNYU2RZbVNmZ2pz?=
 =?utf-8?B?QVVLVmFRSGw0VUNta0JLNzlrbGpHTU9qVSs0c3p5UCtNVytkU0ZreHZFY0Zw?=
 =?utf-8?B?SlF3cXhhU0FaWnpTTWk0KzlCZ0REQnpzWWg2N0hWNmQ0VFJ5cllseVFhLzhP?=
 =?utf-8?B?K3d6OW1pRC96SS92cDhhT29WeUxNTWw1UTErTFB0MzhIR1ZKR3BzVkp0MC8r?=
 =?utf-8?B?ZzVYQnUvZ0MwcFBXbkc5aHJmUnR0UzNnY0ZOYUZxcXlhc1FxT1AyMW9aYSs2?=
 =?utf-8?B?MGljcGc3cnFBb3N1RGtGOGJnWHhpeWwxZm5GQjRUWno5U0FyMUU1YmxzWm45?=
 =?utf-8?B?aE5rWEVDYVR4NFF2WE5LMElNZnlUdUJmYUMvaDg4WHVvanRPSmRJRUY0Unlh?=
 =?utf-8?B?ZHJTUUZSNTgzS05ZSkJZSjNsWkFGTTJHSStGQnFlSzZGOTJCbXJ0YVc0Vm41?=
 =?utf-8?B?U3k5ckRRQVdzOWtmS2syQkt4dncyMVhiS0FuTmFndjdXOHczYkN6NTVGemtG?=
 =?utf-8?B?VVR1Qldjdm9uTlppSWVWckhtMHFicG9pZVhQK3V1eXRLTHpoRVFFWFBrZHR2?=
 =?utf-8?B?Kzh6eXVWZFAvYzRLOElxbExNKzZWalVCVW04V3pTMUtBbUE1dDlvRjUwbGdv?=
 =?utf-8?B?d1JOd283b1VkbnlreDl1aEVXeUU3dTl3K1M2VFdCMWRRWFplUG9abjl4N3Jh?=
 =?utf-8?B?STZKbVY0K3hXRi81b1ZjNkFMQ2hmcFl4S2RQUGRISnhURTNZa0F0YTNKSkEr?=
 =?utf-8?B?RkdWYjcyT245MWdWbnI4dGlhT1VEN0xtTW1BcFRiZzJnbEo0Z1hTdktGRTB2?=
 =?utf-8?B?ejNiNjNFSVhDWTJVSy9Mb014dEFpd0M3dFkzb1NaY0NOYVI4b2dLOHhxYWJM?=
 =?utf-8?B?Qjg3S3NzUkVNMkVoT2Q4Wml0dDYwQW5jQVlVZVN0cU5Db1p3cFpNNWhMeGdp?=
 =?utf-8?B?SWVXNk9yLzV4Q1ZMYU1PYTR3Vk1PRzNQTUhueG01eFFGVDByNWVzZEVjTXNX?=
 =?utf-8?B?T2FUNzM1aDUzZ2dTQUh4WTlJYnZKTGg0YXZxb3lwRFppd0tkcnAxd0ExNjhB?=
 =?utf-8?B?dlNGWWNaWlYvZHBuOC9lQVRZYjRKT1lucVpqc0NHYVpieHhESkdrZlN6M3Fk?=
 =?utf-8?B?NjJnRE02ZzQwYm5hZVdjbHd3QjZoZmtqMUloRGVJLzBlK0NDN3BKbTI3bnJ5?=
 =?utf-8?B?aDcwUGRkOWs2ZWpTL1BWZ01BanhIbjNOZGVCNDFrZ21KeWpZaStQZXc5UThr?=
 =?utf-8?B?cDNOblZQcnB4ZTBiZXJzWDRveE9sQ1pTVHlHMFlqM2JJb2lWM2pBM3FlVW0x?=
 =?utf-8?B?U3MzQzg2WGtucUFmdWFFK0daaStCMEZFaVRRbmIxWmpQN294OExYS01vMVZH?=
 =?utf-8?B?aVl4anI0bzZOK08rdjNsRUNwQ2JzQi9Mckpsd3BUT242dXdFUTZTYkVpRzVu?=
 =?utf-8?B?eko3WmM0VEpyT1dpMGlKNUw2QmEvMi83clJPTWc1c0VjZW9jcmM3bWdMZHZE?=
 =?utf-8?B?cWxVSmIxRjNEa00xT0VmeHhxcCt3dnN2MFpzd2Y2SVRPdHNZdkJxZVNHMHRZ?=
 =?utf-8?B?WFlnQm1MdWp5SUZSOElsdE9DUVVSZ2F2OHVhem1Hd00xMjdmbVdLcTVaZ0ZM?=
 =?utf-8?B?bHZ5ajlIUGlJTERWZVIzT201RldrME54MXpBcXd0L2xtSlZSMjFOa1FpK1Rv?=
 =?utf-8?B?c0lXSHhHK2pIUFBJcTMrMEtibmh5Y3dXYldwWFZqOTd4SllwWEtFNWlBeWNM?=
 =?utf-8?B?TVR1OUF0cjRIM1JxekZ6WUN4MUN6VExOakRLUTVQTXB5cjg4c3Z4dTkrTUsr?=
 =?utf-8?B?SVZPaFRuNHFiM1dURTA0bEpPWmhPSXkzUnUyTmxxd2ZNaTg5aVlhVkRGNUlT?=
 =?utf-8?B?WjNZWkF5dzBUSE5yclVCV0lRVjBqemZMTjlEeU4vS0h0dUJ3a3psTTRTeUx5?=
 =?utf-8?B?S2tEaWxKc2FYUW5YVGtpRTQ3VFFKdEVCeHdDL3BWVi9wdlJlK2hpTVJQOXA3?=
 =?utf-8?B?VGt3TTBtZGQzcEtBZS9kMFBacmpOcUl3NHFqK1dwMEkrajY4WnkxTk5KUmZt?=
 =?utf-8?B?aExTVUl6L1Q3b3ZiRmVnN1VaQkE1anpnZXcyL095UHRiY1dOSi9VcC9PUHF5?=
 =?utf-8?B?U2o1U0c1Q3FZeldkQ3E4cUhOTEowb0xNdVczOG5hTmV4K2taWklmTVBiUEtD?=
 =?utf-8?Q?lWGnbXw45owxR0T8=3D?=
X-OriginatorOrg: citrix.com
X-MS-Exchange-CrossTenant-Network-Message-Id: e8a57319-373b-4e46-f97c-08de9550548c
X-MS-Exchange-CrossTenant-AuthSource: CH8PR03MB8275.namprd03.prod.outlook.com
X-MS-Exchange-CrossTenant-AuthAs: Internal
X-MS-Exchange-CrossTenant-OriginalArrivalTime: 08 Apr 2026 09:22:18.2366
 (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: ri3kLf+BJzzDxETVGY0AZ3PJwFksn+aCqko3yUdTTJKhoR9dUcQA/n5PWPmLZA7YGfnC2PqFnZqZzexcXpd9fx0QYVUFYXNuIAlUeVR+RgE=
X-MS-Exchange-Transport-CrossTenantHeadersStamped: BN9PR03MB6076
X-purgate-ID: tlsNG-d25034/1775640141-81955A3D-C753AF2A/0/0
X-purgate-type: clean
X-purgate-size: 536

On 07/04/2026 11:34 am, Michal Orzel wrote:
> No more regressions for clean guidelines:
> https://gitlab.com/xen-project/people/morzel/xen/-/pipelines/2433943072
>
> Michal Orzel (2):
>   iommu/arm: smmu: Fix variable shadowing
>   iommu/arm: ipmmu-vmsa: Fix variable shadowing
>
>  xen/drivers/passthrough/arm/ipmmu-vmsa.c | 6 ++----
>  xen/drivers/passthrough/arm/smmu.c       | 7 +++----
>  2 files changed, 5 insertions(+), 8 deletions(-)

If all the violations are fixed, should this test be made blocking?

~Andrew


From xen-devel-bounces@lists.xenproject.org Wed Apr 08 09:29:11 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 08 Apr 2026 09:29:11 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1275528.1561310 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wAPDe-0005nd-Px; Wed, 08 Apr 2026 09:29:06 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1275528.1561310; Wed, 08 Apr 2026 09: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 1wAPDe-0005nW-NN; Wed, 08 Apr 2026 09:29:06 +0000
Received: by outflank-mailman (input) for mailman id 1275528;
 Wed, 08 Apr 2026 09:29:05 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92) id 1wAPDd-0005nQ-Ad
 for xen-devel@lists.xenproject.org; Wed, 08 Apr 2026 09:29:05 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wAPDc-00EvzP-Fm
 for xen-devel@lists.xenproject.org; Wed, 08 Apr 2026 11:29:04 +0200
Received: from [10.42.69.10] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <oleksii.kurochko@gmail.com>)
 id 69d61fde-bab6-0a2a0a5309dd-0a2a450ad1c0-10
 for <xen-devel@lists.xenproject.org>; Wed, 08 Apr 2026 11:29:04 +0200
Received: from [209.85.128.50] (helo=mail-wm1-f50.google.com)
 by tlsNG-4011c0.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.0)
 (envelope-from <oleksii.kurochko@gmail.com>)
 id 69d61fe0-ee98-0a2a450a0019-d1558032e826-3
 for <xen-devel@lists.xenproject.org>; Wed, 08 Apr 2026 11:29:04 +0200
Received: by mail-wm1-f50.google.com with SMTP id
 5b1f17b1804b1-488c21c636dso8135795e9.2
 for <xen-devel@lists.xenproject.org>; Wed, 08 Apr 2026 02:29:04 -0700 (PDT)
Received: from [192.168.1.6] (user-109-243-69-121.play-internet.pl.
 [109.243.69.121]) by smtp.gmail.com with ESMTPSA id
 5b1f17b1804b1-488b6ff70bcsm336689285e9.14.2026.04.08.02.29.02
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Wed, 08 Apr 2026 02:29:03 -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=20251104 header.d=gmail.com header.i="@gmail.com" header.h="Content-Transfer-Encoding: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=20251104; t=1775640544; x=1776245344; darn=lists.xenproject.org;
        h=content-transfer-encoding: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;
        bh=9wAYwA8i6HQR6+x7nQ9JtS/eat0beW9e+Xk3Z/UyFlM=;
        b=FLRhV13SC8hi4mCf5T+XDAehtln7C9ayUl64PAl9EyhalAsdFE4B3NDl57NZWLfsDt
         7D6oxfFZkCgK2pvXkmlo5fQJy5bQOyWPD5kNio+FccWsr1WTZPxffuh8umBKGzKbjkT/
         wv8dZlqEj//Zt9KrztC47+XGBOMRrzt/GE4XMVJSnh2K+z9/7nQ/hgk4Sl7oRaxWwIM1
         YLmixnDCXdef51t5XHOjij1W/rSQPl62LgFWZG3aIXD8Ct8Be2LwvyKT0e+UavzVYflJ
         KPqBfJjku2KExyPJ48TliqYLNEPnHs7VZxwYIxzNaIy/MaV4R3Qi0seiftA93uS+e79o
         r8zw==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20251104; t=1775640544; x=1776245344;
        h=content-transfer-encoding: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;
        bh=9wAYwA8i6HQR6+x7nQ9JtS/eat0beW9e+Xk3Z/UyFlM=;
        b=AXqfV5Yg/OcMUA2ea9Rx7KV0iVz849/Bc/wuQjfpEbYCBiXSpQE+5+8iB45w0KnQVt
         Xwu++ubSwRaVFKcCarhLY2pmWXPC1aT05RVBwnDVueUMzV4An3BbZ0oNFXk4G6dNy3al
         XeTgHgSTpF/unc4KWInK5Lfb2B8B8qLggpIE8PYsbLkjLjUGLOFIen2UIVzkvW5QY+lh
         IelWuaqNFqDBAigDM4Hd1VS2aSK63IOhF/CW5axccxg8v9mXMJ92k8n0NXkIaRiPkL2F
         nLZlFnYywlCaRwnJk4KCyuADGx4WMbGIjzGZxDN+nJhKt1OdYqShOiI4wmJDqXNSqm/h
         dzCQ==
X-Forwarded-Encrypted: i=1; AJvYcCVz4WTxLIs9Z+bfEgeRNwFc2id1L5Ap4MYjGprVyZIYklMsTmPlqhGQzql1dBRX90KOBdptRrg2Zf4=@lists.xenproject.org
X-Gm-Message-State: AOJu0YzPJvbiWiNcxmAvkiG8ijXfvuEX0EVcQN+TMqB8xqLYsXxM7KFV
	1dJMvrNd3s/vG2iqn/LRyXTzDG4bwMCYPvBwyuyROEEw1N/kfrRoIChv
X-Gm-Gg: AeBDietWOjw0ciKvD9f+hQKqFS0Cgl/b1DuIlzCEL1A1lvWGkwNqtzSDL7LiiRU52UB
	100qFaxG626DiUc+EX2oXuKPddLrS/Ih3w9QSTqYjpYSc0+vi7BLSWao2zmBP+lmCimhwvU8+zQ
	5kwux2KOHMcmGmbUJ8YEk1mFNi1EXaAT0uqPmTcS8drYSd6K58l44PYjs2ya8f0Xvne1CVEBUoO
	ZZuCbyIwP97gJ3tl3VybyBDBoxIL63YL7xl5JhAybiLdX3YLL6EJeM0rdhBx0Jot/GoZjLWxNer
	8jhtLT+YtSuWt27EBSRS7sCRPSjl+aZ+ce+npBZPigQtB/wbfQimCMVq1t0uhSv/guJwGcUn4qN
	QXt9ggVakdKI1heWJj73QaxrnHgHDL+FVUUXiD2kn2NssNFPWJnshMaf8TMDwHXX2K9ZZOaiAkS
	lSlO4pW81EWdtwbfU1lQX5xfYUdfJBZ3duvjfTQX3tnH+YMGK6gjwsWaXgFC98YMZpkTx/7NG3c
	E0=
X-Received: by 2002:a05:600c:6986:b0:487:2671:fb8f with SMTP id 5b1f17b1804b1-488996ecbf3mr258854265e9.8.1775640543674;
        Wed, 08 Apr 2026 02:29:03 -0700 (PDT)
Message-ID: <4ebcb77b-7666-4087-b7c4-07e64260e5de@gmail.com>
Date: Wed, 8 Apr 2026 11:29:02 +0200
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH v2 1/4] xen/riscv: add exception table support
To: Jan Beulich <jbeulich@suse.com>
Cc: Romain Caritey <Romain.Caritey@microchip.com>,
 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.pau@citrix.com>,
 Stefano Stabellini <sstabellini@kernel.org>, xen-devel@lists.xenproject.org
References: <cover.1774863161.git.oleksii.kurochko@gmail.com>
 <dcf5786b4ec99edcec6554a338904c52f0c3b03f.1774863161.git.oleksii.kurochko@gmail.com>
 <a6c95e44-e324-493d-8e55-532223e56b17@suse.com>
Content-Language: en-US
From: Oleksii Kurochko <oleksii.kurochko@gmail.com>
In-Reply-To: <a6c95e44-e324-493d-8e55-532223e56b17@suse.com>
Content-Type: text/plain; charset=UTF-8; format=flowed
Content-Transfer-Encoding: 7bit
X-purgate-ID: tlsNG-4011c0/1775640544-BE54E0B1-E9372992/10/73395122804
X-purgate-type: spam
X-purgate-size: 3559



On 4/2/26 8:24 AM, Jan Beulich wrote:
> On 31.03.2026 21:04, Oleksii Kurochko wrote:
>> --- /dev/null
>> +++ b/xen/arch/riscv/extable.c
>> @@ -0,0 +1,85 @@
>> +/* SPDX-License-Identifier: GPL-2.0-only */
>> +
>> +#include <xen/init.h>
>> +#include <xen/bsearch.h>
>> +#include <xen/lib.h>
>> +#include <xen/livepatch.h>
>> +#include <xen/sort.h>
>> +#include <xen/virtual_region.h>
>> +
>> +#include <asm/extable.h>
>> +#include <asm/processor.h>
>> +
>> +#define EX_FIELD(ptr, field) ((unsigned long)&(ptr)->field + (ptr)->field)
>> +
>> +static inline unsigned long ex_insn(const struct exception_table_entry *ex)
>> +{
>> +    return EX_FIELD(ex, insn);
>> +}
>> +
>> +static inline unsigned long ex_fixup(const struct exception_table_entry *ex)
>> +{
>> +    return EX_FIELD(ex, fixup);
>> +}
>> +
>> +static void __init cf_check swap_ex(void *a, void *b)
>> +{
>> +    struct exception_table_entry *x = a, *y = b, tmp;
>> +    long delta = b - a;
>> +
>> +    tmp = *x;
>> +    x->insn = y->insn + delta;
>> +    y->insn = tmp.insn - delta;
>> +
>> +    x->fixup = y->fixup + delta;
>> +    y->fixup = tmp.fixup - delta;
>> +}
>> +
>> +static int cf_check cmp_ex(const void *a, const void *b)
>> +{
>> +    const unsigned long insn_a = ex_insn(a);
>> +    const unsigned long insn_b = ex_insn(b);
>> +
>> +    /* avoid overflow */
>> +    return (insn_a > insn_b) - (insn_a < insn_b);
> 
> What is the (slightly malformed) comment about? I don't see anything close
> to possibly causing overflow here.

Originally, I thought to imeplement this function something like:
   return insn_a - insn_b;

It'd get integer overflow when insn_a is a very small number and insn_b 
is very large.

It could drop the comment to avoid confusion.


> 
>> --- /dev/null
>> +++ b/xen/arch/riscv/include/asm/extable.h
>> @@ -0,0 +1,58 @@
>> +/* SPDX-License-Identifier: GPL-2.0-only */
>> +
>> +#ifndef ASM__RISCV__ASM_EXTABLE_H
>> +#define ASM__RISCV__ASM_EXTABLE_H
>> +
>> +#ifdef __ASSEMBLER__
>> +
>> +#define ASM_EXTABLE(insn, fixup)    \
>> +    .pushsection .ex_table, "a";    \
>> +    .balign     4;                  \
>> +    .long       ((insn) - .);       \
>> +    .long       ((fixup) - .);      \
> 
> For readability's sake I'm generally advocating for having enough, but
> not more parentheses than necessary. What's the purpose of the outer pair
> here and ...
> 
>> +    .popsection;
>> +
>> +.macro asm_extable, insn, fixup
>> +    ASM_EXTABLE(\insn, \fixup)
>> +.endm
>> +
>> +#else /* __ASSEMBLER__ */
>> +
>> +#include <xen/stringify.h>
>> +#include <xen/types.h>
>> +
>> +struct cpu_user_regs;
>> +
>> +#define ASM_EXTABLE(insn, fixup)        \
>> +    ".pushsection .ex_table, \"a\"\n"   \
>> +    ".balign    4\n"                    \
>> +    ".long      ((" #insn ") - .)\n"    \
>> +    ".long      ((" #fixup ") - .)\n"   \
> 
> ... here?

It looked visually better to me but I am okay to drop them.

> 
> I'm also uncertain about the use of .long (generally in RISC-V code, and
> really also in some other architectures). Imo, considering suffixes used
> in the instruction set (e.g. load/store insns or OP-32 ones in RV64) .word
> may be the more expressive directive.

Agree, we could use .word instead of .long.

> 
> Preferably with the adjustments:
> Acked-by: Jan Beulich <jbeulich@suse.com>

Thanks a lot.

> Happy to carry out while committing, provided you agree.

I would be happy with that.

~ Oleksii


From xen-devel-bounces@lists.xenproject.org Wed Apr 08 09:38:50 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 08 Apr 2026 09:38:50 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1275538.1561320 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wAPMp-0007Tf-L6; Wed, 08 Apr 2026 09:38:35 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1275538.1561320; Wed, 08 Apr 2026 09:38: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 1wAPMp-0007TY-IC; Wed, 08 Apr 2026 09:38:35 +0000
Received: by outflank-mailman (input) for mailman id 1275538;
 Wed, 08 Apr 2026 09:38:34 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92) id 1wAPMo-0007TS-OB
 for xen-devel@lists.xenproject.org; Wed, 08 Apr 2026 09:38:34 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wAPMo-00ElvW-43
 for xen-devel@lists.xenproject.org; Wed, 08 Apr 2026 11:38:34 +0200
Received: from [10.42.69.8] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <oleksii.kurochko@gmail.com>)
 id 69d62218-e002-0a2a0a5209dd-0a2a4508dd3a-26
 for <xen-devel@lists.xenproject.org>; Wed, 08 Apr 2026 11:38:34 +0200
Received: from [209.85.128.44] (helo=mail-wm1-f44.google.com)
 by tlsNG-c1860d.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.0)
 (envelope-from <oleksii.kurochko@gmail.com>)
 id 69d62219-fab6-0a2a45080019-d155802cd034-3
 for <xen-devel@lists.xenproject.org>; Wed, 08 Apr 2026 11:38:33 +0200
Received: by mail-wm1-f44.google.com with SMTP id
 5b1f17b1804b1-4889e045bc6so41717875e9.2
 for <xen-devel@lists.xenproject.org>; Wed, 08 Apr 2026 02:38:33 -0700 (PDT)
Received: from [192.168.1.6] (user-109-243-69-121.play-internet.pl.
 [109.243.69.121]) by smtp.gmail.com with ESMTPSA id
 5b1f17b1804b1-488c530910csm16397895e9.2.2026.04.08.02.38.32
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Wed, 08 Apr 2026 02:38:32 -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=20251104 header.d=gmail.com header.i="@gmail.com" header.h="Content-Transfer-Encoding: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=20251104; t=1775641113; x=1776245913; darn=lists.xenproject.org;
        h=content-transfer-encoding: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;
        bh=nOlgplv192aU92ntRM7Klvodu9hR8WTYXz2a9pOiR2Q=;
        b=TVYpaEXbyAQChGEpVIF4Vmi0wtT3xE6z4RmQON8oR7sG857+qpTfuV1xLlgjyu0cFu
         Tbz6zZz7xzsYY0hLcFSYow6Gw48g17cLuROrJJFAxNTvds3IO8VfqASyYhqZJatwLpin
         dLLxi8t9vh/RUqegGgOgAzvBlBVHaUi8Nrtjgha5nr1AcwLmHOc7VgcbMAqpWO5hZmzT
         qq/PmYNCoCzc032ZsvyuGnEjThMlbM8iLRjCR2qClwuCH0XrvLp9bGbKkPlT5xfrxOkJ
         YsZcYfOhhn5ZaoMaogqUSeVgrtpTHXQeRECPZH4fbBz5JItcN0eWMDpKBiqXFInOdNL7
         Nlrg==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20251104; t=1775641113; x=1776245913;
        h=content-transfer-encoding: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;
        bh=nOlgplv192aU92ntRM7Klvodu9hR8WTYXz2a9pOiR2Q=;
        b=oo+6I6HraJ2cnX4F1TyEPDMuqjOxBun42AmfQO96BTwlGOc0NxTW3PD3RQt1tKdk9J
         XdHr73AtVXTaLgTvkcan5DffnIdfvtE1YQ6C47BV7OBz19mXIOV0P36jjecRAR7OwAOT
         7VGsqcBLIgaseNedz/ryUthBWCbm31mVfLM6c8uPR9LAXf8q5yuHb9An41kixABraAWW
         onerPA5AVkXtE1OTGqcT2fezGihKS9N+hWpypaxdFsnfPm6ZC4Jy7HByRoieOSInYDO1
         MZk0MCtJl135cDRemUOt743mI0sbUlhhYrS6WBmN5EZ4qBMPR+eckNjIPy9hitfgFKZ9
         I5kg==
X-Forwarded-Encrypted: i=1; AJvYcCUkT4zjrZ9FhMebed/mqk5lTyXJcUb08IKWzRz89nwaDG0KZwt0OTwvUUO5GKBYaZ0FGY4UDQ6V4WI=@lists.xenproject.org
X-Gm-Message-State: AOJu0YzQwkt22WkMtL0/1gcLD0a3lr2nKhGN61xI+TVcEksS+nn0qOIh
	GfP7tznAObQ6S0oAV4I3GCWPmKafQuV/mI0rI39hF+WTgh1+i0Xk5hTB
X-Gm-Gg: AeBDiesNGGw04INAtqTU3aVpYPLZaOYTB5JJi29CfPpR8XvqC/F/9YWNwaQph8kXA3c
	8x45ci1BnSUyn/m5Qy/AOThYCzHtyEB7CTuadRPLpimRUGxAbujGbyaHoVpLdqt4iEpIE3vnVBY
	lw7aGR397CcEpFdtV7Dvojz89t8mHcK3QWGRpefkraYNyzgSI+zPYRbqsZDc+yxQ4jBuyeTTXFo
	fk0ryt83wprj531N97pM+qn4HhVfvhpgrOGBZFUYFcM2J4bel7UNLLGglgOjGf+P39xG778X6AV
	kd9Bh7Rqngzw4YSopjfTX+FWH6Xi5+3xxlBXDxpuVP47gkZFHdGJ6Av1MkvLNNn9KkBpPD3iwXz
	ikepsJDSexRoze3FIKETQYB6q85j6bF6D6FXDtASlCNjHcNRo+eu7iXOyEav55DPSKFOurkO90P
	VsVvR4ieuyPWjDxwIs2les7ErShA/Cpa+1BiRkNYHW+uk5FXDLzpLgG1misoYw+aVHqqLieCFhC
	8s=
X-Received: by 2002:a05:600c:8716:b0:488:c683:be89 with SMTP id 5b1f17b1804b1-488c683bee3mr29747625e9.9.1775641113286;
        Wed, 08 Apr 2026 02:38:33 -0700 (PDT)
Message-ID: <349481ac-544c-4c95-b919-c1936491c61d@gmail.com>
Date: Wed, 8 Apr 2026 11:38:31 +0200
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH v2 2/4] xen/riscv: add csr_read_safe() helper
To: Jan Beulich <jbeulich@suse.com>
Cc: Romain Caritey <Romain.Caritey@microchip.com>,
 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.pau@citrix.com>,
 Stefano Stabellini <sstabellini@kernel.org>, xen-devel@lists.xenproject.org
References: <cover.1774863161.git.oleksii.kurochko@gmail.com>
 <f870d5def964ee06471d6dde0f66d6585eb5ca36.1774863161.git.oleksii.kurochko@gmail.com>
 <f28b1c99-9d84-4338-9278-b85cf283e7ef@suse.com>
Content-Language: en-US
From: Oleksii Kurochko <oleksii.kurochko@gmail.com>
In-Reply-To: <f28b1c99-9d84-4338-9278-b85cf283e7ef@suse.com>
Content-Type: text/plain; charset=UTF-8; format=flowed
Content-Transfer-Encoding: 7bit
X-purgate-ID: tlsNG-c1860d/1775641114-F6F4A497-B87DB1DB/10/73395122804
X-purgate-type: spam
X-purgate-size: 1354



On 4/2/26 8:30 AM, Jan Beulich wrote:
> On 31.03.2026 21:04, Oleksii Kurochko wrote:
>> @@ -78,6 +80,38 @@
>>                              : "memory" );                        \
>>   })
>>   
>> +static always_inline bool csr_read_safe(unsigned long csr,
>> +                                        unsigned long *val)
>> +{
>> +#ifdef CONFIG_CC_HAS_ASM_GOTO_OUTPUT
>> +    asm_inline goto (
>> +        "1: csrr %[val], %[csr]\n"
>> +        ASM_EXTABLE(1b, %l[fault])
>> +        : [val] "=&r" (*val)
> 
> Why the & when there's only a single insn?

Agree, the & isn't needed here.

> 
>> +        : [csr] "i" (csr)
>> +        :
>> +        : fault );
>> +
>> +    return true;
>> +
>> + fault:
>> +    return false;
>> +#else
>> +    bool allowed = false;
>> +
>> +    asm_inline volatile (
>> +        "1: csrr %[val], %[csr]\n"
>> +        "   li %[allowed], 1\n"
>> +        "2:\n"
>> +        ASM_EXTABLE(1b, 2b)
>> +        : [val] "=&r" (*val), [allowed] "+r" (allowed)
>> +        : [csr] "i" (csr)
>> +        : );
> 
> Why the excess colon?

Missed to proper cleanup. It could be also dropped.

> 
> With these adjusted (again happy to do so while committing, so long
> as you agree):

I would be happy with that.

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

Thanks!

~ Oleksii


From xen-devel-bounces@lists.xenproject.org Wed Apr 08 09:45:19 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 08 Apr 2026 09:45:19 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1275547.1561329 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wAPTH-0000av-Br; Wed, 08 Apr 2026 09:45:15 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1275547.1561329; Wed, 08 Apr 2026 09:45: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 1wAPTH-0000ao-7i; Wed, 08 Apr 2026 09:45:15 +0000
Received: by outflank-mailman (input) for mailman id 1275547;
 Wed, 08 Apr 2026 09:45:14 +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 1wAPTF-0000ai-Q6
 for xen-devel@lists.xenproject.org; Wed, 08 Apr 2026 09:45:13 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wAPTF-004gL9-0w
 for xen-devel@lists.xenproject.org; Wed, 08 Apr 2026 11:45:13 +0200
Received: from [10.42.69.8] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <andrew.cooper@citrix.com>)
 id 69d623a1-5cb7-0a2a0a5109dd-0a2a4508e99a-44
 for <xen-devel@lists.xenproject.org>; Wed, 08 Apr 2026 11:45:12 +0200
Received: from [52.101.62.24]
 (helo=DM5PR21CU001.outbound.protection.outlook.com)
 by tlsNG-c1860d.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.0)
 (envelope-from <andrew.cooper@citrix.com>)
 id 69d623a7-fab6-0a2a45080019-34653e18c82b-3
 for <xen-devel@lists.xenproject.org>; Wed, 08 Apr 2026 11:45:12 +0200
Received: from CH8PR03MB8275.namprd03.prod.outlook.com (2603:10b6:610:2b9::7)
 by DS7PR03MB5400.namprd03.prod.outlook.com (2603:10b6:5:2cc::21) with
 Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9769.19; Wed, 8 Apr
 2026 09:45: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%6]) with mapi id 15.20.9769.018; Wed, 8 Apr 2026
 09:45: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=belj4vrmHV/oJBbrddtD/ZqwL5sEXuVTQEpaFKclygHxDWCthcfVDkyms/dXjAuY+/YnzgvSZvvryrIvnsfsDvbQpJpLphKiptE4UJYFovk2tCJ7L4emJkI5pIo7X1na/s8fmNyVRvQ37e8jcLOlcnek0DRGZ2tNS+GMdeN7KCxz/GqhZfs6ctPTn+gruPv+oaUzkoeyIe1bPaO4ObsY5OKpo0aCNzwQiiqGqH2bzf9fNfpM8Yt/cTkwdI12g9iYlUH3ibQOrpSlVUsAORrn5ed2w/bePO6ujK4f0tJZePzftJUBeVYxrrstxu0POs1O0bXPYOmW4qDvHVLwy/bx9A==
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com;
 s=arcselector10001;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1;
 bh=88syfBqlfNyzWnKeT6tZhpZjD64F/wZ/ihzykZrB3fI=;
 b=caejmzAzOIG7geKI+nn+fat1acXtz86faURz1k99JAk8S3rIxGJMBMS3nauqo0lvuVYMRT6pMT+Ayvt5iu4Wo8xEW18h52qbckjTUgVfkcfEPpZTS2L+yMfVVLuzT/2hbfgO/aY1zP3jkE0ChQ6G+sGWQJftYVH/UWxSDqua6m8UnKGDDVqs7QR3npPm+tldyrz/WhdRepXFvt+GrNCM7dZhxiQVjtjw9xjig7a40xtp0fU9RTa1TtmCMTDpfVAryziiHy3mOWpybg1u8qTpyh8MdOZuHApevIPM/aqKPjhcgQ+os4WykXdow1Nmx5AkvA6AXyBGUJ+ox6IMRAIjvg==
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=88syfBqlfNyzWnKeT6tZhpZjD64F/wZ/ihzykZrB3fI=;
 b=vS/cGaK4RopdSmdHH4ygWD4zFgUcoucmf4/XGNDD07/+5UBAUzeFYXk5k3RbYTr6XQi2P+BtVe1s5mnnvCvApa9Xal3/G7em7rMTlkIVvHBGvBNqFvke5F2EVqf0IqzmB0/YvP1GeRmB5gKy8liWvAmiN7kUXGsAViXL4/OcQ4U=
Authentication-Results: dkim=none (message not signed)
 header.d=none;dmarc=none action=none header.from=citrix.com;
Message-ID: <50892f52-34e3-4967-927b-0a3108623cdc@citrix.com>
Date: Wed, 8 Apr 2026 10:45:05 +0100
User-Agent: Mozilla Thunderbird
Cc: Andrew Cooper <andrew.cooper3@citrix.com>,
 Romain Caritey <Romain.Caritey@microchip.com>,
 Alistair Francis <alistair.francis@wdc.com>,
 Connor Davis <connojdavis@gmail.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.pau@citrix.com>,
 Stefano Stabellini <sstabellini@kernel.org>, xen-devel@lists.xenproject.org
Subject: Re: [PATCH v2 1/4] xen/riscv: add exception table support
To: Oleksii Kurochko <oleksii.kurochko@gmail.com>,
 Jan Beulich <jbeulich@suse.com>
References: <cover.1774863161.git.oleksii.kurochko@gmail.com>
 <dcf5786b4ec99edcec6554a338904c52f0c3b03f.1774863161.git.oleksii.kurochko@gmail.com>
 <a6c95e44-e324-493d-8e55-532223e56b17@suse.com>
 <4ebcb77b-7666-4087-b7c4-07e64260e5de@gmail.com>
Content-Language: en-GB
From: Andrew Cooper <andrew.cooper3@citrix.com>
In-Reply-To: <4ebcb77b-7666-4087-b7c4-07e64260e5de@gmail.com>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
X-ClientProxiedBy: LO2P265CA0005.GBRP265.PROD.OUTLOOK.COM
 (2603:10a6:600:62::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_|DS7PR03MB5400:EE_
X-MS-Office365-Filtering-Correlation-Id: 17a70a15-00b7-4708-aacc-08de955385d9
X-MS-Exchange-SenderADCheck: 1
X-MS-Exchange-AntiSpam-Relay: 0
X-Microsoft-Antispam:
	BCL:0;ARA:13230040|366016|1800799024|376014|7416014|22082099003|56012099003|18002099003;
X-Microsoft-Antispam-Message-Info:
	I/Qd+EpRz3PVTxT0kGKQTRje3otzwXulfU2heQYAmeiF6PMUl7UFtjcXIsX1GWYQM+LjuplebWE2z211xEk7o4kvn3aE1NJdRMDdvMmNQAokrMrbn21wL5k3JmBdNVeO69JE+nEu9PMJ7Nu62ypmV4sSGt/cl8SYMiF9A0isT27ykFfNq1++heN2bH5XASmS9MmGOMYgtmJmTfpLIaJ0MbeeJ1klePZEvu5M42iXW43BNlp1pSOr6rrUMLOzrgUSnbWulZIhrZfroAlzhy7MqrtJMt4ZhEGb9b9eCYpPVUeaxBIHfZN79V7Ixl4l2wLNoSYyOYIS+DXWGeBDgc28evRuvvlrPOLQ/0xGR5+J4rBj/mRfocYqnod+TuZbfHyawovxIZTnJ0MkUDjKA9LkexXqz2tEE4vSqQ8/GJCqdCAiCZy8PETv+W9wodEngnWxW8QW/8/u7lAPTZ2BXJArVsNZblMuYJPObIp3O5dubBw683V9zd2bTHCyKB0PUBA0IjfxlCZEaTlmIl6GFk+lsHkQgUdUmun9gFLfgjqncRj+zJqIHlPMHvIQ16gVjxQhd1U0Y0Phw6QHuUPtFlEbK1otXRwTs41g11OcLGyyAklBW99jE/I3ksaXkUklMcnawCwC+u82CBCTLHx+NtT6TAKEr0kzyDOOSk8dSSEMtK4MWYr4fOmUIN8XLxXiLeBLiN5USxjd3lQavhKGJook84Nd2gFLivJSUF/40PUheWg=
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)(7416014)(22082099003)(56012099003)(18002099003);DIR:OUT;SFP:1101;
X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1
X-MS-Exchange-AntiSpam-MessageData-0:
	=?utf-8?B?aHpuVlBJTGx2WGZYV1dxbjJ6ZUh4UUQ0QzZNZ3BNUjRoUGExMWlPVUpJcW8z?=
 =?utf-8?B?L0d2U0lDRjArMXludmFYVDQ3Kzllcyt2aGNLL1lLOC9ldlVTL0Z6eS9GS0x2?=
 =?utf-8?B?dXRndmpxQXJTRm4zOVJEQ3RzN0VCZlE3RWxxdjY0T3VpV1lqTnlBU0JmOHkv?=
 =?utf-8?B?czU0eDgvWEJlMHNBN0ZnY0o5Y1d4RDI4eStxT21XSmlPTCtRb1k5Q0w3QjJX?=
 =?utf-8?B?dVpPUDJzT0ZTUHhmeVZxSFJoSVFqUHM0bnJJVlFMRWFza1BGcy9hMnNySSty?=
 =?utf-8?B?Yll6djJHT2lnVVJTclBBMGtIbkQ5ZUtsQ3VJcHZrUGpZbU91ZU10T1hYek9M?=
 =?utf-8?B?S1FzSmYyd3RhVWxSMkNrRzd3dnBHYlNzaDRDZW1zZFcyTDBkRjYvZ3k0ZCtp?=
 =?utf-8?B?THdFcTVwUm94eE96NWl3anBQZnFJUGlPcjh5R0VhSVpLcWFKaitrQjh1cHBh?=
 =?utf-8?B?a1VmZEg1akN4OGhXSThVb3BMdnMzT20wQy92UC84NmFhMVBQUVo0ejNjSHV4?=
 =?utf-8?B?VkNVQTZ4b3dvam9OalM4SmRmQWhDVm15YWlqei9EUGRQU1YvYWdXNE4wMlky?=
 =?utf-8?B?dkpPWEl0d1BnQjZEN3lCK0xieC9oSDRtdjRKWTJRVURjaDZ6Ui9qdGVURC8w?=
 =?utf-8?B?bjdWMlI2eFRUQy9uWUpPVkhrWnByRGZVOVZlREVvRStpNjg1YXZ1T0krcy9w?=
 =?utf-8?B?QmhnaHFIUnNpc0FiQlpybURYU01ML1RzaHlLSDFoVnFrMU04Tjd3b1lCWE1P?=
 =?utf-8?B?WkVnU1RONjJJUVdTcGtRdnZURW1OTmZ4RkRoT3VFKy9udUVkTXpjVCtqN0My?=
 =?utf-8?B?azdZbTk0QzBZY3ltTXVvRTFITURvV0puY3lpRE11ZXYzL3kxVXJjeGx1RkVS?=
 =?utf-8?B?NHNNeVd6YkRydUtWcnkrZXl2SFhubEtlZzRoVEpzOS9XNHYzdUhFa3NUWFBz?=
 =?utf-8?B?aEJZWGsyS1pUU0RRNWhyUk9aSWdoQVBGMGs2TjlCNXdaYTVPbE1xUGU5SUNU?=
 =?utf-8?B?dkZ2TXNNSE9uVURKa282Y29TMUQyMi9yNFpzYVc4NC92NXhFRldwTVBRN3VZ?=
 =?utf-8?B?Mm1aYTVSUGZvZ2gxcVlPZzd5K1owYVhlRExnbEJmT2J1L0JWUTVKTXh3b21j?=
 =?utf-8?B?c0tSbjlyVjJFNkNzN01NR1RORlJGeHdKNHdscHg3WlJSb1RuNGlkS2Q2RjUy?=
 =?utf-8?B?RGpxUkppVXRJTU9HcUJQRlhKcmZDZStJampoSW9sZ3ljOWtacmdYcUJzN25S?=
 =?utf-8?B?K09GUmRjMVd5UnJWaGVZalc0NEtCdHg0T1NuR1M5Yjd3eXFVb2UwbHdVWEc3?=
 =?utf-8?B?NmJyN3Rva3p3azZUVXpZYksvc0xmZ2FDRnBaRHV3WHpYako4L0s0Mm1xSmRS?=
 =?utf-8?B?cGhQYjd4dmNsT0g2YkN3WkdFa0YzOUtLRUtVdEUrS2ZmSDZJS0g0VGRza2sx?=
 =?utf-8?B?T1RONThHSTYra2RtTmIyU013YXhSbEFtRkE5eTFxV2hHeEI4NTVYVjN0blBw?=
 =?utf-8?B?TUVNc0x5bE03dnRjay9iZFRNbmJ1YVJKd3o0bjg1YVFUdmlRajRZZ3FPM2kr?=
 =?utf-8?B?eWlyYmc0ZWo1cDMyWWt3L3pIaVBOZFZTK3hkUGxXYTVXbzhUcXVpRHA4SjhI?=
 =?utf-8?B?R0RYZ0xjTnM4NENLMFJWS2h1WWE3YXNSSGpENWZldnIwaWNBa25KR2RqUTMv?=
 =?utf-8?B?bW5LdU5rWVZTWUl6QWRYNkV4TWFINkQwZFBNZ25hQ2Q0MkNEbUFBRnlnU2lL?=
 =?utf-8?B?Ykd5b3ArUGJFandzaks0SmRjdDYvNjZDS2xlTzRBeGc3RkJoTWVKSXpSQnhs?=
 =?utf-8?B?Z3ZObXkyOVdkSlZtczBUMmhQSUw4OStCekZNTnlMdGFvOG9RZitHRmhadGkr?=
 =?utf-8?B?S2NnVEtlOGJuMkZyUVp6Z09zN1U0YlBUSWtoS3Zia3ZvTEpOZEYvVHgxL04v?=
 =?utf-8?B?MTRZMTU2d0lIUUlCYWdtSjFPMTVGdGIrc3NlZTIzdWZTODZjMU42KytwK2w0?=
 =?utf-8?B?RVllT1BWZWJ6NmVvZ1BRKytWM2N1ZFIwa2lFZHpsNHRqdWRKVENaUXUyd215?=
 =?utf-8?B?NVB6UkFlaHJvVldFcGNhamJha1BHUDZmZ3d4ZFNnWTZrZGY2dk8vM1c1Q0tm?=
 =?utf-8?B?N0p5aFBwQURvZVRKeXBuTnB5UzlFYSt3OWwrVVJhNi9FMzRtbDZoaEdKT1hV?=
 =?utf-8?B?dVR6RGNDNmZoTmZiWkRPNEVrVlplTjNqQ2RBOEZZdllLUzl0NGxKWk9OeFRz?=
 =?utf-8?B?RGJEbVNzRGZrRmdpQlVIcXlZZFNJZjB3VzhmUWdZaTdzZ1prdjhzaVBhVjha?=
 =?utf-8?B?RU5waEdEY3gxZWd3d2Z6U3hLd2dZVzQxdGNsSjFZaS9YTjhzRkhUYjNqSTUy?=
 =?utf-8?Q?z4lSzCtVolNFrUkQ=3D?=
X-OriginatorOrg: citrix.com
X-MS-Exchange-CrossTenant-Network-Message-Id: 17a70a15-00b7-4708-aacc-08de955385d9
X-MS-Exchange-CrossTenant-AuthSource: CH8PR03MB8275.namprd03.prod.outlook.com
X-MS-Exchange-CrossTenant-AuthAs: Internal
X-MS-Exchange-CrossTenant-OriginalArrivalTime: 08 Apr 2026 09:45:09.4346
 (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: YyFZTtkAYTGv8a3HeoU8iE8I0eB2dwhiuGFRyjQcuPKuPZRwaukyM/f93sJE10A9kUgL4raL0Nx9RJCYaOSIaZ4D2v9RN0W8gXYGTu4EZSQ=
X-MS-Exchange-Transport-CrossTenantHeadersStamped: DS7PR03MB5400
X-purgate-ID: tlsNG-c1860d/1775641512-74F5A497-1BD71AED/0/0
X-purgate-type: clean
X-purgate-size: 2233

On 08/04/2026 10:29 am, Oleksii Kurochko wrote:
>
>
> On 4/2/26 8:24 AM, Jan Beulich wrote:
>> On 31.03.2026 21:04, Oleksii Kurochko wrote:
>>> --- /dev/null
>>> +++ b/xen/arch/riscv/extable.c
>>> @@ -0,0 +1,85 @@
>>> +/* SPDX-License-Identifier: GPL-2.0-only */
>>> +
>>> +#include <xen/init.h>
>>> +#include <xen/bsearch.h>
>>> +#include <xen/lib.h>
>>> +#include <xen/livepatch.h>
>>> +#include <xen/sort.h>
>>> +#include <xen/virtual_region.h>
>>> +
>>> +#include <asm/extable.h>
>>> +#include <asm/processor.h>
>>> +
>>> +#define EX_FIELD(ptr, field) ((unsigned long)&(ptr)->field +
>>> (ptr)->field)
>>> +
>>> +static inline unsigned long ex_insn(const struct
>>> exception_table_entry *ex)
>>> +{
>>> +    return EX_FIELD(ex, insn);
>>> +}
>>> +
>>> +static inline unsigned long ex_fixup(const struct
>>> exception_table_entry *ex)
>>> +{
>>> +    return EX_FIELD(ex, fixup);
>>> +}
>>> +
>>> +static void __init cf_check swap_ex(void *a, void *b)
>>> +{
>>> +    struct exception_table_entry *x = a, *y = b, tmp;
>>> +    long delta = b - a;
>>> +
>>> +    tmp = *x;
>>> +    x->insn = y->insn + delta;
>>> +    y->insn = tmp.insn - delta;
>>> +
>>> +    x->fixup = y->fixup + delta;
>>> +    y->fixup = tmp.fixup - delta;
>>> +}
>>> +
>>> +static int cf_check cmp_ex(const void *a, const void *b)
>>> +{
>>> +    const unsigned long insn_a = ex_insn(a);
>>> +    const unsigned long insn_b = ex_insn(b);
>>> +
>>> +    /* avoid overflow */
>>> +    return (insn_a > insn_b) - (insn_a < insn_b);
>>
>> What is the (slightly malformed) comment about? I don't see anything
>> close
>> to possibly causing overflow here.
>
> Originally, I thought to imeplement this function something like:
>   return insn_a - insn_b;
>
> It'd get integer overflow when insn_a is a very small number and
> insn_b is very large.
>
> It could drop the comment to avoid confusion.

"insn_a - insn_b" is a very common bug in cmp() functions.  It does
cause the sort/search to malfunction when the subtraction overflows.

However, the form you've got (a > b) - (b > a) is a very common correct
form.  I'd drop the comment.

~Andrew


From xen-devel-bounces@lists.xenproject.org Wed Apr 08 09:46:09 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 08 Apr 2026 09:46:09 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1275554.1561338 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wAPU9-00013y-Iq; Wed, 08 Apr 2026 09:46:09 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1275554.1561338; Wed, 08 Apr 2026 09: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 1wAPU9-00013r-Fp; Wed, 08 Apr 2026 09:46:09 +0000
Received: by outflank-mailman (input) for mailman id 1275554;
 Wed, 08 Apr 2026 09:46:08 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <nicola.vetrini@bugseng.com>) id 1wAPU8-00012V-7m
 for xen-devel@lists.xenproject.org; Wed, 08 Apr 2026 09:46:08 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wAPU7-004ggW-Ii
 for xen-devel@lists.xenproject.org; Wed, 08 Apr 2026 11:46:07 +0200
Received: from [10.42.69.4] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <nicola.vetrini@bugseng.com>)
 id 69d623dd-5cb7-0a2a0a5109dd-0a2a4504a398-8
 for <xen-devel@lists.xenproject.org>; Wed, 08 Apr 2026 11:46:07 +0200
Received: from [162.55.131.47] (helo=support.bugseng.com)
 by tlsNG-ebf023.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.0)
 (envelope-from <nicola.vetrini@bugseng.com>)
 id 69d623df-bb33-0a2a45040019-a237832f9b02-3
 for <xen-devel@lists.xenproject.org>; Wed, 08 Apr 2026 11:46:07 +0200
Received: from support.bugseng.com (support.bugseng.com [162.55.131.47])
 (Authenticated sender: nicola)
 by support.bugseng.com (Postfix) with ESMTPA id 14C154EE3C0D;
 Wed,  8 Apr 2026 11:46:07 +0200 (CEST)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-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
Authentication-Results: bugseng.com; arc=none smtp.remote-ip=162.55.131.47
ARC-Seal: i=1; d=bugseng.com; s=openarc; a=rsa-sha256; cv=none; t=1775641567;
	b=JGjmYZyOAsbwuiMD6FjKmlW9mfxp0Xd5VNrZ2Ehc+hZJX81lpWJHN47hzBf1btyS28KF
	 35zzqMAohzPTt2kUbMY+KIF55ygDPJm4j+ACyXnby1ZEQsC8EfO0NJ4b6I8pNdV+HzGJZ
	 aEbSrkUTbsLe6VSXm4iSv7HW11juSu493f9oApy/KXiip+djaHFk86KqNcenqVfo+DhEP
	 hPR3Hv9uYmew/sZbQLt9J17mUos3z1n3nX1NfOuQKa3yS6TqnBFAT3M4XVNrMA3tpneMl
	 imw8dCG3xDkIyqXPJTOyYbD7Ch5PZkxc7qifDdMzM44T+Zrg2T665LNQnRmq8E6FIq25g
	 2qxD0/PIdx6QysWeoZI1W0BBV0EWqqmjIwX1IR1sZYhUwMdaUwgwgTyra9Ng90qqBzuil
	 ccapBQeu2HGAJdulVU26bn/s8tgpWgaulOg8GwHqBm5d1qyqicObtU3JRkFGMhTz20W9P
	 0CHPPEhhmthZEBXTETayArgVfit42/iL6XZZq2p5hy0lX4QwproFtdjYktI2AoHXnf/aB
	 pGsigGGqcFK0qCpRJ7yyek7J0o9ofBw3cssCDHnI2iKbFNvH7drzD0iXA4ddaY5wBXVIG
	 nHech8r348uFvGojvBFG+TkW/AC/pUBuVS/mZuLn+crS+lolJvV/xzKKJcB8pr4=
ARC-Message-Signature: i=1; d=bugseng.com; s=openarc; a=rsa-sha256;
	c=relaxed/relaxed; t=1775641567;
	h=MIME-Version:Date:From:To:Cc:Subject:In-Reply-To:References:
	 Message-ID:X-Sender:Organization:Content-Type:
	 Content-Transfer-Encoding;
	bh=o8pjVGQOPOGXPvv25UbA6zDoKtK4aRmloMG823Xxr4U=;
	b=WI0IRWj82rjflsWEmcNDF/GDafBVAhBkCM51CwGy49S4crzcy7tJbX/juT+tgHHaSDSf
	 RgHzcqQr1cR6+X2Ax3LXNVHDiVgUW7JpIXDHTnTajPVEZoBUdLjaqrE+IV/dJraP/R9Bq
	 KWB0tCLJSCzwyk4/xIbmZgJpGHWwbdr2g7qCSAVuAcFN1bwYU2M8cVHsk2f3WIGbTawP6
	 IWMbzMxzWg2cfZLUUmqrJ6GVtmA9xHhTJcUl9qF6bBL+C9rHUbHNz9sg3mzSNvuQdaOk4
	 YvMQpoF9nbbf4xOux/zOOeinxaHTr2iC0OkS6C13TyHEOL8lBCVEcNJ2tIqB6Afu4t+Ld
	 mAddu0scRYd1Mn+Q0eBM2A4atUbtdkqzbVZbCxeASE00he4MV34/WTcsr3X5fsyW6UII9
	 rflSJtoSZ+/8+cupLoWQHL0Z4rQ4VzPRhyuHDhmFcxY2OUhHXGfWsM9NOJNsYTcGlo48T
	 V7ksOkv0EwxTEtouIdmj/lW0kmd2vh2GE4pWCk7l1R5vDOwjR871p+rv1w3Tqr9WXsz0O
	 +DK3oc3ZrD2VyjBQpUYHpsWmeECXNuzEJ+pn5FjQOJWJL1etppF1tE8kU2v1zB/uq7Z6b
	 WwEyhyR2zW0nd0s4IqEy8Qs67dr+1gKUC13adtcJn5JNT0omBiloe5pZ41qXfAU=
ARC-Authentication-Results: i=1; bugseng.com; arc=none smtp.remote-ip=162.55.131.47
MIME-Version: 1.0
Date: Wed, 08 Apr 2026 11:46:07 +0200
From: Nicola Vetrini <nicola.vetrini@bugseng.com>
To: Andrew Cooper <andrew.cooper3@citrix.com>, Michal Orzel
 <michal.orzel@amd.com>
Cc: xen-devel@lists.xenproject.org, Julien Grall <julien@xen.org>, Rahul
 Singh <rahul.singh@arm.com>, Stefano Stabellini <sstabellini@kernel.org>,
 Bertrand Marquis <bertrand.marquis@arm.com>, Volodymyr Babchuk
 <Volodymyr_Babchuk@epam.com>
Subject: Re: [PATCH 0/2] Final series to make Arm MISRA allcode green
In-Reply-To: <68cea196-efdc-4481-9e4b-bb450bcd2071@citrix.com>
References: <20260407103434.90838-1-michal.orzel@amd.com>
 <68cea196-efdc-4481-9e4b-bb450bcd2071@citrix.com>
Message-ID: <bdb8e991bbd200de2f0af5991304dffb@bugseng.com>
X-Sender: nicola.vetrini@bugseng.com
Organization: BUGSENG s.r.l.
Content-Type: text/plain; charset=US-ASCII;
 format=flowed
Content-Transfer-Encoding: 7bit
X-purgate-ID: tlsNG-ebf023/1775641567-3172251B-88AE9EBC/0/0
X-purgate-type: clean
X-purgate-size: 896

On 2026-04-08 11:22, Andrew Cooper wrote:
> On 07/04/2026 11:34 am, Michal Orzel wrote:
>> No more regressions for clean guidelines:
>> https://gitlab.com/xen-project/people/morzel/xen/-/pipelines/2433943072
>> 
>> Michal Orzel (2):
>>   iommu/arm: smmu: Fix variable shadowing
>>   iommu/arm: ipmmu-vmsa: Fix variable shadowing
>> 
>>  xen/drivers/passthrough/arm/ipmmu-vmsa.c | 6 ++----
>>  xen/drivers/passthrough/arm/smmu.c       | 7 +++----
>>  2 files changed, 5 insertions(+), 8 deletions(-)
> 
> If all the violations are fixed, should this test be made blocking?
> 
> ~Andrew

Only if they are also clean on x86; otherwise an arm-specific list of 
clean rules should be made (probably better). @Michal what do you 
prefer?

-- 
Nicola Vetrini, B.Sc.
Software Engineer
BUGSENG (https://bugseng.com)
LinkedIn: https://www.linkedin.com/in/nicola-vetrini-a42471253


From xen-devel-bounces@lists.xenproject.org Wed Apr 08 09:51:25 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 08 Apr 2026 09:51:25 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1275566.1561346 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wAPZB-0002rg-6s; Wed, 08 Apr 2026 09:51:21 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1275566.1561346; Wed, 08 Apr 2026 09:51: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 1wAPZB-0002rZ-4B; Wed, 08 Apr 2026 09:51:21 +0000
Received: by outflank-mailman (input) for mailman id 1275566;
 Wed, 08 Apr 2026 09:51:19 +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 1wAPZ9-0002rT-NH
 for xen-devel@lists.xenproject.org; Wed, 08 Apr 2026 09:51:19 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wAPZ7-0054yK-3D
 for xen-devel@lists.xenproject.org; Wed, 08 Apr 2026 11:51:18 +0200
Received: from [10.42.69.11] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <andrew.cooper@citrix.com>)
 id 69d62514-5cb7-0a2a0a5109dd-0a2a450b9b9a-16
 for <xen-devel@lists.xenproject.org>; Wed, 08 Apr 2026 11:51:18 +0200
Received: from [40.107.201.46]
 (helo=CH4PR04CU002.outbound.protection.outlook.com)
 by tlsNG-42698a.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.0)
 (envelope-from <andrew.cooper@citrix.com>)
 id 69d62515-bca8-0a2a450b0019-286bc92eff13-4
 for <xen-devel@lists.xenproject.org>; Wed, 08 Apr 2026 11:51:18 +0200
Received: from CH8PR03MB8275.namprd03.prod.outlook.com (2603:10b6:610:2b9::7)
 by PH7PR03MB7135.namprd03.prod.outlook.com (2603:10b6:510:2b3::18)
 with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9769.20; Wed, 8 Apr
 2026 09:51:15 +0000
Received: from CH8PR03MB8275.namprd03.prod.outlook.com
 ([fe80::a70d:dc32:bba8:ce37]) by CH8PR03MB8275.namprd03.prod.outlook.com
 ([fe80::a70d:dc32:bba8:ce37%6]) with mapi id 15.20.9769.018; Wed, 8 Apr 2026
 09:51: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=gDVtJ6Kqq+io+1yx/DxhVG7UrUlthBR2X3NHbQDk282ogMULlH0FTAwH4B+qKXGfTXbfWueo0XHv/nVt8WZmjYfuQEG6M39eQiLdWLTZqOHVGOaXDeE57uuZvimd8YAvNQe2I50byRDkdiwidWADLTCYQSPCS65mADcsBqBbT1vN4Fak2Iq42FcfnlOFJHUuBr/JbNIA62YlkzK/ZVvMWWTtTlM62IhVv3SAC4qDu3FJFrSi9PuzVAZz86Tl/y1sXB0ho7pQYC/Fw1heMIIIi2ajJRu82PxhyR1t5hm6eNGBDfVV//TmAcztKj1JTN1NWDd/OmcjeM7zYnOxFuqwuA==
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com;
 s=arcselector10001;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1;
 bh=kyQ6vquH4hEhzKWsUhUTr+mSncIo5TDiuXFQYOLH/oc=;
 b=GbW52Zb0PO7zCQKdB/EacZ8uCkiAaY/q07xI6bs4mBjGCNnYi5WejHPsk4iAOWGnqkRz4dXjoKDFNwZneNLZ4zKFCKfLcUhiPT2kGD7F69LDuxEuvEjg2Qe5zysU/+CP9xgvLbZkh4dFBe4cu34GqEj9v2cuMUEQLaqp0f9fVOK5F9dfPTEFOjfy2WikMNzNQSitBuDnc4WdLUT4DfrwP+sw59HCPJTG9KN5QpAh0mbh/IH1s+3xguKTyQaaNI1+tWTHrLy/77VuBb7JCAxNcf0rSm/y36VXkAVcAfZMrYMs/CwDcjHtj8djtUXrdqEuxR8rJNNSU89wdeBfU7UOxA==
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=kyQ6vquH4hEhzKWsUhUTr+mSncIo5TDiuXFQYOLH/oc=;
 b=Fv6DASk64GMo354jCoTNcnHMd50mr3Tzk4N73vHsfYM5uhuzICHuj0HYkDn+9CRS/GNH9hs+zVZ3fzBN1YOfM7aXOQIjt3fj4/svqr5ziZobSbDESs5tt/uC4RSGgNo6GR21cZdbUWlADiFiECVISBJk82jlo2ViLW2IYjlLRsc=
Authentication-Results: dkim=none (message not signed)
 header.d=none;dmarc=none action=none header.from=citrix.com;
Message-ID: <14185c87-84c0-4019-a3f6-50587b941350@citrix.com>
Date: Wed, 8 Apr 2026 10:51:11 +0100
User-Agent: Mozilla Thunderbird
Cc: Andrew Cooper <andrew.cooper3@citrix.com>,
 xen-devel@lists.xenproject.org, Julien Grall <julien@xen.org>,
 Rahul Singh <rahul.singh@arm.com>,
 Stefano Stabellini <sstabellini@kernel.org>,
 Bertrand Marquis <bertrand.marquis@arm.com>,
 Volodymyr Babchuk <Volodymyr_Babchuk@epam.com>
Subject: Re: [PATCH 0/2] Final series to make Arm MISRA allcode green
To: Nicola Vetrini <nicola.vetrini@bugseng.com>,
 Michal Orzel <michal.orzel@amd.com>
References: <20260407103434.90838-1-michal.orzel@amd.com>
 <68cea196-efdc-4481-9e4b-bb450bcd2071@citrix.com>
 <bdb8e991bbd200de2f0af5991304dffb@bugseng.com>
Content-Language: en-GB
From: Andrew Cooper <andrew.cooper3@citrix.com>
In-Reply-To: <bdb8e991bbd200de2f0af5991304dffb@bugseng.com>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
X-ClientProxiedBy: LO4P123CA0489.GBRP123.PROD.OUTLOOK.COM
 (2603:10a6:600:1ab::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_|PH7PR03MB7135:EE_
X-MS-Office365-Filtering-Correlation-Id: 7cf7f9b5-b2b4-4ec8-2c1b-08de95545fb0
X-MS-Exchange-SenderADCheck: 1
X-MS-Exchange-AntiSpam-Relay: 0
X-Microsoft-Antispam:
	BCL:0;ARA:13230040|366016|1800799024|376014|22082099003|56012099003|18002099003;
X-Microsoft-Antispam-Message-Info:
	gtidyFuMfpBuWzp5ZMLncsSazkGE2W84npQlqroJJZ+nakSxQTT3Ky65TzE/WTMnCK5ju86aYoICAkZq2y1uhaq5xsp7QlKGpSaR5PWBp1r7h7F2g/2Y5dCxoMgJxX3oOn4S9MSF2CPIqXtCyOcxGuhnwwN7EGZnK65+h2uoXv73q47rkP8o0I0IoL5qN0nTa9AWdi7s30Q2vYdjrsbzvZoJLbvJt+bhNVNI2ej6A5qIBSgpw/LwPq+HhR9HMlBwP75AHNLGGPhLJphw+9gIEcli3coYhNwX9MdaNePbcK2NHZq2pEQJrK+gggNdPEmGm0TxnEoq1+MClC+8n5eNBi0DRw4CJ+VS6deL9T42SwMlIKTblHPpkYS52WajGEXi752/Uq317xLihkdPfAw6sMlcnc1QAyJi6sQoaU2s0CVrdoNONFPxlRMCZcphg1Vk1ynasqSKPoSit+nKDXi0sWBMjQj/SpGWsyb2OBEGN4x4JiRX/DJDRn4Fjmy0scgddmNRAFxE+VJQwbF0+DPln/YmuxNeS6Pej2YI4XrP8/UMG6PpwweRPK7Llm//PhGaXs872pAoG8BrmyItlb8fWOkLlpDjjPoDf50GPjfufaEDfEtuCzm/jrM1bqKGKbteuw34oT9UqPekyb1n1KlD8zn9gWJgeY636PSc4gGVtAK/iQF8YJ8Ei9bUp0AtocW3
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)(22082099003)(56012099003)(18002099003);DIR:OUT;SFP:1101;
X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1
X-MS-Exchange-AntiSpam-MessageData-0:
	=?utf-8?B?cEM4ZCtvZVU5dDhLQWtTNkk0a0xBc3FVQzBLaDVqVkxUOUdzYjBqa2tEU0JZ?=
 =?utf-8?B?UEpqc3MzN09XaDdMQVhiU3JFMmpnQ2NSU0ZKZ1l3Q1VkYkdVTlVuYTFvbGlq?=
 =?utf-8?B?SWR3eGN2RXErQloxcVBZZHBybWF4VStNaFhibDNqR2oxNDNFRCtNOVpmL0Ro?=
 =?utf-8?B?SmJBZmIyWWdyYUlqdzBzOTRBd2FIaEh2RUNSMFJnL2FIVzlSNVJSV1FaRmkv?=
 =?utf-8?B?dmN5MkNIME1vOTB4dys1VHFYVWN4VmtDQ3Ivbkd3c1Q1Q3VHREEwRlZQMHE2?=
 =?utf-8?B?cE9PK3l6a01XYk5hYWdzMjQrZmhzelNlZUkyU3dFSk9wTUVvZDk3cnovRzlh?=
 =?utf-8?B?TzkwUk1jbXArQ3NlVk90U3lGNE94UGYwaXVIbTdKU1R6cEp4cktMUzViQ0R5?=
 =?utf-8?B?UFZLeHpPdnRlanYvZjZ1ZXhXSzN5RXJKTlRMU2tadFprcmtGUWlSVTVUcGN2?=
 =?utf-8?B?NXhKa0VPSmpxaWJKeHpoYkRKRU15WGRwZkFSWEt5Y212RjYzMXpTMWRSZWw0?=
 =?utf-8?B?QURrZ0JWM1NuNXFwNW56dXpBWUhkK1BIcHlGUzNpc0R5MUlvS1dmVyttVmpj?=
 =?utf-8?B?VkpnVVAzbU1ndzV5a0s0dDJpVkJ2RVJkZ09zQ3R1a2wrS0hLSnJoNXVadU5w?=
 =?utf-8?B?T1hoK01hdVB1aDV1UGdDc1VFa0E3eHFtUlMxZnk2U0NCa0c0a2JuZkk0SHp1?=
 =?utf-8?B?Z3pkNmNnQmxEZy9SUVdJa05qUFhNWUpKM3RwVGYxOWpacFpaRWRySGUyU2Yz?=
 =?utf-8?B?Z3ZwRDlvTHJXbkhvbnNnM2M0TUFZcVdLSGxGNGhacjg3KzFaRjdDc0VlVllY?=
 =?utf-8?B?M2NHczNwT2xUMjlKVnY4TDRBcnpmUlZ5ZGxwZU1oUDIyczhuRFZPMkFJbXd1?=
 =?utf-8?B?MGZUdUoxL29TUDF0V0o3K2h0MFFqVHJqNTN2MTZvbEtvSlZsR2ZyUHl3U1or?=
 =?utf-8?B?bFhUUGtiVGVQNTYxL0VOYUNtcUdKa1U5ME5wcWNFODJsd2EzaEpFNVNqTWxB?=
 =?utf-8?B?MUcwWGY1ajlmcTBEdExsRld0Z1RKWEdEMVB1VUdJblF2RmdwaGsyWDNKY21P?=
 =?utf-8?B?R1U3TGZPeDJ2dnZBcnBkakN2Q1J6azQ4MWI4cXpGY2VkMWN2NzcwSTJ3bStR?=
 =?utf-8?B?cElvamsxMnE3elF4YWhBRXJiR2Q0cFRFY3ZpQjhSWjJ5UWlvN1MrUzZ6RkZJ?=
 =?utf-8?B?VVdmWlZjSjVxY29GSWhYRW94cXdORWxXWWxGRkM3aVRLdUYxdVhMY01veGdq?=
 =?utf-8?B?QjZyTjRCbC9HSkhsVEhkT3RjdXIyVDhPaVJ3aGp2MGUwNzBXbmdUeWk1dXB3?=
 =?utf-8?B?cnRuUlp2N1FRemtNMVVZRHpkb2FUaW5HK2lCTUxRRnVQUnlLQ3ZsazVoQVBy?=
 =?utf-8?B?WmJwSGxwZjFKRG5YdmlFVnhleGQyTGQzWjU3VTlDUVFlU01acVZiMjhsclVh?=
 =?utf-8?B?S2F0V0JrNWdtSnY3R1RSRTRUb2F3WmJWRzdTV0s2bnIrUXNXd0NwOE1WRVdi?=
 =?utf-8?B?SUpPT3FxdTl6Zkgrb3lMeko0T09wdG1KQU5ybEFFWjFYdW94cjRVZXVJOW9C?=
 =?utf-8?B?eWd2elZkTmMvWHFIc2VuMXUvVlNkZ2JrUlR6VkhtT0llTEpUWlZrWjNhdFJR?=
 =?utf-8?B?RGZrYjVPdUlKeWkzdGlvRTlkZWhSSkdsaUpDNlpROW0vdUdEVjNjQmhNVVVG?=
 =?utf-8?B?UCtjaktxdFVFZjYydWR0QnQ5Znp1RC9SZ08yeFkrLzJrbTlBUHNkRVNvWFN1?=
 =?utf-8?B?b3A3eFJhczVFOTBRaU4ycjRBL0o3dHNYZURLWVdwV0VGNHNvWDdqd2pmdmdV?=
 =?utf-8?B?U21TTmpGSGZhZTN0THlFbXhNci9GOEVmRlVVaG5pNFVqczB4REViMG9QOW5r?=
 =?utf-8?B?dGZzd3pOQlFRYWYwVVN1Y0RhN1FnTE1ldERobmxVcFVBL0FLNHlIb2plMUdN?=
 =?utf-8?B?dVFaYjlQTEpSb3FtcjVRcGRrbzFmaFNuTmJYVVEvZUtocWlqRE9qbkVyY1lV?=
 =?utf-8?B?NG5PRlQ1N0huMzBvUzQrSmJrRnhxVVZ4MGh4aFB4MTROMUNBUGF5a2hoVjZ6?=
 =?utf-8?B?cm5HcVBoRXFqa2xsa1FTMFZSOXFVSXZsS1JaWmV2bUVLd1J2bzhCMUZpWlJ3?=
 =?utf-8?B?dUJFYlNMSHNvNExlWS9saU1YbVU4OEtKNmgvVXVNc2pUVkw4b3BIc3BkTDZC?=
 =?utf-8?B?K0cwVXowZWJyTFVLWWNVd3BaZkpqUG5lTmZnUEV1VXdveXpveVUvOUxtS1JR?=
 =?utf-8?B?ZS95a2dNMmIwZUQ5ZXZBemhUUnYxN2hSSjc0RDhnT25FTHRod3NJcEc1cFZ6?=
 =?utf-8?B?V3dlRWE1WUQySjBYRm45amxKM3lPMCtmQU42TzFnR3VhRGYwRHlvUyt6RXEw?=
 =?utf-8?Q?CPNVLUWfGGhIzDck=3D?=
X-OriginatorOrg: citrix.com
X-MS-Exchange-CrossTenant-Network-Message-Id: 7cf7f9b5-b2b4-4ec8-2c1b-08de95545fb0
X-MS-Exchange-CrossTenant-AuthSource: CH8PR03MB8275.namprd03.prod.outlook.com
X-MS-Exchange-CrossTenant-AuthAs: Internal
X-MS-Exchange-CrossTenant-OriginalArrivalTime: 08 Apr 2026 09:51:14.9969
 (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: 62Snx6t+0J5kjvw/ZtOzryUyv4Y4JMdL4vsmD2MxCaDKC0yZmqDed0DPZYCBN9WQrUJXyf3tng/8F4F0/ZJNPuorFvLy/ECROfurg7z7fuM=
X-MS-Exchange-Transport-CrossTenantHeadersStamped: PH7PR03MB7135
X-purgate-ID: tlsNG-42698a/1775641878-EFD472A1-8637F84E/0/0
X-purgate-type: clean
X-purgate-size: 1398

On 08/04/2026 10:46 am, Nicola Vetrini wrote:
> On 2026-04-08 11:22, Andrew Cooper wrote:
>> On 07/04/2026 11:34 am, Michal Orzel wrote:
>>> No more regressions for clean guidelines:
>>> https://gitlab.com/xen-project/people/morzel/xen/-/pipelines/2433943072
>>>
>>> Michal Orzel (2):
>>>   iommu/arm: smmu: Fix variable shadowing
>>>   iommu/arm: ipmmu-vmsa: Fix variable shadowing
>>>
>>>  xen/drivers/passthrough/arm/ipmmu-vmsa.c | 6 ++----
>>>  xen/drivers/passthrough/arm/smmu.c       | 7 +++----
>>>  2 files changed, 5 insertions(+), 8 deletions(-)
>>
>> If all the violations are fixed, should this test be made blocking?
>>
>> ~Andrew
>
> Only if they are also clean on x86; otherwise an arm-specific list of
> clean rules should be made (probably better). @Michal what do you prefer?
>

All I'm suggesting is this:

xen.git/xen$ git diff
diff --git a/automation/gitlab-ci/analyze.yaml b/automation/gitlab-ci/analyze.yaml
index 4e9af9d60224..f01798c5dee6 100644
--- a/automation/gitlab-ci/analyze.yaml
+++ b/automation/gitlab-ci/analyze.yaml
@@ -149,7 +149,7 @@ eclair-ARM64-allcode:
       CONFIG_STACK_PROTECTOR=y
       CONFIG_UNSUPPORTED=y
       CONFIG_VM_EVENT=y
-  allow_failure: true
+  allow_failure: false
 
 eclair-ARM64-testing:
   extends: eclair-ARM64-allcode


so regressions become blocking.

~Andrew


From xen-devel-bounces@lists.xenproject.org Wed Apr 08 10:03:55 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 08 Apr 2026 10:03:55 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1275577.1561356 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wAPlF-0004n4-6w; Wed, 08 Apr 2026 10:03:49 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1275577.1561356; Wed, 08 Apr 2026 10:03: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 1wAPlF-0004mx-3k; Wed, 08 Apr 2026 10:03:49 +0000
Received: by outflank-mailman (input) for mailman id 1275577;
 Wed, 08 Apr 2026 10:03:48 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <vijayanand.jitta@oss.qualcomm.com>)
 id 1wAPlD-0004ml-Sb
 for xen-devel@lists.xenproject.org; Wed, 08 Apr 2026 10:03:48 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wAPlB-0058Wf-N2
 for xen-devel@lists.xenproject.org; Wed, 08 Apr 2026 12:03:47 +0200
Received: from [10.42.69.7] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <vijayanand.jitta@oss.qualcomm.com>)
 id 69d627ed-2eae-0a2a0a5409dd-0a2a4507a306-48
 for <xen-devel@lists.xenproject.org>; Wed, 08 Apr 2026 12:03:46 +0200
Received: from [205.220.180.131] (helo=mx0b-0031df01.pphosted.com)
 by tlsNG-ef75cf.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.0)
 (envelope-from <vijayanand.jitta@oss.qualcomm.com>)
 id 69d62800-ba2d-0a2a45070019-cddcb4837734-3
 for <xen-devel@lists.xenproject.org>; Wed, 08 Apr 2026 12:03:46 +0200
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
 63877UmF1619593
 for <xen-devel@lists.xenproject.org>; Wed, 8 Apr 2026 10:03:44 GMT
Received: from mail-pg1-f200.google.com (mail-pg1-f200.google.com
 [209.85.215.200])
 by mx0a-0031df01.pphosted.com (PPS) with ESMTPS id 4ddacrj7rt-1
 (version=TLSv1.3 cipher=TLS_AES_128_GCM_SHA256 bits=128 verify=NOT)
 for <xen-devel@lists.xenproject.org>; Wed, 08 Apr 2026 10:03:44 +0000 (GMT)
Received: by mail-pg1-f200.google.com with SMTP id
 41be03b00d2f7-c76ad3b732eso9137305a12.1
 for <xen-devel@lists.xenproject.org>; Wed, 08 Apr 2026 03:03:44 -0700 (PDT)
Received: from hu-vjitta-hyd.qualcomm.com ([202.46.23.25])
 by smtp.gmail.com with ESMTPSA id
 d2e1a72fcca58-82cf9b5fb22sm25805584b3a.26.2026.04.08.03.03.32
 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
 Wed, 08 Apr 2026 03:03:42 -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=qcppdkim1 header.d=qualcomm.com header.i="@qualcomm.com" header.h="Cc:Content-Transfer-Encoding:Content-Type:Date:From:Message-Id:MIME-Version:Subject:To"; dkim=pass header.s=google header.d=oss.qualcomm.com header.i="@oss.qualcomm.com" header.h="Cc:To:Content-Transfer-Encoding:MIME-Version:Message-Id:Date:Subject:From"
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=qualcomm.com; h=
	cc:content-transfer-encoding:content-type:date:from:message-id
	:mime-version:subject:to; s=qcppdkim1; bh=7S+jIsI8IolI8S/0NzS+SU
	gTDKQIENCfMEWeyQ17RZs=; b=E5a+CiVGxDzyfBjpQZeW+h8coO6mDpkw3C4VLr
	Il7IruwRRyGVifBF2tWEIh0RITVBUh7wynkqqBDiu0qvVthDXizphb40Z0fXg7l1
	4ePD+LWpuMLVmio17YTK1QVRNMPOyHYbMWFwoed9dZ4dSV6Mg9UfbYAstBHh0LrC
	ZcRfFoLo3Ctd4aDMK0HXfG7wz4TO1bUEzKb0WISeGCY/qyVcs8KZiv5bhjTW+QUi
	MjqFoHQ/Aq+Lu9LM0xUn0dFnnR/PTKUZzQwF1+yIbkQFbo36+N0foO3Q1elT13BM
	ppen4soBoDXUil18hOzE/8lDj63ocv022uBlYiZUp66jejBA==
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=oss.qualcomm.com; s=google; t=1775642623; x=1776247423; darn=lists.xenproject.org;
        h=cc:to:content-transfer-encoding:mime-version:message-id:date
         :subject:from:from:to:cc:subject:date:message-id:reply-to;
        bh=7S+jIsI8IolI8S/0NzS+SUgTDKQIENCfMEWeyQ17RZs=;
        b=fX7swSWBn02S82bZFlrwldi8/ZytSEL69f9F8mIuCnCDu/MTOqdYQSm2jsXgcphqZw
         tL2Hm5Hxr21LSdfya72/Qpu4QOrqNH+8xSM5GLQT9K9O0vDtp9cClb5x/zrmyrgd3N8w
         gUx5J3UG2tB7cXzUdjSrSKJ/hFuaQCTl7m0gefUXnCDiVOZrI+mOOI97GZi8C3T4SMpD
         RzuRRf+hddYKKpJ8HwG1ZEEKgC9D43Edbj149fD472Y2z/DbNZw1+e+JDw+hrovngyeV
         4iQsJMFS6M1GAsyOeC+uULNoHMlj0BetcX2oBoee5WGe/JYgiZSsvOQiH6xxUZt+vW8h
         PshA==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20251104; t=1775642623; x=1776247423;
        h=cc:to:content-transfer-encoding:mime-version:message-id:date
         :subject:from:x-gm-gg:x-gm-message-state:from:to:cc:subject:date
         :message-id:reply-to;
        bh=7S+jIsI8IolI8S/0NzS+SUgTDKQIENCfMEWeyQ17RZs=;
        b=LX17POHsye7lee7oV1Z2rQy8gJNCGqdSAiIl1PTYO5Irx6Ter9Kp9+UgwFyp/zyQGl
         pWHH4hDITi/t0DJLVlkzMTUG+4/mSmuiiBQkiWYy3mtC1SVH6ZS1agn2O2znXL9qkddG
         kbiINb9S0M9qEg97aIFLbOdnQmw4TvBn91cDwUw0FFpf7RRhsZF/nmHOKVaPxO4ZHgoR
         B5AZOqG8mrR2IOS8DXopYrX/tLKTWj5QM0+4tfONsTd2NzWdWaMxn/HgFv3jsZ/jsDfO
         xrhrgqNyBIEcRHkoplQdq2iYAr1Org/dJclUiTuV3iyOt20PdY5wTKTYpmxPUhP16oHs
         6oLQ==
X-Forwarded-Encrypted: i=1; AJvYcCWdWY9YyV60Rq++oyypFozdUA6HEYp24DdQB0lkA3AhQUK7ll/WbnbEtYZ4DZObXJhWA7KB2Z5hXvE=@lists.xenproject.org
X-Gm-Message-State: AOJu0Yz8CNBnFUl7BRpypsfKeURJROOq2CYeQXEn/tMJz3cIHFC7o357
	lPd6PVMCJlOA1xGn+9m6lhfpgpmIq5WlqP3VygM3AF9208oc989ql+3M+Nw8xKZpsUeU6UZ2/HD
	C5FziIuHlW63B1UK93m87wfYb26tBWcgIUQS4TpD3F+608rIMV+tlMbMWlEblGRMcI2KRYA==
X-Gm-Gg: AeBDiev0+QuSdaLxFZuav3FBWxRBhYgUGbPKSt7ibhqOo/Rpv0j1GOc3MPBGldjJNYC
	vnpw5GnHg30bUGSCusjsDk81+zoVnTVTPH/F+GrqC3B3SauC7OWWiCzU/+1sPilxa6SVt1M8QU3
	9v5d0qtgK92A9Obvg8ZR69Xi69WnPje8yj7AviAoC8ox54++kN8m7VaZUHT9WjAMn2BQJ6jt7q9
	CCSapEO4mZQlbaCntPYeNWZk8D6wbACO2nxZDp4d2IyteX2uggL7GcCr0yO3OiqUbZ/C15eh61f
	+qeWrNXQci/FmnVScSJWCBmSrh1FqqkDywyGsvrTTZpK+lGzvY3+LqjC3GOEbPYOKbSOuUH11qU
	C7V6YjES/RLte0e5SM+KuzzStl4Z8BWSvno4FZL7s3y3q8lgUvwl6R9/b
X-Received: by 2002:a05:6a00:3696:b0:827:2a07:231d with SMTP id d2e1a72fcca58-82d0da77231mr19594608b3a.17.1775642623063;
        Wed, 08 Apr 2026 03:03:43 -0700 (PDT)
X-Received: by 2002:a05:6a00:3696:b0:827:2a07:231d with SMTP id d2e1a72fcca58-82d0da77231mr19594542b3a.17.1775642622439;
        Wed, 08 Apr 2026 03:03:42 -0700 (PDT)
From: Vijayanand Jitta <vijayanand.jitta@oss.qualcomm.com>
Subject: [PATCH v13 0/3] of: parsing of multi #{iommu,msi}-cells in maps
Date: Wed, 08 Apr 2026 15:33:24 +0530
Message-Id: <20260408-parse_iommu_cells-v13-0-fa921e92661b@oss.qualcomm.com>
MIME-Version: 1.0
Content-Type: text/plain; charset="utf-8"
Content-Transfer-Encoding: 7bit
X-B4-Tracking: v=1; b=H4sIAOwn1mkC/33PQY7CMAwF0KugrCcoTkinnRX3QAi5jgORCmUSq
 ECod8ew6qKwsfQt+1l+qMI5cVF/i4fKPKSS+pMEcD8LRQc87VmnIA1lja2MM6DPmAvvUn88Xnf
 EXVc0kHO/VY3ctqhk75w5ptsb3WwlH1K59Pn+vjE0r+43bWi00asALTETeYZ1X8ry/4odydRSi
 nqhA5ip1MxJYISiykZC9Aih/kTBhLJ+lgKhIHJET4ZrS58oO6Hc7H9ghQpMMTjjmbGZocZxfAK
 rbA/VmwEAAA==
X-Change-ID: 20260301-parse_iommu_cells-1c33768aebba
To: Nipun Gupta <nipun.gupta@amd.com>, Nikhil Agarwal <nikhil.agarwal@amd.com>,
        Joerg Roedel <joro@8bytes.org>, Will Deacon <will@kernel.org>,
        Robin Murphy <robin.murphy@arm.com>, Marc Zyngier <maz@kernel.org>,
        Lorenzo Pieralisi <lpieralisi@kernel.org>,
        Thomas Gleixner <tglx@kernel.org>,
        Saravana Kannan <saravanak@kernel.org>,
        Richard Zhu <hongxing.zhu@nxp.com>,
        Lucas Stach <l.stach@pengutronix.de>,
        =?utf-8?q?Krzysztof_Wilczy=C5=84ski?= <kwilczynski@kernel.org>,
        Manivannan Sadhasivam <mani@kernel.org>,
        Bjorn Helgaas <bhelgaas@google.com>, Frank Li <Frank.Li@nxp.com>,
        Sascha Hauer <s.hauer@pengutronix.de>,
        Pengutronix Kernel Team <kernel@pengutronix.de>,
        Fabio Estevam <festevam@gmail.com>, Juergen Gross <jgross@suse.com>,
        Stefano Stabellini <sstabellini@kernel.org>,
        Oleksandr Tyshchenko <oleksandr_tyshchenko@epam.com>,
        Dmitry Baryshkov <dmitry.baryshkov@oss.qualcomm.com>,
        Konrad Dybcio <konrad.dybcio@oss.qualcomm.com>,
        Bjorn Andersson <bjorn.andersson@oss.qualcomm.com>,
        Rob Herring <robh@kernel.org>, Conor Dooley <conor+dt@kernel.org>,
        Krzysztof Kozlowski <krzk+dt@kernel.org>,
        Prakash Gupta <prakash.gupta@oss.qualcomm.com>,
        Vikash Garodia <vikash.garodia@oss.qualcomm.com>
Cc: linux-kernel@vger.kernel.org, iommu@lists.linux.dev,
        linux-arm-kernel@lists.infradead.org, devicetree@vger.kernel.org,
        linux-pci@vger.kernel.org, imx@lists.linux.dev,
        xen-devel@lists.xenproject.org, linux-arm-msm@vger.kernel.org,
        Vijayanand Jitta <vijayanand.jitta@oss.qualcomm.com>,
        Charan Teja Kalla <charan.kalla@oss.qualcomm.com>
X-Mailer: b4 0.15.1
X-Developer-Signature: v=1; a=ed25519-sha256; t=1775642611; l=6465;
 i=vijayanand.jitta@oss.qualcomm.com; s=20260301; h=from:subject:message-id;
 bh=k94qEoqP6LeaqMjZ56JkwcDL9Caxb++/1ywGR2aNrcE=;
 b=Fa93m6jMAv59XO0RGhV08H7u/lbeMgEu+VO89mYeYe9+udo03+OfW5l6aRjt+/+cujOgn9u6U
 /txq4POfFP1D4nQK6IieIAafLv29dRyBbPOkaAXwmZAh5zFPlwXVp/j
X-Developer-Key: i=vijayanand.jitta@oss.qualcomm.com; a=ed25519;
 pk=Lpi7Cs3wHe8KZtqvyci7FTOLzsKpEHKGCaPNZw+1zRI=
X-Proofpoint-ORIG-GUID: LRXHuetsYPN4AIdrux3S5NkkT1dYfojD
X-Proofpoint-GUID: LRXHuetsYPN4AIdrux3S5NkkT1dYfojD
X-Authority-Analysis: v=2.4 cv=WZs8rUhX c=1 sm=1 tr=0 ts=69d62800 cx=c_pps
 a=oF/VQ+ItUULfLr/lQ2/icg==:117 a=ZePRamnt/+rB5gQjfz0u9A==:17
 a=IkcTkHD0fZMA:10 a=A5OVakUREuEA:10 a=s4-Qcg_JpJYA:10
 a=VkNPw1HP01LnGYTKEx00:22 a=u7WPNUs3qKkmUXheDGA7:22 a=yx91gb_oNiZeI1HMLzn7:22
 a=VwQbUJbxAAAA:8 a=COk6AnOGAAAA:8 a=NEAV23lmAAAA:8 a=bC-a23v3AAAA:8
 a=EUspDBNiAAAA:8 a=qMDWySynzQg1s02BiloA:9 a=QEXdDO2ut3YA:10
 a=3WC7DwWrALyhR5TkjVHa:22 a=TjNXssC_j7lpFel5tvFf:22 a=FO4_E8m0qiDe52t0p3_H:22
X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwNDA4MDA5MSBTYWx0ZWRfXwTNtKqxCEoD2
 CVkeZaP3+CfDG5O+zhjTHt/VC7/RVzguDDx2pbGbRh2Pn6SYfHdvdODmTT7RqkfgzKS2h4GrB79
 vXK8D9sO3f944OtipA3xjougtS2o084VN2V8wqOFjLGAFpzht9KX4wZTSAYz0eGCQmDNxdvPxds
 /vOgmS1BHlAqQu3cQ9wN0K73FcVJx/5tfy743KQP2Zxyl9Rt+MEQV7J3fJEPG6RBHGhEraoTgJe
 EHfjYxm/btGBy9i7xCmUFG9NbiYeMPiCVgEMsV5qqqyB1CJMYa+FInQMXNaem7A3aEBtb/FDH+0
 OIrR+Vc+V43SjWWti2u63Q7IMz/LzaJ3oHzdnS9Cqw3hO5NzqbWBiXDDcSsWeWDFrG4/zVsDJMc
 OnftxPFn7l1JSIJn6cu3oz34N2Hl9ayPw3JO1NKk5Jd2c+WpEO5mSDs/D1H6xSiujZ0AK5f10Sc
 S9FSExVml65w60vbkdg==
X-Proofpoint-Virus-Version: vendor=baseguard
 engine=ICAP:2.0.293,Aquarius:18.0.1143,Hydra:6.1.51,FMLib:17.12.100.49
 definitions=2026-04-08_03,2026-04-08_01,2025-10-01_01
X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0
 suspectscore=0 malwarescore=0 adultscore=0 phishscore=0 clxscore=1015
 bulkscore=0 lowpriorityscore=0 spamscore=0 priorityscore=1501 impostorscore=0
 classifier=typeunknown authscore=0 authtc= authcc= route=outbound adjust=0
 reason=mlx scancount=1 engine=8.22.0-2604010000 definitions=main-2604080091
X-purgate-ID: tlsNG-ef75cf/1775642626-89B5041E-287AF279/0/0
X-purgate-type: clean
X-purgate-size: 6467

So far our parsing of {iommu,msi}-map properties has always blindly
assumed that the output specifiers will always have exactly 1 cell.
This typically does happen to be the case, but is not actually enforced
(and the PCI msi-map binding even explicitly states support for 0 or 1
cells) - as a result we've now ended up with dodgy DTs out in the field
which depend on this behaviour to map a 1-cell specifier for a 2-cell
provider, despite that being bogus per the bindings themselves.

Since there is some potential use[1] in being able to map at least
single input IDs to multi-cell output specifiers (and properly support
0-cell outputs as well), add support for properly parsing and using the
target nodes' #cells values, albeit with the unfortunate complication of
still having to work around expectations of the old behaviour too.
							-- Robin.

Unlike single #{}-cell, it is complex to establish a linear relation
between input 'id' and output specifier for multi-cell properties, thus
it is always expected that len never going to be > 1. 

These changes have been tested on QEMU for the arm64 architecture.

Since, this would also need update in dt-schema, raised PR[2] for the
same.

[1] https://lore.kernel.org/all/20250627-video_cb-v3-0-51e18c0ffbce@quicinc.com/
[2] PR for iommu-map dtschema: https://github.com/devicetree-org/dt-schema/pull/184

Robin,

Could this series be pulled into an immutable branch/tag, if it doesn't make
it into the v7.1 merge window? There are client changes dependent on it,
So it would help to get them moving forward rather than waiting another
cycle.

Thanks,
Vijay

V13:
  - Fix bad_map handling in of_map_id(): 'cells' is re-initialized to 0
    on each loop iteration, so the !bad_map guard was insufficient, cells
    stayed 0 for all entries after the first. Fix by explicitly setting
    cells=1 when bad_map is true on every iteration.
  - Collected Acked-by from Frank Li.

  Link to v12:
  https://patch.msgid.link/20260331-parse_iommu_cells-v12-0-decfd305eea9@oss.qualcomm.com

V12:
  - Call of_node_put() unconditionally in imx_pcie_add_lut_by_rid()
    thereby addressing comments from Bjorn Helgaas.

  Link to v11:
  https://lore.kernel.org/r/20260325-parse_iommu_cells-v11-0-1fefa5c0e82c@oss.qualcomm.com

V11:
  - Added explicit filter_np parameter to of_map_id() and of_map_msi_id()
    per Dmitry Baryshkov's review feedback, making the filter explicit
    instead of overloading arg->np as both input filter and output parameter.
  - Removed of_node_put() from inside of_map_id(), making the caller responsible
    for reference management. Updated of_msi_xlate() to properly handle reference counting.
  - Collected ACKed by tags, and fixed minor typos.
  Link to v10:
  https://lore.kernel.org/r/20260309-parse_iommu_cells-v10-0-c62fcaa5a1d8@oss.qualcomm.com

V10:
  - Move of_map_iommu_id()/of_map_msi_id() from include/linux/of.h to
    drivers/of/base.c as out-of-line helpers per feedback from Marc Zyngier
    and Rob Herring.
  - Add kernel-doc to document both helpers for discoverability and
    usage clarity.
  - Fix of_map_msi_id() wrapper and all its callers (cdx_msi.c,
    irq-gic-its-msi-parent.c, drivers/of/irq.c) to correctly use the new
    struct of_phandle_args-based API with proper of_node_put() handling
    as per feeback from Dmitry.
  Link to v9:
  https://lore.kernel.org/r/20260301-parse_iommu_cells-v9-0-4d1bceecc5e1@oss.qualcomm.com

V9:
  - Updated TO/CC list based on feedback to include all relevant
    maintainers.
  - No functional changes to the patches themselves.

  Link to V8:
  https://lore.kernel.org/all/20260226074245.3098486-1-vijayanand.jitta@oss.qualcomm.com/

V8:
  - Removed mentions of of_map_args from commit message to match code.

  Link to V7:
  https://lore.kernel.org/all/20260210101157.2145113-1-vijayanand.jitta@oss.qualcomm.com/

V7:
  - Removed of_map_id_args structure and replaced it with
    of_phandle_args as suggested by Dmitry.

  Link to V6:
  https://lore.kernel.org/all/20260121055400.937856-1-vijayanand.jitta@oss.qualcomm.com/

V6:
  - Fixed build error reported by kernel test bot.

  Link to V5:
  https://lore.kernel.org/all/20260118181125.1436036-1-vijayanand.jitta@oss.qualcomm.com/

V5:
  - Fixed Build Warnings.
  - Raised PR for iommu-map dtschema: https://github.com/devicetree-org/dt-schema/pull/184

  Link to V4:
  https://lore.kernel.org/all/20251231114257.2382820-1-vijayanand.jitta@oss.qualcomm.com/

V4:
  - Added Reviewed-by tag.
  - Resolved warnings reported by kernel test bot, minor code
    reorganization.

  Link to V3:
  https://lore.kernel.org/all/20251221213602.2413124-1-vijayanand.jitta@oss.qualcomm.com/

V3:
  - Added Reviewed-by tag.
  - Updated of_map_id_args struct as a wrapper to of_phandle_args and
    added comment description as suggested by Rob Herring.

  Link to V2:
  https://lore.kernel.org/all/20251204095530.8627-1-vijayanand.jitta@oss.qualcomm.com/

V2:
  - Incorporated the patches from Robin that does the clean implementation.
  - Dropped the patches the were adding multi-map support from this series
    as suggested.

V1:
 https://lore.kernel.org/all/cover.1762235099.git.charan.kalla@oss.qualcomm.com/

RFC:
 https://lore.kernel.org/all/20250928171718.436440-1-charan.kalla@oss.qualcomm.com/#r

Signed-off-by: Vijayanand Jitta <vijayanand.jitta@oss.qualcomm.com>
---
---
Charan Teja Kalla (1):
      of: Factor arguments passed to of_map_id() into a struct

Robin Murphy (2):
      of: Add convenience wrappers for of_map_id()
      of: Respect #{iommu,msi}-cells in maps

 drivers/cdx/cdx_msi.c                    |   8 +-
 drivers/iommu/of_iommu.c                 |   6 +-
 drivers/irqchip/irq-gic-its-msi-parent.c |  11 +-
 drivers/of/base.c                        | 215 ++++++++++++++++++++++++-------
 drivers/of/irq.c                         |  11 +-
 drivers/pci/controller/dwc/pci-imx6.c    |  34 +++--
 drivers/pci/controller/pcie-apple.c      |   6 +-
 drivers/xen/grant-dma-ops.c              |   5 +-
 include/linux/of.h                       |  30 ++++-
 9 files changed, 242 insertions(+), 84 deletions(-)
---
base-commit: 3fa5e5702a82d259897bd7e209469bc06368bf31
change-id: 20260301-parse_iommu_cells-1c33768aebba

Best regards,
--  
Vijayanand Jitta <vijayanand.jitta@oss.qualcomm.com>



From xen-devel-bounces@lists.xenproject.org Wed Apr 08 10:03:59 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 08 Apr 2026 10:03:59 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1275579.1561364 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wAPlP-00052U-Dg; Wed, 08 Apr 2026 10:03:59 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1275579.1561364; Wed, 08 Apr 2026 10:03: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 1wAPlP-00052N-Aq; Wed, 08 Apr 2026 10:03:59 +0000
Received: by outflank-mailman (input) for mailman id 1275579;
 Wed, 08 Apr 2026 10:03:57 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <vijayanand.jitta@oss.qualcomm.com>)
 id 1wAPlN-00051n-Lz
 for xen-devel@lists.xenproject.org; Wed, 08 Apr 2026 10:03:57 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wAPlN-005OmO-29
 for xen-devel@lists.xenproject.org; Wed, 08 Apr 2026 12:03:57 +0200
Received: from [10.42.69.4] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <vijayanand.jitta@oss.qualcomm.com>)
 id 69d62801-e002-0a2a0a5209dd-0a2a4504b632-34
 for <xen-devel@lists.xenproject.org>; Wed, 08 Apr 2026 12:03:56 +0200
Received: from [205.220.180.131] (helo=mx0b-0031df01.pphosted.com)
 by tlsNG-ebf023.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.0)
 (envelope-from <vijayanand.jitta@oss.qualcomm.com>)
 id 69d6280b-bb33-0a2a45040019-cddcb483cba8-3
 for <xen-devel@lists.xenproject.org>; Wed, 08 Apr 2026 12:03:56 +0200
Received: from pps.filterd (m0279869.ppops.net [127.0.0.1])
 by mx0a-0031df01.pphosted.com (8.18.1.11/8.18.1.11) with ESMTP id
 6389IjBj2412801
 for <xen-devel@lists.xenproject.org>; Wed, 8 Apr 2026 10:03:55 GMT
Received: from mail-pg1-f198.google.com (mail-pg1-f198.google.com
 [209.85.215.198])
 by mx0a-0031df01.pphosted.com (PPS) with ESMTPS id 4dd61vb73e-1
 (version=TLSv1.3 cipher=TLS_AES_128_GCM_SHA256 bits=128 verify=NOT)
 for <xen-devel@lists.xenproject.org>; Wed, 08 Apr 2026 10:03:54 +0000 (GMT)
Received: by mail-pg1-f198.google.com with SMTP id
 41be03b00d2f7-c769e2b1bd0so3345343a12.2
 for <xen-devel@lists.xenproject.org>; Wed, 08 Apr 2026 03:03:54 -0700 (PDT)
Received: from hu-vjitta-hyd.qualcomm.com ([202.46.23.25])
 by smtp.gmail.com with ESMTPSA id
 d2e1a72fcca58-82cf9b5fb22sm25805584b3a.26.2026.04.08.03.03.42
 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
 Wed, 08 Apr 2026 03:03:52 -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=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="Cc:To:In-Reply-To:References:Message-Id:Content-Transfer-Encoding:MIME-Version:Subject:Date:From"
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=
	QkYW84mNfsxJu25KdM9HhqHWqHHn7yyj15gOr+bOnfo=; b=RXcpx1ZRTwDeA/bt
	ToynNkAstqA1PSFVS/JPQHdD710GP5rO8S4CwZoNu7oIYfC1vOenA0X27aewuKVw
	81ywxO/OmUWZfViYhWAifNW61bmT0shnPPbM6J3qNbZqVyj8dE1JYthoEsiXt7RU
	LAmRRcP57sn+14GrPaXSk+wUi3g682NCXUHY6IAOtry3ybMVNxYYqtaJ8Zglx58/
	HoNmlbb6ZepFaKJImn42PemMsGBZvM0K37LRKyRiSUUuvn7xJ9kwI1EYql11OKLr
	H4IA8gcHjFMKDiPvotMv3m1lK4N/rj90/EYmBPIESe+e5/m0+KWwp22URgkxLZas
	2N9ykw==
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=oss.qualcomm.com; s=google; t=1775642634; x=1776247434; darn=lists.xenproject.org;
        h=cc:to:in-reply-to:references:message-id:content-transfer-encoding
         :mime-version:subject:date:from:from:to:cc:subject:date:message-id
         :reply-to;
        bh=QkYW84mNfsxJu25KdM9HhqHWqHHn7yyj15gOr+bOnfo=;
        b=TipCdt28Nd0wvklA+FI5N2oGlhCBkR1NOk5QQvMscShNw9Z/n+3gDThY8WhZGc+mtx
         pgWgWXlDFvsH1m6NoPLthGwsTYcI4UiE5+jhembZVbKSkknj1/1oA+uHSBkH0R+IXNhM
         7Xc3NOVE3sddLN/n3CSzjpT16Ao3CY4jMK6mbeCQT14OyGMrK9Lnx+UQH1nHdQPX9kSt
         orq2IE6aCzRdjuu9tL/kRoCAUoX8EPOQVZb1PC8qQSG69IcNaRiSWZEmxJrPvb6aL2Wc
         oO/L0sMU+feIHvuGN2ftC018Ufk7smOePP9mwyyZl1rFXMDgNvTWSFWAhZO5T+oLDx/p
         CNEg==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20251104; t=1775642634; x=1776247434;
        h=cc:to:in-reply-to:references:message-id:content-transfer-encoding
         :mime-version:subject:date:from:x-gm-gg:x-gm-message-state:from:to
         :cc:subject:date:message-id:reply-to;
        bh=QkYW84mNfsxJu25KdM9HhqHWqHHn7yyj15gOr+bOnfo=;
        b=Y6qVLPs3Ugt/Y37cMHZsuuAGpyxp8UVVJvabo5sQwHWHKg1HtrbKDcDO7hCZevY9bw
         SZ/oNMLJYMU0djuhm5ogvhAYt2UDYQD9dXmdI00P8rJ8RjJi7Tze4MRj2m2zkfVe3+i3
         PDfIvUfhUFLIlmtrVyJHSTJY8nmu6dfvQqENDToxQtvBz8tOB9rlqtMp+Zim/FAhoKS3
         cFWIcIz9N88r3iJ/qjIv8Xo46XhLNMZkxSWrUNMjgKrlj8Y6SGUfXg+mNlK7qrJQ3auI
         E1Iv0YsabJ53QZwgFXLf2skbpm789Z8PZjp5UDMMmVHfZNqE5HWxuXQqBCzh0uTVSCxB
         pd7Q==
X-Forwarded-Encrypted: i=1; AJvYcCVT/1kcgDYGWSiAMAjMjTUR6o0ZC0OvDHc5sZubSbMtJZ1FIX9OaLOSLn9kAOz/KeT64dRN5m/uqgs=@lists.xenproject.org
X-Gm-Message-State: AOJu0YyiX38yRFBS7FO5dQxJTbBF/luo9k6hXr0b2X4g0b22j6uJz37c
	h/5zqeY4iB+4DChz3sszm6Jtcp7k/v5UHUCynOjS9hTTO1yfiL7tqIHiInqTe45dS6BVINZrDm6
	iENjHpHvGqLjFMvzNjSTVHkDa1MXF/d5eHzey08hOTv+V4ZMem9f9ugZLGfGsrU/e3xNMcw==
X-Gm-Gg: AeBDies0M1UmWwm6jTCdOGQwsoIdn3zWYdDLmlROEh4Pgf0ljvFzCAEU7MPQRq34n4g
	0uP1OAcARH2B2nqD+DYwWeUXAGu8cV8FA5voav/7JfueONWXi3btR3TRTJONsDTpW7inV5iLr+7
	DeHiyp8sWkaNRp2+jxcY2r0z7QBpT673ywtuzB9C+95cnkK09g+PgPywrfqAl1WUg7ti4sW9tUK
	HdFSnDS2GHqloabDxQs4yS23NVwHPXsmfAFSzFQexYfCS2rVcetQYrZrz7iTL20lnQPoH5CYOYx
	ZmmQBHwej3PyEy2AtVTfCDzfTJD9IydjLYlr48H5Xo3VQJzIkBcxoOlv7rZqUWxJjkyYcGra0Db
	aqaQE699QQ5sSZ8Jj29n3NM80Tlbl/iQcMLUB9uEQy0G5nGr507SltQb7
X-Received: by 2002:a05:6a00:3cd3:b0:82c:dd31:b84a with SMTP id d2e1a72fcca58-82d0dbaf6bbmr20222248b3a.43.1775642633633;
        Wed, 08 Apr 2026 03:03:53 -0700 (PDT)
X-Received: by 2002:a05:6a00:3cd3:b0:82c:dd31:b84a with SMTP id d2e1a72fcca58-82d0dbaf6bbmr20222170b3a.43.1775642632934;
        Wed, 08 Apr 2026 03:03:52 -0700 (PDT)
From: Vijayanand Jitta <vijayanand.jitta@oss.qualcomm.com>
Date: Wed, 08 Apr 2026 15:33:25 +0530
Subject: [PATCH v13 1/3] of: Add convenience wrappers for of_map_id()
MIME-Version: 1.0
Content-Type: text/plain; charset="utf-8"
Content-Transfer-Encoding: 7bit
Message-Id: <20260408-parse_iommu_cells-v13-1-fa921e92661b@oss.qualcomm.com>
References: <20260408-parse_iommu_cells-v13-0-fa921e92661b@oss.qualcomm.com>
In-Reply-To: <20260408-parse_iommu_cells-v13-0-fa921e92661b@oss.qualcomm.com>
To: Nipun Gupta <nipun.gupta@amd.com>, Nikhil Agarwal <nikhil.agarwal@amd.com>,
        Joerg Roedel <joro@8bytes.org>, Will Deacon <will@kernel.org>,
        Robin Murphy <robin.murphy@arm.com>, Marc Zyngier <maz@kernel.org>,
        Lorenzo Pieralisi <lpieralisi@kernel.org>,
        Thomas Gleixner <tglx@kernel.org>,
        Saravana Kannan <saravanak@kernel.org>,
        Richard Zhu <hongxing.zhu@nxp.com>,
        Lucas Stach <l.stach@pengutronix.de>,
        =?utf-8?q?Krzysztof_Wilczy=C5=84ski?= <kwilczynski@kernel.org>,
        Manivannan Sadhasivam <mani@kernel.org>,
        Bjorn Helgaas <bhelgaas@google.com>, Frank Li <Frank.Li@nxp.com>,
        Sascha Hauer <s.hauer@pengutronix.de>,
        Pengutronix Kernel Team <kernel@pengutronix.de>,
        Fabio Estevam <festevam@gmail.com>, Juergen Gross <jgross@suse.com>,
        Stefano Stabellini <sstabellini@kernel.org>,
        Oleksandr Tyshchenko <oleksandr_tyshchenko@epam.com>,
        Dmitry Baryshkov <dmitry.baryshkov@oss.qualcomm.com>,
        Konrad Dybcio <konrad.dybcio@oss.qualcomm.com>,
        Bjorn Andersson <bjorn.andersson@oss.qualcomm.com>,
        Rob Herring <robh@kernel.org>, Conor Dooley <conor+dt@kernel.org>,
        Krzysztof Kozlowski <krzk+dt@kernel.org>,
        Prakash Gupta <prakash.gupta@oss.qualcomm.com>,
        Vikash Garodia <vikash.garodia@oss.qualcomm.com>
Cc: linux-kernel@vger.kernel.org, iommu@lists.linux.dev,
        linux-arm-kernel@lists.infradead.org, devicetree@vger.kernel.org,
        linux-pci@vger.kernel.org, imx@lists.linux.dev,
        xen-devel@lists.xenproject.org, linux-arm-msm@vger.kernel.org,
        Vijayanand Jitta <vijayanand.jitta@oss.qualcomm.com>
X-Mailer: b4 0.15.1
X-Developer-Signature: v=1; a=ed25519-sha256; t=1775642611; l=8620;
 i=vijayanand.jitta@oss.qualcomm.com; s=20260301; h=from:subject:message-id;
 bh=Bsp9hT6sgzNh1NrIZ0uduUy4Yj5U0gq9szC+ECoPqVA=;
 b=1jtxyj1nljWs2knelvu9gUqx4z67op6AyycivTypsbxJkeSjly3E+2krvp1ZLhyNEF7EMJLhj
 LYIKR2726jgBjLtrOiKVCOc6gc8Gb2cOgDuSi2nJU0q4j2+F0zbtGNM
X-Developer-Key: i=vijayanand.jitta@oss.qualcomm.com; a=ed25519;
 pk=Lpi7Cs3wHe8KZtqvyci7FTOLzsKpEHKGCaPNZw+1zRI=
X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwNDA4MDA5MSBTYWx0ZWRfX3u29PLxCMhfX
 +gX9z4FTHp8YuowL5yQfA+2+z29To4UkSlO1Ao9x0M4fFzS6VPuTx1jKmPDpvEvma3FZ8lIumFh
 no2iSNmUbTT14yqtDDbtbzPDuzCV0CLdmUuKFvsaSEizWOINAS+9liHNDbnurg6Y9vJt5Y2o6yn
 KN1YwoIDKA8oC02+4yNfsQxF5FUXyQ+w0T/nKS+M5kVx1kamihwamk0ONUfX/zidmPrknh5alV/
 8uz9RRJ2VFde3037Kx8F2sfk2thPoyhgqCthRhAXgSGec+Sf5RCzL/+ilqXZ6xeDIBIa2LOSQSA
 1FJiJ5ptLiNp2sjQ9YQdGZljytOHxwqFpAeiKYSyDciKfauEtD786BBkDtVZR2lV4cPYxfkYFml
 so+74rhTcwwLp0CVgfARAAJAU4IhEhtxJT2xPyWbJBAq33CvVILiejClxDtRxK6hca13x1RRXyZ
 0iBICJa1hu/5uprdSCA==
X-Authority-Analysis: v=2.4 cv=FecHAp+6 c=1 sm=1 tr=0 ts=69d6280a cx=c_pps
 a=Qgeoaf8Lrialg5Z894R3/Q==:117 a=ZePRamnt/+rB5gQjfz0u9A==:17
 a=IkcTkHD0fZMA:10 a=A5OVakUREuEA:10 a=s4-Qcg_JpJYA:10
 a=VkNPw1HP01LnGYTKEx00:22 a=u7WPNUs3qKkmUXheDGA7:22 a=_glEPmIy2e8OvE2BGh3C:22
 a=7CQSdrXTAAAA:8 a=VwQbUJbxAAAA:8 a=8AirrxEcAAAA:8 a=1XWaLZrsAAAA:8
 a=EUspDBNiAAAA:8 a=f4O9XJQV64orvU1ydW8A:9 a=QEXdDO2ut3YA:10
 a=x9snwWr2DeNwDh03kgHS:22 a=a-qgeE7W1pNrGK8U0ZQC:22 a=ST-jHhOKWsTCqRlWije3:22
X-Proofpoint-ORIG-GUID: ot3n1OWaZf-qE85YEFcLsk6vM0hzh780
X-Proofpoint-GUID: ot3n1OWaZf-qE85YEFcLsk6vM0hzh780
X-Proofpoint-Virus-Version: vendor=baseguard
 engine=ICAP:2.0.293,Aquarius:18.0.1143,Hydra:6.1.51,FMLib:17.12.100.49
 definitions=2026-04-08_03,2026-04-08_01,2025-10-01_01
X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0
 malwarescore=0 phishscore=0 lowpriorityscore=0 priorityscore=1501
 suspectscore=0 clxscore=1015 impostorscore=0 bulkscore=0 adultscore=0
 spamscore=0 classifier=typeunknown authscore=0 authtc= authcc= route=outbound
 adjust=0 reason=mlx scancount=1 engine=8.22.0-2604010000
 definitions=main-2604080091
X-purgate-ID: tlsNG-ebf023/1775642636-B112D51B-D23BB296/0/0
X-purgate-type: clean
X-purgate-size: 8667

From: Robin Murphy <robin.murphy@arm.com>

Since we now have quite a few users parsing "iommu-map" and "msi-map"
properties, give them some wrappers to conveniently encapsulate the
appropriate sets of property names. This will also make it easier to
then change of_map_id() to correctly account for specifier cells.

Reviewed-by: Rob Herring (Arm) <robh@kernel.org>
Reviewed-by: Frank Li <Frank.Li@nxp.com>
Acked-by: Marc Zyngier <maz@kernel.org>
Acked-by: Bjorn Helgaas <bhelgaas@google.com>
Signed-off-by: Robin Murphy <robin.murphy@arm.com>
Signed-off-by: Vijayanand Jitta <vijayanand.jitta@oss.qualcomm.com>
---
 drivers/cdx/cdx_msi.c                    |  3 +--
 drivers/iommu/of_iommu.c                 |  4 +---
 drivers/irqchip/irq-gic-its-msi-parent.c |  2 +-
 drivers/of/base.c                        | 38 ++++++++++++++++++++++++++++++++
 drivers/of/irq.c                         |  3 +--
 drivers/pci/controller/dwc/pci-imx6.c    |  6 ++---
 drivers/pci/controller/pcie-apple.c      |  3 +--
 drivers/xen/grant-dma-ops.c              |  3 +--
 include/linux/of.h                       | 18 +++++++++++++++
 9 files changed, 64 insertions(+), 16 deletions(-)

diff --git a/drivers/cdx/cdx_msi.c b/drivers/cdx/cdx_msi.c
index 91b95422b263..63b3544ec997 100644
--- a/drivers/cdx/cdx_msi.c
+++ b/drivers/cdx/cdx_msi.c
@@ -128,8 +128,7 @@ static int cdx_msi_prepare(struct irq_domain *msi_domain,
 	int ret;
 
 	/* Retrieve device ID from requestor ID using parent device */
-	ret = of_map_id(parent->of_node, cdx_dev->msi_dev_id, "msi-map", "msi-map-mask",
-			NULL, &dev_id);
+	ret = of_map_msi_id(parent->of_node, cdx_dev->msi_dev_id, NULL, &dev_id);
 	if (ret) {
 		dev_err(dev, "of_map_id failed for MSI: %d\n", ret);
 		return ret;
diff --git a/drivers/iommu/of_iommu.c b/drivers/iommu/of_iommu.c
index 6b989a62def2..a511ecf21fcd 100644
--- a/drivers/iommu/of_iommu.c
+++ b/drivers/iommu/of_iommu.c
@@ -48,9 +48,7 @@ static int of_iommu_configure_dev_id(struct device_node *master_np,
 	struct of_phandle_args iommu_spec = { .args_count = 1 };
 	int err;
 
-	err = of_map_id(master_np, *id, "iommu-map",
-			 "iommu-map-mask", &iommu_spec.np,
-			 iommu_spec.args);
+	err = of_map_iommu_id(master_np, *id, &iommu_spec.np, iommu_spec.args);
 	if (err)
 		return err;
 
diff --git a/drivers/irqchip/irq-gic-its-msi-parent.c b/drivers/irqchip/irq-gic-its-msi-parent.c
index d36b278ae66c..b63343a227a9 100644
--- a/drivers/irqchip/irq-gic-its-msi-parent.c
+++ b/drivers/irqchip/irq-gic-its-msi-parent.c
@@ -180,7 +180,7 @@ static int of_pmsi_get_msi_info(struct irq_domain *domain, struct device *dev, u
 
 	struct device_node *msi_ctrl __free(device_node) = NULL;
 
-	return of_map_id(dev->of_node, dev->id, "msi-map", "msi-map-mask", &msi_ctrl, dev_id);
+	return of_map_msi_id(dev->of_node, dev->id, &msi_ctrl, dev_id);
 }
 
 static int its_pmsi_prepare(struct irq_domain *domain, struct device *dev,
diff --git a/drivers/of/base.c b/drivers/of/base.c
index 57420806c1a2..ae04487bd614 100644
--- a/drivers/of/base.c
+++ b/drivers/of/base.c
@@ -2201,3 +2201,41 @@ int of_map_id(const struct device_node *np, u32 id,
 	return 0;
 }
 EXPORT_SYMBOL_GPL(of_map_id);
+
+/**
+ * of_map_iommu_id - Translate an ID using "iommu-map" bindings.
+ * @np: root complex device node.
+ * @id: Requester ID of the device (e.g. PCI RID/BDF or a platform
+ *      stream/device ID) used as the lookup key in the iommu-map table.
+ * @target: optional pointer to a target device node.
+ * @id_out: optional pointer to receive the translated ID.
+ *
+ * Convenience wrapper around of_map_id() using "iommu-map" and "iommu-map-mask".
+ *
+ * Return: 0 on success or a standard error code on failure.
+ */
+int of_map_iommu_id(const struct device_node *np, u32 id,
+		    struct device_node **target, u32 *id_out)
+{
+	return of_map_id(np, id, "iommu-map", "iommu-map-mask", target, id_out);
+}
+EXPORT_SYMBOL_GPL(of_map_iommu_id);
+
+/**
+ * of_map_msi_id - Translate an ID using "msi-map" bindings.
+ * @np: root complex device node.
+ * @id: Requester ID of the device (e.g. PCI RID/BDF or a platform
+ *      stream/device ID) used as the lookup key in the msi-map table.
+ * @target: optional pointer to a target device node.
+ * @id_out: optional pointer to receive the translated ID.
+ *
+ * Convenience wrapper around of_map_id() using "msi-map" and "msi-map-mask".
+ *
+ * Return: 0 on success or a standard error code on failure.
+ */
+int of_map_msi_id(const struct device_node *np, u32 id,
+		  struct device_node **target, u32 *id_out)
+{
+	return of_map_id(np, id, "msi-map", "msi-map-mask", target, id_out);
+}
+EXPORT_SYMBOL_GPL(of_map_msi_id);
diff --git a/drivers/of/irq.c b/drivers/of/irq.c
index 6367c67732d2..e37c1b3f8736 100644
--- a/drivers/of/irq.c
+++ b/drivers/of/irq.c
@@ -817,8 +817,7 @@ u32 of_msi_xlate(struct device *dev, struct device_node **msi_np, u32 id_in)
 	 * "msi-map" or an "msi-parent" property.
 	 */
 	for (parent_dev = dev; parent_dev; parent_dev = parent_dev->parent) {
-		if (!of_map_id(parent_dev->of_node, id_in, "msi-map",
-				"msi-map-mask", msi_np, &id_out))
+		if (!of_map_msi_id(parent_dev->of_node, id_in, msi_np, &id_out))
 			break;
 		if (!of_check_msi_parent(parent_dev->of_node, msi_np))
 			break;
diff --git a/drivers/pci/controller/dwc/pci-imx6.c b/drivers/pci/controller/dwc/pci-imx6.c
index a5b8d0b71677..bff8289f804a 100644
--- a/drivers/pci/controller/dwc/pci-imx6.c
+++ b/drivers/pci/controller/dwc/pci-imx6.c
@@ -1144,8 +1144,7 @@ static int imx_pcie_add_lut_by_rid(struct imx_pcie *imx_pcie, u32 rid)
 	u32 sid = 0;
 
 	target = NULL;
-	err_i = of_map_id(dev->of_node, rid, "iommu-map", "iommu-map-mask",
-			  &target, &sid_i);
+	err_i = of_map_iommu_id(dev->of_node, rid, &target, &sid_i);
 	if (target) {
 		of_node_put(target);
 	} else {
@@ -1158,8 +1157,7 @@ static int imx_pcie_add_lut_by_rid(struct imx_pcie *imx_pcie, u32 rid)
 	}
 
 	target = NULL;
-	err_m = of_map_id(dev->of_node, rid, "msi-map", "msi-map-mask",
-			  &target, &sid_m);
+	err_m = of_map_msi_id(dev->of_node, rid, &target, &sid_m);
 
 	/*
 	 *   err_m      target
diff --git a/drivers/pci/controller/pcie-apple.c b/drivers/pci/controller/pcie-apple.c
index 2d92fc79f6dd..a0937b7b3c4d 100644
--- a/drivers/pci/controller/pcie-apple.c
+++ b/drivers/pci/controller/pcie-apple.c
@@ -764,8 +764,7 @@ static int apple_pcie_enable_device(struct pci_host_bridge *bridge, struct pci_d
 	dev_dbg(&pdev->dev, "added to bus %s, index %d\n",
 		pci_name(pdev->bus->self), port->idx);
 
-	err = of_map_id(port->pcie->dev->of_node, rid, "iommu-map",
-			"iommu-map-mask", NULL, &sid);
+	err = of_map_iommu_id(port->pcie->dev->of_node, rid, NULL, &sid);
 	if (err)
 		return err;
 
diff --git a/drivers/xen/grant-dma-ops.c b/drivers/xen/grant-dma-ops.c
index c2603e700178..1b7696b2d762 100644
--- a/drivers/xen/grant-dma-ops.c
+++ b/drivers/xen/grant-dma-ops.c
@@ -325,8 +325,7 @@ static int xen_dt_grant_init_backend_domid(struct device *dev,
 		struct pci_dev *pdev = to_pci_dev(dev);
 		u32 rid = PCI_DEVID(pdev->bus->number, pdev->devfn);
 
-		if (of_map_id(np, rid, "iommu-map", "iommu-map-mask", &iommu_spec.np,
-				iommu_spec.args)) {
+		if (of_map_iommu_id(np, rid, &iommu_spec.np, iommu_spec.args)) {
 			dev_dbg(dev, "Cannot translate ID\n");
 			return -ESRCH;
 		}
diff --git a/include/linux/of.h b/include/linux/of.h
index be6ec4916adf..fe841f3cc747 100644
--- a/include/linux/of.h
+++ b/include/linux/of.h
@@ -465,6 +465,12 @@ int of_map_id(const struct device_node *np, u32 id,
 	       const char *map_name, const char *map_mask_name,
 	       struct device_node **target, u32 *id_out);
 
+int of_map_iommu_id(const struct device_node *np, u32 id,
+		    struct device_node **target, u32 *id_out);
+
+int of_map_msi_id(const struct device_node *np, u32 id,
+		  struct device_node **target, u32 *id_out);
+
 phys_addr_t of_dma_get_max_cpu_address(struct device_node *np);
 
 struct kimage;
@@ -934,6 +940,18 @@ static inline int of_map_id(const struct device_node *np, u32 id,
 	return -EINVAL;
 }
 
+static inline int of_map_iommu_id(const struct device_node *np, u32 id,
+				  struct device_node **target, u32 *id_out)
+{
+	return -EINVAL;
+}
+
+static inline int of_map_msi_id(const struct device_node *np, u32 id,
+				struct device_node **target, u32 *id_out)
+{
+	return -EINVAL;
+}
+
 static inline phys_addr_t of_dma_get_max_cpu_address(struct device_node *np)
 {
 	return PHYS_ADDR_MAX;

-- 
2.34.1



From xen-devel-bounces@lists.xenproject.org Wed Apr 08 10:04:11 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 08 Apr 2026 10:04:11 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1275586.1561374 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wAPlb-0005Oq-Qc; Wed, 08 Apr 2026 10:04:11 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1275586.1561374; Wed, 08 Apr 2026 10:04: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 1wAPlb-0005Oj-Mm; Wed, 08 Apr 2026 10:04:11 +0000
Received: by outflank-mailman (input) for mailman id 1275586;
 Wed, 08 Apr 2026 10:04:09 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <vijayanand.jitta@oss.qualcomm.com>)
 id 1wAPlZ-0005NN-Mm
 for xen-devel@lists.xenproject.org; Wed, 08 Apr 2026 10:04:09 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wAPlZ-005OpX-2Q
 for xen-devel@lists.xenproject.org; Wed, 08 Apr 2026 12:04:09 +0200
Received: from [10.42.69.2] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <vijayanand.jitta@oss.qualcomm.com>)
 id 69d62808-e002-0a2a0a5209dd-0a2a4502a512-42
 for <xen-devel@lists.xenproject.org>; Wed, 08 Apr 2026 12:04:08 +0200
Received: from [205.220.168.131] (helo=mx0a-0031df01.pphosted.com)
 by tlsNG-720697.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.0)
 (envelope-from <vijayanand.jitta@oss.qualcomm.com>)
 id 69d62816-42fa-0a2a45020019-cddca883db5c-3
 for <xen-devel@lists.xenproject.org>; Wed, 08 Apr 2026 12:04:08 +0200
Received: from pps.filterd (m0279864.ppops.net [127.0.0.1])
 by mx0a-0031df01.pphosted.com (8.18.1.11/8.18.1.11) with ESMTP id
 6385gdUV1314545
 for <xen-devel@lists.xenproject.org>; Wed, 8 Apr 2026 10:04:06 GMT
Received: from mail-pg1-f197.google.com (mail-pg1-f197.google.com
 [209.85.215.197])
 by mx0a-0031df01.pphosted.com (PPS) with ESMTPS id 4dd8d6jmkf-1
 (version=TLSv1.3 cipher=TLS_AES_128_GCM_SHA256 bits=128 verify=NOT)
 for <xen-devel@lists.xenproject.org>; Wed, 08 Apr 2026 10:04:05 +0000 (GMT)
Received: by mail-pg1-f197.google.com with SMTP id
 41be03b00d2f7-c741f038f7cso3117064a12.2
 for <xen-devel@lists.xenproject.org>; Wed, 08 Apr 2026 03:04:05 -0700 (PDT)
Received: from hu-vjitta-hyd.qualcomm.com ([202.46.23.25])
 by smtp.gmail.com with ESMTPSA id
 d2e1a72fcca58-82cf9b5fb22sm25805584b3a.26.2026.04.08.03.03.53
 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
 Wed, 08 Apr 2026 03:04:03 -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=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="Cc:To:In-Reply-To:References:Message-Id:Content-Transfer-Encoding:MIME-Version:Subject:Date:From"
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=
	LftlAsbVwS/LONmw0RaxWOkTUJkuy159/kDEWiGHeOU=; b=LAiLxO1BD7vh+fCW
	9zog4cWFQ2aUUAAU4u97Wiww2EYJV4OyZpi+sDmgi/Np69A+k863UMjoG5PoRdM0
	SISI8JUICL+4hTBTJ88QfgXfcWRC17hjjK0GUfb+3hUpS0SYGZ4uH2q+K7TZqZ61
	4uNjArmo3J0xlCmHTi+T0AwCUOntmNXdvS2oU9Luw33xLYELWUR57/v8ahWPj+gw
	hXJv2dh91+vbpOwqQ5whS9Wl2q+Zfq/4/kRS4/+DSvwJclnGCjaQSaHaIYfyHiP2
	qlhz+nOpf8NLboTUTZDVRBMzXOsUPybAtlEzmi4rCsikKE4U+OO34UyyxyRQ96A1
	hPMFPw==
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=oss.qualcomm.com; s=google; t=1775642645; x=1776247445; darn=lists.xenproject.org;
        h=cc:to:in-reply-to:references:message-id:content-transfer-encoding
         :mime-version:subject:date:from:from:to:cc:subject:date:message-id
         :reply-to;
        bh=LftlAsbVwS/LONmw0RaxWOkTUJkuy159/kDEWiGHeOU=;
        b=F+At+cWmkOPbm59N2bqlNCPz11M7yDaC+v7M1rs0rMqZuQB20ySl4QAHOvpbfUHrgt
         HuUArT+dBn29e8inaw/9qTkiUfMmnx2Y25sVKrVuwF84G30SrHW8M+9k741SNkcu3ukv
         6Hl5GDy2MF0jlWmcLgF5rdJ/7Qrp+iPxW45obMPJ7pvAzbp8f2t9jwWvpC1DT8IyVtlm
         E1AzVHimBRWZdnoWssT6ez3JsSeWkcB27RWopLJ5InTOqnrOsWXKavHRAda4q51QMBWk
         Ld6b/By1Qzbi/LpqV6wG96zW1Ngtsxk3H/v7ZcqPzqehrAEbBE8gmcKi80Gnk8/KDLGp
         D2SQ==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20251104; t=1775642645; x=1776247445;
        h=cc:to:in-reply-to:references:message-id:content-transfer-encoding
         :mime-version:subject:date:from:x-gm-gg:x-gm-message-state:from:to
         :cc:subject:date:message-id:reply-to;
        bh=LftlAsbVwS/LONmw0RaxWOkTUJkuy159/kDEWiGHeOU=;
        b=O3nLsw48WgL+Xr55ZigpB17vMuz2/3QtoSsFTlOJrI++PWye1cNVrBQgw0s9oVuamv
         UupKq8oCBuU0M75iDveQowPqXNni4RCeOvgCu+XLvQhFjTtzKG2wvmMgnRCLCD+YmLkE
         kW7a4ePNCsfwAXSv00E5w05624JBRGiPDpgfTAXsKh6CZBEJg59CgXKGOanoGiF8U7f4
         zmjr/VfXbiYQZtiVyKnBW+3ENheBU9X1LpznzCGWyy5HIFJZesFdzBfRBjCEttY+Zkdc
         3pyHu4MMWD4fT0Xb896PdtxUasYwoXCLzA+zqbbXpD6VkcgCN4k/g0fptGfaL1haT+hd
         0GJw==
X-Forwarded-Encrypted: i=1; AJvYcCUjAa49H6pWEsAb7nzVT0SyqWcoKDoP3MrhxPOoh5kwkXQiV9x8WPPW0uHxVN30sVeG07kZbxx9zI4=@lists.xenproject.org
X-Gm-Message-State: AOJu0YyQkmDBF477yyRyLIflj0/ODPW9f7uALtdwYU3RXZMyNGc1BXgM
	Hu+4r0pDoCLL2Me5KxTIePOqY60hLu63GyWJjU+1OfLWK6SQ5Y9GKyq9hNGvbmT3RLKhw9/QUDO
	KiBFBx33eZ2sKkXNym/ShLBGA3534+ytQWG5tvLP9xgeBO8GBbg+LqNXlfZDZmyJ0K12c+w==
X-Gm-Gg: AeBDieu92yphnJ3N72ip5vVFY0v0/J2gj7RYXHMKKsGAyB12BbxF69mmsV/9IT5GQME
	pIBtomNJV8Ew2lL3xXpz7HSrAQ6u+4/Jj5iIeXuZqFfm+zF5S8e+/MZ0OQoYfBq/aekZgvKIgNG
	X1PMB9ck/Mu2OFVTQzBgjM8xkptef+0Pf/b5Eg775uTYfuL/Xpd0S8uQ13DLCaaJoJbHyhymvst
	BoMtVdWoPU7P1eups2c6gzgbu/BjzdAXDjLOhgVt0CXG2M8Ee1k3APNTWtQIkdWyqyrL4X+gD+g
	aWFbYKSlgwi27IVEqnHud71wtFLiGNLcgLi5A9YQGuJ0tf6jfco1+vezkg5GsX8BZXyjH9Ql9rH
	EY86/tXrbpnupjHIeIYKK9qwxawBGueVj39UW1g9dK4SHYY0RAuKSitvA
X-Received: by 2002:aa7:9064:0:b0:823:9b7:9c0e with SMTP id d2e1a72fcca58-82d0db3fcadmr19724260b3a.34.1775642644400;
        Wed, 08 Apr 2026 03:04:04 -0700 (PDT)
X-Received: by 2002:aa7:9064:0:b0:823:9b7:9c0e with SMTP id d2e1a72fcca58-82d0db3fcadmr19724216b3a.34.1775642643764;
        Wed, 08 Apr 2026 03:04:03 -0700 (PDT)
From: Vijayanand Jitta <vijayanand.jitta@oss.qualcomm.com>
Date: Wed, 08 Apr 2026 15:33:26 +0530
Subject: [PATCH v13 2/3] of: Factor arguments passed to of_map_id() into a
 struct
MIME-Version: 1.0
Content-Type: text/plain; charset="utf-8"
Content-Transfer-Encoding: 7bit
Message-Id: <20260408-parse_iommu_cells-v13-2-fa921e92661b@oss.qualcomm.com>
References: <20260408-parse_iommu_cells-v13-0-fa921e92661b@oss.qualcomm.com>
In-Reply-To: <20260408-parse_iommu_cells-v13-0-fa921e92661b@oss.qualcomm.com>
To: Nipun Gupta <nipun.gupta@amd.com>, Nikhil Agarwal <nikhil.agarwal@amd.com>,
        Joerg Roedel <joro@8bytes.org>, Will Deacon <will@kernel.org>,
        Robin Murphy <robin.murphy@arm.com>, Marc Zyngier <maz@kernel.org>,
        Lorenzo Pieralisi <lpieralisi@kernel.org>,
        Thomas Gleixner <tglx@kernel.org>,
        Saravana Kannan <saravanak@kernel.org>,
        Richard Zhu <hongxing.zhu@nxp.com>,
        Lucas Stach <l.stach@pengutronix.de>,
        =?utf-8?q?Krzysztof_Wilczy=C5=84ski?= <kwilczynski@kernel.org>,
        Manivannan Sadhasivam <mani@kernel.org>,
        Bjorn Helgaas <bhelgaas@google.com>, Frank Li <Frank.Li@nxp.com>,
        Sascha Hauer <s.hauer@pengutronix.de>,
        Pengutronix Kernel Team <kernel@pengutronix.de>,
        Fabio Estevam <festevam@gmail.com>, Juergen Gross <jgross@suse.com>,
        Stefano Stabellini <sstabellini@kernel.org>,
        Oleksandr Tyshchenko <oleksandr_tyshchenko@epam.com>,
        Dmitry Baryshkov <dmitry.baryshkov@oss.qualcomm.com>,
        Konrad Dybcio <konrad.dybcio@oss.qualcomm.com>,
        Bjorn Andersson <bjorn.andersson@oss.qualcomm.com>,
        Rob Herring <robh@kernel.org>, Conor Dooley <conor+dt@kernel.org>,
        Krzysztof Kozlowski <krzk+dt@kernel.org>,
        Prakash Gupta <prakash.gupta@oss.qualcomm.com>,
        Vikash Garodia <vikash.garodia@oss.qualcomm.com>
Cc: linux-kernel@vger.kernel.org, iommu@lists.linux.dev,
        linux-arm-kernel@lists.infradead.org, devicetree@vger.kernel.org,
        linux-pci@vger.kernel.org, imx@lists.linux.dev,
        xen-devel@lists.xenproject.org, linux-arm-msm@vger.kernel.org,
        Vijayanand Jitta <vijayanand.jitta@oss.qualcomm.com>,
        Charan Teja Kalla <charan.kalla@oss.qualcomm.com>
X-Mailer: b4 0.15.1
X-Developer-Signature: v=1; a=ed25519-sha256; t=1775642611; l=16836;
 i=vijayanand.jitta@oss.qualcomm.com; s=20260301; h=from:subject:message-id;
 bh=+iHtXnzXX7tUfRgnJZTT3PPuzqB/B1rZOKoBHBRglbM=;
 b=IAMyeocADMhmvA4SgwDS0z+JbmH0dY67ow40byP8ue4sGh9U7Nn0o8DY6pFoTPPSfd8PgSH2Y
 cWMN/CtdOuNDmBuTSn54zFukHJBLLndS4B3UZ5Te+nNN953oWTRYqsZ
X-Developer-Key: i=vijayanand.jitta@oss.qualcomm.com; a=ed25519;
 pk=Lpi7Cs3wHe8KZtqvyci7FTOLzsKpEHKGCaPNZw+1zRI=
X-Proofpoint-ORIG-GUID: FKDQBsady8ghSpCTqFCt5ZVF2_Zce6ki
X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwNDA4MDA5MSBTYWx0ZWRfX1/jnFG2U3iSX
 vg11DVeRRJZS3c92k29jbr9yC+8jouggRQDzOt65og3ypU4259kMgwEkoYaU35l7s5u0cY8XXoX
 KR+ovfC3gjr7X57oGdzKhTGnE6QSMpU+/H69n5v85HXGFlzwEutrRUXx2xlS3wO1dxaCsWmxyPA
 qSwvlNhys/ei0zSXGFFTFAxPb3+vm4RqH9/36mwuiSD/uDyeZ0caOdmob3QCOm+40mttKm3U+ZN
 ewj9amQuL5k8iK3kVFfC/psqlAVehd4JkT0Nc2feqZbFiSe/qaI7Lpkxc+mkOwYjtiBYOtFMdij
 nI9Q6CX3xAv3jXjO8zgOmhcm346rUnER42KkdhH+Nf8TciMOmyvE6TS/66XX4LPGMqPANaFCqHr
 tQVkmovA+fD2Qc3FC0ij2i63hGd01Vp6Fh1igyoG4RXpVtFNFn1rKTKz1j3hVuJSi2yd10BCNiz
 CeWZB54d4CxsK1PPQJw==
X-Authority-Analysis: v=2.4 cv=GN041ONK c=1 sm=1 tr=0 ts=69d62816 cx=c_pps
 a=rz3CxIlbcmazkYymdCej/Q==:117 a=ZePRamnt/+rB5gQjfz0u9A==:17
 a=IkcTkHD0fZMA:10 a=A5OVakUREuEA:10 a=s4-Qcg_JpJYA:10
 a=VkNPw1HP01LnGYTKEx00:22 a=u7WPNUs3qKkmUXheDGA7:22 a=DJpcGTmdVt4CTyJn9g5Z:22
 a=EUspDBNiAAAA:8 a=8AirrxEcAAAA:8 a=VwQbUJbxAAAA:8 a=NTCK2b4J3l3c-VTkqyoA:9
 a=QEXdDO2ut3YA:10 a=bFCP_H2QrGi7Okbo017w:22 a=ST-jHhOKWsTCqRlWije3:22
X-Proofpoint-GUID: FKDQBsady8ghSpCTqFCt5ZVF2_Zce6ki
X-Proofpoint-Virus-Version: vendor=baseguard
 engine=ICAP:2.0.293,Aquarius:18.0.1143,Hydra:6.1.51,FMLib:17.12.100.49
 definitions=2026-04-08_03,2026-04-08_01,2025-10-01_01
X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0
 lowpriorityscore=0 priorityscore=1501 phishscore=0 suspectscore=0
 clxscore=1015 spamscore=0 adultscore=0 bulkscore=0 impostorscore=0
 malwarescore=0 classifier=typeunknown authscore=0 authtc= authcc=
 route=outbound adjust=0 reason=mlx scancount=1 engine=8.22.0-2604010000
 definitions=main-2604080091
X-purgate-ID: tlsNG-720697/1775642648-44BF5CD1-88A7AF14/0/0
X-purgate-type: clean
X-purgate-size: 16897

From: Charan Teja Kalla <charan.kalla@oss.qualcomm.com>

Change of_map_id() to take a pointer to struct of_phandle_args
instead of passing target device node and translated IDs separately.
Update all callers accordingly.

Add an explicit filter_np parameter to of_map_id() and of_map_msi_id()
to separate the filter input from the output. Previously, the target
parameter served dual purpose: as an input filter (if non-NULL, only
match entries targeting that node) and as an output (receiving the
matched node with a reference held). Now filter_np is the explicit
input filter and arg->np is the pure output.

Previously, of_map_id() would call of_node_put() on the matched node
when a filter was provided, making reference ownership inconsistent.
Remove this internal of_node_put() call so that of_map_id() now always
transfers ownership of the matched node reference to the caller via
arg->np. Callers are now consistently responsible for releasing this
reference with of_node_put(arg->np) when done.

Acked-by: Frank Li <Frank.Li@nxp.com>
Suggested-by: Rob Herring (Arm) <robh@kernel.org>
Suggested-by: Dmitry Baryshkov <dmitry.baryshkov@oss.qualcomm.com>
Signed-off-by: Charan Teja Kalla <charan.kalla@oss.qualcomm.com>
Signed-off-by: Vijayanand Jitta <vijayanand.jitta@oss.qualcomm.com>
---
 drivers/cdx/cdx_msi.c                    |  7 ++--
 drivers/iommu/of_iommu.c                 |  4 +-
 drivers/irqchip/irq-gic-its-msi-parent.c | 11 ++++--
 drivers/of/base.c                        | 68 +++++++++++++++++---------------
 drivers/of/irq.c                         | 10 ++++-
 drivers/pci/controller/dwc/pci-imx6.c    | 32 +++++++--------
 drivers/pci/controller/pcie-apple.c      |  5 ++-
 drivers/xen/grant-dma-ops.c              |  4 +-
 include/linux/of.h                       | 14 ++++---
 9 files changed, 89 insertions(+), 66 deletions(-)

diff --git a/drivers/cdx/cdx_msi.c b/drivers/cdx/cdx_msi.c
index 63b3544ec997..6924e07c7528 100644
--- a/drivers/cdx/cdx_msi.c
+++ b/drivers/cdx/cdx_msi.c
@@ -121,22 +121,23 @@ static int cdx_msi_prepare(struct irq_domain *msi_domain,
 			   struct device *dev,
 			   int nvec, msi_alloc_info_t *info)
 {
+	struct of_phandle_args msi_spec = {};
 	struct cdx_device *cdx_dev = to_cdx_device(dev);
 	struct device *parent = cdx_dev->cdx->dev;
 	struct msi_domain_info *msi_info;
-	u32 dev_id;
 	int ret;
 
 	/* Retrieve device ID from requestor ID using parent device */
-	ret = of_map_msi_id(parent->of_node, cdx_dev->msi_dev_id, NULL, &dev_id);
+	ret = of_map_msi_id(parent->of_node, cdx_dev->msi_dev_id, NULL, &msi_spec);
 	if (ret) {
 		dev_err(dev, "of_map_id failed for MSI: %d\n", ret);
 		return ret;
 	}
+	of_node_put(msi_spec.np);
 
 #ifdef GENERIC_MSI_DOMAIN_OPS
 	/* Set the device Id to be passed to the GIC-ITS */
-	info->scratchpad[0].ul = dev_id;
+	info->scratchpad[0].ul = msi_spec.args[0];
 #endif
 
 	msi_info = msi_get_domain_info(msi_domain->parent);
diff --git a/drivers/iommu/of_iommu.c b/drivers/iommu/of_iommu.c
index a511ecf21fcd..a18bb60f6f3d 100644
--- a/drivers/iommu/of_iommu.c
+++ b/drivers/iommu/of_iommu.c
@@ -45,10 +45,10 @@ static int of_iommu_configure_dev_id(struct device_node *master_np,
 				     struct device *dev,
 				     const u32 *id)
 {
-	struct of_phandle_args iommu_spec = { .args_count = 1 };
+	struct of_phandle_args iommu_spec = {};
 	int err;
 
-	err = of_map_iommu_id(master_np, *id, &iommu_spec.np, iommu_spec.args);
+	err = of_map_iommu_id(master_np, *id, &iommu_spec);
 	if (err)
 		return err;
 
diff --git a/drivers/irqchip/irq-gic-its-msi-parent.c b/drivers/irqchip/irq-gic-its-msi-parent.c
index b63343a227a9..dd5f84b6470a 100644
--- a/drivers/irqchip/irq-gic-its-msi-parent.c
+++ b/drivers/irqchip/irq-gic-its-msi-parent.c
@@ -152,6 +152,8 @@ static int its_v5_pci_msi_prepare(struct irq_domain *domain, struct device *dev,
 static int of_pmsi_get_msi_info(struct irq_domain *domain, struct device *dev, u32 *dev_id,
 				phys_addr_t *pa)
 {
+	struct device_node *msi_ctrl __free(device_node) = NULL;
+	struct of_phandle_args msi_spec = {};
 	struct of_phandle_iterator it;
 	int ret;
 
@@ -178,9 +180,12 @@ static int of_pmsi_get_msi_info(struct irq_domain *domain, struct device *dev, u
 		}
 	}
 
-	struct device_node *msi_ctrl __free(device_node) = NULL;
-
-	return of_map_msi_id(dev->of_node, dev->id, &msi_ctrl, dev_id);
+	ret = of_map_msi_id(dev->of_node, dev->id, NULL, &msi_spec);
+	if (!ret) {
+		msi_ctrl = msi_spec.np;
+		*dev_id = msi_spec.args[0];
+	}
+	return ret;
 }
 
 static int its_pmsi_prepare(struct irq_domain *domain, struct device *dev,
diff --git a/drivers/of/base.c b/drivers/of/base.c
index ae04487bd614..b3d002015192 100644
--- a/drivers/of/base.c
+++ b/drivers/of/base.c
@@ -2102,36 +2102,37 @@ int of_find_last_cache_level(unsigned int cpu)
  * @id: device ID to map.
  * @map_name: property name of the map to use.
  * @map_mask_name: optional property name of the mask to use.
- * @target: optional pointer to a target device node.
- * @id_out: optional pointer to receive the translated ID.
+ * @filter_np: optional device node to filter matches by, or NULL to match any.
+ *	If non-NULL, only map entries targeting this node will be matched.
+ * @arg: pointer to a &struct of_phandle_args for the result. On success,
+ *	@arg->args[0] will contain the translated ID. If a map entry was
+ *	matched, @arg->np will be set to the target node with a reference
+ *	held that the caller must release with of_node_put().
  *
  * Given a device ID, look up the appropriate implementation-defined
  * platform ID and/or the target device which receives transactions on that
- * ID, as per the "iommu-map" and "msi-map" bindings. Either of @target or
- * @id_out may be NULL if only the other is required. If @target points to
- * a non-NULL device node pointer, only entries targeting that node will be
- * matched; if it points to a NULL value, it will receive the device node of
- * the first matching target phandle, with a reference held.
+ * ID, as per the "iommu-map" and "msi-map" bindings.
  *
  * Return: 0 on success or a standard error code on failure.
  */
 int of_map_id(const struct device_node *np, u32 id,
 	       const char *map_name, const char *map_mask_name,
-	       struct device_node **target, u32 *id_out)
+	       const struct device_node *filter_np, struct of_phandle_args *arg)
 {
 	u32 map_mask, masked_id;
 	int map_len;
 	const __be32 *map = NULL;
 
-	if (!np || !map_name || (!target && !id_out))
+	if (!np || !map_name || !arg)
 		return -EINVAL;
 
 	map = of_get_property(np, map_name, &map_len);
 	if (!map) {
-		if (target)
+		if (filter_np)
 			return -ENODEV;
 		/* Otherwise, no map implies no translation */
-		*id_out = id;
+		arg->args[0] = id;
+		arg->args_count = 1;
 		return 0;
 	}
 
@@ -2173,18 +2174,14 @@ int of_map_id(const struct device_node *np, u32 id,
 		if (!phandle_node)
 			return -ENODEV;
 
-		if (target) {
-			if (*target)
-				of_node_put(phandle_node);
-			else
-				*target = phandle_node;
-
-			if (*target != phandle_node)
-				continue;
+		if (filter_np && filter_np != phandle_node) {
+			of_node_put(phandle_node);
+			continue;
 		}
 
-		if (id_out)
-			*id_out = masked_id - id_base + out_base;
+		arg->np = phandle_node;
+		arg->args[0] = masked_id - id_base + out_base;
+		arg->args_count = 1;
 
 		pr_debug("%pOF: %s, using mask %08x, id-base: %08x, out-base: %08x, length: %08x, id: %08x -> %08x\n",
 			np, map_name, map_mask, id_base, out_base,
@@ -2193,11 +2190,11 @@ int of_map_id(const struct device_node *np, u32 id,
 	}
 
 	pr_info("%pOF: no %s translation for id 0x%x on %pOF\n", np, map_name,
-		id, target && *target ? *target : NULL);
+		id, filter_np);
 
 	/* Bypasses translation */
-	if (id_out)
-		*id_out = id;
+	arg->args[0] = id;
+	arg->args_count = 1;
 	return 0;
 }
 EXPORT_SYMBOL_GPL(of_map_id);
@@ -2207,17 +2204,19 @@ EXPORT_SYMBOL_GPL(of_map_id);
  * @np: root complex device node.
  * @id: Requester ID of the device (e.g. PCI RID/BDF or a platform
  *      stream/device ID) used as the lookup key in the iommu-map table.
- * @target: optional pointer to a target device node.
- * @id_out: optional pointer to receive the translated ID.
+ * @arg: pointer to a &struct of_phandle_args for the result. On success,
+ *	@arg->args[0] contains the translated ID. If a map entry was matched,
+ *	@arg->np holds a reference to the target node that the caller must
+ *	release with of_node_put().
  *
  * Convenience wrapper around of_map_id() using "iommu-map" and "iommu-map-mask".
  *
  * Return: 0 on success or a standard error code on failure.
  */
 int of_map_iommu_id(const struct device_node *np, u32 id,
-		    struct device_node **target, u32 *id_out)
+		    struct of_phandle_args *arg)
 {
-	return of_map_id(np, id, "iommu-map", "iommu-map-mask", target, id_out);
+	return of_map_id(np, id, "iommu-map", "iommu-map-mask", NULL, arg);
 }
 EXPORT_SYMBOL_GPL(of_map_iommu_id);
 
@@ -2226,16 +2225,21 @@ EXPORT_SYMBOL_GPL(of_map_iommu_id);
  * @np: root complex device node.
  * @id: Requester ID of the device (e.g. PCI RID/BDF or a platform
  *      stream/device ID) used as the lookup key in the msi-map table.
- * @target: optional pointer to a target device node.
- * @id_out: optional pointer to receive the translated ID.
+ * @filter_np: optional MSI controller node to filter matches by, or NULL
+ *	to match any. If non-NULL, only map entries targeting this node will
+ *	be matched.
+ * @arg: pointer to a &struct of_phandle_args for the result. On success,
+ *	@arg->args[0] contains the translated ID. If a map entry was matched,
+ *	@arg->np holds a reference to the target node that the caller must
+ *	release with of_node_put().
  *
  * Convenience wrapper around of_map_id() using "msi-map" and "msi-map-mask".
  *
  * Return: 0 on success or a standard error code on failure.
  */
 int of_map_msi_id(const struct device_node *np, u32 id,
-		  struct device_node **target, u32 *id_out)
+		  const struct device_node *filter_np, struct of_phandle_args *arg)
 {
-	return of_map_id(np, id, "msi-map", "msi-map-mask", target, id_out);
+	return of_map_id(np, id, "msi-map", "msi-map-mask", filter_np, arg);
 }
 EXPORT_SYMBOL_GPL(of_map_msi_id);
diff --git a/drivers/of/irq.c b/drivers/of/irq.c
index e37c1b3f8736..f86a56bd81fc 100644
--- a/drivers/of/irq.c
+++ b/drivers/of/irq.c
@@ -817,8 +817,16 @@ u32 of_msi_xlate(struct device *dev, struct device_node **msi_np, u32 id_in)
 	 * "msi-map" or an "msi-parent" property.
 	 */
 	for (parent_dev = dev; parent_dev; parent_dev = parent_dev->parent) {
-		if (!of_map_msi_id(parent_dev->of_node, id_in, msi_np, &id_out))
+		struct of_phandle_args msi_spec = {};
+
+		if (!of_map_msi_id(parent_dev->of_node, id_in, *msi_np, &msi_spec)) {
+			id_out = msi_spec.args[0];
+			if (!*msi_np)
+				*msi_np = msi_spec.np;
+			else
+				of_node_put(msi_spec.np);
 			break;
+		}
 		if (!of_check_msi_parent(parent_dev->of_node, msi_np))
 			break;
 	}
diff --git a/drivers/pci/controller/dwc/pci-imx6.c b/drivers/pci/controller/dwc/pci-imx6.c
index bff8289f804a..c0544d9c0921 100644
--- a/drivers/pci/controller/dwc/pci-imx6.c
+++ b/drivers/pci/controller/dwc/pci-imx6.c
@@ -1137,30 +1137,32 @@ static void imx_pcie_remove_lut(struct imx_pcie *imx_pcie, u16 rid)
 
 static int imx_pcie_add_lut_by_rid(struct imx_pcie *imx_pcie, u32 rid)
 {
+	struct of_phandle_args iommu_spec = {};
+	struct of_phandle_args msi_spec = {};
 	struct device *dev = imx_pcie->pci->dev;
-	struct device_node *target;
 	u32 sid_i, sid_m;
 	int err_i, err_m;
 	u32 sid = 0;
 
-	target = NULL;
-	err_i = of_map_iommu_id(dev->of_node, rid, &target, &sid_i);
-	if (target) {
-		of_node_put(target);
-	} else {
+	err_i = of_map_iommu_id(dev->of_node, rid, &iommu_spec);
+	if (!err_i)
+		sid_i = iommu_spec.args[0];
+	of_node_put(iommu_spec.np);
+	if (!err_i && !iommu_spec.np) {
 		/*
-		 * "target == NULL && err_i == 0" means RID out of map range.
-		 * Use 1:1 map RID to streamID. Hardware can't support this
-		 * because the streamID is only 6 bits
+		 * "iommu_spec.np == NULL && err_i == 0" means RID out of map
+		 * range. Use 1:1 map RID to streamID. Hardware can't support
+		 * this because the streamID is only 6 bits.
 		 */
 		err_i = -EINVAL;
 	}
 
-	target = NULL;
-	err_m = of_map_msi_id(dev->of_node, rid, &target, &sid_m);
-
+	err_m = of_map_msi_id(dev->of_node, rid, NULL, &msi_spec);
+	if (!err_m)
+		sid_m = msi_spec.args[0];
+	of_node_put(msi_spec.np);
 	/*
-	 *   err_m      target
+	 *   err_m      msi_spec.np
 	 *	0	NULL		RID out of range. Use 1:1 map RID to
 	 *				streamID, Current hardware can't
 	 *				support it, so return -EINVAL.
@@ -1168,10 +1170,8 @@ static int imx_pcie_add_lut_by_rid(struct imx_pcie *imx_pcie, u32 rid)
 	 *	0	!= NULL		Get correct streamID from RID
 	 *	!= 0	!= NULL		Invalid combination
 	 */
-	if (!err_m && !target)
+	if (!err_m && !msi_spec.np)
 		return -EINVAL;
-	else if (target)
-		of_node_put(target); /* Find streamID map entry for RID in msi-map */
 
 	/*
 	 * msi-map        iommu-map
diff --git a/drivers/pci/controller/pcie-apple.c b/drivers/pci/controller/pcie-apple.c
index a0937b7b3c4d..c2cffc0659f4 100644
--- a/drivers/pci/controller/pcie-apple.c
+++ b/drivers/pci/controller/pcie-apple.c
@@ -755,6 +755,7 @@ static int apple_pcie_enable_device(struct pci_host_bridge *bridge, struct pci_d
 {
 	u32 sid, rid = pci_dev_id(pdev);
 	struct apple_pcie_port *port;
+	struct of_phandle_args iommu_spec = {};
 	int idx, err;
 
 	port = apple_pcie_get_port(pdev);
@@ -764,10 +765,12 @@ static int apple_pcie_enable_device(struct pci_host_bridge *bridge, struct pci_d
 	dev_dbg(&pdev->dev, "added to bus %s, index %d\n",
 		pci_name(pdev->bus->self), port->idx);
 
-	err = of_map_iommu_id(port->pcie->dev->of_node, rid, NULL, &sid);
+	err = of_map_iommu_id(port->pcie->dev->of_node, rid, &iommu_spec);
 	if (err)
 		return err;
 
+	of_node_put(iommu_spec.np);
+	sid = iommu_spec.args[0];
 	mutex_lock(&port->pcie->lock);
 
 	idx = bitmap_find_free_region(port->sid_map, port->sid_map_sz, 0);
diff --git a/drivers/xen/grant-dma-ops.c b/drivers/xen/grant-dma-ops.c
index 1b7696b2d762..2aa1a772a0ff 100644
--- a/drivers/xen/grant-dma-ops.c
+++ b/drivers/xen/grant-dma-ops.c
@@ -319,13 +319,13 @@ static int xen_dt_grant_init_backend_domid(struct device *dev,
 					   struct device_node *np,
 					   domid_t *backend_domid)
 {
-	struct of_phandle_args iommu_spec = { .args_count = 1 };
+	struct of_phandle_args iommu_spec = {};
 
 	if (dev_is_pci(dev)) {
 		struct pci_dev *pdev = to_pci_dev(dev);
 		u32 rid = PCI_DEVID(pdev->bus->number, pdev->devfn);
 
-		if (of_map_iommu_id(np, rid, &iommu_spec.np, iommu_spec.args)) {
+		if (of_map_iommu_id(np, rid, &iommu_spec)) {
 			dev_dbg(dev, "Cannot translate ID\n");
 			return -ESRCH;
 		}
diff --git a/include/linux/of.h b/include/linux/of.h
index fe841f3cc747..8548cd9eb4f1 100644
--- a/include/linux/of.h
+++ b/include/linux/of.h
@@ -463,13 +463,13 @@ bool of_console_check(const struct device_node *dn, char *name, int index);
 
 int of_map_id(const struct device_node *np, u32 id,
 	       const char *map_name, const char *map_mask_name,
-	       struct device_node **target, u32 *id_out);
+	       const struct device_node *filter_np, struct of_phandle_args *arg);
 
 int of_map_iommu_id(const struct device_node *np, u32 id,
-		    struct device_node **target, u32 *id_out);
+		    struct of_phandle_args *arg);
 
 int of_map_msi_id(const struct device_node *np, u32 id,
-		  struct device_node **target, u32 *id_out);
+		  const struct device_node *filter_np, struct of_phandle_args *arg);
 
 phys_addr_t of_dma_get_max_cpu_address(struct device_node *np);
 
@@ -935,19 +935,21 @@ static inline void of_property_clear_flag(struct property *p, unsigned long flag
 
 static inline int of_map_id(const struct device_node *np, u32 id,
 			     const char *map_name, const char *map_mask_name,
-			     struct device_node **target, u32 *id_out)
+			     const struct device_node *filter_np,
+			     struct of_phandle_args *arg)
 {
 	return -EINVAL;
 }
 
 static inline int of_map_iommu_id(const struct device_node *np, u32 id,
-				  struct device_node **target, u32 *id_out)
+				  struct of_phandle_args *arg)
 {
 	return -EINVAL;
 }
 
 static inline int of_map_msi_id(const struct device_node *np, u32 id,
-				struct device_node **target, u32 *id_out)
+				const struct device_node *filter_np,
+				struct of_phandle_args *arg)
 {
 	return -EINVAL;
 }

-- 
2.34.1



From xen-devel-bounces@lists.xenproject.org Wed Apr 08 10:04:59 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 08 Apr 2026 10:04:59 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1275597.1561382 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wAPmM-0006E6-3U; Wed, 08 Apr 2026 10:04:58 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1275597.1561382; Wed, 08 Apr 2026 10:04: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 1wAPmM-0006Dz-0Z; Wed, 08 Apr 2026 10:04:58 +0000
Received: by outflank-mailman (input) for mailman id 1275597;
 Wed, 08 Apr 2026 10:04:56 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <vijayanand.jitta@oss.qualcomm.com>)
 id 1wAPmJ-0006DS-TK
 for xen-devel@lists.xenproject.org; Wed, 08 Apr 2026 10:04:56 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wAPmJ-007JgT-9H
 for xen-devel@lists.xenproject.org; Wed, 08 Apr 2026 12:04:55 +0200
Received: from [10.42.69.12] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <vijayanand.jitta@oss.qualcomm.com>)
 id 69d62834-bab6-0a2a0a5309dd-0a2a450ce9d2-0
 for <xen-devel@lists.xenproject.org>; Wed, 08 Apr 2026 12:04:36 +0200
Received: from [205.220.168.131] (helo=mx0a-0031df01.pphosted.com)
 by tlsNG-d25034.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.0)
 (envelope-from <vijayanand.jitta@oss.qualcomm.com>)
 id 69d62820-f40c-0a2a450c0019-cddca8832f48-3
 for <xen-devel@lists.xenproject.org>; Wed, 08 Apr 2026 12:04:18 +0200
Received: from pps.filterd (m0279865.ppops.net [127.0.0.1])
 by mx0a-0031df01.pphosted.com (8.18.1.11/8.18.1.11) with ESMTP id
 6385WD1b1006023
 for <xen-devel@lists.xenproject.org>; Wed, 8 Apr 2026 10:04:16 GMT
Received: from mail-pf1-f200.google.com (mail-pf1-f200.google.com
 [209.85.210.200])
 by mx0a-0031df01.pphosted.com (PPS) with ESMTPS id 4dd7tpaqdy-1
 (version=TLSv1.3 cipher=TLS_AES_128_GCM_SHA256 bits=128 verify=NOT)
 for <xen-devel@lists.xenproject.org>; Wed, 08 Apr 2026 10:04:16 +0000 (GMT)
Received: by mail-pf1-f200.google.com with SMTP id
 d2e1a72fcca58-82c646e980bso3136999b3a.0
 for <xen-devel@lists.xenproject.org>; Wed, 08 Apr 2026 03:04:16 -0700 (PDT)
Received: from hu-vjitta-hyd.qualcomm.com ([202.46.23.25])
 by smtp.gmail.com with ESMTPSA id
 d2e1a72fcca58-82cf9b5fb22sm25805584b3a.26.2026.04.08.03.04.04
 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
 Wed, 08 Apr 2026 03:04:14 -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=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="Cc:To:In-Reply-To:References:Message-Id:Content-Transfer-Encoding:MIME-Version:Subject:Date:From"
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=
	fOXXFN9mhZ7JxzI+hTQo1c6CYH+05MRwTlhFigPlnEI=; b=pMZPZKCo75OvsLso
	d9DPZFL3vc8yVgEVCwLlGHiqOMFIqILxswpmIsseKtSgLpSsmWLenSfjDIc4ws6G
	eGJNHOkLGFAG2sbF5UA0EV4mr6wiXjL0PsTvNuVsnTlJr9tGWike6QP0Abz3Mp3K
	buYfJvEDdLkDQtnP4mokOvpFZxvJZYeDlUNDdSaLBdbQRr25ah4tgvr6FpjOr5nH
	HlU6mnURWxleTTGrBlFmhtavAfK8U61f3UTpCrLzGVUrxrkXkn/Rzfc5o8cs2V6f
	Iv4eR82dCqRZ9zJTtKcKRSpbMm/EOwU0d4YQlCtG07pZOeVA6jB/lSRMTnWT8SfA
	b8nmaA==
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=oss.qualcomm.com; s=google; t=1775642655; x=1776247455; darn=lists.xenproject.org;
        h=cc:to:in-reply-to:references:message-id:content-transfer-encoding
         :mime-version:subject:date:from:from:to:cc:subject:date:message-id
         :reply-to;
        bh=fOXXFN9mhZ7JxzI+hTQo1c6CYH+05MRwTlhFigPlnEI=;
        b=kDJXMFyFkyYNcqd3V4kA6oz9XglN26aNypv6axnvSwGVvsKArckVeJQ7p4gW/S71U0
         +MCrh8iCUp2q0ffwcZNmBrZOQJTA+82ke56qZGDaGxLD29q5j46EConOSnsw+mVQRfnQ
         MpP6eAjAmZcq4JDAGjQJO3ZTLGC+jwqSuIqVpIhO673o3CQGPGDH5eGQ/Lj2vTzIDAPz
         +r+DgiVU5hS4mS/qpx9a6v7mKuRbGokibpMMcyZhLsF0odQNuk9mSFwHXhdK6oNEL6Jm
         lEXxHh8qKQBu19rMEZvpZsh4cW4oQucbP9uX+BZ3bNwllq4Cjbn72lWaqWS334/FXwsn
         dAyw==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20251104; t=1775642655; x=1776247455;
        h=cc:to:in-reply-to:references:message-id:content-transfer-encoding
         :mime-version:subject:date:from:x-gm-gg:x-gm-message-state:from:to
         :cc:subject:date:message-id:reply-to;
        bh=fOXXFN9mhZ7JxzI+hTQo1c6CYH+05MRwTlhFigPlnEI=;
        b=MZSq8DXuvbgKmDQxroszU+Z+9OFmzwy8VzwkXq9IZ3JQ1uDUcQ3QVK2guGFGTgw15f
         QwfdRtY4cmYA0ErHm+mX8CDTGHz+B6Fk7DivHAmIMpNKpb8kIZdkGjVzDOUd3gfa/WvK
         fqYf8RxGn5R3GmFHpxEpeXMcvoiyHxUXETkr3if27rS+Opqqv7QEO1FtCJE0jaYQLnSt
         zolIzTgY/U+6tAjATIUiddOZol2fiCwwlCJ39hB3dTSLAsPpEugjiWFdOLDD67SIq3a5
         X/LFaGuZrgoo3cF54uL+UI7+PNiDWk6jpb+Zie3KyIDAcEn0lt8DsFImYBQNLV3LHw3/
         vBxw==
X-Forwarded-Encrypted: i=1; AJvYcCWwuFJdvnBX5KsK3iBxuTggqmkzTDFsLut12ykx7Jn2yg1GRQ9xpitK6NkQT2tX9IqqeIyDr+gPalA=@lists.xenproject.org
X-Gm-Message-State: AOJu0Yxaj+VmQd1FYPyKH7MF+poF8u0Pc3QnQBxzMMrEfcjLYO5g/TiV
	GGYJicfh3qstvaMxulE0JiNPp227Q13SW+Zi+4CHPwyD3/1Y328TxfTy1oFAhc34T/uFlweBJdO
	poe71V23TFAut6LJ2jeDpZq3hXa7BlgrQdD/NhR6PfotiQgS0xdEBlQOlqCp8mfV9jIvUcQ==
X-Gm-Gg: AeBDietj0niRrnsaRjaUrOniKiJFyJ13+Ie8yO1GoME0ZjryWvdoHW8T/iTqavZD/LZ
	l0NRyXXOZ14ybr2E1ixfsL3O6Pi0frkkSYsdHsvLKk+n8Tj0JXLCovCzG1g0eqG5i9/OJRlZP72
	gwKVfrWdarW482EcOshrEctuJPkh7AiBDIHaq4CLq/tCIVP3fmKsuaKtFNwkxNnOaKiePlgu207
	5Fi+pkpHPGqcFQIcT5PKF7sQ647xdy8Gnufet8o9uyjhMam3rfrEk+7aXY4GGqTZebYPoZM2hZG
	S/Yl26jPCRpqVSQHEAy1xiQOXEr6RbK5rzJ0VqkLk3yn3rHZ9QWqvmgVf/fADpuRrLdDy8VrKrH
	w4WHdLO6c8lXUPGZrwuEwf5zk33SsmnjOP+jJrX1FVvzhdyAhl3lNpW3O
X-Received: by 2002:a05:6a00:414b:b0:829:7a15:9b96 with SMTP id d2e1a72fcca58-82d0dbd3ad4mr20930784b3a.54.1775642655245;
        Wed, 08 Apr 2026 03:04:15 -0700 (PDT)
X-Received: by 2002:a05:6a00:414b:b0:829:7a15:9b96 with SMTP id d2e1a72fcca58-82d0dbd3ad4mr20930728b3a.54.1775642654481;
        Wed, 08 Apr 2026 03:04:14 -0700 (PDT)
From: Vijayanand Jitta <vijayanand.jitta@oss.qualcomm.com>
Date: Wed, 08 Apr 2026 15:33:27 +0530
Subject: [PATCH v13 3/3] of: Respect #{iommu,msi}-cells in maps
MIME-Version: 1.0
Content-Type: text/plain; charset="utf-8"
Content-Transfer-Encoding: 7bit
Message-Id: <20260408-parse_iommu_cells-v13-3-fa921e92661b@oss.qualcomm.com>
References: <20260408-parse_iommu_cells-v13-0-fa921e92661b@oss.qualcomm.com>
In-Reply-To: <20260408-parse_iommu_cells-v13-0-fa921e92661b@oss.qualcomm.com>
To: Nipun Gupta <nipun.gupta@amd.com>, Nikhil Agarwal <nikhil.agarwal@amd.com>,
        Joerg Roedel <joro@8bytes.org>, Will Deacon <will@kernel.org>,
        Robin Murphy <robin.murphy@arm.com>, Marc Zyngier <maz@kernel.org>,
        Lorenzo Pieralisi <lpieralisi@kernel.org>,
        Thomas Gleixner <tglx@kernel.org>,
        Saravana Kannan <saravanak@kernel.org>,
        Richard Zhu <hongxing.zhu@nxp.com>,
        Lucas Stach <l.stach@pengutronix.de>,
        =?utf-8?q?Krzysztof_Wilczy=C5=84ski?= <kwilczynski@kernel.org>,
        Manivannan Sadhasivam <mani@kernel.org>,
        Bjorn Helgaas <bhelgaas@google.com>, Frank Li <Frank.Li@nxp.com>,
        Sascha Hauer <s.hauer@pengutronix.de>,
        Pengutronix Kernel Team <kernel@pengutronix.de>,
        Fabio Estevam <festevam@gmail.com>, Juergen Gross <jgross@suse.com>,
        Stefano Stabellini <sstabellini@kernel.org>,
        Oleksandr Tyshchenko <oleksandr_tyshchenko@epam.com>,
        Dmitry Baryshkov <dmitry.baryshkov@oss.qualcomm.com>,
        Konrad Dybcio <konrad.dybcio@oss.qualcomm.com>,
        Bjorn Andersson <bjorn.andersson@oss.qualcomm.com>,
        Rob Herring <robh@kernel.org>, Conor Dooley <conor+dt@kernel.org>,
        Krzysztof Kozlowski <krzk+dt@kernel.org>,
        Prakash Gupta <prakash.gupta@oss.qualcomm.com>,
        Vikash Garodia <vikash.garodia@oss.qualcomm.com>
Cc: linux-kernel@vger.kernel.org, iommu@lists.linux.dev,
        linux-arm-kernel@lists.infradead.org, devicetree@vger.kernel.org,
        linux-pci@vger.kernel.org, imx@lists.linux.dev,
        xen-devel@lists.xenproject.org, linux-arm-msm@vger.kernel.org,
        Vijayanand Jitta <vijayanand.jitta@oss.qualcomm.com>,
        Charan Teja Kalla <charan.kalla@oss.qualcomm.com>
X-Mailer: b4 0.15.1
X-Developer-Signature: v=1; a=ed25519-sha256; t=1775642611; l=12022;
 i=vijayanand.jitta@oss.qualcomm.com; s=20260301; h=from:subject:message-id;
 bh=d1eDTLSvaaoV8Pjb6ssN/wlaFmWHAsxlhBaIWB039ns=;
 b=Qz9Bew7teeuYpMRibThlE+2spUrFr6YAsTdYy+DdombPTIwVDXiEwEkO1fgZ/TZdvZ2d817JE
 fJz68Xogd71BSLUNzAZKADh171mv0irdXgfbICdZqYgPzhVLjuc2+8p
X-Developer-Key: i=vijayanand.jitta@oss.qualcomm.com; a=ed25519;
 pk=Lpi7Cs3wHe8KZtqvyci7FTOLzsKpEHKGCaPNZw+1zRI=
X-Proofpoint-GUID: hMGCanpU5PH0PNdHNHlKo_Dsf1RuNZnu
X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwNDA4MDA5MSBTYWx0ZWRfX/CyDT3WwlWj2
 rGxKLeqXsmoVYlQIl7DEZEA0QnRj2bHAVJFPggsgVd/JwDpOoEUAEReVxnipDEzNG30WUqaeiPF
 rybvQKPn72ID7xL/F7qaYL2/0KfkFBgAUj9QmsfIeidzin6sbQq/Fd59C0K4XPQqmpmb8VpHDDQ
 yKffM7thprAhsfO6DOaHQBYaW1mcgUF/RIerhYbYn2cyBUzQ3qHQ+VSPiHV/hDNbIk0zi2Ffw1o
 cE8tcsn80tya+EDR/EKldgU/zvdLCyzrRcN7Op5Kjf0+G0z7I8lJy1D0ICjP1czPxyOZ7Mm4rxg
 msyRM0eJqvZtMe7eUZpsv5bJByZFo/FVFmnYlybQcjPY8U5BYaFuBURwcd2Edct8dga6wTzgpsy
 EM83iNWgdk2ttGus7j7QL41Ci7lMf6Ee8Xl3MtAc0QAYkrhIUYO0zm5b/Rja5ilw6vTvoaQdZva
 Yh//AMaMH+yJw3Mqhbg==
X-Proofpoint-ORIG-GUID: hMGCanpU5PH0PNdHNHlKo_Dsf1RuNZnu
X-Authority-Analysis: v=2.4 cv=DNS/JSNb c=1 sm=1 tr=0 ts=69d62820 cx=c_pps
 a=mDZGXZTwRPZaeRUbqKGCBw==:117 a=ZePRamnt/+rB5gQjfz0u9A==:17
 a=IkcTkHD0fZMA:10 a=A5OVakUREuEA:10 a=s4-Qcg_JpJYA:10
 a=VkNPw1HP01LnGYTKEx00:22 a=u7WPNUs3qKkmUXheDGA7:22 a=Um2Pa8k9VHT-vaBCBUpS:22
 a=7CQSdrXTAAAA:8 a=EUspDBNiAAAA:8 a=klF1l1D6msg2vEcBgDUA:9 a=QEXdDO2ut3YA:10
 a=zc0IvFSfCIW2DFIPzwfm:22 a=a-qgeE7W1pNrGK8U0ZQC:22
X-Proofpoint-Virus-Version: vendor=baseguard
 engine=ICAP:2.0.293,Aquarius:18.0.1143,Hydra:6.1.51,FMLib:17.12.100.49
 definitions=2026-04-08_03,2026-04-08_01,2025-10-01_01
X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0
 suspectscore=0 spamscore=0 lowpriorityscore=0 adultscore=0 priorityscore=1501
 impostorscore=0 clxscore=1015 bulkscore=0 phishscore=0 malwarescore=0
 classifier=typeunknown authscore=0 authtc= authcc= route=outbound adjust=0
 reason=mlx scancount=1 engine=8.22.0-2604010000 definitions=main-2604080091
X-purgate-ID: tlsNG-d25034/1775642658-FDD53A3D-3874DBFC/0/0
X-purgate-type: clean
X-purgate-size: 12069

From: Robin Murphy <robin.murphy@arm.com>

So far our parsing of {iommu,msi}-map properties has always blindly
assumed that the output specifiers will always have exactly 1 cell.
This typically does happen to be the case, but is not actually enforced
(and the PCI msi-map binding even explicitly states support for 0 or 1
cells) - as a result we've now ended up with dodgy DTs out in the field
which depend on this behaviour to map a 1-cell specifier for a 2-cell
provider, despite that being bogus per the bindings themselves.

Since there is some potential use in being able to map at least single
input IDs to multi-cell output specifiers (and properly support 0-cell
outputs as well), add support for properly parsing and using the target
nodes' #cells values, albeit with the unfortunate complication of still
having to work around expectations of the old behaviour too.

Since there are multi-cell output specifiers, the callers of of_map_id()
may need to get the exact cell output value for further processing.
Update of_map_id() to set args_count in the output to reflect the actual
number of output specifier cells.

Signed-off-by: Robin Murphy <robin.murphy@arm.com>
Signed-off-by: Charan Teja Kalla <charan.kalla@oss.qualcomm.com>
Signed-off-by: Vijayanand Jitta <vijayanand.jitta@oss.qualcomm.com>
---
 drivers/of/base.c  | 157 +++++++++++++++++++++++++++++++++++++++++------------
 include/linux/of.h |   6 +-
 2 files changed, 125 insertions(+), 38 deletions(-)

diff --git a/drivers/of/base.c b/drivers/of/base.c
index b3d002015192..2554e4f1a181 100644
--- a/drivers/of/base.c
+++ b/drivers/of/base.c
@@ -2096,18 +2096,48 @@ int of_find_last_cache_level(unsigned int cpu)
 	return cache_level;
 }
 
+/*
+ * Some DTs have an iommu-map targeting a 2-cell IOMMU node while
+ * specifying only 1 cell. Fortunately they all consist of value '1'
+ * as the 2nd cell entry with the same target, so check for that pattern.
+ *
+ * Example:
+ *	IOMMU node:
+ *		#iommu-cells = <2>;
+ *
+ *	Device node:
+ *		iommu-map = <0x0000 &smmu 0x0000 0x1>,
+ *			    <0x0100 &smmu 0x0100 0x1>;
+ */
+static bool of_check_bad_map(const __be32 *map, int len)
+{
+	__be32 phandle = map[1];
+
+	if (len % 4)
+		return false;
+	for (int i = 0; i < len; i += 4) {
+		if (map[i + 1] != phandle || map[i + 3] != cpu_to_be32(1))
+			return false;
+	}
+	return true;
+}
+
 /**
  * of_map_id - Translate an ID through a downstream mapping.
  * @np: root complex device node.
  * @id: device ID to map.
  * @map_name: property name of the map to use.
+ * @cells_name: property name of target specifier cells.
  * @map_mask_name: optional property name of the mask to use.
  * @filter_np: optional device node to filter matches by, or NULL to match any.
  *	If non-NULL, only map entries targeting this node will be matched.
  * @arg: pointer to a &struct of_phandle_args for the result. On success,
- *	@arg->args[0] will contain the translated ID. If a map entry was
- *	matched, @arg->np will be set to the target node with a reference
- *	held that the caller must release with of_node_put().
+ *	@arg->args_count will be set to the number of output specifier cells
+ *	as defined by @cells_name in the target node, and
+ *	@arg->args[0..args_count-1] will contain the translated output
+ *	specifier values. If a map entry was matched, @arg->np will be set
+ *	to the target node with a reference held that the caller must release
+ *	with of_node_put().
  *
  * Given a device ID, look up the appropriate implementation-defined
  * platform ID and/or the target device which receives transactions on that
@@ -2116,17 +2146,19 @@ int of_find_last_cache_level(unsigned int cpu)
  * Return: 0 on success or a standard error code on failure.
  */
 int of_map_id(const struct device_node *np, u32 id,
-	       const char *map_name, const char *map_mask_name,
+	       const char *map_name, const char *cells_name,
+	       const char *map_mask_name,
 	       const struct device_node *filter_np, struct of_phandle_args *arg)
 {
 	u32 map_mask, masked_id;
-	int map_len;
+	int map_bytes, map_len, offset = 0;
+	bool bad_map = false;
 	const __be32 *map = NULL;
 
 	if (!np || !map_name || !arg)
 		return -EINVAL;
 
-	map = of_get_property(np, map_name, &map_len);
+	map = of_get_property(np, map_name, &map_bytes);
 	if (!map) {
 		if (filter_np)
 			return -ENODEV;
@@ -2136,11 +2168,9 @@ int of_map_id(const struct device_node *np, u32 id,
 		return 0;
 	}
 
-	if (!map_len || map_len % (4 * sizeof(*map))) {
-		pr_err("%pOF: Error: Bad %s length: %d\n", np,
-			map_name, map_len);
-		return -EINVAL;
-	}
+	if (map_bytes % sizeof(*map))
+		goto err_map_len;
+	map_len = map_bytes / sizeof(*map);
 
 	/* The default is to select all bits. */
 	map_mask = 0xffffffff;
@@ -2153,39 +2183,84 @@ int of_map_id(const struct device_node *np, u32 id,
 		of_property_read_u32(np, map_mask_name, &map_mask);
 
 	masked_id = map_mask & id;
-	for ( ; map_len > 0; map_len -= 4 * sizeof(*map), map += 4) {
+
+	while (offset < map_len) {
 		struct device_node *phandle_node;
-		u32 id_base = be32_to_cpup(map + 0);
-		u32 phandle = be32_to_cpup(map + 1);
-		u32 out_base = be32_to_cpup(map + 2);
-		u32 id_len = be32_to_cpup(map + 3);
+		u32 id_base, phandle, id_len, id_off, cells = 0;
+		const __be32 *out_base;
+
+		if (map_len - offset < 2)
+			goto err_map_len;
+
+		id_base = be32_to_cpup(map + offset);
 
 		if (id_base & ~map_mask) {
-			pr_err("%pOF: Invalid %s translation - %s-mask (0x%x) ignores id-base (0x%x)\n",
-				np, map_name, map_name,
-				map_mask, id_base);
+			pr_err("%pOF: Invalid %s translation - %s (0x%x) ignores id-base (0x%x)\n",
+			       np, map_name, map_mask_name, map_mask, id_base);
 			return -EFAULT;
 		}
 
-		if (masked_id < id_base || masked_id >= id_base + id_len)
-			continue;
-
+		phandle = be32_to_cpup(map + offset + 1);
 		phandle_node = of_find_node_by_phandle(phandle);
 		if (!phandle_node)
 			return -ENODEV;
 
+		if (bad_map) {
+			cells = 1;
+		} else if (of_property_read_u32(phandle_node, cells_name, &cells)) {
+			pr_err("%pOF: missing %s property\n", phandle_node, cells_name);
+			of_node_put(phandle_node);
+			return -EINVAL;
+		}
+
+		if (map_len - offset < 3 + cells) {
+			of_node_put(phandle_node);
+			goto err_map_len;
+		}
+
+		if (offset == 0 && cells == 2) {
+			bad_map = of_check_bad_map(map, map_len);
+			if (bad_map) {
+				pr_warn_once("%pOF: %s mismatches target %s, assuming extra cell of 0\n",
+					     np, map_name, cells_name);
+				cells = 1;
+			}
+		}
+
+		out_base = map + offset + 2;
+		offset += 3 + cells;
+
+		id_len = be32_to_cpup(map + offset - 1);
+		if (id_len > 1 && cells > 1) {
+			/*
+			 * With 1 output cell we reasonably assume its value
+			 * has a linear relationship to the input; with more,
+			 * we'd need help from the provider to know what to do.
+			 */
+			pr_err("%pOF: Unsupported %s - cannot handle %d-ID range with %d-cell output specifier\n",
+			       np, map_name, id_len, cells);
+			of_node_put(phandle_node);
+			return -EINVAL;
+		}
+		id_off = masked_id - id_base;
+		if (masked_id < id_base || id_off >= id_len) {
+			of_node_put(phandle_node);
+			continue;
+		}
+
 		if (filter_np && filter_np != phandle_node) {
 			of_node_put(phandle_node);
 			continue;
 		}
 
 		arg->np = phandle_node;
-		arg->args[0] = masked_id - id_base + out_base;
-		arg->args_count = 1;
+		for (int i = 0; i < cells; i++)
+			arg->args[i] = id_off + be32_to_cpu(out_base[i]);
+		arg->args_count = cells;
 
 		pr_debug("%pOF: %s, using mask %08x, id-base: %08x, out-base: %08x, length: %08x, id: %08x -> %08x\n",
-			np, map_name, map_mask, id_base, out_base,
-			id_len, id, masked_id - id_base + out_base);
+			np, map_name, map_mask, id_base, be32_to_cpup(out_base),
+			id_len, id, id_off + be32_to_cpup(out_base));
 		return 0;
 	}
 
@@ -2196,6 +2271,10 @@ int of_map_id(const struct device_node *np, u32 id,
 	arg->args[0] = id;
 	arg->args_count = 1;
 	return 0;
+
+err_map_len:
+	pr_err("%pOF: Error: Bad %s length: %d\n", np, map_name, map_bytes);
+	return -EINVAL;
 }
 EXPORT_SYMBOL_GPL(of_map_id);
 
@@ -2205,18 +2284,21 @@ EXPORT_SYMBOL_GPL(of_map_id);
  * @id: Requester ID of the device (e.g. PCI RID/BDF or a platform
  *      stream/device ID) used as the lookup key in the iommu-map table.
  * @arg: pointer to a &struct of_phandle_args for the result. On success,
- *	@arg->args[0] contains the translated ID. If a map entry was matched,
- *	@arg->np holds a reference to the target node that the caller must
- *	release with of_node_put().
+ *	@arg->args_count will be set to the number of output specifier cells
+ *	and @arg->args[0..args_count-1] will contain the translated output
+ *	specifier values. If a map entry was matched, @arg->np holds a
+ *	reference to the target node that the caller must release with
+ *	of_node_put().
  *
- * Convenience wrapper around of_map_id() using "iommu-map" and "iommu-map-mask".
+ * Convenience wrapper around of_map_id() using "iommu-map", "#iommu-cells",
+ * and "iommu-map-mask".
  *
  * Return: 0 on success or a standard error code on failure.
  */
 int of_map_iommu_id(const struct device_node *np, u32 id,
 		    struct of_phandle_args *arg)
 {
-	return of_map_id(np, id, "iommu-map", "iommu-map-mask", NULL, arg);
+	return of_map_id(np, id, "iommu-map", "#iommu-cells", "iommu-map-mask", NULL, arg);
 }
 EXPORT_SYMBOL_GPL(of_map_iommu_id);
 
@@ -2229,17 +2311,20 @@ EXPORT_SYMBOL_GPL(of_map_iommu_id);
  *	to match any. If non-NULL, only map entries targeting this node will
  *	be matched.
  * @arg: pointer to a &struct of_phandle_args for the result. On success,
- *	@arg->args[0] contains the translated ID. If a map entry was matched,
- *	@arg->np holds a reference to the target node that the caller must
- *	release with of_node_put().
+ *	@arg->args_count will be set to the number of output specifier cells
+ *	and @arg->args[0..args_count-1] will contain the translated output
+ *	specifier values. If a map entry was matched, @arg->np holds a
+ *	reference to the target node that the caller must release with
+ *	of_node_put().
  *
- * Convenience wrapper around of_map_id() using "msi-map" and "msi-map-mask".
+ * Convenience wrapper around of_map_id() using "msi-map", "#msi-cells",
+ * and "msi-map-mask".
  *
  * Return: 0 on success or a standard error code on failure.
  */
 int of_map_msi_id(const struct device_node *np, u32 id,
 		  const struct device_node *filter_np, struct of_phandle_args *arg)
 {
-	return of_map_id(np, id, "msi-map", "msi-map-mask", filter_np, arg);
+	return of_map_id(np, id, "msi-map", "#msi-cells", "msi-map-mask", filter_np, arg);
 }
 EXPORT_SYMBOL_GPL(of_map_msi_id);
diff --git a/include/linux/of.h b/include/linux/of.h
index 8548cd9eb4f1..51ac8539f2c3 100644
--- a/include/linux/of.h
+++ b/include/linux/of.h
@@ -462,7 +462,8 @@ const char *of_prop_next_string(const struct property *prop, const char *cur);
 bool of_console_check(const struct device_node *dn, char *name, int index);
 
 int of_map_id(const struct device_node *np, u32 id,
-	       const char *map_name, const char *map_mask_name,
+	       const char *map_name, const char *cells_name,
+	       const char *map_mask_name,
 	       const struct device_node *filter_np, struct of_phandle_args *arg);
 
 int of_map_iommu_id(const struct device_node *np, u32 id,
@@ -934,7 +935,8 @@ static inline void of_property_clear_flag(struct property *p, unsigned long flag
 }
 
 static inline int of_map_id(const struct device_node *np, u32 id,
-			     const char *map_name, const char *map_mask_name,
+			     const char *map_name, const char *cells_name,
+			     const char *map_mask_name,
 			     const struct device_node *filter_np,
 			     struct of_phandle_args *arg)
 {

-- 
2.34.1



From xen-devel-bounces@lists.xenproject.org Wed Apr 08 10:21:15 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 08 Apr 2026 10:21:15 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1275628.1561391 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wAQ21-0001FO-J4; Wed, 08 Apr 2026 10:21:09 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1275628.1561391; Wed, 08 Apr 2026 10:21: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 1wAQ21-0001FH-GZ; Wed, 08 Apr 2026 10:21:09 +0000
Received: by outflank-mailman (input) for mailman id 1275628;
 Wed, 08 Apr 2026 10:21:09 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <nicola.vetrini@bugseng.com>) id 1wAQ20-0001FB-WC
 for xen-devel@lists.xenproject.org; Wed, 08 Apr 2026 10:21:08 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wAQ20-008Eim-8J
 for xen-devel@lists.xenproject.org; Wed, 08 Apr 2026 12:21:08 +0200
Received: from [10.42.69.6] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <nicola.vetrini@bugseng.com>)
 id 69d62bf9-5cb7-0a2a0a5109dd-0a2a4506d04a-40
 for <xen-devel@lists.xenproject.org>; Wed, 08 Apr 2026 12:21:08 +0200
Received: from [162.55.131.47] (helo=support.bugseng.com)
 by tlsNG-16d1c6.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.0)
 (envelope-from <nicola.vetrini@bugseng.com>)
 id 69d62c14-0df0-0a2a45060019-a237832fe162-3
 for <xen-devel@lists.xenproject.org>; Wed, 08 Apr 2026 12:21:08 +0200
Received: from support.bugseng.com (support.bugseng.com [162.55.131.47])
 (Authenticated sender: nicola)
 by support.bugseng.com (Postfix) with ESMTPA id 9F56D4EE0750;
 Wed,  8 Apr 2026 12:21:07 +0200 (CEST)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-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
Authentication-Results: bugseng.com; arc=none smtp.remote-ip=162.55.131.47
ARC-Seal: i=1; d=bugseng.com; s=openarc; a=rsa-sha256; cv=none; t=1775643668;
	b=DJTyujdeAsNX+NGzb6I5ZMeILL/I8afTuz1OuchBcQiPlahKwVEiAU3ic3Bj+02Iw8xv
	 oh8DOYcynQ3PuRPAZFpW8XEqGf3KBiXjxnf4T3fB6/MM0dDtvn3x3YenFMD18D2Zesv/r
	 Yev2gtcaAF3cdluZacrblP7cI4xXFZD5MYK7VMLicg1Ke6A/JM6mRNInnbF3RnVEN22xe
	 riO+W4IpNaLajo54fzLkoK+vhPUJzSnWAA8j6ZsBWuFZpQRDYmHrdLKL72LTIsDqzYdq/
	 619PfjjxWJwdRBa/SMKnsedbLiIo+HpZ9BERuQXDT0gcXGlAXBrEYfoeOZH8EmJqXhsxW
	 ucZgAaawsqHTt5PKIZQnle5gbc5oGBbizo1rNaz+6h78Elirty5KKcIO0RUuSxuN5bmq8
	 M8i+rSqDLXyaDHBI4OsaA1vs8VzRrFWR4EcKnOeVkrtwP48Fu56MfLtAlrySc2gqb9gVV
	 QEquF6MmwnHaSPbOSKq6ZQP/2+Y17G7VO343Gv6NmKozp2JllBEyp43+LvPPtCxpbryDm
	 r7xUK0lJ36YZQrwKuYmNxKSdOfEVyFjPKBk0Dm92jcM/xGjFNwafeKDg6YokVYYkHYUmU
	 Ue2QUs9Z7GCMYSUJu/k2tEEV7pK4zAHQVpP7P69YGcrvBsmDYk7RocyD2jBEHfA=
ARC-Message-Signature: i=1; d=bugseng.com; s=openarc; a=rsa-sha256;
	c=relaxed/relaxed; t=1775643668;
	h=MIME-Version:Date:From:To:Cc:Subject:In-Reply-To:References:
	 Message-ID:X-Sender:Organization:Content-Type:
	 Content-Transfer-Encoding;
	bh=4FUg+w0vR/wmXVAH7tfUoQGtkITJK7oPT0+fyci1VLA=;
	b=bAppOejTj7EXSCVypa4PQ7y9cPNoOGZvLyI6l6Z5Ns3pTzAtLt0Ts2VACyc0R+mgU7QY
	 ia0I3a1rDGOdI/lXbOhd1P3uLT8E/nycUBWiBld/J4LpWCeAMQPbYeZ7ZJ363sTyN2OsV
	 wf/KOIkLIOc7G2kuy/ZyCL7xkiEnMTTpL28wBruImux76zoEgkqA2K+S5AX8qUYJ1Rc32
	 Yf91Q6VKXeFy4+ymg7D7MCMaH72bveI4R1foM8RmG4yRzqAKZrPF8m0vSScvnN0c1T6vt
	 YAiiMnzJwcD0Q5YcSyHlaKVrvm1dRUN/TpjdfrRxCBQ3Nlwyzvo1GAlm1TSS5BThttc+i
	 dsoH0lPPshhTx9Sp0t1PJCCXdHr2xqtNAyxpJGU75Jis4sJGBbX0qk5JuySaN0bZR9/Oh
	 kq++vXVTGEBMyrfMrequDuKFY1m1Mith7DfQycvgI54tU00LuqDfsSKZVOW2Qg2GuDjZq
	 ZvHB8FH9XzYwOnYCaYBfz4+18d6y9RjPFHpOuDKio9HhieroNx//ptxE6uiiQIGZAT2Ht
	 jiqHLdT83HTMl/S/ysdUYrIK/R5yt0df4vBhUAuqK39YWh0T1oxWGIphWPbkg0d8M/lfU
	 RSLsWgmJOcIlNl8w0tpFIRedf9ysBOC5rl1YM0YZZNr4j/LkVsKAExT4OSyGQ3Q=
ARC-Authentication-Results: i=1; bugseng.com; arc=none smtp.remote-ip=162.55.131.47
MIME-Version: 1.0
Date: Wed, 08 Apr 2026 12:21:07 +0200
From: Nicola Vetrini <nicola.vetrini@bugseng.com>
To: Andrew Cooper <andrew.cooper3@citrix.com>
Cc: Michal Orzel <michal.orzel@amd.com>, xen-devel@lists.xenproject.org,
 Julien Grall <julien@xen.org>, Rahul Singh <rahul.singh@arm.com>, Stefano
 Stabellini <sstabellini@kernel.org>, Bertrand Marquis
 <bertrand.marquis@arm.com>, Volodymyr Babchuk <Volodymyr_Babchuk@epam.com>
Subject: Re: [PATCH 0/2] Final series to make Arm MISRA allcode green
In-Reply-To: <14185c87-84c0-4019-a3f6-50587b941350@citrix.com>
References: <20260407103434.90838-1-michal.orzel@amd.com>
 <68cea196-efdc-4481-9e4b-bb450bcd2071@citrix.com>
 <bdb8e991bbd200de2f0af5991304dffb@bugseng.com>
 <14185c87-84c0-4019-a3f6-50587b941350@citrix.com>
Message-ID: <7fbcb3d1ccdcf6fabb45f5805b504096@bugseng.com>
X-Sender: nicola.vetrini@bugseng.com
Organization: BUGSENG s.r.l.
Content-Type: text/plain; charset=UTF-8;
 format=flowed
Content-Transfer-Encoding: 8bit
X-purgate-ID: tlsNG-16d1c6/1775643668-5C9223D8-D77379F1/0/0
X-purgate-type: clean
X-purgate-size: 1751

On 2026-04-08 11:51, Andrew Cooper wrote:
> On 08/04/2026 10:46 am, Nicola Vetrini wrote:
>> On 2026-04-08 11:22, Andrew Cooper wrote:
>>> On 07/04/2026 11:34 am, Michal Orzel wrote:
>>>> No more regressions for clean guidelines:
>>>> https://gitlab.com/xen-project/people/morzel/xen/-/pipelines/2433943072
>>>> 
>>>> Michal Orzel (2):
>>>>   iommu/arm: smmu: Fix variable shadowing
>>>>   iommu/arm: ipmmu-vmsa: Fix variable shadowing
>>>> 
>>>>  xen/drivers/passthrough/arm/ipmmu-vmsa.c | 6 ++----
>>>>  xen/drivers/passthrough/arm/smmu.c       | 7 +++----
>>>>  2 files changed, 5 insertions(+), 8 deletions(-)
>>> 
>>> If all the violations are fixed, should this test be made blocking?
>>> 
>>> ~Andrew
>> 
>> Only if they are also clean on x86; otherwise an arm-specific list of
>> clean rules should be made (probably better). @Michal what do you 
>> prefer?
>> 
> 
> All I'm suggesting is this:
> 
> xen.git/xen$ git diff
> diff --git a/automation/gitlab-ci/analyze.yaml 
> b/automation/gitlab-ci/analyze.yaml
> index 4e9af9d60224..f01798c5dee6 100644
> --- a/automation/gitlab-ci/analyze.yaml
> +++ b/automation/gitlab-ci/analyze.yaml
> @@ -149,7 +149,7 @@ eclair-ARM64-allcode:
>        CONFIG_STACK_PROTECTOR=y
>        CONFIG_UNSUPPORTED=y
>        CONFIG_VM_EVENT=y
> -  allow_failure: true
> +  allow_failure: false
>  
>  eclair-ARM64-testing:
>    extends: eclair-ARM64-allcode
> 
> 
> so regressions become blocking.
> 
> ~Andrew

Ah, yes, indeed. I didn't look at the patches but given the diff it 
makes sense

-- 
Nicola Vetrini, B.Sc.
Software Engineer
BUGSENG (https://bugseng.com)
LinkedIn: https://www.linkedin.com/in/nicola-vetrini-a42471253


From xen-devel-bounces@lists.xenproject.org Wed Apr 08 10:22:44 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 08 Apr 2026 10:22:44 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1275636.1561400 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wAQ3X-0001jF-TU; Wed, 08 Apr 2026 10:22:43 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1275636.1561400; Wed, 08 Apr 2026 10:22: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 1wAQ3X-0001j8-Ql; Wed, 08 Apr 2026 10:22:43 +0000
Received: by outflank-mailman (input) for mailman id 1275636;
 Wed, 08 Apr 2026 10:22:42 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <roger.pau@citrix.com>) id 1wAQ3W-0001iy-77
 for xen-devel@lists.xenproject.org; Wed, 08 Apr 2026 10:22:42 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wAQ3V-005T45-JM
 for xen-devel@lists.xenproject.org; Wed, 08 Apr 2026 12:22:41 +0200
Received: from [10.42.69.9] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <roger.pau@citrix.com>)
 id 69d62c6d-bab6-0a2a0a5309dd-0a2a4509ce74-18
 for <xen-devel@lists.xenproject.org>; Wed, 08 Apr 2026 12:22:41 +0200
Received: from [52.101.56.51]
 (helo=BN1PR04CU002.outbound.protection.outlook.com)
 by tlsNG-bad1c0.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.0)
 (envelope-from <roger.pau@citrix.com>)
 id 69d62c6f-bf79-0a2a45090019-3465383399bb-3
 for <xen-devel@lists.xenproject.org>; Wed, 08 Apr 2026 12:22:41 +0200
Received: from CH7PR03MB7860.namprd03.prod.outlook.com (2603:10b6:610:24e::14)
 by DS0PR03MB7773.namprd03.prod.outlook.com (2603:10b6:8:1fe::10) with
 Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9769.16; Wed, 8 Apr
 2026 10:22:38 +0000
Received: from CH7PR03MB7860.namprd03.prod.outlook.com
 ([fe80::f5ba:35df:1c9f:b343]) by CH7PR03MB7860.namprd03.prod.outlook.com
 ([fe80::f5ba:35df:1c9f:b343%4]) with mapi id 15.20.9769.014; Wed, 8 Apr 2026
 10:22: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=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=myhzkVZIL0XH6MDHQSA/xJpx00FIlEJLPQb7guRa+cHuXUTKg4x1JLNW2pO75/VIcNb7qT8jHJgAyY7jOCkEhJFKtWglMQgM3Vm2LW6Eqz8UVt8rcT8Z06Fdo7ffwqWauYcuxPIuO/PgZt+TK/aVcXe4F8kJgnbFR5NaJLZI2SKCrDBV8+cP4oHaLlw5doNLOfFOzCVO0IxZGAlzD+Q1EEjQM020KtpFCROGapgpn91YiVnsmJpCMCCZoWwCDuP1rHSNtmmuliSqkzJvWxb13eD4g/Rr+diMt6BYbMbYrtS0seWk5typxfJNb7CYwKpoGMekZHYQPGPRff+rXiZZUw==
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com;
 s=arcselector10001;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1;
 bh=pypoFiR1BMj15sMVCp71mL6bnFBZjzvQYbP1C4FeNSo=;
 b=vt3hsTKzo+ueCge9Fb5TZiCr/BWUhsh4hLjuZSE3ZICF1mAw/0g1w2rziRvdBwT3crnSfB0vg4kaT266j6p4UeYACsonZoQz1qwCXRl0H8LStRDiCuurtSfPmQzxySTKvqyzsP5Qyfl57Z4tuvPql/lzgbxd8kCplC0ZV3kvPTAs8LQeOJUMnEgKfTrUZkTtLKz2Qh9fCHcCOVpoDg3MPqEoxuPAjGe6VqqnNTChy8XtLnpa27r2fd53BGo6Mzp5W4KGVU66iSRwmzJUlaXoLpEbdiO/a+Yo3pplxERY5KTnf8UEmApFU0PPil9TcQBaW5sd8Y8SXl164DWXhYZttw==
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=pypoFiR1BMj15sMVCp71mL6bnFBZjzvQYbP1C4FeNSo=;
 b=f0+ufB+JhrZ9cnz2cskytCV1AGT262bmlZccckaQ3XtERh9UoWH3Z6oDrRGxAhlczPxTNcwmCEmptkBLTMbGUC6p8XaM9dx9A4OMPoDtSEqbgmZYlrgdZHzRXXQFpSk9+/D2uuluQXHG7B3toUKx848HmFZ/zgVxjDIGRdff8VI=
Authentication-Results: dkim=none (message not signed)
 header.d=none;dmarc=none action=none header.from=citrix.com;
Date: Wed, 8 Apr 2026 12:22:30 +0200
From: Roger Pau =?utf-8?B?TW9ubsOp?= <roger.pau@citrix.com>
To: Jan Beulich <jbeulich@suse.com>
Cc: Frediano Ziglio <freddy77@gmail.com>,
	Frediano Ziglio <frediano.ziglio@cloud.com>,
	Andrew Cooper <andrew.cooper3@citrix.com>,
	xen-devel@lists.xenproject.org
Subject: Re: [PATCH v2] xen/x86: Check supported features even for PVH dom0
Message-ID: <adYsZsPP8HOLeY1g@wifi-campus-l-10-3-197-236.u-ga.fr>
References: <20260402155512.80170-1-frediano.ziglio@cloud.com>
 <eb6e0314-423b-412e-af29-c423463d78dd@suse.com>
Content-Type: text/plain; charset=utf-8
Content-Disposition: inline
In-Reply-To: <eb6e0314-423b-412e-af29-c423463d78dd@suse.com>
X-ClientProxiedBy: MA3P292CA0033.ESPP292.PROD.OUTLOOK.COM
 (2603:10a6:250:46::11) To CH7PR03MB7860.namprd03.prod.outlook.com
 (2603:10b6:610:24e::14)
MIME-Version: 1.0
X-MS-PublicTrafficType: Email
X-MS-TrafficTypeDiagnostic: CH7PR03MB7860:EE_|DS0PR03MB7773:EE_
X-MS-Office365-Filtering-Correlation-Id: 16350384-0cec-4950-2c12-08de9558c1f8
X-MS-Exchange-SenderADCheck: 1
X-MS-Exchange-AntiSpam-Relay: 0
X-Microsoft-Antispam:
	BCL:0;ARA:13230040|1800799024|376014|366016|56012099003|18002099003|22082099003;
X-Microsoft-Antispam-Message-Info:
	t/smzvvdxkebFJj2NcApirnu0SZ0r5G+7TK49jB28qkjAoFTnqnGmj4tlgHkccpQLZbj+ZZdt4EVwBantIIDKm+kfRjHb1mQku2iq369QLpHbkoO5N2QMnLgPPWHI1tI9ACDMiIbPTTqu5CEShYfd+NuQ16lhGezTf0C0od7LJ2gW17Zdk1BFXB40VmrKy5GM+2EON5hf85PXyBr+oYOWknv5Pr0WZicwYk0H4BtdvGEc5CYeAUjtejrmcFNwS3T3+VUFgm+/oU+rUny+8H5ouT3Zvd8M7NL17ZKEx8HPPVAGL0HoK9Pa/bDaehORmMPhS0px7MMMv///D+WcAQo3adV+j6Y3UeLxEiBiyIyEs3yVfN/6J65/WaKaLTpCuI7HupAUuiydZBLUoxWfteE0DIdaf8yZ/SXQlEQQ8XBvC3d8BJyaABNTuKVeKJQra8ZTIDCfmWIJYMRG93ldAqUieDv61orYV8pcWhhoRrkHYh0T72KGqcRcpUZ42whv7hFAvgwZmUtLuf2KrSjvwG1MVcwdA3LsPxquNVHrW+FSE+fLjpV+ZW3Xnq2FNhtdED/aHLsk/PkztP0uxJpNKeFsQBnjtgNxva4iZYGqbEpT3Jbuc7oIomLd+IgctWZ1XyHQmZMALgo+OXw07HQPOnUofmwnIPasTtKEcAGYAoiVO53EUIcrYpghxzpZc28WpgiIwrlAOExdnmlH85nPP8koNL7JUd8QEeP7aINrTg7H5c=
X-Forefront-Antispam-Report:
	CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:CH7PR03MB7860.namprd03.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(1800799024)(376014)(366016)(56012099003)(18002099003)(22082099003);DIR:OUT;SFP:1101;
X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1
X-MS-Exchange-AntiSpam-MessageData-0:
	=?utf-8?B?dkNSeWdxZ1JiRXRGN0dqbUVGcitGT1RRWVZ1ODk1ZzF1YnZYTUVLSk91NDFE?=
 =?utf-8?B?U1ZTaTh2L1FLdFNzcUc4Yk93bHpFTkJwWk5VWTM1TkJ5eEVzeUFXb21iQmJZ?=
 =?utf-8?B?N1Z6Tyt1OVJCNjZRT1lvTnJMSnIrbGErTTJ1Tkd5TDlpaTIwZFEybE0vdVds?=
 =?utf-8?B?S0Ira1Z3bDROV1VFVFNIL2I2US9oOWdwWlpoK0tDT0M1RWpGMkpUNy8yUndj?=
 =?utf-8?B?WDVvcnh5RXNZY25PWVBmSkpQTERBbUtxOTltRlFEMzE5WHE1NDdNckIvSVBm?=
 =?utf-8?B?UzR3cTdpc3h5aDRQTzdxMmNDNFdlVmx2MTFRUEZRUmVQL1Z4ZHdHZDRaaTI0?=
 =?utf-8?B?c0hiMjlmTkwxM2hBRllKVlBCU1JNNW0xQTNTcW10L05mTVRVeHlXZnBrWWV3?=
 =?utf-8?B?VzVtSUxaYzQxT0dMQXNwUFNWc2h5bDh6bk1zQXdLQ3pyYTNLWVB5SHBYL2hW?=
 =?utf-8?B?aGVxcEU0YXZFWUtXMWdFK2dtSE1qVGZtcm1rbVVJWEJmaElHMkNvbXBzazZy?=
 =?utf-8?B?U0V5a1BQK3RTVjBJdTBReFN2cGUxajlMdVdLa0FZWEo1WUx1TWZ3Um5mRm50?=
 =?utf-8?B?UXI0Q1M1TG9jZm9Va29Ed1F0eWp3S0xTU01WVEdkRWNLYStIMzA1UVRKUTcz?=
 =?utf-8?B?dGJwVFZHL3JyUXBrWVBoNTNFbGZlNFlqTDljZTBhV01OSHlHcG5naDhuWXNO?=
 =?utf-8?B?U2FrNGZpUVY2QlNjYVYxUHpwMENYSmEzTkJ6RWZhMlV4RHlhZDNkV290VjhK?=
 =?utf-8?B?cWR3SVBzOTNXYk9yS3JVNG43WngwTDEybGdMWmVWVnllc0xWdlpvU2FyOFVv?=
 =?utf-8?B?MWVJNHdneUthd3VrelZCT3hkWXdUcFoydXl2UWk3WThtMHdUNTY4TTN5NmZI?=
 =?utf-8?B?aU5DMmg3NE9QZXZkM1lHZlcyWWRnd3JTalNRdWVOby9ORzRkVmVNRG9uaDhv?=
 =?utf-8?B?UFdYcm4xRTk5aDZNRUZqajJWZzlueFpoVUd1MmZTZmRYeWZEeTNlWGFXbXI0?=
 =?utf-8?B?SGRKajhNZFdsak4vVFdiZlpwY2FDU0tEMnFJcmFoSU5uc0RqRTB0MFRlZFdr?=
 =?utf-8?B?QnQ0UHRKamVtTTUrY05HZ0VlUUtQOUJOM2ppQWNuaE5qWk1aL2xJekdrMlRh?=
 =?utf-8?B?RHpqSXNINWxtQVlwNzlTOFdTckszcWRiVEVXdjFpR3pLcjROYlhnWWxNdGp3?=
 =?utf-8?B?TGNSa2ZkblhLeHBlR2VQeW5DcjJYQWt5bmo3dlB4QWNKZTZvT3M3NUxQUWxz?=
 =?utf-8?B?enJpOGE5N245UWdOWGE2RzBnVTlXRWxUb2tmT21XK3R2UzBSZ2xrV3Y0Q3Jn?=
 =?utf-8?B?d2I5YWlUdTJScHdFNDdrM2ZJYjNiQUNHS3p2SU5VN3lDeXFKUWdHWnBJc2JJ?=
 =?utf-8?B?cXVlYVdmWHVqRmhPS2djZWpzRXpxaURhODg5cXZZSEN5cFV5SmU3VFdJOWcw?=
 =?utf-8?B?dHBqTlVNWGZCS0RZUG1jRFFxb0o3TFN5ZG55UUlWT1ZZSDFsN2xJd1VKd3RL?=
 =?utf-8?B?RjNOWit3amowKzRJd29VUUFGSWpvQVpBdzBFNkRxeEphajg2VFQwMGVjZWY0?=
 =?utf-8?B?VHVLU3BZQy9zVTBlMWlzZnFGeUVYVHBwZWVzVFBZeGZIYmhXbUFQeUV4Z0Vt?=
 =?utf-8?B?Yy9Dbnp6U0tsbkI4RFlXYnBNbjdob2lGTXBidHd5Ky84VnBnTXY4VFRtTGJL?=
 =?utf-8?B?MHU0RjNPMTRRZEo1OHdCK01NUzZaTld1K3VTa044YU1CQVdid0I5ZXRNemwz?=
 =?utf-8?B?T3cyVlhvdzZwN1d1RU1sRmdDY3ZxVXB2aThOUkUwVnIyOVo0cWRkenQreW1o?=
 =?utf-8?B?QXA3OXE0NFZkRG5vTmlkNDd2R245a1JHOXpEdDdRWnBLSVA1VTJTYXNiMFlV?=
 =?utf-8?B?d2EveVV1Wm12M2J1MzZjT3ZJenR3c3F6RjRTcXNUUW5NL1hUQkZQSFc2WkdQ?=
 =?utf-8?B?eTd2cHhxVFZYaVJEaGxUU2VTS0U3Rmc2dXozaTZveEszU0EwSDAxNzVVaHhV?=
 =?utf-8?B?Tm1iVThzR203RERNVU14VW9aeldoQmRZaVNTUHM3WG5KcDlQOTVTWXNUZXMy?=
 =?utf-8?B?emtLSHllK3VUUVVmNkxlWE9uU0p6WWJ5YzJaQng1Vml0YjVrUkYwVjRocnNl?=
 =?utf-8?B?ZHFteWhmZjVvTnFHcW5WTFhFWXZFRHpuU0M0WmJRRlo2RGRBSm81QUZEdjJ0?=
 =?utf-8?B?SS9YZk1wU2gwZ1R3Qlk0dzJ5L0pIbEdqUm11bFE0c1VWODBHdSs3SFBzcjlG?=
 =?utf-8?B?Z2QzdHVKaUJvMXN6ODlKaHArL2RENlZta2lIcU1JTTFjYkh6Ums0VXhjdk9l?=
 =?utf-8?B?SDVIdms4c09YekFKeUFUV0NIMTBIdC9GdEpjek1MYnVzWUhRbGMxdz09?=
X-OriginatorOrg: citrix.com
X-MS-Exchange-CrossTenant-Network-Message-Id: 16350384-0cec-4950-2c12-08de9558c1f8
X-MS-Exchange-CrossTenant-AuthSource: CH7PR03MB7860.namprd03.prod.outlook.com
X-MS-Exchange-CrossTenant-AuthAs: Internal
X-MS-Exchange-CrossTenant-OriginalArrivalTime: 08 Apr 2026 10:22:37.9518
 (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: Olu10yMaudjdanPpHDZUCHMClD4L7AoQa7Rl4na/tWHtaKVURfbjUJjkmHJerkDfXhQw4RZ4A6oqoIxUxdEZnw==
X-MS-Exchange-Transport-CrossTenantHeadersStamped: DS0PR03MB7773
X-purgate-ID: tlsNG-bad1c0/1775643761-2EF4E152-A65E2D12/0/0
X-purgate-type: clean
X-purgate-size: 1325

On Tue, Apr 07, 2026 at 08:56:03AM +0200, Jan Beulich wrote:
> On 02.04.2026 17:55, Frediano Ziglio wrote:
> > --- a/xen/arch/x86/dom0_build.c
> > +++ b/xen/arch/x86/dom0_build.c
> > @@ -320,6 +320,20 @@ unsigned long __init dom0_paging_pages(const struct domain *d,
> >      return DIV_ROUND_UP(memkb, 1024) << (20 - PAGE_SHIFT);
> >  }
> >  
> > +int __init dom0_check_parms(
> 
> I understand the "dom0" in the name is owing to the filename and perhaps
> adjacent other similar functions, yet ...
> 
> > +    struct domain *d, const struct elf_dom_parms *parms)
> > +{
> > +    if ( parms->elf_notes[XEN_ELFNOTE_SUPPORTED_FEATURES].type == XEN_ENT_NONE )
> > +        return 0;
> > +
> > +    if ( is_hardware_domain(d) && !test_bit(XENFEAT_dom0, parms->f_supported) )
> 
> ... if this was about solely Dom0, no is_hardware_domain() should be present
> here. Maybe s/dom0/initdom/ ?

I think the naming of the feature flag is not very useful TBH.  What
is the kernel really advertising when setting XENFEAT_dom0?  I've
assumed it was the capability of running as a hardware domain, which
requires a different set of functionality inside of the kernel to deal
with hardware devices.

We might want to take this opportunity to clarify in the headers what
XENFEAT_dom0 means.

Thanks, Roger.


From xen-devel-bounces@lists.xenproject.org Wed Apr 08 10:22:51 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 08 Apr 2026 10:22:51 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1275637.1561410 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wAQ3f-0001yq-4X; Wed, 08 Apr 2026 10:22:51 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1275637.1561410; Wed, 08 Apr 2026 10:22: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 1wAQ3f-0001yh-18; Wed, 08 Apr 2026 10:22:51 +0000
Received: by outflank-mailman (input) for mailman id 1275637;
 Wed, 08 Apr 2026 10:22:49 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <jbeulich@suse.com>) id 1wAQ3d-0001xm-Go
 for xen-devel@lists.xenproject.org; Wed, 08 Apr 2026 10:22:49 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wAQ3c-005T45-Sk
 for xen-devel@lists.xenproject.org; Wed, 08 Apr 2026 12:22:48 +0200
Received: from [10.42.69.7] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <jbeulich@suse.com>)
 id 69d62c63-bab6-0a2a0a5309dd-0a2a4507da42-42
 for <xen-devel@lists.xenproject.org>; Wed, 08 Apr 2026 12:22:47 +0200
Received: from [209.85.221.46] (helo=mail-wr1-f46.google.com)
 by tlsNG-ef75cf.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.0)
 (envelope-from <jbeulich@suse.com>)
 id 69d62c77-ba2d-0a2a45070019-d155dd2ea883-3
 for <xen-devel@lists.xenproject.org>; Wed, 08 Apr 2026 12:22:47 +0200
Received: by mail-wr1-f46.google.com with SMTP id
 ffacd0b85a97d-43b949bf4easo446467f8f.0
 for <xen-devel@lists.xenproject.org>; Wed, 08 Apr 2026 03:22:47 -0700 (PDT)
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-43d1e4d2738sm58822957f8f.24.2026.04.08.03.22.46
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Wed, 08 Apr 2026 03:22:46 -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=google header.d=suse.com header.i="@suse.com" header.h="Content-Transfer-Encoding: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=1775643767; x=1776248567; darn=lists.xenproject.org;
        h=content-transfer-encoding:autocrypt:subject:from:cc:to
         :content-language:user-agent:mime-version:date:message-id:from:to:cc
         :subject:date:message-id:reply-to;
        bh=TZmNlT8gtLigxUcsTvdKsH1W5BobWtUKsdpbwharDyg=;
        b=XDdnSCgK0yTgWagz0utILjRRw8w7TN3jPfxuhQBL5+Foo9ypuU7OlpmYF69o+wJrqg
         LQ6Bpe1DeOOstS3FTfWPbP4afFNgA5wh2qNF6fIkBA8KtJCB4QPGrF10yP23Gp9cIpaT
         Pl6wMXTRl/6+rOODAymFUaEOvRR/SkARgQWtYsht7bBAGOni52L1t2fkMx0KSmpz/o9C
         dp6hb+LiTdJB/OuwSnyOMm3iE54Jrt04i8Y0owsxMSvhPlDDmJt7xbwnDOgPqDIzIMqj
         9PJc1Y3eywmG8MmXueExXs/oV6e2BPvL0P/haTlSGDYc2Lc4vg5f1G32rtuKo3Dzg/Qj
         VhyQ==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20251104; t=1775643767; x=1776248567;
        h=content-transfer-encoding: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;
        bh=TZmNlT8gtLigxUcsTvdKsH1W5BobWtUKsdpbwharDyg=;
        b=L2vLsJhR/VE2eMDr8qJYmTEB5H5wVkVP6E+cB3pqQvIJKcPWx/MtZ8RsIYPGf5xk6R
         0pzO7FJrldIY1VOWOlgz3FxZvXkHt2dXiWrL7q4ENfu6lReyJs/EeflcxxbB5VJrDRwC
         yOjK7bVQzwh2tddtlja/r4iaNsyZBXKUJ9gcMy2kRSedp4X7mImeXGCtus+nPj9r/TRE
         ML5MC9com7CgqwpG1y+ku5vHD9ek3BUNaJtvENHibDCexDZMeKqGh5pbXJfB/bwQ/Vj/
         CklSnaVenr+D9mjxet+YXHIksmjwYR0gDCqV69PF3Y0VeDAIKDVspQd9uqhHL+PnRwon
         lZbQ==
X-Gm-Message-State: AOJu0Yyc5oS/b+mxZ062gs9GSNRrnqcLAZB/LxfA9pR8H0gKNeHT2VZq
	dXEUwwmFodC9/h2PHiZc6vOnh44ctTV8sD5U9cEK1pKmsGjPawTGNI+Pjg00qb9dVW/mhV99PWr
	qDYCZag==
X-Gm-Gg: AeBDieuzKv1JAjffvMIWwW92vRD422x4iQQL9AaTN+vl6/7AIBPvVee9s9ixB2qTJyf
	IAJIin665cMX61wAINBQOwtSgTccOBOIg2EixqLOymPx/J+zITA/f1aJ7qtFZOQeyMrisq4B9s+
	tYafHPywP3icqByvzwKypp25TkH0Hbnbw4yOiIAE2NtxCSUooLyBIfLlwqiQQ8BbEnf5BNzez/d
	Cd3oBg3t6YkAnkrWGn+eD/INlEvYmBDIFIE/DIOeZCexLY4wAggKNxpAVcK4YhwYr8TkI1RFQWG
	+0MY6LtNoY/x7tV1DCjzoh0A2KvEsYsLWknrQlhDCkvHKCkNH6nAAy6Zljv8TJl/kRGnt1wrx3/
	wavv2CIm48p8/yjHoftIT+B53eZEIjjl1T7a+5eSbrY8b+efp4qhWHUGhcfqbxFD08mxZk2aNVp
	me4C5JuuuhljzAYvMF17fRR4SOqclNNay/e5FsTkV8GikOy8Hjju59ADDSqQUttXcFciZn2D2RK
	AL1cFPUzivDAUE=
X-Received: by 2002:a05:6000:20c3:b0:43c:f5d0:4f6a with SMTP id ffacd0b85a97d-43d2124d3f7mr23454417f8f.21.1775643767045;
        Wed, 08 Apr 2026 03:22:47 -0700 (PDT)
Message-ID: <a902e1bb-d51e-4889-a4af-505fd19e63d0@suse.com>
Date: Wed, 8 Apr 2026 12:22:45 +0200
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>,
 =?UTF-8?Q?Roger_Pau_Monn=C3=A9?= <roger.pau@citrix.com>,
 Teddy Astie <teddy.astie@vates.tech>
From: Jan Beulich <jbeulich@suse.com>
Subject: [PATCH v10] x86emul: support LKGS
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/1775643767-1135C41E-FD4B9E4F/0/0
X-purgate-type: clean
X-purgate-size: 9390

Provide support for this insn, which is a prereq to FRED. CPUID-wise,
while its and FRED's enumerators were already introduced, their dependency
still needs adding.

While adding a testcase, also add a SWAPGS one. In order to not affect
the behavior of pre-existing tests, install write_{segment,msr} hooks
only transiently.

Signed-off-by: Jan Beulich <jbeulich@suse.com>
---
For PV save_segments() would need adjustment, but the insn being
restricted to ring 0 means PV guests can't use it anyway (unless we
wanted to emulate it as another privileged insn).

I've also dropped the test harness read_segment() change. It generally
would be correct to have, but isn't needed anymore with neither SWAPGS
nor LKGS handling using the hook.
---
v10: Drop FRED dependency on LKGS. Replace "best effort unwind". Avoid
     ->read_segment(). Re-base.
v9: Re-base.
v8: Re-base.
v6: Use MSR constants in test harness. S->s in cpufeatureset.h. Add
    NMI_SRC feature bits. Re-base.
v5: Re-base.
v3: Add dependency on LM. Re-base.
v2: Use X86_EXC_*. Add comments.

--- a/tools/tests/x86_emulator/predicates.c
+++ b/tools/tests/x86_emulator/predicates.c
@@ -326,6 +326,7 @@ static const struct {
     { { 0x00, 0x18 }, { 2, 2 }, T, R }, /* ltr */
     { { 0x00, 0x20 }, { 2, 2 }, T, R }, /* verr */
     { { 0x00, 0x28 }, { 2, 2 }, T, R }, /* verw */
+    { { 0x00, 0x30 }, { 0, 2 }, T, R, pfx_f2 }, /* lkgs */
     { { 0x01, 0x00 }, { 2, 2 }, F, W }, /* sgdt */
     { { 0x01, 0x08 }, { 2, 2 }, F, W }, /* sidt */
     { { 0x01, 0x10 }, { 2, 2 }, F, R }, /* lgdt */
--- a/tools/tests/x86_emulator/test_x86_emulator.c
+++ b/tools/tests/x86_emulator/test_x86_emulator.c
@@ -673,6 +673,10 @@ static int blk(
     return x86_emul_blk((void *)offset, p_data, bytes, eflags, state, ctxt);
 }
 
+#ifdef __x86_64__
+static unsigned long gs_base, gs_base_shadow;
+#endif
+
 static int read_segment(
     enum x86_segment seg,
     struct segment_register *reg,
@@ -682,8 +686,25 @@ static int read_segment(
         return X86EMUL_UNHANDLEABLE;
     memset(reg, 0, sizeof(*reg));
     reg->p = 1;
+
+    return X86EMUL_OKAY;
+}
+
+#ifdef __x86_64__
+static int write_segment(
+    enum x86_segment seg,
+    const struct segment_register *reg,
+    struct x86_emulate_ctxt *ctxt)
+{
+    if ( !is_x86_user_segment(seg) )
+        return X86EMUL_UNHANDLEABLE;
+
+    if ( seg == x86_seg_gs )
+        gs_base = reg->base;
+
     return X86EMUL_OKAY;
 }
+#endif
 
 static int read_msr(
     unsigned int reg,
@@ -696,6 +717,20 @@ static int read_msr(
         *val = ctxt->addr_size > 32 ? EFER_LME | EFER_LMA : 0;
         return X86EMUL_OKAY;
 
+#ifdef __x86_64__
+    case MSR_GS_BASE:
+        if ( ctxt->addr_size < 64 )
+            break;
+        *val = gs_base;
+        return X86EMUL_OKAY;
+
+    case MSR_SHADOW_GS_BASE:
+        if ( ctxt->addr_size < 64 )
+            break;
+        *val = gs_base_shadow;
+        return X86EMUL_OKAY;
+#endif
+
     case MSR_TSC_AUX:
 #define TSC_AUX_VALUE 0xCACACACA
         *val = TSC_AUX_VALUE;
@@ -705,6 +740,32 @@ static int read_msr(
     return X86EMUL_UNHANDLEABLE;
 }
 
+#ifdef __x86_64__
+static int write_msr(
+    unsigned int reg,
+    uint64_t val,
+    struct x86_emulate_ctxt *ctxt,
+    bool explicit)
+{
+    switch ( reg )
+    {
+    case MSR_GS_BASE:
+        if ( ctxt->addr_size < 64 || !is_canonical_address(val) )
+            break;
+        gs_base = val;
+        return X86EMUL_OKAY;
+
+    case MSR_SHADOW_GS_BASE:
+        if ( ctxt->addr_size < 64 || !is_canonical_address(val) )
+            break;
+        gs_base_shadow = val;
+        return X86EMUL_OKAY;
+    }
+
+    return X86EMUL_UNHANDLEABLE;
+}
+#endif
+
 #define INVPCID_ADDR 0x12345678
 #define INVPCID_PCID 0x123
 
@@ -1339,6 +1400,41 @@ int main(int argc, char **argv)
         printf("%u bytes read - ", bytes_read);
         goto fail;
     }
+    printf("okay\n");
+
+    emulops.write_segment = write_segment;
+    emulops.write_msr     = write_msr;
+
+    printf("%-40s", "Testing swapgs...");
+    instr[0] = 0x0f; instr[1] = 0x01; instr[2] = 0xf8;
+    regs.eip = (unsigned long)&instr[0];
+    gs_base = 0xffffeeeecccc8888UL;
+    gs_base_shadow = 0x0000111122224444UL;
+    rc = x86_emulate(&ctxt, &emulops);
+    if ( (rc != X86EMUL_OKAY) ||
+         (regs.eip != (unsigned long)&instr[3]) ||
+         (gs_base != 0x0000111122224444UL) ||
+         (gs_base_shadow != 0xffffeeeecccc8888UL) )
+        goto fail;
+    printf("okay\n");
+
+    printf("%-40s", "Testing lkgs 2(%rdx)...");
+    instr[0] = 0xf2; instr[1] = 0x0f; instr[2] = 0x00; instr[3] = 0x72; instr[4] = 0x02;
+    regs.eip = (unsigned long)&instr[0];
+    regs.edx = (unsigned long)res;
+    res[0]   = 0x00004444;
+    res[1]   = 0x8888cccc;
+    i = cpu_policy.extd.nscb; cpu_policy.extd.nscb = true; /* for AMD */
+    rc = x86_emulate(&ctxt, &emulops);
+    if ( (rc != X86EMUL_OKAY) ||
+         (regs.eip != (unsigned long)&instr[5]) ||
+         (gs_base != 0x0000111122224444UL) ||
+         gs_base_shadow )
+        goto fail;
+
+    cpu_policy.extd.nscb = i;
+    emulops.write_segment = NULL;
+    emulops.write_msr     = NULL;
 #endif
     printf("okay\n");
 
--- a/tools/tests/x86_emulator/x86-emulate.c
+++ b/tools/tests/x86_emulator/x86-emulate.c
@@ -85,6 +85,7 @@ bool emul_test_init(void)
     cpu_policy.feat.invpcid = true;
     cpu_policy.feat.adx = true;
     cpu_policy.feat.rdpid = true;
+    cpu_policy.feat.lkgs = true;
     cpu_policy.feat.wrmsrns = true;
     cpu_policy.extd.clzero = true;
 
--- a/xen/arch/x86/x86_emulate/decode.c
+++ b/xen/arch/x86/x86_emulate/decode.c
@@ -744,8 +744,12 @@ decode_twobyte(struct x86_emulate_state
         case 0:
             s->desc |= DstMem | SrcImplicit | Mov;
             break;
+        case 6:
+            if ( !(s->modrm_reg & 1) && mode_64bit() )
+            {
         case 2: case 4:
-            s->desc |= SrcMem16;
+                s->desc |= SrcMem16;
+            }
             break;
         }
         break;
--- a/xen/arch/x86/x86_emulate/private.h
+++ b/xen/arch/x86/x86_emulate/private.h
@@ -608,6 +608,7 @@ amd_like(const struct x86_emulate_ctxt *
 #define vcpu_has_avx_vnni()    (ctxt->cpuid->feat.avx_vnni)
 #define vcpu_has_avx512_bf16() (ctxt->cpuid->feat.avx512_bf16)
 #define vcpu_has_cmpccxadd()   (ctxt->cpuid->feat.cmpccxadd)
+#define vcpu_has_lkgs()        (ctxt->cpuid->feat.lkgs)
 #define vcpu_has_wrmsrns()     (ctxt->cpuid->feat.wrmsrns)
 #define vcpu_has_avx_ifma()    (ctxt->cpuid->feat.avx_ifma)
 #define vcpu_has_avx_vnni_int8() (ctxt->cpuid->feat.avx_vnni_int8)
--- a/xen/arch/x86/x86_emulate/x86_emulate.c
+++ b/xen/arch/x86/x86_emulate/x86_emulate.c
@@ -2899,8 +2899,37 @@ x86_emulate(
                 break;
             }
             break;
-        default:
-            generate_exception_if(true, X86_EXC_UD);
+
+        case 6: /* lkgs */
+            generate_exception_if((modrm_reg & 1) || vex.pfx != vex_f2,
+                                  X86_EXC_UD);
+            generate_exception_if(!mode_64bit() || !mode_ring0(), X86_EXC_UD);
+            vcpu_must_have(lkgs);
+            fail_if(!ops->read_msr || !ops->write_segment || !ops->write_msr);
+            if ( (rc = ops->read_msr(MSR_SHADOW_GS_BASE, &msr_val,
+                                     ctxt)) != X86EMUL_OKAY ||
+                 (rc = ops->read_msr(MSR_GS_BASE, &sreg.base,
+                                         ctxt)) != X86EMUL_OKAY )
+                goto done;
+            dst.orig_val = sreg.base; /* Preserve full GS Base. */
+            if ( (rc = protmode_load_seg(x86_seg_gs, src.val, false, &sreg,
+                                         ctxt, ops)) != X86EMUL_OKAY )
+                goto done;
+            /* Write (32-bit) base into SHADOW_GS. */
+            if ( (rc = ops->write_msr(MSR_SHADOW_GS_BASE, sreg.base,
+                                      ctxt, false)) != X86EMUL_OKAY ||
+                 (sreg.base = dst.orig_val, /* Reinstate full GS Base. */
+                  (rc = ops->write_segment(x86_seg_gs, &sreg,
+                                           ctxt)) != X86EMUL_OKAY) )
+            {
+                /*
+                 * In real hardware, access to the registers cannot fail.  It
+                 * is an error in Xen if the writes fail.
+                 */
+                ASSERT_UNREACHABLE();
+                x86_emul_reset_event(ctxt);
+                generate_exception(X86_EXC_DF, 0);
+            }
             break;
         }
         break;
--- a/xen/tools/gen-cpuid.py
+++ b/xen/tools/gen-cpuid.py
@@ -282,7 +282,8 @@ def crunch_numbers(state):
         # superpages, PCID and PKU are only available in 4 level paging.
         # NO_LMSL indicates the absense of Long Mode Segment Limits, which
         # have been dropped in hardware.
-        LM: [CX16, PCID, LAHF_LM, PAGE1GB, PKU, NO_LMSL, AMX_TILE, CMPCCXADD],
+        LM: [CX16, PCID, LAHF_LM, PAGE1GB, PKU, NO_LMSL, AMX_TILE, CMPCCXADD,
+             LKGS],
 
         # AMD K6-2+ and K6-III processors shipped with 3DNow+, beyond the
         # standard 3DNow in the earlier K6 processors.


From xen-devel-bounces@lists.xenproject.org Wed Apr 08 10:30:31 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 08 Apr 2026 10:30:31 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1275659.1561418 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wAQAz-0004BZ-Ud; Wed, 08 Apr 2026 10:30:25 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1275659.1561418; Wed, 08 Apr 2026 10: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 1wAQAz-0004BS-Rd; Wed, 08 Apr 2026 10:30:25 +0000
Received: by outflank-mailman (input) for mailman id 1275659;
 Wed, 08 Apr 2026 10:30:24 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <jbeulich@suse.com>) id 1wAQAx-0004BM-SZ
 for xen-devel@lists.xenproject.org; Wed, 08 Apr 2026 10:30:23 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wAQAv-005Dp1-M6
 for xen-devel@lists.xenproject.org; Wed, 08 Apr 2026 12:30:23 +0200
Received: from [10.42.69.2] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <jbeulich@suse.com>)
 id 69d62e39-2eae-0a2a0a5409dd-0a2a4502d408-40
 for <xen-devel@lists.xenproject.org>; Wed, 08 Apr 2026 12:30:23 +0200
Received: from [209.85.221.50] (helo=mail-wr1-f50.google.com)
 by tlsNG-720697.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.0)
 (envelope-from <jbeulich@suse.com>)
 id 69d62e3e-42fa-0a2a45020019-d155dd32bd2c-3
 for <xen-devel@lists.xenproject.org>; Wed, 08 Apr 2026 12:30:22 +0200
Received: by mail-wr1-f50.google.com with SMTP id
 ffacd0b85a97d-43cfd96354aso3747033f8f.1
 for <xen-devel@lists.xenproject.org>; Wed, 08 Apr 2026 03:30:22 -0700 (PDT)
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-43d1e4d27a8sm58069456f8f.17.2026.04.08.03.30.21
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Wed, 08 Apr 2026 03:30:21 -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=google header.d=suse.com header.i="@suse.com" header.h="Content-Transfer-Encoding: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=1775644222; x=1776249022; darn=lists.xenproject.org;
        h=content-transfer-encoding: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;
        bh=Y2Pf94YWijPYUnVaNF1+VESWUoq9N5V67EaNnKmtQhk=;
        b=cCdaPU4aP+IISF9JH8U9nEiCU4Wogr1VMXQ0HenuA69hL3OkuvSMT0ydmhHk5dGxNB
         4ft/s8joiSppHziDj9QzA5pv90FG5KMZZ3lE51UfTrzlsSK4QW1eVQEhQwCVCYMT3+EO
         yn4hlHINzVujFlShQdZV4ihyIXBXg+ReawPJnuJTtrSPnqBcp/WfURODu6lNiQg8uDW9
         9ntINxzYIIBQ8r6Vu6a3e+nBtvnJ/RYOw1GXQYcdvLFFe6ZMmLTgdZEi/VN+DntWTgYp
         FuxvcLiBhFwvVYB3w4F+ueuNe0Q753DY0J+IuNPMvnIH2voP3IcF7cgGMTjbTUiR0/UR
         Q86Q==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20251104; t=1775644222; x=1776249022;
        h=content-transfer-encoding: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;
        bh=Y2Pf94YWijPYUnVaNF1+VESWUoq9N5V67EaNnKmtQhk=;
        b=CXOZc8bs0uC0Mi3lukUblUIrwrACU8Qc1D+GR2bW+l7KzJ2TTaq0PcrG9ECal71Ojl
         mW7gdIlD73O8roWSFJgEDFx0pcaHVNUf45WP5HiOro0WxD/PbYIdTOWfNtyPMYAegJvX
         G84AQcjJM8nbFjXTVV1zN1OAClV+EBrMNdkFfKS3krAgWNiWNj1qi9IwEWH24gR1RgKR
         h/m64fRSK++dApghiX2ZGOR2PsUFDQgU3j+wyKhtPDbmqK/S3MaP9Eob3XrWRS7EK0xM
         fDWos8Y4+yJlP2N9NPf2PZmTQwMd5RlVZkCWzw1H37iz6IzwbD7dZGd/7XxqH2LAXLff
         vkvA==
X-Forwarded-Encrypted: i=1; AJvYcCVlxGsnE2YKG3KAHj8XqDf+3ymoWFPKFO/y3Jhb8g2+KdFEVkP5uRI4X7SLwHcZlHfPCr3IqBwaeQA=@lists.xenproject.org
X-Gm-Message-State: AOJu0YxV8wRJm5zR2TMw4xGF1qnEih26FcYTnRFlntrbxmASnTZz9eCH
	A9XWHwt/Jh81bT5kiV7vf2MDx9rZtXOItwNu9pyr3GGrIWh8loyH+kEq0hGis+v5oA==
X-Gm-Gg: AeBDievXWWRuEtvr2tLYvHgt21lt96f24BQqNuo7vZwncYaErurEm/pUINRhpMol5UH
	s5ZgNiG5nHUPvgLqbPmzKMZx6g+D4C48JOzwBjTjykFnFOKpYYugy+sMvX05Qq+AS462MHLGkWs
	3dNXZzRSdvwFBc80Ueb3a6iJ9/zOE+dwlOnsiZ6DoK1WIy56a5bs8c8KDj+RMttqxZ+9CwHwGb/
	+l0iVmnI1QRIz/iGtJYVycnxvDdPSP1ugP1i6h2iFcejMWwGm2h5B8pJQHfg45n9HXKunKsx9kE
	Ckz4wPin1IMzM+U3THoEebkS1b7shrbeYtPKg4Mt5FSbr/40A8ntuLAy8PVDyGAXnfg0Ur2KrmB
	7zvcma9qvBOkfLla7iFGc5mr5m+awZiww24MFC4TuBsSW368PwKseaOFzMPjxDmOSfhJ9SbFq4M
	cdoWRqpuMy5lOHeK3fGBmujbsO3bBxgVa1o4iLmZb4kDUHjTj2NbcIikHYDBlnvRSikiHyK59Do
	esvcTkbA0e7z+M=
X-Received: by 2002:a05:6000:1789:b0:43c:f969:2e1 with SMTP id ffacd0b85a97d-43d29276481mr30118680f8f.6.1775644221542;
        Wed, 08 Apr 2026 03:30:21 -0700 (PDT)
Message-ID: <0463fd32-ffac-482b-a58b-d457389e9157@suse.com>
Date: Wed, 8 Apr 2026 12:30:20 +0200
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH v2] xen/x86: Check supported features even for PVH dom0
To: =?UTF-8?Q?Roger_Pau_Monn=C3=A9?= <roger.pau@citrix.com>
Cc: Frediano Ziglio <freddy77@gmail.com>,
 Frediano Ziglio <frediano.ziglio@cloud.com>,
 Andrew Cooper <andrew.cooper3@citrix.com>, xen-devel@lists.xenproject.org
References: <20260402155512.80170-1-frediano.ziglio@cloud.com>
 <eb6e0314-423b-412e-af29-c423463d78dd@suse.com>
 <adYsZsPP8HOLeY1g@wifi-campus-l-10-3-197-236.u-ga.fr>
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: <adYsZsPP8HOLeY1g@wifi-campus-l-10-3-197-236.u-ga.fr>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
X-purgate-ID: tlsNG-720697/1775644222-AED20CD1-3697A19D/0/0
X-purgate-type: clean
X-purgate-size: 1513

On 08.04.2026 12:22, Roger Pau Monné wrote:
> On Tue, Apr 07, 2026 at 08:56:03AM +0200, Jan Beulich wrote:
>> On 02.04.2026 17:55, Frediano Ziglio wrote:
>>> --- a/xen/arch/x86/dom0_build.c
>>> +++ b/xen/arch/x86/dom0_build.c
>>> @@ -320,6 +320,20 @@ unsigned long __init dom0_paging_pages(const struct domain *d,
>>>      return DIV_ROUND_UP(memkb, 1024) << (20 - PAGE_SHIFT);
>>>  }
>>>  
>>> +int __init dom0_check_parms(
>>
>> I understand the "dom0" in the name is owing to the filename and perhaps
>> adjacent other similar functions, yet ...
>>
>>> +    struct domain *d, const struct elf_dom_parms *parms)
>>> +{
>>> +    if ( parms->elf_notes[XEN_ELFNOTE_SUPPORTED_FEATURES].type == XEN_ENT_NONE )
>>> +        return 0;
>>> +
>>> +    if ( is_hardware_domain(d) && !test_bit(XENFEAT_dom0, parms->f_supported) )
>>
>> ... if this was about solely Dom0, no is_hardware_domain() should be present
>> here. Maybe s/dom0/initdom/ ?
> 
> I think the naming of the feature flag is not very useful TBH.  What
> is the kernel really advertising when setting XENFEAT_dom0?  I've
> assumed it was the capability of running as a hardware domain, which
> requires a different set of functionality inside of the kernel to deal
> with hardware devices.

Yes, that's my understanding.

> We might want to take this opportunity to clarify in the headers what
> XENFEAT_dom0 means.

I'm not opposed, yet this isn't directly related to giving the function
an appropriate name.

Jan


From xen-devel-bounces@lists.xenproject.org Wed Apr 08 10:38:27 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 08 Apr 2026 10:38:27 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1275669.1561428 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wAQIb-0004pl-MQ; Wed, 08 Apr 2026 10:38:17 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1275669.1561428; Wed, 08 Apr 2026 10:38: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 1wAQIb-0004pe-Jh; Wed, 08 Apr 2026 10:38:17 +0000
Received: by outflank-mailman (input) for mailman id 1275669;
 Wed, 08 Apr 2026 10:38:16 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <kevin.brodsky@arm.com>) id 1wAQIa-0004pW-05
 for xen-devel@lists.xenproject.org; Wed, 08 Apr 2026 10:38:16 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wAQIV-001bk2-U1
 for xen-devel@lists.xenproject.org; Wed, 08 Apr 2026 12:38:11 +0200
Received: from [10.42.69.12] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <kevin.brodsky@arm.com>)
 id 69d6300c-5cb7-0a2a0a5109dd-0a2a450c9eb8-22
 for <xen-devel@lists.xenproject.org>; Wed, 08 Apr 2026 12:38:11 +0200
Received: from [217.140.110.172] (helo=foss.arm.com)
 by tlsNG-d25034.mxtls.expurgate.net with ESMTP (eXpurgate 4.56.0)
 (envelope-from <kevin.brodsky@arm.com>)
 id 69d63012-f40c-0a2a450c0019-d98c6eacbd6a-1
 for <xen-devel@lists.xenproject.org>; Wed, 08 Apr 2026 12:38:10 +0200
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 E09153161;
 Wed,  8 Apr 2026 03:38:03 -0700 (PDT)
Received: from [10.57.32.84] (unknown [10.57.32.84])
 by usa-sjc-imap-foss1.foss.arm.com (Postfix) with ESMTPSA id 7F14B3F632;
 Wed,  8 Apr 2026 03:38:08 -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=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=1775644689; bh=RbEAcqkGAzhWYYGDpNUfMtQ/+eT1N+kit4vG5ASyXOQ=;
	h=Date:Subject:To:Cc:References:From:In-Reply-To:From;
	b=N+msIMnXHv+BtqjbmyFmNQx/03MDaRVEtDG3zltALUtkZ6HtWowAYb6mAu7FhOGbe
	 kFfe5JkjGOIVvtG2js3xVrqJymQgLWp0h3I89vgh5kitbjMOZa80e5iJiA72gC8ZYl
	 4eUrwpkPNnIEZpEdrGkPDGbiR2CBz6aN+prqL3t0=
Message-ID: <756bcd3b-51c1-4ee4-bb09-4c0c0514764c@arm.com>
Date: Wed, 8 Apr 2026 12:38:04 +0200
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: kernel BUG around vmap/vfree -
 xen_enter_lazy_mmu()/xen_leave_lazy_mmu() - Linux 7.0-rc1
To: =?UTF-8?Q?Marek_Marczykowski-G=C3=B3recki?=
 <marmarek@invisiblethingslab.com>
Cc: =?UTF-8?B?SsO8cmdlbiBHcm/Dnw==?= <jgross@suse.com>,
 Andrew Cooper <andrew.cooper3@citrix.com>,
 xen-devel <xen-devel@lists.xenproject.org>,
 Boris Ostrovsky <boris.ostrovsky@oracle.com>
References: <aaBH3EAchUwKhrUA@mail-itl>
 <c2f973a0-fcb5-48ea-9638-cd73fa3e37ce@citrix.com>
 <c712c06f-7fcf-4876-b2d7-f2b7bc6f0dea@suse.com> <adIuP7-sNwuOid80@mail-itl>
 <5d068304-837d-4aef-b8a7-87c91ccf96b4@arm.com> <adXBwU9KAdb2gNeB@mail-itl>
From: Kevin Brodsky <kevin.brodsky@arm.com>
Content-Language: en-GB
In-Reply-To: <adXBwU9KAdb2gNeB@mail-itl>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
X-purgate-ID: tlsNG-d25034/1775644690-83F42A3D-C100407C/0/0
X-purgate-type: clean
X-purgate-size: 5523

On 08/04/2026 04:47, Marek Marczykowski-Górecki wrote:
>> That may well be the case - it seems that xen_enter_lazy_mmu() is called
>> while already in lazy MMU mode (first splat), and xen_leave_lazy_mmu()
>> is called without being in lazy MMU mode (second splat). I expect this
>> is something specific to Xen, which I didn't get the chance to test.
>>
>> Looking at the series again I don't see anything obviously wrong, but I
>> think the riskiest change is commit 291b3abed657 ("x86/xen: use
>> lazy_mmu_state when context-switching") - worth trying to revert it.
> With that reverted (on top of 7.0-rc6, didn't updated to rc7 yet), I
> still got panic, although might be a bit different one:
>
> [    8.099973] BUG: unable to handle page fault for address: ffff888008000670
> [    8.100004] #PF: supervisor write access in kernel mode
> [    8.100021] #PF: error_code(0x0003) - permissions violation
> [    8.100037] PGD 3a00067 P4D 3a00067 PUD 3a01067 PMD 7cd7063 PTE 8000000008000021
> [    8.100063] Oops: Oops: 0003 [#1] SMP PTI
> [    8.100079] CPU: 0 UID: 0 PID: 226 Comm: kworker/0:2 Not tainted 7.0.0-0.rc6.1.qubes.1001.fc41.x86_64 #1 PREEMPT(full) 
> [    8.100110] Workqueue: events do_free_init
> [    8.100126] RIP: 0010:native_set_pte+0x4/0x10
> [    8.100145] Code: 00 03 c3 cc cc cc cc 66 66 2e 0f 1f 84 00 00 00 00 00 0f 1f 40 00 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 f3 0f 1e fa <48> 89 37 c3 cc cc cc cc 0f 1f 40 00 90 90 90 90 90 90 90 90 90 90
> [    8.100195] RSP: 0018:ffffc90000c97c48 EFLAGS: 00010287
> [    8.100212] RAX: e00c4f3d8b48c03e RBX: ffff888008000670 RCX: e00000000000003e
> [    8.100234] RDX: e00c4f3d8b48c13e RSI: e00c4f3d8b48c03e RDI: ffff888008000670
> [    8.100260] RBP: e00c4f3d8b48c13e R08: 0000000000000000 R09: 0000000000000001
> [    8.100282] R10: 0000003b0c274b73 R11: e00000000000013e R12: ffffc90000c97cf0
> [    8.100304] R13: ffffffffc04ce000 R14: fffc4f3d8b48cfff R15: e00000000000013e
> [    8.100327] FS:  0000000000000000(0000) GS:ffff888094e81000(0000) knlGS:0000000000000000
> [    8.100350] CS:  0010 DS: 0000 ES: 0000 CR0: 0000000080050033
> [    8.100369] CR2: ffff888008000670 CR3: 000000000242e003 CR4: 00000000001706f0
> [    8.100394] Call Trace:
> [    8.100404]  <TASK>
> [    8.100413]  __change_page_attr+0x24f/0x350
> [    8.100429]  __change_page_attr_set_clr+0x61/0xd0
> [    8.100446]  change_page_attr_set_clr+0x103/0x1a0
> [    8.100467]  set_memory_nx+0x39/0x50
> [    8.100481]  __execmem_cache_free+0x35/0xb0
> [    8.100496]  execmem_free+0x9f/0x180
> [    8.100510]  ? nft_chain_nat_exit+0xe70/0xe70 [nft_chain_nat]
> [    8.100531]  do_free_init+0x2e/0x60
> [    8.100545]  process_one_work+0x198/0x390
> [    8.100559]  worker_thread+0x1af/0x320
> [    8.100573]  ? __pfx_worker_thread+0x10/0x10
> [    8.103338]  kthread+0xe3/0x120
> [    8.103355]  ? __pfx_kthread+0x10/0x10
> [    8.103369]  ret_from_fork+0x19e/0x260
> [    8.103384]  ? __pfx_kthread+0x10/0x10
> [    8.103397]  ret_from_fork_asm+0x1a/0x30
> [    8.103412]  </TASK>
> [    8.103421] Modules linked in: xenfs nft_reject_inet nf_reject_ipv4 nf_reject_ipv6 nft_reject nft_redir nft_ct nft_chain_nat nf_nat nf_conntrack nf_defrag_ipv6 nf_defrag_ipv4 nf_tables binfmt_misc intel_rapl_msr intel_rapl_common ghash_clmulni_intel xen_netfront xen_privcmd xen_gntdev xen_gntalloc xen_blkback xen_evtchn fuse loop nfnetlink ip_tables overlay xen_blkfront
> [    8.103529] CR2: ffff888008000670
> [    8.103542] ---[ end trace 0000000000000000 ]---
> [    8.103558] RIP: 0010:native_set_pte+0x4/0x10
> [    8.103576] Code: 00 03 c3 cc cc cc cc 66 66 2e 0f 1f 84 00 00 00 00 00 0f 1f 40 00 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 f3 0f 1e fa <48> 89 37 c3 cc cc cc cc 0f 1f 40 00 90 90 90 90 90 90 90 90 90 90
> [    8.103625] RSP: 0018:ffffc90000c97c48 EFLAGS: 00010287
> [    8.103641] RAX: e00c4f3d8b48c03e RBX: ffff888008000670 RCX: e00000000000003e
> [    8.103664] RDX: e00c4f3d8b48c13e RSI: e00c4f3d8b48c03e RDI: ffff888008000670
> [    8.103686] RBP: e00c4f3d8b48c13e R08: 0000000000000000 R09: 0000000000000001
> [    8.103708] R10: 0000003b0c274b73 R11: e00000000000013e R12: ffffc90000c97cf0
> [    8.103730] R13: ffffffffc04ce000 R14: fffc4f3d8b48cfff R15: e00000000000013e
> [    8.103753] FS:  0000000000000000(0000) GS:ffff888094e81000(0000) knlGS:0000000000000000
> [    8.103775] CS:  0010 DS: 0000 ES: 0000 CR0: 0000000080050033
> [    8.103794] CR2: ffff888008000670 CR3: 000000000242e003 CR4: 00000000001706f0
> [    8.103820] Kernel panic - not syncing: Fatal exception
> [    8.103929] Kernel Offset: disabled

That is probably the same root cause indeed (lazy MMU appearing disabled
in __xet_set_pte() while it should be enabled).

>> If
>> that doesn't help, I'd suggest bisecting the following range:
>> 58852f24f956..291b3abed657
> It will take some time, as the issue doesn't happen every time.

Understood. Here are the commits that are expected to have a functional
effect on x86 (in reverse chronological order):
- 291b3abed657 ("x86/xen: use lazy_mmu_state when context-switching")
- 5ab246749569 ("mm: enable lazy_mmu sections to nest")
- 9273dfaeaca8 ("mm: bail out of lazy_mmu_mode_* in interrupt context")
- 66bdd779d344 ("x86/xen: simplify flush_lazy_mmu()")

Hope that helps, let me know if you have any further information. It
would be worth enabling CONFIG_DEBUG_VM and then checking if any WARN()
splat appears in the log.

- Kevin


From xen-devel-bounces@lists.xenproject.org Wed Apr 08 10:40:15 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 08 Apr 2026 10:40:15 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1275678.1561436 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wAQKN-0006T9-0Q; Wed, 08 Apr 2026 10:40:07 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1275678.1561436; Wed, 08 Apr 2026 10:40: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 1wAQKM-0006T2-U4; Wed, 08 Apr 2026 10:40:06 +0000
Received: by outflank-mailman (input) for mailman id 1275678;
 Wed, 08 Apr 2026 10:40:06 +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 1wAQKM-0006LU-2Z
 for xen-devel@lists.xenproject.org; Wed, 08 Apr 2026 10:40:06 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wAQKL-00F08C-B6
 for xen-devel@lists.xenproject.org; Wed, 08 Apr 2026 12:40:05 +0200
Received: from [10.42.69.5] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <Michal.Orzel@amd.com>)
 id 69d6307f-bab6-0a2a0a5309dd-0a2a4505a034-38
 for <xen-devel@lists.xenproject.org>; Wed, 08 Apr 2026 12:40:04 +0200
Received: from [40.107.208.41]
 (helo=PH0PR06CU001.outbound.protection.outlook.com)
 by tlsNG-c201ff.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.0)
 (envelope-from <Michal.Orzel@amd.com>)
 id 69d6300a-3760-0a2a45050019-286bd029f730-4
 for <xen-devel@lists.xenproject.org>; Wed, 08 Apr 2026 12:38:04 +0200
Received: from BN0PR04CA0150.namprd04.prod.outlook.com (2603:10b6:408:ed::35)
 by IA1PR12MB8333.namprd12.prod.outlook.com (2603:10b6:208:3fe::15)
 with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9769.17; Wed, 8 Apr
 2026 10:37:55 +0000
Received: from BN2PEPF000044A9.namprd04.prod.outlook.com
 (2603:10b6:408:ed:cafe::e6) by BN0PR04CA0150.outlook.office365.com
 (2603:10b6:408:ed::35) with Microsoft SMTP Server (version=TLS1_3,
 cipher=TLS_AES_256_GCM_SHA384) id 15.20.9769.37 via Frontend Transport; Wed,
 8 Apr 2026 10:37:55 +0000
Received: from satlexmb08.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.20.9769.17 via Frontend Transport; Wed, 8 Apr 2026 10:37:55 +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.17; Wed, 8 Apr
 2026 05:36:54 -0500
Received: from [10.71.194.215] (10.180.168.240) by satlexmb07.amd.com
 (10.181.42.216) with Microsoft SMTP Server id 15.2.2562.17 via Frontend
 Transport; Wed, 8 Apr 2026 05:36:53 -0500
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@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=swgpgUlG/Uc+psqIfiGtQukP/Gby+Ui9t6/X8Wabz26cF5TCKIcOXMpjD2525gb4bo6ftrE0RY8nz9TbUaVvpktdTMe5/+0/ycOe6d98D2JvQ616So+Pzmf7d+EZDT9xgWHgHp90ib9VaW8o8yH6SxIEOIcqkSVX7NG6IeDZBaQnXPVIuRwbrAQGPDaHK9/FKJiLolH53wNTd80e+dFQzPNKI8tkCWLeXQXazPUFoY0dPjE+dgwSiqGOnS/DeOoHkiFiRMIvqs1SxN9LuYhoEvvNnN65PuupdwkQc1T09V5X9GoCTUTVvhevMQEyfOuYWTuqwGOv8kSt/zcoPthWUg==
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com;
 s=arcselector10001;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1;
 bh=nNCZYlDWBDu0COOSKEhXAsSATFn51a5xyrmKkW3ks3E=;
 b=nsuAVbeBkLLP9CXkLc0RxclqVC6xwrQVptcxLVCidaQdPtDabl9v6VcMo53iY/WKqA7Rcb6Cw9RpbkRgcyzdGF5tziDyMk+vBt39vkPeXXIR32L8DPxvqNNE6RFLO2Bku5+gzo06fatB7N2pL9gw4+EId0+74grjeGMA5oByaTjzaqk/wvfg75gGgCPJGt9NNHpK1vt+i7yd1V8olD32qRrmKIIT/rZBawItyQ0GACaJ/pUn32qAmd4QTCNF6qCG4nVTPtRH6Z6PKl5MhY1xo9FticiBinGHGckEXHwWctQUJ0qrmMaQstdMkSujQML30IFERKsMRvnWPUkjZ3Y74g==
ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass (sender ip is
 165.204.84.17) smtp.rcpttodomain=bugseng.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=nNCZYlDWBDu0COOSKEhXAsSATFn51a5xyrmKkW3ks3E=;
 b=ZMJ508/KzJ5VGdIyPFxCAryTTICoKdUwV2fatt6jkIIbyaqfj2Q/Y/UNMlwa6Hv4hhgatHG5mpJzb8fctMVV49IZqUgaBuWuPxKnRMtZNw54U3Cl0QuC8jwoszUfnTzafXNOj3ofW/zq1Dt4s2F4zJsZir9+muzA6dpklthDJ0Q=
X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 165.204.84.17)
 smtp.mailfrom=amd.com; dkim=none (message not signed)
 header.d=none;dmarc=pass action=none header.from=amd.com;
Received-SPF: Pass (protection.outlook.com: domain of amd.com designates
 165.204.84.17 as permitted sender) receiver=protection.outlook.com;
 client-ip=165.204.84.17; helo=satlexmb08.amd.com; pr=C
Message-ID: <18ab9849-f525-46cf-a244-d8125bef1655@amd.com>
Date: Wed, 8 Apr 2026 12:36:47 +0200
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH 0/2] Final series to make Arm MISRA allcode green
To: Nicola Vetrini <nicola.vetrini@bugseng.com>, Andrew Cooper
	<andrew.cooper3@citrix.com>
CC: <xen-devel@lists.xenproject.org>, Julien Grall <julien@xen.org>, Rahul
 Singh <rahul.singh@arm.com>, Stefano Stabellini <sstabellini@kernel.org>,
	Bertrand Marquis <bertrand.marquis@arm.com>, Volodymyr Babchuk
	<Volodymyr_Babchuk@epam.com>
References: <20260407103434.90838-1-michal.orzel@amd.com>
 <68cea196-efdc-4481-9e4b-bb450bcd2071@citrix.com>
 <bdb8e991bbd200de2f0af5991304dffb@bugseng.com>
 <14185c87-84c0-4019-a3f6-50587b941350@citrix.com>
 <7fbcb3d1ccdcf6fabb45f5805b504096@bugseng.com>
From: "Orzel, Michal" <michal.orzel@amd.com>
Content-Language: en-US
In-Reply-To: <7fbcb3d1ccdcf6fabb45f5805b504096@bugseng.com>
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: 8bit
X-EOPAttributedMessage: 0
X-MS-PublicTrafficType: Email
X-MS-TrafficTypeDiagnostic: BN2PEPF000044A9:EE_|IA1PR12MB8333:EE_
X-MS-Office365-Filtering-Correlation-Id: 28cbb902-b975-40a8-26fb-08de955ae4d6
X-MS-Exchange-SenderADCheck: 1
X-MS-Exchange-AntiSpam-Relay: 0
X-Microsoft-Antispam:
	BCL:0;ARA:13230040|36860700016|376014|82310400026|1800799024|13003099007|56012099003|18002099003|22082099003;
X-Microsoft-Antispam-Message-Info:
	lHWdDSJOi+R63OqiQI7u/v/frhw/A1W5sdR/of5mI8hMf2UKYNVhI+UTSpL7k8lgwj28b/S1NKbpgFTsHXBeUl96Klh/pbDXesbtMYGuOpBUAO6hT4E+NifWfjJzbKOxTfRoYlParrOI1AehqWcyP/SzIlrTbZOnSH7J8Lp//yQakZsFCXY/Eup+L5dYRgtNpBw9et74GTAVHOt/Xk4sdeE6Aamu+JVXVbjyhNLYiRybuJfPvB0AzE66fO/0tFD1hI6f3mCUkT+sBNregAhhgsnDkcbAWdcPaRigiQfuU5ZMupL3YM2SsYmlPLQEB6W9RD2HhsAZDOgvRg+2EEM5jAkf5XdqPmS+gdbuu6+9/Mft8Pui8tScBWLnQOnPPDC1C7+5TPW4hm5qpD03XIbuE16DBdTEuEpM41MZCEW5ZAFCMA6mlNLiXTfFuBQQhOzNJVb0pQKRsE0vRFNBlCkqAmbvyCMm1ip9uEAm72AncI+QDnUdcs3zf1RpO1ikz2r3m98WV2bm/Bx8P3ik6sTjM/UCziy3/i7SsQRqqjcvNM+JDbyCXIRdbEXNYKhuw+RaPeXuVTOCfevNrXL+VcCZipu4zdc+Fo+6Qq7IG373ktSnSs4vYWO7v5xZkiC/vlOIEgTzHtMti65GVbulsGTSdf4V8wlSfSkji2wViOn11KRa0iVkvvdCEa67JJCe4llNfCs3YWPtnj0jGYle8XXymxcm+gUiHcR2I3X22W7eXEg=
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)(376014)(82310400026)(1800799024)(13003099007)(56012099003)(18002099003)(22082099003);DIR:OUT;SFP:1101;
X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1
X-MS-Exchange-AntiSpam-MessageData-0:
	KY5/pArWC7EIPmuBUMuvKaE7JdvSJmw7RWf9I+27LGVu4KMYebcOEX1mqbrO1A2f/FEApb54i4iKIukw45nnXbHsJ8UsOxjMMHMFeXYZzjfM5Ui7eueqPCaASuFjmkqdwMPdZxixNWI5zjDQGFaRLzyqUiRJ1nf1+bGy+8thuZkW6m16pha57LZEyPQh9JQG0qzClsya+wvGzrFXt7joG4l5Gsvk1OxP5vaG2yHrTYRO++ColT3MR4/HE0n0eclqaqSk4HoWusgAprlSqIQO9jjsjgGNs/CGwTKvm3xtTuISoWg8OBdQ9Uk5TpLRQkCQorJrbgVUZJq6Ps+42ZypgsvVkfq8ndpenZYGf7Kq5oFJLXptr9ii/00hTYfupy2qKNncQcgYE9zMfCd/JYlPZUckesngM9jUMZzL4NyuXTDTRHBHJB4Jy7zSIN23SgIY
X-OriginatorOrg: amd.com
X-MS-Exchange-CrossTenant-OriginalArrivalTime: 08 Apr 2026 10:37:55.1649
 (UTC)
X-MS-Exchange-CrossTenant-Network-Message-Id: 28cbb902-b975-40a8-26fb-08de955ae4d6
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:
	BN2PEPF000044A9.namprd04.prod.outlook.com
X-MS-Exchange-CrossTenant-AuthAs: Anonymous
X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem
X-MS-Exchange-Transport-CrossTenantHeadersStamped: IA1PR12MB8333
X-purgate-ID: tlsNG-c201ff/1775644684-3133496F-4CF43354/0/0
X-purgate-type: clean
X-purgate-size: 1983



On 08/04/2026 12:21, Nicola Vetrini wrote:
> On 2026-04-08 11:51, Andrew Cooper wrote:
>> On 08/04/2026 10:46 am, Nicola Vetrini wrote:
>>> On 2026-04-08 11:22, Andrew Cooper wrote:
>>>> On 07/04/2026 11:34 am, Michal Orzel wrote:
>>>>> No more regressions for clean guidelines:
>>>>> https://gitlab.com/xen-project/people/morzel/xen/-/pipelines/2433943072
>>>>>
>>>>> Michal Orzel (2):
>>>>>   iommu/arm: smmu: Fix variable shadowing
>>>>>   iommu/arm: ipmmu-vmsa: Fix variable shadowing
>>>>>
>>>>>  xen/drivers/passthrough/arm/ipmmu-vmsa.c | 6 ++----
>>>>>  xen/drivers/passthrough/arm/smmu.c       | 7 +++----
>>>>>  2 files changed, 5 insertions(+), 8 deletions(-)
>>>>
>>>> If all the violations are fixed, should this test be made blocking?
>>>>
>>>> ~Andrew
>>>
>>> Only if they are also clean on x86; otherwise an arm-specific list of
>>> clean rules should be made (probably better). @Michal what do you 
>>> prefer?
>>>
>>
>> All I'm suggesting is this:
>>
>> xen.git/xen$ git diff
>> diff --git a/automation/gitlab-ci/analyze.yaml 
>> b/automation/gitlab-ci/analyze.yaml
>> index 4e9af9d60224..f01798c5dee6 100644
>> --- a/automation/gitlab-ci/analyze.yaml
>> +++ b/automation/gitlab-ci/analyze.yaml
>> @@ -149,7 +149,7 @@ eclair-ARM64-allcode:
>>        CONFIG_STACK_PROTECTOR=y
>>        CONFIG_UNSUPPORTED=y
>>        CONFIG_VM_EVENT=y
>> -  allow_failure: true
>> +  allow_failure: false
>>  
>>  eclair-ARM64-testing:
>>    extends: eclair-ARM64-allcode
>>
>>
>> so regressions become blocking.
>>
>> ~Andrew
> 
> Ah, yes, indeed. I didn't look at the patches but given the diff it 
> makes sense
In general that's a good idea and something I had in mind. That said, we will
likely be expanding the list of enabled features there as soon as one arrives.
What should we do in that case? Make sure that before adding new =y option, the
allcode passes in our Xen fork?

~Michal



From xen-devel-bounces@lists.xenproject.org Wed Apr 08 10:53:36 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 08 Apr 2026 10:53:36 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1275691.1561446 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wAQXK-0008Pr-4N; Wed, 08 Apr 2026 10:53:30 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1275691.1561446; Wed, 08 Apr 2026 10:53: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 1wAQXK-0008Pk-1R; Wed, 08 Apr 2026 10:53:30 +0000
Received: by outflank-mailman (input) for mailman id 1275691;
 Wed, 08 Apr 2026 10:53:29 +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 1wAQXJ-0008Pe-0h
 for xen-devel@lists.xenproject.org; Wed, 08 Apr 2026 10:53:29 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wAQXH-005Zbq-UD
 for xen-devel@lists.xenproject.org; Wed, 08 Apr 2026 12:53:27 +0200
Received: from [10.42.69.2] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <andrew.cooper@citrix.com>)
 id 69d633a0-e002-0a2a0a5209dd-0a2a450295dc-20
 for <xen-devel@lists.xenproject.org>; Wed, 08 Apr 2026 12:53:27 +0200
Received: from [52.101.62.39]
 (helo=DM5PR21CU001.outbound.protection.outlook.com)
 by tlsNG-720697.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.0)
 (envelope-from <andrew.cooper@citrix.com>)
 id 69d63111-42fa-0a2a45020019-34653e271711-3
 for <xen-devel@lists.xenproject.org>; Wed, 08 Apr 2026 12:42:26 +0200
Received: from CH8PR03MB8275.namprd03.prod.outlook.com (2603:10b6:610:2b9::7)
 by SJ0PR03MB6520.namprd03.prod.outlook.com (2603:10b6:a03:394::7)
 with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9769.17; Wed, 8 Apr
 2026 10:42:23 +0000
Received: from CH8PR03MB8275.namprd03.prod.outlook.com
 ([fe80::a70d:dc32:bba8:ce37]) by CH8PR03MB8275.namprd03.prod.outlook.com
 ([fe80::a70d:dc32:bba8:ce37%6]) with mapi id 15.20.9769.018; Wed, 8 Apr 2026
 10:42: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=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=vM1OICFmyp+uPZWpAxQqdLCDyugWCFbb6hBMyifO6gkF7nycnrYVkpU+4ZvvJZf43PMZmUgOuK3GVkifWabnwBb4oDdt5cJ2oCZAuMLDPk7Bj1VqVEU1lpsZyCNhBScYz3Sn5DO060maPN7wCAC4B5I888t+LwLzb5J3zF3BygYOiMrBJd79Er0MvcjJflBBR92SwXDTbHKh35slE3rmyN1X/kJMPye1OSKj0whstZS91H2FhMUf61+skNKIhN7o2DlrHwvQ08D0y4lbMRLyyh9TrZSO2ISkQdjA/WXjK/ZHxAWDvvYwo1PGVpfaMi1NHV/upQv46llkYTi11xv7ag==
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com;
 s=arcselector10001;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1;
 bh=grxqa1yLMqOmik0XxpmDAOQUuYcxU2vGrAB6N1h61z8=;
 b=zRWlZ3X3RwDdZWUTXZpW4km0+sMe3k9itWUUybV9Fr2BKdm70FGAMbgbMu4rh2mELUafP6beP/GGBQeLq9RcKTEMf6K1I5S3CbDa0CWMXWk8whNWBX5R+F6+WIduYiaFdkZ7WN1X0F4yVPszmvfyHdD8XBnHCHkJW2wt3TzPfPbsimsc2g8+wAMa0nHXY62MCdD1VJfVH3uNY9kkhaf0YWp9KgEh6joXjUX8xfaF2gnbdKEISCHY8ZJnAvZX/skrCOq4m0gotymjwza1pnSDZrVa4OOaEX0gm9mXrFq2y5SarqxECDUyCACClPxQ9MU2E0+URyutYXlWuQNOku8TAg==
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=grxqa1yLMqOmik0XxpmDAOQUuYcxU2vGrAB6N1h61z8=;
 b=Yha45NmCiK+yuOcFRl8dMnWO4ybWmvN+FmxVATLve1nHphmdvb4Qg0qSkdN1eGP8D8PdMj80F4iRNkOlqz4CW1FaEqDAhn+SIoFzLAy1HNHUg+I0axExbml3bLUxFrs/WVfaXmLXakRAEUwO2ugTntkjHCO2NigAN3JZh9uIgmg=
Authentication-Results: dkim=none (message not signed)
 header.d=none;dmarc=none action=none header.from=citrix.com;
Message-ID: <cf083203-7258-491c-8dbb-6ffe62418811@citrix.com>
Date: Wed, 8 Apr 2026 11:42:19 +0100
User-Agent: Mozilla Thunderbird
Cc: Andrew Cooper <andrew.cooper3@citrix.com>,
 xen-devel@lists.xenproject.org, Julien Grall <julien@xen.org>,
 Rahul Singh <rahul.singh@arm.com>,
 Stefano Stabellini <sstabellini@kernel.org>,
 Bertrand Marquis <bertrand.marquis@arm.com>,
 Volodymyr Babchuk <Volodymyr_Babchuk@epam.com>
Subject: Re: [PATCH 0/2] Final series to make Arm MISRA allcode green
To: "Orzel, Michal" <michal.orzel@amd.com>,
 Nicola Vetrini <nicola.vetrini@bugseng.com>
References: <20260407103434.90838-1-michal.orzel@amd.com>
 <68cea196-efdc-4481-9e4b-bb450bcd2071@citrix.com>
 <bdb8e991bbd200de2f0af5991304dffb@bugseng.com>
 <14185c87-84c0-4019-a3f6-50587b941350@citrix.com>
 <7fbcb3d1ccdcf6fabb45f5805b504096@bugseng.com>
 <18ab9849-f525-46cf-a244-d8125bef1655@amd.com>
Content-Language: en-GB
From: Andrew Cooper <andrew.cooper3@citrix.com>
In-Reply-To: <18ab9849-f525-46cf-a244-d8125bef1655@amd.com>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
X-ClientProxiedBy: PA7P264CA0045.FRAP264.PROD.OUTLOOK.COM
 (2603:10a6:102:34b::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_|SJ0PR03MB6520:EE_
X-MS-Office365-Filtering-Correlation-Id: 13586c6a-7f8e-45fe-7c02-08de955b84ce
X-MS-Exchange-SenderADCheck: 1
X-MS-Exchange-AntiSpam-Relay: 0
X-Microsoft-Antispam:
	BCL:0;ARA:13230040|1800799024|366016|376014|18002099003|22082099003|56012099003;
X-Microsoft-Antispam-Message-Info:
	ttPzwFcVBysKGRX1SJg2B+4GLRiieBvQQgrDvNXAgwmPyDEQGnFhr3ESQZeMv81iSfi9nJvxzwcJ0QJKINE8HAymnfF52n1n4VgtwYnOjyTM3xh9xtth0YYK8Hjr4aJ19Eo0xRHi/DLRl64OHPxqknUjeQTdB/0qB3Q/jbIlGBCL0K1U7mm6+ECFWSIR9P+cYoOo33wwounS0NLGW6fZhh+nLRsWQusUTJGhPNL3/ihg6mkkU3QArbbpbXxd0sf7E6jmXxrnMiYdLnf5eoJNFDHlnN+pHDs/UBbFu8j0fJ/Sn2EAHOf9QSxGCjRhQPPdbQL4Zhv9ul8V3nMOG7fBBUQwKT0mkLj2BPEMFIv45XjB3S/HxN2o3sQQM6y3Vn38C/GvHkhEPx8catX+tUGgJ1eVpfj7mr76q+/PimaoEBElBcWwXVj3PxTzlpax6ui7SFe8HfZMT803IjQ/9NcpIlQ6tmXT4UZepReZZ7577ZNf7mOhUJqOBgh1D5dQ3zEhfAiqsHwCxF4ElVyobyO+07145gVd2AmX2eWhOEvMT3JdBQeryqJrtl5GM/VgRYHDHy9kSLoLg4v+CEAMtcDivuhzOqgjqwhTBWW0XQN0YFrJGFAWV4Qk+H1csb84SQCo2mLaSogRNK4TPpic95otAS7GXkzw0BNzaPuWVe+3ILgpFmpVEPeXUPmcqyBJEZ+Y
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)(18002099003)(22082099003)(56012099003);DIR:OUT;SFP:1101;
X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1
X-MS-Exchange-AntiSpam-MessageData-0:
	=?utf-8?B?b3BYbUplQlk5T1lCSThhODhOUVZYcGVJV1FnM1NDZGVqZEwxaTlnWGZtTzN5?=
 =?utf-8?B?c1p6ZlQ2bk9jSXNlRVppRTFMQzlqemhPbU1DWUlsSHpaVFU3a2VBeUVsU1Jl?=
 =?utf-8?B?aXBpMDFDeEViQllJWVBMUlJJM2E5L244eWlqQ2xFc1oxeHE2WitTV2tTQkg3?=
 =?utf-8?B?elNUOWJUM0J1SUVMU0ZIYjBmdUxDYW9MVExkZjNINmoveWNsWGhYWjlPTVdH?=
 =?utf-8?B?UEd1S3NmZklGTXkxWHlibHhDakh5dlI3b2doMXc0SDNnbDBmWDMyVkJ0R2tx?=
 =?utf-8?B?WXl5aHorNi9xMnhWY0FuKzVGNFdYRzBBSk52THJ0bWdIV0g1azNwNGxBSXJu?=
 =?utf-8?B?aUJXSnpReDlsWHZJelVsd3E4MkNqS3VBaFZIUlExQXdpQ3NXQ2dNdUpkVC9r?=
 =?utf-8?B?SXd0TFVvV2syRXpicXkzMnVrbUJtK0gySnpYSmZlajFnellqWlVEeDIxMUZM?=
 =?utf-8?B?ZU9DNkpKa3FRN1JOQ1RreEM5a1FhekgzN3dSSVIrRHZKYXhzT0kvS2dndE1a?=
 =?utf-8?B?RW9maVVZN1B5dlhML21rZFZjb21mcDhIaFZUUGlFY3dnM2xDOEF4NUFsTkd5?=
 =?utf-8?B?VERpRExVSVo2VDBRZU5RSTQ1V21GOXRDaml4Tk1hK3NXUDFKV01zcGt6WHds?=
 =?utf-8?B?VExUTUZHZXlRazRQdEJtQ2lsOHFUWFM4U2lTMk1SZXFueVk5R0J0bS9NYWlC?=
 =?utf-8?B?L3pCTlVPUGZCcHJIcFhlZ0wzQ1B0MjBDbk1hY0tiOW9NQm8yRDhHUzdRekRv?=
 =?utf-8?B?SVVwL3J1Ungvc0FPV0NNd2hLM29jZ0x1YUhuTVZPK0cweW8vZmlGaVZxdytZ?=
 =?utf-8?B?bUJwZ3lXbU1jNEJPbkZzMEo0YjIrcTg0dDRINGtYekRVWXpNSTVLTU5qQ1Bj?=
 =?utf-8?B?K2p2RDk1MXBRb1hhQWh0QjNDSVNwL0kxQUlXc3djZk9LMDhudDU0UWpacWs5?=
 =?utf-8?B?cWdqaWx2cWgzajZFVFZsZTZMcXZqbWhGd3REY1RpclN0T2pVeVB3MEcrSG5X?=
 =?utf-8?B?UWdXTEllTzFpS2V2TFNoQ3VPUTlGeEpkS2FsQ2pWMHVqaVhqVkRtYjdrZ2dq?=
 =?utf-8?B?bWtrVU5lT0VYZ3RYZVdlR0VWWVhpb1hLWWpmS295N3RIRjZDTGdkRC9meWE1?=
 =?utf-8?B?dktJMjloNy8rM3ZCRHlTWjRQUmN0bkVIWjVkUUFlZGw1bW1PL212enh4YXE4?=
 =?utf-8?B?Yis1OFhOVkRBVGVXamIrK1BkTWNMRW5SdTRXeEtUQXVoUy9NUWdkWUxzZW44?=
 =?utf-8?B?dGdPakJodHVvbXRVcSt3YXRxdE1IcXV6WGtsTjkreC9pa3NZVENTaG1lUFZw?=
 =?utf-8?B?YmZGbkgzQVhYdm5mWEw4NTdsaEZBTmowQXFDais0Vkd3RlhkRDFlVjZtYktr?=
 =?utf-8?B?Sll4Ny9yZS9mK0xQM1VERnZjSHUyTUdHbEFEUXJ6c0ZDZ1FqMmtidFVZbmZS?=
 =?utf-8?B?Z09aR3dOTDhNdTBQeG1kSXMrUitxUG9CMTV3VkRIc2Q5RG93LzNkZlJON2FR?=
 =?utf-8?B?R3dKdktoV1FkdFoyeURpR2hIQm5STk5OZ1pnak0vUDF2aDFRWWt3V09tb0hG?=
 =?utf-8?B?UXlzLzJ5OGtkbjNiWXVLaWFGMkREN1UxbkVrMHR4N1VGaUxnSzQvdmVwaFB5?=
 =?utf-8?B?OHg1UjEyUjkxc3Z1aWU2M1hGQUZUZ1lacTN4dng0ZkRxaTJNaVRTODNVc1dF?=
 =?utf-8?B?bEZkT2htZnVXY0F5bXk1N1ZsTDIvbmYweGdRNkRuUWE3R3VqTEtZOFFlZktw?=
 =?utf-8?B?V25qYkJxejVzd0dWazU2V2ZxUHpwekhHZ0hlVnF2L3JubjVBRjBGdGNJcnlE?=
 =?utf-8?B?VVdId0Urb1JpckRBM1k2Vm1xUDJhRTVwUklDb1huYlZjSmVYRDVqSWxsTHBS?=
 =?utf-8?B?RnJ2NXZ3U3ZJbFdtYU1ibmR3NVdhR1VCM0ZXS3BwSHA5QnVvcllpWlplWkFv?=
 =?utf-8?B?Q3NpVXdsc05FYUZMTzUrZWdIZzJXL3p1RFBKNFhuQW5mc1B0Mms4Q0o1Uklr?=
 =?utf-8?B?YzByN1FmT1B3T3ZabTVBYmg0WE85RFd4U1FTQVJJT1hqMUE5RHpEbXRPZlpS?=
 =?utf-8?B?QnBoaWlaR3Azcll0WlFpODJaLytVMHp4K28waXN2UTJYUnI3M0RzZmJtU1Yx?=
 =?utf-8?B?ZThSS1RjN3hEU1hEWTgwMFZucEJEazVNaHFrdk9PUHJXWnBLcmVVeU5yNnpx?=
 =?utf-8?B?Q0JRSTM1UXFmT1lGYVcrTjZsZVhTNW1ZNlNiQmhvRFowL0dDL0t2TmdRaFhw?=
 =?utf-8?B?L1hEQmNNWE1SQSt4TEZWRFNDM0pob2FVcW5iQzRTTWFPWmp6dndUT0RrZHUx?=
 =?utf-8?B?MnJ5dmtsQyt1UjBsNFYzYmRuODIzRUROZUFFN2F1QkVhdG5VSEV4TytFSWRI?=
 =?utf-8?Q?h6jqi7NCC+9jEqx0=3D?=
X-OriginatorOrg: citrix.com
X-MS-Exchange-CrossTenant-Network-Message-Id: 13586c6a-7f8e-45fe-7c02-08de955b84ce
X-MS-Exchange-CrossTenant-AuthSource: CH8PR03MB8275.namprd03.prod.outlook.com
X-MS-Exchange-CrossTenant-AuthAs: Internal
X-MS-Exchange-CrossTenant-OriginalArrivalTime: 08 Apr 2026 10:42:23.7700
 (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: X+MpSR6QXjkX/jgm10LOUYbmirYUNe+wdqN/OrXfcSt2YNChy4VoxUXeEUwmhkQGYXofqvSEUZ5ZwYY0goEErxckE7BR0Mu6xubnvLrvWfc=
X-MS-Exchange-Transport-CrossTenantHeadersStamped: SJ0PR03MB6520
X-purgate-ID: tlsNG-720697/1775644947-44BF5CD1-9FBAF00D/13/0
X-purgate-type: clean
X-purgate-size: 2197

On 08/04/2026 11:36 am, Orzel, Michal wrote:
>
> On 08/04/2026 12:21, Nicola Vetrini wrote:
>> On 2026-04-08 11:51, Andrew Cooper wrote:
>>> On 08/04/2026 10:46 am, Nicola Vetrini wrote:
>>>> On 2026-04-08 11:22, Andrew Cooper wrote:
>>>>> On 07/04/2026 11:34 am, Michal Orzel wrote:
>>>>>> No more regressions for clean guidelines:
>>>>>> https://gitlab.com/xen-project/people/morzel/xen/-/pipelines/2433943072
>>>>>>
>>>>>> Michal Orzel (2):
>>>>>>   iommu/arm: smmu: Fix variable shadowing
>>>>>>   iommu/arm: ipmmu-vmsa: Fix variable shadowing
>>>>>>
>>>>>>  xen/drivers/passthrough/arm/ipmmu-vmsa.c | 6 ++----
>>>>>>  xen/drivers/passthrough/arm/smmu.c       | 7 +++----
>>>>>>  2 files changed, 5 insertions(+), 8 deletions(-)
>>>>> If all the violations are fixed, should this test be made blocking?
>>>>>
>>>>> ~Andrew
>>>> Only if they are also clean on x86; otherwise an arm-specific list of
>>>> clean rules should be made (probably better). @Michal what do you 
>>>> prefer?
>>>>
>>> All I'm suggesting is this:
>>>
>>> xen.git/xen$ git diff
>>> diff --git a/automation/gitlab-ci/analyze.yaml 
>>> b/automation/gitlab-ci/analyze.yaml
>>> index 4e9af9d60224..f01798c5dee6 100644
>>> --- a/automation/gitlab-ci/analyze.yaml
>>> +++ b/automation/gitlab-ci/analyze.yaml
>>> @@ -149,7 +149,7 @@ eclair-ARM64-allcode:
>>>        CONFIG_STACK_PROTECTOR=y
>>>        CONFIG_UNSUPPORTED=y
>>>        CONFIG_VM_EVENT=y
>>> -  allow_failure: true
>>> +  allow_failure: false
>>>  
>>>  eclair-ARM64-testing:
>>>    extends: eclair-ARM64-allcode
>>>
>>>
>>> so regressions become blocking.
>>>
>>> ~Andrew
>> Ah, yes, indeed. I didn't look at the patches but given the diff it 
>> makes sense
> In general that's a good idea and something I had in mind. That said, we will
> likely be expanding the list of enabled features there as soon as one arrives.
> What should we do in that case? Make sure that before adding new =y option, the
> allcode passes in our Xen fork?

New code could be clean as it goes in.  At this point, it's not
interestingly different from "does it compile" as a prerequisite.

~Andrew


From xen-devel-bounces@lists.xenproject.org Wed Apr 08 10:58:25 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 08 Apr 2026 10:58:25 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1275702.1561455 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wAQc4-0000tG-OC; Wed, 08 Apr 2026 10:58:24 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1275702.1561455; Wed, 08 Apr 2026 10:58: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 1wAQc4-0000t9-Kx; Wed, 08 Apr 2026 10:58:24 +0000
Received: by outflank-mailman (input) for mailman id 1275702;
 Wed, 08 Apr 2026 10:58:23 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92) id 1wAQc3-0000t3-MG
 for xen-devel@lists.xenproject.org; Wed, 08 Apr 2026 10:58:23 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wAQc3-001evq-2F
 for xen-devel@lists.xenproject.org; Wed, 08 Apr 2026 12:58:23 +0200
Received: from [10.42.69.11] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <oleksii.kurochko@gmail.com>)
 id 69d634c6-e002-0a2a0a5209dd-0a2a450bdbdc-12
 for <xen-devel@lists.xenproject.org>; Wed, 08 Apr 2026 12:58:23 +0200
Received: from [209.85.208.53] (helo=mail-ed1-f53.google.com)
 by tlsNG-42698a.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.0)
 (envelope-from <oleksii.kurochko@gmail.com>)
 id 69d634ce-bca8-0a2a450b0019-d155d035ed88-3
 for <xen-devel@lists.xenproject.org>; Wed, 08 Apr 2026 12:58:23 +0200
Received: by mail-ed1-f53.google.com with SMTP id
 4fb4d7f45d1cf-66e129e457dso6094764a12.1
 for <xen-devel@lists.xenproject.org>; Wed, 08 Apr 2026 03:58:22 -0700 (PDT)
Received: from [192.168.1.6] (user-109-243-69-121.play-internet.pl.
 [109.243.69.121]) by smtp.gmail.com with ESMTPSA id
 a640c23a62f3a-b9c3c99fc09sm639526266b.17.2026.04.08.03.58.21
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Wed, 08 Apr 2026 03:58:21 -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=20251104 header.d=gmail.com header.i="@gmail.com" header.h="Content-Transfer-Encoding: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=20251104; t=1775645902; x=1776250702; darn=lists.xenproject.org;
        h=content-transfer-encoding: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;
        bh=mP54B1bbFvAPwnzObEpCSH78rhbF3gbAx/8ow8Js+5E=;
        b=l3BA2iHC15B1aYUCZlfL2mfl1nu2IR+ndyZGwY5tmQR6BSxmbEBDV9h0fNQzodAE43
         50hGwZ6Z/jLz5+2ym3ArxSF0L5W0xKZllhc0a4leiymZp2HqQErTwor/OnofVT7jZvWH
         RF1ZeYB5qQiqio37pDqIrcvFhxWCeWkdUegiBtpvBkLoK+7PAv7Cjj4KnsO54sIOIY28
         Dr1KFx5BS69SMuoGC84dKa+8ovID40dIq3Bxo9dZVyn4SkCgMGKVa42v6JMjQ2Zmrcnn
         VtP9+NoLRkleGFdcspf8hsUmvYXz6JLY7DZazVyaH1wL54+ynhbAXW2w5clz1W2vkxYx
         NF9g==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20251104; t=1775645902; x=1776250702;
        h=content-transfer-encoding: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;
        bh=mP54B1bbFvAPwnzObEpCSH78rhbF3gbAx/8ow8Js+5E=;
        b=UdDBm8hx2Up6cRmxjoeU2Eba9n0IE7+4Bjz0+2stQzOUbwOdjincdLW9wMRFoJb5gZ
         Pa/hfdzDFNoa3l804Ipjo6i+b9niDVHBxlmuYCzHWCMgTb5dIgsbfROayLK5snaakxs+
         /SLgIweMCk/3+4cul91DH3daCpVi9q3fvFGoTu1p6kv0UAvzPm3o+3M1AirvB2ZhFkUz
         b8MuIXvQ7waqcchV31KXFiZz6tHI0rJFIWzagwCdj8+o5PRHFLcSrEx5ckPlv1vkw7me
         HGgTLgyY7VkLjjP/pZxnr4wQAwp2NFr82LejjLG7zaoW8rUOOh71ArPgZu7em97yFhZf
         KOMw==
X-Forwarded-Encrypted: i=1; AJvYcCWJCqKJceLAiMr4roBS0piJCwNzUkT7bY2zwEzErrDZUI4LlMQh9FdDk42aOH+zNokXAX49EijxPu4=@lists.xenproject.org
X-Gm-Message-State: AOJu0YyrnR0Yeq5++ZYnYWmAjr++zr7CcS57+xyEQCUaP3VUXuTbshjE
	KROxAYapXCeO8A+6MK42UM7KLNYVkmEJtMb3Dkwc98dGnC+nMpC/5MJH
X-Gm-Gg: AeBDietNLeuNlurMogO4X74+y6e7VwRSA1z6YUir8bCtPOwJYHHxkT6eZ+J61LMzkGJ
	VHrBrichLtF6dub4jwow/siFLR/QuuXBAXCPIBdzV7RmsYKcg3ns4D8OGm4bQimrwBAJ+v+zg14
	+BgeCBkAKPg16ATz3B5DoNfJM0+JMXtMBB5vdTGKy3xUYezh3iSF5+qshi+5jTScFTaWmNJj1Ow
	ri2sX9KRnmIHg2WGPI5BoIEph/PplPyO2l+qlps3cMJpd9HGA/Y/JOgBjozA0WgOsqe6sQLpxf3
	BSE3bBfGEs9BqTGvweeYeME29Mp8B/MIlNdf0bT8UUrO49OxmMwCoGXeo7LOZIUJpSXFoG3myUj
	8fnbb2UH59/v3yS0IaZbXfZAhUJDPmXCjF+JRh9KSfVLgtNH0vytMhixxRPipu77obOKtrHyjVD
	ICexNLCUU/M/77uW75Urw9am8/v5stVZ6m0sJAK1ldLF79Pf2Rt8SBdkn5QnKFFFBqbZTK7CgY4
	N0=
X-Received: by 2002:a17:907:84d1:b0:b93:a3db:a6b9 with SMTP id a640c23a62f3a-b9c67bbd200mr721739766b.53.1775645902134;
        Wed, 08 Apr 2026 03:58:22 -0700 (PDT)
Message-ID: <e69e8de7-dbcc-4839-bff6-866c3fa50ea2@gmail.com>
Date: Wed, 8 Apr 2026 12:58:20 +0200
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH v2 3/4] xen/riscv: allow Xen to use SSTC while hiding it
 from guests
To: Jan Beulich <jbeulich@suse.com>
Cc: Romain Caritey <Romain.Caritey@microchip.com>,
 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.pau@citrix.com>,
 Stefano Stabellini <sstabellini@kernel.org>, xen-devel@lists.xenproject.org
References: <cover.1774863161.git.oleksii.kurochko@gmail.com>
 <ff0e2e7332d5b887d00ad10caf01952f90f5da5c.1774863161.git.oleksii.kurochko@gmail.com>
 <df6fb4f1-b420-4b5f-90e1-dea9069311bf@suse.com>
Content-Language: en-US
From: Oleksii Kurochko <oleksii.kurochko@gmail.com>
In-Reply-To: <df6fb4f1-b420-4b5f-90e1-dea9069311bf@suse.com>
Content-Type: text/plain; charset=UTF-8; format=flowed
Content-Transfer-Encoding: 8bit
X-purgate-ID: tlsNG-42698a/1775645903-EF9412A1-18787A9F/10/73395122804
X-purgate-type: spam
X-purgate-size: 5098



On 4/2/26 8:41 AM, Jan Beulich wrote:
> On 31.03.2026 21:04, Oleksii Kurochko wrote:
>> @@ -495,6 +498,36 @@ void __init riscv_fill_hwcap(void)
>>           panic("HW capabilities parsing failed: %s\n", failure_msg);
>>       }
>>   
>> +    if ( csr_read_safe(CSR_STIMECMP, &tmp) )
>> +    {
>> +        printk("SSTC is detected but is supported only for Xen usage not for "
>> +               "a guest\n");
> 
> Please don't wrap format strings. Them going slightly beyond 80 columns is okay.
> Them going much beyond that is a good indication that you want to consider re-
> wording. (Here e.g. "SSTC detected; supported for Xen use, but not for guests".)

I will reword log message in the form you suggested.

> 
> I question though whether something like this needs logging.

It is just a debug reminder that something should be additionally done. 
I will do it dprintk() so it won't appear in release builds.

> 
>> +        /*
>> +         * As SSTC for guest isn't supported it is needed temprorary to:
> 
> Nit: temporary
> 
>> +         *
>> +         * 1. Clear bit RISCV_ISA_EXT_sstc in riscv_isa as theoretuically it
> 
> Nit: theoretically
> 
>> +         *    could be that OpenSBI (it doesn't pass it now) or whatever ran
>> +         *    before Xen will add SSTC to riscv,isa string. This bit clear
>> +         *    won't allow guest to use SSTC extension as vtimer context
>> +         *    switch and restore isn't ready for that.
>> +         */
>> +        __clear_bit(RISCV_ISA_EXT_sstc, riscv_isa);
> 
> Seeing your other series, shouldn't this instead be done without affecting
> riscv_isa? The BUG_ON()s in vtimer.x therefore also look inappropriate.

It is incorrect to use __clear_bit(). What should be used instead is 
__set_bit(), because in the current boot process OpenSBI does not add 
"sstc" to the riscv,isa string. Therefore, we need to set the 
RISCV_ISA_EXT_sstc bit manually.

This change will affect BUG_ON() checks in vtimer.c, which I plan to 
remove. If SSTC is not supported for the guest, there is nothing we can 
do anyway. It might make sense to reintroduce these BUG_ON() checks once 
an unsupported bitmap is implemented [1]. At that point, we could have 
something like the following in the vtimer save and restore context 
functions in vtimer.c:

BUG_ON(!riscv_isa_extension_available(guest_unsupp_bmp, 
RISCV_ISA_EXT_sstc));

On the other hand, using BUG_ON() in the vtimer save and restore 
functions is of limited value. If SSTC support for guests is added in 
the future, these functions will need to be updated anyway, so such 
checks may become redundant.

[1] 
https://lore.kernel.org/xen-devel/007c0a0243ac7ff1d1ab3faa4ebcdd6fcd14e485.1773157782.git.oleksii.kurochko@gmail.com/


> 
>> @@ -61,20 +73,7 @@ int reprogram_timer(s_time_t timeout)
>>       if ( deadline <= now )
>>           return 0;
>>   
>> -    /*
>> -     * TODO: When the SSTC extension is supported, it would be preferable to
>> -     *       use the supervisor timer registers directly here for better
>> -     *       performance, since an SBI call and mode switch would no longer
>> -     *       be required.
>> -     *
>> -     *       This would also reduce reliance on a specific SBI implementation.
>> -     *       For example, it is not ideal to panic() if sbi_set_timer() returns
>> -     *       a non-zero value. Currently it can return 0 or -ENOSUPP, and
>> -     *       without SSTC we still need an implementation because only the
>> -     *       M-mode timer is available, and it can only be programmed in
>> -     *       M-mode.
>> -     */
>> -    if ( (rc = sbi_set_timer(deadline)) )
>> +    if ( (rc = set_xen_timer(deadline)) )
>>           panic("%s: timer wasn't set because: %d\n", __func__, rc);
>>   
>>       /* Enable timer interrupt */
>> @@ -85,10 +84,17 @@ int reprogram_timer(s_time_t timeout)
>>   
>>   void __init preinit_xen_time(void)
>>   {
>> +    unsigned long tmp;
>> +
>>       if ( acpi_disabled )
>>           preinit_dt_xen_time();
>>       else
>>           panic("%s: ACPI isn't supported\n", __func__);
>>   
>>       boot_clock_cycles = get_cycles();
>> +
>> +    if ( csr_read_safe(CSR_STIMECMP, &tmp) )
>> +        set_xen_timer = sstc_set_xen_timer;
>> +    else
>> +        set_xen_timer = sbi_set_timer;
>>   }
> 
> Doesn't all of this together eliminate the need for sbi_set_timer as a
> separate global variable?
There's still a need for that SBI-level dispatch. However, sbi_set_timer 
doesn't need to be a global variable (exported from sbi.h). Since the 
only external user after this patch is the time.c, sbi_set_timer could 
be refactored into a plain static internal pointer with a non-static 
wrapper function:

// sbi.c — keep dispatch internal
static int (* __ro_after_init sbi_set_timer_fn)(uint64_t) = 
sbi_set_timer_v01;

int cf_check sbi_set_timer(uint64_t stime_value)
{
     return sbi_set_timer_fn(stime_value);
}

Do you mean this?

Thanks.

~ Oleksii


From xen-devel-bounces@lists.xenproject.org Wed Apr 08 11:01:33 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 08 Apr 2026 11:01:33 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1275713.1561463 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wAQf3-0002Q5-5J; Wed, 08 Apr 2026 11:01:29 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1275713.1561463; Wed, 08 Apr 2026 11: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 1wAQf3-0002Py-2P; Wed, 08 Apr 2026 11:01:29 +0000
Received: by outflank-mailman (input) for mailman id 1275713;
 Wed, 08 Apr 2026 11:01:27 +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 1wAQf1-0002Pm-Hs
 for xen-devel@lists.xenproject.org; Wed, 08 Apr 2026 11:01:27 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wAQez-005KIO-Be
 for xen-devel@lists.xenproject.org; Wed, 08 Apr 2026 13:01:26 +0200
Received: from [10.42.69.12] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <Michal.Orzel@amd.com>)
 id 69d63583-e002-0a2a0a5209dd-0a2a450c9878-24
 for <xen-devel@lists.xenproject.org>; Wed, 08 Apr 2026 13:01:26 +0200
Received: from [52.101.52.20]
 (helo=BL2PR02CU003.outbound.protection.outlook.com)
 by tlsNG-d25034.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.0)
 (envelope-from <Michal.Orzel@amd.com>)
 id 69d63585-f40c-0a2a450c0019-34653414e16e-3
 for <xen-devel@lists.xenproject.org>; Wed, 08 Apr 2026 13:01:26 +0200
Received: from BN9PR03CA0365.namprd03.prod.outlook.com (2603:10b6:408:f7::10)
 by CY3PR12MB9580.namprd12.prod.outlook.com (2603:10b6:930:10a::20)
 with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9769.18; Wed, 8 Apr
 2026 11:01:22 +0000
Received: from BN1PEPF00004687.namprd05.prod.outlook.com
 (2603:10b6:408:f7:cafe::24) by BN9PR03CA0365.outlook.office365.com
 (2603:10b6:408:f7::10) with Microsoft SMTP Server (version=TLS1_3,
 cipher=TLS_AES_256_GCM_SHA384) id 15.20.9769.37 via Frontend Transport; Wed,
 8 Apr 2026 11:01:22 +0000
Received: from satlexmb07.amd.com (165.204.84.17) by
 BN1PEPF00004687.mail.protection.outlook.com (10.167.243.132) with Microsoft
 SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id
 15.20.9769.17 via Frontend Transport; Wed, 8 Apr 2026 11:01: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.17; Wed, 8 Apr
 2026 06:01:21 -0500
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.17; Wed, 8 Apr
 2026 06:01:08 -0500
Received: from [10.71.194.215] (10.180.168.240) by satlexmb07.amd.com
 (10.181.42.216) with Microsoft SMTP Server id 15.2.2562.17 via Frontend
 Transport; Wed, 8 Apr 2026 06:01:07 -0500
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@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=UYly3IxmaPq8L3hw/d+Y0HcVX87rEq0tTfXQeO/zh5hKzH+NlQbMuZV/+MlMzYWqh7+9VWuGKhh1WGdalhKmc1GaDFK8sbhMXk+v+dFqwvjf4Imq4JSuoYZXl3yAfk9DizejwaeMqHSluRfzF6TZ06vD19dW3nnTgD+4xInEAZaaO8g/tpBvH1b/Salk4QyJw9p351eGNGLf7pNjKODbb5DZs73WKhesNB+AUI/v2JsGz2bA9Psbt3tE2gwlqSCoe8S/n9y8ksBuhROl1+TFmP+48eowTAD527lW7PsaWCjQk9vxwPPAvS+F7yvG7OEuJTAa0q17fKc+69RzQaejLw==
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com;
 s=arcselector10001;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1;
 bh=Y9/oM4e5REMMaLpgogGrdx+1RpVuC9eOrJ43E8qEBiI=;
 b=ai8jL7YzhP8t/uS5zJ09kORAgV+xfBVhnmp6WtrK8R5j/D1VFNFxvGyYpTBMCGuVKkcskELkR4yxqvgqf/2IGqj1mCpSygvkr5WmpAX5mxqXZuuls4toetYagbT4qKOTlFMO7UZ/ygRLR3gKZD1hEAlw62YjdyC08fcwMoXLVwTASl8BeqRgJcja9Lt9CkC2PXGdqOzv8GbqyD3okRuInaDN7oD9Y12i0YfRmmj4AfghQLWUtvFwGbWoumrbiLTwsgERzF38lfu+MIj04qlU1F3+25OhnKzksgO/fWMSN8mSXSsrkWL6bvn07oxmedW87/aFkUBCZ31MgXeQubUKTw==
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=Y9/oM4e5REMMaLpgogGrdx+1RpVuC9eOrJ43E8qEBiI=;
 b=f5iuounG/H5jziVh47BJ1tZF0Lb+XPSGCyccoVasIm1Pi/DJHzkGpd7jEB7HHw+Y+2kbDZFY3Riizg57RuGYpCkfBwxbbyAwozOVLmP3DXR76Umnf1M9kj+seGLanEoe+SLt8Wpd7HS2o71WY6RNBTWfIFs8MQ+OmE1Q9FGX6RY=
X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 165.204.84.17)
 smtp.mailfrom=amd.com; dkim=none (message not signed)
 header.d=none;dmarc=pass action=none header.from=amd.com;
Received-SPF: Pass (protection.outlook.com: domain of amd.com designates
 165.204.84.17 as permitted sender) receiver=protection.outlook.com;
 client-ip=165.204.84.17; helo=satlexmb07.amd.com; pr=C
Message-ID: <1b0e5252-f28c-425e-b982-f023f8976ec4@amd.com>
Date: Wed, 8 Apr 2026 13:01:06 +0200
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH 0/2] Final series to make Arm MISRA allcode green
To: Andrew Cooper <andrew.cooper3@citrix.com>, Nicola Vetrini
	<nicola.vetrini@bugseng.com>
CC: <xen-devel@lists.xenproject.org>, Julien Grall <julien@xen.org>, "Rahul
 Singh" <rahul.singh@arm.com>, Stefano Stabellini <sstabellini@kernel.org>,
	Bertrand Marquis <bertrand.marquis@arm.com>, Volodymyr Babchuk
	<Volodymyr_Babchuk@epam.com>
References: <20260407103434.90838-1-michal.orzel@amd.com>
 <68cea196-efdc-4481-9e4b-bb450bcd2071@citrix.com>
 <bdb8e991bbd200de2f0af5991304dffb@bugseng.com>
 <14185c87-84c0-4019-a3f6-50587b941350@citrix.com>
 <7fbcb3d1ccdcf6fabb45f5805b504096@bugseng.com>
 <18ab9849-f525-46cf-a244-d8125bef1655@amd.com>
 <cf083203-7258-491c-8dbb-6ffe62418811@citrix.com>
From: "Orzel, Michal" <michal.orzel@amd.com>
Content-Language: en-US
In-Reply-To: <cf083203-7258-491c-8dbb-6ffe62418811@citrix.com>
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: 8bit
X-EOPAttributedMessage: 0
X-MS-PublicTrafficType: Email
X-MS-TrafficTypeDiagnostic: BN1PEPF00004687:EE_|CY3PR12MB9580:EE_
X-MS-Office365-Filtering-Correlation-Id: 856d90d5-a1ab-49c7-b5ae-08de955e2ba8
X-MS-Exchange-SenderADCheck: 1
X-MS-Exchange-AntiSpam-Relay: 0
X-Microsoft-Antispam:
	BCL:0;ARA:13230040|1800799024|36860700016|376014|82310400026|18002099003|22082099003|56012099003;
X-Microsoft-Antispam-Message-Info:
	8wnUtX073Iiz7hXjt4WNEjVWgz8LcdnHbhPGYSDtQqVsxGQCvzvWsExe9ilPABVXSv4/Yl+UZ3CZS/eGmSQ3m+uoDHH4xWX2aEu2HQPuXZIsel/69PxPebGx1PW5iI+hUPdA0GHB8KrCWkxw2otdJvhDOi/OjhsdJjZP0a2pHDdYHkZPGesL/97/vee4nddBORhrCSZ1PTpBvfPZp7IKX5bAUTlyPH9q7zVLF5Zw9/mgyhxIISiAzl7JOTZjea8DyTvNcalAddMUI8JruEWQ8foLEi+VEv8pjNAQs67vpcPCnpLayV3IzAF6/jt52q06YKgVDku2SiRHRn68TsJMnXL+WTue2nsBwN1v8sWRhNFm7aCa+zRPlTT2+7BRhdTf8/bEy5uPtI91AdritzNyf0BuB32UjVds2dNJNL9iIoDAaJ2fits1IzZ6f25Pw3zD2DtPISwQZPciTU4sT0l+TUiXdFKoaZpLLsn2RuTyLUwtcd520x3V8ez0/dSVczgy5CBkMOys/kBOGw6Dfx4o4yH5d9saOWOT53fMtXAuHOX5NeS7VA0HH/M70X7MChSBbzSxLnC6WM3n3D9gom5rpzAQDr2mcrAkEWvi44MVEQjDFtstZt4Pi1gO9IK7Bq7X7zb68aFcZ4mSLV1q4j+WEr67XJrNkJIo4SY/O7Rf6NOragUrF4AUHkZavmeKd/VKndi/wnYA2r2ZyqgzIVqhs+e5K1AJW8sZwNEF4yrD+tY=
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)(36860700016)(376014)(82310400026)(18002099003)(22082099003)(56012099003);DIR:OUT;SFP:1101;
X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1
X-MS-Exchange-AntiSpam-MessageData-0:
	2HWXbgsXwKIBwG+PWe2tJw+HXT52QkbsLBn+Gz3Qb/mXD2vRTpU7jIa4CN3G9DO3VaF8KbxgeKaqE7A0kOdcvOMCIWu1QyCe3wS8C5NNypjFArQVy2l2HslRhfXlvlycIroeg9yvQqkBHiPzOUIwQy6q2l+m5N7/OOqDrMGP1yhQXpi5nshbomlmVluQW9nCHkopkHdV7oRE0S6O2pPVZ6SIrwB/lsNBicGsAGYL2fKFH3RmFL1y1uLpbu70n/wXUHsVF/9z9yZiyzdwssc4CD15BrFvcDwbFUW1sZeSOtTixmfPyk0L4PDu7TFXEUQPkunU6kD6J4VJvylXSSLhDH8ZHHGehB3d0PVrcbvqgqJU0/ycnHpciukgqx6uf6FClXV0/IFOWP3dryK6/QyElgdA3kiI5DOna8Iokyv8+h7t/4etn3pQGUIyyfdo03Fy
X-OriginatorOrg: amd.com
X-MS-Exchange-CrossTenant-OriginalArrivalTime: 08 Apr 2026 11:01:22.4710
 (UTC)
X-MS-Exchange-CrossTenant-Network-Message-Id: 856d90d5-a1ab-49c7-b5ae-08de955e2ba8
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:
	BN1PEPF00004687.namprd05.prod.outlook.com
X-MS-Exchange-CrossTenant-AuthAs: Anonymous
X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem
X-MS-Exchange-Transport-CrossTenantHeadersStamped: CY3PR12MB9580
X-purgate-ID: tlsNG-d25034/1775646086-FD358A3D-5A7C1E0E/0/0
X-purgate-type: clean
X-purgate-size: 2565



On 08/04/2026 12:42, Andrew Cooper wrote:
> On 08/04/2026 11:36 am, Orzel, Michal wrote:
>>
>> On 08/04/2026 12:21, Nicola Vetrini wrote:
>>> On 2026-04-08 11:51, Andrew Cooper wrote:
>>>> On 08/04/2026 10:46 am, Nicola Vetrini wrote:
>>>>> On 2026-04-08 11:22, Andrew Cooper wrote:
>>>>>> On 07/04/2026 11:34 am, Michal Orzel wrote:
>>>>>>> No more regressions for clean guidelines:
>>>>>>> https://gitlab.com/xen-project/people/morzel/xen/-/pipelines/2433943072
>>>>>>>
>>>>>>> Michal Orzel (2):
>>>>>>>   iommu/arm: smmu: Fix variable shadowing
>>>>>>>   iommu/arm: ipmmu-vmsa: Fix variable shadowing
>>>>>>>
>>>>>>>  xen/drivers/passthrough/arm/ipmmu-vmsa.c | 6 ++----
>>>>>>>  xen/drivers/passthrough/arm/smmu.c       | 7 +++----
>>>>>>>  2 files changed, 5 insertions(+), 8 deletions(-)
>>>>>> If all the violations are fixed, should this test be made blocking?
>>>>>>
>>>>>> ~Andrew
>>>>> Only if they are also clean on x86; otherwise an arm-specific list of
>>>>> clean rules should be made (probably better). @Michal what do you 
>>>>> prefer?
>>>>>
>>>> All I'm suggesting is this:
>>>>
>>>> xen.git/xen$ git diff
>>>> diff --git a/automation/gitlab-ci/analyze.yaml 
>>>> b/automation/gitlab-ci/analyze.yaml
>>>> index 4e9af9d60224..f01798c5dee6 100644
>>>> --- a/automation/gitlab-ci/analyze.yaml
>>>> +++ b/automation/gitlab-ci/analyze.yaml
>>>> @@ -149,7 +149,7 @@ eclair-ARM64-allcode:
>>>>        CONFIG_STACK_PROTECTOR=y
>>>>        CONFIG_UNSUPPORTED=y
>>>>        CONFIG_VM_EVENT=y
>>>> -  allow_failure: true
>>>> +  allow_failure: false
>>>>  
>>>>  eclair-ARM64-testing:
>>>>    extends: eclair-ARM64-allcode
>>>>
>>>>
>>>> so regressions become blocking.
>>>>
>>>> ~Andrew
>>> Ah, yes, indeed. I didn't look at the patches but given the diff it 
>>> makes sense
>> In general that's a good idea and something I had in mind. That said, we will
>> likely be expanding the list of enabled features there as soon as one arrives.
>> What should we do in that case? Make sure that before adding new =y option, the
>> allcode passes in our Xen fork?
> 
> New code could be clean as it goes in.  At this point, it's not
> interestingly different from "does it compile" as a prerequisite.
I can see there are some missing features like static memory/shared memory but
they are tested as part of AMD (it would still be good to have all listed in
allcode). Additionally, we could enable early printk with some dummy values to
cover early_printk.c

~Michal



From xen-devel-bounces@lists.xenproject.org Wed Apr 08 11:27:34 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 08 Apr 2026 11:27:34 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1275749.1561490 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wAR4G-0006WE-Fi; Wed, 08 Apr 2026 11:27:32 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1275749.1561490; Wed, 08 Apr 2026 11:27: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 1wAR4G-0006W7-BV; Wed, 08 Apr 2026 11:27:32 +0000
Received: by outflank-mailman (input) for mailman id 1275749;
 Wed, 08 Apr 2026 11:27:31 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <jbeulich@suse.com>) id 1wAR4F-0006Vz-6b
 for xen-devel@lists.xenproject.org; Wed, 08 Apr 2026 11:27:31 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wAR4E-005guk-Io
 for xen-devel@lists.xenproject.org; Wed, 08 Apr 2026 13:27:30 +0200
Received: from [10.42.69.12] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <jbeulich@suse.com>)
 id 69d63b91-bab6-0a2a0a5309dd-0a2a450ca434-46
 for <xen-devel@lists.xenproject.org>; Wed, 08 Apr 2026 13:27:30 +0200
Received: from [209.85.221.54] (helo=mail-wr1-f54.google.com)
 by tlsNG-d25034.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.0)
 (envelope-from <jbeulich@suse.com>)
 id 69d63b2a-f40c-0a2a450c0019-d155dd36d1e1-3
 for <xen-devel@lists.xenproject.org>; Wed, 08 Apr 2026 13:25:30 +0200
Received: by mail-wr1-f54.google.com with SMTP id
 ffacd0b85a97d-43cfde3c3f3so5923938f8f.3
 for <xen-devel@lists.xenproject.org>; Wed, 08 Apr 2026 04:25:30 -0700 (PDT)
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-43d1e2a6f08sm60438329f8f.6.2026.04.08.04.25.28
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Wed, 08 Apr 2026 04:25:29 -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=google header.d=suse.com header.i="@suse.com" header.h="Content-Transfer-Encoding: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=1775647530; x=1776252330; darn=lists.xenproject.org;
        h=content-transfer-encoding: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;
        bh=SBdtrVKnRDnuCZ5SKaN1WgYqxSH99iwR1eEH7wK1pxI=;
        b=Z1OI6+u6uuUIecuDuxiuNmmcNxUw3H6AAh3IBNFjrbItn4nSScgG0ZhYPr9xkrp6EL
         2jIH9DW6RUonMGAlCvkHHnuiSiMqOYvyYdiK5+/KmaA/WrYVKUFVuJRAa5FeXvavfKFk
         FUQzd2SYTvpo3qhJxWPqQTwC2eJj1MoXdx4zhln0LBdxVR4VYcGWd+MzSsoEhO32SqzJ
         Pz+ovfnK9ChYXXi+wFldEFxwl4PVeOdala0RNLdhYMREr33dpCfzPNK8x734gvaKOOSF
         GIpwHvGfsi5olblYDBkzYQR+fRPhjJ8Dlv93XMW+uMsZ4tIFf7v3IzfSA09uAm6Sr/G8
         CDMA==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20251104; t=1775647530; x=1776252330;
        h=content-transfer-encoding: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;
        bh=SBdtrVKnRDnuCZ5SKaN1WgYqxSH99iwR1eEH7wK1pxI=;
        b=rxOORMA2ndl9VhxKy43jVQpsrbPIfzRdfsTMB3iCOAnjS4xnIvYQB6DlmA4BRLlsAv
         5jnvfq6kKk/S4YFzHRBC9IKxr654Vdpwl8aKUyRZmC1n3ZxPJSKHQOhQL12FbpkQUW56
         6qc0EcdHquXpJizqPSR5DsQ488BhW70OsVb/+qxP1dmHm4OntgztwsMevohKgs5pESK+
         hRkGvzioYnjdggWV8Tvi807mYiCcOcVYBh854zY28XqZQqsCp4kVy8+A0/rCS4jd3pjd
         FJziqvGj9YbklGXJgshfNcRX4j99xU1kdgCNIrdxEKB8SjHRes2/PBrGIQWK0vDeNsGf
         PKmQ==
X-Forwarded-Encrypted: i=1; AJvYcCXHXgwBWYfAqCoSURY7kCJ8OI6L9Zip2xWIsZEGNXNDBJtxqdX4cL/pc24dpiP4m4YDzO4QE0tJ+/g=@lists.xenproject.org
X-Gm-Message-State: AOJu0YxOD97a9gRFb5E4xcDtTUZHh8RPPoTRVBXT98GDo1JGLQ32n3ih
	KyIcjwmWM/+dHH2+dsa0T9/WUjz2BUHSWYeic6Vai2auBqXzcRWNcoLcE7swQbgSFg==
X-Gm-Gg: AeBDievdQEU6RMGxw3+7sQE1SGsi2th3tavwphQJTnuOS5VG2+rwk4uxskc9svG9IVm
	WwgLZ8FrEcgqOhiJGuQfQy+JbqVLzqNIe6QoUEf3cMd0GNgYWu1cNk8o0wAEDqE7zNaFUTo+Mn2
	UYqq8gA8/aW4p4WlHWfUIeTwoTALefiWEavQxUdEZrGWmUtcMl1+V1qxs1HpRqgTgNhqUFFq6mL
	Y8Vv5LUjtWqDoZw+U+3MuEpEB9fekT0taGlOaEknV7UebzNytpU9edoZxGghSUZEVEq4c6jIK93
	1+Z6JHS8cHyWoCf/0Qk6GTCu3e1daXfEIU1HbcoGPwQH1VFPCS9MneDk8ez2vQKo0A/1K1JDLvr
	PER2JhbQb+UalfW9aY7u6op4+RClNS6VM2Un8RqMbWK/qQnE5RMPTe2NftrzE/qfRiK9iba9c7b
	7IdxP+zq3YqWxdoD68JPexNHcHwo8eE6iSDz7laACANyBn5zT9KvlsxbHx6B+ZEnoKMcJSf0jVV
	QdPXpnoHXZU/7U=
X-Received: by 2002:a5d:5f85:0:b0:43c:f7f6:6016 with SMTP id ffacd0b85a97d-43d292daa51mr30310863f8f.32.1775647529378;
        Wed, 08 Apr 2026 04:25:29 -0700 (PDT)
Message-ID: <2830de65-c037-439b-a9ff-bfe6d9cce212@suse.com>
Date: Wed, 8 Apr 2026 13:25:28 +0200
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH v2 3/4] xen/riscv: allow Xen to use SSTC while hiding it
 from guests
To: Oleksii Kurochko <oleksii.kurochko@gmail.com>
Cc: Romain Caritey <Romain.Caritey@microchip.com>,
 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.pau@citrix.com>,
 Stefano Stabellini <sstabellini@kernel.org>, xen-devel@lists.xenproject.org
References: <cover.1774863161.git.oleksii.kurochko@gmail.com>
 <ff0e2e7332d5b887d00ad10caf01952f90f5da5c.1774863161.git.oleksii.kurochko@gmail.com>
 <df6fb4f1-b420-4b5f-90e1-dea9069311bf@suse.com>
 <e69e8de7-dbcc-4839-bff6-866c3fa50ea2@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: <e69e8de7-dbcc-4839-bff6-866c3fa50ea2@gmail.com>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
X-purgate-ID: tlsNG-d25034/1775647530-FDD53A3D-800E6822/0/0
X-purgate-type: clean
X-purgate-size: 2574

On 08.04.2026 12:58, Oleksii Kurochko wrote:
> On 4/2/26 8:41 AM, Jan Beulich wrote:
>> On 31.03.2026 21:04, Oleksii Kurochko wrote:
>>> @@ -61,20 +73,7 @@ int reprogram_timer(s_time_t timeout)
>>>       if ( deadline <= now )
>>>           return 0;
>>>   
>>> -    /*
>>> -     * TODO: When the SSTC extension is supported, it would be preferable to
>>> -     *       use the supervisor timer registers directly here for better
>>> -     *       performance, since an SBI call and mode switch would no longer
>>> -     *       be required.
>>> -     *
>>> -     *       This would also reduce reliance on a specific SBI implementation.
>>> -     *       For example, it is not ideal to panic() if sbi_set_timer() returns
>>> -     *       a non-zero value. Currently it can return 0 or -ENOSUPP, and
>>> -     *       without SSTC we still need an implementation because only the
>>> -     *       M-mode timer is available, and it can only be programmed in
>>> -     *       M-mode.
>>> -     */
>>> -    if ( (rc = sbi_set_timer(deadline)) )
>>> +    if ( (rc = set_xen_timer(deadline)) )
>>>           panic("%s: timer wasn't set because: %d\n", __func__, rc);
>>>   
>>>       /* Enable timer interrupt */
>>> @@ -85,10 +84,17 @@ int reprogram_timer(s_time_t timeout)
>>>   
>>>   void __init preinit_xen_time(void)
>>>   {
>>> +    unsigned long tmp;
>>> +
>>>       if ( acpi_disabled )
>>>           preinit_dt_xen_time();
>>>       else
>>>           panic("%s: ACPI isn't supported\n", __func__);
>>>   
>>>       boot_clock_cycles = get_cycles();
>>> +
>>> +    if ( csr_read_safe(CSR_STIMECMP, &tmp) )
>>> +        set_xen_timer = sstc_set_xen_timer;
>>> +    else
>>> +        set_xen_timer = sbi_set_timer;
>>>   }
>>
>> Doesn't all of this together eliminate the need for sbi_set_timer as a
>> separate global variable?
> There's still a need for that SBI-level dispatch. However, sbi_set_timer 
> doesn't need to be a global variable (exported from sbi.h). Since the 
> only external user after this patch is the time.c, sbi_set_timer could 
> be refactored into a plain static internal pointer with a non-static 
> wrapper function:
> 
> // sbi.c — keep dispatch internal
> static int (* __ro_after_init sbi_set_timer_fn)(uint64_t) = 
> sbi_set_timer_v01;
> 
> int cf_check sbi_set_timer(uint64_t stime_value)
> {
>      return sbi_set_timer_fn(stime_value);
> }
> 
> Do you mean this?

No. Why is it that we'd still need both set_xen_timer and sbi_set_timer
as distinct variables?

Jan


From xen-devel-bounces@lists.xenproject.org Wed Apr 08 11:34:12 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 08 Apr 2026 11:34:12 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1275780.1561498 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wARAf-0008Th-7Y; Wed, 08 Apr 2026 11:34:09 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1275780.1561498; Wed, 08 Apr 2026 11: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 1wARAf-0008Ta-4D; Wed, 08 Apr 2026 11:34:09 +0000
Received: by outflank-mailman (input) for mailman id 1275780;
 Wed, 08 Apr 2026 11:34:07 +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 1wARAd-0008TU-Mt
 for xen-devel@lists.xenproject.org; Wed, 08 Apr 2026 11:34:07 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wARAc-008Ss2-Su
 for xen-devel@lists.xenproject.org; Wed, 08 Apr 2026 13:34:06 +0200
Received: from [10.42.69.3] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <andrew.cooper@citrix.com>)
 id 69d63d2d-bab6-0a2a0a5309dd-0a2a4503cd2c-4
 for <xen-devel@lists.xenproject.org>; Wed, 08 Apr 2026 13:34:06 +0200
Received: from [40.93.194.35]
 (helo=SN4PR0501CU005.outbound.protection.outlook.com)
 by tlsNG-33051d.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.0)
 (envelope-from <andrew.cooper@citrix.com>)
 id 69d63d2d-02b3-0a2a45030019-285dc223db98-4
 for <xen-devel@lists.xenproject.org>; Wed, 08 Apr 2026 13:34:06 +0200
Received: from CH8PR03MB8275.namprd03.prod.outlook.com (2603:10b6:610:2b9::7)
 by BLAPR03MB5634.namprd03.prod.outlook.com (2603:10b6:208:285::12)
 with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9745.23; Wed, 8 Apr
 2026 11:34:03 +0000
Received: from CH8PR03MB8275.namprd03.prod.outlook.com
 ([fe80::a70d:dc32:bba8:ce37]) by CH8PR03MB8275.namprd03.prod.outlook.com
 ([fe80::a70d:dc32:bba8:ce37%6]) with mapi id 15.20.9769.018; Wed, 8 Apr 2026
 11:34:03 +0000
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@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=JUVQDh+x+x7lq0K1LUyvkI9BN/CFMeVjzmIyvmpX9D+DtB82pAo3be2nhAL5Zf0KuHJmAebiNnC5ukNbJ9citnXd44mnUFeSN8FNcj2A+BtkOuSZiWSFbulZoOArvjb0tJIzLYD36Mu74N1Zj2aPXLtYC6ZwchElRmDeXkW1l119jOnnf9pOZ51nukIOcfP0qJFsp3LQwY2LOa36fZ4KgwRuL3DMlQ1nE9AvxVQ0tEYkalwyD+Zlg0Is1o7JvGK7qXQNmAv5MBMCFmqvRxsonRUX5EyzaHq7Df7K23AKMyLMzmQy8fFzRj+CTph9kNgG1QDH0W677kCcLT8t0xu8ag==
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com;
 s=arcselector10001;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1;
 bh=hDRpph66zub1viTKCSzkRUJG06bJCnyd+BNdnuHGBwM=;
 b=xrkk+XyPEzgyzpxI01wNw0FKuaWPNu3XwFS1GXwOSx1SyhvMkCq6OHjOBA7NbsciNPkVTw1LQXuNC6ljyXa38o8zyR4/k60pQ5OKEoYeloceXjV4AvcOu6l7mhd9t318anSlIbnnrlul1PCaW0SV6+3UMdAyELPwXDNkbyy75ZA+7bvsDnvdF41c81AUhw9tbIL/aQa3UFoTgtBf2E10Q0Ps4gJoOq3lC8aMBEc7W/+aKao35fAsSCC/LGqkE+PXoD3QiGMH2Iyr+gf+G3r0Ge+8OqGY9EIbC1NNDvR3sv0Yqsk2g+n7PoN4pwuQ0BPGFhNrHg2KuhA4n1qFpbFSIQ==
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=hDRpph66zub1viTKCSzkRUJG06bJCnyd+BNdnuHGBwM=;
 b=hzlUfxCViE+iy3ReOSuSGWKWvqu4G4GdUuwGQrTH9A0UlCjqKdwwNDALdO385zXGwzB/yaU6rweB3to7S7DZAzbGlvYP4MPyAqnYGs/ZEVO2Yy7I+ppRSrdXQvYHFtlVFNwfwyuB84CT0o8BjOxJdqHQD1Z7UXxftYqeIDejNkk=
Authentication-Results: dkim=none (message not signed)
 header.d=none;dmarc=none action=none header.from=citrix.com;
Message-ID: <9b9dd025-fd4d-4fa1-abb4-ad10c86f839e@citrix.com>
Date: Wed, 8 Apr 2026 12:34:00 +0100
User-Agent: Mozilla Thunderbird
Cc: Andrew Cooper <andrew.cooper3@citrix.com>,
 =?UTF-8?Q?Roger_Pau_Monn=C3=A9?= <roger.pau@citrix.com>,
 Teddy Astie <teddy.astie@vates.tech>
Subject: Re: [PATCH v10] x86emul: support LKGS
To: Jan Beulich <jbeulich@suse.com>,
 "xen-devel@lists.xenproject.org" <xen-devel@lists.xenproject.org>
References: <a902e1bb-d51e-4889-a4af-505fd19e63d0@suse.com>
Content-Language: en-GB
From: Andrew Cooper <andrew.cooper3@citrix.com>
In-Reply-To: <a902e1bb-d51e-4889-a4af-505fd19e63d0@suse.com>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
X-ClientProxiedBy: LO4P265CA0089.GBRP265.PROD.OUTLOOK.COM
 (2603:10a6:600:2bc::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_|BLAPR03MB5634:EE_
X-MS-Office365-Filtering-Correlation-Id: bb563a51-ebb2-4557-3b18-08de9562bc58
X-MS-Exchange-SenderADCheck: 1
X-MS-Exchange-AntiSpam-Relay: 0
X-Microsoft-Antispam:
	BCL:0;ARA:13230040|1800799024|376014|366016|56012099003|18002099003|22082099003;
X-Microsoft-Antispam-Message-Info:
	BVHnnS4x8H1sJufaAQ9vqhO8jzEIJlWbFtuyIedCYnwngmQ8hErkH8VfbaGjeHSrqKOWUJ+pSEeg+uhYIHMrqLwx7/patk/glCr3NI/K88aFSrRxd7+Ls0ZYldrMYb5M3sTfdtcYNV3GyOk/27P+JsYuwac19hmgHMJsZKDrPhijkDNctpUr/F4nCtxPE0JRHETrO+1uBCo0Z8sEqVwGrVUzvf2YwxVC3T3K2qQeQv1ExvEokJVTX6TNB0ARQ3bTBhn6x6SGuslGVLGPZGGSVReiBGj0/k30DlLP/vsPsd3YRsfAOHNw+rWQb2p4M1CI8A/oHB9PTWgy7TANP6HWs+DouaZJo+TBQBkC+E6F4SaNr4U1j0jwnMk5dtRjT8QUVz84cH9fAJisuA9BDns25uYTY72jva0tHnmZOMXHNtejuIvOROMAw46mhgrM5BWto7vJlGOzb0jwRYLvsIBeCqFbgTyOuGfp2/pvBd1DBbfuH1M5sMvW6NrxUDaGkj1UbEqCSMnk8v0PwL1vmajMCkUYNuMfqvwYX6sYweDyQNWvn0zzAYPkNtxLcsmB0YOgVe0ZVztUAlUX1bPUkFirlCi992ktxnECgBkGL1uLKg66hqMeGoZuJW0IXAxCg5WyZ4iSKwVEyj8qAfsQz58FdIhC3/UKUZhDopj4cZdllIzQKVRBx56+cWoyhv234joJ6Gw/I6OFbl+YjBqbWRParh+NSGQgBjQTBIhV3x+e98U=
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)(376014)(366016)(56012099003)(18002099003)(22082099003);DIR:OUT;SFP:1101;
X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1
X-MS-Exchange-AntiSpam-MessageData-0:
	=?utf-8?B?SnpGMlN2L05nMHdFVWNMdWgxVXBXN2Q4ZWxFR251QjhxRm42YmxuMUxNcmdy?=
 =?utf-8?B?R0FOSkk5bG1XWEllWUlWN3l3RlN6ZnZEUXdYK2FjSUU3R2RxZWJvYnE4bU45?=
 =?utf-8?B?Zk40cmY0ZWtYckViU20vbHFMRjFUcy9YaW5UUVp4SWwyQlFPMFFKZWNwOWJO?=
 =?utf-8?B?WTlxbzJKMmV3K0ZqSllwUEM5a2h0TDhnWHlYQjFJMUZlcFM4d1FKV3RzRmlH?=
 =?utf-8?B?cll0YUlOanhWVU5xeFVXZUQzVHdUWllpNUI1ZldsbjJNbGhiaFVHK1R1SUpP?=
 =?utf-8?B?SXRSbHd6Y1dtOWlVZXp3M3MzQWZpQTk4T1BrZURPclZWTldaWkE1TUhmZlpz?=
 =?utf-8?B?Rm5JYVkwazF0T2F0T3JtSVRGeDZhMFRMQ2tuOWZVbkdCSVIzd3djbE1XclNv?=
 =?utf-8?B?c21XSnQ0Z3M0dFd5RUNNUHNwamdEbE52RkMwdG5obmROZTh4MFNpeUlCQU9O?=
 =?utf-8?B?TmwvdjQ4YkdTRkVYelRFaUtEVDJTYTNrTWtVT2p0ZVNGdXdLOElWdG5EajlS?=
 =?utf-8?B?RWo0WWZUTVhIem14WGJEekxDZTc1VUFlOFN1R1pFdjBkZjQ5ai9nenNZaGYx?=
 =?utf-8?B?M2VSYnVNUlU3NVZRQXNybE5sWENjNHhhcG5XdjdTNU4rWEY2ZXp4T2FvVVhT?=
 =?utf-8?B?dzRjV05iZXg0RlhQZjk0d2lRNFN2OWxobi9yWFpoTFhkOGVlZlg0L2xFVFNv?=
 =?utf-8?B?dkQ5aWxia1krMkU1a2h2dGRKU1VTa0VaWjRxVnpXZklWZVFiWXd3aXNLV1RO?=
 =?utf-8?B?a1FjeENqSmNQd1ZwU3VOTU1MdUlCSVJYY3J4M0xJTjFsUGkyc3pBdXdCa3Yx?=
 =?utf-8?B?WURGbjVpL3dpdFFLVnRmbnIreDZDTysxL2J3RnJhWXZKd04xd01zSGJhNCs2?=
 =?utf-8?B?ZUFsTndqYk8xL1V4ekxOclZFbGtNamJTVmdicTlJQXVSTWRqNUZpQUVzekkz?=
 =?utf-8?B?MG8rZmdNMnhTV3g4RGpNb3ZiczV3S3RGS2V1c0U1Z3U1aE50bE5ORjh2SWt5?=
 =?utf-8?B?ODJyMFMzd1l6YzRqblVlOUZqemVLZEt3N1MwUHZ0cUgvMkFrR3lsd1Bjdk9j?=
 =?utf-8?B?V3RsL1lwanVLbSt2LzlRaFEyUWJTYjhCc2Q3MFNYN0NDdzF1aVJuYkd6TzlM?=
 =?utf-8?B?UXdZTkx3ckNWQnlLUkdDY3ZQRlpnaVhBQnIraFEwSHp2bkJCbXRpWUVUWVdv?=
 =?utf-8?B?RkhNL0xnM3QvUFBHRHM2Q3FlZ21vekVMV3I0U0s4ZmJaTnljbVcvZGJTbitU?=
 =?utf-8?B?VFhmdWYvWnBldkZiMG9JdFhOSlV4ZWUrTHJsaWZOdmZQazJzUE5GZTBTcjFG?=
 =?utf-8?B?QTBraHk3dWtER3VyS21NNW0vTDFrV2Q1RE94ZHFpSUIzOVprTmV6R1N5V09S?=
 =?utf-8?B?OWdJcDhNU3hkOGU0ZHU1QjVxU0RhMDRPNXJiakdRZDcvbEovak5zL2dZc1VY?=
 =?utf-8?B?WGl3bmNRNGxXMFVTMGlheFFXV1FoYXh1bTk3ZFUvVjhZeE5DVjRXeUZsZnEv?=
 =?utf-8?B?WEpsUCtvMi9ram5NNkZXakdFV2R6dHFVN2J6Y3dmRUw4dmI2dmdkMWdXbGJr?=
 =?utf-8?B?NmhQR2RnTW9zb3piOFlMOER2T1dibGR6eGZncGF4RVgxQysxb0F4UFljb1Rr?=
 =?utf-8?B?Y3JRdUJIMHhpdTFFV2xwNUJ4Q05rS3lVNTJTY1AzcllCUzJQanJxZEtmbHhQ?=
 =?utf-8?B?R0pBSEM2NThpT0tPQXI3WGNWeHJwWU50MmwyYTExK0VrWktxcmxkcEw3aUtQ?=
 =?utf-8?B?OGNvajkzYnhkRWJpWmpOeGFVaU1JYkIyMDVUK3I5bWxlYXVzekJwOGYzOUFs?=
 =?utf-8?B?K1pLbVRXeWhGd2xRUmdTd0IvWU0zeXJ4M2JhM2pKMkZCaURIbkZyVzQvNUxC?=
 =?utf-8?B?ZWNKd1dycXIvcnpFVHFQcDBibEpSWU1LL1Nxd3g5S3M1OGt5OFJVWmFzSEFi?=
 =?utf-8?B?VnQybDFKTURtU2hJL2R5TVFoY2VUWmF6K1hNWFdOWUdLb2x5WlFsbUVSdk0v?=
 =?utf-8?B?Qi9mU1M5bFZkOG1DYWpWcjBXOGpzbGJudlJjc2didmlpQkhuQTlUaUFwcU5C?=
 =?utf-8?B?TytibUZZYWxHckRSOFllVkd0eTN5NWo0VE5ReTdFM2U0VEk5akRPSG1MejZi?=
 =?utf-8?B?RjFkZnU1MHRROVU0L1krS1pJVmpVK3JVUmlWU1A2RGpZeHVpSXBqVVZGemZw?=
 =?utf-8?B?dFp4KzVCM2ZDc2Yrd1Zra29qYjR1UzlFWmpvTzZTa0FmMHRrekRnenFJVUg0?=
 =?utf-8?B?V1JGVkdoUEpORWRxRGQ2OTdGQWNUMmRYbmoyQytQZ08vaGIxOUhwVytjSzVV?=
 =?utf-8?B?WHBPbmxYdlB6bExVazhWQXBjNy96RFpJWTBRYVpHYUVOMHBPSXNQczY4OVFn?=
 =?utf-8?Q?QFae6mGYKeX0j/dI=3D?=
X-OriginatorOrg: citrix.com
X-MS-Exchange-CrossTenant-Network-Message-Id: bb563a51-ebb2-4557-3b18-08de9562bc58
X-MS-Exchange-CrossTenant-AuthSource: CH8PR03MB8275.namprd03.prod.outlook.com
X-MS-Exchange-CrossTenant-AuthAs: Internal
X-MS-Exchange-CrossTenant-OriginalArrivalTime: 08 Apr 2026 11:34:03.3195
 (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: 2AO7vDKYxzoHLEde2OnU++8jggkrMDeEWFOYR6XxuXY+1pdIM3b8UUoUiSBkkvodzvYydfAR3wryhwnDs0Vt4aHCwp7dMhK9pZ8ERwt1v7I=
X-MS-Exchange-Transport-CrossTenantHeadersStamped: BLAPR03MB5634
X-purgate-ID: tlsNG-33051d/1775648046-CAB23C9A-B5E99887/0/0
X-purgate-type: clean
X-purgate-size: 6620

On 08/04/2026 11:22 am, Jan Beulich wrote:
> Provide support for this insn, which is a prereq to FRED. CPUID-wise,
> while its and FRED's enumerators were already introduced, their dependency
> still needs adding.
>
> While adding a testcase, also add a SWAPGS one. In order to not affect
> the behavior of pre-existing tests, install write_{segment,msr} hooks
> only transiently.
>
> Signed-off-by: Jan Beulich <jbeulich@suse.com>
> ---
> For PV save_segments() would need adjustment,

Not really.  CPL3 must never have a way of modifying GS_KERN, hence ...

> but the insn being restricted to ring 0 means PV guests can't use it anyway

... the CPL0 restriction.

Arguably I should have had this in one of the FRED patches:

diff --git a/xen/arch/x86/domain.c b/xen/arch/x86/domain.c
index 1151997758c6..3364e774ada7 100644
--- a/xen/arch/x86/domain.c
+++ b/xen/arch/x86/domain.c
@@ -1952,7 +1952,7 @@ static void load_segments(struct vcpu *n)
  * changes to bases can also be made with the WR{FS,GS}BASE instructions, when
  * enabled.
  *
- * Guests however cannot use SWAPGS, so there is no mechanism to modify the
+ * Guests cannot use SWAPGS or LKGS, so there is no mechanism to modify the
  * inactive GS base behind Xen's back.  Therefore, Xen's copy of the inactive
  * GS base is still accurate, and doesn't need reading back from hardware.
  *


but I don't think it's appropriate to merge into this patch.

> (unless we wanted to emulate it as another privileged insn).

We already have "LKGS" in hypercall form.  It's spelt
SEGBASE_GS_USER_SEL and has existed for 20 years or so.

I don't see any reason to extend emul_priv_op().

>
> I've also dropped the test harness read_segment() change. It generally
> would be correct to have, but isn't needed anymore with neither SWAPGS
> nor LKGS handling using the hook.

Dropping read_segment() makes your patch depend on Teddy's, now that
test_x86_emulator is blocking in CI.

This matters for backports.  I expect I'll be backporting guest support
in not-too-long.

> --- a/xen/arch/x86/x86_emulate/x86_emulate.c
> +++ b/xen/arch/x86/x86_emulate/x86_emulate.c
> @@ -2899,8 +2899,37 @@ x86_emulate(
>                  break;
>              }
>              break;
> -        default:
> -            generate_exception_if(true, X86_EXC_UD);
> +
> +        case 6: /* lkgs */
> +            generate_exception_if((modrm_reg & 1) || vex.pfx != vex_f2,
> +                                  X86_EXC_UD);
> +            generate_exception_if(!mode_64bit() || !mode_ring0(), X86_EXC_UD);
> +            vcpu_must_have(lkgs);
> +            fail_if(!ops->read_msr || !ops->write_segment || !ops->write_msr);
> +            if ( (rc = ops->read_msr(MSR_SHADOW_GS_BASE, &msr_val,
> +                                     ctxt)) != X86EMUL_OKAY ||
> +                 (rc = ops->read_msr(MSR_GS_BASE, &sreg.base,
> +                                         ctxt)) != X86EMUL_OKAY )
> +                goto done;
> +            dst.orig_val = sreg.base; /* Preserve full GS Base. */

"Preserve current GS Base."

> +            if ( (rc = protmode_load_seg(x86_seg_gs, src.val, false, &sreg,
> +                                         ctxt, ops)) != X86EMUL_OKAY )
> +                goto done;
> +            /* Write (32-bit) base into SHADOW_GS. */

"Write new base into SHADOW_GS.  Zero extended from GDT/LDT."

> +            if ( (rc = ops->write_msr(MSR_SHADOW_GS_BASE, sreg.base,
> +                                      ctxt, false)) != X86EMUL_OKAY ||
> +                 (sreg.base = dst.orig_val, /* Reinstate full GS Base. */

"Reinstate original GS base."

> +                  (rc = ops->write_segment(x86_seg_gs, &sreg,
> +                                           ctxt)) != X86EMUL_OKAY) )
> +            {
> +                /*
> +                 * In real hardware, access to the registers cannot fail.  It
> +                 * is an error in Xen if the writes fail.
> +                 */
> +                ASSERT_UNREACHABLE();
> +                x86_emul_reset_event(ctxt);
> +                generate_exception(X86_EXC_DF, 0);
> +            }
>              break;
>          }
>          break;

This patch needs one more hunk:

diff --git a/xen/arch/x86/cpu-policy.c b/xen/arch/x86/cpu-policy.c
index 5273fe0ae435..9d8195e2ae56 100644
--- a/xen/arch/x86/cpu-policy.c
+++ b/xen/arch/x86/cpu-policy.c
@@ -765,14 +765,25 @@ static void __init calculate_hvm_max_policy(void)
      */
     __set_bit(X86_FEATURE_NO_LMSL, fs);
 
-    /*
-     * On AMD, PV guests are entirely unable to use SYSENTER as Xen runs in
-     * long mode (and init_amd() has cleared it out of host
capabilities), but
-     * HVM guests are able if running in protected mode.
-     */
-    if ( (boot_cpu_data.vendor & (X86_VENDOR_AMD | X86_VENDOR_HYGON)) &&
-         raw_cpu_policy.basic.sep )
-        __set_bit(X86_FEATURE_SEP, fs);
+    if ( boot_cpu_data.vendor & (X86_VENDOR_AMD | X86_VENDOR_HYGON) )
+    {
+        /*
+         * On AMD, PV guests are unable to use SYSENTER as Xen runs in long
+         * mode (and init_amd() has cleared it out of host
capabilities), but
+         * HVM guests are able if running in protected mode.
+         */
+        if ( raw_cpu_policy.basic.sep )
+            __set_bit(X86_FEATURE_SEP, fs);
+
+        /*
+         * NullSelectorClearsBase is really a "hardware doesn't have
this bug
+         * any more" bit.  All FRED-capable hardware has NSCB
properties, so
+         * disallow a configuration which suggest/causes behaviour the
OS isn't
+         * expecting.
+         */
+        if ( !test_bit(X86_FEATURE_NSCB, fs) )
+            __clear_bit(X86_FEATURE_LKGS, fs);
+    }
 
     /*
      * VIRT_SSBD is exposed in the default policy as a result of


because otherwise a CPU Policy could hide NCSB and LKGS would be have
correctly when executed normally but malfunction in the emulator.

This hunk is in lieu of having vendor-dependent deep-deps calculations,
although it would need duplicating in userspace too.

Because this is only a link between an AMD-only feature and a common
feature, I think I can express it by only having a per-vendor
deep_features bitmap and keeping a shared deep_deps matrix.

Perhaps I should prototype that instead, but it would become another
dependency for this patch.

~Andrew


From xen-devel-bounces@lists.xenproject.org Wed Apr 08 11:34:47 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 08 Apr 2026 11:34:47 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1275787.1561506 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wARBH-0000WN-ET; Wed, 08 Apr 2026 11:34:47 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1275787.1561506; Wed, 08 Apr 2026 11: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 1wARBH-0000WG-Ba; Wed, 08 Apr 2026 11:34:47 +0000
Received: by outflank-mailman (input) for mailman id 1275787;
 Wed, 08 Apr 2026 11:34:45 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <jbeulich@suse.com>) id 1wARBF-0000Un-OR
 for xen-devel@lists.xenproject.org; Wed, 08 Apr 2026 11:34:45 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wARBF-009oGY-43
 for xen-devel@lists.xenproject.org; Wed, 08 Apr 2026 13:34:45 +0200
Received: from [10.42.69.3] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <jbeulich@suse.com>)
 id 69d63d4e-bab6-0a2a0a5309dd-0a2a45039f58-48
 for <xen-devel@lists.xenproject.org>; Wed, 08 Apr 2026 13:34:44 +0200
Received: from [209.85.128.54] (helo=mail-wm1-f54.google.com)
 by tlsNG-33051d.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.0)
 (envelope-from <jbeulich@suse.com>)
 id 69d63d54-02b3-0a2a45030019-d1558036e0be-3
 for <xen-devel@lists.xenproject.org>; Wed, 08 Apr 2026 13:34:44 +0200
Received: by mail-wm1-f54.google.com with SMTP id
 5b1f17b1804b1-488b0e1b870so50984305e9.2
 for <xen-devel@lists.xenproject.org>; Wed, 08 Apr 2026 04:34:44 -0700 (PDT)
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-488be75215dsm133255955e9.6.2026.04.08.04.34.43
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Wed, 08 Apr 2026 04:34:44 -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=google header.d=suse.com header.i="@suse.com" header.h="Content-Transfer-Encoding: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=1775648084; x=1776252884; darn=lists.xenproject.org;
        h=content-transfer-encoding:autocrypt:subject:from:cc:to
         :content-language:user-agent:mime-version:date:message-id:from:to:cc
         :subject:date:message-id:reply-to;
        bh=CdptFfRcnIR+guBMaOX6EdAYvW7VI11lHEC8d4E2Q7Q=;
        b=HjqbLgfSwoSCoKL2PWvJWsRuN6GTefxpENEvPFyj1bvOUgYC29CARFgCDl97tp1w+h
         ojXRnzc07zmuPSQQhrByEQldnjnVrN/Fe3XdtGCvaC2U3OiRznLs2YkzC7/l69Bp2hQi
         RSksaNMp+zGRkekjkSE0hxy71gBUPBhnaM++xse/piV+hGuz6hudqGEP5i5GveR4RAy9
         2KgJCcPay0J7puYa0zGmFWat8lJv56XWutGGkvW8vJPaMMuk4OuPpaIulQm+ejFEw69B
         r2dnvfnqqabG707WFuY8bMk73NbVICwMRA66P1HehbsLt7C8O+/RZxeVYwaGsibUiOdM
         hnhg==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20251104; t=1775648084; x=1776252884;
        h=content-transfer-encoding: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;
        bh=CdptFfRcnIR+guBMaOX6EdAYvW7VI11lHEC8d4E2Q7Q=;
        b=QR6ki+j7nk2CAZ/G/YIWNjB4GJPQ7diC01Q3tJuPZ9szkpzT5wVeMBrS2EMmzKRhcX
         g60nFuhVszclXbTEp5bh7BEkXbDlPJ2KOUr7BpMUDPBxm+tQWvC68ymYe+3hNDtBUp1c
         TH1M0zOvrBXPtwFmuRjn+AL5xWmKh2U0JkUlAhHGfThqZlkqp13ijPjRaUc+SLFDJaFH
         NxBnXWYKMlqPq9bKPVvqLXHd2AI7DXVdmAas3178CZO0AbpjxYO4Im6RgC6rqmUXB8qj
         beeLm3qQWZTDu8zAaPzgW062p2XAxmkP0Hhq+Cl/8vYpsSU7kACoqUSx8Ny4vxc//f/b
         Icfg==
X-Gm-Message-State: AOJu0Yz39yJnEG9lgaBAyR1atjX8NzlF5lbqHbDwYaYu7iuJCTCqLoPN
	vbsfCtrGe97+H8U6x6TW6KsVBR/UfmrOmw+Zri84CvI+Lh/vcifJurC1jd9Mv5Z63FM6q+JODm+
	1uEiapA==
X-Gm-Gg: AeBDieufCTzz49PogaIehWDGD9KL9iSFNxnoeEVIDjEtCwjyq6mAifuJP9ElB2YCq+T
	D+iPZo1SYHAcsrt0B2lyfcYrNh0hHDDz4oRrAN07JobXq5lqkPOU498UvMRa+aQacE/Cm+hpc18
	QvcAygvuxTdAxOv5bDKKkYs+b+UAmAbvXRB/XWvob2yWqtnQaybsX6DGA9r9ENowDq3f5ywZIoZ
	vr8R4LmXMJyi0vfNu7aYBwBq4cWJY+4TBOCORhfyoNfFGXHi7I3AAvKtXOy8KzVIctCVJrnQhQr
	whk33X1lXifLLBs2PzjHGK57QbAmyefeY0mNINiPCVKVyBe55bnf+pTZ8lPo9wfxdQAs7m/TCmc
	ANJIjtpiNxgmLG8mIvcGVBcZwLg8a3u3fp+XSKHz6RHYtYEQcUct7LYe1W7/2buWTb6quaxj/7P
	zcl8ssqlrvmLLeOlP2tEe3f/OvfEJQ1ULYYUpOveIwR1YCPjFEDZKldFv56s/Xv+QW8dDmWicUM
	MbLyLHVTWOva+mN2HdHn/lFWg==
X-Received: by 2002:a05:600c:5247:b0:488:b187:3c with SMTP id 5b1f17b1804b1-488b1870244mr152150515e9.14.1775648084324;
        Wed, 08 Apr 2026 04:34:44 -0700 (PDT)
Message-ID: <4b89f640-046a-49c1-95f1-947d98135e5b@suse.com>
Date: Wed, 8 Apr 2026 13:34:43 +0200
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>,
 =?UTF-8?Q?Roger_Pau_Monn=C3=A9?= <roger.pau@citrix.com>,
 Teddy Astie <teddy.astie@vates.tech>,
 Marek Marczykowski <marmarek@invisiblethingslab.com>
From: Jan Beulich <jbeulich@suse.com>
Subject: [PATCH] x86/cpuidle: split the max_cstate variable
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/1775648084-42B1DC9A-06BB0736/0/0
X-purgate-type: clean
X-purgate-size: 12120

The admin can control the upper bound wanted not only via command line
option, but also via XEN_SYSCTL_pm_op_set_max_cstate. While decisions how
to set up the system are okay this way as long as we deem the command line
option a strict upper bound, what to do during S3 resume should not be
based on that potentially varying value. Decisions there need to use
solely the strict upper bound we may have enforced ourselves (or which was
forced onto us via command line option).

Rather than altering pit_broadcast_is_available(), drop the function
altogether. It's pretty odd for acpi/cpu_idle.c to call into time.c, just
for that to call into acpi/cpu_idle.c again.

Fixes: 8d24303023ec ("x86: don't write_tsc() non-zero values on CPUs updating only the lower 32 bits")
Signed-off-by: Jan Beulich <jbeulich@suse.com>
---
cpuidle_disable_deep_cstate(), when called from handle_rtc_once(), is
still somewhat of a problem: Boot time and resume time runs of
_disable_pit_irq() may still behave differently because of that.

If we wanted the sysctl to possibly move the maximum C-state beyond what
was given on the command line, things would get yet more complicated, as
we'd then need to re-configure the driver that's in use.

I wonder how useful the ACPI_STATE_C<n> #define-s really are. Plain 1 is
used in e.g. probe_c3_errata(), and the plain 7 doesn't even have a
respective constant (nor would that be suitable, as that's not really an
ACPI state).

--- a/xen/arch/x86/acpi/cpu_idle.c
+++ b/xen/arch/x86/acpi/cpu_idle.c
@@ -119,7 +119,7 @@ bool lapic_timer_init(void)
         lapic_timer_off = hpet_broadcast_enter;
         lapic_timer_on = hpet_broadcast_exit;
     }
-    else if ( pit_broadcast_is_available() )
+    else if ( cpuidle_usable_deep_cstate() )
     {
         lapic_timer_off = pit_broadcast_enter;
         lapic_timer_on = pit_broadcast_exit;
@@ -131,12 +131,15 @@ bool lapic_timer_init(void)
 }
 
 void (*__read_mostly pm_idle_save)(void);
-unsigned int max_cstate __read_mostly = UINT_MAX;
+
+unsigned int max_usable_cstate __read_mostly = UINT_MAX;
+unsigned int max_allowed_cstate __read_mostly = UINT_MAX;
 unsigned int max_csubstate __read_mostly = UINT_MAX;
 
 static int __init cf_check parse_cstate(const char *s)
 {
-    max_cstate = simple_strtoul(s, &s, 0);
+    max_allowed_cstate = simple_strtoul(s, &s, 0);
+    max_usable_cstate = max_allowed_cstate;
     if ( *s == ',' )
         max_csubstate = simple_strtoul(s + 1, NULL, 0);
     return 0;
@@ -413,10 +416,11 @@ static void cf_check dump_cx(unsigned ch
     unsigned int cpu;
 
     printk("'%c' pressed -> printing ACPI Cx structures\n", key);
-    if ( max_cstate < UINT_MAX )
+    if ( max_cstate() < UINT_MAX )
     {
-        printk("max state: C%u\n", max_cstate);
-        if ( max_csubstate < UINT_MAX )
+        printk("max state: C%u\n", max_cstate());
+        if ( max_allowed_cstate <= max_usable_cstate &&
+             max_csubstate < UINT_MAX )
             printk("max sub-state: %u\n", max_csubstate);
         else
             printk("max sub-state: unlimited\n");
@@ -690,18 +694,18 @@ static void cf_check acpi_processor_idle
     u32 exp = 0, pred = 0;
     u32 irq_traced[4] = { 0 };
 
-    if ( max_cstate > 0 && power &&
+    if ( max_cstate() > 0 && power &&
          (next_state = cpuidle_current_governor->select(power)) > 0 )
     {
         unsigned int max_state = sched_has_urgent_vcpu() ? ACPI_STATE_C1
-                                                         : max_cstate;
+                                                         : max_cstate();
 
         do {
             cx = &power->states[next_state];
         } while ( (cx->type > max_state ||
                    cx->entry_method == ACPI_CSTATE_EM_NONE ||
                    (cx->entry_method == ACPI_CSTATE_EM_FFH &&
-                    cx->type == max_cstate &&
+                    cx->type == max_allowed_cstate &&
                     (cx->address & MWAIT_SUBSTATE_MASK) > max_csubstate)) &&
                   --next_state );
         if ( next_state )
@@ -1448,7 +1452,7 @@ static void amd_cpuidle_init(struct acpi
 
     for ( i = 0; i < nr; ++i )
     {
-        if ( cx[i].type > max_cstate )
+        if ( cx[i].type > max_cstate() )
             break;
         power->states[i + 1] = cx[i];
         power->states[i + 1].idx = i + 1;
@@ -1611,21 +1615,22 @@ int pmstat_reset_cx_stat(unsigned int cp
 
 void cpuidle_disable_deep_cstate(void)
 {
-    if ( max_cstate > ACPI_STATE_C1 )
+    if ( max_usable_cstate > ACPI_STATE_C1 )
     {
         if ( local_apic_timer_c2_ok )
-            max_cstate = ACPI_STATE_C2;
+            max_usable_cstate = ACPI_STATE_C2;
         else
-            max_cstate = ACPI_STATE_C1;
+            max_usable_cstate = ACPI_STATE_C1;
     }
 
     hpet_disable_legacy_broadcast();
 }
 
-bool cpuidle_using_deep_cstate(void)
+bool cpuidle_usable_deep_cstate(void)
 {
-    return xen_cpuidle && max_cstate > (local_apic_timer_c2_ok ? ACPI_STATE_C2
-                                                               : ACPI_STATE_C1);
+    return xen_cpuidle &&
+           max_usable_cstate > (local_apic_timer_c2_ok ? ACPI_STATE_C2
+                                                       : ACPI_STATE_C1);
 }
 
 static int cf_check cpu_callback(
--- a/xen/arch/x86/cpu/intel.c
+++ b/xen/arch/x86/cpu/intel.c
@@ -384,12 +384,12 @@ static void probe_c3_errata(const struct
     };
 
     /* Serialized by the AP bringup code. */
-    if ( max_cstate > 1 && (c->apicid & (c->x86_num_siblings - 1)) &&
+    if ( max_usable_cstate > 1 && (c->apicid & (c->x86_num_siblings - 1)) &&
          x86_match_cpu(models) )
     {
         printk(XENLOG_WARNING
 	       "Disabling C-states C3 and C6 due to CPU errata\n");
-        max_cstate = 1;
+        max_usable_cstate = 1;
     }
 }
 
--- a/xen/arch/x86/cpu/mwait-idle.c
+++ b/xen/arch/x86/cpu/mwait-idle.c
@@ -1045,15 +1045,16 @@ static void cf_check mwait_idle(void)
 	u64 before, after;
 	u32 exp = 0, pred = 0, irq_traced[4] = { 0 };
 
-	if (max_cstate > 0 && power &&
+	if (max_cstate() > 0 && power &&
 	    (next_state = cpuidle_current_governor->select(power)) > 0) {
 		unsigned int max_state = sched_has_urgent_vcpu() ? ACPI_STATE_C1
-								 : max_cstate;
+								 : max_cstate();
 
 		do {
 			cx = &power->states[next_state];
-		} while ((cx->type > max_state || (cx->type == max_cstate &&
-			  MWAIT_HINT2SUBSTATE(cx->address) > max_csubstate)) &&
+		} while ((cx->type > max_state ||
+                          (cx->type == max_allowed_cstate &&
+			   MWAIT_HINT2SUBSTATE(cx->address) > max_csubstate)) &&
 			 --next_state);
 		if (!next_state)
 			cx = NULL;
@@ -1458,7 +1459,7 @@ static void __init sklh_idle_state_table
 	u64 msr;
 
 	/* if PC10 disabled via cmdline max_cstate=7 or shallower */
-	if (max_cstate <= 7)
+	if (max_cstate() <= 7)
 		return;
 
 	/* if PC10 not present in CPUID.MWAIT.EDX */
@@ -1623,7 +1624,7 @@ static int __init mwait_idle_probe(void)
 	    !mwait_substates)
 		return -ENODEV;
 
-	if (!max_cstate || !opt_mwait_idle) {
+	if (!max_cstate() || !opt_mwait_idle) {
 		pr_debug(PREFIX "disabled\n");
 		return -EPERM;
 	}
@@ -1714,8 +1715,8 @@ static int cf_check mwait_idle_cpu_init(
 		hint = flg2MWAIT(cpuidle_state_table[cstate].flags);
 		state = MWAIT_HINT2CSTATE(hint) + 1;
 
-		if (state > max_cstate) {
-			printk(PREFIX "max C-state %u reached\n", max_cstate);
+		if (state > max_cstate()) {
+			printk(PREFIX "max C-state %u reached\n", max_cstate());
 			break;
 		}
 
--- a/xen/arch/x86/include/asm/time.h
+++ b/xen/arch/x86/include/asm/time.h
@@ -31,7 +31,6 @@ int cpu_frequency_change(u64 freq);
 
 void cf_check pit_broadcast_enter(void);
 void cf_check pit_broadcast_exit(void);
-int pit_broadcast_is_available(void);
 
 uint64_t cf_check acpi_pm_tick_to_ns(uint64_t ticks);
 
--- a/xen/arch/x86/time.c
+++ b/xen/arch/x86/time.c
@@ -517,7 +517,7 @@ static int64_t __init cf_check init_hpet
     bool disable_hpet = false;
 
     if ( hpet_address && strcmp(opt_clocksource, pts->id) &&
-         cpuidle_using_deep_cstate() )
+         cpuidle_usable_deep_cstate() )
     {
         if ( pci_conf_read16(PCI_SBDF(0, 0, 0x1f, 0),
                              PCI_VENDOR_ID) == PCI_VENDOR_ID_INTEL )
@@ -2655,7 +2655,7 @@ static int _disable_pit_irq(bool init)
      * XXX dom0 may rely on RTC interrupt delivery, so only enable
      * hpet_broadcast if FSB mode available or if force_hpet_broadcast.
      */
-    if ( cpuidle_using_deep_cstate() && !boot_cpu_has(X86_FEATURE_XEN_ARAT) )
+    if ( cpuidle_usable_deep_cstate() && !boot_cpu_has(X86_FEATURE_XEN_ARAT) )
     {
         init ? hpet_broadcast_init() : hpet_broadcast_resume();
         if ( !hpet_broadcast_is_available() )
@@ -2707,11 +2707,6 @@ void cf_check pit_broadcast_exit(void)
         reprogram_timer(this_cpu(timer_deadline));
 }
 
-int pit_broadcast_is_available(void)
-{
-    return cpuidle_using_deep_cstate();
-}
-
 void send_timer_event(struct vcpu *v)
 {
     send_guest_vcpu_virq(v, VIRQ_TIMER);
@@ -2999,7 +2994,7 @@ static void cf_check dump_softtsc(unsign
     else if ( boot_cpu_has(X86_FEATURE_CONSTANT_TSC ) )
     {
         printk("TSC has constant rate, ");
-        if ( max_cstate <= ACPI_STATE_C2 && tsc_max_warp == 0 )
+        if ( max_usable_cstate <= ACPI_STATE_C2 && tsc_max_warp == 0 )
             printk("no deep Cstates, passed warp test, deemed reliable, ");
         else
             printk("deep Cstates possible, so not reliable, ");
--- a/xen/include/xen/acpi.h
+++ b/xen/include/xen/acpi.h
@@ -142,30 +142,33 @@ int acpi_gsi_to_irq (u32 gsi, unsigned i
 
 #ifdef	CONFIG_ACPI_CSTATE
 /*
- * max_cstate sets the highest legal C-state.
- * max_cstate = 0: C0 okay, but not C1
- * max_cstate = 1: C1 okay, but not C2
- * max_cstate = 2: C2 okay, but not C3 etc.
-
- * max_csubstate sets the highest legal C-state sub-state. Only applies to the
- * highest legal C-state.
- * max_cstate = 1, max_csubstate = 0 ==> C0, C1 okay, but not C1E
- * max_cstate = 1, max_csubstate = 1 ==> C0, C1 and C1E okay, but not C2
- * max_cstate = 2, max_csubstate = 0 ==> C0, C1, C1E, C2 okay, but not C3
- * max_cstate = 2, max_csubstate = 1 ==> C0, C1, C1E, C2 okay, but not C3
+ * max_{allowed,usable}_cstate sets the highest allowed / usable C-state, where
+ * "allowed" is command line / sysctl based.
+ * max_*_cstate = 0: C0 okay, but not C1
+ * max_*_cstate = 1: C1 okay, but not C2
+ * max_*_cstate = 2: C2 okay, but not C3 etc.
+ *
+ * max_csubstate sets the highest allowed C-state sub-state. Only applies to
+ * the highest allowed C-state.
+ * max_allowed_cstate = 1, max_csubstate = 0 ==> C0, C1 okay, but not C1E
+ * max_allowed_cstate = 1, max_csubstate = 1 ==> C0, C1 and C1E okay, but not C2
+ * max_allowed_cstate = 2, max_csubstate = 0 ==> C0, C1, C1E, C2 okay, but not C3
+ * max_allowed_cstate = 2, max_csubstate = 1 ==> C0, C1, C1E, C2 okay, but not C3
  */
 
-extern unsigned int max_cstate;
+extern unsigned int max_usable_cstate;
+extern unsigned int max_allowed_cstate;
 extern unsigned int max_csubstate;
 
+#define max_cstate() min(max_usable_cstate, max_allowed_cstate)
+
 static inline unsigned int acpi_get_cstate_limit(void)
 {
-	return max_cstate;
+	return max_allowed_cstate;
 }
 static inline void acpi_set_cstate_limit(unsigned int new_limit)
 {
-	max_cstate = new_limit;
-	return;
+	max_allowed_cstate = new_limit;
 }
 
 static inline unsigned int acpi_get_csubstate_limit(void)
--- a/xen/include/xen/cpuidle.h
+++ b/xen/include/xen/cpuidle.h
@@ -89,7 +89,7 @@ struct cpuidle_governor
 extern int8_t xen_cpuidle;
 extern struct cpuidle_governor *cpuidle_current_governor;
 
-bool cpuidle_using_deep_cstate(void);
+bool cpuidle_usable_deep_cstate(void);
 void cpuidle_disable_deep_cstate(void);
 
 #define CPUIDLE_DRIVER_STATE_START  1


From xen-devel-bounces@lists.xenproject.org Wed Apr 08 11:52:31 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 08 Apr 2026 11:52:31 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1275806.1561516 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wARSF-0003kF-00; Wed, 08 Apr 2026 11:52:19 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1275806.1561516; Wed, 08 Apr 2026 11:52: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 1wARSE-0003k8-Sy; Wed, 08 Apr 2026 11:52:18 +0000
Received: by outflank-mailman (input) for mailman id 1275806;
 Wed, 08 Apr 2026 11:52:17 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92) id 1wARSD-0003k2-86
 for xen-devel@lists.xenproject.org; Wed, 08 Apr 2026 11:52:17 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wARSC-005mAP-5W
 for xen-devel@lists.xenproject.org; Wed, 08 Apr 2026 13:52:16 +0200
Received: from [10.42.69.11] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <oleksii.kurochko@gmail.com>)
 id 69d6416f-e002-0a2a0a5209dd-0a2a450bab44-2
 for <xen-devel@lists.xenproject.org>; Wed, 08 Apr 2026 13:52:16 +0200
Received: from [209.85.128.54] (helo=mail-wm1-f54.google.com)
 by tlsNG-42698a.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.0)
 (envelope-from <oleksii.kurochko@gmail.com>)
 id 69d6416f-bca8-0a2a450b0019-d1558036c048-3
 for <xen-devel@lists.xenproject.org>; Wed, 08 Apr 2026 13:52:15 +0200
Received: by mail-wm1-f54.google.com with SMTP id
 5b1f17b1804b1-488a9033b2cso40338505e9.2
 for <xen-devel@lists.xenproject.org>; Wed, 08 Apr 2026 04:52:15 -0700 (PDT)
Received: from [192.168.1.6] (user-109-243-69-121.play-internet.pl.
 [109.243.69.121]) by smtp.gmail.com with ESMTPSA id
 ffacd0b85a97d-43d1e2c60a2sm56083002f8f.10.2026.04.08.04.52.13
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Wed, 08 Apr 2026 04:52:14 -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=20251104 header.d=gmail.com header.i="@gmail.com" header.h="Content-Transfer-Encoding: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=20251104; t=1775649135; x=1776253935; darn=lists.xenproject.org;
        h=content-transfer-encoding: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;
        bh=390u33QAMevrk2QMAkWyTSHaXzPx8xkEYrd6JoNYhG4=;
        b=BKCV6KX1yHGCb3egk4wCOMS0RMoaZMWEMCNwm1Qd1T4g51iyxg8WZPYf3lVZTW69of
         9nyN/VRmVzze60Xtsv+tNKLua+/ivaL7KIEMfIDdMpnDIDc8BfwB4M8b65KNkS8vQay0
         0cGI5aIVABzOMK4i+q2U/aERt4VGBAe9WgfwuoKh+tmz99n58qaUX5SGQ30hO6Pq7WcB
         T2sJkGj+qUhXR2K8w50RX+3U4fpNRXDVyhU+LHGfNX9jSse7xWah5Fqyga1hlrkLDk1T
         tYqcyul0CsfRAi54x8mGEbWasDz2J1CgE3iz0tu6R0shxAE/S3WaTmmNuXH2YDw6lCaW
         1YQA==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20251104; t=1775649135; x=1776253935;
        h=content-transfer-encoding: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;
        bh=390u33QAMevrk2QMAkWyTSHaXzPx8xkEYrd6JoNYhG4=;
        b=sefUxinGaFu997bv/E5o3jp1fwSY9JP3YZisUGo7mcobLw8DV5Zcp+jJZsugD7JNJj
         SNh821H+sYs0NimCLr07B4h4iZOp5yEiVlJ8Z2xZy/65Q6oeavRrk49cGkDzUoP3L6iV
         Y4kqqc+QGVfMtOAj4TSvZ9reF/pmeSrGwB6jZicFjkUv+V9J3MEBQDGUhTnlC3wud5H7
         21VFRShVNonl1qOTX0tILSK8mSeyEr3hoFq5zJ6G21eIn2KnUzPX915clDFccWa9cfY6
         ow3Xhnc+d3NlDa5fFyvyngclgrOZwu/KtFMspe/vbN6MXSuOHvTTL3gEn0Kw4ecCWFLP
         A2Gw==
X-Forwarded-Encrypted: i=1; AJvYcCWHzevVqHm15Iq2VE1vn9soG8AfbuflEyYlzpYU4kbT6FTVRsPCeoJNJOKtZ/1vbrvEijeijA8gzgQ=@lists.xenproject.org
X-Gm-Message-State: AOJu0YzNheSSzJfGh6k+2aDhA3bcXAAmUogKk/Aa8oM8CweJtHmrThox
	2FnjjzCxyil5aM12C72OWqPZXwieQqAFUK4P4IVGp9GriVPnKugnbseB
X-Gm-Gg: AeBDiesguyHru5zd+qncpCWd9j5yGjWLATPZ71lZzDeikq3LGUqLJxVNmIwfGJQtiw5
	LWKahagSpaMgUVcQSXqPLoTtgB/pj8dKYv3ss4did+ZD90nWuJ9I0dw545A1Pq5bD6ZNnIfwMr8
	AC6MLvKXr2IbOwIn8fuYxmz6szBNRtqpEgYhzVwRluAI0RnKeqTtnfEkrySmQJDn1KN6Jpp3gQh
	vE4risC21s4BqpE9ulTqMj7QvEk/LrN3I/I7GsYkYxelji8tpja6IN9RfNEawK6FdJWyBJ9JPq/
	oS/j1PBLiAI0KNc2kfRAkkGpsR4ae4M6+QAhkenWds5xT90V5AxOwsrHYrUrOzbHRWtMRlxcOId
	MMT9UDLin9Z1nLKTzlZn7HaiS5qSzfRxnOxar4m9UTb2RjoZ8sN8Ubt3TrWlxL81gRSjsNjiLpd
	UqEiw3oVd/oR87umZPDemduUVtb1nERd1VTb4ZHlIQwP1VdQfe9Ym4crAs0GblLuI+SNC+CoTYz
	aA=
X-Received: by 2002:a05:600c:6cf:b0:488:a824:fdff with SMTP id 5b1f17b1804b1-488a825003fmr108590255e9.22.1775649135279;
        Wed, 08 Apr 2026 04:52:15 -0700 (PDT)
Message-ID: <1e82905b-21b3-4e1d-ba4e-2616a06b6446@gmail.com>
Date: Wed, 8 Apr 2026 13:52:13 +0200
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH v2 3/4] xen/riscv: allow Xen to use SSTC while hiding it
 from guests
To: Jan Beulich <jbeulich@suse.com>
Cc: Romain Caritey <Romain.Caritey@microchip.com>,
 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.pau@citrix.com>,
 Stefano Stabellini <sstabellini@kernel.org>, xen-devel@lists.xenproject.org
References: <cover.1774863161.git.oleksii.kurochko@gmail.com>
 <ff0e2e7332d5b887d00ad10caf01952f90f5da5c.1774863161.git.oleksii.kurochko@gmail.com>
 <df6fb4f1-b420-4b5f-90e1-dea9069311bf@suse.com>
 <e69e8de7-dbcc-4839-bff6-866c3fa50ea2@gmail.com>
 <2830de65-c037-439b-a9ff-bfe6d9cce212@suse.com>
Content-Language: en-US
From: Oleksii Kurochko <oleksii.kurochko@gmail.com>
In-Reply-To: <2830de65-c037-439b-a9ff-bfe6d9cce212@suse.com>
Content-Type: text/plain; charset=UTF-8; format=flowed
Content-Transfer-Encoding: 8bit
X-purgate-ID: tlsNG-42698a/1775649136-17B402A1-B408C682/10/73395122804
X-purgate-type: spam
X-purgate-size: 3041



On 4/8/26 1:25 PM, Jan Beulich wrote:
> On 08.04.2026 12:58, Oleksii Kurochko wrote:
>> On 4/2/26 8:41 AM, Jan Beulich wrote:
>>> On 31.03.2026 21:04, Oleksii Kurochko wrote:
>>>> @@ -61,20 +73,7 @@ int reprogram_timer(s_time_t timeout)
>>>>        if ( deadline <= now )
>>>>            return 0;
>>>>    
>>>> -    /*
>>>> -     * TODO: When the SSTC extension is supported, it would be preferable to
>>>> -     *       use the supervisor timer registers directly here for better
>>>> -     *       performance, since an SBI call and mode switch would no longer
>>>> -     *       be required.
>>>> -     *
>>>> -     *       This would also reduce reliance on a specific SBI implementation.
>>>> -     *       For example, it is not ideal to panic() if sbi_set_timer() returns
>>>> -     *       a non-zero value. Currently it can return 0 or -ENOSUPP, and
>>>> -     *       without SSTC we still need an implementation because only the
>>>> -     *       M-mode timer is available, and it can only be programmed in
>>>> -     *       M-mode.
>>>> -     */
>>>> -    if ( (rc = sbi_set_timer(deadline)) )
>>>> +    if ( (rc = set_xen_timer(deadline)) )
>>>>            panic("%s: timer wasn't set because: %d\n", __func__, rc);
>>>>    
>>>>        /* Enable timer interrupt */
>>>> @@ -85,10 +84,17 @@ int reprogram_timer(s_time_t timeout)
>>>>    
>>>>    void __init preinit_xen_time(void)
>>>>    {
>>>> +    unsigned long tmp;
>>>> +
>>>>        if ( acpi_disabled )
>>>>            preinit_dt_xen_time();
>>>>        else
>>>>            panic("%s: ACPI isn't supported\n", __func__);
>>>>    
>>>>        boot_clock_cycles = get_cycles();
>>>> +
>>>> +    if ( csr_read_safe(CSR_STIMECMP, &tmp) )
>>>> +        set_xen_timer = sstc_set_xen_timer;
>>>> +    else
>>>> +        set_xen_timer = sbi_set_timer;
>>>>    }
>>>
>>> Doesn't all of this together eliminate the need for sbi_set_timer as a
>>> separate global variable?
>> There's still a need for that SBI-level dispatch. However, sbi_set_timer
>> doesn't need to be a global variable (exported from sbi.h). Since the
>> only external user after this patch is the time.c, sbi_set_timer could
>> be refactored into a plain static internal pointer with a non-static
>> wrapper function:
>>
>> // sbi.c — keep dispatch internal
>> static int (* __ro_after_init sbi_set_timer_fn)(uint64_t) =
>> sbi_set_timer_v01;
>>
>> int cf_check sbi_set_timer(uint64_t stime_value)
>> {
>>       return sbi_set_timer_fn(stime_value);
>> }
>>
>> Do you mean this?
> 
> No. Why is it that we'd still need both set_xen_timer and sbi_set_timer
> as distinct variables?

We don't need, it just a question of design I think.

extern int (* __ro_after_init sbi_set_timer)(uint64_t stime_value) could 
be renamed to set_xen_timer.

And then re-init set_xen_timer here in preinit_xen_time() if SSTC is 
available:
   if ( csr_read_safe(CSR_STIMECMP, &tmp) )
      set_xen_timer = sstc_set_xen_timer;

~ Oleksii




From xen-devel-bounces@lists.xenproject.org Wed Apr 08 12:00:11 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 08 Apr 2026 12:00:11 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1275818.1561524 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wARZn-0005Yj-21; Wed, 08 Apr 2026 12:00:07 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1275818.1561524; Wed, 08 Apr 2026 12:00: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 1wARZm-0005Yc-Vc; Wed, 08 Apr 2026 12:00:06 +0000
Received: by outflank-mailman (input) for mailman id 1275818;
 Wed, 08 Apr 2026 12:00:05 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <jbeulich@suse.com>) id 1wARZl-0005Nl-Qm
 for xen-devel@lists.xenproject.org; Wed, 08 Apr 2026 12:00:05 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wARZl-00FRXj-2g
 for xen-devel@lists.xenproject.org; Wed, 08 Apr 2026 14:00:05 +0200
Received: from [10.42.69.7] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <jbeulich@suse.com>)
 id 69d64339-e002-0a2a0a5209dd-0a2a4507cb8c-30
 for <xen-devel@lists.xenproject.org>; Wed, 08 Apr 2026 14:00:04 +0200
Received: from [209.85.128.49] (helo=mail-wm1-f49.google.com)
 by tlsNG-ef75cf.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.0)
 (envelope-from <jbeulich@suse.com>)
 id 69d64344-ba2d-0a2a45070019-d1558031b1c0-3
 for <xen-devel@lists.xenproject.org>; Wed, 08 Apr 2026 14:00:04 +0200
Received: by mail-wm1-f49.google.com with SMTP id
 5b1f17b1804b1-4888375f735so58160395e9.3
 for <xen-devel@lists.xenproject.org>; Wed, 08 Apr 2026 05:00:04 -0700 (PDT)
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-488a4b2e111sm361362825e9.1.2026.04.08.05.00.03
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Wed, 08 Apr 2026 05:00:03 -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=google header.d=suse.com header.i="@suse.com" header.h="Content-Transfer-Encoding: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=1775649604; x=1776254404; darn=lists.xenproject.org;
        h=content-transfer-encoding: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;
        bh=GonctP+zBht/YI/YmvNFud8nNmDlZKQ0R6oRVx0JBVA=;
        b=D5hQV63/2G+hxeZofvwQ5WoOiaOykqXhiWwAICL8cSvFakDI8ihrIwnn0aHbofByxV
         9McjOQzplyuQgy2cDD9kJl1nJj0jpsJ1A+/g3st2Fv9EIU9SaiQdW9wPEZjLaYbw5kR2
         ILUZpmBJL/EDu4qnXcnsTZiGlAIN1Fqjin7H40e3g1ozMomznJBI+eYhEK6v2SEABjgv
         flN8S+ggfWXmxQJ9OpET7M0XGfeeG0ioElGmdpUXFn6kOYQQWg549J8ewCEOQnEM+Pdj
         pOlNWbiywcSxc54ZECXLU7kQmWF1dVNf0zSPH3yiL/WltMTtGR/2+bNqLamIDX4xH83a
         8rhQ==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20251104; t=1775649604; x=1776254404;
        h=content-transfer-encoding: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;
        bh=GonctP+zBht/YI/YmvNFud8nNmDlZKQ0R6oRVx0JBVA=;
        b=M3TJkeRSBYEg2hzQjtGiW8MS7htvDxhNqhTDwyha6EDEcSwVHJXeECZO1v6NgCIdzO
         oSzOsx99kQwehKZwPLLOZ+642dB8PUkK5VVI1rqWHi0JG/9Y7lWVVYQrIPvTqsjotqBl
         NpMGGR43/igzl4pHqkxP2Y2OvXF5hdSpS+t+qdAB1wXsqRPpc7zStg3nbvaVUU7zW+kT
         ezcwGuysY+rX+ueWfyociR+FoBOZ/eQFR/Vme19wiXzeFRKCi2V2kta6+1GMWS22fXw4
         ga3YLwIRw/n3dHj6ghcwEvwqqQ+AqXGX20heIAgcVvUqjvPZxxQGMFeWxux+sPaXXJ1I
         1GWw==
X-Forwarded-Encrypted: i=1; AJvYcCW1fRMqN3cJEb6YHyxElWC0sU3FeW5fqywKEvCYBqIZjQeIflVNYUf/IsEZ+pw32CwVUFJnLJ1cGZs=@lists.xenproject.org
X-Gm-Message-State: AOJu0YzkZke2Hi6+C0BpVtn4Xr7qOkfersGKL3Yb9ei53oVosLyRSA4m
	q4//bfFxJuCsoldLw3aSUcb/UusDpXTfwhtBhfKdHXGIxNzvKWJLjSzvJ3GtK7KNZQ==
X-Gm-Gg: AeBDietkWYWU1BbUc7B8AdlQhqIvo5hmxbYS5ODZqIWB/fZWzOweOxlAH+hDkp52AWU
	SjdhK9eMzzXAA+buHrnFk7CAKnhQijMv+7D4xpxSYD7NvvjXeh+sHLrRwsPxhnQLIcXicvg02x7
	i0bPErZ/49uFJj9wMI3D/PQcY87GLm8TlAM5IN00TpLGu/p89hIerk/Hy/vQu9a61nuskiyRnzd
	+5ng8vw7/sM4jThn6xcTe4J2MdPjwy5AP3242jCzwKAj1jbgFDVB8/5uWjAwhLnDQIg6Od1QBjI
	1sX5DOxXO+KUEPdyggD/SbQLdqsYBICZtE4WNcN5lOp3xX3/7IcDhX8+lBRcBhem9qvF5RMUDdf
	jlkkgzI1D5tSV4kibCLgJPkAerdy9AGZMoYO8X9BQOxgd4iBD/RRzPmzPFw0r/MMtcdkIESaVOC
	hSBHf+eiMQvljv9JfDhsSeHc6G6BJgeHZto4JpTvTCzvFKYmLXzm9m6hQtYXDn0PagaWXdeWl8m
	qZc0q+3zcDlIAfGSPUAFcyXNA==
X-Received: by 2002:a05:600c:4f15:b0:488:945a:ed63 with SMTP id 5b1f17b1804b1-488995cbaa7mr315339315e9.0.1775649604164;
        Wed, 08 Apr 2026 05:00:04 -0700 (PDT)
Message-ID: <f243ce4a-ecf8-42fe-b30d-bc77ad86074e@suse.com>
Date: Wed, 8 Apr 2026 14:00:02 +0200
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH v10] x86emul: support LKGS
To: Andrew Cooper <andrew.cooper3@citrix.com>
Cc: =?UTF-8?Q?Roger_Pau_Monn=C3=A9?= <roger.pau@citrix.com>,
 Teddy Astie <teddy.astie@vates.tech>,
 "xen-devel@lists.xenproject.org" <xen-devel@lists.xenproject.org>
References: <a902e1bb-d51e-4889-a4af-505fd19e63d0@suse.com>
 <9b9dd025-fd4d-4fa1-abb4-ad10c86f839e@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: <9b9dd025-fd4d-4fa1-abb4-ad10c86f839e@citrix.com>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
X-purgate-ID: tlsNG-ef75cf/1775649604-13B4041E-E68E4F2C/0/0
X-purgate-type: clean
X-purgate-size: 6360

On 08.04.2026 13:34, Andrew Cooper wrote:
> On 08/04/2026 11:22 am, Jan Beulich wrote:
>> ---
>> For PV save_segments() would need adjustment,
> 
> Not really.  CPL3 must never have a way of modifying GS_KERN, hence ...
> 
>> but the insn being restricted to ring 0 means PV guests can't use it anyway
> 
> ... the CPL0 restriction.
> 
> Arguably I should have had this in one of the FRED patches:
> 
> --- a/xen/arch/x86/domain.c
> +++ b/xen/arch/x86/domain.c
> @@ -1952,7 +1952,7 @@ static void load_segments(struct vcpu *n)
>   * changes to bases can also be made with the WR{FS,GS}BASE instructions, when
>   * enabled.
>   *
> - * Guests however cannot use SWAPGS, so there is no mechanism to modify the
> + * Guests cannot use SWAPGS or LKGS, so there is no mechanism to modify the
>   * inactive GS base behind Xen's back.  Therefore, Xen's copy of the inactive
>   * GS base is still accurate, and doesn't need reading back from hardware.
>   *
> 
> 
> but I don't think it's appropriate to merge into this patch.
> 
>> (unless we wanted to emulate it as another privileged insn).
> 
> We already have "LKGS" in hypercall form.  It's spelt
> SEGBASE_GS_USER_SEL and has existed for 20 years or so.

Hmm, yes.

> I don't see any reason to extend emul_priv_op().

Nor do I. Nevertheless I wanted to mention the PV aspect.

>> I've also dropped the test harness read_segment() change. It generally
>> would be correct to have, but isn't needed anymore with neither SWAPGS
>> nor LKGS handling using the hook.
> 
> Dropping read_segment() makes your patch depend on Teddy's, now that
> test_x86_emulator is blocking in CI.

I'm not dropping read_segment() from there. I've dropped a change to
that function that v9 had. That depends on your change (which has gone
in), but not Teddy's. Or else I may not understand what you mean.

>> --- a/xen/arch/x86/x86_emulate/x86_emulate.c
>> +++ b/xen/arch/x86/x86_emulate/x86_emulate.c
>> @@ -2899,8 +2899,37 @@ x86_emulate(
>>                  break;
>>              }
>>              break;
>> -        default:
>> -            generate_exception_if(true, X86_EXC_UD);
>> +
>> +        case 6: /* lkgs */
>> +            generate_exception_if((modrm_reg & 1) || vex.pfx != vex_f2,
>> +                                  X86_EXC_UD);
>> +            generate_exception_if(!mode_64bit() || !mode_ring0(), X86_EXC_UD);
>> +            vcpu_must_have(lkgs);
>> +            fail_if(!ops->read_msr || !ops->write_segment || !ops->write_msr);
>> +            if ( (rc = ops->read_msr(MSR_SHADOW_GS_BASE, &msr_val,
>> +                                     ctxt)) != X86EMUL_OKAY ||
>> +                 (rc = ops->read_msr(MSR_GS_BASE, &sreg.base,
>> +                                         ctxt)) != X86EMUL_OKAY )
>> +                goto done;
>> +            dst.orig_val = sreg.base; /* Preserve full GS Base. */
> 
> "Preserve current GS Base."
> 
>> +            if ( (rc = protmode_load_seg(x86_seg_gs, src.val, false, &sreg,
>> +                                         ctxt, ops)) != X86EMUL_OKAY )
>> +                goto done;
>> +            /* Write (32-bit) base into SHADOW_GS. */
> 
> "Write new base into SHADOW_GS.  Zero extended from GDT/LDT."
> 
>> +            if ( (rc = ops->write_msr(MSR_SHADOW_GS_BASE, sreg.base,
>> +                                      ctxt, false)) != X86EMUL_OKAY ||
>> +                 (sreg.base = dst.orig_val, /* Reinstate full GS Base. */
> 
> "Reinstate original GS base."

I can make these adjustments, sure, yet I think my forms were clear enough.

> This patch needs one more hunk:
> 
> --- a/xen/arch/x86/cpu-policy.c
> +++ b/xen/arch/x86/cpu-policy.c
> @@ -765,14 +765,25 @@ static void __init calculate_hvm_max_policy(void)
>       */
>      __set_bit(X86_FEATURE_NO_LMSL, fs);
>  
> -    /*
> -     * On AMD, PV guests are entirely unable to use SYSENTER as Xen runs in
> -     * long mode (and init_amd() has cleared it out of host
> capabilities), but
> -     * HVM guests are able if running in protected mode.
> -     */
> -    if ( (boot_cpu_data.vendor & (X86_VENDOR_AMD | X86_VENDOR_HYGON)) &&
> -         raw_cpu_policy.basic.sep )
> -        __set_bit(X86_FEATURE_SEP, fs);
> +    if ( boot_cpu_data.vendor & (X86_VENDOR_AMD | X86_VENDOR_HYGON) )
> +    {
> +        /*
> +         * On AMD, PV guests are unable to use SYSENTER as Xen runs in long
> +         * mode (and init_amd() has cleared it out of host
> capabilities), but
> +         * HVM guests are able if running in protected mode.
> +         */
> +        if ( raw_cpu_policy.basic.sep )
> +            __set_bit(X86_FEATURE_SEP, fs);
> +
> +        /*
> +         * NullSelectorClearsBase is really a "hardware doesn't have
> this bug
> +         * any more" bit.  All FRED-capable hardware has NSCB
> properties, so
> +         * disallow a configuration which suggest/causes behaviour the
> OS isn't
> +         * expecting.
> +         */
> +        if ( !test_bit(X86_FEATURE_NSCB, fs) )
> +            __clear_bit(X86_FEATURE_LKGS, fs);
> +    }
>  
>      /*
>       * VIRT_SSBD is exposed in the default policy as a result of
> 
> 
> because otherwise a CPU Policy could hide NCSB and LKGS would be have
> correctly when executed normally but malfunction in the emulator.

A policy cannot validly hide NSCB, as the flag - whichever way it is set -
describes how the underlying hardware works. We'd need to intercept and
emulate all selector loads to allow flag and hardware behavior to be out
of sync. I.e. what you say for LKGS would be true for all selector loads.

> This hunk is in lieu of having vendor-dependent deep-deps calculations,
> although it would need duplicating in userspace too.
> 
> Because this is only a link between an AMD-only feature and a common
> feature, I think I can express it by only having a per-vendor
> deep_features bitmap and keeping a shared deep_deps matrix.
> 
> Perhaps I should prototype that instead, but it would become another
> dependency for this patch.

Please do, albeit as per above I don't think it's truly a prereq to the
one here.

Jan


From xen-devel-bounces@lists.xenproject.org Wed Apr 08 12:06:06 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 08 Apr 2026 12:06:06 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1275842.1561534 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wARfV-0006KA-Li; Wed, 08 Apr 2026 12:06:01 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1275842.1561534; Wed, 08 Apr 2026 12:06: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 1wARfV-0006K3-Ig; Wed, 08 Apr 2026 12:06:01 +0000
Received: by outflank-mailman (input) for mailman id 1275842;
 Wed, 08 Apr 2026 12:06:00 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <jbeulich@suse.com>) id 1wARfU-0006Jx-C8
 for xen-devel@lists.xenproject.org; Wed, 08 Apr 2026 12:06:00 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wARfT-009uHY-J0
 for xen-devel@lists.xenproject.org; Wed, 08 Apr 2026 14:05:59 +0200
Received: from [10.42.69.12] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <jbeulich@suse.com>)
 id 69d644a6-5cb7-0a2a0a5109dd-0a2a450cd984-2
 for <xen-devel@lists.xenproject.org>; Wed, 08 Apr 2026 14:05:59 +0200
Received: from [209.85.128.51] (helo=mail-wm1-f51.google.com)
 by tlsNG-d25034.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.0)
 (envelope-from <jbeulich@suse.com>)
 id 69d644a7-f40c-0a2a450c0019-d1558033ed9c-3
 for <xen-devel@lists.xenproject.org>; Wed, 08 Apr 2026 14:05:59 +0200
Received: by mail-wm1-f51.google.com with SMTP id
 5b1f17b1804b1-488afb0427eso36095075e9.1
 for <xen-devel@lists.xenproject.org>; Wed, 08 Apr 2026 05:05:59 -0700 (PDT)
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-488c5d85475sm17167415e9.16.2026.04.08.05.05.58
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Wed, 08 Apr 2026 05:05:58 -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=google header.d=suse.com header.i="@suse.com" header.h="Content-Transfer-Encoding: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=1775649959; x=1776254759; darn=lists.xenproject.org;
        h=content-transfer-encoding:autocrypt:content-language:cc:to:subject
         :from:user-agent:mime-version:date:message-id:from:to:cc:subject
         :date:message-id:reply-to;
        bh=vL+NPhak5gWUHDY0Q7SGnWQewBdfLXy+S5oN0ZPZmcQ=;
        b=bMFMD6lSVoKYyjcmHFApugflKqzcKLS+5Hdp66xS/Jly173IkSSTPZSiIFXlvEsaBi
         kWKrqIZTXIpYiVm8UXxfJoFLxizj3Vw3tHBHslYJk1/zv5losTldtUF7JkzJ6Vs26zdA
         fQ8sDx78UkCcv8kxTaWUrtCIo0mZFN7O2dQyw7fmY1QESihJ0StTqYYh74T27uv5m2xQ
         Wbg+SCUFPd4vrwikdcjlcJTxGZ0bGUwtmRzjmOUq0hEdMmqsZrRWsQbLhiXJ8Y0ZO9ox
         56RzP3BFe11W0ic8Q1zGT3T+aSPNRA+qBxtkf38ai3ObtOUBjIiZ4Y+9BYvkw36Mfe7c
         iUdQ==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20251104; t=1775649959; x=1776254759;
        h=content-transfer-encoding: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;
        bh=vL+NPhak5gWUHDY0Q7SGnWQewBdfLXy+S5oN0ZPZmcQ=;
        b=jpShImVfn1OFRFNRr89QPnwehv0VambCI0PxuRoNiibcmgX4ZDZomFOo7t9xFMyCvQ
         ZdvAQIXZOijNdeHQ5+2m4sN7g4rVi3thi3U4y50iWmvh6in/Q0cnhEmvTp/T4tjI3X0k
         5HM6Oo+KGbgxYJAW2WhODkbEcBcW21w8E2LiMAvsORYMATgjgbu8LUwgwcIWpK++s0fw
         twYdQQ5GN/AVrwTpfj3zRf40DG/o88xaXr0yG9xyojvrlt+TVh8erE/mZU4EpxTdQoaf
         byFz6n0nVtVaTe4unNfZpXdavzpay4qhwkLW9UPaDjG8TVHZnUXbo1Y8WcLM/cnRSYqL
         MuwA==
X-Gm-Message-State: AOJu0YxbwTYDEqxy8fMDnWpXeiL+82cgn2d3DgS5rNBaXQ7cKyh5Qpyn
	nVrsmwYObZhsoh/fN51Y381jTBTj+sxG0Mbd2WjiyywoNCAKHobWQVqjJVdOiDyF86/qKeHN1Dl
	0mLNJNg==
X-Gm-Gg: AeBDievKCkc1lZ+4MfQZmyieUu+cGvHNq6g4pNrnD/kwDDRPQITZHzOsbvI0qvf5v1M
	4v+jGDa3QWSOBjL5CuMRCV2pam7XlkEWZAy9EvZXCOsKyxzKywnODMT8N42sbkgaGXs2Y44K96V
	MeTfJKS+7AqqdDQHPZRG3fLvLkci9pcxKNSm2SAn28DkigWhM1bd+MHRsjOEegsYyTYtAwUbVns
	IWKIR0yD67IMREy1FGy21dvedQToIEv9i0seHGeNL4Q8yC7sN4s8291gHbzIwCMBzdI8lUws6vk
	a+09VBN7+ueY8he669Nj+DzAHXk3/MqrtYbx55clkmZUtQKWTrENzCQwuctL316mcrM25lEanH6
	S5ntVzaWzAE5Y+7NdDNJWt9+3E4d6H0Bxbehlxij782XA0LuQh7e9h+T4RWgrjn6WZbJA09HdQF
	L9pmZS7bqHuUvYPUnwwnwYp9CAMiShujWa5RP3iUP9FZuqNz1LSv1KAEci/cXNNKSn0TSilol7T
	7WEUuAFw42heWs=
X-Received: by 2002:a05:600c:1da1:b0:488:78f2:6b0 with SMTP id 5b1f17b1804b1-488998f488cmr288110955e9.29.1775649958870;
        Wed, 08 Apr 2026 05:05:58 -0700 (PDT)
Message-ID: <145299a0-b25c-4612-82c6-9401a2f88ad2@suse.com>
Date: Wed, 8 Apr 2026 14:05:57 +0200
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
From: Jan Beulich <jbeulich@suse.com>
Subject: [PATCH v2] ioremap() et al
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.pau@citrix.com>, Alistair Francis <alistair.francis@wdc.com>,
 Connor Davis <connojdavis@gmail.com>,
 Oleksii Kurochko <oleksii.kurochko@gmail.com>,
 Bertrand Marquis <bertrand.marquis@arm.com>,
 Volodymyr Babchuk <volodymyr_babchuk@epam.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
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 7bit
X-purgate-ID: tlsNG-d25034/1775649959-83F42A3D-95AD36AD/0/0
X-purgate-type: clean
X-purgate-size: 179

I found an old todo item, carrying out of which then made me notice
another anomaly.

1: make ioremap_attr() common
2: make ioremap_wc() x86 only (for the time being)

Jan


From xen-devel-bounces@lists.xenproject.org Wed Apr 08 12:07:28 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 08 Apr 2026 12:07:28 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1275849.1561544 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wARgu-0006ot-1u; Wed, 08 Apr 2026 12:07:28 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1275849.1561544; Wed, 08 Apr 2026 12:07: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 1wARgt-0006om-T4; Wed, 08 Apr 2026 12:07:27 +0000
Received: by outflank-mailman (input) for mailman id 1275849;
 Wed, 08 Apr 2026 12:07:26 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <jbeulich@suse.com>) id 1wARgs-0006oe-MS
 for xen-devel@lists.xenproject.org; Wed, 08 Apr 2026 12:07:26 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wARgs-008Z6c-2M
 for xen-devel@lists.xenproject.org; Wed, 08 Apr 2026 14:07:26 +0200
Received: from [10.42.69.6] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <jbeulich@suse.com>)
 id 69d644fb-e002-0a2a0a5209dd-0a2a4506c456-18
 for <xen-devel@lists.xenproject.org>; Wed, 08 Apr 2026 14:07:26 +0200
Received: from [209.85.128.54] (helo=mail-wm1-f54.google.com)
 by tlsNG-16d1c6.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.0)
 (envelope-from <jbeulich@suse.com>)
 id 69d644fd-0df0-0a2a45060019-d1558036d563-3
 for <xen-devel@lists.xenproject.org>; Wed, 08 Apr 2026 14:07:25 +0200
Received: by mail-wm1-f54.google.com with SMTP id
 5b1f17b1804b1-488ba840146so21031555e9.1
 for <xen-devel@lists.xenproject.org>; Wed, 08 Apr 2026 05:07:25 -0700 (PDT)
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-4887e83e906sm711784085e9.8.2026.04.08.05.07.24
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Wed, 08 Apr 2026 05:07:25 -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=google header.d=suse.com header.i="@suse.com" header.h="Content-Transfer-Encoding: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=1775650045; x=1776254845; darn=lists.xenproject.org;
        h=content-transfer-encoding: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;
        bh=aG+RUv/dtU6SC+Cni5NhuYWHX3yaBTUGBmElr9tgZk0=;
        b=C3sMV1zul2bfwgnP/RiDRF48bxBkH7hHOi25VAEfGmzo+LSktFcmszN4goUkUPArf2
         xEs3YIH4a7t3y+KhND/GSvFI4uJ999x1EWHrl9Ck7H8iOXzI04keZ2tg+NCFWL2UwN32
         xFkUieoVzumLaCmy73AfAu7cwekpGwDdJIPAo5eI0JqJMsap6NpuQtsdMWaBEFCqc7tb
         0MeJHs92SznJ23gbapDxY2ZMyvZEt48LBHg6OsTzgHRbVipKFs/ARpgYZwfvQsKSRzni
         I9cjPp97ttZ+f7OEtjNd6fJPsoYFQwUYQ6OOxeq9DfLSU2bQKc8bKiGO0hLmRjVbD+H9
         Ix2Q==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20251104; t=1775650045; x=1776254845;
        h=content-transfer-encoding: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;
        bh=aG+RUv/dtU6SC+Cni5NhuYWHX3yaBTUGBmElr9tgZk0=;
        b=b35okrlv9/VLyYymNsPBxLQ3axJg0PfrlndSR2NYSSyqdIPfdUT91u2WMYadq0rEjy
         WvqHGlW/Ck1QI8TXUY/kfyu2lw0W9a1CtaILdIn7QC2TOYgHG9um/81YoTtMRaz8zGnF
         nVSL9cxOoDmfvTFk+WPwy1pMAfhfigvYK18+iAfzZuYMYCpK/guVHqhqV5m2VSrnU4zi
         GVYqvjretmocb6vzGsdO3/HOntzUbjD+f/8t0aXN1i9gFiu1LtwsQholkEHmpd5dh2o5
         C9461tzrhSsKa4DLtQZ2Dseizb/NHboZIeiPM3Mn5xgnQXs3Lvsf8Lz65+huTkGmYG51
         89uA==
X-Gm-Message-State: AOJu0YxSuzfb9HmkUV0Hv7FqpGaw5uTAgf8FF+o9mV/U5E+xKSMXoXu2
	Nw2/F86ewke28+ao8e5v1BwMgHLa8X+6gNzQ+je6htt3R0Bse9RsfHkMH8x2RU1TblXXF3moJ1b
	j+EMXLA==
X-Gm-Gg: AeBDiesxU0HtyxOnXkW8pkE07yApQW6LMr36Ho+x0OtKBGtWd9C9aRWsuBjrP2LPVR/
	bezOO/aF55IIhVSO/kLkqAAMEJLxSckT4foLuxqTch2TTNyQBiRx8zvOP62LoXCxGfqA8ZEYX8h
	KxmHxw7sreJvErHloxgEJgAwChHyd98qEbmJd9NVVjcxNz1QpuVMkGjw089VLUm//rmrjr/MQTA
	PMN/sFNfZhahdmJT3VXmtzEf1qQJiT0gYKA0VAuQ3FVyXJyTHwP9PYpvIfJeTHvCxsxPK1Awt+R
	A/CwF5mXTDYFA0S8k9Ty6s9ijoxdO+a5bSVdlPQp7W0m8lmgcX41LwgHZqkOEMR+HT7BfQMljNl
	VO/+6rJ0M5juVPtXH8t20bV2q3wRVV82Te/UFSo2wbzXedND7GMeoQkIgX2E8+hZrD5+sZaBNjZ
	oPcBsvrKyh5rTQRg5zrMleoVhPU2P6CxwjaXG7FR5C8WzBLhX0/WNHHlTUlPfFQmObGDB8ia5dK
	7qiN6Q+YzsOmdk=
X-Received: by 2002:a05:600c:c101:b0:488:c530:48a0 with SMTP id 5b1f17b1804b1-488c5304b22mr31835335e9.24.1775650045323;
        Wed, 08 Apr 2026 05:07:25 -0700 (PDT)
Message-ID: <72526f3a-726a-4a1e-8d80-1a336175c1af@suse.com>
Date: Wed, 8 Apr 2026 14:07:23 +0200
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: [PATCH v2 1/2] make ioremap_attr() common
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.pau@citrix.com>, Alistair Francis <alistair.francis@wdc.com>,
 Connor Davis <connojdavis@gmail.com>,
 Oleksii Kurochko <oleksii.kurochko@gmail.com>,
 Bertrand Marquis <bertrand.marquis@arm.com>,
 Volodymyr Babchuk <volodymyr_babchuk@epam.com>
References: <145299a0-b25c-4612-82c6-9401a2f88ad2@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: <145299a0-b25c-4612-82c6-9401a2f88ad2@suse.com>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 7bit
X-purgate-ID: tlsNG-16d1c6/1775650045-AFB3B3D8-ED1932D8/0/0
X-purgate-type: clean
X-purgate-size: 9895

This core backing function is uniform; what varies across architectures
are the attributes passed and hence the wrappers around it. Yet of course
extra checking or special handling may be needed per arch, so introduce a
suitable hook.

Signed-off-by: Jan Beulich <jbeulich@suse.com>
---
Declarations (or inline counterparts) aren't being moved around, to avoid
the need to touch source files using the functions. Quite possibly they
want to consistently go into xen/io.h and asm/io.h.

Of course ioremap.c could also go into lib/.

For RISC-V the wrappers likely should become inline functions?

PPC doesn't reference any of the functions just yet, so gets only a
declaration.

For Arm, a TODO item is deliberately retained, yet seeing the use of
ioremap_wc() in domain building (which by itself is questionable, see next
patch) I wonder if that's even feasible as long as we don't have
memremap() or alike.
---
v2: Use conditional operator in ioremap_attr()'s final return. Re-base and
    leverage that to simplify ioremap_attr() itself.

--- a/xen/arch/arm/include/asm/io.h
+++ b/xen/arch/arm/include/asm/io.h
@@ -1,6 +1,8 @@
 #ifndef _ASM_IO_H
 #define _ASM_IO_H
 
+#include <xen/mm-types.h>
+
 #if defined(CONFIG_ARM_32)
 # include <asm/arm32/io.h>
 #elif defined(CONFIG_ARM_64)
@@ -9,6 +11,16 @@
 # error "unknown ARM variant"
 #endif
 
+#ifdef CONFIG_MPU
+void __iomem *mpu_ioremap_attr(paddr_t start, size_t len, pte_attr_t flags);
+#define arch_ioremap_attr mpu_ioremap_attr
+#else
+/*
+ * ioremap_attr() should only be used to remap device address ranges.
+ * TODO: Add an arch hook to verify this assumption.
+ */
+#endif
+
 #endif
 /*
  * Local variables:
--- a/xen/arch/arm/include/asm/mm.h
+++ b/xen/arch/arm/include/asm/mm.h
@@ -5,6 +5,7 @@
 #include <asm/page.h>
 #include <public/xen.h>
 #include <xen/pdx.h>
+#include <xen/vmap.h>
 
 #if defined(CONFIG_ARM_32)
 # include <asm/arm32/mm.h>
@@ -200,13 +201,12 @@ extern int prepare_secondary_mm(int cpu)
 extern void setup_frametable_mappings(paddr_t ps, paddr_t pe);
 /* Helper function to setup memory management */
 void setup_mm_helper(void);
-/* map a physical range in virtual memory */
-void __iomem *ioremap_attr(paddr_t start, size_t len, unsigned int attributes);
 
 static inline void __iomem *ioremap_nocache(paddr_t start, size_t len)
 {
     return ioremap_attr(start, len, PAGE_HYPERVISOR_NOCACHE);
 }
+#define ioremap ioremap_nocache
 
 static inline void __iomem *ioremap_cache(paddr_t start, size_t len)
 {
--- a/xen/arch/arm/mm.c
+++ b/xen/arch/arm/mm.c
@@ -455,11 +455,6 @@ unsigned long get_upper_mfn_bound(void)
     return max_page - 1;
 }
 
-void *ioremap(paddr_t pa, size_t len)
-{
-    return ioremap_attr(pa, len, PAGE_HYPERVISOR_NOCACHE);
-}
-
 /*
  * Local variables:
  * mode: C
--- a/xen/arch/arm/mmu/pt.c
+++ b/xen/arch/arm/mmu/pt.c
@@ -206,23 +206,6 @@ void clear_fixmap(unsigned int map)
     BUG_ON(res != 0);
 }
 
-/*
- * This function should only be used to remap device address ranges
- * TODO: add a check to verify this assumption
- */
-void *ioremap_attr(paddr_t start, size_t len, unsigned int attributes)
-{
-    mfn_t mfn = _mfn(PFN_DOWN(start));
-    unsigned int offs = start & (PAGE_SIZE - 1);
-    unsigned int nr = PFN_UP(offs + len);
-    void *ptr = __vmap(&mfn, nr, 1, 1, attributes, VMAP_DEFAULT);
-
-    if ( ptr == NULL )
-        return NULL;
-
-    return ptr + offs;
-}
-
 static int create_xen_table(lpae_t *entry)
 {
     mfn_t mfn;
--- a/xen/arch/arm/mpu/mm.c
+++ b/xen/arch/arm/mpu/mm.c
@@ -9,6 +9,8 @@
 #include <xen/sizes.h>
 #include <xen/spinlock.h>
 #include <xen/types.h>
+
+#include <asm/io.h>
 #include <asm/mpu.h>
 #include <asm/mpu/mm.h>
 #include <asm/page.h>
@@ -593,7 +595,7 @@ void free_init_memory(void)
     spin_unlock(&xen_mpumap_lock);
 }
 
-void __iomem *ioremap_attr(paddr_t start, size_t len, unsigned int flags)
+void __iomem *mpu_ioremap_attr(paddr_t start, size_t len, pte_attr_t flags)
 {
     paddr_t start_pg = round_pgdown(start);
     paddr_t end_pg = round_pgup(start + len);
--- a/xen/arch/ppc/include/asm/io.h
+++ b/xen/arch/ppc/include/asm/io.h
@@ -13,4 +13,6 @@
 #define writew(v,c)     ({ (void)(v); (void)(c); BUG_ON("unimplemented"); })
 #define writel(v,c)     ({ (void)(v); (void)(c); BUG_ON("unimplemented"); })
 
+void __iomem *ioremap(paddr_t pa, size_t len);
+
 #endif /* __ASM_PPC_IO_H__ */
--- a/xen/arch/riscv/include/asm/io.h
+++ b/xen/arch/riscv/include/asm/io.h
@@ -41,6 +41,7 @@
 #include <xen/macros.h>
 #include <xen/types.h>
 
+void __iomem *ioremap(paddr_t pa, size_t len);
 void __iomem *ioremap_cache(paddr_t pa, size_t len);
 void __iomem *ioremap_wc(paddr_t pa, size_t len);
 
--- a/xen/arch/riscv/mm.c
+++ b/xen/arch/riscv/mm.c
@@ -587,20 +587,6 @@ void *__init arch_vmap_virt_end(void)
     return (void *)(VMAP_VIRT_START + VMAP_VIRT_SIZE);
 }
 
-static void __iomem *ioremap_attr(paddr_t pa, size_t len,
-                                  pte_attr_t attributes)
-{
-    mfn_t mfn = _mfn(PFN_DOWN(pa));
-    unsigned int offs = pa & (PAGE_SIZE - 1);
-    unsigned int nr = PFN_UP(offs + len);
-    void *ptr = __vmap(&mfn, nr, 1, 1, attributes, VMAP_DEFAULT);
-
-    if ( ptr == NULL )
-        return NULL;
-
-    return ptr + offs;
-}
-
 void __iomem *ioremap_cache(paddr_t pa, size_t len)
 {
     return ioremap_attr(pa, len, PAGE_HYPERVISOR);
--- a/xen/arch/x86/include/asm/io.h
+++ b/xen/arch/x86/include/asm/io.h
@@ -47,6 +47,9 @@ __OUT(b,"b",char)
 __OUT(w,"w",short)
 __OUT(l,,int)
 
+void __iomem *x86_ioremap_attr(paddr_t pa, size_t len, pte_attr_t attr);
+#define arch_ioremap_attr x86_ioremap_attr
+
 /*
  * Boolean indicator and function used to handle platform specific I/O port
  * emulation.
--- a/xen/arch/x86/include/asm/mm.h
+++ b/xen/arch/x86/include/asm/mm.h
@@ -611,7 +611,15 @@ void destroy_perdomain_mapping(struct do
                                unsigned int nr);
 void free_perdomain_mappings(struct domain *d);
 
-void __iomem *ioremap_wc(paddr_t pa, size_t len);
+static inline void __iomem *ioremap(paddr_t pa, size_t len)
+{
+    return ioremap_attr(pa, len, PAGE_HYPERVISOR_UCMINUS);
+}
+
+static inline void __iomem *ioremap_wc(paddr_t pa, size_t len)
+{
+    return ioremap_attr(pa, len, PAGE_HYPERVISOR_WC);
+}
 
 extern int memory_add(unsigned long spfn, unsigned long epfn, unsigned int pxm);
 
--- a/xen/arch/x86/mm.c
+++ b/xen/arch/x86/mm.c
@@ -6167,41 +6167,15 @@ void *__init arch_vmap_virt_end(void)
     return fix_to_virt(__end_of_fixed_addresses);
 }
 
-void __iomem *ioremap(paddr_t pa, size_t len)
+void __iomem *x86_ioremap_attr(paddr_t pa, size_t len, pte_attr_t attr)
 {
-    mfn_t mfn = _mfn(PFN_DOWN(pa));
-    void *va;
-
-    WARN_ON(page_is_ram_type(mfn_x(mfn), RAM_TYPE_CONVENTIONAL));
+    WARN_ON(page_is_ram_type(PFN_DOWN(pa), RAM_TYPE_CONVENTIONAL));
 
     /* The low first Mb is always mapped. */
-    if ( !((pa + len - 1) >> 20) )
-        va = __va(pa);
-    else
-    {
-        unsigned int offs = pa & (PAGE_SIZE - 1);
-        unsigned int nr = PFN_UP(offs + len);
-
-        va = __vmap(&mfn, nr, 1, 1, PAGE_HYPERVISOR_UCMINUS, VMAP_DEFAULT);
-        if ( va )
-            va += offs;
-    }
-
-    return (void __force __iomem *)va;
-}
-
-void __iomem *__init ioremap_wc(paddr_t pa, size_t len)
-{
-    mfn_t mfn = _mfn(PFN_DOWN(pa));
-    unsigned int offs = pa & (PAGE_SIZE - 1);
-    unsigned int nr = PFN_UP(offs + len);
-    void *va;
-
-    WARN_ON(page_is_ram_type(mfn_x(mfn), RAM_TYPE_CONVENTIONAL));
-
-    va = __vmap(&mfn, nr, 1, 1, PAGE_HYPERVISOR_WC, VMAP_DEFAULT);
+    if ( !((pa + len - 1) >> 20) && attr == PAGE_HYPERVISOR_UCMINUS )
+        return (void __force __iomem *)__va(pa);
 
-    return (void __force __iomem *)(va ? va + offs : NULL);
+    return NULL;
 }
 
 int create_perdomain_mapping(struct domain *d, unsigned long va,
--- a/xen/common/Makefile
+++ b/xen/common/Makefile
@@ -18,6 +18,7 @@ obj-$(CONFIG_EVTCHN_FIFO) += event_fifo.
 obj-$(CONFIG_GRANT_TABLE) += grant_table.o
 obj-y += gzip/
 obj-$(CONFIG_HYPFS) += hypfs.o
+obj-y += ioremap.o
 obj-$(CONFIG_IOREQ_SERVER) += ioreq.o
 obj-y += irq.o
 obj-y += kernel.o
--- /dev/null
+++ b/xen/common/ioremap.c
@@ -0,0 +1,39 @@
+/* SPDX-License-Identifier: GPL-2.0-only */
+
+#include <xen/mm.h>
+#include <xen/pfn.h>
+#include <xen/vmap.h>
+
+#include <asm/io.h>
+
+void __iomem *ioremap_attr(paddr_t pa, size_t len, pte_attr_t attr)
+{
+    void __iomem *ptr = NULL;
+    unsigned int offs = PAGE_OFFSET(pa);
+
+#ifdef arch_ioremap_attr
+    ptr = arch_ioremap_attr(pa, len, attr);
+    if ( ptr )
+        return ptr;
+#endif
+
+    if ( IS_ENABLED(CONFIG_HAS_VMAP) )
+    {
+        mfn_t mfn = _mfn(PFN_DOWN(pa));
+
+        ptr = (void __force __iomem *)__vmap(&mfn, PFN_UP(offs + len), 1, 1,
+                                             attr, VMAP_DEFAULT);
+    }
+
+    return ptr ? ptr + offs : NULL;
+}
+
+/*
+ * Local variables:
+ * mode: C
+ * c-file-style: "BSD"
+ * c-basic-offset: 4
+ * tab-width: 4
+ * indent-tabs-mode: nil
+ * End:
+ */
--- a/xen/include/xen/vmap.h
+++ b/xen/include/xen/vmap.h
@@ -121,9 +121,10 @@ void vfree(void *va);
  *
  * @param pa  Physical base address of the MMIO region.
  * @param len Length of the MMIO region in octets.
+ * @param attr Attributes for the mapping.
  * @return Pointer to the mapped area on success; NULL otherwise.
  */
-void __iomem *ioremap(paddr_t pa, size_t len);
+void __iomem *ioremap_attr(paddr_t pa, size_t len, pte_attr_t attr);
 
 /* Return the number of pages in the mapping starting at address 'va' */
 unsigned int vmap_size(const void *va);



From xen-devel-bounces@lists.xenproject.org Wed Apr 08 12:09:08 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 08 Apr 2026 12:09:08 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1275859.1561552 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wARiV-0007bf-Ec; Wed, 08 Apr 2026 12:09:07 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1275859.1561552; Wed, 08 Apr 2026 12:09: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 1wARiV-0007bY-Ba; Wed, 08 Apr 2026 12:09:07 +0000
Received: by outflank-mailman (input) for mailman id 1275859;
 Wed, 08 Apr 2026 12:09:06 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92) id 1wARiU-0007bS-7E
 for xen-devel@lists.xenproject.org; Wed, 08 Apr 2026 12:09:06 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wARiT-007iev-JY
 for xen-devel@lists.xenproject.org; Wed, 08 Apr 2026 14:09:05 +0200
Received: from [10.42.69.3] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <jbeulich@suse.com>)
 id 69d6455b-e002-0a2a0a5209dd-0a2a4503aab8-24
 for <xen-devel@lists.xenproject.org>; Wed, 08 Apr 2026 14:09:05 +0200
Received: from [209.85.128.54] (helo=mail-wm1-f54.google.com)
 by tlsNG-33051d.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.0)
 (envelope-from <jbeulich@suse.com>)
 id 69d64561-02b3-0a2a45030019-d1558036a48d-3
 for <xen-devel@lists.xenproject.org>; Wed, 08 Apr 2026 14:09:05 +0200
Received: by mail-wm1-f54.google.com with SMTP id
 5b1f17b1804b1-4887ca8e529so7025735e9.0
 for <xen-devel@lists.xenproject.org>; Wed, 08 Apr 2026 05:09:05 -0700 (PDT)
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-48893f39027sm439904415e9.2.2026.04.08.05.09.04
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Wed, 08 Apr 2026 05:09:04 -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=google header.d=suse.com header.i="@suse.com" header.h="Content-Transfer-Encoding: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=1775650145; x=1776254945; darn=lists.xenproject.org;
        h=content-transfer-encoding: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;
        bh=STxNNAbhOhiEnR+KXq2pgjLC+ZNGxAxGakdQHXFTB1w=;
        b=KjMdOyPrrcMlXCyhBrceKOxGVM028M8qXmV4gTUvpSailCuTaUSqjFYwstKmpBvPWy
         ++2Nu/xFoNPaFu5JzEkXCiDvFyhAFPT602kZyGKyhyvUqXwyygqfbmK1XXXKPKzaLyJX
         I6jVwecHlz4l70J4kmGoQqlxzMBF2leFZ4s21IAkGDNtKStX8kzHf2jEgrfirhYefhv3
         9Ei+20d2lcv78lDKeB7rU0dTlOOidyct1ZRp83jAWgXUlQOQhAWEGozUVkyZGEP4L2jA
         /nckGocqwWRrl8EN1eGGXbh3aT+QVaN21mM+74hkCVfpYyjvYgmpv6RcA7rfFSeOE6CN
         NcQA==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20251104; t=1775650145; x=1776254945;
        h=content-transfer-encoding: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;
        bh=STxNNAbhOhiEnR+KXq2pgjLC+ZNGxAxGakdQHXFTB1w=;
        b=euAMUzXDaDNkM4vXhmLE/n5QzvHWzudiY0XqSg+IrO/EYLuL14mO9cb9HtlcQ1dwkq
         n/+0aUBbiUE8UMuUB2Ob/vlcV2nPzzX0DzpnagSpvNQDVy/AeGlAcnORKlSwIhFhtBKl
         heCQTJ4lIcIWHN71T0zTJ0mQ0QDQgfVnFHswNvoucz3KjJovNjhtZ/FK0zYr5NJ3uvpY
         15XpJHYEphAAnHAIwm2Zu1GbxVQSfOJEj5kagYpNJ8WYxm5fe4RxtxOjh0t/NeTmkg/t
         5u19oChHQssWCHRUPya3IqXWh4I+Ys02WzhfBuXfR6tQn/rr3leeKDXB28O1XiXJ8kUU
         9PYQ==
X-Gm-Message-State: AOJu0YxJHDYN3MYRo7UjFAYToTEpRRjnwqdfz4HTsmySDbqCFkEUiJQk
	ARAMoRIkA3b2ZhF4P3eSMAxib+btWoCvAxdLIVGggSu0+5prgZuUmWMeS8gckrJtkaVMjeTjI3O
	cKAY9Uw==
X-Gm-Gg: AeBDiesAMRGy2612aexRMDcjXZB/66oSWIP9hpj3MLDrPzGynNKNfSmfc1L06FXSkFH
	I95tTkXycTZ0wxz2IdnJub+sfhAhBcazYm0pJKBK9GqeyCbKtvL/gVD+/57wpXPshkoUDi45Vih
	S6Evqq+SWDzbxqjmhKEh3duUj9BXaXFk1hReDCNlYCc8/XeF2BDboLf4zDhcM+uoscbjZNXePvk
	DM5/CRhNQDVqEiDHWrgkOQy8Xcr5ymdj5gTL81830r+EFpkLcD1tjhe1zIzSlDdQqcNxjeOEKoH
	iU37/ba61gp0yB/sWhZdP3QcltBMOibue+Tp8TbKgHZxAK+4QX6JJ0nxTeTqeyy+kzeMBPkEIdO
	tEpMN1d2LLkSBkq4H4ZJsBi/RB/xa9TvZaIaW5uzfdHzYYAwULRFNhHY8kZrW73CxC0cNlSSs5a
	Y6FQSCQSIeP9IoRi16rkRE8OlOay3twztQJIqdWsJFW6x/tIRoMSQPINgtVcstGveCozuoKJE7H
	7xrmi0aHpVNRzA=
X-Received: by 2002:a05:600c:3f14:b0:488:c6e9:1e0c with SMTP id 5b1f17b1804b1-488c6e91fe0mr27828085e9.5.1775650144904;
        Wed, 08 Apr 2026 05:09:04 -0700 (PDT)
Message-ID: <da4bf81d-7591-4f5d-8e0d-e6ed9ecb834e@suse.com>
Date: Wed, 8 Apr 2026 14:09:03 +0200
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: [PATCH v2 2/2] make ioremap_wc() x86 only (for the time being)
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>,
 Michal Orzel <michal.orzel@amd.com>, =?UTF-8?Q?Roger_Pau_Monn=C3=A9?=
 <roger.pau@citrix.com>, Alistair Francis <alistair.francis@wdc.com>,
 Connor Davis <connojdavis@gmail.com>,
 Oleksii Kurochko <oleksii.kurochko@gmail.com>,
 Bertrand Marquis <bertrand.marquis@arm.com>,
 Volodymyr Babchuk <volodymyr_babchuk@epam.com>
References: <145299a0-b25c-4612-82c6-9401a2f88ad2@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: <145299a0-b25c-4612-82c6-9401a2f88ad2@suse.com>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 7bit
X-purgate-ID: tlsNG-33051d/1775650145-C9B3BC9A-DE5420CB/10/73395122804
X-purgate-type: spam
X-purgate-size: 2835

Its use in domain building is questionable: Already at the point both uses
were introduced, ioremap_cache() existed. I can't see why kernel and
initrd would need mapping WC, when at the same time other similar mappings
(in common/device-tree/) are done WB.

With those uses replaced, neither Arm nor RISC-V have a need for the
function anymore.

Amends: d8972aa9645f ("xen/arm: kernel: Rework kernel_zimage_load to use the generic copy helper")
Amends: bb7e6d565d92 ("xen/arm: domain_build: Rework initrd_load to use the generic copy helper")
Signed-off-by: Jan Beulich <jbeulich@suse.com>
Reviewed-by: Oleksii Kurochko <oleksii.kurochko@gmail.com>

--- a/xen/arch/arm/include/asm/mm.h
+++ b/xen/arch/arm/include/asm/mm.h
@@ -213,11 +213,6 @@ static inline void __iomem *ioremap_cach
     return ioremap_attr(start, len, PAGE_HYPERVISOR);
 }
 
-static inline void __iomem *ioremap_wc(paddr_t start, size_t len)
-{
-    return ioremap_attr(start, len, PAGE_HYPERVISOR_WC);
-}
-
 /* XXX -- account for base */
 #define mfn_valid(mfn)        ({                                              \
     unsigned long __m_f_n = mfn_x(mfn);                                       \
--- a/xen/arch/arm/kernel.c
+++ b/xen/arch/arm/kernel.c
@@ -148,7 +148,7 @@ static void __init kernel_zimage_load(st
     printk("Loading zImage from %"PRIpaddr" to %"PRIpaddr"-%"PRIpaddr"\n",
            paddr, load_addr, load_addr + len);
 
-    kernel = ioremap_wc(paddr, len);
+    kernel = ioremap_cache(paddr, len);
     if ( !kernel )
         panic("Unable to map the %pd kernel\n", info->bd.d);
 
--- a/xen/arch/riscv/include/asm/io.h
+++ b/xen/arch/riscv/include/asm/io.h
@@ -43,7 +43,6 @@
 
 void __iomem *ioremap(paddr_t pa, size_t len);
 void __iomem *ioremap_cache(paddr_t pa, size_t len);
-void __iomem *ioremap_wc(paddr_t pa, size_t len);
 
 /* Generic IO read/write.  These perform native-endian accesses. */
 static inline void __raw_writeb(uint8_t val, volatile void __iomem *addr)
--- a/xen/arch/riscv/mm.c
+++ b/xen/arch/riscv/mm.c
@@ -592,11 +592,6 @@ void __iomem *ioremap_cache(paddr_t pa,
     return ioremap_attr(pa, len, PAGE_HYPERVISOR);
 }
 
-void __iomem *ioremap_wc(paddr_t pa, size_t len)
-{
-    return ioremap_attr(pa, len, PAGE_HYPERVISOR_WC);
-}
-
 void __iomem *ioremap(paddr_t pa, size_t len)
 {
     return ioremap_attr(pa, len, PAGE_HYPERVISOR_NOCACHE);
--- a/xen/common/device-tree/domain-build.c
+++ b/xen/common/device-tree/domain-build.c
@@ -395,7 +395,7 @@ void __init initrd_load(struct kernel_in
     if ( res )
         panic("Cannot fix up \"linux,initrd-end\" property\n");
 
-    initrd = ioremap_wc(paddr, len);
+    initrd = ioremap_cache(paddr, len);
     if ( !initrd )
         panic("Unable to map the %pd initrd\n", kinfo->bd.d);
 



From xen-devel-bounces@lists.xenproject.org Wed Apr 08 12:12:12 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 08 Apr 2026 12:12:12 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1275905.1561577 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wARlQ-0001fy-Do; Wed, 08 Apr 2026 12:12:08 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1275905.1561577; Wed, 08 Apr 2026 12:12: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 1wARlQ-0001fr-An; Wed, 08 Apr 2026 12:12:08 +0000
Received: by outflank-mailman (input) for mailman id 1275905;
 Wed, 08 Apr 2026 12:12:06 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <jbeulich@suse.com>) id 1wARlO-0001fd-G9
 for xen-devel@lists.xenproject.org; Wed, 08 Apr 2026 12:12:06 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wARlN-0059zL-SN
 for xen-devel@lists.xenproject.org; Wed, 08 Apr 2026 14:12:05 +0200
Received: from [10.42.69.9] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <jbeulich@suse.com>)
 id 69d6460a-bab6-0a2a0a5309dd-0a2a4509cb86-36
 for <xen-devel@lists.xenproject.org>; Wed, 08 Apr 2026 14:12:05 +0200
Received: from [209.85.128.47] (helo=mail-wm1-f47.google.com)
 by tlsNG-bad1c0.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.0)
 (envelope-from <jbeulich@suse.com>)
 id 69d64615-bf79-0a2a45090019-d155802fdcce-3
 for <xen-devel@lists.xenproject.org>; Wed, 08 Apr 2026 14:12:05 +0200
Received: by mail-wm1-f47.google.com with SMTP id
 5b1f17b1804b1-488ba6366a7so27390915e9.0
 for <xen-devel@lists.xenproject.org>; Wed, 08 Apr 2026 05:12:05 -0700 (PDT)
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-488c55d1347sm26922435e9.4.2026.04.08.05.12.04
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Wed, 08 Apr 2026 05:12:04 -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=google header.d=suse.com header.i="@suse.com" header.h="Content-Transfer-Encoding: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=1775650325; x=1776255125; darn=lists.xenproject.org;
        h=content-transfer-encoding:autocrypt:subject:from:cc:to
         :content-language:user-agent:mime-version:date:message-id:from:to:cc
         :subject:date:message-id:reply-to;
        bh=HCmUHnX4lfLVvQXrlBVVBQ6jAhvuU7BVpCLwZlOIldo=;
        b=PiPFxAmJ4nWAkdaVdhwKo3Rtp/mJoYc3lE/michp2yekHOHSw81fHk9fNou0CbcJjR
         eEgsi/pvETw2D1E2g1qqsv1qFibsqlg3/vZjnn61q2ReIsMYft9S8/Qo3tj+gd+bc4Sr
         hSQXZMvt1lfoolejDJZU6Mxgw/y4QWpknWZ1Jl3SFX0bZM869QZBSFcYZBz7vydsLPt+
         Pe/FG4hrN1wIrIUux3mrToPzmh4Zx2XACKa+/dYvHaorRM2M71jKWRaeqjbWaVfrZHrg
         f0ssmYZi6ya89D/VLFw9d8E7pFaoUj4YIFgxQou31Y0EZv6O8fp2wIAVplu5nSDHot++
         Z7VA==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20251104; t=1775650325; x=1776255125;
        h=content-transfer-encoding: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;
        bh=HCmUHnX4lfLVvQXrlBVVBQ6jAhvuU7BVpCLwZlOIldo=;
        b=DTn+4FTP822uYrKV31AiWy59s9aRXacgOQMRd5M4PYlb5WHXepPm4utQ8/99j69yh3
         t6Pmf9gWh+D1ycrRrlNN5McZznqWygPPwCpU5cy0GLUyFczpyLMgfSN1Ha322VKCh+8a
         7oajstHIjsU6YDueXTVlmaWBOyVip2roGIYQQqDT+qA3fKBN2doA2chrmDKP0hLkNxOs
         koW6+8XPJKWVIb3/XK4Y6pIhmeXOnGARv9rckfd4Sa2FeFXpwRl2PjA/7LOVLWUgsu+4
         f8RB5/m7FVdIRcqvEjIGmx1wioghTyvoY7/MEZWdPQ1IGhOp1DaBVsPA/mOMrer4/QGB
         VWmg==
X-Gm-Message-State: AOJu0YzIM2h1NqhJnSFrp13xCOFX2L+aLD1XfO0dbChegIt7exAKOic6
	nUQyZV5TGevm91whETZ1hsgoF4mHsIq4bINCTG6AGcDIjGHMQHJkhQlTCAy5U1HTtUfQATOpTgc
	fU0a1PQ==
X-Gm-Gg: AeBDieu35CezkAgLKbCzlohEBX2+l6nRUTrUt6bXnUlhxXLNN76d/DkLHCGs8ZCba27
	AZvKRXyJOaTCGrrZ7Q85F6/jgezDFVAYVteQsZ4KunpXO2bRIJXc+2SiVqGpxi7hpo6uqJgDUpB
	g3jbRTGNYbnxG6MJ7lhoicH2K3/iuCtKFib6SWym42XZtgUHyA7HqUq7ve4CYmmThQzeENB67P0
	mU2IBm5+noaLL4XQEEMJfN9b4M0iheg5wInejKopn51lagKR4h3HmSLefZzojOa7hi9DbvtFLZu
	07uR2nH6mo5EAP1VF5VFjaxRWBL3bI4RPb4crgXppdIMD2VOeGAlK6UMuKnAl3Ogt5SoiFVZSP7
	8S4oFp9HE0gq+TVIUu2gky0sfePOI+RzlNyWKpvLigffoVUc6JJf2WgsdZGdEuNxIsZc5jkYc4E
	2YJZflGJX3bpuzIRRLFzNrefhkm+qSGv2bjxnHcz/1Gs7woyBVXLCozd9HKGKh8gKyByH8gG3mI
	WCtvsz+lAJoTUs=
X-Received: by 2002:a05:600c:1553:b0:488:acbc:b2e with SMTP id 5b1f17b1804b1-488acbc0ca8mr173907175e9.17.1775650324898;
        Wed, 08 Apr 2026 05:12:04 -0700 (PDT)
Message-ID: <deb26054-ec00-483c-bc18-1edc1b4599b3@suse.com>
Date: Wed, 8 Apr 2026 14:12:03 +0200
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>,
 =?UTF-8?Q?Roger_Pau_Monn=C3=A9?= <roger.pau@citrix.com>,
 Teddy Astie <teddy.astie@vates.tech>
From: Jan Beulich <jbeulich@suse.com>
Subject: [PATCH v10] x86: use / "support" UDB
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-bad1c0/1775650325-2ED4F152-29B1A2FA/0/0
X-purgate-type: clean
X-purgate-size: 2238

With opcode D6h now firmly reserved as another #UD-raising one in 64-bit
mode, use that instead of the two-byte UD2 for bug frame marking.

While there also make a minor adjustment to the emulator.

Signed-off-by: Jan Beulich <jbeulich@suse.com>
---
One of the table entries in stub_selftest() uses UD1, yet in not quite
an appropriate way: The 0x90 following it (presumably meant to be a NOP)
really is a ModR/M byte, requiring a displacement to follow. Wouldn't we
better adjust that (e.g. using 0xcc instead)?
---
v10: Shrink the actual emulator change to just a comment adjustment.
     Extend .byte directive commentary.
v9: New.

--- a/xen/arch/x86/include/asm/bug.h
+++ b/xen/arch/x86/include/asm/bug.h
@@ -21,7 +21,7 @@
 
 #ifndef __ASSEMBLER__
 
-#define BUG_INSTR       "ud2"
+#define BUG_INSTR       ".byte 0xd6" /* UDB, requiring gas 2.46 */
 #define BUG_ASM_CONST   "c"
 
 #else  /* !__ASSEMBLER__ */
@@ -37,7 +37,7 @@
         .error "Invalid BUGFRAME index"
     .endif
 
-    .L\@ud: ud2a
+    .L\@ud: .byte 0xd6 /* UDB, requiring gas 2.46 */
 
     .pushsection .rodata.str1, "aMS", @progbits, 1
          .L\@s1: .asciz "\file_str"
--- a/xen/arch/x86/traps.c
+++ b/xen/arch/x86/traps.c
@@ -1338,7 +1338,7 @@ void asmlinkage do_trap(struct cpu_user_
 
 void asmlinkage do_invalid_op(struct cpu_user_regs *regs)
 {
-    u8 bug_insn[2];
+    uint8_t bug_insn;
     const void *eip = (const void *)regs->rip;
     int id;
 
@@ -1350,8 +1350,8 @@ void asmlinkage do_invalid_op(struct cpu
     }
 
     if ( !is_active_kernel_text(regs->rip) ||
-         copy_from_unsafe(bug_insn, eip, sizeof(bug_insn)) ||
-         memcmp(bug_insn, "\xf\xb", sizeof(bug_insn)) )
+         copy_from_unsafe(&bug_insn, eip, sizeof(bug_insn)) ||
+         bug_insn != 0xd6 /* UDB */ )
         goto die;
 
     id = do_bug_frame(regs, regs->rip);
--- a/xen/arch/x86/x86_emulate/decode.c
+++ b/xen/arch/x86/x86_emulate/decode.c
@@ -651,7 +651,7 @@ decode_onebyte(struct x86_emulate_state
     case 0xce: /* into */
     case 0xd4: /* aam */
     case 0xd5: /* aad */
-    case 0xd6: /* salc */
+    case 0xd6: /* salc / udb */
         s->not_64bit = true;
         break;
 


From xen-devel-bounces@lists.xenproject.org Wed Apr 08 12:20:38 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 08 Apr 2026 12:20:38 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1275934.1561585 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wARta-0003hS-6G; Wed, 08 Apr 2026 12:20:34 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1275934.1561585; Wed, 08 Apr 2026 12:20: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 1wARta-0003hL-3N; Wed, 08 Apr 2026 12:20:34 +0000
Received: by outflank-mailman (input) for mailman id 1275934;
 Wed, 08 Apr 2026 12:20:32 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <jbeulich@suse.com>) id 1wARtY-0003hE-Mj
 for xen-devel@lists.xenproject.org; Wed, 08 Apr 2026 12:20:32 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wARtY-007lJO-2f
 for xen-devel@lists.xenproject.org; Wed, 08 Apr 2026 14:20:32 +0200
Received: from [10.42.69.9] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <jbeulich@suse.com>)
 id 69d64802-e002-0a2a0a5209dd-0a2a450996ca-14
 for <xen-devel@lists.xenproject.org>; Wed, 08 Apr 2026 14:20:31 +0200
Received: from [209.85.128.43] (helo=mail-wm1-f43.google.com)
 by tlsNG-bad1c0.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.0)
 (envelope-from <jbeulich@suse.com>)
 id 69d6480f-bf79-0a2a45090019-d155802bc0eb-3
 for <xen-devel@lists.xenproject.org>; Wed, 08 Apr 2026 14:20:31 +0200
Received: by mail-wm1-f43.google.com with SMTP id
 5b1f17b1804b1-488a9033b2cso40694015e9.2
 for <xen-devel@lists.xenproject.org>; Wed, 08 Apr 2026 05:20:31 -0700 (PDT)
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-488940e075esm522840555e9.9.2026.04.08.05.20.30
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Wed, 08 Apr 2026 05:20:30 -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=google header.d=suse.com header.i="@suse.com" header.h="Content-Transfer-Encoding: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=1775650831; x=1776255631; darn=lists.xenproject.org;
        h=content-transfer-encoding:autocrypt:content-language:cc:to:subject
         :from:user-agent:mime-version:date:message-id:from:to:cc:subject
         :date:message-id:reply-to;
        bh=ROGfcSkCOBNr5guYff8l0SKnfdADg27J+462m1SOZPA=;
        b=RoSwoF6lxH5h3vM66cjjP4haYx55obFo7v1XALxMqUBpQ45ubyA0UkB6+ar6bkIPXO
         PISPTArtJ8xChf8ELkMsNEYuUrKQJ+Z7vkJ+myoCsicMKFAOrqMxuR93Fi2C63fSxoWY
         ZrtivG4wqqylV1wzONcx6tFVomUA+cTXu1InApuiZU7PNK2Y63hDdLnGRCN6hML6tN39
         ODmHUkROP8l2YgyJR0DDmAT0NcwuqEU0YgoVlmxH6gxIiiHkbfiskmBmmNDrRpB3Gwuc
         4fKMwrkeIj5N+meJZljnHemBIHPOEH2YEQVLi2PvYRmobDrPQRaqNtuDzJxL1Vt5DJkT
         QsLQ==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20251104; t=1775650831; x=1776255631;
        h=content-transfer-encoding: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;
        bh=ROGfcSkCOBNr5guYff8l0SKnfdADg27J+462m1SOZPA=;
        b=f9vtcyHbxDVGpb4U3BJLPrJOAIfYjPjkWJSzVXxj0sRg1yjDm6/Rayp6gmdWIEjj/j
         WnMea8GjzVzz1l4VefNpLnMC6rP+PKRou46YCsVKfyzx+hJ+KHEgdkbu1Y2UfUJm9Ga7
         FM/sZJ54l5f3ZN7olFfLnDlhc2/KmB1qphkyo8OU2AbLSGLkgwsmxs5y/rE7rMKtvcCz
         eDD7DDRqvlTELsSTpm2BhvSmm+h2wZvfMla10hZhtI26S+HNzlsYm69ae9r0pB9h7+rk
         fj3Ep4FHPG9Y5PuQtMifJECOuFba5Z8nBtc3obfUz7KF8GqzP9l7sh0/eb0G4pQ6xQNX
         VmbA==
X-Gm-Message-State: AOJu0YzI0mK8rfEXfygi3fy0MujKfq33hqL2F38bYWzaYFtSUxxKfkyj
	jB9z4H+V4fY/FLkptZFJb7rqkrAL89Zc4hpk4KnvbxU2AHPrsCpbQ6Q+aaOAEsgyOk5nfUrj/H4
	KETDoXQ==
X-Gm-Gg: AeBDieuJNiKo6B72hsiDSjBsZgCvC+kD3ls+2XN7/DzNn/sp1DVpQToZWKtHsdilZTi
	GbBBOOW/M8DaDSP86gxNcrVkgt0SSjB5d2y1JJymvYqf4Glk+YA1EzaoPyvrZkW7gs4kaj7zd/T
	Cx2LNm7jd4RdkJilVMnLJur5MiP9CNLwCAuBK34L7MagF+6Ym2QtLjiMmNf31RBz8bKzotqDw04
	AZMOiR9gc+CgtO/6JZoFeGeXLx825PmpOOcLGhlVLiiuvWJvDSNU+cFkGpjfeSDZWomJ26Lnj3c
	WkmCTgfcZdwlfSaETkI1HUAOzecbR8Z5mL2yhbcF13e7KWVqE6l9bouWOjgLeAUHIg83Bzj8D5E
	SacBPrrOhENJY0f+n2Xwyp1TkvxixRVamt9JpdhqdZ+rfxLpJ1TkPcXX8rnFVGBVGjkYzhylxPF
	YrM76rwBSBtIDIjsFN9DFLxu56KeG74JaRC8egTfWPcSNdPuQIARc3Lat2i7Rj6KzdipjFsfCCx
	3473AxkapNHBRI=
X-Received: by 2002:a05:600c:3b23:b0:485:17a7:b9c7 with SMTP id 5b1f17b1804b1-488996ecd50mr271620495e9.10.1775650831367;
        Wed, 08 Apr 2026 05:20:31 -0700 (PDT)
Message-ID: <f064c3af-c22a-40e0-a268-ee37e34297a3@suse.com>
Date: Wed, 8 Apr 2026 14:20:29 +0200
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
From: Jan Beulich <jbeulich@suse.com>
Subject: [PATCH v2 0/3] x86: CET-SS related adjustments
To: "xen-devel@lists.xenproject.org" <xen-devel@lists.xenproject.org>
Cc: Andrew Cooper <andrew.cooper3@citrix.com>, Wei Liu <wl@xen.org>,
 =?UTF-8?Q?Roger_Pau_Monn=C3=A9?= <roger.pau@citrix.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
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 7bit
X-purgate-ID: tlsNG-bad1c0/1775650831-5455B152-8FE8D687/0/0
X-purgate-type: clean
X-purgate-size: 409

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 individual patches.

v2, besides addressing small issues, is mainly a re-base over FRED
work finally having gone in.

1: record SSP at non-guest entry points
2: traps: use entry_ssp in fixup_exception_return()
3: prefer shadow stack for producing call traces

Jan


From xen-devel-bounces@lists.xenproject.org Wed Apr 08 12:21:09 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 08 Apr 2026 12:21:09 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1275942.1561594 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wARu9-00049b-F1; Wed, 08 Apr 2026 12:21:09 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1275942.1561594; Wed, 08 Apr 2026 12:21: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 1wARu9-00049U-C5; Wed, 08 Apr 2026 12:21:09 +0000
Received: by outflank-mailman (input) for mailman id 1275942;
 Wed, 08 Apr 2026 12:21:08 +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 1wARu8-00049O-00
 for xen-devel@lists.xenproject.org; Wed, 08 Apr 2026 12:21:08 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wARu7-007lZR-C7
 for xen-devel@lists.xenproject.org; Wed, 08 Apr 2026 14:21:07 +0200
Received: from [10.42.69.11] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <Mykyta_Poturai@epam.com>)
 id 69d64832-e002-0a2a0a5209dd-0a2a450be216-6
 for <xen-devel@lists.xenproject.org>; Wed, 08 Apr 2026 14:21:07 +0200
Received: from [52.101.84.101]
 (helo=DB3PR0202CU003.outbound.protection.outlook.com)
 by tlsNG-42698a.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.0)
 (envelope-from <Mykyta_Poturai@epam.com>)
 id 69d64832-bca8-0a2a450b0019-34655465c2f5-3
 for <xen-devel@lists.xenproject.org>; Wed, 08 Apr 2026 14:21:07 +0200
Received: from PAVPR03MB10102.eurprd03.prod.outlook.com
 (2603:10a6:102:30d::12) by DB9PR03MB7691.eurprd03.prod.outlook.com
 (2603:10a6:10:2c7::18) with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9745.41; Wed, 8 Apr
 2026 12:21:04 +0000
Received: from PAVPR03MB10102.eurprd03.prod.outlook.com
 ([fe80::b8c6:f37a:987a:beb]) by PAVPR03MB10102.eurprd03.prod.outlook.com
 ([fe80::b8c6:f37a:987a:beb%5]) with mapi id 15.20.9769.016; Wed, 8 Apr 2026
 12:21: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=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=otrIIgmav8Z+OnqSmKw0+XsOrCFgfeJ2bmAUq3cQhvP+Wvi5ypzAGrfwG7bAnvWEkf18pOR/L8bqftVBZdmMdXhmy7089X4bPhjIZAECZKrUMNtkXm+BPTgKUCVZKUqTh52EPkwHN0j5xlCyAn0bQ14LEHJ/LkZciqPedqxfABUvVPFqo8P3+xuNxBvD/O9gcbslRyP0F7ZoZ5u+BPTG+4Qg397O+B9rkXZksyWSIGOVzq+PgpmQ92SaAHPklZWCu6bhQXQ6pAOo5VP6NRLg/o5odtrz/5RwlB+ZTNUjF4yey3B3fuctB6jBQmLKpPpkM+Treusl7inw2Oq8ihoy3Q==
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com;
 s=arcselector10001;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1;
 bh=6ycUemd65Zi6yMgxClzlDFk4gfLidocGUJuNo4LCHZY=;
 b=QKKQ2jozvKvtg0qLweLLE8dxOWB8cOrDc+Y3Iv/j334jj0sI8UKKNxUcHWUT7H9yMAIVOhhSc1AiMdtEewByMB5ZPFI74wvBUdkGX5zYMS9S8ymm7hEYRjtgako70r8VTXlV2E7MOTMaI1odNOlPb4zAUDxMo29YoMKv/5aWuuzBqdqkQnk/MQTcFYLbwK/3L2r0/ArXClIolu41ovG0/osBtEwZ9oGm6pBvbKzA7/hafG2zWsThNz/zeqqNhObKMx7Af8vXIqlYHy0pjZglqK0bIwCSTMigqqWwPbNwFbmBef9n/182dETnuPcgS8wQuS9fQjA31JlIwLZVnOPh6g==
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=6ycUemd65Zi6yMgxClzlDFk4gfLidocGUJuNo4LCHZY=;
 b=cGAGSKnNu6Ps44uK+qEck/6WD8IX9APr9sI3aper29eoDfd4SzKNhbMERmz429gXmeFQso4wCKiGDvyXUj5OzjDttZbZtrMqs/Q+b2i0EydmJeAOHXHmCnsXJqILISTG01y7+KxG97GGeo74c9HlCroNszZRDdFKe/riMm4PWzQU6t0brCaYUMf7pP5BN4BKP1tm+AnN9EIbBwQJf+SrPcm17YTpmxFCkRFX7rzcPwYiIlY8B9iwx71bV86/IARF94EJmn/bBUB4lPWJYJHEuiSl2JC/0oxPicXChL7OnrsDYKKpzFaez6o+TWk6PLP0CuD8vctNczP6+QHjlLriDg==
From: Mykyta Poturai <Mykyta_Poturai@epam.com>
To: Jan Beulich <jbeulich@suse.com>
CC: Andrew Cooper <andrew.cooper3@citrix.com>,
	=?utf-8?B?Um9nZXIgUGF1IE1vbm7DqQ==?= <roger.pau@citrix.com>, Anthony PERARD
	<anthony.perard@vates.tech>, Michal Orzel <michal.orzel@amd.com>, Julien
 Grall <julien@xen.org>, Stefano Stabellini <sstabellini@kernel.org>,
	"xen-devel@lists.xenproject.org" <xen-devel@lists.xenproject.org>
Subject: Re: [PATCH v7 3/6] Kconfig: Make cpu hotplug configurable
Thread-Topic: [PATCH v7 3/6] Kconfig: Make cpu hotplug configurable
Thread-Index: AQHcwDy29LsBHsG5wEG6AuodBSMA4bXG/lkAgA4lgoA=
Date: Wed, 8 Apr 2026 12:21:04 +0000
Message-ID: <00a42bdd-8d9b-4828-b789-8d6163c0314c@epam.com>
References: <cover.1774871881.git.mykyta_poturai@epam.com>
 <f3c523ef5b94e930902016d69b440032c9e6c3bd.1774871881.git.mykyta_poturai@epam.com>
 <e37330f7-96ca-41a9-81b1-14d7f3947dd6@suse.com>
In-Reply-To: <e37330f7-96ca-41a9-81b1-14d7f3947dd6@suse.com>
Accept-Language: en-US
Content-Language: en-US
X-MS-Has-Attach:
X-MS-TNEF-Correlator:
authentication-results: dkim=none (message not signed)
 header.d=none;dmarc=none action=none header.from=epam.com;
x-ms-publictraffictype: Email
x-ms-traffictypediagnostic: PAVPR03MB10102:EE_|DB9PR03MB7691:EE_
x-ms-office365-filtering-correlation-id: b14affa4-959f-417b-d08f-08de95694df7
x-ms-exchange-senderadcheck: 1
x-ms-exchange-antispam-relay: 0
x-microsoft-antispam:
 BCL:0;ARA:13230040|376014|366016|1800799024|22082099003|18002099003|56012099003|38070700021;
x-microsoft-antispam-message-info:
 AO8hzjFc6HePs6O2qxXnNLHMh3X/mvvCwnBFqJElrSamNhc1eZOiKDiRgcNGkFBBoKTlicEuozkTBs7p4MhiUHe9ltEA8OLRsViTYQM9ZytTXjO2mZYQb/HT11zgIt8d4G2oCzWCPjPMTS96+RxH6JobYkv4UZ+Pr3LJD75OGiL7GfjjLiid0zBCu7hzgnqsQrk2D3t51xzox4ByYVs06VClHXSOpwsra0y6YcP73YU1d3FqF4UtXBZLW94nl81dyFbt3gubWwUnjV9g/J8FGlUYlrYytC+5InRxA8xGTADWoiRAFSltCz0z1CU8LD+v4/pEEMWWhG63For8cOBdDxnDeqrTrZObNNng5KBC6pzVqlESEayJx5ju0KjdKiTtuOY04YWXrk6XUsGsyXHEnN4u1QX4QZRhoNCCWLRAfq6nNVVjRznovoeTmhBRLJq1Wax3KneVPNpzu4402zYtO2DYSeh9H/gAraxXwAIVDzusfdbKU7KzGCNZMTxF/aGsYT+pqGc0xGr6B6ZRGbCP5itR9qDT2UwZEGiB+YriK060hm0kLUDkFj3e89pxTBg3SFNpWdYR+UXiGY+PHfoL8zhUV8H9yd0f7UpWWyKSVcWibeo93oh2FbaornX9yUGiVTh5o39X/lh8eAlhDY55bLCijoiowmmzxdF3qPUqZvyNVYR9lv0bQoLqmcpekicls/Za5EUrdrjpSzJj2CuXAwOJ5TYHjnF0lnjBeOCFsi5EipsPIeyjTRqSXoBp7z/bemfNWL+OkO8IdA5rAufIwDr8Yd6beyzMsfA3iqXUVfc=
x-forefront-antispam-report:
 CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:PAVPR03MB10102.eurprd03.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(376014)(366016)(1800799024)(22082099003)(18002099003)(56012099003)(38070700021);DIR:OUT;SFP:1102;
x-ms-exchange-antispam-messagedata-chunkcount: 1
x-ms-exchange-antispam-messagedata-0:
 =?utf-8?B?d0k3MkpERDBLcDBiM1VVVkZHRTR6eTFuQVRMN29QV0VBaEhFTFBHeFFuNlBG?=
 =?utf-8?B?K0pPaTREMmhRdnVXbkxQeVZ4eVhQTFdFYzVhNTFmaWJOTGUxZHovd0ZyYXVa?=
 =?utf-8?B?Z1Y5N3NyM1VBcThMTUcyV0IxZUcwSlN1a29Sdkd3LzhWRzFLSmkyQXQ3dSta?=
 =?utf-8?B?MFV4SzI5UWx5MXY2R1NMQVBaOFNLK0NUb3l5ZDJ4RzhCMzYrakdDTmtCUzQ4?=
 =?utf-8?B?a0dNQm1QTWJLU2ZWY0hLVEdqQkJNaFU2SVNSVTM4dVgwandEUVpld1pNWm94?=
 =?utf-8?B?OUovRlRIdnpiT3ZycGNKdFdFTi9wa25mMlgrbjRqdkZmNW85d0E2SlVxeVIv?=
 =?utf-8?B?QktTT3NUQ1EwSzhaazJNUURjc2ZFNnljaE5zcVJUZXZaVFlKNnFjdzYrZmpP?=
 =?utf-8?B?YXU1SEhZdEVGTW8rbFdYUmJ2MkVkV0l1QXJGUys0elVtVjNiRTJhZjNPVXNn?=
 =?utf-8?B?a3VxcHMvRUxTSStwZWNkWUQyUjZhYkwvV0ZTc3g5VTlTVFRMTzVSdCt5enlq?=
 =?utf-8?B?RU01dHd2Sjk3eDJDVDVSd3FNdGFjank2Z0s2L0xBd0l0Z0srOFNtZGZmN3VE?=
 =?utf-8?B?ZkNlWVhPQW1PRW9VVTVTWTJUUGN2S0tmemgyQkhONXkrSFBZaUNjNDNSRXpT?=
 =?utf-8?B?NnZ2aU1kZ0Z1MUtiS2hMN28yMUwzR1EyajJZOTM1T2VHK2loRzJ6VE1RMmp0?=
 =?utf-8?B?N0tMME1Eb0FwVUZHM003Q1JHMk5UbW5EWjZBUUpYLzZmT2svZHJiMHZHcVV4?=
 =?utf-8?B?N2NEbnlpL0hrZEI4QXZuT2tXU0MvbHBNRmh4SVhwUUV2eE96a3R6L0F6S092?=
 =?utf-8?B?UVpJWm5rNDMzMENOZ1llT1M4bXBWL2pENWxKU3NDcTJlOFo1SUZrVW9LSnNL?=
 =?utf-8?B?UkdEbVVTb1FhWVZlNnZiZis0aG45MTg3MkR5NXdOKzU3Z1lJbk1CRVVFTU5k?=
 =?utf-8?B?UlhqamVnWEdNS1NEYjZFWUpacGNQRkZRUVZOcnM1RGMwWDE5S2V2ZWpwY3Rs?=
 =?utf-8?B?VjlVbUJmR2VybVB3cjFURmhmUUVtdFNaMmVQam85aEtpSEZoM2dSeEFab3o4?=
 =?utf-8?B?RzgrQndqTFhER0MzYTVITUZQT1Q3RE4zN2RHSzdzZUxEbkNSMFl3M3Fsd0xz?=
 =?utf-8?B?T1M2R3hqNDc4ZFJkUVRMMCtGZjhsUEkwL1hneitvUlh3T01oSW0rd1pwdVRS?=
 =?utf-8?B?R0pzYlpwVjRCV0xVRE5wbEpLUlF5WHoyN05pRXVGSnBPMHo5ZXA3K0dDc29V?=
 =?utf-8?B?d1RIMDVEYkxoc1BjaXNTYlNYUytqYUJxQ2xKYi92UUhFYXhHL3FQb2d1VG9B?=
 =?utf-8?B?eGREZGpyRmhjdGdqUDY3ME9wd0IwZ1hqOS8rK1BTd0NSK0p0c0dzajNUZ1Mx?=
 =?utf-8?B?dkJNTU1DUEhtMUl6NXhrN0l6dDg1by92OEVoOHpMUUhHYnkyeU5rdmc2c0VS?=
 =?utf-8?B?QktaejNNZmVsOXZwdGliQUorZDNEaUVya1lXbXRueEJ2dWlzSmo0b1p0bGJE?=
 =?utf-8?B?UTIxSDNQTko3VGRWZGpmTW9QaHpjT2U5SXhiVEVYTjEwTFI2T0VUUWxHR0lD?=
 =?utf-8?B?VXhmdzlEbXQzNFJtaUMvdmx0RGw3QWtrRm9lYnhCRkxvUVlOdU1GeUtqUnh1?=
 =?utf-8?B?NS9uTG9BK0EwbFhSL2JFR2VBQy82NDlMSlh0NWxTbEUzNkhCZ05xckUxSjNZ?=
 =?utf-8?B?VVdqeTRKVmZwcTZkUEQ5dml2VnRVM1NaeHZrMld5amJEVDU4dW9Cc2xkTmdl?=
 =?utf-8?B?YjU1TVhscklBaDJlUHhsQmFKOFdsTko4czhMbHV3L0ZQOEpFdStjOWZ0WnRV?=
 =?utf-8?B?NEhKOG41TVJBZGtWbFVTMFRINzRRK3M3K1ZZd0NnRHdRMEM3WHUva1J4L1ZF?=
 =?utf-8?B?bjlWZ1RLVHpZSGJONVg0TkxKN1JNWFpaWTU4YnRFVE9oekwwZmR6R3FoeGxv?=
 =?utf-8?B?cXBvajhCZldSTGgrYjhIUTFOWFA2MzRaZWVMZEtPa3J4c2owZmoya2lGUkk2?=
 =?utf-8?B?MVNoY3VCd1RiTjRyOVJ3U016dzJNVm1yaFBCZ2FuOThkWDhmOGtmNlZYM3Jo?=
 =?utf-8?B?aHh0OGNDVzRpUEFFNzVtZUVTWWExbUtRS1h1bXNKQXRtNW50RVVLR3lZMWM4?=
 =?utf-8?B?d1dDU2x6d0xYeUlid2t6VW1NMkE5dDNkaDQyZXJETU9RSUJvdXhpdUR2cjVi?=
 =?utf-8?B?ME9iazA4eWdEUStQVllYeEhNYXJwbG1FT0ZRUDk4LzZGcjlJSW9JUGdEMEw3?=
 =?utf-8?B?S2dpYkR1ZWowcHFIdWFCTmNBMksxdTZuTlROS1BqN1dteGNZeHl3dTZBU0JY?=
 =?utf-8?B?aXRHRHBndnV2K0tpR1YraFBTUGxyKzQ0Q1dYQ01OODdUWDhiRUlPQllsYlBu?=
 =?utf-8?Q?XAyZljcCGCbZK/MA=3D?=
Content-Type: text/plain; charset="utf-8"
Content-ID: <2011F7FF645A5B419B72B0067B288B90@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: PAVPR03MB10102.eurprd03.prod.outlook.com
X-MS-Exchange-CrossTenant-Network-Message-Id: b14affa4-959f-417b-d08f-08de95694df7
X-MS-Exchange-CrossTenant-originalarrivaltime: 08 Apr 2026 12:21:04.5290
 (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: UEYCtGFM0is1cuq2Lip8x3vnqx4CT6ZhJsYL7TrXqrryWnjhMAacTB4FtMpb+1v6Ad2/yG3xDJgKZxzD8b59cA==
X-MS-Exchange-Transport-CrossTenantHeadersStamped: DB9PR03MB7691
X-purgate-ID: tlsNG-42698a/1775650867-F4FC82A1-77D53ED9/0/0
X-purgate-type: clean
X-purgate-size: 2300

T24gMy8zMC8yNiAxNToxOSwgSmFuIEJldWxpY2ggd3JvdGU6DQo+IE9uIDMwLjAzLjIwMjYgMTM6
NTksIE15a3l0YSBQb3R1cmFpIHdyb3RlOg0KPj4gRm9yIHRoZSBwdXJwb3NlcyBvZiBjZXJ0aWZp
Y2F0aW9uLCB3ZSB3YW50IGFzIGxpdHRsZSBjb2RlIGFzIHBvc3NpYmxlIHRvDQo+PiBiZSB1bmNv
bmRpdGlvbmFsbHkgY29tcGlsZWQgaW4uIE1ha2UgQ1BVIGhvdHBsdWcgYW5kIFNNVCBvcGVyYXRp
b25zDQo+PiBjb25maWd1cmFibGUgdG8gZWFzZSB0aGUgcHJvY2Vzcy4gVGhpcyB3aWxsIGFsc28g
aGVscCB3aXRoIGludHJvZHVjaW5nDQo+PiBDUFUgaG90cGx1ZyBvbiBBcm0sIHdoZXJlIGl0IG5l
ZWRzIHRvIGJlIGNvbmZpZ3VyYWJsZS4NCj4+DQo+PiBTaWduZWQtb2ZmLWJ5OiBNeWt5dGEgUG90
dXJhaSA8bXlreXRhX3BvdHVyYWlAZXBhbS5jb20+DQo+IA0KPiBMb29rcyBsYXJnZWx5IG9rYXkg
ZnJvbSBhIHRlY2huaWNhbCBwb3Y7IG9uZSBuaXQgYW5kIG9uZSAocmVwZWF0ZWQpIHJlbWFyaw0K
PiBiZWxvdy4NCj4gDQo+PiAtLS0gYS94ZW4vYXJjaC94ODYvc3lzY3RsLmMNCj4+ICsrKyBiL3hl
bi9hcmNoL3g4Ni9zeXNjdGwuYw0KPj4gQEAgLTUzLDYgKzUzLDExIEBAIHN0YXRpYyBsb25nIGNm
X2NoZWNrIHNtdF91cF9kb3duX2hlbHBlcih2b2lkICpkYXRhKQ0KPj4gICAgICAgdW5zaWduZWQg
aW50IGNwdSwgc2libGluZ19tYXNrID0gYm9vdF9jcHVfZGF0YS54ODZfbnVtX3NpYmxpbmdzIC0g
MTsNCj4+ICAgICAgIGludCByZXQgPSAwOw0KPj4gICANCj4+ICsgICAgaWYgKCAhSVNfRU5BQkxF
RChDT05GSUdfQ1BVX0hPVFBMVUcpICkNCj4+ICsgICAgew0KPj4gKyAgICAgICAgQVNTRVJUX1VO
UkVBQ0hBQkxFKCk7DQo+PiArICAgICAgICByZXR1cm4gLUVPUE5PVFNVUFA7DQo+PiArICAgIH0N
Cj4+ICAgICAgIG9wdF9zbXQgPSB1cDsNCj4gDQo+IEFub3RoZXIgYmxhbmsgbGluZSBhYm92ZSB0
aGlzIG9uZSBwZXJoYXBzPw0KPiANCj4+IC0tLSBhL3hlbi9jb21tb24vS2NvbmZpZw0KPj4gKysr
IGIveGVuL2NvbW1vbi9LY29uZmlnDQo+PiBAQCAtNjM3LDYgKzYzNywxNCBAQCBjb25maWcgU1lT
VEVNX1NVU1BFTkQNCj4+ICAgDQo+PiAgIAkgIElmIHVuc3VyZSwgc2F5IE4uDQo+PiAgIA0KPj4g
K2NvbmZpZyBDUFVfSE9UUExVRw0KPj4gKwlib29sICJDUFUgb25saW5lL29mZmxpbmUgc3VwcG9y
dCINCj4+ICsJZGVwZW5kcyBvbiBYODYNCj4+ICsJZGVmYXVsdCB5DQo+PiArCWhlbHANCj4+ICsJ
ICBFbmFibGUgc3VwcG9ydCBmb3IgYnJpbmdpbmcgQ1BVcyBvbmxpbmUgYW5kIG9mZmxpbmUgYXQg
cnVudGltZS4gT24NCj4+ICsJICBYODYgdGhpcyBpcyByZXF1aXJlZCBmb3IgZGlzYWJsaW5nIFNN
VC4NCj4gDQo+IFRoZSBuYW1lIG9mIHRoaXMgb3B0aW9uIG1heSBuZWVkIGlucHV0IGZyb20gb3Ro
ZXJzOyBJJ20gbm90IHF1aXRlIGNvbnZpbmNlZA0KPiB0aGF0IHRoaXMgaXMgYSBnb29kIG5hbWUs
IGFzIHRoZXJlJ3Mgbm8gdHJ1ZSAiaG90LXBsdWdnaW5nIiBpbnZvbHZlZCBoZXJlLg0KPiBJT1cg
SSBmZWFyIHRoZSBwcmVzZW50IG5hbWUgaXMgbWlzbGVhZGluZy4NCj4gDQo+IEphbg0KDQpNeSBm
aXJzdCBpZGVhIHdhcyAiQ09ORklHX1JVTlRJTUVfQ1BVX0NPTlRST0wiIEkgY2FuIHN3aXRjaCBi
YWNrIHRvIGl0Lg0KDQotLSANCk15a3l0YQ==


From xen-devel-bounces@lists.xenproject.org Wed Apr 08 12:22:36 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 08 Apr 2026 12:22:36 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1275949.1561604 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wARvX-0004c8-Rj; Wed, 08 Apr 2026 12:22:35 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1275949.1561604; Wed, 08 Apr 2026 12:22: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 1wARvX-0004c1-OU; Wed, 08 Apr 2026 12:22:35 +0000
Received: by outflank-mailman (input) for mailman id 1275949;
 Wed, 08 Apr 2026 12:22:34 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <jbeulich@suse.com>) id 1wARvW-0004bv-Hv
 for xen-devel@lists.xenproject.org; Wed, 08 Apr 2026 12:22:34 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wARvV-008ck7-GF
 for xen-devel@lists.xenproject.org; Wed, 08 Apr 2026 14:22:33 +0200
Received: from [10.42.69.10] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <jbeulich@suse.com>)
 id 69d64879-2eae-0a2a0a5409dd-0a2a450ab392-28
 for <xen-devel@lists.xenproject.org>; Wed, 08 Apr 2026 14:22:33 +0200
Received: from [209.85.128.46] (helo=mail-wm1-f46.google.com)
 by tlsNG-4011c0.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.0)
 (envelope-from <jbeulich@suse.com>)
 id 69d64889-ee98-0a2a450a0019-d155802ead89-3
 for <xen-devel@lists.xenproject.org>; Wed, 08 Apr 2026 14:22:33 +0200
Received: by mail-wm1-f46.google.com with SMTP id
 5b1f17b1804b1-488a041eae5so32881585e9.1
 for <xen-devel@lists.xenproject.org>; Wed, 08 Apr 2026 05:22:33 -0700 (PDT)
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-488a952a03asm306545885e9.0.2026.04.08.05.22.32
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Wed, 08 Apr 2026 05:22:32 -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=google header.d=suse.com header.i="@suse.com" header.h="Content-Transfer-Encoding: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=1775650953; x=1776255753; darn=lists.xenproject.org;
        h=content-transfer-encoding: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;
        bh=VKAaggtmontqKYJrxM1/7VOgp7GYQIjiE3kyRKWFHUo=;
        b=IWQO+QGn+b/IPP5ChoSKSodFtg/++sQUfe00LdJe/uErJUf2uNSYJw9PV1K+nSkN2F
         Su+/MARSy+OOuY8IC3pVNq7WMULZTnlIHzApQ+Yz9iyFB9SgLZSmRGQYVxiNxlqp6NzM
         k1GoH1yenIiXy1HpaoOmiZIB1zkM34vKq5EaKPl0aKHJ9udqicWO+xFl4DSvgN+Inwui
         q/SE3BndR1WM7nP6jNEKT4ClxW5ndFq3K50qlTuz98FgvVRXQEAbyPsD9EGZf+MR+Giz
         KWiKsjvEw8NlRFn+Da7ZgCFsLnkzkm4qtfFoUS97x35irM8LIij9QfmjAPwmNz2todY3
         fFtw==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20251104; t=1775650953; x=1776255753;
        h=content-transfer-encoding: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;
        bh=VKAaggtmontqKYJrxM1/7VOgp7GYQIjiE3kyRKWFHUo=;
        b=lo6xk5nQZ84T5l5iCPMNnMlAgRV8Ay83usHOr1HeufD3L4D1F/4xhOEeYDAHoC4AB5
         ANYnhj1jFe3DMiMCXJwbHMcRIXtiFWdjPyHGYG4Bpwx1VpTf4jZU1AYIrIbxvkMJEK1V
         Q6FvpkRN4cKqY+2WyOFwZ8QueCrB+Qw67ADeBDMziI09Z+TD7gVIXTirif5GgIDbBCMa
         8gu/A3I1300vYmCBv7CftBxSZZSOLFQVUVArQ+SiVDqGLDq3+YPIJxNpw9gkoJDVAdi9
         YwlydVMcaIhDJgj0phEqNH3rdVnFXa2FTMWjvIH3xqJzzEVzC6no9pwr2+IpjNtmzFSZ
         gs+Q==
X-Gm-Message-State: AOJu0Yz0cqNQway1JV0pGaIbqIzz152j2dqIS7qL8mU2+T7RruB3bKwm
	00Wn54XcqIQ9d2NRW2ozr7lLGPa9nGHSC4lVpiycaIVlHW/Vf0DJ/gu6SajYmfqMf+RJjvpGihR
	ZI9Lt8w==
X-Gm-Gg: AeBDietWlk9cQqDMZFBXNMwbj3jCDpZA8sewWkQDMV2UdOYyPFSs7eTvi1PCUqnFL+g
	mf12awkGmBGlhiFO/ZDlK3qp46LMgQR2O1Nx0ZqHdMboiGUEq3Eht+liG4lJZpuZtp4d/czu/gT
	+cuLz4IgDMVYOVlVqTuvAnRAAxDujZuR7K9PNSozToOPF7aovLgDPdQC8RJi1BAD1VIvxMUNQ2c
	smIrutaBd78LY9vmEKjycVzZ0L283Z7gXzcGdsa0cprrkPvQSAbHsbWcLUBOx8iPsWemisWNpM/
	CDMXkH1OxBHjNoDdnBODEpLF9byToXKpKdzcS5+8yPAvBlPu5iZ9DeuPsffSajvaLZJCfYJimn9
	J5odBsRqiHNDDkVw1Jy5kKg+8svwsrokJ3Fdr9jTw31FtAkFJ1qDv2nsvGq9CSNUhd34QJMTq/d
	/fKWOlP9nGtrcGJs+vFyoGi5Rvz9Y8NTpYS85V32NnFZgnPHmYOUohBQqb7yfoss+ib9Lt17+3W
	r7+xQ8yw4rE3K0=
X-Received: by 2002:a05:600c:1d1c:b0:488:936a:6220 with SMTP id 5b1f17b1804b1-488997d0012mr278324835e9.21.1775650952724;
        Wed, 08 Apr 2026 05:22:32 -0700 (PDT)
Message-ID: <de873764-c803-4f56-b88a-936cb948c382@suse.com>
Date: Wed, 8 Apr 2026 14:22:31 +0200
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: [PATCH v2 1/3] 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>,
 =?UTF-8?Q?Roger_Pau_Monn=C3=A9?= <roger.pau@citrix.com>,
 Teddy Astie <teddy.astie@vates.tech>
References: <f064c3af-c22a-40e0-a268-ee37e34297a3@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: <f064c3af-c22a-40e0-a268-ee37e34297a3@suse.com>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 7bit
X-purgate-ID: tlsNG-4011c0/1775650953-0F9440B1-E8CC9AC6/0/0
X-purgate-type: clean
X-purgate-size: 6855

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.

Signed-off-by: Jan Beulich <jbeulich@suse.com>
---
For PUSH_AND_CLEAR_GPRS and POP_GPRS, putting the new field right next to
the error code isn't entirely nice; putting it ahead of %r15 would entail
other changes, though. An option may be to not make SSP handling part of
the macros in the first place. Thoughts?

For POP_GPRS, does it really matter that it doesn't alter EFLAGS? Neither
of the two currene uses relies on it, and without that requirement we
could use ADD in place of LEA. (Of course there are also POP-based ways of
getting rid of the SSP slot.)
---
v2: Add comment ahead of SAVE_ALL. Add comma between its parameters.
    Re-base.

--- a/xen/arch/x86/hvm/svm/entry.S
+++ b/xen/arch/x86/hvm/svm/entry.S
@@ -103,7 +103,7 @@ __UNLIKELY_END(nsvm_hap)
 
         vmrun
 
-        SAVE_ALL
+        SAVE_ALL ssp=0
 
         GET_CURRENT(bx)
 
--- a/xen/arch/x86/hvm/vmx/entry.S
+++ b/xen/arch/x86/hvm/vmx/entry.S
@@ -22,7 +22,7 @@
 #include <asm/page.h>
 
 FUNC(vmx_asm_vmexit_handler)
-        SAVE_ALL
+        SAVE_ALL ssp=0
 
         mov  %cr2,%rax
         GET_CURRENT(bx)
@@ -171,7 +171,7 @@ UNLIKELY_END(realmode)
 
 .Lvmx_vmentry_fail:
         sti
-        SAVE_ALL
+        SAVE_ALL ssp=0
 
         /*
          * SPEC_CTRL_ENTRY notes
--- a/xen/arch/x86/include/asm/asm_defns.h
+++ b/xen/arch/x86/include/asm/asm_defns.h
@@ -219,7 +219,11 @@ static always_inline void stac(void)
 #endif
 
 #ifdef __ASSEMBLER__
-.macro SAVE_ALL compat=0
+/*
+ * Use sites may override ssp to 0. It should never be overridden to 1.
+ * NB: compat=1 implies ssp=0.
+ */
+.macro SAVE_ALL compat=0, ssp=IS_ENABLED(CONFIG_XEN_SHSTK)
         addq  $-(UREGS_error_code-UREGS_r15), %rsp
         cld
         movq  %rdi,UREGS_rdi(%rsp)
@@ -233,6 +237,9 @@ static always_inline void stac(void)
         movq  %rax,UREGS_rax(%rsp)
         xor   %eax, %eax
 .if !\compat
+.if \ssp
+        rdsspq %rcx
+.endif
         movq  %r8,UREGS_r8(%rsp)
         movq  %r9,UREGS_r9(%rsp)
         movq  %r10,UREGS_r10(%rsp)
@@ -262,6 +269,9 @@ static always_inline void stac(void)
         xor   %r13d, %r13d
         xor   %r14d, %r14d
         xor   %r15d, %r15d
+#ifdef CONFIG_XEN_SHSTK
+        mov   %rcx, UREGS_entry_ssp(%rsp)
+#endif
 .endm
 
 #define LOAD_ONE_REG(reg, compat) \
@@ -313,9 +323,14 @@ static always_inline void stac(void)
 .endm
 
 /*
- * Push and clear GPRs
+ * Push and clear GPRs.
+ *
+ * Use sites may override ssp to 0. It should never be overridden to 1.
  */
-.macro PUSH_AND_CLEAR_GPRS
+.macro PUSH_AND_CLEAR_GPRS ssp=IS_ENABLED(CONFIG_XEN_SHSTK)
+#ifdef CONFIG_XEN_SHSTK
+        push  $0
+#endif
         push  %rdi
         xor   %edi, %edi
         push  %rsi
@@ -326,6 +341,9 @@ static always_inline void stac(void)
         xor   %ecx, %ecx
         push  %rax
         xor   %eax, %eax
+ .if \ssp
+        rdsspq %rcx
+ .endif
         push  %r8
         xor   %r8d, %r8d
         push  %r9
@@ -352,6 +370,9 @@ static always_inline void stac(void)
         xor   %r14d, %r14d
         push  %r15
         xor   %r15d, %r15d
+ .if \ssp
+        mov   %rcx, UREGS_entry_ssp(%rsp)
+ .endif
 .endm
 
 /*
@@ -373,6 +394,9 @@ static always_inline void stac(void)
         pop   %rdx
         pop   %rsi
         pop   %rdi
+#ifdef CONFIG_XEN_SHSTK
+        lea   8(%rsp), %rsp
+#endif
 .endm
 
 #ifdef CONFIG_PV32
--- a/xen/arch/x86/include/asm/cpu-user-regs.h
+++ b/xen/arch/x86/include/asm/cpu-user-regs.h
@@ -27,6 +27,15 @@ struct cpu_user_regs
     union { uint64_t rsi;    uint32_t esi;    uint16_t si;    uint8_t sil;  };
     union { uint64_t rdi;    uint32_t edi;    uint16_t di;    uint8_t dil;  };
 
+#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 frame.
+     */
+    uint64_t entry_ssp;
+#endif
+
     /*
      * During IDT delivery for exceptions with an error code, hardware pushes
      * to this point.  Entry_vector is filled in by software.
--- a/xen/arch/x86/x86_64/asm-offsets.c
+++ b/xen/arch/x86/x86_64/asm-offsets.c
@@ -53,6 +53,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();
 
--- a/xen/arch/x86/x86_64/entry.S
+++ b/xen/arch/x86/x86_64/entry.S
@@ -275,7 +275,7 @@ FUNC(lstar_enter)
         pushq $0
         BUILD_BUG_ON(TRAP_syscall & 0xff)
         movb  $TRAP_syscall >> 8, EFRAME_entry_vector + 1(%rsp)
-        SAVE_ALL
+        SAVE_ALL ssp=0
 
         GET_STACK_END(14)
 
@@ -315,7 +315,7 @@ FUNC(cstar_enter)
         pushq $0
         BUILD_BUG_ON(TRAP_syscall & 0xff)
         movb  $TRAP_syscall >> 8, EFRAME_entry_vector + 1(%rsp)
-        SAVE_ALL
+        SAVE_ALL ssp=0
 
         GET_STACK_END(14)
 
@@ -359,7 +359,7 @@ LABEL(sysenter_eflags_saved, 0)
         pushq $0
         BUILD_BUG_ON(TRAP_syscall & 0xff)
         movb  $TRAP_syscall >> 8, EFRAME_entry_vector + 1(%rsp)
-        SAVE_ALL
+        SAVE_ALL ssp=0
 
         GET_STACK_END(14)
 
@@ -415,7 +415,7 @@ FUNC(entry_int80)
         ALTERNATIVE "", clac, X86_FEATURE_XEN_SMAP
         pushq $0
         movb  $0x80, EFRAME_entry_vector(%rsp)
-        SAVE_ALL
+        SAVE_ALL ssp=0
 
         GET_STACK_END(14)
 
--- a/xen/arch/x86/x86_64/entry-fred.S
+++ b/xen/arch/x86/x86_64/entry-fred.S
@@ -10,7 +10,7 @@
         /* The Ring3 entry point is required to be 4k aligned. */
 
 FUNC(entry_FRED_R3, 4096)
-        PUSH_AND_CLEAR_GPRS
+        PUSH_AND_CLEAR_GPRS ssp=0
 
         mov     %rsp, %rdi
         call    entry_from_pv
@@ -38,7 +38,7 @@ LABEL(eretu, 0)
 END(eretu_exit_to_guest)
 
 FUNC(eretu_error_dom_crash)
-        PUSH_AND_CLEAR_GPRS
+        PUSH_AND_CLEAR_GPRS ssp=0
         sti
         call    asm_domain_crash_synchronous  /* Does not return */
 END(eretu_error_dom_crash)



From xen-devel-bounces@lists.xenproject.org Wed Apr 08 12:23:15 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 08 Apr 2026 12:23:15 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1275955.1561613 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wARwB-00056b-2w; Wed, 08 Apr 2026 12:23:15 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1275955.1561613; Wed, 08 Apr 2026 12:23: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 1wARwA-00056U-W5; Wed, 08 Apr 2026 12:23:14 +0000
Received: by outflank-mailman (input) for mailman id 1275955;
 Wed, 08 Apr 2026 12:23:13 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <jbeulich@suse.com>) id 1wARw9-00054e-Mc
 for xen-devel@lists.xenproject.org; Wed, 08 Apr 2026 12:23:13 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wARw9-001tBn-2b
 for xen-devel@lists.xenproject.org; Wed, 08 Apr 2026 14:23:13 +0200
Received: from [10.42.69.11] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <jbeulich@suse.com>)
 id 69d648a0-bab6-0a2a0a5309dd-0a2a450bada0-44
 for <xen-devel@lists.xenproject.org>; Wed, 08 Apr 2026 14:23:12 +0200
Received: from [209.85.221.50] (helo=mail-wr1-f50.google.com)
 by tlsNG-42698a.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.0)
 (envelope-from <jbeulich@suse.com>)
 id 69d648b0-bca8-0a2a450b0019-d155dd32c59d-3
 for <xen-devel@lists.xenproject.org>; Wed, 08 Apr 2026 14:23:12 +0200
Received: by mail-wr1-f50.google.com with SMTP id
 ffacd0b85a97d-43d572f7437so124452f8f.1
 for <xen-devel@lists.xenproject.org>; Wed, 08 Apr 2026 05:23:12 -0700 (PDT)
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-43d1e4e56fesm55610941f8f.27.2026.04.08.05.23.11
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Wed, 08 Apr 2026 05:23:12 -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=google header.d=suse.com header.i="@suse.com" header.h="Content-Transfer-Encoding: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=1775650992; x=1776255792; darn=lists.xenproject.org;
        h=content-transfer-encoding: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;
        bh=TZdRtcCtuhtN8vbXovqjZa6WKbRVlKT1bRPS4NdGyTY=;
        b=SBRk7/rBqVmg1JCT8ca5KXzgm2N27AmEZRDYEzNsdb1/KANGWh3R6599aGfc9CFGba
         H9XDMlQEWiRdCDIgwUt+OolHMF98seGjHwmVh5i1Er/M0/OYuKpUy3e+BllqRBzJGaNS
         zt49/cn97JicTBxkh2nz+plwIFDGzZVyOxzE3Zx/UhxjtHG3Va3L4GUc1jAQppi5skkO
         CtgE+NM22t2XXyRqrowd7m7+zYGe3F8f4UVlGWwZIFoy/1x1sF35zlrbGogwj1cjeul2
         Bu3YCgpDCizzAw3dBOZgx2IdcgWFnxgrV9Onkfqb/lWklQ3laqA+ucA8P0YcVmBejYKx
         ODpg==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20251104; t=1775650992; x=1776255792;
        h=content-transfer-encoding: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;
        bh=TZdRtcCtuhtN8vbXovqjZa6WKbRVlKT1bRPS4NdGyTY=;
        b=WmB3UhDl8pn3iJ6TL/SfFWLUgQFmJFXpZDUmQCR59Yuf1g06mcdikpscvrRKHrBpNS
         1shLVD8uxr/OvOLUhrAG9TNj2/4dC5029ztC5eWnk9xnU8xZLGHazGdjBpVgOsSaXhMP
         q+ilhE7PuCYrCAa8iuV4SRZYCFr2kRG6C4FAB6qVRIhTX93BpCxRYyC41/EJhVWnQEN1
         lxzrGpo5b4PBJ6uytKCKLpsGo1/yHGuS3i9gWZRBJ8hvfm+XG2o90OgwphQ25r4R9FK1
         2FZiiJ8zIdeKyZ6H9Z9ghALbRKxyLcVofrc1+OxzRI9b7yYMz9yG8sbjzmazybbmiMkt
         IxrQ==
X-Gm-Message-State: AOJu0YwrIEDBD+STTkse73pTGe/2bxtS0fD0bh5aPfNdCkSiF7/mcbZJ
	6MpBLH5dniwi6t0zrLWvCB/XdEgDc6Nm7dBxFqRQLCdGD659WF89s96S34p9xNka8uwsHPQk43H
	1ahzsdw==
X-Gm-Gg: AeBDiettZSvhE70GklXl98eEZegA3fsptVEpCqnl1e9Eq/hOzuJNieOVTFBCtXSr45n
	2Ck2So7HsHSqWJyghALd0sqkVVU2anwHtMGA6L10QtmGowv/EVbPo0n00xzViNdHYUqu21x2JiI
	QWwYENbXLd0U1oEsH2OJoBRX+mYh6t1ga5oxI41XQ9ZYoURSRCUCqqPdZeqezLzuOP67p8TuKip
	W+Oma1rS+i77XMNuJ/Fjml4rUNnUgTR+DdyzV4Uhp9bttC3vlkFr98oFcs+8VzQsUPypvxPAQPL
	u+8UmJwjYtj7SAJz4WdpmP/oHHXqaA+IrmILjoypqK/E4lPtWdUydDykkX0Q9EKDAqqZh/mSrKK
	rAY+LuNDCfgo7yGMdVZj1Sq+jYwoFCoCY0VUa3nr7zWVr/NJlldoTHvhMrkUP09G6lHccerF7Ko
	gC5A4Eh1JbDM2fNw1v0dhpSoFPzGM91WMgLsTPBLKkqeDcbjeMJsyIIsrDS7g4kGaKXX1zzM9xz
	kI4Bg3JEfvEWaB/sszF/crQ1Q==
X-Received: by 2002:a5d:64e4:0:b0:43b:8fa4:194d with SMTP id ffacd0b85a97d-43d292855famr29512917f8f.6.1775650992265;
        Wed, 08 Apr 2026 05:23:12 -0700 (PDT)
Message-ID: <79c90706-0530-4b72-9b43-f003dfe87291@suse.com>
Date: Wed, 8 Apr 2026 14:23:11 +0200
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: [PATCH v2 2/3] 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>,
 =?UTF-8?Q?Roger_Pau_Monn=C3=A9?= <roger.pau@citrix.com>,
 Teddy Astie <teddy.astie@vates.tech>
References: <f064c3af-c22a-40e0-a268-ee37e34297a3@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: <f064c3af-c22a-40e0-a268-ee37e34297a3@suse.com>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 7bit
X-purgate-ID: tlsNG-42698a/1775650992-EE54B2A1-38389B42/0/0
X-purgate-type: clean
X-purgate-size: 5807

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 pointin 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>
---
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.
---
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,28 @@ 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);
 
-        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 +1208,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 +1228,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 +1237,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 Wed Apr 08 12:23:50 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 08 Apr 2026 12:23:50 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1275962.1561621 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wARwj-0005ZM-AX; Wed, 08 Apr 2026 12:23:49 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1275962.1561621; Wed, 08 Apr 2026 12:23: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 1wARwj-0005ZF-7q; Wed, 08 Apr 2026 12:23:49 +0000
Received: by outflank-mailman (input) for mailman id 1275962;
 Wed, 08 Apr 2026 12:23:48 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <jbeulich@suse.com>) id 1wARwi-0005Z3-5n
 for xen-devel@lists.xenproject.org; Wed, 08 Apr 2026 12:23:48 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wARwf-005bLj-WE
 for xen-devel@lists.xenproject.org; Wed, 08 Apr 2026 14:23:47 +0200
Received: from [10.42.69.3] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <jbeulich@suse.com>)
 id 69d648d1-e002-0a2a0a5209dd-0a2a4503c760-6
 for <xen-devel@lists.xenproject.org>; Wed, 08 Apr 2026 14:23:47 +0200
Received: from [209.85.128.42] (helo=mail-wm1-f42.google.com)
 by tlsNG-33051d.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.0)
 (envelope-from <jbeulich@suse.com>)
 id 69d648d3-02b3-0a2a45030019-d155802ad825-3
 for <xen-devel@lists.xenproject.org>; Wed, 08 Apr 2026 14:23:47 +0200
Received: by mail-wm1-f42.google.com with SMTP id
 5b1f17b1804b1-4887fd35e60so40745305e9.2
 for <xen-devel@lists.xenproject.org>; Wed, 08 Apr 2026 05:23:47 -0700 (PDT)
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-488c5db3676sm25434955e9.5.2026.04.08.05.23.46
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Wed, 08 Apr 2026 05:23:46 -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=google header.d=suse.com header.i="@suse.com" header.h="Content-Transfer-Encoding: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=1775651027; x=1776255827; darn=lists.xenproject.org;
        h=content-transfer-encoding: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;
        bh=kQhxBolergp3DNGfOBRBD3Fsmiz2HJwK7X3GkKtsJpg=;
        b=LOMqIU3HydqSxB4qL/KZS4M4kXRelxEGYWeWD9VPzGKCkOSjpueQOYvZ0nY/yT1Cfm
         29L2NEKYoBwpcZ3Sj4sGzIGzZTlP/wC04+91R6qWXpVLrUAk12w3OMXyQRHRNwQjG+Wa
         CkzTvYOCUiCZuVcvnR2hU7N/ut1uHKISIKCNwIRvH0o/4yR+3Itf64A5j0Cg6lBtsP8o
         MOSnlFRiwn2Pt9du2RaBZOdyptCNi3nLw6siig0/UTMNW83W4XStyVZmUQfaNC30wC/p
         tWL0ZuDKM47iaNAiIhuZgtl6hblHnICAxKd34AdHq/NSihpK9j3h7lSFs1KOAjm0P25+
         KhLg==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20251104; t=1775651027; x=1776255827;
        h=content-transfer-encoding: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;
        bh=kQhxBolergp3DNGfOBRBD3Fsmiz2HJwK7X3GkKtsJpg=;
        b=YDQchz/TxSZnx4Nyt7QbbRnvEV9jc3PBaX18JzSfRqoDMN2br26Q9IDTi/gOSjqpJc
         y6jKSu0iiH9oswefZhdL9bIquLqFq2HDcbgn/g2WNKTZIeje1aOfYbYHCCTRywpmtTLI
         1fZM5Pz49rkA8dNHUUuwkVXqK3AX0WMmc/SDTxEtK1t7e7Tx+bqKIJiPl4mtBI2h0ZWD
         BUmYToX+6I07xJMtVmYqww4QxQ5geo6uxgrVVh1nCUHYwPjJArlByV9ZVphaZmXEmM/F
         sZWfLKi2Jt0KzESY4EpEz7LH+6bcPQtyZ3u1kd609TmKnnJBXOU44vFTBAV9ZE9A/wdf
         X1lw==
X-Gm-Message-State: AOJu0YzfWSk0IW9gyx3qUb0LfQVl57JZSDiE910jhU/HxIjZtGOuMo96
	oz1l/uEi37g/FeGaxwu+iR9HJMngGd5D5vHLPCUVhuNGPrtPXc6tRujebU1Bdks+BakxHCAvqYm
	BQRVWbg==
X-Gm-Gg: AeBDiesOH3gKIZcFyQ9QPs4RZOt/MKKheJMv/k/ZeRMDP4q3/rh7malz6pmzu3fo+Mk
	E+wMFWVEwuPY0QJRtAq8z0kpT6B712rAJugNPxSmZ73JxtXB4pD1KVClbT1zRB9/XHOSLALREEc
	5LA1QURS1t7T4+wSysYa0E6j+oS9LcytSi2SxZmlIIqXokt/rBLjTdcrROG9bJC2MVYt/gBzvJi
	/dzjsIHu5M0epKyvby/LRvJ/ZE0nR6hQw455ldedi1/MQFFbDFTeWIMfjUdZlR+Fh6YL8wDqltz
	jVrJVvGpxExi/tpEJlMtU76rw5b9238g9Ye20YUo/SQ+F03Ejn9O+7aPWx//kIldsgxJQkF562n
	HWexbsdhISooa5N4TM0Vl+OMHtxkSkmv9jtyG8xA+3UxXHeVxvdSJllWrpBtZs0xyZvXxl/2p5d
	P/7/klBXdyZ8GRObYEE+J53Lagmhab4RrYYj45D4Oxkal6ikQLz2Hv/qcs/a6Az/PfFFlliNLjS
	Sm+wnTfWWhNOmo=
X-Received: by 2002:a05:600c:a409:b0:488:c085:22ad with SMTP id 5b1f17b1804b1-488c08523afmr71259885e9.29.1775651026784;
        Wed, 08 Apr 2026 05:23:46 -0700 (PDT)
Message-ID: <4bcc73db-38da-446e-b277-cf94c49002a1@suse.com>
Date: Wed, 8 Apr 2026 14:23:45 +0200
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: [PATCH v2 3/3] 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>,
 =?UTF-8?Q?Roger_Pau_Monn=C3=A9?= <roger.pau@citrix.com>,
 Teddy Astie <teddy.astie@vates.tech>
References: <f064c3af-c22a-40e0-a268-ee37e34297a3@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: <f064c3af-c22a-40e0-a268-ee37e34297a3@suse.com>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 7bit
X-purgate-ID: tlsNG-33051d/1775651027-43301C9A-490F1BA4/0/0
X-purgate-type: clean
X-purgate-size: 3337

Shadow stacks contain little more than return addresses, and they in
particular allow precise call traces also without FRAME_POINTER.

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.

Perhaps having a printk() for the PV entry case is meaningless, for
- no frame being pushed when entered from CPL=3 (64-bit PV),
- no entry possible from CPL<3 (32-bit PV disabled when CET is active)?
In which case the comment probably should just be "Bogus." and the code
merely be "break;".

Quite likely a number of other uses of is_active_kernel_text() also want
amending with in_stub().
---
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,52 @@ 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 ^ *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
+            {
+                /* Ought to be a PV guest hypercall/interruption frame.  */
+                printk("   %04lx:[<%p>] E\n", ptr[2], _p(ptr[1]));
+                ptr = 0;
+            }
+        }
+
+        /* 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 Wed Apr 08 12:27:45 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 08 Apr 2026 12:27:45 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1275979.1561631 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wAS0R-0006RW-UG; Wed, 08 Apr 2026 12:27:39 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1275979.1561631; Wed, 08 Apr 2026 12: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 1wAS0R-0006RP-QM; Wed, 08 Apr 2026 12:27:39 +0000
Received: by outflank-mailman (input) for mailman id 1275979;
 Wed, 08 Apr 2026 12:27:38 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <jbeulich@suse.com>) id 1wAS0Q-0006P0-7h
 for xen-devel@lists.xenproject.org; Wed, 08 Apr 2026 12:27:38 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wAS0P-005uX6-Fw
 for xen-devel@lists.xenproject.org; Wed, 08 Apr 2026 14:27:37 +0200
Received: from [10.42.69.4] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <jbeulich@suse.com>)
 id 69d649ac-2eae-0a2a0a5409dd-0a2a45049042-18
 for <xen-devel@lists.xenproject.org>; Wed, 08 Apr 2026 14:27:37 +0200
Received: from [209.85.128.53] (helo=mail-wm1-f53.google.com)
 by tlsNG-ebf023.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.0)
 (envelope-from <jbeulich@suse.com>)
 id 69d649b9-bb33-0a2a45040019-d1558035e112-3
 for <xen-devel@lists.xenproject.org>; Wed, 08 Apr 2026 14:27:37 +0200
Received: by mail-wm1-f53.google.com with SMTP id
 5b1f17b1804b1-488a8ca4aadso42082445e9.3
 for <xen-devel@lists.xenproject.org>; Wed, 08 Apr 2026 05:27:37 -0700 (PDT)
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-488c5dc5fefsm24317405e9.7.2026.04.08.05.27.36
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Wed, 08 Apr 2026 05:27: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=google header.d=suse.com header.i="@suse.com" header.h="Content-Transfer-Encoding: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=1775651257; x=1776256057; darn=lists.xenproject.org;
        h=content-transfer-encoding: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;
        bh=767zxZHIRCtWhGXH/ZDZCM7Lq38tBtrWOZdavbv1gw0=;
        b=Vo3kbHgQX/KE88juydFadGchoiI1lpe2upOIlBfOWv0z/u1f990toxsoSz4KaKUJ3V
         cuykDQnXA6MSdOPeL+WJRWtXDwpmGMW7nQlwvfCoysKSTZ4Rv/922wR3XXs91klDdQI7
         dQJKuhLfc9+0+KIWJopY3umcnlgqghMXjIUyvbJNd423nOihdn2zO9VQhov1T5u8gkyg
         zN5PxhGsPqgOUX+5OWDhc5vOXOGE1kB0rXvST00aVlMItr8jFCPRKS0e3k3naG4FUQqP
         H/5jVMcEqR20shxQPWn/zZF6nKt58zBvmKo0sJ3P+eR6eSFVNtYiGMhYBp9Hh9whZyqJ
         FYow==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20251104; t=1775651257; x=1776256057;
        h=content-transfer-encoding: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;
        bh=767zxZHIRCtWhGXH/ZDZCM7Lq38tBtrWOZdavbv1gw0=;
        b=OGVPXA33iCL5wXgDokkPyHyTtPURZFlQMzamgR+6Rqygo+Dx1OyflPQfYAxr/RBwAR
         mbaTlbJgYVcVKcQMn3ZK8gsGlMADZFt15blnyxefDiJxVLOwPKXHp248iyTmrcPT7LHV
         izfiCKJmk8K9wLgdbI0lmAkL0liPUhBoOJU1bVnwpUM7RC7ZUTe5LJiyHeGhg6vaidJt
         D3fuM6Jz1pjPk1JnMs4bFGF2sGYaho3lKISGbSdLcP3hCSiU822CfH12j5QdcxeOZSzw
         SjmGoGmuTrM60fZsQjEFQM3ZldTIXUhgANVB6dho7l3GcaGVJZtGt49UfVPkACSFJ99c
         pyyg==
X-Forwarded-Encrypted: i=1; AJvYcCVeoNJfuhQtp90XZUvAfZeAXWPhtaf/x2OmQv+88X4DiM6GYw/KNpEMFeugHKJwnNBlQULuoeZYZMw=@lists.xenproject.org
X-Gm-Message-State: AOJu0YzyNmnc7lVwJeCfZtsOa06MFRHQTw3+A+t3vNEeMioVrozTtL0S
	l44wWdeQDmvv7b57eR8yXU7p5JAJcJ+3aJ/7CxUXUIqEgYFGTL/lv1gi7MYte58KVA==
X-Gm-Gg: AeBDieu5lVN0sfjdg1JwftNfyVN7Cw3NeqNizkSDIK/EDG01qbuw9HIHc5CSxqGkNQD
	AfrZV8n68c8bjproNRpIYCeMqP9Ek+ZIS/jpyuIy/XDsDCrzRjciCylf9puCpS686CLsSj5kRKV
	M62MOTJc8K1uvF0Jm+1M6PlDcdLDce2k0DWAOHA4N6E4Cb8lST1Uu83JMMhws1sJ5rBcKaadq7M
	yENrfUf2uGbq2iK423J/k6dv/fO6zyOlCpxFVKlhrFvOzfY5ot6EyxqVO3zsrOg58eXWHk8WSLv
	eoTEhkDHPOz3ZSonIN2iT1+70QqQ+uvZxy/vZ7ixn/S79eVgNR9w354actk5T69AsPTp5ftOg/Q
	jCJ9B+ICXelTS4DxlMx5Ix2izSw6JiQ/kwG1q/Qhy8PZvK0LzmvMc+vpuM9UzV7g+jVzIe6+7bx
	9yqmOYFhesZykCv70Cn8R2YPJJbruSlR7bEz8cI3dpTpAmDdy86UH3Kob1m2hLaZdJVIvWKmsn1
	mCN5+N+tW6ISOw=
X-Received: by 2002:a05:600c:1381:b0:487:1108:48af with SMTP id 5b1f17b1804b1-488996a351bmr295447375e9.4.1775651256821;
        Wed, 08 Apr 2026 05:27:36 -0700 (PDT)
Message-ID: <3bd1b2a8-475d-411a-bbe0-61b251079558@suse.com>
Date: Wed, 8 Apr 2026 14:27:35 +0200
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH v7 3/6] Kconfig: Make cpu hotplug configurable
To: Mykyta Poturai <Mykyta_Poturai@epam.com>
Cc: Andrew Cooper <andrew.cooper3@citrix.com>,
 =?UTF-8?Q?Roger_Pau_Monn=C3=A9?= <roger.pau@citrix.com>,
 Anthony PERARD <anthony.perard@vates.tech>,
 Michal Orzel <michal.orzel@amd.com>, Julien Grall <julien@xen.org>,
 Stefano Stabellini <sstabellini@kernel.org>,
 "xen-devel@lists.xenproject.org" <xen-devel@lists.xenproject.org>
References: <cover.1774871881.git.mykyta_poturai@epam.com>
 <f3c523ef5b94e930902016d69b440032c9e6c3bd.1774871881.git.mykyta_poturai@epam.com>
 <e37330f7-96ca-41a9-81b1-14d7f3947dd6@suse.com>
 <00a42bdd-8d9b-4828-b789-8d6163c0314c@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: <00a42bdd-8d9b-4828-b789-8d6163c0314c@epam.com>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 7bit
X-purgate-ID: tlsNG-ebf023/1775651257-3132C51B-8C895C61/0/0
X-purgate-type: clean
X-purgate-size: 1999

On 08.04.2026 14:21, Mykyta Poturai wrote:
> On 3/30/26 15:19, Jan Beulich wrote:
>> On 30.03.2026 13:59, Mykyta Poturai wrote:
>>> 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>
>>
>> Looks largely okay from a technical pov; one nit and one (repeated) remark
>> below.
>>
>>> --- a/xen/arch/x86/sysctl.c
>>> +++ b/xen/arch/x86/sysctl.c
>>> @@ -53,6 +53,11 @@ static long cf_check smt_up_down_helper(void *data)
>>>       unsigned int cpu, sibling_mask = boot_cpu_data.x86_num_siblings - 1;
>>>       int ret = 0;
>>>   
>>> +    if ( !IS_ENABLED(CONFIG_CPU_HOTPLUG) )
>>> +    {
>>> +        ASSERT_UNREACHABLE();
>>> +        return -EOPNOTSUPP;
>>> +    }
>>>       opt_smt = up;
>>
>> Another blank line above this one perhaps?
>>
>>> --- a/xen/common/Kconfig
>>> +++ b/xen/common/Kconfig
>>> @@ -637,6 +637,14 @@ config SYSTEM_SUSPEND
>>>   
>>>   	  If unsure, say N.
>>>   
>>> +config CPU_HOTPLUG
>>> +	bool "CPU online/offline support"
>>> +	depends on X86
>>> +	default y
>>> +	help
>>> +	  Enable support for bringing CPUs online and offline at runtime. On
>>> +	  X86 this is required for disabling SMT.
>>
>> The name of this option may need input from others; I'm not quite convinced
>> that this is a good name, as there's no true "hot-plugging" involved here.
>> IOW I fear the present name is misleading.
> 
> My first idea was "CONFIG_RUNTIME_CPU_CONTROL" I can switch back to it.

I could live with that, for at least not being misleading. CPU_ONLINE or
CPU_ONLINE_OFFLINE might be another option, possibly better suited to
later become a dependency (select) of a true CPU_HOTPLUG. As said, input
from others may be helpful.

Jan


From xen-devel-bounces@lists.xenproject.org Wed Apr 08 12:35:00 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 08 Apr 2026 12:35:00 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1275992.1561640 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wAS7S-0008I4-Jm; Wed, 08 Apr 2026 12:34:54 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1275992.1561640; Wed, 08 Apr 2026 12:34: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 1wAS7S-0008Hw-Gd; Wed, 08 Apr 2026 12:34:54 +0000
Received: by outflank-mailman (input) for mailman id 1275992;
 Wed, 08 Apr 2026 12:34:54 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <jbeulich@suse.com>) id 1wAS7R-0008Hq-Tp
 for xen-devel@lists.xenproject.org; Wed, 08 Apr 2026 12:34:54 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wAS7Q-008eTB-RK
 for xen-devel@lists.xenproject.org; Wed, 08 Apr 2026 14:34:52 +0200
Received: from [10.42.69.9] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <jbeulich@suse.com>)
 id 69d64b5d-bab6-0a2a0a5309dd-0a2a4509a234-40
 for <xen-devel@lists.xenproject.org>; Wed, 08 Apr 2026 14:34:52 +0200
Received: from [209.85.128.49] (helo=mail-wm1-f49.google.com)
 by tlsNG-bad1c0.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.0)
 (envelope-from <jbeulich@suse.com>)
 id 69d64b6c-bf79-0a2a45090019-d1558031edb8-3
 for <xen-devel@lists.xenproject.org>; Wed, 08 Apr 2026 14:34:52 +0200
Received: by mail-wm1-f49.google.com with SMTP id
 5b1f17b1804b1-488afb0427eso36378955e9.1
 for <xen-devel@lists.xenproject.org>; Wed, 08 Apr 2026 05:34:52 -0700 (PDT)
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-4887e80a63esm822552095e9.3.2026.04.08.05.34.51
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Wed, 08 Apr 2026 05:34:51 -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=google header.d=suse.com header.i="@suse.com" header.h="Content-Transfer-Encoding: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=1775651692; x=1776256492; darn=lists.xenproject.org;
        h=content-transfer-encoding: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;
        bh=NEezGgfFw/VX5nvvqf1R4nIVKN7YvXPBoYZPwxQfE+g=;
        b=c0tJhkMOZ12d/ddfx+h0qRb7p821quBinVbVY1FDofu8LpsYJmIQzs1ovLUOPzvob2
         i1Quv55JYKT/KOzZ4ukX15Tl9007NkwYNJ5e0ArSjssO4hZ57+SCkXuAKFK1qeSUhfpC
         PmfXLQfnZZRqo/LyHlRG6wnR3tpUW2ca8be/ouXbJZ8ukKucKqqMZLONJWEK8PPEs83l
         dDRYlmvNJX7UpvCZVgyMJW2uRBIVMBXQnzThx8ov4uD9AGSsMegxooN4Rk9NWkCXv6V8
         S4nN8zwiOTfjs/Nr1r4Zio0jvpw6Vcm/0qpKbZRdV0n2OWDonGqn2UJeRp3o6w06seo/
         tU4w==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20251104; t=1775651692; x=1776256492;
        h=content-transfer-encoding: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;
        bh=NEezGgfFw/VX5nvvqf1R4nIVKN7YvXPBoYZPwxQfE+g=;
        b=A/Ad7ri4+OaY1y/woDZWOhmKIv+0S+k94lGgLqQc6fKfRG4GCM0fxi5NFTKUPvK60k
         gvB0aaWGhP6sZMR2ENfLCKHMEYzxy+PLX8dg+1Xe2DeXmixtIM5rOlJ2tRka0q3FMY4O
         fX7Oy731g+zqbCMS3f0yFWuczeDsCK/CFInXDDFezpNyO0m3V6xnzyLQ9RfqgeMDtDEJ
         1ERBKMDb1Hu8Hl3WG5q92AtAXbdpggxBaWZOuEP1ga7DmKR4ENogyhVH9pfk2yCAzTRm
         XwIjlq8aqRjbTc0A+AW7UkncfOzSXeYQPlCSbv4WFmdoqTxzrFCu2p35SIp0U//SIjab
         je8A==
X-Forwarded-Encrypted: i=1; AJvYcCUAcgsWp5nA9hOqIRYtX/IdiKEeHdgSPA084pufUB6U+NiZ3swvk6MVfyleLAptG2nQz82nE+2AWEU=@lists.xenproject.org
X-Gm-Message-State: AOJu0YymPFK2X22cNKWmSxrBa6/aM8kALaJr5OkVjpGftv1zpTC72wZI
	7TXOqFcgPmP/kyBB/WChpqywdOK80kuz2B4ulyDOeBSz/rsLLQUKJP+g12bf4wG+SA==
X-Gm-Gg: AeBDiet11qbdv42gXDhzXoAulaLwZSplqlzQtvOuzKgTr6lItwKjgxSog7JMVhESczN
	u8erqYKThQnsHVr0KSgdU1gQPV73C35keXQUxaqCaXMT9xugflRTqosirXBBnAQTTWLDJtuhULL
	KWvsvl1NmW//tqefpoSdyVFJFWlqI9fRDNwJyNR0rzsHnzyfaIqVTKlqDqhCoSYP5Lkj7CvwPHh
	M7mLr//JFe+1hUUtUL2y4r+uIZRN005KvB4Poj8OsIG9N4g3Ka4vF57QM2bjny7rpNwdxzdYPHH
	jtaZjJzYqBpq0uYRL0ypgib4BhBKh9D96kCtQY95gHjWoy4oxqFLlf00EcLawWZzrK3wsA9DzwY
	+vJbIyXdZbCwqnk6NsAhu9lzdIWVzFOreh+2W9rymUAb7NQ3nwrhJF3ej2QxdWdeyrcxlIiJQEp
	LLfcnMjQ+tVGGEoSjX5SxcYPdN7S3p9VGJ9DKbi6kRE6TCfsr5vmewcAtHtTtf303y9+csyrFIr
	KjoNcE4LJohBS4=
X-Received: by 2002:a05:600c:4689:b0:488:be21:54ae with SMTP id 5b1f17b1804b1-488be21569bmr98992405e9.0.1775651692055;
        Wed, 08 Apr 2026 05:34:52 -0700 (PDT)
Message-ID: <a9b21308-18f6-41ab-9ba6-1c2874cee86b@suse.com>
Date: Wed, 8 Apr 2026 14:34:50 +0200
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH v10] xenpm: Add get-core-temp subcommand
To: Teddy Astie <teddy.astie@vates.tech>
Cc: Oleksii Kurochko <oleksii.kurochko@gmail.com>,
 Community Manager <community.manager@xenproject.org>,
 Anthony PERARD <anthony.perard@vates.tech>, xen-devel@lists.xenproject.org
References: <22bcde2914c0303b2c594485542af19d2952e782.1775570823.git.teddy.astie@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: <22bcde2914c0303b2c594485542af19d2952e782.1775570823.git.teddy.astie@vates.tech>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
X-purgate-ID: tlsNG-bad1c0/1775651692-2F34C152-F5F2749C/0/0
X-purgate-type: clean
X-purgate-size: 3605

On 07.04.2026 16:10, Teddy Astie wrote:
> --- a/CHANGELOG.md
> +++ b/CHANGELOG.md
> @@ -16,6 +16,8 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/)
>       mitigate (by rate-limiting) the system wide impact of an HVM guest
>       misusing atomic instructions.
>     - Support for CPIO microcode in discrete multiboot modules.
> +   - Introduce get-core-temp to xenpm to query CPU temperatures on Intel
> +     platforms.

Would you mind inserting "command" or "option" before "to xenpm"?

> @@ -1354,6 +1358,121 @@ void enable_turbo_mode(int argc, char *argv[])
>                  errno, strerror(errno));
>  }
>  
> +static int fetch_dts_temp(xc_interface *xch, uint32_t cpu, bool package, int *temp)
> +{
> +    xc_resource_entry_t entries[] = {
> +        { .idx = package ? MSR_PACKAGE_THERM_STATUS : MSR_IA32_THERM_STATUS },
> +        { .idx = MSR_TEMPERATURE_TARGET },
> +    };
> +    struct xc_resource_op ops = {
> +        .cpu = cpu,
> +        .entries = entries,
> +        .nr_entries = ARRAY_SIZE(entries),
> +    };
> +    int tjmax;
> +
> +    int ret = xc_resource_op(xch, 1, &ops);
> +
> +    switch ( ret )
> +    {
> +    case 0:
> +        /* This CPU isn't online or can't query this MSR */
> +        errno = ENODATA;
> +        return -1;
> +
> +    case 1:
> +    {
> +        /*
> +         * The CPU doesn't support MSR_TEMPERATURE_TARGET, we assume it's 100
> +         * which is correct aside a few selected Atom CPUs. Check Linux
> +         * kernel's coretemp.c for more information.
> +         */
> +        static bool has_reported_once = false;
> +
> +        if ( !has_reported_once )
> +        {
> +            fprintf(stderr, "MSR_TEMPERATURE_TARGET is not supported, assume "
> +                            "tjmax = 100, readings may be incorrect.\n");
> +            has_reported_once = true;
> +        }
> +
> +        tjmax = 100;
> +        break;
> +    }
> +
> +    case 2:
> +        tjmax = (entries[1].val >> 16) & 0xff;
> +        break;
> +
> +    default:
> +        if ( ret > 0 )
> +        {
> +            fprintf(stderr, "Got unexpected xc_resource_op return value: %d", ret);
> +            errno = EINVAL;
> +        }
> +        return -1;
> +    }
> +
> +    *temp = tjmax - ((entries[0].val >> 16) & 0xff);
> +    return 0;
> +}
> +
> +static void get_core_temp(int argc, char *argv[])
> +{
> +    int temp = -1, cpu = -1;

cpu's initializer is needed, but why would temp need one? You rely on ...

> +    unsigned int socket;
> +    bool has_data = false;
> +
> +    if ( argc > 0 )
> +        parse_cpuid(argv[0], &cpu);
> +
> +    if ( cpu != -1 )
> +    {
> +        if ( fetch_dts_temp(xc_handle, cpu, false, &temp) )
> +        {
> +            fprintf(stderr, "Unable to fetch temperature (%d - %s)\n",
> +                    errno, strerror(errno));
> +            exit(EXIT_FAILURE);
> +        }
> +        else
> +            printf("CPU%d: %d°C\n", cpu, temp);
> +        return;
> +    }
> +
> +    /* Per socket measurement */
> +    for ( socket = 0, cpu = 0; cpu < max_cpu_nr;
> +          socket++, cpu += physinfo.cores_per_socket * physinfo.threads_per_core )
> +    {
> +        if ( fetch_dts_temp(xc_handle, cpu, true, &temp) )

... fetch_dts_temp() to always update it in the success case anyway, both here and
in the other loop further down.

Other than this (happy to adjust while committing, provided you agree):
Reviewed-by: Jan Beulich <jbeulich@suse.com>

Jan


From xen-devel-bounces@lists.xenproject.org Wed Apr 08 12:56:00 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 08 Apr 2026 12:56:00 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1276006.1561649 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wASRe-0003FE-6J; Wed, 08 Apr 2026 12:55:46 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1276006.1561649; Wed, 08 Apr 2026 12:55: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 1wASRe-0003F7-3W; Wed, 08 Apr 2026 12:55:46 +0000
Received: by outflank-mailman (input) for mailman id 1276006;
 Wed, 08 Apr 2026 12:55:45 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <freddy77@gmail.com>) id 1wASRd-0003Et-2V
 for xen-devel@lists.xenproject.org; Wed, 08 Apr 2026 12:55:45 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wASRa-007rbZ-TL
 for xen-devel@lists.xenproject.org; Wed, 08 Apr 2026 14:55:42 +0200
Received: from [10.42.69.12] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <freddy77@gmail.com>)
 id 69d65044-5cb7-0a2a0a5109dd-0a2a450c9820-18
 for <xen-devel@lists.xenproject.org>; Wed, 08 Apr 2026 14:55:42 +0200
Received: from [209.85.128.50] (helo=mail-wm1-f50.google.com)
 by tlsNG-d25034.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.0)
 (envelope-from <freddy77@gmail.com>)
 id 69d6504e-f40c-0a2a450c0019-d1558032b12d-3
 for <xen-devel@lists.xenproject.org>; Wed, 08 Apr 2026 14:55:42 +0200
Received: by mail-wm1-f50.google.com with SMTP id
 5b1f17b1804b1-4888375f735so58779715e9.3
 for <xen-devel@lists.xenproject.org>; Wed, 08 Apr 2026 05:55:42 -0700 (PDT)
Received: from localhost.localdomain (5.116.208.46.dyn.plus.net.
 [46.208.116.5]) by smtp.gmail.com with ESMTPSA id
 5b1f17b1804b1-488c5dd63d6sm18454195e9.34.2026.04.08.05.55.41
 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
 Wed, 08 Apr 2026 05:55:41 -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=20251104 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=20251104; t=1775652942; x=1776257742; 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;
        bh=QkqBrdaNrBJCy0crOvcxBRylV9zvc66c7xFOX+Za0sU=;
        b=NO+jrD6k7TzPeOjkfyHN5tEkgy9B323se6GKpXqhl3dL0wChl2hUvDXg3QK9oT1XhO
         0VlMLm1sd6u5Am9K958ux41cx6w1n+3tHj/igGMGLByFXHt2feCds/PSZpAqL4f+/dLn
         PVKo7aCc9vqhGjNHWZlnqpKgexYgtoPLTo6xRWO2euQ405WapxQi9VOOmv8tWaqgfPmI
         BHVJGjFWsoKOY/BaYzlql3lVMblbf7rbRyfhgu3W8nlCrfWQOLXFTMgn2GyI34ElVC8o
         jkGPqmqwpr80TkBEJzy//YmyANYLzeP3VVvZ856tCWgNC3opAPP4fhSXJZHjIWjQ2dTJ
         XuzA==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20251104; t=1775652942; x=1776257742;
        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;
        bh=QkqBrdaNrBJCy0crOvcxBRylV9zvc66c7xFOX+Za0sU=;
        b=sq732y/KapxgOBbe+vEWxcbsWtpPwoSr8klMkwwSiDQWrP5R5sWMRSEJl1Xkhtcczm
         JXF3wGsErZ3zC+557LbLa8pdaZlIiscSxVfoMklMza+9dfctjgCaI9PkAdWEIK5JK3/T
         ODpxmR3JwUMjx8JUGwygz+A11yB8pdL9ze6ZDsK2rmxS1up9FQFxPZk5R0LwTevkuEFu
         ZOeA+FygnHSkLwWv6nnBtP4H3fkaPiYMyMWBepAdStfkTRcp/Lo2jBPJbmSEVvHSRNYQ
         003fwcApvYs+A9rzU3t5gJ++/hsn4vIuyIIXxZ9bdTtidXi1krVwRFrECbCbGHpR493p
         Gp+w==
X-Gm-Message-State: AOJu0YxZhY0+Yy22f09v1jGFufNd9DbM0weSw3lsH+CxyGb6jxpIBOlW
	tOqhnNZlqrRTzT/3RzmWwCF4cxpcuUjHgNsk6RHUQio4mFCLsEbsQ/FAYcGPhw==
X-Gm-Gg: AeBDiet4gbT6sizMcd83Cb2Etu/Z6I0vuA335poYwaHwrrZRDxySSgJYqwGt89SIoiL
	9hzCobTrCCnopRxgOJNqJyvv3LuBgvMTF3tkTy+q71AtIEfJKacZ0tucB/iErHMYYfnhpFMFyf6
	8h787cDlq1alQuc6lcwHxKMiogbZ1uh1jZht2E/wqJs6Qdk20GLbpTEFNZ+pdg/3O4IaAGD1P/M
	yiGULcr/KJi3yGWPyCNwgCnZ5iA4PAELOVb/6s01PLyAx8AkUCUcIeqfktCjx9HnKXRNbAlniWW
	pfLCb2jmoNCbo1J7A3qMpROvPAVQKsZN51LkRfniprUEpAqCqp9OEibVpaFGrJLzvwZutPJXCh1
	DAr/m8MygLEBfywb+JSaO7mJqFttqc8DjOR7LavuDcsGA162JjK43EBcumV3Qi80Vk+PvN6fRCy
	QQWPcNBifEiZcJeGplmDhM/6SdGv6HEz6lRwJ7jsN90GRWy/vbszLw2eCMEvZRXBiolQ==
X-Received: by 2002:a05:600c:1c21:b0:488:b87b:3052 with SMTP id 5b1f17b1804b1-488b87b3508mr123638805e9.29.1775652941866;
        Wed, 08 Apr 2026 05:55:41 -0700 (PDT)
From: Frediano Ziglio <freddy77@gmail.com>
X-Google-Original-From: Frediano Ziglio <frediano.ziglio@cloud.com>
To: xen-devel@lists.xenproject.org
Cc: Frediano Ziglio <frediano.ziglio@cloud.com>,
	Jan Beulich <jbeulich@suse.com>,
	Andrew Cooper <andrew.cooper3@citrix.com>,
	=?UTF-8?q?Roger=20Pau=20Monn=C3=A9?= <roger.pau@citrix.com>
Subject: [PATCH v3] xen/x86: Check supported features even for PVH dom0
Date: Wed,  8 Apr 2026 13:55:14 +0100
Message-ID: <20260408125521.104660-1-frediano.ziglio@cloud.com>
X-Mailer: git-send-email 2.43.0
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit
X-purgate-ID: tlsNG-d25034/1775652942-FD358A3D-04C6BDE1/0/0
X-purgate-type: clean
X-purgate-size: 3569

The supported features ELF notes was tested only if the dom0 was
PV. Factor out a function to check ELF notes and reuse it even
for PVH.

Signed-off-by: Frediano Ziglio <frediano.ziglio@cloud.com>
--
Changes since v1:
- fix typo in title;
- fix minor formatting issue;
- use is_hardware_domain instead of checking is_pv_shim;
- reduce indentation returning earlier;
- return error instead of jumping to cleanup code.

Changes since v2:
- rename dom0_check_parms to initdom_check_parms;
- move call to initdom_check_parms in PVH code earlier;
- make "struct domain" constant.
---
 xen/arch/x86/dom0_build.c             | 14 ++++++++++++++
 xen/arch/x86/hvm/dom0_build.c         |  3 +++
 xen/arch/x86/include/asm/dom0_build.h |  2 ++
 xen/arch/x86/pv/dom0_build.c          | 10 ++--------
 4 files changed, 21 insertions(+), 8 deletions(-)

diff --git a/xen/arch/x86/dom0_build.c b/xen/arch/x86/dom0_build.c
index 864dd9e53e..56eba8f59a 100644
--- a/xen/arch/x86/dom0_build.c
+++ b/xen/arch/x86/dom0_build.c
@@ -320,6 +320,20 @@ unsigned long __init dom0_paging_pages(const struct domain *d,
     return DIV_ROUND_UP(memkb, 1024) << (20 - PAGE_SHIFT);
 }
 
+int __init initdom_check_parms(
+    const struct domain *d, const struct elf_dom_parms *parms)
+{
+    if ( parms->elf_notes[XEN_ELFNOTE_SUPPORTED_FEATURES].type == XEN_ENT_NONE )
+        return 0;
+
+    if ( is_hardware_domain(d) && !test_bit(XENFEAT_dom0, parms->f_supported) )
+    {
+        printk("Kernel does not support Dom0 operation\n");
+        return -EINVAL;
+    }
+
+    return 0;
+}
 
 /*
  * If allocation isn't specified, reserve 1/16th of available memory for
diff --git a/xen/arch/x86/hvm/dom0_build.c b/xen/arch/x86/hvm/dom0_build.c
index d69a83b089..aa06cdb2f7 100644
--- a/xen/arch/x86/hvm/dom0_build.c
+++ b/xen/arch/x86/hvm/dom0_build.c
@@ -692,6 +692,9 @@ static int __init pvh_load_kernel(
         return -EINVAL;
     }
 
+    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;
diff --git a/xen/arch/x86/include/asm/dom0_build.h b/xen/arch/x86/include/asm/dom0_build.h
index ff021c24af..1332f18cc6 100644
--- a/xen/arch/x86/include/asm/dom0_build.h
+++ b/xen/arch/x86/include/asm/dom0_build.h
@@ -8,6 +8,8 @@
 
 extern unsigned int dom0_memflags;
 
+int initdom_check_parms(const struct domain *d,
+                        const struct elf_dom_parms *parms);
 unsigned long dom0_compute_nr_pages(struct domain *d,
                                     struct elf_dom_parms *parms,
                                     unsigned long initrd_len);
diff --git a/xen/arch/x86/pv/dom0_build.c b/xen/arch/x86/pv/dom0_build.c
index 075a3646c2..12d8ba744a 100644
--- a/xen/arch/x86/pv/dom0_build.c
+++ b/xen/arch/x86/pv/dom0_build.c
@@ -494,14 +494,8 @@ static int __init dom0_construct(const struct boot_domain *bd)
         return -EINVAL;
     }
 
-    if ( parms.elf_notes[XEN_ELFNOTE_SUPPORTED_FEATURES].type != XEN_ENT_NONE )
-    {
-        if ( !pv_shim && !test_bit(XENFEAT_dom0, parms.f_supported) )
-        {
-            printk("Kernel does not support Dom0 operation\n");
-            return -EINVAL;
-        }
-    }
+    if ( (rc = initdom_check_parms(d, &parms)) != 0 )
+        return rc;
 
     nr_pages = dom0_compute_nr_pages(d, &parms, initrd_len);
 
-- 
2.43.0



From xen-devel-bounces@lists.xenproject.org Wed Apr 08 13:06:13 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 08 Apr 2026 13:06:13 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1276054.1561673 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wASbg-0006AL-Dg; Wed, 08 Apr 2026 13:06:08 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1276054.1561673; Wed, 08 Apr 2026 13:06: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 1wASbg-0006AE-AZ; Wed, 08 Apr 2026 13:06:08 +0000
Received: by outflank-mailman (input) for mailman id 1276054;
 Wed, 08 Apr 2026 13:06:06 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <jbeulich@suse.com>) id 1wASbe-0006A8-Jj
 for xen-devel@lists.xenproject.org; Wed, 08 Apr 2026 13:06:06 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wASbd-0022Ft-L4
 for xen-devel@lists.xenproject.org; Wed, 08 Apr 2026 15:06:05 +0200
Received: from [10.42.69.8] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <jbeulich@suse.com>)
 id 69d652b4-2eae-0a2a0a5409dd-0a2a45089810-40
 for <xen-devel@lists.xenproject.org>; Wed, 08 Apr 2026 15:06:05 +0200
Received: from [209.85.128.53] (helo=mail-wm1-f53.google.com)
 by tlsNG-c1860d.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.0)
 (envelope-from <jbeulich@suse.com>)
 id 69d652bc-fab6-0a2a45080019-d1558035e9db-3
 for <xen-devel@lists.xenproject.org>; Wed, 08 Apr 2026 15:06:05 +0200
Received: by mail-wm1-f53.google.com with SMTP id
 5b1f17b1804b1-488a29e6110so43851465e9.3
 for <xen-devel@lists.xenproject.org>; Wed, 08 Apr 2026 06:06:05 -0700 (PDT)
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-488a3d6944bsm354821005e9.11.2026.04.08.06.06.03
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Wed, 08 Apr 2026 06:06:03 -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=google header.d=suse.com header.i="@suse.com" header.h="Content-Transfer-Encoding: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=1775653564; x=1776258364; darn=lists.xenproject.org;
        h=content-transfer-encoding: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;
        bh=OnD147fsXayD4z4+xk5Eo9TO2Q3YPYXOTJ17GarW4qE=;
        b=T4nkiMr4dvn67/pbp7IBryxC/ZO1egg3v52w1FMlf6QCMoAOjKSlxY+61YSzK0iT75
         TEYy60XgtXKgHvKYnPeOrPzrfUmQ1XxEDpCSxRgnfebMXU9xRg3/v5a0+cgeW1dnZMnA
         /xUXkunpgocSHaBc0NiKtRLLDpTYpHLabmnlIO80Om7tEpiMbNPx2FR08UTTyDn3lsY2
         ne9bv6q5ehukWjcdrVtdvSvimDgzabCuC6yMws7RRZlPpK7eEbxgVMPhBydNGzMniOXs
         48WZkpzoHw6aI4bQeKVkTM/7z6XW4bgSQPSkfMx9OjqSEQos7tE5SK2QJZDcqODEORy+
         S74A==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20251104; t=1775653564; x=1776258364;
        h=content-transfer-encoding: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;
        bh=OnD147fsXayD4z4+xk5Eo9TO2Q3YPYXOTJ17GarW4qE=;
        b=iHUfPEpNK9xhn2AsYzE7HgdJ3aGbVojeJA9/ySNtecTojzdW14hXpQH9udwGAUExg5
         2Tx9ZyaVusQ8h7ZZIKA7UE4cMLbaPe5eMC/QLyfs6WLaQsK12XCjPwgzFBM+jaiIL8Ld
         C6MIBcPUnrZG6TRIdoqFaCA9h6tbqba7Dan/a0N36r9wD98cWgB/d9v+esSmUsLpWUbg
         DWEiFzwXzVkmtknhLanPxI9QV9gvT+vC614xIEJxJ6F1f1WVhkEhxUOSGl0hQn7HLOom
         0v2K4paOKd2+HGawIzlRk3m7F9xcXaNjXTUjYUQnS7awgQ6P17sjb0w8wmeyI0H4dqGE
         jErQ==
X-Forwarded-Encrypted: i=1; AJvYcCW3OJWQhEsVWFAB1CUNiQbIrhRqI564an8UoZlbeNY2Tw9rbXwnhbmRuV1rMNMv1BmjNONoLuxMgjg=@lists.xenproject.org
X-Gm-Message-State: AOJu0Yx+gzLJMbCJu0ZIx33+BhDf1Oo45UXWVSemp7ZQAPQaE6RhalzF
	PVAd2bJHRLheKg27e5vaPRDeg6YezxJ49awpOInJr+3UhA9sJF8kWrUONwyr8y9bkg==
X-Gm-Gg: AeBDieuHB6Rw6f4x8bNyev2+hz2oC/xr3d2gjRKwjWJLyGJlh9mWtq+44e+eo0mdbKA
	/6D9uKJnyxnFN7z8Q4/CPhswgEJdI3L11vqrZhTIZW/k7jZCduvwOjYNZlTaOYu9Tjr3tCogXS4
	1AiRhCyHkESHAjg4eaDTBOF3IyI3IipbFyUmVPk+Of3aucH51Y/Y6zQskTA46yCpcjpff6wv0D1
	vEzUN4ErgGgT2booxfF8VGvIJKbgTczKJPfnCjaSENlDk29yZBqfJjSOTf9iSdC7qefdL26vUxE
	aYgjLg+fIU4lksMQnn/c9eFh8OV+BC8gJbV4bzxjl3VZfUlbEsjLx6CYaGKKYTYMl3aLl1Hx3Xb
	gpye9Slze2S/mF3p5JkVLWWankmqHpwempfUvn8UAg5fsGub6dizKPyvoS1jPlPCrhkTOofnwfy
	CKrLk+9OWT2cC7f69A/79x8THGVkQKkaeDfjcxpCJCfjoGEzGRDeJ+XkQ2Euw4LVMuA0zLLbmzZ
	Dmyf8tw/tyQ+Is=
X-Received: by 2002:a05:600d:1b:b0:488:b8bc:6a32 with SMTP id 5b1f17b1804b1-488b8bc6cc9mr100600785e9.23.1775653564412;
        Wed, 08 Apr 2026 06:06:04 -0700 (PDT)
Message-ID: <d53d2b06-56d7-43bc-bb20-4df7b7bc3ca5@suse.com>
Date: Wed, 8 Apr 2026 15:06:02 +0200
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH v2] xen/domain: make shutdown state explicit
To: Mykola Kvach <xakep.amatop@gmail.com>
Cc: Mykola Kvach <mykola_kvach@epam.com>, Paul Durrant <paul@xen.org>,
 Andrew Cooper <andrew.cooper3@citrix.com>,
 =?UTF-8?Q?Roger_Pau_Monn=C3=A9?= <roger.pau@citrix.com>,
 Anthony PERARD <anthony.perard@vates.tech>,
 Michal Orzel <michal.orzel@amd.com>, Julien Grall <julien@xen.org>,
 Stefano Stabellini <sstabellini@kernel.org>, Tim Deegan <tim@xen.org>,
 Dario Faggioli <dfaggioli@suse.com>, Juergen Gross <jgross@suse.com>,
 George Dunlap <gwd@xenproject.org>, xen-devel@lists.xenproject.org
References: <e9c45be41bb36ca341dad57196c753fbe82d1526.1774998397.git.mykola_kvach@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: <e9c45be41bb36ca341dad57196c753fbe82d1526.1774998397.git.mykola_kvach@epam.com>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 7bit
X-purgate-ID: tlsNG-c1860d/1775653565-7654F497-8EF1F296/0/0
X-purgate-type: clean
X-purgate-size: 3942

On 01.04.2026 08:41, Mykola Kvach wrote:
> From: Mykola Kvach <mykola_kvach@epam.com>
> 
> The shutdown flow currently overloads is_shutting_down and
> is_shut_down to represent multiple phases of the shutdown lifecycle.
> Some users treat is_shutting_down narrowly as "shutdown still needs to
> be driven to completion", while others rely on it more broadly as
> "the domain is no longer in its normal running state".
> 
> Make the lifecycle explicit by introducing enum
> domain_shutdown_state and helper predicates whose names match their
> semantics: domain_shutting_down() for the transient phase,
> domain_shutdown_completed() for the final state, and
> domain_in_shutdown_state() for checks that need the union of both.
> 
> The conversion is intentionally not mechanical. The old flags were not
> mutually exclusive: once a domain became fully shut down,
> is_shutting_down remained set. As a result, sites that previously
> used the absence of is_shutting_down to exclude both the transient and
> completed states now use domain_in_shutdown_state(), sites that care
> specifically about the final state use domain_shutdown_completed(),
> and only paths that still have work to do before shutdown finalization
> use domain_shutting_down().

In how far is the distinction between domain_shutting_down() and
domain_in_shutdown_state() really necessary? What you describe above
still leaves me pretty clueless as to almost(?) all of the uses of the
latter (where I think the former could be used just as well). Many
paths simply can't be taken anymore for a fully shut down domain, so
the distinction between the two is moot there.

I'm also concerned of the name domain_in_shutdown_state() itself. To
me this is far closer to domain_shutdown_completed() than to the union
of both states. See how e.g. x86 CPUs can be "in shutdown state", i.e.
not responding to anything but a reset or init signal.

IOW an entirely mechanical replacement might in fact be easier to look
at. And in the one rare case where the distinction might indeed be
relevant, "domain_shutting_down() || domain_shutdown_completed()" could
be used.

> @@ -1423,9 +1423,12 @@ int domain_shutdown(struct domain *d, u8 reason)
>      return 0;
>  }
>  
> -void domain_resume(struct domain *d)
> +int domain_resume(struct domain *d)
>  {
>      struct vcpu *v;
> +    enum domain_shutdown_state shutdown_state;
> +    unsigned int shutdown_code;
> +    int rc = 0;
>  
>      /*
>       * Some code paths assume that shutdown status does not get reset under
> @@ -1435,10 +1438,18 @@ void domain_resume(struct domain *d)
>  
>      spin_lock(&d->shutdown_lock);
>  
> -    d->is_shutting_down = d->is_shut_down = 0;
> +    shutdown_state = d->shutdown_state;
> +    shutdown_code = d->shutdown_code;
> +
> +    if ( !domain_shutdown_completed(d) )
> +    {
> +        rc = -EINVAL;
> +        goto out_unlock;
> +    }

I can't help the impression that you're mixing two things here - adjustment
to how shutdown state is tracked, and enforcement of completed shutdown
right here. This separate change likely would better be split out, and then
come with a description saying not only what is being changed, but also why,
and why the change is correct for both call sites.

> @@ -1448,9 +1459,17 @@ void domain_resume(struct domain *d)
>          v->paused_for_shutdown = 0;
>      }
>  
> + out_unlock:
>      spin_unlock(&d->shutdown_lock);
>  
>      domain_unpause(d);
> +
> +    if ( rc )
> +        dprintk(XENLOG_WARNING,
> +                "%pd: Invalid domain state for resume: shutdown_state=%u, shutdown_code=%u\n",
> +                d, shutdown_state, shutdown_code);

The shutdown code doesn't affect whether the function would fail. The extra
variable just to log it anyway is therefore a little irritating. Is there
any reason to this that I'm overlooking?

Jan


From xen-devel-bounces@lists.xenproject.org Wed Apr 08 13:10:57 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 08 Apr 2026 13:10:57 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1276098.1561699 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wASgK-0000b4-EF; Wed, 08 Apr 2026 13:10:56 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1276098.1561699; Wed, 08 Apr 2026 13:10: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 1wASgK-0000ax-AY; Wed, 08 Apr 2026 13:10:56 +0000
Received: by outflank-mailman (input) for mailman id 1276098;
 Wed, 08 Apr 2026 13:10:55 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <jbeulich@suse.com>) id 1wASgJ-0000ak-HB
 for xen-devel@lists.xenproject.org; Wed, 08 Apr 2026 13:10:55 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wASgI-005LQL-TP
 for xen-devel@lists.xenproject.org; Wed, 08 Apr 2026 15:10:54 +0200
Received: from [10.42.69.5] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <jbeulich@suse.com>)
 id 69d653c9-bab6-0a2a0a5309dd-0a2a4505adcc-34
 for <xen-devel@lists.xenproject.org>; Wed, 08 Apr 2026 15:10:54 +0200
Received: from [209.85.128.45] (helo=mail-wm1-f45.google.com)
 by tlsNG-c201ff.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.0)
 (envelope-from <jbeulich@suse.com>)
 id 69d653de-3760-0a2a45050019-d155802db8a5-3
 for <xen-devel@lists.xenproject.org>; Wed, 08 Apr 2026 15:10:54 +0200
Received: by mail-wm1-f45.google.com with SMTP id
 5b1f17b1804b1-488a88aeec9so50971605e9.2
 for <xen-devel@lists.xenproject.org>; Wed, 08 Apr 2026 06:10:54 -0700 (PDT)
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-43d1e4d282esm58133102f8f.18.2026.04.08.06.10.53
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Wed, 08 Apr 2026 06:10:53 -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=google header.d=suse.com header.i="@suse.com" header.h="Content-Transfer-Encoding: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=1775653854; x=1776258654; darn=lists.xenproject.org;
        h=content-transfer-encoding:autocrypt:content-language:cc:to:subject
         :from:user-agent:mime-version:date:message-id:from:to:cc:subject
         :date:message-id:reply-to;
        bh=/EqXdAz4Z1r0fJ2IUFEFv5ntaUz0uYkqQDuLdrMcrSo=;
        b=JL7J3StYdYbIZakCkXbksjnuCN5Do61v+51QhURC23iW6R6Smz4tk0LM/TNG+DULmb
         m1DmfMCR3Czydd0bRW/XD8JcYkCglMZJ5iBI972yU0x2le/Au+ezE/Isozyw00Vu0hu7
         sOQT46GZmU9zorPiqf8pSkL/ewcZ+nFTNbP+3KjD8nxVN1GBJSec0T8N0uoESqC+6pUg
         HVeaWtY/9qfpIeWDN5F8LILr+7zyM5k5NP1qCkKoqMOfRC622yISfe4tlb5kRgGmFXk7
         SV1XtrKW7KTqxomiHfh1XQJhBz4+m4cj3I+SICV4wpuUPN0So5IXLDrYavh1oy4CJZsn
         ZTSg==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20251104; t=1775653854; x=1776258654;
        h=content-transfer-encoding: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;
        bh=/EqXdAz4Z1r0fJ2IUFEFv5ntaUz0uYkqQDuLdrMcrSo=;
        b=M8FEP12JS6ovDdah5bkYZHk2jP4beC86RgmFsF/y3Vz9IbPYh6JulZQwXTDNQbfs0I
         5Sl4/nffvHRqvCoAsQC9e1s3QxMy9ff8VoNZSkhVOQOFglnyp9hMXfRESnZQpBUaZb4M
         r6hKHVNYLc5MQDosFkyBrXTwxWcNg96gwaD8rjoedWicc2KKvWPkWZa8/a1m7LzLZ0i4
         2WeIj1Yrsle3Ctn1Ue25SGibc63Wfsy8NpJLF2CnEjoWrksGh5ZzSgyzD0++j8azlehP
         3tz1+iBkYnhdoZZRlmib7eORQmDupU3alrHUICJkvn6DbzNosKtmANI/im6XhSWR3Suv
         MenQ==
X-Gm-Message-State: AOJu0Yy4nPU0iJyvlk7zyiJnEOZRsmi11f79lKJZFERGNO7hPFECt5ih
	fhj4wBEnpBPYJ5mXLY7evINIpzaZZsaDPfMYK6F5XkRXnTOLqMdDf0xq/BQfnxqcHA==
X-Gm-Gg: AeBDieu92FE/GCoO0LRyRYMOTvSveini+/0MD3M+0EJboxUcu7yIA/AFpK4CsD4oY48
	F3UU0jNiDKhrIPXfrQOzvHHACOaE8Ndf3HsywhXnb6qFIb8QlvqXwL/Bghxxm4z4ooItuTbMspA
	wISA40ZA71Xw8MjAdE0Odv06XZfqD4PABxyUcVrmmrmiYHUlhPtfY2X6Iu/eaIhFL9KQ2SC+uMR
	aUoVm2JWxlnZiAgCjrjOFomh+U8e/ajpbkOhINbbP/e4pATgebUAxhwJcsAJYtMBGBrqmJOfus6
	Fao78rm91Xzlb7ffhN9QGgJ8saAxARaApY1czVXjHF5La2F0PS91COnf5afyjgAjBHE9uhycCEJ
	P3nfwIaz+bQ0SP8H/PJ6AXH4byrgOI6/xtfUm63zfajBIO5YjS0f2vlMWrhCGIvggAc+PwrJf7a
	uGMHIUJjYN0HrxPonK8yRUGWKPI3vEGAAOKloritzW2eLldjr2UFJlmfPCs07ZIsSTddl/3TPTx
	Kvmj6UXqn54sKeXlu6va0ujDA==
X-Received: by 2002:a05:600c:4593:b0:485:33ad:3c9f with SMTP id 5b1f17b1804b1-488997de1c6mr325627405e9.25.1775653854286;
        Wed, 08 Apr 2026 06:10:54 -0700 (PDT)
Message-ID: <13f9a1c9-5722-44cc-b044-6bdbc7e845a9@suse.com>
Date: Wed, 8 Apr 2026 15:10:53 +0200
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
From: Jan Beulich <jbeulich@suse.com>
Subject: Xen 4.21.1 released
To: xen-announce@lists.xenproject.org
Cc: "xen-devel@lists.xenproject.org" <xen-devel@lists.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/1775653854-2233C96F-1AF07233/0/0
X-purgate-type: clean
X-purgate-size: 449

All,

we're pleased to announce the release of another bug fixing Xen version. (A
little late, sorry.)

Xen 4.21.1 is available from its git repository
http://xenbits.xen.org/gitweb/?p=xen.git;a=shortlog;h=refs/heads/stable-4.21
(tag RELEASE-4.21.1) or from the XenProject download page
https://xenproject.org/resources/downloads/.

We recommend all users of the 4.21 stable series to update to this first
point release.

Regards, Jan


From xen-devel-bounces@lists.xenproject.org Wed Apr 08 13:13:41 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 08 Apr 2026 13:13:41 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1276115.1561708 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wASit-00018x-S1; Wed, 08 Apr 2026 13:13:35 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1276115.1561708; Wed, 08 Apr 2026 13:13: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 1wASit-00018q-P6; Wed, 08 Apr 2026 13:13:35 +0000
Received: by outflank-mailman (input) for mailman id 1276115;
 Wed, 08 Apr 2026 13:13:35 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <bounce-md_30504962.69d6547c.v1-1e0d2cfd041d4ac49ab68c2a468eb9b5@bounce.vates.tech>)
 id 1wASis-00018g-Qs
 for xen-devel@lists.xenproject.org; Wed, 08 Apr 2026 13:13:34 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wASis-007v1I-4F
 for xen-devel@lists.xenproject.org; Wed, 08 Apr 2026 15:13:34 +0200
Received: from [10.42.69.1] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1) (envelope-from
 <bounce-md_30504962.69d6547c.v1-1e0d2cfd041d4ac49ab68c2a468eb9b5@bounce.vates.tech>)
 id 69d6547d-e002-0a2a0a5209dd-0a2a4501c2c6-2
 for <xen-devel@lists.xenproject.org>; Wed, 08 Apr 2026 15:13:34 +0200
Received: from [198.2.178.25] (helo=mail178-25.suw51.mandrillapp.com)
 by tlsNG-d62444.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.0)
 (envelope-from
 <bounce-md_30504962.69d6547c.v1-1e0d2cfd041d4ac49ab68c2a468eb9b5@bounce.vates.tech>)
 id 69d6547c-6fc9-0a2a45010019-c602b219371b-3
 for <xen-devel@lists.xenproject.org>; Wed, 08 Apr 2026 15:13:33 +0200
Received: from pmta13.mandrill.prod.suw01.rsglab.com (localhost [127.0.0.1])
 by mail178-25.suw51.mandrillapp.com (Mailchimp) with ESMTP id
 4frNmX3Pv1z4f4SRY
 for <xen-devel@lists.xenproject.org>; Wed,  8 Apr 2026 13:13:32 +0000 (GMT)
Received: from [37.26.189.201] by mandrillapp.com id
 1e0d2cfd041d4ac49ab68c2a468eb9b5; Wed, 08 Apr 2026 13:13: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=mte1 header.d=mandrillapp.com header.i="@mandrillapp.com" header.h="From:Subject:Message-Id:To:Cc:References:In-Reply-To:Feedback-ID:Date:MIME-Version:Content-Type:Content-Transfer-Encoding"; dkim=pass header.s=mte1 header.d=vates.tech header.i="teddy.astie@vates.tech" header.h="From:Subject:Message-Id:To:Cc:References:In-Reply-To:Feedback-ID:Date:MIME-Version:Content-Type:Content-Transfer-Encoding"
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=mandrillapp.com;
	s=mte1; t=1775654012; x=1775924012;
	bh=/AOHxtvS+brt5jEvLfI+mHBuRJlyZx+552KE9mHGmIQ=;
	h=From:Subject:Message-Id:To:Cc:References:In-Reply-To:Feedback-ID:
	 Date:MIME-Version:Content-Type:Content-Transfer-Encoding:CC:Date:
	 Subject:From;
	b=cyhp/qIK6HnbmHn3fp3jVdsc+/Kyk/WDttzB6DGFaQ+Pf6Kd8CT+3RM6IkRKUWq9Y
	 9lc5i0LMU3G3nXJJS9Vu9j58K+2ID3zIc3TJ7m8IvgJ7UAt+v6G7bKF9zhgcq+pVcu
	 jc+gChrJh5SFJ5U36x1eN33iWXe2Zkos10USRbvWZ/iLW4CfEWYS+9Df3vD1v7bD7A
	 ulxmCK/g5W/s8KGaD+feEbAmUUHx0JW7/23GnQkqmrq6/nfVYbCHNaZWpI6/bL1RZ6
	 7ohZolikaah19E2lE/r27SrhG3gg9ujF0oDo6dfX/KDdtufvWBLpyT4o229+kVaVRY
	 qUNfb2MOWgWsw==
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=vates.tech; s=mte1;
	t=1775654012; x=1775914512; i=teddy.astie@vates.tech;
	bh=/AOHxtvS+brt5jEvLfI+mHBuRJlyZx+552KE9mHGmIQ=;
	h=From:Subject:Message-Id:To:Cc:References:In-Reply-To:Feedback-ID:
	 Date:MIME-Version:Content-Type:Content-Transfer-Encoding:CC:Date:
	 Subject:From;
	b=iYrcCps/v24Da/gW0CO2IHbl4YN30T983MHVkLagDnT93OYJjR/S+VDTG8KmbJCrK
	 D/EKM3yWUA/7u9Z6rx1BvGQ/8s1hhklhhQioTkta3QGY/0dp87D8QBG8T9wNP6u1tZ
	 Fj4xYqHp4BPs4nL55XhBrl3n+Dzw8V5QMD8+cIVApwIYOYpcOKg0hcj53bmdwS4JCb
	 e39xIiXHa5GLSqvS3w62Wf16jS5LzXOSWK3d0JhYeBVktPsVfhz1HS1wpgo7JkqgvQ
	 aQM4ZMs+V3WA8lBOxJLW8ybLzJ/0qTSpiMXMi6siWRvyOimRk7GXUxex/Kfrz/oVMs
	 h20HWg9ZUNIEw==
From: "Teddy Astie" <teddy.astie@vates.tech>
Subject: =?utf-8?Q?Re:=20[PATCH=20v10]=20xenpm:=20Add=20get-core-temp=20subcommand?=
X-Bm-Disclaimer: Yes
X-Bm-Milter-Handled: 4ffbd6c1-ee69-4e1b-aabd-f977039bd3e2
X-Bm-Transport-Timestamp: 1775654009868
Message-Id: <9bad4d4c-b6db-4cce-b43b-2970d333c0ce@vates.tech>
To: "Jan Beulich" <jbeulich@suse.com>
Cc: "Oleksii Kurochko" <oleksii.kurochko@gmail.com>, "Community Manager" <community.manager@xenproject.org>, "Anthony PERARD" <anthony.perard@vates.tech>, xen-devel@lists.xenproject.org
References: <22bcde2914c0303b2c594485542af19d2952e782.1775570823.git.teddy.astie@vates.tech> <a9b21308-18f6-41ab-9ba6-1c2874cee86b@suse.com>
In-Reply-To: <a9b21308-18f6-41ab-9ba6-1c2874cee86b@suse.com>
X-Native-Encoded: 1
X-Report-Abuse: =?UTF-8?Q?Please=20forward=20a=20copy=20of=20this=20message,=20including=20all=20headers,=20to=20abuse@mandrill.com.=20You=20can=20also=20report=20abuse=20here:=20https://mandrillapp.com/contact/abuse=3Fid=3D30504962.1e0d2cfd041d4ac49ab68c2a468eb9b5?=
X-Mandrill-User: md_30504962
Feedback-ID: 30504962:30504962.20260408:md
Date: Wed, 08 Apr 2026 13:13:32 +0000
MIME-Version: 1.0
Content-Type: text/plain; charset=utf-8
Content-Transfer-Encoding: quoted-printable
X-purgate-ID: tlsNG-d62444/1775654014-BC967185-C1FBC070/0/0
X-purgate-type: clean
X-purgate-size: 4252

Le 08/04/2026 =C3=A0 14:36, Jan Beulich a =C3=A9crit=C2=A0:
> On 07.04.2026 16:10, Teddy Astie wrote:
>> --- a/CHANGELOG.md
>> +++ b/CHANGELOG.md
>> @@ -16,6 +16,8 @@ The format is based on [Keep a Changelog](https://keep=
achangelog.com/en/1.0.0/)
>>        mitigate (by rate-limiting) the system wide impact of an HVM gues=
t
>>        misusing atomic instructions.
>>      - Support for CPIO microcode in discrete multiboot modules.
>> +   - Introduce get-core-temp to xenpm to query CPU temperatures on Inte=
l
>> +     platforms.
> 
> Would you mind inserting "command" or "option" before "to xenpm"?
> 

Some like
 > Introduce get-core-temp option to xenpm command ... ?

(or something like that)

I don't have any issue with rewording it.

>> @@ -1354,6 +1358,121 @@ void enable_turbo_mode(int argc, char *argv[])
>>                   errno, strerror(errno));
>>   }
>>   
>> +static int fetch_dts_temp(xc_interface *xch, uint32_t cpu, bool package=
, int *temp)
>> +{
>> +    xc_resource_entry_t entries[] =3D {
>> +        { .idx =3D package ? MSR_PACKAGE_THERM_STATUS : MSR_IA32_THERM_=
STATUS },
>> +        { .idx =3D MSR_TEMPERATURE_TARGET },
>> +    };
>> +    struct xc_resource_op ops =3D {
>> +        .cpu =3D cpu,
>> +        .entries =3D entries,
>> +        .nr_entries =3D ARRAY_SIZE(entries),
>> +    };
>> +    int tjmax;
>> +
>> +    int ret =3D xc_resource_op(xch, 1, &ops);
>> +
>> +    switch ( ret )
>> +    {
>> +    case 0:
>> +        /* This CPU isn't online or can't query this MSR */
>> +        errno =3D ENODATA;
>> +        return -1;
>> +
>> +    case 1:
>> +    {
>> +        /*
>> +         * The CPU doesn't support MSR_TEMPERATURE_TARGET, we assume it=
's 100
>> +         * which is correct aside a few selected Atom CPUs. Check Linux
>> +         * kernel's coretemp.c for more information.
>> +         */
>> +        static bool has_reported_once =3D false;
>> +
>> +        if ( !has_reported_once )
>> +        {
>> +            fprintf(stderr, "MSR_TEMPERATURE_TARGET is not supported, a=
ssume "
>> +                            "tjmax =3D 100, readings may be incorrect.\=
n");
>> +            has_reported_once =3D true;
>> +        }
>> +
>> +        tjmax =3D 100;
>> +        break;
>> +    }
>> +
>> +    case 2:
>> +        tjmax =3D (entries[1].val >> 16) & 0xff;
>> +        break;
>> +
>> +    default:
>> +        if ( ret > 0 )
>> +        {
>> +            fprintf(stderr, "Got unexpected xc_resource_op return value=
: %d", ret);
>> +            errno =3D EINVAL;
>> +        }
>> +        return -1;
>> +    }
>> +
>> +    *temp =3D tjmax - ((entries[0].val >> 16) & 0xff);
>> +    return 0;
>> +}
>> +
>> +static void get_core_temp(int argc, char *argv[])
>> +{
>> +    int temp =3D -1, cpu =3D -1;
> 
> cpu's initializer is needed, but why would temp need one? You rely on ...
> 
>> +    unsigned int socket;
>> +    bool has_data =3D false;
>> +
>> +    if ( argc > 0 )
>> +        parse_cpuid(argv[0], &cpu);
>> +
>> +    if ( cpu !=3D -1 )
>> +    {
>> +        if ( fetch_dts_temp(xc_handle, cpu, false, &temp) )
>> +        {
>> +            fprintf(stderr, "Unable to fetch temperature (%d - %s)\n",
>> +                    errno, strerror(errno));
>> +            exit(EXIT_FAILURE);
>> +        }
>> +        else
>> +            printf("CPU%d: %d=C2=B0C\n", cpu, temp);
>> +        return;
>> +    }
>> +
>> +    /* Per socket measurement */
>> +    for ( socket =3D 0, cpu =3D 0; cpu < max_cpu_nr;
>> +          socket++, cpu +=3D physinfo.cores_per_socket * physinfo.threa=
ds_per_core )
>> +    {
>> +        if ( fetch_dts_temp(xc_handle, cpu, true, &temp) )
> 
> ... fetch_dts_temp() to always update it in the success case anyway, both=
 here and
> in the other loop further down.
> 

Indeed, that's not really required anymore.

> Other than this (happy to adjust while committing, provided you agree):
> Reviewed-by: Jan Beulich <jbeulich@suse.com>
> 

Looks good to me with the changes.

> Jan
> 

Teddy


--
Teddy Astie | Vates XCP-ng Developer

XCP-ng & Xen Orchestra - Vates solutions

web: https://vates.tech




From xen-devel-bounces@lists.xenproject.org Wed Apr 08 13:22:43 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 08 Apr 2026 13:22:43 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1276134.1561717 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wASrd-00039g-Mg; Wed, 08 Apr 2026 13:22:37 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1276134.1561717; Wed, 08 Apr 2026 13:22: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 1wASrd-00039Z-JR; Wed, 08 Apr 2026 13:22:37 +0000
Received: by outflank-mailman (input) for mailman id 1276134;
 Wed, 08 Apr 2026 13:22:35 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <jbeulich@suse.com>) id 1wASrb-00039T-TU
 for xen-devel@lists.xenproject.org; Wed, 08 Apr 2026 13:22:35 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wASrb-008oiI-9H
 for xen-devel@lists.xenproject.org; Wed, 08 Apr 2026 15:22:35 +0200
Received: from [10.42.69.3] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <jbeulich@suse.com>)
 id 69d65691-5cb7-0a2a0a5109dd-0a2a4503c97a-34
 for <xen-devel@lists.xenproject.org>; Wed, 08 Apr 2026 15:22:35 +0200
Received: from [209.85.128.45] (helo=mail-wm1-f45.google.com)
 by tlsNG-33051d.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.0)
 (envelope-from <jbeulich@suse.com>)
 id 69d6569a-02b3-0a2a45030019-d155802de980-3
 for <xen-devel@lists.xenproject.org>; Wed, 08 Apr 2026 15:22:35 +0200
Received: by mail-wm1-f45.google.com with SMTP id
 5b1f17b1804b1-488a29e6110so44140895e9.3
 for <xen-devel@lists.xenproject.org>; Wed, 08 Apr 2026 06:22:35 -0700 (PDT)
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-488c5dc1b15sm18068805e9.28.2026.04.08.06.22.33
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Wed, 08 Apr 2026 06:22:34 -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=google header.d=suse.com header.i="@suse.com" header.h="Content-Transfer-Encoding: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=1775654554; x=1776259354; darn=lists.xenproject.org;
        h=content-transfer-encoding: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;
        bh=03HJzs5JH+YVgFOmrMFJzV/KPs5HvOAEBwhiF1zw+Ks=;
        b=IT5xq/lpTtOvlSfLTu4Q8LmPFzYY2SMZkeAtskUvoSpQUfI7H/VACfC5wFK8jCWD7e
         hAR9SO/Zx3SsmwiJRhjL1Z47xO+m7SrfsbWnAwGkGP/8Jg/25jwqtmSioey9OcQbTwZQ
         WzA1AjkEDbylkcm0XGF4FUnLMdeEjhz+/HWZF4qdvbxgojvr36yYBtjCLpqqSDlc7sWk
         4pbDm6isZ8U6afQmeAa7duX1YEL9R+9pHQBexoYDjxBFPFJB4Oes8e7z/r7GOYHoiDg5
         ZIbfFYTNOCPpgIne1WDbf7VVVcrgpyo6qQeYynfTDr4OqkzlZnmgJpse3jqYxourPIBG
         wUfA==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20251104; t=1775654554; x=1776259354;
        h=content-transfer-encoding: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;
        bh=03HJzs5JH+YVgFOmrMFJzV/KPs5HvOAEBwhiF1zw+Ks=;
        b=Ynofvn2Q+vD5UjEDLGrFjtsdZb3JaxMBYN02B0j8+JbXZpHUTUj+fUBhU6mPeN0xX/
         6iRIcAOdbtnB1lzzd/A5trv73GN/bxTcWjmCAcQqIhLt3i5qaIJ+1a7iZ39FzeF11hsc
         AdzA9Rmb6XhZfV88UKlSO9nU7iPaBrINwTuuigiAi+/YHO7PLkdPpz769M8y5QheIeZR
         ALiHXfz3ZokM/+aezOyd4EIzLPT4ZUdU682EZDg7e3X8R+pDKAh6R5tycOfWJEyrOtA5
         VlsFS8PPiNhdzj8pec6Ju/3SOqwwNK67IGis2dWw29sC4Umm9lsPdTx8OE9YJfepuAbk
         Mhuw==
X-Forwarded-Encrypted: i=1; AJvYcCWUZnXtMEhGDlRig9MgRcmWktt9FdjD/Bwdshs/QLVBRpPHxcXBLt9hHGjh5MktaZW77kgctPN7aTM=@lists.xenproject.org
X-Gm-Message-State: AOJu0YyE8XGCz887lp/AMulOxzo/9Tmqpl+Vn1qfBzFjIR+AnsEKeEb1
	DQcyNwWejYEY0oTFIG6k7Yz4uz063euUeDCsmzND6ApX+i2B4VUpPjHaca65HFKPug==
X-Gm-Gg: AeBDievNZhB6YNaI6MkfakOPhSga11TnQF9z7oYmElvmVTMAfB0rqxe5e21WwJxirNR
	7pFhN0sQVIFgSYOGHyWQAJioyQTWt2A9VcIABF9rhf/eNstJtICQ7fYpgBWzY9FXc/J05AR4FVX
	dufFUcZem4pa3Okr377fmZg0I+bOudCeizL9y+XQtgK8hie+CNAkBiM1tNPvDbHWQ0cjvrFaLdF
	h3fG4AYFMWRQvfCb9Fvs8LTFlfZbFQTOM7F1xA72Hbuo2BvnHWGeQMtj20LcPqtkLpdf5ySbVn1
	9tmlQACejxRCuFLBxPao5uVnzeax3qiBAca63imPGqTtk7sXEXNYAr4m/ky+FP8O+W2YvKtzCrE
	2t425v3ZBAqZICbPTwM2DMssRyTE7kuXfMA/aDRL9qS1bebs91Dukk8jcGUa2X2xS5Gz5BCW4Q0
	RNqC0ATRHjJNJ6Q1fzimE5To4Sv5IzCwpArZXtrpD0oaojLqGgs7YiIXsHzmxB4ozGTWWQnBk0m
	/yQ0wqhVYxpCSU=
X-Received: by 2002:a05:600c:138f:b0:47e:e076:c7a5 with SMTP id 5b1f17b1804b1-4889970e3c4mr290296245e9.11.1775654554566;
        Wed, 08 Apr 2026 06:22:34 -0700 (PDT)
Message-ID: <984f15a8-c474-40fd-9a9c-c73ae6d02ae8@suse.com>
Date: Wed, 8 Apr 2026 15:22:32 +0200
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH v3] xen/x86: Check supported features even for PVH dom0
To: Frediano Ziglio <freddy77@gmail.com>
Cc: Frediano Ziglio <frediano.ziglio@cloud.com>,
 Andrew Cooper <andrew.cooper3@citrix.com>,
 =?UTF-8?Q?Roger_Pau_Monn=C3=A9?= <roger.pau@citrix.com>,
 xen-devel@lists.xenproject.org
References: <20260408125521.104660-1-frediano.ziglio@cloud.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: <20260408125521.104660-1-frediano.ziglio@cloud.com>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 7bit
X-purgate-ID: tlsNG-33051d/1775654555-C9F3DC9A-2B84C115/0/0
X-purgate-type: clean
X-purgate-size: 1129

On 08.04.2026 14:55, Frediano Ziglio wrote:
> The supported features ELF notes was tested only if the dom0 was
> PV. Factor out a function to check ELF notes and reuse it even
> for PVH.
> 
> Signed-off-by: Frediano Ziglio <frediano.ziglio@cloud.com>

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

> --- a/xen/arch/x86/dom0_build.c
> +++ b/xen/arch/x86/dom0_build.c
> @@ -320,6 +320,20 @@ unsigned long __init dom0_paging_pages(const struct domain *d,
>      return DIV_ROUND_UP(memkb, 1024) << (20 - PAGE_SHIFT);
>  }
>  
> +int __init initdom_check_parms(
> +    const struct domain *d, const struct elf_dom_parms *parms)
> +{
> +    if ( parms->elf_notes[XEN_ELFNOTE_SUPPORTED_FEATURES].type == XEN_ENT_NONE )
> +        return 0;
> +
> +    if ( is_hardware_domain(d) && !test_bit(XENFEAT_dom0, parms->f_supported) )
> +    {
> +        printk("Kernel does not support Dom0 operation\n");
> +        return -EINVAL;
> +    }
> +
> +    return 0;
> +}

Merely as a remark - personally I would have made a function like this return a
boolean. Both call sites would imo benefit from that.

Jan


From xen-devel-bounces@lists.xenproject.org Wed Apr 08 13:55:55 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 08 Apr 2026 13:55:55 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1276215.1561780 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wATNp-0002AP-FF; Wed, 08 Apr 2026 13:55:53 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1276215.1561780; Wed, 08 Apr 2026 13:55: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 1wATNp-0002AI-Br; Wed, 08 Apr 2026 13:55:53 +0000
Received: by outflank-mailman (input) for mailman id 1276215;
 Wed, 08 Apr 2026 13:55:51 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <luca.fancellu@arm.com>) id 1wATNn-0001w4-C5
 for xen-devel@lists.xenproject.org; Wed, 08 Apr 2026 13:55:51 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wATNm-00AFz6-OB
 for xen-devel@lists.xenproject.org; Wed, 08 Apr 2026 15:55:50 +0200
Received: from [10.42.69.2] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <luca.fancellu@arm.com>)
 id 69d65e54-e002-0a2a0a5209dd-0a2a4502d0da-48
 for <xen-devel@lists.xenproject.org>; Wed, 08 Apr 2026 15:55:50 +0200
Received: from [217.140.110.172] (helo=foss.arm.com)
 by tlsNG-720697.mxtls.expurgate.net with ESMTP (eXpurgate 4.56.0)
 (envelope-from <luca.fancellu@arm.com>)
 id 69d65e65-42fa-0a2a45020019-d98c6eacbcc8-1
 for <xen-devel@lists.xenproject.org>; Wed, 08 Apr 2026 15:55:50 +0200
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 AE14A2D95;
 Wed,  8 Apr 2026 06:55:43 -0700 (PDT)
Received: from e125770.cambridge.arm.com (e125770.arm.com [10.1.199.43])
 by usa-sjc-imap-foss1.foss.arm.com (Postfix) with ESMTPSA id 538EB3F641;
 Wed,  8 Apr 2026 06:55:48 -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=foss header.d=arm.com header.i="@arm.com" header.h="From:To:Cc:Subject:Date:In-Reply-To:References"
DKIM-Signature: v=1; a=rsa-sha256; c=simple/simple; d=arm.com; s=foss;
	t=1775656549; bh=MZfKdfd+Fjj1nByHopUcpOrzmuP31AXPE7A1SX/KVCM=;
	h=From:To:Cc:Subject:Date:In-Reply-To:References:From;
	b=Kece+ckOVuHEDt+c/9tCpgkrxKngvpG1tEBgmcyidiwZ3p1OHEQHQUAHP7pPUU3A2
	 gxKcYy1aY2+wxvShLu/vmmgvoENvxwEt87duuVzn1GeC6DZWaByS+0awZahbr9/+V4
	 50lnYBTq18dbPms5Uro++lahgvoc/jiRQBeU3zHM=
From: Luca Fancellu <luca.fancellu@arm.com>
To: xen-devel@lists.xenproject.org
Cc: Harry Ramsey <harry.ramsey@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>
Subject: [PATCH v3 3/3] arm/mpu: Implement p2m tables
Date: Wed,  8 Apr 2026 14:55:31 +0100
Message-Id: <20260408135531.1744388-4-luca.fancellu@arm.com>
X-Mailer: git-send-email 2.34.1
In-Reply-To: <20260408135531.1744388-1-luca.fancellu@arm.com>
References: <20260408135531.1744388-1-luca.fancellu@arm.com>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit
X-purgate-ID: tlsNG-720697/1775656550-ACB37CD1-35573629/0/0
X-purgate-type: clean
X-purgate-size: 5725

From: Harry Ramsey <harry.ramsey@arm.com>

Implement `p2m_alloc_table`, `p2m_init` and `p2m_final_teardown` for MPU
systems.

Signed-off-by: Harry Ramsey <harry.ramsey@arm.com>
Signed-off-by: Luca Fancellu <luca.fancellu@arm.com>
---
v3:
- Check for alloc_xenheap_pages allocation
- Clear additional page allocated for ARM64
- Add check for INVALID_VCPU_ID
- Remove unnecessary function generate_vsctlr
- Code formatting fixes
---
 xen/arch/arm/include/asm/arm32/mpu.h |  2 +
 xen/arch/arm/include/asm/arm64/mpu.h |  2 +
 xen/arch/arm/include/asm/mpu/p2m.h   | 12 +++++
 xen/arch/arm/include/asm/p2m.h       |  5 ++
 xen/arch/arm/mpu/p2m.c               | 78 ++++++++++++++++++++++++++--
 5 files changed, 96 insertions(+), 3 deletions(-)

diff --git a/xen/arch/arm/include/asm/arm32/mpu.h b/xen/arch/arm/include/asm/arm32/mpu.h
index 2cf0f8cbacae..d565230f84ee 100644
--- a/xen/arch/arm/include/asm/arm32/mpu.h
+++ b/xen/arch/arm/include/asm/arm32/mpu.h
@@ -11,6 +11,8 @@
  */
 #define MPU_REGION_RES0       0x0
 
+#define VSCTLR_VMID_SHIFT     16
+
 /* Hypervisor Protection Region Base Address Register */
 typedef union {
     struct {
diff --git a/xen/arch/arm/include/asm/arm64/mpu.h b/xen/arch/arm/include/asm/arm64/mpu.h
index 4f694190a8a3..8b86a03fee44 100644
--- a/xen/arch/arm/include/asm/arm64/mpu.h
+++ b/xen/arch/arm/include/asm/arm64/mpu.h
@@ -7,6 +7,8 @@
 
 #define MPU_REGION_RES0        (0xFFFFULL << 48)
 
+#define VSCTLR_VMID_SHIFT      48
+
 /* Protection Region Base Address Register */
 typedef union {
     struct __packed {
diff --git a/xen/arch/arm/include/asm/mpu/p2m.h b/xen/arch/arm/include/asm/mpu/p2m.h
index e46d9e757a1d..39fc0c944916 100644
--- a/xen/arch/arm/include/asm/mpu/p2m.h
+++ b/xen/arch/arm/include/asm/mpu/p2m.h
@@ -3,8 +3,20 @@
 #ifndef __ARM_MPU_P2M_H__
 #define __ARM_MPU_P2M_H__
 
+#include <xen/bitops.h>
+#include <xen/macros.h>
+#include <xen/page-size.h>
+
 struct p2m_domain;
 
+/*
+ * The architecture allows at most 255 EL2 MPU memory regions. The size of the
+ * MPU structure entry (pr_t) is 32 Bytes on AArch64 (requiring two 4KB pages)
+ * and 16 bytes on AArch32 (requiring one 4KB page).
+ */
+#define P2M_ROOT_PAGES DIV_ROUND_UP(255 * sizeof(pr_t), PAGE_SIZE)
+#define P2M_ROOT_ORDER get_count_order(P2M_ROOT_PAGES)
+
 static inline void p2m_clear_root_pages(struct p2m_domain *p2m) {}
 
 static inline void p2m_tlb_flush_sync(struct p2m_domain *p2m) {}
diff --git a/xen/arch/arm/include/asm/p2m.h b/xen/arch/arm/include/asm/p2m.h
index 010ce8c9ebbd..ed1b6dd40f40 100644
--- a/xen/arch/arm/include/asm/p2m.h
+++ b/xen/arch/arm/include/asm/p2m.h
@@ -48,8 +48,13 @@ struct p2m_domain {
     /* Current VMID in use */
     uint16_t vmid;
 
+#ifdef CONFIG_MMU
     /* Current Translation Table Base Register for the p2m */
     uint64_t vttbr;
+#else
+    /* Current Virtualization System Control Register for the p2m */
+    register_t vsctlr;
+#endif
 
     /* Highest guest frame that's ever been mapped in the p2m */
     gfn_t max_mapped_gfn;
diff --git a/xen/arch/arm/mpu/p2m.c b/xen/arch/arm/mpu/p2m.c
index f7fb58ab6aa8..ec8f630acd90 100644
--- a/xen/arch/arm/mpu/p2m.c
+++ b/xen/arch/arm/mpu/p2m.c
@@ -28,10 +28,69 @@ void p2m_dump_info(struct domain *d)
     BUG_ON("unimplemented");
 }
 
+static int p2m_alloc_table(struct domain *d)
+{
+    struct p2m_domain *p2m = p2m_get_hostp2m(d);
+    void *table = alloc_xenheap_pages(P2M_ROOT_ORDER, 0);
+
+    if ( !table )
+    {
+        printk(XENLOG_G_ERR "%pd: p2m: unable to allocate P2M MPU mapping table\n",
+               d);
+        return -ENOMEM;
+    }
+
+    p2m->root = virt_to_page(table);
+
+    for (int i = 0; i < P2M_ROOT_PAGES; i++)
+        clear_page(page_to_virt(p2m->root + i));
+
+    return 0;
+}
+
 int p2m_init(struct domain *d)
 {
-    BUG_ON("unimplemented");
-    return -EINVAL;
+    struct p2m_domain *p2m = p2m_get_hostp2m(d);
+    int rc = 0;
+    unsigned int cpu;
+
+    rwlock_init(&p2m->lock);
+
+    p2m->vmid = INVALID_VMID;
+    p2m->max_mapped_gfn = _gfn(0);
+    p2m->lowest_mapped_gfn = _gfn(ULONG_MAX);
+
+    p2m->default_access = p2m_access_rwx;
+    /* mem_access is NOT supported in MPU system. */
+    p2m->mem_access_enabled = false;
+
+    /* Ensure that the type chosen is large enough for MAX_VIRT_CPUS. */
+    BUILD_BUG_ON((1 << (sizeof(p2m->last_vcpu_ran[0]) * 8)) < MAX_VIRT_CPUS);
+    BUILD_BUG_ON((1 << (sizeof(p2m->last_vcpu_ran[0]) * 8)) < INVALID_VCPU_ID);
+
+    for_each_possible_cpu(cpu)
+        p2m->last_vcpu_ran[cpu] = INVALID_VCPU_ID;
+
+    /*
+     * "Trivial" initialization is now complete. Set the backpointer so that
+     * p2m_teardown() and related functions know to do something.
+     */
+    p2m->domain = d;
+
+    rc = p2m_alloc_vmid(d);
+    if ( rc )
+        return rc;
+
+    p2m->vsctlr = ((register_t)p2m->vmid << VSCTLR_VMID_SHIFT);
+
+    rc = p2m_alloc_table(d);
+    if ( rc )
+    {
+        p2m_free_vmid(d);
+        return rc;
+    }
+
+    return 0;
 }
 
 void p2m_save_state(struct vcpu *p)
@@ -46,7 +105,20 @@ void p2m_restore_state(struct vcpu *n)
 
 void p2m_final_teardown(struct domain *d)
 {
-    BUG_ON("unimplemented");
+    struct p2m_domain *p2m = p2m_get_hostp2m(d);
+
+    /* p2m not actually initialized */
+    if ( !p2m->domain )
+        return;
+
+    if ( p2m->root )
+        free_xenheap_pages(page_to_virt(p2m->root), P2M_ROOT_ORDER);
+
+    p2m->root = NULL;
+
+    p2m_free_vmid(d);
+
+    p2m->domain = NULL;
 }
 
 bool p2m_resolve_translation_fault(struct domain *d, gfn_t gfn)
-- 
2.34.1



From xen-devel-bounces@lists.xenproject.org Wed Apr 08 13:55:56 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 08 Apr 2026 13:55:56 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1276213.1561764 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wATNl-0001ir-Ua; Wed, 08 Apr 2026 13:55:49 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1276213.1561764; Wed, 08 Apr 2026 13:55: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 1wATNl-0001ik-QT; Wed, 08 Apr 2026 13:55:49 +0000
Received: by outflank-mailman (input) for mailman id 1276213;
 Wed, 08 Apr 2026 13:55:48 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <luca.fancellu@arm.com>) id 1wATNk-0001VL-Od
 for xen-devel@lists.xenproject.org; Wed, 08 Apr 2026 13:55:48 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wATNk-0081Hn-4Q
 for xen-devel@lists.xenproject.org; Wed, 08 Apr 2026 15:55:48 +0200
Received: from [10.42.69.5] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <luca.fancellu@arm.com>)
 id 69d65e64-2eae-0a2a0a5409dd-0a2a4505be88-0
 for <xen-devel@lists.xenproject.org>; Wed, 08 Apr 2026 15:55:48 +0200
Received: from [217.140.110.172] (helo=foss.arm.com)
 by tlsNG-c201ff.mxtls.expurgate.net with ESMTP (eXpurgate 4.56.0)
 (envelope-from <luca.fancellu@arm.com>)
 id 69d65e63-3760-0a2a45050019-d98c6eacbd58-1
 for <xen-devel@lists.xenproject.org>; Wed, 08 Apr 2026 15:55:47 +0200
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 CFD1F2D95;
 Wed,  8 Apr 2026 06:55:40 -0700 (PDT)
Received: from e125770.cambridge.arm.com (e125770.arm.com [10.1.199.43])
 by usa-sjc-imap-foss1.foss.arm.com (Postfix) with ESMTPSA id EAF2A3F641;
 Wed,  8 Apr 2026 06:55:44 -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=foss header.d=arm.com header.i="@arm.com" header.h="From:To:Cc:Subject:Date:In-Reply-To:References"
DKIM-Signature: v=1; a=rsa-sha256; c=simple/simple; d=arm.com; s=foss;
	t=1775656546; bh=Jbkn6tr6DeeBrY5TgQXpfTzOB7k0l9K2i9UHo4esCJQ=;
	h=From:To:Cc:Subject:Date:In-Reply-To:References:From;
	b=janao23xhFbReleouDkYkbSn4pi/0x26slL4ykiuIE20zLLYWoXQ9WNlLe9Wl4VnT
	 QTPD+N6S0V2vPzkNsVUz4KIhrWX3d+mEXH8btNJcyTyXaUpbxRE/PZnYZgy9lMmB/b
	 dJhw9QR0DpXo+8LOzV82SpdNN+vT0NU49Oj04lQQ=
From: Luca Fancellu <luca.fancellu@arm.com>
To: xen-devel@lists.xenproject.org
Cc: Penny Zheng <Penny.Zheng@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>,
	Penny Zheng <penny.zheng@arm.com>,
	Wei Chen <wei.chen@arm.com>,
	Hari Limaye <hari.limaye@arm.com>,
	Harry Ramsey <harry.ramsey@arm.com>
Subject: [PATCH v3 1/3] arm/mpu: implement setup_virt_paging for MPU system
Date: Wed,  8 Apr 2026 14:55:29 +0100
Message-Id: <20260408135531.1744388-2-luca.fancellu@arm.com>
X-Mailer: git-send-email 2.34.1
In-Reply-To: <20260408135531.1744388-1-luca.fancellu@arm.com>
References: <20260408135531.1744388-1-luca.fancellu@arm.com>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit
X-purgate-ID: tlsNG-c201ff/1775656547-3133496F-1045722C/0/0
X-purgate-type: clean
X-purgate-size: 7460

From: Penny Zheng <Penny.Zheng@arm.com>

Implement setup_virt_paging for aarch64 MPU systems, taking tare of
stage 2 address translation regime, IPA bits, supported VMID length
configuration and vtcr_el2/vstcr_el2 register programming.

Implement also the Armv8-R specific changes to ID_AA64MMFR0_EL1,
related to the supported memory system architecture (PMSA/VMSA)
and check that when MPU is built, the underlying HW is compatible
with PMSA. By default MPU at EL2 and EL1 is required.

Signed-off-by: Penny Zheng <penny.zheng@arm.com>
Signed-off-by: Wei Chen <wei.chen@arm.com>
Signed-off-by: Luca Fancellu <luca.fancellu@arm.com>
Signed-off-by: Hari Limaye <hari.limaye@arm.com>
Signed-off-by: Harry Ramsey <harry.ramsey@arm.com>
---
v3:
- Refactor unused code to more relevant commits.
- Add P2M print information
- Formatting issues
- Update commit message
v2:
- Seperate commit into multiple commits
---
 xen/arch/arm/arm64/mpu/p2m.c             | 80 +++++++++++++++++++++++-
 xen/arch/arm/include/asm/arm64/sysregs.h |  4 ++
 xen/arch/arm/include/asm/cpufeature.h    | 13 +++-
 xen/arch/arm/include/asm/processor.h     |  8 +++
 4 files changed, 101 insertions(+), 4 deletions(-)

diff --git a/xen/arch/arm/arm64/mpu/p2m.c b/xen/arch/arm/arm64/mpu/p2m.c
index b6d8b2777b58..fda512dc7c8f 100644
--- a/xen/arch/arm/arm64/mpu/p2m.c
+++ b/xen/arch/arm/arm64/mpu/p2m.c
@@ -2,11 +2,89 @@
 
 #include <xen/bug.h>
 #include <xen/init.h>
+#include <xen/lib.h>
 #include <asm/p2m.h>
 
 void __init setup_virt_paging(void)
 {
-    BUG_ON("unimplemented");
+    register_t vtcr_el2 = READ_SYSREG(VTCR_EL2);
+    register_t vstcr_el2 = READ_SYSREG(VSTCR_EL2);
+
+    /* PA size */
+    const unsigned int pa_range_info[] = {32, 36, 40, 42, 44, 48, 52, 0,
+                                          /* Invalid */};
+
+    /*
+     * Restrict "p2m_ipa_bits" if needed. As P2M table is always configured
+     * with IPA bits == PA bits, compare against "pabits".
+     */
+    if ( pa_range_info[system_cpuinfo.mm64.pa_range] < p2m_ipa_bits )
+        p2m_ipa_bits = pa_range_info[system_cpuinfo.mm64.pa_range];
+
+    /*
+     * The MSA and MSA_frac fields in the ID_AA64MMFR0_EL1 register identify the
+     * memory system configurations supported. In Armv8-R AArch64, the
+     * only permitted value for ID_AA64MMFR0_EL1.MSA is 0b1111.
+     */
+    if ( system_cpuinfo.mm64.msa != MM64_MSA_PMSA_SUPPORT )
+        goto fault;
+
+    /* Permitted values for ID_AA64MMFR0_EL1.MSA_frac are 0b0001 and 0b0010. */
+    if ( (system_cpuinfo.mm64.msa_frac != MM64_MSA_FRAC_PMSA_SUPPORT) &&
+         (system_cpuinfo.mm64.msa_frac != MM64_MSA_FRAC_VMSA_SUPPORT) )
+        goto fault;
+
+    /* Stage 1 EL1&0 translation regime uses PMSAv8 by default */
+    vtcr_el2 &= ~VTCR_MSA;
+
+    /*
+     * Clear VTCR_EL2.NSA bit to configure non-secure stage 2 translation output
+     * address space to access the Secure PA space as Armv8r only implements
+     * secure state.
+     */
+    vtcr_el2 &= ~VTCR_NSA;
+
+    /*
+     * cpuinfo sanitization makes sure we support 16bits VMID only if all cores
+     * are supporting it.
+     *
+     * Set the VS bit only if 16 bit VIMD is supported.
+     */
+    if ( system_cpuinfo.mm64.vmid_bits == MM64_VMID_16_BITS_SUPPORT )
+    {
+        vtcr_el2 |= VTCR_VS;
+        max_vmid = MAX_VMID_16_BIT;
+    }
+    else
+        vtcr_el2 &= ~VTCR_VS;
+
+    p2m_vmid_allocator_init();
+
+    WRITE_SYSREG(vtcr_el2, VTCR_EL2);
+
+    /*
+     * VSTCR_EL2.SA defines secure stage 2 translation output address space.
+     * To make sure that all stage 2 translations for the Secure PA space access
+     * the Secure PA space, we keep SA bit as 0.
+     *
+     * VSTCR_EL2.SC is NS check enable bit. To make sure that Stage 2 NS
+     * configuration is checked against stage 1 NS configuration in EL1&0
+     * translation regime for the given address, and generates a fault if they
+     * are different, we set SC bit 1.
+     */
+    vstcr_el2 &= ~VSTCR_EL2_SA;
+    vstcr_el2 |= VSTCR_EL2_SC;
+    WRITE_SYSREG(vstcr_el2, VSTCR_EL2);
+
+    printk("P2M: %d-bit IPA with %d-bit PA and %d-bit VMID\n",
+           p2m_ipa_bits,
+           pa_range_info[system_cpuinfo.mm64.pa_range],
+           ( MAX_VMID == MAX_VMID_16_BIT ) ? 16 : 8);
+
+    return;
+
+ fault:
+    panic("Hardware with no PMSAv8-64 support in any translation regime\n");
 }
 
 /*
diff --git a/xen/arch/arm/include/asm/arm64/sysregs.h b/xen/arch/arm/include/asm/arm64/sysregs.h
index 19d409d3eb5a..f3c11d871e86 100644
--- a/xen/arch/arm/include/asm/arm64/sysregs.h
+++ b/xen/arch/arm/include/asm/arm64/sysregs.h
@@ -462,6 +462,10 @@
 #define ZCR_ELx_LEN_SIZE             9
 #define ZCR_ELx_LEN_MASK             0x1ff
 
+/* Virtualization Secure Translation Control Register */
+#define VSTCR_EL2_SA                 (_AC(0x1,U) << 30)
+#define VSTCR_EL2_SC                 (_AC(0x1,U) << 20)
+
 #ifdef CONFIG_MPU
 /*
  * The Armv8-R AArch64 architecture always executes code in Secure
diff --git a/xen/arch/arm/include/asm/cpufeature.h b/xen/arch/arm/include/asm/cpufeature.h
index 13353c8e1ad1..bf902a397068 100644
--- a/xen/arch/arm/include/asm/cpufeature.h
+++ b/xen/arch/arm/include/asm/cpufeature.h
@@ -248,6 +248,12 @@ struct cpuinfo_arm {
             unsigned long tgranule_16K:4;
             unsigned long tgranule_64K:4;
             unsigned long tgranule_4K:4;
+#ifdef CONFIG_MPU
+            unsigned long __res0:16;
+            unsigned long msa:4;
+            unsigned long msa_frac:4;
+            unsigned long __res1:8;
+#else
             unsigned long tgranule_16k_2:4;
             unsigned long tgranule_64k_2:4;
             unsigned long tgranule_4k_2:4;
@@ -255,6 +261,7 @@ struct cpuinfo_arm {
             unsigned long __res0:8;
             unsigned long fgt:4;
             unsigned long ecv:4;
+#endif
 
             /* MMFR1 */
             unsigned long hafdbs:4;
@@ -267,13 +274,13 @@ struct cpuinfo_arm {
             unsigned long xnx:4;
             unsigned long twed:4;
             unsigned long ets:4;
-            unsigned long __res1:4;
+            unsigned long __res2:4;
             unsigned long afp:4;
-            unsigned long __res2:12;
+            unsigned long __res3:12;
             unsigned long ecbhb:4;
 
             /* MMFR2 */
-            unsigned long __res3:64;
+            unsigned long __res4:64;
         };
     } mm64;
 
diff --git a/xen/arch/arm/include/asm/processor.h b/xen/arch/arm/include/asm/processor.h
index 1a48c9ff3b39..895d7cd50244 100644
--- a/xen/arch/arm/include/asm/processor.h
+++ b/xen/arch/arm/include/asm/processor.h
@@ -403,6 +403,9 @@
 
 #define VTCR_RES1       (_AC(1,UL)<<31)
 
+#define VTCR_MSA        (_AC(0x1,UL)<<31)
+#define VTCR_NSA        (_AC(0x1,UL)<<30)
+
 /* HCPTR Hyp. Coprocessor Trap Register */
 #define HCPTR_TAM       ((_AC(1,U)<<30))
 #define HCPTR_TTA       ((_AC(1,U)<<20))        /* Trap trace registers */
@@ -464,6 +467,11 @@
 #define MM64_VMID_16_BITS_SUPPORT   0x2
 #endif
 
+#define MM64_MSA_PMSA_SUPPORT       0xf
+#define MM64_MSA_FRAC_NONE_SUPPORT  0x0
+#define MM64_MSA_FRAC_PMSA_SUPPORT  0x1
+#define MM64_MSA_FRAC_VMSA_SUPPORT  0x2
+
 #ifndef __ASSEMBLER__
 
 extern register_t __cpu_logical_map[];
-- 
2.34.1



From xen-devel-bounces@lists.xenproject.org Wed Apr 08 13:55:56 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 08 Apr 2026 13:55:56 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1276212.1561753 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wATNk-0001VT-MA; Wed, 08 Apr 2026 13:55:48 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1276212.1561753; Wed, 08 Apr 2026 13:55: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 1wATNk-0001VM-JT; Wed, 08 Apr 2026 13:55:48 +0000
Received: by outflank-mailman (input) for mailman id 1276212;
 Wed, 08 Apr 2026 13:55:48 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <luca.fancellu@arm.com>) id 1wATNj-0001VF-QE
 for xen-devel@lists.xenproject.org; Wed, 08 Apr 2026 13:55:48 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wATNj-00AFz6-0F
 for xen-devel@lists.xenproject.org; Wed, 08 Apr 2026 15:55:47 +0200
Received: from [10.42.69.2] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <luca.fancellu@arm.com>)
 id 69d65e54-e002-0a2a0a5209dd-0a2a4502d0da-42
 for <xen-devel@lists.xenproject.org>; Wed, 08 Apr 2026 15:55:46 +0200
Received: from [217.140.110.172] (helo=foss.arm.com)
 by tlsNG-720697.mxtls.expurgate.net with ESMTP (eXpurgate 4.56.0)
 (envelope-from <luca.fancellu@arm.com>)
 id 69d65e61-42fa-0a2a45020019-d98c6eacd486-1
 for <xen-devel@lists.xenproject.org>; Wed, 08 Apr 2026 15:55:45 +0200
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 DC5331E32;
 Wed,  8 Apr 2026 06:55:38 -0700 (PDT)
Received: from e125770.cambridge.arm.com (e125770.arm.com [10.1.199.43])
 by usa-sjc-imap-foss1.foss.arm.com (Postfix) with ESMTPSA id 9D6933F641;
 Wed,  8 Apr 2026 06:55:43 -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=foss header.d=arm.com header.i="@arm.com" header.h="From:To:Cc:Subject:Date"
DKIM-Signature: v=1; a=rsa-sha256; c=simple/simple; d=arm.com; s=foss;
	t=1775656544; bh=6jm2CBfhm1vHhwvDDHpJ8C9jaQr+z0/7OM17rg20cUo=;
	h=From:To:Cc:Subject:Date:From;
	b=D/P91ZGXYt5TDvIAzgbbLH4rk8ee+mzdfj3uLEvIRefDkEGAAO4AHsHy64LyI5Jc5
	 h1fMTiAIx4fEab8kei9dsej0NA6ZmvXYoBzmzwrHiDx2NJ85aYH7hO/99AGmrUBUqh
	 WC47FWOJ2pN81KaQ8b3gmYkTctR1daDOXpn9udK0=
From: Luca Fancellu <luca.fancellu@arm.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>
Subject: [PATCH v3 0/3] Fifth MPU Series
Date: Wed,  8 Apr 2026 14:55:28 +0100
Message-Id: <20260408135531.1744388-1-luca.fancellu@arm.com>
X-Mailer: git-send-email 2.34.1
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit
X-purgate-ID: tlsNG-720697/1775656546-4792ECD1-994ADA36/0/0
X-purgate-type: clean
X-purgate-size: 1363

This series continues to further the ongoing work to introduce support
for MPU systems in Xen.

The patches in this series aim to implement MPU specific p2m functions.

Harry Ramsey (2):
  arm/mpu: Introduce `v8r_el1_msa` device tree property for domains
  arm/mpu: Implement p2m tables

Penny Zheng (1):
  arm/mpu: implement setup_virt_paging for MPU system

 docs/misc/arm/device-tree/booting.txt    | 12 ++++
 xen/arch/arm/arm64/mpu/p2m.c             | 80 +++++++++++++++++++++++-
 xen/arch/arm/dom0less-build.c            | 24 +++++++
 xen/arch/arm/domain.c                    |  4 ++
 xen/arch/arm/include/asm/arm32/mpu.h     |  2 +
 xen/arch/arm/include/asm/arm64/mpu.h     |  2 +
 xen/arch/arm/include/asm/arm64/sysregs.h |  4 ++
 xen/arch/arm/include/asm/cpufeature.h    | 13 +++-
 xen/arch/arm/include/asm/domain.h        |  7 +++
 xen/arch/arm/include/asm/mpu.h           |  5 ++
 xen/arch/arm/include/asm/mpu/p2m.h       | 12 ++++
 xen/arch/arm/include/asm/p2m.h           |  5 ++
 xen/arch/arm/include/asm/processor.h     |  8 +++
 xen/arch/arm/mpu/arm32/mm.c              |  5 ++
 xen/arch/arm/mpu/arm64/mm.c              |  5 ++
 xen/arch/arm/mpu/p2m.c                   | 78 ++++++++++++++++++++++-
 xen/include/public/arch-arm.h            |  2 +
 17 files changed, 261 insertions(+), 7 deletions(-)

-- 
2.34.1



From xen-devel-bounces@lists.xenproject.org Wed Apr 08 13:55:56 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 08 Apr 2026 13:55:56 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1276214.1561771 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wATNn-0001w9-7i; Wed, 08 Apr 2026 13:55:51 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1276214.1561771; Wed, 08 Apr 2026 13:55: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 1wATNn-0001w1-57; Wed, 08 Apr 2026 13:55:51 +0000
Received: by outflank-mailman (input) for mailman id 1276214;
 Wed, 08 Apr 2026 13:55:50 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <luca.fancellu@arm.com>) id 1wATNl-0001ij-So
 for xen-devel@lists.xenproject.org; Wed, 08 Apr 2026 13:55:50 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wATNl-0081Hn-8N
 for xen-devel@lists.xenproject.org; Wed, 08 Apr 2026 15:55:49 +0200
Received: from [10.42.69.5] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <luca.fancellu@arm.com>)
 id 69d65e64-2eae-0a2a0a5409dd-0a2a4505be88-10
 for <xen-devel@lists.xenproject.org>; Wed, 08 Apr 2026 15:55:49 +0200
Received: from [217.140.110.172] (helo=foss.arm.com)
 by tlsNG-c201ff.mxtls.expurgate.net with ESMTP (eXpurgate 4.56.0)
 (envelope-from <luca.fancellu@arm.com>)
 id 69d65e64-3760-0a2a45050019-d98c6eacd16c-1
 for <xen-devel@lists.xenproject.org>; Wed, 08 Apr 2026 15:55:48 +0200
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 440191E32;
 Wed,  8 Apr 2026 06:55:42 -0700 (PDT)
Received: from e125770.cambridge.arm.com (e125770.arm.com [10.1.199.43])
 by usa-sjc-imap-foss1.foss.arm.com (Postfix) with ESMTPSA id DC7F63F641;
 Wed,  8 Apr 2026 06:55:46 -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=foss header.d=arm.com header.i="@arm.com" header.h="From:To:Cc:Subject:Date:In-Reply-To:References"
DKIM-Signature: v=1; a=rsa-sha256; c=simple/simple; d=arm.com; s=foss;
	t=1775656548; bh=v5LF9EBgnpQL3pb+wunpmzDERz+oj+KrD99jf6QSUyw=;
	h=From:To:Cc:Subject:Date:In-Reply-To:References:From;
	b=KlPwKuHMTA3nm6OSjAxLvuR9Qvyu1Bs4h2BMjvm8xbW1beM0vu/VITGIND60fgeBW
	 Njl8aP1nGuhPfHde+wdmASMyeVPa9v8wipSdgR03K1GwRVbGtI3wyc3xCZEXSW8fql
	 Oolf4ht585ZHaQ5pcKahZyOpaA7fnLGXe+fzUsGM=
From: Luca Fancellu <luca.fancellu@arm.com>
To: xen-devel@lists.xenproject.org
Cc: Harry Ramsey <harry.ramsey@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>
Subject: [PATCH v3 2/3] arm/mpu: Introduce `v8r_el1_msa` device tree property for domains
Date: Wed,  8 Apr 2026 14:55:30 +0100
Message-Id: <20260408135531.1744388-3-luca.fancellu@arm.com>
X-Mailer: git-send-email 2.34.1
In-Reply-To: <20260408135531.1744388-1-luca.fancellu@arm.com>
References: <20260408135531.1744388-1-luca.fancellu@arm.com>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit
X-purgate-ID: tlsNG-c201ff/1775656549-38BE896F-DE5C9B4A/0/0
X-purgate-type: clean
X-purgate-size: 6467

From: Harry Ramsey <harry.ramsey@arm.com>

Add a new device tree property `v8r_el1_msa` to select the MSA (memory
system architecture) at EL1 i.e. MPU(default) or MMU.

Signed-off-by: Harry Ramsey <harry.ramsey@arm.com>
Signed-off-by: Luca Fancellu <luca.fancellu@arm.com>
---
v3:
- Improve commit message and device tree property description
- Remove macro protection
- Remove unused function is_mpu_domain
- Code formatting
---
 docs/misc/arm/device-tree/booting.txt | 12 ++++++++++++
 xen/arch/arm/dom0less-build.c         | 24 ++++++++++++++++++++++++
 xen/arch/arm/domain.c                 |  4 ++++
 xen/arch/arm/include/asm/domain.h     |  7 +++++++
 xen/arch/arm/include/asm/mpu.h        |  5 +++++
 xen/arch/arm/mpu/arm32/mm.c           |  5 +++++
 xen/arch/arm/mpu/arm64/mm.c           |  5 +++++
 xen/include/public/arch-arm.h         |  2 ++
 8 files changed, 64 insertions(+)

diff --git a/docs/misc/arm/device-tree/booting.txt b/docs/misc/arm/device-tree/booting.txt
index 977b4286082f..b1a329c0e8d9 100644
--- a/docs/misc/arm/device-tree/booting.txt
+++ b/docs/misc/arm/device-tree/booting.txt
@@ -322,6 +322,18 @@ with the following properties:
     Should be used together with scmi-smc-passthrough Xen command line
     option.
 
+- v8r_el1_msa
+
+    A string property specifying whether, on Armv8-R systems, a domain
+    should use PMSAv8 (MPU) at EL1 or VMSAv8 (MMU) at EL1.
+
+    - "mmu"
+    Enables VMSAv8 at EL1. This requires hardware support and is only
+    optionally available on AArch64.
+
+    - "mpu"
+    Enables PMSAv8 at EL1. (Default)
+
 Under the "xen,domain" compatible node, one or more sub-nodes are present
 for the DomU kernel and ramdisk.
 
diff --git a/xen/arch/arm/dom0less-build.c b/xen/arch/arm/dom0less-build.c
index 4181c105389a..456dc553bb23 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/grant_table.h>
+#include <asm/mpu.h>
 #include <asm/setup.h>
 
 #ifdef CONFIG_VGICV2
@@ -315,6 +316,7 @@ int __init arch_parse_dom0less_node(struct dt_device_node *node,
     struct xen_domctl_createdomain *d_cfg = &bd->create_cfg;
     unsigned int flags = bd->create_flags;
     uint32_t val;
+    const char *v8r_el1_msa;
 
     d_cfg->arch.gic_version = XEN_DOMCTL_CONFIG_GIC_NATIVE;
     d_cfg->flags |= XEN_DOMCTL_CDF_hvm | XEN_DOMCTL_CDF_hap;
@@ -322,6 +324,28 @@ int __init arch_parse_dom0less_node(struct dt_device_node *node,
     if ( domu_dt_sci_parse(node, d_cfg) )
         panic("Error getting SCI configuration\n");
 
+    if (!dt_property_read_string(node, "v8r_el1_msa", &v8r_el1_msa))
+    {
+#ifdef CONFIG_MPU
+        if ( !strcmp(v8r_el1_msa, "mmu") )
+        {
+            if ( !has_v8r_vmsa_support() )
+                panic("Platform does not support VMSA at EL1 (v8r_el1_msa)\n");
+            d_cfg->arch.v8r_el1_msa = MPU_EL1_VMSA;
+        }
+        else if ( !strcmp(v8r_el1_msa, "mpu") )
+        {
+            d_cfg->arch.v8r_el1_msa = MPU_EL1_PMSA;
+            if ( !(flags & CDF_staticmem) || !(flags & CDF_directmap) )
+                panic("PMSA is not valid for domain without static allocation and direct map (v8r_el1_msa)\n");
+        }
+        else
+            panic("Invalid device tree option for v8r_el1_msa\n");
+#else
+        panic("'v8r_el1_msa' property found, but CONFIG_MPU not selected\n");
+#endif
+    }
+
     if ( !dt_property_read_u32(node, "nr_spis", &d_cfg->arch.nr_spis) )
     {
         int vpl011_virq = GUEST_VPL011_SPI;
diff --git a/xen/arch/arm/domain.c b/xen/arch/arm/domain.c
index 26380a807cad..c044293acd39 100644
--- a/xen/arch/arm/domain.c
+++ b/xen/arch/arm/domain.c
@@ -725,6 +725,10 @@ int arch_domain_create(struct domain *d,
     if ( (rc = sci_domain_init(d, config)) != 0 )
         goto fail;
 
+#ifdef CONFIG_MPU
+    d->arch.v8r_el1_msa = config->arch.v8r_el1_msa;
+#endif
+
     return 0;
 
 fail:
diff --git a/xen/arch/arm/include/asm/domain.h b/xen/arch/arm/include/asm/domain.h
index ffe5d0d9f0a6..fd0a83046893 100644
--- a/xen/arch/arm/include/asm/domain.h
+++ b/xen/arch/arm/include/asm/domain.h
@@ -30,6 +30,9 @@ enum domain_type {
 #define is_64bit_domain(d) (0)
 #endif
 
+#define MPU_EL1_PMSA 0
+#define MPU_EL1_VMSA 1
+
 /*
  * Is the domain using the host memory layout?
  *
@@ -128,6 +131,10 @@ struct arch_domain
 #endif
 
     struct resume_info resume_ctx;
+
+#ifdef CONFIG_MPU
+    uint8_t v8r_el1_msa;
+#endif
 }  __cacheline_aligned;
 
 struct arch_vcpu
diff --git a/xen/arch/arm/include/asm/mpu.h b/xen/arch/arm/include/asm/mpu.h
index 72fa5b00b861..8a8c01086206 100644
--- a/xen/arch/arm/include/asm/mpu.h
+++ b/xen/arch/arm/include/asm/mpu.h
@@ -27,6 +27,11 @@
 
 #ifndef __ASSEMBLER__
 
+/*
+ * Utility function to determine if an Armv8-R processor supports VMSA.
+ */
+bool has_v8r_vmsa_support(void);
+
 /*
  * Set base address of MPU protection region.
  *
diff --git a/xen/arch/arm/mpu/arm32/mm.c b/xen/arch/arm/mpu/arm32/mm.c
index a4673c351141..5eaeb3400e6c 100644
--- a/xen/arch/arm/mpu/arm32/mm.c
+++ b/xen/arch/arm/mpu/arm32/mm.c
@@ -38,6 +38,11 @@
         break;                                            \
     }
 
+bool has_v8r_vmsa_support(void)
+{
+    return false;
+}
+
 /*
  * Armv8-R supports direct access and indirect access to the MPU regions through
  * registers:
diff --git a/xen/arch/arm/mpu/arm64/mm.c b/xen/arch/arm/mpu/arm64/mm.c
index ed643cad4073..b07e729a7d05 100644
--- a/xen/arch/arm/mpu/arm64/mm.c
+++ b/xen/arch/arm/mpu/arm64/mm.c
@@ -32,6 +32,11 @@
         break;                                                  \
     }
 
+bool has_v8r_vmsa_support(void)
+{
+    return system_cpuinfo.mm64.msa_frac == MM64_MSA_FRAC_VMSA_SUPPORT;
+}
+
 /*
  * Armv8-R supports direct access and indirect access to the MPU regions through
  * registers:
diff --git a/xen/include/public/arch-arm.h b/xen/include/public/arch-arm.h
index cd563cf70684..23df2f24cb09 100644
--- a/xen/include/public/arch-arm.h
+++ b/xen/include/public/arch-arm.h
@@ -355,6 +355,8 @@ struct xen_arch_domainconfig {
     uint32_t clock_frequency;
     /* IN */
     uint8_t arm_sci_type;
+    /* IN */
+    uint8_t v8r_el1_msa;
 };
 #endif /* __XEN__ || __XEN_TOOLS__ */
 
-- 
2.34.1



From xen-devel-bounces@lists.xenproject.org Wed Apr 08 14:26:00 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 08 Apr 2026 14:26:00 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1276256.1561790 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wATqq-0008Af-J1; Wed, 08 Apr 2026 14:25:52 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1276256.1561790; Wed, 08 Apr 2026 14:25: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 1wATqq-0008AY-GA; Wed, 08 Apr 2026 14:25:52 +0000
Received: by outflank-mailman (input) for mailman id 1276256;
 Wed, 08 Apr 2026 14:25:51 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <Luca.Fancellu@arm.com>) id 1wATqp-0008AS-E0
 for xen-devel@lists.xenproject.org; Wed, 08 Apr 2026 14:25:51 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wATqo-0086W9-FB
 for xen-devel@lists.xenproject.org; Wed, 08 Apr 2026 16:25:50 +0200
Received: from [10.42.69.6] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <Luca.Fancellu@arm.com>)
 id 69d66563-2eae-0a2a0a5409dd-0a2a4506e176-20
 for <xen-devel@lists.xenproject.org>; Wed, 08 Apr 2026 16:25:50 +0200
Received: from [40.107.162.18]
 (helo=PA4PR04CU001.outbound.protection.outlook.com)
 by tlsNG-16d1c6.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.0)
 (envelope-from <Luca.Fancellu@arm.com>)
 id 69d6656d-0df0-0a2a45060019-286ba21249b9-3
 for <xen-devel@lists.xenproject.org>; Wed, 08 Apr 2026 16:25:50 +0200
Received: from DUZPR01CA0204.eurprd01.prod.exchangelabs.com
 (2603:10a6:10:4b6::25) by AS2PR08MB9320.eurprd08.prod.outlook.com
 (2603:10a6:20b:598::12) with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9769.18; Wed, 8 Apr
 2026 14:25:45 +0000
Received: from DU2PEPF0001E9C6.eurprd03.prod.outlook.com
 (2603:10a6:10:4b6:cafe::48) by DUZPR01CA0204.outlook.office365.com
 (2603:10a6:10:4b6::25) with Microsoft SMTP Server (version=TLS1_3,
 cipher=TLS_AES_256_GCM_SHA384) id 15.20.9769.35 via Frontend Transport; Wed,
 8 Apr 2026 14:25:45 +0000
Received: from outbound-uk1.az.dlp.m.darktrace.com (4.158.2.129) by
 DU2PEPF0001E9C6.mail.protection.outlook.com (10.167.8.75) with Microsoft SMTP
 Server (version=TLS1_3, cipher=TLS_AES_256_GCM_SHA384) id 15.20.9745.21 via
 Frontend Transport; Wed, 8 Apr 2026 14:25:45 +0000
Received: from DU2PR08MB7272.eurprd08.prod.outlook.com (2603:10a6:10:2d7::16)
 by AM8PR08MB6546.eurprd08.prod.outlook.com (2603:10a6:20b:355::18)
 with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9769.19; Wed, 8 Apr
 2026 14:24:40 +0000
Received: from DU2PR08MB7272.eurprd08.prod.outlook.com
 ([fe80::5d34:206f:373:a323]) by DU2PR08MB7272.eurprd08.prod.outlook.com
 ([fe80::5d34:206f:373:a323%6]) with mapi id 15.20.9769.018; Wed, 8 Apr 2026
 14:24: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=selector1 header.d=arm.com header.i="@arm.com" header.h="From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck"; dkim=pass header.s=selector1 header.d=arm.com header.i="@arm.com" header.h="From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck"
ARC-Seal: i=2; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=pass;
 b=J2hphFbLG+Vq88AQM4HFM5h4U4KDu0lB+eqvuuLF3zf7w88I/6hzjgDXuPD3ny+ucpluK6wncgqNu5Y9GJGXSzo3tPCLZrbTnuZq4nQCDCLDkyliV6fOxp34VrknebepqWfk1E//+D/WkvooNo0UhswE37ZMlkUlEz61RqT2xFuK9TnKGpDEU6tGfC9YS3QkpGUt+613wkJ7rbEhTFoKSsnBlv51guFZwWUtIoWWpHYFES58bho3cwqyIENmToUZHae/ctD5wTarAIfCc+cPcxiM4WxTcJX/f+57wy30HXthpgFFqNDAR9U5a+jp3VsiKfOuUNkHo2cDbiFaSo5H5g==
ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com;
 s=arcselector10001;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1;
 bh=crjtuVI0/8IRJIVmV7CB5LK2aDZnz4Cjmew4sqLTOXI=;
 b=WnS391qCSBWg0GCF48nTFc4/3IqNZG6fKnJhbl+n4Ev/tQs3xBakPQ9uO/l88IIEJKNsuZurGvvCWG75YJvez9LxwCAgxKW6F25n1wdU/bhAt80YJ4k1SLYGDhMZmgJNcIh+N+6AQ6HcHJLNEVJrOUE9SAbGbLysstomHOuNvYGRro4IEmYXX3C9WjL7C6NLJcZKTZ3VmBkVlSfH4nfYln9VeKyMGtBWAHmHy4TtiVR//LLFUar7TDnI7/U/P732Tu0NpygNqYJbrLp2IGqbJkP8uJQuMNnTrRt4veLwvtEkeuuRytugIveXL33vHO4vn01hovblWLpBfrKOq5XHqg==
ARC-Authentication-Results: i=2; mx.microsoft.com 1; spf=pass (sender ip is
 4.158.2.129) smtp.rcpttodomain=amd.com smtp.mailfrom=arm.com; dmarc=pass
 (p=none sp=none pct=100) action=none header.from=arm.com; dkim=pass
 (signature was verified) header.d=arm.com; arc=pass (0 oda=1 ltdi=1
 spf=[1,1,smtp.mailfrom=arm.com] dkim=[1,1,header.d=arm.com]
 dmarc=[1,1,header.from=arm.com])
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=arm.com; s=selector1;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck;
 bh=crjtuVI0/8IRJIVmV7CB5LK2aDZnz4Cjmew4sqLTOXI=;
 b=TN0gwgmXlkVD21O8i5r/wqmsQIj9e6vSWtEOT9AGeABXi96VqI0xMPwlvxaWLAoS49OZi/4d6A9lqev1QbBj9ynFMp9cj1IU46d6JGsodZPUXPUUjNgpuwITGuzS1yfa8j5ucYU4SWBcNIbhM1ivCxQMh5aFQUZIlNxt4bqbnzI=
X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 4.158.2.129)
 smtp.mailfrom=arm.com; dkim=pass (signature was verified)
 header.d=arm.com;dmarc=pass action=none header.from=arm.com;
Received-SPF: Pass (protection.outlook.com: domain of arm.com designates
 4.158.2.129 as permitted sender) receiver=protection.outlook.com;
 client-ip=4.158.2.129; helo=outbound-uk1.az.dlp.m.darktrace.com; pr=C
ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none;
 b=t4OCMVXri277bS8AdrzYYlBvtUf+45+xkTLXk4CWF0I/RktDWS450+H6MaiqB9T9V8JHTXHs3AKQmc7o/8ZUx1vmSEeShkWNwS1jIjEupkL97SfCBuOpOnE4iMoZ2VJi+lFC16pVIpbZh+6pYhl9bYgOpIL/XB36tlCS9BvLsNhh0HP4iQ3hpnaxCqbyRyYvy9qnFp2JPGVhvS5P2Wu42Xg0Iq2sLDRnw063WbVRlBjYDCqUdybk2mHKBru1A+/ODfGD2I9VSUeA3M4ugS2nNNUt5tom9ub03Hq0T/XnVX6pykPU6MTrPH0i70MyQg72dHvXCB2oCBpfYeFUDP2wpw==
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com;
 s=arcselector10001;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1;
 bh=crjtuVI0/8IRJIVmV7CB5LK2aDZnz4Cjmew4sqLTOXI=;
 b=SJYukOARCpgplZ0GTrx4RFreZtaYeK/6rckLZ89JrE8yZxiIO1u39cWVyOkIStYR3Wj3EXeYmwdpyeZNP4QZvxVKSEhhRCCVk0awdSDFWO2wXMUZ5Q2WokuXFGg5CJyd3DiSk19aLqI4pFfBgHIEkFby5jBerZkI55KkVXENcepgt2TcFgX9ylJbAEykY+0yD327cdN0hlzN161kYu2z/0KCo+o9mZJwIEu55ThCFwM9yPs6nosSSlolPR23ph88eXRS/JaOrS5T/DY1XWOM03+1z1Zqe6Kw7C8Tsqq6zFc9uGzebvlPara9SPrxg3Kt/mVt0hc0r09CMfHvhnBhQg==
ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass
 smtp.mailfrom=arm.com; dmarc=pass action=none header.from=arm.com; dkim=pass
 header.d=arm.com; arc=none
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=arm.com; s=selector1;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck;
 bh=crjtuVI0/8IRJIVmV7CB5LK2aDZnz4Cjmew4sqLTOXI=;
 b=TN0gwgmXlkVD21O8i5r/wqmsQIj9e6vSWtEOT9AGeABXi96VqI0xMPwlvxaWLAoS49OZi/4d6A9lqev1QbBj9ynFMp9cj1IU46d6JGsodZPUXPUUjNgpuwITGuzS1yfa8j5ucYU4SWBcNIbhM1ivCxQMh5aFQUZIlNxt4bqbnzI=
From: Luca Fancellu <Luca.Fancellu@arm.com>
To: Ayan Kumar Halder <ayan.kumar.halder@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>, Michal Orzel <michal.orzel@amd.com>,
	Volodymyr Babchuk <Volodymyr_Babchuk@epam.com>
Subject: Re: [PATCH v2] xen: gic-v3: Introduce CONFIG_GICV3_NR_LRS
Thread-Topic: [PATCH v2] xen: gic-v3: Introduce CONFIG_GICV3_NR_LRS
Thread-Index: AQHcx2Nvy01nqbaxNEymwM2jnpP38w==
Date: Wed, 8 Apr 2026 14:24:40 +0000
Message-ID: <D28202A5-EA01-4AE7-816C-FE3B703605F6@arm.com>
References: <20260318140900.3795710-1-ayan.kumar.halder@amd.com>
In-Reply-To: <20260318140900.3795710-1-ayan.kumar.halder@amd.com>
Accept-Language: en-GB, en-US
Content-Language: en-US
X-MS-Has-Attach:
X-MS-TNEF-Correlator:
x-mailer: Apple Mail (2.3826.700.81.1.4)
Authentication-Results-Original: dkim=none (message not signed)
 header.d=none;dmarc=none action=none header.from=arm.com;
x-ms-traffictypediagnostic:
	DU2PR08MB7272:EE_|AM8PR08MB6546:EE_|DU2PEPF0001E9C6:EE_|AS2PR08MB9320:EE_
X-MS-Office365-Filtering-Correlation-Id: d569e302-a090-439f-380a-08de957ab8d6
x-checkrecipientrouted: true
nodisclaimer: true
X-MS-Exchange-SenderADCheck: 1
X-MS-Exchange-AntiSpam-Relay: 0
X-Microsoft-Antispam-Untrusted:
 BCL:0;ARA:13230040|376014|366016|1800799024|56012099003|38070700021|22082099003|18002099003;
X-Microsoft-Antispam-Message-Info-Original:
 j/DIS/D8DUT1wwT+yi+QWDtPBPalJh+hIlyzZWx2unaOp87mGthmFjSvdwJCN/402Td3snMKXzSxJzyE6CkQcwhyNUJBM17s09Gp28K9ZuAcqswdYApS+b79p0uaL5Mru1vhvdIx42r5EwTKyxRfb0K7ZUSTA7hsxvxw/nkTOr7twqY1L15T8b6DByJ6HM6dZ4Auo4T1eW6fnSSQUhPNr7BVcK6j3gvDWgccn5Qv1WlJV+XIbF0ow0Sa5eHk5jUFqOlY+VocetkNJfANNIWbG6cV4OPdMs+uSEuu6ebP/TNLAoUbjhJM31RKoogkiuRfhDKeOaWWS5n2AhLHeLCUdi4yd6xmjq/vfUI/713JUJZiwhmrBSZ5KElnFZcgOkvC4evTBP99E5cOHFzg6U2FHg1yQm11vOQgAQtFzSM53YmekeM93ITX6Y3emuc70GhiSTpdwkV+OeA9cQ5bTp+sNZlnumUf9s2hiN87lVDIo6EG8IPMsJ6+YPjhnsBx+cCxyXCiGbrhwTc5uPhzI10JG85y6PoO9XaBVvEjaQoCzs6LMKAkz3QaFhMgV6lzimAtNCB7nXcKpg6zK2kwrhPyz7bTKcJe9YmWQB0rotkQ3nUrPMLHCCDRFgKfSC/wPnAKujF35c3rCOugR5Ul3QLFk6rGmCuo8O9XUtqeq7/dO7afO1cj0BtIYPuwPUuWJb8yB0uwvP4WUa9vAOM5NzJvBgfFT1vE0V25emQsHphiEIxuGu7RIvtNLA5hTsPF1eHFoSus/pZAKzEdkdfAgLhAIb1/1eD+aeUXb7ljxqQez1g=
X-Forefront-Antispam-Report-Untrusted:
 CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:DU2PR08MB7272.eurprd08.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(376014)(366016)(1800799024)(56012099003)(38070700021)(22082099003)(18002099003);DIR:OUT;SFP:1101;
Content-Type: text/plain; charset="us-ascii"
Content-ID: <CA97545DD63005458BB23B70344E52F2@eurprd08.prod.outlook.com>
Content-Transfer-Encoding: quoted-printable
MIME-Version: 1.0
X-Exchange-RoutingPolicyChecked:
 HkFEwcI00r4hWWJ1pWMzbKQLRJOW1awcj4iVHNivVWAzdmF/58rSpOuYrJlUc8zMsehgQgjK3Wdyd+U56gHERcCJKFedDJz/qToQEMokem7qPpV7fPk3YskRVyqPp0b1qJBX7FpWNRJdoD7h1G8oERkFCK6wrG9Gfs73UxoO/I9VB7G0JBv3vl5EcEWZBPozjxMBiOW8+s0ga/fPRFq9RoR9QrNawmKfz04z8f4ke1OgTcSmEazmflAohmS38ixdGAZCvb97hZmOWSA3mrKYIUoVTYQ5T07k8LLZdQ29ISN07C6Xkw1GTfc/lJ7JqgkiKo49LNY9ni0NTaHzp+oEog==
X-MS-Exchange-Transport-CrossTenantHeadersStamped: AM8PR08MB6546
X-EOPAttributedMessage: 0
X-MS-Exchange-Transport-CrossTenantHeadersStripped:
 DU2PEPF0001E9C6.eurprd03.prod.outlook.com
X-MS-PublicTrafficType: Email
X-MS-Office365-Filtering-Correlation-Id-Prvs:
	00cb39c5-8d14-4506-8db1-08de957a9243
X-Microsoft-Antispam:
	BCL:0;ARA:13230040|82310400026|35042699022|376014|36860700016|1800799024|14060799003|56012099003|22082099003|18002099003;
X-Microsoft-Antispam-Message-Info:
	aJmfcubT3I3MX7wG4WcHyN9HskNnebgM/QpAL3DfqCAWzqxJTOd1TQzXNIkMlQ6R5l6MitbOrZx4ss1exaIXQE8IeUttHhsoaTdYKU//1ut4l97bw+6m5ca8QyPp2/6RSn1CIqZXRJ9cmXudnK55nKOpE7LM2dyXW4x9ZR3p4mKUq+Ki4riYb9/P05AXrI5rujxRENXYy+gt5yjXadTIMONaGMYM0GLjis7eYKPjue/kvhFyEeZibRx6naj4bJey7VsfHhD/uc5gQ+hboxJrOtFs1mhWUPIKlPeb/dBFQqiNP1uV4wXcfGXm6fp7rISbAdPqDXHrn8ji2uo0mYHbDkBV6mhaVJ+ZNsT4NvVi0LLsiDQYMJ32ntdAkzYaBiKO0rW8lWAtsmKFPvj2bETttJc56IR/wMeySoLrKXSU0R4W6KwwG8cwVDlm8mNloIZiyw/7D+4dremUI+JjWEHjbCtbJXPbmq4G/jNoq51608/gS8nVbU9JfHobFk/VtLYGUdTU5ibP5KUXlxX84aMazEfZtw1ScAIKj5bfRbiDfFuUK49mgymvIJSNfnPPTOvjVv9yIfJttbgsVRziiq/PNPoYPPeoZqZ47P+TUvVxfydajZW2ZWP9749onpVO61UDYtlzMqAaqjnPhfxutPBDdE3FEm0T4qRvvl1T0QoW0FN13xJEsG9EgDmX7wpZMGGyYYJwt4HBoBV1GiSvSSbHEEQ0Z2Ypl1Kt/tS9T1TSIvCCdRqQmXru9u5VUX1wlUjs6DJOp/rPJgsnr8oRxc582w==
X-Forefront-Antispam-Report:
	CIP:4.158.2.129;CTRY:GB;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:outbound-uk1.az.dlp.m.darktrace.com;PTR:InfoDomainNonexistent;CAT:NONE;SFS:(13230040)(82310400026)(35042699022)(376014)(36860700016)(1800799024)(14060799003)(56012099003)(22082099003)(18002099003);DIR:OUT;SFP:1101;
X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1
X-MS-Exchange-AntiSpam-MessageData-0:
	QCksOqbixVEpTvS9hZR23IqJQvFnnQ86AU85cemBFlcWNWBmSHodV/y0QzgYNYrUhiONm4q+NJkRuqTLxmSTGGSffDYK3QtBgyjRoqJRU3f0mnH1gKG9O2VAz8E4+Hf/YSQOv4wlCOK+NqDVU2v0tR9bEso3rAi/5tCmMgfAGamiyPbywWljbW3CqKa6dl8zD626GtGhGgP9Qbr621TEFGOfF2lS5w8STK8V5vhR3G9hIf6l74UQG3u7U7DIli6xcDqbTUdHEIl6ZIhNllBYr1o8XanMo3WRMoaY5ofg4S0kxiZw32Ephc/Lv9CFyfsgCGXU0c3hOkG4aXua1xkaA8v0+hgXchxk0Kwro5vnXXjTbkppD6xeNtQuR41h6i6KFcBjuOFvIiSmpUMMnAicfFm9/DUOYG7IiDXt7nQO0aTE7j8fjKN5qeM272mYmZmg
X-OriginatorOrg: arm.com
X-MS-Exchange-CrossTenant-OriginalArrivalTime: 08 Apr 2026 14:25:45.1709
 (UTC)
X-MS-Exchange-CrossTenant-Network-Message-Id: d569e302-a090-439f-380a-08de957ab8d6
X-MS-Exchange-CrossTenant-Id: f34e5979-57d9-4aaa-ad4d-b122a662184d
X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=f34e5979-57d9-4aaa-ad4d-b122a662184d;Ip=[4.158.2.129];Helo=[outbound-uk1.az.dlp.m.darktrace.com]
X-MS-Exchange-CrossTenant-AuthSource:
	DU2PEPF0001E9C6.eurprd03.prod.outlook.com
X-MS-Exchange-CrossTenant-AuthAs: Anonymous
X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem
X-MS-Exchange-Transport-CrossTenantHeadersStamped: AS2PR08MB9320
X-purgate-ID: tlsNG-16d1c6/1775658350-5EB333D8-4DD0E899/0/0
X-purgate-type: clean
X-purgate-size: 5436

Hi Ayan,

> On 18 Mar 2026, at 14:09, Ayan Kumar Halder <ayan.kumar.halder@amd.com> w=
rote:
>=20
> One key requirement of Xen functional safety is to reduce the number
> of lines of code to be safety certified. Besides, a safety certified
> Xen requires a static hardware configuration to be defined. This static
> hardware configuration is described as per the test hardware/emulator
> hardware configuration against which Xen is verified.
>=20
> Introduce GICV3_NR_LRS with the two aims in mind:
> 1. User should set the number of GICV3 list registers as per the test
> hardware so that the unwanted code can be removed using GCC's dead
> code elimination or preprocessor's config.
> 2. By doing #1, one can ensure that there is no untested code due to
> unsupported hardware platform and thus there is no safety impact due
> to untested code.
>=20
> However if the user does not set GICV3_NR_LRS, then it is set to 0.
> Thus Xen will fallback to the default scenario (i.e. read the hardware
> register to determine the number of LRS).
>=20
> 1. In gicv3_save_lrs()/gicv3_restore_lrs(), use the number of list
> registers from GICV3_NR_LRS (if defined) instead of gicv3_info.nr_lrs.
> This ensures that if the hardware does not support more than 4 LRs
> (for example), the code accessing LR 4-15 is never reached. The
> compiler can eliminate the unsupported cases as the switch case uses a
> constant conditional.
>=20
> 2. RAZ/WI for the unsupported LRs.
>=20
> Signed-off-by: Ayan Kumar Halder <ayan.kumar.halder@amd.com>
> Signed-off-by: Michal Orzel <michal.orzel@amd.com>
> ---
> Changelog:
>=20
> v1 - 1. s/lrs/LRS
> 2. Implement RAZ/WI instead of panic
>=20
> Few comments which were not addressed
> 1. Do "gicv3_info.nr_lrs to LRS" in gicv3_hyp_init() and keep the code
> unchanged in gicv3_save_lrs()/gicv3_restore_lrs() -- This prevents the
> compiler from doing dead code elimination as the switch condition cannot
> be evaluated at compile time.
> I am not sure how to get around this issue.
>=20
> xen/arch/arm/Kconfig  |  9 +++++++++
> xen/arch/arm/gic-v3.c | 14 ++++++++++++--
> 2 files changed, 21 insertions(+), 2 deletions(-)
>=20
> diff --git a/xen/arch/arm/Kconfig b/xen/arch/arm/Kconfig
> index 2f2b501fda..6540013f97 100644
> --- a/xen/arch/arm/Kconfig
> +++ b/xen/arch/arm/Kconfig
> @@ -276,6 +276,15 @@ config PCI_PASSTHROUGH
>=20
> endmenu
>=20
> +config GICV3_NR_LRS
> + int "Number of GICv3 Link Registers supported" if EXPERT
> + depends on GICV3
> + range 0 16

16 is the maximum supported since ICH_VTR_EL2.ListRegs is 4 bits [1],=20
however how are we handling the case when GICV3_NR_LRS is greater
than the supported number of LR registers?

Shall we check that in gicv3_hyp_init()?

> + default 0
> + help
> +  Controls the number of Link registers to be accessed.
> +  Keep it set to 0 to use a value obtained from a hardware register.
> +
> menu "ARM errata workaround via the alternative framework"
> depends on HAS_ALTERNATIVE
>=20
> diff --git a/xen/arch/arm/gic-v3.c b/xen/arch/arm/gic-v3.c
> index bc07f97c16..eaae95eb4d 100644
> --- a/xen/arch/arm/gic-v3.c
> +++ b/xen/arch/arm/gic-v3.c
> @@ -51,6 +51,8 @@ static DEFINE_PER_CPU(void __iomem*, rbase);
> #define GICD                   (gicv3.map_dbase)
> #define GICD_RDIST_BASE        (this_cpu(rbase))
> #define GICD_RDIST_SGI_BASE    (GICD_RDIST_BASE + SZ_64K)
> +#define LRS                    (CONFIG_GICV3_NR_LRS ?: \
> +                                gicv3_info.nr_lrs)
>=20
> /*
>  * Saves all 16(Max) LR registers. Though number of LRs implemented
> @@ -59,7 +61,7 @@ static DEFINE_PER_CPU(void __iomem*, rbase);
> static inline void gicv3_save_lrs(struct vcpu *v)
> {
>     /* Fall through for all the cases */
> -    switch ( gicv3_info.nr_lrs )
> +    switch ( LRS )
>     {
>     case 16:
>         v->arch.gic.v3.lr[15] =3D READ_SYSREG_LR(15);
> @@ -121,7 +123,7 @@ static inline void gicv3_save_lrs(struct vcpu *v)
> static inline void gicv3_restore_lrs(const struct vcpu *v)
> {
>     /* Fall through for all the cases */
> -    switch ( gicv3_info.nr_lrs )
> +    switch ( LRS )
>     {
>     case 16:
>         WRITE_SYSREG_LR(v->arch.gic.v3.lr[15], 15);
> @@ -178,6 +180,10 @@ static inline void gicv3_restore_lrs(const struct vc=
pu *v)
>=20
> static uint64_t gicv3_ich_read_lr(int lr)
> {
> +    /* RAZ for unsupported LR */
> +    if ( lr >=3D LRS )
> +        return 0;
> +
>     switch ( lr )
>     {
>     case 0: return READ_SYSREG_LR(0);
> @@ -203,6 +209,10 @@ static uint64_t gicv3_ich_read_lr(int lr)
>=20
> static void gicv3_ich_write_lr(int lr, uint64_t val)
> {
> +    /* WI for unsupported LR */
> +    if ( lr >=3D LRS )
> +        return;
> +
>     switch ( lr )
>     {
>     case 0:

Now, since we are using CONFIG_GICV3_NR_LRS or gicv3_info.nr_lrs in gicv3_s=
ave_lrs/gicv3_restore_lrs,
there are other part of the codebase using nr_lrs (gic_get_nr_lrs() is one =
of them), but all the callers of that
function will use the HW nr_lrs and not the CONFIG_GICV3_NR_LRS, so I think=
 some work needs to be done
to align them or there will be mismatches at runtime with possible loss of =
information.


[1] https://developer.arm.com/documentation/111179/2025-09_ASL1/AArch64-Reg=
isters/ICH-VTR-EL2--Interrupt-Controller-VGIC-Type-Register

Cheers,
Luca




From xen-devel-bounces@lists.xenproject.org Wed Apr 08 15:21:33 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 08 Apr 2026 15:21:33 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1276280.1561799 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wAUiY-0000CD-KI; Wed, 08 Apr 2026 15:21:22 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1276280.1561799; Wed, 08 Apr 2026 15: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 1wAUiY-0000C6-Hb; Wed, 08 Apr 2026 15:21:22 +0000
Received: by outflank-mailman (input) for mailman id 1276280;
 Wed, 08 Apr 2026 15:21:21 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <jbeulich@suse.com>) id 1wAUiX-0000C0-NB
 for xen-devel@lists.xenproject.org; Wed, 08 Apr 2026 15:21:21 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wAUiW-00Fs0p-V0
 for xen-devel@lists.xenproject.org; Wed, 08 Apr 2026 17:21:20 +0200
Received: from [10.42.69.8] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <jbeulich@suse.com>)
 id 69d67263-e002-0a2a0a5209dd-0a2a4508cc20-28
 for <xen-devel@lists.xenproject.org>; Wed, 08 Apr 2026 17:21:20 +0200
Received: from [209.85.221.51] (helo=mail-wr1-f51.google.com)
 by tlsNG-c1860d.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.0)
 (envelope-from <jbeulich@suse.com>)
 id 69d67270-fab6-0a2a45080019-d155dd33bdd2-3
 for <xen-devel@lists.xenproject.org>; Wed, 08 Apr 2026 17:21:20 +0200
Received: by mail-wr1-f51.google.com with SMTP id
 ffacd0b85a97d-43cfd96354aso3984002f8f.1
 for <xen-devel@lists.xenproject.org>; Wed, 08 Apr 2026 08:21:20 -0700 (PDT)
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-43d1e2c54bdsm59936427f8f.16.2026.04.08.08.21.19
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Wed, 08 Apr 2026 08:21:19 -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=google header.d=suse.com header.i="@suse.com" header.h="Content-Transfer-Encoding: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=1775661680; x=1776266480; darn=lists.xenproject.org;
        h=content-transfer-encoding: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;
        bh=nN7jnZnW6PGIJXI6Q5gGVQuBuev2kT9V5ckxdBWgIuc=;
        b=OQVc9Dbdrz8gC1YkGpORVPRrfrTFwQImyJNV5kI8qH4mcYIayKOSz+gApS39kcBxvy
         UkY09zS48PPQvXoxxYyyRTi+H9wjcR7Ubmc4EVjPlDHEMjpiGDp/GIGsEi3Ys0a1gu+O
         ggbfEbmACxBwBKLUCNAjRKdRTwGWw1SrWbApmasVoF8bGqCw1ISXSMDstdwQirJNblzd
         hEbTXjiqcOuJy7utGiFrU7Xc7cSs558YfS+UZBZ/mZyfjibvXAMioCsu1gOVmWMjzQAS
         eT3nLSj14Alu+muI083waoSQZCMoCmyJNRJ986qHbEf8axq4JcjUqJd7KqPeZa3j1rRV
         smhA==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20251104; t=1775661680; x=1776266480;
        h=content-transfer-encoding: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;
        bh=nN7jnZnW6PGIJXI6Q5gGVQuBuev2kT9V5ckxdBWgIuc=;
        b=d3OFB/1PCd5cXvZE2S4JdPRxCsPSS8N5sZJ6kaYNFFRU3Ow0t3zrIFmBBOGYq+9aXI
         Ka58z3xQjfflL/rkCmb9FGaWc7u+Q3L3y4TBxVzCOi3QPH4YSP3+GhZqyZv15scpL73r
         E2kiytgR1f7q8AMZqlwZYi+oy5Wg1yNJuHeVA9TXEAlfJMeU04bALmCOMNhfbvyuPcGW
         iNag3kdypuEyIrlrjZZqgnVsX3k60ZETaWg3VSdQhTAro5CaRHBMVn/2DdITKHw+CIAM
         h+9ct3znselF4eMcmXq0lbLd9gU9EEM9yzEWfY8TsOYKEoZVwF8iE2ZkDcK6cLwHt+qR
         NxbA==
X-Forwarded-Encrypted: i=1; AJvYcCWfDuIeMzbTJF0MtDPDs/20QiH09z9UwmHZ/n8lpOJiIxGw25JTE6ajQMfBgCRf++qaKrw0PWickEc=@lists.xenproject.org
X-Gm-Message-State: AOJu0YzbeRFPiFz4sRyLFbElvB+awNaAroVUo0ffJbBdbHim3iyUmXUj
	mmLQyC5Ngj0gG4gKkK0xCPIBBYRdupC4sPvNo31gfnL13tKNu4WVwLVUoAUP7vbF/w==
X-Gm-Gg: AeBDiest6IGaUtBOI8muvIedPz2lzf8wDJm7QG+tlTfLF3nDmcc8LzuPPPO3EzA+jVL
	ht0bEdvNHFX4ymBlDeKqAuB+CosTyNqnFN2AQ2eVqBySZi9O3T2e5sYq6os4HHAyfVEmLS8e47w
	DXue9F803O/4hhrEWLNTxekQdwAg6SQggbpl7ZZI/3YBFO/Xd35ZBXEHkoeqxs7krVJGc7VJRVH
	u4+29HEU1SW2aVazvtj1yz4C9Z+om1hX2Y7ltiTF+0Tlz8kKVjUCsLlpMOnTEsbdKF4TVFE53gY
	M1ikFMBorrDNPnpFUWPELy2z+dhzNe0CBNCNTR4BKN+j/koagv9ppjYplxwHqX4BF9Bw8WSa3Dx
	O6lbeST4SSM+BeTilW0yie6clIubnFx6kSBm9ylYonsjaSr9aPbfBXG8MjVGpqTkb9KJlVevstx
	QUgr5m16B24dsYvyiaHorQPWLn4S3GjfLs3czG1+1+bnfI7aZd4ji0wVJdkkN6NBwmwrPYrRntG
	WfBT8FnL/Q+LR0=
X-Received: by 2002:a05:6000:2dc1:b0:43d:127b:7e81 with SMTP id ffacd0b85a97d-43d292d33e0mr32003321f8f.28.1775661679988;
        Wed, 08 Apr 2026 08:21:19 -0700 (PDT)
Message-ID: <b985f554-0338-4426-8981-0613f112f166@suse.com>
Date: Wed, 8 Apr 2026 17:21:18 +0200
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH v1 1/3] x86/hap: Wait for remote CPUs during TLB flush
To: Ross Lagerwall <ross.lagerwall@citrix.com>
Cc: Andrew Cooper <andrew.cooper3@citrix.com>,
 =?UTF-8?Q?Roger_Pau_Monn=C3=A9?= <roger.pau@citrix.com>,
 xen-devel@lists.xenproject.org
References: <20260401163521.3603665-1-ross.lagerwall@citrix.com>
 <20260401163521.3603665-2-ross.lagerwall@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: <20260401163521.3603665-2-ross.lagerwall@citrix.com>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 7bit
X-purgate-ID: tlsNG-c1860d/1775661680-F7149497-C060318B/0/0
X-purgate-type: clean
X-purgate-size: 587

On 01.04.2026 18:35, Ross Lagerwall wrote:
> A future change to on_selected_cpus() will change the semantics of the
> wait parameter so that it doesn't wait for remote CPUs to "check in" if
> wait == 0. Adjust the call here to retain the existing behaviour so it
> continues to wait for the remote CPUs to VMExit.

Doesn't this go too far though? IOW wouldn't we better make the "wait"
parameter a tristate then?

As to the semantic change, peeking at patch 2 I don't see you discussing
the safety of doing so for the several other callers that also pass 0
right now.

Jan


From xen-devel-bounces@lists.xenproject.org Wed Apr 08 15:27:12 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 08 Apr 2026 15:27:12 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1276289.1561807 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wAUo6-0000lA-6V; Wed, 08 Apr 2026 15:27:06 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1276289.1561807; Wed, 08 Apr 2026 15:27: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 1wAUo6-0000l3-3i; Wed, 08 Apr 2026 15:27:06 +0000
Received: by outflank-mailman (input) for mailman id 1276289;
 Wed, 08 Apr 2026 15:27:05 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92) id 1wAUo5-0000kx-1C
 for xen-devel@lists.xenproject.org; Wed, 08 Apr 2026 15:27:05 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wAUo3-006TgT-Ul
 for xen-devel@lists.xenproject.org; Wed, 08 Apr 2026 17:27:03 +0200
Received: from [10.42.69.8] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <oleksii.kurochko@gmail.com>)
 id 69d673a4-e002-0a2a0a5209dd-0a2a45089a66-34
 for <xen-devel@lists.xenproject.org>; Wed, 08 Apr 2026 17:27:03 +0200
Received: from [209.85.218.50] (helo=mail-ej1-f50.google.com)
 by tlsNG-c1860d.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.0)
 (envelope-from <oleksii.kurochko@gmail.com>)
 id 69d673c7-fab6-0a2a45080019-d155da32bd90-3
 for <xen-devel@lists.xenproject.org>; Wed, 08 Apr 2026 17:27:03 +0200
Received: by mail-ej1-f50.google.com with SMTP id
 a640c23a62f3a-b9c3e2cf3c0so1015691966b.1
 for <xen-devel@lists.xenproject.org>; Wed, 08 Apr 2026 08:27:03 -0700 (PDT)
Received: from [192.168.1.6] (user-109-243-69-121.play-internet.pl.
 [109.243.69.121]) by smtp.gmail.com with ESMTPSA id
 a640c23a62f3a-b9c3cff1e54sm658555366b.46.2026.04.08.08.27.01
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Wed, 08 Apr 2026 08:27:02 -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=20251104 header.d=gmail.com header.i="@gmail.com" header.h="Content-Transfer-Encoding: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=20251104; t=1775662023; x=1776266823; darn=lists.xenproject.org;
        h=content-transfer-encoding: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;
        bh=DNkbyxOJgg8AOtR8HKDfMqNt8lwrmOcN6PGW4ES7vyA=;
        b=CJRYfFgjjyZwSNTT8G2NRx5w3NHk2mAFhFIYj1K+AzIVE75T/t33lFbx6UnT3SRb9+
         tEFoWauze7Pw3GHub423a+78uyAmzTQrAmMnqitah5O7s4cFHh0ZkCUWsjy6KRUlOrFN
         HCgGb64u7xTIwBqaBSQS4uWuzCKLmUIyTjWo/zI+d0fvtp0KH6zoBEnleUqvc54EDOp3
         rP+uCgmsnpsHFi0KyEhRZJDJKZc6rq0KnSzM8ny014wdt/MAMKoRhAyhOPQE9Tc5m6XE
         /nwLtXcWdVAC+94rk4k2vcd7kSODG54rMYuWDOpmBJvwbBGjh9Fs8LUn6jx5KPCj9mGs
         Zkig==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20251104; t=1775662023; x=1776266823;
        h=content-transfer-encoding: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;
        bh=DNkbyxOJgg8AOtR8HKDfMqNt8lwrmOcN6PGW4ES7vyA=;
        b=F0FOJt9vfzaEmwXnorML6DHCCsU87+N/DTI/2eGMDWDpeIFyAQ1J+f7VgAJbmQ+RLR
         czsnYzfob9EU9NmmLkCnNhgdQ1QV/Bz/WfOhr/XROlMFmoQ9Zsgt/MZsi/yXJRYrdOYA
         kQmSZlOUPfMk+e58F6ckHnI2VZGvJIbgV+YIwGJd0gPhw/X18tW6QPL99zjdoeMBY8tW
         pfGHVCh7QSvfA2vPycw3TSqHXox+n02L+jfruarXmEdLlkqczGsUG6e1ehJ5Fhr+dVnx
         2caGol5zgrGsWGTwKo5FAzbBN5nKdViJ453Twslvt452Jco9BfkgTONmgyrJ6n/RKLh4
         yjrw==
X-Forwarded-Encrypted: i=1; AJvYcCV4SQjuLyMw5BV7Sk5fVvBlAnMqYvnFrOjgxvMKAgKnWnxzkB6faOGwG2tZOhTp5e5e2Bsno+titdU=@lists.xenproject.org
X-Gm-Message-State: AOJu0YyPpsWVrLxYp4w1Yp9yqXK2VgK2d9978vXYmwK/0avt4PSMHwxA
	XvOU2ZPQWtV7G+njWmO/nuE2i4zJNNtGlDUiSPLql4sHD1Ss0lADkCtT
X-Gm-Gg: AeBDieu9bLrsDQfA+NhqJssHdd0826e8MiAXRW2YQg6hk4p89+VX4onrC5PpgnHwLU5
	FwFSe8ISvodVgJZPM/eXuaddJl67HRKWf9+Um2x2cRgzeGEQri3GiGnKCXnLLddHdlwZ5yPV/QG
	keUfoqgRqzBmlvuQcgphOEQDhl9C7xdvGU7sASd4Qgpjge0MpIhnntLvh423wltu9MK0MJ6N1TS
	ELj+qA0rI7EdE9d1j3i0Za7+XTU3l+0JrRBNfXC+gD3ZokBk8qAuUTnAdvAUTAlcNZEkAUffhgA
	Puq/b0pG8eqdfejfC42In2th0Xo2McuDssxU2fbINzdMHgth87Z/yCcvi1uv7njloS7gHmW7/ck
	zT0jhwXFEvJT/F32S7IO9h8mP7gv4YanaLkinXafmcFR7a9gGjpjPL3N9S/DqbKfY9p6SRSR8pk
	hExvw7kqWByESZx1vCHHbt3/h5fQdnn7DHtuJJMZyBUuxUNd8GwaNzMGKSKsGW7FLyMU/a3n/dm
	PY=
X-Received: by 2002:a17:907:3e25:b0:b9c:5672:852 with SMTP id a640c23a62f3a-b9c67a2e990mr1154786666b.40.1775662023063;
        Wed, 08 Apr 2026 08:27:03 -0700 (PDT)
Message-ID: <e8cd37a7-196b-4154-9164-61cb672b2fa4@gmail.com>
Date: Wed, 8 Apr 2026 17:27:01 +0200
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH v5 1/5] x86: Reject CPU policies with vendors other than
 the host's
To: Andrew Cooper <andrew.cooper3@citrix.com>,
 Alejandro Vallejo <alejandro.garciavallejo@amd.com>,
 xen-devel@lists.xenproject.org
Cc: Community Manager <community.manager@xenproject.org>,
 Jan Beulich <jbeulich@suse.com>, =?UTF-8?Q?Roger_Pau_Monn=C3=A9?=
 <roger.pau@citrix.com>, Anthony PERARD <anthony.perard@vates.tech>
References: <20260312112116.22563-1-alejandro.garciavallejo@amd.com>
 <20260312112116.22563-2-alejandro.garciavallejo@amd.com>
 <92d21438-9573-45ce-a589-d292d1c31ecf@citrix.com>
Content-Language: en-US
From: Oleksii Kurochko <oleksii.kurochko@gmail.com>
In-Reply-To: <92d21438-9573-45ce-a589-d292d1c31ecf@citrix.com>
Content-Type: text/plain; charset=UTF-8; format=flowed
Content-Transfer-Encoding: 8bit
X-purgate-ID: tlsNG-c1860d/1775662023-F5159497-356FFFE1/10/73395122804
X-purgate-type: spam
X-purgate-size: 3379



On 3/12/26 10:01 PM, Andrew Cooper wrote:
> On 12/03/2026 11:21 am, Alejandro Vallejo wrote:
>> While in principle it's possible to have a vendor virtualising another,
>> this is fairly tricky in practice and comes with the world's supply of
>> security issues.
>>
>> Reject any CPU policy with vendors not matching the host's.
>>
>> Signed-off-by: Alejandro Vallejo <alejandro.garciavallejo@amd.com>
>> Reviewed-by: Jan Beulich <jbeulich@suse.com>
>> ---
>>   CHANGELOG.md                             |  5 +++++
>>   tools/tests/cpu-policy/test-cpu-policy.c | 27 ++++++++++++++++++++++++
>>   xen/arch/x86/lib/cpu-policy/policy.c     |  5 ++++-
>>   3 files changed, 36 insertions(+), 1 deletion(-)
>>
>> diff --git a/CHANGELOG.md b/CHANGELOG.md
>> index c191e504aba..90ba5da69e4 100644
>> --- a/CHANGELOG.md
>> +++ b/CHANGELOG.md
>> @@ -23,6 +23,11 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/)
>>      - Xenoprofile support.  Oprofile themselves removed support for Xen in 2014
>>        prior to the version 1.0 release, and there has been no development since
>>        before then in Xen.
>> +   - Domains can no longer run on a system with CPUs of a vendor different from
>> +     the one they were initially launched on. This affects live migrations and
>> +     save/restore workflows across mixed-vendor hosts. Cross-vendor emulation
>> +     has always been unreliable, but since 2017 with the advent of speculation
>> +     security it became unsustainably so.
> 
> c/s 0f1cb96e9785294f149ab3c7feb90c0eb9daeede was when it got added to Xen.
> 
> I'm certain there's a whitepaper somewhere from AMD about this, but I
> can't locate it.  It was partly marketing about how you could buy AMD
> hardware (which was cheaper) and live-migrate your Intel VMs without
> interruption.  It would have been nice to find for posterity.
> 
> For the changelog, can I suggest this:
> 
> diff --git a/CHANGELOG.md b/CHANGELOG.md
> index c191e504aba9..377711d40953 100644
> --- a/CHANGELOG.md
> +++ b/CHANGELOG.md
> @@ -23,6 +23,12 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/)
>      - Xenoprofile support.  Oprofile themselves removed support for Xen in 2014
>        prior to the version 1.0 release, and there has been no development since
>        before then in Xen.
> +   - Cross-vendor support; guests can now only be configured as the same
> +     vendor as the host CPU.  When added back in 2009, with enough trickery
> +     Intel and AMD CPUs could be made to be compatible enough to live migrate
> +     a guest, but the vendors have been diverging since then in ways that Xen
> +     cannot compensate for, and the advent of speculative security issues has
> +     put to rest any possibility of this being a viable option.
>   
>    - Removed xenpm tool on non-x86 platforms as it doesn't actually provide
>      anything useful outside of x86.
> 
> 
> which is closer to the style of the surrounding bullet points.  Also
> s/domain/guest/ which is a subtle but important distinction made by the
> Security Team when discussing configurations.

With applying of suggested changes to CHANGELOG.md:
  Acked-by: Oleksii Kurochko <oleksii.kurochko@gmail.com> # CHANGELOG.md

Thanks.

~ Oleksii


From xen-devel-bounces@lists.xenproject.org Wed Apr 08 15:41:17 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 08 Apr 2026 15:41:17 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1276299.1561817 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wAV1i-0003wN-BY; Wed, 08 Apr 2026 15:41:10 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1276299.1561817; Wed, 08 Apr 2026 15:41: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 1wAV1i-0003wG-8c; Wed, 08 Apr 2026 15:41:10 +0000
Received: by outflank-mailman (input) for mailman id 1276299;
 Wed, 08 Apr 2026 15:41:08 +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 1wAV1g-0003w8-7y
 for xen-devel@lists.xenproject.org; Wed, 08 Apr 2026 15:41:08 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wAV1d-006FNh-GL
 for xen-devel@lists.xenproject.org; Wed, 08 Apr 2026 17:41:07 +0200
Received: from [10.42.69.8] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <andrew.cooper@citrix.com>)
 id 69d676fb-5cb7-0a2a0a5109dd-0a2a4508d96a-36
 for <xen-devel@lists.xenproject.org>; Wed, 08 Apr 2026 17:41:06 +0200
Received: from [40.107.208.37]
 (helo=PH0PR06CU001.outbound.protection.outlook.com)
 by tlsNG-c1860d.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.0)
 (envelope-from <andrew.cooper@citrix.com>)
 id 69d67711-fab6-0a2a45080019-286bd0254d0b-3
 for <xen-devel@lists.xenproject.org>; Wed, 08 Apr 2026 17:41:06 +0200
Received: from CH8PR03MB8275.namprd03.prod.outlook.com (2603:10b6:610:2b9::7)
 by PH8PR03MB7173.namprd03.prod.outlook.com (2603:10b6:510:258::8)
 with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9745.28; Wed, 8 Apr
 2026 15:41:03 +0000
Received: from CH8PR03MB8275.namprd03.prod.outlook.com
 ([fe80::a70d:dc32:bba8:ce37]) by CH8PR03MB8275.namprd03.prod.outlook.com
 ([fe80::a70d:dc32:bba8:ce37%6]) with mapi id 15.20.9769.018; Wed, 8 Apr 2026
 15:41:03 +0000
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@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=DohrcPqqATpazM++c4pI1eO/W9X53qRry2FXpOVkibc6tc9XwHVeZxAER5GnOqa+ciIcDDKyOFXF2oz9IYfdJ4yIf9et2MEjHajQFeOWu6rrj5zjFoNkX7Ud1AHFIDaYA2C770/5QK8obNorVRa+SOWofmve7qXsM1bNFAjXOkqY6q+sKmh8zoRCTcdh6pvcDuoOqGQ4gRz1lvRg5RowKLrDyFxKCvSUk/BMFbEDXH8e8hGametjO+y609qZ6IRFJ1bLjMBnbWpUe6t2+g/nESRgSCWfgvxkjn29bodAgJ7lzLZTJafHecs1LA7j8nUkHR+u69RZ/6GAZRpo6P5X+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=Tr/Y0Gz3chxWgm4AMzCiZ9/xFQowDOJyVT6SkDajFLo=;
 b=BoLTdmcpWp1hFfCOzNZUDQN1XS7jU2cbGYf+p7BZjr/3vWIyL4wjCrvwFjpha71tH/AJf1mU97j13/camsZ1aP88xICT8bfoXO8S4Ov4EmqH4tSXhQiS1EVIIOyS67+t8KKuQ4/L2lvpBAD+Q24nE5PI/s0DfZJU3WN1eq6iTtDfidOepbX6+QELcKFiHJ6jpX78+heFrCjPFN+0ygs9Z6rTiG2KEwqtgS2KrNddqUEiBnNJohpwyJDM+svOseqs4CfVyznH44byCJi6VvmYpZsn62Z0e35svQWRD78Z2mdJEiFHXf7IdY0tp+itig2FVOmm5yhU3KCrgsfz8inORA==
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=Tr/Y0Gz3chxWgm4AMzCiZ9/xFQowDOJyVT6SkDajFLo=;
 b=Nu3mv6NHVonWtwdLJmwvi2RkFroOLcsO64F17TuX7LF0uyPPWPhDmNVYCkdwUL9FC188AouoebTtltkHwFNwc3CbRQf0I9Gmew24jn2/9NuCMgMFoT5XjH/WyNjahYKwBIt1/7eWENbgeLjgMB2j2DEZkQ8pnnXz7hCnuvLDr5c=
Authentication-Results: dkim=none (message not signed)
 header.d=none;dmarc=none action=none header.from=citrix.com;
Message-ID: <bb6caa97-b3b5-465e-8690-c3aef061d885@citrix.com>
Date: Wed, 8 Apr 2026 16:40:59 +0100
User-Agent: Mozilla Thunderbird
Cc: Andrew Cooper <andrew.cooper3@citrix.com>,
 Harry Ramsey <harry.ramsey@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>
Subject: Re: [PATCH v3 2/3] arm/mpu: Introduce `v8r_el1_msa` device tree
 property for domains
To: Luca Fancellu <luca.fancellu@arm.com>, xen-devel@lists.xenproject.org
References: <20260408135531.1744388-1-luca.fancellu@arm.com>
 <20260408135531.1744388-3-luca.fancellu@arm.com>
Content-Language: en-GB
From: Andrew Cooper <andrew.cooper3@citrix.com>
In-Reply-To: <20260408135531.1744388-3-luca.fancellu@arm.com>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
X-ClientProxiedBy: LO4P265CA0266.GBRP265.PROD.OUTLOOK.COM
 (2603:10a6:600:37c::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_|PH8PR03MB7173:EE_
X-MS-Office365-Filtering-Correlation-Id: ca13cb5c-6fc6-455f-ff78-08de95853d85
X-MS-Exchange-SenderADCheck: 1
X-MS-Exchange-AntiSpam-Relay: 0
X-Microsoft-Antispam:
	BCL:0;ARA:13230040|1800799024|366016|376014|22082099003|56012099003|18002099003;
X-Microsoft-Antispam-Message-Info:
	cku6v61QO9RojNi2aDKQtDa1CqOF+AQt+D//XyHGjKtAuwIBNQJCfn9PIYQQOIfBD0Ez+vsyfqCrzrPxY2xcHB9+A9anrB25b+gELhcp+cnC21H+DED+cEEhCa0YqDdicNvgqeVPs8vtONF1ptyRi6xKcmrGoPjlUiLHSlpHg9i+j+jr25JTM/Eb1Sy3rir6fa49bMlfhX0ND0NuFwpFw58G4+Oe40UikguDqrDi8iBzr1BifoWnOnJhCKZSB1TFHyUbKcF5gqZvTiHZlzsrUyht4RW4xP+wAgGWxdQOK/09py1ehNf/kRFiMKiJlQ0LMcO+VcwNU8t2spOzdrWx8VBX0zyDfVR3I24h+VFhHcaiqC6PVZ0MIJrzBNYEMn//AJ16uzV7/UKVICtnM+Qcsw9up4sg978UB6o3i2riVUvuWKTBfh6HtZN6FJBiTeBekYWalX6tXtqI/hxielyiPCGnQ+XWEU3KbgT4arxYMoWyAMeIdZusOcbv5G+ZU7XbUfhd7e9PerzFU03EoQnF+GMRfY3OVP1bmiSE9xJSe+Eel27O+fG4lAzEB48GMMZOeH1kZxJU99IpAIGC88UMffFBB333yT7YmKiy34VKIgu6HvqfRpFJoGK5ETP/QTI2KxpVDfPgHJ3+21541KQIwW38M75MAcOGDRqhUp2xDcTk5/bME80dP37biA0g5ziDPHaI/X8m95YdWPTdWJOg2Pf56rRUUjfK0wwRixkfNvg=
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)(22082099003)(56012099003)(18002099003);DIR:OUT;SFP:1101;
X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1
X-MS-Exchange-AntiSpam-MessageData-0:
	=?utf-8?B?Q3RRWmdrTDBxL0ZuRVNSMXhNVUx0UnRObGd2MGxPMVpjUnAwZ3g3WGQ2dnMw?=
 =?utf-8?B?Vjl1aXlycVBpTmJJbU9kNmNFYytIRDdoc3h0SExoamh2VGgxait3Ym14NGFO?=
 =?utf-8?B?NXZqa0VGbGFvNUZURm1JVVJGZ21yL0VqR2hGdnZaTVZJbDR2c1B5VG9VQWJP?=
 =?utf-8?B?MVJJTUlWc0NUNmhpUytsRVAvdGNWdHdFYU9odTgvZDlYQ1hLUG5SQ3RkOERL?=
 =?utf-8?B?TDBPNjZXVG5nbFdPc1BKVXVkbmU1YkZJbXNUWXhmMTRDbnB2aFFzZG4yYVJh?=
 =?utf-8?B?U2pHQ2VTV0pFZ0FZSndWU0dBTE9URzhEeUd0c0g0d2lXWXdpQmVWZ3VJdWl4?=
 =?utf-8?B?U3pWUHVNa2tYM2pWLzdRT25nbmhNdHVhc09Wd1VRWWJpWXRiMjhWZUFORGls?=
 =?utf-8?B?YU5OQUJ6Ukk0VHhPbXZKcURPZVpaN0ZDSnl0c2I2MkVBUjRXbTFMSm1YeHVa?=
 =?utf-8?B?S28zZ3hUOGpXZ3ZJdmtDU016RWdTbm1temRNdW45c2hDS0haWkphSzRvdzF5?=
 =?utf-8?B?WGNvR25HQ3k2S0w2aWFscGYvcE0wdDg0MzR0M1dDOGxGM0F5VGFLUXVIOHZ1?=
 =?utf-8?B?R0MvN0RVMVQvWWliZXZSQVk5bjZCZGVIdXdPbjM3UDRZdS8vUjJENHNxc0w2?=
 =?utf-8?B?LzVTcmwramJvdDBwTklHUGhzd3JqYzFNSWt2aTBPVThoZ3YvU0lETndwMmdJ?=
 =?utf-8?B?bE5pVVA3VGIydTV1b2hHY1g2WVc5TFFoSkxKZ0xhKzc4ZVpzVUJkMUVnMENt?=
 =?utf-8?B?bklFN3JJT1AvbGVaT3l3M09YazE5ZmxHU3hucjUzSEpsWEUrbHVpU3psMnRE?=
 =?utf-8?B?dnc2VDB4TlZsN29LVUVYdlhBQ0NHd2RuNE5OckZCZ3BNRVMyUTFmVjlHSzIr?=
 =?utf-8?B?b200NzZPTGN6MmRQYlQwQmEvV0pEQW1XRnQ3TStHZ3RaeXZEd29GelFrSTZm?=
 =?utf-8?B?eVJSd1JGc0hYbmxhL1EvYnAyZjczbWhFVS9yemFrZk12TmNUeTQybHRpd3lU?=
 =?utf-8?B?elFpZ0ZSaGM1eUY0K1lCSDB3S3Q3RzNGVmczdXgxR01vZGZOMitzVE1yaEwz?=
 =?utf-8?B?NnJQTmlzcnRiS2VMZ0tnc20xbmxHZFYvV2pYR1A2OGJVNkp6YkpSQ2F3UzVE?=
 =?utf-8?B?SHM4OGFyQXhtN0JGVG5SMXROTk0rVWdFY1djY1dqMjEvYTZIQTVRN1V6TVhB?=
 =?utf-8?B?dVBjNFNzbTlZWVVQOWZwRFZBdzVhWnlyWjl6M3ZvRjUwK1ZtaEExbm1hdGow?=
 =?utf-8?B?Ymc3dkp0MTVielJiMUEwbWV0eUR6disvL1l4dmMvKzFPL2VHUWQ5aDBBc244?=
 =?utf-8?B?QnIwcjFHc3ZHRFpRREdNRytPYlhXV1RzVlp0aGticFd3bjJOcWUrMGFUWjBv?=
 =?utf-8?B?b09vbVNXYjQ1WWJPbDd2K2dINmZxdXBPMjI3WXhONEdVRFpxdnVCOGUyNzFr?=
 =?utf-8?B?dTkyTUpSdTNkZG50R2pYeWxXeTRMd3VrKzVqalJhdDVKZUhVenZKbnNZZFFS?=
 =?utf-8?B?eXFJUkZOY1dVc0F5RTBnd3pWUmhCQzhGcS9UdGFoSWhEbEpZZnFJYVdpY2lG?=
 =?utf-8?B?TzA4MGNieTdkVkl5ZlB3dmMyTjc4SWZxR2JDQzVvY1JBTEkwaG9nN0pJQ0FI?=
 =?utf-8?B?RGN0WWpGcWQyV3Z3TVBGNks5QVNYWVc2bVRYYWJZOENpOTRUYzFnNWJILzJF?=
 =?utf-8?B?RGExRTZ3WlNjbWMzNmJGdzExTDhvVkxtRWZFUmNmSzloank0d2JiV0luWWdt?=
 =?utf-8?B?MC9ZWE9HOERpWjBpSnpaOEJyT1JLUnlzMWdWNS9HdWJyTENaaHg1YUlac1Vu?=
 =?utf-8?B?a0FTK25yZXdnUHFxanl4em05RHJ2TkNtWS9PSFZsZ3Bocjk1Q0xlNnNlZmxV?=
 =?utf-8?B?MlpNT2ZleXQyR2NjYnNVMTRHbkhaN2hZbk1pTnVBWjkrNXZoWUMydmdQSis5?=
 =?utf-8?B?Wm55SWhqZUdVYjd5WmVtakRQRFlQRDk4Ri9DV3NKVFB4MEtrb3JwQlJRRFI1?=
 =?utf-8?B?UVhDK3B0US9xcnRLeXlOOXJlYmtLdzVxQzFPU3JHSUdQRm4zWXMxbFdRSmRl?=
 =?utf-8?B?cjNkSUtnSWdYbEs1MU12RWdFMXAxSTZSOHBXVXBVMmpVWUdWcVdkbjhZTG03?=
 =?utf-8?B?Qk5WTFJlZ05KYXBzRGlkOVlmY3JYZldrS0g5OXYwTTdYZzNBN0NkMGRKbTZD?=
 =?utf-8?B?MnR5cXZ1V2FSOVdSc0NPY1M2QlN1NlJsbDBSeDZCSitXMmw2d2NCOEdhS3Bu?=
 =?utf-8?B?bWlhRGF5bjZwWWRsd2FzdkJKU2htK2ErVkRLbGNWMTAvbVE1Y1N2TFVqTTNq?=
 =?utf-8?B?bGJRZnFRZXdmMFB0NDhaSEFBL2w4eTNrckRFR1VSY2VpZFBXNkN3blhxVUZn?=
 =?utf-8?Q?xEkHHvpxYR0ANrAQ=3D?=
X-OriginatorOrg: citrix.com
X-MS-Exchange-CrossTenant-Network-Message-Id: ca13cb5c-6fc6-455f-ff78-08de95853d85
X-MS-Exchange-CrossTenant-AuthSource: CH8PR03MB8275.namprd03.prod.outlook.com
X-MS-Exchange-CrossTenant-AuthAs: Internal
X-MS-Exchange-CrossTenant-OriginalArrivalTime: 08 Apr 2026 15:41:02.9473
 (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: AeBmZG8dV/P/yFx6mxx3jw0yG7K4e4lEat5U1KQzdnAPYRFJ974V36kwKqY0rSIhFwJEDARcu74W/x/pqoumTEoIkQ58fNo/vZ0hGcTlg5o=
X-MS-Exchange-Transport-CrossTenantHeadersStamped: PH8PR03MB7173
X-purgate-ID: tlsNG-c1860d/1775662866-F7F42497-6570CFC4/0/0
X-purgate-type: clean
X-purgate-size: 1259

On 08/04/2026 2:55 pm, Luca Fancellu wrote:
> diff --git a/xen/include/public/arch-arm.h b/xen/include/public/arch-arm.h
> index cd563cf70684..23df2f24cb09 100644
> --- a/xen/include/public/arch-arm.h
> +++ b/xen/include/public/arch-arm.h
> @@ -355,6 +355,8 @@ struct xen_arch_domainconfig {
>      uint32_t clock_frequency;
>      /* IN */
>      uint8_t arm_sci_type;
> +    /* IN */
> +    uint8_t v8r_el1_msa;
>  };
>  #endif /* __XEN__ || __XEN_TOOLS__ */
>  

This isn't ok as the singular change to the public headers.  (Also, I
haven't had time to fix the other API abuses that have crept into ARM's
arch domain config)

You're introducing a new hypercall input parameter (which is fine), but
has no defines (ones private to xen/arch/arm/include/asm/domain.h are
not permitted for use in the public API), and for which there is no
input validation.  Userspace can currently pass any arbitrary byte here
which will be copied into d->arch.v8r_el1_msa, not that there's any
consumer of this field I can see in the series.

Frankly, I think this series is chopped up too much.  You really must
not be introducing new hypercall parameters like this without the whole
series which lets you `xl create` such a VM.

~Andrew


From xen-devel-bounces@lists.xenproject.org Wed Apr 08 15:49:14 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 08 Apr 2026 15:49:14 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1276308.1561825 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wAV9S-0004c6-28; Wed, 08 Apr 2026 15:49:10 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1276308.1561825; Wed, 08 Apr 2026 15:49: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 1wAV9R-0004bz-VR; Wed, 08 Apr 2026 15:49:09 +0000
Received: by outflank-mailman (input) for mailman id 1276308;
 Wed, 08 Apr 2026 15:49:08 +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 1wAV9Q-0004br-Ho
 for xen-devel@lists.xenproject.org; Wed, 08 Apr 2026 15:49:08 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wAV9P-002VBE-PQ
 for xen-devel@lists.xenproject.org; Wed, 08 Apr 2026 17:49:07 +0200
Received: from [10.42.69.1] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <ross.lagerwall@citrix.com>)
 id 69d678f3-2eae-0a2a0a5409dd-0a2a4501eb08-2
 for <xen-devel@lists.xenproject.org>; Wed, 08 Apr 2026 17:49:07 +0200
Received: from [40.107.208.43]
 (helo=PH0PR06CU001.outbound.protection.outlook.com)
 by tlsNG-d62444.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.0)
 (envelope-from <ross.lagerwall@citrix.com>)
 id 69d678f1-6fc9-0a2a45010019-286bd02b8f13-3
 for <xen-devel@lists.xenproject.org>; Wed, 08 Apr 2026 17:49:07 +0200
Received: from CH8PR03MB8274.namprd03.prod.outlook.com (2603:10b6:610:2ba::5)
 by BY5PR03MB5220.namprd03.prod.outlook.com (2603:10b6:a03:22b::7)
 with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9769.17; Wed, 8 Apr
 2026 15:49:03 +0000
Received: from CH8PR03MB8274.namprd03.prod.outlook.com
 ([fe80::ebe2:32c1:d2be:a096]) by CH8PR03MB8274.namprd03.prod.outlook.com
 ([fe80::ebe2:32c1:d2be:a096%7]) with mapi id 15.20.9769.018; Wed, 8 Apr 2026
 15:49:03 +0000
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@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=AXNe0meH2L8M08dQ1SkHDuXWo4ui8yHYbS22SCJtxw8wmEbFl3MRvCIju7cGu9u6cU/i0liudGumLpEnjOR4B5QozrB/VQ/C7ROqERiebLSYY/VDz3ON0IVe48S7lt76PVROnCQ4PR7IppFEmtwge27OMpxuVLJDMKHmAKdeSXWneIypnXsqEXusW5cGKoGejVdU1xwAgLATl9wFvpaDp4fIE+9szFmARxmSbAhu52YI8XV4uqatQVzKA2YdwJRR7iSzbU5iT1i5HgW19IhD3G2m9/L7v7pEbVVdhHZCJS+X8U5KglXYzi0fDgrDLZao9ocN+NgoI3t7px9aEbfoCQ==
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com;
 s=arcselector10001;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1;
 bh=ifIojBZRiaopT06TQJuudILChDEvA/PjmNK3dFnlbfE=;
 b=DB1TZuegpAYvkQ2tjNuE/rRQiqgmWgw+Juc58VcIb7CpP5uyDNqsZAeYq9PzLN9rbItuRnLdI65wXdxl946OJKNNhkmXEeHUQa/6UKGFBbgNU9zT16ryfPuPS9BVnNms2V8gUfwL5n3MuSpRr/Je9sQot35ha6oKkYr9VCo6ZZPaWpdXklgdHNwciuNaeaEXd3CrhwObhssbtv6uYHsmixjPBglCONPvNjlarUxJjVv3V2J/JBkBOpq0N8D+opHdIq9U4BWdKsdsV/hSqb/jMUkm1wyzVFRTtoniaHbuYnV5OugjRa+NsfHVdrpi0wpkufMU6d5PuQUHJuQG1vaR7A==
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=ifIojBZRiaopT06TQJuudILChDEvA/PjmNK3dFnlbfE=;
 b=EhyR3VzhBM0tdrrWbWLx2EG5t50hPqOf+J7kJzxWmDtrNZZgVVmk1p+T2oQkU8YdIGR+1LlwWq7GW4/x0jrMN/hKoFGZub3ppgvw92v/gXLj5xFtIBPYgIiE04SFgTAx3hf2kDrA2FvDx8N4ZsK0q0+3Xz/ygMwo3u3k6+p5xWw=
Authentication-Results: dkim=none (message not signed)
 header.d=none;dmarc=none action=none header.from=citrix.com;
Message-ID: <ed2006d0-1f5f-45ea-a8d8-bd9c064fe048@citrix.com>
Date: Wed, 8 Apr 2026 16:48:47 +0100
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH v1 1/3] x86/hap: Wait for remote CPUs during TLB flush
To: Jan Beulich <jbeulich@suse.com>
Cc: Andrew Cooper <andrew.cooper3@citrix.com>,
 =?UTF-8?Q?Roger_Pau_Monn=C3=A9?= <roger.pau@citrix.com>,
 xen-devel@lists.xenproject.org
References: <20260401163521.3603665-1-ross.lagerwall@citrix.com>
 <20260401163521.3603665-2-ross.lagerwall@citrix.com>
 <b985f554-0338-4426-8981-0613f112f166@suse.com>
Content-Language: en-US
From: Ross Lagerwall <ross.lagerwall@citrix.com>
In-Reply-To: <b985f554-0338-4426-8981-0613f112f166@suse.com>
Content-Type: text/plain; charset=UTF-8; format=flowed
Content-Transfer-Encoding: 7bit
X-ClientProxiedBy: LNXP265CA0085.GBRP265.PROD.OUTLOOK.COM
 (2603:10a6:600:76::25) To CH8PR03MB8274.namprd03.prod.outlook.com
 (2603:10b6:610:2ba::5)
MIME-Version: 1.0
X-MS-PublicTrafficType: Email
X-MS-TrafficTypeDiagnostic: CH8PR03MB8274:EE_|BY5PR03MB5220:EE_
X-MS-Office365-Filtering-Correlation-Id: e44d8523-396c-4236-90fa-08de95865b95
X-MS-Exchange-SenderADCheck: 1
X-MS-Exchange-AntiSpam-Relay: 0
X-Microsoft-Antispam:
	BCL:0;ARA:13230040|376014|1800799024|366016|22082099003|56012099003|18002099003;
X-Microsoft-Antispam-Message-Info:
	awZhiatb4hJS9M/zBJ8mQF2pzgBPaLPk1+zJR8j+36vzFjrFd04E/LT8NWJqEduNE0i5o5oOEemlojib6P0DuOfmkN7zId0h8n9w3mU3rfTJuCMjOoj7DooqndBIzHHU2R8Dyf/7L+5oLrengr3NRCVUaTmqlkKox6LucYz6cvp4ct6apfX6t/eidlllEiZSY+LRXgD74Egj+OP1knFsdgXRRwsKmdLSEqNDyyZxTTtVl7y0yB2KxPQBJl9KVNfmQGTiGd4Ar1/VqU42Ii7+DC8iTA2RE1RxvRz5DjMgJpTi4iiLe9z7nWg1i8EKxgZn2TzeWSHlnd8LDL2jYctskRJwLLj56fo8GLakOYHS4TloYYI+8AxGwA5o6hhY6W7JB4AM4UNoTb5nZDYsDB6v0OFDtBVaoj8oT+uquXEcYLKjlRWTVAvwQmGb+ybjHF0Grm0O3rGPJpXP6u0TrbHXISgkdY6fVIUJpfhDMd+nWKlEn8Db6sp5oBIcUDYCyD7uxEt2VMLOyND8ubpc+0n5aaCIbqOOY8/7S5UCa1UepRRlQdlspfplwfP0acqY+CF9yKWxW83Uz8VhvW9VPUfY7tHI+ndRfR/vxizcasSc7sSdmfNeV/7gHI89P4qVuPvhBhUPCo4RtZSOYsoIEsn4hYzwOT28H3gece+aIIoI3CNvK9UlBvn/pTR+8HOD0gVhXfqI6YxFCkeQQh9kSoVq4jUczF+kaQEtgollCx7XnKw=
X-Forefront-Antispam-Report:
	CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:CH8PR03MB8274.namprd03.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(376014)(1800799024)(366016)(22082099003)(56012099003)(18002099003);DIR:OUT;SFP:1101;
X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1
X-MS-Exchange-AntiSpam-MessageData-0:
	=?utf-8?B?eWVzZTM1enpocnFsQkFBN1ZyTzVxZkFoTFpqK3NCK0hEZW9UTkZhNjFwM1Qr?=
 =?utf-8?B?YUFhVDg1T3lOWVFVT0Z2NnNyczZBU3JSVmFqcERaaFY5NUJ4bUcxdnFwc3px?=
 =?utf-8?B?OWdpQlBMMFRVa0RlTmpsdzF3RDd3ZkdGaGNQZ1FqV29aTVJTNkZNOEJoOVhw?=
 =?utf-8?B?Z1A0aUpJZWlVS2pXOFZnV0hMSzM1L0h0Q3piOFdEUVArSUVrdzhYTnNOSXRN?=
 =?utf-8?B?TkZudVFMY3ZyTURQUmplMHdObzV1eTY3TDgwLzNQREMyRXFTWU1uT1orRm5w?=
 =?utf-8?B?cFZsNnBFQVVCN202ckVFNnVSMnVvalJTOUFQdGJNZ0J0bWg0Y05wckhBTDlR?=
 =?utf-8?B?T1phSUZMQ0RJZ0xUeklDZUNtS1U5eEFkek5BTWVGazNCdXVwSmQ1c1JDbS9B?=
 =?utf-8?B?eHZ0dkdwQi9CNjJJbmhoZGJKeXVERnVodE5oWDhycjRzdEh2R0JKeld2NElY?=
 =?utf-8?B?Tm9wdFpBTis1TDhiTElVSC9lQnh0aTNmMXRpaDhqOVE2Rkw2VWJuN3FvZVdN?=
 =?utf-8?B?RUVkLy9USGdleno0Z0Q4cFhlNEFWdnlnRmU3ZzRHZXRObDNHaVF2dk5XY1Nl?=
 =?utf-8?B?a0hqbWpmOGMraXoxRG50UVk0NUYvakw3ZW5pdTBFYzk2MWtsaE5zaWRkMUZT?=
 =?utf-8?B?aDFVUGFUNFhhRlZjbG5NNmRmUU9LUUYrYW1HRFpmLzdQYmkvaEJlaTBlL1NK?=
 =?utf-8?B?NEtPamhyYU12Qjk2bmY3OVlNSjh4YWdCMkVieGhvaW5iMjlFTFBOVUZQNXB6?=
 =?utf-8?B?ZzRyWlVFcGlpYzJTTHYrdUdxNXZHN0RIZDY2UFJPK3B3STBYSGU4c0dpRklQ?=
 =?utf-8?B?WjIrQWJ4TVg2ZHNNL1liUmxoLzIxcXBaTW4vcUtVMHhjUWtPc3k2ODlQWmw2?=
 =?utf-8?B?aDYzcUJPL1VZdWRYbEtuZ2dzZTllckd5dnlpSmd3WVJSbjdSM1JqWFluZjNF?=
 =?utf-8?B?S1MyRExJU2pMbGg2N2xmWmsxVkFXa0FvcGR1eEtidUVBSGh5WVVyK3lMLy9C?=
 =?utf-8?B?YTJ2UWNkMTltY2Znc3MyY3ZzQ0lOaDkrNEc3Wm9WaENYWmNwbDFKMDErSC9m?=
 =?utf-8?B?NG1vMDYvcGVSVmFXQlY1U3NJY1IxTGZCbjBKVzYxbVFTYmtGTXYxeDJpMXpx?=
 =?utf-8?B?Z0xyWG5wRFVRRThPVXdyTUlUamNlZG5KbHJ0UnpQM0dhVUozZUNjYzArd0FY?=
 =?utf-8?B?TVc4TlJmUWRMZlczek5VbThLS2hwRjZvYjZ5TDdram5XdUk2YVd0Z3VWSnN2?=
 =?utf-8?B?S1RJYXdPZU5CZEhFa2k1Mm5OVWRPRWRnMjd6ZnQ5K0IyZTFmSnZCTFMzSy9C?=
 =?utf-8?B?M2QzMjlyYVdRN1JTUVo0bmhFaHYvNEdVbkc3cDdhMVIvNDFjeC8vU1VUZE9x?=
 =?utf-8?B?WlVWbUt0WktjWnoxUFczM2ZLR09QUU1iaHozOHdxd05qVFBpc2Y4blV2ckZa?=
 =?utf-8?B?UXJXVk0rUklyeDVnUVFPUEs0R2pudTQzcjBPUnIvWFo3UElKaVpvT0hDVDZr?=
 =?utf-8?B?cjBKMkVWZlRkV3JMM0sxM28vUEsvdEVqVUk1QzdPMmVkdHdvRTZMUEpBaFZl?=
 =?utf-8?B?SmlDYitvbGlkSXdIdU1KdjMxdnN5enhOU0t2bTBheU9NQzlKWGd1RDZURzJS?=
 =?utf-8?B?cTRqZlRUTFpjdUlqQlhxNmQ3WUp4Nm8za3Axb3VFNWJUaVNab0lYV1FuSjlz?=
 =?utf-8?B?QnB4eDVLdTg5TkxnQlh1OGlhTjZ5d0IyaFFaL3dId2JEam8rZzFhYXVta1hk?=
 =?utf-8?B?QTNFR0JBNE8rc2ZhNk0vVEYzUXZxRER5TERmcDdPUXp2T1E2cmthZDhQcFkv?=
 =?utf-8?B?NVhqM1MxdHRIYlpRSndtbXF3cmk5bjFUTVNMTTlGaEt2RG9iWXZmdzNTM3di?=
 =?utf-8?B?QkQ1NVNVZEc5d1NESXFUd3JBYVpPdk1kZWh5SWk1N1B3SmpTU1pMbDdPU01I?=
 =?utf-8?B?ZlBvekxBZ0tOV3kzMzJDT051Kzh0T3ZqVU5yOWtjY1dzUWVQMFVyWHNSQnN5?=
 =?utf-8?B?ZjFJdXdEdWk3aXd3aThsc2kwWWJGNVFrbVZWT2hUc1FSV1lBdTZVaFI5QzNB?=
 =?utf-8?B?NVNpUG1kMCtsQkpjUk9uR3NKMlo3YjNFaTkwUDJqUjFBczdOaDBhWXVRWkEx?=
 =?utf-8?B?eTMvRE43c0t3RFE4d1N6cm1XNHFIeXR6SjNTNi9nTFBQblMwYXhzbHN4TjFU?=
 =?utf-8?B?d1hLZ3cvaktmNVQwSWp1TS9SMGY2dGt5ZExZUnJucnk4TmZWeDkrOGtucGxL?=
 =?utf-8?B?QmJzRk9pakhkaGp4QnU0Y3ZhUVlTZjlsamlrUlJnWUowbTlnRlFZdmZ3djI0?=
 =?utf-8?B?dE9EYTJNd1ZLTFVvZXpVRjBOQjdnZ09xS3pyYmdEbi8yaS9jY094c3BkNWZj?=
 =?utf-8?Q?HYNF8SCzONFcjgXA=3D?=
X-OriginatorOrg: citrix.com
X-MS-Exchange-CrossTenant-Network-Message-Id: e44d8523-396c-4236-90fa-08de95865b95
X-MS-Exchange-CrossTenant-AuthSource: CH8PR03MB8274.namprd03.prod.outlook.com
X-MS-Exchange-CrossTenant-AuthAs: Internal
X-MS-Exchange-CrossTenant-OriginalArrivalTime: 08 Apr 2026 15:49:02.9557
 (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: orq/BvzzpvVdxL5StY7GTJuHw8OIIoODR5IQLhg13irAgIlG6I9BPZFMyOHrdD+DoBQA1GrmyR+UBX8+R3R3kYwzQRqcmm9KA0TyIF3STz4=
X-MS-Exchange-Transport-CrossTenantHeadersStamped: BY5PR03MB5220
X-purgate-ID: tlsNG-d62444/1775663347-14EE3185-EA0A2A97/0/0
X-purgate-type: clean
X-purgate-size: 1236

On 4/8/26 4:21 PM, Jan Beulich wrote:
> On 01.04.2026 18:35, Ross Lagerwall wrote:
>> A future change to on_selected_cpus() will change the semantics of the
>> wait parameter so that it doesn't wait for remote CPUs to "check in" if
>> wait == 0. Adjust the call here to retain the existing behaviour so it
>> continues to wait for the remote CPUs to VMExit.
> 
> Doesn't this go too far though? IOW wouldn't we better make the "wait"
> parameter a tristate then?

 From what I can see, the current wait == 0 behaviour only exists as a
limitation of the implementation: The local CPU needs to wait for all
the remote CPUs to have read "func" and "info" before dropping the lock
to avoid a race condition.

With that limitation removed, I don't see a valid reason to maintain
this beahviour as an option, though I could be convinced otherwise.

> 
> As to the semantic change, peeking at patch 2 I don't see you discussing
> the safety of doing so for the several other callers that also pass 0
> right now.
> 

I did audit the other callers (including via smp_call_function() and
on_each_cpu()) and I believe they are all fine as is.
I can update the commit message to say something along these lines.

Ross


From xen-devel-bounces@lists.xenproject.org Wed Apr 08 16:11:42 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 08 Apr 2026 16:11:42 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1276322.1561835 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wAVV8-0001EX-Tz; Wed, 08 Apr 2026 16:11:34 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1276322.1561835; Wed, 08 Apr 2026 16:11: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 1wAVV8-0001EQ-R6; Wed, 08 Apr 2026 16:11:34 +0000
Received: by outflank-mailman (input) for mailman id 1276322;
 Wed, 08 Apr 2026 16:11:33 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <jbeulich@suse.com>) id 1wAVV7-0001EK-Lz
 for xen-devel@lists.xenproject.org; Wed, 08 Apr 2026 16:11:33 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wAVV7-00AdaD-15
 for xen-devel@lists.xenproject.org; Wed, 08 Apr 2026 18:11:33 +0200
Received: from [10.42.69.4] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <jbeulich@suse.com>)
 id 69d67e2a-bab6-0a2a0a5309dd-0a2a45049de6-18
 for <xen-devel@lists.xenproject.org>; Wed, 08 Apr 2026 18:11:32 +0200
Received: from [209.85.128.53] (helo=mail-wm1-f53.google.com)
 by tlsNG-ebf023.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.0)
 (envelope-from <jbeulich@suse.com>)
 id 69d67e34-bb33-0a2a45040019-d1558035cc22-3
 for <xen-devel@lists.xenproject.org>; Wed, 08 Apr 2026 18:11:32 +0200
Received: by mail-wm1-f53.google.com with SMTP id
 5b1f17b1804b1-488971db0fdso49225e9.0
 for <xen-devel@lists.xenproject.org>; Wed, 08 Apr 2026 09:11:32 -0700 (PDT)
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-488cd22c77csm2072995e9.12.2026.04.08.09.11.31
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Wed, 08 Apr 2026 09:11:31 -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=google header.d=suse.com header.i="@suse.com" header.h="Content-Transfer-Encoding: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=1775664692; x=1776269492; darn=lists.xenproject.org;
        h=content-transfer-encoding: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;
        bh=P1G0f3IMv1NB+YAotfeV75ZWWWD/EYwL8HU7VrQCfPA=;
        b=M+SRBEGbMlWDterKl8o41D0htnO345fwGCqpz7W2rxyRpqspkDRgcHp6AM7TEacyXH
         xA74vVR3wOKdxPTxTz9YLsf9LJq368D3VhHLY8t5jCwlJZZwAssU7IIVqRClJ52bFxYl
         gt1EeFvxN8QiH2nXbxAGGoeldABzWJa8eAbuwtCwHal3EsHRdF65EQeEFwGPrUaxbb+e
         vOKPLrJWgYky4yBFFnxc+nx6DhPY5HSYIEy1tf11v0YokihgPJ+cMSa9qpm+VSAtKeal
         xGSOk79G5cot3S+WzOhojU+MvL5iQzA1oSlxuwvt6ObHim69KWHL63ZWnFyu8h2URZAe
         AobQ==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20251104; t=1775664692; x=1776269492;
        h=content-transfer-encoding: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;
        bh=P1G0f3IMv1NB+YAotfeV75ZWWWD/EYwL8HU7VrQCfPA=;
        b=ATfPEbX/LPyq0sjRIsR92pBBApAM2ECD/0yVzQSbvND0t9BvwUGAzKsbNr1rRT8eE1
         Pji//k6skH0WfJmx8niqKEvGcVe8mMdGKnKlhwfdVMgnoVemLKe7w4rHDlALLTKIIcQB
         TZQPCVfyxlCOAJPuf2mIfbIR0SQSX3RHM06RprFZfA2ZuaNLlEQ5GMS1w2He3FTvXfca
         7eEE5mgkmdIF5NQ+Efugn+I6/ryEY+VlZnFn3o8q2rXz7iGjzvIAhRz5VwtPkeM7mcDa
         r8M6xbv/CDlzZLiZlurmbCwrUUF9pdXfdNf3uC5Y/vdkdCz7T6Bmt8yHxV2aa/Pgebh5
         wqtA==
X-Forwarded-Encrypted: i=1; AJvYcCUpwUlB37Yb+QuNUB0+7kNcfaIaQelQ1hyh2/cGLtLEVYoywl0d6h0E3TcnZYGhhhfWKLvkMGyTOrs=@lists.xenproject.org
X-Gm-Message-State: AOJu0YwNtNCap4dU/3zufgYqbvLjY9bTsZY1+ELT07BpzUK8j7BwkO0W
	Mieg3sjx/oPL23nzCXjgfGvObv1ubeqYrAYOqCYt2J8ODXrfegxnzJfErbTTIvinMg==
X-Gm-Gg: AeBDies6w7alz5+KGaATM9E7K6yQHqFNehXpIeQc7fnol/HdUL/BLMUTElwQMyjSN1s
	dB1745E5EurrP4YsA74lHDSdwGJTWh4vHmDz+Dp6IAfDKLF0nSMlusOAg4NabxNAKM9yHWElpy2
	hjPLqDfYPH2PrPBCSVUTb12StuE1HcjvQ0o+05bcdsgvU+MGKJJ5qfRIyjRkLCFvlMi5tj8wg7G
	QyT9mBqMgMaagw6PuR3MAdD3Nmme+yHpsMD086gpzieFuC3l/ckOPltbQZg05AHeESxyV4KF9cx
	AN5j6cKvSGv815l0e+N3iCtURposG2Kd93FSkQJ0PT1RpkfrNMQYUnH6apwljhy1lmZP8MxYXbe
	0ocBotyMzSDXIK3v5TOuyw+mgb0swOAThSbdMdvpGrhzHhELdHqY0QHHvvrOF2nBAjUamrlQQOc
	dAyTkfQFg2gE21h1xEoRkp2Xw+bg3BBE0q5QaOy7QbOgQhQYuP5FuQUS68TuBPqoIY6lUA0FwVh
	A+XJPVriP8mha4=
X-Received: by 2002:a05:600c:548d:b0:485:3423:727d with SMTP id 5b1f17b1804b1-488cd068ce8mr3762285e9.26.1775664692269;
        Wed, 08 Apr 2026 09:11:32 -0700 (PDT)
Message-ID: <c7ea5ab4-ee7e-4843-8c32-c205a50ab9e2@suse.com>
Date: Wed, 8 Apr 2026 18:11:30 +0200
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH v1 2/3] xen/smp: Rewrite on_selected_cpus() to be lockless
To: Ross Lagerwall <ross.lagerwall@citrix.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.pau@citrix.com>,
 Stefano Stabellini <sstabellini@kernel.org>, xen-devel@lists.xenproject.org
References: <20260401163521.3603665-1-ross.lagerwall@citrix.com>
 <20260401163521.3603665-3-ross.lagerwall@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: <20260401163521.3603665-3-ross.lagerwall@citrix.com>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 7bit
X-purgate-ID: tlsNG-ebf023/1775664692-B2B3851B-B2D308B2/0/0
X-purgate-type: clean
X-purgate-size: 4574

On 01.04.2026 18:35, Ross Lagerwall wrote:
> --- a/xen/common/smp.c
> +++ b/xen/common/smp.c
> @@ -24,13 +24,15 @@
>  /*
>   * Structure and data for smp_call_function()/on_selected_cpus().
>   */
> -static DEFINE_SPINLOCK(call_lock);
> -static struct call_data_struct {
> +struct call_data_struct {
>      void (*func) (void *info);
>      void *info;
>      int wait;
> -    cpumask_t selected;
> -} call_data;
> +    cpumask_t selected __cacheline_aligned;
> +};
> +
> +DEFINE_PER_CPU(struct call_data_struct, call_data);
> +static cpumask_t tasks;

Only first pass feedback for now (I still need to go over all of this more
thoroughly).

Having cpumask_t variables anywhere (not just on the stack, where they're
particularly problematic) isn't very nice. Can this become cpumask_var_t?
(We really also need to deal with the one in smp_call_function(), for
example.)

> @@ -50,55 +52,84 @@ void on_selected_cpus(
>      void *info,
>      int wait)
>  {
> +    struct call_data_struct *data;
> +    unsigned int cpu = smp_processor_id();
> +
>      ASSERT(local_irq_is_enabled());
>      ASSERT(cpumask_subset(selected, &cpu_online_map));
>  
> -    spin_lock(&call_lock);
> +    if ( cpumask_empty(selected) )
> +        return;
> +
> +    data = &this_cpu(call_data);
>  
> -    cpumask_copy(&call_data.selected, selected);
> +    if ( !data->wait )
> +    {
> +        /* Wait for any previous async call to complete */
> +        while ( !cpumask_empty(&data->selected) )
> +            cpu_relax();
> +
> +        cpumask_clear_cpu(cpu, &tasks);

Since you set this bit again almost immediately, the above can only be to
make sure that ...

> +    }
>  
> -    if ( cpumask_empty(&call_data.selected) )
> -        goto out;
> +    data->func = func;
> +    data->info = info;
> +    data->wait = wait;

... these updates and ...

> -    call_data.func = func;
> -    call_data.info = info;
> -    call_data.wait = wait;
> +    smp_wmb();
>  
> -    smp_send_call_function_mask(&call_data.selected);
> +    cpumask_copy(&data->selected, selected);

... and this copying happen with the bit clear. Don't you need another
barrier then, though (between cpumask_clear_cpu() and the writes)?

Further isn't the barrier you add coming too early? While the bit in
tasks is clear, nobody's going to look at ->selected. Doesn't the
barrier need to live here, to isolate from ...

> -    while ( !cpumask_empty(&call_data.selected) )
> -        cpu_relax();
> +    cpumask_set_cpu(cpu, &tasks);

... this?

> -out:
> -    spin_unlock(&call_lock);
> +    smp_send_call_function_mask(&data->selected);
> +
> +    if ( wait )
> +    {
> +        while ( !cpumask_empty(&data->selected) )
> +            cpu_relax();
> +
> +        cpumask_clear_cpu(cpu, &tasks);
> +    }
>  }
>  
>  void smp_call_function_interrupt(void)
>  {
> -    void (*func)(void *info) = call_data.func;
> -    void *info = call_data.info;
>      unsigned int cpu = smp_processor_id();
> -
> -    if ( !cpumask_test_cpu(cpu, &call_data.selected) )
> -        return;
> +    unsigned int i;
> +    struct call_data_struct *data;
> +    void (*func)(void *info);
> +    void *info;

Please move into the loop's scope whatever can be moved there.

>      irq_enter();
>  
> -    if ( unlikely(!func) )
> -    {
> -        cpumask_clear_cpu(cpu, &call_data.selected);
> -    }
> -    else if ( call_data.wait )
> -    {
> -        (*func)(info);
> -        smp_mb();
> -        cpumask_clear_cpu(cpu, &call_data.selected);
> -    }
> -    else
> +    for_each_cpu ( i, &tasks )
>      {
> -        smp_mb();
> -        cpumask_clear_cpu(cpu, &call_data.selected);
> -        (*func)(info);
> +        data = &per_cpu(call_data, i);
> +
> +        if ( !cpumask_test_cpu(cpu, &data->selected) )
> +            continue;
> +
> +        smp_rmb();

This barrier looks as if it also needs to move (up).

Jan

> +        func = data->func;
> +        info = data->info;
> +
> +        if ( unlikely(!func) )
> +        {
> +            cpumask_clear_cpu(cpu, &data->selected);
> +        }
> +        else if ( data->wait )
> +        {
> +            (*func)(info);
> +            smp_mb();
> +            cpumask_clear_cpu(cpu, &data->selected);
> +        }
> +        else
> +        {
> +            smp_mb();
> +            cpumask_clear_cpu(cpu, &data->selected);
> +            (*func)(info);
> +        }
>      }
>  
>      irq_exit();



From xen-devel-bounces@lists.xenproject.org Wed Apr 08 16:36:08 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 08 Apr 2026 16:36:08 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1276336.1561844 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wAVsh-0004UR-QE; Wed, 08 Apr 2026 16:35:55 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1276336.1561844; Wed, 08 Apr 2026 16:35: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 1wAVsh-0004UK-Mg; Wed, 08 Apr 2026 16:35:55 +0000
Received: by outflank-mailman (input) for mailman id 1276336;
 Wed, 08 Apr 2026 16:35:54 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <andrew.cooper3@citrix.com>) id 1wAVsf-0004UE-Un
 for xen-devel@lists.xenproject.org; Wed, 08 Apr 2026 16:35:54 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wAVsd-006NwQ-BB
 for xen-devel@lists.xenproject.org; Wed, 08 Apr 2026 18:35:52 +0200
Received: from [10.42.69.1] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <andrew.cooper3@citrix.com>)
 id 69d683b6-2eae-0a2a0a5409dd-0a2a4501ddc8-34
 for <xen-devel@lists.xenproject.org>; Wed, 08 Apr 2026 18:35:52 +0200
Received: from [209.85.128.67] (helo=mail-wm1-f67.google.com)
 by tlsNG-d62444.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.0)
 (envelope-from <andrew.cooper3@citrix.com>)
 id 69d683e8-6fc9-0a2a45010019-d1558043d0db-3
 for <xen-devel@lists.xenproject.org>; Wed, 08 Apr 2026 18:35:52 +0200
Received: by mail-wm1-f67.google.com with SMTP id
 5b1f17b1804b1-4889e045bc6so113215e9.2
 for <xen-devel@lists.xenproject.org>; Wed, 08 Apr 2026 09:35:52 -0700 (PDT)
Received: from localhost.localdomain (host-78-146-242-105.as13285.net.
 [78.146.242.105]) by smtp.gmail.com with ESMTPSA id
 ffacd0b85a97d-43d1e4d2738sm61201338f8f.24.2026.04.08.09.35.50
 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
 Wed, 08 Apr 2026 09:35:51 -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=google header.d=citrix.com header.i="@citrix.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=citrix.com; s=google; t=1775666152; x=1776270952; 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;
        bh=UN00C5w8mxxKS6BZsJBcm/d7Q6sznRAtUQSRYmu6l/8=;
        b=Bp8npXhrI4YjYq1Bj6SQMBRI4jk4GhUQ/bT87MLgs9i1kSXieNxUyGYxxlprzGGm4z
         UXLIYHkMDsY7VqmBc7QvxApxBCYHp5odkIKzi/5R8sk9M87PAtn1ld9NeqXvLmIYfSdp
         F0BjBiT/T+9zDv57DP8vlz1rhpZnuMz+XIXCM=
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20251104; t=1775666152; x=1776270952;
        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;
        bh=UN00C5w8mxxKS6BZsJBcm/d7Q6sznRAtUQSRYmu6l/8=;
        b=ZR+aRKt+bdcJtGJKdU8FoyrGJvge1UK650N65Uk0Yv5X69y/9NLFEfZISYnGf/uTEc
         sTeeUstHwqi6dLHT9JVWjjrF2AzT/PvrbkPKDo9tYzCEbDydVDcv3gXZvO35EMbMi1ye
         0YXY/tV8n+Br+mINsB/VdibXN/9qGTG51lqU9IAbjydZhKF7uO2RjW0zV3T7h1ifO31E
         ZTB8aAnERxilWyP8N5dvjnvrlQbuIp3SHS/E959C/lNtiaWAKiUkHWrC7svdfwwhENrR
         NAGG3erFGL6Rsf/3PmE+BObNsdNDRLmMVGQkk/HJioSmP4Hsdpgqb9MNNFbPc9cfV/rn
         fiRw==
X-Gm-Message-State: AOJu0YwIbcE/GLeP8PghA9WGlammfBxP/8wKJWDeh9xr/d1aHgwcFs8l
	/r6a9nZS2wYhN5EWllAC7nKN/34I20CBCDcDM6kuCOlzTSow+DBKyuqs49oQipeKVvyLjoEmgUJ
	V3+vKbJFs6hf4
X-Gm-Gg: AeBDievE6OBve+oCRS7tpDatpaX1F+8sEkuEA6lc6BmrV/jeGI7c7j99ZL8EYukw0Nk
	4Qdoptyx6PMLUvXK5Wj5P61EW7n3L9Qe50cnRWpy3U/ewPSnobw8N78JQ9N70gHbdJ18ioonXjV
	dBaz7Eb+wwKlCsU8qvdKzphTGtNlAN1Rm6HXzfTCJVDkCYy5NN0tnIrZ4G4NR2+tm/+8hT9wcxU
	Zhwi+YcsmxfNviDW7DhDyBzAhMBRLZdQMrYZa3E3KVEb8Gypon4xoipDzEjwhz6Qa8y5HjKJ+Ef
	UTD4z9MB5U8HdY/Y8pzdkB82OHcsbE98WRFq45f1BrjVXxZpx3rogBOzrdh2nhitfOEy8ZpAfxP
	iLs6U7bddZcIGk1NrfAQKGagiSXaoVdvFbOpUo1236XCAvS7CPJi8GobkdzCtiVZxAMGC9F130K
	8nGJmHVF+C7gv/BbGvlqi8XFHfwV6fBXdnk4xDTVF3Gb+CXDkIlLGdDCvk39bi6ZGReiCVCYk5i
	L/v
X-Received: by 2002:a05:600c:858c:b0:488:9439:880d with SMTP id 5b1f17b1804b1-488cd087322mr5197785e9.29.1775666151565;
        Wed, 08 Apr 2026 09:35:51 -0700 (PDT)
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.pau@citrix.com>,
	Teddy Astie <teddy.astie@vates.tech>
Subject: [PATCH] x86/gen-cpuid: Split deep_features by vendor
Date: Wed,  8 Apr 2026 17:35:49 +0100
Message-Id: <20260408163549.135245-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/1775666152-150E0185-2BB1BED4/0/0
X-purgate-type: clean
X-purgate-size: 8689

AMD CPUs need LKGS depend on NSCB, but this dependency cannot be unconditional
as it will break FRED on Intel CPUs which don't need to enumerate the absence
of a bug.

The deep dependecy logic is formed of two parts; a deep_features bitmap
indicating which features have dependencies, and deep_deps; the mapping of
feature to dependent features.  Given that NSCB is an unconnected root of a
dependency, we can have the row in deep_deps and conditionally exclude it the
deep_features level.

Rename INIT_DEEP_FEATURES to INIT_ALL_DEEP_FEATURES and add AMD and INTEL
forms too.  In both xc_cpuid_apply_policy() and sanitise_featureset(), choose
the appropriate {amd,intel}_deep_features based on vendor.

Introduce the NSCB <-> LKGS dependency and exclude the NSCB row from
intel_deep_features.

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

Only compile tested so far.
---
 tools/libs/guest/xg_cpuid_x86.c             | 14 +++++++++++++-
 xen/arch/x86/cpu-policy.c                   | 16 ++++++++++++++--
 xen/arch/x86/lib/cpu-policy/cpuid.c         |  2 +-
 xen/include/public/arch-x86/cpufeatureset.h |  2 +-
 xen/tools/gen-cpuid.py                      | 20 +++++++++++++++++---
 5 files changed, 46 insertions(+), 8 deletions(-)

diff --git a/tools/libs/guest/xg_cpuid_x86.c b/tools/libs/guest/xg_cpuid_x86.c
index 0db6d77cd801..0b00672c4762 100644
--- a/tools/libs/guest/xg_cpuid_x86.c
+++ b/tools/libs/guest/xg_cpuid_x86.c
@@ -650,9 +650,12 @@ int xc_cpuid_apply_policy(xc_interface *xch, uint32_t domid, bool restore,
 
     if ( featureset )
     {
+        static const uint32_t amd_deep_features[] =  INIT_AMD_DEEP_FEATURES;
+        static const uint32_t intel_deep_features[] =  INIT_INTEL_DEEP_FEATURES;
+
+        const uint32_t *deep_features;
         uint32_t disabled_features[FEATURESET_NR_ENTRIES],
             feat[FEATURESET_NR_ENTRIES] = {};
-        static const uint32_t deep_features[] = INIT_DEEP_FEATURES;
         unsigned int i, b;
 
         /*
@@ -670,6 +673,15 @@ int xc_cpuid_apply_policy(xc_interface *xch, uint32_t domid, bool restore,
 
         memcpy(feat, featureset, sizeof(*featureset) * user_len);
 
+        /*
+         * At the time of writing, amd_deep_features contains one extra
+         * dependency over intel for a "hardware no longer has this bug" bit.
+         */
+        if ( p->policy.x86_vendor & (X86_VENDOR_AMD|X86_VENDOR_HYGON) )
+            deep_features = amd_deep_features;
+        else
+            deep_features = intel_deep_features;
+
         /* Disable deep dependencies of disabled features. */
         for ( i = 0; i < ARRAY_SIZE(disabled_features); ++i )
             disabled_features[i] = ~feat[i] & deep_features[i];
diff --git a/xen/arch/x86/cpu-policy.c b/xen/arch/x86/cpu-policy.c
index 5273fe0ae435..2228c52ffc79 100644
--- a/xen/arch/x86/cpu-policy.c
+++ b/xen/arch/x86/cpu-policy.c
@@ -39,7 +39,8 @@ static const uint32_t __initconst hvm_shadow_def_featuremask[] =
     INIT_HVM_SHADOW_DEF_FEATURES;
 static const uint32_t __initconst hvm_hap_def_featuremask[] =
     INIT_HVM_HAP_DEF_FEATURES;
-static const uint32_t deep_features[] = INIT_DEEP_FEATURES;
+static const uint32_t amd_deep_features[] = INIT_AMD_DEEP_FEATURES;
+static const uint32_t intel_deep_features[] = INIT_INTEL_DEEP_FEATURES;
 
 static const struct feature_name {
     const char *name;
@@ -158,11 +159,21 @@ static void zero_leaves(struct cpuid_leaf *l,
 
 static void sanitise_featureset(uint32_t *fs)
 {
+    const uint32_t *deep_features;
     /* bitmap_for_each() uses unsigned longs.  Extend with zeroes. */
     uint32_t disabled_features[
         ROUNDUP(FSCAPINTS, sizeof(unsigned long)/sizeof(uint32_t))] = {};
     unsigned int i;
 
+    /*
+     * At the time of writing, amd_deep_features contains one extra dependency
+     * over intel for a "hardware no longer has this bug" bit.
+     */
+    if ( boot_cpu_data.vendor & (X86_VENDOR_AMD|X86_VENDOR_HYGON) )
+        deep_features = amd_deep_features;
+    else
+        deep_features = intel_deep_features;
+
     for ( i = 0; i < FSCAPINTS; ++i )
     {
         /* Clamp to known mask. */
@@ -1110,7 +1121,8 @@ static void __init __maybe_unused build_assertions(void)
     BUILD_BUG_ON(ARRAY_SIZE(pv_max_featuremask) != FSCAPINTS);
     BUILD_BUG_ON(ARRAY_SIZE(hvm_shadow_max_featuremask) != FSCAPINTS);
     BUILD_BUG_ON(ARRAY_SIZE(hvm_hap_max_featuremask) != FSCAPINTS);
-    BUILD_BUG_ON(ARRAY_SIZE(deep_features) != FSCAPINTS);
+    BUILD_BUG_ON(ARRAY_SIZE(amd_deep_features) != FSCAPINTS);
+    BUILD_BUG_ON(ARRAY_SIZE(intel_deep_features) != FSCAPINTS);
 
     /* Find some more clever allocation scheme if this trips. */
     BUILD_BUG_ON(sizeof(struct cpu_policy) > PAGE_SIZE);
diff --git a/xen/arch/x86/lib/cpu-policy/cpuid.c b/xen/arch/x86/lib/cpu-policy/cpuid.c
index 3162e795bc21..73ea68690b4a 100644
--- a/xen/arch/x86/lib/cpu-policy/cpuid.c
+++ b/xen/arch/x86/lib/cpu-policy/cpuid.c
@@ -293,7 +293,7 @@ void x86_cpu_policy_clear_out_of_range_leaves(struct cpu_policy *p)
 
 const uint32_t *x86_cpu_policy_lookup_deep_deps(uint32_t feature)
 {
-    static const uint32_t deep_features[] = INIT_DEEP_FEATURES;
+    static const uint32_t deep_features[] = INIT_ALL_DEEP_FEATURES;
     static const struct {
         uint32_t feature;
         uint32_t fs[FEATURESET_NR_ENTRIES];
diff --git a/xen/include/public/arch-x86/cpufeatureset.h b/xen/include/public/arch-x86/cpufeatureset.h
index c4d3276f2f89..acee5a0544a0 100644
--- a/xen/include/public/arch-x86/cpufeatureset.h
+++ b/xen/include/public/arch-x86/cpufeatureset.h
@@ -326,7 +326,7 @@ XEN_CPUFEATURE(NO_NEST_BP,         11*32+ 0) /*A  No Nested Data Breakpoints */
 XEN_CPUFEATURE(FS_GS_NS,           11*32+ 1) /*S| FS/GS base MSRs non-serialising */
 XEN_CPUFEATURE(LFENCE_DISPATCH,    11*32+ 2) /*A  LFENCE always serializing */
 XEN_CPUFEATURE(VERW_CLEAR,         11*32+ 5) /*!A| VERW clears microarchitectural buffers */
-XEN_CPUFEATURE(NSCB,               11*32+ 6) /*A  Null Selector Clears Base (and limit too) */
+XEN_CPUFEATURE(NSCB,               11*32+ 6) /*!A Null Selector Clears Base (and limit too) */
 XEN_CPUFEATURE(AUTO_IBRS,          11*32+ 8) /*S  Automatic IBRS */
 XEN_CPUFEATURE(AMD_FSRS,           11*32+10) /*A  Fast Short REP STOSB */
 XEN_CPUFEATURE(AMD_FSRC,           11*32+11) /*A  Fast Short REP CMPSB */
diff --git a/xen/tools/gen-cpuid.py b/xen/tools/gen-cpuid.py
index 13d85a43482a..a0fff6c45676 100755
--- a/xen/tools/gen-cpuid.py
+++ b/xen/tools/gen-cpuid.py
@@ -344,6 +344,12 @@ def crunch_numbers(state):
         # The ARCH_CAPS CPUID bit enumerates the availability of the whole register.
         ARCH_CAPS: feat_range(RDCL_NO, RDCL_NO + 63),
 
+        # AMD-only special case.  NullSelectorClearsBase is really a "hardware
+        # doesn't have this bug any more" bit.  All FRED-capable hardware has
+        # NSCB properties, so disallow configurations which would cause LGKS
+        # to behave unexpectedly.
+        NSCB: [LKGS],
+
         # The behaviour described by RRSBA depend on eIBRS being active.
         EIBRS: [RRSBA],
 
@@ -383,9 +389,13 @@ def crunch_numbers(state):
 
         state.deep_deps[feat] = seen
 
-    state.deep_features = deps.keys()
     state.nr_deep_deps = len(state.deep_deps.keys())
 
+    # deep_features is split per vendor to exlcude certain rows from
+    # processing.
+    state.all_deep_features = set(deps.keys())
+    state.intel_deep_features = state.all_deep_features - set((NSCB, ))
+
     # Calculate the bitfield name declarations.  Leave 4 placeholders on the end
     for word in range(state.nr_entries + 4):
 
@@ -447,7 +457,10 @@ def write_results(state):
 
 #define NR_DEEP_DEPS %sU
 
-#define INIT_DEEP_FEATURES { \\\n%s\n}
+#define INIT_ALL_DEEP_FEATURES { \\\n%s\n}
+
+#define INIT_AMD_DEEP_FEATURES INIT_ALL_DEEP_FEATURES
+#define INIT_INTEL_DEEP_FEATURES { \\\n%s\n}
 
 #define INIT_DEEP_DEPS { \\
 """ % (state.nr_entries,
@@ -462,7 +475,8 @@ def write_results(state):
        format_uint32s(state, state.hvm_hap_def, 4),
        format_uint32s(state, state.hvm_hap_max, 4),
        state.nr_deep_deps,
-       format_uint32s(state, state.deep_features, 4),
+       format_uint32s(state, state.all_deep_features, 4),
+       format_uint32s(state, state.intel_deep_features, 4),
        ))
 
     for dep in sorted(state.deep_deps.keys()):
-- 
2.39.5



From xen-devel-bounces@lists.xenproject.org Wed Apr 08 16:58:56 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 08 Apr 2026 16:58:56 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1276350.1561853 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wAWEr-0007ne-G3; Wed, 08 Apr 2026 16:58:49 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1276350.1561853; Wed, 08 Apr 2026 16:58: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 1wAWEr-0007nX-D7; Wed, 08 Apr 2026 16:58:49 +0000
Received: by outflank-mailman (input) for mailman id 1276350;
 Wed, 08 Apr 2026 16:58: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 1wAWEp-0007nR-Fx
 for xen-devel@lists.xenproject.org; Wed, 08 Apr 2026 16:58:47 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wAWEn-006Qss-8K
 for xen-devel@lists.xenproject.org; Wed, 08 Apr 2026 18:58:46 +0200
Received: from [10.42.69.12] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <andrew.cooper@citrix.com>)
 id 69d68934-2eae-0a2a0a5409dd-0a2a450ce1fc-30
 for <xen-devel@lists.xenproject.org>; Wed, 08 Apr 2026 18:58:46 +0200
Received: from [52.101.193.38]
 (helo=CH1PR05CU001.outbound.protection.outlook.com)
 by tlsNG-d25034.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.0)
 (envelope-from <andrew.cooper@citrix.com>)
 id 69d68944-f40c-0a2a450c0019-3465c126c109-3
 for <xen-devel@lists.xenproject.org>; Wed, 08 Apr 2026 18:58:45 +0200
Received: from CH8PR03MB8275.namprd03.prod.outlook.com (2603:10b6:610:2b9::7)
 by SA3PR03MB8279.namprd03.prod.outlook.com (2603:10b6:806:480::15)
 with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9769.20; Wed, 8 Apr
 2026 16:58: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%6]) with mapi id 15.20.9769.018; Wed, 8 Apr 2026
 16:58: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=P7mXmrPNAXJ8EiFlIJx7sgJU+0DgA+k8f2QEMO5MO6fKh3Jk8n+zIqSrz2MdYHxhx5bqofZGWtkBa/D8Me3dgiEqg0j3hsY2e2BQh2aMN/8faE5/NpNzCX4DRD5l8WDhY980fY0JxILjUWzAstebdd043LFvx3H7JKylVbHub9vrcLiHsjD4mwrkkFzo0Muw7xnjl2ndpXRKlIvqAxKoPg43oGmrtlmZ4zMQnvVZBqPtOPIq7JS3x5C/qB8suX8hF3kj04jahMpRgipWQsR4X/R6XZavZuUxx7ETp/iOifj/1mszs1u1vdchIsS/VsdDcenwFg+WK17SM7ss2e/r/w==
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com;
 s=arcselector10001;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1;
 bh=/YD1H3AF3dvMsrFdCPpttKDlO7I0Femin0BjKcMJ4GE=;
 b=OBSjm4c7au+O8q4XVl1jsq9XNyS672fIYuBKPm0sBTi4eJa9Pjw7YHMcNI6mkgCg/yxT+JkCoT8nhLuoRMiEFlxGTs1qR2j13e7CuX6LPdwyEaamCpa9Mrxowkj3c5HU/akS46L/ArtNIPieA7V0cGNmomVamRmEkc54NMzsJXqqZsCi3gtabwuS6RJ1qocJK2PN/Ksuj4d2XGoYMQJtVRTPsGw4pM6CmOzVR0EgR2w3qVYC1QjtF6nm9uB+zNDJHe0zkiNJSTJPgYyx7DaMFlLRPOMKOKpsHphjO+C62NzcSfVKO4e5wn/jRMwknIb9HoHV/Y0FMLehbSPtkhstCg==
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=/YD1H3AF3dvMsrFdCPpttKDlO7I0Femin0BjKcMJ4GE=;
 b=Rf4OuJVPO4tdJ5gtDnYxV9iPI5/JkXgTbviLX3vD6Mj2nIzQPM2Uf97Eir3i0Qsrk7s6lmVVjqRPFdp8O5VX0WArxwugqj1wHReiWeT3Rh2UEBoipssKFz2xU/Naeqv28cpduEXPy0lfGHhWfLe+sRkP0WtKdMXizSeO7jsdKn0=
Authentication-Results: dkim=none (message not signed)
 header.d=none;dmarc=none action=none header.from=citrix.com;
Message-ID: <f08e0fbf-3570-4760-9977-4e99e651a3a4@citrix.com>
Date: Wed, 8 Apr 2026 17:58:38 +0100
User-Agent: Mozilla Thunderbird
Cc: Andrew Cooper <andrew.cooper3@citrix.com>,
 =?UTF-8?Q?Roger_Pau_Monn=C3=A9?= <roger.pau@citrix.com>,
 Teddy Astie <teddy.astie@vates.tech>
Subject: Re: [PATCH v2 1/3] 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: <f064c3af-c22a-40e0-a268-ee37e34297a3@suse.com>
 <de873764-c803-4f56-b88a-936cb948c382@suse.com>
Content-Language: en-GB
From: Andrew Cooper <andrew.cooper3@citrix.com>
In-Reply-To: <de873764-c803-4f56-b88a-936cb948c382@suse.com>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
X-ClientProxiedBy: LO4P123CA0071.GBRP123.PROD.OUTLOOK.COM
 (2603:10a6:600:153::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_|SA3PR03MB8279:EE_
X-MS-Office365-Filtering-Correlation-Id: e610da4f-700b-4a1c-348c-08de959016a6
X-MS-Exchange-SenderADCheck: 1
X-MS-Exchange-AntiSpam-Relay: 0
X-Microsoft-Antispam:
	BCL:0;ARA:13230040|376014|1800799024|366016|18002099003|22082099003|56012099003;
X-Microsoft-Antispam-Message-Info:
	8tRVGCh4S56+EBLNuXfgOVt3YYnw/kVFg1j25qdwUo0svKm+nDVUMpRaC90H8v10DgM/rXK60clfe3roZ6VJSbxf3x0jbgzGX67rERevoVBjHtQc0E52CiMy3rhexAwdvGzArvPolwvYJCIApYi71vHakihrPkzoRJzTk4z1JepGK3OED+iEQYgXvX7aX597QkqCcfx3maBRl/Kb5XfX6vKiJI7RYYtzpd4vTY5BRs8csQd7UXpUayxaBghmyKe6SK5oNdzaTDUEAFjhbtg2VgsoviuOiE8MflFMjRzBBkouFLvkdxwXw9hFYCvW+HwzFtGwkRIns2G1Tee4sz5d8LDyI1sV3jzK/d9ntkitRMC1FkdEIFX5LFg+u9fpnfjzvYJImY23f/rRMJtRaN0FZVxCxejabb2jYWrTY06aWQ/Dmu979t3R6ICyeG2vKpJKCJTS0rw+xI5BTYYZMRc/hoJ5+0aRLrrNpNIoltYbw0Gfpq0qyatmLybasRBkjNo/+3AxXZ6RO1hyWtc+1fMTuf01LK1hOoKyf3SPAUs13xzMuyoBKe9c2wmHBbs1hfIFA9IVgo1fqttneFVBAtUCECRZdd63vKmUWWqegs9EC+IVsSnamohV8B9kZYhrX+d5Rw6FzUZIj/XaI95S4xP+jB3SISwSIKOmNxeoUMmEAFf+w1oXue9PdwzibUYl2oA+wM1KkMONqOftSQeaeWp58+OrTQ3k7NDHb6OFu/3Fdjs=
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)(1800799024)(366016)(18002099003)(22082099003)(56012099003);DIR:OUT;SFP:1101;
X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1
X-MS-Exchange-AntiSpam-MessageData-0:
	=?utf-8?B?RXJybm9WUXd1SWJRV0J4VW0wbXM3N0hJdVpiM0x5eGJMby8rTUNaUUlEQUV0?=
 =?utf-8?B?TGwyOUlxNC84dGErczhHcWZWZ0oxSVZwdjVSVllWT0grMkRaN1JMQjFidW00?=
 =?utf-8?B?b1dZR0VXSjE2YWEzSFcxelhUT2ptYmp0ODBTMmcrTUtIVUVuN1QzeUN5UHox?=
 =?utf-8?B?ZnZ0R0E4dTFWVURVYzRMWGFRcHE4QVFrelNHMkk4b3BNMkRseFR2WjlyTmNY?=
 =?utf-8?B?bnZXK2NGcUlWeklmSkh0K1crZnJrbGxQWlJyZUF3QlZmWC84YXppaTFaTVBZ?=
 =?utf-8?B?Qi9zWTN2TXhjanNoRmhsNkhLc1p1RHFrdU4yelZFRENYenB2NkcwUlU5Z0Fo?=
 =?utf-8?B?dWZwRkt3T2U4NytOYStUd1l0WXBZSStqZllabkFvZkwwMEVsNEFiRzVOZEg3?=
 =?utf-8?B?WkN1ZE9rTFFTc0ltUk1iSDhXZGQyeHA0MXFCZ1gwN1hjdVZQcDJnTmJodnQ4?=
 =?utf-8?B?WkZNRTFvekpqVWRxa1BCbXE5T2dTS1I4Z2x1RWhVZGg1TEhYUGZ4c3IwTDhw?=
 =?utf-8?B?Ukg4NmxXUXU0czNtZmhLeitRS1ZBWjRXSUlWOXZmZkZZZ2d2SStqZTBwS1VF?=
 =?utf-8?B?R2hqNW8xUG9OVktmZDEyL1B0VElMeEpscEpqbkhoNDU3cHExdzZCSDNxd2Nw?=
 =?utf-8?B?ZFpFWEJwNmhCOGUxa1ZOOFJrMjVPNnp3SmFwUElHeUc0TE5zd2FJRmFvVGJv?=
 =?utf-8?B?aXVlZWVLdDBrWnVJbDBab3BCQkpjQXNrUDZaNXVQd1hDTlhUZDAwMzRudUpX?=
 =?utf-8?B?SllLRnlYakJ0ZDlMc3NjK2Z1aUpRcDdUYTdibnlnZUJJQU8wRWZYV3ptbVVN?=
 =?utf-8?B?WmRua3FQMWhna3UzR1RaWnFKaFlBYW4xSzZBZU5vM3ZVQ0Q3eU9CYWdQRHJW?=
 =?utf-8?B?Vkg4YnFQbDRKSWpyaTByemUwMWV2STBQWHRSVmdXN1RHb1d2dDlibnNVT1Bq?=
 =?utf-8?B?MmNKQ1kvSXBMWDM5NUQ2UVdyMFBnR3BsckNDRDJTaFBFYmt1THQyMm1FNEhC?=
 =?utf-8?B?MURtNlNRSS9kSkxPeTNjS0x6a0pnMWpBLzVYUXQ1VzdTbUo5RDU5dFVTZ0dm?=
 =?utf-8?B?MENJaUlJRWVsMVJpYVowMVk5ZnpjMVZXNnhVNWlzTVNGcG4zQkhLT28rZWl4?=
 =?utf-8?B?eHBZeDUxMjdlSm9GNEJDbVlRMU9VdDBEYnFHdW4wR1Q2RUpsQUJDSHJXQi95?=
 =?utf-8?B?dnlLRngrVSt5SXk4aHJsekZxNVpkN3MyM0djN1hkc0MxVzd6cVFNRnV6a0pW?=
 =?utf-8?B?WUY1eVJkdVBPL2wzMjdDNHY0czhsMEZHTjNOWkRUaWxPTzJybUE2OUxncW1W?=
 =?utf-8?B?UWp6S2laT0JDOGphRm0xY3lMbXBMdTFIcmhkc2V0MUp5VjNtTW43UHVHLytJ?=
 =?utf-8?B?Z1lJTXB3ZDVOZjlRenZGaDJtNklSVERwWFY1c2V0MjFlRC9VZERKdDFiMXBz?=
 =?utf-8?B?N1I5SDFwRWU2MGpVSi9nempBNVI1Qjd0b0NiU0NyU1RqM2dQVm1sSEQ0enpm?=
 =?utf-8?B?VWc3Z0NMeFk5S1JibDB5aTdZdGxLVHhrRWZEeWk1OWEyellYaEVFUHUzaUJk?=
 =?utf-8?B?UHYzakY2N25ia21SNmRNdFl4ZmwrMzJVSlJtMXROeFQwMnB3QWNQNWg2S25N?=
 =?utf-8?B?cUFYSG1GMjlkK09qeXAyTUNQcUxjNzErY1AybmV1U1phSU5DZ0ZjOTlVaXMr?=
 =?utf-8?B?MlplTTlvSFlwbHRFOTlodkJUcmx5NFVweUxadmEyN3hxWGdjdHVqc2tYUFl6?=
 =?utf-8?B?dUFtbXBVMDROMlRZZis1djJ1dytiWmJWbGJLUkE3elhPaVZtR24zVHFLVjFx?=
 =?utf-8?B?K1A5Z2NPSkZyamlmdFhONHNDSkJhZVJncUNvSjFqeUFPSHorWDdoR04rWW40?=
 =?utf-8?B?ZjRoaCs2dVpNWXJsY1owUkpaUU1CWHlHM3Vid0tMOGtZV1IxWFJEbjRnLzhP?=
 =?utf-8?B?Sm1qQlhYODBoZXh0RmliOWkxcmlCWVJkWVpiYS91ekpHOGNacXRzeG54YU1X?=
 =?utf-8?B?dHBVcnJaRU5YN0Yrc1QzNENJT3B6N2lSWElpdkd4a3dQTUlIVlY0a2MxT05n?=
 =?utf-8?B?NEVxVEg2QWtJWFE1c1ZhaWU5dTlpMC9NS1NtQlFqN1JmRGdKekMxbnBIY3Vx?=
 =?utf-8?B?dWd5NnJhZncxMlI5QVBJM3lIdE5pZGxvUDE3R3JpTWRQOEJ1bmZyRDN6Snla?=
 =?utf-8?B?aHJYTmpnYytqS2xUbEloY2xpUGpBelBvdXRuc2tXOXIveG5jaG1OREVqc3lm?=
 =?utf-8?B?LzhZeFpJSWxpbE0rRUs1aHFTaGlwT3FCWnR4Uk9JSjIwSHJtZFVCdkRkY0l6?=
 =?utf-8?B?K2lkTkpScnJlSUhsTHArSUd5NzNIMzlQcmNzWDVycDUvMnluN1B0UEhYa3pL?=
 =?utf-8?Q?O01dA5dC9CZTYhAg=3D?=
X-OriginatorOrg: citrix.com
X-MS-Exchange-CrossTenant-Network-Message-Id: e610da4f-700b-4a1c-348c-08de959016a6
X-MS-Exchange-CrossTenant-AuthSource: CH8PR03MB8275.namprd03.prod.outlook.com
X-MS-Exchange-CrossTenant-AuthAs: Internal
X-MS-Exchange-CrossTenant-OriginalArrivalTime: 08 Apr 2026 16:58:42.2220
 (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: 3/Vjxa7MKGk77NeT8D6X7d1nqI7QKBfvfpgXGITaKWifiOVHeMbQExb/Vk8wzS8HpbCpes+atY+cyj0z+qLWHLOwKgf90kT7XYTJVirW9EU=
X-MS-Exchange-Transport-CrossTenantHeadersStamped: SA3PR03MB8279
X-purgate-ID: tlsNG-d25034/1775667525-A49BFA3D-B21CE93D/0/0
X-purgate-type: clean
X-purgate-size: 1969

On 08/04/2026 1:22 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.
>
> Signed-off-by: Jan Beulich <jbeulich@suse.com>
> ---
> For PUSH_AND_CLEAR_GPRS and POP_GPRS, putting the new field right next to
> the error code isn't entirely nice; putting it ahead of %r15 would entail
> other changes, though. An option may be to not make SSP handling part of
> the macros in the first place. Thoughts?

I have a firm dislike for SAVE/RESTORE_ALL, both for their substantial
complexity/inefficiency, and mixing of unrelated tasks.

I have several series trying to purge them.  I suppose I really ought to
try and finish this off properly.

While classing SSP as a "register" is probably fine, the ssp= parameter
(and particular it's asymmetric nature) is on the wrong side of the
"complex" argument IMO.

> For POP_GPRS, does it really matter that it doesn't alter EFLAGS? 

Yes.  The SYSCALL fix for one (reviewed, but waiting on final testing
before I commit).

Then the VT-x code when swapped to use POP_GPRS.


To take a step back, you say that putting it ahead of %r15 would entail
other changes.  What changes?

The resulting asm would be far cleaner.  It would be an rdssp;push on
one side, and a pop into any register on the other side.  Furthermore,
given that the ssp= doesn't exclude storing it for some user frames,
just store it for all.  It's one push/pop into a hot cacheline, and
makes a substantial reduction in complexity.

~Andrew


From xen-devel-bounces@lists.xenproject.org Wed Apr 08 17:03:24 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 08 Apr 2026 17:03:24 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1276362.1561861 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wAWJI-00012Q-2M; Wed, 08 Apr 2026 17:03:24 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1276362.1561861; Wed, 08 Apr 2026 17:03: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 1wAWJH-00012J-Vy; Wed, 08 Apr 2026 17:03:23 +0000
Received: by outflank-mailman (input) for mailman id 1276362;
 Wed, 08 Apr 2026 17:03:22 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <Oleksii_Moisieiev@epam.com>) id 1wAWJG-00012D-4h
 for xen-devel@lists.xenproject.org; Wed, 08 Apr 2026 17:03:22 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wAWJF-00Akeh-Ah
 for xen-devel@lists.xenproject.org; Wed, 08 Apr 2026 19:03:21 +0200
Received: from [10.42.69.1] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <Oleksii_Moisieiev@epam.com>)
 id 69d68a3f-5cb7-0a2a0a5109dd-0a2a4501c6e2-32
 for <xen-devel@lists.xenproject.org>; Wed, 08 Apr 2026 19:03:21 +0200
Received: from [52.101.84.136]
 (helo=DB3PR0202CU003.outbound.protection.outlook.com)
 by tlsNG-d62444.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.0)
 (envelope-from <Oleksii_Moisieiev@epam.com>)
 id 69d68a58-6fc9-0a2a45010019-34655488f7a1-3
 for <xen-devel@lists.xenproject.org>; Wed, 08 Apr 2026 19:03:21 +0200
Received: from DU5PR03MB10263.eurprd03.prod.outlook.com (2603:10a6:10:519::5)
 by DB9PR03MB7657.eurprd03.prod.outlook.com (2603:10a6:10:2bd::5) with
 Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9745.41; Wed, 8 Apr
 2026 17:03:18 +0000
Received: from DU5PR03MB10263.eurprd03.prod.outlook.com
 ([fe80::8c9e:b301:61c0:3908]) by DU5PR03MB10263.eurprd03.prod.outlook.com
 ([fe80::8c9e:b301:61c0:3908%5]) with mapi id 15.20.9769.020; Wed, 8 Apr 2026
 17:03: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=y656UfJtKELFVM8VyflpHsNtWC1sA/ZgbdZ4cN7sv4GU04bOOohSJTUg5elSy/D6hour/JfdgjlY8wm79KStHJ+/LCYGNSPQsJBwZXBpNnAI63bVI7yTqNseVl83jTXV7prDJsPUqSfUykPxeCp+IQsQrS83Ph6h+QA8gnl2JYA+GZzD94Br5/AijIgfuu2Nr/6WzKeGiRMWx7VAeYYSgwe8U+0CwHfdL+VbnhYkNP185fFEMIBhtUsQB1eUfhjEZXHP5cM3Uaqd6GzVXxpavN6MqeGvSMLqKxIOcRLZT2EYQ9urSkH4zEbayyAHzF5AuRo00HK7OouQ2pIsaOZqEA==
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com;
 s=arcselector10001;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1;
 bh=/l3SYLGzohrpshVbgik0hQjtxJpN+1rqXO7JzQpHF44=;
 b=WSGZ+n+ySKRItrjF4G4WVxDj4iLM3uIkDVV2bRifqAgWnHrryiAHu8ByDFfS+NET2fQNVy9nzf/hREACyvPAy4eYxBme0916yISIyeFntPmQuGmkpVkmfTojfZaqMQOvJFm+s0zwtEqSbU/im9OglNKnwP5uWcv97HiFsnykDfOjoN0KiXxzefABkh/VklfHaFWz9bfg30RmTScSQHhs67jvvZD44+tPfjKFORgvTz9FYcZiCqOHGyn4E3bGpWieDv2iCiqZW6iWl9y/dzSS4s4Eaxc2dTIwS25MLocWVsrT+DJWVkDHiP042YuaJtEUmezbfxfbSOj3UAPVmd4FJg==
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=/l3SYLGzohrpshVbgik0hQjtxJpN+1rqXO7JzQpHF44=;
 b=BmWMkw7NUFeaokswofx/pjNqB6nicc/LterXyyFxFp8W8/PDvGMe2lmwZT4nmW8l672Po16u+x8I325ZZt7213LXfgb8cU6jf2cVVJ+LCcLCQABrljfhAwo5mBpyWc7wySWPeQqXAlFoJVcY+gGGRTCLDcIm5hAPeAjfAuMJJgsBqKi/u8nj+TQAyxx0xqwtDzlkOTmsUcKqA7Ui6DS5pZhQZCexYCK9te4WOilff/IZjOno7prRWUyqOGX0nI8nfdVTVDw87YF8KkX0AeEwQvhlJGv+qAZuMDGADI5us+APbcghuSJig2HDYDna+yScVlYEBpqnYeTpF2MOcghjUw==
From: Oleksii Moisieiev <Oleksii_Moisieiev@epam.com>
To: "xen-devel@lists.xenproject.org" <xen-devel@lists.xenproject.org>
CC: Bertrand Marquis <bertrand.marquis@arm.com>, Julien Grall
	<julien@xen.org>, Michal Orzel <michal.orzel@amd.com>, Stefano Stabellini
	<sstabellini@kernel.org>, Volodymyr Babchuk <Volodymyr_Babchuk@epam.com>,
	Oleksii Moisieiev <Oleksii_Moisieiev@epam.com>
Subject: [PATCH] xen/drivers/char: fix SCIF IRQ registration failure
 propagation
Thread-Topic: [PATCH] xen/drivers/char: fix SCIF IRQ registration failure
 propagation
Thread-Index: AQHcx3mY/W4PalxaQEGlXgb8zysT1A==
Date: Wed, 8 Apr 2026 17:03:18 +0000
Message-ID:
 <6d1996b3d36e4d21e58c0e60876a1976db9a6208.1775667739.git.oleksii_moisieiev@epam.com>
Accept-Language: en-US
Content-Language: en-US
X-MS-Has-Attach:
X-MS-TNEF-Correlator:
authentication-results: dkim=none (message not signed)
 header.d=none;dmarc=none action=none header.from=epam.com;
x-ms-publictraffictype: Email
x-ms-traffictypediagnostic: DU5PR03MB10263:EE_|DB9PR03MB7657:EE_
x-ms-office365-filtering-correlation-id: da4f20a2-a374-4e51-eaeb-08de9590bb52
x-ms-exchange-senderadcheck: 1
x-ms-exchange-antispam-relay: 0
x-microsoft-antispam:
 BCL:0;ARA:13230040|376014|366016|1800799024|38070700021|56012099003|18002099003;
x-microsoft-antispam-message-info:
 0nvg+3mdiMVsTCUfAS7Dz3tfCBWc7PA/SQSZ88DyL0jhVCUbh9TprPNopz8LJiiDG8fOOdpwkMo8a89z1zui5jrL0JqyE6SeAZFfG1/bRt7KFjK6YjgGNmrqRTlepnqLEwT/8WYWKpY8ceMkazOGUtMjcRE/kFM5RvNGgXCmMM1m4Zxlo0xxr4W+BZxw9oVzbtkgCTJCAS2GaEyWG/k5F168MAgh43Nx97gLv1RV0f6ECrCcGbL0DUxHb5eMGWug9kJglVi/kczRaCDpdfYAQXuIO/FGg6VmfVJSbURIOo8qTWN06Hnz48V3wr5RnIXSxlh/dIMzTrUJtSeTql9NfonTnI387ES/X18yzsJdY4SOyytdpW9lLU0ybZDI8rb832CHy887A2LR4rLZmTsnG8Y/2Eo0dL62HZqvyWEvluc5MKDZ6Qnj7ZrxmIkT7OiwnugE7wsNJNzg84fEgLFxfYnqsLP407yce9L9xUzq2IGY/v5eTYgl0p/t2Ayuh9oVewBsjZ8WEUJGL6H+c9kZAlfadZJNYS+Qlvyw36CakNDHndlW1qqtSL83FHAziPEiXGNfJIMQEj8dAW2GNBxqi5fKFCGQxsc6lNMTM2r1j/dp0cy1URxmnTK3ex3qXL0vx0WO+EQaa5s5Rhapr8i6MpNKx0LnOOjWUWTHSrJlvUqGXDEYI+f/TgmanoUJYNYcv2p5pEFadX6iLIzoIl1dgzHQMhQmw6MIDaHsRYTNO75G84TInKJsLhDyCGEBKzbkcmeYknkVj+BA/+6IwOIbGAIBkiOT2OnZekTrbEemk4s=
x-forefront-antispam-report:
 CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:DU5PR03MB10263.eurprd03.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(376014)(366016)(1800799024)(38070700021)(56012099003)(18002099003);DIR:OUT;SFP:1102;
x-ms-exchange-antispam-messagedata-chunkcount: 1
x-ms-exchange-antispam-messagedata-0:
 =?iso-8859-1?Q?cnbsnrgBPSWE8Hb1cxxdHD+GuM7rW/TxrRCf+pILuc3t/t+BMNi4RvtK1P?=
 =?iso-8859-1?Q?UfVC8KQDIOlXuBOi9AoDaAchsBNHQE89+cn7pkiJh6ENWZUjmE/vzkMd7G?=
 =?iso-8859-1?Q?XGq6hGgoIcmBbaE07FMszhiqffN0AocEhoknjRrnhQH012gkrU8MVZu5Dr?=
 =?iso-8859-1?Q?i4fJnyj89qoXr3uaSdr0A5onLn7jMNndr8NdBLq3nM4ewTynUWpycEE5Pu?=
 =?iso-8859-1?Q?I7LUmFMhB8tx5Jy5R2Mcm2RZhOfaRC5wuCyNJ2/Cm7QoerQ2wxB1PAyUt3?=
 =?iso-8859-1?Q?zTzfaTG9XjQ4PR7uUdWoK2j4Ogjbe2uY6BLh8biSnkUQIIc09ZKjqQ/ULa?=
 =?iso-8859-1?Q?n7C8V5agp5flLxM6K8ra36oUbbqwtsCu4b9pkkzbQrY25/eqacL3rvi9Zj?=
 =?iso-8859-1?Q?yCmX9VixKJs4y7iSPWIPl2MmxJ7ox2iFz97X483IxPtl6jkzsXrzN0fpdC?=
 =?iso-8859-1?Q?AVwtJ1vTEMEVvdmSXWv98Qq9Ck5H5WZCGaG2W5tAst7tqiA0WgKfL/dnPm?=
 =?iso-8859-1?Q?FPf2XZqUXE4GgtS0jQNIgmOUCqCyXogu0+2HbhN752hUM4KTePSA4RDvrC?=
 =?iso-8859-1?Q?/SIPOGH+SOtkb690Yu9t7WwoAM2d7iDtOQlo7niKdtxTqEZMyK2O+zTtid?=
 =?iso-8859-1?Q?hrN9mY+DqPgVADR5EvIVt95RP3mw5m+bgJuficPrtDWEymfeu9MfqswSQ6?=
 =?iso-8859-1?Q?udguZ7YMYlua91utMMKxoWdYfjjMZvJ1IK5LJ2MexE7r2DAwKN0matL5bF?=
 =?iso-8859-1?Q?Qr2RGunM1JgO79NQDty9GmHfKjWO+0qewSnyRAahEA9n+rCZIRuoKei+TD?=
 =?iso-8859-1?Q?JzsOtyw+PQBzlQz+iqYgQEzMFClUg/pxpsqIWwKbQelzh7VbYTyARlDVNM?=
 =?iso-8859-1?Q?6suQ3M+I8EmXiNw7Kl5YhSTiUvKyMFL98hAMu8EA+G5rF05ARRe7pyJ/JO?=
 =?iso-8859-1?Q?c5YZ3I71QQw8yaiNnturd2CnPYRWG7GdHnEa83U+8kURp9yTjYe6gmcuXH?=
 =?iso-8859-1?Q?LZZ7KXIaxj0Kz4rBttz1Mhq+pRr7g1ZjsAOYfXQmZw57frrItMdConX6Nj?=
 =?iso-8859-1?Q?uQKye62hlI8K+zhZc3XOxasjme1rRWSvS+omqQgOrnOlU6XKseQsPGoTuZ?=
 =?iso-8859-1?Q?zLC+JfB66SSMEzkjzuLh8fL7JfJEZ4at7Hkx47rUvvwumPNlnOipa4pbHx?=
 =?iso-8859-1?Q?98ocHYwlvJLx1xLFp+OOeQ0+ywKOtv/SD/f2GeZD3AgiDnSQGTELQA6IoE?=
 =?iso-8859-1?Q?x0rXt1Bkh0hChVHwKuwzxR0B5i11Hn00GhjN98ohtHtx+dd83jp117CCrs?=
 =?iso-8859-1?Q?kXlQfCM7aFxWil1UWexf9topDy6taP2rsTPhF/vthmlA+CXW+1X2eFEBaR?=
 =?iso-8859-1?Q?ohIZVsg/6AFIs90vdPvd+3jKpoU0raCsFHK5mvAykhM7qH0EjX6QYGk2F/?=
 =?iso-8859-1?Q?Wde3QhXJxtx98k7PHfdmik5VrUIBH/gHqtNrkyvYsZkuw6LEPdCyJoE7Ti?=
 =?iso-8859-1?Q?5asjH+u7q4hSJjzKDnSU0fPQHBp5CeWj+VgXpu7zCrOKbLYPa2IuO3IPIs?=
 =?iso-8859-1?Q?2RYhIRc9nN7iR+NMxdlY9URCXOWqYBnw+ijNcpoGxG09NGQtAKXN2rMnbN?=
 =?iso-8859-1?Q?giSOXKqFn+fG1FqAXD88rdxhU8qkr14u+pvnv722ORMHKrGc6j6H4Xjfx6?=
 =?iso-8859-1?Q?g4da69O+zvTb7EiMxUTKBthAi7SBcBaTLhrhEO2CXVJOabHFo3mLd0wqWA?=
 =?iso-8859-1?Q?s5nCAgM8OtUoW+bgv8kZCdCzHopXapIAWlRjAWnLcVKF4tCi0WSUvYTAnV?=
 =?iso-8859-1?Q?rPQb0TK22BoWfApMrxycLc5nA/E33+o=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: DU5PR03MB10263.eurprd03.prod.outlook.com
X-MS-Exchange-CrossTenant-Network-Message-Id: da4f20a2-a374-4e51-eaeb-08de9590bb52
X-MS-Exchange-CrossTenant-originalarrivaltime: 08 Apr 2026 17:03:18.2615
 (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: aKtsO1I2IQ4qez60gJsT5SvoCAMNRV0S+uw5CXSFw+jJNc1BVHWwFiFHMabOt/5Ufe4+JXbkr936iOFVmjIEA7Iy/PWFCFuiViHx1piZw9s=
X-MS-Exchange-Transport-CrossTenantHeadersStamped: DB9PR03MB7657
X-purgate-ID: tlsNG-d62444/1775667801-B62E9185-27CF83AC/0/0
X-purgate-type: clean
X-purgate-size: 2951

In scif_uart_init_postirq(), when setup_irq() returns an error the
failure was only logged via dprintk() and execution continued,
unconditionally writing TIE|RIE|REIE into the Serial Control Register
(SCSCR). This armed all three hardware interrupt lines (TX FIFO empty,
RX data ready, receive error) with no handler registered to service
them. On platforms where the GIC receives these asserted lines, the
result is either repeated spurious-interrupt warnings or an unhandled
interrupt fault.

The fix adds an early return inside the error branch. The
interrupt-enable write to SCSCR is skipped entirely when no handler is
registered.

SCIF TX continues to operate correctly after this change. The Xen
serial framework never calls serial_async_transmit() for SCIF, so
port->txbuf is always NULL. This causes __serial_putc() to take the
synchronous finite-capacity path, which polls the SCFSR_TDFE hardware
flag directly and does not depend on the interrupt mechanism.

As a secondary clean-up, the hardware error-flag clearing sequence is
moved to before the setup_irq() call so that error bits accumulated
since init_preirq() are cleared unconditionally, regardless of whether
IRQ registration succeeds.

Signed-off-by: Oleksii Moisieiev <oleksii_moisieiev@epam.com>
---

 xen/drivers/char/scif-uart.c | 16 ++++++++++++----
 1 file changed, 12 insertions(+), 4 deletions(-)

diff --git a/xen/drivers/char/scif-uart.c b/xen/drivers/char/scif-uart.c
index 888821a3b8..673a2d3800 100644
--- a/xen/drivers/char/scif-uart.c
+++ b/xen/drivers/char/scif-uart.c
@@ -187,16 +187,24 @@ static void __init scif_uart_init_postirq(struct seri=
al_port *port)
     uart->irqaction.name    =3D "scif_uart";
     uart->irqaction.dev_id  =3D port;
=20
-    if ( (rc =3D setup_irq(uart->irq, 0, &uart->irqaction)) !=3D 0 )
-        dprintk(XENLOG_ERR, "Failed to allocated scif_uart IRQ %d\n",
-                uart->irq);
-
     /* Clear all errors */
     if ( scif_readw(uart, params->status_reg) & params->error_mask )
         scif_writew(uart, params->status_reg, ~params->error_mask);
     if ( scif_readw(uart, params->overrun_reg) & params->overrun_mask )
         scif_writew(uart, params->overrun_reg, ~params->overrun_mask);
=20
+    if ( (rc =3D setup_irq(uart->irq, 0, &uart->irqaction)) !=3D 0 )
+    {
+        dprintk(XENLOG_ERR, "Failed to allocated scif_uart IRQ %d\n",
+                uart->irq);
+        /*
+         * If the IRQ handler could not be installed (setup_irq failed),
+         * do not enable TX/RX or error interrupts. Serial transmit will
+         * fall back to polling mode.
+         */
+        return;
+    }
+
     /* Enable TX/RX and Error Interrupts  */
     scif_writew(uart, SCIF_SCSCR, scif_readw(uart, SCIF_SCSCR) |
                 params->irq_flags);
--=20
2.43.0

base-commit: 599e3daf63ee2a83bb7096c452aa05b4aea84f2f
branch: amoi_dfmea_scif=


From xen-devel-bounces@lists.xenproject.org Wed Apr 08 17:23:50 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 08 Apr 2026 17:23:50 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1276424.1561895 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wAWd4-0005QW-6H; Wed, 08 Apr 2026 17:23:50 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1276424.1561895; Wed, 08 Apr 2026 17:23: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 1wAWd4-0005QN-3f; Wed, 08 Apr 2026 17:23:50 +0000
Received: by outflank-mailman (input) for mailman id 1276424;
 Wed, 08 Apr 2026 17:23:49 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <bounce-md_30504962.69d68f21.v1-a9ac9385157d4fe2811a2f8d5aeda822@bounce.vates.tech>)
 id 1wAWd3-0005Q7-3O
 for xen-devel@lists.xenproject.org; Wed, 08 Apr 2026 17:23:49 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wAWd2-005z4v-Fd
 for xen-devel@lists.xenproject.org; Wed, 08 Apr 2026 19:23:48 +0200
Received: from [10.42.69.9] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1) (envelope-from
 <bounce-md_30504962.69d68f21.v1-a9ac9385157d4fe2811a2f8d5aeda822@bounce.vates.tech>)
 id 69d68f00-e002-0a2a0a5209dd-0a2a4509a776-34
 for <xen-devel@lists.xenproject.org>; Wed, 08 Apr 2026 19:23:48 +0200
Received: from [198.2.180.46] (helo=mail180-46.suw31.mandrillapp.com)
 by tlsNG-bad1c0.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.0)
 (envelope-from
 <bounce-md_30504962.69d68f21.v1-a9ac9385157d4fe2811a2f8d5aeda822@bounce.vates.tech>)
 id 69d68f22-bf79-0a2a45090019-c602b42e53ca-3
 for <xen-devel@lists.xenproject.org>; Wed, 08 Apr 2026 19:23:48 +0200
Received: from pmta11.mandrill.prod.suw01.rsglab.com (localhost [127.0.0.1])
 by mail180-46.suw31.mandrillapp.com (Mailchimp) with ESMTP id
 4frVKF48ZWz8XVRgS
 for <xen-devel@lists.xenproject.org>; Wed,  8 Apr 2026 17:23:45 +0000 (GMT)
Received: from [37.26.189.201] by mandrillapp.com id
 a9ac9385157d4fe2811a2f8d5aeda822; Wed, 08 Apr 2026 17:23: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=mte1 header.d=mandrillapp.com header.i="@mandrillapp.com" header.h="From:Subject:To:Cc:Message-Id:In-Reply-To:References:Feedback-ID:Date:MIME-Version:Content-Type:Content-Transfer-Encoding"; dkim=pass header.s=mte1 header.d=vates.tech header.i="thierry.escande@vates.tech" header.h="From:Subject:To:Cc:Message-Id:In-Reply-To:References:Feedback-ID:Date:MIME-Version:Content-Type:Content-Transfer-Encoding"
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=mandrillapp.com;
	s=mte1; t=1775669025; x=1775939025;
	bh=bL/Y0h09vhas0clUhCqZuQCPZsSmUUKUpgqhUdmmhks=;
	h=From:Subject:To:Cc:Message-Id:In-Reply-To:References:Feedback-ID:
	 Date:MIME-Version:Content-Type:Content-Transfer-Encoding:CC:Date:
	 Subject:From;
	b=AkuGAWul21I7hqPr7vG5L4oaDg6JuP/l8JnQqIRW+1hRaONFUZYgaUiXOqD1FHOmb
	 IcNy4U/BqDnZBrwgUOCBBn5mLtX/o8nvvI+mhIExq/RiFkWfDik8LnDYCo2loIYYEp
	 O9loGTWF3FLrC1oquRTlW5UZdYFhNoJV6ztyNt9BXvxri6A0awKvK1icNQUdTd2Z+E
	 S1sLVF0pqP7CDGdXQSl8J+Vzi85Mc3QKuOOodt8Mlj2cS/AbUz4qlyrpBxE1P1Xsmv
	 5v046kdgKnjF70Xbvoz3qqOADi9sJDGxE99ifZCxZHs/qpP+HSywSGNRHwNhr+Tiu9
	 gn+6Tlz8RoQSA==
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=vates.tech; s=mte1;
	t=1775669025; x=1775929525; i=thierry.escande@vates.tech;
	bh=bL/Y0h09vhas0clUhCqZuQCPZsSmUUKUpgqhUdmmhks=;
	h=From:Subject:To:Cc:Message-Id:In-Reply-To:References:Feedback-ID:
	 Date:MIME-Version:Content-Type:Content-Transfer-Encoding:CC:Date:
	 Subject:From;
	b=a2BE5wjKAyRaDbTphxwyPGO/DgF0jM9cK+4dPpThdNIDVOsQt45QMBSjDxTOV6Lvc
	 abdDRqsCDYx53WSGv7a3G03uAB4rZWYqqbfyR9hrc+8t6OlmGEiV0vtKYdh3BM5aa8
	 HTNg43kZT8tKMbgb0nEJIEZbM1PvRV4S7V4mO2VuQg+T7RbTTSD/htyzg8R10eo/g3
	 rh1dY17f8P29zcAYNv+scOh5yW++S/swbpxaXaXBO4lrbDV8PS4zxKa3LpyzTUJrFm
	 yoPtGBC4s1FRdFAUMAfKoF/puW7MxvCqVmcfXcMWbyMzzqQ+npwtrhXY3YmCI39ITD
	 C3uCg8i8FMBaw==
From: "Thierry Escande" <thierry.escande@vates.tech>
Subject: =?utf-8?Q?[RFC=20PATCH=201/3]=20xl:=20Add=20pci=20device=20hotplug=20option?=
X-Mailer: git-send-email 2.53.0
X-Bm-Disclaimer: Yes
X-Bm-Milter-Handled: 4ffbd6c1-ee69-4e1b-aabd-f977039bd3e2
X-Bm-Transport-Timestamp: 1775669024628
To: xen-devel@lists.xenproject.org
Cc: "Thierry Escande" <thierry.escande@vates.tech>, "Anthony PERARD" <anthony.perard@vates.tech>, "Juergen Gross" <jgross@suse.com>, "=?utf-8?Q?Daniel=20P=20.=20Berrang=C3=A9?=" <berrange@redhat.com>, "=?utf-8?Q?Marek=20Marczykowski-G=C3=B3recki?=" <marmarek@invisiblethingslab.com>
Message-Id: <20260408172320.539750-2-thierry.escande@vates.tech>
In-Reply-To: <20260408172320.539750-1-thierry.escande@vates.tech>
References: <20260408172320.539750-1-thierry.escande@vates.tech>
X-Native-Encoded: 1
X-Report-Abuse: =?UTF-8?Q?Please=20forward=20a=20copy=20of=20this=20message,=20including=20all=20headers,=20to=20abuse@mandrill.com.=20You=20can=20also=20report=20abuse=20here:=20https://mandrillapp.com/contact/abuse=3Fid=3D30504962.a9ac9385157d4fe2811a2f8d5aeda822?=
X-Mandrill-User: md_30504962
Feedback-ID: 30504962:30504962.20260408:md
Date: Wed, 08 Apr 2026 17:23:45 +0000
MIME-Version: 1.0
Content-Type: text/plain; charset=utf-8
Content-Transfer-Encoding: 7bit
X-purgate-ID: tlsNG-bad1c0/1775669028-2E74A152-EAE45717/0/0
X-purgate-type: clean
X-purgate-size: 2895

This option is used to passthrough PCI devices using the Qemu command
line (-device driver,...) instead of the QMP hot-plug mechanism.

This is needed for Q35 support since its PCI root bus doesn't support
hotplugging.

If not specified, the default behavior is to use hotplug via QMP.

Signed-off-by: Thierry Escande <thierry.escande@vates.tech>
---
 tools/libs/light/libxl_types.idl | 1 +
 tools/libs/util/libxlu_pci.c     | 2 ++
 tools/xl/xl_parse.c              | 5 +++++
 3 files changed, 8 insertions(+)

diff --git a/tools/libs/light/libxl_types.idl b/tools/libs/light/libxl_types.idl
index a7893460f0..aca0e93793 100644
--- a/tools/libs/light/libxl_types.idl
+++ b/tools/libs/light/libxl_types.idl
@@ -922,6 +922,7 @@ libxl_device_pci = Struct("device_pci", [
     ("seize", bool),
     ("rdm_policy", libxl_rdm_reserve_policy),
     ("name", string),
+    ("hotplug", bool),
     ])
 
 libxl_device_rdm = Struct("device_rdm", [
diff --git a/tools/libs/util/libxlu_pci.c b/tools/libs/util/libxlu_pci.c
index 294482c6d7..f6440c878b 100644
--- a/tools/libs/util/libxlu_pci.c
+++ b/tools/libs/util/libxlu_pci.c
@@ -192,6 +192,8 @@ int xlu_pci_parse_spec_string(XLU_Config *cfg, libxl_device_pci *pci,
             name_present = true;
             pci->name = strdup(val);
             if (!pci->name) ret = ERROR_NOMEM;
+        } else if (!strcmp(key, "hotplug")) {
+            pci->hotplug = atoi(val);
         } else {
             XLU__PCI_ERR(cfg, "Unknown PCI_SPEC_STRING option: %s", key);
             ret = ERROR_INVAL;
diff --git a/tools/xl/xl_parse.c b/tools/xl/xl_parse.c
index 48c72dce9c..7ea2a76662 100644
--- a/tools/xl/xl_parse.c
+++ b/tools/xl/xl_parse.c
@@ -1361,6 +1361,7 @@ void parse_config_data(const char *config_source,
     int pci_msitranslate = 0;
     int pci_permissive = 0;
     int pci_seize = 0;
+    int pci_hotplug = 1;
     int i, e;
     int num_llc_colors;
     int num_xs_quota;
@@ -1699,6 +1700,9 @@ void parse_config_data(const char *config_source,
     if (!xlu_cfg_get_long (config, "pci_seize", &l, 0))
         pci_seize = l;
 
+    if (!xlu_cfg_get_long (config, "pci_hotplug", &l, 0))
+        pci_hotplug = l;
+
     if (!xlu_cfg_get_string(config, "rdm", &buf, 0)) {
         libxl_rdm_reserve rdm;
         if (!xlu_rdm_parse(config, &rdm, buf)) {
@@ -1720,6 +1724,7 @@ void parse_config_data(const char *config_source,
             pci->power_mgmt = pci_power_mgmt;
             pci->permissive = pci_permissive;
             pci->seize = pci_seize;
+            pci->hotplug = pci_hotplug;
             /*
              * Like other pci option, the per-device policy always follows
              * the global policy by default.
-- 
2.53.0



--
Thierry Escande | Vates XCP-ng Developer

XCP-ng & Xen Orchestra - Vates solutions

web: https://vates.tech



From xen-devel-bounces@lists.xenproject.org Wed Apr 08 17:23:50 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 08 Apr 2026 17:23:50 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1276423.1561887 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wAWcy-0005D6-W2; Wed, 08 Apr 2026 17:23:44 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1276423.1561887; Wed, 08 Apr 2026 17:23: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 1wAWcy-0005Cz-St; Wed, 08 Apr 2026 17:23:44 +0000
Received: by outflank-mailman (input) for mailman id 1276423;
 Wed, 08 Apr 2026 17:23:44 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <bounce-md_30504962.69d68f1c.v1-c66f53c3790a424abefe018ecad7fdfe@bounce.vates.tech>)
 id 1wAWcx-0005Ct-WA
 for xen-devel@lists.xenproject.org; Wed, 08 Apr 2026 17:23:44 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wAWcx-005z4v-Ao
 for xen-devel@lists.xenproject.org; Wed, 08 Apr 2026 19:23:43 +0200
Received: from [10.42.69.9] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1) (envelope-from
 <bounce-md_30504962.69d68f1c.v1-c66f53c3790a424abefe018ecad7fdfe@bounce.vates.tech>)
 id 69d68f00-e002-0a2a0a5209dd-0a2a4509a776-32
 for <xen-devel@lists.xenproject.org>; Wed, 08 Apr 2026 19:23:43 +0200
Received: from [198.2.180.46] (helo=mail180-46.suw31.mandrillapp.com)
 by tlsNG-bad1c0.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.0)
 (envelope-from
 <bounce-md_30504962.69d68f1c.v1-c66f53c3790a424abefe018ecad7fdfe@bounce.vates.tech>)
 id 69d68f1c-bf79-0a2a45090019-c602b42ee0c0-3
 for <xen-devel@lists.xenproject.org>; Wed, 08 Apr 2026 19:23:41 +0200
Received: from pmta11.mandrill.prod.suw01.rsglab.com (localhost [127.0.0.1])
 by mail180-46.suw31.mandrillapp.com (Mailchimp) with ESMTP id
 4frVK80ckpz8XS3Fl
 for <xen-devel@lists.xenproject.org>; Wed,  8 Apr 2026 17:23:40 +0000 (GMT)
Received: from [37.26.189.201] by mandrillapp.com id
 c66f53c3790a424abefe018ecad7fdfe; Wed, 08 Apr 2026 17:23: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=mte1 header.d=mandrillapp.com header.i="@mandrillapp.com" header.h="From:Subject:To:Cc:Message-Id:Feedback-ID:Date:MIME-Version:Content-Type:Content-Transfer-Encoding"; dkim=pass header.s=mte1 header.d=vates.tech header.i="thierry.escande@vates.tech" header.h="From:Subject:To:Cc:Message-Id:Feedback-ID:Date:MIME-Version:Content-Type:Content-Transfer-Encoding"
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=mandrillapp.com;
	s=mte1; t=1775669020; x=1775939020;
	bh=xxNIkKDN7lXNq1YcBt2lBjJMfrZZXPZ7kai8JheAc4c=;
	h=From:Subject:To:Cc:Message-Id:Feedback-ID:Date:MIME-Version:
	 Content-Type:Content-Transfer-Encoding:CC:Date:Subject:From;
	b=qiMdTQWE1bdnulNELNeIvu60g+5c5C6AgFZqutAvC6wZvfwhfR77YwHqQlAn11SwO
	 1OgkSIZomjfhOHNtNLk1WRAc8u0TBhNE7Mq02a2Jnll4ImFPI1SAA4+bIA3dbwZZYw
	 fI3FVEc81NkRsjPyuN1/ieY12O/QxVWqVUmQyXhiobXZY5HbK0if6F1i1/QglSOLQy
	 KS3Z4rlc15OTrqWnsL+Q9N+fO4zGcHAxV6gp/HcAnHELIrvcGMH4eMNGJz94hR3zqg
	 92F+uotoUBU0CSOiSgoF1/+PHJgu0r5jTKIXyj8OfWHGc2ByXIHvDIllNWwNb8q0qJ
	 xC/1GKK6cVcBg==
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=vates.tech; s=mte1;
	t=1775669020; x=1775929520; i=thierry.escande@vates.tech;
	bh=xxNIkKDN7lXNq1YcBt2lBjJMfrZZXPZ7kai8JheAc4c=;
	h=From:Subject:To:Cc:Message-Id:Feedback-ID:Date:MIME-Version:
	 Content-Type:Content-Transfer-Encoding:CC:Date:Subject:From;
	b=cRDh1wQGpCSsGYEveRboT3EZRfkLWw28GtuggH8cRt18dHs1zXRNAvDm9xftmdlXB
	 30yxtc9b5N1EOfTscxGui7UR8G+/VhfQYzI9mVmVpXYJYlzOIo/Rnd41mbDKK0REuo
	 oPtQdFxzq+7NEkiZ1dCWNpWjr4VE1g888HpQkMRPP+45NZtH0hF05nL0S2G71728Hg
	 GxJHz9idyd+EPgqvW5QdzEztsduUG/uTTj0vtLULmTxJHifINmuv1jKQeUHcwmBzzO
	 fEk+ElhPnC3ICzJlJngzYzrJeCZU56YTubFX1Oz4t2Opr3LkeEJrXsyh3d75J2PRzn
	 y6bZ4Cih1mPEg==
From: "Thierry Escande" <thierry.escande@vates.tech>
Subject: =?utf-8?Q?[RFC=20PATCH=200/3]=20xl:=20Allow=20PCI=20devices=20to=20be=20passthrough'd=20via=20Qemu=20command=20line?=
X-Mailer: git-send-email 2.53.0
X-Bm-Disclaimer: Yes
X-Bm-Milter-Handled: 4ffbd6c1-ee69-4e1b-aabd-f977039bd3e2
X-Bm-Transport-Timestamp: 1775669019256
To: xen-devel@lists.xenproject.org
Cc: "Thierry Escande" <thierry.escande@vates.tech>, "Anthony PERARD" <anthony.perard@vates.tech>, "Juergen Gross" <jgross@suse.com>, "=?utf-8?Q?Daniel=20P=20.=20Berrang=C3=A9?=" <berrange@redhat.com>, "=?utf-8?Q?Marek=20Marczykowski-G=C3=B3recki?=" <marmarek@invisiblethingslab.com>
Message-Id: <20260408172320.539750-1-thierry.escande@vates.tech>
X-Native-Encoded: 1
X-Report-Abuse: =?UTF-8?Q?Please=20forward=20a=20copy=20of=20this=20message,=20including=20all=20headers,=20to=20abuse@mandrill.com.=20You=20can=20also=20report=20abuse=20here:=20https://mandrillapp.com/contact/abuse=3Fid=3D30504962.c66f53c3790a424abefe018ecad7fdfe?=
X-Mandrill-User: md_30504962
Feedback-ID: 30504962:30504962.20260408:md
Date: Wed, 08 Apr 2026 17:23:40 +0000
MIME-Version: 1.0
Content-Type: text/plain; charset=utf-8
Content-Transfer-Encoding: 7bit
X-purgate-ID: tlsNG-bad1c0/1775669021-54D5F152-527CBC20/0/0
X-purgate-type: clean
X-purgate-size: 2481

This series adds support for a new 'hotplug' option for PCI devices to be
passthrough'd to guests.

The current mechanism for device passthrough uses QMP device_add command
to hot-plug PCI devices to the guest Qemu instance. This is an issue for
guests running on Q35 chipset (preliminary support posted at [1]) since the
Q35 PCI root bus does not support hotplug. Devices could be hotplugged to
a secondary PCI bus but Xen only support 1 PCI bus for now.

The 'hotplug' option allows to control how devices are attached to the
guest, either by using the legacy QMP mechanism (this is the default) or by
passing it directly to the Qemu command line using xen-pci-passthrough
device.

Example usage in cfg file:
 pci = [ "00:03.0,seize=1,hotplug=0" ]

Since Qemu -device option accepts parameters in json format, this
patchset adds a new internal function libxl__device_pci_get_qmp_json() that
generates the device json object used for both QMP hotplug and command line
passing.
Also, the function libxl_pci_assignable() is made available from libxl.h
for access in libxl_dm.c. I don't know if it's ok to make it public or if
it should stay private. Maybe it should be renamed as
libxl_device_pci_assignable() to match the other PCI device APIs.

This has been successfully tested on Xen 4.22-dev and Qemu 10.0 running
Debian VMs in both Bios and UEFI mode with a passthrough'd nvme disk.
Disabling the hotplug mechanism might be made mandatory for Q35 machines
later, once Q35 support is merged upstream.

[1] https://lore.kernel.org/xen-devel/20260313163455.790692-1-thierry.escande@vates.tech/

Thierry Escande (3):
  xl: Add pci device hotplug option
  libxl: Allow PCI device passthrough using -device Qemu command line
  docs: provide description for pci hotplug option

 docs/man/xl-pci-configuration.5.pod | 17 ++++++++++++
 docs/man/xl.cfg.5.pod.in            |  6 +++++
 tools/include/libxl.h               |  1 +
 tools/libs/light/libxl_dm.c         | 31 ++++++++++++++++++++++
 tools/libs/light/libxl_internal.h   |  2 ++
 tools/libs/light/libxl_pci.c        | 41 ++++++++++++++++++++++-------
 tools/libs/light/libxl_types.idl    |  1 +
 tools/libs/util/libxlu_pci.c        |  2 ++
 tools/xl/xl_parse.c                 |  5 ++++
 9 files changed, 96 insertions(+), 10 deletions(-)

-- 
2.53.0



--
Thierry Escande | Vates XCP-ng Developer

XCP-ng & Xen Orchestra - Vates solutions

web: https://vates.tech



From xen-devel-bounces@lists.xenproject.org Wed Apr 08 17:23:56 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 08 Apr 2026 17:23:56 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1276425.1561905 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wAWdA-0005hj-DW; Wed, 08 Apr 2026 17:23:56 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1276425.1561905; Wed, 08 Apr 2026 17: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 1wAWdA-0005hc-9j; Wed, 08 Apr 2026 17:23:56 +0000
Received: by outflank-mailman (input) for mailman id 1276425;
 Wed, 08 Apr 2026 17:23:54 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <bounce-md_30504962.69d68f28.v1-c0022b9fc07d4103bf9af3bb4037bf57@bounce.vates.tech>)
 id 1wAWd8-0005gI-Mc
 for xen-devel@lists.xenproject.org; Wed, 08 Apr 2026 17:23:54 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wAWd8-005z9Y-1O
 for xen-devel@lists.xenproject.org; Wed, 08 Apr 2026 19:23:54 +0200
Received: from [10.42.69.7] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1) (envelope-from
 <bounce-md_30504962.69d68f28.v1-c0022b9fc07d4103bf9af3bb4037bf57@bounce.vates.tech>)
 id 69d68f15-e002-0a2a0a5209dd-0a2a4507ddfe-26
 for <xen-devel@lists.xenproject.org>; Wed, 08 Apr 2026 19:23:54 +0200
Received: from [198.2.178.25] (helo=mail178-25.suw51.mandrillapp.com)
 by tlsNG-ef75cf.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.0)
 (envelope-from
 <bounce-md_30504962.69d68f28.v1-c0022b9fc07d4103bf9af3bb4037bf57@bounce.vates.tech>)
 id 69d68f28-ba2d-0a2a45070019-c602b219cc9a-3
 for <xen-devel@lists.xenproject.org>; Wed, 08 Apr 2026 19:23:53 +0200
Received: from pmta13.mandrill.prod.suw01.rsglab.com (localhost [127.0.0.1])
 by mail178-25.suw51.mandrillapp.com (Mailchimp) with ESMTP id
 4frVKN4P3rz4f3wgP
 for <xen-devel@lists.xenproject.org>; Wed,  8 Apr 2026 17:23:52 +0000 (GMT)
Received: from [37.26.189.201] by mandrillapp.com id
 c0022b9fc07d4103bf9af3bb4037bf57; Wed, 08 Apr 2026 17:23: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=mte1 header.d=mandrillapp.com header.i="@mandrillapp.com" header.h="From:Subject:To:Cc:Message-Id:In-Reply-To:References:Feedback-ID:Date:MIME-Version:Content-Type:Content-Transfer-Encoding"; dkim=pass header.s=mte1 header.d=vates.tech header.i="thierry.escande@vates.tech" header.h="From:Subject:To:Cc:Message-Id:In-Reply-To:References:Feedback-ID:Date:MIME-Version:Content-Type:Content-Transfer-Encoding"
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=mandrillapp.com;
	s=mte1; t=1775669032; x=1775939032;
	bh=7/8Qd+P7SPVDgY0eBLO5nKimQuCthoxn0Jd92VJL7wU=;
	h=From:Subject:To:Cc:Message-Id:In-Reply-To:References:Feedback-ID:
	 Date:MIME-Version:Content-Type:Content-Transfer-Encoding:CC:Date:
	 Subject:From;
	b=jZazIJ0jtqK0cqYE93+/V8XeLf8Yjrc5neEFcG92fAIu8nH8ixZBnxhOpquNEYBx4
	 TQuEwPv9OIRSe2KRYM1bshjh9bkhVymd9MimGM2Nb8CgzHKCy0Q30hJ9TwP0qAqPPS
	 5tmEvbcIGjYzB5nOrss/SBrI/m9MY1Hhi092Tdl+Xrx0SpnkuylvvwdBK8aYCG/UHb
	 BZYdrwXLHhBd3nozJ+kKVV4oZse2vIovxbdlhbFaE4Bayk8rLmO/1ufffG+qt9qFQb
	 qZo+1/KGWp3124sgN76Ja+aftxu5hJIc045swJs/c/4otr5aOMjNk0pQanLhOMPV+w
	 qP3JlWNKH0Awg==
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=vates.tech; s=mte1;
	t=1775669032; x=1775929532; i=thierry.escande@vates.tech;
	bh=7/8Qd+P7SPVDgY0eBLO5nKimQuCthoxn0Jd92VJL7wU=;
	h=From:Subject:To:Cc:Message-Id:In-Reply-To:References:Feedback-ID:
	 Date:MIME-Version:Content-Type:Content-Transfer-Encoding:CC:Date:
	 Subject:From;
	b=E3itFUbe/nZOklJZtVcEesSu0M7DPkwzIAzJmgtTf2Nd3p9lMXWJSGOtPLZ9sWAqk
	 b4ZUumkX/jypTAv1JETOqF6U7q3o6ZAqLxBQkItJfmjbaG0WbMLZ/9fukQm85voWGW
	 ub6r6dAstkniBpjxcstjr1kezyCwBhilaBf55RsjFF9N11EVHsDf0DN/wk9zwc5WNr
	 /P6lW0N2SsAo6tnkaKkXYUy3EkLKVEXEq3YG3rD6YulGlB7gaE4N53PpzEhv9F1Wbt
	 uH/7CyuMVWoMpL2yj1uIk0PdsZoRJF5XOed7+MkwdAMu+vqS76MAYGXrTWTnlniTB+
	 pacSjYaac9v3w==
From: "Thierry Escande" <thierry.escande@vates.tech>
Subject: =?utf-8?Q?[RFC=20PATCH=202/3]=20libxl:=20Allow=20PCI=20device=20passthrough=20using=20-device=20Qemu=20command=20line?=
X-Mailer: git-send-email 2.53.0
X-Bm-Disclaimer: Yes
X-Bm-Milter-Handled: 4ffbd6c1-ee69-4e1b-aabd-f977039bd3e2
X-Bm-Transport-Timestamp: 1775669030410
To: xen-devel@lists.xenproject.org
Cc: "Thierry Escande" <thierry.escande@vates.tech>, "Anthony PERARD" <anthony.perard@vates.tech>, "Juergen Gross" <jgross@suse.com>, "=?utf-8?Q?Daniel=20P=20.=20Berrang=C3=A9?=" <berrange@redhat.com>, "=?utf-8?Q?Marek=20Marczykowski-G=C3=B3recki?=" <marmarek@invisiblethingslab.com>
Message-Id: <20260408172320.539750-3-thierry.escande@vates.tech>
In-Reply-To: <20260408172320.539750-1-thierry.escande@vates.tech>
References: <20260408172320.539750-1-thierry.escande@vates.tech>
X-Native-Encoded: 1
X-Report-Abuse: =?UTF-8?Q?Please=20forward=20a=20copy=20of=20this=20message,=20including=20all=20headers,=20to=20abuse@mandrill.com.=20You=20can=20also=20report=20abuse=20here:=20https://mandrillapp.com/contact/abuse=3Fid=3D30504962.c0022b9fc07d4103bf9af3bb4037bf57?=
X-Mandrill-User: md_30504962
Feedback-ID: 30504962:30504962.20260408:md
Date: Wed, 08 Apr 2026 17:23:52 +0000
MIME-Version: 1.0
Content-Type: text/plain; charset=utf-8
Content-Transfer-Encoding: 7bit
X-purgate-ID: tlsNG-ef75cf/1775669034-83D4741E-F54737BC/0/0
X-purgate-type: clean
X-purgate-size: 7318

This change makes use of the new option 'hotplug' for host PCI devices
passthrough'd to the guest. If hotplug=0 is used in the pci device
configuration table, the device will be attached to the guest using the
Qemu command line as '-device xen-pci-passthrough,hostaddr=...'

The host device configuration is passed to the -device option as a json
array, just like it's done for hotplug using QMP. The json array is
created by a new internal function libxl__device_pci_get_qmp_json() that
is also used by pci_add_qmp_device_add().

Then, instead of sending the 'device_add' command, the device_add
callback is called to perform the 'query-pci' check to make sure the
passthrough'd device is present.

In the same way at shutdown, the device is not removed using QMP and
only the pci_remove_done() function is called.

As with QMP, the use of the 'hotplug=0' option honors the 'seize' option
by adding the PCI device to the assignable list if needed.

Example use:
 pci = [ "00:03.0,seize=1,hotplug=0" ]

Signed-off-by: Thierry Escande <thierry.escande@vates.tech>
---
 tools/include/libxl.h             |  1 +
 tools/libs/light/libxl_dm.c       | 31 +++++++++++++++++++++++
 tools/libs/light/libxl_internal.h |  2 ++
 tools/libs/light/libxl_pci.c      | 41 +++++++++++++++++++++++--------
 4 files changed, 65 insertions(+), 10 deletions(-)

diff --git a/tools/include/libxl.h b/tools/include/libxl.h
index 7c098edab6..66fb07ad67 100644
--- a/tools/include/libxl.h
+++ b/tools/include/libxl.h
@@ -2666,6 +2666,7 @@ int libxl_device_pci_assignable_add(libxl_ctx *ctx, libxl_device_pci *pci, int r
 int libxl_device_pci_assignable_remove(libxl_ctx *ctx, libxl_device_pci *pci, int rebind);
 libxl_device_pci *libxl_device_pci_assignable_list(libxl_ctx *ctx, int *num);
 void libxl_device_pci_assignable_list_free(libxl_device_pci *list, int num);
+bool libxl_pci_assignable(libxl_ctx *ctx, libxl_device_pci *pci);
 
 /* CPUID handling */
 int libxl_cpuid_parse_config(libxl_cpuid_policy_list *cpuid, const char* str);
diff --git a/tools/libs/light/libxl_dm.c b/tools/libs/light/libxl_dm.c
index 511ec76a65..96bb620f87 100644
--- a/tools/libs/light/libxl_dm.c
+++ b/tools/libs/light/libxl_dm.c
@@ -1169,6 +1169,37 @@ static int libxl__build_device_model_args_new(libxl__gc *gc,
                     }
                 }
             }
+
+            if (guest_config->num_pcidevs) {
+                libxl_device_pci *pci;
+                libxl__json_object *qmp_json;
+                const char *json_str;
+#ifndef HAVE_LIBJSONC
+#   error Missing JSON library
+#endif
+                json_object *jso = NULL;
+
+                for (i = 0; i < guest_config->num_pcidevs; i++) {
+                    libxl_ctx *ctx = libxl__gc_owner(gc);
+                    pci = &guest_config->pcidevs[i];
+
+                    if (pci->hotplug)
+                        continue;
+
+                    if (!libxl_pci_assignable(ctx, pci) && pci->seize) {
+                        rc = libxl_device_pci_assignable_add(ctx, pci, 1);
+                        if (rc)
+                            return rc;
+                    }
+                    qmp_json = libxl__device_pci_get_qmp_json(gc, pci);
+                    rc = libxl__json_object_to_json_object(gc, &jso, qmp_json);
+                    if (rc)
+                        return rc;
+                    json_str = json_object_to_json_string_ext(jso,
+                                                              JSON_C_TO_STRING_PLAIN);
+                    flexarray_vappend(dm_args, "-device", json_str, NULL);
+                }
+            }
         }
 
         if (libxl_defbool_val(b_info->u.hvm.nographic) && (!sdl && !vnc)) {
diff --git a/tools/libs/light/libxl_internal.h b/tools/libs/light/libxl_internal.h
index b65e0064b9..06b5a14409 100644
--- a/tools/libs/light/libxl_internal.h
+++ b/tools/libs/light/libxl_internal.h
@@ -1729,6 +1729,8 @@ _hidden int libxl__device_pci_setdefault(libxl__gc *gc, uint32_t domid,
                                          libxl_device_pci *pci, bool hotplug);
 _hidden bool libxl__is_igd_vga_passthru(libxl__gc *gc,
                                         const libxl_domain_config *d_config);
+_hidden libxl__json_object *libxl__device_pci_get_qmp_json(libxl__gc *gc,
+                                                         libxl_device_pci *pci);
 
 /* from libxl_dtdev */
 
diff --git a/tools/libs/light/libxl_pci.c b/tools/libs/light/libxl_pci.c
index 49d272d0de..3ef2c43412 100644
--- a/tools/libs/light/libxl_pci.c
+++ b/tools/libs/light/libxl_pci.c
@@ -1098,16 +1098,10 @@ out:
     pci_add_dm_done(egc, pas, rc); /* must be last */
 }
 
-static void pci_add_qmp_device_add(libxl__egc *egc, pci_add_state *pas)
+libxl__json_object *libxl__device_pci_get_qmp_json(libxl__gc *gc,
+                                                   libxl_device_pci *pci)
 {
-    STATE_AO_GC(pas->aodev->ao);
     libxl__json_object *args = NULL;
-    int rc;
-
-    /* Convenience aliases */
-    libxl_domid domid = pas->domid;
-    libxl_device_pci *pci = &pas->pci;
-    libxl__ev_qmp *const qmp = &pas->qmp;
 
     libxl__qmp_param_add_string(gc, &args, "driver",
                                 "xen-pci-passthrough");
@@ -1134,11 +1128,30 @@ static void pci_add_qmp_device_add(libxl__egc *egc, pci_add_state *pas)
     if (pci->permissive)
         libxl__qmp_param_add_bool(gc, &args, "permissive", true);
 
+    return args;
+}
+
+static void pci_add_qmp_device_add(libxl__egc *egc, pci_add_state *pas)
+{
+    STATE_AO_GC(pas->aodev->ao);
+    libxl__json_object *args = NULL;
+    int rc = 0;
+
+    /* Convenience aliases */
+    libxl_domid domid = pas->domid;
+    libxl_device_pci *pci = &pas->pci;
+    libxl__ev_qmp *const qmp = &pas->qmp;
+
+    args = libxl__device_pci_get_qmp_json(gc, pci);
+
     qmp->ao = pas->aodev->ao;
     qmp->domid = domid;
     qmp->payload_fd = -1;
     qmp->callback = pci_add_qmp_device_add_cb;
-    rc = libxl__ev_qmp_send(egc, qmp, "device_add", args);
+    if (pci->hotplug)
+        rc = libxl__ev_qmp_send(egc, qmp, "device_add", args);
+    else
+        pci_add_qmp_device_add_cb(egc, qmp, NULL, 0);
     if (rc) goto out;
     return;
 
@@ -1509,7 +1522,7 @@ int libxl_device_pci_add(libxl_ctx *ctx, uint32_t domid,
     return AO_INPROGRESS;
 }
 
-static bool libxl_pci_assignable(libxl_ctx *ctx, libxl_device_pci *pci)
+bool libxl_pci_assignable(libxl_ctx *ctx, libxl_device_pci *pci)
 {
     libxl_device_pci *pcis;
     int num;
@@ -1820,6 +1833,14 @@ static void do_pci_remove(libxl__egc *egc, pci_remove_state *prs)
     libxl_domain_type type = libxl__domain_type(gc, domid);
     libxl_device_pci *pci = &prs->pci;
     int rc, num;
+
+    /* Passthrough'd device has been passed to Qemu command line so there is
+     * no need to remove it via QMP */
+    if (!pci->hotplug) {
+        pci_remove_done(egc, prs, 0);
+        return;
+    }
+
     pcis = libxl_device_pci_list(ctx, domid, &num);
     if (!pcis) {
         rc = ERROR_FAIL;
-- 
2.53.0



--
Thierry Escande | Vates XCP-ng Developer

XCP-ng & Xen Orchestra - Vates solutions

web: https://vates.tech



From xen-devel-bounces@lists.xenproject.org Wed Apr 08 17:24:00 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 08 Apr 2026 17:24:00 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1276428.1561913 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wAWdE-00060c-NW; Wed, 08 Apr 2026 17:24:00 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1276428.1561913; Wed, 08 Apr 2026 17:24: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 1wAWdE-00060V-Ka; Wed, 08 Apr 2026 17:24:00 +0000
Received: by outflank-mailman (input) for mailman id 1276428;
 Wed, 08 Apr 2026 17:23:58 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <bounce-md_30504962.69d68f2c.v1-44c5db41318c4e0bbf8ffde4898d605a@bounce.vates.tech>)
 id 1wAWdC-0005x3-MH
 for xen-devel@lists.xenproject.org; Wed, 08 Apr 2026 17:23:58 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wAWdC-006jn2-2J
 for xen-devel@lists.xenproject.org; Wed, 08 Apr 2026 19:23:58 +0200
Received: from [10.42.69.2] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1) (envelope-from
 <bounce-md_30504962.69d68f2c.v1-44c5db41318c4e0bbf8ffde4898d605a@bounce.vates.tech>)
 id 69d68ef4-bab6-0a2a0a5309dd-0a2a450295d8-36
 for <xen-devel@lists.xenproject.org>; Wed, 08 Apr 2026 19:23:58 +0200
Received: from [198.2.180.46] (helo=mail180-46.suw31.mandrillapp.com)
 by tlsNG-720697.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.0)
 (envelope-from
 <bounce-md_30504962.69d68f2c.v1-44c5db41318c4e0bbf8ffde4898d605a@bounce.vates.tech>)
 id 69d68f2c-42fa-0a2a45020019-c602b42e8a13-3
 for <xen-devel@lists.xenproject.org>; Wed, 08 Apr 2026 19:23:57 +0200
Received: from pmta11.mandrill.prod.suw01.rsglab.com (localhost [127.0.0.1])
 by mail180-46.suw31.mandrillapp.com (Mailchimp) with ESMTP id
 4frVKS4FH1z8XVRg6
 for <xen-devel@lists.xenproject.org>; Wed,  8 Apr 2026 17:23:56 +0000 (GMT)
Received: from [37.26.189.201] by mandrillapp.com id
 44c5db41318c4e0bbf8ffde4898d605a; Wed, 08 Apr 2026 17:23: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=mte1 header.d=mandrillapp.com header.i="@mandrillapp.com" header.h="From:Subject:To:Cc:Message-Id:In-Reply-To:References:Feedback-ID:Date:MIME-Version:Content-Type:Content-Transfer-Encoding"; dkim=pass header.s=mte1 header.d=vates.tech header.i="thierry.escande@vates.tech" header.h="From:Subject:To:Cc:Message-Id:In-Reply-To:References:Feedback-ID:Date:MIME-Version:Content-Type:Content-Transfer-Encoding"
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=mandrillapp.com;
	s=mte1; t=1775669036; x=1775939036;
	bh=dBdXC8CLXllaOOaQAKE2xMRBGZ2MJ8SlC6WJCLiAOQE=;
	h=From:Subject:To:Cc:Message-Id:In-Reply-To:References:Feedback-ID:
	 Date:MIME-Version:Content-Type:Content-Transfer-Encoding:CC:Date:
	 Subject:From;
	b=XZE8gBvZWloVMYtiIeoTj1MB1z6InRyjNsL2DMJxfQRMPuuCpyqz143vvpTWY91Bi
	 xAtAmo4X/sHLd1s7AlbC9Ql2fi953LVhxYBMml7mX+6r2fxmaefOBHhePvqxOVu4T5
	 sLXYq4DrG/nILAIIbYJktfJ54KrpZqfrfyVFUhUt2aO84WeXM9aUftNjUDBn2F/2Qn
	 R1z6XY5M2yqWY3vSlT2DLT3JOdH4WN4E+Zt6QTCbbkSsz5yPynpMXnksq+Ol73g6eo
	 RzMy1CE4FTfjp2hKndFY0susW3UA6BkhuBKzh2dPmOOZHguRdKJmLRDkoOkzVGQYHx
	 PriXoRjz3xZYA==
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=vates.tech; s=mte1;
	t=1775669036; x=1775929536; i=thierry.escande@vates.tech;
	bh=dBdXC8CLXllaOOaQAKE2xMRBGZ2MJ8SlC6WJCLiAOQE=;
	h=From:Subject:To:Cc:Message-Id:In-Reply-To:References:Feedback-ID:
	 Date:MIME-Version:Content-Type:Content-Transfer-Encoding:CC:Date:
	 Subject:From;
	b=DmDbwGmEh+MUtKjHP/VlSdzvF3WAEBEt5upyEfz+cf6/WHGl1NssmE0vipkbKPRa8
	 dV/aEB5yxOUCKsALo2XV9oVv7EudzTlLXupraI4y1PGenEAgKAKMSx7ayEvi7v5g9q
	 pg/L3HRoaR6t5S7xJJiZaI5qALgRiLhydi7Yt2D8kqVDrR6iICUaY60RyrfJO/6AaI
	 x94LoA4fwXRGNVFarWNgvGgQPe1pBvl1LKJzdQJNw45bKEUFi2TcMT1s3qpBHAJRlz
	 QIrSxwYh7IAsL3bZSHWbYtgMvwjwm/c1HizkJov1j2dQlMWy/vY3qnpnD/Y8yqykYn
	 0GxFEwSZ0ewxg==
From: "Thierry Escande" <thierry.escande@vates.tech>
Subject: =?utf-8?Q?[RFC=20PATCH=203/3]=20docs:=20provide=20description=20for=20pci=20hotplug=20option?=
X-Mailer: git-send-email 2.53.0
X-Bm-Disclaimer: Yes
X-Bm-Milter-Handled: 4ffbd6c1-ee69-4e1b-aabd-f977039bd3e2
X-Bm-Transport-Timestamp: 1775669035607
To: xen-devel@lists.xenproject.org
Cc: "Thierry Escande" <thierry.escande@vates.tech>, "Anthony PERARD" <anthony.perard@vates.tech>, "Juergen Gross" <jgross@suse.com>, "=?utf-8?Q?Daniel=20P=20.=20Berrang=C3=A9?=" <berrange@redhat.com>, "=?utf-8?Q?Marek=20Marczykowski-G=C3=B3recki?=" <marmarek@invisiblethingslab.com>
Message-Id: <20260408172320.539750-4-thierry.escande@vates.tech>
In-Reply-To: <20260408172320.539750-1-thierry.escande@vates.tech>
References: <20260408172320.539750-1-thierry.escande@vates.tech>
X-Native-Encoded: 1
X-Report-Abuse: =?UTF-8?Q?Please=20forward=20a=20copy=20of=20this=20message,=20including=20all=20headers,=20to=20abuse@mandrill.com.=20You=20can=20also=20report=20abuse=20here:=20https://mandrillapp.com/contact/abuse=3Fid=3D30504962.44c5db41318c4e0bbf8ffde4898d605a?=
X-Mandrill-User: md_30504962
Feedback-ID: 30504962:30504962.20260408:md
Date: Wed, 08 Apr 2026 17:23:56 +0000
MIME-Version: 1.0
Content-Type: text/plain; charset=utf-8
Content-Transfer-Encoding: 7bit
X-purgate-ID: tlsNG-720697/1775669037-AF122CD1-A241C7AF/0/0
X-purgate-type: clean
X-purgate-size: 1877

This patch adds description for the 'hotplug' PCI option, allowing
devices to be attached to the guest using the legacy QMP hotplug
mechanism or by passing them to the Qemu command line using '-device'.

Signed-off-by: Thierry Escande <thierry.escande@vates.tech>
---
 docs/man/xl-pci-configuration.5.pod | 17 +++++++++++++++++
 docs/man/xl.cfg.5.pod.in            |  6 ++++++
 2 files changed, 23 insertions(+)

diff --git a/docs/man/xl-pci-configuration.5.pod b/docs/man/xl-pci-configuration.5.pod
index 0691f06ad3..8b664173cb 100644
--- a/docs/man/xl-pci-configuration.5.pod
+++ b/docs/man/xl-pci-configuration.5.pod
@@ -166,6 +166,23 @@ dom0 without confirmation.  Please use with care.
 
 =back
 
+=item B<hotplug>=I<BOOLEAN>
+
+=over 4
+
+=item Description
+
+Tells L<xl(1)> to use QMP hotplug mechanism to attach assignable device to
+the guest, or to pass it via Qemu command line using
+'B<-device xen-pci-passthrough,...>'. The default is to use the legacy QMP
+mechanism.
+
+=item Default Value
+
+1
+
+=back
+
 =item B<power_mgmt>=I<BOOLEAN>
 
 =over 4
diff --git a/docs/man/xl.cfg.5.pod.in b/docs/man/xl.cfg.5.pod.in
index 3aac0bc4fb..181aaffa0f 100644
--- a/docs/man/xl.cfg.5.pod.in
+++ b/docs/man/xl.cfg.5.pod.in
@@ -1230,6 +1230,12 @@ B<(HVM only)> Changes the default value of B<power_mgmt> for all PCI
 devices passed through to this VM. See B<power_mgmt>
 above.
 
+=item B<pci_hotplug=BOOLEAN>
+
+B<(HVM only)> Changes the default value of B<hotplug> for all PCI
+devices passed through to this VM. See L<xl-pci-configuration(5)> for
+more details.
+
 =item B<gfx_passthru=BOOLEAN|"STRING">
 
 Enable graphics device PCI passthrough. This option makes an assigned
-- 
2.53.0



--
Thierry Escande | Vates XCP-ng Developer

XCP-ng & Xen Orchestra - Vates solutions

web: https://vates.tech



From xen-devel-bounces@lists.xenproject.org Wed Apr 08 17:35:03 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 08 Apr 2026 17:35:03 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1276459.1561922 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wAWnq-0000GZ-LI; Wed, 08 Apr 2026 17:34:58 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1276459.1561922; Wed, 08 Apr 2026 17: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 1wAWnq-0000GR-IV; Wed, 08 Apr 2026 17:34:58 +0000
Received: by outflank-mailman (input) for mailman id 1276459;
 Wed, 08 Apr 2026 17:34:57 +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 1wAWnp-0000GJ-QP
 for xen-devel@lists.xenproject.org; Wed, 08 Apr 2026 17:34:57 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wAWnn-006Wgq-Kg
 for xen-devel@lists.xenproject.org; Wed, 08 Apr 2026 19:34:57 +0200
Received: from [10.42.69.7] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <andrew.cooper@citrix.com>)
 id 69d691a2-5cb7-0a2a0a5109dd-0a2a4507b0a6-32
 for <xen-devel@lists.xenproject.org>; Wed, 08 Apr 2026 19:34:57 +0200
Received: from [52.101.56.50]
 (helo=BN1PR04CU002.outbound.protection.outlook.com)
 by tlsNG-ef75cf.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.0)
 (envelope-from <andrew.cooper@citrix.com>)
 id 69d691bf-ba2d-0a2a45070019-34653832128f-3
 for <xen-devel@lists.xenproject.org>; Wed, 08 Apr 2026 19:34:56 +0200
Received: from CH8PR03MB8275.namprd03.prod.outlook.com (2603:10b6:610:2b9::7)
 by SJ0PR03MB6567.namprd03.prod.outlook.com (2603:10b6:a03:388::11)
 with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9745.28; Wed, 8 Apr
 2026 17:34:53 +0000
Received: from CH8PR03MB8275.namprd03.prod.outlook.com
 ([fe80::a70d:dc32:bba8:ce37]) by CH8PR03MB8275.namprd03.prod.outlook.com
 ([fe80::a70d:dc32:bba8:ce37%6]) with mapi id 15.20.9769.018; Wed, 8 Apr 2026
 17: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=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=ZXuO7gq2ZiEUpwDOWe4P640XjCyuFNE07m+hX8sI8E/q7CXwzeAlPoAz3bJqosC2kVNQgC3bb5mXbYK+iF+W9Fw1kN4q9TNrwFAPYcKAbkepaC8VFhQJLS1uldZrrR6CrvLxNIoyxMC2Aw7Js28rPfKNOUUNxBwXJ+sTY58tAWo4WI1FQnBHhBH7kgdsKFWqGd0XD+ZuapI5Q6DKkNzxaSmGQHFq+A7uYw5ob23+6eC3TGErOenuD9SI4WCMz/fqB+CkFW3grOqxws+n/6gSAHM2SnA+d/7ue5BKnlzSdG8M59xrApSsQgqB5Eq9sEKI4uFZMqKttb4tXWkFi9YMHA==
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com;
 s=arcselector10001;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1;
 bh=n/5++fakmtAqPuvXEf/y5YLO0oNpqBA5ait8Co9rnzg=;
 b=FBAP7N3rZD81sIzQrRGUtP5ahFqJQM52cIqQUjCvFJHIas/bzBcsoTArH+fSMDM1zxQatpE5EWh0jFMaRtoK6iiDdoccsmT/f9o5Gnudq7/VotkszuDm7su8XH/toMgipUAzGEVWnxVXG+ebF9KVRJBWluKqfBblbL9tyoOuAYW2yci+r9qIBkVsaP5a7HkrTQJ61/9QKMqwT90DY7/dWnW/wjSB4623xyOcUWKxHzFteGP2nUTwiyj6omQ0vb6niN8XLsS943zava5JPUbmbufId8BlF63jXB7gcHFl6pmm8psnqWOyVleeIPGNpk+mrfg+slLsjGDpVNh/XU6Tiw==
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=n/5++fakmtAqPuvXEf/y5YLO0oNpqBA5ait8Co9rnzg=;
 b=MIRD1BmMxyBJEI5O3MJgcJpLXIfpXoLncXa6W5h16IPSyAjF08IchLdJs9S/v8SpNHFuaXwxtj1AtzXy06DKlMhA3A9x9grK/XhaWSMrXFTySnlwKDw2A/vfeRz82CBsWD9pDJ4BkJzVw0NeGLtj5gEPH7l+HUg+JNpNTpzusVI=
Authentication-Results: dkim=none (message not signed)
 header.d=none;dmarc=none action=none header.from=citrix.com;
Message-ID: <9b9586d2-c18d-47b5-bce0-4c9a4570bcfd@citrix.com>
Date: Wed, 8 Apr 2026 18:34:48 +0100
User-Agent: Mozilla Thunderbird
Cc: Andrew Cooper <andrew.cooper3@citrix.com>,
 =?UTF-8?Q?Roger_Pau_Monn=C3=A9?= <roger.pau@citrix.com>,
 Teddy Astie <teddy.astie@vates.tech>
Subject: Re: [PATCH v2 2/3] x86/traps: use entry_ssp in
 fixup_exception_return()
To: Jan Beulich <jbeulich@suse.com>,
 "xen-devel@lists.xenproject.org" <xen-devel@lists.xenproject.org>
References: <f064c3af-c22a-40e0-a268-ee37e34297a3@suse.com>
 <79c90706-0530-4b72-9b43-f003dfe87291@suse.com>
Content-Language: en-GB
From: Andrew Cooper <andrew.cooper3@citrix.com>
In-Reply-To: <79c90706-0530-4b72-9b43-f003dfe87291@suse.com>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
X-ClientProxiedBy: LO3P265CA0011.GBRP265.PROD.OUTLOOK.COM
 (2603:10a6:600:bb::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_|SJ0PR03MB6567:EE_
X-MS-Office365-Filtering-Correlation-Id: c16b5718-97e0-4725-3f52-08de95952462
X-MS-Exchange-SenderADCheck: 1
X-MS-Exchange-AntiSpam-Relay: 0
X-Microsoft-Antispam:
	BCL:0;ARA:13230040|376014|1800799024|366016|56012099003|22082099003|18002099003;
X-Microsoft-Antispam-Message-Info:
	NTZr4F6w2V/UIXEB7gtV6X2gs4aBX+AqHkD+YB4gHLn2xb5SwPexgcray1mMUXKXmxxw3fq8XhDM0BaQ2jmZipENiv8mH59GFMm9E014Wmq77UoCRwhXND1TqtKvYZoG4vc/OhHFKRnZ9AMOhPvPbPnZJq+cfY+mbFmiHwHh0XImZ/+VqVQ4Z2hBw73guH1o/HBdFqN8CE+SJxm8NcAC9VgOc3M+7moiuF/mKdiA71xH+dxZjP4/MQHzc5Wu7UkMkWuQzHPpRCl26qxFMXTYXkOoPxGeIwnMkh3iK0jvy/5wktQ4wACPag0GJIJR0JXqHtIcCRBk8Z4ACdafcj5KKZQv9msQuXTGXZWQ7jbtpAJUmdA8u5t8Vtcdt3YeEM5gXTeZZ8heOJse/Ncc7IBUcvhuET80mkQsWDijO05s30lSBupm++U9aqR1zPMNSGBpl4+l5fwfzNIwIa/E732aBi7x02PtR51m/Ms7VPOdqMTgNQ5U48SdywoW+/z5CDSWm709dASg7jarTCjXIcNMpiZmONuSli9Mzk4TXQ1BzNQTjLSZjfPYsWaMB4oR1ebuw6r0nspB7J5+EAOXTSTIKMhyM4uwjY46sVzrFrY4JhDNf6j60wdtqGwYe545SzsN5g6fjYIcWlWX4YI6Z2L4dTN0Rhjalv+KHr1zG3aCTgXdhNj1BEzmoH3Xc7Y0eugkoN9qbF4oyXEuwsKrEVNXOUjbGzdUivxRzaz1Zft1wJE=
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)(1800799024)(366016)(56012099003)(22082099003)(18002099003);DIR:OUT;SFP:1101;
X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1
X-MS-Exchange-AntiSpam-MessageData-0:
	=?utf-8?B?Z2ZvdlNCSWdHbUZrQ2dTWmZhMnZkcHdMajQwSFdheVNXZ3ZGajMyRjQwYUtR?=
 =?utf-8?B?MnJxRklBM21ncnRPVXVZV2R0UDdkSnBvREs4dXVVNllSOXFDaWJzWWNudFZY?=
 =?utf-8?B?L3cxS0s0UHRpVWJjT0NxaVkxYmdmVmVJUmducmFGRjJVbGlNaGlsbDBUYkNq?=
 =?utf-8?B?OTU5Y3pMam5YK0phUGdBM3ppSXZ3ZFBVNGhLK1VRRWdwVTFzT3NTWUl4Tyt4?=
 =?utf-8?B?dHZncEJSV21CQXlnTHFCNi9WU0dZd2dpcm9pU2Eyek41Vk1NVE1QR25BQnBS?=
 =?utf-8?B?aTdHaEFSYUUvcjg1YTRXT2xTM2lVaGdzVGJ1dmg5RGEvYncwZ0xNa2pVUzVK?=
 =?utf-8?B?THB5ZmNHZkwzRGtZTHdKbktmSkRMVzFPc1RscjhSNUQyZWpaYkVoTXIwTTVF?=
 =?utf-8?B?bXZ0TUhicmdFTnFUeUZHczJITVBuaVBEcUJYRkpISjAybFdhYjdCUmNvVzNV?=
 =?utf-8?B?ZkZkUFZmUmhaTnpBWkFIc3JLSFNsL080cnBCZ3NpNUZDK0h0d3k0M2V4c2NC?=
 =?utf-8?B?bHhJN0JQNHlzeHd6anlacEkzRjcvcHNZRG9CSkdWa3VSazdzZnNac2JHaWtU?=
 =?utf-8?B?THBJRzZxQ0RkWVVvUmpTMDdFUmlYUE1MWHg3SEc5MUVQZEdyc1hiWVA4RWY2?=
 =?utf-8?B?dERTSlAxUWRjeTdkYXRFUVNuemVkcjUxbldlUWQvbWZvL0t5a1ZMMkZQZWsy?=
 =?utf-8?B?cUZtWi9jQTVzYm5kL0ZXaGxUNjUxSFpiUVgwOWJna3U2VEJLRkZ1RVJNdU9t?=
 =?utf-8?B?RXZsa3ptTmgyVFhJeGtVcEVUaE41R21YL3lNTHNPQ2FNRlBHcHNyTWZLc1RP?=
 =?utf-8?B?VFB6aGNNYjQxeGlhNGNNVng1Tmh0OWRmYlU4b3RrUCtwMGR5SEpPVitFeENl?=
 =?utf-8?B?ZlBHVVg2dCtJSlhCUVo0Tk85MHBNWEw5K3hUeHdNT3F1U0RDRVM3Y0hBUmRD?=
 =?utf-8?B?ZTRuMXZkK1RKV2diZ1Z2UC8wM1A3amFwMVRkNXRNeHExWkNic1c2Kzg2Mm0v?=
 =?utf-8?B?Ymdpb2FXVHh2MHNicHdrSUR4cjBKM2d4VFYrczZyT2VBM3cxQkNtQXZWY0VG?=
 =?utf-8?B?S0hBb0xqMEFHWEQrb1lMZGFzQytlRm1sU1J1a3oxZU1iNlpwRUJGdUplL09E?=
 =?utf-8?B?ZmE1Z1VPRzhUUC9QYVRvdWxhZWxCWVNzeVhWT1Y2akI2VmZKaFR3bC9vT2JZ?=
 =?utf-8?B?V1IxRUtVRHVZL2FPTGNaM2pZbUJkYVJaR2xhcFlEYzRMNTFjUUt1OW1Wencw?=
 =?utf-8?B?RGs2WjIybDFBUFFNaENoc2owQTJNZkVkTG1aWXN5aFRFVWJ2ay9zZGZKN3N5?=
 =?utf-8?B?L2czMEdNcVpvZXd6MHV0MFgzdlJqQkFnT2xBZ3Z2dnBjdnhvdHVjS2g0aUx1?=
 =?utf-8?B?eGs0VktiZHRtWURKSUhkWkdzS3FSSEcxbGs1YWR3NFk5YXdhWkI0bzFOcDQ0?=
 =?utf-8?B?eE5yc0o0QmhJb3ZLbFU4a0k1S3RyUkNEUG5RN2h2M2FpcWRyWkU4aTRzYldY?=
 =?utf-8?B?eVl6RUtGTTZuK25SNXFSSHlhVDRsMjE1YkNEYlcwc3F5c21HbVZaa0RoRnhz?=
 =?utf-8?B?bXRScG5KRXFTcVhSOU9QWjNKalBGSGhzLzFlYTNIZUgzRTRMVksrWDRUNngw?=
 =?utf-8?B?YXRsZk1NWGVnUFJackhqNUp2aEsrckdyQzBpVXJuOW5UOWlDYmRVVmdlN3g4?=
 =?utf-8?B?UllDNS9JTmd5N2NNeE0vVFJocjJSbk1KMGpGeFdGMjhjcFBJclhwSWlZdnpx?=
 =?utf-8?B?dHB1d1BKakZHT20wcXUyMVJXTE5jN2ZaeFlOUG0ybm5CUVBhT0ROZEpJRGYz?=
 =?utf-8?B?NXZycElsUEtiZ3NLUmc5VzIyVU9sUlA0dzFpNGdlWkZ2WXRDdEJwY2FwWFdJ?=
 =?utf-8?B?MDZmMmo5NWpocXpmSDRTSGMwWVNVN1M5aXlIVG1MN2FDekJRaXMrNG1ybElZ?=
 =?utf-8?B?V3h5Mzg1c3c2ZnNpOXY4cTYwdzBzNWJRQkpjc3VEeG5zYzJtTkVEMU51LzZY?=
 =?utf-8?B?ajNpV2lJWlExckY2TE9pVlFodUdGRkNPaURmUlIwdTdXcTU0M3U5ZW9VMnBF?=
 =?utf-8?B?amErYWR5cmlaTmZIN2cwQTZkbFZkS1ZkWFNSUHBqSmZwK25CRHhnYXVReDNG?=
 =?utf-8?B?TkUzYzVXak41K01oSCs4SnRlSGlmZ0FRQXRLZTdoemZLU0YwZ1VlS05Qcy9r?=
 =?utf-8?B?KzEvSGI2R0UxenV6WGN1RURFdmxYQ0tVNXplWDU2L2NXZDBMU0UyRlhXTVdu?=
 =?utf-8?B?UXBZTE1ZUjk3QzRpR2o0QmpNK1lFREtHODk1K01rRTROV0lsOGVTM1NPb21U?=
 =?utf-8?B?QXJvMWF5RUs4eEloclVVa3Y4OFFBSUxZQmtvRXV4YTNBWnZ1cnBnUlhvYUFK?=
 =?utf-8?Q?5eRzvGaZAcaT6W2g=3D?=
X-OriginatorOrg: citrix.com
X-MS-Exchange-CrossTenant-Network-Message-Id: c16b5718-97e0-4725-3f52-08de95952462
X-MS-Exchange-CrossTenant-AuthSource: CH8PR03MB8275.namprd03.prod.outlook.com
X-MS-Exchange-CrossTenant-AuthAs: Internal
X-MS-Exchange-CrossTenant-OriginalArrivalTime: 08 Apr 2026 17:34:52.7024
 (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: QGtqp9OwirZhUczLuigAHEfl8InYOQtmkuAkUXvLWpmL6a6y3/h0nVANoWe/pj+5rWS0l044UwgtJD1FZbbbYHd7yzyhWSJs/LOGfqCgeCw=
X-MS-Exchange-Transport-CrossTenantHeadersStamped: SJ0PR03MB6567
X-purgate-ID: tlsNG-ef75cf/1775669697-8AB4841E-8F97FA01/0/0
X-purgate-type: clean
X-purgate-size: 1721

On 08/04/2026 1:23 pm, Jan Beulich wrote:
> 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 pointin one slot

pointing

> --- a/xen/arch/x86/traps.c
> +++ b/xen/arch/x86/traps.c
> @@ -1187,26 +1174,28 @@ 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);

This BUG() isn't correct.

We can be in a fixup while in an IST handler, at which point SSP does
not point to the primary shstk.  e.g. wrmsr_safe() in #MC.

If you're looking to at least roughly bound it, check that it's any
where in the stack range.  The WRSS below will #PF if SSP isn't
referring to a shadow stack.

Alternatively, add an is_shstk_page() predicate which checks for
get_stack_page() == 5,0 which are the two shstk frames in the block of 8.

~Andrew


From xen-devel-bounces@lists.xenproject.org Wed Apr 08 17:54:22 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 08 Apr 2026 17:54:22 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1276471.1561932 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wAX6N-0003WR-5T; Wed, 08 Apr 2026 17:54:07 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1276471.1561932; Wed, 08 Apr 2026 17:54: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 1wAX6N-0003WK-2R; Wed, 08 Apr 2026 17:54:07 +0000
Received: by outflank-mailman (input) for mailman id 1276471;
 Wed, 08 Apr 2026 17:54:06 +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 1wAX6M-0003WE-6t
 for xen-devel@lists.xenproject.org; Wed, 08 Apr 2026 17:54:06 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wAX6L-00GEIJ-Iv
 for xen-devel@lists.xenproject.org; Wed, 08 Apr 2026 19:54:05 +0200
Received: from [10.42.69.4] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <andrew.cooper@citrix.com>)
 id 69d69629-2eae-0a2a0a5409dd-0a2a45048cb2-10
 for <xen-devel@lists.xenproject.org>; Wed, 08 Apr 2026 19:54:05 +0200
Received: from [40.93.194.12]
 (helo=SN4PR0501CU005.outbound.protection.outlook.com)
 by tlsNG-ebf023.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.0)
 (envelope-from <andrew.cooper@citrix.com>)
 id 69d6963b-bb33-0a2a45040019-285dc20ca07b-3
 for <xen-devel@lists.xenproject.org>; Wed, 08 Apr 2026 19:54:05 +0200
Received: from CH8PR03MB8275.namprd03.prod.outlook.com (2603:10b6:610:2b9::7)
 by CO1PR03MB7796.namprd03.prod.outlook.com (2603:10b6:303:274::21)
 with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9769.16; Wed, 8 Apr
 2026 17:54: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%6]) with mapi id 15.20.9769.018; Wed, 8 Apr 2026
 17:54: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=kmatBLpbgfd73eJyAeLNYvhUqAH3H115PzjOJ0FufJk461+Aw7zncCvf/Lm1p2rAWIU+R6DE7jpM5n1mr/zfyz0dRY35seok7Do/AGM9KEmxjqiNwkk+W0ykU09f1aV3ZQTVO5BuYlhQSdJKWDVpgoKoM/VKjS9KA0zrSh3v92K9CvpySzqIckQftn8SLFxXW+7YSlIcJrIbyn3q1VxdCchTnDce559L3bAdXV72F/B4tit8IVpEgqWOUguhsm8qaem38UuYmB38HCEly9rLRb+BM6RcJX4Vgh35JPoPZcK4/B6R5gcYqhKKG0KVGkWq5tjG9ziCv0KCwBlPSsEnlA==
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com;
 s=arcselector10001;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1;
 bh=AIMrzchhdGia6eH2W6vZNViMK6HO3jKFZOOV2fmad9E=;
 b=qsL+T81q3PrCicYYtnS85I0qF0yUSe4p14qwmjT5HaGdSgW/YWPk3HokdAfHRH5FQHGQ4goP5tCiu/5+VahbjFZTR4JNotxdBWQkpcZVd3uug83tXcWxPyXEbqUg1amznihpPdpmyGZeRSDXesys4232KPE+7SXzu9HxxeQy0qGSbgrx4DRJHV62Botzciy0mdLcnErYp/PntFzAeF1QGWOdF5QaoAXlO7Sxonsp8uHPlXrjcd8WDeZPDzq6zEF8KsCMXerKbLJbUiRiZZAXSqo+aRDQKuhxUt7GecklIdTJ1Sk/+qjJRhb47l1Z7LAWxcwtriB7tWWcWXvev5o11A==
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=AIMrzchhdGia6eH2W6vZNViMK6HO3jKFZOOV2fmad9E=;
 b=t9GiuBh/37R6LWpm0GW69NThyDetLDB/t4N4VzqD4hbu56s4BgTvgHnb72HBeK/TSFEobTRdgeW/asWQnFpwkogr7wHkzD3utGY9W8swhBRMPMva20cF1A8PZvCu234hhI10T360mffpXEwbtMYrp0MaxWrEp0NQ7jbaok33B/w=
Authentication-Results: dkim=none (message not signed)
 header.d=none;dmarc=none action=none header.from=citrix.com;
Message-ID: <7ca7679f-c160-44c2-98ed-f1b1761255d4@citrix.com>
Date: Wed, 8 Apr 2026 18:53:58 +0100
User-Agent: Mozilla Thunderbird
Cc: Andrew Cooper <andrew.cooper3@citrix.com>,
 =?UTF-8?Q?Roger_Pau_Monn=C3=A9?= <roger.pau@citrix.com>,
 Teddy Astie <teddy.astie@vates.tech>
Subject: Re: [PATCH v2 3/3] x86: prefer shadow stack for producing call traces
To: Jan Beulich <jbeulich@suse.com>,
 "xen-devel@lists.xenproject.org" <xen-devel@lists.xenproject.org>
References: <f064c3af-c22a-40e0-a268-ee37e34297a3@suse.com>
 <4bcc73db-38da-446e-b277-cf94c49002a1@suse.com>
Content-Language: en-GB
From: Andrew Cooper <andrew.cooper3@citrix.com>
In-Reply-To: <4bcc73db-38da-446e-b277-cf94c49002a1@suse.com>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
X-ClientProxiedBy: LO6P123CA0047.GBRP123.PROD.OUTLOOK.COM
 (2603:10a6:600:310::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_|CO1PR03MB7796:EE_
X-MS-Office365-Filtering-Correlation-Id: 8a4bcb27-151d-4de5-e2db-08de9597d134
X-MS-Exchange-SenderADCheck: 1
X-MS-Exchange-AntiSpam-Relay: 0
X-Microsoft-Antispam:
	BCL:0;ARA:13230040|376014|366016|1800799024|22082099003|18002099003|56012099003;
X-Microsoft-Antispam-Message-Info:
	fdRh96ogH9IpmQ0YoWs03SUkJ0MH2lsj7dDwJSvj1B+pdYJX8dCcFqGEn/epxGxu4PKsNwyvLsCmA9SXBiTRuOSW3QJKjIU1a7szDBFrv23LSrI16yZrcyoowxB3C6bv85VahEYn2gh3x9PKGlC+j3KGe0Gg9JXiJA4lRFK3Qcnhr2BpOGqCNuMAi9HjeE4+oHtz+Q6LQHG3qEtiHwtddjKUxE2yaM0JrshagVAtt7bontn23THRQO8W+8EkjgePTKANYb54laYkTQLA2kIw9GyJix2RZ03kE7HlHQUSZfOBk2p2flyS1sDobAXJdx1M+Hi7LEVBCfQyBW0rIl9rDfcg02zcqalVInf/DzU+KU3ZIiuL3EBZl/zSJFKIjfwAYRgohqWV6KHGFWWvq5f0dN5wei1mBkgXgsFTVZUTL2aYDgyxJJ65N0gdD0hrvGZxcaSHZzxBazsLNNhhyGKJWF1RVua40UlmI1tFtFPlGesUQwfugVvvNDHaZ4uEWv0OBvTHm3rXSmqloptsjxGkD0vsdzo345zp5pzCk+Y/Tf5/wGr29UTq5JPsxMTyGYS98yo7JdJ0R7Ch4D86B/vx975uJVDuVP4XtfSs+YAqx5ESscP3P5Lj1LRAky2uhL7tV/C5z3ZMdkh+c0x04uEWDPiO3gbBxgl2Q6mQvSrZMBW3j+fVzfWF/b+k0eMY3cFKzQ4WEjMVveRwX8itcBOoTKR0BmHIpZXFbrU+O1eLT88=
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)(22082099003)(18002099003)(56012099003);DIR:OUT;SFP:1101;
X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1
X-MS-Exchange-AntiSpam-MessageData-0:
	=?utf-8?B?WDV5V3EzcERTTUdwcnJjVDV1ZEZZdHBqTkI2YW0xNGpVVzdpeC9TUFVrVHZm?=
 =?utf-8?B?NnVRMXdPRDJmTzRHa3d3L2pqSGU1cWRGbTR1SDJaNmdjcTYyMGF3ZmJtVnhz?=
 =?utf-8?B?TEdlYW9YUzNGYnNSNDl3K2J4NkxLV2FEVkR5MzBwN1RPZ056YnRBUmZQa08r?=
 =?utf-8?B?M2FuSm1vRUdyKzgvM0V0ME5xZlR4bzBYcytOMStUalhCVE9oeHpDTHdJY2pG?=
 =?utf-8?B?ZW00TWVKL3VyRWl5TjFuWnhuaGpEUUVoNGdVVzh6ZklVcW9Pa1RMdHZQS0h2?=
 =?utf-8?B?YTc0NjlSN2trQjh2aWpHbHVCN3o0Vi9BY1grVnpsNmFXU09yM2lqVEl4U1E3?=
 =?utf-8?B?bmhVMHgydTg4MFR2Z0FGQW1pNmhVUnFvKzFZeHpxL0l6UVhKMEtxY2h2bGVN?=
 =?utf-8?B?Q0NlYUJiMUlsbE4vMU10UE1kSUlsYWRscmVCY2Rxc0Z6Ti9hdXFZUUlDbEk1?=
 =?utf-8?B?MGxhVXNVRTkrZlVKNWZaeDlJTnZNdE5NbEJKenNMRTVva0xqMisxSE1DWHVU?=
 =?utf-8?B?d040SmVNcEc2R2JYSDdac0g2VldtbCtTTzJublpVZG15cFl1UUlBRXlLSFd4?=
 =?utf-8?B?dDU2ZWxSNzF4NUdyR3RIeGd6T0FxMzY4WGdhUkdTdXAxOThjV21KdkdoSXk0?=
 =?utf-8?B?M2R5aDdJbDBrK1o2b3RobHlHaWRLc0FZMXFYT2l3WGpkbWRLL1ZWdGNlTS9v?=
 =?utf-8?B?ekpoVXMvZXpES3o5MTJJY05pTUsvaWEzUVNjVVlmWitYTVZOdGsxdDVwTkNx?=
 =?utf-8?B?Njcyb2plWWNkemYyVytoVk1tWXN6OXVvRTJtSEJ0L3J6UENZS25GZXBvSzg5?=
 =?utf-8?B?aXlJc0tzM01yREN2eUVZcUp2cFhDUFExVFBQdDQ4L2tlUzNVVzRMTys5dXhl?=
 =?utf-8?B?ak1vTW9IRGJUbjlwbTVvTEhJa2hhZ3JzZjVSNTNxQUNSU1hDZVNZeWJEaEZx?=
 =?utf-8?B?MklYSTkyZW5lcjdRZFVmRGQwMytXYVpJQmVJU2xRZWFuZDNCd3FOUDVKblBE?=
 =?utf-8?B?eDh3dzhFSER3SHd5VHpRdTcvdDYzaWZ5N2REZmhvekRIRjMwZHlvL3NmaUdp?=
 =?utf-8?B?UXBXVXBoV3RCTGdWajZjQ2xtSHdqbFBlQnk3c0ZsRDBZSHkyM1kwL0t4eDFL?=
 =?utf-8?B?WVFERkpkeXM2THBQM284VXYxWHlZeW8xSDNYWkpvZGw2RTBXYktNUmJkU1BC?=
 =?utf-8?B?TTFMdFBzZlJzVGNqUTF4M3VqSm9xWVhkM3RJVzZheDdLdGpGcmhlUmRvc0pt?=
 =?utf-8?B?ejNZUjhPVDZ0ekFtLzd4cHd2NEYraXZlZ2RCWDVrM00yNkZ5RzJHUzh5VDMv?=
 =?utf-8?B?QzhJZWwrZVpSVlFjTXkyNWZNTXhadzlZZ0RvazJ0K3lJSDdTTlZLZEwzdWNP?=
 =?utf-8?B?V2pCTDlOWTF2UU5MMWtNSzdadlhkT3hlYk9LQXJpcEwwYnhjMU13VUIxMkVX?=
 =?utf-8?B?WXExek9XdnRpdzdNbm0yUHpSMUM3NHk2dEo0N1hnck9FU0p4bk1UNHBXSUdi?=
 =?utf-8?B?ZzlTRnJNelpEazQzR21lTDhsQmVOamtFTHBlOVFsT1dSWG5kS3Vod0dvc0VQ?=
 =?utf-8?B?eFBlQUEwWVNzTnErYmhLOUp1OUdxaW1rR1ZVbWNsdStzY2hUWG5PTzVEWEEv?=
 =?utf-8?B?aTNnUHRFd0IxVHdTTVZjT3g0UW9MTWdFWXU3bVV4YkpLRTdkcGpzRmNIRmdQ?=
 =?utf-8?B?TlFFc1Q4aUc2Z0liYkpOWi9xVk44c2xSb05hVmlLaGZacy9rRjRGUU1IZU45?=
 =?utf-8?B?VHcrS2lyUjVhV1hMbXNJZkxHbDl5bktXeXZDNHEwMjB4SW51aVBoYTVtaHZF?=
 =?utf-8?B?MHJ1VmtXNWtpcUpXYllQdWxPaEdWWndSdjVwdldBRzR2eC9qR0hXWi9US1dG?=
 =?utf-8?B?enZ5V2NHRVpYS055K3g1UkVVRGdsaUpCd3FkVHl4M2lmQmhaY3ZjcktEODd1?=
 =?utf-8?B?RXE3OTNzWmdTc3VhMzZsbFFnQnN5SEI5MStJbkQvZi9vajRLSVZBbXRCUElZ?=
 =?utf-8?B?VGlnY0NwUk5IbFhBSTBpd1YrUDlrSCtPYURhZXl5c1ZrWCs2amVOejN1Vkxh?=
 =?utf-8?B?aHc2L3NDRGpQNSt0dStldVBTU3VFZCtYaFVIbWJYbE9iQ0pUL2pGRDhpdFJK?=
 =?utf-8?B?ZisxVVYyR29hZXdXYUNGTGluMDBTYkc4Q2JHWkFqWVNIb0Q1MHpNMnlxOHpT?=
 =?utf-8?B?MmFtZmJ0NllUK2tSSkdGNTFkUmFCWmlheHlvazJVRWNzMkZyRDdaUmRRM2g0?=
 =?utf-8?B?WUIybTh2VGZWMXNmT1NOeHVjbE5OblZOWlRQbzdUWkVvRGwyQnRaRW9LN0dl?=
 =?utf-8?B?ejk3RE94ZndDWVVZSXpObWUzYng3VXZmYlFQUjVuSDFxZmVudVdSZE5NSkcw?=
 =?utf-8?Q?k9T236w1meGAmkNY=3D?=
X-OriginatorOrg: citrix.com
X-MS-Exchange-CrossTenant-Network-Message-Id: 8a4bcb27-151d-4de5-e2db-08de9597d134
X-MS-Exchange-CrossTenant-AuthSource: CH8PR03MB8275.namprd03.prod.outlook.com
X-MS-Exchange-CrossTenant-AuthAs: Internal
X-MS-Exchange-CrossTenant-OriginalArrivalTime: 08 Apr 2026 17:54:01.7453
 (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: uNXsbJNhRb0I0SluYdbHEDZfJnrnwQwBf7i3JnJoTa9WjIga2y7gqyqTmIqKR8YxpkMbyDEG/OJGz+KWYnNM8JlHg6kfBpd+RIVCECSv2QQ=
X-MS-Exchange-Transport-CrossTenantHeadersStamped: CO1PR03MB7796
X-purgate-ID: tlsNG-ebf023/1775670845-32F3E51B-4112A7F0/0/0
X-purgate-type: clean
X-purgate-size: 2096

On 08/04/2026 1:23 pm, Jan Beulich wrote:
> Shadow stacks contain little more than return addresses, and they in
> particular allow precise call traces also without FRAME_POINTER.

Do you have an example of what such a backtrace now looks like ?


> 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.
>
> Perhaps having a printk() for the PV entry case is meaningless, for
> - no frame being pushed when entered from CPL=3 (64-bit PV),
> - no entry possible from CPL<3 (32-bit PV disabled when CET is active)?
> In which case the comment probably should just be "Bogus." and the code
> merely be "break;".

Yes, PV32 doesn't exist when CET-SS is active, and PV64 doesn't push a
frame.  regs->ssp will point to the supervisor token (IDT delivery) or
on the boundary with the regular stack (FRED).

> Quite likely a number of other uses of is_active_kernel_text() also want
> amending with in_stub().

There are very few things which can exist on a shadow stack.

1) Tokens (supervisor, restore or prev)
2) Return address
3) Old-SSP
4) Old-CS

Intel recommend not allowing code or stacks to be in the bottom 64k of
the address space to prevent type confusion between Old-CS and the other
values.  Xen matches this expectation, but it might be wise to check for
it explicitly.

Notably, we cannot ever get a value matching in_stub() (outside of
general memory corruption).

On SYSCALL/SYSENTER, SSP is set to 0, and we don't re-establish a proper
SSP until the SETSSBSY after leaving the stub.  Similarly on SYSRET, the
CLRSSBSY sets SSP to 0 too.

An NMI hitting these paths should find regs->ssp pointing at it's own
shadow stack, with an Old-SSP of 0.

~Andrew


From xen-devel-bounces@lists.xenproject.org Wed Apr 08 18:05:01 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 08 Apr 2026 18:05:01 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1276483.1561941 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wAXGr-0005ZX-6u; Wed, 08 Apr 2026 18:04:57 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1276483.1561941; Wed, 08 Apr 2026 18:04: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 1wAXGr-0005ZQ-47; Wed, 08 Apr 2026 18:04:57 +0000
Received: by outflank-mailman (input) for mailman id 1276483;
 Wed, 08 Apr 2026 18:04:56 +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 1wAXGp-0005ZK-QW
 for xen-devel@lists.xenproject.org; Wed, 08 Apr 2026 18:04:56 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wAXGo-006pYq-IE
 for xen-devel@lists.xenproject.org; Wed, 08 Apr 2026 20:04:54 +0200
Received: from [10.42.69.11] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <andrew.cooper@citrix.com>)
 id 69d698bc-5cb7-0a2a0a5109dd-0a2a450bb9b0-16
 for <xen-devel@lists.xenproject.org>; Wed, 08 Apr 2026 20:04:54 +0200
Received: from [40.107.209.23]
 (helo=PH8PR06CU001.outbound.protection.outlook.com)
 by tlsNG-42698a.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.0)
 (envelope-from <andrew.cooper@citrix.com>)
 id 69d698c4-bca8-0a2a450b0019-286bd1175be7-3
 for <xen-devel@lists.xenproject.org>; Wed, 08 Apr 2026 20:04:54 +0200
Received: from CH8PR03MB8275.namprd03.prod.outlook.com (2603:10b6:610:2b9::7)
 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.20.9769.19; Wed, 8 Apr
 2026 18:04:49 +0000
Received: from CH8PR03MB8275.namprd03.prod.outlook.com
 ([fe80::a70d:dc32:bba8:ce37]) by CH8PR03MB8275.namprd03.prod.outlook.com
 ([fe80::a70d:dc32:bba8:ce37%6]) with mapi id 15.20.9769.018; Wed, 8 Apr 2026
 18: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=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=GuMxXx/+CDY7dlUT9dMpiUKgqpxOhWzMk2k9/SWTJjTA0VqAX6qjsV0zyKNpJSoFw4icS1aUJYoCFt6XK+rUjGhhP40cCEtzuPYK8Vn/rhA/NULO37gUCyDe2tH1RD7sjrgm16K9hjR7lNXqFUT9PMDUknoKVyzoAj++Lzj2YtpT/3WfheIBibOZoEQwXSYERA48HdvY4cpMOvUvsGh/Z8+KVwgifhD4mzz4ohraRUxnT+VA2Y3tTbwK2X9HIJO8ofQd6zAnDnmjsJqkTgQo5pZihjhAvKZrhXD/6slkrT0WymE13iyn7XHMgAxxs3WpzkiUWEMua+tx/H9TVgGZCw==
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com;
 s=arcselector10001;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1;
 bh=11fOth0B8XPCVasLcgdCnme1hOOqNAG0D/6bxLNNwzg=;
 b=JcvxDTQeTC1B2bfl07/SpQoHhrqiPjEkgQUNV7rpALy25LzcLl2gADg5M7ERSl6YU/08QYrc3MOUKu88BIQyNc3dUk9r1Yp3+lTfXsfI7JyvNR8Gxv0faOw623VhOgkwuv0crTgYwO0AxcI/0xFVjwY54XVPGKb9T1C6lpkyETt5Oly7dRTsSw/E+8efdtIIExCaQrurub3JAFHtKlqc+Ic5Q9CCrgsy5rO8yHscNnxx8xUteEeC9+QIL6jYqeJxABvBY9VVcWfRcVut/8VgkpYO01f3rL+Que8e7GdKpD5ZeQgDtPj+aQ+UsQqubUOQZk0VjwNbddn6GsW1fNey9w==
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=11fOth0B8XPCVasLcgdCnme1hOOqNAG0D/6bxLNNwzg=;
 b=qPg48auAdI6TrWjyup+PawXWEgHMftNXAh9UvhCA1oJIn+ej7S2eyevCTui+++Lyw6HCfJ97Hoz9Vuta84CTwS/RR5iTGDDr/Saa5B2FMa51PN+gBX7z5hXb6FaUCpx257DxFO/JDgMkTpn9L1Y9cAEEllxoeOAz3vfzWr9hBqQ=
Authentication-Results: dkim=none (message not signed)
 header.d=none;dmarc=none action=none header.from=citrix.com;
Message-ID: <99200edd-3a99-4043-88b7-a7f3ee2c7a44@citrix.com>
Date: Wed, 8 Apr 2026 19:04:46 +0100
User-Agent: Mozilla Thunderbird
Cc: Andrew Cooper <andrew.cooper3@citrix.com>,
 =?UTF-8?Q?Roger_Pau_Monn=C3=A9?= <roger.pau@citrix.com>,
 Teddy Astie <teddy.astie@vates.tech>
Subject: Re: [PATCH v10] x86: use / "support" UDB
To: Jan Beulich <jbeulich@suse.com>,
 "xen-devel@lists.xenproject.org" <xen-devel@lists.xenproject.org>
References: <deb26054-ec00-483c-bc18-1edc1b4599b3@suse.com>
Content-Language: en-GB
From: Andrew Cooper <andrew.cooper3@citrix.com>
In-Reply-To: <deb26054-ec00-483c-bc18-1edc1b4599b3@suse.com>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
X-ClientProxiedBy: LO4P123CA0229.GBRP123.PROD.OUTLOOK.COM
 (2603:10a6:600:1a6::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_|PH0PR03MB5878:EE_
X-MS-Office365-Filtering-Correlation-Id: 95a32de1-fa79-4d16-95b0-08de95995358
X-MS-Exchange-SenderADCheck: 1
X-MS-Exchange-AntiSpam-Relay: 0
X-Microsoft-Antispam:
	BCL:0;ARA:13230040|376014|366016|1800799024|18002099003|56012099003|22082099003;
X-Microsoft-Antispam-Message-Info:
	JYXwYNrMnNyai5f3yFvb/EGNPd4299I78FIVAUkerbD1Vzmoa3JAjagceOrm2ZwF3IizdsF1yYsPpCrxfJtYtejVZkNkKOXAWKH/ScJmd8puFMZHRfRtWyGqbI3GaSGpp8YOl6auNuU1pPAq/4Ap7xx5QtGdB8ZLQc8VkRd4JwxRjqRKgJn6izKVFe/YyXzqawOlZgJ0Pv+mcPIJVxGtAyOXw0q2M9NVhPeJXXg3RqXSvOQH1IvUNGcANzsl+DzibT9zj4vbD2LbMh7TbOX3xrQflTeYpgfXkPZomSR9+qcbg2W3TgVseqwxYxmyWOzT+kpeoeD6iaiWhmCe115pQ3719YsycFiOoC0bAz7uPBGBM7f/ap+SbSq0J1qmSMOrueO2Q3YaWl4yJHc5uOmmgEQeE1gvyucc0nmSKW1xK5rd1iwoQxRFMVU+iwRYXLJN7WEEIt6gduJmRr7nAzPdrlOQ0OjVLrD20NWHQC/HCBAGsJ9JDReaD9XOnaDaiDIxklvFOMG2e2cBld6grVcR2EOffzXON10uB1yNnbJrtAjCxbTGs50Jdv0S7uVZ7TXxBLl4Ydx5ZfKoTBmsastZPimYIjCRIh+X9pSKMWPZn/QvR5gjKCgevvfc8Pu0bLLpnlYFJJLnMnhRrUU/42NZYQd9aPHHKPQO690j9XMWd0gx5HpMwqo5DyqRuzSDWxGPdW/v7TSBVO5NF/2NAp5ywu7pbTKu91KICBAcPRbQ8Wg=
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)(18002099003)(56012099003)(22082099003);DIR:OUT;SFP:1101;
X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1
X-MS-Exchange-AntiSpam-MessageData-0:
	=?utf-8?B?MDRZdk14MHdYcFd0SXROaGRUYW12OTRrOFk5QTJSR3o0SUZsUG5jaERPRExK?=
 =?utf-8?B?NEsyWDBDSTNuNXdkZVJWRHd2NHpEalVqOXJGRmFRMFhTYVZybVdkSHVjTW1H?=
 =?utf-8?B?STEwdG5valM5TExUTFZrdFM2a3NnMDNuTHNqSHRjTmp2ajI3cVZwbER6T0tq?=
 =?utf-8?B?TXZqZkFkN2M0dDFaMGJzNFNjZEYwRUpHei9tZ3VNUjhtNWtnZDVuRzVMcWdn?=
 =?utf-8?B?OGNINGk4bEQwQnZzVGxWT3FvdzBucG9DRFZuMjR6cnkvTEQwRGdkaTZhWTZx?=
 =?utf-8?B?YnVpaTVjbityYU1mZmtqRWhDL3FiclNqY2s1MGt2bW04RmVZc0NIQkFIK1hu?=
 =?utf-8?B?RlB6MWRZbDZ4Y0lQMzluZDg2c3VjcEFBK3Vnbi9Fd1RlQ3d6V2F1T0FoSEpO?=
 =?utf-8?B?aHBpN0ltdStrdElEWFA0N29Fb0toUWFISWdENjNjWFUvc1FXQ3c1THZtcHBB?=
 =?utf-8?B?SlFSZ0RHZGZ6UHM2NjBKVmJ0dU9KejVlNUgvQTN3VXk4YllIYXJReWVTeHpu?=
 =?utf-8?B?SVF3THNxQWplTUN5TkJSYTN2R0lvTXR6VVZNVkkybXlDbWhXZ3lXSkJTSEJV?=
 =?utf-8?B?b0p0Ymx6MFhNQkhudVpLSGN1RDQ5Ym1MaTFwUlZsb1E4OVg2MGVEd0JobElH?=
 =?utf-8?B?QVE5Sm9PaTVGb29iSU9YUjFNVW9JdXkvRitld2FwUlRvU3ZaeUlIY09QeW5E?=
 =?utf-8?B?cnZyTjZZY2h5d2g3ZXpDK2dqc0RXSmpoN2t5OGxmTldHZzh6bW5IQ2ZORWN3?=
 =?utf-8?B?OXVySm1rS0lUcmZScWdjWEUySzlLdkduSXY1d2ljUkg5MGFtdUpwSnA5ZTN5?=
 =?utf-8?B?VTVwclFadW91ZWhGTDRpZzkzb0NCYmg1cWhRNnhsSnI1bU53L3F5a29acUtG?=
 =?utf-8?B?WE5wRi9ZQmZjTGkrbXV6alYxUmZMUlR4QTdlY2laSW00dll5ODJRdVZuZmQ3?=
 =?utf-8?B?Vk8wZHR5eWVsVno1WWpDakVaNHFZT0t1NTl6OVorQk5kdGoyZzRrYkZkenZv?=
 =?utf-8?B?TEV0OVdZbVFib1JmdFRHODFYMkwzVW1EK2pIcGlmcEVhRHhsVVk4djJZWlVr?=
 =?utf-8?B?NHdlZzVZTHdmSHVsdUd1LzdBNmltS0FXWjMwMWliSndhLzlLUUx0cVhRcVdW?=
 =?utf-8?B?WDBSZEIrS3pKUElHUGd6M2hya04rMXFoeUIxaXhZQk1PZW0xODl6MlBDb2RO?=
 =?utf-8?B?YW5KRzkyMTN6NjdwS0t4d0pqZGp3QUVnNGdrT1lzaVhkcmFMSUpxSkc1dkFE?=
 =?utf-8?B?UXJRcGJBcVJtZEhvSjVudHBBb3lJWWp0NnkrYk02d1FvSVkvVldpeHVhc3Bn?=
 =?utf-8?B?ZnZpYmN5MUw4NU5tV3hBc09VSEFPVzJvbzk0c3hxQmpiWmVST3hOR0pIVnVI?=
 =?utf-8?B?S3B0L0NTWkpPTjVSQ3NNbTBCeDdRNEtuVnFxOUdHOEpMbXIzdWp2NGFHWXVP?=
 =?utf-8?B?QVNjRmVXVisvYlhkMzgyaEt6SVN1YnZ6MXFiMFR2N0szSkJydWI0b05BbmNQ?=
 =?utf-8?B?ZUZoTjU0cDlQTnNyZFpmNWVRSkhmTzAyZFBCUHlXNmRra0RFVEJyV25zV2tN?=
 =?utf-8?B?QTF4T01ZTCtEU3NMNjMwZjBMSkVqMklTYjhtN3cyUjNpMllsMVFYdnpoSWJH?=
 =?utf-8?B?TEcraE51eCtFVEVwVGFlcXZPaWVIMFZzUHNUcVg3SDd4aEpaSWZFNUFpNzVY?=
 =?utf-8?B?SEpwM24yMTRkdk5nWFl6SkRRVHprL3BkTFJrM3VsK0NqYUVKS044MUloQ21x?=
 =?utf-8?B?SzJYdWJkbUhqMU1OemxORlp2RnJJYlBxenFvUHJsekZUNk1qS0lyTmVjTHM0?=
 =?utf-8?B?Q1U1WXpvZmZRN3REeW1oNndhWitPdVZBcjBCVFl1TDEyY2JqWlBTVlJNQXI5?=
 =?utf-8?B?VXFEVjZTdkxwb1R4SThTekgvY08xd2tTSzB2aGhTSTZzQXZ3a0NsNU5hbUFV?=
 =?utf-8?B?UGM0M3Ewc2h4ZkFpZlNTMGV2M0ZldHBHb2QxWFRkWGIrZGVKbmxmTWhPSDZE?=
 =?utf-8?B?THN1RlIreTVyQkEzS2xLeHJYdENma1NWaG1GT05NQ3dRS1BQOHAxWld4Ync0?=
 =?utf-8?B?bmNlcVVkU0tpZnZ4aWFyQWRnSC9lUk5QTTNjaERCZS95QkZJeFMrSzhwMDVN?=
 =?utf-8?B?aG9CcW9oVERuRk8vSHVsZDJRand5OHFzaDVKMVQvRE5RZXFNVWd2eGdnTDd3?=
 =?utf-8?B?Nld1bWY1M0tqYjF0QS9ETEJWQldDbkhYdm9DUW45Q2J0aENFUFRpanJKYks0?=
 =?utf-8?B?Uk5zUTlqTnNPb0s0bUhLUHRIaW1mamlYM0FrNHhyVkNTTDJUYkd5dWlreEpo?=
 =?utf-8?B?dE9DQU1oNkplK1ArWEFLZnFvUTlzWTczNWw5eDZXMlplZndsM3ZJOFU5TTI5?=
 =?utf-8?Q?dXJS9bbpwriQqG8g=3D?=
X-OriginatorOrg: citrix.com
X-MS-Exchange-CrossTenant-Network-Message-Id: 95a32de1-fa79-4d16-95b0-08de95995358
X-MS-Exchange-CrossTenant-AuthSource: CH8PR03MB8275.namprd03.prod.outlook.com
X-MS-Exchange-CrossTenant-AuthAs: Internal
X-MS-Exchange-CrossTenant-OriginalArrivalTime: 08 Apr 2026 18:04:49.5609
 (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: rQ+scMrzWpCkrZV3HgmRF14T3DYRkzP4+VEtD16oPswreoo+pPsr+E+sIfIyqUQtd4E5vhAcut4JYXOZjZU/fho0UoYAPnlyrmLQ85wAvXI=
X-MS-Exchange-Transport-CrossTenantHeadersStamped: PH0PR03MB5878
X-purgate-ID: tlsNG-42698a/1775671494-ED7522A1-9E9F1B11/0/0
X-purgate-type: clean
X-purgate-size: 1494

On 08/04/2026 1:12 pm, Jan Beulich wrote:
> With opcode D6h now firmly reserved as another #UD-raising one in 64-bit
> mode, use that instead of the two-byte UD2 for bug frame marking.
>
> While there also make a minor adjustment to the emulator.
>
> Signed-off-by: Jan Beulich <jbeulich@suse.com>

For the patch itself, Acked-by: Andrew Cooper <andrew.cooper3@citrix.com>

> ---
> One of the table entries in stub_selftest() uses UD1, yet in not quite
> an appropriate way: The 0x90 following it (presumably meant to be a NOP)
> really is a ModR/M byte, requiring a displacement to follow. Wouldn't we
> better adjust that (e.g. using 0xcc instead)?

That looks too much like breakpoint padding as opposed to nop padding.

What about:

diff --git a/xen/arch/x86/extable.c b/xen/arch/x86/extable.c
index a9b6c6b904f5..24440ccd03e3 100644
--- a/xen/arch/x86/extable.c
+++ b/xen/arch/x86/extable.c
@@ -157,7 +157,7 @@ int __init cf_check stub_selftest(void)
         union stub_exception_token res;
     } tests[] __initconst = {
 #define endbr64 0xf3, 0x0f, 0x1e, 0xfa
-        { .opc = { endbr64, 0x0f, 0xb9, 0x90 }, /* ud1 */
+        { .opc = { endbr64, 0x0f, 0xb9, 0x00 }, /* ud1 (%rax),%eax */
           .res.fields.trapnr = X86_EXC_UD },
         { .opc = { endbr64, 0x90, 0x02, 0x00 }, /* nop; add (%rax),%al */
           .rax = 0x0123456789abcdef,

which also brings it in line with the adjacent example?

~Andrew


From xen-devel-bounces@lists.xenproject.org Wed Apr 08 21:11:23 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 08 Apr 2026 21:11:23 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1276576.1561965 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wAaBB-00060H-3l; Wed, 08 Apr 2026 21:11:17 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1276576.1561965; Wed, 08 Apr 2026 21:11: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 1wAaBB-00060A-0u; Wed, 08 Apr 2026 21:11:17 +0000
Received: by outflank-mailman (input) for mailman id 1276576;
 Wed, 08 Apr 2026 21:11:15 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <marmarek@invisiblethingslab.com>) id 1wAaB9-000604-Au
 for xen-devel@lists.xenproject.org; Wed, 08 Apr 2026 21:11:15 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wAaB7-00BFEo-R7
 for xen-devel@lists.xenproject.org; Wed, 08 Apr 2026 23:11:14 +0200
Received: from [10.42.69.9] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <marmarek@invisiblethingslab.com>)
 id 69d6c45c-bab6-0a2a0a5309dd-0a2a4509c51c-28
 for <xen-devel@lists.xenproject.org>; Wed, 08 Apr 2026 23:11:13 +0200
Received: from [202.12.124.148] (helo=fout-b5-smtp.messagingengine.com)
 by tlsNG-bad1c0.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.0)
 (envelope-from <marmarek@invisiblethingslab.com>)
 id 69d6c470-bf79-0a2a45090019-ca0c7c948d75-3
 for <xen-devel@lists.xenproject.org>; Wed, 08 Apr 2026 23:11:13 +0200
Received: from phl-compute-08.internal (phl-compute-08.internal [10.202.2.48])
 by mailfout.stl.internal (Postfix) with ESMTP id 81A201D00286;
 Wed,  8 Apr 2026 17:11:11 -0400 (EDT)
Received: from phl-frontend-04 ([10.202.2.163])
 by phl-compute-08.internal (MEProxy); Wed, 08 Apr 2026 17:11:11 -0400
Received: by mail.messagingengine.com (Postfix) with ESMTPA; Wed,
 8 Apr 2026 17:11:09 -0400 (EDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@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=1775682671;
	 x=1775769071; bh=kchf87mE9OXpEq2RDcjs4o5CRJjnCtkZ2UY0sqB8J2U=; b=
	og7oqgEf4E0OOGdxl2ze9nRfqllg/kVEhEOXuUkB3mpHn1TFoGiIgJgCInp694cH
	qQnKz9ow8udj9RrJf10/P6Xd/UKGhaHWLPNKnhihC79p2sKzxli91G+qgIRfINaN
	rSq6GvZ/slAaJDWYKOWth9eA7AqPbqZZnafkuNpCoVrVMrKA5cjdeat4HcTuckJT
	Xs4WPOsKz7vP6KnNTkWI3YDynG9QGVF8ZRU0s7mxxBQ3IlKJVkkJzrKbwhXEFhf8
	IEe50A/T4vkMnx0WRj3lc+tl4JBh771Sp20t/tMZM3SvNXPczsy3GHt4lkLhBpwd
	V/rbmUMqKC+9RUJfp+N0LQ==
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=
	1775682671; x=1775769071; bh=kchf87mE9OXpEq2RDcjs4o5CRJjnCtkZ2UY
	0sqB8J2U=; b=rHZrZ3UcV3zUvuUcISOSxifMtkqQfF/7m57ZLYlCktje6p26dfF
	ufmkTGYUqulTVDeZz230gTyv0EMyu4gjrj3A2FS5bM/X+J9uEhxwYPhVk25sqRPj
	97Kynoj9DT04nuq80T4vI7nKCvGrr2qJxCeyt1dilVBtymFFSCSNY/4DI7RRrIIU
	Da3GlkreWiZT3t6i4S5rJEd2KEpud4kS9egUHFssQEXfsIbnfpTfOMHkA7XDGBqw
	/jyT4VFmM0CFju6Z/KTatfcecCrKPqMP0Z4iw4x619jsj2veUW9SlqYlBwN1RHbR
	I7rzds0+x9IqRpcDgHF/jvVbMb/PRBecItw==
X-ME-Sender: <xms:bsTWaR1KKJc-OS2XVNqB5xjX8oTbi7IRXSpD-jI3eV6LFzppI5cHsA>
    <xme:bsTWae-CpiKAOWrSKhxCjPLlrgvyaTCjZXaUhwpaStspLYHcls4im284jSSRqTsXf
    cFJDjyC6Vqvg4BtOg6rUi7TNIIoN3vfVP-pCsqfiWjjEqAl>
X-ME-Received: <xmr:bsTWaaMM7_OnM583DUgCqGLLH-5Tq3h_lz2cf3NoaLMvPrQDJs5tZ2lTYslWxcvtzCwMINl9oXmav_B5fwiwsrkuHILfLZIYKuM>
X-ME-Proxy-Cause: gggruggvucftvghtrhhoucdtuddrgeefhedrtddtgddvgeeivdcutefuodetggdotefrod
    ftvfcurfhrohhfihhlvgemucfhrghsthforghilhdpuffrtefokffrpgfnqfghnecuuegr
    ihhlohhuthemuceftddtnecusecvtfgvtghiphhivghnthhsucdlqddutddtmdenucfjug
    hrpeffhffvvefukfhfgggtuggjsehgtderredttdejnecuhfhrohhmpeforghrvghkucfo
    rghrtgiihihkohifshhkihcuoehmrghrmhgrrhgvkhesihhnvhhishhisghlvghthhhinh
    hgshhlrggsrdgtohhmqeenucggtffrrghtthgvrhhnpefgkedutdffteethfeiueehffek
    ueffledvffdutdetteeltdevkeefkeelheejgfenucevlhhushhtvghrufhiiigvpedtne
    curfgrrhgrmhepmhgrihhlfhhrohhmpehmrghrmhgrrhgvkhesihhnvhhishhisghlvght
    hhhinhhgshhlrggsrdgtohhmpdhnsggprhgtphhtthhopeehpdhmohguvgepshhmthhpoh
    huthdprhgtphhtthhopehjsggvuhhlihgthhesshhushgvrdgtohhmpdhrtghpthhtohep
    gigvnhdquggvvhgvlheslhhishhtshdrgigvnhhprhhojhgvtghtrdhorhhgpdhrtghpth
    htoheprghnughrvgifrdgtohhophgvrhefsegtihhtrhhigidrtghomhdprhgtphhtthho
    pehrohhgvghrrdhprghusegtihhtrhhigidrtghomhdprhgtphhtthhopehtvgguugihrd
    grshhtihgvsehvrghtvghsrdhtvggthh
X-ME-Proxy: <xmx:bsTWaaf9Byhys9_9v7hzOk6tbrp0GIrMZK-6mbEFd01tU5TDfli5CQ>
    <xmx:bsTWaRXHVBZxqeBvsJTcNE-RDPnvf5m6tN368kVTlVS5eRFNaxemFg>
    <xmx:bsTWaaj7TW76UQBHPslzFU4YUDBRIzcR_BBO399Cr_iRVgpDgGiQlA>
    <xmx:bsTWaY9eZgzBYCOdAEgKY1zf6HsfYkKBI4ANtxQU-3nTTBQx0LOIdw>
    <xmx:b8TWaVEMxSxSRB1KzOqqwoTKFK9HePvZZXPlx4aTiVx_CCi3EO0Q85T9>
Feedback-ID: i1568416f:Fastmail
Date: Wed, 8 Apr 2026 23:11:07 +0200
From: Marek Marczykowski <marmarek@invisiblethingslab.com>
To: Jan Beulich <jbeulich@suse.com>
Cc: "xen-devel@lists.xenproject.org" <xen-devel@lists.xenproject.org>,
	Andrew Cooper <andrew.cooper3@citrix.com>,
	Roger Pau =?utf-8?B?TW9ubsOp?= <roger.pau@citrix.com>,
	Teddy Astie <teddy.astie@vates.tech>
Subject: Re: [PATCH] x86/cpuidle: split the max_cstate variable
Message-ID: <adbEawEpv8KA5ofI@mail-itl>
References: <4b89f640-046a-49c1-95f1-947d98135e5b@suse.com>
MIME-Version: 1.0
Content-Type: multipart/signed; micalg=pgp-sha256;
	protocol="application/pgp-signature"; boundary="QESya23L83tZWxwF"
Content-Disposition: inline
In-Reply-To: <4b89f640-046a-49c1-95f1-947d98135e5b@suse.com>
X-purgate-ID: tlsNG-bad1c0/1775682673-57543152-C54B51C6/0/0
X-purgate-type: clean
X-purgate-size: 14966


--QESya23L83tZWxwF
Content-Type: text/plain; protected-headers=v1; charset=utf-8
Content-Disposition: inline
Content-Transfer-Encoding: quoted-printable
Date: Wed, 8 Apr 2026 23:11:07 +0200
From: Marek Marczykowski <marmarek@invisiblethingslab.com>
To: Jan Beulich <jbeulich@suse.com>
Cc: "xen-devel@lists.xenproject.org" <xen-devel@lists.xenproject.org>,
	Andrew Cooper <andrew.cooper3@citrix.com>,
	Roger Pau =?utf-8?B?TW9ubsOp?= <roger.pau@citrix.com>,
	Teddy Astie <teddy.astie@vates.tech>
Subject: Re: [PATCH] x86/cpuidle: split the max_cstate variable

On Wed, Apr 08, 2026 at 01:34:43PM +0200, Jan Beulich wrote:
> The admin can control the upper bound wanted not only via command line
> option, but also via XEN_SYSCTL_pm_op_set_max_cstate. While decisions how
> to set up the system are okay this way as long as we deem the command line
> option a strict upper bound, what to do during S3 resume should not be
> based on that potentially varying value. Decisions there need to use
> solely the strict upper bound we may have enforced ourselves (or which was
> forced onto us via command line option).
>=20
> Rather than altering pit_broadcast_is_available(), drop the function
> altogether. It's pretty odd for acpi/cpu_idle.c to call into time.c, just
> for that to call into acpi/cpu_idle.c again.
>=20
> Fixes: 8d24303023ec ("x86: don't write_tsc() non-zero values on CPUs upda=
ting only the lower 32 bits")
> Signed-off-by: Jan Beulich <jbeulich@suse.com>

What should be observable effect, in absence of max_cstate option and
"xenpm set-max-cstate" calls? The "slow after S3" issue still happens. I
tested this on top of the two other patches:
- [PATCH] x86/HPET: channel handling in hpet_broadcast_resume()
- [PATCH] x86/cpu-policy: set up host policy earlier


> ---
> cpuidle_disable_deep_cstate(), when called from handle_rtc_once(), is
> still somewhat of a problem: Boot time and resume time runs of
> _disable_pit_irq() may still behave differently because of that.

In the above test, both on boot and resume I got:
(XEN) [    9.916522] _disable_pit_irq:2649: using_pit: 0, cpu_has_apic: 1
(XEN) [    9.921198] _disable_pit_irq:2659: cpuidle_usable_deep_cstate: 1, =
boot_cpu_has(X86_FEATURE_XEN_ARAT): 1


> If we wanted the sysctl to possibly move the maximum C-state beyond what
> was given on the command line, things would get yet more complicated, as
> we'd then need to re-configure the driver that's in use.
>=20
> I wonder how useful the ACPI_STATE_C<n> #define-s really are. Plain 1 is
> used in e.g. probe_c3_errata(), and the plain 7 doesn't even have a
> respective constant (nor would that be suitable, as that's not really an
> ACPI state).
>=20
> --- a/xen/arch/x86/acpi/cpu_idle.c
> +++ b/xen/arch/x86/acpi/cpu_idle.c
> @@ -119,7 +119,7 @@ bool lapic_timer_init(void)
>          lapic_timer_off =3D hpet_broadcast_enter;
>          lapic_timer_on =3D hpet_broadcast_exit;
>      }
> -    else if ( pit_broadcast_is_available() )
> +    else if ( cpuidle_usable_deep_cstate() )
>      {
>          lapic_timer_off =3D pit_broadcast_enter;
>          lapic_timer_on =3D pit_broadcast_exit;
> @@ -131,12 +131,15 @@ bool lapic_timer_init(void)
>  }
> =20
>  void (*__read_mostly pm_idle_save)(void);
> -unsigned int max_cstate __read_mostly =3D UINT_MAX;
> +
> +unsigned int max_usable_cstate __read_mostly =3D UINT_MAX;
> +unsigned int max_allowed_cstate __read_mostly =3D UINT_MAX;
>  unsigned int max_csubstate __read_mostly =3D UINT_MAX;
> =20
>  static int __init cf_check parse_cstate(const char *s)
>  {
> -    max_cstate =3D simple_strtoul(s, &s, 0);
> +    max_allowed_cstate =3D simple_strtoul(s, &s, 0);
> +    max_usable_cstate =3D max_allowed_cstate;
>      if ( *s =3D=3D ',' )
>          max_csubstate =3D simple_strtoul(s + 1, NULL, 0);
>      return 0;
> @@ -413,10 +416,11 @@ static void cf_check dump_cx(unsigned ch
>      unsigned int cpu;
> =20
>      printk("'%c' pressed -> printing ACPI Cx structures\n", key);
> -    if ( max_cstate < UINT_MAX )
> +    if ( max_cstate() < UINT_MAX )
>      {
> -        printk("max state: C%u\n", max_cstate);
> -        if ( max_csubstate < UINT_MAX )
> +        printk("max state: C%u\n", max_cstate());
> +        if ( max_allowed_cstate <=3D max_usable_cstate &&
> +             max_csubstate < UINT_MAX )
>              printk("max sub-state: %u\n", max_csubstate);
>          else
>              printk("max sub-state: unlimited\n");
> @@ -690,18 +694,18 @@ static void cf_check acpi_processor_idle
>      u32 exp =3D 0, pred =3D 0;
>      u32 irq_traced[4] =3D { 0 };
> =20
> -    if ( max_cstate > 0 && power &&
> +    if ( max_cstate() > 0 && power &&
>           (next_state =3D cpuidle_current_governor->select(power)) > 0 )
>      {
>          unsigned int max_state =3D sched_has_urgent_vcpu() ? ACPI_STATE_=
C1
> -                                                         : max_cstate;
> +                                                         : max_cstate();
> =20
>          do {
>              cx =3D &power->states[next_state];
>          } while ( (cx->type > max_state ||
>                     cx->entry_method =3D=3D ACPI_CSTATE_EM_NONE ||
>                     (cx->entry_method =3D=3D ACPI_CSTATE_EM_FFH &&
> -                    cx->type =3D=3D max_cstate &&
> +                    cx->type =3D=3D max_allowed_cstate &&
>                      (cx->address & MWAIT_SUBSTATE_MASK) > max_csubstate)=
) &&
>                    --next_state );
>          if ( next_state )
> @@ -1448,7 +1452,7 @@ static void amd_cpuidle_init(struct acpi
> =20
>      for ( i =3D 0; i < nr; ++i )
>      {
> -        if ( cx[i].type > max_cstate )
> +        if ( cx[i].type > max_cstate() )
>              break;
>          power->states[i + 1] =3D cx[i];
>          power->states[i + 1].idx =3D i + 1;
> @@ -1611,21 +1615,22 @@ int pmstat_reset_cx_stat(unsigned int cp
> =20
>  void cpuidle_disable_deep_cstate(void)
>  {
> -    if ( max_cstate > ACPI_STATE_C1 )
> +    if ( max_usable_cstate > ACPI_STATE_C1 )
>      {
>          if ( local_apic_timer_c2_ok )
> -            max_cstate =3D ACPI_STATE_C2;
> +            max_usable_cstate =3D ACPI_STATE_C2;
>          else
> -            max_cstate =3D ACPI_STATE_C1;
> +            max_usable_cstate =3D ACPI_STATE_C1;
>      }
> =20
>      hpet_disable_legacy_broadcast();
>  }
> =20
> -bool cpuidle_using_deep_cstate(void)
> +bool cpuidle_usable_deep_cstate(void)
>  {
> -    return xen_cpuidle && max_cstate > (local_apic_timer_c2_ok ? ACPI_ST=
ATE_C2
> -                                                               : ACPI_ST=
ATE_C1);
> +    return xen_cpuidle &&
> +           max_usable_cstate > (local_apic_timer_c2_ok ? ACPI_STATE_C2
> +                                                       : ACPI_STATE_C1);
>  }
> =20
>  static int cf_check cpu_callback(
> --- a/xen/arch/x86/cpu/intel.c
> +++ b/xen/arch/x86/cpu/intel.c
> @@ -384,12 +384,12 @@ static void probe_c3_errata(const struct
>      };
> =20
>      /* Serialized by the AP bringup code. */
> -    if ( max_cstate > 1 && (c->apicid & (c->x86_num_siblings - 1)) &&
> +    if ( max_usable_cstate > 1 && (c->apicid & (c->x86_num_siblings - 1)=
) &&
>           x86_match_cpu(models) )
>      {
>          printk(XENLOG_WARNING
>  	       "Disabling C-states C3 and C6 due to CPU errata\n");
> -        max_cstate =3D 1;
> +        max_usable_cstate =3D 1;
>      }
>  }
> =20
> --- a/xen/arch/x86/cpu/mwait-idle.c
> +++ b/xen/arch/x86/cpu/mwait-idle.c
> @@ -1045,15 +1045,16 @@ static void cf_check mwait_idle(void)
>  	u64 before, after;
>  	u32 exp =3D 0, pred =3D 0, irq_traced[4] =3D { 0 };
> =20
> -	if (max_cstate > 0 && power &&
> +	if (max_cstate() > 0 && power &&
>  	    (next_state =3D cpuidle_current_governor->select(power)) > 0) {
>  		unsigned int max_state =3D sched_has_urgent_vcpu() ? ACPI_STATE_C1
> -								 : max_cstate;
> +								 : max_cstate();
> =20
>  		do {
>  			cx =3D &power->states[next_state];
> -		} while ((cx->type > max_state || (cx->type =3D=3D max_cstate &&
> -			  MWAIT_HINT2SUBSTATE(cx->address) > max_csubstate)) &&
> +		} while ((cx->type > max_state ||
> +                          (cx->type =3D=3D max_allowed_cstate &&
> +			   MWAIT_HINT2SUBSTATE(cx->address) > max_csubstate)) &&
>  			 --next_state);
>  		if (!next_state)
>  			cx =3D NULL;
> @@ -1458,7 +1459,7 @@ static void __init sklh_idle_state_table
>  	u64 msr;
> =20
>  	/* if PC10 disabled via cmdline max_cstate=3D7 or shallower */
> -	if (max_cstate <=3D 7)
> +	if (max_cstate() <=3D 7)
>  		return;
> =20
>  	/* if PC10 not present in CPUID.MWAIT.EDX */
> @@ -1623,7 +1624,7 @@ static int __init mwait_idle_probe(void)
>  	    !mwait_substates)
>  		return -ENODEV;
> =20
> -	if (!max_cstate || !opt_mwait_idle) {
> +	if (!max_cstate() || !opt_mwait_idle) {
>  		pr_debug(PREFIX "disabled\n");
>  		return -EPERM;
>  	}
> @@ -1714,8 +1715,8 @@ static int cf_check mwait_idle_cpu_init(
>  		hint =3D flg2MWAIT(cpuidle_state_table[cstate].flags);
>  		state =3D MWAIT_HINT2CSTATE(hint) + 1;
> =20
> -		if (state > max_cstate) {
> -			printk(PREFIX "max C-state %u reached\n", max_cstate);
> +		if (state > max_cstate()) {
> +			printk(PREFIX "max C-state %u reached\n", max_cstate());
>  			break;
>  		}
> =20
> --- a/xen/arch/x86/include/asm/time.h
> +++ b/xen/arch/x86/include/asm/time.h
> @@ -31,7 +31,6 @@ int cpu_frequency_change(u64 freq);
> =20
>  void cf_check pit_broadcast_enter(void);
>  void cf_check pit_broadcast_exit(void);
> -int pit_broadcast_is_available(void);
> =20
>  uint64_t cf_check acpi_pm_tick_to_ns(uint64_t ticks);
> =20
> --- a/xen/arch/x86/time.c
> +++ b/xen/arch/x86/time.c
> @@ -517,7 +517,7 @@ static int64_t __init cf_check init_hpet
>      bool disable_hpet =3D false;
> =20
>      if ( hpet_address && strcmp(opt_clocksource, pts->id) &&
> -         cpuidle_using_deep_cstate() )
> +         cpuidle_usable_deep_cstate() )
>      {
>          if ( pci_conf_read16(PCI_SBDF(0, 0, 0x1f, 0),
>                               PCI_VENDOR_ID) =3D=3D PCI_VENDOR_ID_INTEL )
> @@ -2655,7 +2655,7 @@ static int _disable_pit_irq(bool init)
>       * XXX dom0 may rely on RTC interrupt delivery, so only enable
>       * hpet_broadcast if FSB mode available or if force_hpet_broadcast.
>       */
> -    if ( cpuidle_using_deep_cstate() && !boot_cpu_has(X86_FEATURE_XEN_AR=
AT) )
> +    if ( cpuidle_usable_deep_cstate() && !boot_cpu_has(X86_FEATURE_XEN_A=
RAT) )
>      {
>          init ? hpet_broadcast_init() : hpet_broadcast_resume();
>          if ( !hpet_broadcast_is_available() )
> @@ -2707,11 +2707,6 @@ void cf_check pit_broadcast_exit(void)
>          reprogram_timer(this_cpu(timer_deadline));
>  }
> =20
> -int pit_broadcast_is_available(void)
> -{
> -    return cpuidle_using_deep_cstate();
> -}
> -
>  void send_timer_event(struct vcpu *v)
>  {
>      send_guest_vcpu_virq(v, VIRQ_TIMER);
> @@ -2999,7 +2994,7 @@ static void cf_check dump_softtsc(unsign
>      else if ( boot_cpu_has(X86_FEATURE_CONSTANT_TSC ) )
>      {
>          printk("TSC has constant rate, ");
> -        if ( max_cstate <=3D ACPI_STATE_C2 && tsc_max_warp =3D=3D 0 )
> +        if ( max_usable_cstate <=3D ACPI_STATE_C2 && tsc_max_warp =3D=3D=
 0 )
>              printk("no deep Cstates, passed warp test, deemed reliable, =
");
>          else
>              printk("deep Cstates possible, so not reliable, ");
> --- a/xen/include/xen/acpi.h
> +++ b/xen/include/xen/acpi.h
> @@ -142,30 +142,33 @@ int acpi_gsi_to_irq (u32 gsi, unsigned i
> =20
>  #ifdef	CONFIG_ACPI_CSTATE
>  /*
> - * max_cstate sets the highest legal C-state.
> - * max_cstate =3D 0: C0 okay, but not C1
> - * max_cstate =3D 1: C1 okay, but not C2
> - * max_cstate =3D 2: C2 okay, but not C3 etc.
> -
> - * max_csubstate sets the highest legal C-state sub-state. Only applies =
to the
> - * highest legal C-state.
> - * max_cstate =3D 1, max_csubstate =3D 0 =3D=3D> C0, C1 okay, but not C1E
> - * max_cstate =3D 1, max_csubstate =3D 1 =3D=3D> C0, C1 and C1E okay, bu=
t not C2
> - * max_cstate =3D 2, max_csubstate =3D 0 =3D=3D> C0, C1, C1E, C2 okay, b=
ut not C3
> - * max_cstate =3D 2, max_csubstate =3D 1 =3D=3D> C0, C1, C1E, C2 okay, b=
ut not C3
> + * max_{allowed,usable}_cstate sets the highest allowed / usable C-state=
, where
> + * "allowed" is command line / sysctl based.
> + * max_*_cstate =3D 0: C0 okay, but not C1
> + * max_*_cstate =3D 1: C1 okay, but not C2
> + * max_*_cstate =3D 2: C2 okay, but not C3 etc.
> + *
> + * max_csubstate sets the highest allowed C-state sub-state. Only applie=
s to
> + * the highest allowed C-state.
> + * max_allowed_cstate =3D 1, max_csubstate =3D 0 =3D=3D> C0, C1 okay, bu=
t not C1E
> + * max_allowed_cstate =3D 1, max_csubstate =3D 1 =3D=3D> C0, C1 and C1E =
okay, but not C2
> + * max_allowed_cstate =3D 2, max_csubstate =3D 0 =3D=3D> C0, C1, C1E, C2=
 okay, but not C3
> + * max_allowed_cstate =3D 2, max_csubstate =3D 1 =3D=3D> C0, C1, C1E, C2=
 okay, but not C3
>   */
> =20
> -extern unsigned int max_cstate;
> +extern unsigned int max_usable_cstate;
> +extern unsigned int max_allowed_cstate;
>  extern unsigned int max_csubstate;
> =20
> +#define max_cstate() min(max_usable_cstate, max_allowed_cstate)
> +
>  static inline unsigned int acpi_get_cstate_limit(void)
>  {
> -	return max_cstate;
> +	return max_allowed_cstate;
>  }
>  static inline void acpi_set_cstate_limit(unsigned int new_limit)
>  {
> -	max_cstate =3D new_limit;
> -	return;
> +	max_allowed_cstate =3D new_limit;
>  }
> =20
>  static inline unsigned int acpi_get_csubstate_limit(void)
> --- a/xen/include/xen/cpuidle.h
> +++ b/xen/include/xen/cpuidle.h
> @@ -89,7 +89,7 @@ struct cpuidle_governor
>  extern int8_t xen_cpuidle;
>  extern struct cpuidle_governor *cpuidle_current_governor;
> =20
> -bool cpuidle_using_deep_cstate(void);
> +bool cpuidle_usable_deep_cstate(void);
>  void cpuidle_disable_deep_cstate(void);
> =20
>  #define CPUIDLE_DRIVER_STATE_START  1

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

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

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

iQEzBAEBCAAdFiEEhrpukzGPukRmQqkK24/THMrX1ywFAmnWxGsACgkQ24/THMrX
1yyduAf/WsNYO6OcTfuk9TEpSOc9H1MgPkYS1TY3m5ZyQc60KwjvMlnUkFwlR2j8
hxKT/1htjFHuvBcY0efO5TSM9kbnfqZC+wjqc1L7D1UNVZJs7NJDQWtYp0UeBBGx
9TBE+s97exUrcQttVqLi8mhTHoDZV/CoUauU3ZNvUsV7s0QMAojxCQObLz+uEecm
5T8CtHL70esiVx/I1d8t0du+dW78xwOPV3UHZdtI7fVZxySiBinZ3qEb3dThonym
Qkf+8O+aFe4OFnlLZCBamt2a4CpZMWq5Mpnu5bsk7Xmh2jNY5IbDE1dbEa8SuX6C
p6s+g01iokPL+jEWWflQveku2IHTtA==
=Kngx
-----END PGP SIGNATURE-----

--QESya23L83tZWxwF--


From xen-devel-bounces@lists.xenproject.org Wed Apr 08 23:41:26 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 08 Apr 2026 23:41:26 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1276606.1561976 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wAcWF-0000hZ-Go; Wed, 08 Apr 2026 23:41:11 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1276606.1561976; Wed, 08 Apr 2026 23: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 1wAcWF-0000hS-CS; Wed, 08 Apr 2026 23:41:11 +0000
Received: by outflank-mailman (input) for mailman id 1276606;
 Wed, 08 Apr 2026 23:41:10 +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 1wAcWC-0000hK-Uq
 for xen-devel@lists.xenproject.org; Wed, 08 Apr 2026 23:41:10 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wAcWB-006f8p-Lq
 for xen-devel@lists.xenproject.org; Thu, 09 Apr 2026 01:41:07 +0200
Received: from [10.42.69.2] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <dmukhin@ford.com>)
 id 69d6e766-5cb7-0a2a0a5109dd-0a2a4502d386-6
 for <xen-devel@lists.xenproject.org>; Thu, 09 Apr 2026 01:41:07 +0200
Received: from [148.163.146.23] (helo=mx0a-00498f03.pphosted.com)
 by tlsNG-720697.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.0)
 (envelope-from <dmukhin@ford.com>)
 id 69d6e791-42fa-0a2a45020019-94a392173d3a-3
 for <xen-devel@lists.xenproject.org>; Thu, 09 Apr 2026 01:41:07 +0200
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
 638LtnUG1629759
 for <xen-devel@lists.xenproject.org>; Wed, 8 Apr 2026 23:41:05 GMT
Received: from dm1pr04cu001.outbound.protection.outlook.com
 (mail-centralusazon11010064.outbound.protection.outlook.com [52.101.61.64])
 by mx0a-00498f03.pphosted.com (PPS) with ESMTPS id 4ddyc78g8p-1
 (version=TLSv1.3 cipher=TLS_AES_256_GCM_SHA384 bits=256 verify=NOT)
 for <xen-devel@lists.xenproject.org>; Wed, 08 Apr 2026 23:41:04 +0000 (GMT)
Received: from MN2PR18CA0023.namprd18.prod.outlook.com (2603:10b6:208:23c::28)
 by SA6PR16MB6588.namprd16.prod.outlook.com (2603:10b6:806:415::17)
 with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9769.20; Wed, 8 Apr
 2026 23:40:59 +0000
Received: from BL02EPF00029928.namprd02.prod.outlook.com
 (2603:10b6:208:23c:cafe::58) by MN2PR18CA0023.outlook.office365.com
 (2603:10b6:208:23c::28) with Microsoft SMTP Server (version=TLS1_3,
 cipher=TLS_AES_256_GCM_SHA384) id 15.20.9769.37 via Frontend Transport; Wed,
 8 Apr 2026 23:40:50 +0000
Received: from mx0b-00498f04.pphosted.com (148.163.138.245) by
 BL02EPF00029928.mail.protection.outlook.com (10.167.249.53) with Microsoft
 SMTP Server (version=TLS1_3, cipher=TLS_AES_256_GCM_SHA384) id 15.20.9769.17
 via Frontend Transport; Wed, 8 Apr 2026 23:40:58 +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
 638JxUch777966
 for <xen-devel@lists.xenproject.org>; Wed, 8 Apr 2026 19:40:57 -0400
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 4dcmrqjwtj-4
 (version=TLSv1.3 cipher=TLS_AES_128_GCM_SHA256 bits=128 verify=NOT)
 for <xen-devel@lists.xenproject.org>; Wed, 08 Apr 2026 19:40:57 -0400 (EDT)
Received: from localhost ([19.12.76.221]) by cmsmtp with ESMTPSA
 id AcVzwVEAeUZxsAcW0wIGfL; Wed, 08 Apr 2026 23: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=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=RQ/j706FzHcohf7qfylReK/Vk
	W8/+qooP0yijNDcb9w=; b=gcRoDdh4fpXYeaTgY8GhvjgHbJovy2eR6lZsjLpw3
	yAw0bXWbn1AayCdhw+A/iyirkmIktVHRnZsnuwVAqNggK+QMOyKkq4lFnu4BD3P0
	3uEIjx3Ys42noywJ2WR6k9IK5TXpi7vp2azNHIcSuPJjKTxQfUHgx9OSqB8Jcqsi
	AaX4Vbt9tLoSBxQA5ChjusdUi2XW0P3w5rMcVG03k5EFsZSw7PPr6DBOndw0Vhyw
	8z/h2hBqTC7sDln/BZ22As4Fpb/3WRbocF4obFJW+aaQn+mC4k/mKxY7tfsHmslR
	EQ1i2UfqSWeAWp4NpOTQWeZX4UwwUrTj9PSEARqU0+lzg==
ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none;
 b=OT/qMrS2wAzELh3OHuwt7Ggx719Fc13nG9kJJzEh/Sv7Ukt7sbd5utoedF2oE5wOxGn3kMSjW7MITLrb/cXXyEW1Gkm+VPSHRiu8AHEm5SjD3NVEQicVFp/DMDepxZHyOoLibqMyXI5lweqmeddddttfxoysXSoP+wpQY59k6FgRa4oRBOooMSP9JfDVpA8BmT1VlqDwFnwoBp4yai2yKYHk4J2q+4V88tcCE0/WspgCWNSJD1mf3HuG+m23asgMqSBy/F2B59RT1AVidEtcyCsmg+przKs9ddotd4BAj4zlRpTnrVNtfOwiWaU41Qx4OWa+FlHU1sL/MAbrGm8xpA==
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com;
 s=arcselector10001;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1;
 bh=RQ/j706FzHcohf7qfylReK/VkW8/+qooP0yijNDcb9w=;
 b=iiSqdAHivRoghNXRubUHUYPyMWGtmVUoIRTBxOWyX2w0TPVwMryTqMIfmcNXJjpyqrz5z67SXcPmmnx42Sy85m+NSN11P0dAEdKF7Xpvb8fvxrmH97ghaU9owCzlGiel1YVcffLFju/a3BecskhyKRKy0/1ED3I8c+dWv9iZUwlBRMuClyIy6CqutQYVJL2P2+XRjw9cUhZj7puXbPq2hn4kGomwCXorHfenI9BVbaohnnpEQhW/rIFQasXRoGsZIGEgyZwDRECDh7NC7x7FKlVJEwZsEcw3nu4Kvc/svGsTKXrHiOY40a3LYSJpw1Tvdc4pH0mx1blKvn9iByYYQA==
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=RQ/j706FzHcohf7qfylReK/VkW8/+qooP0yijNDcb9w=;
 b=fsQNzp+Eguf0h0+k9tLBEY46n/a4y4H0pdJZFosaM0aZpvHZeirO2TbvsgN69bWXYJ4GH3GGVd/sttYI9eqvC8Do5RBO3nm6UKLMUZusotRLE3L1Z+uw5yJcr44yjHYetzzREbo48W+UmRNMgmQZL0oq3PxuQPsFLSgCehXzsG4=
X-MS-Exchange-Authentication-Results: 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=RQ/j706
	FzHcohf7qfylReK/VkW8/+qooP0yijNDcb9w=; b=kSerk4+WD9x4SdxbZTOKg9l
	ZtwQ8gyseBrkFe1ANZeOYRc81OodKAtt92MjMcLEMFhYI+er7usSF753t/fwARqP
	pNOu6YxvO5L5io2BCYZ1zJ8HkAYSm6gU6440SMclyoCsps5+wGcrmqdTKxaZfTm6
	hMcxirOs/XTtkunk9m37k+RO6uW8EUPROyY/5qUXENeS6AS+ww+06DMwtcq6MsSd
	wOao8B/Z5YB+TB4P16ZTig6Mxw6c5rTp/Z0eaoQKtYQePZ3oFbKhuzdppYwzdcLq
	tMuzmZYmekseKFc3gSV+DgV9gDwzc3VXZTXl9v2GlqrLZgXE6cgCzRNWXUJMvFw=
	=
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=RQ/j706FzHcohf7qfylReK/VkW8/+qo
	oP0yijNDcb9w=; b=ZWQ+b+8aHBTP1eOzrp5NC/t5+xQU17QV6dd33m2DVF/SCm5
	tuMzJoUfmwYDSiM/O7IRAow06rgr5eSUDaIa7dXYrwQ4rjz0S15VxHMb2F+0J5Np
	G4IouAaC/RywuO14gCsx5uDKbuUV5+fdsfsrsWfSnKNNlJNOCRMeIVvvcdHCBIm5
	yZTa5LD6eqOeQIvfawaehioufZ4pqA7ZfU57JqQAK54P1FHN6rNb1ip3w8P/N9J2
	75ZwZzEo8V7pKaTi6f6Av54Q54iF6za8I+ExRViJkl8VmOc1JQTe5/89zGUx4hXi
	es9Vp79BPRZKkSboRiB3X+GANTrdcZP7ciY9XkQ==
X-Mailer: SER-76bead168636dc6ed1c9e51ce4dea80dbdd4163750742b614a4d871e565792b7
X-Cloudmark-MID: AcVzwVEAeUZxsAcW0wIGfL
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.pau@citrix.com,
        sstabellini@kernel.org, dmukhin@ford.com
Subject: [PATCH v7] xen/domain: introduce DOMID_ANY
Date: Wed,  8 Apr 2026 16:40:46 -0700
Message-ID: <20260408234046.1314021-1-dmukhin@ford.com>
X-Mailer: git-send-email 2.53.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.1143,Hydra:6.1.51,FMLib:17.12.100.49
 definitions=2026-04-08_06,2026-04-08_01,2025-10-01_01
X-Proofpoint-Spam-Details: rule=notspam policy=default score=0 spamscore=0
 adultscore=0 phishscore=0 lowpriorityscore=0 malwarescore=0 bulkscore=0
 suspectscore=0 classifier=typeunknown authscore=0 authtc= authcc=
 route=outbound adjust=0 reason=mlx scancount=1 engine=8.22.0-2604010000
 definitions=main-2604080219
X-EOPAttributedMessage: 0
X-MS-PublicTrafficType: Email
X-MS-TrafficTypeDiagnostic: BL02EPF00029928:EE_|SA6PR16MB6588:EE_
Content-Type: text/plain
X-MS-Office365-Filtering-Correlation-Id: 2dbb223f-628e-4b2e-11e4-08de95c848e3
X-MS-Exchange-SenderADCheck: 1
X-MS-Exchange-AntiSpam-Relay: 0
X-Microsoft-Antispam:
	BCL:0;ARA:13230040|1800799024|36860700016|376014|82310400026|13003099007|18002099003|56012099003;
X-Microsoft-Antispam-Message-Info:
	Q4kpmnRPMvqjYK7+URhHYdDIqJCv543mm14VqY4onvcnS2+gbU9io05F7ZbLH3IULCXmbgOz4NUNIo29MaFO6au25g0XnxvLTWtjYs7D/kgUTu4Qlpp4fD7cgE75XaS7uXKtEJSv9MwtEx/ZJsnkYJd8gOXw+0m42RJ3NtZdELjZmjnVldVgJKamo6QGFPFhr5tVNWIVfkTFUr5macuG/JP4PnFSn3u+7M4V2VnCyrDM2llesaISnJubfZ1zKi88PzGHzAxcQClUFE47lvwh89u+XpDKVGTgrsjQQB5aqb/tU5tvnryD8AVNQwtCiSw9YqjoZoK+F+Dri7pYXDWrr6U9Xr7bvUnzFfb1noZEPFrQBWmt8lH9jNPl8AhCGHfmlosv4RbD8lv2H/sEEG2R/aWteToGcuz1N2qqdVpYd9VXUESDHqaWFfTEueAKxo5wdIXpOfKz1JvYa0a4g7cMdWm/JL6iPt46s5TwEjhEruUobXsNtsT7BfRxfhZ22hRbk8NQ/dnc1NtzF4mXFv6ZmEB+EPSrQS4dFBbP5KO8C1MOAY6+djqQJH7ncQ5c6JWApeOXF+sC3kipJUAuQtB94orksRGgVUO+KGqbFLEdKcYmXc8Q9cEGEFnTkEiv4M7rVWvToqry/4mIVhq6yulhxTAoBVpn9VJbh3JzKoTQZY7RznzPfzDXOSM8lIwBv5jctEkKXAkh5dZlqkzjdW5GwDkHad1a9PB6JYlr2uSCTrM=
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)(36860700016)(376014)(82310400026)(13003099007)(18002099003)(56012099003);DIR:OUT;SFP:1101;
X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1
X-MS-Exchange-AntiSpam-MessageData-0:
	NFVeN63SNt9Ki3Zr+Epdze6Lqf0zuxtt3FSqQYYyru2s38xkOvbwjjliOX195Gp9itJwOap8nMZ9d4W0KJ3KicxvtrfhF/w+H80MTaSBCEXra5XqEaOc1gdd2NKBNM+67h9o75QTJE5cNmNgxp9Kd8eRQaLaZag05e6EcT8o+0eMdtSRQzPuAv8Wsfk+hENJgAQTXMQzQro95uHowgtieh4NI9foNmf2y51CeK7tsiGd16nnJw2EjHiTQmhdiTadaDVnDdgvHDFVnMWncZi1qK5AOu1wH7dGlvbQjfZvynpztegYUFyAHYS5iZ7eC5pOMOJSYuVM1rZKXXYkMemC2GXLfXpmKiuOdyU6d/rE/2Mb+In01AfARDr/lL9OzPBFefDbrguj+aJdvs1SGpTAQA+rZSw5dFYhupUQ3teA/cX519wtCYGTTmfaKDBMHfBk
X-Exchange-RoutingPolicyChecked:
	uApO38a98059SlNOVT93f0fcgcgbZANlLeQocQuRDix72p/S1ZetGxSojbYhaThM+/dV7HcTV3xyVkBfYzRX9BHN/5/jWHibstfBRi+oxkrKlAiWAZGrYcEvf9epbusuFFUdLw4erykn64CoVEjHIXUZsqL9earlJX0lJPmbYKhNwOWTgUayDczr7icndlPxNuHnB1oqe2Xx5cplAfjtJVIf0hdlYJHm2ngwR+QiMUn45Aigh3gXGvX0EzPdp8RfWuSyepqni01ZPvDm5Gt7fsAo9Qary1PR3XQwCRmtDyICOCAfN0Ihi72Mo1WKeFwNa4tEHCIhKWjCZdrAwivxjA==
X-MS-Exchange-AntiSpam-ExternalHop-MessageData-ChunkCount: 1
X-MS-Exchange-AntiSpam-ExternalHop-MessageData-0:
	yI+RdjJbfuhkg9iFKJrULmgawfnWWVG8B+hjiIRfcqZyrLVuTGr/cz9UKOJaUaKFM2WlB3yRa3lIZ/o5na1mns0XBx4IoEf2VT2CyzHX0reZPWsAaKYKBjTtJepz3pyNskUJNAflHgDGaq/k9KMjJJ/yv2WG/LS3v2I2fvErlUN1zZAtHwkJH8PbkKtjjRpEmFphgZRd1e+AOoAzxAM3Q+N9LU7Dy8jwn04KtrHDygWOuNYSYStP0U72073NI8iyyP/hppOsRepW0zhGKIWd3bmGlYN0jbRtrcd07ZTNBqOjhP+TSfTB66fmfwOVFyIJQ7NsSI4vgPW1FlcHlH0HMKrmZgIoSviWp7tAzCSoZxz7hBZgTPGVIWu7OLaZB/dE6TJ915fH5qeWbu5PrLSf2WSYj2dOWBQsQIWLqHZi67Gsab8M/86wFL50bjOb9NlG08kc0iRcoCXAz5BTaqYGye3rFmUJ9nSt1y88rq9Mkc93PCBdSqMdyAs83myuy0s8rsYty4MGHDZaQkjJdXdlA+FWfiQX3ubEg5FwmhWUJqO6+APY8AKyL4FEBBZUYRCTONPh1l+MrTvhZsZQx32apU5CSi9aKhgDmKKz0yImlYkMKnaS2EMR6HAtYxdYZCsHshlY8EcrPTLhpdcyweKkng==
X-OriginatorOrg: ford.com
X-MS-Exchange-CrossTenant-OriginalArrivalTime: 08 Apr 2026 23:40:58.1147
 (UTC)
X-MS-Exchange-CrossTenant-Network-Message-Id: 2dbb223f-628e-4b2e-11e4-08de95c848e3
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:
	BL02EPF00029928.namprd02.prod.outlook.com
X-MS-Exchange-CrossTenant-AuthAs: Anonymous
X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem
X-MS-Exchange-Transport-CrossTenantHeadersStamped: SA6PR16MB6588
X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwNDA4MDIxOSBTYWx0ZWRfX/2uPI++nX5mR
 uiczdAqVc81pHD0AHlP9tNeH521g48pdDEPbzQIoqKn1K/BJu0zO34XwbLqYxbJYf5tHl3YIuZE
 KWu7k5y7hf+WTFtJHDsQk5yyhYwmtTULbHW1p4KsCUYEEErQFbXFZvHrKw19YwQJqiGcGbx7YrL
 Xky4bVADAEWa/afA2hiag/JkPBPUEt0vtEpUgd2wcJJEC2L3ANw8yT/ne/UgwK10VYbwzy6nObl
 F+zMcwy6XekYrUAXnURxyjWCLyF1SSggCj9mO6aeBV3bfZQc+E5Zde9TwSdidRmb8GQJai9s5Xq
 7J5IdQbdfRWnzcgPWLV2NeVM2s8r81PZpQzNOa/rorY4R52EvSyKVJad+qyTuYCLbPO6sQAUN8I
 5B6k/76/D5kMzzwnDULf1NtK0vq4X0i6brAUHlyMozoAl5O8WeShpV2romFqtO5BPvumHbVBqGV
 KISqQfLm+GN77fnIx/w==
X-Proofpoint-GUID: OYkpjBt_wUx-X9StGkMFdKFCBjneb8ML
X-Proofpoint-ORIG-GUID: OYkpjBt_wUx-X9StGkMFdKFCBjneb8ML
X-Authority-Analysis: v=2.4 cv=Ida3n2qa c=1 sm=1 tr=0 ts=69d6e790 cx=c_pps
 a=0b+utHCzfji0ILmZHHcyhA==:117 a=b7IhknPlfT0FN1EembXvig==:17
 a=6eWqkTHjU83fiwn7nKZWdM+Sl24=:19 a=A5OVakUREuEA:10 a=3PXLN80vpJUA:10
 a=6NUGLSImWEsA:10 a=w9pew1qAHqMA:10 a=VkNPw1HP01LnGYTKEx00:22
 a=P_n1zlmtWsCQbjROFjcg:22 a=N9_n2FxmZfwfyRXvS9-E:22 a=VwQbUJbxAAAA:8
 a=cbNQJ9GKAAAA:8 a=p0WdMEafAAAA:8 a=UP8sGbTbwCjyvoZiEfAA:9
 a=G69WFyCBNqGPyalROSdv:22
X-Proofpoint-Virus-Version: vendor=baseguard
 engine=ICAP:2.0.293,Aquarius:18.0.1143,Hydra:6.1.51,FMLib:17.12.100.49
 definitions=2026-04-08_06,2026-04-08_01,2025-10-01_01
X-Proofpoint-Spam-Details: rule=notspam policy=default score=0 phishscore=0
 adultscore=0 impostorscore=0 malwarescore=0 suspectscore=0 priorityscore=1501
 spamscore=0 bulkscore=0 lowpriorityscore=0 clxscore=1015
 classifier=typeunknown authscore=0 authtc= authcc= route=outbound adjust=0
 reason=mlx scancount=1 engine=8.22.0-2604010000 definitions=main-2604080219
X-purgate-ID: tlsNG-720697/1775691667-AF323CD1-E8B5013A/0/0
X-purgate-type: clean
X-purgate-size: 7152

From: Denis Mukhin <dmukhin@ford.com> 

Add a new symbol DOMID_ANY to improve the readability of the code.

Update all relevant domid_alloc() call sites and harden the domid_alloc()
input value check.

Also, fix problem with passing invalid domain IDs in
XEN_DOMCTL_createdomain: turns out libxl__domain_make() (toolstack)
uses 0xffff as domain ID.

Amends: 2d5065060710 ("xen/domain: unify domain ID allocation")
Signed-off-by: Denis Mukhin <dmukhin@ford.com>
---
Changes since v6:
- fixed libxl_domid_valid_guest() check in libxl_create.c
- Link to v6: https://lore.kernel.org/xen-devel/20260307025451.3148078-2-dmukhin@ford.com/
- CI: https://gitlab.com/xen-project/people/dmukhin/xen/-/pipelines/2438790748
---
 tools/libs/light/libxl_create.c         |  4 +++-
 tools/tests/domid/harness.h             |  1 +
 tools/tests/domid/test-domid.c          | 12 ++++++------
 xen/common/device-tree/dom0less-build.c |  2 +-
 xen/common/domctl.c                     |  3 +--
 xen/common/domid.c                      |  5 ++++-
 xen/include/public/xen.h                |  7 +++++++
 7 files changed, 23 insertions(+), 11 deletions(-)

diff --git a/tools/libs/light/libxl_create.c b/tools/libs/light/libxl_create.c
index bfc9149096a3..6fd62d140389 100644
--- a/tools/libs/light/libxl_create.c
+++ b/tools/libs/light/libxl_create.c
@@ -681,8 +681,10 @@ int libxl__domain_make(libxl__gc *gc, libxl_domain_config *d_config,
                     continue;
 
                 local_domid = v;
+            } else if (libxl_domid_valid_guest(info->domid)) {
+                local_domid = info->domid;
             } else {
-                local_domid = info->domid; /* May not be valid */
+                local_domid = DOMID_ANY;
             }
 
             ret = xc_domain_create(ctx->xch, &local_domid, &create);
diff --git a/tools/tests/domid/harness.h b/tools/tests/domid/harness.h
index 17eb22a9a854..65da0d075a2b 100644
--- a/tools/tests/domid/harness.h
+++ b/tools/tests/domid/harness.h
@@ -41,6 +41,7 @@ extern unsigned long find_next_zero_bit(const unsigned long *addr,
 
 #define DOMID_FIRST_RESERVED            (100)
 #define DOMID_INVALID                   (101)
+#define DOMID_ANY                       (102)
 
 #endif /* _TEST_HARNESS_ */
 
diff --git a/tools/tests/domid/test-domid.c b/tools/tests/domid/test-domid.c
index 5915c4699a5c..71cc4e7fd86d 100644
--- a/tools/tests/domid/test-domid.c
+++ b/tools/tests/domid/test-domid.c
@@ -41,20 +41,20 @@ int main(int argc, char **argv)
         domid_free(expected);
 
     /*
-     * Test that that two consecutive calls of domid_alloc(DOMID_INVALID)
+     * Test that that two consecutive calls of domid_alloc(DOMID_ANY)
      * will never return the same ID.
      * NB: ID#0 is reserved and shall not be allocated by
-     * domid_alloc(DOMID_INVALID).
+     * domid_alloc(DOMID_ANY).
      */
     for ( expected = 1; expected < DOMID_FIRST_RESERVED; expected++ )
     {
-        allocated = domid_alloc(DOMID_INVALID);
+        allocated = domid_alloc(DOMID_ANY);
         verify(allocated == expected,
                "TEST 3: expected %u allocated %u\n", expected, allocated);
     }
     for ( expected = 1; expected < DOMID_FIRST_RESERVED; expected++ )
     {
-        allocated = domid_alloc(DOMID_INVALID);
+        allocated = domid_alloc(DOMID_ANY);
         verify(allocated == DOMID_INVALID,
                "TEST 4: expected %u allocated %u\n", DOMID_INVALID, allocated);
     }
@@ -64,7 +64,7 @@ int main(int argc, char **argv)
         domid_free(expected);
     for ( expected = 1; expected < DOMID_FIRST_RESERVED / 2; expected++ )
     {
-        allocated = domid_alloc(DOMID_INVALID);
+        allocated = domid_alloc(DOMID_ANY);
         verify(allocated == expected,
                "TEST 5: expected %u allocated %u\n", expected, allocated);
     }
@@ -72,7 +72,7 @@ int main(int argc, char **argv)
     /* Re-allocate last ID from [1..DOMID_FIRST_RESERVED - 1]. */
     expected = DOMID_FIRST_RESERVED - 1;
     domid_free(DOMID_FIRST_RESERVED - 1);
-    allocated = domid_alloc(DOMID_INVALID);
+    allocated = domid_alloc(DOMID_ANY);
     verify(allocated == expected,
            "TEST 6: expected %u allocated %u\n", expected, allocated);
 
diff --git a/xen/common/device-tree/dom0less-build.c b/xen/common/device-tree/dom0less-build.c
index 840d14419da2..3c18dae5e625 100644
--- a/xen/common/device-tree/dom0less-build.c
+++ b/xen/common/device-tree/dom0less-build.c
@@ -852,7 +852,7 @@ void __init create_domUs(void)
         if ( (max_init_domid + 1) >= DOMID_FIRST_RESERVED )
             panic("No more domain IDs available\n");
 
-        domid = domid_alloc(DOMID_INVALID);
+        domid = domid_alloc(DOMID_ANY);
         if ( domid == DOMID_INVALID )
             panic("Error allocating ID for domain %s\n", dt_node_name(node));
 
diff --git a/xen/common/domctl.c b/xen/common/domctl.c
index 93738931c575..b969f5ada6cc 100644
--- a/xen/common/domctl.c
+++ b/xen/common/domctl.c
@@ -409,8 +409,7 @@ long do_domctl(XEN_GUEST_HANDLE_PARAM(xen_domctl_t) u_domctl)
 
     case XEN_DOMCTL_createdomain:
     {
-        /* NB: ID#0 is reserved, find the first suitable ID instead. */
-        domid_t domid = domid_alloc(op->domain ?: DOMID_INVALID);
+        domid_t domid = domid_alloc(op->domain);
 
         if ( domid == DOMID_INVALID )
         {
diff --git a/xen/common/domid.c b/xen/common/domid.c
index 2387ddb08300..b0258e477c1a 100644
--- a/xen/common/domid.c
+++ b/xen/common/domid.c
@@ -19,7 +19,7 @@ static DECLARE_BITMAP(domid_bitmap, DOMID_FIRST_RESERVED);
  * @param domid Domain ID hint:
  * - If an explicit domain ID is provided, verify its availability and use it
  *   if ID is not used;
- * - If DOMID_INVALID is provided, search [1..DOMID_FIRST_RESERVED-1] range,
+ * - If DOMID_ANY is provided, search [1..DOMID_FIRST_RESERVED-1] range,
  *   starting from the last used ID. Implementation guarantees that two
  *   consecutive calls will never return the same ID. ID#0 is reserved for
  *   the first boot domain (currently, dom0) and excluded from the allocation
@@ -31,6 +31,9 @@ domid_t domid_alloc(domid_t domid)
 {
     static domid_t domid_last;
 
+    if ( domid >= DOMID_FIRST_RESERVED && domid != DOMID_ANY )
+        return DOMID_INVALID;
+
     spin_lock(&domid_lock);
 
     /* Exact match. */
diff --git a/xen/include/public/xen.h b/xen/include/public/xen.h
index b12fd10e6315..f35a6f21f063 100644
--- a/xen/include/public/xen.h
+++ b/xen/include/public/xen.h
@@ -608,6 +608,13 @@ DEFINE_XEN_GUEST_HANDLE(mmuext_op_t);
 /* DOMID_INVALID is used to identify pages with unknown owner. */
 #define DOMID_INVALID        xen_mk_uint(0x7FF4)
 
+/*
+ * DOMID_ANY is used to signal no specific domain ID requested.
+ * Handler should pick a valid ID, or handle it as a broadcast value
+ * depending on the context.
+ */
+#define DOMID_ANY            xen_mk_uint(0x7FF5)
+
 /* Idle domain. */
 #define DOMID_IDLE           xen_mk_uint(0x7FFF)
 
-- 
2.53.0



From xen-devel-bounces@lists.xenproject.org Thu Apr 09 00:13:43 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 09 Apr 2026 00:13:43 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1276623.1561984 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wAd1c-0005mE-Ts; Thu, 09 Apr 2026 00:13:36 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1276623.1561984; Thu, 09 Apr 2026 00: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 1wAd1c-0005m7-Qp; Thu, 09 Apr 2026 00:13:36 +0000
Received: by outflank-mailman (input) for mailman id 1276623;
 Thu, 09 Apr 2026 00:13:35 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <julien.grall.oss@gmail.com>) id 1wAd1b-0005m1-CB
 for xen-devel@lists.xenproject.org; Thu, 09 Apr 2026 00:13:35 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wAd1a-009EU6-G0
 for xen-devel@lists.xenproject.org; Thu, 09 Apr 2026 02:13:34 +0200
Received: from [10.42.69.4] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <julien.grall.oss@gmail.com>)
 id 69d6eeeb-e002-0a2a0a5209dd-0a2a45049702-32
 for <xen-devel@lists.xenproject.org>; Thu, 09 Apr 2026 02:13:34 +0200
Received: from [209.85.221.49] (helo=mail-wr1-f49.google.com)
 by tlsNG-ebf023.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.0)
 (envelope-from <julien.grall.oss@gmail.com>)
 id 69d6ef2e-bb33-0a2a45040019-d155dd31e127-3
 for <xen-devel@lists.xenproject.org>; Thu, 09 Apr 2026 02:13:34 +0200
Received: by mail-wr1-f49.google.com with SMTP id
 ffacd0b85a97d-43b87970468so192957f8f.3
 for <xen-devel@lists.xenproject.org>; Wed, 08 Apr 2026 17:13:34 -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=20251104 header.d=gmail.com header.i="@gmail.com" header.h="Cc:To:Subject:Message-ID:Date:From:In-Reply-To:References:MIME-Version"
ARC-Seal: i=1; a=rsa-sha256; t=1775693614; cv=none;
        d=google.com; s=arc-20240605;
        b=Q0/lYVaKlVdBlwOJnNl1FVkd00ZQsQIte56hhogctLplwrjqT+qebBIP18mwVGcXO1
         l7z4DNxVCRWsVs3s9iLk4EIt9WWiJp1sVIlD/G7Ht/f9cETYcJ7RbV/HhdZCSt8Gg8TG
         7keNgRSfpQZlsF1rxBplQAJS+lREj/bVedkNHzCpZMoPLHPlF/d0JlheRw1w11prqJWL
         l5+Z0AB4nrh9bQ6nEkMVv2AvItOiz94gUW44d+azs9UyCiY0bpbFrV22xNuBqVxlow6u
         w+fTYDG4d9eIH+6VIa5y686LMAjtizzIoAXZDMqDi1ilmTfHErbsf3nOr4Ntr9RxVpK8
         83tg==
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20240605;
        h=cc:to:subject:message-id:date:from:in-reply-to:references
         :mime-version:dkim-signature;
        bh=YoBKR9yBDlNC21/0O3XNShWG2QOL440fpgoI5foBZeY=;
        fh=3nwizXhm5seTzn3SGLW2vYNrFe138cEImF99vpnv6Gs=;
        b=PHXQr2lDFMEoDxaI7D2NFV9xwKPREBo0qzj4hWpB/+A29xwQrsfKqeSs3I5YwpWKcA
         yxxsecBtPddlnjuaYA/29qNpbKP0lQfpIh4ErBbkFPMxzKAUvseqrn8S0fh0QTe9OUl0
         pnUJm38d/t7i7ILsC0pF7duVKfUS4a9lia3T64PT/WOT/boRpSwTVbthKI9K/ysr8DGo
         UwxTMRkSs05ge6gX4fD8ix6i1PNmi11FeroG5sEJTuFR6R3UDD2gL3LaOeSolQaqRdT9
         7BfTvUS4RLyhv8OaoFKMyEgHvldF1ZSuGKKr/IEDHMSQCSR7OqBF+0i3SevhwBeUgQZ4
         926Q==;
        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=20251104; t=1775693614; x=1776298414; darn=lists.xenproject.org;
        h=cc:to:subject:message-id:date:from:in-reply-to:references
         :mime-version:from:to:cc:subject:date:message-id:reply-to;
        bh=YoBKR9yBDlNC21/0O3XNShWG2QOL440fpgoI5foBZeY=;
        b=romJroC8cUuTW3L0mRsbg/UJUKtL46QQzfhd6T/7cQmlfa6eAaUXHVWENZVq/6keQL
         gZWQECVjli2jGcSteAPL2x7eK1DTpQ1iDOUMSblsyKYhT+BkjAbQ6xD6R8LCNt54R0Jz
         wl3MGMQIK8K+4jGvlPfZchR/BlSvG4vk4A0gQbJKwGfjfN2pPtxvnxL9mK2MeJgsOvs7
         rptGppz/b5GL/AK5v49ouo6gl+FcN+wyYXyRScEvswkM2j/jzmp1LqTafjFDS7NcXxwp
         g9AqjU/HFyx7Wnpo+fpqxxCT4VTEtWjdZANCuhGUN0pmp3h00Oj8n8/hG9ijJze0IY0k
         Qn+A==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20251104; t=1775693614; x=1776298414;
        h=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;
        bh=YoBKR9yBDlNC21/0O3XNShWG2QOL440fpgoI5foBZeY=;
        b=n5+yTPv55vwgy7Ba/nKiEUEitvINJnsxWZiNXFHkJ1sjhj/sFUqpIl53Mn9Y4Kighw
         A4FfVS/pv5Qzneu1FOyS06kuNCgud7wZTPDx5ecg3AP1dDhlSASnbQ+KwxznMEbiK7vO
         kQPVp9BVEvruREZncg3oVydQo5Ll/N8zO2yz6doYqqczP+682bOvVbQ2PjltXqlWf2ZH
         hwpcDockkeJQzZWA3XqvLKJdQP0+jOHNnUdB1DVU+3rmjF44qIlFZxNAwHSGIAvZqfQ0
         AlbwT5Pt6S23Q2cbRNbmd4936ukLliqOla/anFkY+HmIbVpH1EvFQpEIHWhat3fbvpUr
         YVvA==
X-Forwarded-Encrypted: i=1; AJvYcCWY/d6Pqo4roOli91J6++oW4GCc8KrpJyIhplz6uwlIPnT3XDUhgbwAy8zoU4hdiYKdSwdQlQAziSE=@lists.xenproject.org
X-Gm-Message-State: AOJu0Yz3bUoM/fCxcnu1bFIx4jYO54Gb1ndMhF/pF/luKU5WkHOXS48Z
	Wjpv+oaLI8o1TsXdBDrCezZRDFz5Qx+HpoYDMwiLqNY4/XMJ+mAXk4ai2lIP+BSCCnuhXCz/g4V
	Sxpukc4zXgOMXCQXsZ09E7FoEz2aH5iNFY6TwLJRzSCrppr5mwZkRP+eOehurkuCbiCFSi/I=
X-Gm-Gg: AeBDiet7swDMbWNdwTgxzy8nTid7amc/QjxTLetzZvTeoQptjX4fuVZBgKvZjijkMZs
	Lk+o09G6sYepHBUDuwvIpJfEgtN6CpisqBxata8pgZZpgzZhi8fkQIUONh2NxPfokAQnR8/5WKn
	i0gWDNCl2oDgqHMPX+IJGIomsc2VeUAPPvYJWtkSyzb2qZ3zoIX6288BMAPYdpxWLY+fbbjTCgr
	L4bTDfqL4wsN038NtF4+S2AOkNi55Osv2miPZioGcmx7l2P2kdkxsytRbH2rvx6OdTUv7ks7aOU
	GEyEQpAA
X-Received: by 2002:a05:6000:18a5:b0:439:b858:1d28 with SMTP id
 ffacd0b85a97d-43d292cd1d1mr34630107f8f.26.1775693613753; Wed, 08 Apr 2026
 17:13:33 -0700 (PDT)
MIME-Version: 1.0
References: <20260318140900.3795710-1-ayan.kumar.halder@amd.com> <D28202A5-EA01-4AE7-816C-FE3B703605F6@arm.com>
In-Reply-To: <D28202A5-EA01-4AE7-816C-FE3B703605F6@arm.com>
From: Julien Grall <julien.grall.oss@gmail.com>
Date: Thu, 9 Apr 2026 09:13:22 +0900
X-Gm-Features: AQROBzB_v07FpIBvBExmtHpqxpPGzn_2e-9xcUzS7-iF0zqngYxJcJsIUpoMjQU
Message-ID: <CAJ=z9a3cOSMyhPNnAzMaqR2kszmUCgJWKz03FOfNBkFxZ6byPQ@mail.gmail.com>
Subject: Re: [PATCH v2] xen: gic-v3: Introduce CONFIG_GICV3_NR_LRS
To: Luca Fancellu <Luca.Fancellu@arm.com>
Cc: Ayan Kumar Halder <ayan.kumar.halder@amd.com>, 
	"xen-devel@lists.xenproject.org" <xen-devel@lists.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>
Content-Type: multipart/alternative; boundary="00000000000013eb8c064efbe3c9"
X-purgate-ID: tlsNG-ebf023/1775693614-3253B51B-F630AE15/0/0
X-purgate-type: clean
X-purgate-size: 973

--00000000000013eb8c064efbe3c9
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: quoted-printable

=F0=9F=98=8A

Julien Grall reacted via Gmail
<https://www.google.com/gmail/about/?utm_source=3Dgmail-in-product&utm_medi=
um=3Det&utm_campaign=3Demojireactionemail#app>

--00000000000013eb8c064efbe3c9
Content-Type: text/vnd.google.email-reaction+json; charset="UTF-8"
Content-Transfer-Encoding: quoted-printable

{
  "emoji": "=F0=9F=98=8A",
  "version": 1
}
--00000000000013eb8c064efbe3c9
Content-Type: text/html; charset="UTF-8"
Content-Transfer-Encoding: quoted-printable

<div><p style=3D"font-size:50px;margin-top:0;margin-bottom:0">=F0=9F=98=8A<=
/p><p style=3D"margin-top:10px;margin-bottom:0">Julien Grall reacted via <a=
 href=3D"https://www.google.com/gmail/about/?utm_source=3Dgmail-in-product&=
amp;utm_medium=3Det&amp;utm_campaign=3Demojireactionemail#app">Gmail</a></p=
></div>

--00000000000013eb8c064efbe3c9--


From xen-devel-bounces@lists.xenproject.org Thu Apr 09 01:43:15 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 09 Apr 2026 01:43:15 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1276634.1561993 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wAeQ9-0000al-4h; Thu, 09 Apr 2026 01:43:01 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1276634.1561993; Thu, 09 Apr 2026 01:43: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 1wAeQ9-0000ae-1s; Thu, 09 Apr 2026 01:43:01 +0000
Received: by outflank-mailman (input) for mailman id 1276634;
 Thu, 09 Apr 2026 01:43:00 +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 1wAeQ8-0000aY-2z
 for xen-devel@lists.xenproject.org; Thu, 09 Apr 2026 01:43:00 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wAeQ6-007il5-9Z
 for xen-devel@lists.xenproject.org; Thu, 09 Apr 2026 03:42:58 +0200
Received: from [10.42.69.5] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <sstabellini@kernel.org>)
 id 69d703bc-e002-0a2a0a5209dd-0a2a4505a344-38
 for <xen-devel@lists.xenproject.org>; Thu, 09 Apr 2026 03:42:58 +0200
Received: from [172.105.4.254] (helo=tor.source.kernel.org)
 by tlsNG-c201ff.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.0)
 (envelope-from <sstabellini@kernel.org>)
 id 69d70421-3760-0a2a45050019-ac6904feddd6-3
 for <xen-devel@lists.xenproject.org>; Thu, 09 Apr 2026 03:42:58 +0200
Received: from smtp.kernel.org (transwarp.subspace.kernel.org [100.75.92.58])
 by tor.source.kernel.org (Postfix) with ESMTP id 8D41F600AD;
 Thu,  9 Apr 2026 01:42:56 +0000 (UTC)
Received: by smtp.kernel.org (Postfix) with ESMTPSA id 805F3C19421;
 Thu,  9 Apr 2026 01:42: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=k20201202 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/simple; d=kernel.org;
	s=k20201202; t=1775698976;
	bh=IDbGrUYW1qx3z77VZ3kqZ5LKwaE7kx9+w/skuTHAltM=;
	h=Date:From:To:cc:Subject:In-Reply-To:References:From;
	b=XybisJgRQ3EAAJXHnGoEZDOt4Fk6mszHaP69xkbaVBwYl1b/wU6Hu8qlEhgV6PQRj
	 E4j9fcEXSE/yjjpniPaD3AzRK/DDAVzpODFsyVba15BXImQyvrAp8PSHXffLdOlDVJ
	 dJ1IRR0RwDySXrx64m74/nBRQu+ffvlPFhEncYwuYTndF2/ot6iu9sxZsaWJtRXFRT
	 UUcfrJ+GmZiOmWfgCwCcPGxPTjazub1hHOjXs1mgpraq6D4qaduJ/8Loyyqhv7O7C5
	 3jWItOzyjRtif4nvTGB6i9zg/rowMPQTxb7nBO46BE7esdxFBsJCCfmpdbSoJOrT14
	 gi6PaQ/ZB0tqg==
Date: Wed, 8 Apr 2026 18:42:54 -0700 (PDT)
From: Stefano Stabellini <sstabellini@kernel.org>
X-X-Sender: sstabellini@ubuntu-linux-20-04-desktop
To: GuoHan Zhao <zhaoguohan@kylinos.cn>
cc: jgross@suse.com, sstabellini@kernel.org, oleksandr_tyshchenko@epam.com, 
    xen-devel@lists.xenproject.org, linux-kernel@vger.kernel.org
Subject: Re: [PATCH] xen/manage: unwind partial shutdown watcher setup on
 error
In-Reply-To: <20260407022443.12971-1-zhaoguohan@kylinos.cn>
Message-ID: <alpine.DEB.2.22.394.2604081842470.2873990@ubuntu-linux-20-04-desktop>
References: <20260407022443.12971-1-zhaoguohan@kylinos.cn>
User-Agent: Alpine 2.22 (DEB 394 2020-01-19)
MIME-Version: 1.0
Content-Type: text/plain; charset=US-ASCII
X-purgate-ID: tlsNG-c201ff/1775698978-3173A96F-FF6118A3/0/0
X-purgate-type: clean
X-purgate-size: 892

On Tue, 7 Apr 2026, zhaoguohan@kylinos.cn wrote:
> From: GuoHan Zhao <zhaoguohan@kylinos.cn>
> 
> setup_shutdown_watcher() registers shutdown_watch first, then the sysrq
> watch, and finally publishes the supported feature-* nodes in xenstore.
> If sysrq watch registration fails, or xenbus_printf() fails after one or
> more feature nodes were created, the function returns immediately without
> undoing the earlier setup.
> 
> This leaves the system in a partially initialized state, with registered
> watches and/or stale xenstore entries despite the function reporting
> failure.
> 
> Unwind the partial setup before returning an error by unregistering any
> watches that were already registered and removing feature nodes that were
> already published.
> 
> Signed-off-by: GuoHan Zhao <zhaoguohan@kylinos.cn>

Reviewed-by: Stefano Stabellini <sstabellini@kernel.org>


From xen-devel-bounces@lists.xenproject.org Thu Apr 09 05:51:04 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 09 Apr 2026 05:51:04 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1276667.1562001 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wAiHy-00005H-Nf; Thu, 09 Apr 2026 05:50:50 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1276667.1562001; Thu, 09 Apr 2026 05: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 1wAiHy-000055-Kr; Thu, 09 Apr 2026 05:50:50 +0000
Received: by outflank-mailman (input) for mailman id 1276667;
 Thu, 09 Apr 2026 05:50:49 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <jbeulich@suse.com>) id 1wAiHx-00004y-0a
 for xen-devel@lists.xenproject.org; Thu, 09 Apr 2026 05:50:49 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wAiHv-007Lt1-Oh
 for xen-devel@lists.xenproject.org; Thu, 09 Apr 2026 07:50:47 +0200
Received: from [10.42.69.6] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <jbeulich@suse.com>)
 id 69d73e30-bab6-0a2a0a5309dd-0a2a45069b18-28
 for <xen-devel@lists.xenproject.org>; Thu, 09 Apr 2026 07:50:47 +0200
Received: from [209.85.128.48] (helo=mail-wm1-f48.google.com)
 by tlsNG-16d1c6.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.0)
 (envelope-from <jbeulich@suse.com>)
 id 69d73e37-0df0-0a2a45060019-d1558030ec6c-3
 for <xen-devel@lists.xenproject.org>; Thu, 09 Apr 2026 07:50:47 +0200
Received: by mail-wm1-f48.google.com with SMTP id
 5b1f17b1804b1-488aa77a06eso7512525e9.0
 for <xen-devel@lists.xenproject.org>; Wed, 08 Apr 2026 22:50:47 -0700 (PDT)
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-488cd153d76sm47786805e9.0.2026.04.08.22.50.46
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Wed, 08 Apr 2026 22:50:46 -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=google header.d=suse.com header.i="@suse.com" header.h="Content-Transfer-Encoding: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=1775713847; x=1776318647; darn=lists.xenproject.org;
        h=content-transfer-encoding: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;
        bh=RxED7Yk7+bsMH0gSNl2zBw8p1U/zRE5rFSXYVZlbgvU=;
        b=FNOY9Vc9e8BMeCtaEQCGMBU2Zjl8leMB1oSp33vgE8tgBRgEY/67fW4LwrwU3aFcI3
         gwAZd8fnZXuIRzft1BvZer8gPRHPQk7P6at63xvVfJgVhc49L4hbl/1wznHmejPRZe+T
         94lheVEVBUq3HNNeo0Jeenwrsk1lNDQuvMGVJAPWqHcq8/sOkSxoR/OL9XbDJ47+RUs4
         zH32ZF5+zN4Q9HIrq1DohyOfXgD4xz6ch5LfezZbJpQQ0NdG8uVG4HT1vEa+zZsMBbhC
         zT5JW2XS5ku5Qo6wA/LjCj0zAW2LMQYSprXTPEpQIAFyB1sppIv3ZlgxwpT7kpCl0n3g
         WVOw==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20251104; t=1775713847; x=1776318647;
        h=content-transfer-encoding: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;
        bh=RxED7Yk7+bsMH0gSNl2zBw8p1U/zRE5rFSXYVZlbgvU=;
        b=XJjy0uwKoBG/wL9NPiE5RhSiSM8KjAM9MNWlH5OInz3vUjfcGvUrOxf5OX1EC159xS
         +qhzxqOLapIxEdFcXM6HBytbrvV0lVeesrLI1HndfoeYjjYh34ypTr9ZDGXRPFyUlb2P
         7F+ZKlb7sc3D9t9P9g6T9wafRB/hG31aMJdxrRGH/sXwhHHKG4jzbPB4/SoNvtzEROrb
         54uOe8dOz55pqMZKNUxWQEOCXgLr2lRK0yZNE8DxHrN1ugYlAHA5ZzAaWCUGFgGm2UyZ
         H06llRZNDKCWVSPGrsod2AuxSiaxMtqgsfLRZCDSMJj+SJ1/caFgPAC+CkyTJF6TUiob
         VQ4Q==
X-Forwarded-Encrypted: i=1; AJvYcCXTpgn/LrQt6SuV6TyakYhyeBVEXlNZShbFdSSK6Q0xnGHEg+vP9b3YlasEkJOsJJzxnFuXXLE3sr4=@lists.xenproject.org
X-Gm-Message-State: AOJu0Yw0t0vUIrZoYHc6DmhhbcB1YjJaOrgDfEWojFfiBEbXw4tOYKnu
	5TOKQFXbG488sBt4Bat+nWF1zEG7+uH/fIcMyfDn6n6Ij0JfYvZnyfOurw+pQwN5PA==
X-Gm-Gg: AeBDiesciDgM9ZYybh7N56o/iSaSFGLZamMyxF6lWHmrjG8ZrIBEipDeAdflHg2vlwy
	+D+V3cRu5NX69G1vTUurcSOxsAMP3uhpEQ5Hi0RyX4Jcsoquw+MwKxrSSFCHQv8GxYlhOF0hAoB
	Ty8+PGlms+bpBONrxczmhnNFuGEyHT56TskjNu6XQRilBiptIMFWmuK1AtAUMdqgj3FT8TRfnw/
	TddhGiA4KHDzm9UwUz9tJnFn1Q2tO4Yjc7LPlR6nebEoEpxzX9lw1HqooaJZ4Kegcc4JWgCQNU6
	o2SeEzplYjIoKdygF0zff/capbepiofcXHFQjjXngpNznzO6EClB5efj0qX38K/Mp1EY7+dmtuX
	c+BCFSy7RP7ziL0yJ2EWBUNsySUTo1jxB5INMKFB5XxBqbxUHtb6EcxDx+mGlvoeOPyetuxmqe0
	m3t2nLpcW6mZ267Uyu3GWXAw0J1OrexBZDuTYZnscR6yj/187FyjUKECTlqWpGhDoChT4IGlER3
	/8lPweyWZUeA/p4TB51A9o2Wg==
X-Received: by 2002:a05:600c:4752:b0:488:7ff5:2c67 with SMTP id 5b1f17b1804b1-4889976ea80mr335149145e9.12.1775713846814;
        Wed, 08 Apr 2026 22:50:46 -0700 (PDT)
Message-ID: <19a67ae7-e329-4303-8a80-29fac1c15822@suse.com>
Date: Thu, 9 Apr 2026 07:50:45 +0200
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH v10] x86: use / "support" UDB
To: Andrew Cooper <andrew.cooper3@citrix.com>
Cc: =?UTF-8?Q?Roger_Pau_Monn=C3=A9?= <roger.pau@citrix.com>,
 Teddy Astie <teddy.astie@vates.tech>,
 "xen-devel@lists.xenproject.org" <xen-devel@lists.xenproject.org>
References: <deb26054-ec00-483c-bc18-1edc1b4599b3@suse.com>
 <99200edd-3a99-4043-88b7-a7f3ee2c7a44@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: <99200edd-3a99-4043-88b7-a7f3ee2c7a44@citrix.com>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
X-purgate-ID: tlsNG-16d1c6/1775713847-5D3273D8-BA88A76C/0/0
X-purgate-type: clean
X-purgate-size: 1628

On 08.04.2026 20:04, Andrew Cooper wrote:
> On 08/04/2026 1:12 pm, Jan Beulich wrote:
>> With opcode D6h now firmly reserved as another #UD-raising one in 64-bit
>> mode, use that instead of the two-byte UD2 for bug frame marking.
>>
>> While there also make a minor adjustment to the emulator.
>>
>> Signed-off-by: Jan Beulich <jbeulich@suse.com>
> 
> For the patch itself, Acked-by: Andrew Cooper <andrew.cooper3@citrix.com>

Thanks.

>> ---
>> One of the table entries in stub_selftest() uses UD1, yet in not quite
>> an appropriate way: The 0x90 following it (presumably meant to be a NOP)
>> really is a ModR/M byte, requiring a displacement to follow. Wouldn't we
>> better adjust that (e.g. using 0xcc instead)?
> 
> That looks too much like breakpoint padding as opposed to nop padding.
> 
> What about:
> 
> diff --git a/xen/arch/x86/extable.c b/xen/arch/x86/extable.c
> index a9b6c6b904f5..24440ccd03e3 100644
> --- a/xen/arch/x86/extable.c
> +++ b/xen/arch/x86/extable.c
> @@ -157,7 +157,7 @@ int __init cf_check stub_selftest(void)
>          union stub_exception_token res;
>      } tests[] __initconst = {
>  #define endbr64 0xf3, 0x0f, 0x1e, 0xfa
> -        { .opc = { endbr64, 0x0f, 0xb9, 0x90 }, /* ud1 */
> +        { .opc = { endbr64, 0x0f, 0xb9, 0x00 }, /* ud1 (%rax),%eax */
>            .res.fields.trapnr = X86_EXC_UD },
>          { .opc = { endbr64, 0x90, 0x02, 0x00 }, /* nop; add (%rax),%al */
>            .rax = 0x0123456789abcdef,
> 
> which also brings it in line with the adjacent example?

That's also okay, sure.

Jan


From xen-devel-bounces@lists.xenproject.org Thu Apr 09 05:54:42 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 09 Apr 2026 05:54:42 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1276675.1562010 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wAiLh-0000nn-6U; Thu, 09 Apr 2026 05:54:41 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1276675.1562010; Thu, 09 Apr 2026 05:54: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 1wAiLh-0000ng-3Z; Thu, 09 Apr 2026 05:54:41 +0000
Received: by outflank-mailman (input) for mailman id 1276675;
 Thu, 09 Apr 2026 05:54:39 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <jbeulich@suse.com>) id 1wAiLf-0000nW-Av
 for xen-devel@lists.xenproject.org; Thu, 09 Apr 2026 05:54:39 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wAiLd-007pjO-5J
 for xen-devel@lists.xenproject.org; Thu, 09 Apr 2026 07:54:38 +0200
Received: from [10.42.69.4] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <jbeulich@suse.com>)
 id 69d73f0e-e002-0a2a0a5209dd-0a2a4504a2d4-36
 for <xen-devel@lists.xenproject.org>; Thu, 09 Apr 2026 07:54:38 +0200
Received: from [209.85.128.44] (helo=mail-wm1-f44.google.com)
 by tlsNG-ebf023.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.0)
 (envelope-from <jbeulich@suse.com>)
 id 69d73f1e-bb33-0a2a45040019-d155802cf1df-3
 for <xen-devel@lists.xenproject.org>; Thu, 09 Apr 2026 07:54:38 +0200
Received: by mail-wm1-f44.google.com with SMTP id
 5b1f17b1804b1-488ab2db91aso6830955e9.3
 for <xen-devel@lists.xenproject.org>; Wed, 08 Apr 2026 22:54:38 -0700 (PDT)
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-43d1e4d2738sm65831071f8f.24.2026.04.08.22.54.37
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Wed, 08 Apr 2026 22:54:37 -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=google header.d=suse.com header.i="@suse.com" header.h="Content-Transfer-Encoding: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=1775714078; x=1776318878; darn=lists.xenproject.org;
        h=content-transfer-encoding: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;
        bh=NZRM53ltf1rld9wCi7TJVNvZoblfyxUIddUYjGw828w=;
        b=NXYk+j9Fzx9YSWtulb07mUY4AE6CPy7qwfBOz0/jR8BI3gr8wbBBqEiHxAwn+JpKfZ
         obC/5jzNUQJtv8WGN5nu6fl/4qHHwUEARXIQZen2+5ICOaxqpB2Di2Pjcpfmj+SyLte0
         ReUO5OnzwQvJqwpJOsAgP2nNtbvZuF/gVl2TqSsfY/2h6DMYIjPcwNQ5ifPpn9ZivWBE
         4G+KRPUVVloN7uqKeEgOQ8R8M3yVi7oLOxGCQSXaTfJASc2VPhGj1bZo24MHxzPq3bZT
         Zb5dyZ5ALh+Qm9zJowGddAhCLZQGVZiQV09nAwMrgkcBmFJy+EKq9rrtmY535CskAD5o
         6FNQ==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20251104; t=1775714078; x=1776318878;
        h=content-transfer-encoding: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;
        bh=NZRM53ltf1rld9wCi7TJVNvZoblfyxUIddUYjGw828w=;
        b=Nl+RE86RnvDaPPoaHBrD9KDZM/AtygoamK6Y7Mi8Xy6IcVDvbK9PnJek/WCcXCvNjq
         hAL5eK7+Z72NtUDpqijrM09BTiBx0WisfgQnDgOirvcUR8FOszJ2B2+msuf6s02gmSOz
         1K2VUEx/f3DiBFW/lvbs5bH4O1EApkjAg6ZoCyqsfiLozGvdjQWw01DzifVoEm3N7Nx5
         GHQHRafmyPo48ZIoPi2pzqlf3AkpTfuYjHPCFb9IXsN6Wi7EOFOPiKl/7HfdqTLOI6fF
         5R0tveH7lf0Jb+7ZFL9JH9Wt2ormLzHrFKlDJFLJzV7grhjzNv1TCFzyQ8zBNQmHFs/r
         MiHg==
X-Gm-Message-State: AOJu0YzHheiZS3acNPd5SeIxJ++v6jmcmodslCq4MazT6EZEfJzkWtD7
	dvtyT2unDRPVnXKmPUZ8x9X6SSwrLdSZjOHRzvvki6ARuMguabMnR/FxRBgYpe/KCQ==
X-Gm-Gg: AeBDiet55FXaZ1BDUZtrB4f0kCVofE53fKB8KdwwCy44SmP3tq6t3OaGIcfa/z7R0FW
	j0o0QOzIxxVfNqj4RFfpA2THEizMdE/9Q3aBue4FW5eNpH4wru6K4YKED7Wtddhm64NaVJxzfrJ
	XLuBeNF6QnkMRdbfbj+oObWcZPDLZ9KStVg6MpDxmviWyO+dOcMx/ptpuB3YQ0iMUq+9eaRMios
	GvAnxYfT6/dMgarVtw818+Szl288fmRmQWe8t3mLHFtEK81IcYujnuGqIn8yLdHNQr8WzPgG/rp
	Jv6t5KAjgMT0anHc6q72pq5/iC4BAe3jCatRL3UsjCIMbEXGc/B+7+5CMPp0CHUY0rO98FmsJj2
	8xCEyc5TokZ7WvGez7Or+b8cdfJIeEnju73dkJ11SCM/Ty85o7an5GrC2LK1wTotuP2oYYzE4Wb
	1GbcDANbqHHp3b3R76Otxru7QRsrrUZK07DW30Gex3AuxuCnRSmVYoJS+NigDucPtu3tbtZNbjV
	ajQJH3kkMfmNBz/GZEDanggSg==
X-Received: by 2002:a05:6000:611:b0:43c:f8a7:3b09 with SMTP id ffacd0b85a97d-43d292c7739mr36228384f8f.23.1775714077895;
        Wed, 08 Apr 2026 22:54:37 -0700 (PDT)
Message-ID: <518db5e7-bcf0-424d-afce-60c3077cd892@suse.com>
Date: Thu, 9 Apr 2026 07:54:36 +0200
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH] x86/cpuidle: split the max_cstate variable
To: Marek Marczykowski <marmarek@invisiblethingslab.com>
Cc: "xen-devel@lists.xenproject.org" <xen-devel@lists.xenproject.org>,
 Andrew Cooper <andrew.cooper3@citrix.com>,
 =?UTF-8?Q?Roger_Pau_Monn=C3=A9?= <roger.pau@citrix.com>,
 Teddy Astie <teddy.astie@vates.tech>
References: <4b89f640-046a-49c1-95f1-947d98135e5b@suse.com>
 <adbEawEpv8KA5ofI@mail-itl>
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: <adbEawEpv8KA5ofI@mail-itl>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 7bit
X-purgate-ID: tlsNG-ebf023/1775714078-B2F3E51B-D680C573/0/0
X-purgate-type: clean
X-purgate-size: 2138

On 08.04.2026 23:11, Marek Marczykowski wrote:
> On Wed, Apr 08, 2026 at 01:34:43PM +0200, Jan Beulich wrote:
>> The admin can control the upper bound wanted not only via command line
>> option, but also via XEN_SYSCTL_pm_op_set_max_cstate. While decisions how
>> to set up the system are okay this way as long as we deem the command line
>> option a strict upper bound, what to do during S3 resume should not be
>> based on that potentially varying value. Decisions there need to use
>> solely the strict upper bound we may have enforced ourselves (or which was
>> forced onto us via command line option).
>>
>> Rather than altering pit_broadcast_is_available(), drop the function
>> altogether. It's pretty odd for acpi/cpu_idle.c to call into time.c, just
>> for that to call into acpi/cpu_idle.c again.
>>
>> Fixes: 8d24303023ec ("x86: don't write_tsc() non-zero values on CPUs updating only the lower 32 bits")
>> Signed-off-by: Jan Beulich <jbeulich@suse.com>
> 
> What should be observable effect, in absence of max_cstate option and
> "xenpm set-max-cstate" calls?

None. Only if you lower max C-state before S3 to then raise it again
afterwards.

> The "slow after S3" issue still happens. I
> tested this on top of the two other patches:
> - [PATCH] x86/HPET: channel handling in hpet_broadcast_resume()
> - [PATCH] x86/cpu-policy: set up host policy earlier

Right, nothing else was expected. I Cc-ed you because the issue is S3-related
(and you are who primarily uses that) and because I noticed the issue here
while trying to figure out your actual problems.

>> ---
>> cpuidle_disable_deep_cstate(), when called from handle_rtc_once(), is
>> still somewhat of a problem: Boot time and resume time runs of
>> _disable_pit_irq() may still behave differently because of that.
> 
> In the above test, both on boot and resume I got:
> (XEN) [    9.916522] _disable_pit_irq:2649: using_pit: 0, cpu_has_apic: 1
> (XEN) [    9.921198] _disable_pit_irq:2659: cpuidle_usable_deep_cstate: 1, boot_cpu_has(X86_FEATURE_XEN_ARAT): 1

I don't expect handle_rtc_once() was involved, though?

Jan


From xen-devel-bounces@lists.xenproject.org Thu Apr 09 06:55:38 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 09 Apr 2026 06:55:38 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1276690.1562019 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wAjIU-0000qk-Fp; Thu, 09 Apr 2026 06:55:26 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1276690.1562019; Thu, 09 Apr 2026 06:55: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 1wAjIU-0000qd-Cu; Thu, 09 Apr 2026 06:55:26 +0000
Received: by outflank-mailman (input) for mailman id 1276690;
 Thu, 09 Apr 2026 06:55:24 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <jbeulich@suse.com>) id 1wAjIS-0000qX-Kv
 for xen-devel@lists.xenproject.org; Thu, 09 Apr 2026 06:55:24 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wAjIR-000Op8-Dg
 for xen-devel@lists.xenproject.org; Thu, 09 Apr 2026 08:55:23 +0200
Received: from [10.42.69.5] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <jbeulich@suse.com>)
 id 69d74d51-bab6-0a2a0a5309dd-0a2a4505b5cc-40
 for <xen-devel@lists.xenproject.org>; Thu, 09 Apr 2026 08:55:23 +0200
Received: from [209.85.128.44] (helo=mail-wm1-f44.google.com)
 by tlsNG-c201ff.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.0)
 (envelope-from <jbeulich@suse.com>)
 id 69d74d5a-3760-0a2a45050019-d155802ced3f-3
 for <xen-devel@lists.xenproject.org>; Thu, 09 Apr 2026 08:55:22 +0200
Received: by mail-wm1-f44.google.com with SMTP id
 5b1f17b1804b1-488afb0427eso7179375e9.1
 for <xen-devel@lists.xenproject.org>; Wed, 08 Apr 2026 23:55:22 -0700 (PDT)
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-488cfa75ae2sm55728395e9.14.2026.04.08.23.55.21
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Wed, 08 Apr 2026 23:55:22 -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=google header.d=suse.com header.i="@suse.com" header.h="Content-Transfer-Encoding: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=1775717722; x=1776322522; darn=lists.xenproject.org;
        h=content-transfer-encoding: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;
        bh=77RYlQihBFJrEyN2OYCeqoLNl5MjmqFfyuopBe97xrw=;
        b=dyDNVqxQUj//RRSkpoe8KWAcufL3FZ+moX5wPLXqOMcAHICPxBzTwFnPQ4AvvKF2GL
         DhXc2D/dgWVzb0sCrcw4GApvUNHaCRAW1S5s24gMVdC+l1L3C5lKDNU1aM7+mdH3Bu0x
         mzdqxiZ3/yhQcgxMy5gsg+oqVSWV5uxVQJDEKJyeWGhQQTK2PqmQkrBakGNIyzad2Grh
         3zJL1UnXJh2Zoi1JOah6PJNmxoqHHTg8RBNTUal5vtJ0JNwVck7OWRhLLgYkYhiS67ZL
         Ray89+KZShqnW7Ylu2f1VDQEDz5xlDzGKv6YhwHKAcsua71YyXtZZIh1aurNrBKcYxAh
         C15A==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20251104; t=1775717722; x=1776322522;
        h=content-transfer-encoding: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;
        bh=77RYlQihBFJrEyN2OYCeqoLNl5MjmqFfyuopBe97xrw=;
        b=XzZJmFrS7wy2qBsFfde6hzGQmbOULTH41T3cumITYUUpRJVAft3VD//80bR1/Q5BvB
         q76h/U5a7DdNKqouJV5zYIS3E2hVUCdts61x33p8GH0L93UlApvMmNRbw6OdTwey4X6h
         6W91alDi3brlTaD4vCESKCVuaW0wheMcrLB64Nuibv5TErlvs0le9l/MBBYEOa/HuAPX
         Eto9hVXtuGgxdyRYoiokpCy50MxI7r1FRECO1emGUrwjVJJjWBUN+tYDUF/eeCTH5hZU
         rkSb+oFo6tnYZ08HDppQGBbuKVzW406JkD18OJ1k9eKw0v7GLC9K+3R3z/X0JXglOXMF
         xoVQ==
X-Forwarded-Encrypted: i=1; AJvYcCWJ/l0B0IG90i5jfOhdMPt3uTDv+aOSf2/CM7ynKr9f2YGC39xp5x1CsCRLzRlt/cyZU5m5tExUnCc=@lists.xenproject.org
X-Gm-Message-State: AOJu0Yy65PfZyjPrdJpsSw8+WCSRPsJ9G7XqL3Xv/ogFkP+4MxS/a2Zc
	KP8JEG9WRhH+p8qrEQO++1WV9ASGPGMWrwC5JUd0vR1BWVPf5MLMFJ2c4K9gxCWd45dOIwq1gig
	Htos97A==
X-Gm-Gg: AeBDiesaS3Z6PjToSAsrQrpG+NkLEAktS3gpLt/Jmmb3eU2PDWfcnTPQLzdvqDjPicu
	7IvG53IdST+W/cXPudyOgdD9eYFDPJi662xsGmcZU1Ssp6g65nbFOfaCyCoML0kahh8cwmRvp8a
	XEvi34jKqP209Qdvpi69WIYGaGS+HX/SGh0Dc8yUU5HzOkDm0oe/KjEfZJY2CzasnxdW5HE1bSr
	EHSwcmLsrPeVv3qqZ3v/o55H2Qfen6MWr4IfUy9jy5zS5MWgV/2duG5bbwuTDHcyUF5igBxKGA0
	1eFxtASPzKdBd2bP5UOVnVw9oUsxkE8QNdSvwHogbkqHmbwhLHF6WKoxbdfRhPRID1IGhmO1d4x
	a/qGr04aEOChGXjRi9m9APTz8kKRHZzuQuwWrlcCB/eaixqac7C/q7H4HK6iOdOSxv2tiN3rpK+
	gwEHK693oRr1C+r77iyffXl6mwtreYpOpAi6qqKMp/6PS9k/MP5B0KoNALbxCvIwR2O6WOdeaXk
	rq4/6OgYL7p2No=
X-Received: by 2002:a05:600c:83cd:b0:488:bd79:94d8 with SMTP id 5b1f17b1804b1-488bd7997demr146932165e9.18.1775717722408;
        Wed, 08 Apr 2026 23:55:22 -0700 (PDT)
Message-ID: <996efc8a-7380-4231-b19f-fde19eee58ac@suse.com>
Date: Thu, 9 Apr 2026 08:55:20 +0200
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH v1 1/3] x86/hap: Wait for remote CPUs during TLB flush
To: Ross Lagerwall <ross.lagerwall@citrix.com>
Cc: Andrew Cooper <andrew.cooper3@citrix.com>,
 =?UTF-8?Q?Roger_Pau_Monn=C3=A9?= <roger.pau@citrix.com>,
 xen-devel@lists.xenproject.org
References: <20260401163521.3603665-1-ross.lagerwall@citrix.com>
 <20260401163521.3603665-2-ross.lagerwall@citrix.com>
 <b985f554-0338-4426-8981-0613f112f166@suse.com>
 <ed2006d0-1f5f-45ea-a8d8-bd9c064fe048@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: <ed2006d0-1f5f-45ea-a8d8-bd9c064fe048@citrix.com>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 7bit
X-purgate-ID: tlsNG-c201ff/1775717723-22D2796F-486EB4F9/0/0
X-purgate-type: clean
X-purgate-size: 1178

On 08.04.2026 17:48, Ross Lagerwall wrote:
> On 4/8/26 4:21 PM, Jan Beulich wrote:
>> On 01.04.2026 18:35, Ross Lagerwall wrote:
>>> A future change to on_selected_cpus() will change the semantics of the
>>> wait parameter so that it doesn't wait for remote CPUs to "check in" if
>>> wait == 0. Adjust the call here to retain the existing behaviour so it
>>> continues to wait for the remote CPUs to VMExit.
>>
>> Doesn't this go too far though? IOW wouldn't we better make the "wait"
>> parameter a tristate then?
> 
>  From what I can see, the current wait == 0 behaviour only exists as a
> limitation of the implementation: The local CPU needs to wait for all
> the remote CPUs to have read "func" and "info" before dropping the lock
> to avoid a race condition.
> 
> With that limitation removed, I don't see a valid reason to maintain
> this beahviour as an option, though I could be convinced otherwise.

Well, the specific case here is where that behavior is wanted. Rather than
penalizing that case (by using "wait until complete"), I'm asking to retain
prior behavior ("wait until 'checked in'"). Even if (for now) only for this
one case.

Jan


From xen-devel-bounces@lists.xenproject.org Thu Apr 09 07:12:33 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 09 Apr 2026 07:12:33 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1276700.1562029 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wAjYy-0003xz-Rd; Thu, 09 Apr 2026 07:12:28 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1276700.1562029; Thu, 09 Apr 2026 07:12: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 1wAjYy-0003xs-OB; Thu, 09 Apr 2026 07:12:28 +0000
Received: by outflank-mailman (input) for mailman id 1276700;
 Thu, 09 Apr 2026 07:12:27 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <jbeulich@suse.com>) id 1wAjYx-0003xm-9I
 for xen-devel@lists.xenproject.org; Thu, 09 Apr 2026 07:12:27 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wAjYw-00A75x-Es
 for xen-devel@lists.xenproject.org; Thu, 09 Apr 2026 09:12:26 +0200
Received: from [10.42.69.6] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <jbeulich@suse.com>)
 id 69d75149-5cb7-0a2a0a5109dd-0a2a4506d83c-42
 for <xen-devel@lists.xenproject.org>; Thu, 09 Apr 2026 09:12:26 +0200
Received: from [209.85.128.49] (helo=mail-wm1-f49.google.com)
 by tlsNG-16d1c6.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.0)
 (envelope-from <jbeulich@suse.com>)
 id 69d7515a-0df0-0a2a45060019-d1558031e9e7-3
 for <xen-devel@lists.xenproject.org>; Thu, 09 Apr 2026 09:12:26 +0200
Received: by mail-wm1-f49.google.com with SMTP id
 5b1f17b1804b1-488a29e6110so5373175e9.3
 for <xen-devel@lists.xenproject.org>; Thu, 09 Apr 2026 00:12:26 -0700 (PDT)
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-488cf8612cfsm32956715e9.0.2026.04.09.00.12.24
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Thu, 09 Apr 2026 00:12:25 -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=google header.d=suse.com header.i="@suse.com" header.h="Content-Transfer-Encoding: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=1775718745; x=1776323545; darn=lists.xenproject.org;
        h=content-transfer-encoding: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;
        bh=VhUWl2dnV5JSOc1PRiMyO91K9EFCCdr8WsNDrEOtGno=;
        b=Ru7v6aHONQjmUeX/h/l3A3YZPrrhWHBKhIPiYcxPz8/uA2wayMYy/N6xgwQwstWJ0F
         oD8SvspMwJrqdRiyg9a2N9mx3ddER8FQkSgPAriM09SOui9hoxwVWmXtf4ddCKmDsWlN
         lPu/Ka5ljzxvJDCSAj4G1a3uuzVEDBj2NjLvEjKGXsBw0o9f2f/uVFMt2RnswoSQFK6T
         bp1AZxaZ6hjQ+LjDal/TmHPGnaX6bRyRz9loMT3cxB74JxAkZVxQU9vcw5GcvgoVYnxJ
         8qA6GYWRYN7Rs+ursSkeJpEOFMXJySTDaOr7a1v5ZkIuhoowNCBi5i5XyJBeb9gLpFGN
         oIew==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20251104; t=1775718745; x=1776323545;
        h=content-transfer-encoding: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;
        bh=VhUWl2dnV5JSOc1PRiMyO91K9EFCCdr8WsNDrEOtGno=;
        b=d1R5YaIewP0seUWVEIrMJLD5gpQyp70WqZqOQbNXr8gbGYG/j8S7Glv9aN/Na9+4m7
         e0XeOu1zl0oN03HTVXAARhIP0Rga30Tg8QWVpSCeJNdHkEdY0XTgOF8CPFYnjIIpV2U3
         Sz5+prB72PDl1wxnoJmQT+qX/4aOfVW7Zjxe2gNHTv1nSURluQGW0HsNHSB4OTSTqMit
         zEnkfaN4BNcRqTJr8xFw15DSBJ34a8NHv6sq0KppmuxJWMt8tf4DHiUeGIYX+OgbLYju
         th4chIK8dV/gHr/ioH2LZTPEamwD1Y09H6+cPL0Tl3ty5Pl8XVsYQHh0FSwgbwyNX/7S
         iyCQ==
X-Forwarded-Encrypted: i=1; AJvYcCXGuziVDLXi00lO+lZ4ccUGmSTHWJY18YnM71VP6Awox1tdh0gU4WkRxBtJeibWGnVP8Gpbelnadu0=@lists.xenproject.org
X-Gm-Message-State: AOJu0Yyl7eFQw00UZuBDffzxjbjIbXc7O9Jjf0ChqnAMgjPBOP/dxK/v
	XkIcBBdK0neqb3gAYYHpxVLpzWc3ysb0H3sQGHdQ3oVUZLyW/scqQC4B0WyOn20M1g==
X-Gm-Gg: AeBDiev01i2khG/p8fO8DwRbBGZlGNmKAp1uDJcp2y+DYbrHDxfFgFDobW1QN75wMjt
	sRWjL3FZyy6W2q5pLPC3XhkurBH77R8YyDatAzf1yOEWH0ujQuZLoJGZaDebCeAIIG4YxOAXpfA
	bUqUYfl+1wuumjl9h9mLsJ30gjxvulspcuwht4X+ytIjRhEqQhnZxaGIqKlNczKNR8P5RXL2KmJ
	w9aUk11uFaC6+jb8zf4zIMjy2rDGMw5LAk1pbvc+onJKyFfuUo8QyZO87vEe8wWbdL2J8KGONcV
	6Oib7PmEL2rkDzqjumFNPERKDBQoHemu4zFYy3UWhjy8qrI59o48k+VnGcBvuqwVQPO1QyL+5vq
	EqyZr7tcGVSrCbfSdNDiL3U8NfYnl23XmUROw+g6hM/A34CxbnIpHuXM5B0dXaF4pnmx40KM7ZV
	X6caFFl7jPi/q/esxJDLjBJkPbjWgLuBSkggRV/yxdZ9smDTsniYOL74r4m9l2Ftr5XeXVb6iq7
	7Cp9KVCKyYM72Q=
X-Received: by 2002:a05:600c:138f:b0:47e:e076:c7a5 with SMTP id 5b1f17b1804b1-4889970e3c4mr327842795e9.11.1775718745513;
        Thu, 09 Apr 2026 00:12:25 -0700 (PDT)
Message-ID: <6904ffa4-acc1-48ba-bc98-2fecf288d926@suse.com>
Date: Thu, 9 Apr 2026 09:12:23 +0200
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH] x86/gen-cpuid: Split deep_features by vendor
To: Andrew Cooper <andrew.cooper3@citrix.com>
Cc: =?UTF-8?Q?Roger_Pau_Monn=C3=A9?= <roger.pau@citrix.com>,
 Teddy Astie <teddy.astie@vates.tech>,
 Xen-devel <xen-devel@lists.xenproject.org>
References: <20260408163549.135245-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: <20260408163549.135245-1-andrew.cooper3@citrix.com>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 7bit
X-purgate-ID: tlsNG-16d1c6/1775718746-AFD3C3D8-DAB543DA/0/0
X-purgate-type: clean
X-purgate-size: 3391

On 08.04.2026 18:35, Andrew Cooper wrote:
> AMD CPUs need LKGS depend on NSCB, but this dependency cannot be unconditional
> as it will break FRED on Intel CPUs which don't need to enumerate the absence
> of a bug.
> 
> The deep dependecy logic is formed of two parts; a deep_features bitmap
> indicating which features have dependencies, and deep_deps; the mapping of
> feature to dependent features.  Given that NSCB is an unconnected root of a
> dependency, we can have the row in deep_deps and conditionally exclude it the
> deep_features level.
> 
> Rename INIT_DEEP_FEATURES to INIT_ALL_DEEP_FEATURES and add AMD and INTEL
> forms too.  In both xc_cpuid_apply_policy() and sanitise_featureset(), choose
> the appropriate {amd,intel}_deep_features based on vendor.
> 
> Introduce the NSCB <-> LKGS dependency and exclude the NSCB row from
> intel_deep_features.

This reads as if there was a bi-directional dependency.

> --- a/tools/libs/guest/xg_cpuid_x86.c
> +++ b/tools/libs/guest/xg_cpuid_x86.c
> @@ -650,9 +650,12 @@ int xc_cpuid_apply_policy(xc_interface *xch, uint32_t domid, bool restore,
>  
>      if ( featureset )
>      {
> +        static const uint32_t amd_deep_features[] =  INIT_AMD_DEEP_FEATURES;
> +        static const uint32_t intel_deep_features[] =  INIT_INTEL_DEEP_FEATURES;

Nit: One blank too many each (after '=').

> @@ -158,11 +159,21 @@ static void zero_leaves(struct cpuid_leaf *l,
>  
>  static void sanitise_featureset(uint32_t *fs)
>  {
> +    const uint32_t *deep_features;
>      /* bitmap_for_each() uses unsigned longs.  Extend with zeroes. */
>      uint32_t disabled_features[
>          ROUNDUP(FSCAPINTS, sizeof(unsigned long)/sizeof(uint32_t))] = {};
>      unsigned int i;
>  
> +    /*
> +     * At the time of writing, amd_deep_features contains one extra dependency
> +     * over intel for a "hardware no longer has this bug" bit.
> +     */
> +    if ( boot_cpu_data.vendor & (X86_VENDOR_AMD|X86_VENDOR_HYGON) )
> +        deep_features = amd_deep_features;
> +    else
> +        deep_features = intel_deep_features;

Aren't there going to be other somewhat similar features which may want
marking like this (no matter whether right away they have a dependency)?
Deferring the special-casing until a dependency appears is only risking
to forget to add them.

> --- a/xen/tools/gen-cpuid.py
> +++ b/xen/tools/gen-cpuid.py
> @@ -344,6 +344,12 @@ def crunch_numbers(state):
>          # The ARCH_CAPS CPUID bit enumerates the availability of the whole register.
>          ARCH_CAPS: feat_range(RDCL_NO, RDCL_NO + 63),
>  
> +        # AMD-only special case.  NullSelectorClearsBase is really a "hardware
> +        # doesn't have this bug any more" bit.  All FRED-capable hardware has
> +        # NSCB properties, so disallow configurations which would cause LGKS
> +        # to behave unexpectedly.
> +        NSCB: [LKGS],

Along the lines of my reply to your review comments on my LKGS patch, why
is LKGS different from other selector loads? Don't we rather need to
disallow (perhaps not physically, but verbally) the suppressing of NSCB?
And then also for a few other "features", as per above? FDP_EXCP_ONLY and
NO_FPU_SEL clearly would be of that kind, and (for possible dependencies)
AMD doesn't know of them.

Also, nit: "LKGS" (in the comment).

Jan


From xen-devel-bounces@lists.xenproject.org Thu Apr 09 07:27:53 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 09 Apr 2026 07:27:53 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1276713.1562037 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wAjno-00069x-6O; Thu, 09 Apr 2026 07:27:48 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1276713.1562037; Thu, 09 Apr 2026 07:27: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 1wAjno-00069q-3i; Thu, 09 Apr 2026 07:27:48 +0000
Received: by outflank-mailman (input) for mailman id 1276713;
 Thu, 09 Apr 2026 07:27:47 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <Luca.Fancellu@arm.com>) id 1wAjnm-00069k-Nn
 for xen-devel@lists.xenproject.org; Thu, 09 Apr 2026 07:27:47 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wAjnm-00CV9g-3V
 for xen-devel@lists.xenproject.org; Thu, 09 Apr 2026 09:27:46 +0200
Received: from [10.42.69.10] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <Luca.Fancellu@arm.com>)
 id 69d754ea-bab6-0a2a0a5309dd-0a2a450ab0d2-20
 for <xen-devel@lists.xenproject.org>; Thu, 09 Apr 2026 09:27:45 +0200
Received: from [52.101.65.71]
 (helo=DU2PR03CU002.outbound.protection.outlook.com)
 by tlsNG-4011c0.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.0)
 (envelope-from <Luca.Fancellu@arm.com>)
 id 69d754f1-ee98-0a2a450a0019-34654147eb6a-3
 for <xen-devel@lists.xenproject.org>; Thu, 09 Apr 2026 09:27:45 +0200
Received: from CWLP123CA0113.GBRP123.PROD.OUTLOOK.COM (2603:10a6:401:5f::29)
 by DU0PR08MB8140.eurprd08.prod.outlook.com (2603:10a6:10:3ef::8) with
 Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9769.42; Thu, 9 Apr
 2026 07:27:41 +0000
Received: from AM3PEPF0000A79A.eurprd04.prod.outlook.com
 (2603:10a6:401:5f:cafe::36) by CWLP123CA0113.outlook.office365.com
 (2603:10a6:401:5f::29) with Microsoft SMTP Server (version=TLS1_3,
 cipher=TLS_AES_256_GCM_SHA384) id 15.20.9769.38 via Frontend Transport; Thu,
 9 Apr 2026 07:27:41 +0000
Received: from outbound-uk1.az.dlp.m.darktrace.com (4.158.2.129) by
 AM3PEPF0000A79A.mail.protection.outlook.com (10.167.16.105) with Microsoft
 SMTP Server (version=TLS1_3, cipher=TLS_AES_256_GCM_SHA384) id 15.20.9745.21
 via Frontend Transport; Thu, 9 Apr 2026 07:27:41 +0000
Received: from DU2PR08MB7272.eurprd08.prod.outlook.com (2603:10a6:10:2d7::16)
 by AS4PR08MB7880.eurprd08.prod.outlook.com (2603:10a6:20b:51f::9)
 with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9769.17; Thu, 9 Apr
 2026 07:26:37 +0000
Received: from DU2PR08MB7272.eurprd08.prod.outlook.com
 ([fe80::5d34:206f:373:a323]) by DU2PR08MB7272.eurprd08.prod.outlook.com
 ([fe80::5d34:206f:373:a323%6]) with mapi id 15.20.9769.018; Thu, 9 Apr 2026
 07: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=arm.com header.i="@arm.com" header.h="From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck"; dkim=pass header.s=selector1 header.d=arm.com header.i="@arm.com" header.h="From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck"
ARC-Seal: i=2; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=pass;
 b=oNGGWnYKW+dm8USChQ/J5hvNEmLayg5LviHct/PWVHU8Xva8/tnR9gxMaFmf/PyfuWXLqd688FLLd7z+43JUvkKTR+qYH+jYu1DitZLKFk2yC5UU+ME3cjD2QZTdajJtf7NPMxNwUdUkQFbH5Di8otjrTpmyrmsejp9n6xQ775x0t4cRFNJSMZTpI8a5XCH3yuL0orYUIXk1fAo8IVOHNHhzf6ulLSLQsXDvTBnDaDNyh9Rw7xrKBumvyypO2xFgBj++YURyp/4uqQemJCFEJFqixFOoh8Z09PMLCNkfp3QIHMQi+FtzTLw7WKCKh6CqCp3Mo352H1pVhYwsnyyXGA==
ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com;
 s=arcselector10001;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1;
 bh=RqTe4MyzhafXHEhy3dsJVbJEL4twwFvm0mo6XNeqAu8=;
 b=w3YsEeN+3R12+ilrYO9kMS7TEMbz35GiE8wmOpqmBwMvXLCW+PwXi0Mv8QIL1f4N4aXYMhnRJ8yDBGQJFftDX7F4IX4YtDFAC5L4eIwq+Lx24X/9uj9IqxBELYdRn6OZga0+8u4029HElh9CfF4dWwqwG3aCl+4gg37ifTxwWb9GkE9GvirT4mFQpaJ3a4W1/YAr75bx97YpOSfDOUWN5Z44sTXkydzIKs4km0VIDkd8jHHFhE2+bGBX9zmetu6d1lINT1xlAksyTphMbCux9EUcoxxwzoiaSNhQWd9tNxy2Fr3m90giYY27M0qhAl18BU4jSKtgtNQ/xbx5MZLbig==
ARC-Authentication-Results: i=2; mx.microsoft.com 1; spf=pass (sender ip is
 4.158.2.129) smtp.rcpttodomain=suse.com smtp.mailfrom=arm.com; dmarc=pass
 (p=none sp=none pct=100) action=none header.from=arm.com; dkim=pass
 (signature was verified) header.d=arm.com; arc=pass (0 oda=1 ltdi=1
 spf=[1,1,smtp.mailfrom=arm.com] dkim=[1,1,header.d=arm.com]
 dmarc=[1,1,header.from=arm.com])
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=arm.com; s=selector1;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck;
 bh=RqTe4MyzhafXHEhy3dsJVbJEL4twwFvm0mo6XNeqAu8=;
 b=GrpXA+BqMVtBYWJTZB9hl+ztsfzuPaUQUQVBcep1GQqgHD8md35/sm95tjo+M7llycki452/Unzv/eA2eRt4IPMJ2OaSDiw5RHNmfUiE82mfcJC/0dpCZR8CrZHMj5K6Tc2YraCRjv/1yBE2Rh43wjMKB0p+yenSNsbFU11AzAo=
X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 4.158.2.129)
 smtp.mailfrom=arm.com; dkim=pass (signature was verified)
 header.d=arm.com;dmarc=pass action=none header.from=arm.com;
Received-SPF: Pass (protection.outlook.com: domain of arm.com designates
 4.158.2.129 as permitted sender) receiver=protection.outlook.com;
 client-ip=4.158.2.129; helo=outbound-uk1.az.dlp.m.darktrace.com; pr=C
ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none;
 b=NJPFEBLU+V0XX9NBINuhKbmEj9of9t48FisF6Yf5Mp2QTmIF2BP4JCgzPDB347duzdmQIssxMciurblOR1rxtiSKhS91zJcQ5UVkofa4ScYDtOs/mdMtw3YYXgQvNhgUbEAxwKZcTZOKauDvbF/JK+x77SG/6i34H/Op2O1Qp0fuhb88OJAUFoTTcFmz+JbMcDWaep1672JGIKhGcMgADKwzQrz9y/fVg7JlaWCWOi+iMrgu5EhHsCrKpYuXyty4cX/jsvnokE3RaRqD0tbeAuTUFhYPjZYHStURkaUeGkMVOz2EV2HokNkEQobqHoBdt/VXop1fAcHIymVpxgNH7Q==
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com;
 s=arcselector10001;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1;
 bh=RqTe4MyzhafXHEhy3dsJVbJEL4twwFvm0mo6XNeqAu8=;
 b=XK0jFilXrRLypUVsvo4bpD6A4z5UaDgpKlzH1dNilsAzByt3gEDOaT1Ocdkm+QCe5HQMrxr2gKpaEfDUcPtGIbgQTYFff2NPPFulncuEddpj+h3oDTh3m//xbc3QZ489gKk2ND2PaQBnMP6Y8xwZU5wrqM2sM6xGhzrghADtpUcQyaRFi29W7u7YfRizC2ml7oYiO0w6pZdR1ramrEuJ7I+1QW8cbT7RI0fNKCnDXgxtiZMr9A+4dzYYdIohgqTUb+uNWTgHMYsTAeicA0WzuaVjgg5fS/DAWgwQ67Rs38qh2/qdod7PwaAwHiuR0qjDUWsXwcvsXWeLBY2tcHkcgQ==
ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass
 smtp.mailfrom=arm.com; dmarc=pass action=none header.from=arm.com; dkim=pass
 header.d=arm.com; arc=none
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=arm.com; s=selector1;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck;
 bh=RqTe4MyzhafXHEhy3dsJVbJEL4twwFvm0mo6XNeqAu8=;
 b=GrpXA+BqMVtBYWJTZB9hl+ztsfzuPaUQUQVBcep1GQqgHD8md35/sm95tjo+M7llycki452/Unzv/eA2eRt4IPMJ2OaSDiw5RHNmfUiE82mfcJC/0dpCZR8CrZHMj5K6Tc2YraCRjv/1yBE2Rh43wjMKB0p+yenSNsbFU11AzAo=
From: Luca Fancellu <Luca.Fancellu@arm.com>
To: Jan Beulich <jbeulich@suse.com>
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?B?Um9nZXIgUGF1IE1vbm7DqQ==?= <roger.pau@citrix.com>, Alistair Francis
	<alistair.francis@wdc.com>, Connor Davis <connojdavis@gmail.com>, Oleksii
 Kurochko <oleksii.kurochko@gmail.com>, Bertrand Marquis
	<Bertrand.Marquis@arm.com>, Volodymyr Babchuk <volodymyr_babchuk@epam.com>
Subject: Re: [PATCH v2 1/2] make ioremap_attr() common
Thread-Topic: [PATCH v2 1/2] make ioremap_attr() common
Thread-Index: AQHcx/Izziiqdxydn0S4hdbQtQOHzg==
Date: Thu, 9 Apr 2026 07:26:37 +0000
Message-ID: <DF8F0F78-1DBA-41B9-8055-4CD3622F6929@arm.com>
References: <145299a0-b25c-4612-82c6-9401a2f88ad2@suse.com>
 <72526f3a-726a-4a1e-8d80-1a336175c1af@suse.com>
In-Reply-To: <72526f3a-726a-4a1e-8d80-1a336175c1af@suse.com>
Accept-Language: en-GB, en-US
Content-Language: en-US
X-MS-Has-Attach:
X-MS-TNEF-Correlator:
x-mailer: Apple Mail (2.3826.700.81.1.6)
Authentication-Results-Original: dkim=none (message not signed)
 header.d=none;dmarc=none action=none header.from=arm.com;
x-ms-traffictypediagnostic:
	DU2PR08MB7272:EE_|AS4PR08MB7880:EE_|AM3PEPF0000A79A:EE_|DU0PR08MB8140:EE_
X-MS-Office365-Filtering-Correlation-Id: 8e46de11-50ab-4c59-9cb1-08de96097c11
x-checkrecipientrouted: true
nodisclaimer: true
X-MS-Exchange-SenderADCheck: 1
X-MS-Exchange-AntiSpam-Relay: 0
X-Microsoft-Antispam-Untrusted:
 BCL:0;ARA:13230040|7416014|376014|1800799024|366016|38070700021|22082099003|18002099003|56012099003;
X-Microsoft-Antispam-Message-Info-Original:
 qCEy6TVVhYhV9GSpdhUtsSj7gPwGnt443MFWQNBNuD7Ra5ByVIHol3rpoN1GfMEwiYx3MAZ5IgGvXp/ibeH8P9TRkD3zS/5i6zQzhloeSUlnn9877hQiAuqIQisiwX6ijnLvW3GumBHyo/GW9kaHP0CyduMRPn+KqFcxwRvgrxi8vWibMiE+wc5OAVb9j6/YXauGe8MxPp6LO/pETFu4XHy/j0LMF0ZXFGh2Kc3ieL2LNsmmursVURlkKbbDtAO1soO6rEj+lV7iDQJbZkawxQIrL6dcWwqQjjg2pa+HUVceOI7vdnyxtQiZMgxCrM6KyTvVgxccLORNvlDb4l77AkNscUPgqMZHzrIwVLxNiOs6MUA+PLOCWKuGhhPX7z/QMGcceju9jdEQU1GO/btDp2887+EhfqkuBx6AYmPKwEalZdYHJ+Bb/romYZIQThLLYjB8yxjzO02a7XPjDr3IUbXtXMoLuLy4CWozNMcc3elhJQZ7KpDfFEEXQ6/t5ssJ45Jp8JOyErCtso4OaE85Cp/BrRfJSoFbv7e+UBkj1eI7pb5HW1yPgG2dH2WkzzWY62QeU+eJuMw70SPzFL0MG1z6ADT1r4Per1FJ5TsFztAfo2U2QpdipQAP2bSmPAi0LSV+j4iYZaaIc1oZUI1fLIJmhnsC0TImJuNxAsa2a2JbL90N/+S3B3eD464uzASVCjC+8keJKz2w/mytAKJn0rQaLyKWVUz8KmUepbV+YwHMK/jUg1gASREs7QGwlR9HVg9X290XLjIUHXMABAYi9I4hkHLSinzWL5JjacePQSc=
X-Forefront-Antispam-Report-Untrusted:
 CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:DU2PR08MB7272.eurprd08.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(7416014)(376014)(1800799024)(366016)(38070700021)(22082099003)(18002099003)(56012099003);DIR:OUT;SFP:1101;
Content-Type: text/plain; charset="utf-8"
Content-ID: <8FD6DB0EC9F36A42883C2F082658814B@eurprd08.prod.outlook.com>
Content-Transfer-Encoding: base64
MIME-Version: 1.0
X-Exchange-RoutingPolicyChecked:
 YgKE8NtkkRHVYswWlhUjfmv5v2zA965CsnFZWu+oNu11gDVlsQm0TRk79focmuxYMxQu5YVhfDBWRRhKwM1OTRo/lVIUTynBr/K/Nx5pokRXD94XruV3xe03uEujqP052vpeoCNdBESujlq0n9oZCMnA/QFmcA5BqpitFKSF2F92BV6UTj/xHrPhCXvNCQyRvZ2wf6Ll9698cPkv5bK1Nrk3TrD/knzP+l2TluLJve/4VOVxupK/Ztl5cxBk2HhBGlsVFdSMR7kLlXz+xh9GkcGlRFVk8iB5iVAGheOY6gJB6Y80940OmaUgJkBsFAwMBZdsKa7DAvEKsMabfjpStQ==
X-MS-Exchange-Transport-CrossTenantHeadersStamped: AS4PR08MB7880
X-EOPAttributedMessage: 0
X-MS-Exchange-Transport-CrossTenantHeadersStripped:
 AM3PEPF0000A79A.eurprd04.prod.outlook.com
X-MS-PublicTrafficType: Email
X-MS-Office365-Filtering-Correlation-Id-Prvs:
	2e143142-5295-4f47-9410-08de9609562b
X-Microsoft-Antispam:
	BCL:0;ARA:13230040|82310400026|14060799003|1800799024|35042699022|7416014|376014|36860700016|56012099003|18002099003|22082099003;
X-Microsoft-Antispam-Message-Info:
	Vq4NcjtIxXVB2R1vFkLrlQYV39uj4NFcz8C08xmU8J0wpO7wLi3iGuFsdgxAL6dOxbtdFov6+WgOueElB1+gdcZIOlGVRWcNLDg2wVVSm/WZiyQu1NEnu6S3Lx2FB+MEGrlGY7i90qqFNo6jfjThaS+tXQE6Np2fkUdhWHIgx648qLy8yQ1LYEDJ7qY7hI5XU/NAkWDDlehh4N1V4Mu2P892f1ux7v5W5QY6XW2h1+WMteItlLncS/nUME66rZyejr9roVJlnwg8AdaI1d2td6m8RegmlAgLCYEfB9lsHgH4PPDUH5y5ws+xVaAB45bN2T7f87qT/5Hg88lA3p6Jv8ZTCYGkWLXA+0t5pmOtvAOECNsSYoA62cJzyRJqcLHALXtnGQ9bVZ7O6e7HZThrYWFfARaDbizyiFBaBkzT2epjk6uJwUS04tSl+zwd1cz5HQ4YXS3GKl8ktDLrwgd2hrmO6Jtsqj5b86y/fro0Laqd3nUc2J9oSUbl6o4giyIrOOvQSkGIWd4TGAnLZawqqldHuyYOUHkbAhOkKOIdifJNsBRPdDSQZVxnYp03uY3sOQeZXFFhXDXRdwU3b11nPrbuJ1L7AF9qW1nX1ZnXIHoBSCjxkbgGSLKYGn8BxKLOCnuXiouMNW9tMR+WNCPVgRWWUs1EHOynjSn2jd/iEpjii6gPS8B/5K+JAjcD26JwmbxqBewVEk3UeqsAxchYHjfYCJ3WIewbJ/aBxX7L0dcomKqvwB+NiYa2fXK37K76ZJKV32XRwIb5lSvr2gzhyg==
X-Forefront-Antispam-Report:
	CIP:4.158.2.129;CTRY:GB;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:outbound-uk1.az.dlp.m.darktrace.com;PTR:InfoDomainNonexistent;CAT:NONE;SFS:(13230040)(82310400026)(14060799003)(1800799024)(35042699022)(7416014)(376014)(36860700016)(56012099003)(18002099003)(22082099003);DIR:OUT;SFP:1101;
X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1
X-MS-Exchange-AntiSpam-MessageData-0:
	PAuJQuo4cfjZSWsssFtBVAHoWUNlQpGK6K6dXP+py+gx7BltKTbKwaA6k+udqEXKOGnwgjcpl+JUgQiEgKz5oudT1t2YcszRZZJuXVYnBKg8Xi7dibGearHE780Nsmy9YJ1WpykGy5RLUqSFNRL9h8TU5s/RrRU9wXK6Rq5wCd+id4cjlaqFF4N+rU8F5zoLRCp/CkVCxEkq8Inasoa2CCR9H9QMdRLm/+7oABXPSiFpX68h77StiufE8zuJZNijb2Acp9CiDt7BKQva+PknJDDfsTsISCRWsKs/L6wfDrhkvazCDqSyUJ9fBXKyjfyJgOtOEgfqTnKJaq5xjkT+DAvK0legawgz1I9/N0IySu9B3vYEFvnjIELpAQTHUa6LQN3ik95/bGOljvKm+bIyLzbioOfrxiwaBSeFgvwQzGSyVramwVqR5z9Vg+pGT2Hq
X-OriginatorOrg: arm.com
X-MS-Exchange-CrossTenant-OriginalArrivalTime: 09 Apr 2026 07:27:41.2475
 (UTC)
X-MS-Exchange-CrossTenant-Network-Message-Id: 8e46de11-50ab-4c59-9cb1-08de96097c11
X-MS-Exchange-CrossTenant-Id: f34e5979-57d9-4aaa-ad4d-b122a662184d
X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=f34e5979-57d9-4aaa-ad4d-b122a662184d;Ip=[4.158.2.129];Helo=[outbound-uk1.az.dlp.m.darktrace.com]
X-MS-Exchange-CrossTenant-AuthSource:
	AM3PEPF0000A79A.eurprd04.prod.outlook.com
X-MS-Exchange-CrossTenant-AuthAs: Anonymous
X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem
X-MS-Exchange-Transport-CrossTenantHeadersStamped: DU0PR08MB8140
X-purgate-ID: tlsNG-4011c0/1775719665-BF9440B1-7EA75923/0/0
X-purgate-type: clean
X-purgate-size: 3080

SGkgSmFuLA0KDQo+IE9uIDggQXByIDIwMjYsIGF0IDEzOjA3LCBKYW4gQmV1bGljaCA8amJldWxp
Y2hAc3VzZS5jb20+IHdyb3RlOg0KPiANCj4gVGhpcyBjb3JlIGJhY2tpbmcgZnVuY3Rpb24gaXMg
dW5pZm9ybTsgd2hhdCB2YXJpZXMgYWNyb3NzIGFyY2hpdGVjdHVyZXMNCj4gYXJlIHRoZSBhdHRy
aWJ1dGVzIHBhc3NlZCBhbmQgaGVuY2UgdGhlIHdyYXBwZXJzIGFyb3VuZCBpdC4gWWV0IG9mIGNv
dXJzZQ0KPiBleHRyYSBjaGVja2luZyBvciBzcGVjaWFsIGhhbmRsaW5nIG1heSBiZSBuZWVkZWQg
cGVyIGFyY2gsIHNvIGludHJvZHVjZSBhDQo+IHN1aXRhYmxlIGhvb2suDQo+IA0KPiBTaWduZWQt
b2ZmLWJ5OiBKYW4gQmV1bGljaCA8amJldWxpY2hAc3VzZS5jb20+DQo+IC0tLQ0KPiBEZWNsYXJh
dGlvbnMgKG9yIGlubGluZSBjb3VudGVycGFydHMpIGFyZW4ndCBiZWluZyBtb3ZlZCBhcm91bmQs
IHRvIGF2b2lkDQo+IHRoZSBuZWVkIHRvIHRvdWNoIHNvdXJjZSBmaWxlcyB1c2luZyB0aGUgZnVu
Y3Rpb25zLiBRdWl0ZSBwb3NzaWJseSB0aGV5DQo+IHdhbnQgdG8gY29uc2lzdGVudGx5IGdvIGlu
dG8geGVuL2lvLmggYW5kIGFzbS9pby5oLg0KPiANCj4gT2YgY291cnNlIGlvcmVtYXAuYyBjb3Vs
ZCBhbHNvIGdvIGludG8gbGliLy4NCj4gDQo+IEZvciBSSVNDLVYgdGhlIHdyYXBwZXJzIGxpa2Vs
eSBzaG91bGQgYmVjb21lIGlubGluZSBmdW5jdGlvbnM/DQo+IA0KPiBQUEMgZG9lc24ndCByZWZl
cmVuY2UgYW55IG9mIHRoZSBmdW5jdGlvbnMganVzdCB5ZXQsIHNvIGdldHMgb25seSBhDQo+IGRl
Y2xhcmF0aW9uLg0KPiANCj4gRm9yIEFybSwgYSBUT0RPIGl0ZW0gaXMgZGVsaWJlcmF0ZWx5IHJl
dGFpbmVkLCB5ZXQgc2VlaW5nIHRoZSB1c2Ugb2YNCj4gaW9yZW1hcF93YygpIGluIGRvbWFpbiBi
dWlsZGluZyAod2hpY2ggYnkgaXRzZWxmIGlzIHF1ZXN0aW9uYWJsZSwgc2VlIG5leHQNCj4gcGF0
Y2gpIEkgd29uZGVyIGlmIHRoYXQncyBldmVuIGZlYXNpYmxlIGFzIGxvbmcgYXMgd2UgZG9uJ3Qg
aGF2ZQ0KPiBtZW1yZW1hcCgpIG9yIGFsaWtlLg0KPiAtLS0NCj4gdjI6IFVzZSBjb25kaXRpb25h
bCBvcGVyYXRvciBpbiBpb3JlbWFwX2F0dHIoKSdzIGZpbmFsIHJldHVybi4gUmUtYmFzZSBhbmQN
Cj4gICAgbGV2ZXJhZ2UgdGhhdCB0byBzaW1wbGlmeSBpb3JlbWFwX2F0dHIoKSBpdHNlbGYuDQo+
IA0KPiAtLS0gYS94ZW4vYXJjaC9hcm0vaW5jbHVkZS9hc20vaW8uaA0KPiArKysgYi94ZW4vYXJj
aC9hcm0vaW5jbHVkZS9hc20vaW8uaA0KPiBAQCAtMSw2ICsxLDggQEANCj4gI2lmbmRlZiBfQVNN
X0lPX0gNCj4gI2RlZmluZSBfQVNNX0lPX0gNCj4gDQo+ICsjaW5jbHVkZSA8eGVuL21tLXR5cGVz
Lmg+DQo+ICsNCj4gI2lmIGRlZmluZWQoQ09ORklHX0FSTV8zMikNCj4gIyBpbmNsdWRlIDxhc20v
YXJtMzIvaW8uaD4NCj4gI2VsaWYgZGVmaW5lZChDT05GSUdfQVJNXzY0KQ0KPiBAQCAtOSw2ICsx
MSwxNiBAQA0KPiAjIGVycm9yICJ1bmtub3duIEFSTSB2YXJpYW50Ig0KPiAjZW5kaWYNCj4gDQo+
ICsjaWZkZWYgQ09ORklHX01QVQ0KPiArdm9pZCBfX2lvbWVtICptcHVfaW9yZW1hcF9hdHRyKHBh
ZGRyX3Qgc3RhcnQsIHNpemVfdCBsZW4sIHB0ZV9hdHRyX3QgZmxhZ3MpOw0KPiArI2RlZmluZSBh
cmNoX2lvcmVtYXBfYXR0ciBtcHVfaW9yZW1hcF9hdHRyDQo+ICsjZWxzZQ0KPiArLyoNCj4gKyAq
IGlvcmVtYXBfYXR0cigpIHNob3VsZCBvbmx5IGJlIHVzZWQgdG8gcmVtYXAgZGV2aWNlIGFkZHJl
c3MgcmFuZ2VzLg0KPiArICogVE9ETzogQWRkIGFuIGFyY2ggaG9vayB0byB2ZXJpZnkgdGhpcyBh
c3N1bXB0aW9uLg0KPiArICovDQo+ICsjZW5kaWYNCg0KSSBmaW5kIGEgYml0IHN0cmFuZ2UgdG8g
aGF2ZSBhbiAjZWxzZSB3aXRoIG9ubHkgYSBjb21tZW50LCBidXQgdG8gYmUgZmFpciBJ4oCZbSBu
b3Qgc3VyZSB3aGVyZSB0aGlzDQpjb21tZW50IGNhbiBiZSBwdXQgb3RoZXJ3aXNlLg0KDQpGb3Ig
dGhlIEFybSBhbmQgY29tbW9uIHBhcnQsIEnigJl2ZSBhbHNvIHRlc3RlZCBvbiBBcm02NCBNTVUs
IEFybTMyIE1NVSwgQXJtNjQgTVBVIG9uIHZpcnR1YWwgcGxhdGZvcm1zOg0KDQpSZXZpZXdlZC1i
eTogTHVjYSBGYW5jZWxsdSA8bHVjYS5mYW5jZWxsdUBhcm0uY29tPiAjIGFybSwgY29tbW9uDQpU
ZXN0ZWQtYnk6IEx1Y2EgRmFuY2VsbHUgPGx1Y2EuZmFuY2VsbHVAYXJtLmNvbT4gIyBhcm0sIGNv
bW1vbg0KDQpDaGVlcnMsDQpMdWNhDQoNCg==


From xen-devel-bounces@lists.xenproject.org Thu Apr 09 07:51:59 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 09 Apr 2026 07:51:59 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1276729.1562046 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wAkB7-0001zg-24; Thu, 09 Apr 2026 07:51:53 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1276729.1562046; Thu, 09 Apr 2026 07:51: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 1wAkB6-0001zZ-Ve; Thu, 09 Apr 2026 07:51:52 +0000
Received: by outflank-mailman (input) for mailman id 1276729;
 Thu, 09 Apr 2026 07:51:52 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <Luca.Fancellu@arm.com>) id 1wAkB6-0001zT-79
 for xen-devel@lists.xenproject.org; Thu, 09 Apr 2026 07:51:52 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wAkB5-000KJw-J8
 for xen-devel@lists.xenproject.org; Thu, 09 Apr 2026 09:51:51 +0200
Received: from [10.42.69.3] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <Luca.Fancellu@arm.com>)
 id 69d75a8e-e002-0a2a0a5209dd-0a2a4503b66e-44
 for <xen-devel@lists.xenproject.org>; Thu, 09 Apr 2026 09:51:51 +0200
Received: from [52.101.83.29]
 (helo=GVXPR05CU001.outbound.protection.outlook.com)
 by tlsNG-33051d.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.0)
 (envelope-from <Luca.Fancellu@arm.com>)
 id 69d75a96-02b3-0a2a45030019-3465531db55e-3
 for <xen-devel@lists.xenproject.org>; Thu, 09 Apr 2026 09:51:51 +0200
Received: from AM0PR02CA0193.eurprd02.prod.outlook.com (2603:10a6:20b:28e::30)
 by DBAPR08MB5557.eurprd08.prod.outlook.com (2603:10a6:10:1a1::13)
 with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9745.20; Thu, 9 Apr
 2026 07:51:47 +0000
Received: from AMS0EPF000001A9.eurprd05.prod.outlook.com
 (2603:10a6:20b:28e:cafe::da) by AM0PR02CA0193.outlook.office365.com
 (2603:10a6:20b:28e::30) with Microsoft SMTP Server (version=TLS1_3,
 cipher=TLS_AES_256_GCM_SHA384) id 15.20.9769.40 via Frontend Transport; Thu,
 9 Apr 2026 07:51:46 +0000
Received: from outbound-uk1.az.dlp.m.darktrace.com (4.158.2.129) by
 AMS0EPF000001A9.mail.protection.outlook.com (10.167.16.149) with Microsoft
 SMTP Server (version=TLS1_3, cipher=TLS_AES_256_GCM_SHA384) id 15.20.9769.17
 via Frontend Transport; Thu, 9 Apr 2026 07:51:46 +0000
Received: from DU2PR08MB7272.eurprd08.prod.outlook.com (2603:10a6:10:2d7::16)
 by GV2PR08MB11724.eurprd08.prod.outlook.com (2603:10a6:150:30c::6)
 with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9769.17; Thu, 9 Apr
 2026 07:50:41 +0000
Received: from DU2PR08MB7272.eurprd08.prod.outlook.com
 ([fe80::5d34:206f:373:a323]) by DU2PR08MB7272.eurprd08.prod.outlook.com
 ([fe80::5d34:206f:373:a323%6]) with mapi id 15.20.9769.018; Thu, 9 Apr 2026
 07:50: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=arm.com header.i="@arm.com" header.h="From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck"; dkim=pass header.s=selector1 header.d=arm.com header.i="@arm.com" header.h="From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck"
ARC-Seal: i=2; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=pass;
 b=h72mnjlfxQVz7BSl7rcnYIgKDU4QlJeCuwNXUBv/2YSaaOn5l5fVpUPr+LhRDb3RFts3xjUL+Muu07uViFrxpw7HMQpW+Pi8BKs7d+5gz1zD0/VNNBk4e5S3Bj/LCBX23fNvnisyZqbqpYs1DdwWuqqXZA6LoS6d2eciDCwxSUGnXoVnQHF6UspO1ctxQCNW6WdNddVI5FkglRtVBMBUo29v0TFMo4OFDV3OiZ4Oy+VfCNUP/5a/9PdQOpVn79215pwVLhKMYYLpvW7X6ZUiWV4ng8BltMWV6TNvfrDWJjxtKGBXZjdGPfCcgbqZAlYUzFk5haZVY5+pX1RX1ebqLg==
ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com;
 s=arcselector10001;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1;
 bh=UuW+HS+xOH0ClkWDUm7JfLOYmsWBrFu7Gz03zcthstY=;
 b=jGvdpsnupClK9QiVag/Y+yML3VkHP7lLr04REHWi3jEJrTAo+obvcz+720C/F4WT95f1aaRfnQd2IZUL0NFNu45i1XAI2FtJbS0ESceCKMl4MrGpIl+VrCCLk1c+mNXuLwZiUVieTezmWicHMjGLLtA0n07yhxcnkz2vn4O823gPokH0Raczyw++SMjHwuh6IU/OibweI4dERK0ChFQZEaDzCmUHck0ZSSDRGpszT4Y78Djx/D+k0QsviXfYEo++gDRYRpUO8sjPjNUCK6j4TIS8L/2e9Akwo9AFiZniGHvrRyYAISU1yXTPYm2Na5yi1jkKvCFTb1TIrZI/7mJbzQ==
ARC-Authentication-Results: i=2; mx.microsoft.com 1; spf=pass (sender ip is
 4.158.2.129) smtp.rcpttodomain=citrix.com smtp.mailfrom=arm.com; dmarc=pass
 (p=none sp=none pct=100) action=none header.from=arm.com; dkim=pass
 (signature was verified) header.d=arm.com; arc=pass (0 oda=1 ltdi=1
 spf=[1,1,smtp.mailfrom=arm.com] dkim=[1,1,header.d=arm.com]
 dmarc=[1,1,header.from=arm.com])
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=arm.com; s=selector1;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck;
 bh=UuW+HS+xOH0ClkWDUm7JfLOYmsWBrFu7Gz03zcthstY=;
 b=kSGyF7QzVD9DrP+CXILmOqV4J0QH952glYO+XM+UxH2LHbKq+RwKlTP3GbiNZDs41wdNJcIS8yJHhTv/CPz/wERDW9mSwe7f9WFZChbU0+M7mTBitkJAkaA9gZEnLeyy64NIuJyBhuqIDXVAkmie1JzT71ujiWQYGuKQT8Oqq6w=
X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 4.158.2.129)
 smtp.mailfrom=arm.com; dkim=pass (signature was verified)
 header.d=arm.com;dmarc=pass action=none header.from=arm.com;
Received-SPF: Pass (protection.outlook.com: domain of arm.com designates
 4.158.2.129 as permitted sender) receiver=protection.outlook.com;
 client-ip=4.158.2.129; helo=outbound-uk1.az.dlp.m.darktrace.com; pr=C
ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none;
 b=H2S52KgddQyB/f7hMrYrIixpQptOD50dV485Xy0RQxO0StwBYl0OjuFPDqe60jEQLVACI6X0jzcLLMycdu0Qddk6jS1Qau1VDk2fAItcv6xAqU3X93a5Cq67niVqrarIcGAb0RUA7KpINP/HDaGItJmlMW9KuuDJclbK9Q4F7ryERztu5FGvBCG3BMsQGTE+hGCaWUgePojm2fNvoeeEk8Z0GKSL59LkyMn2pYjM9TdC3GoJE1xNEXhFC6T8MfjzTzGU7SvKfj6+bTU6+yH6exwVyfRYP1htiJxM74WQLW2WB2vXPhHqQo1dyyiJTJQ0JRLVx6PMthCkos4jdzQyeQ==
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com;
 s=arcselector10001;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1;
 bh=UuW+HS+xOH0ClkWDUm7JfLOYmsWBrFu7Gz03zcthstY=;
 b=dDsMVtT/M9fOzOu8nOvAk83QmmPi4vc3dPEia62QXZcdc3yrf7RXzFWPkpHvuh+tOrje/PQQ4uXLTaQbf4TcoaHnraNLtjdWriHkiYDvf+jHoH5O7slCc+4/CMMwTJq1MKPSD80Ia90W06HxnEGhF9MZ9K9/uvrIF6/0AitraVz0q7WnHXuMXuXDgiqvjQXQF4URu/IiNQN8dgeFoobLeVntnErZrgrUE7d3JEeUHsN5JZP0mZ5Qsz8ZODAcy0RIH9d06JIC2olR3hUDOSdn3QokY0mfg449jl2QdJcPUnyiwD09smkbk1macTK+ZNNInGrVFyBnDCZ/Gg+Tu5rDLg==
ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass
 smtp.mailfrom=arm.com; dmarc=pass action=none header.from=arm.com; dkim=pass
 header.d=arm.com; arc=none
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=arm.com; s=selector1;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck;
 bh=UuW+HS+xOH0ClkWDUm7JfLOYmsWBrFu7Gz03zcthstY=;
 b=kSGyF7QzVD9DrP+CXILmOqV4J0QH952glYO+XM+UxH2LHbKq+RwKlTP3GbiNZDs41wdNJcIS8yJHhTv/CPz/wERDW9mSwe7f9WFZChbU0+M7mTBitkJAkaA9gZEnLeyy64NIuJyBhuqIDXVAkmie1JzT71ujiWQYGuKQT8Oqq6w=
From: Luca Fancellu <Luca.Fancellu@arm.com>
To: Andrew Cooper <andrew.cooper3@citrix.com>
CC: "xen-devel@lists.xenproject.org" <xen-devel@lists.xenproject.org>, Harry
 Ramsey <Harry.Ramsey@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>
Subject: Re: [PATCH v3 2/3] arm/mpu: Introduce `v8r_el1_msa` device tree
 property for domains
Thread-Topic: [PATCH v3 2/3] arm/mpu: Introduce `v8r_el1_msa` device tree
 property for domains
Thread-Index: AQHcx1925wGns5uRCkO+Bld4rDba9bXVTXKAgAEOy4A=
Date: Thu, 9 Apr 2026 07:50:41 +0000
Message-ID: <29251E79-8302-4336-81F0-C27D256B74A3@arm.com>
References: <20260408135531.1744388-1-luca.fancellu@arm.com>
 <20260408135531.1744388-3-luca.fancellu@arm.com>
 <bb6caa97-b3b5-465e-8690-c3aef061d885@citrix.com>
In-Reply-To: <bb6caa97-b3b5-465e-8690-c3aef061d885@citrix.com>
Accept-Language: en-GB, en-US
Content-Language: en-US
X-MS-Has-Attach:
X-MS-TNEF-Correlator:
x-mailer: Apple Mail (2.3826.700.81.1.6)
Authentication-Results-Original: dkim=none (message not signed)
 header.d=none;dmarc=none action=none header.from=arm.com;
x-ms-traffictypediagnostic:
	DU2PR08MB7272:EE_|GV2PR08MB11724:EE_|AMS0EPF000001A9:EE_|DBAPR08MB5557:EE_
X-MS-Office365-Filtering-Correlation-Id: f240f10b-34ed-4bca-a9ad-08de960cd98f
x-checkrecipientrouted: true
nodisclaimer: true
X-MS-Exchange-SenderADCheck: 1
X-MS-Exchange-AntiSpam-Relay: 0
X-Microsoft-Antispam-Untrusted:
 BCL:0;ARA:13230040|1800799024|366016|376014|18002099003|56012099003|22082099003|38070700021;
X-Microsoft-Antispam-Message-Info-Original:
 Wp/X5FB37FotRpp4sdC7kFtIc/2WlTb4CnJywbxQG57Q7E2yWpmVi2ZPdS7J1xCMVVx1quLD/gVbMphHVn31CjNwTomQwuTWDXpdMtR5BIujvEQhF5e65QNYG0FdCEKF/X9lRt4q3ji5LStQxfrTcl+JbSPnRvWNIwNcN28pQtwoltGBFMlwu6XEayFczZw8B7O92kxfnx7SdNUnqmc6w6IEFHPwiCT9qY3dblIw51DqTcoILwi7JT9PoZRvayryuJiVksNbXOvkehltEckywH8FHwo1Y7Shqi2BKmz2ECzar0Y07zGzDGCUAWrc+JnFQOpLOisxMv8YmEa6PAw150oRtH741HdombjJmByLB3K/etAGky3k9CcwYWlsnfQD16T0DxBkrBrlX3izc7d7y7wIeau1uPc+nQ7mj8zApb+gDRGpNgkb6srmT1aVjM//rTPXCKHIvLyw0ARHfmVKEx1bM8IZFTsUfpJK42QpDDcYTZtXBq66lvZsUTB68lEOJ/vqwYKeTkwXgmy4MtdoK4lctiYwTDraC+qsZuRvPdJXMdKTR1UcafTPtNwJckx8gAfcGaoxN6p+1Jb2zA9byczbIJtg25A7YUds0Q6uCpWhaMYLjom4fgboQofvgpu3jiGCMl404fKU56LwBndadx+fB52Bs72jQFGWLDimniL3Krm5G60z1yoIMia1flcQe8TX8uIKVXxWARARqCxYJyWs2KZ0xPUhrlNhkBjGYIDoNbZRWXYt8rux5Jyxnc+G4ateVm0HpcDWJWMoHC9M0nzpbeEyYGVy/w9A8IRg9oI=
X-Forefront-Antispam-Report-Untrusted:
 CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:DU2PR08MB7272.eurprd08.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(1800799024)(366016)(376014)(18002099003)(56012099003)(22082099003)(38070700021);DIR:OUT;SFP:1101;
Content-Type: text/plain; charset="utf-8"
Content-ID: <32F2322C945E044EBB8E627825AC9D2C@eurprd08.prod.outlook.com>
Content-Transfer-Encoding: base64
MIME-Version: 1.0
X-Exchange-RoutingPolicyChecked:
 D2G0WxEynzX7XqyHu2EjYnHxzef3keATQjguPp4CUWuyEVo8aZRkbTTK9xgNMAXWaGkhyT2wvpzdcNqshclSG0Be/CjCgdATnJjJkulOyI0aiY4SznL8GtHTQ11OnfKdYqOWpODpfITTgjDcJ+6vpwMQH8sdjtvBPUicOTiTAdlin9NqY4Z6NjBcV7IrDN6bNOtFMRT+GNRR94S8kFJiOUE3FQO9DAJsFZMx26bmFvO+UgzwkECxHFs/F8+aLZu/fx22fXXrdOKATAIt3HQp/Yh72bY+HB3Ar9jhj8K9DGlAucS8artxUWIlXFpWXEjAVcly72Zbv5SBS3VnzShPRA==
X-MS-Exchange-Transport-CrossTenantHeadersStamped: GV2PR08MB11724
X-EOPAttributedMessage: 0
X-MS-Exchange-Transport-CrossTenantHeadersStripped:
 AMS0EPF000001A9.eurprd05.prod.outlook.com
X-MS-PublicTrafficType: Email
X-MS-Office365-Filtering-Correlation-Id-Prvs:
	404a2cc9-3cdd-4b5d-ad94-08de960cb2dd
X-Microsoft-Antispam:
	BCL:0;ARA:13230040|14060799003|36860700016|35042699022|1800799024|376014|82310400026|56012099003|22082099003|18002099003;
X-Microsoft-Antispam-Message-Info:
	LMCn8PMEmegIX7OR1uFP9c+ifMd7wAIGa1ze2CIMlHzS/+O3NxCEaKxEcL4BZ9AM8Cm0m/YjojnzPcW1MpVuCBdnm7aJaTJy/h8ypRmiwEvqUpBQIgJVuY8boZWdtFrKjuifFpFm8BYWPyL5KzCo+qZGU34sMWAkmVOb9ISmW5in5nCNFJrRUImbmGwmTD56mG4BDdzXmDa2UrEt6J1SAEMhYfketVYRuMKjSq3ExuUYuhEcy6aQowNPPzPpzJ7gnUpR4lzKLSySIeBqxZZjA+7xQ9/rm/15lPMW3OWQ4yij5HO9Ev/WLzsvkwgLePuZgkwxS//NptI3ydJRzOvPXdy9vHy1eH7TAn7vK3KHCVEE3/Kc0mq/7y/RK5kUeC/1u6egNsGKlZUEa9t8qCQyYhGqdZ28HWmw5u6asJiZGSSXoDjyCXL2Pb4asoU6FytooTWU8iAjLolc2ePNiB6qfmhbJaAiT86+O8Q2s6ysWNOYK3bZlbhBkGGYPVJ1lU6ldPJxffR4pWqqMGh2VoXv9oU+ujYWefwS5zg0Glq8W0T0xVERC7liDhOfZZ8zHOcgUhY6+KG5hETvOiASWSOon4K+vTLrV2rjWnqPN5CvmNemsckQuEJmVIkPp8IPTAHJZIdD30w3xRVdRavMlA4LtchtIpI7PANa9sAxkafZAe9xcYwSYHTv9KFb317f9hOF3gzB+S5u0dgc5NbY8LAUYBC6BN7FhYjXK/vzk/OkdJI=
X-Forefront-Antispam-Report:
	CIP:4.158.2.129;CTRY:GB;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:outbound-uk1.az.dlp.m.darktrace.com;PTR:InfoDomainNonexistent;CAT:NONE;SFS:(13230040)(14060799003)(36860700016)(35042699022)(1800799024)(376014)(82310400026)(56012099003)(22082099003)(18002099003);DIR:OUT;SFP:1101;
X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1
X-MS-Exchange-AntiSpam-MessageData-0:
	z4bGHmRcpI9+6XFe/DyFGawcEMU4c9NkrHXyp8Q/YM7fUMP4agdq7r+3BEJ2QuHM33wfy5JYMtHkhD39af2jo6KDKiGFISGlrk7+alekNLpS30R5JVEh7s+UWZor4RRb0T38MdZlk/Hm6NBlvlpgUWPpTTzII+rilIVrEFl9jD6x/BxcVCmlF8qlXCWhCMQZriCBBzWuWqPCcZlFVS+vKlxletblFdUpE4I52/O6VPoG7dhI/+abnhhnGmXm0EOvnbM+JvaKFzxxNMtUyj6PPzzg3xYzSfBMpFIn/P9Im4bXwJNJJe+p1ZeIuy/mjEHy6XBhusLQr2DS+Kpiu91mZen3GQMUC87kngyNyj1EjQFS21sDQJyKj3w4z62WFaDg/0gYQEQE8No8azJvNTCh8NZQLTmU8FJ6OQmiAETbfDYynQz+V6CnMxWIW0nVPkG8
X-OriginatorOrg: arm.com
X-MS-Exchange-CrossTenant-OriginalArrivalTime: 09 Apr 2026 07:51:46.6047
 (UTC)
X-MS-Exchange-CrossTenant-Network-Message-Id: f240f10b-34ed-4bca-a9ad-08de960cd98f
X-MS-Exchange-CrossTenant-Id: f34e5979-57d9-4aaa-ad4d-b122a662184d
X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=f34e5979-57d9-4aaa-ad4d-b122a662184d;Ip=[4.158.2.129];Helo=[outbound-uk1.az.dlp.m.darktrace.com]
X-MS-Exchange-CrossTenant-AuthSource:
	AMS0EPF000001A9.eurprd05.prod.outlook.com
X-MS-Exchange-CrossTenant-AuthAs: Anonymous
X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem
X-MS-Exchange-Transport-CrossTenantHeadersStamped: DBAPR08MB5557
X-purgate-ID: tlsNG-33051d/1775721111-40B6DC9A-9394293F/0/0
X-purgate-type: clean
X-purgate-size: 2920

SGkgQW5kcmV3LA0KDQo+IE9uIDggQXByIDIwMjYsIGF0IDE2OjQwLCBBbmRyZXcgQ29vcGVyIDxh
bmRyZXcuY29vcGVyM0BjaXRyaXguY29tPiB3cm90ZToNCj4gDQo+IE9uIDA4LzA0LzIwMjYgMjo1
NSBwbSwgTHVjYSBGYW5jZWxsdSB3cm90ZToNCj4+IGRpZmYgLS1naXQgYS94ZW4vaW5jbHVkZS9w
dWJsaWMvYXJjaC1hcm0uaCBiL3hlbi9pbmNsdWRlL3B1YmxpYy9hcmNoLWFybS5oDQo+PiBpbmRl
eCBjZDU2M2NmNzA2ODQuLjIzZGYyZjI0Y2IwOSAxMDA2NDQNCj4+IC0tLSBhL3hlbi9pbmNsdWRl
L3B1YmxpYy9hcmNoLWFybS5oDQo+PiArKysgYi94ZW4vaW5jbHVkZS9wdWJsaWMvYXJjaC1hcm0u
aA0KPj4gQEAgLTM1NSw2ICszNTUsOCBAQCBzdHJ1Y3QgeGVuX2FyY2hfZG9tYWluY29uZmlnIHsN
Cj4+ICAgICB1aW50MzJfdCBjbG9ja19mcmVxdWVuY3k7DQo+PiAgICAgLyogSU4gKi8NCj4+ICAg
ICB1aW50OF90IGFybV9zY2lfdHlwZTsNCj4+ICsgICAgLyogSU4gKi8NCj4+ICsgICAgdWludDhf
dCB2OHJfZWwxX21zYTsNCj4+IH07DQo+PiAjZW5kaWYgLyogX19YRU5fXyB8fCBfX1hFTl9UT09M
U19fICovDQo+PiANCj4gDQo+IFRoaXMgaXNuJ3Qgb2sgYXMgdGhlIHNpbmd1bGFyIGNoYW5nZSB0
byB0aGUgcHVibGljIGhlYWRlcnMuICAoQWxzbywgSQ0KPiBoYXZlbid0IGhhZCB0aW1lIHRvIGZp
eCB0aGUgb3RoZXIgQVBJIGFidXNlcyB0aGF0IGhhdmUgY3JlcHQgaW50byBBUk0ncw0KPiBhcmNo
IGRvbWFpbiBjb25maWcpDQo+IA0KPiBZb3UncmUgaW50cm9kdWNpbmcgYSBuZXcgaHlwZXJjYWxs
IGlucHV0IHBhcmFtZXRlciAod2hpY2ggaXMgZmluZSksIGJ1dA0KPiBoYXMgbm8gZGVmaW5lcyAo
b25lcyBwcml2YXRlIHRvIHhlbi9hcmNoL2FybS9pbmNsdWRlL2FzbS9kb21haW4uaCBhcmUNCj4g
bm90IHBlcm1pdHRlZCBmb3IgdXNlIGluIHRoZSBwdWJsaWMgQVBJKSwgYW5kIGZvciB3aGljaCB0
aGVyZSBpcyBubw0KPiBpbnB1dCB2YWxpZGF0aW9uLiAgVXNlcnNwYWNlIGNhbiBjdXJyZW50bHkg
cGFzcyBhbnkgYXJiaXRyYXJ5IGJ5dGUgaGVyZQ0KPiB3aGljaCB3aWxsIGJlIGNvcGllZCBpbnRv
IGQtPmFyY2gudjhyX2VsMV9tc2EsIG5vdCB0aGF0IHRoZXJlJ3MgYW55DQo+IGNvbnN1bWVyIG9m
IHRoaXMgZmllbGQgSSBjYW4gc2VlIGluIHRoZSBzZXJpZXMuDQo+IA0KPiBGcmFua2x5LCBJIHRo
aW5rIHRoaXMgc2VyaWVzIGlzIGNob3BwZWQgdXAgdG9vIG11Y2guICBZb3UgcmVhbGx5IG11c3QN
Cj4gbm90IGJlIGludHJvZHVjaW5nIG5ldyBoeXBlcmNhbGwgcGFyYW1ldGVycyBsaWtlIHRoaXMg
d2l0aG91dCB0aGUgd2hvbGUNCj4gc2VyaWVzIHdoaWNoIGxldHMgeW91IGB4bCBjcmVhdGVgIHN1
Y2ggYSBWTS4NCg0KVGhhbmtzIGZvciB0aGlzIGZlZWRiYWNrLCB3aGlsZSByZXdvcmtpbmcgdGhp
cyBwYXRjaCBJIHdhcyB3cm9uZ2x5IGFzc3VtaW5nIEkgaGFkIGFsd2F5cw0KemVybyBmcm9tIHRo
ZSB0b29sc3RhY2sgYXMgdGhpcyBpcyBub3Qgc3VwcG9ydGVkIGF0bSwgd2hpbGUgaW5zdGVhZCBp
dOKAmXMgbm90IHRydWUgZm9yIG1hbGljaW91cw0KdXNlcnNwYWNlIGh5cGVyY2FsbCBjYWxsZXJz
Lg0KDQpUaGUgZnVsbCBicmFuY2ggaXMgYXZhaWxhYmxlIGF0IGh0dHBzOi8vZ2l0bGFiLmNvbS94
ZW4tcHJvamVjdC9wZW9wbGUvbHVjYWZhbmNlbGx1L3hlbi8tL2NvbW1pdHMvcjgyX3JlYmFzZWQ/
cmVmX3R5cGU9aGVhZHMsDQpidXQgaXQgZG9lc27igJl0IHN1cHBvcnQgZG9tYWluIGNyZWF0aW9u
IGJ5IHRoZSB0b29sc3RhY2ssIG9ubHkgYnkgRG9tMGxlc3MuDQoNCkZvciB0aGUgZGVmaW5lcywg
c2hvdWxkIEkgaGF2ZSBzb21ldGhpbmcgaW4gdGhlIGZpbGUgeGVuL3hlbi9pbmNsdWRlL3B1Ymxp
Yy9hcmNoLWFybS5oIGxpa2UgdGhpczoNCg0KI2RlZmluZSBYRU5fRE9NQ1RMX0NPTkZJR19BUk1f
VjhSX0VMMV9NU0FfUE1TQSAgICAgIDANCiNkZWZpbmUgWEVOX0RPTUNUTF9DT05GSUdfQVJNX1Y4
Ul9FTDFfTVNBX1ZNU0EgICAgICAxDQoNCkFuZCBjaGVjayB0aGUgdmFsdWUgb2YgY29uZmlnLT5h
cmNoLnY4cl9lbDFfbXNhIGFnYWluc3QgdGhlbSBpbiBhcmNoX3Nhbml0aXNlX2RvbWFpbl9jb25m
aWc/DQoNCkNoZWVycywNCkx1Y2ENCg0K


From xen-devel-bounces@lists.xenproject.org Thu Apr 09 07:52:31 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 09 Apr 2026 07:52:31 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1276738.1562057 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wAkBj-0002Tr-F1; Thu, 09 Apr 2026 07:52:31 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1276738.1562057; Thu, 09 Apr 2026 07:52: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 1wAkBj-0002Tj-AG; Thu, 09 Apr 2026 07:52:31 +0000
Received: by outflank-mailman (input) for mailman id 1276738;
 Thu, 09 Apr 2026 07:52:30 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <roger.pau@citrix.com>) id 1wAkBh-0002Tb-Q8
 for xen-devel@lists.xenproject.org; Thu, 09 Apr 2026 07:52:30 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wAkBh-000KXH-5p
 for xen-devel@lists.xenproject.org; Thu, 09 Apr 2026 09:52:29 +0200
Received: from [10.42.69.10] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <roger.pau@citrix.com>)
 id 69d75ab7-e002-0a2a0a5209dd-0a2a450ae7d0-22
 for <xen-devel@lists.xenproject.org>; Thu, 09 Apr 2026 09:52:29 +0200
Received: from [52.101.56.61]
 (helo=BN1PR04CU002.outbound.protection.outlook.com)
 by tlsNG-4011c0.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.0)
 (envelope-from <roger.pau@citrix.com>)
 id 69d75abb-ee98-0a2a450a0019-3465383db269-3
 for <xen-devel@lists.xenproject.org>; Thu, 09 Apr 2026 09:52:28 +0200
Received: from CH7PR03MB7860.namprd03.prod.outlook.com (2603:10b6:610:24e::14)
 by SJ0PR03MB6221.namprd03.prod.outlook.com (2603:10b6:a03:3ab::17)
 with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9769.42; Thu, 9 Apr
 2026 07:52:25 +0000
Received: from CH7PR03MB7860.namprd03.prod.outlook.com
 ([fe80::f5ba:35df:1c9f:b343]) by CH7PR03MB7860.namprd03.prod.outlook.com
 ([fe80::f5ba:35df:1c9f:b343%4]) with mapi id 15.20.9769.014; Thu, 9 Apr 2026
 07:52: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=M1V4Qbgqix8rfr4w6A67NI8tZHFyr9aF+1AtKqJx04jsPv6xn+6+8tH+fDkI6uooQ6H0Uz5NAvL11jrEXKweUKXgo3AH6G3GvU0SdgxNSMSK97aVDqsv4NeoK6AStORfQBhFlnEGbdXSp0TgI7tGGnpde3sz8t6DXy3u0gk/rSNSWA74FVEYw4WxDwqxe541uoll3vCbMPxRfo75jDzdhygghZL29jkc5Z4gdo/vYhjhksfcwsDKioCY7CkSHJGjBFtcC5EW1JlKiCZoeApzXia5q1GpGWMXE2q17EPH+4xVYvRQYIUcgUAZJINfzzOAo/MesI6fm9OBiGqktX2kkA==
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com;
 s=arcselector10001;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1;
 bh=/cAl1/K0W7o6SLMZDfrL1uSCh+QCcLnxQSrjxPegdRY=;
 b=ojJG3n/i6RMNj0Yn5j4n3sAhr8J1H5az3Fe5W1noybHt0kYZaS5RhoTGSuuG1QmPz6bDAwiZsOW+jJBTTMb7iR5xhrIqMPrYtqr9FqwhH3HkjE+4+WnaoQuWKDdeYam1S91Ihu+RQMfOGjqtK41YarWc5VMjsQyFSsKcL86XA7H0zAvmmbSHR4FvVhxcGrGW3Yc4MJ2Z1sK9riF8fUd8qXUHYTBmYPlOnwAJEwigIzqdOaObUFg+WaD1ShNxkrO8e6ftViIbDY+iXAo0Nfi6y65rlCC9TwVM3cqbmFar3jkI7q+0y/d9wH5qOODM5Wa/jSOXEa6P0tW1MrW5cbQHZw==
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=/cAl1/K0W7o6SLMZDfrL1uSCh+QCcLnxQSrjxPegdRY=;
 b=vJ6L4EabEQeZdWtvJI0gCE7ZshB4iKWZlBzGHyoWMSSamEJ7dHhmwhp4b/MOz4Tgwv4BLxWfqDntvXFIC0tGxVV7rxzf7EWUlA4zCuZC4tseObjNZIXptj76StFUScF8R556BsofMK+V47R1a4dR908HmFM4f9OAGpSfwNAEsNg=
Authentication-Results: dkim=none (message not signed)
 header.d=none;dmarc=none action=none header.from=citrix.com;
Date: Thu, 9 Apr 2026 09:52:18 +0200
From: Roger Pau =?utf-8?B?TW9ubsOp?= <roger.pau@citrix.com>
To: Jan Beulich <jbeulich@suse.com>
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>,
	Alistair Francis <alistair.francis@wdc.com>,
	Connor Davis <connojdavis@gmail.com>,
	Oleksii Kurochko <oleksii.kurochko@gmail.com>,
	Bertrand Marquis <bertrand.marquis@arm.com>,
	Volodymyr Babchuk <volodymyr_babchuk@epam.com>
Subject: Re: [PATCH v2 1/2] make ioremap_attr() common
Message-ID: <addasqowkczVjsE4@macbook.local>
References: <145299a0-b25c-4612-82c6-9401a2f88ad2@suse.com>
 <72526f3a-726a-4a1e-8d80-1a336175c1af@suse.com>
Content-Type: text/plain; charset=utf-8
Content-Disposition: inline
Content-Transfer-Encoding: 8bit
In-Reply-To: <72526f3a-726a-4a1e-8d80-1a336175c1af@suse.com>
X-ClientProxiedBy: MR1P264CA0194.FRAP264.PROD.OUTLOOK.COM
 (2603:10a6:501:57::9) To BY1PR03MB7875.namprd03.prod.outlook.com
 (2603:10b6:a03:5b1::10)
MIME-Version: 1.0
X-MS-PublicTrafficType: Email
X-MS-TrafficTypeDiagnostic: CH7PR03MB7860:EE_|SJ0PR03MB6221:EE_
X-MS-Office365-Filtering-Correlation-Id: 3ca98d2f-8971-4231-9966-08de960cefa3
X-MS-Exchange-SenderADCheck: 1
X-MS-Exchange-AntiSpam-Relay: 0
X-Microsoft-Antispam:
	BCL:0;ARA:13230040|1800799024|366016|376014|7416014|56012099003|18002099003|22082099003;
X-Microsoft-Antispam-Message-Info:
	HTkKnLeRqlFi9Mpo51yw7h1+3cF+yG4J3IfB61wWYgPnKKA+epOibrgUjTP1kdCHOH4S8yjoq/seaC7y8I3cWxhYstWR7mm76+qLbFJ7rk4g6K5gGXBJDqtDYVZcia5RdvNUlOWMUxtMx0j5F1gieNLz+eQA8/yLWZ8ECUMysmawYog9Oi5DciEP8bLDHBH+QcH3sPO/A1S5S1Cq0pj6cxLOX3tNOd9QOzNVvWYao20Ym/5Cbws5ZK4Yc7A8E+GLAl86CiuOBfs0dy8r7SMgLwfOM/4GwWzgd5RbHvVttD1IWuqxPxfm/3jDDeJT/oTzohtNVfRsNBNUe1R/UvC9G06XY3L/LJnc2agVV3nwjJbjAiF3V7wHeN0MTW+0bxVtFvw5HVyfEvoZaGy41J8US46C27Dk1wouAurHLKc0Z9z7kKxYAv/ZsrnaGS9JSV44FB3zsRVDBof/brV/8dA8ys3JTdmtVfatGVWd44AY2T0mhN0mX4x0Z7QwW/30ornm9bnjSyTYMqGVxSIJeAqu8blKBGXc1Ix33uzQ00P9Zh2MsqW6FbkSbNrpIYZIqB89yB/UJVoAr2wxmqPOpscxvzNyt6EvRREFcL1uBly3JC2U9EelkCUCaR2raGBxgOwt7kMC4wvU9S3/mwA6tKY/C921A1E50q4zwvNHdcU4hEUomBu1aFQc22gRMJnVw9o7TERB/kQ/J/i1H+OZPDUV6r68Kw5Q76qfKprOpS746GA=
X-Forefront-Antispam-Report:
	CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:CH7PR03MB7860.namprd03.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(1800799024)(366016)(376014)(7416014)(56012099003)(18002099003)(22082099003);DIR:OUT;SFP:1101;
X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1
X-MS-Exchange-AntiSpam-MessageData-0:
	=?utf-8?B?MlI3MU9OOWIwNDlVNUZaeHl2YlphanJ2TzNJd3V5allhc0M1RUFtaWhHeCtL?=
 =?utf-8?B?bzhUNXk5STVNOGVqaVlNbitzbUs2elFLZGZld3lUNDFNZ2NlYlJRbkFtSXho?=
 =?utf-8?B?RTQ3T1M4QXpBOHd0UUZpSXlZRm1DajlXdXZjV2Z4cG1KbFNpcHhISG4yYkJa?=
 =?utf-8?B?bU90clZoakFiblp0ZUVUQTcwaXo5ckFEZmhEVmxPbCsyWXdTWFZFbHJjYjJF?=
 =?utf-8?B?Z09kMVhmNk03R1VuYzA0dDRzMmo0YVE0MWRBRHdJWEUyL0dOWElIb0V4b3lz?=
 =?utf-8?B?eDBLOGJhajRmd09BMjRzc29FbDhJZCttRzFQb1hibGFtbkJrcFo1OW5KRnNO?=
 =?utf-8?B?alZLUVU3UzZ0WXB0U0pkZ1FkQXlrMDk0dWZxZjF4SnNnODRqTFRvNVNBQmp4?=
 =?utf-8?B?NXNSWXpIVVVoNlV5NTdRRHJkQmZPY1RDSTFmdVBsL01LcEJvR3pBNjd2SzlN?=
 =?utf-8?B?d0dLZ2hQQ0JxZHlXZVU3TDd3S0dzQy9Oam4rQzRvSFRzZ3NRNnU3M2NFekcw?=
 =?utf-8?B?ZlE0NEhVWFVFaXMrd2QzTTI5bzY2SXRmNlNMNEdtL2J0YnBqZzg4U3ZYQUh3?=
 =?utf-8?B?Yk5VVCtCR0phWWx0NW93czdXWVVzZG56bUVJcUN1dnJFWGswbTkwUEZNaS8w?=
 =?utf-8?B?c3ZkbnlKVUJpZkxYUGpySFdPZmJ0VkhldTlrOTlDeVdwTGNYZ3RmSGtma3o4?=
 =?utf-8?B?YnR1VFZCbHVJS2M5empYanQrM21WRHhXQkQzTksvRG54d29nUkp0RWp6YU9B?=
 =?utf-8?B?ell4YS9OS09TMEhEdnptQzZ3TS9EL2JoNXM2eGZ1UmlvYXk5NGFQSUNqekVo?=
 =?utf-8?B?enVaNWhsRzEreDU1c1gzd0RWRFNzdnZYZ0dLYmpObXB6OHZLMmNvRFZGTDM2?=
 =?utf-8?B?Z1d2c05tRGZ5aGtWSjNrK2cwSjVVZGk0bHAvd2o4NHRONERqWGxNR3FFdFhQ?=
 =?utf-8?B?aG8zNlgvOXhFT3Qzejl1OWU2eXNxek5zdlNtVGZWS1kxVGlGUUlzcUZmVkRN?=
 =?utf-8?B?SUJEbm9QeEptLzVWZUxnNDVWT1JwbTBWYm9sSUltRFBlcStiUnM0czJ4SVpL?=
 =?utf-8?B?VitUWTF4ekkxcE5vZjEzOG1odDZ1WnhqenFmN2hkTHdXU2NBaGt1OG9KWlNi?=
 =?utf-8?B?b1J3ODRUbWM2ZExicW5WaGNBMjBvTGJUclZhakM2Q1pDSjFWNFVTWVZSSTkx?=
 =?utf-8?B?Sy9RK1lFdUpMUXFCQ0lPWDloSkIrSVhkUHMxUi9FNFdkY0tIRDRicFppbWdl?=
 =?utf-8?B?SDdSTGkvTkxYMVR3M3lrbER6Vk41R3ZpMmJRWUZmUW9RTWxETVN2MWpNaHl2?=
 =?utf-8?B?RHVtRjd5UWpoK25OVkJLT0N2VThuRFdWQnJMdW1lcU9tZVNxVHgralVrYnls?=
 =?utf-8?B?QTlzTEQ4ZS9iRSs0bnpjdHZRUWg3QkUzcmRJOW5XUkxEdTlRTG1NWUlqVjVW?=
 =?utf-8?B?eU8wU1docHlGN29EWU93YW9nTlg4WHBGVWZyYjYyTlZTSnpaV2w0MFpxTTR6?=
 =?utf-8?B?ekJtYW1HOEhrM2ozaWVCRWxGcnY4UmF3TnhVTHcyUjNRTitFWUxUdHZIemVz?=
 =?utf-8?B?UkxJYi9mci94amlLTXBabnExQTdpS2NDTkZsVTNOd0htSjRraXN1TTRSODV4?=
 =?utf-8?B?cW5SL0MycHpvMFh4ZU5DTGs4aVo0dFJWUWlmM3JpUUZ1eWc5NGRHR1R3WUhX?=
 =?utf-8?B?bjRjeG5sWUhFVUtaRlFacHRBb3pZQ1lCQkdLN0Z4YzJleEcxNnQybFF2WlJK?=
 =?utf-8?B?Sm9ZNnJzNldaT3h6WW9LbkFabVQvSldHNmQ4Zkx5bDRDdVViZiszN1FxTzR6?=
 =?utf-8?B?aXBZUTVQMDNQZjNTRDBhRC8yUmcwQjkwN2hUM2doNkV1aWxZbHRXNDk3ZmF0?=
 =?utf-8?B?czJSY1FOUE4zRS96cThScis5OXdDNm00alBUOGIrYndKd01telhsTzRlZUdE?=
 =?utf-8?B?TFVjNktEWmc1dnVMaXY1Y2dOVElrV2NQam8wRVF2dytSVSswdm1hNmQ3NkV3?=
 =?utf-8?B?NlVzNVlBeFpTd0srSHBBU003ODdFb2VQMlFJY0ZHMUQyd2dTeDZsOWJTRzZJ?=
 =?utf-8?B?ZDNmU3p5MnFSS0VsWERCN1hFRlVveFhZQWQ0WExUR240SEZIM2RSMk1DcUx5?=
 =?utf-8?B?eWNZVTIza1hvQ3RRcENsMVRiT3E5Qk85NG5XMk9US1pOd3ZNNENRZFFxNVZm?=
 =?utf-8?B?dE1DS0NKWHU3YWZsamswanc3L3F4NUF1Rk53ajZ1bytvUDJuMVpDVXR2L1Z0?=
 =?utf-8?B?SE9aYU01L1VJendjendJZkVkeU9JM1pRVmU4dXB5b0RnektQWldzTUdNSDVh?=
 =?utf-8?B?bjJJdE4vSHpKTkxJRHgxL3NSWFQ5TmpHYTBhelFydEwvcE5wSHRCZz09?=
X-OriginatorOrg: citrix.com
X-MS-Exchange-CrossTenant-Network-Message-Id: 3ca98d2f-8971-4231-9966-08de960cefa3
X-MS-Exchange-CrossTenant-AuthSource: BY1PR03MB7875.namprd03.prod.outlook.com
X-MS-Exchange-CrossTenant-AuthAs: Internal
X-MS-Exchange-CrossTenant-OriginalArrivalTime: 09 Apr 2026 07:52:25.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: /okpbUO9mue5iouuOJTNCbNpNHTkUSjlYdSFQV+8M7S+C3ytN38SnrJ1UWhf9W7Tf9b6dfk+50Sz+ojU+Q1pWA==
X-MS-Exchange-Transport-CrossTenantHeadersStamped: SJ0PR03MB6221
X-purgate-ID: tlsNG-4011c0/1775721149-BFB450B1-11075B09/0/0
X-purgate-type: clean
X-purgate-size: 953

On Wed, Apr 08, 2026 at 02:07:23PM +0200, Jan Beulich wrote:
> This core backing function is uniform; what varies across architectures
> are the attributes passed and hence the wrappers around it. Yet of course
> extra checking or special handling may be needed per arch, so introduce a
> suitable hook.
> 
> Signed-off-by: Jan Beulich <jbeulich@suse.com>

Reviewed-by: Roger Pau Monné <roger.pau@citrix.com>

Just looked at the common and x86 bits, both LGTM.

> ---
> Declarations (or inline counterparts) aren't being moved around, to avoid
> the need to touch source files using the functions. Quite possibly they
> want to consistently go into xen/io.h and asm/io.h.
> 
> Of course ioremap.c could also go into lib/.

Maybe I'm missing the point, but what's the benefit for it to go into
lib/?  Is there any realistic scenario where we might have a
functional hypervisor build that doesn't require ioremap?

Thanks, Roger.


From xen-devel-bounces@lists.xenproject.org Thu Apr 09 07:54:25 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 09 Apr 2026 07:54:25 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1276748.1562065 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wAkDY-00032k-Ny; Thu, 09 Apr 2026 07:54:24 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1276748.1562065; Thu, 09 Apr 2026 07:54: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 1wAkDY-00032d-LL; Thu, 09 Apr 2026 07:54:24 +0000
Received: by outflank-mailman (input) for mailman id 1276748;
 Thu, 09 Apr 2026 07:54:23 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <jbeulich@suse.com>) id 1wAkDX-00032Q-A9
 for xen-devel@lists.xenproject.org; Thu, 09 Apr 2026 07:54:23 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wAkDW-00AFDC-MO
 for xen-devel@lists.xenproject.org; Thu, 09 Apr 2026 09:54:22 +0200
Received: from [10.42.69.8] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <jbeulich@suse.com>)
 id 69d75b28-2eae-0a2a0a5409dd-0a2a45088884-20
 for <xen-devel@lists.xenproject.org>; Thu, 09 Apr 2026 09:54:22 +0200
Received: from [209.85.128.44] (helo=mail-wm1-f44.google.com)
 by tlsNG-c1860d.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.0)
 (envelope-from <jbeulich@suse.com>)
 id 69d75b2e-fab6-0a2a45080019-d155802cacb0-3
 for <xen-devel@lists.xenproject.org>; Thu, 09 Apr 2026 09:54:22 +0200
Received: by mail-wm1-f44.google.com with SMTP id
 5b1f17b1804b1-488a14c31eeso4124665e9.0
 for <xen-devel@lists.xenproject.org>; Thu, 09 Apr 2026 00:54:22 -0700 (PDT)
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-488cd0b4829sm32801845e9.3.2026.04.09.00.54.21
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Thu, 09 Apr 2026 00:54:21 -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=google header.d=suse.com header.i="@suse.com" header.h="Content-Transfer-Encoding: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=1775721262; x=1776326062; darn=lists.xenproject.org;
        h=content-transfer-encoding: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;
        bh=cqQRtGw6ycdUYGge6A3hIwEg7V8pLTnNdK0y3Eae7bU=;
        b=czkcEDuB/ElGjrPSdPX8EtPIruSfPoyxbB1VhEJjealBt/BcDvx91A4Z1aI/qt5E3T
         Cz+yep8Nziod7LurLxRfLSNybtaN+PhMj6mI564RAPVjEIvXt6ZBaEwaHKJs0EEA8QW3
         ZtXU+SM+iosuzNvdMct1olgU0uGfTjuYYmC0tKl3hogsf0N6tVaIEssGziGU1gijrFdx
         w632IUReFAp5jM1/EaeHm6m21Nnb1+1mrUS5ctRwqc9tKxeQBpBuDI+cHCrUmrerx2RJ
         eeA3zN2McprGWuxRQF3Yk3yOHOsJegCFmtFUGA+2Stam6qnZr8lk0PCKuSBhpoKQjDwh
         dKYg==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20251104; t=1775721262; x=1776326062;
        h=content-transfer-encoding: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;
        bh=cqQRtGw6ycdUYGge6A3hIwEg7V8pLTnNdK0y3Eae7bU=;
        b=gfEMUg4DqDR9L47ZZOHLYinVqmPfLMAGJ4C3J7uT8sf7Iqr7yyydZp58zcnEW02PeM
         BerTq6KqwXZMPwZMazFRloN/TqaGV1I4sTDJ/w8V3XbBsOrc/7z+cp4ZkLPXbFLGNTHa
         3fYcSjL0ZYbAQluaTTeKiPN2mkTWEWrFH+crX03R28m2A6rFeF60rZJWuBMszB9NM1HY
         Nh5RkIoQ30NHgmhS6pQkyXbILb4bIk3AvYsfAk3zmJj6JM5pz4iqjESoiF4d4op+GrnF
         ChQgOUPSXIXqqNuSFXZTyE5GFKlcpCYUxWpvKeh7oC7prRNWQHsmZ2gLHqDNX4/w+TmD
         wtyA==
X-Gm-Message-State: AOJu0Yw7P9mcnqk0pKgk5obEZn7GT4Gv+zh4B4ZblT6ORyDVMdZc/Pfx
	TaSwP9Dm1eWO+04UyicionsEXlu52/eTQ3he7czeD9dO2eIJkG0Sj14HKsvh1hce8Q==
X-Gm-Gg: AeBDieun89+78j9e51ZzBMnXpq4VUYUSK5SnBBAG0TGSYaiesn+2sQ4CBvgocmDPG1t
	uEl28aTAr8kx0mSRWMXQDyaw50Ve/zIMXNkvch8aZUZ/C5wKw0RBD6H7bVBgbEsIOtNzWFyCczT
	D6c54xq7Pg5QGBuJ9QaTwsemtNIhQTTBIFYFDYHNQqyw9mdAiIMMKOrQ7wJeUSiH9NK7Rrdywzq
	JRvngyn8oUuOCGMwNwVqsde5AhaY4Ld2yK0qbb/IEwThfntWI0kOkOyEYvGgT2jV8+LLHgoIHBS
	qbZau0sYdPEPDtMs/KIN6E77QXkMzbHXxf85vlFT6sgc71ry05zFPYGb2YFf3DjnLKd88V9dETO
	h41Bn1LFg0CAJ0zwQVwbSSf90xHp9XTQxqzg7nCOyGbXPS/3rcyJermmyhgHpERi3X6IsWnsF/E
	uwci/PXli/uTl1VgaisWtklGg4U92RO8ctSGzJPm4/iahL6z+KPg96pTZuyB7nyfwwOavehVPHo
	MevclV3bzvVEck=
X-Received: by 2002:a05:600c:5292:b0:485:2a85:e5ec with SMTP id 5b1f17b1804b1-488996e0ce0mr357321395e9.2.1775721261836;
        Thu, 09 Apr 2026 00:54:21 -0700 (PDT)
Message-ID: <357c0692-1ed9-4bda-ae9a-729153d7cd93@suse.com>
Date: Thu, 9 Apr 2026 09:54:19 +0200
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH v2 1/2] make ioremap_attr() common
To: Luca Fancellu <Luca.Fancellu@arm.com>
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.pau@citrix.com>, Alistair Francis <alistair.francis@wdc.com>,
 Connor Davis <connojdavis@gmail.com>,
 Oleksii Kurochko <oleksii.kurochko@gmail.com>,
 Bertrand Marquis <Bertrand.Marquis@arm.com>,
 Volodymyr Babchuk <volodymyr_babchuk@epam.com>
References: <145299a0-b25c-4612-82c6-9401a2f88ad2@suse.com>
 <72526f3a-726a-4a1e-8d80-1a336175c1af@suse.com>
 <DF8F0F78-1DBA-41B9-8055-4CD3622F6929@arm.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: <DF8F0F78-1DBA-41B9-8055-4CD3622F6929@arm.com>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
X-purgate-ID: tlsNG-c1860d/1775721262-76151497-62D24157/0/0
X-purgate-type: clean
X-purgate-size: 2562

On 09.04.2026 09:26, Luca Fancellu wrote:
> Hi Jan,
> 
>> On 8 Apr 2026, at 13:07, Jan Beulich <jbeulich@suse.com> wrote:
>>
>> This core backing function is uniform; what varies across architectures
>> are the attributes passed and hence the wrappers around it. Yet of course
>> extra checking or special handling may be needed per arch, so introduce a
>> suitable hook.
>>
>> Signed-off-by: Jan Beulich <jbeulich@suse.com>
>> ---
>> Declarations (or inline counterparts) aren't being moved around, to avoid
>> the need to touch source files using the functions. Quite possibly they
>> want to consistently go into xen/io.h and asm/io.h.
>>
>> Of course ioremap.c could also go into lib/.
>>
>> For RISC-V the wrappers likely should become inline functions?
>>
>> PPC doesn't reference any of the functions just yet, so gets only a
>> declaration.
>>
>> For Arm, a TODO item is deliberately retained, yet seeing the use of
>> ioremap_wc() in domain building (which by itself is questionable, see next
>> patch) I wonder if that's even feasible as long as we don't have
>> memremap() or alike.
>> ---
>> v2: Use conditional operator in ioremap_attr()'s final return. Re-base and
>>    leverage that to simplify ioremap_attr() itself.
>>
>> --- a/xen/arch/arm/include/asm/io.h
>> +++ b/xen/arch/arm/include/asm/io.h
>> @@ -1,6 +1,8 @@
>> #ifndef _ASM_IO_H
>> #define _ASM_IO_H
>>
>> +#include <xen/mm-types.h>
>> +
>> #if defined(CONFIG_ARM_32)
>> # include <asm/arm32/io.h>
>> #elif defined(CONFIG_ARM_64)
>> @@ -9,6 +11,16 @@
>> # error "unknown ARM variant"
>> #endif
>>
>> +#ifdef CONFIG_MPU
>> +void __iomem *mpu_ioremap_attr(paddr_t start, size_t len, pte_attr_t flags);
>> +#define arch_ioremap_attr mpu_ioremap_attr
>> +#else
>> +/*
>> + * ioremap_attr() should only be used to remap device address ranges.
>> + * TODO: Add an arch hook to verify this assumption.
>> + */
>> +#endif
> 
> I find a bit strange to have an #else with only a comment, but to be fair I’m not sure where this
> comment can be put otherwise.

That's the issue: I don't want to lose the comment, but I also didn't
see a good place to put it. Having it here means it can be replaced by
a single patch hunk, whenever the TODO is going to be addressed.

> For the Arm and common part, I’ve also tested on Arm64 MMU, Arm32 MMU, Arm64 MPU on virtual platforms:
> 
> Reviewed-by: Luca Fancellu <luca.fancellu@arm.com> # arm, common
> Tested-by: Luca Fancellu <luca.fancellu@arm.com> # arm, common

Thanks.

Jan


From xen-devel-bounces@lists.xenproject.org Thu Apr 09 07:58:39 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 09 Apr 2026 07:58:39 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1276761.1562084 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wAkHY-0004Bd-Kn; Thu, 09 Apr 2026 07:58:32 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1276761.1562084; Thu, 09 Apr 2026 07:58: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 1wAkHY-0004BS-FN; Thu, 09 Apr 2026 07:58:32 +0000
Received: by outflank-mailman (input) for mailman id 1276761;
 Thu, 09 Apr 2026 07:58:31 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <jbeulich@suse.com>) id 1wAkHX-0004As-It
 for xen-devel@lists.xenproject.org; Thu, 09 Apr 2026 07:58:31 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wAkHW-004XTq-VN
 for xen-devel@lists.xenproject.org; Thu, 09 Apr 2026 09:58:30 +0200
Received: from [10.42.69.11] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <jbeulich@suse.com>)
 id 69d75c16-5cb7-0a2a0a5109dd-0a2a450bde08-42
 for <xen-devel@lists.xenproject.org>; Thu, 09 Apr 2026 09:58:30 +0200
Received: from [209.85.128.41] (helo=mail-wm1-f41.google.com)
 by tlsNG-42698a.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.0)
 (envelope-from <jbeulich@suse.com>)
 id 69d75c26-bca8-0a2a450b0019-d1558029e0ed-3
 for <xen-devel@lists.xenproject.org>; Thu, 09 Apr 2026 09:58:30 +0200
Received: by mail-wm1-f41.google.com with SMTP id
 5b1f17b1804b1-488b0e1b870so8282835e9.2
 for <xen-devel@lists.xenproject.org>; Thu, 09 Apr 2026 00:58:30 -0700 (PDT)
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-488ccfbbb7fsm29755565e9.0.2026.04.09.00.58.29
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Thu, 09 Apr 2026 00:58:30 -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=google header.d=suse.com header.i="@suse.com" header.h="Content-Transfer-Encoding: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=1775721510; x=1776326310; darn=lists.xenproject.org;
        h=content-transfer-encoding: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;
        bh=q1X4cwP96GL4JxfESvU/b8wpEscDe3VPj2Leviv73Gc=;
        b=Rx/Y2VAH28zQUuxi9UGK+D/Shd0k6f8Yh1W3al7ms3wd2wdTgCGf4QLD0sm5JxwN0h
         RwhJU8HW32IvC4Ef2DLiHTbQm4/43qMWp4uMF5BhBY232oR4gci+6vf7+BtSe1XBMF87
         Wpi6lQIflOwX8esf5Yd5TAm3EqBhNoaATL12NW7Op3a+WdOY7n1fA3dPTlTmBDWuMSfr
         5BjR5Hv8o6UsSZ7JBFXpSl6DvMb2GT6LznEHY6GDigt2lzO8kMPXAgnMg3l1jRWbpHaS
         xAaRg4cDyNzo5bpK1nGxPe0/RpV4vSwSVaovRyQHvYBWrCp+sb1MA3IgDtb8S692ZHpI
         V55g==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20251104; t=1775721510; x=1776326310;
        h=content-transfer-encoding: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;
        bh=q1X4cwP96GL4JxfESvU/b8wpEscDe3VPj2Leviv73Gc=;
        b=O+ylm+tFOqsQQwwKK0qZ/+/2L/vtw2QMmW7WHw/AauMFiClXkv7f2UHLn0xS0JaZzA
         d4boYA1eN+6ar0XXVLX9hbvi63d/8su2+XkiFZS0z1J5pxlYJFaKmed/9nJA86o6bGkQ
         nvoqQ/9EHJaM5OA4mhV+71o61EgN24pt8SWmhKfAQPFAd/ay8No56DWz0NW4i2koJrtz
         u84Vx7gwXhD51mLvVWtrmkBr8+HFqhO8mhFxdLYLAlCbrvZRDxBwKvrkzG0xdReKu72R
         iCMm7FP/gBYvkuYxcfHA9I6Fq6pfvCTll2FJjr5ee1Hi1VCcL8N+XfRQOMHO3DVc7fXG
         W2QA==
X-Gm-Message-State: AOJu0YxfRIXtMbDYrAr7Tvb0nm3dplQuVL/9OEoh7xcN2GmGRSrA84Rp
	ESFm4EEeivvYytAeSrsqF7Y0+Ug19Q2TFsaoR4+WSGQM3YxCMDBHgpzZqSLiXIupHw==
X-Gm-Gg: AeBDiet1PlbLKEfzBPrW+A4pNxDnyPWoN4z8iTNkwyI/H3iU9aC7LeyhFR7hpJTWC99
	A7cZp7I7vPxwRoDTrI2k4eFRyvIwHBzDCm1DzYckBekzVEDM4SrtkeS/RTcaL+rEIde9Bhh4/Iw
	dPHcFlJ48HHNpVQR8AoGRGRGW1JLIW31Gd0kry/M40BhLg5inTFTovHL1UEwomdxKqXQ5RgKhYw
	T4stx1qZ5J6lTjDimbUQvl1zS3we5r/DzmHDlB0S6XN2cA2JqpyjqSpBjeCKCDEzxuO/V0znf4k
	O0xtxHoqKraXaxFWUVEHFuotW5aWW2krL5RVomfo86S/mt1ujxRwA1zdiS1m9iqhYL6ncMgju02
	Be4lLr+QnZrsmynQtfsjgKWAqGhquoCU8xoo2aFqciv/Xzfm6VVx6E8b10c/LyiuYzKp995epG/
	1EvwbP9qsFk5yGAjL6yqqqAI4BLtwH1AVp5hfBTlHob01qylJHKexs7PV2R157ibMorrJ+eaJxg
	jyNQUbi+ZpnlX4=
X-Received: by 2002:a05:600c:5292:b0:488:8c89:cfaa with SMTP id 5b1f17b1804b1-488996b021fmr370621505e9.3.1775721510273;
        Thu, 09 Apr 2026 00:58:30 -0700 (PDT)
Message-ID: <17abf692-2b49-4f34-b09d-31e6a1741550@suse.com>
Date: Thu, 9 Apr 2026 09:58:28 +0200
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH v2 1/2] make ioremap_attr() common
To: =?UTF-8?Q?Roger_Pau_Monn=C3=A9?= <roger.pau@citrix.com>
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>,
 Alistair Francis <alistair.francis@wdc.com>,
 Connor Davis <connojdavis@gmail.com>,
 Oleksii Kurochko <oleksii.kurochko@gmail.com>,
 Bertrand Marquis <bertrand.marquis@arm.com>,
 Volodymyr Babchuk <volodymyr_babchuk@epam.com>
References: <145299a0-b25c-4612-82c6-9401a2f88ad2@suse.com>
 <72526f3a-726a-4a1e-8d80-1a336175c1af@suse.com>
 <addasqowkczVjsE4@macbook.local>
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: <addasqowkczVjsE4@macbook.local>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
X-purgate-ID: tlsNG-42698a/1775721510-EED4F2A1-8C47931F/0/0
X-purgate-type: clean
X-purgate-size: 1387

On 09.04.2026 09:52, Roger Pau Monné wrote:
> On Wed, Apr 08, 2026 at 02:07:23PM +0200, Jan Beulich wrote:
>> This core backing function is uniform; what varies across architectures
>> are the attributes passed and hence the wrappers around it. Yet of course
>> extra checking or special handling may be needed per arch, so introduce a
>> suitable hook.
>>
>> Signed-off-by: Jan Beulich <jbeulich@suse.com>
> 
> Reviewed-by: Roger Pau Monné <roger.pau@citrix.com>

Thanks.

> Just looked at the common and x86 bits, both LGTM.

I'll transcribe this into

Reviewed-by: Roger Pau Monné <roger.pau@citrix.com> # x86, common

>> ---
>> Declarations (or inline counterparts) aren't being moved around, to avoid
>> the need to touch source files using the functions. Quite possibly they
>> want to consistently go into xen/io.h and asm/io.h.
>>
>> Of course ioremap.c could also go into lib/.
> 
> Maybe I'm missing the point, but what's the benefit for it to go into
> lib/?  Is there any realistic scenario where we might have a
> functional hypervisor build that doesn't require ioremap?

Well, the difference likely is between "in principle" vs "in practice". In
principle a lot of code could really be regarded "library" like. In practice
whether to put code in lib/ really matters for stuff which may only be
needed in certain configurations.

Jan


From xen-devel-bounces@lists.xenproject.org Thu Apr 09 07:58:39 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 09 Apr 2026 07:58:39 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1276759.1562073 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wAkHR-0003wP-6W; Thu, 09 Apr 2026 07:58:25 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1276759.1562073; Thu, 09 Apr 2026 07:58: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 1wAkHR-0003wI-3m; Thu, 09 Apr 2026 07:58:25 +0000
Received: by outflank-mailman (input) for mailman id 1276759;
 Thu, 09 Apr 2026 07:58:23 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <Luca.Fancellu@arm.com>) id 1wAkHP-0003wC-JM
 for xen-devel@lists.xenproject.org; Thu, 09 Apr 2026 07:58:23 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wAkHO-00Ccg6-RM
 for xen-devel@lists.xenproject.org; Thu, 09 Apr 2026 09:58:22 +0200
Received: from [10.42.69.6] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <Luca.Fancellu@arm.com>)
 id 69d75c1c-e002-0a2a0a5209dd-0a2a450692ec-12
 for <xen-devel@lists.xenproject.org>; Thu, 09 Apr 2026 09:58:22 +0200
Received: from [52.101.83.57]
 (helo=GVXPR05CU001.outbound.protection.outlook.com)
 by tlsNG-16d1c6.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.0)
 (envelope-from <Luca.Fancellu@arm.com>)
 id 69d75c1e-0df0-0a2a45060019-34655339b7db-3
 for <xen-devel@lists.xenproject.org>; Thu, 09 Apr 2026 09:58:22 +0200
Received: from AS4P189CA0023.EURP189.PROD.OUTLOOK.COM (2603:10a6:20b:5db::11)
 by DB9PR08MB7770.eurprd08.prod.outlook.com (2603:10a6:10:396::12)
 with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9769.15; Thu, 9 Apr
 2026 07:58:17 +0000
Received: from AMS1EPF0000003F.eurprd04.prod.outlook.com
 (2603:10a6:20b:5db:cafe::f7) by AS4P189CA0023.outlook.office365.com
 (2603:10a6:20b:5db::11) with Microsoft SMTP Server (version=TLS1_3,
 cipher=TLS_AES_256_GCM_SHA384) id 15.20.9769.40 via Frontend Transport; Thu,
 9 Apr 2026 07:58:17 +0000
Received: from outbound-uk1.az.dlp.m.darktrace.com (4.158.2.129) by
 AMS1EPF0000003F.mail.protection.outlook.com (10.167.16.36) with Microsoft
 SMTP Server (version=TLS1_3, cipher=TLS_AES_256_GCM_SHA384) id 15.20.9769.17
 via Frontend Transport; Thu, 9 Apr 2026 07:58:17 +0000
Received: from DU2PR08MB7272.eurprd08.prod.outlook.com (2603:10a6:10:2d7::16)
 by AMBPR08MB11887.eurprd08.prod.outlook.com (2603:10a6:20b:75f::5)
 with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9769.17; Thu, 9 Apr
 2026 07:57:15 +0000
Received: from DU2PR08MB7272.eurprd08.prod.outlook.com
 ([fe80::5d34:206f:373:a323]) by DU2PR08MB7272.eurprd08.prod.outlook.com
 ([fe80::5d34:206f:373:a323%6]) with mapi id 15.20.9769.018; Thu, 9 Apr 2026
 07:57: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=arm.com header.i="@arm.com" header.h="From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck"; dkim=pass header.s=selector1 header.d=arm.com header.i="@arm.com" header.h="From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck"
ARC-Seal: i=2; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=pass;
 b=fsOvdA2D66fQXCncR9b2ExXhdQDlHqtQwI+5RxXV/vZ4gYcFuRIKQgvttGVLq3JDu6YtVXIo8RTYZj4STaFDcmx+dV71K2/IfaZo4aKX5cgilX+QHOr+s56Z2IhRgsJfWxsDQZV8PQVNrLdOUaXap1WqUJEtVMeST1kSQn/zgiXXRNfGRgxVGUwPr4snYx3f4OKTauOMfX4pwsDAAOgB2KZQcv7KTWtpvI65YkndvshHpd0tafrEscw+qPJ48NTTyD2Y0mrr4qiL6+h6i58Ujl2dX1uLsT8dhWO/ip6zF7dHsxxlwaOGkg7QLGyPFfiaQNue3iVNVYWTiiVrHhF4cw==
ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com;
 s=arcselector10001;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1;
 bh=b8fp1gfOA+2YBKEiqWeRSTQg4+XY/p8AK6BhfIMdXoc=;
 b=K/Q8evT2KdYlepRW3ZNC1TkKCKR4xhz0g/pRkct2uTYdUhxoFZiGGN7GLTlqvU686QA3DtN4DM4API6XjtkA01ABcjhITaeooKiQEL3lV1LbkAXM2RjCtu5Buw4mOFYeNYxa8uyjLyvZXVspE9hhi8DH1tooAQlvOPjMAhm7/xSepwyVW79iGXGqRVG3S1ggjs3VE+sRBn8uFYB5C5p4b3A1KzlXqe7wkXPFjmkYw/QdA2hoFS+f9KvojFMkgm4iYrHrvliP6YcUM2/BBMLZ+j28R07k+hXzAnW7tnCysAxnCcwfUJxuUq13bFN3tBF8tv/n4pzZPMB8LF383hl8GA==
ARC-Authentication-Results: i=2; mx.microsoft.com 1; spf=pass (sender ip is
 4.158.2.129) smtp.rcpttodomain=suse.com smtp.mailfrom=arm.com; dmarc=pass
 (p=none sp=none pct=100) action=none header.from=arm.com; dkim=pass
 (signature was verified) header.d=arm.com; arc=pass (0 oda=1 ltdi=1
 spf=[1,1,smtp.mailfrom=arm.com] dkim=[1,1,header.d=arm.com]
 dmarc=[1,1,header.from=arm.com])
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=arm.com; s=selector1;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck;
 bh=b8fp1gfOA+2YBKEiqWeRSTQg4+XY/p8AK6BhfIMdXoc=;
 b=mK3OcB6isEvjSlYoCcnBrkEmegsgkFvAM/w4OYL7ImYiPzl4Z+LocN5/dqPalqsT+4SraLByuor8lGyvUMofiSgRhH0Bvg30CCji4oIu+HiMK+yQAca5erGuNiu3a9LZI1qldxA0vX/uWRhLaJfb3Xga5XhtBkRM157WJ2q0H0A=
X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 4.158.2.129)
 smtp.mailfrom=arm.com; dkim=pass (signature was verified)
 header.d=arm.com;dmarc=pass action=none header.from=arm.com;
Received-SPF: Pass (protection.outlook.com: domain of arm.com designates
 4.158.2.129 as permitted sender) receiver=protection.outlook.com;
 client-ip=4.158.2.129; helo=outbound-uk1.az.dlp.m.darktrace.com; pr=C
ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none;
 b=gXYMGjmRd2r+7uAj1ZGl/o0tsKCrj1lyC9Kp3SiJYPUxr1OdyqQS6ex2srHBgHrtlGi0NMFGMX0EnTh+nLEqPBGjm3xZDvqSOnctnwKsCEMoqm3I+AzcK/jCqqGE0LRtz+fOHV8CSViPsVpGEBBZS4uO1H9zdQi2te4ZPqth5nrj6NeziYSw/Ln7/IjyycccP0o3PIcqA4MRcz184SUg7ggu+1QsMoGrzrAjj5q2ILlzudE/XNRbJVA3KrIXvilRBryFjh92iUckJDtbc3K4ALG1FHT/uydDIeBoPGXTKROvBSeGmic4FUY+ZQrgTFJyuS9+zU+MbyXLc8WwHQgJFg==
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com;
 s=arcselector10001;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1;
 bh=b8fp1gfOA+2YBKEiqWeRSTQg4+XY/p8AK6BhfIMdXoc=;
 b=B4tCu9jsDodEr6z6AJPBEEz3x1kihNWgwsCddHbYzWdnjo6GJR55kcgnrUuR9SsNz1l75MjTtD8cS5Gwsxa5A8LNvOny1UX3pjPjNZjAdsQYc6CxZZDagw10BXixMBy87PUSiIpd4znq1spjZFs5JA7ViEEv9QbdxOOPzaXzclTFBxh9aoJBCxK2gSoiBNbQ/h7bXIGAlGSmhSmEG+VCQOfQpMliL1KexRGYd9iGSz1oXSnBvlOj3EuXG0eMrxxC/Ihy+6YP1aGYxqASBqsuHfKg6wwqrT5WQeH3bfAqktkG4zfeYPAfCIXLz99QjM4R/bZKi/BRAZ+PNfj9eMzH8g==
ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass
 smtp.mailfrom=arm.com; dmarc=pass action=none header.from=arm.com; dkim=pass
 header.d=arm.com; arc=none
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=arm.com; s=selector1;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck;
 bh=b8fp1gfOA+2YBKEiqWeRSTQg4+XY/p8AK6BhfIMdXoc=;
 b=mK3OcB6isEvjSlYoCcnBrkEmegsgkFvAM/w4OYL7ImYiPzl4Z+LocN5/dqPalqsT+4SraLByuor8lGyvUMofiSgRhH0Bvg30CCji4oIu+HiMK+yQAca5erGuNiu3a9LZI1qldxA0vX/uWRhLaJfb3Xga5XhtBkRM157WJ2q0H0A=
From: Luca Fancellu <Luca.Fancellu@arm.com>
To: Jan Beulich <jbeulich@suse.com>
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>, Michal Orzel <michal.orzel@amd.com>,
	=?utf-8?B?Um9nZXIgUGF1IE1vbm7DqQ==?= <roger.pau@citrix.com>, Alistair Francis
	<alistair.francis@wdc.com>, Connor Davis <connojdavis@gmail.com>, Oleksii
 Kurochko <oleksii.kurochko@gmail.com>, Bertrand Marquis
	<Bertrand.Marquis@arm.com>, Volodymyr Babchuk <volodymyr_babchuk@epam.com>
Subject: Re: [PATCH v2 2/2] make ioremap_wc() x86 only (for the time being)
Thread-Topic: [PATCH v2 2/2] make ioremap_wc() x86 only (for the time being)
Thread-Index: AQHcx/ZoNwRbpuR1hESvXQYM/OEtSg==
Date: Thu, 9 Apr 2026 07:57:15 +0000
Message-ID: <664133F3-A65C-4005-A5B7-94F99CD693F4@arm.com>
References: <145299a0-b25c-4612-82c6-9401a2f88ad2@suse.com>
 <da4bf81d-7591-4f5d-8e0d-e6ed9ecb834e@suse.com>
In-Reply-To: <da4bf81d-7591-4f5d-8e0d-e6ed9ecb834e@suse.com>
Accept-Language: en-GB, en-US
Content-Language: en-US
X-MS-Has-Attach:
X-MS-TNEF-Correlator:
x-mailer: Apple Mail (2.3826.700.81.1.6)
Authentication-Results-Original: dkim=none (message not signed)
 header.d=none;dmarc=none action=none header.from=arm.com;
x-ms-traffictypediagnostic:
	DU2PR08MB7272:EE_|AMBPR08MB11887:EE_|AMS1EPF0000003F:EE_|DB9PR08MB7770:EE_
X-MS-Office365-Filtering-Correlation-Id: 6e7acde3-87f8-4239-b3b5-08de960dc294
x-checkrecipientrouted: true
nodisclaimer: true
X-MS-Exchange-SenderADCheck: 1
X-MS-Exchange-AntiSpam-Relay: 0
X-Microsoft-Antispam-Untrusted:
 BCL:0;ARA:13230040|366016|1800799024|7416014|376014|38070700021|18002099003|56012099003|22082099003;
X-Microsoft-Antispam-Message-Info-Original:
 kT/YKXHoXE88GrVPFnn03nwE7QqE/UuORW06PGlNNwHz6RIbVKGPb7SsrfbIj505zWr+KvDSmXsYxIfUg/ylDqhLu84P5n4xmKbj8CcfmdKQVsHVE3dgGrh0pKbqfaUcoq4IsNM191adD7WpJiCiYrI2HCF/n/9/Q7pAZGaXU/Ti2gs6VldGQRW65gXcseL7MQnbVkVXLVG50U13sMob19edmPfnNokU/qMS+VulJnIiNDonNbj3qwPGV/OUUWN12t/OOez/ZTs36zlUZVmgwnMkAs+L3Mofj22pFlFkxxeCzw6+Jov3giu/whzTIQrnRu7cWM6shEtMrKiCtLc+SaETcTzgbTMD2ScVbVg5rPOXJQcr1PwxCdQkjaHPvcPVhVVuTlAAVtYCkdNMFSQWDuHMsUILwQ81Isr3siwS9sHip5YXLMsw9vfSrCc2wYuIkETwJ7U8Rk7HU1sFLbU7gGlY84hFH8wkLF2mZutQwU2OduOOxBQruKUxvdXLyXPYEZMdWSv4rUV9iUKLlY7gz6vUEKSuoMClP00+h3vxOFW3g/6psI6YiKKLy0IAK3kMFpmmfDmZ/bGew7lHT2rSaJrPPP1w4V49ZHwfe8W/SVGboY3OkuVpR/0YK8GEy9dYAP4xcFjTLkSxYaY1usk7CfVyl8qgCI/jcoN9rQiwXp+Gg/5sDtloGR5zRFX07GAiY1V4tmMnIYitHB03fuM5yd0Tg8mDH4KHFnAJh+cMgXH5e1mJaoiskav6zc3fBcZVxHGM94ctOh3i9l7fK/rQEVYWFhOOP7nlcgusHueEYq8=
X-Forefront-Antispam-Report-Untrusted:
 CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:DU2PR08MB7272.eurprd08.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(366016)(1800799024)(7416014)(376014)(38070700021)(18002099003)(56012099003)(22082099003);DIR:OUT;SFP:1101;
Content-Type: text/plain; charset="utf-8"
Content-ID: <F3F719F16CB83A4DA35374DECCF8DA70@eurprd08.prod.outlook.com>
Content-Transfer-Encoding: base64
MIME-Version: 1.0
X-Exchange-RoutingPolicyChecked:
 p3i9GztgGnw6k9xmqOSgc0OaaklbEi3T902Vcz2g0soMH3CxtXmBXwI0VaSeezij6ZrHhOLgVWuneSWfJU+Af1sk9//sK1H0Wrx1YAXvuZYP1W4KT7HkmHeO5zSGqLN/kRIlYyUfxOroUdkb7ljzW2TfBn+XXE4ald4G2998U7Ydt5pbmzStnooEjbv/gHrmx8U+UYVQhdA6zEt9O/iWuz7XT1kU9mVW56QICeihGyiZbkZRoxxPhN1+V3KtrWrPOK6X8X2b4yarSUdcNM/+UD3mWGDF6d/ZBexgFH5aLR02teJRVglfBuuWZvIn0IqhJm6k/I7royEkEDakWwpiGg==
X-MS-Exchange-Transport-CrossTenantHeadersStamped: AMBPR08MB11887
X-EOPAttributedMessage: 0
X-MS-Exchange-Transport-CrossTenantHeadersStripped:
 AMS1EPF0000003F.eurprd04.prod.outlook.com
X-MS-PublicTrafficType: Email
X-MS-Office365-Filtering-Correlation-Id-Prvs:
	287532db-ce4c-414e-ee7c-08de960d9d84
X-Microsoft-Antispam:
	BCL:0;ARA:13230040|82310400026|36860700016|376014|7416014|14060799003|1800799024|35042699022|56012099003|22082099003|18002099003;
X-Microsoft-Antispam-Message-Info:
	ODJlhN3pN/wX64MMKmbVCscc1QdxJcswMEW5uhZ0AI0cW/55W/ZPZ9R8Ql4DqMb+ayEl5ylZcNBcUd7j8HC2VCukt/jst1hw4R75VcDRX0+lsuYJIixTykp1AMtPLl7kKbviU8AyRr4NHInlpbDRJhXik3U56TmnGNK/Z0KMdjlvlJGLwoC91cQr8PSyeV5D+3Awwbf27oIu1JBnlSffqqAbtI0eor72chVvuVoHRZ4pJ4QjTdymiEse/4p3SvZWhDg639nJmwa9dalJ/AYa9HEpmp49HF+b44pTxgN3BNu4OUG4S+k4FcORkLUuRSZbkOsZNZW8784CupMXEZLtHxI8GMVuanECrxLm2bJ5gCjWWQQ4e2IaEtZt8EPWmImnkCKB/BxZSKVy6iXefacJIZyluVstUtcYXZDGbZZbDUClkrGcCCq/FGLIhf79O7ZzgY/ZD50LUxoHfpXJm3GOx93qMmjDbJGvOzI/+hVenWvDem5EG/8vZV8BxZ0VzOhKdWT7Iqw4j+U7lbefLyWcPi7k4LF1y/85Z/P5a8E8LnCV98+DKKsDJcTooZdo2fDnaPu5wy8gFmAGgeKvC+J2onV9wSoU/4++6fbdounkKmb88JMvGmmEvbfwQ0Y7QGLabQ+yby/Y06TNOp0wZbJT8kKTqIxUYENXPpTGC/fuDZTk4UyUeVnPGjJzXW6cnVJu6JTwypJinIknn8PQvS9JBoIZ7Rq7i74/F97DGHm5Hy59r9ujSSs/562WNhRVRez+2ZnDn8MNKG1CqE4cTMT3uQ==
X-Forefront-Antispam-Report:
	CIP:4.158.2.129;CTRY:GB;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:outbound-uk1.az.dlp.m.darktrace.com;PTR:InfoDomainNonexistent;CAT:NONE;SFS:(13230040)(82310400026)(36860700016)(376014)(7416014)(14060799003)(1800799024)(35042699022)(56012099003)(22082099003)(18002099003);DIR:OUT;SFP:1101;
X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1
X-MS-Exchange-AntiSpam-MessageData-0:
	6I4POG6TjNobee2+mLlFfg/umvpsvgP6fwMLIlQhdgBS5WjUzy4o1oWJLMKN0j1Eb6mcPczfZP99m9yaKLWGC+QflEwkl9qEUAVewkDxnVUWCvK0IZyAxlqFM0fd1y0A4AUcAn5TuiCEa2r5OktuhXXqibXxGGN25pw6Vvi2HAeKGWqRjyUghJikA3exORWctAm2ssVtKU/JwGDLRgqS+64/4A0wcLHz+7ZF9Pt8UVgaOOPGe1/W9oOpVBhszcA6l8uZ9giwfvfQP0AHFTf27dcTqtznwLpzJWrd0uXWwP58G2bWZ4mwhrKeEVY20kvvb6LEGz8FDk2h1Rhm7aCtEYU74CsYfr2/igh14RaV0eD8uU7asytpd53SQlinQx9tZnLU8VNHXrwxqt9JQRhBatJ+ymq4cY4ih+CNxr14ddSQMPI1hmKTWvSEsh9/OLiL
X-OriginatorOrg: arm.com
X-MS-Exchange-CrossTenant-OriginalArrivalTime: 09 Apr 2026 07:58:17.5521
 (UTC)
X-MS-Exchange-CrossTenant-Network-Message-Id: 6e7acde3-87f8-4239-b3b5-08de960dc294
X-MS-Exchange-CrossTenant-Id: f34e5979-57d9-4aaa-ad4d-b122a662184d
X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=f34e5979-57d9-4aaa-ad4d-b122a662184d;Ip=[4.158.2.129];Helo=[outbound-uk1.az.dlp.m.darktrace.com]
X-MS-Exchange-CrossTenant-AuthSource:
	AMS1EPF0000003F.eurprd04.prod.outlook.com
X-MS-Exchange-CrossTenant-AuthAs: Anonymous
X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem
X-MS-Exchange-Transport-CrossTenantHeadersStamped: DB9PR08MB7770
X-purgate-ID: tlsNG-16d1c6/1775721502-5FD3C3D8-96A8565A/0/0
X-purgate-type: clean
X-purgate-size: 510

SGkgSmFuLA0KDQpSZXZpZXdlZCB0aGUgYXJtIGFuZCBjb21tb24gcGFydCwgdGVzdGVkIG9uIGFy
bTY0IG1tdSwgYXJtMzIgbW11LCBhcm02NCBtcHU6DQoNClJldmlld2VkLWJ5OiBMdWNhIEZhbmNl
bGx1IDxsdWNhLmZhbmNlbGx1QGFybS5jb20+ICMgYXJtLCBjb21tb24NClRlc3RlZC1ieTogTHVj
YSBGYW5jZWxsdSA8bHVjYS5mYW5jZWxsdUBhcm0uY29tPiAjIGFybSwgY29tbW9uDQoNClAuUy4g
SeKAmW0gZmlnaHRpbmcgYWdhaW5zdCB0aGUgc3BhbSBmaWx0ZXIgdG8gc2VuZCB0aGlzLCBoZW5j
ZSBJ4oCZdmUgZGVsZXRlZCB0aGUgd2hvbGUgY29kZSBwYXRjaCwNCmxldOKAmXMgc2VlIGlmIGl0
IHdvcmtzLi4uDQoNCkNoZWVycywNCkx1Y2ENCg0K


From xen-devel-bounces@lists.xenproject.org Thu Apr 09 08:01:31 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 09 Apr 2026 08:01:31 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1276786.1562092 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wAkKQ-0006ah-7x; Thu, 09 Apr 2026 08:01:30 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1276786.1562092; Thu, 09 Apr 2026 08: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 1wAkKQ-0006aa-4V; Thu, 09 Apr 2026 08:01:30 +0000
Received: by outflank-mailman (input) for mailman id 1276786;
 Thu, 09 Apr 2026 08:01:28 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92) id 1wAkKO-0006aT-Cz
 for xen-devel@lists.xenproject.org; Thu, 09 Apr 2026 08:01:28 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wAkKN-008dr7-89
 for xen-devel@lists.xenproject.org; Thu, 09 Apr 2026 10:01:27 +0200
Received: from [10.42.69.12] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <jbeulich@suse.com>)
 id 69d75cd2-bab6-0a2a0a5309dd-0a2a450cac9e-30
 for <xen-devel@lists.xenproject.org>; Thu, 09 Apr 2026 10:01:27 +0200
Received: from [209.85.221.51] (helo=mail-wr1-f51.google.com)
 by tlsNG-d25034.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.0)
 (envelope-from <jbeulich@suse.com>)
 id 69d75cd6-f40c-0a2a450c0019-d155dd33e9af-3
 for <xen-devel@lists.xenproject.org>; Thu, 09 Apr 2026 10:01:26 +0200
Received: by mail-wr1-f51.google.com with SMTP id
 ffacd0b85a97d-43b95e5b3afso324460f8f.3
 for <xen-devel@lists.xenproject.org>; Thu, 09 Apr 2026 01:01:26 -0700 (PDT)
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-43d1e4d29bbsm67047676f8f.21.2026.04.09.01.01.25
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Thu, 09 Apr 2026 01:01:25 -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=google header.d=suse.com header.i="@suse.com" header.h="Content-Transfer-Encoding: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=1775721686; x=1776326486; darn=lists.xenproject.org;
        h=content-transfer-encoding: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;
        bh=Ls4VkKrCyhgbFAgAAGHo8Ibiq+8snbVkxZ+xz9PhIfI=;
        b=bIzacTbGk+UmbdFO89xsio2t6nU0fvzo9pB0/2Ba9UcRFCjmJVcvIoVEuVaZKh8d+S
         ZiOZNfTgmTrEEFTIQWMWgfNa+sYG+qlkvvveT8oW30b820hfS1Qol1IURWIOKtuN0Nao
         ZVKsmSMWzY/9c5C8zXJHt58SmL7w23IcdKPPRv7+n90AErZgZ51qufu+8fn9K7bpMKjZ
         eb/wrEkv/er8hufg/pQmf9Wpip0FAtF6mzcZFIROg6kRIkW9fraadRZqfj0cxQ+Rkvj1
         IfTsTjfAeEtA4Glns86XauEB05MYOeG3NPxw3ctocr2Ngh2vltoPfwVhvxNlahV1TNUq
         uqeA==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20251104; t=1775721686; x=1776326486;
        h=content-transfer-encoding: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;
        bh=Ls4VkKrCyhgbFAgAAGHo8Ibiq+8snbVkxZ+xz9PhIfI=;
        b=ATfbH+eZBu3fyB/yoktZq8XnP9a/J+0zQTT31NDYW22cZpBj1RLqgNcZftXB1V0UTp
         iDqtAovsKgUpNTIsFBeshYBN0wKhcfdu47Ez+uPyz4d1N2gMXvgksWNhuEp3FFtOBKrW
         wpxBBla+upxSh4+ZOC1xeRkciQ+hJPMy0vPsTIh+EkqpQXFjLKKuamtecjj1dHgT0X+h
         J69Einsr4E6oVLH47J1Y4ofcza7ONFkJrKcBnZGXK1y2SbEoSCgICm3Krb87POi1x5pQ
         EXhUx6s/gUjp2U+pr/7oihYmi4gwPVAJTKhtTdmjzdrNnfP4vZTSudyq1CwWeNOfeG4K
         LrHw==
X-Gm-Message-State: AOJu0Yw+rLFWa7QGtCGGh2PSpvBMNvKsz8u0qo7oF4A8r7NoNLj6Mbk+
	DINOZHNJ2vjXXqsnUr10QoSBc8pfIgqrAMt4nId6tj1/UqBKbmDg3aEfqBffeLgU5ncdsPZNPsR
	ujGiqkg==
X-Gm-Gg: AeBDiev747fTScrAEtVsQylYfmNqLQDA4M6Ir/yNuawtKx8xiaodi9nKquQC89deFMJ
	FnrSTRkY0WoRyx19goeF+uiFDOfWwDdadu9MAeCmd/W3iBMQuHSrFASB99BIP5UVyuthw/peWkb
	kCV2oCxjTiTeKWNrPaSTmVXfCavN/gSDIXUiviSjNBV6LRkMS5vSVWFl82Mi9hqeQa2cptKxVxZ
	D3GeueCO/zooATDMUzX/bx827bvj+dSOzSVVdD5YNtxohfmrpY7S7XofT/LORp1DQQLUQ3E9Gz3
	mSyAGAPwpvi2LdeRxJrD0z5nfbKnVR3Q/QTAFCfbJ6tG1u/gU6cm+tUhbjUqTiqRKYEIPbmAAJf
	D+SyaSiYM9g/i/ThOXvY4MUrKndnSEg2YH+OGKRoBrxOl4cmILXEHlyvRCaZDae9WtVPvTvjDoO
	3ayCTqwRC3Pj4hVUnz6B+DTTCwHKOUylZpTjmTLR+Bwk0EUhYyQZfXnzJTmLaogvt4ADXpOkCwi
	wvrqlIa/xWQYkA=
X-Received: by 2002:a05:6000:24c8:b0:43c:f4df:9247 with SMTP id ffacd0b85a97d-43d2930037emr34859255f8f.51.1775721686306;
        Thu, 09 Apr 2026 01:01:26 -0700 (PDT)
Message-ID: <da248a6e-1b4e-49b9-8cd2-151582db9369@suse.com>
Date: Thu, 9 Apr 2026 10:01:24 +0200
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH v2 2/2] make ioremap_wc() x86 only (for the time being)
To: Luca Fancellu <Luca.Fancellu@arm.com>
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>,
 Michal Orzel <michal.orzel@amd.com>, =?UTF-8?Q?Roger_Pau_Monn=C3=A9?=
 <roger.pau@citrix.com>, Alistair Francis <alistair.francis@wdc.com>,
 Connor Davis <connojdavis@gmail.com>,
 Oleksii Kurochko <oleksii.kurochko@gmail.com>,
 Bertrand Marquis <Bertrand.Marquis@arm.com>,
 Volodymyr Babchuk <volodymyr_babchuk@epam.com>
References: <145299a0-b25c-4612-82c6-9401a2f88ad2@suse.com>
 <da4bf81d-7591-4f5d-8e0d-e6ed9ecb834e@suse.com>
 <4291DA48-87D9-491B-83C6-51CCACC0FFE7@arm.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: <4291DA48-87D9-491B-83C6-51CCACC0FFE7@arm.com>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 7bit
X-purgate-ID: tlsNG-d25034/1775721686-FF746A3D-0A910852/10/73395122804
X-purgate-type: spam
X-purgate-size: 1136

On 09.04.2026 09:52, Luca Fancellu wrote:
>> On 8 Apr 2026, at 13:09, Jan Beulich <jbeulich@suse.com> wrote:
>>
>> Its use in domain building is questionable: Already at the point both uses
>> were introduced, ioremap_cache() existed. I can't see why kernel and
>> initrd would need mapping WC, when at the same time other similar mappings
>> (in common/device-tree/) are done WB.
>>
>> With those uses replaced, neither Arm nor RISC-V have a need for the
>> function anymore.
>>
>> Amends: d8972aa9645f ("xen/arm: kernel: Rework kernel_zimage_load to use the generic copy helper")
>> Amends: bb7e6d565d92 ("xen/arm: domain_build: Rework initrd_load to use the generic copy helper")
>> Signed-off-by: Jan Beulich <jbeulich@suse.com>
>> Reviewed-by: Oleksii Kurochko <oleksii.kurochko@gmail.com>
> 
> 
> Reviewed the arm and common part, tested on arm64 mmu, arm32 mmu, arm64 mpu:
> 
> Reviewed-by: Luca Fancellu <luca.fancellu@arm.com>
> Tested-by: Luca Fancellu <luca.fancellu@arm.com>

Thanks, but I guess I'll use the form you sent earlier, with the restricted tags
(matching what you say separately).

Jan


From xen-devel-bounces@lists.xenproject.org Thu Apr 09 08:09:32 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 09 Apr 2026 08:09:32 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1276796.1562100 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wAkS6-0007Zr-VS; Thu, 09 Apr 2026 08:09:26 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1276796.1562100; Thu, 09 Apr 2026 08:09: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 1wAkS6-0007Zk-Rk; Thu, 09 Apr 2026 08:09:26 +0000
Received: by outflank-mailman (input) for mailman id 1276796;
 Thu, 09 Apr 2026 08:09:25 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <roger.pau@citrix.com>) id 1wAkS5-0007Yt-DE
 for xen-devel@lists.xenproject.org; Thu, 09 Apr 2026 08:09:25 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wAkS4-000gJf-KE
 for xen-devel@lists.xenproject.org; Thu, 09 Apr 2026 10:09:24 +0200
Received: from [10.42.69.5] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <roger.pau@citrix.com>)
 id 69d75eaf-e002-0a2a0a5209dd-0a2a4505de66-26
 for <xen-devel@lists.xenproject.org>; Thu, 09 Apr 2026 10:09:24 +0200
Received: from [52.101.46.59]
 (helo=CO1PR03CU002.outbound.protection.outlook.com)
 by tlsNG-c201ff.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.0)
 (envelope-from <roger.pau@citrix.com>)
 id 69d75eb2-3760-0a2a45050019-34652e3be9da-4
 for <xen-devel@lists.xenproject.org>; Thu, 09 Apr 2026 10:09:24 +0200
Received: from CH7PR03MB7860.namprd03.prod.outlook.com (2603:10b6:610:24e::14)
 by DS0PR03MB7653.namprd03.prod.outlook.com (2603:10b6:8:1f6::18) with
 Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9769.20; Thu, 9 Apr
 2026 08:09:21 +0000
Received: from CH7PR03MB7860.namprd03.prod.outlook.com
 ([fe80::f5ba:35df:1c9f:b343]) by CH7PR03MB7860.namprd03.prod.outlook.com
 ([fe80::f5ba:35df:1c9f:b343%4]) with mapi id 15.20.9769.014; Thu, 9 Apr 2026
 08:09: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=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=IVDEqEqriwoihwW8jPkx6Grl6xH4lsUtSmRnRlCazO/6q9IM2lB9xunPAvKdikkXzuRBWJyDqRxFls59fRw3RtjK6tolR29C0AWFE0IjBn9Gsmc1FI/YxgNABhcIFA3Kf2AYvvBgGNjNsdwJv9Yc5ggLmOvG52/bmv3L+AYhsTyvYEUxINP8Ye4Let6FUoRBHl0DePuH3IHjq/Z3sCnsb9XXEXvl967zzoJAoAepPzy73Oed97dox6+lUSVj2KySWno8l1u9MFc2n52V/upHcO0cYdbBecXP2NGxA5RODnJw5a55TUoIEjgRO/2Z+6J+iX7sAoEqrtXTe7gDFLKiOg==
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com;
 s=arcselector10001;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1;
 bh=cl4In8M/dS3DGCtPmp6KkKZvPtzKXfkMeLwqaqijPDM=;
 b=ZhH1odhu3YfTvZ4c3BHMBmpN0HVsVGV4bcXH3JC0qrpUNw7COp2MVrX+Z0oDrkPGjZtKjwH3gSeAv01W5n200mPwJvNk7ii3GGrqGuOSe/iLg1U8YzihuERWkEzTJZv83eGedFJOvtcUPT71N+hl+EGoMrSnaRtzLh43gt8LF9+w7ZySQOVdjzKWXQ9XJN4ojsCx8UmfaYXDAFySacFFxFfv2YZhwMVqJ8JZ+QbqNtlzpSY+6bGH57J5k+nNIbU/7TUSSNVDpQORv4bxG1Cx0vfNlW6GrDtK9eJurddhWhqYr9eXamoSS39UMI0eeMqhmXNTskXOlecwNA8mqgr86g==
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=cl4In8M/dS3DGCtPmp6KkKZvPtzKXfkMeLwqaqijPDM=;
 b=ByUbBd6IX0fYTszsuYDSERPXCpPqAlGZ4ni3oFadhSNCzXshGPZL2tbe5OQhdYZr1bPNLV3tfQQ0s/pxyYUNz3GtohkUt8xJ9rdzB1CXJfabz585cSLAuGfbAoyeWLYjOcxTX+n4Fx1hDqZ9MdiFRuQEDVrsaMvF80g5H4F6oIk=
Authentication-Results: dkim=none (message not signed)
 header.d=none;dmarc=none action=none header.from=citrix.com;
Date: Thu, 9 Apr 2026 10:09:18 +0200
From: Roger Pau =?utf-8?B?TW9ubsOp?= <roger.pau@citrix.com>
To: Ross Lagerwall <ross.lagerwall@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>,
	Stefano Stabellini <sstabellini@kernel.org>
Subject: Re: [PATCH v1 2/3] xen/smp: Rewrite on_selected_cpus() to be lockless
Message-ID: <addergb4PBVIAhQg@macbook.local>
References: <20260401163521.3603665-1-ross.lagerwall@citrix.com>
 <20260401163521.3603665-3-ross.lagerwall@citrix.com>
Content-Type: text/plain; charset=utf-8
Content-Disposition: inline
In-Reply-To: <20260401163521.3603665-3-ross.lagerwall@citrix.com>
X-ClientProxiedBy: BN9PR03CA0156.namprd03.prod.outlook.com
 (2603:10b6:408:f4::11) To CH7PR03MB7860.namprd03.prod.outlook.com
 (2603:10b6:610:24e::14)
MIME-Version: 1.0
X-MS-PublicTrafficType: Email
X-MS-TrafficTypeDiagnostic: CH7PR03MB7860:EE_|DS0PR03MB7653:EE_
X-MS-Office365-Filtering-Correlation-Id: 3038ee71-8426-4fe4-152e-08de960f4da7
X-MS-Exchange-SenderADCheck: 1
X-MS-Exchange-AntiSpam-Relay: 0
X-Microsoft-Antispam:
	BCL:0;ARA:13230040|376014|366016|1800799024|56012099003|22082099003|18002099003;
X-Microsoft-Antispam-Message-Info:
	85X/zcWqI22xtBgjjgOf+lgXcwGlqxNjfdZufYyIinwEwfYhXNQAVC5uidvSyD8P+wUKD1h3HYRce6kQMMLI8qgbK1/MrM+BedEnky3neuTVsbgIPJ6gCO5/8zoQN1TuCxt6BV5xaZVw4eIZgp6fo9TOF+2cSmPtSM5DK8vrQzOXfsfzULqQBBuvnLflPJ8UKyMnyxhv0tON4qRYBnt4tUOJJmajnRMug70a6R/dclhF72TxMOzyQJPeP9jsfrxOcojxY8JLLwrIHKnGKWlKpd+hq9/xTumoHfWkCK3z44yTgtSA5fiywKug+exBH0Y/3ssDCiLxhYinsnX13/WhmOAuArWWYUfn+dHlrALHTsQR7gojHQVLMIptVNUQ3mrZw9xfvjGvJ6eTV9zt1U6KOaTzc1trN0z4zXvh1okrQvJLG9OwoZ0BTL5o6/oH9WDGv10ICPI4Q5Ucnc/d7fNgfI4qvU6V1V17qFcxYkO95/y6xPrP0RsztOixrnq8JfTJP7zdGWHDN8vm1qF5fe2yrYxsGL4QfziYlBAobtQHDKMof2oj6a0nQbrCd1LkX/GXOXcDqS1JoGGFwmePGemfqA8drm53oMrYhCidVb6Cu3rn6oCbcP/hH5glGC+j84Nd1hxkldCWFU59J3SD52+rewzzdwyv7L4y4rTu2Ni1kpeSEYY4mOe6RnuyqkuL7jiL66GtWXNzHGCCPWnePEBcqZtHRYR3FMpSx7r3Mp2iBcY=
X-Forefront-Antispam-Report:
	CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:CH7PR03MB7860.namprd03.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(376014)(366016)(1800799024)(56012099003)(22082099003)(18002099003);DIR:OUT;SFP:1101;
X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1
X-MS-Exchange-AntiSpam-MessageData-0:
	=?utf-8?B?bHhMZFQ5YVk2Ly9iVTIvcVpQMEhlMklRRnJUQnl0bXlaZ1A3NDlUMDFHWFFK?=
 =?utf-8?B?SzVWa1pRNmNYdW1naVJMaG8vQTFrTVExSFl5TStuK3hNTDNGU2xhUkFBV01i?=
 =?utf-8?B?ZHNZVUpEQ1ltRDMyb3RCOUQrckhiRVQrTFZnZkROZEhLSjF4alpTaWZCUXU2?=
 =?utf-8?B?RUlTSnVUaGhDSEs0NnJXdlJ6N0RZaDlLRzQ1RDRIR21WLzQxMlViSStPbGZm?=
 =?utf-8?B?b0x6SHBpczdsRU94cXZKQnFWVDcxZGoyY0Q3Z0ZJdGFVcWFCR2J6SkJuTGxn?=
 =?utf-8?B?NzhXZEZRWis3OTVTakJRWFlLeW5iVUlXSExUSzFiOW9oajVxTVl3Tm1jcUpJ?=
 =?utf-8?B?SEJWVDg3OFhwUUJxeXBVTGJqY1YrN0kzcHBUTlNCR0kvNE9XaS9JcmtFMzZ1?=
 =?utf-8?B?UHB1VmxCYldyOTVqWi8rRC9VMFdERWd5UnVTaGM3Q08weUh3WFB4cGZQR0V2?=
 =?utf-8?B?eGFBT3R4dzlDT00zOEFPdzdOMkEvOXI4UzNxZEtjMDN3SGdqYTNGTGJYWjlL?=
 =?utf-8?B?dEtBVjVCQTQ5TlV2UjJXNzF1clB1OW5Fb0tTa3ZMeTJ3OXg2YXZZaWZrUngy?=
 =?utf-8?B?ejhMN1NmeGI3MEw1ekdTbnU3SzdZU1kwL0JueXRYNUpWSUs5cWRzYi9md3dY?=
 =?utf-8?B?N1hZR2JRMjdwYlpPZGhZdVFob0drT2F6akZBekVPM05IelJpVzJpQWxBNDBn?=
 =?utf-8?B?YTRKQUdYSXZ5VDdETUlxdTNIL2JSWTR4UDNhMXJTRTVKeHNLNHlyaVJzSkNE?=
 =?utf-8?B?RW5tS3hyTzBrb2x1QTNlanNtQ2JDWE5TVDc4QXNreEdlOVcyM0tMMmhZK1hW?=
 =?utf-8?B?SVk0MGh5R2wzYTZFdjJ3alEwbWZERXpaeEozcXE3Z0s2M3NBU2ttVk96ZjRR?=
 =?utf-8?B?TjNaQzc0eGVzdFVFRFhyc3ZsT0hFY21IMXJCQll2alVCdUtnbFVLMWptREJx?=
 =?utf-8?B?Vkp4MzI1OFRRTDhlS0c0a2N5aTVFdDJTc21RUFQxUWVxbWtMekdhWWgyVzlD?=
 =?utf-8?B?allQWW5OMGJ5N3pYdXRNcG9qMzR6aTNYV1RWNGtUTmhzc09KSXFWUnZHOFdy?=
 =?utf-8?B?NXA4MFU1VUxoMmpIZklhbml0RW5GTGhaL3c0UzRhZlJRNEhCM2ROUUNSRVdp?=
 =?utf-8?B?Y1d1cVdvdmMrZ3NZT3NUSHRuZkdRcVFhdTFzbksxUmZWeXFFWjdvNWZjV3Ew?=
 =?utf-8?B?d1h6YWhCYmNBTWxEUENpRnc2NXVoR0pnODRyV3N0ZU1SUkhzT29Md2NjSnpP?=
 =?utf-8?B?R2JISG4zb1JWL2srcHdpT0IrdHZ5RGxxRmJPSnZEcE1XeER5bGFMWGNwb1U1?=
 =?utf-8?B?eXJ3a0FIVFZBY1E0RVBkdVBodnVCcjdvM2hySndZZHFnNnhQdlprMmtUVXJO?=
 =?utf-8?B?ampzdzdvbGI4aEt2UERKbit5NzVBeGgxcjN4bXM3MmJmYXFDcTUxQlFuL2cr?=
 =?utf-8?B?MGRFN2xLVWxzU3JFU2o3Wml2b08wVVRVNDJ6aUYwQ04xUnpaL01ZU2Q5WHpx?=
 =?utf-8?B?RE5CR3A2UHk3SzR2MEFDNSt6Qk5jdExXY2RoSUFlcDBPOXliSGpuVGx3VUxk?=
 =?utf-8?B?YUJiMmQzNDd6Y0tqVk5QMTlZSDlabjM0UG1GQUhJLys4bnhzMlRMa09Ma05G?=
 =?utf-8?B?OVN0VlViWm0waDVGRU1PNk9xNU5tMUNxOHQ1NFJkR1d6dGI1QXlmNnVLeWIr?=
 =?utf-8?B?UUJFeS9iVjBhZHFjSXpnY2JaYXpiVU1Jb0xhUGF3RVJqVFlMWTRMWnVHZVFT?=
 =?utf-8?B?RGg5c2RyYlhYdUdsQldnTkZhelFiN3RQd1YvSS91YUthcEZqZmtLb3JsL1lW?=
 =?utf-8?B?MEMyZzZMOEN2YW1BUVhYOEtRTEtoTU5SaFRrY214SDRpM0VqUFlueWhJZndE?=
 =?utf-8?B?NTE3Nk4zYm5vU3Rsd0I3cjdERzduc0JCcCtKWlB1MWtaMjM1MlI5V0JHOUgr?=
 =?utf-8?B?bTVNTFVKYnpNVUVHVjZONmpNTUhIcytISzVmY056UU1zMUJiUW4weDRhWnhN?=
 =?utf-8?B?dEg3djMyUkZLU1hGT3VyeURRaDdPYXp3RkNjT1VvbWxkODVnUjI3Z0JCTFE1?=
 =?utf-8?B?V2Y3eU9zQzhOZ3huRXpoa0dTYWZ3eGEzZlUvaGR5UjlsaTNYaFRxRytJSEIw?=
 =?utf-8?B?WTlEN0RGVnp5T3F1SXMzVHZ4T00zbkxaazQvOURZTlZBbUNqWGpMRm8yaDEw?=
 =?utf-8?B?WFRTSmNZSHU2ZXQwd0lCNksxYi90bm1FcndtejRzWTZvbjhXODZqQ2QySVdw?=
 =?utf-8?B?cDJCTXZzSU9DamlZZlRETC9JVFBZYzg2SlNZYThtWWY5YWJmc1c3T1JwVzZ2?=
 =?utf-8?B?Qm94Yk9OQW1yc3lqcFdFRWthaHRTT1dQcE1GWkRvSXFEOWtmOVVSUT09?=
X-OriginatorOrg: citrix.com
X-MS-Exchange-CrossTenant-Network-Message-Id: 3038ee71-8426-4fe4-152e-08de960f4da7
X-MS-Exchange-CrossTenant-AuthSource: CH7PR03MB7860.namprd03.prod.outlook.com
X-MS-Exchange-CrossTenant-AuthAs: Internal
X-MS-Exchange-CrossTenant-OriginalArrivalTime: 09 Apr 2026 08:09:20.7570
 (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: nNrkXacb6qahvdRMooyaH4rCmc8pCUDisvV1c8ppVIgG0YynTmGa5wBU/q39sWL0HrXJMpuZuF/IyLuuW7JBPQ==
X-MS-Exchange-Transport-CrossTenantHeadersStamped: DS0PR03MB7653
X-purgate-ID: tlsNG-c201ff/1775722164-3979296F-ACFD7DA9/0/0
X-purgate-type: clean
X-purgate-size: 1320

On Wed, Apr 01, 2026 at 05:35:20PM +0100, Ross Lagerwall wrote:
> on_selected_cpus() holds a global lock even if the function is to be
> called on non-overlapping CPUs. This is a scalability bottleneck so to
> avoid that:
> 
> 1. Remove the global lock.
> 2. Make call_data_struct per-CPU.
> 3. Track which CPUs are currently running on_selected_cpus() using a
>    global CPU mask. This tells CPUs running the interrupt which per-CPU
>    call_data_structs to look at.
> 
> Since the call data is now per-CPU, skip waiting for CPUs to "check in"
> for async calls. Instead, delay it until the next time
> on_selected_cpus() is called by which point there should be nothing to
> wait for.

One concern I have about this approach is loosing the fairness that
the usage of the spin lock provided.  Without the spinlock, and with
the usage of for_each_cpu ( i, &tasks ) to process any pending tasks,
it means the tasks from lower CPUs will always get preference over
the tasks from higher CPUs, regardless of when they have been
queued.

Ideally we need some kind of mechanism that can do a FIFO style
processing of the pending tasks, otherwise we are introducing a
performance penalty to high CPU IDs compared to low ones, and that's
likely to get worse as systems get bigger.

Thanks, Roger.


From xen-devel-bounces@lists.xenproject.org Thu Apr 09 08:13:14 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 09 Apr 2026 08:13:14 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1276804.1562110 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wAkVl-0000do-Cz; Thu, 09 Apr 2026 08:13:13 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1276804.1562110; Thu, 09 Apr 2026 08:13: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 1wAkVl-0000dh-AK; Thu, 09 Apr 2026 08:13:13 +0000
Received: by outflank-mailman (input) for mailman id 1276804;
 Thu, 09 Apr 2026 08:13:12 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <roger.pau@citrix.com>) id 1wAkVk-0000db-8Q
 for xen-devel@lists.xenproject.org; Thu, 09 Apr 2026 08:13:12 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wAkVj-000QdP-4s
 for xen-devel@lists.xenproject.org; Thu, 09 Apr 2026 10:13:11 +0200
Received: from [10.42.69.11] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <roger.pau@citrix.com>)
 id 69d75f8b-2eae-0a2a0a5409dd-0a2a450bd062-44
 for <xen-devel@lists.xenproject.org>; Thu, 09 Apr 2026 10:13:11 +0200
Received: from [40.107.209.50]
 (helo=PH8PR06CU001.outbound.protection.outlook.com)
 by tlsNG-42698a.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.0)
 (envelope-from <roger.pau@citrix.com>)
 id 69d75f95-bca8-0a2a450b0019-286bd132f713-3
 for <xen-devel@lists.xenproject.org>; Thu, 09 Apr 2026 10:13:10 +0200
Received: from CH7PR03MB7860.namprd03.prod.outlook.com (2603:10b6:610:24e::14)
 by SA1PR03MB7122.namprd03.prod.outlook.com (2603:10b6:806:338::17)
 with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9769.18; Thu, 9 Apr
 2026 08:13:05 +0000
Received: from CH7PR03MB7860.namprd03.prod.outlook.com
 ([fe80::f5ba:35df:1c9f:b343]) by CH7PR03MB7860.namprd03.prod.outlook.com
 ([fe80::f5ba:35df:1c9f:b343%4]) with mapi id 15.20.9769.014; Thu, 9 Apr 2026
 08:13: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=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=UHofA7o4lKouj7X1ySxBCzeFgeCXsApTCQohxmvY9Vmb9thkqfI/nsBTAKUqq5WgDGltUGS2afPSNrv8rD1piWwSNcbrMC/SJm7rf1JY7yNgwHc5gV/AZ1+8A3ICkcU78VXLAJco2eEQrK71wvMGhbBbV9zjFpmfr8MFx2f3vPIrq3VCmb6OrZJnQOA1IHD0QKQNJZN3wLw4Kr/KOHFiHYigUucvtaJwvXxuCINzdEpOtmCuAjvAK2cb5yH21gUMwHmFFe4ktk9YR53d6/bKdm3BzVHnSqPa8dyaK8YvEklTF83GuFFOn73DRdxCNmjOBHoZiv2c7krin0LAcbEjJw==
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com;
 s=arcselector10001;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1;
 bh=LaoX9jGnhXkmSCpuDAE3cL2moGYtgRYSFZ+piolDyUA=;
 b=Ev6iEZaD+MWA3xzkpss1RT4/SYCSV6q/mJUsPJTqaI8xEd/5JDB0dVhv6YMdBKrvySmX0Lo8bw5RlavsOVsISeRAullcr7uNWBcSjQF1qzC+PX7o2CYKeFMOzpAoenqX01XXGWC+So0L/9/ZHufBO51zhqT8hSuK/UI/BKICGV2yXn6++2oKGfDZExEb7TNbmVttQmnShKQhpy+9469HrK4JHt3tN2lkywlSpnnnTR8mLCfFHdpeiWSyQ16D1LaU0HQHwB7n60lh6T6w1V88cR3nKwlSF4ilh5lOZjW2rCxS+HSmSM4Bosvqv9gPsJwh6yYsA92bEjqij/UvALeWeQ==
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=LaoX9jGnhXkmSCpuDAE3cL2moGYtgRYSFZ+piolDyUA=;
 b=Lny4cL3odP1Kw2d1sKYGv3SS2EZ+ZiYZaHAMrWUQRzIIOD7dxXlDoM1qEFW92P9FTc9rxd5wSFsH+luYuQrexQp+6g1KWUsOqvDn4yq2Q3Clcw39Ti90UxG9ZgROsfpi1Xn7rkYRMsKBCR7n/KwrG9oJEEU3xXquXpq/BBxKYcw=
Authentication-Results: dkim=none (message not signed)
 header.d=none;dmarc=none action=none header.from=citrix.com;
Date: Thu, 9 Apr 2026 10:13:02 +0200
From: Roger Pau =?utf-8?B?TW9ubsOp?= <roger.pau@citrix.com>
To: Andrew Cooper <andrew.cooper3@citrix.com>
Cc: Ross Lagerwall <ross.lagerwall@citrix.com>,
	Jan Beulich <jbeulich@suse.com>,
	Anthony PERARD <anthony.perard@vates.tech>,
	Michal Orzel <michal.orzel@amd.com>, Julien Grall <julien@xen.org>,
	Stefano Stabellini <sstabellini@kernel.org>,
	xen-devel@lists.xenproject.org
Subject: Re: [PATCH v1 0/3] Lockless SMP function call and TLB flushing
Message-ID: <addfjkfzYtmm_flx@macbook.local>
References: <20260401163521.3603665-1-ross.lagerwall@citrix.com>
 <94b2e444-844a-4d34-9c9f-de0b9e6e23b1@suse.com>
 <17c4e7b4-297a-4bf9-9160-659723d15e48@citrix.com>
 <b0f721a9-42ba-4e71-8250-83fcfcec2313@suse.com>
 <834d60b8-fec5-42ce-a6ab-a26ea9452ed2@citrix.com>
 <8b754178-94c8-448f-9ec2-26b6a23565b8@citrix.com>
Content-Type: text/plain; charset=utf-8
Content-Disposition: inline
Content-Transfer-Encoding: 8bit
In-Reply-To: <8b754178-94c8-448f-9ec2-26b6a23565b8@citrix.com>
X-ClientProxiedBy: BN9P223CA0015.NAMP223.PROD.OUTLOOK.COM
 (2603:10b6:408:10b::20) To CH7PR03MB7860.namprd03.prod.outlook.com
 (2603:10b6:610:24e::14)
MIME-Version: 1.0
X-MS-PublicTrafficType: Email
X-MS-TrafficTypeDiagnostic: CH7PR03MB7860:EE_|SA1PR03MB7122:EE_
X-MS-Office365-Filtering-Correlation-Id: 5fbbc370-b968-4fe4-c1c0-08de960fd350
X-MS-Exchange-SenderADCheck: 1
X-MS-Exchange-AntiSpam-Relay: 0
X-Microsoft-Antispam:
	BCL:0;ARA:13230040|366016|1800799024|376014|22082099003|18002099003|56012099003;
X-Microsoft-Antispam-Message-Info:
	fTxlOSeC6C/kU1/A8fpC4Nwtacf6Qbm3Kso5kBEMXIOPhjTbP6suf/sKT6Q7ddRq9NAy+0/J1OoumPIzZKPZiLU6fJW4vi//LlSHcDeKpSrfd8p9dUAFp+ttgI86KWKsAYY9Av87gJkHvEPRs0RJVTFAPlAe+ahUQ/audnC8v2QP8KOMa8JSAqWbgqj5R4KRVDjMrsGL0gmHsVUl5qju7h68NpcFjLKfBAl5DcZaZuuutTw7SbqDKvXJZroINcCmT9sl44A7FTq51FXfvTymhVABSEBhHfkIfjCRsxSQm3gSMGBNXtq20LptZZ0rz81NRy4CEFEyBT5Tby1pwLTCaNorgJmIhwI93quK+tMgSetVQ1wiGqzsS/QzGlmBIyW2zM/3tw+kf6jytfo8WOxth+Frvur2VBMvnnVv9CQITwBszWmP9ReJ53jqRADwyQLKtqB81OTu9u1gtadciDqr00xxWN3MaUFQ6oMhcGcZaxfh9jPO3pI2yF+/i5VNacAaONx1pHcPuzMegynFqI+DTYC/aaeAVTJhDK6Hs01S1yft+140TmTTjusHA5uoOphv8M2VsAaNuBsxc1IqCkUfdD3r2b6TjMtLAPanctmz0O9M1cyJUDGcAC0MriRqgeal9mFXTkF0+lvxjZlcA+1W9Jq+2uGVzb45Hd5PV9UaclHrlA0VMs2i4Cga9sZLQ8HjqNhP2awycMt8usGNnyEtHX4Aed0YteWwNLtwDQ/W8wY=
X-Forefront-Antispam-Report:
	CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:CH7PR03MB7860.namprd03.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(366016)(1800799024)(376014)(22082099003)(18002099003)(56012099003);DIR:OUT;SFP:1101;
X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1
X-MS-Exchange-AntiSpam-MessageData-0:
	=?utf-8?B?QlZob09EYVFMb1RoaVVpVU9zakxnaFRIV1hnaHBaWm55VDRjbVhRRUgvSGdJ?=
 =?utf-8?B?UFdjUm5BalZGSVFhL2VKTk1kZW5nOTh3cEJZVVR5QjFod01DL0w0V00yK3Bw?=
 =?utf-8?B?clV2WFFucWlGRm1uKzZaeWVUU3dhdUJ4L0pxYlE0QklmbE9yVkRSUVYwcTZr?=
 =?utf-8?B?dStVd2lRS040bFZSaFJDbFlQNU43bGtxWDBRQTR5MlBWcmFVaHNHUzBQVHIz?=
 =?utf-8?B?SzJQcWExWWNKOXI5UW5HUVF6eFFTNkdjeUxtemc4OVlScGRlOVB6aDJ3aHph?=
 =?utf-8?B?dGovaXl4Skh4VkR5c1AvemQyTnpwdjhlZnFVUDNuaXA0YUo1bGpETlROaVRu?=
 =?utf-8?B?bFUyTTRTbkp3bG9WekUvMkFORkZEeHVGNzVCVFpmbjJINUN4U3hxSDZsZWFa?=
 =?utf-8?B?ZXBONjVIZ05OUTJMK3RDL3NpN3VqdlNXR1krL09EQmdMZDErVjU3clE3NXo0?=
 =?utf-8?B?aEUrN1crTFBjYjRtajgxRko0Y29BRzlzQnJxV1VoMk02dDBKemJZVjBGNms1?=
 =?utf-8?B?eW1uR2VCU1F2OGE0aGJzLzFELy9YNzY2R3lHTDQvZzVOdGNZTUhuNis4WWxi?=
 =?utf-8?B?cnhMdTJ4bHEwS3pjdmFpNUZBNU9FOUl4b1J1T3FiNXF1d2E1bDQ5SDM3SDc1?=
 =?utf-8?B?dXZIMlZPWUhFdXpEZXpWL2k1VS8yeVY1dWw2N2U2ZUtOOTJoeVZGWDFpMDZH?=
 =?utf-8?B?aGh4OGNNT1VJS05BMU42eXpPMUx0OTJmSWNZamd5YlNEV1FRYmtsMUI5VDFx?=
 =?utf-8?B?WDMrQzErMGhPT092bHVVY3V2MGx2dHVodGp1eit0cmNWZGVpUXhpNk1YT3JG?=
 =?utf-8?B?bUZnK0ttVTJYbGNrb2drNWVmbUxhTVp2QWZCSjI3SUtQaFdMbWg3V2g4R3Nr?=
 =?utf-8?B?bk4rK2E1TVFza0JHT0FtVEUzTkJQYnRvcFYvaWFLaU5mTUlxMEF0T0t4cUxN?=
 =?utf-8?B?MXRhcys4RGh5NFVteUJTOThNVUlpeERPbkY5S0ZaRHJWYUszM04rN3VEaEky?=
 =?utf-8?B?MytWYXp6TGIxR3J3NElqVGxDZUtRWDdPNlluaDNLT2MyVWE1NDl2cG8zT0dq?=
 =?utf-8?B?SHNaK2x5aEozd2JoMGtHSDFTNEorSGNaQll4aDZIZjZJV08wazZJOGNCOWpU?=
 =?utf-8?B?Q090b2tTdGhFSFpwSjJES0Z5Q21TQ3RHODZQdWZMZnZnVmxSQ2c3M3FwdGVQ?=
 =?utf-8?B?ejl3TjJSOFdPQ2xFNnVPYWJCZHEvc1ZaY3RLZXJ3b21laTlwMTdOcTQ0Qm91?=
 =?utf-8?B?UjdCVmVsL1ZYclFLY1lmRC84NWRJRnVPTWlOYkxaTFNxYjVBZUVScDNCaTNo?=
 =?utf-8?B?WE9VRERhMXJ4L1VHcW1KdG0wUll3TUhNeHdyZGJyU1hRNUw1QWgzVVJmS3gw?=
 =?utf-8?B?ZktsZXl0bkVtL1NLbURFdDJkU3NsalBQUklETWsyMFJ3VUVjRmRuVDJMRTR1?=
 =?utf-8?B?ZkdTbXJ5ZE9wQnVVQ2RnRlpQZ0w1bjRmajFQa3hyNFFGZG1NY3ZkelNHc2tQ?=
 =?utf-8?B?aUtGR2cxd3JpRmVWL0ozT2ZuZjBZcmoxQ1RWM0NJcUZlaTFtWmdWdUp3dE85?=
 =?utf-8?B?bnlTQnVTN2MzZTNSNy9rTm1HekhsMFZlbk5vWHB4NW5KUVJZVjNoaWJmaEVW?=
 =?utf-8?B?VS9CTTFuTUV0VzYrMm5kNmhxYWh2RE5WcWN4aDdBVFZ6cCs2TkphY2VMVWVC?=
 =?utf-8?B?YmRFTzhUUVRsTDNteUdKSFBIWG1jWTcrWEl6WEM4LzBYOGRzNElib2U0SFJJ?=
 =?utf-8?B?Q25DTjgxS3I0eU9ZVUVYbTZJVmRKUDZRa2ltb241QnZ0amI4M1crc0YyVnBt?=
 =?utf-8?B?MjJnM3RoSHdvU0IyMW5VWi9UNDBHaENKWHJLcjViQmE5STFyOU1xSFk3TXlO?=
 =?utf-8?B?TnRPUXZZVEN5alI5cXF1c2FXS2owZDg1ZDVmd3NGR296bnVOQmVaVkZ4V0tD?=
 =?utf-8?B?LytIVGErb2hMM0JxcWJUaUttWmdXTUdFOTc3WS9wcjdtV1JXVGZ3S1R1dWdv?=
 =?utf-8?B?bU01cnBRMlg0d20zK2hHZTZYekJXcElXZnZqRlJaYVNQZEhla0pNTFVhQXlT?=
 =?utf-8?B?REM2N1hBK051QXlJWkZLVFdyQTBoYks2dEJ0OHdCNzYreUN5cDl6dHlhazJS?=
 =?utf-8?B?amZWcHc4SVVpUWkvVS9aT3ZmRm9RYzNLQnpTZXp4RVV5aGtWWlFwc0QzWDUz?=
 =?utf-8?B?YWFqaU9hczR3aUd5cGJhS25qWGluY2cxMW9RYmQ3emVOeEdqcUtaajdjUDRD?=
 =?utf-8?B?RnJUY0xlMWVDeDJNZ0t4N1BidzQwQndNVTlnYW9IR2llbXFDWWNsMVJhWXBQ?=
 =?utf-8?B?S2dlbDBiVENuMTlyYTF0cDcyUTJvQWpWTDliUjJaZjZ4ZkhhYnE5QT09?=
X-OriginatorOrg: citrix.com
X-MS-Exchange-CrossTenant-Network-Message-Id: 5fbbc370-b968-4fe4-c1c0-08de960fd350
X-MS-Exchange-CrossTenant-AuthSource: CH7PR03MB7860.namprd03.prod.outlook.com
X-MS-Exchange-CrossTenant-AuthAs: Internal
X-MS-Exchange-CrossTenant-OriginalArrivalTime: 09 Apr 2026 08:13:04.9689
 (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: 0zAabFKYP3cREYM/PH04qSSyxo6P8DszY1Q6VlIkuCMXwXA6vSqvyID9BpZoKIjz4Cd+0ibINZ6hzFPsN7b72g==
X-MS-Exchange-Transport-CrossTenantHeadersStamped: SA1PR03MB7122
X-purgate-ID: tlsNG-42698a/1775722391-16B482A1-41AE7CFF/0/0
X-purgate-type: clean
X-purgate-size: 4753

On Thu, Apr 02, 2026 at 01:57:00PM +0200, Andrew Cooper wrote:
> On 02/04/2026 12:57 pm, Ross Lagerwall wrote:
> > On 4/2/26 9:49 AM, Jan Beulich wrote:
> >> On 02.04.2026 10:40, Ross Lagerwall wrote:
> >>> On 4/2/26 7:09 AM, Jan Beulich wrote:
> >>>> On 01.04.2026 18:35, Ross Lagerwall wrote:
> >>>>> We have observed that the TLB flush lock can be a point of
> >>>>> contention for
> >>>>> certain workloads, e.g. migrating 10 VMs off a host during a host
> >>>>> evacuation.
> >>>>>
> >>>>> Performance numbers:
> >>>>>
> >>>>> I wrote a synthetic benchmark to measure the performance. The
> >>>>> benchmark has one
> >>>>> or more CPUs in Xen calling on_selected_cpus() with between 1 and
> >>>>> 64 CPUs in
> >>>>> the selected mask. The executed function simply delays for 500
> >>>>> microseconds.
> >>>>>
> >>>>> The table below shows the % change in execution time of
> >>>>> on_selected_cpus():
> >>>>>
> >>>>>                     1 thread   2 threads    4 threads
> >>>>> 1 CPU in mask     0.02       -35.23       -51.18
> >>>>> 2 CPUs in mask    0.01       -47.20       -69.27
> >>>>> 4 CPUs in mask    -0.02      -42.40       -66.55
> >>>>> 8 CPUs in mask    -0.03      -47.82       -68.39
> >>>>> 16 CPUs in mask   0.12       -41.95       -58.26
> >>>>> 32 CPUs in mask   0.02       -25.43       -39.35
> >>>>> 64 CPUs in mask   0.00       -24.70       -37.83
> >>>>>
> >>>>> With 1 thread (i.e. no contention), there is no regression in
> >>>>> execution time.
> >>>>> With multiple threads, as expected there is a significant
> >>>>> improvement in
> >>>>> execution time.
> >>>>>
> >>>>> As a more practical benchmark to simulate host evacuation, I
> >>>>> measured the
> >>>>> memory dirtying rate across 10 VMs after enabling log dirty (on an
> >>>>> AMD system,
> >>>>> so without PML). The rate increased by 16% with this patch series,
> >>>>> even
> >>>>> after the recent deferred TLB flush changes.
> >>>>
> >>>> Is this a positive thing though? In the context of some related
> >>>> work something
> >>>> similar was mentioned iirc, accompanied by stating that this is
> >>>> actually
> >>>> problematic. A guest in log-dirty mode generally wants to be making
> >>>> progress,
> >>>> but also wants to be throttled enough to limit re-dirtying, such that
> >>>> subsequent iterations (in particular the final one) of page contents
> >>>> migration won't have to process overly many pages a 2nd time.
> >>>
> >>> In the context of a real migration, both the process copying the pages
> >>> out of the guest and the guest itself will be hitting the TLB flush
> >>> lock
> >>> so reducing that bottleneck may increase throughput on both sides.
> >>> Whether or not the overall migration time increases or decreases
> >>> depends
> >>> on many factors (number of migrations in parallel, the rate the
> >>> guest is
> >>> dirtying memory, the line speed of the NIC, whether PML is used, ...)
> >>> which is why I measured a more controlled scenario to demonstrate the
> >>> change.
> >>>
> >>> IMO throttling of a guest during a migration should be something
> >>> intentional and controlled by userspace policy rather than a side
> >>> effect
> >>> of some internal global locks.
> >>
> >> I definitely agree here, but side effects going away may make it
> >> necessary to
> >> add such explicit throttling.
> >>
> >
> > Explicit throttling is much more important for the already existing
> > case of Intel systems with PML. With log dirty enabled, a VM on an Intel
> > system can dirty memory an order of magnitude faster than an AMD system
> > without PML.
> >
> > As an aside, for the same test an Intel machine without PML is still a
> > lot faster than AMD so there is probably something to improve in this
> > area for AMD machines. 
> 
> AMD have PML on the way. 
> https://docs.amd.com/v/u/en-US/69208_1.00_AMD64_PML_PUB
> 
> There is a mis-step with how support for Intel's PML is done, meaning
> that draining the vCPU's PML buffers is extraordinarily expensive even
> when there's no action to take.  (Specifically, the remote VMCS acquire)
> 
> A better option is this:  When logdirty is active, any VMExit will drain
> the PML buffer into the logdirty bitmap before processing the main exit
> reason.  This way, you drain all the PML buffers by just IPI-ing the
> domain dirty mask.

Seems like a good and easy to implement optimization.  However we are
already too fast when using PML in the sense that the toolstack cannot
keep up with the rate of dirtied memory :).

Thanks, Roger.


From xen-devel-bounces@lists.xenproject.org Thu Apr 09 08:13:41 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 09 Apr 2026 08:13:41 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1276811.1562118 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wAkWD-00015K-Nj; Thu, 09 Apr 2026 08:13:41 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1276811.1562118; Thu, 09 Apr 2026 08:13: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 1wAkWD-00015B-L0; Thu, 09 Apr 2026 08:13:41 +0000
Received: by outflank-mailman (input) for mailman id 1276811;
 Thu, 09 Apr 2026 08:13:40 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <jbeulich@suse.com>) id 1wAkWC-00014z-F9
 for xen-devel@lists.xenproject.org; Thu, 09 Apr 2026 08:13:40 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wAkWB-007qqT-Qn
 for xen-devel@lists.xenproject.org; Thu, 09 Apr 2026 10:13:39 +0200
Received: from [10.42.69.10] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <jbeulich@suse.com>)
 id 69d75fa5-e002-0a2a0a5209dd-0a2a450ab8c8-42
 for <xen-devel@lists.xenproject.org>; Thu, 09 Apr 2026 10:13:39 +0200
Received: from [209.85.128.53] (helo=mail-wm1-f53.google.com)
 by tlsNG-4011c0.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.0)
 (envelope-from <jbeulich@suse.com>)
 id 69d75fb3-ee98-0a2a450a0019-d1558035cd80-3
 for <xen-devel@lists.xenproject.org>; Thu, 09 Apr 2026 10:13:39 +0200
Received: by mail-wm1-f53.google.com with SMTP id
 5b1f17b1804b1-48896199cbaso5919695e9.1
 for <xen-devel@lists.xenproject.org>; Thu, 09 Apr 2026 01:13:39 -0700 (PDT)
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-488cf8612cfsm36737435e9.0.2026.04.09.01.13.38
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Thu, 09 Apr 2026 01:13:38 -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=google header.d=suse.com header.i="@suse.com" header.h="Content-Transfer-Encoding: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=1775722419; x=1776327219; darn=lists.xenproject.org;
        h=content-transfer-encoding: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;
        bh=1zMaVsJ4Hj1ZbtlXWmCHXeHvDSKfKckbsVZ1TE2y4TY=;
        b=fCJec9o0bT35mQaKNwF3hcQ+SU+zF0txbWOo9IiujJfvj72LvxTC9R5ZfpR9GV7Afb
         GkibDjG5uis0K6vdEkQinChfjwefHzNsbuwfYDqJaa3gFlaKyyqE6wF+oDOZXlCOP0LN
         m4z5BNSkPfNJkopyhc1wk0o8yxKfB25jUM66aS6/2+mFekX/sCCdpl7QbCYRukml5JwA
         bAzA7gnd8q2/aMHv7JOTvM3f4VFTJBDCEuVF2Y6B6b7eiBUEhSrITb8VEJIedtbbKYEp
         tx7gGmm/oSYX1q5P14N7qJ0izGRnztWdjZqrI3ZS9SCqQaPngBV4ZyrB3rwF8VIUjEGV
         4fHA==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20251104; t=1775722419; x=1776327219;
        h=content-transfer-encoding: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;
        bh=1zMaVsJ4Hj1ZbtlXWmCHXeHvDSKfKckbsVZ1TE2y4TY=;
        b=R/GvDwkFdEiezi6NWBoZHi9uDrg/gVgzQ4YNo06/ajRXAAQm3xs74FVsRkOiJwuFuO
         zzlXmdl/MfQ/jM3SOtu9TnQ/pA/22IE0ZabfrY0PpQrJf/eSqoEcZXSfDCIMwPYhJQJU
         rE5a9eqZyma91sFbbcpI3xEe/G4g5UaxWgxTYit5PtbdCrUwHzhrsFqujfN6YmYfleaC
         k2yA3q9IaU5r+ML4JxuTaUjqUxHcieY2Ox5Y0uOm5OL/Mt+A3GfvLv6KD/0cN5T/SHv0
         +l8Z/Yj8dILdmIdZvV1acDTYT79xXYX0yjZql1G2O536VEUWwlcr5MdH1GoxmrwDOJAX
         szTw==
X-Forwarded-Encrypted: i=1; AJvYcCXxPAojhwRC+wNpE7jFLOFmdSHOfZHQ8AHRI81/LYwE4n+Q2KyOtO6jjoPbBiKevap7zRb0nbJF298=@lists.xenproject.org
X-Gm-Message-State: AOJu0YxJ6czQzA6UntZyvxxx2Ly4lK74wa7weFRllAdJcp8ecuezzb0W
	asAGli7sa5Z9y6d+9UOYpYQx/oNioJqks7Zze9L7edR4rtronzsImjBjy4XUxcQv/g==
X-Gm-Gg: AeBDievFqW5uaTXLCsbN/HzOsXRHreksPbiUDPgUyE7q0C17eH7dGd+VqCr3tPABdah
	Wgdi0vgWQXJ9dWLr89LR1I8iuqN4KnG/NNjfkTJHkCnkax4dIsQ08y2JH5dWrh1Fz24+Kkv4hFt
	qwLaB0bpawd9PMWd16QhGfkweXTcYotlREy3IA/j3dqPyqiIWv0k1BASIXnNp2ORktyeW0PqGie
	uMqDfWgA8/b//lczQ9ipFnCYi5ZB8eFkFpvyhuyHVtKJwK6A2DCHIW52/7Bwj+w9w7DXQYHivP0
	zzMS32ofN5W+wBWAxFFfSr+czRqgvXLdWYbB0NuOVKumn0/Wjdt84oW28i3JZRIeowtzvYXYiaA
	DU9XhPifD4DsEYY6ikO6mCDdDCriMYgY+I8bK/5AfXzaux73H6wuJKl9Jp1pGjMJuAOypp37lYX
	a/K2CnaaJVQjlqZSzK14JunFPLQOE2Ij4B+B0FqdRKyDE9tEzZx5bBx7j5E5tsDJcXfvDW2r2eW
	Jux3QfAbYD7K78=
X-Received: by 2002:a05:600c:c0dc:b0:486:fdba:f5db with SMTP id 5b1f17b1804b1-488cce7760dmr27209015e9.0.1775722418725;
        Thu, 09 Apr 2026 01:13:38 -0700 (PDT)
Message-ID: <868b63e6-c551-49b6-b177-cfadb29a69b1@suse.com>
Date: Thu, 9 Apr 2026 10:13:36 +0200
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH v2 1/3] x86: record SSP at non-guest entry points
To: Andrew Cooper <andrew.cooper3@citrix.com>
Cc: =?UTF-8?Q?Roger_Pau_Monn=C3=A9?= <roger.pau@citrix.com>,
 Teddy Astie <teddy.astie@vates.tech>,
 "xen-devel@lists.xenproject.org" <xen-devel@lists.xenproject.org>
References: <f064c3af-c22a-40e0-a268-ee37e34297a3@suse.com>
 <de873764-c803-4f56-b88a-936cb948c382@suse.com>
 <f08e0fbf-3570-4760-9977-4e99e651a3a4@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: <f08e0fbf-3570-4760-9977-4e99e651a3a4@citrix.com>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
X-purgate-ID: tlsNG-4011c0/1775722419-BF9440B1-192369C3/0/0
X-purgate-type: clean
X-purgate-size: 2564

On 08.04.2026 18:58, Andrew Cooper wrote:
> On 08/04/2026 1:22 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.
>>
>> Signed-off-by: Jan Beulich <jbeulich@suse.com>
>> ---
>> For PUSH_AND_CLEAR_GPRS and POP_GPRS, putting the new field right next to
>> the error code isn't entirely nice; putting it ahead of %r15 would entail
>> other changes, though. An option may be to not make SSP handling part of
>> the macros in the first place. Thoughts?
> 
> I have a firm dislike for SAVE/RESTORE_ALL, both for their substantial
> complexity/inefficiency, and mixing of unrelated tasks.
> 
> I have several series trying to purge them.  I suppose I really ought to
> try and finish this off properly.
> 
> While classing SSP as a "register" is probably fine, the ssp= parameter
> (and particular it's asymmetric nature) is on the wrong side of the
> "complex" argument IMO.
> 
>> For POP_GPRS, does it really matter that it doesn't alter EFLAGS? 
> 
> Yes.  The SYSCALL fix for one (reviewed, but waiting on final testing
> before I commit).
> 
> Then the VT-x code when swapped to use POP_GPRS.
> 
> 
> To take a step back, you say that putting it ahead of %r15 would entail
> other changes.  What changes?

SAVE_ALL's initial ADD, RESTORE_ALL's final SUB, and then the hunt for
anything which may simply assume UREGS_r15 to be 0. If UREGS_r<xyz> were
ordered by register number, I would have considered putting it where
%rsp nominally would go, but without that putting it somewhere in the
middle feels rather arbitrary.

> The resulting asm would be far cleaner.

I agree.

>  It would be an rdssp;push on
> one side, and a pop into any register on the other side.  Furthermore,
> given that the ssp= doesn't exclude storing it for some user frames,
> just store it for all.  It's one push/pop into a hot cacheline, and
> makes a substantial reduction in complexity.

I'm having significant reservations against that. I use the 0 put there
in subsequent patches, to identify absence of that data being available.

Jan


From xen-devel-bounces@lists.xenproject.org Thu Apr 09 08:17:34 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 09 Apr 2026 08:17:34 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1276822.1562128 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wAkZu-0001jc-5F; Thu, 09 Apr 2026 08:17:30 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1276822.1562128; Thu, 09 Apr 2026 08:17: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 1wAkZu-0001jV-27; Thu, 09 Apr 2026 08:17:30 +0000
Received: by outflank-mailman (input) for mailman id 1276822;
 Thu, 09 Apr 2026 08:17:28 +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 1wAkZs-0001jP-HQ
 for xen-devel@lists.xenproject.org; Thu, 09 Apr 2026 08:17:28 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wAkZr-007rr4-Po
 for xen-devel@lists.xenproject.org; Thu, 09 Apr 2026 10:17:27 +0200
Received: from [10.42.69.8] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <Michal.Orzel@amd.com>)
 id 69d76089-e002-0a2a0a5209dd-0a2a4508a7f4-46
 for <xen-devel@lists.xenproject.org>; Thu, 09 Apr 2026 10:17:27 +0200
Received: from [52.101.52.48]
 (helo=BL2PR02CU003.outbound.protection.outlook.com)
 by tlsNG-c1860d.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.0)
 (envelope-from <Michal.Orzel@amd.com>)
 id 69d76094-fab6-0a2a45080019-34653430755a-4
 for <xen-devel@lists.xenproject.org>; Thu, 09 Apr 2026 10:17:25 +0200
Received: from SJ0PR13CA0101.namprd13.prod.outlook.com (2603:10b6:a03:2c5::16)
 by SN7PR12MB6910.namprd12.prod.outlook.com (2603:10b6:806:262::21)
 with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9769.20; Thu, 9 Apr
 2026 08:17:21 +0000
Received: from SJ1PEPF00002325.namprd03.prod.outlook.com
 (2603:10b6:a03:2c5:cafe::80) by SJ0PR13CA0101.outlook.office365.com
 (2603:10b6:a03:2c5::16) with Microsoft SMTP Server (version=TLS1_3,
 cipher=TLS_AES_256_GCM_SHA384) id 15.20.9769.41 via Frontend Transport; Thu,
 9 Apr 2026 08:17:21 +0000
Received: from satlexmb08.amd.com (165.204.84.17) by
 SJ1PEPF00002325.mail.protection.outlook.com (10.167.242.88) with Microsoft
 SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id
 15.20.9769.17 via Frontend Transport; Thu, 9 Apr 2026 08:17:21 +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.17; Thu, 9 Apr
 2026 03:17:21 -0500
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.17; Thu, 9 Apr
 2026 03:17:21 -0500
Received: from [10.252.147.171] (10.180.168.240) by satlexmb07.amd.com
 (10.181.42.216) with Microsoft SMTP Server id 15.2.2562.17 via Frontend
 Transport; Thu, 9 Apr 2026 03:17:19 -0500
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@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=QxnPSnhkR37RHNNA1aGu1wHRvcrg5p1cqpAUwZKRJSKR0vR9ZnA6k7SF7L7WJHSZ3Z3xg5uRpTwK+U4OTTorctgnHSYqioB8Hi09jLM6H5No5IBil6InPVBt0u380B4WyuvGOq+3mBMnQQX0UtvzZFaaPiLVAAwQXQJhkNvjJCuLm/Sehi6mYaLMOjhwYMui6pSWGWs8a+gMrpcnUiIyz+yY/qYRjEcBWRX/+Bsan5Y2kK1e+imQANDzVMgQ8RiYYIipA+Jz1MQYyo7j+rOMPGoVaHR3VsH5M//9Zy9MjPkieeI2auPvp2uH3UVpo1cqPoKDYgioF1jwVs/lMMa/tQ==
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com;
 s=arcselector10001;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1;
 bh=TNTEazLHomjmOsy3+fEjUeM+cp7EbT1E+n7pHfeiQJc=;
 b=bYhdUrpJk6/NFA3V6oz+J1dR/zj/i3kiOT91gTQ92ifteBP4gx9tTDulE7SOnpg6rK66WvyoQgW1/5WG4fhgtz8NZUOy+qQA8X9E99eQ6I5Ep3hxI/W7bybXDgrvs1ecahcXjNzfdeW3cSznE6le5kEjWHCieF+9O2T9VUZrNUlasBGVZA6cRtewFm/oKWxhg+n8OJMQd+wpwb7SQ67d4nCNmAa3iT/75mmWy45dPg9TjCSSRfcJ1BDVfXTILsM4898zLAUGQLXb3DuwhTRTRXa+Wuy9hWhxxN7p/cwUd/XXw3L/DDPxSZAM5HnS3oBqoLLArqI3iQrkBm6jG8ZxNg==
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=TNTEazLHomjmOsy3+fEjUeM+cp7EbT1E+n7pHfeiQJc=;
 b=HZvrap9iOE1qcxtYUbdEa8JhUq+ILFEs5N8fH4G2Z34u3lcpkO43MoOW8JwEuIQ/6gTifctsdl2v8aTF0iN/TIauzLDAK8FkdZ4CHLz9jCrAuMNQ8CxO4ejsZZL1qJKNnoNxL03RHJ0fnEK0Ucn4mV2PozOZuwB3xx46+AK9UoU=
X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 165.204.84.17)
 smtp.mailfrom=amd.com; dkim=none (message not signed)
 header.d=none;dmarc=pass action=none header.from=amd.com;
Received-SPF: Pass (protection.outlook.com: domain of amd.com designates
 165.204.84.17 as permitted sender) receiver=protection.outlook.com;
 client-ip=165.204.84.17; helo=satlexmb08.amd.com; pr=C
Message-ID: <464adb13-b702-45cd-a28a-71d3278feb4c@amd.com>
Date: Thu, 9 Apr 2026 10:17:19 +0200
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH] xen/drivers/char: fix SCIF IRQ registration failure
 propagation
To: Oleksii Moisieiev <Oleksii_Moisieiev@epam.com>,
	"xen-devel@lists.xenproject.org" <xen-devel@lists.xenproject.org>
CC: Bertrand Marquis <bertrand.marquis@arm.com>, Julien Grall
	<julien@xen.org>, Stefano Stabellini <sstabellini@kernel.org>, "Volodymyr
 Babchuk" <Volodymyr_Babchuk@epam.com>
References: <6d1996b3d36e4d21e58c0e60876a1976db9a6208.1775667739.git.oleksii_moisieiev@epam.com>
From: "Orzel, Michal" <michal.orzel@amd.com>
Content-Language: en-US
In-Reply-To: <6d1996b3d36e4d21e58c0e60876a1976db9a6208.1775667739.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: SJ1PEPF00002325:EE_|SN7PR12MB6910:EE_
X-MS-Office365-Filtering-Correlation-Id: 05999b8d-60b4-449f-4a13-08de96106c79
X-MS-Exchange-SenderADCheck: 1
X-MS-Exchange-AntiSpam-Relay: 0
X-Microsoft-Antispam:
	BCL:0;ARA:13230040|1800799024|82310400026|36860700016|376014|18002099003|56012099003|22082099003;
X-Microsoft-Antispam-Message-Info:
	EZ6ThkIqQME57bn+QLwJaXqnT2NuHrvJoXsGn7NgkwrbT5RdxjE8lhY3ybjYq6zO1onK2AyW6Htf/QBl3HGSrFUWbm6CQmv7Nfj+AagZo+PgvvAI5EiuB7LjFPk7qS0Um9nSALgzoSLEB7VlsuiGUPOKnly624ysez/FEWMkBzkGlidAvWwybRmHBMUQdASFXes/kgoqeEnaFRmwbH2DrCA1ErJd4CIOjl3iGCyjdUYxEEOnnsMZYJXVatrbGsLH+Ig+m78AMEVJgnAWi2bDZSkUZn/I+17+hReR9/ctBaljVG5ES5Sh2qrbJQmVSReyRJXLc1IhWfRTuRmKH8BObIje2r2Gwhd1kqL4xgsvIyJtKA7Etm46i6bcjfZY5CzWKz/WsjrK/9QdIYtwxYEG1xqCV5t9o5O7GZ/aWUrrXHLIqZsk23uaCtb+VuiHKhkMoq5XZfKQPshkpSpCTLvfXsq0UtnBu2oYlfDO53M53rTVPL5JwxU971MJOStrAMjrBIVzfdsnNp+9tKUT6dMWYBnt22EvOymDYMoN/OYlTAC+bAjeqy3x0v4HjooUh4nKSXdqwOSrF3LDMBitOznuBWA8GdWhHsBqIXq7ab2QKNolQzsw/8DFOy4fBL6ZXPjqR/aUPr2LGegllFf7VlhX7aYW9iF1FBtZn84DmeNUohCdUmAzdS3BmhoWOFtNsx9tc0jht8FALa4oIcrcS6vte5DeY7MHoYRK9UlqED0HEFXbMLLTtv96wtset0PefaftVeMlm1bVTxrZ2XetN3Kmlg==
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)(36860700016)(376014)(18002099003)(56012099003)(22082099003);DIR:OUT;SFP:1101;
X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1
X-MS-Exchange-AntiSpam-MessageData-0:
	Eh5ppRJtVBNwkbf3VuuB7HReXuSeA+WjyvlLaJNbP8ztE/aYG9vj1V7vcV1JQrHdTu5Psyo8AUYUzpuuKfSQhaFmEL5oHmJFF3xeU0HoZ6VzXjdkrTGOBJsWOBJ9r44s/lKB4qIyb7rGpy/Dh84xJzSZZFZ0YO8dzgFjC1Bb4No3bDVVyc5jIrtz1K5ZSsbqR6kFA0brV1cBUCEUHNIPiowihKMZhFTu3dKSUxqobGJcX+Uzbl0oitSNuIT/hNlg9pjL7JviIZhwm5VcSpklSB5TGB0FTn9uxbrJM4ZNTWMuMAmA4bwg6O3+Vi2XSaS/AVb2J/mNmzguGmvmEZ+4c3WzbudnyGvu1VjZhYs+9fQxeJWjnS98686xx6t6ZDXxvxcFebPougzIvWhq8oin1vqbccnUxzmer/u3Wne9m9VFDdQ9QOY61q6/9mWsU3bg
X-OriginatorOrg: amd.com
X-MS-Exchange-CrossTenant-OriginalArrivalTime: 09 Apr 2026 08:17:21.5383
 (UTC)
X-MS-Exchange-CrossTenant-Network-Message-Id: 05999b8d-60b4-449f-4a13-08de96106c79
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:
	SJ1PEPF00002325.namprd03.prod.outlook.com
X-MS-Exchange-CrossTenant-AuthAs: Anonymous
X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem
X-MS-Exchange-Transport-CrossTenantHeadersStamped: SN7PR12MB6910
X-purgate-ID: tlsNG-c1860d/1775722646-F5D53497-18B88478/0/0
X-purgate-type: clean
X-purgate-size: 3499



On 08/04/2026 19:03, Oleksii Moisieiev wrote:
> In scif_uart_init_postirq(), when setup_irq() returns an error the
> failure was only logged via dprintk() and execution continued,
> unconditionally writing TIE|RIE|REIE into the Serial Control Register
> (SCSCR). This armed all three hardware interrupt lines (TX FIFO empty,
> RX data ready, receive error) with no handler registered to service
> them. On platforms where the GIC receives these asserted lines, the
> result is either repeated spurious-interrupt warnings or an unhandled
> interrupt fault.
> 
> The fix adds an early return inside the error branch. The
> interrupt-enable write to SCSCR is skipped entirely when no handler is
> registered.
> 
> SCIF TX continues to operate correctly after this change. The Xen
> serial framework never calls serial_async_transmit() for SCIF, so
> port->txbuf is always NULL. This causes __serial_putc() to take the
> synchronous finite-capacity path, which polls the SCFSR_TDFE hardware
> flag directly and does not depend on the interrupt mechanism.
NIT: It would be nice to at least mention that there will be no serial RX
without interrupts.

> 
> As a secondary clean-up, the hardware error-flag clearing sequence is
> moved to before the setup_irq() call so that error bits accumulated
> since init_preirq() are cleared unconditionally, regardless of whether
> IRQ registration succeeds.
> 
> Signed-off-by: Oleksii Moisieiev <oleksii_moisieiev@epam.com>
That's a good catch. I can see most of our drivers already use that.
Reviewed-by: Michal Orzel <michal.orzel@amd.com>

That said, I can see that we have exactly the same issue for pl011, cadence and
exynos. I can either take your patch as is (no more work for you) and submit the
patch fixing remaining drivers or you can send a v2 fixing all at once. It's up
to you.

~Michal

> ---
> 
>  xen/drivers/char/scif-uart.c | 16 ++++++++++++----
>  1 file changed, 12 insertions(+), 4 deletions(-)
> 
> diff --git a/xen/drivers/char/scif-uart.c b/xen/drivers/char/scif-uart.c
> index 888821a3b8..673a2d3800 100644
> --- a/xen/drivers/char/scif-uart.c
> +++ b/xen/drivers/char/scif-uart.c
> @@ -187,16 +187,24 @@ static void __init scif_uart_init_postirq(struct serial_port *port)
>      uart->irqaction.name    = "scif_uart";
>      uart->irqaction.dev_id  = port;
>  
> -    if ( (rc = setup_irq(uart->irq, 0, &uart->irqaction)) != 0 )
> -        dprintk(XENLOG_ERR, "Failed to allocated scif_uart IRQ %d\n",
> -                uart->irq);
> -
>      /* Clear all errors */
>      if ( scif_readw(uart, params->status_reg) & params->error_mask )
>          scif_writew(uart, params->status_reg, ~params->error_mask);
>      if ( scif_readw(uart, params->overrun_reg) & params->overrun_mask )
>          scif_writew(uart, params->overrun_reg, ~params->overrun_mask);
>  
> +    if ( (rc = setup_irq(uart->irq, 0, &uart->irqaction)) != 0 )
> +    {
> +        dprintk(XENLOG_ERR, "Failed to allocated scif_uart IRQ %d\n",
> +                uart->irq);
> +        /*
> +         * If the IRQ handler could not be installed (setup_irq failed),
> +         * do not enable TX/RX or error interrupts. Serial transmit will
> +         * fall back to polling mode.
> +         */
> +        return;
> +    }
> +
>      /* Enable TX/RX and Error Interrupts  */
>      scif_writew(uart, SCIF_SCSCR, scif_readw(uart, SCIF_SCSCR) |
>                  params->irq_flags);



From xen-devel-bounces@lists.xenproject.org Thu Apr 09 08:26:25 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 09 Apr 2026 08:26:25 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1276831.1562138 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wAkiS-0003jb-13; Thu, 09 Apr 2026 08:26:20 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1276831.1562138; Thu, 09 Apr 2026 08:26: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 1wAkiR-0003jU-T1; Thu, 09 Apr 2026 08:26:19 +0000
Received: by outflank-mailman (input) for mailman id 1276831;
 Thu, 09 Apr 2026 08:26:19 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <roger.pau@citrix.com>) id 1wAkiQ-0003jO-Rn
 for xen-devel@lists.xenproject.org; Thu, 09 Apr 2026 08:26:18 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wAkiQ-007u2T-7a
 for xen-devel@lists.xenproject.org; Thu, 09 Apr 2026 10:26:18 +0200
Received: from [10.42.69.7] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <roger.pau@citrix.com>)
 id 69d762aa-e002-0a2a0a5209dd-0a2a4507841a-0
 for <xen-devel@lists.xenproject.org>; Thu, 09 Apr 2026 10:26:18 +0200
Received: from [52.101.46.37]
 (helo=CO1PR03CU002.outbound.protection.outlook.com)
 by tlsNG-ef75cf.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.0)
 (envelope-from <roger.pau@citrix.com>)
 id 69d762a8-ba2d-0a2a45070019-34652e25d5d0-3
 for <xen-devel@lists.xenproject.org>; Thu, 09 Apr 2026 10:26:17 +0200
Received: from CH7PR03MB7860.namprd03.prod.outlook.com (2603:10b6:610:24e::14)
 by SJ0PR03MB6389.namprd03.prod.outlook.com (2603:10b6:a03:398::7)
 with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9769.18; Thu, 9 Apr
 2026 08:26:13 +0000
Received: from CH7PR03MB7860.namprd03.prod.outlook.com
 ([fe80::f5ba:35df:1c9f:b343]) by CH7PR03MB7860.namprd03.prod.outlook.com
 ([fe80::f5ba:35df:1c9f:b343%4]) with mapi id 15.20.9769.014; Thu, 9 Apr 2026
 08:26: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=GTZ6U4qilIpW5CE68k3rSdtjYmrUoxvVHKTP97bd4nbdm43Nz4lI5If8HbnoDZGZytBnpbFeGMq4fuUZv1qKe+LQd2H55vOfAIPTiZcn2/WZONI3wQQtVbN7AjwbQiMetAlAE3FyFmXukjHuR/MUD4o5nvLQPu4SYEhs7J9CCJ7qSW1Y/fDNP+aUiZ7RkGuQL6hH5+XT/tFjwNMPJ1nlKRbKTNpPWYwIs2sdBm93Gv3tTLVo1q2NVwrlNdeu8HS31HWUmv8u6/q88ed+Qt4baoTMSBP+bDJJDN3djtwPzaQNT22HnG/PbniEpDmsA+Pd5e8WuMfrKPeaCx1S75bxXw==
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com;
 s=arcselector10001;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1;
 bh=uBtr3NN6mnvR9rZ76abwqO+P7CfM4gbcVDROhCXv5MI=;
 b=ueIHka8MvW//c9DCBt42rshAaftAv92ONXr3ze3pn5sULTHWBLBeQJ77xFRzYhh5Qi35Q7M0ZbS7lYLtxOfRofLz6TUfvVK3CGeTP21MI8DJCHZDIEvV/uvplEOssyeNwNJt0XsL5mLeKO+TYrRGHSmuoErWzNJtHE3U0ED6B/8Aoj6KsDXnh82S7kGD//8xUOYaBeDiUjzug4ucNVEaGc5X8UxmY9sIuCxJBai1SGRz855gMjBTUTQAe5oXftsHToMdtUisEtSlP3HtccgJLDv2dUIOFczj8tqIc48cuFlAovjir5zvojEz47iu1EgVYOruSyJp22+AogugVcfiIw==
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=uBtr3NN6mnvR9rZ76abwqO+P7CfM4gbcVDROhCXv5MI=;
 b=OqqA+BCX1vXTVITJ9Htv1nCPgU9Kw6P0c+UAe2pwneETyRSQ3yqLlpPYfG6MElbbRfqJph05gT9KOVNQ+rcuaOgRD9bmP7l0vlV+al5tSJSwVj62Rs5P/YUBAkJ0DhgBfTspLZISF82zMIM7Czn/+AvtLPJ9aVgPtf9RiACqQGI=
Authentication-Results: dkim=none (message not signed)
 header.d=none;dmarc=none action=none header.from=citrix.com;
Date: Thu, 9 Apr 2026 10:26:08 +0200
From: Roger Pau =?utf-8?B?TW9ubsOp?= <roger.pau@citrix.com>
To: Frediano Ziglio <freddy77@gmail.com>
Cc: xen-devel@lists.xenproject.org,
	Frediano Ziglio <frediano.ziglio@cloud.com>,
	Jan Beulich <jbeulich@suse.com>,
	Andrew Cooper <andrew.cooper3@citrix.com>
Subject: Re: [PATCH v3] xen/x86: Check supported features even for PVH dom0
Message-ID: <addioD3q23OvAvOO@macbook.local>
References: <20260408125521.104660-1-frediano.ziglio@cloud.com>
Content-Type: text/plain; charset=utf-8
Content-Disposition: inline
Content-Transfer-Encoding: 8bit
In-Reply-To: <20260408125521.104660-1-frediano.ziglio@cloud.com>
X-ClientProxiedBy: MR1P264CA0140.FRAP264.PROD.OUTLOOK.COM
 (2603:10a6:501:51::6) To CH7PR03MB7860.namprd03.prod.outlook.com
 (2603:10b6:610:24e::14)
MIME-Version: 1.0
X-MS-PublicTrafficType: Email
X-MS-TrafficTypeDiagnostic: CH7PR03MB7860:EE_|SJ0PR03MB6389:EE_
X-MS-Office365-Filtering-Correlation-Id: daaf1fcb-f962-48bc-c978-08de9611a8f4
X-MS-Exchange-SenderADCheck: 1
X-MS-Exchange-AntiSpam-Relay: 0
X-Microsoft-Antispam:
	BCL:0;ARA:13230040|376014|366016|1800799024|56012099003|18002099003|22082099003;
X-Microsoft-Antispam-Message-Info:
	bgfhReZHXkS29VXus5HGLEYdfyOgsdg2gRfZZcXZh0V5+CJiqCzCY5sQdtJtnY8iB1YXkwda68HDFDImDsPtlt6LgyiPXYAzxYwy9CElNVvT8XfLp0td5PT1n4vN7jY+KneQf69oJn6bzJWUb+eqx92IKwsHOhrFNbjtDQAqTz1tvTrCS1CULka97cip3O6awEmRO6QpoDXzoaeoP0qIED2nlSYYcK6eMdIGE1YMmj6oClOdQIJxH8ueTPdKJOIeMRXKF4a6AF4zmo+fvKBzcvgtrOQ9DEQBaHLRKsfO6M7V3x8C5fhYkiSgI3+QSszRz/fRHXBNdouWshhD51cwqqAuM+zL9j1bVhazyW3P2r48HTSbxRnQ9cJrwvfuimVMru4INAbwWBJzS5fZPaeJPqA2fX6TGZ88ayaoWJYWy6xAjKMRA51tif8kqlXX0zybtZWkT7QF6MkpimeW2hLtL3ddCkN6agzQMUSwxIxNXc+PYw/nNF2R/qcAfxEpUN1NImqXhhvlEfQ+OYzkU6kjU5TKWAZ8shbzvHpApakUp/ViLoYgN3W/xwag2vBl+oV3+Q3IqBgIuXwoXZZWscEUrGbd1yOw2mkADrXPT16T0T91whLn3AHBVIiBYuti18fETGyvrB+AJfIinT1kBp6qz2Z3xUWqodcTSfQX+W7Ir/BhFYmtusu0l30y1wkt8Sn+dvunaDuDR/804gtyMyvvBSB4QgDiGugdbpR4vplRSTg=
X-Forefront-Antispam-Report:
	CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:CH7PR03MB7860.namprd03.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(376014)(366016)(1800799024)(56012099003)(18002099003)(22082099003);DIR:OUT;SFP:1101;
X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1
X-MS-Exchange-AntiSpam-MessageData-0:
	=?utf-8?B?VlQrOEtsNHh3OUUxbFpJNGVBcE9GNkZPZWNrWU5aMWVidXFUOHVaVjNoK1FT?=
 =?utf-8?B?Y3R2MnJWaHBCSnVxSWdvcEE4KzBqVzdUSWc2TDRqRURwcWRHWmlpVGt5YkhK?=
 =?utf-8?B?bVZBVFdHMzJQdVBSdG5hN2JLVEpWRkNjbFBTWHJ2Zlk0blJIa1djQytoOHFV?=
 =?utf-8?B?ckF5Y1JmRXZUeGErbGpXWjMzWUZVdFBPTUdIVXBoSnAvZitjdTRwV3N2NTdh?=
 =?utf-8?B?Z0hsRmlOVGk1WFZyMEFmWFNCS2c1czVpNFRXZkxvMFVFaWl3QjNhYnNvb2VH?=
 =?utf-8?B?cWM1RE1aODlOQmsvcXl0NmJveTk5Y3NkWTh0VFU3NVQzVzRVVEowYXE1cjF6?=
 =?utf-8?B?YnFoWEc4dHdVUkVZaWtuRVFCSWU5SFZ6Y2xlR203bExpUTloeEhrMi9YbGVW?=
 =?utf-8?B?M1lYZlQzanF4ck0vazNGN3RSOExyaFNoWm5kd3E4cExlNVJ1ZlVvQUgvQUhX?=
 =?utf-8?B?cnVVTld4Q2VNV2UwMlZDS29Qc2tRV3Y2ZmhMYTI4TEViREtIQkdESVFLYVlY?=
 =?utf-8?B?emtJY0wzbWJYd3J2WVVPWFpPQW96R2tpbTJ0aFYxbGZveFBBRkNEZjFJdTZU?=
 =?utf-8?B?NHdmWHAwVUlRRW9jY0Z0RFZOWkRFMUQ3UnZyRmpaMTUwanI2blB2T3lNUHF5?=
 =?utf-8?B?U1hSWHZYQWlZQWZCM2N3R1Y0K2NJYk9uRGxUSkhvOVpydmprL0ZkSE8xY1Zj?=
 =?utf-8?B?c255T0VJQzNhNEZiOVNiOWcrYkh3UnRJZFBWVXFaL3RtYUtldWFkVUhOYkVP?=
 =?utf-8?B?TlZVSmQ3WHNlM3lGdXR2OHFOdml1clNURXlBSUlma1cvK2tKc1Rnbk5nRUVO?=
 =?utf-8?B?RHVEV21EK3ZxZ3pNN3pJbE9NdE0vR0NWbG9jamFCZ3c1RkFnaEpNcDZodVM0?=
 =?utf-8?B?Uy9GYW1BaXNrUWwzd1crMTMxNTQ1aEFoTzJNSUhsVWdHSXFuQmpTVE5HOXpX?=
 =?utf-8?B?aDR6N1hwNUE3VmVXbENlVjQwaTNRVkhuYzQrQTBhMGhSaFNGYmJRNU02TXpM?=
 =?utf-8?B?QjF1dDNvOExwMkpFbGkxZ2lOcERNSUlmcll6QXpTV1pGK3IxbnBUeGdYa3da?=
 =?utf-8?B?SlgzUnIrZFdGM0xreWZQM3JuT0hsYnAxQnRGcTFLcUF5VWhoNUtFK0NsbGZT?=
 =?utf-8?B?Rnl1eHNwdkVwZHg3bkFtbzVWVVFsZEZqUU9uUEpHWUZYblVFa0Z4UDFpRGQw?=
 =?utf-8?B?Wm11K1ZuUHBJcytsKzZGNE40VTRFN1FGZ2tJMWE3K2RidmRUV0gyYS9EZ3Rm?=
 =?utf-8?B?bDMrVlFvSlFnTzMrcHRxN1BEZzJhdm53bFpnY051RW0vUStEWkZsYTNvck1m?=
 =?utf-8?B?SkdmTUNXNUtMVlc4Z1kwOGI2ZTJXL0lvYTBxcHJackNaOFRBK0t4UndPY1Zh?=
 =?utf-8?B?R0x4a25qaEhNUXVPbThWUXpVbVBnUTBqN0l0cTd3ODNUVjgxeFBZQ1BYWUNI?=
 =?utf-8?B?bUpSWGdNbnN1eTB1cGo1R0xCYW84UFBDSy9ZRUN3OGRFeEhoaStnKzV1aEU3?=
 =?utf-8?B?TnVaVjBGVGRxQmg1Q0w4MDFtM25yWFVaemZHWVl5Qk1TMnB1SkJuWUgxeTFX?=
 =?utf-8?B?Y3Z2MjNqSlBnWVBrV1M2Mm41ZElQSHlJZUNnS0tYaGRwVXlSaXFZbW9qNG81?=
 =?utf-8?B?OHE3U3dDWlZkQmZwaXpnTnJDNGVwT2ZHQ3RGZGIxck9VaEVnWWJ6ZkdZejRZ?=
 =?utf-8?B?QTR3VS8wTklJSVNleGhMelFCZ1JXVDhmbm5qeU9JeFQzSDE2cllVM0pYY3dr?=
 =?utf-8?B?R1JGbENRSXZ5QWpOaWRKeEk3a09zRG1OSFB3OVJwQVdQUFk5dEdOZm45YTVK?=
 =?utf-8?B?R2NsLzhjRGN6aG9uOHpERldYTUQxb3VYVnZhZXUwRDB6c2I5cWZJTUJyM0xV?=
 =?utf-8?B?aTZ4M0Njdk9veUFlMFVOcTFOSFpkV3FUZFhUYWdjQ2RGVGtQZElTZkIyMXF0?=
 =?utf-8?B?SjhvT0RvRmZyYTlKSG5KY3JJTlorY3dVeHgzSFB1K3FNZ3hZaEc5V3VOaWUw?=
 =?utf-8?B?enZQVEthT1NybllpT2lHUmdFS2NEdmlwZW9ML3FtbEp4UHl0UkxWRDVKRElF?=
 =?utf-8?B?c2w5YTVITHpiUlVVbit3OGxJZUNNRVB4dW9FcmlCcGxJSnhYTndKUURPanc4?=
 =?utf-8?B?YVpUeHVPNWIwL0pCekt3YXMyQlFhS2YyZy9RMFgrRmtvVHM0dTF5NHBnNmxn?=
 =?utf-8?B?aFZucGREWVp2REZjMWt4TmZlcEtBMTRWb3VFbHBsaXMzaDVGVG43V3ZuMnV5?=
 =?utf-8?B?Q3BYbjhuYWd5a3RwK0J2UXN6YzMvRnp2azVSbk5IMnYyc2tXeEdDNEpLSVRQ?=
 =?utf-8?B?alJadWhva2NwUWlrcEp5WEg0V3Ixb3A3bURWclFwaFBrSklsdzkrdz09?=
X-OriginatorOrg: citrix.com
X-MS-Exchange-CrossTenant-Network-Message-Id: daaf1fcb-f962-48bc-c978-08de9611a8f4
X-MS-Exchange-CrossTenant-AuthSource: CH7PR03MB7860.namprd03.prod.outlook.com
X-MS-Exchange-CrossTenant-AuthAs: Internal
X-MS-Exchange-CrossTenant-OriginalArrivalTime: 09 Apr 2026 08:26:12.7409
 (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: CRoaXbnK6O3mgdJKboz0F7/Ar7y+FpnyhtPulcIgRA9L3BprE4+LQJQr+B7axv8RJacvOoxaGD66wqb/7mcvcw==
X-MS-Exchange-Transport-CrossTenantHeadersStamped: SJ0PR03MB6389
X-purgate-ID: tlsNG-ef75cf/1775723178-1394141E-4078E44D/0/0
X-purgate-type: clean
X-purgate-size: 390

On Wed, Apr 08, 2026 at 01:55:14PM +0100, Frediano Ziglio wrote:
> The supported features ELF notes was tested only if the dom0 was
> PV. Factor out a function to check ELF notes and reuse it even
> for PVH.
> 
> Signed-off-by: Frediano Ziglio <frediano.ziglio@cloud.com>

I think you dropped my RB from v2:

Reviewed-by: Roger Pau Monné <roger.pau@citrix.com>

Thanks, Roger.


From xen-devel-bounces@lists.xenproject.org Thu Apr 09 08:36:16 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 09 Apr 2026 08:36:16 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1276843.1562146 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wAks0-0005s9-2J; Thu, 09 Apr 2026 08:36:12 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1276843.1562146; Thu, 09 Apr 2026 08:36: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 1wAkrz-0005s2-Vi; Thu, 09 Apr 2026 08:36:11 +0000
Received: by outflank-mailman (input) for mailman id 1276843;
 Thu, 09 Apr 2026 08:36:10 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92) id 1wAkry-0005rf-QI
 for xen-devel@lists.xenproject.org; Thu, 09 Apr 2026 08:36:10 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wAkrx-007wdz-Ns
 for xen-devel@lists.xenproject.org; Thu, 09 Apr 2026 10:36:09 +0200
Received: from [10.42.69.6] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <oleksii.kurochko@gmail.com>)
 id 69d764f0-2eae-0a2a0a5409dd-0a2a4506b65e-42
 for <xen-devel@lists.xenproject.org>; Thu, 09 Apr 2026 10:36:09 +0200
Received: from [209.85.221.49] (helo=mail-wr1-f49.google.com)
 by tlsNG-16d1c6.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.0)
 (envelope-from <oleksii.kurochko@gmail.com>)
 id 69d764f9-0df0-0a2a45060019-d155dd31a848-3
 for <xen-devel@lists.xenproject.org>; Thu, 09 Apr 2026 10:36:09 +0200
Received: by mail-wr1-f49.google.com with SMTP id
 ffacd0b85a97d-43b949bf4easo302771f8f.0
 for <xen-devel@lists.xenproject.org>; Thu, 09 Apr 2026 01:36:09 -0700 (PDT)
Received: from [192.168.1.6] (user-109-243-69-121.play-internet.pl.
 [109.243.69.121]) by smtp.gmail.com with ESMTPSA id
 ffacd0b85a97d-43d1e4e56fesm62221514f8f.27.2026.04.09.01.36.07
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Thu, 09 Apr 2026 01:36:08 -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=20251104 header.d=gmail.com header.i="@gmail.com" header.h="Content-Transfer-Encoding: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=20251104; t=1775723769; x=1776328569; darn=lists.xenproject.org;
        h=content-transfer-encoding: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;
        bh=AoHwRrmPG1RIIsDIVpcVPIC7uCM2nxHpY8sIp6n5sjc=;
        b=Gy8VDADLMWUQm+t+87u5v+XgXQFJB+TBJw+gcIXnuaYpIdS5SfkXtngLMYlrIekWc/
         +1tO5PSrsPUZHGomwrdZGz+qwWIyR7s0/59bHqUflNajFKAGdBpT1IMCfab3/JNEi+gq
         AYbtXoL2tdvWkKG3NNl+2FfwP/X0XVAZWg4rwZxAlsACWpjkQP54R7Vn0ku26LLPCfMj
         YRKO7WkLlMZvq/WG4h5psr7xkz+IWC6JaLXgzXrT9IsLI+6ioYfpH02b0gEiL9/WgV/A
         er9tKU4tyFtVIRjPFuPxAazJpevr/890KBdjRRogoaAVK5y3UM1l27WImShMZKKV09iL
         1vNA==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20251104; t=1775723769; x=1776328569;
        h=content-transfer-encoding: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;
        bh=AoHwRrmPG1RIIsDIVpcVPIC7uCM2nxHpY8sIp6n5sjc=;
        b=k7ZGYR1orjjP9dea84gfWx0k0wMuAJ7KyYuOmZNi3mqB49/LINaCldLkgl4Le1rRWF
         XK/xnK2gfWpI8h/WH70cZPUcq8uIVIgdGPDxYEyk0u3+OAPArNrG+zcpzOp7fpbp85oo
         Q+kj0Mlapdl/g5cp/UV8LSmfNgkuUtTX7vT1BayN8TqCumOnHylQleclOBpN0PP3ihj1
         IcIygZ3NCpzJAd3FaXaMzkdl09NfEOTetK9S6LEun0tQGdlc9NU5/To2Lrds3CV77L6h
         /SywsTJsJgH4K0NmGAuz0xce+Ua7mjwX5TOpy3tFMSJQfFeTrXJrK3AbmVxjvuAOe6FA
         F6Og==
X-Forwarded-Encrypted: i=1; AJvYcCXhx+gin0mcw28qeGH5di2Www1lG3bHx5F+aeGbP7RQgDnhvBPp1LdvjaFSEU+s/VUA5mvBsl3+CQ4=@lists.xenproject.org
X-Gm-Message-State: AOJu0Yzgy12gfnT8zm00kmHoVa1VFqs9By/UgDYyDvjqX54Z71YPyFf2
	IJeemPddd++Cz45ohZvy5HRHCZvfdeEYQzXyBqlsusgCMGggXNVdDhHT
X-Gm-Gg: AeBDieuj19w/4i/X9+vOAWr/WmfPLWWoDC7suUY3uxF0ED5eqcoBkyjkX+ElwaokuW7
	VuDxhYsGwgf2nYDHAsuVvHsit1aAwaHK5SUsjvzaj7OTXg+qWlXyn03Fyr7g/HKT1WUwIJw95vU
	qhrMg3eBfQl5I7/urMRHEL25VA0cBAt2VP3oNT6LSnrCjgTxMESb9aD+B0lxJvvcJPNC4liuL0H
	G8jwAa9LbC0rM10gHRwTa9VIj2oX18SZ4gAdoRU/Qpdjj1tdYWT8vEoyN+xKuV0jez8y5vEFXQw
	B9gNdSZLNPVCIXhbeXHuc2okN/97p5gNIyu4SFiC8R59lEhLlZZ+aZClOCXdTY7AM3csQ32xUj8
	PzNEJMQR/i8sSYH6ZyIUKqwO0SNCBvAEH4g9IeEj5udPJvF+KNZLuxvGTJzG/x8XzVJUIiIylZO
	EwCYtDoTTmZKi51ySSgXnka7Ed0mg2/0be16UgGicYP7Ljyr+bTcFdetkhZzJ5xR3yGEjecY2um
	ws=
X-Received: by 2002:a05:6000:220f:b0:43c:cda2:4f2a with SMTP id ffacd0b85a97d-43d5956c25bmr3974121f8f.4.1775723768817;
        Thu, 09 Apr 2026 01:36:08 -0700 (PDT)
Message-ID: <73640145-c214-4904-a195-107b2400e519@gmail.com>
Date: Thu, 9 Apr 2026 10:36:07 +0200
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH v2 1/2] make ioremap_attr() common
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.pau@citrix.com>, Alistair Francis <alistair.francis@wdc.com>,
 Connor Davis <connojdavis@gmail.com>,
 Bertrand Marquis <bertrand.marquis@arm.com>,
 Volodymyr Babchuk <volodymyr_babchuk@epam.com>
References: <145299a0-b25c-4612-82c6-9401a2f88ad2@suse.com>
 <72526f3a-726a-4a1e-8d80-1a336175c1af@suse.com>
Content-Language: en-US
From: Oleksii Kurochko <oleksii.kurochko@gmail.com>
In-Reply-To: <72526f3a-726a-4a1e-8d80-1a336175c1af@suse.com>
Content-Type: text/plain; charset=UTF-8; format=flowed
Content-Transfer-Encoding: 7bit
X-purgate-ID: tlsNG-16d1c6/1775723769-5F3373D8-55BEEB50/10/73395122804
X-purgate-type: spam
X-purgate-size: 624



On 4/8/26 2:07 PM, Jan Beulich wrote:
> This core backing function is uniform; what varies across architectures
> are the attributes passed and hence the wrappers around it. Yet of course
> extra checking or special handling may be needed per arch, so introduce a
> suitable hook.
> 
> Signed-off-by: Jan Beulich <jbeulich@suse.com>
> ---

RISC-V part LGTM:
   Reviewed-by: Oleksii Kurochko <oleksii.kurochko@gmail.com> # riscv

I've also tested on my test cases this patch and the next one and it 
works fine:
   Tested-by: Oleksii Kurochko <oleksii.kurochko@gmail.com> # riscv

Thanks.

~ Oleksii



From xen-devel-bounces@lists.xenproject.org Thu Apr 09 08:39:46 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 09 Apr 2026 08:39:46 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1276853.1562154 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wAkvQ-0006rS-Gw; Thu, 09 Apr 2026 08:39:44 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1276853.1562154; Thu, 09 Apr 2026 08: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 1wAkvQ-0006rL-EG; Thu, 09 Apr 2026 08:39:44 +0000
Received: by outflank-mailman (input) for mailman id 1276853;
 Thu, 09 Apr 2026 08:39:43 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <andrew.cooper3@citrix.com>) id 1wAkvP-0006rF-DT
 for xen-devel@lists.xenproject.org; Thu, 09 Apr 2026 08:39:43 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wAkvO-008mV5-Ih
 for xen-devel@lists.xenproject.org; Thu, 09 Apr 2026 10:39:42 +0200
Received: from [10.42.69.9] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <andrew.cooper3@citrix.com>)
 id 69d765c3-5cb7-0a2a0a5109dd-0a2a45098192-46
 for <xen-devel@lists.xenproject.org>; Thu, 09 Apr 2026 10:39:42 +0200
Received: from [209.85.221.41] (helo=mail-wr1-f41.google.com)
 by tlsNG-bad1c0.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.0)
 (envelope-from <andrew.cooper3@citrix.com>)
 id 69d765cd-bf79-0a2a45090019-d155dd29ec6d-3
 for <xen-devel@lists.xenproject.org>; Thu, 09 Apr 2026 10:39:42 +0200
Received: by mail-wr1-f41.google.com with SMTP id
 ffacd0b85a97d-43d5ec211abso169707f8f.0
 for <xen-devel@lists.xenproject.org>; Thu, 09 Apr 2026 01:39:42 -0700 (PDT)
Received: from localhost.localdomain (host-78-146-242-105.as13285.net.
 [78.146.242.105]) by smtp.gmail.com with ESMTPSA id
 ffacd0b85a97d-43d1e4f843dsm63198619f8f.37.2026.04.09.01.39.40
 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
 Thu, 09 Apr 2026 01:39:40 -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=google header.d=citrix.com header.i="@citrix.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=citrix.com; s=google; t=1775723981; x=1776328781; 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;
        bh=jaQzW2zsO6xzweBk8eEVST1i2bn1IOz3hB6zVQP0mxw=;
        b=Zn3wg6u/c5J0kHZa+U23IY+8P857PxGEzjBDQpYvGfDoKKDTMxx7QBVtls/45SPUap
         /jfTbWqNa+rLfzYppKSeekD9M1aJuyWGibzflCpsYTIiKubIJJDnmx8fPgwmHjh7qEFy
         luodMWlz0MSrz0iFxwfWn+gDGjRHME0fbF2fc=
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20251104; t=1775723981; x=1776328781;
        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;
        bh=jaQzW2zsO6xzweBk8eEVST1i2bn1IOz3hB6zVQP0mxw=;
        b=gO8Bxz5dMNqHmtrq+fhQyQq8TWVYRnYxRhsAu1Ol9DowXDxFL6sfhvGuqkuq0A908C
         LMJhACDmoOvIwCM2NYVObDnXILDgNbWR5smAC95NfD8HF78p/URNz9eTRtbO8LGB/5M2
         yLbSvv3g/gB6SqS041DYPm9X86tEQM3rNHD4J9LS7qMm02tqPaRI1J6SJ50N4xVb2Il+
         b/UjfEiCNb1qSQaz80zisz0ABXVcpWWXW6koI6PydtiyUhLDUphkpZCHexFmhmecLTsb
         iqQP/4WKWnEYjVyBVSA1fBrdkHNFjsaV3s4J99tbUFfG/8Tsakj2cr6u9FlGtA3Gzyl/
         MXbg==
X-Gm-Message-State: AOJu0YyzT4ugn/6W7X7+RqzOVAuVUNjwYVRB0UAnwZZXqHg3zlQndJnE
	JGuChpFrMiwpY1QbDR6r/vr4JtvWSuNJzbHT+SyX9YvvcvQzmcps49yojocAvqZZsoFf951ACx1
	5sZSm9rqv9Q==
X-Gm-Gg: AeBDieuURV04z6G91ZnKun2kEwMBa4+N7TImri6ur3TvVOxlIWoSvpInRhz6gmrDHkm
	0uqcuUVc0p3Iww4eTbRFTw3MqZ3ihlxU6ryu3PtbXmQ9fkxpWg/Cex+mfCJwYMN49Zt70mnrd9x
	vgEBU3+E7ZdfDu5cTuDSqAvjtMblh/lDmwxbzTGHj/dH7GrIfr+vGpzumU33BcbDre82zND0aES
	7rWHRtlfygYyUSu2iAmdqNfZ7Qt5+UqrBvXUN8OsvNP/pV5+QO6WrybEWGmL7QgG/xXrggORPIm
	I/JGpeNZQhEhh7ljE5UGkbmQ0socZKyE8QEdRh7BS+essssMBRrCrdLBYSDpAVigqsK/cNg3754
	8A4AE0QldfVwcty+7TDHue6HPXc4SVB0PyKsv+tNnLeb8rVkTgaTmVvdNq/3ewwLV4LeoGceOez
	3iIcXYLgK1S81taS9z9QIjgCgct+SUrbCIlWxJD4TRdGJpWPMhmevuhPVDNukh9cUl9v/O0zGvp
	JSX
X-Received: by 2002:a05:6000:400e:b0:43b:86ce:27a1 with SMTP id ffacd0b85a97d-43d29277093mr33432410f8f.17.1775723981150;
        Thu, 09 Apr 2026 01:39:41 -0700 (PDT)
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.pau@citrix.com>,
	Teddy Astie <teddy.astie@vates.tech>
Subject: [PATCH] x86/extable: Adjust UD1 encoding in stub_selftest()
Date: Thu,  9 Apr 2026 09:39:38 +0100
Message-Id: <20260409083938.137871-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/1775723982-2ED4F152-8E9B7387/0/0
X-purgate-type: clean
X-purgate-size: 1145

The 0x90 is a ModRM byte and technically needs following by an imm32.

Switch to 0xc0 which encodes two %eax operands, and is a complete instruction.

No practical change.

Reported-by: Jan Beulich <jbeulich@suse.com>
Signed-off-by: Andrew Cooper <andrew.cooper3@citrix.com>
---
CC: Jan Beulich <jbeulich@suse.com>
CC: Roger Pau Monné <roger.pau@citrix.com>
CC: Teddy Astie <teddy.astie@vates.tech>
---
 xen/arch/x86/extable.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/xen/arch/x86/extable.c b/xen/arch/x86/extable.c
index a9b6c6b904f5..e1c8c9fab811 100644
--- a/xen/arch/x86/extable.c
+++ b/xen/arch/x86/extable.c
@@ -157,7 +157,7 @@ int __init cf_check stub_selftest(void)
         union stub_exception_token res;
     } tests[] __initconst = {
 #define endbr64 0xf3, 0x0f, 0x1e, 0xfa
-        { .opc = { endbr64, 0x0f, 0xb9, 0x90 }, /* ud1 */
+        { .opc = { endbr64, 0x0f, 0xb9, 0xc0 }, /* ud1 %eax,%eax */
           .res.fields.trapnr = X86_EXC_UD },
         { .opc = { endbr64, 0x90, 0x02, 0x00 }, /* nop; add (%rax),%al */
           .rax = 0x0123456789abcdef,
-- 
2.39.5



From xen-devel-bounces@lists.xenproject.org Thu Apr 09 08:42:39 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 09 Apr 2026 08:42:39 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1276861.1562163 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wAkyA-0008Kp-TU; Thu, 09 Apr 2026 08:42:34 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1276861.1562163; Thu, 09 Apr 2026 08:42: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 1wAkyA-0008Ki-QX; Thu, 09 Apr 2026 08:42:34 +0000
Received: by outflank-mailman (input) for mailman id 1276861;
 Thu, 09 Apr 2026 08:42:33 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <jbeulich@suse.com>) id 1wAky9-0008Ka-Bl
 for xen-devel@lists.xenproject.org; Thu, 09 Apr 2026 08:42:33 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wAky8-00CmoR-HC
 for xen-devel@lists.xenproject.org; Thu, 09 Apr 2026 10:42:32 +0200
Received: from [10.42.69.1] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <jbeulich@suse.com>)
 id 69d76671-e002-0a2a0a5209dd-0a2a4501cffa-24
 for <xen-devel@lists.xenproject.org>; Thu, 09 Apr 2026 10:42:32 +0200
Received: from [209.85.128.45] (helo=mail-wm1-f45.google.com)
 by tlsNG-d62444.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.0)
 (envelope-from <jbeulich@suse.com>)
 id 69d76678-6fc9-0a2a45010019-d155802dd550-3
 for <xen-devel@lists.xenproject.org>; Thu, 09 Apr 2026 10:42:32 +0200
Received: by mail-wm1-f45.google.com with SMTP id
 5b1f17b1804b1-488ba840146so5390095e9.1
 for <xen-devel@lists.xenproject.org>; Thu, 09 Apr 2026 01:42:32 -0700 (PDT)
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-488ccf9b919sm37485315e9.0.2026.04.09.01.42.31
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Thu, 09 Apr 2026 01:42:31 -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=google header.d=suse.com header.i="@suse.com" header.h="Content-Transfer-Encoding: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=1775724152; x=1776328952; darn=lists.xenproject.org;
        h=content-transfer-encoding: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;
        bh=SCR40k7aRHl+E+LEkRO6IHy6bxKDBGVW779or3apk+k=;
        b=T4+RB5Pxp+/Qeayclikip2dvFY/pz2hQKNQBHqIKzqL8uyui3BHKHYtyUlzKG84arg
         R3z6cP+LHtI4ZwPo1Pmxgxx3AjynNYzpWcWVuhyTobFYy1TnRJpIYnfYArv1G2LN6Zdh
         lotePXA631+u/qjWuX+RTenT4ehnfC/WuR3vyrdepuAbDCFRRj239/FUjMAW00fUn6wx
         IS7uCPROlvYDzGts3dqsxxAZeve3w7JRFYmJvMSCvHLgcifWF9cg/MfHlONfKfeGPqwI
         1MjgYm5hzGPVAOPXTkx4X/FjWf4RrXZa44K93B/Li/AxokJCSuq1ZtGk+yFk9or+jr7u
         LjEw==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20251104; t=1775724152; x=1776328952;
        h=content-transfer-encoding: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;
        bh=SCR40k7aRHl+E+LEkRO6IHy6bxKDBGVW779or3apk+k=;
        b=lcavm/YV2NO58t1hF7CddX+1UHmVuIZ/NHwnoocsxCgQq4H/xNy14xdtgVCMhaxkS+
         I5gqXEMEtda+01Ozva/FMDz6kZblOzUct87TDCSEzM0lbJQszIu6Guv8twPUw3mihP8g
         mkAamHiP33B9y0powpznzD9r42Mv16z/6DqoC2W3Peljb45RUk/qsk01DO9ODlPO1Dtl
         TXP4cH8CMFNs3D3B1a3rmwSDNgm8ef6bkaIVz5xE7ijRLOeVWQBEhb9ks8ezaMHm1qIy
         0vh66g+eq9PlH/tiR7P1SmvGzmBetDRJ2M0cVbBxoGW4NyxDUub6U6RJOUwRneNHzYIQ
         B+2g==
X-Forwarded-Encrypted: i=1; AJvYcCUPAhDtC28uTMI2GBP7mUW4vvxmKKGZ9joCnDHsthtGMI+rqylVuxrjfBmZxIvka9Iwg7JrM9LD1Bo=@lists.xenproject.org
X-Gm-Message-State: AOJu0Yx3Kh/pozrjComU1aJaSCFwlRRTwMWIJ97oczuHzKzTNJ7mENgv
	RDkOA99OVGKq6Ay+LB4F5goowjItkV9h8FDfstNjVhcbJeOhRI3TCgyMaHoBGc8TBA==
X-Gm-Gg: AeBDietDnoRMVZW3hcbHmY2AtRWp0fB6nW4EOEjzZVTnYhRm7cPAz2EpreY+UzuKA/4
	qQemIrUy0Ve/Po8daUTKmmLBaZNnRuuExEZiWx5xmnHiHhBfM98wnb0nom9UmxtDhGjQgDFe0zK
	0eGArCuLEnbtGTBZhF7zPJblx9dBaMg0v7e9+n7mYLJWP1ryjHpMC6eM5RxmszvLxPNmp4+CBAx
	J7VMOhIve8HImExhcaacTeXWSPD0uaOMEtOkCKzSFwbX82+A1lWuHw1A1+RTsZLyhBcfFla4Utj
	cFJJO7BWzBVxoEVZWNf5DOr3l4tNF9eYD1M7rO3ElmZjtxgPhGBq/+Q/YFx7Ha2RqX6yNbCDNnq
	3mMXRe3KHYsTvBl5Fhi9a5Z8prADdgEnJYz77SACs/AvFdwOGtxDDM0n5Q/Qurvmk3T8yC356/O
	Mr7PI6i+K/cD9kmRxBMgmOuAldFuz58/SxfNZ8Fc7hdhpoJnxr1SQulk0NYogxYjXhDi+8qJCzs
	+kBDDe6MZndCs0=
X-Received: by 2002:a05:600c:4448:b0:488:ac01:72b6 with SMTP id 5b1f17b1804b1-488ccfe63eemr35792415e9.21.1775724151760;
        Thu, 09 Apr 2026 01:42:31 -0700 (PDT)
Message-ID: <2ab2425b-6795-4e55-975e-271a22ef1063@suse.com>
Date: Thu, 9 Apr 2026 10:42:30 +0200
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH v2 3/3] x86: prefer shadow stack for producing call traces
To: Andrew Cooper <andrew.cooper3@citrix.com>
Cc: =?UTF-8?Q?Roger_Pau_Monn=C3=A9?= <roger.pau@citrix.com>,
 Teddy Astie <teddy.astie@vates.tech>,
 "xen-devel@lists.xenproject.org" <xen-devel@lists.xenproject.org>
References: <f064c3af-c22a-40e0-a268-ee37e34297a3@suse.com>
 <4bcc73db-38da-446e-b277-cf94c49002a1@suse.com>
 <7ca7679f-c160-44c2-98ed-f1b1761255d4@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: <7ca7679f-c160-44c2-98ed-f1b1761255d4@citrix.com>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
X-purgate-ID: tlsNG-d62444/1775724152-14EE3185-049B8097/0/0
X-purgate-type: clean
X-purgate-size: 2259

On 08.04.2026 19:53, Andrew Cooper wrote:
> On 08/04/2026 1:23 pm, Jan Beulich wrote:
>> Shadow stacks contain little more than return addresses, and they in
>> particular allow precise call traces also without FRAME_POINTER.
> 
> Do you have an example of what such a backtrace now looks like ?

I don't have one to hand, but I'll add an example for v3.

>> ---
>> 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.
>>
>> Perhaps having a printk() for the PV entry case is meaningless, for
>> - no frame being pushed when entered from CPL=3 (64-bit PV),
>> - no entry possible from CPL<3 (32-bit PV disabled when CET is active)?
>> In which case the comment probably should just be "Bogus." and the code
>> merely be "break;".
> 
> Yes, PV32 doesn't exist when CET-SS is active, and PV64 doesn't push a
> frame.  regs->ssp will point to the supervisor token (IDT delivery) or
> on the boundary with the regular stack (FRED).

Okay, I'll change that then as indicated.

>> Quite likely a number of other uses of is_active_kernel_text() also want
>> amending with in_stub().
> 
> There are very few things which can exist on a shadow stack.
> 
> 1) Tokens (supervisor, restore or prev)
> 2) Return address
> 3) Old-SSP
> 4) Old-CS
> 
> Intel recommend not allowing code or stacks to be in the bottom 64k of
> the address space to prevent type confusion between Old-CS and the other
> values.  Xen matches this expectation, but it might be wise to check for
> it explicitly.

What exactly do you mean here? Neither is_active_kernel_text() nor
in_stub() nor the further "!((val ^ *ptr) >> (PAGE_SHIFT + STACK_ORDER))"
(which I only now notice can't be quite right, as val was read from *ptr;
I think (unsigned long)ptr is meant instead) would yield true there. If,
as per above, in the remaining else we'll have just "break", what would
such a separate check be good for?

Jan


From xen-devel-bounces@lists.xenproject.org Thu Apr 09 09:19:09 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 09 Apr 2026 09:19:09 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1276886.1562176 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wAlXL-0005ER-Nh; Thu, 09 Apr 2026 09:18:55 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1276886.1562176; Thu, 09 Apr 2026 09:18: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 1wAlXL-0005EK-Kf; Thu, 09 Apr 2026 09:18:55 +0000
Received: by outflank-mailman (input) for mailman id 1276886;
 Thu, 09 Apr 2026 09:18:54 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <andrew.cooper3@citrix.com>) id 1wAlXK-0005EE-7R
 for xen-devel@lists.xenproject.org; Thu, 09 Apr 2026 09:18:54 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wAlXJ-000xTX-Ea
 for xen-devel@lists.xenproject.org; Thu, 09 Apr 2026 11:18:53 +0200
Received: from [10.42.69.7] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <andrew.cooper3@citrix.com>)
 id 69d76efb-bab6-0a2a0a5309dd-0a2a4507afc6-4
 for <xen-devel@lists.xenproject.org>; Thu, 09 Apr 2026 11:18:53 +0200
Received: from [209.85.221.48] (helo=mail-wr1-f48.google.com)
 by tlsNG-ef75cf.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.0)
 (envelope-from <andrew.cooper3@citrix.com>)
 id 69d76efd-ba2d-0a2a45070019-d155dd30acd6-3
 for <xen-devel@lists.xenproject.org>; Thu, 09 Apr 2026 11:18:53 +0200
Received: by mail-wr1-f48.google.com with SMTP id
 ffacd0b85a97d-43b983bb07eso368186f8f.0
 for <xen-devel@lists.xenproject.org>; Thu, 09 Apr 2026 02:18:53 -0700 (PDT)
Received: from localhost.localdomain (host-78-146-242-105.as13285.net.
 [78.146.242.105]) by smtp.gmail.com with ESMTPSA id
 ffacd0b85a97d-43d1e4d2971sm64967102f8f.22.2026.04.09.02.18.50
 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
 Thu, 09 Apr 2026 02:18:51 -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=google header.d=citrix.com header.i="@citrix.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=citrix.com; s=google; t=1775726332; x=1776331132; 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;
        bh=MeW50FrCL89/SWSL+Q6lRGl8B2jbdOOHYY2YroAYS5w=;
        b=vX8t6hJ4U/kL/f9D0+fCyO5zyStyzoxXgNVRGhj98Bo3ankwEYco1ymjFKY4wr5b+a
         YMC5/h7qtd+kn10wQjeo0JnKmQhjiuv/cvL/7rfeIBuaYeYxae+ciyXC9P4Ajp8JGDZH
         NQcWVGsXwgbClv/qZ6+raD7ZxiZd9ZO165ejw=
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20251104; t=1775726332; x=1776331132;
        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;
        bh=MeW50FrCL89/SWSL+Q6lRGl8B2jbdOOHYY2YroAYS5w=;
        b=LvM20OnjEn+OFALECgiiQMl5LpCmBHTsqa1eBAGBh1/Q4VmA6qChEMJ9gytxymSBpR
         Tk4AMkSuXJBuNIr1UE0VqaFIyLy1arBpVwv7jw+BD1ODUcFnbbQ+OZl1B2AaXKEwO3vy
         ivu0cVc4bgEP88Pz8MNWBy6FcPseJf1d5jhLlao8DfO+Xa3tTmp2ZeuyaK+XtiyFRC6e
         rPJ+eVPYwj5URYVDcrmZ4tXy52Sd7TD1ujF5Wm+kmfBDMlLfBPAQmUDV7VvRUn8QTzpc
         qZ1qt/5BqjcDlXpqbSYTSb0diX1CgG1VQ5NvvhjW5QcidoPPD4rH9BtepjY8FkKdm1a/
         0q+w==
X-Gm-Message-State: AOJu0YyXcMcck1tYD+Qn2gJ6D4EZIHOrvdkNi1Lf6HoQGwMBdZFTvE1C
	KK5PQ+jmpGx/Bcr0RxSpf7s3egngFwY5uQ98zi/uMXHjodwoGymKCH0/HbLy593WzK5eZ0AfrCA
	ah/rl
X-Gm-Gg: AeBDiev7xsQlG4uZtI0uS0q57KHvLR5ykSaBE9Jq9Mk//n2qxvRNctD1kneY1fA5hgh
	iL7qcizoEzaro9UAHxIYFWL7O8bZtzdwQF7NmDBR9lE1Liv2FxOkAk/4sP/JIBCfXTCe1q32J+9
	F9AmZmwO8Y45E49PbqjLoSfH92Dp2nq18K9/0ro8lsxubTo5PRUcKtlZ64nAQb1nL7B92xANRiu
	1QoZPcchUYSHcu1sVfNJuOecmmqPezdJNwpPugfPyUWwpBVi0+lXkdUwcJdCNApEayJVNihc+8g
	6e5v5me+V1fJLg4YQi/ugCRIUbBZsJASoI5sKMThOi2Ut2lOpQADedckwRBbKKS3O0wpaPaZXiX
	4/z+Nz+05gkKMVwSw+Axrk0rNTqnK+ql0mpVen1qn8Bkrkf9D1XIpHglXHQT+K3wfnIN9f+pbKt
	osuwE3Cr8P3SH27rdzwjSENuwHdZYwwP2+CokuBxFqV201AreP9WkxTzN/6A4tR0flyjqY6tGnN
	HGN
X-Received: by 2002:a5d:5d0f:0:b0:43b:3d54:3154 with SMTP id ffacd0b85a97d-43d29277113mr34409087f8f.7.1775726331570;
        Thu, 09 Apr 2026 02:18:51 -0700 (PDT)
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.pau@citrix.com>,
	Teddy Astie <teddy.astie@vates.tech>
Subject: [PATCH] x86/pv: Adjust the save_segments() comment regarding MSR_GS_SHADOW
Date: Thu,  9 Apr 2026 10:18:48 +0100
Message-Id: <20260409091848.139077-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/1775726333-8B34C41E-6AAA552B/0/0
X-purgate-type: clean
X-purgate-size: 1409

This is slightly stale mentioning SWAPGS and not LKGS.  However, take the
opportunity to make the comment more general and less likely to bitrot.

It would be a serious vulnerability for operating systems generally if CPL3
could modify GS_SHADOW at all.

No functional change.

Signed-off-by: Andrew Cooper <andrew.cooper3@citrix.com>
---
CC: Jan Beulich <jbeulich@suse.com>
CC: Roger Pau Monné <roger.pau@citrix.com>
CC: Teddy Astie <teddy.astie@vates.tech>
---
 xen/arch/x86/domain.c | 5 ++---
 1 file changed, 2 insertions(+), 3 deletions(-)

diff --git a/xen/arch/x86/domain.c b/xen/arch/x86/domain.c
index 1151997758c6..592530e53bcc 100644
--- a/xen/arch/x86/domain.c
+++ b/xen/arch/x86/domain.c
@@ -1952,9 +1952,8 @@ static void load_segments(struct vcpu *n)
  * changes to bases can also be made with the WR{FS,GS}BASE instructions, when
  * enabled.
  *
- * Guests however cannot use SWAPGS, so there is no mechanism to modify the
- * inactive GS base behind Xen's back.  Therefore, Xen's copy of the inactive
- * GS base is still accurate, and doesn't need reading back from hardware.
+ * Guests cannot modify the inactive GS base behind Xen's back.  Therefore
+ * Xen's copy is still accurate and doesn't need reading back.
  *
  * Under FRED, hardware automatically swaps GS for us, so SHADOW_GS is the
  * active GS from the guest's point of view.
-- 
2.39.5



From xen-devel-bounces@lists.xenproject.org Thu Apr 09 09:21:14 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 09 Apr 2026 09:21:14 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1276892.1562185 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wAlZZ-0006if-2e; Thu, 09 Apr 2026 09:21:13 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1276892.1562185; Thu, 09 Apr 2026 09:21: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 1wAlZY-0006iY-W4; Thu, 09 Apr 2026 09:21:12 +0000
Received: by outflank-mailman (input) for mailman id 1276892;
 Thu, 09 Apr 2026 09:21:11 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <jbeulich@suse.com>) id 1wAlZX-0006iP-Cr
 for xen-devel@lists.xenproject.org; Thu, 09 Apr 2026 09:21:11 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wAlZV-008Wwm-7A
 for xen-devel@lists.xenproject.org; Thu, 09 Apr 2026 11:21:10 +0200
Received: from [10.42.69.8] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <jbeulich@suse.com>)
 id 69d76f85-e002-0a2a0a5209dd-0a2a45088660-8
 for <xen-devel@lists.xenproject.org>; Thu, 09 Apr 2026 11:21:10 +0200
Received: from [209.85.128.52] (helo=mail-wm1-f52.google.com)
 by tlsNG-c1860d.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.0)
 (envelope-from <jbeulich@suse.com>)
 id 69d76f86-fab6-0a2a45080019-d1558034f076-3
 for <xen-devel@lists.xenproject.org>; Thu, 09 Apr 2026 11:21:10 +0200
Received: by mail-wm1-f52.google.com with SMTP id
 5b1f17b1804b1-488d2079582so2577645e9.2
 for <xen-devel@lists.xenproject.org>; Thu, 09 Apr 2026 02:21:10 -0700 (PDT)
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-488cd1d171dsm29121405e9.5.2026.04.09.02.21.09
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Thu, 09 Apr 2026 02:21:09 -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=google header.d=suse.com header.i="@suse.com" header.h="Content-Transfer-Encoding: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=1775726470; x=1776331270; darn=lists.xenproject.org;
        h=content-transfer-encoding:autocrypt:subject:from:cc:to
         :content-language:user-agent:mime-version:date:message-id:from:to:cc
         :subject:date:message-id:reply-to;
        bh=Xa13bn0iuGxKNch2YqSvPEtnylnjQyMWF9FknEEfDuA=;
        b=T1u7kGuuZqZ9LvQP3bsQNY2yTIZsawFy5aXlb1+h4TbOqZ/xG+aaW7zcIPFiatdji0
         RRJ9GXZ0M1tLHGXzDFa8rt8lglWGNY76aj3XgTuMeLkb1uuUVCxEEuv5hWw02x1JndOZ
         S7nG0Yv3gvHmyI722pFsYBOANPw7sVfsNkrtkcKJ+33QcQbz1fxWUp6Qc2H7z04vIbZp
         NE8ARkaOcritOy3WMKuZpdhhFnMmKH/23O9SwXWVAqAXRNDsBlYnO4ghO+AkM2qmPR0y
         JhO/70yuSQ4+WW48KlMTA0Xf0M2kKrlROqcz1lFE8OIjBqPEgc74d/s6jK14kCVrGQip
         86bQ==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20251104; t=1775726470; x=1776331270;
        h=content-transfer-encoding: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;
        bh=Xa13bn0iuGxKNch2YqSvPEtnylnjQyMWF9FknEEfDuA=;
        b=aBZL9+VfTKTgneaxibMcjlqj4lpD0rd4iNsMp6JFAR22f3brlArwD0GtwnQizh2J1T
         X/YF9iAiq+TUMZ9eDg8seTknYiCjePhwr3wNQmSknmnd6CGIE1IEXdX8OX4gXF4vdSAE
         oKp9Y9BVx+h1xKdUzBst40t4MvLHt8LO1/8uJxcgio0igUJC5LNxiBBrfJjflAxKToE9
         n+WNuvOvAhSZXTWdOaVYb/B04YfJ7JuC/2rG2UiX8MSVPmuxA3MAWS/4UtiQviSCNAQ+
         Z2TgB7l/Wc+efDZUXWoERtze8OMjkCOR4nSpfMG2epCCfkvAxpKUqDO3aGVv+AFqKpKi
         ggDA==
X-Gm-Message-State: AOJu0Yyz0hgx4DSyic5F7yq7U1XHVjMkJoaGJVqojAlCYUtF+375xsAY
	Ofi/0KuMBsp32EbDpbjA+7r3aP+aMpX0NmvC91FAZJBAKrQ3GS/9AP6gWwgjUcGUs3vfYz8tMAE
	3nl6c4g==
X-Gm-Gg: AeBDiesNcSzCHwKeWjdgSoGhQkJsTJbw6yNDrjW/AZl5oG2VLSBBqEQX5Xx+XEoh+1s
	KaEIdPinQ6rU2WmbeZ2Ryk5FPeljgc6Xo0QXgjCalLfA11uiqyD0qpDjHe1ujfi69NE/fYKrYkB
	WsWBKz4bc2cDGTvpGgo8x9QP+gLbHdFrYdTXGqpt6cK13TNs18Zcs61KFs0WgWaoMbavSVrP3hO
	XB5y6FjLQUYXeXrekNu99HnlYSpKHzYu1IrNjkXDcAe4mi1wlEHzf1bRP31QYJIu5z+/0hxmdRw
	Oxzir/fkw5VbHONVzDLCPKyAUPL5tCsefiEoUNeelQ/vI0JRpjtnBnp8qZnDm1g6q4sWcoNG9As
	CR31Qn6jODcURjAiz873sjEc/Ed+AhI/d9QinUC3WYAwb118quzSGSYtI3wVpws7ktJBlt7KwbL
	UOr3rbx3bfqKWSAfFbChbUvHfqrI7FmlAAQnHi5E3GIBc6l3NTDq4pS3cd8HTIugi4ckcz2zSfj
	MeAuMU91zxIbXQ=
X-Received: by 2002:a05:600c:c0ca:b0:488:c14b:201b with SMTP id 5b1f17b1804b1-488c14b21ddmr93297345e9.10.1775726469981;
        Thu, 09 Apr 2026 02:21:09 -0700 (PDT)
Message-ID: <2fa2fb41-cb62-4a1b-84cf-822b2f97bc2b@suse.com>
Date: Thu, 9 Apr 2026 11:21:08 +0200
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>,
 =?UTF-8?Q?Roger_Pau_Monn=C3=A9?= <roger.pau@citrix.com>,
 Teddy Astie <teddy.astie@vates.tech>,
 Stewart Hildebrand <stewart.hildebrand@amd.com>
From: Jan Beulich <jbeulich@suse.com>
Subject: [PATCH] x86/APIC: handle overflow in TMICT calculation
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/1775726470-7694D497-3B324977/0/0
X-purgate-type: clean
X-purgate-size: 1595

With an expiry value on the order of 20 hours, and with a bus scale value
of 256k (as supplied by qemu), the (signed) multiplication will be UB. As
we've checked that the value is positive, we mean unsigned multiplication
anyway. Yet let's play safe against even larger expiry and bus scale
values, leveraging the compiler builtin that there is for this purpose.

While there also drop the stray cast from the actual TMICT write.

Fixes: 9062553a0dc1 ("added time and accurate timer support")
Fixes: b95beb185810 ("x86: Clean up APIC local timer handling")
Reported-by: Stewart Hildebrand <stewart.hildebrand@amd.com>
Signed-off-by: Jan Beulich <jbeulich@suse.com>
---
Sadly neither gcc5 nor gcc15 properly optimize the (effectively) two uses
of the 0xffffffffU constant: Both use a 2nd register to load the constant
(really 0xfffffffeU unless <= is used) a 2nd time.

--- a/xen/arch/x86/apic.c
+++ b/xen/arch/x86/apic.c
@@ -1224,10 +1224,16 @@ int reprogram_timer(s_time_t timeout)
     }
 
     if ( timeout && ((expire = timeout - NOW()) > 0) )
-        apic_tmict = min_t(uint64_t, (bus_scale * expire) >> BUS_SCALE_SHIFT,
-                           UINT32_MAX);
+    {
+        unsigned long product;
 
-    apic_write(APIC_TMICT, (unsigned long)apic_tmict);
+        apic_tmict = UINT32_MAX;
+        if ( !__builtin_umull_overflow(bus_scale, expire, &product) &&
+             (product >>= BUS_SCALE_SHIFT) < apic_tmict )
+            apic_tmict = product;
+    }
+
+    apic_write(APIC_TMICT, apic_tmict);
 
     return apic_tmict || !timeout;
 }


From xen-devel-bounces@lists.xenproject.org Thu Apr 09 09:40:13 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 09 Apr 2026 09:40:13 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1276921.1562233 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wAlro-0001cE-W6; Thu, 09 Apr 2026 09:40:04 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1276921.1562233; Thu, 09 Apr 2026 09:40: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 1wAlro-0001bb-TI; Thu, 09 Apr 2026 09:40:04 +0000
Received: by outflank-mailman (input) for mailman id 1276921;
 Thu, 09 Apr 2026 09:40:03 +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 1wAlrn-0001LL-K9
 for xen-devel@lists.xenproject.org; Thu, 09 Apr 2026 09:40:03 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wAlrm-00129k-W0
 for xen-devel@lists.xenproject.org; Thu, 09 Apr 2026 11:40:03 +0200
Received: from [10.42.69.8] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <andrew.cooper@citrix.com>)
 id 69d773eb-e002-0a2a0a5209dd-0a2a4508db14-24
 for <xen-devel@lists.xenproject.org>; Thu, 09 Apr 2026 11:40:02 +0200
Received: from [40.93.198.1]
 (helo=CY7PR03CU001.outbound.protection.outlook.com)
 by tlsNG-c1860d.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.0)
 (envelope-from <andrew.cooper@citrix.com>)
 id 69d773f1-fab6-0a2a45080019-285dc6014cd9-3
 for <xen-devel@lists.xenproject.org>; Thu, 09 Apr 2026 11:40:02 +0200
Received: from CH8PR03MB8275.namprd03.prod.outlook.com (2603:10b6:610:2b9::7)
 by SA2PR03MB5785.namprd03.prod.outlook.com (2603:10b6:806:119::24)
 with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9769.21; Thu, 9 Apr
 2026 09:39:59 +0000
Received: from CH8PR03MB8275.namprd03.prod.outlook.com
 ([fe80::a70d:dc32:bba8:ce37]) by CH8PR03MB8275.namprd03.prod.outlook.com
 ([fe80::a70d:dc32:bba8:ce37%6]) with mapi id 15.20.9769.018; Thu, 9 Apr 2026
 09:39: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=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=aw/SqIH+Suv+vtKxAs/IiFog3zIHU0c89AMtjn1VJmJpCqyrOlTKWDnGVzK4MdD7A1H+DNh23vXcJW/v83Z8xgg4CTV9dspN3wY7i1qMNZv7myZrkjURq6YYHr8T/CNzcnDLKmuHXk2bcESjkbwIljFCQMuVzgOAC/lYy6DzWK748bcJT5gzDTLkLSO3XxsYSju7oYrVJKr7J5lbslz8Y1Tgeluvihnhsnp003C9eK8Ssa5W6OTayt4m4YZ2v4BDbgCyNbYYb8+OBBIDLo4+jIhXaaUk8knvc9jT6+nQIsqYRi6cSJn4Qv6uOV7coZGJkiig508jpecnSSRwTiQqww==
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com;
 s=arcselector10001;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1;
 bh=gOxvfhRzXM3bOYL/bM+QCj0XR/27X2u91zMUEfTG5jw=;
 b=wr4u0HtbE5nBQ+JgKIsPGZkqDecDLiEftvcVFfLpDscFZXDh+TgazCFy7IZhBfb9t9X9W7b7gLptxr1hsJq1/e8exNKJahRcuKsAM+Q29jyUzLeZYikJMV4JEHF6zeMU28woUR7PpF4r+mzcK4XmWxRIitoauxqYBUPvCc8pJ+8kS/hNzUpa25m6lmqpFTu+AIBTJ/iok/97n5LBHMKj7QKJ425+lGS+klK0PHGNfpe0g+Y53L7N4d7hQihA5Mh41xQCu6fZgM2aFSLUB9U4WWAUCEUAAw+olnUgLGdZoitLrrKhNmL7yz0hxDSCTBzJvZMrgisXeOlZD398g8q3gw==
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=gOxvfhRzXM3bOYL/bM+QCj0XR/27X2u91zMUEfTG5jw=;
 b=VGNLpZu3eM1iRCDHFbnHAOhnBhui5jWHquFEU6inbgzNV2ENBnHV0Z+IP5uuXPXbWjQEleeVHwcyq+nf1FU9h15qwOiIs8VPAhICap39z634XVzaJcWdO3/cywfF1a16ItWYNNuvFBgdtg9hgVPWxee1cjq4EQ2bCirHaAJBZkU=
Authentication-Results: dkim=none (message not signed)
 header.d=none;dmarc=none action=none header.from=citrix.com;
Message-ID: <35802158-a43e-438d-b20a-8c748819a1f6@citrix.com>
Date: Thu, 9 Apr 2026 10:39:56 +0100
User-Agent: Mozilla Thunderbird
Cc: Andrew Cooper <andrew.cooper3@citrix.com>,
 =?UTF-8?Q?Roger_Pau_Monn=C3=A9?= <roger.pau@citrix.com>,
 Teddy Astie <teddy.astie@vates.tech>,
 Stewart Hildebrand <stewart.hildebrand@amd.com>
Subject: Re: [PATCH] x86/APIC: handle overflow in TMICT calculation
To: Jan Beulich <jbeulich@suse.com>,
 "xen-devel@lists.xenproject.org" <xen-devel@lists.xenproject.org>
References: <2fa2fb41-cb62-4a1b-84cf-822b2f97bc2b@suse.com>
Content-Language: en-GB
From: Andrew Cooper <andrew.cooper3@citrix.com>
In-Reply-To: <2fa2fb41-cb62-4a1b-84cf-822b2f97bc2b@suse.com>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 7bit
X-ClientProxiedBy: LO4P123CA0444.GBRP123.PROD.OUTLOOK.COM
 (2603:10a6:600:1a9::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_|SA2PR03MB5785:EE_
X-MS-Office365-Filtering-Correlation-Id: f1a86ce2-bb2e-4fc2-960a-08de961bf779
X-MS-Exchange-SenderADCheck: 1
X-MS-Exchange-AntiSpam-Relay: 0
X-Microsoft-Antispam:
	BCL:0;ARA:13230040|366016|1800799024|376014|22082099003|18002099003|56012099003;
X-Microsoft-Antispam-Message-Info:
	6mHNABucUx4qp5iMFli9Lw9VJOYo3gjy/vpxVF3dMWeSpzy0TY43IhYkx6jca+87a/0bUBn2UQ3p5Zm+5rh1YETIG+ttf93YPYMJCs5q/CSIs5m7s7WK8uxAgQVJN/m/Wj6lIE5UXhcy2lEipl3sLccUaIrz9bUdAM6s+xphpR97bFATfVudwdC9uyShXETEzF/sYrWwjT2S9GqyPc82o0mcv7BK3i0dnD389l4LSqVYG9leJ0I07BP4OKuL8QeMu5AQ66EYfQuNCaueWXdq4w7VZ7klHsdMkKQlqrKtEGKFkdi3at95PORpyw+tUV2GomU5oZsb7Tj5LJbK42ATQCxfXU+2fCLlFR4PaxIfUefF1YncFmB/PMGIIeYoXcIal5QnsNenVHgOb8JR262rzKZgJTmH2OeUbV2imQt+QHq+okg8OoJ27xEsVaoobkAqOHZXgTGpy03yhd23ey/icLNWh0TP59Tt012KmhqoiLmC5c5UtGiG/m+a7ciOEc0ii+681MWiHGg7i4COqvtcVHa407ORAzZYLiia1qoUDG5Wz0Ab7dncRAvQwhPvDa/RLrCffvSLi/Cp1NIZout0GJc72aQINHNamOLrsyxqQgSsYKguLqWL7NNq7/sg7y4jDEfjA6tqb/IhULRCoboq9vuS6ohWpi28VnxtJi4MnT241Dolv67CkliKzbgQuDRQebSqwR2J3rjqY+nDkbGt56w2JQ+pxhn4NoDNzhV2rMY=
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)(22082099003)(18002099003)(56012099003);DIR:OUT;SFP:1101;
X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1
X-MS-Exchange-AntiSpam-MessageData-0:
	=?utf-8?B?V29uM3gwam9nVmNPTUV0ZjRzNVNHc2JiekhXVTZtM0x4R013Y0dFTCt4elJP?=
 =?utf-8?B?VlQ2OC9LTFZhSnZ0ZmltUmlmYjRhS1JLYXVUdStnRWRVZUFtOVRVVksrVlU1?=
 =?utf-8?B?aW1hd2xsTWVjYkZOSndwOUhVaU9xSlFObWJwZXRabGZobXI4Y0xUd3E1Y2xp?=
 =?utf-8?B?Ujczbll6cDRCVTNpa2t0TExhRHhvbzlOQWIrd2p0TDlQV1VyaXVvYWJTTE5s?=
 =?utf-8?B?ZFlyMDZXT01WUCticmp1ZmJFVjVvanZ3SWFpVnR2cEhqSzhFZ051SldUdm00?=
 =?utf-8?B?aC8xNEdpaG9vYkRJUkU3ZVBPakU1T3MxbzNMNzVkSWhUcEtZSzVTWWE1OHpm?=
 =?utf-8?B?T3B4ZmRCVjl1YnpPK0kxdlc5UDd0T2lSOTZkRVY5SUl4eEVXdnlnNDR3UGtw?=
 =?utf-8?B?ZlYvZFA1UW1VUHdlRGNhWmNISk5hdm05K2I3cWFZdnJQYi9DSThPQlYxaU5z?=
 =?utf-8?B?Sm92NENSdnc4Y1JaSnVQd2ZINk9ZRmptK2tHalRLZWRZTlY2UHp3emV2WXQz?=
 =?utf-8?B?NW91VzBqVWpQU1BvbzZJRUl5MzZNd2ZiUmU5U3RyOUNSaG1kSlVaNlIzR3Jn?=
 =?utf-8?B?NEhRUnR6eGUvcjJIc29lMm1ETTBrRzF4dkxLYjhMcDloSCt5WmM5ZnBLR3cy?=
 =?utf-8?B?T3UvZk05RncwWjZsN0NmS2FiYThWbWNzVHdPTEhlRVNXYy9wT29Nb3JuWXgv?=
 =?utf-8?B?cGlsUit1MFJnY3RUNEJIT25ubGJaQ3JBNTFYWlFlSHdzOENvSEVmQUxyZ2V5?=
 =?utf-8?B?Y2FYYUJMakFpT3V3WTVmNG44Zk5tdmF5c2IvaDYrMCtGQ1hQdVhJcXVGVTZP?=
 =?utf-8?B?bGtiY3hCMEVxMW9IL280Ykc3ZkUxWTVUY3BLdmhid2MzSEJUVjRWVWpMOE1o?=
 =?utf-8?B?V1ovTEtNZzhVYWNSSk9YVGpWbXdQMkNRVDlxdE9qcW92YjBmcTBYYlZPVDRx?=
 =?utf-8?B?RE5jbjdRSm5SWHc2SDZZNGNyZnJrbVBsK0RkRE9YWi9kUVBzWFNiR2RSUWJL?=
 =?utf-8?B?VE0wNUMwTXVCNEFUSlZUTjBydXhzNkFkTnZRN05qQWlXalptYlhrNVNzWDFn?=
 =?utf-8?B?TE80eDA0c3o2Z01VZ1hBTE5ZZ0YrU1FWTjFJcnlNOGdiYktEWXdVWW9NS3NH?=
 =?utf-8?B?MDJNN0hxTnFycW9xbVBlU0t0b0lwV08zZFhiNmdOS3R5MERaTzhUbTlHUHlR?=
 =?utf-8?B?VFd6WDcvTmp6eHhjak16VGE0ZDUwNjZldmNsZXR0TkRPVUdmaE9pWGJZVWRw?=
 =?utf-8?B?Y3ZjdDYyVHVJU2wwZ2FvcTRDVnJlbEpKMVB0Y0tPdElFSE52Z0dxMjF2NGRx?=
 =?utf-8?B?VktOaEpLMmJlRnl5djh3QnJDVzlJRG5NWFJvOHd6OVpqMG1WQjN4Tkhyc0dW?=
 =?utf-8?B?T3BYdUdTWG1FeUZzSm9ncTZXSUdxSWJibEJJQ3V0ZmJoQzBtVmJ3RC94Wkhn?=
 =?utf-8?B?cW12YTFGYzMySzM4bkhOMVNXSS9kbm8wUmlnaWpEMmFiaEk5Tlo0anR1b2No?=
 =?utf-8?B?b2phSngwcE5yVWtVQ0hQNFdkclZBS0VITEZPVzZGMEFwSEEwOTdqK1p1OUVN?=
 =?utf-8?B?cDdnVEdQV1kzTTY4aXhyeS9rTWdJWEV6eFJxWTk5NDJLR1B1Y1Ryb1Y2QWxN?=
 =?utf-8?B?Sm1EVVNVQS9nalJidlIyV3NUUUYxb1A3ajFjbjhhQlVYZ3BiRDczY1o1TG1Y?=
 =?utf-8?B?NTBBSmhqb3VvaDhLV1FUSktabmJsUW1TN3hwcFNvZ2R1LzVjUm5VTUlHUStx?=
 =?utf-8?B?bGxGMnovRVpMbjlPczA2QTdvcjhHZGlHNm1HSE83WUJUZi9uTVJnc1pKbElN?=
 =?utf-8?B?aGY5TXczR0VhZnUyUEVaOGNxVEZ2UjFlM0FDeW1CdjNiell3MzlTd3hWL2xs?=
 =?utf-8?B?Q2p5TzhLRVg0TWRXaFVOTkRnS09zb08rcitNdFpwS2pubWJWWlBFV1ZETDlt?=
 =?utf-8?B?VmliQ2UyWjI1cnZxSndGSU1PSmgyN1Uza0VVaXM3VndNT2FSU0t4NUoyMEc2?=
 =?utf-8?B?WmpBdjdBcG9Eczg5Y2RTc1dFeHQ2WGU5NVgveFFqaUx6cHJTRWpmUkdxUEp4?=
 =?utf-8?B?dXJ3SjJYQlhOd1VTeUZqZTd2TzR2WnZZQ1gvNWNzcXM5Wkljd2QrUnBHL1p4?=
 =?utf-8?B?QnhNOUh3dWQ3cEpsbitGbkwwZUlpc1BKdDY3UGhrSjFvMGRlbGk1TjZWYlY5?=
 =?utf-8?B?M2pzbDl6U2pmQW40Vk8remc2Vlh5L0xQRDFVeklRdHJDdHhueEhodmtvdVFW?=
 =?utf-8?B?N2s1Wi8vZWIzbFJPcUF2cVFBeVVZNWJSTWR0K0EvT0ZzbXhGYi9yQUFFa0dR?=
 =?utf-8?B?SHFXZm9ucHlVcmVwVWowU3NSeWdIY1RoV3BiNzV1RmpDSVpuMHlBODJ4WHJv?=
 =?utf-8?Q?HZe9n1fZsLATa7WM=3D?=
X-OriginatorOrg: citrix.com
X-MS-Exchange-CrossTenant-Network-Message-Id: f1a86ce2-bb2e-4fc2-960a-08de961bf779
X-MS-Exchange-CrossTenant-AuthSource: CH8PR03MB8275.namprd03.prod.outlook.com
X-MS-Exchange-CrossTenant-AuthAs: Internal
X-MS-Exchange-CrossTenant-OriginalArrivalTime: 09 Apr 2026 09:39:59.4209
 (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: p1gCjk04M8z3orqpLG2iC913X+v/LaVqgi/dM2VMmC4uOROaNGMB1PT0Hk5Uono/BwfvomRueFmxILo1urXGBY1LHXwx9tAX5hoxme0b+0E=
X-MS-Exchange-Transport-CrossTenantHeadersStamped: SA2PR03MB5785
X-purgate-ID: tlsNG-c1860d/1775727602-77D43497-62696A1D/0/0
X-purgate-type: clean
X-purgate-size: 1940

On 09/04/2026 10:21 am, Jan Beulich wrote:
> With an expiry value on the order of 20 hours, and with a bus scale value
> of 256k (as supplied by qemu), the (signed) multiplication will be UB. As
> we've checked that the value is positive, we mean unsigned multiplication
> anyway. Yet let's play safe against even larger expiry and bus scale
> values, leveraging the compiler builtin that there is for this purpose.
>
> While there also drop the stray cast from the actual TMICT write.
>
> Fixes: 9062553a0dc1 ("added time and accurate timer support")
> Fixes: b95beb185810 ("x86: Clean up APIC local timer handling")
> Reported-by: Stewart Hildebrand <stewart.hildebrand@amd.com>
> Signed-off-by: Jan Beulich <jbeulich@suse.com>

Acked-by: Andrew Cooper <andrew.cooper3@citrix.com>

> ---
> Sadly neither gcc5 nor gcc15 properly optimize the (effectively) two uses
> of the 0xffffffffU constant: Both use a 2nd register to load the constant
> (really 0xfffffffeU unless <= is used) a 2nd time.
>
> --- a/xen/arch/x86/apic.c
> +++ b/xen/arch/x86/apic.c
> @@ -1224,10 +1224,16 @@ int reprogram_timer(s_time_t timeout)
>      }
>  
>      if ( timeout && ((expire = timeout - NOW()) > 0) )
> -        apic_tmict = min_t(uint64_t, (bus_scale * expire) >> BUS_SCALE_SHIFT,
> -                           UINT32_MAX);
> +    {
> +        unsigned long product;
>  
> -    apic_write(APIC_TMICT, (unsigned long)apic_tmict);
> +        apic_tmict = UINT32_MAX;
> +        if ( !__builtin_umull_overflow(bus_scale, expire, &product) &&
> +             (product >>= BUS_SCALE_SHIFT) < apic_tmict )
> +            apic_tmict = product;
> +    }
> +
> +    apic_write(APIC_TMICT, apic_tmict);
>  
>      return apic_tmict || !timeout;
>  }

This is fine for staging, but be aware it cannot be backported before
4.21 due to the toolchain baseline (and nothing in CI will notice, I
don't think.)

~Andrew


From xen-devel-bounces@lists.xenproject.org Thu Apr 09 09:50:34 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 09 Apr 2026 09:50:34 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1276930.1562242 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wAm1s-0003nh-SP; Thu, 09 Apr 2026 09:50:28 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1276930.1562242; Thu, 09 Apr 2026 09: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 1wAm1s-0003na-Po; Thu, 09 Apr 2026 09:50:28 +0000
Received: by outflank-mailman (input) for mailman id 1276930;
 Thu, 09 Apr 2026 09:50:27 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <bounce-md_30504962.69d77660.v1-831229dd307a461e977624eb355b0a9a@bounce.vates.tech>)
 id 1wAm1r-0003nU-99
 for xen-devel@lists.xenproject.org; Thu, 09 Apr 2026 09:50:27 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wAm1p-004x8M-TE
 for xen-devel@lists.xenproject.org; Thu, 09 Apr 2026 11:50:25 +0200
Received: from [10.42.69.10] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1) (envelope-from
 <bounce-md_30504962.69d77660.v1-831229dd307a461e977624eb355b0a9a@bounce.vates.tech>)
 id 69d77659-e002-0a2a0a5209dd-0a2a450ad9d6-40
 for <xen-devel@lists.xenproject.org>; Thu, 09 Apr 2026 11:50:25 +0200
Received: from [198.2.178.25] (helo=mail178-25.suw51.mandrillapp.com)
 by tlsNG-4011c0.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.0)
 (envelope-from
 <bounce-md_30504962.69d77660.v1-831229dd307a461e977624eb355b0a9a@bounce.vates.tech>)
 id 69d77660-ee98-0a2a450a0019-c602b219abdb-3
 for <xen-devel@lists.xenproject.org>; Thu, 09 Apr 2026 11:50:25 +0200
Received: from pmta13.mandrill.prod.suw01.rsglab.com (localhost [127.0.0.1])
 by mail178-25.suw51.mandrillapp.com (Mailchimp) with ESMTP id
 4frwCh2Mzsz4f3s7p
 for <xen-devel@lists.xenproject.org>; Thu,  9 Apr 2026 09:50:24 +0000 (GMT)
Received: from [37.26.189.201] by mandrillapp.com id
 831229dd307a461e977624eb355b0a9a; Thu, 09 Apr 2026 09:50: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=mte1 header.d=mandrillapp.com header.i="@mandrillapp.com" header.h="From:Subject:Message-Id:To:Cc:References:In-Reply-To:Feedback-ID:Date:MIME-Version:Content-Type:Content-Transfer-Encoding"; dkim=pass header.s=mte1 header.d=vates.tech header.i="teddy.astie@vates.tech" header.h="From:Subject:Message-Id:To:Cc:References:In-Reply-To:Feedback-ID:Date:MIME-Version:Content-Type:Content-Transfer-Encoding"
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=mandrillapp.com;
	s=mte1; t=1775728224; x=1775998224;
	bh=Xj62McjTPlXGlQsECLY2xvZ8K59wYl8t3c2Hd91Lmco=;
	h=From:Subject:Message-Id:To:Cc:References:In-Reply-To:Feedback-ID:
	 Date:MIME-Version:Content-Type:Content-Transfer-Encoding:CC:Date:
	 Subject:From;
	b=bZC7crDeEsXLBdNXyj4y5/VHp5hkG8hm6JT5tnW6QML7DXjzeEjErbc+7Tdedx63X
	 gZ5taI3Xmu1ClfyMQDb6N9cDXQb2ePjzeNnM3jN48uEk3M1MuWOrFBENMCYGLVEu3q
	 P//TtEzMJxii6XckqMiRUSBbA4HfogPvIOGnTYpnhXLAstGL/HrjmYi2d36mXPa09Q
	 tsNxO27KeVT3QP2MZMGWXCo7NtJ4m8kMKGl9H28q4z4qIp12NfZDLPzxp7FJNfc4gc
	 SOqwG21x9APiOWHjISny1+1wJZ/SnCgPtb5YWfYI9Gp0mO/kByZu2vfV3xXjdtvSwl
	 JehHf5t6dDImw==
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=vates.tech; s=mte1;
	t=1775728224; x=1775988724; i=teddy.astie@vates.tech;
	bh=Xj62McjTPlXGlQsECLY2xvZ8K59wYl8t3c2Hd91Lmco=;
	h=From:Subject:Message-Id:To:Cc:References:In-Reply-To:Feedback-ID:
	 Date:MIME-Version:Content-Type:Content-Transfer-Encoding:CC:Date:
	 Subject:From;
	b=oow2TDkoMeO5QTyWvP5BJ/U2WaRNbsgLwQp8u9S7IeYXPb8JNkBQ2iAlM5ZCMwgkK
	 dxfbJMYXF3CTPgHBmxcjx6e1sr+eDoiozLc2X5CvqgK+wPDuTRNlDYsDPmNnT+czuW
	 /oU/T/cquuy0M01xzQ3xrQ2YfMyLSDPXTDUjb/gS4W0DpKDvvPT4Fz/35KWuAWuzGw
	 Czio/9NQ01SzaWEsu9gCU1Wa5dvvzl6M5NftNXTXyq85cjYLp9txPCffDGar31T8Q3
	 G5zFew9MtH4LKrfGlEYBSmQVT7sJiy37hNi/WV9lpfpzDUZLoycbm6/hpFFhosSZ1v
	 c0feJYdXEv0zA==
From: "Teddy Astie" <teddy.astie@vates.tech>
Subject: =?utf-8?Q?Re:=20[PATCH]=20x86/pv:=20Adjust=20the=20save=5Fsegments()=20comment=20regarding=20MSR=5FGS=5FSHADOW?=
X-Bm-Disclaimer: Yes
X-Bm-Milter-Handled: 4ffbd6c1-ee69-4e1b-aabd-f977039bd3e2
X-Bm-Transport-Timestamp: 1775728223179
Message-Id: <60de1b7c-f11d-4f32-a84a-16eddc73b5ef@vates.tech>
To: "Andrew Cooper" <andrew.cooper3@citrix.com>, Xen-devel <xen-devel@lists.xenproject.org>
Cc: "Jan Beulich" <jbeulich@suse.com>, "=?utf-8?Q?Roger=20Pau=20Monn=C3=A9?=" <roger.pau@citrix.com>
References: <20260409091848.139077-1-andrew.cooper3@citrix.com>
In-Reply-To: <20260409091848.139077-1-andrew.cooper3@citrix.com>
X-Native-Encoded: 1
X-Report-Abuse: =?UTF-8?Q?Please=20forward=20a=20copy=20of=20this=20message,=20including=20all=20headers,=20to=20abuse@mandrill.com.=20You=20can=20also=20report=20abuse=20here:=20https://mandrillapp.com/contact/abuse=3Fid=3D30504962.831229dd307a461e977624eb355b0a9a?=
X-Mandrill-User: md_30504962
Feedback-ID: 30504962:30504962.20260409:md
Date: Thu, 09 Apr 2026 09:50:24 +0000
MIME-Version: 1.0
Content-Type: text/plain; charset=utf-8
Content-Transfer-Encoding: quoted-printable
X-purgate-ID: tlsNG-4011c0/1775728225-BF5460B1-7E0970F1/0/0
X-purgate-type: clean
X-purgate-size: 1730

Le 09/04/2026 =C3=A0 11:21, Andrew Cooper a =C3=A9crit=C2=A0:
> This is slightly stale mentioning SWAPGS and not LKGS.  However, take the
> opportunity to make the comment more general and less likely to bitrot.
> 
> It would be a serious vulnerability for operating systems generally if CP=
L3
> could modify GS_SHADOW at all.
> 
> No functional change.
> 
> Signed-off-by: Andrew Cooper <andrew.cooper3@citrix.com>
> ---
> CC: Jan Beulich <jbeulich@suse.com>
> CC: Roger Pau Monn=C3=A9 <roger.pau@citrix.com>
> CC: Teddy Astie <teddy.astie@vates.tech>
> ---
>   xen/arch/x86/domain.c | 5 ++---
>   1 file changed, 2 insertions(+), 3 deletions(-)
> 
> diff --git a/xen/arch/x86/domain.c b/xen/arch/x86/domain.c
> index 1151997758c6..592530e53bcc 100644
> --- a/xen/arch/x86/domain.c
> +++ b/xen/arch/x86/domain.c
> @@ -1952,9 +1952,8 @@ static void load_segments(struct vcpu *n)
>    * changes to bases can also be made with the WR{FS,GS}BASE instruction=
s, when
>    * enabled.
>    *
> - * Guests however cannot use SWAPGS, so there is no mechanism to modify =
the
> - * inactive GS base behind Xen's back.  Therefore, Xen's copy of the ina=
ctive
> - * GS base is still accurate, and doesn't need reading back from hardwar=
e.
> + * Guests cannot modify the inactive GS base behind Xen's back.  Therefo=
re
> + * Xen's copy is still accurate and doesn't need reading back.
>    *
>    * Under FRED, hardware automatically swaps GS for us, so SHADOW_GS is =
the
>    * active GS from the guest's point of view.

Reviewed-by: Teddy Astie <teddy.astie@vates.tech>


--
Teddy Astie | Vates XCP-ng Developer

XCP-ng & Xen Orchestra - Vates solutions

web: https://vates.tech




From xen-devel-bounces@lists.xenproject.org Thu Apr 09 10:16:56 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 09 Apr 2026 10:16:56 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1276940.1562252 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wAmRN-0007DO-S9; Thu, 09 Apr 2026 10:16:49 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1276940.1562252; Thu, 09 Apr 2026 10:16: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 1wAmRN-0007DH-P8; Thu, 09 Apr 2026 10:16:49 +0000
Received: by outflank-mailman (input) for mailman id 1276940;
 Thu, 09 Apr 2026 10:16:48 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <marmarek@invisiblethingslab.com>) id 1wAmRL-0007DB-Pp
 for xen-devel@lists.xenproject.org; Thu, 09 Apr 2026 10:16:48 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wAmRK-00BmoY-BZ
 for xen-devel@lists.xenproject.org; Thu, 09 Apr 2026 12:16:46 +0200
Received: from [10.42.69.4] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <marmarek@invisiblethingslab.com>)
 id 69d77c7f-5cb7-0a2a0a5109dd-0a2a4504bdde-12
 for <xen-devel@lists.xenproject.org>; Thu, 09 Apr 2026 12:16:46 +0200
Received: from [103.168.172.144] (helo=fout-a1-smtp.messagingengine.com)
 by tlsNG-ebf023.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.0)
 (envelope-from <marmarek@invisiblethingslab.com>)
 id 69d77c8d-bb33-0a2a45040019-67a8ac90c9cb-3
 for <xen-devel@lists.xenproject.org>; Thu, 09 Apr 2026 12:16:46 +0200
Received: from phl-compute-06.internal (phl-compute-06.internal [10.202.2.46])
 by mailfout.phl.internal (Postfix) with ESMTP id D13A9EC006A;
 Thu,  9 Apr 2026 06:16:44 -0400 (EDT)
Received: from phl-frontend-04 ([10.202.2.163])
 by phl-compute-06.internal (MEProxy); Thu, 09 Apr 2026 06:16:44 -0400
Received: by mail.messagingengine.com (Postfix) with ESMTPA; Thu,
 9 Apr 2026 06:16:43 -0400 (EDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@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=1775729804;
	 x=1775816204; bh=LvFJD7kaqB4yI+OTi31V6yKJ10VSs1gSZn5u+SUryTQ=; b=
	rl5OzLSS5w4UZv+7Ww20Vqw5t8IcB+AdlzU+Wcjch5jtNOvW/s6hXXOKtSiRVDdd
	IV1b9vSAQzgVA5bJQZkD/6PeKtpIfC2UpwFNdQ5uEgBDu9xEYhJvB0BipGlXsUij
	Tzy16P/vmTCIKvSXDBAVhcxeTzrDtkfsUZJOXm20qZKBdKd82el6ImWv73K9Xczi
	sFEQj4T4OyGLeFQAR8//+eZVkCO7CQzZXT0m3qQrBDLtifk85TzzqXhgB2t6Bsoc
	9julA26ZGGmm4BP+/0dX4WwNGui8DxbdmlWd7+tOsqpLSYobe2EHc9pHQqkkRKTq
	ysnW9TlrYFVhNr6aWwkj8Q==
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=
	1775729804; x=1775816204; bh=LvFJD7kaqB4yI+OTi31V6yKJ10VSs1gSZn5
	u+SUryTQ=; b=GlBrI2+ocf2b/CKy50jLzkIRhVeBZRdnQvwdjORItnXfVavxz7O
	9/NtzpbohP0ZpVWFjV8qn+J8YmzwD2DzSKWFtfxuGQFG6q8IsSu+BXs8sMX3oAqv
	Oj04quvasiPWYZX4SpFFfDfc0vohR0nVY8BrFgYgApsMK7gDhN2D374U0pid0v+N
	T8tAoDhXTunvlpnwhQYZnJEy2QYmyyT/8tIFqn7kt+aSTKWihNj74KCtajwyYLH4
	blBVjbDoUtg1DJTxHXYkxTFnk5g6Mt5L6xKIAvJji7VreVtuhVSFi/7fOyQD+vnc
	nkhWnBG03k4Zkd361XywH3lF5ZcFZFPX2DA==
X-ME-Sender: <xms:jHzXadI1ror2yE9t56689iO507sAb_6Kl-ps8RTvB3X8uZXNiW4HZQ>
    <xme:jHzXaQB9TGWXdI0maFzkZi9FkGAZJfzwY3RdMaDhKlWncZM3xfjw3oremjgLGtaus
    IsdKs6OLlySN1tv_KEFesyDNnyyX4xmkyLfs_ZLVRkqqeM5Mg>
X-ME-Received: <xmr:jHzXaeDL8bi0ZLSHsd0dEz-ReENd-AE3RDkZ08Tenn6Ew6eh0UnaqLM_sJEcHFla8KgOGf4yBpogBV_0zXIwG-OL7y9bpozU9tg>
X-ME-Proxy-Cause: gggruggvucftvghtrhhoucdtuddrgeefhedrtddtgddviedvvdcutefuodetggdotefrod
    ftvfcurfhrohhfihhlvgemucfhrghsthforghilhdpuffrtefokffrpgfnqfghnecuuegr
    ihhlohhuthemuceftddtnecusecvtfgvtghiphhivghnthhsucdlqddutddtmdenucfjug
    hrpeffhffvvefukfhfgggtuggjsehgtderredttdejnecuhfhrohhmpeforghrvghkucfo
    rghrtgiihihkohifshhkihdqifpkrhgvtghkihcuoehmrghrmhgrrhgvkhesihhnvhhish
    hisghlvghthhhinhhgshhlrggsrdgtohhmqeenucggtffrrghtthgvrhhnpeevueejteeg
    leelteduueevhfetgfffjeevtddvgfeiveehteehleegueelvdejveenucffohhmrghinh
    epghhithhlrggsrdgtohhmnecuvehluhhsthgvrhfuihiivgeptdenucfrrghrrghmpehm
    rghilhhfrhhomhepmhgrrhhmrghrvghksehinhhvihhsihgslhgvthhhihhnghhslhgrsg
    drtghomhdpnhgspghrtghpthhtohephedpmhhouggvpehsmhhtphhouhhtpdhrtghpthht
    ohepthhhihgvrhhrhidrvghstggrnhguvgesvhgrthgvshdrthgvtghhpdhrtghpthhtoh
    epgigvnhdquggvvhgvlheslhhishhtshdrgigvnhhprhhojhgvtghtrdhorhhgpdhrtghp
    thhtoheprghnthhhohhnhidrphgvrhgrrhgusehvrghtvghsrdhtvggthhdprhgtphhtth
    hopehjghhrohhsshesshhushgvrdgtohhmpdhrtghpthhtohepsggvrhhrrghnghgvsehr
    vgguhhgrthdrtghomh
X-ME-Proxy: <xmx:jHzXaaA4QLRj0eGW3T_r9zMwqS2NwgFZEmQqBPCDa3jF8ZSWOqKSEw>
    <xmx:jHzXaRqZzZpkyCEWzxjV67UTVToEgNyz9FMIHx1GfWDqTJDtXVXdJA>
    <xmx:jHzXacnlC1Vxecp5W2JnWR5ARa4TmZT-rsFnesSGvjmOc0Og16lQOw>
    <xmx:jHzXaZy0CGCp174TLGQ_WmB29wUXqkqDrZUy3PambhM0eRO4OQ3faw>
    <xmx:jHzXaREeqdAhrbvDooMeeZM_688dXdvWxtgM2Axcljegll2JfYvvJmUH>
Feedback-ID: i1568416f:Fastmail
Date: Thu, 9 Apr 2026 12:16:41 +0200
From: Marek =?utf-8?Q?Marczykowski-G=C3=B3recki?= <marmarek@invisiblethingslab.com>
To: Thierry Escande <thierry.escande@vates.tech>
Cc: xen-devel@lists.xenproject.org,
	Anthony PERARD <anthony.perard@vates.tech>,
	Juergen Gross <jgross@suse.com>,
	Daniel P =?utf-8?B?LiBCZXJyYW5nw6k=?= <berrange@redhat.com>
Subject: Re: [RFC PATCH 0/3] xl: Allow PCI devices to be passthrough'd via
 Qemu command line
Message-ID: <add8iXLvyWlYkrpM@mail-itl>
References: <20260408172320.539750-1-thierry.escande@vates.tech>
MIME-Version: 1.0
Content-Type: multipart/signed; micalg=pgp-sha256;
	protocol="application/pgp-signature"; boundary="FadDhAgw7qA4OlbR"
Content-Disposition: inline
In-Reply-To: <20260408172320.539750-1-thierry.escande@vates.tech>
X-purgate-ID: tlsNG-ebf023/1775729806-B273A51B-FEEC0ED7/0/0
X-purgate-type: clean
X-purgate-size: 3168


--FadDhAgw7qA4OlbR
Content-Type: text/plain; protected-headers=v1; charset=utf-8
Content-Disposition: inline
Content-Transfer-Encoding: quoted-printable
Date: Thu, 9 Apr 2026 12:16:41 +0200
From: Marek =?utf-8?Q?Marczykowski-G=C3=B3recki?= <marmarek@invisiblethingslab.com>
To: Thierry Escande <thierry.escande@vates.tech>
Cc: xen-devel@lists.xenproject.org,
	Anthony PERARD <anthony.perard@vates.tech>,
	Juergen Gross <jgross@suse.com>,
	Daniel P =?utf-8?B?LiBCZXJyYW5nw6k=?= <berrange@redhat.com>
Subject: Re: [RFC PATCH 0/3] xl: Allow PCI devices to be passthrough'd via
 Qemu command line

On Wed, Apr 08, 2026 at 05:23:39PM +0000, Thierry Escande wrote:
> This series adds support for a new 'hotplug' option for PCI devices to be
> passthrough'd to guests.
>=20
> The current mechanism for device passthrough uses QMP device_add command
> to hot-plug PCI devices to the guest Qemu instance. This is an issue for
> guests running on Q35 chipset (preliminary support posted at [1]) since t=
he
> Q35 PCI root bus does not support hotplug. Devices could be hotplugged to
> a secondary PCI bus but Xen only support 1 PCI bus for now.
>=20
> The 'hotplug' option allows to control how devices are attached to the
> guest, either by using the legacy QMP mechanism (this is the default) or =
by
> passing it directly to the Qemu command line using xen-pci-passthrough
> device.
>=20
> Example usage in cfg file:
>  pci =3D [ "00:03.0,seize=3D1,hotplug=3D0" ]
>=20
> Since Qemu -device option accepts parameters in json format, this
> patchset adds a new internal function libxl__device_pci_get_qmp_json() th=
at
> generates the device json object used for both QMP hotplug and command li=
ne
> passing.
> Also, the function libxl_pci_assignable() is made available from libxl.h
> for access in libxl_dm.c. I don't know if it's ok to make it public or if
> it should stay private. Maybe it should be renamed as
> libxl_device_pci_assignable() to match the other PCI device APIs.
>=20
> This has been successfully tested on Xen 4.22-dev and Qemu 10.0 running
> Debian VMs in both Bios and UEFI mode with a passthrough'd nvme disk.
> Disabling the hotplug mechanism might be made mandatory for Q35 machines
> later, once Q35 support is merged upstream.

Generally I like the approach, and it looks sensible on the first look.
But CI says it fails to build:
https://gitlab.com/xen-project/people/marmarek/xen/-/pipelines/2439831766

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

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

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

iQEzBAEBCAAdFiEEhrpukzGPukRmQqkK24/THMrX1ywFAmnXfIkACgkQ24/THMrX
1yzVtggAko25WLiGketDYodE72dV9YuvzZw0tInQPk3pi2jOkPQqOHb5kfKDaWP6
oH54OtYXWeFKIs6nWcbimJOEdQjIJGo/S/ZXxLUIDodxWnqQYTakG/II3fFBpcUB
cS0SwE/eCyrmGJ44++XfYuVvoqHH2aAOsWpDGnO4Yra0wb4c9vf/MCHr11wJO4Ic
PSY9Vpf5rmFGXKLCiKEZqSd/Qe3EMo+LJPXk3pmelZaa58KOWh1m+dU6iz34rl/u
3iAeSUFNi3ThazMLvQ9XznZsUZB2GlwBQ3p60CdYpF7VCIYXSYuGpJpM+xTl2+mm
SYQCXFr9xQBvaLM5Z0Xwzo2jOTbh9Q==
=hZBM
-----END PGP SIGNATURE-----

--FadDhAgw7qA4OlbR--


From xen-devel-bounces@lists.xenproject.org Thu Apr 09 10:31:28 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 09 Apr 2026 10:31:28 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1276957.1562261 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wAmfL-0001vd-23; Thu, 09 Apr 2026 10:31:15 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1276957.1562261; Thu, 09 Apr 2026 10: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 1wAmfK-0001vW-V8; Thu, 09 Apr 2026 10:31:14 +0000
Received: by outflank-mailman (input) for mailman id 1276957;
 Thu, 09 Apr 2026 10:31:14 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92) id 1wAmfJ-0001vQ-V0
 for xen-devel@lists.xenproject.org; Thu, 09 Apr 2026 10:31:14 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wAmfF-008nNS-VZ
 for xen-devel@lists.xenproject.org; Thu, 09 Apr 2026 12:31:11 +0200
Received: from [10.42.69.11] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <oleksii.kurochko@gmail.com>)
 id 69d77fe8-2eae-0a2a0a5409dd-0a2a450be74e-20
 for <xen-devel@lists.xenproject.org>; Thu, 09 Apr 2026 12:31:11 +0200
Received: from [209.85.128.51] (helo=mail-wm1-f51.google.com)
 by tlsNG-42698a.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.0)
 (envelope-from <oleksii.kurochko@gmail.com>)
 id 69d77fef-bca8-0a2a450b0019-d1558033b594-3
 for <xen-devel@lists.xenproject.org>; Thu, 09 Apr 2026 12:31:11 +0200
Received: by mail-wm1-f51.google.com with SMTP id
 5b1f17b1804b1-488b150559bso5652205e9.1
 for <xen-devel@lists.xenproject.org>; Thu, 09 Apr 2026 03:31:11 -0700 (PDT)
Received: from [192.168.1.6] (user-109-243-69-121.play-internet.pl.
 [109.243.69.121]) by smtp.gmail.com with ESMTPSA id
 5b1f17b1804b1-488cd19ea83sm99855615e9.1.2026.04.09.03.31.09
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Thu, 09 Apr 2026 03:31:10 -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=20251104 header.d=gmail.com header.i="@gmail.com" header.h="Content-Transfer-Encoding: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=20251104; t=1775730671; x=1776335471; darn=lists.xenproject.org;
        h=content-transfer-encoding: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;
        bh=0B0hVhkoZ9SWr6kKvUmCz63+jV3t69Lxeyta4aoUIqU=;
        b=kKwAawPCf4lcKcH5eHApj1UWFCyZoQWvFtXeAomJJHmupcYfQrritlLzoEK0Y4f0Ls
         +ysRuG8UMB15RmMO8Kyv25uMDEvWj2I/snk+jq70gZrwgdT9aXG1xHOuPYnA4RaaMN70
         h0s67qmcfBAEtvIKX6tuqYe+/pu3OL0forbfQxG4p6IVw7mtoNv8Ebdfe4kgikRZiik7
         W25eaj/fPIC9Plbjb/d0WwgrYNcs21SPgUd0xMGDY5MCk0zlbaJNoRjiTUoIIbdKEpfL
         BnH38015EiZGgHI5nXcokrpyRJZtLLV5tQYGp3rzG3lggDSSChke+x/Z/0P4Nyxiq465
         I9ZA==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20251104; t=1775730671; x=1776335471;
        h=content-transfer-encoding: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;
        bh=0B0hVhkoZ9SWr6kKvUmCz63+jV3t69Lxeyta4aoUIqU=;
        b=QBfiAzNwSgZiC04CQBmTquUC7xvG18FeGTTgN79Zq9S7hgcXfPg0ksn3TsALsJYBAN
         YQqjNEUhvhM0q8p3BmLJKi21bsrUZ+mtCeibUDuz5zlY/o/1gmHtV5FWUJjUh+aT41c9
         qGTC7frp2wkm627F7AWWenrjkwnk/dxU9NuJ+43czRGswkBa66N09Mzfpc/c+69mje9r
         PUyBYm8lvkMkZdVuhku4QYlfSQiSQdgscRsPhY+kEHYjcMCZto3yFmsFcB+ThFKyMkuO
         h+7l0a5r6kK5zee8+cOaj4xDyxdiINz3Fdv8jATdXng6RsF/fU+mVeluxCMMspXY+erL
         e9AA==
X-Forwarded-Encrypted: i=1; AJvYcCVciGzF4UnDHCtHI068DwP696vsKozSPEvNwKJsHyv9uXqD/JW8g8TyfYOcPAC5l2uvMZinLcOcNEc=@lists.xenproject.org
X-Gm-Message-State: AOJu0Yz4l/zn5CQOLKQRKA0/VU124TsBGYHav7Bhg62nHuEVF5rwd66o
	5kLYNW5Tau6Ij94OxCmUOZQa4mAeoO9+u3qNUjza1WziEbMannbR+zhG
X-Gm-Gg: AeBDies1+CNPpuGJtBnFGeGOiWoMn+soCuygbpzPBwUEZVlFJ4nELI4909IqJpNahE9
	+JgQnzo2DLVS6EeMP8EICun+sh2tjWcgqpS0fJ+TzQQqILvq6L1nsEmV+dgKfCn154XHIobQlhY
	SrU0M1shWJ3jVV3fS9CeasuyIcs+RrWPPfZ0uMf6IW9HgRCL3PuSJxsENlRHeSBDhi++Th0p/CI
	FZJ9RxNo4fXJ3sK/wjgZoe+FGeBD8zjGsW400N3sepTYty87xs5p05LownDty6/f9wuuhsVUNAV
	VsfFNCCcey+WzRsC5CCcVjnDCVGqvvUZ7i0dvQXJheeLy6ZZGtyEMq3WNNsfr/o8ZOExpwFglmX
	N+JkXr6ymp1XjcxG5Su4MhMcJagDJ9Wnr03n9B5MEjJFEyU8dAE/nUGIfZsUuCUKj1OkzNNojeP
	pS7wwPBK96KCXEpm5dFB8mGQixmJWYPo5hi2moNZOBnPJyorHwgrLWkKlpwEjZGelfQ5KhQ5nrC
	rfdW1BnVbxijw==
X-Received: by 2002:a05:600c:5292:b0:485:2ce2:4c87 with SMTP id 5b1f17b1804b1-488996cd77cmr364338815e9.4.1775730670672;
        Thu, 09 Apr 2026 03:31:10 -0700 (PDT)
Message-ID: <3b3325ea-b811-4ab2-b1ba-9808a5a4b7c5@gmail.com>
Date: Thu, 9 Apr 2026 12:31:09 +0200
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH v1 01/27] xen/riscv: Implement ARCH_PAGING_MEMPOOL
To: Jan Beulich <jbeulich@suse.com>
Cc: Romain Caritey <Romain.Caritey@microchip.com>,
 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.pau@citrix.com>,
 Stefano Stabellini <sstabellini@kernel.org>, xen-devel@lists.xenproject.org
References: <cover.1773157782.git.oleksii.kurochko@gmail.com>
 <887d914aa0ddb1884c19c9567d4633ecaf810066.1773157782.git.oleksii.kurochko@gmail.com>
 <7340581a-51a3-43b2-b180-c2de37bda4b1@suse.com>
Content-Language: en-US
From: Oleksii Kurochko <oleksii.kurochko@gmail.com>
In-Reply-To: <7340581a-51a3-43b2-b180-c2de37bda4b1@suse.com>
Content-Type: text/plain; charset=UTF-8; format=flowed
Content-Transfer-Encoding: 7bit
X-purgate-ID: tlsNG-42698a/1775730671-F4DC92A1-7322B07A/10/73395122804
X-purgate-type: spam
X-purgate-size: 4103



On 3/11/26 9:18 AM, Jan Beulich wrote:
> On 10.03.2026 18:08, Oleksii Kurochko wrote:
>> The p2m_freelist is used to allocate pages for the P2M, but to initialize
>> this list, domain_p2m_set_allocation() might be called.
>> This function is invoked in construct_domU() within the common Dom0less
>> code, and providing an implementation of domain_p2m_set_allocation() when
>> CONFIG_ARCH_PAGING_MEMPOOL=y is appropriate for RISC-V.
> 
> With this wording it is odd to see ...
> 
>> --- a/xen/arch/riscv/Kconfig
>> +++ b/xen/arch/riscv/Kconfig
>> @@ -1,5 +1,6 @@
>>   config RISCV
>>   	def_bool y
>> +	select ARCH_PAGING_MEMPOOL
> 
> ... this. You really want to settle on whether it is selected unconditionally
> or not. Also for the code below, where ...
> 
>> --- a/xen/arch/riscv/Makefile
>> +++ b/xen/arch/riscv/Makefile
>> @@ -10,7 +10,7 @@ obj-y += irq.o
>>   obj-y += kernel.o
>>   obj-y += mm.o
>>   obj-y += p2m.o
>> -obj-y += paging.o
>> +obj-$(CONFIG_ARCH_PAGING_MEMPOOL) += paging.o
>>   obj-y += pt.o
>>   obj-$(CONFIG_RISCV_64) += riscv64/
>>   obj-y += sbi.o
> 
> ... this change and any #ifdef-ary further down aren't needed unless the
> select became conditional. (Plus with the change above things likely wouldn't
> even build if ARCH_PAGING_MEMPOOL could be off under certain conditions.)

I missed if ARCH_PAGING_MEMPOOL=n then p2m.c, at least, will fail to 
compile so much more things would be needed to be #ifdef-ed.

Just for simplicity then I will set CONFIG_ARCH_PAGING_MEMPOOL=y 
unconditionally and drop all the #ifdef-s related to this config I've 
added in this patch.

> 
>> --- a/xen/arch/riscv/p2m.c
>> +++ b/xen/arch/riscv/p2m.c
>> @@ -1568,3 +1568,34 @@ struct page_info *get_page_from_gfn(struct domain *d, unsigned long gfn,
>>   
>>       return page;
>>   }
>> +
>> +#ifdef CONFIG_ARCH_PAGING_MEMPOOL
>> +
>> +int arch_set_paging_mempool_size(struct domain *d, uint64_t size)
>> +{
>> +    unsigned long pages = PFN_DOWN(size);
>> +    bool preempted = false;
>> +    int rc;
>> +
>> +    if ( (size & ~PAGE_MASK) || /* Non page-sized request? */
>> +         pages != PFN_DOWN(size) ) /* 32-bit overflow? */
>> +        return -EINVAL;
> 
> Can't this be had with just
> 
>      if ( ((paddr_t)pages << PAGE_SHIFT) != size )
>          return -EINVAL;
> 
> (and perhaps utilizing pfn_to_paddr(), even if it's not a PFN we're dealing
> with here)?

It makes sense, I will apply that for RISC-V.

Then for Arm and x86 could be done the same, I can send a separate patch 
for them.

> 
>> +    spin_lock(&d->arch.paging.lock);
>> +    rc = p2m_set_allocation(d, pages, &preempted);
>> +    spin_unlock(&d->arch.paging.lock);
>> +
>> +    ASSERT(preempted == (rc == -ERESTART));
> 
> This actually suggests that (once again) Arm code perhaps shouldn't have been
> copied verbatim: There shouldn't be a need for the "preempted" state to be
> returned back in two distinct ways.

Agree.

The preempted argument of p2m_set_allocation() could be switched to a 
plain 'bool could_preempt', preemption would then be signaled solely via 
return -ERESTART, and the caller would just check rc, so no local bool 
preempted in this function and no ASSERT.

I'm also thinking that the preempted argument could be dropped entirely, 
as it seems to exist only to conditionally enable the 
general_preempt_check() call inside the function. It is skipped only 
during domain_p2m_set_allocation(), which won't be a significant penalty 
if general_preempt_check() is called every time. All other callers pass 
a non-NULL preempted, so general_preempt_check() would always be 
executed regardless.

> 
>> +    return rc;
>> +}
>> +
>> +/* Return the size of the pool, in bytes. */
>> +int arch_get_paging_mempool_size(struct domain *d, uint64_t *size)
>> +{
>> +    *size = (uint64_t)ACCESS_ONCE(d->arch.paging.total_pages) << PAGE_SHIFT;
> 
> As per above, maybe use pfn_to_paddr()?

Yes, it could be used to be in sync with a code above.

Thanks.

~ Oleksii



From xen-devel-bounces@lists.xenproject.org Thu Apr 09 10:38:14 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 09 Apr 2026 10:38:14 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1276970.1562270 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wAmm2-0002kU-PP; Thu, 09 Apr 2026 10:38:10 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1276970.1562270; Thu, 09 Apr 2026 10:38: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 1wAmm2-0002kN-Mp; Thu, 09 Apr 2026 10:38:10 +0000
Received: by outflank-mailman (input) for mailman id 1276970;
 Thu, 09 Apr 2026 10:38:09 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <andrew.cooper3@citrix.com>) id 1wAmm1-0002jk-9c
 for xen-devel@lists.xenproject.org; Thu, 09 Apr 2026 10:38:09 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wAmm0-0057LG-Lp
 for xen-devel@lists.xenproject.org; Thu, 09 Apr 2026 12:38:08 +0200
Received: from [10.42.69.7] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <andrew.cooper3@citrix.com>)
 id 69d78180-bab6-0a2a0a5309dd-0a2a4507a80c-48
 for <xen-devel@lists.xenproject.org>; Thu, 09 Apr 2026 12:38:08 +0200
Received: from [209.85.128.42] (helo=mail-wm1-f42.google.com)
 by tlsNG-ef75cf.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.0)
 (envelope-from <andrew.cooper3@citrix.com>)
 id 69d78190-ba2d-0a2a45070019-d155802acc77-3
 for <xen-devel@lists.xenproject.org>; Thu, 09 Apr 2026 12:38:08 +0200
Received: by mail-wm1-f42.google.com with SMTP id
 5b1f17b1804b1-488971db0fdso7337415e9.0
 for <xen-devel@lists.xenproject.org>; Thu, 09 Apr 2026 03:38:08 -0700 (PDT)
Received: from localhost.localdomain (host-78-146-242-105.as13285.net.
 [78.146.242.105]) by smtp.gmail.com with ESMTPSA id
 5b1f17b1804b1-488cf9e8ab4sm51656205e9.4.2026.04.09.03.38.06
 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
 Thu, 09 Apr 2026 03:38:07 -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=google header.d=citrix.com header.i="@citrix.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=citrix.com; s=google; t=1775731088; x=1776335888; 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;
        bh=BWtbECe/XUd0HxH1vJMgRw9c9RVMkiBpDggLMjIbDLg=;
        b=VLYyF5UNwtvWDqs5VZanTAvIx3VA/bnkDdNMoU4tfIOnWqxywcyjTfI4aVy10pm/Q7
         GcKJDdx6EI7rjFRKuNbxE6usd6EzFJnaJBbSLJ+frmDZwhOp/rw4xpoXLafygd82CJvu
         wNUnrh7tOMf/b8bfYuokqQWet4DQGxFw7G3lA=
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20251104; t=1775731088; x=1776335888;
        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;
        bh=BWtbECe/XUd0HxH1vJMgRw9c9RVMkiBpDggLMjIbDLg=;
        b=PrbMOe7RvIUCaXg3qumPKttRWBGU2vMOFV3s+jJ54Z+oI3YSFuPs9oQi1lg7XUQ3lQ
         pLZTxqcwIrwVrQY0L3l2ruby2TjGIiU6DvdLmiA+/JqFLrK8M61rtq/PImPL34SQyYz4
         S5UK0t8+xW2CxxFg0CJzcPI/mLD0m9IpSqnIbXK7vFb2J997fwqATBpr6q2B3HsFG3dD
         WMEpScNW0Mos7v9N1IOmULUHhs83YRyPTRtI6ZbKL+FH+RoWs6IWsw4KFb9xBP35x8/W
         L1y2cq1lpOFlmegkS6va6GkC7bNx8nDDP/uPCdujx3RMv1vyf1rC3T+Kmw7JQHOZpzwA
         zXKA==
X-Gm-Message-State: AOJu0YyozXk/kb3fGQceAX+XNnAKpajKGQhKfo2OLYMciuqwkZSoQPAn
	0CuqwIOqce0KXZ4gUv9wZ4hdPZFneVAomBZQM4dwuuHbDhwByCEvIrSY97HbMF0vDOfqKcMTZek
	TzUZD4evnTw==
X-Gm-Gg: AeBDievV+ZWbhcWdBuEiMdMQuXthuO1oHtSRPnz+YzhV/8dEp+S/VcQKki9Ig9ep+QJ
	snnpskQzBAiuNwAehMswZqHHyx6yYfrTSW9flK7JOi+epGM2MGyQNdbZbm0IMHrUpe9rStmF+sn
	dOZfPY6Mm76dxCcleWzft6GSvwGGdwx7io1fl4MuzgL7Zsn1xd577Iura3czluxV0QsXp8XdZ6y
	lun2dDwWr+ddyMUhp3vV2dxd8tHFyaGW5Ms6fYOihxKHfll9x5WeuoEBZGa54TB6jpT/13dzIVU
	0DLgpLJ2OPJm4ADNGUMd6nmzrPCFtpmnXjCIpmUQvmWJ03phsmhuDrypewFcFtLnaBM0N760Z+K
	TqBZGUjqbl2iTKdTtjVAx07umioFyAZm7byTkDXwpygRWtzITWs2fJN2y8XHb1KRj5eOZGhHGwr
	sTrD1XIPFDHFULAL2AdB5lILZauM71tyQQmZDUNoVcaTqGEjv9D+p50wNjYqOfWgnRKDScTGVZV
	1P8rZFT2pkEZkk=
X-Received: by 2002:a05:600c:548d:b0:485:3423:727d with SMTP id 5b1f17b1804b1-488cd068ce8mr37261955e9.26.1775731087507;
        Thu, 09 Apr 2026 03:38:07 -0700 (PDT)
From: Andrew Cooper <andrew.cooper3@citrix.com>
To: Xen-devel <xen-devel@lists.xenproject.org>
Cc: Andrew Cooper <andrew.cooper3@citrix.com>,
	=?UTF-8?q?Marek=20Marczykowski-G=C3=B3recki?= <marmarek@invisiblethingslab.com>,
	"Daniel P . Smith" <dpsmith@apertussolutions.com>
Subject: [PATCH] xen/efi: Reduce ifdefary in efi_exit_boot()
Date: Thu,  9 Apr 2026 11:38:05 +0100
Message-Id: <20260409103805.176240-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/1775731088-8955341E-7A655351/0/0
X-purgate-type: clean
X-purgate-size: 3596

Use IS_ENABLED() rather than #ifdef to give the compiler visibility into the
block, which in turn removes the #ifdef from the varaible block.

No functional change.

Signed-off-by: Andrew Cooper <andrew.cooper3@citrix.com>
---
CC: Marek Marczykowski-Górecki <marmarek@invisiblethingslab.com>
CC: Daniel P. Smith <dpsmith@apertussolutions.com>

Best viewed with git show --ignore-all-space

XenServer has been carrying a patch with a typo in this block for a long time,
going entirely unnoticed.
---
 xen/common/efi/boot.c | 47 +++++++++++++++++++++----------------------
 1 file changed, 23 insertions(+), 24 deletions(-)

diff --git a/xen/common/efi/boot.c b/xen/common/efi/boot.c
index 0ddc7bfd1277..7445f88902cd 100644
--- a/xen/common/efi/boot.c
+++ b/xen/common/efi/boot.c
@@ -1335,9 +1335,7 @@ static void __init efi_exit_boot(EFI_HANDLE ImageHandle, EFI_SYSTEM_TABLE *Syste
     EFI_STATUS status;
     UINTN info_size = 0, map_key;
     bool retry;
-#ifdef CONFIG_EFI_SET_VIRTUAL_ADDRESS_MAP
     unsigned int i;
-#endif
 
     efi_bs->GetMemoryMap(&info_size, NULL, &map_key,
                          &efi_mdesc_size, &mdesc_ver);
@@ -1371,31 +1369,32 @@ static void __init efi_exit_boot(EFI_HANDLE ImageHandle, EFI_SYSTEM_TABLE *Syste
     if ( EFI_ERROR(status) )
         PrintErrMesg(L"Cannot exit boot services", status);
 
-#ifdef CONFIG_EFI_SET_VIRTUAL_ADDRESS_MAP
-    for ( i = 0; i < efi_memmap_size; i += efi_mdesc_size )
+    if ( IS_ENABLED(CONFIG_EFI_SET_VIRTUAL_ADDRESS_MAP) )
     {
-        EFI_MEMORY_DESCRIPTOR *desc = efi_memmap + i;
+        for ( i = 0; i < efi_memmap_size; i += efi_mdesc_size )
+        {
+            EFI_MEMORY_DESCRIPTOR *desc = efi_memmap + i;
 
-        /*
-         * Runtime services regions are always mapped here.
-         * Attributes may be adjusted in efi_init_memory().
-         */
-        if ( (desc->Attribute & EFI_MEMORY_RUNTIME) ||
-             desc->Type == EfiRuntimeServicesCode ||
-             desc->Type == EfiRuntimeServicesData )
-            desc->VirtualStart = desc->PhysicalStart;
-        else
-            desc->VirtualStart = INVALID_VIRTUAL_ADDRESS;
-    }
-    status = efi_rs->SetVirtualAddressMap(efi_memmap_size, efi_mdesc_size,
-                                          mdesc_ver, efi_memmap);
-    if ( status != EFI_SUCCESS )
-    {
-        printk(XENLOG_ERR "EFI: SetVirtualAddressMap() failed (%#lx), disabling runtime services\n",
-               status);
-        __clear_bit(EFI_RS, &efi_flags);
+            /*
+             * Runtime services regions are always mapped here.
+             * Attributes may be adjusted in efi_init_memory().
+             */
+            if ( (desc->Attribute & EFI_MEMORY_RUNTIME) ||
+                 desc->Type == EfiRuntimeServicesCode ||
+                 desc->Type == EfiRuntimeServicesData )
+                desc->VirtualStart = desc->PhysicalStart;
+            else
+                desc->VirtualStart = INVALID_VIRTUAL_ADDRESS;
+        }
+        status = efi_rs->SetVirtualAddressMap(efi_memmap_size, efi_mdesc_size,
+                                              mdesc_ver, efi_memmap);
+        if ( status != EFI_SUCCESS )
+        {
+            printk(XENLOG_ERR "EFI: SetVirtualAddressMap() failed (%#lx), disabling runtime services\n",
+                   status);
+            __clear_bit(EFI_RS, &efi_flags);
+        }
     }
-#endif
 
     /* Adjust pointers into EFI. */
     efi_ct = (const void *)efi_ct + DIRECTMAP_VIRT_START;
-- 
2.39.5



From xen-devel-bounces@lists.xenproject.org Thu Apr 09 10:41:10 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 09 Apr 2026 10:41:10 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1276983.1562279 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wAmow-0004Ka-55; Thu, 09 Apr 2026 10:41:10 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1276983.1562279; Thu, 09 Apr 2026 10:41: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 1wAmow-0004KT-2W; Thu, 09 Apr 2026 10:41:10 +0000
Received: by outflank-mailman (input) for mailman id 1276983;
 Thu, 09 Apr 2026 10:41:08 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <jbeulich@suse.com>) id 1wAmou-0004KJ-Tm
 for xen-devel@lists.xenproject.org; Thu, 09 Apr 2026 10:41:08 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wAmou-00DEVF-9j
 for xen-devel@lists.xenproject.org; Thu, 09 Apr 2026 12:41:08 +0200
Received: from [10.42.69.8] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <jbeulich@suse.com>)
 id 69d78240-bab6-0a2a0a5309dd-0a2a450894b6-14
 for <xen-devel@lists.xenproject.org>; Thu, 09 Apr 2026 12:41:08 +0200
Received: from [209.85.128.45] (helo=mail-wm1-f45.google.com)
 by tlsNG-c1860d.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.0)
 (envelope-from <jbeulich@suse.com>)
 id 69d78244-fab6-0a2a45080019-d155802decb1-3
 for <xen-devel@lists.xenproject.org>; Thu, 09 Apr 2026 12:41:08 +0200
Received: by mail-wm1-f45.google.com with SMTP id
 5b1f17b1804b1-488aa77a06eso11387845e9.0
 for <xen-devel@lists.xenproject.org>; Thu, 09 Apr 2026 03:41:08 -0700 (PDT)
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-488cd10af88sm21062155e9.12.2026.04.09.03.41.06
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Thu, 09 Apr 2026 03:41: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=google header.d=suse.com header.i="@suse.com" header.h="Content-Transfer-Encoding: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=1775731268; x=1776336068; darn=lists.xenproject.org;
        h=content-transfer-encoding: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;
        bh=ckV6gYFdL3pMo3Xru0rBvCCoUsppWgl6pey6o2PkSQo=;
        b=cgGbje+eMagQLpCFRcUcsxwTLymlMezIuGsxTJKoNyAFrVvLMS1FPpqtOJlcAa2NDy
         z43tP5UQIQl0G4XMEJDVk0Y2YR/FlJen/IdCQPurpngyds5riUukPA83Dt73oJFos/Vc
         f4HEw/pSrwuxcDtk0FjZzvNeu6nBaLyH8EBWZJyi1DP8Q/Y0f7iMsf05AzqIBoZ7NskZ
         x6Zo4td0hcBqr/6iLItqb0fmRsR4hiBkNS2r3E8TdSdmBmBSusx37CwoV+iw7AzrOr30
         4hDV3o3ZB8IifZa1aWpLb6y6MYuH/uIouXu1NivWLqPp/jjJDVudmOT3CWrmoRii6UKa
         X1pg==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20251104; t=1775731268; x=1776336068;
        h=content-transfer-encoding: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;
        bh=ckV6gYFdL3pMo3Xru0rBvCCoUsppWgl6pey6o2PkSQo=;
        b=qOQ4w73qufxorjm/ILIdH9EWodUfQnhb0j1oe9C3wktWgcf7vscb/4iq4Q5jAscuCL
         3SbEDZLMAlGZbO+N++pOrwyecDa3I1b9WBSjMH26sEMpyyEe0bpjWby8acTbNzTqNQc7
         z3imtRcec/mdHc0ihX6Txg2H2Tjos3bdIWyjSA3EGKXhWhigu/VHAupL1G74LI8BcgNY
         csOspTRTcjxQRpyZ2Dzuc/RGLZHN25kO4IY68mPNcgctNPVCstpVWtaGQz4RLdY6eOEw
         O/dx0XNwRlenu5/0XzZx2lqSRb72z0Q6Vtc8AX/vz5Sl9kPheR03cjBVDKoJnRLGkUe5
         YjGg==
X-Forwarded-Encrypted: i=1; AJvYcCXCkhbMyFImjzKz5pzv2d33VT43p/gQB51/kFWKCqaNZS4viOM2OEVm4G8/yKtJeitcuYMW86XJT/w=@lists.xenproject.org
X-Gm-Message-State: AOJu0YzLJfASsWf+2HU412Jn/V0Z7Mj4wMEL65esjsqxuZ50TaFmfL6d
	a9P536DTKr6uDUrumOt5ONdoZIzPyya7RYQhC3HwCMIpeDkuqOn9zwg9M5Thyd1vtg==
X-Gm-Gg: AeBDieuHnKrkE0+d1gOUcYMyEy8kgaysQf9UBFzuZ0smj/8rxCSMgPxGbVR99X7hBLb
	XfE3ujq2TGeBEOTWawJinJZ9lbq4mxrQd7qAZCo0pRPizd6WhOS6mhh9g69/O0+aMDvPNt3TfI2
	q83SxuhWJWBcAAgygtoUxJe9EZPyf17ZWLYe7b4AHJjJ8hBmDOgtO8Cu5xGBwlFEiPxvE5JMIL4
	X3EuI18tXk1MjszWMVfo8Uen5SfrpztJV9BXCJtidnuDmhIrFV5uccdO/NlrVqhNHdDaH8I/Ggf
	x+CHiHI7AxFAOFq0dcCDSL1lfvl+WBgdOzyjjiAE0NJ9lHXYSD+88rUR1MQJQ/o1Zh40vSsRrC6
	WfxW+bgvQakAsTujeZJyOpH7yAjOBxmAULSkxYm1voIgB5ml42IGQvN361TKj00iXz5Dm/FNF0T
	7NweMk4uWQFoqgs+/o0KPDKE0EtuL88JCYmagZQbhRUynu6XVCl+jlQCbG5VZHpp/54NVmvoCVI
	SBbtwfLhSZfyhI=
X-Received: by 2002:a05:600c:83cd:b0:488:bd79:94d8 with SMTP id 5b1f17b1804b1-488bd7997demr159888045e9.18.1775731267642;
        Thu, 09 Apr 2026 03:41:07 -0700 (PDT)
Message-ID: <54a4caa5-782a-477e-973a-503f716cac42@suse.com>
Date: Thu, 9 Apr 2026 12:41:05 +0200
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH v2 3/3] x86: prefer shadow stack for producing call traces
To: Andrew Cooper <andrew.cooper3@citrix.com>
Cc: =?UTF-8?Q?Roger_Pau_Monn=C3=A9?= <roger.pau@citrix.com>,
 Teddy Astie <teddy.astie@vates.tech>,
 "xen-devel@lists.xenproject.org" <xen-devel@lists.xenproject.org>
References: <f064c3af-c22a-40e0-a268-ee37e34297a3@suse.com>
 <4bcc73db-38da-446e-b277-cf94c49002a1@suse.com>
 <7ca7679f-c160-44c2-98ed-f1b1761255d4@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: <7ca7679f-c160-44c2-98ed-f1b1761255d4@citrix.com>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 7bit
X-purgate-ID: tlsNG-c1860d/1775731268-F7547497-0AC19B19/0/0
X-purgate-type: clean
X-purgate-size: 1199

On 08.04.2026 19:53, Andrew Cooper wrote:
> On 08/04/2026 1:23 pm, Jan Beulich wrote:
>> Shadow stacks contain little more than return addresses, and they in
>> particular allow precise call traces also without FRAME_POINTER.
> 
> Do you have an example of what such a backtrace now looks like ?

(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

Note how both the stub entry and stub_selftest() as its caller are
present here. The stub entry is missing when FRAME_POINTER=n (albeit
we could teach that code to recognize it), while the stub_selftest()
entry is missing when FRAME_POINTER=y (and we can't do anything about
this unless we wanted to add frame setup to stub generation).

Jan


From xen-devel-bounces@lists.xenproject.org Thu Apr 09 10:53:44 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 09 Apr 2026 10:53:44 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1277002.1562288 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wAn0y-0006KD-9Q; Thu, 09 Apr 2026 10:53:36 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1277002.1562288; Thu, 09 Apr 2026 10:53: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 1wAn0y-0006K6-6f; Thu, 09 Apr 2026 10:53:36 +0000
Received: by outflank-mailman (input) for mailman id 1277002;
 Thu, 09 Apr 2026 10:53:35 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <jbeulich@suse.com>) id 1wAn0x-0006K0-72
 for xen-devel@lists.xenproject.org; Thu, 09 Apr 2026 10:53:35 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wAn0v-008sFH-18
 for xen-devel@lists.xenproject.org; Thu, 09 Apr 2026 12:53:34 +0200
Received: from [10.42.69.12] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <jbeulich@suse.com>)
 id 69d78526-e002-0a2a0a5209dd-0a2a450c9576-18
 for <xen-devel@lists.xenproject.org>; Thu, 09 Apr 2026 12:53:34 +0200
Received: from [209.85.128.52] (helo=mail-wm1-f52.google.com)
 by tlsNG-d25034.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.0)
 (envelope-from <jbeulich@suse.com>)
 id 69d7852e-f40c-0a2a450c0019-d1558034c8bc-3
 for <xen-devel@lists.xenproject.org>; Thu, 09 Apr 2026 12:53:34 +0200
Received: by mail-wm1-f52.google.com with SMTP id
 5b1f17b1804b1-48897fd88ebso7898155e9.2
 for <xen-devel@lists.xenproject.org>; Thu, 09 Apr 2026 03:53:34 -0700 (PDT)
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-488cd153d76sm68126145e9.0.2026.04.09.03.53.33
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Thu, 09 Apr 2026 03:53:33 -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=google header.d=suse.com header.i="@suse.com" header.h="Content-Transfer-Encoding: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=1775732014; x=1776336814; darn=lists.xenproject.org;
        h=content-transfer-encoding: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;
        bh=ltcKRhRbGayIkPWdDeFCuFZ46TC6MwpYh2LnyBISRvo=;
        b=Wxe3mZwHN2sDdQCM/FzUVg+zMweAK2JItAbQmzttMPFmm0WomwcBzCU0m8YO3bqRyZ
         Qj+sPOL1YnzAoCcLpMGcIYCkrI6xd/8lRT6CPi3KsnNlirsM1PWHfPT9cHsGiaOF35/6
         4oNY8OOZa59I4BAFewbnA1pk/AozR8AkN8swleETxjfUvKQ5+lvwf/blP9xh0KoKInnD
         U//x1LTLoM52UdG5Ef0FJbscTSVoeor/0q020IZQgHtVRBTQLeNBVUVsPbh3wNeYHA25
         GyPR330M3Xnl1QOjje5BG/8es8/6GXKG2EfpqQMTbP2+hSPC6z9ffTzp14aEoKP67LkX
         J32A==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20251104; t=1775732014; x=1776336814;
        h=content-transfer-encoding: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;
        bh=ltcKRhRbGayIkPWdDeFCuFZ46TC6MwpYh2LnyBISRvo=;
        b=Qn9ZsTlp9+4S4x+hRbxCgjmdintrAW3SPqiC2N4X3r5gbJNRCnu+y+Y3TAhpY4YtwT
         OC47+dEgW1udRwC9zKv03mKkKp/swbIv+lQwV0q1s05C4bLML2XOkwAKclHV73JU6paL
         7FL4PWcNddooMoJdI5ESO5ewpKuy6skXw38p1ul+PU8ZJ6RfRKLUS2zr7+owq7nhzg2i
         fOhWegu0JjOhNeZF8jIiFsYM93skjSSUmxiH0XgX0O3M4rDO65xLpJjnI5aUdyZ5PfhX
         RHZSZ6S8qwor2Svm5tfvOydixbGXxv1mcoXMBekoUXZ07WHcXOQWvx9d/97tFAuLJVnA
         Rzig==
X-Forwarded-Encrypted: i=1; AJvYcCUgxBujeI5+HeY9sKdTwhb6HfeE2w//AndGdwgPtxmInETunFZopVfe96I1hc6Mvb9DXwe3Gk40FN0=@lists.xenproject.org
X-Gm-Message-State: AOJu0YymyEGdl6nno+N3Q7ObbiwMgZsU7B/LwQa3qQZ2NEJLW3J0Nct8
	AAJXqBZkeVMuBdv9JRWAB2GfoDRRTXMfRxlqaPbTjlVNbaE5g1VSjOdmDpbTFy6wYw==
X-Gm-Gg: AeBDieslRYjdVOqG64nSrWSCe94fFh+EDgYsepngEc8LUZFjuhX9cQto6gPFpzPbJDc
	XCShGQleDr/77pIhsiBsGDcM11+sMtpsHwXTHBbnW/J7dv1/FwEvcJu+d+v8qIHr+pAvo4QvHWH
	QcC2rAQPps5yJRsutFhxF4FR76tRV8r+XI+hJ9E2GxV5kcLzar0IzHpMEGjDTJ7KVglrZev9/7d
	4tSN3W9sWHXHfXOsTcNsZWVcPmgS0C+1pqctIntrBykoiSwYxNkAprXfS8CzIgrvDARAx9emm9d
	IuBfRM98qfgOtQl+RQyjHCGrCrkVdBssG21jCdOTmY8Hv/65/RJoTMaRJkyChkf0VEK8t6M5SHE
	GPNWDXsVRaOP65V3ZWkI4IUg9v2MUqHV/1cpbPqpVXFYm/pbls2naPT6IHm734ureChrtjGbErI
	L0ipEUlR81mksYr67BylHskqdLehna1U8AsSSLLDcopcRpMv4PAW7i2BwTsrw/ys6T6vgyGUfs5
	ubbb0kdgvqNFq0=
X-Received: by 2002:a05:600c:35c7:b0:488:7ebd:78 with SMTP id 5b1f17b1804b1-488ccfd91fbmr50042885e9.14.1775732013752;
        Thu, 09 Apr 2026 03:53:33 -0700 (PDT)
Message-ID: <08bf201f-7bfa-45bf-a35a-7d31963e1179@suse.com>
Date: Thu, 9 Apr 2026 12:53:32 +0200
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH] x86/APIC: handle overflow in TMICT calculation
To: Andrew Cooper <andrew.cooper3@citrix.com>
Cc: =?UTF-8?Q?Roger_Pau_Monn=C3=A9?= <roger.pau@citrix.com>,
 Teddy Astie <teddy.astie@vates.tech>,
 Stewart Hildebrand <stewart.hildebrand@amd.com>,
 "xen-devel@lists.xenproject.org" <xen-devel@lists.xenproject.org>
References: <2fa2fb41-cb62-4a1b-84cf-822b2f97bc2b@suse.com>
 <35802158-a43e-438d-b20a-8c748819a1f6@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: <35802158-a43e-438d-b20a-8c748819a1f6@citrix.com>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 7bit
X-purgate-ID: tlsNG-d25034/1775732014-FE94DA3D-866B9868/0/0
X-purgate-type: clean
X-purgate-size: 2236

On 09.04.2026 11:39, Andrew Cooper wrote:
> On 09/04/2026 10:21 am, Jan Beulich wrote:
>> With an expiry value on the order of 20 hours, and with a bus scale value
>> of 256k (as supplied by qemu), the (signed) multiplication will be UB. As
>> we've checked that the value is positive, we mean unsigned multiplication
>> anyway. Yet let's play safe against even larger expiry and bus scale
>> values, leveraging the compiler builtin that there is for this purpose.
>>
>> While there also drop the stray cast from the actual TMICT write.
>>
>> Fixes: 9062553a0dc1 ("added time and accurate timer support")
>> Fixes: b95beb185810 ("x86: Clean up APIC local timer handling")
>> Reported-by: Stewart Hildebrand <stewart.hildebrand@amd.com>
>> Signed-off-by: Jan Beulich <jbeulich@suse.com>
> 
> Acked-by: Andrew Cooper <andrew.cooper3@citrix.com>

Thanks.

>> --- a/xen/arch/x86/apic.c
>> +++ b/xen/arch/x86/apic.c
>> @@ -1224,10 +1224,16 @@ int reprogram_timer(s_time_t timeout)
>>      }
>>  
>>      if ( timeout && ((expire = timeout - NOW()) > 0) )
>> -        apic_tmict = min_t(uint64_t, (bus_scale * expire) >> BUS_SCALE_SHIFT,
>> -                           UINT32_MAX);
>> +    {
>> +        unsigned long product;
>>  
>> -    apic_write(APIC_TMICT, (unsigned long)apic_tmict);
>> +        apic_tmict = UINT32_MAX;
>> +        if ( !__builtin_umull_overflow(bus_scale, expire, &product) &&
>> +             (product >>= BUS_SCALE_SHIFT) < apic_tmict )
>> +            apic_tmict = product;
>> +    }
>> +
>> +    apic_write(APIC_TMICT, apic_tmict);
>>  
>>      return apic_tmict || !timeout;
>>  }
> 
> This is fine for staging, but be aware it cannot be backported before
> 4.21 due to the toolchain baseline (and nothing in CI will notice, I
> don't think.)

I'm debating with myself whether to replace by an asm() there. (If we expected
further uses of those overflow built-ins, we could consider adding non-built-
in fallbacks in those older branches. Yet unless something like this was needed
in an XSA, it would be solely 4.20 to gain such.)

Luckily in this case I think I would notice myself, as by default I'm building
the older trees with gcc 4.8.5 and 7.4.

Jan


From xen-devel-bounces@lists.xenproject.org Thu Apr 09 10:54:34 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 09 Apr 2026 10:54:34 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1277009.1562296 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wAn1u-0006oH-Hq; Thu, 09 Apr 2026 10:54:34 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1277009.1562296; Thu, 09 Apr 2026 10:54: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 1wAn1u-0006oA-FB; Thu, 09 Apr 2026 10:54:34 +0000
Received: by outflank-mailman (input) for mailman id 1277009;
 Thu, 09 Apr 2026 10:54:32 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <jbeulich@suse.com>) id 1wAn1s-0006o4-O9
 for xen-devel@lists.xenproject.org; Thu, 09 Apr 2026 10:54:32 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wAn1s-00DHYm-3z
 for xen-devel@lists.xenproject.org; Thu, 09 Apr 2026 12:54:32 +0200
Received: from [10.42.69.11] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <jbeulich@suse.com>)
 id 69d78565-5cb7-0a2a0a5109dd-0a2a450bd456-14
 for <xen-devel@lists.xenproject.org>; Thu, 09 Apr 2026 12:54:31 +0200
Received: from [209.85.221.50] (helo=mail-wr1-f50.google.com)
 by tlsNG-42698a.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.0)
 (envelope-from <jbeulich@suse.com>)
 id 69d78567-bca8-0a2a450b0019-d155dd32c419-3
 for <xen-devel@lists.xenproject.org>; Thu, 09 Apr 2026 12:54:31 +0200
Received: by mail-wr1-f50.google.com with SMTP id
 ffacd0b85a97d-43cfac48bc7so469267f8f.0
 for <xen-devel@lists.xenproject.org>; Thu, 09 Apr 2026 03:54:31 -0700 (PDT)
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-43d1e2c50a7sm66067816f8f.15.2026.04.09.03.54.30
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Thu, 09 Apr 2026 03:54:31 -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=google header.d=suse.com header.i="@suse.com" header.h="Content-Transfer-Encoding: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=1775732071; x=1776336871; darn=lists.xenproject.org;
        h=content-transfer-encoding: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;
        bh=sc0kk9Q/o7nk3c7E7/EbBIsdMS3Qd5PQHXm71PhAtak=;
        b=dF3TTH0A/SaPoSjs7AAjCi2y7S28lFWO25A1ECOYIFmoys5Wxc85cmOjMqSkv23yoD
         D+MWKre/Qz+H5iCFZNTM82Svl69rPFOeQUInO2kSCVp2PVYjJGNJiR6CP41VL1o72GiI
         dkj4lg+dqKn400Ei4Ok7wN8k/H9EKQZhf2U18fhdFqndKzpnxrnNGjk4CkQ12jJ0bu81
         awQOe+eNPeek4OL1VB1CCHU/PZ8NwRYicVLW/aYzw02w7Z9K1r9o4GdtzmyoByZlQSEt
         RypvFBb8rnaPoVg1qMQ0csKZY8xDvk15yAowF/zayXHccdklxL6NydW8uOXpWJysRofK
         EerA==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20251104; t=1775732071; x=1776336871;
        h=content-transfer-encoding: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;
        bh=sc0kk9Q/o7nk3c7E7/EbBIsdMS3Qd5PQHXm71PhAtak=;
        b=iYrX5EFiFzbxK0zCwl8jsAKISHA4aFgFzK8pvvACwvfYJq9Kp/jGDCVBaxLUI6pmct
         H1cIj0EVMFmt93u5dlaauEEUo0GhrKiqxQvYBmW2EeqH9IkLEs+8alEcdidilJuPgsNJ
         1NCdCuH/egK5AJ3e0rUwITJSCkumoBGajVrnIWVWWmh7w97BS+N/mzd+0sV/sZoc3Nzt
         GfilPXkiZttpyTf8kE9FxJMPOLW8e1tqn3BVPgOciqsN+qDTpt3hFopvuCeBqJ9vK8DZ
         ij5H91Iu/QOzjtQ/rDpZBvzROVPozhac//u0ibeoeyVb51yEazAvFyZ3u0p6m6sXn8aL
         /xDA==
X-Forwarded-Encrypted: i=1; AJvYcCWqNX9io7how8TMo79D0jFKa2rDfY/m3DegiJN8TBw5oZy3if3NthT4sl+YICF8xU/xHvDSyNCJVQE=@lists.xenproject.org
X-Gm-Message-State: AOJu0Yxd+zJ0/uM1iDkPfm61MnlpaV81hklrZmPYbuc02VDSmNczUkNQ
	4KQ0w1K/drXtu0CaXXjdLLivWW1K4HUgQIOJaWBBET/CzANxZ5V3i8TJsAlIyzI0uQ==
X-Gm-Gg: AeBDies8yJUTJmQNGXUqR3aCsUkE53Vd0tYuQ4M4vruHnK7FWpyJCo1HgVPfxNQTBmm
	KQ7jGV3MaOWig13N7SYLavApxnb3lF5tqxy6GyKue8M+ayAsirrmXkB5jLEJoazOn1sLB8gO9Zv
	Xmdjp+hCXtrRjnkoyJP4vXli6tNcOLG/0+0fu5+jQ4m0405ZXMUzIJXOt3f9QNRnrFSOYCb6Plp
	0NRuoH2NDhI21xxGO91thamFQTVXgs/mBgyvsz2s9Aom2ugkVYlCleK/gXepTpcVWRT/4HArrBR
	GanzJ1oUz/Y7elFtkHOJ1OEI60FLD2uH1CBs2OMNQ8cz9YzUHE2vpiUGXh4Ap1EjZrYvDAVg1AX
	ZKbfIGWZGTBivOZIKMgiO78ljAbFMe8/+1hMuKY4XnpNm9cLdaELGPwpBShBKuz1Khig4uK2fGa
	kZkLQsNEtalUgnaORYhBQID6zP2w+6VCg6pxJ5iaAaWvFEnKilcjv3AlhDGRvZgpenkTJ1CeMor
	HH+ylUWRKdHxPk=
X-Received: by 2002:a05:6000:18a8:b0:43b:6352:a262 with SMTP id ffacd0b85a97d-43d5a1a2813mr4195392f8f.41.1775732071416;
        Thu, 09 Apr 2026 03:54:31 -0700 (PDT)
Message-ID: <f8b9fcb5-18af-494e-8ed2-2e0888fe8bd4@suse.com>
Date: Thu, 9 Apr 2026 12:54:29 +0200
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH] x86/extable: Adjust UD1 encoding in stub_selftest()
To: Andrew Cooper <andrew.cooper3@citrix.com>
Cc: =?UTF-8?Q?Roger_Pau_Monn=C3=A9?= <roger.pau@citrix.com>,
 Teddy Astie <teddy.astie@vates.tech>,
 Xen-devel <xen-devel@lists.xenproject.org>
References: <20260409083938.137871-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: <20260409083938.137871-1-andrew.cooper3@citrix.com>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 7bit
X-purgate-ID: tlsNG-42698a/1775732071-F63C62A1-4149C7E6/0/0
X-purgate-type: clean
X-purgate-size: 392

On 09.04.2026 10:39, Andrew Cooper wrote:
> The 0x90 is a ModRM byte and technically needs following by an imm32.
> 
> Switch to 0xc0 which encodes two %eax operands, and is a complete instruction.
> 
> No practical change.
> 
> Reported-by: Jan Beulich <jbeulich@suse.com>
> Signed-off-by: Andrew Cooper <andrew.cooper3@citrix.com>

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



From xen-devel-bounces@lists.xenproject.org Thu Apr 09 11:01:17 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 09 Apr 2026 11:01:17 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1277025.1562305 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wAn8K-0000Rl-9J; Thu, 09 Apr 2026 11:01:12 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1277025.1562305; Thu, 09 Apr 2026 11:01: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 1wAn8K-0000Re-6j; Thu, 09 Apr 2026 11:01:12 +0000
Received: by outflank-mailman (input) for mailman id 1277025;
 Thu, 09 Apr 2026 11:01:11 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <jbeulich@suse.com>) id 1wAn8J-0000RC-BI
 for xen-devel@lists.xenproject.org; Thu, 09 Apr 2026 11:01:11 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wAn8I-00DJlC-Mu
 for xen-devel@lists.xenproject.org; Thu, 09 Apr 2026 13:01:10 +0200
Received: from [10.42.69.8] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <jbeulich@suse.com>)
 id 69d786e9-2eae-0a2a0a5409dd-0a2a4508cd18-36
 for <xen-devel@lists.xenproject.org>; Thu, 09 Apr 2026 13:01:10 +0200
Received: from [209.85.128.53] (helo=mail-wm1-f53.google.com)
 by tlsNG-c1860d.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.0)
 (envelope-from <jbeulich@suse.com>)
 id 69d786f6-fab6-0a2a45080019-d1558035a8e7-3
 for <xen-devel@lists.xenproject.org>; Thu, 09 Apr 2026 13:01:10 +0200
Received: by mail-wm1-f53.google.com with SMTP id
 5b1f17b1804b1-482f454be5bso7600485e9.0
 for <xen-devel@lists.xenproject.org>; Thu, 09 Apr 2026 04:01:10 -0700 (PDT)
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-488cf9dc4e5sm46470225e9.2.2026.04.09.04.01.09
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Thu, 09 Apr 2026 04:01:09 -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=google header.d=suse.com header.i="@suse.com" header.h="Content-Transfer-Encoding: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=1775732470; x=1776337270; darn=lists.xenproject.org;
        h=content-transfer-encoding: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;
        bh=+dHQ3xdpPrtn7+Sv3WS1/VvWmma22TL4MllAMDLavT0=;
        b=a5ylJWqIZHdGH4SkqvEXfTiCCwnfKE/Uep6r1R951+GAIFi9vhMnlQrM43e8O0DSKG
         2z4Kxm7HYQO1UK8vL06t9T4AEsIQHtl831z/AaJhDOZkl2vU9NYsjCBPdMlYFRsbascB
         lLqp82q5EK+PsBV09jQaeDW3y4/f4Ai6DinbmkD4UtjlNg8mRlpoMb0jao+wW8opr8vp
         dxuMIfo4aoF4QryaxFPdiyyla6roGSYxnSIyQ8b7VKplOBQmiE9JFDDYuYF7fMlVqP41
         CBlCLz9ZJF/S4FFdekCyE7kGrZJplJyER8elJUhiZu67YzN4oX3p3dv0qGA2hbKAcMEt
         3zDQ==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20251104; t=1775732470; x=1776337270;
        h=content-transfer-encoding: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;
        bh=+dHQ3xdpPrtn7+Sv3WS1/VvWmma22TL4MllAMDLavT0=;
        b=kO9FBcFXJDfHjeXRrIoGnhSigCiw+CsaTAX4nmi9Xq2EyVRvx7bbI91JmFpEIIbWvn
         tDVNrKTXeg8ut4mB7nurG5XwUgio5IUyfBpocucPAWDvKY9PWsa4y4JIJMRdGP31H1C/
         0HJ4gHvaJ0dhykjn8SSdLnO8lvP4aMWFcARQS32WzWYsD6V7OuVoe5dThIuvyMOknT/O
         98xqoKfPSlSujYuH8sSRXsQe+ySRDclLZ033bRv/tYvxSNJ+pDWPH9xZOtOQ3OghlsKx
         UQp3XlOuEl61LMxqE2MB5KdM0bymyUPMlVL8FrJe3zOqnv1IYFWRypQMF5oxZAq8wq3Q
         GlVw==
X-Forwarded-Encrypted: i=1; AJvYcCV3q2sG01hojzcUUBLtNM4kwFXZwcBUg3UWx3ne3MzgB3fK2b7uufSOICuhmwN01NnpA+42kymM+RQ=@lists.xenproject.org
X-Gm-Message-State: AOJu0YzMiB0R582WCe+Gdr70zf/yDJAN29quKB+tyn9s0FE+gwaFu4+o
	3DKUTJWisEOZaiQmdE7Xdl9ImWLDrjoOaxpg+QxoHwrH1HJbcfZ0j+EM5h50CLty5Q==
X-Gm-Gg: AeBDievlMH5+s7FsLeAD5PgO9LrISEFuwI2UFU/W9E42E5AODem+JT8En5xruoVr96s
	n7wrgi3hzLOqa39OwiYd7iMMHLHSYbl6nsWX+LsTs/CbDoQo3jkfeekNAnBiNYL+Kn7+oWZL2CO
	AltIUuHTcYI8pBdI+iOhBJ9NreKJklJ4LM4JoEQ1GhGpkNgRlrO1zyrGgK844j8Rvmaa2tlveoO
	i7ztf0NbEQQ9N/wHyiDVW0aGzbcK9+egWIZ7/ENEmGdtqamxNCQ6FUfcRt0Ua4bZfczG+oZBD9W
	ygJZr7WIcbF5E8k9CdcXZCi8hjXW91hMtrFCAsV3rHrgP7zQs5bmDt+z6OJHr9uB/eyyNJzDMKi
	lgXfa14RJljrLYYM53YM8S7vInvPerFCDHHmqqu4jHurOE0iFfF1/tsycQJixgNPoGxwrLVBKn4
	6KKBjybJEz57V+VlBr4KwAS3W9bFCyz5J1NeHt0FoqxWi8px/ThonlURr2bJvf98A7ZrxVM5bsY
	+EivtXQiHkuUlU=
X-Received: by 2002:a05:600c:3f1b:b0:486:f893:56c6 with SMTP id 5b1f17b1804b1-488cd55c1a2mr36599225e9.10.1775732469888;
        Thu, 09 Apr 2026 04:01:09 -0700 (PDT)
Message-ID: <65b04675-abbf-413e-abe7-6cd463913fdd@suse.com>
Date: Thu, 9 Apr 2026 13:01:08 +0200
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH] xen/efi: Reduce ifdefary in efi_exit_boot()
To: Andrew Cooper <andrew.cooper3@citrix.com>
Cc: =?UTF-8?Q?Marek_Marczykowski-G=C3=B3recki?=
 <marmarek@invisiblethingslab.com>,
 "Daniel P . Smith" <dpsmith@apertussolutions.com>,
 Xen-devel <xen-devel@lists.xenproject.org>
References: <20260409103805.176240-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: <20260409103805.176240-1-andrew.cooper3@citrix.com>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 7bit
X-purgate-ID: tlsNG-c1860d/1775732470-75557497-77A4F904/0/0
X-purgate-type: clean
X-purgate-size: 3389

On 09.04.2026 12:38, Andrew Cooper wrote:
> Use IS_ENABLED() rather than #ifdef to give the compiler visibility into the
> block, which in turn removes the #ifdef from the varaible block.

Just to mention, if it was just / mainly ...

> --- a/xen/common/efi/boot.c
> +++ b/xen/common/efi/boot.c
> @@ -1335,9 +1335,7 @@ static void __init efi_exit_boot(EFI_HANDLE ImageHandle, EFI_SYSTEM_TABLE *Syste
>      EFI_STATUS status;
>      UINTN info_size = 0, map_key;
>      bool retry;
> -#ifdef CONFIG_EFI_SET_VIRTUAL_ADDRESS_MAP
>      unsigned int i;
> -#endif

... this to be got rid of, we could as well use ...

> @@ -1371,31 +1369,32 @@ static void __init efi_exit_boot(EFI_HANDLE ImageHandle, EFI_SYSTEM_TABLE *Syste
>      if ( EFI_ERROR(status) )
>          PrintErrMesg(L"Cannot exit boot services", status);
>  
> -#ifdef CONFIG_EFI_SET_VIRTUAL_ADDRESS_MAP
> -    for ( i = 0; i < efi_memmap_size; i += efi_mdesc_size )

    for ( unsigned int i = 0; i < efi_memmap_size; i += efi_mdesc_size )

now. But yes, the typo aspect you mention can be avoided altogether by what
you change things to.

> +    if ( IS_ENABLED(CONFIG_EFI_SET_VIRTUAL_ADDRESS_MAP) )
>      {
> -        EFI_MEMORY_DESCRIPTOR *desc = efi_memmap + i;
> +        for ( i = 0; i < efi_memmap_size; i += efi_mdesc_size )
> +        {
> +            EFI_MEMORY_DESCRIPTOR *desc = efi_memmap + i;
>  
> -        /*
> -         * Runtime services regions are always mapped here.
> -         * Attributes may be adjusted in efi_init_memory().
> -         */
> -        if ( (desc->Attribute & EFI_MEMORY_RUNTIME) ||
> -             desc->Type == EfiRuntimeServicesCode ||
> -             desc->Type == EfiRuntimeServicesData )
> -            desc->VirtualStart = desc->PhysicalStart;
> -        else
> -            desc->VirtualStart = INVALID_VIRTUAL_ADDRESS;
> -    }
> -    status = efi_rs->SetVirtualAddressMap(efi_memmap_size, efi_mdesc_size,
> -                                          mdesc_ver, efi_memmap);
> -    if ( status != EFI_SUCCESS )
> -    {
> -        printk(XENLOG_ERR "EFI: SetVirtualAddressMap() failed (%#lx), disabling runtime services\n",
> -               status);
> -        __clear_bit(EFI_RS, &efi_flags);
> +            /*
> +             * Runtime services regions are always mapped here.
> +             * Attributes may be adjusted in efi_init_memory().
> +             */
> +            if ( (desc->Attribute & EFI_MEMORY_RUNTIME) ||
> +                 desc->Type == EfiRuntimeServicesCode ||
> +                 desc->Type == EfiRuntimeServicesData )
> +                desc->VirtualStart = desc->PhysicalStart;
> +            else
> +                desc->VirtualStart = INVALID_VIRTUAL_ADDRESS;
> +        }
> +        status = efi_rs->SetVirtualAddressMap(efi_memmap_size, efi_mdesc_size,
> +                                              mdesc_ver, efi_memmap);
> +        if ( status != EFI_SUCCESS )
> +        {
> +            printk(XENLOG_ERR "EFI: SetVirtualAddressMap() failed (%#lx), disabling runtime services\n",
> +                   status);

Could I talk you into switching to

            printk(XENLOG_ERR
                   "EFI: SetVirtualAddressMap() failed (%#lx), disabling runtime services\n",
                   status);

to make the line at least a little less long?

Jan


From xen-devel-bounces@lists.xenproject.org Thu Apr 09 11:11:57 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 09 Apr 2026 11:11:57 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1277036.1562315 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wAnId-0002Qo-6A; Thu, 09 Apr 2026 11:11:51 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1277036.1562315; Thu, 09 Apr 2026 11:11: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 1wAnId-0002Qh-2u; Thu, 09 Apr 2026 11:11:51 +0000
Received: by outflank-mailman (input) for mailman id 1277036;
 Thu, 09 Apr 2026 11:11:50 +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 1wAnIc-0002Qb-3z
 for xen-devel@lists.xenproject.org; Thu, 09 Apr 2026 11:11:50 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wAnIa-00DMKd-Sq
 for xen-devel@lists.xenproject.org; Thu, 09 Apr 2026 13:11:48 +0200
Received: from [10.42.69.9] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <andrew.cooper@citrix.com>)
 id 69d78955-2eae-0a2a0a5409dd-0a2a45099550-44
 for <xen-devel@lists.xenproject.org>; Thu, 09 Apr 2026 13:11:48 +0200
Received: from [52.101.61.30]
 (helo=DM1PR04CU001.outbound.protection.outlook.com)
 by tlsNG-bad1c0.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.0)
 (envelope-from <andrew.cooper@citrix.com>)
 id 69d78971-bf79-0a2a45090019-34653d1e414b-3
 for <xen-devel@lists.xenproject.org>; Thu, 09 Apr 2026 13:11:46 +0200
Received: from CH8PR03MB8275.namprd03.prod.outlook.com (2603:10b6:610:2b9::7)
 by LV3PR03MB7707.namprd03.prod.outlook.com (2603:10b6:408:28b::21)
 with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9769.20; Thu, 9 Apr
 2026 11:11:43 +0000
Received: from CH8PR03MB8275.namprd03.prod.outlook.com
 ([fe80::a70d:dc32:bba8:ce37]) by CH8PR03MB8275.namprd03.prod.outlook.com
 ([fe80::a70d:dc32:bba8:ce37%6]) with mapi id 15.20.9769.018; Thu, 9 Apr 2026
 11:11: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=IA1xXkjatspSI/IC8D8JiskPVw1cfoVMuRY568NHywgtH4QCyxY1aMAhoZIAnEHuWvwCftH/vqvqlvsnQwkzlGiEPzILgfnaKgB1cqtC8SVuuqX+m+4OKbnRf61kZKdF/W2zom40X6etu4MYSnv0mPhhHtvvlzmi5VWoC3DJXAyQV8zfdo2tynH1V8IRoc5aJXLCrPbf2VtHgWE23zQ0sywSBCsTvjlEZshpEDrN1xcNDS5KI1LTMdcqmcsdxywz1fbD2dHnuzfUxOJVVrMndqAgFy71cO+Lqvl39/hPozLvTYZdNco2mJuY/Amyju3lkGBUhUE0UU1rXp7O/gj7TQ==
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com;
 s=arcselector10001;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1;
 bh=BiipYdtRRIov76lc0RcSjdBxjLPWFDfXDd8Q6YFP5Ro=;
 b=NcMCLtWTo2NwpebOHFOnvWZcD2tI0eSqv9MlVvkbfsvqD2ecO2WPqCGqm5kQrauOE3mi4fMPO5jduCti/nNHoFJShpId/c5fL5vMjA6negZhZTpukEqyO3faBm3ddWCG7kHXcUZaE3tJ+/zoF/OYnuLIyyRZ1dj8QLKBIDIGT00Rjukqc/R5Yc9+HRC/K2zvaD5NwPFn6M8cGN9M0uEmCfb5cb3y9HytMF8O/4It11LJMtnGzFTwAWrE0EsTX9VKhGDtD1l3IyZqNHO8ws2CnxOGcvDDXOl/BOZmpWaItJ4K2r1+8kJbx89osBMHyZS1zQSvVlItGSFna7Ocs6WoBQ==
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=BiipYdtRRIov76lc0RcSjdBxjLPWFDfXDd8Q6YFP5Ro=;
 b=oMVI04Ax4FDY5z4yjGgJ3dtfzxQTDDQQLbRQ0XHndUoYtmRTtnrApe/vsQkgC2Er18oFwt9lnHa3rAOoBvucP1MJ/EHO+uePUwdnsFR3pD6O8o6mWsFGMGUcOvLTTXRvB5O0/HrPIEibPv+naqy/9Z1lEbuLlvReK2NUzRGzoAI=
Authentication-Results: dkim=none (message not signed)
 header.d=none;dmarc=none action=none header.from=citrix.com;
Message-ID: <04b9c465-4940-4a16-8abc-9c3440ab7337@citrix.com>
Date: Thu, 9 Apr 2026 12:11:39 +0100
User-Agent: Mozilla Thunderbird
Cc: Andrew Cooper <andrew.cooper3@citrix.com>,
 =?UTF-8?Q?Marek_Marczykowski-G=C3=B3recki?=
 <marmarek@invisiblethingslab.com>,
 "Daniel P . Smith" <dpsmith@apertussolutions.com>,
 Xen-devel <xen-devel@lists.xenproject.org>
Subject: Re: [PATCH] xen/efi: Reduce ifdefary in efi_exit_boot()
To: Jan Beulich <jbeulich@suse.com>
References: <20260409103805.176240-1-andrew.cooper3@citrix.com>
 <65b04675-abbf-413e-abe7-6cd463913fdd@suse.com>
Content-Language: en-GB
From: Andrew Cooper <andrew.cooper3@citrix.com>
In-Reply-To: <65b04675-abbf-413e-abe7-6cd463913fdd@suse.com>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 7bit
X-ClientProxiedBy: LO4P265CA0158.GBRP265.PROD.OUTLOOK.COM
 (2603:10a6:600:2c7::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_|LV3PR03MB7707:EE_
X-MS-Office365-Filtering-Correlation-Id: e323b975-093a-4377-dd8e-08de9628c7be
X-MS-Exchange-SenderADCheck: 1
X-MS-Exchange-AntiSpam-Relay: 0
X-Microsoft-Antispam:
	BCL:0;ARA:13230040|366016|1800799024|376014|56012099003|22082099003|18002099003;
X-Microsoft-Antispam-Message-Info:
	NA/GUQ9STTYii+bAe2w1ZMyTH3xeR66aC+H0groIZrJuGrCwHSRjuJvDvVT1FANdySLSxA7Uff5OS7r+C3hy3hwpAfiA5qSzIBprV4QbTZiMg7I7OIi+JiK/e3S+sDCLTVJzQ8PqINp3Wor1VSAq2vnkCP0nQB9luZmyxoKzD5YO4vaT52bx1TGrPewDm4JB9+gZeDdjKdK41Fys3/xNnJUzHPEjkDTvRo+F6fu/zaGc2wj5GKcCaT3RlBYSynqGvp2lsDqbLdkCeiSD/Kk1R2Aj8iuOmLhlXyZty1j+49NmhKkvihPvi0K3zanZMlKl4tTrTS5CbeeJg00taCesnAlOoJb4UKHCA5QUmqm4MlXUa4M74xgF2HLnCSfyApsEaw6/Evc3aEPqotRSGThY2AQ8gXh+RrY7oFsN7C2z9GjSbZp2Znt9VFZfepErYIabypz5SbZtvDtoSm2MhY+cRVQ9+Du+4h8+T0fvCucHyd1YMvS62iiLDdgNohqAbtjlzTmviT24nJEUzg+/pByhNAS4874oenff9s7JlxJeoPLHNfySKKwpRnJOQjJK4hlueyImZMr2wel9aJxa1HEwi+wCEg+uLKOeie6PKFXLDm8KwlgAZnRATdISfPnmM8E8swuTRlqd8WBXpvFFM++IBFmpJBBBSgwv9w/vlEnaNtQaJqDpIDDY8aKZ85ozdJCzJn6/iYtseswGaGnbgkt9G7HNtl967Kgy5sgTzgUZe1k=
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)(56012099003)(22082099003)(18002099003);DIR:OUT;SFP:1101;
X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1
X-MS-Exchange-AntiSpam-MessageData-0:
	=?utf-8?B?SWI3MnlhVVZpQkRvQ3ZGQkNaekFsR1VrSWttTy9Ra3MxV2ZHSkpVS3JXSWxQ?=
 =?utf-8?B?RFVrb01RS0xabmpDNXhPSmtUUjJzY0x4ZVJzd0svZUJKalBOTVBhOG9BWGVo?=
 =?utf-8?B?MXQzYTl6Z3d1L2RLTkJ6YUNSWTNKRjkxNnR3Tit4RWh2bE50cEhuY2JsU2xT?=
 =?utf-8?B?b1dGRUJnazlGb3BwbTcvS1UvR0NNY3kxclAwaGQ3aitTQXJDcVVWakQxUmw5?=
 =?utf-8?B?VzFxRDk4QXl5dFZSVmNWNVRZUml0MDNzVStGWllxZTZMU2FNbE1GYUIzNk9K?=
 =?utf-8?B?TkZBV05PN2J3RXB1MXdaQWMyTlRueEw0NVhubTZKRE1JK1lNSGJLWUZZbyt4?=
 =?utf-8?B?SHZWc1cvRlNQZEZyblBORGZqdS9FSXVMR1JjajRRYjNLdnZoOU4wTTFXd0Zx?=
 =?utf-8?B?b2gycmlteExwUFlzT0pUelpxdTV2bUd5enZRRGNaQXdnaFlyNEs5T2tMNlZC?=
 =?utf-8?B?V1I2Z01OTVNScTNGb1NvaWI2SE1ENFRYR0RCZG54cHpGcXJmYlRlV1JEUVQ5?=
 =?utf-8?B?NEIxNUpRd2ZXcGVaaWh1M1libjVvbEcvTUp6ZVpDeGVjYi9JNDhkWUJmRlNY?=
 =?utf-8?B?UWUwQ0NkT0ViN3hqMkl2Si84SnVQL2VLcHJYSFo0Zk5BTk1IeGF0RUhVc0Rj?=
 =?utf-8?B?N2FiZ0pidUZxWnYxYVdwWGR1dTRpUHBSK1FDNTN3S3FxVEU4Y3NRWFFWOWFs?=
 =?utf-8?B?ZUtQK2xUenZYaG5YVTdpSXNlaVlIUWtCK0ZUOFpDc1NsMzBoRWxyRWY0a05B?=
 =?utf-8?B?YTdpV3R4dytoSDgvcDlla3BpY3VrckNqd0dKcW9CUG9obHF6MUhuR0JIbS81?=
 =?utf-8?B?clF2dE9tZnErMjI4Tm5PYllkV3JKbkcrNzZINUdBWjFOUmc3L0hIUVdQQWMv?=
 =?utf-8?B?UDJLYjM2Tk5kK1YycmNkdUs5K1NUZjU1ODljeldFdk5TMjRvbzA1MUxKRUM0?=
 =?utf-8?B?OFNSTGRLcVZVZVl3UjhYV1lPekJNOGlpWWtQU2tqREdVakR1a0U4UnQ5TmJ4?=
 =?utf-8?B?aC9UdWhTUkVrWitmOTBYVkZNSEtORXhhdS85OE9wNFpTM3psajNtcXhjd1dV?=
 =?utf-8?B?OGIrV2RWNXJJYUJTVDFUQTlYaTVYOG1HQk9nZ2JueUdYaGdkeTFDZVJMZGlz?=
 =?utf-8?B?eDBnSnQ2enZneEVVMWZRcU9aL0tKOU1aaDFhMkk5Wk9yOTZIMElPUXpoMHFE?=
 =?utf-8?B?UWtVZFlpbTJpRmNNNWxlcE5XZ3JudC9sTVl2UG8zd2wvRFNCZ1NVQ240OUg3?=
 =?utf-8?B?S3VlQWVHNnUwMWdYMUVWSjROblRHM25PaW9HS0NneEFNOEJlb2hadmxvSmox?=
 =?utf-8?B?K0ZneHpSWXNCeGFta29XM0plN2N3clY1OXZMM2hmTkNleERDbll5VmRkMnBa?=
 =?utf-8?B?ZkFCTHpTTllrOFVGaExTRE8rWGYyNlNpQy9yQnVncXJoalUza0JZQ1lCYitL?=
 =?utf-8?B?bG9pOVgrZDJHc0g1Tk5Fa2hIYmpLdllnc0t2N0hLaDNNNGJ4WFMyVGhXdERF?=
 =?utf-8?B?eTNZZ1NqUnBSQTdNdmRmb0FyRzBIcHlzWjRTbVB5dTM3dzhWSzdnZFdKL0lS?=
 =?utf-8?B?eHZPQTNYSEk2cEEzREluNTFrRWJyRGpHOVI0RTNMclZSUlNkZ0FRMC8rVSt1?=
 =?utf-8?B?ZFkvdFcwcVJubmJRaTlIdEVnbU5QRjgyZWdWdTZPRWRUL0xQeXlEaXcrUFpB?=
 =?utf-8?B?NDNGWHBRQlU0SUoyMjJMc1VBN0szSGlNNnpqalRzdE9iLzU5bEZxbG1yQnZH?=
 =?utf-8?B?Q3E0RjdPeHVBYStRYko5NVpRS1ZuTHAxOVpES3F0TVkvQ21WanRxeFBlNnRo?=
 =?utf-8?B?Zm5ITUpEYzZjY1o2ZGxKMERGbVVvNWhqMFdSb2tIdEZ0OHdHdTVPejJ5THYv?=
 =?utf-8?B?RzV5Y3ZyOUY0dFAwNVpqVnJqQVdta0pPVGRneHYyd3k5NUpCQ3VvazZmYXhG?=
 =?utf-8?B?d0FVZUFKMzdVM3FCM25zMytnZ2lxSFNFTWxEdGFCamVZZnRkcWhvQnErcmxo?=
 =?utf-8?B?dTFmdU1GODYrSk5FYklEaWZWZlE3VXUxTTdodnMyTmN4bjBvV2dNTUtMMGYr?=
 =?utf-8?B?UEowbUF6YXNxaVFKZjFQU2VMMzFFQnNpVHFrOVQzdUE0VU9uRWl3K3FGd3Ju?=
 =?utf-8?B?YXFJM3RxT3V0M0I4M2FFK2FKLzZqN0Rxdjhjc2s4YUtxY3RnTmF3SFNLQ0x3?=
 =?utf-8?B?QnBTNWI0ays5TXhKUXRBakdqVlZCUUkyT3oxK0JxRllzcXlzWi9lQ0xiMm0x?=
 =?utf-8?B?L09jTDc3VDZ6UXdHcHFFY1R4amg1Y3pPWFlwc1RRUkxNSFVzSEphMnNFWDFj?=
 =?utf-8?B?MU05dDJ4VjhQYmhyMjg2L1pUN1M1V1VsYnZiZmwxUWZlTFA0T0dUQmpSWk0x?=
 =?utf-8?Q?o/03BUh9tvoy4Xsw=3D?=
X-OriginatorOrg: citrix.com
X-MS-Exchange-CrossTenant-Network-Message-Id: e323b975-093a-4377-dd8e-08de9628c7be
X-MS-Exchange-CrossTenant-AuthSource: CH8PR03MB8275.namprd03.prod.outlook.com
X-MS-Exchange-CrossTenant-AuthAs: Internal
X-MS-Exchange-CrossTenant-OriginalArrivalTime: 09 Apr 2026 11:11:42.7991
 (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: yHpQvgo5oj98A1fIpA40tEAslSlLY4ZhcqosfoWUN/HiYjsusz29G6QF/6qEByrTtWholFT0vTED0TZdWc6H+TfptFTnkVTM0J5a3jPeP6Y=
X-MS-Exchange-Transport-CrossTenantHeadersStamped: LV3PR03MB7707
X-purgate-ID: tlsNG-bad1c0/1775733106-54B58152-A60347B5/0/0
X-purgate-type: clean
X-purgate-size: 3711

On 09/04/2026 12:01 pm, Jan Beulich wrote:
> On 09.04.2026 12:38, Andrew Cooper wrote:
>> Use IS_ENABLED() rather than #ifdef to give the compiler visibility into the
>> block, which in turn removes the #ifdef from the varaible block.
> Just to mention, if it was just / mainly ...
>
>> --- a/xen/common/efi/boot.c
>> +++ b/xen/common/efi/boot.c
>> @@ -1335,9 +1335,7 @@ static void __init efi_exit_boot(EFI_HANDLE ImageHandle, EFI_SYSTEM_TABLE *Syste
>>      EFI_STATUS status;
>>      UINTN info_size = 0, map_key;
>>      bool retry;
>> -#ifdef CONFIG_EFI_SET_VIRTUAL_ADDRESS_MAP
>>      unsigned int i;
>> -#endif
> ... this to be got rid of, we could as well use ...
>
>> @@ -1371,31 +1369,32 @@ static void __init efi_exit_boot(EFI_HANDLE ImageHandle, EFI_SYSTEM_TABLE *Syste
>>      if ( EFI_ERROR(status) )
>>          PrintErrMesg(L"Cannot exit boot services", status);
>>  
>> -#ifdef CONFIG_EFI_SET_VIRTUAL_ADDRESS_MAP
>> -    for ( i = 0; i < efi_memmap_size; i += efi_mdesc_size )
>     for ( unsigned int i = 0; i < efi_memmap_size; i += efi_mdesc_size )
>
> now. But yes, the typo aspect you mention can be avoided altogether by what
> you change things to.

I originally had this change in the patch, but it interferes with diff
showing (just) an indentation change.

I'm not fussed either way.

>
>> +    if ( IS_ENABLED(CONFIG_EFI_SET_VIRTUAL_ADDRESS_MAP) )
>>      {
>> -        EFI_MEMORY_DESCRIPTOR *desc = efi_memmap + i;
>> +        for ( i = 0; i < efi_memmap_size; i += efi_mdesc_size )
>> +        {
>> +            EFI_MEMORY_DESCRIPTOR *desc = efi_memmap + i;
>>  
>> -        /*
>> -         * Runtime services regions are always mapped here.
>> -         * Attributes may be adjusted in efi_init_memory().
>> -         */
>> -        if ( (desc->Attribute & EFI_MEMORY_RUNTIME) ||
>> -             desc->Type == EfiRuntimeServicesCode ||
>> -             desc->Type == EfiRuntimeServicesData )
>> -            desc->VirtualStart = desc->PhysicalStart;
>> -        else
>> -            desc->VirtualStart = INVALID_VIRTUAL_ADDRESS;
>> -    }
>> -    status = efi_rs->SetVirtualAddressMap(efi_memmap_size, efi_mdesc_size,
>> -                                          mdesc_ver, efi_memmap);
>> -    if ( status != EFI_SUCCESS )
>> -    {
>> -        printk(XENLOG_ERR "EFI: SetVirtualAddressMap() failed (%#lx), disabling runtime services\n",
>> -               status);
>> -        __clear_bit(EFI_RS, &efi_flags);
>> +            /*
>> +             * Runtime services regions are always mapped here.
>> +             * Attributes may be adjusted in efi_init_memory().
>> +             */
>> +            if ( (desc->Attribute & EFI_MEMORY_RUNTIME) ||
>> +                 desc->Type == EfiRuntimeServicesCode ||
>> +                 desc->Type == EfiRuntimeServicesData )
>> +                desc->VirtualStart = desc->PhysicalStart;
>> +            else
>> +                desc->VirtualStart = INVALID_VIRTUAL_ADDRESS;
>> +        }
>> +        status = efi_rs->SetVirtualAddressMap(efi_memmap_size, efi_mdesc_size,
>> +                                              mdesc_ver, efi_memmap);
>> +        if ( status != EFI_SUCCESS )
>> +        {
>> +            printk(XENLOG_ERR "EFI: SetVirtualAddressMap() failed (%#lx), disabling runtime services\n",
>> +                   status);
> Could I talk you into switching to
>
>             printk(XENLOG_ERR
>                    "EFI: SetVirtualAddressMap() failed (%#lx), disabling runtime services\n",
>                    status);
>
> to make the line at least a little less long?

Ok, but I'm not going to resend just for that.

~Andrew


From xen-devel-bounces@lists.xenproject.org Thu Apr 09 11:22:53 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 09 Apr 2026 11:22:53 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1277051.1562324 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wAnTF-0004Pv-3q; Thu, 09 Apr 2026 11:22:49 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1277051.1562324; Thu, 09 Apr 2026 11:22: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 1wAnTF-0004Po-0m; Thu, 09 Apr 2026 11:22:49 +0000
Received: by outflank-mailman (input) for mailman id 1277051;
 Thu, 09 Apr 2026 11:22:48 +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 1wAnTD-0004Pi-Rf
 for xen-devel@lists.xenproject.org; Thu, 09 Apr 2026 11:22:47 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wAnTD-008UC4-7a
 for xen-devel@lists.xenproject.org; Thu, 09 Apr 2026 13:22:47 +0200
Received: from [10.42.69.12] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <andrew.cooper@citrix.com>)
 id 69d78c03-e002-0a2a0a5209dd-0a2a450ccd26-4
 for <xen-devel@lists.xenproject.org>; Thu, 09 Apr 2026 13:22:47 +0200
Received: from [40.93.195.64]
 (helo=SN4PR2101CU001.outbound.protection.outlook.com)
 by tlsNG-d25034.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.0)
 (envelope-from <andrew.cooper@citrix.com>)
 id 69d78c05-f40c-0a2a450c0019-285dc340e1f3-3
 for <xen-devel@lists.xenproject.org>; Thu, 09 Apr 2026 13:22:46 +0200
Received: from CH8PR03MB8275.namprd03.prod.outlook.com (2603:10b6:610:2b9::7)
 by MW4PR03MB6508.namprd03.prod.outlook.com (2603:10b6:303:127::10)
 with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9769.20; Thu, 9 Apr
 2026 11:22: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%6]) with mapi id 15.20.9769.018; Thu, 9 Apr 2026
 11:22: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=HgQJWGp4iSoDLJGgO6yoztvdfLLhCQ8WRs1tfMnPOug+0eRL5eHNB5l3wOS4Qz/SRacf4Iuh49iXOPfQSk4m2PJ0rC1LTVMPLk1GA8sT0G3wd+/uUesdi35i9m3EqAlftlaCCsh3pZuAuY0i8gE/hMHiYMTdx4YYSiLeVvntvSddn6LqImWxSRQuPQsECSWN5HuJlWsydXYdR6YgVmb5T9bom/4wCVA/cembWsiWUsvfA9jAi9H3p98zedMLGeKMPG1DQNLvPlAfBfS1hhrh4AMpvc2uQ9pqRjL110raXygIG76l8yAd7o96vF5hm+S6CFkToJx1nrzLzvlqwsP9cw==
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com;
 s=arcselector10001;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1;
 bh=Aay0Ut8ruxv3rj9DqIyV4nHfBqLYFxdAoKXeB9+NCjI=;
 b=LwVgL38pgo0RLE3R22PgKTo3lSP1Yjd8glYDx6FjPDff6GKBAbDYTJwPE85rQIkZ3nH70iSiMhbMwEeDCRehQpm29nUuLdj2YlkM+9EU5gdouLX52IUgkONK0lE5i9P2atebC6BCEoCAx/LRtJgjp+4FfDPyc+83U33yQeXt1spQ1f/gVR9G2bXKZkXS9gEtSA98IQ4XcYt11rFPi2dgIggJ+/QpB2Zhs9ihVWqYX7Qvsso8XrNCg7g4i4FnfsaYsAzE7Ga0Gc6omyalX6AldUzvnunex7+eDkEgOo7j89wHmRsMkF3PcsrCN9KMwsxpMk99BldNcUFJ7ZwYEghEeA==
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=Aay0Ut8ruxv3rj9DqIyV4nHfBqLYFxdAoKXeB9+NCjI=;
 b=nnvLwYciSU3f58geGWleOxHG3MOvWo8s5pKsROczYZD4eb1vNkCjAMH0V8JpE5SdKoP3OEK6TbYnFg8uaBHtwDAaQkfhCzL1lbJU0OlLgEJfcSzxCp3Kpvewt99uH7+wR0iL0zKVTzRWTyKvl3langPuDgdIiUUIgQzYEs1iVDw=
Authentication-Results: dkim=none (message not signed)
 header.d=none;dmarc=none action=none header.from=citrix.com;
Message-ID: <5d3472ff-77ff-466d-9461-3b33ef0815aa@citrix.com>
Date: Thu, 9 Apr 2026 12:22:39 +0100
User-Agent: Mozilla Thunderbird
Cc: Andrew Cooper <andrew.cooper3@citrix.com>,
 =?UTF-8?Q?Roger_Pau_Monn=C3=A9?= <roger.pau@citrix.com>,
 Teddy Astie <teddy.astie@vates.tech>,
 "xen-devel@lists.xenproject.org" <xen-devel@lists.xenproject.org>
Subject: Re: [PATCH v2 1/3] x86: record SSP at non-guest entry points
To: Jan Beulich <jbeulich@suse.com>
References: <f064c3af-c22a-40e0-a268-ee37e34297a3@suse.com>
 <de873764-c803-4f56-b88a-936cb948c382@suse.com>
 <f08e0fbf-3570-4760-9977-4e99e651a3a4@citrix.com>
 <868b63e6-c551-49b6-b177-cfadb29a69b1@suse.com>
Content-Language: en-GB
From: Andrew Cooper <andrew.cooper3@citrix.com>
In-Reply-To: <868b63e6-c551-49b6-b177-cfadb29a69b1@suse.com>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
X-ClientProxiedBy: LO4P123CA0008.GBRP123.PROD.OUTLOOK.COM
 (2603:10a6:600:150::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_|MW4PR03MB6508:EE_
X-MS-Office365-Filtering-Correlation-Id: 63639e81-4b36-444c-4dbf-08de962a50bf
X-MS-Exchange-SenderADCheck: 1
X-MS-Exchange-AntiSpam-Relay: 0
X-Microsoft-Antispam:
	BCL:0;ARA:13230040|1800799024|376014|366016|22082099003|18002099003|56012099003;
X-Microsoft-Antispam-Message-Info:
	OBqKUirhzffoL0BRTwKeFYSDZaraXXZ+eiQ/to+db0Xo8+4B5jWjzLkn0FPtaBKtWJDZcNdaNyp9tUwpiB+w4pjbxkn68Bwq16oDICpMjZjQ0oUkXer3L+diBD6PEL7FLQDdkpsbsrktIT7YfeE+nDh7AFf9TNyxoG9M6sambv3DL34kgpvENUnoGBtGjj8lPWlDe/MXHYONm58uzTJCLp/HVQqnnq5MJF3U1/oHQNNMkm6qgWkP53ocC56Btfw0PYbnt8nMj7sNoJTQuo1MQOorWHYv9QIbCxKTWveDvRxUEqu+Oe9WPPmCgmWNzj7Ew7pi2z9BJv+n/dlda4lEnFFqkTb+F0DTLkSdpWYlB6OzZv5uwDxxm+10I7WLRiYSaGC1MhRstVQVU2y7sWpUzH0G13phKlOIRf0NauwxbPC/PFyuy7LnPmRqK8BjUhkEiWm42IARlDAPBNa+JhQhcbfkwrgQa3EJUkT29VeNOy4RhbJPs4mgJsLvX4F/tFQjUlir5dCZbSQYzezm6gQqBl9M0tf8Zxk/cGujIwI5cgO6s0fNx40v+4xJNMzjxrys/pWjuaX7QQJ8xtr+UnJXhmFBxvNuC/t8SvT8w7d066szN45xoly0LRRCL8ovBsRHAWnUsm4HTsiVrn9H+IqA5MobzsGkPmx9E+X6A8StwYd7nWj65HX3qBQvysHrqc1p2PVrEzEfZ3uvo5VtPZnCVRw8c6MsntY+FtjTRo3cQiU=
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)(376014)(366016)(22082099003)(18002099003)(56012099003);DIR:OUT;SFP:1101;
X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1
X-MS-Exchange-AntiSpam-MessageData-0:
	=?utf-8?B?SG1qQkNVdVFlNkoxTmNQajdCdXdidnZjTGxPRE03ZUhxU3BScUUza1FvQURL?=
 =?utf-8?B?c2t3SUl5VTN4SU9WRC9saHh1cGY4V1IydnR3QTFxNjd1NjJJTFdIeU8vbWhk?=
 =?utf-8?B?TExMWkZxZWZCM2F6Y0x4NmtmeStIRXpFclo2OFh2RTRZY2hVbmR3ZjAwT1hO?=
 =?utf-8?B?MmZGWnQrQVBxTGp3eHJHaG1ENUZRakRJcllDU05XckozOGdlOEVEY1h1Z3dq?=
 =?utf-8?B?ZWtGN1ZDZndNK0FLVVZNQUpPUHFaQWloQitkYmNhMVpPQWRtdndyMkJRUzBO?=
 =?utf-8?B?VFk2eUhvczZQT0w5SXNWSmNXZytRWnZDRm5nT0ZqSTVvS2NNWGQrR2xjSGlo?=
 =?utf-8?B?bG9mQ2NJNGlLZ3ZEVjdQdlJkLzFnbTBXTFFNU295dVdmOE5rOUFMZG5kQ2Rx?=
 =?utf-8?B?MkpEbUNHSlhDeUg3VEM5V3ZveGR5YVFaWmdsK1BEQUVpc2c4WUJsT0FzS1Yw?=
 =?utf-8?B?VXAzWFZzb1M2ejY1L3ZUUlZRZ2NINlhYdkJ4U3Rxc01qSmcvMWdwVjJWb0dB?=
 =?utf-8?B?cTB1ODNKNldlYW9oNyt3L0Jub1RpOVFoS1o3QW1vQmZnUzdrNkkyL1k4ZUNj?=
 =?utf-8?B?S056Z2h0cS90U1JWWHdULzZWRjlOajR6WUNqeWNtWFhmVGdzeTJnbFZCT0tW?=
 =?utf-8?B?TzVqUThIMjhKRTNXUlk3WndKR0NQbEs2blNaa3FBaUtiMWI1bzdkTjFrUHpo?=
 =?utf-8?B?dHBLeHlKdWxzY3dheVlkdmJVOGF5VkZpU0JzcGRLYWwxYjFNZ2hyZlpaYWRx?=
 =?utf-8?B?ekdyVDYvZTZMNHN5cFhQVlNrbzJYVHJVUDdNbUUxUU9YUFVmOHdLZnBlNUZn?=
 =?utf-8?B?WXUyb0lhZXRvSUk2UzdlTmtyK2RNZEE4bzhGbzFLUGFNSmZGSXVpR0ZMNEk0?=
 =?utf-8?B?TWdKTkEvWWg0QnNPWUd4dGN0YUordElsQXRibXQxODB1bFNIbHRackdMK1BR?=
 =?utf-8?B?MHlXVlV4S0xpTitZNmZkUVFxSncydWYySzdWWEJGL2E3YS9ZeEhkU2xieUk5?=
 =?utf-8?B?dHkrM0F3VmU5OHlnVHU5UHlqNFdxTEJzbGdYUUFhODN0blV4dzVMSDgwdnpJ?=
 =?utf-8?B?NlQ2azk2RjAvVXFidnlCbW5PQ0tVSDNqdXk3cGtGRUVQczR0WWFCanJvcnhU?=
 =?utf-8?B?Nnl6VXFUb1pvcTJYOGxkNHRSblVKc1VVcjBOS3dSQTl0Y2ZaUmYwaUc3N0RY?=
 =?utf-8?B?NndLVjBPbUgzeDU4c3h6Sld0RWVVR1NuQzRNZGNmWG0rbGV3UXc4eFNuSk9G?=
 =?utf-8?B?STBaYTVIcTRqTnovR0k0QW1qV0xRM0FvZzhLUHhsemdkWTNjV1dwSzh5SDFs?=
 =?utf-8?B?c3crK1hmd1R5V0hBQXJyRWQyQ1ZrNWNOb2NmL3E2cnRoME81dkE4cDlVTFR3?=
 =?utf-8?B?bVFBNCsxYlR3NHZtUnFiNCt3cHJobk1kV3FzQ3NVeVowQkYzeERtVVlZaHdV?=
 =?utf-8?B?RmVMa1ZzMUU5QnRkM1BldC9TdTRJY3FwNTFUM25mNFJZZjFuOUVFZTZjenFu?=
 =?utf-8?B?WDc2Ukd2R2pkTjJLclh3RFpzcXNtTHY3RmtBZ0JSdW05ek1DZ1M2WVE3ejAy?=
 =?utf-8?B?ZnJ3LzNEbWhGa3RmVDhnUEpaRXhMakFKOE1telNUVjhCaS9uREZNcjVXVTdX?=
 =?utf-8?B?RldjUnpXZTZjNnNLN0UwWWNIMkcvSi9tVkcyMENvT21KR2VSNTlVa1RNNXFx?=
 =?utf-8?B?SnV0ZzlqTU0wVXM4VnhBUDJDYUhNUTBpdHRENzMybFZGK1JvQkMwRzNaQTBQ?=
 =?utf-8?B?YzFHcHVBZTlvMHBQL3U3NGFLcEFiVU0zcDhvSnhvN3FTeUxhSENXMXhMVlVR?=
 =?utf-8?B?YU1qNXpUSFpPa2VNNlY5OHIyVjNnVEN0anVaL0tjRGNBZkMydThNWFZvNzdF?=
 =?utf-8?B?OHNyNFJyU2lIdGtwbWJnbW5ncWJTUXloaS83ZVN5QnB1SS92REJqNjRxYjZE?=
 =?utf-8?B?dmR6WWVpMUpHZHJPWkRiMjdmcERyaDE2TEhtcWp5Y09GbDNMTjA5bzRyTmlt?=
 =?utf-8?B?UHVLUFJyOEJxWUxUQVVvUVZIOUQ3UXRCSjloNXZVZis2bVpDLzVoWDhsWjdx?=
 =?utf-8?B?V0J3cmFrRjFZNzUxMWZ1d3pCdkhaV2IyMS9pTEFSem9CMnpaWTN6Qy96c1F6?=
 =?utf-8?B?eGdBb0RsamVzTnJJQjdqWlhhWkpnV3VyTUhwZDVDUU45TC9leGYxSWNVeFBo?=
 =?utf-8?B?T216aHhibGx2SmZRYm01Z3cyRkh3NGcySEtObXNHc1FIdWN0dE1hNzF3MFJ0?=
 =?utf-8?B?dVUzNktMZ0hoOFo4K2VKM0tBYVIrUmFrVnBOL3FsN1dTWExNVTNWRGpJNWRI?=
 =?utf-8?B?MDA2YmVaaFFFajBsVzhMTE5zSDRXUlZDWFdQOUNwdTZ0cHV2MEUwSEg1ams1?=
 =?utf-8?Q?4+r5snZ/6JrkII3Q=3D?=
X-OriginatorOrg: citrix.com
X-MS-Exchange-CrossTenant-Network-Message-Id: 63639e81-4b36-444c-4dbf-08de962a50bf
X-MS-Exchange-CrossTenant-AuthSource: CH8PR03MB8275.namprd03.prod.outlook.com
X-MS-Exchange-CrossTenant-AuthAs: Internal
X-MS-Exchange-CrossTenant-OriginalArrivalTime: 09 Apr 2026 11:22:42.1565
 (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: FbNpd7F3QX0YfMm3EShzu3OwxhyxdPehqEWRuK6/mouOOQBPUioNFPt4UBj2DiKQuPvVwfIZ8WCwzCzYjQJnSRG9mq5RKkAoJt7JKxHcG08=
X-MS-Exchange-Transport-CrossTenantHeadersStamped: MW4PR03MB6508
X-purgate-ID: tlsNG-d25034/1775733766-FCF5AA3D-ADA80613/0/0
X-purgate-type: clean
X-purgate-size: 3069

On 09/04/2026 9:13 am, Jan Beulich wrote:
> On 08.04.2026 18:58, Andrew Cooper wrote:
>> On 08/04/2026 1:22 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.
>>>
>>> Signed-off-by: Jan Beulich <jbeulich@suse.com>
>>> ---
>>> For PUSH_AND_CLEAR_GPRS and POP_GPRS, putting the new field right next to
>>> the error code isn't entirely nice; putting it ahead of %r15 would entail
>>> other changes, though. An option may be to not make SSP handling part of
>>> the macros in the first place. Thoughts?
>> I have a firm dislike for SAVE/RESTORE_ALL, both for their substantial
>> complexity/inefficiency, and mixing of unrelated tasks.
>>
>> I have several series trying to purge them.  I suppose I really ought to
>> try and finish this off properly.
>>
>> While classing SSP as a "register" is probably fine, the ssp= parameter
>> (and particular it's asymmetric nature) is on the wrong side of the
>> "complex" argument IMO.
>>
>>> For POP_GPRS, does it really matter that it doesn't alter EFLAGS? 
>> Yes.  The SYSCALL fix for one (reviewed, but waiting on final testing
>> before I commit).
>>
>> Then the VT-x code when swapped to use POP_GPRS.
>>
>>
>> To take a step back, you say that putting it ahead of %r15 would entail
>> other changes.  What changes?
> SAVE_ALL's initial ADD, RESTORE_ALL's final SUB,

Ok, this problem goes away if they're purged.

I guess I should refresh and repost my series.

> and then the hunt for
> anything which may simply assume UREGS_r15 to be 0.

I highly doubt we've got anything like this.  (And even if we do, it
wants fixing, not using as an argument against doing this the nicer way.)

>  If UREGS_r<xyz> were
> ordered by register number, I would have considered putting it where
> %rsp nominally would go, but without that putting it somewhere in the
> middle feels rather arbitrary.
>
>> The resulting asm would be far cleaner.
> I agree.
>
>>   It would be an rdssp;push on
>> one side, and a pop into any register on the other side.  Furthermore,
>> given that the ssp= doesn't exclude storing it for some user frames,
>> just store it for all.  It's one push/pop into a hot cacheline, and
>> makes a substantial reduction in complexity.
> I'm having significant reservations against that. I use the 0 put there
> in subsequent patches, to identify absence of that data being available.

Well, that's not safe then.

You've already got non-zero values there on entry-from-PV because
there's no CPL check gating RDSPP the common IDT paths.

~Andrew


From xen-devel-bounces@lists.xenproject.org Thu Apr 09 11:26:47 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 09 Apr 2026 11:26:47 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1277065.1562333 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wAnX4-00053L-Ll; Thu, 09 Apr 2026 11:26:46 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1277065.1562333; Thu, 09 Apr 2026 11:26: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 1wAnX4-00053E-Ih; Thu, 09 Apr 2026 11:26:46 +0000
Received: by outflank-mailman (input) for mailman id 1277065;
 Thu, 09 Apr 2026 11:26:45 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92) id 1wAnX3-000536-5A
 for xen-devel@lists.xenproject.org; Thu, 09 Apr 2026 11:26:45 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wAnX2-00DPkc-HG
 for xen-devel@lists.xenproject.org; Thu, 09 Apr 2026 13:26:44 +0200
Received: from [10.42.69.10] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <oleksii.kurochko@gmail.com>)
 id 69d78cec-5cb7-0a2a0a5109dd-0a2a450ad6c8-38
 for <xen-devel@lists.xenproject.org>; Thu, 09 Apr 2026 13:26:44 +0200
Received: from [209.85.208.50] (helo=mail-ed1-f50.google.com)
 by tlsNG-4011c0.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.0)
 (envelope-from <oleksii.kurochko@gmail.com>)
 id 69d78cf4-ee98-0a2a450a0019-d155d032b430-3
 for <xen-devel@lists.xenproject.org>; Thu, 09 Apr 2026 13:26:44 +0200
Received: by mail-ed1-f50.google.com with SMTP id
 4fb4d7f45d1cf-67010289b73so1072551a12.0
 for <xen-devel@lists.xenproject.org>; Thu, 09 Apr 2026 04:26:44 -0700 (PDT)
Received: from [192.168.1.6] (user-109-243-69-121.play-internet.pl.
 [109.243.69.121]) by smtp.gmail.com with ESMTPSA id
 a640c23a62f3a-b9c3cec6c11sm766964566b.30.2026.04.09.04.26.42
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Thu, 09 Apr 2026 04:26:43 -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=20251104 header.d=gmail.com header.i="@gmail.com" header.h="Content-Transfer-Encoding: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=20251104; t=1775734004; x=1776338804; darn=lists.xenproject.org;
        h=content-transfer-encoding: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;
        bh=FXP2uJ7NN/hezCd2/ar0UucHukb/Mjy6CzRam3hhs7Y=;
        b=LHKLKoHt7DRLswtZo64ybUEr4o155C2QzxUtOp+fvEKRvSfU/EABCa+vNo5Zf0upCz
         88i8Z59pkR/uOtW+jpccqq3l6xk/wmTZgvQjvszwJ6eN5JmF5iriE3CeCRfvwirLZ4ad
         XTqcPb7ltMgeIaxn2VTAYcmesx1uOJK584ZglLI8GhLl0L/tMyeqw9xdCUT9ZSDXQYwN
         7BnCQdVr5NR9RL6eCvBwXnI4BA6mqs5Cj9r2FROqm9YrQ1m57ocTIrzoTI6dYzaTuxP0
         wfi0EUM1DrLLQRioJhYIu7NwMYgs95vwf5d/ENBzIWFXjm9VKpYdwPCcFpjufjDSdHBa
         PeGA==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20251104; t=1775734004; x=1776338804;
        h=content-transfer-encoding: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;
        bh=FXP2uJ7NN/hezCd2/ar0UucHukb/Mjy6CzRam3hhs7Y=;
        b=rmcbG9kJp79e5XN0f8DhCZrwZtR7krSVr7K6gRKBKtGHmCpnjz33lEkRIH6u1PI6PB
         rMop2ShnoGu80/f/kyUBEAOCTpAeyV29KtySQVjJW5YDySjoGG71Hmh/9WHy12gbka7m
         BhQqAwJdCD6Yh+V2XT1ifATqfJB6pIrADC7TKu2BWi7AXslpQAmEjRNue64kHioFrUHl
         HZfb2iJA5BhGRoVETBU/t8zfwYd3lkTepnJPjBmHUg9mtiIYKdnTkAsp9qm8cgmoM4aK
         ZBSuM+nvaUwSWQZcIGj01loFe34U+Xhl4CbtKw8jwlWDc+EP7SX4h0Z4rA9ivh1eah5b
         MQnA==
X-Forwarded-Encrypted: i=1; AJvYcCWaJe8vFJL7m1jd2vcWSX46W6Gjd7kP5hmKLtVjATFdWJzMtGS/c5J7LODjm6hjXK+vEhsnBs98KwI=@lists.xenproject.org
X-Gm-Message-State: AOJu0YzYT7gAO6XUYx6v8ZgDlcfTZlxRFlltojtk0KCvrKjkYrR/EKoQ
	MgjIhsE5yLqwXMy8RlkmlhDNbKGn582dBhGAczREMQv88VdZlpmiCzkp
X-Gm-Gg: AeBDietqQ9mMEGR9APoQ6xydUYVaLxxXjU+Joc8WTNc+4k3irrAbOozOxqUEDgpSTzG
	47yxOfIVpJ1xb0QIVx8PgYRYVrRBAKskcchJfBFDMXsZ7a6tqnTmOHmNEiKIDX8up7uGGtn/+ND
	V0QjBQ2eYi4uhwwCCO3NQRVPUsSWltCZeA8ZGpMkrL/+yI8yMo55nzkQhBHsWSVZcxK74hqxN+E
	SZ0Q18JifadKKDIKmJbn5krFbNAFw7z8qqLa53knxYk3pfFQdwK+UIPw5cZGWAldqKxp/hH/AqQ
	7Qcqkm18DZWNdiGh8WGK1XrHTtZaMStxsjeogqUc7SZIb9mKWug5IzaCnLgax0iMumrQCkVZZ7h
	MyokHOjj1WM33KB8UeU+wVKKjx4kLU4n1V/vD5z7MRS150je+Xve/Xsf54id2qPuR08PflxuA1O
	L+ahymR2s/rxwMhNWjY0o2k7Tk41uZ+9D64HwP5hLIuo49FXIv2c3Qm1jrmRdE0WCpqJdgR+wni
	C8=
X-Received: by 2002:a17:907:8691:b0:b9d:3d63:b913 with SMTP id a640c23a62f3a-b9d3d63be66mr263745766b.26.1775734003560;
        Thu, 09 Apr 2026 04:26:43 -0700 (PDT)
Message-ID: <95fc62d9-cfd4-4b75-a9b0-7e90c9ba1095@gmail.com>
Date: Thu, 9 Apr 2026 13:26:41 +0200
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH v1 02/27] xen/riscv: Implement construct_domain()
To: Jan Beulich <jbeulich@suse.com>
Cc: Romain Caritey <Romain.Caritey@microchip.com>,
 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.pau@citrix.com>,
 Stefano Stabellini <sstabellini@kernel.org>, xen-devel@lists.xenproject.org
References: <cover.1773157782.git.oleksii.kurochko@gmail.com>
 <3a86599284108e6f2a27488a03145f8dd1b71def.1773157782.git.oleksii.kurochko@gmail.com>
 <cd1fa52a-0ff2-4b7f-9b0b-c33b6a01b6c8@suse.com>
Content-Language: en-US
From: Oleksii Kurochko <oleksii.kurochko@gmail.com>
In-Reply-To: <cd1fa52a-0ff2-4b7f-9b0b-c33b6a01b6c8@suse.com>
Content-Type: text/plain; charset=UTF-8; format=flowed
Content-Transfer-Encoding: 7bit
X-purgate-ID: tlsNG-4011c0/1775734004-0D9540B1-B75FFFB0/10/73395122804
X-purgate-type: spam
X-purgate-size: 3111



On 3/24/26 10:37 AM, Jan Beulich wrote:
> On 10.03.2026 18:08, Oleksii Kurochko wrote:
>> --- /dev/null
>> +++ b/xen/arch/riscv/domain-build.c
>> @@ -0,0 +1,46 @@
>> +/* SPDX-License-Identifier: GPL-2.0-or-later */
>> +
>> +#include <xen/fdt-domain-build.h>
>> +#include <xen/fdt-kernel.h>
>> +#include <xen/init.h>
>> +#include <xen/sched.h>
>> +
>> +#include <asm/current.h>
>> +#include <asm/guest_access.h>
>> +
>> +int __init construct_domain(struct domain *d, struct kernel_info *kinfo)
> 
> Are you actually altering what kinfo points to?

Not directly in this function, but it could be altered, for example, by 
kernel_image_load() where "info->entry = load_addr" is happening.

> 
>> +{
>> +    struct vcpu *v = d->vcpu[0];
>> +    struct cpu_user_regs *regs = vcpu_guest_cpu_user_regs(v);
>> +
>> +    BUG_ON(d->vcpu[0] == NULL);
> 
> Why not simply "!v"?

It could work. I'll apply that.

> 
> Also, while in the cover letter you state a dependency on another series,
> this is somewhat unwieldy here. From the titles there I can't deduce which
> of the patches would introduce vcpu_guest_cpu_user_regs(). Yet I would
> have wanted to double check that it doesn't de-reference v already.

It was already merged. It was part of:
  xen/riscv: implement vcpu_csr_init() "02b3a1b0e53c"

> 
>> +    BUG_ON(v->is_initialised);
>> +
>> +    kernel_load(kinfo);
>> +    initrd_load(kinfo, copy_to_guest_phys);
>> +    dtb_load(kinfo, copy_to_guest_phys);
> 
> These all return void, despite this also being used for non-Dom0. Is it
> really fatal to a dom0less system if one out of many domains fail to be
> built?

For a dom0less system, my opinion is that it should not be fatal, it 
should simply ignore a domain that fails to build and continue with the 
rest. However, with the current common dom0less code it will just 
panic(). This is a behavior I would like to change and it is on my TODO 
list.

Regarding the functions returning void, this is because all of them 
currently call panic() on failure, which I expect will need to change in 
order to ignore a domain that fails to build in dom0less mode.

For the current implementation of the common dom0less code this is fine, 
but I agree it should be addressed in a separate patch series.

  Especially when, despite the name, there is a Dom0?

For this case, a failure there should indeed be fatal, so panic() is 
appropriate.

> 
>> +    regs->sepc = kinfo->entry;
>> +
>> +    /* Guest boot cpuid = 0 */
>> +    regs->a0 = 0;
>> +    regs->a1 = kinfo->dtb_paddr;
>> +
>> +    for ( unsigned int i = 1; i < d->max_vcpus; i++ )
>> +    {
>> +        if ( vcpu_create(d, i) == NULL )
>> +        {
>> +            printk("Failed to allocate %pd v%d\n", d, i);
>> +            break;
> 
> And no error is indicated to the caller?

No, as generally it is enough to have only one vCPU0 to run domain, so 
we have to print that something went wrong with allocation of vCPU1...n 
but it is okay to me to continue domain construction.

Thanks.

~ Oleksii


From xen-devel-bounces@lists.xenproject.org Thu Apr 09 11:38:13 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 09 Apr 2026 11:38:13 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1277080.1562342 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wAnht-0007SV-F4; Thu, 09 Apr 2026 11:37:57 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1277080.1562342; Thu, 09 Apr 2026 11: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 1wAnht-0007SO-C8; Thu, 09 Apr 2026 11:37:57 +0000
Received: by outflank-mailman (input) for mailman id 1277080;
 Thu, 09 Apr 2026 11:37:55 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <Luca.Fancellu@arm.com>) id 1wAnhr-0007SI-Ee
 for xen-devel@lists.xenproject.org; Thu, 09 Apr 2026 11:37:55 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wAnhq-0019io-Mw
 for xen-devel@lists.xenproject.org; Thu, 09 Apr 2026 13:37:54 +0200
Received: from [10.42.69.8] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <Luca.Fancellu@arm.com>)
 id 69d78f82-bab6-0a2a0a5309dd-0a2a4508ab4c-36
 for <xen-devel@lists.xenproject.org>; Thu, 09 Apr 2026 13:37:54 +0200
Received: from [52.101.72.65]
 (helo=AM0PR02CU008.outbound.protection.outlook.com)
 by tlsNG-c1860d.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.0)
 (envelope-from <Luca.Fancellu@arm.com>)
 id 69d78f91-fab6-0a2a45080019-346548413fda-3
 for <xen-devel@lists.xenproject.org>; Thu, 09 Apr 2026 13:37:53 +0200
Received: from AS4P189CA0031.EURP189.PROD.OUTLOOK.COM (2603:10a6:20b:5dd::11)
 by DB4PR08MB9407.eurprd08.prod.outlook.com (2603:10a6:10:3f1::8) with
 Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9769.17; Thu, 9 Apr
 2026 11:37:50 +0000
Received: from AMS0EPF000001AB.eurprd05.prod.outlook.com
 (2603:10a6:20b:5dd:cafe::f7) by AS4P189CA0031.outlook.office365.com
 (2603:10a6:20b:5dd::11) with Microsoft SMTP Server (version=TLS1_3,
 cipher=TLS_AES_256_GCM_SHA384) id 15.20.9769.40 via Frontend Transport; Thu,
 9 Apr 2026 11:37:50 +0000
Received: from outbound-uk1.az.dlp.m.darktrace.com (4.158.2.129) by
 AMS0EPF000001AB.mail.protection.outlook.com (10.167.16.151) with Microsoft
 SMTP Server (version=TLS1_3, cipher=TLS_AES_256_GCM_SHA384) id 15.20.9769.17
 via Frontend Transport; Thu, 9 Apr 2026 11:37:49 +0000
Received: from DU2PR08MB7272.eurprd08.prod.outlook.com (2603:10a6:10:2d7::16)
 by GVXPR08MB10449.eurprd08.prod.outlook.com (2603:10a6:150:157::17)
 with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9769.17; Thu, 9 Apr
 2026 11:36:42 +0000
Received: from DU2PR08MB7272.eurprd08.prod.outlook.com
 ([fe80::5d34:206f:373:a323]) by DU2PR08MB7272.eurprd08.prod.outlook.com
 ([fe80::5d34:206f:373:a323%6]) with mapi id 15.20.9769.018; Thu, 9 Apr 2026
 11:36: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=arm.com header.i="@arm.com" header.h="From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck"; dkim=pass header.s=selector1 header.d=arm.com header.i="@arm.com" header.h="From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck"
ARC-Seal: i=2; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=pass;
 b=Za6Ujt5nsOrScavxFlA6ENRC4awM/nnRG8TIRiT4MoJqG1ml2NyyZa2UJwzN/bIoskCIVv1VoiBfsr03y1adCh5YAbnM9Glg9aDyGj9cDEJxzD3j5UucBNGguw76F8bcae21srNzwDgdUQbmtVowwW/XaUaMbezeDoP2Tuuahx4nuzdqt22H+uwsle0baM13iqZLiBkxXQ38f21S/pBDnRbJ8XfrUuBLOv/XFfuVerf5G16T9bZ96GcRHNyRSa8PQ4qNuTkLKBArbstZ3LoybtrfC+RpIMC7MWEtLwmRWf/ps2dynfpD8h7a7KRZsjE0Pq0YqrhbW903Yp2G1xkuKw==
ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com;
 s=arcselector10001;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1;
 bh=LyxrWZ6deBXUhYY+oTVUQpBNN5cynAEumxvyF2zOWsY=;
 b=kKlZ4c82Ec0Wp6CzB0si56rAxgOL8guNgyvYBV705bSrdjb+LkekgHQxCT3yoiFEdTewFury7RWqoJwi1U+1Jt4xSXKhAeGZsNN8Qjn/l3z0G7T+CAXi3wQBDwX6xD4WkN2k2wr6X0Sf7ZD1kokmdCs0pIcva/8NckBg+jnHPzI7i6C5US8NGP+6zXSW24yuVO78am7FzGUVRFygBeu7u+FLO4cjKI535C66EP7tVduzT1eHzMEA6IECe32ege07eqN1fsu1PRQB1YRRCVxGi6rRRc7MhNafZr8yEHJPzaJMQJ0RHU/V7OOw3tELpvyWxqqIxCD0ndAEj9yXjfQuXg==
ARC-Authentication-Results: i=2; mx.microsoft.com 1; spf=pass (sender ip is
 4.158.2.129) smtp.rcpttodomain=epam.com smtp.mailfrom=arm.com; dmarc=pass
 (p=none sp=none pct=100) action=none header.from=arm.com; dkim=pass
 (signature was verified) header.d=arm.com; arc=pass (0 oda=1 ltdi=1
 spf=[1,1,smtp.mailfrom=arm.com] dkim=[1,1,header.d=arm.com]
 dmarc=[1,1,header.from=arm.com])
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=arm.com; s=selector1;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck;
 bh=LyxrWZ6deBXUhYY+oTVUQpBNN5cynAEumxvyF2zOWsY=;
 b=KiH/UAxSKe4TiJvwpuVEp4WDHSMGbxWEXhi5s/b9ewBZ2wyhH94GGli0MVsoxIs/LlBE9+ORK6YiIaAzVAXg1xDODiko1mTxyjY/xbG7LMyAy27v3ZhSPkGjoTro9Srmua5sfEJ+MNr3VduoI7H/VwTOGgtTFTMMb3lYyp2shfg=
X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 4.158.2.129)
 smtp.mailfrom=arm.com; dkim=pass (signature was verified)
 header.d=arm.com;dmarc=pass action=none header.from=arm.com;
Received-SPF: Pass (protection.outlook.com: domain of arm.com designates
 4.158.2.129 as permitted sender) receiver=protection.outlook.com;
 client-ip=4.158.2.129; helo=outbound-uk1.az.dlp.m.darktrace.com; pr=C
ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none;
 b=mcFjjqwLCyxCuezgt9A/sis06Ilg3szl7E9HKPaZc6KTBAnxOUa9vPU4xMc3qFOgHIVOrCxvUVMmngVc3VT5xHx5JmXgat6Ftpidl4mtF7nH1hfjDccgchcJCvzxpONZABdCR+AL5XvOBEmYoh0kzeGGy3Bq39a6F0W4ttDhmNchpk71zx4H3M0fivBd19oEMx4PWZHmGAHU7YCn1ngxSczrRFXPgN0dCqwqNTkCzYKullRXRwq/g8t7fsC53HthDeGTgMlo3SWlCMGyHjEiZDVqKR17r73TD1HMm7gcuFTql/nAmiNNNc8MXpknjZKZPBxyZPnAwQrl2dDZ7tAvIQ==
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com;
 s=arcselector10001;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1;
 bh=LyxrWZ6deBXUhYY+oTVUQpBNN5cynAEumxvyF2zOWsY=;
 b=cNqDOIx4nbQ0y4zZ3+YZP0QOwkb+7B/fsRYHV3ugoiFKRMIpwBC06iFoDMEkwdKteAiWVyl5gShx/ogd6zd2aTPsHiZmexxLFQ+nkbZEsTEEH3f+c67hLEq/RHaFfsztZQAHVc7ngysgDbQzY5h9Fjs4OgaDITBeuHY99p57jM9Xh3opwzx//SG83PuIHDI8DnGBP2MXrN+FrUadgzUkGofJmJ5lDVpUBBpbqgKjKuf/KMxEPICJIhiSgFGDU9+Y1CAJgB/eba1iIFuU8zXHMKn9gRiIhIplsGkOpMPYGitCZLMsYn68lGhtThzMaiWs7AUg7lbTZbdyFpGdHbWN5w==
ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass
 smtp.mailfrom=arm.com; dmarc=pass action=none header.from=arm.com; dkim=pass
 header.d=arm.com; arc=none
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=arm.com; s=selector1;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck;
 bh=LyxrWZ6deBXUhYY+oTVUQpBNN5cynAEumxvyF2zOWsY=;
 b=KiH/UAxSKe4TiJvwpuVEp4WDHSMGbxWEXhi5s/b9ewBZ2wyhH94GGli0MVsoxIs/LlBE9+ORK6YiIaAzVAXg1xDODiko1mTxyjY/xbG7LMyAy27v3ZhSPkGjoTro9Srmua5sfEJ+MNr3VduoI7H/VwTOGgtTFTMMb3lYyp2shfg=
From: Luca Fancellu <Luca.Fancellu@arm.com>
To: Mykyta Poturai <Mykyta_Poturai@epam.com>
CC: "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>, Volodymyr
 Babchuk <Volodymyr_Babchuk@epam.com>
Subject: Re: [PATCH v1] xen/arm: smmuv3: Add support for removing devices
Thread-Topic: [PATCH v1] xen/arm: smmuv3: Add support for removing devices
Thread-Index: AQHcxnUZYHa+CmL3S0yWL3bconIhZ7XWnTcA
Date: Thu, 9 Apr 2026 11:36:42 +0000
Message-ID: <AB01C133-7409-44DB-9F4E-7D8AB2566A4E@arm.com>
References:
 <a59c2da0d4c72deb42950e9a8e3982fbdee60668.1775555766.git.mykyta_poturai@epam.com>
In-Reply-To:
 <a59c2da0d4c72deb42950e9a8e3982fbdee60668.1775555766.git.mykyta_poturai@epam.com>
Accept-Language: en-GB, en-US
Content-Language: en-US
X-MS-Has-Attach:
X-MS-TNEF-Correlator:
x-mailer: Apple Mail (2.3826.700.81.1.6)
Authentication-Results-Original: dkim=none (message not signed)
 header.d=none;dmarc=none action=none header.from=arm.com;
x-ms-traffictypediagnostic:
	DU2PR08MB7272:EE_|GVXPR08MB10449:EE_|AMS0EPF000001AB:EE_|DB4PR08MB9407:EE_
X-MS-Office365-Filtering-Correlation-Id: 3c2965ab-efc7-4d9b-5d1c-08de962c6dca
x-checkrecipientrouted: true
nodisclaimer: true
X-MS-Exchange-SenderADCheck: 1
X-MS-Exchange-AntiSpam-Relay: 0
X-Microsoft-Antispam-Untrusted:
 BCL:0;ARA:13230040|366016|376014|1800799024|22082099003|18002099003|56012099003|38070700021;
X-Microsoft-Antispam-Message-Info-Original:
 fUTDnjGbfHZZhY0JGM/1Fpi1sDqZZidED9YF4crtEmoB2Q0N4BzRKK4tDMUoXSSD66nOdSnP1zVoYgPUNsFPbyOexDn8PL1UAmmWPPaTcngUHq/uBnOkGZ58AM5LH1kkcunJTj/80dZj0pQ9G0NlttmFTVLBIo+cxp+/7pgOCItp8rSmCgi5QHAY1kgnZNmsfNhawaDw1Fj5tR2vlN/3Dbf6waRLg6UbQz+Rrh1ebczGw8Iherlgvsq5O4zkHhg/73jng7XGnz5JwePUNgZQeWpUoVhdxhlsmADTOHzhaFTJW92MKiw+cdh095psDm382GkefPGA4+lWZKtSzoxkyHl8BlFlMjEvzZuz74EokGk7aoxzh0TAth7myy1EQIvIMNwZIxqjNYv1UD01idrRojEwPLt3eKt4ALWLVVAnkgPJEem3A0B5Rt3q2NqYCycyujKljx2RNfhHBxKlXib849Hq7Ha8cZgdkXFOfNyYXHFbUhbQnAKZ+nz6NJ1U7lrI13zNhq1BySRi/HpjaJYxlMNUibClAtG8WhDspWcnXXT9Erx3rgNGuHmx7syC9XFXh3TygZGIOD9gigQd4FYgbYd5KB4qfjFvbNxQXleTXHkm6sNwtyzwqlpar5myQTpfviWXL/N2IMBRZjYiXqrfQMCFCvKJHp9lORCZzKQOAxFXP9+mALoix26iPKK10JxUJipc6EYn7/LYJC81linndM40e5v9gpaKG5kl4my0qCjpvWOJ9q+cwPMqHFwhZPKt
X-Forefront-Antispam-Report-Untrusted:
 CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:DU2PR08MB7272.eurprd08.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(366016)(376014)(1800799024)(22082099003)(18002099003)(56012099003)(38070700021);DIR:OUT;SFP:1101;
Content-Type: text/plain; charset="utf-8"
Content-ID: <8AD63C171995D84DA94ED17F0775115B@eurprd08.prod.outlook.com>
Content-Transfer-Encoding: base64
MIME-Version: 1.0
X-Exchange-RoutingPolicyChecked:
 fy+AiI3kmYnx8Qr4o+549xDWF9GRslJGpzOLWD0y7LLIKDVIFYDyczQhzqV99XAvD9Bre071a++uG8VIsLLhanr9sFi7ECKYUO98JSMPm9rqNclSfHWXFH3xQxvLY+fem17Dd/i9rHVQZowCLo770l9stRoXJBr0anXAUwtKDFdzRAzTPo09kgBzSaFy8a3MvgJxY7o81GgcGmWtcPhv4Bvgd9lO2Pe+m+jztsUzdWlAxRy0/K/MBTsCJ4bLnhAO6+Js/9TppsR73mkP4PS0UoDb5GlGzPmM2LUvJIhBrQyFUQHHf9jZCsa43ClBMvxKrJFtzn3AlufckDWGV6Ou2g==
X-MS-Exchange-Transport-CrossTenantHeadersStamped: GVXPR08MB10449
X-EOPAttributedMessage: 0
X-MS-Exchange-Transport-CrossTenantHeadersStripped:
 AMS0EPF000001AB.eurprd05.prod.outlook.com
X-MS-PublicTrafficType: Email
X-MS-Office365-Filtering-Correlation-Id-Prvs:
	c7d43aac-8cdd-467e-197d-08de962c45b8
X-Microsoft-Antispam:
	BCL:0;ARA:13230040|36860700016|376014|35042699022|14060799003|82310400026|1800799024|18002099003|22082099003|56012099003;
X-Microsoft-Antispam-Message-Info:
	7lf40azM3pSDY1+6bRBtlUgi1+mxI2SaIaFWSJbd+lemuJpY44pfbLrizeHc3QRtKqIEOqqI0ACEcT0aizHBH8aRAtQtZ7x2MV+iEpo/qbFTQ5qQUN3JcO6boJ1hj7yuE/OG/NdIRZ6Rm1p3HtkT9jJUXLDR/WOZLd+8dRu1fg3AoB2chxE9tvEHJbyft9z93p7WfVgHDqbXOoXXuTBuFMScVkD343RNN01Y2ng7ymV/0nYTzYuNjdHrAh94OEMB7ffNyV6rGM15iwhqaYczur6hwBQrYPiL7XI5y0rwuyRGiyxrp8A1S93R+9dbupXrk/NDiKfJEC3ilADImUznn0aDLZxSvifuEURYGxdcg7UHmsZbXLI+RuEA+2WQKOsCHRRqxUMTbfqsm+6x5vQGOJVz4BJQmJYWFFnZI4cAXbyT5N0RK96qxROZ+6jAByHxu0KCk/cEdOZHgW3PoxGMvaugNv1YTYnsz6ktGKmu5yf5opWGNoWX3hvo/gQ/+iPtn3s5OVPtPpiy9fUJq2INMwotYTN+38HNrkBUlgdXVpiHfcnaR7UruLE5E+p15KNz2+gQkku3jK1lA1/KlIzRQj+WNcpgHNpQso3thCJsa2KHOKkFnbN09N5gaaUKQfv7Wd3T+kwsoK/5WzaZQFgFXggPy4EluwCG9q0uJF3r4dT+Zn+YQgZbKOGDaJpgFwqxQ8f55JOc2flcFHHhVOMq/f5slJwbnBbqDQMTo4ID52E=
X-Forefront-Antispam-Report:
	CIP:4.158.2.129;CTRY:GB;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:outbound-uk1.az.dlp.m.darktrace.com;PTR:InfoDomainNonexistent;CAT:NONE;SFS:(13230040)(36860700016)(376014)(35042699022)(14060799003)(82310400026)(1800799024)(18002099003)(22082099003)(56012099003);DIR:OUT;SFP:1101;
X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1
X-MS-Exchange-AntiSpam-MessageData-0:
	h07gzOCo9vFQ/77scJ+Szsh15FtPHDLIOcuCgi6PbgY8rofAF88/2+8IOjSezMG9nhOj6e7pSPmUb1h3uVRHGelEjxOt3ETBbktBGcGDlKbGH85PMxIRI3sIMESMtAqySlC1Nmk1ZYW5DDTfYa2v10uxGJUtML+/tLyEo5AnEwHyHPCwyu6AS3GhQsnYwRLr3X3S2yyqCBP4ZyTv7VEhmfgY6PnD1hoN4671uOq/AsyrR/b7Q7+KUQYZgiytgpLlrTkn3i2gIgFXFFw0jMZ0vYrJFmi31lxb+AUfdu6bsvf8m7Ru34e7X/WbSDgltk8nnRGCNLlOK/PaG9HHMQ5wGUT3bybu8jsJH+ZhXVojnp0yrbKByubwKRhnf/0d30kkvGZUI5IUZq4W2CakyDTCAtscf4pZuRYH4jrnilK6TZKNmobnL3RYWsU6wV2szVMG
X-OriginatorOrg: arm.com
X-MS-Exchange-CrossTenant-OriginalArrivalTime: 09 Apr 2026 11:37:49.6986
 (UTC)
X-MS-Exchange-CrossTenant-Network-Message-Id: 3c2965ab-efc7-4d9b-5d1c-08de962c6dca
X-MS-Exchange-CrossTenant-Id: f34e5979-57d9-4aaa-ad4d-b122a662184d
X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=f34e5979-57d9-4aaa-ad4d-b122a662184d;Ip=[4.158.2.129];Helo=[outbound-uk1.az.dlp.m.darktrace.com]
X-MS-Exchange-CrossTenant-AuthSource:
	AMS0EPF000001AB.eurprd05.prod.outlook.com
X-MS-Exchange-CrossTenant-AuthAs: Anonymous
X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem
X-MS-Exchange-Transport-CrossTenantHeadersStamped: DB4PR08MB9407
X-purgate-ID: tlsNG-c1860d/1775734673-76B4C497-F867282C/0/0
X-purgate-type: clean
X-purgate-size: 2098

SGkgTXlreXRhLA0KDQo+IE9uIDcgQXByIDIwMjYsIGF0IDEwOjU4LCBNeWt5dGEgUG90dXJhaSA8
TXlreXRhX1BvdHVyYWlAZXBhbS5jb20+IHdyb3RlOg0KPiANCj4gQWxsb3cgZm9yIHJlbW92aW5n
IGRldmljZXMgZnJvbSBTTU1VdjMuIGFybV9zbW11X2RlYXNzaWduX2RldiBoYW5kbGVzDQo+IG1v
c3Qgb2YgdGhlIHdvcmsgYnkgZGlzYWJsaW5nIEFUUyBhbmQgemVyb2luZyBTVEVzLiBBZGRpdGlv
bmFsbHksIHVuc2V0DQo+IHRoZSBkdF9kZXZpY2VfaXNfcHJvdGVjdGVkIGZsYWcgYW5kIGZyZWUg
bm8gbG9uZ2VyIG5lZWRlZCBzbW11X21hc3Rlci4NCj4gDQo+IFRlc3RlZCBvbiBRRU1VIHdpdGgg
U1JJT1Ygc2VyaWVzWzFdIGJ5IHJlcGVhdGVkbHkgZW5hYmxpbmcvZGlzYWJsaW5nDQo+IFZGcy4N
Cj4gDQo+IFsxXTogaHR0cHM6Ly9wYXRjaGV3Lm9yZy9YZW4vY292ZXIuMTc3MjgwNjAzNi5naXQu
bXlreXRhLl81RnBvdHVyYWlAZXBhbS5jb20vDQo+IA0KPiBTaWduZWQtb2ZmLWJ5OiBNeWt5dGEg
UG90dXJhaSA8bXlreXRhX3BvdHVyYWlAZXBhbS5jb20+DQo+IC0tLQ0KPiB4ZW4vZHJpdmVycy9w
YXNzdGhyb3VnaC9hcm0vc21tdS12My5jIHwgNTkgKysrKysrKysrKysrKysrKysrKysrKysrKysr
DQo+IHhlbi9pbmNsdWRlL3hlbi9kZXZpY2VfdHJlZS5oICAgICAgICAgfCAgNSArKysNCj4gMiBm
aWxlcyBjaGFuZ2VkLCA2NCBpbnNlcnRpb25zKCspDQo+IA0KPiBkaWZmIC0tZ2l0IGEveGVuL2Ry
aXZlcnMvcGFzc3Rocm91Z2gvYXJtL3NtbXUtdjMuYyBiL3hlbi9kcml2ZXJzL3Bhc3N0aHJvdWdo
L2FybS9zbW11LXYzLmMNCj4gaW5kZXggYmYxNTMyMjdkYi4uYjViODM0YTdiNyAxMDA2NDQNCj4g
LS0tIGEveGVuL2RyaXZlcnMvcGFzc3Rocm91Z2gvYXJtL3NtbXUtdjMuYw0KPiArKysgYi94ZW4v
ZHJpdmVycy9wYXNzdGhyb3VnaC9hcm0vc21tdS12My5jDQo+IEBAIC0xNDkzLDYgKzE0OTMsNjQg
QEAgc3RhdGljIGludCBhcm1fc21tdV9hc3NpZ25fZGV2KHN0cnVjdCBkb21haW4gKmQsIHU4IGRl
dmZuLCBzdHJ1Y3QgZGV2aWNlICpkZXYsDQo+IHN0YXRpYyBpbnQgYXJtX3NtbXVfZGVhc3NpZ25f
ZGV2KHN0cnVjdCBkb21haW4gKmQsIHVpbnQ4X3QgZGV2Zm4sDQo+IHN0cnVjdCBkZXZpY2UgKmRl
dik7DQo+IA0KPiArc3RhdGljIGludCBhcm1fc21tdV9yZW1vdmVfZGV2aWNlKHU4IGRldmZuLCBz
dHJ1Y3QgZGV2aWNlICpkZXYpDQo+ICt7DQo+ICsgaW50IHJldCA9IDA7DQo+ICsgc3RydWN0IGFy
bV9zbW11X21hc3RlciAqbWFzdGVyOw0KPiArIHN0cnVjdCBpb21tdV9md3NwZWMgKmZ3c3BlYzsN
Cj4gKw0KDQpJIHRoaW5rIHdlIG5lZWQgc29tZSBwcm90ZWN0aW9uIGZvciB0aGUgcGhhbnRvbSBm
dW5jdGlvbiBzbyB0aGF0IHdlDQpkb27igJl0IHJlbW92ZSB0aGUgc2hhcmVkIG1hc3RlciBvYmpl
Y3Q/IEnigJltIHF1aXRlIG5ldyB0byB0aGUgc21tdSBjb2RlDQp0aG91Z2ggc28gaWYgSeKAmXZl
IG1pc3NlZCBzb21ldGhpbmcgbGV0IG1lIGtub3cuDQoNCkNoZWVycywNCkx1Y2ENCg0K


From xen-devel-bounces@lists.xenproject.org Thu Apr 09 11:39:47 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 09 Apr 2026 11:39:47 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1277085.1562351 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wAnje-0007xM-Pg; Thu, 09 Apr 2026 11:39:46 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1277085.1562351; Thu, 09 Apr 2026 11:39: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 1wAnje-0007xF-N4; Thu, 09 Apr 2026 11:39:46 +0000
Received: by outflank-mailman (input) for mailman id 1277085;
 Thu, 09 Apr 2026 11:39:44 +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 1wAnjc-0007x7-EP
 for xen-devel@lists.xenproject.org; Thu, 09 Apr 2026 11:39:44 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wAnja-0091Nh-8b
 for xen-devel@lists.xenproject.org; Thu, 09 Apr 2026 13:39:43 +0200
Received: from [10.42.69.3] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <Michal.Orzel@amd.com>)
 id 69d78ff0-e002-0a2a0a5209dd-0a2a4503e93a-36
 for <xen-devel@lists.xenproject.org>; Thu, 09 Apr 2026 13:39:43 +0200
Received: from [40.93.196.46]
 (helo=SA9PR02CU001.outbound.protection.outlook.com)
 by tlsNG-33051d.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.0)
 (envelope-from <Michal.Orzel@amd.com>)
 id 69d78ffd-02b3-0a2a45030019-285dc42e7912-4
 for <xen-devel@lists.xenproject.org>; Thu, 09 Apr 2026 13:39:43 +0200
Received: from PH5P220CA0008.NAMP220.PROD.OUTLOOK.COM (2603:10b6:510:34a::6)
 by MN2PR12MB4470.namprd12.prod.outlook.com (2603:10b6:208:260::19) with
 Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9791.32; Thu, 9 Apr
 2026 11:39:39 +0000
Received: from MW1PEPF00016160.namprd21.prod.outlook.com
 (2603:10b6:510:34a:cafe::d2) by PH5P220CA0008.outlook.office365.com
 (2603:10b6:510:34a::6) with Microsoft SMTP Server (version=TLS1_3,
 cipher=TLS_AES_256_GCM_SHA384) id 15.20.9769.40 via Frontend Transport; Thu,
 9 Apr 2026 11:40:02 +0000
Received: from satlexmb08.amd.com (165.204.84.17) by
 MW1PEPF00016160.mail.protection.outlook.com (10.167.249.91) with Microsoft
 SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id
 15.20.9818.0 via Frontend Transport; Thu, 9 Apr 2026 11:39:38 +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.17; Thu, 9 Apr
 2026 06:39:37 -0500
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.17; Thu, 9 Apr
 2026 06:39:37 -0500
Received: from XIR-MICHALO-L1.xilinx.com (10.180.168.240) by
 satlexmb08.amd.com (10.181.42.217) with Microsoft SMTP Server id 15.2.2562.17
 via Frontend Transport; Thu, 9 Apr 2026 06:39:35 -0500
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@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=k8QoljjurLraRQwcrr7CcVLAiunQ6g2alQLRfCxLN9QRQpYQKuiHryHcTBAxASoc+LN2b+Mjhj3hwzyQAnRv6Ufc4s/QpFopY2OjiW+Np0eSgOXwyi95cNT+J5jtThrF8FMhPF2HzvvmKUJBhV8GkugCbUdXJ/lX2mtXBvwEWYHQSpCZFz31O4Iw2Z6N5RJefjFZtCyPY08P2FqVUtq7/GyPwL4X3o4hJM9Z5x1KVnDwzInVt4Lo5JE4m9izt8rsoKPWiVVe3+GeQOqsFDepjus4ZM051XJj54APl3EQrkHRLLUWYkdt8BuuOZzHS5QbkTW8cB9cYdZoDFDo5HPfhg==
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com;
 s=arcselector10001;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1;
 bh=GkHdQhSuOILU1Lyi4V3JpOWxb5YZKjf3r8Q+r/+6rVY=;
 b=v0Uv3k0sAs73YcVHrIc+FZ4QICov6ictJOYGyQUeMchpOr0S5kalKwqqXUrhC8Cw9pbysX9ms8VPtbfKRT3pMl5jtsAvMzy4j4ulRvJ5qzBBsH4NHERyQow/NgYWj4fx2bf94u28+cP22F2emKeg1tZFDUAbEA9SNwJXMa1NUHJdU4M1ft4lgbixhwo4483tCcV3paDjQDwaZF6/Yj3A8jTSfN2IvOS+NQeRhUHXT3pZJvvr5TPIg8NIsXpGn7oGXRClYTyQGpHZQkE2gPXSiA6lBFljXuehMVcrboA5fDNXFtL/9vTQT9QxguZxeOX32vZHXzuOb359P7S4tSiGig==
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=GkHdQhSuOILU1Lyi4V3JpOWxb5YZKjf3r8Q+r/+6rVY=;
 b=4tONvX01SP3W9CPDFP2YsMhVPEbi+TO5s0GpSc5r8KgyFefYhUX/bT7cZk6i4E++iio3+gLWPgc0A9bNFtOGOTRp0ZkjkifYf4qZtwJ9D9ivkZ1Z08hf6OvoDvK/SdcUo37edIIJK8Gn67hqS0ofZ8M1QH3hxjjtlqFSTK1ffy4=
X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 165.204.84.17)
 smtp.mailfrom=amd.com; dkim=none (message not signed)
 header.d=none;dmarc=pass action=none header.from=amd.com;
Received-SPF: Pass (protection.outlook.com: domain of amd.com designates
 165.204.84.17 as permitted sender) receiver=protection.outlook.com;
 client-ip=165.204.84.17; helo=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>,
	Andrew Cooper <andrew.cooper3@citrix.com>, Anthony PERARD
	<anthony.perard@vates.tech>, Jan Beulich <jbeulich@suse.com>,
	=?UTF-8?q?Roger=20Pau=20Monn=C3=A9?= <roger.pau@citrix.com>
Subject: [PATCH 0/3] Fix Arm off-by-one bugs
Date: Thu, 9 Apr 2026 13:39:31 +0200
Message-ID: <20260409113934.197619-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: MW1PEPF00016160:EE_|MN2PR12MB4470:EE_
X-MS-Office365-Filtering-Correlation-Id: 04574b9f-5b69-49d4-b89d-08de962caeb2
X-MS-Exchange-SenderADCheck: 1
X-MS-Exchange-AntiSpam-Relay: 0
X-Microsoft-Antispam:
	BCL:0;ARA:13230040|376014|1800799024|36860700016|82310400026|56012099003|18002099003;
X-Microsoft-Antispam-Message-Info:
	GHZDR7r1U2AzS8RO7cR8TkyW9S0hbiERujGlNqGVEl9cCsv8aW0OBIB2apcLL+VjoQg9o/05mB3/fc/Xjzcqi3v/BtujeCLPjvnVpv35PuIi/Fi+Yn+gM5nrEdEG6VcAMSdf8TCbbVSvTPT4RcUl2ZZ4IuCXQAucRy97chOAEmEWqA5b3rFpvupGFJhKxb5zPzR+O1x2YpHHhokuKFfXSypT1TVnv3LMV5HkFO0jI0f3e4BmSe3saeqmtzdgXvE78XPIRPEqJeqFSmBVA14Hbu0Y6+fr6RyQVfQ6QTSLHwL8Y234izZpwWggpJ7lMPa8yHNxtV6coKV8A+nlw70VCSSCrkh3cSeYt/uKQ4lLwkfZN+rZM5bxdP8jMhQU48zidkyllkWNQCtoFDli5wkxatwpN/NBHeF+6bSNYWQBIy0j5xGsjCVSA3Ip/vNx1t+KzeXMQTPuProsW+7Mf+s0NByTIglF4JJK+FidsEzxN/M1pFHaUByaFIT12Qy3CxwGAj1//+t9WSrVVxDZtgmMT+OZXASuyRAcXGZqi3SH/e4JeQeUi1Is1f7+obivWsC+yEd/y4FeNbiFtj3BPpVjBoCfyOhzZvlkaUi10B5V0II5KDRAucQ9NT3kKynzm6YcAjZ9qQ0b5yWZ0bKiwqmSjuyrIIGHo16jo5sIQCAdiT5GztsOYsO6H/HRFG0qEoY99OY/38XTlKJnOSWk5N4TwO39/TuEG80uQEtN+gXrd9fIEnvV2isybPhCNWcDOmZiUyy9ynmK843dGPtWuaEl+g==
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)(36860700016)(82310400026)(56012099003)(18002099003);DIR:OUT;SFP:1101;
X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1
X-MS-Exchange-AntiSpam-MessageData-0:
	qMsD1ythU67BehKK01UeIj1MVFRpEQ8Tim+1YrRL9Ndp8w7OGjNAfifTOTHE58TtvqmjW55jBXtGZzT56dR/57kpAqBV82+fRsksIZhS/cY46sPVBFKTcjt6lmewE/pySiYW+uGdWwvZdQq9iBkmasbSUQwY8jEhDV+ZloLO2MWFD/iSibBmBmqdOX2pLoWC5tefxqWSxkzEhJIvM62rAtmU3wFWzOTlZkTIefXGBPCTkF4KkgNwaKXJiaCqRnzo8CRNMdHkA3Arfw+Met/cns8dQQ/z0tY1MK6KZ6wLdMQjUTtGk0bj7e/GaGPz0Ynx1n8986eNcVPhg56h9DYRVT5CcZ/18YZzlIcL3FmTMbECVuXMZYrvAw9KbJfPwWC5l6yo3ifOGaa/4//e2spBcEMINy7z/6we249LSrbjOkAwn5Ihi3xMN5q1cOyMStZi
X-OriginatorOrg: amd.com
X-MS-Exchange-CrossTenant-OriginalArrivalTime: 09 Apr 2026 11:39:38.5525
 (UTC)
X-MS-Exchange-CrossTenant-Network-Message-Id: 04574b9f-5b69-49d4-b89d-08de962caeb2
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:
	MW1PEPF00016160.namprd21.prod.outlook.com
X-MS-Exchange-CrossTenant-AuthAs: Anonymous
X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem
X-MS-Exchange-Transport-CrossTenantHeadersStamped: MN2PR12MB4470
X-purgate-ID: tlsNG-33051d/1775734783-C8B33C9A-794356EC/0/0
X-purgate-type: clean
X-purgate-size: 615

Adding unrelated fix as the third patch that I found while preparing 1/3
for ease of merging.

Michal Orzel (3):
  xen/arm: Fix off-by-one in iomem_deny_access() calls
  xen/common: llc-coloring: Fix off-by-one in parse_color_config()
  xen/arm: gic-v3: Use vsize instead of csize for virtual CPU interface

 xen/arch/arm/acpi/domain_build.c |  2 +-
 xen/arch/arm/gic-v2.c            |  8 ++++----
 xen/arch/arm/gic-v3-its.c        |  2 +-
 xen/arch/arm/gic-v3.c            | 10 +++++-----
 xen/common/llc-coloring.c        |  2 +-
 5 files changed, 12 insertions(+), 12 deletions(-)

-- 
2.43.0



From xen-devel-bounces@lists.xenproject.org Thu Apr 09 11:39:48 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 09 Apr 2026 11:39:48 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1277086.1562360 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wAnjg-0008Ax-4h; Thu, 09 Apr 2026 11:39:48 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1277086.1562360; Thu, 09 Apr 2026 11:39: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 1wAnjg-0008Am-20; Thu, 09 Apr 2026 11:39:48 +0000
Received: by outflank-mailman (input) for mailman id 1277086;
 Thu, 09 Apr 2026 11:39:47 +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 1wAnjf-00084F-CU
 for xen-devel@lists.xenproject.org; Thu, 09 Apr 2026 11:39:47 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wAnje-00C2vv-Ow
 for xen-devel@lists.xenproject.org; Thu, 09 Apr 2026 13:39:46 +0200
Received: from [10.42.69.6] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <Michal.Orzel@amd.com>)
 id 69d78ff8-2eae-0a2a0a5409dd-0a2a4506c630-8
 for <xen-devel@lists.xenproject.org>; Thu, 09 Apr 2026 13:39:46 +0200
Received: from [52.101.201.2]
 (helo=PH7PR06CU001.outbound.protection.outlook.com)
 by tlsNG-16d1c6.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.0)
 (envelope-from <Michal.Orzel@amd.com>)
 id 69d79000-0df0-0a2a45060019-3465c9025642-3
 for <xen-devel@lists.xenproject.org>; Thu, 09 Apr 2026 13:39:46 +0200
Received: from PH5P220CA0012.NAMP220.PROD.OUTLOOK.COM (2603:10b6:510:34a::9)
 by DM4PR12MB8473.namprd12.prod.outlook.com (2603:10b6:8:183::14) with
 Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9769.20; Thu, 9 Apr
 2026 11:39:40 +0000
Received: from MW1PEPF00016160.namprd21.prod.outlook.com
 (2603:10b6:510:34a:cafe::b7) by PH5P220CA0012.outlook.office365.com
 (2603:10b6:510:34a::9) with Microsoft SMTP Server (version=TLS1_3,
 cipher=TLS_AES_256_GCM_SHA384) id 15.20.9769.40 via Frontend Transport; Thu,
 9 Apr 2026 11:40:04 +0000
Received: from satlexmb08.amd.com (165.204.84.17) by
 MW1PEPF00016160.mail.protection.outlook.com (10.167.249.91) with Microsoft
 SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id
 15.20.9818.0 via Frontend Transport; Thu, 9 Apr 2026 11:39:40 +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.17; Thu, 9 Apr
 2026 06:39:39 -0500
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.17; Thu, 9 Apr
 2026 06:39:39 -0500
Received: from XIR-MICHALO-L1.xilinx.com (10.180.168.240) by
 satlexmb08.amd.com (10.181.42.217) with Microsoft SMTP Server id 15.2.2562.17
 via Frontend Transport; Thu, 9 Apr 2026 06:39:38 -0500
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@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=CG3l8jFdMDSrbe2ddx2a/K0lMymDBWFlZLyO1gU3w8ylq3OwOHmDYYtccLRjHANWUflntWqq6e1bhVs3NjrmPKMk8B1Zs0QT4Wuq2NjzgVwV4/9L3m/A/T/v5sFV4s2gPEf1e1MQN3Ldbuka0TbUbaZDqRCuWat2Ct/sS4ymr5CCVz8o06pkS5t2rJfUTa9+2hM4fv6TJYTkU7RF0lekfp6gT/w9Q+VQLJJaIdUN94tO+b1U6JsjvoAZnm7z7VrTLwPmBwI96r1tVHnErtO8/J+usA1+H/TdzIVOtAbTnggSv8EQt2PSMW2v1Ywmr0adxUraxeuWmTEQdspune1m8w==
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com;
 s=arcselector10001;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1;
 bh=I41Wz6kgb/0DOUu+lYlBPOYvv2CAkwrbJsEJj/f2BGE=;
 b=C/1GXh1V1mffLbofrobU5yIpvzKNXpxbHNteAwbjF8gcsQcLaLzZ58OUjDYSw1YvGtgFgTLnE7nw9YcRvgL7r0Pqr1/VvOBpEgn0mpboYLuwLGITetA5XgpGp4HLumMroWSFJWS6IGwr0ceGBAjVX1Qvl9TdiGICyTlxa4YMJqFTQ3+CzbWkJV3kD+IJLkxZydmFZgEnQj+OeXIGrILEg/6c098ZB+ijtlpeCBYAvBe2nxrCwdw6KtesVoMs/3M1I2naPLJHgNf6xXtjw6FzSt7zninJn5pLoO3ge9uDtUCv97EMsUT8ZJRBfWlBhSRGGiT7uQSbTe/qdypJIa6Vsg==
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=I41Wz6kgb/0DOUu+lYlBPOYvv2CAkwrbJsEJj/f2BGE=;
 b=4lCLIqE8abZaxsWbw+cxpFIPcWVXYIIYUDfWMSNX/g4XnzgvtxoasX818g4/tyQviDovS9qwEnc/aZWmxwuQxT2isFalZNAqTP9he/RLMXA1SbJU6O21hBunf/eS7ZG+V+yDxWFhFcZ5AxueIqFrQd/xGmavoqA9dUPoS7ucd0k=
X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 165.204.84.17)
 smtp.mailfrom=amd.com; dkim=none (message not signed)
 header.d=none;dmarc=pass action=none header.from=amd.com;
Received-SPF: Pass (protection.outlook.com: domain of amd.com designates
 165.204.84.17 as permitted sender) receiver=protection.outlook.com;
 client-ip=165.204.84.17; helo=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 1/3] xen/arm: Fix off-by-one in iomem_deny_access() calls
Date: Thu, 9 Apr 2026 13:39:32 +0200
Message-ID: <20260409113934.197619-2-michal.orzel@amd.com>
X-Mailer: git-send-email 2.43.0
In-Reply-To: <20260409113934.197619-1-michal.orzel@amd.com>
References: <20260409113934.197619-1-michal.orzel@amd.com>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit
Content-Type: text/plain
X-EOPAttributedMessage: 0
X-MS-PublicTrafficType: Email
X-MS-TrafficTypeDiagnostic: MW1PEPF00016160:EE_|DM4PR12MB8473:EE_
X-MS-Office365-Filtering-Correlation-Id: c3ac2837-4cd0-4f39-a074-08de962cafc3
X-MS-Exchange-SenderADCheck: 1
X-MS-Exchange-AntiSpam-Relay: 0
X-Microsoft-Antispam:
	BCL:0;ARA:13230040|376014|36860700016|1800799024|82310400026|22082099003|56012099003|18002099003;
X-Microsoft-Antispam-Message-Info:
	ySKnjYqy5s/N9Fd8svTAU7dt/kU8T9u4gMshi0HMmUsZ+wal2WwPeA4OCWCPOe18KkNjyX+qNGLU3zAQs+nB5bxcemX1fnucifwprzyBf/gS2wSbvxjOZHUHJDjG4u+x330qzQAyTjvIgCkj8wpmCzrKOkn8s+uV2dd96BBgJkMlLjmVJD59U2Fs7rXGQvrsTMqIthHRjQjGqZWb8o8DJ56edPDFrMwtmJYmxiiVujE4S2eulBo2ibfkfh84Alcej9xasvXw0kIA8Y8aH5sC5XAnhazvbjtK3Ulsn4v0Wxnidn7Eta9iow7LYqZdm77bJO4mbRLC1t6xsuAx8HBBbRjO68y5w9VCLPdQZlggHgQiciEcUirqBW9TVxUygQ0jWRmJWz5tFOTMtwBQEpowGpyiLbfZj6sJFMxJKkUbd2dxDZz/B65d2EkNXvKU13rM1eQiMsHYjK1JOjwIUrjDoocrvHbmdcbwPHJh6/EzlQv3W/tKoLUnOeEr58ObRy7/++HJhnTtkTEn0wirxqMJaQMm27Us/S+3YdXTgKvq3Ze+PU4+B6Gl8HXeM8a+6uFxEFFdoBy5c/hVmIEDxqj2ftnQsq+mCawTAGNndQ7RN9yjexx1dQiAGKz6Oe+vh1YHnNyM8LfD/7BizfP+VciiequQIrr6zDzKk3Rd2XoYmh51xOIupZAaXo3XGQ6G9RY7qxusvNXpygWMTMifNhwBeN4p7pI7cPojS6SZ5fUbK65AVAwqFuTos3Ccud0B8dgN32gtSn8ACMqycBmpO2Huug==
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)(36860700016)(1800799024)(82310400026)(22082099003)(56012099003)(18002099003);DIR:OUT;SFP:1101;
X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1
X-MS-Exchange-AntiSpam-MessageData-0:
	B7fzeapXP7uNPQipQC2yF11wiOXtjpWmni6t2Rb1E3ivrfhSnck/6fgA9jTGRXLNX1yeRHpny1w9lPn748nNazFE7sZor7fksay6UGG/rnJxKwiy1QZH5dGV5+wATvVXWmA4Iwwg8cv6TaNeqUZM4x6g2sNd7/ZF3y30hyXPRTS4JJw9MRgWg94aE091DdZ0+oGW226QSyoCxtSC2Z7zA1YltUZOo9BbYvOu7SwnBwBvXSEBDov7dJ/inBqj22HoNFNXO262SYLV47KyeqWMSF3GspTy0VOTBHTfAZi01jZ3AleLGddaAcMbJsFbUPoRtsJVJ7pq/e9hpnLvfArsvRVcayxlTMCaDn+wNfk+lezV6tUYyBF4AbYWBruML+jqI+eL5Tr0947WPqu2SPIeHDC3mP5a5DkfM7ktwQ/mjUNn+m3uxRnwYoTbtuwX43bQ
X-OriginatorOrg: amd.com
X-MS-Exchange-CrossTenant-OriginalArrivalTime: 09 Apr 2026 11:39:40.3429
 (UTC)
X-MS-Exchange-CrossTenant-Network-Message-Id: c3ac2837-4cd0-4f39-a074-08de962cafc3
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:
	MW1PEPF00016160.namprd21.prod.outlook.com
X-MS-Exchange-CrossTenant-AuthAs: Anonymous
X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem
X-MS-Exchange-Transport-CrossTenantHeadersStamped: DM4PR12MB8473
X-purgate-ID: tlsNG-16d1c6/1775734786-5CD243D8-BBB4CCF6/0/0
X-purgate-type: clean
X-purgate-size: 4470

iomem_deny_access() wraps rangeset_remove_range() which takes inclusive
endpoints.  All call sites in the GIC and ACPI code pass 'mfn + nr' (or
'mfn + 1' for single-page regions) as the end parameter, which causes
one extra page beyond each region to be denied.

For single-page regions, use 'mfn' as the end (denying exactly one page).
For all multi-page regions, use 'mfn + nr - 1'.

This matches the correct pattern used elsewhere, e.g. in device.c.

Fixes: 8300b3377e ("arm/gic: Add a new callback to deny Dom0 access to GIC regions")
Fixes: 66158be465 ("ARM: ITS: Deny hardware domain access to ITS")
Fixes: 97e9875646 ("arm/acpi: Permit MMIO access of Xen unused devices for Dom0")
Signed-off-by: Michal Orzel <michal.orzel@amd.com>
---
 xen/arch/arm/acpi/domain_build.c | 2 +-
 xen/arch/arm/gic-v2.c            | 8 ++++----
 xen/arch/arm/gic-v3-its.c        | 2 +-
 xen/arch/arm/gic-v3.c            | 8 ++++----
 4 files changed, 10 insertions(+), 10 deletions(-)

diff --git a/xen/arch/arm/acpi/domain_build.c b/xen/arch/arm/acpi/domain_build.c
index 5a117001ef11..249d899c3337 100644
--- a/xen/arch/arm/acpi/domain_build.c
+++ b/xen/arch/arm/acpi/domain_build.c
@@ -48,7 +48,7 @@ static int __init acpi_iomem_deny_access(struct domain *d)
     {
         mfn = spcr->serial_port.address >> PAGE_SHIFT;
         /* Deny MMIO access for UART */
-        rc = iomem_deny_access(d, mfn, mfn + 1);
+        rc = iomem_deny_access(d, mfn, mfn);
         if ( rc )
             return rc;
     }
diff --git a/xen/arch/arm/gic-v2.c b/xen/arch/arm/gic-v2.c
index b23e72a3d05d..014f9559673b 100644
--- a/xen/arch/arm/gic-v2.c
+++ b/xen/arch/arm/gic-v2.c
@@ -1079,23 +1079,23 @@ static int gicv2_iomem_deny_access(struct domain *d)
     unsigned long mfn, nr;
 
     mfn = dbase >> PAGE_SHIFT;
-    rc = iomem_deny_access(d, mfn, mfn + 1);
+    rc = iomem_deny_access(d, mfn, mfn);
     if ( rc )
         return rc;
 
     mfn = hbase >> PAGE_SHIFT;
-    rc = iomem_deny_access(d, mfn, mfn + 1);
+    rc = iomem_deny_access(d, mfn, mfn);
     if ( rc )
         return rc;
 
     mfn = cbase >> PAGE_SHIFT;
     nr = DIV_ROUND_UP(csize, PAGE_SIZE);
-    rc = iomem_deny_access(d, mfn, mfn + nr);
+    rc = iomem_deny_access(d, mfn, mfn + nr - 1);
     if ( rc )
         return rc;
 
     mfn = vbase >> PAGE_SHIFT;
-    return iomem_deny_access(d, mfn, mfn + nr);
+    return iomem_deny_access(d, mfn, mfn + nr - 1);
 }
 
 #ifdef CONFIG_ACPI
diff --git a/xen/arch/arm/gic-v3-its.c b/xen/arch/arm/gic-v3-its.c
index 9ba068c46fcb..e38aa8711744 100644
--- a/xen/arch/arm/gic-v3-its.c
+++ b/xen/arch/arm/gic-v3-its.c
@@ -1009,7 +1009,7 @@ int gicv3_its_deny_access(struct domain *d)
     {
         mfn = paddr_to_pfn(its_data->addr);
         nr = PFN_UP(its_data->size);
-        rc = iomem_deny_access(d, mfn, mfn + nr);
+        rc = iomem_deny_access(d, mfn, mfn + nr - 1);
         if ( rc )
         {
             printk("iomem_deny_access failed for %lx:%lx \r\n", mfn, nr);
diff --git a/xen/arch/arm/gic-v3.c b/xen/arch/arm/gic-v3.c
index bc07f97c16ab..b3e104ea4ad0 100644
--- a/xen/arch/arm/gic-v3.c
+++ b/xen/arch/arm/gic-v3.c
@@ -1602,7 +1602,7 @@ static int gicv3_iomem_deny_access(struct domain *d)
 
     mfn = dbase >> PAGE_SHIFT;
     nr = PFN_UP(SZ_64K);
-    rc = iomem_deny_access(d, mfn, mfn + nr);
+    rc = iomem_deny_access(d, mfn, mfn + nr - 1);
     if ( rc )
         return rc;
 
@@ -1614,7 +1614,7 @@ static int gicv3_iomem_deny_access(struct domain *d)
     {
         mfn = gicv3.rdist_regions[i].base >> PAGE_SHIFT;
         nr = PFN_UP(gicv3.rdist_regions[i].size);
-        rc = iomem_deny_access(d, mfn, mfn + nr);
+        rc = iomem_deny_access(d, mfn, mfn + nr - 1);
         if ( rc )
             return rc;
     }
@@ -1623,7 +1623,7 @@ static int gicv3_iomem_deny_access(struct domain *d)
     {
         mfn = cbase >> PAGE_SHIFT;
         nr = PFN_UP(csize);
-        rc = iomem_deny_access(d, mfn, mfn + nr);
+        rc = iomem_deny_access(d, mfn, mfn + nr - 1);
         if ( rc )
             return rc;
     }
@@ -1632,7 +1632,7 @@ static int gicv3_iomem_deny_access(struct domain *d)
     {
         mfn = vbase >> PAGE_SHIFT;
         nr = PFN_UP(csize);
-        return iomem_deny_access(d, mfn, mfn + nr);
+        return iomem_deny_access(d, mfn, mfn + nr - 1);
     }
 
     return 0;
-- 
2.43.0



From xen-devel-bounces@lists.xenproject.org Thu Apr 09 11:39:49 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 09 Apr 2026 11:39:49 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1277087.1562370 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wAnjh-0008P8-E3; Thu, 09 Apr 2026 11:39:49 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1277087.1562370; Thu, 09 Apr 2026 11: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 1wAnjh-0008Oz-9R; Thu, 09 Apr 2026 11:39:49 +0000
Received: by outflank-mailman (input) for mailman id 1277087;
 Thu, 09 Apr 2026 11:39:48 +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 1wAnjg-0008Aj-08
 for xen-devel@lists.xenproject.org; Thu, 09 Apr 2026 11:39:48 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wAnjf-00C2vv-CO
 for xen-devel@lists.xenproject.org; Thu, 09 Apr 2026 13:39:47 +0200
Received: from [10.42.69.2] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <Michal.Orzel@amd.com>)
 id 69d79003-2eae-0a2a0a5409dd-0a2a450288cc-0
 for <xen-devel@lists.xenproject.org>; Thu, 09 Apr 2026 13:39:47 +0200
Received: from [52.101.193.6]
 (helo=CH1PR05CU001.outbound.protection.outlook.com)
 by tlsNG-720697.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.0)
 (envelope-from <Michal.Orzel@amd.com>)
 id 69d79001-42fa-0a2a45020019-3465c1062599-3
 for <xen-devel@lists.xenproject.org>; Thu, 09 Apr 2026 13:39:46 +0200
Received: from SJ0PR03CA0228.namprd03.prod.outlook.com (2603:10b6:a03:39f::23)
 by DM4PR12MB5772.namprd12.prod.outlook.com (2603:10b6:8:63::10) with
 Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9769.17; Thu, 9 Apr
 2026 11:39:42 +0000
Received: from SJ5PEPF00000205.namprd05.prod.outlook.com
 (2603:10b6:a03:39f:cafe::8a) by SJ0PR03CA0228.outlook.office365.com
 (2603:10b6:a03:39f::23) with Microsoft SMTP Server (version=TLS1_3,
 cipher=TLS_AES_256_GCM_SHA384) id 15.20.9769.40 via Frontend Transport; Thu,
 9 Apr 2026 11:39:42 +0000
Received: from satlexmb07.amd.com (165.204.84.17) by
 SJ5PEPF00000205.mail.protection.outlook.com (10.167.244.38) with Microsoft
 SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id
 15.20.9769.17 via Frontend Transport; Thu, 9 Apr 2026 11:39:42 +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.17; Thu, 9 Apr
 2026 06:39:41 -0500
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.17; Thu, 9 Apr
 2026 06:39:41 -0500
Received: from XIR-MICHALO-L1.xilinx.com (10.180.168.240) by
 satlexmb08.amd.com (10.181.42.217) with Microsoft SMTP Server id 15.2.2562.17
 via Frontend Transport; Thu, 9 Apr 2026 06:39:39 -0500
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@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=rO8Zp3Yx6LD7KLoE0hVzsL4ZuqKwN8wn7o+etaU3zFlqsk45Y0XiNouG0SytFqqmmHp01/u46HgnabwcU+sxoxKrDTS3a/LmuQQCfFSP/1m5eyFTrUwWuIS07ZBzegtG/BMEyR7sYSBjmQVULSDevj/w0JX16u6TAtOPW6+K4Arg0H7/GDRa/DygxhaAuJEcybx8xu0ymBlB2yGyZYGy8HGLUd9hgrHISwdtoXII643KFndn98E84J/Ga5DT2rMZCqnHsalivlFUs0QjNGh6/FQARghqLYirx5INEb08eYNSDFXEqaKRApc/UBeZsndqqrS/OXtADJuL/X2PtsPnrQ==
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com;
 s=arcselector10001;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1;
 bh=XAopumW9tXcTDkz+Pn6jm6L9ZBc2XUfcfTkK3WsQW18=;
 b=WWtBAXE1fHUSnTo7viFA0kSHiaU4HKL4g7EiYEuAfsDKm0AeAxwk+Qo4B7YZnZNT/0GL6QBsMCk6AUyak8NbV3kEQh4T3ssd/X8KmDtR0vZl6ql8MgVgpYGT/+50sm7mfA4shp3vJbJzEE6iNeli8uasl+2JpxB7u85+AJigtTzhnnP0/FD02p7+gMYsAZpWlcEZAzWtma5eSWpzNugEDqbllZRlXd/M828ON3muRQp2t/uxGPZGxz/VWUAGO53EJTHK7pFSVh+elrTqdjoRO7jRJxf4oij5PB2xEWvDIPEz+8nRxZsX/1ZI8aKCNcGbFaILBsNF30DD3xLv+8qMxg==
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=XAopumW9tXcTDkz+Pn6jm6L9ZBc2XUfcfTkK3WsQW18=;
 b=3xZSEggRpmPx5oewCDuTTNlnGZY0BAh4oW7IoV1BqIPKL5pQOM0VnVx5C5Oc+CkChCWqziW57jLBbZunug8wBPwFCQBBgvcxNbxsnk01dt6mNlIDwQ04SmCwm+I0F54wvTgDcywYu2CUqyVAJ/YFtEnm05tzOj663+cwlvzj/GI=
X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 165.204.84.17)
 smtp.mailfrom=amd.com; dkim=none (message not signed)
 header.d=none;dmarc=pass action=none header.from=amd.com;
Received-SPF: Pass (protection.outlook.com: domain of amd.com designates
 165.204.84.17 as permitted sender) receiver=protection.outlook.com;
 client-ip=165.204.84.17; helo=satlexmb07.amd.com; pr=C
From: Michal Orzel <michal.orzel@amd.com>
To: <xen-devel@lists.xenproject.org>
CC: Michal Orzel <michal.orzel@amd.com>, Andrew Cooper
	<andrew.cooper3@citrix.com>, Anthony PERARD <anthony.perard@vates.tech>, "Jan
 Beulich" <jbeulich@suse.com>, Julien Grall <julien@xen.org>,
	=?UTF-8?q?Roger=20Pau=20Monn=C3=A9?= <roger.pau@citrix.com>, "Stefano
 Stabellini" <sstabellini@kernel.org>
Subject: [PATCH 2/3] xen/common: llc-coloring: Fix off-by-one in parse_color_config()
Date: Thu, 9 Apr 2026 13:39:33 +0200
Message-ID: <20260409113934.197619-3-michal.orzel@amd.com>
X-Mailer: git-send-email 2.43.0
In-Reply-To: <20260409113934.197619-1-michal.orzel@amd.com>
References: <20260409113934.197619-1-michal.orzel@amd.com>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit
Content-Type: text/plain
X-EOPAttributedMessage: 0
X-MS-PublicTrafficType: Email
X-MS-TrafficTypeDiagnostic: SJ5PEPF00000205:EE_|DM4PR12MB5772:EE_
X-MS-Office365-Filtering-Correlation-Id: 42b22715-b2c0-485f-dfa5-08de962cb0d6
X-MS-Exchange-SenderADCheck: 1
X-MS-Exchange-AntiSpam-Relay: 0
X-Microsoft-Antispam:
	BCL:0;ARA:13230040|82310400026|1800799024|376014|36860700016|22082099003|56012099003|18002099003;
X-Microsoft-Antispam-Message-Info:
	apyWwzUUUiRAXj8a8GZoQf584U4AYZEOZ2D6vpAOgQ9e/as075hipKPqTYIIsl/R9lnFNwQnMOOSapkeqMdAl/xnJtL9MdrX+AZXkNVmmEtJCSCzhZdHo56unBOyh5vK886PDnKgwUVG46Kp0JbAbC1y27Atizsv5H29X4dxvQkuPZn/nl/b3J/VwPGkzgcZBW8YzLOWokuFKUe9dCmD3ieW9ivefbKrxieRzMvZYFhWeOGVqQbupGT3M7Lj+gpo0Lrr4NF/Lj9uz2rXYpJjC0fyUardpC/dqx2e7Qg07odlYM691aihjV+IwC+rqNkWJbUO89CltEFU+c5S9zg+TTyB/eMMyMysezNrWlR0pHXahIhS5csidCmpNBkX3cLwbchWWxrB9ZXJmi4bldc+BJLK4yHa7NkQ1TrQNlCkmf1XQZUk/PbJDl0V/Pl4FJ+7dTX3DrfRDBj/aGxusE6c++87zzxKC2sbAFFp35+OwJA3PbOE3JttmIUdH68EuGgnEiouOV9HduL5xRvtw/7VlVyK+3a24C7D+64C/hZZciSKVfoy5RwBwh0o2030jdwoxda2lqZ17Y8kboWgQO+y2rEyvN2wcGou9aN8Ejy3KkDuW3fdsasYulCgvoiG4me1JuMIWtMQC4mlhzHRD4Omrxm4qs/bTOoZNlxWKIDHUwRozgog/pb0k3IaomIEojQbqLpfEf7Ftn4nmjR1KYsVn2z7ZjsVBpcxfkbLH6CVc+Uen/ovhU6+I+43GjhBgKVi5QL6pjVCnURdFJv8bgGSJg==
X-Forefront-Antispam-Report:
	CIP:165.204.84.17;CTRY:US;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:satlexmb07.amd.com;PTR:InfoDomainNonexistent;CAT:NONE;SFS:(13230040)(82310400026)(1800799024)(376014)(36860700016)(22082099003)(56012099003)(18002099003);DIR:OUT;SFP:1101;
X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1
X-MS-Exchange-AntiSpam-MessageData-0:
	u9lstO0b1NBY+1MmFW473LJuwpjMo0vSq1yrEFiBPn84DfjWx65IBLMdoE/98PiggCN390jEIMPbcXxnXYn07zrmg7FHl+InqxfZ8wCiPSFeE/m2Z3Ml5bQOb3+dh7a9ccUGh/lNrFApo9DbqBe0u+6kakLuSznXvVVwNHkGxfJdP/Ojqd3ceFuOe0lkmF8NzKyZf41PaNDwfvrEOo9Aky7taygi3I/cRfDS0EwiDRrtE7Ymy4ihv1sfakVDoEvNz0HEvKf/GFVfR7YymLITv8ONA+DnC58FzX54GNI2VD58cNfNFb9RN7MzhBYUMWFaTHTq4n5YtLrEhS4M2+DwegrB5pK2fFi0N6t9GMbrpQ5ggkQySR2QBt/NvvqIsJ+5p8aNAPMtoxR62EImY9I1wjy6zBtQ3Mn0SXJiMtRQ5tsm/LQPHs9/nWyuWF3v/zcg
X-OriginatorOrg: amd.com
X-MS-Exchange-CrossTenant-OriginalArrivalTime: 09 Apr 2026 11:39:42.1428
 (UTC)
X-MS-Exchange-CrossTenant-Network-Message-Id: 42b22715-b2c0-485f-dfa5-08de962cb0d6
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:
	SJ5PEPF00000205.namprd05.prod.outlook.com
X-MS-Exchange-CrossTenant-AuthAs: Anonymous
X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem
X-MS-Exchange-Transport-CrossTenantHeadersStamped: DM4PR12MB5772
X-purgate-ID: tlsNG-720697/1775734787-46B27CD1-FDD1E078/0/0
X-purgate-type: clean
X-purgate-size: 1193

The check uses >= to compare the total number of colors against
max_num_colors (which is ARRAY_SIZE of the colors array).  This
incorrectly rejects input that would exactly fill the array.

For example, with NR_LLC_COLORS=16, specifying 1 color for Xen and 15
for dom0 would fail.

Change >= to > so that exactly filling the array is permitted.

Fixes: 95ef5ddf8a ("xen/arm: add Dom0 cache coloring support")
Signed-off-by: Michal Orzel <michal.orzel@amd.com>
---
 xen/common/llc-coloring.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/xen/common/llc-coloring.c b/xen/common/llc-coloring.c
index eb7c72b24023..30c1594dac9f 100644
--- a/xen/common/llc-coloring.c
+++ b/xen/common/llc-coloring.c
@@ -78,7 +78,7 @@ static int __init parse_color_config(const char *buf, unsigned int colors[],
 
         if ( end >= NR_LLC_COLORS || start > end ||
              (end - start) >= (UINT_MAX - *num_colors) ||
-             (*num_colors + (end - start + 1)) >= max_num_colors )
+             (*num_colors + (end - start + 1)) > max_num_colors )
             return -EINVAL;
 
         /* Colors are range checked in check_colors() */
-- 
2.43.0



From xen-devel-bounces@lists.xenproject.org Thu Apr 09 11:39:55 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 09 Apr 2026 11:39:55 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1277091.1562378 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wAnjn-0000It-Lo; Thu, 09 Apr 2026 11:39:55 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1277091.1562378; Thu, 09 Apr 2026 11: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 1wAnjn-0000Im-I7; Thu, 09 Apr 2026 11:39:55 +0000
Received: by outflank-mailman (input) for mailman id 1277091;
 Thu, 09 Apr 2026 11:39: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 1wAnjl-0000Ft-KV
 for xen-devel@lists.xenproject.org; Thu, 09 Apr 2026 11:39:53 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wAnjj-0091Qm-El
 for xen-devel@lists.xenproject.org; Thu, 09 Apr 2026 13:39:53 +0200
Received: from [10.42.69.10] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <Michal.Orzel@amd.com>)
 id 69d78ff4-e002-0a2a0a5209dd-0a2a450a96b4-44
 for <xen-devel@lists.xenproject.org>; Thu, 09 Apr 2026 13:39:52 +0200
Received: from [52.101.61.26]
 (helo=DM1PR04CU001.outbound.protection.outlook.com)
 by tlsNG-4011c0.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.0)
 (envelope-from <Michal.Orzel@amd.com>)
 id 69d79007-ee98-0a2a450a0019-34653d1a837b-4
 for <xen-devel@lists.xenproject.org>; Thu, 09 Apr 2026 13:39:52 +0200
Received: from PH5P220CA0006.NAMP220.PROD.OUTLOOK.COM (2603:10b6:510:34a::7)
 by SJ2PR12MB8882.namprd12.prod.outlook.com (2603:10b6:a03:537::17) with
 Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9769.42; Thu, 9 Apr
 2026 11:39:44 +0000
Received: from MW1PEPF00016160.namprd21.prod.outlook.com
 (2603:10b6:510:34a:cafe::aa) by PH5P220CA0006.outlook.office365.com
 (2603:10b6:510:34a::7) with Microsoft SMTP Server (version=TLS1_3,
 cipher=TLS_AES_256_GCM_SHA384) id 15.20.9769.40 via Frontend Transport; Thu,
 9 Apr 2026 11:40:07 +0000
Received: from satlexmb08.amd.com (165.204.84.17) by
 MW1PEPF00016160.mail.protection.outlook.com (10.167.249.91) with Microsoft
 SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id
 15.20.9818.0 via Frontend Transport; Thu, 9 Apr 2026 11:39:44 +0000
Received: from SATLEXMB04.amd.com (10.181.40.145) by satlexmb08.amd.com
 (10.181.42.217) with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.2.2562.17; Thu, 9 Apr
 2026 06:39:43 -0500
Received: from satlexmb08.amd.com (10.181.42.217) by SATLEXMB04.amd.com
 (10.181.40.145) with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2507.39; Thu, 9 Apr
 2026 06:39:42 -0500
Received: from XIR-MICHALO-L1.xilinx.com (10.180.168.240) by
 satlexmb08.amd.com (10.181.42.217) with Microsoft SMTP Server id 15.2.2562.17
 via Frontend Transport; Thu, 9 Apr 2026 06:39:41 -0500
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@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=WZ1LeZMOk93Y3rQa4B4LhPloBl7Dcs4+DHsiVuSiin8RmYghBal60/DpwJb3ISHpDn4rT4g8AIVDLKRLNV56zz5tXmWZDhuKN3Lf5iAA4SNoExvni3LAI1Yrncw8XIdUXbXxLRREnLcSEdqu2WPTqokQtVmW9t1k2mXPZm1u4UJpZ/4aPzy/SXSXqtkyJeuYqG5R6tccvPEJY8bMu0qPchRVib19mWmeMyBqCu6YMfwyROAfv1AUiHetANV/C1GlJU+lYcG+p28owcu8bqPHYLjQrEVzkeLSwsfGNrQgWCM/pY5BKzQUjIpUI9CTVS3LA47wAlCYiXrtWQfrN1oFAw==
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com;
 s=arcselector10001;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1;
 bh=3sbiLpiolSgNF7o8RKtIPkDTBElPtkFOamtiYxQtoEA=;
 b=xi6kFBIViEf9/JAYl/cWJisyvBvgCT4/3pJYSjJsJxAVsy26Hdj/hx9CPFDU53dC9N7LONtkrhaMHTNLONtRA1AXK1Z2gCMKSLSyLkdwoW80gXVLs4JSKe1kzyl1SOjGFubN1cTuh0BEbNtYJnJIpoYpPcJjfgPyLWzXbRjjP3UFASVndqClez8olt02+9QTFHOfKFfmd5dsCLlND2QukJ6z5xNZGMTRsEjMVVlab5QwpygGTLFlFIqj3kmfq+bzajPO23tXb16pmkrV3zmWOtAOdTQvrhXHQOQSnVP+jSXNptR4Bebo3N3Z4iSS3gLS53SRZErdNz+4XM5qBbrUjw==
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=3sbiLpiolSgNF7o8RKtIPkDTBElPtkFOamtiYxQtoEA=;
 b=KZ3BHmBREJD/AzdyFs+ik3oq+nDYQDvCpMCTmJRIOgaMoZHryCteSt8cWJVUPyET61ZsRH956dgKDY54lrwTnN+pFKZXtP5/HqToXY0a1AGyOtNHtyMCa9XZVZRxnNEG4cPF/etXqvZrvsysHs8ClwZaK5hLifK9wBuHGWQqIKo=
X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 165.204.84.17)
 smtp.mailfrom=amd.com; dkim=none (message not signed)
 header.d=none;dmarc=pass action=none header.from=amd.com;
Received-SPF: Pass (protection.outlook.com: domain of amd.com designates
 165.204.84.17 as permitted sender) receiver=protection.outlook.com;
 client-ip=165.204.84.17; helo=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 3/3] xen/arm: gic-v3: Use vsize instead of csize for virtual CPU interface
Date: Thu, 9 Apr 2026 13:39:34 +0200
Message-ID: <20260409113934.197619-4-michal.orzel@amd.com>
X-Mailer: git-send-email 2.43.0
In-Reply-To: <20260409113934.197619-1-michal.orzel@amd.com>
References: <20260409113934.197619-1-michal.orzel@amd.com>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit
Content-Type: text/plain
Received-SPF: None (SATLEXMB04.amd.com: michal.orzel@amd.com does not
 designate permitted sender hosts)
X-EOPAttributedMessage: 0
X-MS-PublicTrafficType: Email
X-MS-TrafficTypeDiagnostic: MW1PEPF00016160:EE_|SJ2PR12MB8882:EE_
X-MS-Office365-Filtering-Correlation-Id: ad4b818d-e5c2-4db3-f187-08de962cb212
X-MS-Exchange-SenderADCheck: 1
X-MS-Exchange-AntiSpam-Relay: 0
X-Microsoft-Antispam:
	BCL:0;ARA:13230040|36860700016|82310400026|376014|1800799024|18002099003|22082099003|56012099003;
X-Microsoft-Antispam-Message-Info:
	avtAXAK4ccOJ+7RfRIIZEgixOY20gUovA/CgrbzsRsQu6gDJfupLfSw+eH5xIBdFW25e9yFZyiJ8bPfNdasVd6ZzNZiRNYPPQwXzTSdajXcdSO70Gp/z5aWF8HMUuUjw4B6HV/LnOjASva3zoJg/M5fOG2uSZv2KKU5cNhtxcl/Z/PcKYNQVEWFST5ayCG/i+M/7Y1tPwGDJBxAdwgpYk0qn+B0wQaS/5XkZC3tOgzVMKikp2Dp67Uc3RHWJm8Lb5tKM8MQJWc5gfrPQznd1W20ypuRwkAe8ZFxr++WdaG9NINdLyhx4kbRjQCB582uPWypsD1gX+R325fiJZWBssTfnPkLa62PklcQExtCceTgNUIodXqc/SWFDmcaVPbbDxj6YrA16t+knaBuw37qZnX/7+zyu9/6rYtBzxvbMxTYhtu0Qkc0s8uFKV9y4s7VvK05bTI0fe9T2ON4DPfts+6I59LT18bGzhpB7upLDNzrHFRd/w8AzHbcf9uDy994MDM3WXXFfXhnJV8rKPniNvB4d4f34QzB6S+YRneLpmzo9Ye00O2uMRrKstwe8SEr4mPDNda48V8ngLxUY1oxLV4+FUtkmddK/o/4kPfXlJZ0c6YQ9vmFtWiwIDXH87p00KARaFuUKZNePrzMv1yhgQ0ixDt6oGwEXeBrf1olg0MUDZdLGF8bP8hY44qpgFVXZhqYu2KkbcbE9mwkH6hkcVB/QpuRK6EKXYY9DeZXW0BZWygxLMB8SWwY6F/oHC/8VBMlXqOw4jUaPO4PY/XZFVw==
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)(1800799024)(18002099003)(22082099003)(56012099003);DIR:OUT;SFP:1101;
X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1
X-MS-Exchange-AntiSpam-MessageData-0:
	JEkyIN2Ik+czf9icSAkIKZ+lWHg6fbBYt1t2Ftf+ZfHbl2HKuGDcLmQJCRBDWppSx+ekhp7pf4JkXzQmNh2kcZD1g09LzKkUj+lIXsGTGfhf9JiyOO6cfE7Hhs4VJF8QUilBvloqPorWiVQ9l9vsryObfSqY33IKphFdDOTp2hwPEASmrmqZ0v+RPEhzIYwIUp5CGzuaWBZU2XwgSiTPn1MTSN+SMl3b4W1TFW+jsgf3MG/A6l/qk7T+69IO8ccCTJ2w5x3wp0XP5kW6rh/NDxV/IB683CNL34ECCoVEfnUvHKQhECbQ0oZEWC/56xVQEiyfQGvHHZ8mUqTUymVd9Vzp4nJvJwiFF/eqriftMoiPUi/fjo93W8/UU/7jSx8vl06qqupnbln6gDXSRObG006pDIj8rCA6vy9XaRmCQPLaoIHYwkJsV6XH4xKNpG4B
X-OriginatorOrg: amd.com
X-MS-Exchange-CrossTenant-OriginalArrivalTime: 09 Apr 2026 11:39:44.2175
 (UTC)
X-MS-Exchange-CrossTenant-Network-Message-Id: ad4b818d-e5c2-4db3-f187-08de962cb212
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:
	MW1PEPF00016160.namprd21.prod.outlook.com
X-MS-Exchange-CrossTenant-AuthAs: Anonymous
X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem
X-MS-Exchange-Transport-CrossTenantHeadersStamped: SJ2PR12MB8882
X-purgate-ID: tlsNG-4011c0/1775734792-C50180B1-4F21F8EC/0/0
X-purgate-type: clean
X-purgate-size: 907

gicv3_iomem_deny_access() incorrectly uses csize (physical CPU
interface size) instead of vsize (virtual CPU interface size) when
calculating the number of pages to deny for the virtual CPU interface
region at vbase.

Fixes: 8300b3377e ("arm/gic: Add a new callback to deny Dom0 access to GIC regions")
Signed-off-by: Michal Orzel <michal.orzel@amd.com>
---
 xen/arch/arm/gic-v3.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/xen/arch/arm/gic-v3.c b/xen/arch/arm/gic-v3.c
index b3e104ea4ad0..5641ee870f23 100644
--- a/xen/arch/arm/gic-v3.c
+++ b/xen/arch/arm/gic-v3.c
@@ -1631,7 +1631,7 @@ static int gicv3_iomem_deny_access(struct domain *d)
     if ( vbase != INVALID_PADDR )
     {
         mfn = vbase >> PAGE_SHIFT;
-        nr = PFN_UP(csize);
+        nr = PFN_UP(vsize);
         return iomem_deny_access(d, mfn, mfn + nr - 1);
     }
 
-- 
2.43.0



From xen-devel-bounces@lists.xenproject.org Thu Apr 09 11:41:58 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 09 Apr 2026 11:41:58 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1277120.1562386 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wAnll-0002VC-7H; Thu, 09 Apr 2026 11:41:57 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1277120.1562386; Thu, 09 Apr 2026 11:41: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 1wAnll-0002V5-4a; Thu, 09 Apr 2026 11:41:57 +0000
Received: by outflank-mailman (input) for mailman id 1277120;
 Thu, 09 Apr 2026 11:41:56 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <andrew.cooper3@citrix.com>) id 1wAnlk-0002Uz-BA
 for xen-devel@lists.xenproject.org; Thu, 09 Apr 2026 11:41:56 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wAnlj-009MBk-NJ
 for xen-devel@lists.xenproject.org; Thu, 09 Apr 2026 13:41:55 +0200
Received: from [10.42.69.11] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <andrew.cooper3@citrix.com>)
 id 69d79081-5cb7-0a2a0a5109dd-0a2a450bedb8-6
 for <xen-devel@lists.xenproject.org>; Thu, 09 Apr 2026 13:41:55 +0200
Received: from [209.85.128.46] (helo=mail-wm1-f46.google.com)
 by tlsNG-42698a.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.0)
 (envelope-from <andrew.cooper3@citrix.com>)
 id 69d79083-bca8-0a2a450b0019-d155802ee0f7-3
 for <xen-devel@lists.xenproject.org>; Thu, 09 Apr 2026 13:41:55 +0200
Received: by mail-wm1-f46.google.com with SMTP id
 5b1f17b1804b1-488b0e1b870so11428695e9.2
 for <xen-devel@lists.xenproject.org>; Thu, 09 Apr 2026 04:41:55 -0700 (PDT)
Received: from localhost.localdomain (host-78-146-242-105.as13285.net.
 [78.146.242.105]) by smtp.gmail.com with ESMTPSA id
 5b1f17b1804b1-488cd1b2799sm71467005e9.6.2026.04.09.04.41.52
 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
 Thu, 09 Apr 2026 04:41:53 -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=google header.d=citrix.com header.i="@citrix.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=citrix.com; s=google; t=1775734915; x=1776339715; 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;
        bh=9KaDm/yMBIrw6CzspjElk4N8efh36OMRuJoJnnqxtrc=;
        b=YEGNt9fgH4RdkQ8uji4Uebdtd+IS5hS4yLGTRNeuQXcqBMoZPosom6lCiXRO5+mniM
         0IMCLmW3kO/whA5FR3rirIJCN9Utu1Ycze2XeaFvlPf1uVXBlXY0OgmS/lDLJ9/BxzsH
         pA2eNaSOyjdapx6CfPRZx0hxOVfIEdIHmB06s=
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20251104; t=1775734915; x=1776339715;
        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;
        bh=9KaDm/yMBIrw6CzspjElk4N8efh36OMRuJoJnnqxtrc=;
        b=nImdkvNJq1nIGHOMQn4v5agMcnTw7URgGjzCeKVJyppzJmL5ep6ivOZVFpDD4l6WrD
         bxAr52qqzFBqtsr3UhjWNVTBG0pNcDJZWY6v61ODa2rQXoL+gvdw9LPPhlWtLL+1LXqV
         jmJ3pnFoFcgVEl+sB3lPGeLQnhj8rhFR9BEhWzRDCe5Ll7TdNOfokj7NIqHtjmC7hkfc
         fuCaac9RnLjPdSdHLLAMNV9eHjBelTmBl4ILmyRjCJ1h0mfU6Gki3xidgw7NltYNfICN
         CoIzXe98PSiJPNUx+b0k5EVWrQj/0C/TQv1tq052N3rKyDKI+plVVzocUGrQDsi4+eAi
         MlsA==
X-Gm-Message-State: AOJu0Yz/EQbsSW0VpxGOJeUl1bwQPhAFfOJTYWWOMHwNfSFJJkDMl2CF
	T3OVF7GUxQG3yPHILSiSTDRUh3aIvrhEHtQRcTBP1bkQiGpLjnnH0rYdmjAR9j0FVobVDWvAaxG
	//nV1
X-Gm-Gg: AeBDiesW+i9/a3zFdwrC/apnFLkx+K856aVjf7ETH2NWkg7TEelR3C7NCE79Kzrbfaa
	RQNvlgSvbNNFtM9ZK5Xh4vzTRWjLG9+3mwN3+4AaFOEHR5f1cPY1teTZaJfnVmdmZ/mjCeJ92tX
	jiSr3oQTDs35wSJhetXmDHZxE/nemjiQ0NlCXY4fGYlv9Nxy4Mj9+H92P6Nqy3XRBjNFM7Lfvpk
	DwAQj8VvrZyHjyzENOPMVz8ngAlWW+JQoEtrxTeUJAdeeZvc+8kVauQsrsBJmOF8GNrEo/X0Ka2
	41udaDOpG3k2NT/2QoiWxW9ReDg6jGlag+EpRCbHOib1EnTDXO6bOLtSsK5Vmv3lBdJZZDdlalq
	1wu/KYxchSZLBB5IrAoeWCxplJfKtw1wUmK8R/s+01hBs1GPvjHvavj1snISUC1HcjF3SGgrLOU
	E2jIvk2DzaM21nIiXFXqFjREtH1zMYiltstmb4GOPsFK7TMRZqr8WjW5h8mQIB1oAKHP/4jJAmC
	PQnyIKgdFM7s1g=
X-Received: by 2002:a05:600c:3546:b0:487:5c0:671f with SMTP id 5b1f17b1804b1-488996e8774mr351215065e9.9.1775734913619;
        Thu, 09 Apr 2026 04:41:53 -0700 (PDT)
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.pau@citrix.com>,
	Teddy Astie <teddy.astie@vates.tech>
Subject: [PATCH v2] x86: Avoid using .byte for instructions where safe to do so
Date: Thu,  9 Apr 2026 12:41:51 +0100
Message-Id: <20260409114151.179408-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-42698a/1775734915-F61C72A1-54C6BD06/0/0
X-purgate-type: clean
X-purgate-size: 7378

The new toolchain baseline knows XGETBV, VPXOR and VPOR.

For the other cases using .byte, annotate the toolchain minima.

No functional change.

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

v2
 * CLZERO, {WR,RD}PKRU can't be named yet.

Pull out of previous series as it's somewhat unrelated.  The XSAVE cleanup has
other prerequiesites before it can move away from .byte.
---
 xen/arch/x86/arch.mk                   |  4 +++
 xen/arch/x86/include/asm/asm-defns.h   |  1 +
 xen/arch/x86/include/asm/msr.h         |  2 ++
 xen/arch/x86/include/asm/prot-key.h    |  4 +--
 xen/arch/x86/include/asm/xstate.h      |  3 +--
 xen/arch/x86/x86_emulate/0f01.c        |  2 +-
 xen/arch/x86/x86_emulate/x86_emulate.c | 34 ++++++++++++--------------
 7 files changed, 27 insertions(+), 23 deletions(-)

diff --git a/xen/arch/x86/arch.mk b/xen/arch/x86/arch.mk
index 0b42e6312fac..cd0602a79aaf 100644
--- a/xen/arch/x86/arch.mk
+++ b/xen/arch/x86/arch.mk
@@ -17,7 +17,11 @@ CFLAGS-$(CONFIG_CC_IS_GCC) += -malign-data=abi
 $(call cc-options-add,CFLAGS,CC,$(EMBEDDED_EXTRA_CFLAGS))
 $(call cc-option-add,CFLAGS,CC,-Wnested-externs)
 $(call as-option-add,CFLAGS,CC,".equ \"x\"$(comma)1",-DHAVE_AS_QUOTED_SYM)
+
+# Binutils >= 2.31, Clang >= 7
 $(call as-option-add,CFLAGS,CC,"movdiri %rax$(comma)(%rax)",-DHAVE_AS_MOVDIR)
+
+# Binutils >= 2.33, Clang >= 9
 $(call as-option-add,CFLAGS,CC,"enqcmd (%rax)$(comma)%rax",-DHAVE_AS_ENQCMD)
 
 # Check to see whether the assembler supports the .nop directive.
diff --git a/xen/arch/x86/include/asm/asm-defns.h b/xen/arch/x86/include/asm/asm-defns.h
index 239dc3af096c..dc9b3ce272fd 100644
--- a/xen/arch/x86/include/asm/asm-defns.h
+++ b/xen/arch/x86/include/asm/asm-defns.h
@@ -1,5 +1,6 @@
 #include <asm/page-bits.h>
 
+/* binutils >= 2.26 or Clang >= 3.8 */
 .macro clzero
     .byte 0x0f, 0x01, 0xfc
 .endm
diff --git a/xen/arch/x86/include/asm/msr.h b/xen/arch/x86/include/asm/msr.h
index 941a7612f4ba..1377d156f4e1 100644
--- a/xen/arch/x86/include/asm/msr.h
+++ b/xen/arch/x86/include/asm/msr.h
@@ -63,6 +63,8 @@ static inline void wrmsrns(uint32_t msr, uint64_t val)
     /*
      * WRMSR is 2 bytes.  WRMSRNS is 3 bytes.  Pad WRMSR with a redundant CS
      * prefix to avoid a trailing NOP.
+     *
+     * Binutils >= 2.40, Clang >= 16
      */
     alternative_input(".byte 0x2e; wrmsr",
                       ".byte 0x0f,0x01,0xc6", X86_FEATURE_WRMSRNS,
diff --git a/xen/arch/x86/include/asm/prot-key.h b/xen/arch/x86/include/asm/prot-key.h
index 8fb15b5c32e9..e8550e0c9203 100644
--- a/xen/arch/x86/include/asm/prot-key.h
+++ b/xen/arch/x86/include/asm/prot-key.h
@@ -19,7 +19,7 @@ static inline uint32_t rdpkru(void)
 {
     uint32_t pkru;
 
-    asm volatile ( ".byte 0x0f,0x01,0xee"
+    asm volatile ( ".byte 0x0f,0x01,0xee" /* binutils >= 2.26 or Clang >= 3.8 */
                    : "=a" (pkru) : "c" (0) : "dx" );
 
     return pkru;
@@ -27,7 +27,7 @@ static inline uint32_t rdpkru(void)
 
 static inline void wrpkru(uint32_t pkru)
 {
-    asm volatile ( ".byte 0x0f,0x01,0xef"
+    asm volatile ( ".byte 0x0f,0x01,0xef" /* binutils >= 2.26 or Clang >= 3.8 */
                    :: "a" (pkru), "d" (0), "c" (0) );
 }
 
diff --git a/xen/arch/x86/include/asm/xstate.h b/xen/arch/x86/include/asm/xstate.h
index c96d75e38b25..0519379edb57 100644
--- a/xen/arch/x86/include/asm/xstate.h
+++ b/xen/arch/x86/include/asm/xstate.h
@@ -118,8 +118,7 @@ static inline uint64_t xgetbv(unsigned int index)
     uint32_t lo, hi;
 
     ASSERT(index); /* get_xcr0() should be used instead. */
-    asm volatile ( ".byte 0x0f,0x01,0xd0" /* xgetbv */
-                   : "=a" (lo), "=d" (hi) : "c" (index) );
+    asm volatile ( "xgetbv" : "=a" (lo), "=d" (hi) : "c" (index) );
 
     return lo | ((uint64_t)hi << 32);
 }
diff --git a/xen/arch/x86/x86_emulate/0f01.c b/xen/arch/x86/x86_emulate/0f01.c
index 4d36c7d289a5..87d338f0c74a 100644
--- a/xen/arch/x86/x86_emulate/0f01.c
+++ b/xen/arch/x86/x86_emulate/0f01.c
@@ -122,7 +122,7 @@ int x86emul_0f01(struct x86_emulate_state *s,
         {
         case vex_none: /* serialize */
             host_and_vcpu_must_have(serialize);
-            asm volatile ( ".byte 0x0f, 0x01, 0xe8" );
+            asm volatile ( ".byte 0x0f, 0x01, 0xe8" ); /* Binutils >= 2.34, Clang >= 11 */
             break;
         case vex_f2: /* xsusldtrk */
             vcpu_must_have(tsxldtrk);
diff --git a/xen/arch/x86/x86_emulate/x86_emulate.c b/xen/arch/x86/x86_emulate/x86_emulate.c
index 11d145e17723..e58735ee9590 100644
--- a/xen/arch/x86/x86_emulate/x86_emulate.c
+++ b/xen/arch/x86/x86_emulate/x86_emulate.c
@@ -4748,27 +4748,25 @@ x86_emulate(
                  */
                 if ( vex.l )
                 {
-                    /* vpxor %xmmN, %xmmN, %xmmN */
-                    asm volatile ( ".byte 0xc5,0xf9,0xef,0xc0" );
-                    asm volatile ( ".byte 0xc5,0xf1,0xef,0xc9" );
-                    asm volatile ( ".byte 0xc5,0xe9,0xef,0xd2" );
-                    asm volatile ( ".byte 0xc5,0xe1,0xef,0xdb" );
-                    asm volatile ( ".byte 0xc5,0xd9,0xef,0xe4" );
-                    asm volatile ( ".byte 0xc5,0xd1,0xef,0xed" );
-                    asm volatile ( ".byte 0xc5,0xc9,0xef,0xf6" );
-                    asm volatile ( ".byte 0xc5,0xc1,0xef,0xff" );
+                    asm volatile ( "vpxor %xmm0, %xmm0, %xmm0" );
+                    asm volatile ( "vpxor %xmm1, %xmm1, %xmm1" );
+                    asm volatile ( "vpxor %xmm2, %xmm2, %xmm2" );
+                    asm volatile ( "vpxor %xmm3, %xmm3, %xmm3" );
+                    asm volatile ( "vpxor %xmm4, %xmm4, %xmm4" );
+                    asm volatile ( "vpxor %xmm5, %xmm5, %xmm5" );
+                    asm volatile ( "vpxor %xmm6, %xmm6, %xmm6" );
+                    asm volatile ( "vpxor %xmm7, %xmm7, %xmm7" );
                 }
                 else
                 {
-                    /* vpor %xmmN, %xmmN, %xmmN */
-                    asm volatile ( ".byte 0xc5,0xf9,0xeb,0xc0" );
-                    asm volatile ( ".byte 0xc5,0xf1,0xeb,0xc9" );
-                    asm volatile ( ".byte 0xc5,0xe9,0xeb,0xd2" );
-                    asm volatile ( ".byte 0xc5,0xe1,0xeb,0xdb" );
-                    asm volatile ( ".byte 0xc5,0xd9,0xeb,0xe4" );
-                    asm volatile ( ".byte 0xc5,0xd1,0xeb,0xed" );
-                    asm volatile ( ".byte 0xc5,0xc9,0xeb,0xf6" );
-                    asm volatile ( ".byte 0xc5,0xc1,0xeb,0xff" );
+                    asm volatile ( "vpor %xmm0, %xmm0, %xmm0" );
+                    asm volatile ( "vpor %xmm1, %xmm1, %xmm1" );
+                    asm volatile ( "vpor %xmm2, %xmm2, %xmm2" );
+                    asm volatile ( "vpor %xmm3, %xmm3, %xmm3" );
+                    asm volatile ( "vpor %xmm4, %xmm4, %xmm4" );
+                    asm volatile ( "vpor %xmm5, %xmm5, %xmm5" );
+                    asm volatile ( "vpor %xmm6, %xmm6, %xmm6" );
+                    asm volatile ( "vpor %xmm7, %xmm7, %xmm7" );
                 }
 
                 ASSERT(!state->simd_size);
-- 
2.39.5



From xen-devel-bounces@lists.xenproject.org Thu Apr 09 11:47:09 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 09 Apr 2026 11:47:09 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1277138.1562396 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wAnqi-0003Nm-PC; Thu, 09 Apr 2026 11:47:04 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1277138.1562396; Thu, 09 Apr 2026 11:47: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 1wAnqi-0003Ne-MB; Thu, 09 Apr 2026 11:47:04 +0000
Received: by outflank-mailman (input) for mailman id 1277138;
 Thu, 09 Apr 2026 11:47:03 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <jbeulich@suse.com>) id 1wAnqh-0003NY-Aw
 for xen-devel@lists.xenproject.org; Thu, 09 Apr 2026 11:47:03 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wAnqf-0093Tl-4l
 for xen-devel@lists.xenproject.org; Thu, 09 Apr 2026 13:47:02 +0200
Received: from [10.42.69.11] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <jbeulich@suse.com>)
 id 69d791a8-bab6-0a2a0a5309dd-0a2a450b83b0-28
 for <xen-devel@lists.xenproject.org>; Thu, 09 Apr 2026 13:47:02 +0200
Received: from [209.85.221.54] (helo=mail-wr1-f54.google.com)
 by tlsNG-42698a.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.0)
 (envelope-from <jbeulich@suse.com>)
 id 69d791b6-bca8-0a2a450b0019-d155dd36d85b-3
 for <xen-devel@lists.xenproject.org>; Thu, 09 Apr 2026 13:47:02 +0200
Received: by mail-wr1-f54.google.com with SMTP id
 ffacd0b85a97d-43cfce3a195so480039f8f.2
 for <xen-devel@lists.xenproject.org>; Thu, 09 Apr 2026 04:47:02 -0700 (PDT)
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-43d1e4d2971sm66014178f8f.22.2026.04.09.04.47.00
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Thu, 09 Apr 2026 04:47:01 -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=google header.d=suse.com header.i="@suse.com" header.h="Content-Transfer-Encoding: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=1775735222; x=1776340022; darn=lists.xenproject.org;
        h=content-transfer-encoding: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;
        bh=9UQNUiqMM0UOFM4a1BtaZDXuAXWKKjh0UmiRRYcOEZc=;
        b=FOx27flRsZQ5mv0j5cT4mtys/l+9lH0vUVMBeTi8Nzp44HC2ktaF5UoTuLlIvLD7cw
         Z1SVq9pViwVhyc8bixMTNSNzffOxE1zo9lIlxDXQS29P91UkAMmDhXA9oHH0Ag4pGCVA
         mklCc5GG9/vVDP+GLDIw49nf4BuiM0wd5ZwJYwdK6fu6kpyPXqmX80NdEGDGtAaQZQcd
         SJAfpOHPbK4s4KhDAt2Bqk0ss+E4s8130US88/R6lxIZwpvhttDEAP7h/uiS1FOAA1Ai
         CsfRQKrL4UdAHNwQ2nJTuxsIa+5jlL7vPmB9fO2oiVfnNFoOVUrXxBgJ5S2wv4drxitN
         b8fw==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20251104; t=1775735222; x=1776340022;
        h=content-transfer-encoding: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;
        bh=9UQNUiqMM0UOFM4a1BtaZDXuAXWKKjh0UmiRRYcOEZc=;
        b=YSHM+lV/CtmYup/rdzONLq8ybtUN7BC1WX6WoEOHCIvsyjr9jw84VSL95Nq7AAE/dc
         Hw8qzF9Y7Ekz0dEt3Rt4bJe0aHyDy19MQp3pbT85Xyp9TAP4jSHhp3l0r8L9fJuENijT
         RUXjR83K/o6d07vqNIJRzTtWMRsLlospIMJpbXom8cbgXBcQBHwE9qckubJOWGI0Z0CX
         Dt0pH79e8YYiQSxdCEu1rF+socWFhhd9LD3ALZoqZgPOH/7q/ssYTxqa6dn5kWxGNk5w
         q+ENGYhJv7llmsJOYwmbdSD3tinVbEZlMXkbXuprclOgMg+zGsGli8E5Osjj9VTrbq/F
         WRtA==
X-Forwarded-Encrypted: i=1; AJvYcCWo+Hm+FEwDuAnJEa1IzvR6QbCZM//VqWb4Of2zmJACjpvgXEL/aYB5vJtATkP9ksXJD+A8lwHQCmY=@lists.xenproject.org
X-Gm-Message-State: AOJu0YwHLL4MAzMCZhu+oVyAvb8exPEE3uGLK0mHy6bfBqeQsoI7TPcx
	zGrUGxMyb+oa9FfSBws7R3tcFyARxjrTMq0uh01qDAVQ7xVLC8RfzuE8Wi8iXegCUQ==
X-Gm-Gg: AeBDievHTrC4U/m47RsjWG/MIsNYhHI7WaL1H072et0FXCrmfmSJkCjgJltSWPWgMGr
	oypb4ZsOjg9a9SAdoxXdwkxXduk6f8LlHQg+0uC51DpzRmwLu/3wk7SdxbJK5alblcvu8fuzwZT
	iJMrjnRBVd3LwQfC+6Z64SdvhIghEx9y2GgOFVyifQWYMaIHGFudJDMnHQKsuwBepQIHpJ0ccKP
	J008YJbSwiY1K8eGrcDHStCdlgQb8KfYeNCKK38XHH4ip7PumJXvj5pQ6bpcWYj7uuEhIz7f4zo
	4sqe5+sePyihQDLK6DsgJFNVpQDFEB2RlCoLscXbfQo3ok9BkrpFZxTQiAkeGUgO+rHKBWTKQvQ
	HmILUmaQ6D087KUDawrTuVkq1jlwspIdHdPlHCfiy5m3lk16+X8eP4t6ynHEVqsSkksE3m59U6i
	F0KWd1rRV+M7e0HR273YV+3VMBYmycOuAaJyRlLVLUUeTd3XtEcl6/aTpn2W4rXnt1ww1Gmg9yT
	WjzkTsjzRNW6XI=
X-Received: by 2002:a05:6000:22c7:b0:43b:8f30:39bb with SMTP id ffacd0b85a97d-43d5a18be29mr4283669f8f.24.1775735221729;
        Thu, 09 Apr 2026 04:47:01 -0700 (PDT)
Message-ID: <97a6f4cb-d938-404d-89c8-cb44e974817c@suse.com>
Date: Thu, 9 Apr 2026 13:46:59 +0200
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH v1 2/3] xen/smp: Rewrite on_selected_cpus() to be lockless
To: Ross Lagerwall <ross.lagerwall@citrix.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.pau@citrix.com>,
 Stefano Stabellini <sstabellini@kernel.org>, xen-devel@lists.xenproject.org
References: <20260401163521.3603665-1-ross.lagerwall@citrix.com>
 <20260401163521.3603665-3-ross.lagerwall@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: <20260401163521.3603665-3-ross.lagerwall@citrix.com>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 7bit
X-purgate-ID: tlsNG-42698a/1775735222-1734C2A1-D05DD6E1/0/0
X-purgate-type: clean
X-purgate-size: 5209

On 01.04.2026 18:35, Ross Lagerwall wrote:
> --- a/xen/common/smp.c
> +++ b/xen/common/smp.c
> @@ -24,13 +24,15 @@
>  /*
>   * Structure and data for smp_call_function()/on_selected_cpus().
>   */
> -static DEFINE_SPINLOCK(call_lock);
> -static struct call_data_struct {
> +struct call_data_struct {
>      void (*func) (void *info);
>      void *info;
>      int wait;
> -    cpumask_t selected;
> -} call_data;
> +    cpumask_t selected __cacheline_aligned;

The adding of the alignment attribute isn't strictly required here, is it?
Can it, with its own justification, be split out?

However, wrt what I said in the first reply, putting a full cpumask_t in
per-CPU data is even a little worse than having one as a global. Imo this
also wants to become cpumask_var_t. Then the attribute wouldn't be quite
applicable anymore anyway.

> @@ -50,55 +52,84 @@ void on_selected_cpus(
>      void *info,
>      int wait)
>  {
> +    struct call_data_struct *data;
> +    unsigned int cpu = smp_processor_id();
> +
>      ASSERT(local_irq_is_enabled());
>      ASSERT(cpumask_subset(selected, &cpu_online_map));
>  
> -    spin_lock(&call_lock);
> +    if ( cpumask_empty(selected) )
> +        return;
> +
> +    data = &this_cpu(call_data);
>  
> -    cpumask_copy(&call_data.selected, selected);
> +    if ( !data->wait )
> +    {
> +        /* Wait for any previous async call to complete */
> +        while ( !cpumask_empty(&data->selected) )
> +            cpu_relax();
> +
> +        cpumask_clear_cpu(cpu, &tasks);

In the description you say "Track which CPUs are currently running
on_selected_cpus()", yet as per this the bit can remain set after the
function was left. Which isn't just an issue of describing things
correctly; there's also a performance concern: The IPI handler(s) will
need to carry out more work than necessary. That's not a lot of work (only
the subsequent cpumask_test_cpu() there), but also not nothing.

I also think another barrier is needed above here: We may only clear the
bit in tasks when the empty ->selected is globally visible. More generally,
since the bit in tasks is what everything derives from, barriers are
apparently needed around all of its updating / accessing. Which also meant
that ...

> +    }
>  
> -    if ( cpumask_empty(&call_data.selected) )
> -        goto out;
> +    data->func = func;
> +    data->info = info;
> +    data->wait = wait;
>  
> -    call_data.func = func;
> -    call_data.info = info;
> -    call_data.wait = wait;
> +    smp_wmb();

... besides (as already indicated) this barrier needing to move ...

> -    smp_send_call_function_mask(&call_data.selected);
> +    cpumask_copy(&data->selected, selected);

... here, I think that another one is going to be needed ...

> -    while ( !cpumask_empty(&call_data.selected) )
> -        cpu_relax();
> +    cpumask_set_cpu(cpu, &tasks);

... here, such that ...

> -out:
> -    spin_unlock(&call_lock);
> +    smp_send_call_function_mask(&data->selected);

... upon receipt of the IPI the target sees the up-to-date value.

> +    if ( wait )
> +    {
> +        while ( !cpumask_empty(&data->selected) )
> +            cpu_relax();
> +
> +        cpumask_clear_cpu(cpu, &tasks);
> +    }
>  }
>  
>  void smp_call_function_interrupt(void)
>  {
> -    void (*func)(void *info) = call_data.func;
> -    void *info = call_data.info;
>      unsigned int cpu = smp_processor_id();
> -
> -    if ( !cpumask_test_cpu(cpu, &call_data.selected) )
> -        return;
> +    unsigned int i;
> +    struct call_data_struct *data;
> +    void (*func)(void *info);
> +    void *info;
>  
>      irq_enter();
>  
> -    if ( unlikely(!func) )
> -    {
> -        cpumask_clear_cpu(cpu, &call_data.selected);
> -    }
> -    else if ( call_data.wait )
> -    {
> -        (*func)(info);
> -        smp_mb();
> -        cpumask_clear_cpu(cpu, &call_data.selected);
> -    }
> -    else
> +    for_each_cpu ( i, &tasks )
>      {
> -        smp_mb();
> -        cpumask_clear_cpu(cpu, &call_data.selected);
> -        (*func)(info);
> +        data = &per_cpu(call_data, i);
> +
> +        if ( !cpumask_test_cpu(cpu, &data->selected) )
> +            continue;
> +
> +        smp_rmb();
> +        func = data->func;
> +        info = data->info;
> +
> +        if ( unlikely(!func) )
> +        {
> +            cpumask_clear_cpu(cpu, &data->selected);
> +        }
> +        else if ( data->wait )
> +        {
> +            (*func)(info);
> +            smp_mb();
> +            cpumask_clear_cpu(cpu, &data->selected);
> +        }
> +        else
> +        {
> +            smp_mb();
> +            cpumask_clear_cpu(cpu, &data->selected);
> +            (*func)(info);

I understand you only re-indent this code, but I'm struggling with the
purpose of the barrier here. With the smp_rmb() above there are no reads
to isolate (data->func and data->info can't change while the bit in
data->selected is still set). And there are no earlier writes at all,
unless anything done outside of the interrupt handler would matter.

Jan


From xen-devel-bounces@lists.xenproject.org Thu Apr 09 11:47:24 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 09 Apr 2026 11:47:24 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1277142.1562405 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wAnr1-0003kJ-W5; Thu, 09 Apr 2026 11:47:23 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1277142.1562405; Thu, 09 Apr 2026 11: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 1wAnr1-0003kC-TC; Thu, 09 Apr 2026 11:47:23 +0000
Received: by outflank-mailman (input) for mailman id 1277142;
 Thu, 09 Apr 2026 11:47:22 +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 1wAnr0-0003jw-7L
 for xen-devel@lists.xenproject.org; Thu, 09 Apr 2026 11:47:22 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wAnqz-00B2PN-JX
 for xen-devel@lists.xenproject.org; Thu, 09 Apr 2026 13:47:21 +0200
Received: from [10.42.69.10] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <andrew.cooper@citrix.com>)
 id 69d791c6-e002-0a2a0a5209dd-0a2a450ab9f2-30
 for <xen-devel@lists.xenproject.org>; Thu, 09 Apr 2026 13:47:21 +0200
Received: from [40.93.196.19]
 (helo=SA9PR02CU001.outbound.protection.outlook.com)
 by tlsNG-4011c0.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.0)
 (envelope-from <andrew.cooper@citrix.com>)
 id 69d791c7-ee98-0a2a450a0019-285dc413726a-3
 for <xen-devel@lists.xenproject.org>; Thu, 09 Apr 2026 13:47:20 +0200
Received: from CH8PR03MB8275.namprd03.prod.outlook.com (2603:10b6:610:2b9::7)
 by LV5PR03MB8387.namprd03.prod.outlook.com (2603:10b6:408:35c::12)
 with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9769.20; Thu, 9 Apr
 2026 11:47:18 +0000
Received: from CH8PR03MB8275.namprd03.prod.outlook.com
 ([fe80::a70d:dc32:bba8:ce37]) by CH8PR03MB8275.namprd03.prod.outlook.com
 ([fe80::a70d:dc32:bba8:ce37%6]) with mapi id 15.20.9769.018; Thu, 9 Apr 2026
 11:47: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=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=v8p6aV7hkIe0XkM9WyB7X3rirr9aL5L+fgV1Nn7iPG/gzbJUthsSidRMqR94OgkdIcwFUuKKprfZBEN5i8D7BT/TnFi2Qv7v76iGt2cYYKpOEN5MrxxGRdL4CXY+rb29/FQr2GI2SwQ1MRMjpkxsNyKK8YTqp00tKGySSsyz9CiHN2WLducB5iqU+122chIKkXv1slUCrT/+cCohpK0btux7QYLxDiKxXC7rC9i42HGxMBeQ4mQ4R/gLfiTBkTKcR2HXW6+MaxtVzXwiQF24R8SU6bTk8caqdoJ3MlBz4rSr7+jFySDZ9aaCXTQL2QvMwz4fdjhKwXGCfmztrstrLg==
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com;
 s=arcselector10001;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1;
 bh=y6Zvtn+ZQQ9XXES2Ko5NN7Qt68GnFrmqrpOHfcBVcpI=;
 b=qhEIRaHk+RyGn9v9JA30964IjXm48wM/FALl8sAfEdcehEMjV3e9P1Uut6Vsu+g792fjS6TdxXv5kcnxeQOG8jRdO64tZ8xolGRoHYybuwgwoyHzNZ/6G+w4xzq3hEyAduAyV8bP67ufVh/1SScdpp+mzvnFV1yok+xiDMbKSAt0AV7O8ylgJth6+vH5jlTQHf6w3XGHVDVwAnVP5L6sP6roU/jXApvV3bB9gkUK2q6s2YBBPRqE+Va+X+yclcTRicy6yrxyzicZPzfu2EAk8OJxvw59l8opO2xz+ll58cz70cjyA/0q225tKW6zA0biNPgdt4TvhZiIb3M+sH0q/A==
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=y6Zvtn+ZQQ9XXES2Ko5NN7Qt68GnFrmqrpOHfcBVcpI=;
 b=tku4sttpdFF5pkR12pPzMXQ39vN9MTJCDFzc/GNjs/yc9/YqifrhtbKXIVlC3CIT7Z5NjP6Zsc8Ys1TS+3pXDxCEobr/gYEoS3bj2EkOUSPnjdcmxTKk3itHiKg8wvOHipULyOm6jPU7wmeXHr6bG+UdUmj9mvc+PscxAt0XcJU=
Authentication-Results: dkim=none (message not signed)
 header.d=none;dmarc=none action=none header.from=citrix.com;
Message-ID: <2ae13059-e0ba-4cf7-bda0-9a21cd428509@citrix.com>
Date: Thu, 9 Apr 2026 12:47:13 +0100
User-Agent: Mozilla Thunderbird
Cc: Andrew Cooper <andrew.cooper3@citrix.com>,
 Anthony PERARD <anthony.perard@vates.tech>, 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>
Subject: Re: [PATCH 2/3] xen/common: llc-coloring: Fix off-by-one in
 parse_color_config()
To: Michal Orzel <michal.orzel@amd.com>, xen-devel@lists.xenproject.org
References: <20260409113934.197619-1-michal.orzel@amd.com>
 <20260409113934.197619-3-michal.orzel@amd.com>
Content-Language: en-GB
From: Andrew Cooper <andrew.cooper3@citrix.com>
In-Reply-To: <20260409113934.197619-3-michal.orzel@amd.com>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 7bit
X-ClientProxiedBy: PA7P264CA0159.FRAP264.PROD.OUTLOOK.COM
 (2603:10a6:102:36c::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_|LV5PR03MB8387:EE_
X-MS-Office365-Filtering-Correlation-Id: 0de9a269-0de3-49c7-0cd8-08de962dc056
X-MS-Exchange-SenderADCheck: 1
X-MS-Exchange-AntiSpam-Relay: 0
X-Microsoft-Antispam:
	BCL:0;ARA:13230040|1800799024|376014|366016|22082099003|18002099003|56012099003;
X-Microsoft-Antispam-Message-Info:
	zj1oEXJwUUJefH4lqMZTAf6Y26Qt2rYX6kcXTyEJANxBc4dUNZ2n5YBGlx4CTQGwJnCEeix2Mt77y+olVdLjUYhIeW3jzCW9KxVtZd2bdRtWTu/8OQcuILEcOIRgoVtozPpNABEXkIl4nLzBe4iMSd7Ef/83fWFnp4ST4+M/NVLAfgu7siaLL7uUIhvtS7ziOZdQ4k9hUlTaefxcvjIzD2eKqhnAURWCaJVOe3Xi4WyUUSgzS4fFd/DMyDhyg7R+KKSxiSB0WsiUaBs/ASuRdBF1SYOLBLGITLGuO3ESV51vclZl6ABDhnZFJsAVi4ujVBZUdwltVYww8eX5uBn4fA1wrmxXHpWAzJx1yHOCWc+oF60+qqFdOZaSO4I0u34xnqVHuQB9zv2y9tS6y/RSgKu+rOVUWzQTSp2FnaxfU9Yd24kMRHXEXPMHZ7ckoyjPxrDEo0zkW++Tqv3JkpsAU3KVur9cZP1rExyAZa8HEini96nzgoa1GEQHQsDIYPinRXjc0d9V4uY7H+oFpIlzTNO7f3/rN6odgbl5VH3vyAXADJJ72ISrtFLJbjZk1cUVWlhkzcYDeoZiUy6uZZwH7jyM73i00OD/swcte2cJ2arjFtRr5G7yegDtTIdVxwnUcUIMOSaDzFOpd33z72UgAewxY/RR77ZCrhcypPjqxwWm/f6f9IsYhuD9/IddZXqo
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)(376014)(366016)(22082099003)(18002099003)(56012099003);DIR:OUT;SFP:1101;
X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1
X-MS-Exchange-AntiSpam-MessageData-0:
	=?utf-8?B?ekxYd1Y2ZHRhSkNBZDhJQVoxcHRLbmhqQ256MXRhWnZEM0lIcmNlRnlyem9i?=
 =?utf-8?B?eDZjUVAzOWN6cGRSTmo2aDZmZm16a1JjV0F0ZnVUbTdJNEwrSVNoTy9waVVT?=
 =?utf-8?B?SkNCazhQQmRjaVVXVDZsdEN6a3lXREZMbzRIdHJQdU1FNXhqSHdnT0wzOHRG?=
 =?utf-8?B?bWxXVkN4UTJIZnBtNjhua1lTUjlvL0lmWkF5YkdkYXp6Zk9vMzc0NE5wUUx1?=
 =?utf-8?B?REZkTDZ1TGhiV2t3OU95K29aYkdpZGM4SkdUVndabEdxc1MzbHBLRmRaOWww?=
 =?utf-8?B?cTJDTnBhN3cydWVFZnJMZVFhdWVRQldTeE5tR0g1UlhoQ29HS0ZmYlhTR3J4?=
 =?utf-8?B?bDYrMTJBaFlPMHJlQjZKVGtLTjcvRWRuckN0ODJaNUVuRHc1ZTUrQTZ1UEg0?=
 =?utf-8?B?ZGhueWlia2xTajlOMG9yVXNEM1lJRjZ5R05JVG9uakRBai9CNHhzMDV2ZW9x?=
 =?utf-8?B?MXZVQmxUYWt4bU9OT1VySlVhZ29CY2JlRllKVUVSQjMvUXNoRUZqZHM1cHpy?=
 =?utf-8?B?RFU0alFmV1Y1ckc0VjM0TzFQSWpoMXhHWmVBdExTK1FrajlTR1lOdlNXNjVN?=
 =?utf-8?B?SDE5WmJPZUtNMXNNWkRqY09ZeHdtTDJubVYrbmVuc1BPYWwzM3FQTVJQRmdH?=
 =?utf-8?B?b3hNcThESjVwcUxwK1dxelFUbXVITUEwbk1CTGxVR1ZCTDVhZ1ZYNUFINW9F?=
 =?utf-8?B?OUFudnBvT3NtS2JtT25HWHR6V3ByZThqZU14b0JTc2J6NXp2U3RCQzdobFRp?=
 =?utf-8?B?S2t3RjJMNG1ZQ3AwSGszK0RhbGR0cGxrOUduTkF6cHJkaldoV0NobXZqejly?=
 =?utf-8?B?RTFqNUpLUlIzWWpybkRIZDZsUU5HbWhwTWRuL1ZVQ2xUcldRejlPV3J2MXlL?=
 =?utf-8?B?ZmgyTGZJSFhsdENGd1cyb1JpZFAxNnVXSkhoaGVBNFZKc0NNNU44Y29XeVBi?=
 =?utf-8?B?aGd0WklyMTN1RmFaWlp0YWNLeWVXOWVBYjdHNExFSy9VM0NRaFZpOUo0cFNB?=
 =?utf-8?B?OGlvTnZtZHoxMzNLbHBsQzBadmJId3hua3lhS0Nya3RlSGl4cVJVTVZyUVFB?=
 =?utf-8?B?aFhMUURTemJncFJ5ak82NXhVV3NIREkrTSttb0U3UXNIV0tnSG9OUElyaTh0?=
 =?utf-8?B?WDdTSzZRWEora0dMMmNiOXZHT09EOG5ZVWs5R2hzdnF1bEtNblN5TWdiZWRG?=
 =?utf-8?B?cnZMRGJYUjFvbGJEaS9IdStaOE5BajEzMndDNnNYMk9rNFpMMGE2LzExNlg3?=
 =?utf-8?B?QnBWZ0FNTnVFV3BwYU9HTDZvZmUrS0lybmdLZFllbGo5aHBqZTFnaG1ISEp4?=
 =?utf-8?B?RzJ1MmhoeWdtREd2VTZzV0V5S042L0VFaFFWN1pvMFhEeEZJb2NNOHh4b1Fm?=
 =?utf-8?B?WC9JNjZhZDBIVEQzczBtVkFBdVZZMlpXbmdyMnhFTVhWWXMvQTBRTlp4Vytu?=
 =?utf-8?B?dXNXa0FCZkZSdEJ6VldPRmJ2M25BOVFXTFJEb3BFWEhJdXJFSjYxM2tROUN4?=
 =?utf-8?B?NkpIT3RzZGVkR1owaHA0dC9hN3hocU83akVJRXNFQ09KL2E2RHVEOWFZakZF?=
 =?utf-8?B?V3V3SUpzL2Y3Z25RZDlHbDkwM1p4alFhVkhnZkhzVUtwdGkwSWpRaXUvYUlh?=
 =?utf-8?B?L3ZjMjBvYXBxUUJIeTdDYTBsdURZSXRBaXFsZjQxT3lwNmU3bngyRWkxazZR?=
 =?utf-8?B?ZHg5dkRxbjRlTGpTaHV5b0IrOUptSFBFaWk2N2ROTWdrZGFwTUNIUFovdkFI?=
 =?utf-8?B?UkMyYnRNRStRVC9vam1ucGsvUlVlSXNuOUpCS3hLK0N1NTVrZThGeVdwRDY3?=
 =?utf-8?B?RFZTWUZ6Z2wzNWtHVmJPZVJzdU1BaE9iNCtPM1R1RllIVFZxZzBlWFNPT3NM?=
 =?utf-8?B?WUM3a2NuM2wvcmM3cGhrV3dDaHFMYWtiTGh5dERWR3ZVdTc2N1IweU9OLzVk?=
 =?utf-8?B?aWlpMERkV3ROWkRjZURGUUNJV2ozZ1lKaCtqY2w5dmIwbWo1R0huTWhOa3hr?=
 =?utf-8?B?M1lQK3h2emRTWk5MeFduZWxMekgwSUNpVytqdmJUaWZ5NDBWdlN0RDFkSGxM?=
 =?utf-8?B?RkJYS1dPU3RvQStRSUJZRlhsSHRDd2NGT25WWFVoSThXZFlmTUlPTDY1WEVw?=
 =?utf-8?B?ZzltdWU0MnNMa21tQzRScVVuTEMwVnJINUpaTkxlK0IybnowME9qbGNBTGQz?=
 =?utf-8?B?SWxKZ3VSYS9nRFlVc2pPbkl3cDFtRDh5MHlYaENOd1BXS0hZSUdYQ29JSUtM?=
 =?utf-8?B?M2hVQ01nWTN6amVrUWQwVVNQY3JIZ3dUclZXeXhadzZvYzBLN3QxRENRV1VF?=
 =?utf-8?B?V3VzNmJ4Nm9PbWY5bjhQcSswYXJFOFRKZEJQbnQvRUtuRlJCOGV6c0NCOHhi?=
 =?utf-8?Q?F10Xh4ndBTb/T/3E=3D?=
X-OriginatorOrg: citrix.com
X-MS-Exchange-CrossTenant-Network-Message-Id: 0de9a269-0de3-49c7-0cd8-08de962dc056
X-MS-Exchange-CrossTenant-AuthSource: CH8PR03MB8275.namprd03.prod.outlook.com
X-MS-Exchange-CrossTenant-AuthAs: Internal
X-MS-Exchange-CrossTenant-OriginalArrivalTime: 09 Apr 2026 11:47:17.9508
 (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: F8Fceog1Z9EfFy5xSWLhAi77Cr+fT7ACcdcxJ2R3wC7+NF0DFrHYAAudZ5WU5aGTMCgB0ehXUgyr3ylcQUbdJAr/gW1NY2S6MPQYiHNN+aE=
X-MS-Exchange-Transport-CrossTenantHeadersStamped: LV5PR03MB8387
X-purgate-ID: tlsNG-4011c0/1775735241-C4C1A0B1-3ABB6216/0/0
X-purgate-type: clean
X-purgate-size: 1506

On 09/04/2026 12:39 pm, Michal Orzel wrote:
> The check uses >= to compare the total number of colors against
> max_num_colors (which is ARRAY_SIZE of the colors array).  This
> incorrectly rejects input that would exactly fill the array.
>
> For example, with NR_LLC_COLORS=16, specifying 1 color for Xen and 15
> for dom0 would fail.
>
> Change >= to > so that exactly filling the array is permitted.
>
> Fixes: 95ef5ddf8a ("xen/arm: add Dom0 cache coloring support")
> Signed-off-by: Michal Orzel <michal.orzel@amd.com>
> ---
>  xen/common/llc-coloring.c | 2 +-
>  1 file changed, 1 insertion(+), 1 deletion(-)
>
> diff --git a/xen/common/llc-coloring.c b/xen/common/llc-coloring.c
> index eb7c72b24023..30c1594dac9f 100644
> --- a/xen/common/llc-coloring.c
> +++ b/xen/common/llc-coloring.c
> @@ -78,7 +78,7 @@ static int __init parse_color_config(const char *buf, unsigned int colors[],
>  
>          if ( end >= NR_LLC_COLORS || start > end ||
>               (end - start) >= (UINT_MAX - *num_colors) ||
> -             (*num_colors + (end - start + 1)) >= max_num_colors )
> +             (*num_colors + (end - start + 1)) > max_num_colors )
>              return -EINVAL;
>  
>          /* Colors are range checked in check_colors() */

This boundary was changed by
https://xenbits.xen.org/gitweb/?p=xen.git;a=commitdiff;h=cba8a584de171c8c4510709c2edc9f1cf86b21ab
because it was off-by-one.

Are you saying that the analysis in that patch was wrong?

~Andrew


From xen-devel-bounces@lists.xenproject.org Thu Apr 09 11:49:31 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 09 Apr 2026 11:49:31 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1277156.1562414 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wAnt3-00054I-EA; Thu, 09 Apr 2026 11:49:29 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1277156.1562414; Thu, 09 Apr 2026 11:49: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 1wAnt3-00054B-B3; Thu, 09 Apr 2026 11:49:29 +0000
Received: by outflank-mailman (input) for mailman id 1277156;
 Thu, 09 Apr 2026 11:49:27 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <ayan.kumar.halder@amd.com>) id 1wAnt1-00053r-It
 for xen-devel@lists.xenproject.org; Thu, 09 Apr 2026 11:49:27 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wAnt0-00C4s7-RY
 for xen-devel@lists.xenproject.org; Thu, 09 Apr 2026 13:49:26 +0200
Received: from [10.42.69.11] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <ayan.kumar.halder@amd.com>)
 id 69d79233-e002-0a2a0a5209dd-0a2a450bcba4-48
 for <xen-devel@lists.xenproject.org>; Thu, 09 Apr 2026 13:49:26 +0200
Received: from [40.107.208.45]
 (helo=PH0PR06CU001.outbound.protection.outlook.com)
 by tlsNG-42698a.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.0)
 (envelope-from <ayan.kumar.halder@amd.com>)
 id 69d79244-bca8-0a2a450b0019-286bd02d8a66-3
 for <xen-devel@lists.xenproject.org>; Thu, 09 Apr 2026 13:49:26 +0200
Received: from CH5PR05CA0007.namprd05.prod.outlook.com (2603:10b6:610:1f0::12)
 by CY1PR12MB9582.namprd12.prod.outlook.com (2603:10b6:930:fe::17)
 with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9769.20; Thu, 9 Apr
 2026 11:49:20 +0000
Received: from CH2PEPF0000013F.namprd02.prod.outlook.com
 (2603:10b6:610:1f0:cafe::a7) by CH5PR05CA0007.outlook.office365.com
 (2603:10b6:610:1f0::12) with Microsoft SMTP Server (version=TLS1_3,
 cipher=TLS_AES_256_GCM_SHA384) id 15.20.9769.38 via Frontend Transport; Thu,
 9 Apr 2026 11:49:20 +0000
Received: from satlexmb07.amd.com (165.204.84.17) by
 CH2PEPF0000013F.mail.protection.outlook.com (10.167.244.71) with Microsoft
 SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id
 15.20.9769.17 via Frontend Transport; Thu, 9 Apr 2026 11:49:20 +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.17; Thu, 9 Apr
 2026 06:49:19 -0500
Received: from [10.71.193.38] (10.180.168.240) by satlexmb07.amd.com
 (10.181.42.216) with Microsoft SMTP Server id 15.2.2562.17 via Frontend
 Transport; Thu, 9 Apr 2026 06:49:18 -0500
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@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=rbjbfyNqo9hZIar3dgLzW/ktfdYYk9W3TBQDwPWnlBlYo+fz/Kl2zwdrI7Z2fkbgmydnfFfJlzaAoV9jL/7GsKYnh2kf2OPAGo5/W5JnYpoa6fo3qdgJQoYDbzkYvRs/mf0J/yc01jSgaYFcRDYki5LaqBM9roVJcEhY3ENAlVKCf1l6ezjG/GCdH/nTQfWbiJWf6aIPOFStmWX+hmRUJ7cqJSrR3yNqpb37YQqjo7h97mF0yEvgKIND/71cfvgd2h1hvgmVAb7nkblZvFsTz0Q3xu5WMzJasXR1TcDn63R2Drh6Or/RzsDXPQ8pGJM4vbuR6ZRfqn0Jfjupl76BJw==
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com;
 s=arcselector10001;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1;
 bh=joPB6XMzDR5Z7gT8RHe0PBANTX03DUQl03JUlvE+GIM=;
 b=pq/ePJgVehMZ8BfpRYLtv4DqaDRT6i+a4B1+SreTlmo9qlh8WHeTelODKpOlV+BpgGK3hED6e7A1auRA3Dr4JLsIc+2JHFI6W/VEIJqsPgA00VpDC4wuJa+TjEu8AV6Rdg25JdkzkP0x3/ZlCEBgfJXDFqVU1lgnbbCc9Yoh2aUPegwtda72jVQL6SczDmnDRXuR3h24unH2C90j081WnLji9Foxe5tDCvVHimK3ir7SJLU/pWWz1r+AqLmjawQOrk5G+DVDxuzQiIQAvcZuVHvm000j90SserXG5ELgjAlUhv9rxY4IeI0xZcPAhyKNsOk6Y77GMLtBSXGvj4DTOw==
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=joPB6XMzDR5Z7gT8RHe0PBANTX03DUQl03JUlvE+GIM=;
 b=ar3brCrQ+A+TZizy0dVGFi4CFJ1Q5UDjHCNx8T4SlIA9EfbVd/jcEhCXiJ6za2F7F/doyE4rHiMRRPfqUGl0y7/NNaeofnjJ+vEXHu8WM9KIutu6fK5NaslnTzd1L7tmQLTJN8jJL/kiOmtGharHxbh+Sn6LuvrZ0EZJfzUsQKU=
X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 165.204.84.17)
 smtp.mailfrom=amd.com; dkim=none (message not signed)
 header.d=none;dmarc=pass action=none header.from=amd.com;
Received-SPF: Pass (protection.outlook.com: domain of amd.com designates
 165.204.84.17 as permitted sender) receiver=protection.outlook.com;
 client-ip=165.204.84.17; helo=satlexmb07.amd.com; pr=C
Message-ID: <a63da4a7-9e0a-494f-a29d-72192e3a8e55@amd.com>
Date: Thu, 9 Apr 2026 12:49:17 +0100
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH 1/3] xen/arm: Fix off-by-one in iomem_deny_access() calls
To: Michal Orzel <michal.orzel@amd.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>
References: <20260409113934.197619-1-michal.orzel@amd.com>
 <20260409113934.197619-2-michal.orzel@amd.com>
Content-Language: en-US
From: "Halder, Ayan Kumar" <ayankuma@amd.com>
In-Reply-To: <20260409113934.197619-2-michal.orzel@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: CH2PEPF0000013F:EE_|CY1PR12MB9582:EE_
X-MS-Office365-Filtering-Correlation-Id: 809d6438-0505-438f-6bc4-08de962e094b
X-MS-Exchange-SenderADCheck: 1
X-MS-Exchange-AntiSpam-Relay: 0
X-Microsoft-Antispam:
	BCL:0;ARA:13230040|1800799024|36860700016|376014|82310400026|22082099003|56012099003|18002099003;
X-Microsoft-Antispam-Message-Info:
	L98HfzrB6gZtyuGSCMGJhjE8IHLpJVTsh86Fo3fVZVDYLlBsm6k7JLyWSQoataJKmyR7K6DDxknQbp9r1arPdBbRSE57mD9BrVrNAzGGH+CM9A6Q8dI3TATZisGha5+jUSVXiPt+1hz4kJKt7z4wZSZLuck8FT5SvChpZNaTOngfuwd72CagkwWVyHMuJBvTG6Q5onzxU/ZteZOKSJXUGLGy4Q7UL/7CbRaNHOaw9w0ajnQnesF5JE86S5NoPFrD032Uj93p/SmOXAnAw7rB42JMtr+oyPPUieUbKaBp9oCruFtAgYZSiAOZ+432jNkABzyji/kjNAsHpG+ChqRkmn6jJ+oofV+YVsZpc1TUKOXuD7L6M/Mgn44bWnQn3ydjJdOWPPCU0eSS87rAK74JeUrO2sBvkIHMAAoVdGPJRnQqMgd8UgK7mlt3k3oYQPG/jth0XUqkAJWDYEBXYtPFzIPVntciqi8Mqu2wYHSjGzMOkm4gOdvPGMeWIx84HV7/PlpZv7W4509VYUo0L5kZw5Pe8VCmhTxOnct7GN7dHHgYp2fMY0D2jS0bjspdVLSVRA7lmqu67Orgocn24mXb6DuYvG2kcucNhzgd4E0XZEVy4CDR5M0PIAcpqmYXrFnosWxOhWVJS5at4TTV3BAFsLYWUf5sasARU4fN/7ZCTVhi/t98o9UvQWn/NJWc9LVj9J+i0mjtVeLLwPZK4ROFhsR1Vddp+F/V8+yz9rmpJDwg4gmWF9nDFuGp3PABsp52Kf5jMe/OAYtP68UVism2Ig==
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)(36860700016)(376014)(82310400026)(22082099003)(56012099003)(18002099003);DIR:OUT;SFP:1101;
X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1
X-MS-Exchange-AntiSpam-MessageData-0:
	LNE1NgjSGVQ9xLQm19ZhCEZ3LaDIdJbIMxMJG1Kfx5R4nEt0GyswsdLNwFAFzhoc8wVi1+HdrED+Daex9MgCy0wWs/YYju4LAW5VgroqiCVeqPH0rW1dZL5rO+e0SVNF4x2+HtP5aZm2oNGiA9D2q5IxSbvR2cg+odrN/agJ9QX/DX/HvydXAEO76XAsG874C4627T7Mitq53cxD/6Xv4yjAVVGOVokkIRjNmeuZCtkXoou7yCYKxw4MavtdIHmkicvwqpT3rW1NT7io9Dnw32xGN1qd5NiaV7kCUvcVYfdph284eCWb3XT4SXdRrvt9O9dTCOc+yGQPtGl33T4EL1OqANFooiJO8ga/fXTqVBR/w8ChYyJ5+v4IyknoscIMEODQVXV1X0PRTUsnpNr4upZBnsds6u7jXrbj4JfKf5vp3xCQR4ldY2SThz8B5xQ1
X-OriginatorOrg: amd.com
X-MS-Exchange-CrossTenant-OriginalArrivalTime: 09 Apr 2026 11:49:20.0845
 (UTC)
X-MS-Exchange-CrossTenant-Network-Message-Id: 809d6438-0505-438f-6bc4-08de962e094b
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:
	CH2PEPF0000013F.namprd02.prod.outlook.com
X-MS-Exchange-CrossTenant-AuthAs: Anonymous
X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem
X-MS-Exchange-Transport-CrossTenantHeadersStamped: CY1PR12MB9582
X-purgate-ID: tlsNG-42698a/1775735366-EE3542A1-C5046BC6/0/0
X-purgate-type: clean
X-purgate-size: 5438

Hi Michal,

Apologies if my review is weird, I have been looking into too much of 
safety stuff.

On 09/04/2026 12:39, Michal Orzel wrote:
> iomem_deny_access() wraps rangeset_remove_range() which takes inclusive
> endpoints.  All call sites in the GIC and ACPI code pass 'mfn + nr' (or
> 'mfn + 1' for single-page regions) as the end parameter, which causes
> one extra page beyond each region to be denied.
>
> For single-page regions, use 'mfn' as the end (denying exactly one page).
> For all multi-page regions, use 'mfn + nr - 1'.

Just reading this and the change below, it seems that the issue was 
caught while doing some boundary value analysis. In this specific case, 
it seems the boundary values were set incorrectly.

Can you explain a bit more (the boundary/edge cases) in the commit 
message and give some reference to test (can be even a different repo or 
something) on how you caught this and verified it to be correct ?

We can keep this test somewhere (and tag it to the commit) even if such 
tests does not make sense to be upstreamed.

- Ayan

>
> This matches the correct pattern used elsewhere, e.g. in device.c.
>
> Fixes: 8300b3377e ("arm/gic: Add a new callback to deny Dom0 access to GIC regions")
> Fixes: 66158be465 ("ARM: ITS: Deny hardware domain access to ITS")
> Fixes: 97e9875646 ("arm/acpi: Permit MMIO access of Xen unused devices for Dom0")
> Signed-off-by: Michal Orzel <michal.orzel@amd.com>
> ---
>   xen/arch/arm/acpi/domain_build.c | 2 +-
>   xen/arch/arm/gic-v2.c            | 8 ++++----
>   xen/arch/arm/gic-v3-its.c        | 2 +-
>   xen/arch/arm/gic-v3.c            | 8 ++++----
>   4 files changed, 10 insertions(+), 10 deletions(-)
>
> diff --git a/xen/arch/arm/acpi/domain_build.c b/xen/arch/arm/acpi/domain_build.c
> index 5a117001ef11..249d899c3337 100644
> --- a/xen/arch/arm/acpi/domain_build.c
> +++ b/xen/arch/arm/acpi/domain_build.c
> @@ -48,7 +48,7 @@ static int __init acpi_iomem_deny_access(struct domain *d)
>       {
>           mfn = spcr->serial_port.address >> PAGE_SHIFT;
>           /* Deny MMIO access for UART */
> -        rc = iomem_deny_access(d, mfn, mfn + 1);
> +        rc = iomem_deny_access(d, mfn, mfn);
>           if ( rc )
>               return rc;
>       }
> diff --git a/xen/arch/arm/gic-v2.c b/xen/arch/arm/gic-v2.c
> index b23e72a3d05d..014f9559673b 100644
> --- a/xen/arch/arm/gic-v2.c
> +++ b/xen/arch/arm/gic-v2.c
> @@ -1079,23 +1079,23 @@ static int gicv2_iomem_deny_access(struct domain *d)
>       unsigned long mfn, nr;
>   
>       mfn = dbase >> PAGE_SHIFT;
> -    rc = iomem_deny_access(d, mfn, mfn + 1);
> +    rc = iomem_deny_access(d, mfn, mfn);
>       if ( rc )
>           return rc;
>   
>       mfn = hbase >> PAGE_SHIFT;
> -    rc = iomem_deny_access(d, mfn, mfn + 1);
> +    rc = iomem_deny_access(d, mfn, mfn);
>       if ( rc )
>           return rc;
>   
>       mfn = cbase >> PAGE_SHIFT;
>       nr = DIV_ROUND_UP(csize, PAGE_SIZE);
> -    rc = iomem_deny_access(d, mfn, mfn + nr);
> +    rc = iomem_deny_access(d, mfn, mfn + nr - 1);
>       if ( rc )
>           return rc;
>   
>       mfn = vbase >> PAGE_SHIFT;
> -    return iomem_deny_access(d, mfn, mfn + nr);
> +    return iomem_deny_access(d, mfn, mfn + nr - 1);
>   }
>   
>   #ifdef CONFIG_ACPI
> diff --git a/xen/arch/arm/gic-v3-its.c b/xen/arch/arm/gic-v3-its.c
> index 9ba068c46fcb..e38aa8711744 100644
> --- a/xen/arch/arm/gic-v3-its.c
> +++ b/xen/arch/arm/gic-v3-its.c
> @@ -1009,7 +1009,7 @@ int gicv3_its_deny_access(struct domain *d)
>       {
>           mfn = paddr_to_pfn(its_data->addr);
>           nr = PFN_UP(its_data->size);
> -        rc = iomem_deny_access(d, mfn, mfn + nr);
> +        rc = iomem_deny_access(d, mfn, mfn + nr - 1);
>           if ( rc )
>           {
>               printk("iomem_deny_access failed for %lx:%lx \r\n", mfn, nr);
> diff --git a/xen/arch/arm/gic-v3.c b/xen/arch/arm/gic-v3.c
> index bc07f97c16ab..b3e104ea4ad0 100644
> --- a/xen/arch/arm/gic-v3.c
> +++ b/xen/arch/arm/gic-v3.c
> @@ -1602,7 +1602,7 @@ static int gicv3_iomem_deny_access(struct domain *d)
>   
>       mfn = dbase >> PAGE_SHIFT;
>       nr = PFN_UP(SZ_64K);
> -    rc = iomem_deny_access(d, mfn, mfn + nr);
> +    rc = iomem_deny_access(d, mfn, mfn + nr - 1);
>       if ( rc )
>           return rc;
>   
> @@ -1614,7 +1614,7 @@ static int gicv3_iomem_deny_access(struct domain *d)
>       {
>           mfn = gicv3.rdist_regions[i].base >> PAGE_SHIFT;
>           nr = PFN_UP(gicv3.rdist_regions[i].size);
> -        rc = iomem_deny_access(d, mfn, mfn + nr);
> +        rc = iomem_deny_access(d, mfn, mfn + nr - 1);
>           if ( rc )
>               return rc;
>       }
> @@ -1623,7 +1623,7 @@ static int gicv3_iomem_deny_access(struct domain *d)
>       {
>           mfn = cbase >> PAGE_SHIFT;
>           nr = PFN_UP(csize);
> -        rc = iomem_deny_access(d, mfn, mfn + nr);
> +        rc = iomem_deny_access(d, mfn, mfn + nr - 1);
>           if ( rc )
>               return rc;
>       }
> @@ -1632,7 +1632,7 @@ static int gicv3_iomem_deny_access(struct domain *d)
>       {
>           mfn = vbase >> PAGE_SHIFT;
>           nr = PFN_UP(csize);
> -        return iomem_deny_access(d, mfn, mfn + nr);
> +        return iomem_deny_access(d, mfn, mfn + nr - 1);
>       }
>   
>       return 0;


From xen-devel-bounces@lists.xenproject.org Thu Apr 09 11:55:14 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 09 Apr 2026 11:55:14 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1277168.1562423 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wAnyW-0006aj-W6; Thu, 09 Apr 2026 11:55:08 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1277168.1562423; Thu, 09 Apr 2026 11:55: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 1wAnyW-0006ac-TE; Thu, 09 Apr 2026 11:55:08 +0000
Received: by outflank-mailman (input) for mailman id 1277168;
 Thu, 09 Apr 2026 11:55:07 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92) id 1wAnyV-0006aW-2P
 for xen-devel@lists.xenproject.org; Thu, 09 Apr 2026 11:55:07 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wAnyU-001WDD-8m
 for xen-devel@lists.xenproject.org; Thu, 09 Apr 2026 13:55:06 +0200
Received: from [10.42.69.5] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <oleksii.kurochko@gmail.com>)
 id 69d7938f-5cb7-0a2a0a5109dd-0a2a45058a62-32
 for <xen-devel@lists.xenproject.org>; Thu, 09 Apr 2026 13:55:06 +0200
Received: from [209.85.208.48] (helo=mail-ed1-f48.google.com)
 by tlsNG-c201ff.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.0)
 (envelope-from <oleksii.kurochko@gmail.com>)
 id 69d7939a-3760-0a2a45050019-d155d030b06c-3
 for <xen-devel@lists.xenproject.org>; Thu, 09 Apr 2026 13:55:06 +0200
Received: by mail-ed1-f48.google.com with SMTP id
 4fb4d7f45d1cf-66bb4d4fcb4so1568897a12.2
 for <xen-devel@lists.xenproject.org>; Thu, 09 Apr 2026 04:55:06 -0700 (PDT)
Received: from [192.168.1.6] (user-109-243-69-121.play-internet.pl.
 [109.243.69.121]) by smtp.gmail.com with ESMTPSA id
 a640c23a62f3a-b9c3c99f80esm728865966b.18.2026.04.09.04.55.04
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Thu, 09 Apr 2026 04:55:05 -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=20251104 header.d=gmail.com header.i="@gmail.com" header.h="Content-Transfer-Encoding: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=20251104; t=1775735706; x=1776340506; darn=lists.xenproject.org;
        h=content-transfer-encoding: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;
        bh=TCzgFErE1QM6hPZ6HDtdwDg1YVsG3PZj60BHPPJ3iv4=;
        b=b1DfshcDxRWyrpNJjLuq1kpqYtVHX5dr9KmPMxANwBXyWERyY3y2jcVcok/uAWPFjW
         lXkudA7TrMdMXYo3Trhqck8uifp0FgWdKlMiX+ZL/HZlu2mz/BHL7u6ZVmKyMuJid5UN
         rICKPn47V6m1Q2mjrZrlio82LSIeeeqA5GeNdBSr/YoneSAUFQkRgkMIlU/vkdrJ82pq
         wSum6bvs4kABKi0uqX6EszPqsTTknnJYj1ATTNdqKPihULjSob+5gnAP3C4q/GN/juLN
         +E2KaT4aH42oYCQEsDTV5P5T89U5yottivVWq173C5bH9bJl2/H0eR9rrTSb/RJFnAT9
         3leA==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20251104; t=1775735706; x=1776340506;
        h=content-transfer-encoding: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;
        bh=TCzgFErE1QM6hPZ6HDtdwDg1YVsG3PZj60BHPPJ3iv4=;
        b=TsRpAJZd9XYHf897xx6GVTx3YMkPkghaYw9ysQWGiikNcfjAOBKof7++GwMlAJOluD
         pMV+bR+DXVFO5rZqMqwWqWSDpPZmUu6joH8LpFo2qbQb5TRqXy3ldVwN1X5UjllMSd9D
         +x8+OtGvvRidrFSih9Pxh9p62P9l6As+7rC6mFMLnK6F0aAaiuy/hl6igpfKV7AIaohY
         E/5AtRDocD56lkurUmyOy5LwwPlDbucvCbJVZU8REigPMN0v4/E4N8guhkrZMfuUKT3U
         92hhVuGLwqGC7M4M834MjXdenDIQtxo/i6mEmkwd21xiCmvV39FRMizUVp7eMb49OyeG
         HRyw==
X-Forwarded-Encrypted: i=1; AJvYcCU0QTDYXY8f4FvpwKL4E1JgH8r/Q1/p1nR1HF5sEPxl4e4nHHTLSTNwsTmCG2ogwRaLOMa0g7hkf6Y=@lists.xenproject.org
X-Gm-Message-State: AOJu0YxHPgEH6r1TGWPORLM8hEfGmsgWOiJ4JgsjV6Db3+Uc/tVrszDB
	Cceldv+C2+PYvR7P5TcMDOUfuXV6S71YPSIHIP1dLmteBInzyJpqK5Ch
X-Gm-Gg: AeBDieu0sIesvBI1gMgqAL77AzDkHPcJZyoINUAnFr11ysfYcmBJOKnV5XEJmxtAEdU
	3zl3v6dLVSc1c2fQgcnnmpJ1RhYunG4nPLQRPo3Ej2KtkrQlmtTr34wThFCqzSWy6fCX92DUnxZ
	inFdps5+kdinIZXatFH4Hw8GoOsNIsrnEEJtzqgYu6cMYvrxojnv6l88dPhVqeN3HZgGUsTIL1i
	F3cLxfOlnsrw5lV7uD2aKHTkTU0XpMtGGHW3xy/ImB3RMOX7qRdZ5FqiFJYpNL2w2BDH7Mwjmto
	U+KGhcXYKAKTzJ8eEwewg77GqRx99ynvi5N+TOIThk7/Vnx/eg7Znhi9kjRyPa/KGodXb5I4pPI
	edUO9AuDZA60D7sKr87fdpAzwHMEYW4rmM9svZUZ0xin1XZ8vga9U9ioAz09TYK1tqSIwhztXwt
	eZexQ+19L//yXw8rsYahO+wWZEfBNi98DUPxkqVdwRQT4hXw+msTLq+l52mY+z67KycVimZqj4G
	zs=
X-Received: by 2002:a17:907:3f90:b0:b9c:2a5f:41c4 with SMTP id a640c23a62f3a-b9c679e1f54mr1303377266b.40.1775735705419;
        Thu, 09 Apr 2026 04:55:05 -0700 (PDT)
Message-ID: <561a1f68-4c5f-447f-99f7-29465fe1bd5c@gmail.com>
Date: Thu, 9 Apr 2026 13:55:03 +0200
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH v1 03/27] xen/riscv: implement prerequisites for
 domain_create()
To: Jan Beulich <jbeulich@suse.com>
Cc: Romain Caritey <Romain.Caritey@microchip.com>,
 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.pau@citrix.com>,
 Stefano Stabellini <sstabellini@kernel.org>, xen-devel@lists.xenproject.org
References: <cover.1773157782.git.oleksii.kurochko@gmail.com>
 <ccd6d21b224b478c88ca5f2fdd2d1dd507671510.1773157782.git.oleksii.kurochko@gmail.com>
 <2cec4690-b23e-4057-841f-efca4348af5c@suse.com>
Content-Language: en-US
From: Oleksii Kurochko <oleksii.kurochko@gmail.com>
In-Reply-To: <2cec4690-b23e-4057-841f-efca4348af5c@suse.com>
Content-Type: text/plain; charset=UTF-8; format=flowed
Content-Transfer-Encoding: 7bit
X-purgate-ID: tlsNG-c201ff/1775735706-33F2E96F-18B976FB/10/73395122804
X-purgate-type: spam
X-purgate-size: 3519



On 4/1/26 2:57 PM, Jan Beulich wrote:
> On 10.03.2026 18:08, Oleksii Kurochko wrote:
>> arch_domain_create() and arch_sanitise_domain_config() are prerequisites for
>> domain_create().
>>
>> arch_sanitise_domain_config() currently returns 0, as there is no specific
>> work required at this stage.
>>
>> arch_domain_create() performs basic initialization, such as setting up the P2M
>> and initializing the domain's virtual timer.
> 
> Does it? I can spot only the former; instead there is ...

Stale comment, I will drop that as vtimer init is called per vCPU.

> 
>> --- a/xen/arch/riscv/domain.c
>> +++ b/xen/arch/riscv/domain.c
>> @@ -288,6 +288,33 @@ void sync_vcpu_execstate(struct vcpu *v)
>>       /* Nothing to do -- no lazy switching */
>>   }
>>   
>> +int arch_sanitise_domain_config(struct xen_domctl_createdomain *config)
>> +{
>> +    return 0;
>> +}
>> +
>> +int arch_domain_create(struct domain *d,
>> +                       struct xen_domctl_createdomain *config,
>> +                       unsigned int flags)
>> +{
>> +    int rc = 0;
>> +
>> +    if ( is_idle_domain(d) )
>> +        return 0;
>> +
>> +    if ( (rc = p2m_init(d)) != 0)
>> +        goto fail;
>> +
>> +    d->arch.next_phandle = GUEST_PHANDLE_LAST + 1;
> 
> ... this, which I can't make any sense of. I can't find matching Arm code
> either, which might otherwise have helped.

There are some cases when we are creating a node for guest DTB we should 
know which phandles aren't busy (to avoid the case when some nodes have 
the same phandle) so to track that this struct field was introduced.

I will check Arm code as I expect that phandle should be generated 
somehow on their side too.

> 
>> +    return rc;
>> +
>> + fail:
>> +    d->is_dying = DOMDYING_dead;
>> +    arch_domain_destroy(d);
> 
> (At least) for the use here, that other function would better also move out
> of stubs.c at the same time (and no longer have unconditional BUG_ON() in it).
> 
>> --- a/xen/arch/riscv/stubs.c
>> +++ b/xen/arch/riscv/stubs.c
>> @@ -101,14 +101,7 @@ void dump_pageframe_info(struct domain *d)
>>       BUG_ON("unimplemented");
>>   }
>>   
>> -int arch_sanitise_domain_config(struct xen_domctl_createdomain *config)
>> -{
>> -    BUG_ON("unimplemented");
>> -}
>> -
>> -int arch_domain_create(struct domain *d,
>> -                       struct xen_domctl_createdomain *config,
>> -                       unsigned int flags)
>> +void vcpu_switch_to_aarch64_mode(struct vcpu *v)
> 
> What is this? Surely nothing with this name should exist under riscv/.

Good question. I don't know how it appeared here. I will drop it.

> 
>> --- 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_LAST GUEST_PHANDLE_IOMMU
> 
> This, to me, looks like a questionable addition to the public interface.
> Yet I'm not a DT person, so I may simply be missing why something like
> this might be wanted (and how stable it then would be, long term).

I will double check if I have to generate phandle for the node I'm 
creating for guest DTB. It looks like I am confused something and it 
could be just dropped.

Considering that only RISC-V needs that at the moment (if need it all?) 
I will put somewhere in riscv/ this definition.

Thanks.

~ Oleksii.


From xen-devel-bounces@lists.xenproject.org Thu Apr 09 11:57:15 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 09 Apr 2026 11:57:15 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1277177.1562431 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wAo0Y-00076b-Ab; Thu, 09 Apr 2026 11:57:14 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1277177.1562431; Thu, 09 Apr 2026 11:57: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 1wAo0Y-00076U-81; Thu, 09 Apr 2026 11:57:14 +0000
Received: by outflank-mailman (input) for mailman id 1277177;
 Thu, 09 Apr 2026 11:57:12 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <ayan.kumar.halder@amd.com>) id 1wAo0W-000764-Jz
 for xen-devel@lists.xenproject.org; Thu, 09 Apr 2026 11:57:12 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wAo0V-001WaA-W5
 for xen-devel@lists.xenproject.org; Thu, 09 Apr 2026 13:57:12 +0200
Received: from [10.42.69.5] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <ayan.kumar.halder@amd.com>)
 id 69d79413-e002-0a2a0a5209dd-0a2a45058c5a-44
 for <xen-devel@lists.xenproject.org>; Thu, 09 Apr 2026 13:57:11 +0200
Received: from [40.93.196.30]
 (helo=SA9PR02CU001.outbound.protection.outlook.com)
 by tlsNG-c201ff.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.0)
 (envelope-from <ayan.kumar.halder@amd.com>)
 id 69d79415-3760-0a2a45050019-285dc41e0efd-3
 for <xen-devel@lists.xenproject.org>; Thu, 09 Apr 2026 13:57:11 +0200
Received: from MN2PR02CA0021.namprd02.prod.outlook.com (2603:10b6:208:fc::34)
 by DS0PR12MB7629.namprd12.prod.outlook.com (2603:10b6:8:13e::13) with
 Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9769.17; Thu, 9 Apr
 2026 11:57:05 +0000
Received: from BL6PEPF00020E61.namprd04.prod.outlook.com
 (2603:10b6:208:fc:cafe::a9) by MN2PR02CA0021.outlook.office365.com
 (2603:10b6:208:fc::34) with Microsoft SMTP Server (version=TLS1_3,
 cipher=TLS_AES_256_GCM_SHA384) id 15.20.9769.41 via Frontend Transport; Thu,
 9 Apr 2026 11:57:01 +0000
Received: from satlexmb08.amd.com (165.204.84.17) by
 BL6PEPF00020E61.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.20.9769.17 via Frontend Transport; Thu, 9 Apr 2026 11:57:05 +0000
Received: from SATLEXMB04.amd.com (10.181.40.145) by satlexmb08.amd.com
 (10.181.42.217) with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.2.2562.17; Thu, 9 Apr
 2026 06:57:03 -0500
Received: from satlexmb08.amd.com (10.181.42.217) by SATLEXMB04.amd.com
 (10.181.40.145) with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2507.39; Thu, 9 Apr
 2026 06:57:03 -0500
Received: from [10.71.193.38] (10.180.168.240) by satlexmb08.amd.com
 (10.181.42.217) with Microsoft SMTP Server id 15.2.2562.17 via Frontend
 Transport; Thu, 9 Apr 2026 06:57:02 -0500
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@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=Ao8VUwdyLmKqzzbopv6Sdi8QfGdlabxeDXx2ZsnXoBGJcpwmHG8ehuVs5BaDpmO88wkHjVpRAr6sDIOoIbl8LZO8PWQxSTmA4Up62lKI8s14f9M47o/ePu0lxxHwuzKlLlkQsOOZlr5V4OwZRqlVjcsXRBNgO6VLEs9DA4VOe0itry8Y8B07yU3LD95KlPxT7QoSktbiQcjqyHJD+lzzpqfTDdOQyQ1x2U7x8/56wD6eIhOktvhPFBvIj21y5EaJvaXKNj7W+WvT2ReAbwGEfrsyQmiuH5JtgQZ9d0gRsLJ1RnR+cCKPPlEe6Ja7cu9UF1HDZBU6Xe74gUbXdTZehg==
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com;
 s=arcselector10001;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1;
 bh=PXExszMZ67RnxxH0ygAn7t7lzcVur9vBZUkHNJOVmnE=;
 b=xSJ9hfATKtEfokBJOXy0crMm8cWKQ8Mv8KszP9K51pzX/0wRyCm0bzYiJ6gkMcQv66WcwelI9OAjEbk4V7v1huuUuVjp6km388QUNCgOhQ0jnl3vxnkgRfwgjIKjhuuWW0eUk9SKHKXQGHjS/Yta92bHKMAI+/6m9ebSwqaHAwfaV4W0pUDHZdB1r2yNF6w6jdPBWQAG/t7bfj1WRXaqTFkh7Lven8Oa8ltflU+V5J9Bd9/hBLV9lUKaXWhjtVl90c+o6b6KJ0/7NAbNqQ6PWE7sIMtHTBK6clyYe2e1mz0sqzOw1pjk7F1MXczHNt1+BoGnNAMHZ+u+7frN05WrEg==
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=PXExszMZ67RnxxH0ygAn7t7lzcVur9vBZUkHNJOVmnE=;
 b=kz44BtJivWzCz1nA30j4iD8tq32oEkJp9qzaOmEnNWQTDWPTEb5wJsxs8AkkDp/9bZcFWClPSerwXAGKKrJBBiVKl7Z9t8h1CbHf7nDjt3vnr06qsw4UbDkXArKscDHt9UOwNpHb7ZgQlPivTwv666ZiJmoP5ceRFBVvNRWNxK4=
X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 165.204.84.17)
 smtp.mailfrom=amd.com; dkim=none (message not signed)
 header.d=none;dmarc=pass action=none header.from=amd.com;
Received-SPF: Pass (protection.outlook.com: domain of amd.com designates
 165.204.84.17 as permitted sender) receiver=protection.outlook.com;
 client-ip=165.204.84.17; helo=satlexmb08.amd.com; pr=C
Message-ID: <83152d2d-aa85-4a06-a73d-25c1d2b06fa8@amd.com>
Date: Thu, 9 Apr 2026 12:57:01 +0100
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH 2/3] xen/common: llc-coloring: Fix off-by-one in
 parse_color_config()
To: Michal Orzel <michal.orzel@amd.com>, <xen-devel@lists.xenproject.org>
CC: Andrew Cooper <andrew.cooper3@citrix.com>, Anthony PERARD
	<anthony.perard@vates.tech>, 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>
References: <20260409113934.197619-1-michal.orzel@amd.com>
 <20260409113934.197619-3-michal.orzel@amd.com>
Content-Language: en-US
From: "Halder, Ayan Kumar" <ayankuma@amd.com>
In-Reply-To: <20260409113934.197619-3-michal.orzel@amd.com>
Content-Type: text/plain; charset="UTF-8"; format=flowed
Content-Transfer-Encoding: 7bit
Received-SPF: None (SATLEXMB04.amd.com: ayankuma@amd.com does not designate
 permitted sender hosts)
X-EOPAttributedMessage: 0
X-MS-PublicTrafficType: Email
X-MS-TrafficTypeDiagnostic: BL6PEPF00020E61:EE_|DS0PR12MB7629:EE_
X-MS-Office365-Filtering-Correlation-Id: 6865b28f-f85a-490a-08ca-08de962f1ea6
X-MS-Exchange-SenderADCheck: 1
X-MS-Exchange-AntiSpam-Relay: 0
X-Microsoft-Antispam:
	BCL:0;ARA:13230040|82310400026|1800799024|376014|36860700016|18002099003|56012099003|22082099003;
X-Microsoft-Antispam-Message-Info:
	ZRE1aMOef2OKaRV+a8IHpQBN8stUcVCj8MrkgJwmcHhOGCzxXrXI/ehroqs1eRUupwxcDUaNaro5YMN0vau1VsrGUx1EFeHMcPn73CRq9+ELWC/JW2gYb8ZkDXnDc0WxvMs2jqAENSQG/5fr6pjmnCR/ltc5+Dar/M8JcmxqV7bTrdeEA0ahw1g4a+Zvq6lC35S3tGF0Qxr/Wry53tsYGmw3o5ca3//gcl9SBYYrooRD8cF2kPwIdnnG5hlUQFPMt+TIxr7lFZXL9KZAwvqG4Pam0jUtQqvZT5B8oCohonDJqOTeeghIp4ZuTR2vTIXDYVhJ95/RLF0BlOo9s9w03KShobqk0gvNeUXSeeDnXibNky3jmStpNFZoKosB7duNdX0rlKPk0REq7UIyR6XsstL2aht7OFnU8LZo5Cn6x1dAo4tKF/HjUFaN1JP5a/wN2PPr25WgSLWmV+VUOwEKke+dWYd07uXwwq1tuQUTU8WeNEwE6jJB2M5ERHOrP0N5haV7vndNi9tiVj2OGFFuXk4MvAqjC50V5VUi6rmDQV70+Pxtd3ZXusxr10vsaaOaqH+A0LcMWAZznPwHF9Sn+8LpjoPqwrSgSBKdhAkSPt9uroK14aR2/H12QMoYOYIO7kuQJUQnFoTdzoCVahwYyHMQhLdEJ1AzNRNdDMxO+HaiZEbpwIpoG8klrARVFDfTfG0ffyKIze6w11S7RGnGYznxbcnLnI93dHYxBPQj2uqCI2CwkCeyvI306TGShCv6iueOMn+GqE9BMPxyYt5ylw==
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)(1800799024)(376014)(36860700016)(18002099003)(56012099003)(22082099003);DIR:OUT;SFP:1101;
X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1
X-MS-Exchange-AntiSpam-MessageData-0:
	/JllEm92xPiNdKyPBBP4w3yj+vkfScHjVj9e85sonM/Vpc+Bsth34UHn/amlJPBN3GnNsRtBYfdX2iWpTiMcYY3th4nhX74dP6ik5bgqNcP1Nfx80Di+30BXvaQmDlakEPgF0dY1kRhVt51S4IX6lXq1iprjf53vJRcKPZmDtr71Sx6bhfuSAPxS2XZU9irb5yC7U/5AFWiqu2AjhMwGcfIU0pfBcNEcbPcBL+I10wnezisNwUPSVeRq75aXJfjCblDycsxFtZKyp+yYjKq3OEcNbKy8/LAql1CorCBeqWjjmNx3S0ZhSTWZwk9mDiRvC8i9FxvOf/FAQ3LIpNJ9AF35PQgY8tnKwHKOzcxf2WrF+81ajsM9D5uFvF50GAyKr0mQzh8i5LUd7X7Pa4/Ze2EurD+mbC1SpkwS2+AGhRpkkGMNtFrp6TrHAt4hAJT3
X-OriginatorOrg: amd.com
X-MS-Exchange-CrossTenant-OriginalArrivalTime: 09 Apr 2026 11:57:05.4617
 (UTC)
X-MS-Exchange-CrossTenant-Network-Message-Id: 6865b28f-f85a-490a-08ca-08de962f1ea6
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:
	BL6PEPF00020E61.namprd04.prod.outlook.com
X-MS-Exchange-CrossTenant-AuthAs: Anonymous
X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem
X-MS-Exchange-Transport-CrossTenantHeadersStamped: DS0PR12MB7629
X-purgate-ID: tlsNG-c201ff/1775735831-2312596F-C0C8FA93/0/0
X-purgate-type: clean
X-purgate-size: 462


On 09/04/2026 12:39, Michal Orzel wrote:
> The check uses >= to compare the total number of colors against
> max_num_colors (which is ARRAY_SIZE of the colors array).  This
> incorrectly rejects input that would exactly fill the array.
This seems related to BVA as well.
>
> For example, with NR_LLC_COLORS=16, specifying 1 color for Xen and 15
> for dom0 would fail.

Why does it fail ? Is it because the max number of colors can be 15.

- Ayan



From xen-devel-bounces@lists.xenproject.org Thu Apr 09 12:03:32 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 09 Apr 2026 12:03:32 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1277215.1562441 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wAo6b-0000tV-Aj; Thu, 09 Apr 2026 12:03:29 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1277215.1562441; Thu, 09 Apr 2026 12:03: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 1wAo6b-0000tO-7k; Thu, 09 Apr 2026 12:03:29 +0000
Received: by outflank-mailman (input) for mailman id 1277215;
 Thu, 09 Apr 2026 12:03:28 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <jbeulich@suse.com>) id 1wAo6a-0000tI-Hr
 for xen-devel@lists.xenproject.org; Thu, 09 Apr 2026 12:03:28 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wAo6Y-0097TR-Bu
 for xen-devel@lists.xenproject.org; Thu, 09 Apr 2026 14:03:27 +0200
Received: from [10.42.69.12] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <jbeulich@suse.com>)
 id 69d7958f-5cb7-0a2a0a5109dd-0a2a450ce332-4
 for <xen-devel@lists.xenproject.org>; Thu, 09 Apr 2026 14:03:27 +0200
Received: from [209.85.128.53] (helo=mail-wm1-f53.google.com)
 by tlsNG-d25034.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.0)
 (envelope-from <jbeulich@suse.com>)
 id 69d7958f-f40c-0a2a450c0019-d1558035a944-3
 for <xen-devel@lists.xenproject.org>; Thu, 09 Apr 2026 14:03:27 +0200
Received: by mail-wm1-f53.google.com with SMTP id
 5b1f17b1804b1-488b3f8fa2bso10174865e9.1
 for <xen-devel@lists.xenproject.org>; Thu, 09 Apr 2026 05:03:27 -0700 (PDT)
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-488cd0cbc57sm22873545e9.5.2026.04.09.05.03.26
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Thu, 09 Apr 2026 05:03:26 -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=google header.d=suse.com header.i="@suse.com" header.h="Content-Transfer-Encoding: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=1775736207; x=1776341007; darn=lists.xenproject.org;
        h=content-transfer-encoding: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;
        bh=HdHbUNE7bkDJH0xXe3FzCBUEZ0vzrKS413I9gU7IFxo=;
        b=OkbE7dhC7b3af51n541dXs0tX5HqXlJYKMMmExKyplbs2rpFkRJ5Yqs/eC2HOMgsBl
         ccUHOB+8ol2iqJAvnzigromtCbb9hgWxjA3T375v2iYNNNWfG+7nS4mxFVzXWKpzW288
         uoA6WViGI94/NJ5gAdBCJ3zVfDmhoGsYNomVF/tMF1i5lwvVTWCDq4ETRoQMAhj5lqWn
         btEHd/28l63UpeC6DlUlFRNjZV4kHq2v9JQ6yPg+oeqCbuqYR+u688YuKNCkJZ+T88fs
         3UyY8hPHrCdEZ2x/j545b/TGlOWr1ZgaaBsXHa9/r4BKrzONgwDa/MYlaRUUeepg7aAq
         VbhQ==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20251104; t=1775736207; x=1776341007;
        h=content-transfer-encoding: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;
        bh=HdHbUNE7bkDJH0xXe3FzCBUEZ0vzrKS413I9gU7IFxo=;
        b=ZR8In66+eJv1v/3QDUeo12T0HF+7jBzNM0akYEINuDh4Lnv3VfqfUkXgH1CHomkW4h
         h1JaAphBcrmhHHlLL5tDALc2MFkbFTgmSZkfPDYleTYV+GZU3x3WS8m0MO+JgPfVO+Y2
         z1C0VLuBmYBB8+0I/06NsdLovEdKj/K1ah7lVQ/2qABh7alOmosWqHQc+man/WZbU8Bs
         6CSJMSXWlHYimKB43op40DvhqtPUtX66Iy0M9UxzOfmGTpzP5IqZMSA7ziMNUDklC21N
         Ac2ftLYD6VHpDXl+0brNsm5edzMtO2ehEDdL3sxNZCDYII2+lw6o007E4TVA9aTOdwAD
         1mXA==
X-Forwarded-Encrypted: i=1; AJvYcCXvS+S3xdIIGh5viRwzUtFSdjzeLAtP2zqcytczGvPM0ygo+QRru/itCA5vb2HUZZG1lWhZd0idRAY=@lists.xenproject.org
X-Gm-Message-State: AOJu0Yw8NoCHyOULRgihKh0iloBL6nb87kvFjtLG4u0M7QIIM9ktN2gT
	I+o85+84jeouFsJgYc/il/HVE3Ixg1x2l2MRV0epU0Go5oJcVTzEd7v8Hn6HFrAJnQ==
X-Gm-Gg: AeBDieshItTIGYnmPpXkhcQ3H5jXGTR4EBavGpd7AhGtuzEAy+f/hK6F4EnEaIFe5Lq
	UGwTq6juFnlDre7UPNkR2p80zBeCn5Y7XObQfjuhZ5BIeznGEDAVhLUzy//Ddcxdx2IHmGIP7Je
	YmyrLSwwsPW878sj2nrGU2V5oB7oZL3Zr25ytHTKSq/Ath1a+SyYDnDEJYWivbh1RYZsPcZPSMV
	XFE2m4AJLZMGH1ro55SsnkgNV0n7AxTqXYaymah1YOPCMZCXDRFn9jJ+KfGV/DsujzayefN/jvh
	/7s29Jf93o5WxPH6VGA58JLmi7U4Q4uhdOwsfU0iS9fTNaMjruFA4YbbVpAPTbcG6lnrWKUUvqw
	EvJhs8tdgXe36PVtjMgjFz2y0PGn5HcCx5LPd7M+xC31NjtJAx+9ZzNvjYUtAc4P+7uOhdqtNtF
	QaDClNI3u4RnvXgnFPJz52nPvais8/YTbyYZ26azWILXxzHTzpTP3cLty2Peb4A0HtsMnhtvKNK
	M8OVLvt/ZZQgJE=
X-Received: by 2002:a05:600c:4e89:b0:485:3428:774c with SMTP id 5b1f17b1804b1-488cd5282c4mr40185695e9.4.1775736207032;
        Thu, 09 Apr 2026 05:03:27 -0700 (PDT)
Message-ID: <315eb80b-8467-40c1-977f-441b86331e96@suse.com>
Date: Thu, 9 Apr 2026 14:03:24 +0200
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH v2] x86: Avoid using .byte for instructions where safe to
 do so
To: Andrew Cooper <andrew.cooper3@citrix.com>
Cc: =?UTF-8?Q?Roger_Pau_Monn=C3=A9?= <roger.pau@citrix.com>,
 Teddy Astie <teddy.astie@vates.tech>,
 Xen-devel <xen-devel@lists.xenproject.org>
References: <20260409114151.179408-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: <20260409114151.179408-1-andrew.cooper3@citrix.com>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 7bit
X-purgate-ID: tlsNG-d25034/1775736207-FE350A3D-294357A1/0/0
X-purgate-type: clean
X-purgate-size: 314

On 09.04.2026 13:41, Andrew Cooper wrote:
> The new toolchain baseline knows XGETBV, VPXOR and VPOR.
> 
> For the other cases using .byte, annotate the toolchain minima.
> 
> 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 Thu Apr 09 12:13:25 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 09 Apr 2026 12:13:25 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1277224.1562451 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wAoG7-0003Jy-6w; Thu, 09 Apr 2026 12:13:19 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1277224.1562451; Thu, 09 Apr 2026 12:13: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 1wAoG7-0003Jr-34; Thu, 09 Apr 2026 12:13:19 +0000
Received: by outflank-mailman (input) for mailman id 1277224;
 Thu, 09 Apr 2026 12:13:17 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <ayan.kumar.halder@amd.com>) id 1wAoG5-0003Jl-F8
 for xen-devel@lists.xenproject.org; Thu, 09 Apr 2026 12:13:17 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wAoG4-00B7ra-Cq
 for xen-devel@lists.xenproject.org; Thu, 09 Apr 2026 14:13:16 +0200
Received: from [10.42.69.12] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <ayan.kumar.halder@amd.com>)
 id 69d797d5-2eae-0a2a0a5409dd-0a2a450ccb42-42
 for <xen-devel@lists.xenproject.org>; Thu, 09 Apr 2026 14:13:15 +0200
Received: from [40.93.195.46]
 (helo=SN4PR2101CU001.outbound.protection.outlook.com)
 by tlsNG-d25034.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.0)
 (envelope-from <ayan.kumar.halder@amd.com>)
 id 69d797d9-f40c-0a2a450c0019-285dc32e0c5d-3
 for <xen-devel@lists.xenproject.org>; Thu, 09 Apr 2026 14:13:14 +0200
Received: from BL1PR13CA0168.namprd13.prod.outlook.com (2603:10b6:208:2bd::23)
 by MN0PR12MB5716.namprd12.prod.outlook.com (2603:10b6:208:373::14)
 with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9769.18; Thu, 9 Apr
 2026 12:13:08 +0000
Received: from BL02EPF0001A107.namprd05.prod.outlook.com
 (2603:10b6:208:2bd:cafe::3f) by BL1PR13CA0168.outlook.office365.com
 (2603:10b6:208:2bd::23) with Microsoft SMTP Server (version=TLS1_3,
 cipher=TLS_AES_256_GCM_SHA384) id 15.20.9769.41 via Frontend Transport; Thu,
 9 Apr 2026 12:13:08 +0000
Received: from satlexmb08.amd.com (165.204.84.17) by
 BL02EPF0001A107.mail.protection.outlook.com (10.167.241.136) with Microsoft
 SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id
 15.20.9769.17 via Frontend Transport; Thu, 9 Apr 2026 12:13:07 +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.17; Thu, 9 Apr
 2026 07:13:06 -0500
Received: from [10.71.193.38] (10.180.168.240) by satlexmb07.amd.com
 (10.181.42.216) with Microsoft SMTP Server id 15.2.2562.17 via Frontend
 Transport; Thu, 9 Apr 2026 07:13:05 -0500
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@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=r0gF3TNVfW6P4Fdu4q8jNxyGy45UlccT4DisTReMKT9J5QaHMUj4ieBckwm2gnSJKqW0KWmn6jo5Vy1pWJdA1XxDOM8HF6HzWX8zn1p5w3Nd6rks9U3CyQDG+BqNEeFZmHjHCoucQeERPlHXrzJEDscIOkMtqjPLVbyi8zR8iseQS3zE6D2uPUrP8oT+ygxJqGeic+mZ5tBN5tQlT3M9aK576hZ2/5ksizfGkXUK1cAcBn0cRHOdcUcmCkIBb+EQhN1V/ic75WUpKDn2BJvqrTh6/rQw2f5AoxHkZdluFM6FnGGkhCe2jRY7/LtIXQkwmVRDksQBp/OVaw+4Z4Jepw==
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com;
 s=arcselector10001;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1;
 bh=nG+/s5/VEei2aLts/Afbzd0JRtoLsRnmjhJY3Iuq7bU=;
 b=vCWtUSlmit+zdEAPeR3V6l6vqyiPha9EsXwuExT9PqYYoMCZnikdqyCftyXqzJkxOQ3byMAlsgMYRjhjTJ3XcaJBrNlF4MDT3SXOYY2gF+bZHg+Fj5M9EUnU9ygJa7k175Pt8LpV2ofhq+I2VtLrP1geRiCBo36m/tpHImrdzV2F5TGXpRL++O9k9fjca5snwxbsy48kk/QVOP2KIOtegE750Yk7/gYKZiexEdHaat7o7YPqp8dF3sVMA6MTXJT7123hnFbKmGbjRUKJ//7bBJ2BYscs05GGxkG0/YhL/7rQ8sDCesUp4QeMJrLO//7h1OitL5v1Mq0wbHN8G/w7LQ==
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=nG+/s5/VEei2aLts/Afbzd0JRtoLsRnmjhJY3Iuq7bU=;
 b=DCXyTzxp1dbq1XjpLNyiEWH2NO87yStwQ/MCVdDo/FoCSda1wd5EI2+9eo8+dWYQesUNJl1LxDc58xb0N4m+pvhGBD+f/a+M1oluQ78t1gZnFFychlswbL3y/5dPGop5amRM16ZjrXz+Bp9FtwEMRQ4ei3R9GpzKHBuYfCK8yVY=
X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 165.204.84.17)
 smtp.mailfrom=amd.com; dkim=none (message not signed)
 header.d=none;dmarc=pass action=none header.from=amd.com;
Received-SPF: Pass (protection.outlook.com: domain of amd.com designates
 165.204.84.17 as permitted sender) receiver=protection.outlook.com;
 client-ip=165.204.84.17; helo=satlexmb08.amd.com; pr=C
Message-ID: <0fb39238-2588-4471-aea5-ec8e695adbc6@amd.com>
Date: Thu, 9 Apr 2026 13:12:59 +0100
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH 3/3] xen/arm: gic-v3: Use vsize instead of csize for
 virtual CPU interface
To: Michal Orzel <michal.orzel@amd.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>
References: <20260409113934.197619-1-michal.orzel@amd.com>
 <20260409113934.197619-4-michal.orzel@amd.com>
Content-Language: en-US
From: "Halder, Ayan Kumar" <ayankuma@amd.com>
In-Reply-To: <20260409113934.197619-4-michal.orzel@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: BL02EPF0001A107:EE_|MN0PR12MB5716:EE_
X-MS-Office365-Filtering-Correlation-Id: 454baa88-c36c-49d7-b7ed-08de96315c46
X-MS-Exchange-SenderADCheck: 1
X-MS-Exchange-AntiSpam-Relay: 0
X-Microsoft-Antispam:
	BCL:0;ARA:13230040|82310400026|1800799024|36860700016|376014|22082099003|56012099003|18002099003;
X-Microsoft-Antispam-Message-Info:
	4KluF5Lg8i7J8btX3ShWfJucLtnSAUDXLa8DfRgd7zxS9kO9hzxRdzFAKwGTS2i7KvyMKc22TKO73g/g2I/daRJG0IW+fqI+/bMFUxkDZaN+x7JVNsLQx4rT8zxtCL5B92f+HAapyy+/MU2hjSaEbpadlHVDIael824sWMSie9Luom9WpvgV7zEEjt/dsXRlZUPeHLnG8nTIypNbnVbJ+aGCB7muaLHX3JOQZ1PTvFTvwo6z6gUedwXf9M9wDUckkum56DgNUFBar8bOR8AGaakY2xPo0YAtv74u7/Oo4kgHjTut/kTFvwLMaKCeW6tyOgqVyY8SnG90DxJ5Qe/xK3NRdaYQjXJ0FP/l2GkQ9UCyNvWWz/bjSqUUnDTkUIXhT7C2WtqQSAOxEBuQeolfhsd2B3O8XXDAZg4M+HI9CTYelAaPlMeFFWm0IQtzIFM2w7R9/C0mWgcQ/39nBSKGPOldzWYm3IkXteELaZX6i369Et9gE4kwq2RlylwCXnchnyEPo7rQ3PkPf209AOs+8l65sSwKBy3y8d5YmoH5BBIulIBSiDiFBUWMom5tOooXK9ScaTSkbqEw5Ph+8vRDAwnhw14GdiqSper2y/Dk3D/i7fWdlT4b2MrLho37I55uhCxZjJGCPvMTThjQMEpcGu1vasTi0+jSpdQdlYWwFYVW5rj7wu0uSnhitLSU90E8Hk4/Nv1pgPE85FfB8a+RLI6ddE74IRmKgEOhz+7yVvt+s6CmqyeRK2jl8knaOjmABAwIOCG3d+/iHzRaLjrJ0A==
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)(1800799024)(36860700016)(376014)(22082099003)(56012099003)(18002099003);DIR:OUT;SFP:1101;
X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1
X-MS-Exchange-AntiSpam-MessageData-0:
	VSfhaKwkcDsKVe+UAKDEvCzlkwluSXolhTWfIgAd4FP98wXz6Dqlcr57369biR8N/d7lMDWKOSgm+0dlHD1ST7TshBoGftFgAuAQAuie4d8B5s6ga8MA9oF9IzxRwWxAEcpIv/ZYVZaG7rJIRj9CSgNUQgDlDMKZw1KXJLsm9SDt7UxGHTAiNnZfdDMNpEW3VO4VTwUa9r+PxrkOA48XjZicFEFkaqUoEL56JwZXpZ80+2KRWRVoLBB0Ie3DD/M18vLUHIQfTnwNo/TF9Ej7FDAWH6Gi2omnwOKIdyUC8j46JIllOL01GZEtdIwN1k5LxKMWRoD0o5sROaJAdcZlT5TZ/DzJdrkZpOI+Fphk0RJVMz1fnYBbnucjzvjSLRM8BpHVXRJgkXg1GOl0Qcq8U0C9chzBYjtJMxL6otvWeLXbRjT/LwmZThjWSCG6E1qq
X-OriginatorOrg: amd.com
X-MS-Exchange-CrossTenant-OriginalArrivalTime: 09 Apr 2026 12:13:07.8455
 (UTC)
X-MS-Exchange-CrossTenant-Network-Message-Id: 454baa88-c36c-49d7-b7ed-08de96315c46
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:
	BL02EPF0001A107.namprd05.prod.outlook.com
X-MS-Exchange-CrossTenant-AuthAs: Anonymous
X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem
X-MS-Exchange-Transport-CrossTenantHeadersStamped: MN0PR12MB5716
X-purgate-ID: tlsNG-d25034/1775736794-FD756A3D-384CEBC3/0/0
X-purgate-type: clean
X-purgate-size: 504


On 09/04/2026 12:39, Michal Orzel wrote:
> gicv3_iomem_deny_access() incorrectly uses csize (physical CPU
> interface size) instead of vsize (virtual CPU interface size) when
> calculating the number of pages to deny for the virtual CPU interface
> region at vbase.
good catch
>
> Fixes: 8300b3377e ("arm/gic: Add a new callback to deny Dom0 access to GIC regions")
> Signed-off-by: Michal Orzel <michal.orzel@amd.com>

Reviewed-by: Ayan Kumar Halder <ayan.kumar.halder@amd.com>

- Ayan



From xen-devel-bounces@lists.xenproject.org Thu Apr 09 12:22:13 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 09 Apr 2026 12:22:13 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1277234.1562459 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wAoOe-0005MK-Vz; Thu, 09 Apr 2026 12:22:08 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1277234.1562459; Thu, 09 Apr 2026 12:22: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 1wAoOe-0005MD-TH; Thu, 09 Apr 2026 12:22:08 +0000
Received: by outflank-mailman (input) for mailman id 1277234;
 Thu, 09 Apr 2026 12:22:07 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <bounce-md_30504962.69d799ec.v1-f245dc9079344828b0ea5d8e3faeb5b4@bounce.vates.tech>)
 id 1wAoOd-0005M7-3W
 for xen-devel@lists.xenproject.org; Thu, 09 Apr 2026 12:22:07 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wAoOc-001K4b-3l
 for xen-devel@lists.xenproject.org; Thu, 09 Apr 2026 14:22:06 +0200
Received: from [10.42.69.6] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1) (envelope-from
 <bounce-md_30504962.69d799ec.v1-f245dc9079344828b0ea5d8e3faeb5b4@bounce.vates.tech>)
 id 69d799e6-e002-0a2a0a5209dd-0a2a4506b954-32
 for <xen-devel@lists.xenproject.org>; Thu, 09 Apr 2026 14:22:06 +0200
Received: from [198.2.180.46] (helo=mail180-46.suw31.mandrillapp.com)
 by tlsNG-16d1c6.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.0)
 (envelope-from
 <bounce-md_30504962.69d799ec.v1-f245dc9079344828b0ea5d8e3faeb5b4@bounce.vates.tech>)
 id 69d799ec-0df0-0a2a45060019-c602b42eb7bf-3
 for <xen-devel@lists.xenproject.org>; Thu, 09 Apr 2026 14:22:05 +0200
Received: from pmta11.mandrill.prod.suw01.rsglab.com (localhost [127.0.0.1])
 by mail180-46.suw31.mandrillapp.com (Mailchimp) with ESMTP id
 4frzZh0svdz8XS6nf
 for <xen-devel@lists.xenproject.org>; Thu,  9 Apr 2026 12:22:04 +0000 (GMT)
Received: from [37.26.189.201] by mandrillapp.com id
 f245dc9079344828b0ea5d8e3faeb5b4; Thu, 09 Apr 2026 12: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=mte1 header.d=mandrillapp.com header.i="@mandrillapp.com" header.h="From:Subject:Message-Id:To:Cc:References:In-Reply-To:Feedback-ID:Date:MIME-Version:Content-Type:Content-Transfer-Encoding"; dkim=pass header.s=mte1 header.d=vates.tech header.i="teddy.astie@vates.tech" header.h="From:Subject:Message-Id:To:Cc:References:In-Reply-To:Feedback-ID:Date:MIME-Version:Content-Type:Content-Transfer-Encoding"
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=mandrillapp.com;
	s=mte1; t=1775737324; x=1776007324;
	bh=6/LSDButP8uM6JPqcrKxjpaj3SVY0qzt4DP43fBQAec=;
	h=From:Subject:Message-Id:To:Cc:References:In-Reply-To:Feedback-ID:
	 Date:MIME-Version:Content-Type:Content-Transfer-Encoding:CC:Date:
	 Subject:From;
	b=B/T9oqJ5Sw+LuRI0Ne/QIm5RpGZMyK4F7eEdZpWxFWLXKkks7x9l+/UToR87vF+QL
	 E5ncMMa/mXOYrA8ZkBdDuI9Wtczrr8d85MfAHZGE77npUUXgAt41reTynoMEgHyD9J
	 3ry2NHbMergu4kqd9r1GtIDjINN3dbHCcjxzu2jia5MtY9AyXritMpwKMFBW7u0H1D
	 aCg6Bn/ZbtuSNUfqhi29XtB/lv3nGsYPy4KT2AMB10tXvuKFkVBXEeesuLRMa18Rup
	 Np/SoZjVHB205SzGszm8r9+Q8dJCg4q7qmCd21qlsZlq5vCBYEPr7NIiHMKrl34Q3e
	 3jZvdAQP2fpvw==
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=vates.tech; s=mte1;
	t=1775737324; x=1775997824; i=teddy.astie@vates.tech;
	bh=6/LSDButP8uM6JPqcrKxjpaj3SVY0qzt4DP43fBQAec=;
	h=From:Subject:Message-Id:To:Cc:References:In-Reply-To:Feedback-ID:
	 Date:MIME-Version:Content-Type:Content-Transfer-Encoding:CC:Date:
	 Subject:From;
	b=Yg8vnszdQtBIFMQHdBqjHkrTnPCVpqk4TMH5hlQY4KnyReQ/S1CX0b7AEgJu8qbzV
	 eFexKGKGkPnhqY/k7m4wOvB6Cq+suZOysh1Kjgb4YF+oIH0/vFFPEYWHCuf9CQKlPo
	 SROrQEGpjvFpKiwCNbSoShku09SwYuQWR72Qx9OuEtaV+RWM5KowLrxAUq5TxfzmY0
	 dII+0oEBQb2RH9qc2ITuNFE5sJzJtnZmJkwDnugvaLIzFdgsOUmM5ULi71FB7yX7mO
	 qaVmEBUAFugfFgnqKs3cKp8uu+OMdjpHS/dJR9JBlS+62QvdXlvAxfIZO4X9s1tuKx
	 sUgKeTs5YS4uA==
From: "Teddy Astie" <teddy.astie@vates.tech>
Subject: =?utf-8?Q?Re:=20[PATCH=20v2]=20x86:=20Avoid=20using=20.byte=20for=20instructions=20where=20safe=20to=20do=20so?=
X-Bm-Disclaimer: Yes
X-Bm-Milter-Handled: 4ffbd6c1-ee69-4e1b-aabd-f977039bd3e2
X-Bm-Transport-Timestamp: 1775737320936
Message-Id: <ec45bd37-280c-4752-b38b-99dcdf4b92a2@vates.tech>
To: "Andrew Cooper" <andrew.cooper3@citrix.com>, Xen-devel <xen-devel@lists.xenproject.org>
Cc: "Jan Beulich" <jbeulich@suse.com>, "=?utf-8?Q?Roger=20Pau=20Monn=C3=A9?=" <roger.pau@citrix.com>
References: <20260409114151.179408-1-andrew.cooper3@citrix.com>
In-Reply-To: <20260409114151.179408-1-andrew.cooper3@citrix.com>
X-Native-Encoded: 1
X-Report-Abuse: =?UTF-8?Q?Please=20forward=20a=20copy=20of=20this=20message,=20including=20all=20headers,=20to=20abuse@mandrill.com.=20You=20can=20also=20report=20abuse=20here:=20https://mandrillapp.com/contact/abuse=3Fid=3D30504962.f245dc9079344828b0ea5d8e3faeb5b4?=
X-Mandrill-User: md_30504962
Feedback-ID: 30504962:30504962.20260409:md
Date: Thu, 09 Apr 2026 12:22:04 +0000
MIME-Version: 1.0
Content-Type: text/plain; charset=utf-8
Content-Transfer-Encoding: quoted-printable
X-purgate-ID: tlsNG-16d1c6/1775737326-AF5383D8-16B0ED0B/0/0
X-purgate-type: clean
X-purgate-size: 8076

Le 09/04/2026 =C3=A0 13:43, Andrew Cooper a =C3=A9crit=C2=A0:
> The new toolchain baseline knows XGETBV, VPXOR and VPOR.
> 
> For the other cases using .byte, annotate the toolchain minima.
> 
> No functional change.
> 
> Signed-off-by: Andrew Cooper <andrew.cooper3@citrix.com>
> ---
> CC: Jan Beulich <jbeulich@suse.com>
> CC: Roger Pau Monn=C3=A9 <roger.pau@citrix.com>
> CC: Teddy Astie <teddy.astie@vates.tech>
> 
> v2
>   * CLZERO, {WR,RD}PKRU can't be named yet.
> 
> Pull out of previous series as it's somewhat unrelated.  The XSAVE cleanu=
p has
> other prerequiesites before it can move away from .byte.
> ---
>   xen/arch/x86/arch.mk                   |  4 +++
>   xen/arch/x86/include/asm/asm-defns.h   |  1 +
>   xen/arch/x86/include/asm/msr.h         |  2 ++
>   xen/arch/x86/include/asm/prot-key.h    |  4 +--
>   xen/arch/x86/include/asm/xstate.h      |  3 +--
>   xen/arch/x86/x86_emulate/0f01.c        |  2 +-
>   xen/arch/x86/x86_emulate/x86_emulate.c | 34 ++++++++++++--------------
>   7 files changed, 27 insertions(+), 23 deletions(-)
> 
> diff --git a/xen/arch/x86/arch.mk b/xen/arch/x86/arch.mk
> index 0b42e6312fac..cd0602a79aaf 100644
> --- a/xen/arch/x86/arch.mk
> +++ b/xen/arch/x86/arch.mk
> @@ -17,7 +17,11 @@ CFLAGS-$(CONFIG_CC_IS_GCC) +=3D -malign-data=3Dabi
>   $(call cc-options-add,CFLAGS,CC,$(EMBEDDED_EXTRA_CFLAGS))
>   $(call cc-option-add,CFLAGS,CC,-Wnested-externs)
>   $(call as-option-add,CFLAGS,CC,".equ \"x\"$(comma)1",-DHAVE_AS_QUOTED_S=
YM)
> +
> +# Binutils >=3D 2.31, Clang >=3D 7
>   $(call as-option-add,CFLAGS,CC,"movdiri %rax$(comma)(%rax)",-DHAVE_AS_M=
OVDIR)
> +
> +# Binutils >=3D 2.33, Clang >=3D 9
>   $(call as-option-add,CFLAGS,CC,"enqcmd (%rax)$(comma)%rax",-DHAVE_AS_EN=
QCMD)
>   
>   # Check to see whether the assembler supports the .nop directive.
> diff --git a/xen/arch/x86/include/asm/asm-defns.h b/xen/arch/x86/include/=
asm/asm-defns.h
> index 239dc3af096c..dc9b3ce272fd 100644
> --- a/xen/arch/x86/include/asm/asm-defns.h
> +++ b/xen/arch/x86/include/asm/asm-defns.h
> @@ -1,5 +1,6 @@
>   #include <asm/page-bits.h>
>   
> +/* binutils >=3D 2.26 or Clang >=3D 3.8 */
>   .macro clzero
>       .byte 0x0f, 0x01, 0xfc
>   .endm
> diff --git a/xen/arch/x86/include/asm/msr.h b/xen/arch/x86/include/asm/ms=
r.h
> index 941a7612f4ba..1377d156f4e1 100644
> --- a/xen/arch/x86/include/asm/msr.h
> +++ b/xen/arch/x86/include/asm/msr.h
> @@ -63,6 +63,8 @@ static inline void wrmsrns(uint32_t msr, uint64_t val)
>       /*
>        * WRMSR is 2 bytes.  WRMSRNS is 3 bytes.  Pad WRMSR with a redunda=
nt CS
>        * prefix to avoid a trailing NOP.
> +     *
> +     * Binutils >=3D 2.40, Clang >=3D 16
>        */
>       alternative_input(".byte 0x2e; wrmsr",
>                         ".byte 0x0f,0x01,0xc6", X86_FEATURE_WRMSRNS,
> diff --git a/xen/arch/x86/include/asm/prot-key.h b/xen/arch/x86/include/a=
sm/prot-key.h
> index 8fb15b5c32e9..e8550e0c9203 100644
> --- a/xen/arch/x86/include/asm/prot-key.h
> +++ b/xen/arch/x86/include/asm/prot-key.h
> @@ -19,7 +19,7 @@ static inline uint32_t rdpkru(void)
>   {
>       uint32_t pkru;
>   
> -    asm volatile ( ".byte 0x0f,0x01,0xee"
> +    asm volatile ( ".byte 0x0f,0x01,0xee" /* binutils >=3D 2.26 or Clang=
 >=3D 3.8 */
>                      : "=3Da" (pkru) : "c" (0) : "dx" );
>   
>       return pkru;
> @@ -27,7 +27,7 @@ static inline uint32_t rdpkru(void)
>   
>   static inline void wrpkru(uint32_t pkru)
>   {
> -    asm volatile ( ".byte 0x0f,0x01,0xef"
> +    asm volatile ( ".byte 0x0f,0x01,0xef" /* binutils >=3D 2.26 or Clang=
 >=3D 3.8 */
>                      :: "a" (pkru), "d" (0), "c" (0) );
>   }
>   
> diff --git a/xen/arch/x86/include/asm/xstate.h b/xen/arch/x86/include/asm=
/xstate.h
> index c96d75e38b25..0519379edb57 100644
> --- a/xen/arch/x86/include/asm/xstate.h
> +++ b/xen/arch/x86/include/asm/xstate.h
> @@ -118,8 +118,7 @@ static inline uint64_t xgetbv(unsigned int index)
>       uint32_t lo, hi;
>   
>       ASSERT(index); /* get_xcr0() should be used instead. */
> -    asm volatile ( ".byte 0x0f,0x01,0xd0" /* xgetbv */
> -                   : "=3Da" (lo), "=3Dd" (hi) : "c" (index) );
> +    asm volatile ( "xgetbv" : "=3Da" (lo), "=3Dd" (hi) : "c" (index) );
>   
>       return lo | ((uint64_t)hi << 32);
>   }
> diff --git a/xen/arch/x86/x86_emulate/0f01.c b/xen/arch/x86/x86_emulate/0=
f01.c
> index 4d36c7d289a5..87d338f0c74a 100644
> --- a/xen/arch/x86/x86_emulate/0f01.c
> +++ b/xen/arch/x86/x86_emulate/0f01.c
> @@ -122,7 +122,7 @@ int x86emul_0f01(struct x86_emulate_state *s,
>           {
>           case vex_none: /* serialize */
>               host_and_vcpu_must_have(serialize);
> -            asm volatile ( ".byte 0x0f, 0x01, 0xe8" );
> +            asm volatile ( ".byte 0x0f, 0x01, 0xe8" ); /* Binutils >=3D =
2.34, Clang >=3D 11 */
>               break;
>           case vex_f2: /* xsusldtrk */
>               vcpu_must_have(tsxldtrk);
> diff --git a/xen/arch/x86/x86_emulate/x86_emulate.c b/xen/arch/x86/x86_em=
ulate/x86_emulate.c
> index 11d145e17723..e58735ee9590 100644
> --- a/xen/arch/x86/x86_emulate/x86_emulate.c
> +++ b/xen/arch/x86/x86_emulate/x86_emulate.c
> @@ -4748,27 +4748,25 @@ x86_emulate(
>                    */
>                   if ( vex.l )
>                   {
> -                    /* vpxor %xmmN, %xmmN, %xmmN */
> -                    asm volatile ( ".byte 0xc5,0xf9,0xef,0xc0" );
> -                    asm volatile ( ".byte 0xc5,0xf1,0xef,0xc9" );
> -                    asm volatile ( ".byte 0xc5,0xe9,0xef,0xd2" );
> -                    asm volatile ( ".byte 0xc5,0xe1,0xef,0xdb" );
> -                    asm volatile ( ".byte 0xc5,0xd9,0xef,0xe4" );
> -                    asm volatile ( ".byte 0xc5,0xd1,0xef,0xed" );
> -                    asm volatile ( ".byte 0xc5,0xc9,0xef,0xf6" );
> -                    asm volatile ( ".byte 0xc5,0xc1,0xef,0xff" );
> +                    asm volatile ( "vpxor %xmm0, %xmm0, %xmm0" );
> +                    asm volatile ( "vpxor %xmm1, %xmm1, %xmm1" );
> +                    asm volatile ( "vpxor %xmm2, %xmm2, %xmm2" );
> +                    asm volatile ( "vpxor %xmm3, %xmm3, %xmm3" );
> +                    asm volatile ( "vpxor %xmm4, %xmm4, %xmm4" );
> +                    asm volatile ( "vpxor %xmm5, %xmm5, %xmm5" );
> +                    asm volatile ( "vpxor %xmm6, %xmm6, %xmm6" );
> +                    asm volatile ( "vpxor %xmm7, %xmm7, %xmm7" );
>                   }
>                   else
>                   {
> -                    /* vpor %xmmN, %xmmN, %xmmN */
> -                    asm volatile ( ".byte 0xc5,0xf9,0xeb,0xc0" );
> -                    asm volatile ( ".byte 0xc5,0xf1,0xeb,0xc9" );
> -                    asm volatile ( ".byte 0xc5,0xe9,0xeb,0xd2" );
> -                    asm volatile ( ".byte 0xc5,0xe1,0xeb,0xdb" );
> -                    asm volatile ( ".byte 0xc5,0xd9,0xeb,0xe4" );
> -                    asm volatile ( ".byte 0xc5,0xd1,0xeb,0xed" );
> -                    asm volatile ( ".byte 0xc5,0xc9,0xeb,0xf6" );
> -                    asm volatile ( ".byte 0xc5,0xc1,0xeb,0xff" );
> +                    asm volatile ( "vpor %xmm0, %xmm0, %xmm0" );
> +                    asm volatile ( "vpor %xmm1, %xmm1, %xmm1" );
> +                    asm volatile ( "vpor %xmm2, %xmm2, %xmm2" );
> +                    asm volatile ( "vpor %xmm3, %xmm3, %xmm3" );
> +                    asm volatile ( "vpor %xmm4, %xmm4, %xmm4" );
> +                    asm volatile ( "vpor %xmm5, %xmm5, %xmm5" );
> +                    asm volatile ( "vpor %xmm6, %xmm6, %xmm6" );
> +                    asm volatile ( "vpor %xmm7, %xmm7, %xmm7" );
>                   }
>   
>                   ASSERT(!state->simd_size);

Reviewed-by: Teddy Astie <teddy.astie@vates.tech>


--
Teddy Astie | Vates XCP-ng Developer

XCP-ng & Xen Orchestra - Vates solutions

web: https://vates.tech




From xen-devel-bounces@lists.xenproject.org Thu Apr 09 12:24:10 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 09 Apr 2026 12:24:10 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1277241.1562468 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wAoQa-0005pf-C2; Thu, 09 Apr 2026 12:24:08 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1277241.1562468; Thu, 09 Apr 2026 12: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 1wAoQa-0005pY-8u; Thu, 09 Apr 2026 12:24:08 +0000
Received: by outflank-mailman (input) for mailman id 1277241;
 Thu, 09 Apr 2026 12:24:07 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <Luca.Fancellu@arm.com>) id 1wAoQZ-0005pS-LR
 for xen-devel@lists.xenproject.org; Thu, 09 Apr 2026 12:24:07 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wAoQY-005QtI-Lk
 for xen-devel@lists.xenproject.org; Thu, 09 Apr 2026 14:24:06 +0200
Received: from [10.42.69.1] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <Luca.Fancellu@arm.com>)
 id 69d79a5c-bab6-0a2a0a5309dd-0a2a4501c6c4-38
 for <xen-devel@lists.xenproject.org>; Thu, 09 Apr 2026 14:24:06 +0200
Received: from [52.101.65.9]
 (helo=DU2PR03CU002.outbound.protection.outlook.com)
 by tlsNG-d62444.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.0)
 (envelope-from <Luca.Fancellu@arm.com>)
 id 69d79a65-6fc9-0a2a45010019-3465410952d3-3
 for <xen-devel@lists.xenproject.org>; Thu, 09 Apr 2026 14:24:05 +0200
Received: from DU2PR04CA0075.eurprd04.prod.outlook.com (2603:10a6:10:232::20)
 by PAWPR08MB10090.eurprd08.prod.outlook.com (2603:10a6:102:367::11)
 with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9769.17; Thu, 9 Apr
 2026 12:24:02 +0000
Received: from DB5PEPF00014B8F.eurprd02.prod.outlook.com
 (2603:10a6:10:232:cafe::3a) by DU2PR04CA0075.outlook.office365.com
 (2603:10a6:10:232::20) with Microsoft SMTP Server (version=TLS1_3,
 cipher=TLS_AES_256_GCM_SHA384) id 15.20.9769.40 via Frontend Transport; Thu,
 9 Apr 2026 12:24:02 +0000
Received: from outbound-uk1.az.dlp.m.darktrace.com (4.158.2.129) by
 DB5PEPF00014B8F.mail.protection.outlook.com (10.167.8.203) with Microsoft
 SMTP Server (version=TLS1_3, cipher=TLS_AES_256_GCM_SHA384) id 15.20.9769.17
 via Frontend Transport; Thu, 9 Apr 2026 12:24:02 +0000
Received: from DU2PR08MB7272.eurprd08.prod.outlook.com (2603:10a6:10:2d7::16)
 by DB9PR08MB6394.eurprd08.prod.outlook.com (2603:10a6:10:25b::20)
 with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9769.42; Thu, 9 Apr
 2026 12:22:59 +0000
Received: from DU2PR08MB7272.eurprd08.prod.outlook.com
 ([fe80::5d34:206f:373:a323]) by DU2PR08MB7272.eurprd08.prod.outlook.com
 ([fe80::5d34:206f:373:a323%6]) with mapi id 15.20.9769.018; Thu, 9 Apr 2026
 12:22: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=arm.com header.i="@arm.com" header.h="From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck"; dkim=pass header.s=selector1 header.d=arm.com header.i="@arm.com" header.h="From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck"
ARC-Seal: i=2; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=pass;
 b=W4CeHh5y5uUwp/ESN9zACyyCSBnnhbjbC7+PvE/L64+13XgWW0gHf4SX7Uznd4u8da5m+EMlVolt4Pd6m47R4Jvhv5E67IED/GCCecHvC+tBZ8GrSzQ8K1Rc+gqE57WS1Nbr3/EiH5fiVl2qxvK8WxYw4YGl3v2uqdXJEE7gwxdWX+UA2tcLMdg3k0Mtd9co4RI9sh5dEEJ/VGWTEjl4i8kyw4eAmiDe8RB2kb/NOKdrAo59yrwteNnHrFGQDE/iPxelZRPooh+sUWp9BTeraFhJmDPGddP4wdFSBSX/TbfTxVFcN5VoHcHq3YZSxo0qANS2PO+q2j7QIIoxl8UXZA==
ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com;
 s=arcselector10001;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1;
 bh=/ROx8QQJcwPWsFXms6bd60bnGVW/c/0+SxbZfnYXEMY=;
 b=n1fQN9pObs0QAEkH0c9+MPoEkeWuscNbpPClXU5s6TnysOFqNTyHGQCBnHbfMQ+tbSrVVAB1PbvYWEnrQlk48UJVadRfu/KEcW/D+KhLADO0tOg8ZVu1PdcQrAZHPyY9+P0CAECmBekaBv8fqJ22t820oIOsRlcreTfbzhKIs/0BUmP4/az1Y9g4LaRMftYJOd9uZ8Tm5J+8/UNBlbQ3yiqE9K8ADF9SiSaGZZEWpB1k5QWAVA9wUdPcFNL1Z1csSM3QlAEuKHqKlyZ7MskkntFSKelqD2PlZY6LrIEoFRnI548gfA1ItTCl5b0d3jlYOfE+kpM4khRFtN53OpHHQA==
ARC-Authentication-Results: i=2; mx.microsoft.com 1; spf=pass (sender ip is
 4.158.2.129) smtp.rcpttodomain=amd.com smtp.mailfrom=arm.com; dmarc=pass
 (p=none sp=none pct=100) action=none header.from=arm.com; dkim=pass
 (signature was verified) header.d=arm.com; arc=pass (0 oda=1 ltdi=1
 spf=[1,1,smtp.mailfrom=arm.com] dkim=[1,1,header.d=arm.com]
 dmarc=[1,1,header.from=arm.com])
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=arm.com; s=selector1;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck;
 bh=/ROx8QQJcwPWsFXms6bd60bnGVW/c/0+SxbZfnYXEMY=;
 b=De5RHvk1ouU0HL41qFaO6H1CvfcelDhd0zISUgahJ4GcJ3LkTplRlkOdUF2cZQ57jt8VGtF8ctoi2qOw+so7f44M5YuknQSSLCCCUmNRoURS6eG/UaETym/Ys0pYikE/KCbnsIW17xRIKSWIKku0AMIj2FkdRmxTC9RkMKRzjiM=
X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 4.158.2.129)
 smtp.mailfrom=arm.com; dkim=pass (signature was verified)
 header.d=arm.com;dmarc=pass action=none header.from=arm.com;
Received-SPF: Pass (protection.outlook.com: domain of arm.com designates
 4.158.2.129 as permitted sender) receiver=protection.outlook.com;
 client-ip=4.158.2.129; helo=outbound-uk1.az.dlp.m.darktrace.com; pr=C
ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none;
 b=G3lM/MN7jMmyJLpgchdS7h6x0TvkdhIjHjeFsX5IuGA8ry6Hcn3cQgXr7cPeLOjhXogPqN/wEcMC0XB35gURC9Z6EJvWo2Pb7AFAvPsybG+KDNVLROwAcKKpgxmEHDk2TTXjLcBuQLO5xEFS6xA9csdr6Qc8kHo1VoShIqFlzOq+Z7WK5BH8waGKawzvwFFtxQVa1057D16ZTczBhcrxjTOz8MZXzSpYeruPl2Vqp6N8+vBUB2luSyfb+cIvfsQ2Hq39o/+7MvUIQC9snS6UGCOlf9MyVufVkAPGWfNkPObsF+Hx2v0j+GyJ2t+X+TNgXPwjVJOfnPhO9MXiTNRNQw==
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com;
 s=arcselector10001;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1;
 bh=/ROx8QQJcwPWsFXms6bd60bnGVW/c/0+SxbZfnYXEMY=;
 b=yjCCTPC6ZK2lkCm8MB98sh470SJpq2CbhCpSxm9Jd+SxGWww3RXWSFILnVN/jTBYoVEAYt9nsR4ziL+gL8iR6V6j/XAt44WJbOzodqrvS3/TiFOkUknD65mNMNlzWiqCTZ5vVhl7eRdopfJvyhf070uPwZZjDQvkGzwhccOQsOXLGgSV+tY3xZU3OMlGMNf2et1AKkmBOnyO9cJx51jlLzik8jsXE7HEGnGreW6CczohHNsME3hreTpZYSi+Bp9cSh3M5Gp5hdXJht61wWp3MAmFY5XHus2/Fef0xTMgukkx/ZakLV9cV9ccV9PoYO68SDFX/8OHGpnpt0dbN8G65Q==
ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass
 smtp.mailfrom=arm.com; dmarc=pass action=none header.from=arm.com; dkim=pass
 header.d=arm.com; arc=none
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=arm.com; s=selector1;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck;
 bh=/ROx8QQJcwPWsFXms6bd60bnGVW/c/0+SxbZfnYXEMY=;
 b=De5RHvk1ouU0HL41qFaO6H1CvfcelDhd0zISUgahJ4GcJ3LkTplRlkOdUF2cZQ57jt8VGtF8ctoi2qOw+so7f44M5YuknQSSLCCCUmNRoURS6eG/UaETym/Ys0pYikE/KCbnsIW17xRIKSWIKku0AMIj2FkdRmxTC9RkMKRzjiM=
From: Luca Fancellu <Luca.Fancellu@arm.com>
To: Michal Orzel <michal.orzel@amd.com>
CC: "xen-devel@lists.xenproject.org" <xen-devel@lists.xenproject.org>, Andrew
 Cooper <andrew.cooper3@citrix.com>, Anthony PERARD
	<anthony.perard@vates.tech>, Jan Beulich <jbeulich@suse.com>, Julien Grall
	<julien@xen.org>, =?iso-8859-1?Q?Roger_Pau_Monn=E9?= <roger.pau@citrix.com>,
	Stefano Stabellini <sstabellini@kernel.org>
Subject: Re: [PATCH 2/3] xen/common: llc-coloring: Fix off-by-one in
 parse_color_config()
Thread-Topic: [PATCH 2/3] xen/common: llc-coloring: Fix off-by-one in
 parse_color_config()
Thread-Index: AQHcyBWdW2bjkWPifku6XWocvaXOWrXWpuWA
Date: Thu, 9 Apr 2026 12:22:59 +0000
Message-ID: <EEF7C308-F25C-46BA-9663-BA789B49429C@arm.com>
References: <20260409113934.197619-1-michal.orzel@amd.com>
 <20260409113934.197619-3-michal.orzel@amd.com>
In-Reply-To: <20260409113934.197619-3-michal.orzel@amd.com>
Accept-Language: en-GB, en-US
Content-Language: en-US
X-MS-Has-Attach:
X-MS-TNEF-Correlator:
x-mailer: Apple Mail (2.3826.700.81.1.6)
Authentication-Results-Original: dkim=none (message not signed)
 header.d=none;dmarc=none action=none header.from=arm.com;
x-ms-traffictypediagnostic:
	DU2PR08MB7272:EE_|DB9PR08MB6394:EE_|DB5PEPF00014B8F:EE_|PAWPR08MB10090:EE_
X-MS-Office365-Filtering-Correlation-Id: b44f09b2-517a-4862-889c-08de9632e29b
x-checkrecipientrouted: true
nodisclaimer: true
X-MS-Exchange-SenderADCheck: 1
X-MS-Exchange-AntiSpam-Relay: 0
X-Microsoft-Antispam-Untrusted:
 BCL:0;ARA:13230040|1800799024|366016|376014|22082099003|18002099003|38070700021|56012099003;
X-Microsoft-Antispam-Message-Info-Original:
 7xTrwRgs5RLOcD1E9ob8vSYbxT29f5+7LHD6L3BhAEJ/XtrBkzQtuUGH2VO9/D8ShBlFrgORGBIG4dXNc0G8uDMz5PSAViVMNr0dy7mWtWsQnriezLd/QsAPopOx2lyf8tgb+f8i7rlZv5l0UZkwd17hvHFLV4UdKr14D6MhJBfEYklq62e/x3RGEtyEW+rBmRF2obyX9CdLil8fFKUFA60XzWxgb7nD/GeKUSTFbJrk6h06+eNyQzrHbvgEucOkMm05D12qZJFdf+S4TOxWi9PMBvI2U/+Ft402yrmbbrgUhNWV4XLph/RtTKsiOmUjWhTE6BdwtdeMiNvnt18Q1Y3Yfp8LLhCgqkZ8b+tSIZIK3kLuFSn5osDZLKkZPg9eiw2NeZH47Sym1LkA0/wbRjtQ/bG0jyofYYqDuQcowgEmCbNbEcoSssHkUBanN9fzfyyo7GLLR5ra1U5yFbJV/I1cdICQPCWVhArktoQjeznikai09+CdpSAgd6A1z3YguMrRYYqwCcU2lTc3yA4QvOgONArn0M89Q8tZKUOvhgQXexH05tkkdJ3locbNJp08qqKvaVN0KcyC3dP+0QR/tfFpX/pPug4fmIdHpTk8+IXQOo3bkskRaF2uqFuJLi3yz6SO3GTxHW7xPUl/sKGA6PU36sxG2X3uy9lkHcYJp+UU9PngI1Fa2AVURwIqCrKYl8s3NWAArMsVez4WnWN2xDFfDaoiw4hyJAbmo2blxbKO4ns0GnK6Lqbx+To2W24vPAXrve3fAfgRyjy4L/gvH2TDnyESKEmXukfpR9mEOFQ=
X-Forefront-Antispam-Report-Untrusted:
 CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:DU2PR08MB7272.eurprd08.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(1800799024)(366016)(376014)(22082099003)(18002099003)(38070700021)(56012099003);DIR:OUT;SFP:1101;
Content-Type: text/plain; charset="iso-8859-1"
Content-ID: <F370DAF453677244ACF5B78AF03193E3@eurprd08.prod.outlook.com>
Content-Transfer-Encoding: quoted-printable
MIME-Version: 1.0
X-Exchange-RoutingPolicyChecked:
 byhpsh2XmrylTQL+brZmWYvmfGJRpGyc2bJi0zPkWlMFKY1eqvrtaxn4qh5cT7oKDoS7R0hnA9wCPmFNlVlasntznn/dW5FHp0VYCf0Pu+k/dC0+Jg1y5Xgzd/JjX7mOhP1Ihav4nS9saiMEw6hPc1hxPiDc3IBaIwc1OTDCwLW9nHhi7WFF0oMbtVr2iyyuNLsKAeYnh1XDsWLApqR3Ec+c8zjUh5qJn71qISpIEQS4P6HX391rRhZwKSatRFGxxS7mszVu+pn41xBQ/rLBZibrTbJUatl80VLgzFQ87/tlN7zBya+zgIXaJWwywVnwz9O5CZK/lPN1qw/qoIVWIA==
X-MS-Exchange-Transport-CrossTenantHeadersStamped: DB9PR08MB6394
X-EOPAttributedMessage: 0
X-MS-Exchange-Transport-CrossTenantHeadersStripped:
 DB5PEPF00014B8F.eurprd02.prod.outlook.com
X-MS-PublicTrafficType: Email
X-MS-Office365-Filtering-Correlation-Id-Prvs:
	c2329ddb-fb0b-47a3-e77e-08de9632bcd7
X-Microsoft-Antispam:
	BCL:0;ARA:13230040|1800799024|36860700016|82310400026|376014|35042699022|14060799003|22082099003|56012099003|18002099003;
X-Microsoft-Antispam-Message-Info:
	GKTHE4xwluMEsZE6E1/3X6sr9pNxOR6/CTvmrdwR0vnLneFgUJpTbBx42HIohYCtBH39cdK8fFB39inMSwuR30rKhJFvibsx9RWyp6NJZUg4/j/TWCSWb6szieF4nDhpgMYJgnYbZX9FYngCQf0HXMrUGTfLtSBXD8kZItpZ8hh4Bc3GftqNyQx/Jk/u85tpRsekjrz2WoYL0G8BB23b6Wo7X/VKRu15/pGgJu09PUi0WshoNc02WvBPkqR6qUdPdBAN9Xw7P0LIm9UFDndGrCasQukeoXHKED2J7wK0ZPtGitAK+8oOXeCWJJ1R9uXmD7UevIOhx9PnRb3FOUm4Y9c1t8QGrWvpqSAoq81aIA5yrBEdqZnPCghfwIGV3XtXAmRRqZNyZOWWELerHHnH3fhsVCKqzVJm+Je4/6YA83Ld4RCI7lfS9d1MMMOT8FOZlusSB71s3C4f+AN9RnMWPoFcOHHvishtC0JB++fmzsR1N8u8H+2KCnK1sFbADI1l1NwthnOIZzAy+G35V/01jEm9fOT/EuZIgYh+vbFE4xpI1tmzcsbG+bHpmzpXIIVpSOJsYPvqFL/Qn2VlZPQYJq/WOEquOYpjvUK16DzzDMVWmeEF58c4CCdTXlmOs2EyISwHw/D9N8ubbO/qEtF9/WpsKUohhvvLPsWUkrLmVTcAGBk4GWWH1tXrfYRAWT76yXiKj8uTXgKALT/WYMhIRSEruEBpRKrm7o2eN9zwC2GKqHOT+REKud6qXtqwlaU2Pxu8xM0B2zSC9vepRJThEA==
X-Forefront-Antispam-Report:
	CIP:4.158.2.129;CTRY:GB;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:outbound-uk1.az.dlp.m.darktrace.com;PTR:InfoDomainNonexistent;CAT:NONE;SFS:(13230040)(1800799024)(36860700016)(82310400026)(376014)(35042699022)(14060799003)(22082099003)(56012099003)(18002099003);DIR:OUT;SFP:1101;
X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1
X-MS-Exchange-AntiSpam-MessageData-0:
	IIK1ax/KOApDZ7SyrqdNjhr01Xqa31m0UVgSkm/2C8a6deKEc9oNrifPIgrZmB3ctoSUjsM3Ih6siL2V3wD6p1f6pBK6sVy4M/39ihJTAuxHhLJfG3gclpkVWgPKlXFbM1DDuSXtc9J3K08eiMmV0sfRnyiTO0HdUkyhOGJBPfmM8dXa6dRUGUZF9HdTwYvw0AN2dnxwQatuuexE9bgU9fALnPRkt0OQ+AzaoCbF+zWF5fDxCFZ5q6oqiV7CLKk6XyflKNWo5ghoyvTymnUl9GFPoe7blf8uAh9HBUw2qATNb6otV7Msl5zE3qTBW8EfFZ1gk/1USgCx2lkJTRIUcXvmCF18QAN7U10WxnOY8CZaMXowgkU84VqxXcI+Kyic78Ub+1+HGzr/J7gu5ht02qdh7Qh1c16rGKSfoS+P62/UPMNmJPt0TGRp2rVjMrKA
X-OriginatorOrg: arm.com
X-MS-Exchange-CrossTenant-OriginalArrivalTime: 09 Apr 2026 12:24:02.6593
 (UTC)
X-MS-Exchange-CrossTenant-Network-Message-Id: b44f09b2-517a-4862-889c-08de9632e29b
X-MS-Exchange-CrossTenant-Id: f34e5979-57d9-4aaa-ad4d-b122a662184d
X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=f34e5979-57d9-4aaa-ad4d-b122a662184d;Ip=[4.158.2.129];Helo=[outbound-uk1.az.dlp.m.darktrace.com]
X-MS-Exchange-CrossTenant-AuthSource:
	DB5PEPF00014B8F.eurprd02.prod.outlook.com
X-MS-Exchange-CrossTenant-AuthAs: Anonymous
X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem
X-MS-Exchange-Transport-CrossTenantHeadersStamped: PAWPR08MB10090
X-purgate-ID: tlsNG-d62444/1775737445-B7AFD185-D659E387/0/0
X-purgate-type: clean
X-purgate-size: 676

Hi Michal,

> On 9 Apr 2026, at 12:39, Michal Orzel <michal.orzel@amd.com> wrote:
>=20
> The check uses >=3D to compare the total number of colors against
> max_num_colors (which is ARRAY_SIZE of the colors array).  This
> incorrectly rejects input that would exactly fill the array.
>=20
> For example, with NR_LLC_COLORS=3D16, specifying 1 color for Xen and 15
> for dom0 would fail.
>=20
> Change >=3D to > so that exactly filling the array is permitted.
>=20
> Fixes: 95ef5ddf8a ("xen/arm: add Dom0 cache coloring support")
> Signed-off-by: Michal Orzel <michal.orzel@amd.com>
> ---

Reviewed-by: Luca Fancellu <luca.fancellu@arm.com>

Cheers,
Luca



From xen-devel-bounces@lists.xenproject.org Thu Apr 09 12:45:04 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 09 Apr 2026 12:45:04 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1277263.1562477 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wAokd-00012I-2A; Thu, 09 Apr 2026 12:44:51 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1277263.1562477; Thu, 09 Apr 2026 12:44: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 1wAokc-00012B-VC; Thu, 09 Apr 2026 12:44:50 +0000
Received: by outflank-mailman (input) for mailman id 1277263;
 Thu, 09 Apr 2026 12:44:49 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <jbeulich@suse.com>) id 1wAokb-000125-GX
 for xen-devel@lists.xenproject.org; Thu, 09 Apr 2026 12:44:49 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wAoka-008ls8-Sg
 for xen-devel@lists.xenproject.org; Thu, 09 Apr 2026 14:44:48 +0200
Received: from [10.42.69.12] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <jbeulich@suse.com>)
 id 69d79f3b-bab6-0a2a0a5309dd-0a2a450cdd42-8
 for <xen-devel@lists.xenproject.org>; Thu, 09 Apr 2026 14:44:48 +0200
Received: from [209.85.128.53] (helo=mail-wm1-f53.google.com)
 by tlsNG-d25034.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.0)
 (envelope-from <jbeulich@suse.com>)
 id 69d79f40-f40c-0a2a450c0019-d1558035b10a-3
 for <xen-devel@lists.xenproject.org>; Thu, 09 Apr 2026 14:44:48 +0200
Received: by mail-wm1-f53.google.com with SMTP id
 5b1f17b1804b1-4888375f735so8437905e9.3
 for <xen-devel@lists.xenproject.org>; Thu, 09 Apr 2026 05:44:48 -0700 (PDT)
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-488cf9e8be9sm51492565e9.6.2026.04.09.05.44.47
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Thu, 09 Apr 2026 05:44:47 -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=google header.d=suse.com header.i="@suse.com" header.h="Content-Transfer-Encoding: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=1775738688; x=1776343488; darn=lists.xenproject.org;
        h=content-transfer-encoding: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;
        bh=RViNgMzmAK8LSo3OUVO2YPvKAVfRLJNIelYr33XiRq4=;
        b=c+YjCwmAevwX+tpwdlDG7Z0ctB/AUaIKPs6LY8tEPXmcQsa2mzhJp3EdAXSjMs8ZFr
         p0mU6B7rTNyjvlA3n4xYxPI/JrNs2v8sexmje/DPftLU6BIM8mB85cPiQ9l0UWI49ujD
         /AnxtHdbEFdMidV+54oDJayhs+0/y29oitz1rpO2SzfPDbMSflo334xJPua5Q1bukhOI
         BWOc2LaV2A6Mz+Z16tQo2A9bhyxRqGQ6hAVQ5XtVzNyikUOqgn/ytV+AB23pr5AIt10V
         2toBqJ6Ia0L7nSsojQ93Tmdk0Wi2f0ouoYYv4xLpqI6EKTYiQwRSDETakP2UZX7Xsmfe
         sSRg==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20251104; t=1775738688; x=1776343488;
        h=content-transfer-encoding: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;
        bh=RViNgMzmAK8LSo3OUVO2YPvKAVfRLJNIelYr33XiRq4=;
        b=ZSCIanRR0BUGStXgiZOVmk2lbqEio1z53MLMl+j6KaLYEZs2gz2vN/lc4YhOrv/JGF
         uDhX8cI9Z7hMkVq5oJN/ctgc4vcawPXC/TCP5yrZAyoZhjBg80oLsMLf0bWXCeYTmSel
         Ec8zfjIHVt32a3IB4DE/Rdmk8XU2oH+j/WRX35/oNW7d1p5LJG9tJhcWXcdL0jImY9B0
         yIGWyIzcYfE2LIkO7WuEX81JnQQvy0GYyoKfqeoaDF4oZ2g72ZwCDzKhtPLB1PaFyHPN
         RcHzrGubg5HI8dYiVcThfRxVPDnZcGQhhk69qjYalBdrFo31q43GUgtxTUzn+PrF0/XN
         /m/g==
X-Forwarded-Encrypted: i=1; AJvYcCUt0UX4GypdB1j+GUltq1qW43KvhXAf+xBLQFyol2KejDCOwcPWHg4SWqpmVl5NQgmbNJqZNCZD/AI=@lists.xenproject.org
X-Gm-Message-State: AOJu0YyuKUY07Aj1S5GYtQY3r1qF9lp1N4MJGCarqkYd0xOqibiOsZEO
	88wBfxxEY3aMSJ5jh+irKzDLPh81vXRydtqOmPwrnj+udOzbSPrH/NFB8tLWrIHNbA==
X-Gm-Gg: AeBDievZcZHHYpS2zyc2EHyOwds9ZVD2sKiOpzwZBA9D1YjjmBMDYKwLuylPFPSSvuG
	4vEnCRG0gFZuNyuqPEGsAwa9MBlaZXpE3X+woJBJ8K4m2zx0tjnXmpljacP/hsigBcw9qTgwQpJ
	v1NssOUEYxRd6LQQ6DWGVTGGmctjpk0+1n2sUnRRDCsAzLEqeguFD2r2SO4cOvmLEetTsj2jW1w
	LNVKbtLEGFTosKsqSn54C2KehaQPRq7RVJhciMqR94L9QXYZwjojMsoncRZAOirJffoygParGLg
	ZVB7NhLIUvMefv+jlIL4zIoJNqYZ5kVc71jLIlxw8mxYSfpuFiiEPH1CuALp6Yq4/RC8AhhWEQb
	zf7UJzBKt9QVwe2Yw0V0P+SLiVwj8y36639GbVdtmx0j4KBWA5fgBvBosz7RZ/rblIwr0Dmnlqm
	VIGb10dBFhlVP7Uoi4Pufadf29JumnUCrS6f10NrN5kzBZWvx2+vwbVyCajUXeoVzsNwhrcuA0F
	BNrRpddhIGZZ8k=
X-Received: by 2002:a05:600c:8908:b0:488:a916:14a8 with SMTP id 5b1f17b1804b1-488a91614fdmr203842785e9.10.1775738687613;
        Thu, 09 Apr 2026 05:44:47 -0700 (PDT)
Message-ID: <d24e943d-1e2a-47ba-85b8-a2f9f9523ed7@suse.com>
Date: Thu, 9 Apr 2026 14:44:46 +0200
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH v2 1/3] x86: record SSP at non-guest entry points
To: Andrew Cooper <andrew.cooper3@citrix.com>
Cc: =?UTF-8?Q?Roger_Pau_Monn=C3=A9?= <roger.pau@citrix.com>,
 Teddy Astie <teddy.astie@vates.tech>,
 "xen-devel@lists.xenproject.org" <xen-devel@lists.xenproject.org>
References: <f064c3af-c22a-40e0-a268-ee37e34297a3@suse.com>
 <de873764-c803-4f56-b88a-936cb948c382@suse.com>
 <f08e0fbf-3570-4760-9977-4e99e651a3a4@citrix.com>
 <868b63e6-c551-49b6-b177-cfadb29a69b1@suse.com>
 <5d3472ff-77ff-466d-9461-3b33ef0815aa@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: <5d3472ff-77ff-466d-9461-3b33ef0815aa@citrix.com>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
X-purgate-ID: tlsNG-d25034/1775738688-83D43A3D-5353A34B/0/0
X-purgate-type: clean
X-purgate-size: 1353

On 09.04.2026 13:22, Andrew Cooper wrote:
> On 09/04/2026 9:13 am, Jan Beulich wrote:
>> On 08.04.2026 18:58, Andrew Cooper wrote:
>>>   It would be an rdssp;push on
>>> one side, and a pop into any register on the other side.  Furthermore,
>>> given that the ssp= doesn't exclude storing it for some user frames,
>>> just store it for all.  It's one push/pop into a hot cacheline, and
>>> makes a substantial reduction in complexity.
>> I'm having significant reservations against that. I use the 0 put there
>> in subsequent patches, to identify absence of that data being available.
> 
> Well, that's not safe then.
> 
> You've already got non-zero values there on entry-from-PV because
> there's no CPL check gating RDSPP the common IDT paths.

In that case we get safe values (as read from the MSR during the privilege
level switch). And wait - no, the latter two patches don't make any such
assumptions, I don't think. I may have mis-remembered, or I may have
remembered how things were at a very early stage. So really the concern is
with RDSSPQ's resource use. This could in principle be as cheap as MOV,
but how do I know? (The latency/throughput data I can find doesn't include
this insn.) Plus for the purely PV entrypoints I don't see why we would
want/need the slightly larger code size that would result.

Jan


From xen-devel-bounces@lists.xenproject.org Thu Apr 09 12:49:05 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 09 Apr 2026 12:49:05 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1277275.1562486 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wAooi-0001uK-HW; Thu, 09 Apr 2026 12:49:04 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1277275.1562486; Thu, 09 Apr 2026 12:49: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 1wAooi-0001uD-Dq; Thu, 09 Apr 2026 12:49:04 +0000
Received: by outflank-mailman (input) for mailman id 1277275;
 Thu, 09 Apr 2026 12:49:03 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <jbeulich@suse.com>) id 1wAoog-0001u7-V8
 for xen-devel@lists.xenproject.org; Thu, 09 Apr 2026 12:49:02 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wAoog-00BF10-AS
 for xen-devel@lists.xenproject.org; Thu, 09 Apr 2026 14:49:02 +0200
Received: from [10.42.69.7] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <jbeulich@suse.com>)
 id 69d7a03d-bab6-0a2a0a5309dd-0a2a4507ccc4-2
 for <xen-devel@lists.xenproject.org>; Thu, 09 Apr 2026 14:49:02 +0200
Received: from [209.85.221.42] (helo=mail-wr1-f42.google.com)
 by tlsNG-ef75cf.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.0)
 (envelope-from <jbeulich@suse.com>)
 id 69d7a03d-ba2d-0a2a45070019-d155dd2ac4b0-3
 for <xen-devel@lists.xenproject.org>; Thu, 09 Apr 2026 14:49:02 +0200
Received: by mail-wr1-f42.google.com with SMTP id
 ffacd0b85a97d-43cfac48bc7so552635f8f.0
 for <xen-devel@lists.xenproject.org>; Thu, 09 Apr 2026 05:49:02 -0700 (PDT)
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-43d1e4d282esm67104293f8f.18.2026.04.09.05.49.00
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Thu, 09 Apr 2026 05:49:01 -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=google header.d=suse.com header.i="@suse.com" header.h="Content-Transfer-Encoding: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=1775738941; x=1776343741; darn=lists.xenproject.org;
        h=content-transfer-encoding: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;
        bh=M85EwwZSVZDHWsXDJvP5LmzsNWgJJUq00bY/hrd70ic=;
        b=CF+BYlwOZ3A6Q3ec6GNJdjAP6rwZCQFPaWHZDS0NU43Z1uRD9L0wrAPPQnL8Y4PDw8
         fUWrykr/gxIpZl3o+6C6aRNi28bKgQOXWNV3IknF89RPRqOAM1RvPh3jcqqz9xn9SHs3
         D5pWs01aOq/pw4PJrv5reG+47SwtGY2ai7z9vVHL48guL8XMY1PS6Co0zWP6EkRgvFWk
         90iB7uAyxOkfMDFFn/UXYjnngs+oFr87BFFtzsg3wdXUIx8jBF/Dn6csm0nshCtG0uPa
         4Jwh5OXCogExB85905TGEmYrjjGZvzxIxONT4Nt6SjEibSG+JZ5NWzbtAQM/CxxQsFR4
         W46w==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20251104; t=1775738941; x=1776343741;
        h=content-transfer-encoding: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;
        bh=M85EwwZSVZDHWsXDJvP5LmzsNWgJJUq00bY/hrd70ic=;
        b=ry16MEjnJPLZScRLkeeEgrCUe0R/uLjuUUtgesXCZk+zHbXzjaMqtUcDxC2eNCs4Qs
         MfCic9R90ZstrYEXK/gYIFeoD3/Oj3Kc55nYifGZCgmcIkJHOvGykYVZ/S1jBso2PaNc
         tRJUvLZCV6+tENxGwbdaLqh+M69+5don6kofbMYaBgtn+prPA9DJjvgPNQ759N7+7O0J
         +R+xeo1ILs2KNu/9zJUTYpQxq0wqg7DTZnZLfXUvnY4mVbN+JcniJaF4T7IhpEF7XCCz
         KRUoPqNuKuNrygi9QndMpT01+IkZbKApR0PmkF0SkkGnYXbbQdkqquXpPN17ZsifQmNm
         LIsA==
X-Gm-Message-State: AOJu0Yxs+nVpZV7WSUQNDaTEDHrmfRFymW4N21Nu1pKS79uAEX5ws0Za
	0bes36YJt1+X539qaZ/i2+37GiEvD9TSnhepFWlbqLJTcyVOvEj5oOIC1i8b5gCmLQ==
X-Gm-Gg: AeBDietlNhLp0lCFPWE5JbNHadDk3GxckUjQdGsXSd0CvQj42TZEvqcMG+nd/rU/4xG
	YS5VP5gyTQZrxbGF94uurrrjgtN/kon+LMjIxF57LHM0q4NCYGOawnBvksviuUSlbEbVGswMxtX
	sBEckZQG2VrATuK36m+PUyNtrqUgBJLdCWMa0YvORZc0wW7PdJ/Hhn59RtWhu1neb+CS6JBqnil
	j40kAYeQHgQFBeG7srC0ij/mTu+5tzxaqIpfj7l59xaUaEP0vhIcYiGSLHyGR8H35uveZOVH2hh
	A/iboiShEx43otkzIjf+Je9yByXNRSCDdWWBJIqGLz3uMapXWpTEj0NsBOM5IZQNbPEtB/iDUqu
	kEISiMMyb+vymY4mDTUMseKDeMfUMGABORcJAJX8Sq3cX/C+kev5PSHMT7LlEziYzY2c5bshMf3
	h/g6OurkzhBnlSJHLKvRjy/Sd5Eb4Vf2CCsm04o52jBX43/OP63FEhA0xSuI9CC0fc0OaGCpKER
	IEn7hKJwyk4yFs=
X-Received: by 2002:a05:6000:22c8:b0:43c:fa96:d939 with SMTP id ffacd0b85a97d-43d5a14bbdcmr4670286f8f.22.1775738941468;
        Thu, 09 Apr 2026 05:49:01 -0700 (PDT)
Message-ID: <db87a55a-5bd2-44ab-8814-1ffec91d1b40@suse.com>
Date: Thu, 9 Apr 2026 14:48:59 +0200
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH 2/3] xen/common: llc-coloring: Fix off-by-one in
 parse_color_config()
To: Luca Fancellu <Luca.Fancellu@arm.com>
Cc: "xen-devel@lists.xenproject.org" <xen-devel@lists.xenproject.org>,
 Andrew Cooper <andrew.cooper3@citrix.com>,
 Anthony PERARD <anthony.perard@vates.tech>, Julien Grall <julien@xen.org>,
 =?UTF-8?Q?Roger_Pau_Monn=C3=A9?= <roger.pau@citrix.com>,
 Stefano Stabellini <sstabellini@kernel.org>,
 Michal Orzel <michal.orzel@amd.com>
References: <20260409113934.197619-1-michal.orzel@amd.com>
 <20260409113934.197619-3-michal.orzel@amd.com>
 <EEF7C308-F25C-46BA-9663-BA789B49429C@arm.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: <EEF7C308-F25C-46BA-9663-BA789B49429C@arm.com>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 7bit
X-purgate-ID: tlsNG-ef75cf/1775738942-1195141E-ACA91884/0/0
X-purgate-type: clean
X-purgate-size: 1038

On 09.04.2026 14:22, Luca Fancellu wrote:
>> On 9 Apr 2026, at 12:39, Michal Orzel <michal.orzel@amd.com> wrote:
>>
>> The check uses >= to compare the total number of colors against
>> max_num_colors (which is ARRAY_SIZE of the colors array).  This
>> incorrectly rejects input that would exactly fill the array.
>>
>> For example, with NR_LLC_COLORS=16, specifying 1 color for Xen and 15
>> for dom0 would fail.
>>
>> Change >= to > so that exactly filling the array is permitted.
>>
>> Fixes: 95ef5ddf8a ("xen/arm: add Dom0 cache coloring support")
>> Signed-off-by: Michal Orzel <michal.orzel@amd.com>
>> ---
> 
> Reviewed-by: Luca Fancellu <luca.fancellu@arm.com>

Did you see Andrew's reply? If that earlier (recent) commit was wrong, I
think a 2nd Fixes: tag may be needed here. For now I can't help the
impression though that there might have been a re-basing mistake, where
that re-base may have wanted to result in this patch dissolving into
nothing. Yet of course I'm all ears to learn otherwise.

Jan


From xen-devel-bounces@lists.xenproject.org Thu Apr 09 12:53:49 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 09 Apr 2026 12:53:49 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1277284.1562494 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wAotG-0003Ph-1Q; Thu, 09 Apr 2026 12:53:46 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1277284.1562494; Thu, 09 Apr 2026 12: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 1wAotF-0003Pa-Ul; Thu, 09 Apr 2026 12:53:45 +0000
Received: by outflank-mailman (input) for mailman id 1277284;
 Thu, 09 Apr 2026 12:53:44 +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 1wAotE-0003PS-IH
 for xen-devel@lists.xenproject.org; Thu, 09 Apr 2026 12:53:44 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wAotD-005WOX-Sr
 for xen-devel@lists.xenproject.org; Thu, 09 Apr 2026 14:53:43 +0200
Received: from [10.42.69.3] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <Michal.Orzel@amd.com>)
 id 69d7a14a-2eae-0a2a0a5409dd-0a2a4503ecba-14
 for <xen-devel@lists.xenproject.org>; Thu, 09 Apr 2026 14:53:43 +0200
Received: from [52.101.61.42]
 (helo=DM1PR04CU001.outbound.protection.outlook.com)
 by tlsNG-33051d.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.0)
 (envelope-from <Michal.Orzel@amd.com>)
 id 69d7a156-02b3-0a2a45030019-34653d2a4a58-3
 for <xen-devel@lists.xenproject.org>; Thu, 09 Apr 2026 14:53:43 +0200
Received: from BLAPR03CA0081.namprd03.prod.outlook.com (2603:10b6:208:329::26)
 by LV3PR12MB9268.namprd12.prod.outlook.com (2603:10b6:408:216::15)
 with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9769.17; Thu, 9 Apr
 2026 12:53:32 +0000
Received: from BL6PEPF0001AB50.namprd04.prod.outlook.com
 (2603:10b6:208:329:cafe::d2) by BLAPR03CA0081.outlook.office365.com
 (2603:10b6:208:329::26) with Microsoft SMTP Server (version=TLS1_3,
 cipher=TLS_AES_256_GCM_SHA384) id 15.20.9769.37 via Frontend Transport; Thu,
 9 Apr 2026 12:53:32 +0000
Received: from satlexmb07.amd.com (165.204.84.17) by
 BL6PEPF0001AB50.mail.protection.outlook.com (10.167.242.74) with Microsoft
 SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id
 15.20.9769.17 via Frontend Transport; Thu, 9 Apr 2026 12:53:32 +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.17; Thu, 9 Apr
 2026 07:53:32 -0500
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.17; Thu, 9 Apr
 2026 05:53:32 -0700
Received: from [10.252.147.171] (10.180.168.240) by satlexmb07.amd.com
 (10.181.42.216) with Microsoft SMTP Server id 15.2.2562.17 via Frontend
 Transport; Thu, 9 Apr 2026 07:53:30 -0500
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@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=IWGl0q7hJuK6UeMBaBvB+p5fmAJRDnr7enONSDsQS7+TKeYgpnThfiSwP3sNHFMxRODaiYlPIF6Zm5GXo36rLMDFt8rLj39qoI88be2XPtta9xUnrAtAzJNCGTVg/DyXai5hNY/Rs6te58gxNLccPuuixa3ZxFE07plRMzvG6v86gV5kCsN0Er/y9VzYZPE9VoKIss+IzYVm71/8oAXd+incrVyVsRc4mlatcaaroju1VLXarjh401WuvIs8XJsKR2di2rpljkGpdynyyYyQpsM6i3T56Fn2kcWOKp0B8Cc0EK7qXoszS/zJYZ/lnkPEQtzoyGCvnHDfFUC76CF5Iw==
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com;
 s=arcselector10001;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1;
 bh=jpTCFJTNVn3cepBCTQQNLq1I8sssaVC5/ZeAGynFNfc=;
 b=yx08/UfeW2pVSN0zgcIoMmNbhLZiTjojs5yIh54cA+RsAGSi3I/ezIg4xOzdY+JONdZdpR9DHLsKVYWP8PT752Zz13/i/W+ASUxm5c3NtD8jR5n2Pw4mol6ko3zcnGj8TlBdgFu6rabMK3nyuenqyH9KWEDtkYiYueukZonHnDNYjq1lfuz4kRzUZlWiGZvj0Nq9plfOUovDwTVov9KQwzGEFI+C4KsM6Az2kPo74uKazZaTe0rWuoF1zUUoU1FWdKviz8sTpEv20VgBmYsnm1Wu+P+i/671wTO+7mI+a3Pz65feB7lbFevK4YsFxOmldI27txkfL7r0IGUFjQUDsQ==
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=jpTCFJTNVn3cepBCTQQNLq1I8sssaVC5/ZeAGynFNfc=;
 b=TX75dKAB7vaP+gr/9sRVxgw63pIWvbdWJrGjwIYhGxjsexjePncitbYKdEU/L7fSq3p2ugNXAzg+8cPz3+4VzXD982NGJYaahhghSQdZONfJ+nWgy+lUSakZm1+WBI5tjW5vsB4uXFdYaPg1tvqr1MQse1G9aYyxsb54NEnuZys=
X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 165.204.84.17)
 smtp.mailfrom=amd.com; dkim=none (message not signed)
 header.d=none;dmarc=pass action=none header.from=amd.com;
Received-SPF: Pass (protection.outlook.com: domain of amd.com designates
 165.204.84.17 as permitted sender) receiver=protection.outlook.com;
 client-ip=165.204.84.17; helo=satlexmb07.amd.com; pr=C
Message-ID: <43995524-5c3e-444c-80a1-849e3e1d9430@amd.com>
Date: Thu, 9 Apr 2026 14:53:30 +0200
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH 2/3] xen/common: llc-coloring: Fix off-by-one in
 parse_color_config()
To: Andrew Cooper <andrew.cooper3@citrix.com>,
	<xen-devel@lists.xenproject.org>
CC: Anthony PERARD <anthony.perard@vates.tech>, 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>
References: <20260409113934.197619-1-michal.orzel@amd.com>
 <20260409113934.197619-3-michal.orzel@amd.com>
 <2ae13059-e0ba-4cf7-bda0-9a21cd428509@citrix.com>
From: "Orzel, Michal" <michal.orzel@amd.com>
Content-Language: en-US
In-Reply-To: <2ae13059-e0ba-4cf7-bda0-9a21cd428509@citrix.com>
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: 7bit
X-EOPAttributedMessage: 0
X-MS-PublicTrafficType: Email
X-MS-TrafficTypeDiagnostic: BL6PEPF0001AB50:EE_|LV3PR12MB9268:EE_
X-MS-Office365-Filtering-Correlation-Id: df2c70e7-85d4-4146-b256-08de9637019a
X-MS-Exchange-SenderADCheck: 1
X-MS-Exchange-AntiSpam-Relay: 0
X-Microsoft-Antispam:
	BCL:0;ARA:13230040|82310400026|376014|1800799024|36860700016|13003099007|22082099003|56012099003|18002099003;
X-Microsoft-Antispam-Message-Info:
	r+7K9PUjl9AE3Ed7h8aYXV+2YwELLhopjHvenw4P6Jbabo0MhpEwhhsoI6qWlQCV2jL8Yzgme8HBoevTnayqUl80cKTyY64Uaefk/jqrx7tenfGRRgoOW2nxSaBYcuwk4viCzm2UX0yhn2JieMinoQodCurmWQv2Qf8iTa3B5e9QIzvtCMQPnNbiuZc8b3rqeIn63aeOXE9xrdV8k2Wr6GuQV4Nn/j7fxntJ/Iy0WlmQ8tpWjN2MNAvbMFs/FPsDYTSebHU+TC7Z9QdT1cugjNDh4aplbFoP+/cTzgrpD7iUGf86reHjOVv51Zj5sGxqUIR3x7HMQ8aTrRWA3B+G6u3UFByeFBpepzRBykJVdelsmNsrncBZifWn7r89Ysyj6nR1feBPoZAb7oGXr3s+dmK0uK0Lj8FXDFeOnNE1cPcCqPh5ynCYzP4kvbBiYJVMQyRaWHF/vr9C6vqpe9ta1SJ4UscWpW7o1SS550hlCBdJCWHjZ+xqvZqDe26ML/Y0zwHyrHqRamWB4qA39oPptUMgEb/YekZ9EroOzskUu1/sCkpVzVnbhT3GKAa0kR+WcniuJWRSOx6wwwJfUBD+pLsD7CBUHpBAlQq53aJPoerubCAqL0H5KWfZPyg9BQZo5OE6+ePJEmnKC+gCxD+2PMmE/qB0iX1DskzXTnT88nUvR+8IRWqxIww82xoPlsI3kE6Es5JS47tpuwadJ69sLgWTiGG7wWYFp5qcCPbhbgo=
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)(376014)(1800799024)(36860700016)(13003099007)(22082099003)(56012099003)(18002099003);DIR:OUT;SFP:1101;
X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1
X-MS-Exchange-AntiSpam-MessageData-0:
	JLpEPDp0ACAnB6eoeZGoPIloeJjEhvfP4cj1aYGfE6qWRCazgctirOqat1TKi8sTMEacwV1PnRTb5icwbujWgOzI0L/3gAl3sRjdKNeyT5pMTygw86UitcQIe2kC8dw5y6T69TPiFGzctZMdN6L5TpA2CaajW+aTbnyWGfvuPrGur7iozQcvjK0RJYeotUBcySlMWN26vDndSpMh9br3IAWt0KT7MMMdCElOIRxkAprJxy3PDE1pr3NJXr2kqmCgykfqNJVJ8zIikMmwd7v4huwYZOUhzzMPYdTt3DvEzzZgYtVNZNRhrVqtEelXMscYaM4/UIfxapGUODUUEWgemUUnY6bIlKfvjYiu5Qr84O2cfE9k5BBkzAN5qR5c3h0xI3WUzQ2W28USxC8BrmKSD7qCx8i2Sax4xwFoCHdWhRbj3uZf9JU5l/MgBCJs8jUc
X-OriginatorOrg: amd.com
X-MS-Exchange-CrossTenant-OriginalArrivalTime: 09 Apr 2026 12:53:32.7026
 (UTC)
X-MS-Exchange-CrossTenant-Network-Message-Id: df2c70e7-85d4-4146-b256-08de9637019a
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:
	BL6PEPF0001AB50.namprd04.prod.outlook.com
X-MS-Exchange-CrossTenant-AuthAs: Anonymous
X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem
X-MS-Exchange-Transport-CrossTenantHeadersStamped: LV3PR12MB9268
X-purgate-ID: tlsNG-33051d/1775739223-CA520C9A-E5E3A19F/0/0
X-purgate-type: clean
X-purgate-size: 1921



On 09/04/2026 13:47, Andrew Cooper wrote:
> On 09/04/2026 12:39 pm, Michal Orzel wrote:
>> The check uses >= to compare the total number of colors against
>> max_num_colors (which is ARRAY_SIZE of the colors array).  This
>> incorrectly rejects input that would exactly fill the array.
>>
>> For example, with NR_LLC_COLORS=16, specifying 1 color for Xen and 15
>> for dom0 would fail.
>>
>> Change >= to > so that exactly filling the array is permitted.
>>
>> Fixes: 95ef5ddf8a ("xen/arm: add Dom0 cache coloring support")
>> Signed-off-by: Michal Orzel <michal.orzel@amd.com>
>> ---
>>  xen/common/llc-coloring.c | 2 +-
>>  1 file changed, 1 insertion(+), 1 deletion(-)
>>
>> diff --git a/xen/common/llc-coloring.c b/xen/common/llc-coloring.c
>> index eb7c72b24023..30c1594dac9f 100644
>> --- a/xen/common/llc-coloring.c
>> +++ b/xen/common/llc-coloring.c
>> @@ -78,7 +78,7 @@ static int __init parse_color_config(const char *buf, unsigned int colors[],
>>  
>>          if ( end >= NR_LLC_COLORS || start > end ||
>>               (end - start) >= (UINT_MAX - *num_colors) ||
>> -             (*num_colors + (end - start + 1)) >= max_num_colors )
>> +             (*num_colors + (end - start + 1)) > max_num_colors )
>>              return -EINVAL;
>>  
>>          /* Colors are range checked in check_colors() */
> 
> This boundary was changed by
> https://xenbits.xen.org/gitweb/?p=xen.git;a=commitdiff;h=cba8a584de171c8c4510709c2edc9f1cf86b21ab
> because it was off-by-one.
> 
> Are you saying that the analysis in that patch was wrong?
I examined the scenario that is a default for dom0 i.e. dom0 gets all the colors
by default. This is equivalent to setting dom0-llc-colors=0-15. If I set this, I
will get a message:
(XEN) parameter "dom0-llc-colors" has invalid value "0-15", rc=-22!

I admit that I added wrong example in commit msg.

~Michal

> 
> ~Andrew



From xen-devel-bounces@lists.xenproject.org Thu Apr 09 12:53:53 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 09 Apr 2026 12:53:53 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1277285.1562503 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wAotN-0003eZ-7y; Thu, 09 Apr 2026 12:53:53 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1277285.1562503; Thu, 09 Apr 2026 12:53: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 1wAotN-0003eS-57; Thu, 09 Apr 2026 12:53:53 +0000
Received: by outflank-mailman (input) for mailman id 1277285;
 Thu, 09 Apr 2026 12:53:51 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <Luca.Fancellu@arm.com>) id 1wAotK-0003dV-PV
 for xen-devel@lists.xenproject.org; Thu, 09 Apr 2026 12:53:51 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wAotJ-005WOX-Ul
 for xen-devel@lists.xenproject.org; Thu, 09 Apr 2026 14:53:50 +0200
Received: from [10.42.69.10] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <Luca.Fancellu@arm.com>)
 id 69d7a143-2eae-0a2a0a5409dd-0a2a450aaaf4-20
 for <xen-devel@lists.xenproject.org>; Thu, 09 Apr 2026 14:53:49 +0200
Received: from [52.101.83.18]
 (helo=GVXPR05CU001.outbound.protection.outlook.com)
 by tlsNG-4011c0.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.0)
 (envelope-from <Luca.Fancellu@arm.com>)
 id 69d7a15c-ee98-0a2a450a0019-34655312ed73-3
 for <xen-devel@lists.xenproject.org>; Thu, 09 Apr 2026 14:53:48 +0200
Received: from DU7PR01CA0038.eurprd01.prod.exchangelabs.com
 (2603:10a6:10:50e::20) by AS2PR08MB10228.eurprd08.prod.outlook.com
 (2603:10a6:20b:648::19) with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9769.18; Thu, 9 Apr
 2026 12:53:42 +0000
Received: from DU2PEPF00028D00.eurprd03.prod.outlook.com
 (2603:10a6:10:50e:cafe::4d) by DU7PR01CA0038.outlook.office365.com
 (2603:10a6:10:50e::20) with Microsoft SMTP Server (version=TLS1_3,
 cipher=TLS_AES_256_GCM_SHA384) id 15.20.9769.40 via Frontend Transport; Thu,
 9 Apr 2026 12:53:42 +0000
Received: from outbound-uk1.az.dlp.m.darktrace.com (4.158.2.129) by
 DU2PEPF00028D00.mail.protection.outlook.com (10.167.242.184) with Microsoft
 SMTP Server (version=TLS1_3, cipher=TLS_AES_256_GCM_SHA384) id 15.20.9769.17
 via Frontend Transport; Thu, 9 Apr 2026 12:53:42 +0000
Received: from DU2PR08MB7272.eurprd08.prod.outlook.com (2603:10a6:10:2d7::16)
 by AS8PR08MB9267.eurprd08.prod.outlook.com (2603:10a6:20b:5a3::20)
 with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9769.17; Thu, 9 Apr
 2026 12:52:38 +0000
Received: from DU2PR08MB7272.eurprd08.prod.outlook.com
 ([fe80::5d34:206f:373:a323]) by DU2PR08MB7272.eurprd08.prod.outlook.com
 ([fe80::5d34:206f:373:a323%6]) with mapi id 15.20.9769.018; Thu, 9 Apr 2026
 12:52: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=arm.com header.i="@arm.com" header.h="From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck"; dkim=pass header.s=selector1 header.d=arm.com header.i="@arm.com" header.h="From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck"
ARC-Seal: i=2; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=pass;
 b=a1uqdUafxy0TuFXHMMbfTyxdX4NE/S1aQPBdoOpFwLvUkEqUWCvZxBchfn+k+bSGYVrrvNNabbkP9sh39TYou5ZQwwxSURXo4or92Y6bjDn+40Ygd1unfvh4KvE5FjEdl4tXu+3CCMRe4BWUE7TRMz85VbmSYqcHIhjz4IO2NN1yzfBNfY1O3uMqDAdx4udNLbz+AJMpU1i+D3RS8ZJfGb22uMaqnXzlQHI/jsp+mPmExrUs0vqavR0YS+DQIrS3AUK1KuUH/j0ytI9IC0sT37roCOKn7ue+2clWy4anUerNslUIz9VD9uevRDx2d3Irx7953rWFODey30oshpFq7w==
ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com;
 s=arcselector10001;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1;
 bh=7Ry1nLhn8aE/3+ejlD8Hkoinjt5LouqGIiM6a9TdlKA=;
 b=kowDhH/7nBq4sGiXlHD1ySiyHOnrVqRmH+26FcRsArXOB7EL2L7OlcgZUj9k3AV3tqu8RVTaS2JrtY+YV1dr1EIRrUKyUobuMmUqot5MzHfqQ6z0iEoc4rce3WFy0ouPJNOOH/FF6Dz452c32GBIijbZt0cMcQW3cLrsZJDeeD39nVJjGYJNeB+16WJBRBLxE0VrY+bSQqXWYFQVGr8Pdk+vyubA4EmNgYzuQspoOk0Y3Hhyq5HV7eoZXWV0b5Z3yKteY7y/EjABdsV8eOZd+8fAHnB5DOBqewdFztN7rPDIzkJ1B2AFM29xzSEQQXZQu5c9QTpuhhuVe5pTeJYBtg==
ARC-Authentication-Results: i=2; mx.microsoft.com 1; spf=pass (sender ip is
 4.158.2.129) smtp.rcpttodomain=suse.com smtp.mailfrom=arm.com; dmarc=pass
 (p=none sp=none pct=100) action=none header.from=arm.com; dkim=pass
 (signature was verified) header.d=arm.com; arc=pass (0 oda=1 ltdi=1
 spf=[1,1,smtp.mailfrom=arm.com] dkim=[1,1,header.d=arm.com]
 dmarc=[1,1,header.from=arm.com])
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=arm.com; s=selector1;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck;
 bh=7Ry1nLhn8aE/3+ejlD8Hkoinjt5LouqGIiM6a9TdlKA=;
 b=Wy5Tvgl6zHFh1dIMab7uETI2L0wdF+87Vm9J471nWFsMZ3BqlU/ZJGJMLR3pEYAqVkt2pr9q6BDEHBwahhtM3CohWw+U3OmrwtHLzDOBWAFOf4lrXLCSEfZkdnVE0q0H61ec+dcU3Gg/34XYrXrou3wXPV5pw78CwfIZF2myTjE=
X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 4.158.2.129)
 smtp.mailfrom=arm.com; dkim=pass (signature was verified)
 header.d=arm.com;dmarc=pass action=none header.from=arm.com;
Received-SPF: Pass (protection.outlook.com: domain of arm.com designates
 4.158.2.129 as permitted sender) receiver=protection.outlook.com;
 client-ip=4.158.2.129; helo=outbound-uk1.az.dlp.m.darktrace.com; pr=C
ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none;
 b=ocYVy7SmYmL9y8hqiCNq4XWvVlA5nX5zc9+z3I2z4BJa01flNWgrIWFe47/92wZ5hRjKN2PxwMY6P86chHx+qFbbk0rw0Hg8QNsoDRiRFj601cTce12OW3gqZawKA0ef0RSJ9EI15bwT/3H+XLV3O6i0GtD0ur/npAp9y/yp/c4eEgYwt+sa95jIjD3YhMcNvjeEtWdToa6dWagWkIUqE0A5ue2sQkrAOc7zAtEX1Z/+nbbcz+Iio1cwg4YBBSW68KMOtb1z5b980uvrR5UZpNg18B9j7wxesJb5ttXNXRSQxUn8uZW+LA61t0KXSU0d/DGLDNj32n2cL/EYsK730A==
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com;
 s=arcselector10001;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1;
 bh=7Ry1nLhn8aE/3+ejlD8Hkoinjt5LouqGIiM6a9TdlKA=;
 b=sSeqUYiqxPt0PI0KoOEJe9F1wYHkuUkKJfSK8IZ4zid6KXcjO1tpoX+od0rP7RR74s76AiMtMw+GGc8619rDJrJrWxeLUlmQP00wqg6TeXrJASNF5epEazSai5zYdBqpU7jqndR1wAEsjOJ1Nytw4qijiOkMA4ibh4zWStkNKaPNPQ0Gxk6HH/N798vEKJ0j4QKUs+k6tXucLg1E2jZ45f6RJ/M7NaVaQFsx7rs4SV4Km1kwDur9nzBFy/AQV7Zq0QVYAHJrxHlYm+Ars+qiaMcGnqdhJz8O4C8KEi/xUPwapPaphYnR33xOPwUnce6w13SMJb5pLUQIPgYnoHlqKQ==
ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass
 smtp.mailfrom=arm.com; dmarc=pass action=none header.from=arm.com; dkim=pass
 header.d=arm.com; arc=none
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=arm.com; s=selector1;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck;
 bh=7Ry1nLhn8aE/3+ejlD8Hkoinjt5LouqGIiM6a9TdlKA=;
 b=Wy5Tvgl6zHFh1dIMab7uETI2L0wdF+87Vm9J471nWFsMZ3BqlU/ZJGJMLR3pEYAqVkt2pr9q6BDEHBwahhtM3CohWw+U3OmrwtHLzDOBWAFOf4lrXLCSEfZkdnVE0q0H61ec+dcU3Gg/34XYrXrou3wXPV5pw78CwfIZF2myTjE=
From: Luca Fancellu <Luca.Fancellu@arm.com>
To: Jan Beulich <jbeulich@suse.com>
CC: "xen-devel@lists.xenproject.org" <xen-devel@lists.xenproject.org>, Andrew
 Cooper <andrew.cooper3@citrix.com>, Anthony PERARD
	<anthony.perard@vates.tech>, Julien Grall <julien@xen.org>,
	=?utf-8?B?Um9nZXIgUGF1IE1vbm7DqQ==?= <roger.pau@citrix.com>, Stefano
 Stabellini <sstabellini@kernel.org>, Michal Orzel <michal.orzel@amd.com>
Subject: Re: [PATCH 2/3] xen/common: llc-coloring: Fix off-by-one in
 parse_color_config()
Thread-Topic: [PATCH 2/3] xen/common: llc-coloring: Fix off-by-one in
 parse_color_config()
Thread-Index: AQHcyBWdW2bjkWPifku6XWocvaXOWrXWpuWAgAAHZ4CAAADggA==
Date: Thu, 9 Apr 2026 12:52:37 +0000
Message-ID: <9A42538E-AB13-488E-9AEF-39CD7E8D3131@arm.com>
References: <20260409113934.197619-1-michal.orzel@amd.com>
 <20260409113934.197619-3-michal.orzel@amd.com>
 <EEF7C308-F25C-46BA-9663-BA789B49429C@arm.com>
 <db87a55a-5bd2-44ab-8814-1ffec91d1b40@suse.com>
In-Reply-To: <db87a55a-5bd2-44ab-8814-1ffec91d1b40@suse.com>
Accept-Language: en-GB, en-US
Content-Language: en-US
X-MS-Has-Attach:
X-MS-TNEF-Correlator:
x-mailer: Apple Mail (2.3826.700.81.1.6)
Authentication-Results-Original: dkim=none (message not signed)
 header.d=none;dmarc=none action=none header.from=arm.com;
x-ms-traffictypediagnostic:
	DU2PR08MB7272:EE_|AS8PR08MB9267:EE_|DU2PEPF00028D00:EE_|AS2PR08MB10228:EE_
X-MS-Office365-Filtering-Correlation-Id: d93056ef-874d-42d4-6441-08de9637073b
x-checkrecipientrouted: true
nodisclaimer: true
X-MS-Exchange-SenderADCheck: 1
X-MS-Exchange-AntiSpam-Relay: 0
X-Microsoft-Antispam-Untrusted:
 BCL:0;ARA:13230040|1800799024|376014|366016|38070700021|18002099003|22082099003|56012099003;
X-Microsoft-Antispam-Message-Info-Original:
 IxLvFiDJgOxpzbVcnTNfxPo9UMV8ZlREX/DaI1lSbhNIsxh2XqcV36YmfXn6QYmurNjs08Tk6N3LZv2JscT5aktwlE/FtBoKWUwMaLsc6bg+FV0O4swEOpxxFChYqnXNM7psVThXogoQ0lkLCzsEiYYT1hpIAPt4UTrLcWeDbW2hrcFJ4dzLlSVF3mADrLZLn4/X39UXHBsM44PaZcmCG2zWMZjPBsWwXXZ9O5UTlawlujJK0dPfvYcqaYeu+voUiQYuMj0/YvhAb31074aNpoRAUBOTeoMx3ri1m4JrPcJzCx0syQI/PwUrsVbLCDPqviZmDgtYucdcl3YVMPNPr8TtEKfI8p9aQ/G7nkHpea1oNQ9RHkibUdegvBbhn2HWPcJE4c3cMkiVm5+2QyB9NSzXTh4REqI+AbqtLCU8n/HzD1dc/l1KVsoLkxhBz1XikDoLvroY0ijIednvF+YsEkKfg6oZiEZ2YF7wnQ6XbqK6RfP6RUR1laGBtHSQoBIoGM3WNv/bYeMK/tB8jf+G/eISZN0p5RdbDCP3VTwV3lbwD7jQu5fhgPnzLSopZMhS8xsXFlMjMd6w8pm+p1ZAoqwj8zbfy90XTvP8U71VmlqFBNTY2YMkgg/NYvf8dvOEEFGGqnvNxKZnWjtgBJx1BV2EVKn8AvZBlsUJcsalkc5Ks0L1/unw3YIcy8SMDO8zPnxR2+PL/honLmQbvoJyGOYtOjlqCINOrckZO5ZwRKJl5ttOfcw16I7NoaQDkWnHvugwZarvjGL6sk3iRDR2otGWkki0XdLi12PEuv5VG5Y=
X-Forefront-Antispam-Report-Untrusted:
 CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:DU2PR08MB7272.eurprd08.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(1800799024)(376014)(366016)(38070700021)(18002099003)(22082099003)(56012099003);DIR:OUT;SFP:1101;
Content-Type: text/plain; charset="utf-8"
Content-ID: <CAC1836DF622894292AA325AEA5FE7A1@eurprd08.prod.outlook.com>
Content-Transfer-Encoding: base64
MIME-Version: 1.0
X-Exchange-RoutingPolicyChecked:
 g85VCcH35LzrFCvlW7EUnhzZUlH5PAOVbO3PTOj7WQvyc1MuzzEuVzUkpS/Qz0BoecqvVj9zy+x/hNp75AnOXlVOkGbmeLFBIQoosuP+TxXWXraH17iqUFsyAhiKoKBFjri8e3iblHwR28oRNzu3lprPDg7D1Jiu2kLfAo3uhiJ2824ZYyZ2r5mOfkE7fv0wFkCOrZJfYZfWYni53zXbpbEnK7D4Mk0Fx1plWNXjFrhKfgE24HSHXI70hO/S8548bi9iqONChVOWYTOFVl/I5bAI/2y38y/xfVEqwmYq8t+64p+awAwK/gbUmUHt2WjM6wz1IGFqEUK52bsrlwVm0w==
X-MS-Exchange-Transport-CrossTenantHeadersStamped: AS8PR08MB9267
X-EOPAttributedMessage: 0
X-MS-Exchange-Transport-CrossTenantHeadersStripped:
 DU2PEPF00028D00.eurprd03.prod.outlook.com
X-MS-PublicTrafficType: Email
X-MS-Office365-Filtering-Correlation-Id-Prvs:
	79d4e6e1-c5e9-459f-e2f5-08de9636e0e3
X-Microsoft-Antispam:
	BCL:0;ARA:13230040|376014|14060799003|35042699022|36860700016|1800799024|82310400026|56012099003|22082099003|18002099003;
X-Microsoft-Antispam-Message-Info:
	GkTf6PyuMmjSI4IYuEuI8k5p0d7vtZDJ3P0esVkUahHDlbr4ywSArBniGX8nhVdbFdAiBNxDK7yFWhPOZ8fhF4ZbIfcwZcsq0VycwbZJyaUIW4YJ+zJMSCcRTM5p3TYQEYc4s/UwNthZXtaMV765XZl2zNZ7X+oVDJdBzlttT2r4gM4jQB0kMNIZe4xCD7XtfZn6AT/uqnMlm+L7x/Y41oiBpsupZzNtNM2erKixYWLTrC1lNMUr+bFgx/H9m+H0W9ovXp/gyZ7PTSBry3t5C8LLwmCBYmnK5Kb4dnkC0dhr3owS1O6pujbx9AzNkV23NAdSMTthproDE1+QCZr1wTVy69ZnqO2SC4ttvyuv2pU+CUNVjT/WXzpZlK+JUTH37U3pMZtcHhj6x1apqxRE6v8H75c7IwF78Vlwthm/1BZ73NlJsWICJNSzR3972jtW5C+4zvwtmrXrmbI7576DfKhNqWoxtvzTChpZLhoHl47GScVEzEMOBpS4Ef+IiKM3Xyit/l9VggulvEA7YzGXjJG70Gn4JxRu+/VzFjFZp9t+zm6PFDhVKgX25r+jzF/gILqkC51OiUKwYYNclyrxyKeujz38RK5ZvaJvnOc1/EVCNq+8DmKsyekPSmzcjKT4xQDH26nFt77w2inzZJhOqK8zqs8HAVlwl+XfeevFX8fWLF+Y60QFUw2mluQf463Y3L32f9IO4BbrUTQIMmdF65CdudzzwqlntDKoWEyDIMND3F4cUdL1sB7t0nU1q3/vOJbjisP0Ytv9k5YWzvmcew==
X-Forefront-Antispam-Report:
	CIP:4.158.2.129;CTRY:GB;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:outbound-uk1.az.dlp.m.darktrace.com;PTR:InfoDomainNonexistent;CAT:NONE;SFS:(13230040)(376014)(14060799003)(35042699022)(36860700016)(1800799024)(82310400026)(56012099003)(22082099003)(18002099003);DIR:OUT;SFP:1101;
X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1
X-MS-Exchange-AntiSpam-MessageData-0:
	0yJdCZ1UKcmvtvHxpLt0n/Uvl0ulBibsuzOt5tMqCoy5o7a+BxkyVvp6tzt5erDfT3ZjUdHKfV55saNgZMO/6LT32Lz9LRe2tXk3hVSOxElAEV3RrTNjohhQof9zNOQcfIGtXiA2kAAeDlAQnwYmN7mhZ1AVKgqzhl+e9aBCJlaezlGh5od9Ot3hh5PiFFA7rrJwfXrpE9DHQijh2AEwkKMzB/bNR7EAPI4tbOKvMukMim7pHwCepzquyZCTC4tP5crFvN5Iu7pRVWwm8szTG97Ywp7ILSVrohRgHdReJ432Scn9IMZM1032c4qld6tIm19yWByLFsC0kL1/gn575m9yhZyF7waWkH76kcGOSwfnUynZVNLnqcAq2RfU/kYwA5ft1WAWXbNRuWHKd9wKXaJbwwIrGtYJT6qrfNM6RwkaIDwbJDo5SIJsw4vxeCk/
X-OriginatorOrg: arm.com
X-MS-Exchange-CrossTenant-OriginalArrivalTime: 09 Apr 2026 12:53:42.0791
 (UTC)
X-MS-Exchange-CrossTenant-Network-Message-Id: d93056ef-874d-42d4-6441-08de9637073b
X-MS-Exchange-CrossTenant-Id: f34e5979-57d9-4aaa-ad4d-b122a662184d
X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=f34e5979-57d9-4aaa-ad4d-b122a662184d;Ip=[4.158.2.129];Helo=[outbound-uk1.az.dlp.m.darktrace.com]
X-MS-Exchange-CrossTenant-AuthSource:
	DU2PEPF00028D00.eurprd03.prod.outlook.com
X-MS-Exchange-CrossTenant-AuthAs: Anonymous
X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem
X-MS-Exchange-Transport-CrossTenantHeadersStamped: AS2PR08MB10228
X-purgate-ID: tlsNG-4011c0/1775739229-0DB550B1-935C9E31/0/0
X-purgate-type: clean
X-purgate-size: 1726

DQoNCj4gT24gOSBBcHIgMjAyNiwgYXQgMTM6NDgsIEphbiBCZXVsaWNoIDxqYmV1bGljaEBzdXNl
LmNvbT4gd3JvdGU6DQo+IA0KPiBPbiAwOS4wNC4yMDI2IDE0OjIyLCBMdWNhIEZhbmNlbGx1IHdy
b3RlOg0KPj4+IE9uIDkgQXByIDIwMjYsIGF0IDEyOjM5LCBNaWNoYWwgT3J6ZWwgPG1pY2hhbC5v
cnplbEBhbWQuY29tPiB3cm90ZToNCj4+PiANCj4+PiBUaGUgY2hlY2sgdXNlcyA+PSB0byBjb21w
YXJlIHRoZSB0b3RhbCBudW1iZXIgb2YgY29sb3JzIGFnYWluc3QNCj4+PiBtYXhfbnVtX2NvbG9y
cyAod2hpY2ggaXMgQVJSQVlfU0laRSBvZiB0aGUgY29sb3JzIGFycmF5KS4gIFRoaXMNCj4+PiBp
bmNvcnJlY3RseSByZWplY3RzIGlucHV0IHRoYXQgd291bGQgZXhhY3RseSBmaWxsIHRoZSBhcnJh
eS4NCj4+PiANCj4+PiBGb3IgZXhhbXBsZSwgd2l0aCBOUl9MTENfQ09MT1JTPTE2LCBzcGVjaWZ5
aW5nIDEgY29sb3IgZm9yIFhlbiBhbmQgMTUNCj4+PiBmb3IgZG9tMCB3b3VsZCBmYWlsLg0KPj4+
IA0KPj4+IENoYW5nZSA+PSB0byA+IHNvIHRoYXQgZXhhY3RseSBmaWxsaW5nIHRoZSBhcnJheSBp
cyBwZXJtaXR0ZWQuDQo+Pj4gDQo+Pj4gRml4ZXM6IDk1ZWY1ZGRmOGEgKCJ4ZW4vYXJtOiBhZGQg
RG9tMCBjYWNoZSBjb2xvcmluZyBzdXBwb3J0IikNCj4+PiBTaWduZWQtb2ZmLWJ5OiBNaWNoYWwg
T3J6ZWwgPG1pY2hhbC5vcnplbEBhbWQuY29tPg0KPj4+IC0tLQ0KPj4gDQo+PiBSZXZpZXdlZC1i
eTogTHVjYSBGYW5jZWxsdSA8bHVjYS5mYW5jZWxsdUBhcm0uY29tPg0KPiANCj4gRGlkIHlvdSBz
ZWUgQW5kcmV3J3MgcmVwbHk/IElmIHRoYXQgZWFybGllciAocmVjZW50KSBjb21taXQgd2FzIHdy
b25nLCBJDQo+IHRoaW5rIGEgMm5kIEZpeGVzOiB0YWcgbWF5IGJlIG5lZWRlZCBoZXJlLiBGb3Ig
bm93IEkgY2FuJ3QgaGVscCB0aGUNCj4gaW1wcmVzc2lvbiB0aG91Z2ggdGhhdCB0aGVyZSBtaWdo
dCBoYXZlIGJlZW4gYSByZS1iYXNpbmcgbWlzdGFrZSwgd2hlcmUNCj4gdGhhdCByZS1iYXNlIG1h
eSBoYXZlIHdhbnRlZCB0byByZXN1bHQgaW4gdGhpcyBwYXRjaCBkaXNzb2x2aW5nIGludG8NCj4g
bm90aGluZy4gWWV0IG9mIGNvdXJzZSBJJ20gYWxsIGVhcnMgdG8gbGVhcm4gb3RoZXJ3aXNlLg0K
PiANCj4gSmFuDQoNCk9oLCBubyBJIGRpZG7igJl0IHNlZSB0aGF0ISBUaGFua3MgZm9yIHBvaW50
aW5nIHRoYXQgb3V0LCBJIHdpbGwgaGF2ZSBhIGNsb3NlciBsb29rLg0KDQpDaGVlcnMsDQpMdWNh
DQoNCg0K


From xen-devel-bounces@lists.xenproject.org Thu Apr 09 12:59:01 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 09 Apr 2026 12:59:01 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1277316.1562552 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wAoyH-0005Ld-A7; Thu, 09 Apr 2026 12:58:57 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1277316.1562552; Thu, 09 Apr 2026 12:58: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 1wAoyH-0005LW-7R; Thu, 09 Apr 2026 12:58:57 +0000
Received: by outflank-mailman (input) for mailman id 1277316;
 Thu, 09 Apr 2026 12:58:55 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <jbeulich@suse.com>) id 1wAoyF-0005LQ-Oe
 for xen-devel@lists.xenproject.org; Thu, 09 Apr 2026 12:58:55 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wAoyE-001khg-KR
 for xen-devel@lists.xenproject.org; Thu, 09 Apr 2026 14:58:54 +0200
Received: from [10.42.69.3] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <jbeulich@suse.com>)
 id 69d7a285-5cb7-0a2a0a5109dd-0a2a4503d516-16
 for <xen-devel@lists.xenproject.org>; Thu, 09 Apr 2026 14:58:54 +0200
Received: from [209.85.128.41] (helo=mail-wm1-f41.google.com)
 by tlsNG-33051d.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.0)
 (envelope-from <jbeulich@suse.com>)
 id 69d7a28e-02b3-0a2a45030019-d1558029c5d0-3
 for <xen-devel@lists.xenproject.org>; Thu, 09 Apr 2026 14:58:54 +0200
Received: by mail-wm1-f41.google.com with SMTP id
 5b1f17b1804b1-488af9fdaa7so5482005e9.1
 for <xen-devel@lists.xenproject.org>; Thu, 09 Apr 2026 05:58:54 -0700 (PDT)
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-43d1e2c5468sm66151539f8f.13.2026.04.09.05.58.53
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Thu, 09 Apr 2026 05:58:53 -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=google header.d=suse.com header.i="@suse.com" header.h="Content-Transfer-Encoding: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=1775739534; x=1776344334; darn=lists.xenproject.org;
        h=content-transfer-encoding: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;
        bh=s7UQ6fqoa1IViPHvjLpVDgn/Z+L61hz8IqLcvWYmV1M=;
        b=KcRVVA54sD/5N93OodIIbT82gpHYFcz9PTzy0GBBD5GYBn8fH6kgX8Vc4IpqNaWdaN
         OkhknpxqNqYtgQM3sdgVsDo1Fl7oh9iunZQMrQdhut//iy682KOJ9Z7Ztrh24zH9i2NX
         RSwpk+2qX1lWSwfCCYV40CZzOJBJA5lU1etoKBGHX3I5DzscEwk2KEcXMKsIzMM2nfhf
         qsIykB7H9N8FMJtoNJDv4RnZjH5OtC1hBBVoRprplZ+StNv14spHFv/wZen3EnbnkNfE
         kQ9lfVX9rHdtLUVkNAIeDHdLWMsN2rokM5DV4ed7sh/drBxcNFlEr5oczBZp6kdI1RXY
         35Og==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20251104; t=1775739534; x=1776344334;
        h=content-transfer-encoding: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;
        bh=s7UQ6fqoa1IViPHvjLpVDgn/Z+L61hz8IqLcvWYmV1M=;
        b=hi7NtyLXTFCC/13xhj6HMh44Lp9E2oflG4saBPQYRzMxcDALwfnwmZKVh7VLHrIeof
         u7lm91BqCrxzThqM6AMdcpy40AzAA5dZskX1auWcoNRq/yBdVrIHGoFxdMxjfAxQRRNO
         hbsRVsAFU4vZTF5kNu4zKJ4rhXfNATismkcrqm8aMudIIij74Xv5SOnJxynfCjqJY8s/
         Fu7GBVeXUsg7Y7RFztb5nosG38e1Ple65AhTUoFiHXgJq+yNOJm+Jao7qN+fm/Mlk+TC
         i73XetaJ/Rq96mA8coVkVIvtSchjnPGlfUfEDSQVGAL+Nv5D4JxZDbECZ+QOse9UMn/w
         HLJw==
X-Forwarded-Encrypted: i=1; AJvYcCWJN+Ez5/LAhZsZZP4APA/1FkUWACxzRl2h3uVbpTsYjKBqyNOZulJz6eysCFRfh/WW7eXuSUF1I0c=@lists.xenproject.org
X-Gm-Message-State: AOJu0YwKjF0RsZKvStnPYS2AR7EDmtdP1jneV7ddEtkDrWwJsMyv0H4R
	nzhPCqb67M6/gC1OK23SAIcGxFDLY/f4wwwQKzUjJvW0uOpUDdel/bn0w2gMQV5VUQ==
X-Gm-Gg: AeBDieuTsoKdq8zplqScOjb3qecKfpzrlQgcqZCg1s/feWPXL4+Y8/cF/zZB9Ha0civ
	3IFqe+bkFYzOJDLZCWCfq/BeYay4WVV1Dq1p7iBlR793FDZ7UznWIrDjaAj7aD3Fg9BC/j2TnwQ
	9Bl9a6RNi0LPigDocygj6Q+Wg1GS9IzFr5nfBnMqCPSDrkIQHKWzAkTvs+whoJSiUHsJcpjo1SR
	UDj+5y4WV5FQUs6a9TJdL3z9hZ4NMt4Z9Fjp9LSxxuo7SuOOTZJW30w/h/cTxwrjlR/m04Twe+L
	VLp6cW02riboQop9cnx16oZK+92rlmV7SmrQF3z+NoFHwPdac7c/u+YL/1u9QDiS+cGelwb0WIC
	OTcijmf/oeP/P6/G5T9VVL/Jxi15w6rG8o/cetmws/6Yr+HV78d87Z9pUqczTW4QDuCU3gsFFIS
	0UuJUZ0EzHR83sIVpkXJRzIy0SAV3yVLIUyPwqTk7tb8QOa7fK0BgolFHRaShu0ByDTA0NsxZTe
	TI52uIAyL9h8S0=
X-Received: by 2002:a05:600c:350e:b0:486:ffa3:594 with SMTP id 5b1f17b1804b1-488ccffa76bmr52705295e9.23.1775739533843;
        Thu, 09 Apr 2026 05:58:53 -0700 (PDT)
Message-ID: <c3e20570-6dbf-4dd9-86de-d334e0f71f3a@suse.com>
Date: Thu, 9 Apr 2026 14:58:52 +0200
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH v1 02/27] xen/riscv: Implement construct_domain()
To: Oleksii Kurochko <oleksii.kurochko@gmail.com>
Cc: Romain Caritey <Romain.Caritey@microchip.com>,
 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.pau@citrix.com>,
 Stefano Stabellini <sstabellini@kernel.org>, xen-devel@lists.xenproject.org
References: <cover.1773157782.git.oleksii.kurochko@gmail.com>
 <3a86599284108e6f2a27488a03145f8dd1b71def.1773157782.git.oleksii.kurochko@gmail.com>
 <cd1fa52a-0ff2-4b7f-9b0b-c33b6a01b6c8@suse.com>
 <95fc62d9-cfd4-4b75-a9b0-7e90c9ba1095@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: <95fc62d9-cfd4-4b75-a9b0-7e90c9ba1095@gmail.com>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 7bit
X-purgate-ID: tlsNG-33051d/1775739534-41311C9A-458187A4/0/0
X-purgate-type: clean
X-purgate-size: 3741

On 09.04.2026 13:26, Oleksii Kurochko wrote:
> On 3/24/26 10:37 AM, Jan Beulich wrote:
>> On 10.03.2026 18:08, Oleksii Kurochko wrote:
>>> --- /dev/null
>>> +++ b/xen/arch/riscv/domain-build.c
>>> @@ -0,0 +1,46 @@
>>> +/* SPDX-License-Identifier: GPL-2.0-or-later */
>>> +
>>> +#include <xen/fdt-domain-build.h>
>>> +#include <xen/fdt-kernel.h>
>>> +#include <xen/init.h>
>>> +#include <xen/sched.h>
>>> +
>>> +#include <asm/current.h>
>>> +#include <asm/guest_access.h>
>>> +
>>> +int __init construct_domain(struct domain *d, struct kernel_info *kinfo)
>>
>> Are you actually altering what kinfo points to?
> 
> Not directly in this function, but it could be altered, for example, by 
> kernel_image_load() where "info->entry = load_addr" is happening.

Ah, I see.

>>> +{
>>> +    struct vcpu *v = d->vcpu[0];
>>> +    struct cpu_user_regs *regs = vcpu_guest_cpu_user_regs(v);
>>> +
>>> +    BUG_ON(d->vcpu[0] == NULL);
>>
>> Why not simply "!v"?
> 
> It could work. I'll apply that.
> 
>>
>> Also, while in the cover letter you state a dependency on another series,
>> this is somewhat unwieldy here. From the titles there I can't deduce which
>> of the patches would introduce vcpu_guest_cpu_user_regs(). Yet I would
>> have wanted to double check that it doesn't de-reference v already.
> 
> It was already merged. It was part of:
>   xen/riscv: implement vcpu_csr_init() "02b3a1b0e53c"

Oh, indeed. Which makes clear that the BUG_ON() comes too late.

>>> +    BUG_ON(v->is_initialised);
>>> +
>>> +    kernel_load(kinfo);
>>> +    initrd_load(kinfo, copy_to_guest_phys);
>>> +    dtb_load(kinfo, copy_to_guest_phys);
>>
>> These all return void, despite this also being used for non-Dom0. Is it
>> really fatal to a dom0less system if one out of many domains fail to be
>> built?
> 
> For a dom0less system, my opinion is that it should not be fatal, it 
> should simply ignore a domain that fails to build and continue with the 
> rest. However, with the current common dom0less code it will just 
> panic(). This is a behavior I would like to change and it is on my TODO 
> list.
> 
> Regarding the functions returning void, this is because all of them 
> currently call panic() on failure, which I expect will need to change in 
> order to ignore a domain that fails to build in dom0less mode.
> 
> For the current implementation of the common dom0less code this is fine, 
> but I agree it should be addressed in a separate patch series.
> 
>   Especially when, despite the name, there is a Dom0?
> 
> For this case, a failure there should indeed be fatal, so panic() is 
> appropriate.

I think you misunderstood. I wasn't referring to the building of Dom0
failing. Was rather emphasizing that when there is a Dom0, failure to
create a DomU likely should even less so be fatal, as Dom0 could later
rectify the situation.

>>> +    regs->sepc = kinfo->entry;
>>> +
>>> +    /* Guest boot cpuid = 0 */
>>> +    regs->a0 = 0;
>>> +    regs->a1 = kinfo->dtb_paddr;
>>> +
>>> +    for ( unsigned int i = 1; i < d->max_vcpus; i++ )
>>> +    {
>>> +        if ( vcpu_create(d, i) == NULL )
>>> +        {
>>> +            printk("Failed to allocate %pd v%d\n", d, i);
>>> +            break;
>>
>> And no error is indicated to the caller?
> 
> No, as generally it is enough to have only one vCPU0 to run domain, so 
> we have to print that something went wrong with allocation of vCPU1...n 
> but it is okay to me to continue domain construction.

Hmm, now that I look there, sched_setup_dom0_vcpus() ignores errors
and doesn't even emit a log message. Question is why neither Arm nor
RISC-V use that function, when we have it.

Jan


From xen-devel-bounces@lists.xenproject.org Thu Apr 09 13:06:25 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 09 Apr 2026 13:06:25 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1277330.1562562 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wAp5Q-0006wJ-0Y; Thu, 09 Apr 2026 13:06:20 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1277330.1562562; Thu, 09 Apr 2026 13:06: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 1wAp5P-0006wC-Tl; Thu, 09 Apr 2026 13:06:19 +0000
Received: by outflank-mailman (input) for mailman id 1277330;
 Thu, 09 Apr 2026 13:06:19 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <Oleksii_Moisieiev@epam.com>) id 1wAp5O-0006w6-U0
 for xen-devel@lists.xenproject.org; Thu, 09 Apr 2026 13:06:19 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wAp5O-00DocB-5e
 for xen-devel@lists.xenproject.org; Thu, 09 Apr 2026 15:06:18 +0200
Received: from [10.42.69.4] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <Oleksii_Moisieiev@epam.com>)
 id 69d7a43e-5cb7-0a2a0a5109dd-0a2a4504d730-16
 for <xen-devel@lists.xenproject.org>; Thu, 09 Apr 2026 15:06:18 +0200
Received: from [52.101.66.116]
 (helo=DUZPR83CU001.outbound.protection.outlook.com)
 by tlsNG-ebf023.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.0)
 (envelope-from <Oleksii_Moisieiev@epam.com>)
 id 69d7a449-bb33-0a2a45040019-346542743460-3
 for <xen-devel@lists.xenproject.org>; Thu, 09 Apr 2026 15:06:17 +0200
Received: from DU5PR03MB10263.eurprd03.prod.outlook.com (2603:10a6:10:519::5)
 by AM7PR03MB6280.eurprd03.prod.outlook.com (2603:10a6:20b:13c::22)
 with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9769.18; Thu, 9 Apr
 2026 13:06:14 +0000
Received: from DU5PR03MB10263.eurprd03.prod.outlook.com
 ([fe80::8c9e:b301:61c0:3908]) by DU5PR03MB10263.eurprd03.prod.outlook.com
 ([fe80::8c9e:b301:61c0:3908%5]) with mapi id 15.20.9769.020; Thu, 9 Apr 2026
 13:06: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=F4lVvO4qL/Bgl/GmU8uk7soZBf8UvM3OS77gePxT8Fmq8i11iOk7vjDh6bWkCUZRhHrX4Bcs+mL3E0+cSitlzrlM2CAEgPHWCxoI/yz43b3xW5CDkhGmzLNt3jm+RgnFInGHZyRYODrNpGrjZGxJDbnDR9LwqnBTcyotgMg+QTfh5Pemy5YOSErs1hQvgABAQXawmcLklENyUW21pOf+ufl8ORxuEmBnJE30Qy7lGpisN4djpIBNG83Mpi8iKXkpacYQN01CRdHf3Sy7KY0XiS0nL+FWdcLpcfvZAaTDw7g8iMP2Kno+ISDYOGM/3YbuhnPBey/chogxaIQNXDPqhg==
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com;
 s=arcselector10001;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1;
 bh=k0Ly5MxtLFFmTRQKhDZ5zQHPP4uEQId4cHluN4LiXi8=;
 b=AA1MMxwL0osopM2G1JRM9hggvNjAKsQ8bNSbH3+TgMdm4YV3EzjdeFrVOeF0rzXHb9YXXiQ8zibvewK8gYXQHaglZWLsWhl12WXngsqQQlbNHiebBzgmbbsHpgO8DwMCu0iaCLdCddLmodOF6tCL9QfdqLZF7yeAdUdbkOwGaUKBEYjmJrzBP+T9A0NRDODAOcavfD3ZoR34gNx3nulZpJI4l5Zx0ctbYrxbfZnydeamSZFzVk8BwjCYwRlPPt9DdFJGRwoRy30g3/eayuuqCyVwfiaKlN/NJhnklDO12slgZxGZz/yioFnlHWNQ7mQTxQbuEiKzAV3BjNM3mSohZA==
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=k0Ly5MxtLFFmTRQKhDZ5zQHPP4uEQId4cHluN4LiXi8=;
 b=onaoUOk7aIX1P/dG2bJ1pT7HImMb44yENzihmkNiVJaGuoZHDWqZ/LIiYFTRJupqoqjS4eBmIGGfTHrCXWpRr7IJItBMR2UDSHejzopMSFSLJhwuUbLd88U6aInlJW5Td7yGekL/llt8duPOZCdFstKcEqvhEasdwggGwc/UnXoW78IdqcDIUZPuE8xx3xJeyUkTTwy2Q4AKE2Zn6ds9A0bXgYKvjX6DoY08IU0vABLCr0zq6iJSqCcwIH9XRxYKh01iuOFEUq4ULsgTX3LhpJEp4hpyVHV2ySZOsQCasCp0PrvoA5kSEEqV3gkcSvUiwmIVA3SXTsMMUM9TI+JOCw==
Authentication-Results: dkim=none (message not signed)
 header.d=none;dmarc=none action=none header.from=epam.com;
Message-ID: <52a2e3e2-6276-4f4b-8dfe-11d14fe727c3@epam.com>
Date: Thu, 9 Apr 2026 16:06:12 +0300
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH] xen/drivers/char: fix SCIF IRQ registration failure
 propagation
To: "Orzel, Michal" <michal.orzel@amd.com>,
 "xen-devel@lists.xenproject.org" <xen-devel@lists.xenproject.org>
Cc: Bertrand Marquis <bertrand.marquis@arm.com>, Julien Grall
 <julien@xen.org>, Stefano Stabellini <sstabellini@kernel.org>,
 Volodymyr Babchuk <Volodymyr_Babchuk@epam.com>
References: <6d1996b3d36e4d21e58c0e60876a1976db9a6208.1775667739.git.oleksii_moisieiev@epam.com>
 <464adb13-b702-45cd-a28a-71d3278feb4c@amd.com>
Content-Language: en-US
From: Oleksii Moisieiev <oleksii_moisieiev@epam.com>
In-Reply-To: <464adb13-b702-45cd-a28a-71d3278feb4c@amd.com>
Content-Type: text/plain; charset=UTF-8; format=flowed
Content-Transfer-Encoding: 7bit
X-ClientProxiedBy: FR2P281CA0184.DEUP281.PROD.OUTLOOK.COM
 (2603:10a6:d10:9f::16) To DU5PR03MB10263.eurprd03.prod.outlook.com
 (2603:10a6:10:519::5)
MIME-Version: 1.0
X-MS-PublicTrafficType: Email
X-MS-TrafficTypeDiagnostic: DU5PR03MB10263:EE_|AM7PR03MB6280:EE_
X-MS-Office365-Filtering-Correlation-Id: bbaa57ed-c747-4b77-73a1-08de9638c76d
X-MS-Exchange-SenderADCheck: 1
X-MS-Exchange-AntiSpam-Relay: 0
X-Microsoft-Antispam:
	BCL:0;ARA:13230040|376014|1800799024|366016|22082099003|18002099003|56012099003;
X-Microsoft-Antispam-Message-Info:
	xzoX5Cne704eGiavZCw4y807K0UIZUp++HDED3ewZj98pkvvBMV873IfQ5Lk/N60VMHh5EqkprmeJudJHD9mR44Ff7tthNl7/5laxpv91L1dv9OtUjkz7dJTTRJQgCJEkEB2gEN5DZsXlzFWdOGP4KDPLb67IBBU4PnCwvK5X+wcrBxVWDiRyK40VWpMZ+Y/ImhIh7XcT4ucfRHTYAThP4lc9AHPy9jonYDiYxnhIei6DNt3btqqSQt/Ujaftn2gYPoYXgUeU3eUWCtJFZSbkjQI4yALS840DiKvLguLYVp6/tNLKmMS1cCe9JxOerPszu48ImdR+wxMX6rJEjZ7ru56sqPVUoiK2+PjmxD3VFXhsmHdLVOT1TRhPJ6ESiYFosBfPbQgoP+DSEM0Zcnb0mMmoa1TIoXZOz1c1krO1sKqpRZbzCXwn3MqbIxweAubm0TZYBHS+Enhxt7eIbOIJcOp4gNFhWgC47k91JOba9s52hOTPEBxOp2dZ59P/1/YSDP4kuSVQt7cVeBO+IokFAvOBDR5deyK/tpPk6G4YnPALWPmrHVd3fN78+ZJuWFEYh/iijbt/tHjHKd3c9q/ERb4soFio6zgMjaVVKWDXSiFq2QwS4NMCQKK9fVo3bjYLvwiQwgFBelh++8m5J/PCZHKoS6DCtT75cOmQeuiCnFvFi9uTxbL25kSQyAG4Zk3tY0+wZJwv4BUrY/CfbtXgtUCuyU1lDWFnvgO/RvMeB8=
X-Forefront-Antispam-Report:
	CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:DU5PR03MB10263.eurprd03.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(376014)(1800799024)(366016)(22082099003)(18002099003)(56012099003);DIR:OUT;SFP:1102;
X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1
X-MS-Exchange-AntiSpam-MessageData-0:
	=?utf-8?B?eUdtVG0xR3J4TEMyS3RXL3BPWi9Kbk50bHRyZjRJcWhmakdjNUZxNHI3d1Bz?=
 =?utf-8?B?N1ZiN1k2RXl3Q1FXdHBvd0hvU1hNVlAyMnM3SW81V1pmRHhLdnJTRFRVVUdn?=
 =?utf-8?B?N0RDbHliclcyOFNWRmFpR1lneVJNY1NxTjVzYUJsVFVvanM5S3RhYjA1Tmlp?=
 =?utf-8?B?QkI1WWVYcEtSK3pDSVdMSXNvRDRiL0RqQVI4d2hyTVdkWG1IUy9xTnljaDBq?=
 =?utf-8?B?UFdPdnV4RVNmUUJnYTUrWlZoTHFySzFkSmNPejlrTlhLaHhPa0krdUZ0a3NL?=
 =?utf-8?B?dGVndUR3RjVjVWNGcW9Vc0pqdzZTdlAwVENLQmpjT21zTzgraVRxcVRlYW9S?=
 =?utf-8?B?Q0FNR3NLNER4Nzc3WFhUaXlqWFl4dXg0TWliRWtYUU90cHIzdWxpRGRJNUpZ?=
 =?utf-8?B?TnZ3dU85Zk8zblFIc0UrNFNVQjYrdURObXQ5dlQ4WGVXTENlZzdwV0ZzSCtW?=
 =?utf-8?B?UWNBTmZJVWJPbTBINGJDcDFCem9kbmlYbEZMTGFEREMrbHFxR3NmUmtQejRK?=
 =?utf-8?B?UlNDQ3BRS2V2MzNPRGh5MXhpc1g1Q0I5M3kxSHh2d1ltMFRjdFNVWkVrZFU1?=
 =?utf-8?B?RTZjenRSNXBRY1k5cVhRc1lSTnczRlV1bk1JMUZ4QWNyTHB4cWNtN3R4QWxO?=
 =?utf-8?B?SmtTMklWZU83bCthZjZoQTg3dnJxbWI3WUNVZVp3Q0F5anNLVXVpblhUNmpq?=
 =?utf-8?B?WTd5SzRRMDZ1VkJFQXp6bE9UaDlaNG9KZE5KNFRIMktjeVdiSUg0UGUrR0pj?=
 =?utf-8?B?dy9WQ1YxYlJ0ejUwQlNUZVJWbzI1czRPL2Y0V1ZQRzRmVDM5VVRMUWt2WkZD?=
 =?utf-8?B?M1JpaDl0TERRUHNxdWZ0M3pYbmZDYWVSUVlXTzRvQlpWY3ozNDd0bnZITDRa?=
 =?utf-8?B?NVd4N3UwdE9yajhMbWJKdERZTVArT2VnR3BiOFNOSWlzVWk3UE1kQTQ1dGVT?=
 =?utf-8?B?QTAvOVhTU0l6U29WMmoyNHBUbFZMWDVUN0hMSkdoWnlKTEJrS3g3MjJ3ZTI1?=
 =?utf-8?B?ZUZlNGc5d3FYN0pYRkErV09FbUM4aDFodml0NnVaVXU0VERDd1lnQkhTSnAv?=
 =?utf-8?B?cmpmM1FKbFdOT1NlQ2VhUFJja0RQQnBEVHF4SFpOQnhoeFlUVVk1Nit2VEJ3?=
 =?utf-8?B?ZDdGd2k1MFVVcE5Tdzllc1c3Q0hnc0xORWF4NnkydTEzV2JhZjR3SVVoeTY5?=
 =?utf-8?B?UGxDZk04QWNsV0VIRFRQek04MGh4WWxwT2J4YjhwSDBqSU5lOWN6TXFQbVZE?=
 =?utf-8?B?bUg4ZmlMV1ZYUmFZSFB5em1VUUZSa2g0WWxPcm9Ueno4Q2tNQnFvOHhIVm0x?=
 =?utf-8?B?UFA5OW0zdkJ2aWFoWWNDbmN6aHllR3JYa0hXUGRGQWhELzJGY3orV0FEeE03?=
 =?utf-8?B?MkMvbUFaZzhhdEoreUVPRDF5KythYmlKVXYyd01WYldEVkd4bXFHSkRjb3Nm?=
 =?utf-8?B?WHB2NHFkZkw5cjJSd2lUdEtKNnhtdTEwSkx2TVJ1WEw2azRwbzJ6NDZpNG9Y?=
 =?utf-8?B?Yy9Rei9IUVRTSWhINHYyaGxncnpiSUIzK292SWlDSFlUUWllTG9WNFdsOGVV?=
 =?utf-8?B?d0h0eFdDTmJlb1hVcyt4VEdUL3pSNEFTRTh4VEppNUs1R0J2SEhXUzZ1VWJn?=
 =?utf-8?B?dUJkWjZjSzkxTjhxN2JmWTJVaFUvdkcxbkpYWEdVeFdWSVBaaDg2ZnAybGFO?=
 =?utf-8?B?TUdweXg0aTRsSWNQcVozb2RTQzJtWWN5emlJWFFYSVhpZkk2bXJuMHVIRGhy?=
 =?utf-8?B?ZUpTY0VCUmxOUFIxV0R1R0pLRmoyUzlyT2R1dU5jSk5BR1ZNa1RyWktJUHdH?=
 =?utf-8?B?UjlHR0hmYk1JK2pVdGJzcm5tQ0JDWm96SGlUYTNIWUhQUUVmRnNLNkdNN2gw?=
 =?utf-8?B?Y3RQa2t3SWtnOERvdTl0a0xFaVNwWXAxOUFJbU9hUFJyTUVOcCtsTUdzOEd5?=
 =?utf-8?B?UDA0ZlhSU1Fqb0VLWVhUVHBHSkJnYTl6b2twei9OWlUwSGp5UzhvZ2I1RTdo?=
 =?utf-8?B?WTFkTlRDNy96cmxORjZQZ2dhbXdKYjM2ZXM4V0Vkdm9MNVNxVHN2eUlkVXl1?=
 =?utf-8?B?eE82VGRzQnZHSEs4bFA5N2dDdlB1cE5TbHRYOW0xN3JScGFJYzJHMmFOeGdt?=
 =?utf-8?B?WERJb1FrWDdweDEybThqMC90MEJPTzNaWGlxeVdtbTlxRWx6SlBhUHB3L3dY?=
 =?utf-8?B?MjJGK3ZQbmZnY0VuTWpvYVhLUklQQWd3Z21SVkJ1SzVzdlI0KyszeElTR0ow?=
 =?utf-8?B?UTRIV05qY0MrT1R4K2podVdTQm1GNENFWkxRSG1sQ2lIb2RCb3RVYnllVENO?=
 =?utf-8?B?UWlvdkxUOVZYbGJpaEZ2N1dpeUprVTFlcStuQ1I0UVFKT3NQakpETFJSVFA3?=
 =?utf-8?Q?lMAHDMMQHBu1x77U=3D?=
X-OriginatorOrg: epam.com
X-MS-Exchange-CrossTenant-Network-Message-Id: bbaa57ed-c747-4b77-73a1-08de9638c76d
X-MS-Exchange-CrossTenant-AuthSource: DU5PR03MB10263.eurprd03.prod.outlook.com
X-MS-Exchange-CrossTenant-AuthAs: Internal
X-MS-Exchange-CrossTenant-OriginalArrivalTime: 09 Apr 2026 13:06:14.3529
 (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: LO3cin7RIHCq610ttGkoLmFYWB8scdKaWciIwbTVrf3W6CaBxKeLqRM9dMCaYfdJDiXQW6iF13V0h3iesJfzgyZ6IYFxgHplXJB3D+RvGqE=
X-MS-Exchange-Transport-CrossTenantHeadersStamped: AM7PR03MB6280
X-purgate-ID: tlsNG-ebf023/1775739978-B2D3F51B-F03B2A7A/0/0
X-purgate-type: clean
X-purgate-size: 3696

Hi Michal,

I'll prepare v2 with the fixes.

--

Oleksii

On 09/04/2026 11:17, Orzel, Michal wrote:
>
> On 08/04/2026 19:03, Oleksii Moisieiev wrote:
>> In scif_uart_init_postirq(), when setup_irq() returns an error the
>> failure was only logged via dprintk() and execution continued,
>> unconditionally writing TIE|RIE|REIE into the Serial Control Register
>> (SCSCR). This armed all three hardware interrupt lines (TX FIFO empty,
>> RX data ready, receive error) with no handler registered to service
>> them. On platforms where the GIC receives these asserted lines, the
>> result is either repeated spurious-interrupt warnings or an unhandled
>> interrupt fault.
>>
>> The fix adds an early return inside the error branch. The
>> interrupt-enable write to SCSCR is skipped entirely when no handler is
>> registered.
>>
>> SCIF TX continues to operate correctly after this change. The Xen
>> serial framework never calls serial_async_transmit() for SCIF, so
>> port->txbuf is always NULL. This causes __serial_putc() to take the
>> synchronous finite-capacity path, which polls the SCFSR_TDFE hardware
>> flag directly and does not depend on the interrupt mechanism.
> NIT: It would be nice to at least mention that there will be no serial RX
> without interrupts.
>
>> As a secondary clean-up, the hardware error-flag clearing sequence is
>> moved to before the setup_irq() call so that error bits accumulated
>> since init_preirq() are cleared unconditionally, regardless of whether
>> IRQ registration succeeds.
>>
>> Signed-off-by: Oleksii Moisieiev <oleksii_moisieiev@epam.com>
> That's a good catch. I can see most of our drivers already use that.
> Reviewed-by: Michal Orzel <michal.orzel@amd.com>
>
> That said, I can see that we have exactly the same issue for pl011, cadence and
> exynos. I can either take your patch as is (no more work for you) and submit the
> patch fixing remaining drivers or you can send a v2 fixing all at once. It's up
> to you.
>
> ~Michal
>
>> ---
>>
>>   xen/drivers/char/scif-uart.c | 16 ++++++++++++----
>>   1 file changed, 12 insertions(+), 4 deletions(-)
>>
>> diff --git a/xen/drivers/char/scif-uart.c b/xen/drivers/char/scif-uart.c
>> index 888821a3b8..673a2d3800 100644
>> --- a/xen/drivers/char/scif-uart.c
>> +++ b/xen/drivers/char/scif-uart.c
>> @@ -187,16 +187,24 @@ static void __init scif_uart_init_postirq(struct serial_port *port)
>>       uart->irqaction.name    = "scif_uart";
>>       uart->irqaction.dev_id  = port;
>>   
>> -    if ( (rc = setup_irq(uart->irq, 0, &uart->irqaction)) != 0 )
>> -        dprintk(XENLOG_ERR, "Failed to allocated scif_uart IRQ %d\n",
>> -                uart->irq);
>> -
>>       /* Clear all errors */
>>       if ( scif_readw(uart, params->status_reg) & params->error_mask )
>>           scif_writew(uart, params->status_reg, ~params->error_mask);
>>       if ( scif_readw(uart, params->overrun_reg) & params->overrun_mask )
>>           scif_writew(uart, params->overrun_reg, ~params->overrun_mask);
>>   
>> +    if ( (rc = setup_irq(uart->irq, 0, &uart->irqaction)) != 0 )
>> +    {
>> +        dprintk(XENLOG_ERR, "Failed to allocated scif_uart IRQ %d\n",
>> +                uart->irq);
>> +        /*
>> +         * If the IRQ handler could not be installed (setup_irq failed),
>> +         * do not enable TX/RX or error interrupts. Serial transmit will
>> +         * fall back to polling mode.
>> +         */
>> +        return;
>> +    }
>> +
>>       /* Enable TX/RX and Error Interrupts  */
>>       scif_writew(uart, SCIF_SCSCR, scif_readw(uart, SCIF_SCSCR) |
>>                   params->irq_flags);


From xen-devel-bounces@lists.xenproject.org Thu Apr 09 13:35:25 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 09 Apr 2026 13:35:25 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1277358.1562580 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wApXX-0003l0-H8; Thu, 09 Apr 2026 13:35:23 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1277358.1562580; Thu, 09 Apr 2026 13:35: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 1wApXX-0003ks-E9; Thu, 09 Apr 2026 13:35:23 +0000
Received: by outflank-mailman (input) for mailman id 1277358;
 Thu, 09 Apr 2026 13:35:22 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <Luca.Fancellu@arm.com>) id 1wApXW-0003kb-Oo
 for xen-devel@lists.xenproject.org; Thu, 09 Apr 2026 13:35:22 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wApXW-001sG6-4m
 for xen-devel@lists.xenproject.org; Thu, 09 Apr 2026 15:35:22 +0200
Received: from [10.42.69.5] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <Luca.Fancellu@arm.com>)
 id 69d7ab16-e002-0a2a0a5209dd-0a2a45058ee0-22
 for <xen-devel@lists.xenproject.org>; Thu, 09 Apr 2026 15:35:22 +0200
Received: from [40.107.130.38]
 (helo=MRWPR03CU001.outbound.protection.outlook.com)
 by tlsNG-c201ff.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.0)
 (envelope-from <Luca.Fancellu@arm.com>)
 id 69d7ab19-3760-0a2a45050019-286b82260415-3
 for <xen-devel@lists.xenproject.org>; Thu, 09 Apr 2026 15:35:21 +0200
Received: from DU2PR04CA0347.eurprd04.prod.outlook.com (2603:10a6:10:2b4::27)
 by DB9PR08MB6714.eurprd08.prod.outlook.com (2603:10a6:10:2a4::18)
 with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9769.18; Thu, 9 Apr
 2026 13:35:18 +0000
Received: from DB1PEPF000509E8.eurprd03.prod.outlook.com
 (2603:10a6:10:2b4:cafe::c4) by DU2PR04CA0347.outlook.office365.com
 (2603:10a6:10:2b4::27) with Microsoft SMTP Server (version=TLS1_3,
 cipher=TLS_AES_256_GCM_SHA384) id 15.20.9769.40 via Frontend Transport; Thu,
 9 Apr 2026 13:35:18 +0000
Received: from outbound-uk1.az.dlp.m.darktrace.com (4.158.2.129) by
 DB1PEPF000509E8.mail.protection.outlook.com (10.167.242.58) with Microsoft
 SMTP Server (version=TLS1_3, cipher=TLS_AES_256_GCM_SHA384) id 15.20.9769.17
 via Frontend Transport; Thu, 9 Apr 2026 13:35:18 +0000
Received: from DU2PR08MB7272.eurprd08.prod.outlook.com (2603:10a6:10:2d7::16)
 by AM9PR08MB6003.eurprd08.prod.outlook.com (2603:10a6:20b:2d4::16)
 with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9769.42; Thu, 9 Apr
 2026 13:34:15 +0000
Received: from DU2PR08MB7272.eurprd08.prod.outlook.com
 ([fe80::5d34:206f:373:a323]) by DU2PR08MB7272.eurprd08.prod.outlook.com
 ([fe80::5d34:206f:373:a323%6]) with mapi id 15.20.9769.018; Thu, 9 Apr 2026
 13:34: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=arm.com header.i="@arm.com" header.h="From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck"; dkim=pass header.s=selector1 header.d=arm.com header.i="@arm.com" header.h="From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck"
ARC-Seal: i=2; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=pass;
 b=ZN3eC187UApebdY9DknF2Ks7kCsmymWsY1XdMWO5PVTaoax0NlbLq3D1NuClVxIW6yC6o13ph5Pg/Ldz6E+5ecwCy8CfGk/vWSy5/liMxeMxVltlHIBD/HW8rrgvkC+msemrbUUsWJ9g3gGBZEE6Kv9CO0MI1Xip5EotpXJsf0gVqt0UJgP7Yjfto4LQ0rA8TG0P/LbPyB6nqEUuPRCRjz5mSNk35nytxXD11K2YhMyAr8BnubaRX0CJAuHJsm3CllhxS2jprhx/EUv/Ubq6Lqa5jHLDYFuHVyiNPeJHb1lKyYXPt2Dix9BBp6crYvnsMEwtwqxk5acq4BNMTgf2kg==
ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com;
 s=arcselector10001;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1;
 bh=SUUirdYv3qlVQmlxhfpr4M8OF6ecU94LNQgny7wegC0=;
 b=j7qT0uQyv6QuOyJd74RRGL+hsamVbTnXoYnQVSyt9GdZQEK/lZAH+eitu2C3qokMDjluv9Tw1ViDWMzqr1BTbeqYBUx+qbmuoGnIu4fVMtvQyUpXQbN7xiTq5CCl7zPPK5tJ9cE/WN8G5Xq1nXUz27LmcvhZc1XUCu8EdDPmOLH892Wo8KjvTuY/Hf7lxIO8alTt6maI/+xLpRdEueJjEFr1r+bPjnOq3xxb05H6IPcR5mqhPeDej79HWZKVpeypIY1sB7Ud0VUw1E9cwtIUBm22LmASSoZDM4MDOXYvfn8hZzfbBfIATtjNKeu8K+UnOqgxQUiKMt4tJxhWWzRzrA==
ARC-Authentication-Results: i=2; mx.microsoft.com 1; spf=pass (sender ip is
 4.158.2.129) smtp.rcpttodomain=amd.com smtp.mailfrom=arm.com; dmarc=pass
 (p=none sp=none pct=100) action=none header.from=arm.com; dkim=pass
 (signature was verified) header.d=arm.com; arc=pass (0 oda=1 ltdi=1
 spf=[1,1,smtp.mailfrom=arm.com] dkim=[1,1,header.d=arm.com]
 dmarc=[1,1,header.from=arm.com])
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=arm.com; s=selector1;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck;
 bh=SUUirdYv3qlVQmlxhfpr4M8OF6ecU94LNQgny7wegC0=;
 b=bnxfAXqT4DUz3mzEtVL9f0LImXxPzJ5SdGsKK+5D10+tt+1gM5qorGkfZdP7uTJWllTZxhUMctM2hzJJ52DMu9LGrVT79dwjnAYcbf40q5Ws0wqWYBVg803qbURHZ2vlmyq46XjxXgHnrk3hRTvGztuEu5ZO6A3JoxP4DZz6unM=
X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 4.158.2.129)
 smtp.mailfrom=arm.com; dkim=pass (signature was verified)
 header.d=arm.com;dmarc=pass action=none header.from=arm.com;
Received-SPF: Pass (protection.outlook.com: domain of arm.com designates
 4.158.2.129 as permitted sender) receiver=protection.outlook.com;
 client-ip=4.158.2.129; helo=outbound-uk1.az.dlp.m.darktrace.com; pr=C
ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none;
 b=XpAVx41Z46KRSNQJ3HL6Cmmd5r+1QoIIgdN1pcRqrU1tn19PfXHn25vTkjig7ZdXk2oxzoTpRxtLWhUMOKOyaGby4Li5WkDcZIoHNVbVqLP39/zpJazBHTMm1ivfZSoE9JK+mu4ATGN3ml3bcuQpyENYtwRmte/YU0QUY+iURIRU9PcQSM7m+uKUtFOswwqiR2foIzfdXJOwO3I/6d9oprtCRoH9kzoy/Dx2FO2EdoWcuFWl1FC33O6J0qEHUOr1CfMPo5SE/NzPupgA2ZwdXB/qsKRUpzwtxsBDn02HCnB3GEPSzrCyPg8y4zD3DsENTL5jgRwG43/pjT5ozMBOew==
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com;
 s=arcselector10001;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1;
 bh=SUUirdYv3qlVQmlxhfpr4M8OF6ecU94LNQgny7wegC0=;
 b=oQ8dfitK2QCplEc7kzQy7qqPUTJiYw1U4lIwWxOHtD1Pzq8TDBLNsdFUYE5KaZN950zaoCnZz+uDL2R3qjLdO2Xn9gnLHBVt4TIvyEJ8LicYzUPlbMUQjJ5UsY/F/iIs/chp6Wlwy0lZXpsUlaQTQm3YRMZYodhDol23SZRn7iJK43+SYyY9MaV+SaJ1EnRwEGoOhoH1MMntEBGP4xkQTl37F3geBVP0et7iiYIgKdkDXT6h4q7Kn9MNhh4WKTqryWwoDL1ttcglXS+PMdpS7Ca4A7IW9SEPjSAo/N5CqYVQbGmhEXm0DV6BZpp+WHXj7Ng3QF1SqiWJD0WnJDAHJA==
ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass
 smtp.mailfrom=arm.com; dmarc=pass action=none header.from=arm.com; dkim=pass
 header.d=arm.com; arc=none
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=arm.com; s=selector1;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck;
 bh=SUUirdYv3qlVQmlxhfpr4M8OF6ecU94LNQgny7wegC0=;
 b=bnxfAXqT4DUz3mzEtVL9f0LImXxPzJ5SdGsKK+5D10+tt+1gM5qorGkfZdP7uTJWllTZxhUMctM2hzJJ52DMu9LGrVT79dwjnAYcbf40q5Ws0wqWYBVg803qbURHZ2vlmyq46XjxXgHnrk3hRTvGztuEu5ZO6A3JoxP4DZz6unM=
From: Luca Fancellu <Luca.Fancellu@arm.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>, Volodymyr Babchuk
	<Volodymyr_Babchuk@epam.com>
Subject: Re: [PATCH 1/3] xen/arm: Fix off-by-one in iomem_deny_access() calls
Thread-Topic: [PATCH 1/3] xen/arm: Fix off-by-one in iomem_deny_access() calls
Thread-Index: AQHcyBWemfhBb1SSBU2NDn/Cp3Sjk7XWus6A
Date: Thu, 9 Apr 2026 13:34:15 +0000
Message-ID: <1D67F18E-0A2E-4A58-8FD7-FC5FD6BE2C6B@arm.com>
References: <20260409113934.197619-1-michal.orzel@amd.com>
 <20260409113934.197619-2-michal.orzel@amd.com>
In-Reply-To: <20260409113934.197619-2-michal.orzel@amd.com>
Accept-Language: en-GB, en-US
Content-Language: en-US
X-MS-Has-Attach:
X-MS-TNEF-Correlator:
x-mailer: Apple Mail (2.3826.700.81.1.6)
Authentication-Results-Original: dkim=none (message not signed)
 header.d=none;dmarc=none action=none header.from=arm.com;
x-ms-traffictypediagnostic:
	DU2PR08MB7272:EE_|AM9PR08MB6003:EE_|DB1PEPF000509E8:EE_|DB9PR08MB6714:EE_
X-MS-Office365-Filtering-Correlation-Id: 34ed53d0-6ac2-4e92-1e6e-08de963cd749
x-checkrecipientrouted: true
nodisclaimer: true
X-MS-Exchange-SenderADCheck: 1
X-MS-Exchange-AntiSpam-Relay: 0
X-Microsoft-Antispam-Untrusted:
 BCL:0;ARA:13230040|1800799024|366016|376014|38070700021|22082099003|56012099003|18002099003;
X-Microsoft-Antispam-Message-Info-Original:
 uXBNnPabQK4eXQYEjBYbyjEV2oDr2lhidfQyplTJMbaHh6AQZ4uOdGrNnPA9ejcXTtY/h7YWe/7HNHinaEOyS93S5EAce/A11UEjKFhOGZbby2U+m6SQtd5GOwiZMCtNLknvD28qEHRT77drNLt2IAxDBInjH07M8EYydffyx2t1NphJyxNNJbKg6tFRDDPdCbTmdWmQOYwhoKtUN6ZcFb/vcaU5A1D0JYx70WrFO63FrnQL5PnaLrJM6ONpo0arqJuse49Pays/STCJAof/n8oQQn9Y33ibD2Y88I3uK3FF9yBYRW+eJFSnTr2it+5jhxYly+DvtbcPCsf0R4S6V5LoNcWElWI7KJGmMpsdh2xriGkD3fCjOtpJHiVZXAq2ik4UrDtc5HFqRngqWxOpJFBiyC/4RE7wsK4I8INTY9uM3A1QU0caLbBKuGzTeCRfFTZGw8QeCO0hjMmF6XjNU4FbZ4Zh/uQlz5VpX/xg1W1nClLo8ihkyZ1rf8ZcF5QvBQCCY4txKjVoZ6FzDAOdx54yjWgnoXCxQlBiztNXnrND8U2KwEwCgsvweX1gGywt2h30G1CaPjAKshGBXgU9Hl10oXYzXxe1F7DsarTlLtooVSfWegltKCzXMswxjleOvTXyCwg6YnfI/85djnuWnuOY0oDArVsgsNz9eyOaRG4owdVFG4zXHFxJfIC+ReVsa60/LgjvXW5c0mkpGKk21/TfdyLLp/FDr7ytZdxzL0HkPXsCh+owIQux6RS6SXj8EPNDverPFpjjV+KyQQi2ak8UzkYSsDQ/yC9snFkoecQ=
X-Forefront-Antispam-Report-Untrusted:
 CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:DU2PR08MB7272.eurprd08.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(1800799024)(366016)(376014)(38070700021)(22082099003)(56012099003)(18002099003);DIR:OUT;SFP:1101;
Content-Type: text/plain; charset="us-ascii"
Content-ID: <FFDB5F007A58EB49B7C12B6EC7789B22@eurprd08.prod.outlook.com>
Content-Transfer-Encoding: quoted-printable
MIME-Version: 1.0
X-Exchange-RoutingPolicyChecked:
 m7diMEUN5o1n1b39VpDQJ+iwfqEAgt9yAjTtCHEjTqpCCDYCUNu8bMkfI+mQpmlKzecRQRxca+60reIzRS4WZgLMsYrMMsqAf4ssJCkvxaatO2bh6EWrGMx/4AhNYKd6DLXDDjBU52rqL3wS97MAJRgYV58f4pqjTMfu0+gsdJJcic9QnMl6b77VaeLNlClWC8mn4fvoRk+DK+QFV0Vt7jV1qg6WPevSvNljhF9TukXeXPZN3M7y5ZTK684b8wGWeVaeJ6ajk4NJ0ENk4Q72vWv296U3f1b7diBxupc4+GyiEgZcWP/XWgjAkAyAQGkzOOpBvELDi6rl/77SQyJlmQ==
X-MS-Exchange-Transport-CrossTenantHeadersStamped: AM9PR08MB6003
X-EOPAttributedMessage: 0
X-MS-Exchange-Transport-CrossTenantHeadersStripped:
 DB1PEPF000509E8.eurprd03.prod.outlook.com
X-MS-PublicTrafficType: Email
X-MS-Office365-Filtering-Correlation-Id-Prvs:
	aa47972c-53c9-43c3-458d-08de963cb182
X-Microsoft-Antispam:
	BCL:0;ARA:13230040|35042699022|1800799024|376014|36860700016|82310400026|14060799003|56012099003|18002099003|22082099003;
X-Microsoft-Antispam-Message-Info:
	+Z5nMV5JpYzySD9TGY8Iq24pwihCRxwX6JLjn5eRjvUnK2eiI1Pgj0Zxs+DG7jgklW9QZMUhA1P+RRLRYWIFKsvcABCBKGpBhaoTV95YmjbBaRZ4Q8E3g+z+5SpOksa/cgI5YkR/T8qsvhXiDVrovOD8v4rmDtbvNZvefMSyTfIQKqmO/RppUjDyd/WrKTo0Us4gGE6lgDLvsdQ5XlgK3MPbIE+PmrEpCVc+Y/tEtIFB8gz2s59AMMZb6ty3FjQLvaKe92q6lU1N3eQal20zLJ7ZlOIVvNs9lNbmjnc9cSO+cbb5Pvhyq3AAgfgWGlOZrf2akpOIaKyLLPvI/xQ97o2oQuOre54BXqSnLwB2eonbUcDB7PkPEx1pOD+kFcOZ7GqiK/KHgc9RKxT6z+E2Y9bGcAGP+s3HBP46eDdQBPlSUHMMPu7AU1Mbe9npMt6+L2XGHZoNhNpvb6j36psektqzBvf9zuricJgaP9DllTa4zBSoPAjJLpyKo+r7c2D4jpf/5Eea1YQwtxCuE6aoB2wTz1C4hY/J9bWye92cXwZJQv7q0nQOCnQXI/YEuSZ/xg9wvW8PQPWL5AClmeOvifrlYTJPzuyc6MJNT81mVH4tVBn0y74xjP/GAoh7GxVH/lc0dx4ALgRYdC5I8uYU+n6J6taKcD2kKVhZSsRjl0Q+Q1ioCEmk+tsZK40KkljV7/rzujFWJrWE8gPmKfIh0NfdPjrgYqXohEXNPJv8Ril31IGL5uakA9UvlAb5KB+ZphcdI4TkWfZA/0ttcAOqgA==
X-Forefront-Antispam-Report:
	CIP:4.158.2.129;CTRY:GB;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:outbound-uk1.az.dlp.m.darktrace.com;PTR:InfoDomainNonexistent;CAT:NONE;SFS:(13230040)(35042699022)(1800799024)(376014)(36860700016)(82310400026)(14060799003)(56012099003)(18002099003)(22082099003);DIR:OUT;SFP:1101;
X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1
X-MS-Exchange-AntiSpam-MessageData-0:
	uQXojR9KvrLnfYL4saifDFMj4rlf0KRLtGzwaSGuPVS8za6t5UUa25Qqo/OaaiV3UTTxY33EUjHObD78vI9tKGnEf6lOry7f5Gc2YEypeCsIVGp4DMro8kgOdieK/4Uv6oaqtpJtw4AxFoQkDCM7S3ILB4bHVEd6cQCTBrCvCTmUBTjlfC+AbB5W1Yp4b2bJZNFS+Th40kU/HBmqf+beOL/scm8lkEP4MabdkBKBJJ0zr+HxrYzu4F6r/8dvdwa4muVPTCN/HGofnL/XgOoTUGqeDjiNXrJiLN+face0vBol7awzC6eq90hBK5cIBfHpOXIt0Z7/En/EagwSH2PqgqjqsRRHPo7/lrIS/Gf4MKrg0EuV5WDuuek8Iweb8R5wBEvtNcHabMuc+OhK20Fn0DcqzP8t50lSsWCycfTDkHbSRVBkgTVTAxF2hLp+StAS
X-OriginatorOrg: arm.com
X-MS-Exchange-CrossTenant-OriginalArrivalTime: 09 Apr 2026 13:35:18.6228
 (UTC)
X-MS-Exchange-CrossTenant-Network-Message-Id: 34ed53d0-6ac2-4e92-1e6e-08de963cd749
X-MS-Exchange-CrossTenant-Id: f34e5979-57d9-4aaa-ad4d-b122a662184d
X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=f34e5979-57d9-4aaa-ad4d-b122a662184d;Ip=[4.158.2.129];Helo=[outbound-uk1.az.dlp.m.darktrace.com]
X-MS-Exchange-CrossTenant-AuthSource:
	DB1PEPF000509E8.eurprd03.prod.outlook.com
X-MS-Exchange-CrossTenant-AuthAs: Anonymous
X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem
X-MS-Exchange-Transport-CrossTenantHeadersStamped: DB9PR08MB6714
X-purgate-ID: tlsNG-c201ff/1775741722-23D2F96F-72181A4F/0/0
X-purgate-type: clean
X-purgate-size: 996

Hi Michal,

> On 9 Apr 2026, at 12:39, Michal Orzel <michal.orzel@amd.com> wrote:
>=20
> iomem_deny_access() wraps rangeset_remove_range() which takes inclusive
> endpoints.  All call sites in the GIC and ACPI code pass 'mfn + nr' (or
> 'mfn + 1' for single-page regions) as the end parameter, which causes
> one extra page beyond each region to be denied.
>=20
> For single-page regions, use 'mfn' as the end (denying exactly one page).
> For all multi-page regions, use 'mfn + nr - 1'.
>=20
> This matches the correct pattern used elsewhere, e.g. in device.c.
>=20
> Fixes: 8300b3377e ("arm/gic: Add a new callback to deny Dom0 access to GI=
C regions")
> Fixes: 66158be465 ("ARM: ITS: Deny hardware domain access to ITS")
> Fixes: 97e9875646 ("arm/acpi: Permit MMIO access of Xen unused devices fo=
r Dom0")
> Signed-off-by: Michal Orzel <michal.orzel@amd.com>
> ---
>=20

This looks ok to me.

Reviewed-by: Luca Fancellu <luca.fancellu@arm.com>

Cheers,
Luca




From xen-devel-bounces@lists.xenproject.org Thu Apr 09 13:35:25 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 09 Apr 2026 13:35:25 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1277357.1562571 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wApXV-0003Xa-5z; Thu, 09 Apr 2026 13:35:21 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1277357.1562571; Thu, 09 Apr 2026 13:35: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 1wApXV-0003XT-2f; Thu, 09 Apr 2026 13:35:21 +0000
Received: by outflank-mailman (input) for mailman id 1277357;
 Thu, 09 Apr 2026 13:35:19 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <Luca.Fancellu@arm.com>) id 1wApXT-0003XN-Ju
 for xen-devel@lists.xenproject.org; Thu, 09 Apr 2026 13:35:19 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wApXS-009job-Vv
 for xen-devel@lists.xenproject.org; Thu, 09 Apr 2026 15:35:19 +0200
Received: from [10.42.69.11] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <Luca.Fancellu@arm.com>)
 id 69d7ab13-5cb7-0a2a0a5109dd-0a2a450b94a4-22
 for <xen-devel@lists.xenproject.org>; Thu, 09 Apr 2026 15:35:18 +0200
Received: from [40.107.159.14]
 (helo=OSPPR02CU001.outbound.protection.outlook.com)
 by tlsNG-42698a.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.0)
 (envelope-from <Luca.Fancellu@arm.com>)
 id 69d7ab15-bca8-0a2a450b0019-286b9f0e14ef-3
 for <xen-devel@lists.xenproject.org>; Thu, 09 Apr 2026 15:35:18 +0200
Received: from AM9P250CA0009.EURP250.PROD.OUTLOOK.COM (2603:10a6:20b:21c::14)
 by AM0PR08MB11778.eurprd08.prod.outlook.com (2603:10a6:20b:747::5)
 with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9769.42; Thu, 9 Apr
 2026 13:35:15 +0000
Received: from AM4PEPF00025F9B.EURPRD83.prod.outlook.com
 (2603:10a6:20b:21c:cafe::e0) by AM9P250CA0009.outlook.office365.com
 (2603:10a6:20b:21c::14) with Microsoft SMTP Server (version=TLS1_3,
 cipher=TLS_AES_256_GCM_SHA384) id 15.20.9769.37 via Frontend Transport; Thu,
 9 Apr 2026 13:35:15 +0000
Received: from outbound-uk1.az.dlp.m.darktrace.com (4.158.2.129) by
 AM4PEPF00025F9B.mail.protection.outlook.com (10.167.16.10) with Microsoft
 SMTP Server (version=TLS1_3, cipher=TLS_AES_256_GCM_SHA384) id 15.20.9818.0
 via Frontend Transport; Thu, 9 Apr 2026 13:35:14 +0000
Received: from DU2PR08MB7272.eurprd08.prod.outlook.com (2603:10a6:10:2d7::16)
 by GVXPR08MB7727.eurprd08.prod.outlook.com (2603:10a6:150:6b::6) with
 Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9769.19; Thu, 9 Apr
 2026 13:34:11 +0000
Received: from DU2PR08MB7272.eurprd08.prod.outlook.com
 ([fe80::5d34:206f:373:a323]) by DU2PR08MB7272.eurprd08.prod.outlook.com
 ([fe80::5d34:206f:373:a323%6]) with mapi id 15.20.9769.018; Thu, 9 Apr 2026
 13: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=selector1 header.d=arm.com header.i="@arm.com" header.h="From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck"; dkim=pass header.s=selector1 header.d=arm.com header.i="@arm.com" header.h="From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck"
ARC-Seal: i=2; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=pass;
 b=eqSdQRW3FEYMCkcKXecsqWiqsBdbMmrh7ItJn98Ni90ClIhateJysjCr6MKcX1fKnbDBtHc5xVVwhrBJaIZkS+FtXD0M9sJwLMUFGXzadlBRbXXFgbggzzO74glNnp1Z+NGHurOP0wEtxAaY7Ra3YE2wYzVvL+igmrOkLTADyS169piKKLYZn9aqJcfxDt5TClv33fqffwxNVmz33IfN5dNLccirvxnkHMHt6VBEXDfhseZYbmwbCxoDIyEDu6CIm47jZQDuvNyizPppgX5bTYaj6jb8YQeGvkGk2udRKrH6PQdKjFJjKucyMyfBmF3CSzsB/M9YX4IElW6OD2eIug==
ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com;
 s=arcselector10001;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1;
 bh=kJxmIbH/V5ihvYVlfBvtw2jG2B22mOAIxpJuH2Ozr3A=;
 b=xaUvSV7BN9t/hSsNu94sqaUzEv5z3d35mpTcu8yu6JqVD/hUXQE1IbMXfzSpV2BLuo39ob1/2YduykU4nn2CcNfrHyjBTxVdWumJR42WrrUzQji7JCthti4NxZK6BoKtOu1itj52b2yLe8tKfVWys8VAn1Q0Zi6gNXWHPP0RwCkQ97HM0HAiF6VhD+Xzv3hPO+Hdp2Bk+c3Ogv9exTjBhAczRD4qxVs7vDcRAR18QKHBNWPDujFTrTh2qXor9MDwTZOoeUyml+pfxBxWLscoVTuC00TfeoNPGrccVn+w+4CC1kTmUTzcY63R9pMGWlIvpcfNDn1MlZrioihhdCAZeQ==
ARC-Authentication-Results: i=2; mx.microsoft.com 1; spf=pass (sender ip is
 4.158.2.129) smtp.rcpttodomain=suse.com smtp.mailfrom=arm.com; dmarc=pass
 (p=none sp=none pct=100) action=none header.from=arm.com; dkim=pass
 (signature was verified) header.d=arm.com; arc=pass (0 oda=1 ltdi=1
 spf=[1,1,smtp.mailfrom=arm.com] dkim=[1,1,header.d=arm.com]
 dmarc=[1,1,header.from=arm.com])
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=arm.com; s=selector1;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck;
 bh=kJxmIbH/V5ihvYVlfBvtw2jG2B22mOAIxpJuH2Ozr3A=;
 b=joqHEDqSADPqkVUuMdm4k2oH/ailkZ1JeMipTKN1gJpigZsMCPLmNWruGSrM3kqnXohBpHKS6lVVaHzqkSx+oGaL1P+zDfnNgyB7rFMwZ53iKLVfcRxB9vlfF5Cz6FU/bbJZNc9RZdt1ZCxez1NB6MxgXsDo689MXXvgUDOo9v4=
X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 4.158.2.129)
 smtp.mailfrom=arm.com; dkim=pass (signature was verified)
 header.d=arm.com;dmarc=pass action=none header.from=arm.com;
Received-SPF: Pass (protection.outlook.com: domain of arm.com designates
 4.158.2.129 as permitted sender) receiver=protection.outlook.com;
 client-ip=4.158.2.129; helo=outbound-uk1.az.dlp.m.darktrace.com; pr=C
ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none;
 b=cji2P5R/aCruvdtJzmPeOLmtSsnbtv52FOo/0pwwnmyq7DJraUtWng8dfeZi1x1hZs0XrDbIG0f2RFosHdK/F3xM4Zb/TcUdlLjFjIEhDvOXgmP+qa5I+9pcinqxLCx8QHwF9qw2wzz5SY2nlv1GoXV1apTIkLheYLtR/rZL4GF/9i66VV5NxFAwtpMux6OtfLyJTWSPyRGEBs1Iq7rtE06uPz5GXJ2DvQV+lq1zthVqD5WjwyOi5BnehlyHPexaBLOpBVd8Llqxoe+zFRt+NZ9xHZ3ClHWQeoykoy5D/hGjRfmpDQ+w5C3NtVhJBnGHwk2MQx1vcpXPuCLOpB/jxQ==
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com;
 s=arcselector10001;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1;
 bh=kJxmIbH/V5ihvYVlfBvtw2jG2B22mOAIxpJuH2Ozr3A=;
 b=UxRXpsp+/kSZw65le+lekwzUx8U78wImsNkxGiRKrMm1YFYJXgggrFjgl8wcIa2J5/LCyyiqiM7eChZsA/pfmt50sJid3z8vSg8v8royEkIqHKENECzosRBfnl1EokG4n+J+OZz888tgtU3GsolvY/UaETk2suErMi4N51R4T9inzIRgvjLs8IKlh2JKdyxwreYn4zFg1D21WsJruNaIkgWaTm9sHCq8YWCFD+BFfjsYhKgyzagJ0/QuS2fl7+TliBj15G4/2VOSMigAQbeLfWJHhsRGO9CjZmz0fqyhByYrJlSViWvI9nAtAL9UQCzn8dTXuLn0EDkUqO+xRaDbQw==
ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass
 smtp.mailfrom=arm.com; dmarc=pass action=none header.from=arm.com; dkim=pass
 header.d=arm.com; arc=none
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=arm.com; s=selector1;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck;
 bh=kJxmIbH/V5ihvYVlfBvtw2jG2B22mOAIxpJuH2Ozr3A=;
 b=joqHEDqSADPqkVUuMdm4k2oH/ailkZ1JeMipTKN1gJpigZsMCPLmNWruGSrM3kqnXohBpHKS6lVVaHzqkSx+oGaL1P+zDfnNgyB7rFMwZ53iKLVfcRxB9vlfF5Cz6FU/bbJZNc9RZdt1ZCxez1NB6MxgXsDo689MXXvgUDOo9v4=
From: Luca Fancellu <Luca.Fancellu@arm.com>
To: Jan Beulich <jbeulich@suse.com>
CC: "xen-devel@lists.xenproject.org" <xen-devel@lists.xenproject.org>, Andrew
 Cooper <andrew.cooper3@citrix.com>, Anthony PERARD
	<anthony.perard@vates.tech>, Julien Grall <julien@xen.org>,
	=?utf-8?B?Um9nZXIgUGF1IE1vbm7DqQ==?= <roger.pau@citrix.com>, Stefano
 Stabellini <sstabellini@kernel.org>, Michal Orzel <michal.orzel@amd.com>
Subject: Re: [PATCH 2/3] xen/common: llc-coloring: Fix off-by-one in
 parse_color_config()
Thread-Topic: [PATCH 2/3] xen/common: llc-coloring: Fix off-by-one in
 parse_color_config()
Thread-Index: AQHcyBWdW2bjkWPifku6XWocvaXOWrXWpuWAgAAHZ4CAAADggIAAC5wA
Date: Thu, 9 Apr 2026 13:34:10 +0000
Message-ID: <6093D2A3-1823-4587-BB81-4593AD060D71@arm.com>
References: <20260409113934.197619-1-michal.orzel@amd.com>
 <20260409113934.197619-3-michal.orzel@amd.com>
 <EEF7C308-F25C-46BA-9663-BA789B49429C@arm.com>
 <db87a55a-5bd2-44ab-8814-1ffec91d1b40@suse.com>
 <9A42538E-AB13-488E-9AEF-39CD7E8D3131@arm.com>
In-Reply-To: <9A42538E-AB13-488E-9AEF-39CD7E8D3131@arm.com>
Accept-Language: en-GB, en-US
Content-Language: en-US
X-MS-Has-Attach:
X-MS-TNEF-Correlator:
x-mailer: Apple Mail (2.3826.700.81.1.6)
Authentication-Results-Original: dkim=none (message not signed)
 header.d=none;dmarc=none action=none header.from=arm.com;
x-ms-traffictypediagnostic:
	DU2PR08MB7272:EE_|GVXPR08MB7727:EE_|AM4PEPF00025F9B:EE_|AM0PR08MB11778:EE_
X-MS-Office365-Filtering-Correlation-Id: f0970ea4-8e4f-4934-de23-08de963cd515
x-checkrecipientrouted: true
nodisclaimer: true
X-MS-Exchange-SenderADCheck: 1
X-MS-Exchange-AntiSpam-Relay: 0
X-Microsoft-Antispam-Untrusted:
 BCL:0;ARA:13230040|376014|366016|1800799024|38070700021|18002099003|56012099003|22082099003;
X-Microsoft-Antispam-Message-Info-Original:
 wZd2knFOB+4HSlI0GoZoaO43b0w3YHncuJEecPc0wF+/XmpWBrajYERTffaCxcX3hiYCPOmz/QrQCcKDmGjz7JL/0r2sLugdEbf9Ce29b7nVYD4BXJFjygoravyh7t4No+OnPgDfm5wxjdQacZt3KxDpGCmQgH1h2UIlG8rQDDbRZIdNzISDZ05AsJEhLBSnlz9Hhb+8gxZWqpSfV6IPQGxfOLqvwFTbKYHSL5I8+WZx2g9PmZbJoVgl2t7sZNv8QLvqqifIHjoi72QP448ldx2vYD/nR1IFCmHw+cNCEMvrP4ZmxxHOxP85YTmRUTbIjkPcdEd1PI6EQWAqqoCf2JX3hikVZknaQRXCtNml4Wfi8qYpIGHsymvQyPqFPpMY3asdi0yitiuCF2AVTS88WVW7qobC+A8b1hi1xg1Vofl/ERu1NylKZDFurwTazySFcK12tjJpV/PGkhV444YCjSRl+6+rYLUx1wUHN01BPL1/txuHyP0ESOvhv71VlJPyuN0TTQR8TRN/sewPMy3gu++MQo3Q2ixUggZfEUfX8qGfT5vY5GYafk3HUv1u2CxOqS4DXvkxyx+jCv7PWTKOKhnkYq20T8DWppcvkpQZ0LzEmaMO4GiLhYf1nbByPSIv7efsEPJL5e9VwjqLOQ0QWAPcGuuUKigcEZVLR3C+43KLbHVBH6E06gvBLAmKfZaALUa62TwS5WgY2bcnQkcdP/dQltlGt8gg17ROtYik8lKbhRdEF+OxAHUvzkrBny8tkLmDQd5J67lRMMNieL6cpz8S7+s23HSDSbJ7+bfjK/0=
X-Forefront-Antispam-Report-Untrusted:
 CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:DU2PR08MB7272.eurprd08.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(376014)(366016)(1800799024)(38070700021)(18002099003)(56012099003)(22082099003);DIR:OUT;SFP:1101;
Content-Type: text/plain; charset="utf-8"
Content-ID: <E2CAA43EA3F77B4D8941600E36EFE40E@eurprd08.prod.outlook.com>
Content-Transfer-Encoding: base64
MIME-Version: 1.0
X-Exchange-RoutingPolicyChecked:
 kEP1z0S4+U2AeRAe7vhZGcirmQ3RCoYrhicyvemFAEdHQ/F56CxzjPj3FVjK9SLI/vBVywJve9E2neT86OV/kfBZf3CrkKtF1t4eoyiUY522iGGcDK05Khn0yrhRzKickp6nN4qt9YFdbEwws4WU98WzBi+iV2WZSUpXRp3RnOdXHAfFzzuneuPT9ENZZkwT1KXJi61gcYmFp4aHY9II6DZbNEi7KnguUVh6cpXLtknjZE76qThXSVvAsb/k05JF+cJUxq4u4PPlLV5D5fV5jPZInrHdpSxgvU014ddbQyk5ea4ghhkt/vhe85pef6Kp5Wwn1w4P4Ro9Sn20FLUhhA==
X-MS-Exchange-Transport-CrossTenantHeadersStamped: GVXPR08MB7727
X-EOPAttributedMessage: 0
X-MS-Exchange-Transport-CrossTenantHeadersStripped:
 AM4PEPF00025F9B.EURPRD83.prod.outlook.com
X-MS-PublicTrafficType: Email
X-MS-Office365-Filtering-Correlation-Id-Prvs:
	f689ce1d-002c-4b6d-2b96-08de963caecb
X-Microsoft-Antispam:
	BCL:0;ARA:13230040|376014|1800799024|14060799003|36860700016|82310400026|35042699022|56012099003|22082099003|18002099003;
X-Microsoft-Antispam-Message-Info:
	TThqCY7vab7CBad8gbzkmG8gOiRo1PAD7JKjtgNHtjSFyud/5b9oEn0y7Ffa5FrQzdMnhZy/gcUNRmQyr2avS/bPFTp8bPTgwCorh6JWTizTM9BK5hDK53n2Kgn5iQnSv5mni0XizluNRVQPjRR4ulg512Tn+gjefGmXffB+rTW6dr0VRV68cV+UAOUncY9FvL/yDGQPdZuEHSC5e3FeV0vdghpDxEm4UeFHmOOlJKfaH3uhABZyGYDWooEwvuPCll2ZnYk4R1SN9wmFTvSgkEeGkSrHEhWsC5E16eysxies3n398np+YlmY4a2DbS774SAXUes+a5kXj3egl2Vb8sjOgVwg476rWYBgompBf8tPqQ3YwCD+3DigE3HFyk1FgdtUWYmzIDlurp/+Qem5FbYWP53XpvC3aSuZODRDxHrj4NRIDZQP5f4dHhY7FMzV9Bl84S7pQ1G3OUob/xPW626kbeqff2o97Gb3iS2E4VFfSxwiBt12RZwAha+IGoALeIJukjiqA7IsUwyx3z16J0mK7TtPhu8Ykp4VQ8OFQHlz4GCZTntmP2UDsOFVXBUWheRTFhM0GJPkMSS7Hlovk5GtEkDJl8BlrTLGylWRcgpa80m5mL9NRA0zwI1vz9sHB67wHJrZdyMNIBy7rYln+tW2s71AjT5DRKy/ecleapMyJEg7mFURSZP/wTqlqGCPR7rYbYfLBFfGPHTV7RD14kGOvJG26MpibcATFh4Bgwo/xCVwuCBx86QQnFyxJHd9gCrz4DkJ6yAx9wJ0gRKKIg==
X-Forefront-Antispam-Report:
	CIP:4.158.2.129;CTRY:GB;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:outbound-uk1.az.dlp.m.darktrace.com;PTR:InfoDomainNonexistent;CAT:NONE;SFS:(13230040)(376014)(1800799024)(14060799003)(36860700016)(82310400026)(35042699022)(56012099003)(22082099003)(18002099003);DIR:OUT;SFP:1101;
X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1
X-MS-Exchange-AntiSpam-MessageData-0:
	ru8Z85f1xn9hGsADkr8w2HbrhZLSTgGqmFxz5rmbmUiWAl+cObcYt9dEfAQAeSp/ktiiOIGprnkLe2AtkXTUSW5HCTihx2KXQnhGzQ7+zrsZ1jN9U+LZbH129MUCFX1UxHgSkg7rP/WK0tXd0sU6CM+QX6LCEIkUvM6OFdVDtZWj4WOBtXDHJIKxJ/rJxLfqpBBZWKxr6zMeipy3A8Yd/hoW49jmVyh9NTpol2cVory8L8FBG3DinIYDAy9whHgOgBqqhL7+YMLclI5Mo7hm1T6URnGaKcFl2xGfgiKgLXkOcE7+YEsbYp/VVAiiVkdvmeG0Nro5dP9VAIUANAuyT4AbAdQAU9t7GLoa/zjG21sq2clL6/iElkWyODQ9CDIpKNd2K0Rxkq4W2atMyXNyLdk+pS+QyVt7GhP0LTSip6I9ImPml92Dbp0xIQnmotYE
X-OriginatorOrg: arm.com
X-MS-Exchange-CrossTenant-OriginalArrivalTime: 09 Apr 2026 13:35:14.9433
 (UTC)
X-MS-Exchange-CrossTenant-Network-Message-Id: f0970ea4-8e4f-4934-de23-08de963cd515
X-MS-Exchange-CrossTenant-Id: f34e5979-57d9-4aaa-ad4d-b122a662184d
X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=f34e5979-57d9-4aaa-ad4d-b122a662184d;Ip=[4.158.2.129];Helo=[outbound-uk1.az.dlp.m.darktrace.com]
X-MS-Exchange-CrossTenant-AuthSource:
	AM4PEPF00025F9B.EURPRD83.prod.outlook.com
X-MS-Exchange-CrossTenant-AuthAs: Anonymous
X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem
X-MS-Exchange-Transport-CrossTenantHeadersStamped: AM0PR08MB11778
X-purgate-ID: tlsNG-42698a/1775741718-EC9592A1-E9D41949/0/0
X-purgate-type: clean
X-purgate-size: 2596

SGkgSmFuLA0KDQo+IE9uIDkgQXByIDIwMjYsIGF0IDEzOjUyLCBMdWNhIEZhbmNlbGx1IDxMdWNh
LkZhbmNlbGx1QGFybS5jb20+IHdyb3RlOg0KPiANCj4gDQo+IA0KPj4gT24gOSBBcHIgMjAyNiwg
YXQgMTM6NDgsIEphbiBCZXVsaWNoIDxqYmV1bGljaEBzdXNlLmNvbT4gd3JvdGU6DQo+PiANCj4+
IE9uIDA5LjA0LjIwMjYgMTQ6MjIsIEx1Y2EgRmFuY2VsbHUgd3JvdGU6DQo+Pj4+IE9uIDkgQXBy
IDIwMjYsIGF0IDEyOjM5LCBNaWNoYWwgT3J6ZWwgPG1pY2hhbC5vcnplbEBhbWQuY29tPiB3cm90
ZToNCj4+Pj4gDQo+Pj4+IFRoZSBjaGVjayB1c2VzID49IHRvIGNvbXBhcmUgdGhlIHRvdGFsIG51
bWJlciBvZiBjb2xvcnMgYWdhaW5zdA0KPj4+PiBtYXhfbnVtX2NvbG9ycyAod2hpY2ggaXMgQVJS
QVlfU0laRSBvZiB0aGUgY29sb3JzIGFycmF5KS4gIFRoaXMNCj4+Pj4gaW5jb3JyZWN0bHkgcmVq
ZWN0cyBpbnB1dCB0aGF0IHdvdWxkIGV4YWN0bHkgZmlsbCB0aGUgYXJyYXkuDQo+Pj4+IA0KPj4+
PiBGb3IgZXhhbXBsZSwgd2l0aCBOUl9MTENfQ09MT1JTPTE2LCBzcGVjaWZ5aW5nIDEgY29sb3Ig
Zm9yIFhlbiBhbmQgMTUNCj4+Pj4gZm9yIGRvbTAgd291bGQgZmFpbC4NCj4+Pj4gDQo+Pj4+IENo
YW5nZSA+PSB0byA+IHNvIHRoYXQgZXhhY3RseSBmaWxsaW5nIHRoZSBhcnJheSBpcyBwZXJtaXR0
ZWQuDQo+Pj4+IA0KPj4+PiBGaXhlczogOTVlZjVkZGY4YSAoInhlbi9hcm06IGFkZCBEb20wIGNh
Y2hlIGNvbG9yaW5nIHN1cHBvcnQiKQ0KPj4+PiBTaWduZWQtb2ZmLWJ5OiBNaWNoYWwgT3J6ZWwg
PG1pY2hhbC5vcnplbEBhbWQuY29tPg0KPj4+PiAtLS0NCj4+PiANCj4+PiBSZXZpZXdlZC1ieTog
THVjYSBGYW5jZWxsdSA8bHVjYS5mYW5jZWxsdUBhcm0uY29tPg0KPj4gDQo+PiBEaWQgeW91IHNl
ZSBBbmRyZXcncyByZXBseT8gSWYgdGhhdCBlYXJsaWVyIChyZWNlbnQpIGNvbW1pdCB3YXMgd3Jv
bmcsIEkNCj4+IHRoaW5rIGEgMm5kIEZpeGVzOiB0YWcgbWF5IGJlIG5lZWRlZCBoZXJlLiBGb3Ig
bm93IEkgY2FuJ3QgaGVscCB0aGUNCj4+IGltcHJlc3Npb24gdGhvdWdoIHRoYXQgdGhlcmUgbWln
aHQgaGF2ZSBiZWVuIGEgcmUtYmFzaW5nIG1pc3Rha2UsIHdoZXJlDQo+PiB0aGF0IHJlLWJhc2Ug
bWF5IGhhdmUgd2FudGVkIHRvIHJlc3VsdCBpbiB0aGlzIHBhdGNoIGRpc3NvbHZpbmcgaW50bw0K
Pj4gbm90aGluZy4gWWV0IG9mIGNvdXJzZSBJJ20gYWxsIGVhcnMgdG8gbGVhcm4gb3RoZXJ3aXNl
Lg0KPj4gDQo+PiBKYW4NCj4gDQo+IE9oLCBubyBJIGRpZG7igJl0IHNlZSB0aGF0ISBUaGFua3Mg
Zm9yIHBvaW50aW5nIHRoYXQgb3V0LCBJIHdpbGwgaGF2ZSBhIGNsb3NlciBsb29rLg0KDQoNCkkg
aGFkIGEgY2xvc2VyIGxvb2ssIEkgZmVlbCB0aGF0IHRoZSBwYXRjaCBpcyBvayBhbmQgY29tbWl0
IGNiYThhNTg0ZGUxNzFjOGM0NTEwNzA5YzJlZGM5ZjFjZjg2YjIxYWINCndhcyBtaXNzaW5nIHRo
aXMgY29ybmVyIGNhc2UuDQoNCkxldOKAmXMgc2F5IG1heF9udW1fY29sb3JzID0gOCAoYXJyYXkg
Y2FwYWNpdHkpLCAqbnVtX2NvbG9ycyA9IDQgc28gd2Ugc3RvcmVkIGFscmVhZHkgNCBlbnRyaWVz
IGFuZCB0aGUNCm5leHQgcGFyc2VkIHJhbmdlIGdpdmVzIHN0YXJ0ID0gNCwgZW5kID0gNzogDQoN
CigqbnVtX2NvbG9ycyArIChlbmQgLSBzdGFydCArIDEpKSA+PSBtYXhfbnVtX2NvbG9ycyB3aWxs
IGNvbXB1dGUgYXMNCig0ICsgKDcgLSA0ICsgMSkpID49IDggd2hpY2ggd2lsbCBiZQ0KOCA+PSA4
IHRoYXQgd2lsbCBiZSB0cnVlIGFuZCB0aGUgaW5wdXQgd2lsbCBiZSByZWplY3RlZCwgaW5zdGVh
ZCBvZiBiZWluZyBhIHZhbGlkIGVudHJ5Lg0KDQpEaWQgSSBtaXNzIGFueXRoaW5nPw0KDQpDaGVl
cnMsDQpMdWNhDQoNCg==


From xen-devel-bounces@lists.xenproject.org Thu Apr 09 13:39:07 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 09 Apr 2026 13:39:07 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1277381.1562591 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wApb8-00051D-0X; Thu, 09 Apr 2026 13:39:06 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1277381.1562591; Thu, 09 Apr 2026 13: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 1wApb7-000516-UA; Thu, 09 Apr 2026 13:39:05 +0000
Received: by outflank-mailman (input) for mailman id 1277381;
 Thu, 09 Apr 2026 13:39:04 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92) id 1wApb6-000510-AT
 for xen-devel@lists.xenproject.org; Thu, 09 Apr 2026 13:39:04 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wApb4-009SaE-49
 for xen-devel@lists.xenproject.org; Thu, 09 Apr 2026 15:39:03 +0200
Received: from [10.42.69.11] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <oleksii.kurochko@gmail.com>)
 id 69d7abec-5cb7-0a2a0a5109dd-0a2a450be708-20
 for <xen-devel@lists.xenproject.org>; Thu, 09 Apr 2026 15:39:03 +0200
Received: from [209.85.128.47] (helo=mail-wm1-f47.google.com)
 by tlsNG-42698a.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.0)
 (envelope-from <oleksii.kurochko@gmail.com>)
 id 69d7abf7-bca8-0a2a450b0019-d155802fd1f8-3
 for <xen-devel@lists.xenproject.org>; Thu, 09 Apr 2026 15:39:03 +0200
Received: by mail-wm1-f47.google.com with SMTP id
 5b1f17b1804b1-488b00ed86fso9998515e9.3
 for <xen-devel@lists.xenproject.org>; Thu, 09 Apr 2026 06:39:03 -0700 (PDT)
Received: from [192.168.1.6] (user-109-243-69-121.play-internet.pl.
 [109.243.69.121]) by smtp.gmail.com with ESMTPSA id
 5b1f17b1804b1-488ccfb7912sm50598895e9.0.2026.04.09.06.39.01
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Thu, 09 Apr 2026 06:39:02 -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=20251104 header.d=gmail.com header.i="@gmail.com" header.h="Content-Transfer-Encoding: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=20251104; t=1775741943; x=1776346743; darn=lists.xenproject.org;
        h=content-transfer-encoding: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;
        bh=0oORSVLd7vxYi37eQ1hOt5lcg/1JZwZxdRxBYDZMYW8=;
        b=DwHXtNMEH5/UefQo4/PkTZ9EsJdNDFhmSCvCQCbD97r8YEXw12dlb+m4yifJKox87o
         Mqe8LrrncNDcmuCMIs15b2JqweYpu9AqtC9N1+HmVDqoa8qpDqrnlbZ6FvS1xgDisWv8
         GCbbAntDL+6xyhy3wv3zsZaMkFARAoQZ9Q8Mfw1AhQNYdnNWZAoTEY7S6h5ZkuAgKNvU
         3fHlBcnV+aqrIxBE+MyWEqAyWj5rGMBL3S/6rfKAJhSjcTmTWo/7YZb/u87F+Wcgzp1a
         PiON5GzIOTTOmtnQnPbA7V9HcmXeTlEdgRac1FzwBQi2SL74buvoAkDV/fNfZsmDmQoz
         VAyQ==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20251104; t=1775741943; x=1776346743;
        h=content-transfer-encoding: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;
        bh=0oORSVLd7vxYi37eQ1hOt5lcg/1JZwZxdRxBYDZMYW8=;
        b=ST34xOvwLuDeBwyOHUKaIMK5BpOqTz+tV0QzZgmP6vV1BMmv/kKLAYE4q+XUUSkj6W
         NMfG2lwmm40dFoXSceYLhuDBV1kpgFp+61NVBXa9RkyiJsCLacBBImaSEDjZZ4pWsXtV
         B8/oPD867i0kEAr8OdS6zLnIiXUzj2FUni+l4HutD7RjlRLFPZRSurORJ3ZmQUuWPlEI
         n5mdIZPZ1Aj6KxIxzmVbDjkJPjq0SfHFJEiNh3z/GzpiE1MSCHiw1abKmI5VXaw4iWca
         EDY1TRNaomRUcE3aCv9zGG3BhEWy+kKhkVmSAHSeQMAXQKfxIMCZHt0RiNnsZ8z2drgU
         KjwA==
X-Forwarded-Encrypted: i=1; AJvYcCW60cNmRsUryZ0HSUuMANwCr+m+IaRKCPsg7GHj0gPZdm4wgefeNKtnSrpYrvhNTpL6/dvQRl1GMlQ=@lists.xenproject.org
X-Gm-Message-State: AOJu0YwjPgvbATvPltXEG/UWpQAh/4pmfbvYd2DadE2AKr4w4JtLt4Jb
	l67qITshE4TxYzczmxabCQGp0lJFFzun/xZCx6QOaxhr3c7H1pRyugd4
X-Gm-Gg: AeBDievbb2HhZuxjUQJ+ZAgYGHHYAw8xM85l7eoXNMzquo/COAhXTRRoSjTNmy8959L
	pffoKvCQJ5DxvRCMr2BJ2CzGkq1dBgSzn0VFAUUxwEqKFFNrb+cRlg/JdTIzy0XOKwJc36Lg/Jg
	ryPNGcgSiDSmIIUvn25hyAawswtUcZTasaiWmavT0N4Sd9KFZc/uPq/jv4Bhm0K0u6TjAPL08hO
	vPt49ekKY6YCFaDXf9jRSATcDUCuB+F/Mruk3dl4GOik6e3e6TMz9dGulxskOO2uSg3mIKELCHd
	otnYwzRzYGNF4wVygOIxK4sjPbZIugKQPPuxIiU5837ezQwk2S5kWAl89fFFo/Wfhzq5PpHouYa
	W1yIfTed1Z+86z6+XMl23xH7tlcAgDkjjEYpCjCMrLnRn0GrD5HwYEB5UYOC2r8PCfhTD3TZn17
	G3alFqELzv+ma6ERLx2T4lXcAHlGOK5pCn81kJGk0g9nu5KjAwg6O8Wa1/4BlFFbQBbAHrE0k5a
	t4=
X-Received: by 2002:a05:600c:1e0f:b0:488:b1c7:b432 with SMTP id 5b1f17b1804b1-488cd059947mr53266585e9.24.1775741942835;
        Thu, 09 Apr 2026 06:39:02 -0700 (PDT)
Message-ID: <2926ad08-39c8-4559-bb40-7231c69d9a65@gmail.com>
Date: Thu, 9 Apr 2026 15:39:01 +0200
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH v1 02/27] xen/riscv: Implement construct_domain()
To: Jan Beulich <jbeulich@suse.com>
Cc: Romain Caritey <Romain.Caritey@microchip.com>,
 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.pau@citrix.com>,
 Stefano Stabellini <sstabellini@kernel.org>, xen-devel@lists.xenproject.org
References: <cover.1773157782.git.oleksii.kurochko@gmail.com>
 <3a86599284108e6f2a27488a03145f8dd1b71def.1773157782.git.oleksii.kurochko@gmail.com>
 <cd1fa52a-0ff2-4b7f-9b0b-c33b6a01b6c8@suse.com>
 <95fc62d9-cfd4-4b75-a9b0-7e90c9ba1095@gmail.com>
 <c3e20570-6dbf-4dd9-86de-d334e0f71f3a@suse.com>
Content-Language: en-US
From: Oleksii Kurochko <oleksii.kurochko@gmail.com>
In-Reply-To: <c3e20570-6dbf-4dd9-86de-d334e0f71f3a@suse.com>
Content-Type: text/plain; charset=UTF-8; format=flowed
Content-Transfer-Encoding: 7bit
X-purgate-ID: tlsNG-42698a/1775741943-17F462A1-E4BB3BEC/10/73395122804
X-purgate-type: spam
X-purgate-size: 3628



On 4/9/26 2:58 PM, Jan Beulich wrote:
>>>> +{
>>>> +    struct vcpu *v = d->vcpu[0];
>>>> +    struct cpu_user_regs *regs = vcpu_guest_cpu_user_regs(v);
>>>> +
>>>> +    BUG_ON(d->vcpu[0] == NULL);
>>> Why not simply "!v"?
>> It could work. I'll apply that.
>>
>>> Also, while in the cover letter you state a dependency on another series,
>>> this is somewhat unwieldy here. From the titles there I can't deduce which
>>> of the patches would introduce vcpu_guest_cpu_user_regs(). Yet I would
>>> have wanted to double check that it doesn't de-reference v already.
>> It was already merged. It was part of:
>>    xen/riscv: implement vcpu_csr_init() "02b3a1b0e53c"
> Oh, indeed. Which makes clear that the BUG_ON() comes too late.

It makes this BUG_ON() unnessary at all if d->vcpu[0] wasn't created 
then construct_domain() won't be called for such domain.

I will just drop this BUG_ON().

> 
>>>> +    BUG_ON(v->is_initialised);
>>>> +
>>>> +    kernel_load(kinfo);
>>>> +    initrd_load(kinfo, copy_to_guest_phys);
>>>> +    dtb_load(kinfo, copy_to_guest_phys);
>>> These all return void, despite this also being used for non-Dom0. Is it
>>> really fatal to a dom0less system if one out of many domains fail to be
>>> built?
>> For a dom0less system, my opinion is that it should not be fatal, it
>> should simply ignore a domain that fails to build and continue with the
>> rest. However, with the current common dom0less code it will just
>> panic(). This is a behavior I would like to change and it is on my TODO
>> list.
>>
>> Regarding the functions returning void, this is because all of them
>> currently call panic() on failure, which I expect will need to change in
>> order to ignore a domain that fails to build in dom0less mode.
>>
>> For the current implementation of the common dom0less code this is fine,
>> but I agree it should be addressed in a separate patch series.
>>
>>    Especially when, despite the name, there is a Dom0?
>>
>> For this case, a failure there should indeed be fatal, so panic() is
>> appropriate.
> I think you misunderstood. I wasn't referring to the building of Dom0
> failing. Was rather emphasizing that when there is a Dom0, failure to
> create a DomU likely should even less so be fatal, as Dom0 could later
> rectify the situation.

Oh, okay, then it is really less fatal if DomU creation will fail in the 
case of Dom0.

> 
>>>> +    regs->sepc = kinfo->entry;
>>>> +
>>>> +    /* Guest boot cpuid = 0 */
>>>> +    regs->a0 = 0;
>>>> +    regs->a1 = kinfo->dtb_paddr;
>>>> +
>>>> +    for ( unsigned int i = 1; i < d->max_vcpus; i++ )
>>>> +    {
>>>> +        if ( vcpu_create(d, i) == NULL )
>>>> +        {
>>>> +            printk("Failed to allocate %pd v%d\n", d, i);
>>>> +            break;
>>> And no error is indicated to the caller?
>> No, as generally it is enough to have only one vCPU0 to run domain, so
>> we have to print that something went wrong with allocation of vCPU1...n
>> but it is okay to me to continue domain construction.
> Hmm, now that I look there, sched_setup_dom0_vcpus() ignores errors
> and doesn't even emit a log message. Question is why neither Arm nor
> RISC-V use that function, when we have it.

I haven't seen this function, I will re-use it and in separate patch 
suggest to re-use it for Arm.

One thing I think we want to do then is to drop #ifdef x86 around 
sched_setup_dom0_vcpus() and rename it to sched_setup_dom_vcpus().
And maybe add dprintk()'s to provide some information about which vCPUs 
were created and which not.

~ Oleksii


From xen-devel-bounces@lists.xenproject.org Thu Apr 09 13:41:26 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 09 Apr 2026 13:41:26 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1277392.1562599 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wApdK-0006Wi-Bx; Thu, 09 Apr 2026 13:41:22 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1277392.1562599; Thu, 09 Apr 2026 13:41: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 1wApdK-0006Wb-8y; Thu, 09 Apr 2026 13:41:22 +0000
Received: by outflank-mailman (input) for mailman id 1277392;
 Thu, 09 Apr 2026 13:41:21 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <Luca.Fancellu@arm.com>) id 1wApdI-0006WV-RJ
 for xen-devel@lists.xenproject.org; Thu, 09 Apr 2026 13:41:20 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wApdI-00Dx4A-3X
 for xen-devel@lists.xenproject.org; Thu, 09 Apr 2026 15:41:20 +0200
Received: from [10.42.69.12] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <Luca.Fancellu@arm.com>)
 id 69d7ac7d-bab6-0a2a0a5309dd-0a2a450ce794-12
 for <xen-devel@lists.xenproject.org>; Thu, 09 Apr 2026 15:41:20 +0200
Received: from [40.107.162.65]
 (helo=PA4PR04CU001.outbound.protection.outlook.com)
 by tlsNG-d25034.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.0)
 (envelope-from <Luca.Fancellu@arm.com>)
 id 69d7ac7f-f40c-0a2a450c0019-286ba2417192-4
 for <xen-devel@lists.xenproject.org>; Thu, 09 Apr 2026 15:41:19 +0200
Received: from AS9P194CA0021.EURP194.PROD.OUTLOOK.COM (2603:10a6:20b:46d::11)
 by DB9PR08MB7495.eurprd08.prod.outlook.com (2603:10a6:10:36c::11)
 with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9769.42; Thu, 9 Apr
 2026 13:41:18 +0000
Received: from AMS0EPF000001A8.eurprd05.prod.outlook.com
 (2603:10a6:20b:46d:cafe::ea) by AS9P194CA0021.outlook.office365.com
 (2603:10a6:20b:46d::11) with Microsoft SMTP Server (version=TLS1_3,
 cipher=TLS_AES_256_GCM_SHA384) id 15.20.9769.37 via Frontend Transport; Thu,
 9 Apr 2026 13:41:18 +0000
Received: from outbound-uk1.az.dlp.m.darktrace.com (4.158.2.129) by
 AMS0EPF000001A8.mail.protection.outlook.com (10.167.16.148) with Microsoft
 SMTP Server (version=TLS1_3, cipher=TLS_AES_256_GCM_SHA384) id 15.20.9769.17
 via Frontend Transport; Thu, 9 Apr 2026 13:41:18 +0000
Received: from DU2PR08MB7272.eurprd08.prod.outlook.com (2603:10a6:10:2d7::16)
 by DB9PR08MB9540.eurprd08.prod.outlook.com (2603:10a6:10:451::13)
 with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9769.40; Thu, 9 Apr
 2026 13:40:14 +0000
Received: from DU2PR08MB7272.eurprd08.prod.outlook.com
 ([fe80::5d34:206f:373:a323]) by DU2PR08MB7272.eurprd08.prod.outlook.com
 ([fe80::5d34:206f:373:a323%6]) with mapi id 15.20.9769.018; Thu, 9 Apr 2026
 13:40: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=arm.com header.i="@arm.com" header.h="From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck"; dkim=pass header.s=selector1 header.d=arm.com header.i="@arm.com" header.h="From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck"
ARC-Seal: i=2; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=pass;
 b=k8p+D3QeExGNbTCv5laL31nU1BlC+7vWiqoZUHUO4dFtdkR08HpfOd/Q73SCuRrYJTMnL3GajaG9sLWUg7azG/KP/uUAOFgRqVFtheRMarD/ZRWZR2DfXq3wKc11c3zaQN1vGqvma5pebSmrqm6dXjkXN8AdSBYjgNGmihxJfEKb1G1NTSGOj/PY+BAyLsWpE7szIJtVrACfIDDZ9DikDt0BW4W2KUUj3RyV5cncrX8XMAJdfEQDNwRulWn3MJIQCpfLaxx6N0X5w5Bgi1pvegpqtly+bPnmxz5wr0HhsjMW0uF66YFyFitLK4jQtX/uN+elJKi4d0JKLjrLgJwTAw==
ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com;
 s=arcselector10001;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1;
 bh=JnK9+icjjmEU8ioJbRHnplkpD1kgQsX7F/gQKt3NLcU=;
 b=UpyNtck8b+FWZBkIt+VQSlA/FpV5XzmrZlENiAt5avAWSRoM0XDOIa7/FYy3g0w/+tHqMdEAB8qJmjU5tkA3pPX0W1SsY47lKHFfu56caRlCn0u6A/yguJBukmt368XsKkOjvMK6GntovH2MpJi7ja8EfTyapfX8SZl2fWMIGeW+e8t2krSR0Vi9qG6aRT53gk2cBP4+U0TykhBf6Ht/0ocIo5kijjeK+L2ZQQhe/I7hyUCbSLpAntle6PpztvVbll+9TU6Wg6bHWo+xn0KvynepQAxXOo5gAIH07zGCn5CM4VPg1ZDtcALsMBuZakwKAVxQ6W/2i3oV+/RDSdQA4A==
ARC-Authentication-Results: i=2; mx.microsoft.com 1; spf=pass (sender ip is
 4.158.2.129) smtp.rcpttodomain=amd.com smtp.mailfrom=arm.com; dmarc=pass
 (p=none sp=none pct=100) action=none header.from=arm.com; dkim=pass
 (signature was verified) header.d=arm.com; arc=pass (0 oda=1 ltdi=1
 spf=[1,1,smtp.mailfrom=arm.com] dkim=[1,1,header.d=arm.com]
 dmarc=[1,1,header.from=arm.com])
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=arm.com; s=selector1;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck;
 bh=JnK9+icjjmEU8ioJbRHnplkpD1kgQsX7F/gQKt3NLcU=;
 b=rZOx/edPAlEpC3zrJElLY18WKDQilSb0De9Ggp3q8v6dCJZtk5Jc+Br2ZOsjqQ/el/onZvbkORgh1zaL/XQRxzAw6sQr9Y/ehu5aLaNbyVyB10Jjzaz8AB31l+xYzgra9hfDeOYOPNUdLMTSLz6pOlT4PPC3ML/zFHEG8XKPQu0=
X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 4.158.2.129)
 smtp.mailfrom=arm.com; dkim=pass (signature was verified)
 header.d=arm.com;dmarc=pass action=none header.from=arm.com;
Received-SPF: Pass (protection.outlook.com: domain of arm.com designates
 4.158.2.129 as permitted sender) receiver=protection.outlook.com;
 client-ip=4.158.2.129; helo=outbound-uk1.az.dlp.m.darktrace.com; pr=C
ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none;
 b=jo8yuJmWez+PshCpkD0kW0cyG1buAmJ6mlnLB/93vmd/t5zisgPH7pXXNozxmEoPODjdJSHSoPDIsrM1pPdkoIJgH1dIPcAo174uqdNilemC1TKt2LEkS/AKwjF+4c+/i14P+P0EZdTr6mB+Wz3qR7FSOVWyOxmolQGKzm20E21gMrigYH4xywesfUB9l+bzgZx8ljpP/GMwKceLlQKVFCEB3pbFbkgo4hvkIANmkHqDjVNsJBAQ/oex2gxVfNoMdS8baBPFP6hY7srXA2ifKMdmdty/BAbv5UjLt4aBlWd+QqprxQILg09q8bvUyBNRrNvSjHMd6e8olM5zDHqNuw==
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com;
 s=arcselector10001;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1;
 bh=JnK9+icjjmEU8ioJbRHnplkpD1kgQsX7F/gQKt3NLcU=;
 b=C/Vgc18ohQZvjJqAx6DMH9q5VQLoePq7UDDbRCoZwPJEKniG5rxicOUq3j8RbSylUoQnNR/BMUmZDnCR5P09DhkpXlj1v6HRcQvau63mPWrNukoPCKDR9A99pN3hi0L3R9qAWW6RrcnzS+g2hvPjtfprq8Oj9j16dMSjIlVIZtaPgqP3Xzn5vyRsviUKtU1J9ll7Wzx96Pu1TjkOt1FbX7CRpTIVJOfMoc/YMlzyXI6EXtOz7ZvP+ADiKlWJFrg/Ex8kdgKX0nZhmvPz0wYdF5Ykau1U7et71rLeqw5kEHuZhrqxewd2i7y0jgN007kj51i1WnFxzy7ma22fBDyIMw==
ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass
 smtp.mailfrom=arm.com; dmarc=pass action=none header.from=arm.com; dkim=pass
 header.d=arm.com; arc=none
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=arm.com; s=selector1;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck;
 bh=JnK9+icjjmEU8ioJbRHnplkpD1kgQsX7F/gQKt3NLcU=;
 b=rZOx/edPAlEpC3zrJElLY18WKDQilSb0De9Ggp3q8v6dCJZtk5Jc+Br2ZOsjqQ/el/onZvbkORgh1zaL/XQRxzAw6sQr9Y/ehu5aLaNbyVyB10Jjzaz8AB31l+xYzgra9hfDeOYOPNUdLMTSLz6pOlT4PPC3ML/zFHEG8XKPQu0=
From: Luca Fancellu <Luca.Fancellu@arm.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>, Volodymyr Babchuk
	<Volodymyr_Babchuk@epam.com>
Subject: Re: [PATCH 3/3] xen/arm: gic-v3: Use vsize instead of csize for
 virtual CPU interface
Thread-Topic: [PATCH 3/3] xen/arm: gic-v3: Use vsize instead of csize for
 virtual CPU interface
Thread-Index: AQHcyCZky/J45q2EJES1oyx3k2d1qg==
Date: Thu, 9 Apr 2026 13:40:14 +0000
Message-ID: <995B8A68-0DE0-4FE8-AC80-21E5DE498170@arm.com>
References: <20260409113934.197619-1-michal.orzel@amd.com>
 <20260409113934.197619-4-michal.orzel@amd.com>
In-Reply-To: <20260409113934.197619-4-michal.orzel@amd.com>
Accept-Language: en-GB, en-US
Content-Language: en-US
X-MS-Has-Attach:
X-MS-TNEF-Correlator:
x-mailer: Apple Mail (2.3826.700.81.1.6)
Authentication-Results-Original: dkim=none (message not signed)
 header.d=none;dmarc=none action=none header.from=arm.com;
x-ms-traffictypediagnostic:
	DU2PR08MB7272:EE_|DB9PR08MB9540:EE_|AMS0EPF000001A8:EE_|DB9PR08MB7495:EE_
X-MS-Office365-Filtering-Correlation-Id: db59580a-faa4-4fae-a548-08de963dad8d
x-checkrecipientrouted: true
nodisclaimer: true
X-MS-Exchange-SenderADCheck: 1
X-MS-Exchange-AntiSpam-Relay: 0
X-Microsoft-Antispam-Untrusted:
 BCL:0;ARA:13230040|376014|366016|1800799024|38070700021|56012099003|22082099003|18002099003;
X-Microsoft-Antispam-Message-Info-Original:
 w4w5E/sw1go0hbMscFKfBed8GH1m/sCmnYaQc8btzbxmetJk8n7OcJd/qeZsGPT9hLdT1g10LPFQfu/jKr4+M/AiYcMZkF1LZbzno91q1hDbKSbTlHnC5+oGBNJCXxAf2bJFkWH3V3hoUViBuHca0fwo63eVEhmLBuJhlZDHK9r+L8y7FWwJXPElmFmYYGr5o4/TYkj2Hb0h2hkwUjK1fxG/bA6U7EotabUdtD9E3dRcSCWSToC3+0tBsDMsNSKuw99TNn3BUWC3ee20R94ODcArHIeKpbL4t9EMlSl1dY2C+x0o1Jc2fmqHHCoJlJzviAgOnmGdQRbpMP6oFyZl6JRX7yrBbY1CiTKxEV6QCwhwdOD0wBRJMjXPf0qnTTAFapY6ZJY+BSB2d1lszMAfN+IKCQJhV3OB2Nlo+ccUivSgzmMGcngYCjjK95MIEGlG6UWUTYwYK7OAvtmBBMr8H/61l2UeITOZkhjHn08BEeLeaOya3x7CmD2wm/peKEln90M7t7ssspf1zN8kRnnSxS8O8rnCHr4Lkna+DiP+6N3/otMY480PqtvEYGDkwaWc6FlZrho+SZeyG4yzln35bYTAA5RTLSFhGOfFPlBjXEAJVxMAc3KvUgkC1nP74K5m3SQxX0MUPA7jmB5jd4Ej5N/1CspTarCiE8mNdwu421Zwy/9h/NHGKIvBWv5pU82Ey7ekJru+M1ZabIVqF307E9rBp+UivLYOroKcXk2FaQ/jJdrvXBFpAu8+Q4lzGTxLFCTRJZPkLRO0rn0IyWNDQ2P0bjQQ7xmIhATxc04f8yI=
X-Forefront-Antispam-Report-Untrusted:
 CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:DU2PR08MB7272.eurprd08.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(376014)(366016)(1800799024)(38070700021)(56012099003)(22082099003)(18002099003);DIR:OUT;SFP:1101;
Content-Type: text/plain; charset="us-ascii"
Content-ID: <3D52AB8F0873524B81AE20D9F8E3A4C7@eurprd08.prod.outlook.com>
Content-Transfer-Encoding: quoted-printable
MIME-Version: 1.0
X-Exchange-RoutingPolicyChecked:
 SQs+hUwNmHSun19KznISSWCl0G5Ziuo8JJUukgtUZ1UO+BK3Pso+FudWkRUbu4jeCeTXrpsg0UZRUpA7ajCq95eTP0TEFE3MwmTmyer35CsdkZQwrTiYiJRlbsl13hzHzStBxXa4MLDw0wcn/t1WL5+wG6V8OyIX6m+3ql7EEsl7CEmoXtSa+i459iasJ5OFQWDreIDFiymeDH8WcVA3R86+SvYvJLxOyNY6MAqPjUd3SoppNmANjnBUDXI5pukbIAiK8DQiTMPDye4di8sQv4m2efbV6PI/eI0OAI7jMGXTjLKzatilw7OLAuup5f9+7bBkfOKHLms6u6msOSjskg==
X-MS-Exchange-Transport-CrossTenantHeadersStamped: DB9PR08MB9540
X-EOPAttributedMessage: 0
X-MS-Exchange-Transport-CrossTenantHeadersStripped:
 AMS0EPF000001A8.eurprd05.prod.outlook.com
X-MS-PublicTrafficType: Email
X-MS-Office365-Filtering-Correlation-Id-Prvs:
	c344d282-48c4-4b2e-57fc-08de963d877a
X-Microsoft-Antispam:
	BCL:0;ARA:13230040|14060799003|36860700016|35042699022|82310400026|376014|1800799024|18002099003|22082099003|56012099003;
X-Microsoft-Antispam-Message-Info:
	0KwnwOXKu2clgwdLIgSTJD7u0+7IwIGOffI6Wgb/pdRpHKIW0ySBxxXsLeBCwRx/u/bl2SFfUHM2b1ZMiKuOJ+Yi3Uy8o/LddSpDliiAkCxs65SFqaF0P9+JHEDN90LsR4VphTQOACn3IR4mn0vARHDxI/DvwM89Aob5d1ySNwp3GFfrxuuTGyeqxJoVrDgnZ23JLbc4svbRPYk4ThOd+CDDfkv+2QcX1DqNdmJ5TPy/lkIdbhf2zFQiVO1gGRIPta1YYelwS3oW9rBTHCBi8pMdZS/68yoDD1+gmmMPdkbdyt6pJrP/m4tzCbr3GXhHLWhUqO//z/0E6CR9JeM/iMVYRTVRCpwCN/jTqrAQMK2MXE4zxN1fUsCCN8wc8gVQVoaa5SswUsYz+XhhaD1vTfekMHHbAEuo3g3c96hOlDjMaID16AMRHu58quijqm6qDxeguPaPEd3SvDeR2dsylKN6IOkgn8WWZBTT0ycIDSJFHrdyIykaBEB2tA6SII/NYHh5enmoWI3hVUcPTvzBsOksS3vbnlnhnA0NU/RLb1d4g1A4c+jeA+WJ3A1ObQU8di1aqkDOTxD42svDLHFltAnXfGYqJHMv9XSVs2UldMSpv9aPiySjeXMp6+teD9zRw+HhUBN6chuSSsSr2YhJga6t077xYS7KxrpIlWC19+Hvyu89jvbCZSJT13V2O54k23UwpxrJpsSP7QcFlcIWI4LNtmPbZ2hb9jecyein0AkLYKRrVdt1z6wvt3thS9Aewf/GVUnujs4kjhixfGNgYg==
X-Forefront-Antispam-Report:
	CIP:4.158.2.129;CTRY:GB;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:outbound-uk1.az.dlp.m.darktrace.com;PTR:InfoDomainNonexistent;CAT:NONE;SFS:(13230040)(14060799003)(36860700016)(35042699022)(82310400026)(376014)(1800799024)(18002099003)(22082099003)(56012099003);DIR:OUT;SFP:1101;
X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1
X-MS-Exchange-AntiSpam-MessageData-0:
	BzEDDCjvi0zMKVMYNZFxPvEb7DskmU0pyqv3hVpES8LMUS99fzloTpNt6qzmNT9/wT7gFJa88AUYZ7kLqBYdMJWDV8B8gaIGvyhxym91KA+xcFw4hXTpCxlPEoAFBAkPZpuJF/N1CfBjEgV5jIft593xTv3QVkxJEc+LZlB3aMx1KTug+na8iuoR2+am1m0XlgpKbRIhaEx/l3fdC1dgrNYXzE4EI93Fk63JOKJyPoHwhN1jmA5c+mk7E0raeIL5yyfnm0M+4MxpmNeDJ6PiojJm/RW0kxRrS2HACpOgdqIBBl8STNGVAl59fGIVe4/QhjNff+pWWFODMy69ucgguKrDcm37+aWSFOTmbQeKhvzHu3vwQLSgAVtySoIA0YHpFmHpkXkWvW5gfrPGD6gtTorNCMomJO9xfAyT0H4AaEr2ecm0vCJjcXJOQmv1Bohu
X-OriginatorOrg: arm.com
X-MS-Exchange-CrossTenant-OriginalArrivalTime: 09 Apr 2026 13:41:18.0867
 (UTC)
X-MS-Exchange-CrossTenant-Network-Message-Id: db59580a-faa4-4fae-a548-08de963dad8d
X-MS-Exchange-CrossTenant-Id: f34e5979-57d9-4aaa-ad4d-b122a662184d
X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=f34e5979-57d9-4aaa-ad4d-b122a662184d;Ip=[4.158.2.129];Helo=[outbound-uk1.az.dlp.m.darktrace.com]
X-MS-Exchange-CrossTenant-AuthSource:
	AMS0EPF000001A8.eurprd05.prod.outlook.com
X-MS-Exchange-CrossTenant-AuthAs: Anonymous
X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem
X-MS-Exchange-Transport-CrossTenantHeadersStamped: DB9PR08MB7495
X-purgate-ID: tlsNG-d25034/1775742080-8095DA3D-789EA28E/0/0
X-purgate-type: clean
X-purgate-size: 553

Hi Michal,

> On 9 Apr 2026, at 12:39, Michal Orzel <michal.orzel@amd.com> wrote:
>=20
> gicv3_iomem_deny_access() incorrectly uses csize (physical CPU
> interface size) instead of vsize (virtual CPU interface size) when
> calculating the number of pages to deny for the virtual CPU interface
> region at vbase.
>=20
> Fixes: 8300b3377e ("arm/gic: Add a new callback to deny Dom0 access to GI=
C regions")
> Signed-off-by: Michal Orzel <michal.orzel@amd.com>
> ---

Reviewed-by: Luca Fancellu <luca.fancellu@arm.com>

Cheers,
Luca




From xen-devel-bounces@lists.xenproject.org Thu Apr 09 13:50:41 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 09 Apr 2026 13:50:41 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1277414.1562620 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wApmB-0000Ha-TL; Thu, 09 Apr 2026 13:50:31 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1277414.1562620; Thu, 09 Apr 2026 13: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 1wApmB-0000Fr-NP; Thu, 09 Apr 2026 13:50:31 +0000
Received: by outflank-mailman (input) for mailman id 1277414;
 Thu, 09 Apr 2026 13:50:29 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <Oleksii_Moisieiev@epam.com>) id 1wApm9-00007Q-NA
 for xen-devel@lists.xenproject.org; Thu, 09 Apr 2026 13:50:29 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wApm9-005hHg-2v
 for xen-devel@lists.xenproject.org; Thu, 09 Apr 2026 15:50:29 +0200
Received: from [10.42.69.8] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <Oleksii_Moisieiev@epam.com>)
 id 69d7ae9a-bab6-0a2a0a5309dd-0a2a4508a406-28
 for <xen-devel@lists.xenproject.org>; Thu, 09 Apr 2026 15:50:29 +0200
Received: from [52.101.65.135]
 (helo=DU2PR03CU002.outbound.protection.outlook.com)
 by tlsNG-c1860d.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.0)
 (envelope-from <Oleksii_Moisieiev@epam.com>)
 id 69d7aea3-fab6-0a2a45080019-34654187b92d-5
 for <xen-devel@lists.xenproject.org>; Thu, 09 Apr 2026 15:50:28 +0200
Received: from DU5PR03MB10263.eurprd03.prod.outlook.com (2603:10a6:10:519::5)
 by AM0PR03MB6132.eurprd03.prod.outlook.com (2603:10a6:20b:145::18)
 with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9769.17; Thu, 9 Apr
 2026 13:50:26 +0000
Received: from DU5PR03MB10263.eurprd03.prod.outlook.com
 ([fe80::8c9e:b301:61c0:3908]) by DU5PR03MB10263.eurprd03.prod.outlook.com
 ([fe80::8c9e:b301:61c0:3908%5]) with mapi id 15.20.9769.020; Thu, 9 Apr 2026
 13:50: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=ZEfJF4ynxgz78H1SxcSfW8YAO81vVYou7L3/yqCJ9By+AdlBgJDI85NWr1y//DKwfEa1aDxPyx2OkwTBVjw1cQjlQs7CvGFJxzTUD6bJI835auTSTeK7sE2ubxXc5PSxq4ubGJnZwcqZjQlPBgUsiWQn6dgikC87MK9T/qqmtZihB27M1IOboMRhZmc0EJGf/hX/VbbA/0DXFEUx1TXo/ObPQX2GTg5JdfcFSguNw4nxTy9KANDFYhVWBpHMVBpOC0PtpUhDfqTexb2sRG9bHk7j99EigABQMRVHH1hWuR1A4+/Kzdp7VTgMTXSVV8cRB7B7R5vkliqhm4wZ1Hqivg==
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com;
 s=arcselector10001;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1;
 bh=oAfXz+4yU574RkHhJeRj5xLLKToN+/aJ1HqmB1NjL18=;
 b=lBFWPfHaIA9xCfDpBnKdi7P+xkmArhsVhfSbBUACKq+vsv7MaCpNgpaZOclRTdo48D5taV9/5riGPl5z4PhcWUNlfJlVkOTlVlk59FxdsFH9sTt8d8zVRe6kjNctdIU7NodHQxS6OSXjltgxqgSrtbX0yKiNyn99BWEJ5cE600xGvkgNj43DcXV88KOjhcsh2ZkstL12T9yzMD8v8Or6jdDvluCQ5CsKEk3nS4gLmgGOTKWLunAvv3Ikf9Kf+J/XUoIYXFLkk5b4Hy0IijU5YpeM6uzkaaIMjiSA1OZh/c0gjS5PbVcMxKMULL2tIXkmqoiMsLv1SvxoqgKFcQ2IsA==
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=oAfXz+4yU574RkHhJeRj5xLLKToN+/aJ1HqmB1NjL18=;
 b=IrwzPCUHzxmG0xos1tr2bSlrobF1JZ/zyStLP42/C0YyZIa55mRizxR8rILdmgCU1QDpwrfbcbhe403KSVYE6/ee5GhpFnFGrkdlMjEwINHcrEbYJK0I9s5sXiHagvHJHZSC+MuijkdrrvMHa3k5GpAjYMR2A0lf8fZyNdHCfTPUdKbF8e9mo1b3o9IfmBuPCKA1Lym09AcuqM5i55YGrWofXkKBWTfHFsYB9dJR9SsYJqhzcpAlq9o4VqdPuGTEfZ1RwvrBfJy1DBDKQRufiq2eEXS3calQ9jaayCKZgY4/Qmqgr6bTwhcgcK0FizHYovzwyXnslIGfh2US7s/GaQ==
From: Oleksii Moisieiev <Oleksii_Moisieiev@epam.com>
To: "xen-devel@lists.xenproject.org" <xen-devel@lists.xenproject.org>
CC: Bertrand Marquis <bertrand.marquis@arm.com>, Julien Grall
	<julien@xen.org>, Michal Orzel <michal.orzel@amd.com>, Stefano Stabellini
	<sstabellini@kernel.org>, Volodymyr Babchuk <Volodymyr_Babchuk@epam.com>,
	Oleksii Moisieiev <Oleksii_Moisieiev@epam.com>
Subject: [PATCH v2 2/4] xen/drivers/char/pl011: fix IRQ registration failure
 propagation
Thread-Topic: [PATCH v2 2/4] xen/drivers/char/pl011: fix IRQ registration
 failure propagation
Thread-Index: AQHcyCfRI6UUL+j1Mk2LAfnsFV7fPA==
Date: Thu, 9 Apr 2026 13:50:26 +0000
Message-ID:
 <9148b1721adfacf20c5621eb583f6fe87dead767.1775742562.git.oleksii_moisieiev@epam.com>
References: <cover.1775742562.git.oleksii_moisieiev@epam.com>
In-Reply-To: <cover.1775742562.git.oleksii_moisieiev@epam.com>
Accept-Language: en-US
Content-Language: en-US
X-MS-Has-Attach:
X-MS-TNEF-Correlator:
authentication-results: dkim=none (message not signed)
 header.d=none;dmarc=none action=none header.from=epam.com;
x-ms-publictraffictype: Email
x-ms-traffictypediagnostic: DU5PR03MB10263:EE_|AM0PR03MB6132:EE_
x-ms-office365-filtering-correlation-id: 588abf02-8138-40f9-2dc5-08de963ef465
x-ms-exchange-senderadcheck: 1
x-ms-exchange-antispam-relay: 0
x-microsoft-antispam:
 BCL:0;ARA:13230040|366016|376014|1800799024|38070700021|22082099003|56012099003|18002099003;
x-microsoft-antispam-message-info:
 bq/IPq+gM8Q4WGk61Vyhx6odZd5dQ/kue6bSmt2osxz19XcHf72joTWDhZY+Ekpg/l0+ndj1XOP+FdMPZjqkkBETFFtA8jQlhZZrsFkKiy07oLGZcDk/l0vPS9povQN+R5p8IzJjTHDuzJ6J2iTGTHEdqK+HS0hFlBOI3m2PDU5W3uU3rcDkzbacZL/CCFmVB70/NMmgi1uLec2S6j5T1JtuqwC2SuMuNz0C/u3sCLTHeW6Q1foqQ2T+4EPY0HMV7aDvLmmSK76PkybHOaSzMIyc7ge4lwm9u3OgNYp4Az/7+91Pafit43w09F5RmOGnh/c2KOrsNXRTUUhIFuRGTG3r3xKMnyqtLSBccy1apEqCFjDvNRqRQBFo9Ha8dGfT1uFw8ADnto6hmtp1yvqOwwSBlGS2Wc0tCBfr0b9UJ224a188vvHyrpsWPQ04YHvJaWkUFALDoV/Ygq4o5Rux4OCujx3waFWMOPr0n8bKVv+91twkxeCya+dxCwLECXRuSrMEwcCZJJ7TkBcqua4BDeNUH8vmUxQAzhDdFEqS3Q9ZXJJluTjZ9KFjDhrGnU602zT3f31AHXzntu/k6kJPyfRc7YH+bpT47LFDvodLI2wEPJZ2pw18wd9WzugKC4+EHSTZyHdhydcAzutNxjwh2HxkBFYodwjBs9qQH3Lj6xpcP/RvKkY1RJmeeD6zy53GkpVWZsj18uZSoitcuRUJk9GM3w54wZ2+cjYlCVea+RkT0oKQrnPuakVfYqn685HL+EHdm8y09DUGdHxA+YyCRzGyzmcSTqwSSwSp2FKnwUw=
x-forefront-antispam-report:
 CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:DU5PR03MB10263.eurprd03.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(366016)(376014)(1800799024)(38070700021)(22082099003)(56012099003)(18002099003);DIR:OUT;SFP:1102;
x-ms-exchange-antispam-messagedata-chunkcount: 1
x-ms-exchange-antispam-messagedata-0:
 =?iso-8859-1?Q?evqDq4NKjZ11jID0xRJLv1M4athjaJ0MQzHAMTpvNCN1CxVm0tr2Rn3bVw?=
 =?iso-8859-1?Q?IiuY/LwdHIIfvj1XIIaaSgG89C5wgHZIx1G3M1CRBwWxXUollQT38yQ9t1?=
 =?iso-8859-1?Q?BJxK53QP8VHcl0Mom1EoLD2SwvsYGvKxHXiWUS8w+rH75B+yDDdCTG1L/p?=
 =?iso-8859-1?Q?8cGEtMfZHzCoorh6TlZfvlxsZv+81MgM+2POSon+Tn7GHSBO+YOJwYE38c?=
 =?iso-8859-1?Q?kL4ljvCRgsgrLNl8MpRnk/6/uicWB4CpglmZEmm/u7Ht2J42S8EaZ865b3?=
 =?iso-8859-1?Q?n2dSh1fuDGnH6f/FY0ltHJhf/m5gRpwxMFKjA+bU8YzvL6RwE08xQNgnN0?=
 =?iso-8859-1?Q?DDdjSjOOog5hq+7sC9sjMvxOGA5qdUHPMHIgdiublpzmpFYlleYEMGz54R?=
 =?iso-8859-1?Q?STREeu5M5HffIVMG1wiVGYB4vzeTk8B3NVIVBXKlYnBdZjEyJicFoVJ12G?=
 =?iso-8859-1?Q?ltWhWkKgWKXbi9yzmh2zdVpkmzKU+doFh1rbClxbGiDNVvDb6FXmrgtpOp?=
 =?iso-8859-1?Q?B2bJ3fiHc55MaLnv1+VlxGsH9Vav0bQSC2ntWI2d158T3TcNKU1G317iDg?=
 =?iso-8859-1?Q?dwJOMNUxByzkkevNcocEGXVTfbr6edhoMdkMmbbxNnYETQG70Wj1K6542t?=
 =?iso-8859-1?Q?uSHQ6zpftVDnbb4ge0wBg5eHAycNIGtEZ8Ifm+sYA8kiTMdHCQh6RIK4zH?=
 =?iso-8859-1?Q?w4CRm6vX5+y/jWXqiiUnlPKv9bHqjkOXLCZGzHhFLzjK9DDiHMkf5Bez3v?=
 =?iso-8859-1?Q?fVGQMPDNdCNiCd6Jov93WVZ6w9j8jbdnLLJ7YkBQ+1xMQ+wB5zpwAyjFLf?=
 =?iso-8859-1?Q?z5zWYfCK2crF0u/x9DmW9zOACRlm4C3ifmw9V62HAR7FJAj1Q3PPh+85rH?=
 =?iso-8859-1?Q?ynnqiAMunGDH/s8CE9YweHLza410/Y6MIfA73RZrSXjVeZ1RgLEpw0eGJI?=
 =?iso-8859-1?Q?MtpFOo0t0JD9OEEzoMLL/RDlRMZyMOfRqWuk7bwrt2sMPfaz2ElKs30mL0?=
 =?iso-8859-1?Q?f4RC7n0UywlA5JZ6jK/cAbXHF3YD5/R+B9sJ1sdon2c5GHSqQJwLAh06HA?=
 =?iso-8859-1?Q?slvhSfw5/U9Fe+ZaiVwcp7JUm6GkzM+SIvOjoeddBcrJ7CaniuUF/l68oM?=
 =?iso-8859-1?Q?CNNEotlu/4mgn+vAQZJ1kP5zoWMe2LHID1A1O70bhdfSt2sRBP6N2D4ww2?=
 =?iso-8859-1?Q?T4eDI/qEoLb26SZdWCctCwXMrUDLkt6yUoD/JM7L8NsLdlTNSdmc9FG9iK?=
 =?iso-8859-1?Q?qKoqDKSY0a4z2gCLivSpcufsL0fv7S59NFz2yFaR4MFmPSDfERmI1R5ewT?=
 =?iso-8859-1?Q?0Am+sWhQ6inyydrJC3IYklzzt+2ZXedftlCZOTrs9DFImD2/UeUoAcAQOb?=
 =?iso-8859-1?Q?FkQXRhHDjuisdVpktNnS3xqR/ZpKVtKgs6jk73vf4og7j0bGrRg5MLXy4U?=
 =?iso-8859-1?Q?cM8QiEqLCBwQHAsplbolMIDyv0MujRhwpHh2ekh52WgOm66CwXIMtUUB2u?=
 =?iso-8859-1?Q?HiDzPg3hEE6s00aXn2257i03U6S7nEyYROwBDWvK3I0wiq14zXZ5b6uUcP?=
 =?iso-8859-1?Q?rW3wPFq8bPAbmth8QZHrhf+BHqhPah/iUty8IOq1z25Oe1LxnHRW94yONQ?=
 =?iso-8859-1?Q?uqORf2gu+RtYF723h8tg/SLXXpkHfTUdDKjZSYXg2dwD5lq0Cal3anxAH0?=
 =?iso-8859-1?Q?FoQY/idYH30Tn/jYr3ZI7AV1G+eLrumIn+UlHQpNDWmSQGBZIGiaKJ3i24?=
 =?iso-8859-1?Q?IceGGNr1ln1p8AUvUbwu0zGAcGXYiHWhTxkJvW2lCJOW5kBCTgcJL65gLq?=
 =?iso-8859-1?Q?p/y2HTW45Iavl8/ClebOWMUZfW8PjE8=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: DU5PR03MB10263.eurprd03.prod.outlook.com
X-MS-Exchange-CrossTenant-Network-Message-Id: 588abf02-8138-40f9-2dc5-08de963ef465
X-MS-Exchange-CrossTenant-originalarrivaltime: 09 Apr 2026 13:50:26.5565
 (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: iYjlsjc5YKfVLkPX7juPbDHSlOjkQg2VEhGt9luVc/PKjLxmUVkFcWHyQPb2mcXOSGAfQzEAzknYtx8brKrAvfMxLGuLgw4k97D/wGSSvb4=
X-MS-Exchange-Transport-CrossTenantHeadersStamped: AM0PR03MB6132
X-purgate-ID: tlsNG-c1860d/1775742629-74360497-90379B8F/0/0
X-purgate-type: clean
X-purgate-size: 2372

In pl011_init_postirq(), two code paths could reach the
interrupt-unmask write to IMSC without a handler being registered:

- When no valid IRQ number was provided (uart->irq <=3D 0), the original
  positive-condition guard (if uart->irq > 0) skipped the irqaction
  setup but still fell through to the IMSC write, unmasking
  RTI|OEI|BEI|PEI|FEI|TXI|RXI with no handler installed.

- When setup_irq() returned an error, only an error message was
  printed and execution continued to the IMSC write, arming all
  hardware interrupt lines with no handler to service them. On
  platforms where the GIC receives these asserted lines, the result
  is either repeated spurious-interrupt warnings or an unhandled
  interrupt fault.

Restructure pl011_init_postirq() to use early returns: return
immediately when no valid IRQ is provided, and return after logging
the error when setup_irq() fails. The interrupt-enable write to IMSC
is only reached when IRQ registration succeeds.

Signed-off-by: Oleksii Moisieiev <oleksii_moisieiev@epam.com>
---



 xen/drivers/char/pl011.c | 17 +++++++++++------
 1 file changed, 11 insertions(+), 6 deletions(-)

diff --git a/xen/drivers/char/pl011.c b/xen/drivers/char/pl011.c
index 5f9913367d..918b9d4d4a 100644
--- a/xen/drivers/char/pl011.c
+++ b/xen/drivers/char/pl011.c
@@ -150,13 +150,18 @@ static void __init pl011_init_postirq(struct serial_p=
ort *port)
     struct pl011 *uart =3D port->uart;
     int rc;
=20
-    if ( uart->irq > 0 )
+    /* Don't unmask interrupts if no valid irq was provided */
+    if ( uart->irq <=3D 0 )
+        return;
+
+    uart->irqaction.handler =3D pl011_interrupt;
+    uart->irqaction.name    =3D "pl011";
+    uart->irqaction.dev_id  =3D port;
+    if ( (rc =3D setup_irq(uart->irq, 0, &uart->irqaction)) !=3D 0 )
     {
-        uart->irqaction.handler =3D pl011_interrupt;
-        uart->irqaction.name    =3D "pl011";
-        uart->irqaction.dev_id  =3D port;
-        if ( (rc =3D setup_irq(uart->irq, 0, &uart->irqaction)) !=3D 0 )
-            printk("ERROR: Failed to allocate pl011 IRQ %d\n", uart->irq);
+        printk("ERROR: Failed to allocate pl011 IRQ %d\n", uart->irq);
+        /* Do not unmask interrupts if irq handler wasn't set */
+        return;
     }
=20
     /* Clear pending error interrupts */
--=20
2.43.0


From xen-devel-bounces@lists.xenproject.org Thu Apr 09 13:50:41 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 09 Apr 2026 13:50:41 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1277412.1562609 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wApmB-00007u-Ag; Thu, 09 Apr 2026 13:50:31 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1277412.1562609; Thu, 09 Apr 2026 13: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 1wApmB-00007n-71; Thu, 09 Apr 2026 13:50:31 +0000
Received: by outflank-mailman (input) for mailman id 1277412;
 Thu, 09 Apr 2026 13:50:29 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <Oleksii_Moisieiev@epam.com>) id 1wApm9-00007H-4D
 for xen-devel@lists.xenproject.org; Thu, 09 Apr 2026 13:50:29 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wApm8-005hHg-GO
 for xen-devel@lists.xenproject.org; Thu, 09 Apr 2026 15:50:28 +0200
Received: from [10.42.69.8] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <Oleksii_Moisieiev@epam.com>)
 id 69d7ae9a-bab6-0a2a0a5309dd-0a2a4508a406-18
 for <xen-devel@lists.xenproject.org>; Thu, 09 Apr 2026 15:50:28 +0200
Received: from [52.101.65.135]
 (helo=DU2PR03CU002.outbound.protection.outlook.com)
 by tlsNG-c1860d.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.0)
 (envelope-from <Oleksii_Moisieiev@epam.com>)
 id 69d7aea3-fab6-0a2a45080019-34654187b92d-3
 for <xen-devel@lists.xenproject.org>; Thu, 09 Apr 2026 15:50:28 +0200
Received: from DU5PR03MB10263.eurprd03.prod.outlook.com (2603:10a6:10:519::5)
 by AM0PR03MB6132.eurprd03.prod.outlook.com (2603:10a6:20b:145::18)
 with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9769.17; Thu, 9 Apr
 2026 13:50:26 +0000
Received: from DU5PR03MB10263.eurprd03.prod.outlook.com
 ([fe80::8c9e:b301:61c0:3908]) by DU5PR03MB10263.eurprd03.prod.outlook.com
 ([fe80::8c9e:b301:61c0:3908%5]) with mapi id 15.20.9769.020; Thu, 9 Apr 2026
 13:50: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=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=clixax+jzXYK0s3DnxNYxlgNBMewUnIhN4A1TlCXgH9/9znWRI2kGU//Nnu8j08SrxRwn7pufiXUq7pyH04OJe/UmFsAQJ2uT2Ntk/KCRFoq8L8RoJAdKtRgShbJE8iq/buLsFIuGyCci33udaPJURP+IoJlL7OOvVLih+3fZlKeLxmAagnSwqUsYTA4YiOgXwKk8NxXZ5iMm6k0EBowUjE3BSoSFp8wh1JhEwraXFWnzeA7TQyIzg5c0IxDW9hoCOgLlwePdKza38LDKAZFto5W00vNi7fEl8vNuoAsmHXUyh0Dl//Z9dLhoNmpbHsa4jKEVbyjnZA9wZdl7qPGlQ==
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com;
 s=arcselector10001;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1;
 bh=MWk0b/gbdHiEsL9b29E7NaM7gms/+2H6hdGEui5llV0=;
 b=ybZSH84jRfcKqBvwct1euR/yKPP2FxzgdPlNuHKiSnY+V2ayu6kbrKQtZ3CKcq+j1grjFD9KJCx8+6pnGe/QCtpnhRhvJsn9BJKbcUzgLLwyzXPbD5/mIDLS6sc1BmuuziJDqaj0wfns75VqNduv09+AVUGb06uCMuRKw/aQL0DwgBYK2I+1mwl4FVLJIpkTmYhNv2oynWJIKdAv+jnSF5TNXrCJNhpJQ0E22vxZ99xRuG0mSTu+BLijtIutqpg499z4fEnO2p+7UqeZhoX4dLLLGjN1UYA3tuwOFOVFppeABwSXIz3kTivWVGdiJl9noR5Ch1z5sIt1VFNiN997Sw==
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=MWk0b/gbdHiEsL9b29E7NaM7gms/+2H6hdGEui5llV0=;
 b=lRcJfXb+IU4VFySrAOgzXeGYDKRE8eoXAaszk61dGLo38CUBJ939CYOITc8D47/fRJ8C5b8sPHzyWUa+gilBh8Z//LPTBViQOMGYS61gzyAOEnA7bJ4n5AuTOQhdNiRIdXAI3Z5OSne0XioqhnVt4cVS+3G+Xdsfsd9BJYsDFzb3rJUoYrXdrpLBSK1A7/m8n2NUBP/4mVI+gUbbcgAfdK+4W66Rkypx1QA1g/w+mwD8MQ1FtPnExWcWvOXtTOkrcxIwSyx9KitrLSqqPZn8AqTGiDse2IEPCvVmWYuofOckKNBUnOHYdgGfYGstp5aQN7VsU+bTuPBgn4i4uM118Q==
From: Oleksii Moisieiev <Oleksii_Moisieiev@epam.com>
To: "xen-devel@lists.xenproject.org" <xen-devel@lists.xenproject.org>
CC: Bertrand Marquis <bertrand.marquis@arm.com>, Julien Grall
	<julien@xen.org>, Michal Orzel <michal.orzel@amd.com>, Stefano Stabellini
	<sstabellini@kernel.org>, Volodymyr Babchuk <Volodymyr_Babchuk@epam.com>,
	Oleksii Moisieiev <Oleksii_Moisieiev@epam.com>
Subject: [PATCH v2 0/4] xen/drivers/char: fix IRQ registration failure
 propagation
Thread-Topic: [PATCH v2 0/4] xen/drivers/char: fix IRQ registration failure
 propagation
Thread-Index: AQHcyCfR2w68ukca0EGyU3O5OTVPxA==
Date: Thu, 9 Apr 2026 13:50:25 +0000
Message-ID: <cover.1775742562.git.oleksii_moisieiev@epam.com>
Accept-Language: en-US
Content-Language: en-US
X-MS-Has-Attach:
X-MS-TNEF-Correlator:
authentication-results: dkim=none (message not signed)
 header.d=none;dmarc=none action=none header.from=epam.com;
x-ms-publictraffictype: Email
x-ms-traffictypediagnostic: DU5PR03MB10263:EE_|AM0PR03MB6132:EE_
x-ms-office365-filtering-correlation-id: 1320194d-9c28-4a15-f0a0-08de963ef3ec
x-ms-exchange-senderadcheck: 1
x-ms-exchange-antispam-relay: 0
x-microsoft-antispam:
 BCL:0;ARA:13230040|366016|376014|1800799024|38070700021|56012099003|18002099003;
x-microsoft-antispam-message-info:
 c5BrM7ES3vwDIIh6wryN+yuj/EDJCZOGfY1VBfniPGzLq5ASdGwddiJjfbDF9/RGxhsj4bQn1osQYnzrBBbUfmSFhKbGgXv2Ak9+bzKaePL7zpzyqkX7edihkoCHHvXhRwsWV4zqFriYZngA+2Fl2nsoqrqvn8RxMc3+4CUlt+H2ahNIJ/UgcHB5pyeHzjldGORDRYwZl4z7idXnJHNjjeEAR71u41s6iNG4qV82RGzfjRKf3HVGG91QsdByCb4cMybQCFLZM5COUY0wXP5ps38MxHzpFkHXPhMu86GhmjxBAe/dMfPRqXjQkxXa44QvgTx+3kDmYQpN2H/xGGnH5rOcXgX2LsmAEMOMddNfEuHMiAg+Ljrr8NoUwqHeYssPfl8p4Bav2wFBuZMcDZYf2mrOI6+srtiA9hBcEQrzzyTIuloZmCrcDHmqzxBqKS+ogYjxneSu9RYBgtcHvgqBdokUSKSXzRYbVFX2unPEDYPIKsDvscTx3Bdut47OHBWLKleiuwvX4nXzsLOuI06NO1CGR2UcHGzHd3DiUGmcWYJ+CjhYe57NffolIrTiKYrYE+wdMcO+FVKEVoTxUvUneNV/ea8ncaSh8e9xks2y7SnfUsnWTqw+JVo0XtRhKbf9EdHMiKkGMhBonL2J0GNKTBDKUT4IRV/fNQwV692RiUr01UPaaeA/M72kvT91Q8/R1d8IHiPZ3tS1EQV3lM3USgEzGUCYGP8R5e70/hUqh1PAUVzPvUFs4jwOsKICCogwd0oLfoqXU9vf5wWs5pEgiz98IorFVfxGd9looImkov4=
x-forefront-antispam-report:
 CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:DU5PR03MB10263.eurprd03.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(366016)(376014)(1800799024)(38070700021)(56012099003)(18002099003);DIR:OUT;SFP:1102;
x-ms-exchange-antispam-messagedata-chunkcount: 1
x-ms-exchange-antispam-messagedata-0:
 =?iso-8859-1?Q?kZDfthteOVx+yJhZlEIY7lELys2e7QoQRdOtLtch3TJ1R0h2349Oc0G2rn?=
 =?iso-8859-1?Q?eV4QuwP8TpTMstGF6Io3ip+I1pqPBp0m+2Erj8XqrZcaL5aEdQjII60hBN?=
 =?iso-8859-1?Q?uaSl0YAOhjD5ejwzw1H/Ogme9YrpGtnqkz0KolhfflaW7XLMDlyd4VRDFn?=
 =?iso-8859-1?Q?kxfirhmCZzhrzyb41mt34EYS43a2Rj97qbxk5sFwo/f0VDTZdsAt3W236x?=
 =?iso-8859-1?Q?S2ARv4eJ76flD0ZokpfNX4Cmkz72IwegcAh4qkGK8XbJ77scnw192GMcnY?=
 =?iso-8859-1?Q?uq+gGzRoIM/q4o0T+ndrpFPqR3y1pVLhbmGc0j/xyDdV/dWoczokzurX4M?=
 =?iso-8859-1?Q?HCSgcNP8f4IvOsfgiSfUoyuHuFbSmj4b1qJJ8TECtrgkdRTmWEr+ut6xIg?=
 =?iso-8859-1?Q?9zWajAqRZGsECApZTWYYG/tWhhjYYxr+AnmgDZ0lg2ea1buxsftNDK+5jr?=
 =?iso-8859-1?Q?7PjwFLAKbEpboSCOgC0Z4sUGOnRdum2hm0NyzNl7Ve7ajq66fCs1Tra0ML?=
 =?iso-8859-1?Q?6JeJe4fb92FIUtOqbNV7UWWA23xD2FqhuObbpqMoIUv/U0HFN1xN4vsDId?=
 =?iso-8859-1?Q?9uDj+E/4kdQejOUxrFQjfg/w+h5fVNc6iUPEWa7G84yTnXbjlECdI05KWr?=
 =?iso-8859-1?Q?yDrQsTBFpv9vwWvDYKzrqQqmh5wx9PqdJwaVNHt4R/m3DunbOdKns+tzlH?=
 =?iso-8859-1?Q?xXZtHEGwk0Z38FIZunq2ZaDcNO0mwTvt1kPl6QoSLpjNIPA/bU1iknv/ES?=
 =?iso-8859-1?Q?Z4sR4EiS7iIb90EJFzF2LQ7hCQ3p/Jv/nKEh9H/2ioEUX8f2/O0ifLTkA4?=
 =?iso-8859-1?Q?M+SWFg6q8zCRBpnHSpiARx8BXd7RRdv0lmbZbD1NjSR/TNc2tSEOqDoWuT?=
 =?iso-8859-1?Q?OVo1BQa6qxq8M6OEEvRa7EVFToBljCLL6i5HMPKQwFQCc8IikEfjB6F2Ir?=
 =?iso-8859-1?Q?pt1i/RCK8EKHnMGtWgMt9Urmbq1o/jQ/XnrjivUq7CbdnP1Ybx2BT0NSw5?=
 =?iso-8859-1?Q?Wl4rUT/fXJE9n4fknAS4fG57aghmJ2GbrXi8vCiQdMA0GMeHT7rjMkUn7b?=
 =?iso-8859-1?Q?54vRmiGdppYQNTYTSasqIX6t4OSj7xHFswymIdKeGXwI72haCAK97gjlL9?=
 =?iso-8859-1?Q?Gtf9N+0Bjm7sygAyNqhxyxlOTrl9RGFOwI16Autg46WhvIFQ7XC73t091X?=
 =?iso-8859-1?Q?erIWR0cMH4H7lZgwkK1tOXOw2ghk3jmuGqc87qAT2onexP90StofuWNWbu?=
 =?iso-8859-1?Q?ZMseqtPGEHbmbx8oFUPJgh1P+cqV3AjjmWp43ir1ozPE0VHvVAk8F9FVtz?=
 =?iso-8859-1?Q?/RV51jpGvQt3T18GyZavLVLF02unfC0Z8kQCX3Olu4fKre+np5lF6aCLP6?=
 =?iso-8859-1?Q?pzDUwQZOdzyLS5NbMZTxM6ZN7v50xer8uQPvqygeHWgaFiWVJhL4h+v4qg?=
 =?iso-8859-1?Q?NM/ZYlpMaz31aqRcuplDgbE2J5uTMdHj8lgtEQnSJPhV9Ip7OQgn1DosWV?=
 =?iso-8859-1?Q?C4x9YCyFPVC736ceXGBPxzyjDPUx1U72ALOlI1vOdhvR67gZgypvaGfRmH?=
 =?iso-8859-1?Q?07K2r9JuhcWjWk+z9TyjZKaTQIG/e0AQ/1nEOZT1f93g2Qa8A2Vm++lTQ7?=
 =?iso-8859-1?Q?HGH4RrtvH9nt6w5ae5CklihqKmFPJ4pqK/EwctnYooNA4ZtDVd5rLrNFy4?=
 =?iso-8859-1?Q?rkxRYQjXuPrYTy8Wv3u0z//6XVUoUQJUaWSOi320qMaEX/btF6WdyWxPhs?=
 =?iso-8859-1?Q?TP+3ZB1gNamYxnJ0yi7pB98iB53pUN2j23dh5qF3pqezPuMVZBod0gVtwh?=
 =?iso-8859-1?Q?diW0x/eJPM/uY8TExsS++D+4KdovXSI=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: DU5PR03MB10263.eurprd03.prod.outlook.com
X-MS-Exchange-CrossTenant-Network-Message-Id: 1320194d-9c28-4a15-f0a0-08de963ef3ec
X-MS-Exchange-CrossTenant-originalarrivaltime: 09 Apr 2026 13:50:25.7291
 (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: wxnsbkeTOQx/EYtQps4Dm+hVYoYGH9YegnkyaAZG9R2YRyq6xOadhUwDNchrzA5Nlq00z1VgLo1Xyvz4xwxHDn5IZ9NJLXeJSS7ihYV3ge4=
X-MS-Exchange-Transport-CrossTenantHeadersStamped: AM0PR03MB6132
X-purgate-ID: tlsNG-c1860d/1775742628-7674E497-1D6CA441/0/0
X-purgate-type: clean
X-purgate-size: 1796

This series fixes a common bug pattern found in several Xen UART drivers:
when setup_irq() fails during post-IRQ initialization, drivers log the
error but continue executing and unconditionally unmask hardware
interrupt lines with no handler registered. On platforms where the GIC
receives these asserted lines, the result is either repeated
spurious-interrupt warnings or an unhandled interrupt fault.

Patch 1, originally submitted as a standalone fix in v1, addresses
the issue in the SCIF driver and moves the hardware error-flag clearing
sequence to before the setup_irq() call so that stale error bits are
cleared unconditionally. Patches 2-4 apply the same early-return fix to
the pl011, cadence-uart, and exynos4210-uart drivers.

The pl011 and cadence-uart drivers additionally had a positive-condition
IRQ guard (if uart->irq > 0) that could fall through to the interrupt
unmask even when no valid IRQ was provided. Both are restructured to
use the early-return idiom.

Changes in v2:
- Extend fix to pl011, cadence-uart and exynos4210
- fix typo in patch 1 description

Oleksii Moisieiev (4):
  xen/drivers/char: fix SCIF IRQ registration failure propagation
  xen/drivers/char/pl011: fix IRQ registration failure propagation
  xen/drivers/char/cadence-uart: fix IRQ registration failure
    propagation
  xen/drivers/char: fix exynos4210 IRQ registration failure propagation

 xen/drivers/char/cadence-uart.c    | 17 +++++++++++------
 xen/drivers/char/exynos4210-uart.c |  4 ++++
 xen/drivers/char/pl011.c           | 17 +++++++++++------
 xen/drivers/char/scif-uart.c       | 16 ++++++++++++----
 4 files changed, 38 insertions(+), 16 deletions(-)

--=20
2.43.0

base-commit: 2ca756d39f59f834160263fd142ef91c6ca3dd90
branch: amoi_dfmea_scif=


From xen-devel-bounces@lists.xenproject.org Thu Apr 09 13:50:41 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 09 Apr 2026 13:50:41 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1277415.1562625 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wApmC-0000Pz-62; Thu, 09 Apr 2026 13:50:32 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1277415.1562625; Thu, 09 Apr 2026 13: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 1wApmC-0000OZ-0y; Thu, 09 Apr 2026 13:50:32 +0000
Received: by outflank-mailman (input) for mailman id 1277415;
 Thu, 09 Apr 2026 13:50:30 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <Oleksii_Moisieiev@epam.com>) id 1wApmA-00007a-3f
 for xen-devel@lists.xenproject.org; Thu, 09 Apr 2026 13:50:30 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wApm9-005hHg-C5
 for xen-devel@lists.xenproject.org; Thu, 09 Apr 2026 15:50:29 +0200
Received: from [10.42.69.8] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <Oleksii_Moisieiev@epam.com>)
 id 69d7ae9a-bab6-0a2a0a5309dd-0a2a4508a406-30
 for <xen-devel@lists.xenproject.org>; Thu, 09 Apr 2026 15:50:29 +0200
Received: from [52.101.65.135]
 (helo=DU2PR03CU002.outbound.protection.outlook.com)
 by tlsNG-c1860d.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.0)
 (envelope-from <Oleksii_Moisieiev@epam.com>)
 id 69d7aea3-fab6-0a2a45080019-34654187b92d-6
 for <xen-devel@lists.xenproject.org>; Thu, 09 Apr 2026 15:50:29 +0200
Received: from DU5PR03MB10263.eurprd03.prod.outlook.com (2603:10a6:10:519::5)
 by AM0PR03MB6132.eurprd03.prod.outlook.com (2603:10a6:20b:145::18)
 with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9769.17; Thu, 9 Apr
 2026 13:50:27 +0000
Received: from DU5PR03MB10263.eurprd03.prod.outlook.com
 ([fe80::8c9e:b301:61c0:3908]) by DU5PR03MB10263.eurprd03.prod.outlook.com
 ([fe80::8c9e:b301:61c0:3908%5]) with mapi id 15.20.9769.020; Thu, 9 Apr 2026
 13:50: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=POqCbvsD7rN2iqWa1gkkj+Ssb5ui9sePq+w3pWZl+dPUU9fUOhRNbYaOOE9G+O8DxZ83JTb/hdXQ64UsLsLJrRYTdhdAatA99ylyhUMf6hHlRpXcHS+EhI2WA/eiDCMxnr+m2HYouAWS2VuI/CPh9qL+/SvL7QwvPtE/1y90cJ3baHcgqjYVTft8dKyYusodB0z1ohXZ2SimQl3Sq6COwUt3qT6/2nXPiEXlBc4+DrC3ktPU97/ifwXVmQLEO+jVwDTHWndo8TbaGmGEPzwgMYC93Lf2YIXRl+zZjytaRUJCnmVhG+oSfnJqitcRnZQ1OnhDM3ZZFiGELqte5ym00g==
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com;
 s=arcselector10001;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1;
 bh=ZwhynW7zmXJxd8AYQ96d1CxfvYTLwAQ0yYVPWGCG7bc=;
 b=btqjX/tAeHyLq2ihsE63HkZlTWrw46lh7u3dg61anVXZIxd3a408JOVAELDG3nKDVC7sBSJWoG38hVygea9yPbRWel5g+kghKHvP5PNbVvxCc2e53zQtyOhSXwkeQ0FB2rPJB9BRcjqpTLh+zkoh+MaFAdhh6w25l9S6HhQaa1lxbf0AytARln2S821jUkOHTyd6OdyCXGb8E1yEBhY/9vN4yNXQxrbQ5ElXUqS3cVe6MYhTCWh0Ut3T87Biw5vPpZPL2G+MDzI7QMfCUuPVmgyim5gGXVzw5hGvxXkqSDWK6ZNuJ4cAhWSB18rdhXHYLQ66++UAgHPRBh0GRs6j8Q==
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=ZwhynW7zmXJxd8AYQ96d1CxfvYTLwAQ0yYVPWGCG7bc=;
 b=iXzjGYRAgC4/jdGGy3K8GZtDYrkbqOoATlI30ty119ip8xCk28RlhYWrPfxlcG/vqFxHMri7rO0g+XN/+G8+xWscb7AJ/p97dj3ugXBkMS/Csg5VMlodPEndu7Sm4Wjhmi3dc6wbKGNZ4I4HN1cb9YflZ7tW6Ck/Yk5devRwpQtfOCAnQy7eI7ZcQmja9gvvnY4xBivzSf+ggIhUwrlV1p7JR8o2aZslbxnU/Yn03PAUnCGEHM3XLMwYCPrp4fMIHcvup+lMg5Jmbb5t1tMMtpGSl3rBGPTr6Exs2Tyf0RF0VS+v7Mi0z0t3Wu8iOyRRTP/H+sUvi7+jENRwiKBcmA==
From: Oleksii Moisieiev <Oleksii_Moisieiev@epam.com>
To: "xen-devel@lists.xenproject.org" <xen-devel@lists.xenproject.org>
CC: Bertrand Marquis <bertrand.marquis@arm.com>, Julien Grall
	<julien@xen.org>, Michal Orzel <michal.orzel@amd.com>, Stefano Stabellini
	<sstabellini@kernel.org>, Volodymyr Babchuk <Volodymyr_Babchuk@epam.com>,
	Oleksii Moisieiev <Oleksii_Moisieiev@epam.com>
Subject: [PATCH v2 3/4] xen/drivers/char/cadence-uart: fix IRQ registration
 failure propagation
Thread-Topic: [PATCH v2 3/4] xen/drivers/char/cadence-uart: fix IRQ
 registration failure propagation
Thread-Index: AQHcyCfShWUf7VBEr0ifQc+UCSxOog==
Date: Thu, 9 Apr 2026 13:50:26 +0000
Message-ID:
 <f8ad018f3cd8930f7efddb362b889f0afec2408a.1775742562.git.oleksii_moisieiev@epam.com>
References: <cover.1775742562.git.oleksii_moisieiev@epam.com>
In-Reply-To: <cover.1775742562.git.oleksii_moisieiev@epam.com>
Accept-Language: en-US
Content-Language: en-US
X-MS-Has-Attach:
X-MS-TNEF-Correlator:
authentication-results: dkim=none (message not signed)
 header.d=none;dmarc=none action=none header.from=epam.com;
x-ms-publictraffictype: Email
x-ms-traffictypediagnostic: DU5PR03MB10263:EE_|AM0PR03MB6132:EE_
x-ms-office365-filtering-correlation-id: f551e331-802a-4b8e-4425-08de963ef4a9
x-ms-exchange-senderadcheck: 1
x-ms-exchange-antispam-relay: 0
x-microsoft-antispam:
 BCL:0;ARA:13230040|366016|376014|1800799024|38070700021|22082099003|56012099003|18002099003;
x-microsoft-antispam-message-info:
 WjANiVgJUe2pIJsnNLs//I8+dSW3QElPBXJbAM0Rqc9DcMRLOMotP76XDvYKJ8IPtNcIYfwyAiV+MKNbkUiW0ODDAVAX6kKAnDmxoesQ/6JSS1sfKPpPjuyveuWw7khZY5j0JEBe1TZGlVFbaxIbAgqjbzh31iIktsFVGJZLhS37mtGouzHlW1G3uV1j62+fgnTkHD5xuv81sSyY8kVlbZKHWz7VLJmbLHUHD7exO1m5+T76oiHoUajEvsdanlBCsVuNAesHMyj19xZHY8OMVGFPpkQ+H1HU2fsBAI0I/f2VFyNTQ4u2dp8zrreKR01XAKgzUmeoT3fYIAWi1q8FLfyMEunG7/f1F0buOVZQCRUzl7r07EcOgCr3TJdbmCMRkgdAjOysnQ4kJXlOtAfWKaGr7gTBiDf8v8IjrW2sxBwXjmuzsOYa7bvfHGNBOk4NQ6fLxLsz2mUQ5Fa0rGyCODVPTup5/SzaA5kIfQwxjPViLsR8lIFCt35ly2USCG/eQ7nl/vQUPCqdA3YS7HCQ/oQZf27NXKa2h4YUYIdJHs+wzSn6omCKfe9pVrBIju9+J+4xFup8XHEYSXpTXk/bgOy9J1r+wGLobGGe5wP/lXvfAyP4Yc/QGnypuslJEfsfx52ZyQGvRpSEVXsgK9YFNsI6z8rDd7IXCxT315Px5Kexv2bDiTgbgGWnyg7prKmBDM78KFSUmhCnCxa1SM1kCTR0Sv5wxc5PcEU6DgbiPCWu67AtQMjgY/is8gi49gx3f3p4NBZ7ERQpu/2zBodx6kHfQb1UeltHV9n5bLqidZM=
x-forefront-antispam-report:
 CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:DU5PR03MB10263.eurprd03.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(366016)(376014)(1800799024)(38070700021)(22082099003)(56012099003)(18002099003);DIR:OUT;SFP:1102;
x-ms-exchange-antispam-messagedata-chunkcount: 1
x-ms-exchange-antispam-messagedata-0:
 =?iso-8859-1?Q?ZR9iMLPrxFXbD11Yg4alYgOYIaNr3G5e1vjiPtzI10pQh5mgDPauGqYZem?=
 =?iso-8859-1?Q?MsiYq1Qbp9BWtBDAYeye0JvRYEgQtOLzuo+M5HNXY1noqwq3uyMDEuUT0/?=
 =?iso-8859-1?Q?LX8yg1ybOfNFWjg3PWsn+hn+n6tfBLTsyBVj4/EW4rLEYWnRzHuXYkE6fa?=
 =?iso-8859-1?Q?wrraBUJLVE5MqAHv4s0z8VdcTjo6rFGFj9cQKqF3A2ahRvw5sXzuCDZ+E+?=
 =?iso-8859-1?Q?KbMEZXob4etBRhJ1PeEQJKHniH6V4kpSDYsDVT39x6iSdlNlI5LoizqwhX?=
 =?iso-8859-1?Q?+p5TzZkKMOiLxi5qyFNETytAcvYDVimqoinxtUEDcj9zohmrVzLtBbOLYp?=
 =?iso-8859-1?Q?4inX7hYsAqun+xGd04dh15B1E6/xEsQZEB10hYCluy209LtofHq68uypde?=
 =?iso-8859-1?Q?wqvJf78F/0l8MGwZYa9ziCeALhdA8OmnzYI+qRaXgd/YeiX7sOA9BTrF38?=
 =?iso-8859-1?Q?Xq/fG1X8gfdARnCEWYvgLp43kU82FBYenqCC0ZADX7vS6BTtSyT+lCBLOh?=
 =?iso-8859-1?Q?3R/CWo5nz/ZU3EHL///aq0fFhaQdChqEIkQwV8i3W+b3NgwrwWWnihr1J9?=
 =?iso-8859-1?Q?x0mf3A8+N3M0bABOI/FRfP8Pr65ipRR/C57UAkGUNgNWvbzURPwtHutK+d?=
 =?iso-8859-1?Q?Az3FLYxnzK5rDlHlS/K3AwysxY4w9XZobWcAfR4sc2DY18oi4HBAaiCviz?=
 =?iso-8859-1?Q?KldoB1upt9AgR6TqKb+OLo7jFTms3SBL9A0TRZPIYu8eXjHed4ajaKq7LI?=
 =?iso-8859-1?Q?JFV10mVhzZswCRaExaXvAnSY7UBd/LevDNeKpRk0gLs5tz4ZwMJJjGoWTW?=
 =?iso-8859-1?Q?yH6fTJat3J7A07h8feJPAF63HP73pJhI9nVACAwCSTyZzv8Sudo46kZ3DX?=
 =?iso-8859-1?Q?hk2NAhT9RY5vpwZv+Md59ESuMRAv0T9tI03UTIPlirJiCooKQvRGOOwf4q?=
 =?iso-8859-1?Q?oKgxjpBtD0+4x4xa9iTpKxgbUFBV1cmXZYoSH9G4VX30ihjhaRubD8FyC3?=
 =?iso-8859-1?Q?unQwzajaVkmaO70gl7pBERM8oC6ojDKsPR2mxQ4KSv+0CDuTV4yPu65l9A?=
 =?iso-8859-1?Q?lMnBYTJCWgmJqlrU5P/zEV7Af7cLcHtYAGzyHaG9fglkBELiz0HZ/JWvQB?=
 =?iso-8859-1?Q?mrHHRWcdzv1sJln7HR6+M3ZAcjfaGOLkaG7XYq43nDfSgMipsKavkeu6H2?=
 =?iso-8859-1?Q?h7pg/7qfNgohnWnL+E7RtCcXjChqf5Iebs34Cb/2Gc0/41Uf7X+6dfqzBk?=
 =?iso-8859-1?Q?HpLdlqRt0sx2Q+Huedij78V8By4ta0m8L6cY+FrNGU5KcWzgv0ksZJz+Ko?=
 =?iso-8859-1?Q?E0w3f8aULzuFnZ2bDrYpzNUHYaya9/42v8GZn7v3ixVgkZ8F/PNj86UxNP?=
 =?iso-8859-1?Q?JVVeA87cWbr9JecktqjkPnbyRnq11wyadTFuFKFIlGWCJYeVee091dLDD1?=
 =?iso-8859-1?Q?JdM/s0/Cu0GhJnTrRAGTznA34sMkesxHRGBUqHtkkpBOB6tJ12UiXxKJ36?=
 =?iso-8859-1?Q?G6hTPPDE0K22XHftqgPC+ATgMW3nD1F6eJKXDDRBx4mfVvK4C1KWEM8TgM?=
 =?iso-8859-1?Q?sch/7FmbZkL6z/K88a8/fg/nylg3/L5jhRBOL4TtZ3FtixZnVPul9l7Bpl?=
 =?iso-8859-1?Q?w4OH4XM64vvq72eNiRWRZbANTC7s/3wYpyXHzCtfqlww9mncc2ROExjBp2?=
 =?iso-8859-1?Q?qznvA2RI3zFcdFuzyiXPH2eJxM3XUDi1MlhDoW+H78q37tpyx28jjKstsO?=
 =?iso-8859-1?Q?N/NusGZqajhE2CaaWDeZhUT8vRbg9Oixxbkr8zJmvWR7oXRTudIhEzelYp?=
 =?iso-8859-1?Q?sHB0ZIoalI+IhnevS15ZGIjRGnPW554=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: DU5PR03MB10263.eurprd03.prod.outlook.com
X-MS-Exchange-CrossTenant-Network-Message-Id: f551e331-802a-4b8e-4425-08de963ef4a9
X-MS-Exchange-CrossTenant-originalarrivaltime: 09 Apr 2026 13:50:26.9497
 (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: uwtj2AKzoHIeHY2WJbd197sf1xEFRTqCvUTeRI4LBag/9Ab//IKD6raq3Y9D9+7OU6fJFbVvQWNbxP+C6+CXAGOYIxCcCwuCyuKxfjVkw0o=
X-MS-Exchange-Transport-CrossTenantHeadersStamped: AM0PR03MB6132
X-purgate-ID: tlsNG-c1860d/1775742629-F674E497-EB7A424C/0/0
X-purgate-type: clean
X-purgate-size: 2266

In cuart_init_postirq(), two code paths could reach the
interrupt-enable write to IER without a handler being registered:

- When no valid IRQ number was provided (uart->irq <=3D 0), the original
  positive-condition guard (if uart->irq > 0) skipped the irqaction
  setup but still fell through to the IER write, enabling the receive
  data interrupt with no handler installed.

- When setup_irq() returned an error, only an error message was
  printed and execution continued to the IER write, arming the
  receive hardware interrupt line with no handler to service it. On
  platforms where the GIC receives this asserted line, the result is
  either repeated spurious-interrupt warnings or an unhandled
  interrupt fault.

Restructure cuart_init_postirq() to use early returns in both error
paths.

Signed-off-by: Oleksii Moisieiev <oleksii_moisieiev@epam.com>
---



 xen/drivers/char/cadence-uart.c | 17 +++++++++++------
 1 file changed, 11 insertions(+), 6 deletions(-)

diff --git a/xen/drivers/char/cadence-uart.c b/xen/drivers/char/cadence-uar=
t.c
index b2f379833f..a63dc4adb2 100644
--- a/xen/drivers/char/cadence-uart.c
+++ b/xen/drivers/char/cadence-uart.c
@@ -72,13 +72,18 @@ static void __init cuart_init_postirq(struct serial_por=
t *port)
     struct cuart *uart =3D port->uart;
     int rc;
=20
-    if ( uart->irq > 0 )
+    /* Don't unmask interrupts if no valid irq was provided */
+    if ( uart->irq <=3D 0 )
+        return;
+
+    uart->irqaction.handler =3D cuart_interrupt;
+    uart->irqaction.name    =3D "cadence-uart";
+    uart->irqaction.dev_id  =3D port;
+    if ( (rc =3D setup_irq(uart->irq, 0, &uart->irqaction)) !=3D 0 )
     {
-        uart->irqaction.handler =3D cuart_interrupt;
-        uart->irqaction.name    =3D "cadence-uart";
-        uart->irqaction.dev_id  =3D port;
-        if ( (rc =3D setup_irq(uart->irq, 0, &uart->irqaction)) !=3D 0 )
-            printk("ERROR: Failed to allocate cadence-uart IRQ %d\n", uart=
->irq);
+        printk("ERROR: Failed to allocate cadence-uart IRQ %d\n", uart->ir=
q);
+        /* Do not unmask interrupts if irq handler wasn't set */
+        return;
     }
=20
     /* Clear pending error interrupts */
--=20
2.43.0


From xen-devel-bounces@lists.xenproject.org Thu Apr 09 13:50:41 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 09 Apr 2026 13:50:41 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1277416.1562634 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wApmC-0000b0-Jo; Thu, 09 Apr 2026 13:50:32 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1277416.1562634; Thu, 09 Apr 2026 13: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 1wApmC-0000Zo-FZ; Thu, 09 Apr 2026 13:50:32 +0000
Received: by outflank-mailman (input) for mailman id 1277416;
 Thu, 09 Apr 2026 13:50:30 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <Oleksii_Moisieiev@epam.com>) id 1wApmA-00007h-Lj
 for xen-devel@lists.xenproject.org; Thu, 09 Apr 2026 13:50:30 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wApmA-005hLD-1m
 for xen-devel@lists.xenproject.org; Thu, 09 Apr 2026 15:50:30 +0200
Received: from [10.42.69.8] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <Oleksii_Moisieiev@epam.com>)
 id 69d7ae9a-bab6-0a2a0a5309dd-0a2a4508a406-34
 for <xen-devel@lists.xenproject.org>; Thu, 09 Apr 2026 15:50:30 +0200
Received: from [52.101.65.135]
 (helo=DU2PR03CU002.outbound.protection.outlook.com)
 by tlsNG-c1860d.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.0)
 (envelope-from <Oleksii_Moisieiev@epam.com>)
 id 69d7aea3-fab6-0a2a45080019-34654187b92d-7
 for <xen-devel@lists.xenproject.org>; Thu, 09 Apr 2026 15:50:29 +0200
Received: from DU5PR03MB10263.eurprd03.prod.outlook.com (2603:10a6:10:519::5)
 by AM0PR03MB6132.eurprd03.prod.outlook.com (2603:10a6:20b:145::18)
 with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9769.17; Thu, 9 Apr
 2026 13:50:27 +0000
Received: from DU5PR03MB10263.eurprd03.prod.outlook.com
 ([fe80::8c9e:b301:61c0:3908]) by DU5PR03MB10263.eurprd03.prod.outlook.com
 ([fe80::8c9e:b301:61c0:3908%5]) with mapi id 15.20.9769.020; Thu, 9 Apr 2026
 13:50: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=BcKRM+P9oMVXFy3WKaA1/GSsutKdusNeW7iAL6lnL8YOw1GBGINqhf0MSo3ZE9rzAt4ivtra/DITzWXqtN99CctI0qQZZOlahBckEFtf05XCuAbughxibt8EULXrxmMtW3dOFTKEzetv7yMyCy8/LQrEIF3IJvdZhCgSRBNz5nBkcZTtuqKfA1ZGIIyxqYMy7xV7xo6tcUatHKZ4771bWh2WxP+UZvrnX7oThb1MBhHX0fbHiaPnwYtTwY9y013vY/uADvz732bs8imGRe1VwF0lWSW24LZSfrsJHTF/KgO5FBOmYLjzaa5FWFeWVfyhVWjK8ccKd7DjBVsKpJdtEg==
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com;
 s=arcselector10001;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1;
 bh=jHTUPc+0Yn1eQpeQBKN/rncMUFe7rtRQF5uHYfz3Cvs=;
 b=g05rZbdPBwmdNTxDpkV+mmWjgMo15ZxhtG9sSjDMyt6+5nFz2GSqcEoDKIMr5jHkDY0iMzgDX8aWyVnjKGsl5iWI2zfzxThWxvJVmTar+2OJw2bdPjTtGDuM1ugFwzbuZwl9eODC9r3H7fHvfi7KHKHH1KIMRSczaCbZ++ChpjuvqBdDfnt6+FikjpxBgAmlekt2N1gM/XDIxhBWxCf5HM3nSJANlFhOJ1F2JCruytoYu3d2l689pHZnQf0tVbLinHKRCM4gpRZJc+/Ir7sTAkp2UOvtre99Y6e39R8FxSPeA6OpKHuMIWjcupx2mfDi8AtHyqXMkG9zQDyl0RBB+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=jHTUPc+0Yn1eQpeQBKN/rncMUFe7rtRQF5uHYfz3Cvs=;
 b=nexaRASvtgArsh3DTWMFf4YGozkkWQ/dpP1eba7XKdfxJO7eLtHEOsYHoZNHxu6z4YBOP/AOOdJs0ZpBgbODThx90KA5239QSlci7SSmBfu0Azn3hIo59tEyjyqOlC/SUkmY+gdyxgyaDfsVloL1DZZ3qUxOnR6y1wctL3FPAwB+jAhA+N/NarFybIV+1Rs7vMqsyxPqBdxlBWloS2oZvijM+hYGvx4Vs/cMYtnWUIEgRgKvi6X21bOpezMYksZu4o8Yfy6jkjeqREQo+sLLZ9TBjtJ5HQ5FAxVokfjw6yfbS+qT0b1TFVyRIKfFTGfFJs6TDEeMcOf2TGkb5z7lgw==
From: Oleksii Moisieiev <Oleksii_Moisieiev@epam.com>
To: "xen-devel@lists.xenproject.org" <xen-devel@lists.xenproject.org>
CC: Bertrand Marquis <bertrand.marquis@arm.com>, Julien Grall
	<julien@xen.org>, Michal Orzel <michal.orzel@amd.com>, Stefano Stabellini
	<sstabellini@kernel.org>, Volodymyr Babchuk <Volodymyr_Babchuk@epam.com>,
	Oleksii Moisieiev <Oleksii_Moisieiev@epam.com>
Subject: [PATCH v2 4/4] xen/drivers/char: fix exynos4210 IRQ registration
 failure propagation
Thread-Topic: [PATCH v2 4/4] xen/drivers/char: fix exynos4210 IRQ registration
 failure propagation
Thread-Index: AQHcyCfSPi7W/0ovn0ufnBNUSA+61g==
Date: Thu, 9 Apr 2026 13:50:27 +0000
Message-ID:
 <043b73edeee02b477f210cfd82f0b2940de2ef21.1775742562.git.oleksii_moisieiev@epam.com>
References: <cover.1775742562.git.oleksii_moisieiev@epam.com>
In-Reply-To: <cover.1775742562.git.oleksii_moisieiev@epam.com>
Accept-Language: en-US
Content-Language: en-US
X-MS-Has-Attach:
X-MS-TNEF-Correlator:
authentication-results: dkim=none (message not signed)
 header.d=none;dmarc=none action=none header.from=epam.com;
x-ms-publictraffictype: Email
x-ms-traffictypediagnostic: DU5PR03MB10263:EE_|AM0PR03MB6132:EE_
x-ms-office365-filtering-correlation-id: f7fe5ff6-5a33-4375-4c6e-08de963ef4dc
x-ms-exchange-senderadcheck: 1
x-ms-exchange-antispam-relay: 0
x-microsoft-antispam:
 BCL:0;ARA:13230040|366016|376014|1800799024|38070700021|22082099003|56012099003|18002099003;
x-microsoft-antispam-message-info:
 b8RsrXgJbzOn84cba5UZX6I2brJhrYycwDAj52g43yr3jf9sd+LbJCl6H/l91IISkzmu9h1vw5DiqrNLvROKlqD+PDKW1BDaCiU42G197mz1OCsOZ5rVbXiL6epU4DcLORply4Lfkgisj6Gu9tpKFqfU6+ZTuaU5NXA5UBVvPVmBzFMzGnrCknafRwmJi0EdMTllYCBouGdUoq3LaW0NM5DmjG7QrPpv5XxoHo0EAJDDCpuAD3qUkVtiBLT4LU2J7+W8ASsw7ajztRMjO6+Oo0wnpVwJyPgDcI3ah8EzEARWIAJpGEySh4RFVgyrJDBkD4t348189VoFpH4v31URdj9CKh9a9/j47HJ5jCIi+r8/UK4VEh+aEaNGllRG1PDYOQLkJZgVYDF/9Kc7cqBSzFhyHlBm8rxpRQJUhJrdv5QK1hs0VutTdC6TyNihjMPMupUdHpuTi98NNfLGyxRDNpqYzEpMTKyPcWYQSqcJZmI1YO4q377NBic6AWz7H0YUiHyrJOiPtuMdQjvGGt1BG1SgXWRFRt78qcI5q8a2vR+irYidPrae/aFjEfsdIioZp6p9+wGfBI8ggTBxNsEALJ3XXjFhOfI6hZwCpqNpLV77y5CQo/o7nxRnsN7CrD9YYj34/0V3iLmOM67mxIN3UeW6nlA9ngaDng2VnnbyYPLHfBiG4kAC2VFZHeRKqW84qgeq6XTyWLYA+QELV+to4juIZC8t0TssopvoAQAdNRRm+wXYA1qQuSALhcKyASWXHswzwRi1erCDnvOORfbKxB8aWYuLz/selBXUK8y/TUw=
x-forefront-antispam-report:
 CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:DU5PR03MB10263.eurprd03.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(366016)(376014)(1800799024)(38070700021)(22082099003)(56012099003)(18002099003);DIR:OUT;SFP:1102;
x-ms-exchange-antispam-messagedata-chunkcount: 1
x-ms-exchange-antispam-messagedata-0:
 =?iso-8859-1?Q?GWgOb9fvA5tdLryWjCV8g3A0WNHo3WkvrJ0uNH3s9TSDqtfFkpCt5om41x?=
 =?iso-8859-1?Q?JMYOej7utaLYCxJdmEMHT3UtYljY8NRGEgXeBF/eOEz7mfCV1vBXrMD5TF?=
 =?iso-8859-1?Q?k8nONeIsvYMma+CCe6zdn1c7+daQ727ViUt/4Dl8yi/zzlk72Xe/d9h9b6?=
 =?iso-8859-1?Q?kjpG6CK2N473QFDfaLUOvznNvZSYz1toGq3hL/nph0v69RUKrLkJDTLROb?=
 =?iso-8859-1?Q?7PqSmKrQjA8JvVwH6DtWQhFiTJhhO9OZkz8AvvqTl5Y5D7V8sCuE8HatQX?=
 =?iso-8859-1?Q?sJ26LK5YlT7d8oKg6tFqbjmmA4NVBOMKcOE8XhRgS2PqswCF1JHPPxeZIo?=
 =?iso-8859-1?Q?U/nkvSvSIDTbWECgeXpsAb2M1UvqjuqT03e/6adIGFMO94FgQYQPsTbW5p?=
 =?iso-8859-1?Q?kcFX3/+UVN14KuCHJy8Aq96gXgAHnfo8AE/jiaGwDBx11P+7for534jKOk?=
 =?iso-8859-1?Q?Q0owhQlVvRPR+b1VH/lc5LulBdIkOwFMJkhpChtlex7szPG3vn80DrFveZ?=
 =?iso-8859-1?Q?plDI6PEcuNMV5VeIUv9XCXqdZ45HMFvUgw1x9WCs1OQH8LM6KqC9zHlXPf?=
 =?iso-8859-1?Q?6vQ9FaU3dOBE0P0o/0DMiTiejBPxzRn4qim8PSrMdRIyfReifVYn7P3/WN?=
 =?iso-8859-1?Q?qPFUn64D5J/blHZoIA45/0bqPFhwrjCDd0Enrj8OVc6zdW51wYk3MYFUjJ?=
 =?iso-8859-1?Q?avXR/gFsgv+lMEzEN/jL8BbbHTFcmBObDEm51mQLONLySo0URSIEmxL4qt?=
 =?iso-8859-1?Q?T7tKBGMpuoOajIoOddcLQ5Ue8Kci+08tnwESefRAhQsrZVQHXk1okPwC6A?=
 =?iso-8859-1?Q?jX/XYj6oguKZrpimBx2bGFexsjj/lbBQvOT6eiCEuXmp6YHQN/Rb1LywON?=
 =?iso-8859-1?Q?/s3fZ+KpKewyHK7w3LzFYX2GKuerlZ3bwURjn0Wj3J1ISbwyuzlXVMQh+v?=
 =?iso-8859-1?Q?68s3dbyQvIBL9+XJyzMimnqQYoMY/YUCeutDW/Pq6A5zcET6U9vmLJN6nB?=
 =?iso-8859-1?Q?JtZA2mUWWQMy6lv/eBGhNVpaF5N+XZJortYObvaOV0L5wH9I3vS6IAYdki?=
 =?iso-8859-1?Q?NIHXqDsqgYcakpRwFpz9l+JBJBDAcCLr2RytRDWpT8M8TDsbngN9NIu/cx?=
 =?iso-8859-1?Q?tpbvmzsDfW0y9fLZv8RK+zfKyTVmXEORcdzTtbYkolY3cHilpZHm+KyjLA?=
 =?iso-8859-1?Q?BeNeKXJdqstxHGG53flCazd+yidgAv+ysdW/0Z88R5T0AKy7gFvjqhPvBY?=
 =?iso-8859-1?Q?HS/8ByxSawUZiWSc5kHtpagxcJhSOl00NMPEltSz3bbAsnMqv/hGKy4wCv?=
 =?iso-8859-1?Q?OulZH3iXX90vuVQAyNAYeNOKyJopxWhoUiV2pv8mds5qiEsNU2RQk1bbnT?=
 =?iso-8859-1?Q?LrTClku99Thulv6CInqGaPulhez6yOZp+DzIOGWFB6ioh8CsWDePkq3Xa+?=
 =?iso-8859-1?Q?Kr5t32MuhSw6sefG2jag3a2UtlRuK4OwPA7WvchGILZAWgVcgyJQ+TTj14?=
 =?iso-8859-1?Q?t4XrRF4PRlnAWhmCfZzyu16s3TIKiDkUTeFu/J8WfNXVdJdGOhMwRBS/dS?=
 =?iso-8859-1?Q?4CAbfMvG1DGSdmmOY3OxgOwpn3BGH+pssjiB6u3Q8aUGQgXSGIK9/1mkEm?=
 =?iso-8859-1?Q?8PH16W+c1eUupHFPhUvaIiL/vvjeKo4fMTF2GA+X42NDPOJ0XOVuJPyGkB?=
 =?iso-8859-1?Q?p4J25uztxqINVFKwsckhDRs5CjLAe/rq8o+imkA7GIhOKFbZeoyPU2q1js?=
 =?iso-8859-1?Q?VRvB+gsOgLLmZoFBQOTL2CYkJFRG3ME3jgH541BOzt+XGTk+KI5AyKZ6L8?=
 =?iso-8859-1?Q?UcrTUlcuFf6qrDEFc4+a9xXy5CR0Wlo=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: DU5PR03MB10263.eurprd03.prod.outlook.com
X-MS-Exchange-CrossTenant-Network-Message-Id: f7fe5ff6-5a33-4375-4c6e-08de963ef4dc
X-MS-Exchange-CrossTenant-originalarrivaltime: 09 Apr 2026 13:50:27.3167
 (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: NTdgNFySvviM6r2x80ywyNq7qBgyjqw2w+GXnnJHc7oo7wEbv0O7pzRMtVI4eFgNxDUQNYxW5XOC0Vp9UFFZn+v+yeSyXRc2swI0CIENuwY=
X-MS-Exchange-Transport-CrossTenantHeadersStamped: AM0PR03MB6132
X-purgate-ID: tlsNG-c1860d/1775742629-75358497-AF44ED15/0/0
X-purgate-type: clean
X-purgate-size: 1472

In exynos4210_uart_init_postirq(), when setup_irq() returns an error
the failure was only logged via dprintk() and execution continued,
unconditionally clearing UINTM and setting UMCON_INT_EN. This enabled
receive and transmit interrupt lines with no handler registered. On
platforms where the GIC receives these asserted lines, the result is
either repeated spurious-interrupt warnings or an unhandled interrupt
fault.

Add an early return in the setup_irq() error branch so that the
interrupt-enable writes to UINTM and UMCON are skipped when IRQ
registration fails.

Signed-off-by: Oleksii Moisieiev <oleksii_moisieiev@epam.com>
---



 xen/drivers/char/exynos4210-uart.c | 4 ++++
 1 file changed, 4 insertions(+)

diff --git a/xen/drivers/char/exynos4210-uart.c b/xen/drivers/char/exynos42=
10-uart.c
index 58901df554..2e5860ea2b 100644
--- a/xen/drivers/char/exynos4210-uart.c
+++ b/xen/drivers/char/exynos4210-uart.c
@@ -199,8 +199,12 @@ static void __init exynos4210_uart_init_postirq(struct=
 serial_port *port)
     uart->irqaction.dev_id  =3D port;
=20
     if ( (rc =3D setup_irq(uart->irq, 0, &uart->irqaction)) !=3D 0 )
+    {
         dprintk(XENLOG_ERR, "Failed to allocated exynos4210_uart IRQ %d\n"=
,
                 uart->irq);
+        /* Don't enable interrupts if irq setup was failed */
+        return;
+    }
=20
     /* Unmask interrupts */
     exynos4210_write(uart, UINTM, ~UINTM_ALLI);
--=20
2.43.0


From xen-devel-bounces@lists.xenproject.org Thu Apr 09 13:50:41 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 09 Apr 2026 13:50:41 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1277413.1562614 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wApmB-0000BK-JP; Thu, 09 Apr 2026 13:50:31 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1277413.1562614; Thu, 09 Apr 2026 13: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 1wApmB-0000Az-Dv; Thu, 09 Apr 2026 13:50:31 +0000
Received: by outflank-mailman (input) for mailman id 1277413;
 Thu, 09 Apr 2026 13:50:29 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <Oleksii_Moisieiev@epam.com>) id 1wApm9-00007I-DN
 for xen-devel@lists.xenproject.org; Thu, 09 Apr 2026 13:50:29 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wApm8-005hHg-PX
 for xen-devel@lists.xenproject.org; Thu, 09 Apr 2026 15:50:28 +0200
Received: from [10.42.69.8] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <Oleksii_Moisieiev@epam.com>)
 id 69d7ae9a-bab6-0a2a0a5309dd-0a2a4508a406-24
 for <xen-devel@lists.xenproject.org>; Thu, 09 Apr 2026 15:50:28 +0200
Received: from [52.101.65.135]
 (helo=DU2PR03CU002.outbound.protection.outlook.com)
 by tlsNG-c1860d.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.0)
 (envelope-from <Oleksii_Moisieiev@epam.com>)
 id 69d7aea3-fab6-0a2a45080019-34654187b92d-4
 for <xen-devel@lists.xenproject.org>; Thu, 09 Apr 2026 15:50:28 +0200
Received: from DU5PR03MB10263.eurprd03.prod.outlook.com (2603:10a6:10:519::5)
 by AM0PR03MB6132.eurprd03.prod.outlook.com (2603:10a6:20b:145::18)
 with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9769.17; Thu, 9 Apr
 2026 13:50:26 +0000
Received: from DU5PR03MB10263.eurprd03.prod.outlook.com
 ([fe80::8c9e:b301:61c0:3908]) by DU5PR03MB10263.eurprd03.prod.outlook.com
 ([fe80::8c9e:b301:61c0:3908%5]) with mapi id 15.20.9769.020; Thu, 9 Apr 2026
 13:50: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=rXT2lbc3X/fm+9bKFloG8300ettErwjeBOwUEqXy1RMYBe+uvL03Bsz2jTV9pRIjmag2o3w+MDhY87y+B2z3Lg+BQiO/HuJINWypXiiLB8Pki5mDzY8BNeYP5dTAxQHZbMzxXGkOq9LOa8nbK8ijaJHSziadxeonFcjk8xiisS1tDM6hazArWKgqSHku+2dxtxmPCbKe2bYDVYFWE6z69eOWsHe1CYjGMO41s0qYeCY1piVYr7sZeGd0DrvKLDiZ2xDt6pA2GjccGnCax/6rYE70CoxLd4yZoEK0kqZYmnp0rGOA8uqyN4XMMRSybB/VX1zfTGTYF11O0nJlq0JWlQ==
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com;
 s=arcselector10001;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1;
 bh=ZJQmSlEhor8w37ZfEXBDxIsCyB/leW+DBAzgDszdUnQ=;
 b=f3PDGMfKHqH5J/FkNBeQm/8BL7lpENbIhD5VyvjtrGz/G3a+R1HR+Xudjr3mQTlNUPuI73p1ej6iZ7v6SaJxQnTDj1G/qrGDKjATSVHB3MJ56XbYmnUC/+zoFfXLMdR4K9xfWgsXjNaC3jxz4qzNHu4Ys7b47keQqcRvv98ecWYnuVgbAL+cSUkuJdKpwLh2bh4H4BCzwyEIB4SK53qPJ0USxXSFxfFP1ao3i7elRIHB5yiCTUyUtMsP/ZtaJrd53Vmu/uwysKxXmlthHTzjzpbL3o+XdVGSmGFRz/jf+TmIClHOjtAh+v8+KHZIFyK7V5fL6Y7n8wQoJEEeBAeA3w==
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=ZJQmSlEhor8w37ZfEXBDxIsCyB/leW+DBAzgDszdUnQ=;
 b=NesIK6UO8ap3wXRt/fl96o7qN6X6nCOZxFN5IXxEoVnCGYX91cTKMccGrBiH/pekBPQP7htV83Tdgm45/LQ4Os3lMmRP9DntwGTIRYQRpuemMKChf+6cSX86ip/NcODqjf5cu7MqcASvtdve4QAVTb53rZsdOPavNHdR+xmZMneabNNJhRYAwVJLG1cliXJ0Hk1NdRkWD+ykeQ8KtSlWFMGWi/zvWQtWiQerlGGe2TOKhKFDH/+Ys6X939twX6Qd37vErdn7kYrRiae9JPcSI+j5ZfAezj3TuTWnghmvqobkuHssgkX7cggQyStaNulpSM1HY22c8OqrB4MP1KL5UA==
From: Oleksii Moisieiev <Oleksii_Moisieiev@epam.com>
To: "xen-devel@lists.xenproject.org" <xen-devel@lists.xenproject.org>
CC: Bertrand Marquis <bertrand.marquis@arm.com>, Julien Grall
	<julien@xen.org>, Michal Orzel <michal.orzel@amd.com>, Stefano Stabellini
	<sstabellini@kernel.org>, Volodymyr Babchuk <Volodymyr_Babchuk@epam.com>,
	Oleksii Moisieiev <Oleksii_Moisieiev@epam.com>
Subject: [PATCH v2 1/4] xen/drivers/char: fix SCIF IRQ registration failure
 propagation
Thread-Topic: [PATCH v2 1/4] xen/drivers/char: fix SCIF IRQ registration
 failure propagation
Thread-Index: AQHcyCfREdHUeOlrFkG05EP4j66oig==
Date: Thu, 9 Apr 2026 13:50:26 +0000
Message-ID:
 <276f353ec36258dc545bef581389e60a162988b6.1775742562.git.oleksii_moisieiev@epam.com>
References: <cover.1775742562.git.oleksii_moisieiev@epam.com>
In-Reply-To: <cover.1775742562.git.oleksii_moisieiev@epam.com>
Accept-Language: en-US
Content-Language: en-US
X-MS-Has-Attach:
X-MS-TNEF-Correlator:
authentication-results: dkim=none (message not signed)
 header.d=none;dmarc=none action=none header.from=epam.com;
x-ms-publictraffictype: Email
x-ms-traffictypediagnostic: DU5PR03MB10263:EE_|AM0PR03MB6132:EE_
x-ms-office365-filtering-correlation-id: 16f0f59e-698a-48f6-cabc-08de963ef43c
x-ms-exchange-senderadcheck: 1
x-ms-exchange-antispam-relay: 0
x-microsoft-antispam:
 BCL:0;ARA:13230040|366016|376014|1800799024|38070700021|22082099003|56012099003|18002099003;
x-microsoft-antispam-message-info:
 Lx3kwz7BWIHYmWzK2VomXitW+3ufFHDNQ2KsmGr+V8no/zy5snDIHzSP/vbhBtSDY2TyZCrhARkM2cHhCx/fOmcluL6Up5IA7AySrGaMlN1q8CrsGglOEcR9/7g3RjJQcDrk5JKE6Adeamxk9J3J2tzCgASvi8uhnU5vPJBiji1jSrFjKvBXfWuFSm8h9bhHYsKmZoi+8CyWNvl9aeYVQsb9UmOPUAklzoxbhmD/T+HeXqJgUUZhzeydgYqFzg9RkBr2XqDqIo0TMdzbXNjqg0c8OHrWkUDQzX+oZHDNeHD0Gwp0ujVFPlovbWfsON4KVnG/kMfRHOo7Jyuh0qBFnZ72yYV0mLmzpsg9opsPYm0uKeG8TOXgWrFvpozGkWppERzHkgr5/0PLfHLTe9IDZqgJlD8SXfbQmXRltT7XUHAOYSL0U6N0l5OruaxZFpTFv8giLAl4ng0zj+cyJXsqwyoNFKzm7GKqsgobhDBgrBQZpcvK5KaUsQXonRD7ilpnqes4GBnNPuumwVr5erBGY0PxSWVf0NV3hvHSenpdHGalx9+8O3zZBkjNQzpBCK9HIcL0uhZumK+NdtMMPiVp7zDsqmAvTPhsAMdVcWPw65QQfgz4lCkMXDzLdSO1ygElEDkyhjo87Tw1ftXnCo4zmI8n0mMqnM8Ftm3NwfrnG38VT/cU3eK9XbsLQyw2+ZWW/VK2Q762ic2xfqtSHadnYwMSFYt8AY989Vl3d4t5ObTVneWeJO18rJDE8nXUfYgWzbfWhp+OXP+m8B3BPAskFoKmTNwUjZRd/YYxpZe4u1c=
x-forefront-antispam-report:
 CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:DU5PR03MB10263.eurprd03.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(366016)(376014)(1800799024)(38070700021)(22082099003)(56012099003)(18002099003);DIR:OUT;SFP:1102;
x-ms-exchange-antispam-messagedata-chunkcount: 1
x-ms-exchange-antispam-messagedata-0:
 =?iso-8859-1?Q?WuZypSncnQ5s+MFB583ydNyjY+Xqx9+oM+nnpqwWXl5U4KfTCsQ/+Etjor?=
 =?iso-8859-1?Q?Fgt2hI7UwdVDrhUipNQKRTHTAm9feX9j1jutycaKa9VXmcV6raundNp5Pm?=
 =?iso-8859-1?Q?naTzTb25DhUDUN/rhd4G/Mo7HiqwBEvA0LWO3yuvXS48y83aDsqDArkm0g?=
 =?iso-8859-1?Q?eJosNz/U+GLdAJG+Ecz8+SIFOmT6fgTJqfAmOGtvfs0Bt3Ymio4bzZxkHJ?=
 =?iso-8859-1?Q?iRWZmEwRBurIFWoWq9fgutbGXC2TO3XwdGvDxNLGh57oLZdH0lJSplIgF5?=
 =?iso-8859-1?Q?IgsNBCgPnwGBednGrVx2LIB9o6tq0rCRhGxYsJMamxrgnv0vgZKOx5isyF?=
 =?iso-8859-1?Q?1/GGAqxGoEv75fKGvF5gdTMFtAT+EL3ngyDdtm5peba95qctui5S2+35kJ?=
 =?iso-8859-1?Q?Hkf0nwcclVO03jUoJhQ6AguS+7uPKBJ0nEEIrWATB2MbJWLuYZi2eiIeI6?=
 =?iso-8859-1?Q?VBBXmBSOd0b+c5ATh2acWLUM26eNemaHR/dL/5h9eaP6cEftRXKzp1lR8D?=
 =?iso-8859-1?Q?eIw3wooifT8O4OUgb8pvdKWt6iju+2e9W2mOBAL/I2qagiWdjkRrkKL67H?=
 =?iso-8859-1?Q?6jVSKo8ph74r7MnLZFtL1YY23Tpq0n/XrFkXPqM6N4LsYRVd/tfAJXFtDe?=
 =?iso-8859-1?Q?UrNLgbnybzbZpNOLUEXL1nxAkUNO6Ddxgrv4VoA3n8GFUhQsrucHtAvqkH?=
 =?iso-8859-1?Q?sGEKEB4aA8AszFPDRKaCSRZ10dOvRyYNVvQAFAefy1N2lyRIDb3cpMHpNE?=
 =?iso-8859-1?Q?GiPEKLypTOXTQkX7oSgPRRt+yQrUvEo3HSiUXNqr+GtTijdSYlJPHj1kL7?=
 =?iso-8859-1?Q?QKvWN2e6MDsqATV1eLfQxzY2eDMCEgogIdJScsnsL69t9HQ9aAWWzRlZRk?=
 =?iso-8859-1?Q?6GnmsFkXIOYrrG2dIZWgO5AVYuCBQ6sEh3OL+YWcZunVE2icGgnUZwN1ZZ?=
 =?iso-8859-1?Q?f4iydjA+hOZ6mGD8Vl6c1+9VtJwYo8Ya7m64SXEdksSLSsG7nl89OZ9jiP?=
 =?iso-8859-1?Q?Vb+RKEGrlf8fPDDXO5agn8rzhU4JQvtUlI7az04wQgkyIGOA5aMzlx91Dg?=
 =?iso-8859-1?Q?49K0kTDAUoyEqiRqf6OpCR0XzLwmi3rla1+DAem84iIoMC0hx15K2o+n3n?=
 =?iso-8859-1?Q?JIPLYR7GZORLvI1e1s+n4glUTl9jMcMewQth3ZMponmTrrjeGqvGWYwte7?=
 =?iso-8859-1?Q?Cw3wbe9B/C+ITDf/qo9XbGOG+jCxiMIM+BxWIgRTkZlY1Yuq/ZwuIoFcNs?=
 =?iso-8859-1?Q?FUYL8lTEhPptYNnFFD5d9XBdqpWrAXM/CiZUXXs2WUtbMTjkt0Sn9l6e28?=
 =?iso-8859-1?Q?awF1Q3Yb9JQG93J0Eg8KxOCoU8ksQ/8R4OPvbr0/unyaV5djVw+RJMdxQz?=
 =?iso-8859-1?Q?JelcV0q9Y+G5w+zyT78SV8/6p4AAjpRHEWOb0fnbHkc2vvdCk+eSySqfx+?=
 =?iso-8859-1?Q?CEjBBZsRQy4GdNVd+BseQ5P40vTTf5NtpELFf67WU0m/I7U+FiHv4DmPDp?=
 =?iso-8859-1?Q?qPKGSwBoBAIXC3/3Lb752MlBq//Ar7xvcZLykuKTm5FvuY44nygYs3Otsr?=
 =?iso-8859-1?Q?VFPPM5pYF3UkP/mCEHkNITuaybSaVJLgxyIAO6rvciSmLuRIhd6cMvoL2j?=
 =?iso-8859-1?Q?waRBffZwXqc4R1sht1mZ/aQqPymupXuf5gTfrk/dddVPnA6NfJdye61D7S?=
 =?iso-8859-1?Q?Iw+JrVlvUqiO5IJhLtRwM2w+XjDgCv0brfcnMNbJsYivjlcCQkzm4pVHOC?=
 =?iso-8859-1?Q?AMGlHGR4YBq1rHj95gzP5MBK9o4KRcAVyLTP9pJV5YqiIogIcL7GgA0lFa?=
 =?iso-8859-1?Q?zHH8NYWeLiCnr40SBGQiV6iy/pDaN9k=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: DU5PR03MB10263.eurprd03.prod.outlook.com
X-MS-Exchange-CrossTenant-Network-Message-Id: 16f0f59e-698a-48f6-cabc-08de963ef43c
X-MS-Exchange-CrossTenant-originalarrivaltime: 09 Apr 2026 13:50:26.1973
 (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: BpFa/9/axK9PnGrP+eIBjYjHjpp0Nd41/OfIGhufHZxZHCn+BEpCUY1W2XulPRRuXua+AZ09irkjz9LMC2/E7pKi3J6bV0BMVLFxrfBeOG8=
X-MS-Exchange-Transport-CrossTenantHeadersStamped: AM0PR03MB6132
X-purgate-ID: tlsNG-c1860d/1775742628-7455F497-4396C1B6/0/0
X-purgate-type: clean
X-purgate-size: 3017

In scif_uart_init_postirq(), when setup_irq() returns an error the
failure was only logged via dprintk() and execution continued,
unconditionally writing TIE|RIE|REIE into the Serial Control Register
(SCSCR). This armed all three hardware interrupt lines (TX FIFO empty,
RX data ready, receive error) with no handler registered to service
them. On platforms where the GIC receives these asserted lines, the
result is either repeated spurious-interrupt warnings or an unhandled
interrupt fault.

The fix adds an early return inside the error branch. The
interrupt-enable write to SCSCR is skipped entirely when no handler is
registered.

SCIF TX continues to operate correctly after this change. The Xen
serial framework never calls serial_async_transmit() for SCIF, so
port->txbuf is always NULL. This causes __serial_putc() to take the
synchronous finite-capacity path, which polls the SCFSR_TDFE hardware
flag directly and does not depend on the interrupt mechanism. RX
wouldn't work if irq wasn't registered.

As a secondary clean-up, the hardware error-flag clearing sequence is
moved to before the setup_irq() call so that error bits accumulated
since init_preirq() are cleared unconditionally, regardless of whether
IRQ registration succeeds.

Signed-off-by: Oleksii Moisieiev <oleksii_moisieiev@epam.com>
---

Changes in v2:
- Extend fix to pl011, cadence-uart and exynos4210
- fix typo in patch 1 description

 xen/drivers/char/scif-uart.c | 16 ++++++++++++----
 1 file changed, 12 insertions(+), 4 deletions(-)

diff --git a/xen/drivers/char/scif-uart.c b/xen/drivers/char/scif-uart.c
index 888821a3b8..673a2d3800 100644
--- a/xen/drivers/char/scif-uart.c
+++ b/xen/drivers/char/scif-uart.c
@@ -187,16 +187,24 @@ static void __init scif_uart_init_postirq(struct seri=
al_port *port)
     uart->irqaction.name    =3D "scif_uart";
     uart->irqaction.dev_id  =3D port;
=20
-    if ( (rc =3D setup_irq(uart->irq, 0, &uart->irqaction)) !=3D 0 )
-        dprintk(XENLOG_ERR, "Failed to allocated scif_uart IRQ %d\n",
-                uart->irq);
-
     /* Clear all errors */
     if ( scif_readw(uart, params->status_reg) & params->error_mask )
         scif_writew(uart, params->status_reg, ~params->error_mask);
     if ( scif_readw(uart, params->overrun_reg) & params->overrun_mask )
         scif_writew(uart, params->overrun_reg, ~params->overrun_mask);
=20
+    if ( (rc =3D setup_irq(uart->irq, 0, &uart->irqaction)) !=3D 0 )
+    {
+        dprintk(XENLOG_ERR, "Failed to allocated scif_uart IRQ %d\n",
+                uart->irq);
+        /*
+         * If the IRQ handler could not be installed (setup_irq failed),
+         * do not enable TX/RX or error interrupts. Serial transmit will
+         * fall back to polling mode.
+         */
+        return;
+    }
+
     /* Enable TX/RX and Error Interrupts  */
     scif_writew(uart, SCIF_SCSCR, scif_readw(uart, SCIF_SCSCR) |
                 params->irq_flags);
--=20
2.43.0


From xen-devel-bounces@lists.xenproject.org Thu Apr 09 14:01:41 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 09 Apr 2026 14:01:41 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1277477.1562693 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wApwy-00055U-2k; Thu, 09 Apr 2026 14:01:40 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1277477.1562693; Thu, 09 Apr 2026 14:01: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 1wApwx-00052q-Su; Thu, 09 Apr 2026 14:01:39 +0000
Received: by outflank-mailman (input) for mailman id 1277477;
 Thu, 09 Apr 2026 14:01:37 +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 1wApwv-0004Ke-Ig
 for xen-devel@lists.xenproject.org; Thu, 09 Apr 2026 14:01:37 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wApwt-009WCF-D3
 for xen-devel@lists.xenproject.org; Thu, 09 Apr 2026 16:01:36 +0200
Received: from [10.42.69.6] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <Mykyta_Poturai@epam.com>)
 id 69d7b13b-5cb7-0a2a0a5109dd-0a2a4506a7c2-20
 for <xen-devel@lists.xenproject.org>; Thu, 09 Apr 2026 16:01:36 +0200
Received: from [52.101.72.96]
 (helo=AM0PR02CU008.outbound.protection.outlook.com)
 by tlsNG-16d1c6.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.0)
 (envelope-from <Mykyta_Poturai@epam.com>)
 id 69d7b140-0df0-0a2a45060019-34654860c82b-4
 for <xen-devel@lists.xenproject.org>; Thu, 09 Apr 2026 16:01:36 +0200
Received: from PAVPR03MB10102.eurprd03.prod.outlook.com
 (2603:10a6:102:30d::12) by PA1PR03MB10891.eurprd03.prod.outlook.com
 (2603:10a6:102:485::6) with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9769.17; Thu, 9 Apr
 2026 14:01:35 +0000
Received: from PAVPR03MB10102.eurprd03.prod.outlook.com
 ([fe80::b8c6:f37a:987a:beb]) by PAVPR03MB10102.eurprd03.prod.outlook.com
 ([fe80::b8c6:f37a:987a:beb%5]) with mapi id 15.20.9769.016; Thu, 9 Apr 2026
 14:01: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=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=zDcspnHtD0t6rcRazJsEqn96hgJYwZgh+3ublOeRHQCWKi1ZuHi4wPMRk7VHQrjky1IhE+lCEiBIedNGDRTRM/YbRvCI0yJalyeL80ZeHO/HhRPCFVjnn6coaDuMSSXQmGdpBip4F+Kkg+kPqDSiapKkMLh26gNkie1525/qjDxcmmcPF9ue6zw7z1k7oZlD1tUvJIxRGXamzcobMy80WHU1+cGyb6R4SMMnoqgmGHdF89zZgF2+Yb5LXTJx8+i2YF34ChozhhBdW5KyDhdcWhBIrTtjLJ+IfW6WKFzhC4bjjTjVfJwTIe8ABXtaIWZqQcKkIu3d6K2jLBUZCKfMgg==
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com;
 s=arcselector10001;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1;
 bh=f70IjTJoiAVqBQXBTEXDcxwBCzPT88lJf79t7jB0WvY=;
 b=vI/quOwnWQovnX0iyHQR+29YBGdzpu/ZHqH3xA9Rdu/WenXFoaeampnax/ai50h4dgjgNceGtWLQjehDHTxREeA1WVUvkdwtOjkLqfoXsN8f1eqcl8Gcp4m9GxdKtL0Nep28N6ls9v4Jh0QCttawFBo5u1MkdgCinHDpvW4DKeiD6gy4cqL4TIU9RANpzJzvEVi/YwiJal4As5Ptx+O8M2KjHNs7WltvVXghXEHB4wk0Z0g2OzQwTxTQ/Z0DKa26IwjURVuyoS5lOm+fwBi563TpUlBkS7OVytVzbTEEdJx5nEDnYZEetrT8Hofzub8GO60HFiV/Z11sVMfLrqJr3Q==
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=f70IjTJoiAVqBQXBTEXDcxwBCzPT88lJf79t7jB0WvY=;
 b=FGEC1OqSEpDl8CY1GgZz6xQ8SDzKPTg8PtRT2UBFYKPg7qkxAZ1ygw8gU7h4AJ6KK/ioeKCHTC1W1HlmX1YnD95gm5IAUaQtVIaZjJiZIHCaI8/bZh8LKVvG3hej2yJqa3t53jyQuNbdmfzkckv56TcLAlb0lsHUVUXEZ4EH7G0lF15ZUy+xYMU844PH012SSxXB67/jwiHfifXlvcHC/VhFWulIWfFgQwXehsIFCjqZdGZoO5RjWWNjTMpa9bZJbEdJyC3tSmBVWPoSbedTkVSaeyzfNBOG3uR6K2HxjcPyG8Bdo3Ul7BArn6nvh0E65ngExQ2NrO8nPgeulQIVow==
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.pau@citrix.com>, Stefano Stabellini <sstabellini@kernel.org>
Subject: [PATCH v3 7/7] docs: Update SR-IOV support status
Thread-Topic: [PATCH v3 7/7] docs: Update SR-IOV support status
Thread-Index: AQHcyClg09tySmMX7kuYzB1RJC8nOg==
Date: Thu, 9 Apr 2026 14:01:35 +0000
Message-ID:
 <65100dbbd16c10a76d2b1847f8fd77850f134559.1775742115.git.mykyta_poturai@epam.com>
References: <cover.1775742115.git.mykyta_poturai@epam.com>
In-Reply-To: <cover.1775742115.git.mykyta_poturai@epam.com>
Accept-Language: en-US
Content-Language: en-US
X-MS-Has-Attach:
X-MS-TNEF-Correlator:
authentication-results: dkim=none (message not signed)
 header.d=none;dmarc=none action=none header.from=epam.com;
x-ms-publictraffictype: Email
x-ms-traffictypediagnostic: PAVPR03MB10102:EE_|PA1PR03MB10891:EE_
x-ms-office365-filtering-correlation-id: e19cb274-e032-43e2-2710-08de964082e5
x-ms-exchange-senderadcheck: 1
x-ms-exchange-antispam-relay: 0
x-microsoft-antispam:
 BCL:0;ARA:13230040|366016|376014|1800799024|38070700021|56012099003|18002099003|22082099003;
x-microsoft-antispam-message-info:
 zofA668mf5mzZYJKhTEEet4fl1NrKWk96cFfyG8vQrJ02Bd7KqLNiBpfda4OBW3MJXareLNwsw1YkI2ce5Q5x8Zm5ITCyFBZqf8SLl6etwCEBon7H2X0Y1XBmDPeQ2Wxm6TJ2XL/DXoHxPAoC2E56vryfldzvemXYGknFwRFBv7pAlZTTNje2cal3g2OBQguf85Boioy7Atcp+0RXl5rwYGjL8Y08AH+MjHlHZ4/ZpZ+AgkzDVzUGqFntbEOaR+cZujyhXK3Fz902sLPGzUkMpvBlggCfO4fNu6BbDCncADJasGh8rcav09oDriS9hdbWu/GGJ4N72r5Ke5hWcoPdR9r5DfKHXp2QuXC56iPwPvg42p2n3Cxm9dj5XGRcJHZ+Of1cM8jtsZOPrzJunDnv7HirivogENTtNY/SgURIWV4gud42H9YSR8r34KmDKqsTKBlulnDug9wNTexi6f83lfYY/c0x7y73DY66U7Hvv1PbFHiwjaUx8TehLk1wtzxEUEQpDYTP+/+fm/AlUQv8HFYb58I2ZRM7Qs7VLzwK0dxCiQ2OJlA3J/ZHJyb9593A2eINZMJCJyGWcvuQzEwaVnvn//Xmcn0xdZ+xHmVm1DZnIH+Ybh4d8+VaM/MyENMD5EoUhhRwe7Kb4vstaH33q95oZQ46zJsv76Z7pdIUoFBVNu9gOiGago0fNUL/qZTb+2v2In0MLILUR+IwOGIrRpvBT8zQJkMppdaJYzMIA5CRlmVTLA0U67BTy2meTC9GzFhc+k/3pKOEliPYXHVgCotB8qEzBO9q80kIZMnFEQ=
x-forefront-antispam-report:
 CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:PAVPR03MB10102.eurprd03.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(366016)(376014)(1800799024)(38070700021)(56012099003)(18002099003)(22082099003);DIR:OUT;SFP:1102;
x-ms-exchange-antispam-messagedata-chunkcount: 1
x-ms-exchange-antispam-messagedata-0:
 =?iso-8859-1?Q?OCFWbFILKgi/W863FPP64Sp9A18FphvqxIeOZS5xGfvfKDmHtC0RL5k5T6?=
 =?iso-8859-1?Q?GRO+gxeeCod7C7Uacb+clc7y9cuqOoEKWEUEdUgkXwQUesSJJlp1A44YsT?=
 =?iso-8859-1?Q?4WrIRtFKWisYkFmzv8ebmYro8BlcQBTq4PMlsCPBHNMmMtHEYQSpKaaf74?=
 =?iso-8859-1?Q?2gMv8f+4aQV6POMImPf9AHHVO55PbQXZuqgz03jWLNA9aPsN71MSQxkIEb?=
 =?iso-8859-1?Q?wbyx3P8jaD40LI3A6vKVK+wdfbaRwCkL0tPnyn+Vp8CDncLo0zk90P23f4?=
 =?iso-8859-1?Q?lMRv6eoXGpAyB2uZ3D8NI4ayKzpNeAOeVRSQ7qsr63Pk2EHRjuxqZM3hBB?=
 =?iso-8859-1?Q?LZMQ6zvFCO0Y1tjF2M+ypa+EPdzwrrPputF0nommej6xMHpijSeBjNYjbb?=
 =?iso-8859-1?Q?JUDqbE9wgGi2h7gVF+oH5QSMfhbTGdNDcooOjbAxA9mtDZbSmQMFXKTDrr?=
 =?iso-8859-1?Q?b62ylrjD7gJEFLFdMrRlMoZmj3HmqihSXejzxgu4BhQTbH3K0cDISe4Fpx?=
 =?iso-8859-1?Q?iYI5xpRwc2ZK1iQ1IJyGaWmod0lBee+KzSdx9dCUkE6lvLtlx92P+Oofuf?=
 =?iso-8859-1?Q?2UGnLYGNpByAyxwcHWzfkVXd2D4lkCmJUVoaVCxQf8z4YHcy4McKSXWJA1?=
 =?iso-8859-1?Q?rlM9FTX8kOW27hZ1kyRP4t8hghLawkmi8JV8qfgbSMYzJp1Onrfutzm21m?=
 =?iso-8859-1?Q?4fxjFlnYjTelMOQ5EkkdYVBxdBaB/n7Mcpa22k3KDfK9HktzVbEruAKlDR?=
 =?iso-8859-1?Q?hSynAP39G/aaj2f2LcvAFRtz2OSo3BFQeYLsx+DsxYPVNwi34URfizdFiu?=
 =?iso-8859-1?Q?rwQNbkzKkgz0FqaRRL6hXa1/aPWLrKH5/RjL8fYXNhEkINToSTOkn3fc3u?=
 =?iso-8859-1?Q?gIgyiJnW58ALGzck1rJtQiCaRVUGxbPC8spofiMb+0zEDXPJKaVm3vILUl?=
 =?iso-8859-1?Q?XzmEKI1okWMCo8A9BPENtfshiyKgWJIaJ2cOVvHhMpP8MWW/fZIjFwSdxm?=
 =?iso-8859-1?Q?pHSeiVkLiQ1slvhkMJE9zUmsI+k97OIooFtHf80gsPXy1fAWO8n/M3mOLZ?=
 =?iso-8859-1?Q?AVfcgPFGs342ofyQtKuuyjt2U6nO9wwjAFZbEIJ3nc4xRKO4/hdGXcN8b0?=
 =?iso-8859-1?Q?AvvDLfSurYTNJG4WuqqFb3/KrZC2eL0FV7HSNkz8HNetBOQfa7oBTo5sfE?=
 =?iso-8859-1?Q?iHnekTCEDQ2/vlnV3ZYTAEm9tby7UL8+p/VmTrG1l0F9X/0FXzs1yr9X9p?=
 =?iso-8859-1?Q?bdFLMAVkeNiOwPWWPTK+EV5u1fseMskQI8u7UHYxHLIAXxjU+8lmJ0Rdsc?=
 =?iso-8859-1?Q?XAVwbnhew3FJNF0i5sK5Io1EZOW9Abwx3J6Nu9sOMAhZEPdd/WZfHLIxHs?=
 =?iso-8859-1?Q?uzHQ4w1vWE/CuCdNr+4Ow5LVU2yMZv+t3ViNETKSMfsBwikc+9XYPwp/+4?=
 =?iso-8859-1?Q?4kX/hG767QfuiDXr+QQM08mrML0aNmdVfLac+/hmgHmZUfOp1z2JQnjtsS?=
 =?iso-8859-1?Q?Y/H+hKtKLMz1Ln3RSMgDJyit/1wP7N4MMYPJoiZvGd6nkq8NqqKZy6ob3i?=
 =?iso-8859-1?Q?FIz818GiD8KFN6DjmSsB2NQRZTXpAvABPzj2Hm59zQsSP4smAWZObNJ/A8?=
 =?iso-8859-1?Q?QtufH31VlxxGe0JF+xido4sT0TgYDK0GkpfW/r2R/Xeqx+s1XBMNC4KSG3?=
 =?iso-8859-1?Q?wJXO1ACCP8kg6wM/N/gnVTDKVfRedTpY60NT+20aRRoTCoLKwoS2DybzNu?=
 =?iso-8859-1?Q?3axsbg34s1RW1SQzuiKth08bOfZ+Ulsm6VAVEFz/RfUhpWmXpy1uMy1S2r?=
 =?iso-8859-1?Q?jLSqOP6PmHD1gZpFAu3AMjeh0g1t52U=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: PAVPR03MB10102.eurprd03.prod.outlook.com
X-MS-Exchange-CrossTenant-Network-Message-Id: e19cb274-e032-43e2-2710-08de964082e5
X-MS-Exchange-CrossTenant-originalarrivaltime: 09 Apr 2026 14:01:35.0400
 (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: gVSbm8SQc4MsAT7Akf1xfX/sc/mTAAq+Rm/MnSEU5LnpMTfFzp3Qmnrmjc99Gfg8MyICw16nF87N+greGIDr+w==
X-MS-Exchange-Transport-CrossTenantHeadersStamped: PA1PR03MB10891
X-purgate-ID: tlsNG-16d1c6/1775743296-64E4E3D8-0D41CD8F/0/0
X-purgate-type: clean
X-purgate-size: 518

Signed-off-by: Mykyta Poturai <mykyta_poturai@epam.com>
---
v1->v2:
* new patch
---
 SUPPORT.md | 2 --
 1 file changed, 2 deletions(-)

diff --git a/SUPPORT.md b/SUPPORT.md
index 8e7ab7cb3e..f4f1458bbb 100644
--- a/SUPPORT.md
+++ b/SUPPORT.md
@@ -170,8 +170,6 @@ unexpected behavior or issues on some hardware.
=20
 At least the following features are missing on a PVH dom0:
=20
-  * PCI SR-IOV.
-
   * Native NMI forwarding (nmi=3Ddom0 command line option).
=20
   * MCE handling.
--=20
2.51.2


From xen-devel-bounces@lists.xenproject.org Thu Apr 09 14:01:41 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 09 Apr 2026 14:01:41 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1277478.1562707 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wApwz-0005VU-5V; Thu, 09 Apr 2026 14:01:41 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1277478.1562707; Thu, 09 Apr 2026 14: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 1wApwy-0005Rx-Tf; Thu, 09 Apr 2026 14:01:40 +0000
Received: by outflank-mailman (input) for mailman id 1277478;
 Thu, 09 Apr 2026 14:01:39 +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 1wApww-0004el-Qr
 for xen-devel@lists.xenproject.org; Thu, 09 Apr 2026 14:01:38 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wApww-001xza-6e
 for xen-devel@lists.xenproject.org; Thu, 09 Apr 2026 16:01:38 +0200
Received: from [10.42.69.8] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <Mykyta_Poturai@epam.com>)
 id 69d7b13b-bab6-0a2a0a5309dd-0a2a4508c900-28
 for <xen-devel@lists.xenproject.org>; Thu, 09 Apr 2026 16:01:38 +0200
Received: from [52.101.84.113]
 (helo=DB3PR0202CU003.outbound.protection.outlook.com)
 by tlsNG-c1860d.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.0)
 (envelope-from <Mykyta_Poturai@epam.com>)
 id 69d7b141-fab6-0a2a45080019-3465547115da-3
 for <xen-devel@lists.xenproject.org>; Thu, 09 Apr 2026 16:01:38 +0200
Received: from PAVPR03MB10102.eurprd03.prod.outlook.com
 (2603:10a6:102:30d::12) by PA1PR03MB10891.eurprd03.prod.outlook.com
 (2603:10a6:102:485::6) with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9769.17; Thu, 9 Apr
 2026 14:01:32 +0000
Received: from PAVPR03MB10102.eurprd03.prod.outlook.com
 ([fe80::b8c6:f37a:987a:beb]) by PAVPR03MB10102.eurprd03.prod.outlook.com
 ([fe80::b8c6:f37a:987a:beb%5]) with mapi id 15.20.9769.016; Thu, 9 Apr 2026
 14:01: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=FNTXwFEwd1sibsZV9q0cfArb7KsR+MNa57Q4OlYE3eYUKK0okCnJwn8xwXBGk6ZOYVg4i6qPDdOsJAeQrTRFhsJ/FQVyB8MiTxGUlJT9CxtM38wC0vpYntwPnEk06YwNEI660UjSg0bmqYgNiGmAFPj5RZO6Tfm/ictW8ay09Qjeuaf6NFYrwC/VlxSybALCTuURmnX4G02c04ikMg3OQBQyOYB+loo951ai/1TG0zFQvhuGFijxIaDqtqkC8bsOvUlknnFjxNFCE5gD/KCFdTKGJXw45OGWbmXvq4eWKXLwjHp/oqwKlsKOkuDI9szMUqqxl4kYqLIogGioS1Uqlw==
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com;
 s=arcselector10001;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1;
 bh=KNhpqQV4Elddv8NpcHEijEkuM22dMa82qo23nZdgrfk=;
 b=f6MlDiIQiZ6n9jfuAogBQdgBUFR1tn8iLTSNUaAVhpZr2/EIe3LNsAirLJ0FUwFY7XU53e5Zqu1P4mRdPXJyIHke3qw1mL7JKan+poHYOie2e+KytEp6mBl3+2RISPXALQX2DOAHkGHl8t2GyQjjgV+io76ct60SLRkyRQmTAa1zCAKKJF84lWWtzmW8ukqjyA4aB7VuoEbdpofZAmIA7QsP4xbjRPCvoLh8GlxBHHCy6dFpz3Sty0tOHLgFIdzxcP18FGxT8qpnc9rwDc8wGp74eVS9JCS7DXtaS8M2Eym337cMR7dGLoXZxB3kLstwe/CjlGMA/QWdsZJ1Gi0x1w==
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=KNhpqQV4Elddv8NpcHEijEkuM22dMa82qo23nZdgrfk=;
 b=nyHpOgi91b/a2ZYYxHkSPKhBdYXTFZVoAev7XX1YgeJYEkoeLPV7Fvyr0CUWmkCV0PEHQl3Vj3eBwtCOTxRUXaqz/6i5N0LSLRfHIAhNR7qAZbkod2d0gprUDDkq5FFCYYkcxmLrCESxRhS7mN1Pxtbadsu6IqWBeKerKwBtcDyZrxqLlMfdfNr0w1UuQ/qCdQ+Wy5GKGatqxnt1aFlwA7cOqCOQ2ag2MMDRnFxZeJXqBD6PxR3I/v1YtDRpKHF0nsf3N7iyAKFLOTdxYSrinwEf22Hy8IAazQqfiAch36mcaoZYF5zO7Id5gimFoGwncWKivFjuUFtNow3YoZOehw==
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>,
	=?utf-8?B?Um9nZXIgUGF1IE1vbm7DqQ==?= <roger.pau@citrix.com>, Stewart
 Hildebrand <stewart.hildebrand@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>, Stefano Stabellini <sstabellini@kernel.org>, "Daniel
 P. Smith" <dpsmith@apertussolutions.com>
Subject: [PATCH v3 0/7] Implement SR-IOV support for PVH
Thread-Topic: [PATCH v3 0/7] Implement SR-IOV support for PVH
Thread-Index: AQHcyCleot7eiSMfSk+JzvPQ8+rmCA==
Date: Thu, 9 Apr 2026 14:01:32 +0000
Message-ID: <cover.1775742115.git.mykyta_poturai@epam.com>
Accept-Language: en-US
Content-Language: en-US
X-MS-Has-Attach:
X-MS-TNEF-Correlator:
authentication-results: dkim=none (message not signed)
 header.d=none;dmarc=none action=none header.from=epam.com;
x-ms-publictraffictype: Email
x-ms-traffictypediagnostic: PAVPR03MB10102:EE_|PA1PR03MB10891:EE_
x-ms-office365-filtering-correlation-id: 77a8f854-1928-4339-627b-08de96408129
x-ms-exchange-senderadcheck: 1
x-ms-exchange-antispam-relay: 0
x-microsoft-antispam:
 BCL:0;ARA:13230040|366016|376014|1800799024|7416014|38070700021|56012099003|18002099003;
x-microsoft-antispam-message-info:
 uBe+Z3UgvREU9MZeJ9BZopXwO6S8+fpghFvaXF98wammBpjMTM8BsL+9nSspAQhM1rwIf+Hbf2wZMc/5GkOV6OxIFXurxvGZpWLzNCdb6o7uA6LgNQvB2p2n+pCwcCwKoDjH+82LZ7LuFs7sy4hzONPf9IrsmsZHyECSphfJCT0l3oiK+rqA3zzB3EvAJU5lD+QDBdKG7/zpPJERKLvp7Jrrdn0raRJgjs8UOpGPrgmcj+bIiMqIT3+6gq5Or0vwBteaHlMVY90KfGvLA2n8NM5dqzsLvQlGW44nSWeHL0cbcNfCMM698j8m+2f9F/rW9cjgWOdMD9CW24Exm+CpOV4No5HNmls0deCiVLxfKsC+FegW/2/IoQXa73ttDsOMfmn70pIywIQmNBprh0FTvj1eci4FmOfmiiungj+j7EKGHlTCEHBI4l2HNGMDgYYD9LOM7cTvKD9fSYZuwLndd0SipACkQ3Cyy/Ld4u60cKhQIWbeBVWWPvZopKKHebuAKXVu/EEDcSzs1hfmCq+oAKHmVWY1CWLs/jaW8ifJ3YsjbarlgutITWmNTgoDJrGpKKYIAB8SSemxjzQjIfc19ogYYr2gpdKq9BP9E/pxJ37JCsSqQO1y7O/zfRbCJ18HQJC0HyaIV5Nj6edHfB2gHdbEeE4pEbkQQo5IRYn8D6XttIYh1MH+F+xtpHFD/EXIC+7D5w0gs2tj8xElA52wFoQNbscsAj2DXJD2qFhdew4ZwZQGwW/2T3pTspNXsYI0
x-forefront-antispam-report:
 CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:PAVPR03MB10102.eurprd03.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(366016)(376014)(1800799024)(7416014)(38070700021)(56012099003)(18002099003);DIR:OUT;SFP:1102;
x-ms-exchange-antispam-messagedata-chunkcount: 1
x-ms-exchange-antispam-messagedata-0:
 =?utf-8?B?a0d0ZGlnNVF6aFM3MnpvNjhNTVVvbTJuSGd1T2pYZHNTMSsyMkRMYTNyWG9o?=
 =?utf-8?B?eTdtTHB6bDk5UW1zU3ZjeTc3VStrV1N6TEp2Nlh2dnBqbE1tWnZIeGc2L2ZC?=
 =?utf-8?B?dGlJMFZ5OVRLc3ZiY25IUTlqSkpEckNnTFBGa095WjlsV2hKU2V6VW4ycmRz?=
 =?utf-8?B?WWhpQW10a2t5NmVudlZ4YVk0SXQzbmlBcThYd2VIck1BZVdxcHl5endaK3Yx?=
 =?utf-8?B?eWFqY29iQkNXM0VORGdxb0NYQmNiaXppeFFCUG8xaGt3Uk1wRmV0SDQ0bHh0?=
 =?utf-8?B?clg2N1NaU2srb2tROVBWaW9Cek1KOURmSnMvUW40a0JEWVBsS3YzeldQM0FN?=
 =?utf-8?B?RlYydTR5dHhRa0xwSFd6enJ2TUUwWVJSY21BbjdHaEtnWm5QMmRnRkl2ajZt?=
 =?utf-8?B?c2ZIYmVaTEJiaXpQc1JmSmxDZHZLVUxKRUJod2d6RzF5Y0hUTW1meDYydWxY?=
 =?utf-8?B?ZDFqTm1ZeWVnWDYybGRaaWh6eit0NHR3cXRXMmdLaU83ZVFoaVR6QzJmU2Ns?=
 =?utf-8?B?VlpNWkowS3RTdTZqdHNucGZJbUsyaDgxQzNic0gwU1lic1FCa1RhWEdIM0lU?=
 =?utf-8?B?T1FTZzJsOWxGMnRySmE2MjRTeXFBVnFSQit0aWJMcS9oZE5KZXdwWFdZcWdY?=
 =?utf-8?B?bDBJeHk3Q3FCRnllMUtlNlBrRXRUM2QvR2hUcjBaWjY3OG96RENKeVdJVG5k?=
 =?utf-8?B?QmRzU1pSRkhWYzlzTVlHY2ZGTnRNeTNrOGM1elcybXg4eFgwb2lHcWxSYjZO?=
 =?utf-8?B?WnRxRWFpdW9zdTZneUJ3enl2VjlsS0U2WlFOQ0cyTE1XUU5LU2ozSS9zVENq?=
 =?utf-8?B?U0NxY2tvbWtTdUU2VUFVem1FV052aU41dDZReUdSWjVvU3RCTlppeTdOOHpQ?=
 =?utf-8?B?UTdkdmVneG1NOFNUVmFMNnRmdmhSZ3ZMVElvSHBTQzZ5MVc5eGEzQUpXaVJ5?=
 =?utf-8?B?VElRaVlScTFlKzRZWDZBdVVJTXhNdkhVKzdiRk1xanU1TkxSVTJzNTRkaWEx?=
 =?utf-8?B?Tm50RUF6ZzUwcVVxWGVRK2Z2ZjYrV3pNZzI4WU1tRGU0SVlHTHEyeXAxY1hj?=
 =?utf-8?B?MElnMWFwaEQ1OWNjWW83Y1VpRGdMd09jUWI4SnpueHhsY0VDWmRIKzV3QU1a?=
 =?utf-8?B?dXcvb0F1dDlRNGtGMGE5cmxUbGdyaVZKVzNLZStneGc0ZE5JczVHcEhnQndD?=
 =?utf-8?B?VEpMNm5QMmNZamYwNjJkRkhjWldLRUh6ZU1jMmlPbGNjcWtVaTZUUmxsMVdh?=
 =?utf-8?B?cUdWL2g5Y0hDbm9YT1AvUTB5akc4YUw4azNVZmdWak9DMExxcHg4MktHYnlp?=
 =?utf-8?B?U3U3b2hiOHVTQjBEME44MTBXcnZiTTNLMWpENDljdUxLblZYMVMxOStYOGFy?=
 =?utf-8?B?SGE5VTVISi9OSzBObkJrQkl4VEVRYms4QUIxcnBqUlkweUZRT0RDMXlEVk9a?=
 =?utf-8?B?UTcxWUwxcnRmM2ZRUkR0Sys1QUcvVERLV1RRaFpnL2pZUlNDc1d4NmI5dE10?=
 =?utf-8?B?MDFWeUFla3ZGc0VUOXVXOCtWSU9uSk9Hd29scW45UW1jeDR4QU1nenowMk5y?=
 =?utf-8?B?MDV3WlNJdm9yK2hxbHB1T1hDWXQ2azZqVWZTaC90am1OLzRENUY3eXd6d3dN?=
 =?utf-8?B?Ujhac2ZKc2ZhQjZ6WTFLU2YyanFuUjRlVHR1enlRdkllMk04WnpSL1JBVlBC?=
 =?utf-8?B?WTNiZW5IcWhMS3pQeFkxOThWS3pta0FCa0d6L2NXWVY0K05pRzdLMTBmdnpP?=
 =?utf-8?B?UGp0QnE3Vjdvb1I3REpiR2ZLYnIvN1dnYkx5OGZvTnN1TkE5VXoxeWVZR3Vu?=
 =?utf-8?B?WXhsSFNHcFlYeGMyUE5uSjBLcWw5TUNmczRNZjhnUzFTQ2Z6N2dBQm40RDht?=
 =?utf-8?B?dE9rejJYTkI4VzFaOUt1eG1YM1VtNUhtUjlSbllNZW53QTlSSWFONGgwSUNF?=
 =?utf-8?B?Vy9KaGo2QU93dkZtRjVZN3NpU0VoNXpNZjZQT0VyMXRSL09nZk9lZlFLbGlH?=
 =?utf-8?B?Zk5XZHZ4Qnc3OWQ3NDBVMHNuSmZqYnBaeEpvN2ttbVFLZnhSckZTNGRHY2ll?=
 =?utf-8?B?cUIwcTRCb2FZSHdNa0hiRW13ZjF3em1KQytGaHBweUM1YkRTMlZTRkJSQTgr?=
 =?utf-8?B?akJhaUMzZ1pBQ1dJYWxqYjNXSEZmMkNzUzE5cGoxU3NqK1dQeVBCWHB0aFFD?=
 =?utf-8?B?ekJQVFgweDhoblVOdWFGeEZZOTNZMjZIVXF6bHFhWWR3L3YxOW9TakxsWEFX?=
 =?utf-8?B?Yjc3dXg0VjcwdzNaUmtXMEJkMEQvOHBvcWN2cVZBbjFqdHN2RnBtbFZKSWVT?=
 =?utf-8?B?SzJiR1o2aWdnWGI5VGg4UjBPSDFJMWI4aEVYK0FEd21xT1hkaEhrQjFxTDRL?=
 =?utf-8?Q?O/wI8/UHNDRtHV4E=3D?=
Content-Type: text/plain; charset="utf-8"
Content-ID: <23BC6686812C7349AA8E09C0B1C5C013@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: PAVPR03MB10102.eurprd03.prod.outlook.com
X-MS-Exchange-CrossTenant-Network-Message-Id: 77a8f854-1928-4339-627b-08de96408129
X-MS-Exchange-CrossTenant-originalarrivaltime: 09 Apr 2026 14:01:32.1698
 (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: cP5x8kFrbSYTwg5RTSXsrrsodjhMJrrDxX6jVrsgKAHRGOdk1xCR2mBcUUB/eKzT60JvbKgvap8GbDI9rAdJ7Q==
X-MS-Exchange-Transport-CrossTenantHeadersStamped: PA1PR03MB10891
X-purgate-ID: tlsNG-c1860d/1775743298-F7547497-5D390FE7/0/0
X-purgate-type: clean
X-purgate-size: 2702

VGhpcyBzZXJpZXMgZW5hYmxlcyBzdXBwb3J0IGZvciBQQ0kgU1ItSU9WIGNhcGFiaWxpdHkgZm9y
IFBWSCBkb21haW5zLg0KSXQgYWxsb3dzIERvbTAgdG8gZW5hYmxlIGFuZCB1c2UgU1ItSU9WIHZp
cnR1YWwgZnVuY3Rpb25zIGFuZCBmb3IgdGhlc2UNCmZ1bmN0aW9ucyB0byBiZSBwYXNzZWQgdG8g
Z3Vlc3RzLg0KDQpUbyBhY2hpZXZlIHRoaXMsIGFkZCBoYW5kbGVycyBmb3IgU1JJT1ZfQ09OVFJP
TCByZWdpc3RlcnMsIHNpbXBsaWZpZWQgaGFuZGxlcnMNCmZvciBWRnMgaGVhZGVycy4gWGVuIHJl
bGllcyBvbiBkb20wIHRvIGVuYWJsZSBTUi1JT1YgYW5kIGNhbGwNClBIWVNERVZPUF9wY2lfZGV2
aWNlXyogdG8gaW5mb3JtIGFib3V0IGFkZGl0aW9uL3JlbW92YWwgb2YgVkZzLg0KDQpDb3JlIGZ1
bmN0aW9uYWxpdHkgaXMgYmFzZWQgb24gcHJldmlvdXMgd29ya1sxXS4NCg0KVGVzdGVkIG9uIFIt
Q2FyIFNwaWRlciBib2FyZCB3aXRoIFNhbXN1bmcgTlZNZSBTU0QgQ29udHJvbGxlciA5ODAgYW5k
IEludGVsDQpYNTUwVCBldGhlcm5ldCBjYXJkLg0KDQpbMV06IGh0dHBzOi8vbG9yZS5rZXJuZWwu
b3JnL3hlbi1kZXZlbC8yMDE4MDcxNzA5NDgzMC41NDgwNi0xLXJvZ2VyLnBhdUBjaXRyaXguY29t
Lw0KDQp2Mi0+djM6DQoqIHJld29yayB0aGUgc2VyaWVzIGZvciBWRiBkaXNjb3ZlcnkgYnkgRG9t
MA0KKiBkcm9wIHBjaS9pb21tdTogQ2hlY2sgdGhhdCBJT01NVSBzdXBwb3J0cyByZW1vdmluZyBk
ZXZpY2VzLCBzZWUgWzJdDQoqIGRyb3AgdnBjaTogYWRkIGEgd2FpdCBvcGVyYXRpb24gdG8gdGhl
IHZwY2kgdmNwdSBwZW5kaW5nIGFjdGlvbnMNCiogYWRkIHZwY2k6IGFsbG93IHF1ZXVlaW5nIG9m
IG1hcHBpbmcgb3BlcmF0aW9ucw0KKiBtaW5vciBjaGFuZ2VzIGluIGluZGl2aWR1YWwgcGF0Y2hl
cw0KDQpbMl06IGh0dHBzOi8vcGF0Y2hldy5vcmcvWGVuL2E1OWMyZGEwZDRjNzJkZWI0Mjk1MGU5
YThlMzk4MmZiZGVlNjA2NjguMTc3NTU1NTc2Ni5naXQubXlreXRhLl81RnBvdHVyYWlAZXBhbS5j
b20vDQp2MS0+djI6DQoqIHJld29yayB0aGUgc2VyaWVzIGZvciBWRiBkaXNjb3ZlcnkgaW4gWGVu
DQoqIHNlcGFyYXRlIGRvYyBjaGFuZ2VzIGludG8gdGhlIGxhc3QgcGF0Y2gNCg0KDQpNeWt5dGEg
UG90dXJhaSAoMik6DQogIHZwY2k6IFVzZSBwZXJ2Y3B1IHJhbmdlcyBmb3IgQkFSIG1hcHBpbmcN
CiAgZG9jczogVXBkYXRlIFNSLUlPViBzdXBwb3J0IHN0YXR1cw0KDQpTdGV3YXJ0IEhpbGRlYnJh
bmQgKDUpOg0KICB2cGNpOiByZW5hbWUgYW5kIGV4cG9ydCB2cGNpX21vZGlmeV9iYXJzDQogIHZw
Y2k6IHJlbmFtZSBhbmQgZXhwb3J0IHZwY2lfZ3Vlc3RfbWVtX2Jhcl97cmVhZCx3cml0ZX0NCiAg
dnBjaTogYWxsb3cgcXVldWVpbmcgb2YgbWFwcGluZyBvcGVyYXRpb25zDQogIHZwY2k6IGFkZCBT
Ui1JT1Ygc3VwcG9ydCBmb3IgUFZIIERvbTANCiAgdnBjaTogYWRkIFNSLUlPViBzdXBwb3J0IGZv
ciBEb21Vcw0KDQogU1VQUE9SVC5tZCAgICAgICAgICAgICAgICAgfCAgIDIgLQ0KIHhlbi9jb21t
b24vZG9tYWluLmMgICAgICAgIHwgICAyICsNCiB4ZW4vZHJpdmVycy92cGNpL01ha2VmaWxlICB8
ICAgMSArDQogeGVuL2RyaXZlcnMvdnBjaS9oZWFkZXIuYyAgfCAzMTQgKysrKysrKysrKysrKysr
KysrKy0tLS0tLS0tLS0tLQ0KIHhlbi9kcml2ZXJzL3ZwY2kvcHJpdmF0ZS5oIHwgIDEwICsNCiB4
ZW4vZHJpdmVycy92cGNpL3NyaW92LmMgICB8IDM2NiArKysrKysrKysrKysrKysrKysrKysrKysr
KysrKysrKysrKysrDQogeGVuL2RyaXZlcnMvdnBjaS92cGNpLmMgICAgfCAgMTAgKy0NCiB4ZW4v
aW5jbHVkZS94ZW4vdnBjaS5oICAgICB8ICAyOCArKy0NCiA4IGZpbGVzIGNoYW5nZWQsIDYwNyBp
bnNlcnRpb25zKCspLCAxMjYgZGVsZXRpb25zKC0pDQogY3JlYXRlIG1vZGUgMTAwNjQ0IHhlbi9k
cml2ZXJzL3ZwY2kvc3Jpb3YuYw0KDQotLSANCjIuNTEuMg0K


From xen-devel-bounces@lists.xenproject.org Thu Apr 09 14:01:41 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 09 Apr 2026 14:01:41 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1277472.1562659 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wApwv-0004Nu-Vt; Thu, 09 Apr 2026 14:01:37 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1277472.1562659; Thu, 09 Apr 2026 14: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 1wApwv-0004N3-PB; Thu, 09 Apr 2026 14:01:37 +0000
Received: by outflank-mailman (input) for mailman id 1277472;
 Thu, 09 Apr 2026 14:01:36 +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 1wApwu-0004KF-5G
 for xen-devel@lists.xenproject.org; Thu, 09 Apr 2026 14:01:36 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wApwt-005jok-Gb
 for xen-devel@lists.xenproject.org; Thu, 09 Apr 2026 16:01:35 +0200
Received: from [10.42.69.10] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <Mykyta_Poturai@epam.com>)
 id 69d7b12b-e002-0a2a0a5209dd-0a2a450ab160-48
 for <xen-devel@lists.xenproject.org>; Thu, 09 Apr 2026 16:01:35 +0200
Received: from [52.101.66.132]
 (helo=DUZPR83CU001.outbound.protection.outlook.com)
 by tlsNG-4011c0.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.0)
 (envelope-from <Mykyta_Poturai@epam.com>)
 id 69d7b13e-ee98-0a2a450a0019-34654284bb10-4
 for <xen-devel@lists.xenproject.org>; Thu, 09 Apr 2026 16:01:35 +0200
Received: from PAVPR03MB10102.eurprd03.prod.outlook.com
 (2603:10a6:102:30d::12) by PA3PR03MB10964.eurprd03.prod.outlook.com
 (2603:10a6:102:4b2::10) with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9769.42; Thu, 9 Apr
 2026 14:01:33 +0000
Received: from PAVPR03MB10102.eurprd03.prod.outlook.com
 ([fe80::b8c6:f37a:987a:beb]) by PAVPR03MB10102.eurprd03.prod.outlook.com
 ([fe80::b8c6:f37a:987a:beb%5]) with mapi id 15.20.9769.016; Thu, 9 Apr 2026
 14:01: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=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=t6ZuL5lWSKjJXPrhTkdjSsJxOlGTtcu2zp5aLeBbuQRgHlLmTQU9ODON78y0ift/ClfkFw5jlMgWxpJXApdS3BBWI8+1JXSlyMe0/9QxoONp5FLvMftB3ttWKuj1U4RRS4lBC4MJyK5HcrbZpOVd/UYf+HVHuI/v1fGaXf6Bwgyd4AiO6ABqjbPybJ07zkVMl/XSvuDWbwJUVHHb0kpbLlBq5yRRJ5QpX24azV3oinsQwKHPFT1KXkDtu/g1+s5+j9PEsXsu1DAqEAPaHk1G31gscxb9rg4z0v2k2enp/oBVYrjWT4uN0Z0kxmqlv0vgSBNSIr0xm22kw08MR7L4lg==
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com;
 s=arcselector10001;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1;
 bh=a3SAb+kYfSsy1lFT5wonZU9aNWITJ9HEs9KeGn0w/fc=;
 b=ggQRi8mNGlk636FfIDZJcc9heJdjGbbuY2ZypC99ACFocIQUQgdg0HO/w4wo+2A+q0VBmdUZSkNthyXGHPlbiMVUTMGQXS49Hl5Gdc4hFyhLOt9tUwArTURd/H7vygTij47yimWM2tpHgsoTEbPQKRxOLfRIQk6+zln2ZkB9EQJ0mg6cmGCMUGwC6kr1D3vJwMUsj3amyF8KFGxQ1DtJYNteHcpTZfQbpAYklsUMO1j10zAHoru96Ql91JtqUVkdJBob1oGgwzXHgr3hhbZLqAMta953mwcKmtFJj6+bSeJdKAjETNlaaDFDzwYMUGpNJxYn6zcFQi1xifZOrZJy5w==
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=a3SAb+kYfSsy1lFT5wonZU9aNWITJ9HEs9KeGn0w/fc=;
 b=ZhZCDs/Igstpa06XmNRBxKB15x7fox0bzCmx9a+KhwnI9MBU7BLTPtxHMp4xwb5hWVNiXqQX+/LwPdawVeI5KLqpOi5h0U8o6/yYkI4bxyOvOBQazkuCVheqBMiorjxC7NQJjm3ps7HZ9eI0rM9Q/5umqwW+PLbu5NOKOMOx6LMqcykRsm/q833yAoe4fM07BqUJ8dKkZ0SVirWv/zyzpBms/cmOswBOgrIf7duPi3Rlf8isy8pm+csCAFbA7ROn7uz63OOqFv6pxhuVlpifxQFeGwMsOwTEPsthzei9ETd++CN2IvGF7r0xIYG8JnxX2ZaGjwSDhtRD9fSq9wrKEw==
From: Mykyta Poturai <Mykyta_Poturai@epam.com>
To: "xen-devel@lists.xenproject.org" <xen-devel@lists.xenproject.org>
CC: Stewart Hildebrand <stewart.hildebrand@amd.com>,
	=?iso-8859-1?Q?Roger_Pau_Monn=E9?= <roger.pau@citrix.com>, Mykyta Poturai
	<Mykyta_Poturai@epam.com>, Teddy Astie <teddy.astie@vates.tech>
Subject: [PATCH v3 2/7] vpci: rename and export
 vpci_guest_mem_bar_{read,write}
Thread-Topic: [PATCH v3 2/7] vpci: rename and export
 vpci_guest_mem_bar_{read,write}
Thread-Index: AQHcyClf7FuYJla3xES25istczeK4w==
Date: Thu, 9 Apr 2026 14:01:32 +0000
Message-ID:
 <904786c642136845234f94fb522a0a0d0fc8a1d5.1775742115.git.mykyta_poturai@epam.com>
References: <cover.1775742115.git.mykyta_poturai@epam.com>
In-Reply-To: <cover.1775742115.git.mykyta_poturai@epam.com>
Accept-Language: en-US
Content-Language: en-US
X-MS-Has-Attach:
X-MS-TNEF-Correlator:
authentication-results: dkim=none (message not signed)
 header.d=none;dmarc=none action=none header.from=epam.com;
x-ms-publictraffictype: Email
x-ms-traffictypediagnostic: PAVPR03MB10102:EE_|PA3PR03MB10964:EE_
x-ms-office365-filtering-correlation-id: 7a9190c5-fb42-4786-14a5-08de964081b6
x-ms-exchange-senderadcheck: 1
x-ms-exchange-antispam-relay: 0
x-microsoft-antispam:
 BCL:0;ARA:13230040|366016|1800799024|376014|38070700021|22082099003|56012099003|18002099003;
x-microsoft-antispam-message-info:
 Oz+vbxW19ExR25hUJXDzJkojb5xg7+54niddpISXmBS2J09F3kHIqiODXyBJeVnZxXSyjeW6tzRDI5YO9Q0RBlVFksHpn58QTsYXYmmCOJsssiJ6ek2j6JF/nWpcl74+7bdnXYrJHGhbWD6uYfTxNEiy7fOa9OBKOGDF4K2IJQHVrkrasjFjjRRBMrtWbRsAxhW6eMTWD6OXwIYHM2iGsJsezsTp1GZAG9lk41OpxoUwL8HNamYMAB1AbaqzDZKfiokSqGtMtXw9HwDcLUUCy4jDNjexXEsJpKWqbJIpkTusikwhdh0WvpctMtZV3K1CTV9rKmS75U2hG6wN1D7nrUq11R4u8Eyv2APbpQ8ACi+Y1cfs0NN2IWLRYhUffYfQPxmgRM2/zwrE/Y5wrLO4rhctcd23O90DDFk/rvTQ8m44RmoyjZrIbpeU0DGffopNlpXP0w8WjeZywbuJ9U3dT9opvXojr09M0KI5iwWDlMYqR/TC2Ob4xPmtD4wcd+ykvu/SEULfOHZHzE4nter+dexJxz5BB8G+551hzNgWVCf2YI9emMfyvPCP9sdant4N7JPdBBYG9sIYIqYy7rUXba84yoRj36qZf3Ppc15HIsKYUsFwrpvTJeBHf29QRorOziJo8QZd58hsQjZhqnRNd4pO4NQqRR+Csxrxc31eRJSGjgREe0VS23nx9HX2m29z2tIebwWRcXNtV7yXlsrkT3G2W2amQyn3afK3wjtn6JcYwGItMAMeqxzNmbD5+/L9fnFblHDIwRsyDmPKbK3BCjl7jUw2cvj+3ofvpvdGL4g=
x-forefront-antispam-report:
 CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:PAVPR03MB10102.eurprd03.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(366016)(1800799024)(376014)(38070700021)(22082099003)(56012099003)(18002099003);DIR:OUT;SFP:1102;
x-ms-exchange-antispam-messagedata-chunkcount: 1
x-ms-exchange-antispam-messagedata-0:
 =?iso-8859-1?Q?IgYWygkOyGjqUH/Z9pz4AKIUm6VLdG2bUOdHTvZPJhthy4nLLjgf0HAEuB?=
 =?iso-8859-1?Q?6t9Y/zAihPniasAIqeNWzOaqnM+6q9q1ae4V8joN6oEZhCuq5Y8KxFczFg?=
 =?iso-8859-1?Q?HNHbYmZfeb9KxF8y/qCjvBwaTWwEvSOIiSvPZDUrDgCQxukNtuZPTCjfgM?=
 =?iso-8859-1?Q?tBq/emNxr/88jLDArAgxTS44b1wAepSxtMC6FyiQf/7OEObFoZLiyHfz0N?=
 =?iso-8859-1?Q?OS8jQGlUpV39E4ocX1Y0UM2mpDJehX3ERozgps1cBj/P0EXkEF1MQ461Gv?=
 =?iso-8859-1?Q?QPTS5JDc6XKcoz+xTl88rxH/CsgxHmChjqU4NLUY7CEk4NJqxEQlHpl4gK?=
 =?iso-8859-1?Q?t2S233nChixGKRxwOlQoh8PhWvHK3wwz4guDOoUspxmvPSyr2vHP2zr865?=
 =?iso-8859-1?Q?1VXz6WJFIIHh5ngcZo1Vn8jqXW4/fi7c1OnWnyJCN2sMhvlwzmsR4n5VUw?=
 =?iso-8859-1?Q?+7Jtin8nFID2oDEci9qvHmehjl5ZSBxq1DTVgVsYtSuS6bUuwBRtmd7ZP7?=
 =?iso-8859-1?Q?xRUXIS7Bz4t+J8yRABgjHjrpv6sQFi4oICrFNsTujoiECO3PBJ/42UirAB?=
 =?iso-8859-1?Q?Nwjmgy5O78HxWe5xbla8bD6Y0XcpsUaI6qJjCXDgtPGha+TyTQ9RXxX3ON?=
 =?iso-8859-1?Q?fylnqJOVDK89VcKW6PprAl/uc7kdkDLEsGdTotRdX33Kisew1uqJPL3cqv?=
 =?iso-8859-1?Q?Fhz/15lUhVV3NUZUWpJC7qId1ziogO3qqQdpO6PC/SzX0TlLZjAS6kJ62B?=
 =?iso-8859-1?Q?VHFdYq6Wok/1CSoVbIyohgIAYNhfbEUttjwHHE4XwzyXbpfgLnmWT9VXgH?=
 =?iso-8859-1?Q?I38A6aJaRP6cnoTkZ0ouJ1grRlAVFqdc9XA5ZqBdUBBiFBpqB8GJRV+fqb?=
 =?iso-8859-1?Q?VqMX9DZWEzgo4jyBe2IJ+AT2mFqJx9DmR7H7UaI09o3Ri7H5hYaLK3DnWB?=
 =?iso-8859-1?Q?OuRqcso5r6WsNgnBkm/VoaH5BDAHpqcWqgsq4CpGF2kvkLVyfHwDf2uHXd?=
 =?iso-8859-1?Q?UB+YjMTKCkDeAJK3THag6ZGdqR7Pg+rwBJ5Wzn5gVJocfduetAtxu9clK2?=
 =?iso-8859-1?Q?pp7We+rQsrdXcrsZfu3LRPj6Dr4m7QXe9q/12nF65hha1nRoeiVbOpsC6d?=
 =?iso-8859-1?Q?K9DOMQOMbQMYbgJvX3RrU1jzhIiHH1e4ABZbyL3qTSanEJXfOF3PsTvsbJ?=
 =?iso-8859-1?Q?0I/682M/GhtK2IKabjq1sgT/M2lFZ8P6ZDnUM692Zx/ypR/V017U7KM6VX?=
 =?iso-8859-1?Q?EeI0WFT3d52nSDW+vOcXRS6my+OKv0Npmc9+w535R6D2ZeMjkiQkcrnb6J?=
 =?iso-8859-1?Q?HjkvTqNUI4pQYSQ+Evj7oJ0LH6lnhthKQ0Nf1rzo6vc0NtCG5CJXCX/8Pn?=
 =?iso-8859-1?Q?aCKXMl/Y+LjNbCDG6FGkZuMBbbmHcGhmLFhfBCSK2K6VhvgaLGSvr6X92B?=
 =?iso-8859-1?Q?kSoFwCNtV/o1DGyMO8JzITywT4BysgkGu53NHEJj5PnQLX/FYSXrqCasX4?=
 =?iso-8859-1?Q?xbaLqBmirrJ9VUhjMOlmlMBHnK6fycGZ34wzIvOLJtOa+abbjp9PS9zBtt?=
 =?iso-8859-1?Q?pLVxUAcAtblC/NFMzDa+xcsQ+sLwVX5y2XBaOOvPPJNhFSds/mwPVsSRS0?=
 =?iso-8859-1?Q?Gky5PzOmY8M3do1RayvpDr0xd2H8HaVbDnW01pMRWSOe4vX0KnMsBXqSAe?=
 =?iso-8859-1?Q?ISp2up6ICbmSj1hhirt9SN1Z62kjLKSh+yLIdWT3lM/gdJuNvTWp6dX5+v?=
 =?iso-8859-1?Q?nDvEOq6dT7xr1066haz3LURvU0C5WhIoE0ixSYCnaFcq0faR7pTfHhMDB7?=
 =?iso-8859-1?Q?8qWEarBpjhVXP1X0qQ7RD0KQanS7Eu8=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: PAVPR03MB10102.eurprd03.prod.outlook.com
X-MS-Exchange-CrossTenant-Network-Message-Id: 7a9190c5-fb42-4786-14a5-08de964081b6
X-MS-Exchange-CrossTenant-originalarrivaltime: 09 Apr 2026 14:01:32.9857
 (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: GQSTdgcsnpCTFuBrISQgYJunRGnSzhjr49oHoa2BfOc67D68uv55RIUjs/ULILU2BlsZlm94ce2EQ+X6brIYgQ==
X-MS-Exchange-Transport-CrossTenantHeadersStamped: PA3PR03MB10964
X-purgate-ID: tlsNG-4011c0/1775743295-BC75F0B1-F72DEF5F/0/0
X-purgate-type: clean
X-purgate-size: 3941

From: Stewart Hildebrand <stewart.hildebrand@amd.com>

Export functions required for SR-IOV support.

Signed-off-by: Stewart Hildebrand <stewart.hildebrand@amd.com>
Signed-off-by: Mykyta Poturai <mykyta_poturai@epam.com>
Reviewed-by: Teddy Astie <teddy.astie@vates.tech>
---
v2->v3:
* move declarations to private.h

v1->v2:
* collect RBs
---
 xen/drivers/vpci/header.c  | 20 +++++++++++---------
 xen/drivers/vpci/private.h |  6 ++++++
 2 files changed, 17 insertions(+), 9 deletions(-)

diff --git a/xen/drivers/vpci/header.c b/xen/drivers/vpci/header.c
index 96995e098b..5d5ba5c016 100644
--- a/xen/drivers/vpci/header.c
+++ b/xen/drivers/vpci/header.c
@@ -611,9 +611,9 @@ static void cf_check bar_write(
     pci_conf_write32(pdev->sbdf, reg, val);
 }
=20
-static void cf_check guest_mem_bar_write(const struct pci_dev *pdev,
-                                         unsigned int reg, uint32_t val,
-                                         void *data)
+void cf_check vpci_guest_mem_bar_write(const struct pci_dev *pdev,
+                                       unsigned int reg, uint32_t val,
+                                       void *data)
 {
     struct vpci_bar *bar =3D data;
     bool hi =3D false;
@@ -653,8 +653,8 @@ static void cf_check guest_mem_bar_write(const struct p=
ci_dev *pdev,
     bar->guest_addr =3D guest_addr;
 }
=20
-static uint32_t cf_check guest_mem_bar_read(const struct pci_dev *pdev,
-                                            unsigned int reg, void *data)
+uint32_t cf_check vpci_guest_mem_bar_read(const struct pci_dev *pdev,
+                                          unsigned int reg, void *data)
 {
     const struct vpci_bar *bar =3D data;
     uint32_t reg_val;
@@ -826,8 +826,9 @@ int vpci_init_header(struct pci_dev *pdev)
             bars[i].type =3D VPCI_BAR_MEM64_HI;
             rc =3D vpci_add_register(pdev->vpci,
                                    is_hwdom ? vpci_hw_read32
-                                            : guest_mem_bar_read,
-                                   is_hwdom ? bar_write : guest_mem_bar_wr=
ite,
+                                            : vpci_guest_mem_bar_read,
+                                   is_hwdom ? bar_write
+                                            : vpci_guest_mem_bar_write,
                                    reg, 4, &bars[i]);
             if ( rc )
                 goto fail;
@@ -885,8 +886,9 @@ int vpci_init_header(struct pci_dev *pdev)
         bars[i].prefetchable =3D val & PCI_BASE_ADDRESS_MEM_PREFETCH;
=20
         rc =3D vpci_add_register(pdev->vpci,
-                               is_hwdom ? vpci_hw_read32 : guest_mem_bar_r=
ead,
-                               is_hwdom ? bar_write : guest_mem_bar_write,
+                               is_hwdom ? vpci_hw_read32
+                                        : vpci_guest_mem_bar_read,
+                               is_hwdom ? bar_write : vpci_guest_mem_bar_w=
rite,
                                reg, 4, &bars[i]);
         if ( rc )
             goto fail;
diff --git a/xen/drivers/vpci/private.h b/xen/drivers/vpci/private.h
index 6fdf8a20d9..f012fd160d 100644
--- a/xen/drivers/vpci/private.h
+++ b/xen/drivers/vpci/private.h
@@ -141,6 +141,12 @@ static inline size_t vmsix_table_size(const struct vpc=
i *vpci, unsigned int nr)
 /* Map/unmap the BARs of a vPCI device. */
 int vpci_modify_bars(const struct pci_dev *pdev, uint16_t cmd, bool rom_on=
ly);
=20
+void cf_check vpci_guest_mem_bar_write(const struct pci_dev *pdev,
+                                       unsigned int reg, uint32_t val,
+                                       void *data);
+
+uint32_t cf_check vpci_guest_mem_bar_read(const struct pci_dev *pdev,
+                                          unsigned int reg, void *data);
 #endif /* __XEN__ */
=20
 #endif /* VPCI_PRIVATE_H */
--=20
2.51.2


From xen-devel-bounces@lists.xenproject.org Thu Apr 09 14:01:41 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 09 Apr 2026 14:01:41 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1277475.1562678 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wApwx-0004o7-84; Thu, 09 Apr 2026 14:01:39 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1277475.1562678; Thu, 09 Apr 2026 14:01: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 1wApwx-0004lY-2x; Thu, 09 Apr 2026 14:01:39 +0000
Received: by outflank-mailman (input) for mailman id 1277475;
 Thu, 09 Apr 2026 14:01:37 +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 1wApwv-0004Kd-D9
 for xen-devel@lists.xenproject.org; Thu, 09 Apr 2026 14:01:37 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wApwu-001xw2-Nn
 for xen-devel@lists.xenproject.org; Thu, 09 Apr 2026 16:01:36 +0200
Received: from [10.42.69.3] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <Mykyta_Poturai@epam.com>)
 id 69d7b13e-bab6-0a2a0a5309dd-0a2a4503d692-8
 for <xen-devel@lists.xenproject.org>; Thu, 09 Apr 2026 16:01:36 +0200
Received: from [52.101.66.135]
 (helo=DUZPR83CU001.outbound.protection.outlook.com)
 by tlsNG-33051d.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.0)
 (envelope-from <Mykyta_Poturai@epam.com>)
 id 69d7b140-02b3-0a2a45030019-346542872ee8-3
 for <xen-devel@lists.xenproject.org>; Thu, 09 Apr 2026 16:01:36 +0200
Received: from PAVPR03MB10102.eurprd03.prod.outlook.com
 (2603:10a6:102:30d::12) by PA3PR03MB10964.eurprd03.prod.outlook.com
 (2603:10a6:102:4b2::10) with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9769.42; Thu, 9 Apr
 2026 14:01:34 +0000
Received: from PAVPR03MB10102.eurprd03.prod.outlook.com
 ([fe80::b8c6:f37a:987a:beb]) by PAVPR03MB10102.eurprd03.prod.outlook.com
 ([fe80::b8c6:f37a:987a:beb%5]) with mapi id 15.20.9769.016; Thu, 9 Apr 2026
 14:01: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=CFIsQP8lMB7NjP4Wa4osJkF/SMG6LpglWMnEA+Tn8hfTTsPrZwKC0jszTdW0a6C8QDjqXRwTTVjrgZ2fyyqbnfDILa//ychWpD+AmFaR6F2GvA5yYvP4LgGK8l+r0NWAyGeEa79a+F057NZezV4VZHtKbz6euNyJP0IAp/RKv8sGsDElTmALh9C3iUNUGgfP0xvsuFuvocwXvBDgk4OrhFHowfdFuunofcn0eWLd0+/hj/yBnwaNWeLbAVUNoF1hedBGaRHBAV5j+oHlaP8880vRHcSOJ5ecCgLlodnaF6s1qOZIrRP7UaoHRwVxj0AbRUUkdhdUilHL4aa5CcoICw==
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com;
 s=arcselector10001;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1;
 bh=98O9tjNO0ZyAg+iIvonlDRg03kkEWulLxNl1NsKdKko=;
 b=lbCS+74MRPC0j8U/BPCn2UqTjuOcHQfbyPRtiDkw7HFyld7ml9OnQo6mlT5KwlTGPlSEKqKVODHn6HJM7iJ9bdV0h6mnvEaNUvNfBxg4tDcxFNOqtQLiKjOagN60MvI4LfUhRs798sbRgYHE6Fq+jdLuWtJy6WGrvD6gV6MesmXV8u4OLbCQIkDH27M+wacC0DEY3Je+SKSMabJ72XlkbSy027ab+98vRunHSyqFrNkdEOW9fNoVqx/iyPX5ptyw1Pv1F7+TLUhNBI/anmWBk+unGHqEE3ilg1iQiPXei/EPWa9x0YorabPYoEg4Y1dosmFFeFqKJfNy5n0/UMv88Q==
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=98O9tjNO0ZyAg+iIvonlDRg03kkEWulLxNl1NsKdKko=;
 b=pw1tQiWlj74LD3Dt2PH3dQ8qjSt97RfqAZezhSUGi5AbbMu+hGMSZOmFBtJ2u0Z3jiujlQzdOTPHP0gQ9gCYLU6/Ad8RHTgXorPXv7/X3/Q2jxgq4ELEEvde3IpZe2MOqVlwqYfnGTpsk+VSbEJPYvZf4LvR0jNJa519N9EodYK5CrFFbBnHz9K10L4kk6s3GOSPh+VFuKWclESfzN9PdOwUxHH9/efkyc59YdziVLLQwbh/uIumirT5mBh57w9AodwNV3llbMbm5V4i+nd3ncVoXL8W+2IJPHJz117m9EhGE8hbDf7xUD0YOhQmXrLxLEMzHIwEqzsNrGMlsulvSw==
From: Mykyta Poturai <Mykyta_Poturai@epam.com>
To: "xen-devel@lists.xenproject.org" <xen-devel@lists.xenproject.org>
CC: Stewart Hildebrand <stewart.hildebrand@amd.com>,
	=?iso-8859-1?Q?Roger_Pau_Monn=E9?= <roger.pau@citrix.com>, Mykyta Poturai
	<Mykyta_Poturai@epam.com>
Subject: [PATCH v3 6/7] vpci: add SR-IOV support for DomUs
Thread-Topic: [PATCH v3 6/7] vpci: add SR-IOV support for DomUs
Thread-Index: AQHcyClgJVtVkM11YECyJKBoUo8yuw==
Date: Thu, 9 Apr 2026 14:01:34 +0000
Message-ID:
 <1aaf1a087ca0003d943d43c55500b3ab84195cf5.1775742115.git.mykyta_poturai@epam.com>
References: <cover.1775742115.git.mykyta_poturai@epam.com>
In-Reply-To: <cover.1775742115.git.mykyta_poturai@epam.com>
Accept-Language: en-US
Content-Language: en-US
X-MS-Has-Attach:
X-MS-TNEF-Correlator:
authentication-results: dkim=none (message not signed)
 header.d=none;dmarc=none action=none header.from=epam.com;
x-ms-publictraffictype: Email
x-ms-traffictypediagnostic: PAVPR03MB10102:EE_|PA3PR03MB10964:EE_
x-ms-office365-filtering-correlation-id: a5dadb01-ed72-404c-024e-08de964082b3
x-ms-exchange-senderadcheck: 1
x-ms-exchange-antispam-relay: 0
x-microsoft-antispam:
 BCL:0;ARA:13230040|366016|1800799024|376014|38070700021|22082099003|56012099003|18002099003;
x-microsoft-antispam-message-info:
 ZmX5U1e3mmsxRV7SYz2jHD4E8k6hTOp8RI5QaJmjvzT2/MMYmh7JH7caE/n7KK6nyklY9w2afcr4WDBdMhklurB1gyy0M55fZIhNV+6ii0vgoy5BZBGjFxrpXjQnXqexK17OPlKbJY7JQ11McU3FCGCwcwgseo+rPku5sHuNzKlaSveEnULUnVjBmWNceFJqTmOag1tTnyFLZzJJySFzJvXsVN6de+R2/rCQcLkBRC5SFROZJdo+pq70D+8ZUIXGDLM1p+zr0iX92nb1tbfrc6wiSQ7XLWdX6+agG7BTvvGWu31E9vrS+MEkFVzHINhzefu02acLH1Dwn0PcmZjROV47pm3PShuepQFSMVUy8ZaErlakXCIQaVVT1i9R4kLc9kcUta+uXlnpoftXHE1yuEmuJ7ZJxKfQ4e6ctOTdUfJ5j2vKCTcODQfdjVoUtdrVW3yTESefgQyDW7l850d9/mZFOVeyKYkc08lq1s2+8h1GQ/YQ7Pj2C9079QvuPJbuLP68WqaJggPNiPtQW1cOjUqcs5u5PJKb5D+ivsvcyZoI3H++6ByxRPayGOMv4vAQbCPgv8rSYA1UITMuRzHiw7dMiv24l2KCJlQXNkeHhfuOZ2sNCULvkGlW/0jiIrISFx7WiQ7Ue6UlhHsnEpzCxFPrP95R1wRHD5QVE56YcY7MEUOZuCVt7KjwG9W9yTwY+FpAmNK70+G6EGMdRCm5mvvzucuaAFVSR4LoMQIRaO9feoS3w7X6Cf9WA4tMCkNqbZaJYq2K48JVETOJebTFwgT75IZ8b7GYw0KIFny6lUw=
x-forefront-antispam-report:
 CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:PAVPR03MB10102.eurprd03.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(366016)(1800799024)(376014)(38070700021)(22082099003)(56012099003)(18002099003);DIR:OUT;SFP:1102;
x-ms-exchange-antispam-messagedata-chunkcount: 1
x-ms-exchange-antispam-messagedata-0:
 =?iso-8859-1?Q?mkMra2oLNjgy2U4shXxzBATFWQx3sxC5fV9WtsMp2+kJ8Zy0GVIXwlVvpi?=
 =?iso-8859-1?Q?BHYjb7OOJBpLhVaayKctX+CTtN2B0GezMWMxcGKaw+PRodfwE3TkY0AE0l?=
 =?iso-8859-1?Q?C8Ud59uEVg7f30Uzwiwuk0y/cP7nZUY8DhDXq5azpdIEGpKGR4s/9WDaes?=
 =?iso-8859-1?Q?Mkmxjb3qKXhou+p2XSrqJnaywHZC905201SkjIeVC12CykHo5YOc8gTCq9?=
 =?iso-8859-1?Q?ARO/K3VDbU1f2h3mYMZRNfgWn+qzXE3wCbbz7I0nroLYt4OXg/sMK56xAS?=
 =?iso-8859-1?Q?CLaMBrQuUDjp4UClfjZ9WvKRe6t1jR4supPga0xrs0Ijy+AH2N0RkT9L33?=
 =?iso-8859-1?Q?mjMvfCP5Cfh1opPrQ87jpxCaN0UzOCR0j9px0+rg0ABR8aWmeAotD331u5?=
 =?iso-8859-1?Q?GgG3HzMZcQ1EeB0nMUDAZt/6LD/LVgJtY+AUNYvabEOY9KtNHQRAK2EKfG?=
 =?iso-8859-1?Q?0icn1m9Ji22vcbAjzHZ0Wgyd6yzKJ8jtl8/55HUNAQ0K6BOxNEJs055sJC?=
 =?iso-8859-1?Q?rKd/U58PND9/YobL2iA5N/tPexxa0qYyXkoz2BFZ/rbGSDeMYFjK0KaL03?=
 =?iso-8859-1?Q?XdANqo8YnkxFQaBcJ7/kDOgsOVsykABPeQ0CjgJ2aAWDg0mfRpF3LkJ34c?=
 =?iso-8859-1?Q?ONIWrMHvKFh9tFlPk9oU3sVDdCjP6hy50hd0RRo2WucGQh6tQAiqrxRxT3?=
 =?iso-8859-1?Q?5SKaWAhyQRry9UQNM/zCNEWre6T84oyBfnfVfsZA64B+ifTdP+pPLqsOTP?=
 =?iso-8859-1?Q?kBqHHdGYYPspUXERRHd4ubGbrCY3L4hE0CYR0q9G7DoMPqd+q64Fn+JHd3?=
 =?iso-8859-1?Q?BKbvx6O0lLUjGNfn+AGq6Syr/n8fyHFqTCJWT1Drpxbvpk2u/qxiB6Ju4Y?=
 =?iso-8859-1?Q?/9jAGI/Nh7eTLVAwCJjuDdpe/hWCtwMuss8rAYLl3aegk258r2PxDRzVr+?=
 =?iso-8859-1?Q?wZZarxhuagyefPzk2SJftXy8D8RrNzUaC+g9FoMiqeAchga0d0zt9Do9XQ?=
 =?iso-8859-1?Q?UmA2z7TJ0sqR+TbFIDtAIsixwq2+xYOKPGbhnqMQ1mWxCFH1wkaxbYV323?=
 =?iso-8859-1?Q?vpFpcrsB5o9Dt8z1KFCwABXEu8Dc5Q88ruINLqBKIgtj4E0EGFwmKadls2?=
 =?iso-8859-1?Q?d5ebo5Fv6aZObAnmzCS9UuOhIrcZTKTXyyGBEZTqCRs1fr7+roEPSDJFWQ?=
 =?iso-8859-1?Q?5a3rgUlgmeIh0U46B1TBsDjYlyRLLXroAZnYEDRkWmYPqhrLIgxhGzG3Gb?=
 =?iso-8859-1?Q?K0IEyn2+RcxGgwjnQymrSY/oaSlwnIkCBAL5k619SJ13Aj4t40dErhUaXE?=
 =?iso-8859-1?Q?beOWXgDYsSA4mnB58gl/9Yq8bgKXpOpil9A3/E2SZxkIDBapQO4d4wPan9?=
 =?iso-8859-1?Q?gc6cLkwKbq/r5o4L9XF9mN5Lc56Jv7apsd/CeNxbmFNi23Q0V3k6h2/OI5?=
 =?iso-8859-1?Q?CeNnHCO7v3z7dKn7v3O49jwdTTptiTaDL4ShikUUiRk/fO7KQF0JDbSY7P?=
 =?iso-8859-1?Q?gItIpKoh7TOFJU9960HSOCXu0mWUSnPi8XnNOR9yA/DKRs3v52SGt3/AzL?=
 =?iso-8859-1?Q?F7N39qWW8NlmT/KYQ5y61RdvaVZKyml0ARqVEXYlIeuxCG1QphiaftYuoA?=
 =?iso-8859-1?Q?x+tO8LgZqbaQlIDBPIVPpl6Feyz7UHtYo06UgdWoYTDa2fw2bUEFrnYdg4?=
 =?iso-8859-1?Q?PRbSSYOXyXeaIMjoCEmyYDfcIumTGX6xLwZUZcMA+4PM8UnpV5+uyk+9Iz?=
 =?iso-8859-1?Q?ltgtdZyTwgzFPd4funjN5Cr162/tI5Q41QV/SRH1qqOokIwpKqpGWgaBke?=
 =?iso-8859-1?Q?ZIg5b96RzQ8TNukSI6oIMlSO0esMvdk=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: PAVPR03MB10102.eurprd03.prod.outlook.com
X-MS-Exchange-CrossTenant-Network-Message-Id: a5dadb01-ed72-404c-024e-08de964082b3
X-MS-Exchange-CrossTenant-originalarrivaltime: 09 Apr 2026 14:01:34.6597
 (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: xc4XkSyo2nbA77++RX3g6Gfgxb1TsxTYBD5Y1tuk7/8+ygXYkkd23AxMny3v0/aJPfPhXQAzg7kbNakZQH6xeg==
X-MS-Exchange-Transport-CrossTenantHeadersStamped: PA3PR03MB10964
X-purgate-ID: tlsNG-33051d/1775743296-C9D3CC9A-6EB0357B/0/0
X-purgate-type: clean
X-purgate-size: 3434

From: Stewart Hildebrand <stewart.hildebrand@amd.com>

Emulate guest BAR register values based on PF BAR values for VFs.
This allows creating a guest view of the normal BAR registers and emulates
the size and properties as it is done during PCI device enumeration by
the guest.

Expose VID/DID and class/revision to the guest.

Note, that VFs ROM BAR is read-only and is all zeros, but VF may provide
access to the PFs ROM via emulation and is not implemented.

Signed-off-by: Stewart Hildebrand <stewart.hildebrand@amd.com>
Signed-off-by: Mykyta Poturai <mykyta_poturai@epam.com>
---
v2->v3:
* don't emulate VID/DID registers
* replace ifdef with IS_ENABLED

v1->v2:
* remove VF register handlers covered by init_header
* set guest addr unconditionally
---
 xen/drivers/vpci/sriov.c | 52 ++++++++++++++++++++++++++++++++++++++++
 1 file changed, 52 insertions(+)

diff --git a/xen/drivers/vpci/sriov.c b/xen/drivers/vpci/sriov.c
index ec6a7b84d5..b43a2b26d3 100644
--- a/xen/drivers/vpci/sriov.c
+++ b/xen/drivers/vpci/sriov.c
@@ -211,6 +211,58 @@ int vpci_vf_init_header(struct pci_dev *vf_pdev)
     sriov_pos =3D pci_find_ext_capability(pf_pdev, PCI_EXT_CAP_ID_SRIOV);
     ctrl =3D pci_conf_read16(pf_pdev->sbdf, sriov_pos + PCI_SRIOV_CTRL);
=20
+    if ( IS_ENABLED(CONFIG_HAS_VPCI_GUEST_SUPPORT) &&
+         pf_pdev->domain !=3D vf_pdev->domain )
+    {
+        struct vpci_bar *bars =3D vf_pdev->vpci->header.bars;
+
+        rc =3D vpci_add_register(vf_pdev->vpci, vpci_hw_read16, NULL,
+                               PCI_VENDOR_ID, 2, NULL);
+        if ( rc )
+            return rc;
+
+        rc =3D vpci_add_register(vf_pdev->vpci, vpci_hw_read16, NULL,
+                               PCI_DEVICE_ID, 2, NULL);
+        if ( rc )
+            return rc;
+
+        /* Hardcode multi-function device bit to 0 */
+        rc =3D vpci_add_register(vf_pdev->vpci, vpci_read_val, NULL,
+                               PCI_HEADER_TYPE, 1,
+                               (void *)PCI_HEADER_TYPE_NORMAL);
+        if ( rc )
+            return rc;
+
+        rc =3D vpci_add_register(vf_pdev->vpci, vpci_hw_read32, NULL,
+                               PCI_CLASS_REVISION, 4, NULL);
+        if ( rc )
+            return rc;
+
+        for ( unsigned int i =3D 0; i < PCI_SRIOV_NUM_BARS; i++ )
+        {
+            switch ( pf_pdev->vpci->sriov->vf_bars[i].type )
+            {
+            case VPCI_BAR_MEM32:
+            case VPCI_BAR_MEM64_LO:
+            case VPCI_BAR_MEM64_HI:
+                rc =3D vpci_add_register(vf_pdev->vpci, vpci_guest_mem_bar=
_read,
+                                       vpci_guest_mem_bar_write,
+                                       PCI_BASE_ADDRESS_0 + i * 4, 4, &bar=
s[i]);
+                if ( rc )
+                    return rc;
+                break;
+
+            default:
+                rc =3D vpci_add_register(vf_pdev->vpci, vpci_read_val, NUL=
L,
+                                       PCI_BASE_ADDRESS_0 + i * 4, 4,
+                                       (void *)0);
+                if ( rc )
+                    return rc;
+                break;
+            }
+        }
+    }
+
     if ( (pf_pdev->domain =3D=3D vf_pdev->domain) && (ctrl & PCI_SRIOV_CTR=
L_MSE) )
     {
         rc =3D vpci_modify_bars(vf_pdev, PCI_COMMAND_MEMORY, false);
--=20
2.51.2


From xen-devel-bounces@lists.xenproject.org Thu Apr 09 14:01:41 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 09 Apr 2026 14:01:41 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1277473.1562664 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wApww-0004QZ-74; Thu, 09 Apr 2026 14:01:38 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1277473.1562664; Thu, 09 Apr 2026 14: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 1wApww-0004P1-0W; Thu, 09 Apr 2026 14:01:38 +0000
Received: by outflank-mailman (input) for mailman id 1277473;
 Thu, 09 Apr 2026 14:01:36 +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 1wApwu-0004KK-Ee
 for xen-devel@lists.xenproject.org; Thu, 09 Apr 2026 14:01:36 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wApwt-009p7l-Qj
 for xen-devel@lists.xenproject.org; Thu, 09 Apr 2026 16:01:35 +0200
Received: from [10.42.69.10] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <Mykyta_Poturai@epam.com>)
 id 69d7b13f-2eae-0a2a0a5409dd-0a2a450ad274-0
 for <xen-devel@lists.xenproject.org>; Thu, 09 Apr 2026 16:01:35 +0200
Received: from [52.101.66.132]
 (helo=DUZPR83CU001.outbound.protection.outlook.com)
 by tlsNG-4011c0.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.0)
 (envelope-from <Mykyta_Poturai@epam.com>)
 id 69d7b13e-ee98-0a2a450a0019-34654284bb10-5
 for <xen-devel@lists.xenproject.org>; Thu, 09 Apr 2026 16:01:35 +0200
Received: from PAVPR03MB10102.eurprd03.prod.outlook.com
 (2603:10a6:102:30d::12) by PA3PR03MB10964.eurprd03.prod.outlook.com
 (2603:10a6:102:4b2::10) with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9769.42; Thu, 9 Apr
 2026 14:01:33 +0000
Received: from PAVPR03MB10102.eurprd03.prod.outlook.com
 ([fe80::b8c6:f37a:987a:beb]) by PAVPR03MB10102.eurprd03.prod.outlook.com
 ([fe80::b8c6:f37a:987a:beb%5]) with mapi id 15.20.9769.016; Thu, 9 Apr 2026
 14:01: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=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=j4mzQz/OxV9ZzK4qNByiRxA7LFCnSRHxgN/I0V6cV5EkXJ9uBQKvxDXPw9eXBXeAEJmwTahhhjU/aPJVasuafEaY8YEj+QlDQ22pShFFByw36DoP8q8tTcbvJP4ylWgfairMu90qdp+LN0syuay/1wsdkwneVgYifjt8LEdF7O6FcVdWk13mrtZqpLVKN3NTc6M6tW7uaj2+7tzP41o3VqO54s4EDqw1PYF2REQhub5fCYUtAzBffw0itQN/F/OHK4lnaeIhWEitir9rBxrlJnt2cIyjMw9iA5qXPTKbJQJBb7ZMeIGcymHcXayjuQXT6cG6HelQ97956lmppsoEIQ==
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com;
 s=arcselector10001;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1;
 bh=hPQVTLxWRQ60hfmvN0+wWwI02S8IMGs3j9kDRZXC1Zk=;
 b=FtEIonZBZ+TO/K8h+BPegSrNorlxnkiMO7RVpTLUctEWL5RsxqEGB01hFYLqw0G21maoN0Jxmnj5KKPxgp2W9b9SQnhkQwo2Y/C3vQGPwEsX5vE4/JubfSS88b0U7IakCSP1C84JmJRia2+OLIb6EvhhBkjXUJQ6x2zvmjf3gRVW5WJ4Lo/f8rIxL1tz0gbkbytNZbnosT5CGM68qlgscOmdtBeI22/hxNCgxHfCxdRxwFfGl+okKcNntcEagqrS1vPrumg6ekqxISc9pL4P+Kk7Tgy6YeHDdXdpIWT/ImJG3U/S8k4WImzKKlBAuOz+eQo2snzD6bopCHdMN8AlYw==
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=hPQVTLxWRQ60hfmvN0+wWwI02S8IMGs3j9kDRZXC1Zk=;
 b=V6n0mairp1qgBp982owTpF8ibdcIRKTUhc6TJNjE2mAb9m6tcOkzIpaft3p3OQOcEKQRBXj/ajHnLZnxSNjmeu8YC1rvoqCEJ8QgcIjgytRLeFWgkicc23M+55zoVCUo5q5yqsJyF8xEHNxm/qplcd7ued0ysNY3hX1Zw/CSaQshhCR5aeAlO3sE60EZbLZtlvbHrV3G0OzEA57g4UzrGNz8vsagjZqO/qGSE/b8FS5cJXu0lyTAaN00fgYy/4arCRvzm+5082xxjFH4okFTUesJz7zLKX4z8g1w9GuJeQKE+4UOIiOR39zoWsQMWHCxdhPUIHPl+SxjKdKWu5H+Iw==
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.pau@citrix.com>, Stefano Stabellini <sstabellini@kernel.org>, Stewart
 Hildebrand <stewart.hildebrand@amd.com>, Mykyta Poturai
	<Mykyta_Poturai@epam.com>
Subject: [PATCH v3 3/7] vpci: Use pervcpu ranges for BAR mapping
Thread-Topic: [PATCH v3 3/7] vpci: Use pervcpu ranges for BAR mapping
Thread-Index: AQHcyClfMSASW2EWZE+braifNCmgUg==
Date: Thu, 9 Apr 2026 14:01:33 +0000
Message-ID:
 <51223761a1f2b8f1e901062d1e59dad934300f0e.1775742115.git.mykyta_poturai@epam.com>
References: <cover.1775742115.git.mykyta_poturai@epam.com>
In-Reply-To: <cover.1775742115.git.mykyta_poturai@epam.com>
Accept-Language: en-US
Content-Language: en-US
X-MS-Has-Attach:
X-MS-TNEF-Correlator:
authentication-results: dkim=none (message not signed)
 header.d=none;dmarc=none action=none header.from=epam.com;
x-ms-publictraffictype: Email
x-ms-traffictypediagnostic: PAVPR03MB10102:EE_|PA3PR03MB10964:EE_
x-ms-office365-filtering-correlation-id: 611f577e-c472-4751-c8e5-08de964081f1
x-ms-exchange-senderadcheck: 1
x-ms-exchange-antispam-relay: 0
x-microsoft-antispam:
 BCL:0;ARA:13230040|366016|1800799024|376014|38070700021|22082099003|56012099003|18002099003;
x-microsoft-antispam-message-info:
 jLMR4m5QTdjyZ7A5jFX7KutZ3xNHlx7KSFZwRfSuOdgsAye266cVXDZ2vyd6YNGg0wM9uUrQM9drY43/o6kKK/4IgdWXO4f7NdgfYLmRjtOCA3PZe7TjkqIj/6PjTj7DUFZbl28KpqA+RkeCWhYdB+hGnU79/iddN8jQfsiM/CHc3Qe7msJ0s0S9OvSUmi+3biQHtlMt6Zwz+XnmJrjomFTYgmO+oFfEggq/zAEeaafLasMWwgTbqO77x9miE5G92ThQ+tdIC5j1bMW64bwRwCfpPE6Upce5mRON/UzOYe632gg8l8NTNzPsPi8uLz3wHueoTyGg2xClkyCxynaZba+d6WmXH7EVerE9A3+D91RIYHV/CV27ydi8cwBatEMrnzILrc9WIFsLkWiQxLDPrsj/GurZYjQjzeSuhVRD8kvvEp6WMmSv2A8QS1cIz+hjvGesQnWO7iTzsFTof7BfODwBm901WM10i26gLZmACGPbyxMHP9yeYBwW0G0Df7rVuIxXcEvTjgLOHb2XDjiodjfw0cP2r9x4UT9iXGMtGwbKODZfS8Uz+lGGv9j2Le7gn9pr4dX+e9PUcVLbukECaSjtiPdqZ+98mADbz7tmKXeZhU/JWMKT17gI38V0Uopdv260U3YhT9Yz90sQ9sl6q2ouErphI/E2XD5fp2vI8cr0f7FnfHFtyFgHMdjoJZiE2r1Lf/PrCX9hJCJ782NhzrEdgWjEsAFbHHOsqzyKcY3HV9ul67oYVdo6uPSMZBz4
x-forefront-antispam-report:
 CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:PAVPR03MB10102.eurprd03.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(366016)(1800799024)(376014)(38070700021)(22082099003)(56012099003)(18002099003);DIR:OUT;SFP:1102;
x-ms-exchange-antispam-messagedata-chunkcount: 1
x-ms-exchange-antispam-messagedata-0:
 =?iso-8859-1?Q?3BEZxaFIdID4k2Ca3BTRhz53SQPnMzUqYgM0ZuTvJiitm0/Y0V7RiJlY+S?=
 =?iso-8859-1?Q?DEbe9FCcR1gcliRNlLmvVPO91sKaAByNn65mT5O9t3/CkRMSouixSKGmuQ?=
 =?iso-8859-1?Q?G0uahcmO3RO5585+JWokCgjnAzglWMabSUCLq2DdbXYF3HDG79u4jC1oXt?=
 =?iso-8859-1?Q?XEN00igOvp+G/nSYRJLTogOHxr2WO3pSVBMJVP6VTEz4lblTO2AhnvG+YA?=
 =?iso-8859-1?Q?makkGtEe4d1TNNlrlKh2Bl9tZwZzRZpMFM4i3YEdufulv/1/d1FiEKaz10?=
 =?iso-8859-1?Q?tWAXAB52Fuh5dqKCalrcks2Bk+pApiblYVCEWT5U6MGDXutbRqkkkazZXu?=
 =?iso-8859-1?Q?Rp00JYlhgUEfIYdKF7K6WBDcGFx6FrDo1bagW4ErAz1d4f63hG43FrzjDO?=
 =?iso-8859-1?Q?NvLE3rWfxMqQlFdDyPIunVzWoStl9fHip7pkQMDeN556jNGOlsMETcLOwK?=
 =?iso-8859-1?Q?Soj/NPk4UMLxdK4XcqHUpdYUsFiB2WMH3xHjVlWKZBxKwJ3DUqJ9MVs2+k?=
 =?iso-8859-1?Q?WbrhE3nVGJAkc4fxVFXDq7vY+3dr2NfLMkDPrA9bSi3VkB3genIQu9OYtx?=
 =?iso-8859-1?Q?2UgWQy+B5ttsmI/cZ+8ctN3qL8gf2ZPdvzp8NZ2H9DBn792Hli9KlXk771?=
 =?iso-8859-1?Q?f/w1pIq0JMljdokrP7esyBb7RxLwEDqt2KRWq9Kq0gkJMyp0ParI1r1TPd?=
 =?iso-8859-1?Q?bpIjDMKj+kZzifP1/QF+v+vFL7QvhvZh5PqxxauZWHudj2pphFiCtIV/Uq?=
 =?iso-8859-1?Q?QHNIqWQT0hWsEG+Nh/8KJZKRK/VYVGxh86quyIG61mkZ0h/9qOacxe+2Hs?=
 =?iso-8859-1?Q?FRlJfMnxGU+S6TDUZVkm3gMrkBMHYQ4h8Nd3B3kyrDvvi8iAj+LeXWui5E?=
 =?iso-8859-1?Q?ajO0mRz/KhMHuWRyPNBIaOQyGcno2zXoZVGU0XRA1+GvnO28my3BtNx9PV?=
 =?iso-8859-1?Q?+AwqyFNwiGJc3tSxcsO6zPhzJI3Ysm6CjoR9qLqETTBOq0Ik7dnq3V1cba?=
 =?iso-8859-1?Q?7HmC9yIQSumH0Ar+MuxWwBIOFScTlWrAw4ht4w/hHAqBGsdCvqlEKd2I7a?=
 =?iso-8859-1?Q?vuektW+qBs/nh2Ww93Q/ASnXJueMq1Ofszg0UZAghxLXzDgD59fSfOvfAZ?=
 =?iso-8859-1?Q?aAJdE6+/RUlfOiyS+w0b6VDhdE+n29XsoKTC8xi8RscwHECEIRy2tu10NT?=
 =?iso-8859-1?Q?1g6vva6leKciAWM0TgBvfabzG9OV9bQvLdV/gUHQMNZ4SzDXATHxGC2XiQ?=
 =?iso-8859-1?Q?bmez3a7gnkxHuEvTyRNdk5GCh5ezuUDtNACUKNBSR72+4N4eYIK9afU/hi?=
 =?iso-8859-1?Q?p4SxlbC8jjOjPvdn/9fRRKYLKp1FXW+dgSx7fgB5WHwc68JIPG1MT6Lhxb?=
 =?iso-8859-1?Q?/ibqwOYW1O0uWzX7a7h3ZK3ZNBD9nMgy2DEROtTbv7TyAznr1vw3oooiRu?=
 =?iso-8859-1?Q?7LC+P/o3mJK1I/RTCMmWuoPTv7dmRLXcs6O8FXwdbSX/xZr5iCqVbxUpKK?=
 =?iso-8859-1?Q?PraCJ1t1z2RwENtzwcEJBuPT/yR5DnZ1mbDPGS8t0fwdFKT+tLGZ11wR7v?=
 =?iso-8859-1?Q?rf6rpVThtQ2sWqqshOf3dQUPxzOgiGcSLod1J5o8C5IpJMYe0CzhxnKjVj?=
 =?iso-8859-1?Q?twic3u7YWS1j0k5cUM25ca6GIQZA/JjNOj/Zzna+aMISLfh2ny7S/51P4D?=
 =?iso-8859-1?Q?SDY0UccjBZ5yZYK1PIo7ft9IiaF+3eeMweOs6hK9BvH47mwbNtfQF672QH?=
 =?iso-8859-1?Q?qgFwVZG1Zg0brHYf/jkIzyc/nBWGk5vk1kyiX6IYcsteBOTCOt+sHakhVt?=
 =?iso-8859-1?Q?hXBJimYoPCttYxonejt88GfbPaJoJV8=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: PAVPR03MB10102.eurprd03.prod.outlook.com
X-MS-Exchange-CrossTenant-Network-Message-Id: 611f577e-c472-4751-c8e5-08de964081f1
X-MS-Exchange-CrossTenant-originalarrivaltime: 09 Apr 2026 14:01:33.4406
 (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: rGfq3kFHgn8zDDulq8LZ5FpblFsvcYG9XHoaSxoc62tW+8PCNJZ8uzTwLig00532d2XDOKt6hyeWPCGuHzLCOA==
X-MS-Exchange-Transport-CrossTenantHeadersStamped: PA3PR03MB10964
X-purgate-ID: tlsNG-4011c0/1775743295-BDB550B1-0B871F89/0/0
X-purgate-type: clean
X-purgate-size: 13892

From: Mykyta Poturai <Mykyta_Poturai@epam.com>

There is no need to store ranges for each PCI device, as they are only
used during the mapping/unmapping process and can be reused for each
device. This also allows to avoid the need to allocate and destroy
rangesets for each device.

Move the rangesets from struct vpci_bar to struct vpci_vcpu and perform
(de-)allocation with vcpu (de-)allocation. Introduce RANGESET_DESTROY()
macro to free a rangeset and set the pointer to NULL.

Amends: 622bdd962822 ("vpci/header: handle p2m range sets per BAR")
Signed-off-by: Mykyta Poturai <mykyta_poturai@epam.com>
Signed-off-by: Stewart Hildebrand <stewart.hildebrand@amd.com>
---
v2->v3:
* synced with BAR write with memory decoding enabled series[1]
* add Amends tag
* remove unused variable i due to rebasing over 998060dd9101 ("vPCI:
  move vpci_init_capabilities() to a separate file")
* enclose entire struct vpci_vcpu inside #ifdef __XEN__
* s/bar_mem/mem/
* use ARRAY_SIZE
* put init/destroy in functions
* only allocate for domains with vPCI and idle domain
* replace 'if ( !mem ) continue;' with ASSERT

v1->v2
* new patch

[1]: https://patchew.org/Xen/20260406191203.97662-1-stewart.hildebrand@amd.=
com/
---
 xen/common/domain.c        |  5 +++
 xen/drivers/vpci/header.c  | 67 ++++++++++++++------------------------
 xen/drivers/vpci/vpci.c    | 34 ++++++++++++++++---
 xen/include/xen/rangeset.h |  7 ++++
 xen/include/xen/vpci.h     | 10 ++++--
 5 files changed, 73 insertions(+), 50 deletions(-)

diff --git a/xen/common/domain.c b/xen/common/domain.c
index bb9e210c28..5ef7db8f09 100644
--- a/xen/common/domain.c
+++ b/xen/common/domain.c
@@ -455,6 +455,8 @@ static int vcpu_teardown(struct vcpu *v)
  */
 static void vcpu_destroy(struct vcpu *v)
 {
+    vpci_vcpu_destroy(v);
+
     free_vcpu_struct(v);
 }
=20
@@ -512,6 +514,9 @@ struct vcpu *vcpu_create(struct domain *d, unsigned int=
 vcpu_id)
     if ( arch_vcpu_create(v) !=3D 0 )
         goto fail_sched;
=20
+    if ( vpci_vcpu_init(v) )
+        goto fail_sched;
+
     d->vcpu[vcpu_id] =3D v;
     if ( vcpu_id !=3D 0 )
     {
diff --git a/xen/drivers/vpci/header.c b/xen/drivers/vpci/header.c
index 5d5ba5c016..5bfb541b6a 100644
--- a/xen/drivers/vpci/header.c
+++ b/xen/drivers/vpci/header.c
@@ -196,6 +196,7 @@ bool vpci_process_pending(struct vcpu *v)
     for ( i =3D 0; i < ARRAY_SIZE(header->bars); i++ )
     {
         struct vpci_bar *bar =3D &header->bars[i];
+        struct rangeset *mem =3D v->vpci.mem[i];
         struct map_data data =3D {
             .d =3D v->domain,
             .map =3D v->vpci.cmd & PCI_COMMAND_MEMORY,
@@ -203,10 +204,10 @@ bool vpci_process_pending(struct vcpu *v)
         };
         int rc;
=20
-        if ( rangeset_is_empty(bar->mem) )
+        if ( rangeset_is_empty(mem) )
             continue;
=20
-        rc =3D rangeset_consume_ranges(bar->mem, map_range, &data);
+        rc =3D rangeset_consume_ranges(mem, map_range, &data);
=20
         if ( rc =3D=3D -ERESTART )
         {
@@ -224,8 +225,8 @@ bool vpci_process_pending(struct vcpu *v)
=20
             /* Clean all the rangesets */
             for ( i =3D 0; i < ARRAY_SIZE(header->bars); i++ )
-                if ( !rangeset_is_empty(header->bars[i].mem) )
-                     rangeset_purge(header->bars[i].mem);
+                if ( !rangeset_is_empty(v->vpci.mem[i]) )
+                     rangeset_purge(v->vpci.mem[i]);
=20
             v->vpci.pdev =3D NULL;
=20
@@ -260,13 +261,14 @@ static int __init apply_map(struct domain *d, const s=
truct pci_dev *pdev,
     for ( i =3D 0; i < ARRAY_SIZE(header->bars); i++ )
     {
         struct vpci_bar *bar =3D &header->bars[i];
+        struct rangeset *mem =3D current->vpci.mem[i];
         struct map_data data =3D { .d =3D d, .map =3D true, .bar =3D bar }=
;
=20
-        if ( rangeset_is_empty(bar->mem) )
+        if ( rangeset_is_empty(mem) )
             continue;
=20
-        while ( (rc =3D rangeset_consume_ranges(bar->mem, map_range,
-                                              &data)) =3D=3D -ERESTART )
+        while ( (rc =3D rangeset_consume_ranges(mem, map_range, &data)) =
=3D=3D
+                -ERESTART )
         {
             /*
              * It's safe to drop and reacquire the lock in this context
@@ -331,13 +333,13 @@ int vpci_modify_bars(const struct pci_dev *pdev, uint=
16_t cmd, bool rom_only)
     for ( i =3D 0; i < ARRAY_SIZE(header->bars); i++ )
     {
         struct vpci_bar *bar =3D &header->bars[i];
+        struct rangeset *mem =3D current->vpci.mem[i];
         unsigned long start =3D PFN_DOWN(bar->addr);
         unsigned long end =3D PFN_DOWN(bar->addr + bar->size - 1);
         unsigned long start_guest =3D PFN_DOWN(bar->guest_addr);
         unsigned long end_guest =3D PFN_DOWN(bar->guest_addr + bar->size -=
 1);
=20
-        if ( !bar->mem )
-            continue;
+        ASSERT(mem);
=20
         if ( !MAPPABLE_BAR(bar) ||
              (rom_only ? bar->type !=3D VPCI_BAR_ROM
@@ -354,7 +356,7 @@ int vpci_modify_bars(const struct pci_dev *pdev, uint16=
_t cmd, bool rom_only)
             continue;
         }
=20
-        ASSERT(rangeset_is_empty(bar->mem));
+        ASSERT(rangeset_is_empty(mem));
=20
         /*
          * Make sure that the guest set address has the same page offset
@@ -369,7 +371,7 @@ int vpci_modify_bars(const struct pci_dev *pdev, uint16=
_t cmd, bool rom_only)
             return -EINVAL;
         }
=20
-        rc =3D rangeset_add_range(bar->mem, start_guest, end_guest);
+        rc =3D rangeset_add_range(mem, start_guest, end_guest);
         if ( rc )
         {
             printk(XENLOG_G_WARNING "Failed to add [%lx, %lx]: %d\n",
@@ -380,12 +382,12 @@ int vpci_modify_bars(const struct pci_dev *pdev, uint=
16_t cmd, bool rom_only)
         /* Check for overlap with the already setup BAR ranges. */
         for ( j =3D 0; j < i; j++ )
         {
-            struct vpci_bar *prev_bar =3D &header->bars[j];
+            struct rangeset *prev_mem =3D current->vpci.mem[j];
=20
-            if ( rangeset_is_empty(prev_bar->mem) )
+            if ( rangeset_is_empty(prev_mem) )
                 continue;
=20
-            rc =3D rangeset_remove_range(prev_bar->mem, start_guest, end_g=
uest);
+            rc =3D rangeset_remove_range(prev_mem, start_guest, end_guest)=
;
             if ( rc )
             {
                 gprintk(XENLOG_WARNING,
@@ -395,7 +397,7 @@ int vpci_modify_bars(const struct pci_dev *pdev, uint16=
_t cmd, bool rom_only)
             }
         }
=20
-        rc =3D pci_sanitize_bar_memory(bar->mem);
+        rc =3D pci_sanitize_bar_memory(mem);
         if ( rc )
         {
             gprintk(XENLOG_WARNING,
@@ -412,14 +414,14 @@ int vpci_modify_bars(const struct pci_dev *pdev, uint=
16_t cmd, bool rom_only)
         unsigned long end =3D PFN_DOWN(vmsix_table_addr(pdev->vpci, i) +
                                      vmsix_table_size(pdev->vpci, i) - 1);
=20
-        for ( j =3D 0; j < ARRAY_SIZE(header->bars); j++ )
+        for ( j =3D 0; j < ARRAY_SIZE(current->vpci.mem); j++ )
         {
-            const struct vpci_bar *bar =3D &header->bars[j];
+            struct rangeset *mem =3D current->vpci.mem[j];
=20
-            if ( rangeset_is_empty(bar->mem) )
+            if ( rangeset_is_empty(mem) )
                 continue;
=20
-            rc =3D rangeset_remove_range(bar->mem, start, end);
+            rc =3D rangeset_remove_range(mem, start, end);
             if ( rc )
             {
                 gprintk(XENLOG_WARNING,
@@ -469,8 +471,9 @@ int vpci_modify_bars(const struct pci_dev *pdev, uint16=
_t cmd, bool rom_only)
                 for ( j =3D 0; j < ARRAY_SIZE(header->bars); j++)
                 {
                     const struct vpci_bar *bar =3D &header->bars[j];
+                    struct rangeset *mem =3D current->vpci.mem[j];
=20
-                    if ( !rangeset_overlaps_range(bar->mem, start, end) ||
+                    if ( !rangeset_overlaps_range(mem, start, end) ||
                          /*
                           * If only the ROM enable bit is toggled check ag=
ainst
                           * other BARs in the same device for overlaps, bu=
t not
@@ -481,7 +484,7 @@ int vpci_modify_bars(const struct pci_dev *pdev, uint16=
_t cmd, bool rom_only)
                           bar->type =3D=3D VPCI_BAR_ROM) )
                         continue;
=20
-                    rc =3D rangeset_remove_range(bar->mem, start, end);
+                    rc =3D rangeset_remove_range(mem, start, end);
                     if ( rc )
                     {
                         gprintk(XENLOG_WARNING,
@@ -734,18 +737,6 @@ static void cf_check rom_write(
     }
 }
=20
-static int bar_add_rangeset(const struct pci_dev *pdev, struct vpci_bar *b=
ar,
-                            unsigned int i)
-{
-    char str[32];
-
-    snprintf(str, sizeof(str), "%pp:BAR%u", &pdev->sbdf, i);
-
-    bar->mem =3D rangeset_new(pdev->domain, str, RANGESETF_no_print);
-
-    return !bar->mem ? -ENOMEM : 0;
-}
-
 int vpci_init_header(struct pci_dev *pdev)
 {
     uint16_t cmd;
@@ -856,10 +847,6 @@ int vpci_init_header(struct pci_dev *pdev)
         else
             bars[i].type =3D VPCI_BAR_MEM32;
=20
-        rc =3D bar_add_rangeset(pdev, &bars[i], i);
-        if ( rc )
-            goto fail;
-
         rc =3D pci_size_mem_bar(pdev->sbdf, reg, &addr, &size,
                               (i =3D=3D num_bars - 1) ? PCI_BAR_LAST : 0);
         if ( rc < 0 )
@@ -913,12 +900,6 @@ int vpci_init_header(struct pci_dev *pdev)
                                4, rom);
         if ( rc )
             rom->type =3D VPCI_BAR_EMPTY;
-        else
-        {
-            rc =3D bar_add_rangeset(pdev, rom, num_bars);
-            if ( rc )
-                goto fail;
-        }
     }
     else if ( !is_hwdom )
     {
diff --git a/xen/drivers/vpci/vpci.c b/xen/drivers/vpci/vpci.c
index 0ac9ec8b04..d069ca6d9c 100644
--- a/xen/drivers/vpci/vpci.c
+++ b/xen/drivers/vpci/vpci.c
@@ -24,6 +24,35 @@
=20
 #ifdef __XEN__
=20
+void vpci_vcpu_destroy(struct vcpu *v)
+{
+    if ( !has_vpci(v->domain) && !is_idle_domain(v->domain) )
+        return;
+
+    for ( unsigned int i =3D 0; i < ARRAY_SIZE(v->vpci.mem); i++ )
+        RANGESET_DESTROY(v->vpci.mem[i]);
+}
+
+int vpci_vcpu_init(struct vcpu *v)
+{
+    unsigned int i;
+
+    if ( !has_vpci(v->domain) && !is_idle_domain(v->domain) )
+        return 0;
+
+    for ( i =3D 0; i < ARRAY_SIZE(v->vpci.mem); i++ )
+    {
+        char str[32];
+
+        snprintf(str, sizeof(str), "%pv:BAR%u", v, i);
+        v->vpci.mem[i] =3D rangeset_new(v->domain, str, RANGESETF_no_print=
);
+        if ( !v->vpci.mem[i] )
+            return -ENOMEM;
+    }
+
+    return 0;
+}
+
 #ifdef CONFIG_HAS_VPCI_GUEST_SUPPORT
 static int assign_virtual_sbdf(struct pci_dev *pdev)
 {
@@ -89,8 +118,6 @@ struct vpci_register *vpci_get_register(const struct vpc=
i *vpci,
=20
 void vpci_deassign_device(struct pci_dev *pdev)
 {
-    unsigned int i;
-
     ASSERT(rw_is_write_locked(&pdev->domain->pci_lock));
=20
     if ( !has_vpci(pdev->domain) || !pdev->vpci )
@@ -116,9 +143,6 @@ void vpci_deassign_device(struct pci_dev *pdev)
     }
     spin_unlock(&pdev->vpci->lock);
=20
-    for ( i =3D 0; i < ARRAY_SIZE(pdev->vpci->header.bars); i++ )
-        rangeset_destroy(pdev->vpci->header.bars[i].mem);
-
     xfree(pdev->vpci);
     pdev->vpci =3D NULL;
 }
diff --git a/xen/include/xen/rangeset.h b/xen/include/xen/rangeset.h
index 817505badf..f01e00ec92 100644
--- a/xen/include/xen/rangeset.h
+++ b/xen/include/xen/rangeset.h
@@ -40,6 +40,13 @@ struct rangeset *rangeset_new(
 void rangeset_destroy(
     struct rangeset *r);
=20
+/* Destroy a rangeset, and zero the pointer to it. */
+#define RANGESET_DESTROY(r)  \
+    ({                       \
+        rangeset_destroy(r); \
+        (r) =3D NULL;          \
+    })
+
 /*
  * Set a limit on the number of ranges that may exist in set @r.
  * NOTE: This must be called while @r is empty.
diff --git a/xen/include/xen/vpci.h b/xen/include/xen/vpci.h
index 877aa391d1..b55bacbe6e 100644
--- a/xen/include/xen/vpci.h
+++ b/xen/include/xen/vpci.h
@@ -19,6 +19,9 @@
  */
 #define VPCI_MAX_VIRT_DEV       (PCI_SLOT(~0) + 1)
=20
+void vpci_vcpu_destroy(struct vcpu *v);
+int vpci_vcpu_init(struct vcpu *v);
+
 /* Assign vPCI to device by adding handlers. */
 int __must_check vpci_assign_device(struct pci_dev *pdev);
=20
@@ -54,7 +57,6 @@ struct vpci {
             uint64_t guest_addr;
             uint64_t size;
             uint64_t resizable_sizes;
-            struct rangeset *mem;
             enum {
                 VPCI_BAR_EMPTY,
                 VPCI_BAR_IO,
@@ -152,14 +154,15 @@ struct vpci {
 #endif
 };
=20
+#ifdef __XEN__
 struct vpci_vcpu {
     /* Per-vcpu structure to store state while {un}mapping of PCI BARs. */
     const struct pci_dev *pdev;
+    struct rangeset *mem[ARRAY_SIZE(((struct vpci_header *)NULL)->bars)];
     uint16_t cmd;
     bool rom_only : 1;
 };
=20
-#ifdef __XEN__
 void vpci_dump_msi(void);
=20
 /* Arch-specific vPCI MSI helpers. */
@@ -204,6 +207,9 @@ bool vpci_ecam_read(pci_sbdf_t sbdf, unsigned int reg, =
unsigned int len,
 #else /* !CONFIG_HAS_VPCI */
 struct vpci_vcpu {};
=20
+static inline void vpci_vcpu_destroy(struct vcpu *v) { }
+static inline int vpci_vcpu_init(struct vcpu *v) { return 0; }
+
 static inline int vpci_reinit_ext_capabilities(struct pci_dev *pdev)
 {
     return 0;
--=20
2.51.2


From xen-devel-bounces@lists.xenproject.org Thu Apr 09 14:01:41 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 09 Apr 2026 14:01:41 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1277476.1562687 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wApwx-0004xi-NG; Thu, 09 Apr 2026 14:01:39 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1277476.1562687; Thu, 09 Apr 2026 14:01: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 1wApwx-0004vJ-Fs; Thu, 09 Apr 2026 14:01:39 +0000
Received: by outflank-mailman (input) for mailman id 1277476;
 Thu, 09 Apr 2026 14:01:37 +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 1wApwv-0004Kc-CD
 for xen-devel@lists.xenproject.org; Thu, 09 Apr 2026 14:01:37 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wApwt-009WCF-6K
 for xen-devel@lists.xenproject.org; Thu, 09 Apr 2026 16:01:36 +0200
Received: from [10.42.69.6] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <Mykyta_Poturai@epam.com>)
 id 69d7b13b-5cb7-0a2a0a5109dd-0a2a4506a7c2-16
 for <xen-devel@lists.xenproject.org>; Thu, 09 Apr 2026 16:01:36 +0200
Received: from [52.101.72.96]
 (helo=AM0PR02CU008.outbound.protection.outlook.com)
 by tlsNG-16d1c6.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.0)
 (envelope-from <Mykyta_Poturai@epam.com>)
 id 69d7b140-0df0-0a2a45060019-34654860c82b-3
 for <xen-devel@lists.xenproject.org>; Thu, 09 Apr 2026 16:01:36 +0200
Received: from PAVPR03MB10102.eurprd03.prod.outlook.com
 (2603:10a6:102:30d::12) by PA1PR03MB10891.eurprd03.prod.outlook.com
 (2603:10a6:102:485::6) with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9769.17; Thu, 9 Apr
 2026 14:01:34 +0000
Received: from PAVPR03MB10102.eurprd03.prod.outlook.com
 ([fe80::b8c6:f37a:987a:beb]) by PAVPR03MB10102.eurprd03.prod.outlook.com
 ([fe80::b8c6:f37a:987a:beb%5]) with mapi id 15.20.9769.016; Thu, 9 Apr 2026
 14:01: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=qvvQM1ljAODjqMe9aO2vS7qElbEu2RBqyVURteyr+NdvnwIkcMCgydISPR3C6HtCJVFx1VJwN0Gz4ZTXgYEzGgtftjneeDSiIUOFhGRH6z2NfQ3L3xnWzqYlBEve0qlxPlrvBNQktDAndUmZB2vISJfU9vdSdT++Jq7Kbv/jENeu2ZuG6zxxdQ69dHwQaMcWr6D4nNGjlhtn5FajTMH70NLOi3m9I117Bpk5sK1swo9qeDPACvbgGI4wQL4Fxt1b1AivkGxAE2EXYARrLAAJrybrNu2ALBUWbO/xbmSb/9oicbgr62oZGmZSlEkJ33rXr2IcYVIOYThpolVPTHIVxw==
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com;
 s=arcselector10001;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1;
 bh=QmeeysoLMrlqQddvQrdQFzA3r+gJYcNbbmdk3M+1ksc=;
 b=EcAUIRMI9D9b8nPS2H5ayMFQ6PbQkUhRnyFPDttAvv13Gp0VhW6LCcZpKG8Uuj/gq0H/fwZdWk8PlDMZAqXhazF/U8E+/yAfY1gJ9Wal5i0+Dyg0plgLRzIe6HyhyXVSXybPKpTiig38pjNymz4UP/SMfeNO5X8UJgmfYOPjudjl89tQZML8XMgCvbukJmpSCEX9eGjLRMLjch5tlH3evEDurIaYhSoaRNUZCeMHQmQMoO5TWRGFoG1fMt9MeTElRPy0HYA/kozYrUOm/pgSsfakaj/n6MUPAmq4IpM1RECQoHgJ1W3BDOzaDqeIr9H6uw/TrqBToKlKRj2BNJtseQ==
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=QmeeysoLMrlqQddvQrdQFzA3r+gJYcNbbmdk3M+1ksc=;
 b=faqTmKnO1qtJvYF5BBkUf8cQTaKi/rcG5md53O2Tyqc6c9fT6Rtw4qG7pv+9z2ugx230bqS+Ihi5eWpdcHzZNG4FBvGz1u+m+eP5mhqb27zHe4fNdb5BNtjiEZrDISsA8eNwdGQcMFeYXXu+PRCnHEEVQBfWf9FOBfpgR6wibT1XNFVHxwis0s4hyI89GFa4+ZzgAd+a3t9koevZ74kO90VFyYIhlhPN2X+gUVmsn6anWd0qVWAVDBljL8m1DXnfIBNuWCjADBC18+vWJS4RgylUetGSNDlONrgoNwu4+g81n/zFAOr20NzkPZ1hFzEyEIzeludNpTSZaTUwblhIMg==
From: Mykyta Poturai <Mykyta_Poturai@epam.com>
To: "xen-devel@lists.xenproject.org" <xen-devel@lists.xenproject.org>
CC: Stewart Hildebrand <stewart.hildebrand@amd.com>,
	=?utf-8?B?Um9nZXIgUGF1IE1vbm7DqQ==?= <roger.pau@citrix.com>, "Daniel P.
 Smith" <dpsmith@apertussolutions.com>, Mykyta Poturai
	<Mykyta_Poturai@epam.com>
Subject: [PATCH v3 5/7] vpci: add SR-IOV support for PVH Dom0
Thread-Topic: [PATCH v3 5/7] vpci: add SR-IOV support for PVH Dom0
Thread-Index: AQHcyClfuk/Yqk/9/E2oGahG1JP+sg==
Date: Thu, 9 Apr 2026 14:01:34 +0000
Message-ID:
 <a0abd984989237d2f36e1628db577fb25af1cdbe.1775742115.git.mykyta_poturai@epam.com>
References: <cover.1775742115.git.mykyta_poturai@epam.com>
In-Reply-To: <cover.1775742115.git.mykyta_poturai@epam.com>
Accept-Language: en-US
Content-Language: en-US
X-MS-Has-Attach:
X-MS-TNEF-Correlator:
authentication-results: dkim=none (message not signed)
 header.d=none;dmarc=none action=none header.from=epam.com;
x-ms-publictraffictype: Email
x-ms-traffictypediagnostic: PAVPR03MB10102:EE_|PA1PR03MB10891:EE_
x-ms-office365-filtering-correlation-id: c81d0706-7d49-4031-055f-08de96408275
x-ms-exchange-senderadcheck: 1
x-ms-exchange-antispam-relay: 0
x-microsoft-antispam:
 BCL:0;ARA:13230040|366016|376014|1800799024|38070700021|56012099003|18002099003|22082099003;
x-microsoft-antispam-message-info:
 Wxvn8yje6+sQZJQVlkHj9TaQj9Md0xmJWpx+ihSZISqQiSnU0sKJNSa9z+fbpr8ReekDUjKJ+soDYG658m3wxaDEYhfOqLVHhGaw1DuZxAR+duh8Bthzd/V8rTjXxOV3C8XgqeqbKmDmWgI+ttm/Icvpsx2p+Ut44a2N2UyLq7TxiDkZerlNNdNFYa9/ViEd+wvNWy2jzPtQxLI8yIeBbMRhR20u3A4wcmqB+v3/TZo0LCCWNzFIuSwIYC0Qh6GiwERRjWUJeqTJ8q8esmNCi3K6kvv80yGocbRR5U8wjqpKMV9tW9ZEzM/oUzQN6sWq8BonrLRIMV/U5mYpCzhVS1vsh1/tFuji6xPrCXfR94jr36t2wvwF7xGe2RFnydnOEl+N9VGkp10SVE92Zo4jxDiFMAorBcM+WEdZfya6V4JPuv/siFCuVvHl2vQRUcba6CA0KuAHbhBU04AAFgMd5U2brwNzMQfK9vyvsgi5d5kmidnPLTXv2uQqLVIFM4RlomMP8v12oaQzD9DW0T7BXvZotOHM9oSyS8o7oh89DVqEHvPTnsYiqJsTTQ9+zJvewScLxBz5b1MS1SS2CbyOkxHexqDhnRj/0AyGDWiyunSDv2Ah5I4lHB+vRgQfs/X+MlwiWjbYSoZ96+0CKKaRqLVKHS1MnGrWe+2zHF/bVLuEbmTVyLAlD1mNcKa1Z7ndWYrQj8oiD1pjqSPT7gnC5y8gh4eEGKSeZz5O36neYUWNjyPpcEGlNB2gGTFZ1vCDERrNHXGeyQ2Q+k7NheGGhCkcpwV8Ep1b4/WPD/xHvd0=
x-forefront-antispam-report:
 CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:PAVPR03MB10102.eurprd03.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(366016)(376014)(1800799024)(38070700021)(56012099003)(18002099003)(22082099003);DIR:OUT;SFP:1102;
x-ms-exchange-antispam-messagedata-chunkcount: 1
x-ms-exchange-antispam-messagedata-0:
 =?utf-8?B?Z2FENDUvcVoyK1g5MW1weldMUXZJcFdhTEx1dmJZMGFUaHRyZGJCdzFZdVJY?=
 =?utf-8?B?a29Gcy9GMUk5RHNGOGlaRjNBSy9zMWdzV1FNOHNRakJOUkwvUEl2bGxVREtD?=
 =?utf-8?B?a0dLUm40ckFLL3pzOEZNK2hVRjBJZ2pCR3c3RHY1WVV4RXNtNjFKMjlDM3cz?=
 =?utf-8?B?RmJNMDIxa202dlovTFhSNGRlWXRqSDNwbWpDUlJEOXBSclpkVERBS3ZGNVE4?=
 =?utf-8?B?NDEzRHRaTWxJUFZYSkt2Sy9QcEZtVUhnbUFuNkF2dnF5NktrWUlCRlpIbmky?=
 =?utf-8?B?eWQ1RkhNUjl4WmlXOUVuOWpwQ0FPd1Y2emlkbEp0enJyazdvVnV2NTBWMHcy?=
 =?utf-8?B?MTIxSWFoeU82L3dQc0trV253OUc4YWcxbUxlMUZiR09POU41NElKTDdWTWZH?=
 =?utf-8?B?QnZDUG51OWlCU0ZxNXZEVjNLVWlGOWV0a1dZV2Zhd2JJVGJYdmYxblhDdHRp?=
 =?utf-8?B?Tlk5RVl3Y21rZXhWSzhTeUUyNldFUW85MGQwUlZqMzFtdWlzV1diVHQyMnhD?=
 =?utf-8?B?MlQxc2tYSWlaVklXdlNZNHhlTGwrSG1EQWRXL0QvbnhSQmcwYzk5SHBISHRF?=
 =?utf-8?B?bGtDY29mRW5QZERDZmV6OUtJUFhiWXBTQnN3L21tREhwd3VRc2VaWUNGdlEw?=
 =?utf-8?B?UnNGTktlRkU0N2JzWGRIM1hZanlQWkwzcEFQL2o2c0tGVU5rRHY5THhEM01a?=
 =?utf-8?B?ZTBLa200ZVZNT1RxWDg0WVBKeUxvUFQwVVBobmVzeUlxMFhsbVJGWUJoYXh6?=
 =?utf-8?B?dWJlNUJqYWZXSGhERWFKQTR4ZmZhVnBJRXNnNC9NN2lUT3l2NFh1SjFiaFU5?=
 =?utf-8?B?bnFaMyszWHlwZHcrWU5CQTZkWktXY0E2SUVPTUd3V29FaFpYRlcrTUxMeHVr?=
 =?utf-8?B?NDlxOStLTlEzY3JuWXhPK1NGN3FpamZFRHpUUGxZZGtaNFVvaVc3VEd6aysz?=
 =?utf-8?B?bjcrMm56aXE2aGRZUXd0MmsxY2IyM0VIRnBycG1lM0VmMTQyaXRGTmtJcnFm?=
 =?utf-8?B?ZVdJQWNPU2NmMTJmYVYzT1N6b3RMcHFtRTcvR3dkMXREZmpTSzc2WlhZZU9Y?=
 =?utf-8?B?TGJLc3BsS1J3bisvOXJpZkE1MVBPUXFhSjhUYTJvcElpMlo4SFdSNFEzZVFJ?=
 =?utf-8?B?eGVONC9tWEZQVFRaTHpseVRIRTdodjNKNzdaTHpoQVNjSUhmYVRQZS85aWJv?=
 =?utf-8?B?MUE3Rm1pc3dlWjlYbHk2RHNiQ01zcjZ5a1dwVlVZRzY1ajZ6M1NCMFVlUFFZ?=
 =?utf-8?B?SWNMdEZYdkZ1TElnZlR0WHVFeWxRQVdPL2I3L3V5VjBNcmpwYkhhWGlKUU04?=
 =?utf-8?B?RzlLcUJGVjIrd0lzdWtGUUN3VEF5dktNOGNmUmE1aHpxbkNmTmpSanBlMmhL?=
 =?utf-8?B?bTYvN2ZrNkxyNzQ3ZWxuV3BRMVEyRDYyKzRZQy9UR0JZbDJOZ1BVVGJNM3F4?=
 =?utf-8?B?d01RSVZKdWRHQVhueVdGSDdETjh2bDlyUldRK2sxL0x4eWxpdGsvTTFIUStp?=
 =?utf-8?B?MVJ1dTVvSHIwVk9BQjFlcWg5azd4T3FuSnZQbit1OG8rUDJKMFJYU1B4ZGhZ?=
 =?utf-8?B?TlhDY0s3WjRZMnp5NjR2UFExQ0Z1TWY4eFNlYVp2d2wydXN4K1NEdEVqeTJQ?=
 =?utf-8?B?ekZXTWMwNlYyckluNWVNZ0s1cTkrQW92ZDI2WUhDTXoxSElaU0ErdGh1Qldx?=
 =?utf-8?B?YUhaMDlSV2pwL2lFd2JtRk05eTFUS3pHT2d4Z2N6Q1dUVE5vbHEzYnA1bXA5?=
 =?utf-8?B?YS9KVmc1VTRydFFBa3RwdWxDQXNzMnRwaS9lV2JoWThlOUQ3SUdrRTVZQ3dW?=
 =?utf-8?B?K1FtTjVlQ2diVFVLVjFQV1E5RklKRVBaMisya3h2aHFJaTQydnZocXVtLzdx?=
 =?utf-8?B?U0RqUVNTN2FVV2l1OTZzMEJ1bFdOQjhNN1JuN3pCNmhSRWxDUDlVY0FwRDNU?=
 =?utf-8?B?dURwcllEMUswTTdtVVFmZGhoQ0w2NjgzVzVrZ0IyVXlrS1RGdTFWcDBVUmhr?=
 =?utf-8?B?cWZoQXNGWnowbmdHQzVPU2Z4aFB6UlN4eEhEYnJQaDdIVHZIY1JuQzFoN1FP?=
 =?utf-8?B?SGZjMVpHVW1aWVVKOTZ1bkNtUjBZWWxnOVNuNkNsaklSTVZxdmsvenpobXl2?=
 =?utf-8?B?b1Q5ZHIvazZsK1ZUT2ZHM1pXemlMZ1ZaSkZIYzhnenQyZ3V5a2UrUkxObXZr?=
 =?utf-8?B?dkp3RHdyMGZWY29WSFFHMUUrbExRcUxFZ1EzRUtUNTVxdENxNGo2d0lXbmhX?=
 =?utf-8?B?YzBvdERVWHcxSHlOc0xQSHpCZzdVdG9hVk4zVTJjbnc5a1NlcWdZZmViSWVZ?=
 =?utf-8?B?MUxhT0s5aGp0WllSVWY1ZUhQY2ZBSmlMbDRMbHR1VWt1eWFVZWVmMkJpZGR3?=
 =?utf-8?Q?YdQVf4pmdVwcExdQ=3D?=
Content-Type: text/plain; charset="utf-8"
Content-ID: <A226BEDB83A4ED45BCA258951E09105E@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: PAVPR03MB10102.eurprd03.prod.outlook.com
X-MS-Exchange-CrossTenant-Network-Message-Id: c81d0706-7d49-4031-055f-08de96408275
X-MS-Exchange-CrossTenant-originalarrivaltime: 09 Apr 2026 14:01:34.3371
 (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: 4cXrbrxWbIxS8fFLnyiJ10C0mlCFtkgMSIdgrvDfCHp0K8VdTCRUCBT4qnzwyAixEaU38YnGzdr+nKAvEM80TQ==
X-MS-Exchange-Transport-CrossTenantHeadersStamped: PA1PR03MB10891
X-purgate-ID: tlsNG-16d1c6/1775743296-ADF2D3D8-CBD4BB90/0/0
X-purgate-type: clean
X-purgate-size: 18856

RnJvbTogU3Rld2FydCBIaWxkZWJyYW5kIDxzdGV3YXJ0LmhpbGRlYnJhbmRAYW1kLmNvbT4NCg0K
VGhpcyBjb2RlIGlzIGV4cGVjdGVkIHRvIG9ubHkgYmUgdXNlZCBieSBwcml2aWxlZ2VkIGRvbWFp
bnMsDQp1bnByaXZpbGVnZWQgZG9tYWlucyBzaG91bGQgbm90IGdldCBhY2Nlc3MgdG8gdGhlIFNS
LUlPViBjYXBhYmlsaXR5Lg0KDQpJbXBsZW1lbnQgUlcgaGFuZGxlcnMgZm9yIFBDSV9TUklPVl9D
VFJMIHJlZ2lzdGVyIHRvIGR5bmFtaWNhbGx5DQptYXAvdW5tYXAgVkYgQkFSUy4gUmVjYWxjdWxh
dGUgQkFSIHNpemVzIGJlZm9yZSBtYXBwaW5nIFZGcyB0byBhY2NvdW50DQpmb3IgcG9zc2libGUg
Y2hhbmdlcyBpbiB0aGUgc3lzdGVtIHBhZ2Ugc2l6ZSByZWdpc3Rlci4gQWxzbyBmb3JjZSBWRnMg
dG8NCmFsd2F5cyB1c2UgZW11bGF0ZWQgcmVhZHMgZm9yIGNvbW1hbmQgcmVnaXN0ZXIsIHRoaXMg
aXMgbmVlZGVkIHRvDQpwcmV2ZW50IHNvbWUgZHJpdmVycyBhY2NpZGVudGFsbHkgdW5tYXBwaW5n
IEJBUnMuIERpc2NvdmVyeSBvZiBWRnMgaXMNCmRvbmUgYnkgRG9tMCwgd2hpY2ggbXVzdCByZWdp
c3RlciB0aGVtIHdpdGggWGVuLg0KDQpTaWduZWQtb2ZmLWJ5OiBSb2dlciBQYXUgTW9ubsOpIDxy
b2dlci5wYXVAY2l0cml4LmNvbT4NClNpZ25lZC1vZmYtYnk6IFN0ZXdhcnQgSGlsZGVicmFuZCA8
c3Rld2FydC5oaWxkZWJyYW5kQGFtZC5jb20+DQpTaWduZWQtb2ZmLWJ5OiBNeWt5dGEgUG90dXJh
aSA8bXlreXRhX3BvdHVyYWlAZXBhbS5jb20+DQotLS0NCnYyLT52MzoNCiogcmV3b3JrIGFkZGlu
ZyBWRnMgd2l0aCBtdWx0aXBsZSBtYXBwaW5nIG9wZXJhdGlvbnMgc3VwcG9ydA0KKiB1c2UgcHJp
dmF0ZS5oDQoqIHN0eWxlIGZpeGVzDQoqIGZpeHVwIGNsZWFudXBfc3Jpb3YNCiogZW11bGF0ZSBj
b21tYW5kIHJlZ2lzdGVyIHJlYWQgZm9yIFZGcw0KDQp2MS0+djI6DQoqIHN3aXRjaCB0byBWRiBk
aXNjb3ZlcnkgYnkgWGVuDQoqIGZpeCBzZXF1ZW50aWFsIHZwY2lfbW9kaWZ5X2JhcnMgY2FsbHMN
CiogbW92ZSBkb2N1bWVudGF0aW9uIGNoYW5nZXMgdG8gYSBzZXBhcmF0ZSBjb21taXQNCi0tLQ0K
IHhlbi9kcml2ZXJzL3ZwY2kvTWFrZWZpbGUgIHwgICAxICsNCiB4ZW4vZHJpdmVycy92cGNpL2hl
YWRlci5jICB8ICAgNiArLQ0KIHhlbi9kcml2ZXJzL3ZwY2kvcHJpdmF0ZS5oIHwgICAxICsNCiB4
ZW4vZHJpdmVycy92cGNpL3NyaW92LmMgICB8IDMxNCArKysrKysrKysrKysrKysrKysrKysrKysr
KysrKysrKysrKysrDQogeGVuL2luY2x1ZGUveGVuL3ZwY2kuaCAgICAgfCAgIDcgKy0NCiA1IGZp
bGVzIGNoYW5nZWQsIDMyNyBpbnNlcnRpb25zKCspLCAyIGRlbGV0aW9ucygtKQ0KIGNyZWF0ZSBt
b2RlIDEwMDY0NCB4ZW4vZHJpdmVycy92cGNpL3NyaW92LmMNCg0KZGlmZiAtLWdpdCBhL3hlbi9k
cml2ZXJzL3ZwY2kvTWFrZWZpbGUgYi94ZW4vZHJpdmVycy92cGNpL01ha2VmaWxlDQppbmRleCA5
NzkzYTRmOWIwLi44YjBlM2MwM2E3IDEwMDY0NA0KLS0tIGEveGVuL2RyaXZlcnMvdnBjaS9NYWtl
ZmlsZQ0KKysrIGIveGVuL2RyaXZlcnMvdnBjaS9NYWtlZmlsZQ0KQEAgLTEsMyArMSw0IEBADQog
b2JqLXkgKz0gY2FwLm8NCiBvYmoteSArPSB2cGNpLm8gaGVhZGVyLm8gcmViYXIubw0KK29iai15
ICs9IHNyaW92Lm8NCiBvYmotJChDT05GSUdfSEFTX1BDSV9NU0kpICs9IG1zaS5vIG1zaXgubw0K
ZGlmZiAtLWdpdCBhL3hlbi9kcml2ZXJzL3ZwY2kvaGVhZGVyLmMgYi94ZW4vZHJpdmVycy92cGNp
L2hlYWRlci5jDQppbmRleCA0NTFjZGQzYTZmLi5hMzYyODU2NzJlIDEwMDY0NA0KLS0tIGEveGVu
L2RyaXZlcnMvdnBjaS9oZWFkZXIuYw0KKysrIGIveGVuL2RyaXZlcnMvdnBjaS9oZWFkZXIuYw0K
QEAgLTg2OSw3ICs4NjksOCBAQCBpbnQgdnBjaV9pbml0X2hlYWRlcihzdHJ1Y3QgcGNpX2RldiAq
cGRldikNCiAgICAgICogUENJX0NPTU1BTkRfUEFSSVRZLCBQQ0lfQ09NTUFORF9TRVJSLCBhbmQg
UENJX0NPTU1BTkRfRkFTVF9CQUNLLg0KICAgICAgKi8NCiAgICAgcmMgPSB2cGNpX2FkZF9yZWdp
c3Rlcl9tYXNrKHBkZXYtPnZwY2ksDQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBp
c19od2RvbSA/IHZwY2lfaHdfcmVhZDE2IDogZ3Vlc3RfY21kX3JlYWQsDQorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBpc19od2RvbSAmJiAhcGRldi0+aW5mby5pc192aXJ0Zm4NCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID8gdnBjaV9od19yZWFkMTYgOiBndWVzdF9j
bWRfcmVhZCwNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNtZF93cml0ZSwgUENJ
X0NPTU1BTkQsIDIsIGhlYWRlciwgMCwgMCwNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGlzX2h3ZG9tID8gMA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgOiBQQ0lfQ09NTUFORF9SU1ZEUF9NQVNLIHwNCkBAIC05MDAsNiArOTAxLDkgQEAgaW50IHZw
Y2lfaW5pdF9oZWFkZXIoc3RydWN0IHBjaV9kZXYgKnBkZXYpDQogDQogICAgIGhlYWRlci0+Z3Vl
c3RfY21kID0gY21kOw0KIA0KKyAgICBpZiAoIHBkZXYtPmluZm8uaXNfdmlydGZuICkNCisgICAg
ICAgIHJldHVybiB2cGNpX3ZmX2luaXRfaGVhZGVyKHBkZXYpOw0KKw0KICAgICAvKiBEaXNhYmxl
IG1lbW9yeSBkZWNvZGluZyBiZWZvcmUgc2l6aW5nLiAqLw0KICAgICBpZiAoICFpc19od2RvbSB8
fCAoY21kICYgUENJX0NPTU1BTkRfTUVNT1JZKSApDQogICAgICAgICBwY2lfY29uZl93cml0ZTE2
KHBkZXYtPnNiZGYsIFBDSV9DT01NQU5ELCBjbWQgJiB+UENJX0NPTU1BTkRfTUVNT1JZKTsNCmRp
ZmYgLS1naXQgYS94ZW4vZHJpdmVycy92cGNpL3ByaXZhdGUuaCBiL3hlbi9kcml2ZXJzL3ZwY2kv
cHJpdmF0ZS5oDQppbmRleCBmMDEyZmQxNjBkLi44ZTAwNDNkZGJlIDEwMDY0NA0KLS0tIGEveGVu
L2RyaXZlcnMvdnBjaS9wcml2YXRlLmgNCisrKyBiL3hlbi9kcml2ZXJzL3ZwY2kvcHJpdmF0ZS5o
DQpAQCAtNDUsNiArNDUsNyBAQCB0eXBlZGVmIHN0cnVjdCB7DQogICAgIFJFR0lTVEVSX1ZQQ0lf
Q0FQQUJJTElUWShQQ0lfRVhUX0NBUF9JRF8jI25hbWUsIG5hbWUsIGZpbml0LCBmY2xlYW4sIHRy
dWUpDQogDQogaW50IF9fbXVzdF9jaGVjayB2cGNpX2luaXRfaGVhZGVyKHN0cnVjdCBwY2lfZGV2
ICpwZGV2KTsNCitpbnQgX19tdXN0X2NoZWNrIHZwY2lfdmZfaW5pdF9oZWFkZXIoc3RydWN0IHBj
aV9kZXYgKnBkZXYpOw0KIA0KIGludCB2cGNpX2luaXRfY2FwYWJpbGl0aWVzKHN0cnVjdCBwY2lf
ZGV2ICpwZGV2LCBib29sIGV4dF9vbmx5KTsNCiB2b2lkIHZwY2lfY2xlYW51cF9jYXBhYmlsaXRp
ZXMoc3RydWN0IHBjaV9kZXYgKnBkZXYsIGJvb2wgZXh0X29ubHkpOw0KZGlmZiAtLWdpdCBhL3hl
bi9kcml2ZXJzL3ZwY2kvc3Jpb3YuYyBiL3hlbi9kcml2ZXJzL3ZwY2kvc3Jpb3YuYw0KbmV3IGZp
bGUgbW9kZSAxMDA2NDQNCmluZGV4IDAwMDAwMDAwMDAuLmVjNmE3Yjg0ZDUNCi0tLSAvZGV2L251
bGwNCisrKyBiL3hlbi9kcml2ZXJzL3ZwY2kvc3Jpb3YuYw0KQEAgLTAsMCArMSwzMTQgQEANCisv
KiBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMC1vbmx5ICovDQorLyoNCisgKiBIYW5k
bGVycyBmb3IgYWNjZXNzZXMgdG8gdGhlIFNSLUlPViBjYXBhYmlsaXR5IHN0cnVjdHVyZS4NCisg
Kg0KKyAqIENvcHlyaWdodCAoQykgMjAyNiBDaXRyaXggU3lzdGVtcyBSJkQNCisgKi8NCisNCisj
aW5jbHVkZSA8eGVuL3NjaGVkLmg+DQorI2luY2x1ZGUgPHhlbi92cGNpLmg+DQorI2luY2x1ZGUg
PHhzbS94c20uaD4NCisjaW5jbHVkZSAicHJpdmF0ZS5oIg0KKw0KK3N0YXRpYyBpbnQgdmZfaW5p
dF9iYXJzKGNvbnN0IHN0cnVjdCBwY2lfZGV2ICp2Zl9wZGV2KQ0KK3sNCisgICAgaW50IHZmX2lk
eDsNCisgICAgdW5zaWduZWQgaW50IGk7DQorICAgIGNvbnN0IHN0cnVjdCBwY2lfZGV2ICpwZl9w
ZGV2ID0gdmZfcGRldi0+cGZfcGRldjsNCisgICAgc3RydWN0IHZwY2lfYmFyICpiYXJzID0gdmZf
cGRldi0+dnBjaS0+aGVhZGVyLmJhcnM7DQorICAgIHN0cnVjdCB2cGNpX2JhciAqcGh5c2ZuX3Zm
X2JhcnMgPSBwZl9wZGV2LT52cGNpLT5zcmlvdi0+dmZfYmFyczsNCisgICAgdW5zaWduZWQgaW50
IHNyaW92X3BvcyA9IHBjaV9maW5kX2V4dF9jYXBhYmlsaXR5KHBmX3BkZXYsDQorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQQ0lfRVhUX0NBUF9J
RF9TUklPVik7DQorICAgIHVpbnQxNl90IG9mZnNldCA9IHBjaV9jb25mX3JlYWQxNihwZl9wZGV2
LT5zYmRmLA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Jpb3ZfcG9z
ICsgUENJX1NSSU9WX1ZGX09GRlNFVCk7DQorICAgIHVpbnQxNl90IHN0cmlkZSA9IHBjaV9jb25m
X3JlYWQxNihwZl9wZGV2LT5zYmRmLA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgc3Jpb3ZfcG9zICsgUENJX1NSSU9WX1ZGX1NUUklERSk7DQorDQorICAgIHZmX2lkeCA9
IHZmX3BkZXYtPnNiZGYuc2JkZiAtIChwZl9wZGV2LT5zYmRmLnNiZGYgKyBvZmZzZXQpOw0KKyAg
ICBpZiAoIHZmX2lkeCA8IDAgKQ0KKyAgICAgICAgcmV0dXJuIC1FSU5WQUw7DQorDQorICAgIGlm
ICggc3RyaWRlICkNCisgICAgew0KKyAgICAgICAgaWYgKCB2Zl9pZHggJSBzdHJpZGUgKQ0KKyAg
ICAgICAgICAgIHJldHVybiAtRUlOVkFMOw0KKyAgICAgICAgdmZfaWR4IC89IHN0cmlkZTsNCisg
ICAgfQ0KKw0KKyAgICAvKg0KKyAgICAgKiBTZXQgdXAgQkFScyBmb3IgdGhpcyBWRiBvdXQgb2Yg
UEYncyBWRiBCQVJzIHRha2luZyBpbnRvIGFjY291bnQNCisgICAgICogdGhlIGluZGV4IG9mIHRo
ZSBWRi4NCisgICAgICovDQorICAgIGZvciAoIGkgPSAwOyBpIDwgUENJX1NSSU9WX05VTV9CQVJT
OyBpKysgKQ0KKyAgICB7DQorICAgICAgICBiYXJzW2ldLmFkZHIgPSBwaHlzZm5fdmZfYmFyc1tp
XS5hZGRyICsgdmZfaWR4ICogcGh5c2ZuX3ZmX2JhcnNbaV0uc2l6ZTsNCisgICAgICAgIGJhcnNb
aV0uZ3Vlc3RfYWRkciA9IGJhcnNbaV0uYWRkcjsNCisgICAgICAgIGJhcnNbaV0uc2l6ZSA9IHBo
eXNmbl92Zl9iYXJzW2ldLnNpemU7DQorICAgICAgICBiYXJzW2ldLnR5cGUgPSBwaHlzZm5fdmZf
YmFyc1tpXS50eXBlOw0KKyAgICAgICAgYmFyc1tpXS5wcmVmZXRjaGFibGUgPSBwaHlzZm5fdmZf
YmFyc1tpXS5wcmVmZXRjaGFibGU7DQorICAgIH0NCisNCisgICAgcmV0dXJuIDA7DQorfQ0KKw0K
K3N0YXRpYyBpbnQgbWFwX3Zmcyhjb25zdCBzdHJ1Y3QgcGNpX2RldiAqcGZfcGRldiwgdWludDE2
X3QgY21kKQ0KK3sNCisgICAgc3RydWN0IHBjaV9kZXYgKnZmX3BkZXY7DQorICAgIGludCByYzsN
CisNCisgICAgQVNTRVJUKHJ3X2lzX3dyaXRlX2xvY2tlZCgmcGZfcGRldi0+ZG9tYWluLT5wY2lf
bG9jaykpOw0KKw0KKyAgICBsaXN0X2Zvcl9lYWNoX2VudHJ5KHZmX3BkZXYsICZwZl9wZGV2LT52
Zl9saXN0LCB2Zl9saXN0KQ0KKyAgICB7DQorICAgICAgICByYyA9IHZwY2lfbW9kaWZ5X2JhcnMo
dmZfcGRldiwgY21kLCBmYWxzZSk7DQorICAgICAgICBpZiAoIHJjICkNCisgICAgICAgIHsNCisg
ICAgICAgICAgICBncHJpbnRrKFhFTkxPR19FUlIsICJmYWlsZWQgdG8gJXMgVkYgJXBwOiAlZFxu
IiwNCisgICAgICAgICAgICAgICAgICAgIChjbWQgJiBQQ0lfQ09NTUFORF9NRU1PUlkpID8gIm1h
cCIgOiAidW5tYXAiLA0KKyAgICAgICAgICAgICAgICAgICAgJnZmX3BkZXYtPnNiZGYsIHJjKTsN
CisgICAgICAgICAgICByZXR1cm4gcmM7DQorICAgICAgICB9DQorDQorICAgICAgICB2Zl9wZGV2
LT52cGNpLT5oZWFkZXIuZ3Vlc3RfY21kICY9IH5QQ0lfQ09NTUFORF9NRU1PUlk7DQorICAgICAg
ICB2Zl9wZGV2LT52cGNpLT5oZWFkZXIuZ3Vlc3RfY21kIHw9IChjbWQgJiBQQ0lfQ09NTUFORF9N
RU1PUlkpOw0KKyAgICB9DQorDQorICAgIHJldHVybiAwOw0KK30NCisNCitzdGF0aWMgaW50IHNp
emVfdmZfYmFycyhjb25zdCBzdHJ1Y3QgcGNpX2RldiAqcGZfcGRldiwgdW5zaWduZWQgaW50IHNy
aW92X3BvcywNCisgICAgICAgICAgICAgICAgICAgICAgICB1aW50NjRfdCAqdmZfcmxlbikNCit7
DQorICAgIHN0cnVjdCB2cGNpX2JhciAqYmFyczsNCisgICAgdW5zaWduZWQgaW50IGk7DQorICAg
IGludCByYyA9IDA7DQorDQorICAgIEFTU0VSVChyd19pc193cml0ZV9sb2NrZWQoJnBmX3BkZXYt
PmRvbWFpbi0+cGNpX2xvY2spKTsNCisgICAgQVNTRVJUKCFwZl9wZGV2LT5pbmZvLmlzX3ZpcnRm
bik7DQorICAgIEFTU0VSVChwZl9wZGV2LT52cGNpLT5zcmlvdik7DQorDQorICAgIC8qIFJlYWQg
QkFScyBmb3IgVkZzIG91dCBvZiBQRidzIFNSLUlPViBleHRlbmRlZCBjYXBhYmlsaXR5LiAqLw0K
KyAgICBiYXJzID0gcGZfcGRldi0+dnBjaS0+c3Jpb3YtPnZmX2JhcnM7DQorICAgIC8qIFNldCB0
aGUgQkFScyBhZGRyZXNzZXMgYW5kIHNpemUuICovDQorICAgIGZvciAoIGkgPSAwOyBpIDwgUENJ
X1NSSU9WX05VTV9CQVJTOyBpICs9IHJjICkNCisgICAgew0KKyAgICAgICAgdW5zaWduZWQgaW50
IGlkeCA9IHNyaW92X3BvcyArIFBDSV9TUklPVl9CQVIgKyBpICogNDsNCisgICAgICAgIHVpbnQz
Ml90IGJhcjsNCisgICAgICAgIHVpbnQ2NF90IGFkZHIsIHNpemU7DQorDQorICAgICAgICBiYXIg
PSBwY2lfY29uZl9yZWFkMzIocGZfcGRldi0+c2JkZiwgaWR4KTsNCisNCisgICAgICAgIHJjID0g
cGNpX3NpemVfbWVtX2JhcihwZl9wZGV2LT5zYmRmLCBpZHgsICZhZGRyLCAmc2l6ZSwNCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBQQ0lfQkFSX1ZGIHwNCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAoKGkgPT0gUENJX1NSSU9WX05VTV9CQVJTIC0gMSkgPyBQQ0lfQkFSX0xB
U1QNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgOiAwKSk7DQorDQorICAgICAgICAvKg0KKyAgICAgICAgICogVXBkYXRlIHZmX3Js
ZW4gb24gdGhlIFBGLiBBY2NvcmRpbmcgdG8gdGhlIHNwZWMgdGhlIHNpemUgb2YNCisgICAgICAg
ICAqIHRoZSBCQVJzIGNhbiBjaGFuZ2UgaWYgdGhlIHN5c3RlbSBwYWdlIHNpemUgcmVnaXN0ZXIg
aXMNCisgICAgICAgICAqIG1vZGlmaWVkLCBzbyBhbHdheXMgdXBkYXRlIHJsZW4gd2hlbiBlbmFi
bGluZyBWRnMuDQorICAgICAgICAgKi8NCisgICAgICAgIHZmX3JsZW5baV0gPSBzaXplOw0KKw0K
KyAgICAgICAgaWYgKCAhc2l6ZSApDQorICAgICAgICB7DQorICAgICAgICAgICAgYmFyc1tpXS50
eXBlID0gVlBDSV9CQVJfRU1QVFk7DQorICAgICAgICAgICAgY29udGludWU7DQorICAgICAgICB9
DQorDQorICAgICAgICBiYXJzW2ldLmFkZHIgPSBhZGRyOw0KKyAgICAgICAgYmFyc1tpXS5ndWVz
dF9hZGRyID0gYWRkcjsNCisgICAgICAgIGJhcnNbaV0uc2l6ZSA9IHNpemU7DQorICAgICAgICBi
YXJzW2ldLnByZWZldGNoYWJsZSA9IGJhciAmIFBDSV9CQVNFX0FERFJFU1NfTUVNX1BSRUZFVENI
Ow0KKw0KKyAgICAgICAgc3dpdGNoICggcmMgKQ0KKyAgICAgICAgew0KKyAgICAgICAgY2FzZSAx
Og0KKyAgICAgICAgICAgIGJhcnNbaV0udHlwZSA9IFZQQ0lfQkFSX01FTTMyOw0KKyAgICAgICAg
ICAgIGJyZWFrOw0KKw0KKyAgICAgICAgY2FzZSAyOg0KKyAgICAgICAgICAgIGJhcnNbaV0udHlw
ZSA9IFZQQ0lfQkFSX01FTTY0X0xPOw0KKyAgICAgICAgICAgIGJhcnNbaSArIDFdLnR5cGUgPSBW
UENJX0JBUl9NRU02NF9ISTsNCisgICAgICAgICAgICBicmVhazsNCisNCisgICAgICAgIGRlZmF1
bHQ6DQorICAgICAgICAgICAgQVNTRVJUX1VOUkVBQ0hBQkxFKCk7DQorICAgICAgICB9DQorICAg
IH0NCisNCisgICAgcmMgPSByYyA+IDAgPyAwIDogcmM7DQorDQorICAgIHJldHVybiByYzsNCit9
DQorDQorc3RhdGljIHZvaWQgY2ZfY2hlY2sgY29udHJvbF93cml0ZShjb25zdCBzdHJ1Y3QgcGNp
X2RldiAqcGRldiwgdW5zaWduZWQgaW50IHJlZywNCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHVpbnQzMl90IHZhbCwgdm9pZCAqZGF0YSkNCit7DQorICAgIHVuc2lnbmVkIGlu
dCBzcmlvdl9wb3MgPSByZWcgLSBQQ0lfU1JJT1ZfQ1RSTDsNCisgICAgc3RydWN0IHZwY2lfc3Jp
b3YgKnNyaW92ID0gcGRldi0+dnBjaS0+c3Jpb3Y7DQorICAgIHVpbnQxNl90IGNvbnRyb2wgPSBw
Y2lfY29uZl9yZWFkMTYocGRldi0+c2JkZiwgcmVnKTsNCisgICAgYm9vbCBtZW1fZW5hYmxlZCA9
IGNvbnRyb2wgJiBQQ0lfU1JJT1ZfQ1RSTF9NU0U7DQorICAgIGJvb2wgbmV3X21lbV9lbmFibGVk
ID0gdmFsICYgUENJX1NSSU9WX0NUUkxfTVNFOw0KKyAgICBib29sIGVuYWJsZWQgPSBjb250cm9s
ICYgUENJX1NSSU9WX0NUUkxfVkZFOw0KKyAgICBib29sIG5ld19lbmFibGVkID0gdmFsICYgUENJ
X1NSSU9WX0NUUkxfVkZFOw0KKyAgICBpbnQgcmM7DQorDQorICAgIEFTU0VSVCghcGRldi0+aW5m
by5pc192aXJ0Zm4pOw0KKw0KKyAgICBpZiAoIG5ld19lbmFibGVkID09IGVuYWJsZWQgJiYgbmV3
X21lbV9lbmFibGVkID09IG1lbV9lbmFibGVkICkNCisgICAgew0KKyAgICAgICAgcGNpX2NvbmZf
d3JpdGUxNihwZGV2LT5zYmRmLCByZWcsIHZhbCk7DQorICAgICAgICByZXR1cm47DQorICAgIH0N
CisNCisgICAgaWYgKCBtZW1fZW5hYmxlZCAmJiAhbmV3X21lbV9lbmFibGVkICkNCisgICAgICAg
IG1hcF92ZnMocGRldiwgMCk7DQorDQorICAgIGlmICggIWVuYWJsZWQgJiYgbmV3X2VuYWJsZWQg
KQ0KKyAgICB7DQorICAgICAgICBzaXplX3ZmX2JhcnMocGRldiwgc3Jpb3ZfcG9zLCAodWludDY0
X3QgKilkYXRhKTsNCisNCisgICAgICAgIC8qDQorICAgICAgICAgKiBPbmx5IHVwZGF0ZSB0aGUg
bnVtYmVyIG9mIGFjdGl2ZSBWRnMgd2hlbiBlbmFibGluZywgd2hlbg0KKyAgICAgICAgICogZGlz
YWJsaW5nIHVzZSB0aGUgY2FjaGVkIHZhbHVlIGluIG9yZGVyIHRvIGFsd2F5cyByZW1vdmUgdGhl
IHNhbWUNCisgICAgICAgICAqIG51bWJlciBvZiBWRnMgdGhhdCB3ZXJlIGFjdGl2ZS4NCisgICAg
ICAgICAqLw0KKyAgICAgICAgc3Jpb3YtPm51bV92ZnMgPSBwY2lfY29uZl9yZWFkMTYocGRldi0+
c2JkZiwNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNyaW92X3Bv
cyArIFBDSV9TUklPVl9OVU1fVkYpOw0KKyAgICB9DQorDQorICAgIGlmICggIW1lbV9lbmFibGVk
ICYmIG5ld19tZW1fZW5hYmxlZCApDQorICAgIHsNCisgICAgICAgIHJjID0gbWFwX3ZmcyhwZGV2
LCBQQ0lfQ09NTUFORF9NRU1PUlkpOw0KKw0KKyAgICAgICAgaWYgKCByYyApDQorICAgICAgICAg
ICAgbWFwX3ZmcyhwZGV2LCAwKTsNCisgICAgfQ0KKw0KKyAgICBwY2lfY29uZl93cml0ZTE2KHBk
ZXYtPnNiZGYsIHJlZywgdmFsKTsNCit9DQorDQoraW50IHZwY2lfdmZfaW5pdF9oZWFkZXIoc3Ry
dWN0IHBjaV9kZXYgKnZmX3BkZXYpDQorew0KKyAgICBjb25zdCBzdHJ1Y3QgcGNpX2RldiAqcGZf
cGRldjsNCisgICAgdW5zaWduZWQgaW50IHNyaW92X3BvczsNCisgICAgaW50IHJjID0gMDsNCisg
ICAgdWludDE2X3QgY3RybDsNCisNCisgICAgQVNTRVJUKHJ3X2lzX3dyaXRlX2xvY2tlZCgmdmZf
cGRldi0+ZG9tYWluLT5wY2lfbG9jaykpOw0KKw0KKyAgICBpZiAoICF2Zl9wZGV2LT5pbmZvLmlz
X3ZpcnRmbiApDQorICAgICAgICByZXR1cm4gMDsNCisNCisgICAgcGZfcGRldiA9IHZmX3BkZXYt
PnBmX3BkZXY7DQorICAgIEFTU0VSVChwZl9wZGV2KTsNCisNCisgICAgcmMgPSB2Zl9pbml0X2Jh
cnModmZfcGRldik7DQorICAgIGlmICggcmMgKQ0KKyAgICAgICAgcmV0dXJuIHJjOw0KKw0KKyAg
ICBzcmlvdl9wb3MgPSBwY2lfZmluZF9leHRfY2FwYWJpbGl0eShwZl9wZGV2LCBQQ0lfRVhUX0NB
UF9JRF9TUklPVik7DQorICAgIGN0cmwgPSBwY2lfY29uZl9yZWFkMTYocGZfcGRldi0+c2JkZiwg
c3Jpb3ZfcG9zICsgUENJX1NSSU9WX0NUUkwpOw0KKw0KKyAgICBpZiAoIChwZl9wZGV2LT5kb21h
aW4gPT0gdmZfcGRldi0+ZG9tYWluKSAmJiAoY3RybCAmIFBDSV9TUklPVl9DVFJMX01TRSkgKQ0K
KyAgICB7DQorICAgICAgICByYyA9IHZwY2lfbW9kaWZ5X2JhcnModmZfcGRldiwgUENJX0NPTU1B
TkRfTUVNT1JZLCBmYWxzZSk7DQorICAgICAgICBpZiAoIHJjICkNCisgICAgICAgICAgICByZXR1
cm4gcmM7DQorDQorICAgICAgICB2Zl9wZGV2LT52cGNpLT5oZWFkZXIuZ3Vlc3RfY21kIHw9IFBD
SV9DT01NQU5EX01FTU9SWTsNCisgICAgfQ0KKw0KKyAgICByZXR1cm4gcmM7DQorfQ0KKw0KK3N0
YXRpYyBpbnQgY2ZfY2hlY2sgaW5pdF9zcmlvdihzdHJ1Y3QgcGNpX2RldiAqcGRldikNCit7DQor
ICAgIHVuc2lnbmVkIGludCBwb3M7DQorDQorICAgIEFTU0VSVCghcGRldi0+aW5mby5pc192aXJ0
Zm4pOw0KKw0KKyAgICBwb3MgPSBwY2lfZmluZF9leHRfY2FwYWJpbGl0eShwZGV2LCBQQ0lfRVhU
X0NBUF9JRF9TUklPVik7DQorDQorICAgIGlmICggIXBvcyApDQorICAgICAgICByZXR1cm4gMDsN
CisNCisgICAgaWYgKCB4c21fcmVzb3VyY2Vfc2V0dXBfcGNpKFhTTV9QUklWLCBwZGV2LT5zYmRm
LmJkZikgKQ0KKyAgICB7DQorICAgICAgICBwcmludGsoWEVOTE9HX0VSUg0KKyAgICAgICAgICAg
ICAgICIlcHA6IFNSLUlPViBjb25maWd1cmF0aW9uIHVuc3VwcG9ydGVkIGZvciB1bnByaXYgJXBk
XG4iLA0KKyAgICAgICAgICAgICAgICZwZGV2LT5zYmRmLCBwZGV2LT5kb21haW4pOw0KKyAgICAg
ICAgcmV0dXJuIC1FQUNDRVM7DQorICAgIH0NCisNCisgICAgcGRldi0+dnBjaS0+c3Jpb3YgPSB4
emFsbG9jKHN0cnVjdCB2cGNpX3NyaW92KTsNCisgICAgaWYgKCAhcGRldi0+dnBjaS0+c3Jpb3Yg
KQ0KKyAgICAgICAgcmV0dXJuIC1FTk9NRU07DQorDQorICAgIC8qDQorICAgICAqIFdlIG5lZWQg
dG8gbW9kaWZ5IHZmX3JsZW4gaW4gY29udHJvbF93cml0ZSBidXQgd2UgY2FuJ3QgZG8gaXQgY2xl
YW5seQ0KKyAgICAgKiBmcm9tIHBkZXYgYmVjYXVzZSB3cml0ZSBjYWxsYmFjayBvbmx5IGFjY2Vw
dHMgY29uc3QgcGRldi4gTW92aW5nIHZmX3JsZW4NCisgICAgICogaW5zaWRlIG9mIHN0cnVjdCB2
cGNpX3NyaW92IGlzIGFsc28gbm90IHBvc3NpYmxlIGJlY2F1c2UgaXQgaXMgdXNlZA0KKyAgICAg
KiBiZWZvcmUgdnBjaSBpbml0LiBTbyBwYXNzIGl0IGhlcmUgYXMgYWRkaXRpb25hbCBkYXRhIHRv
IG5vdCByZXF1aXJlDQorICAgICAqIGRyb3BwaW5nIGNvbnN0IGluIGNvbnRyb2xfd3JpdGUuDQor
ICAgICAqLw0KKyAgICByZXR1cm4gdnBjaV9hZGRfcmVnaXN0ZXIocGRldi0+dnBjaSwgdnBjaV9o
d19yZWFkMTYsIGNvbnRyb2xfd3JpdGUsDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBw
b3MgKyBQQ0lfU1JJT1ZfQ1RSTCwgMiwgJnBkZXYtPnBoeXNmbi52Zl9ybGVuKTsNCit9DQorDQor
c3RhdGljIGludCBjZl9jaGVjayBjbGVhbnVwX3NyaW92KGNvbnN0IHN0cnVjdCBwY2lfZGV2ICpw
ZGV2LCBib29sIGhpZGUpDQorew0KKyAgICB1bnNpZ25lZCBpbnQgcG9zOw0KKyAgICBpbnQgcmM7
DQorDQorICAgIGlmICggIXBkZXYtPnZwY2ktPnNyaW92ICkNCisgICAgICAgIHJldHVybiAwOw0K
Kw0KKyAgICBBU1NFUlQoIXBkZXYtPmluZm8uaXNfdmlydGZuKTsNCisgICAgQVNTRVJUKGxpc3Rf
ZW1wdHkoJnBkZXYtPnZmX2xpc3QpKTsNCisNCisgICAgaWYgKCAhaGlkZSApDQorICAgIHsNCisg
ICAgICAgIFhGUkVFKHBkZXYtPnZwY2ktPnNyaW92KTsNCisgICAgICAgIHJldHVybiAwOw0KKyAg
ICB9DQorDQorICAgIHBvcyA9IHBjaV9maW5kX2V4dF9jYXBhYmlsaXR5KHBkZXYsIFBDSV9FWFRf
Q0FQX0lEX1NSSU9WKTsNCisgICAgcmMgPSB2cGNpX3JlbW92ZV9yZWdpc3RlcnMocGRldi0+dnBj
aSwgcG9zICsgUENJX1NSSU9WX0NUUkwsIDIpOw0KKyAgICBpZiAoIHJjICkNCisgICAgew0KKyAg
ICAgICAgcHJpbnRrKFhFTkxPR19FUlIgIiVwZCAlcHA6IGZhaWwgdG8gcmVtb3ZlIFNSSU9WIGhh
bmRsZXJzIHJjPSVkXG4iLA0KKyAgICAgICAgICAgICAgICBwZGV2LT5kb21haW4sICZwZGV2LT5z
YmRmLCByYyk7DQorICAgICAgICBBU1NFUlRfVU5SRUFDSEFCTEUoKTsNCisgICAgICAgIHJldHVy
biByYzsNCisgICAgfQ0KKyAgICBYRlJFRShwZGV2LT52cGNpLT5zcmlvdik7DQorDQorICAgIC8q
DQorICAgICAqIFVucHJpdmlsZWdlZCBkb21haW5zIGhhdmUgYSBkZW55IGJ5IGRlZmF1bHQgcmVn
aXN0ZXIgYWNjZXNzIHBvbGljeSwgbm8NCisgICAgICogbmVlZCB0byBhZGQgYW55IGZ1cnRoZXIg
aGFuZGxlcnMgZm9yIHRoZW0uDQorICAgICAqLw0KKyAgICBpZiAoICFpc19oYXJkd2FyZV9kb21h
aW4ocGRldi0+ZG9tYWluKSApDQorICAgICAgICByZXR1cm4gMDsNCisNCisgICAgcmMgPSB2cGNp
X2FkZF9yZWdpc3RlcihwZGV2LT52cGNpLCB2cGNpX2h3X3JlYWQxNiwgTlVMTCwNCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICBwb3MgKyBQQ0lfU1JJT1ZfQ1RSTCwgMiwgTlVMTCk7DQorICAg
IGlmICggcmMgKQ0KKyAgICAgICAgcHJpbnRrKFhFTkxPR19FUlIgIiVwZCAlcHA6IGZhaWwgdG8g
YWRkIFNSSU9WIGN0cmwgaGFuZGxlciByYz0lZFxuIiwNCisgICAgICAgICAgICAgICBwZGV2LT5k
b21haW4sICZwZGV2LT5zYmRmLCByYyk7DQorDQorICAgIHJldHVybiByYzsNCit9DQorDQorUkVH
SVNURVJfVlBDSV9FWFRDQVAoU1JJT1YsIGluaXRfc3Jpb3YsIGNsZWFudXBfc3Jpb3YpOw0KKw0K
Ky8qDQorICogTG9jYWwgdmFyaWFibGVzOg0KKyAqIG1vZGU6IEMNCisgKiBjLWZpbGUtc3R5bGU6
ICJCU0QiDQorICogYy1iYXNpYy1vZmZzZXQ6IDQNCisgKiB0YWItd2lkdGg6IDQNCisgKiBpbmRl
bnQtdGFicy1tb2RlOiBuaWwNCisgKiBFbmQ6DQorICovDQpkaWZmIC0tZ2l0IGEveGVuL2luY2x1
ZGUveGVuL3ZwY2kuaCBiL3hlbi9pbmNsdWRlL3hlbi92cGNpLmgNCmluZGV4IGUzNGY3YWJlNmQu
LmZjOGE5NDNhYmUgMTAwNjQ0DQotLS0gYS94ZW4vaW5jbHVkZS94ZW4vdnBjaS5oDQorKysgYi94
ZW4vaW5jbHVkZS94ZW4vdnBjaS5oDQpAQCAtODQsNyArODQsNiBAQCBzdHJ1Y3QgdnBjaSB7DQog
ICAgICAgICAgKiB1cG9uIHRvIGtub3cgd2hldGhlciBCQVJzIGFyZSBtYXBwZWQgaW50byB0aGUg
Z3Vlc3QgcDJtLg0KICAgICAgICAgICovDQogICAgICAgICBib29sIGJhcnNfbWFwcGVkICAgICAg
OiAxOw0KLSAgICAgICAgLyogRklYTUU6IGN1cnJlbnRseSB0aGVyZSdzIG5vIHN1cHBvcnQgZm9y
IFNSLUlPVi4gKi8NCiAgICAgfSBoZWFkZXI7DQogDQogICAgIC8qIE1TSSBkYXRhLiAqLw0KQEAg
LTE0NSw2ICsxNDQsMTIgQEAgc3RydWN0IHZwY2kgew0KICAgICAgICAgdW5zaWduZWQgaW50IG5i
YXJzOjM7DQogICAgIH0gcmViYXI7DQogDQorICAgIHN0cnVjdCB2cGNpX3NyaW92IHsNCisgICAg
ICAgIC8qIFBGIG9ubHkgKi8NCisgICAgICAgIHN0cnVjdCB2cGNpX2JhciB2Zl9iYXJzW1BDSV9T
UklPVl9OVU1fQkFSU107DQorICAgICAgICB1aW50MTZfdCBudW1fdmZzOw0KKyAgICB9ICpzcmlv
djsNCisNCiAjaWZkZWYgQ09ORklHX0hBU19WUENJX0dVRVNUX1NVUFBPUlQNCiAgICAgLyogR3Vl
c3QgU0JERiBvZiB0aGUgZGV2aWNlLiAqLw0KICNkZWZpbmUgSU5WQUxJRF9HVUVTVF9TQkRGICgo
cGNpX3NiZGZfdCl7IC5zYmRmID0gfjBVIH0pDQotLSANCjIuNTEuMg0K


From xen-devel-bounces@lists.xenproject.org Thu Apr 09 14:01:41 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 09 Apr 2026 14:01:41 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1277474.1562673 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wApww-0004h4-TF; Thu, 09 Apr 2026 14:01:38 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1277474.1562673; Thu, 09 Apr 2026 14: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 1wApww-0004gj-NW; Thu, 09 Apr 2026 14:01:38 +0000
Received: by outflank-mailman (input) for mailman id 1277474;
 Thu, 09 Apr 2026 14:01:37 +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 1wApwu-0004KR-O9
 for xen-devel@lists.xenproject.org; Thu, 09 Apr 2026 14:01:36 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wApwu-009p7l-3q
 for xen-devel@lists.xenproject.org; Thu, 09 Apr 2026 16:01:36 +0200
Received: from [10.42.69.10] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <Mykyta_Poturai@epam.com>)
 id 69d7b13f-2eae-0a2a0a5409dd-0a2a450ad274-4
 for <xen-devel@lists.xenproject.org>; Thu, 09 Apr 2026 16:01:36 +0200
Received: from [52.101.66.132]
 (helo=DUZPR83CU001.outbound.protection.outlook.com)
 by tlsNG-4011c0.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.0)
 (envelope-from <Mykyta_Poturai@epam.com>)
 id 69d7b13e-ee98-0a2a450a0019-34654284bb10-6
 for <xen-devel@lists.xenproject.org>; Thu, 09 Apr 2026 16:01:36 +0200
Received: from PAVPR03MB10102.eurprd03.prod.outlook.com
 (2603:10a6:102:30d::12) by PA3PR03MB10964.eurprd03.prod.outlook.com
 (2603:10a6:102:4b2::10) with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9769.42; Thu, 9 Apr
 2026 14:01:34 +0000
Received: from PAVPR03MB10102.eurprd03.prod.outlook.com
 ([fe80::b8c6:f37a:987a:beb]) by PAVPR03MB10102.eurprd03.prod.outlook.com
 ([fe80::b8c6:f37a:987a:beb%5]) with mapi id 15.20.9769.016; Thu, 9 Apr 2026
 14:01: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=YQBSlquJ6sLIH1AEM91IajT/fKlV2joG6xtONqoofW7hfR9beDMMyGK784np027mSb94greTncRDPWeg3gtjymF3HVRCMkbUej2y19y66JXfN6qYsgVxNLu3df37Utmx5HIG0SzAFAD5JuH7dYOg0noY2AmUI6IdRL+Aka7vPkV2UkZE8LqYv7oh3rVwNxLNd0qLeGHI3p68gvafqineG/aGyJJ7EKjGoLtAl2dsSgMLO7x2DxvwNtxVpjFsChHnGanhFpFPSSQuBDw801G4pJz60Jdd4xLqQI4NiLxtMZnRP17AyevfRcEZbtvvTkvUKsQZNgj5EQo/K7tzE9ZbnQ==
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com;
 s=arcselector10001;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1;
 bh=UQwkJTTGndgcvnqVacB6LNy0pUr21sbFJFr9TW4FdOQ=;
 b=TyYh4qTGh277DuIJBcyWUCEnjeBdb/wr/w6MVeV/vDOezL39av4RW871IorNnd1yMv6ahzl0a0WWenTVQWw2I6cZN9RNvOYX2OyHk102OQAJlqQPSWCSYwYokFeB2wzE+zRztdeklAlWCDoJzeb5SHlchkMJCjp+PykdT7pcsaNt2t4MY4TIk5TYwakB+A0kuQMY4AdQZ2443cZ1uomjGtXNiGnOc+ntZxm16HZxrdxgPLnp9uv+dM1eessT+WKRQIozpQOV6BbjaX1Bd46QmVHEcItA29DIVGtUd3a6ETHCOAC8ZYHtxBkAfhm8pA+umpfx+U998OVx2I7hksSUdw==
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=UQwkJTTGndgcvnqVacB6LNy0pUr21sbFJFr9TW4FdOQ=;
 b=ctNEyAYDDI7BRjMx7wY67oi4Gdxs/5MpU6Nqf6nJfa4T7isstI1GV4picuuEqM/PcqXyY12IIXPLd9AM0UnPRHrWX7FEvz+pNdeXdvM1n7HhaeKk/QqwBKiLXA4TVEyY8zlrTo/qG8raaBkNRAW8LBwvWlLNynVw8lNmPpPj3Q1vC1lOHmo7zt9ZdzGZZrbrTeW2Nq+ow1Lw3rPm3mrW8rlX9wA5hShcukfNt0ws4vWVZddGgqBhhpTNxZdO9vd6m3EL/8W0EKZByRrme2Y7sSMAQX5Wz+j81uH7bBdkZszLsgq4BfX7tlTfubJqn4XGlZ6s0rDKUPRORoFlh0icNQ==
From: Mykyta Poturai <Mykyta_Poturai@epam.com>
To: "xen-devel@lists.xenproject.org" <xen-devel@lists.xenproject.org>
CC: Stewart Hildebrand <stewart.hildebrand@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>, =?iso-8859-1?Q?Roger_Pau_Monn=E9?=
	<roger.pau@citrix.com>, Stefano Stabellini <sstabellini@kernel.org>
Subject: [PATCH v3 4/7] vpci: allow queueing of mapping operations
Thread-Topic: [PATCH v3 4/7] vpci: allow queueing of mapping operations
Thread-Index: AQHcyClfiKiYHZL9uEi4zPN+JRCyeQ==
Date: Thu, 9 Apr 2026 14:01:33 +0000
Message-ID:
 <97e3323363ab442ccb21a00d5ed0488b6672870a.1775742115.git.mykyta_poturai@epam.com>
References: <cover.1775742115.git.mykyta_poturai@epam.com>
In-Reply-To: <cover.1775742115.git.mykyta_poturai@epam.com>
Accept-Language: en-US
Content-Language: en-US
X-MS-Has-Attach:
X-MS-TNEF-Correlator:
authentication-results: dkim=none (message not signed)
 header.d=none;dmarc=none action=none header.from=epam.com;
x-ms-publictraffictype: Email
x-ms-traffictypediagnostic: PAVPR03MB10102:EE_|PA3PR03MB10964:EE_
x-ms-office365-filtering-correlation-id: f79b1c04-2a35-405e-ba38-08de96408235
x-ms-exchange-senderadcheck: 1
x-ms-exchange-antispam-relay: 0
x-microsoft-antispam:
 BCL:0;ARA:13230040|366016|1800799024|376014|38070700021|22082099003|56012099003|18002099003;
x-microsoft-antispam-message-info:
 iQvUuNBanfGZTTbVzRyDDw7WoMfEoNUtRKK5mZCE6dvSmYLgMNLJNmOPeuDwvAEKTtxXCcxVpA7yngP4csDp6DFqV4roBce7k7OPEpb+VNV7QliHv2tmUrpp3YG73sWKXBgKt2UQsV8wYTKf/rknX1JVgTq2r8jPuj4Lqt4LbPEwoMq6NgNHYsa3mR7PmdBcw7mtRprpXw7iPyWBBIclImOn8yre1n+EC1zy/bKxaGPoAu7nW1lUOeJoG9NYAyGn5dtVQVeZ0XXuwFXk3RXzUdRc3ntV/Briutl4XdHjdQSJMG3hMszLOwgQJRiWA5QWKWTcu+d4Q51OT/ZjwluHEE/HI2tJo9ffdxowxkZ+Ey+G9ZIPqjwWIMHMFGt7OOhl49aRTsmC/+kMmrkKwRi8IoTpamkT4rFX9FFf36D+0KU7pt27/VFzTGMnHdd7DUMucDbOMp3DNS613F2DCUknBkyq2j1u2U+tVEBBzrQ4sjn4+pJwLysdU2tDvjOkwf5AHnr5dOin6adjN4JdVsSBlRcGyP+2v8Rq0nctTba6oOH5sICB+widaIakEFSQJZtu2RHgfcyDW7Cjeetil890NEymSNG8EgYnkv5S9chzmzzRKG6NKZ7od8COR5YXydSYypDyP+0VPiPkZuU6+gzny8aubdsB+R0+TPJ4vCWU48PGaBhmPNgYxC/vdDu6rn6KoaPTFNOeNCoNRT7YlnH0y2hBRrHFcJ1yrzzQyuolW3P/pIz2WGvMXANwQqWs1X/7
x-forefront-antispam-report:
 CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:PAVPR03MB10102.eurprd03.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(366016)(1800799024)(376014)(38070700021)(22082099003)(56012099003)(18002099003);DIR:OUT;SFP:1102;
x-ms-exchange-antispam-messagedata-chunkcount: 1
x-ms-exchange-antispam-messagedata-0:
 =?iso-8859-1?Q?hh5FNQkgfqw0j7HEStPyn11p2OHckYJuOZ6/LVra2fnF7JQLycHwX1/v1n?=
 =?iso-8859-1?Q?pxCyJdeNsr2o31xsO6LJ5jx+9QHmb7a80Xoy5hxzjrS5nkOvedT0mebB4p?=
 =?iso-8859-1?Q?nVkWBP36pIHjAafo1Z8o65Rp02gO1UAcyy7p4LwWviMJw+999vcIM9qUzc?=
 =?iso-8859-1?Q?OU0DoPOlVtMV2FTw+7NjZylJFZzIMn2QaJwQ49Lqjqcr9svp2KktLGO4Bp?=
 =?iso-8859-1?Q?Kbeu55+29yvqirA4xk1bKaFi4RWLPU0idwEjbYJ8EhJSdbc8EmhN6Z1dKX?=
 =?iso-8859-1?Q?5Ky0e0CVmGzJGuBThP6/8E9fB0HZNYJ/vdqHOtMuy0o/YGH1edSf7sp5UX?=
 =?iso-8859-1?Q?q5SJNQKpvEnLkrKqVyrU1aU/usC7LNttmReIH314mMebViBZxUZ8/lgzEt?=
 =?iso-8859-1?Q?12N2Z4rONBvcK5Ra5f982KEF/NEtKPMy2YvcGG0x5+sSow95GO9kNadq5P?=
 =?iso-8859-1?Q?0jVKmlg6W7fv4S3lt+SPsxwklbDVzA/VIp5zUH9IP0fReu5oNxJQkValK6?=
 =?iso-8859-1?Q?Ge635FOjjn8jyFtLe5aTWiDbB5WFi46QbzZIeJZHMwI+BkwXotAlX4XOuh?=
 =?iso-8859-1?Q?Guei6dczzpdzBv/VI7fRT46/CJhtEnMqWbafq0oRkd5EB+PuCS0PUQjtmv?=
 =?iso-8859-1?Q?g1KhuuymGrRK8buZ9wrU0Dx2zCAhTNvWblHE/Sq5O0EzYo0HsFNU7K/olg?=
 =?iso-8859-1?Q?ETVlFBQmAdostPhgeJpyddzc74m4WbFXcJpJgX9WJ8ffHO3pWYWPdQEGrE?=
 =?iso-8859-1?Q?3LOSNVrH+k/D0vYXX2BVkp3RpOhfRtPukOIvWiAz8lnE4b6DHIGeeq2uQ9?=
 =?iso-8859-1?Q?5pORdGQor4BphCwrRY3zW3oZr/cNH9PMNhZ28GH+LrxdbDWhV9YQfdXtsx?=
 =?iso-8859-1?Q?dhmKlM0L/Sg8AXsXEvCTMT5F4f3tWQurM7pZPzXDzMCxD9FHue/Kf8Odhy?=
 =?iso-8859-1?Q?vjrJxOl4Uk9oOj155M0pIvNprX5zlLgwS6OnfR7CZPVeohrUArs5HFxbTg?=
 =?iso-8859-1?Q?qfQZn6V9wSF4N69GHVKFcyxxlB5h2NBOrICmTgk9Au3msllAilZhgU+XXP?=
 =?iso-8859-1?Q?pvRbbOy6zBUNW2uZoGO163tawsHIynmRGFeOxI7IupU9iaK6ObJ4AV9NU5?=
 =?iso-8859-1?Q?q1uYBAMo3CxzyeL1bVOhz1x0U8rcouWculPspxT0rY2M1KaEdbqZrUn8Wb?=
 =?iso-8859-1?Q?q+0tvaO9TXhc8/SGn44W439cp/acfVrvMWOqYi+uQmY5rkNU70JA68e9yx?=
 =?iso-8859-1?Q?h5rfTQp0Gg6XNr5BRqYu4hkWZjuCGC+oVSyoMVsMg1vNQZ8yH/wQ3pw7He?=
 =?iso-8859-1?Q?IkMpo5qF23GjafQtzAS1SASfmL04vJxb7pHaf6WHvEkCYwpnAaUDHZTgie?=
 =?iso-8859-1?Q?RfORFrJGT+4lWmW0UqVJ0i0MArZsfUb+r2wJTErqbLdh5d3/7gIJIhs7sf?=
 =?iso-8859-1?Q?AjIo/TSPjJhPIZXhWQNdfXvsz1+PU2B4+m02Q3tL2sjdw6STgErvPOryYS?=
 =?iso-8859-1?Q?bxMY7yMU42+RuYFSXHjUPxQcouZSRfy1X8z3uZiI2fJVzwIFBmbWrvotTw?=
 =?iso-8859-1?Q?vPvTtwZ1DWDMkDe0/yEquMVO81/YMfZf4wPx6mDnqTtM3aHEZ9xfYx3Fpi?=
 =?iso-8859-1?Q?sDXS6cHVH61AYOMcS+l9tYnr7hsL6PTc4A5k/UVbdU7dFk3cx278tN3zeN?=
 =?iso-8859-1?Q?zVhl3IC5OSDh6pP7C79UPoAbEaYFTB6V27C15DnS6/0epZ0byFLzORGyP6?=
 =?iso-8859-1?Q?WdUSCeJVWRAwPTck72cilaDtMQNXZrbh6LClsBWnm0ybesu6EEa1KRGm8N?=
 =?iso-8859-1?Q?1e4xZkrJLcaZv9H9MKhTx0RjLOqXwPU=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: PAVPR03MB10102.eurprd03.prod.outlook.com
X-MS-Exchange-CrossTenant-Network-Message-Id: f79b1c04-2a35-405e-ba38-08de96408235
X-MS-Exchange-CrossTenant-originalarrivaltime: 09 Apr 2026 14:01:33.9435
 (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: m8FagHfZBkVLGjLgkd2H5Gcl/wqByHWonaQBgqqvHo7Z4tFjCcUSLgou8oy1FS1IVQTONipQp7xr102DnTpHVg==
X-MS-Exchange-Transport-CrossTenantHeadersStamped: PA3PR03MB10964
X-purgate-ID: tlsNG-4011c0/1775743296-0E74F0B1-B148B212/0/0
X-purgate-type: clean
X-purgate-size: 19628

From: Stewart Hildebrand <stewart.hildebrand@amd.com>

Introduce vPCI BAR mapping task queue. Store information needed to
map/unmap BARs in struct vpci_map_task. Allow queueing of BAR map/unmap
operations in a list, thus making it possible to perform multiple p2m
operations associated with single PCI device.

This is preparatory work for further changes that need to perform
multiple unmap/map operations before returning to guest.

At the moment, only a single operation will be queued. However, when
multiple operations are queued, there is a check in modify_bars() to
skip BARs already in the requested state that will no longer be
accurate. Remove this check in preparation of upcoming changes.

Signed-off-by: Stewart Hildebrand <stewart.hildebrand@amd.com>
Message-ID: <20260406191203.97662-3-stewart.hildebrand@amd.com>
---
v2->v3:
* new patch in this series, borrowed from [1]

[1]: https://patchew.org/Xen/20260406191203.97662-1-stewart.hildebrand@amd.=
com/20260406191203.97662-3-stewart.hildebrand@amd.com/
---
 xen/common/domain.c        |   5 +-
 xen/drivers/vpci/header.c  | 227 ++++++++++++++++++++++++++-----------
 xen/drivers/vpci/vpci.c    |  28 +----
 xen/include/xen/rangeset.h |   7 --
 xen/include/xen/vpci.h     |  21 ++--
 5 files changed, 179 insertions(+), 109 deletions(-)

diff --git a/xen/common/domain.c b/xen/common/domain.c
index 5ef7db8f09..b1931be987 100644
--- a/xen/common/domain.c
+++ b/xen/common/domain.c
@@ -455,8 +455,6 @@ static int vcpu_teardown(struct vcpu *v)
  */
 static void vcpu_destroy(struct vcpu *v)
 {
-    vpci_vcpu_destroy(v);
-
     free_vcpu_struct(v);
 }
=20
@@ -514,8 +512,7 @@ struct vcpu *vcpu_create(struct domain *d, unsigned int=
 vcpu_id)
     if ( arch_vcpu_create(v) !=3D 0 )
         goto fail_sched;
=20
-    if ( vpci_vcpu_init(v) )
-        goto fail_sched;
+    vpci_vcpu_init(v);
=20
     d->vcpu[vcpu_id] =3D v;
     if ( vcpu_id !=3D 0 )
diff --git a/xen/drivers/vpci/header.c b/xen/drivers/vpci/header.c
index 5bfb541b6a..451cdd3a6f 100644
--- a/xen/drivers/vpci/header.c
+++ b/xen/drivers/vpci/header.c
@@ -23,6 +23,7 @@
 #include <xen/lib.h>
 #include <xen/sched.h>
 #include <xen/softirq.h>
+#include <xen/xvmalloc.h>
=20
 #include <xsm/xsm.h>
=20
@@ -35,7 +36,7 @@
=20
 struct map_data {
     struct domain *d;
-    const struct vpci_bar *bar;
+    const struct vpci_bar_map *bar;
     bool map;
 };
=20
@@ -174,32 +175,20 @@ static void modify_decoding(const struct pci_dev *pde=
v, uint16_t cmd,
         ASSERT_UNREACHABLE();
 }
=20
-bool vpci_process_pending(struct vcpu *v)
+static int vpci_process_map_task(const struct pci_dev *pdev,
+                                 struct vpci_map_task *task)
 {
-    const struct pci_dev *pdev =3D v->vpci.pdev;
-    struct vpci_header *header =3D NULL;
     unsigned int i;
=20
-    if ( !pdev )
-        return false;
-
-    read_lock(&v->domain->pci_lock);
-
-    if ( !pdev->vpci || (v->domain !=3D pdev->domain) )
-    {
-        v->vpci.pdev =3D NULL;
-        read_unlock(&v->domain->pci_lock);
-        return false;
-    }
+    ASSERT(rw_is_locked(&pdev->domain->pci_lock));
=20
-    header =3D &pdev->vpci->header;
-    for ( i =3D 0; i < ARRAY_SIZE(header->bars); i++ )
+    for ( i =3D 0; i < ARRAY_SIZE(task->bars); i++ )
     {
-        struct vpci_bar *bar =3D &header->bars[i];
-        struct rangeset *mem =3D v->vpci.mem[i];
+        struct vpci_bar_map *bar =3D &task->bars[i];
+        struct rangeset *mem =3D bar->mem;
         struct map_data data =3D {
-            .d =3D v->domain,
-            .map =3D v->vpci.cmd & PCI_COMMAND_MEMORY,
+            .d =3D pdev->domain,
+            .map =3D task->cmd & PCI_COMMAND_MEMORY,
             .bar =3D bar,
         };
         int rc;
@@ -210,58 +199,116 @@ bool vpci_process_pending(struct vcpu *v)
         rc =3D rangeset_consume_ranges(mem, map_range, &data);
=20
         if ( rc =3D=3D -ERESTART )
-        {
-            read_unlock(&v->domain->pci_lock);
-            return true;
-        }
+            return rc;
=20
         if ( rc )
         {
             spin_lock(&pdev->vpci->lock);
             /* Disable memory decoding unconditionally on failure. */
-            modify_decoding(pdev, v->vpci.cmd & ~PCI_COMMAND_MEMORY,
-                            false);
+            modify_decoding(pdev, task->cmd & ~PCI_COMMAND_MEMORY, false);
             spin_unlock(&pdev->vpci->lock);
=20
-            /* Clean all the rangesets */
-            for ( i =3D 0; i < ARRAY_SIZE(header->bars); i++ )
-                if ( !rangeset_is_empty(v->vpci.mem[i]) )
-                     rangeset_purge(v->vpci.mem[i]);
+            if ( !is_hardware_domain(pdev->domain) )
+                domain_crash(pdev->domain);
+
+            return rc;
+        }
+    }
+
+    spin_lock(&pdev->vpci->lock);
+    modify_decoding(pdev, task->cmd, task->rom_only);
+    spin_unlock(&pdev->vpci->lock);
+
+    return 0;
+}
+
+static void destroy_map_task(struct vpci_map_task *task)
+{
+    unsigned int i;
+
+    if ( !task )
+    {
+        ASSERT_UNREACHABLE();
+        return;
+    }
+
+    for ( i =3D 0; i < ARRAY_SIZE(task->bars); i++ )
+        rangeset_destroy(task->bars[i].mem);
+
+    xvfree(task);
+}
+
+static void clear_map_queue(struct vcpu *v)
+{
+    struct vpci_map_task *task;
+
+    while ( (task =3D list_first_entry_or_null(&v->vpci.task_queue,
+                                             struct vpci_map_task,
+                                             next)) !=3D NULL )
+    {
+        list_del(&task->next);
+        destroy_map_task(task);
+    }
+}
+
+bool vpci_process_pending(struct vcpu *v)
+{
+    const struct pci_dev *pdev =3D v->vpci.pdev;
+    struct vpci_map_task *task;
=20
-            v->vpci.pdev =3D NULL;
+    if ( !pdev )
+        return false;
=20
+    read_lock(&v->domain->pci_lock);
+
+    if ( !pdev->vpci || (v->domain !=3D pdev->domain) )
+    {
+        clear_map_queue(v);
+        v->vpci.pdev =3D NULL;
+        read_unlock(&v->domain->pci_lock);
+        return false;
+    }
+
+    while ( (task =3D list_first_entry_or_null(&v->vpci.task_queue,
+                                             struct vpci_map_task,
+                                             next)) !=3D NULL )
+    {
+        int rc =3D vpci_process_map_task(pdev, task);
+
+        if ( rc =3D=3D -ERESTART )
+        {
             read_unlock(&v->domain->pci_lock);
+            return true;
+        }
=20
-            if ( !is_hardware_domain(v->domain) )
-                domain_crash(v->domain);
+        list_del(&task->next);
+        destroy_map_task(task);
=20
-            return false;
+        if ( rc )
+        {
+            clear_map_queue(v);
+            break;
         }
     }
     v->vpci.pdev =3D NULL;
=20
-    spin_lock(&pdev->vpci->lock);
-    modify_decoding(pdev, v->vpci.cmd, v->vpci.rom_only);
-    spin_unlock(&pdev->vpci->lock);
-
     read_unlock(&v->domain->pci_lock);
=20
     return false;
 }
=20
 static int __init apply_map(struct domain *d, const struct pci_dev *pdev,
-                            uint16_t cmd)
+                            struct vpci_map_task *task)
 {
-    struct vpci_header *header =3D &pdev->vpci->header;
     int rc =3D 0;
     unsigned int i;
=20
     ASSERT(rw_is_write_locked(&d->pci_lock));
=20
-    for ( i =3D 0; i < ARRAY_SIZE(header->bars); i++ )
+    for ( i =3D 0; i < ARRAY_SIZE(task->bars); i++ )
     {
-        struct vpci_bar *bar =3D &header->bars[i];
-        struct rangeset *mem =3D current->vpci.mem[i];
+        struct vpci_bar_map *bar =3D &task->bars[i];
+        struct rangeset *mem =3D bar->mem;
         struct map_data data =3D { .d =3D d, .map =3D true, .bar =3D bar }=
;
=20
         if ( rangeset_is_empty(mem) )
@@ -281,15 +328,52 @@ static int __init apply_map(struct domain *d, const s=
truct pci_dev *pdev,
         }
     }
     if ( !rc )
-        modify_decoding(pdev, cmd, false);
+        modify_decoding(pdev, task->cmd, false);
=20
     return rc;
 }
=20
-static void defer_map(const struct pci_dev *pdev, uint16_t cmd, bool rom_o=
nly)
+static struct vpci_map_task *alloc_map_task(const struct pci_dev *pdev,
+                                            uint16_t cmd, bool rom_only)
+{
+    struct vpci_map_task *task;
+    unsigned int i;
+
+    task =3D xvzalloc(struct vpci_map_task);
+
+    if ( !task )
+        return NULL;
+
+    for ( i =3D 0; i < ARRAY_SIZE(task->bars); i++ )
+    {
+        if ( !MAPPABLE_BAR(&pdev->vpci->header.bars[i]) )
+            continue;
+
+        task->bars[i].mem =3D rangeset_new(pdev->domain, NULL,
+                                         RANGESETF_no_print);
+
+        if ( !task->bars[i].mem )
+        {
+            destroy_map_task(task);
+            return NULL;
+        }
+
+        task->bars[i].addr =3D pdev->vpci->header.bars[i].addr;
+        task->bars[i].guest_addr =3D pdev->vpci->header.bars[i].guest_addr=
;
+    }
+
+    task->cmd =3D cmd;
+    task->rom_only =3D rom_only;
+
+    return task;
+}
+
+static void defer_map(const struct pci_dev *pdev, struct vpci_map_task *ta=
sk)
 {
     struct vcpu *curr =3D current;
=20
+    ASSERT(!curr->vpci.pdev || curr->vpci.pdev =3D=3D pdev);
+
     /*
      * FIXME: when deferring the {un}map the state of the device should no=
t
      * be trusted. For example the enable bit is toggled after the device
@@ -297,8 +381,8 @@ static void defer_map(const struct pci_dev *pdev, uint1=
6_t cmd, bool rom_only)
      * started for the same device if the domain is not well-behaved.
      */
     curr->vpci.pdev =3D pdev;
-    curr->vpci.cmd =3D cmd;
-    curr->vpci.rom_only =3D rom_only;
+    list_add_tail(&task->next, &curr->vpci.task_queue);
+
     /*
      * Raise a scheduler softirq in order to prevent the guest from resumi=
ng
      * execution with pending mapping operations, to trigger the invocatio=
n
@@ -313,11 +397,17 @@ int vpci_modify_bars(const struct pci_dev *pdev, uint=
16_t cmd, bool rom_only)
     struct pci_dev *tmp;
     const struct domain *d;
     const struct vpci_msix *msix =3D pdev->vpci->msix;
+    struct vpci_map_task *task;
     unsigned int i, j;
     int rc;
=20
     ASSERT(rw_is_write_locked(&pdev->domain->pci_lock));
=20
+    task =3D alloc_map_task(pdev, cmd, rom_only);
+
+    if ( !task )
+        return -ENOMEM;
+
     /*
      * Create a rangeset per BAR that represents the current device memory
      * region and compare it against all the currently active BAR memory
@@ -333,19 +423,18 @@ int vpci_modify_bars(const struct pci_dev *pdev, uint=
16_t cmd, bool rom_only)
     for ( i =3D 0; i < ARRAY_SIZE(header->bars); i++ )
     {
         struct vpci_bar *bar =3D &header->bars[i];
-        struct rangeset *mem =3D current->vpci.mem[i];
+        struct rangeset *mem =3D task->bars[i].mem;
         unsigned long start =3D PFN_DOWN(bar->addr);
         unsigned long end =3D PFN_DOWN(bar->addr + bar->size - 1);
         unsigned long start_guest =3D PFN_DOWN(bar->guest_addr);
         unsigned long end_guest =3D PFN_DOWN(bar->guest_addr + bar->size -=
 1);
=20
-        ASSERT(mem);
+        if ( !mem )
+            continue;
=20
         if ( !MAPPABLE_BAR(bar) ||
              (rom_only ? bar->type !=3D VPCI_BAR_ROM
-                       : (bar->type =3D=3D VPCI_BAR_ROM && !header->rom_en=
abled)) ||
-             /* Skip BARs already in the requested state. */
-             bar->enabled =3D=3D !!(cmd & PCI_COMMAND_MEMORY) )
+                       : (bar->type =3D=3D VPCI_BAR_ROM && !header->rom_en=
abled)) )
             continue;
=20
         if ( !pci_check_bar(pdev, _mfn(start), _mfn(end)) )
@@ -368,7 +457,8 @@ int vpci_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 =3D -EINVAL;
+            goto fail;
         }
=20
         rc =3D rangeset_add_range(mem, start_guest, end_guest);
@@ -376,13 +466,13 @@ int vpci_modify_bars(const struct pci_dev *pdev, uint=
16_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;
         }
=20
         /* Check for overlap with the already setup BAR ranges. */
         for ( j =3D 0; j < i; j++ )
         {
-            struct rangeset *prev_mem =3D current->vpci.mem[j];
+            struct rangeset *prev_mem =3D task->bars[j].mem;
=20
             if ( rangeset_is_empty(prev_mem) )
                 continue;
@@ -393,7 +483,7 @@ int vpci_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;
             }
         }
=20
@@ -403,7 +493,7 @@ int vpci_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;
         }
     }
=20
@@ -414,9 +504,9 @@ int vpci_modify_bars(const struct pci_dev *pdev, uint16=
_t cmd, bool rom_only)
         unsigned long end =3D PFN_DOWN(vmsix_table_addr(pdev->vpci, i) +
                                      vmsix_table_size(pdev->vpci, i) - 1);
=20
-        for ( j =3D 0; j < ARRAY_SIZE(current->vpci.mem); j++ )
+        for ( j =3D 0; j < ARRAY_SIZE(task->bars); j++ )
         {
-            struct rangeset *mem =3D current->vpci.mem[j];
+            struct rangeset *mem =3D task->bars[j].mem;
=20
             if ( rangeset_is_empty(mem) )
                 continue;
@@ -427,7 +517,7 @@ int vpci_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;
             }
         }
     }
@@ -471,7 +561,7 @@ int vpci_modify_bars(const struct pci_dev *pdev, uint16=
_t cmd, bool rom_only)
                 for ( j =3D 0; j < ARRAY_SIZE(header->bars); j++)
                 {
                     const struct vpci_bar *bar =3D &header->bars[j];
-                    struct rangeset *mem =3D current->vpci.mem[j];
+                    struct rangeset *mem =3D task->bars[j].mem;
=20
                     if ( !rangeset_overlaps_range(mem, start, end) ||
                          /*
@@ -490,7 +580,7 @@ int vpci_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;
                     }
                 }
             }
@@ -513,12 +603,19 @@ int vpci_modify_bars(const struct pci_dev *pdev, uint=
16_t cmd, bool rom_only)
          * will always be to establish mappings and process all the BARs.
          */
         ASSERT((cmd & PCI_COMMAND_MEMORY) && !rom_only);
-        return apply_map(pdev->domain, pdev, cmd);
+        rc =3D apply_map(pdev->domain, pdev, task);
+        destroy_map_task(task);
+        return rc;
     }
=20
-    defer_map(pdev, cmd, rom_only);
+    defer_map(pdev, task);
=20
     return 0;
+
+ fail:
+    destroy_map_task(task);
+
+    return rc;
 }
=20
 static void cf_check cmd_write(
diff --git a/xen/drivers/vpci/vpci.c b/xen/drivers/vpci/vpci.c
index d069ca6d9c..ce9fb5b357 100644
--- a/xen/drivers/vpci/vpci.c
+++ b/xen/drivers/vpci/vpci.c
@@ -24,33 +24,9 @@
=20
 #ifdef __XEN__
=20
-void vpci_vcpu_destroy(struct vcpu *v)
+void vpci_vcpu_init(struct vcpu *v)
 {
-    if ( !has_vpci(v->domain) && !is_idle_domain(v->domain) )
-        return;
-
-    for ( unsigned int i =3D 0; i < ARRAY_SIZE(v->vpci.mem); i++ )
-        RANGESET_DESTROY(v->vpci.mem[i]);
-}
-
-int vpci_vcpu_init(struct vcpu *v)
-{
-    unsigned int i;
-
-    if ( !has_vpci(v->domain) && !is_idle_domain(v->domain) )
-        return 0;
-
-    for ( i =3D 0; i < ARRAY_SIZE(v->vpci.mem); i++ )
-    {
-        char str[32];
-
-        snprintf(str, sizeof(str), "%pv:BAR%u", v, i);
-        v->vpci.mem[i] =3D rangeset_new(v->domain, str, RANGESETF_no_print=
);
-        if ( !v->vpci.mem[i] )
-            return -ENOMEM;
-    }
-
-    return 0;
+    INIT_LIST_HEAD(&v->vpci.task_queue);
 }
=20
 #ifdef CONFIG_HAS_VPCI_GUEST_SUPPORT
diff --git a/xen/include/xen/rangeset.h b/xen/include/xen/rangeset.h
index f01e00ec92..817505badf 100644
--- a/xen/include/xen/rangeset.h
+++ b/xen/include/xen/rangeset.h
@@ -40,13 +40,6 @@ struct rangeset *rangeset_new(
 void rangeset_destroy(
     struct rangeset *r);
=20
-/* Destroy a rangeset, and zero the pointer to it. */
-#define RANGESET_DESTROY(r)  \
-    ({                       \
-        rangeset_destroy(r); \
-        (r) =3D NULL;          \
-    })
-
 /*
  * Set a limit on the number of ranges that may exist in set @r.
  * NOTE: This must be called while @r is empty.
diff --git a/xen/include/xen/vpci.h b/xen/include/xen/vpci.h
index b55bacbe6e..e34f7abe6d 100644
--- a/xen/include/xen/vpci.h
+++ b/xen/include/xen/vpci.h
@@ -19,8 +19,7 @@
  */
 #define VPCI_MAX_VIRT_DEV       (PCI_SLOT(~0) + 1)
=20
-void vpci_vcpu_destroy(struct vcpu *v);
-int vpci_vcpu_init(struct vcpu *v);
+void vpci_vcpu_init(struct vcpu *v);
=20
 /* Assign vPCI to device by adding handlers. */
 int __must_check vpci_assign_device(struct pci_dev *pdev);
@@ -155,14 +154,23 @@ struct vpci {
 };
=20
 #ifdef __XEN__
-struct vpci_vcpu {
+struct vpci_map_task {
     /* Per-vcpu structure to store state while {un}mapping of PCI BARs. */
-    const struct pci_dev *pdev;
-    struct rangeset *mem[ARRAY_SIZE(((struct vpci_header *)NULL)->bars)];
+    struct list_head next;
+    struct vpci_bar_map {
+        uint64_t addr;
+        uint64_t guest_addr;
+        struct rangeset *mem;
+    } bars[ARRAY_SIZE(((struct vpci_header *)NULL)->bars)];
     uint16_t cmd;
     bool rom_only : 1;
 };
=20
+struct vpci_vcpu {
+    const struct pci_dev *pdev;
+    struct list_head task_queue;
+};
+
 void vpci_dump_msi(void);
=20
 /* Arch-specific vPCI MSI helpers. */
@@ -207,8 +215,7 @@ bool vpci_ecam_read(pci_sbdf_t sbdf, unsigned int reg, =
unsigned int len,
 #else /* !CONFIG_HAS_VPCI */
 struct vpci_vcpu {};
=20
-static inline void vpci_vcpu_destroy(struct vcpu *v) { }
-static inline int vpci_vcpu_init(struct vcpu *v) { return 0; }
+static inline void vpci_vcpu_init(struct vcpu *v) { }
=20
 static inline int vpci_reinit_ext_capabilities(struct pci_dev *pdev)
 {
--=20
2.51.2


From xen-devel-bounces@lists.xenproject.org Thu Apr 09 14:01:42 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 09 Apr 2026 14:01:42 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1277471.1562654 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wApwv-0004Kq-K4; Thu, 09 Apr 2026 14:01:37 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1277471.1562654; Thu, 09 Apr 2026 14: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 1wApwv-0004Kg-HU; Thu, 09 Apr 2026 14:01:37 +0000
Received: by outflank-mailman (input) for mailman id 1277471;
 Thu, 09 Apr 2026 14:01:36 +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 1wApwu-0004KE-00
 for xen-devel@lists.xenproject.org; Thu, 09 Apr 2026 14:01:36 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wApwt-005jok-67
 for xen-devel@lists.xenproject.org; Thu, 09 Apr 2026 16:01:35 +0200
Received: from [10.42.69.10] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <Mykyta_Poturai@epam.com>)
 id 69d7b12b-e002-0a2a0a5209dd-0a2a450ab160-46
 for <xen-devel@lists.xenproject.org>; Thu, 09 Apr 2026 16:01:35 +0200
Received: from [52.101.66.132]
 (helo=DUZPR83CU001.outbound.protection.outlook.com)
 by tlsNG-4011c0.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.0)
 (envelope-from <Mykyta_Poturai@epam.com>)
 id 69d7b13e-ee98-0a2a450a0019-34654284bb10-3
 for <xen-devel@lists.xenproject.org>; Thu, 09 Apr 2026 16:01:35 +0200
Received: from PAVPR03MB10102.eurprd03.prod.outlook.com
 (2603:10a6:102:30d::12) by PA3PR03MB10964.eurprd03.prod.outlook.com
 (2603:10a6:102:4b2::10) with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9769.42; Thu, 9 Apr
 2026 14:01:32 +0000
Received: from PAVPR03MB10102.eurprd03.prod.outlook.com
 ([fe80::b8c6:f37a:987a:beb]) by PAVPR03MB10102.eurprd03.prod.outlook.com
 ([fe80::b8c6:f37a:987a:beb%5]) with mapi id 15.20.9769.016; Thu, 9 Apr 2026
 14:01: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=u0Gw3SG0rG+rXP57aIcJs3FSDlAyKTjN3tdfPjprLSCm8zrgPKnXXC6++meAUHL9MiEebo0+340debtDOaQiE/N44/AmJZXwjHldOASTlerpnYDWWj/6Da6HsSaPd2xS9hxEk26F79EqBRbLRxLDfL/p+QzXB0td3FkKaUNxZqVMyoEbqlOlB1wivYi6FnrhKXf/oE+PVNpomT6imBnAXV7nu9S3sjDhC3/0B8gMa3d8zpqt0ixnK3t/XCRP/jz7SYyK7hrAlkr7yLABq1+qx1cGbS8VCJjnOzrQ+vs7lhEGIH017cUXwM0XOuK2GY2bJhOibyRWIddepvBGMqezWg==
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com;
 s=arcselector10001;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1;
 bh=CjlKN+hVcv4fDStYjwfvo9IU/5C6OQvkDnHA+mRGcfQ=;
 b=qCJ3AG8WyTUCF2ZECa0OxRN33HXfRDKgbfOJ5mYocoa+ZUYakF09SSRgUqJg96OcEYS3wU7vCh4ROdXjT1mXCPqwF9UmsQs0gs8D5+3T3JYzvCooll05carOKcnSJdvMC6lAns1xq1AGpziwuwx1pwxe7YhHoT/5y2DCLAc9vFQkt9/6QJaycwGSbg0GaC5h66fWCPsLyh15bHFfomgcsctS1v/TLgkfcx0K0y6XLnE8hDV44oesCPJHbiEUPiHpKTD+4cvfUuQ57SzWUDhyeUX8V/VkhIweEWBBTIIIHku+DdjDV5Mp2eMoqjIK1OcO1GjX48R1CeYM96FiL3LDxg==
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=CjlKN+hVcv4fDStYjwfvo9IU/5C6OQvkDnHA+mRGcfQ=;
 b=m5ywkjmTMVQJQnLgtY96eGgqWJUQl73IcCUNs03AJz1zC8bpWnmRXyogBXg4oZjAB4fhnA3TYyfhetDNNhexP5uJsdO+tE1buAL0WmaqHmWd0CqHw/dsaJrzsPeUrkSp0Ira7SaMNJ0APh9B47+ME8CfckBy6yQUxocpo+MYhV4GQSn8FCg5dGo6Evo73ajbw+BH/Rw/xuPyu5yVtXx+DrEPSyW8LkuiwzqpBdO4mlZr4FsdfWLkc8DOx8ATHiLduZzcoLFVplmdaOU9+2eWlujqylSjXYFvEH7GUeUzXe3trP659oPG75JmR1Cs/KKon3WDNapD1BRrI+M0o9tkaw==
From: Mykyta Poturai <Mykyta_Poturai@epam.com>
To: "xen-devel@lists.xenproject.org" <xen-devel@lists.xenproject.org>
CC: Stewart Hildebrand <stewart.hildebrand@amd.com>,
	=?iso-8859-1?Q?Roger_Pau_Monn=E9?= <roger.pau@citrix.com>, Mykyta Poturai
	<Mykyta_Poturai@epam.com>, Teddy Astie <teddy.astie@vates.tech>
Subject: [PATCH v3 1/7] vpci: rename and export vpci_modify_bars
Thread-Topic: [PATCH v3 1/7] vpci: rename and export vpci_modify_bars
Thread-Index: AQHcyCle4fajjYJKo0m49i60rboCMg==
Date: Thu, 9 Apr 2026 14:01:32 +0000
Message-ID:
 <f9857f13c9dc7c1e0a0c93cb0651f797292b04fa.1775742115.git.mykyta_poturai@epam.com>
References: <cover.1775742115.git.mykyta_poturai@epam.com>
In-Reply-To: <cover.1775742115.git.mykyta_poturai@epam.com>
Accept-Language: en-US
Content-Language: en-US
X-MS-Has-Attach:
X-MS-TNEF-Correlator:
authentication-results: dkim=none (message not signed)
 header.d=none;dmarc=none action=none header.from=epam.com;
x-ms-publictraffictype: Email
x-ms-traffictypediagnostic: PAVPR03MB10102:EE_|PA3PR03MB10964:EE_
x-ms-office365-filtering-correlation-id: 938b6f27-9ff3-4b7f-7e16-08de96408180
x-ms-exchange-senderadcheck: 1
x-ms-exchange-antispam-relay: 0
x-microsoft-antispam:
 BCL:0;ARA:13230040|366016|1800799024|376014|38070700021|22082099003|56012099003|18002099003;
x-microsoft-antispam-message-info:
 tFrts46u86fOoVp/bZdws/HCAbhkAP6gV83dx7bXJO9dYbGSowu7lvv0cDn6y4Hrly/3BXgAFmcPp5SLx6m8rdm7Kt0eiU241U2JPRdRSErwxU/AxkURoa9ZEz7CufFQ1qtXIDdrOjEUuKdM44CPFMBDlr03ED/1ie3Z/oeErjQGadIpmc1IcfItCPhum9CdkomsPgCsgzUNz0DKoIvlN9yu/hJ7ohcX3lRvusoWGRh12k+LRH6uKWScgpyGjV+zTaiZuh3ozLSK9nc3ZPoM0ApPw6kO06zwsA4RuYamLLI1/eg+Pa0qrxzFflQsrgRgfaVaoGtnqVEEKDl4msq/op4X0AHPXfgUnJ7V7pINnLItNUPPJLWJ+LgBpKHhUD7JMDjq0I/h0ubHlaVyBX4Mc9hj/SA+5bypIK+db4KVLi4QnmCKkphRc4d9rjjz83fCdJr0BWuuUQO4XYZ7xiQtkwqr0u8NZKDCtKhXsY9qkjRKKlEdnHLYpE0Zssmn2r9+EZPkCDTI++VvCVJbVnXSrwRWEOxoB29uWaN9Bsw5j42S0bYvSCUtDbhLyzmCLck3tR6f4HML8fZLFZ9+FtU2e2W2xhow34SJ1QEl/EDKR6sFagaf1XgDAQNmH4ZhbPsw9U0t3w5g6GwU1erpjJSZ5Trx3ABOp7UCPEMczKyG/9DUr5JvdhiWzJjShHriAuDrVbg3eQcC27QSn9aj64lbVgk85oNZuu+mz3+TqaIUqXjTIt9o6Y9wr+YoRnCy60kw95bUgt6Mb3IrAHPhPKXtyVAp55EVSP/ypszIcJLLkGE=
x-forefront-antispam-report:
 CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:PAVPR03MB10102.eurprd03.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(366016)(1800799024)(376014)(38070700021)(22082099003)(56012099003)(18002099003);DIR:OUT;SFP:1102;
x-ms-exchange-antispam-messagedata-chunkcount: 1
x-ms-exchange-antispam-messagedata-0:
 =?iso-8859-1?Q?ttVsidU+SWgFJIAjA3FaBuobvfVGnTL2D1JpNwpDNMKs5NgLy5aDIm1K7H?=
 =?iso-8859-1?Q?3aSc0mND6p3YZJF/fKrvWRLL1SbbVZi8j5ekovsCAWVDg0QDfaDk7g4u4f?=
 =?iso-8859-1?Q?5hoGCaIe0sXArrLHXcGTgun2vtHorsHVGP0VxeRoGOxLBZCN2st/C6GQCg?=
 =?iso-8859-1?Q?0I9BpleskydoW8vAkgcJeUqZuEgjMZhVvJoEm3WkXMKRyCuk+D4n2IW1yw?=
 =?iso-8859-1?Q?gTlJOzxpgUOQo3ad9rJ8KOVSUwAA+WAsDF946jGjP6Z/Xm/6LyrsBclLSd?=
 =?iso-8859-1?Q?JzO8QcUlHFgefZ9IrxK68IhLrYVlOOCblU7666tZHvStk+cfSwQEXr79yc?=
 =?iso-8859-1?Q?+cguIDbhFXKqTdfrKwzpZmqaDZIlBOvvAq50bsccj4DaFL2Iy+mrB6PP5G?=
 =?iso-8859-1?Q?Rm0DwMuBB+OcpSRbUsC1P919XWBBx+GVUiOiBSKcpC3+bFN91i5mEUVfJh?=
 =?iso-8859-1?Q?IYt/4UbMWu+6eVUv+nTsZC2i5U4b/rshJvePAzGLt3uHpLy4lzF4mRUCJQ?=
 =?iso-8859-1?Q?sAmuxAoykbY5pWiIEGCahIhMm4M0tAmlLLp3FUwimfEIClMHb38TIVE1NA?=
 =?iso-8859-1?Q?xnWYyqA/lawelw8AjpCV+b7TmIbfpcH/bkOETmWP2RdcWAJZlLcQyZZ6hV?=
 =?iso-8859-1?Q?osCfGQsIXBL9d0zVc1IP6I5IAAay4gWyXXO7GExuXKZKoq8DNH+MLcQnO6?=
 =?iso-8859-1?Q?NMYA0nNG4XrTr+f2XgLTKUxEBcIite0zyOmt4HwojXlkdoKwsE/AOeeiPR?=
 =?iso-8859-1?Q?G+xpUSMZE64OGYHRhKG0e4K7v1PGM0GF6NeMpLJDLlwNJdOM97Tel7Edik?=
 =?iso-8859-1?Q?NgbC2ar+OYjRZP69NWPVUP0xpiNgeq3tNKkRMX0wlDEKLqOTq3mRgwo8XI?=
 =?iso-8859-1?Q?JjwBRqXmBHFKPaYb2BymOAOm3FzpVhpzBswn0osl3CJc9fXwd0lEC159R0?=
 =?iso-8859-1?Q?mwEgzrqdEYxy7ejtEeNz698IG3Rs/x5BcfyRiO1CbBfjTFLW774WyKRVi6?=
 =?iso-8859-1?Q?M9MeyzTxuNHUgNLmVsGhRwjrOigO4J2VpVPCv9uDVgf/AwghUbq+kzllRO?=
 =?iso-8859-1?Q?tb536O1teAAaf6GQjVzcVGmIeHW8JUhx/mv8WHdmygXEhC002yIdgy3tBu?=
 =?iso-8859-1?Q?NwvhCSp5MmQJfI2BKJFXhTl2cOILirgOwfwtHnUSstuX3xaDfu8+nvx7JA?=
 =?iso-8859-1?Q?SWE4XFZyJ8C14j3IZtPfV+aJIGbxab5MzMHv4RgDxSe8b8DhRkdJuJJecc?=
 =?iso-8859-1?Q?zW0hAnhb36EczzQKZMTTEzlzR7iRARw0Htc29msgcZnVLuizOj2icPWy21?=
 =?iso-8859-1?Q?sDJNx4Oe0Hi9nn8/S8s32wp8PVOTzjbY08zlL15RWUx4S1I9hqDsHLPEMc?=
 =?iso-8859-1?Q?lppqYLBYL2F1kjA0GAi4dOwget78bVDPGutiO6dd+ST4avore3eTGHFy74?=
 =?iso-8859-1?Q?kBYXPS5P4MSjWYMWjrXlmPrb+oTPuhiUyDX9pGYhnCaPQJY4FaV6U+VHFJ?=
 =?iso-8859-1?Q?YyNqvDl43w5k1vr8ArtV7gcbgXmADIaVpLZJDdA6qBxa2CFP3x1AYavoRf?=
 =?iso-8859-1?Q?gUkmKCdcZZxuwoPX9KLq00taB95l03HweXpuMxKIjXouZVu8S5ASGe7ATT?=
 =?iso-8859-1?Q?i8b09+Av3IxwtNgOLWLxmqPRt6TGfKpl0I0sAFitehgMmewnWUuB/rOMks?=
 =?iso-8859-1?Q?nGLvteGKWOGTAFHUirJVYvA0Uy+2QInE/+zEwDLiY+/Vq/7cFwShGm4S0L?=
 =?iso-8859-1?Q?MIOHhwm7VMoklopvFqsYOkn0TvLG1e4QmxlHhuGvsc7pxckk2sUKhl1R27?=
 =?iso-8859-1?Q?/V3ziYn1LfKSE78PX+nvxBA1c1oyk4c=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: PAVPR03MB10102.eurprd03.prod.outlook.com
X-MS-Exchange-CrossTenant-Network-Message-Id: 938b6f27-9ff3-4b7f-7e16-08de96408180
X-MS-Exchange-CrossTenant-originalarrivaltime: 09 Apr 2026 14:01:32.5739
 (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: Ia4w88aADiQ0w7lukqEt9lYZ7t0WeJF6yq21Z0LKg2N7fSdTkPVP5/Cbs8XBdhvLGWKbb8LAHV8Hy2wyVipKtw==
X-MS-Exchange-Transport-CrossTenantHeadersStamped: PA3PR03MB10964
X-purgate-ID: tlsNG-4011c0/1775743295-BFB450B1-5FA90408/0/0
X-purgate-type: clean
X-purgate-size: 3963

From: Stewart Hildebrand <stewart.hildebrand@amd.com>

Export functions required for SR-IOV support.

Signed-off-by: Stewart Hildebrand <stewart.hildebrand@amd.com>
Signed-off-by: Mykyta Poturai <mykyta_poturai@epam.com>
Reviewed-by: Teddy Astie <teddy.astie@vates.tech>

---
v2->v3:
* move declaration to private.h

v1->v2
* Collect RBs
---
 xen/drivers/vpci/header.c  | 16 +++++++++-------
 xen/drivers/vpci/private.h |  3 +++
 2 files changed, 12 insertions(+), 7 deletions(-)

diff --git a/xen/drivers/vpci/header.c b/xen/drivers/vpci/header.c
index a760d8c32f..96995e098b 100644
--- a/xen/drivers/vpci/header.c
+++ b/xen/drivers/vpci/header.c
@@ -305,7 +305,7 @@ static void defer_map(const struct pci_dev *pdev, uint1=
6_t cmd, bool rom_only)
     raise_softirq(SCHEDULE_SOFTIRQ);
 }
=20
-static int modify_bars(const struct pci_dev *pdev, uint16_t cmd, bool rom_=
only)
+int vpci_modify_bars(const struct pci_dev *pdev, uint16_t cmd, bool rom_on=
ly)
 {
     struct vpci_header *header =3D &pdev->vpci->header;
     struct pci_dev *tmp;
@@ -546,7 +546,7 @@ static void cf_check cmd_write(
          * memory decoding bit has not been changed, so leave everything a=
s-is,
          * hoping the guest will realize and try again.
          */
-        modify_bars(pdev, cmd, false);
+        vpci_modify_bars(pdev, cmd, false);
     else
         pci_conf_write16(pdev->sbdf, reg, cmd);
 }
@@ -714,13 +714,15 @@ static void cf_check rom_write(
      * Pass PCI_COMMAND_MEMORY or 0 to signal a map/unmap request, note th=
at
      * this fabricated command is never going to be written to the registe=
r.
      */
-    else if ( modify_bars(pdev, new_enabled ? PCI_COMMAND_MEMORY : 0, true=
) )
+    else if ( vpci_modify_bars(pdev,
+                               new_enabled ? PCI_COMMAND_MEMORY : 0,
+                               true) )
         /*
          * No memory has been added or removed from the p2m (because the a=
ctual
          * p2m changes are deferred in defer_map) and the ROM enable bit h=
as
          * not been changed, so leave everything as-is, hoping the guest w=
ill
          * realize and try again. It's important to not update rom->addr i=
n the
-         * unmap case if modify_bars has failed, or future attempts would
+         * unmap case if vpci_modify_bars has failed, or future attempts w=
ould
          * attempt to unmap the wrong address.
          */
         return;
@@ -800,8 +802,8 @@ int vpci_init_header(struct pci_dev *pdev)
     /*
      * For DomUs, clear PCI_COMMAND_{MASTER,MEMORY,IO} and other
      * DomU-controllable bits in PCI_COMMAND. Devices assigned to DomUs wi=
ll
-     * start with memory decoding disabled, and modify_bars() will not be =
called
-     * at the end of this function.
+     * start with memory decoding disabled, and vpci_modify_bars() will no=
t be
+     * called at the end of this function.
      */
     if ( !is_hwdom )
         cmd &=3D ~(PCI_COMMAND_VGA_PALETTE | PCI_COMMAND_INVALIDATE |
@@ -926,7 +928,7 @@ int vpci_init_header(struct pci_dev *pdev)
             goto fail;
     }
=20
-    return (cmd & PCI_COMMAND_MEMORY) ? modify_bars(pdev, cmd, false) : 0;
+    return (cmd & PCI_COMMAND_MEMORY) ? vpci_modify_bars(pdev, cmd, false)=
 : 0;
=20
  fail:
     pci_conf_write16(pdev->sbdf, PCI_COMMAND, cmd);
diff --git a/xen/drivers/vpci/private.h b/xen/drivers/vpci/private.h
index 2907f6b40f..6fdf8a20d9 100644
--- a/xen/drivers/vpci/private.h
+++ b/xen/drivers/vpci/private.h
@@ -138,6 +138,9 @@ static inline size_t vmsix_table_size(const struct vpci=
 *vpci, unsigned int nr)
                                                        8), 8);
 }
=20
+/* Map/unmap the BARs of a vPCI device. */
+int vpci_modify_bars(const struct pci_dev *pdev, uint16_t cmd, bool rom_on=
ly);
+
 #endif /* __XEN__ */
=20
 #endif /* VPCI_PRIVATE_H */
--=20
2.51.2


From xen-devel-bounces@lists.xenproject.org Thu Apr 09 14:01:48 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 09 Apr 2026 14:01:48 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1277479.1562726 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wApx6-0006M1-H0; Thu, 09 Apr 2026 14:01:48 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1277479.1562726; Thu, 09 Apr 2026 14: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 1wApx6-0006LR-Br; Thu, 09 Apr 2026 14:01:48 +0000
Received: by outflank-mailman (input) for mailman id 1277479;
 Thu, 09 Apr 2026 14:01:47 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92) id 1wApx4-0006HP-W3
 for xen-devel@lists.xenproject.org; Thu, 09 Apr 2026 14:01:46 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wApx4-00CXs8-Br
 for xen-devel@lists.xenproject.org; Thu, 09 Apr 2026 16:01:46 +0200
Received: from [10.42.69.6] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <oleksii.kurochko@gmail.com>)
 id 69d7b146-e002-0a2a0a5209dd-0a2a45068fc2-38
 for <xen-devel@lists.xenproject.org>; Thu, 09 Apr 2026 16:01:46 +0200
Received: from [209.85.128.53] (helo=mail-wm1-f53.google.com)
 by tlsNG-16d1c6.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.0)
 (envelope-from <oleksii.kurochko@gmail.com>)
 id 69d7b14a-0df0-0a2a45060019-d1558035c4d2-3
 for <xen-devel@lists.xenproject.org>; Thu, 09 Apr 2026 16:01:46 +0200
Received: by mail-wm1-f53.google.com with SMTP id
 5b1f17b1804b1-488c2690057so9604115e9.0
 for <xen-devel@lists.xenproject.org>; Thu, 09 Apr 2026 07:01:46 -0700 (PDT)
Received: from [192.168.1.6] (user-109-243-69-121.play-internet.pl.
 [109.243.69.121]) by smtp.gmail.com with ESMTPSA id
 5b1f17b1804b1-488cd0f4d7bsm49226945e9.1.2026.04.09.07.01.42
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Thu, 09 Apr 2026 07:01:43 -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=20251104 header.d=gmail.com header.i="@gmail.com" header.h="Content-Transfer-Encoding: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=20251104; t=1775743306; x=1776348106; darn=lists.xenproject.org;
        h=content-transfer-encoding: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;
        bh=CZ0Go1IU1nLejijS21PYpLjHe6D+n3SZcGcqbvp2Uu4=;
        b=cUH3TSQNdAUZVlAI78PNBkxyqZOq5tNbweMdzwzNFUFISSIYlOt7y0NBJ78sEA3AXb
         dL31IPiUnQ03okvAH84GTLECqL+cQ8L5gWZt4qKWplWFJxDD1niEs9EEVXpG6A+msHT4
         ngUjma+b4e6vdVanLbjpq/8cHlayp0yPQDX+xGC9j60q8tKuLXyToLjPhZj1RaHLglGR
         0DAPL2rs3r6BCvHd315u9Ikcje0klnH729h2OdAkklOrEtg4DdnvzJEtiHOu8FNbm49s
         aTQvRJDO3z3tWyBHefAj9yrpM1B/q30wJcQSGMKqrKRtYimOzoUSBBlSk3UiqUZPqrK9
         O2jQ==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20251104; t=1775743306; x=1776348106;
        h=content-transfer-encoding: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;
        bh=CZ0Go1IU1nLejijS21PYpLjHe6D+n3SZcGcqbvp2Uu4=;
        b=T+9DAqXt2ZS57aIietuYBVTMqo4cqM5S7gKQjy0lj3kh4erWlUF0McoVtGnHSVK5h5
         BfJp4Q2YYshr82ulEqfQw8Htsvd/OOmLWiRNXnVN6Oc0r7wPHZgnFH8Iz0lV4q51WYSJ
         suuvzhSzdyC0hKrHv7DHf3e3iBFlVQueGyAbRT3HWA8b5UQCkfHd5oj9rCWE+xO6lOWo
         wu/v/t27CG32dOjFWW/x+7GMWmoif2V1Ho/ygmC8yzWYiuZIbZZfs58zZHZfdli5BtH3
         yR21ILoQFGZx5OGBZdDJMRcaiW6BYiqH4oyJy1GxlFOwtIsxsgiMy5IwBsA2+vvT4wOv
         mwCg==
X-Forwarded-Encrypted: i=1; AJvYcCWDPZjLqhEwmOKJHiwt/jmEmpFExLRGpKGnX0Oeg2jeqLVI6TCo/JkgcAl+bWPjEZxLNV6QvORBrQ4=@lists.xenproject.org
X-Gm-Message-State: AOJu0YwpCAk+OaJfn23kZPC/0n0cKbKHtLdDXrFbusngDjIbCp8IQfWv
	gkF0l85DWfaSEWTPI3zf1LWOtfSKqorzLHo00W1ILAX8NXqwmVKcjiZS
X-Gm-Gg: AeBDietDaSke7av1NLkYkBta7t2Wbp6BReM3NPkpJKNk1nJYyPCLa39cXr8T1H6sNBL
	1SnAlUALzEwKErLc5X3BabGhy1ncsaRzdgPaFkiNXtQoeUuT4jB2xXygX2/aELSAPFyt2bS/OOY
	hxndAF57olG2HtAfdvM0o1qeu5N1mvQRDv/kt63erGY2pxK4ksjDj1KB1lVoEhcfSA6gtwiHXx/
	Fed2yVy1iEMBRCsE3wcxATtgWlWgxosybCMcbS2xpjBDweBiDK8pGLvbZXbeAYx9xuXYaRFiue5
	WW2pNGvxckI2Rn1OtttNY/lPZfX6OADwYicjGepNxIijduApdQJ33eEAVc1rCfHje12e+4rPg/m
	9s49soP40LLBbhz6tcR0O9irbnZ/0q3MMS5ukrr75S+ZUvL7tJhSiTjtZHa4oaLW9lzBkQUuJPg
	Ox1vBrGhclwDVVTeFh8YdlNRdb3z8JD7J/W84U42FRAGWgZbE8qvx0HxejuN1otA3jz1SXzM0i0
	ME=
X-Received: by 2002:a05:600c:1f1a:b0:485:9a50:3370 with SMTP id 5b1f17b1804b1-488ccf63aa9mr53181165e9.8.1775743305103;
        Thu, 09 Apr 2026 07:01:45 -0700 (PDT)
Message-ID: <5dfc8821-6485-4cbc-867a-7146a561aa89@gmail.com>
Date: Thu, 9 Apr 2026 16:01:42 +0200
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH v1 02/27] xen/riscv: Implement construct_domain()
From: Oleksii Kurochko <oleksii.kurochko@gmail.com>
To: Jan Beulich <jbeulich@suse.com>
Cc: Romain Caritey <Romain.Caritey@microchip.com>,
 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.pau@citrix.com>,
 Stefano Stabellini <sstabellini@kernel.org>, xen-devel@lists.xenproject.org
References: <cover.1773157782.git.oleksii.kurochko@gmail.com>
 <3a86599284108e6f2a27488a03145f8dd1b71def.1773157782.git.oleksii.kurochko@gmail.com>
 <cd1fa52a-0ff2-4b7f-9b0b-c33b6a01b6c8@suse.com>
 <95fc62d9-cfd4-4b75-a9b0-7e90c9ba1095@gmail.com>
 <c3e20570-6dbf-4dd9-86de-d334e0f71f3a@suse.com>
 <2926ad08-39c8-4559-bb40-7231c69d9a65@gmail.com>
Content-Language: en-US
In-Reply-To: <2926ad08-39c8-4559-bb40-7231c69d9a65@gmail.com>
Content-Type: text/plain; charset=UTF-8; format=flowed
Content-Transfer-Encoding: 8bit
X-purgate-ID: tlsNG-16d1c6/1775743306-642483D8-0E2304A8/10/73395122804
X-purgate-type: spam
X-purgate-size: 2043



On 4/9/26 3:39 PM, Oleksii Kurochko wrote:
>>
>>>>> +    regs->sepc = kinfo->entry;
>>>>> +
>>>>> +    /* Guest boot cpuid = 0 */
>>>>> +    regs->a0 = 0;
>>>>> +    regs->a1 = kinfo->dtb_paddr;
>>>>> +
>>>>> +    for ( unsigned int i = 1; i < d->max_vcpus; i++ )
>>>>> +    {
>>>>> +        if ( vcpu_create(d, i) == NULL )
>>>>> +        {
>>>>> +            printk("Failed to allocate %pd v%d\n", d, i);
>>>>> +            break;
>>>> And no error is indicated to the caller?
>>> No, as generally it is enough to have only one vCPU0 to run domain, so
>>> we have to print that something went wrong with allocation of vCPU1...n
>>> but it is okay to me to continue domain construction.
>> Hmm, now that I look there, sched_setup_dom0_vcpus() ignores errors
>> and doesn't even emit a log message. Question is why neither Arm nor
>> RISC-V use that function, when we have it.
> 
> I haven't seen this function, I will re-use it and in separate patch 
> suggest to re-use it for Arm.
> 
> One thing I think we want to do then is to drop #ifdef x86 around 
> sched_setup_dom0_vcpus() and rename it to sched_setup_dom_vcpus().
> And maybe add dprintk()'s to provide some information about which vCPUs 
> were created and which not.

Arm doesn't re-use sched_setup_dom0_vcpus() because it has extra if() 
inside:
     for ( i = 1; i < d->max_vcpus; i++ )
     {
         if ( vcpu_create(d, i) == NULL )
         {
             printk("Failed to allocate d%dv%d\n", d->domain_id, i);
             break;
         }

         if ( is_64bit_domain(d) )
             vcpu_switch_to_aarch64_mode(d->vcpu[i]);
     }

     domain_update_node_affinity(d);

sched_setup_dom0_vcpus() still could be re-used but the an extra for() 
loop will be needed for:
         if ( is_64bit_domain(d) )
             vcpu_switch_to_aarch64_mode(d->vcpu[i]);

I think it doesn't then too much sense to re-use 
sched_setup_dom0_vcpus() for Arm.

~ Oleksii


From xen-devel-bounces@lists.xenproject.org Thu Apr 09 14:22:27 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 09 Apr 2026 14:22:27 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1277577.1562735 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wAqGz-0004JU-3W; Thu, 09 Apr 2026 14:22:21 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1277577.1562735; Thu, 09 Apr 2026 14:22: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 1wAqGz-0004JN-0s; Thu, 09 Apr 2026 14:22:21 +0000
Received: by outflank-mailman (input) for mailman id 1277577;
 Thu, 09 Apr 2026 14:22:19 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <dpsmith@apertussolutions.com>) id 1wAqGx-0004JH-GO
 for xen-devel@lists.xenproject.org; Thu, 09 Apr 2026 14:22:19 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wAqGw-00227Y-SQ
 for xen-devel@lists.xenproject.org; Thu, 09 Apr 2026 16:22:18 +0200
Received: from [10.42.69.2] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <dpsmith@apertussolutions.com>)
 id 69d7b60d-5cb7-0a2a0a5109dd-0a2a4502abf2-36
 for <xen-devel@lists.xenproject.org>; Thu, 09 Apr 2026 16:22:18 +0200
Received: from [136.143.188.51] (helo=sender4-of-o51.zoho.com)
 by tlsNG-720697.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.0)
 (envelope-from <dpsmith@apertussolutions.com>)
 id 69d7b619-42fa-0a2a45020019-888fbc33526d-3
 for <xen-devel@lists.xenproject.org>; Thu, 09 Apr 2026 16:22:18 +0200
Received: by mx.zohomail.com with SMTPS id 177574452402699.36308080543574;
 Thu, 9 Apr 2026 07:22:04 -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=zoho header.d=apertussolutions.com header.i="dpsmith@apertussolutions.com" header.h="Message-ID:Date:MIME-Version:Subject:To:Cc:References:From:In-Reply-To:Content-Type:Content-Transfer-Encoding"
ARC-Seal: i=1; a=rsa-sha256; t=1775744526; cv=none; 
	d=zohomail.com; s=zohoarc; 
	b=BfBSWefW1BhNediGuKRcHVfzOjDXKP7RxuS3imV/ZdAoUttTXSm+MwLL97bnDvBXC44cNyzlSuqEMJpGM8Hzbos2F8tsDe1BQUlGerPaq+qrSKD+FHlUlqZSLaoKcEGzVsDkmh2lJT9MITx05kuwbKvyeHVO3G4AXv8xe6rPN3Y=
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; 
	t=1775744526; h=Content-Type:Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:MIME-Version:Message-ID:References:Subject:Subject:To:To:Message-Id:Reply-To; 
	bh=imeMNDLn99b+xNdVIDfzn74PuiUbdT5o5oCsPuPIrz4=; 
	b=EzJka3odHO0oCAm+WHEhXLhP1h++cHUJxUQ13beB1Ymq0uu4AFeZWQ3qvNMRj1k5CnWSkap/+zsGqEsvhgTFHuOEw5P42ZXU8Fotxt7FdCAdgzqSLBF3tcdAJDF15kcqGGIGIwLoviBYqCccmObHsYRVZ0pFISc31WYACYkMF3Y=
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: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; t=1775744526;
	s=zoho; d=apertussolutions.com; i=dpsmith@apertussolutions.com;
	h=Message-ID:Date:Date:MIME-Version:Subject:Subject:To:To:Cc:Cc:References:From:From:In-Reply-To:Content-Type:Content-Transfer-Encoding:Message-Id:Reply-To;
	bh=imeMNDLn99b+xNdVIDfzn74PuiUbdT5o5oCsPuPIrz4=;
	b=Zlo119EeLYAZ9n/6kS+Auk28WE8X9OCjU+iz6sDCJp5Ar+UWC8L9CDwM9mN//F64
	3rNtmMxh3KJ3PLOvCEFVmC81cvelrOieFDa/59jdDhZMmjIHfka6SNYHe1RZmdEhiEq
	0LZjdnsE1b5+6Nvc/w0FEfRcAm95EIgnhsNmvq3M=
Message-ID: <2df92603-ab5e-4990-8a6a-e7a56d952243@apertussolutions.com>
Date: Thu, 9 Apr 2026 10:22:02 -0400
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH] xen/efi: Reduce ifdefary in efi_exit_boot()
Content-Language: en-US
To: Andrew Cooper <andrew.cooper3@citrix.com>, Jan Beulich <jbeulich@suse.com>
Cc: =?UTF-8?Q?Marek_Marczykowski-G=C3=B3recki?=
 <marmarek@invisiblethingslab.com>, Xen-devel <xen-devel@lists.xenproject.org>
References: <20260409103805.176240-1-andrew.cooper3@citrix.com>
 <65b04675-abbf-413e-abe7-6cd463913fdd@suse.com>
 <04b9c465-4940-4a16-8abc-9c3440ab7337@citrix.com>
From: "Daniel P. Smith" <dpsmith@apertussolutions.com>
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=
In-Reply-To: <04b9c465-4940-4a16-8abc-9c3440ab7337@citrix.com>
Content-Type: text/plain; charset=UTF-8; format=flowed
Content-Transfer-Encoding: 7bit
X-ZohoMailClient: External
X-purgate-ID: tlsNG-720697/1775744538-AF52CCD1-5D14FBB5/0/0
X-purgate-type: clean
X-purgate-size: 3956

On 4/9/26 07:11, Andrew Cooper wrote:
> On 09/04/2026 12:01 pm, Jan Beulich wrote:
>> On 09.04.2026 12:38, Andrew Cooper wrote:
>>> Use IS_ENABLED() rather than #ifdef to give the compiler visibility into the
>>> block, which in turn removes the #ifdef from the varaible block.
>> Just to mention, if it was just / mainly ...
>>
>>> --- a/xen/common/efi/boot.c
>>> +++ b/xen/common/efi/boot.c
>>> @@ -1335,9 +1335,7 @@ static void __init efi_exit_boot(EFI_HANDLE ImageHandle, EFI_SYSTEM_TABLE *Syste
>>>       EFI_STATUS status;
>>>       UINTN info_size = 0, map_key;
>>>       bool retry;
>>> -#ifdef CONFIG_EFI_SET_VIRTUAL_ADDRESS_MAP
>>>       unsigned int i;
>>> -#endif
>> ... this to be got rid of, we could as well use ...
>>
>>> @@ -1371,31 +1369,32 @@ static void __init efi_exit_boot(EFI_HANDLE ImageHandle, EFI_SYSTEM_TABLE *Syste
>>>       if ( EFI_ERROR(status) )
>>>           PrintErrMesg(L"Cannot exit boot services", status);
>>>   
>>> -#ifdef CONFIG_EFI_SET_VIRTUAL_ADDRESS_MAP
>>> -    for ( i = 0; i < efi_memmap_size; i += efi_mdesc_size )
>>      for ( unsigned int i = 0; i < efi_memmap_size; i += efi_mdesc_size )
>>
>> now. But yes, the typo aspect you mention can be avoided altogether by what
>> you change things to.
> 
> I originally had this change in the patch, but it interferes with diff
> showing (just) an indentation change.
> 
> I'm not fussed either way.
> 
>>
>>> +    if ( IS_ENABLED(CONFIG_EFI_SET_VIRTUAL_ADDRESS_MAP) )
>>>       {
>>> -        EFI_MEMORY_DESCRIPTOR *desc = efi_memmap + i;
>>> +        for ( i = 0; i < efi_memmap_size; i += efi_mdesc_size )
>>> +        {
>>> +            EFI_MEMORY_DESCRIPTOR *desc = efi_memmap + i;
>>>   
>>> -        /*
>>> -         * Runtime services regions are always mapped here.
>>> -         * Attributes may be adjusted in efi_init_memory().
>>> -         */
>>> -        if ( (desc->Attribute & EFI_MEMORY_RUNTIME) ||
>>> -             desc->Type == EfiRuntimeServicesCode ||
>>> -             desc->Type == EfiRuntimeServicesData )
>>> -            desc->VirtualStart = desc->PhysicalStart;
>>> -        else
>>> -            desc->VirtualStart = INVALID_VIRTUAL_ADDRESS;
>>> -    }
>>> -    status = efi_rs->SetVirtualAddressMap(efi_memmap_size, efi_mdesc_size,
>>> -                                          mdesc_ver, efi_memmap);
>>> -    if ( status != EFI_SUCCESS )
>>> -    {
>>> -        printk(XENLOG_ERR "EFI: SetVirtualAddressMap() failed (%#lx), disabling runtime services\n",
>>> -               status);
>>> -        __clear_bit(EFI_RS, &efi_flags);
>>> +            /*
>>> +             * Runtime services regions are always mapped here.
>>> +             * Attributes may be adjusted in efi_init_memory().
>>> +             */
>>> +            if ( (desc->Attribute & EFI_MEMORY_RUNTIME) ||
>>> +                 desc->Type == EfiRuntimeServicesCode ||
>>> +                 desc->Type == EfiRuntimeServicesData )
>>> +                desc->VirtualStart = desc->PhysicalStart;
>>> +            else
>>> +                desc->VirtualStart = INVALID_VIRTUAL_ADDRESS;
>>> +        }
>>> +        status = efi_rs->SetVirtualAddressMap(efi_memmap_size, efi_mdesc_size,
>>> +                                              mdesc_ver, efi_memmap);
>>> +        if ( status != EFI_SUCCESS )
>>> +        {
>>> +            printk(XENLOG_ERR "EFI: SetVirtualAddressMap() failed (%#lx), disabling runtime services\n",
>>> +                   status);
>> Could I talk you into switching to
>>
>>              printk(XENLOG_ERR
>>                     "EFI: SetVirtualAddressMap() failed (%#lx), disabling runtime services\n",
>>                     status);
>>
>> to make the line at least a little less long?
> 
> Ok, but I'm not going to resend just for that.
> 
> ~Andrew

I'm good with fix up on commit.

Acked-by: Daniel P. Smith <dpsmith@apertussolutions.com>


From xen-devel-bounces@lists.xenproject.org Thu Apr 09 14:32:14 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 09 Apr 2026 14:32:14 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1277589.1562744 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wAqQU-0006dL-4n; Thu, 09 Apr 2026 14:32:10 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1277589.1562744; Thu, 09 Apr 2026 14:32: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 1wAqQU-0006dE-1Q; Thu, 09 Apr 2026 14:32:10 +0000
Received: by outflank-mailman (input) for mailman id 1277589;
 Thu, 09 Apr 2026 14:32:09 +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 1wAqQT-0006d8-4B
 for xen-devel@lists.xenproject.org; Thu, 09 Apr 2026 14:32:09 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wAqQS-00E6rf-Fs
 for xen-devel@lists.xenproject.org; Thu, 09 Apr 2026 16:32:08 +0200
Received: from [10.42.69.11] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <Michal.Orzel@amd.com>)
 id 69d7b85b-5cb7-0a2a0a5109dd-0a2a450b9280-42
 for <xen-devel@lists.xenproject.org>; Thu, 09 Apr 2026 16:32:08 +0200
Received: from [52.101.193.48]
 (helo=CH1PR05CU001.outbound.protection.outlook.com)
 by tlsNG-42698a.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.0)
 (envelope-from <Michal.Orzel@amd.com>)
 id 69d7b866-bca8-0a2a450b0019-3465c13094a3-3
 for <xen-devel@lists.xenproject.org>; Thu, 09 Apr 2026 16:32:07 +0200
Received: from SA1P222CA0120.NAMP222.PROD.OUTLOOK.COM (2603:10b6:806:3c5::16)
 by PH7PR12MB5927.namprd12.prod.outlook.com (2603:10b6:510:1da::9)
 with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9769.17; Thu, 9 Apr
 2026 14:32:02 +0000
Received: from SA2PEPF00003AE4.namprd02.prod.outlook.com
 (2603:10b6:806:3c5:cafe::5d) by SA1P222CA0120.outlook.office365.com
 (2603:10b6:806:3c5::16) with Microsoft SMTP Server (version=TLS1_3,
 cipher=TLS_AES_256_GCM_SHA384) id 15.20.9769.40 via Frontend Transport; Thu,
 9 Apr 2026 14:32:03 +0000
Received: from satlexmb07.amd.com (165.204.84.17) by
 SA2PEPF00003AE4.mail.protection.outlook.com (10.167.248.4) with Microsoft
 SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id
 15.20.9769.17 via Frontend Transport; Thu, 9 Apr 2026 14:32:02 +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.17; Thu, 9 Apr
 2026 09:32:02 -0500
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.17; Thu, 9 Apr
 2026 07:31:59 -0700
Received: from [10.252.147.171] (10.180.168.240) by satlexmb07.amd.com
 (10.181.42.216) with Microsoft SMTP Server id 15.2.2562.17 via Frontend
 Transport; Thu, 9 Apr 2026 09:31:58 -0500
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@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=VoaTDaHmcM92dZpdk/ecgbOPijyaVDbHT2AGA4gkJWsQ5BUiJfpq0Uz4aJM05HMIqIdTSEXc2Y7tVRfDxkbDDQBx1Q+RdqBQYY0GdODLhFLDZTSKW/nyFVv0XIJQqHM/PRALqAXdd9FZs29u7GvSj2MnWXbLo+BYPL4AXVijmJ12vS5Iomn+u9CMm6cev7LeabTMFPGaaFTp/YfRpSM+dXEP+qaso4L8yp5mrrEmruSGpzMbuDdmyIj6HVj3AzB451anUS5rej/7aHN1YsBv7oyGS7Pon+2ZARCHoplmQSfLrhyiTGCCQvRDb5zQuGl0yz3JRcnrhShqUBEBXgzCIA==
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com;
 s=arcselector10001;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1;
 bh=WVT6ms/4/5B1430m35U1YpiaxU3qA1qtSjiP14nFtLw=;
 b=KdGCz/C9w1oR2CtnuTD3uCN4E6i1uXiqWJyuNYHjxmgV4ZRCkz7U2vYYIr73+g/wZ7/56ceMbUWbrW0D1Vrx9XdRIZIfLJn6v78DfYwIb+U2dSPnd35yrBteoqKb6HBD/aN9Td4VspYkzjeXuKXQ3lSqitV+Z28CgxBngRdiXonRqY4xttAx0mGxZQEaIhqHWmJBZNFL3V+qJuR61oV16rvAb4Xovjb0ZklRJ8s0JV1cRcBTzhF50w7VzTRsTBFWjRR7U9koqKNkv6nzpZ8P1fHGzyQkyz13z4IaHUzwYxBxLUqZOc7dyOZBBjFISeOsKFKoqsWBUKrtLeE3msvyPA==
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=WVT6ms/4/5B1430m35U1YpiaxU3qA1qtSjiP14nFtLw=;
 b=e9iUgk+vkVxifKOlO4GAk2ddLHLjsVK9u1PxQpdRiqx4Rh9DzfbMMYG3VOPLJ97OcH05py1JnK0mRQyaJbodAxArYd6T8/e8TIvjG8/blEHPscSTJ2YM4w2gcpnzie1dU4Uv8qwe87mEtZWzy5cealUwVz9Fs/ZEfR2iol1Ng6M=
X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 165.204.84.17)
 smtp.mailfrom=amd.com; dkim=none (message not signed)
 header.d=none;dmarc=pass action=none header.from=amd.com;
Received-SPF: Pass (protection.outlook.com: domain of amd.com designates
 165.204.84.17 as permitted sender) receiver=protection.outlook.com;
 client-ip=165.204.84.17; helo=satlexmb07.amd.com; pr=C
Message-ID: <685f565a-ca8f-4a76-8b66-6f09614d1ee5@amd.com>
Date: Thu, 9 Apr 2026 16:31:58 +0200
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH v2 1/4] xen/drivers/char: fix SCIF IRQ registration
 failure propagation
To: Oleksii Moisieiev <Oleksii_Moisieiev@epam.com>,
	"xen-devel@lists.xenproject.org" <xen-devel@lists.xenproject.org>
CC: Bertrand Marquis <bertrand.marquis@arm.com>, Julien Grall
	<julien@xen.org>, Stefano Stabellini <sstabellini@kernel.org>, "Volodymyr
 Babchuk" <Volodymyr_Babchuk@epam.com>
References: <cover.1775742562.git.oleksii_moisieiev@epam.com>
 <276f353ec36258dc545bef581389e60a162988b6.1775742562.git.oleksii_moisieiev@epam.com>
From: "Orzel, Michal" <michal.orzel@amd.com>
Content-Language: en-US
In-Reply-To: <276f353ec36258dc545bef581389e60a162988b6.1775742562.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: SA2PEPF00003AE4:EE_|PH7PR12MB5927:EE_
X-MS-Office365-Filtering-Correlation-Id: 3a120a0c-3da7-40ce-bde9-08de9644c42d
X-MS-Exchange-SenderADCheck: 1
X-MS-Exchange-AntiSpam-Relay: 0
X-Microsoft-Antispam:
	BCL:0;ARA:13230040|82310400026|36860700016|1800799024|376014|56012099003|22082099003|18002099003;
X-Microsoft-Antispam-Message-Info:
	1tbSHkTc056lED1qJ9KOxM9Ki1Gmwk+2xzOK+xSR884zQy34T/+t+/EaBRjTO0mpMCdh0HzvnuSNYfszFbGSBvpi3tmxvjcg7y1cQKoZvqoBvezmNi0BNZzqIhYs2u1ov+sL2kn+RSjqqDUd149C4wovzWs1lb+sox8xKUQaXTuK89PHFDqJ6Fy8j/RhQHwuR/6ITlBZFU5j7NpRXSGj8GoY9/7nIV0nX7zZ3FES54SQ/uNLsjjk4pQld/gR1WwyxCF4z9V17VzfLDJRoh1GZ2MiTLDcwmsTPwVXk9HGtIPfurz0webgI9Vwscd0i9aDpvIbbciEdxyYHCLadU5zChzZcl7tEvvCiPPWWSm9FejnE39oy4kKcSkAVlMHUZKDhIPd9+saLGktr+qU6xqUK7aQCHHsgyl2pfC+875esxUxa1zrcrGx7xLzePRPPat5blrV70ExbD4G/O+Yw7szt2p6FY1X3hjiFhf1Bf1/v9GomuaUBHnvwnLOsrvo0Klms31emD8G3laCh9P4C3FpdbipJcr22EGj4f+wOYCqymaPTCq1Cmb+onfPxa4vCAxnIHOjzG5Gc0/n2GFJ7cqT91ba1Q5YUADBiqjOd2wHURKL3aRr9egwLGgoRXPdimEBVZDx2q6aY7RNE1Zg2pyGYAaCK6SfVjsIIEthRS/bS0HG+8vmu6Gwyg7Agb85pzzw3lLtSc4REgsgKK4VUHdczDt2GTHH1jJU+LfKJvZVsGtaHG5bRwo2g7R4CEgcE5JBBxmusyBLVAP6ud8YnJz5bg==
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)(1800799024)(376014)(56012099003)(22082099003)(18002099003);DIR:OUT;SFP:1101;
X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1
X-MS-Exchange-AntiSpam-MessageData-0:
	Xl6p+XHCk/WR/vGnVU5MF/4RiRnVFbQgsvgCOm9wtx1Ovp+Yf6EfrLnEnWUizepRf5p96SAZbUt8SY8U+56rmSoq7QMWQhpy7BuOU5sVpRMagI7149qJqtAfq/jAYIiGgzGPqlGRNaDfqgkbIRDkLNROq+v0S3bHf8bKBa2C2Sm3Dajpp8TFGWy3aON2llN35QKJKgolRm0lil3+BdsKex1+F5dz6YuPLv7Lc30xPI/l18Yv/8iuAjqigjPipiElSgnBe4mHEMAkarWc5LcjUhZpv1YtpOcvEK4KoY+wAfL0e+IIJmO9OozHELLHaSmfx8aaxaqiVGj/ojGFuWQkROPkNj/LQklkgi97n8430G0kGNpeHiKmRYGVomjvZYc5MtBGO3vz+NJLJcHN7ShieBQaK78oKg8IxJ8vdZaWuFD2+iaIjZB5HnTlvY9w5IFc
X-OriginatorOrg: amd.com
X-MS-Exchange-CrossTenant-OriginalArrivalTime: 09 Apr 2026 14:32:02.6061
 (UTC)
X-MS-Exchange-CrossTenant-Network-Message-Id: 3a120a0c-3da7-40ce-bde9-08de9644c42d
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:
	SA2PEPF00003AE4.namprd02.prod.outlook.com
X-MS-Exchange-CrossTenant-AuthAs: Anonymous
X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem
X-MS-Exchange-Transport-CrossTenantHeadersStamped: PH7PR12MB5927
X-purgate-ID: tlsNG-42698a/1775745127-EF9412A1-32AA93AE/0/0
X-purgate-type: clean
X-purgate-size: 1504



On 09/04/2026 15:50, Oleksii Moisieiev wrote:
> In scif_uart_init_postirq(), when setup_irq() returns an error the
> failure was only logged via dprintk() and execution continued,
> unconditionally writing TIE|RIE|REIE into the Serial Control Register
> (SCSCR). This armed all three hardware interrupt lines (TX FIFO empty,
> RX data ready, receive error) with no handler registered to service
> them. On platforms where the GIC receives these asserted lines, the
> result is either repeated spurious-interrupt warnings or an unhandled
> interrupt fault.
> 
> The fix adds an early return inside the error branch. The
> interrupt-enable write to SCSCR is skipped entirely when no handler is
> registered.
> 
> SCIF TX continues to operate correctly after this change. The Xen
> serial framework never calls serial_async_transmit() for SCIF, so
> port->txbuf is always NULL. This causes __serial_putc() to take the
> synchronous finite-capacity path, which polls the SCFSR_TDFE hardware
> flag directly and does not depend on the interrupt mechanism. RX
> wouldn't work if irq wasn't registered.
> 
> As a secondary clean-up, the hardware error-flag clearing sequence is
> moved to before the setup_irq() call so that error bits accumulated
> since init_preirq() are cleared unconditionally, regardless of whether
> IRQ registration succeeds.
> 
> Signed-off-by: Oleksii Moisieiev <oleksii_moisieiev@epam.com>
Reviewed-by: Michal Orzel <michal.orzel@amd.com>

~Michal



From xen-devel-bounces@lists.xenproject.org Thu Apr 09 14:33:25 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 09 Apr 2026 14:33:25 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1277597.1562753 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wAqRg-00077L-EI; Thu, 09 Apr 2026 14:33:24 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1277597.1562753; Thu, 09 Apr 2026 14: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 1wAqRg-00077E-AY; Thu, 09 Apr 2026 14:33:24 +0000
Received: by outflank-mailman (input) for mailman id 1277597;
 Thu, 09 Apr 2026 14:33:22 +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 1wAqRe-000774-Ox
 for xen-devel@lists.xenproject.org; Thu, 09 Apr 2026 14:33:22 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wAqRe-0098Ii-4Z
 for xen-devel@lists.xenproject.org; Thu, 09 Apr 2026 16:33:22 +0200
Received: from [10.42.69.12] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <Michal.Orzel@amd.com>)
 id 69d7b8b1-e002-0a2a0a5209dd-0a2a450c9b4c-2
 for <xen-devel@lists.xenproject.org>; Thu, 09 Apr 2026 16:33:21 +0200
Received: from [40.93.198.16]
 (helo=CY7PR03CU001.outbound.protection.outlook.com)
 by tlsNG-d25034.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.0)
 (envelope-from <Michal.Orzel@amd.com>)
 id 69d7b8b0-f40c-0a2a450c0019-285dc610e85b-3
 for <xen-devel@lists.xenproject.org>; Thu, 09 Apr 2026 16:33:21 +0200
Received: from SJ0PR05CA0076.namprd05.prod.outlook.com (2603:10b6:a03:332::21)
 by DS7PR12MB8249.namprd12.prod.outlook.com (2603:10b6:8:ea::16) with
 Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9791.32; Thu, 9 Apr
 2026 14:33:17 +0000
Received: from SJ5PEPF000001C9.namprd05.prod.outlook.com
 (2603:10b6:a03:332:cafe::d5) by SJ0PR05CA0076.outlook.office365.com
 (2603:10b6:a03:332::21) with Microsoft SMTP Server (version=TLS1_3,
 cipher=TLS_AES_256_GCM_SHA384) id 15.20.9769.33 via Frontend Transport; Thu,
 9 Apr 2026 14:33:17 +0000
Received: from satlexmb07.amd.com (165.204.84.17) by
 SJ5PEPF000001C9.mail.protection.outlook.com (10.167.242.37) with Microsoft
 SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id
 15.20.9769.17 via Frontend Transport; Thu, 9 Apr 2026 14:33:17 +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.17; Thu, 9 Apr
 2026 09:33:16 -0500
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.17; Thu, 9 Apr
 2026 07:33:16 -0700
Received: from [10.252.147.171] (10.180.168.240) by satlexmb07.amd.com
 (10.181.42.216) with Microsoft SMTP Server id 15.2.2562.17 via Frontend
 Transport; Thu, 9 Apr 2026 09:33:15 -0500
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@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=uXUH92Kr4Ul+DBw/Nv7H+Snrs0sc2vfsX1/T7qetgbZqLaLwqwoMv9ngSskk/rTpXDN3Mo2R2KM/4vpAZ8dP7Qculh4kMFqOJFroDdSL36iHOZ9iDsFsDcLwHy12lyqASEV6WqpIQ4mo+XpGxhra7XoyOWb4Th2mnmTmMIboyK4wrKU7ud6a8uLXU6L9SoU6tcGhVHUZ5eQ/MDmVDh5glvV+FsywaGE/gD4o4qRKXXya6YuTbU8WlIk/vmGl/0m9G2inNV5blDP5GqlwN3sZNXKwYaYKsbF4ZZa8VO/7qqPwlJgIXuVLAR4DzWra7tjzqf+RvWo0g3kpI13vOA5vow==
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com;
 s=arcselector10001;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1;
 bh=fJUtP/iDO2spTKYHFNGBHi/9Yu5vL6tP0LS3/Jfd7sY=;
 b=u1LXprYVGIVwXpcJMJzRKF0TI9t3UNNhW901Hkrc0Eu4EJmATUtmtMAsbv7/Ng/avtZXcurfam1i2UfZdq0V7X1b+RAWlFCfiRNKcQpz2rkchwBeSGKXa/Goh+4V0Zw4c6m+AlrY+Gx3dwxYyFB7JaS0B+o4Ho0W0I1Ua+BKkSxwDewIUYWGAPPgc/mhzfj9bV3wm02lmcEwhPsY6L32Sk9vzgj8QHzR1r0xD2+/XuSdu2aj9vbpv4fjvpCCA1mk8qOSS66HO9O+wkKwb5qlbJn/jy2p7xRkAB7RU+zzW7CcbJe9Cp+2yEWIEMsn9D8WxMtk3BOY17eggS2CIyXtSg==
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=fJUtP/iDO2spTKYHFNGBHi/9Yu5vL6tP0LS3/Jfd7sY=;
 b=ZaAwhM+QvfZGR6MVeDCyb89dOq0izkpjfwJE23qYZECmRnmzWi3KSp6VME5bR5YIlcF47Saq7in6yFreu13cwFnJcJqUI69Xg96c7UQ2aTl6eAEpADHp/Qy3ye+byMVYpFlm6EXGHPJapAPa5NmEKhf12/J/GRlBw2h4BPhy9uc=
X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 165.204.84.17)
 smtp.mailfrom=amd.com; dkim=none (message not signed)
 header.d=none;dmarc=pass action=none header.from=amd.com;
Received-SPF: Pass (protection.outlook.com: domain of amd.com designates
 165.204.84.17 as permitted sender) receiver=protection.outlook.com;
 client-ip=165.204.84.17; helo=satlexmb07.amd.com; pr=C
Message-ID: <d4a57649-7d09-4dc4-8843-d20d8a2e88f9@amd.com>
Date: Thu, 9 Apr 2026 16:33:15 +0200
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH v2 4/4] xen/drivers/char: fix exynos4210 IRQ registration
 failure propagation
To: Oleksii Moisieiev <Oleksii_Moisieiev@epam.com>,
	"xen-devel@lists.xenproject.org" <xen-devel@lists.xenproject.org>
CC: Bertrand Marquis <bertrand.marquis@arm.com>, Julien Grall
	<julien@xen.org>, Stefano Stabellini <sstabellini@kernel.org>, "Volodymyr
 Babchuk" <Volodymyr_Babchuk@epam.com>
References: <cover.1775742562.git.oleksii_moisieiev@epam.com>
 <043b73edeee02b477f210cfd82f0b2940de2ef21.1775742562.git.oleksii_moisieiev@epam.com>
From: "Orzel, Michal" <michal.orzel@amd.com>
Content-Language: en-US
In-Reply-To: <043b73edeee02b477f210cfd82f0b2940de2ef21.1775742562.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: SJ5PEPF000001C9:EE_|DS7PR12MB8249:EE_
X-MS-Office365-Filtering-Correlation-Id: cc35ecb2-4f0e-4099-8827-08de9644f0da
X-MS-Exchange-SenderADCheck: 1
X-MS-Exchange-AntiSpam-Relay: 0
X-Microsoft-Antispam:
	BCL:0;ARA:13230040|36860700016|82310400026|376014|1800799024|18002099003|22082099003|56012099003;
X-Microsoft-Antispam-Message-Info:
	aw1GpUl97GUNwHvJt+6GON28+Ic0B4CVnaSTTz1j3ueguyoe5Zb6j3s1cw3ox2I3yWdEK0gYluuRlxQ9l3osBYn5zXFDDe+tLNUVGFt7CJGd7diKPfIHmvpsJJRBdRsKfc/yrObDkbrg5GcBqUSUd2DNqup+5PBWP43saMDPrIq+bTKm3qoafGjHzDzQ3zShP27JLDuZX2b8RwsuUj5XZhW9vp0Uyt89SbbAyB0eFdcBaKsnlHrPaUFHAifEsuegEcK4teM+8jc/a6KH2XhV6+hKqMI9iGh+S9PtiO25BjtIJb4VFTYi/s0XfOB2XTZCiNqYDDA7wKvCIi0He0v+sM3QkNdyWZRvW+iT6MffVXm0J/dfgAccCyLF2rQOdU2HKyHQslfhs2MOI8NRr9oEqlGvHhC+n1K2O9X05DCom4gMfriHuE4LOk3+FwnnFxXyEJUmTLIQMch5ecH1jfJ2A+nyjz7rbOmOm/zGfxx9+UdUwc59QSNRae9yohwqaxuZgA4cv5zpBj3ivEPElDh7omEeUkxAlr1Hbx01c/SBTvpa+/g5r0SIiiTa2oCLwn8wfAK/QkyJ+Cj8BfEfJHCdtEbnd03rhkit890tMNMNOp3C0sxvKHenxm4bxJ9pCBd9rnLpgRSM9TdigmtrzFV/rK8sYrRUlct6kzjlFqcuSpj3tomIs0pt79Hzclysvdc9d5kl819pWOSfJ3FZpJ99rPRnM/4Ajch97oZG9g/+/fm8F/1Z23jdWbwPGZNJJDWBqvC5A1TfuItmDb73qYDAag==
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)(1800799024)(18002099003)(22082099003)(56012099003);DIR:OUT;SFP:1101;
X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1
X-MS-Exchange-AntiSpam-MessageData-0:
	gd6mJyucktj4eHkDUEAdY/fRlIq7IerTK19DgamhC7u156I+R9z85EpXqr2kYGJszkCxwNL0a9552VlRaUkWez4eOL3OSmZKn2/jW1cCky0+N8+G1AEfBKA0XzRi+TDx5PDIswcLj7qLbI0R6nZ2mns602Yb3hfFojKRb65L+vC2y8XqPF0WRQ41DjpYx7pP932n9F9i45SqD33ruNAJh0esriVgCbASZyd8bnQztuk/vsulqnOJOslxDY8p4qn3C37gAWLYsEqbudYHc5TfrPQxex1UiNeddDJEOzyDlfnSjXKvOfM0vRPv7j+L+7Wv3lIp2XGpNsE1fcoIPpxnbh63f+oBkhPVaD7wpeZ8t+8RdKUFdeuwb9NRz1sRZMfgL1KliyenSR+g1z7GMnId3h1DSTK6SrXa6NyOmzoS0jo8fRCjMA/AXA9A1ijd3Ihh
X-OriginatorOrg: amd.com
X-MS-Exchange-CrossTenant-OriginalArrivalTime: 09 Apr 2026 14:33:17.4635
 (UTC)
X-MS-Exchange-CrossTenant-Network-Message-Id: cc35ecb2-4f0e-4099-8827-08de9644f0da
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:
	SJ5PEPF000001C9.namprd05.prod.outlook.com
X-MS-Exchange-CrossTenant-AuthAs: Anonymous
X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem
X-MS-Exchange-Transport-CrossTenantHeadersStamped: DS7PR12MB8249
X-purgate-ID: tlsNG-d25034/1775745201-FF547A3D-85C9FB0A/0/0
X-purgate-type: clean
X-purgate-size: 785



On 09/04/2026 15:50, Oleksii Moisieiev wrote:
> In exynos4210_uart_init_postirq(), when setup_irq() returns an error
> the failure was only logged via dprintk() and execution continued,
> unconditionally clearing UINTM and setting UMCON_INT_EN. This enabled
> receive and transmit interrupt lines with no handler registered. On
> platforms where the GIC receives these asserted lines, the result is
> either repeated spurious-interrupt warnings or an unhandled interrupt
> fault.
> 
> Add an early return in the setup_irq() error branch so that the
> interrupt-enable writes to UINTM and UMCON are skipped when IRQ
> registration fails.
> 
> Signed-off-by: Oleksii Moisieiev <oleksii_moisieiev@epam.com>
Reviewed-by: Michal Orzel <michal.orzel@amd.com>

~Michal



From xen-devel-bounces@lists.xenproject.org Thu Apr 09 14:34:55 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 09 Apr 2026 14:34:55 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1277607.1562762 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wAqT8-0007dz-Oa; Thu, 09 Apr 2026 14:34:54 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1277607.1562762; Thu, 09 Apr 2026 14:34: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 1wAqT8-0007ds-Kz; Thu, 09 Apr 2026 14:34:54 +0000
Received: by outflank-mailman (input) for mailman id 1277607;
 Thu, 09 Apr 2026 14:34:53 +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 1wAqT7-0007dk-IT
 for xen-devel@lists.xenproject.org; Thu, 09 Apr 2026 14:34:53 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wAqT6-0098kY-Qt
 for xen-devel@lists.xenproject.org; Thu, 09 Apr 2026 16:34:52 +0200
Received: from [10.42.69.6] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <Mykyta_Poturai@epam.com>)
 id 69d7b904-5cb7-0a2a0a5109dd-0a2a450686e4-20
 for <xen-devel@lists.xenproject.org>; Thu, 09 Apr 2026 16:34:52 +0200
Received: from [52.101.66.125]
 (helo=DUZPR83CU001.outbound.protection.outlook.com)
 by tlsNG-16d1c6.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.0)
 (envelope-from <Mykyta_Poturai@epam.com>)
 id 69d7b90c-0df0-0a2a45060019-3465427d3ae0-3
 for <xen-devel@lists.xenproject.org>; Thu, 09 Apr 2026 16:34:52 +0200
Received: from PAVPR03MB10102.eurprd03.prod.outlook.com
 (2603:10a6:102:30d::12) by AM7PR03MB6516.eurprd03.prod.outlook.com
 (2603:10a6:20b:1b3::11) with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9745.43; Thu, 9 Apr
 2026 14:34:50 +0000
Received: from PAVPR03MB10102.eurprd03.prod.outlook.com
 ([fe80::b8c6:f37a:987a:beb]) by PAVPR03MB10102.eurprd03.prod.outlook.com
 ([fe80::b8c6:f37a:987a:beb%5]) with mapi id 15.20.9769.016; Thu, 9 Apr 2026
 14: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=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=hMcoqb4UuOTb7ZoY+kzXKRypqYxB+J6LyGToejFBdsGxPz6vBzxF8/YgqIvSa1SL/5eJZBRc5K16XxYLogBob8D4+I4N5U6g9jA6jp/LoYk7aNk46Vt6BssmCXYleqRXbYVV5yAvhRjohduCMBSIynlyCN9PX/eMJnXYqKQT7klI8UZyr6F8n1xl+n/KMyGrwPTb9uuY8XYbGU7Q9A7ivQ8QquQQvBKHSmgnegwVzntlIVA4w1lQbSPfrij59+uEZVCub31q39xUBMOmkgSHHlrJCJi1ZoTJ62B8Pqc52FQtY+WJEe+txKjmSiUXPvHGavpNZ/0vLgnbzP6ZU/ZWFg==
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com;
 s=arcselector10001;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1;
 bh=O4HiwftaM/EHeLjeEkA86c9XaItelNEGdBAgRO06JP4=;
 b=QNvPksEvlZqSX9fkc8Tft6R4VFAiV/RE/cXT3+HRIj9tJx+7Vsb6e9IlHY4/4PpXj7SwELDGxZ3m5zXmAMuMcFKhZiFN2JYdzIIWD+pVi+VfjPWrtzDDVu7tzQdxe5fIp6nE2e+x8ybvEPF8Kt871exu0pr5vOrlUpZ9qWATfooJWAE1AGFxy9i+RcbWRhKzLkeZ1cHJ56+UnfAOyn/+p/kEdqdoLICXukUGygQ8+8bg/+V6R5q5uOgiqjNXF2a5UJmYMhzEr1kYyRRg3OLkL9r59thmrkI6LQ1bhNqiXq+XUkNmR7lgIlMYgCQ6ZXTx8EWFjP8JuVrSXth/NV+9hg==
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=O4HiwftaM/EHeLjeEkA86c9XaItelNEGdBAgRO06JP4=;
 b=jKAhq0mHnqfxYs9a6rnWqjLugQbRz11o6+UDXuud69ChrYI81h2476r6gW8DcABOrsm083DZ6AkV99YDLGgxTx8+AyfjRN8/LlbTSr6nyMfZqzoWifuAHfmVJOvRdSyGKrtCGkSIGg2+7lVxN1DxiabqYnMNjaopfMu8YOeXEBYO7prWTVfTrcpEKl1hTIxwqFoVrjs0zkQbj5aIvot1TOE8FBXUErGLo1YW5gLurSnF4NGbR0oR9gprN9mXjeztk1Bg7V1TxnRZZBp/5DpA3tvmX5JfSXivlHWuayq3ov1krQS41R2Ys666l4mEt5VzAJOT+dma0JQXoAEDW+G0Ig==
From: Mykyta Poturai <Mykyta_Poturai@epam.com>
To: Jan Beulich <jbeulich@suse.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?B?Um9nZXIgUGF1IE1vbm7DqQ==?=
	<roger.pau@citrix.com>, Timothy Pearson <tpearson@raptorengineering.com>,
	Alistair Francis <alistair.francis@wdc.com>, Connor Davis
	<connojdavis@gmail.com>, Oleksii Kurochko <oleksii.kurochko@gmail.com>,
	"Daniel P. Smith" <dpsmith@apertussolutions.com>,
	"xen-devel@lists.xenproject.org" <xen-devel@lists.xenproject.org>
Subject: Re: [PATCH v7 4/6] arm/sysctl: Implement cpu hotplug ops
Thread-Topic: [PATCH v7 4/6] arm/sysctl: Implement cpu hotplug ops
Thread-Index: AQHcwDy3jsTaF4UzaEqMI3x4mLb6EbXHAQSAgA/aiAA=
Date: Thu, 9 Apr 2026 14:34:47 +0000
Message-ID: <b320e53c-f794-43fc-8095-d5b4b92d7362@epam.com>
References: <cover.1774871881.git.mykyta_poturai@epam.com>
 <9ac96559ed00257f347bd61b1e074fc3f6ce8a32.1774871881.git.mykyta_poturai@epam.com>
 <d8622bdf-9ccf-488d-af9a-3eccf6fd3226@suse.com>
In-Reply-To: <d8622bdf-9ccf-488d-af9a-3eccf6fd3226@suse.com>
Accept-Language: en-US
Content-Language: en-US
X-MS-Has-Attach:
X-MS-TNEF-Correlator:
authentication-results: dkim=none (message not signed)
 header.d=none;dmarc=none action=none header.from=epam.com;
x-ms-publictraffictype: Email
x-ms-traffictypediagnostic: PAVPR03MB10102:EE_|AM7PR03MB6516:EE_
x-ms-office365-filtering-correlation-id: ab203208-a738-45e9-f36d-08de96452655
x-ms-exchange-senderadcheck: 1
x-ms-exchange-antispam-relay: 0
x-microsoft-antispam:
 BCL:0;ARA:13230040|366016|1800799024|376014|7416014|38070700021|22082099003|56012099003|18002099003;
x-microsoft-antispam-message-info:
 eeDZeFUSMBcRZhnOJbc4TRa8PXJvGcEEqFsYsH81VjNy5l9v9QSkM9B/UtRynsAjsTqwR0FCf/ms8U3dfa70j0BmDR9i/CNioBlp0nvRP/NHve6Yv9/Tsv7mCElBi6dXUdxa8hOtXJuZwM45EvJmgZ3tkheL+MvZ94sMWTswtLubec+zf6QXMRZ/XVM9LsN2J6oyaLGQrUjgbt5sHy1PZavLh9iFs6nkxCZLkH6sTZ13v2cFgZxzcniLxjDg0H2GEXtLliiljDwyqU/3JpOk0oKIvp29H4oYWZsCfYzm+541EveG7beHkaQbMxxEiDWaGNJbtaHjc6LdwIZTRkUKCxx4m4kxy3RLXMUCJTqnqmUtVtktMsxiS6Q3CkomAM2F31yARb+QSxQF9AuoSI8SJsbuE6BjYMyDIX1QMpNEcDKRvLdkYb71hOj8ZyUZdnRhw/upnVPyAJKDrFjzTTFMXrx8Q9paL67MAK4NVPSooHr0b2n3dzdCXWJk9kpPLG9qGZ3KhM9IOpYr08MaR9w/lhyLtU7qw6g6UXtGj77MJxEP4FzUHu0iHXr17W/qNc98xgvqRPd8g3LZxBc1WkOkkb+lURkdBWK+BX/2YHfzjZxlySr55/F67U791Enep7Pzyd+cCJsNzxOb0zfNJc4eCnyH0TRymGUg+q4almwSfbxZxs90eMFwtB5um0jplQT6KHW2DA2aHZ/DU+F9l2okYBtzXv64tOopGIM8em9sfCvjwmH18PZB45GeuOkjJ5VzIbPRu68jD9OKPGwqGRUnyvtd03+RxQ57I8t96P5kahE=
x-forefront-antispam-report:
 CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:PAVPR03MB10102.eurprd03.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(366016)(1800799024)(376014)(7416014)(38070700021)(22082099003)(56012099003)(18002099003);DIR:OUT;SFP:1102;
x-ms-exchange-antispam-messagedata-chunkcount: 1
x-ms-exchange-antispam-messagedata-0:
 =?utf-8?B?R3l0SkxKUlIzU2x6eEcwSW53dW5MUjVXZ25YbDUvdFAvTHgyTEFhVjc1aHR4?=
 =?utf-8?B?WUk4cCtUbTBWVklCSUR0VXYzUzFqckd1d0hacmE5dlJSemk1aGVaRzd0V1Js?=
 =?utf-8?B?Skg0b245Y1c4N3dBczVsUElLZ2dLeklldExjcVJ0OHpxc1Jsbkxwd25xYmNo?=
 =?utf-8?B?N1ZWSGtnNnZmRitRYS81c2lhQ1lWZkpTUzVOam5UaVpQRmF0cTBZWlF2c2VT?=
 =?utf-8?B?bjZ2b0Q5amNiWWZnenNQWkhwTndLOVpEMlB4MEkweldXVDRtby9OSzBJMVpm?=
 =?utf-8?B?ZWxsdWFpQk05SWNlMEhRRk9aY3Z1M2JMZlNoV25kMmNlMisrRkdNS3lzOG4r?=
 =?utf-8?B?Mi80ZXVyMlVyaHVYNmdueXNHN0hmWVJKSytTdm4vOEFSMzFtUnBnaUZKSFo5?=
 =?utf-8?B?SVpsV1lKTG1MZ1J1NmUzQ0p2NUNqZUhyRVdkRW5Wd2xDQnNtWHVDQWZtWFBp?=
 =?utf-8?B?TEFMdFAxZ3V3Mjc1bFV6V3ZEUmZzRFFJQ2IrR0xpdHJLamJ1R0R4RitkSGVY?=
 =?utf-8?B?M3YzdDJwa3N2ckN0MGsrQ0t1SERVTUJGamRDQU1iYU1lSUlSM1BuTHp6WEZT?=
 =?utf-8?B?K1JwNnhzVXRhbEhoYUVndnFwMGR5MjZBQm0wRWRDY2U4OTRoTWhQdkVKMFVD?=
 =?utf-8?B?R0NaQjZxOFMyZkVmNEowVFFRNVg3Y1dJeXk3RGRlc0JCK2REb3JjdTdGdU9L?=
 =?utf-8?B?c05QN3VWdTkxd1NFWmFOb1hlRTg5Vm13dm13MjZYS1NUU3pnMXRTVEpQZUNO?=
 =?utf-8?B?SmMzMWpDU01pOWVzLys5bjVJNGttMDlFMWRadXliSkxGbjI4NHhJUVdTTEpB?=
 =?utf-8?B?dHliZWhMMmFyT281VGIrZ1JNZ29QdlVjUnZDc0VRenpab0pzMHBpaHR6Vmpx?=
 =?utf-8?B?OGdYTnQvTXYxSlNkZldKeldSTXJaaUNac2k3TlNDZHI0eUdtMWhIYnlrMk5D?=
 =?utf-8?B?VktIaStlUlVSd3NQUW50dnpvN3UyWEQwR0VkNEZIcm1RdTViRWdPbHFlZ0R3?=
 =?utf-8?B?bThzVnNESEFpVEtBTGlqcml4OVhZTnhXbVhHTlR3VjgvSDZkYWJiOE13S1hU?=
 =?utf-8?B?cTJwVHZYRnZCRUZMVUM2c05ONTBnT0VVemdLL0dvb2lEMWxZNVFMcnNFTHdu?=
 =?utf-8?B?bVJJY3ZDRG1ITmU0U05zU1QvYzJMUXlLS2lqajBuYWR0UlZxVURXSEl6VG5T?=
 =?utf-8?B?WStMMHdZM2FGdTVEY1cxSVRSeHhOckg3QUdOYVpvQUtMRENHV283a3VpTnpP?=
 =?utf-8?B?OEZLNHpwWmY5dnhibHI3WnNHd0RkcGJDUlVMRko4WGxNaVQzWnBJeDZvdm5R?=
 =?utf-8?B?a2l4V0Jtc2htWVA4azF0SU9SVTVXK004dlFjdjVjaGJubExKYU1aS1k4cER4?=
 =?utf-8?B?WDdoclJFelF3TjZndWhqekZ6VlJ3YmdoTm1OL0wyeVBqK1ppMDA3QnZqQ2Q0?=
 =?utf-8?B?OHNWYUdWbVJGbWVBM0hmUXBDOXhVTVZiNkNOY01WR2VVZGRFclhFanh3T1pu?=
 =?utf-8?B?YUp1VVIybnV1RlJadVptUXNYV1VqS0s5cnVxbUxZK2hKWDVYL2NKQzJRUzl0?=
 =?utf-8?B?NmVWWGJ1SFlpV3JrWWw2ZERabUtPaEl3NmZ0dUo2TzJTWm0rQzVDNWhoQk9i?=
 =?utf-8?B?RHhzeXNIZGd2NFhBQWNKWjRSL1hkcGVibWZjRDFEZnY5NjgxMlhxQzNXMUVz?=
 =?utf-8?B?eEw3a0U2bG1mL3piOXBFaWtKbzBpeUxwUVFsRCt5eEZ1dUpId2p5QXNoRjR5?=
 =?utf-8?B?YzZDcVdEaXBhR0hMUWFVT3Zma3RISGJpV2pkL0RXQ1ZPTmRlL3FDazlWUGFq?=
 =?utf-8?B?eHRlNFF4UlRabDErYzlGbTR1SzVCdzNwRTBaZjI5RWxMVngyT1JzT2FlcEVE?=
 =?utf-8?B?d2ptZ24rZ3VwVVorM0RWVml1U1FFNElJeHcvSzVPWTJXa3ErUW5rZkQrYm5V?=
 =?utf-8?B?WFRBRU1NYXVSU28zbm8zdUE2ekNjTlZjL0JNZm1pQVFwM1FrRFFGUHd1ZnlW?=
 =?utf-8?B?VjVKNzB3cDBaQk5DZVE1Wlh1QmtxUE9yU1lOeFJUQk1rU0duZldjUHdieW1X?=
 =?utf-8?B?OGVDM0xXY29LT0VYdXRQWGFIWHZxY1hObFJua0VUWCtUd3loUlhsNFZwN3di?=
 =?utf-8?B?UEFUeDB6Y2lCU3JTYk1QTktKTXZtTXRmQmJHb1J1eDdVaGdBdmVSS1R3L2RW?=
 =?utf-8?B?Mk1SaHJPQnViR1EzUmRJa1pjbG16bkVVVmpvc0wvMEFvNzRBa0Vocmp4YWR2?=
 =?utf-8?B?S1Bzb2FydDNWbkMvOXRQaERHRmtQR2owMmE4SGp4aXArNEFnUlJmcFY1eGNE?=
 =?utf-8?B?Q0NtK3orQ240ZW9ncWNRM0hCc0xEWjBQdEV6c1JaRVpPd3R3MXVzR2ltT2VU?=
 =?utf-8?Q?U55whrPw66gYQjuk=3D?=
Content-Type: text/plain; charset="utf-8"
Content-ID: <687F4E62878DE14C9E2BA424CE2CE630@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: PAVPR03MB10102.eurprd03.prod.outlook.com
X-MS-Exchange-CrossTenant-Network-Message-Id: ab203208-a738-45e9-f36d-08de96452655
X-MS-Exchange-CrossTenant-originalarrivaltime: 09 Apr 2026 14:34:47.2759
 (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: xslEOua7hd2NgsYe6ibCOVufgMMDnPK6lY0r3jReA5NSDPAc5J6m+bCiu5+TBwMCHpLvCIMXZ/bUZztzaMyBIw==
X-MS-Exchange-Transport-CrossTenantHeadersStamped: AM7PR03MB6516
X-purgate-ID: tlsNG-16d1c6/1775745292-AED343D8-734C69A3/0/0
X-purgate-type: clean
X-purgate-size: 1812

T24gMy8zMC8yNiAxNToyOCwgSmFuIEJldWxpY2ggd3JvdGU6DQo+IE9uIDMwLjAzLjIwMjYgMTM6
NTksIE15a3l0YSBQb3R1cmFpIHdyb3RlOg0KPj4gLS0tIGEveGVuL2NvbW1vbi9LY29uZmlnDQo+
PiArKysgYi94ZW4vY29tbW9uL0tjb25maWcNCj4+IEBAIC02MzgsOSArNjM4LDkgQEAgY29uZmln
IFNZU1RFTV9TVVNQRU5EDQo+PiAgIAkgIElmIHVuc3VyZSwgc2F5IE4uDQo+PiAgIA0KPj4gICBj
b25maWcgQ1BVX0hPVFBMVUcNCj4+IC0JYm9vbCAiQ1BVIG9ubGluZS9vZmZsaW5lIHN1cHBvcnQi
DQo+PiAtCWRlcGVuZHMgb24gWDg2DQo+PiAtCWRlZmF1bHQgeQ0KPj4gKwlib29sICJDUFUgb25s
aW5lL29mZmxpbmUgc3VwcG9ydCIgaWYgRVhQRVJUIHx8IFg4Ng0KPiANCj4gV2h5IG5vdCBqdXN0
IEVYUEVSVD8NCg0KU2hvdWxkIGl0IGJlIG1hcmtlZCBhcyBFWFBFUlQgb24geDg2PyBJIGNvbnNp
ZGVyZWQgdGhhdCBpZiB0aGUgb3B0aW9uIA0Kd2FzIG5vbiBjb25maWd1cmFibGUgKGFsd2F5cyBl
bmFibGVkKSwgaXQgc2hvdWxkIHN0YXkgZW5hYmxlZCBieSBkZWZhdWx0IA0KYW5kIGFsd2F5cyB2
aXNpYmxlLg0KDQo+PiArCWRlcGVuZHMgb24gWDg2IHx8IChBUk1fNjQgJiYgIUhBU19JVFMpDQo+
IA0KPiBUaGUgIUhBU19JVFMgaXMgcHV6emxpbmcsIGFuZCBpdCBkb2Vzbid0IGhlbHAgdGhhdCB0
aGF0IG9wdGlvbiBsb29rcw0KPiBtaXNuYW1lZCAoSEFTXyogc2hvdWxkbid0IGhhdmUgcHJvbXB0
cyBpbW8pLiBUaGUgZGVzY3JpcHRpb24gc2F5cw0KPiBzb21ldGhpbmcgdGhlcmUsIHllcywgYnV0
IHRoZW4gYWxzbyBtZW50aW9ucyBGRkEgYW5kIFRFRS4gWWV0IGZvcg0KPiB0aG9zZSB0aGUgb3B0
aW9uIHJlbWFpbnMgYXZhaWxhYmxlLg0KPiANCg0KSEFTX0lUUyBjYW4gYmUgbmFtZWQgYmV0dGVy
LCBidXQgdGhpcyBpcyB3YXkgb3V0IG9mIHNjb3BlIGZvciB0aGlzIA0Kc2VyaWVzLCBhbmQgZm9y
IG5vdyB0aGlzIGlzIHRoZSBvbmx5IHdheSB0byBleHByZXNzIHRoaXMgZGVwZW5kZW5jeS4gDQpS
ZWdhcmRpbmcgVEVFIGFuZCBGRkEsIEkgcmVtb3ZlZCB0aGVtIGZyb20gZGVwZW5kZW5jaWVzIGJl
Y2F1c2UgaG90cGx1ZyANCm1heSB3b3JrIHdpdGggc29tZSBURUUgT1MgY29uZmlndXJhdGlvbnMs
IGJ1dCBub3Qgd2l0aCBhbGwgb2YgdGhlbS4gVGhhdCANCmlzIHRoZSBtYWluIHJlYXNvbiBpdCBp
cyBtYXJrZWQgYXMgRVhQRVJUIGZvciBBcm02NC4NCg0KPj4gKwlkZWZhdWx0IHkgaWYgWDg2DQo+
IA0KPiBTaG9ydGVyIGFzICJkZWZhdWx0IFg4NiIuDQo+IA0KPiBKYW4NCg0KR290IGl0Lg0KDQot
LSANCk15a3l0YQ==


From xen-devel-bounces@lists.xenproject.org Thu Apr 09 14:39:39 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 09 Apr 2026 14:39:39 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1277621.1562770 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wAqXe-0000am-Cs; Thu, 09 Apr 2026 14:39:34 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1277621.1562770; Thu, 09 Apr 2026 14:39: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 1wAqXe-0000af-AJ; Thu, 09 Apr 2026 14:39:34 +0000
Received: by outflank-mailman (input) for mailman id 1277621;
 Thu, 09 Apr 2026 14:39:33 +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 1wAqXd-0000aZ-1b
 for xen-devel@lists.xenproject.org; Thu, 09 Apr 2026 14:39:33 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wAqXc-009xtw-Ck
 for xen-devel@lists.xenproject.org; Thu, 09 Apr 2026 16:39:32 +0200
Received: from [10.42.69.5] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <Michal.Orzel@amd.com>)
 id 69d7ba1d-2eae-0a2a0a5409dd-0a2a45059bf0-14
 for <xen-devel@lists.xenproject.org>; Thu, 09 Apr 2026 16:39:31 +0200
Received: from [52.101.57.0]
 (helo=BN8PR05CU002.outbound.protection.outlook.com)
 by tlsNG-c201ff.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.0)
 (envelope-from <Michal.Orzel@amd.com>)
 id 69d7ba22-3760-0a2a45050019-34653900f18f-3
 for <xen-devel@lists.xenproject.org>; Thu, 09 Apr 2026 16:39:31 +0200
Received: from BL1P222CA0015.NAMP222.PROD.OUTLOOK.COM (2603:10b6:208:2c7::20)
 by LVUPR12MB999162.namprd12.prod.outlook.com (2603:10b6:408:3a2::14)
 with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9769.16; Thu, 9 Apr
 2026 14:39:29 +0000
Received: from MN1PEPF0000F0E4.namprd04.prod.outlook.com
 (2603:10b6:208:2c7:cafe::dd) by BL1P222CA0015.outlook.office365.com
 (2603:10b6:208:2c7::20) with Microsoft SMTP Server (version=TLS1_3,
 cipher=TLS_AES_256_GCM_SHA384) id 15.20.9769.41 via Frontend Transport; Thu,
 9 Apr 2026 14:39:29 +0000
Received: from satlexmb08.amd.com (165.204.84.17) by
 MN1PEPF0000F0E4.mail.protection.outlook.com (10.167.242.42) with Microsoft
 SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id
 15.20.9769.17 via Frontend Transport; Thu, 9 Apr 2026 14:39:29 +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.17; Thu, 9 Apr
 2026 09:39:28 -0500
Received: from [10.252.147.171] (10.180.168.240) by satlexmb08.amd.com
 (10.181.42.217) with Microsoft SMTP Server id 15.2.2562.17 via Frontend
 Transport; Thu, 9 Apr 2026 09:39:27 -0500
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@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=JqR/XddnOhOFE94YO8IbhZr2xXVHWa8kpTjr0tDbM0g16hBImc93GiQBm7kw0XOsya0GTovRdt5uuolxmwuyLiYCUmM7X2KNBUgv7LcqHuxImPBVi/KqlUzmFS8j0TuZPJMGyAOjSv8ly2Yf+cUQvIIrLGXNGEL3Wbr9frT3Q46Hzk1Rjx9+bK6/2PqIyWCXGpmy0/toXBJVeRHlrI+0CmhRqUq+XMosVFZ+ki9wsNSFK7JDH2Sm+ClIRWEI2H9PVJaWE7YjANXRuijT1cOOjJK6jaDyVhbOqVynFWy7HhJqSRiFOr48npoL/UFg09cf8jx1YpOLrKEUnsH/oFSWWQ==
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com;
 s=arcselector10001;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1;
 bh=jqm/d4wMbEQ/ud4emWG3Tsk3IJS83pXyHnPaPmPqBJQ=;
 b=G2rFIaTrdPLRafayCHvvgjw8lCJNkK7ssy+0LECA+bzgaCt7sfnwtVbuKsDEm3FBIsYaLDA7vHI28IfJEk/g7+MCi04mi5OSGvFroJgSZFe6SxZdUXAnFbTVBJ6At/rm8H7RZPIGs6MvA6eoxBfY5D/b0xiSXd9AVR38l78S0HIY/HPpWWiFkFBzTURWd4JzIJUXpOGyRYZSCxgfWnI7/5+wCYpYFoVZRKS9MnonvKvMmxrxCWVYJhCnzXtObA7owS023/wtxMO0whwSKDzz4L4NwNzkVbVR35jiFv5FMGjf3+rEhIsnMFmiPr6WoPwMFgUK4NW48DINpLqq8xikDA==
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=jqm/d4wMbEQ/ud4emWG3Tsk3IJS83pXyHnPaPmPqBJQ=;
 b=S7Sjz39yOU/xOMy8OeOT+lHoCF06UP6mvdFgmZpr3TusnQ+eVrAKu/tnipfODaiCBWXWf5l7cZ2O4cJjZci18Nbati55tuu+BtZaazf+GRuQP+bq1zsosxpR00S6jZ8lxpBoUAzIkObdZ4RUbfgFs5wYfHU27PPgy7KdKePP0AY=
X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 165.204.84.17)
 smtp.mailfrom=amd.com; dkim=none (message not signed)
 header.d=none;dmarc=pass action=none header.from=amd.com;
Received-SPF: Pass (protection.outlook.com: domain of amd.com designates
 165.204.84.17 as permitted sender) receiver=protection.outlook.com;
 client-ip=165.204.84.17; helo=satlexmb08.amd.com; pr=C
Message-ID: <31be1ea4-ac65-43b1-80c0-7e1a8a8723ab@amd.com>
Date: Thu, 9 Apr 2026 16:39:22 +0200
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH v2 2/4] xen/drivers/char/pl011: fix IRQ registration
 failure propagation
To: Oleksii Moisieiev <Oleksii_Moisieiev@epam.com>,
	"xen-devel@lists.xenproject.org" <xen-devel@lists.xenproject.org>
CC: Bertrand Marquis <bertrand.marquis@arm.com>, Julien Grall
	<julien@xen.org>, Stefano Stabellini <sstabellini@kernel.org>, Volodymyr
 Babchuk <Volodymyr_Babchuk@epam.com>
References: <cover.1775742562.git.oleksii_moisieiev@epam.com>
 <9148b1721adfacf20c5621eb583f6fe87dead767.1775742562.git.oleksii_moisieiev@epam.com>
From: "Orzel, Michal" <michal.orzel@amd.com>
Content-Language: en-US
In-Reply-To: <9148b1721adfacf20c5621eb583f6fe87dead767.1775742562.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: MN1PEPF0000F0E4:EE_|LVUPR12MB999162:EE_
X-MS-Office365-Filtering-Correlation-Id: 95e302cc-b0b1-4729-f312-08de9645ce44
X-MS-Exchange-SenderADCheck: 1
X-MS-Exchange-AntiSpam-Relay: 0
X-Microsoft-Antispam:
	BCL:0;ARA:13230040|36860700016|82310400026|376014|1800799024|18002099003|22082099003|56012099003;
X-Microsoft-Antispam-Message-Info:
	RtwQpTCt9AjrnNedVGIoRMnxy3X+LiaJpFdT5CZcE4trV8si58sH7HJr26mtJyBUIPkgNekrjfgSYUbnLVJFiduyQGBPyya/ohYEKHXQ1SKcWiFtYexs/IxInigOoK0wYaMw9eHePxnR69DDqV5GNhGajB+GJWIBU43rF1AGq6evqmoLMmiGaaVyDLGKKU42OwCwnReWG9hlgiVPN1Tk9M/3rDm9z/S51hJQrfoUTMoXPfXAvloFa82W0KrnfXLFh9EQo7eLvE58aImhv0lp5d9bb52RrUj9ULnHVl6DVlwQ2VOQkd/SwbXcODiM8c5ThlR32YT2beQcTucJqyicQbXkW5SfwHsoYYPC07ff9PflQR+3UT7VDkFRJZVPnMlogFvvdLZ2v1yYzq2O7xZxRMKoiVifWLmdDdVzfpANY+Bcj+e+C8iPtkwuZYxNjbUd20xl/iTrOvnZhCtC0d4bUmA5e4pJmg4oZbmQSW8ysjQ9dJe+e5f5FmIXGOz8qWjxa2MZlxPnCzHM1jQxwUIeuQ9hApG4phA+J34yHR5FkX1j6gQAz7ceJHYD0n8We3TekLtT05MX1hO69GZLi5yJHtLjpPtXZXA6QYNLYR/Q4K3de66Q7wpuPXTMTosz4Kybsi6bCig2GYROdugeESYGg1zKwBKlgKVlm5/6NdZwT8dZMGDzjw7ngkbRclCyW85mD2wAOswFajsiGoguZ1ALFr1dJcWBTkLC2ZvN2NnyS3vz9leagS00TtsHE14lTZhL2ZkBiCwtNQXm6+dEJRTLTw==
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)(1800799024)(18002099003)(22082099003)(56012099003);DIR:OUT;SFP:1101;
X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1
X-MS-Exchange-AntiSpam-MessageData-0:
	O4zuGNPe09SEC9toV+cmxJQlHUGsDvtOPvimo7y8E+iQvPuHr8wAnCEfYlkOTFDOHQXpJyPfwVTwvTcRySdedoyywfB9M/UTC3dJAhxMQ4kJ8oriFm6mlTQEuBV/quKC+7FsveYZMZKq9+vyNGBghatz1W2R4oif2aTHvnC5X7qbCuVtFFsvSZYakikzN27xregLMr9GLeZe9eoy1ANVMDStRffxkfMYXM3W+aA8KbKsko3JfEx0uNXyt0cgDG/ePrKxfXkqPCTzgwwfdSo6ltD2Do6zdK0gqTwfRx0bKVdV0CxwUDhrXIKluQ0i1dOKi3z01SCr/eF1LhhuNe5L5zz2N+y2syom8ykCMoqLsVnylo7zjiYHUbgQ5K4oeM07xsE2h79umaEwL4D989hAFIlhe+ftLMmjTIoOzSEk6m3irIFkYBUlcolqPUIvXbWq
X-OriginatorOrg: amd.com
X-MS-Exchange-CrossTenant-OriginalArrivalTime: 09 Apr 2026 14:39:29.0273
 (UTC)
X-MS-Exchange-CrossTenant-Network-Message-Id: 95e302cc-b0b1-4729-f312-08de9645ce44
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:
	MN1PEPF0000F0E4.namprd04.prod.outlook.com
X-MS-Exchange-CrossTenant-AuthAs: Anonymous
X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem
X-MS-Exchange-Transport-CrossTenantHeadersStamped: LVUPR12MB999162
X-purgate-ID: tlsNG-c201ff/1775745571-3252396F-7C0479B2/0/0
X-purgate-type: clean
X-purgate-size: 2675



On 09/04/2026 15:50, Oleksii Moisieiev wrote:
> In pl011_init_postirq(), two code paths could reach the
> interrupt-unmask write to IMSC without a handler being registered:
> 
> - When no valid IRQ number was provided (uart->irq <= 0), the original
>   positive-condition guard (if uart->irq > 0) skipped the irqaction
>   setup but still fell through to the IMSC write, unmasking
>   RTI|OEI|BEI|PEI|FEI|TXI|RXI with no handler installed.
> 
> - When setup_irq() returned an error, only an error message was
>   printed and execution continued to the IMSC write, arming all
>   hardware interrupt lines with no handler to service them. On
>   platforms where the GIC receives these asserted lines, the result
>   is either repeated spurious-interrupt warnings or an unhandled
>   interrupt fault.
> 
> Restructure pl011_init_postirq() to use early returns: return
> immediately when no valid IRQ is provided, and return after logging
> the error when setup_irq() fails. The interrupt-enable write to IMSC
> is only reached when IRQ registration succeeds.
> 
> Signed-off-by: Oleksii Moisieiev <oleksii_moisieiev@epam.com>
> ---
> 
> 
> 
>  xen/drivers/char/pl011.c | 17 +++++++++++------
>  1 file changed, 11 insertions(+), 6 deletions(-)
> 
> diff --git a/xen/drivers/char/pl011.c b/xen/drivers/char/pl011.c
> index 5f9913367d..918b9d4d4a 100644
> --- a/xen/drivers/char/pl011.c
> +++ b/xen/drivers/char/pl011.c
> @@ -150,13 +150,18 @@ static void __init pl011_init_postirq(struct serial_port *port)
>      struct pl011 *uart = port->uart;
>      int rc;
>  
> -    if ( uart->irq > 0 )
> +    /* Don't unmask interrupts if no valid irq was provided */
> +    if ( uart->irq <= 0 )
> +        return;
> +
> +    uart->irqaction.handler = pl011_interrupt;
> +    uart->irqaction.name    = "pl011";
> +    uart->irqaction.dev_id  = port;
> +    if ( (rc = setup_irq(uart->irq, 0, &uart->irqaction)) != 0 )
>      {
> -        uart->irqaction.handler = pl011_interrupt;
> -        uart->irqaction.name    = "pl011";
> -        uart->irqaction.dev_id  = port;
> -        if ( (rc = setup_irq(uart->irq, 0, &uart->irqaction)) != 0 )
> -            printk("ERROR: Failed to allocate pl011 IRQ %d\n", uart->irq);
> +        printk("ERROR: Failed to allocate pl011 IRQ %d\n", uart->irq);
> +        /* Do not unmask interrupts if irq handler wasn't set */
> +        return;
>      }
>  
>      /* Clear pending error interrupts */
I think we should clear pending errors every time. Other than that, the patch is
ok. Provided the remark is addressed:
Reviewed-by: Michal Orzel <michal.orzel@amd.com>

~Michal




From xen-devel-bounces@lists.xenproject.org Thu Apr 09 14:45:29 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 09 Apr 2026 14:45:29 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1277635.1562779 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wAqdJ-000277-SD; Thu, 09 Apr 2026 14:45:25 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1277635.1562779; Thu, 09 Apr 2026 14:45: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 1wAqdJ-000270-Pe; Thu, 09 Apr 2026 14:45:25 +0000
Received: by outflank-mailman (input) for mailman id 1277635;
 Thu, 09 Apr 2026 14:45:24 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <corbet@lwn.net>) id 1wAqdI-00026u-LL
 for xen-devel@lists.xenproject.org; Thu, 09 Apr 2026 14:45:24 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wAqdF-009cz4-Uu
 for xen-devel@lists.xenproject.org; Thu, 09 Apr 2026 16:45:23 +0200
Received: from [10.42.69.6] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <corbet@lwn.net>)
 id 69d7bb78-bab6-0a2a0a5309dd-0a2a4506bb4c-44
 for <xen-devel@lists.xenproject.org>; Thu, 09 Apr 2026 16:45:23 +0200
Received: from [45.79.88.28] (helo=ms.lwn.net)
 by tlsNG-16d1c6.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.0)
 (envelope-from <corbet@lwn.net>)
 id 69d7bb81-0df0-0a2a45060019-2d4f581ca456-3
 for <xen-devel@lists.xenproject.org>; Thu, 09 Apr 2026 16:45:22 +0200
Received: from localhost (c-71-229-227-126.hsd1.co.comcast.net
 [71.229.227.126])
 (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)
 key-exchange ECDHE (prime256v1) server-signature ECDSA (prime256v1)
 server-digest SHA256) (No client certificate requested)
 by ms.lwn.net (Postfix) with ESMTPSA id 33E0F40B2D;
 Thu,  9 Apr 2026 14:45: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=20201203 header.d=lwn.net header.i="@lwn.net" header.h="From:To:Cc:Subject:In-Reply-To:References:Date"
DKIM-Filter: OpenDKIM Filter v2.11.0 ms.lwn.net 33E0F40B2D
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=lwn.net; s=20201203;
	t=1775745920; bh=9UjJsJZfwJanCZGABshmZ68foQfId21dwyXnZXsn0Gw=;
	h=From:To:Cc:Subject:In-Reply-To:References:Date:From;
	b=M1oTRvPKdFlczPjiNIi/kCOEUebV1SXduyRsOHJpL6K0vbeF7garYUzALbfVlNJ4K
	 vYb5oD+VFS1redUL+alhViqUA7Azlm07SoiQuXZZlwRqT+qrjdv2/ieKdX7WRLJ2ej
	 bU5jiQnxytqPyM5rusfbuut+ov9uLPaL3OscGK1qaclZ8FP160BA7mZiw1TtzfSfI0
	 wuO00U1Oqh/CUoQ0yrke2WSt2Ab0iRWzeuAfEn//CzU9PUcWjIiVWoYJaqWIouQZsj
	 b+i6lOmTcZVE1487sabU7Vfjgpps3XWTp9w9T3+XQyBQPrCVyMxdsNPjrqVlDN6vSI
	 BWvIqbZO4KlSQ==
From: Jonathan Corbet <corbet@lwn.net>
To: Shubham Chakraborty <chakrabortyshubham66@gmail.com>, jgross@suse.com
Cc: sstabellini@kernel.org, boris.ostrovsky@oracle.com,
 linux-doc@vger.kernel.org, xen-devel@lists.xenproject.org,
 linux-kernel@vger.kernel.org, Shubham Chakraborty
 <chakrabortyshubham66@gmail.com>
Subject: Re: [PATCH v2] docs: sysctl: Add documentation for /proc/sys/xen/
In-Reply-To: <20260304150419.16738-1-chakrabortyshubham66@gmail.com>
References: <20260304150419.16738-1-chakrabortyshubham66@gmail.com>
Date: Thu, 09 Apr 2026 08:45:19 -0600
Message-ID: <87fr54b3b4.fsf@trenco.lwn.net>
MIME-Version: 1.0
Content-Type: text/plain
X-purgate-ID: tlsNG-16d1c6/1775745923-AF5383D8-161F3CAB/0/0
X-purgate-type: clean
X-purgate-size: 847

Shubham Chakraborty <chakrabortyshubham66@gmail.com> writes:

> Add documentation for the Xen hypervisor sysctl controls in
> /proc/sys/xen/balloon/.
>
> Documents the hotplug_unpopulated tunable (available when
> CONFIG_XEN_BALLOON_MEMORY_HOTPLUG is enabled) which controls
> whether unpopulated memory regions are automatically hotplugged
> when the Xen balloon driver needs to reclaim memory.
>
> The documentation is based on source code analysis of
> drivers/xen/balloon.c.
>
> Signed-off-by: Shubham Chakraborty <chakrabortyshubham66@gmail.com>
> ---
>  Documentation/admin-guide/sysctl/index.rst |  3 ++-
>  Documentation/admin-guide/sysctl/xen.rst   | 31 ++++++++++++++++++++++
>  2 files changed, 33 insertions(+), 1 deletion(-)
>  create mode 100644 Documentation/admin-guide/sysctl/xen.rst

Applied, thanks.

jon


From xen-devel-bounces@lists.xenproject.org Thu Apr 09 14:49:03 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 09 Apr 2026 14:49:03 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1277646.1562789 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wAqgo-0003Jh-CT; Thu, 09 Apr 2026 14:49:02 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1277646.1562789; Thu, 09 Apr 2026 14:49: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 1wAqgo-0003Ja-9A; Thu, 09 Apr 2026 14:49:02 +0000
Received: by outflank-mailman (input) for mailman id 1277646;
 Thu, 09 Apr 2026 14:49:01 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <olekstysh@gmail.com>) id 1wAqgn-0003JU-Ia
 for xen-devel@lists.xenproject.org; Thu, 09 Apr 2026 14:49:01 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wAqgm-0026kI-UH
 for xen-devel@lists.xenproject.org; Thu, 09 Apr 2026 16:49:00 +0200
Received: from [10.42.69.5] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <olekstysh@gmail.com>)
 id 69d7bc42-bab6-0a2a0a5309dd-0a2a45059ade-46
 for <xen-devel@lists.xenproject.org>; Thu, 09 Apr 2026 16:49:00 +0200
Received: from [209.85.128.49] (helo=mail-wm1-f49.google.com)
 by tlsNG-c201ff.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.0)
 (envelope-from <olekstysh@gmail.com>)
 id 69d7bc5c-3760-0a2a45050019-d1558031e1d6-3
 for <xen-devel@lists.xenproject.org>; Thu, 09 Apr 2026 16:49:00 +0200
Received: by mail-wm1-f49.google.com with SMTP id
 5b1f17b1804b1-488a8ca4aadso10912885e9.3
 for <xen-devel@lists.xenproject.org>; Thu, 09 Apr 2026 07:49:00 -0700 (PDT)
Received: from [10.17.80.122] (ll-22.209.223.85.sovam.net.ua. [85.223.209.22])
 by smtp.gmail.com with ESMTPSA id
 5b1f17b1804b1-488cd1d171dsm39810815e9.5.2026.04.09.07.48.58
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Thu, 09 Apr 2026 07:48:59 -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=20251104 header.d=gmail.com header.i="@gmail.com" header.h="Content-Transfer-Encoding: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=20251104; t=1775746140; x=1776350940; darn=lists.xenproject.org;
        h=content-transfer-encoding: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;
        bh=ITlGhv9Njii142pmKjT/2uvGK7HxNsPVXtpcv9dPkKA=;
        b=USMddU2N6Ri4WXKtzyqwBTzn2uYpG1psCrFufZZtTPV5zCmPyW6yLbfsdtpM7A6pJP
         nawaapEyI0K5uYi8vmZVcZ3fo4PPXw43mtuOvzYmqUJuY4ET9Nnt+q8UOSg2BnWHRndH
         MsnIZrPJG2XZcmfRW2gFAd4vT5pfNhEFNgEO1NWKjaDHXtIlRGm45uUA4XwRlGaZr1Eb
         G6wJiPPNR1OYSiA96td+OR48/i+1u0d+BxN0gE+HicOukDYeS+73PJvKay3k9biJEaNc
         gdKn9+3UigsI0cBZnSnHNHFyo9iII1uBcvzCQMhZFOT3bv//iDr7XZrpjWhSJK/i9Zec
         X9QQ==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20251104; t=1775746140; x=1776350940;
        h=content-transfer-encoding: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;
        bh=ITlGhv9Njii142pmKjT/2uvGK7HxNsPVXtpcv9dPkKA=;
        b=EMFfVhk+6jeWho5gGKkYof5/CHcX/U7FTKMg1p36q3/Z3AMcOoWhc0Fj7q4X16Vr6v
         4ym0M11358BFwGrTFQWosN4yx1+q1KRHemii3V50d0XGaRY0Oe6m3NWX6VqP0rs4LaKu
         afeb18lZN/rUbauXff014zIl2YFfvV5CC3MhHLOwUJd4QMHpX6VTgQwLZdUgxUqbk/yu
         VZW3Rm6VmUaUU0pr4QfomlQLetlkWpp3G/5A37QJgd8clECj08aoQMeSTjIzrn2Xv6py
         Gruso47UQBcqnOlTtbZoQkeofoR3FELlu/r6S/1KSLYazITb37IzqEIHcJnkzJk63hoL
         VcgQ==
X-Forwarded-Encrypted: i=1; AJvYcCXXbWCiGlfWTCQzr93sWm/tKdu1ZPIib6Ka7nvEFt6FheVgVH4HRa/NBaIBivlsysunQRqOhRAoXl0=@lists.xenproject.org
X-Gm-Message-State: AOJu0Yy6k27dUZ8cN5q+2WoWog2QokYfsMJH0w7Q/Zxdef9cikzJc1t7
	fJd4rn1IqtUOlG6QSpsPZjQfpo8iSTT8+2uxCgEdbo3UaDjqSVR86Q+s
X-Gm-Gg: AeBDievdx4qaYsYEZtk6+YmLX1ph+bMypqQeQQbaHNIvnfIqCZS1+fuKoAXRMGZDXgk
	yx3KyLRdLvzGZ/vwh1ivbfZ/5SrPGsTcxg96rHH3kcY/QO3ZuohczZ21Y86XVy954rM6/rxgxtE
	J8yifHqoiFM6nLc6db7pYS98MO7+eTmmXxnhxteX+WJ6veUPNmPrULqbnp2vLGxo03CQFgQ+XdR
	SKoIbbvG+4pdL0odzWIF7acNg6vBu6WvgZ16bSS0MayFL5J9TfYXsjXTMxJAvFkz++wI11b0i9h
	BwUIxRJ0SAFwKJQmOsj3XKo+0C8xWm5V+BOF0OejTWgSywS8oEvt67f2o+FCqwSUWjnCjvyBgge
	wJZsvLqirjm/BQAKs2Ci4YgmSueTMBwC81r7yKKT/TS0Ke65POYP5hNNjxzugvPN5dL089HabCC
	2GcrmiMZQ5178V77C9M4Uu2PUpHJUpmhtZ2PHiNASFO5/fsNKJJbwESWE=
X-Received: by 2002:a05:600c:3acb:b0:485:46fd:7887 with SMTP id 5b1f17b1804b1-4889972b76amr357729015e9.13.1775746140090;
        Thu, 09 Apr 2026 07:49:00 -0700 (PDT)
Message-ID: <85a89549-cf54-4441-b2f7-84e6f2b3d2b8@gmail.com>
Date: Thu, 9 Apr 2026 17:48:58 +0300
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH v1] xen/arm: smmuv3: Add support for removing devices
To: Mykyta Poturai <Mykyta_Poturai@epam.com>,
 "xen-devel@lists.xenproject.org" <xen-devel@lists.xenproject.org>
Cc: 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>,
 Luca Fancellu <Luca.Fancellu@arm.com>
References: <a59c2da0d4c72deb42950e9a8e3982fbdee60668.1775555766.git.mykyta_poturai@epam.com>
Content-Language: en-US
From: Oleksandr Tyshchenko <olekstysh@gmail.com>
In-Reply-To: <a59c2da0d4c72deb42950e9a8e3982fbdee60668.1775555766.git.mykyta_poturai@epam.com>
Content-Type: text/plain; charset=UTF-8; format=flowed
Content-Transfer-Encoding: 7bit
X-purgate-ID: tlsNG-c201ff/1775746140-39B9096F-01393D5E/0/0
X-purgate-type: clean
X-purgate-size: 5719



On 4/7/26 12:58, Mykyta Poturai wrote:

Hello Mykyta

> Allow for removing devices from SMMUv3. arm_smmu_deassign_dev handles
> most of the work by disabling ATS and zeroing STEs. Additionally, unset
> the dt_device_is_protected flag and free no longer needed smmu_master.
> 
> Tested on QEMU with SRIOV series[1] by repeatedly enabling/disabling
> VFs.
> 
> [1]: https://patchew.org/Xen/cover.1772806036.git.mykyta._5Fpoturai@epam.com/
> 
> Signed-off-by: Mykyta Poturai <mykyta_poturai@epam.com>
> ---
>   xen/drivers/passthrough/arm/smmu-v3.c | 59 +++++++++++++++++++++++++++
>   xen/include/xen/device_tree.h         |  5 +++
>   2 files changed, 64 insertions(+)
> 
> diff --git a/xen/drivers/passthrough/arm/smmu-v3.c b/xen/drivers/passthrough/arm/smmu-v3.c
> index bf153227db..b5b834a7b7 100644
> --- a/xen/drivers/passthrough/arm/smmu-v3.c
> +++ b/xen/drivers/passthrough/arm/smmu-v3.c
> @@ -1493,6 +1493,64 @@ static int arm_smmu_assign_dev(struct domain *d, u8 devfn, struct device *dev,
>   static int arm_smmu_deassign_dev(struct domain *d, uint8_t devfn,
>   				 struct device *dev);
>   
> +static int arm_smmu_remove_device(u8 devfn, struct device *dev)
> +{
> +	int ret = 0;
> +	struct arm_smmu_master *master;
> +	struct iommu_fwspec *fwspec;
> +
> +	fwspec = dev_iommu_fwspec_get(dev);
> +	if ( !fwspec )
> +		return -ENODEV;
> +
> +	master = dev_iommu_priv_get(dev);
> +	if ( !master )
> +		return -ENODEV;
> +
> +#ifdef CONFIG_HAS_PCI
> +	if ( dev_is_pci(dev) )
> +	{
> +		struct pci_dev *pdev = dev_to_pci(dev);

As Luca has already noticed in a separate email regarding phantom 
functions:

If I understand the code correctly, the iommu_remove_device() loops over 
PCI phantom functions, calling ops->remove_device() multiple times for 
the exact same struct device *dev. Because you omitted the phantom 
function check (which exists in arm_smmu_add_device), the code will 
process the first phantom function, fall through to out_free, and 
destroy the master struct. When the iommu_remove_device() subsequently 
calls remove_device() for the main devfn, dev_iommu_priv_get(dev) will 
return NULL, and the removal will abort with -ENODEV.

Should not we ignore phantom functions at the top of the PCI block, just 
like in the add_device()? if ( devfn != pdev->devfn ) return 0;


> +
> +		if ( pdev->domain )
> +		{
> +			ret = arm_smmu_deassign_dev(pdev->domain, devfn, dev);
> +			if ( ret )
> +				printk(XENLOG_WARNING "Failed to deassign device %pp from SMMU\n",
> +					&pdev->sbdf);

What worries me is a possible state corruption on deassign failure. If 
arm_smmu_deassign_dev() fails, the code prints a warning but continues 
execution here ...


> +		}
> +	}
> +#endif
> +
> +	if ( !dev_is_pci(dev) )


NIT: I think that you could simplify the PCI/platform device split to 
avoid evaluating dev_is_pci(dev) twice by using #else block.

> +	{
> +		if ( !dt_device_is_protected(dev_to_dt(dev)) )
> +		{
> +			dev_err(dev, "Not added to SMMUv3\n");
> +			ret = -ENODEV;
> +			goto out_free;
> +		}
> +
> +		if ( master->domain && master->domain->d )
> +		{
> +			ret = arm_smmu_deassign_dev(master->domain->d, 0, dev);
> +			if ( ret )
> +				dev_warn(dev, "Failed to deassign device from SMMU\n");
> +		}

   ... and here.

It falls through to the bottom of the function where it frees the master 
struct. Because you return an error code, the IOMMU framework 
(specifically in the DT path) will abort the removal. At least, 
iommu_remove_dt_device() sees the error code and skips freeing the 
fwspec. But because you freed the master struct, the SMMUv3 driver has 
lost track of the device, while the common code might think it is still 
assigned and functional...

Should not we bail out immediately and return the error without freeing 
master or altering the protected state if arm_smmu_deassign_dev() fails?

Or am I missing something?



> +		dt_device_unset_protected(dev_to_dt(dev));
> +	}
> +
> +	arm_smmu_disable_pasid(master);
> +
> +	dev_info(dev, "Removed master device (SMMUv3 %s StreamIds %u)\n",
> +		 dev_name(fwspec->iommu_dev), fwspec->num_ids);
> +
> +out_free:
> +	xfree(master);
> +	dev_iommu_priv_set(dev, NULL);
> +	return ret;
> +}
> +
>   static int arm_smmu_add_device(u8 devfn, struct device *dev)
>   {
>   	int i, ret;
> @@ -2867,6 +2925,7 @@ static const struct iommu_ops arm_smmu_iommu_ops = {
>   	.unmap_page		= arm_iommu_unmap_page,
>   	.dt_xlate		= arm_smmu_dt_xlate,
>   	.add_device		= arm_smmu_add_device,
> +	.remove_device		= arm_smmu_remove_device,
>   };
>   
>   static __init int arm_smmu_dt_init(struct dt_device_node *dev,
> diff --git a/xen/include/xen/device_tree.h b/xen/include/xen/device_tree.h
> index 06d7643622..1f9608cdcd 100644
> --- a/xen/include/xen/device_tree.h
> +++ b/xen/include/xen/device_tree.h
> @@ -305,6 +305,11 @@ static inline void dt_device_set_protected(struct dt_device_node *device)
>       device->is_protected = true;
>   }
>   
> +static inline void dt_device_unset_protected(struct dt_device_node *device)
> +{
> +    device->is_protected = false;
> +}

NIT: Rather than introducing new helper, it might be possible to update 
the existing helper to take a boolean: e.g., 
dt_device_set_protected(struct dt_device_node *device, bool protect).
But doing this would require updating existing callers, I am not sure if 
that broader refactoring is necessary, so your current unset approach is 
acceptable.


> +
>   static inline bool dt_device_is_protected(const struct dt_device_node *device)
>   {
>       return device->is_protected;



From xen-devel-bounces@lists.xenproject.org Thu Apr 09 14:59:33 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 09 Apr 2026 14:59:33 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1277662.1562798 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wAqqn-0005TU-9i; Thu, 09 Apr 2026 14:59:21 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1277662.1562798; Thu, 09 Apr 2026 14:59: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 1wAqqn-0005TN-6X; Thu, 09 Apr 2026 14:59:21 +0000
Received: by outflank-mailman (input) for mailman id 1277662;
 Thu, 09 Apr 2026 14:59:20 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <jbeulich@suse.com>) id 1wAqqm-0005TH-7A
 for xen-devel@lists.xenproject.org; Thu, 09 Apr 2026 14:59:20 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wAqql-005ubM-JD
 for xen-devel@lists.xenproject.org; Thu, 09 Apr 2026 16:59:19 +0200
Received: from [10.42.69.9] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <jbeulich@suse.com>)
 id 69d7beb3-bab6-0a2a0a5309dd-0a2a45099d8c-18
 for <xen-devel@lists.xenproject.org>; Thu, 09 Apr 2026 16:59:19 +0200
Received: from [209.85.128.41] (helo=mail-wm1-f41.google.com)
 by tlsNG-bad1c0.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.0)
 (envelope-from <jbeulich@suse.com>)
 id 69d7bec7-bf79-0a2a45090019-d1558029d13d-3
 for <xen-devel@lists.xenproject.org>; Thu, 09 Apr 2026 16:59:19 +0200
Received: by mail-wm1-f41.google.com with SMTP id
 5b1f17b1804b1-488b00ed86fso11048545e9.3
 for <xen-devel@lists.xenproject.org>; Thu, 09 Apr 2026 07:59:19 -0700 (PDT)
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-488d534584esm3024965e9.13.2026.04.09.07.59.17
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Thu, 09 Apr 2026 07:59:17 -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=google header.d=suse.com header.i="@suse.com" header.h="Content-Transfer-Encoding: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=1775746759; x=1776351559; darn=lists.xenproject.org;
        h=content-transfer-encoding:autocrypt:content-language:cc:to:subject
         :from:user-agent:mime-version:date:message-id:from:to:cc:subject
         :date:message-id:reply-to;
        bh=NZR40jtet6aM47EDHmtok5wYq1P2LKIbeh207Bt0xsU=;
        b=X1tl5bg1OlkysMuPxgKMLTOOsUCfq56Wpl3Zvwa1N6RPiew/nIG1nle+BSsGkSdIR9
         rYi0g4PwRebEdAIS5g8y7L/jZiXpeMYz/iBGLC3J10s+QKtu3wWacMF+24GU/YMDzjf2
         /hYD+FyqwXq0AZhlvop/QqnmkPjBEDdOf9sS9KeYe1rF48IerCerkhiYpxwtF5Xg4m3V
         PusgInharZzxH2F6RCJ18sIZYblb5d3fgDywQgPw5ODO6URwhpo0OB7Vm3xW/OtgP4JF
         JrHfM2gHkk7ca2nrwlCFfDEx4ph28BDkcjN9/QSMKP7JlwjmDhhXELFKNfsMnA2gBut7
         27PA==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20251104; t=1775746759; x=1776351559;
        h=content-transfer-encoding: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;
        bh=NZR40jtet6aM47EDHmtok5wYq1P2LKIbeh207Bt0xsU=;
        b=Bm5RFwNyApxm5R0dLYC/GdPryPghde41kmInB+pqPnvOyAtGPVs+7jYYTroRX6dwzf
         xyHDeG8nOligWFDNZHjutudHWZWcfY6Tu9NqsTqad8i82GRe7lijCEeKgI2eac+Xdjla
         kL08V6SnDkfq2/npdHhAjq+ZRwCrwU1dyhU1V3qxt+NuCmZJu5FI1flVuVl6FeVBXa66
         4BVYcqdksOT1lS88zcBzGc1BDgt4ObBvn37XzEoq2V+/fV84L1DIaQ89Z2Q7sbAu67SM
         PnSIIVzVjD1iBApx55EXaEWjFZe31hw4I4eOZNvZbSjjeQfpQdr5Chj+2pf6e6eWs/PK
         swwA==
X-Gm-Message-State: AOJu0YwOxjntd8on8TWGOvmvLQD50qpDyrgfEnfRGP8pW+tODL/qzP6w
	w4UWecvYO9SGlatKkXAXtVPffeDnBVbpefNauH65f/2hA8JYgOihWz0eKaJydkgd51EleOYdd+F
	IDYfK6g==
X-Gm-Gg: AeBDiet5v6r7D761j25yQjgw5//ANrb7/ZakJxUYWwb34TLzYAL+2UHkUFFfnww1uTN
	HS+uxPV5oceqxv//YvjzJJZSLnBjOsRLoYhW/EAQjtUfJCfL6JJqJsnn8ULYBCNS4ehLdu54SEm
	teVScGDGCbpUiL2o4Tft43MsA4XCnepmGMInZE6+1BRszlKzjzX1tstWkxjf3c2JWgfTwRWPkO1
	J1khaQrKTTXOYdxinxaiY7Ko0dh8mSVHwSm1mR3Gdt+ZyNAmItM8yMVUJ4QNrlPYTa4V2wANcQA
	AcQq+yNtkqHMDiCKTBJXJ3JGnguILdGLhnpHCjowkkeFMCpBL9gwGn0HuUOP0MFRFRrJfKg/5j8
	glD9jvbe3dg6qm5drrX/jIEMJl6uTxWqy/To1E9Nl540TjjFRUDRVXlLVW36xwxDyjR/jy5Qx3i
	/Ziqo2Ad/Aa20ocGhSsIxUsshxZw3G7ddutSdTpbaRFqHzYxK1OEg1twXZhnnNpv4jljBdU2YiV
	XTvnDQn9G2Gu3s=
X-Received: by 2002:a05:600c:548d:b0:485:3423:727d with SMTP id 5b1f17b1804b1-488cd068ce8mr49324645e9.26.1775746758723;
        Thu, 09 Apr 2026 07:59:18 -0700 (PDT)
Message-ID: <1e2ff012-b07a-43be-9ba6-290b38d3c97c@suse.com>
Date: Thu, 9 Apr 2026 16:59:16 +0200
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
From: Jan Beulich <jbeulich@suse.com>
Subject: [PATCH v4 00/16] x86: support AVX10
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.pau@citrix.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
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 7bit
X-purgate-ID: tlsNG-bad1c0/1775746759-2F34C152-A3EF381A/0/0
X-purgate-type: clean
X-purgate-size: 1598

AVX10.1 is just a re-branding of certain AVX512 (sub)features, i.e.
adds no new instructions. Therefore it's mostly relaxation that needs
doing. Luckily the 256-bit-only case and an unnecessary restriction on
the mask register insns was taken out again, simplifying the actual
emulator adjustments quite a bit.

AVX10.2 is adding quite a few new insns, support for which is roughly
added chapter-wise as the spec has them (perhaps not in the order of
the chapters there).

While it probably could be re-based ahead, the series in this form
depends on the previously submitted "[PATCH v5 0/3] x86/CPUID: leaf
pruning" and parts of whatever is left of "[PATCH v9 00/10] x86emul:
misc additions".

I've tried to be very careful in rebasing ahead of other emulator
patches I've been carrying, but almost all testing I've done is with
all of those collectively in place.

01: x86/CPUID: enable AVX10 leaf
02: x86emul: support SIMD MOVRS
03: x86emul: support AVX10.2 forms of SM4 insns
04: x86emul: support AVX10.1
05: x86emul/test: use simd_check_avx512*() in main()
06: x86emul/test: drop cpu_has_avx512vl
07: x86emul: AVX10.1 testing
08: x86emul/test: engage AVX512VL via command line option
09: x86/CPUID: enable AVX10.2 sub-leaf
10: x86emul: support AVX10.2 scalar compare insns
11: x86emul: support AVX10.2 partial copy insns
12: x86emul: support AVX10.2 media insns
13: x86emul: support AVX10.2 minmax insns
14: x86emul: support AVX10.2 BFloat16 insns
15: x86emul: support AVX10.2 saturating convert insns
16: x86emul: support other AVX10.2 convert insns

Jan


From xen-devel-bounces@lists.xenproject.org Thu Apr 09 15:00:35 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 09 Apr 2026 15:00:35 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1277673.1562807 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wAqrx-00070n-MB; Thu, 09 Apr 2026 15:00:33 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1277673.1562807; Thu, 09 Apr 2026 15:00: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 1wAqrx-00070f-JS; Thu, 09 Apr 2026 15:00:33 +0000
Received: by outflank-mailman (input) for mailman id 1277673;
 Thu, 09 Apr 2026 15:00:32 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <Luca.Fancellu@arm.com>) id 1wAqrw-00070R-09
 for xen-devel@lists.xenproject.org; Thu, 09 Apr 2026 15:00:32 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wAqrv-005v4z-9b
 for xen-devel@lists.xenproject.org; Thu, 09 Apr 2026 17:00:31 +0200
Received: from [10.42.69.6] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <Luca.Fancellu@arm.com>)
 id 69d7bf0d-5cb7-0a2a0a5109dd-0a2a45069132-18
 for <xen-devel@lists.xenproject.org>; Thu, 09 Apr 2026 17:00:31 +0200
Received: from [52.101.84.25]
 (helo=DB3PR0202CU003.outbound.protection.outlook.com)
 by tlsNG-16d1c6.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.0)
 (envelope-from <Luca.Fancellu@arm.com>)
 id 69d7bf0e-0df0-0a2a45060019-34655419586b-3
 for <xen-devel@lists.xenproject.org>; Thu, 09 Apr 2026 17:00:30 +0200
Received: from DB3PR08CA0004.eurprd08.prod.outlook.com (2603:10a6:8::17) by
 AM0PR08MB5380.eurprd08.prod.outlook.com (2603:10a6:208:183::8) with Microsoft
 SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id
 15.20.9769.17; Thu, 9 Apr 2026 15:00:28 +0000
Received: from DB5PEPF00014B9A.eurprd02.prod.outlook.com
 (2603:10a6:8:0:cafe::e8) by DB3PR08CA0004.outlook.office365.com
 (2603:10a6:8::17) with Microsoft SMTP Server (version=TLS1_3,
 cipher=TLS_AES_256_GCM_SHA384) id 15.20.9769.37 via Frontend Transport; Thu,
 9 Apr 2026 15:00:28 +0000
Received: from outbound-uk1.az.dlp.m.darktrace.com (4.158.2.129) by
 DB5PEPF00014B9A.mail.protection.outlook.com (10.167.8.167) with Microsoft
 SMTP Server (version=TLS1_3, cipher=TLS_AES_256_GCM_SHA384) id 15.20.9769.17
 via Frontend Transport; Thu, 9 Apr 2026 15:00:28 +0000
Received: from DU2PR08MB7272.eurprd08.prod.outlook.com (2603:10a6:10:2d7::16)
 by PAXPR08MB6493.eurprd08.prod.outlook.com (2603:10a6:102:15a::15)
 with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9769.20; Thu, 9 Apr
 2026 14:59:24 +0000
Received: from DU2PR08MB7272.eurprd08.prod.outlook.com
 ([fe80::5d34:206f:373:a323]) by DU2PR08MB7272.eurprd08.prod.outlook.com
 ([fe80::5d34:206f:373:a323%6]) with mapi id 15.20.9769.018; Thu, 9 Apr 2026
 14:59: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=arm.com header.i="@arm.com" header.h="From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck"; dkim=pass header.s=selector1 header.d=arm.com header.i="@arm.com" header.h="From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck"
ARC-Seal: i=2; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=pass;
 b=NdQK9lxF2d7wzYnlAT5bf/Wb/LzELNjID+p+AvDAuPVqtuLfXlqLHy1epdO8ut4hDdatXXr8/4zlA+sU+0rJyLRJ8VXO6g/9QtVphmhpLbz0R4ECP1LdYbCMQmEV2D9h3jkz9W0XPIWhurRspTp21VFttkKiBKvk6VO4comwoh1mzK5eWnuhOKF7KnCtr8IJgnp9iu3lv7C2CD1jeDOCE8dt5Z1+/j8IRO47v46OebKJMkOXsCzY1CLMz7BitjeXjIZfP8e3EQ9AA74gm2ruqmaiDUiJOZQ9mP1MU25rXv9ev75cuOyHDWmQy8AObUGeURvspPURFcGsVKnTH1kCLw==
ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com;
 s=arcselector10001;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1;
 bh=zWhPDkH8+Dfkt9b7BQQm2O9WTlUGqEoHkOJc8L0mYtA=;
 b=orFGUD7zBFBCzHyWT+3kK0aqqic7+L/EoN9oX8eZC3KwYVFlW3gOzk7rDguVn6skL8NrH2/eJ0W6NKNXxcYg5ik5hUmB3Dv4rw5rje7F1/v4abH8Ot5Pp1FZRSu3x9G5arVk73uVBIUjUetHl5N/3bmKA7idxV1h7iDCRDWiVYSsUZpAod4uahzz38joCAap5k4koTP+x/SQeIewujAF39lQkXPx7oZKrriOp2hEm+/McnTNWa9ramUmCGk8WKWaDPB137Lm+MWrwgAUJex+Zt4HQRDnBhNY7xraHgkt3Ys7TTWUy4GyqkdOVgo1lfWjNMIi9EsCavwC6AO/hdgYnA==
ARC-Authentication-Results: i=2; mx.microsoft.com 1; spf=pass (sender ip is
 4.158.2.129) smtp.rcpttodomain=epam.com smtp.mailfrom=arm.com; dmarc=pass
 (p=none sp=none pct=100) action=none header.from=arm.com; dkim=pass
 (signature was verified) header.d=arm.com; arc=pass (0 oda=1 ltdi=1
 spf=[1,1,smtp.mailfrom=arm.com] dkim=[1,1,header.d=arm.com]
 dmarc=[1,1,header.from=arm.com])
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=arm.com; s=selector1;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck;
 bh=zWhPDkH8+Dfkt9b7BQQm2O9WTlUGqEoHkOJc8L0mYtA=;
 b=MO+Th7W9581/mKJAi3hxOkaw6L4mNcuH6xGiVHZgdBxZlEJdCuvh2QpH8HxBfiUMNnFuO5hlWa9Up3FuNqsNp5ZDzGv34fnIx3mpyGyRWlSz86FJTbKsc7WFQvfqslQxqF5Pdaz/Q7dPayKEuluWgZLC90aZG0jcTBEaT5vnzJI=
X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 4.158.2.129)
 smtp.mailfrom=arm.com; dkim=pass (signature was verified)
 header.d=arm.com;dmarc=pass action=none header.from=arm.com;
Received-SPF: Pass (protection.outlook.com: domain of arm.com designates
 4.158.2.129 as permitted sender) receiver=protection.outlook.com;
 client-ip=4.158.2.129; helo=outbound-uk1.az.dlp.m.darktrace.com; pr=C
ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none;
 b=qLZdhlZx2vtssKRZlN3HlXjOh63vcARApFb4MVJQaX52YuibjNZ/NQSLTPJskDkQfUafoKuu7SbWNKPvp+odJlznljxEjZrb/3zeVf+gq3t4QL0FyGTPmClluXC2j7y5q05NU/57C4oEQi/dlsfX3x1mwvShhvv2pKTGUUASvTHcjvrMMuFVxNDAI3c6ujijgrKnq+AeZOartOZ90vwep5YVi2/550uMiykASXlvqsSWMWtn8mqC+kfocqiU5imvpV1huhv+JZ+OvwQRLecFLT/cYSfmyrJD5vzdQc50VcRDK9sCx1trG8SZD+emvyFYkpquSKUZJ41t5p6xl0Ib7Q==
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com;
 s=arcselector10001;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1;
 bh=zWhPDkH8+Dfkt9b7BQQm2O9WTlUGqEoHkOJc8L0mYtA=;
 b=R0ZhCueBbLeUp53WDfvatEFaAMdOOyh1HTw3U+HBvvs5jm4MDEaH3mD2YCdEQFiFKsKqU4/2axc8o5zFt+udWuEOf1QCaZFQT6gMp1cFpfXrF3Q8KQKGFgJFpCaEC5Eta/REWRE1+vviZ72Eq5EyfZz3PScbdZcyQ9jKQLcRhypT9J7ySDI9lqeSejAUgL3mYcPHH9mR053uudY7zHQyt+JmpPz14P/QANXDPU+IjANeJ6pf61iFrldT0XiW0M9zkcnrHpBwfniJO6uJxI6SR6W6wkk3h3K1wE9TsyXl5FcPXjLUgVTG2fwod7PFuF9qt+eZr+z5XJA3SJytAb+UhA==
ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass
 smtp.mailfrom=arm.com; dmarc=pass action=none header.from=arm.com; dkim=pass
 header.d=arm.com; arc=none
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=arm.com; s=selector1;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck;
 bh=zWhPDkH8+Dfkt9b7BQQm2O9WTlUGqEoHkOJc8L0mYtA=;
 b=MO+Th7W9581/mKJAi3hxOkaw6L4mNcuH6xGiVHZgdBxZlEJdCuvh2QpH8HxBfiUMNnFuO5hlWa9Up3FuNqsNp5ZDzGv34fnIx3mpyGyRWlSz86FJTbKsc7WFQvfqslQxqF5Pdaz/Q7dPayKEuluWgZLC90aZG0jcTBEaT5vnzJI=
From: Luca Fancellu <Luca.Fancellu@arm.com>
To: Milan Djokic <milan_djokic@epam.com>
CC: "xen-devel@lists.xenproject.org" <xen-devel@lists.xenproject.org>,
	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>,
	Jonathan Cameron <Jonathan.Cameron@huawei.com>, Eric Auger
	<eric.auger@redhat.com>, Keqian Zhu <zhukeqian1@huawei.com>, Will Deacon
	<will@kernel.org>, Joerg Roedel <jroedel@suse.de>
Subject: Re: [PATCH v3 01/23] xen/arm: smmuv3: Maintain a SID->device
 structure
Thread-Topic: [PATCH v3 01/23] xen/arm: smmuv3: Maintain a SID->device
 structure
Thread-Index: AQHcyDF0sX1+ul28x0aGM9udNvQpDw==
Date: Thu, 9 Apr 2026 14:59:24 +0000
Message-ID: <54FF0879-2DDE-4BE1-9BFB-363AFEBBB294@arm.com>
References: <cover.1774918270.git.milan_djokic@epam.com>
 <4fd154cc1d76972d85df6c426320555d6894adfb.1774918270.git.milan_djokic@epam.com>
In-Reply-To:
 <4fd154cc1d76972d85df6c426320555d6894adfb.1774918270.git.milan_djokic@epam.com>
Accept-Language: en-GB, en-US
Content-Language: en-US
X-MS-Has-Attach:
X-MS-TNEF-Correlator:
x-mailer: Apple Mail (2.3826.700.81.1.6)
Authentication-Results-Original: dkim=none (message not signed)
 header.d=none;dmarc=none action=none header.from=arm.com;
x-ms-traffictypediagnostic:
	DU2PR08MB7272:EE_|PAXPR08MB6493:EE_|DB5PEPF00014B9A:EE_|AM0PR08MB5380:EE_
X-MS-Office365-Filtering-Correlation-Id: 74b07bcd-2c5e-444e-1501-08de9648bcbd
x-checkrecipientrouted: true
nodisclaimer: true
X-MS-Exchange-SenderADCheck: 1
X-MS-Exchange-AntiSpam-Relay: 0
X-Microsoft-Antispam-Untrusted:
 BCL:0;ARA:13230040|1800799024|376014|7416014|366016|38070700021|56012099003|18002099003|22082099003;
X-Microsoft-Antispam-Message-Info-Original:
 ZgrkpU4lbB1BXqVAf2xUfrA9WRoYu4/gPD+mkGHlPJRQeLgboSNvDb1eP2tlbQetC6YcIyARTqii4fDTVB2guNRSFFOgMvrPOlV4MUqRvuaJ+JYDtvycRlsvIlrehPcsNjS9KH57oryPHkRAvtc1Lp1eP0AkwU7W2pqAV+4RcIn1BKsEJ4MDxDwvruH1cdkwyOJOBM7ZZSL0lAnbgi4LJU5kFhc5q2N+BzH+gr9wa+5HMwa1F9ggt/JlARDxTka+WNQ7hTnoR+AVZnOBqplVEH9Q6bHZui+Hfs3DI48rBCtj3wOHFCDAgYu6m4wKvN6TfMwKF4XbcWhUp+OxVSqi9rs79NGzJJbPCmHaCkaIePxtkPE4oFWMUzG+wZLJPwUNkhlmDOGxdCNpfwAlMQYaxqUQ/zpvorHlhemdDyBWvNNChOCa6xBiLs2xCUL4AyexusB9WFm2OW9cwarqhJhhs/tSaQW+esefn6KzSQo5y0C0g8Ef5NC7DQWDvfn9gbbsd41q9PX7Tv6YFLD/xKBuKuRglfMO/gSAnZ4yGZYLWqkw7nZ6jq6fzFZNJvvRFom7Qyh0XrUHvjllYC/kHN78FL4jAU2OSVt0T4+HVwwE0xNQX+fhpPOQKyALibfiu9n7WAERy0bpElHzpgnbcpy8L0Vi5WYV+Lg0ci65I0r+WeqaRxbtF5dohCkwWUpzlyIECe/x2Nid1RF3CFWnO+7SvoE1k3Hp5FqnZawRX1wQAqpG9kcAir/aMuK7cCbYY5lyVXUHMeXyq+ZSpnMkpHyUYAfv8qJcDus2xIpzgy2tfmo=
X-Forefront-Antispam-Report-Untrusted:
 CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:DU2PR08MB7272.eurprd08.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(1800799024)(376014)(7416014)(366016)(38070700021)(56012099003)(18002099003)(22082099003);DIR:OUT;SFP:1101;
Content-Type: text/plain; charset="utf-8"
Content-ID: <158A836962561441BA4625205FBA0800@eurprd08.prod.outlook.com>
Content-Transfer-Encoding: base64
MIME-Version: 1.0
X-Exchange-RoutingPolicyChecked:
 sedmtIixWqYGKiIjXhZt0TcDdjHGr5P0BM/QcGiTtsGHE9VbBWWRUu0OMEA5RaW6kWSZ9hRm+kSlsGYVM5VY2CzI4XIjcf74B6yYHUhrV/8XOEx9yxLAOEgoSAwILkGbNnuOxxaa1/zYMr7l0+DtlS7ssXAFP/0VA/mECqnHZibysZJlikDKnb4wAhkE8rTPzEl4OuDftbTM1wIG6TlpmAYU1RuhuzhBPYHdsT+xjrosSJastulBvwgwP7P/E0N99yL26/agRTsoZPxA++y9TCgo+bH3OzMUJFEs/o96Kf77lX9KGm8V6FwA/hzG8juhKL1RPtSOaPsWZYipwLcPYg==
X-MS-Exchange-Transport-CrossTenantHeadersStamped: PAXPR08MB6493
X-EOPAttributedMessage: 0
X-MS-Exchange-Transport-CrossTenantHeadersStripped:
 DB5PEPF00014B9A.eurprd02.prod.outlook.com
X-MS-PublicTrafficType: Email
X-MS-Office365-Filtering-Correlation-Id-Prvs:
	4d5687e2-9821-4243-5313-08de9648968c
X-Microsoft-Antispam:
	BCL:0;ARA:13230040|35042699022|14060799003|376014|36860700016|7416014|1800799024|82310400026|18002099003|22082099003|56012099003;
X-Microsoft-Antispam-Message-Info:
	o0lfb4k+ZQFE1M25tRWpz6ep1CA2WDpe/4P6VcDMzHI2HLYmQIbiAzBSUHD/SNT2iQUycXtnA628RCjz+oqU05W8jWs8EiMo+fvMlRZCr4ylJCLS1B4n9TkqxBvoQiYdG0OqUKYZEO21F2+gQ3L9Pl76x4/ynZSZUyqkY9whmRW78sZP1n+S9/H8RT8pCBoNGNiL2lpSb4dE6dkrXzseX34JUW+bkTcUW7s8HVWFD21l0vm5UGtDBltb9Ye38APjlHwUfcgrKhgp+bB3C62RrOZTk/2s5AHIzQ7DjoQNW7J1Yu5op0undQ60tfhBhpXOSS6mKb0aySdW644ZtJut9EW6uiUqHrFLoDdd5pDVc8qLdbKJVj6R85Z/O1X0DTFYRKeRaiWqavBIe4loEKPIYSiq1XgwvDEOalrjBD3D07Q9mLZ5P31/Bdwr6jELvzHTCpIH91/YKAfR/RyDAy6PmHvK6KM7xubS07Dq8MZi91maeD9/5Kg9XO/tyJyLes35iNhg2r2pXEJF1oRfn8+FNviLhe481lJOAmtfrIJKnus3gip3CcrrQTpSuqPAHJfgFCniZTG26HmXyKNfB0187xDiy6dZ+Li96ph68aeogENCYNs9lDv+qV7S3QkdKBhK2hRKkKb3EU0bGEiX/RRr1ib6WENkNgPqXhXo0LFCWtDoAEztUJ4AAgxXWBgDk42t7tSOHAya0gRMN5MRFY52Rfb5ISTGS3l5Lfu7/wd6riSjjwwXOntY2IyCma4r28hNCuOxfOcV7z87lMWGNCVkTQ==
X-Forefront-Antispam-Report:
	CIP:4.158.2.129;CTRY:GB;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:outbound-uk1.az.dlp.m.darktrace.com;PTR:InfoDomainNonexistent;CAT:NONE;SFS:(13230040)(35042699022)(14060799003)(376014)(36860700016)(7416014)(1800799024)(82310400026)(18002099003)(22082099003)(56012099003);DIR:OUT;SFP:1101;
X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1
X-MS-Exchange-AntiSpam-MessageData-0:
	R8jZLIA4uQBEspWA4SPU+INH1Gt+b4KM3YxyU+GCbakrgz/WSA0vWsefYs4oe53bVfd+47OuLbEr09vFeyxmy1dnWidRRtByhBVykE9O4lzkp/yugHACEno7E15BDL7OPTTzxSIEeNzs4a88SIdjU+KKmFwWsjamSZ5WlQGNzYZKLdXwKPF9rstONjFTbK26b7SA1Drcnua94qEetjQ2x7rInf15my8QhQWRFyBKddEckXtY58G92Gurrl/SC0kKQgPWSMj9gjH1Pj2CNlTpWkrpqxHS0ZmGdeT76ULsAuylJo2jczrrD5QL79EZdiAcpGDOwpsnI4Y0iU6jyy6/umm4nBwRMGHYt46OBIb3xAT5xVdnYMqnnI8QpG0DvImoRVHzbQLi2EFORSDUIBW8DBskCJHXOvPkCbFACEd1JntPKNsgmD+s/IAKKd6WdkVV
X-OriginatorOrg: arm.com
X-MS-Exchange-CrossTenant-OriginalArrivalTime: 09 Apr 2026 15:00:28.0492
 (UTC)
X-MS-Exchange-CrossTenant-Network-Message-Id: 74b07bcd-2c5e-444e-1501-08de9648bcbd
X-MS-Exchange-CrossTenant-Id: f34e5979-57d9-4aaa-ad4d-b122a662184d
X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=f34e5979-57d9-4aaa-ad4d-b122a662184d;Ip=[4.158.2.129];Helo=[outbound-uk1.az.dlp.m.darktrace.com]
X-MS-Exchange-CrossTenant-AuthSource:
	DB5PEPF00014B9A.eurprd02.prod.outlook.com
X-MS-Exchange-CrossTenant-AuthAs: Anonymous
X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem
X-MS-Exchange-Transport-CrossTenantHeadersStamped: AM0PR08MB5380
X-purgate-ID: tlsNG-16d1c6/1775746830-5E7313D8-5923EBF9/0/0
X-purgate-type: clean
X-purgate-size: 2004

SGkgTWlsYW4sDQoNCj4gT24gMzEgTWFyIDIwMjYsIGF0IDAyOjUxLCBNaWxhbiBEam9raWMgPG1p
bGFuX2Rqb2tpY0BlcGFtLmNvbT4gd3JvdGU6DQo+IA0KPiBGcm9tOiBKZWFuLVBoaWxpcHBlIEJy
dWNrZXIgPGplYW4tcGhpbGlwcGVAbGluYXJvLm9yZz4NCj4gDQo+IEJhY2twb3J0IExpbnV4IGNv
bW1pdCBjZGYzMTVmOTA3ZDQuIFRoaXMgaXMgdGhlIGNsZWFuIGJhY2twb3J0IHdpdGhvdXQNCj4g
YW55IGNoYW5nZXMuDQo+IA0KPiBXaGVuIGhhbmRsaW5nIGZhdWx0cyBmcm9tIHRoZSBldmVudCBv
ciBQUkkgcXVldWUsIHdlIG5lZWQgdG8gZmluZCB0aGUNCj4gc3RydWN0IGRldmljZSBhc3NvY2lh
dGVkIHdpdGggYSBTSUQuIEFkZCBhIHJiX3RyZWUgdG8ga2VlcCB0cmFjayBvZg0KPiBTSURzLg0K
PiANCj4gQWNrZWQtYnk6IEpvbmF0aGFuIENhbWVyb24gPEpvbmF0aGFuLkNhbWVyb25AaHVhd2Vp
LmNvbT4NCj4gUmV2aWV3ZWQtYnk6IEVyaWMgQXVnZXIgPGVyaWMuYXVnZXJAcmVkaGF0LmNvbT4N
Cj4gUmV2aWV3ZWQtYnk6IEtlcWlhbiBaaHUgPHpodWtlcWlhbjFAaHVhd2VpLmNvbT4NCj4gU2ln
bmVkLW9mZi1ieTogSmVhbi1QaGlsaXBwZSBCcnVja2VyIDxqZWFuLXBoaWxpcHBlQGxpbmFyby5v
cmc+DQo+IEFja2VkLWJ5OiBXaWxsIERlYWNvbiA8d2lsbEBrZXJuZWwub3JnPg0KPiBMaW5rOiBo
dHRwczovL2xvcmUua2VybmVsLm9yZy9yLzIwMjEwNDAxMTU0NzE4LjMwNzUxOS04LWplYW4tcGhp
bGlwcGVAbGluYXJvLm9yZw0KPiBTaWduZWQtb2ZmLWJ5OiBKb2VyZyBSb2VkZWwgPGpyb2VkZWxA
c3VzZS5kZT4NCj4gT3JpZ2luOiBnaXQ6Ly9naXQua2VybmVsLm9yZy9wdWIvc2NtL2xpbnV4L2tl
cm5lbC9naXQvdG9ydmFsZHMvbGludXguZ2l0IGNkZjMxNWY5MDdkNA0KPiBTaWduZWQtb2ZmLWJ5
OiBSYWh1bCBTaW5naCA8cmFodWwuc2luZ2hAYXJtLmNvbT4NCj4gU2lnbmVkLW9mZi1ieTogTWls
YW4gRGpva2ljIDxtaWxhbl9kam9raWNAZXBhbS5jb20+DQo+IC0tLQ0KDQpJIHRoaW5rIHRoYXQg
Ynkgb25seSBiYWNrcG9ydGluZyB0aGlzIG9uZSB3ZSBhcmUgaW50cm9kdWNpbmcgYSByZWdyZXNz
aW9uIGZvciB3aGljaA0Kd2UgZG9u4oCZdCBhbGxvdyBhbnltb3JlIGR1cGxpY2F0ZWQgc3RyZWFt
IGlkLCBoYXZlIGEgbG9vayBvbiB0aGlzIGxpbnV4IGNvbW1pdA0KdGhhdCBpcyBmaXhpbmcgaXQ6
IGIwMGQyNDk5N2ExMWMxMGQzZTQyMDYxNGYwODczYjgzY2UzNThhMzQuDQoNClAucy4gSSB3YXMg
YWJsZSB0byBhcHBseSBvbmx5IHVudGlsIHBhdGNoIDMsIEkgdGhpbmsgdGhpcyBzZXJpZSBuZWVk
cyBhIHJlYmFzZSwgZG8geW91IGhhdmUNCmFuIHVwZGF0ZWQgYnJhbmNoIG9yIGNhbiB5b3UgcG9p
bnQgbWUgdG8gdGhlIHN0YWdpbmcgU0hBIHRvIGJ1aWxkIGl0PyAoaG9wZSBpdOKAmXMgbm90IHRv
byBmYXINCmZyb20gbm93KQ0KDQpDaGVlcnMsDQpMdWNhDQoNCg0K


From xen-devel-bounces@lists.xenproject.org Thu Apr 09 15:02:24 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 09 Apr 2026 15:02:24 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1277683.1562815 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wAqtj-0007WR-00; Thu, 09 Apr 2026 15:02:23 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1277683.1562815; Thu, 09 Apr 2026 15:02: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 1wAqti-0007WK-TV; Thu, 09 Apr 2026 15:02:22 +0000
Received: by outflank-mailman (input) for mailman id 1277683;
 Thu, 09 Apr 2026 15:02:22 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <jbeulich@suse.com>) id 1wAqti-0007W9-4c
 for xen-devel@lists.xenproject.org; Thu, 09 Apr 2026 15:02:22 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wAqtg-001m1J-P6
 for xen-devel@lists.xenproject.org; Thu, 09 Apr 2026 17:02:20 +0200
Received: from [10.42.69.10] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <jbeulich@suse.com>)
 id 69d7bf6c-5cb7-0a2a0a5109dd-0a2a450accd0-18
 for <xen-devel@lists.xenproject.org>; Thu, 09 Apr 2026 17:02:20 +0200
Received: from [209.85.221.54] (helo=mail-wr1-f54.google.com)
 by tlsNG-4011c0.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.0)
 (envelope-from <jbeulich@suse.com>)
 id 69d7bf77-ee98-0a2a450a0019-d155dd36c965-3
 for <xen-devel@lists.xenproject.org>; Thu, 09 Apr 2026 17:02:15 +0200
Received: by mail-wr1-f54.google.com with SMTP id
 ffacd0b85a97d-43cfd1f9fd1so648125f8f.3
 for <xen-devel@lists.xenproject.org>; Thu, 09 Apr 2026 08:02:15 -0700 (PDT)
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-488cd18de6fsm25382815e9.25.2026.04.09.08.02.13
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Thu, 09 Apr 2026 08:02:14 -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=google header.d=suse.com header.i="@suse.com" header.h="Content-Transfer-Encoding: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=1775746935; x=1776351735; darn=lists.xenproject.org;
        h=content-transfer-encoding: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;
        bh=mm7WYaMM68h+Fp0IJpJcgFDx/R1XJIsbTelvVNOC/m4=;
        b=EdoNYSR2x7xCkMyQWO2QxuBrZIcDT4lFOr6KwaSgXtCE7WG3ihjuzFEgtInxqd9rgm
         WNOfqqUV6RIGvfq1sDQ56FtpFbmAPUZe2lb2+dS/nRAZ87gpFVWJJtDVBfieCp6PqNay
         slQyjFhpjSHSDq0URnzc63hGVY4Xr2tMZmu4mwtncadkTXegrqwRIEqn9TBDxljGRYbL
         W5NGmqgqwwsFubcsAInXqqqhvlIXWcd1TNWNSof0DVdnOT31Zh7c+0bR7SZX2UazxCP0
         yTWomAQVTHy/AyNI9tYMl6+l6wBkDWaOZHVQpskiNDtmmR8H/cdWGPGrFqI6N2DLohmn
         pSbQ==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20251104; t=1775746935; x=1776351735;
        h=content-transfer-encoding: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;
        bh=mm7WYaMM68h+Fp0IJpJcgFDx/R1XJIsbTelvVNOC/m4=;
        b=R0AynUUzNXFdM6MwS8bZ0YxyscuOVsGQautJoiptgaELIEg9I8xdcs2aSlLSzFxPBx
         ixXqX+5LyvH/ifbIjfFbToFoP9AHLabC/UeXewEsTIa5k5gK6QVn3fniJ8Xuv115qUBV
         ht1xWfhoe6mqhAGAj1zGHPib7jGDnYGvwrLVos46NPeswuQv0thq3uRRIFuwK/20bmVy
         RPJSe0IkqKmQnzz0Cw51Zy0Hmiwk0dAF7iEzVHoEud0vAA9aGkGvu4kdru7HdZjg2VO8
         3hmhpols8kv4zezcdlrou/oQU4uO3xSPBUMALEv9qK83ylR+9ivmfBSr1mewR6Uc7SWY
         HaQQ==
X-Gm-Message-State: AOJu0YxiPL5McJzQhMgkMw/RPLYSjOCggxUtUSH0ccEhHhAMZKt1TlTV
	pFKp7McugsYblzyacjB+95XVO/H4LoDKM24y9N3z9eV58qYJQT/lOi5Ox4w2bowEhWtSWQLaM40
	osj75CQ==
X-Gm-Gg: AeBDieuWLLcww7sVhYoUuvC2wNKW8+6QEsgvc5cGGZohAQyJK9Egd1UET2vCo0JrSFS
	gVzkj4GS+e91hz+mDFtf3mz86EfRWE2T9//amtj+KNz412+Xi90Euq5Y11SIsoD6YP4BA5QZF+G
	6UH1GdMTQqGUOczUZ2jNjbHMWN8hbNsvKK+PCWtTq+QZ38cxk50QPSz7XqxLnpAUTOFHOyesTmM
	/pfq7sytfhlDelA261o84Se+seVq6xfn2eVwT/VL6c40JXHlM4dD2Z2X+W/83FKV1gPtaq1nD7U
	5gFSGvF3Vc6w6iPsV0fUU64zSqY0Fe/91svd4FTQf+a5RmTZZQpQrgTXpLquFVXOPykSjczxBcs
	F72JposQl1cgHwsFu6st6OGaM4UKli+923dWRqAhHK4t5pb51dK7dC+g4DRTuG2bjADcq/qKsYQ
	BXdVCf574mNR8Pp8vj9kR8CzxCKezEWB5MQapAZSZvvhHisuyWLwo2kJ2dMRxu71BQlY+zbyL84
	7fzH46O0LvIFtw=
X-Received: by 2002:a05:600c:8b0a:b0:488:a2ac:a337 with SMTP id 5b1f17b1804b1-488ccffa903mr61621365e9.21.1775746934725;
        Thu, 09 Apr 2026 08:02:14 -0700 (PDT)
Message-ID: <5ed45e7e-6873-4651-9abd-9ece141ed79f@suse.com>
Date: Thu, 9 Apr 2026 17:02:12 +0200
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: [PATCH v4 01/16] x86emul: support SIMD MOVRS
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.pau@citrix.com>,
 Teddy Astie <teddy.astie@vates.tech>
References: <1e2ff012-b07a-43be-9ba6-290b38d3c97c@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: <1e2ff012-b07a-43be-9ba6-290b38d3c97c@suse.com>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 7bit
X-purgate-ID: tlsNG-4011c0/1775746935-C56170B1-63DDE55B/0/0
X-purgate-type: clean
X-purgate-size: 4760

As we ignore cachability aspects of insns, they're treated like simple
VMOVs.

Signed-off-by: Jan Beulich <jbeulich@suse.com>
---
SDE: -dmr
---
v4: Correct main switch case labels to reference Map5. Switch to using
    fallthrough pseudo-keyword. Move ahead in series, switching feature
    dependency to plain AVX10.
v3: New.

--- a/tools/tests/x86_emulator/evex-disp8.c
+++ b/tools/tests/x86_emulator/evex-disp8.c
@@ -720,6 +720,13 @@ static const struct test vpclmulqdq_all[
     INSN(pclmulqdq, 66, 0f3a, 44, vl, q_nb, vl)
 };
 
+static const struct test movrs_all[] = {
+    INSN(movrsb, f2, map5, 6f, vl,    b, vl),
+    INSN(movrsd, f3, map5, 6f, vl, d_nb, vl),
+    INSN(movrsq, f3, map5, 6f, vl, q_nb, vl),
+    INSN(movrsw, f2, map5, 6f, vl,    w, vl),
+};
+
 static const unsigned char vl_all[] = { VL_512, VL_128, VL_256 };
 static const unsigned char vl_128[] = { VL_128 };
 static const unsigned char vl_no128[] = { VL_512, VL_256 };
@@ -1071,8 +1078,8 @@ void evex_disp8_test(void *instr, struct
     emulops.read = read;
     emulops.write = write;
 
-#define RUN(feat, vl) do { \
-    if ( cpu_has_##feat ) \
+#define run(cond, feat, vl) do { \
+    if ( cond ) \
     { \
         printf("%-40s", "Testing " #feat "/" #vl " disp8 handling..."); \
         test_group(feat ## _ ## vl, ARRAY_SIZE(feat ## _ ## vl), \
@@ -1081,6 +1088,8 @@ void evex_disp8_test(void *instr, struct
     } \
 } while ( false )
 
+#define RUN(feat, vl) run(cpu_has_ ## feat, feat, vl)
+
     RUN(avx512f, all);
     RUN(avx512f, 128);
     RUN(avx512f, no128);
@@ -1111,4 +1120,9 @@ void evex_disp8_test(void *instr, struct
         RUN(vaes, all);
         RUN(vpclmulqdq, all);
     }
+
+    if ( cpu_has_avx10 )
+    {
+        run(ctxt->addr_size == 64 && cpu_has_movrs, movrs, all);
+    }
 }
--- a/tools/tests/x86_emulator/predicates.c
+++ b/tools/tests/x86_emulator/predicates.c
@@ -2124,6 +2124,8 @@ static const struct evex {
     { { 0x5f }, 2, T, R, pfx_no, W0, Ln }, /* vmaxph */
     { { 0x5f }, 2, T, R, pfx_f3, W0, LIG }, /* vmaxsh */
     { { 0x6e }, 2, T, R, pfx_66, WIG, L0 }, /* vmovw */
+    { { 0x6f }, 2, T, R, pfx_f3, Wn, Ln }, /* vmovrs{d,q} */
+    { { 0x6f }, 2, T, R, pfx_f2, Wn, Ln }, /* vmovrs{b,w} */
     { { 0x78 }, 2, T, R, pfx_no, W0, Ln }, /* vcvttph2udq */
     { { 0x78 }, 2, T, R, pfx_66, W0, Ln }, /* vcvttph2uqq */
     { { 0x78 }, 2, T, R, pfx_f3, Wn, LIG }, /* vcvttsh2usi */
--- a/tools/tests/x86_emulator/x86-emulate.h
+++ b/tools/tests/x86_emulator/x86-emulate.h
@@ -209,12 +209,14 @@ void wrpkru(unsigned int val);
                                      xcr0_mask(0xe6))
 #define cpu_has_cmpccxadd            cpu_policy.feat.cmpccxadd
 #define cpu_has_avx_ifma            (cpu_policy.feat.avx_ifma && xcr0_mask(6))
+#define cpu_has_movrs                cpu_policy.feat.movrs
 #define cpu_has_avx_vnni_int8       (cpu_policy.feat.avx_vnni_int8 && \
                                      xcr0_mask(6))
 #define cpu_has_avx_ne_convert      (cpu_policy.feat.avx_ne_convert && \
                                      xcr0_mask(6))
 #define cpu_has_avx_vnni_int16      (cpu_policy.feat.avx_vnni_int16 && \
                                      xcr0_mask(6))
+#define cpu_has_avx10               (cpu_policy.feat.avx10 && xcr0_mask(0xe6))
 
 #define cpu_has_xgetbv1             (cpu_has_xsave && cpu_policy.xstate.xgetbv1)
 
--- a/xen/arch/x86/x86_emulate/private.h
+++ b/xen/arch/x86/x86_emulate/private.h
@@ -622,6 +622,8 @@ amd_like(const struct x86_emulate_ctxt *
 #define vcpu_has_avx_vnni_int16() (ctxt->cpuid->feat.avx_vnni_int16)
 #define vcpu_has_user_msr()    (ctxt->cpuid->feat.user_msr)
 
+#define vcpu_has_avx10()       (ctxt->cpuid->feat.avx10)
+
 #define vcpu_must_have(feat) \
     generate_exception_if(!vcpu_has_##feat(), X86_EXC_UD)
 
--- a/xen/arch/x86/x86_emulate/x86_emulate.c
+++ b/xen/arch/x86/x86_emulate/x86_emulate.c
@@ -7880,6 +7880,17 @@ x86_emulate(
         op_bytes = 8 << evex.lr;
         goto simd_zmm;
 
+    case X86EMUL_OPC_EVEX_F2(5, 0x6f): /* vmovrs{b,w} mem,[xyz]mm{k} */
+        elem_bytes = 1 << evex.w;
+        fallthrough;
+    case X86EMUL_OPC_EVEX_F3(5, 0x6f): /* vmovrs{d,q} mem,[xyz]mm{k} */
+        generate_exception_if(ea.type != OP_MEM || evex.brs, X86_EXC_UD);
+        vcpu_must_have(avx10);
+        vcpu_must_have(movrs);
+        avx512_vlen_check(false);
+        op_bytes = 16 << evex.lr;
+        goto simd_zmm;
+
     case X86EMUL_OPC_EVEX_66(5, 0x78): /* vcvttph2uqq xmm/mem,[xyz]mm{k} */
     case X86EMUL_OPC_EVEX_66(5, 0x79): /* vcvtph2uqq xmm/mem,[xyz]mm{k} */
     case X86EMUL_OPC_EVEX_66(5, 0x7a): /* vcvttph2qq xmm/mem,[xyz]mm{k} */



From xen-devel-bounces@lists.xenproject.org Thu Apr 09 15:02:51 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 09 Apr 2026 15:02:51 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1277689.1562825 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wAquB-0007vi-8i; Thu, 09 Apr 2026 15:02:51 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1277689.1562825; Thu, 09 Apr 2026 15:02: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 1wAquB-0007va-5F; Thu, 09 Apr 2026 15:02:51 +0000
Received: by outflank-mailman (input) for mailman id 1277689;
 Thu, 09 Apr 2026 15:02:50 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <jbeulich@suse.com>) id 1wAquA-0007vQ-Ge
 for xen-devel@lists.xenproject.org; Thu, 09 Apr 2026 15:02:50 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wAqu9-0028oj-OS
 for xen-devel@lists.xenproject.org; Thu, 09 Apr 2026 17:02:49 +0200
Received: from [10.42.69.3] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <jbeulich@suse.com>)
 id 69d7bf87-bab6-0a2a0a5309dd-0a2a4503ec52-48
 for <xen-devel@lists.xenproject.org>; Thu, 09 Apr 2026 17:02:49 +0200
Received: from [209.85.221.45] (helo=mail-wr1-f45.google.com)
 by tlsNG-33051d.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.0)
 (envelope-from <jbeulich@suse.com>)
 id 69d7bf99-02b3-0a2a45030019-d155dd2da5ef-3
 for <xen-devel@lists.xenproject.org>; Thu, 09 Apr 2026 17:02:49 +0200
Received: by mail-wr1-f45.google.com with SMTP id
 ffacd0b85a97d-43cf5fbacc9so479526f8f.1
 for <xen-devel@lists.xenproject.org>; Thu, 09 Apr 2026 08:02:49 -0700 (PDT)
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-43d1e4f1a99sm71968306f8f.32.2026.04.09.08.02.41
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Thu, 09 Apr 2026 08:02:41 -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=google header.d=suse.com header.i="@suse.com" header.h="Content-Transfer-Encoding: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=1775746969; x=1776351769; darn=lists.xenproject.org;
        h=content-transfer-encoding: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;
        bh=Yi2mAG4aBxptsu+CTnyi/QS2RhPJI3HigfQx8QKH2PE=;
        b=GENXrqOA9xxBs2w71339U5A6OhDCO+qlBm6tTUgoJd27WcPIf/pe4XfIqyPN77wxmN
         GtgjLDr0zwzfycyiYoQuXM0pIbwL2dlaZSDRlwgJ0xgAMIKgk2Mka3EaSo6sYTqUm3Ws
         7BKUjbex2j6zyWI9lCPApb9zNk1pcn4lv9c7W8W8T/cW74uJ+INl3IoKtN/6qn6AURhp
         sNh8iOfgj1E+IYt040oR0dMrbphgXQbrwsYS8hOG/uBiskx/d04TKIAXpteiaDJkd/Dv
         EIKdbqkymKsIJ60f1uTGtO5Q6hmt6F5/fZYoUzKaMM2FOfL4s7gu6ZwYuXDQ8kKfXxf4
         zENw==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20251104; t=1775746969; x=1776351769;
        h=content-transfer-encoding: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;
        bh=Yi2mAG4aBxptsu+CTnyi/QS2RhPJI3HigfQx8QKH2PE=;
        b=QfRMTTw0aVqmhUs7fLqbtLTHM/cPagOk2Jbm3m3wWvRhMV/0lC1HobtZtiFAD3/WCJ
         YsVAJ5Dsko6cDzoFJyr00nCmhWls26ycOndqUC/OtEyTNL+jg57dlgmufB/NaQhYmVSv
         SK26DpedgmzsKMz6Q03MJGp7HBGy5As3VL9yEyhA+lhWjpFcYki/FjOqJGqgyNLDrIik
         qDK4sVCIrPkeLywtEiW8nO+smKL+hKZxxlldfotIHNS6J0KZ02Vgm9+McgtZX87kd3u/
         cAQft8jY0F2177TQWOWzi4gU6eL+XOxyUtulHVuGevT4g5iSDfYc3ltJOlEo3bTl4Q7c
         W0pQ==
X-Gm-Message-State: AOJu0YxEmPI/TkSNg2b+ZlfVBw5YogPQpQwTIZivIlqsTlcvPqV/DfKU
	IpUqPx61JfiJ9jJ6LrqryzDGpQZQ+2lpiGO8IbvfEicHZQ8gHtHRq29U5y34fzCMFMR+swgeAOi
	e5yf1Bg==
X-Gm-Gg: AeBDieser7BUnRRst8g2P0tc2r+B1qUjCz7yIY8U0zD5onLAvbW5DVOXTI30rux0YQo
	b0GDyULdBofoWsuHS+AEtvGS3aL6coG4/1F7bx/0qkgpG4tdG6datVFIztodEMrhMd7nK0nqpwA
	fxfRUCSkXP0gBiCM+ubQnhEVhXqGssROVMymCnhgcuxhLqamUAGtAA359bx+9+HOWVCmf3sl82j
	A5sSYZ08reT3uKxe6RTEHVY5B46YxxsQjCVBakUbCWihqrfby/KmXJQrg0W9U8/DOxUDUhUk0PQ
	/gzLTp/eIOWfMgEWhLIQhhPE6UhfjvAxh6J62Jt5ye04Z9EmrQoKEG2YNGYJSjSaEZHgLbS8CVh
	uUA4PrOMwfONrwNfEFHp1WSinZd8VZWug0B1d8nZPKsEcRLOdu3LiqPWqpG3qnhIDVNW0sZK9mQ
	P5MsyICSZ6hC3neYKaNVk4kh6AjYKpQVOEyUFoDFHrZ9eOiA0hU5KDc+QTiKC5rPcPeST6VSwU1
	j2Sx4sjyLmMuu8=
X-Received: by 2002:a5d:5f44:0:b0:43c:f926:1fa with SMTP id ffacd0b85a97d-43d594ad27fmr5386929f8f.0.1775746962048;
        Thu, 09 Apr 2026 08:02:42 -0700 (PDT)
Message-ID: <85e5d61e-3a9a-44bd-9c79-37762c6ee2e6@suse.com>
Date: Thu, 9 Apr 2026 17:02:40 +0200
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: [PATCH v4 02/16] x86emul: support AVX10 forms of SM4 insns
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.pau@citrix.com>,
 Teddy Astie <teddy.astie@vates.tech>
References: <1e2ff012-b07a-43be-9ba6-290b38d3c97c@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: <1e2ff012-b07a-43be-9ba6-290b38d3c97c@suse.com>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 7bit
X-purgate-ID: tlsNG-33051d/1775746969-41B15C9A-99843D8C/0/0
X-purgate-type: clean
X-purgate-size: 3152

Simply clone the VEX-encoded handling to cover the EVEX forms.

Signed-off-by: Jan Beulich <jbeulich@suse.com>
---
SDE: -dmr / -future
---
v4: Address v3 TODO. Move ahead in series, switching feature dependency to
    plain AVX10. Add call to avx512_vlen_check().
v3: New.

--- a/tools/tests/x86_emulator/evex-disp8.c
+++ b/tools/tests/x86_emulator/evex-disp8.c
@@ -727,6 +727,11 @@ static const struct test movrs_all[] = {
     INSN(movrsw, f2, map5, 6f, vl,    w, vl),
 };
 
+static const struct test sm4_all[] = {
+    INSN(sm4key4,  f3, 0f38, da, vl, d_nb, vl),
+    INSN(sm4rnds4, f2, 0f38, da, vl, d_nb, vl),
+};
+
 static const unsigned char vl_all[] = { VL_512, VL_128, VL_256 };
 static const unsigned char vl_128[] = { VL_128 };
 static const unsigned char vl_no128[] = { VL_512, VL_256 };
@@ -1124,5 +1129,6 @@ void evex_disp8_test(void *instr, struct
     if ( cpu_has_avx10 )
     {
         run(ctxt->addr_size == 64 && cpu_has_movrs, movrs, all);
+        run(cpu_has_sm4, sm4, all);
     }
 }
--- a/tools/tests/x86_emulator/predicates.c
+++ b/tools/tests/x86_emulator/predicates.c
@@ -2025,6 +2025,8 @@ static const struct evex {
     { { 0xcc }, 2, T, R, pfx_66, Wn, L2 }, /* vrsqrt28p{s,d} */
     { { 0xcd }, 2, T, R, pfx_66, Wn, LIG }, /* vrsqrt28s{s,d} */
     { { 0xcf }, 2, T, R, pfx_66, W0, Ln }, /* vgf2p8mulb */
+    { { 0xda }, 2, T, R, pfx_f3, W0, Ln }, /* vsm4key4 */
+    { { 0xda }, 2, T, R, pfx_f2, W0, Ln }, /* vsm4rnds4 */
     { { 0xdc }, 2, T, R, pfx_66, WIG, Ln }, /* vaesenc */
     { { 0xdd }, 2, T, R, pfx_66, WIG, Ln }, /* vaesenclast */
     { { 0xde }, 2, T, R, pfx_66, WIG, Ln }, /* vaesdec */
--- a/xen/arch/x86/x86_emulate/decode.c
+++ b/xen/arch/x86/x86_emulate/decode.c
@@ -438,7 +438,7 @@ static const struct ext0f38_table {
     [0xd3] = { .simd_size = simd_other },
     [0xd6] = { .simd_size = simd_other, .d8s = d8s_vl },
     [0xd7] = { .simd_size = simd_scalar_vexw, .d8s = d8s_dq },
-    [0xda] = { .simd_size = simd_other },
+    [0xda] = { .simd_size = simd_other, .d8s = d8s_vl },
     [0xdb] = { .simd_size = simd_packed_int, .two_op = 1 },
     [0xdc ... 0xdf] = { .simd_size = simd_packed_int, .d8s = d8s_vl },
     [0xe0 ... 0xef] = { .to_mem = 1 },
--- a/xen/arch/x86/x86_emulate/x86_emulate.c
+++ b/xen/arch/x86/x86_emulate/x86_emulate.c
@@ -6819,6 +6819,15 @@ x86_emulate(
         op_bytes = 16 << vex.l;
         goto simd_0f_ymm;
 
+    case X86EMUL_OPC_EVEX_F3(0x0f38, 0xda): /* vsm4key4 [xyz]mm/mem,[xyz]mm,[xyz]mm */
+    case X86EMUL_OPC_EVEX_F2(0x0f38, 0xda): /* vsm4rnds4 [xyz]mm/mem,[xyz]mm,[xyz]mm */
+        vcpu_must_have(avx10);
+        vcpu_must_have(sm4);
+        generate_exception_if(evex.w || evex.brs || evex.opmsk, X86_EXC_UD);
+        avx512_vlen_check(false);
+        op_bytes = 16 << evex.lr;
+        goto simd_zmm;
+
     case X86EMUL_OPC_VEX_66(0x0f38, 0xdc):  /* vaesenc {x,y}mm/mem,{x,y}mm,{x,y}mm */
     case X86EMUL_OPC_VEX_66(0x0f38, 0xdd):  /* vaesenclast {x,y}mm/mem,{x,y}mm,{x,y}mm */
     case X86EMUL_OPC_VEX_66(0x0f38, 0xde):  /* vaesdec {x,y}mm/mem,{x,y}mm,{x,y}mm */



From xen-devel-bounces@lists.xenproject.org Thu Apr 09 15:03:55 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 09 Apr 2026 15:03:55 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1277705.1562833 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wAqvC-000071-Lr; Thu, 09 Apr 2026 15:03:54 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1277705.1562833; Thu, 09 Apr 2026 15:03: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 1wAqvC-00006u-JC; Thu, 09 Apr 2026 15:03:54 +0000
Received: by outflank-mailman (input) for mailman id 1277705;
 Thu, 09 Apr 2026 15:03:52 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <jbeulich@suse.com>) id 1wAqvA-00006g-HY
 for xen-devel@lists.xenproject.org; Thu, 09 Apr 2026 15:03:52 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wAqv9-00EBZ8-Pu
 for xen-devel@lists.xenproject.org; Thu, 09 Apr 2026 17:03:51 +0200
Received: from [10.42.69.1] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <jbeulich@suse.com>)
 id 69d7bfd3-e002-0a2a0a5209dd-0a2a4501d41e-14
 for <xen-devel@lists.xenproject.org>; Thu, 09 Apr 2026 17:03:51 +0200
Received: from [209.85.128.44] (helo=mail-wm1-f44.google.com)
 by tlsNG-d62444.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.0)
 (envelope-from <jbeulich@suse.com>)
 id 69d7bfd7-6fc9-0a2a45010019-d155802cd531-3
 for <xen-devel@lists.xenproject.org>; Thu, 09 Apr 2026 17:03:51 +0200
Received: by mail-wm1-f44.google.com with SMTP id
 5b1f17b1804b1-488ba840146so9559615e9.1
 for <xen-devel@lists.xenproject.org>; Thu, 09 Apr 2026 08:03:51 -0700 (PDT)
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-43d473b8c1esm28292478f8f.12.2026.04.09.08.03.49
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Thu, 09 Apr 2026 08:03:50 -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=google header.d=suse.com header.i="@suse.com" header.h="Content-Transfer-Encoding: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=1775747031; x=1776351831; darn=lists.xenproject.org;
        h=content-transfer-encoding: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;
        bh=dqraePAbUJ4g2LjnweTFZrAuZgmq3i6Y4FcVjpidReE=;
        b=R8XoS3j96OMZjKEh5q1gO2XZNZuSD3ytxT2j+52r2JShkgOPqf28dAKArA0SbZXpHP
         UMH3xGSxLTMYfM4JjiSrRG/vtgiFkdMxOD9KPE7Itf20hr4Q0dkAVtdK48D1Fg3V6jZ3
         NQV/pJlS9kERQ3+1Y0uSFR46BTAq9BggMLvLHuLz8So7yQQ/1E2fShzOfeiRlkRPyx0y
         RF/j/w0ImyjaopDS8sK8bUdeU5fIKWp+GQGdN7ddWJFrjcO7xMoMzMPVJZV0gTB2xbRk
         /UsLqjyLR7sfOhz2wMa8ytRnqQkOc4MDIC8tn32T3+93JzWzETziHmyL8WDORlEqEtIl
         n+UQ==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20251104; t=1775747031; x=1776351831;
        h=content-transfer-encoding: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;
        bh=dqraePAbUJ4g2LjnweTFZrAuZgmq3i6Y4FcVjpidReE=;
        b=WBFgFfmHCnXtdW9ztiMrJ2yrbr2ExZPFbjXlnkGyPXSAtzHWOnx02eDXkRay7IW6yi
         jF3vGaBLTc8/v/iQLzJFqn4tChRQ0L5QrTXHAXdsT1GACQA2LO2TaHX9LKT2J/VIHY63
         pmAe4t4y0pXMmwb0Cj8OqxL83xU0JcH61tOevI+VPXpsFHHrBqI79GQb4mDtw0G8FHju
         Ledn8R8mcYsBPajGkjxopRzF44Cb4u3BAw9/K09v8Ja4Ic7qGikRajOjsSOwWEduhwaW
         a6cJoVwUVgewiL5rDTlXL/ShrSqgR/vqh13ZRZ8Mm7flRMexj8XIXhYvRpn8kUnnX719
         swjg==
X-Gm-Message-State: AOJu0Yykq6jB9i7i+k9nr3MykdcTuyd009gP7u8LcczrPWWU5sb3lwf6
	WLj/qjadlR/wjn6Vz7DGlrnKPk1fCDy5/hCMw7JnOEKQzZhmEukwyciQGa4aHVEmX6//g1JWtMT
	zx963Dw==
X-Gm-Gg: AeBDietZfLRorp0/dXgA8re+3PBLR8VPENINwLbLGN+3olXS7SkiDvOy1fd0T2aQXBx
	uSzLqHmh6KA/R0arayvIWe2YFU81Gd9FYbCBIvJ79oK//JBCSTC0zMcobTfwSRtZxuDAfgYZscw
	nw/YaqlKVIGxoTVIuWOd53G/650amWi37ZxfzAt9Xta8EBy8bUmvWv23QbgAH0YXsjT0ebl/Koh
	YK5jVxmXqvvXtKGhcf2U3FYoUlG3pK/Z68JoovFbnyCi40LEiIQKhrLFSik4VenP2ZJO+ua1YO6
	1eze4jdNAGnJxcZB0hcUrvN5OVc3gH36wMbSCxH60XC+Anp9/3RHigQUKiqnHXYNwrqgqF0Phf/
	4gODUbGsX9aAUvvsz6WtZmtmtzQr2hdHaBPZuEW2z38gp742xGGsjFByON/y+aSXzOq5jbIKgfM
	X7xzRRivCYbPCztecsQop8Iya8RrmHd0n94lAsddifL1gonurTUXav4Wvr+QKfgOV/Z9m+Udq3y
	7RpkcpyqvL4gxdfByspEzMTeQ==
X-Received: by 2002:a05:600c:a303:b0:485:3abe:ab86 with SMTP id 5b1f17b1804b1-488ccf3a65bmr43573675e9.4.1775747030791;
        Thu, 09 Apr 2026 08:03:50 -0700 (PDT)
Message-ID: <e23fa09d-b189-4c76-a22a-42df9fb9f9ef@suse.com>
Date: Thu, 9 Apr 2026 17:03:48 +0200
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: [PATCH v4 03/16] x86emul: support AVX10.1
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.pau@citrix.com>,
 Teddy Astie <teddy.astie@vates.tech>,
 Oleksii Kurochko <oleksii.kurochko@gmail.com>,
 Community Manager <community.manager@xenproject.org>
References: <1e2ff012-b07a-43be-9ba6-290b38d3c97c@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: <1e2ff012-b07a-43be-9ba6-290b38d3c97c@suse.com>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 7bit
X-purgate-ID: tlsNG-d62444/1775747031-17EFB185-6038C92D/0/0
X-purgate-type: clean
X-purgate-size: 50330

This requires relaxing various pre-existing AVX512* checks, as AVX10.1
covers all AVX512* except PF, ER, 4FMAPS, 4VNNIW (support for all of
which was removed meanwhile anyway), and VP2INTERSECT. At the same time
all vector widths are always supported.

Note that visa_check(), replacing host_and_vcpu_must_have() uses, checks
only the guest capability: We wouldn't expose AVX512* (nor AVX10)
without the hardware supporting it. Similarly in avx512_vlen_check() the
original host_and_vcpu_must_have() is reduced just vcpu_must_have().
This also simplifies (resulting) code in the test and fuzzing harnesses,
as there the XCR0 checks that are part of cpu_has_avx512* are only
needed in local code, not in the emulator itself (where respective
checking occurs elsewhere anyway, utilizing emul_test_read_xcr()).

While in most cases the changes to x86_emulate() are entirely
mechanical, for opmask insns earlier unconditional AVX512F checks are
converted into "else" clauses to existing if/else-if ones.

To be certain that no uses remain, also drop respective cpu_has_avx512*
(except in the test harness) and vcpu_has_avx512*().

Signed-off-by: Jan Beulich <jbeulich@suse.com>
---
Probably avx512_vlen_check() should have the avx512_ prefix dropped, now
that it also covers AVX10. But if so that wants to be either a prereq or
a follow-on patch.

visa_check() won't cover AVX10.2 and higher, but probably we will want
independent checking logic for that anyway.

Spec version 2 still leaves unclear what the xstate components are which
would need enabling for AVX10/256. x86emul_get_fpu() is therefore
untouched for now.

Since it'll be reducing code size, we may want to further convert
host_and_vcpu_must_have() to just vcpu_must_have() where appropriate
(should be [almost?] everywhere).
---
v4: Switch to using fallthrough pseudo-keyword. Drop new _vlen_check()
    helper again. Re-base.
v3: Add ChangeLog entry.
v2: Drop use of vsz128 field. Re-base, in particular over dropping of
    Xeon Phi support.

--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -16,6 +16,7 @@ The format is based on [Keep a Changelog
      mitigate (by rate-limiting) the system wide impact of an HVM guest
      misusing atomic instructions.
    - Support for CPIO microcode in discrete multiboot modules.
+   - Support for AVX10.1. (Experimental)
 
  - On Arm:
    - Support for guest suspend and resume to/from RAM via vPSCI.
--- a/xen/arch/x86/include/asm/cpufeature.h
+++ b/xen/arch/x86/include/asm/cpufeature.h
@@ -200,29 +200,18 @@ static inline bool boot_cpu_has(unsigned
 #define cpu_has_pqe             boot_cpu_has(X86_FEATURE_PQE)
 #define cpu_has_fpu_sel         (!boot_cpu_has(X86_FEATURE_NO_FPU_SEL))
 #define cpu_has_mpx             boot_cpu_has(X86_FEATURE_MPX)
-#define cpu_has_avx512f         boot_cpu_has(X86_FEATURE_AVX512F)
-#define cpu_has_avx512dq        boot_cpu_has(X86_FEATURE_AVX512DQ)
 #define cpu_has_rdseed          boot_cpu_has(X86_FEATURE_RDSEED)
 #define cpu_has_smap            boot_cpu_has(X86_FEATURE_SMAP)
-#define cpu_has_avx512_ifma     boot_cpu_has(X86_FEATURE_AVX512_IFMA)
 #define cpu_has_clflushopt      boot_cpu_has(X86_FEATURE_CLFLUSHOPT)
 #define cpu_has_clwb            boot_cpu_has(X86_FEATURE_CLWB)
-#define cpu_has_avx512cd        boot_cpu_has(X86_FEATURE_AVX512CD)
 #define cpu_has_proc_trace      boot_cpu_has(X86_FEATURE_PROC_TRACE)
 #define cpu_has_sha             boot_cpu_has(X86_FEATURE_SHA)
-#define cpu_has_avx512bw        boot_cpu_has(X86_FEATURE_AVX512BW)
-#define cpu_has_avx512vl        boot_cpu_has(X86_FEATURE_AVX512VL)
 
 /* CPUID level 0x00000007:0.ecx */
-#define cpu_has_avx512_vbmi     boot_cpu_has(X86_FEATURE_AVX512_VBMI)
 #define cpu_has_pku             boot_cpu_has(X86_FEATURE_PKU)
-#define cpu_has_avx512_vbmi2    boot_cpu_has(X86_FEATURE_AVX512_VBMI2)
 #define cpu_has_gfni            boot_cpu_has(X86_FEATURE_GFNI)
 #define cpu_has_vaes            boot_cpu_has(X86_FEATURE_VAES)
 #define cpu_has_vpclmulqdq      boot_cpu_has(X86_FEATURE_VPCLMULQDQ)
-#define cpu_has_avx512_vnni     boot_cpu_has(X86_FEATURE_AVX512_VNNI)
-#define cpu_has_avx512_bitalg   boot_cpu_has(X86_FEATURE_AVX512_BITALG)
-#define cpu_has_avx512_vpopcntdq boot_cpu_has(X86_FEATURE_AVX512_VPOPCNTDQ)
 #define cpu_has_rdpid           boot_cpu_has(X86_FEATURE_RDPID)
 #define cpu_has_movdiri         boot_cpu_has(X86_FEATURE_MOVDIRI)
 #define cpu_has_movdir64b       boot_cpu_has(X86_FEATURE_MOVDIR64B)
@@ -248,7 +237,6 @@ static inline bool boot_cpu_has(unsigned
 #define cpu_has_tsx_force_abort boot_cpu_has(X86_FEATURE_TSX_FORCE_ABORT)
 #define cpu_has_serialize       boot_cpu_has(X86_FEATURE_SERIALIZE)
 #define cpu_has_hybrid          boot_cpu_has(X86_FEATURE_HYBRID)
-#define cpu_has_avx512_fp16     boot_cpu_has(X86_FEATURE_AVX512_FP16)
 #define cpu_has_arch_caps       boot_cpu_has(X86_FEATURE_ARCH_CAPS)
 
 /* CPUID level 0x00000007:1.eax */
@@ -256,7 +244,6 @@ static inline bool boot_cpu_has(unsigned
 #define cpu_has_sm3             boot_cpu_has(X86_FEATURE_SM3)
 #define cpu_has_sm4             boot_cpu_has(X86_FEATURE_SM4)
 #define cpu_has_avx_vnni        boot_cpu_has(X86_FEATURE_AVX_VNNI)
-#define cpu_has_avx512_bf16     boot_cpu_has(X86_FEATURE_AVX512_BF16)
 #define cpu_has_cmpccxadd       boot_cpu_has(X86_FEATURE_CMPCCXADD)
 #define cpu_has_fred            boot_cpu_has(X86_FEATURE_FRED)
 #define cpu_has_lkgs            boot_cpu_has(X86_FEATURE_LKGS)
--- a/xen/arch/x86/x86_emulate/private.h
+++ b/xen/arch/x86/x86_emulate/private.h
@@ -577,26 +577,15 @@ amd_like(const struct x86_emulate_ctxt *
 #define vcpu_has_invpcid()     (ctxt->cpuid->feat.invpcid)
 #define vcpu_has_rtm()         (ctxt->cpuid->feat.rtm)
 #define vcpu_has_mpx()         (ctxt->cpuid->feat.mpx)
-#define vcpu_has_avx512f()     (ctxt->cpuid->feat.avx512f)
-#define vcpu_has_avx512dq()    (ctxt->cpuid->feat.avx512dq)
 #define vcpu_has_rdseed()      (ctxt->cpuid->feat.rdseed)
 #define vcpu_has_adx()         (ctxt->cpuid->feat.adx)
 #define vcpu_has_smap()        (ctxt->cpuid->feat.smap)
-#define vcpu_has_avx512_ifma() (ctxt->cpuid->feat.avx512_ifma)
 #define vcpu_has_clflushopt()  (ctxt->cpuid->feat.clflushopt)
 #define vcpu_has_clwb()        (ctxt->cpuid->feat.clwb)
-#define vcpu_has_avx512cd()    (ctxt->cpuid->feat.avx512cd)
 #define vcpu_has_sha()         (ctxt->cpuid->feat.sha)
-#define vcpu_has_avx512bw()    (ctxt->cpuid->feat.avx512bw)
-#define vcpu_has_avx512vl()    (ctxt->cpuid->feat.avx512vl)
-#define vcpu_has_avx512_vbmi() (ctxt->cpuid->feat.avx512_vbmi)
-#define vcpu_has_avx512_vbmi2() (ctxt->cpuid->feat.avx512_vbmi2)
 #define vcpu_has_gfni()        (ctxt->cpuid->feat.gfni)
 #define vcpu_has_vaes()        (ctxt->cpuid->feat.vaes)
 #define vcpu_has_vpclmulqdq()  (ctxt->cpuid->feat.vpclmulqdq)
-#define vcpu_has_avx512_vnni() (ctxt->cpuid->feat.avx512_vnni)
-#define vcpu_has_avx512_bitalg() (ctxt->cpuid->feat.avx512_bitalg)
-#define vcpu_has_avx512_vpopcntdq() (ctxt->cpuid->feat.avx512_vpopcntdq)
 #define vcpu_has_rdpid()       (ctxt->cpuid->feat.rdpid)
 #define vcpu_has_movdiri()     (ctxt->cpuid->feat.movdiri)
 #define vcpu_has_movdir64b()   (ctxt->cpuid->feat.movdir64b)
@@ -604,12 +593,10 @@ amd_like(const struct x86_emulate_ctxt *
 #define vcpu_has_avx512_vp2intersect() (ctxt->cpuid->feat.avx512_vp2intersect)
 #define vcpu_has_serialize()   (ctxt->cpuid->feat.serialize)
 #define vcpu_has_tsxldtrk()    (ctxt->cpuid->feat.tsxldtrk)
-#define vcpu_has_avx512_fp16() (ctxt->cpuid->feat.avx512_fp16)
 #define vcpu_has_sha512()      (ctxt->cpuid->feat.sha512)
 #define vcpu_has_sm3()         (ctxt->cpuid->feat.sm3)
 #define vcpu_has_sm4()         (ctxt->cpuid->feat.sm4)
 #define vcpu_has_avx_vnni()    (ctxt->cpuid->feat.avx_vnni)
-#define vcpu_has_avx512_bf16() (ctxt->cpuid->feat.avx512_bf16)
 #define vcpu_has_cmpccxadd()   (ctxt->cpuid->feat.cmpccxadd)
 #define vcpu_has_lkgs()        (ctxt->cpuid->feat.lkgs)
 #define vcpu_has_wrmsrns()     (ctxt->cpuid->feat.wrmsrns)
--- a/xen/arch/x86/x86_emulate/x86_emulate.c
+++ b/xen/arch/x86/x86_emulate/x86_emulate.c
@@ -1152,6 +1152,10 @@ static unsigned long *decode_vex_gpr(
     return decode_gpr(regs, ~vex_reg & (mode_64bit() ? 0xf : 7));
 }
 
+#define visa_check(subfeat) \
+    generate_exception_if(!cp->feat.avx512 ## subfeat && !cp->feat.avx10, \
+                          X86_EXC_UD)
+
 #define avx512_vlen_check(lig) do { \
     switch ( evex.lr ) \
     { \
@@ -1161,7 +1165,7 @@ static unsigned long *decode_vex_gpr(
         break; \
     case 0: case 1: \
         if ( !(lig) ) \
-            host_and_vcpu_must_have(avx512vl); \
+            visa_check(vl); \
         break; \
     } \
 } while ( false )
@@ -1396,7 +1400,9 @@ x86_emulate(
         /* KMOV{W,Q} %k<n>, (%rax) */
         stb[0] = 0xc4;
         stb[1] = 0xe1;
-        stb[2] = cpu_has_avx512bw ? 0xf8 : 0x78;
+        stb[2] = cp->feat.avx512bw || cp->feat.avx10
+                 ? 0xf8 /* L0.NP.W1 - kmovq */
+                 : 0x78 /* L0.NP.W0 - kmovw */;
         stb[3] = 0x91;
         stb[4] = evex.opmsk << 3;
         insn_bytes = 5;
@@ -3423,7 +3429,7 @@ x86_emulate(
                                (ea.type != OP_REG && evex.brs &&
                                 (evex.pfx & VEX_PREFIX_SCALAR_MASK))),
                               X86_EXC_UD);
-        host_and_vcpu_must_have(avx512f);
+        visa_check(f);
         if ( ea.type != OP_REG || !evex.brs )
             avx512_vlen_check(evex.pfx & VEX_PREFIX_SCALAR_MASK);
     simd_zmm:
@@ -3479,7 +3485,7 @@ x86_emulate(
         generate_exception_if((evex.lr || evex.opmsk || evex.brs ||
                                evex.w != (evex.pfx & VEX_PREFIX_DOUBLE_MASK)),
                               X86_EXC_UD);
-        host_and_vcpu_must_have(avx512f);
+        visa_check(f);
         if ( (d & DstMask) != DstMem )
             d &= ~TwoOp;
         op_bytes = 8;
@@ -3506,7 +3512,7 @@ x86_emulate(
         generate_exception_if((evex.brs ||
                                evex.w != (evex.pfx & VEX_PREFIX_DOUBLE_MASK)),
                               X86_EXC_UD);
-        host_and_vcpu_must_have(avx512f);
+        visa_check(f);
         avx512_vlen_check(false);
         d |= TwoOp;
         op_bytes = !(evex.pfx & VEX_PREFIX_DOUBLE_MASK) || evex.lr
@@ -3543,7 +3549,7 @@ x86_emulate(
     case X86EMUL_OPC_EVEX_66(0x0f38, 0x64): /* vpblendm{d,q} [xyz]mm/mem,[xyz]mm,[xyz]mm{k} */
     case X86EMUL_OPC_EVEX_66(0x0f38, 0x65): /* vblendmp{s,d} [xyz]mm/mem,[xyz]mm,[xyz]mm{k} */
     avx512f_no_sae:
-        host_and_vcpu_must_have(avx512f);
+        visa_check(f);
         generate_exception_if(ea.type != OP_MEM && evex.brs, X86_EXC_UD);
         avx512_vlen_check(false);
         goto simd_zmm;
@@ -3623,13 +3629,13 @@ x86_emulate(
 
     case X86EMUL_OPC_EVEX_F3(5, 0x2a):      /* vcvtsi2sh r/m,xmm,xmm */
     case X86EMUL_OPC_EVEX_F3(5, 0x7b):      /* vcvtusi2sh r/m,xmm,xmm */
-        host_and_vcpu_must_have(avx512_fp16);
+        visa_check(_fp16);
         /* fall through */
     CASE_SIMD_SCALAR_FP(_EVEX, 0x0f, 0x2a): /* vcvtsi2s{s,d} r/m,xmm,xmm */
     CASE_SIMD_SCALAR_FP(_EVEX, 0x0f, 0x7b): /* vcvtusi2s{s,d} r/m,xmm,xmm */
         generate_exception_if(evex.opmsk || (ea.type != OP_REG && evex.brs),
                               X86_EXC_UD);
-        host_and_vcpu_must_have(avx512f);
+        visa_check(f);
         if ( !evex.brs )
             avx512_vlen_check(true);
         get_fpu(X86EMUL_FPU_zmm);
@@ -3742,7 +3748,7 @@ x86_emulate(
     case X86EMUL_OPC_EVEX_F3(5, 0x2d):      /* vcvtsh2si xmm/mem,reg */
     case X86EMUL_OPC_EVEX_F3(5, 0x78):      /* vcvttsh2usi xmm/mem,reg */
     case X86EMUL_OPC_EVEX_F3(5, 0x79):      /* vcvtsh2usi xmm/mem,reg */
-        host_and_vcpu_must_have(avx512_fp16);
+        visa_check(_fp16);
         /* fall through */
     CASE_SIMD_SCALAR_FP(_EVEX, 0x0f, 0x2c): /* vcvtts{s,d}2si xmm/mem,reg */
     CASE_SIMD_SCALAR_FP(_EVEX, 0x0f, 0x2d): /* vcvts{s,d}2si xmm/mem,reg */
@@ -3752,7 +3758,7 @@ x86_emulate(
                                evex.opmsk ||
                                (ea.type != OP_REG && evex.brs)),
                               X86_EXC_UD);
-        host_and_vcpu_must_have(avx512f);
+        visa_check(f);
         if ( !evex.brs )
             avx512_vlen_check(true);
         get_fpu(X86EMUL_FPU_zmm);
@@ -3818,7 +3824,7 @@ x86_emulate(
 
     case X86EMUL_OPC_EVEX(5, 0x2e): /* vucomish xmm/m16,xmm */
     case X86EMUL_OPC_EVEX(5, 0x2f): /* vcomish xmm/m16,xmm */
-        host_and_vcpu_must_have(avx512_fp16);
+        visa_check(_fp16);
         generate_exception_if(evex.w, X86_EXC_UD);
         /* fall through */
     CASE_SIMD_PACKED_FP(_EVEX, 0x0f, 0x2e): /* vucomis{s,d} xmm/mem,xmm */
@@ -3827,7 +3833,7 @@ x86_emulate(
                                (ea.type != OP_REG && evex.brs) ||
                                evex.w != evex.pfx),
                               X86_EXC_UD);
-        host_and_vcpu_must_have(avx512f);
+        visa_check(f);
         if ( !evex.brs )
             avx512_vlen_check(true);
         get_fpu(X86EMUL_FPU_zmm);
@@ -3971,7 +3977,7 @@ x86_emulate(
 
     case X86EMUL_OPC_VEX(0x0f, 0x4a):    /* kadd{w,q} k,k,k */
         if ( !vex.w )
-            host_and_vcpu_must_have(avx512dq);
+            visa_check(dq);
         /* fall through */
     case X86EMUL_OPC_VEX(0x0f, 0x41):    /* kand{w,q} k,k,k */
     case X86EMUL_OPC_VEX_66(0x0f, 0x41): /* kand{b,d} k,k,k */
@@ -3987,11 +3993,12 @@ x86_emulate(
         generate_exception_if(!vex.l, X86_EXC_UD);
     opmask_basic:
         if ( vex.w )
-            host_and_vcpu_must_have(avx512bw);
+            visa_check(bw);
         else if ( vex.pfx )
-            host_and_vcpu_must_have(avx512dq);
+            visa_check(dq);
+        else
+            visa_check(f);
     opmask_common:
-        host_and_vcpu_must_have(avx512f);
         generate_exception_if(!vex.r || (mode_64bit() && !(vex.reg & 8)) ||
                               ea.type != OP_REG, X86_EXC_UD);
 
@@ -4014,13 +4021,14 @@ x86_emulate(
         generate_exception_if(vex.l || vex.reg != 0xf, X86_EXC_UD);
         goto opmask_basic;
 
-    case X86EMUL_OPC_VEX(0x0f, 0x4b):    /* kunpck{w,d}{d,q} k,k,k */
+    case X86EMUL_OPC_VEX(0x0f, 0x4b):    /* kunpck{wd,dq} k,k,k */
         generate_exception_if(!vex.l, X86_EXC_UD);
-        host_and_vcpu_must_have(avx512bw);
+        visa_check(bw);
         goto opmask_common;
 
     case X86EMUL_OPC_VEX_66(0x0f, 0x4b): /* kunpckbw k,k,k */
         generate_exception_if(!vex.l || vex.w, X86_EXC_UD);
+        visa_check(f);
         goto opmask_common;
 
 #endif /* X86EMUL_NO_SIMD */
@@ -4088,7 +4096,7 @@ x86_emulate(
         generate_exception_if((evex.w != (evex.pfx & VEX_PREFIX_DOUBLE_MASK) ||
                                (ea.type != OP_MEM && evex.brs)),
                               X86_EXC_UD);
-        host_and_vcpu_must_have(avx512dq);
+        visa_check(dq);
         avx512_vlen_check(false);
         goto simd_zmm;
 
@@ -4127,12 +4135,12 @@ x86_emulate(
     case X86EMUL_OPC_EVEX_F2(0x0f, 0x7a): /* vcvtudq2ps [xyz]mm/mem,[xyz]mm{k} */
                                           /* vcvtuqq2ps [xyz]mm/mem,{x,y}mm{k} */
         if ( evex.w )
-            host_and_vcpu_must_have(avx512dq);
+            visa_check(dq);
         else
         {
     case X86EMUL_OPC_EVEX(0x0f, 0x78):    /* vcvttp{s,d}2udq [xyz]mm/mem,[xyz]mm{k} */
     case X86EMUL_OPC_EVEX(0x0f, 0x79):    /* vcvtp{s,d}2udq [xyz]mm/mem,[xyz]mm{k} */
-            host_and_vcpu_must_have(avx512f);
+            visa_check(f);
         }
         if ( ea.type != OP_REG || !evex.brs )
             avx512_vlen_check(false);
@@ -4349,7 +4357,7 @@ x86_emulate(
     case X86EMUL_OPC_EVEX_66(0x0f38, 0x0b): /* vpmulhrsw [xyz]mm/mem,[xyz]mm,[xyz]mm{k} */
     case X86EMUL_OPC_EVEX_66(0x0f38, 0x1c): /* vpabsb [xyz]mm/mem,[xyz]mm{k} */
     case X86EMUL_OPC_EVEX_66(0x0f38, 0x1d): /* vpabsw [xyz]mm/mem,[xyz]mm{k} */
-        host_and_vcpu_must_have(avx512bw);
+        visa_check(bw);
         generate_exception_if(evex.brs, X86_EXC_UD);
         elem_bytes = 1 << (b & 1);
         goto avx512f_no_sae;
@@ -4381,7 +4389,7 @@ x86_emulate(
             generate_exception_if(b != 0x27 && evex.w != (b & 1), X86_EXC_UD);
             goto avx512f_no_sae;
         }
-        host_and_vcpu_must_have(avx512bw);
+        visa_check(bw);
         generate_exception_if(evex.brs, X86_EXC_UD);
         elem_bytes = 1 << (ext == ext_0f ? b & 1 : evex.w);
         avx512_vlen_check(false);
@@ -4454,7 +4462,7 @@ x86_emulate(
             dst.bytes = 2;
         /* fall through */
     case X86EMUL_OPC_EVEX_66(5, 0x6e): /* vmovw r/m16,xmm */
-        host_and_vcpu_must_have(avx512_fp16);
+        visa_check(_fp16);
         generate_exception_if(evex.w, X86_EXC_UD);
         /* fall through */
     case X86EMUL_OPC_EVEX_66(0x0f, 0x6e): /* vmov{d,q} r/m,xmm */
@@ -4462,7 +4470,7 @@ x86_emulate(
         generate_exception_if((evex.lr || evex.opmsk || evex.brs ||
                                evex.reg != 0xf || !evex.RX),
                               X86_EXC_UD);
-        host_and_vcpu_must_have(avx512f);
+        visa_check(f);
         get_fpu(X86EMUL_FPU_zmm);
 
         opc = init_evex(stub);
@@ -4520,7 +4528,7 @@ x86_emulate(
 
     case X86EMUL_OPC_EVEX_F2(0x0f, 0x6f): /* vmovdqu{8,16} [xyz]mm/mem,[xyz]mm{k} */
     case X86EMUL_OPC_EVEX_F2(0x0f, 0x7f): /* vmovdqu{8,16} [xyz]mm,[xyz]mm/mem{k} */
-        host_and_vcpu_must_have(avx512bw);
+        visa_check(bw);
         elem_bytes = 1 << evex.w;
         goto vmovdqa;
 
@@ -4613,7 +4621,7 @@ x86_emulate(
             generate_exception_if(evex.w, X86_EXC_UD);
         else
         {
-            host_and_vcpu_must_have(avx512bw);
+            visa_check(bw);
             generate_exception_if(evex.brs, X86_EXC_UD);
         }
         d = (d & ~SrcMask) | SrcMem | TwoOp;
@@ -4861,7 +4869,7 @@ x86_emulate(
     case X86EMUL_OPC_EVEX_F3(0x0f, 0xe6):   /* vcvtdq2pd {x,y}mm/mem,[xyz]mm{k} */
                                             /* vcvtqq2pd [xyz]mm/mem,[xyz]mm{k} */
         if ( evex.pfx != vex_f3 )
-            host_and_vcpu_must_have(avx512f);
+            visa_check(f);
         else if ( evex.w )
         {
     case X86EMUL_OPC_EVEX_66(0x0f, 0x78):   /* vcvttps2uqq {x,y}mm/mem,[xyz]mm{k} */
@@ -4872,11 +4880,11 @@ x86_emulate(
                                             /* vcvttpd2qq [xyz]mm/mem,[xyz]mm{k} */
     case X86EMUL_OPC_EVEX_66(0x0f, 0x7b):   /* vcvtps2qq {x,y}mm/mem,[xyz]mm{k} */
                                             /* vcvtpd2qq [xyz]mm/mem,[xyz]mm{k} */
-            host_and_vcpu_must_have(avx512dq);
+            visa_check(dq);
         }
         else
         {
-            host_and_vcpu_must_have(avx512f);
+            visa_check(f);
             /*
              * While SDM version 085 has explicit wording towards embedded
              * rounding being ignored, it's still not entirely unambiguous with
@@ -4923,7 +4931,7 @@ x86_emulate(
     case X86EMUL_OPC_EVEX_66(0x0f, 0xd6): /* vmovq xmm,xmm/m64 */
         generate_exception_if(evex.lr || !evex.w || evex.opmsk || evex.brs,
                               X86_EXC_UD);
-        host_and_vcpu_must_have(avx512f);
+        visa_check(f);
         d |= TwoOp;
         op_bytes = 8;
         goto simd_zmm;
@@ -4949,19 +4957,21 @@ x86_emulate(
     case X86EMUL_OPC_VEX(0x0f, 0x90):    /* kmov{w,q} k/mem,k */
     case X86EMUL_OPC_VEX_66(0x0f, 0x90): /* kmov{b,d} k/mem,k */
         generate_exception_if(vex.l || !vex.r, X86_EXC_UD);
-        host_and_vcpu_must_have(avx512f);
         if ( vex.w )
         {
-            host_and_vcpu_must_have(avx512bw);
+            visa_check(bw);
             op_bytes = 4 << !vex.pfx;
         }
         else if ( vex.pfx )
         {
-            host_and_vcpu_must_have(avx512dq);
+            visa_check(dq);
             op_bytes = 1;
         }
         else
+        {
+            visa_check(f);
             op_bytes = 2;
+        }
 
         get_fpu(X86EMUL_FPU_opmask);
 
@@ -4983,14 +4993,15 @@ x86_emulate(
         generate_exception_if(vex.l || !vex.r || vex.reg != 0xf ||
                               ea.type != OP_REG, X86_EXC_UD);
 
-        host_and_vcpu_must_have(avx512f);
         if ( vex.pfx == vex_f2 )
-            host_and_vcpu_must_have(avx512bw);
+            visa_check(bw);
         else
         {
             generate_exception_if(vex.w, X86_EXC_UD);
             if ( vex.pfx )
-                host_and_vcpu_must_have(avx512dq);
+                visa_check(dq);
+            else
+                visa_check(f);
         }
 
         get_fpu(X86EMUL_FPU_opmask);
@@ -5022,10 +5033,9 @@ x86_emulate(
         dst = ea;
         dst.reg = decode_gpr(&_regs, modrm_reg);
 
-        host_and_vcpu_must_have(avx512f);
         if ( vex.pfx == vex_f2 )
         {
-            host_and_vcpu_must_have(avx512bw);
+            visa_check(bw);
             dst.bytes = 4 << (mode_64bit() && vex.w);
         }
         else
@@ -5033,7 +5043,9 @@ x86_emulate(
             generate_exception_if(vex.w, X86_EXC_UD);
             dst.bytes = 4;
             if ( vex.pfx )
-                host_and_vcpu_must_have(avx512dq);
+                visa_check(dq);
+            else
+                visa_check(f);
         }
 
         get_fpu(X86EMUL_FPU_opmask);
@@ -5055,20 +5067,18 @@ x86_emulate(
         ASSERT(!state->simd_size);
         break;
 
-    case X86EMUL_OPC_VEX(0x0f, 0x99):    /* ktest{w,q} k,k */
-        if ( !vex.w )
-            host_and_vcpu_must_have(avx512dq);
-        /* fall through */
     case X86EMUL_OPC_VEX(0x0f, 0x98):    /* kortest{w,q} k,k */
     case X86EMUL_OPC_VEX_66(0x0f, 0x98): /* kortest{b,d} k,k */
+    case X86EMUL_OPC_VEX(0x0f, 0x99):    /* ktest{w,q} k,k */
     case X86EMUL_OPC_VEX_66(0x0f, 0x99): /* ktest{b,d} k,k */
         generate_exception_if(vex.l || !vex.r || vex.reg != 0xf ||
                               ea.type != OP_REG, X86_EXC_UD);
-        host_and_vcpu_must_have(avx512f);
         if ( vex.w )
-            host_and_vcpu_must_have(avx512bw);
-        else if ( vex.pfx )
-            host_and_vcpu_must_have(avx512dq);
+            visa_check(bw);
+        else if ( vex.pfx || (b & 1) )
+            visa_check(dq);
+        else
+            visa_check(f);
 
         get_fpu(X86EMUL_FPU_opmask);
 
@@ -5355,7 +5365,7 @@ x86_emulate(
                                 (evex.pfx & VEX_PREFIX_SCALAR_MASK)) ||
                                !evex.r || !evex.R || evex.z),
                               X86_EXC_UD);
-        host_and_vcpu_must_have(avx512f);
+        visa_check(f);
         if ( ea.type != OP_REG || !evex.brs )
             avx512_vlen_check(evex.pfx & VEX_PREFIX_SCALAR_MASK);
     simd_imm8_zmm:
@@ -5399,9 +5409,9 @@ x86_emulate(
     case X86EMUL_OPC_EVEX_66(0x0f3a, 0x22): /* vpinsr{d,q} $imm8,r/m,xmm,xmm */
         generate_exception_if(evex.lr || evex.opmsk || evex.brs, X86_EXC_UD);
         if ( b & 2 )
-            host_and_vcpu_must_have(avx512dq);
+            visa_check(dq);
         else
-            host_and_vcpu_must_have(avx512bw);
+            visa_check(bw);
         if ( !mode_64bit() )
             evex.w = 0;
         memcpy(mmvalp, &src.val, src.bytes);
@@ -5438,7 +5448,7 @@ x86_emulate(
         /* fall through */
     case X86EMUL_OPC_EVEX_66(0x0f3a, 0x25): /* vpternlog{d,q} $imm8,[xyz]mm/mem,[xyz]mm,[xyz]mm{k} */
     avx512f_imm8_no_sae:
-        host_and_vcpu_must_have(avx512f);
+        visa_check(f);
         generate_exception_if(ea.type != OP_MEM && evex.brs, X86_EXC_UD);
         avx512_vlen_check(false);
         goto simd_imm8_zmm;
@@ -5537,7 +5547,7 @@ x86_emulate(
     case X86EMUL_OPC_EVEX_66(0x0f, 0xe4): /* vpmulhuw [xyz]mm/mem,[xyz]mm,[xyz]mm{k} */
     case X86EMUL_OPC_EVEX_66(0x0f, 0xea): /* vpminsw [xyz]mm/mem,[xyz]mm,[xyz]mm{k} */
     case X86EMUL_OPC_EVEX_66(0x0f, 0xee): /* vpmaxsw [xyz]mm/mem,[xyz]mm,[xyz]mm{k} */
-        host_and_vcpu_must_have(avx512bw);
+        visa_check(bw);
         generate_exception_if(evex.brs, X86_EXC_UD);
         elem_bytes = b & 0x10 ? 1 : 2;
         goto avx512f_no_sae;
@@ -5762,7 +5772,7 @@ x86_emulate(
     case X86EMUL_OPC_EVEX_66(0x0f38, 0x10): /* vpsrlvw [xyz]mm/mem,[xyz]mm,[xyz]mm{k} */
     case X86EMUL_OPC_EVEX_66(0x0f38, 0x11): /* vpsravw [xyz]mm/mem,[xyz]mm,[xyz]mm{k} */
     case X86EMUL_OPC_EVEX_66(0x0f38, 0x12): /* vpsllvw [xyz]mm/mem,[xyz]mm,[xyz]mm{k} */
-        host_and_vcpu_must_have(avx512bw);
+        visa_check(bw);
         generate_exception_if(!evex.w || evex.brs, X86_EXC_UD);
         elem_bytes = 2;
         goto avx512f_no_sae;
@@ -5772,7 +5782,7 @@ x86_emulate(
     case X86EMUL_OPC_EVEX_F3(0x0f38, 0x20): /* vpmovswb [xyz]mm,{x,y}mm/mem{k} */
     case X86EMUL_OPC_EVEX_66(0x0f38, 0x30): /* vpmovzxbw {x,y}mm/mem,[xyz]mm{k} */
     case X86EMUL_OPC_EVEX_F3(0x0f38, 0x30): /* vpmovwb [xyz]mm,{x,y}mm/mem{k} */
-        host_and_vcpu_must_have(avx512bw);
+        visa_check(bw);
         if ( evex.pfx != vex_f3 )
         {
     case X86EMUL_OPC_EVEX_66(0x0f38, 0x21): /* vpmovsxbd xmm/mem,[xyz]mm{k} */
@@ -5820,7 +5830,7 @@ x86_emulate(
 
     case X86EMUL_OPC_EVEX_66(0x0f38, 0x13): /* vcvtph2ps {x,y}mm/mem,[xyz]mm{k} */
         generate_exception_if(evex.w || (ea.type != OP_REG && evex.brs), X86_EXC_UD);
-        host_and_vcpu_must_have(avx512f);
+        visa_check(f);
         if ( !evex.brs )
             avx512_vlen_check(false);
         op_bytes = 8 << evex.lr;
@@ -5874,7 +5884,7 @@ x86_emulate(
             op_bytes = 8;
         generate_exception_if(evex.brs, X86_EXC_UD);
         if ( !evex.w )
-            host_and_vcpu_must_have(avx512dq);
+            visa_check(dq);
         goto avx512_broadcast;
 
     case X86EMUL_OPC_EVEX_66(0x0f38, 0x1a): /* vbroadcastf32x4 m128,{y,z}mm{k} */
@@ -5884,7 +5894,7 @@ x86_emulate(
         generate_exception_if(ea.type != OP_MEM || !evex.lr || evex.brs,
                               X86_EXC_UD);
         if ( evex.w )
-            host_and_vcpu_must_have(avx512dq);
+            visa_check(dq);
         goto avx512_broadcast;
 
     case X86EMUL_OPC_VEX_66(0x0f38, 0x20): /* vpmovsxbw xmm/mem,{x,y}mm */
@@ -5909,9 +5919,9 @@ x86_emulate(
     case X86EMUL_OPC_EVEX_F3(0x0f38, 0x28): /* vpmovm2{b,w} k,[xyz]mm */
     case X86EMUL_OPC_EVEX_F3(0x0f38, 0x38): /* vpmovm2{d,q} k,[xyz]mm */
         if ( b & 0x10 )
-            host_and_vcpu_must_have(avx512dq);
+            visa_check(dq);
         else
-            host_and_vcpu_must_have(avx512bw);
+            visa_check(bw);
         generate_exception_if(evex.opmsk || ea.type != OP_REG, X86_EXC_UD);
         d |= TwoOp;
         op_bytes = 16 << evex.lr;
@@ -5954,7 +5964,7 @@ x86_emulate(
         fault_suppression = false;
         /* fall through */
     case X86EMUL_OPC_EVEX_66(0x0f38, 0x44): /* vplzcnt{d,q} [xyz]mm/mem,[xyz]mm{k} */
-        host_and_vcpu_must_have(avx512cd);
+        visa_check(cd);
         goto avx512f_no_sae;
 
     case X86EMUL_OPC_VEX_66(0x0f38, 0x2c): /* vmaskmovps mem,{x,y}mm,{x,y}mm */
@@ -6030,7 +6040,7 @@ x86_emulate(
     case X86EMUL_OPC_EVEX_66(0x0f38, 0xba): /* vfmsub231p{s,d} [xyz]mm/mem,[xyz]mm,[xyz]mm{k} */
     case X86EMUL_OPC_EVEX_66(0x0f38, 0xbc): /* vfnmadd231p{s,d} [xyz]mm/mem,[xyz]mm,[xyz]mm{k} */
     case X86EMUL_OPC_EVEX_66(0x0f38, 0xbe): /* vfnmsub231p{s,d} [xyz]mm/mem,[xyz]mm,[xyz]mm{k} */
-        host_and_vcpu_must_have(avx512f);
+        visa_check(f);
         if ( ea.type != OP_REG || !evex.brs )
             avx512_vlen_check(false);
         goto simd_zmm;
@@ -6049,7 +6059,7 @@ x86_emulate(
     case X86EMUL_OPC_EVEX_66(0x0f38, 0xbb): /* vfmsub231s{s,d} xmm/mem,xmm,xmm{k} */
     case X86EMUL_OPC_EVEX_66(0x0f38, 0xbd): /* vfnmadd231s{s,d} xmm/mem,xmm,xmm{k} */
     case X86EMUL_OPC_EVEX_66(0x0f38, 0xbf): /* vfnmsub231s{s,d} xmm/mem,xmm,xmm{k} */
-        host_and_vcpu_must_have(avx512f);
+        visa_check(f);
         generate_exception_if(ea.type != OP_REG && evex.brs, X86_EXC_UD);
         if ( !evex.brs )
             avx512_vlen_check(true);
@@ -6063,14 +6073,14 @@ x86_emulate(
     case X86EMUL_OPC_EVEX_66(0x0f38, 0x3a): /* vpminuw [xyz]mm/mem,[xyz]mm,[xyz]mm{k} */
     case X86EMUL_OPC_EVEX_66(0x0f38, 0x3c): /* vpmaxsb [xyz]mm/mem,[xyz]mm,[xyz]mm{k} */
     case X86EMUL_OPC_EVEX_66(0x0f38, 0x3e): /* vpmaxuw [xyz]mm/mem,[xyz]mm,[xyz]mm{k} */
-        host_and_vcpu_must_have(avx512bw);
+        visa_check(bw);
         generate_exception_if(evex.brs, X86_EXC_UD);
         elem_bytes = b & 2 ?: 1;
         goto avx512f_no_sae;
 
     case X86EMUL_OPC_EVEX_66(0x0f38, 0x40): /* vpmull{d,q} [xyz]mm/mem,[xyz]mm,[xyz]mm{k} */
         if ( evex.w )
-            host_and_vcpu_must_have(avx512dq);
+            visa_check(dq);
         goto avx512f_no_sae;
 
     case X86EMUL_OPC_66(0x0f38, 0xdb):     /* aesimc xmm/m128,xmm */
@@ -6110,7 +6120,7 @@ x86_emulate(
     case X86EMUL_OPC_EVEX_66(0x0f38, 0x51): /* vpdpbusds [xyz]mm/mem,[xyz]mm,[xyz]mm{k} */
     case X86EMUL_OPC_EVEX_66(0x0f38, 0x52): /* vpdpwssd [xyz]mm/mem,[xyz]mm,[xyz]mm{k} */
     case X86EMUL_OPC_EVEX_66(0x0f38, 0x53): /* vpdpwssds [xyz]mm/mem,[xyz]mm,[xyz]mm{k} */
-        host_and_vcpu_must_have(avx512_vnni);
+        visa_check(_vnni);
         generate_exception_if(evex.w, X86_EXC_UD);
         goto avx512f_no_sae;
 
@@ -6122,7 +6132,7 @@ x86_emulate(
             d |= TwoOp;
         /* fall through */
     case X86EMUL_OPC_EVEX_F3(0x0f38, 0x52): /* vdpbf16ps [xyz]mm/mem,[xyz]mm,[xyz]mm{k} */
-        host_and_vcpu_must_have(avx512_bf16);
+        visa_check(_bf16);
         generate_exception_if(evex.w, X86_EXC_UD);
         op_bytes = 16 << evex.lr;
         goto avx512f_no_sae;
@@ -6139,7 +6149,7 @@ x86_emulate(
 
     case X86EMUL_OPC_EVEX_66(0x0f38, 0x4d): /* vrcp14s{s,d} xmm/mem,xmm,xmm{k} */
     case X86EMUL_OPC_EVEX_66(0x0f38, 0x4f): /* vrsqrt14s{s,d} xmm/mem,xmm,xmm{k} */
-        host_and_vcpu_must_have(avx512f);
+        visa_check(f);
         generate_exception_if(evex.brs, X86_EXC_UD);
         avx512_vlen_check(true);
         goto simd_zmm;
@@ -6148,16 +6158,16 @@ x86_emulate(
         generate_exception_if(evex.w || !evex.r || !evex.R || evex.z, X86_EXC_UD);
         /* fall through */
     case X86EMUL_OPC_EVEX_66(0x0f38, 0x54): /* vpopcnt{b,w} [xyz]mm/mem,[xyz]mm{k} */
-        host_and_vcpu_must_have(avx512_bitalg);
+        visa_check(_bitalg);
         /* fall through */
     case X86EMUL_OPC_EVEX_66(0x0f38, 0x66): /* vpblendm{b,w} [xyz]mm/mem,[xyz]mm,[xyz]mm{k} */
-        host_and_vcpu_must_have(avx512bw);
+        visa_check(bw);
         generate_exception_if(evex.brs, X86_EXC_UD);
         elem_bytes = 1 << evex.w;
         goto avx512f_no_sae;
 
     case X86EMUL_OPC_EVEX_66(0x0f38, 0x55): /* vpopcnt{d,q} [xyz]mm/mem,[xyz]mm{k} */
-        host_and_vcpu_must_have(avx512_vpopcntdq);
+        visa_check(_vpopcntdq);
         goto avx512f_no_sae;
 
     case X86EMUL_OPC_VEX_66(0x0f38, 0x5a): /* vbroadcasti128 m128,ymm */
@@ -6166,14 +6176,14 @@ x86_emulate(
 
     case X86EMUL_OPC_EVEX_66(0x0f38, 0x62): /* vpexpand{b,w} [xyz]mm/mem,[xyz]mm{k} */
     case X86EMUL_OPC_EVEX_66(0x0f38, 0x63): /* vpcompress{b,w} [xyz]mm,[xyz]mm/mem{k} */
-        host_and_vcpu_must_have(avx512_vbmi2);
+        visa_check(_vbmi2);
         elem_bytes = 1 << evex.w;
         /* fall through */
     case X86EMUL_OPC_EVEX_66(0x0f38, 0x88): /* vexpandp{s,d} [xyz]mm/mem,[xyz]mm{k} */
     case X86EMUL_OPC_EVEX_66(0x0f38, 0x89): /* vpexpand{d,q} [xyz]mm/mem,[xyz]mm{k} */
     case X86EMUL_OPC_EVEX_66(0x0f38, 0x8a): /* vcompressp{s,d} [xyz]mm,[xyz]mm/mem{k} */
     case X86EMUL_OPC_EVEX_66(0x0f38, 0x8b): /* vpcompress{d,q} [xyz]mm,[xyz]mm/mem{k} */
-        host_and_vcpu_must_have(avx512f);
+        visa_check(f);
         generate_exception_if(evex.brs, X86_EXC_UD);
         avx512_vlen_check(false);
         /*
@@ -6207,7 +6217,7 @@ x86_emulate(
         /* fall through */
     case X86EMUL_OPC_EVEX_66(0x0f38, 0x71): /* vpshldv{d,q} [xyz]mm/mem,[xyz]mm,[xyz]mm{k} */
     case X86EMUL_OPC_EVEX_66(0x0f38, 0x73): /* vpshrdv{d,q} [xyz]mm/mem,[xyz]mm,[xyz]mm{k} */
-        host_and_vcpu_must_have(avx512_vbmi2);
+        visa_check(_vbmi2);
         goto avx512f_no_sae;
 
     case X86EMUL_OPC_VEX   (0x0f38, 0xb0): /* vcvtneoph2ps mem,[xy]mm */
@@ -6227,16 +6237,16 @@ x86_emulate(
     case X86EMUL_OPC_EVEX_66(0x0f38, 0x7d): /* vpermt2{b,w} [xyz]mm/mem,[xyz]mm,[xyz]mm{k} */
     case X86EMUL_OPC_EVEX_66(0x0f38, 0x8d): /* vperm{b,w} [xyz]mm/mem,[xyz]mm,[xyz]mm{k} */
         if ( !evex.w )
-            host_and_vcpu_must_have(avx512_vbmi);
+            visa_check(_vbmi);
         else
-            host_and_vcpu_must_have(avx512bw);
+            visa_check(bw);
         generate_exception_if(evex.brs, X86_EXC_UD);
         fault_suppression = false;
         goto avx512f_no_sae;
 
     case X86EMUL_OPC_EVEX_66(0x0f38, 0x78): /* vpbroadcastb xmm/m8,[xyz]mm{k} */
     case X86EMUL_OPC_EVEX_66(0x0f38, 0x79): /* vpbroadcastw xmm/m16,[xyz]mm{k} */
-        host_and_vcpu_must_have(avx512bw);
+        visa_check(bw);
         generate_exception_if(evex.w || evex.brs, X86_EXC_UD);
         op_bytes = elem_bytes = 1 << (b & 1);
         /* See the comment at the avx512_broadcast label. */
@@ -6245,14 +6255,14 @@ x86_emulate(
 
     case X86EMUL_OPC_EVEX_66(0x0f38, 0x7a): /* vpbroadcastb r32,[xyz]mm{k} */
     case X86EMUL_OPC_EVEX_66(0x0f38, 0x7b): /* vpbroadcastw r32,[xyz]mm{k} */
-        host_and_vcpu_must_have(avx512bw);
+        visa_check(bw);
         generate_exception_if(evex.w, X86_EXC_UD);
         /* fall through */
     case X86EMUL_OPC_EVEX_66(0x0f38, 0x7c): /* vpbroadcast{d,q} reg,[xyz]mm{k} */
         generate_exception_if((ea.type != OP_REG || evex.brs ||
                                evex.reg != 0xf || !evex.RX),
                               X86_EXC_UD);
-        host_and_vcpu_must_have(avx512f);
+        visa_check(f);
         avx512_vlen_check(false);
         get_fpu(X86EMUL_FPU_zmm);
 
@@ -6321,7 +6331,7 @@ x86_emulate(
 
     case X86EMUL_OPC_EVEX_66(0x0f38, 0x83): /* vpmultishiftqb [xyz]mm/mem,[xyz]mm,[xyz]mm{k} */
         generate_exception_if(!evex.w, X86_EXC_UD);
-        host_and_vcpu_must_have(avx512_vbmi);
+        visa_check(_vbmi);
         fault_suppression = false;
         goto avx512f_no_sae;
 
@@ -6479,8 +6489,8 @@ x86_emulate(
                                evex.reg != 0xf ||
                                modrm_reg == state->sib_index),
                               X86_EXC_UD);
+        visa_check(f);
         avx512_vlen_check(false);
-        host_and_vcpu_must_have(avx512f);
         get_fpu(X86EMUL_FPU_zmm);
 
         /* Read destination and index registers. */
@@ -6641,8 +6651,8 @@ x86_emulate(
                                evex.reg != 0xf ||
                                modrm_reg == state->sib_index),
                               X86_EXC_UD);
+        visa_check(f);
         avx512_vlen_check(false);
-        host_and_vcpu_must_have(avx512f);
         get_fpu(X86EMUL_FPU_zmm);
 
         /* Read source and index registers. */
@@ -6758,7 +6768,7 @@ x86_emulate(
 
     case X86EMUL_OPC_EVEX_66(0x0f38, 0xb4): /* vpmadd52luq [xyz]mm/mem,[xyz]mm,[xyz]mm{k} */
     case X86EMUL_OPC_EVEX_66(0x0f38, 0xb5): /* vpmadd52huq [xyz]mm/mem,[xyz]mm,[xyz]mm{k} */
-        host_and_vcpu_must_have(avx512_ifma);
+        visa_check(_ifma);
         generate_exception_if(!evex.w, X86_EXC_UD);
         goto avx512f_no_sae;
 
@@ -7238,7 +7248,7 @@ x86_emulate(
         /* fall through */
     case X86EMUL_OPC_EVEX_66(0x0f3a, 0x08): /* vrndscaleps $imm8,[xyz]mm/mem,[xyz]mm{k} */
     case X86EMUL_OPC_EVEX_66(0x0f3a, 0x09): /* vrndscalepd $imm8,[xyz]mm/mem,[xyz]mm{k} */
-        host_and_vcpu_must_have(avx512f);
+        visa_check(f);
         generate_exception_if(evex.w != (b & 1), X86_EXC_UD);
         avx512_vlen_check(b & 2);
         goto simd_imm8_zmm;
@@ -7247,7 +7257,7 @@ x86_emulate(
         generate_exception_if(ea.type != OP_REG && evex.brs, X86_EXC_UD);
         /* fall through */
     case X86EMUL_OPC_EVEX(0x0f3a, 0x08): /* vrndscaleph $imm8,[xyz]mm/mem,[xyz]mm{k} */
-        host_and_vcpu_must_have(avx512_fp16);
+        visa_check(_fp16);
         generate_exception_if(evex.w, X86_EXC_UD);
         avx512_vlen_check(b & 2);
         goto simd_imm8_zmm;
@@ -7360,11 +7370,11 @@ x86_emulate(
                                evex.opmsk || evex.brs),
                               X86_EXC_UD);
         if ( !(b & 2) )
-            host_and_vcpu_must_have(avx512bw);
+            visa_check(bw);
         else if ( !(b & 1) )
-            host_and_vcpu_must_have(avx512dq);
+            visa_check(dq);
         else
-            host_and_vcpu_must_have(avx512f);
+            visa_check(f);
         get_fpu(X86EMUL_FPU_zmm);
         opc = init_evex(stub);
         goto pextr;
@@ -7378,7 +7388,7 @@ x86_emulate(
     case X86EMUL_OPC_EVEX_66(0x0f3a, 0x39): /* vextracti32x4 $imm8,{y,z}mm,xmm/m128{k} */
                                             /* vextracti64x2 $imm8,{y,z}mm,xmm/m128{k} */
         if ( evex.w )
-            host_and_vcpu_must_have(avx512dq);
+            visa_check(dq);
         generate_exception_if(evex.brs, X86_EXC_UD);
         /* fall through */
     case X86EMUL_OPC_EVEX_66(0x0f3a, 0x23): /* vshuff32x4 $imm8,{y,z}mm/mem,{y,z}mm,{y,z}mm{k} */
@@ -7398,7 +7408,7 @@ x86_emulate(
     case X86EMUL_OPC_EVEX_66(0x0f3a, 0x3b): /* vextracti32x8 $imm8,zmm,ymm/m256{k} */
                                             /* vextracti64x4 $imm8,zmm,ymm/m256{k} */
         if ( !evex.w )
-            host_and_vcpu_must_have(avx512dq);
+            visa_check(dq);
         generate_exception_if(evex.lr != 2 || evex.brs, X86_EXC_UD);
         fault_suppression = false;
         goto avx512f_imm8_no_sae;
@@ -7414,7 +7424,7 @@ x86_emulate(
             generate_exception_if((evex.w || evex.reg != 0xf || !evex.RX ||
                                    (ea.type != OP_REG && (evex.z || evex.brs))),
                                   X86_EXC_UD);
-            host_and_vcpu_must_have(avx512f);
+            visa_check(f);
             avx512_vlen_check(false);
             opc = init_evex(stub);
         }
@@ -7506,7 +7516,7 @@ x86_emulate(
         if ( !(b & 0x20) )
             goto avx512f_imm8_no_sae;
     avx512bw_imm:
-        host_and_vcpu_must_have(avx512bw);
+        visa_check(bw);
         generate_exception_if(evex.brs, X86_EXC_UD);
         elem_bytes = 1 << evex.w;
         avx512_vlen_check(false);
@@ -7545,7 +7555,7 @@ x86_emulate(
         goto simd_0f_imm8_avx;
 
     case X86EMUL_OPC_EVEX_66(0x0f3a, 0x21): /* vinsertps $imm8,xmm/m32,xmm,xmm */
-        host_and_vcpu_must_have(avx512f);
+        visa_check(f);
         generate_exception_if(evex.lr || evex.w || evex.opmsk || evex.brs,
                               X86_EXC_UD);
         op_bytes = 4;
@@ -7553,18 +7563,18 @@ x86_emulate(
 
     case X86EMUL_OPC_EVEX_66(0x0f3a, 0x50): /* vrangep{s,d} $imm8,[xyz]mm/mem,[xyz]mm,[xyz]mm{k} */
     case X86EMUL_OPC_EVEX_66(0x0f3a, 0x56): /* vreducep{s,d} $imm8,[xyz]mm/mem,[xyz]mm{k} */
-        host_and_vcpu_must_have(avx512dq);
+        visa_check(dq);
         /* fall through */
     case X86EMUL_OPC_EVEX_66(0x0f3a, 0x26): /* vgetmantp{s,d} $imm8,[xyz]mm/mem,[xyz]mm{k} */
     case X86EMUL_OPC_EVEX_66(0x0f3a, 0x54): /* vfixupimmp{s,d} $imm8,[xyz]mm/mem,[xyz]mm,[xyz]mm{k} */
-        host_and_vcpu_must_have(avx512f);
+        visa_check(f);
         if ( ea.type != OP_REG || !evex.brs )
             avx512_vlen_check(false);
         goto simd_imm8_zmm;
 
     case X86EMUL_OPC_EVEX(0x0f3a, 0x26): /* vgetmantph $imm8,[xyz]mm/mem,[xyz]mm{k} */
     case X86EMUL_OPC_EVEX(0x0f3a, 0x56): /* vreduceph $imm8,[xyz]mm/mem,[xyz]mm{k} */
-        host_and_vcpu_must_have(avx512_fp16);
+        visa_check(_fp16);
         generate_exception_if(evex.w, X86_EXC_UD);
         if ( ea.type != OP_REG || !evex.brs )
             avx512_vlen_check(false);
@@ -7572,11 +7582,11 @@ x86_emulate(
 
     case X86EMUL_OPC_EVEX_66(0x0f3a, 0x51): /* vranges{s,d} $imm8,xmm/mem,xmm,xmm{k} */
     case X86EMUL_OPC_EVEX_66(0x0f3a, 0x57): /* vreduces{s,d} $imm8,xmm/mem,xmm,xmm{k} */
-        host_and_vcpu_must_have(avx512dq);
+        visa_check(dq);
         /* fall through */
     case X86EMUL_OPC_EVEX_66(0x0f3a, 0x27): /* vgetmants{s,d} $imm8,xmm/mem,xmm,xmm{k} */
     case X86EMUL_OPC_EVEX_66(0x0f3a, 0x55): /* vfixupimms{s,d} $imm8,xmm/mem,xmm,xmm{k} */
-        host_and_vcpu_must_have(avx512f);
+        visa_check(f);
         generate_exception_if(ea.type != OP_REG && evex.brs, X86_EXC_UD);
         if ( !evex.brs )
             avx512_vlen_check(true);
@@ -7584,7 +7594,7 @@ x86_emulate(
 
     case X86EMUL_OPC_EVEX(0x0f3a, 0x27): /* vgetmantsh $imm8,xmm/mem,xmm,xmm{k} */
     case X86EMUL_OPC_EVEX(0x0f3a, 0x57): /* vreducesh $imm8,xmm/mem,xmm,xmm{k} */
-        host_and_vcpu_must_have(avx512_fp16);
+        visa_check(_fp16);
         generate_exception_if(evex.w, X86_EXC_UD);
         if ( !evex.brs )
             avx512_vlen_check(true);
@@ -7595,18 +7605,19 @@ x86_emulate(
     case X86EMUL_OPC_VEX_66(0x0f3a, 0x30): /* kshiftr{b,w} $imm8,k,k */
     case X86EMUL_OPC_VEX_66(0x0f3a, 0x32): /* kshiftl{b,w} $imm8,k,k */
         if ( !vex.w )
-            host_and_vcpu_must_have(avx512dq);
+            visa_check(dq);
+        else
+            visa_check(f);
     opmask_shift_imm:
         generate_exception_if(vex.l || !vex.r || vex.reg != 0xf ||
                               ea.type != OP_REG, X86_EXC_UD);
-        host_and_vcpu_must_have(avx512f);
         get_fpu(X86EMUL_FPU_opmask);
         op_bytes = 1; /* Any non-zero value will do. */
         goto simd_0f_imm8;
 
     case X86EMUL_OPC_VEX_66(0x0f3a, 0x31): /* kshiftr{d,q} $imm8,k,k */
     case X86EMUL_OPC_VEX_66(0x0f3a, 0x33): /* kshiftl{d,q} $imm8,k,k */
-        host_and_vcpu_must_have(avx512bw);
+        visa_check(bw);
         goto opmask_shift_imm;
 
     case X86EMUL_OPC_66(0x0f3a, 0x44):     /* pclmulqdq $imm8,xmm/m128,xmm */
@@ -7747,7 +7758,7 @@ x86_emulate(
 
     case X86EMUL_OPC_EVEX_66(0x0f3a, 0x66): /* vfpclassp{s,d} $imm8,[xyz]mm/mem,k{k} */
     case X86EMUL_OPC_EVEX_66(0x0f3a, 0x67): /* vfpclasss{s,d} $imm8,xmm/mem,k{k} */
-        host_and_vcpu_must_have(avx512dq);
+        visa_check(dq);
         generate_exception_if(!evex.r || !evex.R || evex.z, X86_EXC_UD);
         if ( !(b & 1) )
             goto avx512f_imm8_no_sae;
@@ -7757,7 +7768,7 @@ x86_emulate(
 
     case X86EMUL_OPC_EVEX(0x0f3a, 0x66): /* vfpclassph $imm8,[xyz]mm/mem,k{k} */
     case X86EMUL_OPC_EVEX(0x0f3a, 0x67): /* vfpclasssh $imm8,xmm/mem,k{k} */
-        host_and_vcpu_must_have(avx512_fp16);
+        visa_check(_fp16);
         generate_exception_if(evex.w || !evex.r || !evex.R || evex.z, X86_EXC_UD);
         if ( !(b & 1) )
             goto avx512f_imm8_no_sae;
@@ -7772,14 +7783,14 @@ x86_emulate(
         /* fall through */
     case X86EMUL_OPC_EVEX_66(0x0f3a, 0x71): /* vpshld{d,q} $imm8,[xyz]mm/mem,[xyz]mm,[xyz]mm{k} */
     case X86EMUL_OPC_EVEX_66(0x0f3a, 0x73): /* vpshrd{d,q} $imm8,[xyz]mm/mem,[xyz]mm,[xyz]mm{k} */
-        host_and_vcpu_must_have(avx512_vbmi2);
+        visa_check(_vbmi2);
         goto avx512f_imm8_no_sae;
 
     case X86EMUL_OPC_EVEX_F3(0x0f3a, 0xc2): /* vcmpsh $imm8,xmm/mem,xmm,k{k} */
         generate_exception_if(ea.type != OP_REG && evex.brs, X86_EXC_UD);
         /* fall through */
     case X86EMUL_OPC_EVEX(0x0f3a, 0xc2): /* vcmpph $imm8,[xyz]mm/mem,[xyz]mm,k{k} */
-        host_and_vcpu_must_have(avx512_fp16);
+        visa_check(_fp16);
         generate_exception_if(evex.w || !evex.r || !evex.R || evex.z, X86_EXC_UD);
         if ( ea.type != OP_REG || !evex.brs )
             avx512_vlen_check(evex.pfx & VEX_PREFIX_SCALAR_MASK);
@@ -7855,13 +7866,13 @@ x86_emulate(
     CASE_SIMD_SINGLE_FP(_EVEX, 5, 0x5d): /* vmin{p,s}h [xyz]mm/mem,[xyz]mm,[xyz]mm{k} */
     CASE_SIMD_SINGLE_FP(_EVEX, 5, 0x5e): /* vdiv{p,s}h [xyz]mm/mem,[xyz]mm,[xyz]mm{k} */
     CASE_SIMD_SINGLE_FP(_EVEX, 5, 0x5f): /* vmax{p,s}h [xyz]mm/mem,[xyz]mm,[xyz]mm{k} */
-        host_and_vcpu_must_have(avx512_fp16);
+        visa_check(_fp16);
         generate_exception_if(evex.w, X86_EXC_UD);
         goto avx512f_all_fp;
 
     CASE_SIMD_ALL_FP(_EVEX, 5, 0x5a):  /* vcvtp{h,d}2p{h,d} [xyz]mm/mem,[xyz]mm{k} */
                                        /* vcvts{h,d}2s{h,d} xmm/mem,xmm,xmm{k} */
-        host_and_vcpu_must_have(avx512_fp16);
+        visa_check(_fp16);
         if ( vex.pfx & VEX_PREFIX_SCALAR_MASK )
             d &= ~TwoOp;
         op_bytes = 2 << (((evex.pfx & VEX_PREFIX_SCALAR_MASK) ? 0 : 1 + evex.lr) +
@@ -7872,7 +7883,7 @@ x86_emulate(
                                        /* vcvtqq2ph [xyz]mm/mem,xmm{k} */
     case X86EMUL_OPC_EVEX_F2(5, 0x7a): /* vcvtudq2ph [xyz]mm/mem,[xy]mm{k} */
                                        /* vcvtuqq2ph [xyz]mm/mem,xmm{k} */
-        host_and_vcpu_must_have(avx512_fp16);
+        visa_check(_fp16);
         if ( ea.type != OP_REG || !evex.brs )
             avx512_vlen_check(false);
         op_bytes = 16 << evex.lr;
@@ -7882,7 +7893,7 @@ x86_emulate(
     case X86EMUL_OPC_EVEX_F3(5, 0x5b): /* vcvttph2dq [xy]mm/mem,[xyz]mm{k} */
     case X86EMUL_OPC_EVEX   (5, 0x78): /* vcvttph2udq [xy]mm/mem,[xyz]mm{k} */
     case X86EMUL_OPC_EVEX   (5, 0x79): /* vcvtph2udq [xy]mm/mem,[xyz]mm{k} */
-        host_and_vcpu_must_have(avx512_fp16);
+        visa_check(_fp16);
         generate_exception_if(evex.w, X86_EXC_UD);
         if ( ea.type != OP_REG || !evex.brs )
             avx512_vlen_check(false);
@@ -7904,7 +7915,7 @@ x86_emulate(
     case X86EMUL_OPC_EVEX_66(5, 0x79): /* vcvtph2uqq xmm/mem,[xyz]mm{k} */
     case X86EMUL_OPC_EVEX_66(5, 0x7a): /* vcvttph2qq xmm/mem,[xyz]mm{k} */
     case X86EMUL_OPC_EVEX_66(5, 0x7b): /* vcvtph2qq xmm/mem,[xyz]mm{k} */
-        host_and_vcpu_must_have(avx512_fp16);
+        visa_check(_fp16);
         generate_exception_if(evex.w, X86_EXC_UD);
         if ( ea.type != OP_REG || !evex.brs )
             avx512_vlen_check(false);
@@ -7941,7 +7952,7 @@ x86_emulate(
     case X86EMUL_OPC_EVEX_66(6, 0xba): /* vfmsub231ph [xyz]mm/mem,[xyz]mm,[xyz]mm{k} */
     case X86EMUL_OPC_EVEX_66(6, 0xbc): /* vfnmadd231ph [xyz]mm/mem,[xyz]mm,[xyz]mm{k} */
     case X86EMUL_OPC_EVEX_66(6, 0xbe): /* vfnmsub231ph [xyz]mm/mem,[xyz]mm,[xyz]mm{k} */
-        host_and_vcpu_must_have(avx512_fp16);
+        visa_check(_fp16);
         generate_exception_if(evex.w, X86_EXC_UD);
         if ( ea.type != OP_REG || !evex.brs )
             avx512_vlen_check(false);
@@ -7963,7 +7974,7 @@ x86_emulate(
     case X86EMUL_OPC_EVEX_66(6, 0xbb): /* vfmsub231sh xmm/m16,xmm,xmm{k} */
     case X86EMUL_OPC_EVEX_66(6, 0xbd): /* vfnmadd231sh xmm/m16,xmm,xmm{k} */
     case X86EMUL_OPC_EVEX_66(6, 0xbf): /* vfnmsub231sh xmm/m16,xmm,xmm{k} */
-        host_and_vcpu_must_have(avx512_fp16);
+        visa_check(_fp16);
         generate_exception_if(evex.w || (ea.type != OP_REG && evex.brs),
                               X86_EXC_UD);
         if ( !evex.brs )
@@ -7972,13 +7983,13 @@ x86_emulate(
 
     case X86EMUL_OPC_EVEX_66(6, 0x4c): /* vrcpph [xyz]mm/mem,[xyz]mm{k} */
     case X86EMUL_OPC_EVEX_66(6, 0x4e): /* vrsqrtph [xyz]mm/mem,[xyz]mm{k} */
-        host_and_vcpu_must_have(avx512_fp16);
+        visa_check(_fp16);
         generate_exception_if(evex.w, X86_EXC_UD);
         goto avx512f_no_sae;
 
     case X86EMUL_OPC_EVEX_66(6, 0x4d): /* vrcpsh xmm/m16,xmm,xmm{k} */
     case X86EMUL_OPC_EVEX_66(6, 0x4f): /* vrsqrtsh xmm/m16,xmm,xmm{k} */
-        host_and_vcpu_must_have(avx512_fp16);
+        visa_check(_fp16);
         generate_exception_if(evex.w || evex.brs, X86_EXC_UD);
         avx512_vlen_check(true);
         goto simd_zmm;
@@ -7996,7 +8007,7 @@ x86_emulate(
     {
         unsigned int src1 = ~evex.reg;
 
-        host_and_vcpu_must_have(avx512_fp16);
+        visa_check(_fp16);
         generate_exception_if(evex.w || ((b & 1) && ea.type != OP_REG && evex.brs),
                               X86_EXC_UD);
         if ( mode_64bit() )
--- a/xen/arch/x86/xstate.c
+++ b/xen/arch/x86/xstate.c
@@ -814,7 +814,7 @@ static void __init noinline xstate_check
     if ( cpu_has_mpx )
         check_new_xstate(&s, X86_XCR0_BNDCSR | X86_XCR0_BNDREGS);
 
-    if ( cpu_has_avx512f )
+    if ( boot_cpu_has(X86_FEATURE_AVX512F) || boot_cpu_has(X86_FEATURE_AVX10) )
         check_new_xstate(&s, X86_XCR0_HI_ZMM | X86_XCR0_ZMM | X86_XCR0_OPMASK);
 
     /*
--- a/xen/include/public/arch-x86/cpufeatureset.h
+++ b/xen/include/public/arch-x86/cpufeatureset.h
@@ -366,7 +366,7 @@ XEN_CPUFEATURE(PREFETCHI,          15*32
 XEN_CPUFEATURE(USER_MSR,           15*32+15) /*s  U{RD,WR}MSR Instructions */
 XEN_CPUFEATURE(UIRET_UIF,          15*32+17) /*   UIRET updates UIF */
 XEN_CPUFEATURE(CET_SSS,            15*32+18) /*   CET Supervisor Shadow Stacks safe to use */
-XEN_CPUFEATURE(AVX10,              15*32+19) /*   AVX10 Converged Vector ISA */
+XEN_CPUFEATURE(AVX10,              15*32+19) /*a  AVX10 Converged Vector ISA */
 XEN_CPUFEATURE(SLSM,               15*32+24) /*   Static Lockstep Mode */
 
 /* Intel-defined CPU features, MSR_ARCH_CAPS 0x10a.eax, word 16 */



From xen-devel-bounces@lists.xenproject.org Thu Apr 09 15:04:18 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 09 Apr 2026 15:04:18 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1277712.1562843 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wAqva-0000Wi-4v; Thu, 09 Apr 2026 15:04:18 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1277712.1562843; Thu, 09 Apr 2026 15: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 1wAqva-0000WR-12; Thu, 09 Apr 2026 15:04:18 +0000
Received: by outflank-mailman (input) for mailman id 1277712;
 Thu, 09 Apr 2026 15:04:16 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <jbeulich@suse.com>) id 1wAqvY-0000Ue-Fm
 for xen-devel@lists.xenproject.org; Thu, 09 Apr 2026 15:04:16 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wAqvX-00EBmu-S3
 for xen-devel@lists.xenproject.org; Thu, 09 Apr 2026 17:04:15 +0200
Received: from [10.42.69.12] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <jbeulich@suse.com>)
 id 69d7bfe3-2eae-0a2a0a5409dd-0a2a450cc41a-24
 for <xen-devel@lists.xenproject.org>; Thu, 09 Apr 2026 17:04:15 +0200
Received: from [209.85.128.48] (helo=mail-wm1-f48.google.com)
 by tlsNG-d25034.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.0)
 (envelope-from <jbeulich@suse.com>)
 id 69d7bfef-f40c-0a2a450c0019-d1558030a9c4-3
 for <xen-devel@lists.xenproject.org>; Thu, 09 Apr 2026 17:04:15 +0200
Received: by mail-wm1-f48.google.com with SMTP id
 5b1f17b1804b1-488b3f8fa2bso12984455e9.1
 for <xen-devel@lists.xenproject.org>; Thu, 09 Apr 2026 08:04:15 -0700 (PDT)
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-488d538c39bsm1710875e9.14.2026.04.09.08.04.14
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Thu, 09 Apr 2026 08:04:14 -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=google header.d=suse.com header.i="@suse.com" header.h="Content-Transfer-Encoding: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=1775747055; x=1776351855; darn=lists.xenproject.org;
        h=content-transfer-encoding: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;
        bh=GWE53NAFaxXZ+D0dpPIGZkbsN2k0qydW3rB6bWu53Do=;
        b=N9r8yTQYUGPD+jvpzZsbB083/YGarLKQm4icscPm5xlA0moKBzScU/BVM2QxxA5sjt
         WebiRO4liV8iafaW/Z4tmENLiioGi49HCkm6aD3eIopEHrWLgb/N9ULcg8h25DyV5SRH
         M+SCCxO3iTbLxUdsZ2ATXEEHxWooDtLBg4y2ZVLVsje4NpZYNNBkJXgPv6CR/E1e5i5B
         oLovF9Qk0BxH2R7FR0A6lvE4neH7lqmxZPUnssbXcoFOK3uWOiB9L+3gjXSnqKhvkj3F
         yu8TBaG6duzy/+53c1+buYeJn1sOKbKDoTbsAdd7X5lBIqfDzV7TTsKrlb5+rL41N8Ub
         cA1A==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20251104; t=1775747055; x=1776351855;
        h=content-transfer-encoding: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;
        bh=GWE53NAFaxXZ+D0dpPIGZkbsN2k0qydW3rB6bWu53Do=;
        b=OBZ0gtUaLWBjJYgME2abCsIHMC3+uS7e/5yV+gXuH2jjxqhP3ZNreZWF1xa8wuUZMh
         FMO6Px53EWH+sPUH2FQtH+qTg6IRJlSLahQAqmbWDTx+aAJhCcL84CKXhT5wP2mlEUt8
         QrnfFAEPB0X7TavuYBIB0TGg8JnYiYDdJ1X6iYk0kwunCCG2MDmt34L9eKbbXGuo7ih8
         XNN4Jjd939tUdEktyDPm9aQBuBWuyY+UFm6TBXBoJCyRlY647OFacyTmmcAyIpv5Aiw8
         CBy/av+eqHgaPAArLEKpP4sTRiWamYOrAkJ8jBZnXz47nQf//SWYaPvX7MKEwxT0Q8EV
         6vuQ==
X-Gm-Message-State: AOJu0YzkRo4obyJIr8oCMWchUsT2/k9uHVV/dXyRyO5dvLOZE+bLTKWE
	bYM43u7EGJdh6lDmnU3+8eRfhBhCb9dsnA/zSzb/pSBpHQLQrk1UDBE1rUT2dn9qq4y01jQtg9I
	ursVNyg==
X-Gm-Gg: AeBDies/ojPIqRUlKclWP5BmbE8IYlKzDpdD5O56uUMq44DDpBkS28tjHywyOFJPTHC
	pnx6dz7X5FZECvr2RpT9Em8tCLWxpNcSHDUJ4dX9G3uO6PBcRrolJ6Dk7ids6X+hxXQyhKF/WIv
	pc8ujMzYmFoR4IAcaRcHfku6uxUGrFOIMzw/AjNih649PUQxHl/oH0VNbcVzA5leGv4R0Vv+HUu
	CokdCGyxN0x93ITa5Ct5rjgubX6E7toCjvzLxOkIVwmi4gdrikbfvzgEeM8/i4qphmrhPJ6QDcH
	PLNpHfkwnxDniuXNRweGK1BJHYIG4zIRFYcavopAGOfAyCeQxUYSC5l8auWUucbqCFEiJeqbKmr
	LwGhKn7kZpYrpu+EpwmG8u6aZvvD5B80hQ4ajF5qmaE00T2fBdphq10omDO0R0n+GcyFV9XmzJd
	rcM3ww0m6CPbDIM8b3ELxIROU6lbTZ9cWS4UUfI2DQHqa3pdiRLgbUocNJAyqH+szecj0RtXhsg
	+57RwUa+DiXLrk=
X-Received: by 2002:a05:600c:c087:b0:485:3c2e:60d5 with SMTP id 5b1f17b1804b1-488cd50f45dmr37248225e9.2.1775747054988;
        Thu, 09 Apr 2026 08:04:14 -0700 (PDT)
Message-ID: <10c2a780-0f19-496b-a88d-5f01371be091@suse.com>
Date: Thu, 9 Apr 2026 17:04:13 +0200
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: [PATCH v4 04/16] x86emul/test: use simd_check_avx512*() in main()
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.pau@citrix.com>,
 Teddy Astie <teddy.astie@vates.tech>
References: <1e2ff012-b07a-43be-9ba6-290b38d3c97c@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: <1e2ff012-b07a-43be-9ba6-290b38d3c97c@suse.com>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 7bit
X-purgate-ID: tlsNG-d25034/1775747055-81B54A3D-97BFB3F9/0/0
X-purgate-type: clean
X-purgate-size: 10148

In preparation for having these also cover AVX10, use the helper
functions in preference of open-coded cpu_has_avx512* for those features
that AVX10 includes. Introduce a couple further helper functions where
they weren't previously needed.

Note that this way simd_check_avx512f_sha_vl() gains an AVX512F check
(which is likely benign) and simd_check_avx512bw_gf_vl() gains an
AVX512BW check (which was clearly missing). 

Signed-off-by: Jan Beulich <jbeulich@suse.com>
---
v2: Re-base over dropping of Xeon Phi support.

--- a/tools/tests/x86_emulator/test_x86_emulator.c
+++ b/tools/tests/x86_emulator/test_x86_emulator.c
@@ -167,6 +167,11 @@ static bool simd_check_avx512vbmi_vl(voi
     return cpu_has_avx512_vbmi && cpu_has_avx512vl;
 }
 
+static bool simd_check_avx512vbmi2(void)
+{
+    return cpu_has_avx512_vbmi2;
+}
+
 static bool simd_check_sse4_sha(void)
 {
     return cpu_has_sha && cpu_has_sse4_2;
@@ -179,7 +184,7 @@ static bool simd_check_avx_sha(void)
 
 static bool simd_check_avx512f_sha_vl(void)
 {
-    return cpu_has_sha && cpu_has_avx512vl;
+    return cpu_has_sha && simd_check_avx512f_vl();
 }
 
 static bool simd_check_avx2_vaes(void)
@@ -189,13 +194,13 @@ static bool simd_check_avx2_vaes(void)
 
 static bool simd_check_avx512bw_vaes(void)
 {
-    return cpu_has_aesni && cpu_has_vaes && cpu_has_avx512bw;
+    return cpu_has_aesni && cpu_has_vaes && simd_check_avx512bw();
 }
 
 static bool simd_check_avx512bw_vaes_vl(void)
 {
     return cpu_has_aesni && cpu_has_vaes &&
-           cpu_has_avx512bw && cpu_has_avx512vl;
+           simd_check_avx512bw_vl();
 }
 
 static bool simd_check_avx2_vpclmulqdq(void)
@@ -205,22 +210,22 @@ static bool simd_check_avx2_vpclmulqdq(v
 
 static bool simd_check_avx512bw_vpclmulqdq(void)
 {
-    return cpu_has_vpclmulqdq && cpu_has_avx512bw;
+    return cpu_has_vpclmulqdq && simd_check_avx512bw();
 }
 
 static bool simd_check_avx512bw_vpclmulqdq_vl(void)
 {
-    return cpu_has_vpclmulqdq && cpu_has_avx512bw && cpu_has_avx512vl;
+    return cpu_has_vpclmulqdq && simd_check_avx512bw_vl();
 }
 
 static bool simd_check_avx512vbmi2_vpclmulqdq(void)
 {
-    return cpu_has_avx512_vbmi2 && simd_check_avx512bw_vpclmulqdq();
+    return simd_check_avx512vbmi2() && simd_check_avx512bw_vpclmulqdq();
 }
 
 static bool simd_check_avx512vbmi2_vpclmulqdq_vl(void)
 {
-    return cpu_has_avx512_vbmi2 && simd_check_avx512bw_vpclmulqdq_vl();
+    return simd_check_avx512vbmi2() && simd_check_avx512bw_vpclmulqdq_vl();
 }
 
 static bool simd_check_sse2_gf(void)
@@ -235,12 +240,17 @@ static bool simd_check_avx2_gf(void)
 
 static bool simd_check_avx512bw_gf(void)
 {
-    return cpu_has_gfni && cpu_has_avx512bw;
+    return cpu_has_gfni && simd_check_avx512bw();
 }
 
 static bool simd_check_avx512bw_gf_vl(void)
 {
-    return cpu_has_gfni && cpu_has_avx512vl;
+    return cpu_has_gfni && simd_check_avx512bw_vl();
+}
+
+static bool simd_check_avx512vnni(void)
+{
+    return cpu_has_avx512_vnni;
 }
 
 static bool simd_check_avx512fp16(void)
@@ -3192,7 +3202,7 @@ int main(int argc, char **argv)
         printf("skipped\n");
 
     printf("%-40s", "Testing {evex} vmovq %xmm1,32(%edx)...");
-    if ( stack_exec && cpu_has_avx512f )
+    if ( stack_exec && simd_check_avx512f() )
     {
         decl_insn(evex_vmovq_to_mem);
 
@@ -3216,7 +3226,7 @@ int main(int argc, char **argv)
         printf("skipped\n");
 
     printf("%-40s", "Testing {evex} vmovq 32(%edx),%xmm0...");
-    if ( stack_exec && cpu_has_avx512f )
+    if ( stack_exec && simd_check_avx512f() )
     {
         decl_insn(evex_vmovq_from_mem);
 
@@ -3339,7 +3349,7 @@ int main(int argc, char **argv)
         printf("skipped\n");
 
     printf("%-40s", "Testing vmovdqu32 %zmm2,(%ecx){%k1}...");
-    if ( stack_exec && cpu_has_avx512f )
+    if ( stack_exec && simd_check_avx512f() )
     {
         decl_insn(vmovdqu32_to_mem);
 
@@ -3369,7 +3379,7 @@ int main(int argc, char **argv)
         printf("skipped\n");
 
     printf("%-40s", "Testing vmovdqu32 64(%edx),%zmm2{%k2}...");
-    if ( stack_exec && cpu_has_avx512f )
+    if ( stack_exec && simd_check_avx512f() )
     {
         decl_insn(vmovdqu32_from_mem);
 
@@ -3394,7 +3404,7 @@ int main(int argc, char **argv)
         printf("skipped\n");
 
     printf("%-40s", "Testing vmovdqu16 %zmm3,(%ecx){%k1}...");
-    if ( stack_exec && cpu_has_avx512bw )
+    if ( stack_exec && simd_check_avx512bw() )
     {
         decl_insn(vmovdqu16_to_mem);
 
@@ -3426,7 +3436,7 @@ int main(int argc, char **argv)
         printf("skipped\n");
 
     printf("%-40s", "Testing vmovdqu16 64(%edx),%zmm3{%k2}...");
-    if ( stack_exec && cpu_has_avx512bw )
+    if ( stack_exec && simd_check_avx512bw() )
     {
         decl_insn(vmovdqu16_from_mem);
 
@@ -3554,7 +3564,7 @@ int main(int argc, char **argv)
     printf("%-40s", "Testing vmovsd %xmm5,16(%ecx){%k3}...");
     memset(res, 0x88, 128);
     memset(res + 20, 0x77, 8);
-    if ( stack_exec && cpu_has_avx512f )
+    if ( stack_exec && simd_check_avx512f() )
     {
         decl_insn(vmovsd_masked_to_mem);
 
@@ -3589,7 +3599,7 @@ int main(int argc, char **argv)
     }
 
     printf("%-40s", "Testing vmovaps (%edx),%zmm7{%k3}{z}...");
-    if ( stack_exec && cpu_has_avx512f )
+    if ( stack_exec && simd_check_avx512f() )
     {
         decl_insn(vmovaps_masked_from_mem);
 
@@ -3772,7 +3782,7 @@ int main(int argc, char **argv)
         printf("skipped\n");
 
     printf("%-40s", "Testing {evex} vmovd %xmm3,32(%ecx)...");
-    if ( stack_exec && cpu_has_avx512f )
+    if ( stack_exec && simd_check_avx512f() )
     {
         decl_insn(evex_vmovd_to_mem);
 
@@ -3797,7 +3807,7 @@ int main(int argc, char **argv)
         printf("skipped\n");
 
     printf("%-40s", "Testing {evex} vmovd 32(%ecx),%xmm4...");
-    if ( stack_exec && cpu_has_avx512f )
+    if ( stack_exec && simd_check_avx512f() )
     {
         decl_insn(evex_vmovd_from_mem);
 
@@ -3987,7 +3997,7 @@ int main(int argc, char **argv)
         printf("skipped\n");
 
     printf("%-40s", "Testing {evex} vmovd %xmm2,%ebx...");
-    if ( stack_exec && cpu_has_avx512f )
+    if ( stack_exec && simd_check_avx512f() )
     {
         decl_insn(evex_vmovd_to_reg);
 
@@ -4013,7 +4023,7 @@ int main(int argc, char **argv)
         printf("skipped\n");
 
     printf("%-40s", "Testing {evex} vmovd %ebx,%xmm1...");
-    if ( stack_exec && cpu_has_avx512f )
+    if ( stack_exec && simd_check_avx512f() )
     {
         decl_insn(evex_vmovd_from_reg);
 
@@ -4115,7 +4125,7 @@ int main(int argc, char **argv)
         printf("skipped\n");
 
     printf("%-40s", "Testing {evex} vmovq %xmm11,32(%ecx)...");
-    if ( stack_exec && cpu_has_avx512f )
+    if ( stack_exec && simd_check_avx512f() )
     {
         decl_insn(evex_vmovq_to_mem2);
 
@@ -4205,7 +4215,7 @@ int main(int argc, char **argv)
         printf("skipped\n");
 
     printf("%-40s", "Testing vmovq %xmm22,%rbx...");
-    if ( stack_exec && cpu_has_avx512f )
+    if ( stack_exec && simd_check_avx512f() )
     {
         decl_insn(evex_vmovq_to_reg);
 
@@ -4398,7 +4408,7 @@ int main(int argc, char **argv)
         printf("skipped\n");
 
     printf("%-40s", "Testing vmovntdqa 64(%ecx),%zmm4...");
-    if ( stack_exec && cpu_has_avx512f )
+    if ( stack_exec && simd_check_avx512f() )
     {
         decl_insn(evex_vmovntdqa);
 
@@ -4994,7 +5004,7 @@ int main(int argc, char **argv)
         printf("skipped\n");
 
     printf("%-40s", "Testing vcvtph2ps 32(%ecx),%zmm7{%k4}...");
-    if ( stack_exec && cpu_has_avx512f )
+    if ( stack_exec && simd_check_avx512f() )
     {
         decl_insn(evex_vcvtph2ps);
         decl_insn(evex_vcvtps2ph);
@@ -5037,7 +5047,7 @@ int main(int argc, char **argv)
         printf("skipped\n");
 
     printf("%-40s", "Testing vfixupimmpd $0,8(%edx){1to8},%zmm3,%zmm4...");
-    if ( stack_exec && cpu_has_avx512f )
+    if ( stack_exec && simd_check_avx512f() )
     {
         decl_insn(vfixupimmpd);
         static const struct {
@@ -5076,7 +5086,7 @@ int main(int argc, char **argv)
 
 
     printf("%-40s", "Testing vfpclasspsz $0x46,64(%edx),%k2...");
-    if ( stack_exec && cpu_has_avx512dq )
+    if ( stack_exec && simd_check_avx512dq() )
     {
         decl_insn(vfpclassps);
 
@@ -5108,7 +5118,7 @@ int main(int argc, char **argv)
         printf("skipped\n");
 
     printf("%-40s", "Testing vfpclassphz $0x46,128(%ecx),%k3...");
-    if ( stack_exec && cpu_has_avx512_fp16 )
+    if ( stack_exec && simd_check_avx512fp16() )
     {
         decl_insn(vfpclassph);
 
@@ -5151,7 +5161,7 @@ int main(int argc, char **argv)
      * on the mapping boundaries) that elements controlled by clear mask
      * bits don't get accessed.
      */
-    if ( stack_exec && cpu_has_avx512f )
+    if ( stack_exec && simd_check_avx512f() )
     {
         decl_insn(vpcompressd);
         decl_insn(vpcompressq);
@@ -5253,7 +5263,7 @@ int main(int argc, char **argv)
     }
 
 #if __GNUC__ > 7 /* can't check for __AVX512VBMI2__ here */
-    if ( stack_exec && cpu_has_avx512_vbmi2 )
+    if ( stack_exec && simd_check_avx512vbmi2() )
     {
         decl_insn(vpcompressb);
         decl_insn(vpcompressw);
@@ -5441,7 +5451,7 @@ int main(int argc, char **argv)
     }
 
     printf("%-40s", "Testing vpdpwssd (%ecx),%{y,z}mmA,%{y,z}mmB...");
-    if ( stack_exec && cpu_has_avx512_vnni && cpu_has_avx_vnni )
+    if ( stack_exec && simd_check_avx512vnni() && cpu_has_avx_vnni )
     {
         /* Do the same operation two ways and compare the results. */
         decl_insn(vpdpwssd_vex1);
@@ -5496,7 +5506,7 @@ int main(int argc, char **argv)
         printf("skipped\n");
 
     printf("%-40s", "Testing vmovsh 8(%ecx),%xmm5...");
-    if ( stack_exec && cpu_has_avx512_fp16 )
+    if ( stack_exec && simd_check_avx512fp16() )
     {
         decl_insn(vmovsh_from_mem);
         decl_insn(vmovw_to_gpr);



From xen-devel-bounces@lists.xenproject.org Thu Apr 09 15:04:43 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 09 Apr 2026 15:04:43 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1277722.1562852 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wAqvw-00013V-BZ; Thu, 09 Apr 2026 15:04:40 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1277722.1562852; Thu, 09 Apr 2026 15:04: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 1wAqvw-00013O-8Z; Thu, 09 Apr 2026 15:04:40 +0000
Received: by outflank-mailman (input) for mailman id 1277722;
 Thu, 09 Apr 2026 15:04:39 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <jbeulich@suse.com>) id 1wAqvv-000132-Im
 for xen-devel@lists.xenproject.org; Thu, 09 Apr 2026 15:04:39 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wAqvu-0029M9-Un
 for xen-devel@lists.xenproject.org; Thu, 09 Apr 2026 17:04:38 +0200
Received: from [10.42.69.2] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <jbeulich@suse.com>)
 id 69d7bff1-e002-0a2a0a5209dd-0a2a4502e448-36
 for <xen-devel@lists.xenproject.org>; Thu, 09 Apr 2026 17:04:38 +0200
Received: from [209.85.128.53] (helo=mail-wm1-f53.google.com)
 by tlsNG-720697.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.0)
 (envelope-from <jbeulich@suse.com>)
 id 69d7c006-42fa-0a2a45020019-d1558035dc3b-3
 for <xen-devel@lists.xenproject.org>; Thu, 09 Apr 2026 17:04:38 +0200
Received: by mail-wm1-f53.google.com with SMTP id
 5b1f17b1804b1-488ba6366a7so12122215e9.0
 for <xen-devel@lists.xenproject.org>; Thu, 09 Apr 2026 08:04:38 -0700 (PDT)
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-488cd1999c6sm43003585e9.4.2026.04.09.08.04.37
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Thu, 09 Apr 2026 08:04:37 -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=google header.d=suse.com header.i="@suse.com" header.h="Content-Transfer-Encoding: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=1775747078; x=1776351878; darn=lists.xenproject.org;
        h=content-transfer-encoding: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;
        bh=sk4QjbaA4C4zd++R6vZvuA+gGTh5nm2Now1s0GL3ozA=;
        b=aJ6HX6AuAae1cCPG0swNqB/DHFdcrs863dFr0KkGqK751JWRuo1QkjE+niVAHcVxQu
         G1HPLGkkNFKOTmPWlLjw6f9eaXe/gqYZ1vIwE/2zDAtYKU6Xm+rmZEkcZkbyk9vTVLDR
         UOfFW9bNyGy6gswj+JZmiJdke3FcAyNxGjrZIhC+KSa/MTaYugpid7/xID9LeeE6/lgG
         ajzQgCfTqaLkAp66KxzbUvQALWfbTJrUmbTI8nq12WYcOoc+6SOxudbv8UAgWjb3vXgb
         AjXXGN3ON4FvcK4eerP4fo2uOQjU3Lakcr7Cev8r3OCuyeCcYJHuA1pMy/pdpKACk3Lt
         0kpw==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20251104; t=1775747078; x=1776351878;
        h=content-transfer-encoding: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;
        bh=sk4QjbaA4C4zd++R6vZvuA+gGTh5nm2Now1s0GL3ozA=;
        b=i/QDoQXPomkiU+YmVD0GV3sCWp0b07SyC19eQ9Vwhe7bKTeTm6/+3PW9I/vtjG5xSb
         XWLLJr/Gm4CEl8UGw87BysoHXRCno/1ebi7MZYrchs9EqvKLRVUSGcnKawn5NGAbAiBT
         cvJHY7dluJgXyeC55eN1OFBcfLDC9siNlIqjWMT8bOw9cGrjjXPo++/8ASbaCqSj3Vme
         OOA7Bx+sA2Jv4gYWinA7XUusQyUXsjlEGuYDyKuzvIlur2Jc04UAgg0z80y05UXHGvz6
         ifjK92Ae2faxiWwRWO528ZxunvwbRv+nqVlE7o8/2b4r3i4wMBUS9SRBgBGFKIGHEGSG
         Si3Q==
X-Gm-Message-State: AOJu0Yxb6icKyFS5Rsb2sE9ur21jMzatsama+iXw0ZIgEeyq8Igi3vYy
	kL8vKKlitMHP34hvybL1qAxZf8SYtMQt/F7bIWeayfpnoC1sxdkCpLIgIOC7id4Di6BGWptoP70
	ZBnF1jw==
X-Gm-Gg: AeBDietD6GeZZB4TlE7GnjFEPSSmptusMy5NzU3KSIuUGthNoqiAfwzbcfouE6KoikP
	sNwhrY/IOxauk55LEJGpI7WXLSg7jM2+jgdeAR/zQeSa1Q1yPNd4IPioMjNe1etztWXe1KA1tqu
	xyT8rwFHJfs1faScamuzDqhP2jK0uVamvTmQjq1gBnmm8ZM9/LGPz2+tbjtqgthFs2ZAUox2dHZ
	yyOJTnrzQyoq4w6a+DNMbMmuIsOjPJsmHuOgwfcPyDi/dJAaiWmJscRANHetYsTjpkwGE5/qMkA
	sv5u7vaHPup9t5tqPyEYaywjacnlL34xCev+itnRSynaVGYzWSNlTRm5Mn5/mYWKXSD/qbsINrr
	83ifY9D6Zlcy3P1qHh1QO4xVkGpLTDUEsR559mRcgun6T7DbXUmRYVrgUKWLI060fF/JBEkP5Pv
	7XAnoxDkDSGpHQnyVoyQfJRU15IHkSYI++dgW8sOBEo5fDQSHKM7aOfFFChEpcatNhKjY9bFFoU
	JSAafMmEGwRktE=
X-Received: by 2002:a05:600c:1381:b0:487:1108:48af with SMTP id 5b1f17b1804b1-488996a351bmr359902395e9.4.1775747078262;
        Thu, 09 Apr 2026 08:04:38 -0700 (PDT)
Message-ID: <36d9ab74-a7e0-4ec3-ae3e-4c9cae6982e5@suse.com>
Date: Thu, 9 Apr 2026 17:04:36 +0200
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: [PATCH v4 05/16] x86emul/test: drop cpu_has_avx512vl
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.pau@citrix.com>,
 Teddy Astie <teddy.astie@vates.tech>
References: <1e2ff012-b07a-43be-9ba6-290b38d3c97c@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: <1e2ff012-b07a-43be-9ba6-290b38d3c97c@suse.com>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 7bit
X-purgate-ID: tlsNG-720697/1775747078-ADB3FCD1-543089F8/0/0
X-purgate-type: clean
X-purgate-size: 2885

AVX512VL not being a standalone feature anyway, but always needing
to be combined with some other AVX512*, replace uses of
cpu_has_avx512vl by just the feature bit check.

Signed-off-by: Jan Beulich <jbeulich@suse.com>
---
v2: Re-base over dropping of Xeon Phi support.

--- a/tools/tests/x86_emulator/evex-disp8.c
+++ b/tools/tests/x86_emulator/evex-disp8.c
@@ -1025,7 +1025,8 @@ static void test_group(const struct test
     {
         for ( j = 0; j < nr_vl; ++j )
         {
-            if ( vl[0] == VL_512 && vl[j] != VL_512 && !cpu_has_avx512vl )
+            if ( vl[0] == VL_512 && vl[j] != VL_512 &&
+                 !cpu_policy.feat.avx512vl )
                 continue;
 
             switch ( tests[i].esz )
--- a/tools/tests/x86_emulator/test_x86_emulator.c
+++ b/tools/tests/x86_emulator/test_x86_emulator.c
@@ -131,7 +131,7 @@ static bool simd_check_avx512f(void)
 
 static bool simd_check_avx512f_vl(void)
 {
-    return cpu_has_avx512f && cpu_has_avx512vl;
+    return cpu_has_avx512f && cpu_policy.feat.avx512vl;
 }
 #define simd_check_avx512vl_sg simd_check_avx512f_vl
 
@@ -143,7 +143,7 @@ static bool simd_check_avx512dq(void)
 
 static bool simd_check_avx512dq_vl(void)
 {
-    return cpu_has_avx512dq && cpu_has_avx512vl;
+    return cpu_has_avx512dq && cpu_policy.feat.avx512vl;
 }
 
 static bool simd_check_avx512bw(void)
@@ -154,7 +154,7 @@ static bool simd_check_avx512bw(void)
 
 static bool simd_check_avx512bw_vl(void)
 {
-    return cpu_has_avx512bw && cpu_has_avx512vl;
+    return cpu_has_avx512bw && cpu_policy.feat.avx512vl;
 }
 
 static bool simd_check_avx512vbmi(void)
@@ -164,7 +164,7 @@ static bool simd_check_avx512vbmi(void)
 
 static bool simd_check_avx512vbmi_vl(void)
 {
-    return cpu_has_avx512_vbmi && cpu_has_avx512vl;
+    return cpu_has_avx512_vbmi && cpu_policy.feat.avx512vl;
 }
 
 static bool simd_check_avx512vbmi2(void)
@@ -260,7 +260,7 @@ static bool simd_check_avx512fp16(void)
 
 static bool simd_check_avx512fp16_vl(void)
 {
-    return cpu_has_avx512_fp16 && cpu_has_avx512vl;
+    return cpu_has_avx512_fp16 && cpu_policy.feat.avx512vl;
 }
 
 static void simd_set_regs(struct cpu_user_regs *regs)
--- a/tools/tests/x86_emulator/x86-emulate.h
+++ b/tools/tests/x86_emulator/x86-emulate.h
@@ -179,8 +179,6 @@ void wrpkru(unsigned int val);
 #define cpu_has_sha                  cpu_policy.feat.sha
 #define cpu_has_avx512bw            (cpu_policy.feat.avx512bw && \
                                      xcr0_mask(0xe6))
-#define cpu_has_avx512vl            (cpu_policy.feat.avx512vl && \
-                                     xcr0_mask(0xe6))
 #define cpu_has_avx512_vbmi         (cpu_policy.feat.avx512_vbmi && \
                                      xcr0_mask(0xe6))
 #define cpu_has_avx512_vbmi2        (cpu_policy.feat.avx512_vbmi2 && \



From xen-devel-bounces@lists.xenproject.org Thu Apr 09 15:05:10 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 09 Apr 2026 15:05:10 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1277730.1562861 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wAqwO-0001an-JP; Thu, 09 Apr 2026 15:05:08 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1277730.1562861; Thu, 09 Apr 2026 15:05: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 1wAqwO-0001ag-Fx; Thu, 09 Apr 2026 15:05:08 +0000
Received: by outflank-mailman (input) for mailman id 1277730;
 Thu, 09 Apr 2026 15:05:07 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <jbeulich@suse.com>) id 1wAqwN-0001aR-GZ
 for xen-devel@lists.xenproject.org; Thu, 09 Apr 2026 15:05:07 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wAqwM-00EC7x-SZ
 for xen-devel@lists.xenproject.org; Thu, 09 Apr 2026 17:05:06 +0200
Received: from [10.42.69.12] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <jbeulich@suse.com>)
 id 69d7c018-5cb7-0a2a0a5109dd-0a2a450cae3a-42
 for <xen-devel@lists.xenproject.org>; Thu, 09 Apr 2026 17:05:06 +0200
Received: from [209.85.128.48] (helo=mail-wm1-f48.google.com)
 by tlsNG-d25034.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.0)
 (envelope-from <jbeulich@suse.com>)
 id 69d7c022-f40c-0a2a450c0019-d1558030d92c-3
 for <xen-devel@lists.xenproject.org>; Thu, 09 Apr 2026 17:05:06 +0200
Received: by mail-wm1-f48.google.com with SMTP id
 5b1f17b1804b1-4852b81c73aso9552155e9.3
 for <xen-devel@lists.xenproject.org>; Thu, 09 Apr 2026 08:05:06 -0700 (PDT)
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-488d534584esm3476535e9.13.2026.04.09.08.05.05
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Thu, 09 Apr 2026 08:05:05 -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=google header.d=suse.com header.i="@suse.com" header.h="Content-Transfer-Encoding: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=1775747106; x=1776351906; darn=lists.xenproject.org;
        h=content-transfer-encoding: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;
        bh=fy810O/JIrpMqa9PSa5WVZ8ULg9qI+umlI0cfV5YuUE=;
        b=cVm8L3DyeZ2me3tw0Vh69A0w3a/wJADvqsrBc9sQvqp5DlLqJb/gcckyHx8T6NRuoB
         H9fbRu69pglxQZA5QU1+RAf8rm1HZxPnlZYpF4G/pb3mXtJe1PM0q4wNaHZgraLc9OA/
         g+9bRft5s5gFLMWKPHniU+8LErL+Vuq5xUQo9Dj5u+qgTLqJEfEuGIDULSdauBp4u1fF
         6oBah6ZC3zY2UI/2TjWuu7/XSFzUhCRn9IwxjNSD7LEyFY3AuI9WsAMb0x7MAO0zSs3F
         Ct2sgW7KbcTNZ2BYpTPYMFJ/+kLbRMUGruxoRvMv8w8PwS1wRvwEOQwEopagzdgdSqM5
         UAgw==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20251104; t=1775747106; x=1776351906;
        h=content-transfer-encoding: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;
        bh=fy810O/JIrpMqa9PSa5WVZ8ULg9qI+umlI0cfV5YuUE=;
        b=H6yDqUwkn2wpGlyFE32e+UbNlIbidiTw6T6oi9HDy8rhSF5lR49LidfqN8KgAemYdC
         B62Dgu1nYQ1R/iKW/qoLTBJhIBLJ3u8JcXglhjAWXgPEyTWcvEhSNX1p8zoIKYVpFL0X
         CH/vPvYjGzOpzdY+qO6Td6Jn2O6Pi+e+y6wcaqPFutLDJfkflJLOAeyV2/uE6BfssDk7
         jo1b4iGqNzCjr83ePfJDTrABhn7/yJUDhYhYnW4BLijQep288R1i6APez00TFimyHlEg
         JO8ePf/q77U6pwC3MEn9qfx6gVmLpSOlajHP5e2NcBrRb8CEEKYQJtvOgYmT97wX+rtK
         7Tqw==
X-Gm-Message-State: AOJu0YwqKyplU/1xtcGl2jhupz8zH6MEs8IPu8t/AAcTSH+OsSdjMJ2I
	0eAgl9NjsMhZtUcuSHptG6kaYo7M7W4jV13gYXEAuG0pmm08gIVC6NoH1mFsrUI0LJehK1sZaGy
	hh9cb2g==
X-Gm-Gg: AeBDievfgkRPZyYq1U2qt8TKOUUTmI0zH7j00QBQuVeAj4RfqjDvDXGV5mo5zzG3RG3
	plElCl9VeiutDQZHN5iJ89/BfGdQm6ixPc3OPwKduyKQS/ftEj6JDLal9P6X0poewk2ljFFCppO
	uoFpbRwMikL67c2OrzYSPocvqtJKmg9TscGdEjGOgwCwdLJiNdJuRRSG7/vrxgNB0Rksej0nZXS
	iPH18vEgUZLWEf0wA19sxz7gE+WyH+cY1+ypLtxH/744UjAJxNsF4eMWUTU1e2QPGxF2uHMmB6T
	QOh+JkQ+DOmqkMWRI75DezSBf7Sm1sWSrbn+4qCsslkz0iiVGL1BG/I2SqvxWuR7j6dhXYbVvUH
	1OCV1P2gXzs3/xuGNrpNManVJGaIjlzjHxVkjKh5YtHzQnGLaWeROJcEs+d5O3nDd05nCIY2Mad
	WNvL7WVAHHM9ys/dfti6xXDP2HOtFsqPB3dAKLrRs/Zso5az04HHh5aajzd/J3U05LwkR6FJOJS
	FkZelygTcSgFxg=
X-Received: by 2002:a05:600c:c083:b0:487:243f:dc3e with SMTP id 5b1f17b1804b1-488ccf3e9abmr39429425e9.6.1775747106035;
        Thu, 09 Apr 2026 08:05:06 -0700 (PDT)
Message-ID: <34db5d46-87cf-4449-900e-5b9e6965a52b@suse.com>
Date: Thu, 9 Apr 2026 17:05:04 +0200
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: [PATCH v4 06/16] x86emul: AVX10.1 testing
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.pau@citrix.com>,
 Teddy Astie <teddy.astie@vates.tech>
References: <1e2ff012-b07a-43be-9ba6-290b38d3c97c@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: <1e2ff012-b07a-43be-9ba6-290b38d3c97c@suse.com>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 7bit
X-purgate-ID: tlsNG-d25034/1775747106-FE151A3D-94C8CACE/0/0
X-purgate-type: clean
X-purgate-size: 11728

Re-use respective AVX512 tests, by suitably adjusting the predicate
functions. This leaves test names ("Testing ... NN-bit code sequence")
somewhat misleading, but I think we can live with that.

Note that the AVX512{BW,DQ} opmask tests cannot be run as-is for the
AVX10/256 case, as they include 512-bit vector <-> opmask insn tests.

Signed-off-by: Jan Beulich <jbeulich@suse.com>
---
SDE: -gnr / -gnr256
---
TBD: The testcase.mk change was for AVX10.1/256. It may, however, be
     worthwhile to keep it.

TBD: May want to have separate AVX10 test blobs built, utilizing all of
     the implied AVX512 sub-features.

The AVX512{BW,DQ} opmask tests could of course be cloned (i.e. rebuilt
another time with -mavx512vl passed) accordingly, but the coverage gain
would be pretty marginal.
---
v4: Drop use of vsz<N> fields. Series re-ordering adjustments. Drop stale
    Phi leftovers. Re-base.
v2: Drop SDE 9.27.0 workaround. Re-base over dropping of Xeon Phi
    support.

--- a/tools/tests/x86_emulator/evex-disp8.c
+++ b/tools/tests/x86_emulator/evex-disp8.c
@@ -1026,7 +1026,7 @@ static void test_group(const struct test
         for ( j = 0; j < nr_vl; ++j )
         {
             if ( vl[0] == VL_512 && vl[j] != VL_512 &&
-                 !cpu_policy.feat.avx512vl )
+                 !cpu_policy.feat.avx512vl && !cpu_policy.feat.avx10 )
                 continue;
 
             switch ( tests[i].esz )
@@ -1077,6 +1077,24 @@ static void test_group(const struct test
     }
 }
 
+/* AVX512 (sub)features implied by AVX10. */
+#define avx10_has_avx512f             cpu_has_avx10
+#define avx10_has_avx512bw            cpu_has_avx10
+#define avx10_has_avx512cd            cpu_has_avx10
+#define avx10_has_avx512dq            cpu_has_avx10
+#define avx10_has_avx512_bf16         cpu_has_avx10
+#define avx10_has_avx512_bitalg       cpu_has_avx10
+#define avx10_has_avx512_fp16         cpu_has_avx10
+#define avx10_has_avx512_ifma         cpu_has_avx10
+#define avx10_has_avx512_vbmi         cpu_has_avx10
+#define avx10_has_avx512_vbmi2        cpu_has_avx10
+#define avx10_has_avx512_vnni         cpu_has_avx10
+#define avx10_has_avx512_vpopcntdq    cpu_has_avx10
+
+/* AVX512 sub-feature(s) /not/ implied by AVX10. */
+#define avx10_has_avx512_vp2intersect false
+#define avx10_has_avx512_bmm          false
+
 void evex_disp8_test(void *instr, struct x86_emulate_ctxt *ctxt,
                      const struct x86_emulate_ops *ops)
 {
@@ -1094,7 +1112,7 @@ void evex_disp8_test(void *instr, struct
     } \
 } while ( false )
 
-#define RUN(feat, vl) run(cpu_has_ ## feat, feat, vl)
+#define RUN(feat, vl) run(cpu_has_ ## feat || avx10_has_ ## feat, feat, vl)
 
     RUN(avx512f, all);
     RUN(avx512f, 128);
@@ -1120,11 +1138,15 @@ void evex_disp8_test(void *instr, struct
     RUN(avx512_bmm, all);
     RUN(avx512_bmm, no128);
 
-    if ( cpu_has_avx512f )
+#undef RUN
+
+    if ( cpu_has_avx512f || cpu_has_avx10 )
     {
+#define RUN(feat, vl) run(cpu_has_ ## feat, feat, vl)
         RUN(gfni, all);
         RUN(vaes, all);
         RUN(vpclmulqdq, all);
+#undef RUN
     }
 
     if ( cpu_has_avx10 )
--- a/tools/tests/x86_emulator/testcase.mk
+++ b/tools/tests/x86_emulator/testcase.mk
@@ -7,6 +7,22 @@ $(call cc-options-add,CFLAGS,CC,$(EMBEDD
 CFLAGS += -ffreestanding -nostdinc -I$(XEN_ROOT)/tools/firmware/include
 CFLAGS += -fno-stack-protector -g0 $($(TESTCASE)-cflags)
 
+ifneq ($(filter -mavx512%,$($(TESTCASE)-cflags)),)
+
+cflags-vsz64 :=
+cflags-vsz32 := -mprefer-vector-width=256
+cflags-vsz16 := -mprefer-vector-width=128
+# Scalar tests don't set VEC_SIZE (and VEC_MAX is used by S/G ones only)
+cflags-vsz   := -mprefer-vector-width=128
+
+ifneq ($(filter -DVEC_SIZE=%,$($(TESTCASE)-cflags)),)
+CFLAGS += $(cflags-vsz$(patsubst -DVEC_SIZE=%,%,$(filter -DVEC_SIZE=%,$($(TESTCASE)-cflags))))
+else
+CFLAGS += $(cflags-vsz$(patsubst -DVEC_MAX=%,%,$(filter -DVEC_MAX=%,$($(TESTCASE)-cflags))))
+endif
+
+endif
+
 LDFLAGS_DIRECT += $(shell { $(LD) -v --warn-rwx-segments; } >/dev/null 2>&1 && echo --no-warn-rwx-segments)
 
 .PHONY: all
--- a/tools/tests/x86_emulator/test_x86_emulator.c
+++ b/tools/tests/x86_emulator/test_x86_emulator.c
@@ -124,52 +124,56 @@ static bool simd_check_avx_pclmul(void)
 
 static bool simd_check_avx512f(void)
 {
-    return cpu_has_avx512f;
+    return cpu_has_avx512f || cpu_has_avx10;
 }
 #define simd_check_avx512f_opmask simd_check_avx512f
 #define simd_check_avx512f_sg simd_check_avx512f
 
 static bool simd_check_avx512f_vl(void)
 {
-    return cpu_has_avx512f && cpu_policy.feat.avx512vl;
+    return (cpu_has_avx512f && cpu_policy.feat.avx512vl) ||
+           cpu_has_avx10;
 }
 #define simd_check_avx512vl_sg simd_check_avx512f_vl
 
 static bool simd_check_avx512dq(void)
 {
-    return cpu_has_avx512dq;
+    return cpu_has_avx512dq || cpu_has_avx10;
 }
 #define simd_check_avx512dq_opmask simd_check_avx512dq
 
 static bool simd_check_avx512dq_vl(void)
 {
-    return cpu_has_avx512dq && cpu_policy.feat.avx512vl;
+    return (cpu_has_avx512dq && cpu_policy.feat.avx512vl) ||
+           cpu_has_avx10;
 }
 
 static bool simd_check_avx512bw(void)
 {
-    return cpu_has_avx512bw;
+    return cpu_has_avx512bw || cpu_has_avx10;
 }
 #define simd_check_avx512bw_opmask simd_check_avx512bw
 
 static bool simd_check_avx512bw_vl(void)
 {
-    return cpu_has_avx512bw && cpu_policy.feat.avx512vl;
+    return (cpu_has_avx512bw && cpu_policy.feat.avx512vl) ||
+           cpu_has_avx10;
 }
 
 static bool simd_check_avx512vbmi(void)
 {
-    return cpu_has_avx512_vbmi;
+    return cpu_has_avx512_vbmi || cpu_has_avx10;
 }
 
 static bool simd_check_avx512vbmi_vl(void)
 {
-    return cpu_has_avx512_vbmi && cpu_policy.feat.avx512vl;
+    return (cpu_has_avx512_vbmi && cpu_policy.feat.avx512vl) ||
+           cpu_has_avx10;
 }
 
 static bool simd_check_avx512vbmi2(void)
 {
-    return cpu_has_avx512_vbmi2;
+    return cpu_has_avx512_vbmi2 || cpu_has_avx10;
 }
 
 static bool simd_check_sse4_sha(void)
@@ -250,17 +254,18 @@ static bool simd_check_avx512bw_gf_vl(vo
 
 static bool simd_check_avx512vnni(void)
 {
-    return cpu_has_avx512_vnni;
+    return cpu_has_avx512_vnni || cpu_has_avx10;
 }
 
 static bool simd_check_avx512fp16(void)
 {
-    return cpu_has_avx512_fp16;
+    return cpu_has_avx512_fp16 || cpu_has_avx10;
 }
 
 static bool simd_check_avx512fp16_vl(void)
 {
-    return cpu_has_avx512_fp16 && cpu_policy.feat.avx512vl;
+    return (cpu_has_avx512_fp16 && cpu_policy.feat.avx512vl) ||
+           cpu_has_avx10;
 }
 
 static void simd_set_regs(struct cpu_user_regs *regs)
@@ -3238,11 +3243,22 @@ int main(int argc, char **argv)
         rc = x86_emulate(&ctxt, &emulops);
         if ( rc != X86EMUL_OKAY || !check_eip(evex_vmovq_from_mem) )
             goto fail;
-        asm ( "vmovq %1, %%xmm1\n\t"
-              "vpcmpeqq %%zmm0, %%zmm1, %%k0\n"
-              "kmovw %%k0, %0" : "=r" (rc) : "m" (res[8]) );
-        if ( rc != 0xff )
-            goto fail;
+        if ( simd_check_avx512f() )
+        {
+            asm ( "vmovq %1, %%xmm1\n\t"
+                  "vpcmpeqq %%zmm0, %%zmm1, %%k0\n"
+                  "kmovw %%k0, %0" : "=r" (rc) : "m" (res[8]) );
+            if ( rc != 0x00ff )
+                goto fail;
+        }
+        else
+        {
+            asm ( "vmovq %1, %%xmm1\n\t"
+                  "vpcmpeqq %%xmm0, %%xmm1, %%k0\n"
+                  "kmovb %%k0, %0" : "=r" (rc) : "m" (res[8]) );
+            if ( rc != 0x03 )
+                goto fail;
+        }
         printf("okay\n");
     }
     else
@@ -3820,11 +3836,22 @@ int main(int argc, char **argv)
         rc = x86_emulate(&ctxt, &emulops);
         if ( rc != X86EMUL_OKAY || !check_eip(evex_vmovd_from_mem) )
             goto fail;
-        asm ( "vmovd %1, %%xmm0\n\t"
-              "vpcmpeqd %%zmm4, %%zmm0, %%k0\n\t"
-              "kmovw %%k0, %0" : "=r" (rc) : "m" (res[8]) );
-        if ( rc != 0xffff )
-            goto fail;
+        if ( simd_check_avx512f() )
+        {
+            asm ( "vmovd %1, %%xmm0\n\t"
+                  "vpcmpeqd %%zmm4, %%zmm0, %%k0\n\t"
+                  "kmovw %%k0, %0" : "=r" (rc) : "m" (res[8]) );
+            if ( rc != 0xffff )
+                goto fail;
+        }
+        else
+        {
+            asm ( "vmovd %1, %%xmm0\n\t"
+                  "vpcmpeqd %%xmm4, %%xmm0, %%k0\n\t"
+                  "kmovb %%k0, %0" : "=r" (rc) : "m" (res[8]) );
+            if ( rc != 0x0f )
+                goto fail;
+        }
         printf("okay\n");
     }
     else
@@ -4037,11 +4064,22 @@ int main(int argc, char **argv)
         rc = x86_emulate(&ctxt, &emulops);
         if ( (rc != X86EMUL_OKAY) || !check_eip(evex_vmovd_from_reg) )
             goto fail;
-        asm ( "vmovd %1, %%xmm0\n\t"
-              "vpcmpeqd %%zmm1, %%zmm0, %%k0\n\t"
-              "kmovw %%k0, %0" : "=r" (rc) : "m" (res[8]) );
-        if ( rc != 0xffff )
-            goto fail;
+        if ( simd_check_avx512f() )
+        {
+            asm ( "vmovd %1, %%xmm0\n\t"
+                  "vpcmpeqd %%zmm1, %%zmm0, %%k0\n\t"
+                  "kmovw %%k0, %0" : "=r" (rc) : "m" (res[8]) );
+            if ( rc != 0xffff )
+                goto fail;
+        }
+        else
+        {
+            asm ( "vmovd %1, %%xmm0\n\t"
+                  "vpcmpeqd %%xmm1, %%xmm0, %%k0\n\t"
+                  "kmovb %%k0, %0" : "=r" (rc) : "m" (res[8]) );
+            if ( rc != 0x0f )
+                goto fail;
+        }
         printf("okay\n");
     }
     else
@@ -5524,14 +5562,28 @@ int main(int argc, char **argv)
         rc = x86_emulate(&ctxt, &emulops);
         if ( (rc != X86EMUL_OKAY) || !check_eip(vmovsh_from_mem) )
             goto fail;
-        asm volatile ( "kmovw     %2, %%k1\n\t"
-                       "vmovdqu16 %1, %%zmm4%{%%k1%}%{z%}\n\t"
-                       "vpcmpeqw  %%zmm4, %%zmm5, %%k0\n\t"
-                       "kmovw     %%k0, %0"
-                       : "=g" (rc)
-                       : "m" (res[2]), "r" (1) );
-        if ( rc != 0xffff )
-            goto fail;
+        if ( simd_check_avx512fp16() )
+        {
+            asm volatile ( "kmovw     %2, %%k1\n\t"
+                           "vmovdqu16 %1, %%zmm4%{%%k1%}%{z%}\n\t"
+                           "vpcmpeqw  %%zmm4, %%zmm5, %%k0\n\t"
+                           "kmovw     %%k0, %0"
+                           : "=g" (rc)
+                           : "m" (res[2]), "r" (1) );
+            if ( rc != 0xffff )
+                goto fail;
+        }
+        else
+        {
+            asm volatile ( "kmovb     %2, %%k1\n\t"
+                           "vmovdqu16 %1, %%xmm4%{%%k1%}%{z%}\n\t"
+                           "vpcmpeqw  %%xmm4, %%xmm5, %%k0\n\t"
+                           "kmovb     %%k0, %0"
+                           : "=g" (rc)
+                           : "m" (res[2]), "r" (1) );
+            if ( rc != 0xff )
+                goto fail;
+        }
         printf("okay\n");
 
         printf("%-40s", "Testing vmovsh %xmm4,2(%eax){%k3}...");
--- a/tools/tests/x86_emulator/x86-emulate.c
+++ b/tools/tests/x86_emulator/x86-emulate.c
@@ -244,7 +244,7 @@ int emul_test_get_fpu(
             break;
     case X86EMUL_FPU_opmask:
     case X86EMUL_FPU_zmm:
-        if ( cpu_has_avx512f )
+        if ( cpu_has_avx512f || cpu_has_avx10 )
             break;
     default:
         return X86EMUL_UNHANDLEABLE;



From xen-devel-bounces@lists.xenproject.org Thu Apr 09 15:05:45 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 09 Apr 2026 15:05:45 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1277745.1562870 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wAqwz-0002B3-0q; Thu, 09 Apr 2026 15:05:45 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1277745.1562870; Thu, 09 Apr 2026 15:05: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 1wAqwy-0002Aw-Sp; Thu, 09 Apr 2026 15:05:44 +0000
Received: by outflank-mailman (input) for mailman id 1277745;
 Thu, 09 Apr 2026 15:05:43 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <jbeulich@suse.com>) id 1wAqwx-0002AV-A1
 for xen-devel@lists.xenproject.org; Thu, 09 Apr 2026 15:05:43 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wAqww-009E2E-M4
 for xen-devel@lists.xenproject.org; Thu, 09 Apr 2026 17:05:42 +0200
Received: from [10.42.69.1] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <jbeulich@suse.com>)
 id 69d7c026-e002-0a2a0a5209dd-0a2a4501b8e2-48
 for <xen-devel@lists.xenproject.org>; Thu, 09 Apr 2026 17:05:42 +0200
Received: from [209.85.128.45] (helo=mail-wm1-f45.google.com)
 by tlsNG-d62444.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.0)
 (envelope-from <jbeulich@suse.com>)
 id 69d7c046-6fc9-0a2a45010019-d155802de964-3
 for <xen-devel@lists.xenproject.org>; Thu, 09 Apr 2026 17:05:42 +0200
Received: by mail-wm1-f45.google.com with SMTP id
 5b1f17b1804b1-488a29e6110so11341215e9.3
 for <xen-devel@lists.xenproject.org>; Thu, 09 Apr 2026 08:05:42 -0700 (PDT)
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-488cd1a6ea4sm26575255e9.36.2026.04.09.08.05.40
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Thu, 09 Apr 2026 08:05:41 -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=google header.d=suse.com header.i="@suse.com" header.h="Content-Transfer-Encoding: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=1775747142; x=1776351942; darn=lists.xenproject.org;
        h=content-transfer-encoding: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;
        bh=NhKuunXvFsv1rLjvvftvmxfiaqhmI3xo+CXnBaM0yvo=;
        b=C+2eXEUn/ySzySFcai8ASHwu0Y8RMuzS5K2mwFdTSbwYX3ZGCE0Se8AzzCJOt4I5lj
         7KKdtMtR0M088wUhOLp111Ir3qesni1qjCduR7Q4eg7OHl/Ep2r9hBKQh5Ago5BMDur0
         sJUnLPB5YoW4IGIQhZCAwz9DxlKSOxfVDg/h3+91TOLCIIfnipG/j+69Ugex4Kng4RDG
         d+Zi3bpHcpuKaXjGclBncjy9CvokR6wJFQa3yLeCWnUeurOw3gm9pzriiUeX/3i8v7tQ
         ETs3AY4r73FTeIaCyrxy7V7wL4pwHqC1yb+kj4+PredMZRRU5gxgEdcs7OSg9LO8crxx
         Jd2g==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20251104; t=1775747142; x=1776351942;
        h=content-transfer-encoding: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;
        bh=NhKuunXvFsv1rLjvvftvmxfiaqhmI3xo+CXnBaM0yvo=;
        b=q6YbpCnCZGlFWKN77QcM1t3dSZI4cnzwRSnQqKE0FU0Ls0uPtEyE6QHH4AXR1ly8ZY
         hyx0FEC6v55h8yF3n2Hz9YW/U1vSS3Bizn0R1r37V0YU7SEaN9xUuPC7vaXoZDnYYFQy
         wf7mu9R+3AwCYT9PhsSJbBUCXHyFWd/rN8fUYzBxFh9ykbezuss6Wb9QDGLsVx8NT9Dj
         PpEGdke3eiT4Yh5bHBk4Lr3COuNsQkMX59xulrrUTrzjoRAYH6/5m/lIYPRhQguKXAyq
         A1NCrfhR/qFaX6PlCbixW7t1XPZ0AL0PtJgAidsCvoHuT3b5hihlt6tNIz7xtVIEI2gT
         bhTA==
X-Gm-Message-State: AOJu0YyPQEZl95GbSeO/kDMmHWHFpUyNO8/vSj+fDTQBjc/wmnJTTl8+
	vsq1xWSntv5z06wrw0LTrEvVvZJ1w93CN//RREQK6wfZJem4Xb41W/JAjrlIMkIDFYSXgHEa64/
	/MzUf3g==
X-Gm-Gg: AeBDiesmHUQsfEXbAr1hVRQmmVDla4mpoW38gqa/oregMlp8BSbSvqG/FpOhWcLuLkC
	AylPiCB21GyxrF3Az3ME7R17wnO7KV8ZFyNzQDf482LO64PKAufqreSthBWJrVe0S9tdVnYM3UN
	BHC8HeqmKsS8CVTpPLhrCi2aT6oURkkS3LrpWxomcIx16OHXYZZtNz8WdqMF8zqBDwB5EKuTZL2
	3fqb/GBJL9/v56dQVKMx7IFv8tFjrOSbUr122DiK7DZVPtbtnRlIE0XMt/96vf2MuQ83LyRsfOd
	LFajcza84vOII96Zkuh/MEAsViQa8lW8cB+bArXLudjE68JUlcyukM/g6fRhCZW8dhKq29dealv
	LrfNsqF6JoG1EhHC3AOmFThgQDCSzW06pDOOO9PKRD2ZxMuPPAPI28JD70KGLA7nUPt7KR64xta
	yiRFCeL7wfQZr5W+Mxk9ZxQo0fEv/NY+ZhdwvYj1BFxhw/2Mr9fuTO6PaXqCSg+GWIqNtGyqN2L
	JHyxaQ7kwXRAAE=
X-Received: by 2002:a05:600c:8b32:b0:487:1c2:6a56 with SMTP id 5b1f17b1804b1-488996afe1cmr347606665e9.3.1775747141568;
        Thu, 09 Apr 2026 08:05:41 -0700 (PDT)
Message-ID: <26722cdf-707c-486f-93a2-fbfd9d63082e@suse.com>
Date: Thu, 9 Apr 2026 17:05:39 +0200
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: [PATCH v4 07/16] x86emul/test: engage AVX512VL via command line
 option
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.pau@citrix.com>,
 Teddy Astie <teddy.astie@vates.tech>
References: <1e2ff012-b07a-43be-9ba6-290b38d3c97c@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: <1e2ff012-b07a-43be-9ba6-290b38d3c97c@suse.com>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 7bit
X-purgate-ID: tlsNG-d62444/1775747142-B5AED185-EDD14F4A/0/0
X-purgate-type: clean
X-purgate-size: 1482

Now that we have machinery in testcase.mk to set vector length dependent
flags for AVX512 tests, let's avoid using a pragma to enable AVX512VL
insns for the compiler. This way, correct settings are in place from the
very beginning of compilation.

No change to the generated test blobs, and hence no functional change.

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

--- a/tools/tests/x86_emulator/simd.h
+++ b/tools/tests/x86_emulator/simd.h
@@ -215,10 +215,6 @@ DECL_OCTET(half);
 # define __builtin_ia32_shuf_i32x4_512_mask __builtin_ia32_shuf_i32x4_mask
 # define __builtin_ia32_shuf_i64x2_512_mask __builtin_ia32_shuf_i64x2_mask
 
-# if VEC_SIZE > ELEM_SIZE && (defined(VEC_MAX) ? VEC_MAX : VEC_SIZE) < 64
-#  pragma GCC target ( "avx512vl" )
-# endif
-
 # define REN(insn, old, new)                     \
     asm ( ".macro v" #insn #old " o:vararg \n\t" \
           "v" #insn #new " \\o             \n\t" \
--- a/tools/tests/x86_emulator/testcase.mk
+++ b/tools/tests/x86_emulator/testcase.mk
@@ -10,8 +10,8 @@ CFLAGS += -fno-stack-protector -g0 $($(T
 ifneq ($(filter -mavx512%,$($(TESTCASE)-cflags)),)
 
 cflags-vsz64 :=
-cflags-vsz32 := -mprefer-vector-width=256
-cflags-vsz16 := -mprefer-vector-width=128
+cflags-vsz32 := -mavx512vl -mprefer-vector-width=256
+cflags-vsz16 := -mavx512vl -mprefer-vector-width=128
 # Scalar tests don't set VEC_SIZE (and VEC_MAX is used by S/G ones only)
 cflags-vsz   := -mprefer-vector-width=128
 



From xen-devel-bounces@lists.xenproject.org Thu Apr 09 15:06:16 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 09 Apr 2026 15:06:16 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1277753.1562878 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wAqxT-0002fA-6y; Thu, 09 Apr 2026 15:06:15 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1277753.1562878; Thu, 09 Apr 2026 15:06: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 1wAqxT-0002f3-4C; Thu, 09 Apr 2026 15:06:15 +0000
Received: by outflank-mailman (input) for mailman id 1277753;
 Thu, 09 Apr 2026 15:06:13 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <jbeulich@suse.com>) id 1wAqxR-0002eT-6N
 for xen-devel@lists.xenproject.org; Thu, 09 Apr 2026 15:06:13 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wAqxQ-009EAb-IZ
 for xen-devel@lists.xenproject.org; Thu, 09 Apr 2026 17:06:12 +0200
Received: from [10.42.69.7] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <jbeulich@suse.com>)
 id 69d7c05b-e002-0a2a0a5209dd-0a2a45078f46-12
 for <xen-devel@lists.xenproject.org>; Thu, 09 Apr 2026 17:06:12 +0200
Received: from [209.85.128.41] (helo=mail-wm1-f41.google.com)
 by tlsNG-ef75cf.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.0)
 (envelope-from <jbeulich@suse.com>)
 id 69d7c064-ba2d-0a2a45070019-d1558029e56b-3
 for <xen-devel@lists.xenproject.org>; Thu, 09 Apr 2026 17:06:12 +0200
Received: by mail-wm1-f41.google.com with SMTP id
 5b1f17b1804b1-48334ee0aeaso10677475e9.1
 for <xen-devel@lists.xenproject.org>; Thu, 09 Apr 2026 08:06:12 -0700 (PDT)
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-43d1e4f52easm68813087f8f.36.2026.04.09.08.06.10
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Thu, 09 Apr 2026 08:06:11 -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=google header.d=suse.com header.i="@suse.com" header.h="Content-Transfer-Encoding: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=1775747172; x=1776351972; darn=lists.xenproject.org;
        h=content-transfer-encoding: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;
        bh=hJ87OyB/PZNCTzsGel39eNxl/VN8B5OOlfX4awDKRis=;
        b=ehwgfxYBQFYVwBtU0udPjXYQHp/F5Ugvixfygy3Gj8g/yZpOngJD1JI3mB+0MCPCqn
         dHs5lV4aOv4cvyAJkPrreSRCJrXPeID4FKfL2W4msEW9DPNVLqzZ1n5HDMyC8MH5zi1j
         x4aUSWWTMna4v3Z81g+KXDBKE0GrqMYYE/XkCxcPRVwZfREHqJ03OMHM2JYGcp/OTeB+
         JGCyUoS2kQWcuAnPjBiuEHT37YnPILgxJ/9tyVkc3Z6ISj6LUKaVaHErbsck+LOUhLsT
         r5jWDODLSbhrStGVJ8FVLeoRJoQjo2HCynNbpOkdx14KPhlLKMHRLqTtCeID5rMPZ3eJ
         gLGA==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20251104; t=1775747172; x=1776351972;
        h=content-transfer-encoding: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;
        bh=hJ87OyB/PZNCTzsGel39eNxl/VN8B5OOlfX4awDKRis=;
        b=AAWRiSHM0A+Ew2Ixv+hFsxbWbWcIbqBBvjCr6EQmEP96SwCjrz6TO02X09UMWVIeBK
         UigUIQ/DUzEYk0ekDg4Bb2Ow36HRLD1YF1Ii0FCjdxQwewd77xeza5I4bRkMsDMBQnI3
         WVQceXB2+vQQAZwmILDgtrBxa4KZKCVQZA1cwWmpOwkGyy2v7WUPJOw8FAdexTUKflq6
         Cem+GPeKja5jPgw1HWywvCF8YBnHpbx/IyYAUi7Dbes7GF2BeeGrOhDOY/vcj1TTtMyZ
         dKCVb1nGH/VDA3aj4ZepS7BQlGHdXaDw3UtAjbr9LODTzhcu5m7nrl+MGjX2NwjvHIVZ
         7ZeQ==
X-Gm-Message-State: AOJu0Yzus2Pj3iwoQMCesnA30c2426tk2gKvSe00Z/x1qv7+zbyHDc+y
	IhNZT4rKyEQ2rRXmMK9/K+gq6i02jI7hvaiOWbLJbjhDMRkJhkOtRr3rE6DGwpG4MJMXTVozKmD
	j0E34sQ==
X-Gm-Gg: AeBDiet4zz9vJ4YmBLGba9H3Lx3cO6zDtwO4FvEfN5m21A6mu2FxWAdKi0u5tYJagiO
	bZaVddeVqakok3RBcvTqmKKhQnTivWUjk5Pw51LhogiQ3uzw8t/8cT+ezYdjwkgKNPoe7uZVG5p
	fBpNsgq1eInmMLk+RFpENTgF+IhyNmsaN1QQRyTn9ihF4MzioCTUiZZsLxePmC5Olc+AY/VEcS5
	ibO8Lnvfv1MkDcfkEmibLI9EyghNbtJnFg/9xZSX0NLKIZ3oxdcq9JiEM4X1B6IxpOKlsADnb47
	vXFc/8rKCrYwpNgSb5PyIGDY5ksWPCuLrOvBezDuLT+WyTgpYU2f4nrvlH+21VU+1ElvtFBiPES
	BEvG+wcl8ESSY0Cx8eY/alj5y5UUBKuxewLgjI6CvGGMfeJny1BSnr8hGx9iRtfm4ofPyWxFlZq
	RkGX+EK24zYjDtIheSpBnB+fNoRSt7/w1U08eNZElsPomOfuhJozywLVlSARHxp0kNihLXoIsMq
	I/eDZxVkkzs9qo=
X-Received: by 2002:a05:600c:1381:b0:485:6e40:5584 with SMTP id 5b1f17b1804b1-488996afdaemr376676555e9.6.1775747171854;
        Thu, 09 Apr 2026 08:06:11 -0700 (PDT)
Message-ID: <fedd05ce-b952-4d3f-bc47-972b271ddd93@suse.com>
Date: Thu, 9 Apr 2026 17:06:09 +0200
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: [PATCH v4 08/16] x86/CPUID: enable AVX10.2 sub-leaf
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.pau@citrix.com>,
 Teddy Astie <teddy.astie@vates.tech>
References: <1e2ff012-b07a-43be-9ba6-290b38d3c97c@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: <1e2ff012-b07a-43be-9ba6-290b38d3c97c@suse.com>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 7bit
X-purgate-ID: tlsNG-ef75cf/1775747172-1294941E-AC730DAA/0/0
X-purgate-type: clean
X-purgate-size: 5324

The logic is modeled as closely as possible after that of leaf 7
sub-leaf handling.

Signed-off-by: Jan Beulich <jbeulich@suse.com>
---
While the "AVX10" infix is necessary everywhere, the "avx10" prefix on
the bitfield name is redundant with the containing structure's field
name (see "x86emul: support AVX10.2 media insns" for how this looks like
in actual use). Do we want to special-case this in gen-cpuid.py?
---
v4: New.

--- a/tools/libs/light/libxl_cpuid.c
+++ b/tools/libs/light/libxl_cpuid.c
@@ -343,6 +343,7 @@ int libxl_cpuid_parse_config(libxl_cpuid
         MSR_ENTRY(0x10a, CPUID_REG_EAX),
         MSR_ENTRY(0x10a, CPUID_REG_EDX),
         CPUID_ENTRY(0x80000021, NA, CPUID_REG_ECX),
+        CPUID_ENTRY(0x00000024,  1, CPUID_REG_ECX),
 #undef MSR_ENTRY
 #undef CPUID_ENTRY
     };
--- a/tools/misc/xen-cpuid.c
+++ b/tools/misc/xen-cpuid.c
@@ -38,6 +38,7 @@ static const struct {
     { "MSR_ARCH_CAPS.lo",         "m10Al" },
     { "MSR_ARCH_CAPS.hi",         "m10Ah" },
     { "CPUID 0x80000021.ecx",      "e21c" },
+    { "CPUID 0x00000024:1.ecx",    "24c1" },
 };
 
 #define COL_ALIGN "24"
--- a/xen/arch/x86/cpu/common.c
+++ b/xen/arch/x86/cpu/common.c
@@ -547,6 +547,17 @@ void identify_cpu(struct cpuinfo_x86 *c)
 			    &c->x86_capability[FEATURESET_Da1],
 			    &tmp, &tmp, &tmp);
 
+	if (cpu_has(c, X86_FEATURE_AVX10) && c->cpuid_level >= 0x24) {
+		uint32_t max_subleaf;
+
+		cpuid_count(0x24, 0, &max_subleaf, &tmp, &tmp, &tmp);
+		if (max_subleaf >= 1)
+			cpuid_count(0x24, 1,
+				    &tmp, &tmp,
+				    &c->x86_capability[FEATURESET_24c1],
+				    &tmp);
+	}
+
 	if (test_bit(X86_FEATURE_ARCH_CAPS, c->x86_capability)) {
 		val = rdmsr(MSR_ARCH_CAPABILITIES);
 		c->x86_capability[FEATURESET_m10Al] = val;
--- a/xen/arch/x86/cpu-policy.c
+++ b/xen/arch/x86/cpu-policy.c
@@ -277,6 +277,9 @@ static void recalculate_misc(struct cpu_
     p->avx10.raw[0].b &= 0x000700ff;
     p->avx10.raw[0].c = 0;
     p->avx10.raw[0].d = 0;
+    p->avx10.raw[1].a = 0;
+    p->avx10.raw[1].b = 0;
+    p->avx10.raw[1].d = 0;
     if ( !p->feat.avx10 || !p->avx10.version ||
          !p->avx10.vsz512 || !p->avx10.vsz256 || !p->avx10.vsz128 )
     {
--- a/xen/include/public/arch-x86/cpufeatureset.h
+++ b/xen/include/public/arch-x86/cpufeatureset.h
@@ -409,6 +409,9 @@ XEN_CPUFEATURE(ITS_NO,             16*32
 XEN_CPUFEATURE(TSA_SQ_NO,          18*32+ 1) /*A  No Store Queue Transitive Scheduler Attacks */
 XEN_CPUFEATURE(TSA_L1_NO,          18*32+ 2) /*A  No L1D Transitive Scheduler Attacks */
 
+/* Intel-defined CPU features, CPUID level 0x00000024:1.ecx, word 19 */
+XEN_CPUFEATURE(AVX10_V1_AUX,       19*32+ 2) /*   AVX10 V1 Auxiliary Instructions */
+
 #endif /* XEN_CPUFEATURE */
 
 /* Clean up from a default include.  Close the enum (for C). */
--- a/xen/include/xen/lib/x86/cpu-policy.h
+++ b/xen/include/xen/lib/x86/cpu-policy.h
@@ -23,6 +23,7 @@
 #define FEATURESET_m10Al     16 /* 0x0000010a.eax      */
 #define FEATURESET_m10Ah     17 /* 0x0000010a.edx      */
 #define FEATURESET_e21c      18 /* 0x80000021.ecx      */
+#define FEATURESET_24c1      19 /* 0x00000024:1.ecx    */
 
 struct cpuid_leaf
 {
@@ -64,7 +65,7 @@ const char *x86_cpuid_vendor_to_str(unsi
 #define CPUID_GUEST_NR_FEAT       (2u + 1)
 #define CPUID_GUEST_NR_TOPO       (1u + 1)
 #define CPUID_GUEST_NR_XSTATE     (62u + 1)
-#define CPUID_GUEST_NR_AVX10      (0u + 1)
+#define CPUID_GUEST_NR_AVX10      (1u + 1)
 #define CPUID_GUEST_NR_EXTD_INTEL (0x8u + 1)
 #define CPUID_GUEST_NR_EXTD_AMD   (0x21u + 1)
 #define CPUID_GUEST_NR_EXTD       MAX(CPUID_GUEST_NR_EXTD_INTEL, \
@@ -275,6 +276,14 @@ struct cpu_policy
             bool vsz128:1, vsz256:1, vsz512:1;
             uint32_t :13;
             uint32_t /* c */:32, /* d */:32;
+
+            /* Subleaf 1. */
+            uint32_t /* a */:32, /* b */:32;
+            union {
+                uint32_t _24c1;
+                struct { DECL_BITFIELD(24c1); };
+            };
+            uint32_t /* d */:32;
         };
     } avx10;
 
--- a/xen/arch/x86/lib/cpu-policy/cpuid.c
+++ b/xen/arch/x86/lib/cpu-policy/cpuid.c
@@ -82,6 +82,7 @@ void x86_cpu_policy_to_featureset(
     fs[FEATURESET_m10Al]     = p->arch_caps.lo;
     fs[FEATURESET_m10Ah]     = p->arch_caps.hi;
     fs[FEATURESET_e21c]      = p->extd.e21c;
+    fs[FEATURESET_24c1]      = p->avx10._24c1;
 }
 
 void x86_cpu_featureset_to_policy(
@@ -106,6 +107,7 @@ void x86_cpu_featureset_to_policy(
     p->arch_caps.lo          = fs[FEATURESET_m10Al];
     p->arch_caps.hi          = fs[FEATURESET_m10Ah];
     p->extd.e21c             = fs[FEATURESET_e21c];
+    p->avx10._24c1           = fs[FEATURESET_24c1];
 }
 
 void x86_cpu_policy_recalc_synth(struct cpu_policy *p)
--- a/xen/tools/gen-cpuid.py
+++ b/xen/tools/gen-cpuid.py
@@ -310,6 +310,9 @@ def crunch_numbers(state):
         AVX512BW: [AVX512_VBMI, AVX512_VBMI2, AVX512_BITALG, AVX512_BF16,
                    AVX512_FP16, AVX512_BMM],
 
+        # AVX10 discrete features.
+        AVX10: [AVX10_V1_AUX],
+
         # Extensions with VEX/EVEX encodings keyed to a separate feature
         # flag are made dependents of their respective legacy feature.
         PCLMULQDQ: [VPCLMULQDQ],



From xen-devel-bounces@lists.xenproject.org Thu Apr 09 15:06:44 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 09 Apr 2026 15:06:44 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1277762.1562887 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wAqxw-00039Z-Ex; Thu, 09 Apr 2026 15:06:44 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1277762.1562887; Thu, 09 Apr 2026 15:06: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 1wAqxw-00039S-Bu; Thu, 09 Apr 2026 15:06:44 +0000
Received: by outflank-mailman (input) for mailman id 1277762;
 Thu, 09 Apr 2026 15:06:43 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <jbeulich@suse.com>) id 1wAqxu-00039D-Rq
 for xen-devel@lists.xenproject.org; Thu, 09 Apr 2026 15:06:42 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wAqxu-001mos-7T
 for xen-devel@lists.xenproject.org; Thu, 09 Apr 2026 17:06:42 +0200
Received: from [10.42.69.6] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <jbeulich@suse.com>)
 id 69d7c06f-bab6-0a2a0a5309dd-0a2a4506da36-44
 for <xen-devel@lists.xenproject.org>; Thu, 09 Apr 2026 17:06:42 +0200
Received: from [209.85.128.47] (helo=mail-wm1-f47.google.com)
 by tlsNG-16d1c6.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.0)
 (envelope-from <jbeulich@suse.com>)
 id 69d7c082-0df0-0a2a45060019-d155802fe9c2-3
 for <xen-devel@lists.xenproject.org>; Thu, 09 Apr 2026 17:06:42 +0200
Received: by mail-wm1-f47.google.com with SMTP id
 5b1f17b1804b1-488a29e6110so11352895e9.3
 for <xen-devel@lists.xenproject.org>; Thu, 09 Apr 2026 08:06:42 -0700 (PDT)
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-488d5396293sm1691195e9.15.2026.04.09.08.06.40
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Thu, 09 Apr 2026 08:06:40 -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=google header.d=suse.com header.i="@suse.com" header.h="Content-Transfer-Encoding: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=1775747202; x=1776352002; darn=lists.xenproject.org;
        h=content-transfer-encoding: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;
        bh=qQvRunN9MSBUtmSdZnmf6AhTyCHgM+d4bEKRTJwMHYY=;
        b=GFjeBScp0tozZb2BDrHx1cmTiD0T8MQ2BaMtMElpjEfG9lTwrAENbazGglRqkj0YHE
         5qAklEXOPGo4XgmLcUvddwCuiF+mFVc3fNUHCT7RswPHn0DqDbnG8AGGi69yc8QqRjy6
         +YNgOLQNgVFsQMAI+RdpH2I2WFCEhFb0kSR3at8xfUys90Cag/p8SNVszYrnP8F0HsN8
         2FK3MJx5lEIjfYIsHb3GRp0yoiht9k9d9SpIfYbCbP7ZFud1ZvHKhJGMHyOmpnqM9UBS
         yTK8qf9qb6VqXLKI6+raBIYYDh2xIgBQiyoRKT90dFN9nlTyOk87Icohk3h6mlJ46SPk
         9bBA==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20251104; t=1775747202; x=1776352002;
        h=content-transfer-encoding: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;
        bh=qQvRunN9MSBUtmSdZnmf6AhTyCHgM+d4bEKRTJwMHYY=;
        b=l+F+cMwBDwK24s+Q6T9AwNjBtv4krU431XF6S3LBBIvfu3P22EFu4JIfIlBCB2sG/W
         OXtztUy0eS/lBXAWwPDxen3WhexiI7HVv0OWUM9c2MMnqX/+tgqepVbOqDbXybfuO/oW
         hQSFX2jYJOCylVBWqjGadUPXHygDPKo8M4Ys/NIn5gww2rQw1qNEp7jNYifNTSkPv/Tw
         St99RX/UGSiKWrAC+zLjemFQ4QsLqVmUQ8ggzYXaSsoKZflkNtpKVUH9lYEIwEbTQ0NU
         Zk6v5lL+VlNXcEjyBCUs2/pap6LKoiIZTT/4odx4xPputI/Ea0DGThvM47rsRkJVwku0
         UPjg==
X-Gm-Message-State: AOJu0Yy8mLF/6sg1Jlg8RvhX1hgiotMWNwjNRIa76YdBMOgRgMRZF9ha
	FnIikR3cmHQZ+ODoFAQb/aJgakmJ0zQCfElWmbO3UnsWe3Xi5ViANIHLdNHRC+Q4kGQhlIeY96p
	6QUNY6w==
X-Gm-Gg: AeBDietjSDcxlTrLeC4JudQvpFkLDBETAfSSGZub0iCBdUug6QvJI2CpeH8wstUuEyT
	WVTGvJpGnrV1wg8UK0w8zND7fPn/5QEPjPtyQDeLn1RFFx6H+iqKYCfGM92pQS87dXPggfhjESG
	/a74iL0k3iur0GdEAXG1ZT/RaG4uYmz3H5aIk1YcnvjN0Qlvd9XBNoyoURjgmKIxXL9goE14+lR
	EKGelz25wCafkgyr/xkOIt1zMoJ0f0ys6KfaptLjed3Xjd1swTnM0z2Rq3nyHY11bKBg3UpsgzD
	+btVAZm0f7W5w4086ySWhQgTrOPW3TruhwM8QRxjLlnyWUUcBEV28ZA6e3pOm2iIKqGEMhssPwx
	GFjZg9ddubI5a6vpsRVqBTINVJhPP097pEGZv++73kBs/DGlxPQTBt64emmaG6oaqs+unbAtAHC
	lx3CdSDtgmQTM7uKe67NLkR7K8vO0WEg1cG6QjALKbwrukTL0F58Us9pv3ao4GLwmXkRDKpU7c9
	2uXzreGEPHaTTM=
X-Received: by 2002:a05:600c:699a:b0:488:afb5:6a21 with SMTP id 5b1f17b1804b1-488afb57545mr248271585e9.15.1775747201566;
        Thu, 09 Apr 2026 08:06:41 -0700 (PDT)
Message-ID: <71f97a53-2acc-4c4f-811a-ffc9056cfe12@suse.com>
Date: Thu, 9 Apr 2026 17:06:39 +0200
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: [PATCH v4 09/16] x86emul: support AVX10.2 scalar compare insns
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.pau@citrix.com>,
 Teddy Astie <teddy.astie@vates.tech>
References: <1e2ff012-b07a-43be-9ba6-290b38d3c97c@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: <1e2ff012-b07a-43be-9ba6-290b38d3c97c@suse.com>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 7bit
X-purgate-ID: tlsNG-16d1c6/1775747202-5E32F3D8-E46BD14F/0/0
X-purgate-type: clean
X-purgate-size: 7442

Simply clone code from their V{,U}COMIS{S,D,H} counterparts.

While there drop a redundant EVEX.W check from V{,U}COMISH handling.

Signed-off-by: Jan Beulich <jbeulich@suse.com>
---
SDE: -dmr / -future
---
v4: Update encodings to latest spec version. Series re-ordering
    adjustments.
v3: New.

--- a/tools/tests/x86_emulator/evex-disp8.c
+++ b/tools/tests/x86_emulator/evex-disp8.c
@@ -81,6 +81,7 @@ enum esz {
     ESZ_w,
     ESZ_bw,
     ESZ_fp16,
+#define ESZ_bf16 ESZ_fp16
 };
 
 #ifndef __i386__
@@ -720,6 +721,14 @@ static const struct test vpclmulqdq_all[
     INSN(pclmulqdq, 66, 0f3a, 44, vl, q_nb, vl)
 };
 
+static const struct test avx10_2_all[] = {
+    INSN(comisbf16,        66, map5, 2f,    el, bf16, el),
+    INSN_SFP(comx,               0f, 2f),
+    INSN(comxsh,           f3, map5, 2f,    el, fp16, el),
+    INSN_SFP(ucomx,              0f, 2e),
+    INSN(ucomxsh,          f3, map5, 2e,    el, fp16, el),
+};
+
 static const struct test movrs_all[] = {
     INSN(movrsb, f2, map5, 6f, vl,    b, vl),
     INSN(movrsd, f3, map5, 6f, vl, d_nb, vl),
@@ -1154,4 +1163,6 @@ void evex_disp8_test(void *instr, struct
         run(ctxt->addr_size == 64 && cpu_has_movrs, movrs, all);
         run(cpu_has_sm4, sm4, all);
     }
+
+    run(cpu_has_avx10_2, avx10_2, all);
 }
--- a/tools/tests/x86_emulator/predicates.c
+++ b/tools/tests/x86_emulator/predicates.c
@@ -1682,8 +1682,12 @@ static const struct evex {
     { { 0x2d }, 2, T, R, pfx_f2, Wn, LIG }, /* vcvtsd2si */
     { { 0x2e }, 2, T, R, pfx_no, W0, LIG }, /* vucomiss */
     { { 0x2e }, 2, T, R, pfx_66, W1, LIG }, /* vucomisd */
+    { { 0x2e }, 2, T, R, pfx_f2, W1, LIG }, /* vucomxsd */
+    { { 0x2e }, 2, T, R, pfx_f3, W0, LIG }, /* vucomxss */
     { { 0x2f }, 2, T, R, pfx_no, W0, LIG }, /* vcomiss */
     { { 0x2f }, 2, T, R, pfx_66, W1, LIG }, /* vcomisd */
+    { { 0x2f }, 2, T, R, pfx_f2, W1, LIG }, /* vcomxsd */
+    { { 0x2f }, 2, T, R, pfx_f3, W0, LIG }, /* vcomxss */
     { { 0x51 }, 2, T, R, pfx_no, W0, Ln }, /* vsqrtps */
     { { 0x51 }, 2, T, R, pfx_66, W1, Ln }, /* vsqrtpd */
     { { 0x51 }, 2, T, R, pfx_f3, W0, LIG }, /* vsqrtss */
@@ -2102,7 +2106,10 @@ static const struct evex {
     { { 0x2c }, 2, T, R, pfx_f3, Wn, LIG }, /* vcvttsh2si */
     { { 0x2d }, 2, T, R, pfx_f3, Wn, LIG }, /* vcvtsh2si */
     { { 0x2e }, 2, T, R, pfx_no, W0, LIG }, /* vucomish */
+    { { 0x2e }, 2, T, R, pfx_f3, W0, LIG }, /* vucomxsh */
     { { 0x2f }, 2, T, R, pfx_no, W0, LIG }, /* vcomish */
+    { { 0x2f }, 2, T, R, pfx_66, W0, LIG }, /* vcomisbf16 */
+    { { 0x2f }, 2, T, R, pfx_f3, W0, LIG }, /* vcomxsh */
     { { 0x51 }, 2, T, R, pfx_no, W0, Ln }, /* vsqrtph */
     { { 0x51 }, 2, T, R, pfx_f3, W0, LIG }, /* vsqrtsh */
     { { 0x58 }, 2, T, R, pfx_no, W0, Ln }, /* vaddph */
--- a/tools/tests/x86_emulator/x86-emulate.h
+++ b/tools/tests/x86_emulator/x86-emulate.h
@@ -215,6 +215,8 @@ void wrpkru(unsigned int val);
 #define cpu_has_avx_vnni_int16      (cpu_policy.feat.avx_vnni_int16 && \
                                      xcr0_mask(6))
 #define cpu_has_avx10               (cpu_policy.feat.avx10 && xcr0_mask(0xe6))
+#define cpu_has_avx10_2             (cpu_policy.avx10.version >= 2 && \
+                                     xcr0_mask(0xe6))
 
 #define cpu_has_xgetbv1             (cpu_has_xsave && cpu_policy.xstate.xgetbv1)
 
--- a/xen/arch/x86/x86_emulate/decode.c
+++ b/xen/arch/x86/x86_emulate/decode.c
@@ -1515,9 +1515,8 @@ int x86emul_decode(struct x86_emulate_st
                     s->fp16 = true;
                 break;
 
-            case 0x2e: case 0x2f: /* v{,u}comish */
-                if ( !s->evex.pfx )
-                    s->fp16 = true;
+            case 0x2e: case 0x2f: /* v{,u}com{i,x}sh, vcomisbf16 */
+                s->fp16 = true;
                 s->simd_size = simd_none;
                 break;
 
--- a/xen/arch/x86/x86_emulate/private.h
+++ b/xen/arch/x86/x86_emulate/private.h
@@ -318,7 +318,7 @@ struct x86_emulate_state {
     bool lock_prefix;
     bool not_64bit; /* Instruction not available in 64bit. */
     bool fpu_ctrl;  /* Instruction is an FPU control one. */
-    bool fp16;      /* Instruction has half-precision FP source operand. */
+    bool fp16;      /* Instruction has half-precision FP or BF16 source. */
     opcode_desc_t desc;
     union vex vex;
     union evex evex;
@@ -609,10 +609,10 @@ amd_like(const struct x86_emulate_ctxt *
 #define vcpu_has_avx_vnni_int16() (ctxt->cpuid->feat.avx_vnni_int16)
 #define vcpu_has_user_msr()    (ctxt->cpuid->feat.user_msr)
 
-#define vcpu_has_avx10()       (ctxt->cpuid->feat.avx10)
+#define vcpu_has_avx10(minor)  (ctxt->cpuid->avx10.version >= (minor))
 
-#define vcpu_must_have(feat) \
-    generate_exception_if(!vcpu_has_##feat(), X86_EXC_UD)
+#define vcpu_must_have(feat, ...) \
+    generate_exception_if(!vcpu_has_##feat(__VA_ARGS__), X86_EXC_UD)
 
 #ifdef __XEN__
 /*
--- a/xen/arch/x86/x86_emulate/x86_emulate.c
+++ b/xen/arch/x86/x86_emulate/x86_emulate.c
@@ -3825,7 +3825,6 @@ x86_emulate(
     case X86EMUL_OPC_EVEX(5, 0x2e): /* vucomish xmm/m16,xmm */
     case X86EMUL_OPC_EVEX(5, 0x2f): /* vcomish xmm/m16,xmm */
         visa_check(_fp16);
-        generate_exception_if(evex.w, X86_EXC_UD);
         /* fall through */
     CASE_SIMD_PACKED_FP(_EVEX, 0x0f, 0x2e): /* vucomis{s,d} xmm/mem,xmm */
     CASE_SIMD_PACKED_FP(_EVEX, 0x0f, 0x2f): /* vcomis{s,d} xmm/mem,xmm */
@@ -3834,6 +3833,7 @@ x86_emulate(
                                evex.w != evex.pfx),
                               X86_EXC_UD);
         visa_check(f);
+    vcomi_evex:
         if ( !evex.brs )
             avx512_vlen_check(true);
         get_fpu(X86EMUL_FPU_zmm);
@@ -3842,6 +3842,17 @@ x86_emulate(
         op_bytes = 2 << (!state->fp16 + evex.w);
         goto vcomi;
 
+    CASE_SIMD_SCALAR_FP(_EVEX, 0x0f, 0x2e): /* vucomxs{s,d} xmm/mem,xmm */
+    CASE_SIMD_SCALAR_FP(_EVEX, 0x0f, 0x2f): /* vcomxs{s,d} xmm/mem,xmm */
+    case X86EMUL_OPC_EVEX_F3(5, 0x2e):      /* vucomxsh xmm/m16,xmm */
+    case X86EMUL_OPC_EVEX_66(5, 0x2f):      /* vcomisbf16 xmm/m16,xmm */
+    case X86EMUL_OPC_EVEX_F3(5, 0x2f):      /* vcomxsh xmm/m16,xmm */
+        generate_exception_if((evex.reg != 0xf || !evex.RX || evex.opmsk ||
+                               evex.w != (evex.pfx == vex_f2)),
+                              X86_EXC_UD);
+        vcpu_must_have(avx10, 2);
+        goto vcomi_evex;
+
 #endif
 
     case X86EMUL_OPC(0x0f, 0x30): /* wrmsr */
@@ -6831,7 +6842,7 @@ x86_emulate(
 
     case X86EMUL_OPC_EVEX_F3(0x0f38, 0xda): /* vsm4key4 [xyz]mm/mem,[xyz]mm,[xyz]mm */
     case X86EMUL_OPC_EVEX_F2(0x0f38, 0xda): /* vsm4rnds4 [xyz]mm/mem,[xyz]mm,[xyz]mm */
-        vcpu_must_have(avx10);
+        vcpu_must_have(avx10, 1);
         vcpu_must_have(sm4);
         generate_exception_if(evex.w || evex.brs || evex.opmsk, X86_EXC_UD);
         avx512_vlen_check(false);
@@ -7905,7 +7916,7 @@ x86_emulate(
         fallthrough;
     case X86EMUL_OPC_EVEX_F3(5, 0x6f): /* vmovrs{d,q} mem,[xyz]mm{k} */
         generate_exception_if(ea.type != OP_MEM || evex.brs, X86_EXC_UD);
-        vcpu_must_have(avx10);
+        vcpu_must_have(avx10, 1);
         vcpu_must_have(movrs);
         avx512_vlen_check(false);
         op_bytes = 16 << evex.lr;



From xen-devel-bounces@lists.xenproject.org Thu Apr 09 15:07:22 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 09 Apr 2026 15:07:22 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1277775.1562896 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wAqyX-0003jS-Rm; Thu, 09 Apr 2026 15:07:21 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1277775.1562896; Thu, 09 Apr 2026 15:07: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 1wAqyX-0003jL-Or; Thu, 09 Apr 2026 15:07:21 +0000
Received: by outflank-mailman (input) for mailman id 1277775;
 Thu, 09 Apr 2026 15:07:20 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <jbeulich@suse.com>) id 1wAqyW-0003j1-9b
 for xen-devel@lists.xenproject.org; Thu, 09 Apr 2026 15:07:20 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wAqyV-009ESt-LU
 for xen-devel@lists.xenproject.org; Thu, 09 Apr 2026 17:07:19 +0200
Received: from [10.42.69.11] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <jbeulich@suse.com>)
 id 69d7c09d-2eae-0a2a0a5409dd-0a2a450be822-22
 for <xen-devel@lists.xenproject.org>; Thu, 09 Apr 2026 17:07:19 +0200
Received: from [209.85.128.44] (helo=mail-wm1-f44.google.com)
 by tlsNG-42698a.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.0)
 (envelope-from <jbeulich@suse.com>)
 id 69d7c0a7-bca8-0a2a450b0019-d155802ccdea-3
 for <xen-devel@lists.xenproject.org>; Thu, 09 Apr 2026 17:07:19 +0200
Received: by mail-wm1-f44.google.com with SMTP id
 5b1f17b1804b1-48896199cbaso10420395e9.1
 for <xen-devel@lists.xenproject.org>; Thu, 09 Apr 2026 08:07:19 -0700 (PDT)
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-43d5e969bbfsm5385153f8f.1.2026.04.09.08.07.18
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Thu, 09 Apr 2026 08:07:18 -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=google header.d=suse.com header.i="@suse.com" header.h="Content-Transfer-Encoding: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=1775747239; x=1776352039; darn=lists.xenproject.org;
        h=content-transfer-encoding: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;
        bh=l87bP4aeMOmuqw6HhcNJLT6j8J427sYJ+y3dnbAKu68=;
        b=TCTebfC3HFk+p8KPuAJMp0XCe4MRfF7FoZrhZz9H+Gx3N4RoTiKB8qYvYgjdoQTj5J
         T7XJzJnpfL+E/cs8/rd9gDulc9synSJ+QKBkg8xAtlCrgBg7A/K69wumyQMcUZ+I8dND
         8P1HIz3Wt3hvsEUaCWwNLoXUDTX6cjE5gdN6G1wz5hBnriqnD9V2hmPXX9zT4PFl3Wmm
         WNL3vXGbOswjD/UbXLbZj7bfbBPueICN/qamSXg1MB79UOUdFOktuvoUlZXLoEh/iRp3
         i0mHLzkEFs3CeA2Rt3A8cSeGxjiiZa3DFZF+rAC4wlfSsBHu7Tdh/gTKDz9qYrXVYXl8
         a55A==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20251104; t=1775747239; x=1776352039;
        h=content-transfer-encoding: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;
        bh=l87bP4aeMOmuqw6HhcNJLT6j8J427sYJ+y3dnbAKu68=;
        b=eu6TbxlB0Qrrx++n6jvzXmiHagugegYGsmEcw06WHmh0FVuTjefvLS0hYlhkfrQ9Uo
         SOwMiPrzDDI43kXti2I0qTZCyYGdjxltVdemudHnqJ8qvNzfc6DYHNKqXWFr3R+6pUHJ
         BbW5AW/is92aXNgSKW7zpI5T13UiG+cZrH6PPmPtHvOOtzq1TluyKMUIxNVnpr390fjg
         hR8s1x/oc9TxOsM6Ha+Mm99StCSCBiK1G2IWyyUYu/V2tNpfCWKlLPBdEusPhibpceqp
         LysJUNA/DMDS2c8SLoiTWMUFyz2FLIJz+bAIeEkVRNuFkLBqtLk4iGChDJf4Y0z/h8k2
         qntA==
X-Gm-Message-State: AOJu0YyKqYN0ieaU12nVjz3Ol1E3xSbrhqpLB2r1jvEvEcN74kpzfx+N
	6+vre8/MhQff9mnGo2H+tgSyBdiIuN/ZpVKXt1UI8fgg9hW1gXv5DAPaH2zS95JspOdURzPxxjr
	SxisA8Q==
X-Gm-Gg: AeBDieu+sWp+IkHxlSv2EsUtWDtW+9RNZeTSHh0FqwMfrgcR9clafdNvvveq06R25cw
	pNL0WHtMZ6doFxgDx43ef2CHaAd9ivmAg595osShKVhReC4hUMcehnjAxheTofg3mUfcB4pB31F
	Kj8iFLqXbHesIGJmEDrgRzUMVScfbl/z7Po7hpGO1AK/IvRr53bVIvRN1iqPvQvofqFQIrE+w98
	F/6XP7wGtcV0rHzBo0Q0zNPU3EXC0/NOsQDovm7dTXSWA7gSWuOH9dCB0ppx1lmoV9IeJl9E/fI
	b1aKuc4W3eWJHBAxQE1PoncYoYJ4oUnRv+2VCDaLwd8cgRwsbiwzf/05fM4Fly+qr7Z14weLWfU
	hJJDBfaUhpgMUN+f0kcQasoaZ5gejaLRZYnXFdkvXfGjv+JkS1Ll+XH9Mfszb7fKyli3Fbh5LoF
	o7uxitoYSgozq7q+o8MDr+saROwwkcaDxVivsirl/nAaxPvVznBcTebQwEjz8QbOLwTzUcnl39u
	fpF95SPTwY5XJE=
X-Received: by 2002:a05:600c:c083:b0:488:ba5f:984f with SMTP id 5b1f17b1804b1-488ccf8cdacmr40497895e9.6.1775747238915;
        Thu, 09 Apr 2026 08:07:18 -0700 (PDT)
Message-ID: <4aa12415-2135-4e1c-b5a0-dcc4b01f71fc@suse.com>
Date: Thu, 9 Apr 2026 17:07:17 +0200
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: [PATCH v4 10/16] x86emul: support AVX10.2 partial copy insns
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.pau@citrix.com>,
 Teddy Astie <teddy.astie@vates.tech>
References: <1e2ff012-b07a-43be-9ba6-290b38d3c97c@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: <1e2ff012-b07a-43be-9ba6-290b38d3c97c@suse.com>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 7bit
X-purgate-ID: tlsNG-42698a/1775747239-F5DC12A1-5140499A/0/0
X-purgate-type: clean
X-purgate-size: 6364

Extend existing VMOV{Q,W} logic accordingly.

Signed-off-by: Jan Beulich <jbeulich@suse.com>
---
SDE: -dmr / -future
---
v4: Series re-ordering adjustments.
v3: New.

--- a/tools/tests/x86_emulator/evex-disp8.c
+++ b/tools/tests/x86_emulator/evex-disp8.c
@@ -729,6 +729,13 @@ static const struct test avx10_2_all[] =
     INSN(ucomxsh,          f3, map5, 2e,    el, fp16, el),
 };
 
+static const struct test avx10_2_128[] = {
+    INSN(movd, f3,   0f, 7e, el,    d, el),
+    INSN(movd, 66,   0f, d6, el,    d, el),
+    INSN(movw, f3, map5, 6e, el, fp16, el),
+    INSN(movw, f3, map5, 7e, el, fp16, el),
+};
+
 static const struct test movrs_all[] = {
     INSN(movrsb, f2, map5, 6f, vl,    b, vl),
     INSN(movrsd, f3, map5, 6f, vl, d_nb, vl),
@@ -1165,4 +1172,5 @@ void evex_disp8_test(void *instr, struct
     }
 
     run(cpu_has_avx10_2, avx10_2, all);
+    run(cpu_has_avx10_2, avx10_2, 128);
 }
--- a/tools/tests/x86_emulator/predicates.c
+++ b/tools/tests/x86_emulator/predicates.c
@@ -1782,7 +1782,7 @@ static const struct evex {
     { { 0x7b }, 2, T, R, pfx_f3, Wn, LIG }, /* vcvtusi2ss */
     { { 0x7b }, 2, T, R, pfx_f2, Wn, LIG }, /* vcvtusi2sd */
     { { 0x7e }, 2, T, W, pfx_66, Wn, L0 }, /* vmov{d,q} */
-    { { 0x7e }, 2, T, R, pfx_f3, W1, L0 }, /* vmovq */
+    { { 0x7e }, 2, T, R, pfx_f3, Wn, L0 }, /* vmov{d,q} */
     { { 0x7f }, 2, T, W, pfx_66, Wn, Ln }, /* vmovdqa{32,64} */
     { { 0x7f }, 2, T, W, pfx_f3, Wn, Ln }, /* vmovdqu{32,64} */
     { { 0x7f }, 2, T, W, pfx_f2, Wn, Ln }, /* vmovdqu{8,16} */
@@ -1799,7 +1799,7 @@ static const struct evex {
     { { 0xd3 }, 2, T, R, pfx_66, W1, Ln }, /* vpsrlq */
     { { 0xd4 }, 2, T, R, pfx_66, W1, Ln }, /* vpaddq */
     { { 0xd5 }, 2, T, R, pfx_66, WIG, Ln }, /* vpmullw */
-    { { 0xd6 }, 2, T, W, pfx_66, W1, L0 }, /* vmovq */
+    { { 0xd6 }, 2, T, W, pfx_66, Wn, L0 }, /* vmov{d,q} */
     { { 0xd8 }, 2, T, R, pfx_66, WIG, Ln }, /* vpsubusb */
     { { 0xd9 }, 2, T, R, pfx_66, WIG, Ln }, /* vpsubusw */
     { { 0xda }, 2, T, R, pfx_66, WIG, Ln }, /* vpminub */
@@ -2133,6 +2133,7 @@ static const struct evex {
     { { 0x5f }, 2, T, R, pfx_no, W0, Ln }, /* vmaxph */
     { { 0x5f }, 2, T, R, pfx_f3, W0, LIG }, /* vmaxsh */
     { { 0x6e }, 2, T, R, pfx_66, WIG, L0 }, /* vmovw */
+    { { 0x6e }, 2, T, R, pfx_f3, W0, L0 }, /* vmovw */
     { { 0x6f }, 2, T, R, pfx_f3, Wn, Ln }, /* vmovrs{d,q} */
     { { 0x6f }, 2, T, R, pfx_f2, Wn, Ln }, /* vmovrs{b,w} */
     { { 0x78 }, 2, T, R, pfx_no, W0, Ln }, /* vcvttph2udq */
@@ -2153,6 +2154,7 @@ static const struct evex {
     { { 0x7d }, 2, T, R, pfx_f3, W0, Ln }, /* vcvtw2ph */
     { { 0x7d }, 2, T, R, pfx_f2, W0, Ln }, /* vcvtuwph */
     { { 0x7e }, 2, T, W, pfx_66, WIG, L0 }, /* vmovw */
+    { { 0x7e }, 2, T, W, pfx_f3, W0, L0 }, /* vmovw */
 }, evex_map6[] = {
     { { 0x13 }, 2, T, R, pfx_66, W0, Ln }, /* vcvtph2psx */
     { { 0x13 }, 2, T, R, pfx_no, W0, LIG }, /* vcvtsh2ss */
--- a/xen/arch/x86/x86_emulate/decode.c
+++ b/xen/arch/x86/x86_emulate/decode.c
@@ -293,7 +293,7 @@ static const struct twobyte_table {
     [0xd0] = { DstImplicit|SrcMem|ModRM, simd_other },
     [0xd1 ... 0xd3] = { DstImplicit|SrcMem|ModRM, simd_128, 4 },
     [0xd4 ... 0xd5] = { DstImplicit|SrcMem|ModRM, simd_packed_int, d8s_vl },
-    [0xd6] = { DstMem|SrcImplicit|ModRM|Mov, simd_other, 3 },
+    [0xd6] = { DstMem|SrcImplicit|ModRM|Mov, simd_other, d8s_dq },
     [0xd7] = { DstReg|SrcImplicit|ModRM|Mov },
     [0xd8 ... 0xdf] = { DstImplicit|SrcMem|ModRM, simd_packed_int, d8s_vl },
     [0xe0] = { DstImplicit|SrcMem|ModRM, simd_packed_int, d8s_vl },
@@ -803,7 +803,7 @@ decode_twobyte(struct x86_emulate_state
         if ( s->vex.pfx == vex_f3 ) /* movq xmm/m64,xmm */
         {
     case X86EMUL_OPC_VEX_F3(0, 0x7e): /* vmovq xmm/m64,xmm */
-    case X86EMUL_OPC_EVEX_F3(0, 0x7e): /* vmovq xmm/m64,xmm */
+    case X86EMUL_OPC_EVEX_F3(0, 0x7e): /* vmov{d,q} xmm/mem,xmm */
             s->desc = DstImplicit | SrcMem | TwoOp;
             s->simd_size = simd_other;
             /* Avoid the s->desc clobbering of TwoOp below. */
@@ -1416,7 +1416,7 @@ int x86emul_decode(struct x86_emulate_st
                 break;
 
             case 0x7e: /* vmovq xmm/m64,xmm needs special casing */
-                if ( disp8scale == 2 && s->evex.pfx == vex_f3 )
+                if ( disp8scale == 2 && s->evex.pfx == vex_f3 && s->evex.w )
                     disp8scale = 3;
                 break;
 
@@ -1525,13 +1525,13 @@ int x86emul_decode(struct x86_emulate_st
                     s->fp16 = true;
                 break;
 
-            case 0x6e: /* vmovw r/m16, xmm */
+            case 0x6e: /* vmovw r/x/m16, xmm */
                 d = (d & ~SrcMask) | SrcMem16;
                 /* fall through */
-            case 0x7e: /* vmovw xmm, r/m16 */
+            case 0x7e: /* vmovw xmm, r/x/m16 */
+                s->fp16 = true;
                 if ( s->evex.pfx == vex_66 )
-                    s->fp16 = true;
-                s->simd_size = simd_none;
+                    s->simd_size = simd_none;
                 break;
 
             case 0x78: case 0x79: /* vcvt{,t}ph2u{d,q}q, vcvt{,t}sh2usi */
--- a/xen/arch/x86/x86_emulate/x86_emulate.c
+++ b/xen/arch/x86/x86_emulate/x86_emulate.c
@@ -4938,13 +4938,17 @@ x86_emulate(
         op_bytes = 8;
         goto simd_0f_int;
 
-    case X86EMUL_OPC_EVEX_F3(0x0f, 0x7e): /* vmovq xmm/m64,xmm */
-    case X86EMUL_OPC_EVEX_66(0x0f, 0xd6): /* vmovq xmm,xmm/m64 */
-        generate_exception_if(evex.lr || !evex.w || evex.opmsk || evex.brs,
-                              X86_EXC_UD);
-        visa_check(f);
+    case X86EMUL_OPC_EVEX_F3(0x0f, 0x7e): /* vmov{d,q} xmm/mem,xmm */
+    case X86EMUL_OPC_EVEX_66(0x0f, 0xd6): /* vmov{d,q} xmm,xmm/mem */
+    case X86EMUL_OPC_EVEX_F3(5, 0x6e): /* vmovw xmm/m16,xmm */
+    case X86EMUL_OPC_EVEX_F3(5, 0x7e): /* vmovw xmm,xmm/m16 */
+        generate_exception_if(evex.lr || evex.opmsk || evex.brs, X86_EXC_UD);
+        if ( evex.w )
+            visa_check(f);
+        else
+            vcpu_must_have(avx10, 2);
         d |= TwoOp;
-        op_bytes = 8;
+        op_bytes = 2 << (!state->fp16 + evex.w);
         goto simd_zmm;
 
 #endif /* !X86EMUL_NO_SIMD */



From xen-devel-bounces@lists.xenproject.org Thu Apr 09 15:07:43 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 09 Apr 2026 15:07:43 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1277784.1562906 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wAqyt-000498-37; Thu, 09 Apr 2026 15:07:43 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1277784.1562906; Thu, 09 Apr 2026 15: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 1wAqyt-000491-0U; Thu, 09 Apr 2026 15:07:43 +0000
Received: by outflank-mailman (input) for mailman id 1277784;
 Thu, 09 Apr 2026 15:07:41 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <jbeulich@suse.com>) id 1wAqyr-00048P-EY
 for xen-devel@lists.xenproject.org; Thu, 09 Apr 2026 15:07:41 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wAqyq-005w2d-Qn
 for xen-devel@lists.xenproject.org; Thu, 09 Apr 2026 17:07:40 +0200
Received: from [10.42.69.7] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <jbeulich@suse.com>)
 id 69d7c0b9-5cb7-0a2a0a5109dd-0a2a4507d08a-6
 for <xen-devel@lists.xenproject.org>; Thu, 09 Apr 2026 17:07:40 +0200
Received: from [209.85.221.52] (helo=mail-wr1-f52.google.com)
 by tlsNG-ef75cf.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.0)
 (envelope-from <jbeulich@suse.com>)
 id 69d7c0bc-ba2d-0a2a45070019-d155dd34b417-3
 for <xen-devel@lists.xenproject.org>; Thu, 09 Apr 2026 17:07:40 +0200
Received: by mail-wr1-f52.google.com with SMTP id
 ffacd0b85a97d-43cf5ad500fso834828f8f.0
 for <xen-devel@lists.xenproject.org>; Thu, 09 Apr 2026 08:07:40 -0700 (PDT)
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-43d473b8c1esm28326326f8f.12.2026.04.09.08.07.39
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Thu, 09 Apr 2026 08:07:39 -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=google header.d=suse.com header.i="@suse.com" header.h="Content-Transfer-Encoding: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=1775747260; x=1776352060; darn=lists.xenproject.org;
        h=content-transfer-encoding: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;
        bh=kqkwKq4/c4zisfsQksvtWDIfvwwA5snoHjlKEQpljBA=;
        b=cTo6ZLuxDx1ak8GOUcmWGaPx7ih/W5ukfqr1A4xNGvBCXJ4pnyJkK7NSJfS+RsQFfm
         PlVwd5lLsr0/VjhmKVm1zIeETMhWkDbcSZtK1HD5tbf/9qHXUNiHGEt8Rx33xyfZ6rmm
         PZuxYnyHixdhM8j/Ri556JGlRzRBto0tYPF6Djknz+yGdR5xJeSY4Pc9pcb+uvUp8FeE
         E01DNEW27Pw/akYJvLLmX97a4DXJEsy167hS3fAU/1Ne2gh5zn4JB/V0u0ymqXIsY40r
         2wbHcBOXzEEsCM+PJuK33ePU0jg05ms2U7jwpAD7Z/W39XG7OiogRSJUijn/QPTXv5T2
         x0ug==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20251104; t=1775747260; x=1776352060;
        h=content-transfer-encoding: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;
        bh=kqkwKq4/c4zisfsQksvtWDIfvwwA5snoHjlKEQpljBA=;
        b=pdnjOb6bMzxzEdNDw9q+jWgwS4scKLK9m/06vZ6jz1cSAGeOuSOYahlNjGP2567iga
         BMywi9qpqOoicJgN/UtvsFWHjDTKsxhumcqZusasDMjBUdZnXw466AyUUfjPKHlfK6HH
         juDpJwhipy1qapueQCViCV90ZYb6zzcjOkkE179dw2uKXSycyQiARRHkf5GkRgupl2ZO
         E+uBlvuiH/tboptrDFfQov091uHftI+lMt+Wxtvrq/qGT7NSU2l3cCzJhcSqeAIONzD2
         h7TUrYDBXJSHyLyRfqUv1QTrpQ3zTEo03pDdRbptOM+OE7MMedy/TVx0CCt7PXFPU0tH
         ORZg==
X-Gm-Message-State: AOJu0YxlD5Vn0OH5lvfdxRKAxPJoMj420/hKIvSmcKrhzkhzlKjWsxnj
	r1EH3v5mRPvYscN2B4bKrn6fiNoqom7x351JoN+QwxEfT8bGNOntHWzvmoYIQlCSiYm9RpIv6qU
	Apjm2nA==
X-Gm-Gg: AeBDies4FgEozA371QfXxPb/b0Qk7RcG+gtLQtJSmiF5DHBUDaUY2lK6IF6CcBKhHJ0
	SHpjjc6daigJ7hKOJQpA80kYSBk4sGTJVD1wHhLahyVEoWI1KfKKfTzfpyT/n2oR08FYv8Gvk3g
	rPpV1BIcBD7uUK14ngm5CdsXauTZV6beBWqrQbY2pLYZnCiOrLIotUCC96wke3V3EFtv4CfQubf
	f266F5Dd+f3TeG1Zm52b1/DZQGZuXy7pRVxlpt/1+yEie1ZbNrmB9YnvGvT/dfvxQskwjS4UScl
	roLzL7MJxiT65B3odcmK8zgDV9Lz9+7CijUUtoXvCGlpIGczLMHGzAHIFW2kZZnB6wwmcoZX5eU
	UeNp+qD/E8PJEySQ6YAjiwoyy88tV+mr5leMx49QHE1s5FtAnA9gfPBfJfFnvtT9aSKPvC6NZ8Z
	CCR93C1xfj8o/feaTKRzG6r46ex2jhLtJx+MWLfUA16n+I6EbVlsTpAsUmjee1aJWZS5HnxH2wm
	dnRgL572j+c5m0=
X-Received: by 2002:a05:6000:2409:b0:43b:5b25:67f8 with SMTP id ffacd0b85a97d-43d292a92e4mr38893540f8f.20.1775747260064;
        Thu, 09 Apr 2026 08:07:40 -0700 (PDT)
Message-ID: <f9a23108-caa0-456c-9e0b-f14dcb79c5fb@suse.com>
Date: Thu, 9 Apr 2026 17:07:38 +0200
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: [PATCH v4 11/16] x86emul: support AVX10.2 media insns
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.pau@citrix.com>,
 Teddy Astie <teddy.astie@vates.tech>
References: <1e2ff012-b07a-43be-9ba6-290b38d3c97c@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: <1e2ff012-b07a-43be-9ba6-290b38d3c97c@suse.com>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 7bit
X-purgate-ID: tlsNG-ef75cf/1775747260-8B94141E-E5DE21AF/0/0
X-purgate-type: clean
X-purgate-size: 7336

These are all very similar to various existing insns.

Signed-off-by: Jan Beulich <jbeulich@suse.com>
---
SDE: -dmr / -future
---
In evex-disp8.c, should we separately have avx10_v1_aux_all[]? If so, all
the convert insns would also need moving/copying there.
---
v4: Series re-ordering adjustments. Update to spec version 6.
v3: New.

--- a/tools/tests/x86_emulator/evex-disp8.c
+++ b/tools/tests/x86_emulator/evex-disp8.c
@@ -725,6 +725,20 @@ static const struct test avx10_2_all[] =
     INSN(comisbf16,        66, map5, 2f,    el, bf16, el),
     INSN_SFP(comx,               0f, 2f),
     INSN(comxsh,           f3, map5, 2f,    el, fp16, el),
+    INSN(dpphps,             , 0f38, 52,    vl,    d, vl),
+    INSN(mpsadbw,          f3, 0f3a, 42,    vl, d_nb, vl),
+    INSN(pdpbssd,          f2, 0f38, 50,    vl,    d, vl),
+    INSN(pdpbssds,         f2, 0f38, 51,    vl,    d, vl),
+    INSN(pdpbsud,          f3, 0f38, 50,    vl,    d, vl),
+    INSN(pdpbsuds,         f3, 0f38, 51,    vl,    d, vl),
+    INSN(pdpbuud,            , 0f38, 50,    vl,    d, vl),
+    INSN(pdpbuuds,           , 0f38, 51,    vl,    d, vl),
+    INSN(pdpwsud,          f3, 0f38, d2,    vl,    d, vl),
+    INSN(pdpwsuds,         f3, 0f38, d3,    vl,    d, vl),
+    INSN(pdpwusd,          66, 0f38, d2,    vl,    d, vl),
+    INSN(pdpwusds,         66, 0f38, d3,    vl,    d, vl),
+    INSN(pdpwuud,            , 0f38, d2,    vl,    d, vl),
+    INSN(pdpwuuds,           , 0f38, d3,    vl,    d, vl),
     INSN_SFP(ucomx,              0f, 2e),
     INSN(ucomxsh,          f3, map5, 2e,    el, fp16, el),
 };
--- a/tools/tests/x86_emulator/predicates.c
+++ b/tools/tests/x86_emulator/predicates.c
@@ -1927,8 +1927,15 @@ static const struct evex {
     { { 0x4d }, 2, T, R, pfx_66, Wn, LIG }, /* vrcp14s{s,d} */
     { { 0x4e }, 2, T, R, pfx_66, Wn, Ln }, /* vrsqrt14p{s,d} */
     { { 0x4f }, 2, T, R, pfx_66, Wn, LIG }, /* vrsqrt14s{s,d} */
+    { { 0x50 }, 2, T, R, pfx_no, W0, Ln }, /* vpdpbuud */
     { { 0x50 }, 2, T, R, pfx_66, W0, Ln }, /* vpdpbusd */
+    { { 0x50 }, 2, T, R, pfx_f3, W0, Ln }, /* vpdpbsud */
+    { { 0x50 }, 2, T, R, pfx_f2, W0, Ln }, /* vpdpbssd */
+    { { 0x51 }, 2, T, R, pfx_no, W0, Ln }, /* vpdpbuuds */
     { { 0x51 }, 2, T, R, pfx_66, W0, Ln }, /* vpdpbusds */
+    { { 0x51 }, 2, T, R, pfx_f3, W0, Ln }, /* vpdpbsuds */
+    { { 0x51 }, 2, T, R, pfx_f2, W0, Ln }, /* vpdpbssds */
+    { { 0x52 }, 2, T, R, pfx_no, W0, Ln }, /* vdpphps */
     { { 0x52 }, 2, T, R, pfx_66, W0, Ln }, /* vpdpwssd */
     { { 0x52 }, 2, T, R, pfx_f3, W0, Ln }, /* vdpbf16ps */
     { { 0x52 }, 2, T, R, pfx_f2, W0, L2 }, /* vp4dpwssd */
@@ -2029,6 +2036,12 @@ static const struct evex {
     { { 0xcc }, 2, T, R, pfx_66, Wn, L2 }, /* vrsqrt28p{s,d} */
     { { 0xcd }, 2, T, R, pfx_66, Wn, LIG }, /* vrsqrt28s{s,d} */
     { { 0xcf }, 2, T, R, pfx_66, W0, Ln }, /* vgf2p8mulb */
+    { { 0xd2 }, 2, T, R, pfx_no, W0, Ln }, /* vpdpwuud */
+    { { 0xd2 }, 2, T, R, pfx_66, W0, Ln }, /* vpdpwusd */
+    { { 0xd2 }, 2, T, R, pfx_f3, W0, Ln }, /* vpdpwsud */
+    { { 0xd3 }, 2, T, R, pfx_no, W0, Ln }, /* vpdpwuuds */
+    { { 0xd3 }, 2, T, R, pfx_66, W0, Ln }, /* vpdpwusds */
+    { { 0xd3 }, 2, T, R, pfx_f3, W0, Ln }, /* vpdpwsuds */
     { { 0xda }, 2, T, R, pfx_f3, W0, Ln }, /* vsm4key4 */
     { { 0xda }, 2, T, R, pfx_f2, W0, Ln }, /* vsm4rnds4 */
     { { 0xdc }, 2, T, R, pfx_66, WIG, Ln }, /* vaesenc */
@@ -2075,6 +2088,7 @@ static const struct evex {
     { { 0x3e }, 3, T, R, pfx_66, Wn, Ln }, /* vpcmpu{b,w} */
     { { 0x3f }, 3, T, R, pfx_66, Wn, Ln }, /* vpcmp{b,w} */
     { { 0x42 }, 3, T, R, pfx_66, W0, Ln }, /* vdbpsadbw */
+    { { 0x42 }, 3, T, R, pfx_f3, W0, Ln }, /* vmpsadbw */
     { { 0x43 }, 3, T, R, pfx_66, Wn, L1|L2 }, /* vshufi{32x4,64x2} */
     { { 0x44 }, 3, T, R, pfx_66, WIG, Ln }, /* vpclmulqdq */
     { { 0x50 }, 3, T, R, pfx_66, Wn, Ln }, /* vrangep{s,d} */
--- a/xen/arch/x86/x86_emulate/decode.c
+++ b/xen/arch/x86/x86_emulate/decode.c
@@ -434,8 +434,8 @@ static const struct ext0f38_table {
     [0xcb] = { .simd_size = simd_other, .d8s = d8s_vl },
     [0xcc ... 0xcd] = { .simd_size = simd_other, .two_op = 1, .d8s = d8s_vl },
     [0xcf] = { .simd_size = simd_packed_int, .d8s = d8s_vl },
-    [0xd2] = { .simd_size = simd_other },
-    [0xd3] = { .simd_size = simd_other },
+    [0xd2] = { .simd_size = simd_other, .d8s = d8s_vl },
+    [0xd3] = { .simd_size = simd_other, .d8s = d8s_vl },
     [0xd6] = { .simd_size = simd_other, .d8s = d8s_vl },
     [0xd7] = { .simd_size = simd_scalar_vexw, .d8s = d8s_dq },
     [0xda] = { .simd_size = simd_other, .d8s = d8s_vl },
--- a/xen/arch/x86/x86_emulate/x86_emulate.c
+++ b/xen/arch/x86/x86_emulate/x86_emulate.c
@@ -6169,6 +6169,30 @@ x86_emulate(
         avx512_vlen_check(true);
         goto simd_zmm;
 
+    case X86EMUL_OPC_EVEX   (0x0f38, 0x50): /* vpdpbuud [xyz]mm/mem,[xyz]mm,[xyz]mm{k} */
+    case X86EMUL_OPC_EVEX_F3(0x0f38, 0x50): /* vpdpbsud [xyz]mm/mem,[xyz]mm,[xyz]mm{k} */
+    case X86EMUL_OPC_EVEX_F2(0x0f38, 0x50): /* vpdpbssd [xyz]mm/mem,[xyz]mm,[xyz]mm{k} */
+    case X86EMUL_OPC_EVEX   (0x0f38, 0x51): /* vpdpbuuds [xyz]mm/mem,[xyz]mm,[xyz]mm{k} */
+    case X86EMUL_OPC_EVEX_F3(0x0f38, 0x51): /* vpdpbsuds [xyz]mm/mem,[xyz]mm,[xyz]mm{k} */
+    case X86EMUL_OPC_EVEX_F2(0x0f38, 0x51): /* vpdpbssds [xyz]mm/mem,[xyz]mm,[xyz]mm{k} */
+    case X86EMUL_OPC_EVEX   (0x0f38, 0xd2): /* vpdpwuud [xyz]mm/mem,[xyz]mm,[xyz]mm{k} */
+    case X86EMUL_OPC_EVEX_66(0x0f38, 0xd2): /* vpdpwusd [xyz]mm/mem,[xyz]mm,[xyz]mm{k} */
+    case X86EMUL_OPC_EVEX_F3(0x0f38, 0xd2): /* vpdpwsud [xyz]mm/mem,[xyz]mm,[xyz]mm{k} */
+    case X86EMUL_OPC_EVEX   (0x0f38, 0xd3): /* vpdpwuuds [xyz]mm/mem,[xyz]mm,[xyz]mm{k} */
+    case X86EMUL_OPC_EVEX_66(0x0f38, 0xd3): /* vpdpwusds [xyz]mm/mem,[xyz]mm,[xyz]mm{k} */
+    case X86EMUL_OPC_EVEX_F3(0x0f38, 0xd3): /* vpdpwsuds [xyz]mm/mem,[xyz]mm,[xyz]mm{k} */
+        generate_exception_if(evex.w, X86_EXC_UD);
+        if ( !cp->avx10.avx10_v1_aux )
+            vcpu_must_have(avx10, 2);
+        op_bytes = 16 << evex.lr;
+        goto avx512f_no_sae;
+
+    case X86EMUL_OPC_EVEX   (0x0f38, 0x52): /* vdpphps [xyz]mm/mem,[xyz]mm,[xyz]mm{k} */
+        generate_exception_if(evex.w, X86_EXC_UD);
+        vcpu_must_have(avx10, 2);
+        op_bytes = 16 << evex.lr;
+        goto avx512f_no_sae;
+
     case X86EMUL_OPC_EVEX_66(0x0f38, 0x8f): /* vpshufbitqmb [xyz]mm/mem,[xyz]mm,k{k} */
         generate_exception_if(evex.w || !evex.r || !evex.R || evex.z, X86_EXC_UD);
         /* fall through */
@@ -7635,6 +7659,14 @@ x86_emulate(
         visa_check(bw);
         goto opmask_shift_imm;
 
+    case X86EMUL_OPC_EVEX_F3(0x0f3a, 0x42): /* vmpsadbw $imm8,[xyz]mm/mem,[xyz]mm,[xyz]mm{k} */
+        generate_exception_if(evex.w || evex.brs, X86_EXC_UD);
+        vcpu_must_have(avx10, 2);
+        avx512_vlen_check(false);
+        op_bytes = 16 << evex.lr;
+        fault_suppression = false;
+        goto simd_imm8_zmm;
+
     case X86EMUL_OPC_66(0x0f3a, 0x44):     /* pclmulqdq $imm8,xmm/m128,xmm */
     case X86EMUL_OPC_VEX_66(0x0f3a, 0x44): /* vpclmulqdq $imm8,{x,y}mm/mem,{x,y}mm,{x,y}mm */
         host_and_vcpu_must_have(pclmulqdq);



From xen-devel-bounces@lists.xenproject.org Thu Apr 09 15:09:08 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 09 Apr 2026 15:09:08 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1277798.1562916 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wAr0F-0004pZ-EI; Thu, 09 Apr 2026 15:09:07 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1277798.1562916; Thu, 09 Apr 2026 15:09: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 1wAr0F-0004pS-9y; Thu, 09 Apr 2026 15:09:07 +0000
Received: by outflank-mailman (input) for mailman id 1277798;
 Thu, 09 Apr 2026 15:09:06 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <jbeulich@suse.com>) id 1wAr0D-0004pM-Rl
 for xen-devel@lists.xenproject.org; Thu, 09 Apr 2026 15:09:05 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wAr0D-002AGJ-47
 for xen-devel@lists.xenproject.org; Thu, 09 Apr 2026 17:09:05 +0200
Received: from [10.42.69.10] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <jbeulich@suse.com>)
 id 69d7c103-2eae-0a2a0a5409dd-0a2a450acabc-24
 for <xen-devel@lists.xenproject.org>; Thu, 09 Apr 2026 17:09:04 +0200
Received: from [209.85.128.44] (helo=mail-wm1-f44.google.com)
 by tlsNG-4011c0.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.0)
 (envelope-from <jbeulich@suse.com>)
 id 69d7c110-ee98-0a2a450a0019-d155802cacfd-3
 for <xen-devel@lists.xenproject.org>; Thu, 09 Apr 2026 17:09:04 +0200
Received: by mail-wm1-f44.google.com with SMTP id
 5b1f17b1804b1-488a14c31eeso8150265e9.0
 for <xen-devel@lists.xenproject.org>; Thu, 09 Apr 2026 08:09:04 -0700 (PDT)
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-488d531ff0dsm3240785e9.6.2026.04.09.08.09.03
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Thu, 09 Apr 2026 08:09:03 -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=google header.d=suse.com header.i="@suse.com" header.h="Content-Transfer-Encoding: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=1775747344; x=1776352144; darn=lists.xenproject.org;
        h=content-transfer-encoding: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;
        bh=o+nd0iZcHqkBTLveW2Hm+V7Wyz5pQcbOPXbkBBL3fLQ=;
        b=Wcgtf6hzLqzmNhM2cNhV6b2KIu9WRKPWbHubtFZlKf364lpmRAR0ypkC9s0cQnkzAw
         btLIGSUBoEAM6eiKFLUjOQ4zyMy2Stx5scuQLdmWX4zLrbg+izB9Dl4A3igq1eNdktdP
         ZP7Z79i2o8wvyY5TotAP7qhdyS8BLzQkNgyoEH9k/iyA1VlNKgN+pu+D7CVoNJ7O4z0u
         7c7ypItzNhG9DVJCjWo/yjdQYfmqzhOsnHVTA+Tc69mCF6uX8mdCkcvSC4RQSLkKXUYS
         WBthB65klk2MIxZRexvi83OjZT+5Nh50av4p6rCOHqZ282ECn0T97d9PMEA5/8Qrp8lT
         o2yg==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20251104; t=1775747344; x=1776352144;
        h=content-transfer-encoding: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;
        bh=o+nd0iZcHqkBTLveW2Hm+V7Wyz5pQcbOPXbkBBL3fLQ=;
        b=Sg3sOYUHW8I3oed51IJC2IlkWeq1g8OhkJMPUV92KSEzWXObNr+E9vLlmw955rbaR1
         yNVOT1xiZoVvqH3gn3VSjraHesItudATqm0QjU4LcitUCdDS6JCXbZ586oouxSVstqgo
         q/9sVRVfOswHEmOIUhw26UWDj9ep4vpP1u3Jv72wCkxtvYA6SCfHKSl4DzGRWU/EHjld
         /DlYNA+jUQPg+PILJ69n8MmQA1iYBEHiRlM9nZNogg5Bx4mImzcSFOf76Co+QLHB+urR
         Ec6QVZwCk4D/M+Kz7pt8Ks1kMr3DFUYaCHZCYKn1ZDQVSTKBkITTO6nKLJn72BVGIZF+
         HC6A==
X-Gm-Message-State: AOJu0YyEETKP4VSFhjFBNNornSP7FFl0WuhbfkDsvHABQcvljztKtv5t
	TmVe8y13fX6JBy+UIJzzlIVtxfNkS8fbelL8PTfYQ7ChxUtoy/i9qVQddV7vfiII9WomGi9x5bB
	lKuL68A==
X-Gm-Gg: AeBDieve4J9LZ3SPymK9ERFDH2FEeyg+QvGjU/C27+JBatc01CcrUKqclPX/dEHBZN2
	tP2Eflx3ELRJ6LFzKYucoUvAglZqmVCqoo9s8JnLYpbb9gPnW5wPWG0SGgTW+J90W2UVg8IM9Wg
	lx18QEXDUl0y3BwXcaI8iVbX+cuNJdxJGl0N4Lf+aplgEnyuI5R3AddPkJE4HlY2jksNjuO4BAK
	ok4QLeBaMi35bdxMO3lL7ZMg0UTG0z7/iYvij7LG3J3/crECp3sRyyXc+EZfRzmLKfYYgmvAYe5
	kzLwEpXenFd/kztn4e3HfZbf6hVM7/mMORM25du33VkY7ppAHLy3hVRdVzpg/f7sXniTYiCGU++
	bvM5p9WCPZu5NFUpCvIB3wIqE+esqmM0UHdra4bpXwxa2YrbKJ+o6JoAcZHtxqkSDrvEX/faE+V
	/zVZF94OlSC5Hwg23TfCkNjeI0CLGFz/fcGWXaNAb9wX2oRTzGcEBvg1tDushwo1iQmrZQNRp3b
	y2T26cQVzMPPNA=
X-Received: by 2002:a05:600c:8012:b0:485:3f72:323f with SMTP id 5b1f17b1804b1-4889974a416mr360415325e9.11.1775747344297;
        Thu, 09 Apr 2026 08:09:04 -0700 (PDT)
Message-ID: <69eeb7f1-b04e-4c61-90ef-a9e841e6758d@suse.com>
Date: Thu, 9 Apr 2026 17:09:02 +0200
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: [PATCH v4 12/16] x86emul: support AVX10.2 minmax insns
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.pau@citrix.com>,
 Teddy Astie <teddy.astie@vates.tech>
References: <1e2ff012-b07a-43be-9ba6-290b38d3c97c@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: <1e2ff012-b07a-43be-9ba6-290b38d3c97c@suse.com>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 7bit
X-purgate-ID: tlsNG-4011c0/1775747344-C4E1B0B1-59FCFDF7/0/0
X-purgate-type: clean
X-purgate-size: 4819

While they use new major opcodes, they are still pretty similar to
various existing insns.

Signed-off-by: Jan Beulich <jbeulich@suse.com>
---
SDE: -dmr / -future
---
v4: Update to spec version 3. Switch to using fallthrough pseudo-
    keyword.
v3: New.

--- a/tools/tests/x86_emulator/evex-disp8.c
+++ b/tools/tests/x86_emulator/evex-disp8.c
@@ -726,6 +726,11 @@ static const struct test avx10_2_all[] =
     INSN_SFP(comx,               0f, 2f),
     INSN(comxsh,           f3, map5, 2f,    el, fp16, el),
     INSN(dpphps,             , 0f38, 52,    vl,    d, vl),
+    INSN(minmax,           66, 0f3a, 52,    vl,   sd, vl),
+    INSN(minmax,           66, 0f3a, 53,    el,   sd, el),
+    INSN(minmaxbf16,       f2, 0f3a, 52,    vl, bf16, vl),
+    INSN(minmaxph,           , 0f3a, 52,    vl, fp16, vl),
+    INSN(minmaxsh,           , 0f3a, 53,    el, fp16, el),
     INSN(mpsadbw,          f3, 0f3a, 42,    vl, d_nb, vl),
     INSN(pdpbssd,          f2, 0f38, 50,    vl,    d, vl),
     INSN(pdpbssds,         f2, 0f38, 51,    vl,    d, vl),
--- a/tools/tests/x86_emulator/predicates.c
+++ b/tools/tests/x86_emulator/predicates.c
@@ -2093,6 +2093,11 @@ static const struct evex {
     { { 0x44 }, 3, T, R, pfx_66, WIG, Ln }, /* vpclmulqdq */
     { { 0x50 }, 3, T, R, pfx_66, Wn, Ln }, /* vrangep{s,d} */
     { { 0x51 }, 3, T, R, pfx_66, Wn, LIG }, /* vranges{s,d} */
+    { { 0x52 }, 3, T, R, pfx_no, W0, Ln }, /* vminmaxph */
+    { { 0x52 }, 3, T, R, pfx_66, Wn, Ln }, /* vminmaxp{s,d} */
+    { { 0x52 }, 3, T, R, pfx_f2, W0, Ln }, /* vminmaxbf16 */
+    { { 0x53 }, 3, T, R, pfx_no, W0, LIG }, /* vminmaxsh */
+    { { 0x53 }, 3, T, R, pfx_66, Wn, LIG }, /* vminmaxs{s,d} */
     { { 0x54 }, 3, T, R, pfx_66, Wn, Ln }, /* vfixupimmp{s,d} */
     { { 0x55 }, 3, T, R, pfx_66, Wn, LIG }, /* vfixumpimms{s,d} */
     { { 0x56 }, 3, T, R, pfx_no, W0, Ln }, /* vreduceph */
--- a/xen/arch/x86/x86_emulate/decode.c
+++ b/xen/arch/x86/x86_emulate/decode.c
@@ -500,6 +500,8 @@ static const struct ext0f3a_table {
     [0x4c] = { .simd_size = simd_packed_int, .four_op = 1 },
     [0x50] = { .simd_size = simd_packed_fp, .d8s = d8s_vl },
     [0x51] = { .simd_size = simd_scalar_vexw, .d8s = d8s_dq },
+    [0x52] = { .simd_size = simd_packed_fp, .d8s = d8s_vl },
+    [0x53] = { .simd_size = simd_scalar_vexw, .d8s = d8s_dq },
     [0x54] = { .simd_size = simd_packed_fp, .d8s = d8s_vl },
     [0x55] = { .simd_size = simd_scalar_vexw, .d8s = d8s_dq },
     [0x56] = { .simd_size = simd_packed_fp, .two_op = 1, .d8s = d8s_vl },
@@ -1468,6 +1470,7 @@ int x86emul_decode(struct x86_emulate_st
                 case 0x0a: /* vrndscalesh */
                 case 0x26: /* vfpclassph */
                 case 0x27: /* vfpclasssh */
+                case 0x53: /* vminmaxsh */
                 case 0x56: /* vgetmantph */
                 case 0x57: /* vgetmantsh */
                 case 0x66: /* vreduceph */
@@ -1476,6 +1479,11 @@ int x86emul_decode(struct x86_emulate_st
                         s->fp16 = true;
                     break;
 
+                case 0x52: /* vminmax{ph,bf16} */
+                    if ( !s->evex.pfx || s->evex.pfx == vex_f2 )
+                        s->fp16 = true;
+                    break;
+
                 case 0xc2: /* vpcmp{p,s}h */
                     if ( !(s->evex.pfx & VEX_PREFIX_DOUBLE_MASK) )
                         s->fp16 = true;
--- a/xen/arch/x86/x86_emulate/x86_emulate.c
+++ b/xen/arch/x86/x86_emulate/x86_emulate.c
@@ -7697,6 +7697,21 @@ x86_emulate(
         generate_exception_if(vex.w, X86_EXC_UD);
         goto simd_0f_int_imm8;
 
+    case X86EMUL_OPC_EVEX_F2(0x0f3a, 0x52): /* vminmaxbf16 $imm8,[xyz]mm/mem,[xyz]mm,[xyz]mm{k} */
+        generate_exception_if(ea.type != OP_MEM && evex.brs, X86_EXC_UD);
+        op_bytes = 16 << evex.lr;
+        fallthrough;
+    case X86EMUL_OPC_EVEX(0x0f3a, 0x52): /* vminmaxph $imm8,[xyz]mm/mem,[xyz]mm,[xyz]mm{k} */
+    case X86EMUL_OPC_EVEX(0x0f3a, 0x53): /* vminmaxsh $imm,xmm/m16,xmm,xmm,xmm{k} */
+        generate_exception_if(vex.w, X86_EXC_UD);
+        fallthrough;
+    case X86EMUL_OPC_EVEX_66(0x0f3a, 0x52): /* vminmaxp{s,d} $imm8,[xyz]mm/mem,[xyz]mm,[xyz]mm{k} */
+    case X86EMUL_OPC_EVEX_66(0x0f3a, 0x53): /* vminmaxs{s,d} $imm8,xmm/mem,xmm,xmm{k} */
+        vcpu_must_have(avx10, 2);
+        if ( ea.type != OP_REG || !evex.brs )
+            avx512_vlen_check(b & 1);
+        goto simd_imm8_zmm;
+
     case X86EMUL_OPC_VEX_66(0x0f3a, 0x5c): /* vfmaddsubps {x,y}mm,{x,y}mm/mem,{x,y}mm,{x,y}mm */
                                            /* vfmaddsubps {x,y}mm/mem,{x,y}mm,{x,y}mm,{x,y}mm */
     case X86EMUL_OPC_VEX_66(0x0f3a, 0x5d): /* vfmaddsubpd {x,y}mm,{x,y}mm/mem,{x,y}mm,{x,y}mm */



From xen-devel-bounces@lists.xenproject.org Thu Apr 09 15:14:45 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 09 Apr 2026 15:14:45 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1277818.1562925 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wAr5c-0006eu-4H; Thu, 09 Apr 2026 15:14:40 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1277818.1562925; Thu, 09 Apr 2026 15:14: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 1wAr5c-0006en-0P; Thu, 09 Apr 2026 15:14:40 +0000
Received: by outflank-mailman (input) for mailman id 1277818;
 Thu, 09 Apr 2026 15:14:38 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <jbeulich@suse.com>) id 1wAr5a-0006eb-KZ
 for xen-devel@lists.xenproject.org; Thu, 09 Apr 2026 15:14:38 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wAr5Z-00EDdQ-Sr
 for xen-devel@lists.xenproject.org; Thu, 09 Apr 2026 17:14:37 +0200
Received: from [10.42.69.10] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <jbeulich@suse.com>)
 id 69d7c25d-2eae-0a2a0a5409dd-0a2a450aa226-2
 for <xen-devel@lists.xenproject.org>; Thu, 09 Apr 2026 17:14:37 +0200
Received: from [209.85.221.42] (helo=mail-wr1-f42.google.com)
 by tlsNG-4011c0.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.0)
 (envelope-from <jbeulich@suse.com>)
 id 69d7c25d-ee98-0a2a450a0019-d155dd2ac9c8-3
 for <xen-devel@lists.xenproject.org>; Thu, 09 Apr 2026 17:14:37 +0200
Received: by mail-wr1-f42.google.com with SMTP id
 ffacd0b85a97d-43cfd1f9fd1so659729f8f.3
 for <xen-devel@lists.xenproject.org>; Thu, 09 Apr 2026 08:14:37 -0700 (PDT)
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-43d1e4e5890sm66464401f8f.31.2026.04.09.08.14.36
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Thu, 09 Apr 2026 08:14: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=google header.d=suse.com header.i="@suse.com" header.h="Content-Transfer-Encoding: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=1775747677; x=1776352477; darn=lists.xenproject.org;
        h=content-transfer-encoding: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;
        bh=NyvxFy1FVEMEfF6ukdfyjEF2EFVyAu8XJiCECeklWh4=;
        b=Qh9udhsXhRQc2AHsZXl5zBCHEWWXfFx1Y7+BB1FGePWl1OYGjyfWo+uxbVRCCfoQKo
         ao2Q/R8g2Lh7+q2+0OjgDwfyeKjvj5qP96N0HvfKMem6MyD/m/MOgzifAZN8+iHWHmkG
         HR7lF9FyhGTy8hK1bfybT8xAeE3WCYTOClWqGVCpA7Qtm0JvuQ+kW+GO0HpNAw3/CvBI
         MIyTgMm5PHDXYGjQzfulbX9kGtSHwaCdvqaSTUP31/HPKWykBsoutHY61xje1xu8gypV
         zpB/hgScXdQ1RMRAiDDVBciPJTV0Ai2SLhRh7oJJQgp8s7DbSkV0ZE5NKlFlUxmJ8W6y
         Kaow==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20251104; t=1775747677; x=1776352477;
        h=content-transfer-encoding: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;
        bh=NyvxFy1FVEMEfF6ukdfyjEF2EFVyAu8XJiCECeklWh4=;
        b=dVAciSFCteze1BbWB/j/ocyG285pS/D+nYZQLds+quwlM3JE4GxOMstpuj2uXbYuYW
         ay3hO6YELClFRLwjo2WRwG8gtEMx2m7hpJPDGO7FMnkEEMDbhtw4tMfu5yGUWE5qULcr
         JZQKCluxt3in9XKYTeKdHRHXqvPBuir28vmjOBeVlNVJL76hdUJmsLdEWvB1mJa866kf
         b6ONjysWaoclXsRdl1CTbDBBBAcrxQTTp+r5BaY77RkBNMMhpQFGzkcn9drRw15rkHXi
         s3TEZdcCALiXwI7M1kKgu2uG+TkWojMQZH397W5yq8bQtEE5EXdxWKzxMRPmMNf7mana
         k/Zg==
X-Gm-Message-State: AOJu0Yz4gWBpMg7FMNn0mibBAWRCTJjTLYAyFyv+eVC0jCvPsGiEOxLB
	ozRmI8/mQbUxoU7+8KU1soLcWK3MQTxfi5iZTOEmoZpEGyyJi+0cajg8629Tuerp1ybW7C4/M9g
	28gg80Q==
X-Gm-Gg: AeBDiev1qplXmC3dUfzDNfYA2iLqbUvkjpwgwJGLK/NwcUlWeKwRu5d17xQ9enSVbcG
	FNdZGJ+duigBkyKen3PYhv649mceoRP4m59sgEVonnkrUAlUnoIGY/t0lUyxYU55yEyn4IE3s85
	+v6p9Zj4MMNEedrVwKbC8Tw2RhIzd98tQrIbFETyyVedrdwsRFIE/1nHwTSc+ngh1G3KCqZDa2y
	rCOECr32BxFVXFMIlpgYznVYO1/N3KMMy4/5aqwqhTqB7yYKam8ia0M9Uq/Ex1aoqLIarUGS88X
	azk9AiBSTUEqrgPDoVquJ3IOaWAKVW1sHvGll10yTMqqIp5Mog/WVaH6fE+mVit28LaamZOnCtf
	XpUAIDUMHgX/VuM8y/G3Kao7GetGdTvj3afMVCfvnTDMrW8o4Ivrpg6ApP2y/XV6dnoUmzKfqVV
	Cj961Iz6OjFt2FQ3vTqexstFoZQHqmwplEV1tI0wlHbN/MXEawBFOkMBft46vp4HSuV1fQleHlK
	S6Ewgw5QZolx4w=
X-Received: by 2002:a05:6000:2887:b0:43d:29a:e42a with SMTP id ffacd0b85a97d-43d5a18be6amr5447595f8f.29.1775747676961;
        Thu, 09 Apr 2026 08:14:36 -0700 (PDT)
Message-ID: <a9f8e2f7-6879-4b9b-aac3-f64c8987d350@suse.com>
Date: Thu, 9 Apr 2026 17:14:35 +0200
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: [PATCH v4 13/16] x86emul: support AVX10.2 BFloat16 insns
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.pau@citrix.com>,
 Teddy Astie <teddy.astie@vates.tech>
References: <1e2ff012-b07a-43be-9ba6-290b38d3c97c@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: <1e2ff012-b07a-43be-9ba6-290b38d3c97c@suse.com>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 7bit
X-purgate-ID: tlsNG-4011c0/1775747677-BEF4B0B1-D7547AAC/0/0
X-purgate-type: clean
X-purgate-size: 16443

These are all very similar to various existing insns. VGETEXPPBF16, not
living in the expected place, benefits from the respective
twobyte_table[] entry already having Mov (aka TwoOp).

Signed-off-by: Jan Beulich <jbeulich@suse.com>
---
SDE: -dmr / -future
---
v4: Update to spec version 3. Switch to using fallthrough pseudo-
    keyword.
v3: New.

--- a/tools/tests/x86_emulator/evex-disp8.c
+++ b/tools/tests/x86_emulator/evex-disp8.c
@@ -722,15 +722,36 @@ static const struct test vpclmulqdq_all[
 };
 
 static const struct test avx10_2_all[] = {
+    INSN(addbf16,          66, map5, 58,    vl, bf16, vl),
+    INSN(cmpbf16,          f2, 0f3a, c2,    vl, bf16, vl),
     INSN(comisbf16,        66, map5, 2f,    el, bf16, el),
     INSN_SFP(comx,               0f, 2f),
     INSN(comxsh,           f3, map5, 2f,    el, fp16, el),
+    INSN(divbf16,          66, map5, 5e,    vl, bf16, vl),
     INSN(dpphps,             , 0f38, 52,    vl,    d, vl),
+    INSN(fmadd132bf16,       , map6, 98,    vl, bf16, vl),
+    INSN(fmadd213bf16,       , map6, a8,    vl, bf16, vl),
+    INSN(fmadd231bf16,       , map6, b8,    vl, bf16, vl),
+    INSN(fmsub132bf16,       , map6, 9a,    vl, bf16, vl),
+    INSN(fmsub213bf16,       , map6, aa,    vl, bf16, vl),
+    INSN(fmsub231bf16,       , map6, ba,    vl, bf16, vl),
+    INSN(fnmadd132bf16,      , map6, 9c,    vl, bf16, vl),
+    INSN(fnmadd213bf16,      , map6, ac,    vl, bf16, vl),
+    INSN(fnmadd231bf16,      , map6, bc,    vl, bf16, vl),
+    INSN(fnmsub132bf16,      , map6, 9e,    vl, bf16, vl),
+    INSN(fnmsub213bf16,      , map6, ae,    vl, bf16, vl),
+    INSN(fnmsub231bf16,      , map6, be,    vl, bf16, vl),
+    INSN(fpclassbf16,      f2, 0f3a, 66,    vl, bf16, vl),
+    INSN(getexpbf16,         , map6, 42,    vl, bf16, vl),
+    INSN(getmantbf16,      f2, 0f3a, 26,    vl, bf16, vl),
+    INSN(maxbf16,          66, map5, 5f,    vl, bf16, vl),
+    INSN(minbf16,          66, map5, 5d,    vl, bf16, vl),
     INSN(minmax,           66, 0f3a, 52,    vl,   sd, vl),
     INSN(minmax,           66, 0f3a, 53,    el,   sd, el),
     INSN(minmaxbf16,       f2, 0f3a, 52,    vl, bf16, vl),
     INSN(minmaxph,           , 0f3a, 52,    vl, fp16, vl),
     INSN(minmaxsh,           , 0f3a, 53,    el, fp16, el),
+    INSN(mulbf16,          66, map5, 59,    vl, bf16, vl),
     INSN(mpsadbw,          f3, 0f3a, 42,    vl, d_nb, vl),
     INSN(pdpbssd,          f2, 0f38, 50,    vl,    d, vl),
     INSN(pdpbssds,         f2, 0f38, 51,    vl,    d, vl),
@@ -744,6 +765,13 @@ static const struct test avx10_2_all[] =
     INSN(pdpwusds,         66, 0f38, d3,    vl,    d, vl),
     INSN(pdpwuud,            , 0f38, d2,    vl,    d, vl),
     INSN(pdpwuuds,           , 0f38, d3,    vl,    d, vl),
+    INSN(rcpph,              , map6, 4c,    vl, bf16, vl),
+    INSN(reducebf16,       f2, 0f3a, 56,    vl, bf16, vl),
+    INSN(rndscalebf16,     f2, 0f3a, 08,    vl, bf16, vl),
+    INSN(rsqrtph,            , map6, 4e,    vl, bf16, vl),
+    INSN(scalefbf16,         , map6, 2c,    vl, bf16, vl),
+    INSN(sqrtbf16,         66, map5, 51,    vl, bf16, vl),
+    INSN(subbf16,          66, map5, 5c,    vl, bf16, vl),
     INSN_SFP(ucomx,              0f, 2e),
     INSN(ucomxsh,          f3, map5, 2e,    el, fp16, el),
 };
--- a/tools/tests/x86_emulator/predicates.c
+++ b/tools/tests/x86_emulator/predicates.c
@@ -2056,6 +2056,7 @@ static const struct evex {
     { { 0x05 }, 3, T, R, pfx_66, W1, Ln }, /* vpermilpd */
     { { 0x08 }, 3, T, R, pfx_no, W0, Ln }, /* vrndscaleph */
     { { 0x08 }, 3, T, R, pfx_66, W0, Ln }, /* vrndscaleps */
+    { { 0x08 }, 3, T, R, pfx_f2, W0, Ln }, /* vrndscalebf16 */
     { { 0x09 }, 3, T, R, pfx_66, W1, Ln }, /* vrndscalepd */
     { { 0x0a }, 3, T, R, pfx_no, W0, LIG }, /* vrndscalesh */
     { { 0x0a }, 3, T, R, pfx_66, W0, LIG }, /* vrndscaless */
@@ -2079,6 +2080,7 @@ static const struct evex {
     { { 0x25 }, 3, T, R, pfx_66, Wn, Ln }, /* vpternlog{d,q} */
     { { 0x26 }, 3, T, R, pfx_no, W0, Ln }, /* vgetmantph */
     { { 0x26 }, 3, T, R, pfx_66, Wn, Ln }, /* vgetmantp{s,d} */
+    { { 0x26 }, 3, T, R, pfx_f2, W0, Ln }, /* vgetmantbf16 */
     { { 0x27 }, 3, T, R, pfx_no, W0, LIG }, /* vgetmantsh */
     { { 0x27 }, 3, T, R, pfx_66, Wn, LIG }, /* vgetmants{s,d} */
     { { 0x38 }, 3, T, R, pfx_66, Wn, L1|L2 }, /* vinserti{32x4,64x2} */
@@ -2102,10 +2104,12 @@ static const struct evex {
     { { 0x55 }, 3, T, R, pfx_66, Wn, LIG }, /* vfixumpimms{s,d} */
     { { 0x56 }, 3, T, R, pfx_no, W0, Ln }, /* vreduceph */
     { { 0x56 }, 3, T, R, pfx_66, Wn, Ln }, /* vreducep{s,d} */
+    { { 0x56 }, 3, T, R, pfx_f2, W0, Ln }, /* vreducebf16 */
     { { 0x57 }, 3, T, R, pfx_no, W0, LIG }, /* vreducesh */
     { { 0x57 }, 3, T, R, pfx_66, Wn, LIG }, /* vreduces{s,d} */
     { { 0x66 }, 3, T, R, pfx_no, W0, Ln }, /* vfpclassph */
     { { 0x66 }, 3, T, R, pfx_66, Wn, Ln }, /* vfpclassp{s,d} */
+    { { 0x66 }, 3, T, R, pfx_f2, W0, Ln }, /* vfpclassbf16 */
     { { 0x67 }, 3, T, R, pfx_no, W0, LIG }, /* vfpclasssh */
     { { 0x67 }, 3, T, R, pfx_66, Wn, LIG }, /* vfpclasss{s,d} */
     { { 0x70 }, 3, T, R, pfx_66, W1, Ln }, /* vshldw */
@@ -2114,6 +2118,7 @@ static const struct evex {
     { { 0x73 }, 3, T, R, pfx_66, Wn, Ln }, /* vshrd{d,q} */
     { { 0xc2 }, 3, T, R, pfx_no, W0, Ln }, /* vcmpph */
     { { 0xc2 }, 3, T, R, pfx_f3, W0, LIG }, /* vcmpsh */
+    { { 0xc2 }, 3, T, R, pfx_f2, W0, Ln }, /* vcmpbf16 */
     { { 0xce }, 3, T, R, pfx_66, W1, Ln }, /* vgf2p8affineqb */
     { { 0xcf }, 3, T, R, pfx_66, W1, Ln }, /* vgf2p8affineinvqb */
 }, evex_map5[] = {
@@ -2130,10 +2135,13 @@ static const struct evex {
     { { 0x2f }, 2, T, R, pfx_66, W0, LIG }, /* vcomisbf16 */
     { { 0x2f }, 2, T, R, pfx_f3, W0, LIG }, /* vcomxsh */
     { { 0x51 }, 2, T, R, pfx_no, W0, Ln }, /* vsqrtph */
+    { { 0x51 }, 2, T, R, pfx_66, W0, Ln }, /* vsqrtbf16 */
     { { 0x51 }, 2, T, R, pfx_f3, W0, LIG }, /* vsqrtsh */
     { { 0x58 }, 2, T, R, pfx_no, W0, Ln }, /* vaddph */
+    { { 0x58 }, 2, T, R, pfx_66, W0, Ln }, /* vaddbf16 */
     { { 0x58 }, 2, T, R, pfx_f3, W0, LIG }, /* vaddsh */
     { { 0x59 }, 2, T, R, pfx_no, W0, Ln }, /* vmulph */
+    { { 0x59 }, 2, T, R, pfx_66, W0, Ln }, /* vmulbf16 */
     { { 0x59 }, 2, T, R, pfx_f3, W0, LIG }, /* vmulsh */
     { { 0x5a }, 2, T, R, pfx_no, W0, Ln }, /* vcvtph2pd */
     { { 0x5a }, 2, T, R, pfx_66, W1, Ln }, /* vcvtpd2ph */
@@ -2144,12 +2152,16 @@ static const struct evex {
     { { 0x5b }, 2, T, R, pfx_66, W0, Ln }, /* vcvtph2dq */
     { { 0x5b }, 2, T, R, pfx_f3, W0, Ln }, /* vcvttph2dq */
     { { 0x5c }, 2, T, R, pfx_no, W0, Ln }, /* vsubph */
+    { { 0x5c }, 2, T, R, pfx_66, W0, Ln }, /* vsubbf16 */
     { { 0x5c }, 2, T, R, pfx_f3, W0, LIG }, /* vsubsh */
     { { 0x5d }, 2, T, R, pfx_no, W0, Ln }, /* vminph */
+    { { 0x5d }, 2, T, R, pfx_66, W0, Ln }, /* vminbf16 */
     { { 0x5d }, 2, T, R, pfx_f3, W0, LIG }, /* vminsh */
     { { 0x5e }, 2, T, R, pfx_no, W0, Ln }, /* vdivph */
+    { { 0x5e }, 2, T, R, pfx_66, W0, Ln }, /* vdivbf16 */
     { { 0x5e }, 2, T, R, pfx_f3, W0, LIG }, /* vdivsh */
     { { 0x5f }, 2, T, R, pfx_no, W0, Ln }, /* vmaxph */
+    { { 0x5f }, 2, T, R, pfx_66, W0, Ln }, /* vmaxbf16 */
     { { 0x5f }, 2, T, R, pfx_f3, W0, LIG }, /* vmaxsh */
     { { 0x6e }, 2, T, R, pfx_66, WIG, L0 }, /* vmovw */
     { { 0x6e }, 2, T, R, pfx_f3, W0, L0 }, /* vmovw */
@@ -2177,12 +2189,16 @@ static const struct evex {
 }, evex_map6[] = {
     { { 0x13 }, 2, T, R, pfx_66, W0, Ln }, /* vcvtph2psx */
     { { 0x13 }, 2, T, R, pfx_no, W0, LIG }, /* vcvtsh2ss */
+    { { 0x2c }, 2, T, R, pfx_no, W0, Ln }, /* vscalefbf16 */
     { { 0x2c }, 2, T, R, pfx_66, W0, Ln }, /* vscalefph */
     { { 0x2d }, 2, T, R, pfx_66, W0, LIG }, /* vscalefsh */
+    { { 0x42 }, 2, T, R, pfx_no, W0, Ln }, /* vgetexpbf16 */
     { { 0x42 }, 2, T, R, pfx_66, W0, Ln }, /* vgetexpph */
     { { 0x43 }, 2, T, R, pfx_66, W0, LIG }, /* vgetexpsh */
+    { { 0x4c }, 2, T, R, pfx_no, W0, Ln }, /* vrcpbf16 */
     { { 0x4c }, 2, T, R, pfx_66, W0, Ln }, /* vrcpph */
     { { 0x4d }, 2, T, R, pfx_66, W0, LIG }, /* vrcpsh */
+    { { 0x4e }, 2, T, R, pfx_no, W0, Ln }, /* vrsqrtbf16 */
     { { 0x4e }, 2, T, R, pfx_66, W0, Ln }, /* vrsqrtph */
     { { 0x4f }, 2, T, R, pfx_66, W0, LIG }, /* vrsqrtsh */
     { { 0x56 }, 2, T, R, pfx_f3, W0, Ln }, /* vfmaddcph */
--- a/xen/arch/x86/x86_emulate/decode.c
+++ b/xen/arch/x86/x86_emulate/decode.c
@@ -1466,31 +1466,34 @@ int x86emul_decode(struct x86_emulate_st
             {
                 switch ( b )
                 {
-                case 0x08: /* vrndscaleph */
+                case 0x08: /* vrndscale{ph,bf16} */
+                case 0x26: /* vfpclass{ph,bf16} */
+                case 0x52: /* vminmax{ph,bf16} */
+                case 0x56: /* vgetmant{ph,bf16} */
+                case 0x66: /* vreduce{ph,bf16} */
+                    if ( !s->evex.pfx || s->evex.pfx == vex_f2 )
+                        s->fp16 = true;
+                    break;
+
                 case 0x0a: /* vrndscalesh */
-                case 0x26: /* vfpclassph */
                 case 0x27: /* vfpclasssh */
                 case 0x53: /* vminmaxsh */
-                case 0x56: /* vgetmantph */
                 case 0x57: /* vgetmantsh */
-                case 0x66: /* vreduceph */
                 case 0x67: /* vreducesh */
                     if ( !s->evex.pfx )
                         s->fp16 = true;
                     break;
 
-                case 0x52: /* vminmax{ph,bf16} */
-                    if ( !s->evex.pfx || s->evex.pfx == vex_f2 )
-                        s->fp16 = true;
-                    break;
-
-                case 0xc2: /* vpcmp{p,s}h */
-                    if ( !(s->evex.pfx & VEX_PREFIX_DOUBLE_MASK) )
+                case 0xc2: /* vpcmp{p,s}h, vcmpbf16 */
+                    if ( s->evex.pfx != vex_66 )
                         s->fp16 = true;
                     break;
                 }
 
-                disp8scale = decode_disp8scale(ext0f3a_table[b].d8s, s);
+                if ( s->fp16 && s->evex.pfx == vex_f2 && !s->evex.brs )
+                    disp8scale = 4 + s->evex.lr;
+                else
+                    disp8scale = decode_disp8scale(ext0f3a_table[b].d8s, s);
             }
             break;
 
@@ -1498,7 +1501,7 @@ int x86emul_decode(struct x86_emulate_st
             switch ( b )
             {
             default:
-                if ( !(s->evex.pfx & VEX_PREFIX_DOUBLE_MASK) )
+                if ( s->evex.pfx != vex_f2 )
                     s->fp16 = true;
                 break;
 
@@ -1528,6 +1531,11 @@ int x86emul_decode(struct x86_emulate_st
                 s->simd_size = simd_none;
                 break;
 
+            case 0x5a: /* vcvt{p,s}d2{p,s}h, vcvt{p,s}h2{p,s}d */
+                if ( !(s->evex.pfx & VEX_PREFIX_DOUBLE_MASK) )
+                    s->fp16 = true;
+                break;
+
             case 0x5b: /* vcvt{d,q}q2ph, vcvt{,t}ph2dq */
                 if ( s->evex.pfx && s->evex.pfx != vex_f2 )
                     s->fp16 = true;
@@ -1580,6 +1588,14 @@ int x86emul_decode(struct x86_emulate_st
                 disp8scale = 1;
                 break;
 
+            case 0x42: /* vgetexpbf16 needs special casing */
+                if ( s->evex.pfx == vex_66 )
+                {
+                    s->simd_size = simd_packed_fp;
+                    disp8scale = s->evex.brs ? 1 : 4 + s->evex.lr;
+                }
+                break;
+
             case 0x5a: /* vcvtph2pd needs special casing */
                 if ( !s->evex.pfx && !s->evex.brs )
                     disp8scale -= 2;
@@ -1612,7 +1628,7 @@ int x86emul_decode(struct x86_emulate_st
             switch ( b )
             {
             default:
-                if ( s->evex.pfx == vex_66 )
+                if ( !(s->evex.pfx & VEX_PREFIX_SCALAR_MASK) )
                     s->fp16 = true;
                 break;
 
@@ -1934,6 +1950,13 @@ int x86emul_decode(struct x86_emulate_st
             s->op_bytes = 4 >> s->fp16;
             break;
         case vex_f2:
+            if ( s->fp16 )
+            {
+                ASSERT(evex_encoded());
+                generate_exception_if(s->evex.w, X86_EXC_UD);
+                s->op_bytes = 0;
+                break;
+            }
             generate_exception_if(evex_encoded() && !s->evex.w, X86_EXC_UD);
             s->op_bytes = 8;
             break;
--- a/xen/arch/x86/x86_emulate/x86_emulate.c
+++ b/xen/arch/x86/x86_emulate/x86_emulate.c
@@ -7301,6 +7301,20 @@ x86_emulate(
         avx512_vlen_check(b & 2);
         goto simd_imm8_zmm;
 
+    case X86EMUL_OPC_EVEX_F2(0x0f3a, 0x66): /* vfpclassbf16 $imm8,[xyz]mm/mem,k{k} */
+    case X86EMUL_OPC_EVEX_F2(0x0f3a, 0xc2): /* vcmpbf16 $imm8,[xyz]mm/mem,[xyz]mm,k{k} */
+        generate_exception_if(!evex.r || !evex.R || evex.z, X86_EXC_UD);
+        fallthrough;
+    case X86EMUL_OPC_EVEX_F2(0x0f3a, 0x08): /* vrndscalebf16 $imm8,[xyz]mm/mem,[xyz]mm{k} */
+    case X86EMUL_OPC_EVEX_F2(0x0f3a, 0x26): /* vgetmantbf16 $imm8,[xyz]mm/mem,[xyz]mm{k} */
+    case X86EMUL_OPC_EVEX_F2(0x0f3a, 0x56): /* vreducebf16 $imm8,[xyz]mm/mem,[xyz]mm{k} */
+        generate_exception_if(evex.w || (ea.type != OP_MEM && evex.brs),
+                              X86_EXC_UD);
+        vcpu_must_have(avx10, 2);
+        avx512_vlen_check(false);
+        op_bytes = 16 << evex.lr;
+        goto simd_imm8_zmm;
+
 #endif /* X86EMUL_NO_SIMD */
 
     CASE_SIMD_PACKED_INT(0x0f3a, 0x0f): /* palignr $imm8,{,x}mm/mem,{,x}mm */
@@ -7932,6 +7946,36 @@ x86_emulate(
         generate_exception_if(evex.w, X86_EXC_UD);
         goto avx512f_all_fp;
 
+    case X86EMUL_OPC_EVEX_66(5, 0x51): /* vsqrtbf16 [xyz]mm/mem,[xyz]mm{k} */
+    case X86EMUL_OPC_EVEX_66(5, 0x58): /* vaddbf16 [xyz]mm/mem,[xyz]mm,[xyz]mm{k} */
+    case X86EMUL_OPC_EVEX_66(5, 0x59): /* vmulbf16 [xyz]mm/mem,[xyz]mm,[xyz]mm{k} */
+    case X86EMUL_OPC_EVEX_66(5, 0x5c): /* vsubbf16 [xyz]mm/mem,[xyz]mm,[xyz]mm{k} */
+    case X86EMUL_OPC_EVEX_66(5, 0x5d): /* vminbf16 [xyz]mm/mem,[xyz]mm,[xyz]mm{k} */
+    case X86EMUL_OPC_EVEX_66(5, 0x5e): /* vdivbf16 [xyz]mm/mem,[xyz]mm,[xyz]mm{k} */
+    case X86EMUL_OPC_EVEX_66(5, 0x5f): /* vmaxbf16 [xyz]mm/mem,[xyz]mm,[xyz]mm{k} */
+    case X86EMUL_OPC_EVEX(6, 0x2c): /* vscalefbf16 [xyz]mm/mem,[xyz]mm,[xyz]mm{k} */
+    case X86EMUL_OPC_EVEX(6, 0x42): /* vgetexpbf16 [xyz]mm/mem,[xyz]mm{k} */
+    case X86EMUL_OPC_EVEX(6, 0x4c): /* vrcpbf16 [xyz]mm/mem,[xyz]mm{k} */
+    case X86EMUL_OPC_EVEX(6, 0x4e): /* vrsqrtbf16 [xyz]mm/mem,[xyz]mm{k} */
+    case X86EMUL_OPC_EVEX(6, 0x98): /* vfmadd132bf16 [xyz]mm/mem,[xyz]mm,[xyz]mm{k} */
+    case X86EMUL_OPC_EVEX(6, 0x9a): /* vfmsub132bf16 [xyz]mm/mem,[xyz]mm,[xyz]mm{k} */
+    case X86EMUL_OPC_EVEX(6, 0x9c): /* vfnmadd132bf16 [xyz]mm/mem,[xyz]mm,[xyz]mm{k} */
+    case X86EMUL_OPC_EVEX(6, 0x9e): /* vfnmsub132bf16 [xyz]mm/mem,[xyz]mm,[xyz]mm{k} */
+    case X86EMUL_OPC_EVEX(6, 0xa8): /* vfmadd213bf16 [xyz]mm/mem,[xyz]mm,[xyz]mm{k} */
+    case X86EMUL_OPC_EVEX(6, 0xaa): /* vfmsub213bf16 [xyz]mm/mem,[xyz]mm,[xyz]mm{k} */
+    case X86EMUL_OPC_EVEX(6, 0xac): /* vfnmadd213bf16 [xyz]mm/mem,[xyz]mm,[xyz]mm{k} */
+    case X86EMUL_OPC_EVEX(6, 0xae): /* vfnmsub213bf16 [xyz]mm/mem,[xyz]mm,[xyz]mm{k} */
+    case X86EMUL_OPC_EVEX(6, 0xb8): /* vfmadd231bf16 [xyz]mm/mem,[xyz]mm,[xyz]mm{k} */
+    case X86EMUL_OPC_EVEX(6, 0xba): /* vfmsub231bf16 [xyz]mm/mem,[xyz]mm,[xyz]mm{k} */
+    case X86EMUL_OPC_EVEX(6, 0xbc): /* vfnmadd231bf16 [xyz]mm/mem,[xyz]mm,[xyz]mm{k} */
+    case X86EMUL_OPC_EVEX(6, 0xbe): /* vfnmsub231bf16 [xyz]mm/mem,[xyz]mm,[xyz]mm{k} */
+        generate_exception_if(evex.w || (ea.type != OP_MEM && evex.brs),
+                              X86_EXC_UD);
+        vcpu_must_have(avx10, 2);
+        avx512_vlen_check(false);
+        op_bytes = 16 << evex.lr;
+        goto simd_zmm;
+
     CASE_SIMD_ALL_FP(_EVEX, 5, 0x5a):  /* vcvtp{h,d}2p{h,d} [xyz]mm/mem,[xyz]mm{k} */
                                        /* vcvts{h,d}2s{h,d} xmm/mem,xmm,xmm{k} */
         visa_check(_fp16);



From xen-devel-bounces@lists.xenproject.org Thu Apr 09 15:15:09 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 09 Apr 2026 15:15:09 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1277826.1562934 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wAr65-00076X-Dl; Thu, 09 Apr 2026 15:15:09 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1277826.1562934; Thu, 09 Apr 2026 15:15: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 1wAr65-00076Q-8M; Thu, 09 Apr 2026 15:15:09 +0000
Received: by outflank-mailman (input) for mailman id 1277826;
 Thu, 09 Apr 2026 15:15:08 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <jbeulich@suse.com>) id 1wAr63-00074p-Tw
 for xen-devel@lists.xenproject.org; Thu, 09 Apr 2026 15:15:08 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wAr63-00Bhhs-9v
 for xen-devel@lists.xenproject.org; Thu, 09 Apr 2026 17:15:07 +0200
Received: from [10.42.69.3] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <jbeulich@suse.com>)
 id 69d7c276-2eae-0a2a0a5409dd-0a2a4503bf82-20
 for <xen-devel@lists.xenproject.org>; Thu, 09 Apr 2026 17:15:07 +0200
Received: from [209.85.221.49] (helo=mail-wr1-f49.google.com)
 by tlsNG-33051d.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.0)
 (envelope-from <jbeulich@suse.com>)
 id 69d7c27a-02b3-0a2a45030019-d155dd31b144-3
 for <xen-devel@lists.xenproject.org>; Thu, 09 Apr 2026 17:15:07 +0200
Received: by mail-wr1-f49.google.com with SMTP id
 ffacd0b85a97d-43d03db7f87so635631f8f.3
 for <xen-devel@lists.xenproject.org>; Thu, 09 Apr 2026 08:15:07 -0700 (PDT)
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-43d5e969bbfsm5443547f8f.1.2026.04.09.08.15.05
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Thu, 09 Apr 2026 08:15:05 -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=google header.d=suse.com header.i="@suse.com" header.h="Content-Transfer-Encoding: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=1775747706; x=1776352506; darn=lists.xenproject.org;
        h=content-transfer-encoding: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;
        bh=t+paljPnWkTzNqOHP7CEN4/9EJ+YMnnkKkGJShrJ0p4=;
        b=bED7KWxEOd5HGnbyI/ZE7eRLlG6Lkk32bHRQrLX9QZdoVic/ijPbNSwmNM3Qx4AVdc
         5EUPlJ4ZLgj4c/TRrsJixcSgw0GfgnZnjxkfXnt0IdC6indbUvCsYsJzTVyLEuQUT3rO
         PLnEmHaRDTHk2OjqnI2pS9QCyUMCWCYYdDj8LFU9DzDVHnB1Qgi7NOJsF34dlFkGtxvx
         2d504u/RzuDeZXw3wwZg1eLPjed/YOClFTSiVHfQn/guDk/fGu8ZkJby2841MYb4k7Of
         viZzZh7Qn5NGIiilADkpkAy6YzqBoWKKB/i4MfBZSKKQxguJPDZryhkPGh2i8rdDT+T0
         Qp2A==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20251104; t=1775747706; x=1776352506;
        h=content-transfer-encoding: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;
        bh=t+paljPnWkTzNqOHP7CEN4/9EJ+YMnnkKkGJShrJ0p4=;
        b=Jw7nQoDAYULBeYFOJGRSKEjZb/YO2KbWc1cvwEpHOaN5C436JffVNQZOpL2kAou457
         r+tdQhqcUVgqSWTDcDwaQitXavSB2D8/Nw92wbYsUwuJDIi7kwS+KW7GaHyE+x8zTZwX
         J9UX0d8i0RB2ppNyA1o0oubtfJYkrDYHS5Fm0XX2Sh9gg0FIVWXGnxtIdBbLpREpjjtM
         uqElZSJ7uUsQSZ5Z0wFqZsOWvY9AF38Vxzbk93ziNq/TkLGXoCcxS7pDRliWmHhPzrqO
         03Zmh1j9jtPiIOOAlswBfNQvftU9wGfI/9od8RgRHRjIloUVkbGKhuy6zWpP/TGOxkDh
         rU6A==
X-Gm-Message-State: AOJu0YzQsUBCigRYnaAbD2+DYmdjf0Q13Ffvid4tO7rLb4TI/2MHbsrE
	Dfpferqlzy2RCMf80dimo77LIMFnLswwzHADcMNVq1vWv3x2R3ISaqW5GIQtNnqTRd9A19z+Na8
	nnASWcQ==
X-Gm-Gg: AeBDietPk65SGKm2eNO773eeV61HqoLOARm1K65O416GDvJx+R9yGzp87BBtegV8aLw
	3JZrmmRpa+PyaqxMXW2HVNfESQrvE4Z4esSi1uuXnhBw6XJsEemh+waxFKbgecGNxQ1XinSQnp5
	0miW3el+lq4ZaBbXr61TRqj2ughQrwOX4iWBVoDx0ZUZmR/rASRPmVxXH8jjUD7tHY8n1NsIR0n
	QAPuKllohkhwNJnhUXqDkmImD2oScsUIkR4FvHHdSOh3MCjx0gcDWPdSwVzFnxXDxqZLuyNJxVN
	STDNQ2FbuVsaiZ+ctyzGfMfMHQuXYNy80POvzuBG6HTE8N4jM4O34hVi8++mMKZucG046QWUdBf
	Op8Q1NV9b3Zva0xuSd4lTTQniHsMIufGKLIciMDpXQ21KtAwzHlGf2rqycZwmiZZT8glgmw8CZd
	BYsIBl/pOxyXmM90cMFFjj6YiZEoGgq0Fmrj5aOEDul9vZ+3+4xP4aAi6BOyTy4fhd5MEvTQHxE
	KfkiUW0ZN77Aba+RCYdjRw9tA==
X-Received: by 2002:a5d:5f92:0:b0:43d:1bf6:920 with SMTP id ffacd0b85a97d-43d2928f444mr37073682f8f.14.1775747706416;
        Thu, 09 Apr 2026 08:15:06 -0700 (PDT)
Message-ID: <476e3ba2-275f-4fda-bbae-090dee92e089@suse.com>
Date: Thu, 9 Apr 2026 17:15:04 +0200
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: [PATCH v4 14/16] x86emul: support AVX10.2 saturating convert insns
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.pau@citrix.com>,
 Teddy Astie <teddy.astie@vates.tech>
References: <1e2ff012-b07a-43be-9ba6-290b38d3c97c@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: <1e2ff012-b07a-43be-9ba6-290b38d3c97c@suse.com>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 7bit
X-purgate-ID: tlsNG-33051d/1775747707-41713C9A-4A26ED8E/0/0
X-purgate-type: clean
X-purgate-size: 9105

While the to-byte ones are somewhat different from what has been there
(yet then nicely regular from an operands perspective), the others are
pretty similar to various existing insns.

Signed-off-by: Jan Beulich <jbeulich@suse.com>
---
Spec rev 002 says VCVTTNEBF162I{,U}BS, yet that's going to change to
VCVTTBF162I{,U}BS.
---
SDE: -dmr / -future
---
v4: Update to spec version 3. Switch to using fallthrough pseudo-
    keyword. Series re-ordering adjustments.
v3: New.

--- a/tools/tests/x86_emulator/evex-disp8.c
+++ b/tools/tests/x86_emulator/evex-disp8.c
@@ -727,6 +727,30 @@ static const struct test avx10_2_all[] =
     INSN(comisbf16,        66, map5, 2f,    el, bf16, el),
     INSN_SFP(comx,               0f, 2f),
     INSN(comxsh,           f3, map5, 2f,    el, fp16, el),
+    INSN(cvtbf162ibs,      f2, map5, 69,    vl, bf16, vl),
+    INSN(cvtbf162iubs,     f2, map5, 6b,    vl, bf16, vl),
+    INSN(cvtph2ibs,          , map5, 69,    vl, fp16, vl),
+    INSN(cvtph2iubs,         , map5, 6b,    vl, fp16, vl),
+    INSN(cvtps2ibs,        66, map5, 69,    vl,    d, vl),
+    INSN(cvtps2iubs,       66, map5, 6b,    vl,    d, vl),
+    INSN(cvttbf162ibs,     f2, map5, 68,    vl, bf16, vl),
+    INSN(cvttbf162iubs,    f2, map5, 6a,    vl, bf16, vl),
+    INSN(cvttpd2dqs,         , map5, 6d,    vl,    q, vl),
+    INSN(cvttpd2qqs,       66, map5, 6d,    vl,    q, vl),
+    INSN(cvttpd2udqs,        , map5, 6c,    vl,    q, vl),
+    INSN(cvttpd2uqqs,      66, map5, 6c,    vl,    q, vl),
+    INSN(cvttph2ibs,         , map5, 68,    vl, fp16, vl),
+    INSN(cvttph2iubs,        , map5, 6a,    vl, fp16, vl),
+    INSN(cvttps2dqs,         , map5, 6d,    vl,    d, vl),
+    INSN(cvttps2ibs,       66, map5, 68,    vl,    d, vl),
+    INSN(cvttps2iubs,      66, map5, 6a,    vl,    d, vl),
+    INSN(cvttps2qqs,       66, map5, 6d,  vl_2,    d, vl),
+    INSN(cvttps2udqs,        , map5, 6c,    vl,    d, vl),
+    INSN(cvttps2uqqs,      66, map5, 6c,  vl_2,    d, vl),
+    INSN(cvttsd2sis,       f2, map5, 6d,    el,    q, el),
+    INSN(cvttsd2usis,      f2, map5, 6c,    el,    q, el),
+    INSN(cvttss2sis,       f3, map5, 6d,    el,    d, el),
+    INSN(cvttss2usis,      f3, map5, 6c,    el,    d, el),
     INSN(divbf16,          66, map5, 5e,    vl, bf16, vl),
     INSN(dpphps,             , 0f38, 52,    vl,    d, vl),
     INSN(fmadd132bf16,       , map6, 98,    vl, bf16, vl),
--- a/tools/tests/x86_emulator/predicates.c
+++ b/tools/tests/x86_emulator/predicates.c
@@ -2163,6 +2163,26 @@ static const struct evex {
     { { 0x5f }, 2, T, R, pfx_no, W0, Ln }, /* vmaxph */
     { { 0x5f }, 2, T, R, pfx_66, W0, Ln }, /* vmaxbf16 */
     { { 0x5f }, 2, T, R, pfx_f3, W0, LIG }, /* vmaxsh */
+    { { 0x68 }, 2, T, R, pfx_no, W0, Ln }, /* vcvttph2ibs */
+    { { 0x68 }, 2, T, R, pfx_66, W0, Ln }, /* vcvttps2ibs */
+    { { 0x68 }, 2, T, R, pfx_f2, W0, Ln }, /* vcvttbf162ibs */
+    { { 0x69 }, 2, T, R, pfx_no, W0, Ln }, /* vcvtph2ibs */
+    { { 0x69 }, 2, T, R, pfx_66, W0, Ln }, /* vcvtps2ibs */
+    { { 0x69 }, 2, T, R, pfx_f2, W0, Ln }, /* vcvtbf162ibs */
+    { { 0x6a }, 2, T, R, pfx_no, W0, Ln }, /* vcvttph2iubs */
+    { { 0x6a }, 2, T, R, pfx_66, W0, Ln }, /* vcvttps2iubs */
+    { { 0x6a }, 2, T, R, pfx_f2, W0, Ln }, /* vcvttbf162iubs */
+    { { 0x6b }, 2, T, R, pfx_no, W0, Ln }, /* vcvtph2iubs */
+    { { 0x6b }, 2, T, R, pfx_66, W0, Ln }, /* vcvtps2iubs */
+    { { 0x6b }, 2, T, R, pfx_f2, W0, Ln }, /* vcvtbf162iubs */
+    { { 0x6c }, 2, T, R, pfx_no, Wn, Ln }, /* vcvttp{s,d}2udqs */
+    { { 0x6c }, 2, T, R, pfx_66, Wn, Ln }, /* vcvttp{s,d}2uqqs */
+    { { 0x6c }, 2, T, R, pfx_f3, Wn, LIG }, /* vcvttss2usis */
+    { { 0x6c }, 2, T, R, pfx_f2, Wn, LIG }, /* vcvttsd2usis */
+    { { 0x6d }, 2, T, R, pfx_no, Wn, Ln }, /* vcvttp{s,d}2dqs */
+    { { 0x6d }, 2, T, R, pfx_66, Wn, Ln }, /* vcvttp{s,d}2qqs */
+    { { 0x6d }, 2, T, R, pfx_f3, Wn, LIG }, /* vcvttss2sis */
+    { { 0x6d }, 2, T, R, pfx_f2, Wn, LIG }, /* vcvttsd2sis */
     { { 0x6e }, 2, T, R, pfx_66, WIG, L0 }, /* vmovw */
     { { 0x6e }, 2, T, R, pfx_f3, W0, L0 }, /* vmovw */
     { { 0x6f }, 2, T, R, pfx_f3, Wn, Ln }, /* vmovrs{d,q} */
--- a/xen/arch/x86/x86_emulate/decode.c
+++ b/xen/arch/x86/x86_emulate/decode.c
@@ -1541,6 +1541,19 @@ int x86emul_decode(struct x86_emulate_st
                     s->fp16 = true;
                 break;
 
+            case 0x68: /* vcvtt{ph,ps,bf16}2ibs */
+            case 0x69: /* vcvt{ph,ps,nebf16}2ibs */
+            case 0x6a: /* vcvtt{ph,ps,bf16}2iubs */
+            case 0x6b: /* vcvt{ph,ps,nebf16}2iubs */
+                if ( !s->evex.pfx || s->evex.pfx == vex_f2 )
+                    s->fp16 = true;
+                fallthrough;
+            case 0x6c: /* vcvttp{s,d}2u{d,q}qs, vcvtts{s,d}2usis */
+            case 0x6d: /* vcvttp{s,d}2{d,q}qs, vcvtts{s,d}2sis */
+                d |= TwoOp;
+                s->simd_size = simd_other;
+                break;
+
             case 0x6e: /* vmovw r/x/m16, xmm */
                 d = (d & ~SrcMask) | SrcMem16;
                 /* fall through */
@@ -1606,6 +1619,14 @@ int x86emul_decode(struct x86_emulate_st
                     --disp8scale;
                 break;
 
+            case 0x6c: /* vcvttps2uqqs and vcvts{s,d}2usi need special casing */
+            case 0x6d: /* vcvttps2qqs and vcvts{s,d}2si need special casing */
+                if ( s->evex.pfx == vex_66 && !s->evex.w && !s->evex.brs )
+                    --disp8scale;
+                else if ( s->evex.pfx & VEX_PREFIX_SCALAR_MASK )
+                    disp8scale = s->evex.pfx & VEX_PREFIX_DOUBLE_MASK ? 3 : 2;
+                break;
+
             case 0x7a: case 0x7b: /* vcvt{,t}ph2qq need special casing */
                 if ( s->evex.pfx == vex_66 && !s->evex.brs )
                     disp8scale = s->evex.brs ? 1 : 2 + s->evex.lr;
--- a/xen/arch/x86/x86_emulate/x86_emulate.c
+++ b/xen/arch/x86/x86_emulate/x86_emulate.c
@@ -8006,6 +8006,55 @@ x86_emulate(
         op_bytes = 8 << evex.lr;
         goto simd_zmm;
 
+    case X86EMUL_OPC_EVEX_F2(5, 0x68): /* vcvttbf162ibs [xyz]mm/mem,[xyz]mm{k} */
+    case X86EMUL_OPC_EVEX_F2(5, 0x69): /* vcvtbf162ibs [xyz]mm/mem,[xyz]mm{k} */
+    case X86EMUL_OPC_EVEX_F2(5, 0x6a): /* vcvttbf162iubs [xyz]mm/mem,[xyz]mm{k} */
+    case X86EMUL_OPC_EVEX_F2(5, 0x6b): /* vcvtbf162iubs [xyz]mm/mem,[xyz]mm{k} */
+        generate_exception_if(ea.type != OP_MEM && evex.brs, X86_EXC_UD);
+        fallthrough;
+    case X86EMUL_OPC_EVEX   (5, 0x68): /* vcvttph2ibs [xyz]mm/mem,[xyz]mm{k} */
+    case X86EMUL_OPC_EVEX_66(5, 0x68): /* vcvttps2ibs [xyz]mm/mem,[xyz]mm{k} */
+    case X86EMUL_OPC_EVEX   (5, 0x69): /* vcvtph2ibs [xyz]mm/mem,[xyz]mm{k} */
+    case X86EMUL_OPC_EVEX_66(5, 0x69): /* vcvtps2ibs [xyz]mm/mem,[xyz]mm{k} */
+    case X86EMUL_OPC_EVEX   (5, 0x6a): /* vcvttph2iubs [xyz]mm/mem,[xyz]mm{k} */
+    case X86EMUL_OPC_EVEX_66(5, 0x6a): /* vcvttps2iubs [xyz]mm/mem,[xyz]mm{k} */
+    case X86EMUL_OPC_EVEX   (5, 0x6b): /* vcvtph2iubs [xyz]mm/mem,[xyz]mm{k} */
+    case X86EMUL_OPC_EVEX_66(5, 0x6b): /* vcvtps2iubs [xyz]mm/mem,[xyz]mm{k} */
+        generate_exception_if(evex.w, X86_EXC_UD);
+        vcpu_must_have(avx10, 2);
+        if ( ea.type != OP_REG || !evex.brs )
+            avx512_vlen_check(false);
+        op_bytes = 16 << evex.lr;
+        goto simd_zmm;
+
+    case X86EMUL_OPC_EVEX   (5, 0x6c): /* vcvttps2udqs [xyz]mm/mem,[xyz]mm{k} */
+                                       /* vcvttpd2udqs [xyz]mm/mem,{x,y}mm{k} */
+    case X86EMUL_OPC_EVEX_66(5, 0x6c): /* vcvttps2uqqs {x,y}mm/mem,[xyz]mm{k} */
+                                       /* vcvttpd2uqqs [xyz]mm/mem,[xyz]mm{k} */
+    case X86EMUL_OPC_EVEX   (5, 0x6d): /* vcvttps2dqs [xyz]mm/mem,[xyz]mm{k} */
+                                       /* vcvttpd2dqs [xyz]mm/mem,{x,y}mm{k} */
+    case X86EMUL_OPC_EVEX_66(5, 0x6d): /* vcvttps2qqs {x,y}mm/mem,[xyz]mm{k} */
+                                       /* vcvttpd2qqs [xyz]mm/mem,[xyz]mm{k} */
+        vcpu_must_have(avx10, 2);
+        if ( ea.type != OP_REG || !evex.brs )
+            avx512_vlen_check(false);
+        op_bytes = 8 << ((evex.w || !evex.pfx) + evex.lr);
+        goto simd_zmm;
+
+    CASE_SIMD_SCALAR_FP(_EVEX, 5, 0x6c): /* vcvtts{s,d}2usis xmm/mem,reg */
+    CASE_SIMD_SCALAR_FP(_EVEX, 5, 0x6d): /* vcvtts{s,d}2sis xmm/mem,reg */
+        generate_exception_if((evex.reg != 0xf || !evex.RX || !evex.R ||
+                               evex.opmsk),
+                              X86_EXC_UD);
+        vcpu_must_have(avx10, 2);
+        if ( !evex.brs )
+            avx512_vlen_check(true);
+        else
+            generate_exception_if(ea.type != OP_REG, X86_EXC_UD);
+        get_fpu(X86EMUL_FPU_zmm);
+        opc = init_evex(stub);
+        goto cvts_2si;
+
     case X86EMUL_OPC_EVEX_F2(5, 0x6f): /* vmovrs{b,w} mem,[xyz]mm{k} */
         elem_bytes = 1 << evex.w;
         fallthrough;



From xen-devel-bounces@lists.xenproject.org Thu Apr 09 15:15:48 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 09 Apr 2026 15:15:48 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1277838.1562942 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wAr6g-0007hF-Os; Thu, 09 Apr 2026 15:15:46 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1277838.1562942; Thu, 09 Apr 2026 15:15: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 1wAr6g-0007h4-Kj; Thu, 09 Apr 2026 15:15:46 +0000
Received: by outflank-mailman (input) for mailman id 1277838;
 Thu, 09 Apr 2026 15:15:45 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <jbeulich@suse.com>) id 1wAr6f-0007gt-Ay
 for xen-devel@lists.xenproject.org; Thu, 09 Apr 2026 15:15:45 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wAr6e-001ocu-N3
 for xen-devel@lists.xenproject.org; Thu, 09 Apr 2026 17:15:44 +0200
Received: from [10.42.69.4] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <jbeulich@suse.com>)
 id 69d7c297-5cb7-0a2a0a5109dd-0a2a4504b52c-26
 for <xen-devel@lists.xenproject.org>; Thu, 09 Apr 2026 17:15:44 +0200
Received: from [209.85.128.54] (helo=mail-wm1-f54.google.com)
 by tlsNG-ebf023.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.0)
 (envelope-from <jbeulich@suse.com>)
 id 69d7c2a0-bb33-0a2a45040019-d1558036a96d-3
 for <xen-devel@lists.xenproject.org>; Thu, 09 Apr 2026 17:15:44 +0200
Received: by mail-wm1-f54.google.com with SMTP id
 5b1f17b1804b1-488b3f8fa2bso13141645e9.1
 for <xen-devel@lists.xenproject.org>; Thu, 09 Apr 2026 08:15:44 -0700 (PDT)
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-488cd0f0991sm27045945e9.11.2026.04.09.08.15.43
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Thu, 09 Apr 2026 08:15:43 -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=google header.d=suse.com header.i="@suse.com" header.h="Content-Transfer-Encoding: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=1775747744; x=1776352544; darn=lists.xenproject.org;
        h=content-transfer-encoding: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;
        bh=xd+P/nLZNlhJ5AosjFbcFU2n+vCF+VFPeqgrh3HTVCQ=;
        b=GFekNwGuydXH1iXdTa3h9/vIzVr6fGLSuKe2RMU8lMH2eudJiwqd7mRjIf13w9LAsM
         fOtiCLNwdU3yTCZuDwpd34Fh4RUsek7hJS/iXUC6Y0bGFx96iRLk026ThknKOzKtfJ9+
         YT4D2Q0Dh3y3QZlpNs7onzO4GYALyv3PbLZSML0FWMJM6j/zOuoQisz59hs0gjZrgv7X
         JRsB5S7JPkvXwYm9NJop9fV70xlSeeYhI7cLN/ySwezkyFWZMHEf/cFEpGxd8PYQ2adk
         xSKF6tBzHzA7o0mz0JnYPvCATEIiFiHSRsCVCPBNx31/ZLmaKXVszrz1Qnsiiyma1C6o
         3Vsw==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20251104; t=1775747744; x=1776352544;
        h=content-transfer-encoding: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;
        bh=xd+P/nLZNlhJ5AosjFbcFU2n+vCF+VFPeqgrh3HTVCQ=;
        b=APlyuBXyoR6blzlu0KK7lyBlGtJYb1We5ICZs+6nQSQ3JVy5CxRSX4ndW1LJ1vj12m
         2+hN4PlTJfQMNVplhuERc6LZEGsuV/tD9N2H8SFWrRisqLTWtn1vQhm3Rgu1fYwe1lEm
         R3rfKwYU8rwsIpWn3PBfAz8BvVqLqVD0oD4+DJ5c37wTMf7AGjaJibRiHZl5rC6hoJWp
         Go2ORAyPUVwAun7VUk82PXO5eV59R/ZghVn0Uqi3SrJgcHM8Z5VD2nSMF/6QosI6chCK
         wCheNWMXl6e1Hv+qwo4G1nZ4WThtnjCjgVvEa1I89poKdwIwVKp69JeJTlgaMxdrEPcx
         HLaQ==
X-Gm-Message-State: AOJu0Yyd0nWSQfbfYDoX/BqzJTtqr1YDjgEwYgUgtfL4pkcLJIDMdsw0
	B2L2dzZkbjzKkXjA+ajcbJpSq6pRSkXg649mKx5vRCN8wzsa/UH5MBb99onQdOp7JvZQBSpmuGp
	e3b+LMg==
X-Gm-Gg: AeBDievDXN7vQkUd4xaOb1it5j8EeXpszL8y2Ww+jU5cBIGBMGkfsKvX60HxMVD2t7e
	oFoDQRV6d4KAamgydnOqzjvGoS4GJcgLSnqI9XDJhrjZjR7QHwKtGr/jNqyC55cDiStC5Jn0RG0
	1AisnOgJJ4VIyiXZlsLqQKzmm1fgh9eVqfqrkysqRG9Ti80WUpi7gTNf1bHhGdsFCdZbt5kWnFE
	2f8EsfIi0IZlhHSY2vR0xFEu8eKjPkbA6SzbqXZ1nhgUwd5Q55ZgqVwYdpYgvHrURj9JWslCEkk
	NoYs7o144bvzDs7hEbt49+QgZAnMrxC2OciFR37jEp29SYnkHhchdhcr8t+wEKolsKORy0f6m7W
	wbkbxgDcvUNyomXYkohNkE3MWf+QMqNM+g4bz9sl+drvAtWNGdRHJEZY8+c7FAbLNb6QX4V0tu3
	sS0p0XLFIz4ocUVP9MJRXaDb/a8efUsP70b5Z11dqMvcKaXZvfdEbCalD75TZZ28zDx9iMAD9jt
	vupoVU6c6SInuU=
X-Received: by 2002:a05:600c:6387:b0:486:faa8:9e4 with SMTP id 5b1f17b1804b1-488d08efdf2mr34378635e9.12.1775747743675;
        Thu, 09 Apr 2026 08:15:43 -0700 (PDT)
Message-ID: <66f59541-29f1-4bfa-a56e-67e827391ca1@suse.com>
Date: Thu, 9 Apr 2026 17:15:41 +0200
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: [PATCH v4 15/16] x86emul: support other AVX10.2 convert insns
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.pau@citrix.com>,
 Teddy Astie <teddy.astie@vates.tech>,
 Oleksii Kurochko <oleksii.kurochko@gmail.com>,
 "community.manager@xenproject.org" <community.manager@xenproject.org>
References: <1e2ff012-b07a-43be-9ba6-290b38d3c97c@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: <1e2ff012-b07a-43be-9ba6-290b38d3c97c@suse.com>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 7bit
X-purgate-ID: tlsNG-ebf023/1775747744-33B3051B-4B7489B5/0/0
X-purgate-type: clean
X-purgate-size: 10749

Despite most of them being about conversion to BF8/HF8, they are still
somewhat similar to various existing convert insns.

Signed-off-by: Jan Beulich <jbeulich@suse.com>
---
SDE: -dmr / -future
---
v4: Update to spec version 3. Switch to using fallthrough pseudo-keyword.
    Series re-ordering adjustments. Update to spec version 6. Add ChangeLog entry.
v3: New.

--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -16,7 +16,7 @@ The format is based on [Keep a Changelog
      mitigate (by rate-limiting) the system wide impact of an HVM guest
      misusing atomic instructions.
    - Support for CPIO microcode in discrete multiboot modules.
-   - Support for AVX10.1. (Experimental)
+   - Support for AVX10.2. (Experimental)
 
  - On Arm:
    - Support for guest suspend and resume to/from RAM via vPSCI.
--- a/tools/tests/x86_emulator/evex-disp8.c
+++ b/tools/tests/x86_emulator/evex-disp8.c
@@ -727,8 +727,22 @@ static const struct test avx10_2_all[] =
     INSN(comisbf16,        66, map5, 2f,    el, bf16, el),
     INSN_SFP(comx,               0f, 2f),
     INSN(comxsh,           f3, map5, 2f,    el, fp16, el),
+    INSN(cvt2ph2bf8,       f2, 0f38, 74,    vl, fp16, vl),
+    INSN(cvt2ph2bf8s,      f2, map5, 74,    vl, fp16, vl),
+    INSN(cvt2ph2hf8,       f2, map5, 18,    vl, fp16, vl),
+    INSN(cvt2ph2hf8s,      f2, map5, 1b,    vl, fp16, vl),
+    INSN(cvt2ps2phx,       66, 0f38, 67,    vl,    d, vl),
+    INSN(cvtbiasph2bf8,      , 0f38, 74,    vl, fp16, vl),
+    INSN(cvtbiasph2bf8s,     , map5, 74,    vl, fp16, vl),
+    INSN(cvtbiasph2hf8,      , map5, 18,    vl, fp16, vl),
+    INSN(cvtbiasph2hf8s,     , map5, 1b,    vl, fp16, vl),
+    INSN(cvthf82ph,        f2, map5, 1e,  vl_2,    b, vl),
     INSN(cvtbf162ibs,      f2, map5, 69,    vl, bf16, vl),
     INSN(cvtbf162iubs,     f2, map5, 6b,    vl, bf16, vl),
+    INSN(cvtph2bf8,        f3, 0f38, 74,    vl, fp16, vl),
+    INSN(cvtph2bf8s,       f3, map5, 74,    vl, fp16, vl),
+    INSN(cvtph2hf8,        f3, map5, 18,    vl, fp16, vl),
+    INSN(cvtph2hf8s,       f3, map5, 1b,    vl, fp16, vl),
     INSN(cvtph2ibs,          , map5, 69,    vl, fp16, vl),
     INSN(cvtph2iubs,         , map5, 6b,    vl, fp16, vl),
     INSN(cvtps2ibs,        66, map5, 69,    vl,    d, vl),
--- a/tools/tests/x86_emulator/predicates.c
+++ b/tools/tests/x86_emulator/predicates.c
@@ -1952,6 +1952,7 @@ static const struct evex {
     { { 0x64 }, 2, T, R, pfx_66, Wn, Ln }, /* vpblendm{d,q} */
     { { 0x65 }, 2, T, R, pfx_66, Wn, Ln }, /* vblendmp{s,d} */
     { { 0x66 }, 2, T, R, pfx_66, Wn, Ln }, /* vpblendm{b,w} */
+    { { 0x67 }, 2, T, R, pfx_66, W0, Ln }, /* vcvt2ps2phx */
     { { 0x68 }, 2, T, R, pfx_f2, Wn, Ln }, /* vp2intersect{d,q} */
     { { 0x70 }, 2, T, R, pfx_66, W1, Ln }, /* vpshldvw */
     { { 0x71 }, 2, T, R, pfx_66, Wn, Ln }, /* vpshldv{d,q} */
@@ -1959,6 +1960,9 @@ static const struct evex {
     { { 0x72 }, 2, T, R, pfx_f3, W1, Ln }, /* vcvtneps2bf16 */
     { { 0x72 }, 2, T, R, pfx_f2, W1, Ln }, /* vcvtne2ps2bf16 */
     { { 0x73 }, 2, T, R, pfx_66, Wn, Ln }, /* vpshrdv{d,q} */
+    { { 0x74 }, 2, T, R, pfx_no, W0, Ln }, /* vcvtbiasph2bf8 */
+    { { 0x74 }, 2, T, R, pfx_f3, W0, Ln }, /* vcvtph2bf8 */
+    { { 0x74 }, 2, T, R, pfx_f2, W0, Ln }, /* vcvt2ph2bf8 */
     { { 0x75 }, 2, T, R, pfx_66, Wn, Ln }, /* vpermi2{b,w} */
     { { 0x76 }, 2, T, R, pfx_66, Wn, Ln }, /* vpermi2{d,q} */
     { { 0x77 }, 2, T, R, pfx_66, Wn, Ln }, /* vpermi2p{s,d} */
@@ -2124,8 +2128,15 @@ static const struct evex {
 }, evex_map5[] = {
     { { 0x10 }, 2, T, R, pfx_f3, W0, LIG }, /* vmovsh */
     { { 0x11 }, 2, T, W, pfx_f3, W0, LIG }, /* vmovsh */
+    { { 0x18 }, 2, T, R, pfx_no, W0, Ln }, /* vcvtbiasph2hf8 */
+    { { 0x18 }, 2, T, R, pfx_f3, W0, Ln }, /* vcvtph2hf8 */
+    { { 0x18 }, 2, T, R, pfx_f2, W0, Ln }, /* vcvt2ph2hf8 */
+    { { 0x1b }, 2, T, R, pfx_no, W0, Ln }, /* vcvtbiasph2hf8s */
+    { { 0x1b }, 2, T, R, pfx_f3, W0, Ln }, /* vcvtph2hf8s */
+    { { 0x1b }, 2, T, R, pfx_f2, W0, Ln }, /* vcvt2ph2hf8s */
     { { 0x1d }, 2, T, R, pfx_66, W0, Ln }, /* vcvtps2phx */
     { { 0x1d }, 2, T, R, pfx_no, W0, LIG }, /* vcvtss2sh */
+    { { 0x1e }, 2, T, R, pfx_f2, W0, Ln }, /* cvthf82ph */
     { { 0x2a }, 2, T, R, pfx_f3, Wn, LIG }, /* vcvtsi2sh */
     { { 0x2c }, 2, T, R, pfx_f3, Wn, LIG }, /* vcvttsh2si */
     { { 0x2d }, 2, T, R, pfx_f3, Wn, LIG }, /* vcvtsh2si */
@@ -2187,6 +2198,9 @@ static const struct evex {
     { { 0x6e }, 2, T, R, pfx_f3, W0, L0 }, /* vmovw */
     { { 0x6f }, 2, T, R, pfx_f3, Wn, Ln }, /* vmovrs{d,q} */
     { { 0x6f }, 2, T, R, pfx_f2, Wn, Ln }, /* vmovrs{b,w} */
+    { { 0x74 }, 2, T, R, pfx_no, W0, Ln }, /* vcvtbiasph2bf8s */
+    { { 0x74 }, 2, T, R, pfx_f3, W0, Ln }, /* vcvtph2bf8s */
+    { { 0x74 }, 2, T, R, pfx_f2, W0, Ln }, /* vcvt2ph2bf8s */
     { { 0x78 }, 2, T, R, pfx_no, W0, Ln }, /* vcvttph2udq */
     { { 0x78 }, 2, T, R, pfx_66, W0, Ln }, /* vcvttph2uqq */
     { { 0x78 }, 2, T, R, pfx_f3, Wn, LIG }, /* vcvttsh2usi */
--- a/xen/arch/x86/x86_emulate/decode.c
+++ b/xen/arch/x86/x86_emulate/decode.c
@@ -378,8 +378,10 @@ static const struct ext0f38_table {
     [0x62] = { .simd_size = simd_packed_int, .two_op = 1, .d8s = d8s_bw },
     [0x63] = { .simd_size = simd_packed_int, .to_mem = 1, .two_op = 1, .d8s = d8s_bw },
     [0x64 ... 0x66] = { .simd_size = simd_packed_int, .d8s = d8s_vl },
+    [0x67] = { .simd_size = simd_other, .d8s = d8s_vl },
     [0x68] = { .simd_size = simd_packed_int, .d8s = d8s_vl },
     [0x70 ... 0x73] = { .simd_size = simd_packed_int, .d8s = d8s_vl },
+    [0x74] = { .simd_size = simd_other, .d8s = d8s_vl },
     [0x75 ... 0x76] = { .simd_size = simd_packed_int, .d8s = d8s_vl },
     [0x77] = { .simd_size = simd_packed_fp, .d8s = d8s_vl },
     [0x78] = { .simd_size = simd_other, .two_op = 1 },
@@ -1439,6 +1441,15 @@ int x86emul_decode(struct x86_emulate_st
             s->simd_size = ext0f38_table[b].simd_size;
             if ( evex_encoded() )
             {
+                switch ( b )
+                {
+                case 0x74: /* cvt{bias,ne,ne2}ph2bf8 */
+                    s->fp16 = true;
+                    if ( s->evex.pfx != vex_f2 )
+                        d |= TwoOp;
+                    break;
+                }
+
                 /*
                  * VPMOVUS* are identical to VPMOVS* Disp8-scaling-wise, but
                  * their attributes don't match those of the vex_66 encoded
@@ -1586,6 +1597,23 @@ int x86emul_decode(struct x86_emulate_st
 
             switch ( b )
             {
+            case 0x18: /* vcvt{bias,ne,ne2}ph2hf8 */
+            case 0x1b: /* vcvt{bias,ne,ne2}ph2hf8s */
+            case 0x74: /* vcvt{bias,ne,ne2}ph2bf8s */
+                s->fp16 = true;
+                d = DstReg | SrcMem;
+                if ( s->evex.pfx != vex_f2 )
+                    d |= TwoOp;
+                s->simd_size = simd_other;
+                disp8scale = s->evex.brs ? 1 : 4 + s->evex.lr;
+                break;
+
+            case 0x1e: /* vcvthf82ph */
+                d = DstReg | SrcMem | TwoOp;
+                s->simd_size = simd_other;
+                disp8scale = 3 + s->evex.lr;
+                break;
+
             case 0x78:
             case 0x79:
                 /* vcvt{,t}ph2u{d,q}q need special casing */
--- a/xen/arch/x86/x86_emulate/x86_emulate.c
+++ b/xen/arch/x86/x86_emulate/x86_emulate.c
@@ -6243,6 +6243,30 @@ x86_emulate(
         }
         goto simd_zmm;
 
+    case X86EMUL_OPC_EVEX   (0x0f38, 0x74): /* vcvtbiasph2bf8 [xyz]mm,[xyz]mm/mem{k} */
+    case X86EMUL_OPC_EVEX_F3(0x0f38, 0x74): /* vcvtph2bf8 [xyz]mm,[xyz]mm/mem{k} */
+    case X86EMUL_OPC_EVEX_F2(0x0f38, 0x74): /* vcvt2ph2bf8 [xyz]mm,[xyz]mm,[xyz]mm/mem{k} */
+    case X86EMUL_OPC_EVEX   (     5, 0x18): /* vcvtbiasph2hf8 [xyz]mm,[xyz]mm/mem{k} */
+    case X86EMUL_OPC_EVEX_F3(     5, 0x18): /* vcvtph2hf8 [xyz]mm,[xyz]mm/mem{k} */
+    case X86EMUL_OPC_EVEX_F2(     5, 0x18): /* vcvt2ph2hf8 [xyz]mm,[xyz]mm,[xyz]mm/mem{k} */
+    case X86EMUL_OPC_EVEX   (     5, 0x1b): /* vcvtbiasph2hf8s [xyz]mm,[xyz]mm/mem{k} */
+    case X86EMUL_OPC_EVEX_F3(     5, 0x1b): /* vcvtph2hf8s [xyz]mm,[xyz]mm/mem{k} */
+    case X86EMUL_OPC_EVEX_F2(     5, 0x1b): /* vcvt2ph2hf8s [xyz]mm,[xyz]mm,[xyz]mm/mem{k} */
+    case X86EMUL_OPC_EVEX   (     5, 0x74): /* vcvtbiasph2bf8s [xyz]mm,[xyz]mm/mem{k} */
+    case X86EMUL_OPC_EVEX_F3(     5, 0x74): /* vcvtph2bf8s [xyz]mm,[xyz]mm/mem{k} */
+    case X86EMUL_OPC_EVEX_F2(     5, 0x74): /* vcvt2ph2bf8s [xyz]mm,[xyz]mm,[xyz]mm/mem{k} */
+        generate_exception_if(ea.type != OP_MEM && evex.brs, X86_EXC_UD);
+        fault_suppression = false;
+        fallthrough;
+    case X86EMUL_OPC_EVEX_66(0x0f38, 0x67): /* vcvt2ps2phx [xyz]mm,[xyz]mm,[xyz]mm/mem{k} */
+        generate_exception_if(evex.w, X86_EXC_UD);
+        if ( !cp->avx10.avx10_v1_aux )
+            vcpu_must_have(avx10, 2);
+        if ( ea.type != OP_REG || !evex.brs )
+            avx512_vlen_check(false);
+        op_bytes = 16 << evex.lr;
+        goto simd_zmm;
+
     case X86EMUL_OPC_EVEX_F2(0x0f38, 0x68): /* vp2intersect{d,q} [xyz]mm/mem,[xyz]mm,k+1 */
         host_and_vcpu_must_have(avx512_vp2intersect);
         generate_exception_if(evex.opmsk || !evex.r || !evex.R, X86_EXC_UD);
@@ -7946,6 +7970,15 @@ x86_emulate(
         generate_exception_if(evex.w, X86_EXC_UD);
         goto avx512f_all_fp;
 
+    case X86EMUL_OPC_EVEX_F2(5, 0x1e): /* vcvthf82ph [xyz]mm,[xyz]mm/mem{k} */
+        generate_exception_if(evex.w || evex.brs, X86_EXC_UD);
+        if ( !cp->avx10.avx10_v1_aux )
+            vcpu_must_have(avx10, 2);
+        if ( ea.type != OP_REG || !evex.brs )
+            avx512_vlen_check(false);
+        op_bytes = 8 << evex.lr;
+        goto simd_zmm;
+
     case X86EMUL_OPC_EVEX_66(5, 0x51): /* vsqrtbf16 [xyz]mm/mem,[xyz]mm{k} */
     case X86EMUL_OPC_EVEX_66(5, 0x58): /* vaddbf16 [xyz]mm/mem,[xyz]mm,[xyz]mm{k} */
     case X86EMUL_OPC_EVEX_66(5, 0x59): /* vmulbf16 [xyz]mm/mem,[xyz]mm,[xyz]mm{k} */
--- a/xen/include/public/arch-x86/cpufeatureset.h
+++ b/xen/include/public/arch-x86/cpufeatureset.h
@@ -410,7 +410,7 @@ XEN_CPUFEATURE(TSA_SQ_NO,          18*32
 XEN_CPUFEATURE(TSA_L1_NO,          18*32+ 2) /*A  No L1D Transitive Scheduler Attacks */
 
 /* Intel-defined CPU features, CPUID level 0x00000024:1.ecx, word 19 */
-XEN_CPUFEATURE(AVX10_V1_AUX,       19*32+ 2) /*   AVX10 V1 Auxiliary Instructions */
+XEN_CPUFEATURE(AVX10_V1_AUX,       19*32+ 2) /*a  AVX10 V1 Auxiliary Instructions */
 
 #endif /* XEN_CPUFEATURE */
 



From xen-devel-bounces@lists.xenproject.org Thu Apr 09 15:16:24 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 09 Apr 2026 15:16:24 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1277846.1562951 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wAr7I-0008C7-00; Thu, 09 Apr 2026 15:16:24 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1277846.1562951; Thu, 09 Apr 2026 15:16: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 1wAr7H-0008By-TN; Thu, 09 Apr 2026 15:16:23 +0000
Received: by outflank-mailman (input) for mailman id 1277846;
 Thu, 09 Apr 2026 15:16:22 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <bounce-md_30504962.69d7c2c4.v1-ae2112f9b0334547b0aa29321297f94e@bounce.vates.tech>)
 id 1wAr7G-0008Bh-RV
 for xen-devel@lists.xenproject.org; Thu, 09 Apr 2026 15:16:22 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wAr7G-001ojt-6y
 for xen-devel@lists.xenproject.org; Thu, 09 Apr 2026 17:16:22 +0200
Received: from [10.42.69.5] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1) (envelope-from
 <bounce-md_30504962.69d7c2c4.v1-ae2112f9b0334547b0aa29321297f94e@bounce.vates.tech>)
 id 69d7c2bd-5cb7-0a2a0a5109dd-0a2a4505ee44-20
 for <xen-devel@lists.xenproject.org>; Thu, 09 Apr 2026 17:16:22 +0200
Received: from [198.2.187.1] (helo=mail187-1.suw11.mandrillapp.com)
 by tlsNG-c201ff.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.0)
 (envelope-from
 <bounce-md_30504962.69d7c2c4.v1-ae2112f9b0334547b0aa29321297f94e@bounce.vates.tech>)
 id 69d7c2c4-3760-0a2a45050019-c602bb01e5ee-3
 for <xen-devel@lists.xenproject.org>; Thu, 09 Apr 2026 17:16:21 +0200
Received: from pmta09.mandrill.prod.suw01.rsglab.com (localhost [127.0.0.1])
 by mail187-1.suw11.mandrillapp.com (Mailchimp) with ESMTP id 4fs3Rm4L3SzBsTqR0
 for <xen-devel@lists.xenproject.org>; Thu,  9 Apr 2026 15:16:20 +0000 (GMT)
Received: from [37.26.189.201] by mandrillapp.com id
 ae2112f9b0334547b0aa29321297f94e; Thu, 09 Apr 2026 15:16: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=mte1 header.d=mandrillapp.com header.i="@mandrillapp.com" header.h="From:Subject:Message-Id:To:Cc:References:In-Reply-To:Feedback-ID:Date:MIME-Version:Content-Type:Content-Transfer-Encoding"; dkim=pass header.s=mte1 header.d=vates.tech header.i="thierry.escande@vates.tech" header.h="From:Subject:Message-Id:To:Cc:References:In-Reply-To:Feedback-ID:Date:MIME-Version:Content-Type:Content-Transfer-Encoding"
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=mandrillapp.com;
	s=mte1; t=1775747780; x=1776017780;
	bh=u4G5b8BzRpgdq0ECTOrqeR4d4eU9e202pjwonFRVo98=;
	h=From:Subject:Message-Id:To:Cc:References:In-Reply-To:Feedback-ID:
	 Date:MIME-Version:Content-Type:Content-Transfer-Encoding:CC:Date:
	 Subject:From;
	b=Zhj/jjrJ6jaroSQ1ldY2+DACqhPTEUXwDmT561M9UQgYCMBX8EWDUmR30oTHLRVmb
	 poM3Ezyi+J1FPqNqQDmsiD5DmQazO5VZ0FeFdY9mkv13lLTX88DEc8IrAxG/PIV74A
	 Kjx2WJUtXNbRtxVQK257ZDhQ8XQNikc0hk25GLpSTb2wkq+nfrU9NgnunNYbBmIjaj
	 pNEFFCDlo913Ap7Qb9afIVkj23OWnY07b8FW0hIKr2FFpsTkU5N37t/sgngaQETg83
	 6JWBvMUBvzGtrILTOL0kIgG5GvojKwLBN/SPNVORZ/zw+6QaT0NByewUnfGZX02ygm
	 ieh77KfzLE1sw==
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=vates.tech; s=mte1;
	t=1775747780; x=1776008280; i=thierry.escande@vates.tech;
	bh=u4G5b8BzRpgdq0ECTOrqeR4d4eU9e202pjwonFRVo98=;
	h=From:Subject:Message-Id:To:Cc:References:In-Reply-To:Feedback-ID:
	 Date:MIME-Version:Content-Type:Content-Transfer-Encoding:CC:Date:
	 Subject:From;
	b=wgKkesW0hJ9UoVGORaBS7fiNZwgsq7yyUxbnaIJGtcM6y8uE6z6dfKgHzyLiYE6e6
	 X/LLB9NeF0pSz2FFpqazGOM7TgVgPz53auTWSkcV6FNCpGpt/9W1B9ExQglfDVQl0v
	 psKCfII148dzkuMKtGubfB+7IbROfOGj0D26eYrsC9a29KyJR1bCKqXdXYc5ALoQKt
	 3IpEhOiEUzTxE2u0+LRD16PakGiFCrsUPxpf0lFfSoL638fcs7AKZL0VkpavB0WeEQ
	 XSIZDNPJKF6GzXZNknwiqUsVD8K2KF8eORmWkw7NtDVeaRXlBIgwiihbYkuWjQ8qqP
	 7eDQIDCz7Np3w==
From: "Thierry Escande" <thierry.escande@vates.tech>
Subject: =?utf-8?Q?Re:=20[RFC=20PATCH=200/3]=20xl:=20Allow=20PCI=20devices=20to=20be=20passthrough'd=20via=20Qemu=20command=20line?=
X-Bm-Disclaimer: Yes
X-Bm-Milter-Handled: 4ffbd6c1-ee69-4e1b-aabd-f977039bd3e2
X-Bm-Transport-Timestamp: 1775747779696
Message-Id: <25920654-0423-49de-8245-ac6212a405cd@vates.tech>
To: "=?utf-8?Q?Marek=20Marczykowski-G=C3=B3recki?=" <marmarek@invisiblethingslab.com>
Cc: xen-devel@lists.xenproject.org, "Anthony PERARD" <anthony.perard@vates.tech>, "Juergen Gross" <jgross@suse.com>, "=?utf-8?Q?Daniel=20P.=20Berrang=C3=A9?=" <berrange@redhat.com>
References: <20260408172320.539750-1-thierry.escande@vates.tech> <add8iXLvyWlYkrpM@mail-itl>
In-Reply-To: <add8iXLvyWlYkrpM@mail-itl>
X-Native-Encoded: 1
X-Report-Abuse: =?UTF-8?Q?Please=20forward=20a=20copy=20of=20this=20message,=20including=20all=20headers,=20to=20abuse@mandrill.com.=20You=20can=20also=20report=20abuse=20here:=20https://mandrillapp.com/contact/abuse=3Fid=3D30504962.ae2112f9b0334547b0aa29321297f94e?=
X-Mandrill-User: md_30504962
Feedback-ID: 30504962:30504962.20260409:md
Date: Thu, 09 Apr 2026 15:16:20 +0000
MIME-Version: 1.0
Content-Type: text/plain; charset=utf-8
Content-Transfer-Encoding: quoted-printable
X-purgate-ID: tlsNG-c201ff/1775747782-32B2096F-E28E017E/0/0
X-purgate-type: clean
X-purgate-size: 2192



On 4/9/26 12:16, Marek Marczykowski-G=C3=B3recki wrote:
> On Wed, Apr 08, 2026 at 05:23:39PM +0000, Thierry Escande wrote:
>> This series adds support for a new 'hotplug' option for PCI devices to b=
e
>> passthrough'd to guests.
>>
>> The current mechanism for device passthrough uses QMP device_add command
>> to hot-plug PCI devices to the guest Qemu instance. This is an issue for
>> guests running on Q35 chipset (preliminary support posted at [1]) since =
the
>> Q35 PCI root bus does not support hotplug. Devices could be hotplugged t=
o
>> a secondary PCI bus but Xen only support 1 PCI bus for now.
>>
>> The 'hotplug' option allows to control how devices are attached to the
>> guest, either by using the legacy QMP mechanism (this is the default) or=
 by
>> passing it directly to the Qemu command line using xen-pci-passthrough
>> device.
>>
>> Example usage in cfg file:
>>  pci =3D [ "00:03.0,seize=3D1,hotplug=3D0" ]
>>
>> Since Qemu -device option accepts parameters in json format, this
>> patchset adds a new internal function libxl__device_pci_get_qmp_json() t=
hat
>> generates the device json object used for both QMP hotplug and command l=
ine
>> passing.
>> Also, the function libxl_pci_assignable() is made available from libxl.h
>> for access in libxl_dm.c. I don't know if it's ok to make it public or i=
f
>> it should stay private. Maybe it should be renamed as
>> libxl_device_pci_assignable() to match the other PCI device APIs.
>>
>> This has been successfully tested on Xen 4.22-dev and Qemu 10.0 running
>> Debian VMs in both Bios and UEFI mode with a passthrough'd nvme disk.
>> Disabling the hotplug mechanism might be made mandatory for Q35 machines
>> later, once Q35 support is merged upstream.
> 
> Generally I like the approach, and it looks sensible on the first look.
> But CI says it fails to build:
> https://gitlab.com/xen-project/people/marmarek/xen/-/pipelines/2439831766
> 

I completely skipped YAJL support. My bad. I'll send a v2 pretty soon.

Regards,
Thierry



--
Thierry Escande | Vates XCP-ng Developer

XCP-ng & Xen Orchestra - Vates solutions

web: https://vates.tech




From xen-devel-bounces@lists.xenproject.org Thu Apr 09 15:16:50 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 09 Apr 2026 15:16:50 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1277852.1562959 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wAr7g-0000C6-7N; Thu, 09 Apr 2026 15:16:48 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1277852.1562959; Thu, 09 Apr 2026 15:16: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 1wAr7g-0000Bz-4p; Thu, 09 Apr 2026 15:16:48 +0000
Received: by outflank-mailman (input) for mailman id 1277852;
 Thu, 09 Apr 2026 15:16:46 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <jbeulich@suse.com>) id 1wAr7e-0000BP-7z
 for xen-devel@lists.xenproject.org; Thu, 09 Apr 2026 15:16:46 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wAr7d-00CmTr-KJ
 for xen-devel@lists.xenproject.org; Thu, 09 Apr 2026 17:16:45 +0200
Received: from [10.42.69.9] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <jbeulich@suse.com>)
 id 69d7c2dc-2eae-0a2a0a5409dd-0a2a4509cfb6-2
 for <xen-devel@lists.xenproject.org>; Thu, 09 Apr 2026 17:16:45 +0200
Received: from [209.85.128.44] (helo=mail-wm1-f44.google.com)
 by tlsNG-bad1c0.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.0)
 (envelope-from <jbeulich@suse.com>)
 id 69d7c2dd-bf79-0a2a45090019-d155802ca98a-3
 for <xen-devel@lists.xenproject.org>; Thu, 09 Apr 2026 17:16:45 +0200
Received: by mail-wm1-f44.google.com with SMTP id
 5b1f17b1804b1-488b3f8fa2bso13160625e9.1
 for <xen-devel@lists.xenproject.org>; Thu, 09 Apr 2026 08:16:45 -0700 (PDT)
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-488cd0cbea7sm26729375e9.6.2026.04.09.08.16.43
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Thu, 09 Apr 2026 08:16:44 -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=google header.d=suse.com header.i="@suse.com" header.h="Content-Transfer-Encoding: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=1775747805; x=1776352605; darn=lists.xenproject.org;
        h=content-transfer-encoding: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;
        bh=v+iaE1R216FimeHL2+m+TLpXQymHeRezEIEvo5K46i4=;
        b=RCd0S9ARdsPJexQs9HPEHAZv8M6hHY81suEm4GzhDz/SC1Q9uiTe7JVFzDzAsgoM3E
         3CZZT5FDfgD4vTuqPIfMX6jzV9oeTNWyyVMTmrqkb8/n44MrM5x/yCu1Onvh6dr6tKji
         Oed49yAFUe5KgVBWNGGATxEkOQNI1Ll/7Q2I03CBfcx53WAL0VIdIHCsbhM5ppIcipME
         ASaj/OxeMo/SRx3gKk2M5qBdUT/q0VMKgmr+LL4Dv7JQ3j2J7TGEJ/g+uZerHtRGZ9Pp
         peIm/suwcaTnsfoehMJcMNHVGXM4QqW5Cpim4VafO5bZTMzxGumqUGkkH33kodvPxh7g
         gtNA==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20251104; t=1775747805; x=1776352605;
        h=content-transfer-encoding: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;
        bh=v+iaE1R216FimeHL2+m+TLpXQymHeRezEIEvo5K46i4=;
        b=laTwwyB1+yNO4JxUonqSEBAF6hahF/iLpuzpHGLdugQSGfcuxpRctrCfDwEbX27BvH
         PEkYT70HCwu0U0GNLNmE49KYo+lgFwGUCTPI7+3NsIQEsK585yLv5yQPAVYydi6A6iPu
         Vx6D86NgiSwX6Vopu8/PcI/sPRlzKsX2RWmIUnRw+RkQQqvyMjx353fjT0XXTLsp3eb9
         mOn7lTcdl6341KYYm5fBdLxjFqJwJpwnXVRgWPEJ4J/RE3cLTHaUieMgGmaFxwYX96gt
         PM+hRDHcREFq50aIysagGfOgKYK1zkwshWTzdCBNfKXez9wc8Hkyp55zSccR26EZ1XVx
         tO4Q==
X-Gm-Message-State: AOJu0Yy2arBvKdDLJpWOnmQZOo93KY6Z6DTmJIjwB0goJYFllgFHsXIe
	Idmdj+T3W/eLgnw6w9+iDYCbxE1dwBV+NzK6IinEYLlWTasBISHsHNN1mX8f3JUjSii6XqvpeP7
	rjn02rg==
X-Gm-Gg: AeBDieuDfu55uXPRNz+DTKDr9Hbjuqg+d7Pg646pol7KtqpiifET5SBzT5ihtn6ACiW
	wK2BpZNwp3S/dO+RustVEKQ3BGXfDW2WgA/N/WgbXkkshJOouAUIFrseidVwSOlkc11eMYPch8f
	cGzngBSbsGr97Mt5wKme6jdaP3tOKfLE30bzzTrOXHUX9mFd8+M8kl85GPrpk3pvrFJTSw2mBhf
	qrG/QRjGT6+Wq0Hiy9W2xZsROzfDLDQ0IP7Z+cj/hIFnhUTQNZ1gVJM8r/H+D0kqxsoMwT3MB+w
	300SuHYrdCxTSE//2VccyvcFx1RDb4U8i6uWT2dN5K3nxmQ64UNhfvNzdyDL5+V847pN+8odO5k
	ufKX6L1KJuafWbmxKrgcoL64c6RtOD+nv+yLaHtRD1ve+zXMKbxl0MMTv/IBxFe2PJSlLTcin+7
	3ZOYc6Dq8fmSqdAMmHbdQPp7d++WvVSBmrMQJDo9bq6VibU4EkD4dKTbR26ujbQETHQmsxY4WDi
	XCTmf/xCGZ6LigQSTVviGtVvg==
X-Received: by 2002:a05:600c:354f:b0:488:c239:d498 with SMTP id 5b1f17b1804b1-488cd557418mr53176105e9.8.1775747804824;
        Thu, 09 Apr 2026 08:16:44 -0700 (PDT)
Message-ID: <bdf60f69-6d1f-4332-9575-671d475c542e@suse.com>
Date: Thu, 9 Apr 2026 17:16:42 +0200
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: [PATCH v4 00.9/16] x86/CPUID: enable AVX10 leaf
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.pau@citrix.com>,
 Teddy Astie <teddy.astie@vates.tech>
References: <1e2ff012-b07a-43be-9ba6-290b38d3c97c@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: <1e2ff012-b07a-43be-9ba6-290b38d3c97c@suse.com>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 7bit
X-purgate-ID: tlsNG-bad1c0/1775747805-54364152-F06AC54C/0/0
X-purgate-type: clean
X-purgate-size: 13690

This requires bumping the number of basic leaves we support. Apart from
this the logic is modeled as closely as possible after that of leaf 7
handling.

Signed-off-by: Jan Beulich <jbeulich@suse.com>
---
The gen-cpuid.py adjustment is merely the minimum needed. It's not
really clear to me whether someone turning off e.g. AVX512BW might then
also validly expect AVX10 to be turned off.

Do we want to synthesize AVX10 in the (max?) policies when all necessary
AVX512* features are available, thus allowing migration from an AVX10
host to a suitable non-AVX10 one?

The prior vsz<N> bits are now defined as reserved-at-1: No idea yet how
to represent this properly.

How a toolstack side equivalent (if any) of the init_dom0_cpuid_policy()
change would look like is entirely unclear to me. How much should we
take from the max policy, and how much should we permit/require the user
to specify (and how would the latter look like)?

While, as per a comment next to the call site of
recalculate_cpuid_policy(), recalculate_*() are supposed to go away when
x86_cpu_policies_are_compatible() is complete, some of the checking done
in recalculate_misc() really wouldn't below there. We'd need another "is
self-consistent" checking function.
---
v4: Drop all traces of AVX10/256. Add max_subleaf check to
    x86_cpu_policies_are_compatible(). Add/adjust vsz<N> checks in
    recalculate_misc(). In the max policies, synthesize AVX512* when
    AVX10 is available.
v3: Re-base.
v2: Add logic to init_dom0_cpuid_policy(). Drop vsz128 field. Re-base.

--- a/xen/arch/x86/cpu-policy.c
+++ b/xen/arch/x86/cpu-policy.c
@@ -211,7 +211,7 @@ static void recalculate_xstate(struct cp
     if ( p->feat.mpx )
         xstates |= X86_XCR0_BNDREGS | X86_XCR0_BNDCSR;
 
-    if ( p->feat.avx512f )
+    if ( p->feat.avx512f || p->feat.avx10 )
         xstates |= X86_XCR0_OPMASK | X86_XCR0_ZMM | X86_XCR0_HI_ZMM;
 
     if ( p->feat.pku )
@@ -272,6 +272,18 @@ static void recalculate_misc(struct cpu_
 
     p->basic.raw[0xc] = EMPTY_LEAF;
 
+    zero_leaves(p->basic.raw, 0xe, 0x23);
+
+    p->avx10.raw[0].b &= 0x000700ff;
+    p->avx10.raw[0].c = 0;
+    p->avx10.raw[0].d = 0;
+    if ( !p->feat.avx10 || !p->avx10.version ||
+         !p->avx10.vsz512 || !p->avx10.vsz256 || !p->avx10.vsz128 )
+    {
+        p->feat.avx10 = false;
+        memset(p->avx10.raw, 0, sizeof(p->avx10.raw));
+    }
+
     p->extd.e1d &= ~CPUID_COMMON_1D_FEATURES;
 
     /* Most of Power/RAS hidden from guests. */
@@ -400,6 +412,7 @@ static void __init guest_common_max_leav
 {
     p->basic.max_leaf       = ARRAY_SIZE(p->basic.raw) - 1;
     p->feat.max_subleaf     = ARRAY_SIZE(p->feat.raw) - 1;
+    p->avx10.max_subleaf    = ARRAY_SIZE(p->avx10.raw) - 1;
     p->extd.max_leaf        = 0x80000000U + ARRAY_SIZE(p->extd.raw) - 1;
 }
 
@@ -408,6 +421,7 @@ static void __init guest_common_default_
 {
     p->basic.max_leaf       = host_cpu_policy.basic.max_leaf;
     p->feat.max_subleaf     = host_cpu_policy.feat.max_subleaf;
+    p->avx10.max_subleaf    = host_cpu_policy.avx10.max_subleaf;
     p->extd.max_leaf        = host_cpu_policy.extd.max_leaf;
 }
 
@@ -503,6 +517,28 @@ static void __init guest_common_max_feat
      * function correctly when migrated here, even if ERMS isn't available.
      */
     __set_bit(X86_FEATURE_ERMS, fs);
+
+    /*
+     * AVX10 is merely a re-declaration of a combination of AVX512 features.
+     * Synthesize the latter from the former, when available.  Doing it the
+     * other way around would also require synthesizing the AVX10 CPUID leaf.
+     */
+    if ( test_bit(X86_FEATURE_AVX10, fs) )
+    {
+        __set_bit(X86_FEATURE_AVX512F, fs);
+        __set_bit(X86_FEATURE_AVX512VL, fs);
+        __set_bit(X86_FEATURE_AVX512BW, fs);
+        __set_bit(X86_FEATURE_AVX512DQ, fs);
+        __set_bit(X86_FEATURE_AVX512_BF16, fs);
+        __set_bit(X86_FEATURE_AVX512_FP16, fs);
+        __set_bit(X86_FEATURE_AVX512CD, fs);
+        __set_bit(X86_FEATURE_AVX512_BITALG, fs);
+        __set_bit(X86_FEATURE_AVX512_IFMA, fs);
+        __set_bit(X86_FEATURE_AVX512_VBMI, fs);
+        __set_bit(X86_FEATURE_AVX512_VBMI2, fs);
+        __set_bit(X86_FEATURE_AVX512_VNNI, fs);
+        __set_bit(X86_FEATURE_AVX512_VPOPCNTDQ, fs);
+    }
 }
 
 static void __init guest_common_default_feature_adjustments(uint32_t *fs)
@@ -966,6 +1002,7 @@ void recalculate_cpuid_policy(struct dom
 
     p->basic.max_leaf   = min(p->basic.max_leaf,   max->basic.max_leaf);
     p->feat.max_subleaf = min(p->feat.max_subleaf, max->feat.max_subleaf);
+    p->avx10.max_subleaf = min(p->avx10.max_subleaf, max->avx10.max_subleaf);
     p->extd.max_leaf    = 0x80000000U | min(p->extd.max_leaf & 0xffff,
                                             ((p->x86_vendor & (X86_VENDOR_AMD |
                                                                X86_VENDOR_HYGON))
@@ -1012,6 +1049,8 @@ void recalculate_cpuid_policy(struct dom
 
     if ( p->basic.max_leaf < XSTATE_CPUID )
         __clear_bit(X86_FEATURE_XSAVE, fs);
+    if ( p->basic.max_leaf < 0x24 )
+        __clear_bit(X86_FEATURE_AVX10, fs);
 
     sanitise_featureset(fs);
 
@@ -1081,9 +1120,18 @@ void __init init_dom0_cpuid_policy(struc
     /* Apply dom0-cpuid= command line settings, if provided. */
     if ( dom0_cpuid_cmdline )
     {
+        const struct cpu_policy *max = is_pv_domain(d)
+            ? (IS_ENABLED(CONFIG_PV)  ?  &pv_max_cpu_policy : NULL)
+            : (IS_ENABLED(CONFIG_HVM) ? &hvm_max_cpu_policy : NULL);
         uint32_t fs[FSCAPINTS];
         unsigned int i;
 
+        if ( !max )
+        {
+            ASSERT_UNREACHABLE();
+            return;
+        }
+
         x86_cpu_policy_to_featureset(p, fs);
 
         for ( i = 0; i < ARRAY_SIZE(fs); ++i )
@@ -1093,6 +1141,13 @@ void __init init_dom0_cpuid_policy(struc
         }
 
         x86_cpu_featureset_to_policy(fs, p);
+
+        /*
+         * Default-off features with their own leaves need those leaves
+         * re-populated from the max policy.
+         */
+        if ( p->feat.avx10 )
+            p->avx10 = max->avx10;
     }
 
     /*
@@ -1125,6 +1180,8 @@ static void __init __maybe_unused build_
                  sizeof(raw_cpu_policy.feat.raw));
     BUILD_BUG_ON(sizeof(raw_cpu_policy.xstate) !=
                  sizeof(raw_cpu_policy.xstate.raw));
+    BUILD_BUG_ON(sizeof(raw_cpu_policy.avx10) !=
+                 sizeof(raw_cpu_policy.avx10.raw));
     BUILD_BUG_ON(sizeof(raw_cpu_policy.extd) !=
                  sizeof(raw_cpu_policy.extd.raw));
 }
--- a/xen/arch/x86/cpuid.c
+++ b/xen/arch/x86/cpuid.c
@@ -226,6 +226,15 @@ void guest_cpuid(const struct vcpu *v, u
             *res = array_access_nospec(p->xstate.raw, subleaf);
             break;
 
+        case 0x24:
+            ASSERT(p->avx10.max_subleaf < ARRAY_SIZE(p->avx10.raw));
+            if ( subleaf > min_t(uint32_t, p->avx10.max_subleaf,
+                                 ARRAY_SIZE(p->avx10.raw) - 1) )
+                return;
+
+            *res = array_access_nospec(p->avx10.raw, subleaf);
+            break;
+
         default:
             *res = array_access_nospec(p->basic.raw, leaf);
             break;
--- a/xen/arch/x86/lib/cpu-policy/copy-to-buffer.c
+++ b/xen/arch/x86/lib/cpu-policy/copy-to-buffer.c
@@ -123,6 +123,13 @@ int x86_cpuid_copy_to_buffer(const struc
             break;
         }
 
+        case 0x24:
+            for ( subleaf = 0;
+                  subleaf <= MIN(p->avx10.max_subleaf,
+                                 ARRAY_SIZE(p->avx10.raw) - 1); ++subleaf )
+                COPY_LEAF(leaf, subleaf, &p->avx10.raw[subleaf]);
+            break;
+
         default:
             COPY_LEAF(leaf, XEN_CPUID_NO_SUBLEAF, &p->basic.raw[leaf]);
             break;
--- a/xen/arch/x86/lib/cpu-policy/copy-from-buffer.c
+++ b/xen/arch/x86/lib/cpu-policy/copy-from-buffer.c
@@ -108,6 +108,13 @@ int x86_cpuid_copy_from_buffer(struct cp
                 array_access_nospec(p->xstate.raw, data.subleaf) = l;
                 break;
 
+            case 0x24:
+                if ( data.subleaf >= ARRAY_SIZE(p->avx10.raw) )
+                    goto out_of_range;
+
+                array_access_nospec(p->avx10.raw, data.subleaf) = l;
+                break;
+
             default:
                 if ( data.subleaf != XEN_CPUID_NO_SUBLEAF )
                     goto out_of_range;
--- a/xen/arch/x86/lib/cpu-policy/cpuid.c
+++ b/xen/arch/x86/lib/cpu-policy/cpuid.c
@@ -125,6 +125,7 @@ void x86_cpu_policy_fill_native(struct c
         switch ( i )
         {
         case 0x4: case 0x7: case 0xb: case 0xd:
+        case 0x24:
             /* Multi-invocation leaves.  Deferred. */
             continue;
         }
@@ -218,6 +219,15 @@ void x86_cpu_policy_fill_native(struct c
         }
     }
 
+    if ( p->basic.max_leaf >= 0x24 )
+    {
+        cpuid_count_leaf(0x24, 0, &p->avx10.raw[0]);
+
+        for ( i = 1; i <= MIN(p->avx10.max_subleaf,
+                              ARRAY_SIZE(p->avx10.raw) - 1); ++i )
+            cpuid_count_leaf(0x24, i, &p->avx10.raw[i]);
+    }
+
     /* Extended leaves. */
     cpuid_leaf(0x80000000U, &p->extd.raw[0]);
     for ( i = 1; i <= MIN(p->extd.max_leaf & 0xffffU,
@@ -287,6 +297,9 @@ void x86_cpu_policy_clear_out_of_range_l
                     ARRAY_SIZE(p->xstate.raw) - 1);
     }
 
+    if ( p->basic.max_leaf < 0x24 )
+        memset(p->avx10.raw, 0, sizeof(p->avx10.raw));
+
     zero_leaves(p->extd.raw,
                 ((p->extd.max_leaf >> 16) == 0x8000
                  ? (p->extd.max_leaf & 0xffff) + 1 : 0),
@@ -299,6 +312,8 @@ void __init x86_cpu_policy_bound_max_lea
         min_t(uint32_t, p->basic.max_leaf, ARRAY_SIZE(p->basic.raw) - 1);
     p->feat.max_subleaf =
         min_t(uint32_t, p->feat.max_subleaf, ARRAY_SIZE(p->feat.raw) - 1);
+    p->avx10.max_subleaf =
+        min_t(uint32_t, p->avx10.max_subleaf, ARRAY_SIZE(p->avx10.raw) - 1);
     p->extd.max_leaf = 0x80000000U | min_t(uint32_t, p->extd.max_leaf & 0xffff,
                                            ARRAY_SIZE(p->extd.raw) - 1);
 }
@@ -326,6 +341,8 @@ void x86_cpu_policy_shrink_max_leaves(st
      */
     p->basic.raw[0xd] = p->xstate.raw[0];
 
+    p->basic.raw[0x24] = p->avx10.raw[0];
+
     for ( i = p->basic.max_leaf; i; --i )
         if ( p->basic.raw[i].a | p->basic.raw[i].b |
              p->basic.raw[i].c | p->basic.raw[i].d )
--- a/xen/arch/x86/lib/cpu-policy/policy.c
+++ b/xen/arch/x86/lib/cpu-policy/policy.c
@@ -24,6 +24,10 @@ int x86_cpu_policies_are_compatible(cons
     if ( guest->feat.max_subleaf > host->feat.max_subleaf )
         FAIL_CPUID(7, 0);
 
+    if ( guest->avx10.version > host->avx10.version ||
+         guest->avx10.max_subleaf > host->avx10.max_subleaf )
+        FAIL_CPUID(0x24, 0);
+
     if ( guest->extd.max_leaf > host->extd.max_leaf )
         FAIL_CPUID(0x80000000U, NA);
 
--- a/xen/include/public/arch-x86/cpufeatureset.h
+++ b/xen/include/public/arch-x86/cpufeatureset.h
@@ -366,6 +366,7 @@ XEN_CPUFEATURE(PREFETCHI,          15*32
 XEN_CPUFEATURE(USER_MSR,           15*32+15) /*s  U{RD,WR}MSR Instructions */
 XEN_CPUFEATURE(UIRET_UIF,          15*32+17) /*   UIRET updates UIF */
 XEN_CPUFEATURE(CET_SSS,            15*32+18) /*   CET Supervisor Shadow Stacks safe to use */
+XEN_CPUFEATURE(AVX10,              15*32+19) /*   AVX10 Converged Vector ISA */
 XEN_CPUFEATURE(SLSM,               15*32+24) /*   Static Lockstep Mode */
 
 /* Intel-defined CPU features, MSR_ARCH_CAPS 0x10a.eax, word 16 */
--- a/xen/include/xen/lib/x86/cpu-policy.h
+++ b/xen/include/xen/lib/x86/cpu-policy.h
@@ -59,11 +59,12 @@ unsigned int x86_cpuid_lookup_vendor(uin
  */
 const char *x86_cpuid_vendor_to_str(unsigned int vendor);
 
-#define CPUID_GUEST_NR_BASIC      (0xdu + 1)
+#define CPUID_GUEST_NR_BASIC      (0x24u + 1)
 #define CPUID_GUEST_NR_CACHE      (5u + 1)
 #define CPUID_GUEST_NR_FEAT       (2u + 1)
 #define CPUID_GUEST_NR_TOPO       (1u + 1)
 #define CPUID_GUEST_NR_XSTATE     (62u + 1)
+#define CPUID_GUEST_NR_AVX10      (0u + 1)
 #define CPUID_GUEST_NR_EXTD_INTEL (0x8u + 1)
 #define CPUID_GUEST_NR_EXTD_AMD   (0x21u + 1)
 #define CPUID_GUEST_NR_EXTD       MAX(CPUID_GUEST_NR_EXTD_INTEL, \
@@ -264,6 +265,19 @@ struct cpu_policy
         } comp[CPUID_GUEST_NR_XSTATE];
     } xstate;
 
+    /* Structured AVX10 information leaf: 0x000000024[xx] */
+    union {
+        struct cpuid_leaf raw[CPUID_GUEST_NR_AVX10];
+        struct {
+            /* Subleaf 0. */
+            uint32_t max_subleaf;
+            uint32_t version:8, :8;
+            bool vsz128:1, vsz256:1, vsz512:1;
+            uint32_t :13;
+            uint32_t /* c */:32, /* d */:32;
+        };
+    } avx10;
+
     /* Extended leaves: 0x800000xx */
     union {
         struct cpuid_leaf raw[CPUID_GUEST_NR_EXTD];
--- a/xen/tools/gen-cpuid.py
+++ b/xen/tools/gen-cpuid.py
@@ -294,7 +294,7 @@ def crunch_numbers(state):
         # enabled.  Certain later extensions, acting on 256-bit vectors of
         # integers, better depend on AVX2 than AVX.
         AVX2: [AVX512F, VAES, VPCLMULQDQ, AVX_VNNI, AVX_IFMA, AVX_VNNI_INT8,
-               AVX_VNNI_INT16, SHA512, SM4],
+               AVX_VNNI_INT16, SHA512, SM4, AVX10],
 
         # AVX512F is taken to mean hardware support for 512bit registers
         # (which in practice depends on the EVEX prefix to encode) as well



From xen-devel-bounces@lists.xenproject.org Thu Apr 09 15:17:36 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 09 Apr 2026 15:17:36 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1277868.1562968 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wAr8S-0000sb-Kj; Thu, 09 Apr 2026 15:17:36 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1277868.1562968; Thu, 09 Apr 2026 15:17: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 1wAr8S-0000sU-I0; Thu, 09 Apr 2026 15:17:36 +0000
Received: by outflank-mailman (input) for mailman id 1277868;
 Thu, 09 Apr 2026 15:17:34 +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 1wAr8Q-0000r0-AX
 for xen-devel@lists.xenproject.org; Thu, 09 Apr 2026 15:17:34 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wAr8P-009G47-MR
 for xen-devel@lists.xenproject.org; Thu, 09 Apr 2026 17:17:33 +0200
Received: from [10.42.69.2] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <Mykyta_Poturai@epam.com>)
 id 69d7c2fd-bab6-0a2a0a5309dd-0a2a45028d5a-18
 for <xen-devel@lists.xenproject.org>; Thu, 09 Apr 2026 17:17:33 +0200
Received: from [52.101.66.98]
 (helo=DUZPR83CU001.outbound.protection.outlook.com)
 by tlsNG-720697.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.0)
 (envelope-from <Mykyta_Poturai@epam.com>)
 id 69d7c30d-42fa-0a2a45020019-346542620f1b-3
 for <xen-devel@lists.xenproject.org>; Thu, 09 Apr 2026 17:17:33 +0200
Received: from PAVPR03MB10102.eurprd03.prod.outlook.com
 (2603:10a6:102:30d::12) by PAXPR03MB7617.eurprd03.prod.outlook.com
 (2603:10a6:102:1d8::15) with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9723.31; Thu, 9 Apr
 2026 15:17:30 +0000
Received: from PAVPR03MB10102.eurprd03.prod.outlook.com
 ([fe80::b8c6:f37a:987a:beb]) by PAVPR03MB10102.eurprd03.prod.outlook.com
 ([fe80::b8c6:f37a:987a:beb%5]) with mapi id 15.20.9769.016; Thu, 9 Apr 2026
 15:17: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=jEsavm0vu2GhdhCk4Vx2JGALQlAuHnSej8P9K0sYsFrMOVdczovQo1mNXbQQEyfRHW1heq5nYgc412Fo9wg50kKQHkhQ96c1/5vwPFHzbrtEgA3pvzPG5wUtEWipISiiW4Rls23hZkA6K93wXBU8qIx+mGC59pxo0jdVD7tDNKv//aLB1Dm/TgutdwI5e0Z3Z4OaH58S8CHkP5IMC8I18HMXFQ+i7/jsDWkCE8GicD6U/Z3tp9TxJ2pZiZCgcjU//g/02YZ1v/W4OTPZp9xL3IY4im4dH+jjOctoVHZfbfb5Efv0aGn2axyzOZCi+oElqhwW6WyGJxCSwBPTsM8gXA==
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com;
 s=arcselector10001;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1;
 bh=+bTtnVqI/njnm9mF5eUmSq8syIognAlgqXXNHsvjoUM=;
 b=M0GgTAJrlVyb2XeUvLbE9grmmvGOe0TGtmTFLYrNVJykfLHMTeN3CuNtRsP1EpXfanI4ucloJiHDBNGInuf5eZIPgfuMgDUEbUtZotyjgUE1svHShUSPH1JWM5kohMfebSZk1s5SRqf2tGJ98aOEeaRhNdTnSvd1/pBGg/a1l0dPrnrPvhFEkU2lCYxNawabdnfqZ5DclTMAXqTVguZCkqj8oL8dj1FaSMrl3pjWOD4vAs31r0g31xx3hxGOOzKANZ4pHFVM2p3I+ZA/21eiT8lX5jdQ1Cleap5TGej0zromh5SSaq6FonNZ76BAeoBEj+NFIp20FQmgoP3JyUqRlw==
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=+bTtnVqI/njnm9mF5eUmSq8syIognAlgqXXNHsvjoUM=;
 b=sszcnUTkEuF+0wGdFS4g237RG0n6guaYnl2mwQlcpEYsGP7md2Pn8HsHapoTozqGsnlre0B/XNAnO6v9k0fCCKzLJTETQzuBbc2ypzPFIX61e4MRC4iW99945+mST4Tbl+5zVjpDQdMzPCkn3F62kUgrvsJt7sSG3ZOGy2yCh0AUA7hxmQltA772uwQrSkpUlcm5glFS20538IhyB+RbcZLriBdw5WdjcRMjdEDkd0Jy+nq8Qk4e7DY2jw/CIZ4Oag8ReSR4VussjAuw+uvmR243x2vYjMk1+DmPKa3ieZ6rZa5EVhUbugHyd+BWkhifUs2NSo7sCKavaW0wQCE24A==
From: Mykyta Poturai <Mykyta_Poturai@epam.com>
To: Stewart Hildebrand <stewart.hildebrand@amd.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?B?Um9nZXIgUGF1IE1vbm7DqQ==?= <roger.pau@citrix.com>, Stefano
 Stabellini <sstabellini@kernel.org>
Subject: Re: [PATCH v4 2/4] vpci: allow queueing of mapping operations
Thread-Topic: [PATCH v4 2/4] vpci: allow queueing of mapping operations
Thread-Index: AQHcxflWTbgzk4jzUUShSlP6L/DRmLXW3AQA
Date: Thu, 9 Apr 2026 15:17:30 +0000
Message-ID: <6dbea931-e449-4ce4-abe0-6167e75b0fc2@epam.com>
References: <20260406191203.97662-1-stewart.hildebrand@amd.com>
 <20260406191203.97662-3-stewart.hildebrand@amd.com>
In-Reply-To: <20260406191203.97662-3-stewart.hildebrand@amd.com>
Accept-Language: en-US
Content-Language: en-US
X-MS-Has-Attach:
X-MS-TNEF-Correlator:
authentication-results: dkim=none (message not signed)
 header.d=none;dmarc=none action=none header.from=epam.com;
x-ms-publictraffictype: Email
x-ms-traffictypediagnostic: PAVPR03MB10102:EE_|PAXPR03MB7617:EE_
x-ms-office365-filtering-correlation-id: 695bb93c-4955-4bd8-d1e5-08de964b1e43
x-ms-exchange-senderadcheck: 1
x-ms-exchange-antispam-relay: 0
x-microsoft-antispam:
 BCL:0;ARA:13230040|1800799024|376014|366016|38070700021|18002099003|56012099003|22082099003;
x-microsoft-antispam-message-info:
 E31cFhM9MW83Ryp+Pcy5tH6rxKs73kxet/1zfeqJ3Kpk8tlH6MO37cGsqSn4R+k27+LegHhoM2p+zqn1I1DdlnCE2JYSuxDQlxZJ3d/BRQdVyui+koY5CZqqPKXot7qGYTrcLuJcFkSN5BXtPpWle1ImsF9X+Xy8V4V8pxKjKWP26rsUo7MGJ5VMwUqg4MwQLY2oISoJacVtq48NJAZXUe7C1FxWuJ58QUrnWUdR1cP5iDRX9w+kDHxFbUaC1I9qvQc4l4kzvwGAe8Th+QV0kzVJfIu85tmxDbylcH1Elmcnh0D7iXwarbyTcRDb/6tZNEsGfqMRjMS7pLD3fiHB+qYZKb1SrQtYZiIBgIo4SPDQjkoM3pBBgyO7MiBEg1HBAR50AaeKM8IHT1iziAHtFCOl7VlnQRMONZUkG+TzJqRkOq3W79ds8286NosGeJ3e01oGsE+j8b8PltWWWG50D5B4+CmXfX+uu5a6JTHAbgCj5R7qvQ5Pd2/3QDumstQ4RrIBun8hrC3q+VISEA3h1JIHxyCWIhBeuwkp57bsl1kB/DErN8sK+UdTO3oasc5NSemvKG1etaZPn+q2IUmeF3wF+0CP5r2dfwzBmN+6AQtPEtkS8KR8UsueXQOd8pXll/piXAccojg81ZHZSQuKnMNZbRAyxfKU5QoYqtg4jceTluA2iKTm9D703qcWz5PUr8cAUKYTHjh0/s3WG1U5mRUR5hQCFlb9ty8fyc3cXKMkJaGNH6QRVFqh82hIa5NN
x-forefront-antispam-report:
 CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:PAVPR03MB10102.eurprd03.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(1800799024)(376014)(366016)(38070700021)(18002099003)(56012099003)(22082099003);DIR:OUT;SFP:1102;
x-ms-exchange-antispam-messagedata-chunkcount: 1
x-ms-exchange-antispam-messagedata-0:
 =?utf-8?B?c29GMy9ySmNIOVZndEs4RmZZaG1SN2ltWDdaa0cvTHh5Ukoram8xbHFZbCtS?=
 =?utf-8?B?cEZRbEdzdmVqYVAvSTQ2T3FVWmZhSm9xSDhmZ3VDMEV0L0lvYnVQT1hySUhU?=
 =?utf-8?B?NncvOEE1bHRncDY0UFVnbnNrVldFRkp5Q3FaOUxuWnAwQURtbXpMVStrallW?=
 =?utf-8?B?aFV2RElUSFIvWUE5TlFvbXFhcmNCcWcwZkNrT2w4elJFVGRNYzV4Sk1ERTJO?=
 =?utf-8?B?a3oyQitLeEtsYVVJb3R5bVFURTlnR2gxMnFpZS9FV3hzZXVIOXRBeXhBeFNq?=
 =?utf-8?B?Y3U2cUFSUmgzVkw5TkdkNFBNMlZucGxyeFVyTHMvMlZFdHdrSmd3YmJTZVJk?=
 =?utf-8?B?VG0xREMyV2hqZ3Nja1o5UzljNmU5V09CN3pCTUtVTEJXd1BZVTVMSU9Yem44?=
 =?utf-8?B?QmlBWTZRTjhhMk1kaG9haUQ4RDhLQnJXVFRFbEx1MjhlZGRyUS9yb1duQmpi?=
 =?utf-8?B?d1oyaWVRODBwT1R0NGt4eVZVOWFWM253dFpkcU5DSWNCdFI5REJ0ZW40SzdT?=
 =?utf-8?B?UFR0RXZicFRzdEc1VnI5QWxwQTNRQWtKN3kyOURSWXZqekg1RXJ2SjNxbUNM?=
 =?utf-8?B?ZE1HeG93cEN4blUrdjl4WlJObk5jRmVmQklhRFgzVWt1c2U5LzRSbXRLbytD?=
 =?utf-8?B?dS82WVpVZ29VcDVBeE9WdHdaV240V1RweXZyZytkdW5XOHUreFgxV2dEaGVU?=
 =?utf-8?B?SGhJMDgxUDcvcnNTVE1LZWFLeXNqUG5wZXZpRTRyYUJ3RDR4bGx5VG5iQWlT?=
 =?utf-8?B?Vm92WW10b3UwZ0RVNWU1ZS9oQlV4NDBPVXY0R3hkU3NNUHRWNFZGRzNkMHR3?=
 =?utf-8?B?T3FEcHp5MjQvV24xbERiSXRqdUp5UjY0MGxFbDB4TUR4QkprdzZmLy9mVElk?=
 =?utf-8?B?TERuWDROVzV4ZjV6dkM4c1g2SkZNcjR5RFFJWDFZTUFEbWFMdU9LWVM1djh3?=
 =?utf-8?B?LzlJalVRbEZ3Y1dVYWROUjlsL0FqaXZHVGt1MTQ0SFZCQldsYUkwSlh3V2pj?=
 =?utf-8?B?ZXd4NGdWcGE5RkU1R2FSM3BLQ2p5QkhUaENZakxQa1EySG1oalVKU3JIL0tX?=
 =?utf-8?B?QmQzL2gzNVk4UnNiZGFiMFZsVjBjVUhRZVFkMXlUZnBoZUUzQ3NEemMzZnpi?=
 =?utf-8?B?T3h3TFd2NnBBQzJ3MGVRckRqT2RSanZvUTE4S29lQlF3Wm5zQjVZekowSUlS?=
 =?utf-8?B?ZjhMdUM2RFVlS1U2cTJtRGZ3SlNUU0lacTg0UTVFNTRIekZYMlZwMG80WVQ4?=
 =?utf-8?B?MXFqQW9Pc212ZDIvMldRVi9VMVAyZmlPSU5NN0JPWkR2R1daUktQMGNoTTlR?=
 =?utf-8?B?dXJCS1dHbzJ4alZNM3c5di9VYnh6ckd0dDZqejFDWW1XdWNMeFdpTFIwMGMr?=
 =?utf-8?B?amYxYnZhZ2ZKNHlYQ0lPMWE5ajN4TU5ucG51YVJiT2FWeFMxWUVmY0pJNklm?=
 =?utf-8?B?V1M2QWFrK3dSd2pMLzQyOWhLd3RUdkwzajhGYzh3ZzlzMHZmdmd3U0dwd3I1?=
 =?utf-8?B?WlFvZEZ2VWkxTVhVaXhUYUZQOFhMOVdFQVRIK2twOGlPMUNpVGw5S0EraDN0?=
 =?utf-8?B?Ri94U2MwNEY3WWlmRkFPTUthZjlDSkZaWWUreGVYV2xOT0Jta2w4TSs0bWV2?=
 =?utf-8?B?VnRYdWxLSTdlUnJBTXJ3Q2NQZnhITnQwY2lSbS9ROGpXbEtSOUNrS1BwRUtX?=
 =?utf-8?B?dFJSMlgycGJERmhDa3c0WHZwdlY2ZkdQSXp0anR5Z2ZyR2VDclpkR3UrQTM2?=
 =?utf-8?B?b0I0ZXg4SndVUmc2dXh4Z05hV056VXNwSWtoZTlQaExJRG51di95YmV6N21G?=
 =?utf-8?B?YlhWZVBnTVlTandYQ3AvL0Z3MU9BbW1PanpPRTFjNWdxVUNlYXFabnNHWG5x?=
 =?utf-8?B?QmdVM1J5Ukl3OXdkdmhwVUZ0V1dHWU05bEt5WmROMjBpTDFCV2dNWTZ0WUo1?=
 =?utf-8?B?ZWhNb3k2b2xxTlRwRkFobDE4TmxIdGIvQUVqY215WFdYUlh4WCswUnJSUlBT?=
 =?utf-8?B?L1FxZkxDUU9EVnVqdlExaUQzWnh0QXJuVlZRSjZtTDQ2b0l1OGpiK0hCTlI0?=
 =?utf-8?B?TXFwa2NkUGN4aWRXWGQzNDdQc1VLdjlDOGRGZk9KclZEK1Z3bEhORTUzWklv?=
 =?utf-8?B?NWNTVWtVd1o5WS9tcnVVM0lyNjl3eXJBSWcrM0RBSW9KOFUwb0N1SFhMV0VD?=
 =?utf-8?B?aVdvbmx6UE1Jb1NVUm53cENwZjhzMk5yRnREM0FoNm5VUHRnRHJWa0tseU96?=
 =?utf-8?B?NGNIY0RETnN0MCtkQkN4SlN5VnVwTW1oMTRlQVBRaDVnTVFuZFRKNGtid1lW?=
 =?utf-8?B?bmloZlpuVVdpNHZkUGxGRXdhYVd1YnZ2MU95SlgrOGRBb2tDQ0VwRWdoS0ZL?=
 =?utf-8?Q?t/9ORwzi/s9W1OAk=3D?=
Content-Type: text/plain; charset="utf-8"
Content-ID: <A4BD37181DD1A4438258B542A5B1509D@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: PAVPR03MB10102.eurprd03.prod.outlook.com
X-MS-Exchange-CrossTenant-Network-Message-Id: 695bb93c-4955-4bd8-d1e5-08de964b1e43
X-MS-Exchange-CrossTenant-originalarrivaltime: 09 Apr 2026 15:17:30.7283
 (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: a7vLXM1drOzdqt/t+8GIMXbtXkULXlCIJSv3879HhomXmEVxj0G1gSvTS2Yc6yt7HymBZS7Q/ofVym0JCfaDUg==
X-MS-Exchange-Transport-CrossTenantHeadersStamped: PAXPR03MB7617
X-purgate-ID: tlsNG-720697/1775747853-4CFF7CD1-B07736DB/0/0
X-purgate-type: clean
X-purgate-size: 2448

T24gNC82LzI2IDIyOjExLCBTdGV3YXJ0IEhpbGRlYnJhbmQgd3JvdGU6DQo+IEludHJvZHVjZSB2
UENJIEJBUiBtYXBwaW5nIHRhc2sgcXVldWUuIFN0b3JlIGluZm9ybWF0aW9uIG5lZWRlZCB0bw0K
PiBtYXAvdW5tYXAgQkFScyBpbiBzdHJ1Y3QgdnBjaV9tYXBfdGFzay4gQWxsb3cgcXVldWVpbmcg
b2YgQkFSIG1hcC91bm1hcA0KPiBvcGVyYXRpb25zIGluIGEgbGlzdCwgdGh1cyBtYWtpbmcgaXQg
cG9zc2libGUgdG8gcGVyZm9ybSBtdWx0aXBsZSBwMm0NCj4gb3BlcmF0aW9ucyBhc3NvY2lhdGVk
IHdpdGggc2luZ2xlIFBDSSBkZXZpY2UuDQo+IA0KPiBUaGlzIGlzIHByZXBhcmF0b3J5IHdvcmsg
Zm9yIGZ1cnRoZXIgY2hhbmdlcyB0aGF0IG5lZWQgdG8gcGVyZm9ybQ0KPiBtdWx0aXBsZSB1bm1h
cC9tYXAgb3BlcmF0aW9ucyBiZWZvcmUgcmV0dXJuaW5nIHRvIGd1ZXN0Lg0KPiANCj4gQXQgdGhl
IG1vbWVudCwgb25seSBhIHNpbmdsZSBvcGVyYXRpb24gd2lsbCBiZSBxdWV1ZWQuIEhvd2V2ZXIs
IHdoZW4NCj4gbXVsdGlwbGUgb3BlcmF0aW9ucyBhcmUgcXVldWVkLCB0aGVyZSBpcyBhIGNoZWNr
IGluIG1vZGlmeV9iYXJzKCkgdG8NCj4gc2tpcCBCQVJzIGFscmVhZHkgaW4gdGhlIHJlcXVlc3Rl
ZCBzdGF0ZSB0aGF0IHdpbGwgbm8gbG9uZ2VyIGJlDQo+IGFjY3VyYXRlLiBSZW1vdmUgdGhpcyBj
aGVjayBpbiBwcmVwYXJhdGlvbiBvZiB1cGNvbWluZyBjaGFuZ2VzLg0KPiANCj4gU2lnbmVkLW9m
Zi1ieTogU3Rld2FydCBIaWxkZWJyYW5kIDxzdGV3YXJ0LmhpbGRlYnJhbmRAYW1kLmNvbT4NCj4g
LS0tDQo+IGFwcGx5X21hcCgpIGFuZCB2cGNpX3Byb2Nlc3NfbWFwX3Rhc2soKSBhcmUgdmVyeSBz
aW1pbGFyLiBTaG91bGQgd2UgdHJ5DQo+IHRvIGNvbWJpbmUgdGhlbSBpbnRvIGEgc2luZ2xlIGZ1
bmN0aW9uPw0KPiANCj4gSSBjb25jZWRlIHRoYXQgdGhlIGR5bmFtaWMgYWxsb2NhdGlvbi9kZWFs
bG9jYXRpb24gb2Ygc3RydWN0DQo+IHZwY2lfbWFwX3Rhc2sgaXMgbm90IGlkZWFsLiBIb3dldmVy
LCB0byBzdXBwb3J0IFNSLUlPViwgdGhlcmUgd2lsbCBiZSBhDQo+IG5lZWQgdG8gcXVldWUgbWFu
eSBtYXBwaW5nIG9wZXJhdGlvbnMgKG9uZSBwZXIgVkYpLCBhbmQgc3RhdGljYWxseQ0KPiBwcmUt
YWxsb2NhdGluZyB0aGF0IG11Y2ggd291bGQgc2VlbSB3YXN0ZWZ1bC4gT25seSB0aGUgaGFyZHdh
cmUgYW5kL29yDQo+IGNvbnRyb2wgZG9tYWluIHdvdWxkIG5lZWQgdG8gcXVldWUgbWFueSBvcGVy
YXRpb25zLCBhbmQgb25seSB3aGVuDQo+IGNvbmZpZ3VyaW5nIFNSLUlPVi4NCj4gDQo+IHYzLT52
NDoNCj4gKiBzd2l0Y2ggYmFjayB0byBkeW5hbWljYWxseSBhbGxvY2F0ZWQgcXVldWUgZWxlbWVu
dHMNCj4gDQo+IHYyLT52MzoNCj4gKiBiYXNlIG9uICgidnBjaTogVXNlIHBlcnZjcHUgcmFuZ2Vz
IGZvciBCQVIgbWFwcGluZyIpIGZyb20gWzFdDQo+ICogcmV3b3JrIHdpdGggZml4ZWQgYXJyYXkg
b2YgbWFwL3VubWFwIHNsb3RzDQo+IA0KPiBbMV0gaHR0cHM6Ly9sb3JlLmtlcm5lbC5vcmcveGVu
LWRldmVsL2NvdmVyLjE3NzI4MDYwMzYuZ2l0Lm15a3l0YV9wb3R1cmFpQGVwYW0uY29tL1QvI3QN
Cj4gDQo+IHYxLT52MjoNCj4gKiBuZXcgcGF0Y2gNCkl0IHNlZW1zIGxpa2UgdGhpcyBwYXRjaCBp
cyBtb2RpZnlpbmcgYSBsb3Qgb2YgdGhlIHNhbWUgY29kZSBhcyB0aGUgDQpwcmV2aW91cyBvbmUu
IE1heWJlIGl0IHdpbGwgYmUgYSBnb29kIGlkZWEgdG8gc3F1YXNoIHRoZW0gaW50byBhIHNpbmds
ZSBvbmU/DQoNCi0tIA0KTXlreXRh


From xen-devel-bounces@lists.xenproject.org Thu Apr 09 15:19:21 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 09 Apr 2026 15:19:21 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1277881.1562978 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wArA9-0001Wf-0j; Thu, 09 Apr 2026 15:19:21 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1277881.1562978; Thu, 09 Apr 2026 15:19: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 1wArA8-0001WY-TW; Thu, 09 Apr 2026 15:19:20 +0000
Received: by outflank-mailman (input) for mailman id 1277881;
 Thu, 09 Apr 2026 15:19:19 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <jbeulich@suse.com>) id 1wArA7-0001WS-P3
 for xen-devel@lists.xenproject.org; Thu, 09 Apr 2026 15:19:19 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wArA7-00EEaz-57
 for xen-devel@lists.xenproject.org; Thu, 09 Apr 2026 17:19:19 +0200
Received: from [10.42.69.2] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <jbeulich@suse.com>)
 id 69d7c368-e002-0a2a0a5209dd-0a2a4502b46a-44
 for <xen-devel@lists.xenproject.org>; Thu, 09 Apr 2026 17:19:19 +0200
Received: from [209.85.128.53] (helo=mail-wm1-f53.google.com)
 by tlsNG-720697.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.0)
 (envelope-from <jbeulich@suse.com>)
 id 69d7c376-42fa-0a2a45020019-d1558035d8b2-3
 for <xen-devel@lists.xenproject.org>; Thu, 09 Apr 2026 17:19:18 +0200
Received: by mail-wm1-f53.google.com with SMTP id
 5b1f17b1804b1-4887fd35e60so7055535e9.2
 for <xen-devel@lists.xenproject.org>; Thu, 09 Apr 2026 08:19:18 -0700 (PDT)
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-488d532f337sm3249385e9.9.2026.04.09.08.19.16
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Thu, 09 Apr 2026 08:19:16 -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=google header.d=suse.com header.i="@suse.com" header.h="Content-Transfer-Encoding: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=1775747958; x=1776352758; darn=lists.xenproject.org;
        h=content-transfer-encoding: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;
        bh=EoVZJ7Kn6OMlJgGXPSTMvawFoLI6MM2TlG7qRZOTJwo=;
        b=aBw5oqrXBZOx2fnAp3lOhRw/VvOsIC29QOtnaL3TiCyc1QmoKX1JNU/KZLwDK6pqWl
         Gb2QOTO6v2bsWeQn7+dUuT3ukEIjm5EbC52FY4GbSC9LO3zqN4/z+2eJw0vR8PFq8IzI
         2b9myGCy7dJKIcDh+vyIfFzcAklSxFVhRGhAO3n8vKOCcvWlSszsCTJG7DGoSMh/GEcd
         M2deEQZMakaAvKvZn6+UGJf27Tykk9PgB9HkYg0BoDKUdbhjXmf3Ddg2CzLafK4KGTSO
         h1stVGzLmJelpd+ViHtWDJaQ3L7OjMeaZ/xJ1eSwmyPPphiBIyi3nMW4OEM/bRaSJaTp
         ei0g==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20251104; t=1775747958; x=1776352758;
        h=content-transfer-encoding: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;
        bh=EoVZJ7Kn6OMlJgGXPSTMvawFoLI6MM2TlG7qRZOTJwo=;
        b=q6MY2cqO3o2Mu7sl7B+gePhN3XAfn8dWfHIW+5TWEJtjATf7xm8ywkpjpK+6t67d8r
         RPIbP7k2CXQdUZDQbp2/RFFHDgVVvm3/Yz33ZQXVd7kiILvCmWsUOs67PppcC4egYGEQ
         1rgdjeVpLj5jhqzt2tKd1y3GwA3cj0JjP5MQLHNZVe6wbomuAkILmPEklZ9/WIhTWC2o
         Lf3jv5uzQ6R4NXNSh1P4TgSXDFZ2TAS7xmqhXwIi0cCRt3WfOj2GRa/oCFVkslXohh2+
         2bxOW7tqG9rIQiCDAnBisXXdf40FOMB8q66uVH5kAn5Qdo7qaFwSFsy/20X866vJmqnE
         fl0w==
X-Gm-Message-State: AOJu0Yx0JMtdBcuZwfviq50Mb8Bntzn1diBLml3TEqELlsaDh7GA0+s0
	pFdzAE7VzYSKOUMVyESGRTljqo+6SCVW47EUMWEe1j5Hk4WfCdUhVYa6+2xYZJkJJx0GE+Vhsjh
	nzRgMnA==
X-Gm-Gg: AeBDiesKJ6B4OH7bfTrnUaUH/uttYwKR7Wzr0l4QPap+RSN2NuwME2Ko2zZ4MKfcIlC
	cmRo1E66rJWheG8Wi+JpCVCe9YLuNz1CShmdL4YkmLpU0Uz4m4dl21qwv1AkxgHTDUz5bGA/4aF
	ufMXky9hIB6KfKnFMOxpxl1M1u/ldw7HGmUTTfnWudIhGs43jYNxWXXBQopTlKXQji8sRbPKA45
	xyqzDqLKWAwWEyzdmBuye7IZpapUvHBEcwPsSLGTCkSpUtDNwYnvZiWcXkkOQu0EZIJ4AGGCd7T
	10GPscvGPKmFoMm8yHJX0q8ACl051nRhbdfmjUCja5K+bNt/tpad8AxCvt+O8m7sOznnMluSRTl
	yHq2b/YRLqM2d9VoTd3a+VZKs5eSrZJ6DuE9KlZBQBQyQ1rAR/9GgM2WqJzkOX8X4D/84ODiJM3
	Ty+f2qZMi7589+SK9er/wr2f1+cRiJL6SFlraS6ItvLW8dTLMUhOCXBz9UNfEXU2K6FQmllm3kn
	GaAo9QbptznViY=
X-Received: by 2002:a05:600c:4751:b0:485:ae14:8191 with SMTP id 5b1f17b1804b1-488ccf3e8c2mr54835705e9.5.1775747958419;
        Thu, 09 Apr 2026 08:19:18 -0700 (PDT)
Message-ID: <03942243-c825-4846-9043-997bffc7daea@suse.com>
Date: Thu, 9 Apr 2026 17:19:15 +0200
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH v4 00/16] x86: support AVX10
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.pau@citrix.com>,
 Teddy Astie <teddy.astie@vates.tech>
References: <1e2ff012-b07a-43be-9ba6-290b38d3c97c@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: <1e2ff012-b07a-43be-9ba6-290b38d3c97c@suse.com>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 7bit
X-purgate-ID: tlsNG-720697/1775747959-AE725CD1-7A628FE9/0/0
X-purgate-type: clean
X-purgate-size: 1886

On 09.04.2026 16:59, Jan Beulich wrote:
> AVX10.1 is just a re-branding of certain AVX512 (sub)features, i.e.
> adds no new instructions. Therefore it's mostly relaxation that needs
> doing. Luckily the 256-bit-only case and an unnecessary restriction on
> the mask register insns was taken out again, simplifying the actual
> emulator adjustments quite a bit.
> 
> AVX10.2 is adding quite a few new insns, support for which is roughly
> added chapter-wise as the spec has them (perhaps not in the order of
> the chapters there).
> 
> While it probably could be re-based ahead, the series in this form
> depends on the previously submitted "[PATCH v5 0/3] x86/CPUID: leaf
> pruning" and parts of whatever is left of "[PATCH v9 00/10] x86emul:
> misc additions".
> 
> I've tried to be very careful in rebasing ahead of other emulator
> patches I've been carrying, but almost all testing I've done is with
> all of those collectively in place.

As you may have noticed, I screwed up the numbering. Hence ...

> 01: x86/CPUID: enable AVX10 leaf

... this is 00.9, and everything else is off-by-1 (and there's no 16/16).
I'm sorry for that.

Jan

> 02: x86emul: support SIMD MOVRS
> 03: x86emul: support AVX10.2 forms of SM4 insns
> 04: x86emul: support AVX10.1
> 05: x86emul/test: use simd_check_avx512*() in main()
> 06: x86emul/test: drop cpu_has_avx512vl
> 07: x86emul: AVX10.1 testing
> 08: x86emul/test: engage AVX512VL via command line option
> 09: x86/CPUID: enable AVX10.2 sub-leaf
> 10: x86emul: support AVX10.2 scalar compare insns
> 11: x86emul: support AVX10.2 partial copy insns
> 12: x86emul: support AVX10.2 media insns
> 13: x86emul: support AVX10.2 minmax insns
> 14: x86emul: support AVX10.2 BFloat16 insns
> 15: x86emul: support AVX10.2 saturating convert insns
> 16: x86emul: support other AVX10.2 convert insns
> 
> Jan



From xen-devel-bounces@lists.xenproject.org Thu Apr 09 15:27:26 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 09 Apr 2026 15:27:26 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1277904.1562988 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wArHs-0003qT-PE; Thu, 09 Apr 2026 15:27:20 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1277904.1562988; Thu, 09 Apr 2026 15:27: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 1wArHs-0003qM-Ks; Thu, 09 Apr 2026 15:27:20 +0000
Received: by outflank-mailman (input) for mailman id 1277904;
 Thu, 09 Apr 2026 15:27:19 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <dpsmith@apertussolutions.com>) id 1wArHr-0003qG-AY
 for xen-devel@lists.xenproject.org; Thu, 09 Apr 2026 15:27:19 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wArHp-009itP-4p
 for xen-devel@lists.xenproject.org; Thu, 09 Apr 2026 17:27:18 +0200
Received: from [10.42.69.2] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <dpsmith@apertussolutions.com>)
 id 69d7c543-e002-0a2a0a5209dd-0a2a4502ce00-28
 for <xen-devel@lists.xenproject.org>; Thu, 09 Apr 2026 17:27:18 +0200
Received: from [136.143.188.51] (helo=sender4-of-o51.zoho.com)
 by tlsNG-720697.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.0)
 (envelope-from <dpsmith@apertussolutions.com>)
 id 69d7c554-42fa-0a2a45020019-888fbc3352a8-3
 for <xen-devel@lists.xenproject.org>; Thu, 09 Apr 2026 17:27:17 +0200
Received: by mx.zohomail.com with SMTPS id 1775748428998910.0956839380316;
 Thu, 9 Apr 2026 08:27:08 -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=zoho header.d=apertussolutions.com header.i="dpsmith@apertussolutions.com" header.h="Message-ID:Date:MIME-Version:Subject:To:Cc:References:From:In-Reply-To:Content-Type:Content-Transfer-Encoding"
ARC-Seal: i=1; a=rsa-sha256; t=1775748430; cv=none; 
	d=zohomail.com; s=zohoarc; 
	b=Cy8g3lL6lY46PhF/3NGIFoENrtRTDZ0xB4SNaykDRCTBGS8JUa8+GNXLg72fye0eXZ5IVFNXnd0x7yWwuhrrAefcpEXiH1Z5G4XFFGF57+qFk75BkGocN2vm2kl2pXrzlAUUaON/tqJ0lmpt5LwwNQkosObV+8oVyl1bFq7QH/I=
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; 
	t=1775748430; h=Content-Type:Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:MIME-Version:Message-ID:References:Subject:Subject:To:To:Message-Id:Reply-To; 
	bh=6slf66+/mwfKM9Qm1+2ujiAPSu9zDQBkQ60V+Wo3NDI=; 
	b=MPx0lfydDU2NQ3jiYBJgOMdYAvTraStkHuDDwPUU348ELLTzNO0WfuoPEa8myVefu/9W/0+sSxGLvFulSG6/y7+d2ovAygH7J809bNTJ8Hypo1UsqyYXVyGRG6h5PVSvFF1fh4y6BnraNTJv+MYwbuqIsTvb8SPG19kg7/GYaJs=
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: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; t=1775748430;
	s=zoho; d=apertussolutions.com; i=dpsmith@apertussolutions.com;
	h=Message-ID:Date:Date:MIME-Version:Subject:Subject:To:To:Cc:Cc:References:From:From:In-Reply-To:Content-Type:Content-Transfer-Encoding:Message-Id:Reply-To;
	bh=6slf66+/mwfKM9Qm1+2ujiAPSu9zDQBkQ60V+Wo3NDI=;
	b=T49IPYZBHA0M9sLtVqPmMZgLSfDYL8zya6UkbczNf8t4qQVCyuqeNPoY8iGVzmbp
	mvotponcl9RJJMqTw53/nlGAEKYOfTa3tXixn+UmuyTtb5NTIEBWbc5jHAAHefoUiBR
	zwga38HfRVPR2s1TXE9K9cef3TpOaahcqRM8OcRM=
Message-ID: <a412043d-7c97-406c-8ee6-c3c63aa5296c@apertussolutions.com>
Date: Thu, 9 Apr 2026 11:27:07 -0400
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH v3 5/7] vpci: add SR-IOV support for PVH Dom0
Content-Language: en-US
To: Mykyta Poturai <Mykyta_Poturai@epam.com>,
 "xen-devel@lists.xenproject.org" <xen-devel@lists.xenproject.org>
Cc: Stewart Hildebrand <stewart.hildebrand@amd.com>,
 =?UTF-8?Q?Roger_Pau_Monn=C3=A9?= <roger.pau@citrix.com>,
 Jason Andryuk <Jason.Andryuk@amd.com>
References: <cover.1775742115.git.mykyta_poturai@epam.com>
 <a0abd984989237d2f36e1628db577fb25af1cdbe.1775742115.git.mykyta_poturai@epam.com>
From: "Daniel P. Smith" <dpsmith@apertussolutions.com>
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=
In-Reply-To: <a0abd984989237d2f36e1628db577fb25af1cdbe.1775742115.git.mykyta_poturai@epam.com>
Content-Type: text/plain; charset=UTF-8; format=flowed
Content-Transfer-Encoding: 8bit
X-ZohoMailClient: External
X-purgate-ID: tlsNG-720697/1775748438-AFF29CD1-A1C1033B/0/0
X-purgate-type: clean
X-purgate-size: 1721


On 4/9/26 10:01, Mykyta Poturai wrote:
> From: Stewart Hildebrand <stewart.hildebrand@amd.com>
> 
> This code is expected to only be used by privileged domains,
> unprivileged domains should not get access to the SR-IOV capability.
> 
> Implement RW handlers for PCI_SRIOV_CTRL register to dynamically
> map/unmap VF BARS. Recalculate BAR sizes before mapping VFs to account
> for possible changes in the system page size register. Also force VFs to
> always use emulated reads for command register, this is needed to
> prevent some drivers accidentally unmapping BARs. Discovery of VFs is
> done by Dom0, which must register them with Xen.
> 
> Signed-off-by: Roger Pau Monné <roger.pau@citrix.com>
> Signed-off-by: Stewart Hildebrand <stewart.hildebrand@amd.com>
> Signed-off-by: Mykyta Poturai <mykyta_poturai@epam.com>
> ---
> v2->v3:
> * rework adding VFs with multiple mapping operations support
> * use private.h
> * style fixes
> * fixup cleanup_sriov
> * emulate command register read for VFs
> 
> v1->v2:
> * switch to VF discovery by Xen
> * fix sequential vpci_modify_bars calls
> * move documentation changes to a separate commit
> ---
I have only cursory read this patch, but it got me thinking, which I'm 
still in the middle of completing my questions. Figured I will pose it 
to the community for other's opinions as well. From what I have looked 
at this far, it is just wiring up the SRIOV under the existing PCI 
access controls. It's possible to just provide a specific label to the 
device to differentiate in policy, but I am wondering if there might 
want to be a further degree of fine-grained access controls over SRIOV 
devices?

V/r,
Daniel P. Smith


From xen-devel-bounces@lists.xenproject.org Thu Apr 09 15:34:27 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 09 Apr 2026 15:34:27 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1277922.1563000 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wArOg-0006Mh-Jb; Thu, 09 Apr 2026 15:34:22 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1277922.1563000; Thu, 09 Apr 2026 15: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 1wArOg-0006Ma-GC; Thu, 09 Apr 2026 15:34:22 +0000
Received: by outflank-mailman (input) for mailman id 1277922;
 Thu, 09 Apr 2026 15:34:20 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <jbeulich@suse.com>) id 1wArOe-0006MU-T2
 for xen-devel@lists.xenproject.org; Thu, 09 Apr 2026 15:34:20 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wArOe-00BkNY-5Q
 for xen-devel@lists.xenproject.org; Thu, 09 Apr 2026 17:34:20 +0200
Received: from [10.42.69.7] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <jbeulich@suse.com>)
 id 69d7c6ed-bab6-0a2a0a5309dd-0a2a45079d74-22
 for <xen-devel@lists.xenproject.org>; Thu, 09 Apr 2026 17:34:19 +0200
Received: from [209.85.128.51] (helo=mail-wm1-f51.google.com)
 by tlsNG-ef75cf.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.0)
 (envelope-from <jbeulich@suse.com>)
 id 69d7c6fb-ba2d-0a2a45070019-d1558033b52b-3
 for <xen-devel@lists.xenproject.org>; Thu, 09 Apr 2026 17:34:19 +0200
Received: by mail-wm1-f51.google.com with SMTP id
 5b1f17b1804b1-488b150559bso8246015e9.1
 for <xen-devel@lists.xenproject.org>; Thu, 09 Apr 2026 08:34:19 -0700 (PDT)
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-43d1e1fe0b0sm70117501f8f.0.2026.04.09.08.34.17
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Thu, 09 Apr 2026 08:34:18 -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=google header.d=suse.com header.i="@suse.com" header.h="Content-Transfer-Encoding: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=1775748859; x=1776353659; darn=lists.xenproject.org;
        h=content-transfer-encoding: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;
        bh=jjpkTm+R04l4fxBGDDnQULEkG1hj9yfEAGXe38dI92U=;
        b=e06TeNckO9MohcEC26plJbaFgG1kyP6LvkYtQ7IHO2ujKRWPYeKLgNaMaez8BqchSA
         Hvs2rfLCdhi+jhhTGSpswRKD0q1Bf4HVL034dTwbYJsxKx+VxN0BOJZGX0Z8hA+aybR1
         FBdl8/EGgxWHfidq5WhPg/EWErk6MRBMbjBsu9Y4raInxrZdiShEf5p5NzW8W3c5uRok
         81BjLXV4U80FDDnKS1M+x7uKMPk7AWlgftHIMenIhJuNjy1SQTQrxfE++BiUgpZedzdr
         5HhfySAHjqncCARFMvr08V89nkhBS8zXt1MlpKdRzUmol3p58XR14JuxfN2SvT5xYcPk
         2nMw==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20251104; t=1775748859; x=1776353659;
        h=content-transfer-encoding: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;
        bh=jjpkTm+R04l4fxBGDDnQULEkG1hj9yfEAGXe38dI92U=;
        b=VTsDLr8H9YJwE/OQ24VQ2tDMWygDHEFunJt4FEfnqg4Q6hWgdCbirqk/F6ggFuJ81S
         slWqwatbNslWKSxqk+NH8lqwI3L8TE9flRRjf+YIzEWmoZIAWxi8xLERko/TOjKijilE
         v+6yiQvw4UGXi6vY1cJhc/smDuh0CV1Xw9RQFS2VNFENbrudl0ZC7sqlZ9wtX2BQmjWf
         /8Gyi68NGLG/ExAN5KDW7bcypDX+ej/KMN9b7AP87Pf0ndnMsJnMrl3j9ud+8a/J10Hw
         Yay5SnwJIoGSWh6twtCmQIvw+e68gaYAnOdXe/Five9SPlK3+9aTudUBx4Aug1S/FuBI
         oOeA==
X-Forwarded-Encrypted: i=1; AJvYcCU5vNKlFEL0op4QRpcwViRfnZgvaq/ll7v4TxmsofZUG6+WGOVHpXQoIq660AKP6tum2232GQKN5z4=@lists.xenproject.org
X-Gm-Message-State: AOJu0Ywun34DXCaKhItFHNeUD1QqFiIH+6OQTrfWjitJrZQlKaQUiAlW
	LfEQjEVnE26LJ9ppQq0aVphmkdcgMSeFBkI7JQ+6Y8HZn1nFfkDFeKQMDBCsoWpn/A==
X-Gm-Gg: AeBDieuUzYdK/fyjjECOTFT27W96BOiX83HBR7NAW4+RWIXun5B7sJiyMRhSF0Y2KMf
	R66cMqQdHOHvEvjPxj+SFX4ROKomWPxgDss5tr6/nEpT4cmpsY+U7Z6K5p+Q7QDm6sm3TprIvMZ
	t8WDQsd+ga8lD5s7Qo4XNJBudOL5++k1E0xS3F+tlswcXohLg3VZuF5BDSwJKYEq1AJ9Pbp3fL4
	SAHUejmjkLNEo0VdOYDy6lpr0EpeCoRVsLTVBWCA0+vndLnoTyYEU6sPvaELfpAkUT/mm+yC4v7
	yQZchdBhFtAuSB6NZn2R+6zgjD/7dkN9Kxyilox8uPBfGmy+PvqEhxpulFlv9wkoBflRXqLpX5L
	ol2fcFUk1yJ6eheFCaNcnaVypZEOvnSoHlVI9VioawP4NhiXmYx//qCW8yfnd6kXtpL/ZhdRpKa
	sARgwu+yhzcXcC+L5dGaa5HpObar42Jm09SKqtJ4M8UujclAD22skEnxTpJnJbU3+5O6fOak9Ed
	wxOzX+fXkFBJEA=
X-Received: by 2002:a05:600c:6305:b0:486:d76c:fa57 with SMTP id 5b1f17b1804b1-4889978da75mr352125395e9.17.1775748859321;
        Thu, 09 Apr 2026 08:34:19 -0700 (PDT)
Message-ID: <467df79c-e583-495a-bbe6-4d4b7dc8f0a3@suse.com>
Date: Thu, 9 Apr 2026 17:34:15 +0200
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH v7 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.pau@citrix.com>,
 Timothy Pearson <tpearson@raptorengineering.com>,
 Alistair Francis <alistair.francis@wdc.com>,
 Connor Davis <connojdavis@gmail.com>,
 Oleksii Kurochko <oleksii.kurochko@gmail.com>,
 "Daniel P. Smith" <dpsmith@apertussolutions.com>,
 "xen-devel@lists.xenproject.org" <xen-devel@lists.xenproject.org>
References: <cover.1774871881.git.mykyta_poturai@epam.com>
 <9ac96559ed00257f347bd61b1e074fc3f6ce8a32.1774871881.git.mykyta_poturai@epam.com>
 <d8622bdf-9ccf-488d-af9a-3eccf6fd3226@suse.com>
 <b320e53c-f794-43fc-8095-d5b4b92d7362@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: <b320e53c-f794-43fc-8095-d5b4b92d7362@epam.com>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 7bit
X-purgate-ID: tlsNG-ef75cf/1775748859-8A15541E-A325F571/0/0
X-purgate-type: clean
X-purgate-size: 793

On 09.04.2026 16:34, Mykyta Poturai wrote:
> On 3/30/26 15:28, Jan Beulich wrote:
>> On 30.03.2026 13:59, Mykyta Poturai wrote:
>>> --- a/xen/common/Kconfig
>>> +++ b/xen/common/Kconfig
>>> @@ -638,9 +638,9 @@ config SYSTEM_SUSPEND
>>>   	  If unsure, say N.
>>>   
>>>   config CPU_HOTPLUG
>>> -	bool "CPU online/offline support"
>>> -	depends on X86
>>> -	default y
>>> +	bool "CPU online/offline support" if EXPERT || X86
>>
>> Why not just EXPERT?
> 
> Should it be marked as EXPERT on x86? I considered that if the option 
> was non configurable (always enabled), it should stay enabled by default 
> and always visible.

As you say, it wasn't configurable before. Imo that's a good sign that, at
least for starters, we should limit its disabling to experts.

Jan


From xen-devel-bounces@lists.xenproject.org Thu Apr 09 15:55:58 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 09 Apr 2026 15:55:58 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1277948.1563008 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wArjU-0001N0-4F; Thu, 09 Apr 2026 15:55:52 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1277948.1563008; Thu, 09 Apr 2026 15:55: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 1wArjU-0001Mt-1V; Thu, 09 Apr 2026 15:55:52 +0000
Received: by outflank-mailman (input) for mailman id 1277948;
 Thu, 09 Apr 2026 15:55:51 +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 1wArjS-0001Mn-T2
 for xen-devel@lists.xenproject.org; Thu, 09 Apr 2026 15:55:51 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wArjS-00AAaV-8o
 for xen-devel@lists.xenproject.org; Thu, 09 Apr 2026 17:55:50 +0200
Received: from [10.42.69.10] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <dmytro_prokopchuk1@epam.com>)
 id 69d7cc05-2eae-0a2a0a5409dd-0a2a450aa1f2-4
 for <xen-devel@lists.xenproject.org>; Thu, 09 Apr 2026 17:55:50 +0200
Received: from [52.101.72.116]
 (helo=AM0PR02CU008.outbound.protection.outlook.com)
 by tlsNG-4011c0.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.0)
 (envelope-from <dmytro_prokopchuk1@epam.com>)
 id 69d7cc05-ee98-0a2a450a0019-346548743556-3
 for <xen-devel@lists.xenproject.org>; Thu, 09 Apr 2026 17:55:50 +0200
Received: from AM9PR03MB7526.eurprd03.prod.outlook.com (2603:10a6:20b:3de::17)
 by AS4PR03MB8554.eurprd03.prod.outlook.com (2603:10a6:20b:581::19)
 with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9769.20; Thu, 9 Apr
 2026 15:55:48 +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.20.9745.035; Thu, 9 Apr 2026
 15:55: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=xT8PivgopX8B6HK+EUR5dsMctaG8muPrUQl6BbSLRQxFbon6iOJtFSpd7uLfhoyVp6XTRriepBJxV1vxnslkrqKkjW7QlG4SshfT0+meM6c1gKXL3sthRo3C+lpwrBN9dpEi1P7tzpiPO+LLvXK9ZIvHJxL9/Jk5Wfc6c1tLfe3D4tUMJQ1TuDxXpM0d/0/wdaf24lXMGonTjyvfM3yVqz0Ov55l6rgcDuoTOURWEmKrpBnYd6SaAlGf3LhKU11Oj2S77nakf4LUekOwPuulVpx4wAc2DBTLIVYlJ6niYzR7M0ER6yS8OI5x7icG3tnRFiYY9WYTr08RDaRuVNrlNA==
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com;
 s=arcselector10001;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1;
 bh=gYFqiYL2RWaSj5UTs0yxhxZbv/2e+rgrJDmULLs0AUs=;
 b=FhaXJnZGsWeVyN/9fHL/BrJ1HwIcI8HHUfICRxW69ri/onLGPsHxszSFsHMh/yZyZmYJ8u/E113/u7Hk8zVQjh39UOcfQDcLaSchy8X95xyjMOrFaPBU05OYSr8Hnqmh1xGpjnE9AazC4mKXLhiLCiBPcrWCozUoszl75V33+wxzLZr9NBpMhMRmRsdd3tFTtpgksR+Ei2E1lxeetSY8St+hUz5+v7i2BJzo0qpNsf3DSzDZ8LHKwNNL9bOa9Nc14NR4TNHmMovCDrhhxAoKBt/T0I4DPMsG4dN64OKdlmaZXKDiy9tS4KlmguU9oNqOPK/Xd5S+LnM89I2/9CSBnA==
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=gYFqiYL2RWaSj5UTs0yxhxZbv/2e+rgrJDmULLs0AUs=;
 b=n5idw0ejnJfoz3RQ43zX2oe+0fiD9t+VMgKwF73mo2ri443NqAQfmEK9/MKanbmO2tKebrHr3Pn2F6WZkLdr8sF5sg+cvRBQFzzF4wOP+2hgmgkenstjrUXBMig5K69nadX/tchZ9dpF6jjv+CBM4JBc6NpajSewoGz51GLaT48MsHJrmmUpcvApcfnIPpoaCfrGtcWqPCuKJ4VUX1zxQGXSmZ9BhRA/7t/XKjEuc8x2Y6SifsQH4IGUQeQOoElxtYJKwu1DFyqwYyhxNATStB4gis7Q9ZBTQmJ/KWxBBRQrceCi96KgjGky4Llp1Y5q+T3jrQcZSG+lq5vtrilseQ==
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>, Juergen Gross
	<jgross@suse.com>
Subject: [PATCH] hypfs: remove unreachable statement in the
 'hypfs_get_entry_rel()'
Thread-Topic: [PATCH] hypfs: remove unreachable statement in the
 'hypfs_get_entry_rel()'
Thread-Index: AQHcyDlVyOevPxMGvE2K9zY95LxHDw==
Date: Thu, 9 Apr 2026 15:55:48 +0000
Message-ID:
 <341811ced2943fb79d0235c27781c564c7bdaf02.1775749146.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: 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_|AS4PR03MB8554:EE_
x-ms-office365-filtering-correlation-id: 6614684a-d48f-45ac-9200-08de965077ca
x-ms-exchange-senderadcheck: 1
x-ms-exchange-antispam-relay: 0
x-microsoft-antispam:
 BCL:0;ARA:13230040|1800799024|366016|376014|42112799006|38070700021|18002099003|56012099003;
x-microsoft-antispam-message-info:
 88KXu5Bz/Ik+huN8MZoQuJBNT5Vb40kAeKmQ7U28Ji0hhhkQESGPT8MRBKORgfFYMcTdcCnqvoUnHgIJCyZXyUI08svOQdGtvE+Z3MB57epNAex1qUhAvrXqtXop2zqjmyoXyEmihBUJabY87RxPqnt3kmYyzMcgeVff4w86BvdIRwOIItJmWS+6aWJDMHld1k6Ovp/dGzqajy5S7ELpWSZq4VnOikLL/iXnfz7H2JibJQOn00lM0Szds4A+vRvMEUs5ZhzOay/lP07TnMafi9hdwE9qgkB1tmwcDAhIjXmKfqgFN102Y+4dhw9rMW2ofR9YKmBrofVp5O2hdWbAg6jtQ0Sctfs2G2dW6glAY23nVUaNFRKLpxHtVNZk1sHfbJyHHqsVYgYJyJ0GCfF6lcBl2U3bSzEXcn/OQ2IpLoPQPZInk8zQZk6uC3eBdn9BNqeRnLANfFL/mhbnmXWHN+I85oXuTbWtUT3R/lsYMsPNDMo2B1w1n3Q7gGPlYVcmzwPVa9Aic6N9JkzDMfB4DEHRSYBSXfKeOTeawsM6X//xiWekW/9J3LMvKIpXKF1ds47vi87VU634r3cdJvaqXK//Bt0mr7VnrFqA4m7FiuMBoZydK1etjSXqXGYTzYrgrjhyVEcR700ehxiGBuU44G2+AzAcKOWHr7KQsFr99NUri5KHM+vsZfmnw4/1M6pWkJaycnf1vYqJtnltawzut42rFK1K5FlbCV056rr2G1BbxE/96a+XqYh+nxfdzR6yMHzzHELIwn7r/JQcl8Y2YQbu8LXY9Mf4qfTSUhF4B4s=
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)(376014)(42112799006)(38070700021)(18002099003)(56012099003);DIR:OUT;SFP:1102;
x-ms-exchange-antispam-messagedata-chunkcount: 1
x-ms-exchange-antispam-messagedata-0:
 =?iso-8859-1?Q?zdAU1n9VqxciFQuOQZ+CDdUmkYwFJy6IoB2l6fIILJNk0v26tCy/TSKuqb?=
 =?iso-8859-1?Q?bpdayYKzrPsD58T1SJGLbxS4qHEmUAWSBXdcr/tornM4d9jbZiJyn9QiF4?=
 =?iso-8859-1?Q?ihS9q5sVroad4OASmhH1vPskOOaaLvWhhHzulwq7/LAfl+ZWNgpoysckEM?=
 =?iso-8859-1?Q?2y4bIBswk7P+3njgKhuEcZUICPiFTyF+2tlGNrR8g9H5ic6QpY3+s894Od?=
 =?iso-8859-1?Q?RBNroYrCmnoWC6OchgVAV0uS9MLxRJG64ZeMZ1s++J5kIvrRvTEFp1m5RT?=
 =?iso-8859-1?Q?y7JuHr5ONJisdpnavmh2tt8vXU41ixW612ku+jcI7vn+xoK4cjMPH1G1G2?=
 =?iso-8859-1?Q?wON+9nGc2zk3LG4fwMj7gV2AF+8OJxtJhKG2NbLahiQ/eDxM/zADUvSVy/?=
 =?iso-8859-1?Q?dQeBlUvtnIKbp3GvsoamFGF6aUE8r7Az5pvSxX6/s9L09d1RxdKyngY8r5?=
 =?iso-8859-1?Q?VuqzMVCHo+y/Xn8l+I4PkhqHsIYczgi0EB8GTCgN25KDYlZGBYk6+jjs0K?=
 =?iso-8859-1?Q?LNkIcSB9fYZjvhvUnEp7MAm7WJA/8SGTSFEdKF1EGDoCFoAgQGIWTCIh7C?=
 =?iso-8859-1?Q?HT26G5aks2TJKjJ8Zh5Y54zSjQWrdR7P2wqmMng/aXCx/bWmEzrvb3jcNE?=
 =?iso-8859-1?Q?RhJSEeJm4+LGJlz4/v3o8UPnPbZA7nlC+d5g2ikvzfxj2sTpqYT3aaXkfU?=
 =?iso-8859-1?Q?I+MpP9oJNm041EqgF+QQBM+nSnLuLIoQDWhysevJk6C+5+IaC2Q4y/27GE?=
 =?iso-8859-1?Q?3Kd2koo9HhsyaxPI3J3N2xKuoZmZ8BlWkCInzxlvD87lZuzZf6tn4cEJZ2?=
 =?iso-8859-1?Q?rRCLoY7uiKjY4jwSSgFddPOsfxESf1+mVMPkca0ZwztwOFnQgfSXT92nXn?=
 =?iso-8859-1?Q?rsxJFib7jALeq8jGDH28tNcxrclRbAqEzahDYo37nsPxbytfEfTdwP18pZ?=
 =?iso-8859-1?Q?S3Dw+LnXKdTPfFzjAYBfq6pX+rgRfIFWc0XYzrB8F48Ud9pWIJffpzJX5L?=
 =?iso-8859-1?Q?1H39vjXEuiWUAgCyPGSvkQpPvlYk3EG/AFLJyM6GHkeJ0UTMVNOsXYk3Zz?=
 =?iso-8859-1?Q?zvxIz9E8LU/FpPrDPwA1tnLHtk8nxTU4Jy+NViTGu4QyRYyIMn7tmfrejw?=
 =?iso-8859-1?Q?97GC65Qnhlz/NDOlqvtM0xQsBxV2ZuxqkMuCXbO9sdUkCCerpaTjxcsQLT?=
 =?iso-8859-1?Q?30t+avRasIOUQcw0lqZHwdv8eG2z0FMkJdCvkSYIlhHQfo75DDcGMo32EG?=
 =?iso-8859-1?Q?a2O5eS9xDeXId9JTmCE083n1cwA+24Tq7BwlSWCI9W9yse7GZZ88OEt0h3?=
 =?iso-8859-1?Q?fvRvng7go2estFJS7JrX/t652oqbOFPH5i0Qxo6pfXdw+TnNntX3TVvoAn?=
 =?iso-8859-1?Q?Dhp9h0Lngtw3jsTDf2La3nPyCdKU4pfEfmcNLeyQrRnxvPSO27ALqokd0o?=
 =?iso-8859-1?Q?FF4y4lQq1OzesX3j1a89RfcsM91W9bncvlsVhQ8wuuCuJtwlPTD/cbQF2p?=
 =?iso-8859-1?Q?ja2C+vMGOM5EOPr0nyDqZEmVttSFdUuuS8atii0K5J2IIqUfIy247jbj6U?=
 =?iso-8859-1?Q?BiMm8OWNadTg+wCqV/NGuH+EJDuEMersW92BAfCfd3qPehhDVqjbWjLZq3?=
 =?iso-8859-1?Q?OvuUHy3kqBO7MQeaCZ7+magd1/oRgtGIAobV9nhd1UeUbjnNfcpusus6Sm?=
 =?iso-8859-1?Q?eoW0+T5ui666UDQSSqosSZO/geV/TdxgfENGiSLPKu1Q5p/Z7UvNzYoXXx?=
 =?iso-8859-1?Q?h6ZjgxSv74zasKlGyqy+WY5xYmQbVCF5zkrvN+A5Xmk89sElY8SYyljV2r?=
 =?iso-8859-1?Q?ztEmY/3teRU4NRzIAT40UD/0C91PwlY=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: AM9PR03MB7526.eurprd03.prod.outlook.com
X-MS-Exchange-CrossTenant-Network-Message-Id: 6614684a-d48f-45ac-9200-08de965077ca
X-MS-Exchange-CrossTenant-originalarrivaltime: 09 Apr 2026 15:55:48.4284
 (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: lS67aZYnXbTk9EexmvHQsh8SI6OWSAwhpme+fh7kFjk/8/qwgT+SSFm57vjKq2oRsVCW59jXlStGogIAAMWxwTY2+w6JksfEcK2U6y63Upc=
X-MS-Exchange-Transport-CrossTenantHeadersStamped: AS4PR03MB8554
X-purgate-ID: tlsNG-4011c0/1775750150-0FD420B1-D8A2D9CA/0/0
X-purgate-type: clean
X-purgate-size: 1132

The statement 'return ERR_PTR(-ENOENT);' on the final line of the function
'hypfs_get_entry_rel()' is unreachable because the logic within the infinit=
e
loop 'for (;;)' provides all possible exit paths for the function. So there
is no execution path to exit the loop and reach the final that statement.

Remove that statement. This also fixes MISRA C Rule 2.1 which states:
"A project shall not contain unreachable code".

Signed-off-by: Dmytro Prokopchuk <dmytro_prokopchuk1@epam.com>
---
Test CI pipeline:
https://gitlab.com/xen-project/people/dimaprkp4k/xen/-/pipelines/2440991088
---
 xen/common/hypfs.c | 2 --
 1 file changed, 2 deletions(-)

diff --git a/xen/common/hypfs.c b/xen/common/hypfs.c
index cdf4ee0171..fea74d66e1 100644
--- a/xen/common/hypfs.c
+++ b/xen/common/hypfs.c
@@ -347,8 +347,6 @@ static struct hypfs_entry *hypfs_get_entry_rel(struct h=
ypfs_entry_dir *dir,
         path =3D end + 1;
         dir =3D container_of(entry, struct hypfs_entry_dir, e);
     }
-
-    return ERR_PTR(-ENOENT);
 }
=20
 static struct hypfs_entry *hypfs_get_entry(const char *path)
--=20
2.43.0


From xen-devel-bounces@lists.xenproject.org Thu Apr 09 16:21:13 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 09 Apr 2026 16:21:13 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1277970.1563035 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wAs7y-0006an-Gj; Thu, 09 Apr 2026 16:21:10 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1277970.1563035; Thu, 09 Apr 2026 16:21: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 1wAs7y-0006ag-E3; Thu, 09 Apr 2026 16:21:10 +0000
Received: by outflank-mailman (input) for mailman id 1277970;
 Thu, 09 Apr 2026 16:21:09 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <bounce-md_30504962.69d7d1f3.v1-2d68c2e86b134086aff945f8d500e260@bounce.vates.tech>)
 id 1wAs7x-0006Zr-6L
 for xen-devel@lists.xenproject.org; Thu, 09 Apr 2026 16:21:09 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wAs7w-002Kv1-IN
 for xen-devel@lists.xenproject.org; Thu, 09 Apr 2026 18:21:08 +0200
Received: from [10.42.69.2] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1) (envelope-from
 <bounce-md_30504962.69d7d1f3.v1-2d68c2e86b134086aff945f8d500e260@bounce.vates.tech>)
 id 69d7d1c8-2eae-0a2a0a5409dd-0a2a450295e2-42
 for <xen-devel@lists.xenproject.org>; Thu, 09 Apr 2026 18:21:08 +0200
Received: from [198.2.187.14] (helo=mail187-14.suw11.mandrillapp.com)
 by tlsNG-720697.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.0)
 (envelope-from
 <bounce-md_30504962.69d7d1f3.v1-2d68c2e86b134086aff945f8d500e260@bounce.vates.tech>)
 id 69d7d1f3-42fa-0a2a45020019-c602bb0e046b-3
 for <xen-devel@lists.xenproject.org>; Thu, 09 Apr 2026 18:21:08 +0200
Received: from pmta09.mandrill.prod.suw01.rsglab.com (localhost [127.0.0.1])
 by mail187-14.suw11.mandrillapp.com (Mailchimp) with ESMTP id
 4fs4tW0whgz8XWZyF
 for <xen-devel@lists.xenproject.org>; Thu,  9 Apr 2026 16:21:07 +0000 (GMT)
Received: from [37.26.189.201] by mandrillapp.com id
 2d68c2e86b134086aff945f8d500e260; Thu, 09 Apr 2026 16:21: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=mte1 header.d=mandrillapp.com header.i="@mandrillapp.com" header.h="From:Subject:To:Cc:Message-Id:In-Reply-To:References:Feedback-ID:Date:MIME-Version:Content-Type:Content-Transfer-Encoding"; dkim=pass header.s=mte1 header.d=vates.tech header.i="thierry.escande@vates.tech" header.h="From:Subject:To:Cc:Message-Id:In-Reply-To:References:Feedback-ID:Date:MIME-Version:Content-Type:Content-Transfer-Encoding"
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=mandrillapp.com;
	s=mte1; t=1775751667; x=1776021667;
	bh=0UnZsd6VMv3nhahDJTmKjpYZpYAGnJoqucRzautn7QA=;
	h=From:Subject:To:Cc:Message-Id:In-Reply-To:References:Feedback-ID:
	 Date:MIME-Version:Content-Type:Content-Transfer-Encoding:CC:Date:
	 Subject:From;
	b=qbefgWiqvZErQ9/ybAH4YbWRSO4lAPnBrUa9n60XJtZ+FaQUBpuwIZGQtJ7wf6jAd
	 20TesU2SbQbkXhU62M5LdTgbHooW1tgnnR7gwxu26BfYWdhY6aMCADgQgzedyVCZ87
	 66eKLmn73R33tJZyoTsN0uZiJdZOjKJl+RUuKfNbWbn0H5io3aBCgN+YDWwWFKxQdU
	 tfuefmUyuxSETWquPkU3CiwC2owPqjVYKu45uqaEYjJydRabwHdLB6ltPf3+tDr3Dj
	 tW6PwzhDXhM+d8lIIDRo4y7Q1DYq+x06dbvwP3paBdQq68ySheMhO+KbuCW4/e0bRX
	 x89LfC7f55tSQ==
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=vates.tech; s=mte1;
	t=1775751667; x=1776012167; i=thierry.escande@vates.tech;
	bh=0UnZsd6VMv3nhahDJTmKjpYZpYAGnJoqucRzautn7QA=;
	h=From:Subject:To:Cc:Message-Id:In-Reply-To:References:Feedback-ID:
	 Date:MIME-Version:Content-Type:Content-Transfer-Encoding:CC:Date:
	 Subject:From;
	b=UReoS+ahOd18SgPZmRFWbbfx0xIgFHLHhSfxKjnlXGUAz8e9dg+UGV6vPiv4EVfPC
	 oucDswE963viLI8gwfSxOx70oy6L+EiNoIOxpwH8pGE+FWaSvLPOEK1bRfDVrfCWFQ
	 cePt3vjSVZW1vUH7M+lW2EVq6+j/HyFFPCWZTnToXJ3+G7x8Bo+HbsnllxIcdhsVnZ
	 JmwZJh5cQdd0yA3ROgHTrEW2fcsaxMtTUNMUPVJx+kroQtbbd83VLrzqGBUZyOIJzp
	 nc4MyShmXadcHSABuafEuOlqgfQVF2Stk6VFKI3BgLM5Fdzo6WVP6gNoYqG6ovFcvG
	 7JinwSTsMZz8A==
From: "Thierry Escande" <thierry.escande@vates.tech>
Subject: =?utf-8?Q?[RFC=20PATCH=20v2=202/3]=20libxl:=20Allow=20PCI=20device=20passthrough=20using=20-device=20Qemu=20command=20line?=
X-Mailer: git-send-email 2.53.0
X-Bm-Disclaimer: Yes
X-Bm-Milter-Handled: 4ffbd6c1-ee69-4e1b-aabd-f977039bd3e2
X-Bm-Transport-Timestamp: 1775751666400
To: xen-devel@lists.xenproject.org
Cc: "Thierry Escande" <thierry.escande@vates.tech>, "Anthony PERARD" <anthony.perard@vates.tech>, "Juergen Gross" <jgross@suse.com>, "=?utf-8?Q?Daniel=20P=20.=20Berrang=C3=A9?=" <berrange@redhat.com>, "=?utf-8?Q?Marek=20Marczykowski-G=C3=B3recki?=" <marmarek@invisiblethingslab.com>
Message-Id: <20260409162000.1102680-3-thierry.escande@vates.tech>
In-Reply-To: <20260409162000.1102680-1-thierry.escande@vates.tech>
References: <20260409162000.1102680-1-thierry.escande@vates.tech>
X-Native-Encoded: 1
X-Report-Abuse: =?UTF-8?Q?Please=20forward=20a=20copy=20of=20this=20message,=20including=20all=20headers,=20to=20abuse@mandrill.com.=20You=20can=20also=20report=20abuse=20here:=20https://mandrillapp.com/contact/abuse=3Fid=3D30504962.2d68c2e86b134086aff945f8d500e260?=
X-Mandrill-User: md_30504962
Feedback-ID: 30504962:30504962.20260409:md
Date: Thu, 09 Apr 2026 16:21:07 +0000
MIME-Version: 1.0
Content-Type: text/plain; charset=utf-8
Content-Transfer-Encoding: 7bit
X-purgate-ID: tlsNG-720697/1775751668-AE926CD1-767AF0B8/0/0
X-purgate-type: clean
X-purgate-size: 8941

This change makes use of the new option 'hotplug' for host PCI devices
passthrough'd to the guest. If hotplug=0 is used in the pci device
configuration table, the device will be attached to the guest using the
Qemu command line as '-device xen-pci-passthrough,hostaddr=...'

The host device configuration is passed to the -device option as a json
array, just like it's done for hotplug using QMP. The json array is
created by a new internal function libxl__device_pci_get_qmp_json() that
is also used by pci_add_qmp_device_add().

Then, instead of sending the 'device_add' command, the device_add
callback is called to perform the 'query-pci' check to make sure the
passthrough'd device is present.

In the same way at shutdown, the device is not removed using QMP and
only the pci_remove_done() function is called.

As with QMP, the use of the 'hotplug=0' option honors the 'seize' option
by adding the PCI device to the assignable list if needed.

Example use:
 pci = [ "00:03.0,seize=1,hotplug=0" ]

Signed-off-by: Thierry Escande <thierry.escande@vates.tech>
---
v2:
- Add support for YAJL json parser
---
 tools/include/libxl.h             |  1 +
 tools/libs/light/libxl_dm.c       | 80 +++++++++++++++++++++++++++++++
 tools/libs/light/libxl_internal.h |  2 +
 tools/libs/light/libxl_pci.c      | 41 ++++++++++++----
 4 files changed, 114 insertions(+), 10 deletions(-)

diff --git a/tools/include/libxl.h b/tools/include/libxl.h
index 7c098edab6..66fb07ad67 100644
--- a/tools/include/libxl.h
+++ b/tools/include/libxl.h
@@ -2666,6 +2666,7 @@ int libxl_device_pci_assignable_add(libxl_ctx *ctx, libxl_device_pci *pci, int r
 int libxl_device_pci_assignable_remove(libxl_ctx *ctx, libxl_device_pci *pci, int rebind);
 libxl_device_pci *libxl_device_pci_assignable_list(libxl_ctx *ctx, int *num);
 void libxl_device_pci_assignable_list_free(libxl_device_pci *list, int num);
+bool libxl_pci_assignable(libxl_ctx *ctx, libxl_device_pci *pci);
 
 /* CPUID handling */
 int libxl_cpuid_parse_config(libxl_cpuid_policy_list *cpuid, const char* str);
diff --git a/tools/libs/light/libxl_dm.c b/tools/libs/light/libxl_dm.c
index 511ec76a65..4f4781b36d 100644
--- a/tools/libs/light/libxl_dm.c
+++ b/tools/libs/light/libxl_dm.c
@@ -1169,6 +1169,86 @@ static int libxl__build_device_model_args_new(libxl__gc *gc,
                     }
                 }
             }
+
+            if (guest_config->num_pcidevs) {
+                libxl_ctx *ctx = libxl__gc_owner(gc);
+                libxl_device_pci *pci;
+                libxl__json_object *qmp_json;
+                char *json_str;
+#ifdef HAVE_LIBJSONC
+                json_object *jso;
+                const char *buf;
+#elif defined(HAVE_LIBYAJL)
+                yajl_gen hand;
+                /* memory for 'buf' is owned by 'hand' */
+                const unsigned char *buf;
+                libxl_yajl_length len;
+#else
+#               error Missing JSON library
+#endif
+
+                for (i = 0; i < guest_config->num_pcidevs; i++) {
+                    pci = &guest_config->pcidevs[i];
+
+                    if (pci->hotplug)
+                        continue;
+
+                    if (!libxl_pci_assignable(ctx, pci) && pci->seize) {
+                        rc = libxl_device_pci_assignable_add(ctx, pci, 1);
+                        if (rc)
+                            return rc;
+                    }
+
+                    qmp_json = libxl__device_pci_get_qmp_json(gc, pci);
+
+#ifdef HAVE_LIBJSONC
+                    rc = libxl__json_object_to_json_object(gc, &jso, qmp_json);
+                    if (rc)
+                        return rc;
+
+                    buf = json_object_to_json_string_ext(jso,
+                                                         JSON_C_TO_STRING_PLAIN);
+                    if (!buf) {
+                        json_object_put(jso);
+                        return ERROR_NOMEM;
+                    }
+#elif defined(HAVE_LIBYAJL)
+                    hand = libxl_yajl_gen_alloc(NULL);
+                    if (!hand) {
+                        return ERROR_NOMEM;
+                    }
+#if HAVE_YAJL_V2
+                    /* Disable beautify for data sent to QEMU */
+                    yajl_gen_config(hand, yajl_gen_beautify, 0);
+#endif
+
+                    rc = libxl__json_object_to_yajl_gen(gc, hand, qmp_json);
+                    if (rc) {
+                        yajl_gen_free(hand);
+                        return rc;
+                    }
+
+                    rc = yajl_gen_get_buf(hand, &buf, &len);
+                    if (rc != yajl_gen_status_ok) {
+                        yajl_gen_free(hand);
+                        return rc;
+                    }
+#endif
+
+                    json_str = libxl__strdup(gc, (const char *)buf);
+                    if (json_str)
+                        flexarray_vappend(dm_args, "-device", json_str, NULL);
+
+#ifdef HAVE_LIBJSONC
+                    json_object_put(jso);
+#elif defined(HAVE_LIBYAJL)
+                    yajl_gen_free(hand);
+#endif
+
+                    if (!json_str)
+                        return ERROR_NOMEM;
+                }
+            }
         }
 
         if (libxl_defbool_val(b_info->u.hvm.nographic) && (!sdl && !vnc)) {
diff --git a/tools/libs/light/libxl_internal.h b/tools/libs/light/libxl_internal.h
index b65e0064b9..06b5a14409 100644
--- a/tools/libs/light/libxl_internal.h
+++ b/tools/libs/light/libxl_internal.h
@@ -1729,6 +1729,8 @@ _hidden int libxl__device_pci_setdefault(libxl__gc *gc, uint32_t domid,
                                          libxl_device_pci *pci, bool hotplug);
 _hidden bool libxl__is_igd_vga_passthru(libxl__gc *gc,
                                         const libxl_domain_config *d_config);
+_hidden libxl__json_object *libxl__device_pci_get_qmp_json(libxl__gc *gc,
+                                                         libxl_device_pci *pci);
 
 /* from libxl_dtdev */
 
diff --git a/tools/libs/light/libxl_pci.c b/tools/libs/light/libxl_pci.c
index 49d272d0de..3ef2c43412 100644
--- a/tools/libs/light/libxl_pci.c
+++ b/tools/libs/light/libxl_pci.c
@@ -1098,16 +1098,10 @@ out:
     pci_add_dm_done(egc, pas, rc); /* must be last */
 }
 
-static void pci_add_qmp_device_add(libxl__egc *egc, pci_add_state *pas)
+libxl__json_object *libxl__device_pci_get_qmp_json(libxl__gc *gc,
+                                                   libxl_device_pci *pci)
 {
-    STATE_AO_GC(pas->aodev->ao);
     libxl__json_object *args = NULL;
-    int rc;
-
-    /* Convenience aliases */
-    libxl_domid domid = pas->domid;
-    libxl_device_pci *pci = &pas->pci;
-    libxl__ev_qmp *const qmp = &pas->qmp;
 
     libxl__qmp_param_add_string(gc, &args, "driver",
                                 "xen-pci-passthrough");
@@ -1134,11 +1128,30 @@ static void pci_add_qmp_device_add(libxl__egc *egc, pci_add_state *pas)
     if (pci->permissive)
         libxl__qmp_param_add_bool(gc, &args, "permissive", true);
 
+    return args;
+}
+
+static void pci_add_qmp_device_add(libxl__egc *egc, pci_add_state *pas)
+{
+    STATE_AO_GC(pas->aodev->ao);
+    libxl__json_object *args = NULL;
+    int rc = 0;
+
+    /* Convenience aliases */
+    libxl_domid domid = pas->domid;
+    libxl_device_pci *pci = &pas->pci;
+    libxl__ev_qmp *const qmp = &pas->qmp;
+
+    args = libxl__device_pci_get_qmp_json(gc, pci);
+
     qmp->ao = pas->aodev->ao;
     qmp->domid = domid;
     qmp->payload_fd = -1;
     qmp->callback = pci_add_qmp_device_add_cb;
-    rc = libxl__ev_qmp_send(egc, qmp, "device_add", args);
+    if (pci->hotplug)
+        rc = libxl__ev_qmp_send(egc, qmp, "device_add", args);
+    else
+        pci_add_qmp_device_add_cb(egc, qmp, NULL, 0);
     if (rc) goto out;
     return;
 
@@ -1509,7 +1522,7 @@ int libxl_device_pci_add(libxl_ctx *ctx, uint32_t domid,
     return AO_INPROGRESS;
 }
 
-static bool libxl_pci_assignable(libxl_ctx *ctx, libxl_device_pci *pci)
+bool libxl_pci_assignable(libxl_ctx *ctx, libxl_device_pci *pci)
 {
     libxl_device_pci *pcis;
     int num;
@@ -1820,6 +1833,14 @@ static void do_pci_remove(libxl__egc *egc, pci_remove_state *prs)
     libxl_domain_type type = libxl__domain_type(gc, domid);
     libxl_device_pci *pci = &prs->pci;
     int rc, num;
+
+    /* Passthrough'd device has been passed to Qemu command line so there is
+     * no need to remove it via QMP */
+    if (!pci->hotplug) {
+        pci_remove_done(egc, prs, 0);
+        return;
+    }
+
     pcis = libxl_device_pci_list(ctx, domid, &num);
     if (!pcis) {
         rc = ERROR_FAIL;
-- 
2.53.0



--
Thierry Escande | Vates XCP-ng Developer

XCP-ng & Xen Orchestra - Vates solutions

web: https://vates.tech



From xen-devel-bounces@lists.xenproject.org Thu Apr 09 16:21:13 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 09 Apr 2026 16:21:13 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1277969.1563027 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wAs7v-0006Lp-87; Thu, 09 Apr 2026 16:21:07 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1277969.1563027; Thu, 09 Apr 2026 16:21: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 1wAs7v-0006Li-4H; Thu, 09 Apr 2026 16:21:07 +0000
Received: by outflank-mailman (input) for mailman id 1277969;
 Thu, 09 Apr 2026 16:21:06 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <bounce-md_30504962.69d7d1ef.v1-79112c74a4eb403bb19f7e2d994d5317@bounce.vates.tech>)
 id 1wAs7t-0006LW-VW
 for xen-devel@lists.xenproject.org; Thu, 09 Apr 2026 16:21:05 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wAs7t-00AE9I-BP
 for xen-devel@lists.xenproject.org; Thu, 09 Apr 2026 18:21:05 +0200
Received: from [10.42.69.10] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1) (envelope-from
 <bounce-md_30504962.69d7d1ef.v1-79112c74a4eb403bb19f7e2d994d5317@bounce.vates.tech>)
 id 69d7d1e5-5cb7-0a2a0a5109dd-0a2a450ae60c-16
 for <xen-devel@lists.xenproject.org>; Thu, 09 Apr 2026 18:21:05 +0200
Received: from [198.2.187.14] (helo=mail187-14.suw11.mandrillapp.com)
 by tlsNG-4011c0.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.0)
 (envelope-from
 <bounce-md_30504962.69d7d1ef.v1-79112c74a4eb403bb19f7e2d994d5317@bounce.vates.tech>)
 id 69d7d1f0-ee98-0a2a450a0019-c602bb0ee608-3
 for <xen-devel@lists.xenproject.org>; Thu, 09 Apr 2026 18:21:05 +0200
Received: from pmta09.mandrill.prod.suw01.rsglab.com (localhost [127.0.0.1])
 by mail187-14.suw11.mandrillapp.com (Mailchimp) with ESMTP id
 4fs4tR3b3xz8XS2Rn
 for <xen-devel@lists.xenproject.org>; Thu,  9 Apr 2026 16:21:03 +0000 (GMT)
Received: from [37.26.189.201] by mandrillapp.com id
 79112c74a4eb403bb19f7e2d994d5317; Thu, 09 Apr 2026 16:21:03 +0000
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
Authentication-Results: eu.smtp.expurgate.cloud; dkim=pass header.s=mte1 header.d=mandrillapp.com header.i="@mandrillapp.com" header.h="From:Subject:To:Cc:Message-Id:In-Reply-To:References:Feedback-ID:Date:MIME-Version:Content-Type:Content-Transfer-Encoding"; dkim=pass header.s=mte1 header.d=vates.tech header.i="thierry.escande@vates.tech" header.h="From:Subject:To:Cc:Message-Id:In-Reply-To:References:Feedback-ID:Date:MIME-Version:Content-Type:Content-Transfer-Encoding"
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=mandrillapp.com;
	s=mte1; t=1775751663; x=1776021663;
	bh=Nz9cFB5Mcx1tT5bpJb3P1KzNsuuko5bfszc5bYglBPc=;
	h=From:Subject:To:Cc:Message-Id:In-Reply-To:References:Feedback-ID:
	 Date:MIME-Version:Content-Type:Content-Transfer-Encoding:CC:Date:
	 Subject:From;
	b=LSkNrZLdzHFgCWHDR4OlVLnNFiaF4Kw5htG77yaS9aPysISMCILfP+HQpgYMuEvYA
	 LXbrAMd9LzWzgU3LiRZxyS9uREgEvSjZcZhUrUEcvbr44nvVP44x8oLj8LJ0BgNSpH
	 4jUmRLObZfWGdmC/LnqP76PYgyvAgXGF6SXMueyJrjXQ1MOl5ir+k2ZpPhjCHIV+oX
	 xjeC813O3PL/JmUlh4YO0Tw1xcpVWYb/gqniBaqDKEGZcZDNMI2EjJfbZeId6qVpO0
	 US7HpKFXirzpRT4rZKEtCGKNWZZnpUKIp+8WkK3BIqwT3gxpkNkBnJoh4HvR5GGu3O
	 ByWfZv3vw8EAg==
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=vates.tech; s=mte1;
	t=1775751663; x=1776012163; i=thierry.escande@vates.tech;
	bh=Nz9cFB5Mcx1tT5bpJb3P1KzNsuuko5bfszc5bYglBPc=;
	h=From:Subject:To:Cc:Message-Id:In-Reply-To:References:Feedback-ID:
	 Date:MIME-Version:Content-Type:Content-Transfer-Encoding:CC:Date:
	 Subject:From;
	b=UhweX3OBt8mayspvrUrkiNjyHDQSwbhUVgmgFC7ItbpcV0Lmz000p0vSXDtH2J3+5
	 4JnKc0F91sND+7RALcebEHTaAuPn29IFxLu5NQDl2ZudvTnJhYSb01rtixKkjkXSWz
	 rH8OCUXxl4MIOxEwPbjWfmE6qTe3TqANaMaSBX5wfFcUpA7fV8hqprgNB9Orgk/KFV
	 55BTsseTefHteKUpMVZWH4kcqXa28rzPnAustlvBFXbHLzUPTAzj2NInv4xDig12eD
	 BXQpsRzf/KZNud/mBak3z0iM/3Kd25bvAxlfd/+T+8GI+A3WVotFbvfqAZbBiYHRWE
	 tU+9e4jj7EhKg==
From: "Thierry Escande" <thierry.escande@vates.tech>
Subject: =?utf-8?Q?[RFC=20PATCH=20v2=201/3]=20xl:=20Add=20pci=20device=20hotplug=20option?=
X-Mailer: git-send-email 2.53.0
X-Bm-Disclaimer: Yes
X-Bm-Milter-Handled: 4ffbd6c1-ee69-4e1b-aabd-f977039bd3e2
X-Bm-Transport-Timestamp: 1775751662747
To: xen-devel@lists.xenproject.org
Cc: "Thierry Escande" <thierry.escande@vates.tech>, "Anthony PERARD" <anthony.perard@vates.tech>, "Juergen Gross" <jgross@suse.com>, "=?utf-8?Q?Daniel=20P=20.=20Berrang=C3=A9?=" <berrange@redhat.com>, "=?utf-8?Q?Marek=20Marczykowski-G=C3=B3recki?=" <marmarek@invisiblethingslab.com>
Message-Id: <20260409162000.1102680-2-thierry.escande@vates.tech>
In-Reply-To: <20260409162000.1102680-1-thierry.escande@vates.tech>
References: <20260409162000.1102680-1-thierry.escande@vates.tech>
X-Native-Encoded: 1
X-Report-Abuse: =?UTF-8?Q?Please=20forward=20a=20copy=20of=20this=20message,=20including=20all=20headers,=20to=20abuse@mandrill.com.=20You=20can=20also=20report=20abuse=20here:=20https://mandrillapp.com/contact/abuse=3Fid=3D30504962.79112c74a4eb403bb19f7e2d994d5317?=
X-Mandrill-User: md_30504962
Feedback-ID: 30504962:30504962.20260409:md
Date: Thu, 09 Apr 2026 16:21:03 +0000
MIME-Version: 1.0
Content-Type: text/plain; charset=utf-8
Content-Transfer-Encoding: 7bit
X-purgate-ID: tlsNG-4011c0/1775751665-C481C0B1-8F0CA5CE/0/0
X-purgate-type: clean
X-purgate-size: 2915

This option is used to passthrough PCI devices using the Qemu command
line (-device driver,...) instead of the QMP hot-plug mechanism.

This is needed for Q35 support since its PCI root bus doesn't support
hotplugging.

If not specified, the default behavior is to use hotplug via QMP.

Signed-off-by: Thierry Escande <thierry.escande@vates.tech>
---
v2: no change
---
 tools/libs/light/libxl_types.idl | 1 +
 tools/libs/util/libxlu_pci.c     | 2 ++
 tools/xl/xl_parse.c              | 5 +++++
 3 files changed, 8 insertions(+)

diff --git a/tools/libs/light/libxl_types.idl b/tools/libs/light/libxl_types.idl
index a7893460f0..aca0e93793 100644
--- a/tools/libs/light/libxl_types.idl
+++ b/tools/libs/light/libxl_types.idl
@@ -922,6 +922,7 @@ libxl_device_pci = Struct("device_pci", [
     ("seize", bool),
     ("rdm_policy", libxl_rdm_reserve_policy),
     ("name", string),
+    ("hotplug", bool),
     ])
 
 libxl_device_rdm = Struct("device_rdm", [
diff --git a/tools/libs/util/libxlu_pci.c b/tools/libs/util/libxlu_pci.c
index 294482c6d7..f6440c878b 100644
--- a/tools/libs/util/libxlu_pci.c
+++ b/tools/libs/util/libxlu_pci.c
@@ -192,6 +192,8 @@ int xlu_pci_parse_spec_string(XLU_Config *cfg, libxl_device_pci *pci,
             name_present = true;
             pci->name = strdup(val);
             if (!pci->name) ret = ERROR_NOMEM;
+        } else if (!strcmp(key, "hotplug")) {
+            pci->hotplug = atoi(val);
         } else {
             XLU__PCI_ERR(cfg, "Unknown PCI_SPEC_STRING option: %s", key);
             ret = ERROR_INVAL;
diff --git a/tools/xl/xl_parse.c b/tools/xl/xl_parse.c
index 48c72dce9c..7ea2a76662 100644
--- a/tools/xl/xl_parse.c
+++ b/tools/xl/xl_parse.c
@@ -1361,6 +1361,7 @@ void parse_config_data(const char *config_source,
     int pci_msitranslate = 0;
     int pci_permissive = 0;
     int pci_seize = 0;
+    int pci_hotplug = 1;
     int i, e;
     int num_llc_colors;
     int num_xs_quota;
@@ -1699,6 +1700,9 @@ void parse_config_data(const char *config_source,
     if (!xlu_cfg_get_long (config, "pci_seize", &l, 0))
         pci_seize = l;
 
+    if (!xlu_cfg_get_long (config, "pci_hotplug", &l, 0))
+        pci_hotplug = l;
+
     if (!xlu_cfg_get_string(config, "rdm", &buf, 0)) {
         libxl_rdm_reserve rdm;
         if (!xlu_rdm_parse(config, &rdm, buf)) {
@@ -1720,6 +1724,7 @@ void parse_config_data(const char *config_source,
             pci->power_mgmt = pci_power_mgmt;
             pci->permissive = pci_permissive;
             pci->seize = pci_seize;
+            pci->hotplug = pci_hotplug;
             /*
              * Like other pci option, the per-device policy always follows
              * the global policy by default.
-- 
2.53.0



--
Thierry Escande | Vates XCP-ng Developer

XCP-ng & Xen Orchestra - Vates solutions

web: https://vates.tech



From xen-devel-bounces@lists.xenproject.org Thu Apr 09 16:21:13 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 09 Apr 2026 16:21:13 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1277968.1563017 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wAs7r-00068k-05; Thu, 09 Apr 2026 16:21:03 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1277968.1563017; Thu, 09 Apr 2026 16:21: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 1wAs7q-00068d-Tm; Thu, 09 Apr 2026 16:21:02 +0000
Received: by outflank-mailman (input) for mailman id 1277968;
 Thu, 09 Apr 2026 16:21:01 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <bounce-md_30504962.69d7d1e9.v1-f49911ee17314b0195681d17125076d7@bounce.vates.tech>)
 id 1wAs7o-00068X-TL
 for xen-devel@lists.xenproject.org; Thu, 09 Apr 2026 16:21:00 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wAs7n-00BrtN-Ko
 for xen-devel@lists.xenproject.org; Thu, 09 Apr 2026 18:20:59 +0200
Received: from [10.42.69.12] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1) (envelope-from
 <bounce-md_30504962.69d7d1e9.v1-f49911ee17314b0195681d17125076d7@bounce.vates.tech>)
 id 69d7d1c8-e002-0a2a0a5209dd-0a2a450ca1ae-38
 for <xen-devel@lists.xenproject.org>; Thu, 09 Apr 2026 18:20:59 +0200
Received: from [198.2.187.14] (helo=mail187-14.suw11.mandrillapp.com)
 by tlsNG-d25034.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.0)
 (envelope-from
 <bounce-md_30504962.69d7d1e9.v1-f49911ee17314b0195681d17125076d7@bounce.vates.tech>)
 id 69d7d1ea-f40c-0a2a450c0019-c602bb0ebbe0-3
 for <xen-devel@lists.xenproject.org>; Thu, 09 Apr 2026 18:20:59 +0200
Received: from pmta09.mandrill.prod.suw01.rsglab.com (localhost [127.0.0.1])
 by mail187-14.suw11.mandrillapp.com (Mailchimp) with ESMTP id
 4fs4tK5CfXz8XRsB5
 for <xen-devel@lists.xenproject.org>; Thu,  9 Apr 2026 16:20:57 +0000 (GMT)
Received: from [37.26.189.201] by mandrillapp.com id
 f49911ee17314b0195681d17125076d7; Thu, 09 Apr 2026 16:20: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=mte1 header.d=mandrillapp.com header.i="@mandrillapp.com" header.h="From:Subject:To:Cc:Message-Id:Feedback-ID:Date:MIME-Version:Content-Type:Content-Transfer-Encoding"; dkim=pass header.s=mte1 header.d=vates.tech header.i="thierry.escande@vates.tech" header.h="From:Subject:To:Cc:Message-Id:Feedback-ID:Date:MIME-Version:Content-Type:Content-Transfer-Encoding"
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=mandrillapp.com;
	s=mte1; t=1775751657; x=1776021657;
	bh=Qjx6OsI44qGGL/jcmYHV+NmV+OqiXfQQzBrw/BNMPf4=;
	h=From:Subject:To:Cc:Message-Id:Feedback-ID:Date:MIME-Version:
	 Content-Type:Content-Transfer-Encoding:CC:Date:Subject:From;
	b=HofsryFQHdR+feHc5iaw9Zxa19cuNLhWrnJX31KeOiC0qXOV446YG5+Icjd0Po9dM
	 Z/wAvlqhyXmNtO7zE7ILdIivK7YbJKKNvSg6dYP5xYgekjCiaDGSDbYun6k/n7fYz2
	 +834G6QEA6oCRkh226IbtZhK5CAr0SLLgjbf5VngNMcgU3bGjArB5qKi22NKWu+Tc+
	 J10fWO46UQHmLx0690MbRYKBg9PVNmarJMq7A3CoWSfgp3rpsIJb5bK4umfgJCXncL
	 nfLR3om7+OU/xzyUuTyf1A+WcBFwwK0v2abj3oGOWQIijYWjE2UNr3PlmcQ5OJ9Fsc
	 OmODCgkk8Qw4w==
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=vates.tech; s=mte1;
	t=1775751657; x=1776012157; i=thierry.escande@vates.tech;
	bh=Qjx6OsI44qGGL/jcmYHV+NmV+OqiXfQQzBrw/BNMPf4=;
	h=From:Subject:To:Cc:Message-Id:Feedback-ID:Date:MIME-Version:
	 Content-Type:Content-Transfer-Encoding:CC:Date:Subject:From;
	b=urnu/pF++2Gd1Ga/OhMH0WCTMQZLOHoFATGfVsEWDefu5LfPHY26HWdwwAkW2ZfTk
	 geYXYbXcUJcBZzFkZIBKpex/+UkNjTkOA3jlZTZG1X1lgTJbN/9RdvB3YRiEUjyavs
	 LHqwgkGTrlTyKuc+1uDBvFdqkcx+GtApGXOzSoDz2f7+nV3WXL227Blaex6dGB6gRQ
	 oY7p8vgebHaXDALmB79NDVQPpcF2WU7BoT9fxbcc0E7YOxd/z6pZwTRkK9U4QmTueP
	 Kjptqrd7eOgwrq+6WcEwqW42l/Dhe4DtMuLW6LImpOV1krbkxOncC5cBtqVk3XKCfl
	 p6nsnHA2T5wEQ==
From: "Thierry Escande" <thierry.escande@vates.tech>
Subject: =?utf-8?Q?[RFC=20PATCH=20v2=200/3]=20xl:=20Allow=20PCI=20devices=20to=20be=20passthrough'd=20via=20Qemu=20command=20line?=
X-Mailer: git-send-email 2.53.0
X-Bm-Disclaimer: Yes
X-Bm-Milter-Handled: 4ffbd6c1-ee69-4e1b-aabd-f977039bd3e2
X-Bm-Transport-Timestamp: 1775751656801
To: xen-devel@lists.xenproject.org
Cc: "Thierry Escande" <thierry.escande@vates.tech>, "Anthony PERARD" <anthony.perard@vates.tech>, "Juergen Gross" <jgross@suse.com>, "=?utf-8?Q?Daniel=20P=20.=20Berrang=C3=A9?=" <berrange@redhat.com>, "=?utf-8?Q?Marek=20Marczykowski-G=C3=B3recki?=" <marmarek@invisiblethingslab.com>
Message-Id: <20260409162000.1102680-1-thierry.escande@vates.tech>
X-Native-Encoded: 1
X-Report-Abuse: =?UTF-8?Q?Please=20forward=20a=20copy=20of=20this=20message,=20including=20all=20headers,=20to=20abuse@mandrill.com.=20You=20can=20also=20report=20abuse=20here:=20https://mandrillapp.com/contact/abuse=3Fid=3D30504962.f49911ee17314b0195681d17125076d7?=
X-Mandrill-User: md_30504962
Feedback-ID: 30504962:30504962.20260409:md
Date: Thu, 09 Apr 2026 16:20:57 +0000
MIME-Version: 1.0
Content-Type: text/plain; charset=utf-8
Content-Transfer-Encoding: 7bit
X-purgate-ID: tlsNG-d25034/1775751659-81756A3D-CD9AFF73/0/0
X-purgate-type: clean
X-purgate-size: 2517

This series adds support for a new 'hotplug' option for PCI devices to be
passthrough'd to guests.

The current mechanism for device passthrough uses QMP device_add command
to hot-plug PCI devices to the guest Qemu instance. This is an issue for
guests running on Q35 chipset (preliminary support posted at [1]) since the
Q35 PCI root bus does not support hotplug. Devices could be hotplugged to
a secondary PCI bus but Xen only support 1 PCI bus for now.

The 'hotplug' option allows to control how devices are attached to the
guest, either by using the legacy QMP mechanism (this is the default) or by
passing it directly to the Qemu command line using xen-pci-passthrough
device.

Example usage in cfg file:
 pci = [ "00:03.0,seize=1,hotplug=0" ]

Since Qemu -device option accepts parameters in json format, this
patchset adds a new internal function libxl__device_pci_get_qmp_json() that
generates the device json object used for both QMP hotplug and command line
passing.
Also, the function libxl_pci_assignable() is made available from libxl.h
for access in libxl_dm.c. I don't know if it's ok to make it public or if
it should stay private. Maybe it should be renamed as
libxl_device_pci_assignable() to match the other PCI device APIs.

This has been successfully tested on Xen 4.22-dev and Qemu 10.0 running
Debian VMs in both Bios and UEFI mode with a passthrough'd nvme disk.
Disabling the hotplug mechanism might be made mandatory for Q35 machines
later, once Q35 support is merged upstream.

[1] https://lore.kernel.org/xen-devel/20260313163455.790692-1-thierry.escande@vates.tech/

Changes in v2:
- Add support for YAJL json parser

Thierry Escande (3):
  xl: Add pci device hotplug option
  libxl: Allow PCI device passthrough using -device Qemu command line
  docs: provide description for pci hotplug option

 docs/man/xl-pci-configuration.5.pod | 17 ++++++
 docs/man/xl.cfg.5.pod.in            |  6 +++
 tools/include/libxl.h               |  1 +
 tools/libs/light/libxl_dm.c         | 80 +++++++++++++++++++++++++++++
 tools/libs/light/libxl_internal.h   |  2 +
 tools/libs/light/libxl_pci.c        | 41 +++++++++++----
 tools/libs/light/libxl_types.idl    |  1 +
 tools/libs/util/libxlu_pci.c        |  2 +
 tools/xl/xl_parse.c                 |  5 ++
 9 files changed, 145 insertions(+), 10 deletions(-)

-- 
2.53.0



--
Thierry Escande | Vates XCP-ng Developer

XCP-ng & Xen Orchestra - Vates solutions

web: https://vates.tech



From xen-devel-bounces@lists.xenproject.org Thu Apr 09 16:21:14 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 09 Apr 2026 16:21:14 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1277972.1563045 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wAs82-0006s9-PL; Thu, 09 Apr 2026 16:21:14 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1277972.1563045; Thu, 09 Apr 2026 16:21: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 1wAs82-0006ry-L6; Thu, 09 Apr 2026 16:21:14 +0000
Received: by outflank-mailman (input) for mailman id 1277972;
 Thu, 09 Apr 2026 16:21:13 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <bounce-md_30504962.69d7d1f7.v1-739e440ecbe14cfe85700eac099145f7@bounce.vates.tech>)
 id 1wAs81-0006qc-PY
 for xen-devel@lists.xenproject.org; Thu, 09 Apr 2026 16:21:13 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wAs81-00AE9I-5G
 for xen-devel@lists.xenproject.org; Thu, 09 Apr 2026 18:21:13 +0200
Received: from [10.42.69.10] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1) (envelope-from
 <bounce-md_30504962.69d7d1f7.v1-739e440ecbe14cfe85700eac099145f7@bounce.vates.tech>)
 id 69d7d1e5-5cb7-0a2a0a5109dd-0a2a450ae60c-38
 for <xen-devel@lists.xenproject.org>; Thu, 09 Apr 2026 18:21:13 +0200
Received: from [198.2.187.1] (helo=mail187-1.suw11.mandrillapp.com)
 by tlsNG-4011c0.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.0)
 (envelope-from
 <bounce-md_30504962.69d7d1f7.v1-739e440ecbe14cfe85700eac099145f7@bounce.vates.tech>)
 id 69d7d1f7-ee98-0a2a450a0019-c602bb01ba26-3
 for <xen-devel@lists.xenproject.org>; Thu, 09 Apr 2026 18:21:12 +0200
Received: from pmta09.mandrill.prod.suw01.rsglab.com (localhost [127.0.0.1])
 by mail187-1.suw11.mandrillapp.com (Mailchimp) with ESMTP id 4fs4tb59lKzBsTvmW
 for <xen-devel@lists.xenproject.org>; Thu,  9 Apr 2026 16:21:11 +0000 (GMT)
Received: from [37.26.189.201] by mandrillapp.com id
 739e440ecbe14cfe85700eac099145f7; Thu, 09 Apr 2026 16:21: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=mte1 header.d=mandrillapp.com header.i="@mandrillapp.com" header.h="From:Subject:To:Cc:Message-Id:In-Reply-To:References:Feedback-ID:Date:MIME-Version:Content-Type:Content-Transfer-Encoding"; dkim=pass header.s=mte1 header.d=vates.tech header.i="thierry.escande@vates.tech" header.h="From:Subject:To:Cc:Message-Id:In-Reply-To:References:Feedback-ID:Date:MIME-Version:Content-Type:Content-Transfer-Encoding"
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=mandrillapp.com;
	s=mte1; t=1775751671; x=1776021671;
	bh=aEGweMh3nn2we8a8H+DP/OH/jK1OTcDX5edzheCVTKg=;
	h=From:Subject:To:Cc:Message-Id:In-Reply-To:References:Feedback-ID:
	 Date:MIME-Version:Content-Type:Content-Transfer-Encoding:CC:Date:
	 Subject:From;
	b=uviAdraaIAKgWK8MUDWijOltDBdI1GTWJU2WJf2RYEcBk9sbLaJUki4KiXpLBTAy8
	 gii4EYYFY7lYGOQDkbb8QKel0ffAssf2VN/YBD5drts0cHD4UwsrUzwYeVe5J6e8en
	 Yd//ppt5++PUn4M8R5zWqfxR8W0dvJ6NlzgljxNdEnn+oZo91sp4MjkbPpOgzlsWXq
	 CnMV01CQpj3W2SCk2TzXf11kliUbfdr5FQBed7A6h6MGgacG0v8JJTM6aMSuGlz21S
	 XvUT1sRuFgg+KxEQoksvFqUpRZRjm5yTo4kVFvXjdOlXSuqOR0/624Y50A1Jg4PJhs
	 +CkGytnLNCPaw==
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=vates.tech; s=mte1;
	t=1775751671; x=1776012171; i=thierry.escande@vates.tech;
	bh=aEGweMh3nn2we8a8H+DP/OH/jK1OTcDX5edzheCVTKg=;
	h=From:Subject:To:Cc:Message-Id:In-Reply-To:References:Feedback-ID:
	 Date:MIME-Version:Content-Type:Content-Transfer-Encoding:CC:Date:
	 Subject:From;
	b=Uj1FqENKAg7IoF81l92a47OI80P0/OeB7Yg+6CMgJEs4O+ZHR+j8wDXA3PD1AWiDU
	 thRbtqACKW6mceDiXYfeP26QdQ13IMbGfyx5vIuNB+L7Donnookv4OBJb8oB+5zCUx
	 8E6vLX2xPfFoe/sxgldszo3bslDB4owDSGU7Z9HM1B9tEuE4gbuPZIHLMVi+c8wsdi
	 848XybE4XI9ilb8y3DGcCNFzYAzRn/pZgGmtS/72LONZZ1n6rPOcQDSIZpcdB1zlO9
	 86x/fss8OIjtxQrwdfvj9QO/pCofltGMPGZFtNnwqy4LDIav5tNxju3nz7mv+qklvF
	 kF3z2YsJT1n7A==
From: "Thierry Escande" <thierry.escande@vates.tech>
Subject: =?utf-8?Q?[RFC=20PATCH=20v2=203/3]=20docs:=20provide=20description=20for=20pci=20hotplug=20option?=
X-Mailer: git-send-email 2.53.0
X-Bm-Disclaimer: Yes
X-Bm-Milter-Handled: 4ffbd6c1-ee69-4e1b-aabd-f977039bd3e2
X-Bm-Transport-Timestamp: 1775751671088
To: xen-devel@lists.xenproject.org
Cc: "Thierry Escande" <thierry.escande@vates.tech>, "Anthony PERARD" <anthony.perard@vates.tech>, "Juergen Gross" <jgross@suse.com>, "=?utf-8?Q?Daniel=20P=20.=20Berrang=C3=A9?=" <berrange@redhat.com>, "=?utf-8?Q?Marek=20Marczykowski-G=C3=B3recki?=" <marmarek@invisiblethingslab.com>
Message-Id: <20260409162000.1102680-4-thierry.escande@vates.tech>
In-Reply-To: <20260409162000.1102680-1-thierry.escande@vates.tech>
References: <20260409162000.1102680-1-thierry.escande@vates.tech>
X-Native-Encoded: 1
X-Report-Abuse: =?UTF-8?Q?Please=20forward=20a=20copy=20of=20this=20message,=20including=20all=20headers,=20to=20abuse@mandrill.com.=20You=20can=20also=20report=20abuse=20here:=20https://mandrillapp.com/contact/abuse=3Fid=3D30504962.739e440ecbe14cfe85700eac099145f7?=
X-Mandrill-User: md_30504962
Feedback-ID: 30504962:30504962.20260409:md
Date: Thu, 09 Apr 2026 16:21:11 +0000
MIME-Version: 1.0
Content-Type: text/plain; charset=utf-8
Content-Transfer-Encoding: 7bit
X-purgate-ID: tlsNG-4011c0/1775751673-0DB550B1-350197DB/0/0
X-purgate-type: clean
X-purgate-size: 1897

This patch adds description for the 'hotplug' PCI option, allowing
devices to be attached to the guest using the legacy QMP hotplug
mechanism or by passing them to the Qemu command line using '-device'.

Signed-off-by: Thierry Escande <thierry.escande@vates.tech>
---
v2: no change
---
 docs/man/xl-pci-configuration.5.pod | 17 +++++++++++++++++
 docs/man/xl.cfg.5.pod.in            |  6 ++++++
 2 files changed, 23 insertions(+)

diff --git a/docs/man/xl-pci-configuration.5.pod b/docs/man/xl-pci-configuration.5.pod
index 0691f06ad3..8b664173cb 100644
--- a/docs/man/xl-pci-configuration.5.pod
+++ b/docs/man/xl-pci-configuration.5.pod
@@ -166,6 +166,23 @@ dom0 without confirmation.  Please use with care.
 
 =back
 
+=item B<hotplug>=I<BOOLEAN>
+
+=over 4
+
+=item Description
+
+Tells L<xl(1)> to use QMP hotplug mechanism to attach assignable device to
+the guest, or to pass it via Qemu command line using
+'B<-device xen-pci-passthrough,...>'. The default is to use the legacy QMP
+mechanism.
+
+=item Default Value
+
+1
+
+=back
+
 =item B<power_mgmt>=I<BOOLEAN>
 
 =over 4
diff --git a/docs/man/xl.cfg.5.pod.in b/docs/man/xl.cfg.5.pod.in
index 3aac0bc4fb..181aaffa0f 100644
--- a/docs/man/xl.cfg.5.pod.in
+++ b/docs/man/xl.cfg.5.pod.in
@@ -1230,6 +1230,12 @@ B<(HVM only)> Changes the default value of B<power_mgmt> for all PCI
 devices passed through to this VM. See B<power_mgmt>
 above.
 
+=item B<pci_hotplug=BOOLEAN>
+
+B<(HVM only)> Changes the default value of B<hotplug> for all PCI
+devices passed through to this VM. See L<xl-pci-configuration(5)> for
+more details.
+
 =item B<gfx_passthru=BOOLEAN|"STRING">
 
 Enable graphics device PCI passthrough. This option makes an assigned
-- 
2.53.0



--
Thierry Escande | Vates XCP-ng Developer

XCP-ng & Xen Orchestra - Vates solutions

web: https://vates.tech



From xen-devel-bounces@lists.xenproject.org Thu Apr 09 17:35:44 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 09 Apr 2026 17:35:44 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1278037.1563053 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wAtHu-00088i-W7; Thu, 09 Apr 2026 17:35:30 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1278037.1563053; Thu, 09 Apr 2026 17:35: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 1wAtHu-00088b-TU; Thu, 09 Apr 2026 17:35:30 +0000
Received: by outflank-mailman (input) for mailman id 1278037;
 Thu, 09 Apr 2026 17:35:29 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <olekstysh@gmail.com>) id 1wAtHs-00088V-Ub
 for xen-devel@lists.xenproject.org; Thu, 09 Apr 2026 17:35:29 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wAtHr-006HS6-U1
 for xen-devel@lists.xenproject.org; Thu, 09 Apr 2026 19:35:27 +0200
Received: from [10.42.69.8] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <olekstysh@gmail.com>)
 id 69d7e35d-e002-0a2a0a5209dd-0a2a4508dba6-4
 for <xen-devel@lists.xenproject.org>; Thu, 09 Apr 2026 19:35:27 +0200
Received: from [209.85.128.50] (helo=mail-wm1-f50.google.com)
 by tlsNG-c1860d.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.0)
 (envelope-from <olekstysh@gmail.com>)
 id 69d7e35f-fab6-0a2a45080019-d1558032d454-3
 for <xen-devel@lists.xenproject.org>; Thu, 09 Apr 2026 19:35:27 +0200
Received: by mail-wm1-f50.google.com with SMTP id
 5b1f17b1804b1-4852a9c6309so11306795e9.0
 for <xen-devel@lists.xenproject.org>; Thu, 09 Apr 2026 10:35:27 -0700 (PDT)
Received: from [10.17.80.122] (ll-22.209.223.85.sovam.net.ua. [85.223.209.22])
 by smtp.gmail.com with ESMTPSA id
 5b1f17b1804b1-488d5b3d4dbsm5917455e9.14.2026.04.09.10.35.25
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Thu, 09 Apr 2026 10:35:26 -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=20251104 header.d=gmail.com header.i="@gmail.com" header.h="Content-Transfer-Encoding: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=20251104; t=1775756127; x=1776360927; darn=lists.xenproject.org;
        h=content-transfer-encoding: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;
        bh=zASOO5sUbm0qt4ARyAXDLmKxNyG8XSmbIY+ZXxkGWOw=;
        b=CV64k2KAK+FFO2rd0Fz/z4/Sir5jEyCjcXhWYFlMi6vD1ECcqbb0pw9212qNgYPq3G
         Mh02/wBsGA15OFBzJheqUgyBN6XyxlKvM42F4sfk6SU+u3k6XWsVUvIdZy0LGyNigf3G
         XaQzcCGS5dYx25mazT+XFunVCgpQmXHHD+n7TobV0NvwE2DSOpdQNLGBd3r2YlS9iztS
         /cic5JEz/rsStQbiwd20VK5/ejPk7lDJx7Rzj0lztG2RcAy5MTaV4QtwuTr0uvDyDfgK
         fMTQekkRwq28rFX4/XlYr5nYsa8HIg+8GwR1KqSp110wSKQKlFCj4mOUf4Aynf4BQ8Kh
         x2Ug==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20251104; t=1775756127; x=1776360927;
        h=content-transfer-encoding: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;
        bh=zASOO5sUbm0qt4ARyAXDLmKxNyG8XSmbIY+ZXxkGWOw=;
        b=Si2TNClclQIwah2Ck09MwB0pdNmp2plZkGyOlNN57i3r5zLN2uDUOpMWQoEbX2fTYQ
         MQRL7n0996MnhoheesshXpQjWMFx1xJb47MUakuDA4yNVVEGSKgmkUDnuinvr6eE/fXN
         jJ7CIfCVSuuf6/zhxFBexDKYlNvOxU1yqFXSIx2AKwxZb5LhBJdAoCigUVZEgveoHUT4
         8dgClMO7z+omI65oioSUi5JqV/Rme+bXLdBlU2ZBIJMX3L302qzgfrvhXQGRhhkw5LxE
         353oujKJLTgTpkBY4LmCdwh69hBfP8ev4yhRJG0aPGe1at3R8KPssqxL2A2BMRQjZal+
         A3mQ==
X-Forwarded-Encrypted: i=1; AJvYcCWMaLH00o8BxYB6py7+FnX9zhgsDOW+O1UhducO5R9w8U469X1UbFBLsFYWomw66FH8H5DY8bNwUlg=@lists.xenproject.org
X-Gm-Message-State: AOJu0YzZ84RQ8361exHNJBLCUs8S+kSAIQazVxy1WG73e5dfXZxkHg0P
	huVeND1tR43dvXJaYv4g1JLvPtgug+PasK/E8bwDROfFRHmhQZXh0oiV
X-Gm-Gg: AeBDietEpjSQ2rAC8RGwDOdXicXwYwk0wtUhh25GSunsW8O04GmuHqc0WZ8Bab4aS3P
	82V+F9GJH3o/oYr28Y4KsjW3za0spNW6HPL+J+H+VKXXff/RWBUSM4vih4uU3LYi5jbldsSLNP6
	3ZW+Oy6MQfie6Cpkt4frm9kjEWr3GYSlgVJ+hxQHHOaGeOhpsBaPZXFAZj1vCFMW9UqmmcrNg8P
	mMYdxq5HJQ01NSfgQ2RxRrqrJVsmrd0O3bpxUlCTCPpsKkell+rFHGV6kgAuA3Nk/RLn8PYayY2
	I7V/C55kz1Be2kXhtazg0qBdQVZUHNAgof7VDQzJsL1dj8x78kiH2WAh1p0YciDgHHZeaaEXpcw
	2ES0qr75F4wFQJ4Ec/T5Nk5XK5OKcFx43snY412XwUyGLBLp4OLqEyBWN4uMTRoU4kmjwsy6jGy
	dudYhtlGSIM07/r9YsnTY8ji5RqmVbET7JC1MXMa3w7RN7Q+Px4h/RQc0=
X-Received: by 2002:a05:600c:4751:b0:485:ae14:8191 with SMTP id 5b1f17b1804b1-488ccf3e8c2mr61648795e9.5.1775756127072;
        Thu, 09 Apr 2026 10:35:27 -0700 (PDT)
Message-ID: <29d475b6-405a-4859-bc96-57ea58eadbae@gmail.com>
Date: Thu, 9 Apr 2026 20:35:25 +0300
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH v7 3/6] Kconfig: Make cpu hotplug configurable
To: Jan Beulich <jbeulich@suse.com>, Mykyta Poturai <Mykyta_Poturai@epam.com>
Cc: Andrew Cooper <andrew.cooper3@citrix.com>,
 =?UTF-8?Q?Roger_Pau_Monn=C3=A9?= <roger.pau@citrix.com>,
 Anthony PERARD <anthony.perard@vates.tech>,
 Michal Orzel <michal.orzel@amd.com>, Julien Grall <julien@xen.org>,
 Stefano Stabellini <sstabellini@kernel.org>,
 "xen-devel@lists.xenproject.org" <xen-devel@lists.xenproject.org>
References: <cover.1774871881.git.mykyta_poturai@epam.com>
 <f3c523ef5b94e930902016d69b440032c9e6c3bd.1774871881.git.mykyta_poturai@epam.com>
 <e37330f7-96ca-41a9-81b1-14d7f3947dd6@suse.com>
 <00a42bdd-8d9b-4828-b789-8d6163c0314c@epam.com>
 <3bd1b2a8-475d-411a-bbe0-61b251079558@suse.com>
Content-Language: en-US
From: Oleksandr Tyshchenko <olekstysh@gmail.com>
In-Reply-To: <3bd1b2a8-475d-411a-bbe0-61b251079558@suse.com>
Content-Type: text/plain; charset=UTF-8; format=flowed
Content-Transfer-Encoding: 7bit
X-purgate-ID: tlsNG-c1860d/1775756127-75F52497-0A35297E/0/0
X-purgate-type: clean
X-purgate-size: 2475



On 4/8/26 15:27, Jan Beulich wrote:
> On 08.04.2026 14:21, Mykyta Poturai wrote:

Hello all.

>> On 3/30/26 15:19, Jan Beulich wrote:
>>> On 30.03.2026 13:59, Mykyta Poturai wrote:
>>>> 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>
>>>
>>> Looks largely okay from a technical pov; one nit and one (repeated) remark
>>> below.
>>>
>>>> --- a/xen/arch/x86/sysctl.c
>>>> +++ b/xen/arch/x86/sysctl.c
>>>> @@ -53,6 +53,11 @@ static long cf_check smt_up_down_helper(void *data)
>>>>        unsigned int cpu, sibling_mask = boot_cpu_data.x86_num_siblings - 1;
>>>>        int ret = 0;
>>>>    
>>>> +    if ( !IS_ENABLED(CONFIG_CPU_HOTPLUG) )
>>>> +    {
>>>> +        ASSERT_UNREACHABLE();
>>>> +        return -EOPNOTSUPP;
>>>> +    }
>>>>        opt_smt = up;
>>>
>>> Another blank line above this one perhaps?
>>>
>>>> --- a/xen/common/Kconfig
>>>> +++ b/xen/common/Kconfig
>>>> @@ -637,6 +637,14 @@ config SYSTEM_SUSPEND
>>>>    
>>>>    	  If unsure, say N.
>>>>    
>>>> +config CPU_HOTPLUG
>>>> +	bool "CPU online/offline support"
>>>> +	depends on X86
>>>> +	default y
>>>> +	help
>>>> +	  Enable support for bringing CPUs online and offline at runtime. On
>>>> +	  X86 this is required for disabling SMT.
>>>
>>> The name of this option may need input from others; I'm not quite convinced
>>> that this is a good name, as there's no true "hot-plugging" involved here.
>>> IOW I fear the present name is misleading.
>>
>> My first idea was "CONFIG_RUNTIME_CPU_CONTROL" I can switch back to it.
> 
> I could live with that, for at least not being misleading. CPU_ONLINE or
> CPU_ONLINE_OFFLINE might be another option, possibly better suited to
> later become a dependency (select) of a true CPU_HOTPLUG. As said, input
> from others may be helpful.

To me, CONFIG_RUNTIME_CPU_CONTROL sounds a little bit vague. Although we 
are indeed controlling CPUs at runtime, "control" could also mean 
cpufreq, power management, affinity pinning. I think 
CONFIG_CPU_ONLINE_OFFLINE is more precise, as it is clear from the name 
that we are transitioning CPUs between online and offline states.


> 
> Jan
> 



From xen-devel-bounces@lists.xenproject.org Thu Apr 09 17:36:39 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 09 Apr 2026 17:36:39 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1278046.1563062 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wAtJ1-00009n-99; Thu, 09 Apr 2026 17:36:39 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1278046.1563062; Thu, 09 Apr 2026 17:36: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 1wAtJ1-00009g-64; Thu, 09 Apr 2026 17:36:39 +0000
Received: by outflank-mailman (input) for mailman id 1278046;
 Thu, 09 Apr 2026 17:36:38 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <roger.pau@citrix.com>) id 1wAtJ0-00009a-I5
 for xen-devel@lists.xenproject.org; Thu, 09 Apr 2026 17:36:38 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wAtIz-0028Pp-UQ
 for xen-devel@lists.xenproject.org; Thu, 09 Apr 2026 19:36:37 +0200
Received: from [10.42.69.4] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <roger.pau@citrix.com>)
 id 69d7e38d-e002-0a2a0a5209dd-0a2a45048e82-38
 for <xen-devel@lists.xenproject.org>; Thu, 09 Apr 2026 19:36:37 +0200
Received: from [52.101.61.35]
 (helo=DM1PR04CU001.outbound.protection.outlook.com)
 by tlsNG-ebf023.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.0)
 (envelope-from <roger.pau@citrix.com>)
 id 69d7e3a4-bb33-0a2a45040019-34653d2371f8-4
 for <xen-devel@lists.xenproject.org>; Thu, 09 Apr 2026 19:36:37 +0200
Received: from CH7PR03MB7860.namprd03.prod.outlook.com (2603:10b6:610:24e::14)
 by SA3PR03MB8208.namprd03.prod.outlook.com (2603:10b6:806:464::24)
 with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9769.20; Thu, 9 Apr
 2026 17:36:34 +0000
Received: from CH7PR03MB7860.namprd03.prod.outlook.com
 ([fe80::f5ba:35df:1c9f:b343]) by CH7PR03MB7860.namprd03.prod.outlook.com
 ([fe80::f5ba:35df:1c9f:b343%4]) with mapi id 15.20.9769.014; Thu, 9 Apr 2026
 17:36: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=HZj+AhYvueHcOtoL5ybuRMxm8lGub9YzYrN+Zeb3PwsaOt+7OFnI815Zss6fmo7RdGvs69t8q//KZ4UZnOQoC0kOV/EARBqj4JHMBt471LK/IliNmkEec+j24I077h/uHJT4taVCHjRvJTaxT3NwEVbt+HfUqeXrL4goBUFlteEeLLFCkn8O1eiksI6olh//cFj4cau0uEtOhQtk/rfhLoDxHnGaT+YpqmMlnyaG5fEUDMY2W7zXy/XKMXwMp/Cw2Tq/qHT3I3nEkNJalyjAYnjuTIAlIhliKjIn3q4sUiNASJzk0OvbFXSshG4Fc/amJBDVz36QlKZJE4D2FzSwRg==
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com;
 s=arcselector10001;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1;
 bh=UHdPM72qPxAnbDAsGFPnhI/+0aVo8errphOdlGj59p4=;
 b=N1+Z88o44ky3x7PV2cCO2cg7tjhZFPvFYsgL/10ArByBr3tq4+FG/rEd7dmgviVexCAY0hHDT9ORMuhnwPpXAfQoiRozJAFJWLnkPzlHQaA64zWWYsaiMWsUu95sMCgY3WZCVQTA7T4HSsXH/PyuiYT9SkxVIxR9GuH9lIrtnz1qktJXGzgdfdp8YIqBKa6THe2Ep28UQTTXPQ1oRCBNNcBzo83S1pumii5r5fETm8w8AUxTctTvRzaSGRCuUjkbEm+89bAQJKeOS19fDY9bkcqsC4ph+XLoG4vHOuB968gPTr26OreN2SS6/SRbUqRRJJVgh00YgX5rnp1kOvf3sA==
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=UHdPM72qPxAnbDAsGFPnhI/+0aVo8errphOdlGj59p4=;
 b=YtkK2VvnmVNWxrv3FBTSUcIko7LysztH1JHkmq4iCBEhMaKtN4E5917yO/OdZ3CmcRuvPtunH4orXCbnvLh1u9HabogiqZM27b/DdIwGjtKX4xoy9hcu4nXmwJUIGN+aBpAR1FEPbe4IALujtqgfLlkUQXxBzyMb2pyb26+cTsE=
Authentication-Results: dkim=none (message not signed)
 header.d=none;dmarc=none action=none header.from=citrix.com;
Date: Thu, 9 Apr 2026 19:36:31 +0200
From: Roger Pau =?utf-8?B?TW9ubsOp?= <roger.pau@citrix.com>
To: Jan Beulich <jbeulich@suse.com>
Cc: "xen-devel@lists.xenproject.org" <xen-devel@lists.xenproject.org>,
	Andrew Cooper <andrew.cooper3@citrix.com>
Subject: Re: [PATCH] VT-d: avoid multi-message-MSI check for HPET
Message-ID: <adfjn296dde_RQYE@macbook.local>
References: <1903a57a-524e-4e6d-bd47-a87fadda4aa0@suse.com>
Content-Type: text/plain; charset=utf-8
Content-Disposition: inline
In-Reply-To: <1903a57a-524e-4e6d-bd47-a87fadda4aa0@suse.com>
X-ClientProxiedBy: MR1P264CA0064.FRAP264.PROD.OUTLOOK.COM
 (2603:10a6:501:3e::29) To CH7PR03MB7860.namprd03.prod.outlook.com
 (2603:10b6:610:24e::14)
MIME-Version: 1.0
X-MS-PublicTrafficType: Email
X-MS-TrafficTypeDiagnostic: CH7PR03MB7860:EE_|SA3PR03MB8208:EE_
X-MS-Office365-Filtering-Correlation-Id: 666738dc-e952-401b-e6e3-08de965e8b78
X-MS-Exchange-SenderADCheck: 1
X-MS-Exchange-AntiSpam-Relay: 0
X-Microsoft-Antispam:
	BCL:0;ARA:13230040|376014|366016|1800799024|18002099003|22082099003|56012099003;
X-Microsoft-Antispam-Message-Info:
	STj4b63y2/aj0o9s93sfo8EiDE/WCk3iogse8fDsJwxSppf66GzQ5PPsM4U3ruYkfLlJWWOBh1jpChY7fry4GK553jIlQ1v2FeYR5JPS5wkM1rb0aQVXGxfuBlKY7UCMSXKb+Pvmy2BOBXI68qCgZSEpHW/SpyMP9r3Z1x81o4od/2zqWJKLNmSseyZRdijcd6cQ2Fucpk0drQtM9v6j+xoIQ9qHRuLA2hSmnlbC93i3SRvb/fLkn8h5xYFi4G5DeRpsv6rDW8ISfyFjLblEC+T0Q35srG6k3ZISzyry6Z/5dA08SI5CYx9XSsFYUZKd4sdv8p9TV0hALERCsjkc1XRJsMZogLeDI897RWxilfKQPdEpjAwsm+UwgqQh2gp+KEGiexja597oAYGtCF9AA90B7yDOSln7kVweaycZRtG5+UJx73QOsE0lhG2tq+TpVEq3g6rF2pAd8hD+ZLxLk5okmlYWDNGl4CDWyHlSRnSTKrGvVKWCyW8s/FRVkFSfG7elU8jzyLQwrAjDgnan3/mzDHUCNYRJWBBiWGU5X7iKYZYttbntTbtkQc1d9meDwg3LaGUPBOuJp4ftZzwG/6588H9aXG2VQu5nyASp9t8awTAqjDmegT+To6Y4s5QinpClUmIMaYC1SQ9BsMYKERm09aHURX3hXrq57B/sgx+RU5JgshQ8vacuwVuSJQgx/X/XFzZL3klOBAfdf4PwmIsgKOOZOcgesNnmP7k4PLA=
X-Forefront-Antispam-Report:
	CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:CH7PR03MB7860.namprd03.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(376014)(366016)(1800799024)(18002099003)(22082099003)(56012099003);DIR:OUT;SFP:1101;
X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1
X-MS-Exchange-AntiSpam-MessageData-0:
	=?utf-8?B?SW1BQnFwbkpBbjZab1JhSEorR3pvTU5zQWJuUVNqb0lMZXJZZWJ5SFp2a3BU?=
 =?utf-8?B?YjI1Yk1iK2JjdUZzZGJzUkRJWFgxUndndWpvSStIbGxMNlZrYkxDNGgzcDky?=
 =?utf-8?B?SWduam9DMGJic1dqbFBYTUZMR0Qvano4VkMrMk9LeVdzdmVNaWdyUXphT1FO?=
 =?utf-8?B?VmMxdkRGbzBJYW4rNk41U1VkT3BWK2FuZnZZZW5GL2dkdm9TdlBmSDFiNTdx?=
 =?utf-8?B?NFlicURwa25VbzI3aDdGUGVqRi9qanMxTnhyUVNwdkswWUpNN3FUWVpWczNL?=
 =?utf-8?B?dGhBRjJRL3duZHFUQVNVT3ZFdUVvbWpJQzQvK1F5L0xDOVE4dmpXNmQyd2RK?=
 =?utf-8?B?ZmxRcnJkKzNkVFJsc1F3Y2kwc1pQc0FocnNnN3RKSitSYkpZc1lSUG0rdFVz?=
 =?utf-8?B?aXJkS2ZkaG12K1F6bTZTTFRyLzBadU9hc0dVY2pPY2oranE5aEhpcGUxd2hX?=
 =?utf-8?B?dHJlV2FGMmV5eDNzZUpyMmV1WndBWStsRXpkY0R4ZXczSk9KQTYxN0dPM0tp?=
 =?utf-8?B?Z1poSHR0ZStsMERQY3R5OVg5ZnY4ZVB0ZXNEQW5PTU03Z0dNZ1QyVDFISlM0?=
 =?utf-8?B?RG54WUFBeUV1Unl6Z2F3YXdUeURVVFZsVE93OUdGZ3hBZzRQeGk5MC8vWEVF?=
 =?utf-8?B?QVFrL3FsYzlRUzBCeDkwdkR4L01uTzNjQ0ZnVHhnemVRZ0xaZitPMmNia1pv?=
 =?utf-8?B?cW8relFxenVYN3ZuNk1lYkkwVU82Z2ZYR3hoTDVNMUczdnArTDNJa0VyRnl1?=
 =?utf-8?B?Z2FYMUpvKzJhUyt5cXQvS2dnMXFuTjR3WENCVUg3OUhscUZxNFdoNzdnSGtw?=
 =?utf-8?B?bFZuYjRsY2xCSU5neVZjQzdaYmtoMzBhODdpUStNRE84RUsrWmNYRlVabm9X?=
 =?utf-8?B?V1loSzVWNmxGeDU5czFTMVR3dE4zZy9IV05GZnRnb2xRbEwwelZXTUtIRUZt?=
 =?utf-8?B?Uit5TlNTcWRDcUtwWk9BaWU1cDdwd3JuajNWVGFGc2NVRFhSaWpmYzRyaFo3?=
 =?utf-8?B?cldOdThob0lSTkhXZWJXVzdaSVNqSlRMRnJFakRPelNDdk9iOWtNbXBFbGM5?=
 =?utf-8?B?UmFMSHF4eTdXS2RGSjdEemIrWVhrWFkvYjhRUFlGeS84NXl1QjcxZWM3Z3Nu?=
 =?utf-8?B?YnAvNkREMGxoWCticDF2d2hRRWdCRGFHNG56ZUpvYkYrNlhrZXMrOHhDdmp3?=
 =?utf-8?B?Rk03MHM3R0R0OXlNZFYrNEJ2UzNGTktmcm54dU1aeHhCR3h2VVhSREkxVW9j?=
 =?utf-8?B?ZzFjVVM2ZFZXRjRWMU1mVFVFcHFrb1M2VytkY01KVk1yZzI4VmRkRi9QV2JZ?=
 =?utf-8?B?aGdsTFZBUm1GeGhqNlRkUVFuMXNDdUlMcExGSjlLeEhEU3pqZkdPUk5lVTIx?=
 =?utf-8?B?NFFmYVVYVzJ4bE01NmVzcHJQZy9hVjdLK1Q5YUhNSndkRHBzMVNKQVBNMUdr?=
 =?utf-8?B?OHNpNHBwRncxeEJkVlg5VUNyZ3RPajFERTIzL29CUzhESG9GMllCK1EyNjQ1?=
 =?utf-8?B?U3p2NjdFWWZYbE5mM0o2N28xeWY1TnI1elhPOXpRRVVqTDZnVVJWcElaSkJV?=
 =?utf-8?B?V1R4WlYzTWRxM0Y1cnk4bWw4dU4rM29Cb2NqRGZaK3FEd0hwN1E1R0ZHRlFP?=
 =?utf-8?B?NXl4Y0JMN2w3TUE0dXZkN0VwTGhXWG5jbFV4dGpIMXczRExOUmNROHBKUHhP?=
 =?utf-8?B?MkRhcXp3SHdOVHF6YkF1MldUQ2loUEtVbEFLY2gxS3RyUU8yQ0RSa21IWUZF?=
 =?utf-8?B?ZTNMZmR6Zjd1bmNoaURWdi9ab2h2dzVhc0tNZGljeDFCSjl0b3RIMmJZNFBJ?=
 =?utf-8?B?bko3Qit1ZnNXUUg2YklnUDBUV3ZxZ1Z5S01QQWxXbmhBa3V5RkxQMUtVVXJa?=
 =?utf-8?B?b1UrdDZ2b0pUQWpNdDMwN3VORDV1cUpkUjhxUmcwZ3VaMWNTRUduNGhEdmFY?=
 =?utf-8?B?M25Jd2dwTnZEd2F5b3VHNlRkOVBISlBadG1tR3BoZTBIaU5xSmNMQ0krSlNx?=
 =?utf-8?B?RmpNL1BsQTkwdElHUUdjNzdPMVp3b1N2WS84WmVJSVNYRUpBM0RvaWhJWUln?=
 =?utf-8?B?L21DNU5UM09vU0tzd1lDajArQWpwVDE3N21QT08zczNVMXJJaGMyeGpyMHE1?=
 =?utf-8?B?eGxwQXR5UTIyNmhOYzdKOEx0TkZJUlg4c1prQm5xVk9TZmxJTEo0WmZSbkFK?=
 =?utf-8?B?SFc5QVZUNTM2K1ViTDEyb2VCclVnZHFGdWI1dHA5YUg3ODVWMTd0bkhCenVk?=
 =?utf-8?B?MzFsVGtwSm5TZVoyQ3VOQTNFSktkSytWM1lrS3QybDJLSVJsRkx2RDZwZ0pW?=
 =?utf-8?B?Q0tSdzRSSytTWVRMZVU5bUdIU3FBaGIzRy9IcDVSQWtwU0xSSGRnQT09?=
X-OriginatorOrg: citrix.com
X-MS-Exchange-CrossTenant-Network-Message-Id: 666738dc-e952-401b-e6e3-08de965e8b78
X-MS-Exchange-CrossTenant-AuthSource: CH7PR03MB7860.namprd03.prod.outlook.com
X-MS-Exchange-CrossTenant-AuthAs: Internal
X-MS-Exchange-CrossTenant-OriginalArrivalTime: 09 Apr 2026 17:36:34.6084
 (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: 5g3oCeWI7XxojqV2TdESStJzIXWS8czoxlpQwBhzBcMUUgs+YEx35/G3NCxDS3yrRXLeQk4iR5QQpUsFhGES3g==
X-MS-Exchange-Transport-CrossTenantHeadersStamped: SA3PR03MB8208
X-purgate-ID: tlsNG-ebf023/1775756197-B1B2051B-6A1688A8/0/0
X-purgate-type: clean
X-purgate-size: 916

On Wed, Apr 01, 2026 at 02:47:48PM +0200, Jan Beulich wrote:
> Having this immediately below a PCI-dev vs HPET conditional is (mildly)
> confusing. Move that if() into the body of the earlier one.
> 
> Signed-off-by: Jan Beulich <jbeulich@suse.com>
> 
> --- a/xen/drivers/passthrough/vtd/intremap.c
> +++ b/xen/drivers/passthrough/vtd/intremap.c
> @@ -513,13 +513,13 @@ static int msi_msg_to_remap_entry(
>  
>          if ( rc )
>              return rc;
> +
> +        if ( msi_desc->msi_attrib.type == PCI_CAP_ID_MSI )
> +            nr = msi_desc->msi.nvec;
>      }
>      else
>          set_hpet_source_id(msi_desc->hpet_id, &new_ire);
>  
> -    if ( msi_desc->msi_attrib.type == PCI_CAP_ID_MSI )
> -        nr = msi_desc->msi.nvec;
> -

I'm not fully opposed to this, but maybe it would be good to add a
small comment to note that HPET never use multi-vector MSI?

Thanks, Roger.


From xen-devel-bounces@lists.xenproject.org Thu Apr 09 17:37:33 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 09 Apr 2026 17:37:33 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1278058.1563071 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wAtJr-0000lz-NB; Thu, 09 Apr 2026 17:37:31 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1278058.1563071; Thu, 09 Apr 2026 17:37: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 1wAtJr-0000ls-KG; Thu, 09 Apr 2026 17:37:31 +0000
Received: by outflank-mailman (input) for mailman id 1278058;
 Thu, 09 Apr 2026 17:37:30 +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 1wAtJq-0000lf-8V
 for xen-devel@lists.xenproject.org; Thu, 09 Apr 2026 17:37:30 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wAtJp-0028YY-J9
 for xen-devel@lists.xenproject.org; Thu, 09 Apr 2026 19:37:29 +0200
Received: from [10.42.69.7] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <dmytro_prokopchuk1@epam.com>)
 id 69d7e3cd-e002-0a2a0a5209dd-0a2a45079ea6-10
 for <xen-devel@lists.xenproject.org>; Thu, 09 Apr 2026 19:37:29 +0200
Received: from [40.107.159.87]
 (helo=OSPPR02CU001.outbound.protection.outlook.com)
 by tlsNG-ef75cf.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.0)
 (envelope-from <dmytro_prokopchuk1@epam.com>)
 id 69d7e3d9-ba2d-0a2a45070019-286b9f57330c-3
 for <xen-devel@lists.xenproject.org>; Thu, 09 Apr 2026 19:37:29 +0200
Received: from AM9PR03MB7526.eurprd03.prod.outlook.com (2603:10a6:20b:3de::17)
 by GV1PR03MB9870.eurprd03.prod.outlook.com (2603:10a6:150:3d::16)
 with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9769.20; Thu, 9 Apr
 2026 17:37:26 +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.20.9745.035; Thu, 9 Apr 2026
 17: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=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=RpP1adUHHeJ7+T5BXsQ6T0UgCNTBp/RIf0bma6Fj+79zOPDTfvHo+EcrbLcLURLsXf3ZCis8a0gcUA1l/3XFpqg0VDfIVwHS8h555trOyIDySrklPxLbkIygwZ65F3nS09zJobzbGhQh2Cm2PolCTBBtGMSpFRSUIi2GjjcoeEleCDJCZOAswM14hEJGjUUtr1E67vY96+Wyuur3K1NFbz1NIEYkD/r3VXl+dB2laNV8Z8Y0r4p0y5Wf/YZqVESPrCNteSLuFlat2b+v/EoS0JK7DEJz6V7sgl5FqRTqc/IXcNLM4ZhoTGE9p2pHzzMEcJfy8eUzUQxzOzou3/BCmA==
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com;
 s=arcselector10001;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1;
 bh=oz6kcvmrfWfOFr05VYYyyaBTJCtYUCnt4WDyMt+tzgk=;
 b=iS0OzG7yG97Ehr3qr2c/a2fX/nKvyCqCvqQ6oh33yxQiOzuJyY60muG/sIrRT6n1qIX4QZL6xbrdjKnGSm4cNBrz8Hes0qxYc/Jpf9cVH3vCUmTGwts1Qv3qqDBzakTB+TmKN9U7lFwC+KkYP6UpT8CGmuz1KpGH4+lMjy3L0Ar4EZUo9zMqgvv5Y236Qa9eW1qojvUKrs0kh2pSbN7yjuGwqvJmzRd5sLsbbGUNdh0iogbSLvwBtmJ8U/VzjL8lYOZaaNA7rTbjtwjzHqSnCLS1MzEh7D6oWxmDO5DudL/whKRr6hPbrBXP1rhLus1YaOmthzexWnxHLxNJczy06g==
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=oz6kcvmrfWfOFr05VYYyyaBTJCtYUCnt4WDyMt+tzgk=;
 b=Bj1fJCu1Wnc+qHaTDchVjTzQKKX+wwRnvdXTs8nyrsBzaEt15+M2xA5DHDoWVVllonV4XQLdGAkE66LRsCQIY0oJwQvq+TydK2l4NM4xPkglUlAR+gMSBQhEL7Q5G9qwBzs31gISnvAdjK4ARU51M42eI23JeMBW6V9jg9+yFSlNoMsjktsW5wh23qilVSn9lUQGP21yaSdsNACjUTJW/tHGQX76w5LtkYofRXuP/pDgX50K1zhTs3UJsGO0q9gmRibcbTkLx7I0e8/37vuSR7aqxUbD9sYm15LfmsXtTvTzAsBUvHZKH4LeIpICcu3DFG+dbpJnpG+sd3CW61mAJw==
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>, =?iso-8859-1?Q?Roger_Pau_Monn=E9?=
	<roger.pau@citrix.com>, Stefano Stabellini <sstabellini@kernel.org>
Subject: [PATCH] generic/altp2m: address violations of MISRA C Rule 2.1
Thread-Topic: [PATCH] generic/altp2m: address violations of MISRA C Rule 2.1
Thread-Index: AQHcyEeH3FAPJgz8C0q4McY6u5ZElQ==
Date: Thu, 9 Apr 2026 17:37:26 +0000
Message-ID:
 <8b5ca213a097f7b221b06b6173e4621563779a73.1775752149.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: 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_|GV1PR03MB9870:EE_
x-ms-office365-filtering-correlation-id: 567fbb7f-21ca-42d2-d43a-08de965eaa58
x-ms-exchange-senderadcheck: 1
x-ms-exchange-antispam-relay: 0
x-microsoft-antispam:
 BCL:0;ARA:13230040|42112799006|1800799024|366016|376014|18002099003|38070700021|56012099003;
x-microsoft-antispam-message-info:
 CcfmYISD2JDMW5ZpHTUr3Y4nJTY14zVjHgHKuUWfeD/dNliutls8621plhuBswZAuraxrSzQ75OHimqYW/E0DifbSCY6xkD4ROHEJDTCyn7hh0P0F7Iag3ZR/WiM0Cn83/sdncTxXCoJrjIfp8SP9u+XmQ0AjdNHmHr0gu3odbhvHoGi2LYWRpOhpOl3g+kuDV2N9kg7woqsOz8Pp6TnnUcSn+iByZEPm441S/5VgkkDEve0ypOM2WIMkRrojwjZ5OFrNCx/Q0bYcaXk/0bWY1vfyUabYke28t0gwuYfcevMhbCYqMQmEMBgFsIdvVL8ARld664R2hFCjEVkmiAAXoXbop/NU/RZ0v1UF1c9iVGgKDxGZW1WvFKniTRJT7euVnUUyU3dT0kQuapx7iTWW3TOvluW//yEa6xoG08fU4Ql8pXuySS2seJIG8CaVHbUEqihqONj93ximg4aidEi5JFFuritcBUaCr6IqlY59fwqPkFsN9D77hltrbBPf6PKer+SIaErd3DmmVTPCWnP8aeou0UjjtEDq7LnmbQ5FYw3aU7FrMANGguqgNAArG4Im9/ndshKQho4sjfO80Q+4AOylhqkn2LyqmvaB7S2pZk2ScEeykBwUL7QgVFTKNXDuJtxPNk0540qSPcIjc+1fgz8qPtuvyAqgY5kBLKK1B4Y4cGsCROGAxDeX+HCsmMpZrbIvxzDXgeMEh1SUWQY2vz5HGv4FQcMNkGh77dvBzbK1Xz7pdXg0HKOYhUj5pK4bLgPNhCaLom6OtRedTiowEQnEjyCQl4nqooIixJ69lQ=
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)(42112799006)(1800799024)(366016)(376014)(18002099003)(38070700021)(56012099003);DIR:OUT;SFP:1102;
x-ms-exchange-antispam-messagedata-chunkcount: 1
x-ms-exchange-antispam-messagedata-0:
 =?iso-8859-1?Q?GJcTlKZglnIlnxltSRKyjG+Wr1lvn2Y+EVh5D/YGUH1B5JpVZc0LsRHaMl?=
 =?iso-8859-1?Q?j9NWwYn5UnM/G1k30Lh1Pv+51snDrSGMQMZaAU1FlkFDz+YKsPhLhcJ299?=
 =?iso-8859-1?Q?XtaPJFbLO49Lizifh0bXN4x7EuaYIgj/wXTEdmpS0OGk4OGWP55trw8IcK?=
 =?iso-8859-1?Q?4bVf9PY0RrWPG0V4GN8AaC+RM3XDxOMKdFCXHhRZe/d8HMooX3Wij5x+st?=
 =?iso-8859-1?Q?DO/smyn2uN+fvWseH7IUl2DGo1+FJasr3osQHgRR/WGxc1SedDHLF0TiWv?=
 =?iso-8859-1?Q?MIcoPVlShP0+M97HsLZCs7sFhPX4VY/LFdUWHQhfMfl/C+qXmYzVU4Hx1x?=
 =?iso-8859-1?Q?0ig4/YT5AeY1qaY4RkKRMWsJUwWbUWDuIvmUT07L+uLTgTKa1nCdlIuHYc?=
 =?iso-8859-1?Q?XGES23gpfE0IEwS7lCp34yV/73/v3OGzSMqHCFT5ZOOztxZx8tXtrDPyp2?=
 =?iso-8859-1?Q?+4fchW97JcivgVU2KWFqBxbWwbT+dDrsOHUZjA5x5y51SJ36XzUKjcaVUM?=
 =?iso-8859-1?Q?P6GiC4aMSPqf0BbRbUkAnbL5xZlPA5rxe2Gvg3ZZbBqrtNIkmaKdO/j/PO?=
 =?iso-8859-1?Q?b4IoAQuDKpXHGFn9qC9yp05+jFcUFbT2BKtoMey94wExSfy7t60Wj/ekHb?=
 =?iso-8859-1?Q?LztAJEXMSML1wzJN1EnAPo5fzyxsd2WMOHxF96MKOonbkYUyAOaxceim1V?=
 =?iso-8859-1?Q?7f00Cq6cF5telJFSJvMcwSLZZ+N8YDal9Q5IkeAzKIQW4XD2xe5PdHXZzd?=
 =?iso-8859-1?Q?qZr4sqe6jwHXMKRsL9No037AVa5lOFCJ/ogjcCPWRgwr0m8dqJx6PXMACW?=
 =?iso-8859-1?Q?bboGmsZdLIBuTwB/S+MNKdNcGwlRD1vPqlZGn1Xaq1LmiTj5PxNiXxNhG2?=
 =?iso-8859-1?Q?TCG8a6W9lTJJdevpuvsWj+xXanEXCP5Mzr5I3WrWm2RpIsx2W4chvusm47?=
 =?iso-8859-1?Q?/1yooFkZj+cDQXyreY21zCIE8z+Kc16dmiuDLcNt4lNl+/y992nWmwdMIb?=
 =?iso-8859-1?Q?nMN96uKbZtciMg+IHKvYa+Ig/e07lZpWwAn5+n4E0FPSKqer2I1ny4GGc3?=
 =?iso-8859-1?Q?P+79Yy+Lnqp86bei8o70fbfpRZK/WKEHytMX/12VqzL4hK4Ct/wS6LtMnr?=
 =?iso-8859-1?Q?4yx/pyVEQ6dH9aYyEyODZiNO2SE7fewSOcjO/MA6g4dlI52MY8kszLzhhi?=
 =?iso-8859-1?Q?+2ABlGu244l0LHqW20HZ/g351U10a4qWaJlkNdr+K3smLeW3J8YS57sijC?=
 =?iso-8859-1?Q?31rvbnLt1agVs49yukt9v7tJCVSJoZVBDv79zEU3/8SKdxQCStKi0Y9AdY?=
 =?iso-8859-1?Q?y6fsKbZ5zyrQD5OAx3xvJ8SzcdkUYWGbODQTZsoxian8JRy0oiuHzeZ4it?=
 =?iso-8859-1?Q?mfOegEqkuJXFWZDH+foy0sGS6QWXydMVCXQNi7CDAa1E2YgAJr1uALfLZ1?=
 =?iso-8859-1?Q?eR/oqCGJ1TJ7jh6iEHUIXC6JE40r2+sdxmYkPZBPpbqjwaUSx620FxCzHa?=
 =?iso-8859-1?Q?OS6+EuijIyur7G8PyETVDLN/LeDR0Tx9cWshOdnmC3Ilnp2B8bACin23yg?=
 =?iso-8859-1?Q?6DjooACkxzZ/HMGUUVHCd1y1bW/+CFnajkOEJe4nNZ4ZCSN8WiJl2MTe9h?=
 =?iso-8859-1?Q?KvbFx5Gj7lu69QL6iHCtUSS6tilHrfcmyFIK0u5CWOikgfZWJCM8+hSiHA?=
 =?iso-8859-1?Q?Sdt5VK9v57ClGbHpsufde2kCCEsZ7Dld2SLg0mG3Y7jdcUcDBx/ZFwqGYs?=
 =?iso-8859-1?Q?913ypqISuohV7hUazuGyr3rGQwgJQnH/I5JRFhqKv8VTUnQG6NVXflbR3X?=
 =?iso-8859-1?Q?IY0MptLL9t6/W8tT/mBJlegoHLFULns=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: AM9PR03MB7526.eurprd03.prod.outlook.com
X-MS-Exchange-CrossTenant-Network-Message-Id: 567fbb7f-21ca-42d2-d43a-08de965eaa58
X-MS-Exchange-CrossTenant-originalarrivaltime: 09 Apr 2026 17:37:26.1830
 (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: TZewXxeanjGyaPwdGeDAcR5rQPincpu661NkQO0a6e+qVJ8ykl5AZ+WYSBF4hdh+cX8db0MnlTDo2ss96xj2DLLXJzZLBV2a+JB7kSsakfU=
X-MS-Exchange-Transport-CrossTenantHeadersStamped: GV1PR03MB9870
X-purgate-ID: tlsNG-ef75cf/1775756249-1394141E-B454E631/0/0
X-purgate-type: clean
X-purgate-size: 1520

MISRA C Rule 2.1 states: "A project shall not contain unreachable code".

In certain build configurations, the function 'altp2m_vcpu_idx()' is define=
d
as an inline function that contains the 'BUG()' macro. This resulted in a
violation because the 'BUG()' macro makes the function non-returning.

To ensure compliance with MISRA C Rule 2.1, this patch removes the inline
function implementation and its BUG()-based unreachable code. It is replace=
d
with an unconditional function declaration for 'altp2m_vcpu_idx()'. It reli=
es
on the compiler's Dead Code Elimination (DCE) to remove the unused function
in builds where it is not needed.

Signed-off-by: Dmytro Prokopchuk <dmytro_prokopchuk1@epam.com>
---
Test CI pipeline:
https://gitlab.com/xen-project/people/dimaprkp4k/xen/-/pipelines/2441424553
---
 xen/include/asm-generic/altp2m.h | 7 +------
 1 file changed, 1 insertion(+), 6 deletions(-)

diff --git a/xen/include/asm-generic/altp2m.h b/xen/include/asm-generic/alt=
p2m.h
index 39865a842a..df6b9a9c01 100644
--- a/xen/include/asm-generic/altp2m.h
+++ b/xen/include/asm-generic/altp2m.h
@@ -15,12 +15,7 @@ static inline bool altp2m_active(const struct domain *d)
 }
=20
 /* Alternate p2m VCPU */
-static inline unsigned int altp2m_vcpu_idx(const struct vcpu *v)
-{
-    /* Not implemented on GENERIC, should not be reached. */
-    BUG();
-    return 0;
-}
+uint16_t altp2m_vcpu_idx(const struct vcpu *v);
=20
 #endif /* __ASM_GENERIC_ALTP2M_H */
=20
--=20
2.43.0


From xen-devel-bounces@lists.xenproject.org Thu Apr 09 19:04:44 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 09 Apr 2026 19:04:44 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1278093.1563081 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wAufz-00034u-OK; Thu, 09 Apr 2026 19:04:27 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1278093.1563081; Thu, 09 Apr 2026 19:04: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 1wAufz-00034n-Lo; Thu, 09 Apr 2026 19:04:27 +0000
Received: by outflank-mailman (input) for mailman id 1278093;
 Thu, 09 Apr 2026 19:04:26 +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 1wAufy-000334-9h
 for xen-devel@lists.xenproject.org; Thu, 09 Apr 2026 19:04:26 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wAufx-00EixK-M8
 for xen-devel@lists.xenproject.org; Thu, 09 Apr 2026 21:04:25 +0200
Received: from [10.42.69.8] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <andrew.cooper@citrix.com>)
 id 69d7f81a-bab6-0a2a0a5309dd-0a2a4508e910-40
 for <xen-devel@lists.xenproject.org>; Thu, 09 Apr 2026 21:04:25 +0200
Received: from [52.101.48.14]
 (helo=MW6PR02CU001.outbound.protection.outlook.com)
 by tlsNG-c1860d.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.0)
 (envelope-from <andrew.cooper@citrix.com>)
 id 69d7f837-fab6-0a2a45080019-3465300ededa-3
 for <xen-devel@lists.xenproject.org>; Thu, 09 Apr 2026 21:04:25 +0200
Received: from CH8PR03MB8275.namprd03.prod.outlook.com (2603:10b6:610:2b9::7)
 by MN6PR03MB7646.namprd03.prod.outlook.com (2603:10b6:208:501::10)
 with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9769.20; Thu, 9 Apr
 2026 19:04:21 +0000
Received: from CH8PR03MB8275.namprd03.prod.outlook.com
 ([fe80::a70d:dc32:bba8:ce37]) by CH8PR03MB8275.namprd03.prod.outlook.com
 ([fe80::a70d:dc32:bba8:ce37%6]) with mapi id 15.20.9769.018; Thu, 9 Apr 2026
 19:04: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=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=IS7accLxKVZjfKYICCDjVq07rkvsv7gUOt3qCyFjguQg8gY20ebgeEMMrnMccfDEMnYDGBXdcel3zFzU8gNx5hlN3AOHekr3KuhVdGyKYvYMTmU8HDrZt4bM/f81Ov2Rn4ApCpyAy3tqPwiAKagGPg7wikci3evq/dqjg1WcqQ6Is3xBSB457iXCvxvCb4q/U0BazlvdnN+nXCeTeLQV9mrE9QfPe7PZalxF7Crj6nrdiKS79nbkwDnhyDS79InWbBvN0fhJN0hrXKnumro8LpUFMQmQURvpcg7K02BpgbecfWCpFOEyJk30EMYZbQ+NKnz800kOePlS0JzgNe7yuQ==
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com;
 s=arcselector10001;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1;
 bh=mB3dzvAGCQE967Hw/ykIYrSjyTIKAmbHqZBhScWZnXI=;
 b=aifrfp4c8fbpZWcyfwglKdL/EPQNmXHF7hZk1rZDKE4BnrM0BhXHGv833XFVnwks2GbmkheAaczD3xGafq3SaJEyNgDcZ9uznP29EXcvbK03uIxv14AVYcLCKY82VBRhy6rTK7H4HL6A/lViqMGzClQtZfqLJkGgxXEJvmdcR6puxNK2zCYrn559cPhCoeBrp9ZClr50QcJDAf/zRcBf3ye2dipbaxnHM23ELrHUDUQoap1y4+KNUDtsDictkL2qgL8BQjkFtJ3PVVQQK176+Agb01hCW4ObPRxbJtaP/eNxDM/kKcEXQgmIZrRmL8U/iyw2vK9ACfKWCr3rh6/A7A==
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=mB3dzvAGCQE967Hw/ykIYrSjyTIKAmbHqZBhScWZnXI=;
 b=QIJXAcjBUxwyr1HlEb4F9VUYW54S66ZeUeJDuhEeEKmN1sJ282m1PIxmgxUDzUQwydMt3ApcA6GGFjcZ3aiJuA1dvOk+sgdrOHYf/bhoPRzsmJpRHCDGy0gnZ/fH2ncGaquMvn3xIx4IncNWb2vTUfT3k6OsOJ2D6Ot6oyvtOD8=
Authentication-Results: dkim=none (message not signed)
 header.d=none;dmarc=none action=none header.from=citrix.com;
Message-ID: <ac27bcab-64cd-4c38-a1e5-b3ab6d3557d6@citrix.com>
Date: Thu, 9 Apr 2026 20:04:17 +0100
User-Agent: Mozilla Thunderbird
Cc: Andrew Cooper <andrew.cooper3@citrix.com>,
 Frediano Ziglio <frediano.ziglio@cloud.com>, Jan Beulich
 <jbeulich@suse.com>, =?UTF-8?Q?Roger_Pau_Monn=C3=A9?= <roger.pau@citrix.com>
Subject: Re: [PATCH v3] xen/x86: Check supported features even for PVH dom0
To: Frediano Ziglio <freddy77@gmail.com>, xen-devel@lists.xenproject.org
References: <20260408125521.104660-1-frediano.ziglio@cloud.com>
Content-Language: en-GB
From: Andrew Cooper <andrew.cooper3@citrix.com>
In-Reply-To: <20260408125521.104660-1-frediano.ziglio@cloud.com>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 7bit
X-ClientProxiedBy: LO4P265CA0148.GBRP265.PROD.OUTLOOK.COM
 (2603:10a6:600:2c7::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_|MN6PR03MB7646:EE_
X-MS-Office365-Filtering-Correlation-Id: 1059c075-2fa8-4baf-c9b0-08de966ace94
X-MS-Exchange-SenderADCheck: 1
X-MS-Exchange-AntiSpam-Relay: 0
X-Microsoft-Antispam:
	BCL:0;ARA:13230040|376014|1800799024|366016|22082099003|56012099003|18002099003;
X-Microsoft-Antispam-Message-Info:
	uoNVaWEGaLL8NcTdIULiTJojbXY0/KizmuLpnitNO6pzs6mTEhy6TnYoFM+UjyFhR2OPGX16L6WGUOIy/Q5GZhQ3mgeEtvE2mtpUzIgdw9fR7SKo6YGfXTuaIufW7tM3c+EIZan2SFiBzyeamzp+IOgOaOUyYNi4lQPQzmOlCYUNCkdtpKcVyzc/J6FIWLv0JXYFqwe/K3+u5809x6t6ARBjOJKDg4TFQKPX4znMliZuAhpG0Pc7xPlUqqNKG2NnYwGuxbigO4i1DnIDfCCDfedcrYfUMmiLfP0yX8nGraudr/tu6w0qV4HZooeo7+Qxi4c1zCA/Y7W1tgrkpY/Vc7pOSv5/d+ip2qEvH95qqmwBfEjXOjLBsACvzG6Ay8/fnlF6K6Z6uoMqdQPuxpJn+i7eyW+c4ceAHYFYBMloKaJPgekYCzOTTuXH+wM5aAZs0rHeBtVOlOouauvEOjooqVwomdhU55lCUPdmsPROMFB78M2QAssDArS2PSky4L2tqC7EOZb1zakCgpYT3mGuiFXrus/p5BiXJ7pOSXZZJ7MrA3s6Xm5MyD0EmEH8m656+ZRKfShhpUGk8Z5mUHpUGk7IDQ2UJqBYpjCKdsTsFw2ZaBAVFBWIxI9KJsnHSzNVcpYiG5s6yHJYeSYrt5/k26LDMlD5ngopVWmI3LRtNhjGAXEtgIPqO/Le37vCN+B1FCSIioxOK1ZGLV/ie0TeEegaoga8kDOAjRIwwvnLu1E=
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)(1800799024)(366016)(22082099003)(56012099003)(18002099003);DIR:OUT;SFP:1101;
X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1
X-MS-Exchange-AntiSpam-MessageData-0:
	=?utf-8?B?OW85WjladytSQXNnTjM5YkNKV2VTVzJ0WGp3czZMckRMZ3RZNUtaMjhXL0Zz?=
 =?utf-8?B?WHZFK0lzblFWaXpKUU10MWtuSlNzMzUvZS9zSi92VXR5aGh1V2JWbXUyVnd5?=
 =?utf-8?B?bjVZbk4zNjlrazB5S282cmdvY2d4OWZVTjJ3SVZQMjA0Yi9lb0FYQmFVaFVP?=
 =?utf-8?B?cS81ZDU3U3pNZTFTblRLQXF3dkdjbkRHUG01OWpKWHlVMTUzcUQvOGp3SFFr?=
 =?utf-8?B?OXkxclBjckw1QXpoZ1EvRG1GUWxTNEJXS1FqVVFhZUJiNHR3ZGRCaUlaUWF1?=
 =?utf-8?B?L3BOVGFkdVpObGhjczdIanQrRnVuc1UyWUVSRWdFUDFpdUx5T0crNXpFaGNj?=
 =?utf-8?B?TFcxZGZZVy9mSnR4MTBZWmpoN3dTR3lYUzhLWVdKUWN6VVBzSmQ0dTF6aUd5?=
 =?utf-8?B?SVhEeGY2Vnlpb0NZVkdFTHg3TGZodWtkSFQxNzlRMUh6REwzaFIwbFU2ZzBv?=
 =?utf-8?B?MFozNjBPVmdVZVFhSnRhQzJsek9KMVdmUUNRUjV6RXBIVUc3UHFCWTdmeEVG?=
 =?utf-8?B?YVVzMVUwNnoyR3IrRHd1SFRwZzRidURwZ3NPZi8ybHdkVjhVNWJPeHBHRk04?=
 =?utf-8?B?aDcrbTVQZXFIQ0IvaDJwNGk4RjFMdkFZb2djMFBOcnNVRVNTQ3NnSUZlSWlo?=
 =?utf-8?B?S1dyWDNEZXYzYlN4bzdWazBsbmFqWXZUYzI5SS9vR1VYWDkwYm9NaVBHY25P?=
 =?utf-8?B?VWkyME9rTkpuYXNwVjBWYTN5OTdKUFN2bVVmUXBzZGpMLy91aVgrVHRscE1X?=
 =?utf-8?B?Qlkxek5rUnFGNjFpejdPR0NaWFhvbkRnQ1VOUzluV0ZMWDZYNzc0eGR2NTI4?=
 =?utf-8?B?NTlUbzkrOXkxS3NKM1M5anRLdE84OHVQc3gzL3RhTHZsMDlIeXlGWWxEVktz?=
 =?utf-8?B?RThqM2MwYnJVMVdubjRpSnQwbUpVaGxKTjNzMTBOd2FDUEJSQ2pMOTVrQURB?=
 =?utf-8?B?NDR4U3NOMkcyZXFjR3BLKzBSbmQ3SEgvdERMbGw5OWRjR2I0SDZLSng1WE5u?=
 =?utf-8?B?N21vaDk5OFV2QmVWbmt5QzgvcmZhWGRaSjRZMisxQWtabXVvdVp6aXJBQUpx?=
 =?utf-8?B?M1dSd2pSVzJpVkJqcm1iNjdXVWNmUWN2dEluVk9DaDBSY0pqOXJRcFRpZTBP?=
 =?utf-8?B?WGdDRkc2U0NDY2ZSb0U3a0Z0Uy9SREQwREpyeW9ZNlpSWkwwYUNOOVJCQUd0?=
 =?utf-8?B?M3FIK2VGdkRGUmJZelc1T3pCNFlyeXVzTXo1dkhGcFR4a0xsQ1BTOFc4ZG9R?=
 =?utf-8?B?STM3THJhSUt6TUdpdTMzdzZ2eEJvVERiUkI5LzdWN2NXeVVybWVNV0c3RVhk?=
 =?utf-8?B?TjZwVTFGVmZBTlNlaFJzOWtHZS8yeTEyemoveXkzVXV6eldyMzltMlJwNFdo?=
 =?utf-8?B?dTFNV3hRNnFLa2pyajY0NGJ1bTM4TDNPM05uVUc2bG5ycVRHbHJCa0YzbzVl?=
 =?utf-8?B?cnQzeGp4NjRLblNiL0F6WmlCTHU0RHV3Q2pUUGJPVE5zRmVDcDMxWDNHTXVC?=
 =?utf-8?B?d2FOb01CaXY5cE0rL3VRRVpYTm04U3FudnI5ME9HYllyZ1NITmhoVHNJa1NN?=
 =?utf-8?B?NmVteTVCTk5ueUZtbDJJUlNiRU80TitMQ1MySkxuZWhvVHBWZEg4bjU3ZWFT?=
 =?utf-8?B?VXVUQWtzc0s1Mmxlak9qTlhxMWsyWi9jTUJpb3Y1N3U4VFNEVi8va0NoQ2Q5?=
 =?utf-8?B?bmdLZzdOMlhwQm9uOEVqRzJOYTZEZUxQeEhlVjN4WTN6cVNqU1V3bW5CMlpP?=
 =?utf-8?B?RHIrMGxYU3QvL0tuMXJHZTBuazRSUHc1bURIS2dTOU9RdHkvVWxYWXNpRGlX?=
 =?utf-8?B?S2pjY1RuRW1FNFdOWEhyWHRYMlU5VStxQXNZb3l5TG1RY1R1RFZFbjRQRXNN?=
 =?utf-8?B?ZkFSaU51Y3ozRk4xOUdFZ1AzNmYxdmtQU1FOSDRqT0lubTBmUEpMbzhZcWNZ?=
 =?utf-8?B?SzBMWS9oemJHREhZU2J5RXJlcjZXSkxNamhrTGhpeHo3aGpPQmZaKzBKVEdt?=
 =?utf-8?B?TlY5Ny84SENaS0w1OCtVZFhqWTk4UG53cldyWlpqelVKSUhkOFREZ1QwVllv?=
 =?utf-8?B?aDNyYlVqSW16dVFjYllCSUNUUHVMaW1DVE5oUXVrUXkyNzg4OTV6ajdqaGdP?=
 =?utf-8?B?ZTYwN1Y3ZG5sRC9kV0YrY3E2d1FmQ1hxTTJPSmNVSjVrNlJOT2MrMzNsSzVQ?=
 =?utf-8?B?SlVLblNIYzVjR3lIQmoxUUY2L09BR1NKdGYxSmhJalppbXUxeExmaGFSbmRH?=
 =?utf-8?B?RUxqeXBHTEFYeUM2M29oZzY3cThIalJEZ21GL05QZlFXR1ZtZThJQ3FNdmhk?=
 =?utf-8?B?MmRsK0YwZmEyL3dPN2lFWFNJSUZ4cXg2WUZmdkh3Ry8vTUx6ZFJCUXY4RGNx?=
 =?utf-8?Q?o95T+RxTFUxfkBVs=3D?=
X-OriginatorOrg: citrix.com
X-MS-Exchange-CrossTenant-Network-Message-Id: 1059c075-2fa8-4baf-c9b0-08de966ace94
X-MS-Exchange-CrossTenant-AuthSource: CH8PR03MB8275.namprd03.prod.outlook.com
X-MS-Exchange-CrossTenant-AuthAs: Internal
X-MS-Exchange-CrossTenant-OriginalArrivalTime: 09 Apr 2026 19:04:21.0742
 (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: SFQUbw4rCsoVO8X906AUGN5Z8gNKF8u6o/Px+rS/XgrZzUeSZHkRp1X2+R0l6AIh/ZT6eW8DRDhvKoJ3F57727jSf242cW+e4RDVtFxNNsM=
X-MS-Exchange-Transport-CrossTenantHeadersStamped: MN6PR03MB7646
X-purgate-ID: tlsNG-c1860d/1775761465-F4D5B497-AA7B17E8/0/0
X-purgate-type: clean
X-purgate-size: 1140

On 08/04/2026 1:55 pm, Frediano Ziglio wrote:
> diff --git a/xen/arch/x86/dom0_build.c b/xen/arch/x86/dom0_build.c
> index 864dd9e53e..56eba8f59a 100644
> --- a/xen/arch/x86/dom0_build.c
> +++ b/xen/arch/x86/dom0_build.c
> @@ -320,6 +320,20 @@ unsigned long __init dom0_paging_pages(const struct domain *d,
>      return DIV_ROUND_UP(memkb, 1024) << (20 - PAGE_SHIFT);
>  }
>  
> +int __init initdom_check_parms(
> +    const struct domain *d, const struct elf_dom_parms *parms)
> +{
> +    if ( parms->elf_notes[XEN_ELFNOTE_SUPPORTED_FEATURES].type == XEN_ENT_NONE )
> +        return 0;
> +
> +    if ( is_hardware_domain(d) && !test_bit(XENFEAT_dom0, parms->f_supported) )
> +    {
> +        printk("Kernel does not support Dom0 operation\n");
> +        return -EINVAL;
> +    }
> +
> +    return 0;
> +}

Your v1 structure was better (give or take whitespace mangling).

This needs to be a nested pair of if() conditions to not need rewriting
when SecureBoot check is added.

I'm going to fold this adjustment and commit it, because I need this
patch to fix a separate bug in the patchqueue.

~Andrew


From xen-devel-bounces@lists.xenproject.org Thu Apr 09 21:40:24 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 09 Apr 2026 21:40:24 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1278150.1563106 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wAx6g-0004oI-J6; Thu, 09 Apr 2026 21:40:10 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1278150.1563106; Thu, 09 Apr 2026 21: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 1wAx6g-0004oB-GL; Thu, 09 Apr 2026 21:40:10 +0000
Received: by outflank-mailman (input) for mailman id 1278150;
 Thu, 09 Apr 2026 21:29:00 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <wlsrbwjd7232@gmail.com>) id 1wAwvr-0002h1-QT
 for xen-devel@lists.xenproject.org; Thu, 09 Apr 2026 21:29:00 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wAwvq-00Ao5u-Kg
 for xen-devel@lists.xenproject.org; Thu, 09 Apr 2026 23:28:58 +0200
Received: from [10.42.69.9] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <wlsrbwjd7232@gmail.com>)
 id 69d819de-5cb7-0a2a0a5109dd-0a2a4509dd26-24
 for <xen-devel@lists.xenproject.org>; Thu, 09 Apr 2026 23:28:58 +0200
Received: from [74.125.82.50] (helo=mail-dl1-f50.google.com)
 by tlsNG-bad1c0.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.0)
 (envelope-from <wlsrbwjd7232@gmail.com>)
 id 69d81a18-bf79-0a2a45090019-4a7d52329fee-3
 for <xen-devel@lists.xenproject.org>; Thu, 09 Apr 2026 23:28:58 +0200
Received: by mail-dl1-f50.google.com with SMTP id
 a92af1059eb24-12711867ca1so444071c88.3
 for <xen-devel@lists.xenproject.org>; Thu, 09 Apr 2026 14:28:57 -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=20251104 header.d=gmail.com header.i="@gmail.com" header.h="To:Subject:Message-ID:Date:From:MIME-Version"
ARC-Seal: i=1; a=rsa-sha256; t=1775770136; cv=none;
        d=google.com; s=arc-20240605;
        b=a5zr7ryotsWX88rl8m0BMIK6PO8fNpS/VxY5SVD4JDBBSNCv3lMmooyMYI+qjyUb/7
         v/EYruYoXKkqutYReHVrgmEXAxRdbG6UtGEc3I4I/2CTDflpofS6Tw0V43pjJ/7SjUrZ
         MXGnCWwS6cB7faG/8eg/86QhpzG/KQhdt5pGOihLG7wu7Wk2U6aagXu9K36itGE7XZJ7
         FNx35Wlb2x5UIMPeJwR6V8deI1ziEAKpB/NLbtwpXR/k5e2i/Iqk3sV9oOL87D9sURrS
         joDprxMXqR4DWjvI9o9DdvMETcalxI65hgGtg2c+qeAhPJbhK7O0jXFNRdAMEgEchEpR
         mucA==
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20240605;
        h=to:subject:message-id:date:from:mime-version:dkim-signature;
        bh=aZcPhsgjXmF9WMlgqBsdubbSdhhYn+eTZxnIn/m7ywU=;
        fh=quJY5mN2l4ZorNvEoO9ngNXalhEvTdq/+W8CvHWhECs=;
        b=k827168fVzPf42PbtRVksLB84tUEtZ2BcnYGwH+SgAGrf7awj6WdCMV6rT/7dTnSxb
         8kf1QtJsgv0jig0HCvcLFfZYj+0tfJs3P3f/z4H9XfGTcEi2OFwK1nhG15XAoP+nb3z8
         83GGHWv3iHMVGASku8ufJu44DSc3j6WxUcJ30HsK4MVmVPPr7Y/Tg18KhQdsQQ31kPme
         tX0sCoBWFHUQhLxxOJ0qwhoUX7rlZI4uhJjIeIQZprn9d2+KsHhHyZfoe/QNJZqcXwXj
         R0nMg8g0CI9t+6l/7JzINY2EYsQpmgFQrH2HQ/qhPDB4Hoy5oopdKVVb9na0Cbk4xY4r
         ccWQ==;
        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=20251104; t=1775770136; x=1776374936; darn=lists.xenproject.org;
        h=to:subject:message-id:date:from:mime-version:from:to:cc:subject
         :date:message-id:reply-to;
        bh=aZcPhsgjXmF9WMlgqBsdubbSdhhYn+eTZxnIn/m7ywU=;
        b=WbcDFkR9x+Kz0S+H4CR7UqF1Uv69vIr/dRj8BCNz0f6wf+xHbL2mL7K6R3BK1K6ZMU
         KeuLpG2qILakBpr2l/QS+9EW0ft3AaV6gny1WVzYjJwucpzyZBFccyagUhQtZdCOMr/Y
         JwT/VuYfmNVa+LLGx3LQ9K18iAvoeo7DMifcgocN3SdrKHyHuC/ZTyPn21RVQSl+G6SJ
         2YSe0qErbyUZDDMDTlT++rBIFcT75WgKaBAtW5ZlFIXFkZPUFZzlhO65/tj6i0REGV5t
         uamS4q03uGIrrTrcFpxVa4yTDVpKpPl5Gh7TWDO4P+WK+YkPrd0H1f3GbY21sutS+TkA
         fqmQ==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20251104; t=1775770136; x=1776374936;
        h=to:subject:message-id:date:from:mime-version:x-gm-gg
         :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to;
        bh=aZcPhsgjXmF9WMlgqBsdubbSdhhYn+eTZxnIn/m7ywU=;
        b=a3HyWnTHG8kcIye9kXyzOYdyH+F71x4aUZaB3Jmoj1E8VoR1He+Izhs1cUP18c0cP9
         AUbWmcFHfhvKhqvriP2QwRJ2TRu+LR+kjy7iVE6fcZk+HrLysIZoN6Ux+PcGnhfbRvHO
         Ivj71Y+oAj2uVEf3PArpU9py26x4Y7mKu6Y528TcGD/6swwr2QjncQrE+yaKKyQSP10x
         8CdQBQ+vJOslosGvjjoGg8ZzYorabhEvwbmiGijiJm1F7XWuELxKJyzkNvXF0y2gkShk
         iDR7EP3s6yQkVrhp3gzkS3SPgdMTGhS09ynqDy1KPia2uTDtMJPJzI4cbrg1qHENj6zd
         //2w==
X-Gm-Message-State: AOJu0YzyfIok6IZ2LmSGtynCtNTkb6JFS+LWXEKIPWrfziY5GJe2MVkb
	no8fniElWUGvvoiPPFM1U3RfLnMFgEIs6pjGYXqxCAy4C1H4RgYOvoKrIGY/Joa9N+oVwLFkDH6
	xZ7B6WtehZ+MMZfokC/NDmopoFlcgeInXY49h
X-Gm-Gg: AeBDieuXPTxMs7psaTQPfEn4/l5C39o0JJwuo5KAfgUNW7l37V6OLQOgw66paLl0m7W
	gQbu0wBS8htKEwKMMbz7V5eWO+VsTb0XUNuuXA5shh2uXZRMh+mFsBhlwNQIWtbOH1MfKs33hHJ
	n574URZxeJjooZed3IdukIiV2LQ9DmXkpG7h3XUHK+j8KPWaz0LU0l5TYo8xF6epwFTiRLO3hyx
	cv2F7g845xyYL8eGhxjXvCjj7o8QR9u0174TAYIzEElEi02FzPrRBJPw9NycKUtY6uhRknkmlLs
	XAb9Xg8QWQ==
X-Received: by 2002:a05:7022:517:b0:12b:f899:7178 with SMTP id
 a92af1059eb24-12c34f06a2emr172268c88.7.1775770135878; Thu, 09 Apr 2026
 14:28:55 -0700 (PDT)
MIME-Version: 1.0
From: Gyujeong Jin <wlsrbwjd7232@gmail.com>
Date: Fri, 10 Apr 2026 06:28:43 +0900
X-Gm-Features: AQROBzB07u40_JtQJtBaaMEe18TkugmhZzhmQNiJqWEpx9jZzpL_aZxZ9Cwa980
Message-ID: <CANrF8CHA1XacwRzNcw3zt0goEV-7in_=vtEYhLxSjwaV62jrTw@mail.gmail.com>
Subject: [BUG] Potential double-free in Xen dt-overlay attach/remove error path
To: xen-devel@lists.xenproject.org
Content-Type: multipart/alternative; boundary="00000000000026e311064f0db476"
X-purgate-ID: tlsNG-bad1c0/1775770138-55D57152-76FABAA7/0/0
X-purgate-type: clean
X-purgate-size: 7794

--00000000000026e311064f0db476
Content-Type: text/plain; charset="UTF-8"

Hello Team, I was advised to report this issue in this way because
dt-overlay is currently experimental and not security supported.

I would like to report a potential memory safety issue in Xen related to
the Device Tree overlay handling logic.
------------------------------
Problem Description

A double-free / use-after-free condition may occur in the dt-overlay
handling path when an overlay attachment fails and the same overlay is
later removed.

The issue arises because rangeset objects are freed on the failure path of
handle_attach_overlay_nodes(), but the corresponding pointers are not
cleared. Subsequently, handle_remove_overlay_nodes() may operate on these
stale pointers, leading to a second free.
Affected Component

   - Xen ARM
   - Device Tree overlay subsystem
   - File: xen/common/device-tree/dt-overlay.c

Relevant functions:

   - handle_attach_overlay_nodes()
   - handle_remove_overlay_nodes()

Impact

This issue may lead to:

   - Double-free of rangeset structures
   - Use-after-free when accessing stale pointers
   - Potential hypervisor crash (DoS)
   - Possible memory corruption depending on allocator behavior

Given that this occurs in the hypervisor context, the impact could extend
beyond a simple crash under certain conditions.
Root Cause

The issue originates from inconsistent memory management between the attach
failure path and the remove path.

In handle_attach_overlay_nodes(), the failure path frees rangeset objects:

static long handle_attach_overlay_nodes(...)
{
    ...

    if ( entry )
    {
        rangeset_destroy(entry->irq_ranges);
        rangeset_destroy(entry->iomem_ranges);
    }

    return rc;
}

However, the corresponding pointers (entry->irq_ranges and
entry->iomem_ranges) are not set to NULL afterward, leaving dangling
pointers in the entry structure.

Later, in handle_remove_overlay_nodes(), the same fields are used again:

static long handle_remove_overlay_nodes(const void *overlay_fdt,
                                        uint32_t overlay_fdt_size)
{
    ...

    rc = remove_nodes(entry);

    ...

    rangeset_destroy(entry->irq_ranges);
    rangeset_destroy(entry->iomem_ranges);

    ...
}

static int remove_nodes(const struct overlay_track *tracker)
{
    /* Remove IRQ access. */
    if ( tracker->irq_ranges )
    {
        rc = rangeset_consume_ranges(tracker->irq_ranges, irq_remove_cb, d);
        if ( rc )
            return rc;
    }

   /* Remove mmio access. */
    if ( tracker->iomem_ranges )
    {
        rc = rangeset_consume_ranges(tracker->iomem_ranges, iomem_remove_cb, d);
        if ( rc )
            return rc;
    }

    return rc;
}

Since the pointers were not invalidated after being freed, this leads to:

   - reuse of freed memory in rangeset_consume_ranges()
   - double-free in rangeset_destroy()

This creates a double-free / use-after-free condition.
Environment

   - Xen: 4.22-dev-517-g500ee5fe0f
   - Platform: Linux (WSL2 environment)

Suggested Fix

After calling rangeset_destroy(), the corresponding pointers should be set
to NULL to prevent reuse:

entry->irq_ranges = NULL;
entry->iomem_ranges = NULL;

Alternatively, the remove path should defensively check pointer validity.

Best regards, Gyujeong Jin (Giunash)

--00000000000026e311064f0db476
Content-Type: text/html; charset="UTF-8"
Content-Transfer-Encoding: quoted-printable

<div dir=3D"ltr"><p>Hello Team, I was advised to report this issue in this =
way because dt-overlay is currently experimental and not security supported=
.</p><p>I would like to report a potential memory safety issue in Xen relat=
ed to the Device Tree overlay handling logic.</p><hr><h2>Problem Descriptio=
n</h2><p>A double-free / use-after-free condition may occur in the dt-overl=
ay handling path when an overlay attachment fails and the same overlay is l=
ater removed.</p><p>The issue arises because rangeset objects are freed on =
the failure path of handle_attach_overlay_nodes(), but the corresponding po=
inters are not cleared. Subsequently, handle_remove_overlay_nodes() may ope=
rate on these stale pointers, leading to a second free.</p><h3>Affected Com=
ponent</h3><ul><li style=3D"margin-left:15px">Xen ARM</li><li style=3D"marg=
in-left:15px">Device Tree overlay subsystem</li><li style=3D"margin-left:15=
px">File: xen/common/device-tree/dt-overlay.c</li></ul><p>Relevant function=
s:</p><ul><li style=3D"margin-left:15px">handle_attach_overlay_nodes()</li>=
<li style=3D"margin-left:15px">handle_remove_overlay_nodes()</li></ul><h3>I=
mpact</h3><p>This issue may lead to:</p><ul><li style=3D"margin-left:15px">=
Double-free of rangeset structures</li><li style=3D"margin-left:15px">Use-a=
fter-free when accessing stale pointers</li><li style=3D"margin-left:15px">=
Potential hypervisor crash (DoS)</li><li style=3D"margin-left:15px">Possibl=
e memory corruption depending on allocator behavior</li></ul><p>Given that =
this occurs in the hypervisor context, the impact could extend beyond a sim=
ple crash under certain conditions.</p><h3>Root Cause</h3><p>The issue orig=
inates from inconsistent memory management between the attach failure path =
and the remove path.</p><p>In handle_attach_overlay_nodes(), the failure pa=
th frees rangeset objects:</p><pre style=3D"text-wrap-mode: wrap;"><code>st=
atic long handle_attach_overlay_nodes(...)
{
    ...

    if ( entry )
    {
        rangeset_destroy(entry-&gt;irq_ranges);
        rangeset_destroy(entry-&gt;iomem_ranges);
    }

    return rc;
}
</code></pre><p>However, the corresponding pointers (entry-&gt;irq_ranges a=
nd entry-&gt;iomem_ranges) are not set to NULL afterward, leaving dangling =
pointers in the entry structure.</p><p>Later, in handle_remove_overlay_node=
s(), the same fields are used again:</p><pre style=3D"text-wrap-mode: wrap;=
"><code>static long handle_remove_overlay_nodes(const void *overlay_fdt,
                                        uint32_t overlay_fdt_size)
{
    ...

    rc =3D remove_nodes(entry);

    ...

    rangeset_destroy(entry-&gt;irq_ranges);
    rangeset_destroy(entry-&gt;iomem_ranges);

    ...
}

static int remove_nodes(const struct overlay_track *tracker)
{
    /* Remove IRQ access. */
    if ( tracker-&gt;irq_ranges )
    {
        rc =3D rangeset_consume_ranges(tracker-&gt;irq_ranges, irq_remove_c=
b, d);
        if ( rc )
            return rc;
    }

   /* Remove mmio access. */
    if ( tracker-&gt;iomem_ranges )
    {
        rc =3D rangeset_consume_ranges(tracker-&gt;iomem_ranges, iomem_remo=
ve_cb, d);
        if ( rc )
            return rc;
    }

    return rc;
}
</code></pre><p>Since the pointers were not invalidated after being freed, =
this leads to:</p><ul><li style=3D"margin-left:15px">reuse of freed memory =
in rangeset_consume_ranges()</li><li style=3D"margin-left:15px">double-free=
 in rangeset_destroy()</li></ul><p>This creates a double-free / use-after-f=
ree condition.</p><h3>Environment</h3><ul><li style=3D"margin-left:15px">Xe=
n: 4.22-dev-517-g500ee5fe0f</li><li style=3D"margin-left:15px">Platform: Li=
nux (WSL2 environment)</li></ul><h2>Suggested Fix</h2><p>After calling rang=
eset_destroy(), the corresponding pointers should be set to NULL to prevent=
 reuse:</p><pre style=3D"text-wrap-mode: wrap;"><code>entry-&gt;irq_ranges =
=3D NULL;
entry-&gt;iomem_ranges =3D NULL;
</code></pre><p>Alternatively, the remove path should defensively check poi=
nter validity.</p><p>Best regards, Gyujeong Jin (Giunash)</p></div>

--00000000000026e311064f0db476--


From xen-devel-bounces@lists.xenproject.org Fri Apr 10 00:03:44 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Fri, 10 Apr 2026 00:03:44 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1278203.1563131 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wAzLM-0004rk-Fh; Fri, 10 Apr 2026 00:03:28 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1278203.1563131; Fri, 10 Apr 2026 00:03: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 1wAzLM-0004rd-CE; Fri, 10 Apr 2026 00:03:28 +0000
Received: by outflank-mailman (input) for mailman id 1278203;
 Fri, 10 Apr 2026 00:03:26 +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 1wAzLK-0004rX-BD
 for xen-devel@lists.xenproject.org; Fri, 10 Apr 2026 00:03:26 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wAzLJ-002neG-Iz
 for xen-devel@lists.xenproject.org; Fri, 10 Apr 2026 02:03:25 +0200
Received: from [10.42.69.7] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <stefano.stabellini@amd.com>)
 id 69d83de2-e002-0a2a0a5209dd-0a2a4507d0ba-42
 for <xen-devel@lists.xenproject.org>; Fri, 10 Apr 2026 02:03:25 +0200
Received: from [40.93.196.13]
 (helo=SA9PR02CU001.outbound.protection.outlook.com)
 by tlsNG-ef75cf.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.0)
 (envelope-from <stefano.stabellini@amd.com>)
 id 69d83e4b-ba2d-0a2a45070019-285dc40d6d55-4
 for <xen-devel@lists.xenproject.org>; Fri, 10 Apr 2026 02:03:24 +0200
Received: from PH8PR02CA0038.namprd02.prod.outlook.com (2603:10b6:510:2da::10)
 by LV8PR12MB9417.namprd12.prod.outlook.com (2603:10b6:408:204::18)
 with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9791.33; Fri, 10 Apr
 2026 00:03:14 +0000
Received: from CY4PEPF0000E9D9.namprd05.prod.outlook.com
 (2603:10b6:510:2da:cafe::30) by PH8PR02CA0038.outlook.office365.com
 (2603:10b6:510:2da::10) with Microsoft SMTP Server (version=TLS1_3,
 cipher=TLS_AES_256_GCM_SHA384) id 15.20.9769.41 via Frontend Transport; Fri,
 10 Apr 2026 00:03:10 +0000
Received: from satlexmb07.amd.com (165.204.84.17) by
 CY4PEPF0000E9D9.mail.protection.outlook.com (10.167.241.72) with Microsoft
 SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id
 15.20.9769.17 via Frontend Transport; Fri, 10 Apr 2026 00:03:13 +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.17; Thu, 9 Apr
 2026 19:03:13 -0500
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.17; Thu, 9 Apr
 2026 17:03:13 -0700
Received: from ubuntu-20.04.2-arm64.shared (10.180.168.240) 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.17 via Frontend Transport; Thu, 9 Apr 2026 19:03:12 -0500
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@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=NWEK8+iV5i/Yan2TRwdFe7PDRtU1Q1yfRJEtcK3OM7xoCehFz61QOeiK0PeSFbZ6iM1UrYnrBK903m28CxC3NO5gqo4+uWzZbpJ4XDsg2LzICzRH0hHyw2rQbf02yUy3nq0qlthy8e3wWXJSg/NMhcxZux719HWTlqc5XWdMPPTe9bsPiGs5TeBnU6wE6QQGEOB2J/NvGE1kSRRhX1iRRZS4i7DAQsv+5PQJeeuoFAsntdJrY8fEMLVZ5LDb0WYdcchIpNMl9wBn4SEUcHrcfbpHu2GTT4FizIyP9FI3ag1JpEMlLixMaFQdBfXdhD31a/ZZqDM6qlm8oJL6BRNpHw==
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com;
 s=arcselector10001;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1;
 bh=zgVP21WMuoqGG7UmabFPMkYWI2cIV4Qy5UVoD6ilV7E=;
 b=RAIXB+6Ux0JwK+ZTqv305TJwR92vmSvUSadUB2bDRe2v0xR4YsqPNsE9L519tdkYF/UcBUn14J/M2mxmsONHa5KkK3OpmFRo9U3iSUXg9NCEVEf2E/y1shr7778IH03s0ZMEkIw0JCscL5GDpnXJ9LFV/zAqZZRj89MW9k8jdCcJVEGcXraQPJZ3MGQjIoWiaW0JEYVa3wIF+if+kyhKv0VyRC4bfXQdzOcabHTaf23LOHyJKzvUOWQdezPltWPixJuD/1vUley4n0zxhFn4UaTF0Hp4Po46C9SxrR6/ekyoyu08aZT4zXQKPK3JyKUu3o7jWWqEfWcNMCt+2zJd+Q==
ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass (sender ip is
 165.204.84.17) smtp.rcpttodomain=arm.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=zgVP21WMuoqGG7UmabFPMkYWI2cIV4Qy5UVoD6ilV7E=;
 b=zKPJpZglBg+U/NEXO/vtLtUSDOjH3/BWF6sTEpXlGOJ4Hv1elIEpgYrGcXDQtvhVzZjMqsUGrWk4j38geX2LWLlxhc0VFZ2W4NB83oDkCZotPD+8pgD+EeaDsrLoCrDTEaGlDiSz2/8HRGHRJHuk3YLeLMpqFjJjQDn5GflN3Bc=
X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 165.204.84.17)
 smtp.mailfrom=amd.com; dkim=none (message not signed)
 header.d=none;dmarc=pass action=none header.from=amd.com;
Received-SPF: Pass (protection.outlook.com: domain of amd.com designates
 165.204.84.17 as permitted sender) receiver=protection.outlook.com;
 client-ip=165.204.84.17; helo=satlexmb07.amd.com; pr=C
Date: Thu, 9 Apr 2026 17:03:11 -0700
From: Stefano Stabellini <stefano.stabellini@amd.com>
X-X-Sender: sstabellini@ubuntu-linux-20-04-desktop
To: Luca Fancellu <Luca.Fancellu@arm.com>
CC: Michal Orzel <michal.orzel@amd.com>, "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>, Volodymyr Babchuk <Volodymyr_Babchuk@epam.com>
Subject: Re: [PATCH 1/3] xen/arm: Fix off-by-one in iomem_deny_access()
 calls
In-Reply-To: <1D67F18E-0A2E-4A58-8FD7-FC5FD6BE2C6B@arm.com>
Message-ID: <alpine.DEB.2.22.394.2604091703060.2873990@ubuntu-linux-20-04-desktop>
References: <20260409113934.197619-1-michal.orzel@amd.com> <20260409113934.197619-2-michal.orzel@amd.com> <1D67F18E-0A2E-4A58-8FD7-FC5FD6BE2C6B@arm.com>
User-Agent: Alpine 2.22 (DEB 394 2020-01-19)
MIME-Version: 1.0
Content-Type: text/plain; charset="US-ASCII"
X-EOPAttributedMessage: 0
X-MS-PublicTrafficType: Email
X-MS-TrafficTypeDiagnostic: CY4PEPF0000E9D9:EE_|LV8PR12MB9417:EE_
X-MS-Office365-Filtering-Correlation-Id: 27e2c3a1-95b7-4566-1bdb-08de96948f36
X-MS-Exchange-SenderADCheck: 1
X-MS-Exchange-AntiSpam-Relay: 0
X-Microsoft-Antispam:
	BCL:0;ARA:13230040|1800799024|82310400026|376014|36860700016|18002099003|56012099003|22082099003;
X-Microsoft-Antispam-Message-Info:
	CfRL5t3il86yljT5a4B/cy5WJmV892htj8Pr+sYOBoE5O2c3Of2E/FTPofk1R9MGMBWHhFtyht5xveXBtWvFdouJLPvlWXcBeiPe0gOd3sbflGjPUhNgsV/3+kebK0NCqta2IuIEUBQ6SFlBgs8GfqTwOkKCIP81qtNrmnrWrMIv482JNYQCxiXLJV+VfGMVq3BAYQamyEOkkE/KrOD2IC+JL5JyIBBgjSDEm3n4G1KToaksUkv01y+gEBPXkyg4e25+TCpH6wvRphwBNoEym7rBlA7Ja4+83eRktzUKm+y2HWwRIuBhfdlyRtSy269y35mvc/nZYkB6dZDeI64fLcW7dPu3swCP2O89w8aNKNOnIvRl+70HFTecAwy3EY3QmkhOeAHGLgJM6GPVJiDvKPBWUW3SRcAAKn4ovb+S9bp2SstuTbh/ADz7uy5p4F5zjnZG84pzWtMIjON5LSce/Fpii0YiRiw2eJetb1bNAn0UiuQc8FIKH46rfoy6MbdTVUpu4Aw/mJBj50ujKLBcG9px1QqDxGUpCnnEY+e7L9RaBwlohY0BVxGjF2vEaCDVgUFKOJtz8pJiZnB28SD6gJ5h3+ZEQJIB5xw9gg5mrCe0uGk7mwCsF3GoRbgTHCilnW+6vRZ4irt6xpNFtdU5VaxYyEFQTek0sC5i6gb3y82+XZ9Zl882jVLzXEH+oIlYqNcsGBEQs7mTafEE1tQZHV6e1aAnjq693G/ATpF8VXf2jphxvKcgbzP64U1Ungj/vff9akwfn2Su7WcU7QEJxA==
X-Forefront-Antispam-Report:
	CIP:165.204.84.17;CTRY:US;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:satlexmb07.amd.com;PTR:InfoDomainNonexistent;CAT:NONE;SFS:(13230040)(1800799024)(82310400026)(376014)(36860700016)(18002099003)(56012099003)(22082099003);DIR:OUT;SFP:1101;
X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1
X-MS-Exchange-AntiSpam-MessageData-0:
	rOTEABFCQW0nzeOqlSDR/Y/Y0tsD04FBtfq5lI9a5nc99oJH484mn0Caul063w2VA2Cwk3XgQVa8S8bmEOq1ekGcMVrPbLyv6G3i+OweZ8Qr9/epOR0E34nBvncGN4fMfjsA0r8GU3sVdNn3bdNU76qRfhxi9vv45HsheanstIxM7ZjeG2BdgWWwNcT5p7reimVKbcaY3Va/Y1485EKZHGSVW7DSipUUvx7Fra4UDZozBRdcnv3TFTyim6JAdZFPCQoqdCt61q184dqrKdJGx0DDGJ2qky8JeX9du3JJN6r94VOd81FoXk1J+ngi2VONsBnMILotJRWzt/PJaOvbF9/xbF/vHQp4q0KgJvW1m+D9LoUW+HXdKBYjvJRZE+XEMsXUKbhiQsH6Oj9TmLdIqDRPcP4rs60vpc6pZACKt/I0N2t0BSY/B6z0HX6p+jlY
X-OriginatorOrg: amd.com
X-MS-Exchange-CrossTenant-OriginalArrivalTime: 10 Apr 2026 00:03:13.4326
 (UTC)
X-MS-Exchange-CrossTenant-Network-Message-Id: 27e2c3a1-95b7-4566-1bdb-08de96948f36
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:
	CY4PEPF0000E9D9.namprd05.prod.outlook.com
X-MS-Exchange-CrossTenant-AuthAs: Anonymous
X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem
X-MS-Exchange-Transport-CrossTenantHeadersStamped: LV8PR12MB9417
X-purgate-ID: tlsNG-ef75cf/1775779405-88F5E41E-077C80BF/0/0
X-purgate-type: clean
X-purgate-size: 1113

On Thu, 9 Apr 2026, Luca Fancellu wrote:
> Hi Michal,
> 
> > On 9 Apr 2026, at 12:39, Michal Orzel <michal.orzel@amd.com> wrote:
> > 
> > iomem_deny_access() wraps rangeset_remove_range() which takes inclusive
> > endpoints.  All call sites in the GIC and ACPI code pass 'mfn + nr' (or
> > 'mfn + 1' for single-page regions) as the end parameter, which causes
> > one extra page beyond each region to be denied.
> > 
> > For single-page regions, use 'mfn' as the end (denying exactly one page).
> > For all multi-page regions, use 'mfn + nr - 1'.
> > 
> > This matches the correct pattern used elsewhere, e.g. in device.c.
> > 
> > Fixes: 8300b3377e ("arm/gic: Add a new callback to deny Dom0 access to GIC regions")
> > Fixes: 66158be465 ("ARM: ITS: Deny hardware domain access to ITS")
> > Fixes: 97e9875646 ("arm/acpi: Permit MMIO access of Xen unused devices for Dom0")
> > Signed-off-by: Michal Orzel <michal.orzel@amd.com>
> > ---
> > 
> 
> This looks ok to me.
> 
> Reviewed-by: Luca Fancellu <luca.fancellu@arm.com>

Reviewed-by: Stefano Stabellini <stefano.stabellini@amd.com>


From xen-devel-bounces@lists.xenproject.org Fri Apr 10 00:07:58 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Fri, 10 Apr 2026 00:07:58 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1278216.1563139 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wAzPh-0005WL-06; Fri, 10 Apr 2026 00:07:57 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1278216.1563139; Fri, 10 Apr 2026 00: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 1wAzPg-0005WE-T3; Fri, 10 Apr 2026 00:07:56 +0000
Received: by outflank-mailman (input) for mailman id 1278216;
 Fri, 10 Apr 2026 00:07:56 +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 1wAzPg-0005W8-9R
 for xen-devel@lists.xenproject.org; Fri, 10 Apr 2026 00:07:56 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wAzPe-00AcVV-0K
 for xen-devel@lists.xenproject.org; Fri, 10 Apr 2026 02:07:55 +0200
Received: from [10.42.69.11] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <sstabellini@kernel.org>)
 id 69d83f12-2eae-0a2a0a5409dd-0a2a450be9a6-48
 for <xen-devel@lists.xenproject.org>; Fri, 10 Apr 2026 02:07:55 +0200
Received: from [172.234.252.31] (helo=sea.source.kernel.org)
 by tlsNG-42698a.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.0)
 (envelope-from <sstabellini@kernel.org>)
 id 69d83f59-bca8-0a2a450b0019-aceafc1fdd72-3
 for <xen-devel@lists.xenproject.org>; Fri, 10 Apr 2026 02:07:55 +0200
Received: from smtp.kernel.org (transwarp.subspace.kernel.org [100.75.92.58])
 by sea.source.kernel.org (Postfix) with ESMTP id 337E0438CA;
 Fri, 10 Apr 2026 00:07:53 +0000 (UTC)
Received: by smtp.kernel.org (Postfix) with ESMTPSA id 2885DC4CEF7;
 Fri, 10 Apr 2026 00: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=k20201202 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/simple; d=kernel.org;
	s=k20201202; t=1775779673;
	bh=J9eE0IfMExM5GO3+0tjrn1qX87H+H2jmgNPBdEUsm3E=;
	h=Date:From:To:cc:Subject:In-Reply-To:References:From;
	b=o9GZDfCdgI9++ImF51a1TRXVTXeEHqwYQrqFAO+QospzWEq1KhcIvx6nR1uIXFOeb
	 1JVVikRcDMqSQfgGAgMxHLhzo8CJ+UuB8rcuNB3+d8PTsLnT4kRhtcF8uVk/j26jIT
	 r2G5NLJvstF34bgpfHsEJ3ttfGYFqKiNb6wcayR+NsJB7T8R54gQe6KwCEBa/KFQPi
	 zEfvtIG1ZO3iGZcdDnEg2Ru0SzBD6qKfuepzf7AbBD5+1LR4jMuX5GoCuBuYRtrELy
	 gTMA+7xYaimRzOqNKx3bDEF4atLBv+Lv9hJ3Gz1FTa5btywGrwfdSN5uKIibPQ04xU
	 7ntUkPpdsMpAQ==
Date: Thu, 9 Apr 2026 17:07:50 -0700 (PDT)
From: Stefano Stabellini <sstabellini@kernel.org>
X-X-Sender: sstabellini@ubuntu-linux-20-04-desktop
To: Luca Fancellu <Luca.Fancellu@arm.com>
cc: Michal Orzel <michal.orzel@amd.com>, 
    "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>, 
    Volodymyr Babchuk <Volodymyr_Babchuk@epam.com>
Subject: Re: [PATCH 3/3] xen/arm: gic-v3: Use vsize instead of csize for
 virtual CPU interface
In-Reply-To: <995B8A68-0DE0-4FE8-AC80-21E5DE498170@arm.com>
Message-ID: <alpine.DEB.2.22.394.2604091707430.2873990@ubuntu-linux-20-04-desktop>
References: <20260409113934.197619-1-michal.orzel@amd.com> <20260409113934.197619-4-michal.orzel@amd.com> <995B8A68-0DE0-4FE8-AC80-21E5DE498170@arm.com>
User-Agent: Alpine 2.22 (DEB 394 2020-01-19)
MIME-Version: 1.0
Content-Type: text/plain; charset=US-ASCII
X-purgate-ID: tlsNG-42698a/1775779675-175432A1-30903594/0/0
X-purgate-type: clean
X-purgate-size: 652

On Thu, 9 Apr 2026, Luca Fancellu wrote:
> Hi Michal,
> 
> > On 9 Apr 2026, at 12:39, Michal Orzel <michal.orzel@amd.com> wrote:
> > 
> > gicv3_iomem_deny_access() incorrectly uses csize (physical CPU
> > interface size) instead of vsize (virtual CPU interface size) when
> > calculating the number of pages to deny for the virtual CPU interface
> > region at vbase.
> > 
> > Fixes: 8300b3377e ("arm/gic: Add a new callback to deny Dom0 access to GIC regions")
> > Signed-off-by: Michal Orzel <michal.orzel@amd.com>
> > ---
> 
> Reviewed-by: Luca Fancellu <luca.fancellu@arm.com>

Acked-by: Stefano Stabellini <sstabellini@kernel.org>


From xen-devel-bounces@lists.xenproject.org Fri Apr 10 00:16:36 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Fri, 10 Apr 2026 00:16:36 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1278226.1563150 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wAzXx-00077d-Pq; Fri, 10 Apr 2026 00:16:29 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1278226.1563150; Fri, 10 Apr 2026 00:16: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 1wAzXx-00077W-Lp; Fri, 10 Apr 2026 00:16:29 +0000
Received: by outflank-mailman (input) for mailman id 1278226;
 Fri, 10 Apr 2026 00:16:28 +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 1wAzXw-00077P-S4
 for xen-devel@lists.xenproject.org; Fri, 10 Apr 2026 00:16:28 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wAzXv-00Dlnx-LB
 for xen-devel@lists.xenproject.org; Fri, 10 Apr 2026 02:16:27 +0200
Received: from [10.42.69.7] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <sstabellini@kernel.org>)
 id 69d84132-bab6-0a2a0a5309dd-0a2a4507b538-20
 for <xen-devel@lists.xenproject.org>; Fri, 10 Apr 2026 02:16:27 +0200
Received: from [172.234.252.31] (helo=sea.source.kernel.org)
 by tlsNG-ef75cf.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.0)
 (envelope-from <sstabellini@kernel.org>)
 id 69d8415a-ba2d-0a2a45070019-aceafc1fcafa-3
 for <xen-devel@lists.xenproject.org>; Fri, 10 Apr 2026 02:16:27 +0200
Received: from smtp.kernel.org (transwarp.subspace.kernel.org [100.75.92.58])
 by sea.source.kernel.org (Postfix) with ESMTP id 8055C40664;
 Fri, 10 Apr 2026 00:16:25 +0000 (UTC)
Received: by smtp.kernel.org (Postfix) with ESMTPSA id 48A75C4CEF7;
 Fri, 10 Apr 2026 00:16: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=k20201202 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/simple; d=kernel.org;
	s=k20201202; t=1775780185;
	bh=xAa9ho/qWsXTFCn6t/AyO2PTk8zzuFfmA8Xen8QhGmE=;
	h=Date:From:To:cc:Subject:In-Reply-To:References:From;
	b=McVjr3ZoS28UCtmU7k5Tdgb3gMIt3vJ6kHao/YS66EqzBpA3AYP1wW0EVkMuNB+0G
	 sL77Uu8Pjynejxk7RKAnkRjvqPsv5hQV5SQFRFIc0fh6oxcymzq+ze7sbJRPgE8ujd
	 qQf6tpqd4DMvHwptoY3+sEKouBwnLQUgtrzsUmJu/n+pN0e6b9WPTKTt82NXRX62s0
	 /QAzbLYedrwzMPGHO01kAxBXWwEH1O4Spb+Xqf63Y3xOBrxx8kVg9mHYTz9jNZFotb
	 +i3jEesda/ZWtF+457xcsOEPiM5DVIekF0GQCVFX1+Q8iDNt86oMAFiSyX69K/8JyH
	 VbWKoImRwAuMA==
Date: Thu, 9 Apr 2026 17:16:22 -0700 (PDT)
From: Stefano Stabellini <sstabellini@kernel.org>
X-X-Sender: sstabellini@ubuntu-linux-20-04-desktop
To: Dmytro Prokopchuk1 <dmytro_prokopchuk1@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?Q?Roger_Pau_Monn=C3=A9?= <roger.pau@citrix.com>, 
    Stefano Stabellini <sstabellini@kernel.org>
Subject: Re: [PATCH] generic/altp2m: address violations of MISRA C Rule 2.1
In-Reply-To: <8b5ca213a097f7b221b06b6173e4621563779a73.1775752149.git.dmytro_prokopchuk1@epam.com>
Message-ID: <alpine.DEB.2.22.394.2604091713230.2873990@ubuntu-linux-20-04-desktop>
References: <8b5ca213a097f7b221b06b6173e4621563779a73.1775752149.git.dmytro_prokopchuk1@epam.com>
User-Agent: Alpine 2.22 (DEB 394 2020-01-19)
MIME-Version: 1.0
Content-Type: text/plain; charset=US-ASCII
X-purgate-ID: tlsNG-ef75cf/1775780187-13D4741E-E2C98BC8/0/0
X-purgate-type: clean
X-purgate-size: 1814

On Thu, 9 Apr 2026, Dmytro Prokopchuk1 wrote:
> MISRA C Rule 2.1 states: "A project shall not contain unreachable code".
> 
> In certain build configurations, the function 'altp2m_vcpu_idx()' is defined
> as an inline function that contains the 'BUG()' macro. This resulted in a
> violation because the 'BUG()' macro makes the function non-returning.
> 
> To ensure compliance with MISRA C Rule 2.1, this patch removes the inline
> function implementation and its BUG()-based unreachable code. It is replaced
> with an unconditional function declaration for 'altp2m_vcpu_idx()'. It relies
> on the compiler's Dead Code Elimination (DCE) to remove the unused function
> in builds where it is not needed.
> 
> Signed-off-by: Dmytro Prokopchuk <dmytro_prokopchuk1@epam.com>
> ---
> Test CI pipeline:
> https://gitlab.com/xen-project/people/dimaprkp4k/xen/-/pipelines/2441424553
> ---
>  xen/include/asm-generic/altp2m.h | 7 +------
>  1 file changed, 1 insertion(+), 6 deletions(-)
> 
> diff --git a/xen/include/asm-generic/altp2m.h b/xen/include/asm-generic/altp2m.h
> index 39865a842a..df6b9a9c01 100644
> --- a/xen/include/asm-generic/altp2m.h
> +++ b/xen/include/asm-generic/altp2m.h
> @@ -15,12 +15,7 @@ static inline bool altp2m_active(const struct domain *d)
>  }
>  
>  /* Alternate p2m VCPU */
> -static inline unsigned int altp2m_vcpu_idx(const struct vcpu *v)
> -{
> -    /* Not implemented on GENERIC, should not be reached. */
> -    BUG();
> -    return 0;
> -}
> +uint16_t altp2m_vcpu_idx(const struct vcpu *v);

The return type being changed to uint16_t is also a fix. It should be
mentioned in the commit message. Aside from that:

Reviewed-by: Stefano Stabellini <sstabellini@kernel.org>


>  #endif /* __ASM_GENERIC_ALTP2M_H */
>  
> -- 
> 2.43.0
> 


From xen-devel-bounces@lists.xenproject.org Fri Apr 10 00:56:04 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Fri, 10 Apr 2026 00:56:04 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1278241.1563158 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wB0A9-000408-Hs; Fri, 10 Apr 2026 00:55:57 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1278241.1563158; Fri, 10 Apr 2026 00:55: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 1wB0A9-000401-Eq; Fri, 10 Apr 2026 00:55:57 +0000
Received: by outflank-mailman (input) for mailman id 1278241;
 Fri, 10 Apr 2026 00:55:55 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <marmarek@invisiblethingslab.com>) id 1wB0A7-0003zv-D3
 for xen-devel@lists.xenproject.org; Fri, 10 Apr 2026 00:55:55 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wB0A5-0072Z5-Vu
 for xen-devel@lists.xenproject.org; Fri, 10 Apr 2026 02:55:54 +0200
Received: from [10.42.69.11] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <marmarek@invisiblethingslab.com>)
 id 69d84a94-bab6-0a2a0a5309dd-0a2a450bd66c-2
 for <xen-devel@lists.xenproject.org>; Fri, 10 Apr 2026 02:55:53 +0200
Received: from [103.168.172.148] (helo=fout-a5-smtp.messagingengine.com)
 by tlsNG-42698a.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.0)
 (envelope-from <marmarek@invisiblethingslab.com>)
 id 69d84a98-bca8-0a2a450b0019-67a8ac9483c1-3
 for <xen-devel@lists.xenproject.org>; Fri, 10 Apr 2026 02:55:53 +0200
Received: from phl-compute-05.internal (phl-compute-05.internal [10.202.2.45])
 by mailfout.phl.internal (Postfix) with ESMTP id D4F12EC010A;
 Thu,  9 Apr 2026 20:55:51 -0400 (EDT)
Received: from phl-frontend-04 ([10.202.2.163])
 by phl-compute-05.internal (MEProxy); Thu, 09 Apr 2026 20:55:51 -0400
Received: by mail.messagingengine.com (Postfix) with ESMTPA; Thu,
 9 Apr 2026 20:55:50 -0400 (EDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@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=1775782551;
	 x=1775868951; bh=b87heE5fmUBkJe8ZsnevojmlzceS4TdE1O/6Hxi/swI=; b=
	FyO+kM1Pxg511InjiwLSQi/yX9ezzs6xNeA70udBExbB90am/jWd8r6CI0eFxnzF
	bPsrGpTZN76/weNHpIBmdb+4fSoZxpqkE83TkahOpGWbK/U2lLyL81D5Vq0YqVy0
	l9gVbcFAQqY0ehGs62NnBmdVMz+ujhBwsqBNmUsAjJZ1W4CgWxWYoQQItTuDv4K1
	qja3xmDG8PNxq+bmZPdyRYksrPE03mGweK0EdAa4Stvo3dhspIVwdVGTP8+eKZZj
	68LeVD725W2qZc0EvLMUN5I2zb0qM8Hw7+JnALjNoeaQL22rxXOD1o+6zdhH4qvJ
	K3ec35R9IPyLZ2oUaEr4rw==
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=
	1775782551; x=1775868951; bh=b87heE5fmUBkJe8ZsnevojmlzceS4TdE1O/
	6Hxi/swI=; b=ro+5f0veQnIGOfHaAhkvetqn2l5TfGo0GePutMmJ0RVFe5zvRf7
	Ghf/v1zm5t/W7KGYfjjGH+jZRYwgAZ5kL9hPacMsxGUZFI/yQsZKKqr6Y7jZT6y9
	1JMMjiVXDU0bdaGy/MYqjbqnVjiZ0rcW6YeBt319dAFd1FMbchUb1iHLV/IcG4eI
	YqmBVm+N4Gw/MfWlSYgOpqa37XA7stZ4k4dbnSFatR4hDlan5+r2GHsqz+LgnbON
	EAhfKoDb6E1Tqf0pi69QMef2AFjqJK3DNFj26/svFC0C3CRViSU4EyT/DINboLxP
	MNFrlyiYlWbvWhYOLI/0U0nXBwpjN6ltpCw==
X-ME-Sender: <xms:l0rYaffAoELOq7t2sIIms9mHC-qlYQwSU3XMyCfx9bxMlXXxY3rOiA>
    <xme:l0rYacH5sPyGLSfmS7Ngz3TO2o-73ROB2eYey5J3vDdBuRNNNAsKelaUHiGsjVdFe
    y_wJJcTa137IILSwimCALe76gQW0PTByhQS0aGJR63VuJ9QmQ>
X-ME-Received: <xmr:l0rYaQ1QvNbRvwZ_jPCEFP3DpsnRhp2leav3dICTD97sgMCkxulfCYuHhSndg-NPXGwqVPxGdCy6Qo1TgM3SKykk_8xg9lggKPg>
X-ME-Proxy-Cause: gggruggvucftvghtrhhoucdtuddrgeefhedrtddtgddvkedttdcutefuodetggdotefrod
    ftvfcurfhrohhfihhlvgemucfhrghsthforghilhdpuffrtefokffrpgfnqfghnecuuegr
    ihhlohhuthemuceftddtnecusecvtfgvtghiphhivghnthhsucdlqddutddtmdenucfjug
    hrpeffhffvvefukfhfgggtuggjsehgtderredttdejnecuhfhrohhmpeforghrvghkucfo
    rghrtgiihihkohifshhkihdqifpkrhgvtghkihcuoehmrghrmhgrrhgvkhesihhnvhhish
    hisghlvghthhhinhhgshhlrggsrdgtohhmqeenucggtffrrghtthgvrhhnpeelhfefudel
    jeelgefhieeuudeiffehvdeuudfgfffhueekudeihfetvedvudehueenucffohhmrghinh
    epkhgvrhhnvghlrdhorhhgpdhgihhtlhgrsgdrtghomhenucevlhhushhtvghrufhiiigv
    pedtnecurfgrrhgrmhepmhgrihhlfhhrohhmpehmrghrmhgrrhgvkhesihhnvhhishhisg
    hlvghthhhinhhgshhlrggsrdgtohhmpdhnsggprhgtphhtthhopeehpdhmohguvgepshhm
    thhpohhuthdprhgtphhtthhopehthhhivghrrhihrdgvshgtrghnuggvsehvrghtvghsrd
    htvggthhdprhgtphhtthhopeigvghnqdguvghvvghlsehlihhsthhsrdigvghnphhrohhj
    vggtthdrohhrghdprhgtphhtthhopegrnhhthhhonhihrdhpvghrrghrugesvhgrthgvsh
    drthgvtghhpdhrtghpthhtohepjhhgrhhoshhssehsuhhsvgdrtghomhdprhgtphhtthho
    pegsvghrrhgrnhhgvgesrhgvughhrghtrdgtohhm
X-ME-Proxy: <xmx:l0rYacnttjWs_rcHvMOTR7OxT3sVqksAf4lxJqnMwZpIEcyMib87AQ>
    <xmx:l0rYaY-R5_B4lwNfkGPDpZIuRrKn45Beu6Q7_HSVSjmGHjVV4qyCWw>
    <xmx:l0rYaZrNL9XXtlKXCjk0NvWP3iaJNGUmAJogjO3b3BE2FM685q3MEQ>
    <xmx:l0rYaZkuRCSmgUM2Phm5PSUNLBLCM-h8bEyZFNeR-5KlAf59kLYmNA>
    <xmx:l0rYaYIbwiEggfomRHbA4y6xbM07-G8N1j8z8QnUSMs1swnCrRDIulwg>
Feedback-ID: i1568416f:Fastmail
Date: Fri, 10 Apr 2026 02:55:46 +0200
From: Marek =?utf-8?Q?Marczykowski-G=C3=B3recki?= <marmarek@invisiblethingslab.com>
To: Thierry Escande <thierry.escande@vates.tech>
Cc: xen-devel@lists.xenproject.org,
	Anthony PERARD <anthony.perard@vates.tech>,
	Juergen Gross <jgross@suse.com>,
	Daniel P =?utf-8?B?LiBCZXJyYW5nw6k=?= <berrange@redhat.com>
Subject: Re: [RFC PATCH v2 0/3] xl: Allow PCI devices to be passthrough'd via
 Qemu command line
Message-ID: <adhKlLvMB6PCRhwQ@mail-itl>
References: <20260409162000.1102680-1-thierry.escande@vates.tech>
MIME-Version: 1.0
Content-Type: multipart/signed; micalg=pgp-sha256;
	protocol="application/pgp-signature"; boundary="s166KNew1RMNit10"
Content-Disposition: inline
In-Reply-To: <20260409162000.1102680-1-thierry.escande@vates.tech>
X-purgate-ID: tlsNG-42698a/1775782553-EE9492A1-F40B480D/0/0
X-purgate-type: clean
X-purgate-size: 3228


--s166KNew1RMNit10
Content-Type: text/plain; protected-headers=v1; charset=utf-8
Content-Disposition: inline
Content-Transfer-Encoding: quoted-printable
Date: Fri, 10 Apr 2026 02:55:46 +0200
From: Marek =?utf-8?Q?Marczykowski-G=C3=B3recki?= <marmarek@invisiblethingslab.com>
To: Thierry Escande <thierry.escande@vates.tech>
Cc: xen-devel@lists.xenproject.org,
	Anthony PERARD <anthony.perard@vates.tech>,
	Juergen Gross <jgross@suse.com>,
	Daniel P =?utf-8?B?LiBCZXJyYW5nw6k=?= <berrange@redhat.com>
Subject: Re: [RFC PATCH v2 0/3] xl: Allow PCI devices to be passthrough'd via
 Qemu command line

On Thu, Apr 09, 2026 at 04:20:57PM +0000, Thierry Escande wrote:
> This series adds support for a new 'hotplug' option for PCI devices to be
> passthrough'd to guests.
>=20
> The current mechanism for device passthrough uses QMP device_add command
> to hot-plug PCI devices to the guest Qemu instance. This is an issue for
> guests running on Q35 chipset (preliminary support posted at [1]) since t=
he
> Q35 PCI root bus does not support hotplug. Devices could be hotplugged to
> a secondary PCI bus but Xen only support 1 PCI bus for now.
>=20
> The 'hotplug' option allows to control how devices are attached to the
> guest, either by using the legacy QMP mechanism (this is the default) or =
by
> passing it directly to the Qemu command line using xen-pci-passthrough
> device.
>=20
> Example usage in cfg file:
>  pci =3D [ "00:03.0,seize=3D1,hotplug=3D0" ]
>=20
> Since Qemu -device option accepts parameters in json format, this
> patchset adds a new internal function libxl__device_pci_get_qmp_json() th=
at
> generates the device json object used for both QMP hotplug and command li=
ne
> passing.
> Also, the function libxl_pci_assignable() is made available from libxl.h
> for access in libxl_dm.c. I don't know if it's ok to make it public or if
> it should stay private. Maybe it should be renamed as
> libxl_device_pci_assignable() to match the other PCI device APIs.
>=20
> This has been successfully tested on Xen 4.22-dev and Qemu 10.0 running
> Debian VMs in both Bios and UEFI mode with a passthrough'd nvme disk.
> Disabling the hotplug mechanism might be made mandatory for Q35 machines
> later, once Q35 support is merged upstream.
>=20
> [1] https://lore.kernel.org/xen-devel/20260313163455.790692-1-thierry.esc=
ande@vates.tech/

I don't see relevant device option added to the QEMU cmdline:
https://gitlab.com/xen-project/people/marmarek/xen/-/jobs/13860278916

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

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

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

iQEzBAEBCAAdFiEEhrpukzGPukRmQqkK24/THMrX1ywFAmnYSpQACgkQ24/THMrX
1ywp+QgAlIu4U3xOIqcswI+Xglm1Big6NccmeqdmX5sknwC6JK5AGVuMWieGBhOb
F+QW+jBngPMi8adN3+wHcxUsha4hm5xV8ji9WtioMe4HuMa9erDQ9Sm6vdTUH1lD
SQBx6IN0mmFk7/sArRWaFfRlhdGmNp6MadA6pzNMsX6v2ZFK9Lc6tm4m/KyKlqcl
vVNS+9fn6B0Fj4aH3RGv+arpOX3dOI5xW1J7tT1HUoG2hFAcye2QxhGDXlLBzcWe
BcnRzktEaItarlKxleiohgACVC/NN3q9boiq0LsWvmb0IaviZfrumQ8WzOVqH2hK
JYhanOTSAD+RooNtVOsekmRKhnRSlQ==
=02cg
-----END PGP SIGNATURE-----

--s166KNew1RMNit10--


From xen-devel-bounces@lists.xenproject.org Fri Apr 10 01:29:36 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Fri, 10 Apr 2026 01:29:36 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1278256.1563167 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wB0gU-0007Xy-17; Fri, 10 Apr 2026 01:29:22 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1278256.1563167; Fri, 10 Apr 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 1wB0gT-0007Xr-Sw; Fri, 10 Apr 2026 01:29:21 +0000
Received: by outflank-mailman (input) for mailman id 1278256;
 Fri, 10 Apr 2026 01:29:20 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <Stewart.Hildebrand@amd.com>) id 1wB0gS-0007XS-F0
 for xen-devel@lists.xenproject.org; Fri, 10 Apr 2026 01:29:20 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wB0gR-0075l4-6B
 for xen-devel@lists.xenproject.org; Fri, 10 Apr 2026 03:29:19 +0200
Received: from [10.42.69.6] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <Stewart.Hildebrand@amd.com>)
 id 69d851fc-5cb7-0a2a0a5109dd-0a2a450692dc-28
 for <xen-devel@lists.xenproject.org>; Fri, 10 Apr 2026 03:29:18 +0200
Received: from [52.101.62.56]
 (helo=DM5PR21CU001.outbound.protection.outlook.com)
 by tlsNG-16d1c6.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.0)
 (envelope-from <Stewart.Hildebrand@amd.com>)
 id 69d8526d-0df0-0a2a45060019-34653e3876c8-3
 for <xen-devel@lists.xenproject.org>; Fri, 10 Apr 2026 03:29:18 +0200
Received: from SA0PR11CA0046.namprd11.prod.outlook.com (2603:10b6:806:d0::21)
 by PH7PR12MB6587.namprd12.prod.outlook.com (2603:10b6:510:211::17)
 with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9769.18; Fri, 10 Apr
 2026 01:29:13 +0000
Received: from SA2PEPF0000150A.namprd04.prod.outlook.com
 (2603:10b6:806:d0:cafe::79) by SA0PR11CA0046.outlook.office365.com
 (2603:10b6:806:d0::21) with Microsoft SMTP Server (version=TLS1_3,
 cipher=TLS_AES_256_GCM_SHA384) id 15.20.9769.41 via Frontend Transport; Fri,
 10 Apr 2026 01:29:13 +0000
Received: from satlexmb07.amd.com (165.204.84.17) by
 SA2PEPF0000150A.mail.protection.outlook.com (10.167.242.42) with Microsoft
 SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id
 15.20.9769.17 via Frontend Transport; Fri, 10 Apr 2026 01:29:12 +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.17; Thu, 9 Apr
 2026 20:29:12 -0500
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.17; Thu, 9 Apr
 2026 20:29:12 -0500
Received: from [172.18.74.250] (10.180.168.240) by satlexmb07.amd.com
 (10.181.42.216) with Microsoft SMTP Server id 15.2.2562.17 via Frontend
 Transport; Thu, 9 Apr 2026 20:29:11 -0500
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@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=kNdilBASwPDpbrJ3VCwijnbakOUkwxM0DfSgwIr+lLDbyFaZ2uwNGzn20O8u5Qc7YQR1WcWuLvUg9OiNcAhBhRiJiSW0pxGMw/WddfEZQUx8m4nNj+H6NyVHSAaqbqbydven9oaG8pK5SMKqtWxVrb/iMDKXKbfJkbMJtYsmz5bI+VtbTsuTUrNQxYKOJRUSDzcQ7RdmiR2oByZahbHTEvwABMnUwKWFiOnCt/TJ7BzE+ttZu5JfilA2thdEVQazUfJvARWGkjT55C5+EBvPonAFL4ZKC1vqbl0P+gfOfmmEUOGb2atEuRGjy44gBxjrW2T7XoelJLqWPCHBrH+bSQ==
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com;
 s=arcselector10001;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1;
 bh=O0bsIzui3PGykH5KUbAbBQrHCdLJrm/BZtqbBEc7Y18=;
 b=bROVlgGwh2XqbYHivaHVyuNU6WMmKmQaEvX31EhB9XZOr2+K/B73y77llm1XqOtI9dTBu+UviyBRtQ+kJYhDrVVUY0YDzqXSukmx0iUtlYVjKaFxXLSW56b1QPbxZjqMht9kKx9Ff4LgmMxa4fCiVqALO9TAinj1BqWzx+ZNCTh2+yGcZndPhEeYLS016le3Q9d/1kxCFxIfhl6YMrgF6KTUQA0OsUs8KC6RG1TVuHyyYLGzCVqkiJMefUuUCSRminogzmYhNKnS7Nv5gE2cdj79zH3zl43YCJaZxG/aoa8/OID/w0/BuygynVfHyxkyCPVtidpd7lt+H+M9OzTA7g==
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=O0bsIzui3PGykH5KUbAbBQrHCdLJrm/BZtqbBEc7Y18=;
 b=kN3BL5nksMlTXmHuoO759eFLuBYyWMqZMf8+tV7q5MKQwZFUG1P1PXS/UER9OBLHdD/NpeLW+VHRsYiCIX7ikdiqxHEdvM90/m0G+OUu+LEUlEbaojSkpp5IHrBIOjB9PJPXnfL8OS/0Z6BEiKPjjyl4K5vbtaSyXtlv20x8q0A=
X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 165.204.84.17)
 smtp.mailfrom=amd.com; dkim=none (message not signed)
 header.d=none;dmarc=pass action=none header.from=amd.com;
Received-SPF: Pass (protection.outlook.com: domain of amd.com designates
 165.204.84.17 as permitted sender) receiver=protection.outlook.com;
 client-ip=165.204.84.17; helo=satlexmb07.amd.com; pr=C
Message-ID: <5f543029-64bc-42af-8fce-31d911800c67@amd.com>
Date: Thu, 9 Apr 2026 21:29:10 -0400
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH] x86/APIC: handle overflow in TMICT calculation
To: Jan Beulich <jbeulich@suse.com>, "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.pau@citrix.com>, Teddy Astie
	<teddy.astie@vates.tech>
References: <2fa2fb41-cb62-4a1b-84cf-822b2f97bc2b@suse.com>
Content-Language: en-US
From: Stewart Hildebrand <stewart.hildebrand@amd.com>
In-Reply-To: <2fa2fb41-cb62-4a1b-84cf-822b2f97bc2b@suse.com>
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: 7bit
X-EOPAttributedMessage: 0
X-MS-PublicTrafficType: Email
X-MS-TrafficTypeDiagnostic: SA2PEPF0000150A:EE_|PH7PR12MB6587:EE_
X-MS-Office365-Filtering-Correlation-Id: aca8fb2e-46fb-40ae-4776-08de96a0926f
X-MS-Exchange-SenderADCheck: 1
X-MS-Exchange-AntiSpam-Relay: 0
X-Microsoft-Antispam:
	BCL:0;ARA:13230040|82310400026|1800799024|36860700016|376014|22082099003|18002099003|56012099003;
X-Microsoft-Antispam-Message-Info:
	xXCET1mCsdlOgF9Yka1B/FuAQKqhtvbaVqM3cE2fX/jb1DCeGsb0Twyen0X6+hGDV/3+vni3o5tGUL0hHHnBa4Z9yWRlh73yt4qde3LjRtJkRexO/x3ejKB0ZQSIAa72SZENhQ+9i6B8nORfkyrA59R0pYbPoma9NmKtahh5s//lLW9DhwlYCulPfTunLSUNmwZM2ZrCUkszBEyHGTZHpSdHW2tj2CFEJ6T/DzgVh/Mt0r/PMC1ESnN6boMb/P7G2OkP6gPLF+P7CUrCETrTGPHbYRbFZe6xVErBHbXzmcU1u39PYD+c3QE+TMmLzqpQLRC6qB8fMBdHsAYosfyxKEJLCWzV4aTzuJWlyYXSPPNdnDvsJDvj1u5xMV7IaaGMBkRI1p2s23EeLSyfB+56ey9kpiEXMrmkGKZJOoboEapKE6CmlalRH/kl63IHdpOH0Yt0KTrz1mEqwluJPyJSToihSXvRUdC54OpYqd7s+g++FpjIKYb4xLMLGmgW1+FFU+KgXrPsKutEg/Kf7+ISwUz6B4TZpWZFhX8NXPY5YmOTDUTdOXrMrR5DtNrA5+7GuU8+9FCAtZxmg7OhlbuU0eU05Dn3y7rg7k4jIUoDGCd+MeGqxV87eMA5Pjy45ULyE6Wui+JVR/GQUt4WmiFGWUfSM9C1M1WL9vMIbItlP+yxHVhZjKuAOWjektd3mnHj+vBJYJF5VE0psrsnnnvjWEp+LWYKdfMzgKYXSVigpGMK7FiguINfFcTSYPx7EL1I4Z0FOhG40YnSIRThdU2isw==
X-Forefront-Antispam-Report:
	CIP:165.204.84.17;CTRY:US;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:satlexmb07.amd.com;PTR:InfoDomainNonexistent;CAT:NONE;SFS:(13230040)(82310400026)(1800799024)(36860700016)(376014)(22082099003)(18002099003)(56012099003);DIR:OUT;SFP:1101;
X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1
X-MS-Exchange-AntiSpam-MessageData-0:
	b8oZYnfzHGnomhZ0mmgS407KCXgpP+cmayM8tJUcGXUiDJ0uCBldda0JSO56Tty15TEMtXa0t1/jfSYPY8snpmlRYSfUkNW58oxUD6TdA9hbWrt9HjF6zWsVEF9V6QUc0a2Vqh4upgkg7aiDYturzd3mT4atEnGyNwXgfIBeSoqPJqwucrR8ahU98Uc86u0halFqpBPH8+LSk55diYGVtGhAIXtw/SSvF79W5MlulBsij9nQpUo/IU2fNJyH+nRI3epwntAZdlS9R5oXyHr3roo+BK7M3jPQRGj1QeVTMmFGXJ2TeL00yxP6EMVNMLqMgIPcXxu/CN/LT859wm+mHgMqb8qK6XJQ5Q+GqPHsdKfXUjRnea5UHjUaXO7u5oC7AuKGL/fkohufjCeDJ2SXkql6UAZlAMSgg6eCmu1pfk1h80HD881jZV2d5jXXQV2g
X-OriginatorOrg: amd.com
X-MS-Exchange-CrossTenant-OriginalArrivalTime: 10 Apr 2026 01:29:12.8258
 (UTC)
X-MS-Exchange-CrossTenant-Network-Message-Id: aca8fb2e-46fb-40ae-4776-08de96a0926f
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:
	SA2PEPF0000150A.namprd04.prod.outlook.com
X-MS-Exchange-CrossTenant-AuthAs: Anonymous
X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem
X-MS-Exchange-Transport-CrossTenantHeadersStamped: PH7PR12MB6587
X-purgate-ID: tlsNG-16d1c6/1775784558-5C7213D8-3B2AF377/0/0
X-purgate-type: clean
X-purgate-size: 981

On 4/9/26 05:21, Jan Beulich wrote:
> With an expiry value on the order of 20 hours, and with a bus scale value

If I did my math correctly, I believe 10 hours is sufficient to trigger signed
multiplication overflow. 20 hours would result in unsigned multiplication
overflow.

> of 256k (as supplied by qemu), the (signed) multiplication will be UB. As
> we've checked that the value is positive, we mean unsigned multiplication
> anyway. Yet let's play safe against even larger expiry and bus scale
> values, leveraging the compiler builtin that there is for this purpose.
> 
> While there also drop the stray cast from the actual TMICT write.
> 
> Fixes: 9062553a0dc1 ("added time and accurate timer support")
> Fixes: b95beb185810 ("x86: Clean up APIC local timer handling")
> Reported-by: Stewart Hildebrand <stewart.hildebrand@amd.com>
> Signed-off-by: Jan Beulich <jbeulich@suse.com>

Tested-by: Stewart Hildebrand <stewart.hildebrand@amd.com>

Thanks!


From xen-devel-bounces@lists.xenproject.org Fri Apr 10 05:52:07 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Fri, 10 Apr 2026 05:52:07 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1278306.1563176 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wB4mW-00059L-0v; Fri, 10 Apr 2026 05:51:52 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1278306.1563176; Fri, 10 Apr 2026 05:51: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 1wB4mV-00059E-UE; Fri, 10 Apr 2026 05:51:51 +0000
Received: by outflank-mailman (input) for mailman id 1278306;
 Fri, 10 Apr 2026 05:51:50 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <jbeulich@suse.com>) id 1wB4mU-000598-JZ
 for xen-devel@lists.xenproject.org; Fri, 10 Apr 2026 05:51:50 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wB4mT-007Y9P-49
 for xen-devel@lists.xenproject.org; Fri, 10 Apr 2026 07:51:49 +0200
Received: from [10.42.69.6] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <jbeulich@suse.com>)
 id 69d88fed-5cb7-0a2a0a5109dd-0a2a45069dbc-16
 for <xen-devel@lists.xenproject.org>; Fri, 10 Apr 2026 07:51:48 +0200
Received: from [209.85.128.42] (helo=mail-wm1-f42.google.com)
 by tlsNG-16d1c6.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.0)
 (envelope-from <jbeulich@suse.com>)
 id 69d88ff4-0df0-0a2a45060019-d155802aa918-3
 for <xen-devel@lists.xenproject.org>; Fri, 10 Apr 2026 07:51:48 +0200
Received: by mail-wm1-f42.google.com with SMTP id
 5b1f17b1804b1-488b3f8fa2bso20463235e9.1
 for <xen-devel@lists.xenproject.org>; Thu, 09 Apr 2026 22:51:48 -0700 (PDT)
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-488d684b55fsm11900845e9.26.2026.04.09.22.51.47
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Thu, 09 Apr 2026 22:51:47 -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=google header.d=suse.com header.i="@suse.com" header.h="Content-Transfer-Encoding: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=1775800308; x=1776405108; darn=lists.xenproject.org;
        h=content-transfer-encoding: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;
        bh=GCIIrjnoXTvZ/VJuU4w52WE3aRotI4x3NT2zZg8+K/o=;
        b=ed9vHD1tT8KEfBgZxevviMef1pqGSJQ0xolbXuqZoLsbTmmPwtp1U9FJXHrQONQbgS
         ykKJCKexq2hYkLBlx8UMmqJjSUg4R9FTX1VJxPIoQmw5O33WOXVcu+9dRHsj26x/pqXO
         XuGSLrjqkp534zVuq22+ocvhRZWhv5osQX9MWc1qBuUlIrFywlbocMjBXgV5Hz18f3aQ
         VpmSwZtQACusuqrlzcCkKydJDx6Y/ytgUz5KlcmEtm5OUd+ag1ffy0+jcyf9V7/qGRM4
         7jbxeTdbKL0NhsLyPg/SE/SwT1bpqEk6vbElQkxEBIG80VOon4JrcdlM6uJ6B5v24ske
         JUQw==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20251104; t=1775800308; x=1776405108;
        h=content-transfer-encoding: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;
        bh=GCIIrjnoXTvZ/VJuU4w52WE3aRotI4x3NT2zZg8+K/o=;
        b=Vh+Qb+FO7dm6Jr06CcLCRxK75bxR6n9bZlzOd/1X4JhtylkN8URmZZGCAKG9u0w6L2
         87w27tr8JSj6x+g8/ttNcnuh0wJh4Bftj5oEYJxeuYtyuNDnuCkJstdmH1jb5Sckyxvj
         EjPNXMWpJIjhHlFZ/CmUHRGQFAnLvr6zsDXxTr36d9+ZuQ72jh3FYFEyA5D86E3nkGlh
         uZHBeVcK4Ool9NKB5s3v66xYcdeq9wBp2MlO9esWLZaIuqrvBrBy+KIMgJm9ceFE7A2+
         UD/MMz457fCxvn/52US3ArKrRpsilbeojPN52l2+hPWJN65YjP4fh/YnSDxfGkzl137E
         9zBQ==
X-Gm-Message-State: AOJu0Yyq3mGVV53NFMIZkp8hSvwiBk1dHJbYhwxJ+RYdqjQJTxSnsaWn
	A18NraKtunhanRzMb/uGzNcP5+BkQFeyzonefI7gT29PIss3wNg/TGj53Pfdnk7GSA==
X-Gm-Gg: AeBDietwOTPo/MGfc6VcOoHmTt+JomIRb9Haqr93vFv4W62domQEushSgvkPFIupS5v
	xiBcCUbSP0Tpmp3veUcLn2ZE+kgY9QvdPWhgfLtKratiWf0PE9s/MdOCON53esjxzGSIxwLutIJ
	palsUihO3wznlMpOqBLfdQ4LhOMM2vkhZ8Uz3CIGfn+wU+jhtlnbVqi1qdkYuxfgFIS91eRA02l
	vM2icWYjQPXqN34H4ZPG3+FmhOhPvlttcc0i3aGnaow1KTdKH7jnpHFbCI6rLcuCfUcscLdkcvL
	8Qbbx5UTN7zEEgaL2nLUL26OepAh8YOviEp3NqBsAyU22SQdoP1+OV4z/UskGj2kJIHIBfkgLS+
	FWa7mt9gQkG6KAMzQMhKkkKIWbA27U54NcQ9YNp6npFLHQzKu+C8e+ALEe32TdFok/YXKSEP3zc
	ciplxCKJVmYRvJ0jETttMRbYLAmxn0xtYdhLUvjgzYoSrH9+X4WGSXk7qg1KMa3/TA55vwvNYE5
	S2n8xfqbDj8oIJ0ZD804HswZg==
X-Received: by 2002:a05:600c:609a:b0:485:3e00:944a with SMTP id 5b1f17b1804b1-488d68ae78amr17176725e9.9.1775800308272;
        Thu, 09 Apr 2026 22:51:48 -0700 (PDT)
Message-ID: <c1b2ab3c-7d4e-4f1d-b830-dbf1c933178e@suse.com>
Date: Fri, 10 Apr 2026 07:51:45 +0200
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH] VT-d: avoid multi-message-MSI check for HPET
To: =?UTF-8?Q?Roger_Pau_Monn=C3=A9?= <roger.pau@citrix.com>
Cc: "xen-devel@lists.xenproject.org" <xen-devel@lists.xenproject.org>,
 Andrew Cooper <andrew.cooper3@citrix.com>
References: <1903a57a-524e-4e6d-bd47-a87fadda4aa0@suse.com>
 <adfjn296dde_RQYE@macbook.local>
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: <adfjn296dde_RQYE@macbook.local>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
X-purgate-ID: tlsNG-16d1c6/1775800308-5FD3C3D8-20A2CC2D/0/0
X-purgate-type: clean
X-purgate-size: 1160

On 09.04.2026 19:36, Roger Pau Monné wrote:
> On Wed, Apr 01, 2026 at 02:47:48PM +0200, Jan Beulich wrote:
>> Having this immediately below a PCI-dev vs HPET conditional is (mildly)
>> confusing. Move that if() into the body of the earlier one.
>>
>> Signed-off-by: Jan Beulich <jbeulich@suse.com>
>>
>> --- a/xen/drivers/passthrough/vtd/intremap.c
>> +++ b/xen/drivers/passthrough/vtd/intremap.c
>> @@ -513,13 +513,13 @@ static int msi_msg_to_remap_entry(
>>  
>>          if ( rc )
>>              return rc;
>> +
>> +        if ( msi_desc->msi_attrib.type == PCI_CAP_ID_MSI )
>> +            nr = msi_desc->msi.nvec;
>>      }
>>      else
>>          set_hpet_source_id(msi_desc->hpet_id, &new_ire);
>>  
>> -    if ( msi_desc->msi_attrib.type == PCI_CAP_ID_MSI )
>> -        nr = msi_desc->msi.nvec;
>> -
> 
> I'm not fully opposed to this, but maybe it would be good to add a
> small comment to note that HPET never use multi-vector MSI?

That aspect doesn't change - HPET code simply doesn't (and never should)
set .type to PCI_CAP_ID_MSI. That field should reflect reality (and HPET,
iirc, simply leaves it at 0).

Jan


From xen-devel-bounces@lists.xenproject.org Fri Apr 10 06:04:13 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Fri, 10 Apr 2026 06:04:13 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1278318.1563184 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wB4yP-0006tE-1r; Fri, 10 Apr 2026 06:04:09 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1278318.1563184; Fri, 10 Apr 2026 06:04: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 1wB4yO-0006t7-VR; Fri, 10 Apr 2026 06:04:08 +0000
Received: by outflank-mailman (input) for mailman id 1278318;
 Fri, 10 Apr 2026 06:04:08 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <jbeulich@suse.com>) id 1wB4yO-0006t1-Bd
 for xen-devel@lists.xenproject.org; Fri, 10 Apr 2026 06:04:08 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wB4yN-003jtH-5U
 for xen-devel@lists.xenproject.org; Fri, 10 Apr 2026 08:04:07 +0200
Received: from [10.42.69.10] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <jbeulich@suse.com>)
 id 69d892c4-bab6-0a2a0a5309dd-0a2a450ad46a-26
 for <xen-devel@lists.xenproject.org>; Fri, 10 Apr 2026 08:04:06 +0200
Received: from [209.85.128.50] (helo=mail-wm1-f50.google.com)
 by tlsNG-4011c0.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.0)
 (envelope-from <jbeulich@suse.com>)
 id 69d892d6-ee98-0a2a450a0019-d1558032b8df-3
 for <xen-devel@lists.xenproject.org>; Fri, 10 Apr 2026 08:04:06 +0200
Received: by mail-wm1-f50.google.com with SMTP id
 5b1f17b1804b1-488a88aeec9so20913465e9.2
 for <xen-devel@lists.xenproject.org>; Thu, 09 Apr 2026 23:04:06 -0700 (PDT)
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-43d63e50289sm4899182f8f.28.2026.04.09.23.04.05
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Thu, 09 Apr 2026 23:04:05 -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=google header.d=suse.com header.i="@suse.com" header.h="Content-Transfer-Encoding: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=1775801046; x=1776405846; darn=lists.xenproject.org;
        h=content-transfer-encoding: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;
        bh=gf0Tpy8Ukpd5M0cyLBBCqNp5SUe9H+I4XWYBw2bV+bU=;
        b=blDSwK1QceV/p7VmzRl/agh7aUvhIg0iwhsguScU5ikRL7XIK6rZdiAEp5c1JjOZ9Q
         iRyldd+b12syyio9pus2KYmG37m4Fs/oFPxYWCp/ccneedmJg31NC+KoJ1ctPNzC5rNg
         gK5jI2NHheZxCPaomnr3tvqQDWZBGm53IWgsbEINb3jouK6WZyTgfLlKVmMSPyzp+pFW
         y4HwJRGxoUm/qqR6t6kF98DNY8IvKequsIygFLc/cIKXlqGlCYqw1hYC61Naa38YhCgV
         HDml91NvADQFrOdeFR4RhtXRYpmEKrlGC4mChsBZP5SatrLWfWpDh7pRuWVreSrhyJ7c
         LXKg==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20251104; t=1775801046; x=1776405846;
        h=content-transfer-encoding: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;
        bh=gf0Tpy8Ukpd5M0cyLBBCqNp5SUe9H+I4XWYBw2bV+bU=;
        b=XM3tnoSfIiAlpKHEEet8xfqIpZSYgasB5Icpsc8x/vL6a04BqHNiPLAX2QkTQTQHv3
         nP5oDmYuUqlnawc1mmbORdpn2Z9oQ1e/6Bc8hKoi3WcReLKyMvbpD5kZxYA1DSrpXRhH
         vvg+OrnMnf9plKkS8UQmCOKo1yAI4FwPrwvbS0elNrT4iV8nylnGNSRj3r232fOsoyQ/
         JmUBjmVo9szuM5zPPKhNANBV54WKiXdYYXMWx0hDwfsHcuLomlRPOoT9cAjiHYXeXRGc
         sUxXAYy8gJEdM+ur7iGkD7mQW+ZzXpIDftDr4E8UKbMKs0iplbqtmGD/cl65Kij4JNXi
         nauw==
X-Forwarded-Encrypted: i=1; AJvYcCWUonuIsqxQZd/p9NDp4bTO+m0476UPMCi3fSHZQg2f0kAUxzW2JXMYEacy2p4yy11JRMT5zTIRzIk=@lists.xenproject.org
X-Gm-Message-State: AOJu0YzXeWYSCtB2Yl1w+rrlzWtiyqgb9BEbAZs7eQkt4pyBcTVhWUGN
	huDl6wn9W2bMzqZpvB9bivF7wA8BugXGwVuHDBMCP2sEbsdtfzw8a3Sv+xg43Ytdqw==
X-Gm-Gg: AeBDievPj97OAaRaNylKJ9z4kC1yDxICZ6QB3Tx5xw/DFQ5geisGsbwEcPzWORbqCZC
	2UdT0y3NEq65Z7h1WKcA4T8O7Ix6HkVxswTfbIbRww6oU+yQJSpr5A9i9MV5q2l4WMc5DrenkAf
	9rS39nSuoSgqcekYvb6Kvc70zwj1IM7s3wAuuQt/N3P6saYBvRTFy690WGDVejBGkR+mnuXBjDD
	8l2lHqwvM9a2Vh14cQR/mjtIDQ/terI4QzFcSnHmU0lNV8vyBM4M22Kkvz7q7teUZgytodKjqaY
	/D4KLXSXr3HJX9TQzg0/hcesQTi4lQVSE2NbiMk36xrwWlNsXIVO4vKxGdztB24Q+ZOiBrMQrcK
	8eHZiDAJMSPtfhNtt7h1Slrtyg6i8yyKq4+w6+ffMifPsNDNZl9L+NWmMMSuoltr8Ne1GlCbFcY
	QPaNW6ZApA8IJcZs3th0rX+lVzNDHya9megX43VRP46Wgxm37w6CiRl1YG9wMztvO41kQjZSGlP
	mqqfaH1+82ntgk=
X-Received: by 2002:a05:600c:a30d:b0:488:c2aa:6a39 with SMTP id 5b1f17b1804b1-488d6889a78mr12896065e9.24.1775801046392;
        Thu, 09 Apr 2026 23:04:06 -0700 (PDT)
Message-ID: <3b2daddd-9afc-4c75-92c0-f7c6ace3f735@suse.com>
Date: Fri, 10 Apr 2026 08:04:03 +0200
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH] generic/altp2m: address violations of MISRA C Rule 2.1
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.pau@citrix.com>,
 Stefano Stabellini <sstabellini@kernel.org>,
 "xen-devel@lists.xenproject.org" <xen-devel@lists.xenproject.org>
References: <8b5ca213a097f7b221b06b6173e4621563779a73.1775752149.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: <8b5ca213a097f7b221b06b6173e4621563779a73.1775752149.git.dmytro_prokopchuk1@epam.com>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 7bit
X-purgate-ID: tlsNG-4011c0/1775801046-0FD420B1-A499A03F/0/0
X-purgate-type: clean
X-purgate-size: 1071

On 09.04.2026 19:37, Dmytro Prokopchuk1 wrote:
> MISRA C Rule 2.1 states: "A project shall not contain unreachable code".
> 
> In certain build configurations,

Can you give an example where ...

> the function 'altp2m_vcpu_idx()' is defined
> as an inline function that contains the 'BUG()' macro. This resulted in a
> violation because the 'BUG()' macro makes the function non-returning.
> 
> To ensure compliance with MISRA C Rule 2.1, this patch removes the inline
> function implementation and its BUG()-based unreachable code. It is replaced
> with an unconditional function declaration for 'altp2m_vcpu_idx()'.

... a declaration is needed? The sole non-x86 reference I see is from
common/monitor.c, and the sole relevant Kconfig option I can spot is
VM_EVENT. When that's off, the file won't be built at all.

Further, BUG() and a few more constructs have a dedicated deviation
already in place. I don't mind a useless function to be shrunk (or, as
per above, perhaps even dropped), but the justification then needs to
be different.

Jan


From xen-devel-bounces@lists.xenproject.org Fri Apr 10 06:11:20 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Fri, 10 Apr 2026 06:11:20 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1278327.1563193 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wB55G-00006n-OP; Fri, 10 Apr 2026 06:11:14 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1278327.1563193; Fri, 10 Apr 2026 06:11: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 1wB55G-00006g-Lb; Fri, 10 Apr 2026 06:11:14 +0000
Received: by outflank-mailman (input) for mailman id 1278327;
 Fri, 10 Apr 2026 06:11:13 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <xakep.amatop@gmail.com>) id 1wB55F-00006a-AR
 for xen-devel@lists.xenproject.org; Fri, 10 Apr 2026 06:11:13 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wB55E-00Bh0V-GS
 for xen-devel@lists.xenproject.org; Fri, 10 Apr 2026 08:11:12 +0200
Received: from [10.42.69.1] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <xakep.amatop@gmail.com>)
 id 69d89479-2eae-0a2a0a5409dd-0a2a450196f2-12
 for <xen-devel@lists.xenproject.org>; Fri, 10 Apr 2026 08:11:12 +0200
Received: from [209.85.218.46] (helo=mail-ej1-f46.google.com)
 by tlsNG-d62444.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.0)
 (envelope-from <xakep.amatop@gmail.com>)
 id 69d8947f-6fc9-0a2a45010019-d155da2ec4e8-3
 for <xen-devel@lists.xenproject.org>; Fri, 10 Apr 2026 08:11:11 +0200
Received: by mail-ej1-f46.google.com with SMTP id
 a640c23a62f3a-b8f9568e074so294463966b.0
 for <xen-devel@lists.xenproject.org>; Thu, 09 Apr 2026 23:11:11 -0700 (PDT)
Received: from EPUAKYIW02F7.. ([45.12.25.238])
 by smtp.gmail.com with ESMTPSA id
 a640c23a62f3a-b9d6e7f188fsm52032866b.59.2026.04.09.23.11.09
 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
 Thu, 09 Apr 2026 23:11:10 -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=20251104 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=20251104; t=1775801471; x=1776406271; 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;
        bh=XCtlxjlSuMwXsDsVN4yMlT8R3p+rWiyVWAPY7xiKyxQ=;
        b=HVr6NVeEWsc0BBGRXYsFf3aqNFOj8A36gPEO/gTqz1tBnuwOEsmg3Yx7HQJsvDMqAw
         gT9K5jJ4/WM1LxOs3sgQSaBlIHW3VGpjQ8W5u7+vm2HadnafrwQgelbD6qJOIE4q7JsT
         rkPHFdzhmI/14tIWekHL66kc6wt81qa/5NiLAEL0sFfVcZZzT3sI9dSaLHm4dTXV5hrC
         m81pDsH4UD+D019JjS6dS5wLVS7dtjFo1SSfrrlVDatPklzI5mKFzAkK2NMJaCsFgmEx
         jao8UmLSgansdQWYEE9+GLo3XAU3DyfVy2w147H+SCuztRzf/P61slWUQa1UnWlyHvuw
         B8fA==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20251104; t=1775801471; x=1776406271;
        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;
        bh=XCtlxjlSuMwXsDsVN4yMlT8R3p+rWiyVWAPY7xiKyxQ=;
        b=mrmHrw2PGyglamIDS3/qO4dkDmG06UOhuDlPeG4e2pFtvP+gaw8PZFQcnEjAa6HmIL
         YhUGCmYoU2pa1ErBkC4m1lwAIz6/mJmmPo2MgtucL5ls4IuL5/NUK+j+qT/BuDYQdyQn
         u3DbXL3lzsBgFTu344BEN2/4ujuFuRAoF07Vsz/Fnv1WaNZ9D/F5FArGNs2tI5zUWW7H
         We2NrnzgcKxgKTFwbgs0n4OrmdOhuHK9ygom1Ev53y1yGFSqzERGq8/IcaL3on2fMiVe
         M3oAydKiS1G0hAAT1N+D/khmBWDZv/VRxKpWVvLszIUUAjYxY+l9oVxuV3OO9j5MV11f
         3kaQ==
X-Gm-Message-State: AOJu0YzkNcPFGKU/hR40WZRlrcnc+1al2LE+hGi9rXr0lBt8UmllvX7r
	ejwyE60oPMWVSVLBhtnjUbUmQ5yiJnUIM81ZE4uLKRH7pa3OHcGV2QFO+V47xQbV
X-Gm-Gg: AeBDiesFviOOT1Ipn6HG5qDYANLaC7nSLWTPGi8r+lq8kG3KQanbWZO1NWg74EjQoRg
	vaMlMTqnOxBBNXVizRnbTHlP9aAlJWFzdx+qIA1yBjDZ0dC7apYyov9iDG6pmwy5n08nJd/QVAT
	nBEMO0wVmtAXYdpGdpem9J/SMFkrd8+f3J8Qfu47QfUr+A8CkznCKGDwIA1+uElWY42nmYOEcw2
	I0ryUyvGdpiNilPUWtmNADvzmABORAhdTgAhEMah+L0i9OwrThvBksYIJGj2bpFJAHJT1dgfuA6
	bsqS3Z8v8ZA0d9PyrO8W+ERJNlK4gPlwMOqBXlDJ3fXlDxRzLm9q5At4cuuwKPpApJWp9DuPKEV
	EHkkLyYAXCo1msLw5/M7pvwT4xkPtJbX+Qptw0rXPcqZp9GchOXcGHMxLC6bUW3OruDuRrQAOxE
	tJJt52oPlDxtJXFOG5s8mdUx6zx94=
X-Received: by 2002:a17:907:980b:b0:b98:d58:f75e with SMTP id a640c23a62f3a-b9d7243623cmr114048266b.2.1775801470858;
        Thu, 09 Apr 2026 23:11:10 -0700 (PDT)
From: Mykola Kvach <xakep.amatop@gmail.com>
To: xen-devel@lists.xenproject.org
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>,
	Mykyta Poturai <mykyta_poturai@epam.com>
Subject: [PATCH] arm/its: Decode BASER cacheability field before comparing
Date: Fri, 10 Apr 2026 09:09:03 +0300
Message-ID: <dba15db692025c75f8bd3a2c5dab2654eaa4e896.1775801199.git.mykola_kvach@epam.com>
X-Mailer: git-send-email 2.43.0
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit
X-purgate-ID: tlsNG-d62444/1775801471-B7CFA185-74CD3192/0/0
X-purgate-type: clean
X-purgate-size: 1256

From: Mykola Kvach <mykola_kvach@epam.com>

GITS_BASER_INNER_CACHEABILITY_MASK is a shifted mask. Comparing the
masked but unshifted value against GIC_BASER_CACHE_nC, which is an
unshifted value, leads to incorrect detection of non-cacheable
table mappings.

Shift the masked value to properly detect if the BASER backing memory
requires flushing.

Fixes: 05238012b86 ("ARM: GICv3 ITS: allocate device and collection table")
Signed-off-by: Mykyta Poturai <mykyta_poturai@epam.com>
Signed-off-by: Mykola Kvach <mykola_kvach@epam.com>
---
 xen/arch/arm/gic-v3-its.c | 3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)

diff --git a/xen/arch/arm/gic-v3-its.c b/xen/arch/arm/gic-v3-its.c
index 9ba068c46f..6a46bcc8af 100644
--- a/xen/arch/arm/gic-v3-its.c
+++ b/xen/arch/arm/gic-v3-its.c
@@ -496,7 +496,8 @@ retry:
         }
         attr = regc & BASER_ATTR_MASK;
     }
-    if ( (regc & GITS_BASER_INNER_CACHEABILITY_MASK) <= GIC_BASER_CACHE_nC )
+    if ( ((regc & GITS_BASER_INNER_CACHEABILITY_MASK) >>
+          GITS_BASER_INNER_CACHEABILITY_SHIFT) <= GIC_BASER_CACHE_nC )
         clean_and_invalidate_dcache_va_range(buffer, table_size);
 
     /* If the host accepted our page size, we are done. */
-- 
2.43.0



From xen-devel-bounces@lists.xenproject.org Fri Apr 10 06:26:56 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Fri, 10 Apr 2026 06:26:56 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1278339.1563202 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wB5KJ-0001ud-Vn; Fri, 10 Apr 2026 06:26:47 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1278339.1563202; Fri, 10 Apr 2026 06: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 1wB5KJ-0001uW-TE; Fri, 10 Apr 2026 06:26:47 +0000
Received: by outflank-mailman (input) for mailman id 1278339;
 Fri, 10 Apr 2026 06:26:46 +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 1wB5KI-0001uQ-3M
 for xen-devel@lists.xenproject.org; Fri, 10 Apr 2026 06:26:46 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wB5KH-007dXg-FO
 for xen-devel@lists.xenproject.org; Fri, 10 Apr 2026 08:26:45 +0200
Received: from [10.42.69.4] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <Michal.Orzel@amd.com>)
 id 69d8980f-2eae-0a2a0a5409dd-0a2a4504d182-28
 for <xen-devel@lists.xenproject.org>; Fri, 10 Apr 2026 08:26:45 +0200
Received: from [52.101.62.26]
 (helo=DM5PR21CU001.outbound.protection.outlook.com)
 by tlsNG-ebf023.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.0)
 (envelope-from <Michal.Orzel@amd.com>)
 id 69d89823-bb33-0a2a45040019-34653e1a53e1-3
 for <xen-devel@lists.xenproject.org>; Fri, 10 Apr 2026 08:26:44 +0200
Received: from MN0PR03CA0011.namprd03.prod.outlook.com (2603:10b6:208:52f::13)
 by CH1PPF8423FDA82.namprd12.prod.outlook.com
 (2603:10b6:61f:fc00::617) with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9791.32; Fri, 10 Apr
 2026 06:26:35 +0000
Received: from BL6PEPF0001AB58.namprd02.prod.outlook.com
 (2603:10b6:208:52f:cafe::9e) by MN0PR03CA0011.outlook.office365.com
 (2603:10b6:208:52f::13) with Microsoft SMTP Server (version=TLS1_3,
 cipher=TLS_AES_256_GCM_SHA384) id 15.20.9769.42 via Frontend Transport; Fri,
 10 Apr 2026 06:26:35 +0000
Received: from satlexmb07.amd.com (165.204.84.17) by
 BL6PEPF0001AB58.mail.protection.outlook.com (10.167.241.10) with Microsoft
 SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id
 15.20.9769.17 via Frontend Transport; Fri, 10 Apr 2026 06:26:35 +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.17; Fri, 10 Apr
 2026 01:26:35 -0500
Received: from [10.252.147.171] (10.180.168.240) by satlexmb07.amd.com
 (10.181.42.216) with Microsoft SMTP Server id 15.2.2562.17 via Frontend
 Transport; Fri, 10 Apr 2026 01:26:33 -0500
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@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=JMzuPl8/BMbwwcPERX2C9gDETdgS1DcCqMBAdZEhs82Ktl2RLHHpEhjKAQoi65TiYVedXoAl8/eqi0BQShb6UhGxqkVvgpgylN+Ap+HOZpCEfsdJ6phBbznbBwY6unmKHxk8GRpcKkH2QT5R1fwIfW3HeNg1NzjxEAIJqyvvAhy5xMay81rmXJQcUi221NOeAjZ6Y4LmvXKbZZ8r9yeOiLmbc04tnQx+SrzPheVPFHDNAqwi0JtSdaWAraLwp6lX1R9wAiFavYgGtJyc85lDz6TUZ77333AXBqJ5Z0sHA0TJGZiJMbxP4jo+i4Xq5H9/HCQogL+hChCg73eUjGaOFg==
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com;
 s=arcselector10001;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1;
 bh=YfOmYGha/Ue2m5vrnZa2Nu+QmhZgfzGz0efzYiWJaGU=;
 b=EkDtN+d5KXorG2gWWBCjtKSlKaZdkAIdHBbagzJYWWjUR9fVqdm4TAhiuaHn72LzJSvP9wprvk55Z0rtNWpNcm2/cFA3K+9YETLZedlpmSE68cSnomMB6lppwvSVKANcoL8gRFLEiIJUXV73ZuO54bESZ6Q//GZTgsqhUx2Isi5nlOPkZcTahAV1pd+BjdZ7naHWES3fD7izdYDEJEDZtdh2QUdvhA5BsV1jLj05kawfpMbhJBeNz9UFtuJwxZlN2Aj7z8hzE7rDl+k8d1WZlxyM3+yQ2pq/UmwTs0S0QfWrZV0l2O7PYXSV6Sb7a3VLvS1IgDeoh0Txhnq2oBIDxQ==
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=YfOmYGha/Ue2m5vrnZa2Nu+QmhZgfzGz0efzYiWJaGU=;
 b=vJFAiLuHYSVKttnBTEuV+8vxNG4QtvPkFGMa0VP6slX5sg7lkpI1A5fP+4N0dhBG6vVDMTAtMHtfP9ZHYLZxJPmMaeTwoqLVZse2MzoCipPMwlN3vvFNLI3/hG6xwKw2fR0spQL1VkG1/FRwhYPGvf48YoSnvbt45GWrBUWQoyE=
X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 165.204.84.17)
 smtp.mailfrom=amd.com; dkim=none (message not signed)
 header.d=none;dmarc=pass action=none header.from=amd.com;
Received-SPF: Pass (protection.outlook.com: domain of amd.com designates
 165.204.84.17 as permitted sender) receiver=protection.outlook.com;
 client-ip=165.204.84.17; helo=satlexmb07.amd.com; pr=C
Message-ID: <fe59c3a4-e518-4d63-8905-ab2ee04b0c97@amd.com>
Date: Fri, 10 Apr 2026 08:26:33 +0200
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH 1/3] xen/arm: Fix off-by-one in iomem_deny_access() calls
To: "Halder, Ayan Kumar" <ayankuma@amd.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>
References: <20260409113934.197619-1-michal.orzel@amd.com>
 <20260409113934.197619-2-michal.orzel@amd.com>
 <a63da4a7-9e0a-494f-a29d-72192e3a8e55@amd.com>
From: "Orzel, Michal" <michal.orzel@amd.com>
Content-Language: en-US
In-Reply-To: <a63da4a7-9e0a-494f-a29d-72192e3a8e55@amd.com>
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: 7bit
X-EOPAttributedMessage: 0
X-MS-PublicTrafficType: Email
X-MS-TrafficTypeDiagnostic: BL6PEPF0001AB58:EE_|CH1PPF8423FDA82:EE_
X-MS-Office365-Filtering-Correlation-Id: 378c02db-793d-4ebc-bb5c-08de96ca1d72
X-MS-Exchange-SenderADCheck: 1
X-MS-Exchange-AntiSpam-Relay: 0
X-Microsoft-Antispam:
	BCL:0;ARA:13230040|36860700016|82310400026|376014|1800799024|56012099003|18002099003|22082099003;
X-Microsoft-Antispam-Message-Info:
	9RBVnWID82aaeECeMQUUSNG16A1RJGSPNNU2Y2W9YS2aJm+xg1/cBHzjl4hP9ZM8abLFzU+cscygqdNShZSBHNY70JrqIu+nGmb+ge1OMfSpK1Gz/GEHHtxLTq5aWdf1GYZFpc0PREP9ieo7HalNK5I12J/8pN7TEeAfHsT4XZl7ZKjlGRKy364L6tdyubqXuuNMJbcCouFn9XJnvK3OplTFYJBBIajr97DjTqHIFVcqMgI0yTMgoMyoOtRpcE00J1Lv5SXDgTZD8YGwVRfGsfYxt2y/VlKqlzJBjTN1rS9efuvwlt8Xq1JSZ8WER5TXUBklJMykQemkOyhnucZjC8ZBXzZCD5pau2Y0tDBLMCTsfwTcsy3Pw4SA6CFDmk/dxo6OXZzTVFcqr+K9shrBTWw/foiepdooBFSZ7ge6n6LCJwxlnCZEeod4Kexu5jfX9mjbR2nZk6N13z1y6On8Q3SZzhIMJAydk3yE96tq/wEwMP+akews/CG5N3muOppnn8Dlr076yk3XH0AgVC82IGgFKsCeFAlyOxcnNXtQ3B+Y+ptDWqwq8RfaKjw7Jp39wkkrDWn18cJhkH70mtCVCx3kLnW4RwiHmY5ZMIwfuJR920wAdD7kFVBzfuXsk/U181br/u3AVTeiKiVS3Ho4LvqM7gE0Q/LEoko2HbXZU9lxO05VcQUtKM7zTf1cumVw8JdZnNwH3S14q+cHvDHMIIzky0f7O3YXU7hcSsBgoNwA9d2HDwxh+hxX3CG5aJ/MK1EI+NH0+GRkarR6hIm8Kw==
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)(1800799024)(56012099003)(18002099003)(22082099003);DIR:OUT;SFP:1101;
X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1
X-MS-Exchange-AntiSpam-MessageData-0:
	fTd3Ab5xTCOYzNFPoXDvAiDwviSTVDeM9nh54w4op08vw9LnmYJiGhgFI5WXxo4jQvuzRyAiTu1SY8lLrh4OYrnbOIvlTcX+JtZI96kvz7gtEznjK0eyChpGBtcciawclzrp6Zq+3yXIrg/IoIsdgLvhG3nn6Mj835CGL+PMwpugyrDvCm50A+ZYP9ZzvB5geXXa3MHPlGAdGXLxHyeZf5j7+ebaAq4FNrW1KApQL/QWT4UmMAZaw3OeEzzz5kD303AAQ19kGP0y9+3Sl4yQqffRu4lxnjV9afVmiWwS99SIN9uPH5YSjx8+FbSR7nLy+ocTqNRZ4Vr7buy3MrDzFZ2pTGF74Gxmk+qFT6l3sWhtokLo+ceDZsNsHzaDYsEz+1WaKvTGZ60Z4vsoaP/evxuYludCygOdnVTtyOkFz9gOU/4oXnBBemf0PaQ8DVQN
X-OriginatorOrg: amd.com
X-MS-Exchange-CrossTenant-OriginalArrivalTime: 10 Apr 2026 06:26:35.4370
 (UTC)
X-MS-Exchange-CrossTenant-Network-Message-Id: 378c02db-793d-4ebc-bb5c-08de96ca1d72
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:
	BL6PEPF0001AB58.namprd02.prod.outlook.com
X-MS-Exchange-CrossTenant-AuthAs: Anonymous
X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem
X-MS-Exchange-Transport-CrossTenantHeadersStamped: CH1PPF8423FDA82
X-purgate-ID: tlsNG-ebf023/1775802404-B192151B-7B259140/0/0
X-purgate-type: clean
X-purgate-size: 1579



On 09/04/2026 13:49, Halder, Ayan Kumar wrote:
> Hi Michal,
> 
> Apologies if my review is weird, I have been looking into too much of 
> safety stuff.
Yes, I know :)

> 
> On 09/04/2026 12:39, Michal Orzel wrote:
>> iomem_deny_access() wraps rangeset_remove_range() which takes inclusive
>> endpoints.  All call sites in the GIC and ACPI code pass 'mfn + nr' (or
>> 'mfn + 1' for single-page regions) as the end parameter, which causes
>> one extra page beyond each region to be denied.
>>
>> For single-page regions, use 'mfn' as the end (denying exactly one page).
>> For all multi-page regions, use 'mfn + nr - 1'.
> 
> Just reading this and the change below, it seems that the issue was 
> caught while doing some boundary value analysis. In this specific case, 
> it seems the boundary values were set incorrectly.
> 
> Can you explain a bit more (the boundary/edge cases) in the commit 
> message and give some reference to test (can be even a different repo or 
> something) on how you caught this and verified it to be correct ?
> 
> We can keep this test somewhere (and tag it to the commit) even if such 
> tests does not make sense to be upstreamed.
As much as it looks like an issue found during BVA, the truth is I found it by
accident when debugging some issue where rangesets were involved. As always,
whenever I see a function with parameters {start, end}, I need to dive deeper to
verify whether end is inclusive or not. I also check the call-sites to validate
my observations and that's how I found these bugs.

~Michal



From xen-devel-bounces@lists.xenproject.org Fri Apr 10 06:31:30 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Fri, 10 Apr 2026 06:31:30 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1278354.1563211 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wB5Or-0003VQ-I1; Fri, 10 Apr 2026 06:31:29 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1278354.1563211; Fri, 10 Apr 2026 06:31: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 1wB5Or-0003VJ-F4; Fri, 10 Apr 2026 06:31:29 +0000
Received: by outflank-mailman (input) for mailman id 1278354;
 Fri, 10 Apr 2026 06:31:27 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <jbeulich@suse.com>) id 1wB5Op-0003VC-QR
 for xen-devel@lists.xenproject.org; Fri, 10 Apr 2026 06:31:27 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wB5Op-00FvLG-6E
 for xen-devel@lists.xenproject.org; Fri, 10 Apr 2026 08:31:27 +0200
Received: from [10.42.69.5] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <jbeulich@suse.com>)
 id 69d89934-e002-0a2a0a5209dd-0a2a4505966a-34
 for <xen-devel@lists.xenproject.org>; Fri, 10 Apr 2026 08:31:27 +0200
Received: from [209.85.221.54] (helo=mail-wr1-f54.google.com)
 by tlsNG-c201ff.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.0)
 (envelope-from <jbeulich@suse.com>)
 id 69d8993e-3760-0a2a45050019-d155dd36a55e-3
 for <xen-devel@lists.xenproject.org>; Fri, 10 Apr 2026 08:31:26 +0200
Received: by mail-wr1-f54.google.com with SMTP id
 ffacd0b85a97d-43cf5fbacc9so758244f8f.1
 for <xen-devel@lists.xenproject.org>; Thu, 09 Apr 2026 23:31:26 -0700 (PDT)
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-43d63e468c5sm5186563f8f.20.2026.04.09.23.31.25
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Thu, 09 Apr 2026 23:31:26 -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=google header.d=suse.com header.i="@suse.com" header.h="Content-Transfer-Encoding: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=1775802686; x=1776407486; darn=lists.xenproject.org;
        h=content-transfer-encoding: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;
        bh=H0v2WHt5PyLazizb4U48RF5LhoVjKyY9CzIVeQskboo=;
        b=Xi27ESfsjnNqzTDOO3fwAQfrN4EJbF9ovasuKIT+DZQA67p/5KR+oFnlMQf0mKPICc
         ZjCe+PKJCmkV9RXSE56dfZdtzlGjFisxxgZKpG6EskbT9/N9QF9AUCDSvLCOl5pwiZ0r
         /QUVwyVG+sge0RBeHc4oY/4Vv6IayAyBHZk4rb34jPmZWV0jWluOpJpBNv5EtgcXjGgJ
         DVTUrex/NXLYLjIrcZRdRzu8KyZHT1HZSIH8hyQ7v9PI0kyBymdXrD12Di0RLWTbN3rv
         HL/EBR4jZKDJmKn6SPRAO2j1WgMYHEQG4I4MJz0fDXst1krKmtjFE0fwb46jKIJI1ugp
         q3pA==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20251104; t=1775802686; x=1776407486;
        h=content-transfer-encoding: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;
        bh=H0v2WHt5PyLazizb4U48RF5LhoVjKyY9CzIVeQskboo=;
        b=rpkUpH9pNwsin6Ppkl25LwZPEtL2dq5vTbugicD8heM/RIgXNQziy4D7ybflqvxdLD
         ONCHU0cljqnxXRF6QmDa6V/Aq21AeoPDR30rn347UjuU8Qyf1gi/oOVyTLS2od8f+x6X
         OyoDDmXd+PpbXWmMazGzE0+vDZQZT1TwOFJKQXfEdG0lKeMIMl7ox83H6CzUlv3NeCsq
         ssO3bjWfOnIrFED9/EBRmkeoAFjui9iNYMjM3k18xUeftPovCsnMXv/T/oidHgY/gKCQ
         TCP5A+jPD4VoSx7q5U4QINDjOkAVScz0ELjwJk6Kv1mqo1dzgI52zmvCPJgQrdf64rOX
         jLhQ==
X-Gm-Message-State: AOJu0YxA67zXH7sHGXfZtGDF4vxSVuJutS/I60GUBjsi1ej2GJZxN5/e
	cA+KEXDmRUG3M7/O1ukW1Apl8CQj3i9Vg0fTYpMJ01+ZT334mVc+8WT8CvHztuOpuwxwGruLWMA
	tdrjg/Q==
X-Gm-Gg: AeBDieujx9axsQlDlZ/PBWXi72WB3dvdyQsy21UFY6drvPVPcRXRZ5OleT+UWWOAN+D
	0dvSUc1FrEzyEzwdcLzXTOeOBIZBERXMWOQtwHKZ7S68R/8XiCGsf1v0zSankjTSocmPnnTf3Ca
	i9akJgIGj+wzrNZ0GkUdV/EZteyCKxv0lZKLZuKNLBd/gKDGfmGRKLIgMTWQQV5X6Tmvk+pue0u
	q+uhpKL4T35hR16RQOn9Pn6ghBExXdT+nNpWtmA5rL9Y4tlxF0S/GPxQQ3IcHtA0SWFLhHjwaPX
	/vI5VPoP6dDUQ9/EvjOQdlg2kcHCiY3TGAbqYzSt/aHQ395HXZy8hzfh4H5Rbx+XUY0ChSO5RTO
	IzdVCrNdhbK9Fe2MPqTlNDS1I0evlKRudxEwXR78/UrZreYdBn+iqlf3NwtImeSu2ZojK6OtzJ6
	PC5RpuhYag3E6Ue4WNePxv3wpBPJK4Es27WVDVD6+bX+75Ja/bBb5nFdw+YEIRgIcPXckykdTn6
	lRl+Bct5Tjal7U=
X-Received: by 2002:a5d:5d03:0:b0:437:7719:ca82 with SMTP id ffacd0b85a97d-43d6491fef7mr2212740f8f.3.1775802686287;
        Thu, 09 Apr 2026 23:31:26 -0700 (PDT)
Message-ID: <c4961231-7882-49d8-8c68-c014ca0a5e4f@suse.com>
Date: Fri, 10 Apr 2026 08:31:24 +0200
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [BUG] Potential double-free in Xen dt-overlay attach/remove error
 path
To: xen-devel@lists.xenproject.org
References: <CANrF8CHA1XacwRzNcw3zt0goEV-7in_=vtEYhLxSjwaV62jrTw@mail.gmail.com>
Content-Language: en-US
Cc: Gyujeong Jin <wlsrbwjd7232@gmail.com>,
 Stefano Stabellini <sstabellini@kernel.org>, Julien Grall <julien@xen.org>,
 Bertrand Marquis <bertrand.marquis@arm.com>,
 Michal Orzel <michal.orzel@amd.com>
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: <CANrF8CHA1XacwRzNcw3zt0goEV-7in_=vtEYhLxSjwaV62jrTw@mail.gmail.com>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 7bit
X-purgate-ID: tlsNG-c201ff/1775802686-2292196F-70851A81/0/0
X-purgate-type: clean
X-purgate-size: 2610

On 09.04.2026 23:28, Gyujeong Jin wrote:
> Hello Team, I was advised to report this issue in this way because
> dt-overlay is currently experimental and not security supported.
> 
> I would like to report a potential memory safety issue in Xen related to
> the Device Tree overlay handling logic.
> ------------------------------
> Problem Description
> 
> A double-free / use-after-free condition may occur in the dt-overlay
> handling path when an overlay attachment fails and the same overlay is
> later removed.
> 
> The issue arises because rangeset objects are freed on the failure path of
> handle_attach_overlay_nodes(), but the corresponding pointers are not
> cleared. Subsequently, handle_remove_overlay_nodes() may operate on these
> stale pointers, leading to a second free.
> Affected Component
> 
>    - Xen ARM
>    - Device Tree overlay subsystem
>    - File: xen/common/device-tree/dt-overlay.c
> 
> Relevant functions:
> 
>    - handle_attach_overlay_nodes()
>    - handle_remove_overlay_nodes()
> 
> Impact
> 
> This issue may lead to:
> 
>    - Double-free of rangeset structures
>    - Use-after-free when accessing stale pointers
>    - Potential hypervisor crash (DoS)
>    - Possible memory corruption depending on allocator behavior
> 
> Given that this occurs in the hypervisor context, the impact could extend
> beyond a simple crash under certain conditions.
> Root Cause
> 
> The issue originates from inconsistent memory management between the attach
> failure path and the remove path.
> 
> In handle_attach_overlay_nodes(), the failure path frees rangeset objects:
> 
> static long handle_attach_overlay_nodes(...)
> {
>     ...
> 
>     if ( entry )
>     {
>         rangeset_destroy(entry->irq_ranges);
>         rangeset_destroy(entry->iomem_ranges);
>     }
> 
>     return rc;
> }
> 
> However, the corresponding pointers (entry->irq_ranges and
> entry->iomem_ranges) are not set to NULL afterward, leaving dangling
> pointers in the entry structure.

Further to this, am I overlooking any check preventing an already created
pair of rangesets to be replaced by new ones, leaking the original pair?

And then there's a Misra issue as well: dt_overlay_domctl() has unreachable
code. Anything other than XEN_DOMCTL_DT_OVERLAY_ATTACH is excluded at the
top, so the "else" body near the bottom is unreachable. (This in turn makes
me wonder: How come there's no "detach"?) Yet then, that's probably pretty
meaningless, as there look to be other issues (Misra and general robustness
ones) as well.

Jan


From xen-devel-bounces@lists.xenproject.org Fri Apr 10 06:40:15 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Fri, 10 Apr 2026 06:40:15 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1278363.1563221 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wB5XG-0005F5-Bg; Fri, 10 Apr 2026 06:40:10 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1278363.1563221; Fri, 10 Apr 2026 06: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 1wB5XG-0005Ey-7Q; Fri, 10 Apr 2026 06:40:10 +0000
Received: by outflank-mailman (input) for mailman id 1278363;
 Fri, 10 Apr 2026 06:40:09 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <jbeulich@suse.com>) id 1wB5XF-0005Es-3U
 for xen-devel@lists.xenproject.org; Fri, 10 Apr 2026 06:40:09 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wB5XD-00Ay3M-VX
 for xen-devel@lists.xenproject.org; Fri, 10 Apr 2026 08:40:07 +0200
Received: from [10.42.69.3] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <jbeulich@suse.com>)
 id 69d89b3f-2eae-0a2a0a5409dd-0a2a4503cf82-30
 for <xen-devel@lists.xenproject.org>; Fri, 10 Apr 2026 08:40:07 +0200
Received: from [209.85.221.44] (helo=mail-wr1-f44.google.com)
 by tlsNG-33051d.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.0)
 (envelope-from <jbeulich@suse.com>)
 id 69d89b47-02b3-0a2a45030019-d155dd2ca8be-3
 for <xen-devel@lists.xenproject.org>; Fri, 10 Apr 2026 08:40:07 +0200
Received: by mail-wr1-f44.google.com with SMTP id
 ffacd0b85a97d-43b949bf4easo961306f8f.0
 for <xen-devel@lists.xenproject.org>; Thu, 09 Apr 2026 23:40:07 -0700 (PDT)
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-43d63e5d85fsm4346745f8f.36.2026.04.09.23.40.06
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Thu, 09 Apr 2026 23:40: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=google header.d=suse.com header.i="@suse.com" header.h="Content-Transfer-Encoding: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=1775803207; x=1776408007; darn=lists.xenproject.org;
        h=content-transfer-encoding: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;
        bh=e/IPyXzqdpbTutGWDnypeB9UGv93dbAo3m2Ajd7h1s4=;
        b=Uh+rjmN7s2CA/WCB7YA/fglFuSrXegAVc0n6TaInuSioiaNUB1Noca9EyFpis4g8la
         0q6fdCLpgVa4XluR1ZcIvFlZ6VYYfX/RHWuT6IzFSQFBEzldH0aE00fvRLx+3Y2sPpln
         M3FYfjo3/i8OfNa75dI32V2Zm052vCVLVmnFw8eGJ7STsjwjBlC2fYd8l105VRkLLRtF
         N152HdvAM5szKob0Tmxia6x62XoCxQH73KLmsk3Jf/GLdOKxFFunZV1q4+guR3oh4QHz
         K8yQo18oirA2vHEiYFtXLRlhb1zTwrR0xUZBSeLOgO4nh4qz5Hr6q0pqkJZklBi44SZK
         8JyQ==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20251104; t=1775803207; x=1776408007;
        h=content-transfer-encoding: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;
        bh=e/IPyXzqdpbTutGWDnypeB9UGv93dbAo3m2Ajd7h1s4=;
        b=QDvCgFkTQWOUmEfVRH5VEYwPtzSuOILAKH9jOmhPeYxjKYnr8derKFNkX50RQqLQLn
         UnMm40v0PuHTGJ/IRuJc5l/MvVjVMKyLNPoHKF6HBw6g0RC7obLjrj3vq+j0BeY6UBSV
         MTTIRkIgDI0oGlFLQz4S8VT42VANWORSUPUiQspF6OoyFoP5ghHpduQWqb+ScXTdE53G
         1nFe5Wznr7J2O6TS0TgL1vxmFpVCpcqZAZqoCA/mKwl+YIkNCQ5nNSKUDrsPqhUV1lQ8
         yavfe1jY7rGPs/3REbVwwn7XMxgdFiHGo0uu8KyPhS9CWHaFw8csS6qyvIFjvkhHl5c2
         nw4g==
X-Forwarded-Encrypted: i=1; AJvYcCXMepbMZQuCcS3bGqOuEJvv6Lbie/x0a4DNoRTwBOrAElj/DeeT1DA3W1TECn7HHss29mDh5uoLY8w=@lists.xenproject.org
X-Gm-Message-State: AOJu0YxhcEftIZvbe/8bFjmce7h3EsYxjPQTG8yPRtLARx9GVhwgaKq7
	CH6W4XDQIDWouIT82T92QBHUpN756Z5/+WXP+2yi+9ukLvgOHtY8JaTfVvGWYftt5w==
X-Gm-Gg: AeBDiesrK4N9siLfSabPT+EAiKKCUJPqDonxb/XxUlnajqjpLVGuNI7/UGPMGYxj++k
	Mgjusbvm/WIqMjh4fZdewU9YxeVn4vWWYN3Z0lNWnZtqB5rE/Kr2ypueRxdzNdrDgekDlSKNH1U
	1pafYji7Ezz2CrqphVDx86GFeL7hxetuRYFJdsz5vy/5iycOiTDA/xzI1Kpl8/RQLqP1jF7Kpox
	F8gFcS9SDiIY8ySTH+YJUKhBWXCxamA2iUkGWmRAdbfxmS0C48NIzNMFeaRfJ/sKxnOnP+Zp3cF
	TSLQnEVward/yGaU1jB6GvgVY/9ht0v8uzAz/DwDaFYpXR7A2qAPbYbB9JAHUn//QArwKhOdwVq
	qPE0e8IV+jEtVv8Ri7VZYKi1sBrxzvQiVVLb0uOWcXsM+5rkZnSHI+8V5P/rnmM2R5mTFHNf/o1
	/vtCqto5FwEWWFCW+ANDUZ4SUA3L1v2mGJVG9DHnKrnVjz/x6unNP4vgrLaGBTJ2KYUagXCi/+w
	rcpVZpmSMkiKlA=
X-Received: by 2002:a05:6000:410e:b0:43b:8add:e469 with SMTP id ffacd0b85a97d-43d595cd702mr5340198f8f.22.1775803207291;
        Thu, 09 Apr 2026 23:40:07 -0700 (PDT)
Message-ID: <0c68ca5e-51d3-42ee-aa27-301ffafefc5f@suse.com>
Date: Fri, 10 Apr 2026 08:40:04 +0200
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH] arm/its: Decode BASER cacheability field before comparing
To: Mykola Kvach <xakep.amatop@gmail.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>,
 Mykyta Poturai <mykyta_poturai@epam.com>, xen-devel@lists.xenproject.org
References: <dba15db692025c75f8bd3a2c5dab2654eaa4e896.1775801199.git.mykola_kvach@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: <dba15db692025c75f8bd3a2c5dab2654eaa4e896.1775801199.git.mykola_kvach@epam.com>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 7bit
X-purgate-ID: tlsNG-33051d/1775803207-C9D3CC9A-C665EEE1/0/0
X-purgate-type: clean
X-purgate-size: 790

On 10.04.2026 08:09, Mykola Kvach wrote:
> --- a/xen/arch/arm/gic-v3-its.c
> +++ b/xen/arch/arm/gic-v3-its.c
> @@ -496,7 +496,8 @@ retry:
>          }
>          attr = regc & BASER_ATTR_MASK;
>      }
> -    if ( (regc & GITS_BASER_INNER_CACHEABILITY_MASK) <= GIC_BASER_CACHE_nC )
> +    if ( ((regc & GITS_BASER_INNER_CACHEABILITY_MASK) >>
> +          GITS_BASER_INNER_CACHEABILITY_SHIFT) <= GIC_BASER_CACHE_nC )

Are you aware of MASK_EXTR()? This is one of the cases that we have it for.
Really all *_SHIFT constants should be purged, as they can be calculated
from their *_MASK counterparts (leveraging MASK_{EXTR,INSR}() to keep the
code readable).

Further, doesn't gicv3_lpi_set_proptable() have the same issue with
GICR_PROPBASER_INNER_CACHEABILITY_MASK?

Jan


From xen-devel-bounces@lists.xenproject.org Fri Apr 10 06:58:03 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Fri, 10 Apr 2026 06:58:03 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1278371.1563231 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wB5oH-00072U-Mt; Fri, 10 Apr 2026 06:57:45 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1278371.1563231; Fri, 10 Apr 2026 06:57: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 1wB5oH-00072N-JD; Fri, 10 Apr 2026 06:57:45 +0000
Received: by outflank-mailman (input) for mailman id 1278371;
 Fri, 10 Apr 2026 06:57:43 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <jbeulich@suse.com>) id 1wB5oF-00072H-Dl
 for xen-devel@lists.xenproject.org; Fri, 10 Apr 2026 06:57:43 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wB5oE-007iaH-2z
 for xen-devel@lists.xenproject.org; Fri, 10 Apr 2026 08:57:42 +0200
Received: from [10.42.69.11] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <jbeulich@suse.com>)
 id 69d89f5c-2eae-0a2a0a5409dd-0a2a450bbb04-46
 for <xen-devel@lists.xenproject.org>; Fri, 10 Apr 2026 08:57:41 +0200
Received: from [209.85.128.52] (helo=mail-wm1-f52.google.com)
 by tlsNG-42698a.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.0)
 (envelope-from <jbeulich@suse.com>)
 id 69d89f65-bca8-0a2a450b0019-d1558034cd63-3
 for <xen-devel@lists.xenproject.org>; Fri, 10 Apr 2026 08:57:41 +0200
Received: by mail-wm1-f52.google.com with SMTP id
 5b1f17b1804b1-48896199cbaso17642605e9.1
 for <xen-devel@lists.xenproject.org>; Thu, 09 Apr 2026 23:57:41 -0700 (PDT)
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-43d63deb904sm5559337f8f.9.2026.04.09.23.57.40
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Thu, 09 Apr 2026 23:57:40 -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=google header.d=suse.com header.i="@suse.com" header.h="Content-Transfer-Encoding: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=1775804261; x=1776409061; darn=lists.xenproject.org;
        h=content-transfer-encoding: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;
        bh=f1uZRKE0vMOsIRtnx7CSz/HSJXcNTmDwzx0blnuaCuA=;
        b=dODGtxWc5tvevES785vqt660wSDJh4pm19H/Us/Rc/9FBGIAZF0mgz9sDDOlYuYvym
         ei5CsTooh0c8kTyjfRmmH4GXoZwt9rrXwfgohNgXGMOfFqQbWOFvtCifsQvj10uceC52
         Ip7SZDdRaoSxW54icSEVkLcF2fpTLrFcrobYepdz/YP7Mq8OBJk/V0IAaikqJrFTaeFC
         XVU6yXVr93ndqZ71b3ypUaFgwTrhIvFLQx/yhTrameHCu3dDAcs5ITWFCC+g9s84+ulV
         7Ao6f9qyZXbEp7ot+kOT0eTb97A/MenJqk0BwzO1XxrftG6P4WckB+Fu3UuSFiEif9ns
         iU5Q==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20251104; t=1775804261; x=1776409061;
        h=content-transfer-encoding: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;
        bh=f1uZRKE0vMOsIRtnx7CSz/HSJXcNTmDwzx0blnuaCuA=;
        b=Bvqm05MvXMCAo5ij5iG/Rl0j6gHkjgTdaw+7omcT6ombw/RbeobIKFNCxiPm9S2Ke4
         W7EGiVoVEbNYKHoSUy8bqZ7WQYqFUN0SZLHTSxHA2s5v1lqa1OZT1LnVfAsz0WPScz1j
         l5uIBWAty42O3PEbgu7YxLyrDmCCjjyh2u5faG/Af9GZnX8NnTXmbkLgl3XySN77nwC3
         5NjgK/uI92NePlxHzV5R6+5KgVnSGU6q0Mt93ezm9SeiM2a5BUFESKF1mHpcgUqxWK7g
         /jKwKOX4PscHuCi8VGBqnwUbTw6W4TkwPGNuwdburH/AINso0/eMiIih8rS7ZXrdhw7z
         Qonw==
X-Gm-Message-State: AOJu0Yx5dbxdwf3u4dEmvOHsdU2DUHFd4P5CEo5peQHDIMi/IrHp1018
	ZppqMpRgh50Pwfm5icWWAWYrWjHKepQWJ/2uPUGtrWycxykJA3yaNEelqSD9G+PP2Q==
X-Gm-Gg: AeBDies203R/qI/nkwCRGxReiiaUOtdWmubbgQvm+Mp/1br9vVEjIxlPHTgLrwF8TGh
	Uo9CBYJvRCBoVy9xo08Lmxbs4m1PCKk/FGNumQCgrgomr2z3LXwHpS7wVqOQDteu5W0LPQW6SwK
	+K4oPxYIiP8hkrVX/W31j/1Cjvpk1K8w2sQOSTdtjHB4RKyNKAqzwyWAMmHypS4fVIc1lRzyxyy
	t4vZP3ZfTAc472DSPFWDIg3mEqfMoAn8ssRLB0/MiMeyL/rMrslS4ksVfnBNSYrABi1RoS/o6W+
	Nko2jZCav3AIJCWma+nK6ZSC5KbylJRyuGC9Wf6Y1q2QBBBrvD5hjkQHkCXtSys10904E0QN7WT
	iVZyKeGdNh7X2yKeZP6OziPzK+lRIcEeCGIviFnYLKKBB/spnc52WzkUJowTMnmAc6jXl/vYXC6
	g0crmnYaKg47GhaVpsZKVJD+mVv3Esm7v6zbDaJK2DlnjWJBGBPQ9Silkwvg22pG1Nq4bqq/J4y
	HMdQ09X1OC5DoU=
X-Received: by 2002:a05:600c:5299:b0:487:1fb4:7e1 with SMTP id 5b1f17b1804b1-488d6875f3emr21072235e9.22.1775804261298;
        Thu, 09 Apr 2026 23:57:41 -0700 (PDT)
Message-ID: <f9874489-5692-4735-8db4-d320142af9f7@suse.com>
Date: Fri, 10 Apr 2026 08:57:39 +0200
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH 2/3] xen/common: llc-coloring: Fix off-by-one in
 parse_color_config()
To: Luca Fancellu <Luca.Fancellu@arm.com>, Michal Orzel <michal.orzel@amd.com>
Cc: "xen-devel@lists.xenproject.org" <xen-devel@lists.xenproject.org>,
 Andrew Cooper <andrew.cooper3@citrix.com>,
 Anthony PERARD <anthony.perard@vates.tech>, Julien Grall <julien@xen.org>,
 =?UTF-8?Q?Roger_Pau_Monn=C3=A9?= <roger.pau@citrix.com>,
 Stefano Stabellini <sstabellini@kernel.org>
References: <20260409113934.197619-1-michal.orzel@amd.com>
 <20260409113934.197619-3-michal.orzel@amd.com>
 <EEF7C308-F25C-46BA-9663-BA789B49429C@arm.com>
 <db87a55a-5bd2-44ab-8814-1ffec91d1b40@suse.com>
 <9A42538E-AB13-488E-9AEF-39CD7E8D3131@arm.com>
 <6093D2A3-1823-4587-BB81-4593AD060D71@arm.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: <6093D2A3-1823-4587-BB81-4593AD060D71@arm.com>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
X-purgate-ID: tlsNG-42698a/1775804261-EFF462A1-6FB5FD03/0/0
X-purgate-type: clean
X-purgate-size: 2537

On 09.04.2026 15:34, Luca Fancellu wrote:
>> On 9 Apr 2026, at 13:52, Luca Fancellu <Luca.Fancellu@arm.com> wrote:
>>> On 9 Apr 2026, at 13:48, Jan Beulich <jbeulich@suse.com> wrote:
>>> On 09.04.2026 14:22, Luca Fancellu wrote:
>>>>> On 9 Apr 2026, at 12:39, Michal Orzel <michal.orzel@amd.com> wrote:
>>>>>
>>>>> The check uses >= to compare the total number of colors against
>>>>> max_num_colors (which is ARRAY_SIZE of the colors array).  This
>>>>> incorrectly rejects input that would exactly fill the array.
>>>>>
>>>>> For example, with NR_LLC_COLORS=16, specifying 1 color for Xen and 15
>>>>> for dom0 would fail.
>>>>>
>>>>> Change >= to > so that exactly filling the array is permitted.
>>>>>
>>>>> Fixes: 95ef5ddf8a ("xen/arm: add Dom0 cache coloring support")
>>>>> Signed-off-by: Michal Orzel <michal.orzel@amd.com>
>>>>> ---
>>>>
>>>> Reviewed-by: Luca Fancellu <luca.fancellu@arm.com>
>>>
>>> Did you see Andrew's reply? If that earlier (recent) commit was wrong, I
>>> think a 2nd Fixes: tag may be needed here. For now I can't help the
>>> impression though that there might have been a re-basing mistake, where
>>> that re-base may have wanted to result in this patch dissolving into
>>> nothing. Yet of course I'm all ears to learn otherwise.
>>
>> Oh, no I didn’t see that! Thanks for pointing that out, I will have a closer look.
> 
> 
> I had a closer look, I feel that the patch is ok and commit cba8a584de171c8c4510709c2edc9f1cf86b21ab
> was missing this corner case.

If anything, that part of the change there was outright wrong (and hence, as
said, a 2nd Fixes: tag [actually, see below, simply another one] is needed).
With overflow excluded,

    (*num_colors + (end - start + 1)) > max_num_colors

is the same as

   (*num_colors + (end - start)) >= max_num_colors

i.e. the state before that change, isn't it?

And yes, now that I look again I think I agree that I screwed up there. Yet
then the (imo) better fix would be to undo that change, rather than switching
from >= to > . That's one less calculation overall. Michal?

Jan

> Let’s say max_num_colors = 8 (array capacity), *num_colors = 4 so we stored already 4 entries and the
> next parsed range gives start = 4, end = 7: 
> 
> (*num_colors + (end - start + 1)) >= max_num_colors will compute as
> (4 + (7 - 4 + 1)) >= 8 which will be
> 8 >= 8 that will be true and the input will be rejected, instead of being a valid entry.
> 
> Did I miss anything?
> 
> Cheers,
> Luca
> 



From xen-devel-bounces@lists.xenproject.org Fri Apr 10 07:04:35 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Fri, 10 Apr 2026 07:04:35 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1278381.1563238 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wB5up-0000D7-Ay; Fri, 10 Apr 2026 07:04:31 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1278381.1563238; Fri, 10 Apr 2026 07:04: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 1wB5up-0000D0-89; Fri, 10 Apr 2026 07:04:31 +0000
Received: by outflank-mailman (input) for mailman id 1278381;
 Fri, 10 Apr 2026 07:04:30 +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 1wB5uo-0000Cu-CU
 for xen-devel@lists.xenproject.org; Fri, 10 Apr 2026 07:04:30 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wB5un-00EZiw-JQ
 for xen-devel@lists.xenproject.org; Fri, 10 Apr 2026 09:04:29 +0200
Received: from [10.42.69.11] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <Michal.Orzel@amd.com>)
 id 69d8a0f9-e002-0a2a0a5209dd-0a2a450b9f04-14
 for <xen-devel@lists.xenproject.org>; Fri, 10 Apr 2026 09:04:29 +0200
Received: from [40.93.194.46]
 (helo=SN4PR0501CU005.outbound.protection.outlook.com)
 by tlsNG-42698a.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.0)
 (envelope-from <Michal.Orzel@amd.com>)
 id 69d8a0fb-bca8-0a2a450b0019-285dc22e9992-3
 for <xen-devel@lists.xenproject.org>; Fri, 10 Apr 2026 09:04:28 +0200
Received: from SJ0PR03CA0226.namprd03.prod.outlook.com (2603:10b6:a03:39f::21)
 by BN7PPF62A0C9A68.namprd12.prod.outlook.com
 (2603:10b6:40f:fc02::6d2) with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9769.20; Fri, 10 Apr
 2026 07:04:21 +0000
Received: from SJ5PEPF000001D7.namprd05.prod.outlook.com
 (2603:10b6:a03:39f:cafe::5e) by SJ0PR03CA0226.outlook.office365.com
 (2603:10b6:a03:39f::21) with Microsoft SMTP Server (version=TLS1_3,
 cipher=TLS_AES_256_GCM_SHA384) id 15.20.9769.43 via Frontend Transport; Fri,
 10 Apr 2026 07:04:20 +0000
Received: from satlexmb08.amd.com (165.204.84.17) by
 SJ5PEPF000001D7.mail.protection.outlook.com (10.167.242.59) with Microsoft
 SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id
 15.20.9769.17 via Frontend Transport; Fri, 10 Apr 2026 07:04:20 +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.17; Fri, 10 Apr
 2026 02:04:19 -0500
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.17; Fri, 10 Apr
 2026 00:04:19 -0700
Received: from [10.252.147.171] (10.180.168.240) by satlexmb07.amd.com
 (10.181.42.216) with Microsoft SMTP Server id 15.2.2562.17 via Frontend
 Transport; Fri, 10 Apr 2026 02:04:17 -0500
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@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=rzoeCWKqzdwvQbXcDVFL7pZpcB/VTklR0iUShNLwVIpIVVNoDQw53ayLmjIYRdJKAhnT6n5nKmDsioK7oskA4VdnZQe0NmfM55qQh+MZN1aBhe9KCLpOjR4miTEfonz97qfJRpxY4P+hlbXEejCsU2K8bI0s2LX4RS2y3nCt5zPyJrCs2hUQX2wvY1MPxEGuOQmXkL6fdHDop/wozFBL1EJMNwBKwdz2FFCfioIjPfbKgPX6r40ZCXu1e4bfyxERm5Dwx2KOMy6GFCVoGbvq5xj64ynieMZ9sB9lctU9CWVpJ8J/dBcErCmndzsfIuTM+zxKjEl9e3sTWMUz57ikNQ==
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com;
 s=arcselector10001;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1;
 bh=wZn7ErxUd+DKabZl6OfftNVf6LgBJtkKHdjlFuA8pTE=;
 b=y1kly0zvrQkvNgs+zGXIQAy87tRLNnTKD5wq4DrOG/yKIXoS/ElKshqRpp12PMKXlbUZ98lHje0/VuDbVe8A2wIOK3kPAjhV677Kb0p9ICNd8oyrPHst6cakxmAzJNgJi4mqKvxxr1W+UJS+9djIUne+AVw2PLKK6RaHcYmg2kkLtq2aHf9hwMsvqqpfzQfOOetQXhBRCGxjz8a1JBPu8TK2WvE5GfS+7dxT/VKPdJ+I78LOFMYUiUFXs5dSMLZjpPS1FjshBF17aMbcRySHdK8BWELM2qGMHoMKYR7hQO2PDn344x091TCpJvfD2aNF6pDb4gR7/W0+ZkngVe7dZA==
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=wZn7ErxUd+DKabZl6OfftNVf6LgBJtkKHdjlFuA8pTE=;
 b=39pUHmyaoZG+uBQCSphzg7JYNwTWFz6WDOy4grsF09Un96un68SM6WAeh3Sqy2ALIOmm/uPOxG44aw0UvinBSpJgW1WU3tkbVlRMO5Pmwi1dH6xZqBE7EZUq4l8C08Fm14E3QD2rXaszPWb5+vQ4d1kku0GtMiwpKUY8fcqKn2s=
X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 165.204.84.17)
 smtp.mailfrom=amd.com; dkim=none (message not signed)
 header.d=none;dmarc=pass action=none header.from=amd.com;
Received-SPF: Pass (protection.outlook.com: domain of amd.com designates
 165.204.84.17 as permitted sender) receiver=protection.outlook.com;
 client-ip=165.204.84.17; helo=satlexmb08.amd.com; pr=C
Message-ID: <3ec5c89b-6429-4bb5-a2b4-585e2feb1685@amd.com>
Date: Fri, 10 Apr 2026 09:04:17 +0200
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH 2/3] xen/common: llc-coloring: Fix off-by-one in
 parse_color_config()
To: Jan Beulich <jbeulich@suse.com>, Luca Fancellu <Luca.Fancellu@arm.com>
CC: "xen-devel@lists.xenproject.org" <xen-devel@lists.xenproject.org>, "Andrew
 Cooper" <andrew.cooper3@citrix.com>, Anthony PERARD
	<anthony.perard@vates.tech>, Julien Grall <julien@xen.org>,
	=?UTF-8?Q?Roger_Pau_Monn=C3=A9?= <roger.pau@citrix.com>, Stefano Stabellini
	<sstabellini@kernel.org>
References: <20260409113934.197619-1-michal.orzel@amd.com>
 <20260409113934.197619-3-michal.orzel@amd.com>
 <EEF7C308-F25C-46BA-9663-BA789B49429C@arm.com>
 <db87a55a-5bd2-44ab-8814-1ffec91d1b40@suse.com>
 <9A42538E-AB13-488E-9AEF-39CD7E8D3131@arm.com>
 <6093D2A3-1823-4587-BB81-4593AD060D71@arm.com>
 <f9874489-5692-4735-8db4-d320142af9f7@suse.com>
From: "Orzel, Michal" <michal.orzel@amd.com>
Content-Language: en-US
In-Reply-To: <f9874489-5692-4735-8db4-d320142af9f7@suse.com>
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: 8bit
X-EOPAttributedMessage: 0
X-MS-PublicTrafficType: Email
X-MS-TrafficTypeDiagnostic: SJ5PEPF000001D7:EE_|BN7PPF62A0C9A68:EE_
X-MS-Office365-Filtering-Correlation-Id: 0d886fee-1334-4249-bd0f-08de96cf6375
X-MS-Exchange-SenderADCheck: 1
X-MS-Exchange-AntiSpam-Relay: 0
X-Microsoft-Antispam:
	BCL:0;ARA:13230040|36860700016|376014|82310400026|1800799024|56012099003|22082099003|18002099003;
X-Microsoft-Antispam-Message-Info:
	Pqb0krf4wKE/7N6dn99hZw1HIi7BXbtVBb8mLQgsuPNqqvlD6ciMmFughRToODiYqUTjRuD3JiSveavz7BIt76OMfrrnIpTkJb4IrTGB4HqoplTsXMtxKnfUFVzXl9VQhhIjPNHUqdz6jlrFsQMeRIwMXPzpuHLbS/yGzuzTYQh5/6lHPOJsUne+4Ld6sQE4zhP0O7qh80l8e4gy1x9/dPYMsaz/9aHyVEGp6g0jbaBhPdAigoSkg1PNoTonryDVOW//lSYYYsezRM6A0U5oMlZM/yRiw98bB2H+ENKHZL/a+Dw+4QWcMjWxteqQvQEPg4KSJcQsfkGm+N75k12OLPahMAApg5yXsKs4aQTf+/h2LjMQz6ZgNLeW9S6s9+A8IgYVgvcJ50fLyqWxnnCYdisvPG27673YDhy86z04g2WGMjlw3XV9IvuEkFWqsLYZqW4ZRHfkYDWcN9N4Mfrd+9P4QMRWcLGriIJtKuI2oHiKEz0cZHdMDlgL0o3+/qhvG1DInxEewBAls5O8gG66EfFMfmGT11bA7Ot80UcsDMRyIE5vfbgM6v5cT95jfzr5Qg4KNBI4kKTskOUhMZVR6ZfRo/yjnkK2lJ33tfrF/r3oFBYzRazQrnNcF+Ggoy4sMZDxqsnHHMxsSNKBR5WkkuP/2tgRoJ06l5S288zCf+nutPzZv6NaZUI6kq2P1S1Z8dQM9k13QNE7YNc0/roxwZ1DXde87R+1DfMkWshy2TiOTD4cPdMGRwaZPmFthCUccwrlmelT7YC9i+9vQ3bOlA==
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)(376014)(82310400026)(1800799024)(56012099003)(22082099003)(18002099003);DIR:OUT;SFP:1101;
X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1
X-MS-Exchange-AntiSpam-MessageData-0:
	AsAkDY0EjTIkSg8QRK2LKWMFSjScM1oQOOELzfoK5dHQFbhgpXPJeT6XXNEr5N0mOGcEr1YLiRW6KF6eple6s/UFisEF9azQjLY2jY0ssSgAxGUXnLqmOADHaIavrYjAQSYXGyefJt6flZwXOEPoxyDMhs1ilO5SVVJTh3j9Z//DbTPgq+Nih/1Z8zYnbSnjkhUYS5Y/rKd1G2iyHDTEYoCXs/DFKSBQZmoz8loXUU3h3S2p27JaX3nmXSoxowMuDiL12gDpqM82F53ZotWUDZMUpvnB3pqO/rxbNz0WqWo+iR/ubRJWryFLOV2x8wEzPUoGiIA4O+u5Lg6+eOSdartHJcXsS8SX6plz9zQlYZlVPSkPuYjXKd7Un5drYshcbwO+3DAvfEiwnFEkPgEt8CISqjx5rZond0HZbyhkqADgrQtpbgeH1S6bxs/sqgS6
X-OriginatorOrg: amd.com
X-MS-Exchange-CrossTenant-OriginalArrivalTime: 10 Apr 2026 07:04:20.3443
 (UTC)
X-MS-Exchange-CrossTenant-Network-Message-Id: 0d886fee-1334-4249-bd0f-08de96cf6375
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:
	SJ5PEPF000001D7.namprd05.prod.outlook.com
X-MS-Exchange-CrossTenant-AuthAs: Anonymous
X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem
X-MS-Exchange-Transport-CrossTenantHeadersStamped: BN7PPF62A0C9A68
X-purgate-ID: tlsNG-42698a/1775804669-1734C2A1-0F8E0ABF/0/0
X-purgate-type: clean
X-purgate-size: 2928



On 10/04/2026 08:57, Jan Beulich wrote:
> On 09.04.2026 15:34, Luca Fancellu wrote:
>>> On 9 Apr 2026, at 13:52, Luca Fancellu <Luca.Fancellu@arm.com> wrote:
>>>> On 9 Apr 2026, at 13:48, Jan Beulich <jbeulich@suse.com> wrote:
>>>> On 09.04.2026 14:22, Luca Fancellu wrote:
>>>>>> On 9 Apr 2026, at 12:39, Michal Orzel <michal.orzel@amd.com> wrote:
>>>>>>
>>>>>> The check uses >= to compare the total number of colors against
>>>>>> max_num_colors (which is ARRAY_SIZE of the colors array).  This
>>>>>> incorrectly rejects input that would exactly fill the array.
>>>>>>
>>>>>> For example, with NR_LLC_COLORS=16, specifying 1 color for Xen and 15
>>>>>> for dom0 would fail.
>>>>>>
>>>>>> Change >= to > so that exactly filling the array is permitted.
>>>>>>
>>>>>> Fixes: 95ef5ddf8a ("xen/arm: add Dom0 cache coloring support")
>>>>>> Signed-off-by: Michal Orzel <michal.orzel@amd.com>
>>>>>> ---
>>>>>
>>>>> Reviewed-by: Luca Fancellu <luca.fancellu@arm.com>
>>>>
>>>> Did you see Andrew's reply? If that earlier (recent) commit was wrong, I
>>>> think a 2nd Fixes: tag may be needed here. For now I can't help the
>>>> impression though that there might have been a re-basing mistake, where
>>>> that re-base may have wanted to result in this patch dissolving into
>>>> nothing. Yet of course I'm all ears to learn otherwise.
>>>
>>> Oh, no I didn’t see that! Thanks for pointing that out, I will have a closer look.
>>
>>
>> I had a closer look, I feel that the patch is ok and commit cba8a584de171c8c4510709c2edc9f1cf86b21ab
>> was missing this corner case.
> 
> If anything, that part of the change there was outright wrong (and hence, as
> said, a 2nd Fixes: tag [actually, see below, simply another one] is needed).
> With overflow excluded,
> 
>     (*num_colors + (end - start + 1)) > max_num_colors
> 
> is the same as
> 
>    (*num_colors + (end - start)) >= max_num_colors
> 
> i.e. the state before that change, isn't it?
> 
> And yes, now that I look again I think I agree that I screwed up there. Yet
> then the (imo) better fix would be to undo that change, rather than switching
> from >= to > . That's one less calculation overall. Michal?
Yes, I do agree. This patch can be modified to just do:

diff --git a/xen/common/llc-coloring.c b/xen/common/llc-coloring.c
index eb7c72b24023..6dc614739a98 100644
--- a/xen/common/llc-coloring.c
+++ b/xen/common/llc-coloring.c
@@ -78,7 +78,7 @@ static int __init parse_color_config(const char *buf, unsigned
int colors[],

         if ( end >= NR_LLC_COLORS || start > end ||
              (end - start) >= (UINT_MAX - *num_colors) ||
-             (*num_colors + (end - start + 1)) >= max_num_colors )
+             (*num_colors + (end - start)) >= max_num_colors )
             return -EINVAL;

         /* Colors are range checked in check_colors() */

I'll do that later on.

~Michal



From xen-devel-bounces@lists.xenproject.org Fri Apr 10 07:08:47 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Fri, 10 Apr 2026 07:08:47 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1278395.1563247 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wB5yu-0000vB-UX; Fri, 10 Apr 2026 07:08:44 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1278395.1563247; Fri, 10 Apr 2026 07:08: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 1wB5yu-0000v4-RX; Fri, 10 Apr 2026 07:08:44 +0000
Received: by outflank-mailman (input) for mailman id 1278395;
 Fri, 10 Apr 2026 07:08:43 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <xakep.amatop@gmail.com>) id 1wB5yt-0000uy-Ds
 for xen-devel@lists.xenproject.org; Fri, 10 Apr 2026 07:08:43 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wB5yq-00BR3l-MW
 for xen-devel@lists.xenproject.org; Fri, 10 Apr 2026 09:08:42 +0200
Received: from [10.42.69.12] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <xakep.amatop@gmail.com>)
 id 69d8a1f9-e002-0a2a0a5209dd-0a2a450c9a46-8
 for <xen-devel@lists.xenproject.org>; Fri, 10 Apr 2026 09:08:42 +0200
Received: from [209.85.218.49] (helo=mail-ej1-f49.google.com)
 by tlsNG-d25034.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.0)
 (envelope-from <xakep.amatop@gmail.com>)
 id 69d8a1fa-f40c-0a2a450c0019-d155da31ccca-3
 for <xen-devel@lists.xenproject.org>; Fri, 10 Apr 2026 09:08:42 +0200
Received: by mail-ej1-f49.google.com with SMTP id
 a640c23a62f3a-b9c62fc8debso274477466b.0
 for <xen-devel@lists.xenproject.org>; Fri, 10 Apr 2026 00:08:42 -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=20251104 header.d=gmail.com header.i="@gmail.com" header.h="Content-Transfer-Encoding:Cc:To:Subject:Message-ID:Date:From:In-Reply-To:References:MIME-Version"
ARC-Seal: i=1; a=rsa-sha256; t=1775804922; cv=none;
        d=google.com; s=arc-20240605;
        b=GLX5aaP1WFo8LoO0P+KcHXYfTW28nB8B9WjZ05XgWBh2nQbPeQprRG7uhRfmXF9RNC
         GSOemVwoEfGho7DB5REiqSOeHG8DESvxFqANpqGj50VRnPVFLhsrh2/8lWqdJw3Sq+z8
         KErCdyE0w+oMC5acws4jhs/CFdvYKVLyLOIh6DRwu8ZkRIHGogc/q+LiUAXwBDMYQef1
         Ou9oqGS94aG9Yr4dV5F6unSvumk9x/RWExaM8syjAtyHMJXAZjOcw2Pg2LEcq08xbSOs
         93TWLH5/oo2eDFb7FCDCBcsLrgAQtpQ1hAKYytqIoqe8MK4UXB4Fjii9t6uNnBWsEnT4
         RrLQ==
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20240605;
        h=content-transfer-encoding:cc:to:subject:message-id:date:from
         :in-reply-to:references:mime-version:dkim-signature;
        bh=M6SLpcL9nSATLttfuBBvB9XsHkGoI3gr3My4iJ5sRZA=;
        fh=47x2jc0ju9dZ4is7l1lnFZb2fw4roc4n5S8kQOoHr84=;
        b=XFBh9b3Dehnar0HM5f5oJG8ePn+5owlE9AGRYoe/lt3xZ/i4ZVujzRYxW5tEiCeoDK
         VBhoodd2hE+Ve1h1mwkxnWW1Igk1Dbb4HtTf5yJgi9JWC9rhfnT0EeiWczB9VmEkL2dq
         BbzzvxJGoC6kyFzI1az/gc9YNf6zuF1DifYxBxIwUCDVLjR0Ft3vDCyRcBFDi0tRRmd2
         yV0xW+TLxDUscE7UvYnekeJNh1kmgbC7oRlF6FonY6i7N4rOvs9fQNvPXzV3KlkH2nSW
         V74BtI/RY0EWw7ItwK7Orf0XkA2YMjcSPanV8ocO2IpelJKHQs9M5uwh/6yCEv6yIexx
         6f2w==;
        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=20251104; t=1775804922; x=1776409722; darn=lists.xenproject.org;
        h=content-transfer-encoding:cc:to:subject:message-id:date:from
         :in-reply-to:references:mime-version:from:to:cc:subject:date
         :message-id:reply-to;
        bh=M6SLpcL9nSATLttfuBBvB9XsHkGoI3gr3My4iJ5sRZA=;
        b=WKzQAJTwePy471MLwRcw28OuzrjRXRGx/LA7j3Q7FXA9qRiaWschm56q4clneEs4e1
         AEq4R2zlKZMXfi2Y1jEAaFS4vCQQYdNIs36kQvKsotyuAvvAG4UNuYFaT+83izSfxfCA
         hypx/AV7B3AoscyJGDnVLPFLSkMD+mgRMhbc+32RxnQqOib+ANd0baqnzzaZRTN1RL+B
         ATPs8G2192OH7FytB5iFphukQkgRjtmY6oUyChcyPYtispuLuQxOcmA4CjgkZ9940azH
         evZ2udl1qhkmA0l+3NvexUkqs2/8svr3wq+Kqx5f47XPRfhL4+Tlp4Ezr53STkLuYvem
         0/Sg==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20251104; t=1775804922; x=1776409722;
        h=content-transfer-encoding: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;
        bh=M6SLpcL9nSATLttfuBBvB9XsHkGoI3gr3My4iJ5sRZA=;
        b=a8Gza+1GRS9BHOXGXMnb/sM6sGoBB5k66wZ5TxylYj3BfMXKJ4xxXz23RJqnZ11krP
         mbSvHs3dEx6xz75PkrtSl+Qaibrqj9ZKq6RkDtkHCqtuWwiqUWcDA7YrWkwin6DoPIH9
         qGdyTyiWzko5gxeNGwQQIk7SAz4eKW+NLmIT5lIPcJ/B8EkkPXQDX6dtms3dKCgsJTcW
         khhslqetr6zT5uIGItYppDk5gsJBmFaiwIHSm5rHthmWQJdn2pBH0LQvHXq+nVWt9y14
         XFGTph6nPcG81syL2J3nkpeBaRh910Rk/nY1dF8DCqBOv+Jp/mfJoajsu4hjMHmIvEQn
         4KNw==
X-Forwarded-Encrypted: i=1; AJvYcCUpflpGX1CEqj5Hj5IsjUFQFg4qpJrdf6P7KF4eDYccGsInJ5HuTeBAMUgboXlwGFF6CuUU00/l7SY=@lists.xenproject.org
X-Gm-Message-State: AOJu0Yyd6neCqdxda3Pirxtk7GGp/t7O1/BhWt/6hQfduLlGlEX4Auq/
	0nThfFJJF407M7XX5RazPG59czmi9NfrrBaX25hFwxuE1MXnN2N39LWULHuJo99JDF7wQBS+hPz
	4j24th+meSllSAuiCqF5iBC12MWyhR/c=
X-Gm-Gg: AeBDietS94DhLGm7NWAA/ML5KnpzHpFhvUc0Vk/oUad3a0f9bAA/ayVGHlOOmUtdFQt
	iiM8OhZKn2PcAl8Cgunl33vTkbeXnINTKUgFyO4wGHXVZ6WJ4nP7ZQz2zv5FBcMoxOMO8deGCCQ
	PzL0G5D2SiAclPf1eTf45BHlsb/HrSj+sGLPzexKKzg7JCy17P+19kK5cXpMTTpExr8NhcBKvo8
	fm0B/K0aKRRiEVOcJGzIjoXMWWyh02R/nkqPqEZ6GHP2n6ixIw2uCrPZouyNgGDKW+lY7S4MoF3
	N1unDA==
X-Received: by 2002:a17:906:ef06:b0:b9d:3966:bc23 with SMTP id
 a640c23a62f3a-b9d7297dae2mr101466366b.26.1775804921213; Fri, 10 Apr 2026
 00:08:41 -0700 (PDT)
MIME-Version: 1.0
References: <dba15db692025c75f8bd3a2c5dab2654eaa4e896.1775801199.git.mykola_kvach@epam.com>
 <0c68ca5e-51d3-42ee-aa27-301ffafefc5f@suse.com>
In-Reply-To: <0c68ca5e-51d3-42ee-aa27-301ffafefc5f@suse.com>
From: Mykola Kvach <xakep.amatop@gmail.com>
Date: Fri, 10 Apr 2026 10:08:29 +0300
X-Gm-Features: AQROBzCQk3ZJBZwlQ7lm0717AorYmOiTTOwMXRgYAR6MXQfXuR7vPoG0Twf-Xt4
Message-ID: <CAGeoDV_S=hQwKyc1aa-X_NZbB2n+QzxUfXpNDcvFehPi8h3adA@mail.gmail.com>
Subject: Re: [PATCH] arm/its: Decode BASER cacheability field before comparing
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>, 
	Mykyta Poturai <mykyta_poturai@epam.com>, xen-devel@lists.xenproject.org
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: quoted-printable
X-purgate-ID: tlsNG-d25034/1775804922-FDF52A3D-C5E95FD2/0/0
X-purgate-type: clean
X-purgate-size: 1313

Hi Jan,

Thank you for the review.

On Fri, Apr 10, 2026 at 9:40=E2=80=AFAM Jan Beulich <jbeulich@suse.com> wro=
te:
>
> On 10.04.2026 08:09, Mykola Kvach wrote:
> > --- a/xen/arch/arm/gic-v3-its.c
> > +++ b/xen/arch/arm/gic-v3-its.c
> > @@ -496,7 +496,8 @@ retry:
> >          }
> >          attr =3D regc & BASER_ATTR_MASK;
> >      }
> > -    if ( (regc & GITS_BASER_INNER_CACHEABILITY_MASK) <=3D GIC_BASER_CA=
CHE_nC )
> > +    if ( ((regc & GITS_BASER_INNER_CACHEABILITY_MASK) >>
> > +          GITS_BASER_INNER_CACHEABILITY_SHIFT) <=3D GIC_BASER_CACHE_nC=
 )
>
> Are you aware of MASK_EXTR()? This is one of the cases that we have it fo=
r.
> Really all *_SHIFT constants should be purged, as they can be calculated
> from their *_MASK counterparts (leveraging MASK_{EXTR,INSR}() to keep the
> code readable).

I wasn't aware of this macro, thanks. I will take a look.

>
> Further, doesn't gicv3_lpi_set_proptable() have the same issue with
> GICR_PROPBASER_INNER_CACHEABILITY_MASK?

Fortunately, GIC_BASER_NonShareable is equal to zero, so the condition
there is not affected.

We may want to align that condition for consistency, but I would prefer
to keep this patch focused on the actual bug fix and avoid unrelated
changes.


Best regards,
Mykola

>
> Jan


From xen-devel-bounces@lists.xenproject.org Fri Apr 10 07:09:54 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Fri, 10 Apr 2026 07:09:54 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1278403.1563257 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wB5zy-0001QI-6v; Fri, 10 Apr 2026 07:09:50 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1278403.1563257; Fri, 10 Apr 2026 07:09: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 1wB5zy-0001QB-42; Fri, 10 Apr 2026 07:09:50 +0000
Received: by outflank-mailman (input) for mailman id 1278403;
 Fri, 10 Apr 2026 07:09:48 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <Luca.Fancellu@arm.com>) id 1wB5zw-0001Q0-A6
 for xen-devel@lists.xenproject.org; Fri, 10 Apr 2026 07:09:48 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wB5zv-00DRTk-Ir
 for xen-devel@lists.xenproject.org; Fri, 10 Apr 2026 09:09:47 +0200
Received: from [10.42.69.8] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <Luca.Fancellu@arm.com>)
 id 69d8a22b-e002-0a2a0a5209dd-0a2a45088e32-36
 for <xen-devel@lists.xenproject.org>; Fri, 10 Apr 2026 09:09:46 +0200
Received: from [40.107.130.36]
 (helo=MRWPR03CU001.outbound.protection.outlook.com)
 by tlsNG-c1860d.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.0)
 (envelope-from <Luca.Fancellu@arm.com>)
 id 69d8a23a-fab6-0a2a45080019-286b82242179-3
 for <xen-devel@lists.xenproject.org>; Fri, 10 Apr 2026 09:09:46 +0200
Received: from CWLP123CA0259.GBRP123.PROD.OUTLOOK.COM (2603:10a6:400:1d5::7)
 by PR3PR08MB5705.eurprd08.prod.outlook.com (2603:10a6:102:93::23) with
 Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9769.42; Fri, 10 Apr
 2026 07:09:41 +0000
Received: from AMS0EPF00000193.eurprd05.prod.outlook.com
 (2603:10a6:400:1d5:cafe::bf) by CWLP123CA0259.outlook.office365.com
 (2603:10a6:400:1d5::7) with Microsoft SMTP Server (version=TLS1_3,
 cipher=TLS_AES_256_GCM_SHA384) id 15.20.9769.41 via Frontend Transport; Fri,
 10 Apr 2026 07:09:41 +0000
Received: from outbound-uk1.az.dlp.m.darktrace.com (4.158.2.129) by
 AMS0EPF00000193.mail.protection.outlook.com (10.167.16.212) with Microsoft
 SMTP Server (version=TLS1_3, cipher=TLS_AES_256_GCM_SHA384) id 15.20.9745.21
 via Frontend Transport; Fri, 10 Apr 2026 07:09:41 +0000
Received: from DU2PR08MB7272.eurprd08.prod.outlook.com (2603:10a6:10:2d7::16)
 by AM8PR08MB6354.eurprd08.prod.outlook.com (2603:10a6:20b:367::22)
 with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9769.42; Fri, 10 Apr
 2026 07:08:38 +0000
Received: from DU2PR08MB7272.eurprd08.prod.outlook.com
 ([fe80::5d34:206f:373:a323]) by DU2PR08MB7272.eurprd08.prod.outlook.com
 ([fe80::5d34:206f:373:a323%6]) with mapi id 15.20.9769.018; Fri, 10 Apr 2026
 07:08: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=selector1 header.d=arm.com header.i="@arm.com" header.h="From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck"; dkim=pass header.s=selector1 header.d=arm.com header.i="@arm.com" header.h="From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck"
ARC-Seal: i=2; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=pass;
 b=O3y2QPMeUoJ6oLZqpac2diVPKCo/uE20HukIzYh2zYjVBC0+5ZzHjK3aQZ942G1mOccUKhizk9ukU7tvlRD6jw7GofD8KzUHHzDeVXvWL9vl804QE+jOzljywg4KjakamJO576kN7DhJHS08TDrPHFzz+ysocsuQjzDvvkV+ySbRFThzN9BwT/35AfObLbkccyC/6gg43hCceebzGV5dcwUwKzCQ5aHExzJi8ldBK9+sogugy7Kvt6ATKyWn7ERnO+aBb3R7uNo5UDkcLHxWGSZ9Gxa7XXSTnLXWs5IjbjSYMVVTPV0NOztpEvq6by2Cg33svXRwr4AwLPSBrw3kBg==
ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com;
 s=arcselector10001;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1;
 bh=VylMf0UBcQgkYOUdu4v1mkbxc4ELAyaRNARRuVmJ1b4=;
 b=Qtdk/MctZGz7MOP841bCuthAtlXH7uacwIuw23Oz9EsFoWxbI6o453dFtlK6MCtQeeN6RfHMmh2snvXb53O9GTZ8KbCe9mUzuN3z662oDeoPrHNDPZMTs+R/FcSDa7+tpa0Mtzli8m0ZCR2GB5fRy8aLFCk13i0uj/FyDbNgS+ZLzKTf+qBb4PWUGdWuUys6o+gU5SQbhtzq4Yn0koBLXqglDMFJsWtekdQqxN1d3CcoHdzzMjFMpNEeDMaPysRgiMW1JyXg2TGvd1x87XG35I3x7jtOgrB+C6JWum3Akj5y35PM59oi26frMGkPNYD3caog8Z/5e6fXkrm/kUUWrQ==
ARC-Authentication-Results: i=2; mx.microsoft.com 1; spf=pass (sender ip is
 4.158.2.129) smtp.rcpttodomain=amd.com smtp.mailfrom=arm.com; dmarc=pass
 (p=none sp=none pct=100) action=none header.from=arm.com; dkim=pass
 (signature was verified) header.d=arm.com; arc=pass (0 oda=1 ltdi=1
 spf=[1,1,smtp.mailfrom=arm.com] dkim=[1,1,header.d=arm.com]
 dmarc=[1,1,header.from=arm.com])
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=arm.com; s=selector1;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck;
 bh=VylMf0UBcQgkYOUdu4v1mkbxc4ELAyaRNARRuVmJ1b4=;
 b=dkGRItGiuTMXcz5sHL6bxN2yu9l2hsN3NlcxCIzY4/1AHL5cm0KLgv2HcYBqephlCmpdhSMEfm5xIkSpfwY+KN+fhqFhXNlzRI18LkqVCJQ85VHMPy15/NddRkTMocdwIunbEOX1bgJsyGcGquqlLzf7d8yZOqR2yPDfE8X31U8=
X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 4.158.2.129)
 smtp.mailfrom=arm.com; dkim=pass (signature was verified)
 header.d=arm.com;dmarc=pass action=none header.from=arm.com;
Received-SPF: Pass (protection.outlook.com: domain of arm.com designates
 4.158.2.129 as permitted sender) receiver=protection.outlook.com;
 client-ip=4.158.2.129; helo=outbound-uk1.az.dlp.m.darktrace.com; pr=C
ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none;
 b=Gh6ckWfjf6CvD3+lBzD7nBYlpTzq6EVQc8zTg1iq06y3yv7DWSTfh/FgFdyEoOeezpJ3e7Dk6AaM1RvdbZdkOQpMooZx2skOY9654AUp6ia1VkLpdiN1UwyjAraRDRFgvR8PCmeUhl4xupmH28teuemtAvsGZ9ZYTHIu4tKCsxxMlAbV1ES1ZhhAqfOa24okxFeb2iGIMKN2Mt/6utPzp6BdVlz2DfT8XYDu1tunrcZlGLSt46zHrC+OY9XPDLT6OiI0BV3ZzKyuhdwZJSa4Klt818tw1pDybG0TBjWUyEJDeVWGkst8xVjWzT9bds4xzFVjAsUlxCPxJCWpxg1rsg==
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com;
 s=arcselector10001;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1;
 bh=VylMf0UBcQgkYOUdu4v1mkbxc4ELAyaRNARRuVmJ1b4=;
 b=l15DC+xcUCKPcnnc/XLgRFwJkLCfD1TXvq5EyovCajplGoD7UBlgBsH1CzM6y4uPhkqYdVCy2T9i4ujvGy99UWHL52+m9b5Xf4hbUaKfteicW6p9IWJUVdMj2nxWKTyU3ftu8e+bPGirZ2t0/ZRe/+nfaNgSDu/c00Q5Wi97wC1tO0LN1pex2NdNkLpec1Hd+nfBZHydN03lVzmoHuqv9F+0Sh2v2tYV9imIr4E/EOFA3avptIrGv7ex6NI7zjLoTqthA+AjtdVpS+aRDDt53tTuB1C3i+rbDBh1aSibkzhTzhHilEBEQoKwQULNqjEkIngfpDODLv+D1AblBfywew==
ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass
 smtp.mailfrom=arm.com; dmarc=pass action=none header.from=arm.com; dkim=pass
 header.d=arm.com; arc=none
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=arm.com; s=selector1;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck;
 bh=VylMf0UBcQgkYOUdu4v1mkbxc4ELAyaRNARRuVmJ1b4=;
 b=dkGRItGiuTMXcz5sHL6bxN2yu9l2hsN3NlcxCIzY4/1AHL5cm0KLgv2HcYBqephlCmpdhSMEfm5xIkSpfwY+KN+fhqFhXNlzRI18LkqVCJQ85VHMPy15/NddRkTMocdwIunbEOX1bgJsyGcGquqlLzf7d8yZOqR2yPDfE8X31U8=
From: Luca Fancellu <Luca.Fancellu@arm.com>
To: "Orzel, Michal" <Michal.Orzel@amd.com>
CC: Jan Beulich <jbeulich@suse.com>, "xen-devel@lists.xenproject.org"
	<xen-devel@lists.xenproject.org>, Andrew Cooper <andrew.cooper3@citrix.com>,
	Anthony PERARD <anthony.perard@vates.tech>, Julien Grall <julien@xen.org>,
	=?utf-8?B?Um9nZXIgUGF1IE1vbm7DqQ==?= <roger.pau@citrix.com>, Stefano
 Stabellini <sstabellini@kernel.org>
Subject: Re: [PATCH 2/3] xen/common: llc-coloring: Fix off-by-one in
 parse_color_config()
Thread-Topic: [PATCH 2/3] xen/common: llc-coloring: Fix off-by-one in
 parse_color_config()
Thread-Index:
 AQHcyBWdW2bjkWPifku6XWocvaXOWrXWpuWAgAAHZ4CAAADggIAAC5wAgAEjsICAAAHagIAAAQ8A
Date: Fri, 10 Apr 2026 07:08:38 +0000
Message-ID: <3C710768-2AD6-4808-9954-B5C1F414F9EC@arm.com>
References: <20260409113934.197619-1-michal.orzel@amd.com>
 <20260409113934.197619-3-michal.orzel@amd.com>
 <EEF7C308-F25C-46BA-9663-BA789B49429C@arm.com>
 <db87a55a-5bd2-44ab-8814-1ffec91d1b40@suse.com>
 <9A42538E-AB13-488E-9AEF-39CD7E8D3131@arm.com>
 <6093D2A3-1823-4587-BB81-4593AD060D71@arm.com>
 <f9874489-5692-4735-8db4-d320142af9f7@suse.com>
 <3ec5c89b-6429-4bb5-a2b4-585e2feb1685@amd.com>
In-Reply-To: <3ec5c89b-6429-4bb5-a2b4-585e2feb1685@amd.com>
Accept-Language: en-GB, en-US
Content-Language: en-US
X-MS-Has-Attach:
X-MS-TNEF-Correlator:
x-mailer: Apple Mail (2.3826.700.81.1.6)
Authentication-Results-Original: dkim=none (message not signed)
 header.d=none;dmarc=none action=none header.from=arm.com;
x-ms-traffictypediagnostic:
	DU2PR08MB7272:EE_|AM8PR08MB6354:EE_|AMS0EPF00000193:EE_|PR3PR08MB5705:EE_
X-MS-Office365-Filtering-Correlation-Id: b30434b4-ec8b-4d67-d7e6-08de96d022a2
x-checkrecipientrouted: true
nodisclaimer: true
X-MS-Exchange-SenderADCheck: 1
X-MS-Exchange-AntiSpam-Relay: 0
X-Microsoft-Antispam-Untrusted:
 BCL:0;ARA:13230040|376014|1800799024|366016|38070700021|22082099003|56012099003|18002099003;
X-Microsoft-Antispam-Message-Info-Original:
 PyPYxdKp9S/PySD6rhYHrPx8aYdldu1Not+/YxRoofxd3ioPkMQ3QFHluoZeo87g+N454YLgkJYJCjMbos4frXNwqDkMGXeBi1ZUfrxhS6xzc7Ou/zxGzuZHtv4oYY3VLk9KPqy/3d0ToISt5cIDvDoBshMdyEEgwFAkuPdalqaDKeriJFSPvPs92QeYA71ehmVOMP8kh/nGlytyiyzwwy3vRpVIjpR4cpRyn+S7xB9hd2AaAYIczxAAFWlAf8jHFxOXdBO7+jBFeEB6s6LzTbFgHhn9uv6H52HMDzTGVFEWY1n+XwV9gydovBkHnHeD08Uy+vajekUFYxPmp19FAogFB5NI76o4wwb+A6oY15k6MRLkAUNWd/PisptnefZxEGPO3ziWBYE3CuDjMOtJqzZqTbYveRG2FenQkDuebNiIeMK5shFBfKyNX5Nrdiufl0QSU5GDQc4pUjD+PAFcpt0uKyszuzMl33ySHobc7QyfVgnlU91XhpqGQCWkufaYTxMc29+N2HE7RfGQZw4DYxE9yTPl7kP3V/g/DU5q/v+cS3nb9TEejvqFdiQoIO58EdIuLG/nrl2WjQIItMrx0+Vx8oVIVOT+xC3KXlx/CCuN83d8RlGjksivZgogauxqFTL9WG5/lZinl3JVJq/JG9ZKvHw5BUmVgQgoeOachMFosWnjnxZfUmdNpGbhn4GhDB55SX8CQ665MZYxeLKoR6WLapppEB8/80S/7wkatbNWgWPIRHqDgqEYSF2dzBvvdIrJu7UvnkeT6BSovRu77dMu/s5nbK4dj+UODq9paCE=
X-Forefront-Antispam-Report-Untrusted:
 CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:DU2PR08MB7272.eurprd08.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(376014)(1800799024)(366016)(38070700021)(22082099003)(56012099003)(18002099003);DIR:OUT;SFP:1101;
Content-Type: text/plain; charset="utf-8"
Content-ID: <F5B198879471C144A589E2FDD997C229@eurprd08.prod.outlook.com>
Content-Transfer-Encoding: base64
MIME-Version: 1.0
X-Exchange-RoutingPolicyChecked:
 T7ZNltKxjdYCyQKGt7qXCz1NzCRdaDdyj4f55raAZmqI5bT1pjQ0PxJ265u5Xw4BnGFXUSolPo9634ZO66kn5WbmIfaGZd8L9Q/qZUdwDRZsFU/D9vjv9dZiJLzjE/LjxpDsMikg74igFdLrJqx9mFFFzYr48GZOERGQK5YbVEMkmlSIoDMNrUw7U2f8FdS0E6UXrHY4oh/83sVLgto+zzvPkIKtzwPvBwzV4Yzk7Qf5lLDS9sPUAIIG+dTXqLyJ6kAIfsw1Qz05SbxayB4FFw0USK/R0aySPTUeGWkhe0LnqshL3ddaTqGlwdJc2i6C4KA+ai6kMczda6xjztuRoQ==
X-MS-Exchange-Transport-CrossTenantHeadersStamped: AM8PR08MB6354
X-EOPAttributedMessage: 0
X-MS-Exchange-Transport-CrossTenantHeadersStripped:
 AMS0EPF00000193.eurprd05.prod.outlook.com
X-MS-PublicTrafficType: Email
X-MS-Office365-Filtering-Correlation-Id-Prvs:
	db905534-b6cf-4490-bf0d-08de96cffd10
X-Microsoft-Antispam:
	BCL:0;ARA:13230040|14060799003|376014|36860700016|82310400026|35042699022|1800799024|18002099003|22082099003|56012099003;
X-Microsoft-Antispam-Message-Info:
	dYgxRqr3k3Ipqdamxpv43vrMqxjmyYcILpcBnJcCVKsqbfmglcgDVD9UJU9/FSz0csl0h5bD6xjVLyq3HQ0LxDHOjhOJWQQ1ACJ3NIMA5wrNvbMQ7OI3EHjmaqTVbwdzf4/4WwnVqsUMy9vele6eQX/R7nBSKkMZ/l0Fc7d80LzgErVB+S0a2DtrV86FQLUj1eiMkituVDYvsm9YyDhUDoIKsI7qeBf0/U3Y5LNt6m7GWf8eO043DahqYIDpdowQ6P61u+konaPjaiuOv2zGEPLWIoxfdYGDl1pp+J6EibdQQOVs50hKU0mKnSRRykN42R0v4Q3qPL9aITfzSXwefMTickePyeQbP/WOx9KK9Fi/srca+57KG4IBmyugbNHOcsrKpmoWzNGDs6VR2nldSsKld7CXUIT9cckEfV2hkKbFetCeGNAFAfMAqWycqK3+kQqcnJE1z7ZIvzUUnTaZvXU65SfTyNp8Rb/ehzxnFRKe2qCVx/ETcVV4hdDTi5lt2CdmX2lH+XzxwWphEev9J1HD18HtSl4oHQyQTTaEzWJ5JEm8Vzp3wP/sRGml9k+A4YAL1rPiT7iJiGY9en4T+ogy6AjrTIR1SK8BJQ1Bs4t1RPprSnhO/MGejsOJGbv4Gx45joJdsxH7SJdCkeuiL1Kxlzs0iJx8PS9QDjcVRp07yAVhI5Sl+zkklT3blsgCytIlPszOhKvRp6Ab+Lc03LfonDwEpVDAHfCSy1hhCkptcbEUEJWY8+dPC3VswCL9+bPuFpMc/en1Aul9QMi9Lg==
X-Forefront-Antispam-Report:
	CIP:4.158.2.129;CTRY:GB;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:outbound-uk1.az.dlp.m.darktrace.com;PTR:InfoDomainNonexistent;CAT:NONE;SFS:(13230040)(14060799003)(376014)(36860700016)(82310400026)(35042699022)(1800799024)(18002099003)(22082099003)(56012099003);DIR:OUT;SFP:1101;
X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1
X-MS-Exchange-AntiSpam-MessageData-0:
	I2R7pj38G8ogyscgcVhE6CXMQuGhtltUr6QSmU1+U491i4s6hXKT/Ph2tMssgwaZE/eayQtxlDd7AylykZNXxOLTL49A619sv9cu7eA/58uZkaPSRaoU0CEQxLCxNeZoMyusBvz5164GUC7iXuHLO253gsp5sJ9DVnmcyZyiku4jWa0Pirp+ul46TWFwpzRoW2WEJxoiqDLmkwWVuxxQSbLPe487S+TKNcc2yqbGpGuF7Hi5hFlXovXnGmnIY+i55z2nXJc4u2hJzQ2WykkQO/xbUOxYpY+Q0m2/igRJENr/OZ2X3nNlizF5sF8sSSAzltXX9i1PSh7ddGDCo1Kjt6JQNLVEU+K/A12UNY6EfIASFU6QmIA643hYF8nWLpQRu/CWjfF7iJe2FHrijigSl+rNvku9Xt7Sf5Xw0GM3EidOiEVfUtjslpeBJpJ34OFY
X-OriginatorOrg: arm.com
X-MS-Exchange-CrossTenant-OriginalArrivalTime: 10 Apr 2026 07:09:41.0587
 (UTC)
X-MS-Exchange-CrossTenant-Network-Message-Id: b30434b4-ec8b-4d67-d7e6-08de96d022a2
X-MS-Exchange-CrossTenant-Id: f34e5979-57d9-4aaa-ad4d-b122a662184d
X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=f34e5979-57d9-4aaa-ad4d-b122a662184d;Ip=[4.158.2.129];Helo=[outbound-uk1.az.dlp.m.darktrace.com]
X-MS-Exchange-CrossTenant-AuthSource:
	AMS0EPF00000193.eurprd05.prod.outlook.com
X-MS-Exchange-CrossTenant-AuthAs: Anonymous
X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem
X-MS-Exchange-Transport-CrossTenantHeadersStamped: PR3PR08MB5705
X-purgate-ID: tlsNG-c1860d/1775804986-77746497-ECC17274/0/0
X-purgate-type: clean
X-purgate-size: 4344

DQoNCj4gT24gMTAgQXByIDIwMjYsIGF0IDA4OjA0LCBPcnplbCwgTWljaGFsIDxNaWNoYWwuT3J6
ZWxAYW1kLmNvbT4gd3JvdGU6DQo+IA0KPiANCj4gDQo+IE9uIDEwLzA0LzIwMjYgMDg6NTcsIEph
biBCZXVsaWNoIHdyb3RlOg0KPj4gT24gMDkuMDQuMjAyNiAxNTozNCwgTHVjYSBGYW5jZWxsdSB3
cm90ZToNCj4+Pj4gT24gOSBBcHIgMjAyNiwgYXQgMTM6NTIsIEx1Y2EgRmFuY2VsbHUgPEx1Y2Eu
RmFuY2VsbHVAYXJtLmNvbT4gd3JvdGU6DQo+Pj4+PiBPbiA5IEFwciAyMDI2LCBhdCAxMzo0OCwg
SmFuIEJldWxpY2ggPGpiZXVsaWNoQHN1c2UuY29tPiB3cm90ZToNCj4+Pj4+IE9uIDA5LjA0LjIw
MjYgMTQ6MjIsIEx1Y2EgRmFuY2VsbHUgd3JvdGU6DQo+Pj4+Pj4+IE9uIDkgQXByIDIwMjYsIGF0
IDEyOjM5LCBNaWNoYWwgT3J6ZWwgPG1pY2hhbC5vcnplbEBhbWQuY29tPiB3cm90ZToNCj4+Pj4+
Pj4gDQo+Pj4+Pj4+IFRoZSBjaGVjayB1c2VzID49IHRvIGNvbXBhcmUgdGhlIHRvdGFsIG51bWJl
ciBvZiBjb2xvcnMgYWdhaW5zdA0KPj4+Pj4+PiBtYXhfbnVtX2NvbG9ycyAod2hpY2ggaXMgQVJS
QVlfU0laRSBvZiB0aGUgY29sb3JzIGFycmF5KS4gIFRoaXMNCj4+Pj4+Pj4gaW5jb3JyZWN0bHkg
cmVqZWN0cyBpbnB1dCB0aGF0IHdvdWxkIGV4YWN0bHkgZmlsbCB0aGUgYXJyYXkuDQo+Pj4+Pj4+
IA0KPj4+Pj4+PiBGb3IgZXhhbXBsZSwgd2l0aCBOUl9MTENfQ09MT1JTPTE2LCBzcGVjaWZ5aW5n
IDEgY29sb3IgZm9yIFhlbiBhbmQgMTUNCj4+Pj4+Pj4gZm9yIGRvbTAgd291bGQgZmFpbC4NCj4+
Pj4+Pj4gDQo+Pj4+Pj4+IENoYW5nZSA+PSB0byA+IHNvIHRoYXQgZXhhY3RseSBmaWxsaW5nIHRo
ZSBhcnJheSBpcyBwZXJtaXR0ZWQuDQo+Pj4+Pj4+IA0KPj4+Pj4+PiBGaXhlczogOTVlZjVkZGY4
YSAoInhlbi9hcm06IGFkZCBEb20wIGNhY2hlIGNvbG9yaW5nIHN1cHBvcnQiKQ0KPj4+Pj4+PiBT
aWduZWQtb2ZmLWJ5OiBNaWNoYWwgT3J6ZWwgPG1pY2hhbC5vcnplbEBhbWQuY29tPg0KPj4+Pj4+
PiAtLS0NCj4+Pj4+PiANCj4+Pj4+PiBSZXZpZXdlZC1ieTogTHVjYSBGYW5jZWxsdSA8bHVjYS5m
YW5jZWxsdUBhcm0uY29tPg0KPj4+Pj4gDQo+Pj4+PiBEaWQgeW91IHNlZSBBbmRyZXcncyByZXBs
eT8gSWYgdGhhdCBlYXJsaWVyIChyZWNlbnQpIGNvbW1pdCB3YXMgd3JvbmcsIEkNCj4+Pj4+IHRo
aW5rIGEgMm5kIEZpeGVzOiB0YWcgbWF5IGJlIG5lZWRlZCBoZXJlLiBGb3Igbm93IEkgY2FuJ3Qg
aGVscCB0aGUNCj4+Pj4+IGltcHJlc3Npb24gdGhvdWdoIHRoYXQgdGhlcmUgbWlnaHQgaGF2ZSBi
ZWVuIGEgcmUtYmFzaW5nIG1pc3Rha2UsIHdoZXJlDQo+Pj4+PiB0aGF0IHJlLWJhc2UgbWF5IGhh
dmUgd2FudGVkIHRvIHJlc3VsdCBpbiB0aGlzIHBhdGNoIGRpc3NvbHZpbmcgaW50bw0KPj4+Pj4g
bm90aGluZy4gWWV0IG9mIGNvdXJzZSBJJ20gYWxsIGVhcnMgdG8gbGVhcm4gb3RoZXJ3aXNlLg0K
Pj4+PiANCj4+Pj4gT2gsIG5vIEkgZGlkbuKAmXQgc2VlIHRoYXQhIFRoYW5rcyBmb3IgcG9pbnRp
bmcgdGhhdCBvdXQsIEkgd2lsbCBoYXZlIGEgY2xvc2VyIGxvb2suDQo+Pj4gDQo+Pj4gDQo+Pj4g
SSBoYWQgYSBjbG9zZXIgbG9vaywgSSBmZWVsIHRoYXQgdGhlIHBhdGNoIGlzIG9rIGFuZCBjb21t
aXQgY2JhOGE1ODRkZTE3MWM4YzQ1MTA3MDljMmVkYzlmMWNmODZiMjFhYg0KPj4+IHdhcyBtaXNz
aW5nIHRoaXMgY29ybmVyIGNhc2UuDQo+PiANCj4+IElmIGFueXRoaW5nLCB0aGF0IHBhcnQgb2Yg
dGhlIGNoYW5nZSB0aGVyZSB3YXMgb3V0cmlnaHQgd3JvbmcgKGFuZCBoZW5jZSwgYXMNCj4+IHNh
aWQsIGEgMm5kIEZpeGVzOiB0YWcgW2FjdHVhbGx5LCBzZWUgYmVsb3csIHNpbXBseSBhbm90aGVy
IG9uZV0gaXMgbmVlZGVkKS4NCj4+IFdpdGggb3ZlcmZsb3cgZXhjbHVkZWQsDQo+PiANCj4+ICAg
ICgqbnVtX2NvbG9ycyArIChlbmQgLSBzdGFydCArIDEpKSA+IG1heF9udW1fY29sb3JzDQo+PiAN
Cj4+IGlzIHRoZSBzYW1lIGFzDQo+PiANCj4+ICAgKCpudW1fY29sb3JzICsgKGVuZCAtIHN0YXJ0
KSkgPj0gbWF4X251bV9jb2xvcnMNCj4+IA0KPj4gaS5lLiB0aGUgc3RhdGUgYmVmb3JlIHRoYXQg
Y2hhbmdlLCBpc24ndCBpdD8NCj4+IA0KPj4gQW5kIHllcywgbm93IHRoYXQgSSBsb29rIGFnYWlu
IEkgdGhpbmsgSSBhZ3JlZSB0aGF0IEkgc2NyZXdlZCB1cCB0aGVyZS4gWWV0DQo+PiB0aGVuIHRo
ZSAoaW1vKSBiZXR0ZXIgZml4IHdvdWxkIGJlIHRvIHVuZG8gdGhhdCBjaGFuZ2UsIHJhdGhlciB0
aGFuIHN3aXRjaGluZw0KPj4gZnJvbSA+PSB0byA+IC4gVGhhdCdzIG9uZSBsZXNzIGNhbGN1bGF0
aW9uIG92ZXJhbGwuIE1pY2hhbD8NCj4gWWVzLCBJIGRvIGFncmVlLiBUaGlzIHBhdGNoIGNhbiBi
ZSBtb2RpZmllZCB0byBqdXN0IGRvOg0KPiANCj4gZGlmZiAtLWdpdCBhL3hlbi9jb21tb24vbGxj
LWNvbG9yaW5nLmMgYi94ZW4vY29tbW9uL2xsYy1jb2xvcmluZy5jDQo+IGluZGV4IGViN2M3MmIy
NDAyMy4uNmRjNjE0NzM5YTk4IDEwMDY0NA0KPiAtLS0gYS94ZW4vY29tbW9uL2xsYy1jb2xvcmlu
Zy5jDQo+ICsrKyBiL3hlbi9jb21tb24vbGxjLWNvbG9yaW5nLmMNCj4gQEAgLTc4LDcgKzc4LDcg
QEAgc3RhdGljIGludCBfX2luaXQgcGFyc2VfY29sb3JfY29uZmlnKGNvbnN0IGNoYXIgKmJ1Ziwg
dW5zaWduZWQNCj4gaW50IGNvbG9yc1tdLA0KPiANCj4gICAgICAgICBpZiAoIGVuZCA+PSBOUl9M
TENfQ09MT1JTIHx8IHN0YXJ0ID4gZW5kIHx8DQo+ICAgICAgICAgICAgICAoZW5kIC0gc3RhcnQp
ID49IChVSU5UX01BWCAtICpudW1fY29sb3JzKSB8fA0KPiAtICAgICAgICAgICAgICgqbnVtX2Nv
bG9ycyArIChlbmQgLSBzdGFydCArIDEpKSA+PSBtYXhfbnVtX2NvbG9ycyApDQo+ICsgICAgICAg
ICAgICAgKCpudW1fY29sb3JzICsgKGVuZCAtIHN0YXJ0KSkgPj0gbWF4X251bV9jb2xvcnMgKQ0K
PiAgICAgICAgICAgICByZXR1cm4gLUVJTlZBTDsNCj4gDQo+ICAgICAgICAgLyogQ29sb3JzIGFy
ZSByYW5nZSBjaGVja2VkIGluIGNoZWNrX2NvbG9ycygpICovDQo+IA0KPiBJJ2xsIGRvIHRoYXQg
bGF0ZXIgb24uDQo+IA0KPiB+TWljaGFsDQo+IA0KDQpGZWVsIGZyZWUgdG8ga2VlcCBteSBSLWJ5
IGZvciB0aGlzIGNoYW5nZS4NCg0KQ2hlZXJzLA0KTHVjYQ0KDQo=


From xen-devel-bounces@lists.xenproject.org Fri Apr 10 07:50:08 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Fri, 10 Apr 2026 07:50:08 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1278423.1563265 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wB6cr-0006iG-7m; Fri, 10 Apr 2026 07:50:01 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1278423.1563265; Fri, 10 Apr 2026 07:50: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 1wB6cr-0006i9-5I; Fri, 10 Apr 2026 07:50:01 +0000
Received: by outflank-mailman (input) for mailman id 1278423;
 Fri, 10 Apr 2026 07:49:59 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <xakep.amatop@gmail.com>) id 1wB6cp-0006i1-Nf
 for xen-devel@lists.xenproject.org; Fri, 10 Apr 2026 07:49:59 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wB6co-00EiYD-Ig
 for xen-devel@lists.xenproject.org; Fri, 10 Apr 2026 09:49:58 +0200
Received: from [10.42.69.11] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <xakep.amatop@gmail.com>)
 id 69d8ab9e-2eae-0a2a0a5409dd-0a2a450b909e-38
 for <xen-devel@lists.xenproject.org>; Fri, 10 Apr 2026 09:49:58 +0200
Received: from [209.85.208.42] (helo=mail-ed1-f42.google.com)
 by tlsNG-42698a.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.0)
 (envelope-from <xakep.amatop@gmail.com>)
 id 69d8aba6-bca8-0a2a450b0019-d155d02ac8a0-3
 for <xen-devel@lists.xenproject.org>; Fri, 10 Apr 2026 09:49:58 +0200
Received: by mail-ed1-f42.google.com with SMTP id
 4fb4d7f45d1cf-66bf6aa4858so3072959a12.2
 for <xen-devel@lists.xenproject.org>; Fri, 10 Apr 2026 00:49:58 -0700 (PDT)
Received: from EPUAKYIW02F7.. ([45.12.25.238])
 by smtp.gmail.com with ESMTPSA id
 4fb4d7f45d1cf-67070815a42sm368027a12.20.2026.04.10.00.49.56
 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
 Fri, 10 Apr 2026 00:49:56 -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=20251104 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=20251104; t=1775807397; x=1776412197; 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;
        bh=n+EXbWGUDwbEcBGBEf2DzWW8z16Qu56Rn+KZMcPNwyI=;
        b=L2S/5qN+luWgJ5ftZP6IJLLa6JMib7VpP8cIUhlJA0nEGDtqEVc6BrAvE2Ti6VcHno
         Qeyuv4CXzy5xJeQ6i2YSjYDj+e8wcin/OkceeH/NThHOXRPbrBiGW09BCutvXrN3Z6Af
         V6l8VPuku3xj3ESIKZXRFNl/LRxihWthqyZ827sme++zwmGs0YHIzK7m9E5BeK7vr9ev
         yjO4krgc6nNMuG95CucDhOGtnv0EsgYkLB19jM9yt38ZZi4dZ0H9L/qH6pCZsQ4PLLzC
         YNqeu5O8k2wQbmZWa5Ba4554uM8Tniv2/M3vWboxh3fZJQmT/7u95dDDS61h5pBDsw+t
         9jUw==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20251104; t=1775807397; x=1776412197;
        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;
        bh=n+EXbWGUDwbEcBGBEf2DzWW8z16Qu56Rn+KZMcPNwyI=;
        b=BanY7LcTFpvB4hprsFsoyaKtTRWAJ6WsN0aE+ZPWd37Tjzk5ZmHcxf5MCk3bvxkpH7
         YbqKXrOV9/8sfQpcgxKioAZd0j1QMmTXMhThmd+iM7EKqbI3Zv5EtJ1+fyblAll+oCmn
         69S6EZ0cTPPegyOYX5tmP9isod4Z3RVMgO9clfsRtjxTgSQzLagV/k2ZiXsQtJorujJw
         52Nf9RJiVr7mVY3qMi3Bceto0dYBjhH247LeaXHpILJND3T76Gqu3lXDy0kRuSvn1tn6
         iGOuUuk/FaTOXy4+35JaEcx7Mrmkd6igcUP4BR11xxOVIzbkrEyspj3kr8ORKil44Hl+
         DY9A==
X-Gm-Message-State: AOJu0YyD79osz1REe7HR8VxXVwF8Yj/w2EmvcJ6y5sDgC5NmouzBAwNk
	cDdSUJ/9sa8vdqGEpl9Y6OY2ACgP7BZepKXjZpbGPWm4zpGuWYsWzEV2Qq3dn02t
X-Gm-Gg: AeBDietXhRCUWxuaYhSe2oVDT72Sfpny8+c+PT3U+/qfCVwk1JLtPyp0SYnbToClgtw
	9zkjzM6+6CcmRBE0pvKX0vdawQF4sss/Bg8+YfC2u4sXuTWOAd8uSUbKsM5t7D2uTK2wkR+9ZYb
	L3GA0wSVJE6TciYZmpuyhpocdX+Yf3zmpcmE9GBVoY5sWoR3tz56RwdtHgsGC7EAI0E1K6d9qnr
	E57yfnBuk7mPvodSijSqCxKJFi6x/DZN+/TLE9kmWRMAU6YXm2oTmzGvHv1VsY8jjmxnP+UolNm
	zNuoflufLa+G19kc6bcMfbWC5TXWhGTBWULm+b8K9PcLo8oSWcyTJ1OYpNMCfxe59Yj9PGq6kBV
	aPVIdSrwhrSKq+XuIS4PQkAV0u1kJokCAJ9orAI/BJvJrueWqxzs2eBfbjzVJDXD2iRZF8dPPKq
	2nJb2aTZLq7lzF3HHpmxaqg5EJZUA=
X-Received: by 2002:a05:6402:24d0:b0:66e:8ca6:e79f with SMTP id 4fb4d7f45d1cf-6707a854df2mr723439a12.13.1775807397222;
        Fri, 10 Apr 2026 00:49:57 -0700 (PDT)
From: Mykola Kvach <xakep.amatop@gmail.com>
To: xen-devel@lists.xenproject.org
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>
Subject: [PATCH] xen/arm: gic-v3: disable Group 1 before CPU power-down
Date: Fri, 10 Apr 2026 10:47:45 +0300
Message-ID: <1952e52fd60fdd762862e74dbd522fcd7c65284a.1775804338.git.mykola_kvach@epam.com>
X-Mailer: git-send-email 2.43.0
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit
X-purgate-ID: tlsNG-42698a/1775807398-F63C62A1-978ACB81/0/0
X-purgate-type: clean
X-purgate-size: 1278

From: Mykola Kvach <mykola_kvach@epam.com>

gicv3_cpu_disable() currently writes 0 to ICC_CTLR_EL1. Unlike
GICC_CTLR in the GICv2 path, ICC_CTLR_EL1 does not enable or disable
physical Group 1 interrupt signalling, so this write only clears
EOImode.

The GICv3 power management rules require the physical group enables in
the CPU interface to be cleared before the redistributor is driven into
ProcessorSleep, otherwise behaviour is UNPREDICTABLE. Xen only enables
Group 1 interrupts on this path, so disable the interface by clearing
ICC_IGRPEN1_EL1 instead.

This appears to be a copy of the GICv2 pattern where the enable control
lives in CTLR, but for GICv3 the enable moved to ICC_IGRPEN1_EL1.

Fixes: bc183a0235e ("xen/arm: Add support for GIC v3")
Signed-off-by: Mykola Kvach <mykola_kvach@epam.com>
---
 xen/arch/arm/gic-v3.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/xen/arch/arm/gic-v3.c b/xen/arch/arm/gic-v3.c
index bc07f97c16..4f0852be2f 100644
--- a/xen/arch/arm/gic-v3.c
+++ b/xen/arch/arm/gic-v3.c
@@ -1028,7 +1028,7 @@ static int gicv3_cpu_init(void)
 
 static void gicv3_cpu_disable(void)
 {
-    WRITE_SYSREG(0, ICC_CTLR_EL1);
+    WRITE_SYSREG(0, ICC_IGRPEN1_EL1);
     isb();
 }
 
-- 
2.43.0



From xen-devel-bounces@lists.xenproject.org Fri Apr 10 08:16:45 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Fri, 10 Apr 2026 08:16:45 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1278451.1563275 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wB72Q-0002mu-LI; Fri, 10 Apr 2026 08:16:26 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1278451.1563275; Fri, 10 Apr 2026 08:16: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 1wB72Q-0002mn-IJ; Fri, 10 Apr 2026 08:16:26 +0000
Received: by outflank-mailman (input) for mailman id 1278451;
 Fri, 10 Apr 2026 08:16:25 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <bounce-md_30504962.69d8b1d6.v1-5a7d847fa67b46e4afbeb5fbdefc1df7@bounce.vates.tech>)
 id 1wB72P-0002mR-8q
 for xen-devel@lists.xenproject.org; Fri, 10 Apr 2026 08:16:25 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wB72O-00EoTW-Ky
 for xen-devel@lists.xenproject.org; Fri, 10 Apr 2026 10:16:24 +0200
Received: from [10.42.69.2] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1) (envelope-from
 <bounce-md_30504962.69d8b1d6.v1-5a7d847fa67b46e4afbeb5fbdefc1df7@bounce.vates.tech>)
 id 69d8b1cc-e002-0a2a0a5209dd-0a2a4502d3be-44
 for <xen-devel@lists.xenproject.org>; Fri, 10 Apr 2026 10:16:24 +0200
Received: from [198.2.187.14] (helo=mail187-14.suw11.mandrillapp.com)
 by tlsNG-720697.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.0)
 (envelope-from
 <bounce-md_30504962.69d8b1d6.v1-5a7d847fa67b46e4afbeb5fbdefc1df7@bounce.vates.tech>)
 id 69d8b1d7-42fa-0a2a45020019-c602bb0e96fa-3
 for <xen-devel@lists.xenproject.org>; Fri, 10 Apr 2026 10:16:24 +0200
Received: from pmta09.mandrill.prod.suw01.rsglab.com (localhost [127.0.0.1])
 by mail187-14.suw11.mandrillapp.com (Mailchimp) with ESMTP id
 4fsV4l0BDGz8XS3yB
 for <xen-devel@lists.xenproject.org>; Fri, 10 Apr 2026 08:16:23 +0000 (GMT)
Received: from [37.26.189.201] by mandrillapp.com id
 5a7d847fa67b46e4afbeb5fbdefc1df7; Fri, 10 Apr 2026 08:16: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=mte1 header.d=mandrillapp.com header.i="@mandrillapp.com" header.h="From:Subject:Message-Id:To:Cc:References:In-Reply-To:Feedback-ID:Date:MIME-Version:Content-Type:Content-Transfer-Encoding"; dkim=pass header.s=mte1 header.d=vates.tech header.i="thierry.escande@vates.tech" header.h="From:Subject:Message-Id:To:Cc:References:In-Reply-To:Feedback-ID:Date:MIME-Version:Content-Type:Content-Transfer-Encoding"
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=mandrillapp.com;
	s=mte1; t=1775808983; x=1776078983;
	bh=ONfxNDiXYC98hlXu/atW+mLoY8BTnDa/ULY8H6DvHW0=;
	h=From:Subject:Message-Id:To:Cc:References:In-Reply-To:Feedback-ID:
	 Date:MIME-Version:Content-Type:Content-Transfer-Encoding:CC:Date:
	 Subject:From;
	b=VOv7EPHi8MaWZkoFyDFlMhlUABQGxvolujowi0c2XmN+BcZjr+kdj83+vyYhW2J8/
	 A0jg8JceNyvTDrhtuOlz/LG4scLt/uk6eJO/MjoKWIeeyyp86tSbAaCzUsI2K2lzNw
	 XEiu7Gf/4HUGRlj+w6pFK1ImapK5n3w6N2kRN//0Kz/1DmlKfK0dRPbSbJkiUyRwXG
	 4gAXb4p+HUKz8Ih8a+IrWoIpXZ2OYsS4DW/prnas6+VgmAnyOdV4XCypefGxArwff1
	 7SdYUI+pNrC87FYV5Iufkbuhmx3ZXXJ9TuZ5K3h1pLJ3t8Rrd3d0KISBSwsPXG6Ihl
	 k1dQLshfpM56g==
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=vates.tech; s=mte1;
	t=1775808983; x=1776069483; i=thierry.escande@vates.tech;
	bh=ONfxNDiXYC98hlXu/atW+mLoY8BTnDa/ULY8H6DvHW0=;
	h=From:Subject:Message-Id:To:Cc:References:In-Reply-To:Feedback-ID:
	 Date:MIME-Version:Content-Type:Content-Transfer-Encoding:CC:Date:
	 Subject:From;
	b=OTErO7Cv8b/R/QK1XJPs3PPPX4Rnl6L+1ngLhVZWNuVDFm7nBsnEjSYrqtT57A84W
	 mPvQBcYVcEh1EvGHRmussML2YQCTdbmsVA5hlW2y8EvTdhvbIJSzToXJdUNFJcH7Ak
	 a/ZYjwXGeJhJR+FNcQkGlzTgpdJwahP92IDjHssCFmjOomzXrREmotz3Es5HAtK5Y6
	 vvxyv9KGmsZChRIDRd5TpA7irxIqSApengCu3fQLQqPpzyQDKtcVSdCXWsejOO7d4I
	 /MV1ONsBkR8oy/k9tmpI+y4D5HWRHYSFM2FIWza3/Tu482VMjIKREBnuCUmP4wPwQx
	 bKDn9plJEzWKg==
From: "Thierry Escande" <thierry.escande@vates.tech>
Subject: =?utf-8?Q?Re:=20[RFC=20PATCH=20v2=200/3]=20xl:=20Allow=20PCI=20devices=20to=20be=20passthrough'd=20via=20Qemu=20command=20line?=
X-Bm-Disclaimer: Yes
X-Bm-Milter-Handled: 4ffbd6c1-ee69-4e1b-aabd-f977039bd3e2
X-Bm-Transport-Timestamp: 1775808981974
Message-Id: <a0625b73-f5f2-4526-891a-60efad726cd2@vates.tech>
To: "=?utf-8?Q?Marek=20Marczykowski-G=C3=B3recki?=" <marmarek@invisiblethingslab.com>
Cc: xen-devel@lists.xenproject.org, "Anthony PERARD" <anthony.perard@vates.tech>, "Juergen Gross" <jgross@suse.com>, "=?utf-8?Q?Daniel=20P.=20Berrang=C3=A9?=" <berrange@redhat.com>
References: <20260409162000.1102680-1-thierry.escande@vates.tech> <adhKlLvMB6PCRhwQ@mail-itl>
In-Reply-To: <adhKlLvMB6PCRhwQ@mail-itl>
X-Native-Encoded: 1
X-Report-Abuse: =?UTF-8?Q?Please=20forward=20a=20copy=20of=20this=20message,=20including=20all=20headers,=20to=20abuse@mandrill.com.=20You=20can=20also=20report=20abuse=20here:=20https://mandrillapp.com/contact/abuse=3Fid=3D30504962.5a7d847fa67b46e4afbeb5fbdefc1df7?=
X-Mandrill-User: md_30504962
Feedback-ID: 30504962:30504962.20260410:md
Date: Fri, 10 Apr 2026 08:16:22 +0000
MIME-Version: 1.0
Content-Type: text/plain; charset=utf-8
Content-Transfer-Encoding: quoted-printable
X-purgate-ID: tlsNG-720697/1775808984-AE33BCD1-C5EB6E18/0/0
X-purgate-type: clean
X-purgate-size: 2310



On 4/10/26 02:55, Marek Marczykowski-G=C3=B3recki wrote:
> On Thu, Apr 09, 2026 at 04:20:57PM +0000, Thierry Escande wrote:
>> This series adds support for a new 'hotplug' option for PCI devices to b=
e
>> passthrough'd to guests.
>>
>> The current mechanism for device passthrough uses QMP device_add command
>> to hot-plug PCI devices to the guest Qemu instance. This is an issue for
>> guests running on Q35 chipset (preliminary support posted at [1]) since =
the
>> Q35 PCI root bus does not support hotplug. Devices could be hotplugged t=
o
>> a secondary PCI bus but Xen only support 1 PCI bus for now.
>>
>> The 'hotplug' option allows to control how devices are attached to the
>> guest, either by using the legacy QMP mechanism (this is the default) or=
 by
>> passing it directly to the Qemu command line using xen-pci-passthrough
>> device.
>>
>> Example usage in cfg file:
>>  pci =3D [ "00:03.0,seize=3D1,hotplug=3D0" ]
>>
>> Since Qemu -device option accepts parameters in json format, this
>> patchset adds a new internal function libxl__device_pci_get_qmp_json() t=
hat
>> generates the device json object used for both QMP hotplug and command l=
ine
>> passing.
>> Also, the function libxl_pci_assignable() is made available from libxl.h
>> for access in libxl_dm.c. I don't know if it's ok to make it public or i=
f
>> it should stay private. Maybe it should be renamed as
>> libxl_device_pci_assignable() to match the other PCI device APIs.
>>
>> This has been successfully tested on Xen 4.22-dev and Qemu 10.0 running
>> Debian VMs in both Bios and UEFI mode with a passthrough'd nvme disk.
>> Disabling the hotplug mechanism might be made mandatory for Q35 machines
>> later, once Q35 support is merged upstream.
>>
>> [1] https://lore.kernel.org/xen-devel/20260313163455.790692-1-thierry.es=
cande@vates.tech/
> 
> I don't see relevant device option added to the QEMU cmdline:
> https://gitlab.com/xen-project/people/marmarek/xen/-/jobs/13860278916
> 
My bad. The code that adds the -device option is not in the correct code
block. (bad copy/paste at some point I guess...). v3 on its way.

Regards,
Thierry


--
Thierry Escande | Vates XCP-ng Developer

XCP-ng & Xen Orchestra - Vates solutions

web: https://vates.tech




From xen-devel-bounces@lists.xenproject.org Fri Apr 10 08:18:08 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Fri, 10 Apr 2026 08:18:08 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1278460.1563283 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wB743-0003JX-Vs; Fri, 10 Apr 2026 08:18:07 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1278460.1563283; Fri, 10 Apr 2026 08:18: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 1wB743-0003JO-Sz; Fri, 10 Apr 2026 08:18:07 +0000
Received: by outflank-mailman (input) for mailman id 1278460;
 Fri, 10 Apr 2026 08:18:06 +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 1wB742-0003JE-FW
 for xen-devel@lists.xenproject.org; Fri, 10 Apr 2026 08:18:06 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wB741-00Dg9G-NN
 for xen-devel@lists.xenproject.org; Fri, 10 Apr 2026 10:18:05 +0200
Received: from [10.42.69.1] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <Michal.Orzel@amd.com>)
 id 69d8b232-e002-0a2a0a5209dd-0a2a4501ca4a-46
 for <xen-devel@lists.xenproject.org>; Fri, 10 Apr 2026 10:18:05 +0200
Received: from [40.93.195.58]
 (helo=SN4PR2101CU001.outbound.protection.outlook.com)
 by tlsNG-d62444.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.0)
 (envelope-from <Michal.Orzel@amd.com>)
 id 69d8b23b-6fc9-0a2a45010019-285dc33a4f97-3
 for <xen-devel@lists.xenproject.org>; Fri, 10 Apr 2026 10:18:04 +0200
Received: from DM6PR02CA0130.namprd02.prod.outlook.com (2603:10b6:5:1b4::32)
 by SN7PR12MB8060.namprd12.prod.outlook.com (2603:10b6:806:343::15) with
 Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9791.33; Fri, 10 Apr
 2026 08:17:59 +0000
Received: from DS1PEPF00017097.namprd05.prod.outlook.com
 (2603:10b6:5:1b4:cafe::4f) by DM6PR02CA0130.outlook.office365.com
 (2603:10b6:5:1b4::32) with Microsoft SMTP Server (version=TLS1_3,
 cipher=TLS_AES_256_GCM_SHA384) id 15.20.9769.41 via Frontend Transport; Fri,
 10 Apr 2026 08:17:48 +0000
Received: from satlexmb08.amd.com (165.204.84.17) by
 DS1PEPF00017097.mail.protection.outlook.com (10.167.18.101) with Microsoft
 SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id
 15.20.9769.17 via Frontend Transport; Fri, 10 Apr 2026 08:17:58 +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.17; Fri, 10 Apr
 2026 03:17:57 -0500
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.17; Fri, 10 Apr
 2026 03:17:56 -0500
Received: from [10.252.147.171] (10.180.168.240) by satlexmb07.amd.com
 (10.181.42.216) with Microsoft SMTP Server id 15.2.2562.17 via Frontend
 Transport; Fri, 10 Apr 2026 03:17:55 -0500
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@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=UZyBagpZ8thPVtwgfCdsAiLuMqdNpIDpI/Yd+xTykjpfPPPrr4FQObDRdxW41CUoeQvidsp3C8FajlacCJiqP4mDZL/Vq08y6rRDJvHCZru42+Yb2H6dvUirmIDKvjtDL08Kqm28j9HPNnTUV8Gi3orQoNimeaULPYgNfPDppUQ1aBs2vI59ZszXo0ePKy9a4UKQsH7I0bNkX63/KGpQFpT3fpvIyK/kvC4aqP9Q7ppE3nIttAx8dRdGnmDiGqE3LM7mAGb506CwhyKzD5oIHk0AYdL006bbbFL7goB7n4Lu6UogQu72t5B6t4x05cyEgSU1RwjX3hU1WGDXsnyZcA==
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com;
 s=arcselector10001;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1;
 bh=AJ4vFQGsTijPQ8o9EfLIPm34Z4sNLTGNEjmBxusjr9c=;
 b=Hw2XlIsZm4kQteR/IPs3UMnDGF1xGi+LH2XNVFTkBGDRrQUZqFLe0cPSTB9y1wEiEOX/pDcCIsJZFp03ON4OEdQAMGdaRcaNKAGJcU9rEWutjIpUQx1Xr6+13lS4TNxHNrXsX3Jcn6SkKGemUV1QUz93JWYxJRRTPwSctDjRTksIy2Zz3k+iyoAHcOla6UDZMxQnIX0DBiGAQlW4uN0SzAx5i7nP7jNINCu9M+4N/ssDq1R1iAlzibsLExzxDlQvZoRPlfZQwVTCNKSFbIQRvomNnmDOU9DmW3lCKgH3gdsnm6+SKWtQXdwNQgY4dd4xl+3RVbgu/LJPeUrzw5V/Ag==
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=AJ4vFQGsTijPQ8o9EfLIPm34Z4sNLTGNEjmBxusjr9c=;
 b=i9xFcTE0tZQs62a6iR1oOs/5KqGjQpRExgWOOVqmq753txLeJKCdwJ1NhN5Uh8l2sbTIi9ZuUgJrJYLFkSkAG5ahBwNihCdbTNHnpXccIcvG2zV9xE7wVd18YfxVbNujyFQu2dGACg5mTemfmvjVcFAwKqJk+SF73Gt92dArJIk=
X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 165.204.84.17)
 smtp.mailfrom=amd.com; dkim=none (message not signed)
 header.d=none;dmarc=pass action=none header.from=amd.com;
Received-SPF: Pass (protection.outlook.com: domain of amd.com designates
 165.204.84.17 as permitted sender) receiver=protection.outlook.com;
 client-ip=165.204.84.17; helo=satlexmb08.amd.com; pr=C
Message-ID: <feb0d309-2165-44d3-9241-d7d5b0ba8113@amd.com>
Date: Fri, 10 Apr 2026 10:17:55 +0200
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH] xen/arm: gic-v3: disable Group 1 before CPU power-down
To: Mykola Kvach <xakep.amatop@gmail.com>, <xen-devel@lists.xenproject.org>
CC: Mykola Kvach <mykola_kvach@epam.com>, Stefano Stabellini
	<sstabellini@kernel.org>, Julien Grall <julien@xen.org>, Bertrand Marquis
	<bertrand.marquis@arm.com>, Volodymyr Babchuk <Volodymyr_Babchuk@epam.com>
References: <1952e52fd60fdd762862e74dbd522fcd7c65284a.1775804338.git.mykola_kvach@epam.com>
From: "Orzel, Michal" <michal.orzel@amd.com>
Content-Language: en-US
In-Reply-To: <1952e52fd60fdd762862e74dbd522fcd7c65284a.1775804338.git.mykola_kvach@epam.com>
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: 7bit
X-EOPAttributedMessage: 0
X-MS-PublicTrafficType: Email
X-MS-TrafficTypeDiagnostic: DS1PEPF00017097:EE_|SN7PR12MB8060:EE_
X-MS-Office365-Filtering-Correlation-Id: edc9df11-769d-4aa3-2b1d-08de96d9ad27
X-MS-Exchange-SenderADCheck: 1
X-MS-Exchange-AntiSpam-Relay: 0
X-Microsoft-Antispam:
	BCL:0;ARA:13230040|36860700016|82310400026|376014|1800799024|56012099003|22082099003|18002099003;
X-Microsoft-Antispam-Message-Info:
	aWElD4cq2XQxH+zUXy+U3Sw2i2Ori+L49VqgUmWtmEtbhUmLWi+q7lbhLTSuPnMITzPxR6N25TnGKyuUjUmnGBExQGNftDBWPeBk8paogoOwEzgQkv8LVZ2HQetCLzskLhaWbTkHrb1EWnl9KEnFN4uljaiqmkwDObfevAS7srA+Q5lcn9w0tEWMd2tgYk3waDM3nmw3achfvVEVtEpGj8BBRDtZKfd+XB6SqGxEjZ8XZfMg7ya5+03nzqi99yeDVY5ISsSSOYOdiIM+jS1q6zOwdxkswgnve84CsXDhjRXLrbe0S3khLkwnNrReSZz3mpkIdIVD6+JSb3pCiwYnZHkzr4N4wY8CwxsAKoRFAk9xjRSBPUWxlQUaew1zCadZ0bi8oav7l4GIX+tI9p1wwPTprGt1iI79tw924r7aUIWI7PyyVHjhir1XKBhmS65SNXpPRi9sIPpjFu9aM5gx1G6A0KShZmLh0rP0Zo12yDnVZuZnt8Gj+wFWabNktGj983Zz5JF2D03ML7kjfy7Orl69FGLCHL6fUAR9wobWmq/IWOZLivschYK5993ALzkXkxPZThicclAE0HtuYNZs+QIf1qBjOcsjB1tmMpYWynTBV9q91CK8mWmJFLUSZKbcN7XgCk17b27qom70E2r9N555wMde7rP96HMkf6pvvzTvHzZ/w6PFt4NxDwNMZFwTFVRUj9RK0S4qQWLDeblfpcgglSa4+b7ORBBYUvkEUbJsrPL5D7gkv2OptVLcfS4DZegMLJEV/9k9kdPwBSozRA==
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)(1800799024)(56012099003)(22082099003)(18002099003);DIR:OUT;SFP:1101;
X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1
X-MS-Exchange-AntiSpam-MessageData-0:
	2Qwx20M8ygfOcDYwjFHKa1ggYIAzl8+5Rn5Tu4dltT8fWt5HgaE/W88UniatfP86TMoSerSShY8m4IIPmfTijZ8K4aEACzQjiJQpm54qCeekudDf1GTDCUW/9Q89YJvpgyJXx214uyIXadM06dNiz5ZVYIoncmmGVbGSPYV6fTjkyMKpfMhDylT3qA+O8XM2/pbr5a+F6FcoKOkRtD2SCF1kogDhugPk2lvabAHdOwiUsro3RWi5fbSJEXw+2iJufjyC1uImtbrbalMhuAxgc3m/z5xJmB1ua7q/29+wgJHOwMa8WQ/9p4PFNwurU/Lg3aQnGXsSW2WKzO4z6OxeI8V1BV4Si5NHUNGgdBJOmmfIU6FHWSYeTOz8zssFgg77v/8lrSPajsBqJqHSTW94EXifGjke05gcNYRK6ssz3BMTqxt4u5/n0CbTUXScaeJt
X-OriginatorOrg: amd.com
X-MS-Exchange-CrossTenant-OriginalArrivalTime: 10 Apr 2026 08:17:58.9544
 (UTC)
X-MS-Exchange-CrossTenant-Network-Message-Id: edc9df11-769d-4aa3-2b1d-08de96d9ad27
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:
	DS1PEPF00017097.namprd05.prod.outlook.com
X-MS-Exchange-CrossTenant-AuthAs: Anonymous
X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem
X-MS-Exchange-Transport-CrossTenantHeadersStamped: SN7PR12MB8060
X-purgate-ID: tlsNG-d62444/1775809085-174FE185-BE0D1C58/0/0
X-purgate-type: clean
X-purgate-size: 1035



On 10/04/2026 09:47, Mykola Kvach wrote:
> From: Mykola Kvach <mykola_kvach@epam.com>
> 
> gicv3_cpu_disable() currently writes 0 to ICC_CTLR_EL1. Unlike
> GICC_CTLR in the GICv2 path, ICC_CTLR_EL1 does not enable or disable
> physical Group 1 interrupt signalling, so this write only clears
> EOImode.
> 
> The GICv3 power management rules require the physical group enables in
> the CPU interface to be cleared before the redistributor is driven into
> ProcessorSleep, otherwise behaviour is UNPREDICTABLE. Xen only enables
> Group 1 interrupts on this path, so disable the interface by clearing
> ICC_IGRPEN1_EL1 instead.
> 
> This appears to be a copy of the GICv2 pattern where the enable control
> lives in CTLR, but for GICv3 the enable moved to ICC_IGRPEN1_EL1.
Yes, GICv2 GICC_CTLR combines enable+EOImode in one register.

> 
> Fixes: bc183a0235e ("xen/arm: Add support for GIC v3")
> Signed-off-by: Mykola Kvach <mykola_kvach@epam.com>
Reviewed-by: Michal Orzel <michal.orzel@amd.com>

~Michal



From xen-devel-bounces@lists.xenproject.org Fri Apr 10 08:38:49 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Fri, 10 Apr 2026 08:38:49 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1278475.1563294 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wB7Nz-00068S-KI; Fri, 10 Apr 2026 08:38:43 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1278475.1563294; Fri, 10 Apr 2026 08: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 1wB7Nz-00068L-GO; Fri, 10 Apr 2026 08:38:43 +0000
Received: by outflank-mailman (input) for mailman id 1278475;
 Fri, 10 Apr 2026 08:38:42 +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 1wB7Ny-00068F-3H
 for xen-devel@lists.xenproject.org; Fri, 10 Apr 2026 08:38:42 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wB7Nv-00Bi7R-Th
 for xen-devel@lists.xenproject.org; Fri, 10 Apr 2026 10:38:41 +0200
Received: from [10.42.69.3] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <Michal.Orzel@amd.com>)
 id 69d8b6fe-e002-0a2a0a5209dd-0a2a4503a050-48
 for <xen-devel@lists.xenproject.org>; Fri, 10 Apr 2026 10:38:41 +0200
Received: from [40.107.200.45]
 (helo=CH5PR02CU005.outbound.protection.outlook.com)
 by tlsNG-33051d.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.0)
 (envelope-from <Michal.Orzel@amd.com>)
 id 69d8b70f-02b3-0a2a45030019-286bc82d2e6d-3
 for <xen-devel@lists.xenproject.org>; Fri, 10 Apr 2026 10:38:40 +0200
Received: from SJ0PR03CA0358.namprd03.prod.outlook.com (2603:10b6:a03:39c::33)
 by DS2PR12MB9774.namprd12.prod.outlook.com (2603:10b6:8:270::9) with
 Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9769.42; Fri, 10 Apr
 2026 08:38:37 +0000
Received: from SJ1PEPF00001CEB.namprd03.prod.outlook.com
 (2603:10b6:a03:39c:cafe::f5) by SJ0PR03CA0358.outlook.office365.com
 (2603:10b6:a03:39c::33) with Microsoft SMTP Server (version=TLS1_3,
 cipher=TLS_AES_256_GCM_SHA384) id 15.20.9769.44 via Frontend Transport; Fri,
 10 Apr 2026 08:38:36 +0000
Received: from satlexmb07.amd.com (165.204.84.17) by
 SJ1PEPF00001CEB.mail.protection.outlook.com (10.167.242.27) with Microsoft
 SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id
 15.20.9769.17 via Frontend Transport; Fri, 10 Apr 2026 08:38:36 +0000
Received: from SATLEXMB04.amd.com (10.181.40.145) by satlexmb07.amd.com
 (10.181.42.216) with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.2.2562.17; Fri, 10 Apr
 2026 03:38:30 -0500
Received: from satlexmb07.amd.com (10.181.42.216) by SATLEXMB04.amd.com
 (10.181.40.145) with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2507.39; Fri, 10 Apr
 2026 03:30:03 -0500
Received: from XIR-MICHALO-L1.xilinx.com (10.180.168.240) by
 satlexmb07.amd.com (10.181.42.216) with Microsoft SMTP Server id 15.2.2562.17
 via Frontend Transport; Fri, 10 Apr 2026 03:30:02 -0500
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@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=SrjI/4ozl6CrkKsD4KTwgVkneshuHvGr4/ZBlZ/PsSehkO5ou66lTuRXuJEHI2/xxs9vqkB9SVH0fAxW0aw9t4QXRr1OVCW4ZlUaQpL0K8rTMcm0XPN2bLYJRVjWVGNY170aqoI83ZLfecOgkhNhIhruqaaV6Vmxe/wZqgSTsLj+OTL3g02KZWhSaLjI2em42eaT3ubBXvGLfhzm2lhG1ZudsRxkQbGk5sjd9BJvMMBttDSXlNq/SpChtsilpD1rZ7yndkyx1MYp7iQ2udfTAHEuhnBfo5WPSePZcA90bX/4UDef2wnCwSwPm5aGOU0thmb0xVpQrl21k3FXHrdsLA==
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com;
 s=arcselector10001;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1;
 bh=jYFPfaJPvDQsePFmi9pCijvhw7JhNcTXtcOi74pOOro=;
 b=w272Nqu99Gt5pyRNh7CIlJqyImCc8Wip7wTAAYXDEMC91bjPwnLnAE92BYPE0Dg6C0PMpwjTW5U5cfmna4ro/SVAzcheYx7JHVtGise/9sSO5tKIYCdXTMnGzG6jXHhDxcTL+q6rKvaIXDVYeJUS3c1D6YTkArieRevaWAmm0T6b9upS93OZRbBHCeV42rr6DnlpByWjG6D4bJLyT7wmxCSBatl4/E/jvAJ8qulDehdNC1oJn33KnemvQAc191xN8S6IaqPQXi0iUCBh2DCcjPWyj/gzlNUFoYM8mYHlY5qng/EkyutQxpCt2V2OxnRM8qTd8dcMCW+r/IGqPkn/Hg==
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=jYFPfaJPvDQsePFmi9pCijvhw7JhNcTXtcOi74pOOro=;
 b=Dkg3x0NhJNH4AT9jC5olwIUhhv9ZAwdzZquSPB/Jv4CD+XwCfUsx2fTG6ziGigsWh9NF4KTrcdYhApt00siYbdJmDisMad4zWRuVXgVpUizp9F8x0+2+qTlTbo/s2MFd61CqQIDUJX/LXH7XBlxmhlnZRS4sDZ3ygeHMJ0PIJWQ=
X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 165.204.84.17)
 smtp.mailfrom=amd.com; dkim=none (message not signed)
 header.d=none;dmarc=pass action=none header.from=amd.com;
Received-SPF: Pass (protection.outlook.com: domain of amd.com designates
 165.204.84.17 as permitted sender) receiver=protection.outlook.com;
 client-ip=165.204.84.17; helo=satlexmb07.amd.com; pr=C
From: Michal Orzel <michal.orzel@amd.com>
To: <xen-devel@lists.xenproject.org>
CC: Michal Orzel <michal.orzel@amd.com>, Andrew Cooper
	<andrew.cooper3@citrix.com>, Anthony PERARD <anthony.perard@vates.tech>, "Jan
 Beulich" <jbeulich@suse.com>, Julien Grall <julien@xen.org>,
	=?UTF-8?q?Roger=20Pau=20Monn=C3=A9?= <roger.pau@citrix.com>, "Stefano
 Stabellini" <sstabellini@kernel.org>, Luca Fancellu <luca.fancellu@arm.com>
Subject: [PATCH v2] xen/common: llc-coloring: Fix off-by-one in parse_color_config()
Date: Fri, 10 Apr 2026 10:29:55 +0200
Message-ID: <20260410082955.42038-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
Received-SPF: None (SATLEXMB04.amd.com: michal.orzel@amd.com does not
 designate permitted sender hosts)
X-EOPAttributedMessage: 0
X-MS-PublicTrafficType: Email
X-MS-TrafficTypeDiagnostic: SJ1PEPF00001CEB:EE_|DS2PR12MB9774:EE_
X-MS-Office365-Filtering-Correlation-Id: e7d904e9-ff3a-45d3-e9db-08de96dc8eb8
X-MS-Exchange-SenderADCheck: 1
X-MS-Exchange-AntiSpam-Relay: 0
X-Microsoft-Antispam:
	BCL:0;ARA:13230040|36860700016|376014|82310400026|1800799024|56012099003|18002099003;
X-Microsoft-Antispam-Message-Info:
	FEc2MwxRBTdac6VRFrGas5rU4m730KR6R51FPaoh0cadwL4KlwaYZ1WGCGPtQ3Bem6J+n42NhuQe2Ularmgc+yFkEf5Vzqmwnxwv3JybdI6m7q6lNADG3LXQSLdfvmYVZ5BWKpCv9FLKYK4PyKbTjRKGKZO06G5QNMldtBjkLBToPOKirGfK1RN2Ik+OKXawx33+6MCEh7IBaAW6yy799uLBxOuXF3ydkhIYZ9820VhbvEeUbUJy9QFbsyQUhNKPnlsxqxpPIgfIKKFWQLgkwiapOR6yjUAnFT+3PQpvPjaYs3D1SEZsBhdpgyt/pU5RCA4cSt1Uc7ECiNCKb9EMzbViMHfrRdsR2kiIosySBT4IUJmv+imS7gEm0ldH3rwQJbOXBEeOQOweQsXlMlnWlhibcl5NBlDbg9Fp7M3FZdfU4R3aUY2p2M4OkGPgeT4CDm0ta4xNsY8NOA8YjNGPZePCbChiPzPoNkn03uEIIM0CyhxFPlZsA/T1SEks267YLeuDZ3czfrtdqoPeqZafbbURu5OwBjeGppciPmwFI0ulaWa54ld7LAj5NJnUkGDUSuwtGmU/b9MwzBFt6du5CI1hCaeGoZ5Sm0xMu2sJaxM3MuJXUB0NQ61Hy28c2GqfFyPotOrrCJYNwwzXbZr0tPPPojWzKG0trpppMllsjcVPUV5Zv18ZMuEDZg1tEE5m+7+CbpB/YDpJcZi9T/B9UrLzxJ1nZTyQQw6LjYQJ4IMBWc8vcW1nZ+Nlp4wB2CoYmv3/zal/9Ae60n8sZctZPg==
X-Forefront-Antispam-Report:
	CIP:165.204.84.17;CTRY:US;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:satlexmb07.amd.com;PTR:InfoDomainNonexistent;CAT:NONE;SFS:(13230040)(36860700016)(376014)(82310400026)(1800799024)(56012099003)(18002099003);DIR:OUT;SFP:1101;
X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1
X-MS-Exchange-AntiSpam-MessageData-0:
	9JGKev1FLc1PR64Zj8v1NINdDJ5uwrxFvA68Tt5DSSGHRjemO72kIuONzl1/2R8AKpWNU6UswVHo5lqbzYd8VBt/TL78iPf20mD7p0U9c9/x9rCQlXkAnK7aXaA0SL+abNB928v53RnjQsRv80uwy//DllNMhGLSLAedAGsFzHBMRrfehpLVnpjFRcu75J5EttCSTOOUG1J2UWZONIdPZDZEacgAnbau8WADGzCk0iVeira2xQBaXKNMszkXI0+3oF73UKVAjcVViZTxzKFg7wIq/e/aBpCKBGVCUSRgsO/NF51WYHyqV8LjZXMPxlcnKj1Awcc+iv1S92op3p5iKjar1uP3Q1pCN/8dEJ7Ir7CzaWKc8l8fd/xDpsXhRLYrBORRD+eRT7FPP9LYJky5ZNjjbDgaSuM++EddXjSbUzjmTQ1Euwe161vGsjz5mqxG
X-OriginatorOrg: amd.com
X-MS-Exchange-CrossTenant-OriginalArrivalTime: 10 Apr 2026 08:38:36.3841
 (UTC)
X-MS-Exchange-CrossTenant-Network-Message-Id: e7d904e9-ff3a-45d3-e9db-08de96dc8eb8
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:
	SJ1PEPF00001CEB.namprd03.prod.outlook.com
X-MS-Exchange-CrossTenant-AuthAs: Anonymous
X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem
X-MS-Exchange-Transport-CrossTenantHeadersStamped: DS2PR12MB9774
X-purgate-ID: tlsNG-33051d/1775810320-41914C9A-0D5E98A3/0/0
X-purgate-type: clean
X-purgate-size: 1439

The check uses (*num_colors + (end - start + 1)) >= max_num_colors, which
rejects a configuration where exactly max_num_colors colors are specified.
For example, if max_num_colors is 4 and *num_colors is 0, a range "0-3"
gives (end - start + 1) = 4, and (0 + 4) >= 4 is true, incorrectly
returning -EINVAL.

Fix this by switching the overflow condition to the state before commit
cba8a584de17 that regressed the behavior (i.e. don't add 1).

Fixes: cba8a584de17 ("llc-coloring: improve checking while parsing")
Signed-off-by: Michal Orzel <michal.orzel@amd.com>
Reviewed-by: Luca Fancellu <luca.fancellu@arm.com>
---
Changes in v2:
 - extract from series
 - undo the overflow change made by cba8a584de17
---
 xen/common/llc-coloring.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/xen/common/llc-coloring.c b/xen/common/llc-coloring.c
index eb7c72b24023..6dc614739a98 100644
--- a/xen/common/llc-coloring.c
+++ b/xen/common/llc-coloring.c
@@ -78,7 +78,7 @@ static int __init parse_color_config(const char *buf, unsigned int colors[],
 
         if ( end >= NR_LLC_COLORS || start > end ||
              (end - start) >= (UINT_MAX - *num_colors) ||
-             (*num_colors + (end - start + 1)) >= max_num_colors )
+             (*num_colors + (end - start)) >= max_num_colors )
             return -EINVAL;
 
         /* Colors are range checked in check_colors() */
-- 
2.43.0



From xen-devel-bounces@lists.xenproject.org Fri Apr 10 08:55:27 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Fri, 10 Apr 2026 08:55:27 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1278491.1563301 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wB7e1-0000Sx-UK; Fri, 10 Apr 2026 08:55:17 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1278491.1563301; Fri, 10 Apr 2026 08:55: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 1wB7e1-0000Sq-RP; Fri, 10 Apr 2026 08:55:17 +0000
Received: by outflank-mailman (input) for mailman id 1278491;
 Fri, 10 Apr 2026 08:55:16 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <roger.pau@citrix.com>) id 1wB7e0-0000Sk-A3
 for xen-devel@lists.xenproject.org; Fri, 10 Apr 2026 08:55:16 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wB7dz-00BRhC-Hl
 for xen-devel@lists.xenproject.org; Fri, 10 Apr 2026 10:55:15 +0200
Received: from [10.42.69.10] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <roger.pau@citrix.com>)
 id 69d8bae7-5cb7-0a2a0a5109dd-0a2a450aaac0-44
 for <xen-devel@lists.xenproject.org>; Fri, 10 Apr 2026 10:55:15 +0200
Received: from [52.101.48.21]
 (helo=MW6PR02CU001.outbound.protection.outlook.com)
 by tlsNG-4011c0.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.0)
 (envelope-from <roger.pau@citrix.com>)
 id 69d8baf1-ee98-0a2a450a0019-346530158cb1-3
 for <xen-devel@lists.xenproject.org>; Fri, 10 Apr 2026 10:55:15 +0200
Received: from CH7PR03MB7860.namprd03.prod.outlook.com (2603:10b6:610:24e::14)
 by PH7PR03MB7268.namprd03.prod.outlook.com (2603:10b6:510:24f::8)
 with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9769.17; Fri, 10 Apr
 2026 08:55:11 +0000
Received: from CH7PR03MB7860.namprd03.prod.outlook.com
 ([fe80::f5ba:35df:1c9f:b343]) by CH7PR03MB7860.namprd03.prod.outlook.com
 ([fe80::f5ba:35df:1c9f:b343%4]) with mapi id 15.20.9769.014; Fri, 10 Apr 2026
 08:55: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=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=uUrrtux+Jx/TA96+RNy9aj0EgNUveo2+EEP8t1yOtzExP+X3DO+8FOUm5dfyowzrC4Ov7sYcmMMbouW2px90byPcbKCBqx8xJWd1ZTZy9sdXVuZBe7Szj8OaYAdxBKoomUxDYav983kWzz9y9QFu2cHNge7k+5ElsGBLJZPWPx+lB7q93Nnt67Ytz4jwmR/YXZEACDkUw9cajAUtKlpTXSfYARRyUwgMojE0FUlGLr3v3Nt4XPllwIW8/mwrGORSByAHSYtpeMak3lf/H+C9e8dvaMCIaWKesF1b3OQKSZBly5n1FFheViFzy3H+H7awvXZC2PaIpEFUoOqyYQae/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=2XJEhgp4BVZNw2sqSQY7yoDG2c9i7xv0t/nv/VfKyOw=;
 b=yH+DiJh2FosRl0zhENm6T0ExQrR2tn/yEyodiSXIG1i96g4jPqVcSWrbjr2BFNzEm9Q+KJK3r83lQHKg8d91N/TFpd5/SiFBLgeIVj+UesNTydXvqPo2jPXfpxChjqH0kIqhG7mCkvcgPODPECi8xXez/8MUdf0EIb7gTyiutG52I6UGmaX9i3SJB55zYd4GXTk0xgcp96RxhgyfDgqSwFZt3G7eSy/M1WoWgg8Og8N2Kl8X1BKJDIOgWTDOky+3C1l5R8m3sjcyGkorPFSc01F8Dpw/hKM7/VonIa1fetjMAY47DgU/4g2o6Y9Sv+3CMTUZSwfcJib1Lk0cP3u9tw==
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=2XJEhgp4BVZNw2sqSQY7yoDG2c9i7xv0t/nv/VfKyOw=;
 b=IQvOe9VYnk3yCPVJcQ3CTthhSD4pVaEZfXGuklhFkuEnXA9UHXX+PiSkxxlS1fStviaOyA9bDcXmEXFKH/LDTm7I4o7OnlRgcSmXUhsJfoJ8oFaGQSvW6UbZ87a+38ycUh36ztRMj/B0XRSWr+9nZ9JgeN9joV3hi4mykZsB99I=
Authentication-Results: dkim=none (message not signed)
 header.d=none;dmarc=none action=none header.from=citrix.com;
From: Roger Pau Monne <roger.pau@citrix.com>
To: xen-devel@lists.xenproject.org
Cc: Roger Pau Monne <roger.pau@citrix.com>,
	Jan Beulich <jbeulich@suse.com>,
	Andrew Cooper <andrew.cooper3@citrix.com>,
	Teddy Astie <teddy.astie@vates.tech>,
	=?UTF-8?q?Marek=20Marczykowski-G=C3=B3recki?= <marmarek@invisiblethingslab.com>
Subject: [PATCH] x86/time: do not kill calibration timer on suspend
Date: Fri, 10 Apr 2026 10:55:04 +0200
Message-ID: <20260410085504.32925-1-roger.pau@citrix.com>
X-Mailer: git-send-email 2.53.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
X-ClientProxiedBy: MA4P292CA0005.ESPP292.PROD.OUTLOOK.COM
 (2603:10a6:250:2d::18) To CH7PR03MB7860.namprd03.prod.outlook.com
 (2603:10b6:610:24e::14)
MIME-Version: 1.0
X-MS-PublicTrafficType: Email
X-MS-TrafficTypeDiagnostic: CH7PR03MB7860:EE_|PH7PR03MB7268:EE_
X-MS-Office365-Filtering-Correlation-Id: 5aad0e8f-f0c8-4c63-ba40-08de96dedf55
X-MS-Exchange-SenderADCheck: 1
X-MS-Exchange-AntiSpam-Relay: 0
X-Microsoft-Antispam:
	BCL:0;ARA:13230040|376014|1800799024|366016|56012099003|18002099003;
X-Microsoft-Antispam-Message-Info:
	HPTd0SFg1bAeagrvAMGTiHt+x2XOA8Q0afzRwhhC0SmThHoNcJskFyFMdsAwlHaDZMoGK4bMVDqwzzChfRqNVbGv9/+qbt5cr+6LcuXJns0G01CICVIemylvNQ4FSWFUQSkhrL+PFx82OeTTJyeK0H+8zWZ+6e9z/ykrg8dFMMhEBhy9l9/6KEQuYfjfZm/m9J5XfMc1MbSPyg3BWdESjDAKzC3tGgVx92mlo9tDEGERCwxWNAcVKAVIyTtC+RVKw77QOw97O1UxlVm1w7JQ8tJhe0ZXQoc22h0Yz81YzEHsReqmw76FrXTkk5A9V0lxItmNL9rzB1pDkXWNk+ML9rqOPCCaD3avG/5DkYuUyRR5u5IAbcSNL9mslWNk6hjZ5KXjQEt2J3Jykb+dq45nO1FRh/3bAKv31EnNPZtWvPF0bkpNRqDIW56qwNxfq5a0M3nQnMjeMOhsDc4p49jbvaPrP1B76SxiDN2y5UDnIvBfXl68j+QJPKQ69AcD6X5ZNRLUxhT9sIs/ZX2R4+n9FIpthkl//BDDDuOzOWDe2x3SySf/6yEuV7vsjej3AWiZzWS3FgIkWFEtOLAmwCZwEZi9nNn94cv7/LJalr9dwV8BpO65IrItOoPYdF8uMWlAnjEfxa6H+VSbBFYJ6LKj7T1oMP7u7N5/DC5MzXkHui04+twoIBSl9ty/62LLCa2QUaZ+YeZsLn0Hf+fvMdurPyBRcf5RjKG/gJLCk3GCA2s=
X-Forefront-Antispam-Report:
	CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:CH7PR03MB7860.namprd03.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(376014)(1800799024)(366016)(56012099003)(18002099003);DIR:OUT;SFP:1101;
X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1
X-MS-Exchange-AntiSpam-MessageData-0:
	=?utf-8?B?bmVwVkpvRlo2a2w1RE1RYlppaTVLQ0tqR0xVNkxmK2ZBRWFmSURlcDE5RWlD?=
 =?utf-8?B?OGxmdWV4Vlp6eUhSY0ZQamE3dlYwWlpVY0JCNlJFc2s0ck1Bck0rdzl6R1dy?=
 =?utf-8?B?aVVmMEM2TEZaYkdQQXpkU2V6elhxL3d3SHRaSU4rWERWZTFaSlhwQkdXc1Zj?=
 =?utf-8?B?MVJkbkdxZnlzdmFTSk4vTWhmVUdBR0s3NEN4dk9QTFUvaWxadWYydW84N3py?=
 =?utf-8?B?YjdWbDYzbTJnL1pBU0lDdGlQOUhxWG1ITnJHYmlJTFdUcGRodmYxZWFFWWJR?=
 =?utf-8?B?dTVFOXZWMzVCQnZtT1VBaGN3dU9lVGhVR3NhQXhPVmhsNkEybTdEbUZMQ1FK?=
 =?utf-8?B?SU9xQXZXQTJWbDd1cFZQSlRnTHR0aVFpayt5YWJrcnVxcXhic0svczQ0WHpO?=
 =?utf-8?B?Ny9XUldhY0ZKU005OFhMbzVxM2VDK0p0dEJnYlRzMFA4R2NqN0lQNWxzS0xO?=
 =?utf-8?B?cXJ3eVNSTEFKcGtvczJUTTdiOUZtQ205WG5aMWV0Zk8rRkMzRTJObTlXMDQ2?=
 =?utf-8?B?c0U4MENzUHkrVEx5NHlWMWNCWmxwcStSVTdGaDBjd3NudGJMaklxWmx3ZG5Z?=
 =?utf-8?B?NkZhWVRteEJuRzg3dkdIK3VFbWpjenRVU2J2a1pwK3p3a1NFaUI5V0hoRGF2?=
 =?utf-8?B?Y3NCMk9GSGRDditraDBFV3IxZWMrclpEa0oyZTM0TkdJSzYwbi96dzhhZU40?=
 =?utf-8?B?WThYTE5XS0N0bEtyMzkxV0xQY3hIekExV1Y0MlU5TmluR2xmR0J1aEJORHNY?=
 =?utf-8?B?c1RvQzhCYlp5U3U3NVExK2QvNWE5cSt5M05kaGRxSEtPVTdtSTRQY3FlSjcz?=
 =?utf-8?B?TUVuMXpJY3Y2M1pQd01PTHg0RVlFRXo1UFZWTE1pMUl3ZFBueWxwNW1FWTUw?=
 =?utf-8?B?dlNVbkdncVFCUHE4QW9ZazZMVEpCLzZvWlpNTG53Tmp4ZW1taFNuUXBHMnlk?=
 =?utf-8?B?dXBLZ3h5VHpIMmhzUmZFV1BQN0srQmxBSTBPTjJON2ZKL0FsdTVxQ2c0b0NU?=
 =?utf-8?B?NlA2dmFmcUdKczZoN0F6L3d0RHZuZG16OE5UNmk5OXB3amY4d0V5RmxmSjJT?=
 =?utf-8?B?NmxuYVBUVitXSm13YlhYL2pDRUJydXJTZERUZFdMUVdOYVpwS1hYS3J0YUpG?=
 =?utf-8?B?MHpaQ3gxTENzVjljY2oyT1VRbGZRTUxCeTNlUEpKY0JpNXNtWDBlam4zVnlk?=
 =?utf-8?B?WkVkczFLc1dVQklWZzFMWE9xa24vTzhvUjhyOUhibTJYOWFzQTU5MlR5RkxD?=
 =?utf-8?B?QVNXb2dtaEZES3UvMnlXMU12NHpucWxqVEpjcjBhOEtwb0pyZ1ZXdk5rSzFT?=
 =?utf-8?B?RThvRCsrQkVjSVlrZGJubjJPbW9QMzdsOEY3S3Q0Q1ZHSk55UUFFMGErU2tO?=
 =?utf-8?B?UHNWRm93SUhOUWYvVFNMNGRJY3hWVkphMURaanJwZjhiWUplcDdsZ2dKMVht?=
 =?utf-8?B?WUF5T0RmMlZvY3UrRWtIaVdvN2toNDdCM3FQSHArQ3h6MytRUUdlUkZxeUxa?=
 =?utf-8?B?K09VWkoydThyZG4rekp1NW56RGFGNmhyRlFWNmc4OGNXWE5aL254L1oydnhq?=
 =?utf-8?B?MTR0ck5PbUlSSlNwc3lRKzZtb0VmWE5YeVQyWGJuYWlGK05MdkZiZ0l2bzRR?=
 =?utf-8?B?KzUyRkhIVW0yVWdsdVBMU3lkQ2I0R2hiSnprR1dEU2xYRDBZK3RrTVF6RUsr?=
 =?utf-8?B?Y1NQYk5VUW5wR3RwM0xQQUNLYWJWS2FmMzFnVzhSYU9SVDN3Um9oV2gzc3Ez?=
 =?utf-8?B?S2hLQm9HanpzODlsaFhNV3B1TlZYbEc0T3BZd2lnTGNFN2ZSRmkyQlZYd2pK?=
 =?utf-8?B?NkgwTDJKQWdxZmFPU0pTRkVqbUdZa3NIcHk5b2RWN1FWcllxOUhQa3BpdjNz?=
 =?utf-8?B?T0dUZXBxMW02cDdmUGZBTnJxcFR3WVV0cko2MWpWSmowZVZ6RmdmWmtqekNK?=
 =?utf-8?B?MGFKUnNDVTdJY05GVEMza01CVGtjb3lhYzArZmt3UFFHWE03bVE0WXcxL1N6?=
 =?utf-8?B?MmUyMnIwNzNaN0VXR2xac2ZLYVpOKzlNdDFyblV0YUVKUzBDZkF5WkROWHdV?=
 =?utf-8?B?RlhwT2Fpa25nTXpPSkJSdlFPdEhDQWEzS2l1Q1N1NVNpbmxTY1AzQ2gwYTF6?=
 =?utf-8?B?ZndBdXM1eWRjSFFQYXlUVUdVUXdBQktOSVZqVXoxMzV4UG1STTc1SkxDaXRh?=
 =?utf-8?B?eEN6RUdXem82MUFkd0ZTWERDWkdUb3Fjc2VLOUE3eGtjb3Exdy9MdWRSQ1pN?=
 =?utf-8?B?ZXNqTW5IRVdQc29rWlVZbFcwc1RoNHNQUEhiRlN2UlZOR2p5TCtOY1BVR0tO?=
 =?utf-8?B?UnJ1UXAvYzNwRUlkWS9HbXFJdm1kR2ZtNEVVR3YzcmN6eEk3ZEZndz09?=
X-OriginatorOrg: citrix.com
X-MS-Exchange-CrossTenant-Network-Message-Id: 5aad0e8f-f0c8-4c63-ba40-08de96dedf55
X-MS-Exchange-CrossTenant-AuthSource: CH7PR03MB7860.namprd03.prod.outlook.com
X-MS-Exchange-CrossTenant-AuthAs: Internal
X-MS-Exchange-CrossTenant-OriginalArrivalTime: 10 Apr 2026 08:55:10.8303
 (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: v6HbWh1o4XWPzhlrJhej0EcdpMUSWh47ktHgAAfvmOyx5euDtDoEcH2qREcRF0F7/R0ZH7xvNCbkBLmtf+9yhw==
X-MS-Exchange-Transport-CrossTenantHeadersStamped: PH7PR03MB7268
X-purgate-ID: tlsNG-4011c0/1775811315-C481C0B1-D6AA8038/0/0
X-purgate-type: clean
X-purgate-size: 1124

A killed timer will ignore further set_timer() calls, and hence won't be
re-armed unless it's initialized again.  Use stop_timer() instead of
kill_timer() in time_suspend(), so that the set_timer() call in
time_resume() successfully re-arms the timer.  Otherwise time calibration
is no longer scheduled (and executed) after resuming from S3 suspend.

Fixes: 6d90db1a2ca1 ("x86: rendezvous-based local time calibration")
Reported-by: Marek Marczykowski-Górecki <marmarek@invisiblethingslab.com>
Signed-off-by: Roger Pau Monné <roger.pau@citrix.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 fed30a919d2c..4233ea507d40 100644
--- a/xen/arch/x86/time.c
+++ b/xen/arch/x86/time.c
@@ -2728,7 +2728,7 @@ int time_suspend(void)
     {
         cmos_utc_offset = -get_wallclock_time();
         cmos_utc_offset += get_sec();
-        kill_timer(&calibration_timer);
+        stop_timer(&calibration_timer);
 
         /* Sync platform timer stamps. */
         platform_time_calibration();
-- 
2.53.0



From xen-devel-bounces@lists.xenproject.org Fri Apr 10 09:01:31 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Fri, 10 Apr 2026 09:01:31 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1278507.1563311 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wB7jz-0002Cb-Oj; Fri, 10 Apr 2026 09:01:27 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1278507.1563311; Fri, 10 Apr 2026 09:01: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 1wB7jz-0002CU-LF; Fri, 10 Apr 2026 09:01:27 +0000
Received: by outflank-mailman (input) for mailman id 1278507;
 Fri, 10 Apr 2026 09:01:26 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92) id 1wB7jy-0002C5-Hm
 for xen-devel@lists.xenproject.org; Fri, 10 Apr 2026 09:01:26 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wB7jx-00CGcS-U0
 for xen-devel@lists.xenproject.org; Fri, 10 Apr 2026 11:01:25 +0200
Received: from [10.42.69.11] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <oleksii.kurochko@gmail.com>)
 id 69d8bc61-2eae-0a2a0a5409dd-0a2a450b8386-32
 for <xen-devel@lists.xenproject.org>; Fri, 10 Apr 2026 11:01:25 +0200
Received: from [209.85.208.48] (helo=mail-ed1-f48.google.com)
 by tlsNG-42698a.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.0)
 (envelope-from <oleksii.kurochko@gmail.com>)
 id 69d8bc65-bca8-0a2a450b0019-d155d030e55e-3
 for <xen-devel@lists.xenproject.org>; Fri, 10 Apr 2026 11:01:25 +0200
Received: by mail-ed1-f48.google.com with SMTP id
 4fb4d7f45d1cf-670af4fc2f1so57022a12.1
 for <xen-devel@lists.xenproject.org>; Fri, 10 Apr 2026 02:01:25 -0700 (PDT)
Received: from [192.168.1.6] (user-109-243-69-121.play-internet.pl.
 [109.243.69.121]) by smtp.gmail.com with ESMTPSA id
 4fb4d7f45d1cf-670706251f0sm415649a12.15.2026.04.10.02.01.23
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Fri, 10 Apr 2026 02:01:23 -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=20251104 header.d=gmail.com header.i="@gmail.com" header.h="Content-Transfer-Encoding:Subject:From:Cc:To:Content-Language:User-Agent:MIME-Version:Date:Message-ID"
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=gmail.com; s=20251104; t=1775811685; x=1776416485; darn=lists.xenproject.org;
        h=content-transfer-encoding:subject:from:cc:to:content-language
         :user-agent:mime-version:date:message-id:from:to:cc:subject:date
         :message-id:reply-to;
        bh=MAo25sHibVddpyd9/kKMJyuwa3tRX8JvqBopaTkYYqk=;
        b=jzIUEF9EmB5GjqH+pM2ukBMrAm/TbIEoPN59lZORCjIRUzEl7CRFCr3ht9NuhNSsq+
         8quYURGj5ghfjdnDH9xer7E7FgIbX0N54wIuZx6wSsBzjLU2fRbKqZUz5K73S5AOXP9C
         eye01CTdUqWpFqllhiDZ4KBsIJklP435YIpeV8OfL7jZ7NckvtnXCZU3drDpX0igpldi
         YVfC7FTCzGfHk8469fveI6rrut2slCXtKwfyDYRMDTElwtmIw2vC9d6k4c9Cqpe3RG1G
         cblkzeF6h9EK35S5bbWINwfZtSufe5y6Pc9wZPfi/i2h2U4MX9bzMG4HSYmqR5keGet/
         GbKQ==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20251104; t=1775811685; x=1776416485;
        h=content-transfer-encoding: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;
        bh=MAo25sHibVddpyd9/kKMJyuwa3tRX8JvqBopaTkYYqk=;
        b=Vupub6VsukFNyIP+LSPQP3dMpl43DZPaBz5kXqkv5p0BaJdgCNOBHktyPomcXUvsut
         iNbiAWBu7vF1FEiqfWL6Gps7xvAx1oJUi4fPywukkhidnk5c5V9+/WOVr6xEcFLF0h5Q
         9U6dVNgJmAChCBI5BnVikxljXRVyMIS8Bhz8R0NyBEbSPeIwKnrEE0i/7vkmtAZiLSVk
         zJzbyFRBbhmL7yFwj6aGy3wWpfgvAPY5u1wbVErId2eO5cxi+A07yFH7iaKJJ1o6YBXc
         IxzIhabd9Gt4UoK3HqOSfUytEpdlVVUmJQiAJnBfg+v422ajkb+aT6znpnjHBAlbYCm8
         de3w==
X-Gm-Message-State: AOJu0YxK25jL5avWYDZEXTSyaidNZL6+4Xgp1cPQaSZijH5edRAlXO+E
	dB/rxHXtBscgUkGfCO/CC4GFkG2UQaKhW3mj8JoHM1MSmIwg9742a9MPhFaXLQ==
X-Gm-Gg: AeBDietFNz3rEjTybz/AjEO2zbvf29lU961RfRN7p9ndRwRuvONZ00+tCrSxLD6bTXt
	o96g32UBg54spsRRa3TC593EZon7xlLbY9FB1AyL02bb5/zQF4oIQ3pugP+4U6c/adE5p7KzhhM
	CIhASZEL66IOZvRMBwzOIsYbQrRnK6wYZcAmajbcUHWz35E/hNSIENf9OT8pKSTSzUuAHFZgSP7
	zXekRiX3UYWmi3IACIzocIkVx/sScTCRsCgomR650fCM1QkHvzHvk59/XAD4FDlsw/NzJmA3Bab
	9nopA3Sy7e9GO+XyMe/QUwYG6ulopqK2owCX6T3HC/h6klYv/O2PjjF17ePr4tRHLOP2Js9ZXwk
	7WK8c+K1oeN971cuLX4QIARP+eIB546vpOf40hMRGTN7uprC4gWG2qAOd7C3PEJ3wsP5LtseD95
	pNXc8C57YFbbwHuqDTusEoitv8QVBsd5VZa+cgNk18lv6/fVw86EkWLeBZVLjW7PGz88gYlcdpi
	7g=
X-Received: by 2002:a05:6402:46d6:b0:670:a279:19b7 with SMTP id 4fb4d7f45d1cf-670a2791b27mr409599a12.12.1775811684709;
        Fri, 10 Apr 2026 02:01:24 -0700 (PDT)
Message-ID: <29f456c6-2f6a-4b7d-a70f-9d2d50663b47@gmail.com>
Date: Fri, 10 Apr 2026 11:01:22 +0200
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Content-Language: en-US
To: Xen-devel <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>,
 "Orzel, Michal" <Michal.Orzel@amd.com>
From: Oleksii Kurochko <oleksii.kurochko@gmail.com>
Subject: Generation of phandles for guest DTB in dom0less
Content-Type: text/plain; charset=UTF-8; format=flowed
Content-Transfer-Encoding: 7bit
X-purgate-ID: tlsNG-42698a/1775811685-F5DC12A1-91BD72DE/10/73395122804
X-purgate-type: spam
X-purgate-size: 2434

Hi all,

While working on dom0less guest FDT construction I noticed that 
fdt_generate_phandle() is "broken" when used to generate phandles for a 
guest's nodes. The root cause is the way dom0less manages phandle_intc 
(phandle_gic in Arm terminology): the dummy GIC node already occupies a 
phandle in pfdt, but fdt_generate_phandle(kinfo->fdt, ...) has no 
visibility into pfdt and therefore may produce a phandle that collides 
with phandle_intc.

I see three potential approaches to fix this and would like to get the 
community's feedback before going further.

**Option 1: guest_fdt_generate_phandle() wrapper**

Introduce a thin wrapper that skips any phandle already reserved by the 
architecture:

   int guest_fdt_generate_phandle(const struct kernel_info *kinfo, 
uint32_t *phandle)
   {
       int res;

       res = fdt_generate_phandle(kinfo->fdt, phandle);

       if ( *phandle == kinfo->phandle_intc )
           (*phandle)++;

       return res;
   }

The obvious downside is that this is not flexible: every future node 
added to pfdt would require a corresponding fixup here, which is easy to 
forget and hard to maintain.

**Option 2: Reserve a "first free phandle" field in the arch-specific 
structure**

Add a field to the arch-specific part of struct kernel_info that stores 
the first phandle number guaranteed not to be used by pfdt. Guest 
phandle allocation would then start from (and increment) this field, 
completely avoiding the pfdt phandle space.

This is cleaner than Option 1 but requires careful initialisation and 
documentation to make sure the field is always set before it is consumed.

**Option 3: Store a pfdt pointer in struct kernel_info**

Add a `pfdt` pointer to struct kernel_info and pass it to 
fdt_generate_phandle() whenever a guest phandle is needed:

   fdt_generate_phandle(kinfo->pfdt, ...)

Because fdt_generate_phandle() walks the target FDT to find the highest 
existing phandle and returns the next free one, using pfdt as the source 
of truth guarantees uniqueness across both pfdt and the guest FDT, 
without any manual bookkeeping.

This feels like the most robust option to me, since it naturally handles 
any future nodes added to pfdt without requiring changes to the phandle 
allocation logic.

Does anyone see issues with Option 3? Are there other approaches worth 
considering?

Thanks,
  Oleksii


From xen-devel-bounces@lists.xenproject.org Fri Apr 10 09:07:20 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Fri, 10 Apr 2026 09:07:20 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1278517.1563320 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wB7pc-0002kk-Bh; Fri, 10 Apr 2026 09:07:16 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1278517.1563320; Fri, 10 Apr 2026 09:07: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 1wB7pc-0002kd-7s; Fri, 10 Apr 2026 09:07:16 +0000
Received: by outflank-mailman (input) for mailman id 1278517;
 Fri, 10 Apr 2026 09:07:15 +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 1wB7pb-0002kX-3P
 for xen-devel@lists.xenproject.org; Fri, 10 Apr 2026 09:07:15 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wB7pa-00DrTV-FS
 for xen-devel@lists.xenproject.org; Fri, 10 Apr 2026 11:07:14 +0200
Received: from [10.42.69.9] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <andrew.cooper@citrix.com>)
 id 69d8bdc2-e002-0a2a0a5209dd-0a2a4509b3da-0
 for <xen-devel@lists.xenproject.org>; Fri, 10 Apr 2026 11:07:14 +0200
Received: from [52.101.85.14]
 (helo=BYAPR05CU005.outbound.protection.outlook.com)
 by tlsNG-bad1c0.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.0)
 (envelope-from <andrew.cooper@citrix.com>)
 id 69d8bdc0-bf79-0a2a45090019-3465550e2a0c-3
 for <xen-devel@lists.xenproject.org>; Fri, 10 Apr 2026 11:07:14 +0200
Received: from CH8PR03MB8275.namprd03.prod.outlook.com (2603:10b6:610:2b9::7)
 by BN8PR03MB4929.namprd03.prod.outlook.com (2603:10b6:408:79::10)
 with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9769.42; Fri, 10 Apr
 2026 09:07:10 +0000
Received: from CH8PR03MB8275.namprd03.prod.outlook.com
 ([fe80::a70d:dc32:bba8:ce37]) by CH8PR03MB8275.namprd03.prod.outlook.com
 ([fe80::a70d:dc32:bba8:ce37%6]) with mapi id 15.20.9769.018; Fri, 10 Apr 2026
 09:07: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=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=DOEk2Fp9bY/8/1u6rM5b94pQuLpZ/9T0QjsVtzTEvWlqLJ2W7+aj3smjqwSwlD74XzhjnEhSlaP/BE0252svbLXY+AyQaMBMU5fDpSFoKHe/+bIxthX8ohcZz0wV+R2D9KTtZ1cOHouaFKSorX2se1LL12XpVtOv6XxLu5shkdr92dzV56BoSdH4Ff4EUeeKYPOwtRRbtjcn1M1JCgqJUA/cu1ehphlgE0iZz5q6iIn6smgrZoMNdzRKzvdnGN/84DdBh24olezk222rYXpT5/SRSvBLknWPJEYOaZXQJ94Y5aC6takEpt7F/CO8nV/Lh1rgHAFf3C4246Ctt1S09Q==
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com;
 s=arcselector10001;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1;
 bh=XR0eXDP3KKu5v7nSYOsLac7/IFD+WKU6tkHsfvJOYOw=;
 b=AD0tgAN5+4Ad08KbTZeUXCCGO+iVuIatqgc7pZdAjm6zfEPlncWl6xJl6cBScXoGeB4dVLxOG+yOqyAZmftJ97zdkDXwoAXqlMny1j3Ux/7Uurk9omr3bPUmzBwq8xgLJTCs+1n2PI10pAh0tmXlPseeECWhcOOAdBF+iDyECmncOd70OvdZxhbW070UcXfN5qcWUcE6LDI2spSBAXbfZnYG3+wG1FKK5HyhhPMJKr7H0Ljv0Vh674EZyOXSqH+0Vz30LrbCBGF3M28Pl8+ZI4JqRdryEuz3MtRLG0jPrBwJTVbOo5/4kT1ZPKxFv2G1EvGzGu3Lz4F2Dyqwh1fo0Q==
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=XR0eXDP3KKu5v7nSYOsLac7/IFD+WKU6tkHsfvJOYOw=;
 b=oC+/FywypHj1Fa7i4zEqchi+SJVEmFVm0GLp53KVWII+5IGueH1/8QzsPjIVSqwreWPKddu072j7/D/V5JQ0igYAdsVuCk/bJLlzSpmGoi/29+Qrg8oAklBNL8yIgrnUijrWpz0tcCGAmRzwpvpThTdeXBymMxeikVOPIjauPaM=
Authentication-Results: dkim=none (message not signed)
 header.d=none;dmarc=none action=none header.from=citrix.com;
Message-ID: <9f10cd81-9193-4cf5-b8cf-427b918d7a98@citrix.com>
Date: Fri, 10 Apr 2026 10:07:06 +0100
User-Agent: Mozilla Thunderbird
Cc: Andrew Cooper <andrew.cooper3@citrix.com>,
 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>,
 Mykyta Poturai <mykyta_poturai@epam.com>, xen-devel@lists.xenproject.org
Subject: Re: [PATCH] arm/its: Decode BASER cacheability field before comparing
To: Mykola Kvach <xakep.amatop@gmail.com>, Jan Beulich <jbeulich@suse.com>
References: <dba15db692025c75f8bd3a2c5dab2654eaa4e896.1775801199.git.mykola_kvach@epam.com>
 <0c68ca5e-51d3-42ee-aa27-301ffafefc5f@suse.com>
 <CAGeoDV_S=hQwKyc1aa-X_NZbB2n+QzxUfXpNDcvFehPi8h3adA@mail.gmail.com>
Content-Language: en-GB
From: Andrew Cooper <andrew.cooper3@citrix.com>
In-Reply-To: <CAGeoDV_S=hQwKyc1aa-X_NZbB2n+QzxUfXpNDcvFehPi8h3adA@mail.gmail.com>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
X-ClientProxiedBy: LO4P123CA0654.GBRP123.PROD.OUTLOOK.COM
 (2603:10a6:600:296::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_|BN8PR03MB4929:EE_
X-MS-Office365-Filtering-Correlation-Id: d840c2a5-10bb-41c5-e8db-08de96e08c39
X-MS-Exchange-SenderADCheck: 1
X-MS-Exchange-AntiSpam-Relay: 0
X-Microsoft-Antispam:
	BCL:0;ARA:13230040|366016|1800799024|7416014|376014|56012099003|22082099003|18002099003;
X-Microsoft-Antispam-Message-Info:
	POdOiZc6e9PFtAAtnoaSxIlOvdVM2Byp+GdCc1PrC/4s87VRyAGO2QlQaPW8EGwub5e6eG6RYpkK1OBpaqA/xp79W8J/SlHsLl42+fgD9v19fmdaTLIS0GqgidYJPTj/J3MhmFn2BEFPe2gSolYe63wgOaE/fYxD/BK0qdwSazwj1dL4rZDqQiuTlLWaLfVVJobpYmYvOxhKrOiNear1yTVkGJj/dlIaOATDF1lhy7/aCRFy8Boe979pIDCEcldmW092y7ozNHsRwirBMAHOETFdv8eEZByZCT2uglMmwwiNbmuzEKtxV+hsx1CWWhEyKw8A3+7EVYKKxHaFWJ6Ba65LNL3ek0v4C0G/gEGWbNBNGFtMI+U7zb+YrYRRU7jwdHKHcqoLl70q7V4O46BlPlt/mAhapMOsn90BPOnlGhI5jb3jwotNkHqrPgM1+80HNB6LPMuGlW+4IRX5D6ktabfoC9T7padk+/ThpouQHhQzQOlHLRHSZw48eTk3uLv/y1a2InZv0v7mVcECofnL6Kd6AKHS18YYuzG3HXABLFPWElLxRoIwdzRGSoLbAQkYFeQeDlCH3RGIR5Nxe0KCJF/D/dKWwJQCA/fpvkmFceC4xQXG2hibnHr/9YRHbP1qFS3RcsKhR3yeIZsvfdK38d9mxX9OpBlLJrYLhDJUH2ifoDQ9eFhHVUNQB0EwW0s8XDRXxIilvuOVtZksQvrXSTr/iLwb/GY5xdseFSGrS6o=
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)(7416014)(376014)(56012099003)(22082099003)(18002099003);DIR:OUT;SFP:1101;
X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1
X-MS-Exchange-AntiSpam-MessageData-0:
	=?utf-8?B?T3BPUitrOGxYY3hyUFdPV2lIUDhTRVI1bkxPN0gyUW9HOUZFMUppc3VRNFF2?=
 =?utf-8?B?SDVhT1ZIWG03QmExNXo0LzlFa2tHbVBWR0hvM2RFTUJadWVuN01tcHpXZXZx?=
 =?utf-8?B?L0pSMGVzVUJQb2lmK1lpZVgxMXhVNy9WbURjOWtpb1dnMTRiZ3llblk0TFBl?=
 =?utf-8?B?NS8vSG9BT2tranp1UTFPNTVucnJlUVR2K25ZWkhac1NaU3VHYmE0cWxZTHNB?=
 =?utf-8?B?QmF2V1ZxcFUrUmRaZjFYUlpwWi9jM0hKb3c0cXNFQWFqR21NaXdpMTdtR0VH?=
 =?utf-8?B?SmtTZFhZKzFRdEVObENjaldoU3loYVEzRlQrNjMyaDJmUGFlNmxTYlB1dzBI?=
 =?utf-8?B?eVg0VlZpN0Jvc296c0JRdHI4Y1NTS2V0c3VmK0xlcGVBc2h1UUdrZyt3SkJ3?=
 =?utf-8?B?akRLUHA4N0JzTFFuMUZObGFNQm01TFhMKzE3RmpzRFRzekxVNjh0RHdaQ1BY?=
 =?utf-8?B?KzlNR3hHMEhJaTVuRHRsemx4L3N1ck1zeWxhdzJjMHVrQkhxaGQ3Q2VQd3VZ?=
 =?utf-8?B?SllhRmkxQnJKQkFqWHRhQjRaRGY5WkNXdDhDcW9IdjJIbWZwWFdjMjRvaG1Y?=
 =?utf-8?B?ZXZOaHl5QXhHYWUycTFGaFpFRFRZVjdrTFhUL1hzSlZJM0pmdzZ3dTFiTFdp?=
 =?utf-8?B?Zjh3YU9kc1pnOGxRVEtQZGFJYkFvdTRNU3ZzSmNncmo3Rk0vcUN3Mi9td1dD?=
 =?utf-8?B?eHFqVENuci9uaWo2WHI0MGNHR3l3aTBnMnhIay9aQ2hieWh4Z2Z1V2dsYllS?=
 =?utf-8?B?ZGZiVVByR1JyeW5zYjJiR0pVdk9ORStyZ3VYS3VXVncrd29jMzNLRkVyb0JD?=
 =?utf-8?B?a25IaS96M1crZS8zQmVIanMxMlpRVEMyTEZwdGxLUkNvMWxad3FLRS9wRVRR?=
 =?utf-8?B?bnhjT2JvZDBNK2cyU0VxTjN3ekdTMUFzUldDZ01wVHdLZk0waHJ5ZldKTTdU?=
 =?utf-8?B?b0Y0aUNzMnRMUVZISUh5NzRBNEVMbFBqeU9LQnRtTUFQNXVlYzVsMDkvTHlQ?=
 =?utf-8?B?VWkwaC9wRXZXZlo3Vm5lTDNLM3V3NW5YYW4rZVdpMndmZ2x1VzdCUVdDY25V?=
 =?utf-8?B?ajJxbk5MNjlxcHBVVjFCVHBHL29aeFZaUFZHMTVaN3hTUWxDNFB0NzdlSnFX?=
 =?utf-8?B?U3VEVzBWTFZlS2JOc1NtbHVVcVEyVW5ZcnJ1L05qTFJ5Z1JHUGxYOVRkRita?=
 =?utf-8?B?YWp1cXRpK1lyM2FzWlF5QTdXQ29aVitZVU5RRUgrY0RhbzU3UzFmYmVpdFRK?=
 =?utf-8?B?SFlyYnBJVzg4elcwSmVIQkJTZUZUd2YrTGZQYnpKWWJ3SFhWMFVCd0FsZ2FO?=
 =?utf-8?B?T1daVDQ0L0lhMlh5ajJtTXRBRHdad0diRkcySDAwSnJ5NGVKc3RxdTFMclZQ?=
 =?utf-8?B?RElaTHhJRFdKTUhXMkk4OUQzUjdoM2Q1MmNCc01BUHRrRlducVV4SDQ0VFRz?=
 =?utf-8?B?aktJVkFKUHNHY3J6YW95WmZrd25JWW1QOFEzMjAwNzRvejJyZnVNRVE1dUs4?=
 =?utf-8?B?R2tiSm0wRjJtM0VXdkZKKzhPUU1tUGVnOWU1cFJ4bEZSOE5PWFJzRWtoTzUr?=
 =?utf-8?B?eHZjd2xncU5YYm55YmZ0YW9wZjZPTXBUNVdRdk1GRXpHN3REVUx3ZDI1N1h1?=
 =?utf-8?B?M0VBd3RLVnYzdnQyYTZrZG04Z1k0empRODlZbDhmS25QWk1XbGZ1VDZuYndO?=
 =?utf-8?B?TEh0TFhpY3R0VEtsa1l2WG5FRGhCVVNuNEx5cXJvQ2JLYUVXTlZWeWxmRjFN?=
 =?utf-8?B?VVFZaWpGdFRodlJ1YmlKK25EWmYyckFjbVNTOHMrby9OcXNJWko1bjBPTit3?=
 =?utf-8?B?L1NaZXU4NExvQUlEYVZCRmFZN0NMK01HdmtBU2dncklNZFEyOHdrNkVVWU45?=
 =?utf-8?B?L3RwWG1id1pqc1BYNFVmVm9wSXlmb0pmLy9NVkZpSzZCZEFNZlZqaWtPODhm?=
 =?utf-8?B?a1pqdU1sNHZTdFhBYUdwcUJIWmZuN1ZnQ0I1M0ZRRU01RzdtcTk3Q3ZpTFYr?=
 =?utf-8?B?a1NNaDZWQjRuUS9xVlhGcXVkWXNSUFR4SUZVa3dxSVYwY0NPbVNSNmovMEZa?=
 =?utf-8?B?NzVFZ2xzSStrWGwveXhMaTdCY01LK0ZSejNpUTVQRUhPZXZpY3AvMWFVbFpD?=
 =?utf-8?B?STlsSTlJUTJIaVdZTkUxT0VPUitRZGhNOTQ4dHVrQUxPSlVvc0x3K1VuNlpE?=
 =?utf-8?B?T3JKeklhWmlvY1lSbGttam9XYU9oTGhiKzZOSEtnV0JPemJ2S0E5SEZwaEpw?=
 =?utf-8?B?VG5STmw2cmZ1WkhNcmVFQUV2QTlNMlVteC9ZL211MXFBK1VOaTdaMDNzNEw3?=
 =?utf-8?B?N0lSd2g0NWc2NE81SEp2WEg5a2t3SzB3b2JQS2loelI5VFRMTWJvNzQwOHk2?=
 =?utf-8?Q?MNO2MlMlCjDSEM6o=3D?=
X-OriginatorOrg: citrix.com
X-MS-Exchange-CrossTenant-Network-Message-Id: d840c2a5-10bb-41c5-e8db-08de96e08c39
X-MS-Exchange-CrossTenant-AuthSource: CH8PR03MB8275.namprd03.prod.outlook.com
X-MS-Exchange-CrossTenant-AuthAs: Internal
X-MS-Exchange-CrossTenant-OriginalArrivalTime: 10 Apr 2026 09:07:10.3541
 (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: I+Lc49jINlNqJqGGiIVND8n0SUUOSTlhGWXZe46WW47iBuLU1f7ltVV20YtAFENzdep2paRXNWDEY6iTHED/YRqQT6Tiq628AcUEKw6tD1I=
X-MS-Exchange-Transport-CrossTenantHeadersStamped: BN8PR03MB4929
X-purgate-ID: tlsNG-bad1c0/1775812034-2F34C152-4119E3CF/0/0
X-purgate-type: clean
X-purgate-size: 1178

On 10/04/2026 8:08 am, Mykola Kvach wrote:
> Hi Jan,
>
> Thank you for the review.
>
> On Fri, Apr 10, 2026 at 9:40 AM Jan Beulich <jbeulich@suse.com> wrote:
>> On 10.04.2026 08:09, Mykola Kvach wrote:
>>> --- a/xen/arch/arm/gic-v3-its.c
>>> +++ b/xen/arch/arm/gic-v3-its.c
>>> @@ -496,7 +496,8 @@ retry:
>>>          }
>>>          attr = regc & BASER_ATTR_MASK;
>>>      }
>>> -    if ( (regc & GITS_BASER_INNER_CACHEABILITY_MASK) <= GIC_BASER_CACHE_nC )
>>> +    if ( ((regc & GITS_BASER_INNER_CACHEABILITY_MASK) >>
>>> +          GITS_BASER_INNER_CACHEABILITY_SHIFT) <= GIC_BASER_CACHE_nC )
>> Are you aware of MASK_EXTR()? This is one of the cases that we have it for.
>> Really all *_SHIFT constants should be purged, as they can be calculated
>> from their *_MASK counterparts (leveraging MASK_{EXTR,INSR}() to keep the
>> code readable).
> I wasn't aware of this macro, thanks. I will take a look.

As a general rule of thumb, where you've got a _MASK/_SHIFT pair, you
should be using MASK_INSR/EXTR and delete the shift constant.

It is is ~half the code (visually), and removes an entire class of
errors (mismatched constants).

~Andrew


From xen-devel-bounces@lists.xenproject.org Fri Apr 10 09:22:49 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Fri, 10 Apr 2026 09:22:49 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1278537.1563328 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wB84G-0005et-HW; Fri, 10 Apr 2026 09:22:24 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1278537.1563328; Fri, 10 Apr 2026 09:22: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 1wB84G-0005em-Ew; Fri, 10 Apr 2026 09:22:24 +0000
Received: by outflank-mailman (input) for mailman id 1278537;
 Fri, 10 Apr 2026 09:22:23 +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 1wB84E-0005eg-Tb
 for xen-devel@lists.xenproject.org; Fri, 10 Apr 2026 09:22:23 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wB84E-00GVjk-9P
 for xen-devel@lists.xenproject.org; Fri, 10 Apr 2026 11:22:22 +0200
Received: from [10.42.69.3] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <andrew.cooper@citrix.com>)
 id 69d8c147-bab6-0a2a0a5309dd-0a2a45039148-4
 for <xen-devel@lists.xenproject.org>; Fri, 10 Apr 2026 11:22:22 +0200
Received: from [52.101.53.55]
 (helo=BL0PR03CU003.outbound.protection.outlook.com)
 by tlsNG-33051d.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.0)
 (envelope-from <andrew.cooper@citrix.com>)
 id 69d8c14d-02b3-0a2a45030019-34653537f301-3
 for <xen-devel@lists.xenproject.org>; Fri, 10 Apr 2026 11:22:22 +0200
Received: from CH8PR03MB8275.namprd03.prod.outlook.com (2603:10b6:610:2b9::7)
 by CH4PR03MB7625.namprd03.prod.outlook.com (2603:10b6:610:235::12)
 with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9769.18; Fri, 10 Apr
 2026 09:22: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%6]) with mapi id 15.20.9769.018; Fri, 10 Apr 2026
 09:22: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=hVvUCMUNanezrWEnY2/YIVMvTc1id7NFihIj6BeMfJ9s6GTcakUeoxQtU/altxO2x6iFSxb2ych+GEbvfU7mlLgPhTAhkI9B9kOJRHI6IStphJH3VRoxyMcd5PiKNUiIBTnRApVvwY0N7RhjiJM9wqxpWLb666pa2lykOjlGpYi4Z2iqurDvz+CVXuFTAaQzwEbt4LTNC0CNjPzAEFAPCpV897ZArTrnodDd1bZ1JrCDluITkZLBAQxVfObFfINypyts+juzIkxuaUmmaBLe8mRDifDEvUk9HPzKgtNbMnfuYQFAm0z086OvY0jCPpyYujj9CD741YIq5kqZuo6olw==
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com;
 s=arcselector10001;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1;
 bh=SWi+ptAh+iUNz/K24C8UzRI31s1G7n9n9MvYxXxLBQw=;
 b=FxS/bYiW34+v165wHA7Mm3XGutywsuN5mZAO3GAOtDWmYWS+ct2+phBjADSwrbGyOvGpQUSNoUCSZkTtumzv+5QoBrYW6vZqkR0MRKoWCeO5TmFL5jqXmMKDKkxhdfS1pLe1i6g9U2/hNx70D+QCztzAkb2qCXgTXwvMR+29oHwY3mGnIpLOOwp/g8vF3zoJFn6uJg5ZGjXnaqmlR814n5bKzogtIPn+f5w53qqdVqLfvktC1v/BRkVGqn/lagsuRZ+Ap3lKTo1wbvX/zFD7QG2r4EkDvqVgasUcMF9eWBoXp9o9hbN8lDbEosyoIEXjaf8weB+mqk65a0oPsFaGdQ==
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=SWi+ptAh+iUNz/K24C8UzRI31s1G7n9n9MvYxXxLBQw=;
 b=AEs7pX4fz6oMSfjoiGwrB3Z7r5Zx/XAAyvxcPeQKQIPLVjvzwc+HGRUW6jUnr+FapyPpf65mQsJJzlDTKvRLxh1KfR60VIONRZog5RyjJL10LzXNmD0E3ojJKqCYpmXqTG92qfhnnb5Ixc8yTiID/JeUoIfmhIS2vfI6kCBiOkI=
Authentication-Results: dkim=none (message not signed)
 header.d=none;dmarc=none action=none header.from=citrix.com;
Message-ID: <85f76f74-8554-4000-8c39-623b83944648@citrix.com>
Date: Fri, 10 Apr 2026 10:22:15 +0100
User-Agent: Mozilla Thunderbird
Cc: Andrew Cooper <andrew.cooper3@citrix.com>, Jan Beulich
 <jbeulich@suse.com>, Teddy Astie <teddy.astie@vates.tech>,
 =?UTF-8?Q?Marek_Marczykowski-G=C3=B3recki?= <marmarek@invisiblethingslab.com>
Subject: Re: [PATCH] x86/time: do not kill calibration timer on suspend
To: Roger Pau Monne <roger.pau@citrix.com>, xen-devel@lists.xenproject.org
References: <20260410085504.32925-1-roger.pau@citrix.com>
Content-Language: en-GB
From: Andrew Cooper <andrew.cooper3@citrix.com>
In-Reply-To: <20260410085504.32925-1-roger.pau@citrix.com>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
X-ClientProxiedBy: LO4P123CA0260.GBRP123.PROD.OUTLOOK.COM
 (2603:10a6:600:194::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_|CH4PR03MB7625:EE_
X-MS-Office365-Filtering-Correlation-Id: bd639fab-7e3b-451a-ddfb-08de96e2a9d8
X-MS-Exchange-SenderADCheck: 1
X-MS-Exchange-AntiSpam-Relay: 0
X-Microsoft-Antispam:
	BCL:0;ARA:13230040|366016|376014|1800799024|22082099003|18002099003|56012099003;
X-Microsoft-Antispam-Message-Info:
	8EQdalglUQgDHvi7JL2vPmehYb4HOqMfNGLg3rWsQBkY2b6TGTfZRbJ7/QH0XhSRUd7v0pFT4XeoYVa87GYeW1MXAVDSBNQL/6lLWwCMvnwWXObAMT64O7MprcbRDVt2Vd8b5ZaOqg/Jh0g2/g3rfERgTr2eVSTFtye1w5u5KH/A3TEV620kpEEyem8RMcCdI6IJkLwGk3wQmlKpmCaoUh/YBDUi8tH05jWoUHY0PfKQoRcKlOXdN1s7LpjCpYrxCn/QzhZB+qPo6cqD96BRV5nbTvvnWCBrr5c2KmlgLUfXcp6ZbIegkIZygF5g8KjJNmrrHLct8bbuMAs0sLpbZJMQScjcjrxSfEqhnLV3jriEvO0UrhwFkHsCRrpw9HYxhtw9LAa7VA/HswC+W6DFe4EG4f0OlEiz9L+h5L4MdBPLbX/adsz+ZI8AE2xoBak6/WqBd+ouic4Bu4sURb4xP+Kdq9T77X+oFFC9axYGhw4lni21jMN55UD2dmyKHl5sQFRKWlkj44J+uOtRP3pqi20kGBvXxPgHtgAbHAgvKFraYVlpDy05eSYyvmwcU1VGflwjmHghrgNA36XCURfeVNZRjpMEExEN3iBu6R9tUs99JYwlstnP1uMeRHe5lDRLmOX5ysxtXX1N5t4rek0l1I3rQWaD4/mPctGY8+NfkdHlBZw9GAJCk+xPYWbiFCgvnoBcfUKMp9crGGO6nojLRvTcIuewXZQJoAXljCxHEhM=
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)(1800799024)(22082099003)(18002099003)(56012099003);DIR:OUT;SFP:1101;
X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1
X-MS-Exchange-AntiSpam-MessageData-0:
	=?utf-8?B?L1BJSnZJaXdiOFU1OWFCMExIbk9TYjlRUy9GeGtYQkNmZjVJdGI3d0JlelZt?=
 =?utf-8?B?MUdUZ3pFMEhMOGVPdlRWVW1zNHVvQ2hXZkc5dGpNeXpFMi9IRXAyN1AzSjQz?=
 =?utf-8?B?SzlCQk1tVStGdHFXWThqNzFWQ0lxMXZQUkJzOHdNczVVWjlaQmE0Mm5INHpn?=
 =?utf-8?B?dncwUitBT1Y0T3ZTUkFURVZwTGZJOHlyeExvcDc1elBRVk56ZG5OaUREV0l2?=
 =?utf-8?B?ZlEzRnpRQWRDSTUwaGFsdi9zbWNCUDZDaFpaOWtwL0plOGh0cnZ0ZWhOdWVT?=
 =?utf-8?B?bzQyVDBjUkRjM2ptdVgveGpNb2hzT1YreWkrVFJ5bEFTMExXT2UwUWFRWlQx?=
 =?utf-8?B?SXpjaVNidjYzTW9kMVBQMkp2aEo5MjhqazY0amtVL204cjRreE5aelJlUWhC?=
 =?utf-8?B?cFNKaThWWGw2YkFHVEpPRDBWSVhFNkwyazYzTllPdE8rQytiZ1NvK2hDU0hW?=
 =?utf-8?B?ejNUaDd2R1VGaWFzMnQ0ck9seDVPenM2d1ZGS2NjY2V0NEJtemVqb2dqaEo0?=
 =?utf-8?B?aVE2R0NCRlh3VlpFVXJGbzFLUk13STY1L1ZQOWdleVRNYmpOeUpzcmtWSFpx?=
 =?utf-8?B?Tmwyc1dDMFJVMmhKaEhHc3dpWFhrYlQ4VWJta1B2QUZiWHFDNEFvRWsyZXQ5?=
 =?utf-8?B?anJmNmhtWTRSM200Q2FFTDlSNHhWUGRmaUg3Zzc5TGRFUjFCeHBMcnhNZmpF?=
 =?utf-8?B?WnRjeUI3TUZZRDVRMXNDQ1NsYVdBNm9hVGNKK1NPQ0Z2YlFORXRjNmFRd0tn?=
 =?utf-8?B?by85Y3NFMjN1R3J2MkR3QUQxQXQxU2dYMG4zQnFnUVlhRjJsVkw4TFZuZE95?=
 =?utf-8?B?MlpyU0p6N2FJbDVHeG1TQmJqN0U4b2JmaGRLVlRvTDVkcGJlT1VRMWg2dmdF?=
 =?utf-8?B?Mm5EZy9xRmdUSjhQcUNEVytwNkpsQXNQTXhRcEdIbHZDUThaVHM3SmF1NVB3?=
 =?utf-8?B?S3B1UlU5QzhzSlhwMW10WEdmbUREMlhrWElPS1hwUkt1ZVg3bU1RbFBRWktY?=
 =?utf-8?B?Z3BjSWVWUU02aGdRZ2xpcUR2c2RSQkRyQnFKTjQ0RFJFSEhBcjJ0WDFjMUZz?=
 =?utf-8?B?bTJYZ3JRQmY1WjNtYXFKVTBseTlQOFljRDVhUElDSWVsRXdNdnlpR2ZmVFhm?=
 =?utf-8?B?VnpjY3hsYm5aUSt0ejZxSWIwRUpuelFacFBnMTU5NXE4Y1dDMGxreHFxV3Bo?=
 =?utf-8?B?V0tNNDcrQzA0L055bFRRZy9YT3VzMVk1dElyaFo1cHZ0QUhxYTZFblBod292?=
 =?utf-8?B?anN6QktQdFU4M1k1U1hzaUdSU2s0eXRLanNBV3liUmQ3Z0dFVFVFcFdhaDNB?=
 =?utf-8?B?ckFWYkxSMXZyaHd1YUc2TEt5QTExeHJ1OE5JakdkZmQwaUFYMllCRytxT0FB?=
 =?utf-8?B?M2dHTGpzMWJmNFJ1ekRuMVFtMnpxakZVMjlPL0pucW1HY0NiWC9RMFZSSUFk?=
 =?utf-8?B?R3B4ZzJWdXR5U2lhSWNHWmVFelAzZXVCMHd3bXMveUlhemQ3eDRYaDdFMWl5?=
 =?utf-8?B?VU9ZVFllMEVaU1YzQlpKa1lzZndzYW1iWEVwNnZ2dlBEYnk1RmtreXZ3cndV?=
 =?utf-8?B?QlVmcnFSVzRzZzFuWjNlUlY1Rms1bTRxVmJybUdMYTZhV3RCSHBJU2NBbzI5?=
 =?utf-8?B?aWoyVG0yRkVoZmI4WUZiblpMa1c5KzdUN3lSaXVpbVVHWFB5SjZGYkszR3NX?=
 =?utf-8?B?clN2dnorVXRHQW9SL25iYzQrRXE0cW5keExpRGpFY3FBQ3YrRFV2SGw1aHg5?=
 =?utf-8?B?MUZMTUgyTENGcDNHZXdrdWFWM2ZUZXdjSG5MYnFlVUtjQ2hqTXN4Q2JiZGcv?=
 =?utf-8?B?U2dNZEJrT0owVzNtc3d5bm1TWHdzVTczU3hCTi85VVVVaHNHT2w4bjE2ZS80?=
 =?utf-8?B?OXdTaDNBeU9vclIxREx4NWRYeXRRZ0kvdE10WG1oYVY5YitBbHZDZFIyTUtC?=
 =?utf-8?B?RmRxZXFDOXNRcjYwWHpYQmJkMHlOTERXWUF6ZjF0Zm15amoxcm1RVFVqQllY?=
 =?utf-8?B?SXQzMW1HVTdKWmlFOW1KSHlHNWN4WnZPTXc4ckRtamxiYUVIR2R6OGlkZDlj?=
 =?utf-8?B?MFFWZkNBb29SSk5IWlBoQXhsMTVnUDc5dzVaSERqR2FEYVA3SWxleVE3YTEz?=
 =?utf-8?B?VFFRY3daSGNkaEJFQmdtL3dQMHN1YmFuL0JJUk92N2VveldOS3lpWE05OFB4?=
 =?utf-8?B?S25jN2hsaGZoMzJWbi9aeWxaaHprOForSFN3eDFzcWxidWtVc1lNYWVsSUo3?=
 =?utf-8?B?MDluaklZelFtSExIbktxb1RaVDN0dm5SbDlzWGZzcGdRUGR4T2hsZEpoYlM0?=
 =?utf-8?B?T0RpTGRZNFFYeU5QdW5xU09qOVVCc3N4bWRlU2pKYUhGM0NQODFERDI1RHZs?=
 =?utf-8?Q?wK+A3ozgRf8/cRE4=3D?=
X-OriginatorOrg: citrix.com
X-MS-Exchange-CrossTenant-Network-Message-Id: bd639fab-7e3b-451a-ddfb-08de96e2a9d8
X-MS-Exchange-CrossTenant-AuthSource: CH8PR03MB8275.namprd03.prod.outlook.com
X-MS-Exchange-CrossTenant-AuthAs: Internal
X-MS-Exchange-CrossTenant-OriginalArrivalTime: 10 Apr 2026 09:22:19.0498
 (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: r9tA2cxhhYZ2evJXfNwEv+ckaFLZbX8PS83HuAmdULroxQ4Zdk4Cb/0X6tugHgf7fB1qIXDJRBGlJY17nZ0iSnbRl41CLNngTqdnbL78Tuk=
X-MS-Exchange-Transport-CrossTenantHeadersStamped: CH4PR03MB7625
X-purgate-ID: tlsNG-33051d/1775812942-42D1EC9A-D1FCD841/0/0
X-purgate-type: clean
X-purgate-size: 2024

On 10/04/2026 9:55 am, Roger Pau Monne wrote:
> A killed timer will ignore further set_timer() calls, and hence won't be
> re-armed unless it's initialized again.  Use stop_timer() instead of
> kill_timer() in time_suspend(), so that the set_timer() call in
> time_resume() successfully re-arms the timer.  Otherwise time calibration
> is no longer scheduled (and executed) after resuming from S3 suspend.
>
> Fixes: 6d90db1a2ca1 ("x86: rendezvous-based local time calibration")
> Reported-by: Marek Marczykowski-Górecki <marmarek@invisiblethingslab.com>
> Signed-off-by: Roger Pau Monné <roger.pau@citrix.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 fed30a919d2c..4233ea507d40 100644
> --- a/xen/arch/x86/time.c
> +++ b/xen/arch/x86/time.c
> @@ -2728,7 +2728,7 @@ int time_suspend(void)
>      {
>          cmos_utc_offset = -get_wallclock_time();
>          cmos_utc_offset += get_sec();
> -        kill_timer(&calibration_timer);
> +        stop_timer(&calibration_timer);
>  
>          /* Sync platform timer stamps. */
>          platform_time_calibration();

Reviewed-by: Andrew Cooper <andrew.cooper3@citrix.com>

This should definitely be stop timer and not kill timer.

However, the fact it "stops" drift after S3 really does concern me. 
There's clearly a different issue here which this is covering over.

The systems which we've been testing on all have ITSC so the TSC doesn't
drift.  Whether there's a step or not is a different question (I'd
expect firmware to arrange to avoid a step being seen), but a step would
not explain our symptoms.

Given it's only once a second, can we dump the scale/offset which the
rendezvous produced each time?

This feels suspiciously like we've gauged the frequency too fast, and
are relying on micro-fixes every second to keep time looking normal. 
(This is pure speculation; I don't any evidence).

~Andrew


From xen-devel-bounces@lists.xenproject.org Fri Apr 10 09:25:46 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Fri, 10 Apr 2026 09:25:46 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1278549.1563339 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wB87V-0006GF-4M; Fri, 10 Apr 2026 09:25:45 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1278549.1563339; Fri, 10 Apr 2026 09:25: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 1wB87V-0006G8-06; Fri, 10 Apr 2026 09:25:45 +0000
Received: by outflank-mailman (input) for mailman id 1278549;
 Fri, 10 Apr 2026 09:25:43 +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 1wB87S-0006Fw-UR
 for xen-devel@lists.xenproject.org; Fri, 10 Apr 2026 09:25:43 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wB87S-004RNF-AL
 for xen-devel@lists.xenproject.org; Fri, 10 Apr 2026 11:25:42 +0200
Received: from [10.42.69.8] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <jgross@suse.com>)
 id 69d8c20e-bab6-0a2a0a5309dd-0a2a450897e8-22
 for <xen-devel@lists.xenproject.org>; Fri, 10 Apr 2026 11:25:42 +0200
Received: from [209.85.218.54] (helo=mail-ej1-f54.google.com)
 by tlsNG-c1860d.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.0)
 (envelope-from <jgross@suse.com>)
 id 69d8c216-fab6-0a2a45080019-d155da36c558-3
 for <xen-devel@lists.xenproject.org>; Fri, 10 Apr 2026 11:25:42 +0200
Received: by mail-ej1-f54.google.com with SMTP id
 a640c23a62f3a-b9d6c8871c7so177355866b.1
 for <xen-devel@lists.xenproject.org>; Fri, 10 Apr 2026 02:25:42 -0700 (PDT)
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
 a640c23a62f3a-b9d6e7c8a4fsm61318866b.54.2026.04.10.02.25.41
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Fri, 10 Apr 2026 02:25:41 -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=google header.d=suse.com header.i="@suse.com" header.h="In-Reply-To:Autocrypt:From: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=1775813142; x=1776417942; darn=lists.xenproject.org;
        h=in-reply-to:autocrypt:from:content-language:references:to:subject
         :user-agent:mime-version:date:message-id:from:to:cc:subject:date
         :message-id:reply-to;
        bh=EUHK9ERWT2PABdE3T9P90L/Hy3+nYOVqiI1pT5huYr8=;
        b=D7LWLP2WACVJcRzgmqmfM8J6YYz8bpdRg+T/jXCwjmUQ0/idDLeGkKBM11fZS31AIx
         xOE/VW7oz2XQLeGTYhGpexGO13XCsV9Rh5Ut6vkW52a+RCA/jgoLqmgzxYvb4mN71fjt
         rN9/qhyIRboFdQbgieuo5TaxC1OoSvBgP+02YrBkho9TOC0basqXs6rt2zBwgh0Ch1f4
         DUhLOKO30lQlU7nSiK2btSUctl5aQ9fjv6GIWG0s9Pb+Nv2UU7Lqv4hKSLNu4uLGzYoB
         NftqHRhuBb4SRdc1NbQ2iPeVAWen5XcHjMW5HsNn99dbpEhdYylcf2cCNHNXRUtU3Anc
         5Wxg==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20251104; t=1775813142; x=1776417942;
        h=in-reply-to:autocrypt: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;
        bh=EUHK9ERWT2PABdE3T9P90L/Hy3+nYOVqiI1pT5huYr8=;
        b=EJ68NN3gkdEeO3i4rGSzJLr/G5WQYtcpXbU33DCxxxrGKzrj9iORKiyhFDuRhguu0l
         Ugw6IBourIH5OPt+9runqyG3E/tR8+YlOrkaTRH/TaCc2rE65JZPpAtDw17qvytGaz1/
         2Rr70BA1pKGtWltFD99M7cbVs/K4v1fZ4X3AZvH/+behMzEMCzCuICuDN0gSzRBp88fJ
         vuPa3pFT1Sy+rBKHakei7/DmB3D5iP5HQmaHzwVHEwrcnpg8bkYU39peuWZDMm+paJkB
         O8I/1yHm5+8Wd8q60MZYBVpCbauByxIqPy6hLof1N3Yp2CTIXwooR1+k6NaoBjs5wJl3
         ezFA==
X-Forwarded-Encrypted: i=1; AJvYcCXbNNTlc3Q3E/tM9nhkxRNJwtHs5KS7aasyJC1y7KTtK0wMeyPhZzZrV42420ZkgNunL8MtXmQYK5w=@lists.xenproject.org
X-Gm-Message-State: AOJu0YyCzH53/yaUAuPKttZquii0XcbB2ZSpAYWBWOPA7zJsZq46qy88
	jd2hy52k09elPRO/HfY/nmoK+n8vnVckOnw1iJFPNvlOMuV73+hy/h8EW3CvBn/ICOhXVxN2DFB
	hG9Vxxcc=
X-Gm-Gg: AeBDieuBKPw/hnpf2/jH3h8dXxbJ1ZDa6z0XBg6/aHi8ZZO/r3th73DSIeaej4mdaME
	OXkRoFsgtygU4azdYB1WHfPwqg6knmlWmuLv7PmN02yyK4dxcQl7IZm3Rttstxnv638b2Iid/wb
	VYpDFnB3CbS+WT5kGfxXYNzS9yujBLIVTtrdPOoreneKfSF+JXtKhC0TxUfSfv6gO/YE8LjxOza
	RKGL+4JMVj4h5+Xl3ZP8VCZ7JhyCSnZxeVvvzr/B6aRgTcizh4yRdnCLA0Y9t8EFMjCwxJuuqWA
	GMbzbhsnqGkjornum9C6pJqktyArefjuE4lziJUGLN7qYYvY1XJLA4+eh7xUPD2lyADGTOqIMq7
	YwQ7SQicL04jgi3MCmVYGqqswuaGWrvgPuWIDfBNFFXfsTUM4d5N4C3zbLOoWODqV4XWpBwy/Qn
	9NR6g8oM5PtLTr6hxOpoDqgaqSfbGDTjAYDKqJ3mfnIDQcm0DnyeahplBuwvwZnR6WrA3n1BjQv
	DAioFN7b3LwUxZgsQwgKioRt/NNh0kNmWNZmXhQ8erUhpa1gBMUCw==
X-Received: by 2002:a17:907:a4b:b0:b99:7462:3c57 with SMTP id a640c23a62f3a-b9d7248408cmr154529666b.14.1775813141415;
        Fri, 10 Apr 2026 02:25:41 -0700 (PDT)
Message-ID: <e4560dce-a95b-405b-b637-b75ec15497d7@suse.com>
Date: Fri, 10 Apr 2026 11:25:40 +0200
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH] hypfs: remove unreachable statement in the
 'hypfs_get_entry_rel()'
To: Dmytro Prokopchuk1 <dmytro_prokopchuk1@epam.com>,
 "xen-devel@lists.xenproject.org" <xen-devel@lists.xenproject.org>
References: <341811ced2943fb79d0235c27781c564c7bdaf02.1775749146.git.dmytro_prokopchuk1@epam.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: <341811ced2943fb79d0235c27781c564c7bdaf02.1775749146.git.dmytro_prokopchuk1@epam.com>
Content-Type: multipart/signed; micalg=pgp-sha256;
 protocol="application/pgp-signature";
 boundary="------------U4sdEceuh3JojFJ0MTcwOkSx"
X-purgate-ID: tlsNG-c1860d/1775813142-F674E497-C5A0D6C6/0/0
X-purgate-type: clean
X-purgate-size: 6740

This is an OpenPGP/MIME signed message (RFC 4880 and 3156)
--------------U4sdEceuh3JojFJ0MTcwOkSx
Content-Type: multipart/mixed; boundary="------------xlY21cHbPB44Bz9083xxDk0N";
 protected-headers="v1"
From: =?UTF-8?B?SsO8cmdlbiBHcm/Dnw==?= <jgross@suse.com>
To: Dmytro Prokopchuk1 <dmytro_prokopchuk1@epam.com>,
 "xen-devel@lists.xenproject.org" <xen-devel@lists.xenproject.org>
Message-ID: <e4560dce-a95b-405b-b637-b75ec15497d7@suse.com>
Subject: Re: [PATCH] hypfs: remove unreachable statement in the
 'hypfs_get_entry_rel()'
References: <341811ced2943fb79d0235c27781c564c7bdaf02.1775749146.git.dmytro_prokopchuk1@epam.com>
In-Reply-To: <341811ced2943fb79d0235c27781c564c7bdaf02.1775749146.git.dmytro_prokopchuk1@epam.com>

--------------xlY21cHbPB44Bz9083xxDk0N
Content-Type: multipart/mixed; boundary="------------g1D5yj02SAeTsyFXJAmO900y"

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

T24gMDkuMDQuMjYgMTc6NTUsIERteXRybyBQcm9rb3BjaHVrMSB3cm90ZToNCj4gVGhlIHN0
YXRlbWVudCAncmV0dXJuIEVSUl9QVFIoLUVOT0VOVCk7JyBvbiB0aGUgZmluYWwgbGluZSBv
ZiB0aGUgZnVuY3Rpb24NCj4gJ2h5cGZzX2dldF9lbnRyeV9yZWwoKScgaXMgdW5yZWFjaGFi
bGUgYmVjYXVzZSB0aGUgbG9naWMgd2l0aGluIHRoZSBpbmZpbml0ZQ0KPiBsb29wICdmb3Ig
KDs7KScgcHJvdmlkZXMgYWxsIHBvc3NpYmxlIGV4aXQgcGF0aHMgZm9yIHRoZSBmdW5jdGlv
bi4gU28gdGhlcmUNCj4gaXMgbm8gZXhlY3V0aW9uIHBhdGggdG8gZXhpdCB0aGUgbG9vcCBh
bmQgcmVhY2ggdGhlIGZpbmFsIHRoYXQgc3RhdGVtZW50Lg0KPiANCj4gUmVtb3ZlIHRoYXQg
c3RhdGVtZW50LiBUaGlzIGFsc28gZml4ZXMgTUlTUkEgQyBSdWxlIDIuMSB3aGljaCBzdGF0
ZXM6DQo+ICJBIHByb2plY3Qgc2hhbGwgbm90IGNvbnRhaW4gdW5yZWFjaGFibGUgY29kZSIu
DQo+IA0KPiBTaWduZWQtb2ZmLWJ5OiBEbXl0cm8gUHJva29wY2h1ayA8ZG15dHJvX3Byb2tv
cGNodWsxQGVwYW0uY29tPg0KDQpSZXZpZXdlZC1ieTogSnVlcmdlbiBHcm9zcyA8amdyb3Nz
QHN1c2UuY29tPg0KDQoNCkp1ZXJnZW4NCg==
--------------g1D5yj02SAeTsyFXJAmO900y
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-----

--------------g1D5yj02SAeTsyFXJAmO900y--

--------------xlY21cHbPB44Bz9083xxDk0N--

--------------U4sdEceuh3JojFJ0MTcwOkSx
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/Ey8FAmnYwhQFAwAAAAAACgkQsN6d1ii/Ey8z
HAf+NhzYRx94dG9zbgM1XpN1rDftOKb58I7HKBIiOdU6DjkWRYqqAKo3wDOR8mY2bh1KuEEnqrSj
kRuofJlSXq/y6qaa/Hy3EC67OBZNS8YpZSYvLN/c4gwex0hKOj3PQ358MZAHYrYnjdVQwj1e/vVZ
9drk8L79r1Y5Ju3hOsaaxnmuQrZ7Ke2ldfiRMhczdlwuiG0w468ZolJCemU2JVde8fUBMp+qbTDp
uvxIbtxZHQ2WUBKKKp5TBle93PibGPID9Mb3kzvTDDdDDFQjedJ5nx0D8rfjzxJVflZTWEUrgBEj
KbsGpIlM01JVSGhlhHVcH25enJE3Eq2lyUymf7FXeQ==
=9KXw
-----END PGP SIGNATURE-----

--------------U4sdEceuh3JojFJ0MTcwOkSx--


From xen-devel-bounces@lists.xenproject.org Fri Apr 10 09:26:16 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Fri, 10 Apr 2026 09:26:16 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1278558.1563348 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wB880-0006hx-CM; Fri, 10 Apr 2026 09:26:16 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1278558.1563348; Fri, 10 Apr 2026 09: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 1wB880-0006ho-84; Fri, 10 Apr 2026 09:26:16 +0000
Received: by outflank-mailman (input) for mailman id 1278558;
 Fri, 10 Apr 2026 09:26:15 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <bounce-md_30504962.69d8c234.v1-e8385e73c0454e59839060e1a48cc0ce@bounce.vates.tech>)
 id 1wB87z-0006gP-2s
 for xen-devel@lists.xenproject.org; Fri, 10 Apr 2026 09:26:15 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wB87y-00GWQO-Ej
 for xen-devel@lists.xenproject.org; Fri, 10 Apr 2026 11:26:14 +0200
Received: from [10.42.69.4] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1) (envelope-from
 <bounce-md_30504962.69d8c234.v1-e8385e73c0454e59839060e1a48cc0ce@bounce.vates.tech>)
 id 69d8c227-bab6-0a2a0a5309dd-0a2a4504e760-34
 for <xen-devel@lists.xenproject.org>; Fri, 10 Apr 2026 11:26:14 +0200
Received: from [198.2.187.14] (helo=mail187-14.suw11.mandrillapp.com)
 by tlsNG-ebf023.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.0)
 (envelope-from
 <bounce-md_30504962.69d8c234.v1-e8385e73c0454e59839060e1a48cc0ce@bounce.vates.tech>)
 id 69d8c235-bb33-0a2a45040019-c602bb0ebde0-3
 for <xen-devel@lists.xenproject.org>; Fri, 10 Apr 2026 11:26:14 +0200
Received: from pmta09.mandrill.prod.suw01.rsglab.com (localhost [127.0.0.1])
 by mail187-14.suw11.mandrillapp.com (Mailchimp) with ESMTP id
 4fsWdJ5V3kz8XS6n3
 for <xen-devel@lists.xenproject.org>; Fri, 10 Apr 2026 09:26:12 +0000 (GMT)
Received: from [37.26.189.201] by mandrillapp.com id
 e8385e73c0454e59839060e1a48cc0ce; Fri, 10 Apr 2026 09:26: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=mte1 header.d=mandrillapp.com header.i="@mandrillapp.com" header.h="From:Subject:Message-Id:To:Cc:References:In-Reply-To:Feedback-ID:Date:MIME-Version:Content-Type:Content-Transfer-Encoding"; dkim=pass header.s=mte1 header.d=vates.tech header.i="teddy.astie@vates.tech" header.h="From:Subject:Message-Id:To:Cc:References:In-Reply-To:Feedback-ID:Date:MIME-Version:Content-Type:Content-Transfer-Encoding"
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=mandrillapp.com;
	s=mte1; t=1775813172; x=1776083172;
	bh=MN57+wFD3YMSu+hnCyiMaTNNIg+kDpL+iSz3lyloMgY=;
	h=From:Subject:Message-Id:To:Cc:References:In-Reply-To:Feedback-ID:
	 Date:MIME-Version:Content-Type:Content-Transfer-Encoding:CC:Date:
	 Subject:From;
	b=XrES4pPDXzksgmBdmieUdtHN8sQsbJj5U/zSq7eNeArp9prDarQjFYnRGzfRPi5Kc
	 8hS6TyjTUTOVal2D6ZJhxrK7WK03TgTavVq1kKBvjfD/opN6tffBmIWqHfh52N0n3B
	 yFzIgkCxyMmaRIRU0oKiqi0gElQaZ0dctbaM3iyH3CICyn7LEAl7aINqeIp1GwdVYe
	 QcR7IqwIY1EFw9m99RzeSnvXvCo4DEzCgSxUWQKJVfVduq+nUKtEyF3hc2XtVHL2bb
	 kWuiNVfWAsRu0LvxD/kiAfB3BJESZKIEgWeJhAN6+v9v96tk9tkSQvvpTUiv7gDNfN
	 mVqWZ4iVNQFFg==
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=vates.tech; s=mte1;
	t=1775813172; x=1776073672; i=teddy.astie@vates.tech;
	bh=MN57+wFD3YMSu+hnCyiMaTNNIg+kDpL+iSz3lyloMgY=;
	h=From:Subject:Message-Id:To:Cc:References:In-Reply-To:Feedback-ID:
	 Date:MIME-Version:Content-Type:Content-Transfer-Encoding:CC:Date:
	 Subject:From;
	b=t0OteAOWCBimQDuo67L8ZJdOdmYFdhqYVKAD83HzR053udULN6UB1jtUbiw7rjZaN
	 7lbbew+67tzLXULPJvZshon0yjVxQCnLkUv2D5w8Bk7urQI6KZ0zjE9s0FX8Uv3slL
	 trB+sHMRUOocs7wtJOZtu7QZSIQ0BnNaQYfT1Ln7cY0Mmv6H8q7P5H54EcwmwW15FU
	 yoVS11ozG6M0U40PRWZir0wzITeKB8MAuMTNQDWd2v51ykHqoJmydso69zLwiL7V/W
	 LFOq5CtqaLElKEbsvVVAh+0r3NCEx7YV1UIKM6KXdmv11f5QBsRkcNXdrHTajF8rlw
	 3caNT0vJmQYSQ==
From: "Teddy Astie" <teddy.astie@vates.tech>
Subject: =?utf-8?Q?Re:=20[PATCH=20v4=2000.9/16]=20x86/CPUID:=20enable=20AVX10=20leaf?=
X-Bm-Disclaimer: Yes
X-Bm-Milter-Handled: 4ffbd6c1-ee69-4e1b-aabd-f977039bd3e2
X-Bm-Transport-Timestamp: 1775813171619
Message-Id: <029ab247-b8a1-4961-80ab-5b13e5c7aa77@vates.tech>
To: "Jan Beulich" <jbeulich@suse.com>, xen-devel@lists.xenproject.org
Cc: "Andrew Cooper" <andrew.cooper3@citrix.com>, "=?utf-8?Q?Roger=20Pau=20Monn=C3=A9?=" <roger.pau@citrix.com>
References: <1e2ff012-b07a-43be-9ba6-290b38d3c97c@suse.com> <bdf60f69-6d1f-4332-9575-671d475c542e@suse.com>
In-Reply-To: <bdf60f69-6d1f-4332-9575-671d475c542e@suse.com>
X-Native-Encoded: 1
X-Report-Abuse: =?UTF-8?Q?Please=20forward=20a=20copy=20of=20this=20message,=20including=20all=20headers,=20to=20abuse@mandrill.com.=20You=20can=20also=20report=20abuse=20here:=20https://mandrillapp.com/contact/abuse=3Fid=3D30504962.e8385e73c0454e59839060e1a48cc0ce?=
X-Mandrill-User: md_30504962
Feedback-ID: 30504962:30504962.20260410:md
Date: Fri, 10 Apr 2026 09:26:12 +0000
MIME-Version: 1.0
Content-Type: text/plain; charset=utf-8
Content-Transfer-Encoding: quoted-printable
X-purgate-ID: tlsNG-ebf023/1775813174-B0B2851B-190ED84D/0/0
X-purgate-type: clean
X-purgate-size: 15738

Le 09/04/2026 =C3=A0 17:18, Jan Beulich a =C3=A9crit=C2=A0:
> This requires bumping the number of basic leaves we support. Apart from
> this the logic is modeled as closely as possible after that of leaf 7
> handling.
> 
> Signed-off-by: Jan Beulich <jbeulich@suse.com>
> ---
> The gen-cpuid.py adjustment is merely the minimum needed. It's not
> really clear to me whether someone turning off e.g. AVX512BW might then
> also validly expect AVX10 to be turned off.
> 

AFAIUI, AVX512BW is a dependency of AVX10, as AVX10 implies that the 
former is available.

> Do we want to synthesize AVX10 in the (max?) policies when all necessary
> AVX512* features are available, thus allowing migration from an AVX10
> host to a suitable non-AVX10 one?
> 

I guess we want, there is not really a reason to not allow it.

Some software may check for AVX10 only, and not check for individual 
AVX512 bits.

> The prior vsz<N> bits are now defined as reserved-at-1: No idea yet how
> to represent this properly.
> 
> How a toolstack side equivalent (if any) of the init_dom0_cpuid_policy()
> change would look like is entirely unclear to me. How much should we
> take from the max policy, and how much should we permit/require the user
> to specify (and how would the latter look like)?
> 
> While, as per a comment next to the call site of
> recalculate_cpuid_policy(), recalculate_*() are supposed to go away when
> x86_cpu_policies_are_compatible() is complete, some of the checking done
> in recalculate_misc() really wouldn't below there. We'd need another "is
> self-consistent" checking function.
> ---
> v4: Drop all traces of AVX10/256. Add max_subleaf check to
>      x86_cpu_policies_are_compatible(). Add/adjust vsz<N> checks in
>      recalculate_misc(). In the max policies, synthesize AVX512* when
>      AVX10 is available.
> v3: Re-base.
> v2: Add logic to init_dom0_cpuid_policy(). Drop vsz128 field. Re-base.
> 
> --- a/xen/arch/x86/cpu-policy.c
> +++ b/xen/arch/x86/cpu-policy.c
> @@ -211,7 +211,7 @@ static void recalculate_xstate(struct cp
>       if ( p->feat.mpx )
>           xstates |=3D X86_XCR0_BNDREGS | X86_XCR0_BNDCSR;
>   
> -    if ( p->feat.avx512f )
> +    if ( p->feat.avx512f || p->feat.avx10 )

In principle, the avx10 check is redundant as avx512f must be set if 
avx10 is set.

>           xstates |=3D X86_XCR0_OPMASK | X86_XCR0_ZMM | X86_XCR0_HI_ZMM;
>   
>       if ( p->feat.pku )
> @@ -272,6 +272,18 @@ static void recalculate_misc(struct cpu_
>   
>       p->basic.raw[0xc] =3D EMPTY_LEAF;
>   
> +    zero_leaves(p->basic.raw, 0xe, 0x23);
> +
> +    p->avx10.raw[0].b &=3D 0x000700ff;
> +    p->avx10.raw[0].c =3D 0;
> +    p->avx10.raw[0].d =3D 0;
> +    if ( !p->feat.avx10 || !p->avx10.version ||
> +         !p->avx10.vsz512 || !p->avx10.vsz256 || !p->avx10.vsz128 )
> +    {
> +        p->feat.avx10 =3D false;
> +        memset(p->avx10.raw, 0, sizeof(p->avx10.raw));
> +    }
> +
>       p->extd.e1d &=3D ~CPUID_COMMON_1D_FEATURES;
>   
>       /* Most of Power/RAS hidden from guests. */
> @@ -400,6 +412,7 @@ static void __init guest_common_max_leav
>   {
>       p->basic.max_leaf       =3D ARRAY_SIZE(p->basic.raw) - 1;
>       p->feat.max_subleaf     =3D ARRAY_SIZE(p->feat.raw) - 1;
> +    p->avx10.max_subleaf    =3D ARRAY_SIZE(p->avx10.raw) - 1;
>       p->extd.max_leaf        =3D 0x80000000U + ARRAY_SIZE(p->extd.raw) -=
 1;
>   }
>   
> @@ -408,6 +421,7 @@ static void __init guest_common_default_
>   {
>       p->basic.max_leaf       =3D host_cpu_policy.basic.max_leaf;
>       p->feat.max_subleaf     =3D host_cpu_policy.feat.max_subleaf;
> +    p->avx10.max_subleaf    =3D host_cpu_policy.avx10.max_subleaf;
>       p->extd.max_leaf        =3D host_cpu_policy.extd.max_leaf;
>   }
>   
> @@ -503,6 +517,28 @@ static void __init guest_common_max_feat
>        * function correctly when migrated here, even if ERMS isn't availa=
ble.
>        */
>       __set_bit(X86_FEATURE_ERMS, fs);
> +
> +    /*
> +     * AVX10 is merely a re-declaration of a combination of AVX512 featu=
res.
> +     * Synthesize the latter from the former, when available.  Doing it =
the
> +     * other way around would also require synthesizing the AVX10 CPUID =
leaf.
> +     */
> +    if ( test_bit(X86_FEATURE_AVX10, fs) )
> +    {
> +        __set_bit(X86_FEATURE_AVX512F, fs);
> +        __set_bit(X86_FEATURE_AVX512VL, fs);
> +        __set_bit(X86_FEATURE_AVX512BW, fs);
> +        __set_bit(X86_FEATURE_AVX512DQ, fs);
> +        __set_bit(X86_FEATURE_AVX512_BF16, fs);
> +        __set_bit(X86_FEATURE_AVX512_FP16, fs);
> +        __set_bit(X86_FEATURE_AVX512CD, fs);
> +        __set_bit(X86_FEATURE_AVX512_BITALG, fs);
> +        __set_bit(X86_FEATURE_AVX512_IFMA, fs);
> +        __set_bit(X86_FEATURE_AVX512_VBMI, fs);
> +        __set_bit(X86_FEATURE_AVX512_VBMI2, fs);
> +        __set_bit(X86_FEATURE_AVX512_VNNI, fs);
> +        __set_bit(X86_FEATURE_AVX512_VPOPCNTDQ, fs);
> +    }
>   }
>   
>   static void __init guest_common_default_feature_adjustments(uint32_t *f=
s)
> @@ -966,6 +1002,7 @@ void recalculate_cpuid_policy(struct dom
>   
>       p->basic.max_leaf   =3D min(p->basic.max_leaf,   max->basic.max_lea=
f);
>       p->feat.max_subleaf =3D min(p->feat.max_subleaf, max->feat.max_subl=
eaf);
> +    p->avx10.max_subleaf =3D min(p->avx10.max_subleaf, max->avx10.max_su=
bleaf);
>       p->extd.max_leaf    =3D 0x80000000U | min(p->extd.max_leaf & 0xffff=
,
>                                               ((p->x86_vendor & (X86_VEND=
OR_AMD |
>                                                                  X86_VEND=
OR_HYGON))
> @@ -1012,6 +1049,8 @@ void recalculate_cpuid_policy(struct dom
>   
>       if ( p->basic.max_leaf < XSTATE_CPUID )
>           __clear_bit(X86_FEATURE_XSAVE, fs);
> +    if ( p->basic.max_leaf < 0x24 )
> +        __clear_bit(X86_FEATURE_AVX10, fs);
>   
>       sanitise_featureset(fs);
>   
> @@ -1081,9 +1120,18 @@ void __init init_dom0_cpuid_policy(struc
>       /* Apply dom0-cpuid=3D command line settings, if provided. */
>       if ( dom0_cpuid_cmdline )
>       {
> +        const struct cpu_policy *max =3D is_pv_domain(d)
> +            ? (IS_ENABLED(CONFIG_PV)  ?  &pv_max_cpu_policy : NULL)
> +            : (IS_ENABLED(CONFIG_HVM) ? &hvm_max_cpu_policy : NULL);
>           uint32_t fs[FSCAPINTS];
>           unsigned int i;
>   
> +        if ( !max )
> +        {
> +            ASSERT_UNREACHABLE();
> +            return;
> +        }
> +
>           x86_cpu_policy_to_featureset(p, fs);
>   
>           for ( i =3D 0; i < ARRAY_SIZE(fs); ++i )
> @@ -1093,6 +1141,13 @@ void __init init_dom0_cpuid_policy(struc
>           }
>   
>           x86_cpu_featureset_to_policy(fs, p);
> +
> +        /*
> +         * Default-off features with their own leaves need those leaves
> +         * re-populated from the max policy.
> +         */
> +        if ( p->feat.avx10 )
> +            p->avx10 =3D max->avx10;
>       }
>   
>       /*
> @@ -1125,6 +1180,8 @@ static void __init __maybe_unused build_
>                    sizeof(raw_cpu_policy.feat.raw));
>       BUILD_BUG_ON(sizeof(raw_cpu_policy.xstate) !=3D
>                    sizeof(raw_cpu_policy.xstate.raw));
> +    BUILD_BUG_ON(sizeof(raw_cpu_policy.avx10) !=3D
> +                 sizeof(raw_cpu_policy.avx10.raw));
>       BUILD_BUG_ON(sizeof(raw_cpu_policy.extd) !=3D
>                    sizeof(raw_cpu_policy.extd.raw));
>   }
> --- a/xen/arch/x86/cpuid.c
> +++ b/xen/arch/x86/cpuid.c
> @@ -226,6 +226,15 @@ void guest_cpuid(const struct vcpu *v, u
>               *res =3D array_access_nospec(p->xstate.raw, subleaf);
>               break;
>   
> +        case 0x24:
> +            ASSERT(p->avx10.max_subleaf < ARRAY_SIZE(p->avx10.raw));
> +            if ( subleaf > min_t(uint32_t, p->avx10.max_subleaf,
> +                                 ARRAY_SIZE(p->avx10.raw) - 1) )
> +                return;
> +
> +            *res =3D array_access_nospec(p->avx10.raw, subleaf);
> +            break;
> +
>           default:
>               *res =3D array_access_nospec(p->basic.raw, leaf);
>               break;
> --- a/xen/arch/x86/lib/cpu-policy/copy-to-buffer.c
> +++ b/xen/arch/x86/lib/cpu-policy/copy-to-buffer.c
> @@ -123,6 +123,13 @@ int x86_cpuid_copy_to_buffer(const struc
>               break;
>           }
>   
> +        case 0x24:
> +            for ( subleaf =3D 0;
> +                  subleaf <=3D MIN(p->avx10.max_subleaf,
> +                                 ARRAY_SIZE(p->avx10.raw) - 1); ++sublea=
f )
> +                COPY_LEAF(leaf, subleaf, &p->avx10.raw[subleaf]);
> +            break;
> +
>           default:
>               COPY_LEAF(leaf, XEN_CPUID_NO_SUBLEAF, &p->basic.raw[leaf]);
>               break;
> --- a/xen/arch/x86/lib/cpu-policy/copy-from-buffer.c
> +++ b/xen/arch/x86/lib/cpu-policy/copy-from-buffer.c
> @@ -108,6 +108,13 @@ int x86_cpuid_copy_from_buffer(struct cp
>                   array_access_nospec(p->xstate.raw, data.subleaf) =3D l;
>                   break;
>   
> +            case 0x24:
> +                if ( data.subleaf >=3D ARRAY_SIZE(p->avx10.raw) )
> +                    goto out_of_range;
> +
> +                array_access_nospec(p->avx10.raw, data.subleaf) =3D l;
> +                break;
> +
>               default:
>                   if ( data.subleaf !=3D XEN_CPUID_NO_SUBLEAF )
>                       goto out_of_range;
> --- a/xen/arch/x86/lib/cpu-policy/cpuid.c
> +++ b/xen/arch/x86/lib/cpu-policy/cpuid.c
> @@ -125,6 +125,7 @@ void x86_cpu_policy_fill_native(struct c
>           switch ( i )
>           {
>           case 0x4: case 0x7: case 0xb: case 0xd:
> +        case 0x24:
>               /* Multi-invocation leaves.  Deferred. */
>               continue;
>           }
> @@ -218,6 +219,15 @@ void x86_cpu_policy_fill_native(struct c
>           }
>       }
>   
> +    if ( p->basic.max_leaf >=3D 0x24 )
> +    {
> +        cpuid_count_leaf(0x24, 0, &p->avx10.raw[0]);
> +
> +        for ( i =3D 1; i <=3D MIN(p->avx10.max_subleaf,
> +                              ARRAY_SIZE(p->avx10.raw) - 1); ++i )
> +            cpuid_count_leaf(0x24, i, &p->avx10.raw[i]);

Do we need to split the 0 iteration out ? I guess we can just start from 
i =3D 0 instead.

> +    }
> +
>       /* Extended leaves. */
>       cpuid_leaf(0x80000000U, &p->extd.raw[0]);
>       for ( i =3D 1; i <=3D MIN(p->extd.max_leaf & 0xffffU,
> @@ -287,6 +297,9 @@ void x86_cpu_policy_clear_out_of_range_l
>                       ARRAY_SIZE(p->xstate.raw) - 1);
>       }
>   
> +    if ( p->basic.max_leaf < 0x24 )
> +        memset(p->avx10.raw, 0, sizeof(p->avx10.raw));
> +
>       zero_leaves(p->extd.raw,
>                   ((p->extd.max_leaf >> 16) =3D=3D 0x8000
>                    ? (p->extd.max_leaf & 0xffff) + 1 : 0),
> @@ -299,6 +312,8 @@ void __init x86_cpu_policy_bound_max_lea
>           min_t(uint32_t, p->basic.max_leaf, ARRAY_SIZE(p->basic.raw) - 1=
);
>       p->feat.max_subleaf =3D
>           min_t(uint32_t, p->feat.max_subleaf, ARRAY_SIZE(p->feat.raw) - =
1);
> +    p->avx10.max_subleaf =3D
> +        min_t(uint32_t, p->avx10.max_subleaf, ARRAY_SIZE(p->avx10.raw) -=
 1);
>       p->extd.max_leaf =3D 0x80000000U | min_t(uint32_t, p->extd.max_leaf=
 & 0xffff,
>                                              ARRAY_SIZE(p->extd.raw) - 1)=
;
>   }
> @@ -326,6 +341,8 @@ void x86_cpu_policy_shrink_max_leaves(st
>        */
>       p->basic.raw[0xd] =3D p->xstate.raw[0];
>   
> +    p->basic.raw[0x24] =3D p->avx10.raw[0];
> +
>       for ( i =3D p->basic.max_leaf; i; --i )
>           if ( p->basic.raw[i].a | p->basic.raw[i].b |
>                p->basic.raw[i].c | p->basic.raw[i].d )
> --- a/xen/arch/x86/lib/cpu-policy/policy.c
> +++ b/xen/arch/x86/lib/cpu-policy/policy.c
> @@ -24,6 +24,10 @@ int x86_cpu_policies_are_compatible(cons
>       if ( guest->feat.max_subleaf > host->feat.max_subleaf )
>           FAIL_CPUID(7, 0);
>   
> +    if ( guest->avx10.version > host->avx10.version ||
> +         guest->avx10.max_subleaf > host->avx10.max_subleaf )
> +        FAIL_CPUID(0x24, 0);
> +
>       if ( guest->extd.max_leaf > host->extd.max_leaf )
>           FAIL_CPUID(0x80000000U, NA);
>   
> --- a/xen/include/public/arch-x86/cpufeatureset.h
> +++ b/xen/include/public/arch-x86/cpufeatureset.h
> @@ -366,6 +366,7 @@ XEN_CPUFEATURE(PREFETCHI,          15*32
>   XEN_CPUFEATURE(USER_MSR,           15*32+15) /*s  U{RD,WR}MSR Instructi=
ons */
>   XEN_CPUFEATURE(UIRET_UIF,          15*32+17) /*   UIRET updates UIF */
>   XEN_CPUFEATURE(CET_SSS,            15*32+18) /*   CET Supervisor Shadow=
 Stacks safe to use */
> +XEN_CPUFEATURE(AVX10,              15*32+19) /*   AVX10 Converged Vector=
 ISA */
>   XEN_CPUFEATURE(SLSM,               15*32+24) /*   Static Lockstep Mode =
*/
>   
>   /* Intel-defined CPU features, MSR_ARCH_CAPS 0x10a.eax, word 16 */
> --- a/xen/include/xen/lib/x86/cpu-policy.h
> +++ b/xen/include/xen/lib/x86/cpu-policy.h
> @@ -59,11 +59,12 @@ unsigned int x86_cpuid_lookup_vendor(uin
>    */
>   const char *x86_cpuid_vendor_to_str(unsigned int vendor);
>   
> -#define CPUID_GUEST_NR_BASIC      (0xdu + 1)
> +#define CPUID_GUEST_NR_BASIC      (0x24u + 1)
>   #define CPUID_GUEST_NR_CACHE      (5u + 1)
>   #define CPUID_GUEST_NR_FEAT       (2u + 1)
>   #define CPUID_GUEST_NR_TOPO       (1u + 1)
>   #define CPUID_GUEST_NR_XSTATE     (62u + 1)
> +#define CPUID_GUEST_NR_AVX10      (0u + 1)

Intel specification now defines AVX10.2 which has a additional leaf 
(even though the whole leaf is currently marked as "reserved").

>   #define CPUID_GUEST_NR_EXTD_INTEL (0x8u + 1)
>   #define CPUID_GUEST_NR_EXTD_AMD   (0x21u + 1)
>   #define CPUID_GUEST_NR_EXTD       MAX(CPUID_GUEST_NR_EXTD_INTEL, \
> @@ -264,6 +265,19 @@ struct cpu_policy
>           } comp[CPUID_GUEST_NR_XSTATE];
>       } xstate;
>   
> +    /* Structured AVX10 information leaf: 0x000000024[xx] */
> +    union {
> +        struct cpuid_leaf raw[CPUID_GUEST_NR_AVX10];
> +        struct {
> +            /* Subleaf 0. */
> +            uint32_t max_subleaf;
> +            uint32_t version:8, :8;
> +            bool vsz128:1, vsz256:1, vsz512:1;
> +            uint32_t :13;
> +            uint32_t /* c */:32, /* d */:32;
> +        };
> +    } avx10;
> +
>       /* Extended leaves: 0x800000xx */
>       union {
>           struct cpuid_leaf raw[CPUID_GUEST_NR_EXTD];
> --- a/xen/tools/gen-cpuid.py
> +++ b/xen/tools/gen-cpuid.py
> @@ -294,7 +294,7 @@ def crunch_numbers(state):
>           # enabled.  Certain later extensions, acting on 256-bit vectors=
 of
>           # integers, better depend on AVX2 than AVX.
>           AVX2: [AVX512F, VAES, VPCLMULQDQ, AVX_VNNI, AVX_IFMA, AVX_VNNI_=
INT8,
> -               AVX_VNNI_INT16, SHA512, SM4],
> +               AVX_VNNI_INT16, SHA512, SM4, AVX10],
>   

I think we can instead make AVX10 a dependency on AVX512. Especially since

 > Any processor that enumerates support for Intel AVX10 will also 
enumerate support for Intel AVX, Intel AVX2, and Intel AVX-512 (see 
Table 16-2).

with AVX-512 depending on AVX2.

>           # AVX512F is taken to mean hardware support for 512bit register=
s
>           # (which in practice depends on the EVEX prefix to encode) as w=
ell
> 
> 



--
Teddy Astie | Vates XCP-ng Developer

XCP-ng & Xen Orchestra - Vates solutions

web: https://vates.tech




From xen-devel-bounces@lists.xenproject.org Fri Apr 10 09:36:46 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Fri, 10 Apr 2026 09:36:46 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1278577.1563355 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wB8I6-0000BO-Ak; Fri, 10 Apr 2026 09:36:42 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1278577.1563355; Fri, 10 Apr 2026 09:36: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 1wB8I6-0000BH-7b; Fri, 10 Apr 2026 09:36:42 +0000
Received: by outflank-mailman (input) for mailman id 1278577;
 Fri, 10 Apr 2026 09:36:40 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <olekstysh@gmail.com>) id 1wB8I4-0000BA-Kp
 for xen-devel@lists.xenproject.org; Fri, 10 Apr 2026 09:36:40 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wB8I4-00GYaz-0Z
 for xen-devel@lists.xenproject.org; Fri, 10 Apr 2026 11:36:40 +0200
Received: from [10.42.69.4] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <olekstysh@gmail.com>)
 id 69d8c4a0-e002-0a2a0a5209dd-0a2a4504bc22-20
 for <xen-devel@lists.xenproject.org>; Fri, 10 Apr 2026 11:36:39 +0200
Received: from [209.85.167.48] (helo=mail-lf1-f48.google.com)
 by tlsNG-ebf023.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.0)
 (envelope-from <olekstysh@gmail.com>)
 id 69d8c4a7-bb33-0a2a45040019-d155a730d1e4-3
 for <xen-devel@lists.xenproject.org>; Fri, 10 Apr 2026 11:36:39 +0200
Received: by mail-lf1-f48.google.com with SMTP id
 2adb3069b0e04-5a283c44478so2861391e87.3
 for <xen-devel@lists.xenproject.org>; Fri, 10 Apr 2026 02:36:39 -0700 (PDT)
Received: from [192.168.0.112] ([91.123.151.140])
 by smtp.gmail.com with ESMTPSA id
 38308e7fff4ca-38e49541ddfsm5992931fa.27.2026.04.10.02.36.37
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Fri, 10 Apr 2026 02:36:38 -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=20251104 header.d=gmail.com header.i="@gmail.com" header.h="Content-Transfer-Encoding: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=20251104; t=1775813799; x=1776418599; darn=lists.xenproject.org;
        h=content-transfer-encoding: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;
        bh=YRSueHNz2o5rXuQgWRz7KFXF7KSny49Ei2qJMBfBcuo=;
        b=C8V3mo1GrMvV5lfwgJGwh1XPCdfY8eJovleuuHq9bzHMqgnjYVm8eh6vLV7d8JNRfH
         cJBV+3MPLkRxX3k7NY1t7Zi2SbNlNY941ljcoMf/lKnWwWWvguA0jsYfxwoem1hHEi1v
         ywdIxhTZhnfpP3FNDUJebp6pd6kQSgOOlJ+SKUIlYt++DyVym6M45TAnqdxkneLeXelN
         eFN3fsH2Zi/G5ZsO8rkz7kZWlvqw2Wt8D5WTyIqFth6PXrAk0c9E4yQgrWOkb5h4R7LL
         BM6WvTY4AVJYqQ8kgy2XxrySm+70qaunsJ825fryJh5hZp+oMAR6odM9W6SuELMfDhYa
         TB4Q==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20251104; t=1775813799; x=1776418599;
        h=content-transfer-encoding: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;
        bh=YRSueHNz2o5rXuQgWRz7KFXF7KSny49Ei2qJMBfBcuo=;
        b=HAEwDApQTjVOLna1dCHeOgEhmhxrcLQEBAYXUecxcuacLA1t6HdhZL7x0T0t9/+yfE
         G7TPJOju0i4bvDRKQXGbtS4l/a7slq9LvtSe/anSVcPStUDooa9vRwAhvsy7/gJ9BX2U
         qRKJmsTR2/Kk8zDfrKS60t7D9Ei05SsXLWgvt0dthMKEZ63pDi1bX0xpK3YLIu/RCPp2
         pXnZXWey5bM587UWLRImPZAcKed9aymo7UKAQms6RKebEMepejMfDsP2lond06Xd6rzj
         GQqy7cnYVsiuSC0CwV4+837LgFVL9u1zrs7IrGr8s9goyuseaap5cvEwxGkxkLMK17HG
         qDOQ==
X-Forwarded-Encrypted: i=1; AJvYcCUtVm4gW4fn1j2i4btaeIKJFjiqK9hYeTp/U6mnIZ9o2V17/9nP15NOmMDuOutM3Hxplh5UTu7Y7GE=@lists.xenproject.org
X-Gm-Message-State: AOJu0YwEuPfOI2qwmGLv7Q/QvQ3PZ3+uBJ3JJ2Mo9nTXCTEcSNCzhe9x
	t/UtSxAUkai/8OVcrL8xz0755f3QtqLmJ6w8q/+3Px1siEtCpxYx9KxEa3EZyQ==
X-Gm-Gg: AeBDieswujYS8e1mLvSliSEKGdY0mkwfaTWT/N/QivBkQpuRqDBTMnbh5uKEsTv7M9F
	v6ROUdwq1m+yFh71PG8Ml3A/RJ5niKhC9sNhTqpKWhek8E1QZWT8NCjX94FHg8DRn7w39zokwDK
	L3eUOv/TRKJgRVJFLhp/1PmdCaCbkexuI12jEZQrEH70H/Ze38fDsrVN/PsQP4ePRlH7Kb6GYTU
	3Iq893kKHoyaRyOy8LfYSIVrfUKLfBfml1xo3dykpZdl4geIHGwQSKk6DkHj4Yqk5duYJDHXy0Z
	oaf4hde9oBav4xTTCovDGp7SWg/ZXjVSkPY2RnmdeaAw47e7dZgdFQt5tXNtDnKPYTwDz1FIwMx
	00zSm2DxqGojNBpJZLIhqGVUdDMtpC36qwKFVCb95+Hdc58xDJdVssBpTRq8e/4lApIRS6KwL7s
	H175FQNgHkgA6fsnHQsQVh750h5iw=
X-Received: by 2002:a05:6512:3d07:b0:5a2:ca1d:8ea8 with SMTP id 2adb3069b0e04-5a3efb282fbmr821476e87.25.1775813798502;
        Fri, 10 Apr 2026 02:36:38 -0700 (PDT)
Message-ID: <bf39819f-12dc-4b64-9738-1ce0f4f2e111@gmail.com>
Date: Fri, 10 Apr 2026 12:36:35 +0300
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH v7 2/6] arm/irq: Migrate IRQs during CPU up/down
 operations
To: Mykyta Poturai <Mykyta_Poturai@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>
References: <cover.1774871881.git.mykyta_poturai@epam.com>
 <d1fce979525d4296b0f461fda7dc08ad1d596d6d.1774871881.git.mykyta_poturai@epam.com>
Content-Language: en-US
From: Oleksandr Tyshchenko <olekstysh@gmail.com>
In-Reply-To: <d1fce979525d4296b0f461fda7dc08ad1d596d6d.1774871881.git.mykyta_poturai@epam.com>
Content-Type: text/plain; charset=UTF-8; format=flowed
Content-Transfer-Encoding: 7bit
X-purgate-ID: tlsNG-ebf023/1775813799-3212551B-B8226B98/0/0
X-purgate-type: clean
X-purgate-size: 5488



On 3/30/26 14:59, Mykyta Poturai wrote:

Hello Mykyta


> 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>
> ---
> 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/include/asm/irq.h |  6 ++++
>   xen/arch/arm/irq.c             | 59 ++++++++++++++++++++++++++++++++++
>   xen/arch/arm/smpboot.c         |  7 ++++
>   3 files changed, 72 insertions(+)
> 
> diff --git a/xen/arch/arm/include/asm/irq.h b/xen/arch/arm/include/asm/irq.h
> index 09788dbfeb..3ed55e02c3 100644
> --- a/xen/arch/arm/include/asm/irq.h
> +++ b/xen/arch/arm/include/asm/irq.h
> @@ -126,6 +126,12 @@ bool irq_type_set_by_domain(const struct domain *d);
>   void irq_end_none(struct irq_desc *irq);
>   #define irq_end_none irq_end_none
>   
> +#ifdef CONFIG_CPU_HOTPLUG
> +void rebalance_irqs(unsigned int from, bool up);
> +#else
> +static inline void rebalance_irqs(unsigned int from, bool up) {}
> +#endif
> +
>   #endif /* _ASM_HW_IRQ_H */
>   /*
>    * Local variables:
> diff --git a/xen/arch/arm/irq.c b/xen/arch/arm/irq.c
> index 7204bc2b68..447bee428e 100644
> --- a/xen/arch/arm/irq.c
> +++ b/xen/arch/arm/irq.c
> @@ -158,6 +158,60 @@ static int init_local_irq_data(unsigned int cpu)
>       return 0;
>   }
>   
> +#ifdef CONFIG_CPU_HOTPLUG
> +static int cpu_next;
> +
> +static void balance_irq(int irq, unsigned int from, bool up)
> +{
> +    struct irq_desc *desc = 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 API. 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 reside on
> +     * it. Otherwise, we rearrange all interrupts in a round-robin fashion.
> +     */
> +    if ( !up && !cpumask_test_cpu(from, desc->affinity) )
> +        goto out;
> +
> +    cpu_next = cpumask_cycle(cpu_next, &cpu_online_map);
> +    irq_set_affinity(desc, cpumask_of(cpu_next));
> +
> +out:
> +    spin_unlock_irqrestore(&desc->lock, flags);
> +}
> +
> +void rebalance_irqs(unsigned int from, bool up)
> +{
> +    int irq;
> +
> +    if ( cpumask_empty(&cpu_online_map) )
> +        return;
> +
> +    for ( irq = NR_LOCAL_IRQS; irq < NR_IRQS; irq++ )
> +        balance_irq(irq, from, up);
> +
> +#ifdef CONFIG_GICV3_ESPI
> +    for ( irq = ESPI_BASE_INTID; irq < ESPI_MAX_INTID; irq++ )
> +        balance_irq(irq, from, up);

I think, here we have an inefficient iteration over the ESPI range.
Even when CONFIG_GICV3_ESPI=y, the GIC HW might not support ESPIs at 
runtime.

We should probably check if they are present before entering the loop so 
we do not waste cycles on 1024 unnecessary NULL lookups. Could we use 
something like ESPI_BASE_INTID + gic_number_espis() to set the loop 
boundary? What do you think?

> +#endif
> +}
> +#endif /* CONFIG_CPU_HOTPLUG */
> +
>   static int cpu_callback(struct notifier_block *nfb, unsigned long action,
>                           void *hcpu)
>   {
> @@ -172,6 +226,11 @@ static int cpu_callback(struct notifier_block *nfb, unsigned long action,
>               printk(XENLOG_ERR "Unable to allocate local IRQ for CPU%u\n",
>                      cpu);
>           break;
> +    case CPU_ONLINE:
> +        if ( IS_ENABLED(CONFIG_CPU_HOTPLUG) &&
> +             system_state >= SYS_STATE_active )
> +            rebalance_irqs(cpu, true);
> +        break;
>       }
>   
>       return notifier_from_errno(rc);
> diff --git a/xen/arch/arm/smpboot.c b/xen/arch/arm/smpboot.c
> index 7f3cfa812e..7d877179c0 100644
> --- a/xen/arch/arm/smpboot.c
> +++ b/xen/arch/arm/smpboot.c
> @@ -425,6 +425,13 @@ void __cpu_disable(void)
>   
>       smp_mb();
>   
> +    /*
> +     * Now that the interrupts are cleared and the CPU marked as offline,
> +     * move interrupts out of it
> +     */
> +    if ( IS_ENABLED(CONFIG_CPU_HOTPLUG) )
> +        rebalance_irqs(cpu, false);
> +
>       /* Return to caller; eventually the IPI mechanism will unwind and the
>        * scheduler will drop to the idle loop, which will call stop_cpu(). */
>   }



From xen-devel-bounces@lists.xenproject.org Fri Apr 10 09:38:38 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Fri, 10 Apr 2026 09:38:38 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1278586.1563366 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wB8Ju-0000rj-Ln; Fri, 10 Apr 2026 09:38:34 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1278586.1563366; Fri, 10 Apr 2026 09:38: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 1wB8Ju-0000rc-IE; Fri, 10 Apr 2026 09:38:34 +0000
Received: by outflank-mailman (input) for mailman id 1278586;
 Fri, 10 Apr 2026 09:38:33 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <xakep.amatop@gmail.com>) id 1wB8Jt-0000rU-KA
 for xen-devel@lists.xenproject.org; Fri, 10 Apr 2026 09:38:33 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wB8Jt-00BbKX-0C
 for xen-devel@lists.xenproject.org; Fri, 10 Apr 2026 11:38:33 +0200
Received: from [10.42.69.10] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <xakep.amatop@gmail.com>)
 id 69d8c512-e002-0a2a0a5209dd-0a2a450ae7ac-14
 for <xen-devel@lists.xenproject.org>; Fri, 10 Apr 2026 11:38:32 +0200
Received: from [209.85.218.44] (helo=mail-ej1-f44.google.com)
 by tlsNG-4011c0.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.0)
 (envelope-from <xakep.amatop@gmail.com>)
 id 69d8c518-ee98-0a2a450a0019-d155da2cf11d-3
 for <xen-devel@lists.xenproject.org>; Fri, 10 Apr 2026 11:38:32 +0200
Received: by mail-ej1-f44.google.com with SMTP id
 a640c23a62f3a-b9825ba7e8dso260267566b.3
 for <xen-devel@lists.xenproject.org>; Fri, 10 Apr 2026 02:38:32 -0700 (PDT)
Received: from EPUAKYIW02F7.. ([45.12.25.238])
 by smtp.gmail.com with ESMTPSA id
 a640c23a62f3a-b9d6e5c52b3sm66307566b.30.2026.04.10.02.38.30
 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
 Fri, 10 Apr 2026 02:38:31 -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=20251104 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=20251104; t=1775813912; x=1776418712; 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;
        bh=QxciCGjMhtZXe5VYflJrqx8ULRUS5CvVj0n9IlAzSp4=;
        b=ULUbGzNK1GuUtNDVcEKfTMcadO0ClK1dg7qC+6QTM3zE3rQTRDj5LTCLqUFAl1cv/+
         OwloOfhhfX+I36tGvwK8ALJoyKzUR45vK+NWBlaLtTg1G86AktzsVLZDiYBegWuFYCmj
         DwIwr7GZ0O41V0kaEsVm278tP0mW6wjS2MSTD21ktQar8R0fJqSvDGUCySSYBR/3Hbug
         u7rsICuhmbfR3GxPq0/EOk8uH1XyZbniBGkjXoQ2RKTVdAv1olSyPeLjcMzHYJOVr9Wj
         qFi6LmuwmfGNPO651PF65ogyUyj78fY9hLAFPJfUwhHG5cvbSFcJFKrMyIdsfFecI1N0
         oKgg==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20251104; t=1775813912; x=1776418712;
        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;
        bh=QxciCGjMhtZXe5VYflJrqx8ULRUS5CvVj0n9IlAzSp4=;
        b=RmZdA7Drzt7ZnMDzpIitS9hvghzdBI2WcVByeg4Ku6peyeoW+p6HxUSk+lupIbVxTn
         +sizTPTJBNpe0HQGvigdb9CZN82qODRT/taC2Wmm0J7BMO08MTgA+MYOVYhbsRojC2FL
         Dr8fTyebmg7Nd4CqsOKhYU4J6WxoiilDvmd5CzIL6qPOu5krcRJaasMX7uHx9EBwqqQG
         HAw/I7unLvF/qS3qyrt4Dan5z/E3tk53LwAXxkiaekWiZhkW/izeO22LCE39gUlVgIux
         n1yp3q2Vy7GJjdhIgBeI+HFSvnqoHAJt/Jsukxk73z16RjvZaL0BJPNpyaBjGSlLuUz9
         c4wQ==
X-Gm-Message-State: AOJu0YyStTvJ1xjFKR4dFv25KpHuXcnVx5UK404qaVOlaBZohj+mFCiv
	o1RVeAkIick4UE8wl5umbFVhDFRr5nmJmrPCTLCPjhLl2o3DAru5vMbw+OCW9SWn
X-Gm-Gg: AeBDiesbzbwOcchTy/KT9ddRZg7de1sa5JOjj1vSPIzZQAdH/qfB0imz/nLam6YhQna
	9E4nJGHBO+J0bJFK92uMs8P8mNWDaxAvyo2z2WqF7UJOq9GDhgIM5jF3CssCcblkKqvJGXWzEIb
	tsms6R+VYE+N5i5cJ3Wzf1DCjv8I5k3j5XUn/I3dJUXamVOhX7TCNNWms8jT6MINrXR7H07ZZW+
	8NWC7GGCrvWdHxdQZscSFOx7mXPzr8aIWTAo4E/4H6ba0orp9aQT4QRbEAf7/0KUWke72xECzWI
	CWS6lPFiL9j1sWhYzwNLvIVffNKvyqAOpPGIpeh6MomCf2VlN3lRLR4R0l833vZb0dTmca/XA7/
	fGU/rCvwyLRvgW8JyEBDQgOOc8N7wx2oRjW7cJi5m6KP7/msCzMDgv0ccti2b0oDPjDMDkYh1UB
	VWJ0lK5XtMv8+HPLdjRtwu/+4vXJ4=
X-Received: by 2002:a17:907:a392:b0:b96:eee1:bb66 with SMTP id a640c23a62f3a-b9d7267ad9dmr146723166b.10.1775813911606;
        Fri, 10 Apr 2026 02:38:31 -0700 (PDT)
From: Mykola Kvach <xakep.amatop@gmail.com>
To: xen-devel@lists.xenproject.org
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>
Subject: [PATCH] xen/arm: gic-v2: disable interrupt bypass on CPU shutdown
Date: Fri, 10 Apr 2026 12:36:15 +0300
Message-ID: <459cf46204e86ed3a2ffd79ae649b1a2051f5204.1775812563.git.mykola_kvach@epam.com>
X-Mailer: git-send-email 2.43.0
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit
X-purgate-ID: tlsNG-4011c0/1775813912-BCF5B0B1-DB3B44AB/0/0
X-purgate-type: clean
X-purgate-size: 3034

From: Mykola Kvach <mykola_kvach@epam.com>

The GICv2 CPU shutdown path currently writes 0 to GICC_CTLR.

Per IHI0048B.b section 2.3.1, clearing IRQBypDisGrp{0,1} and
FIQBypDisGrp{0,1} selects bypass rather than deasserted interrupt
outputs when the CPU interface stops driving them. Tables 2-2 and 2-3
show that a zeroed GICC_CTLR can fall back to the legacy IRQ/FIQ inputs
instead of fully disabling the interface.

Fix this by reading GICC_CTLR, setting the bypass-disable bits, and
clearing both group-enable bits before writing the value back. Keep the
existing GICC_CTL_ENABLE definition for the init path and use a separate
mask for the shutdown-side group-enable handling.

Section 2.3.2 also states that wakeup event signals remain available
even when both GIC interrupt signaling and interrupt bypass are
disabled, so disabling bypass does not break the power-management use
case, i.e. suspend modes.

Fixes: 5e40a1b4351e ("arm: SMP CPU shutdown")
Signed-off-by: Mykola Kvach <mykola_kvach@epam.com>
---
 xen/arch/arm/gic-v2.c          |  7 ++++++-
 xen/arch/arm/include/asm/gic.h | 21 +++++++++++++++++++--
 2 files changed, 25 insertions(+), 3 deletions(-)

diff --git a/xen/arch/arm/gic-v2.c b/xen/arch/arm/gic-v2.c
index b23e72a3d0..22aa25bad0 100644
--- a/xen/arch/arm/gic-v2.c
+++ b/xen/arch/arm/gic-v2.c
@@ -408,7 +408,12 @@ static void gicv2_cpu_init(void)
 
 static void gicv2_cpu_disable(void)
 {
-    writel_gicc(0x0, GICC_CTLR);
+    uint32_t ctlr = readl_gicc(GICC_CTLR);
+
+    ctlr |= GICC_CTL_BYP_DIS_MASK;
+    ctlr &= ~GICC_CTL_ENABLE_GRP_MASK;
+
+    writel_gicc(ctlr, GICC_CTLR);
 }
 
 static void gicv2_hyp_init(void)
diff --git a/xen/arch/arm/include/asm/gic.h b/xen/arch/arm/include/asm/gic.h
index 8e713aa477..da285adb83 100644
--- a/xen/arch/arm/include/asm/gic.h
+++ b/xen/arch/arm/include/asm/gic.h
@@ -102,8 +102,25 @@
 #define GICD_TYPE_SEC   0x400
 #define GICD_TYPER_DVIS (1U << 18)
 
-#define GICC_CTL_ENABLE 0x1
-#define GICC_CTL_EOI    (0x1 << 9)
+/*
+ * Keep the legacy name for bit[0]. In the Non-secure view of a GICv2 with
+ * Security Extensions this is the Group 1 enable bit; otherwise it is the
+ * Group 0.
+ */
+#define GICC_CTL_ENABLE        (0x1 << 0)
+/* Bit[1] is the second group-enable bit when separate group enables exist. */
+#define GICC_CTL_ENABLE_GRP1   (0x1 << 1)
+#define GICC_CTL_FIQBypDisGrp0 (0x1 << 5)
+#define GICC_CTL_IRQBypDisGrp0 (0x1 << 6)
+#define GICC_CTL_FIQBypDisGrp1 (0x1 << 7)
+#define GICC_CTL_IRQBypDisGrp1 (0x1 << 8)
+#define GICC_CTL_EOI           (0x1 << 9)
+
+/* Shutdown clears both possible group-enable bits, regardless of layout. */
+#define GICC_CTL_ENABLE_GRP_MASK (GICC_CTL_ENABLE | GICC_CTL_ENABLE_GRP1)
+#define GICC_CTL_BYP_DIS_MASK                          \
+    (GICC_CTL_FIQBypDisGrp0 | GICC_CTL_IRQBypDisGrp0 | \
+     GICC_CTL_FIQBypDisGrp1 | GICC_CTL_IRQBypDisGrp1)
 
 #define GICC_IA_IRQ       0x03ff
 #define GICC_IA_CPU_MASK  0x1c00
-- 
2.43.0



From xen-devel-bounces@lists.xenproject.org Fri Apr 10 09:51:03 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Fri, 10 Apr 2026 09:51:03 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1278598.1563375 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wB8Vs-0003bY-Mn; Fri, 10 Apr 2026 09:50:56 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1278598.1563375; Fri, 10 Apr 2026 09:50: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 1wB8Vs-0003bR-II; Fri, 10 Apr 2026 09:50:56 +0000
Received: by outflank-mailman (input) for mailman id 1278598;
 Fri, 10 Apr 2026 09:50:55 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <Luca.Fancellu@arm.com>) id 1wB8Vq-0003bL-T9
 for xen-devel@lists.xenproject.org; Fri, 10 Apr 2026 09:50:55 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wB8Vq-008J6M-4p
 for xen-devel@lists.xenproject.org; Fri, 10 Apr 2026 11:50:54 +0200
Received: from [10.42.69.11] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <Luca.Fancellu@arm.com>)
 id 69d8c7f4-e002-0a2a0a5209dd-0a2a450b8d84-46
 for <xen-devel@lists.xenproject.org>; Fri, 10 Apr 2026 11:50:53 +0200
Received: from [52.101.70.32]
 (helo=AS8PR04CU009.outbound.protection.outlook.com)
 by tlsNG-42698a.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.0)
 (envelope-from <Luca.Fancellu@arm.com>)
 id 69d8c7fc-bca8-0a2a450b0019-3465462056bf-3
 for <xen-devel@lists.xenproject.org>; Fri, 10 Apr 2026 11:50:53 +0200
Received: from CWLP265CA0528.GBRP265.PROD.OUTLOOK.COM (2603:10a6:400:18c::17)
 by GVXPR08MB10613.eurprd08.prod.outlook.com (2603:10a6:150:14e::6)
 with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9769.19; Fri, 10 Apr
 2026 09:50:46 +0000
Received: from AMS0EPF000001A2.eurprd05.prod.outlook.com
 (2603:10a6:400:18c:cafe::70) by CWLP265CA0528.outlook.office365.com
 (2603:10a6:400:18c::17) with Microsoft SMTP Server (version=TLS1_3,
 cipher=TLS_AES_256_GCM_SHA384) id 15.20.9769.43 via Frontend Transport; Fri,
 10 Apr 2026 09:50:46 +0000
Received: from outbound-uk1.az.dlp.m.darktrace.com (4.158.2.129) by
 AMS0EPF000001A2.mail.protection.outlook.com (10.167.16.235) with Microsoft
 SMTP Server (version=TLS1_3, cipher=TLS_AES_256_GCM_SHA384) id 15.20.9769.17
 via Frontend Transport; Fri, 10 Apr 2026 09:50:46 +0000
Received: from DU2PR08MB7272.eurprd08.prod.outlook.com (2603:10a6:10:2d7::16)
 by DU4PR08MB11719.eurprd08.prod.outlook.com (2603:10a6:10:645::9)
 with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9769.42; Fri, 10 Apr
 2026 09:49:44 +0000
Received: from DU2PR08MB7272.eurprd08.prod.outlook.com
 ([fe80::5d34:206f:373:a323]) by DU2PR08MB7272.eurprd08.prod.outlook.com
 ([fe80::5d34:206f:373:a323%6]) with mapi id 15.20.9769.018; Fri, 10 Apr 2026
 09:49: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=arm.com header.i="@arm.com" header.h="From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck"; dkim=pass header.s=selector1 header.d=arm.com header.i="@arm.com" header.h="From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck"
ARC-Seal: i=2; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=pass;
 b=wWe67Ae4MJVZQDKJ0aeEMXtm8Hk6mvbMsK0hUwKxEuqtQxxx1BDQUfm6Rl0/uHFquAHekPQ2xNONOPq29k5rhCnH7daOiyliqo9zPp/+Fa5SSOwZkO4UhNDVD4oNoJa6yqDe9XzpS/wOFdahyf3enmf9cVgnLmFt9nW9PWXwJfyRNLgEl2rZRKJ33cSRPHl2Z0/whAGzeOw/2HpnoLQqBU3OcK66/ZEHejcaUbzvhdvOxZw139hnAs+XoeT1GrhwJY9nQB6fTNptmRoveQ/MmXy4/iUswhxBE16Zb7LDzcbKiZjKuJkIAkKkD59vogyLjV7JmKBXTiGypsQJzkHabQ==
ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com;
 s=arcselector10001;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1;
 bh=vVgyjBTtCX07ZpKFHLpzvdKbsO7kkUaRqgnNl2EMaXY=;
 b=F3gQ7r07xl0x04BclqLOvLSO4oIXK3TFb9VqWY7v15lsmze2hRLWlOU993qG/xdBXI9Cfiib6RhOv+HrfLLIV1fJdGHdVh3bBzwyGxuLagkXQiJyoF2taj1U3AFNs17PRcnf7+2LDgrIIKnhMmo0yRpsgQ3vRKbr8haVdeIccbXQZ2zelckrQmpPSzHkGAVL+sChDWrv28FhbSpVjrPDg6ZyOdWlxTgUBFBSf9y9hqhDT7+fujSkddL1HmstxvHuQPPXkaFU0hioXGq7vuH5nb39wSMiLcQ4Q3NXw3LGgkfyprp+oJBdQXBEPPvazYqZOHfj3a47NUf1WCye0eLuww==
ARC-Authentication-Results: i=2; mx.microsoft.com 1; spf=pass (sender ip is
 4.158.2.129) smtp.rcpttodomain=epam.com smtp.mailfrom=arm.com; dmarc=pass
 (p=none sp=none pct=100) action=none header.from=arm.com; dkim=pass
 (signature was verified) header.d=arm.com; arc=pass (0 oda=1 ltdi=1
 spf=[1,1,smtp.mailfrom=arm.com] dkim=[1,1,header.d=arm.com]
 dmarc=[1,1,header.from=arm.com])
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=arm.com; s=selector1;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck;
 bh=vVgyjBTtCX07ZpKFHLpzvdKbsO7kkUaRqgnNl2EMaXY=;
 b=NK0ElfVwWT8e3xjEdftyVbkXRIt90YogTGgq41Vz5fsKNQJ/GUJ94NB0+wQkgkVDbml1XLhSOSXWc5AwYMeyyRNrbh4c7n2pILO+HzkaAQu8OXowykRjutnBvm7NForc9vhWywDmvj2T0FH5EkTPkCginU60kGz130io2oirrSA=
X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 4.158.2.129)
 smtp.mailfrom=arm.com; dkim=pass (signature was verified)
 header.d=arm.com;dmarc=pass action=none header.from=arm.com;
Received-SPF: Pass (protection.outlook.com: domain of arm.com designates
 4.158.2.129 as permitted sender) receiver=protection.outlook.com;
 client-ip=4.158.2.129; helo=outbound-uk1.az.dlp.m.darktrace.com; pr=C
ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none;
 b=wnD7LxKTGAAyKaShcN57+W8wfjdLDtKOoUjH7HAenWRKA9RbJbRUMaVQ09JHZuXaMbfXLYX4UBFhKxvDVXXRGS5rBTlPG7RjUx4ne4WiN1w/h5AJipZ8Io7AVyI21MONDr2mlT1UcBcRSA+1LpGc+dPM00oJn/wKACpN9XNvzaUemwsxNK+ClCQihBfrB5/f3iMKrKcHam9Adzvp7tvyDacR7GnNcoA23+GhMf59R2tGSHXL+mondXVWMAQyn/rjoSz1N0/VVQe2Z/vJhagcqkud0Dy0IXhjKPcK+i5pq3sl9xqB4YgK9LKHeinDbMk57ixXKoZXW+XBtk5NF8IGEg==
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com;
 s=arcselector10001;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1;
 bh=vVgyjBTtCX07ZpKFHLpzvdKbsO7kkUaRqgnNl2EMaXY=;
 b=bxA2mPPLmogw7Cpz66iOaf7ojBj3uoQLZ2nmNQ25sLlOQTbr3P3S0CUNC9IlKJsOwux9WT/rfBqD//ks9cDzAxLh/i4VFc3izQ0q6uIlQUA6w+XOS6nu+ueTuxEVEVfteMRZrETT597oCqkvBmykghhplBmFYCA+xXOqxNeg7Y0gLBm/jmLPxysWCUTl4jR0qcsLv+d3Xq88uWiFb/Tf0HN2u//zN0+smKwVgJKcjpKIwSdqaALSvgiy6Ktb3q7oQA2+iABC/k2nD4/A7K2zW2CiG1lm3UBA+OCUWEN6rq4y7JnaWb1yAajkGDCXqI3TS3a7hVtKx6fdMwa/9UL8KA==
ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass
 smtp.mailfrom=arm.com; dmarc=pass action=none header.from=arm.com; dkim=pass
 header.d=arm.com; arc=none
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=arm.com; s=selector1;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck;
 bh=vVgyjBTtCX07ZpKFHLpzvdKbsO7kkUaRqgnNl2EMaXY=;
 b=NK0ElfVwWT8e3xjEdftyVbkXRIt90YogTGgq41Vz5fsKNQJ/GUJ94NB0+wQkgkVDbml1XLhSOSXWc5AwYMeyyRNrbh4c7n2pILO+HzkaAQu8OXowykRjutnBvm7NForc9vhWywDmvj2T0FH5EkTPkCginU60kGz130io2oirrSA=
From: Luca Fancellu <Luca.Fancellu@arm.com>
To: Milan Djokic <milan_djokic@epam.com>
CC: "xen-devel@lists.xenproject.org" <xen-devel@lists.xenproject.org>, 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>
Subject: Re: [PATCH v3 02/23] xen/arm: smmuv3: Add support for stage-1 and
 nested stage translation
Thread-Topic: [PATCH v3 02/23] xen/arm: smmuv3: Add support for stage-1 and
 nested stage translation
Thread-Index: AQHcyM9b450W5XzxrEi9kyX2pw4Gzg==
Date: Fri, 10 Apr 2026 09:49:44 +0000
Message-ID: <D20F71C9-C43A-4F22-9B44-84C0105914B6@arm.com>
References: <cover.1774918270.git.milan_djokic@epam.com>
 <baa5aa0db3d8d2cbc5f46a60241330c4c7055d11.1774918270.git.milan_djokic@epam.com>
In-Reply-To:
 <baa5aa0db3d8d2cbc5f46a60241330c4c7055d11.1774918270.git.milan_djokic@epam.com>
Accept-Language: en-GB, en-US
Content-Language: en-US
X-MS-Has-Attach:
X-MS-TNEF-Correlator:
x-mailer: Apple Mail (2.3826.700.81.1.6)
Authentication-Results-Original: dkim=none (message not signed)
 header.d=none;dmarc=none action=none header.from=arm.com;
x-ms-traffictypediagnostic:
	DU2PR08MB7272:EE_|DU4PR08MB11719:EE_|AMS0EPF000001A2:EE_|GVXPR08MB10613:EE_
X-MS-Office365-Filtering-Correlation-Id: 83f022b1-68e8-4b3a-f50b-08de96e6a373
x-checkrecipientrouted: true
nodisclaimer: true
X-MS-Exchange-SenderADCheck: 1
X-MS-Exchange-AntiSpam-Relay: 0
X-Microsoft-Antispam-Untrusted:
 BCL:0;ARA:13230040|376014|1800799024|366016|38070700021|18002099003|22082099003|56012099003;
X-Microsoft-Antispam-Message-Info-Original:
 kWgOUXw7aYb3UKTSpBniR/8X30lUsb1X8s8R2GH4fAPnK6oi1wZtyLKVNPwBuYBLGDr2aAIY/TzznPaNJf/BAFkVaDX7LavHBYjrKPxd1MAFK8j5J0iczvqV6lOYAl8QCBeAbpoHsTL4oHDPnKX/JT3MlO2qc6OV19J1CySFHLgjVGy6A2Gp2GIIL0xGOlaERl4Ab/sowN9AUSjlYzcR0i/jnKip4VlLQO6eBEay0TMdby4NmbydU0g/dE1aELgneUDTCeLh1TvN9cT1tWNno0wt6Gj9PUEoiTxGgoazDRwouev+Fk4OOYwUc65i4dAkLubzE1j9E5Pywf2EFeevlmcakkxCGLAs+VoZUfCM2sRghpkGg1O8I+HD/k1y3YN1DauhTbiFqeU9VBv47Yuf19RQ91Co3M7QlVXYbLysUu5n5D5oFy+Ib1o3ptJB/jyNJLtZ73GnQqtedokochXRer1ir5MX7TE/oiQa9korLnLX7hS1C442gPbOu24QAivUawPv9TW6k67vlowRo7qDreJKIoCXMV0j3fFtPBT1uHfqX72kkhdIIIl6kWqFNqMCoJj+7I72VDecckhaJJ79hm01Vz19DvMIi5eTAkAAOGbDcX7C+ajyc+CtPxAy2qRmFNuDoEM9/q1UDUOSLrctXypRPMARTqw94xyMW3z0S7szry1YZTD5oboDORtPJY3iCreiBp58RT1EW+SYAAZGLzRvgf9qsidUcVFVOK/Ljmowy1wNwMUOfq+5YOC3w8a8qIdF83PdlIM2q9ukRMKKT5I/o2F/41ebDpC9cA62z8s=
X-Forefront-Antispam-Report-Untrusted:
 CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:DU2PR08MB7272.eurprd08.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(376014)(1800799024)(366016)(38070700021)(18002099003)(22082099003)(56012099003);DIR:OUT;SFP:1101;
Content-Type: text/plain; charset="utf-8"
Content-ID: <BBD766F2F369174E8186679440090312@eurprd08.prod.outlook.com>
Content-Transfer-Encoding: base64
MIME-Version: 1.0
X-Exchange-RoutingPolicyChecked:
 TlfO2jSVkVx/Jb2d16qr3ckdRoYMu6JrL2hTr9PJAEiVCfCUKAa1RMpIvvwwEc0FHm2pvgD965PvtMBA4kxG0NCc/2e9T4Kv2bjpLZ6WwadYRHAO8CUCEO4Ns7FJ7mGPU3p9iWEK0rJ1WFMFKx9GOOzgMIov4bA9gdu0fUslwOJ5fFXh108Yp5ZZad/IRC3Pdk60qYbUOsHi74WHCnLtr/flyg/t6rf9O8YXrXqXMH3VaXeeFIF7G9cXrxmAuU2px7scI7W6atowS/tZ0pQltFoeaFFoXVN91adEcb48iEcLsdc9ls62703kZIdGvxoRan+efkO7oK3Y27c0ggsWng==
X-MS-Exchange-Transport-CrossTenantHeadersStamped: DU4PR08MB11719
X-EOPAttributedMessage: 0
X-MS-Exchange-Transport-CrossTenantHeadersStripped:
 AMS0EPF000001A2.eurprd05.prod.outlook.com
X-MS-PublicTrafficType: Email
X-MS-Office365-Filtering-Correlation-Id-Prvs:
	029ffc76-a5d3-48aa-c8fa-08de96e67e67
X-Microsoft-Antispam:
	BCL:0;ARA:13230040|35042699022|14060799003|82310400026|36860700016|376014|1800799024|56012099003|22082099003|18002099003;
X-Microsoft-Antispam-Message-Info:
	LwrXhoS8ANvG0qERsydnWRqBqyZH1kuaXJS9aDm9MXY2DtkqDylJbZoRejnsgRanXsKUQ6xM5in+ZePAqQJJrRp25zfR/VR1MYXy7Zu1FQy+ZwC9f+dFpV49Ni3b+/7Fj+bVLYLHk9TVoh/Q/Y0we5yPfEutLYZb6JRfTxEkQCWlb2+4k98095zRYhZ6K+jJTBXaYWpTjaqRIXNElZcl7nnvhQQsOmDTOYGhH/AZ7+BqvzulcbyinWzmmVFDeNLEOvAMV9jOE+k94p3dbcWwx3TM13GzIOeVgmRe1GHdKGJQOzzEfHs6j9zesdHTFR0/ss+SlVpojTjDjdXaUl/lmaBAghuc3l0Hp4/74FKi/e0RZmgm4BTe55ywW5CiDgS6zDtA69IwxieBPL9o9UJ05uVC1n0TQb2rYmGOONV73VJr5CDDGvKMcTjS7lP9fsG2ERmOb8o/q5H2eSb2PdzN4TSmw7qrenb3wD3boLg6MsHc9TQ+wakR00+nQSW7PZJdOXW4iG5EBkkO9tX3d59/84Yw/eH4ZeqG7nMhtlP5HNqr6yk/rn2AlJedYtHPMyQTYc756LALVFUPDOBqNQlaCduUarNmWmZYkIMXdsldmo8Wi88me7W3+0Fftc8W81RzFbTmOzwjItESnpBvVJIYy1GwyYMJbcogrTxNtqhm6KUN1M7jZxqC8vKkS2rOCKEi5yxOFOdjq1ZNT61IDXWZLoyAuGukPreQG1FnnCPrWAFD/tq2D3iU/JWBdMlCmePE93YECCh4OibYYkxbeGp5Ng==
X-Forefront-Antispam-Report:
	CIP:4.158.2.129;CTRY:GB;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:outbound-uk1.az.dlp.m.darktrace.com;PTR:InfoDomainNonexistent;CAT:NONE;SFS:(13230040)(35042699022)(14060799003)(82310400026)(36860700016)(376014)(1800799024)(56012099003)(22082099003)(18002099003);DIR:OUT;SFP:1101;
X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1
X-MS-Exchange-AntiSpam-MessageData-0:
	KcSYlqjdHqiIiATV1bCeqTmU0KguPQ+hwaQ4Eo/pIMwESLEie3q7M6mtaMULhLyA08bGfJNHq8NeCMxz2GNJeD5i+ckrdoXF5Gzs2ZN1fcSCYJEq/nlWX5B5vwoO8NVJuYxjdGn5Q8K2sf3VwFho2IbIoPpLUJ+Z0WzkpwwSVUl40yX8xSMtP9XC3hzhNfMrEgcASOusugRjJr+Q1DLBc+UYRjh9ez4dcRQ5r1EVJu4oeO/abSk1+UcqHxYUbWUCiXZHN/Jb/Bqb5E+zaGGuIS9TdWPVV9e3PnOSxmhpTrye4gVBIvcoq8qvixpBeGK3iTPoWVaFwdBQrqz0JpE3cPyZd1QeCM8RSkriv6csMEtEMGYOkijdwbDg+vZuU9kEYnNCToTjYNCuBLA0QfvES9SaPfUu+fypFK3z1XSC0sX8BhsByGbc7dO0DvjIdmG9
X-OriginatorOrg: arm.com
X-MS-Exchange-CrossTenant-OriginalArrivalTime: 10 Apr 2026 09:50:46.1022
 (UTC)
X-MS-Exchange-CrossTenant-Network-Message-Id: 83f022b1-68e8-4b3a-f50b-08de96e6a373
X-MS-Exchange-CrossTenant-Id: f34e5979-57d9-4aaa-ad4d-b122a662184d
X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=f34e5979-57d9-4aaa-ad4d-b122a662184d;Ip=[4.158.2.129];Helo=[outbound-uk1.az.dlp.m.darktrace.com]
X-MS-Exchange-CrossTenant-AuthSource:
	AMS0EPF000001A2.eurprd05.prod.outlook.com
X-MS-Exchange-CrossTenant-AuthAs: Anonymous
X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem
X-MS-Exchange-Transport-CrossTenantHeadersStamped: GVXPR08MB10613
X-purgate-ID: tlsNG-42698a/1775814653-EE54B2A1-AD6C0320/0/0
X-purgate-type: clean
X-purgate-size: 4776

SGkgTWlsYW4sDQoNCj4gQEAgLTc0MCw3ICs3NjYsMzMgQEAgc3RhdGljIHZvaWQgYXJtX3NtbXVf
d3JpdGVfc3RydGFiX2VudChzdHJ1Y3QgYXJtX3NtbXVfbWFzdGVyICptYXN0ZXIsIHUzMiBzaWQs
DQo+IHJldHVybjsNCj4gfQ0KPiANCj4gKyBpZiAoc3RlX2xpdmUpIHsNCj4gKyAvKiBGaXJzdCBp
bnZhbGlkYXRlIHRoZSBsaXZlIFNURSAqLw0KPiArIGRzdFswXSA9IGNwdV90b19sZTY0KFNUUlRB
Ql9TVEVfMF9DRkdfQUJPUlQpOw0KPiArIGFybV9zbW11X3N5bmNfc3RlX2Zvcl9zaWQoc21tdSwg
c2lkKTsNCj4gKyB9DQo+ICsNCj4gKyBpZiAoczFfY2ZnKSB7DQo+ICsgQlVHX09OKHMxX2xpdmUp
Ow0KDQpJIHRoaW5rIHRoaXMgaXMgd3JvbmcsIGlmIGEgZ3Vlc3QgaXNzdWVzIGFub3RoZXIgczEg
dXBkYXRlIG9uIHRoZSBzYW1lIHNpZCwgdGhpcyB3aWxsIGNyYXNoIFhlbiwgSSB0aGluaw0KdGhh
dCB3ZeKAmXZlIGFscmVhZHkgaW52YWxpZGF0ZWQgdGhlIGxpdmUgc3RhdHVzIHNvIHRoaXMgb25l
IHNob3VsZCBiZSByZW1vdmVkDQoNCj4gKyBkc3RbMV0gPSBjcHVfdG9fbGU2NCgNCj4gKyBGSUVM
RF9QUkVQKFNUUlRBQl9TVEVfMV9TMURTUywgU1RSVEFCX1NURV8xX1MxRFNTX1NTSUQwKSB8DQo+
ICsgRklFTERfUFJFUChTVFJUQUJfU1RFXzFfUzFDSVIsIFNUUlRBQl9TVEVfMV9TMUNfQ0FDSEVf
V0JSQSkgfA0KPiArIEZJRUxEX1BSRVAoU1RSVEFCX1NURV8xX1MxQ09SLCBTVFJUQUJfU1RFXzFf
UzFDX0NBQ0hFX1dCUkEpIHwNCj4gKyBGSUVMRF9QUkVQKFNUUlRBQl9TVEVfMV9TMUNTSCwgQVJN
X1NNTVVfU0hfSVNIKSB8DQo+ICsgRklFTERfUFJFUChTVFJUQUJfU1RFXzFfU1RSVywgU1RSVEFC
X1NURV8xX1NUUldfTlNFTDEpKTsNCj4gKw0KPiArIGlmIChzbW11LT5mZWF0dXJlcyAmIEFSTV9T
TU1VX0ZFQVRfU1RBTExTICYmDQo+ICsgICAhKHNtbXUtPmZlYXR1cmVzICYgQVJNX1NNTVVfRkVB
VF9TVEFMTF9GT1JDRSkpDQo+ICsgZHN0WzFdIHw9IGNwdV90b19sZTY0KFNUUlRBQl9TVEVfMV9T
MVNUQUxMRCk7DQo+ICsNCj4gKyB2YWwgfD0gKHMxX2NmZy0+czFjdHhwdHIgJiBTVFJUQUJfU1RF
XzBfUzFDVFhQVFJfTUFTSykgfA0KPiArIEZJRUxEX1BSRVAoU1RSVEFCX1NURV8wX0NGRywgU1RS
VEFCX1NURV8wX0NGR19TMV9UUkFOUykgfA0KPiArIEZJRUxEX1BSRVAoU1RSVEFCX1NURV8wX1Mx
Q0RNQVgsIHMxX2NmZy0+czFjZG1heCkgfA0KPiArIEZJRUxEX1BSRVAoU1RSVEFCX1NURV8wX1Mx
Rk1ULCBzMV9jZmctPnMxZm10KTsNCj4gKyB9DQo+ICsNCj4gaWYgKHMyX2NmZykgew0KPiArIHU2
NCB2dHRiciA9IHMyX2NmZy0+dnR0YnIgJiBTVFJUQUJfU1RFXzNfUzJUVEJfTUFTSzsNCj4gdTY0
IHN0cnRhYiA9DQo+IEZJRUxEX1BSRVAoU1RSVEFCX1NURV8yX1MyVk1JRCwgczJfY2ZnLT52bWlk
KSB8DQo+IEZJRUxEX1BSRVAoU1RSVEFCX1NURV8yX1ZUQ1IsIHMyX2NmZy0+dnRjcikgfA0KPiBA
QCAtNzUwLDEyICs4MDIsMTkgQEAgc3RhdGljIHZvaWQgYXJtX3NtbXVfd3JpdGVfc3RydGFiX2Vu
dChzdHJ1Y3QgYXJtX3NtbXVfbWFzdGVyICptYXN0ZXIsIHUzMiBzaWQsDQo+IFNUUlRBQl9TVEVf
Ml9TMlBUVyB8IFNUUlRBQl9TVEVfMl9TMkFBNjQgfA0KPiBTVFJUQUJfU1RFXzJfUzJSOw0KPiAN
Cj4gLSBCVUdfT04oc3RlX2xpdmUpOw0KPiArIGlmIChzMl9saXZlKSB7DQo+ICsgdTY0IHMydHRi
ID0gbGU2NF90b19jcHUoZHN0WzNdKSAmIFNUUlRBQl9TVEVfM19TMlRUQl9NQVNLOw0KPiArIEJV
R19PTihzMnR0YiAhPSB2dHRicik7DQo+ICsgfQ0KPiArDQo+IGRzdFsyXSA9IGNwdV90b19sZTY0
KHN0cnRhYik7DQo+IA0KPiAtIGRzdFszXSA9IGNwdV90b19sZTY0KHMyX2NmZy0+dnR0YnIgJiBT
VFJUQUJfU1RFXzNfUzJUVEJfTUFTSyk7DQo+ICsgZHN0WzNdID0gY3B1X3RvX2xlNjQodnR0YnIp
Ow0KPiANCj4gdmFsIHw9IEZJRUxEX1BSRVAoU1RSVEFCX1NURV8wX0NGRywgU1RSVEFCX1NURV8w
X0NGR19TMl9UUkFOUyk7DQo+ICsgfSBlbHNlIHsNCj4gKyBkc3RbMl0gPSAwOw0KPiArIGRzdFsz
XSA9IDA7DQo+IH0NCj4gDQo+IGlmIChtYXN0ZXItPmF0c19lbmFibGVkKQ0KPiBAQCAtMTI1NCw2
ICsxMzEzLDE1IEBAIHN0YXRpYyBpbnQgYXJtX3NtbXVfZG9tYWluX2ZpbmFsaXNlKHN0cnVjdCBp
b21tdV9kb21haW4gKmRvbWFpbiwNCj4gew0KPiBpbnQgcmV0Ow0KPiBzdHJ1Y3QgYXJtX3NtbXVf
ZG9tYWluICpzbW11X2RvbWFpbiA9IHRvX3NtbXVfZG9tYWluKGRvbWFpbik7DQo+ICsgc3RydWN0
IGFybV9zbW11X2RldmljZSAqc21tdSA9IHNtbXVfZG9tYWluLT5zbW11Ow0KPiArDQo+ICsgaWYg
KHNtbXVfZG9tYWluLT5zdGFnZSA9PSBBUk1fU01NVV9ET01BSU5fTkVTVEVEICYmDQo+ICsgKCEo
c21tdS0+ZmVhdHVyZXMgJiBBUk1fU01NVV9GRUFUX1RSQU5TX1MxKSB8fA0KPiArICEoc21tdS0+
ZmVhdHVyZXMgJiBBUk1fU01NVV9GRUFUX1RSQU5TX1MyKSkpIHsNCj4gKyBkZXZfaW5mbyhzbW11
X2RvbWFpbi0+c21tdS0+ZGV2LA0KPiArICJkb2VzIG5vdCBpbXBsZW1lbnQgdHdvIHN0YWdlc1xu
Iik7DQo+ICsgcmV0dXJuIC1FSU5WQUw7DQo+ICsgfQ0KPiANCj4gLyogUmVzdHJpY3QgdGhlIHN0
YWdlIHRvIHdoYXQgd2UgY2FuIGFjdHVhbGx5IHN1cHBvcnQgKi8NCj4gc21tdV9kb21haW4tPnN0
YWdlID0gQVJNX1NNTVVfRE9NQUlOX1MyOw0KDQpIZXJlIHdlIHNldCBzdGFnZSAyIGFzIGRlZmF1
bHQsIGJ1dCBpbiBhcm1fc21tdV9kZXZpY2VfaHdfcHJvYmUoKSB3ZeKAmXZlDQpkZWxldGVkIHRo
ZSBjaGVjayBmb3IgUzIgcmVxdWlyZWQsIHNvIGlmIHdlIGhhdmUgYW4gSFcgd2l0aCBvbmx5IFMx
IHRoZSBwcm9iZSB3aWxsDQpzdWNjZWVkIGJ1dCB3ZSB3aWxsIHdyb25nbHkgc2V0IGhlcmUgUzIs
IHNvIEkgd291bGQga2VlcCAuLi4NCg0KPiBAQCAtMjM1MywxMSArMjQyMSwxNCBAQCBzdGF0aWMg
aW50IGFybV9zbW11X2RldmljZV9od19wcm9iZShzdHJ1Y3QgYXJtX3NtbXVfZGV2aWNlICpzbW11
KQ0KPiBicmVhazsNCj4gfQ0KPiANCj4gKyBpZiAocmVnICYgSURSMF9TMVApDQo+ICsgc21tdS0+
ZmVhdHVyZXMgfD0gQVJNX1NNTVVfRkVBVF9UUkFOU19TMTsNCj4gKw0KPiBpZiAocmVnICYgSURS
MF9TMlApDQo+IHNtbXUtPmZlYXR1cmVzIHw9IEFSTV9TTU1VX0ZFQVRfVFJBTlNfUzI7DQo+IA0K
PiAtIGlmICghKHJlZyAmIElEUjBfUzJQKSkgew0KPiAtIGRldl9lcnIoc21tdS0+ZGV2LCAibm8g
c3RhZ2UtMiB0cmFuc2xhdGlvbiBzdXBwb3J0IVxuIik7DQoNCnRoaXMgY2hhbmdlLCByZWFycmFu
Z2VkIGluIHRoZSB3YXkgdGhhdCBpcyBzZW5zaWJsZSB3aXRoIHRoZSBuZXcgbG9naWMuDQoNCj4g
KyBpZiAoIShyZWcgJiAoSURSMF9TMVAgfCBJRFIwX1MyUCkpKSB7DQo+ICsgZGV2X2VycihzbW11
LT5kZXYsICJubyB0cmFuc2xhdGlvbiBzdXBwb3J0IVxuIik7DQo+IHJldHVybiAtRU5YSU87DQo+
IH0NCj4gDQoNCg==


From xen-devel-bounces@lists.xenproject.org Fri Apr 10 09:58:50 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Fri, 10 Apr 2026 09:58:50 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1278610.1563383 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wB8dS-0004Lb-Hk; Fri, 10 Apr 2026 09:58:46 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1278610.1563383; Fri, 10 Apr 2026 09:58: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 1wB8dS-0004LU-Ep; Fri, 10 Apr 2026 09:58:46 +0000
Received: by outflank-mailman (input) for mailman id 1278610;
 Fri, 10 Apr 2026 09:58:44 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <Luca.Fancellu@arm.com>) id 1wB8dQ-0004LO-Mf
 for xen-devel@lists.xenproject.org; Fri, 10 Apr 2026 09:58:44 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wB8dP-00GcVf-9w
 for xen-devel@lists.xenproject.org; Fri, 10 Apr 2026 11:58:43 +0200
Received: from [10.42.69.4] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <Luca.Fancellu@arm.com>)
 id 69d8c9c3-2eae-0a2a0a5409dd-0a2a4504d448-16
 for <xen-devel@lists.xenproject.org>; Fri, 10 Apr 2026 11:58:43 +0200
Received: from [40.107.159.24]
 (helo=OSPPR02CU001.outbound.protection.outlook.com)
 by tlsNG-ebf023.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.0)
 (envelope-from <Luca.Fancellu@arm.com>)
 id 69d8c9d2-bb33-0a2a45040019-286b9f189212-3
 for <xen-devel@lists.xenproject.org>; Fri, 10 Apr 2026 11:58:43 +0200
Received: from CWLP265CA0291.GBRP265.PROD.OUTLOOK.COM (2603:10a6:401:5d::15)
 by DB3PR08MB9134.eurprd08.prod.outlook.com (2603:10a6:10:42b::13) with
 Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9769.40; Fri, 10 Apr
 2026 09:58:40 +0000
Received: from AM1PEPF000252DD.eurprd07.prod.outlook.com
 (2603:10a6:401:5d:cafe::8e) by CWLP265CA0291.outlook.office365.com
 (2603:10a6:401:5d::15) with Microsoft SMTP Server (version=TLS1_3,
 cipher=TLS_AES_256_GCM_SHA384) id 15.20.9769.42 via Frontend Transport; Fri,
 10 Apr 2026 09:58:39 +0000
Received: from outbound-uk1.az.dlp.m.darktrace.com (4.158.2.129) by
 AM1PEPF000252DD.mail.protection.outlook.com (10.167.16.55) with Microsoft
 SMTP Server (version=TLS1_3, cipher=TLS_AES_256_GCM_SHA384) id 15.20.9769.17
 via Frontend Transport; Fri, 10 Apr 2026 09:58:39 +0000
Received: from DU2PR08MB7272.eurprd08.prod.outlook.com (2603:10a6:10:2d7::16)
 by DB9PR08MB9585.eurprd08.prod.outlook.com (2603:10a6:10:456::12)
 with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9769.17; Fri, 10 Apr
 2026 09:57:36 +0000
Received: from DU2PR08MB7272.eurprd08.prod.outlook.com
 ([fe80::5d34:206f:373:a323]) by DU2PR08MB7272.eurprd08.prod.outlook.com
 ([fe80::5d34:206f:373:a323%6]) with mapi id 15.20.9769.018; Fri, 10 Apr 2026
 09:57: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=selector1 header.d=arm.com header.i="@arm.com" header.h="From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck"; dkim=pass header.s=selector1 header.d=arm.com header.i="@arm.com" header.h="From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck"
ARC-Seal: i=2; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=pass;
 b=WQWUIMhl7UY8CZxaPW+/wr/fbsW2shfUhNw2Vhdyp+S4miyt2M8j5yGdc0M+/i9vpBSbracPMjXC9Bbn0XxFwoX5UfHLdl4P+BoK81KmIywhptFFBgziAqq0Ef278SHtyj+ZJmTjq2vVn0ZYTcNXHHk81ivWbWt1IN7bPHqorljHjneonZC/uhO9Bhyxdc0yeyqx70RB9/w0Ej0xpmQDU7SgevbP4oLD+yP1n+1yYYN9s26V7gAvTiJVfBd1t5Y/M3XooE/SyuhTI//HxDvLx+KozAtXhx+IDRQRgLGtkNEmbcJTBUF9Th0ug4v9/i94/jo1Jga7vIwZG2XkBbJ+zg==
ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com;
 s=arcselector10001;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1;
 bh=SpSYYeQ1lAJURXPb8JMFN3lqCu3VJcMqQc5X2VTgqH0=;
 b=FzykmZbd/UPwQXZTi6AbaZxHLhw0HkbX5DH8yO7dpN+exRz3jzG7ahLqi6rw4oRVGu9RRCpO2a0jLFvumnlJ8LvjSYxLzPZKu8wMnqe4D2UTHtLaMFGDRWDmfirDIezZlHFhzyGjcCdixthZXOcS4zwc4WCCGz8KM0arQhwnrxfpNkIHsRGTNG28kakXDyLEKus/m6mDjUaOYPC1tvNcy6cpaguytvy+lJI9vzOfm5TwJ5FRFCu39w/sbko19+lHIDp+8+C1O5CuqaF9aFe87Xi1Ai8K/k7n5zDemZhzzCbTH0RSkVmWj4QjDRZyXB4svbDDIPhPsgfV0Y9dBQUHdg==
ARC-Authentication-Results: i=2; mx.microsoft.com 1; spf=pass (sender ip is
 4.158.2.129) smtp.rcpttodomain=epam.com smtp.mailfrom=arm.com; dmarc=pass
 (p=none sp=none pct=100) action=none header.from=arm.com; dkim=pass
 (signature was verified) header.d=arm.com; arc=pass (0 oda=1 ltdi=1
 spf=[1,1,smtp.mailfrom=arm.com] dkim=[1,1,header.d=arm.com]
 dmarc=[1,1,header.from=arm.com])
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=arm.com; s=selector1;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck;
 bh=SpSYYeQ1lAJURXPb8JMFN3lqCu3VJcMqQc5X2VTgqH0=;
 b=EE7m2lxICWI0x+Ie6BCuqQmG3zxAzlOp6tUS/XcA68254119zLt9s5KdzVBHJqJIaWfliGG3MYcTFxt0CT2dUTNaOik5PESkK/ekM7y+mKDNnYhKxCEcdAVeJ1vneaWd5xkNrQ6nBU5bT6j3IFl+iPDE5soeq8NRPSCe7CE/Z6g=
X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 4.158.2.129)
 smtp.mailfrom=arm.com; dkim=pass (signature was verified)
 header.d=arm.com;dmarc=pass action=none header.from=arm.com;
Received-SPF: Pass (protection.outlook.com: domain of arm.com designates
 4.158.2.129 as permitted sender) receiver=protection.outlook.com;
 client-ip=4.158.2.129; helo=outbound-uk1.az.dlp.m.darktrace.com; pr=C
ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none;
 b=PNlHS9xAAr19u6leJp63dSuJLuX1z33TzsB55pMash5NV7jrVGNx0eh0HduL2st3C7X5yNNNsG71nRADeJbxbWZqmI4Q8k1l9+0RRaRvrX2J1h6AULg1Ir9Fk4eCv3iA0/Z0wDFdsS1Wji6y3qeOgg5hTQkJYeYwOlP2yT9D7+ObOGnKTvHuKi+D+UnjqPMgngaqz9Rk+/IJ+adt4NZX2QAi7/qVDTqtE69Om2iAYDImPlPT1rT4L+jp4fWoY+dCeAKKqpya6Jrk+5J7qciWYU0LrEGnYXUCHqz8wLIaW4QFjVVm9+Q8wUxW77B8/n68i9MJ3u7aW3yGwCUNSKZgiQ==
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com;
 s=arcselector10001;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1;
 bh=SpSYYeQ1lAJURXPb8JMFN3lqCu3VJcMqQc5X2VTgqH0=;
 b=KS8rsmO3JiKKVCtRmWhxxerLRbzlthFxLSoRivrb5A4HM9uooVpHwA0x00Ou1aAb3n3D2cW5UA50hSEE7FnLJUQG6XkY3CHsGnOvPXSeIBV2J8lvEsn7kdzfagBqMhQARkEVRmY135KxdS4SlYR0Pe1jtUjHnUt3yJzxwmim+nIGgMKW5qyLoxErjNcQZuO8AwEiJYRcPinHhOHzSveiHMMknfRfW1CsdcZFStVJF8grDybh/brPkH5i9vf3eNqVhTWENzaggaMjaavI8RQde4wwUg2JpHxFTYnZWc/cJV/y7J16+VaC416xHo8kzCU31qfkLBUBH9Aubhi8vJjQZQ==
ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass
 smtp.mailfrom=arm.com; dmarc=pass action=none header.from=arm.com; dkim=pass
 header.d=arm.com; arc=none
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=arm.com; s=selector1;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck;
 bh=SpSYYeQ1lAJURXPb8JMFN3lqCu3VJcMqQc5X2VTgqH0=;
 b=EE7m2lxICWI0x+Ie6BCuqQmG3zxAzlOp6tUS/XcA68254119zLt9s5KdzVBHJqJIaWfliGG3MYcTFxt0CT2dUTNaOik5PESkK/ekM7y+mKDNnYhKxCEcdAVeJ1vneaWd5xkNrQ6nBU5bT6j3IFl+iPDE5soeq8NRPSCe7CE/Z6g=
From: Luca Fancellu <Luca.Fancellu@arm.com>
To: Milan Djokic <milan_djokic@epam.com>
CC: "xen-devel@lists.xenproject.org" <xen-devel@lists.xenproject.org>, 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>
Subject: Re: [PATCH v3 03/23] xen/arm: smmuv3: Alloc io_domain for each device
Thread-Topic: [PATCH v3 03/23] xen/arm: smmuv3: Alloc io_domain for each
 device
Thread-Index: AQHcyNBjSkBVLcbHSUezmfF5qsadhw==
Date: Fri, 10 Apr 2026 09:57:36 +0000
Message-ID: <30F30624-4145-4DBD-BC26-4CD871EE9EB7@arm.com>
References: <cover.1774918270.git.milan_djokic@epam.com>
 <78e4f2e2c68cdb75aa1c0dd7e8b456c03aa2fe6f.1774918270.git.milan_djokic@epam.com>
In-Reply-To:
 <78e4f2e2c68cdb75aa1c0dd7e8b456c03aa2fe6f.1774918270.git.milan_djokic@epam.com>
Accept-Language: en-GB, en-US
Content-Language: en-US
X-MS-Has-Attach:
X-MS-TNEF-Correlator:
x-mailer: Apple Mail (2.3826.700.81.1.6)
Authentication-Results-Original: dkim=none (message not signed)
 header.d=none;dmarc=none action=none header.from=arm.com;
x-ms-traffictypediagnostic:
	DU2PR08MB7272:EE_|DB9PR08MB9585:EE_|AM1PEPF000252DD:EE_|DB3PR08MB9134:EE_
X-MS-Office365-Filtering-Correlation-Id: 33f488a1-e7b1-47d0-d56b-08de96e7bda0
x-checkrecipientrouted: true
nodisclaimer: true
X-MS-Exchange-SenderADCheck: 1
X-MS-Exchange-AntiSpam-Relay: 0
X-Microsoft-Antispam-Untrusted:
 BCL:0;ARA:13230040|1800799024|376014|366016|18002099003|56012099003|22082099003|38070700021;
X-Microsoft-Antispam-Message-Info-Original:
 CdBa0hRqkfQpQRporERcJnw4N+Hr8T5yccb22GsZBselxzaAWGQwx+yV0spmziwtMBrV4ZHxrxqBssgK/AtzhV7zNE3HXxgqsOvpvZuAuX/N3YXgGOjg5zZoDPPL62GjR4EnCcWA1uzbEzjlkXRJLPCYjgt1fMjJPFenuOAizSSxiLDSSopgEcfrwZkffHJWt1WU3kis3lNlAvLBhyajgQDmiobtQK+GsZ2u2lHd1KeuLr7dTAJUQrpug7E3hRLddjGXvf/wy/ynvlWDniY94w0garIUGFbzVmiNsb7Zd9cu+u4jf3TZUep1n3hGgs47ZiJYEcKehbYYn0XN33/1pFun/rdhseJeInlFznJcoM29MY9G+ipMFq8ZUH5amARh9siIImIpcsmH39i5KItQyuIEG9fWZKgXA0uq+YwUieAo99YjF6FWfBDMT0D9wFx6AatQk5AU+V50w4eAhcB2smwodB+Fve+vsKyN0YOystAZeyUedfHMhzUDZxp207bPfzem0LxQerLRqQD7hs4GjqRvDurUnz/s2jibpR3mIX0mCHjcIsNhN8vaIJM046fc6h9N+5dUMsPMj9kyW3uJ/xYy4bl4F0zmoe5uCGEqS0n9b5aKKIA7LK6dLikK/wGyS1E2431MoZvqAFakdCJyzFj2ghu/05ioLglKAsWlTUucvgSsShuh+iuI0BiGlTNgzlolLK8BCzAzAsOlwjvveLDbnQXsCkRS+xCNJhjd7a8iFA0w9MaKabl8YUsT8XlfaPXaqHE03U/apBhBUvXFZ187p2sXB/SGKdWbVKUZjjY=
X-Forefront-Antispam-Report-Untrusted:
 CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:DU2PR08MB7272.eurprd08.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(1800799024)(376014)(366016)(18002099003)(56012099003)(22082099003)(38070700021);DIR:OUT;SFP:1101;
Content-Type: text/plain; charset="us-ascii"
Content-ID: <0C6C2792E7A62744B14B527B84379FAD@eurprd08.prod.outlook.com>
Content-Transfer-Encoding: quoted-printable
MIME-Version: 1.0
X-Exchange-RoutingPolicyChecked:
 ADbpU5A56+HN3pHoy61vp4f5DC2J7qKWlaJ+mKf7UdZWcYLVV3LrvyoN514d30Y+OzCFHuJbHOnFHaJBeUHYO0Y+kOz4xsGZ7kP1Zs8Sbva58Nb1tdAT9T6DQ1c2g1PLiTUOs0Q25Bsi9Elgw6l555Ppyhe8AfV7SjltcBd8DgIUCJiqRLd7vaUM1JkT5C45qWTWeeYZwNq3v0iOgK5wt1rUApOXIKyB8VBQP1tLf5lbmVz9bOF4q4knioKj4WSV0HL8HtOxb3+yK4UIjamonjPGP05XuNON01oAs5MFzV+I3MbFTmmp15iP+fMIPDoDaCDmEqVIEXrjpA73ylzLRA==
X-MS-Exchange-Transport-CrossTenantHeadersStamped: DB9PR08MB9585
X-EOPAttributedMessage: 0
X-MS-Exchange-Transport-CrossTenantHeadersStripped:
 AM1PEPF000252DD.eurprd07.prod.outlook.com
X-MS-PublicTrafficType: Email
X-MS-Office365-Filtering-Correlation-Id-Prvs:
	aca1a194-e08b-43bb-9bbe-08de96e7982a
X-Microsoft-Antispam:
	BCL:0;ARA:13230040|35042699022|1800799024|376014|36860700016|14060799003|82310400026|22082099003|18002099003|56012099003;
X-Microsoft-Antispam-Message-Info:
	9PlPibUf8blzGBzzjJh+36STQIpbBeoLXsq7mgU48nSMMMstuRprxd6sns+lrYqVlO9bFUqxQQMEdPqA2Bq1Pf//kMBnV0ej5z1eZBOnephAUy06FE3jAobiNtrAuVoqeMvgrRVIxzjyrdBw30sJJh9gCb1zvhS27Zt9BJT1tKdFj3FLMB2DeQAAsjwC7tHLv48bEcZtXMRYD//n+V5m8gSwcItaJ8I29MGOTsGO5n7QhrU2x3WGT7CW7Wy0cTaCEzpxdTCO/cg99qWCNlhpd2lKoGRexxii1Og1slaKHldOe3SvONrShkPmSqgFCpZjbCs4ijGc+SjOvcbo8UTeJC64+nTaN43rRbWrGtFfbbbqW6cuz9OABLqRNpyTD4Op+9OA1zUgBYb20Ve+YWUeaUFxZnUHfOIM3WZ41EgUhwLzxvbkZVO8H+4A89KdtEiRDUk3SsMmKehebFopKU2y+kTWdxN92mbo/GQ9wx6I4L2iYI/VtyqAEm+mRLc7VbsTICQg8kXqxOIOud6itN1mi+uxo56osZ3xuXg1x62q5SSB3aM875ZFuijEU2VbKUWbNhouu2yqVzSyBZdhrUR1ic+63Gy3nnaYPGxubz7TAxBOTOoLyzWmSBByuy3s3TVWZAzrnQB9iTTR/LM8AAqfKI2RXtudImQbiMVDqqanWojmVGJYm157ZMb0qoAJJVrWtUpHKFdAM/nq9QRu1eGiduP3UUCLVQin/uOSaqhOmsvBdnoFMtiFI633qjJyAjHbTpBWnC5kgjHKBaKpts1Ljw==
X-Forefront-Antispam-Report:
	CIP:4.158.2.129;CTRY:GB;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:outbound-uk1.az.dlp.m.darktrace.com;PTR:InfoDomainNonexistent;CAT:NONE;SFS:(13230040)(35042699022)(1800799024)(376014)(36860700016)(14060799003)(82310400026)(22082099003)(18002099003)(56012099003);DIR:OUT;SFP:1101;
X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1
X-MS-Exchange-AntiSpam-MessageData-0:
	Wy8qouLRwYJCCgImITvTKZtKmYDNMu85hvaJZJhfhPno1xkNEwumQ6jsJLOgXuQzjUGssMF8WSXZZtCWOYePmJCl+Tx5/dDsYtTZO+IbZKwHDR75dN3VUNJ2da9u9m6/2DL9SjqhgSDOpYcQ2zUV5Ib8kAtR6eJ7rNKMEtf+UNu11OZ7DAVlY1r3hlKGYTnD8Qrw9Eke0pq3KIS4J48FpotIfbvmU7SjOAe84ErUlYQvFog3S8/fkMC+hF8vUBsieBVRee1HVzudDXvCsKQV/NgHYwP4tR4z1qqyWckCi1LWCPPsfsMse+7rk8uucfBGhX1TZVOJZLzsHwBDRC5fNEuLCwu0MVD8kpK+7XTJBYQayiLl0T/oLfTfzdt39nXk3lPMI4xmLZwEYS6yr86Qycpdx861rk+y2vXHamKD9/oHwUI9nmr+DRYxws6K6XV0
X-OriginatorOrg: arm.com
X-MS-Exchange-CrossTenant-OriginalArrivalTime: 10 Apr 2026 09:58:39.5331
 (UTC)
X-MS-Exchange-CrossTenant-Network-Message-Id: 33f488a1-e7b1-47d0-d56b-08de96e7bda0
X-MS-Exchange-CrossTenant-Id: f34e5979-57d9-4aaa-ad4d-b122a662184d
X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=f34e5979-57d9-4aaa-ad4d-b122a662184d;Ip=[4.158.2.129];Helo=[outbound-uk1.az.dlp.m.darktrace.com]
X-MS-Exchange-CrossTenant-AuthSource:
	AM1PEPF000252DD.eurprd07.prod.outlook.com
X-MS-Exchange-CrossTenant-AuthAs: Anonymous
X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem
X-MS-Exchange-Transport-CrossTenantHeadersStamped: DB3PR08MB9134
X-purgate-ID: tlsNG-ebf023/1775815123-B031451B-1C2ECF3B/0/0
X-purgate-type: clean
X-purgate-size: 821

Hi Milan,

> On 31 Mar 2026, at 02:52, Milan Djokic <milan_djokic@epam.com> wrote:
>=20
> From: Rahul Singh <rahul.singh@arm.com>
>=20
> In current implementation io_domain is allocated once for each xen
> domain as Stage2 translation is common for all devices in same xen
> domain.
>=20
> 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.
>=20
> Alloc io_domain for each device so that each device can have different
> Stage-1 and Stage-2 configuration structure.
>=20
> Signed-off-by: Rahul Singh <rahul.singh@arm.com>
> Signed-off-by: Milan Djokic <milan_djokic@epam.com>
> ---

Looks ok to me

Reviewed-by: Luca Fancellu <luca.fancellu@arm.com>

Cheers,
Luca



From xen-devel-bounces@lists.xenproject.org Fri Apr 10 10:06:55 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Fri, 10 Apr 2026 10:06:55 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1278627.1563392 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wB8lF-00061s-99; Fri, 10 Apr 2026 10:06:49 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1278627.1563392; Fri, 10 Apr 2026 10: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 1wB8lF-00061l-5T; Fri, 10 Apr 2026 10:06:49 +0000
Received: by outflank-mailman (input) for mailman id 1278627;
 Fri, 10 Apr 2026 10:06:48 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <nicola.vetrini@bugseng.com>) id 1wB8lE-00061f-5P
 for xen-devel@lists.xenproject.org; Fri, 10 Apr 2026 10:06:48 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wB8lD-00E48T-D9
 for xen-devel@lists.xenproject.org; Fri, 10 Apr 2026 12:06:47 +0200
Received: from [10.42.69.3] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <nicola.vetrini@bugseng.com>)
 id 69d8cbb2-bab6-0a2a0a5309dd-0a2a45039446-24
 for <xen-devel@lists.xenproject.org>; Fri, 10 Apr 2026 12:06:47 +0200
Received: from [162.55.131.47] (helo=support.bugseng.com)
 by tlsNG-33051d.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.0)
 (envelope-from <nicola.vetrini@bugseng.com>)
 id 69d8cbb7-02b3-0a2a45030019-a237832fa6c2-3
 for <xen-devel@lists.xenproject.org>; Fri, 10 Apr 2026 12:06:47 +0200
Received: from support.bugseng.com (support.bugseng.com [162.55.131.47])
 (Authenticated sender: nicola)
 by support.bugseng.com (Postfix) with ESMTPA id D271D4EE3D1A;
 Fri, 10 Apr 2026 12:06:46 +0200 (CEST)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-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
Authentication-Results: bugseng.com; arc=none smtp.remote-ip=162.55.131.47
ARC-Seal: i=1; d=bugseng.com; s=openarc; a=rsa-sha256; cv=none; t=1775815607;
	b=MjdY4/JVIuAW9N36xCD3YXm3JotM3V+RfEQt+4MziYEvN3e07ypH3uL2PS6tRREgPlrh
	 eFgNSqpj0cFZszk/EYt3w+spZnkqYb0xtfH4bYb8Al6KRLp0iDn9/G6mgli7yYdyv7Xlx
	 9n8VMNGEkH/66VjLita3reZoMxBeSUX/ee72S0qQpcayF7QSx+yUBmzqBmEoRwEv4qUsT
	 F9hVA/Ckp6O2BDKpCq15pnPFqc6aNIYCoW77+t34/diJIn7ls71oezMVWks24x/r6L+nE
	 zHfqxZReahftdzo/7YmKBOStHNPBwxH2zm6bKgQ3Pk6WgCgdEBilPocP+7fG9eXiDE3uc
	 f7oGk50b/4p+wvrYevGaQh5MVoS3Vvz6fBUULWsoq40Bn/DXsysE52a+dsqf52huG3f9Q
	 emMM9isp+9Y2uDeeJfYZsF9tvmJSW9xajTXZw/m02EBpsJSY5b5QYZm5kNd2WC5UHEaQx
	 +Wb9Wg+d3Kche3Ig0TRbdpsELuO6JR1DuDDzRAat5NIU5BjUbtVHF2y1ap/P1xyeDFGNG
	 g+wHznknrWKFQ1eMLsRhsaYYYB9SqClBmHRqIO/KNhjUye0SiQ1f8cHOAMStNcKzssRdY
	 lNFpNAzcKujryKs4TxupYSl7dwwcYdzpz48RKGdBpiQ+AZbHyc7Idztyk0XTEZI=
ARC-Message-Signature: i=1; d=bugseng.com; s=openarc; a=rsa-sha256;
	c=relaxed/relaxed; t=1775815607;
	h=MIME-Version:Date:From:To:Cc:Subject:In-Reply-To:References:
	 Message-ID:X-Sender:Organization:Content-Type:
	 Content-Transfer-Encoding;
	bh=AthjxD6bIMJJOd71BX/xR7xA5ig717DgsSmNBAcifVk=;
	b=p6/i966JC5eohSNNJHNMFqvLHODPP0jTYVQ2tMzma/LuQHu3yT3TONHOe+FMD5GqNS2I
	 DycIguteQVprseFuqRXk/7o+JFEWkCZSry+CZu2vdU+8/VHRrIgZQnKWHWohY59EWv9rv
	 FnsjN3Xi8irTxVeLctxsbMB5Apppflv4QwpsmjzN1BjbyFuVWctVY48dlwYbBDEli1AE9
	 ufSWhHN8Iq38NX7LUMJTi4N0dT//s4fMnAQ5cdqGfKm2HDbIXxTmnxQhrWinml9/GSEKo
	 dn/kHsqNIIdiY2dg4ZJjGv91WVF6mUGEhJ4ui5aGzhiyzZTYJIvEyc3ATBKYKoXykn120
	 y4kE7imA9xSm7BfHEu4cFUewSVWBGlPnQS/o3/bEJc9la2ueRnKsNOCw6xQCUziwIQFDV
	 jCKQvA20GE4ccrZPg75HV98ba6Oav5Rpjp1gKkj9dFyzFxhRjxU34TyNdfiPCDuuJ1MyF
	 FLambikrRCFlik5WYeSdYY23MF/m2v7+IpGoFAgn6fFzUM0GbmzXkhpKBUntwmA4tXvOB
	 5FRt2evvljrLp0SwuPUVzRytfpgPPX92FO+8i1zKj/33zE4ZKZfVygl7xsoyRCRNBzsHR
	 6SIlTCaxeE9LrblsYESUmkiX6jdHiR+e/zZenwqpN98KTO3AAb2wKN4Ybj1wL24=
ARC-Authentication-Results: i=1; bugseng.com; arc=none smtp.remote-ip=162.55.131.47
MIME-Version: 1.0
Date: Fri, 10 Apr 2026 12:06:46 +0200
From: Nicola Vetrini <nicola.vetrini@bugseng.com>
To: Jan Beulich <jbeulich@suse.com>
Cc: xen-devel@lists.xenproject.org, Gyujeong Jin <wlsrbwjd7232@gmail.com>,
 Stefano Stabellini <sstabellini@kernel.org>, Julien Grall <julien@xen.org>,
 Bertrand Marquis <bertrand.marquis@arm.com>, Michal Orzel
 <michal.orzel@amd.com>
Subject: Re: [BUG] Potential double-free in Xen dt-overlay attach/remove error
 path
In-Reply-To: <c4961231-7882-49d8-8c68-c014ca0a5e4f@suse.com>
References: <CANrF8CHA1XacwRzNcw3zt0goEV-7in_=vtEYhLxSjwaV62jrTw@mail.gmail.com>
 <c4961231-7882-49d8-8c68-c014ca0a5e4f@suse.com>
Message-ID: <aaeff4b4915c28a6ac5a7abfa4ab7679@bugseng.com>
X-Sender: nicola.vetrini@bugseng.com
Organization: BUGSENG s.r.l.
Content-Type: text/plain; charset=US-ASCII;
 format=flowed
Content-Transfer-Encoding: 7bit
X-purgate-ID: tlsNG-33051d/1775815607-CB126C9A-4606EAD9/0/0
X-purgate-type: clean
X-purgate-size: 3052

On 2026-04-10 08:31, Jan Beulich wrote:
> On 09.04.2026 23:28, Gyujeong Jin wrote:
>> Hello Team, I was advised to report this issue in this way because
>> dt-overlay is currently experimental and not security supported.
>> 
>> I would like to report a potential memory safety issue in Xen related 
>> to
>> the Device Tree overlay handling logic.
>> ------------------------------
>> Problem Description
>> 
>> A double-free / use-after-free condition may occur in the dt-overlay
>> handling path when an overlay attachment fails and the same overlay is
>> later removed.
>> 
>> The issue arises because rangeset objects are freed on the failure 
>> path of
>> handle_attach_overlay_nodes(), but the corresponding pointers are not
>> cleared. Subsequently, handle_remove_overlay_nodes() may operate on 
>> these
>> stale pointers, leading to a second free.
>> Affected Component
>> 
>>    - Xen ARM
>>    - Device Tree overlay subsystem
>>    - File: xen/common/device-tree/dt-overlay.c
>> 
>> Relevant functions:
>> 
>>    - handle_attach_overlay_nodes()
>>    - handle_remove_overlay_nodes()
>> 
>> Impact
>> 
>> This issue may lead to:
>> 
>>    - Double-free of rangeset structures
>>    - Use-after-free when accessing stale pointers
>>    - Potential hypervisor crash (DoS)
>>    - Possible memory corruption depending on allocator behavior
>> 
>> Given that this occurs in the hypervisor context, the impact could 
>> extend
>> beyond a simple crash under certain conditions.
>> Root Cause
>> 
>> The issue originates from inconsistent memory management between the 
>> attach
>> failure path and the remove path.
>> 
>> In handle_attach_overlay_nodes(), the failure path frees rangeset 
>> objects:
>> 
>> static long handle_attach_overlay_nodes(...)
>> {
>>     ...
>> 
>>     if ( entry )
>>     {
>>         rangeset_destroy(entry->irq_ranges);
>>         rangeset_destroy(entry->iomem_ranges);
>>     }
>> 
>>     return rc;
>> }
>> 
>> However, the corresponding pointers (entry->irq_ranges and
>> entry->iomem_ranges) are not set to NULL afterward, leaving dangling
>> pointers in the entry structure.
> 
> Further to this, am I overlooking any check preventing an already 
> created
> pair of rangesets to be replaced by new ones, leaking the original 
> pair?
> 
> And then there's a Misra issue as well: dt_overlay_domctl() has 
> unreachable
> code. Anything other than XEN_DOMCTL_DT_OVERLAY_ATTACH is excluded at 
> the
> top, so the "else" body near the bottom is unreachable. (This in turn 
> makes
> me wonder: How come there's no "detach"?) Yet then, that's probably 
> pretty
> meaningless, as there look to be other issues (Misra and general 
> robustness
> ones) as well.
> 
> Jan

Is it by any chance enabled in *-allcode analyses? I don't see such 
reports for unreachable code on ARM64.

-- 
Nicola Vetrini, B.Sc.
Software Engineer
BUGSENG (https://bugseng.com)
LinkedIn: https://www.linkedin.com/in/nicola-vetrini-a42471253


From xen-devel-bounces@lists.xenproject.org Fri Apr 10 10:09:30 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Fri, 10 Apr 2026 10:09:30 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1278638.1563409 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wB8nq-0006tl-RH; Fri, 10 Apr 2026 10:09:30 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1278638.1563409; Fri, 10 Apr 2026 10:09: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 1wB8nq-0006te-ON; Fri, 10 Apr 2026 10:09:30 +0000
Received: by outflank-mailman (input) for mailman id 1278638;
 Fri, 10 Apr 2026 10:09:29 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <bounce-md_30504962.69d8cc56.v1-ed78c97418584d2a93b5e2fa7768da7d@bounce.vates.tech>)
 id 1wB8no-0006gS-UL
 for xen-devel@lists.xenproject.org; Fri, 10 Apr 2026 10:09:29 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wB8no-00BimU-A5
 for xen-devel@lists.xenproject.org; Fri, 10 Apr 2026 12:09:28 +0200
Received: from [10.42.69.8] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1) (envelope-from
 <bounce-md_30504962.69d8cc56.v1-ed78c97418584d2a93b5e2fa7768da7d@bounce.vates.tech>)
 id 69d8cc49-e002-0a2a0a5209dd-0a2a4508d496-36
 for <xen-devel@lists.xenproject.org>; Fri, 10 Apr 2026 12:09:28 +0200
Received: from [198.2.187.14] (helo=mail187-14.suw11.mandrillapp.com)
 by tlsNG-c1860d.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.0)
 (envelope-from
 <bounce-md_30504962.69d8cc56.v1-ed78c97418584d2a93b5e2fa7768da7d@bounce.vates.tech>)
 id 69d8cc56-fab6-0a2a45080019-c602bb0e3937-3
 for <xen-devel@lists.xenproject.org>; Fri, 10 Apr 2026 12:09:27 +0200
Received: from pmta09.mandrill.prod.suw01.rsglab.com (localhost [127.0.0.1])
 by mail187-14.suw11.mandrillapp.com (Mailchimp) with ESMTP id
 4fsXbB4y36z8XS1HS
 for <xen-devel@lists.xenproject.org>; Fri, 10 Apr 2026 10:09:26 +0000 (GMT)
Received: from [37.26.189.201] by mandrillapp.com id
 ed78c97418584d2a93b5e2fa7768da7d; Fri, 10 Apr 2026 10:09: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=mte1 header.d=mandrillapp.com header.i="@mandrillapp.com" header.h="From:Subject:To:Cc:Message-Id:In-Reply-To:References:Feedback-ID:Date:MIME-Version:Content-Type:Content-Transfer-Encoding"; dkim=pass header.s=mte1 header.d=vates.tech header.i="teddy.astie@vates.tech" header.h="From:Subject:To:Cc:Message-Id:In-Reply-To:References:Feedback-ID:Date:MIME-Version:Content-Type:Content-Transfer-Encoding"
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=mandrillapp.com;
	s=mte1; t=1775815766; x=1776085766;
	bh=YaD3wL81QOyOKzJ4o6EbQmXAFBu+LZDByU7J9GRr2VA=;
	h=From:Subject:To:Cc:Message-Id:In-Reply-To:References:Feedback-ID:
	 Date:MIME-Version:Content-Type:Content-Transfer-Encoding:CC:Date:
	 Subject:From;
	b=gmAdEn3QgqnWkcpSnUP2ytx4AsiU/kCcGMV3XQQtAgsmGXe9Z4qegHljCakP9Y7fp
	 2LDGgcR9q/YHFrGThJ00T53Sx3dA+fPTJqnbxRrXhwAzR8C3W1CGm9+rVG9QY1vlxC
	 H9b7SVRIasXvgaS9q2kyj0ClZu3Uvo5vXCx0uUd9DPdz8F737JgdnxLXmnBjaJ8gFK
	 1tRfTu0xQ0WdPsCGHp3e8eopLyUFuzG7xgoUjIXnTv3aj+2UKKAsPxP9I4b6Hknm0H
	 95rI7OyjoRrRg37AW0TaWfDVsltfuEokEZGl1DIeRuCMaNpbhBUUcBxNoOonN4Fb6H
	 G94fFiKle0lbA==
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=vates.tech; s=mte1;
	t=1775815766; x=1776076266; i=teddy.astie@vates.tech;
	bh=YaD3wL81QOyOKzJ4o6EbQmXAFBu+LZDByU7J9GRr2VA=;
	h=From:Subject:To:Cc:Message-Id:In-Reply-To:References:Feedback-ID:
	 Date:MIME-Version:Content-Type:Content-Transfer-Encoding:CC:Date:
	 Subject:From;
	b=C+jlkMHkhSu+DbBrBHyxpW13Q+ol+aW4tc9fELU/auog5ji8n56LLaZO5WKuFxgHz
	 LkFyjXHgdtTsfksjD+bD3mo2Fdh3qcjwvpY+UHZEfrtlij5fo4qlbYvGt7dCqbOcvW
	 hUJVX2CZkjbOdvZFZ9ZH8Rx+bZcbN+0ydLtTJgSZsqSC1gBN4sLnGFg55c61HKgatM
	 mdZiV6MUvcisw8pir1Spr0CJSJAQyIRj5cBVmibS7zsCqMSpkoR3zAlKBIivFmGEQc
	 N3WrzIluLLuXdQE8r/iCJw3VCVkfF+bjtuNK0ioEyLA+o4zyaY7sWfmPpEBSmMg4Fi
	 3buVDWtoPccBw==
From: "Teddy Astie" <teddy.astie@vates.tech>
Subject: =?utf-8?Q?[RFC=20PATCH=202/2]=20vtd:=20Replace=20macros=20with=20bitfield?=
X-Mailer: git-send-email 2.52.0
X-Bm-Disclaimer: Yes
X-Bm-Milter-Handled: 4ffbd6c1-ee69-4e1b-aabd-f977039bd3e2
X-Bm-Transport-Timestamp: 1775815765889
To: xen-devel@lists.xenproject.org
Cc: "Teddy Astie" <teddy.astie@vates.tech>, "Jan Beulich" <jbeulich@suse.com>, "Andrew Cooper" <andrew.cooper3@citrix.com>, "=?utf-8?Q?Roger=20Pau=20Monn=C3=A9?=" <roger.pau@citrix.com>
Message-Id: <3182da144d0cb998c9ae897b55285b7e408cd972.1775814143.git.teddy.astie@vates.tech>
In-Reply-To: <815edfd0db90859a4ce270d833d9d721ff66e31c.1775814143.git.teddy.astie@vates.tech>
References: <815edfd0db90859a4ce270d833d9d721ff66e31c.1775814143.git.teddy.astie@vates.tech>
X-Native-Encoded: 1
X-Report-Abuse: =?UTF-8?Q?Please=20forward=20a=20copy=20of=20this=20message,=20including=20all=20headers,=20to=20abuse@mandrill.com.=20You=20can=20also=20report=20abuse=20here:=20https://mandrillapp.com/contact/abuse=3Fid=3D30504962.ed78c97418584d2a93b5e2fa7768da7d?=
X-Mandrill-User: md_30504962
Feedback-ID: 30504962:30504962.20260410:md
Date: Fri, 10 Apr 2026 10:09:26 +0000
MIME-Version: 1.0
Content-Type: text/plain; charset=utf-8
Content-Transfer-Encoding: 7bit
X-purgate-ID: tlsNG-c1860d/1775815768-F5557497-310C376F/0/0
X-purgate-type: clean
X-purgate-size: 18951

Replace macros with bitfield to allow simplyfing the code and be
less error prone when manipulating PTEs.

It also has the effect of directly exposing the mfn in the pte struct
instead of derivating it from the raw pte value using dma_pte_addr().

Signed-off-by: Teddy Astie <teddy.astie@vates.tech>
---
It allows nicer constructs like

  new.snp = iommu_snoop;

instead of

  if ( iommu_snoop )
    dma_set_pte_snp(new);

A lot of simplifications could be done afterward when switching the
logic from maddrs to mfns i.e remove many maddr-mfn conversions.

bloat-o-meter (along with the previous change)

add/remove: 0/0 grow/shrink: 7/3 up/down: 227/-45 (182)
Function                                     old     new   delta
addr_to_dma_page_maddr                       949    1058    +109
vtd_dump_page_table_level                    197     233     +36
fill_qpt                                    1151    1178     +27
print_vtd_entries                            486     504     +18
domain_context_mapping_one                  2098    2114     +16
intel_iommu_map_page                         909     921     +12
intel_iommu_unmap_page                       731     740      +9
intel_iommu_lookup_page                      185     176      -9
queue_free_pt                                442     425     -17
vtd_dump_page_table_level.cold                86      67     -19
Total: Before=18446744073715636162, After=18446744073715636344, chg +0.00%

I guess using mfns 'everywhere' would improve the bloat-o-meter picture.

 xen/drivers/passthrough/vtd/iommu.c | 120 +++++++++++++---------------
 xen/drivers/passthrough/vtd/iommu.h |  44 +++++-----
 xen/drivers/passthrough/vtd/utils.c |  16 ++--
 3 files changed, 85 insertions(+), 95 deletions(-)

diff --git a/xen/drivers/passthrough/vtd/iommu.c b/xen/drivers/passthrough/vtd/iommu.c
index cf97469957..eeebc73d26 100644
--- a/xen/drivers/passthrough/vtd/iommu.c
+++ b/xen/drivers/passthrough/vtd/iommu.c
@@ -321,7 +321,7 @@ static uint64_t addr_to_dma_page_maddr(struct domain *domain, daddr_t addr,
 {
     struct domain_iommu *hd = dom_iommu(domain);
     int addr_width = agaw_to_width(hd->arch.vtd.agaw);
-    struct dma_pte *parent, *pte = NULL;
+    union dma_pte *parent, *pte = NULL;
     unsigned int level = agaw_to_level(hd->arch.vtd.agaw), offset;
     u64 pte_maddr = 0;
 
@@ -350,15 +350,15 @@ static uint64_t addr_to_dma_page_maddr(struct domain *domain, daddr_t addr,
         offset = address_level_offset(addr, level);
         pte = &parent[offset];
 
-        pte_maddr = dma_pte_addr(*pte);
-        if ( !dma_pte_present(*pte) || (level > 1 && dma_pte_superpage(*pte)) )
+        pte_maddr = mfn_to_maddr(pte->mfn);
+        if ( !dma_pte_present(*pte) || (level > 1 && pte->sp) )
         {
             struct page_info *pg;
             /*
              * Higher level tables always set r/w, last level page table
              * controls read/write.
              */
-            struct dma_pte new_pte = { DMA_PTE_PROT };
+            union dma_pte new_pte = { .r = true, .w = true };
 
             if ( !alloc )
             {
@@ -371,9 +371,8 @@ static uint64_t addr_to_dma_page_maddr(struct domain *domain, daddr_t addr,
                  * with the address adjusted to account for the residual of
                  * the walk.
                  */
-                pte_maddr = (pte->val & PADDR_MASK) +
-                    (addr & ((1UL << level_to_offset_bits(level)) - 1) &
-                     PAGE_MASK);
+                pte_maddr = mfn_to_maddr(pte->mfn) +
+                            (addr & ((1UL << level_to_offset_bits(level)) - 1) & PAGE_MASK);
                 if ( !target )
                     break;
             }
@@ -384,20 +383,20 @@ static uint64_t addr_to_dma_page_maddr(struct domain *domain, daddr_t addr,
                 break;
 
             pte_maddr = page_to_maddr(pg);
-            dma_set_pte_addr(new_pte, pte_maddr);
+            new_pte.mfn = maddr_to_mfn(pte_maddr);
 
             if ( dma_pte_present(*pte) )
             {
-                struct dma_pte *split = map_vtd_domain_page(pte_maddr);
+                union dma_pte *split = map_vtd_domain_page(pte_maddr);
                 unsigned long inc = 1UL << level_to_offset_bits(level - 1);
 
-                split[0].val |= pte->val & ~DMA_PTE_CONTIG_MASK;
+                split[0].raw |= pte->raw & ~DMA_PTE_CONTIG_MASK;
                 if ( inc == PAGE_SIZE )
-                    split[0].val &= ~DMA_PTE_SP;
+                    split[0].sp = false;
 
                 for ( offset = 1; offset < PTE_NUM; ++offset )
-                    split[offset].val |=
-                        (split[offset - 1].val & ~DMA_PTE_CONTIG_MASK) + inc;
+                    split[offset].raw |=
+                        (split[offset - 1].raw & ~DMA_PTE_CONTIG_MASK) + inc;
 
                 iommu_sync_cache(split, PAGE_SIZE);
                 unmap_vtd_domain_page(split);
@@ -408,9 +407,9 @@ static uint64_t addr_to_dma_page_maddr(struct domain *domain, daddr_t addr,
                 perfc_incr(iommu_pt_shatters);
             }
 
-            write_atomic(&pte->val, new_pte.val);
-            iommu_sync_cache(pte, sizeof(struct dma_pte));
-            pt_update_contig_markers(&parent->val,
+            write_atomic(&pte->raw, new_pte.raw);
+            iommu_sync_cache(pte, sizeof(union dma_pte));
+            pt_update_contig_markers(&parent->raw,
                                      address_level_offset(addr, level),
                                      level, PTE_kind_table);
         }
@@ -418,7 +417,7 @@ static uint64_t addr_to_dma_page_maddr(struct domain *domain, daddr_t addr,
         if ( --level == target )
         {
             if ( !target )
-                pte_maddr = pte->val & PADDR_MASK;
+                pte_maddr = mfn_to_maddr(pte->mfn);
             break;
         }
 
@@ -469,9 +468,9 @@ static paddr_t domain_pgd_maddr(struct domain *d, paddr_t pgd_maddr,
           agaw != level_to_agaw(nr_pt_levels);
           agaw-- )
     {
-        const struct dma_pte *p = map_vtd_domain_page(pgd_maddr);
+        const union dma_pte *p = map_vtd_domain_page(pgd_maddr);
 
-        pgd_maddr = dma_pte_addr(*p);
+        pgd_maddr = mfn_to_maddr(p->mfn);
         unmap_vtd_domain_page(p);
         if ( !pgd_maddr )
             return 0;
@@ -783,13 +782,12 @@ static void queue_free_pt(struct domain_iommu *hd, mfn_t mfn, unsigned int level
 {
     if ( level > 1 )
     {
-        struct dma_pte *pt = map_domain_page(mfn);
+        union dma_pte *pt = map_domain_page(mfn);
         unsigned int i;
 
         for ( i = 0; i < PTE_NUM; ++i )
-            if ( dma_pte_present(pt[i]) && !dma_pte_superpage(pt[i]) )
-                queue_free_pt(hd, maddr_to_mfn(dma_pte_addr(pt[i])),
-                              level - 1);
+            if ( dma_pte_present(pt[i]) && !pt[i].sp )
+                queue_free_pt(hd, pt[i].mfn, level - 1);
 
         unmap_domain_page(pt);
     }
@@ -2074,7 +2072,7 @@ static int __must_check cf_check intel_iommu_map_page(
     unsigned int *flush_flags)
 {
     struct domain_iommu *hd = dom_iommu(d);
-    struct dma_pte *page, *pte, old, new = {};
+    union dma_pte *page, *pte, old, new = {};
     u64 pg_maddr;
     unsigned int level = (IOMMUF_order(flags) / LEVEL_STRIDE) + 1;
     int rc = 0;
@@ -2112,22 +2110,18 @@ static int __must_check cf_check intel_iommu_map_page(
         return -ENOMEM;
     }
 
-    page = (struct dma_pte *)map_vtd_domain_page(pg_maddr);
+    page = (union dma_pte *)map_vtd_domain_page(pg_maddr);
     pte = &page[address_level_offset(dfn_to_daddr(dfn), level)];
     old = *pte;
 
-    dma_set_pte_addr(new, mfn_to_maddr(mfn));
-    dma_set_pte_prot(new,
-                     ((flags & IOMMUF_readable) ? DMA_PTE_READ  : 0) |
-                     ((flags & IOMMUF_writable) ? DMA_PTE_WRITE : 0));
-    if ( IOMMUF_order(flags) )
-        dma_set_pte_superpage(new);
-
+    new.mfn = mfn;
+    new.r = flags & IOMMUF_readable;
+    new.w = flags & IOMMUF_writable;
+    new.sp = IOMMUF_order(flags) > 0;
     /* Set the SNP on leaf page table if Snoop Control available */
-    if ( iommu_snoop )
-        dma_set_pte_snp(new);
+    new.snp = iommu_snoop;
 
-    if ( !((old.val ^ new.val) & ~DMA_PTE_CONTIG_MASK) )
+    if ( !((old.raw ^ new.raw) & ~DMA_PTE_CONTIG_MASK) )
     {
         spin_unlock(&hd->arch.mapping_lock);
         unmap_vtd_domain_page(page);
@@ -2135,7 +2129,7 @@ static int __must_check cf_check intel_iommu_map_page(
     }
 
     *pte = new;
-    iommu_sync_cache(pte, sizeof(struct dma_pte));
+    iommu_sync_cache(pte, sizeof(union dma_pte));
 
     /*
      * While the (ab)use of PTE_kind_table here allows to save some work in
@@ -2144,7 +2138,7 @@ static int __must_check cf_check intel_iommu_map_page(
      * based laptop.  This also has the intended effect of terminating the
      * loop when super pages aren't supported anymore at the next level.
      */
-    while ( pt_update_contig_markers(&page->val,
+    while ( pt_update_contig_markers(&page->raw,
                                      address_level_offset(dfn_to_daddr(dfn), level),
                                      level,
                                      (hd->platform_ops->page_sizes &
@@ -2155,8 +2149,8 @@ static int __must_check cf_check intel_iommu_map_page(
 
         unmap_vtd_domain_page(page);
 
-        new.val &= ~(LEVEL_MASK << level_to_offset_bits(level));
-        dma_set_pte_superpage(new);
+        new.raw &= ~(LEVEL_MASK << level_to_offset_bits(level));
+        new.sp = true;
 
         pg_maddr = addr_to_dma_page_maddr(d, dfn_to_daddr(dfn), ++level,
                                           flush_flags, false);
@@ -2180,9 +2174,8 @@ static int __must_check cf_check intel_iommu_map_page(
     {
         *flush_flags |= IOMMU_FLUSHF_modified;
 
-        if ( IOMMUF_order(flags) && !dma_pte_superpage(old) )
-            queue_free_pt(hd, maddr_to_mfn(dma_pte_addr(old)),
-                          IOMMUF_order(flags) / LEVEL_STRIDE);
+        if ( IOMMUF_order(flags) && !old.sp )
+            queue_free_pt(hd, old.mfn, IOMMUF_order(flags) / LEVEL_STRIDE);
     }
 
     return rc;
@@ -2193,7 +2186,7 @@ static int __must_check cf_check intel_iommu_unmap_page(
 {
     struct domain_iommu *hd = dom_iommu(d);
     daddr_t addr = dfn_to_daddr(dfn);
-    struct dma_pte *page = NULL, *pte = NULL, old;
+    union dma_pte *page = NULL, *pte = NULL, old;
     uint64_t pg_maddr;
     unsigned int level = (order / LEVEL_STRIDE) + 1;
 
@@ -2231,10 +2224,10 @@ static int __must_check cf_check intel_iommu_unmap_page(
     }
 
     old = *pte;
-    dma_clear_pte(*pte);
+    pte->raw = 0;
     iommu_sync_cache(pte, sizeof(*pte));
 
-    while ( pt_update_contig_markers(&page->val,
+    while ( pt_update_contig_markers(&page->raw,
                                      address_level_offset(addr, level),
                                      level, PTE_kind_null) &&
             ++level < min_pt_levels )
@@ -2248,7 +2241,7 @@ static int __must_check cf_check intel_iommu_unmap_page(
 
         page = map_vtd_domain_page(pg_maddr);
         pte = &page[address_level_offset(addr, level)];
-        dma_clear_pte(*pte);
+        pte->raw = 0;
         iommu_sync_cache(pte, sizeof(*pte));
 
         *flush_flags |= IOMMU_FLUSHF_all;
@@ -2262,9 +2255,8 @@ static int __must_check cf_check intel_iommu_unmap_page(
 
     *flush_flags |= IOMMU_FLUSHF_modified;
 
-    if ( order && !dma_pte_superpage(old) )
-        queue_free_pt(hd, maddr_to_mfn(dma_pte_addr(old)),
-                      order / LEVEL_STRIDE);
+    if ( order && !old.sp )
+        queue_free_pt(hd, old.mfn, order / LEVEL_STRIDE);
 
     return 0;
 }
@@ -3055,9 +3047,9 @@ static void cf_check vtd_resume(void)
 static void vtd_dump_page_table_level(paddr_t pt_maddr, int level, paddr_t gpa,
                                       int indent)
 {
-    paddr_t address;
+    daddr_t address;
     int i;
-    struct dma_pte *pt_vaddr, *pte;
+    union dma_pte *pt_vaddr, *pte;
     int next_level;
 
     if ( level < 1 )
@@ -3076,16 +3068,16 @@ static void vtd_dump_page_table_level(paddr_t pt_maddr, int level, paddr_t gpa,
             continue;
 
         address = gpa + offset_level_address(i, level);
-        if ( next_level && !dma_pte_superpage(*pte) )
-            vtd_dump_page_table_level(dma_pte_addr(*pte), next_level,
+        if ( next_level && !pte->sp )
+            vtd_dump_page_table_level(mfn_to_maddr(pte->mfn), next_level,
                                       address, indent + 1);
         else
             printk("%*sdfn: %08lx mfn: %08lx %c%c\n",
                    indent, "",
                    (unsigned long)(address >> PAGE_SHIFT_4K),
-                   (unsigned long)(dma_pte_addr(*pte) >> PAGE_SHIFT_4K),
-                   dma_pte_read(*pte) ? 'r' : '-',
-                   dma_pte_write(*pte) ? 'w' : '-');
+                   (unsigned long)(pte->mfn),
+                   pte->r ? 'r' : '-',
+                   pte->w ? 'w' : '-');
     }
 
     unmap_vtd_domain_page(pt_vaddr);
@@ -3101,7 +3093,7 @@ static void cf_check vtd_dump_page_tables(struct domain *d)
                               agaw_to_level(hd->arch.vtd.agaw), 0, 0);
 }
 
-static int fill_qpt(struct dma_pte *this, unsigned int level,
+static int fill_qpt(union dma_pte *this, unsigned int level,
                     struct page_info *pgs[6])
 {
     struct domain_iommu *hd = dom_iommu(dom_io);
@@ -3110,7 +3102,7 @@ static int fill_qpt(struct dma_pte *this, unsigned int level,
 
     for ( i = 0; !rc && i < PTE_NUM; ++i )
     {
-        struct dma_pte *pte = &this[i], *next;
+        union dma_pte *pte = &this[i], *next;
 
         if ( !dma_pte_present(*pte) )
         {
@@ -3136,13 +3128,13 @@ static int fill_qpt(struct dma_pte *this, unsigned int level,
                 }
             }
 
-            dma_set_pte_addr(*pte, page_to_maddr(pgs[level]));
-            dma_set_pte_readable(*pte);
-            dma_set_pte_writable(*pte);
+            pte->mfn = page_to_mfn(pgs[level]);
+            pte->r = true;
+            pte->w = true;
         }
-        else if ( level && !dma_pte_superpage(*pte) )
+        else if ( level && !pte->sp )
         {
-            next = map_vtd_domain_page(dma_pte_addr(*pte));
+            next = map_vtd_domain_page(mfn_to_maddr(pte->mfn));
             rc = fill_qpt(next, level - 1, pgs);
             unmap_vtd_domain_page(next);
         }
@@ -3212,7 +3204,7 @@ static int cf_check intel_iommu_quarantine_init(struct pci_dev *pdev,
 
     if ( !rc && scratch_page )
     {
-        struct dma_pte *root;
+        union dma_pte *root;
         struct page_info *pgs[6] = {};
 
         root = map_vtd_domain_page(pdev->arch.vtd.pgd_maddr);
diff --git a/xen/drivers/passthrough/vtd/iommu.h b/xen/drivers/passthrough/vtd/iommu.h
index ccb00889d7..7a4534b7fd 100644
--- a/xen/drivers/passthrough/vtd/iommu.h
+++ b/xen/drivers/passthrough/vtd/iommu.h
@@ -258,31 +258,29 @@ struct context_entry {
  * 62: reserved
  * 63: available
  */
-struct dma_pte {
-    u64 val;
+union dma_pte {
+    uint64_t raw;
+    struct {
+        bool r:1;
+        bool w:1;
+        bool :1; /* Ignored */
+        unsigned int emt:3;
+        bool ipat:1;
+        bool sp:1;
+        bool a:1;
+        bool d:1;
+        bool :1; /* Ignored */
+        bool snp:1;
+        unsigned long mfn:40;
+        unsigned int pt_contig_mask:4; /* Available */
+        unsigned int :6;               /* Available */
+        bool :1;                       /* Reserved */
+        bool :1;                       /* Available */
+    };
 };
-#define DMA_PTE_READ (1)
-#define DMA_PTE_WRITE (2)
-#define DMA_PTE_PROT (DMA_PTE_READ | DMA_PTE_WRITE)
-#define DMA_PTE_SP   (1 << 7)
-#define DMA_PTE_SNP  (1 << 11)
+
 #define DMA_PTE_CONTIG_MASK  (0xfULL << PADDR_BITS)
-#define dma_clear_pte(p)    do {(p).val = 0;} while(0)
-#define dma_set_pte_readable(p) do {(p).val |= DMA_PTE_READ;} while(0)
-#define dma_set_pte_writable(p) do {(p).val |= DMA_PTE_WRITE;} while(0)
-#define dma_set_pte_superpage(p) do {(p).val |= DMA_PTE_SP;} while(0)
-#define dma_set_pte_snp(p)  do {(p).val |= DMA_PTE_SNP;} while(0)
-#define dma_set_pte_prot(p, prot) do { \
-        (p).val = ((p).val & ~DMA_PTE_PROT) | ((prot) & DMA_PTE_PROT); \
-    } while (0)
-#define dma_pte_prot(p) ((p).val & DMA_PTE_PROT)
-#define dma_pte_read(p) (dma_pte_prot(p) & DMA_PTE_READ)
-#define dma_pte_write(p) (dma_pte_prot(p) & DMA_PTE_WRITE)
-#define dma_pte_addr(p) ((p).val & PADDR_MASK & PAGE_MASK_4K)
-#define dma_set_pte_addr(p, addr) do {\
-            (p).val |= ((addr) & PADDR_MASK & PAGE_MASK_4K); } while (0)
-#define dma_pte_present(p) (((p).val & DMA_PTE_PROT) != 0)
-#define dma_pte_superpage(p) (((p).val & DMA_PTE_SP) != 0)
+#define dma_pte_present(p) ((p).r || (p).w)
 
 /* interrupt remap entry */
 struct iremap_entry {
diff --git a/xen/drivers/passthrough/vtd/utils.c b/xen/drivers/passthrough/vtd/utils.c
index 7c4d032f4f..ac26a1f52d 100644
--- a/xen/drivers/passthrough/vtd/utils.c
+++ b/xen/drivers/passthrough/vtd/utils.c
@@ -91,8 +91,8 @@ void print_vtd_entries(struct vtd_iommu *iommu, int bus, int devfn, u64 gmfn)
 {
     struct context_entry *ctxt_entry;
     struct root_entry *root_entry;
-    struct dma_pte pte;
-    u64 *l, val;
+    union dma_pte pte, *l;
+    u64 val;
     u32 l_index, level;
 
     printk("print_vtd_entries: iommu #%u dev %pp gmfn %"PRI_gfn"\n",
@@ -142,15 +142,15 @@ void print_vtd_entries(struct vtd_iommu *iommu, int bus, int devfn, u64 gmfn)
     {
         l = map_vtd_domain_page(val);
         l_index = get_level_index(gmfn, level);
-        pte.val = l[l_index];
+        pte = l[l_index];
         unmap_vtd_domain_page(l);
-        printk("    l%u[%03x] = %"PRIx64" %c%c\n", level, l_index, pte.val,
-               dma_pte_read(pte) ? 'r' : '-',
-               dma_pte_write(pte) ? 'w' : '-');
+        printk("    l%u[%03x] = %"PRIx64" %c%c\n", level, l_index, pte.raw,
+               pte.r ? 'r' : '-',
+               pte.w ? 'w' : '-');
 
-        if ( !dma_pte_present(pte) || dma_pte_superpage(pte) )
+        if ( !dma_pte_present(pte) || pte.sp )
             break;
-        val = dma_pte_addr(pte);
+        val = mfn_to_maddr(pte.mfn);
     } while ( --level );
 }
 
-- 
2.52.0



--
Teddy Astie | Vates XCP-ng Developer

XCP-ng & Xen Orchestra - Vates solutions

web: https://vates.tech



From xen-devel-bounces@lists.xenproject.org Fri Apr 10 10:09:31 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Fri, 10 Apr 2026 10:09:31 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1278637.1563401 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wB8np-0006gh-LI; Fri, 10 Apr 2026 10:09:29 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1278637.1563401; Fri, 10 Apr 2026 10:09: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 1wB8np-0006ga-IQ; Fri, 10 Apr 2026 10:09:29 +0000
Received: by outflank-mailman (input) for mailman id 1278637;
 Fri, 10 Apr 2026 10:09:28 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <bounce-md_30504962.69d8cc55.v1-57e3b21e68b746dea0983682dfb4ce71@bounce.vates.tech>)
 id 1wB8no-0006gM-1d
 for xen-devel@lists.xenproject.org; Fri, 10 Apr 2026 10:09:28 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wB8nn-00CX8f-CM
 for xen-devel@lists.xenproject.org; Fri, 10 Apr 2026 12:09:27 +0200
Received: from [10.42.69.6] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1) (envelope-from
 <bounce-md_30504962.69d8cc55.v1-57e3b21e68b746dea0983682dfb4ce71@bounce.vates.tech>)
 id 69d8cc4a-5cb7-0a2a0a5109dd-0a2a4506d2aa-12
 for <xen-devel@lists.xenproject.org>; Fri, 10 Apr 2026 12:09:27 +0200
Received: from [198.2.187.1] (helo=mail187-1.suw11.mandrillapp.com)
 by tlsNG-16d1c6.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.0)
 (envelope-from
 <bounce-md_30504962.69d8cc55.v1-57e3b21e68b746dea0983682dfb4ce71@bounce.vates.tech>)
 id 69d8cc56-0df0-0a2a45060019-c602bb014028-3
 for <xen-devel@lists.xenproject.org>; Fri, 10 Apr 2026 12:09:27 +0200
Received: from pmta09.mandrill.prod.suw01.rsglab.com (localhost [127.0.0.1])
 by mail187-1.suw11.mandrillapp.com (Mailchimp) with ESMTP id 4fsXb93mt8zBsTy7b
 for <xen-devel@lists.xenproject.org>; Fri, 10 Apr 2026 10:09:25 +0000 (GMT)
Received: from [37.26.189.201] by mandrillapp.com id
 57e3b21e68b746dea0983682dfb4ce71; Fri, 10 Apr 2026 10:09: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=mte1 header.d=mandrillapp.com header.i="@mandrillapp.com" header.h="From:Subject:To:Cc:Message-Id:Feedback-ID:Date:MIME-Version:Content-Type:Content-Transfer-Encoding"; dkim=pass header.s=mte1 header.d=vates.tech header.i="teddy.astie@vates.tech" header.h="From:Subject:To:Cc:Message-Id:Feedback-ID:Date:MIME-Version:Content-Type:Content-Transfer-Encoding"
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=mandrillapp.com;
	s=mte1; t=1775815765; x=1776085765;
	bh=kX9OrGYxdeKETyoInb6c8nVi60+Bkczuz40aX8nsNxw=;
	h=From:Subject:To:Cc:Message-Id:Feedback-ID:Date:MIME-Version:
	 Content-Type:Content-Transfer-Encoding:CC:Date:Subject:From;
	b=jW/774AQlEnpr/zmbDT/FiHmtZOCphtfXDEtEgA2+cLux61InUw2kX8oWHfCEtymA
	 Zl6eu1IKZzzXMJwzwcnJ1EN1gkbHtG3a/QY+fWetKivc+uX3NxMdO02377gaXV0DzQ
	 Z0HV4Id84mZNWpFiCj4ydJtEttV8nhM6F8YEd6VujttP+8Hkp3H0XPwqIi+t/QHgOd
	 I45NGrf/ghDPyJvTBaRh+w74o7Gka0Ml9fDYX+rXQhIlxOQeBUXPLtUG0Q9xAISu0F
	 hJgdRbazztS4NaELsLpkjL/kdf0egO7PGAbI5S/Kiyb4CrNmgKahQKIM9HisN2gi5M
	 MdtuQIb+djDVQ==
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=vates.tech; s=mte1;
	t=1775815765; x=1776076265; i=teddy.astie@vates.tech;
	bh=kX9OrGYxdeKETyoInb6c8nVi60+Bkczuz40aX8nsNxw=;
	h=From:Subject:To:Cc:Message-Id:Feedback-ID:Date:MIME-Version:
	 Content-Type:Content-Transfer-Encoding:CC:Date:Subject:From;
	b=YHzdK3/k8X0Ob3H5zG0tn51qchfOrsINDiwez1e08JrgcPXrCOaWbsvwblqhkHQ3z
	 a9uB8R20hiVn6OazO2pslsxPf/afluYNlJ+AS8feSbfOCEyQw780bZNiDTjAvydk+w
	 by733MWIrD9pv7OSR3Bcvz/UviB6A38nynLkaVEX6XoFocIBLMmdWU0whEzg3koOga
	 AsYBv0Idel79UOCwRTAjY7IfTacjEPyV5lj0PD6T0QVtgHIAhz1qqc6iPMXGEdzAAS
	 Q7yw6LzQqQo5ukQVVDFis8ncLwsz4VciA7jCVEEkAFiT0b6ZcK8aZ/SIxKsYx20k/w
	 d3SSZuxibFGfA==
From: "Teddy Astie" <teddy.astie@vates.tech>
Subject: =?utf-8?Q?[PATCH=201/2]=20vtd:=20Drop=20dead=20check=20for=20permissions=20in=20lookup=5Fpage?=
X-Mailer: git-send-email 2.52.0
X-Bm-Disclaimer: Yes
X-Bm-Milter-Handled: 4ffbd6c1-ee69-4e1b-aabd-f977039bd3e2
X-Bm-Transport-Timestamp: 1775815764539
To: xen-devel@lists.xenproject.org
Cc: "Teddy Astie" <teddy.astie@vates.tech>, "Jan Beulich" <jbeulich@suse.com>, "Andrew Cooper" <andrew.cooper3@citrix.com>, "=?utf-8?Q?Roger=20Pau=20Monn=C3=A9?=" <roger.pau@citrix.com>
Message-Id: <815edfd0db90859a4ce270d833d9d721ff66e31c.1775814143.git.teddy.astie@vates.tech>
X-Native-Encoded: 1
X-Report-Abuse: =?UTF-8?Q?Please=20forward=20a=20copy=20of=20this=20message,=20including=20all=20headers,=20to=20abuse@mandrill.com.=20You=20can=20also=20report=20abuse=20here:=20https://mandrillapp.com/contact/abuse=3Fid=3D30504962.57e3b21e68b746dea0983682dfb4ce71?=
X-Mandrill-User: md_30504962
Feedback-ID: 30504962:30504962.20260410:md
Date: Fri, 10 Apr 2026 10:09:25 +0000
MIME-Version: 1.0
Content-Type: text/plain; charset=utf-8
Content-Transfer-Encoding: 7bit
X-purgate-ID: tlsNG-16d1c6/1775815767-5EF353D8-3686972D/0/0
X-purgate-type: clean
X-purgate-size: 1381

`val` comes from `addr_to_dma_page_maddr()` which is a pagetable
paddr and doesn't leak the PTE flags in it.

Rather than returning entries without any permissions, assume they
are always r/w.

Fixes: dd93d54fef0b2 ("vtd: add lookup_page method to iommu_ops")
Signed-off-by: Teddy Astie <teddy.astie@vates.tech>
---
This doesn't really matter since the lookup ops are not used currently
(and not implemented on the AMD side), hence it's not a problem in practice.
Perhaps we want to drop the function for the time being, and reintroduce it
when it gets useful ?

 xen/drivers/passthrough/vtd/iommu.c | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/xen/drivers/passthrough/vtd/iommu.c b/xen/drivers/passthrough/vtd/iommu.c
index 3d6f787b3c..cf97469957 100644
--- a/xen/drivers/passthrough/vtd/iommu.c
+++ b/xen/drivers/passthrough/vtd/iommu.c
@@ -2293,8 +2293,8 @@ static int cf_check intel_iommu_lookup_page(
         return -ENOENT;
 
     *mfn = maddr_to_mfn(val);
-    *flags = val & DMA_PTE_READ ? IOMMUF_readable : 0;
-    *flags |= val & DMA_PTE_WRITE ? IOMMUF_writable : 0;
+    /* TODO: Populate flags from pte */
+    *flags = IOMMUF_readable | IOMMUF_writable;
 
     return 0;
 }
-- 
2.52.0



--
Teddy Astie | Vates XCP-ng Developer

XCP-ng & Xen Orchestra - Vates solutions

web: https://vates.tech



From xen-devel-bounces@lists.xenproject.org Fri Apr 10 10:11:11 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Fri, 10 Apr 2026 10:11:11 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1278656.1563418 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wB8pS-0000Fv-B3; Fri, 10 Apr 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 1278656.1563418; Fri, 10 Apr 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 1wB8pS-0000Fn-8C; Fri, 10 Apr 2026 10:11:10 +0000
Received: by outflank-mailman (input) for mailman id 1278656;
 Fri, 10 Apr 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 <andrew.cooper@citrix.com>) id 1wB8pQ-0000FZ-Ne
 for xen-devel@lists.xenproject.org; Fri, 10 Apr 2026 10:11:08 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wB8pQ-004CNP-3Q
 for xen-devel@lists.xenproject.org; Fri, 10 Apr 2026 12:11:08 +0200
Received: from [10.42.69.8] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <andrew.cooper@citrix.com>)
 id 69d8ccaa-2eae-0a2a0a5409dd-0a2a4508e45a-22
 for <xen-devel@lists.xenproject.org>; Fri, 10 Apr 2026 12:11:07 +0200
Received: from [52.101.46.0]
 (helo=CO1PR03CU002.outbound.protection.outlook.com)
 by tlsNG-c1860d.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.0)
 (envelope-from <andrew.cooper@citrix.com>)
 id 69d8ccba-fab6-0a2a45080019-34652e00ea1a-3
 for <xen-devel@lists.xenproject.org>; Fri, 10 Apr 2026 12:11:07 +0200
Received: from CH8PR03MB8275.namprd03.prod.outlook.com (2603:10b6:610:2b9::7)
 by CO1PR03MB7867.namprd03.prod.outlook.com (2603:10b6:303:26d::8)
 with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9769.17; Fri, 10 Apr
 2026 10:11:04 +0000
Received: from CH8PR03MB8275.namprd03.prod.outlook.com
 ([fe80::a70d:dc32:bba8:ce37]) by CH8PR03MB8275.namprd03.prod.outlook.com
 ([fe80::a70d:dc32:bba8:ce37%6]) with mapi id 15.20.9769.018; Fri, 10 Apr 2026
 10:11: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=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=yu5qYVQV8G2lMQbinL7tuNAwp8w+DwnYJCMXqkfKz9uDirJk8++RNl2x9ITRAgg/KLSvs0t6CdyCSFkqZps8Dnul7AUUpr3MUo80ps/XhxNcj604tGlnk7hAJLYmnIu92OhcQ9gE8d28ZiQo93DYvXgm+kom6pfueCCxmLWWXeBmxPl2hO+C1Wx3tme1WBOKZ6eSGeLNM64UVWTueuwSOFVTbWodchmYlp/Z4FtU72ztvW41hWQ9EEyQmIiZZnRIy0g39aCsJLSom1XSVAkhdWLHcylDsmDiK4cCXrNpQUhoal9F5R+cu2QJ+N/s4XetCcFUZ9ZoafWydhEs48mrnA==
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com;
 s=arcselector10001;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1;
 bh=80cr0fbEyf+3LSpJr7OWb7Mu6O2vhzsw5TXapkzEWb0=;
 b=HZ7xBDGYTUUTmrU6LE1ILHEjryDJz0cgzHTMB65MzYF/p2xtJfowcG943mceGJzJ8prlnIiU+tHyXwmfq2toFHGOIQ3cbZiq+x2JjsIVQyugFTbdGz8mg2ZWyQgTvGRq3B0CS08cxtkVS9+NOs3G4dGWFMaYf5YAH4tfmqumgdA9q9izwVW/LRzqIkPDLxKyas1DoUyBLf/K6u5+Z+PD+sttHtAZdhQ1TaQmjRaGZfRsS+4bDBq/3NU1ODIDP0u0OBwYMFZ/xj45Tni+YPMj9IqhZ7ICfTbw20nHy6XS2TrvGuF3pC+DrEXONPZDGyFM8yRPW7ozqciEdlp3Cd6qtA==
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=80cr0fbEyf+3LSpJr7OWb7Mu6O2vhzsw5TXapkzEWb0=;
 b=Ye82CaL9nThEQcoEBpPGK2F+7zrCFuaZiO2L8REDSVNcuF5FtirAxd/YgE3scECenrjns7+FgqtoudeawgFxXFRqStpj8biTPo8PCO2h0KvI59epLWlmfnkZpZcjLOAySQWTH7VtaQDkMUzYHwefov/ET9GZTD7gdA3D8HcL2T4=
Authentication-Results: dkim=none (message not signed)
 header.d=none;dmarc=none action=none header.from=citrix.com;
Message-ID: <973890d8-aabb-4abe-ac8e-f1e77f4e13dd@citrix.com>
Date: Fri, 10 Apr 2026 11:11:00 +0100
User-Agent: Mozilla Thunderbird
Cc: Andrew Cooper <andrew.cooper3@citrix.com>,
 xen-devel@lists.xenproject.org, Gyujeong Jin <wlsrbwjd7232@gmail.com>,
 Stefano Stabellini <sstabellini@kernel.org>, Julien Grall <julien@xen.org>,
 Bertrand Marquis <bertrand.marquis@arm.com>,
 Michal Orzel <michal.orzel@amd.com>
Subject: Re: [BUG] Potential double-free in Xen dt-overlay attach/remove error
 path
To: Nicola Vetrini <nicola.vetrini@bugseng.com>,
 Jan Beulich <jbeulich@suse.com>
References: <CANrF8CHA1XacwRzNcw3zt0goEV-7in_=vtEYhLxSjwaV62jrTw@mail.gmail.com>
 <c4961231-7882-49d8-8c68-c014ca0a5e4f@suse.com>
 <aaeff4b4915c28a6ac5a7abfa4ab7679@bugseng.com>
Content-Language: en-GB
From: Andrew Cooper <andrew.cooper3@citrix.com>
In-Reply-To: <aaeff4b4915c28a6ac5a7abfa4ab7679@bugseng.com>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
X-ClientProxiedBy: PR3P251CA0011.EURP251.PROD.OUTLOOK.COM
 (2603:10a6:102:b5::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_|CO1PR03MB7867:EE_
X-MS-Office365-Filtering-Correlation-Id: 1f5d11e7-ba96-47ee-38c5-08de96e9797b
X-MS-Exchange-SenderADCheck: 1
X-MS-Exchange-AntiSpam-Relay: 0
X-Microsoft-Antispam:
	BCL:0;ARA:13230040|1800799024|376014|366016|22082099003|56012099003|18002099003;
X-Microsoft-Antispam-Message-Info:
	A0yl/vyouYf1Y5kwFJXJiH6p0m8CfhhMM6PdkfooEkvg5m7QzxB/GIxJ/gvn+2mKICzOKU7nRAqDqyV5dXxTPn9BAYRnKsdBjZ9wMK4HCFM0vBHouFDK4VimSZk6aTjRkZiLXjMvkTmdg6JC6FfdVfUiZj+apCsVaAxI/ER3CxNPoK7Lg1DVou0eE7HlBZc2bW+u/UEPtEJ/eorAXybMb5FhhNcSzvQX/j8tPFrBYvPS112nNiq0tEnr8ZaPLXx7ENcEMasmZ1tp9Kcot2nPuHXDqjhXs26Lcm7oap2ARq4Yjn+oA9u2mjksgDzaSmwGurEBOMEgBPULmjHl6O8bkZ0KLHl+kdgP9o6NPo6Kv+0Agf1Wi4XqbKYTr9tdn2e30ibDjpsF1RzZbjnZ0M1S28r/TYJPXpex9HCQptaZCXPwtZdP+5FeBfd6yx3M5zNTkXVz63RjhtVMx1q5ghpgcpys20RGeilHqr0kRjRr9YixKtX5ZGNzd7Xuf4kJO6b2CTXkaFgSSyW1SfJltP73Rla4lIu8X7mMOdes57AEs8ygb/IGLzIZz+kd4UQmrcB6kSr+ODzOjiXH5FTRzTUKpjBoxP5yjUHVfP40uG5bcMlft7RO8GmcubiblXRnfjjuhoAvUooyc9/TlnwYDmis1zQhzvYxB2BKzRFql+ql5AuN6+7C5U6mqwKhCEq+Yf0ueni+7goWG1IE25puW0Q+GY/jmxtiaK6KQx3L03dKbAU=
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)(376014)(366016)(22082099003)(56012099003)(18002099003);DIR:OUT;SFP:1101;
X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1
X-MS-Exchange-AntiSpam-MessageData-0:
	=?utf-8?B?Zm9xNkl3eXJwTjc3VlVVcTlrS09TblhZSXBXUlR5VWhnNXR0SXB4NjZSUU9F?=
 =?utf-8?B?cUNCdVNKRkdxajNuRzQvUFBOSmJXL2tkTGpabVhWY0JDYmZhOVhXYUtXTnNs?=
 =?utf-8?B?VytvRnRBZGJvK3VUdW80UUJnaWJyY1pCdHVHOHV4Yzl0R0NSSWoxc2VOdWNV?=
 =?utf-8?B?QW43STFCMGROa1FaUXp3QnI1YWlWaGxyOWtQUDl5bllhMCtaZjZyRytMejl6?=
 =?utf-8?B?OHpuMXJTaUJxcDNZUkIyTXhYb2U5VlFsS1RuWUMxYVRkK2NwRmpzdVpHZml2?=
 =?utf-8?B?bjBDVXBHUVBiWGJ6UGJtbmU3R0hkS0pkZkxwQmxTRXc0cXg1Rm5Ib0FoejUz?=
 =?utf-8?B?U2NPMVZieUlmb3RZZVRpVmRTU05DVFZ0OS9ZTEJmemp2K0ZPOGdVaDVVdzZr?=
 =?utf-8?B?RDRnN2FxdjNsbWFwMnc4a0M1VitDcGloYzZYQmU5L25aY2djaUxWeTk5MHlS?=
 =?utf-8?B?MTAzeDRweWE1cmM4OEZnb0FSTUpDNVVSek1oSkptWEZjSGxCNDgybVRWTVJk?=
 =?utf-8?B?YTRXQ2pKNCtQUURTaTR5NzRMWFoxY0djbmZnTUJ1SHZDckJnTzlRbE1CZmlj?=
 =?utf-8?B?QTFBdWQ3bnpHZUMzeHdXVHlzRzJxY3ZmaXRnOWl0cm5xRUY0RGFhQ0Z3cXNt?=
 =?utf-8?B?VzNNSElqamMvN0o5d003cnc4aldZcTdBenIxLzhmOWRhM3M2cXcyM1Bpb001?=
 =?utf-8?B?OTRCMjFMVEFuNGVVcVY1Lzl0WnhRVU92SlYxRUR6TmxOOWlvRnNLcVYrZWYr?=
 =?utf-8?B?cG9uSGhaeThUN2lvZ0F1L0RqVmszNXVGS0doV2hzemVLVXM3bjRCYW5Jc0Z1?=
 =?utf-8?B?aWJBdkFNYlRRRXBLNlNTdVBrVitVMEltNUFyVUNNa21vbjgzclJ2ZUk0VnRI?=
 =?utf-8?B?T2VsYmkveUFZN0gwTk4zcTJIWFJqN1ZheXZZVjdFVGxmTGZiZUhLNTZ0ZzMv?=
 =?utf-8?B?TzhxZk1CSEp2cWdyeWpTRVg3b2ppc2ZzZk9LaXVjclZTY0N0NkNxU3h6RW9m?=
 =?utf-8?B?WnJoa1lqL0dObCtXNzdneTg0L2hNYnNsQjRuMXNxVlVQS3djL0E1WU56c1Zk?=
 =?utf-8?B?YUd3R0oyR0JKWllGT0NObGl6RTlLRmZLTndDcysxMUE2YUlaM0lKRW9HSkZL?=
 =?utf-8?B?aGpOdTE1MVNKSlFUNVlpRmNaLzhmVVlCS2J2VWpjMkxCZmJEMVZTVnljTFow?=
 =?utf-8?B?WW01RVB1Qjd6VnROVTRJL081ZkpINHNoeHpaWUlJM20vZ1VxVzdYWG53V2tn?=
 =?utf-8?B?M2ZKNUJqZVVLTmNERUZBZ2dSN3ZHRGxBNWhWTUZ5Uzk5N0JMdnhhdVVFN3lR?=
 =?utf-8?B?b3FmaVZQeVI1ZTA1N3AxeTRNS0pjTEhVVmFvMExwZXIya3g4WEdWT2NLeXVW?=
 =?utf-8?B?d2VzRHhLVnBYN2JwQnBheE1HdzY3UnBHTXNMbENTeE85QzlBNHAvVWdQbW9C?=
 =?utf-8?B?OTlpN1JsOC9VZHZCSmlXTHh2NTc1VkdyZGl0S1ZYd1RCbjB6MXFvVit5d2FM?=
 =?utf-8?B?ZEFCNXkwTHNkQ3RXeFVORHg2ZTRJQmtxWXBzU3I2NEozN2drZ0M3QVRrNjdy?=
 =?utf-8?B?a05UZXBqNFY5YStXR0REVlZoWkovUE9GbUpJZFN1anNRNURXVzBRakhMd1pN?=
 =?utf-8?B?KzhqdnNzQ0dNRlpoVXdGMG9ZM0JzSzlvWEU3a1kwVWhSVGJwdXBHL3dZbUh1?=
 =?utf-8?B?QVpBalVvN0YrdWxsZ0J6bUQzVHBGUVpkSG51VFVsRUlhWW1SZjJrdGlQTEhB?=
 =?utf-8?B?SGVoNS9WbWtzR2xYRTJaMnhwK211aU9VcmxZZkJqdmZhZ2E0MCt0blVON01N?=
 =?utf-8?B?cmdhQnRPSytPcjdLTDY1NlhnTW9MclNXVUhEYTFhWWdZMHVmTkZ0aTZQMDIy?=
 =?utf-8?B?ZEI2T1EwTDl3eGlSWXlPRFdXREdKRk43UXdOcTBock44ZzU4UmE1QzlKWTZx?=
 =?utf-8?B?T2k2RGNYZ21qZ3UzNmNPNk9XZ2Jpb0JBNFRFYTBSQVovQUIycWxVcTB3aC9N?=
 =?utf-8?B?R215MGJXM2pVMVVRYllzQzhnT0JhQ0xrVWJ5L0xvWW95eVoxbnpSWndIK2tN?=
 =?utf-8?B?U2o3bmdFd24zYjJvYzhyY256d2hxRmdxRUZtbG8zaGlWbTJac2g4eVIvc1R5?=
 =?utf-8?B?SHFDOVBqRlZqcjVLQjRXZW1HaU5pOG1kNkJwYXVIY0p0OW1sTU5YbXY1Q3Zq?=
 =?utf-8?B?K0tjZmg5M2NiUkh4NFhudjcvZkFnemplUUxlS0FlVlA2cTljUkluOHBwaVpj?=
 =?utf-8?B?Q1lwSnlUSkxLME4wVmxjYjk5VkhsL0VCeFIybGlSbDVWbGFKWHhZUVRCQy80?=
 =?utf-8?B?N0F6dlRYQ0ZaWlpCendyQ2JLdWNQZDVsUFM0UmxVMnh2eTJ6NVFyK3pkZ2Z6?=
 =?utf-8?Q?6aTmRSUtTN34WVpA=3D?=
X-OriginatorOrg: citrix.com
X-MS-Exchange-CrossTenant-Network-Message-Id: 1f5d11e7-ba96-47ee-38c5-08de96e9797b
X-MS-Exchange-CrossTenant-AuthSource: CH8PR03MB8275.namprd03.prod.outlook.com
X-MS-Exchange-CrossTenant-AuthAs: Internal
X-MS-Exchange-CrossTenant-OriginalArrivalTime: 10 Apr 2026 10:11:04.3711
 (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: q2ptd4Gg020yvEzusBqYm1GK7isHljjuc5gRvsl5mEWzi2qFoTRIYw3Jj9Yr2nvjNL7tImtnxzLOzgVN8apuWcgFa1yiHse+hSfcuyMuPRM=
X-MS-Exchange-Transport-CrossTenantHeadersStamped: CO1PR03MB7867
X-purgate-ID: tlsNG-c1860d/1775815867-74360497-9C00439F/0/0
X-purgate-type: clean
X-purgate-size: 3208

On 10/04/2026 11:06 am, Nicola Vetrini wrote:
> On 2026-04-10 08:31, Jan Beulich wrote:
>> On 09.04.2026 23:28, Gyujeong Jin wrote:
>>> Hello Team, I was advised to report this issue in this way because
>>> dt-overlay is currently experimental and not security supported.
>>>
>>> I would like to report a potential memory safety issue in Xen
>>> related to
>>> the Device Tree overlay handling logic.
>>> ------------------------------
>>> Problem Description
>>>
>>> A double-free / use-after-free condition may occur in the dt-overlay
>>> handling path when an overlay attachment fails and the same overlay is
>>> later removed.
>>>
>>> The issue arises because rangeset objects are freed on the failure
>>> path of
>>> handle_attach_overlay_nodes(), but the corresponding pointers are not
>>> cleared. Subsequently, handle_remove_overlay_nodes() may operate on
>>> these
>>> stale pointers, leading to a second free.
>>> Affected Component
>>>
>>>    - Xen ARM
>>>    - Device Tree overlay subsystem
>>>    - File: xen/common/device-tree/dt-overlay.c
>>>
>>> Relevant functions:
>>>
>>>    - handle_attach_overlay_nodes()
>>>    - handle_remove_overlay_nodes()
>>>
>>> Impact
>>>
>>> This issue may lead to:
>>>
>>>    - Double-free of rangeset structures
>>>    - Use-after-free when accessing stale pointers
>>>    - Potential hypervisor crash (DoS)
>>>    - Possible memory corruption depending on allocator behavior
>>>
>>> Given that this occurs in the hypervisor context, the impact could
>>> extend
>>> beyond a simple crash under certain conditions.
>>> Root Cause
>>>
>>> The issue originates from inconsistent memory management between the
>>> attach
>>> failure path and the remove path.
>>>
>>> In handle_attach_overlay_nodes(), the failure path frees rangeset
>>> objects:
>>>
>>> static long handle_attach_overlay_nodes(...)
>>> {
>>>     ...
>>>
>>>     if ( entry )
>>>     {
>>>         rangeset_destroy(entry->irq_ranges);
>>>         rangeset_destroy(entry->iomem_ranges);
>>>     }
>>>
>>>     return rc;
>>> }
>>>
>>> However, the corresponding pointers (entry->irq_ranges and
>>> entry->iomem_ranges) are not set to NULL afterward, leaving dangling
>>> pointers in the entry structure.
>>
>> Further to this, am I overlooking any check preventing an already
>> created
>> pair of rangesets to be replaced by new ones, leaking the original pair?
>>
>> And then there's a Misra issue as well: dt_overlay_domctl() has
>> unreachable
>> code. Anything other than XEN_DOMCTL_DT_OVERLAY_ATTACH is excluded at
>> the
>> top, so the "else" body near the bottom is unreachable. (This in turn
>> makes
>> me wonder: How come there's no "detach"?) Yet then, that's probably
>> pretty
>> meaningless, as there look to be other issues (Misra and general
>> robustness
>> ones) as well.
>>
>> Jan
>
> Is it by any chance enabled in *-allcode analyses? I don't see such
> reports for unreachable code on ARM64.
>

eclair-ARM64-allcode:
    ...
    EXTRA_XEN_CONFIG: |
        ...
        CONFIG_OVERLAY_DTB=y

Seems to be, yes.

~Andrew


From xen-devel-bounces@lists.xenproject.org Fri Apr 10 10:14:54 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Fri, 10 Apr 2026 10:14:54 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1278668.1563427 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wB8t0-0000qK-Pq; Fri, 10 Apr 2026 10:14:50 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1278668.1563427; Fri, 10 Apr 2026 10:14: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 1wB8t0-0000qD-N7; Fri, 10 Apr 2026 10:14:50 +0000
Received: by outflank-mailman (input) for mailman id 1278668;
 Fri, 10 Apr 2026 10:14:50 +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 1wB8t0-0000q7-1H
 for xen-devel@lists.xenproject.org; Fri, 10 Apr 2026 10:14:50 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wB8sz-004D7m-A3
 for xen-devel@lists.xenproject.org; Fri, 10 Apr 2026 12:14:49 +0200
Received: from [10.42.69.1] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <jgross@suse.com>)
 id 69d8cd8c-bab6-0a2a0a5309dd-0a2a4501cfc8-46
 for <xen-devel@lists.xenproject.org>; Fri, 10 Apr 2026 12:14:49 +0200
Received: from [209.85.208.48] (helo=mail-ed1-f48.google.com)
 by tlsNG-d62444.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.0)
 (envelope-from <jgross@suse.com>)
 id 69d8cd99-6fc9-0a2a45010019-d155d030b5a6-3
 for <xen-devel@lists.xenproject.org>; Fri, 10 Apr 2026 12:14:49 +0200
Received: by mail-ed1-f48.google.com with SMTP id
 4fb4d7f45d1cf-66e8cc747d8so2653607a12.1
 for <xen-devel@lists.xenproject.org>; Fri, 10 Apr 2026 03:14:49 -0700 (PDT)
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
 a640c23a62f3a-b9d6e7c7c81sm65293466b.43.2026.04.10.03.14.47
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Fri, 10 Apr 2026 03:14:48 -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=google header.d=suse.com header.i="@suse.com" header.h="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=1775816089; x=1776420889; darn=lists.xenproject.org;
        h=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;
        bh=cc3rf4dQXyDFYKT0EBEC0clHUIavPB0sqGRO72yqsEI=;
        b=SpkQ6H8AP6lGDHdK1Kjmrr2Ck2+A6W02ScvH7q1fDxq2cZKrlM+LfgPMAqIh4ZJfEF
         mBJB8OITefB97syOre7Fdp8r6DLUBINL72qscxi4HAc059FyWCmdIkbQk9CHaEZuRCE3
         O0zESbm9OmQgDDZeEKW827dr8Q/douuK7vx2XQs8T8Ybnjnr3GkUe+Fkn7yIP/mn3oOq
         govTBmMtY0L6GWZKqQq5HsaWT4klDgBQZuHfSRTbC8Z4mo6A0eBXMEgEH7UPegRrPbII
         8bRTgr2/dGKM+BOIGs3X+HXAJzW6BX+uRvcwxj1jBEaTI3zodVmSH/x+saXPGjgUIQio
         53sw==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20251104; t=1775816089; x=1776420889;
        h=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;
        bh=cc3rf4dQXyDFYKT0EBEC0clHUIavPB0sqGRO72yqsEI=;
        b=FrJuvGhE1lyAxcWmUecXm1nmLQURqmkNgE6okjtfkzitWh7x7t8Rf3KXOrzOLc7Epz
         l/JgogktSwYel6/sKXAQyt4rx2IoQVJsEaPRrcywF61ty+KtCm21ByxI7e9DItpeve83
         LqxuKlMND0CI++X/ypQnA/GrvJ6yNfPdBiRsYLa5KcGPodt3XQkgsYruvDnefiHbH0H2
         EJU24MIzOt4w/XbRPFVMMoiruYKoVp7dCa3vBg2AwP9FOyUAl3FERolRGMbPonmJ2Bec
         wVBoy1jaDuywHf1bz5/ZFCC2GXIa+VOVHFwJW+BRKp1H4bkA2Tu1tkrE2/q4Zd93qQRk
         2GgQ==
X-Forwarded-Encrypted: i=1; AJvYcCWZZmy3fbofAHHmUWz1k+Z/dkfsNMfMmomTLiIqd2z6vC6ovzjVdRbbdHZ2YrRtQqAqTgr/f1ujgXE=@lists.xenproject.org
X-Gm-Message-State: AOJu0YxhDGt6fcNcxqnELpZflM/mQfrxDGcICThs863W6ZilyBBlTyRn
	NWBsDm0gSnC6GQnhv2z58jUXSLskXNkIP1zYTkhnnNH9MzpvhayztHNHVJGZ86kBlXWeuaDIzEf
	cLHGenlE=
X-Gm-Gg: AeBDieskbxWrEHaf4W9b004cpNQKCqiv5fcPdvwcGs4B/2ordpqQqI64fLcDdnHfrBn
	g8B7RZFr3Nqd93gAhz3yKWAgFoBgmbAskkKocvihxOVZ9+6TSENE35+Xu2pPf0X0bZaLv/8n7jC
	/7BP6nX430s0hLjVj7pI0y+R3jC24yg3PpbB4vVabEQ8lrSxhc4aAvyN4JuC5zMV4ZmpDUe+Es2
	X2YVsN6+W4AaFMLOJhbrgxAapTnZQpnoORIpJ+CnIbNmSfn9ZQ4+0dpwCXjCGsgAs0VtTtRpPC1
	vQh9fyavvrmQVsK9CW+AtZY5OWPWO0pitmQkDR4zaby2/zrmkJXXkhHHh+MXvS2hxKCpu3WTxth
	hQHVPVkgFz7CRVyTPTd2aSk8XY/NvKoXOE60ObkBPNpbRA+pDtMvYNZ6uAc7IiNMbJJ/d9sfzxX
	d3GSuHG6YpuQqhDV6a1h++eBN7edqauZK0a4y6UnmEFdi14ArkgUDQpTEaWm4bJ4WL3glp4bACw
	pk1so8NWnxuKsd+rpAXXbFwssjItYJu6GdZnymhrBohz9jGNHTCrA==
X-Received: by 2002:a17:906:5189:20b0:b8f:b32e:e196 with SMTP id a640c23a62f3a-b9d7279ad8amr98332266b.30.1775816088506;
        Fri, 10 Apr 2026 03:14:48 -0700 (PDT)
Message-ID: <775bc23d-7cd4-43b4-9e5f-0c70204b4262@suse.com>
Date: Fri, 10 Apr 2026 12:14:47 +0200
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH v2] xen/sched: rtds: re-arm repl_timer after timer
 re-initialization
To: Oleksii Moisieiev <Oleksii_Moisieiev@epam.com>,
 "xen-devel@lists.xenproject.org" <xen-devel@lists.xenproject.org>
Cc: Dario Faggioli <dfaggioli@suse.com>, George Dunlap <gwd@xenproject.org>,
 Meng Xu <mengxu@cis.upenn.edu>
References: <548ea03cc3c3287b1f5dcd101b3c2990ebc08089.1775208527.git.oleksii_moisieiev@epam.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: <548ea03cc3c3287b1f5dcd101b3c2990ebc08089.1775208527.git.oleksii_moisieiev@epam.com>
Content-Type: multipart/signed; micalg=pgp-sha256;
 protocol="application/pgp-signature";
 boundary="------------RrhnLUpSH1N9zvQM1H9fBG0T"
X-purgate-ID: tlsNG-d62444/1775816089-14EE3185-22168AB3/0/0
X-purgate-type: clean
X-purgate-size: 6770

This is an OpenPGP/MIME signed message (RFC 4880 and 3156)
--------------RrhnLUpSH1N9zvQM1H9fBG0T
Content-Type: multipart/mixed; boundary="------------QKx1hifjZ1Zc54zu9gycsAwb";
 protected-headers="v1"
From: =?UTF-8?B?SsO8cmdlbiBHcm/Dnw==?= <jgross@suse.com>
To: Oleksii Moisieiev <Oleksii_Moisieiev@epam.com>,
 "xen-devel@lists.xenproject.org" <xen-devel@lists.xenproject.org>
Cc: Dario Faggioli <dfaggioli@suse.com>, George Dunlap <gwd@xenproject.org>,
 Meng Xu <mengxu@cis.upenn.edu>
Message-ID: <775bc23d-7cd4-43b4-9e5f-0c70204b4262@suse.com>
Subject: Re: [PATCH v2] xen/sched: rtds: re-arm repl_timer after timer
 re-initialization
References: <548ea03cc3c3287b1f5dcd101b3c2990ebc08089.1775208527.git.oleksii_moisieiev@epam.com>
In-Reply-To: <548ea03cc3c3287b1f5dcd101b3c2990ebc08089.1775208527.git.oleksii_moisieiev@epam.com>

--------------QKx1hifjZ1Zc54zu9gycsAwb
Content-Type: multipart/mixed; boundary="------------Vdy0cAsM9xS79eMChS80bSy7"

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

T24gMDMuMDQuMjYgMTE6MjksIE9sZWtzaWkgTW9pc2llaWV2IHdyb3RlOg0KPiBJbiBSVERT
LCByZW1vdmluZyB0aGUgbGFzdCBlbGlnaWJsZSBwQ1BVIGNhbiBraWxsIHJlcGxfdGltZXIu
DQo+IFdoZW4gYSBwQ1BVIGlzIGxhdGVyIHJlLWFkZGVkLCBydF9zd2l0Y2hfc2NoZWQoKSBy
ZWluaXRpYWxpemVzIHRoZQ0KPiB0aW1lciBvYmplY3QsIGJ1dCBwZW5kaW5nIGVudHJpZXMg
bWF5IGFscmVhZHkgZXhpc3QgaW4gcmVwbHEuDQoNCkRpZCB5b3UgZXhwZXJpZW5jZSB0aGlz
IGJlaGF2aW9yPw0KDQpJJ20gYXNraW5nIGJlY2F1c2UgSSBkb24ndCBzZWUgaG93IHRoaXMg
Y291bGQgaGFwcGVuLiBBIENQVSBjYW4ndCBiZQ0KcmVtb3ZlZCBmcm9tIGEgY3B1cG9vbCBh
cyBsb25nIGFzIHRoZXJlIGFyZSBkb21haW5zIGluIHRoYXQgY3B1cG9vbC4NClNvIGhvdyB3
b3VsZCByZXBscSBjb250YWluIGVudHJpZXMgYWZ0ZXIgdGhlIGxhc3QgQ1BVIG9mIHRoZSBj
cHVwb29sDQpoYXMgYmVlbiByZW1vdmVkPw0KDQpCdXQgbWF5YmUgSSdtIG1pc3Npbmcgc29t
ZXRoaW5nLg0KDQoNCkp1ZXJnZW4NCg==
--------------Vdy0cAsM9xS79eMChS80bSy7
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-----

--------------Vdy0cAsM9xS79eMChS80bSy7--

--------------QKx1hifjZ1Zc54zu9gycsAwb--

--------------RrhnLUpSH1N9zvQM1H9fBG0T
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/Ey8FAmnYzZcFAwAAAAAACgkQsN6d1ii/Ey/Y
Lgf8Dp3mcnIsvG9/pHE73rb8mePmmG7dj7iKEjaRc7Eg8RQmV5zw1GF0MfZmKhbI2tmFB9KPOlBn
SF3qbXsh/b/ioMGDNuOWyZRwn28Kri5dUg2QcKtPQri4mf03jt7aWkWmeSmJX0h967EuHGLOkxio
lLd9XETiyNVWUssvJv/zfoLt9bIi5c6cfK/JCun/EVleMJ7mvnXcVadId93I+4VWCg/HnEnqd3eV
z8d5ijTgfwxCyW8CIvXMNPJNeL3U0d3i2Fr+/9VKaAZjOuAF/T86OUH4SGP7Zic7noOGjsp5JnQu
xEwriJ4GpRHPZnzJIIu5DBWz84SqqZD/HxHCHheJXA==
=dAZM
-----END PGP SIGNATURE-----

--------------RrhnLUpSH1N9zvQM1H9fBG0T--


From xen-devel-bounces@lists.xenproject.org Fri Apr 10 10:25:09 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Fri, 10 Apr 2026 10:25:09 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1278684.1563453 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wB92p-0002kn-Qm; Fri, 10 Apr 2026 10:24:59 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1278684.1563453; Fri, 10 Apr 2026 10: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 1wB92p-0002kg-NO; Fri, 10 Apr 2026 10:24:59 +0000
Received: by outflank-mailman (input) for mailman id 1278684;
 Fri, 10 Apr 2026 10:24:58 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92) id 1wB92o-0002kV-3H
 for xen-devel@lists.xenproject.org; Fri, 10 Apr 2026 10:24:58 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wB92l-00C3lZ-9e
 for xen-devel@lists.xenproject.org; Fri, 10 Apr 2026 12:24:56 +0200
Received: from [10.42.69.7] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <oleksii.kurochko@gmail.com>)
 id 69d8cff8-2eae-0a2a0a5409dd-0a2a4507bc3a-2
 for <xen-devel@lists.xenproject.org>; Fri, 10 Apr 2026 12:24:56 +0200
Received: from [209.85.208.42] (helo=mail-ed1-f42.google.com)
 by tlsNG-ef75cf.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.0)
 (envelope-from <oleksii.kurochko@gmail.com>)
 id 69d8cff8-ba2d-0a2a45070019-d155d02ab92e-3
 for <xen-devel@lists.xenproject.org>; Fri, 10 Apr 2026 12:24:56 +0200
Received: by mail-ed1-f42.google.com with SMTP id
 4fb4d7f45d1cf-66bb7e098b1so1955185a12.3
 for <xen-devel@lists.xenproject.org>; Fri, 10 Apr 2026 03:24:56 -0700 (PDT)
Received: from [192.168.1.6] (user-109-243-69-121.play-internet.pl.
 [109.243.69.121]) by smtp.gmail.com with ESMTPSA id
 4fb4d7f45d1cf-670703f5b31sm467810a12.11.2026.04.10.03.24.54
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Fri, 10 Apr 2026 03:24:55 -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=20251104 header.d=gmail.com header.i="@gmail.com" header.h="Content-Transfer-Encoding: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=20251104; t=1775816696; x=1776421496; darn=lists.xenproject.org;
        h=content-transfer-encoding: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;
        bh=GWuwwGgF+Mk5wStqMS+vVyWcPiF3DIKXvNy746Pcy2Y=;
        b=mIZcXG4TpFeHh4p7muHbP7eUugzqKNgheDDa76C86vO1M7IRPmkE8q9UYd/MeWFz6W
         egE/xqTFhBRBQ49gO3gD9AMSLDXxE8SzOPqOCBprSWAKsjTkYryp1LuGA8dnHnGWCmBd
         IOgYTqNYNJ4vUiVDAXkxE8liM75V7qkzHrDNknBl4pZ6IRkI5gZdZYBWpVg0l1SZ8b5s
         PAy4IyTdE7JoqedTuO5IErz9QRjoSC9u8GL0Dcp7orGwuwUXKaDq+bA3qBER9NxGZLST
         0jVd9ghHG9MHfIAajetuyxFkKN6rp+S/Rxd9MrNo0rHKKZ52axBeEcbLkNIKrxP1AUe2
         PArA==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20251104; t=1775816696; x=1776421496;
        h=content-transfer-encoding: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;
        bh=GWuwwGgF+Mk5wStqMS+vVyWcPiF3DIKXvNy746Pcy2Y=;
        b=X/dsIF90E3YzrZpz6mIas+FgKEUKdxIRKLgCy7DYkM4ZkLcNBd9EfY0vfzBe2XNbJh
         MAPx3esfyf1KM9Q1ZTEbKAh89l+8VZ95/FRSWHodXShGlpfziU+LBu///RVFzj8mI/g2
         dvNIAWezE48tAoLOxAYbz8NT3vLmjLdgIEhc+199ZyJd3NbPaV1A9IY7vnaL3cgUZsC/
         S1BZCkdOfDWfetLrbEijGZe9kU5YTehTu1Z+2tgTUjodq4v1a6ekM3puJt0iqY19c+SV
         bkF/ad1pFwly7SDZsqs30bszDaa4VrTj6FoXktfeDkf2kThM+E6tWa/nQZwf1mbT2+ML
         xbyA==
X-Forwarded-Encrypted: i=1; AJvYcCWK2Hq31IvZKHmZZhbeolPRafawYdQJGTbdjo0XYE+iNe/H0hVLDfzPTeQuXudgE63M8tB4TFTdqng=@lists.xenproject.org
X-Gm-Message-State: AOJu0Yx3Wt2/pwZfK5fnrWp2S0evrjX2VzO2IcNKEUc8DRsQw9DNtgnr
	8ezp6GHkR5maH6veRfhgaYCf41E4CIW7et1ehtk105bjaXIv1RfhBE5o
X-Gm-Gg: AeBDievr0Hoe+7YDsKgiBA0Dp5qnxVZUy3PEAiAEH/LyEPAuKsWF7se1JEtZd0i8uSM
	GMgtNmI4z3rTzhAzT91U4r2T2yjJ8tm3kKOIZmXi+js+LBN2EfoK//xpHTSvqjNuzE/zp8qxlV8
	5iJ/Pk5KSDInKo8NwPCs5ABwaFitF7gx8sUOMytlIXaHYB/Rw5++fH+GZO19SiZs/mTJsHKqV52
	XRKu+3NdFx5evAw7AbLYg0ftXMvSJjEuLs+4fvzwKbhnnylARz/BCGrPz9IpVIz2WPDlHruwYIt
	EA94dc8Ui98uli5XiGZiir/zx24USC7oESUoPttbmoou7IrojX7RctD+3nA6ulFpMNhcWO8riEv
	iTbWF9h6524t6SAYJqE7V8YSff9zEUd8pcF3g1qX7ZHXSBoRRFxF3kk1rGOoArJklZLKQzSt+2r
	OgNpER4zlXpAgfoKcWzjVt0urz/m/o2rBWIAVj6dcb32bTq2ZFcEiE8CxFl7f2EMZ/xa+29h4JE
	Nc=
X-Received: by 2002:a05:6402:505c:b0:66b:b6e2:66e1 with SMTP id 4fb4d7f45d1cf-6707a47e6a3mr895460a12.18.1775816695928;
        Fri, 10 Apr 2026 03:24:55 -0700 (PDT)
Message-ID: <d66424c9-f156-4bd8-9547-46d181aa95f3@gmail.com>
Date: Fri, 10 Apr 2026 12:24:53 +0200
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH v1 05/27] xen/riscv: introduce guest riscv,isa string
To: Jan Beulich <jbeulich@suse.com>
Cc: Romain Caritey <Romain.Caritey@microchip.com>,
 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.pau@citrix.com>,
 Stefano Stabellini <sstabellini@kernel.org>, xen-devel@lists.xenproject.org
References: <cover.1773157782.git.oleksii.kurochko@gmail.com>
 <007c0a0243ac7ff1d1ab3faa4ebcdd6fcd14e485.1773157782.git.oleksii.kurochko@gmail.com>
 <efe5b1f5-29a0-43a8-92f8-cc20bd922e62@suse.com>
Content-Language: en-US
From: Oleksii Kurochko <oleksii.kurochko@gmail.com>
In-Reply-To: <efe5b1f5-29a0-43a8-92f8-cc20bd922e62@suse.com>
Content-Type: text/plain; charset=UTF-8; format=flowed
Content-Transfer-Encoding: 7bit
X-purgate-ID: tlsNG-ef75cf/1775816696-8B14D41E-6D76B9D9/10/73395122804
X-purgate-type: spam
X-purgate-size: 6460



On 4/1/26 3:49 PM, Jan Beulich wrote:
> On 10.03.2026 18:08, Oleksii Kurochko wrote:
>> Introduce generation of the riscv,isa string passed to the guest via the
>> Device Tree riscv,isa property.
> 
> Title as well as this suggest this is all about guest properties. Then ...
> 
>> The following changes are introduced:
>>
>> - According to the RISC-V privileged specification, M-mode software controls
>>    the XLEN value used by S-mode and U-mode. For RV64 harts, the SXL and UXL
>>    fields of the mstatus register are WARL fields that define the XLEN for
>>    S-mode and U-mode.
>>
>>    The XLEN value is provided by M-mode software (OpenSBI in the case of Xen)
>>    via the riscv,isa DT property. Introduce and initialize an xlen variable
>>    when parsing the host riscv,isa string in riscv_isa_parse_string().
> 
> ... suddenly talk is of host aspects? (See below as to what "xlen" really
> is meant to hold.)

I just used it to show that xlen could be different and based on what 
prev. mode put into one of it register to encode xlen. And the same is 
applied for guest domains. I will rephrase it in more proper way.

> 
>> --- a/xen/arch/riscv/cpufeature.c
>> +++ b/xen/arch/riscv/cpufeature.c
>> @@ -38,6 +38,8 @@ struct riscv_isa_ext_data {
>>   /* Host ISA bitmap */
>>   static __ro_after_init DECLARE_BITMAP(riscv_isa, RISCV_ISA_EXT_MAX);
>>   
>> +static __ro_after_init unsigned int xlen;
> 
> Nit: Attribute between type and identifier please, whenever possible (it
> isn't neatly possible in riscv_isa above, due to DECLARE_BITMAP()).
> 
>> @@ -160,6 +162,19 @@ static const struct riscv_isa_ext_data __initconst required_extensions[] = {
>>       RISCV_ISA_EXT_DATA(svpbmt),
>>   };
>>   
>> +static const unsigned int __initconst guest_unsupp_exts[] = {
>> +    RISCV_ISA_EXT_f,
>> +    RISCV_ISA_EXT_d,
>> +    RISCV_ISA_EXT_h,
>> +    RISCV_ISA_EXT_q,
>> +    RISCV_ISA_EXT_v,
>> +};
> 
> This could do with a comment clarifying what needs (and what doesn't need)
> putting here. My expectation would have been that everything in
> riscv_isa_ext[] which shouldn't be exposed to guests should appear here.
> Yet then there is V (which riscv_isa_ext[] doesn't have), while e.g. Svade
> and Svpbmt (which iirc won't be available to guests right away) aren't
> there.
> 
>> +static __ro_after_init DECLARE_BITMAP(guest_unsupp_bmp, RISCV_ISA_EXT_MAX);
> 
> Is the _bmp suffix really needed? riscv_isa, for example, doesn't have it.

It makes sense to drop.

> 
>> +#define MAX_GUEST_ISA_STR_LEN 256
>> +char guest_isa_str[MAX_GUEST_ISA_STR_LEN];
> 
> __ro_after_init?
> 
> Yet then - can this really be a global? Isn't the set of extensions
> available to a guest a per-guest property, i.e. a global could at best
> represent an upper bound on features?

At least, for now I think it is okay just to use global guest riscv,isa 
for all the domains. From my point of view if Xen doesn't support some 
extension to be used by guest so then should be responsible to generate 
proper riscv,isa.

It probably make sense to have riscv,isa per guest but then we still 
will want to parse this passed riscv,isa and check what Xen supports and 
what not, what looks like a double work a little bit. Probably it is the 
best one option and if riscv,isa isn't provided then just use that one 
generated by Xen.

> 
>> @@ -193,6 +208,15 @@ static void __init match_isa_ext(const char *name, const char *name_end,
>>                !memcmp(name, ext->name, name_end - name) )
>>           {
>>               __set_bit(ext->id, bitmap);
>> +
>> +            if ( riscv_isa_extension_available(guest_unsupp_bmp, ext->id) )
>> +                break;
>> +
>> +            if ( ext->id >= RISCV_ISA_EXT_BASE )
>> +                safe_strcat(guest_isa_str, "_");
>> +
>> +            safe_strcat(guest_isa_str, ext->name);
> 
> Shouldn't you check the (kind-of-)return value? (Yet better would be a build-
> time check, but I can't think of a way to achieve that.)

Yes, it would be nice. But it doesn't clear what should be reaction - 
just panic() with the message that we don't have enough space to cover 
all extenstion in riscv,isa or just continue with what was put to 
guest_isa_str. I think the second option could be fine.


> 
>> @@ -207,13 +231,17 @@ static int __init riscv_isa_parse_string(const char *isa,
>>   #if defined(CONFIG_RISCV_32)
>>       if ( isa[2] != '3' && isa[3] != '2' )
>>           return -EINVAL;
>> +    xlen = 32;
>>   #elif defined(CONFIG_RISCV_64)
>>       if ( isa[2] != '6' && isa[3] != '4' )
>>           return -EINVAL;
>> +    xlen = 64;
>>   #else
>>   # error "unsupported RISC-V bitness"
>>   #endif
> 
> This can be had with an initializer of "xlen". Then the (kind-of-)variable
> could be const unsigned int. Seeing the use below, is the variable
> correctly named, though? I.e. shouldn't it be guest_xlen or some such?

guest_xlen would be better.

> 
> Independently I expect you will want to support 32-bit guests on 64-bit Xen
> at some point, in which case encoding this value into a global string won't
> work very well.

Yes, then it will be needed to move it to domain-specific structure.
I don't know if it makes sense to do now. (depends on what we will 
decide to do with per-domain riscv,isa or it is fine to go with global one)

Btw, it isn't always be possible to have 32-bit guest on 64-bit Xen as 
when HSXLEN=64, VSXL is a WARL field that is encoded the same as the MXL 
field of misa. In particular, an implementation may make VSXL be a 
read-only field whose value always ensures that VSXLEN=HSXLEN.

> 
>> +    snprintf(guest_isa_str, sizeof(guest_isa_str), "rv%d", xlen);
> 
> %u please with unsigned int.
> 
> This being the only use of the variable (afaics), why is it not function-
> scope?

With the current implmentation, yes, it should be in function-scope.

> 
>> @@ -487,6 +515,11 @@ void __init riscv_fill_hwcap(void)
>>       bool all_extns_available = true;
>>       struct trap_info trap;
>>   
>> +    for ( i = 0; i < ARRAY_SIZE(guest_unsupp_exts); i++ )
>> +    {
>> +        __set_bit(guest_unsupp_exts[i], guest_unsupp_bmp);
>> +    }
> 
> Nit: No need for braces here. And anyway - can't this be had with an
> initializer for guest_unsupp_bmp?

It could be. I will use an initializer.

~ Oleksii


From xen-devel-bounces@lists.xenproject.org Fri Apr 10 10:43:02 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Fri, 10 Apr 2026 10:43:02 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1278698.1563462 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wB9KC-0005oq-An; Fri, 10 Apr 2026 10:42:56 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1278698.1563462; Fri, 10 Apr 2026 10:42: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 1wB9KC-0005oj-85; Fri, 10 Apr 2026 10:42:56 +0000
Received: by outflank-mailman (input) for mailman id 1278698;
 Fri, 10 Apr 2026 10:42:55 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <Luca.Fancellu@arm.com>) id 1wB9KB-0005ob-1g
 for xen-devel@lists.xenproject.org; Fri, 10 Apr 2026 10:42:55 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wB9KA-00Glrr-Dq
 for xen-devel@lists.xenproject.org; Fri, 10 Apr 2026 12:42:54 +0200
Received: from [10.42.69.10] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <Luca.Fancellu@arm.com>)
 id 69d8d423-2eae-0a2a0a5409dd-0a2a450ad1ee-40
 for <xen-devel@lists.xenproject.org>; Fri, 10 Apr 2026 12:42:54 +0200
Received: from [52.101.70.23]
 (helo=AS8PR04CU009.outbound.protection.outlook.com)
 by tlsNG-4011c0.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.0)
 (envelope-from <Luca.Fancellu@arm.com>)
 id 69d8d42d-ee98-0a2a450a0019-34654617b727-3
 for <xen-devel@lists.xenproject.org>; Fri, 10 Apr 2026 12:42:54 +0200
Received: from AS4P195CA0037.EURP195.PROD.OUTLOOK.COM (2603:10a6:20b:65a::26)
 by DU5PR08MB10580.eurprd08.prod.outlook.com (2603:10a6:10:51e::19)
 with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9769.17; Fri, 10 Apr
 2026 10:42:48 +0000
Received: from AM4PEPF00027A60.eurprd04.prod.outlook.com
 (2603:10a6:20b:65a:cafe::9) by AS4P195CA0037.outlook.office365.com
 (2603:10a6:20b:65a::26) with Microsoft SMTP Server (version=TLS1_3,
 cipher=TLS_AES_256_GCM_SHA384) id 15.20.9769.43 via Frontend Transport; Fri,
 10 Apr 2026 10:42:48 +0000
Received: from outbound-uk1.az.dlp.m.darktrace.com (4.158.2.129) by
 AM4PEPF00027A60.mail.protection.outlook.com (10.167.16.68) with Microsoft
 SMTP Server (version=TLS1_3, cipher=TLS_AES_256_GCM_SHA384) id 15.20.9769.17
 via Frontend Transport; Fri, 10 Apr 2026 10:42:48 +0000
Received: from DU2PR08MB7272.eurprd08.prod.outlook.com (2603:10a6:10:2d7::16)
 by GV2PR08MB8194.eurprd08.prod.outlook.com (2603:10a6:150:74::18)
 with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9769.17; Fri, 10 Apr
 2026 10:41:39 +0000
Received: from DU2PR08MB7272.eurprd08.prod.outlook.com
 ([fe80::5d34:206f:373:a323]) by DU2PR08MB7272.eurprd08.prod.outlook.com
 ([fe80::5d34:206f:373:a323%6]) with mapi id 15.20.9769.018; Fri, 10 Apr 2026
 10:41: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=selector1 header.d=arm.com header.i="@arm.com" header.h="From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck"; dkim=pass header.s=selector1 header.d=arm.com header.i="@arm.com" header.h="From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck"
ARC-Seal: i=2; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=pass;
 b=AhFtIVAzsbEkSbAplJTcovX/5a3U2BHiE9fydpyjJy6EIPt5ikuYdlf/b/qTIqPZsbaY1scSQnZd48npWik0ykahzPMIluVhziDggJ9/FUzcoI3EDT3p+373k4MJy7sdWSlFKfhpYfjQ+JA9WdeGxAWdxOGF1LmpxsBWNsH6uMQVu7j3E5FeJ+6WOBcsi7I/N8fXo5nR46ZHNQO2pYJNSaRcvYhM7X5Wu8yWqux6worPqIFcd4bJ+QVYHX2b9vF6h0Y25yzM0EwXRkcluAutVVw2mzPNjIud/GXV/jJBgte3H99A4xjdyCDpREN4hFifkW/+F4UU8BUuICBILG1vsw==
ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com;
 s=arcselector10001;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1;
 bh=2Y0h4D2uREcCtl3/VD2+58DxeULjDUZqfHr4du9xmAY=;
 b=AvKJgndaQqJuey797Da1rQ9Fwe0b5kS2kRVs/VtXWP+uTERoSDKz8Te3ZIDARTyY+RGvaZ2NVex8zANQUcvKnTa+hRSCWRUBB5HGh8kc/26Jcg/Gujp//ZZ6UIi02KZUYka7oGoQnV4a0kmckZIPOoCwcWkTC6C/q3/cQHua+eWuvoqImgPj9GBQqdGXMwOtxGQ6RGsFJfgzbuYpYwAVQxEKGPlurHaTVPkV1FDvPDKYHsXz+hxFRZQTzLjLxZyiapgZkkz7w0tBMhn/MB+IOPSfW2OUjgbF4M+2cvxqtA3EX9Ry5IsbuHNg0lngmsxd1UudjSGl8CNOpwa+H0GqYA==
ARC-Authentication-Results: i=2; mx.microsoft.com 1; spf=pass (sender ip is
 4.158.2.129) smtp.rcpttodomain=epam.com smtp.mailfrom=arm.com; dmarc=pass
 (p=none sp=none pct=100) action=none header.from=arm.com; dkim=pass
 (signature was verified) header.d=arm.com; arc=pass (0 oda=1 ltdi=1
 spf=[1,1,smtp.mailfrom=arm.com] dkim=[1,1,header.d=arm.com]
 dmarc=[1,1,header.from=arm.com])
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=arm.com; s=selector1;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck;
 bh=2Y0h4D2uREcCtl3/VD2+58DxeULjDUZqfHr4du9xmAY=;
 b=sDZUxKgjxzOig837tvVXlqFRiWNDM/vGtDbBFspIS0VVuXPMokXDW/1EulOlasPaGPzzNyWafIhpJWI8etGybORwOuKnZVCA4tBG5nQQ6d+oUXVEUceYAqRMQNzfvPzs13NnKPnZMM88YEl4YSE/Se+nWpHZldCx4izEmC5r07Y=
X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 4.158.2.129)
 smtp.mailfrom=arm.com; dkim=pass (signature was verified)
 header.d=arm.com;dmarc=pass action=none header.from=arm.com;
Received-SPF: Pass (protection.outlook.com: domain of arm.com designates
 4.158.2.129 as permitted sender) receiver=protection.outlook.com;
 client-ip=4.158.2.129; helo=outbound-uk1.az.dlp.m.darktrace.com; pr=C
ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none;
 b=tnmNn23T5qZ0Yry3ugsMsjDKioFD7q20cuy+C18QtNwKH6lWzCr+/you3e0axOrPo+WCP/W5jBIiqASJNgqyZrghhI9pLLtdQeYuxZwy69QyAZK7+dIsZEa/9Z+GSzHQ/qiMIvoWL6yDoteyz4veKyGrolJ3YJCb243HKr7rR6NdsexEUQWZ0ZdLe0Ey2NesEvEcku0MD5z4Ec2/U89xj7X62Rao/jfFDEMAb9uYJrn9LZrPeZfph4yCodm6TjTFxsmL7meXggiVEDrjok4qD3LfjMAH1EfiqU76HDhHC3GhkPOFTmi+781MIsX5LDA8HRmHj+p66oFEnSPTbyNZbQ==
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com;
 s=arcselector10001;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1;
 bh=2Y0h4D2uREcCtl3/VD2+58DxeULjDUZqfHr4du9xmAY=;
 b=vQpAv0qgbmxJyr/kLqVvtjtNYawat4t/9mPII7XqUai7RWPZGJmFN/1dWFoRcyZuaKygG+GUyUwjcDzixW4Y/bm0dOCVK2nlYx0aP4BTPcY+CQ58Mcd9iuHIhfv/8KeIDGyO6yRCya3SeOs/EeRlM7eOYnsvsfsTUDOuKXbdl4EZ4dCGpV49g561XJX8dDtSB68v6ntfMwdGJbgNOK9QUwBNy1491sXxPeDY+t5F7HVwRKqzsu1aKBCmRsu9hPABL2sZw9M44exxAGcL1VvxTBvQGLYMp3fZ02GtYGeQgNVjm/QC0mOHMUZNXU4sCJnx7kfKx47h/L7pTwjFsphCig==
ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass
 smtp.mailfrom=arm.com; dmarc=pass action=none header.from=arm.com; dkim=pass
 header.d=arm.com; arc=none
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=arm.com; s=selector1;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck;
 bh=2Y0h4D2uREcCtl3/VD2+58DxeULjDUZqfHr4du9xmAY=;
 b=sDZUxKgjxzOig837tvVXlqFRiWNDM/vGtDbBFspIS0VVuXPMokXDW/1EulOlasPaGPzzNyWafIhpJWI8etGybORwOuKnZVCA4tBG5nQQ6d+oUXVEUceYAqRMQNzfvPzs13NnKPnZMM88YEl4YSE/Se+nWpHZldCx4izEmC5r07Y=
From: Luca Fancellu <Luca.Fancellu@arm.com>
To: Milan Djokic <milan_djokic@epam.com>, Andrew Cooper
	<andrew.cooper3@citrix.com>
CC: "xen-devel@lists.xenproject.org" <xen-devel@lists.xenproject.org>, 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>,
	=?utf-8?B?Um9nZXIgUGF1IE1vbm7DqQ==?= <roger.pau@citrix.com>
Subject: Re: [PATCH v3 04/23] xen/arm: vIOMMU: add generic vIOMMU framework
Thread-Topic: [PATCH v3 04/23] xen/arm: vIOMMU: add generic vIOMMU framework
Thread-Index: AQHcyNactGZ7ugIU+0mvCG28OqL5ew==
Date: Fri, 10 Apr 2026 10:41:38 +0000
Message-ID: <93490E9C-4D22-4EAB-965E-B20DA8189C60@arm.com>
References: <cover.1774918270.git.milan_djokic@epam.com>
 <c12f84b9306a2b74a555c710f21f5362120205ed.1774918270.git.milan_djokic@epam.com>
In-Reply-To:
 <c12f84b9306a2b74a555c710f21f5362120205ed.1774918270.git.milan_djokic@epam.com>
Accept-Language: en-GB, en-US
Content-Language: en-US
X-MS-Has-Attach:
X-MS-TNEF-Correlator:
x-mailer: Apple Mail (2.3826.700.81.1.6)
Authentication-Results-Original: dkim=none (message not signed)
 header.d=none;dmarc=none action=none header.from=arm.com;
x-ms-traffictypediagnostic:
	DU2PR08MB7272:EE_|GV2PR08MB8194:EE_|AM4PEPF00027A60:EE_|DU5PR08MB10580:EE_
X-MS-Office365-Filtering-Correlation-Id: 275b7df6-ca29-449e-a258-08de96ede840
x-checkrecipientrouted: true
nodisclaimer: true
X-MS-Exchange-SenderADCheck: 1
X-MS-Exchange-AntiSpam-Relay: 0
X-Microsoft-Antispam-Untrusted:
 BCL:0;ARA:13230040|1800799024|7416014|376014|366016|56012099003|22082099003|18002099003|38070700021;
X-Microsoft-Antispam-Message-Info-Original:
 79zIz4WpKP0oEX5WGuR8mEGMviIQJmGKcbpdkRFAAD+iVHCYZXrLpK6HrsrK4C+pfGYBDyfOQz7+9Zv5Ywsn4/lg9Rhgxn+UG+zNVyZtK9HvNgc7oCBU9Qb1ViGyCLglqma7Bb9MvtKPqaUzhqee/rln30a/ELD0abxQ8LbiBhAzZcFtzdb8RK8WiCEni+myZ/rU7bIrg4Y+xcKi1sNkbAjipNMVTMHhSFW16D0OzC2/QgXH15vXK/VdjXbH1eh6asaKOicjXb+mT0+uRfkS35zPate7hbpr6S2O7fv2DOg9k2hARujRZqXSWhHhlHefP/AHynZ9jj2FxJj3uTYUk09RPPHbL47VDYKGj+hvi/Aq35dfdCCLJzUZZCbpkVmGtTwPs9AnJY/xNcrS62pOUSeIs3Utt1apcnta4ScQlptBqMHfvSbWkFXZm5CLtDe3D20piQ9xNdFXIjpb+uhfSqxkcvPPeyVjsbcUv9+bGlIEyYmGANSR3UjyYV67okvboAEpMQwNCk4MxrG+ZijbHTXksWfcwb3vLZqhK4eCIdaXmcNzxQUXnk06ddQgwW7aEibkEgreVICAAPkIsGGWxll33h/tXc1j0G+0iWgkmvDk9q1vjWPCdmc/npUISMgXU3B8AKjZCTXVCYfAjYayX6B1oV4nw2iNThiWMV7gvtlX1+Dd4OngNRSNWqo1ZX2Zn4eS36DLgakX1tQoz5pFSZGHf7/AO7yEz50lv94atYpU9v5RE3DowryaiuFj0xUVoE8/jKBNyT8LiGT9c2QMZ5bxVSQzqHovtD6nuyFyjSI=
X-Forefront-Antispam-Report-Untrusted:
 CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:DU2PR08MB7272.eurprd08.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(1800799024)(7416014)(376014)(366016)(56012099003)(22082099003)(18002099003)(38070700021);DIR:OUT;SFP:1101;
Content-Type: text/plain; charset="utf-8"
Content-ID: <41C3DC3E0DE90A49932C1BFA6657C44D@eurprd08.prod.outlook.com>
Content-Transfer-Encoding: base64
MIME-Version: 1.0
X-Exchange-RoutingPolicyChecked:
 twM/Igy+97XB/1Gbixry5z7tMkUFhN7puBvPW5KQpLamM/jRxLPkf1Pw+Jl1nhhhPwIJZdDUBQ8NQO35b89coKjlaoENf2sCxARbyRWfqWiXS2HBrIwpyJvQwWwXeZge9m6kS/7KvVG/Oze8hUPBYVr6OkS7hQvlZkWH6kR415jqdHZT86wEi7CSW8bbhYdy15QzSYcOPcfBaGWUTI7CeYatST6gEbX3UPlayFnMpojGVIJvjzOUY3AyqBUVz1XrssymMsB4feTn4fBmYjJ4QtlMjKl2YGh+w+bPrW5zKSkbYTFMRcgXgA6QtgNFBiEpQAfDN6cRMAMOd7XwNy9ZjA==
X-MS-Exchange-Transport-CrossTenantHeadersStamped: GV2PR08MB8194
X-EOPAttributedMessage: 0
X-MS-Exchange-Transport-CrossTenantHeadersStripped:
 AM4PEPF00027A60.eurprd04.prod.outlook.com
X-MS-PublicTrafficType: Email
X-MS-Office365-Filtering-Correlation-Id-Prvs:
	988e0eda-62cd-49fa-cdb0-08de96edbefd
X-Microsoft-Antispam:
	BCL:0;ARA:13230040|36860700016|35042699022|1800799024|7416014|376014|82310400026|14060799003|56012099003|18002099003|22082099003;
X-Microsoft-Antispam-Message-Info:
	QO5JWdV0Wyr174bq8HGhb6uP98kUJEgAJ22UDQP6vi2L+BbVgWy3yGrbcwCgYIn50wK5+es5Zjpf1XFAgP68D55f924T9jcYw0/j2vyCkYGEubxJJ+NGYwzVM3DlwJJjzPRp6IP2kqfFKbVjOmqR1gKujQREITSrYFjEtGU0m7kr2zZsuuxfcETkoAJNP/GgrLo+LPLzHFyN887KexPbaefjDVHP4REjUYTbFXnQjPUB7/9Z7tWMwQILzGbGw6fXdEd4BGs9+SZuHg8s3doOb7kqLUS+8QpQY3dRaOwZR+sRCqYFZlxR9OI358FoWiRXgCWqwXyFOy6SuPw03g6FJRKGWmlr5ufj8TeHxxVrsSPvwEEI9ejiM/7XMuL2K8wPy9bta2D1jRhEEpSqzd6zIOs1WJkjaAY+1i7ERRxgFgnathfbKEHV5x7RtPNJ2OAcKWgg9EAkAeX+HGD0FFax6WXTKM+HiPyLvfjms7AL4pm7d5z30Qtde5dQUaXN2RUCsF7L6rOpgKxadjKhV4wO+KUGpwh7LS7UHlPIZACTNs3GLYFZRJHgPOC78ioZS9SUedv3ogCZqsLWBdMKvv02Mj2SzLa0aT4Uly9mjgGsXpSr86eGLNYtaQjv2oV7KIeClE7choDBJFjR+TNTASzhVIXakQVARvLv8QAWktxGMKc0j9I9hw8NsqqeB0ZJVtId7I7bvAFZqzW3WQzW420H5Daqg5fZTOoivIcZh/rWfSgyIv4sxMXRdE7VV3I+g3IjO7XrPxHrxZgursTXDHyNnQ==
X-Forefront-Antispam-Report:
	CIP:4.158.2.129;CTRY:GB;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:outbound-uk1.az.dlp.m.darktrace.com;PTR:InfoDomainNonexistent;CAT:NONE;SFS:(13230040)(36860700016)(35042699022)(1800799024)(7416014)(376014)(82310400026)(14060799003)(56012099003)(18002099003)(22082099003);DIR:OUT;SFP:1101;
X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1
X-MS-Exchange-AntiSpam-MessageData-0:
	pOw0zKuPx5WDQr73M1c9B+BcDkL8r1lRkGQkfkbHFqSQfWAkE8B4+zsfq9wCrVK+9NfRDbdLDVYZd/XONHw+gwvVk6MsagVKfi9HjOJ9hUJ9b7W3f9zAVxe9Ne9HZUxdOy/nQk64Uc70OkuWqq1g/qWktIDe73RmqXF0PFrhsSs5NPr2QiRNlpywtR9LTEIThX8JSQ6fpUTpf8YknNh05z3bkbsU3kTPoW+Fx9UJfY1zl6hEyhiKIjlZagiCc060Qi4f7WPqBs9+Qim+vrYrb1ztUmJOV3K36pKAVNsl5VFw7ZaoQTthNjwaNf2fzRP3HlIRQ342g1a48hlF5qSVJPNqsZFGs276JHpMYLUBuQYCHljlVP7bLTUec5wtbhRv3Hu4je1vIkxbdtc2LPK8pxUujBpBM8QItsXlZ47JbgEi4/OG5lx2F9kwHvAxdPBB
X-OriginatorOrg: arm.com
X-MS-Exchange-CrossTenant-OriginalArrivalTime: 10 Apr 2026 10:42:48.0105
 (UTC)
X-MS-Exchange-CrossTenant-Network-Message-Id: 275b7df6-ca29-449e-a258-08de96ede840
X-MS-Exchange-CrossTenant-Id: f34e5979-57d9-4aaa-ad4d-b122a662184d
X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=f34e5979-57d9-4aaa-ad4d-b122a662184d;Ip=[4.158.2.129];Helo=[outbound-uk1.az.dlp.m.darktrace.com]
X-MS-Exchange-CrossTenant-AuthSource:
	AM4PEPF00027A60.eurprd04.prod.outlook.com
X-MS-Exchange-CrossTenant-AuthAs: Anonymous
X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem
X-MS-Exchange-Transport-CrossTenantHeadersStamped: DU5PR08MB10580
X-purgate-ID: tlsNG-4011c0/1775817774-BEB4D0B1-0ADCCE42/0/0
X-purgate-type: clean
X-purgate-size: 6048

SGkgTWlsYW4sDQoNCj4gZGlmZiAtLWdpdCBhL3hlbi9hcmNoL2FybS9kb21haW4uYyBiL3hlbi9h
cmNoL2FybS9kb21haW4uYw0KPiBpbmRleCA5NGI5ODU4YWQyLi4yNDFmODczODZiIDEwMDY0NA0K
PiAtLS0gYS94ZW4vYXJjaC9hcm0vZG9tYWluLmMNCj4gKysrIGIveGVuL2FyY2gvYXJtL2RvbWFp
bi5jDQo+IEBAIC0yOCw2ICsyOCw3IEBADQo+ICNpbmNsdWRlIDxhc20vdGVlL3RlZS5oPg0KPiAj
aW5jbHVkZSA8YXNtL3ZmcC5oPg0KPiAjaW5jbHVkZSA8YXNtL3ZnaWMuaD4NCj4gKyNpbmNsdWRl
IDxhc20vdmlvbW11Lmg+DQo+ICNpbmNsdWRlIDxhc20vdnRpbWVyLmg+DQo+IA0KPiAjaW5jbHVk
ZSAidnBjaS5oIg0KPiBAQCAtNTUwLDYgKzU1MSwxNCBAQCBpbnQgYXJjaF9zYW5pdGlzZV9kb21h
aW5fY29uZmlnKHN0cnVjdCB4ZW5fZG9tY3RsX2NyZWF0ZWRvbWFpbiAqY29uZmlnKQ0KPiAgICAg
ICAgIHJldHVybiAtRUlOVkFMOw0KPiAgICAgfQ0KPiANCj4gKyAgICAvKiBDaGVjayBjb25maWcg
c3RydWN0dXJlIHBhZGRpbmcgKi8NCj4gKyAgICBpZiAoIGNvbmZpZy0+YXJjaC5wYWQgKQ0KPiAr
ICAgIHsNCj4gKyAgICAgICAgZHByaW50ayhYRU5MT0dfSU5GTywNCj4gKyAgICAgICAgICAgICJJ
bnZhbGlkIGlucHV0IGNvbmZpZywgcGFkZGluZyBtdXN0IGJlIHplcm9cbiIpOw0KPiArICAgICAg
ICByZXR1cm4gLUVJTlZBTDsNCj4gKyAgICB9DQo+ICsNCg0KVGhpcyBmZWVscyBvayBidXQgdW5y
ZWxhdGVkIHRvIHRoZSBwYXRjaCwgYnV0IGFsc28gdGhlIHRleHQgbWF5YmUgc2hvdWxkIGJlIHNv
bWV0aGluZyBsaWtlIOKAnEludmFsaWQgZG9tYWluIGNvbmZpZ3VyYXRpb24gZHVyaW5nIGRvbWFp
biBjcmVhdGlvblxu4oCdLg0KDQo+ICAgICAvKiBDaGVjayBmZWF0dXJlIGZsYWdzICovDQo+ICAg
ICBpZiAoIHN2ZV92bF9iaXRzID4gMCApDQo+ICAgICB7DQo+IEBAIC02MjYsNiArNjM1LDIxIEBA
IGludCBhcmNoX3Nhbml0aXNlX2RvbWFpbl9jb25maWcoc3RydWN0IHhlbl9kb21jdGxfY3JlYXRl
ZG9tYWluICpjb25maWcpDQo+ICAgICAgICAgcmV0dXJuIC1FSU5WQUw7DQo+ICAgICB9DQo+IA0K
PiArICAgIGlmICggIShjb25maWctPmZsYWdzICYgWEVOX0RPTUNUTF9DREZfaW9tbXUpICYmDQo+
ICsgICAgICAgICBjb25maWctPmFyY2gudmlvbW11X3R5cGUgIT0gWEVOX0RPTUNUTF9DT05GSUdf
VklPTU1VX05PTkUgKQ0KPiArICAgIHsNCj4gKyAgICAgICAgZHByaW50ayhYRU5MT0dfSU5GTywN
Cj4gKyAgICAgICAgICAgICAgICAidklPTU1VIHJlcXVlc3RlZCB3aGlsZSBpb21tdSBub3QgZW5h
YmxlZCBmb3IgZG9tYWluXG4iKTsNCj4gKyAgICAgICAgcmV0dXJuIC1FSU5WQUw7DQo+ICsgICAg
fQ0KPiArDQo+ICsgICAgaWYgKCBjb25maWctPmFyY2gudmlvbW11X3R5cGUgIT0gWEVOX0RPTUNU
TF9DT05GSUdfVklPTU1VX05PTkUgKQ0KPiArICAgIHsNCj4gKyAgICAgICAgZHByaW50ayhYRU5M
T0dfSU5GTywNCj4gKyAgICAgICAgICAgICAgICAidklPTU1VIHR5cGUgcmVxdWVzdGVkIG5vdCBz
dXBwb3J0ZWQgYnkgdGhlIHBsYXRmb3JtIG9yIFhlblxuIik7DQo+ICsgICAgICAgIHJldHVybiAt
RUlOVkFMOw0KPiArICAgIH0NCj4gKw0KPiAgICAgcmV0dXJuIHNjaV9kb21haW5fc2FuaXRpc2Vf
Y29uZmlnKGNvbmZpZyk7DQo+IH0NCj4gDQo+IEBAIC03MjEsNiArNzQ1LDkgQEAgaW50IGFyY2hf
ZG9tYWluX2NyZWF0ZShzdHJ1Y3QgZG9tYWluICpkLA0KPiAgICAgaWYgKCAocmMgPSBzY2lfZG9t
YWluX2luaXQoZCwgY29uZmlnKSkgIT0gMCApDQo+ICAgICAgICAgZ290byBmYWlsOw0KPiANCj4g
KyAgICBpZiAoIChyYyA9IGRvbWFpbl92aW9tbXVfaW5pdChkLCBjb25maWctPmFyY2gudmlvbW11
X3R5cGUpKSAhPSAwICkNCj4gKyAgICAgICAgZ290byBmYWlsOw0KPiArDQo+ICAgICByZXR1cm4g
MDsNCj4gDQo+IGZhaWw6DQo+IEBAIC05NjUsNiArOTkyLDcgQEAgZW51bSB7DQo+ICAgICBQUk9H
X3BjaSA9IDEsDQo+ICAgICBQUk9HX3NjaSwNCj4gICAgIFBST0dfdGVlLA0KPiArICAgIFBST0df
dmlvbW11LA0KPiAgICAgUFJPR194ZW4sDQo+ICAgICBQUk9HX3BhZ2UsDQo+ICAgICBQUk9HX21h
cHBpbmcsDQo+IEBAIC0xMDIxLDYgKzEwNDksMTEgQEAgaW50IGRvbWFpbl9yZWxpbnF1aXNoX3Jl
c291cmNlcyhzdHJ1Y3QgZG9tYWluICpkKQ0KPiAgICAgICAgIGlmIChyZXQgKQ0KPiAgICAgICAg
ICAgICByZXR1cm4gcmV0Ow0KPiANCj4gKyAgICBQUk9HUkVTUyh2aW9tbXUpOg0KPiArICAgICAg
ICByZXQgPSB2aW9tbXVfcmVsaW5xdWlzaF9yZXNvdXJjZXMoZCk7DQo+ICsgICAgICAgIGlmIChy
ZXQgKQ0KPiArICAgICAgICAgICAgcmV0dXJuIHJldDsNCj4gKw0KPiAgICAgUFJPR1JFU1MoeGVu
KToNCj4gICAgICAgICByZXQgPSByZWxpbnF1aXNoX21lbW9yeShkLCAmZC0+eGVucGFnZV9saXN0
KTsNCj4gICAgICAgICBpZiAoIHJldCApDQo+IGRpZmYgLS1naXQgYS94ZW4vYXJjaC9hcm0vZG9t
YWluX2J1aWxkLmMgYi94ZW4vYXJjaC9hcm0vZG9tYWluX2J1aWxkLmMNCj4gaW5kZXggZTg3OTU3
NDVkZC4uYTUxNTYzZWUzZCAxMDA2NDQNCj4gLS0tIGEveGVuL2FyY2gvYXJtL2RvbWFpbl9idWls
ZC5jDQo+ICsrKyBiL3hlbi9hcmNoL2FybS9kb21haW5fYnVpbGQuYw0KPiBAQCAtMzUsNiArMzUs
NyBAQA0KPiAjaW5jbHVkZSA8YXNtL2FybTY0L3N2ZS5oPg0KPiAjaW5jbHVkZSA8YXNtL2NwdWZl
YXR1cmUuaD4NCj4gI2luY2x1ZGUgPGFzbS9kb21haW5fYnVpbGQuaD4NCj4gKyNpbmNsdWRlIDxh
c20vdmlvbW11Lmg+DQoNCk5JVDogSW4gbXkgbG9jYWwgYnJhbmNoIEnigJl2ZSByZWJhc2VkIHRo
aXMgb24gdG9wIG9mIG5ldyBzdGFnaW5nDQoNCj4gDQo+IGRpZmYgLS1naXQgYS94ZW4vaW5jbHVk
ZS9wdWJsaWMvYXJjaC1hcm0uaCBiL3hlbi9pbmNsdWRlL3B1YmxpYy9hcmNoLWFybS5oDQo+IGlu
ZGV4IGNkNTYzY2Y3MDYuLmQ0OTUzZDQwZmQgMTAwNjQ0DQo+IC0tLSBhL3hlbi9pbmNsdWRlL3B1
YmxpYy9hcmNoLWFybS5oDQo+ICsrKyBiL3hlbi9pbmNsdWRlL3B1YmxpYy9hcmNoLWFybS5oDQo+
IEBAIC0zMzAsNiArMzMwLDggQEAgREVGSU5FX1hFTl9HVUVTVF9IQU5ETEUodmNwdV9ndWVzdF9j
b250ZXh0X3QpOw0KPiAjZGVmaW5lIFhFTl9ET01DVExfQ09ORklHX0FSTV9TQ0lfTk9ORSAgICAg
IDANCj4gI2RlZmluZSBYRU5fRE9NQ1RMX0NPTkZJR19BUk1fU0NJX1NDTUlfU01DICAxDQo+IA0K
PiArI2RlZmluZSBYRU5fRE9NQ1RMX0NPTkZJR19WSU9NTVVfTk9ORSAgIDANCj4gKw0KPiBzdHJ1
Y3QgeGVuX2FyY2hfZG9tYWluY29uZmlnIHsNCj4gICAgIC8qIElOL09VVCAqLw0KPiAgICAgdWlu
dDhfdCBnaWNfdmVyc2lvbjsNCj4gQEAgLTM1NSw2ICszNTcsOSBAQCBzdHJ1Y3QgeGVuX2FyY2hf
ZG9tYWluY29uZmlnIHsNCj4gICAgIHVpbnQzMl90IGNsb2NrX2ZyZXF1ZW5jeTsNCj4gICAgIC8q
IElOICovDQo+ICAgICB1aW50OF90IGFybV9zY2lfdHlwZTsNCj4gKyAgICAvKiBJTiAqLw0KPiAr
ICAgIHVpbnQ4X3QgdmlvbW11X3R5cGU7DQo+ICsgICAgdWludDE2X3QgcGFkOw0KDQpIYXZpbmcg
dGhlIHBhZGRpbmcgZXhwbGljaXQgZmVlbHMgb2sgdG8gbWUsIGJ1dCBJIHdvdWxkIHJlbHkgb24g
bWFpbnRhaW5lcg0KY2hvaWNlLg0KDQo+IH07DQo+ICNlbmRpZiAvKiBfX1hFTl9fIHx8IF9fWEVO
X1RPT0xTX18gKi8NCj4gDQo+IGRpZmYgLS1naXQgYS94ZW4vaW5jbHVkZS9wdWJsaWMvZG9tY3Rs
LmggYi94ZW4vaW5jbHVkZS9wdWJsaWMvZG9tY3RsLmgNCj4gaW5kZXggOGY2NzA4YzBhNy4uMjMx
MjQ1NDdmMyAxMDA2NDQNCj4gLS0tIGEveGVuL2luY2x1ZGUvcHVibGljL2RvbWN0bC5oDQo+ICsr
KyBiL3hlbi9pbmNsdWRlL3B1YmxpYy9kb21jdGwuaA0KPiBAQCAtMzAsOSArMzAsOSBAQA0KPiAg
KiBmaWVsZHMpIGRvbid0IHJlcXVpcmUgYSBjaGFuZ2Ugb2YgdGhlIHZlcnNpb24uDQo+ICAqIFN0
YWJsZSBvcHMgYXJlIE5PVCBjb3ZlcmVkIGJ5IFhFTl9ET01DVExfSU5URVJGQUNFX1ZFUlNJT04h
DQo+ICAqDQo+IC0gKiBMYXN0IHZlcnNpb24gYnVtcDogWGVuIDQuMTkNCj4gKyAqIExhc3QgdmVy
c2lvbiBidW1wOiBYZW4gNC4yMg0KPiAgKi8NCj4gLSNkZWZpbmUgWEVOX0RPTUNUTF9JTlRFUkZB
Q0VfVkVSU0lPTiAweDAwMDAwMDE3DQo+ICsjZGVmaW5lIFhFTl9ET01DVExfSU5URVJGQUNFX1ZF
UlNJT04gMHgwMDAwMDAxOA0KDQpJIGRvbuKAmXQgdGhpbmsgdGhlIGNoYW5nZXMgaW4gdGhpcyBw
YXRjaCBhcmUgYnJlYWtpbmcgdGhlIEFCSSwgc28gdGhpcyBzaG91bGQgbm90IGJlIGJ1bXBlZDsN
CnNhaWQgc28sIEkgd291bGQgcmVseSBvbiBAQW5kcmV3IG9yIGFub3RoZXIgbWFpbnRhaW5lciBm
b3IgdGhpcw0KDQpDaGVlcnMsDQpMdWNhDQoNCg==


From xen-devel-bounces@lists.xenproject.org Fri Apr 10 10:44:09 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Fri, 10 Apr 2026 10:44:09 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1278707.1563470 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wB9LM-0006Hu-JH; Fri, 10 Apr 2026 10:44:08 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1278707.1563470; Fri, 10 Apr 2026 10:44: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 1wB9LM-0006Hn-GY; Fri, 10 Apr 2026 10:44:08 +0000
Received: by outflank-mailman (input) for mailman id 1278707;
 Fri, 10 Apr 2026 10:44:07 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <marmarek@invisiblethingslab.com>) id 1wB9LL-0006Hd-5m
 for xen-devel@lists.xenproject.org; Fri, 10 Apr 2026 10:44:07 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wB9LK-00FJKq-GF
 for xen-devel@lists.xenproject.org; Fri, 10 Apr 2026 12:44:06 +0200
Received: from [10.42.69.5] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <marmarek@invisiblethingslab.com>)
 id 69d8d462-e002-0a2a0a5209dd-0a2a4505af18-34
 for <xen-devel@lists.xenproject.org>; Fri, 10 Apr 2026 12:44:06 +0200
Received: from [103.168.172.151] (helo=fout-a8-smtp.messagingengine.com)
 by tlsNG-c201ff.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.0)
 (envelope-from <marmarek@invisiblethingslab.com>)
 id 69d8d474-3760-0a2a45050019-67a8ac97874b-3
 for <xen-devel@lists.xenproject.org>; Fri, 10 Apr 2026 12:44:05 +0200
Received: from phl-compute-06.internal (phl-compute-06.internal [10.202.2.46])
 by mailfout.phl.internal (Postfix) with ESMTP id B2727EC03F5;
 Fri, 10 Apr 2026 06:44:04 -0400 (EDT)
Received: from phl-frontend-03 ([10.202.2.162])
 by phl-compute-06.internal (MEProxy); Fri, 10 Apr 2026 06:44:04 -0400
Received: by mail.messagingengine.com (Postfix) with ESMTPA; Fri,
 10 Apr 2026 06:44:03 -0400 (EDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@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=1775817844;
	 x=1775904244; bh=KqXRvZkjdSiC1TXdblSU7xq0GQPPPWZ1L+QqKXFkpWs=; b=
	jFgQmBwDi99fQPvvjMuj+MB/Km8UCKbL6A+G1qfgZQnTnaAikB+404+6YXQdBhNd
	fXXYpYPlAVZ/UamOteuTVpZ0oTbsHuo6978KpsaALejLOEOW/dBYE+UZgXpb4cZ5
	3aDdGVXBlCMLYhPtatA5dqnKPcrwCF9FdCeQiNe7KWCmpyN9YCX8Z6eo07fTmToL
	0fDe1RxOn2sSjr/xbQmJssK1Yz3t3eA1sDliLg1s9yqD+f8BIw1xZl476iS/OEyh
	dkEWaB8/FiyL9wXgOiqdzN8Eg63w823yRjMJ5a9o1YA5om6hcx+RWayfyiM2L5wh
	e9x61Act1+apLC6ztd0ejA==
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=
	1775817844; x=1775904244; bh=KqXRvZkjdSiC1TXdblSU7xq0GQPPPWZ1L+Q
	qKXFkpWs=; b=CaolV1nOUWsaWkwKw3vpQRUKbZqDLzc8izC+ZIShMJVEFo4goZl
	99GN4FlNuuvJz0mREmj2FNhA5OZi9+eXfo80widxYriTelCGl0QrNayesOQkDD1n
	PSq+z+1jp0SRjgQdzJ9kCKXGHFGFhoEeJnA80jqlSQevrA2RuZzp6mJcI1Mc87LP
	IZn2xTPXAgk52icDLvLptlfSZB6j0EPLUOjkp9rlUbbBSF3Q2QxpTgjwQvZW7AUH
	I2IoTQrgL5AhInbBnQ/4rRMzvTpzys0hgLjh51fVP4asUaUeUGSN+ZVM2SdtTims
	VOAq2wkh3zTJ3MTjoIr9jZvMXInUCxcbT+g==
X-ME-Sender: <xms:dNTYafvDOHYFSbkdOzu4UkB0bivnwqY6YEfvqU_4PMp_bzkO-NPNdw>
    <xme:dNTYaXXaz8bIhi4tt_oI3Mfr1T07gi23Aw7ejlzCbNJAkWa6afvPgr9vCDQT_CQgx
    zHTqJZPUO67uqGU9m3oXg05-wUqp1nrxifCp_XnQ8kmyvPI>
X-ME-Received: <xmr:dNTYabG0s-FcM4nFRH2G8EdoQI2C0TASQ052SFuzqGQg0x-r8lZNTg-XFr5oqDITkKjSLYQiAbHre_Hq9RvjB_smcZVMMW1ZbdY>
X-ME-Proxy-Cause: gggruggvucftvghtrhhoucdtuddrgeefhedrtddtgddvledvtdcutefuodetggdotefrod
    ftvfcurfhrohhfihhlvgemucfhrghsthforghilhdpuffrtefokffrpgfnqfghnecuuegr
    ihhlohhuthemuceftddtnecusecvtfgvtghiphhivghnthhsucdlqddutddtmdenucfjug
    hrpeffhffvvefukfhfgggtuggjsehgtderredttdejnecuhfhrohhmpeforghrvghkucfo
    rghrtgiihihkohifshhkihdqifpkrhgvtghkihcuoehmrghrmhgrrhgvkhesihhnvhhish
    hisghlvghthhhinhhgshhlrggsrdgtohhmqeenucggtffrrghtthgvrhhnpefgudelteef
    vefhfeehieetleeihfejhfeludevteetkeevtedtvdegueetfeejudenucevlhhushhtvg
    hrufhiiigvpedtnecurfgrrhgrmhepmhgrihhlfhhrohhmpehmrghrmhgrrhgvkhesihhn
    vhhishhisghlvghthhhinhhgshhlrggsrdgtohhmpdhnsggprhgtphhtthhopeehpdhmoh
    guvgepshhmthhpohhuthdprhgtphhtthhopehrohhgvghrrdhprghusegtihhtrhhigidr
    tghomhdprhgtphhtthhopeigvghnqdguvghvvghlsehlihhsthhsrdigvghnphhrohhjvg
    gtthdrohhrghdprhgtphhtthhopehjsggvuhhlihgthhesshhushgvrdgtohhmpdhrtghp
    thhtoheprghnughrvgifrdgtohhophgvrhefsegtihhtrhhigidrtghomhdprhgtphhtth
    hopehtvgguugihrdgrshhtihgvsehvrghtvghsrdhtvggthh
X-ME-Proxy: <xmx:dNTYaZ0fqCTDJA9ORx3OsH2uI6xT6V8Ed0MIdKzmOHJ4B3Or4QnwAw>
    <xmx:dNTYadNAzifHoIcW-aHEorn4E1-DTNIhUCjO4T1sVNw3q6bxZeYSdg>
    <xmx:dNTYaY6FjwFAPy3yyFiF_D53-_dGdEeTgwdZHV7CzmePVQ_sAK5qeg>
    <xmx:dNTYaX25OjVQVowdso5Y_hRhL61cx3-HNys6yB_Tivo1ouAn3XhsJw>
    <xmx:dNTYaQfK-PsXjOUUsybm8M8NDYd0kSX1djL7IGy2M9mM7E89w5-EoMCK>
Feedback-ID: i1568416f:Fastmail
Date: Fri, 10 Apr 2026 12:44:02 +0200
From: Marek =?utf-8?Q?Marczykowski-G=C3=B3recki?= <marmarek@invisiblethingslab.com>
To: Roger Pau Monne <roger.pau@citrix.com>
Cc: xen-devel@lists.xenproject.org, Jan Beulich <jbeulich@suse.com>,
	Andrew Cooper <andrew.cooper3@citrix.com>,
	Teddy Astie <teddy.astie@vates.tech>
Subject: Re: [PATCH] x86/time: do not kill calibration timer on suspend
Message-ID: <adjUcmzVrwxEcn4m@mail-itl>
References: <20260410085504.32925-1-roger.pau@citrix.com>
MIME-Version: 1.0
Content-Type: multipart/signed; micalg=pgp-sha256;
	protocol="application/pgp-signature"; boundary="tUaYOwkehvKn/XPu"
Content-Disposition: inline
In-Reply-To: <20260410085504.32925-1-roger.pau@citrix.com>
X-purgate-ID: tlsNG-c201ff/1775817846-2372A96F-63941FFC/0/0
X-purgate-type: clean
X-purgate-size: 2024


--tUaYOwkehvKn/XPu
Content-Type: text/plain; protected-headers=v1; charset=utf-8
Content-Disposition: inline
Content-Transfer-Encoding: quoted-printable
Date: Fri, 10 Apr 2026 12:44:02 +0200
From: Marek =?utf-8?Q?Marczykowski-G=C3=B3recki?= <marmarek@invisiblethingslab.com>
To: Roger Pau Monne <roger.pau@citrix.com>
Cc: xen-devel@lists.xenproject.org, Jan Beulich <jbeulich@suse.com>,
	Andrew Cooper <andrew.cooper3@citrix.com>,
	Teddy Astie <teddy.astie@vates.tech>
Subject: Re: [PATCH] x86/time: do not kill calibration timer on suspend

On Fri, Apr 10, 2026 at 10:55:04AM +0200, Roger Pau Monne wrote:
> A killed timer will ignore further set_timer() calls, and hence won't be
> re-armed unless it's initialized again.  Use stop_timer() instead of
> kill_timer() in time_suspend(), so that the set_timer() call in
> time_resume() successfully re-arms the timer.  Otherwise time calibration
> is no longer scheduled (and executed) after resuming from S3 suspend.
>=20
> Fixes: 6d90db1a2ca1 ("x86: rendezvous-based local time calibration")
> Reported-by: Marek Marczykowski-G=C3=B3recki <marmarek@invisiblethingslab=
=2Ecom>
> Signed-off-by: Roger Pau Monn=C3=A9 <roger.pau@citrix.com>

I confirm this fixes the issue, thanks!

Tested-by: Marek Marczykowski-G=C3=B3recki <marmarek@invisiblethingslab.com>

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

--tUaYOwkehvKn/XPu
Content-Type: application/pgp-signature; name=signature.asc

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

iQEzBAEBCAAdFiEEhrpukzGPukRmQqkK24/THMrX1ywFAmnY1HIACgkQ24/THMrX
1yz9bQf/Y1c6lYD2l1ximaVqJVniKZF0OUUWD2B3gthXifMbXZuL79cUcDetoKGB
qu3nSd+PxB7jPKtzRNoE0k3ftwUCzNbrMMKfFk5PxBZ10gMVWmnb9KHeaXLDc3CS
l9A0ZiIEob1XtKpYngx08pI1GmT3N5AqQebmkh2DIWqz+W3hEQKjmu3s00bO7cFh
Mj35/+i2oBp7Q6nlWM0p4nSlyThSQsTSClG1r2zEEseqtu9p4ySHAxsNbOTmVDHP
iCyFbC+j2kw35zx5hSHa9LtXBVA/Xn7Q32e1RbDUGS83Hdv93VQ8O24voAqPeAsc
Kji9kA8Tw/JNeP89eRPaytLsnMdxDQ==
=dq1v
-----END PGP SIGNATURE-----

--tUaYOwkehvKn/XPu--


From xen-devel-bounces@lists.xenproject.org Fri Apr 10 10:45:54 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Fri, 10 Apr 2026 10:45:54 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1278717.1563479 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wB9N2-0006qO-TW; Fri, 10 Apr 2026 10:45:52 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1278717.1563479; Fri, 10 Apr 2026 10:45: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 1wB9N2-0006qH-Ql; Fri, 10 Apr 2026 10:45:52 +0000
Received: by outflank-mailman (input) for mailman id 1278717;
 Fri, 10 Apr 2026 10:45:51 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <jbeulich@suse.com>) id 1wB9N1-0006px-52
 for xen-devel@lists.xenproject.org; Fri, 10 Apr 2026 10:45:51 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wB9Mx-00FJdM-TE
 for xen-devel@lists.xenproject.org; Fri, 10 Apr 2026 12:45:47 +0200
Received: from [10.42.69.2] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <jbeulich@suse.com>)
 id 69d8d4c2-bab6-0a2a0a5309dd-0a2a4502cf70-22
 for <xen-devel@lists.xenproject.org>; Fri, 10 Apr 2026 12:45:47 +0200
Received: from [209.85.221.51] (helo=mail-wr1-f51.google.com)
 by tlsNG-720697.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.0)
 (envelope-from <jbeulich@suse.com>)
 id 69d8d4db-42fa-0a2a45020019-d155dd33ec8f-3
 for <xen-devel@lists.xenproject.org>; Fri, 10 Apr 2026 12:45:47 +0200
Received: by mail-wr1-f51.google.com with SMTP id
 ffacd0b85a97d-43d5ec211abso984317f8f.0
 for <xen-devel@lists.xenproject.org>; Fri, 10 Apr 2026 03:45:47 -0700 (PDT)
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-43d63e50044sm6498773f8f.25.2026.04.10.03.45.46
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Fri, 10 Apr 2026 03:45:46 -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=google header.d=suse.com header.i="@suse.com" header.h="Content-Transfer-Encoding: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=1775817947; x=1776422747; darn=lists.xenproject.org;
        h=content-transfer-encoding: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;
        bh=w5wtCTojcIeiVz86pyQmtALPC285FlCPpb0vrS7WcDI=;
        b=Tm9qDphm+OrGfF+ujS6lKNdUMkeOOUYrfMi65+Q2UtaLZhnbm0+HVE/XEzEnlSCqni
         FRyGWQhMOU/62yQpZg3QMDESg9eEfDyrlxtQFRZ7j91KPBswh6LhzhLN1K/OulorUBBN
         GXlp22wNNSdECLnRg41yccpu0Po/hI6imXu2FiKQkPuNX9y+zTrMYGY/bXe50F8rgJ0u
         shHcivsOimN98HroIxOANlLAYpZqx55PxEqUr1hbH6o7TXxd6SlkYkMgeAWPIEmUPXEB
         fxCjGRcl8kjVbSN32GtdKPOCjdJ4rgwRcEzOALUQQet62zevlYf46Ys0qU1zH7w1RgCB
         /2lQ==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20251104; t=1775817947; x=1776422747;
        h=content-transfer-encoding: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;
        bh=w5wtCTojcIeiVz86pyQmtALPC285FlCPpb0vrS7WcDI=;
        b=M7IaL6X6X47y3uLpgVkJtrnT6/6A5NrsqCd+A89L7OrgB0zOdsTWqNbmMavb89vCGM
         QbVGuxWbK6FXCJe80QesSAHJQV6sL6onxid2P+oruluATW/0PQvxRwIAEXulRnh5Ajpm
         3u1pnAz0N0s8g8btscp9BB8nS4x/KtzKLeeXYDzYoUMlWi5bUNlR23tAv5XFd0RkSJJ3
         td0ctgluZ8AOAomEizVCajbFYExMSakXtGiYyee+Y7T4Jz2R2TrD4L04oCBrSeDfj2pD
         8gAWCbbjjuVHBbGUKDoRuMep53QRkh7Wy7IMxPywN6IF+AUelGqz6EyNdwfPQRdxGoia
         KxvQ==
X-Forwarded-Encrypted: i=1; AJvYcCVAiwl7J+8nIHVw53tKAQdJjeCTAuREjmBSH/jg+WIRN6rrPSo82tktwXnRqcyHIOTwjAoKNsT/MZc=@lists.xenproject.org
X-Gm-Message-State: AOJu0Yw8GMlD8JfRGVVwajLPA9L8OBhNNPsaV9TvMj/GClmPAB+4ovQ1
	G8cs/kKVfPGiUfCGe8gBlO9lHBtnuvll4wX4W8SgdWkLwvagoUxvyxC34GOvjJWAyQ==
X-Gm-Gg: AeBDiet1chraqc/RbynST2V1M9tp5LT35KiYhQvVoVw4S6X04o7GOXDL7H6QQsI9SDt
	2ggmSlJ8/OrnHxXkvoyC00VZu6+QpRAMqj4cIMeudy4BgJB2NSOUsHJMF28wmYeZlSYXAX4o/n5
	SzPO8yfMt8Cc7wnGWTCyOQcysi8jL1fWopaCer4c0sOp7u+B5uD21q1lR5F9rJ7KlDYbuI+4uTw
	Ojr7yHNLUSoOv/uE34sd//o0TLsocsEUQqLAwn2h8bUBJOdPVxPepvFg/XcNsLjGfLAk2mpSfVx
	N4t/R2Zjy3dmnakhcHLuLYq09EDb/7igkhS6gkIpwmDAOQGr9qmRyfN63RiTDp2NFObqg/TORcn
	AHOKFiVoqtWuCYILVKxLN4sOhkrkwQ7Y9cwVnzkgfH5ehk763vaxQYo4HiKPKmWSaO+WAcZ95Vd
	qeaB9E1nb+oJ/oZXG5FZEP1c2Ek0bdzgDQ4zbL3XFToYAuSBqg04FtK/Q1AjSiHxj2vKDMij9vW
	jCZY4tK1KdiuUY=
X-Received: by 2002:adf:f04f:0:b0:43d:6787:9931 with SMTP id ffacd0b85a97d-43d67879b95mr1063789f8f.0.1775817947173;
        Fri, 10 Apr 2026 03:45:47 -0700 (PDT)
Message-ID: <1546f5c9-e270-465d-aa0b-4c4c0ec87c8a@suse.com>
Date: Fri, 10 Apr 2026 12:45:45 +0200
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH] arm/its: Decode BASER cacheability field before comparing
To: Mykola Kvach <xakep.amatop@gmail.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>,
 Mykyta Poturai <mykyta_poturai@epam.com>, xen-devel@lists.xenproject.org
References: <dba15db692025c75f8bd3a2c5dab2654eaa4e896.1775801199.git.mykola_kvach@epam.com>
 <0c68ca5e-51d3-42ee-aa27-301ffafefc5f@suse.com>
 <CAGeoDV_S=hQwKyc1aa-X_NZbB2n+QzxUfXpNDcvFehPi8h3adA@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: <CAGeoDV_S=hQwKyc1aa-X_NZbB2n+QzxUfXpNDcvFehPi8h3adA@mail.gmail.com>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
X-purgate-ID: tlsNG-720697/1775817947-AFF29CD1-4DEFFA21/0/0
X-purgate-type: clean
X-purgate-size: 1285

On 10.04.2026 09:08, Mykola Kvach wrote:
> On Fri, Apr 10, 2026 at 9:40 AM Jan Beulich <jbeulich@suse.com> wrote:
>> On 10.04.2026 08:09, Mykola Kvach wrote:
>>> --- a/xen/arch/arm/gic-v3-its.c
>>> +++ b/xen/arch/arm/gic-v3-its.c
>>> @@ -496,7 +496,8 @@ retry:
>>>          }
>>>          attr = regc & BASER_ATTR_MASK;
>>>      }
>>> -    if ( (regc & GITS_BASER_INNER_CACHEABILITY_MASK) <= GIC_BASER_CACHE_nC )
>>> +    if ( ((regc & GITS_BASER_INNER_CACHEABILITY_MASK) >>
>>> +          GITS_BASER_INNER_CACHEABILITY_SHIFT) <= GIC_BASER_CACHE_nC )
>>
>> Are you aware of MASK_EXTR()? This is one of the cases that we have it for.
>> Really all *_SHIFT constants should be purged, as they can be calculated
>> from their *_MASK counterparts (leveraging MASK_{EXTR,INSR}() to keep the
>> code readable).
> 
> I wasn't aware of this macro, thanks. I will take a look.
> 
>> Further, doesn't gicv3_lpi_set_proptable() have the same issue with
>> GICR_PROPBASER_INNER_CACHEABILITY_MASK?
> 
> Fortunately, GIC_BASER_NonShareable is equal to zero, so the condition
> there is not affected.

I fear I don't follow. In

    if ( (reg & GICR_PROPBASER_INNER_CACHEABILITY_MASK) <= GIC_BASER_CACHE_nC )

where does GIC_BASER_NonShareable come into play?

Jan


From xen-devel-bounces@lists.xenproject.org Fri Apr 10 10:50:29 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Fri, 10 Apr 2026 10:50:29 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1278734.1563488 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wB9RP-0000Ag-HB; Fri, 10 Apr 2026 10:50:23 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1278734.1563488; Fri, 10 Apr 2026 10:50: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 1wB9RP-0000AZ-EW; Fri, 10 Apr 2026 10:50:23 +0000
Received: by outflank-mailman (input) for mailman id 1278734;
 Fri, 10 Apr 2026 10:50:22 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <jbeulich@suse.com>) id 1wB9RO-0000AT-ML
 for xen-devel@lists.xenproject.org; Fri, 10 Apr 2026 10:50:22 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wB9RO-00FKW1-2P
 for xen-devel@lists.xenproject.org; Fri, 10 Apr 2026 12:50:22 +0200
Received: from [10.42.69.11] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <jbeulich@suse.com>)
 id 69d8d5e7-2eae-0a2a0a5409dd-0a2a450ba59a-26
 for <xen-devel@lists.xenproject.org>; Fri, 10 Apr 2026 12:50:21 +0200
Received: from [209.85.221.47] (helo=mail-wr1-f47.google.com)
 by tlsNG-42698a.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.0)
 (envelope-from <jbeulich@suse.com>)
 id 69d8d5ed-bca8-0a2a450b0019-d155dd2fccff-3
 for <xen-devel@lists.xenproject.org>; Fri, 10 Apr 2026 12:50:21 +0200
Received: by mail-wr1-f47.google.com with SMTP id
 ffacd0b85a97d-43cf8d550bdso1859510f8f.0
 for <xen-devel@lists.xenproject.org>; Fri, 10 Apr 2026 03:50:21 -0700 (PDT)
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-43d63deba9esm6932343f8f.10.2026.04.10.03.50.20
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Fri, 10 Apr 2026 03:50:21 -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=google header.d=suse.com header.i="@suse.com" header.h="Content-Transfer-Encoding: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=1775818221; x=1776423021; darn=lists.xenproject.org;
        h=content-transfer-encoding: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;
        bh=B+HoP/mMaG5yYZyVjtUnYROQmO400kNler9q5jRv0/g=;
        b=ZPr5Nd3A0VNO1YjMIx3Dmb0zarIK+rEdOWBfCOn9ChOuLMZBRH7Hv8QJsqfhTyqzsA
         PgEnumRhJX1hGpst4wvQYJ+qg6wvIGQJhxp6543N2gyRCBpaFRvd0BVe8lJAXLtzAR+a
         MWSXgnoCLnp2w8L9wfoPkkMWfSBaPi9fp+ENtNGEEVLV2ivDnhwyE3DVc+rHLuCc9/Sj
         fdlwjTnESF0RTr95AxuH2NNFJcXAVfYkJT+bzkENP+mJ7nNfhAYxTEs7UP7d4aUozN9+
         WYl0q7kplekIyf+FaT6zOSQ9XMjgp9EpAHJ7YJxjntgSBY56ovsRcTcGtSUyKM1PY0hC
         XjTw==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20251104; t=1775818221; x=1776423021;
        h=content-transfer-encoding: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;
        bh=B+HoP/mMaG5yYZyVjtUnYROQmO400kNler9q5jRv0/g=;
        b=UDmx4ndXlw4LnHHlbuabGieFLO69xtU1ZaU6IXjoDreZeyZ0plkUbH28CwK8MGWDo2
         P+OVSruv3rBwG2osxLHE0uCK4vO1zMO6hOCgHy6r6L9tkr5zAtEAUmeNF3nsr1uWzlMd
         wwfJpEesaEw5jjWAmGeP4PNRyPruvPPf6wnEwVl1W3AoV2ovUBP0i0XR/B5hIJbosaU2
         FRW+aEjXc9sL5Jb3QOzisy71SCE6mt3HxxyU9BXiGpQ7ohMleIf5Myly2G2JfId/RhH7
         5dirFLLBXIaLJjgS29xgJ0TIPYZTkXWNRlhMko3MJaTpvS+fUpffmAuJds/x7sLDHJhO
         h9XQ==
X-Forwarded-Encrypted: i=1; AJvYcCUqBB09TBIiS2kw5PkJLryvbpSsdOTppoBtGPKg9c6Zrrn7ZFkgb/7VCFP0SNummt3JrbRzc7T4a68=@lists.xenproject.org
X-Gm-Message-State: AOJu0YwLxAe+upk+E4ar8hbmeXd7mRCNep7/OHXNO/9tiMrMzSpusktK
	V1B+YHbMQrNAs5mF2RPNv1bhYmnyZ5dNJpO86bCaF9uQzLN6KS6xOjnCUpqRCZwPbg==
X-Gm-Gg: AeBDies294f6k9WrvsgLhrQnzdwyPE5UaKh1+sn2jl4hYPmjxrL0ztxUX0PFLicPyJ8
	4CWrSYNY3KlfsA0tnWCqTqfiCRXbrB7qLgDKPSnhrafuRzgJmrgZ33MlimMd1l6MXA71K2L2yVX
	4SI+VTdx9wv6YPI2HurRP58jfrYtnOqdDEfwDeRoQgZb18nFUYyl/M/eacOyURt9YN+PksU4/42
	JObhIVJtIxRg318Pk1HFGBvFmhYXIhH8wJCDUJOdNb3gUt8tJd3idtk/Xz/uz8sEbXtyHP17a23
	Kal2J3Jn07tT5QrXo3rAq3DSlkgyp0NCq+SHF0AxinzHDmOkQD/ZLaOBYt9l/KtUtjC9g4K8qF5
	dEk6JYHYOMvjkZXrRlIh0vOXr0xpLLG8ykmhH2RsgrQZjvx/qhyaxqBbru5NNwE8x1KAv2A4R+n
	9y3aF8Tb1afwjnrWFN/Z+QOaIvURRzdfHJgSQVB0wrKMwPyXsIKPGj1ytd7x1qL2T2CilTroWE+
	vtm3fduL755nz8=
X-Received: by 2002:a5d:64c7:0:b0:43c:fbde:310f with SMTP id ffacd0b85a97d-43d642d35d2mr4098591f8f.36.1775818221438;
        Fri, 10 Apr 2026 03:50:21 -0700 (PDT)
Message-ID: <7bdb23f7-fea8-4fbe-bffd-c6f2bf2c373e@suse.com>
Date: Fri, 10 Apr 2026 12:50:19 +0200
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH v1 05/27] xen/riscv: introduce guest riscv,isa string
To: Oleksii Kurochko <oleksii.kurochko@gmail.com>
Cc: Romain Caritey <Romain.Caritey@microchip.com>,
 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.pau@citrix.com>,
 Stefano Stabellini <sstabellini@kernel.org>, xen-devel@lists.xenproject.org
References: <cover.1773157782.git.oleksii.kurochko@gmail.com>
 <007c0a0243ac7ff1d1ab3faa4ebcdd6fcd14e485.1773157782.git.oleksii.kurochko@gmail.com>
 <efe5b1f5-29a0-43a8-92f8-cc20bd922e62@suse.com>
 <d66424c9-f156-4bd8-9547-46d181aa95f3@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: <d66424c9-f156-4bd8-9547-46d181aa95f3@gmail.com>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 7bit
X-purgate-ID: tlsNG-42698a/1775818221-EED4F2A1-620E2A1B/0/0
X-purgate-type: clean
X-purgate-size: 1264

On 10.04.2026 12:24, Oleksii Kurochko wrote:
> On 4/1/26 3:49 PM, Jan Beulich wrote:
>> On 10.03.2026 18:08, Oleksii Kurochko wrote:
>>> +#define MAX_GUEST_ISA_STR_LEN 256
>>> +char guest_isa_str[MAX_GUEST_ISA_STR_LEN];
>>
>> __ro_after_init?
>>
>> Yet then - can this really be a global? Isn't the set of extensions
>> available to a guest a per-guest property, i.e. a global could at best
>> represent an upper bound on features?
> 
> At least, for now I think it is okay just to use global guest riscv,isa 
> for all the domains. From my point of view if Xen doesn't support some 
> extension to be used by guest so then should be responsible to generate 
> proper riscv,isa.
> 
> It probably make sense to have riscv,isa per guest but then we still 
> will want to parse this passed riscv,isa and check what Xen supports and 
> what not, what looks like a double work a little bit. Probably it is the 
> best one option and if riscv,isa isn't provided then just use that one 
> generated by Xen.

My take is: Have data arrangement be as it wants to be in the end (i.e.
here: record what ought to be per guest as per-guest data). All guests
using the same value for now is a fair restriction until things have
progressed more.

Jan


From xen-devel-bounces@lists.xenproject.org Fri Apr 10 10:56:55 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Fri, 10 Apr 2026 10:56:55 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1278747.1563499 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wB9Xe-0000lr-6M; Fri, 10 Apr 2026 10:56:50 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1278747.1563499; Fri, 10 Apr 2026 10:56: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 1wB9Xe-0000lk-24; Fri, 10 Apr 2026 10:56:50 +0000
Received: by outflank-mailman (input) for mailman id 1278747;
 Fri, 10 Apr 2026 10:56:49 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <jbeulich@suse.com>) id 1wB9Xd-0000le-3R
 for xen-devel@lists.xenproject.org; Fri, 10 Apr 2026 10:56:49 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wB9Xc-00FLlY-2H
 for xen-devel@lists.xenproject.org; Fri, 10 Apr 2026 12:56:48 +0200
Received: from [10.42.69.5] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <jbeulich@suse.com>)
 id 69d8d768-e002-0a2a0a5209dd-0a2a45059b16-34
 for <xen-devel@lists.xenproject.org>; Fri, 10 Apr 2026 12:56:47 +0200
Received: from [209.85.128.45] (helo=mail-wm1-f45.google.com)
 by tlsNG-c201ff.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.0)
 (envelope-from <jbeulich@suse.com>)
 id 69d8d76f-3760-0a2a45050019-d155802de8e9-3
 for <xen-devel@lists.xenproject.org>; Fri, 10 Apr 2026 12:56:47 +0200
Received: by mail-wm1-f45.google.com with SMTP id
 5b1f17b1804b1-488c21c636dso11085195e9.2
 for <xen-devel@lists.xenproject.org>; Fri, 10 Apr 2026 03:56:47 -0700 (PDT)
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-43d63e50015sm7087570f8f.27.2026.04.10.03.56.46
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Fri, 10 Apr 2026 03:56:46 -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=google header.d=suse.com header.i="@suse.com" header.h="Content-Transfer-Encoding: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=1775818607; x=1776423407; darn=lists.xenproject.org;
        h=content-transfer-encoding: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;
        bh=THSy4Zb1Kagw3dQg2/Wk7y0MCZejmxuh1uOt5CLvbEI=;
        b=gZJVtEMnygidYzBFreoA1PGFeqw+abg7hCcZyHhdpFV8LwY0q80NZEEuAzJK1KL80m
         0gXixT2f6mWyT00roGtlh+1ofPMOydFbySrcHzrp3NMxe+8nTGw3DBg3cJBtwhEPVB4L
         92nKqMNVu3meLUykw4GxykxRBd9dm3C/72jrEqwj7Tr+JTvS8lta/j8nrT66HMV3Yt9i
         75f6YOKjO18IyvgVg2Jv5w5HuqHwtSrAmVlsyadKfsdqJk3tV3yUE4PIWjeUR3cQbQXT
         40QjQCDEO9g+gzd4xqeYJXds30iEgDyYrLsV/hqbpcyl4hTx3vpGoIy4BysuHKHDAfiX
         nxeQ==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20251104; t=1775818607; x=1776423407;
        h=content-transfer-encoding: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;
        bh=THSy4Zb1Kagw3dQg2/Wk7y0MCZejmxuh1uOt5CLvbEI=;
        b=Z1fsx5THuWDFtQUUG5gPn1LZ9sqBLLn5ksbpi+TK0DlR9xcJ0DtUctP3sPZzoUPSqW
         IOZY4Jqd65WKThEzIq/IId9MEgIx4dhcnjj/K51TbJteGb2GPOfHCszCNC9AGJMPAxoN
         zi2VDJTJ2njtOhZF5IIdezuOJlXvbPy6Udwmq8fTcQHImKQTYDxMeRuEt+Z/MBN07HLm
         UYSXxNKVP96JMKAzUlLi2dlHaF8FB5fLnSEfONFyXhLC7iSZUmLvrLpqhIRvsZG3E4uY
         vkmzwpjCTW1uYo+16/GEMc2B/lX0YcUncR6g6FYFDxxaonYMQ43TIG1I6aXIhRGegUxS
         zvSw==
X-Forwarded-Encrypted: i=1; AJvYcCVyN8FcE+lCuXkXZvSuOq8odh1ccYG1SjYDLbt2YQwLZ+VZMpKzqIsl2rBB5dDsoYoY5FJ4e4LytQg=@lists.xenproject.org
X-Gm-Message-State: AOJu0Ywxnlxm0/loMOv7aOJBxea0sVqSnPbMuxpPpg1K0Qix4mjL36yX
	ow6gfSx/pO6FiJ+13kmfznkHexppBBpx7uMhAb7G7Z2kgm+/EVo1zx6yx56fuUgUdw==
X-Gm-Gg: AeBDietSGY4JZmQTGJNmvLkOEG5rMJADABHmTljEgbrJ0UCrxZqwBfRmrKOFjyhyulf
	SXitLlwF7SFRd3N74bv3MglEs5ZdQxfUEi9zQUq9jwCx+Jz3n7zHimXj5fPAeuZOWfErp/ry3z1
	GWA9SzP3fMkKYrcZHMjXsejzUMXIWeES4m/sgv9QXv6cizR2PC0HqNfrw20/3F4OsVjCVx8UZ63
	m+QL47my5RNEQh1n8fbao/zIBDPd9SKKwvcNeGPkoKX7zM35sYTegwusw1+TI8koy5Hkbi6J9xe
	0sf7wZstino/YiJxFu8j9IQb+lhOGToRy0D3dRiNjgsGLdGOyJ23rJy/jhGaOo4+0d0rNUuww4k
	bp4C0Au3IyV1whq+EwjBaEjp4pPJB6f2xuayQNpuPtAHVPAxULO6XARX5CLfQbMnTw4JvCTFtna
	1rFRRAMjfcasLAHqqHlD38QhSyEcArtLzq1l6fSkzyeBkcixTWLwwxGMp4fU7aEwsw15joxnKtc
	mYmiF3bF4xh4JU=
X-Received: by 2002:a05:600c:8b27:b0:486:f634:ef1 with SMTP id 5b1f17b1804b1-488d687664emr29959055e9.17.1775818607284;
        Fri, 10 Apr 2026 03:56:47 -0700 (PDT)
Message-ID: <0aaca0d3-c5e0-4344-9679-2c03a96bbdfd@suse.com>
Date: Fri, 10 Apr 2026 12:56:45 +0200
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH v2] xen/common: llc-coloring: Fix off-by-one in
 parse_color_config()
To: Michal Orzel <michal.orzel@amd.com>
Cc: Andrew Cooper <andrew.cooper3@citrix.com>,
 Anthony PERARD <anthony.perard@vates.tech>, xen-devel@lists.xenproject.org,
 Julien Grall <julien@xen.org>, =?UTF-8?Q?Roger_Pau_Monn=C3=A9?=
 <roger.pau@citrix.com>, Stefano Stabellini <sstabellini@kernel.org>,
 Luca Fancellu <luca.fancellu@arm.com>
References: <20260410082955.42038-1-michal.orzel@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: <20260410082955.42038-1-michal.orzel@amd.com>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 7bit
X-purgate-ID: tlsNG-c201ff/1775818607-3312596F-917F87C8/0/0
X-purgate-type: clean
X-purgate-size: 775

On 10.04.2026 10:29, Michal Orzel wrote:
> The check uses (*num_colors + (end - start + 1)) >= max_num_colors, which
> rejects a configuration where exactly max_num_colors colors are specified.
> For example, if max_num_colors is 4 and *num_colors is 0, a range "0-3"
> gives (end - start + 1) = 4, and (0 + 4) >= 4 is true, incorrectly
> returning -EINVAL.
> 
> Fix this by switching the overflow condition to the state before commit
> cba8a584de17 that regressed the behavior (i.e. don't add 1).
> 
> Fixes: cba8a584de17 ("llc-coloring: improve checking while parsing")
> Signed-off-by: Michal Orzel <michal.orzel@amd.com>
> Reviewed-by: Luca Fancellu <luca.fancellu@arm.com>

I'm sorry for the breakage:
Reviewed-by: Jan Beulich <jbeulich@suse.com>

Jan


From xen-devel-bounces@lists.xenproject.org Fri Apr 10 11:01:09 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Fri, 10 Apr 2026 11:01:09 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1278758.1563507 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wB9bn-0002Vq-K6; Fri, 10 Apr 2026 11:01:07 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1278758.1563507; Fri, 10 Apr 2026 11:01: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 1wB9bn-0002Vj-HT; Fri, 10 Apr 2026 11:01:07 +0000
Received: by outflank-mailman (input) for mailman id 1278758;
 Fri, 10 Apr 2026 11:01:06 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <xakep.amatop@gmail.com>) id 1wB9bm-0002Vd-N2
 for xen-devel@lists.xenproject.org; Fri, 10 Apr 2026 11:01:06 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wB9bm-008Z9e-2o
 for xen-devel@lists.xenproject.org; Fri, 10 Apr 2026 13:01:06 +0200
Received: from [10.42.69.8] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <xakep.amatop@gmail.com>)
 id 69d8d86f-2eae-0a2a0a5409dd-0a2a45088328-14
 for <xen-devel@lists.xenproject.org>; Fri, 10 Apr 2026 13:01:06 +0200
Received: from [209.85.208.178] (helo=mail-lj1-f178.google.com)
 by tlsNG-c1860d.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.0)
 (envelope-from <xakep.amatop@gmail.com>)
 id 69d8d871-fab6-0a2a45080019-d155d0b2b4c8-3
 for <xen-devel@lists.xenproject.org>; Fri, 10 Apr 2026 13:01:06 +0200
Received: by mail-lj1-f178.google.com with SMTP id
 38308e7fff4ca-38a01c80c34so14463321fa.0
 for <xen-devel@lists.xenproject.org>; Fri, 10 Apr 2026 04:01:05 -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=20251104 header.d=gmail.com header.i="@gmail.com" header.h="Content-Transfer-Encoding:Cc:To:Subject:Message-ID:Date:From:In-Reply-To:References:MIME-Version"
ARC-Seal: i=1; a=rsa-sha256; t=1775818865; cv=none;
        d=google.com; s=arc-20240605;
        b=ETk4P9Cu8A7OjaM+1y5/p5tz4phqTZPRnB/sZ/U/ZbUA1+9HBctPkbcRFsvJ2+Z7iS
         l8AnuNcO5QBDx3vS/Oy7LxHfW0ucjbahIx/kUYy1+FFE4l94iOIY/zGctswGy4H+zJaa
         UdVI/VUTuXgVmk7VEgrpsD9lzBxKKynpXfSRU4iuW0yTf4gkucFtJiAKt+yQBKn8I3Zp
         MPsygFwfEO5YmzQtdkttQDpsG9FNJi8OUKs38NJEQGvwkxFLIN7NrvRLfa4EsW00ljB5
         N+6D49+BN/3LcaivLmh4I6q6SD14MEw3rgjTdxE0GPeKYs7w22juniOib2I8QwhncXcQ
         rc0Q==
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20240605;
        h=content-transfer-encoding:cc:to:subject:message-id:date:from
         :in-reply-to:references:mime-version:dkim-signature;
        bh=VYleH/6bNS3B7Eb36TZNMHcXFfh57t+k1jDvOHBcA/Y=;
        fh=8fc33Cv1q2KnWLt7grJfC+5AasR3NZBdZsvhe/UQtIM=;
        b=MQ01DX4m+Kjw+82fm2gyZ6s1SXj4nA7NLe5+yX+El2MPxtq3x8Sagb1b8WT1sM8qdj
         Vkw/OLztqhBAOO3Xz2tYRF5kKNq+0NuD5G6DFHVZN24XGNLrE7IsJMTHfyCgVYM3agtj
         mokByVxMfpZD1kmX4Se4V42qK0D0XVJ1hWN8QsWCuYl4yHDmiqPfHz1ltGB5VlI1/oBf
         lAPy9rlkePEUGrtT2XazJHIi/JUNIzw2uxktvTCTf4iM1NKcUqOzxcsDMgCTqoZf61lQ
         MwBVVpWpyOYnjZzpRokA0t8RXrarxN07LB0ODGuDYLiYCUupiPMGKgEujvQ+HDiIS0ey
         yPdQ==;
        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=20251104; t=1775818865; x=1776423665; darn=lists.xenproject.org;
        h=content-transfer-encoding:cc:to:subject:message-id:date:from
         :in-reply-to:references:mime-version:from:to:cc:subject:date
         :message-id:reply-to;
        bh=VYleH/6bNS3B7Eb36TZNMHcXFfh57t+k1jDvOHBcA/Y=;
        b=cD/uoPLdWg3qHi46aJxGZYmQiigIvxlmQ6L7M2WP4hNWd+WVjvngXW9W7Jg2lxmK/H
         NfVW2oT8ppRGyACy3s1I33Fd/frLm/TEuCzFDbJanRE1anNoGMtmi7tsYmDF+9b5O4Bo
         R4thmo+ltbTZaMLzj3B+rLxjyEGibDH4OM/FB1EoPNAzIC5GXVko1EgHDGMau5VZrj+w
         oJibaBtM1jT/JpJ0CBb5jBtYTmeZ9/wHxHQbUt/67Wk7l5YNz/OTJmqmlBrEa/H0qOsu
         dF2Wh7K5X90P6akCGP5vT5pluY1LrLW7cz4GeSfdhA5eUVnnln2N3eKpZHChRSQNwRJE
         0n5g==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20251104; t=1775818865; x=1776423665;
        h=content-transfer-encoding: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;
        bh=VYleH/6bNS3B7Eb36TZNMHcXFfh57t+k1jDvOHBcA/Y=;
        b=jGelZl5T+1573wNFR3hLTnJt7Sg4ijOqBXEPfcbQGlLnWa/iGCT+KHSNni7k4ypEBA
         +FwCwWNpBWq/4IqnK7Cc/0iEZQvBOTuiBdtFIP7MjF8b9h4M2rNfNNk+QT8/XEVnVzaq
         8LeMUAO52+N6Lq25r8ZFL5+3HLTO10N2c3yHa/ovyRsopHji8PwzwsvvX+uMXkPKP7W+
         Dy6JiFDCw8NG4sSKLY5QPRmbilKHQEUmGh8pyCgIHlYX8N0DPOgwIaeQ+buBoDjLTE0J
         +73ElW6N1D/OC/XFQErL/+tPzw0JhdSaFfjDDuvu3Lxc0p4q8eR11qoAu4B+Hw/Q9s7m
         iYzg==
X-Forwarded-Encrypted: i=1; AJvYcCXjeceSSbyNdtDj1hDIesCFh0PNDJZUNbDwo0qC43c2jnYo/DNTt08Lg4hy40Mts1IVwY4n8YkGVnA=@lists.xenproject.org
X-Gm-Message-State: AOJu0Yyg3d1/dA1x58rRrM8t8glVI5jUBn2Cu/aYXM8nsOIyBIaY8PUX
	odBj4ewUXSBcLPmOj/rABLrxWm724crpBcEX42TKihxgEBLwfH4yzKLgqo9aNkvjyTM1Axl0KOJ
	QNAcoON8Wz9jc2mkpjpduLMpj1CbUlL8=
X-Gm-Gg: AeBDievxXEaIy1JDwuuaDapm6cr5u58ZRvWwl7mvupBjbvQab5IYQdeLK7q77LKROcf
	r9UOGHT+TWKpFlVLJTfKpDmrBzG7Tyv0OrHDDy1iU6z3zKqT/W1txEIkqZy4OraWHyvPswIEKPA
	+Itnsboxxoh6kLLHOkdigCBD3DRbTsBY3KHPt4f3YPDVQQzIoIPU9hGcijxp9lnkpbspXGh3DHv
	Vt6Ww4Pe9AgxWy3JCXjqMugIZQ4Zy03a4KCLraN/kshJpUbGUl8UzLQyevD8Tbjk0Rezkm37Ikn
	v/tt7g==
X-Received: by 2002:a05:651c:503:b0:38c:374f:420d with SMTP id
 38308e7fff4ca-38e4bbf4306mr7718891fa.2.1775818864548; Fri, 10 Apr 2026
 04:01:04 -0700 (PDT)
MIME-Version: 1.0
References: <dba15db692025c75f8bd3a2c5dab2654eaa4e896.1775801199.git.mykola_kvach@epam.com>
 <0c68ca5e-51d3-42ee-aa27-301ffafefc5f@suse.com> <CAGeoDV_S=hQwKyc1aa-X_NZbB2n+QzxUfXpNDcvFehPi8h3adA@mail.gmail.com>
 <1546f5c9-e270-465d-aa0b-4c4c0ec87c8a@suse.com>
In-Reply-To: <1546f5c9-e270-465d-aa0b-4c4c0ec87c8a@suse.com>
From: Mykola Kvach <xakep.amatop@gmail.com>
Date: Fri, 10 Apr 2026 14:00:52 +0300
X-Gm-Features: AQROBzAKTKxMpShjUBMlXhoA5Zo2soLNnoZXW038yMahzFVpBODqR0SvXpxsQwQ
Message-ID: <CAGeoDV8jUo7mamPbuDPMRrouG85aEAm4PNoOwoXZPeEe+Fmdrw@mail.gmail.com>
Subject: Re: [PATCH] arm/its: Decode BASER cacheability field before comparing
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>, 
	Mykyta Poturai <mykyta_poturai@epam.com>, xen-devel@lists.xenproject.org
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: quoted-printable
X-purgate-ID: tlsNG-c1860d/1775818866-76B4C497-A20A4A98/0/0
X-purgate-type: clean
X-purgate-size: 1769

On Fri, Apr 10, 2026 at 1:45=E2=80=AFPM Jan Beulich <jbeulich@suse.com> wro=
te:
>
> On 10.04.2026 09:08, Mykola Kvach wrote:
> > On Fri, Apr 10, 2026 at 9:40=E2=80=AFAM Jan Beulich <jbeulich@suse.com>=
 wrote:
> >> On 10.04.2026 08:09, Mykola Kvach wrote:
> >>> --- a/xen/arch/arm/gic-v3-its.c
> >>> +++ b/xen/arch/arm/gic-v3-its.c
> >>> @@ -496,7 +496,8 @@ retry:
> >>>          }
> >>>          attr =3D regc & BASER_ATTR_MASK;
> >>>      }
> >>> -    if ( (regc & GITS_BASER_INNER_CACHEABILITY_MASK) <=3D GIC_BASER_=
CACHE_nC )
> >>> +    if ( ((regc & GITS_BASER_INNER_CACHEABILITY_MASK) >>
> >>> +          GITS_BASER_INNER_CACHEABILITY_SHIFT) <=3D GIC_BASER_CACHE_=
nC )
> >>
> >> Are you aware of MASK_EXTR()? This is one of the cases that we have it=
 for.
> >> Really all *_SHIFT constants should be purged, as they can be calculat=
ed
> >> from their *_MASK counterparts (leveraging MASK_{EXTR,INSR}() to keep =
the
> >> code readable).
> >
> > I wasn't aware of this macro, thanks. I will take a look.
> >
> >> Further, doesn't gicv3_lpi_set_proptable() have the same issue with
> >> GICR_PROPBASER_INNER_CACHEABILITY_MASK?
> >
> > Fortunately, GIC_BASER_NonShareable is equal to zero, so the condition
> > there is not affected.
>
> I fear I don't follow. In
>
>     if ( (reg & GICR_PROPBASER_INNER_CACHEABILITY_MASK) <=3D GIC_BASER_CA=
CHE_nC )
>
> where does GIC_BASER_NonShareable come into play?

Sorry, I missed that part of your comment; clearly, I haven't had enough
coffee yet.

You are right: gicv3_lpi_set_proptable() has the exact same issue and
needs fixing too. Thanks for catching that.

It is interesting that we did not hit this during GICv4 testing.


Best regards,
Mykola

>
> Jan


From xen-devel-bounces@lists.xenproject.org Fri Apr 10 11:19:16 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Fri, 10 Apr 2026 11:19:16 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1278773.1563516 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wB9tG-0004YV-03; Fri, 10 Apr 2026 11:19:10 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1278773.1563516; Fri, 10 Apr 2026 11:19: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 1wB9tF-0004YO-TI; Fri, 10 Apr 2026 11:19:09 +0000
Received: by outflank-mailman (input) for mailman id 1278773;
 Fri, 10 Apr 2026 11:19:08 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92) id 1wB9tE-0004YI-7s
 for xen-devel@lists.xenproject.org; Fri, 10 Apr 2026 11:19:08 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wB9tD-00FQAC-KJ
 for xen-devel@lists.xenproject.org; Fri, 10 Apr 2026 13:19:07 +0200
Received: from [10.42.69.4] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <oleksii.kurochko@gmail.com>)
 id 69d8dca2-5cb7-0a2a0a5109dd-0a2a4504de42-10
 for <xen-devel@lists.xenproject.org>; Fri, 10 Apr 2026 13:19:07 +0200
Received: from [209.85.208.42] (helo=mail-ed1-f42.google.com)
 by tlsNG-ebf023.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.0)
 (envelope-from <oleksii.kurochko@gmail.com>)
 id 69d8dcab-bb33-0a2a45040019-d155d02ac84f-3
 for <xen-devel@lists.xenproject.org>; Fri, 10 Apr 2026 13:19:07 +0200
Received: by mail-ed1-f42.google.com with SMTP id
 4fb4d7f45d1cf-66bf6aa4858so3409052a12.2
 for <xen-devel@lists.xenproject.org>; Fri, 10 Apr 2026 04:19:07 -0700 (PDT)
Received: from [192.168.1.6] (user-109-243-69-121.play-internet.pl.
 [109.243.69.121]) by smtp.gmail.com with ESMTPSA id
 4fb4d7f45d1cf-670703f1104sm526646a12.7.2026.04.10.04.19.04
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Fri, 10 Apr 2026 04:19: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=20251104 header.d=gmail.com header.i="@gmail.com" header.h="Content-Transfer-Encoding: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=20251104; t=1775819947; x=1776424747; darn=lists.xenproject.org;
        h=content-transfer-encoding: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;
        bh=M6HXw2j7EFq6emaE5cqcwzAmgBAIXk70U16icM1P35o=;
        b=KKaBzheXEdIVGxLznLRO+TziKv1ggDPJNf6oWU8ne0jVWGt65xyza9uB0gwLP6czZK
         oqUjyg66g8QIB0uvTzBbGIlfqlz/lRNYGPBr3uNb+O2jcJww6hVbISpRUGGKx6igz1nX
         ONFehADS1PqBDfVSea2YuTY50mnZQcMaG0k1dOG+6tN5EkE8jJWqzSFKrGjPh9EEGHuN
         GTJB/3QkGpZiTX37suN9GHyZVgqDeTrRaCa88+S6tLw69uA7TDtJfR8kuf/9xDXe2z3p
         0LNXZK1JETGa8a/zVmyPKml6+C28/sNMF1mMSrIeGO9LbSa5OVTu+T8N7PV3b90hGRAG
         yxTA==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20251104; t=1775819947; x=1776424747;
        h=content-transfer-encoding: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;
        bh=M6HXw2j7EFq6emaE5cqcwzAmgBAIXk70U16icM1P35o=;
        b=fx8SnChmmeKHCffKsByKMuC97T3XUQrEHhiwXp/3w0ExoB2ZuGDWTlu/GSKo54Zrov
         6x12p2mHDMP7VnSoy3z9gVF0HmyQqWemDJ5Jpl+oEO2eKRYBmlJ8w7M1SQulE/ilcSLf
         3H8+koJ84zgayMH6niVgjid9FyJG9MKon/aLK/FW+bumYOET9lZXjsYeLU8ooKgs+n4c
         skxkbjkkFV93J8b2opTRo/Fc0EFdcl7Og8wmX4yuIXlLlxYbgX0AlshkN+PpJSntogN3
         PV4VqGKQ1B8rGRM6/s8T/Y1p9Qr9oj2Qe5P8tPDkGXDlPehpaf7ssOa75Xtmnb3Xv5QR
         0G1A==
X-Forwarded-Encrypted: i=1; AJvYcCWrZkOdZG0TAMhSnSyZDgeuG+OXqkeYB6YN6xnPEIaHJnSuK0JRn9uPYVzDyBeseJNOftVfALa0R04=@lists.xenproject.org
X-Gm-Message-State: AOJu0YzxJTDpDTO0fnIMhve5MpvEscLinj1xzPAW6UyNSjLp3qdOxrYK
	fbXPFk7s0IFinXo6y7n00Ir2Riq8lV7ET/NzQKyKzYN/PQif5zy0PMD0
X-Gm-Gg: AeBDieuue1WLaMt42tLb2eQQ9f8BUTpwL+l/7FJ/Lx6FCLvEBjlQNuMncmgdWHFX6/i
	wlNFExdyogZr3tgtGJwxiiiN5bw/zW0a9ns1krYBohX6jh0ul9YRVJbZpOmC3ZV3SXQPMyfOlHf
	dY2w65AhpKZMuUwSrpEkWnilEkjMi36yvQxPf5wxL/LuCUpBELpxXo/1b8U/7nWbrquCFMEktJe
	lonNHlcuCjFuGu9L/IK9S3wuMEZB/ibGZHbEejQbTi22QwCcl2u6V6UGtVZVDOSQi/4Lhm6wONt
	HmWCqxalUSwbMNmP9J2vYuU492/nQF0PDoBFNYW0DiKKBBwJR0thCjwWVNX5SMIEMuvY5//TJCa
	j5heiEJZFT3WY2RQthKZM2sK7r2mi0PiE5adclA7Rl+RR/+ZvooO6WpF7IbfCqgaAmjSrvNUqtj
	93JmJ50lRJ/g+TucDTIeSGk8+wtblS4gVf3dz+hXEy6EDZHk+km0HyfCbi6eqz1UhjbWLWL/+LJ
	bJntKt45BcqdQ==
X-Received: by 2002:a05:6402:3051:10b0:670:8b30:a6cc with SMTP id 4fb4d7f45d1cf-6708b30a7c1mr910437a12.26.1775819946601;
        Fri, 10 Apr 2026 04:19:06 -0700 (PDT)
Message-ID: <147735e4-cd03-4efa-8981-3f29e15d5e6b@gmail.com>
Date: Fri, 10 Apr 2026 13:19:03 +0200
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH v1 06/27] xen/riscv: implement make_cpus_node()
To: Jan Beulich <jbeulich@suse.com>
Cc: Romain Caritey <Romain.Caritey@microchip.com>,
 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.pau@citrix.com>,
 Stefano Stabellini <sstabellini@kernel.org>, xen-devel@lists.xenproject.org
References: <cover.1773157782.git.oleksii.kurochko@gmail.com>
 <fd64b8526a23e9d7775b9b48c5a933b0673c4fba.1773157782.git.oleksii.kurochko@gmail.com>
 <7505a281-b481-4f3a-a7df-d8c234f28279@suse.com>
Content-Language: en-US
From: Oleksii Kurochko <oleksii.kurochko@gmail.com>
In-Reply-To: <7505a281-b481-4f3a-a7df-d8c234f28279@suse.com>
Content-Type: text/plain; charset=UTF-8; format=flowed
Content-Transfer-Encoding: 7bit
X-purgate-ID: tlsNG-ebf023/1775819947-3353351B-0EDDE945/10/73395122804
X-purgate-type: spam
X-purgate-size: 4313



On 4/1/26 4:11 PM, Jan Beulich wrote:
> On 10.03.2026 18:08, Oleksii Kurochko wrote:
>> --- a/xen/arch/riscv/Makefile
>> +++ b/xen/arch/riscv/Makefile
>> @@ -1,6 +1,7 @@
>>   obj-y += aplic.o
>>   obj-y += cpufeature.o
>>   obj-y += domain.o
>> +obj-y += domain-build.o
>>   obj-$(CONFIG_EARLY_PRINTK) += early_printk.o
>>   obj-y += entry.o
>>   obj-y += guestcopy.o
> 
> Doesn't this belong in patch 02? And then domain-build.init.o?

Yes, it should be part of patch 02. Made a mistake during splitting.

> 
>> --- a/xen/arch/riscv/domain-build.c
>> +++ b/xen/arch/riscv/domain-build.c
>> @@ -3,8 +3,10 @@
>>   #include <xen/fdt-domain-build.h>
>>   #include <xen/fdt-kernel.h>
>>   #include <xen/init.h>
>> +#include <xen/libfdt/libfdt.h>
>>   #include <xen/sched.h>
>>   
>> +#include <asm/cpufeature.h>
>>   #include <asm/current.h>
>>   #include <asm/guest_access.h>
>>   
>> @@ -44,3 +46,109 @@ int __init construct_domain(struct domain *d, struct kernel_info *kinfo)
>>   
>>       return 0;
>>   }
>> +
>> +int __init make_cpus_node(const struct domain *d, void *fdt)
>> +{
>> +    int res;
>> +    const struct dt_device_node *cpus = dt_find_node_by_path("/cpus");
>> +    unsigned int cpu;
>> +    u32 timebase_frequency;
> 
> uint32_t please.
> 
>> +    bool frequency_valid;
>> +    uint32_t *next_phandle = &((struct domain *)d)->arch.next_phandle;
> 
> No casting away of const, please.
> 
>> +    dt_dprintk("Create cpus node\n");
>> +
>> +    if ( !cpus )
>> +    {
>> +        dprintk(XENLOG_ERR, "Missing /cpus node in the device tree?\n");
>> +        return -ENOENT;
>> +    }
>> +
>> +    frequency_valid = dt_property_read_u32(cpus, "timebase-frequency",
>> +                                           &timebase_frequency);
>> +
>> +    res = fdt_begin_node(fdt, "cpus");
>> +    if ( res )
>> +        return res;
>> +
>> +    res = fdt_property_cell(fdt, "#address-cells", 1);
>> +    if ( res )
>> +        return res;
>> +
>> +    res = fdt_property_cell(fdt, "#size-cells", 0);
>> +    if ( res )
>> +        return res;
>> +
>> +    if ( frequency_valid )
>> +        res = fdt_property_cell(fdt, "timebase-frequency", timebase_frequency);
> 
> Handing through a property directly makes me wonder how that's going to
> fit with migration. I understand migration may not even be a mid-term
> goal, but still.

Do you mean if I will set timebase-frequency = X for guest cpu node and 
then this guest will migrate to h/w where timebase-frequency is Y, so we 
will have unsynced timebase-frequency?

Migration between hosts with differing timebase-frequency would require 
either (a) restricting migration pools to frequency-matched hosts (for 
example, KVM checks if timebase-frequency isn't different here:
https://elixir.bootlin.com/linux/v6.19.11/source/arch/riscv/kvm/vcpu_timer.c#L200), 
or (b) trap-and-emulate of time CSR reads to scale the virtual timer.

I think so as unlike ARM (which has CNTFRQ_EL0 writable by EL2, letting 
the hypervisor normalize the frequency it presents), RISC-V has no 
hypervisor-controlled frequency register. The guest reads 
timebase-frequency from DT exactly once and trusts it forever. There's 
no in-guest mechanism to update it post-boot. (at least, I don't see now 
how to do that based on the spec)


> 
>> +    for ( cpu = 0; cpu < d->max_vcpus; cpu++ )
>> +    {
>> +        char buf[64];
>> +        uint32_t reg = cpu_to_fdt32(cpu);
>> +
>> +        snprintf(buf, sizeof(buf), "cpu@%u", cpu);
>> +        res = fdt_begin_node(fdt, buf);
>> +        if ( res )
>> +            return res;
>> +
>> +        res = fdt_property(fdt, "reg", &reg, sizeof(reg));
>> +        if ( res )
>> +            return res;
>> +
>> +        res = fdt_property_string(fdt, "status", "okay");
>> +        if ( res )
>> +            return res;
>> +
>> +        res = fdt_property_string(fdt, "compatible", "riscv");
>> +        if ( res )
>> +            return res;
>> +
>> +        BUILD_BUG_ON((sizeof("riscv,") + sizeof_field(struct gstage_mode_desc, name) + 1) >= sizeof(buf));
> 
> Nit: Overlong line. Also, why +1? The name field has to include a nul, or
> else ...
Agree, +1 looks wrong here.

Thanks.

~ Oleksii



From xen-devel-bounces@lists.xenproject.org Fri Apr 10 11:30:27 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Fri, 10 Apr 2026 11:30:27 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1278791.1563525 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wBA3z-0007LF-2K; Fri, 10 Apr 2026 11:30:15 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1278791.1563525; Fri, 10 Apr 2026 11:30: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 1wBA3y-0007L7-Ux; Fri, 10 Apr 2026 11:30:14 +0000
Received: by outflank-mailman (input) for mailman id 1278791;
 Fri, 10 Apr 2026 11:30:14 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <xakep.amatop@gmail.com>) id 1wBA3y-0007Kx-1I
 for xen-devel@lists.xenproject.org; Fri, 10 Apr 2026 11:30:14 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wBA3w-00CmGW-Tc
 for xen-devel@lists.xenproject.org; Fri, 10 Apr 2026 13:30:12 +0200
Received: from [10.42.69.9] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <xakep.amatop@gmail.com>)
 id 69d8df41-5cb7-0a2a0a5109dd-0a2a4509a49e-18
 for <xen-devel@lists.xenproject.org>; Fri, 10 Apr 2026 13:30:12 +0200
Received: from [209.85.208.172] (helo=mail-lj1-f172.google.com)
 by tlsNG-bad1c0.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.0)
 (envelope-from <xakep.amatop@gmail.com>)
 id 69d8df44-bf79-0a2a45090019-d155d0acc0b3-3
 for <xen-devel@lists.xenproject.org>; Fri, 10 Apr 2026 13:30:12 +0200
Received: by mail-lj1-f172.google.com with SMTP id
 38308e7fff4ca-38dd5f28a4cso16966511fa.2
 for <xen-devel@lists.xenproject.org>; Fri, 10 Apr 2026 04:30:12 -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=20251104 header.d=gmail.com header.i="@gmail.com" header.h="Content-Transfer-Encoding:Cc:To:Subject:Message-ID:Date:From:In-Reply-To:References:MIME-Version"
ARC-Seal: i=1; a=rsa-sha256; t=1775820612; cv=none;
        d=google.com; s=arc-20240605;
        b=Vqg0adeastywaMHpoZaJGbYao6nxd4hNPFUZTsSYItNIyiga1D9NStvKNiv/vpXiSj
         gWiRQ/4ivS/EIn3FASrVubdEYGWh2HfTe5Hepsl8GfeghT29wpQ2oxELbS3MsJMJAPRz
         vn6waumH8yGnKuDnSxAsyyGSvxYPZSZk+rBmXYG3VFvAaalZ754UcfAC2QiV2qfrgfP8
         zxdme+E3u6sGHiQAdUE/3W9COMJQxCEOnvHhyfWOb0efEg58CQwoS+gF0DJbkXjtwNXB
         YOFc/YwAh4PZF9yuLS6qQOQrC5hbwiQINg4AlTJRjdR33bJEtFvz4DLnKCuSxTunLC37
         l79Q==
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20240605;
        h=content-transfer-encoding:cc:to:subject:message-id:date:from
         :in-reply-to:references:mime-version:dkim-signature;
        bh=o8aKtIfyTS7NnNaF2VcHdJIwhnf3j2RavzseU7nAs14=;
        fh=iJqDSrm47fKcrqsUOrnMp/75QLLg5ereb854C+E7XwE=;
        b=GDLRxnWy92x2Dz7BWAH9W9ipEPFs3FGIy6L1RkVHy1T9NHyYr42cFOWqUN6/WVsDGb
         8C8coZbtLwzzU5yYWLxsYQameWUOjtmpFZrOwxRG+poR0GKZt/CRNTr3FXP/bpCeaavq
         SQKE/VrFbfGQCtb8QqZjceHGjLbPwDbzlbtvjubk1dvJ3kHaBRGgTSNoB19IjzchTBTR
         yKTtRwhATO/5a2knxq5AJdqc0vjz8v9maDlMqr/k7kwsX+IlCFvBWaIsWhijaSrF7yQR
         VYZBHEszPNoDnXNRNgigO/NA7yMumueXv2IEUwWQU0uHf0kiEUba3tRXg8/84Awfv3DK
         dt+Q==;
        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=20251104; t=1775820612; x=1776425412; darn=lists.xenproject.org;
        h=content-transfer-encoding:cc:to:subject:message-id:date:from
         :in-reply-to:references:mime-version:from:to:cc:subject:date
         :message-id:reply-to;
        bh=o8aKtIfyTS7NnNaF2VcHdJIwhnf3j2RavzseU7nAs14=;
        b=F1y/J9NAIUdpWmlTO+hF05x5RCQgviOl3C98FSssvrf9iNe33aGH+KV4NgGdANQ+Iw
         0hlj93sLIsQ4ICrgXYzawH2CvjMKOxV05KIUGV+T1OloJEJQNPtuAFHaviyJkMlCZROw
         yHF0ZlQuQBOk4qS2wa9FXFuopaXU6C9a7ybG2xtRncek2N+onjAZg6vjXVIf7Z8PH103
         zWKccVA5G3U9U3KsWxInXqGnE4eUhvGeqDYuU9db3kM0l3+ga0EpYUJrxixKmpQhL9YL
         nZ7JVH2TPayc+gGxNwFBfe6tRqePG2dzen7bGj1ioCRsKHnenBg9+IONx9P8byUJZCY7
         2uRw==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20251104; t=1775820612; x=1776425412;
        h=content-transfer-encoding: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;
        bh=o8aKtIfyTS7NnNaF2VcHdJIwhnf3j2RavzseU7nAs14=;
        b=VQUCaMnjVOLV9xGU/mUOBOBuoP7Smbx16essCD9aSNKIL32FNX4YPGgFtKc+rA68k5
         khuttRLpmJUSXevz9NBsgsKPmTb8Naex+K2+mlCwVrq9067icRvdYMJAivjP/wL9u8uY
         JIPGPEO2gJ47PE32VEd9AlYAX7LqV3Gg8H9+RiveC7UfpX/M/mC8QbORUdN2eWP0w5Hz
         soUWKzR4ouK2P1arwq6E/QPJ3QDcf04/N5NGFPGRppYmr/EimuCWMX4A2ZoznDjs3/VE
         +yQqnmlmowKP5U8ejvNKpAJLb1bikFwe9c4sXlfwGYiLUj5yF4VzeUC6+jCtqAfAOg02
         sqpQ==
X-Forwarded-Encrypted: i=1; AJvYcCWbjJT+ffvL23VrAd/20hd+tHDTsXB9BU7wQojXN0S7YnIWpRNNcs4XiTb1UBlsKYrShdlnZxQqtHU=@lists.xenproject.org
X-Gm-Message-State: AOJu0YwuO+RGnG2lthtEr41svHJ3f0sa/cWdUCOiVJ/asTK7Ok7rzjMy
	zqMKfpene5DBA+DQAtTpbROr9/JQOoBVH4oNjD7Dc2SRTEdVaVPGLCenPawb1/u3ce6nEjnb/qo
	WKAkmqT3j3g7ueSj3/yTJhC8/wc9lrTc=
X-Gm-Gg: AeBDiesued+RFStT8nzqBdkPyd/UaKY8QamTljavLdEqrPgCqBbwUctUOLjJaCac70p
	CM22Ya30ICW/5BUU0UYkb58JYyuJ/YYOxNcg+tn4wyy0xIxg1EjncBOLDcPIOZTp9yi+PVB+CbG
	FxeqnOopph/RvALtngKmxjRNNMHtJM3KcZt63bhmDybfX3yWspqhSKcBG13RPgJVU9343rECgQl
	km4JflulFwizZEf/2L2xWlfXGOoVxb9SU28AfFWawvJrn5t06dhTXi+QluL70SibRQvreOVUz90
	/X973g==
X-Received: by 2002:a2e:9a0e:0:b0:38d:ea91:f4d7 with SMTP id
 38308e7fff4ca-38e4bf2d161mr8991291fa.25.1775820611690; Fri, 10 Apr 2026
 04:30:11 -0700 (PDT)
MIME-Version: 1.0
References: <dba15db692025c75f8bd3a2c5dab2654eaa4e896.1775801199.git.mykola_kvach@epam.com>
 <0c68ca5e-51d3-42ee-aa27-301ffafefc5f@suse.com>
In-Reply-To: <0c68ca5e-51d3-42ee-aa27-301ffafefc5f@suse.com>
From: Mykola Kvach <xakep.amatop@gmail.com>
Date: Fri, 10 Apr 2026 14:30:00 +0300
X-Gm-Features: AQROBzAqb3s0urNnGDGKB9WoQ_CZeDMbi7wFJPMGzOUuCb32gCBjOYHWMGQEUE0
Message-ID: <CAGeoDV8OAiZL6d8+qs6T8bRT++H-tpY--8yhb7He1bMgVvHeUg@mail.gmail.com>
Subject: Re: [PATCH] arm/its: Decode BASER cacheability field before comparing
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>, 
	Mykyta Poturai <mykyta_poturai@epam.com>, xen-devel@lists.xenproject.org
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: quoted-printable
X-purgate-ID: tlsNG-bad1c0/1775820612-2E155152-0D8F84F7/0/0
X-purgate-type: clean
X-purgate-size: 1147

On Fri, Apr 10, 2026 at 9:40=E2=80=AFAM Jan Beulich <jbeulich@suse.com> wro=
te:
>
> On 10.04.2026 08:09, Mykola Kvach wrote:
> > --- a/xen/arch/arm/gic-v3-its.c
> > +++ b/xen/arch/arm/gic-v3-its.c
> > @@ -496,7 +496,8 @@ retry:
> >          }
> >          attr =3D regc & BASER_ATTR_MASK;
> >      }
> > -    if ( (regc & GITS_BASER_INNER_CACHEABILITY_MASK) <=3D GIC_BASER_CA=
CHE_nC )
> > +    if ( ((regc & GITS_BASER_INNER_CACHEABILITY_MASK) >>
> > +          GITS_BASER_INNER_CACHEABILITY_SHIFT) <=3D GIC_BASER_CACHE_nC=
 )
>
> Are you aware of MASK_EXTR()? This is one of the cases that we have it fo=
r.
> Really all *_SHIFT constants should be purged, as they can be calculated
> from their *_MASK counterparts (leveraging MASK_{EXTR,INSR}() to keep the
> code readable).
>
> Further, doesn't gicv3_lpi_set_proptable() have the same issue with
> GICR_PROPBASER_INNER_CACHEABILITY_MASK?

Is it acceptable to include Fixes tags for two different commits in
a single patch, or would it be better to split it? Both issues are
logically identical, just in different functions.


Best regards,
Mykola

>
> Jan


From xen-devel-bounces@lists.xenproject.org Fri Apr 10 11:33:59 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Fri, 10 Apr 2026 11:33:59 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1278805.1563533 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wBA7a-0007tD-G4; Fri, 10 Apr 2026 11:33:58 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1278805.1563533; Fri, 10 Apr 2026 11:33: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 1wBA7a-0007t6-DP; Fri, 10 Apr 2026 11:33:58 +0000
Received: by outflank-mailman (input) for mailman id 1278805;
 Fri, 10 Apr 2026 11:33:57 +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 1wBA7Y-0007sy-SG
 for xen-devel@lists.xenproject.org; Fri, 10 Apr 2026 11:33:57 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wBA7Y-00FSpf-83
 for xen-devel@lists.xenproject.org; Fri, 10 Apr 2026 13:33:56 +0200
Received: from [10.42.69.7] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <andrew.cooper@citrix.com>)
 id 69d8e020-e002-0a2a0a5209dd-0a2a450784ea-16
 for <xen-devel@lists.xenproject.org>; Fri, 10 Apr 2026 13:33:56 +0200
Received: from [40.93.194.9]
 (helo=SN4PR0501CU005.outbound.protection.outlook.com)
 by tlsNG-ef75cf.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.0)
 (envelope-from <andrew.cooper@citrix.com>)
 id 69d8e021-ba2d-0a2a45070019-285dc2095ad8-3
 for <xen-devel@lists.xenproject.org>; Fri, 10 Apr 2026 13:33:54 +0200
Received: from CH8PR03MB8275.namprd03.prod.outlook.com (2603:10b6:610:2b9::7)
 by DM6PR03MB5099.namprd03.prod.outlook.com (2603:10b6:5:1e4::11) with
 Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9769.42; Fri, 10 Apr
 2026 11:33:51 +0000
Received: from CH8PR03MB8275.namprd03.prod.outlook.com
 ([fe80::a70d:dc32:bba8:ce37]) by CH8PR03MB8275.namprd03.prod.outlook.com
 ([fe80::a70d:dc32:bba8:ce37%6]) with mapi id 15.20.9769.018; Fri, 10 Apr 2026
 11:33: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=Qt8jNM0LilzFOB0mYTC0iQCn8QTa9e3nQXK3bC5tvroxKY+84gklh6gn+eh35FntQn90UAsyBtmvuOPnM5eczIoUJ6jbIcIzNzkOztFtmKTjN1i2mseqAz6W5JmT2ZWnjGjJUIX7shZjNxmNUOm/3lrLPVLJj3qk1vISCIPXZUD1f9SDxSMsCYLGy3ezy5m1P9TsulFPo+ISVnSti7iAc4VI73g5ypD7EjVibb2j7x9+viWytFzxxIdxjeLh6jmmc+BqEea1jUKMGdcnmwrR7uM2NXJGvyICG91qCYzvaExkMCMZi6eAIX89CeIPYywCW1qyTfUdyTFkBrmKizVCoA==
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com;
 s=arcselector10001;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1;
 bh=BwL0SmSCSGloE7YDySNcg9PHFX/+SGsk2feI05qphag=;
 b=Y9Sf9yq12MgzLIY2XkHZfoqv6j/C/S2fsx38hMVi7qAXfHlEZkkLFkLwEgQHbzczJWDlge/52WHMzXvpoliue3tbImMkaED+cObxNhWfhgWvaihympcnzwCk49gbcijggYV+dAKDfGxcgsyc/dzeMC6KZPNiSluGBpJtetmTHg88ph+PPn3k4kQZiDeCQip/pEyOv6EOKQ1AURUZiiQPKK8iP9mwSmxwE4WVVkULQRgKhJfnym1oabcXcYrVUU/LOE+arxKuAT5iyuW5ddZb7JvsYWBQwc27i1zo2APfG1ljX960H+AQ4RiP9ImFo9PcfSH+uThz7KHFK/+YWyP7AQ==
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=BwL0SmSCSGloE7YDySNcg9PHFX/+SGsk2feI05qphag=;
 b=srd30EDQ+pHJYlIdMc7hFiSn3GYUBqrExwnoZ6O6/sCuVTtzA1RFVGwttFQEGqErITJYmYlAJWkYga6TxVVPadzbE0oDxEGAru9JV7/k05PZ38JV979VE7rH+ZZx6p1Rq4bHle1myO3NYXNEgThohBnP10hx10Mx17dCdVcdYEY=
Authentication-Results: dkim=none (message not signed)
 header.d=none;dmarc=none action=none header.from=citrix.com;
Message-ID: <09b58fe8-cc6a-4bc0-b2e9-ed2e76d19ed9@citrix.com>
Date: Fri, 10 Apr 2026 12:33:46 +0100
User-Agent: Mozilla Thunderbird
Cc: Andrew Cooper <andrew.cooper3@citrix.com>,
 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>,
 Mykyta Poturai <mykyta_poturai@epam.com>, xen-devel@lists.xenproject.org
Subject: Re: [PATCH] arm/its: Decode BASER cacheability field before comparing
To: Mykola Kvach <xakep.amatop@gmail.com>, Jan Beulich <jbeulich@suse.com>
References: <dba15db692025c75f8bd3a2c5dab2654eaa4e896.1775801199.git.mykola_kvach@epam.com>
 <0c68ca5e-51d3-42ee-aa27-301ffafefc5f@suse.com>
 <CAGeoDV8OAiZL6d8+qs6T8bRT++H-tpY--8yhb7He1bMgVvHeUg@mail.gmail.com>
Content-Language: en-GB
From: Andrew Cooper <andrew.cooper3@citrix.com>
In-Reply-To: <CAGeoDV8OAiZL6d8+qs6T8bRT++H-tpY--8yhb7He1bMgVvHeUg@mail.gmail.com>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
X-ClientProxiedBy: PR1P264CA0118.FRAP264.PROD.OUTLOOK.COM
 (2603:10a6:102:2cd::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_|DM6PR03MB5099:EE_
X-MS-Office365-Filtering-Correlation-Id: 13f54353-d729-4f15-befd-08de96f509bb
X-MS-Exchange-SenderADCheck: 1
X-MS-Exchange-AntiSpam-Relay: 0
X-Microsoft-Antispam:
	BCL:0;ARA:13230040|366016|1800799024|376014|7416014|22082099003|18002099003|56012099003;
X-Microsoft-Antispam-Message-Info:
	MdQSMLia1OYKvcOvAomjsI+Lf6raeud9XoSFOjX2iJWU5IKi2NGePA5S6n4fsbuDFegLZV7Vv2H6FlnA0miBy/50vT0osZWPCRzOQb6RMFjW3vNLIfIvo92wZF8/AzE/P7LSfEwqi6JlZnH7ADSSvGlhDdGMvOHu8nnnosc/VK6WACbO6kUMpThByzmJ41h+MwrHSRbQGo1dLrxW//8XoBPZfFTtoy6RYwzCpvYBoFCkGj3zetq4EYgEmX1a+I5rye9VBBv/nN2ak/+h5LFJtFl7H9xU2FKQ0PwOlxJeLGCG5O7fwNxEW3NfAHawYANKy7Lkcf3L4/geQjV2w010BQwaivXdiVmnx9GxoIhioOhlu5Qp4IblT06f8/rEqGayy3w4GoFHfpWXHvN4SGX2ghG4Z2ZOUAgGXV3FA1kKBgfABWafZ2SBKrVt/3aTh4Z+qW0D01AaTAO58+XCeCwEtvRlG6WBXv2BnRgncbiuRAiHZiOgcZ0QMBLsLIQNFjTNE+eVpGk9BPS9yaYqv5a2bXj9WsgIiwOF0o5pJAI0zNtyalkAKDhQprS1wsIeh+D7pA7jz+CeZE84NfPOKA0DDKpG2Qck7+Rg5deAuRm6UbMUSg7wZHgrFzh089aAQJewEam+CbAKjPgs/cTWdfZfoWCbspAPmA8zvlEKdLN08FtfyZBntQ+2GOiOHc+NX6ncJkSxuYnwCoPCpE6vOoIuCdU/niqKWS3MzK3OFQD8NHY=
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)(7416014)(22082099003)(18002099003)(56012099003);DIR:OUT;SFP:1101;
X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1
X-MS-Exchange-AntiSpam-MessageData-0:
	=?utf-8?B?NU9KWjhydHYwMFNrUkM5RXl1c0l6bkJ4dkc3TzdMNG8weUI4Y1RBV0VDS1Jy?=
 =?utf-8?B?YWJXZ0dSemFXOVhpR2h6OGw5RjVGZDY2TUVuK3NzTE5PWUo2bjNaMVgrWWxZ?=
 =?utf-8?B?aHhXUFVqTlFpUmRNS3RpWEJFazlhRTdjbU9aQXpMcm1Bd1llQzZvZjV5Z3NC?=
 =?utf-8?B?LzFLa2xqZkdKVE85ZGdPMXJDczZNOXg2UmhLNkZmZmduMllJckQ1WWhBUW1G?=
 =?utf-8?B?Z29wS0djZWQzUFJZanhidjNkSHNHaXZRcFlNMVZUSDJmcGJQTUIvMzFkb1JY?=
 =?utf-8?B?Y1UzSzZCRldYZEUvbVBYMlI2WTJnNEF0eDNUOXdVdDFBQ1RjUTNrSXJ5MEJK?=
 =?utf-8?B?eWJFYlcvNFJpNUl5czNHbkdTLzB5VVN3MmxBQTlsSG96VjIyWFFQSHYrNmxa?=
 =?utf-8?B?dnVYVy9EcTY1Y2RlQk5jNEV4bFBib0ZQaG1qWkVDT3ZxakpsWFNOdEsrenVH?=
 =?utf-8?B?azZPOG9pUUFYK09ESzdRUkppZ1pVaVh2Q3RwTDFsZTlOY1pzS0luV01PeGpE?=
 =?utf-8?B?RGJCd3F3YVRPQmRyWVZRRnplZ3VPSGVsYlpqQXZMZDcrMVBxVEx5aVpEYWFo?=
 =?utf-8?B?YjN4eUlyMVdnMGNoOTNWdUU3Vk5RZUpjN0k4WThpdUhER3VFd2ZPZDVDalRY?=
 =?utf-8?B?NkFpWjdWV1E3TkhtRzM4ekZpN0Z2RFV0aVNiQTZtQmtDVC81Z3V5Q2J4ZmVU?=
 =?utf-8?B?SVBQeXdTdzY4U29RMk5pZW5OZjBPQ0ltMnFpdGlrNDhFcEwvcG1mTkt3S2s2?=
 =?utf-8?B?R2xpQ0x5WWJoZlNaa2dBTGhhckRVbWYyK3FGcFFaaC94MGlubCt4U1YrSmhW?=
 =?utf-8?B?b1dNVGZEVGcrMDV4M0wxUFR0N0lVV1ZaZWhNaHYvMjFjQmlib2FvbEdHdkxG?=
 =?utf-8?B?eXJqR3hsVkxuSnJJa0hxK2dxSjhxRDZ2Q1ZQZG8xZTMrcDk0Rlk0NjJGanFx?=
 =?utf-8?B?VGhlUVN6SzdZdEkxK0lsRWNlUWxpbmpuSjY1KysrV3RwTXpvdENxMCtiQWRX?=
 =?utf-8?B?QVNvRnN4RmRQQ0JpMzNzWWt0STUxenFtUFFrb1hiV2lMOW5XR3B5eTN3ZENC?=
 =?utf-8?B?NFlrUHRlRXRwRU5LK0JpWXNMTG5PdEk1Rm02Q3M0Z2hiMGljNlZHdy93enoz?=
 =?utf-8?B?dUNCcC9CcXhJSDR6YjBScUF3ZEYxM0pMNVE5VThMYjFTWVAyOEYyZXZqZnRG?=
 =?utf-8?B?Sy91TUZvcXdKdFcyK0tLUllJcHRhR3JHY3M3ajhpUDBRZlZiRWExZU5nR1Bl?=
 =?utf-8?B?M0VNVXU5TW9VeGpWNWNrRXYxc1p6SVFJVUlEWTdHdEtWb0J3a0hSdTZaeUsx?=
 =?utf-8?B?TmF0S2x2Z0tPUXZ0ODJ0ZFk3TjVYM2V1YjkzemVTSUlGOW5jNyszUG1yaGlw?=
 =?utf-8?B?YmdiNytDai9oUFI1OXI5R2NiVCt2akpWQkYwTWNPRG5rSXNDSWxVOHhJUWVM?=
 =?utf-8?B?NUhJbHhDaFROL1grdThDanlqdVhENTBwdzdlNFNzUEY3bVRtR3djOEs0VHRM?=
 =?utf-8?B?TlNuSnd0OUV4QnYxa0NBRkUrQ3g4VlVIQUdzYlBkZy9QQlZuQmRRWE9HRytX?=
 =?utf-8?B?dm52MDdpeWdMQzNMMDdmK0RMS0VSQ2F1QXJNdmJ2M3pVaTVDNHJjUzJ6V2x5?=
 =?utf-8?B?L3JJcERPczBSellPMGIvNzFkL0NYVXd1MHR5MUNyS1ZYSlpOb2lFeFpLL29M?=
 =?utf-8?B?TklsT2xYWXJyNnVxT3gzK1FseDlMMDlHaHJrek01NEV6ank3dm9LV29yVG5l?=
 =?utf-8?B?R1NqK1hZY1FYb2U0aUwrc3BJZVJvRDZsVTNQeG11WER3aUk5MWdKRTlIUUJo?=
 =?utf-8?B?YiticjJWNG1iMU1hVWVGRWpHUThCWUxVUm8xemNVOW1xY3FZRHFFMEdET04y?=
 =?utf-8?B?NTl1OC9yZVpVWW9PS2ZvMitPQllHank5SlErbzhVcjdaVlVyeTBCTDdrTVJa?=
 =?utf-8?B?Yllkd3pJT1BHRytjZ3hxNVQwUmFwSVdpSGt5aTZEeXdGSktsdXI2dUdDb2Rq?=
 =?utf-8?B?S0x1TEdRcjVBZzRNbTRLNXF5akJTYmRKaXp3UVovNG5QRWJaVGVVS0UyRGV0?=
 =?utf-8?B?K3BHZDNlUklvSGJjSHRIdGpFSDlDd2R1NnkwdVRSRDJyWkVkcTFDRk5QdDQr?=
 =?utf-8?B?U1M3OEZnRkNjN1NvZ2JTalB5T1pOUy9WK0ZPYStSSmp4aE1XOUhrQ3pJN29B?=
 =?utf-8?B?aFlTcENCZTFCNWpBTnRzNlNVdGVXRGtUWmVMbHUyWW9sZzZkejZINHFOV3lk?=
 =?utf-8?B?azRvMWVjMW9xYm9VZHBBQ2Q4eGdtVUc4NE4vdmZlUHNGcGM1dCtNaGJCVEFk?=
 =?utf-8?B?TWNPLzlMN0NsMGZpQVQyY0svclBvdFB1UmZ5VFM5ay9oaXI1OVJCMXBpWjll?=
 =?utf-8?Q?FSWLRbUzZp+2EL/A=3D?=
X-OriginatorOrg: citrix.com
X-MS-Exchange-CrossTenant-Network-Message-Id: 13f54353-d729-4f15-befd-08de96f509bb
X-MS-Exchange-CrossTenant-AuthSource: CH8PR03MB8275.namprd03.prod.outlook.com
X-MS-Exchange-CrossTenant-AuthAs: Internal
X-MS-Exchange-CrossTenant-OriginalArrivalTime: 10 Apr 2026 11:33:50.9481
 (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: ZXRKj/i5hthNlP+JfCW6ZpDMFV4jDEJxKgi0WVhfvS8caewR4M/YgW5o6ORF8DN2kcvgQp3Dt44dVzYlYBTL8bvKBDMOi8VsFGRDRCARSv4=
X-MS-Exchange-Transport-CrossTenantHeadersStamped: DM6PR03MB5099
X-purgate-ID: tlsNG-ef75cf/1775820834-8BD4741E-62A6E9E0/0/0
X-purgate-type: clean
X-purgate-size: 1310

On 10/04/2026 12:30 pm, Mykola Kvach wrote:
> On Fri, Apr 10, 2026 at 9:40 AM Jan Beulich <jbeulich@suse.com> wrote:
>> On 10.04.2026 08:09, Mykola Kvach wrote:
>>> --- a/xen/arch/arm/gic-v3-its.c
>>> +++ b/xen/arch/arm/gic-v3-its.c
>>> @@ -496,7 +496,8 @@ retry:
>>>          }
>>>          attr = regc & BASER_ATTR_MASK;
>>>      }
>>> -    if ( (regc & GITS_BASER_INNER_CACHEABILITY_MASK) <= GIC_BASER_CACHE_nC )
>>> +    if ( ((regc & GITS_BASER_INNER_CACHEABILITY_MASK) >>
>>> +          GITS_BASER_INNER_CACHEABILITY_SHIFT) <= GIC_BASER_CACHE_nC )
>> Are you aware of MASK_EXTR()? This is one of the cases that we have it for.
>> Really all *_SHIFT constants should be purged, as they can be calculated
>> from their *_MASK counterparts (leveraging MASK_{EXTR,INSR}() to keep the
>> code readable).
>>
>> Further, doesn't gicv3_lpi_set_proptable() have the same issue with
>> GICR_PROPBASER_INNER_CACHEABILITY_MASK?
> Is it acceptable to include Fixes tags for two different commits in
> a single patch, or would it be better to split it? Both issues are
> logically identical, just in different functions.

Multiple fixes tags is entirely fine, and we have several examples in
fight even now.

I'd absolutely recommend one patch with two fixes tags in this case.

~Andrew


From xen-devel-bounces@lists.xenproject.org Fri Apr 10 11:41:20 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Fri, 10 Apr 2026 11:41:20 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1278817.1563542 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wBAEc-0001Df-6F; Fri, 10 Apr 2026 11:41:14 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1278817.1563542; Fri, 10 Apr 2026 11:41: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 1wBAEc-0001DY-3Z; Fri, 10 Apr 2026 11:41:14 +0000
Received: by outflank-mailman (input) for mailman id 1278817;
 Fri, 10 Apr 2026 11:41:12 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <Luca.Fancellu@arm.com>) id 1wBAEa-0001DQ-Gr
 for xen-devel@lists.xenproject.org; Fri, 10 Apr 2026 11:41:12 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wBAEZ-00C0zW-9K
 for xen-devel@lists.xenproject.org; Fri, 10 Apr 2026 13:41:11 +0200
Received: from [10.42.69.9] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <Luca.Fancellu@arm.com>)
 id 69d8e1c8-e002-0a2a0a5209dd-0a2a45098d1c-34
 for <xen-devel@lists.xenproject.org>; Fri, 10 Apr 2026 13:41:10 +0200
Received: from [52.101.83.15]
 (helo=GVXPR05CU001.outbound.protection.outlook.com)
 by tlsNG-bad1c0.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.0)
 (envelope-from <Luca.Fancellu@arm.com>)
 id 69d8e1d5-bf79-0a2a45090019-3465530f4cba-3
 for <xen-devel@lists.xenproject.org>; Fri, 10 Apr 2026 13:41:09 +0200
Received: from DUZP191CA0050.EURP191.PROD.OUTLOOK.COM (2603:10a6:10:4fa::23)
 by DB5PR08MB10021.eurprd08.prod.outlook.com (2603:10a6:10:48e::5) with
 Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9769.42; Fri, 10 Apr
 2026 11:41:05 +0000
Received: from DU6PEPF0000A7E2.eurprd02.prod.outlook.com
 (2603:10a6:10:4fa:cafe::73) by DUZP191CA0050.outlook.office365.com
 (2603:10a6:10:4fa::23) with Microsoft SMTP Server (version=TLS1_3,
 cipher=TLS_AES_256_GCM_SHA384) id 15.20.9769.42 via Frontend Transport; Fri,
 10 Apr 2026 11:41:05 +0000
Received: from outbound-uk1.az.dlp.m.darktrace.com (4.158.2.129) by
 DU6PEPF0000A7E2.mail.protection.outlook.com (10.167.8.42) with Microsoft SMTP
 Server (version=TLS1_3, cipher=TLS_AES_256_GCM_SHA384) id 15.20.9769.17 via
 Frontend Transport; Fri, 10 Apr 2026 11:41:04 +0000
Received: from DU2PR08MB7272.eurprd08.prod.outlook.com (2603:10a6:10:2d7::16)
 by GV2PR08MB12004.eurprd08.prod.outlook.com (2603:10a6:150:36a::5)
 with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9769.42; Fri, 10 Apr
 2026 11:40:00 +0000
Received: from DU2PR08MB7272.eurprd08.prod.outlook.com
 ([fe80::5d34:206f:373:a323]) by DU2PR08MB7272.eurprd08.prod.outlook.com
 ([fe80::5d34:206f:373:a323%6]) with mapi id 15.20.9769.018; Fri, 10 Apr 2026
 11:39: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=arm.com header.i="@arm.com" header.h="From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck"; dkim=pass header.s=selector1 header.d=arm.com header.i="@arm.com" header.h="From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck"
ARC-Seal: i=2; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=pass;
 b=S9iVs5JHk1QMH8HQCvKSgiIlUUbhqYie5a8CMn14lD/o4z7AAjIxoHW8JWRKo3DGDZcKmNTJAS26csxEolWKp1bKsEft9andDL8K5e1pNs8ETuQnUo1OutJsr68kQrV2hZuOYdOIoJuhK811ahwFzPFvyna5X5MegVqr9ZQxOexdTtECExJwZJLx7Z6CRxFwf7MtAp/STVMKRC7yxdkOGmkouZ7tA1fQIaNzdBykFEVMBVlw7lpi5jDzdQwusSF/UYjd2/Li/x9cfRf9kA4Upf0rwosNVHBZLlo2mtXiKpAKc6CtHi+/lJHT6YGI0SaEctlSIisHF6JJAjuFJVraxA==
ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com;
 s=arcselector10001;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1;
 bh=PvDci1SFyqTJnbPBsFJG77mJZgtIVWxdMI5gGsnZR8w=;
 b=vVxlR7V010Cx9+PLJInheHPlCgUEkeKUPQE6xQYW6WwhjZNyVGdaDdiZbh4621huferzSPF7FhPkVTK0aYxPIyC+Ortc2WAbWwnvfqRtbtMT5rA3y7+MU251CFk5f7hTFzDMtyi+a0lZ4k8x/h+WAaT1GptORezHSeHQn7bpXTFbOBch5ion93AZ+6hmwdHXpp012GkXpxUrr2BPjhY6YLBh0u9ErU42qizbv5cp7YehLdOqohucrSLSrwgZFQZtdkaDCueRrqLtxzaUACnr2ebpNPTMOQpSZ9mWG9gDY4ST0S5buCeBGbDuQ/eMvOEYpmtFfIExySOrEBxCHupmJg==
ARC-Authentication-Results: i=2; mx.microsoft.com 1; spf=pass (sender ip is
 4.158.2.129) smtp.rcpttodomain=epam.com smtp.mailfrom=arm.com; dmarc=pass
 (p=none sp=none pct=100) action=none header.from=arm.com; dkim=pass
 (signature was verified) header.d=arm.com; arc=pass (0 oda=1 ltdi=1
 spf=[1,1,smtp.mailfrom=arm.com] dkim=[1,1,header.d=arm.com]
 dmarc=[1,1,header.from=arm.com])
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=arm.com; s=selector1;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck;
 bh=PvDci1SFyqTJnbPBsFJG77mJZgtIVWxdMI5gGsnZR8w=;
 b=mYn1mDxBdBokXjK9Rl1ca9z9JVitZZpzq671pf9pZJDC6W6Ty5AXPacbl927MtwS72NFvC3CXf453QzDkZ0V15aoAVF/vDd75itHICYvYwhYeJniCcz9VnOeupf1ljl8zggm/fdG7T4Gue+od7qt+dq89/0RYSHZoYLqaw+e1lQ=
X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 4.158.2.129)
 smtp.mailfrom=arm.com; dkim=pass (signature was verified)
 header.d=arm.com;dmarc=pass action=none header.from=arm.com;
Received-SPF: Pass (protection.outlook.com: domain of arm.com designates
 4.158.2.129 as permitted sender) receiver=protection.outlook.com;
 client-ip=4.158.2.129; helo=outbound-uk1.az.dlp.m.darktrace.com; pr=C
ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none;
 b=r2pmJP50/RFKS3CiD41VaT9xg1y72x1srwlMfQmhmXYG9dQnqCggvx0pFG36UIoxybuFaFYL878qSrupjJDvp4Po5XZB8wjx9WlQ9/yr/deSdj2GaOiBkzNbYWFSOCtl1S1yhvSbuMWCoXfEtiNW4XefUHwcvXa9ETBr/EGwckhy2OOQmhKk2FSq7IyR414TxbJp3Ccit8s7DHJ5ZwukMRJ9Wbq/8K/xjTgc3llhzavf5WE83X3aIJhy9/IOUJAtFhUBafeE4cHR1m3MRMx83//fTiw0MIs/B4ISTxYKBaIXr/EwXlidTX/1z3/dQ/oG6g2Vj9SnVTLHrnRtCWQOVQ==
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com;
 s=arcselector10001;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1;
 bh=PvDci1SFyqTJnbPBsFJG77mJZgtIVWxdMI5gGsnZR8w=;
 b=XnrkBfHXRo1z0KQ0p5j7VZY2Sbwf+4Adg6A8JBfANsQ47UuulQ53zWE/T1peMh7mQfiuoQrZVnSrm1TIEceha1+17d9jFCXpvCGMGd++vGq9qSQRwdaP1w/TV8Qw1GkqfhJozz1iE4rwdVKt5i5j+pTY2tah64ry43e6UGljwJ9pF3Qe8Wvn3/EZL3E4mcsyz7pA2TsL4UrC3q+gup/S9Odae1j6eOlXnF4Pix4Elljy5g2dT5INXJhCHLxFfkxjedXit7owhKem2PVM2fonHayxvtRrbSwWvrAqpx2plafD+an79UfUdWZHfa/cV4SO/NshlLmSWJz1ILwpK6bKsg==
ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass
 smtp.mailfrom=arm.com; dmarc=pass action=none header.from=arm.com; dkim=pass
 header.d=arm.com; arc=none
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=arm.com; s=selector1;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck;
 bh=PvDci1SFyqTJnbPBsFJG77mJZgtIVWxdMI5gGsnZR8w=;
 b=mYn1mDxBdBokXjK9Rl1ca9z9JVitZZpzq671pf9pZJDC6W6Ty5AXPacbl927MtwS72NFvC3CXf453QzDkZ0V15aoAVF/vDd75itHICYvYwhYeJniCcz9VnOeupf1ljl8zggm/fdG7T4Gue+od7qt+dq89/0RYSHZoYLqaw+e1lQ=
From: Luca Fancellu <Luca.Fancellu@arm.com>
To: Milan Djokic <milan_djokic@epam.com>
CC: "xen-devel@lists.xenproject.org" <xen-devel@lists.xenproject.org>, 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>,
	=?utf-8?B?Um9nZXIgUGF1IE1vbm7DqQ==?= <roger.pau@citrix.com>
Subject: Re: [PATCH v3 04/23] xen/arm: vIOMMU: add generic vIOMMU framework
Thread-Topic: [PATCH v3 04/23] xen/arm: vIOMMU: add generic vIOMMU framework
Thread-Index: AQHcyN6wtGZ7ugIU+0mvCG28OqL5ew==
Date: Fri, 10 Apr 2026 11:39:59 +0000
Message-ID: <A7C7C3F0-7359-4851-9325-B65C289C02CF@arm.com>
References: <cover.1774918270.git.milan_djokic@epam.com>
 <c12f84b9306a2b74a555c710f21f5362120205ed.1774918270.git.milan_djokic@epam.com>
In-Reply-To:
 <c12f84b9306a2b74a555c710f21f5362120205ed.1774918270.git.milan_djokic@epam.com>
Accept-Language: en-GB, en-US
Content-Language: en-US
X-MS-Has-Attach:
X-MS-TNEF-Correlator:
x-mailer: Apple Mail (2.3826.700.81.1.6)
Authentication-Results-Original: dkim=none (message not signed)
 header.d=none;dmarc=none action=none header.from=arm.com;
x-ms-traffictypediagnostic:
	DU2PR08MB7272:EE_|GV2PR08MB12004:EE_|DU6PEPF0000A7E2:EE_|DB5PR08MB10021:EE_
X-MS-Office365-Filtering-Correlation-Id: fbf9f2dd-b1cb-4e5c-28c9-08de96f60c93
x-checkrecipientrouted: true
nodisclaimer: true
X-MS-Exchange-SenderADCheck: 1
X-MS-Exchange-AntiSpam-Relay: 0
X-Microsoft-Antispam-Untrusted:
 BCL:0;ARA:13230040|7416014|376014|366016|1800799024|56012099003|18002099003|22082099003|38070700021;
X-Microsoft-Antispam-Message-Info-Original:
 DynO7dB0XRXFiVbI62j/Aix/o+zFdSybR7srEa3iiVDovuub4LwU5rWZi/M7LbPE+5Wl8xlKYZmWWfVU/PhDNDl17HK5eOZMdX5koKvNvSDlBpEO/49vUA85c/tjuoG07qNWZCvh16HMVgfphkygsH0VakxLCNWrMXmhrWrJj7IJbXmFkW5Pz8zUTj3wdXB55qypJmm75jGUt5iml6nSGnlqGNU8jY8Veq33nm75fYyslV3mLRJ36YAN8RNa7Zcs5+b70DJu0KT5OVnP3YfYm+CvYh0g72MST1K6EJVR4uUQONS3Qre7BKIDS1MthXW5GIj76melIjSChBDlV9njiEKNN1MJyIp5N9LH+z1yx3YnmWGxZba9IcHe3XLDEzFReRCoYVAUCfHoyn9wV6qGm4pgOTSklCUSfAy12KaeorZrmWQPtBHRH+XZnlJo1ICkuEJqhM+QAtlrMWM8hYrLW/9ACSyiLTJkLO5F0rpo2xfS+KPulVDo2AhG9oUwzFtOC+XZVUQQorUQpEU1bAPB0KP5keMmV1Hng0nrd9gIYnQRKd5RSVqec2NcCtm9QcEctKyGdJy9V+zy3k/9TBZZYpZqYCekeFoksDcyqBG/yUkWZXq+fZSL7ENVWPiWUcT5s85MsN6rF1Q0fEKXx3qyKAjYXprpa2u6GqV2v8eDfASQP2+2jVyp5S1X4XwHDgsyD9YHIgtzfl4k1JmhgjVTgy01XmDMU/Z3yFzPWk5+R7UhAH9W9vM1E19xqgXPMBYskKZASghaRt0xJbUxXM9Qs2DFtkGqt/khkn0Rh2CIdcM=
X-Forefront-Antispam-Report-Untrusted:
 CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:DU2PR08MB7272.eurprd08.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(7416014)(376014)(366016)(1800799024)(56012099003)(18002099003)(22082099003)(38070700021);DIR:OUT;SFP:1101;
Content-Type: text/plain; charset="utf-8"
Content-ID: <1754222CD473494B9310B47E0FD27B8F@eurprd08.prod.outlook.com>
Content-Transfer-Encoding: base64
MIME-Version: 1.0
X-Exchange-RoutingPolicyChecked:
 qj70GdPPxd6W3jzUD2WhDX1yYy/UWDP84qtYCNdKUbiqlagnQm8SgCascIt0JB1mmjMa/QekQj5QHAgYzrxtRgpDurWjYLtfd341q0g5Pa/Cw4T57JLhIbsfx61Z0g7FrKKyYsKDFKFaBBxuaOgMGIjn/9f3u3IhKV2+s/UN8Y1sX3e4Ivg5V8X5LCo6sk9J12t8dM/mJ2o8ZocoQJKC7XCc88LJALsXmA8+cB4BxF91AzLtvzEN4Be5WXxh459TH62mcOWuJ5cybyjcvUh7WiHBMG+Vupwwjx7XT6CJsjwJPKfDyRT27kJLW3wB8DG56qCXdHSwuv31BJodcoNEYg==
X-MS-Exchange-Transport-CrossTenantHeadersStamped: GV2PR08MB12004
X-EOPAttributedMessage: 0
X-MS-Exchange-Transport-CrossTenantHeadersStripped:
 DU6PEPF0000A7E2.eurprd02.prod.outlook.com
X-MS-PublicTrafficType: Email
X-MS-Office365-Filtering-Correlation-Id-Prvs:
	8140ab41-11e8-4847-ce8c-08de96f5e5b6
X-Microsoft-Antispam:
	BCL:0;ARA:13230040|82310400026|14060799003|1800799024|7416014|376014|35042699022|36860700016|56012099003|18002099003|22082099003;
X-Microsoft-Antispam-Message-Info:
	oH/ON0UIXTEioCBjWJ1uZvJV82XJQ+jnxN5sXaM29aeXh2KmdyVVjsnQvb7rdkdpCIJt59NILuMEv3wORW+GDXk7B4MzIug6K9Emjj89D1tUgiIH8a8LKTFTkypP9ysrsdsV1EZ62M30V/t7Ixq+sZDpMUzfPMpieLG2g8lr8bDfkhg5rCw3vcyQ73rzYEWA5HaxQVY9rFRIuMoztXUTNxJwotf3mrWZ4jdSveBKUwGSVOBKAVAMbuBDl+xh05NELxb8enMbMMQ/KBzhfRn5sLaJSlKGa9rwemZnyYs5sugVeuUsGOmtQ4PxWexBLw6Qq3sdp0hEUfIz80aP6b8oJUG+0id8FrC6hmFg+Xw6yf20EB1piGETfUSv6xCvlKKdlRoGCG8aNZ4usb7R/CyX06hJFkpQjP+KXmf+CzbTQUHbJoLTWBsGgN8P8+B++RihpGC7wiAGv5b4Sg/OfZm6+gqIIbOsmf2oXokojqLzsaD5J9yoZTjJtdETw681D+kwloRQna+pIFT9hhkv7FKILnM+xMUVfcF+FSZzyPTpqHRe5811FBXSPKhur/0xdcgvnBJg74xGYbw9z+kgG8UmAHLd6JRHxIyiJkrV4SXkjCxqhb13mXge0ES3VDKZYIrnu8D6LexT44FEoWQSN3nEX1bWCzoMbo+zh3KFXjQneLfJz1Q3WZmNY/pmpSbkxTlSHSS50tV1/wRxZ8zdxS6ORxAJy0Zx7MEDqWSMkYWv0cmV037XPdKvZTr0XC+/Vx5sD+aonDG0Lrw+p4xWztWWqA==
X-Forefront-Antispam-Report:
	CIP:4.158.2.129;CTRY:GB;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:outbound-uk1.az.dlp.m.darktrace.com;PTR:InfoDomainNonexistent;CAT:NONE;SFS:(13230040)(82310400026)(14060799003)(1800799024)(7416014)(376014)(35042699022)(36860700016)(56012099003)(18002099003)(22082099003);DIR:OUT;SFP:1101;
X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1
X-MS-Exchange-AntiSpam-MessageData-0:
	RlQzA257+bL9+PLonzBS4JbkO3vHCLfWc6OnVqt5ZnR24A7Z0wrkLXgszZK58bDYhl2aEomwXPOW9i1WLtxoCMsdQwj8y45O7MYjiGK17gHfSV7G7z+8SBBjmwSGVZHSAtCeQvME5eoqUwQPIlKng0AoUHi0zfuISa4vDYuNydYEkeb9jm6aupqTxiXYbH0iXM7RW0NA1LCPB22fuZYlQRbMq8OHGi+m0eL8MUAPH5kfz+a+SqrWaxLek/DjqlAckswJxBiJwJCjjvb+y2Z/t2UljBEuwJlf2yFNF28fQyhx2nil9K54Gse7+ciRM1SDOaB3UiLEHIJhKTP0DBjTqXCX6Q6KGdber7FhvrMTrMGUaglQvoMBbqFLyn5gLF9/nN4i4GNVp0+8mSMa+cylgFXAUi6CwUjbctoqgdcE+DWUxOtDzZa23wA3+z0fYZC3
X-OriginatorOrg: arm.com
X-MS-Exchange-CrossTenant-OriginalArrivalTime: 10 Apr 2026 11:41:04.9333
 (UTC)
X-MS-Exchange-CrossTenant-Network-Message-Id: fbf9f2dd-b1cb-4e5c-28c9-08de96f60c93
X-MS-Exchange-CrossTenant-Id: f34e5979-57d9-4aaa-ad4d-b122a662184d
X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=f34e5979-57d9-4aaa-ad4d-b122a662184d;Ip=[4.158.2.129];Helo=[outbound-uk1.az.dlp.m.darktrace.com]
X-MS-Exchange-CrossTenant-AuthSource:
	DU6PEPF0000A7E2.eurprd02.prod.outlook.com
X-MS-Exchange-CrossTenant-AuthAs: Anonymous
X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem
X-MS-Exchange-Transport-CrossTenantHeadersStamped: DB5PR08MB10021
X-purgate-ID: tlsNG-bad1c0/1775821269-5714D152-348E0FB9/0/0
X-purgate-type: clean
X-purgate-size: 620

SEkgTWlsYW4sDQoNCmFwb2xvZ2llcyBJIG1pc3NlZCBvbmUgYml0IGluIHRoaXMgcGF0Y2gNCg0K
PiANCj4gQEAgLTcyMSw2ICs3NDUsOSBAQCBpbnQgYXJjaF9kb21haW5fY3JlYXRlKHN0cnVjdCBk
b21haW4gKmQsDQo+ICAgICBpZiAoIChyYyA9IHNjaV9kb21haW5faW5pdChkLCBjb25maWcpKSAh
PSAwICkNCj4gICAgICAgICBnb3RvIGZhaWw7DQo+IA0KPiArICAgIGlmICggKHJjID0gZG9tYWlu
X3Zpb21tdV9pbml0KGQsIGNvbmZpZy0+YXJjaC52aW9tbXVfdHlwZSkpICE9IDAgKQ0KPiArICAg
ICAgICBnb3RvIGZhaWw7DQo+ICsNCg0KSGVyZSBpZiB0aGlzIGZhaWxzLCB3ZSBjYWxsIGFyY2hf
ZG9tYWluX2Rlc3Ryb3koKSwgaG93ZXZlciBpbiB0aGF0IGZ1bmN0aW9uIHdlIGRvbuKAmXQgY2Fs
bA0KdmlvbW11X3JlbGlucXVpc2hfcmVzb3VyY2VzKCkNCg0KQ2hlZXJzLA0KTHVjYQ0KDQo=


From xen-devel-bounces@lists.xenproject.org Fri Apr 10 11:46:52 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Fri, 10 Apr 2026 11:46:52 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1278833.1563552 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wBAJz-0001r7-SF; Fri, 10 Apr 2026 11:46:47 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1278833.1563552; Fri, 10 Apr 2026 11:46: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 1wBAJz-0001r0-OK; Fri, 10 Apr 2026 11:46:47 +0000
Received: by outflank-mailman (input) for mailman id 1278833;
 Fri, 10 Apr 2026 11:46:46 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <xakep.amatop@gmail.com>) id 1wBAJy-0001qt-SP
 for xen-devel@lists.xenproject.org; Fri, 10 Apr 2026 11:46:46 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wBAJy-00C2VM-7v
 for xen-devel@lists.xenproject.org; Fri, 10 Apr 2026 13:46:46 +0200
Received: from [10.42.69.12] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <xakep.amatop@gmail.com>)
 id 69d8e322-bab6-0a2a0a5309dd-0a2a450cd8de-16
 for <xen-devel@lists.xenproject.org>; Fri, 10 Apr 2026 13:46:46 +0200
Received: from [209.85.208.179] (helo=mail-lj1-f179.google.com)
 by tlsNG-d25034.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.0)
 (envelope-from <xakep.amatop@gmail.com>)
 id 69d8e325-f40c-0a2a450c0019-d155d0b3dc39-3
 for <xen-devel@lists.xenproject.org>; Fri, 10 Apr 2026 13:46:46 +0200
Received: by mail-lj1-f179.google.com with SMTP id
 38308e7fff4ca-38ce0ab821cso16445101fa.0
 for <xen-devel@lists.xenproject.org>; Fri, 10 Apr 2026 04:46:46 -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=20251104 header.d=gmail.com header.i="@gmail.com" header.h="Content-Transfer-Encoding:Cc:To:Subject:Message-ID:Date:From:In-Reply-To:References:MIME-Version"
ARC-Seal: i=1; a=rsa-sha256; t=1775821605; cv=none;
        d=google.com; s=arc-20240605;
        b=f8mYsxe1Lw0x1D5qUzLCwc5C5g+XXDwwLbik2+HltHu8ooft5RdWTZCLYIFp271AMv
         mo9taYjnUX0Em6/MsQ7odtX6rl0rpD0W0jui8I5l6kg+T8oWugQGEUD5qF0umHjGxZXl
         oUi9IAT4+peYYP9c7x0sbSYmhBXVg+f16rif6EUbQe6bI8lOvqdV9/xWON437JC7O0uc
         c2cMaLPBUj1pYrazBPvfUqTjqlBqy+x8xQH8pFzX9+Tz/9xXAhlyATeHEAmlDPGk71Jj
         SbWPlwiX8McnOYjsbK7lrcbHmr/JrRKruG7Jhgq+aD1uRkP0hk8S4SmlRXCQ7sBJZV+G
         tQxA==
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20240605;
        h=content-transfer-encoding:cc:to:subject:message-id:date:from
         :in-reply-to:references:mime-version:dkim-signature;
        bh=9q37rZP7jMWns3qTUHzx9hn/p3edhuLnNUeTWCCXISM=;
        fh=Npxxo2G+SZBYUBqLWTl4tfcxykh8zXXoyL5qOyJ4M6I=;
        b=A9rInS/Bst8AoVPEoTHDveR5sPEhsI0cguuOT+yg9G4g7ioPJzh1kxQ9niOP7V8uJ/
         s3DeblrXXU8oX1UtgHTfXPP4usOepB8AUuRrQH3r5ukB5Kfi2Mv2cC6ogpENGiV5W57F
         gcfrgbUeKRemDp5ZYrMRDp69ybEb2r/3D6tlryUukVd/jktwIWVE8HnJgo+zt2DBYyFY
         Upok4fHHi75ziHF45+nFtCeJHuJGjTh/o66j8geYWi98zMxCuBuG9XxUmaRN7CBDAKOv
         MxJxafiBKcvFJwVpEuUjBJbr7++nN8dJF7MZScgCIPRumWfU1RilkVM4XwRBB7nLpjUI
         PNcQ==;
        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=20251104; t=1775821605; x=1776426405; darn=lists.xenproject.org;
        h=content-transfer-encoding:cc:to:subject:message-id:date:from
         :in-reply-to:references:mime-version:from:to:cc:subject:date
         :message-id:reply-to;
        bh=9q37rZP7jMWns3qTUHzx9hn/p3edhuLnNUeTWCCXISM=;
        b=R6bvipdVkj3ri5tB7uBMJPi/Kf+bmgNxP5YSQi0NtdvwucPWwG6qawjf1CMpg4Vqr3
         2KysL5MLgsVKhC61qr3AJMOlwVbNm0CkK+L9cA0I4G6R4lEYip3R2HJF1t02NzwMcIdz
         QBE7DggiamujFMFzE/SM9MD8llH9c3Qn0ThYwoBOvYubzvXvW7ZGfB8gULj52trfMVqu
         N3hc4G7AUIG5bTInQCbe/x7GwRZ7cjqhxoyG+FyARhIc2dgW7mTkzXLm30WhtCcNuhWb
         fruXeiYg5yA1o59m2rrZu8AJvh86uJDlfUjO2BilcAfoKdDPSQ4OAxHYrI3umdgsmRHm
         npiA==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20251104; t=1775821605; x=1776426405;
        h=content-transfer-encoding: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;
        bh=9q37rZP7jMWns3qTUHzx9hn/p3edhuLnNUeTWCCXISM=;
        b=EdHKCLYNkgw5DhhZ0ylwQ/LPXTtZhQB6VqLgH9BC81rvHuoe4d0rm7jiWrPF1bPhdu
         LW2NVd4cYkz5xZRUMRcDeZNF+R49/2Hg249BrZ71TaTNV6XmDAIxZdfn6xh0zQNemfv5
         YTgAJh5WrvGV42QqzHAAMTVGujpHT6TvH6GkS2cGUexIjlpO8klY0n0SgJV+dgkVuzCN
         JxIVrzzNf9160h21GGKgu8koAr5h59jVqBE9s+4/dtH1tdDxjuh/86a0mMlu7wipnSed
         4JVPj6aDnfUvek78wURag+BfCrmvwimfcCtMjZk2qaNN8gT9pd0Nd6mODqL1VzXJXCLE
         oJng==
X-Forwarded-Encrypted: i=1; AJvYcCXQBH3hptOwHZe9BE5gOWn6KGH9XBrTFpIkDN6bCI2j9yx7wUYgW/10WaXE15EbAP1tO3/Q0dqH4TM=@lists.xenproject.org
X-Gm-Message-State: AOJu0YwppCYPpXrZWAm8G4dkbUxUcNM7VnP+YlJGCg5Ng7nqP09oP6+k
	K99L5nb5DN+UQWFuXiMrxmcbX6XY7X4u5FBnICRPGZtdhH2uFJd6VlbTXMy1KpIwVr+xV59JNaL
	/eewO7a36mpznyZmdr0QKzDcOBsdTTVY=
X-Gm-Gg: AeBDievwd/oeRE4DTG9cyLgJeTvT5mDrPUQcCowX50cvwJ0RoS1H38Bpnd44+b7PFwj
	O1m6xbb0RJiJ+WxvnPCGoQpl1fTcvkK/aXYo/54MCEdzq6wq8TGiFWfYlCeAi6BXRB90SHbLFU1
	r6yUNGKhuZfTh6/hlwerpAXkbrMjrkeEWxFOwLZKtq1Tx1c5Ch4FeDvxUtxyizrZAXp1j+My8/j
	0DoV1C+Gvg6wbanjL46l2gwTGvy5qPyo8daufE1DG1SUck3XXfdVZwR0SOpaIM0Dlch7iaRlo/v
	8bk+rg==
X-Received: by 2002:a05:651c:106d:b0:37c:d689:7e1c with SMTP id
 38308e7fff4ca-38e4bf65f4bmr6244031fa.23.1775821605138; Fri, 10 Apr 2026
 04:46:45 -0700 (PDT)
MIME-Version: 1.0
References: <dba15db692025c75f8bd3a2c5dab2654eaa4e896.1775801199.git.mykola_kvach@epam.com>
 <0c68ca5e-51d3-42ee-aa27-301ffafefc5f@suse.com> <CAGeoDV8OAiZL6d8+qs6T8bRT++H-tpY--8yhb7He1bMgVvHeUg@mail.gmail.com>
 <09b58fe8-cc6a-4bc0-b2e9-ed2e76d19ed9@citrix.com>
In-Reply-To: <09b58fe8-cc6a-4bc0-b2e9-ed2e76d19ed9@citrix.com>
From: Mykola Kvach <xakep.amatop@gmail.com>
Date: Fri, 10 Apr 2026 14:46:33 +0300
X-Gm-Features: AQROBzBGSA9XRFciydYAK3lqHex7swavykdzY2GaWphjhX9OomREzhc_aVLufBY
Message-ID: <CAGeoDV9+Z_zZ9w3ea1daXEyDuN8fpNZZNkp0bE+q3e+LbGG9CQ@mail.gmail.com>
Subject: Re: [PATCH] arm/its: Decode BASER cacheability field before comparing
To: Andrew Cooper <andrew.cooper3@citrix.com>
Cc: Jan Beulich <jbeulich@suse.com>, 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>, Mykyta Poturai <mykyta_poturai@epam.com>, 
	xen-devel@lists.xenproject.org
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: quoted-printable
X-purgate-ID: tlsNG-d25034/1775821606-FFB44A3D-45729CFF/0/0
X-purgate-type: clean
X-purgate-size: 1586

Hi Andrew,

Thank you for the review.

On Fri, Apr 10, 2026 at 2:33=E2=80=AFPM Andrew Cooper <andrew.cooper3@citri=
x.com> wrote:
>
> On 10/04/2026 12:30 pm, Mykola Kvach wrote:
> > On Fri, Apr 10, 2026 at 9:40=E2=80=AFAM Jan Beulich <jbeulich@suse.com>=
 wrote:
> >> On 10.04.2026 08:09, Mykola Kvach wrote:
> >>> --- a/xen/arch/arm/gic-v3-its.c
> >>> +++ b/xen/arch/arm/gic-v3-its.c
> >>> @@ -496,7 +496,8 @@ retry:
> >>>          }
> >>>          attr =3D regc & BASER_ATTR_MASK;
> >>>      }
> >>> -    if ( (regc & GITS_BASER_INNER_CACHEABILITY_MASK) <=3D GIC_BASER_=
CACHE_nC )
> >>> +    if ( ((regc & GITS_BASER_INNER_CACHEABILITY_MASK) >>
> >>> +          GITS_BASER_INNER_CACHEABILITY_SHIFT) <=3D GIC_BASER_CACHE_=
nC )
> >> Are you aware of MASK_EXTR()? This is one of the cases that we have it=
 for.
> >> Really all *_SHIFT constants should be purged, as they can be calculat=
ed
> >> from their *_MASK counterparts (leveraging MASK_{EXTR,INSR}() to keep =
the
> >> code readable).
> >>
> >> Further, doesn't gicv3_lpi_set_proptable() have the same issue with
> >> GICR_PROPBASER_INNER_CACHEABILITY_MASK?
> > Is it acceptable to include Fixes tags for two different commits in
> > a single patch, or would it be better to split it? Both issues are
> > logically identical, just in different functions.
>
> Multiple fixes tags is entirely fine, and we have several examples in
> fight even now.
>
> I'd absolutely recommend one patch with two fixes tags in this case.

Understood, thanks.


Best regards,
Mykola

>
> ~Andrew


From xen-devel-bounces@lists.xenproject.org Fri Apr 10 11:54:59 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Fri, 10 Apr 2026 11:54:59 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1278847.1563561 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wBARq-0003dV-K0; Fri, 10 Apr 2026 11:54:54 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1278847.1563561; Fri, 10 Apr 2026 11:54: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 1wBARq-0003dO-Gk; Fri, 10 Apr 2026 11:54:54 +0000
Received: by outflank-mailman (input) for mailman id 1278847;
 Fri, 10 Apr 2026 11:54:52 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92) id 1wBARo-0003dI-T2
 for xen-devel@lists.xenproject.org; Fri, 10 Apr 2026 11:54:52 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wBARo-00ENUK-8u
 for xen-devel@lists.xenproject.org; Fri, 10 Apr 2026 13:54:52 +0200
Received: from [10.42.69.5] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <oleksii.kurochko@gmail.com>)
 id 69d8e505-5cb7-0a2a0a5109dd-0a2a4505b938-24
 for <xen-devel@lists.xenproject.org>; Fri, 10 Apr 2026 13:54:52 +0200
Received: from [209.85.221.51] (helo=mail-wr1-f51.google.com)
 by tlsNG-c201ff.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.0)
 (envelope-from <oleksii.kurochko@gmail.com>)
 id 69d8e50c-3760-0a2a45050019-d155dd33d81b-3
 for <xen-devel@lists.xenproject.org>; Fri, 10 Apr 2026 13:54:52 +0200
Received: by mail-wr1-f51.google.com with SMTP id
 ffacd0b85a97d-43cfce3a195so1220313f8f.2
 for <xen-devel@lists.xenproject.org>; Fri, 10 Apr 2026 04:54:52 -0700 (PDT)
Received: from [192.168.1.6] (user-109-243-69-121.play-internet.pl.
 [109.243.69.121]) by smtp.gmail.com with ESMTPSA id
 ffacd0b85a97d-43d63e469ddsm6902713f8f.17.2026.04.10.04.54.50
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Fri, 10 Apr 2026 04:54:51 -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=20251104 header.d=gmail.com header.i="@gmail.com" header.h="Content-Transfer-Encoding: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=20251104; t=1775822092; x=1776426892; darn=lists.xenproject.org;
        h=content-transfer-encoding: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;
        bh=Kh6qrRMUEM2PKK9p9IRkh+u5YayQn9+4KQxesXCq4ho=;
        b=WPPBDhPGtvpTegKdsm8h6oGkjZWPlwHixAbxY3Lfy1ezP65lmmoam/fIt665PbAhhk
         100ZPDQ7rdwnwDJcOSO12+QhtqFpASG7f31PEcg39O0qoWiKSA7CllI4u2KfvOE6gPjZ
         EIYPJ0fgybBAtoIC65nHiWrIrlCQP47xg4Fwz64vCZhC67KcnNMG/kMKjR5yGRLScGBn
         zmU6CLmqxOnyTGTbxCCLh9b3WVdw0ed1HqjzSlgz8K3ykVTo5DZK0EHQ1z21TneM8yN2
         o86DtH9wVRAtYn1lW6zMImSGMpUSgMAnXkbEIWMh34Sj9BBWgL17NrJG9a9vlssI2LG3
         /RUw==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20251104; t=1775822092; x=1776426892;
        h=content-transfer-encoding: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;
        bh=Kh6qrRMUEM2PKK9p9IRkh+u5YayQn9+4KQxesXCq4ho=;
        b=S4JvRfQCPxBcXbvjl/70/x2e6ZvDwp7TmYR7+DVS/4gqJoHLsIcmvoQIhpDtiYoybz
         uWj8SarUDMW7NQW9hio8wIFmSopU5glSlO8V56FADcHCnmATSc+OQDzWPl0kEQkUUUIY
         szzqLbmM5jrK0vk7zhWeDv/AajKSTDV+vKphQs5MswhUrDMszt9N/mITDmMNNZJQEiDF
         mEL7pDdKZWi8loqqM2VFYhCPfd7uyIJYgYIwBT8M7KdfiK7fZ2Xjv5VcHJhc0jWEpPTW
         3PQ3ebgiHjoLN+L3aGANsPzipyCmsb0BW1M+xN5ls8P0Cezog+096Uhb8qg8EBtXaL6L
         t9QA==
X-Forwarded-Encrypted: i=1; AJvYcCUy9cIPjBSdc+BFu3P63BPXnBxbEWWVeArQY5L2B4S1L8xE89GQL6VwBZ3hi/pytEAB1dGaF6jQ3ig=@lists.xenproject.org
X-Gm-Message-State: AOJu0YyM6v8GjjQ2y5bq/DeLKFg8B62ZLRq4tP27P71GMbjqZk9xV8a6
	L44VRdDvOrgHYhc2fZMlheg7and3nKhMWZ3nMtRLjdbVdnYkB6mfwk2w
X-Gm-Gg: AeBDiet9ii9IuMVUuz2wuNWXsUeUiXmanJJeICfSrGv62IxhV8JRZB9i+Y9OUkr7t2z
	J9YUyxrB3z16ffqZxG5Qezx4ZCFx5SVxSAqf0Bgn815kaABsl4ySyq1suG6chl8RF2pJxNP4ITj
	bFymUwhFjLsGw6lPFP43n6rha9J6OAYO97C8jh7Kb+85kRPNFXJUehRN2/Wa+yRlC1Sx0YyUQna
	A2pvj/AW8QbyWtEpcZ4W4uVRKrR25KDXIDKCbC7vZKmRiMSWUvi8K9Ckg4YtEC5Q8ZPdDftd6At
	jlK894ojSoN3L69vWU5x946Hnnb4NAoDqqIJGZNYTn3f8rHbeTa2TETtD69eS/jy4+ZK8Iz/liH
	S1BMHBEWBs4OEPtBb6GNgOV0eY2c96yMaUFp4pRzV2qlan4k2j1Mrzzm47eyipkEDBnLAqT/AXh
	l30n/V+Ex6JcUqumoEluUwibuNHBbcN+r8ePKBfxDPiNAxccL0q3QfnR45hziLJUWreeHwIeDE9
	6A=
X-Received: by 2002:a05:6000:186e:b0:43b:8f38:3b88 with SMTP id ffacd0b85a97d-43d642a989bmr4442598f8f.25.1775822091473;
        Fri, 10 Apr 2026 04:54:51 -0700 (PDT)
Message-ID: <b46e8b04-f5b7-447c-ab54-c653db0ee223@gmail.com>
Date: Fri, 10 Apr 2026 13:54:49 +0200
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH v1 07/27] xen/riscv: implement make_timer_node()
To: Jan Beulich <jbeulich@suse.com>
Cc: Romain Caritey <Romain.Caritey@microchip.com>,
 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.pau@citrix.com>,
 Stefano Stabellini <sstabellini@kernel.org>, xen-devel@lists.xenproject.org
References: <cover.1773157782.git.oleksii.kurochko@gmail.com>
 <f1b759f4fa43f3a01ede0f99f21c3ac59b61f438.1773157782.git.oleksii.kurochko@gmail.com>
 <7a491f02-e9bf-4eae-8962-cc2ecd264d96@suse.com>
Content-Language: en-US
From: Oleksii Kurochko <oleksii.kurochko@gmail.com>
In-Reply-To: <7a491f02-e9bf-4eae-8962-cc2ecd264d96@suse.com>
Content-Type: text/plain; charset=UTF-8; format=flowed
Content-Transfer-Encoding: 7bit
X-purgate-ID: tlsNG-c201ff/1775822092-30D3796F-DACAFF79/10/73395122804
X-purgate-type: spam
X-purgate-size: 1773



On 4/1/26 4:24 PM, Jan Beulich wrote:
> On 10.03.2026 18:08, Oleksii Kurochko wrote:
>> The make_timer_node() function is implemented to return 0,
>> as RISC-V does not require the creation of a timer node.
>>
>> Signed-off-by: Oleksii Kurochko <oleksii.kurochko@gmail.com>
> 
> Acked-by: Jan Beulich <jbeulich@suse.com>
> 
> Yet: Why is this needed then in the first place? If this node may not
> be required, why would the function need providing? Shouldn't the call
> site be conditional then?

Generally, in DT for RISC-V there is a document which describes timer 
node (riscv,timer.yaml or sifive,clint.yaml), but the driver 
(drivers/clocksource/timer-riscv.c:244) is declared with 
TIMER_OF_DECLARE(riscv_timer, "riscv", ...). It matches the CPU node 
(compatible "riscv"), not the timer node itself. It then does 
of_find_compatible_node(NULL, NULL, "riscv,timer") only to read the 
optional riscv,timer-cannot-wake-cpu flag. But I don't see too much 
sense at the moment to enable timer-cannot-wake-cpu option.

Regarding, sifive,clint.yaml basically it has almost the same as 
riscv,timer node but also additionally provide some MMIO which are 
acessible only in M-mode (what isn't the case for virtualization as 
guest isn't ran in M-mode, otherwise emulation of M-mode register will 
be needed).

So potentially some will want to  add riscv,timer node to enable 
timer-cannot-wake-cpu option, so then some changes additionally should 
be done in this function.

Considering that it isn't needed now and timebase-frequency property is 
always part of cpu node not a timer one, I think we can go with an empty 
implementation of make_timer_node().
I can add some extra information to commit message.

~ Oleksii







From xen-devel-bounces@lists.xenproject.org Fri Apr 10 12:00:51 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Fri, 10 Apr 2026 12:00:51 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1278858.1563570 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wBAXT-0005Rx-Bm; Fri, 10 Apr 2026 12:00:43 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1278858.1563570; Fri, 10 Apr 2026 12:00: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 1wBAXT-0005Rq-8n; Fri, 10 Apr 2026 12:00:43 +0000
Received: by outflank-mailman (input) for mailman id 1278858;
 Fri, 10 Apr 2026 12:00:42 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <Luca.Fancellu@arm.com>) id 1wBAXR-0005Rj-Sc
 for xen-devel@lists.xenproject.org; Fri, 10 Apr 2026 12:00:42 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wBAXR-00FY0q-4n
 for xen-devel@lists.xenproject.org; Fri, 10 Apr 2026 14:00:41 +0200
Received: from [10.42.69.12] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <Luca.Fancellu@arm.com>)
 id 69d8e668-5cb7-0a2a0a5109dd-0a2a450cd21c-4
 for <xen-devel@lists.xenproject.org>; Fri, 10 Apr 2026 14:00:41 +0200
Received: from [52.101.66.66]
 (helo=DUZPR83CU001.outbound.protection.outlook.com)
 by tlsNG-d25034.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.0)
 (envelope-from <Luca.Fancellu@arm.com>)
 id 69d8e666-f40c-0a2a450c0019-34654242196a-3
 for <xen-devel@lists.xenproject.org>; Fri, 10 Apr 2026 14:00:39 +0200
Received: from DUZPR01CA0074.eurprd01.prod.exchangelabs.com
 (2603:10a6:10:3c2::20) by DU0PR08MB7858.eurprd08.prod.outlook.com
 (2603:10a6:10:3b2::11) with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9769.42; Fri, 10 Apr
 2026 12:00:34 +0000
Received: from DU2PEPF0001E9C3.eurprd03.prod.outlook.com
 (2603:10a6:10:3c2:cafe::7d) by DUZPR01CA0074.outlook.office365.com
 (2603:10a6:10:3c2::20) with Microsoft SMTP Server (version=TLS1_3,
 cipher=TLS_AES_256_GCM_SHA384) id 15.20.9769.42 via Frontend Transport; Fri,
 10 Apr 2026 12:00:34 +0000
Received: from outbound-uk1.az.dlp.m.darktrace.com (4.158.2.129) by
 DU2PEPF0001E9C3.mail.protection.outlook.com (10.167.8.72) with Microsoft SMTP
 Server (version=TLS1_3, cipher=TLS_AES_256_GCM_SHA384) id 15.20.9769.17 via
 Frontend Transport; Fri, 10 Apr 2026 12:00:34 +0000
Received: from DU2PR08MB7272.eurprd08.prod.outlook.com (2603:10a6:10:2d7::16)
 by AS8PR08MB6679.eurprd08.prod.outlook.com (2603:10a6:20b:393::10)
 with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9769.44; Fri, 10 Apr
 2026 11:59:30 +0000
Received: from DU2PR08MB7272.eurprd08.prod.outlook.com
 ([fe80::5d34:206f:373:a323]) by DU2PR08MB7272.eurprd08.prod.outlook.com
 ([fe80::5d34:206f:373:a323%6]) with mapi id 15.20.9769.018; Fri, 10 Apr 2026
 11:59: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=arm.com header.i="@arm.com" header.h="From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck"; dkim=pass header.s=selector1 header.d=arm.com header.i="@arm.com" header.h="From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck"
ARC-Seal: i=2; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=pass;
 b=Ncylm3gmOie/k6zm04ck6sljsJkGzEy3qjkwHGFmEJ54oRySq7m9+vZZBxLb9aHN2YOxJzdXRVWkdIhORpt4o/b85acmug4sjByLJGksmdYjQ3zTUAIkXmGAlCdbZhiMjt+KyIg0XDiF+D33jyan1Xqg06w3IHu2qZ4BrF9txSwmRyPgyUpaLJ39dgYqCHZVe16c8V8TRZtVztIBcfvz+KVyV1q7wPJlUMwXVgRPus2xrIxgE3GDUWidMjwr0LDhL1egM2O26i+i87COUbyrg6TFdF+SNchdVnM4VFLWzCF4nQWMw6WDJ0D++2naoelGhkTJmiYzlRNIBRnevKbqVQ==
ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com;
 s=arcselector10001;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1;
 bh=uK8yCtU+S/r0a7E8iWeSpJFKo7686vFLEV1c3RfxUvE=;
 b=xAddFIimqg18EwZbRJhIGe8bb4c2JkRWI+691AkkJZh8/vcCwcOYe17NvyUcBId8mmdhYy2LgsbOTaBi+HJt8ao+ypkmFkMtm1vbOwZF88/LFP++fgNaZPfw2r+dy486vCDODm92ZeZjzS1yGeW2zllCMLRf2XVUsmUJ/CI4GgK7jY+i2snYNGtpUjTPUBBHqm2A4tiuMCJO8Q6rPEjNJ90Qd3f9IagupmsKg88Wo02sUuvUwvUGgqHR0IkMYWmULpfApXnWQi6+Y8fTo7YlUoNxPVAcTZcF+1lBolG0svYBqtm7nRdcVIkgARq7ihjWgs0uoIC0HbycIxQNPih+Jw==
ARC-Authentication-Results: i=2; mx.microsoft.com 1; spf=pass (sender ip is
 4.158.2.129) smtp.rcpttodomain=epam.com smtp.mailfrom=arm.com; dmarc=pass
 (p=none sp=none pct=100) action=none header.from=arm.com; dkim=pass
 (signature was verified) header.d=arm.com; arc=pass (0 oda=1 ltdi=1
 spf=[1,1,smtp.mailfrom=arm.com] dkim=[1,1,header.d=arm.com]
 dmarc=[1,1,header.from=arm.com])
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=arm.com; s=selector1;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck;
 bh=uK8yCtU+S/r0a7E8iWeSpJFKo7686vFLEV1c3RfxUvE=;
 b=BbTT0My3mu78lM79mUpijvMiVi6ykk5ktKLRrBeoPHlGa1fqxxjdZ6fhU5q/EdkPnRHltzX0H3mXKFm/oR4iPtb+/cMX7GoXS+NzUcFZZsmJ7uutiH3WxbEW6DElX6a8JALQ+3uUMKNjyJSSyWa4xvoYKfEkoSY7KJZV4sjalpg=
X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 4.158.2.129)
 smtp.mailfrom=arm.com; dkim=pass (signature was verified)
 header.d=arm.com;dmarc=pass action=none header.from=arm.com;
Received-SPF: Pass (protection.outlook.com: domain of arm.com designates
 4.158.2.129 as permitted sender) receiver=protection.outlook.com;
 client-ip=4.158.2.129; helo=outbound-uk1.az.dlp.m.darktrace.com; pr=C
ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none;
 b=UGQgCreSrsuavoRX3ZJEgskK4EdBYCEKCEuGjksxy1NhvgmVNakG6izjeuXxZYk/xx1tiU2g+X3aGLoUdO3BPs8gByUW3n2EplQ6w+ss9/QxEziRq+I6QJjUVkwc7MN4b6l9t3tWUKO+3WIRy08G0UX3IbSiVIQHTXT2+2HVUn06zxC93xAsEfKqFEpSb06uvatufBE6Tp1hFCWVrD3eg38IlgGRRK65vIT4Ro+Vx9mWgsl8aoXEA5iUo0iyDk36ik3Fks6T0/icft6bnBBDHiOp1rrVoq16pmlpbmllxjXChBgyBmD5ehxlIs8nr/zDIRd1JJNmfBGdeDdS6Nt2gw==
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com;
 s=arcselector10001;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1;
 bh=uK8yCtU+S/r0a7E8iWeSpJFKo7686vFLEV1c3RfxUvE=;
 b=STosCpcdpa8SbigbKA4t8zxT9ZXl2ozycWfhvMjlIYq0k3uSFTy+JVpHvY+imP1vXY083dsWL2qjJpFnW1/Ok6w9Pi38Smz/JXmY6FDeNUEFICFme2znTqQQ80KegZlCg+ttuzYf+VtWqXyCDV8YCu7Vfr6IjyLzbw0CUbplzaoPYS70RWuVuDv5lbMxgk7NNf8CbqcrFCxDTwjnNuiAjydbhhk4Z8ak1eqOrYdPfs83KC4jU8wxhqZHu+ta2q7Kq/HZtYTxT7OHAFgghJXUg3hdKqQ7J0B2beTKbsmEwK6gz4kZOVt0Nn7IlF4ti2gT3GotKV85GO6ckNbJM983ow==
ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass
 smtp.mailfrom=arm.com; dmarc=pass action=none header.from=arm.com; dkim=pass
 header.d=arm.com; arc=none
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=arm.com; s=selector1;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck;
 bh=uK8yCtU+S/r0a7E8iWeSpJFKo7686vFLEV1c3RfxUvE=;
 b=BbTT0My3mu78lM79mUpijvMiVi6ykk5ktKLRrBeoPHlGa1fqxxjdZ6fhU5q/EdkPnRHltzX0H3mXKFm/oR4iPtb+/cMX7GoXS+NzUcFZZsmJ7uutiH3WxbEW6DElX6a8JALQ+3uUMKNjyJSSyWa4xvoYKfEkoSY7KJZV4sjalpg=
From: Luca Fancellu <Luca.Fancellu@arm.com>
To: Milan Djokic <milan_djokic@epam.com>
CC: "xen-devel@lists.xenproject.org" <xen-devel@lists.xenproject.org>, 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.pau@citrix.com>
Subject: Re: [PATCH v3 05/23] xen/arm: vsmmuv3: Add dummy support for virtual
 SMMUv3 for guests
Thread-Topic: [PATCH v3 05/23] xen/arm: vsmmuv3: Add dummy support for virtual
 SMMUv3 for guests
Thread-Index: AQHcyOF9C3z/5XgHeE6M79/1s69fTw==
Date: Fri, 10 Apr 2026 11:59:30 +0000
Message-ID: <B816D34B-290F-4C1C-A66A-9124A26AE07F@arm.com>
References: <cover.1774918270.git.milan_djokic@epam.com>
 <97aa20fdcec324bb58c6869ddcba5fcf29bf75b3.1774918270.git.milan_djokic@epam.com>
In-Reply-To:
 <97aa20fdcec324bb58c6869ddcba5fcf29bf75b3.1774918270.git.milan_djokic@epam.com>
Accept-Language: en-GB, en-US
Content-Language: en-US
X-MS-Has-Attach:
X-MS-TNEF-Correlator:
x-mailer: Apple Mail (2.3826.700.81.1.6)
Authentication-Results-Original: dkim=none (message not signed)
 header.d=none;dmarc=none action=none header.from=arm.com;
x-ms-traffictypediagnostic:
	DU2PR08MB7272:EE_|AS8PR08MB6679:EE_|DU2PEPF0001E9C3:EE_|DU0PR08MB7858:EE_
X-MS-Office365-Filtering-Correlation-Id: 30f2af65-180e-4717-ebe1-08de96f8c56e
x-checkrecipientrouted: true
nodisclaimer: true
X-MS-Exchange-SenderADCheck: 1
X-MS-Exchange-AntiSpam-Relay: 0
X-Microsoft-Antispam-Untrusted:
 BCL:0;ARA:13230040|1800799024|366016|376014|38070700021|22082099003|18002099003|56012099003;
X-Microsoft-Antispam-Message-Info-Original:
 bAM3MvW+1PtYuNblkIwQ3tBhfg5QKSKfJkQ3jFbhex7dSH4MIYMMBVq7fWlzq+8QLQiq1g3IlAntACXe3znIhDk7FdCVAOAgl8yoFlpAF7TzKGl48tj6AJQ6EOWBQpJV6fl1+SuFLIpuH1oP+sgV+QdqjPQdRuHVkTZp3lNPg3HA3vnsSeoGfd9+oc5dIojS0gSARMwMfzB8H/eHIpj3lYamWilM96rRc1guqafwodNPMrTuMbC/9q/tJjGvUaSbwjgYhoNsoixy6ZTew0yUxaSo2ZvGNpv3aA5ZokRW89oJoQdIgougWqVEzxp6yiCMtYHPwy5gFHbssR+FB6dl4D8tHL5s9hy7CLCnuhhnu+le9+zNRbNiAM6HG5hvivqWPzYMMmvzr/2OzQ0gnweXCWBAFTDDBtG86nXW6R0H0mNsm0vRrf04Lrm5oKsqzZ3kEx+jPH+V0kJ26AUrJe277RtWeXtlKKRfat3M2IN+wpaNSV50tpsizoZomOeIAnVgP1eoga2XWGsouNaH/f3RfOKgJ2gXIMvD9cgRA6GGQ3W2J840UgazflkuGcKesmgJO+fUtme3wDkoo+JbcUgGMSgcr2XLQLKvNSVVjXHarlgHWMAkttrQqyPLEJ11RsYtwMLa9b/Aq/H9UrZL+QqfwmT/UoyCabSMxzZTwwRM8PUV0WaPHXSQa9AM/wgoEJX630mvjhnuTEJvCK9+MVRC+3LmI0kRuZjcqr+Wky0y6y/Lb6i+QFoV7u2h0FpbaMAtq5PiWBrn9KoC+a9EDadzKfsuaHqJ6NFmX5aSSk+mm40=
X-Forefront-Antispam-Report-Untrusted:
 CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:DU2PR08MB7272.eurprd08.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(1800799024)(366016)(376014)(38070700021)(22082099003)(18002099003)(56012099003);DIR:OUT;SFP:1101;
Content-Type: text/plain; charset="iso-8859-1"
Content-ID: <507DD605E6DFC948B1B2CAB575B15BAD@eurprd08.prod.outlook.com>
Content-Transfer-Encoding: quoted-printable
MIME-Version: 1.0
X-Exchange-RoutingPolicyChecked:
 Anr196Rq1nXKnY2ttclyyiAAlYwZkNQXzmoub262L2dpLUGtXDia0aHoKkXW7gTUdHGuLY5HaxEa5FnJK8wqUaDNZoiNJCiqKK21nPISILj3RWW4UySw7mK2IaVxeRpGpoVvTN39xCOpDYZkHnm7uWnzSEqK5FIh/RvtNuilm6QHakA20BvgkKO44nQcNuVR+fb+lw3NDGoL2kqiXr245GKTiO9usuwX6wfBPfnniB9yF29FR5oaovp0FxkE2qEbJKkG2ZbRyutJemz/vj1DO2QZWoNcqV9URllYOSrKdN30WlCBOshoH58j/tnwiLeBAYDbVouj4z2TeLP6t44b0Q==
X-MS-Exchange-Transport-CrossTenantHeadersStamped: AS8PR08MB6679
X-EOPAttributedMessage: 0
X-MS-Exchange-Transport-CrossTenantHeadersStripped:
 DU2PEPF0001E9C3.eurprd03.prod.outlook.com
X-MS-PublicTrafficType: Email
X-MS-Office365-Filtering-Correlation-Id-Prvs:
	690caf4f-331b-45bd-a379-08de96f89f8f
X-Microsoft-Antispam:
	BCL:0;ARA:13230040|1800799024|376014|36860700016|14060799003|82310400026|35042699022|18002099003|56012099003|22082099003;
X-Microsoft-Antispam-Message-Info:
	ypNEHOu9H8tISBf6P/fwsqOHkxAhn/nWXRAUmcTRrBPAnSXNK94eJO02DP5tsG0BMuvHfUtghh+o8DEltmetNSIx0czmE71d8LNVopyYrLL9GwL2G+ne1Mns82ZNbqlL5aliXrjx3cUpq7thKtRNtMIt5IxbAX3OdB5IS/ztLPd8m8eAOIy8I9iJPasdz7aiwIw9pO9IPJCVoBegLO+3IP0aWeMPqvFjAVslqgFS+933WpoIGseV3xfv5yU3Q+gFdg+OHLxtgEuBBDGAf3xcRwfdv0I/RhGt1Dxr1tQBC8yACAn8qgyK+jl7DOVdJgewMLRwms/OJQRql427lvFBLfZgOAeBqDtAK+1mO7s/H99ah8KFv+lV7hnojvp/d19caVXozFP6ak/cHWjbwbDoswKjZb9fZXRs3gn/HHilu5WKJquNCEVwXtNj3MU+NT+ptP0fXtRiijolkK+9IhvRRgoyllpiMvihygOtctLChlp30cO2mRTW6ol8T1XDl1BPbMgga9n/E0rZV/+193VPnMz/xD04CjXEJX2fhoUeIENSR5dBVTUmgcbWmOPJ+R9yt7jN6fw/QVKiM2WYyX9GShGm+c/2A1cba649OTv27RH9/F+wVOm3qERaSNKSkmorbCqswK/Gi/azt5A5bQRSQnT5qUrTRNSZPar2zGpJm4VobpROwwQu6f4IvAchZb6L5xxPzJRdEVcYw+YSkr+rvpgnOIMeNTAu6kbxsD9QXHQo72Sx689cqcEzn0eHiXiIIfsY1O8H9y/EUOHZ4gRIqg==
X-Forefront-Antispam-Report:
	CIP:4.158.2.129;CTRY:GB;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:outbound-uk1.az.dlp.m.darktrace.com;PTR:InfoDomainNonexistent;CAT:NONE;SFS:(13230040)(1800799024)(376014)(36860700016)(14060799003)(82310400026)(35042699022)(18002099003)(56012099003)(22082099003);DIR:OUT;SFP:1101;
X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1
X-MS-Exchange-AntiSpam-MessageData-0:
	B86L7PTgdiGOT9hssZqsNbWhobFUrFYQmkjZIhIIDTpwxff7ECFD1lARbTFQZTqmfLwgT3wPJYJftbx9WCsE4IM9LsP5oZUUMwN0Igb7Xp02sLupn4XtORfFQTW6ZwIYeRNr1kRdFyVn1RqDVDJ/NTklPt3uvbryF/NpHRhg2m1a4uBRHpuxYBybZdjTHQhmm12Eh6NCoMXYfP5LWQZMGd8lB/X8XezxzR9Pp4cSsXbdeFkiUtTEDr3rN+ugGjBwdyK1vhFDGpc5ecjkHsOhgpQces7Cd9OL+F4KxsB/Sn/XZsVSjunzAqknZjuG+ofxxTUlDxvsxVjmGFE2RhqBE6nn3apQVQdeb5/uNOSux6UxvorkOsd9aLXJDc2/zhiMsAXh4RMqkfoT65ipqUIpEFvaqyeUIbHm0jV7rvzwfdWBLnNsFe8h/bl7Ndezxy6n
X-OriginatorOrg: arm.com
X-MS-Exchange-CrossTenant-OriginalArrivalTime: 10 Apr 2026 12:00:34.0620
 (UTC)
X-MS-Exchange-CrossTenant-Network-Message-Id: 30f2af65-180e-4717-ebe1-08de96f8c56e
X-MS-Exchange-CrossTenant-Id: f34e5979-57d9-4aaa-ad4d-b122a662184d
X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=f34e5979-57d9-4aaa-ad4d-b122a662184d;Ip=[4.158.2.129];Helo=[outbound-uk1.az.dlp.m.darktrace.com]
X-MS-Exchange-CrossTenant-AuthSource:
	DU2PEPF0001E9C3.eurprd03.prod.outlook.com
X-MS-Exchange-CrossTenant-AuthAs: Anonymous
X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem
X-MS-Exchange-Transport-CrossTenantHeadersStamped: DU0PR08MB7858
X-purgate-ID: tlsNG-d25034/1775822439-83945A3D-4EBB1E6E/0/0
X-purgate-type: clean
X-purgate-size: 4222

Hi Milan,


>=20
> diff --git a/xen/drivers/passthrough/arm/viommu.c b/xen/drivers/passthrou=
gh/arm/viommu.c
> index 7ab6061e34..53ae46349a 100644
> --- a/xen/drivers/passthrough/arm/viommu.c
> +++ b/xen/drivers/passthrough/arm/viommu.c
> @@ -2,12 +2,42 @@
>=20
> #include <xen/errno.h>
> #include <xen/init.h>
> +#include <xen/irq.h>
> #include <xen/types.h>
>=20
> #include <asm/viommu.h>
>=20
> +/* List of all host IOMMUs */
> +LIST_HEAD(host_iommu_list);
> +
> const struct viommu_desc __read_mostly *cur_viommu;
>=20
> +/* Common function for adding to host_iommu_list */
> +void add_to_host_iommu_list(paddr_t addr, paddr_t size,
> +                            const struct dt_device_node *node)
> +{
> +    struct host_iommu *iommu_data;
> +
> +    iommu_data =3D xzalloc(struct host_iommu);
> +    if ( !iommu_data )
> +        panic("vIOMMU: Cannot allocate memory for host IOMMU data\n");
> +
> +    iommu_data->addr =3D addr;
> +    iommu_data->size =3D size;
> +    iommu_data->dt_node =3D node;
> +    iommu_data->irq =3D platform_get_irq(node, 0);
> +    if ( iommu_data->irq < 0 )
> +    {
> +        gdprintk(XENLOG_ERR,
> +                 "vIOMMU: Cannot find a valid IOMMU irq\n");

We need to free iommu_data here

> +        return;
> +    }
> +
> +    printk("vIOMMU: Found IOMMU @0x%"PRIx64"\n", addr);
> +
> +    list_add_tail(&iommu_data->entry, &host_iommu_list);
> +}
> +
> int domain_viommu_init(struct domain *d, uint16_t viommu_type)
> {
>     if ( viommu_type =3D=3D XEN_DOMCTL_CONFIG_VIOMMU_NONE )
> diff --git a/xen/drivers/passthrough/arm/vsmmu-v3.c b/xen/drivers/passthr=
ough/arm/vsmmu-v3.c
> new file mode 100644
> index 0000000000..6b4009e5ef
> --- /dev/null
> +++ b/xen/drivers/passthrough/arm/vsmmu-v3.c
> @@ -0,0 +1,124 @@
> +/* SPDX-License-Identifier: (GPL-2.0-or-later OR BSD-2-Clause) */
> +
> +#include <xen/param.h>
> +#include <xen/sched.h>
> +#include <asm/mmio.h>
> +#include <asm/viommu.h>
> +
> +/* Struct to hold the vIOMMU ops and vIOMMU type */
> +extern const struct viommu_desc __read_mostly *cur_viommu;
> +
> +struct virt_smmu {
> +    struct      domain *d;
> +    struct      list_head viommu_list;
> +};
> +
> +static int vsmmuv3_mmio_write(struct vcpu *v, mmio_info_t *info,
> +                              register_t r, void *priv)
> +{
> +    return IO_HANDLED;
> +}
> +
> +static int vsmmuv3_mmio_read(struct vcpu *v, mmio_info_t *info,
> +                             register_t *r, void *priv)
> +{
> +    return IO_HANDLED;

If this has to be treated for now as RAZ, being a dummy implementation,
I would add *r =3D 0;

> +}
> +
> +static const struct mmio_handler_ops vsmmuv3_mmio_handler =3D {
> +    .read  =3D vsmmuv3_mmio_read,
> +    .write =3D vsmmuv3_mmio_write,
> +};
> +
> +static int vsmmuv3_init_single(struct domain *d, paddr_t addr, paddr_t s=
ize)
> +{
> +    struct virt_smmu *smmu;
> +
> +    smmu =3D xzalloc(struct virt_smmu);
> +    if ( !smmu )
> +        return -ENOMEM;
> +
> +    smmu->d =3D d;
> +
> +    register_mmio_handler(d, &vsmmuv3_mmio_handler, addr, size, smmu);
> +
> +    /* Register the vIOMMU to be able to clean it up later. */
> +    list_add_tail(&smmu->viommu_list, &d->arch.viommu_list);
> +
> +    return 0;
> +}
> +
> +int domain_vsmmuv3_init(struct domain *d)
> +{
> +    int ret;
> +    INIT_LIST_HEAD(&d->arch.viommu_list);
> +
> +    if ( is_hardware_domain(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->siz=
e);
> +            if ( ret )
> +                return ret;
> +        }
> +    }
> +    else
> +    {
> +        ret =3D vsmmuv3_init_single(d, GUEST_VSMMUV3_BASE, GUEST_VSMMUV3=
_SIZE);
> +        if ( ret )
> +            return ret;
> +    }
> +
> +    return 0;
> +}
> +
> +int vsmmuv3_relinquish_resources(struct domain *d)
> +{
> +    struct virt_smmu *pos, *temp;
> +
> +    /* Cope with unitialized vIOMMU */

Typo s/unitialized/uninitialized/


Cheers,
Luca




From xen-devel-bounces@lists.xenproject.org Fri Apr 10 12:02:49 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Fri, 10 Apr 2026 12:02:49 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1278872.1563578 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wBAZT-0005x6-MR; Fri, 10 Apr 2026 12:02:47 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1278872.1563578; Fri, 10 Apr 2026 12:02: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 1wBAZT-0005wz-JW; Fri, 10 Apr 2026 12:02:47 +0000
Received: by outflank-mailman (input) for mailman id 1278872;
 Fri, 10 Apr 2026 12:02:46 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <jbeulich@suse.com>) id 1wBAZS-0005wq-3s
 for xen-devel@lists.xenproject.org; Fri, 10 Apr 2026 12:02:46 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wBAZR-00EPvJ-Fr
 for xen-devel@lists.xenproject.org; Fri, 10 Apr 2026 14:02:45 +0200
Received: from [10.42.69.5] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <jbeulich@suse.com>)
 id 69d8e6df-5cb7-0a2a0a5109dd-0a2a4505e692-38
 for <xen-devel@lists.xenproject.org>; Fri, 10 Apr 2026 14:02:45 +0200
Received: from [209.85.128.52] (helo=mail-wm1-f52.google.com)
 by tlsNG-c201ff.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.0)
 (envelope-from <jbeulich@suse.com>)
 id 69d8e6e5-3760-0a2a45050019-d1558034c157-3
 for <xen-devel@lists.xenproject.org>; Fri, 10 Apr 2026 14:02:45 +0200
Received: by mail-wm1-f52.google.com with SMTP id
 5b1f17b1804b1-4838c15e3cbso17082925e9.3
 for <xen-devel@lists.xenproject.org>; Fri, 10 Apr 2026 05:02:45 -0700 (PDT)
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-488d5d68585sm31953415e9.1.2026.04.10.05.02.44
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Fri, 10 Apr 2026 05:02:44 -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=google header.d=suse.com header.i="@suse.com" header.h="Content-Transfer-Encoding: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=1775822565; x=1776427365; darn=lists.xenproject.org;
        h=content-transfer-encoding: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;
        bh=n4gfOzT0Bf6nfUINS0bYkfoxYDxexXwmAFrNN+WIS34=;
        b=Vv0+MuIZYXYYLI1u090rW0UjuDksgVh+qOf1XAD3stmx89Y7Bb/MvkpX3Zcpt1jjHY
         /tUNf7PyoBqo3wRitGx0xkFaGI8AI3ZIMPGmIZF4Xyyfmhd8MEqg7mreWi52TYEpVPHs
         Nn8soBRqiZmFkp75pDS+0jkSpheUn+wuOcYfjq4gP+y++nbrfZtndYw51OyDwpYchoS/
         cqsUPB1RQQFLkPH3JuySeZpfjCnv3Ihn3M/ucP8DSZUZMzXFiccTVcANfgXZnskvoklI
         0KHvWIdHi+Ts3KlSKQZZyVQBR+2T4PJMcS/jOPFBRt0RnfYZDIW5LZgRTwNg4x0aj1/m
         HIZw==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20251104; t=1775822565; x=1776427365;
        h=content-transfer-encoding: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;
        bh=n4gfOzT0Bf6nfUINS0bYkfoxYDxexXwmAFrNN+WIS34=;
        b=SUOJQI5VQe2S+Pmkie8fJEbD5ur103PRlW/Gogdl8e9N7YwlJSfGBQFreUP2Y/sk7x
         X1agdv6VRhH+fLv2UNEiOYxMMUQrffWA/GgiB/2zGsEhc2fqNcsebNBMYVCdfjugBzeA
         w7ducJIt9yePCuw9sF2TFjTUS/PrIzjfkTBTLWxKXVHw2O/s/f9bse86CuPc38zyD8hh
         6TW8UgMRtCOdQfAP8oDsU7/SSULgBc4DaQZLasirhFIsvmNij6gZl6p1LtqaXY1MHNck
         FxUYjTcAUPETi68fuiR5UvbxTRjSOEeZXkIOyvrzgzRaGIueZBUIARCxC2Ouu9eotvq4
         J5pQ==
X-Forwarded-Encrypted: i=1; AJvYcCWh/7exjeAXKHweptupZarj5zTirLCumrYdo50R/yfs1MN78LTBehvC/9aOSOZaDNphg8xj/7j0DsI=@lists.xenproject.org
X-Gm-Message-State: AOJu0YzRaNxTI9wfubrLr+gruMOszLWVzBgTowgFmV5ELgpi3HavztkH
	aoVMcwBKYBQlpLJqM0SwbcwVSHhsO+kVTGizK7lZjhTWBZFo2Im4Ov7QxsLEpcCWQQ==
X-Gm-Gg: AeBDieucAXKCcFYAZXTovVT4KmkE00uVJ3tEbPYoKi0Z7/MgNwnxZ1r7+K3Nvd56lcb
	GvOWUjGbJ85kshKoQlc/AM+bIeq/Mk/r2N3xd7bYwGYbr5Tfw2a/GF2Rx2u4XffwpSJkXilbxtK
	eIESaUdEcKi8EpaTlbbUzuBk30fAotNc+X+kIhvxtlo8Q6DSHX2qIGRJYXvYbeUm7ZxrY7VEnnR
	ZSUQyeeOkbgk5u0Phr4AeehfIAO8z2C93PsQfjy+BrfHRjkR42lYKMYAecN3wDH7Kc3cfLSFrMu
	4OzVoz08ml0SymC3gAzBXWsdXC1cw4558xeZM0XkL0NTDkXc3tPuywa1QtemIXp6cAGwX+IN8Mo
	FbjfDqXYwxI3t4/NX4q1Ye6VcnfIa1BjONxk9gy9ZMaKBUa0d5fGy1WnsvPYlNqZThIorneDDrV
	GEFoleqBPeGRx+v/thyVqZ06loaTiT+MmlK5ZsRwgvICjk2WlPmXPpoknO6pTJgiiuwLdtFeSyv
	ro5RlwFUg3VzaA1L+ZskVSVug==
X-Received: by 2002:a05:600c:6215:b0:488:a824:fdff with SMTP id 5b1f17b1804b1-488d684c705mr35969665e9.22.1775822564658;
        Fri, 10 Apr 2026 05:02:44 -0700 (PDT)
Message-ID: <89d57cca-fecc-43e8-8ed0-88e80bb98cf3@suse.com>
Date: Fri, 10 Apr 2026 14:02:42 +0200
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH v1 06/27] xen/riscv: implement make_cpus_node()
To: Oleksii Kurochko <oleksii.kurochko@gmail.com>
Cc: Romain Caritey <Romain.Caritey@microchip.com>,
 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.pau@citrix.com>,
 Stefano Stabellini <sstabellini@kernel.org>, xen-devel@lists.xenproject.org
References: <cover.1773157782.git.oleksii.kurochko@gmail.com>
 <fd64b8526a23e9d7775b9b48c5a933b0673c4fba.1773157782.git.oleksii.kurochko@gmail.com>
 <7505a281-b481-4f3a-a7df-d8c234f28279@suse.com>
 <147735e4-cd03-4efa-8981-3f29e15d5e6b@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: <147735e4-cd03-4efa-8981-3f29e15d5e6b@gmail.com>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 7bit
X-purgate-ID: tlsNG-c201ff/1775822565-32B2096F-9662AE8F/0/0
X-purgate-type: clean
X-purgate-size: 1962

On 10.04.2026 13:19, Oleksii Kurochko wrote:
> On 4/1/26 4:11 PM, Jan Beulich wrote:
>> On 10.03.2026 18:08, Oleksii Kurochko wrote:
>>> @@ -44,3 +46,109 @@ int __init construct_domain(struct domain *d, struct kernel_info *kinfo)
>>>   
>>>       return 0;
>>>   }
>>> +
>>> +int __init make_cpus_node(const struct domain *d, void *fdt)
>>> +{
>>> +    int res;
>>> +    const struct dt_device_node *cpus = dt_find_node_by_path("/cpus");
>>> +    unsigned int cpu;
>>> +    u32 timebase_frequency;
>>
>> uint32_t please.
>>
>>> +    bool frequency_valid;
>>> +    uint32_t *next_phandle = &((struct domain *)d)->arch.next_phandle;
>>
>> No casting away of const, please.
>>
>>> +    dt_dprintk("Create cpus node\n");
>>> +
>>> +    if ( !cpus )
>>> +    {
>>> +        dprintk(XENLOG_ERR, "Missing /cpus node in the device tree?\n");
>>> +        return -ENOENT;
>>> +    }
>>> +
>>> +    frequency_valid = dt_property_read_u32(cpus, "timebase-frequency",
>>> +                                           &timebase_frequency);
>>> +
>>> +    res = fdt_begin_node(fdt, "cpus");
>>> +    if ( res )
>>> +        return res;
>>> +
>>> +    res = fdt_property_cell(fdt, "#address-cells", 1);
>>> +    if ( res )
>>> +        return res;
>>> +
>>> +    res = fdt_property_cell(fdt, "#size-cells", 0);
>>> +    if ( res )
>>> +        return res;
>>> +
>>> +    if ( frequency_valid )
>>> +        res = fdt_property_cell(fdt, "timebase-frequency", timebase_frequency);
>>
>> Handing through a property directly makes me wonder how that's going to
>> fit with migration. I understand migration may not even be a mid-term
>> goal, but still.
> 
> Do you mean if I will set timebase-frequency = X for guest cpu node and 
> then this guest will migrate to h/w where timebase-frequency is Y, so we 
> will have unsynced timebase-frequency?

Yes (I wouldn't name it "unsync-ed" though; it'll simply be wrong).

Jan


From xen-devel-bounces@lists.xenproject.org Fri Apr 10 12:04:42 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Fri, 10 Apr 2026 12:04:42 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1278881.1563587 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wBAbJ-0006VR-0d; Fri, 10 Apr 2026 12:04:41 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1278881.1563587; Fri, 10 Apr 2026 12:04: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 1wBAbI-0006VK-UA; Fri, 10 Apr 2026 12:04:40 +0000
Received: by outflank-mailman (input) for mailman id 1278881;
 Fri, 10 Apr 2026 12:04:39 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <Oleksii_Moisieiev@epam.com>) id 1wBAbH-0006VA-6h
 for xen-devel@lists.xenproject.org; Fri, 10 Apr 2026 12:04:39 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wBAbG-004zc4-Gv
 for xen-devel@lists.xenproject.org; Fri, 10 Apr 2026 14:04:38 +0200
Received: from [10.42.69.6] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <Oleksii_Moisieiev@epam.com>)
 id 69d8e747-e002-0a2a0a5209dd-0a2a450686b8-42
 for <xen-devel@lists.xenproject.org>; Fri, 10 Apr 2026 14:04:38 +0200
Received: from [52.101.66.133]
 (helo=DUZPR83CU001.outbound.protection.outlook.com)
 by tlsNG-16d1c6.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.0)
 (envelope-from <Oleksii_Moisieiev@epam.com>)
 id 69d8e756-0df0-0a2a45060019-346542851bc8-3
 for <xen-devel@lists.xenproject.org>; Fri, 10 Apr 2026 14:04:38 +0200
Received: from DU5PR03MB10263.eurprd03.prod.outlook.com (2603:10a6:10:519::5)
 by DU5PR03MB10218.eurprd03.prod.outlook.com (2603:10a6:10:51a::9)
 with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9769.18; Fri, 10 Apr
 2026 12:04:36 +0000
Received: from DU5PR03MB10263.eurprd03.prod.outlook.com
 ([fe80::8c9e:b301:61c0:3908]) by DU5PR03MB10263.eurprd03.prod.outlook.com
 ([fe80::8c9e:b301:61c0:3908%5]) with mapi id 15.20.9769.020; Fri, 10 Apr 2026
 12:04: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=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=A9qV6vMYaPb+lico7rk13WEc9b9ynlFC7TZ9luiE1UL5J0dh3SSlpWd0GcGonDA1su1Dzp8GE3i35IzkWkL6rMGnwyXPqGweORPHFjhKF1JWba8WYr2QrXisU2Dvi8+oRCsr1QAhpHOARka6LaXUPpi4BotmLAR39UUzMa9ABUsK0BKRjMnA8Eld5mcOD8PXsSRCx+7AmHELfref/KzASR1fxABhpVgy9dd0I3dMBSkadxSNA9JVfX/aIjkUSw7ndxiWmovG5CeSb69AQBoI2I+ITd9Xb3heHUcyHny+AsWeNIR+g917ltK6Vt6gMyHJ2neADoovQtR8uX7mvYf6tw==
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com;
 s=arcselector10001;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1;
 bh=7ocYjMX8B4d+THjQiKydpZOLUXpSsq8+97VyZcMyask=;
 b=d7Hnr+pG51o2n0uIR4VItNQ4f3miDqjHCb55w1fIzrH+eMUvbvjn2YLLUFCw4lbnznVyM2gSC+ALiZbyNlEtUf/gxd0w0/5075Ya/35mWFIOprdzxYzZjTi6bCc1Sa4uJWPrToWqMcbWuolgpa+ljXfDQITa0LbnVt/pzOhv1EsJ/3Gh53Px429tiKcQe43hxDcACbdqwimFSK4iMEjYp+k5aX174arYBqnkr+Zgbc3Ku2m+Ku+HJ+KgJT7GG6cZHtYGQdN8/TKrmM6s7tBuxSDgvKcLpVCLCq7Y36xWCeEpKJb6esTRpWkzeEwEvCSBBlbIFBp/v/drtjHTTNbKdQ==
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=7ocYjMX8B4d+THjQiKydpZOLUXpSsq8+97VyZcMyask=;
 b=apqymPJrLz8qwpMniwxipzgCWfL7jeiuVQ5dcOmQe5E1rnTo2IaxQquwF1S1R1vCHe+edDLo5lvh9KHin3t+dgLOlSSwNwDtuo+NnKM9zKXOUaGzdPc3idulC/kVOHVJvthATrm/8W+Dr6ZsEO8hNdhPYRFWfn5HrJQRc4T3gsN6S2SPKNxoMI3h+cYeRZ6yeVxL49p/EmW8vVvDrkkVufN7QKzgb3KmVGSLPRLWmYqG2LM6PR7LOPNS0kBtInDAPV/4oh6VkOPYe76X8OTQakNsCkybhB834v1juY+CHpQ6oO9OvMSyeNs1z4/mieIzQxUY+XsXphyb77AGHExX8g==
Authentication-Results: dkim=none (message not signed)
 header.d=none;dmarc=none action=none header.from=epam.com;
Message-ID: <66b7eaff-f7b9-4737-b32b-ca9ff7b661c1@epam.com>
Date: Fri, 10 Apr 2026 15:04:33 +0300
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH v2] xen/sched: rtds: re-arm repl_timer after timer
 re-initialization
To: =?UTF-8?B?SsO8cmdlbiBHcm/Dnw==?= <jgross@suse.com>,
 "xen-devel@lists.xenproject.org" <xen-devel@lists.xenproject.org>
Cc: Dario Faggioli <dfaggioli@suse.com>, George Dunlap <gwd@xenproject.org>,
 Meng Xu <mengxu@cis.upenn.edu>
References: <548ea03cc3c3287b1f5dcd101b3c2990ebc08089.1775208527.git.oleksii_moisieiev@epam.com>
 <775bc23d-7cd4-43b4-9e5f-0c70204b4262@suse.com>
Content-Language: en-US
From: Oleksii Moisieiev <oleksii_moisieiev@epam.com>
In-Reply-To: <775bc23d-7cd4-43b4-9e5f-0c70204b4262@suse.com>
Content-Type: text/plain; charset=UTF-8; format=flowed
Content-Transfer-Encoding: 8bit
X-ClientProxiedBy: WA2P291CA0040.POLP291.PROD.OUTLOOK.COM
 (2603:10a6:1d0:1f::24) To DU5PR03MB10263.eurprd03.prod.outlook.com
 (2603:10a6:10:519::5)
MIME-Version: 1.0
X-MS-PublicTrafficType: Email
X-MS-TrafficTypeDiagnostic: DU5PR03MB10263:EE_|DU5PR03MB10218:EE_
X-MS-Office365-Filtering-Correlation-Id: 26e0fb9b-b6fb-42db-7006-08de96f9552b
X-MS-Exchange-SenderADCheck: 1
X-MS-Exchange-AntiSpam-Relay: 0
X-Microsoft-Antispam:
	BCL:0;ARA:13230040|366016|376014|1800799024|56012099003|22082099003|18002099003;
X-Microsoft-Antispam-Message-Info:
	0lqYcGQ8TNEA3dAs6cmns114fiN8QDmHdBvl2OMIRin4zoT5KTL/iFn9nh2QYkM7lsgutUnHgMOn3eYJ0xwfFXRJu1WWc+vgU8Yx0WOF8IAw4uz2V2cEsDWrJ34FVfbMBtJz82CUzvOq2fUhYG7MvX6p+aW1L0xBQHIWRdo7X8N+J7/kMVKduFkWZes8tivPmung99SLw6rhc85VREUYfgQO0zDnyU7/Qj9gkCtHcukl6aInfTAs4Rx3JZtdy00LZTqgMDbvKfyE7xHDvvfc9Wu46BahPzhunTmL90uuFZjQz0vayB4RDsJfvaVifXiG//rtdX+cLt77BadClJj17fIXJ7HWmEY+XZ33kx2qqy+aCBuFgNQfl6Wau2OEvyCSTfWy1dpdQ5MBJfdMKK9Aj45jd8jFMKGZYHvdsQtb4EBQ5yGJAJgoxKIVbRobIZkXKbdcD/atmWvlnmoaXNpBc2BSN8ZlRVLfsOP8XUfiRROHGdv4MUm27mTSYZTw9tu7yvs8nJkAdCSs+7qksw6B7mBrCYWOJX4xF8DEbAx5Bs+79YdX7bLllrzOQ6p1aYgmMIezmwk09Ejp7jLcaPsbI7BQZGUSgcMfEKtse73IodWjytFnc4jYdeERRALaTSCkR/eslcVxzoNHi9WZNytJh8Wg9Ro4um/WoOM4xRtVLf8YZiTEqL5FY/Ra4mL+tNBOPxgtnfnPIXqsZvcxlwCgArZrcuVrFBlW5bDtYS4Kz/0=
X-Forefront-Antispam-Report:
	CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:DU5PR03MB10263.eurprd03.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(366016)(376014)(1800799024)(56012099003)(22082099003)(18002099003);DIR:OUT;SFP:1102;
X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1
X-MS-Exchange-AntiSpam-MessageData-0:
	=?utf-8?B?L3hCZGZ6THJaeVF0cm90blBwTFhDY3VtQlpJdWpHcnY5K1VQMSt6Tk80Rzd0?=
 =?utf-8?B?QmF0OU0xc2hXT2xYdnNJaEJTMlMxTWZFU2UxUTVOaE9KalcreW9Eb3U5ZE5m?=
 =?utf-8?B?bUtsR0NyZmFsbm93L1dnSzRNc0kyZHEzYWdPUHRLK1g2VHptQ2dpYXI4NFhq?=
 =?utf-8?B?NVNUZHJUdmZUMzdrWHo2bHV5OVFxa0JvMHBJTHdTNExYeFFxaXoxNkQ1UlU5?=
 =?utf-8?B?REt2RFQ3cW5LL2xLVnV5ZUpLdzNNTmtBRVRQMXM0RkxYbmZnRXM5bVlxV2RN?=
 =?utf-8?B?ek5MWmx1aDN2K2N4ajNNSk52NFQvWWM5R1VGSS9TbGZ4RFUyL0E0aW5XU3dj?=
 =?utf-8?B?NkpDQk8rMHFTQUFFWUFSSWpyN0lYZTl1TXdRQVp3OFZDRUVGYk41N0xuUnJr?=
 =?utf-8?B?QWpOcEgwS3hmSWg2dXBMb2Irem5VbWRhSUwwQ2N5M0dFeDdHQkRWa1J2K25y?=
 =?utf-8?B?cW9TTURTOFBxWXE5Qy9CUTA5Y215T0ZwaUxraHNwNnUyTFcwZnhTZzVZbGZB?=
 =?utf-8?B?Y0N2MW5YMHRWaDJPMEN0OHFFWGlyc3MxeE85QVpCaEFZSHdOMmFuRGJuZUZP?=
 =?utf-8?B?SytpcXowMmUyMllzN3c1bGlkK3FsSHd4MWVTTWE5N0NwSUVZV2YvMEtidXNK?=
 =?utf-8?B?c0IwMnNUcW0wRFl0QUd5NWY1b2RiTjJtQ1lOQzN5YUNIN2ViZHl1UEJrUS9y?=
 =?utf-8?B?SlF2S1lTZTB0M1lXWTVNUmhINm9hMlZoamE5TWxLRnlpZ28wSE9qREVaajd3?=
 =?utf-8?B?Y29VRFpBUUp3WHlmWGlxdGNaWkZGUU51YVpudzI1V0RjSEZyZGVuSUlUWEVv?=
 =?utf-8?B?MXQxcENLMXc2em0xVXJjSU0yL1VLTDJIeTdOQ0RHSVdERGlvZFZNTVpKNWdy?=
 =?utf-8?B?TjQ2ZTJuZ3JkR3J5V3ZoSEFhV3lBbVhpcFNwMTA0TG9KMGkycGNWNFAzQ3JY?=
 =?utf-8?B?aVBmaDdJalhPRjdObHRjdTA0cHBTOFBaaEtSY3Z3anNPenFheHhLZm5raXQ0?=
 =?utf-8?B?UHhtOTM2UmlseS9GeGMxai9HbXhzTkd1aXBrQ2lkRTNuTDhiWUVqUzZxRlNC?=
 =?utf-8?B?OG1nV1VSTHMrSy8wU3hNcUU2Ym9QSWFSeU5mSzRPeENTZEdKdVdRWHB2MHdK?=
 =?utf-8?B?dVFlQ0ZOYnF4V2xkSjQyemJ5M0Q3ekNBTnlqNDFSTlBIelpQZlVSQmovMUFa?=
 =?utf-8?B?NG4rczYzYUZvTWpMV0RBNFBEeG1SUzB3blhEQzZWK1VBOUZwUHVrWnBIa1Fa?=
 =?utf-8?B?Z05aNy9wZ3JzTkorOUNZdTNpSm5ybEpzalVoZkMzZmJ3K0FmdjZlTGtEYkJ5?=
 =?utf-8?B?YzAxa2U3TmdTT3JqcGRLUnJkMUdRRHdkcW5NcVNpNTh6bldNc0I0eTFwRGZQ?=
 =?utf-8?B?bkNQYXI2NHUyNTY4OG9CMFhJS2s2TktBU2JPb1E0a0tsVlc3K1hwOE1BZmhK?=
 =?utf-8?B?N0RreTl2WllrS3loTTRQcTVvRlBVSzQwWURjdVdHY1R3aTN2NjFXa21jU2dP?=
 =?utf-8?B?Ti81Y04wM1ZQMjdOTDUrMjRSb09lV2c1c0ljZkh2QlFwajhOcjlKZ05QbGN6?=
 =?utf-8?B?Q1NPMlpuR0tCYU5lV0svdWY0YlFvdHh6T3RvZmpUaXR0bHNmR2tFRWNzYmt5?=
 =?utf-8?B?STlFV3paZ3NrdmpiRVJjcUExeCtCL3FYVmZFZU5TWjIxd1Z0WVZjL1dzYnd3?=
 =?utf-8?B?ODI3TDJzazlKMksybDJhdk5vSUVyNFJHTXQyUTFvc3lPb2lJVGZ1RzVOVzlJ?=
 =?utf-8?B?R1ZHYkhaK2FIVmtLczZDaklSNjFHS1pCcWU3SmRZYU5LcDh2MEIvTGhDbG1H?=
 =?utf-8?B?VTYrK1lZbzZkamtMbkVGUG9FUkhkTHhVWEh0TnN3RUJIWkhwb3U0M3NXOHFM?=
 =?utf-8?B?b1Ezc082L2d6UDcxUWZrbDFXZ3FRVWFPQVpXcEVnRjZ6cWpENjc0UEpkYTFJ?=
 =?utf-8?B?YnRUYitobWF4UmlKTkZSNzNISFExNjVTaEtOZyswQ2RaRHh1NEljb2MzaFN1?=
 =?utf-8?B?YU0xd2g3R2o0cWIwT05PYmdPV3AvVzVacEZ1cFdEMERTNlN2eVRiUXZhK2lv?=
 =?utf-8?B?S0ZsdkF1NUhMYUlVRzBoNHdITk5hVmJNdExUN0U5UlZ2MzJJbThMODJSYUI4?=
 =?utf-8?B?NWFYcjd6TmVjRHBEMk15dDhBU0F0ZFVBcittZU9wOERJeUJLZUV5ZGx1emJL?=
 =?utf-8?B?UHdsWmJDL2dQaytsRUhIZ2hDQzRDUUZ0bjdnSThiYmE4YUUxUGdtbnEvSXNR?=
 =?utf-8?B?TTQvN1lqU3hDZVgxRVg2TWhzK1NBNitsQmhzaFV6aHR2VUw1OWg3Y2xQUXlp?=
 =?utf-8?B?cmt1TU9RaG1ENlZSN2VxeGJBdXVsQm9OcFVIKzk5THoxREJGbFNaa1Y5K3ZJ?=
 =?utf-8?Q?wChHV/oxIHid8ImY=3D?=
X-OriginatorOrg: epam.com
X-MS-Exchange-CrossTenant-Network-Message-Id: 26e0fb9b-b6fb-42db-7006-08de96f9552b
X-MS-Exchange-CrossTenant-AuthSource: DU5PR03MB10263.eurprd03.prod.outlook.com
X-MS-Exchange-CrossTenant-AuthAs: Internal
X-MS-Exchange-CrossTenant-OriginalArrivalTime: 10 Apr 2026 12:04:35.4870
 (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: 71Wg4KfiEf3jbSZDHRnLTQbwMr646VEnjP7sKQ8CrZTCKYl+9l9DLrkMdraZ/0/nhwxN0P6Nwz+oTmdK+JvnJKKhbP3JURtuqgp9f/HHIqQ=
X-MS-Exchange-Transport-CrossTenantHeadersStamped: DU5PR03MB10218
X-purgate-ID: tlsNG-16d1c6/1775822678-ADB2B3D8-7DDE14B1/0/0
X-purgate-type: clean
X-purgate-size: 895

Hi Juergen,

During our safety certification analysis work, we identified this as a 
potential
issue. While we haven't encountered this problem in practice yet, it 
could occur
in the future, so I believe it should be addressed proactively.
--
Oleksii.


On 10/04/2026 13:14, Jürgen Groß wrote:
> On 03.04.26 11:29, Oleksii Moisieiev wrote:
>> In RTDS, removing the last eligible pCPU can kill repl_timer.
>> When a pCPU is later re-added, rt_switch_sched() reinitializes the
>> timer object, but pending entries may already exist in replq.
>
> Did you experience this behavior?
>
> I'm asking because I don't see how this could happen. A CPU can't be
> removed from a cpupool as long as there are domains in that cpupool.
> So how would replq contain entries after the last CPU of the cpupool
> has been removed?
>
> But maybe I'm missing something.
>
>
> Juergen


From xen-devel-bounces@lists.xenproject.org Fri Apr 10 12:13:18 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Fri, 10 Apr 2026 12:13:18 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1278906.1563613 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wBAjb-0008TO-0H; Fri, 10 Apr 2026 12:13:15 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1278906.1563613; Fri, 10 Apr 2026 12:13: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 1wBAja-0008TH-T3; Fri, 10 Apr 2026 12:13:14 +0000
Received: by outflank-mailman (input) for mailman id 1278906;
 Fri, 10 Apr 2026 12:13:13 +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 1wBAjZ-0008TB-03
 for xen-devel@lists.xenproject.org; Fri, 10 Apr 2026 12:13:13 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wBAjX-00ESEO-SX
 for xen-devel@lists.xenproject.org; Fri, 10 Apr 2026 14:13:11 +0200
Received: from [10.42.69.12] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <jgross@suse.com>)
 id 69d8e947-e002-0a2a0a5209dd-0a2a450ccd32-46
 for <xen-devel@lists.xenproject.org>; Fri, 10 Apr 2026 14:13:11 +0200
Received: from [209.85.128.41] (helo=mail-wm1-f41.google.com)
 by tlsNG-d25034.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.0)
 (envelope-from <jgross@suse.com>)
 id 69d8e957-f40c-0a2a450c0019-d1558029c83d-3
 for <xen-devel@lists.xenproject.org>; Fri, 10 Apr 2026 14:13:11 +0200
Received: by mail-wm1-f41.google.com with SMTP id
 5b1f17b1804b1-48897fd88ebso20696625e9.2
 for <xen-devel@lists.xenproject.org>; Fri, 10 Apr 2026 05:13:11 -0700 (PDT)
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
 ffacd0b85a97d-43d63e4f16bsm7307472f8f.26.2026.04.10.05.13.10
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Fri, 10 Apr 2026 05:13:10 -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=google header.d=suse.com header.i="@suse.com" header.h="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=1775823191; x=1776427991; darn=lists.xenproject.org;
        h=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;
        bh=0d5KItz2ChuFB/9GspKfpdCSyWT5Ki/8pR02ulKHQHg=;
        b=dLGulLz6K5AHEiuYX0HWJP3LcqKkLMs+s6C5EOKHx2G5/VbeaM8o8sv78coFS6iG4v
         YEY8XBtWX1I2WbeCB7SPqcoKHj/o8h7wd+g60zlVPWGVYbQzVz7aMiK2ellbNI8a+CiJ
         LLcm20p9iL/U+0oIALvB40pP0rp9tijY7/oOMiAYPyH86cTQYR+oG3yEeUZZPFB9gear
         pfEoQW8EDSyqO8WKfLwq95lI3KHsIRKjqYMu4MpwECe9NsEWcjTQY3ZWoo5o1zFLHSuo
         CCJlFIweJX30vAJu37Woe9OlTRQ1zOTUQ0gSa8PzGaUPRUS/uWDuEHiGuOMH2cfTS9BN
         LtNQ==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20251104; t=1775823191; x=1776427991;
        h=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;
        bh=0d5KItz2ChuFB/9GspKfpdCSyWT5Ki/8pR02ulKHQHg=;
        b=rbvMGWdLiaGsbeOLiHegKHbNj0U6o3LNYK/PGiqqZnGGZZEizCQbMgZvxiJs/OdF2R
         s7noNCEwLjRArhsYSt92haO4NgUxWL/JHwhd8yFiQHy8HHCHZFr9HSni2sFE8PaM/lXG
         Pqzx5Z/OwjZY28wDPrMW+OIgL9ZOWcLoT2XGGrnTDtb9GS3bMscdYa4IYTDFPl/dHoEn
         o9QNI+lwSfq9ckzoDQWHtYt35sOVoCsDFy0uZ/+CpdqPKcfT/zhFtMWJzGSrLp9nRuYx
         IJRamc9gkkjaicz6YRuO88WI3IaLCBYFqtHCX8wrms9xjbaegw/4RPcQqt+JmtqFytSR
         9EmA==
X-Forwarded-Encrypted: i=1; AJvYcCUYiNXI5iVtX9J4F72IYKWXCYsQKSug9tL4Mlz8F0pWEWZNiXk0ynQBM3exEVFal/EnGcQ4uamzWso=@lists.xenproject.org
X-Gm-Message-State: AOJu0Yww37S1EmlRiXPa5bDBOCRlehLRp5RFy7OddfYnwDL1nsWgT5tY
	SzxYvdAYlrMQmUBdVy7gD2Z/7bIzn+6/FMdmhR0e54GJweZLOGezUBQhSM+Bm2PdedM=
X-Gm-Gg: AeBDievJGwYUrP7vBOoxmd72YNraAXjwCiMYlaEaq2+DVSTTCdYWx8N4ppiP5L6PAbg
	mlxlE7jGFQEmYx/LBzmnJbyAIi/dOCjd+SdNueOsNTID14dKvLrn3m/O0rKvE5rpF28rH9V9x8C
	InsNMcV1B/Y3G3uCNVKi4CpI+voHOiz4RGyQnV819za7bSGMDIzVH3k37lnhS4TiYhxbbBIW3QA
	YWsGwA59a8Bd3h9qlqrGZHBI76SPSXpB6VxFzdjkInpvyZ57B+sBdHXR4/FUy+hosLaNYt47HKI
	lnja9BwmPGNsDk2mzPPK2ptVYNHJTklMmv+l2w8edFooMB9i80ZFV5ps7tMZVkT6Fwc0FXg29pr
	o5BBIlsm/A51cp3Z9STIKe+SbpIy3yFKxCJ9qqMjpJE8wMH0eMnwo2h2eiOx/5HAhBctnIGh5Ch
	qqmkqvDWD6G0SSsj79p5vuyg01x0NreST3n+zsSX1wFvF3WcFy9tizXH847UBsuesDeccM6VGy1
	K9xWkgs450a2EYP/nHuE1FSEQqd0INMeR/t49RQz0VIMMwvIXKrOA==
X-Received: by 2002:a05:600c:4ecf:b0:486:fd5c:2b35 with SMTP id 5b1f17b1804b1-488d68685aemr37433695e9.13.1775823191098;
        Fri, 10 Apr 2026 05:13:11 -0700 (PDT)
Message-ID: <fd394d84-4d8c-4fe2-9e51-58041dc09c69@suse.com>
Date: Fri, 10 Apr 2026 14:13:09 +0200
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH v2] xen/sched: rtds: re-arm repl_timer after timer
 re-initialization
To: Oleksii Moisieiev <oleksii_moisieiev@epam.com>,
 "xen-devel@lists.xenproject.org" <xen-devel@lists.xenproject.org>
Cc: Dario Faggioli <dfaggioli@suse.com>, George Dunlap <gwd@xenproject.org>,
 Meng Xu <mengxu@cis.upenn.edu>
References: <548ea03cc3c3287b1f5dcd101b3c2990ebc08089.1775208527.git.oleksii_moisieiev@epam.com>
 <775bc23d-7cd4-43b4-9e5f-0c70204b4262@suse.com>
 <66b7eaff-f7b9-4737-b32b-ca9ff7b661c1@epam.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: <66b7eaff-f7b9-4737-b32b-ca9ff7b661c1@epam.com>
Content-Type: multipart/signed; micalg=pgp-sha256;
 protocol="application/pgp-signature";
 boundary="------------oOBVY0dnOumlxyRICmN3vfQ0"
X-purgate-ID: tlsNG-d25034/1775823191-A4640A3D-4D2CCA4E/0/0
X-purgate-type: clean
X-purgate-size: 8048

This is an OpenPGP/MIME signed message (RFC 4880 and 3156)
--------------oOBVY0dnOumlxyRICmN3vfQ0
Content-Type: multipart/mixed; boundary="------------qFia0Z1GqqoxE2WDrzl2PEa3";
 protected-headers="v1"
From: Juergen Gross <jgross@suse.com>
To: Oleksii Moisieiev <oleksii_moisieiev@epam.com>,
 "xen-devel@lists.xenproject.org" <xen-devel@lists.xenproject.org>
Cc: Dario Faggioli <dfaggioli@suse.com>, George Dunlap <gwd@xenproject.org>,
 Meng Xu <mengxu@cis.upenn.edu>
Message-ID: <fd394d84-4d8c-4fe2-9e51-58041dc09c69@suse.com>
Subject: Re: [PATCH v2] xen/sched: rtds: re-arm repl_timer after timer
 re-initialization
References: <548ea03cc3c3287b1f5dcd101b3c2990ebc08089.1775208527.git.oleksii_moisieiev@epam.com>
 <775bc23d-7cd4-43b4-9e5f-0c70204b4262@suse.com>
 <66b7eaff-f7b9-4737-b32b-ca9ff7b661c1@epam.com>
In-Reply-To: <66b7eaff-f7b9-4737-b32b-ca9ff7b661c1@epam.com>

--------------qFia0Z1GqqoxE2WDrzl2PEa3
Content-Type: multipart/mixed; boundary="------------YauiT380SO0Jc2HEyVml0zTU"

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

T24gMTAuMDQuMjYgMTQ6MDQsIE9sZWtzaWkgTW9pc2llaWV2IHdyb3RlOg0KPiBIaSBKdWVy
Z2VuLA0KPiANCj4gRHVyaW5nIG91ciBzYWZldHkgY2VydGlmaWNhdGlvbiBhbmFseXNpcyB3
b3JrLCB3ZSBpZGVudGlmaWVkIHRoaXMgYXMgYSBwb3RlbnRpYWwNCj4gaXNzdWUuIFdoaWxl
IHdlIGhhdmVuJ3QgZW5jb3VudGVyZWQgdGhpcyBwcm9ibGVtIGluIHByYWN0aWNlIHlldCwg
aXQgY291bGQgb2NjdXINCj4gaW4gdGhlIGZ1dHVyZSwgc28gSSBiZWxpZXZlIGl0IHNob3Vs
ZCBiZSBhZGRyZXNzZWQgcHJvYWN0aXZlbHkuDQoNCkZvciBiZWluZyBhYmxlIHRvIG9jY3Vy
IGluIGZ1dHVyZSwgdGhlIGhhbmRsaW5nIG9mIHJlbW92aW5nIGEgY3B1IGZyb20gYQ0KY3B1
cG9vbCB3b3VsZCBuZWVkIHRvIGJlIGNoYW5nZWQuIENvbnNpZGVyaW5nIHRoZSByZWZ1c2Fs
IHRvIHJlbW92ZSB0aGUNCmxhc3QgY3B1IGZyb20gYSBwb3B1bGF0ZWQgY3B1cG9vbCBpcyBv
biBwdXJwb3NlICh0aGlzIGF2b2lkcyBsZWF2aW5nIGENCmRvbWFpbiB3aXRob3V0IGFueSBj
cHUgdG8gcnVuIG9uKSwgYWRkaW5nIHRoZSBjb2RlIGFzIHlvdSBzdWdnZXN0IHdvdWxkDQpq
dXN0IGJlIGFuIGFkZGl0aW9uIHdpdGhvdXQgYW55IGJlbmVmaXQuDQoNCkl0IGlzbid0IGRv
aW5nIGFueSBoYXJtIChvdGhlciB0aGFuIGFkZGluZyBjb2RlIHdpdGhvdXQgcHVycG9zZSks
IHNvIEkNCndvbid0IGV4cGxpY2l0bHkgTkFLIHRoZSBwYXRjaCwgYnV0IEkgd29uJ3QgQWNr
IGl0IGVpdGhlci4NCg0KDQpKdWVyZ2VuDQoNCj4gLS0gDQo+IE9sZWtzaWkuDQo+IA0KPiAN
Cj4gT24gMTAvMDQvMjAyNiAxMzoxNCwgSsO8cmdlbiBHcm/DnyB3cm90ZToNCj4+IE9uIDAz
LjA0LjI2IDExOjI5LCBPbGVrc2lpIE1vaXNpZWlldiB3cm90ZToNCj4+PiBJbiBSVERTLCBy
ZW1vdmluZyB0aGUgbGFzdCBlbGlnaWJsZSBwQ1BVIGNhbiBraWxsIHJlcGxfdGltZXIuDQo+
Pj4gV2hlbiBhIHBDUFUgaXMgbGF0ZXIgcmUtYWRkZWQsIHJ0X3N3aXRjaF9zY2hlZCgpIHJl
aW5pdGlhbGl6ZXMgdGhlDQo+Pj4gdGltZXIgb2JqZWN0LCBidXQgcGVuZGluZyBlbnRyaWVz
IG1heSBhbHJlYWR5IGV4aXN0IGluIHJlcGxxLg0KPj4NCj4+IERpZCB5b3UgZXhwZXJpZW5j
ZSB0aGlzIGJlaGF2aW9yPw0KPj4NCj4+IEknbSBhc2tpbmcgYmVjYXVzZSBJIGRvbid0IHNl
ZSBob3cgdGhpcyBjb3VsZCBoYXBwZW4uIEEgQ1BVIGNhbid0IGJlDQo+PiByZW1vdmVkIGZy
b20gYSBjcHVwb29sIGFzIGxvbmcgYXMgdGhlcmUgYXJlIGRvbWFpbnMgaW4gdGhhdCBjcHVw
b29sLg0KPj4gU28gaG93IHdvdWxkIHJlcGxxIGNvbnRhaW4gZW50cmllcyBhZnRlciB0aGUg
bGFzdCBDUFUgb2YgdGhlIGNwdXBvb2wNCj4+IGhhcyBiZWVuIHJlbW92ZWQ/DQo+Pg0KPj4g
QnV0IG1heWJlIEknbSBtaXNzaW5nIHNvbWV0aGluZy4NCj4+DQo+Pg0KPj4gSnVlcmdlbg0K
PiANCg0K
--------------YauiT380SO0Jc2HEyVml0zTU
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-----

--------------YauiT380SO0Jc2HEyVml0zTU--

--------------qFia0Z1GqqoxE2WDrzl2PEa3--

--------------oOBVY0dnOumlxyRICmN3vfQ0
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/Ey8FAmnY6VUFAwAAAAAACgkQsN6d1ii/Ey8C
Fwf+L0suD6CkYxthgsj8KkkncnRuNlZ0ZmpoH0d3wNXsuzK3ntE/QeNQHdCVoKWYdRnFlGA0Rpft
KsTAzgq/257JEklcCptwQHqELdUnKKwY3CluwUhVGDpUfd/MPITW8Wxp4rqlw8UJ4EyaVITusUKJ
9j9iSHaRpvdixkmV5PyhqgggiYslLteRwraCp/MIAVZPMJyRv+x5IrrygqOO+mTb+u2Kidw/tpIE
CgladuFzhC3joDGjF3ejnGKdUZhVw45W4uAm+dJ9wfsIAqlBlvpiJS4Yvj1RgJqlL+6nBmJ2/ZEz
mS22q7iC5ezWdZ1w8mC/iCdiLj8giwxOjue4FlsBcA==
=3lB/
-----END PGP SIGNATURE-----

--------------oOBVY0dnOumlxyRICmN3vfQ0--


From xen-devel-bounces@lists.xenproject.org Fri Apr 10 12:17:03 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Fri, 10 Apr 2026 12:17:03 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1278915.1563622 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wBAnF-0000av-F2; Fri, 10 Apr 2026 12:17:01 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1278915.1563622; Fri, 10 Apr 2026 12:17: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 1wBAnF-0000ao-CG; Fri, 10 Apr 2026 12:17:01 +0000
Received: by outflank-mailman (input) for mailman id 1278915;
 Fri, 10 Apr 2026 12:17:00 +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 1wBAnE-0000ai-Ct
 for xen-devel@lists.xenproject.org; Fri, 10 Apr 2026 12:17:00 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wBAnD-00C7US-LW
 for xen-devel@lists.xenproject.org; Fri, 10 Apr 2026 14:16:59 +0200
Received: from [10.42.69.4] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <jgross@suse.com>)
 id 69d8ea23-2eae-0a2a0a5409dd-0a2a4504dc34-20
 for <xen-devel@lists.xenproject.org>; Fri, 10 Apr 2026 14:16:59 +0200
Received: from [209.85.128.53] (helo=mail-wm1-f53.google.com)
 by tlsNG-ebf023.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.0)
 (envelope-from <jgross@suse.com>)
 id 69d8ea3b-bb33-0a2a45040019-d1558035a5d2-3
 for <xen-devel@lists.xenproject.org>; Fri, 10 Apr 2026 14:16:59 +0200
Received: by mail-wm1-f53.google.com with SMTP id
 5b1f17b1804b1-488b8efed61so17452625e9.1
 for <xen-devel@lists.xenproject.org>; Fri, 10 Apr 2026 05:16:59 -0700 (PDT)
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-488d5d703c1sm20103575e9.3.2026.04.10.05.16.58
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Fri, 10 Apr 2026 05:16:58 -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=google header.d=suse.com header.i="@suse.com" header.h="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=1775823419; x=1776428219; darn=lists.xenproject.org;
        h=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;
        bh=aCMFp9kJZGr5E1G1db+BUMp1vc9Tyu1uYxu2ET9lk5w=;
        b=E6aUAYWQ5i4K+snbgDkJkfcPmxUMgDKXKxXqAi/PmCpLcheTUWopM4xKNtvm+WV4Ry
         zFQ4Nwme4zpRL+0GcG1XZ1cKO+4ufwkeaA90NvoRGDFGlv7FsnSbgigT7I8vHk9bUBhx
         tL3r1+WCCOJeKkpCpeu70iCdcKlR+h63gUirYabHtelsmoRqGmXKvyhrUOqqrw1K5sq1
         vxIWDqtjCzBCUPSaY+EB9lG39HU0cx7OI5vIwZNMTCgMn37ufwpN9eQV+W53gqBJQ+Ms
         /S3SRgpz7XfedJGwjsqIMfpi90SiLdINOuYJT9xhknuHIdYBR9eRiHfjIkUndddjnDm4
         qjSg==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20251104; t=1775823419; x=1776428219;
        h=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;
        bh=aCMFp9kJZGr5E1G1db+BUMp1vc9Tyu1uYxu2ET9lk5w=;
        b=EKvLnC5aLkvIkrDmz+375kTMsZroprNSmynqezr/S1GPnK2SF18uVeaWyiP5SbshW1
         oN4eT5mWHU0uHhqnfulpeOCpMUSqAQFiIoPiCLAx1/h+veZYfeVQpqMqEfxtNHvZWw6K
         MPWR55vbnU6k9O+SUEpzLpzTZR2Bz3CkmGFy/k8PzhteQ13UlTzhaDOiDzj/ARtVyjUr
         mzD/atJ2ARnh7HgHlli6CP7uDnBe276wyJM/i5SB+q3W4OeC6apihjefbpeBUg9yC6+O
         My1NShtSHmZHpjt4aaovfz8bIJJw8Gwrjxrcj6OIkcZCfe4/Zn3T0wQjTEebMmzhvUA3
         24Cg==
X-Forwarded-Encrypted: i=1; AJvYcCXBTlaPGz6zHGMKKT1kWbk1wNENt/fXNHxDWxxvHlhHtA1A0h4YKsBVY6Mmz41iBYnLmnPylo3pioU=@lists.xenproject.org
X-Gm-Message-State: AOJu0YwWfNbbqv3l3YlT+80h2r6DRSRRN/ybNG0p44T8n2eGz5dRaiQk
	775ckNzmDpS7CJ0mCe3vRk691LRZp6kjh7NnKSTpe/5oxotEEBYSjviO8jP0pQ7JQYw=
X-Gm-Gg: AeBDievkUn7SFsPEEnadRronfqjWUOSjQv9uzdOPHivLSno6mWfYMkgSXtLUWFT9afS
	u9RCI7JNCBBLVAPsWaGgpyWTjF7jt+clfCEENtfEZCXYG02unLhJXbGeTeNiH2gzE/PESjeltAa
	7K5vYFiGPU+TuO2jtGmDt2z7Ai032ZpNjFHJVt2WKVvQ894Y/v+Wo6U0jNt+yTMoCS09yNu/Yup
	WlOkKVNAYid1cCEbofeoV4c3Zroa/XhcHMJ4mvElIRr32Wk9DWnaGQqQ5ff+8jy95AYntsN7HC+
	H7+Rwn+aFemPKz5NQ0uuyfMsbqG8aDViEIsmflhege55ncjcqAUUaVT1rrl42U3qCZA6u4VCqUg
	HKTU+J6bUexM/SmHHWsblFwqdqAMaKf92jmBUw9a/YjqXKes/HvvM1kQoXfy6z4NyMPdXIgM+xZ
	h94wrd8VJ/YAaVIXJLjuaAMQWtmD++JlOmwLFPiO2WRqFg1x2G7RBisM+yh8dx/rX6b/do3Zb/2
	HJkxSFKw9fZUDAVy8OckbB2arzLqRYX4QIQScq43QUdZ29QZAepkqnmEHXcrqzz
X-Received: by 2002:a05:600c:3ba4:b0:488:c6e9:1e0c with SMTP id 5b1f17b1804b1-488d6847de9mr33908025e9.5.1775823418870;
        Fri, 10 Apr 2026 05:16:58 -0700 (PDT)
Message-ID: <ff983469-db32-46fb-a18a-aed3cda06209@suse.com>
Date: Fri, 10 Apr 2026 14:16:57 +0200
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH v2] xen/sched: rtds: re-arm repl_timer after timer
 re-initialization
From: Juergen Gross <jgross@suse.com>
To: Oleksii Moisieiev <oleksii_moisieiev@epam.com>,
 "xen-devel@lists.xenproject.org" <xen-devel@lists.xenproject.org>
Cc: Dario Faggioli <dfaggioli@suse.com>, George Dunlap <gwd@xenproject.org>,
 Meng Xu <mengxu@cis.upenn.edu>
References: <548ea03cc3c3287b1f5dcd101b3c2990ebc08089.1775208527.git.oleksii_moisieiev@epam.com>
 <775bc23d-7cd4-43b4-9e5f-0c70204b4262@suse.com>
 <66b7eaff-f7b9-4737-b32b-ca9ff7b661c1@epam.com>
 <fd394d84-4d8c-4fe2-9e51-58041dc09c69@suse.com>
Content-Language: en-US
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: <fd394d84-4d8c-4fe2-9e51-58041dc09c69@suse.com>
Content-Type: multipart/signed; micalg=pgp-sha256;
 protocol="application/pgp-signature";
 boundary="------------BJDxGHZT2PMW2qJEFLxj80q0"
X-purgate-ID: tlsNG-ebf023/1775823419-B373251B-3DD85F4B/0/0
X-purgate-type: clean
X-purgate-size: 7428

This is an OpenPGP/MIME signed message (RFC 4880 and 3156)
--------------BJDxGHZT2PMW2qJEFLxj80q0
Content-Type: multipart/mixed; boundary="------------AdfA8aaavdJNlhEHAj0xcyaI";
 protected-headers="v1"
From: Juergen Gross <jgross@suse.com>
To: Oleksii Moisieiev <oleksii_moisieiev@epam.com>,
 "xen-devel@lists.xenproject.org" <xen-devel@lists.xenproject.org>
Cc: Dario Faggioli <dfaggioli@suse.com>, George Dunlap <gwd@xenproject.org>,
 Meng Xu <mengxu@cis.upenn.edu>
Message-ID: <ff983469-db32-46fb-a18a-aed3cda06209@suse.com>
Subject: Re: [PATCH v2] xen/sched: rtds: re-arm repl_timer after timer
 re-initialization
References: <548ea03cc3c3287b1f5dcd101b3c2990ebc08089.1775208527.git.oleksii_moisieiev@epam.com>
 <775bc23d-7cd4-43b4-9e5f-0c70204b4262@suse.com>
 <66b7eaff-f7b9-4737-b32b-ca9ff7b661c1@epam.com>
 <fd394d84-4d8c-4fe2-9e51-58041dc09c69@suse.com>
In-Reply-To: <fd394d84-4d8c-4fe2-9e51-58041dc09c69@suse.com>

--------------AdfA8aaavdJNlhEHAj0xcyaI
Content-Type: multipart/mixed; boundary="------------0kXZVz591Gx1MQ82njcgoWpa"

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

T24gMTAuMDQuMjYgMTQ6MTMsIEp1ZXJnZW4gR3Jvc3Mgd3JvdGU6DQo+IE9uIDEwLjA0LjI2
IDE0OjA0LCBPbGVrc2lpIE1vaXNpZWlldiB3cm90ZToNCj4+IEhpIEp1ZXJnZW4sDQo+Pg0K
Pj4gRHVyaW5nIG91ciBzYWZldHkgY2VydGlmaWNhdGlvbiBhbmFseXNpcyB3b3JrLCB3ZSBp
ZGVudGlmaWVkIHRoaXMgYXMgYSBwb3RlbnRpYWwNCj4+IGlzc3VlLiBXaGlsZSB3ZSBoYXZl
bid0IGVuY291bnRlcmVkIHRoaXMgcHJvYmxlbSBpbiBwcmFjdGljZSB5ZXQsIGl0IGNvdWxk
IG9jY3VyDQo+PiBpbiB0aGUgZnV0dXJlLCBzbyBJIGJlbGlldmUgaXQgc2hvdWxkIGJlIGFk
ZHJlc3NlZCBwcm9hY3RpdmVseS4NCj4gDQo+IEZvciBiZWluZyBhYmxlIHRvIG9jY3VyIGlu
IGZ1dHVyZSwgdGhlIGhhbmRsaW5nIG9mIHJlbW92aW5nIGEgY3B1IGZyb20gYQ0KPiBjcHVw
b29sIHdvdWxkIG5lZWQgdG8gYmUgY2hhbmdlZC4gQ29uc2lkZXJpbmcgdGhlIHJlZnVzYWwg
dG8gcmVtb3ZlIHRoZQ0KPiBsYXN0IGNwdSBmcm9tIGEgcG9wdWxhdGVkIGNwdXBvb2wgaXMg
b24gcHVycG9zZSAodGhpcyBhdm9pZHMgbGVhdmluZyBhDQo+IGRvbWFpbiB3aXRob3V0IGFu
eSBjcHUgdG8gcnVuIG9uKSwgYWRkaW5nIHRoZSBjb2RlIGFzIHlvdSBzdWdnZXN0IHdvdWxk
DQo+IGp1c3QgYmUgYW4gYWRkaXRpb24gd2l0aG91dCBhbnkgYmVuZWZpdC4NCj4gDQo+IEl0
IGlzbid0IGRvaW5nIGFueSBoYXJtIChvdGhlciB0aGFuIGFkZGluZyBjb2RlIHdpdGhvdXQg
cHVycG9zZSksIHNvIEkNCj4gd29uJ3QgZXhwbGljaXRseSBOQUsgdGhlIHBhdGNoLCBidXQg
SSB3b24ndCBBY2sgaXQgZWl0aGVyLg0KDQpPbmUgZnVydGhlciByZW1hcms6IEkgd291bGQg
YWNrIHRoZSBhZGRpdGlvbiBvZiBhbiBBU1NFUlQobGlzdF9lbXB0eShyZXBscSkpDQppbnN0
ZWFkIG9mIHRoZSBjb25kaXRpb25hbCBzZXRfdGltZXIoKSBjYWxsLg0KDQoNCkp1ZXJnZW4N
Cg==
--------------0kXZVz591Gx1MQ82njcgoWpa
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-----

--------------0kXZVz591Gx1MQ82njcgoWpa--

--------------AdfA8aaavdJNlhEHAj0xcyaI--

--------------BJDxGHZT2PMW2qJEFLxj80q0
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/Ey8FAmnY6jkFAwAAAAAACgkQsN6d1ii/Ey9P
vQf+L2bYXcwgJSikO52xn2DLzB8iqwWVBbPb7dmRJbQxXma+WqNQHl2YJ0XhzilHkeEgszCDzI3t
e/jgaIEApfaIeKWWjc+DcDj+AS6dorKr+hW7XpSUzZrpiZyUoeX7yEOklVMPEEHQjndd5WF8PGCR
vWJyCl5WMDdCSyO3Bsigq9p1VDQ5QYabpDz4oqFU2IH1lODZFwXu7FNjXNI17MnO62XrTH6XLzLZ
1HPF58WLJc7SvqP+Bu8fzrBDNoHDntsYp+2JBgPqThfPiUJIJhQAav8RcTv/Z4ozhZJ+8whffsK7
S+w58i4tXzjLzuAvQPL5S1KO/kyyhrXtTd4r1OMyDw==
=dbVg
-----END PGP SIGNATURE-----

--------------BJDxGHZT2PMW2qJEFLxj80q0--


From xen-devel-bounces@lists.xenproject.org Fri Apr 10 12:24:55 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Fri, 10 Apr 2026 12:24:55 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1278963.1563647 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wBAuo-0003LV-FY; Fri, 10 Apr 2026 12:24:50 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1278963.1563647; Fri, 10 Apr 2026 12: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 1wBAuo-0003LO-Ck; Fri, 10 Apr 2026 12:24:50 +0000
Received: by outflank-mailman (input) for mailman id 1278963;
 Fri, 10 Apr 2026 12:24:49 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <jbeulich@suse.com>) id 1wBAum-0003LE-Rs
 for xen-devel@lists.xenproject.org; Fri, 10 Apr 2026 12:24:48 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wBAum-00EUP9-7Z
 for xen-devel@lists.xenproject.org; Fri, 10 Apr 2026 14:24:48 +0200
Received: from [10.42.69.7] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <jbeulich@suse.com>)
 id 69d8ec06-bab6-0a2a0a5309dd-0a2a4507aa7a-46
 for <xen-devel@lists.xenproject.org>; Fri, 10 Apr 2026 14:24:48 +0200
Received: from [209.85.128.51] (helo=mail-wm1-f51.google.com)
 by tlsNG-ef75cf.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.0)
 (envelope-from <jbeulich@suse.com>)
 id 69d8ec0f-ba2d-0a2a45070019-d1558033d8b6-3
 for <xen-devel@lists.xenproject.org>; Fri, 10 Apr 2026 14:24:47 +0200
Received: by mail-wm1-f51.google.com with SMTP id
 5b1f17b1804b1-4887fd35e60so13675885e9.2
 for <xen-devel@lists.xenproject.org>; Fri, 10 Apr 2026 05:24:47 -0700 (PDT)
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-488d5df260bsm20547655e9.13.2026.04.10.05.24.46
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Fri, 10 Apr 2026 05:24:46 -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=google header.d=suse.com header.i="@suse.com" header.h="Content-Transfer-Encoding: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=1775823887; x=1776428687; darn=lists.xenproject.org;
        h=content-transfer-encoding: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;
        bh=GZnNbpjwnkwqkv2CoFGa7gUAd4Azk+SDTP3+qEeveGs=;
        b=ba9jnJ4HUH5RR3bIR8A205hzrAeaA0MW6uHnszyhGSOLzH01DMH/p0rcVfHHttHYNX
         XmXrYfevsvK4zXKm6jGDDPGqaqvnZXJwg+8la/RvdnNNNoQbdbJX/T+DnunZP9b7PJ2b
         POKfGEDn0yiAgDt5HdDTcx6Y4J61ItqV8l1kLcC0S7e9NDUPrtR3OhQxsJTlnl7oL3Tk
         QoaFI0qe4Rwlzf0UdtVUOQamSZpHAVmBMcO5fPVj+y59BeHUy1d7ToNtsOPTn+RmXfAY
         31SjBoAE8Sd4DyDhDbEULdafE4UGyJ0msw1GLd2VKGtNfeC+jrXYEzvgjZV+dTWYlvoJ
         iq7Q==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20251104; t=1775823887; x=1776428687;
        h=content-transfer-encoding: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;
        bh=GZnNbpjwnkwqkv2CoFGa7gUAd4Azk+SDTP3+qEeveGs=;
        b=OMg2xkLP2/0OR5mOay92wbf7sMSL0+kh9oj5dR2/2RjT5mMIVVPi4NamOs/1+CBt2o
         jUD9wg9gy48POc4CSOaWtqqtt6mUxnKSfual8hYuV/m7LI02r6mPE/8kE7jImxtscW0+
         VUuFX3MLdGUVfFNP6tDh66BWBR5J2tfWDZsJivgXYbjAR7ZAV87e+Kfc3eTPBFmpHJMe
         VKxP+BOcXdc8Keen5uixNvMFQMkXggdoJhdd7emQZNtHKPC6d7RlXkdefE6ppTZS+Kl6
         OdSeLueYa2Yf85G6fa+GT0t4pWxsV3qpJ4yqagyQQaxzbAeeBEdF+gvLa2Uq/GpWqE9a
         80hA==
X-Forwarded-Encrypted: i=1; AJvYcCXRnqtt3dYhtiiKdeb8h3BK2DBmRg8rwZVBhuFo/66H9t80zf8ir3VfmvxWRXB+glen1pRQHQnvkDY=@lists.xenproject.org
X-Gm-Message-State: AOJu0YwMQrbIcZg3gXSmDSRjkkZJOsVVJIq8BlCEDH26TkxxPWXZJZEt
	DNEIIvc22iy/Z5ZEBMxhkdDQokUxzTprXZZYXRIFx6/IAcpj/SQc1S5J7zd/tYyb3A==
X-Gm-Gg: AeBDieujghGGn3nCd+esd0PUTKDotugsETHxQK+CH5Z/5B0D0G63KMeEveuKNhcKega
	7whYkBElMVnuE37ZJJ4Ou8zsmedAOTJ61pyZJMTsJVBwV3Lmld/9mgk7jMQvrUP7w+1soTli1EG
	oWxsJgtz+80gvsuszob/Djqv0mmhU1wissAptuwy2Xw4M6K6rJbVZbFmiqTua1vjOvH7WXCrLZm
	UwnCe+4KBUrIqwmGGLXmoxagPtksMIrImbGnyQIA6W9LmqtCANvM4sJE4URBUgxM/TuDDDaulup
	VmBwVkehIIcubj7IgnlJrSadSK0P/SLdK4pHVpeMTti1GlAyKaQPJrcugdu+5aFVMb5JwXuj5H+
	/Sydosu1L75qlT7+HEdV7zx0By2Vg3aIA24KkaPxiPPibSs4dsFMXrHlxnDS4DYfqaFvvdC0Djy
	ANbqkZ60ihTDxAYzaZW3dZ+iaGeaRYdK72SvTPKSTJHFtODlyfOqMdgSohxrL42XytORbONWc6v
	Z6wfKG6QWnnDWY=
X-Received: by 2002:a05:600c:890e:b0:485:3dfc:569 with SMTP id 5b1f17b1804b1-488d683665dmr25464345e9.16.1775823887259;
        Fri, 10 Apr 2026 05:24:47 -0700 (PDT)
Message-ID: <b93e33cf-6e1d-4117-b517-7f92516e2a6d@suse.com>
Date: Fri, 10 Apr 2026 14:24:44 +0200
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH v4 00.9/16] x86/CPUID: enable AVX10 leaf
To: Teddy Astie <teddy.astie@vates.tech>
Cc: Andrew Cooper <andrew.cooper3@citrix.com>,
 =?UTF-8?Q?Roger_Pau_Monn=C3=A9?= <roger.pau@citrix.com>,
 xen-devel@lists.xenproject.org
References: <1e2ff012-b07a-43be-9ba6-290b38d3c97c@suse.com>
 <bdf60f69-6d1f-4332-9575-671d475c542e@suse.com>
 <029ab247-b8a1-4961-80ab-5b13e5c7aa77@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: <029ab247-b8a1-4961-80ab-5b13e5c7aa77@vates.tech>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
X-purgate-ID: tlsNG-ef75cf/1775823887-83D4741E-FDE9E919/0/0
X-purgate-type: clean
X-purgate-size: 5108

On 10.04.2026 11:26, Teddy Astie wrote:
> Le 09/04/2026 à 17:18, Jan Beulich a écrit :
>> This requires bumping the number of basic leaves we support. Apart from
>> this the logic is modeled as closely as possible after that of leaf 7
>> handling.
>>
>> Signed-off-by: Jan Beulich <jbeulich@suse.com>
>> ---
>> The gen-cpuid.py adjustment is merely the minimum needed. It's not
>> really clear to me whether someone turning off e.g. AVX512BW might then
>> also validly expect AVX10 to be turned off.
> 
> AFAIUI, AVX512BW is a dependency of AVX10, as AVX10 implies that the 
> former is available.

I'm not convinced it is a "dependency". My understanding is that while
Intel may say that all their AVX10 hardware is expected to set all the
respective AVX512* bits as well, the spec says e.g. "Intel® AVX-512
instruction families included in Intel® AVX10.1 are shown in Table 3.2."
Where "instruction families" doesn't say anything about CPUID bits. So
from an abstract spec pov someone wanting to use e.g. VMOVDQU8 will
want to check for AVX10 || AVX512BW.

>> Do we want to synthesize AVX10 in the (max?) policies when all necessary
>> AVX512* features are available, thus allowing migration from an AVX10
>> host to a suitable non-AVX10 one?
> 
> I guess we want, there is not really a reason to not allow it.
> 
> Some software may check for AVX10 only, and not check for individual 
> AVX512 bits.

As per above, such software may be slightly flawed. Synthesizing the
AVX10 feature bit also means synthesizing the AVX10 leaf then, for
example. This may be somewhat of an issue for migration; I didn't
thoroughly think this through yet.

>> --- a/xen/arch/x86/cpu-policy.c
>> +++ b/xen/arch/x86/cpu-policy.c
>> @@ -211,7 +211,7 @@ static void recalculate_xstate(struct cp
>>       if ( p->feat.mpx )
>>           xstates |= X86_XCR0_BNDREGS | X86_XCR0_BNDCSR;
>>   
>> -    if ( p->feat.avx512f )
>> +    if ( p->feat.avx512f || p->feat.avx10 )
> 
> In principle, the avx10 check is redundant as avx512f must be set if 
> avx10 is set.

I don't think so; see above discussion of AVX512BW.

>> --- a/xen/arch/x86/lib/cpu-policy/cpuid.c
>> +++ b/xen/arch/x86/lib/cpu-policy/cpuid.c
>> @@ -125,6 +125,7 @@ void x86_cpu_policy_fill_native(struct c
>>           switch ( i )
>>           {
>>           case 0x4: case 0x7: case 0xb: case 0xd:
>> +        case 0x24:
>>               /* Multi-invocation leaves.  Deferred. */
>>               continue;
>>           }
>> @@ -218,6 +219,15 @@ void x86_cpu_policy_fill_native(struct c
>>           }
>>       }
>>   
>> +    if ( p->basic.max_leaf >= 0x24 )
>> +    {
>> +        cpuid_count_leaf(0x24, 0, &p->avx10.raw[0]);
>> +
>> +        for ( i = 1; i <= MIN(p->avx10.max_subleaf,
>> +                              ARRAY_SIZE(p->avx10.raw) - 1); ++i )
>> +            cpuid_count_leaf(0x24, i, &p->avx10.raw[i]);
> 
> Do we need to split the 0 iteration out ? I guess we can just start from 
> i = 0 instead.

Well, strictly formally p->avx10.max_subleaf is uninitialized on the
first loop iteration. Hence comparing against it isn't a good idea. (In
practice the field taking whatever value will let i == 0 pass, but still.)

What's more important though: I want to keep this in sync with what we to
elsewhere in the function.

>> --- a/xen/include/xen/lib/x86/cpu-policy.h
>> +++ b/xen/include/xen/lib/x86/cpu-policy.h
>> @@ -59,11 +59,12 @@ unsigned int x86_cpuid_lookup_vendor(uin
>>    */
>>   const char *x86_cpuid_vendor_to_str(unsigned int vendor);
>>   
>> -#define CPUID_GUEST_NR_BASIC      (0xdu + 1)
>> +#define CPUID_GUEST_NR_BASIC      (0x24u + 1)
>>   #define CPUID_GUEST_NR_CACHE      (5u + 1)
>>   #define CPUID_GUEST_NR_FEAT       (2u + 1)
>>   #define CPUID_GUEST_NR_TOPO       (1u + 1)
>>   #define CPUID_GUEST_NR_XSTATE     (62u + 1)
>> +#define CPUID_GUEST_NR_AVX10      (0u + 1)
> 
> Intel specification now defines AVX10.2 which has a additional leaf 
> (even though the whole leaf is currently marked as "reserved").

See "x86/CPUID: enable AVX10.2 sub-leaf" later in the series. The first
part aims at supporting just AVX10.1.

>> --- a/xen/tools/gen-cpuid.py
>> +++ b/xen/tools/gen-cpuid.py
>> @@ -294,7 +294,7 @@ def crunch_numbers(state):
>>           # enabled.  Certain later extensions, acting on 256-bit vectors of
>>           # integers, better depend on AVX2 than AVX.
>>           AVX2: [AVX512F, VAES, VPCLMULQDQ, AVX_VNNI, AVX_IFMA, AVX_VNNI_INT8,
>> -               AVX_VNNI_INT16, SHA512, SM4],
>> +               AVX_VNNI_INT16, SHA512, SM4, AVX10],
>>   
> 
> I think we can instead make AVX10 a dependency on AVX512. Especially since
> 
>  > Any processor that enumerates support for Intel AVX10 will also 
> enumerate support for Intel AVX, Intel AVX2, and Intel AVX-512 (see 
> Table 16-2).
> 
> with AVX-512 depending on AVX2.

That's the very statement I refer to at the top. Intel may say this for
themselves, but the spec - according to my reading - doesn't mandate this.

Jan


From xen-devel-bounces@lists.xenproject.org Fri Apr 10 12:35:25 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Fri, 10 Apr 2026 12:35:25 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1279024.1563673 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wBB4n-0006HU-QZ; Fri, 10 Apr 2026 12:35:09 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1279024.1563673; Fri, 10 Apr 2026 12: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 1wBB4n-0006HN-M0; Fri, 10 Apr 2026 12:35:09 +0000
Received: by outflank-mailman (input) for mailman id 1279024;
 Fri, 10 Apr 2026 12:35:09 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <roger.pau@citrix.com>) id 1wBB4n-0006HG-36
 for xen-devel@lists.xenproject.org; Fri, 10 Apr 2026 12:35:09 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wBB4m-00EWok-DK
 for xen-devel@lists.xenproject.org; Fri, 10 Apr 2026 14:35:08 +0200
Received: from [10.42.69.2] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <roger.pau@citrix.com>)
 id 69d8ee78-5cb7-0a2a0a5109dd-0a2a4502d3fc-20
 for <xen-devel@lists.xenproject.org>; Fri, 10 Apr 2026 14:35:08 +0200
Received: from [40.107.209.26]
 (helo=PH8PR06CU001.outbound.protection.outlook.com)
 by tlsNG-720697.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.0)
 (envelope-from <roger.pau@citrix.com>)
 id 69d8ee78-42fa-0a2a45020019-286bd11ad033-3
 for <xen-devel@lists.xenproject.org>; Fri, 10 Apr 2026 14:35:05 +0200
Received: from CH7PR03MB7860.namprd03.prod.outlook.com (2603:10b6:610:24e::14)
 by CH0PR03MB6083.namprd03.prod.outlook.com (2603:10b6:610:ba::14)
 with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9745.28; Fri, 10 Apr
 2026 12:35:02 +0000
Received: from CH7PR03MB7860.namprd03.prod.outlook.com
 ([fe80::f5ba:35df:1c9f:b343]) by CH7PR03MB7860.namprd03.prod.outlook.com
 ([fe80::f5ba:35df:1c9f:b343%4]) with mapi id 15.20.9769.043; Fri, 10 Apr 2026
 12:35: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=gBoBSXP8EvoBXlBfevzM1SrZRTI0bk0vIYmbqwlkTgF+yIHkpzrpfYFd5zxtquXlEwRZQgA2vP59MZZE4ZNgMCMXr7F0IJbDVRIFsMflmzqC97OHAC3hk6L198NCBytuoMoNNBRQXYOP9tCCiDAfj/v5GN2zbHghuaow0U55ZZx/1pMBljbgOZKwXh3q4+ZophvULhVVxW3jwUH4KEoH4aBCbqtfTUOSc3t9XF7PuWV42tMc+YIkE0G/RlDCpru7WwQce5SCzMH+pi3SGZJjiAFNJ9pgjZQIF4fC+/14ApzEWlMRZVNGEm5/5EaIx7jWPJnsBX96W1SB0CFGIY6q8g==
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com;
 s=arcselector10001;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1;
 bh=l58eyZBdQYE1wiJggwLEnMNNUGQcCZw7PVZqOmMmsFE=;
 b=lBmO+Aud8VnTqyY9JkB0nit2mt0rIJwJ+wshaZkl/eXW5oRMiqRtykr4I7/TXoSKNLCcTMTWEUNdh5tvB7/apyVH7lJx9d6ClOf9Dij4wXSEorYRH0H7N+1N0xgHLi+dFI4uVxzQJCNI8cKhI0xrF+7I+5ozHwul4xfV1MlSHVV/4BRHabyNitnU0Z9XekcFKikJLyiQcyHl6EFmSar/kasWcqS1Cg2cbwLL2PpKwOIUfMfv+5Dt11RB0YMHo89U//qoXUheFFJVlvNazvj/hJOW1blfgtytqEhdRDqKr8Y3lAhYSzEMamLZqtEfWt3fkcBI71SGBvBCpSuKh4DXUg==
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=l58eyZBdQYE1wiJggwLEnMNNUGQcCZw7PVZqOmMmsFE=;
 b=t6jj3PHxj0t0kVVg1zXb49KHAyzJScAe8UVdAf3BJL/W+ZybllZNJxb0GOe2c/njJkRyT6BiAQ5HhYX6dGR9aaLq/xbN4LkHtsHFmdTEqNv/UhGMgFxY2tQ+OExwsRv5AUOpb0TwC1rLhIe7hHsWQRRSrNNqFu/3WEIPLBLDd3k=
Authentication-Results: dkim=none (message not signed)
 header.d=none;dmarc=none action=none header.from=citrix.com;
Date: Fri, 10 Apr 2026 14:34:58 +0200
From: Roger Pau =?utf-8?B?TW9ubsOp?= <roger.pau@citrix.com>
To: Jan Beulich <jbeulich@suse.com>
Cc: "xen-devel@lists.xenproject.org" <xen-devel@lists.xenproject.org>,
	Andrew Cooper <andrew.cooper3@citrix.com>
Subject: Re: [PATCH] VT-d: avoid multi-message-MSI check for HPET
Message-ID: <adjucpWVe8jl-uNc@macbook.local>
References: <1903a57a-524e-4e6d-bd47-a87fadda4aa0@suse.com>
 <adfjn296dde_RQYE@macbook.local>
 <c1b2ab3c-7d4e-4f1d-b830-dbf1c933178e@suse.com>
Content-Type: text/plain; charset=utf-8
Content-Disposition: inline
Content-Transfer-Encoding: 8bit
In-Reply-To: <c1b2ab3c-7d4e-4f1d-b830-dbf1c933178e@suse.com>
X-ClientProxiedBy: MA3P292CA0071.ESPP292.PROD.OUTLOOK.COM
 (2603:10a6:250:49::12) To CH7PR03MB7860.namprd03.prod.outlook.com
 (2603:10b6:610:24e::14)
MIME-Version: 1.0
X-MS-PublicTrafficType: Email
X-MS-TrafficTypeDiagnostic: CH7PR03MB7860:EE_|CH0PR03MB6083:EE_
X-MS-Office365-Filtering-Correlation-Id: 2153eb33-968b-4b25-08ff-08de96fd95b1
X-MS-Exchange-SenderADCheck: 1
X-MS-Exchange-AntiSpam-Relay: 0
X-Microsoft-Antispam:
	BCL:0;ARA:13230040|1800799024|366016|376014|18002099003|22082099003|56012099003;
X-Microsoft-Antispam-Message-Info:
	DZpuBQYsR77G/DKR6R1hqNd6BV3c+a7L3tKfs1U0XwLNW+HeM7FtY2m11vcwixE1FKj/rbqd0LSDTDa1EQUsTk2OTPd9bHilozPAwtNDUPVdobQsA2gX3jk/Sid4SWVrZP6ueGAprcJaYAuXNQtDtBnIo1khu5zf6AaC4sVjasDQa/SNsTOFtf6m3AmCiYXTj0ZwtlBU/eNtJTqMTo88EKxbGID5Dg01jKbid9SMXoB2vSFHZFMpuTsUAqXAOljjv6AvMHZl+Tf+vcFXQt4UqoL0ULSzadOUUy8xT3sCBk5KlEQUtX9iY1r60cxHWE6lOjuN/TXmjZ1ZtmYcPac4ChPYLl+zG5QYPid6R+sSgZ8DrmjGjPeOBCHqr8BcB53rUM2/A7NnCSq0XiKwL0q5eBBTSHvyCoIeZLuTRqYZKaUti6UA4oFlhx1yJT/boNy7Er2g/lNLbdL6SDncVsDgjCY8VJmtlbRSvLRIgUK6IOTAhtWd1+q9SWAV8H63mdRqEwzjP4emOAsXScYCUbhP+3L9AoE5ys/MxeVCkLKk+l2Ek3hU/N+jVOOsc/YIsatUsr+j7XwYi24FZH7Io71nh05xzXtls0E0RlJ/it/aYRWR1qzNJOp2uZLlY+ZdYlr8tjDhyT5c/nF5g4cyYOwxj+65iyBTpIQNx0qIGlxLF7XTs7TVq//MxRrqA0+wJ+s5j2hDqGQpOSr+Yv8/2UAwy2oOASIoiuEda3Z6q8mnH0o=
X-Forefront-Antispam-Report:
	CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:CH7PR03MB7860.namprd03.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(1800799024)(366016)(376014)(18002099003)(22082099003)(56012099003);DIR:OUT;SFP:1101;
X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1
X-MS-Exchange-AntiSpam-MessageData-0:
	=?utf-8?B?K0xpY0lBb3NGcElxeVA0dEU3bXVTcHFFVFdmODljYkd4QjNMUEthSm54aEJQ?=
 =?utf-8?B?TXhwYU0zQlNvOWpvNnlxU09kSVpKK0RtTVlHSDErMTduMXRKMlhxMjh1YXJp?=
 =?utf-8?B?WXhyYnpDb0I5dW5CUzRVdlJicUJhUUthbTlnd2VEeFh6TFgrd2dhbVp0Wlpw?=
 =?utf-8?B?T1MzN25oUlhtdlNBdGllbTAvbGVGNk9UYVA4cGhMNEJIT1VvMWc2OUVrVlJX?=
 =?utf-8?B?V2YwWmJFd0R0SEV6a2hWRUpvcWNGQmRySzhRbUpKSjRidWNNcldUOGFuS0hH?=
 =?utf-8?B?Nk1RN1B1NmJBejNESG8zYkVZa3JCMm5oRzlUekF0M1dYdTJaZnBMY3YxdlpJ?=
 =?utf-8?B?YnJBSldiS3RSd3V3MG5Ed1hFaSszbERWTzB1d2p6bFlrTHR5QXp3VUpJdDU3?=
 =?utf-8?B?MWtyK245cWNDNWdFMjdkOVpMUVNneTducWRaQkhmTjM1eUJmV3d0OVZsb1BP?=
 =?utf-8?B?MERWVjFHMlF2M0xEaUx2dUZGWHkya3hrZEFaWmNmTUFmNGFzUjFIcTY2YVc3?=
 =?utf-8?B?SFU5c0U0YkRUMnhjc0R5L3FlWEJMU29aMVRQUVNlSlYwUXZmOEQ4RmhvVlpo?=
 =?utf-8?B?UzNicUlhMFdFanI1ZTUrcG4vTDQ1U2xJVVEvZzhFOFo0Y083K0srQWZBRzEw?=
 =?utf-8?B?NmRzZmlocWNRQ3g3RW1TVlhMNEcvTUhpM1pHY3c4WHV2bVgzYnZ1VTlibkd1?=
 =?utf-8?B?VE9wMVI0cnYyRElaajlJbDNIMC9weFV3VjJXS29sV0hWcGtOUUQxQUQ0anJQ?=
 =?utf-8?B?M20zOU16YWV3dStEelJTSlZFQ05oVlJURUlmWXNsd3RCcTJLdmxwc2Z1cDhP?=
 =?utf-8?B?WjNuWk83aGlObTZNbzJickMwU1VFQnFYNFdtSzVwa3VCcmdkYU9IaFFsZm43?=
 =?utf-8?B?QS9ZeTRPdnlFM1pLcnd2eEVhL1FCVkZsNlpSbTFOL0MwYkQveEJycm5qUC9K?=
 =?utf-8?B?TVhqSHphZG9OZkFmdU8ya2wxSFg4Zi82ZGhzckdMcFFOWWwvb1BGeGYyUGVH?=
 =?utf-8?B?VnBGQUNUR20reEVXeWprSXUrQzFqNjV1UlpCcUgvSk9FblhlNG5xbi9yVnI0?=
 =?utf-8?B?REVUbHRic3J2TEQ2RjVITWxacytSMCtxa3JVbVl0L25mUGpreFZKNHZ5YUd5?=
 =?utf-8?B?bC9yZTdKUTZoMkNKYXh5N0R0S2lUd0E0cFVOMzhLdFk3THVUTWFDWWRML0RN?=
 =?utf-8?B?U1hXWmZoU3lJMEhpZzI5U2VSTFA2M1JHNzd1bEJ2SWw2VS9MY2MvTmx0NVVH?=
 =?utf-8?B?OXRWWG9JL2lHcHhtOWVtRGZEWG5pcnBGenpPeTRIOUFFSmpzc1dVUFpYMEdX?=
 =?utf-8?B?L1VyMzYxVHVudkpHNnFWMzh1ZTF2SFVVcFp0V0IxZ0JueXptT0IvQkFmSGJx?=
 =?utf-8?B?em1aWXZyVnlqdUYvZ1pobCt0VTFOc2I1T2J1ajZicXVHaExuaW1VRklBQ1d5?=
 =?utf-8?B?d2hqQ3JNRjlaa3hXTlZRRjNpT3dYNnUyNU8vMzlkWVBQZmQ2NXpkb09LZjBE?=
 =?utf-8?B?QTJTWWFwQW9PcStyQWhMYzZWdEhFcFZRaVBuWENuSGZzQ0hsUzVxOXNHNVBv?=
 =?utf-8?B?bDBPcmNVWk5rdGVmMFl2bUljWDhTbCtyckxFRHQ0eVNCV2h4YUE0aFV0TjZ0?=
 =?utf-8?B?QjEwR0FXVnNHU2FRZ2JSMGNiOWx5WXRrYldJRVo1TytNdjUydS9FWko1MWxp?=
 =?utf-8?B?U0JwT2RqWjYwemdCZmpYUzBIVFVzVWlOUFZCNHNRQzN1NkdMcGtCc09EUTBt?=
 =?utf-8?B?SlFnbEk4SGtjdDFVeVNpdTNsTXNxNXh3NEdodjNLaDJDR3hVY3lFdjlrQS9C?=
 =?utf-8?B?UFVYUzVnVWNzRGk3Y1BZT3lEYUJyb2JEVU1IYUdCdWFqOHhqWUYwaXovOHFz?=
 =?utf-8?B?RzZWa1B2NHVCanBwbENnQzIxRHlOUnp4Vm9CbkI2ays5MU5wTVVwMUVYZWEx?=
 =?utf-8?B?UE84ZjU3ZFV3SFpFaWpKdlBwZFI4Y2kyUFF6VnhHSEx1cW1EVldyaVk0d2N3?=
 =?utf-8?B?MkR3VTc3RTUyWVo4aG9KV0hXOVhIZlhIdHdmRG11SC9FUGlYWGlFR2J0ak56?=
 =?utf-8?B?WHFmN1I5NFRDU2hDOGE2S0xTdDU4a3N5UUlNT1FvWENuOVdaOXIrUEl6QWVK?=
 =?utf-8?B?VWtuUU1EWnZsdERHZEpnVzBNcjlmUGxablkyem41bnFoZS9VWWRiN29pR3Z4?=
 =?utf-8?B?SnZndFRwaUdoRWowMnFuUzdXcnhaQkxpeWdXNE4zNzlDaGR6Skdid3o3amh3?=
 =?utf-8?B?cVU0U1dIQVBvNVU5T3FRaW9EUGljQ2JrVEZ1UC9pRG1GdG5LN1ZvQVBheDBP?=
 =?utf-8?B?YnV2WFYxdERBeXJwUnRtNFJmYU1uOWZxOVpxOFR5cXVoVlJwYnRCQT09?=
X-OriginatorOrg: citrix.com
X-MS-Exchange-CrossTenant-Network-Message-Id: 2153eb33-968b-4b25-08ff-08de96fd95b1
X-MS-Exchange-CrossTenant-AuthSource: CH7PR03MB7860.namprd03.prod.outlook.com
X-MS-Exchange-CrossTenant-AuthAs: Internal
X-MS-Exchange-CrossTenant-OriginalArrivalTime: 10 Apr 2026 12:35:01.8137
 (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: Ra7l/M1B+0k+gBFCLODf5bEItR8CTEqOLIWSIR2AqA79fZ7uDlb4VQ8FRWOldkWgLN9zKtJy8IcRBqu72ffoVA==
X-MS-Exchange-Transport-CrossTenantHeadersStamped: CH0PR03MB6083
X-purgate-ID: tlsNG-720697/1775824506-AE13ACD1-2E90A1FC/0/0
X-purgate-type: clean
X-purgate-size: 1449

On Fri, Apr 10, 2026 at 07:51:45AM +0200, Jan Beulich wrote:
> On 09.04.2026 19:36, Roger Pau Monné wrote:
> > On Wed, Apr 01, 2026 at 02:47:48PM +0200, Jan Beulich wrote:
> >> Having this immediately below a PCI-dev vs HPET conditional is (mildly)
> >> confusing. Move that if() into the body of the earlier one.
> >>
> >> Signed-off-by: Jan Beulich <jbeulich@suse.com>
> >>
> >> --- a/xen/drivers/passthrough/vtd/intremap.c
> >> +++ b/xen/drivers/passthrough/vtd/intremap.c
> >> @@ -513,13 +513,13 @@ static int msi_msg_to_remap_entry(
> >>  
> >>          if ( rc )
> >>              return rc;
> >> +
> >> +        if ( msi_desc->msi_attrib.type == PCI_CAP_ID_MSI )
> >> +            nr = msi_desc->msi.nvec;
> >>      }
> >>      else
> >>          set_hpet_source_id(msi_desc->hpet_id, &new_ire);
> >>  
> >> -    if ( msi_desc->msi_attrib.type == PCI_CAP_ID_MSI )
> >> -        nr = msi_desc->msi.nvec;
> >> -
> > 
> > I'm not fully opposed to this, but maybe it would be good to add a
> > small comment to note that HPET never use multi-vector MSI?
> 
> That aspect doesn't change - HPET code simply doesn't (and never should)
> set .type to PCI_CAP_ID_MSI. That field should reflect reality (and HPET,
> iirc, simply leaves it at 0).

Hm, I see, HPET is a very special case which have been "adjusted" to
fit the MSI generation logic.

Acked-by: Roger Pau Monné <roger.pau@citrix.com>

Thanks, Roger.


From xen-devel-bounces@lists.xenproject.org Fri Apr 10 12:58:35 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Fri, 10 Apr 2026 12:58:35 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1279064.1563681 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wBBRN-0001KM-IW; Fri, 10 Apr 2026 12:58:29 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1279064.1563681; Fri, 10 Apr 2026 12:58: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 1wBBRN-0001KF-FR; Fri, 10 Apr 2026 12:58:29 +0000
Received: by outflank-mailman (input) for mailman id 1279064;
 Fri, 10 Apr 2026 12:58:28 +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 1wBBRL-0001Js-RH
 for xen-devel@lists.xenproject.org; Fri, 10 Apr 2026 12:58:28 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wBBRJ-00CVQa-Hf
 for xen-devel@lists.xenproject.org; Fri, 10 Apr 2026 14:58:27 +0200
Received: from [10.42.69.10] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <Michal.Orzel@amd.com>)
 id 69d8f3e9-bab6-0a2a0a5309dd-0a2a450a9c12-18
 for <xen-devel@lists.xenproject.org>; Fri, 10 Apr 2026 14:58:26 +0200
Received: from [52.101.193.15]
 (helo=CH1PR05CU001.outbound.protection.outlook.com)
 by tlsNG-4011c0.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.0)
 (envelope-from <Michal.Orzel@amd.com>)
 id 69d8f3f1-ee98-0a2a450a0019-3465c10f2e6f-4
 for <xen-devel@lists.xenproject.org>; Fri, 10 Apr 2026 14:58:26 +0200
Received: from SJ2PR07CA0016.namprd07.prod.outlook.com (2603:10b6:a03:505::16)
 by CY1PR12MB9559.namprd12.prod.outlook.com (2603:10b6:930:fd::14)
 with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9769.42; Fri, 10 Apr
 2026 12:58:21 +0000
Received: from SJ1PEPF000023CB.namprd02.prod.outlook.com
 (2603:10b6:a03:505:cafe::ab) by SJ2PR07CA0016.outlook.office365.com
 (2603:10b6:a03:505::16) with Microsoft SMTP Server (version=TLS1_3,
 cipher=TLS_AES_256_GCM_SHA384) id 15.20.9769.43 via Frontend Transport; Fri,
 10 Apr 2026 12:58:21 +0000
Received: from satlexmb08.amd.com (165.204.84.17) by
 SJ1PEPF000023CB.mail.protection.outlook.com (10.167.244.5) with Microsoft
 SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id
 15.20.9769.17 via Frontend Transport; Fri, 10 Apr 2026 12:58:21 +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.17; Fri, 10 Apr
 2026 07:58:20 -0500
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.17; Fri, 10 Apr
 2026 07:58:20 -0500
Received: from [10.252.147.171] (10.180.168.240) by satlexmb08.amd.com
 (10.181.42.217) with Microsoft SMTP Server id 15.2.2562.17 via Frontend
 Transport; Fri, 10 Apr 2026 07:58:20 -0500
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@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=MBrsyfbNjUQfUlsQqHBL4G688mVg2s30LgWM0tnzT4vEGsNEF/oMV263DX383sKauIUtLbj3bh7QvkOcOnvejNITm2ADIk/ux1GK++u8aa/+gplOBscRqv/bPBjolyTrEp6lnh435DrJc23JEAdsRdceWnkbasPD7JL/AWjsoxYMNmUDrfnCPwct0hfXcKIDzt11SnTCnowzUqeTR9S4/Wl8ckrwjwyfW28Qx1ccZMa45IKquvG5OrAF9iKZXa5gMHyzF7D/Lw7paBe9VnSBpGKr+baQlxIokdVR0UYmsJRFJ7UmKutgPBU9H5qwLnx/XwveOH6SZk5IpC1sW364PA==
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com;
 s=arcselector10001;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1;
 bh=IzLSHPbl9KU89iufjOJ85QHvSN22Wl8jKZxhnXFhNcQ=;
 b=oTAwbyomxqX7q0wAFbcDoX+4vvVq1V8oAOSAFrJVTAGYbfU33aM+Bmsn9XR5rVTTSTicRNTmnVqkRrOw2Kgu5oRlnkA7PnHc1CBT/tEhxfSBbFH094zGv8yKHLMNO0O1UYY1M5nQhgUQF7oPdN5fVe3JQnC5463t6pVtOocRJkyVv9fUoJ5cFiBbqyBvwk6GvVBRq0ptOPZ6pYWIK6jkFDKVdbufg3XTYohnVqXCRhxVOwfyaUKZjRajo9lDP1+ZUw7pkNI+h5JJ8ypHRxxS2P34u0MdUCxd4V9Fxr55zTj5pkeqt5iKWOHVPsng3u+d9xhHC/oI2mMdWwldpIOAiw==
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=IzLSHPbl9KU89iufjOJ85QHvSN22Wl8jKZxhnXFhNcQ=;
 b=q+04cJy65BgarDxGmFpi73P9MWAjYn04yG4kGlY2tklqyH7VvLLrzfv1FbVXNsGuA5Mwc7RtV5G15LFzLd5CdeRrfD68PLmXDMKZc8glMuCASleGZOT37AmqcJRfLq9cNEsYqrCOJZ8jZJhgQFfAqu/3oTJQWhm0Io0LA8eVKJk=
X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 165.204.84.17)
 smtp.mailfrom=amd.com; dkim=none (message not signed)
 header.d=none;dmarc=pass action=none header.from=amd.com;
Received-SPF: Pass (protection.outlook.com: domain of amd.com designates
 165.204.84.17 as permitted sender) receiver=protection.outlook.com;
 client-ip=165.204.84.17; helo=satlexmb08.amd.com; pr=C
Message-ID: <2ffad2ca-e60d-4cc0-866c-4881544fcc96@amd.com>
Date: Fri, 10 Apr 2026 14:58:19 +0200
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [BUG] Potential double-free in Xen dt-overlay attach/remove error
 path
To: Gyujeong Jin <wlsrbwjd7232@gmail.com>, <xen-devel@lists.xenproject.org>
References: <CANrF8CHA1XacwRzNcw3zt0goEV-7in_=vtEYhLxSjwaV62jrTw@mail.gmail.com>
From: "Orzel, Michal" <michal.orzel@amd.com>
Content-Language: en-US
In-Reply-To: <CANrF8CHA1XacwRzNcw3zt0goEV-7in_=vtEYhLxSjwaV62jrTw@mail.gmail.com>
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: 7bit
X-EOPAttributedMessage: 0
X-MS-PublicTrafficType: Email
X-MS-TrafficTypeDiagnostic: SJ1PEPF000023CB:EE_|CY1PR12MB9559:EE_
X-MS-Office365-Filtering-Correlation-Id: 539da364-68c7-44cb-26d0-08de9700d80e
X-MS-Exchange-SenderADCheck: 1
X-MS-Exchange-AntiSpam-Relay: 0
X-Microsoft-Antispam:
	BCL:0;ARA:13230040|376014|36860700016|82310400026|1800799024|22082099003|18002099003|56012099003;
X-Microsoft-Antispam-Message-Info:
	gSS8A32tt3Z4wmcFGYynsOA6noy6QZJclIxRXz4ydSMPnzZaLbAnKE0dtS8YvdF/NZKAzgKAi0ZKeB1oLO+Kgx4pAz/TF7so+U/wnIGrjss6L0JFgVXq6q7P2KlopwFznjBLY2y1ch9m3EMfPwLzcNpPAAF8uTmn0DfzQ8zOxVBxklaCKA6cA3X8mHoR6z4ufkln9aQhiww1A/cbaUCcP0DwbVU4DuwX4ng4lSYShntd1GA4ly6nbtZ6trY7fpaXiF06p6ftZsfXOE2Fts45yAkxJoJKH8mQMB3NoPdM6f0ByFY8LeFP1HKEvVEXnev/c4xKkvZ1dXv4G9gLb9g6h+Kj2ZfyyzJm8/ejKBU68TMhm9aqukaxfkEGvDUQcC15ibMXT6T+XaB49+cCL0OVKZCGO2QvT2Ff6OOcUva9/ksQWlrlUyCEOjKS2ufntS/ZJSnTYGukIaSBTMK/4rLd5VT4/At6TPxXmWeN6QVg7Nro7dAlgNK8/ReGM65tqcZjtb8J28RLLc9mi6/GADU05IRvyj5p82ITRpX6NvsKsbtNhKjoATfX5bMoIIItAAWOGQI0aDLcNHa3Q0k0nu2+TH+waXBwn3fzt5a064BMc+XmXERvy81hgNH2Wj/0BfTBe2MJIys+o2C2S6mTH5NwqYxSeoZIZxYLnUCPOiNxYljmsfv6Jn2sl0LxfT2KQ4SUxxFqa3f9WaWspFEaRo5/SiEnQQmau/DanVS82txwvkPx62viS0V1NRc9WMXhd7q+AKu0bE9kJ6tFF3UQ0tAoXw==
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)(36860700016)(82310400026)(1800799024)(22082099003)(18002099003)(56012099003);DIR:OUT;SFP:1101;
X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1
X-MS-Exchange-AntiSpam-MessageData-0:
	LczEvHB06v6vnxUuWzQ7sYwj2hNXvVnh9Og/4nBHEZYaGeKm4RgR1LDtQrmhUDsCL2np3HTRX9SZqPKDfRYgFwT2NMCVYkt8549QHv0OMPiLN0EBWKc5SlaIslr2HhnTlq1HWMrOhEA4yerliXLzVeQupEOMLG8nz8FPYgbe3SJEdo6ODkf+oYjv/ZE0yhi7vG0hkcHY7B3ntZmcb/fvxjZXunlpiZ7NeHcp8Qqu35pl2riBQKVx3eTwlxONpzc3fyHETIeJO9eqN5q9bknREdykgo6It+IdHqUrZQPtUJKl2q7hqM6DD50+RHJ2Lu3we2wMYPt1Cn2INU0Q2zmhophRDA/piah9CQ9AMlcgm1jLXk/bQD+PwKSnmbqrlfExHLzHFf/PFgdtF0j+MrACxkde7Xj0xvSNSyVSFZDWFimXKkb0XL2huW0O1KnpRIFD
X-OriginatorOrg: amd.com
X-MS-Exchange-CrossTenant-OriginalArrivalTime: 10 Apr 2026 12:58:21.2957
 (UTC)
X-MS-Exchange-CrossTenant-Network-Message-Id: 539da364-68c7-44cb-26d0-08de9700d80e
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:
	SJ1PEPF000023CB.namprd02.prod.outlook.com
X-MS-Exchange-CrossTenant-AuthAs: Anonymous
X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem
X-MS-Exchange-Transport-CrossTenantHeadersStamped: CY1PR12MB9559
X-purgate-ID: tlsNG-4011c0/1775825906-BF5460B1-DF38D3FA/0/0
X-purgate-type: clean
X-purgate-size: 3893

Hello,

Thanks for the report.

I will try to book some time next week to investigate the issues. Our DTBO
feature at AMD diverged a bit from the upstream one, so I already planned to do
some work here but as always there are tasks of a higher priority.

~Michal

On 09/04/2026 23:28, Gyujeong Jin wrote:
> 	
> You don't often get email from wlsrbwjd7232@gmail.com. Learn why this is
> important <https://aka.ms/LearnAboutSenderIdentification>
> 	
> 
> Hello Team, I was advised to report this issue in this way because dt-overlay is
> currently experimental and not security supported.
> 
> I would like to report a potential memory safety issue in Xen related to the
> Device Tree overlay handling logic.
> 
> --------------------------------------------------------------------------------
> 
> 
>     Problem Description
> 
> A double-free / use-after-free condition may occur in the dt-overlay handling
> path when an overlay attachment fails and the same overlay is later removed.
> 
> The issue arises because rangeset objects are freed on the failure path of
> handle_attach_overlay_nodes(), but the corresponding pointers are not cleared.
> Subsequently, handle_remove_overlay_nodes() may operate on these stale pointers,
> leading to a second free.
> 
> 
>       Affected Component
> 
>   * Xen ARM
>   * Device Tree overlay subsystem
>   * File: xen/common/device-tree/dt-overlay.c
> 
> Relevant functions:
> 
>   * handle_attach_overlay_nodes()
>   * handle_remove_overlay_nodes()
> 
> 
>       Impact
> 
> This issue may lead to:
> 
>   * Double-free of rangeset structures
>   * Use-after-free when accessing stale pointers
>   * Potential hypervisor crash (DoS)
>   * Possible memory corruption depending on allocator behavior
> 
> Given that this occurs in the hypervisor context, the impact could extend beyond
> a simple crash under certain conditions.
> 
> 
>       Root Cause
> 
> The issue originates from inconsistent memory management between the attach
> failure path and the remove path.
> 
> In handle_attach_overlay_nodes(), the failure path frees rangeset objects:
> 
> |static long handle_attach_overlay_nodes(...) { ... if ( entry )
> { rangeset_destroy(entry->irq_ranges); rangeset_destroy(entry->iomem_ranges); }
> return rc; } |
> 
> However, the corresponding pointers (entry->irq_ranges and entry->iomem_ranges)
> are not set to NULL afterward, leaving dangling pointers in the entry structure.
> 
> Later, in handle_remove_overlay_nodes(), the same fields are used again:
> 
> |static long handle_remove_overlay_nodes(const void *overlay_fdt, uint32_t
> overlay_fdt_size) { ... rc = remove_nodes(entry); ... rangeset_destroy(entry-
>>irq_ranges); rangeset_destroy(entry->iomem_ranges); ... } static int
> remove_nodes(const struct overlay_track *tracker) { /* Remove IRQ access. */ if
> ( tracker->irq_ranges ) { rc = rangeset_consume_ranges(tracker->irq_ranges,
> irq_remove_cb, d); if ( rc ) return rc; } /* Remove mmio access. */ if
> ( tracker->iomem_ranges ) { rc = rangeset_consume_ranges(tracker->iomem_ranges,
> iomem_remove_cb, d); if ( rc ) return rc; } return rc; } |
> 
> Since the pointers were not invalidated after being freed, this leads to:
> 
>   * reuse of freed memory in rangeset_consume_ranges()
>   * double-free in rangeset_destroy()
> 
> This creates a double-free / use-after-free condition.
> 
> 
>       Environment
> 
>   * Xen: 4.22-dev-517-g500ee5fe0f
>   * Platform: Linux (WSL2 environment)
> 
> 
>     Suggested Fix
> 
> After calling rangeset_destroy(), the corresponding pointers should be set to
> NULL to prevent reuse:
> 
> |entry->irq_ranges = NULL; entry->iomem_ranges = NULL; |
> 
> Alternatively, the remove path should defensively check pointer validity.
> 
> Best regards, Gyujeong Jin (Giunash)
> 



From xen-devel-bounces@lists.xenproject.org Fri Apr 10 13:33:08 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Fri, 10 Apr 2026 13:33:08 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1279096.1563690 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wBByn-0006Wa-4V; Fri, 10 Apr 2026 13:33:01 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1279096.1563690; Fri, 10 Apr 2026 13: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 1wBByn-0006WT-1O; Fri, 10 Apr 2026 13:33:01 +0000
Received: by outflank-mailman (input) for mailman id 1279096;
 Fri, 10 Apr 2026 13:32:59 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92) id 1wBByl-0006WN-Bt
 for xen-devel@lists.xenproject.org; Fri, 10 Apr 2026 13:32:59 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wBByk-004pFT-Ni
 for xen-devel@lists.xenproject.org; Fri, 10 Apr 2026 15:32:58 +0200
Received: from [10.42.69.9] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <oleksii.kurochko@gmail.com>)
 id 69d8fc03-2eae-0a2a0a5409dd-0a2a4509cf40-22
 for <xen-devel@lists.xenproject.org>; Fri, 10 Apr 2026 15:32:58 +0200
Received: from [209.85.208.51] (helo=mail-ed1-f51.google.com)
 by tlsNG-bad1c0.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.0)
 (envelope-from <oleksii.kurochko@gmail.com>)
 id 69d8fc0a-bf79-0a2a45090019-d155d033dcaa-3
 for <xen-devel@lists.xenproject.org>; Fri, 10 Apr 2026 15:32:58 +0200
Received: by mail-ed1-f51.google.com with SMTP id
 4fb4d7f45d1cf-66e6d9610d8so2998754a12.0
 for <xen-devel@lists.xenproject.org>; Fri, 10 Apr 2026 06:32:58 -0700 (PDT)
Received: from [192.168.1.6] (user-109-243-69-121.play-internet.pl.
 [109.243.69.121]) by smtp.gmail.com with ESMTPSA id
 a640c23a62f3a-b9d6dfd77dfsm80073166b.18.2026.04.10.06.32.54
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Fri, 10 Apr 2026 06:32:57 -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=20251104 header.d=gmail.com header.i="@gmail.com" header.h="Content-Transfer-Encoding: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=20251104; t=1775827978; x=1776432778; darn=lists.xenproject.org;
        h=content-transfer-encoding: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;
        bh=r7Mo/qiJkuCPRIdUKAt0JadSLtwPoyQnWxa+tu7K+Ao=;
        b=LGtqblzPD5bqBV+1kfSZHHrX2gjiX2kR7xvUoXyZRvDcB9bxe5wvIYha0BylJ5N2jh
         /qfz87Lzb+0vulg22xSvndNze0ipMrcOWSclwTlyRJXQmIl3aXaZDXl0Gcfz1BicRtLm
         wHIVpjfjPTQG8nXwGQbMvhnXshRr76Kg4Rl3t5Fx4Iei5ijfeOEOffJlN62hKszhlQzy
         qzNpcSSUpr/CEFViAm1tkze9QAF+yKKk6m4Xy2ILHCVT/1ldMX0QCDcVq7o7Qo7YU7Z6
         BwE5Az7ODovWXBVLFZ8CiteTwGJtHGO34yp/kVFf47Ay7WBsO2x9X49rHpBO9f9I/GZd
         KRYg==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20251104; t=1775827978; x=1776432778;
        h=content-transfer-encoding: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;
        bh=r7Mo/qiJkuCPRIdUKAt0JadSLtwPoyQnWxa+tu7K+Ao=;
        b=ZDHyYKI8zdVfxJ9WqzgS89efierdK4fzyCCZefhd/QzlFD6BoggGE+31AVxdsn6WY4
         BmAJwF/IkC4DWr2Qj3YY+YiQoC+3w9VeQ7aMomaxHrahCAbVLFwDgD4qcD9DveKtZ+Hk
         oJwFEGx5Q1xzPR+7m4aIZENxog773jgTN5Jxfi+lEcbM5QEHfFBHZYR/4w6BfnQbGGUb
         YKY2JShp5Qrk+DVK1e0T8UT/ytpFjhQfWTe0DXy/XdSf+ovvigw9PYmZbIzEoj1q4SoU
         9Dh4/2w2g9yG6gymGzvmbhcJYoAHhqdzrFXDY8jQrL5VxK+3VaBIZK9zyJ4vdgIRa0h/
         S2yQ==
X-Forwarded-Encrypted: i=1; AJvYcCVooGCy87bIA+pNQM4M0y3MN4ix0xvzjDp4McXMdQiZvH0t+sUdj2m5snmyS71qQPZbrrYxJBjpQfY=@lists.xenproject.org
X-Gm-Message-State: AOJu0YzjytgDZN+SkFt4Op35/emZkYGYBby34//EtPiDqRGcGJ1ZVDGj
	y2OoKfcE2PGRqdbKTkP384l1HuazmL09mQQqEm7CkKl85oUQ4q0die9u
X-Gm-Gg: AeBDietOkkM3hd05b7+x59Fr/EWyvLnOiwm9rWwwkNdCYBbpt9+DVis/6558wAeuXWU
	R7TLNk5wyqmmwT24AQLgXsW5RkkejhokEtKHBPZx72mzTj0edwpPax7jnIxNttuJybfWDy4I0M6
	sEucRqTtgO+0+vJ/6jGHK3Xloqa4QdQCFhWghG9acuGcNSaAVZoHPixNV+nJ0zPEyunEqbuXrnN
	AfTJdb7qgeTeZ5SAstaUf42juE8bciPu7mf8VUWu7U70xWZyV0Wo89CEwGyBtfvGLUAT8yE/47i
	BbrY+apicujwqxOjzsh7WQ6irktJlfWJhPpVmzDlSnQRYsSBYv/uWhlIJqjccr/8aVt5ifxT+9v
	9h6ssiRFFwU2SLBxxE3nKco/8nq/OMKZTmNHgw5MO90YgfFutEHbEJ7nhA7EMgKB2y3gRG8czBI
	vdFyPjMwiYIeithULpJs6xmQWrft4ulCdsNfsWXlv+8w9+rR5aoJA10SLqI6TK+RCFBxvdsYo+o
	kY=
X-Received: by 2002:a17:907:3c85:b0:b9c:fe2c:3a57 with SMTP id a640c23a62f3a-b9d7249608amr196486866b.20.1775827977660;
        Fri, 10 Apr 2026 06:32:57 -0700 (PDT)
Message-ID: <7b9a365c-db8f-4716-8c11-f4b844633538@gmail.com>
Date: Fri, 10 Apr 2026 15:32:54 +0200
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH v1 08/27] xen/riscv: implement make_arch_nodes()
To: Jan Beulich <jbeulich@suse.com>
Cc: Romain Caritey <Romain.Caritey@microchip.com>,
 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.pau@citrix.com>,
 Stefano Stabellini <sstabellini@kernel.org>, xen-devel@lists.xenproject.org
References: <cover.1773157782.git.oleksii.kurochko@gmail.com>
 <9c97b4bc6fb8a5e556c38cfe7e34de0eb3cbbbb0.1773157782.git.oleksii.kurochko@gmail.com>
 <08732737-e02b-4be8-a49f-fdebc38924a5@suse.com>
Content-Language: en-US
From: Oleksii Kurochko <oleksii.kurochko@gmail.com>
In-Reply-To: <08732737-e02b-4be8-a49f-fdebc38924a5@suse.com>
Content-Type: text/plain; charset=UTF-8; format=flowed
Content-Transfer-Encoding: 7bit
X-purgate-ID: tlsNG-bad1c0/1775827978-5D3F4152-CD30AC31/10/73395122804
X-purgate-type: spam
X-purgate-size: 1344



On 4/1/26 4:29 PM, Jan Beulich wrote:
> On 10.03.2026 18:08, Oleksii Kurochko wrote:
>> No RISC-V-specific nodes need to be created at the moment,
>> so make_arch_nodes() is implemented to simply return 0.
>>
>> Signed-off-by: Oleksii Kurochko <oleksii.kurochko@gmail.com>
> 
> Same question as on the previous patch, albeit to a lesser degree: An
> arch hook may plausibly exist (and be called) uniformly, even if on
> some arch-es it doesn't do anything.

I'm using it to provide a node for emulated UART, something like Arm 
does for VPL011 by calling of make_vpl011_uart_node().

> 
>> ---
>>   xen/arch/riscv/Makefile         |  1 +
>>   xen/arch/riscv/dom0less-build.c | 11 +++++++++++
>>   2 files changed, 12 insertions(+)
>>   create mode 100644 xen/arch/riscv/dom0less-build.c
> 
> Further, on what basis is this function put in this new file, when the
> earlier ones live in domain-build.c?

Because it is called only for dom0less path, but previous one called 
from both dom0 and dom0less path.

> 
>> --- a/xen/arch/riscv/Makefile
>> +++ b/xen/arch/riscv/Makefile
>> @@ -1,5 +1,6 @@
>>   obj-y += aplic.o
>>   obj-y += cpufeature.o
>> +obj-y += dom0less-build.o
> 
> obj-$(CONFIG_DOM0LESS_BOOT) += dom0less-build.init.o>
> just like Arm has it?

It makes sense.

Thanks.

~ Oleksii



From xen-devel-bounces@lists.xenproject.org Fri Apr 10 14:00:46 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Fri, 10 Apr 2026 14:00:46 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1279129.1563699 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wBCPK-0002I9-BV; Fri, 10 Apr 2026 14:00:26 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1279129.1563699; Fri, 10 Apr 2026 14:00: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 1wBCPK-0002I2-8d; Fri, 10 Apr 2026 14:00:26 +0000
Received: by outflank-mailman (input) for mailman id 1279129;
 Fri, 10 Apr 2026 14:00:24 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92) id 1wBCPI-0002Hw-T6
 for xen-devel@lists.xenproject.org; Fri, 10 Apr 2026 14:00:24 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wBCPI-0095An-8y
 for xen-devel@lists.xenproject.org; Fri, 10 Apr 2026 16:00:24 +0200
Received: from [10.42.69.2] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <oleksii.kurochko@gmail.com>)
 id 69d90272-bab6-0a2a0a5309dd-0a2a45028cb4-26
 for <xen-devel@lists.xenproject.org>; Fri, 10 Apr 2026 16:00:24 +0200
Received: from [209.85.128.52] (helo=mail-wm1-f52.google.com)
 by tlsNG-720697.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.0)
 (envelope-from <oleksii.kurochko@gmail.com>)
 id 69d90278-42fa-0a2a45020019-d1558034e1b6-3
 for <xen-devel@lists.xenproject.org>; Fri, 10 Apr 2026 16:00:24 +0200
Received: by mail-wm1-f52.google.com with SMTP id
 5b1f17b1804b1-488a8ca4aadso23410335e9.3
 for <xen-devel@lists.xenproject.org>; Fri, 10 Apr 2026 07:00:24 -0700 (PDT)
Received: from [192.168.1.6] (user-109-243-69-121.play-internet.pl.
 [109.243.69.121]) by smtp.gmail.com with ESMTPSA id
 5b1f17b1804b1-488d67a46bdsm35000555e9.3.2026.04.10.07.00.21
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Fri, 10 Apr 2026 07:00:22 -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=20251104 header.d=gmail.com header.i="@gmail.com" header.h="Content-Transfer-Encoding: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=20251104; t=1775829624; x=1776434424; darn=lists.xenproject.org;
        h=content-transfer-encoding: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;
        bh=56gHCA88cH9uzv5u26JdrmCuPf30+MO+8oW1FGaiZMc=;
        b=hfeN0x2CCJ/MjRRaMSuFgcuOO5nOl9IQUWlA7IwptglNZdY/dH8trODTMpII+H/UKr
         HtJYDC9hd1V/IavCVQcnU8gloJuVLqZrQRpI1wiDxYb/ukDEL7PAU1wt1dx2tVd1V3+l
         nZfvMvZAjFjUQpN/jBSEyn6GszUOdhqznNYsee6SWmaec6HtAZf8DkVNL3DNVtfmyKar
         NGUPASsZ9U/jz3fkFnEEM0JM0WlLz4OLAbcY1rI5MOknv49lXHj7NukGyAA7J4KUEXjg
         QWHFVXrQY9QFRMLMklX67GDd80JwSGXPz7XX9pPmejYHSS/OUm+mGh2flk3E/svcjqkL
         lsXw==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20251104; t=1775829624; x=1776434424;
        h=content-transfer-encoding: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;
        bh=56gHCA88cH9uzv5u26JdrmCuPf30+MO+8oW1FGaiZMc=;
        b=rhH6k7+jgRDLen0aBWUHvB3onMGcINccXO3F6GArifTZwKeVehVbA7XiJDgW4mxDG5
         B/e4CgUK63hFTt1l3nG2q1n1TTbIEfgOkuQA5dHy5WDDKVIIdEmeV75s2W28M3HzA0Lq
         xhoc4KkcvrGRu+buw1RDOFvnVA3ZvAIWFsIitpj3SIso8S0y6faiQnnnPUuo+ivzzj90
         5l9Cec+78uBCy9mkIjSpK3cvODLbyFMqveEi7Zvprn7tEWLmtT28xRUVRw9b0YYIDsax
         t1WfSQ5lhihZChk12u5O7+zeMBwLrU1+d4nYqDJrVATNUsyYeWllhooFh6hFIEYtob3G
         +D6w==
X-Forwarded-Encrypted: i=1; AJvYcCXmEo6n5+SWGqZ1IpYq1BmtUCiQgXFvpCMAxzeRUBmfGJRSI1PVzzBSKlFQJT+hAtFTqzVnHpqKv+Y=@lists.xenproject.org
X-Gm-Message-State: AOJu0YwB0OQpf59y3z/mdgzVsYwmNo1q1Wge6NCoatYzRhtBc40jFQEc
	ziRgQLUgqUueP+IqyRo0/LuOC2R4uxxOZctlXiE05ojrNtOpQK/IQNoH
X-Gm-Gg: AeBDietyN2WQJggy8UdVmujqqoRvzNoD/1902iggrMZ9TtheXHs5OOI0hIrTz8abIz6
	ZIqu4wMMULomsfkgeF2SIfojWM3dvpKXyPsAVmQJFdMrvLfxCzEoY60DE+C7OOQB4ehTduZkzRo
	IMwTXMBFaQyxYpBP3J03npw7IPwP1XgKILygfzJQeZ8WCm/8vNg07Jxp8Y0093sfzclGOTwr0/2
	9HqYOSvPBtDodXr4J+yL6ZQR6OGiq3VlceMiK60l47zQwnv+A1WiYmSCGF4x2sep3G+cps/XMjH
	9eWuR1IaIb3Jjz6EEdHf3hy6iPBYJrsGxzZiq/aY/a4ZYqAgCquNKlvRvtVItcs5tW7+IxIPDwu
	apSHJIMQEJ7IyEoeAw7NYpycpcWKBKyEp54vJfi4YkerSupI72KHzOsmhS7R8AXtbIbz+trbrhX
	w8kXZYAMvgeKC5lRGmGYr3fuTcP5hamb2mYk1DObq2wmnNPvlsJ5Txr2ojaaGf3dNSkheyy+2kr
	yg=
X-Received: by 2002:a05:600c:1391:b0:487:5c0:671f with SMTP id 5b1f17b1804b1-488d67e6a48mr46106395e9.9.1775829623205;
        Fri, 10 Apr 2026 07:00:23 -0700 (PDT)
Message-ID: <4fb7dc0a-9e29-46c0-86d0-f7ef17501a72@gmail.com>
Date: Fri, 10 Apr 2026 16:00:19 +0200
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH v1 09/27] xen/riscv: implement make_intc_domU_node()
To: Jan Beulich <jbeulich@suse.com>
Cc: Romain Caritey <Romain.Caritey@microchip.com>,
 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.pau@citrix.com>,
 Stefano Stabellini <sstabellini@kernel.org>, xen-devel@lists.xenproject.org
References: <cover.1773157782.git.oleksii.kurochko@gmail.com>
 <7a7f1430090eaf50cc3bff25e894c13404bffad5.1773157782.git.oleksii.kurochko@gmail.com>
 <9b3cd2ba-869b-4757-8bcd-51abad61b9f9@suse.com>
Content-Language: en-US
From: Oleksii Kurochko <oleksii.kurochko@gmail.com>
In-Reply-To: <9b3cd2ba-869b-4757-8bcd-51abad61b9f9@suse.com>
Content-Type: text/plain; charset=UTF-8; format=flowed
Content-Transfer-Encoding: 7bit
X-purgate-ID: tlsNG-720697/1775829624-46725CD1-87EA7BF1/10/73395122804
X-purgate-type: spam
X-purgate-size: 2456



On 4/1/26 4:38 PM, Jan Beulich wrote:
> On 10.03.2026 18:08, Oleksii Kurochko wrote:
>> --- a/xen/arch/riscv/dom0less-build.c
>> +++ b/xen/arch/riscv/dom0less-build.c
>> @@ -3,6 +3,15 @@
>>   #include <xen/fdt-kernel.h>
>>   #include <xen/init.h>
>>   
>> +#include <asm/intc.h>
>> +
>> +int __init make_intc_domU_node(struct kernel_info *kinfo)
>> +{
>> +    intc_make_domu_dt_node(kinfo);
>> +
>> +    return 0;
>> +}
> 
> Is this wrapper really needed? Can't what's intc_make_domu_dt_node() right
> now become make_intc_domU_node()?

With current implementation no as intc_hw_ops used inside 
intc_make_domu_dt_node() is declared as static.

But I can introduce:

enum intc_version intc_hw_version(void)
{
    return intc_hw_ops->info->hw_version;
}

and the in make_intc_domU_node() just use switch/case to call interrupt 
controller specific functions.

Would it be better? It will also help to ...

> 
>> @@ -41,6 +41,10 @@ struct intc_hw_operations {
>>   
>>       /* handle external interrupt */
>>       void (*handle_interrupt)(struct cpu_user_regs *regs);
>> +
>> +    /* Create interrupt controller node for domain */
>> +    int (*make_dom_dt_node)(const struct kernel_info *kinfo,
>> +                            const struct dt_device_node *intc);
> 
> An __init-only hook is somewhat risky, just to mention it. In IOMMU code
> besides struct iommu_ops we have struct iommu_init_ops, just to give an
> example of where the same could have been the case.

.. not introduce hooks in this structure which won't exist after init.

> 
>> --- a/xen/arch/riscv/intc.c
>> +++ b/xen/arch/riscv/intc.c
>> @@ -67,3 +67,11 @@ void intc_route_irq_to_xen(struct irq_desc *desc, unsigned int priority)
>>       intc_set_irq_type(desc, desc->arch.type);
>>       intc_set_irq_priority(desc, priority);
>>   }
>> +
>> +int __init intc_make_domu_dt_node(const struct kernel_info *kinfo)
>> +{
>> +    if ( intc_hw_ops && intc_hw_ops->make_dom_dt_node )
>> +        return intc_hw_ops->make_dom_dt_node(kinfo, intc_hw_ops->info->node);
>> +
>> +    return -ENOSYS;
> 
> How do you justify this choice of return value? This isn't even a hypercall
> handler.

That make_dom_dt_node() isn't provided by interrupt controller, so isn't 
supported or as it mentioned in the comment "not implemented in 
public/errno.h:
   XEN_ERRNO(ENOSYS,	38)	/* Function not implemented */

~ Oleksii


From xen-devel-bounces@lists.xenproject.org Fri Apr 10 14:09:57 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Fri, 10 Apr 2026 14:09:57 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1279150.1563707 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wBCYN-0002zv-5p; Fri, 10 Apr 2026 14:09:47 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1279150.1563707; Fri, 10 Apr 2026 14:09: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 1wBCYN-0002zo-3C; Fri, 10 Apr 2026 14:09:47 +0000
Received: by outflank-mailman (input) for mailman id 1279150;
 Fri, 10 Apr 2026 14:09:46 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <Luca.Fancellu@arm.com>) id 1wBCYM-0002zi-G1
 for xen-devel@lists.xenproject.org; Fri, 10 Apr 2026 14:09:46 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wBCYL-00CQXV-Rr
 for xen-devel@lists.xenproject.org; Fri, 10 Apr 2026 16:09:45 +0200
Received: from [10.42.69.1] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <Luca.Fancellu@arm.com>)
 id 69d9049a-5cb7-0a2a0a5109dd-0a2a4501a578-30
 for <xen-devel@lists.xenproject.org>; Fri, 10 Apr 2026 16:09:45 +0200
Received: from [40.107.159.65]
 (helo=OSPPR02CU001.outbound.protection.outlook.com)
 by tlsNG-d62444.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.0)
 (envelope-from <Luca.Fancellu@arm.com>)
 id 69d904a7-6fc9-0a2a45010019-286b9f412e0c-3
 for <xen-devel@lists.xenproject.org>; Fri, 10 Apr 2026 16:09:44 +0200
Received: from CWLP123CA0025.GBRP123.PROD.OUTLOOK.COM (2603:10a6:401:58::13)
 by PAWPR08MB8791.eurprd08.prod.outlook.com (2603:10a6:102:334::13) with
 Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9769.17; Fri, 10 Apr
 2026 14:09:40 +0000
Received: from AMS1EPF00000044.eurprd04.prod.outlook.com
 (2603:10a6:401:58:cafe::ac) by CWLP123CA0025.outlook.office365.com
 (2603:10a6:401:58::13) with Microsoft SMTP Server (version=TLS1_3,
 cipher=TLS_AES_256_GCM_SHA384) id 15.20.9769.43 via Frontend Transport; Fri,
 10 Apr 2026 14:09:38 +0000
Received: from outbound-uk1.az.dlp.m.darktrace.com (4.158.2.129) by
 AMS1EPF00000044.mail.protection.outlook.com (10.167.16.41) with Microsoft
 SMTP Server (version=TLS1_3, cipher=TLS_AES_256_GCM_SHA384) id 15.20.9745.21
 via Frontend Transport; Fri, 10 Apr 2026 14:09:38 +0000
Received: from DU2PR08MB7272.eurprd08.prod.outlook.com (2603:10a6:10:2d7::16)
 by AS8PR08MB6200.eurprd08.prod.outlook.com (2603:10a6:20b:292::11)
 with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9769.42; Fri, 10 Apr
 2026 14:08:34 +0000
Received: from DU2PR08MB7272.eurprd08.prod.outlook.com
 ([fe80::5d34:206f:373:a323]) by DU2PR08MB7272.eurprd08.prod.outlook.com
 ([fe80::5d34:206f:373:a323%6]) with mapi id 15.20.9769.018; Fri, 10 Apr 2026
 14:08: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=arm.com header.i="@arm.com" header.h="From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck"; dkim=pass header.s=selector1 header.d=arm.com header.i="@arm.com" header.h="From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck"
ARC-Seal: i=2; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=pass;
 b=gR5zBb9RQcxJhUs4crC2MPrOmYqJ+stSrP9ZPmymbAclULOHZkUyZtiNnNZscs9bv446i60Bzzz/JuqNMjarbvrqNWaSgk2yZ92mmSo8233bEWPCIF6XSFRWO8cjM0yZMYC00v5/TQsyU1ONdRjsufWesIKNcnqVL2yhmgwc5LTZaF2BOmstaDU1QcOcronuxnOv2Nk7A6Izrh/Dnv2ez3NA4Ecxe0WBthBuoJCqdIiXg6y8ZkTGXD5Df+D45FHr6NZswWjSAQELhdiqDF2cCtqmsQ4s9xTlNkjvvSo37xC3Q/DlbmCsyeyCuYs1uUEu3WbPjoAM0XT6Rx3qSbo5ag==
ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com;
 s=arcselector10001;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1;
 bh=ZFxAov+Q1mrSh40X0k685aBU8TJe9+sKbdbQ2s/UYDY=;
 b=n9I73smWOMpwOMnTY5QQnhnA7JtFVF9q8y2otoj1q7LjLlOGBxELujrLVGpd01hNsZ/0k5BHg0Qi7tDl9RwQB8eIVjObrL1LXneXGrV3XaraRQU9PNKeKnkCQCUQvCxB8QEYAd9pbT8apkMv4ThTHYu+1yqxcSxfiNCTUgrzqH6ZjMV40lWtoE8Zpsl8twApODoh6+nXI6ta9974RLp9lRNya7hpssKhXjGmP8pCJgjq8RPN+Czt1N76cqH3CG0HgLHWVybomuP6aGWYRzH5LIb/ME+C1sfIvq/YBV6n71n8ftFRhqhscmH0jMpSrm14LbML2oF4bAzutSKwMkrw2Q==
ARC-Authentication-Results: i=2; mx.microsoft.com 1; spf=pass (sender ip is
 4.158.2.129) smtp.rcpttodomain=epam.com smtp.mailfrom=arm.com; dmarc=pass
 (p=none sp=none pct=100) action=none header.from=arm.com; dkim=pass
 (signature was verified) header.d=arm.com; arc=pass (0 oda=1 ltdi=1
 spf=[1,1,smtp.mailfrom=arm.com] dkim=[1,1,header.d=arm.com]
 dmarc=[1,1,header.from=arm.com])
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=arm.com; s=selector1;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck;
 bh=ZFxAov+Q1mrSh40X0k685aBU8TJe9+sKbdbQ2s/UYDY=;
 b=U5nrlF1jH5f+a3vabUsvl08XIDPMcmDC1WsoZlLdB4QTxH9sQzmYHcmhAdP4XJahV+ZaBujpsma0WQrJMq5YrJA5Ea3/CdRrMMzLOYLt7pKXM7dawpG45+UjnCbOiK60pRrstIVXgkvAdk0IERLeXuV1Icw3cFVmd8viMeiV9Rs=
X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 4.158.2.129)
 smtp.mailfrom=arm.com; dkim=pass (signature was verified)
 header.d=arm.com;dmarc=pass action=none header.from=arm.com;
Received-SPF: Pass (protection.outlook.com: domain of arm.com designates
 4.158.2.129 as permitted sender) receiver=protection.outlook.com;
 client-ip=4.158.2.129; helo=outbound-uk1.az.dlp.m.darktrace.com; pr=C
ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none;
 b=Gz0Vl4GiS6dmoXBND1No/A5ruwM3A6fHeXergbRzxWsywhn5+RCkNGA0SblxmcI4TTmvdnRG+UwalnvsklkE7B3VzbR9VCYnWLpTx5Lq5AJMlTzyu2snG7OiWDQ5+BpcTm6c4FeO2llqihE/uX2LhxC0D16C7/BUp3C/c4WAxV6Xb1sSTYF4xuOx9voxa2I3+U7F9eghlcamPgMnJdKvIerAYhzj55FzT+IIKzvgz8hKgIuqzSi6+hw2ZzHoqjMRifI727of9eYyyuRgWTj44iA+4ct14TRl8f1B5V6E2PyR4QEjy1dPWDY8xhCibVr6il7whYWDgCQzuQCr5AIwZQ==
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com;
 s=arcselector10001;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1;
 bh=ZFxAov+Q1mrSh40X0k685aBU8TJe9+sKbdbQ2s/UYDY=;
 b=MOMZwx+dvRs6sfwttVV7KQ/0zeMlUzTxTXKx+r4tHGF81q2BJ9TSHfWsD3gVp/PgqIl4yn+Zidw0nmak09icEZNURDUrJyjaqpz01hiLXImxx09l5RoWungaxkVeAZjnYY2aJe2F5PpFayTlGwJ9pK4y2my4Y3UMjCTtmUCb0W6xavdYkZ0Kk9Jj019x6OpxS2MOmZQxnxsdk4EcFZs8pMMSdkgDznSbbKNi81g3yj+I/go8Rszcudolt3mNlAh4zdfaTn0C1pRY15FuV7z1bYs8FlAXnyHYtB/HMZKsqf5T7REmQG/BIlOqzz/+11/Wqc2mzuXuUZfOuEMmYOnu2g==
ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass
 smtp.mailfrom=arm.com; dmarc=pass action=none header.from=arm.com; dkim=pass
 header.d=arm.com; arc=none
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=arm.com; s=selector1;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck;
 bh=ZFxAov+Q1mrSh40X0k685aBU8TJe9+sKbdbQ2s/UYDY=;
 b=U5nrlF1jH5f+a3vabUsvl08XIDPMcmDC1WsoZlLdB4QTxH9sQzmYHcmhAdP4XJahV+ZaBujpsma0WQrJMq5YrJA5Ea3/CdRrMMzLOYLt7pKXM7dawpG45+UjnCbOiK60pRrstIVXgkvAdk0IERLeXuV1Icw3cFVmd8viMeiV9Rs=
From: Luca Fancellu <Luca.Fancellu@arm.com>
To: Milan Djokic <milan_djokic@epam.com>
CC: "xen-devel@lists.xenproject.org" <xen-devel@lists.xenproject.org>, 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>
Subject: Re: [PATCH v3 06/23] xen/domctl: Add XEN_DOMCTL_CONFIG_VIOMMU_* and
 viommu config param
Thread-Topic: [PATCH v3 06/23] xen/domctl: Add XEN_DOMCTL_CONFIG_VIOMMU_* and
 viommu config param
Thread-Index: AQHcyPOEOpjixhIB40qHeKootzCrNQ==
Date: Fri, 10 Apr 2026 14:08:33 +0000
Message-ID: <A0DDCB63-B8E4-47DA-BD68-9A5D06F7C8F2@arm.com>
References: <cover.1774918270.git.milan_djokic@epam.com>
 <5bcbeb1d614be413c13196a38d13eb3de5c549e4.1774918270.git.milan_djokic@epam.com>
In-Reply-To:
 <5bcbeb1d614be413c13196a38d13eb3de5c549e4.1774918270.git.milan_djokic@epam.com>
Accept-Language: en-GB, en-US
Content-Language: en-US
X-MS-Has-Attach:
X-MS-TNEF-Correlator:
x-mailer: Apple Mail (2.3826.700.81.1.6)
Authentication-Results-Original: dkim=none (message not signed)
 header.d=none;dmarc=none action=none header.from=arm.com;
x-ms-traffictypediagnostic:
	DU2PR08MB7272:EE_|AS8PR08MB6200:EE_|AMS1EPF00000044:EE_|PAWPR08MB8791:EE_
X-MS-Office365-Filtering-Correlation-Id: 33795c5b-b7bb-4b79-ef3e-08de970acd4f
x-checkrecipientrouted: true
nodisclaimer: true
X-MS-Exchange-SenderADCheck: 1
X-MS-Exchange-AntiSpam-Relay: 0
X-Microsoft-Antispam-Untrusted:
 BCL:0;ARA:13230040|366016|1800799024|376014|38070700021|22082099003|56012099003|18002099003;
X-Microsoft-Antispam-Message-Info-Original:
 UQd/W1hn1uZ8+keFrW3oHhwuT6bhqMm46ovlWyn3o1w0TjYRAJQSsnzlo2kAiEmA/OHiPtKo7QYw9iQPK3/aGpn6X2AC6HIj5OBZdhuStSE6M3OVpnUDpBbHF8n2XlYe+jJYRnbfHxP+UR07MhlZCkSwt3+M+pgrgwm/um1xDOqk7ow0NoboY52UbwwTgxkYaT3BEZCxWxXLD3HznlwfI7aztdjd5hM6sScJK5/Kl0e8Jr/IJIwL3K0qdnGlGSzp/8r/zRKosgOfTOvUfr+E1wjJrlx5TDKQhpEUb68z28SoRQRnkN0zFqLL9WYZ6XVLX6QS8dpL0Goa5eX6fIGBu8Pm2W3oX1U1cK6m5D689jj6tp1agm4fbYoe8xilW13ZpBKB8IbISPkiS+s6+ifulV9tdcp9aJjjp3IUSWU+sX20AXCgWVwxcrH3V0kmvcHR3w12XdI1Xwql+ZF9okILQ5HrpbubUadYf0Hm7oeM9dzBPgtB0TwzZfjF0uzG3O66zHHDl1sc5l9XXeSobesN+63N0BVQI7Tue2LjXoEZAwgV5kBHHWU0Egv0tKK61OTjHBIrYED8aC8GtTeY4kCkI52pS/uTxdNm4rEh9KO4zODitNCl6rU8jKBbZ5NBw4QNXI3KeOFv7AX67unp/9pXS++4e0iW87ybc9Cr8xQChOl4PXyUmOXrJ7Sg3oZX04qQSBOFzusz4qkRhPzGVLUzdWXeo9ofKjK2ZfUhVxlf6QrSR4ChLx3kZwS9Ca9lT2DSKvcw4vhl4jm6g1D203Lt23fK6uFVg9xPlgE14Rpox/o=
X-Forefront-Antispam-Report-Untrusted:
 CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:DU2PR08MB7272.eurprd08.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(366016)(1800799024)(376014)(38070700021)(22082099003)(56012099003)(18002099003);DIR:OUT;SFP:1101;
Content-Type: text/plain; charset="utf-8"
Content-ID: <176C6D90BAC1C1499DB6721266A9C220@eurprd08.prod.outlook.com>
Content-Transfer-Encoding: base64
MIME-Version: 1.0
X-Exchange-RoutingPolicyChecked:
 ij68yrtEtxgPcT2qz4rv4NJsrKVEXqjFnpoafqELDvyU6iY47UYpw6y77r2DPEQuDv5DsFNMVdXwl085BF0UbifkZ6s4zYhwKSHS9O+xQ0uR9pjkAomXFZl6FhGRIg0KO25l/tpoX3qAnSn3SAbvxrbwVesqd0eFmSR/jM0Si8y83Ju9BDHlkSyvWqqIuuen/BBa85ZPuk2Hev/opKMZKa8AOcEwfeqWqCwhO1vpRqWmcsWrxXkPA1/sUdzomMneJKQWWwmVdD9tWFnnwAYlotxLWpow66SsJJvOSF5qhYTu8EKV9d+2RS/gbpLFm+90QxeqebYIwwsJNyVbLaUmig==
X-MS-Exchange-Transport-CrossTenantHeadersStamped: AS8PR08MB6200
X-EOPAttributedMessage: 0
X-MS-Exchange-Transport-CrossTenantHeadersStripped:
 AMS1EPF00000044.eurprd04.prod.outlook.com
X-MS-PublicTrafficType: Email
X-MS-Office365-Filtering-Correlation-Id-Prvs:
	da7563c5-0ce9-4376-c543-08de970aa696
X-Microsoft-Antispam:
	BCL:0;ARA:13230040|1800799024|376014|14060799003|82310400026|36860700016|35042699022|22082099003|56012099003|18002099003;
X-Microsoft-Antispam-Message-Info:
	LjTEA4VIgdf3XZZTUl0JpyAfJ43/+3clp2//o1Ykn8KewPnHhI0Z6n4qjOrJz/cwQbl473rgGCsi1ZM/hFYjyO6tE3uHBCU9Ova2wEAAiHnljZ6tTzpNGWLWJ6DLwc49M92+wszfgGH/pYrdOJ01jY9xggn2JrU/yJVyPw76CJxjmzpsKWktWQ4vaUF2HnlleLnkuE92BFT501WFBW+yqH31ca9g9k/KthAsytEdnBVDPITFMAbMnfq7rN5hST5VjVrQ6C3yDahLHxFlgnEz5cG6Iywp8NSxt8sKY7mA9ROxizTf7EWkZKpWFdZf00qTOqkykXevdIPnwLENnMx6jo4DJ/kOo/Se9Sycc1V0WqLaYw2crprBrf+yxgIFMy6zxDyt1Ozot5fR0PvQrtR9keVsoyYQIum3/3wnqWmIMiAEPFUuVlfmMCTYhj86gKQcq+Dzhc7tXmxH7KNzZFJYwNjEuA44mnsVzx+mR2ZbullawOfeaG3I//dDlnaC245QgrQbjNTh9nAUCIHhFktNwqzA9RRETtv2FVZHA6pnQQKdnMpoq73NMtunsyHbbhx5CH7zpa/jsATf4x7g1V8V3aZQdymfEhxqkkAtM4s8PbvkIk3GjU3utLfNpi5kNLnv+sMh6o96DG3P7DtEJcj7/fYHJmny8MdAwZeEB51Wl32q0yXiz9TnsJysUw6luO0CqbWdTDw26UE5LnHYEplZWWyrShiU9DhnLAXB/nuvyMXnvbB36T2vs900mLBQ1hW11BlR7mCGiFOqTINTa+8+tw==
X-Forefront-Antispam-Report:
	CIP:4.158.2.129;CTRY:GB;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:outbound-uk1.az.dlp.m.darktrace.com;PTR:InfoDomainNonexistent;CAT:NONE;SFS:(13230040)(1800799024)(376014)(14060799003)(82310400026)(36860700016)(35042699022)(22082099003)(56012099003)(18002099003);DIR:OUT;SFP:1101;
X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1
X-MS-Exchange-AntiSpam-MessageData-0:
	7aDXg1jLQv4JD3czsdARJpenu19XJ2BVfA8saxzpelRXOgtxMpnl8NVf3BxuScW53Yt4KS/+CGNekiC6JzK3EJ1HVHvNJ632fPmXHD02x4Vchqy/kr8W20y4YvjdOPpRL+VcJMP424NnSvH3fr3InVSuOQftpFHS7UdS02sDsUZ0944faqSqyfQtRVXQmOXT5kWFMnoTtxB2UuIMRiT6PFjMQoCr2LLUz6NZr4F1YAQ9F7rBxNOMJLsPjCF0pM9cDhJfyvhDMdUPnY0eidQvE6qqXC0C+mXYbl668NqURkSpm2akamekhZir1vytv2EBrnLlCZlzr5Bs0CcXlgf18YP0tuHxcQGBG5pCLxIFFQjrNmGIJjUJkrrXqP9177jOjPW49TSDoB6O+pTiX8ayZ/q1CNoYsQh5fzmj6HTES/7DCzDy+1ZWnmaxn9wLpMR/
X-OriginatorOrg: arm.com
X-MS-Exchange-CrossTenant-OriginalArrivalTime: 10 Apr 2026 14:09:38.2248
 (UTC)
X-MS-Exchange-CrossTenant-Network-Message-Id: 33795c5b-b7bb-4b79-ef3e-08de970acd4f
X-MS-Exchange-CrossTenant-Id: f34e5979-57d9-4aaa-ad4d-b122a662184d
X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=f34e5979-57d9-4aaa-ad4d-b122a662184d;Ip=[4.158.2.129];Helo=[outbound-uk1.az.dlp.m.darktrace.com]
X-MS-Exchange-CrossTenant-AuthSource:
	AMS1EPF00000044.eurprd04.prod.outlook.com
X-MS-Exchange-CrossTenant-AuthAs: Anonymous
X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem
X-MS-Exchange-Transport-CrossTenantHeadersStamped: PAWPR08MB8791
X-purgate-ID: tlsNG-d62444/1775830185-BCD65185-28B441DC/0/0
X-purgate-type: clean
X-purgate-size: 2588

SEkgTWlsYW4sDQoNCj4gT24gMzEgTWFyIDIwMjYsIGF0IDAyOjUyLCBNaWxhbiBEam9raWMgPG1p
bGFuX2Rqb2tpY0BlcGFtLmNvbT4gd3JvdGU6DQo+IA0KPiBGcm9tOiBSYWh1bCBTaW5naCA8cmFo
dWwuc2luZ2hAYXJtLmNvbT4NCj4gDQo+IEFkZCBuZXcgdmlvbW11X3R5cGUgZmllbGQgYW5kIGZp
ZWxkIHZhbHVlcyBYRU5fRE9NQ1RMX0NPTkZJR19WSU9NTVVfTk9ORQ0KPiBYRU5fRE9NQ1RMX0NP
TkZJR19WSU9NTVVfU01NVVYzIGluIHhlbl9hcmNoX2RvbWFpbmNvbmZpZyB0bw0KPiBlbmFibGUv
ZGlzYWJsZSB2SU9NTVUgc3VwcG9ydCBmb3IgZG9tYWlucy4NCj4gDQo+IEFsc28gYWRkIHZpb21t
dT0iTiIgcGFyYW1ldGVyIHRvIHhsIGRvbWFpbiBjb25maWd1cmF0aW9uIHRvIGVuYWJsZSB0aGUN
Cj4gdklPTU1VIGZvciB0aGUgZG9tYWlucy4gQ3VycmVudGx5LCBvbmx5IHRoZSAic21tdXYzIiB0
eXBlIGlzIHN1cHBvcnRlZA0KPiBmb3IgQVJNLg0KPiANCj4gU2lnbmVkLW9mZi1ieTogUmFodWwg
U2luZ2ggPHJhaHVsLnNpbmdoQGFybS5jb20+DQo+IFNpZ25lZC1vZmYtYnk6IE1pbGFuIERqb2tp
YyA8bWlsYW5fZGpva2ljQGVwYW0uY29tPg0KPiBBY2tlZC1ieTogTmljayBSb3Nicm9vayA8ZW5y
MG5AdWJ1bnR1LmNvbT4NCj4gLS0tDQo+IGRvY3MvbWFuL3hsLmNmZy41LnBvZC5pbiAgICAgICAg
ICAgICB8IDEzICsrKysrKysrKysrKysNCj4gdG9vbHMvZ29sYW5nL3hlbmxpZ2h0L2hlbHBlcnMu
Z2VuLmdvIHwgIDIgKysNCj4gdG9vbHMvZ29sYW5nL3hlbmxpZ2h0L3R5cGVzLmdlbi5nbyAgIHwg
IDcgKysrKysrKw0KPiB0b29scy9pbmNsdWRlL2xpYnhsLmggICAgICAgICAgICAgICAgfCAgNSAr
KysrKw0KPiB0b29scy9saWJzL2xpZ2h0L2xpYnhsX2FybS5jICAgICAgICAgfCAxMyArKysrKysr
KysrKysrDQo+IHRvb2xzL2xpYnMvbGlnaHQvbGlieGxfdHlwZXMuaWRsICAgICB8ICA2ICsrKysr
Kw0KPiB0b29scy94bC94bF9wYXJzZS5jICAgICAgICAgICAgICAgICAgfCAgOSArKysrKysrKysN
Cj4gNyBmaWxlcyBjaGFuZ2VkLCA1NSBpbnNlcnRpb25zKCspDQo+IA0KPiBkaWZmIC0tZ2l0IGEv
ZG9jcy9tYW4veGwuY2ZnLjUucG9kLmluIGIvZG9jcy9tYW4veGwuY2ZnLjUucG9kLmluDQo+IGlu
ZGV4IDNhYWMwYmM0ZmIuLjRkZThkYjQyYWMgMTAwNjQ0DQo+IC0tLSBhL2RvY3MvbWFuL3hsLmNm
Zy41LnBvZC5pbg0KPiArKysgYi9kb2NzL21hbi94bC5jZmcuNS5wb2QuaW4NCj4gQEAgLTMxNzUs
NiArMzE3NSwxOSBAQCBvcHRpb24uDQo+IA0KPiA9YmFjaw0KPiANCj4gKz1vdmVyIDQNCj4gKw0K
PiArPWl0ZW0gQjx2aW9tbXU9Ik4iPg0KDQrigJxO4oCdIGlzIG1pc2xlYWRpbmcsIEkgY2FuIHRo
aW5rIGFib3V0IGEgbnVtYmVyLiBJIHRoaW5rIHdlIGNhbiBoYXZlIOKAnFNUUklOR+KAnSBoZXJl
DQoNCj4gDQo+IGRpZmYgLS1naXQgYS90b29scy9pbmNsdWRlL2xpYnhsLmggYi90b29scy9pbmNs
dWRlL2xpYnhsLmgNCj4gaW5kZXggODBlM2VjOGRlOS4uMjMxZGJmZjVkOSAxMDA2NDQNCj4gLS0t
IGEvdG9vbHMvaW5jbHVkZS9saWJ4bC5oDQo+ICsrKyBiL3Rvb2xzL2luY2x1ZGUvbGlieGwuaA0K
PiBAQCAtMzE4LDYgKzMxOCwxMSBAQA0KPiAgKi8NCj4gI2RlZmluZSBMSUJYTF9IQVZFX0JVSUxE
SU5GT19BUkNIX0FSTV9TQ0kgMQ0KPiANCj4gKy8qDQo+ICsgKiBsaWJ4bF9kb21haW5fYnVpbGRf
aW5mbyBoYXMgdGhlIGFyY2hfYXJtLnZpb21tdV90eXBlIGZpZWxkLg0KPiArICovDQo+ICsjZGVm
aW5lIExJQlhMX0hBVkVfQlVJTERJTkZPX0FSTV9WSU9NTVUgMQ0KDQpJIHRoaW5rIHRoaXMgc2hv
dWxkIGJlIExJQlhMX0hBVkVfQlVJTERJTkZPX0FSQ0hfQVJNX1ZJT01NVQ0KDQpDaGVlcnMsDQpM
dWNhDQoNCg==


From xen-devel-bounces@lists.xenproject.org Fri Apr 10 14:23:24 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Fri, 10 Apr 2026 14:23:24 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1279174.1563725 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wBClR-0005iR-BZ; Fri, 10 Apr 2026 14:23:17 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1279174.1563725; Fri, 10 Apr 2026 14:23: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 1wBClR-0005iK-82; Fri, 10 Apr 2026 14:23:17 +0000
Received: by outflank-mailman (input) for mailman id 1279174;
 Fri, 10 Apr 2026 14:23:15 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <jbeulich@suse.com>) id 1wBClP-0005iE-O9
 for xen-devel@lists.xenproject.org; Fri, 10 Apr 2026 14:23:15 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wBClO-00FyaB-MR
 for xen-devel@lists.xenproject.org; Fri, 10 Apr 2026 16:23:14 +0200
Received: from [10.42.69.6] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <jbeulich@suse.com>)
 id 69d907d1-2eae-0a2a0a5409dd-0a2a4506dba0-2
 for <xen-devel@lists.xenproject.org>; Fri, 10 Apr 2026 16:23:14 +0200
Received: from [209.85.128.49] (helo=mail-wm1-f49.google.com)
 by tlsNG-16d1c6.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.0)
 (envelope-from <jbeulich@suse.com>)
 id 69d907d2-0df0-0a2a45060019-d1558031d11b-3
 for <xen-devel@lists.xenproject.org>; Fri, 10 Apr 2026 16:23:14 +0200
Received: by mail-wm1-f49.google.com with SMTP id
 5b1f17b1804b1-488b00ed86fso22606755e9.3
 for <xen-devel@lists.xenproject.org>; Fri, 10 Apr 2026 07:23:14 -0700 (PDT)
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-488d5da1341sm23201545e9.8.2026.04.10.07.23.12
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Fri, 10 Apr 2026 07:23:13 -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=google header.d=suse.com header.i="@suse.com" header.h="Content-Transfer-Encoding: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=1775830994; x=1776435794; darn=lists.xenproject.org;
        h=content-transfer-encoding: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;
        bh=rbBrMqDpPOSzSclTg2txkhJ927dGqzW5ss/kfGU5DVI=;
        b=QoI0bDS6081A8IVvh7D9Im/iZjNrFqaVySA9ZHCoZzP1vwdg3pVmyCIG+MvacPltDz
         D4kvaqQwR+lKR3cvHdrO7Xfn9pfwDPi7AEn5c9WhQcB5umUXkRVAo7dUI1xjSr6LQc/m
         bTsewabveUhFguIrRVFUX30wZoq/Bc8iDVrqgW+5AgMKVUTOK2DugykhnIqQdAZpYIMa
         /wZdwjCs1r2dnsqyLOfCR3SUSfsWMbdPcZHqy7ZYU1zwsgbmeLpvsD1BLAQNQ0u/ho4q
         NexkmTDHfXVt8sb5u+whnXUJqVREvFrMv358vFQX5keH+TxafxXGTimmJ1AJ2MT34/0v
         PBCg==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20251104; t=1775830994; x=1776435794;
        h=content-transfer-encoding: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;
        bh=rbBrMqDpPOSzSclTg2txkhJ927dGqzW5ss/kfGU5DVI=;
        b=ebmHtCjYkzN4/eVqSF2GLHmlwg2jSqXFca0lWOwHcngN7KaygeCIctWu+6Q8y65Zyv
         d+vpdYAt9zXXVYLJVox3kS/n+F8OijYl7XLOVl+g8/9vZwEqwzCdb+Y/+ON27Fxh5Gbr
         7gUMXI5vX6LYOR21qfindK81EykoGJFGh8GWxK3BiNp/NYPYS3dt7zfPKemex0HF8jaS
         FaX5w9HnH9cav5vs0R3v7Cy9pfpayhnRsIp5cKMxi4dAxKaf3znP7dlS/aC4jWK49nws
         0zuEaauEFu+whweCYPBOqbcR5ucpXQMmubknZnYs0rFb09A2n7rSMRnCYumrJ5SBS9b7
         k4rA==
X-Forwarded-Encrypted: i=1; AJvYcCXy81WVGq6v/sVzMYFn3hZhF/NK1SCinkFGG3r3la8bxXnugp5q5BsALPYupZxF+LrYo8KhUnl6Bmk=@lists.xenproject.org
X-Gm-Message-State: AOJu0Yzcj+q4MkFJm7CD/lj3OMj6KA7BGQ1x/MxHJ4138dKDjghkZFCE
	caH6T79NcakcjlhxIz6d+5WnD2OT2PMy3b7M2xEJNKss4tJOclUKalwgoVLWoOzUGg==
X-Gm-Gg: AeBDiesNjXRoXdZ0e1Ckjf12QkLGOLdPT2exKBqRFg6iOV7+yjbKlyIkiVPWHucvsjV
	HTO9PwAUxsS31t/GA87fSV6spjn9IPKhKWHcnZ8be7Z8fCyQRXDupNDfKd3gtHGw7Y+8KnSvGQk
	iPOwfJAJNP4YVo8JoOBOUojc+ASpOGKoOx9F6F8QHHbnH8O9fnN1/hl6tk3pM5XMwOBIDs4d4Nm
	43qTzxnRIFDixjnjM1+mH9Jwfecl8tCQcu6CZD6ZRJ+5ZdE44Xd8ZpYWYF8YTNZTe5BoJZDJAwJ
	jBomWb2VFiZe5vu77VxWQcoMKqwpUpvpaLF4qkbpP1Ukok2TOXnO8j5t26Vsj4yTTQ7ox8FAwYQ
	7XqnOflH44fvvZ35hDQM4/IYVmuXnJCrhbIwujHTicNbqtLZVzhuv9jzCezcXoDpofvmDu7P40R
	wNQnoCeWnY8MIZ/PzhU6hwLbG06z4nAsmR/PUMGefEPfeWTRu9n0bD6kjpPBt84T8Ly9O/kThyW
	hTXkWiRxT7rUdo=
X-Received: by 2002:a05:600c:a416:b0:488:7f69:4abf with SMTP id 5b1f17b1804b1-488d67f946bmr31832635e9.12.1775830993779;
        Fri, 10 Apr 2026 07:23:13 -0700 (PDT)
Message-ID: <981dabd5-7508-437a-b654-666ffa04b6a0@suse.com>
Date: Fri, 10 Apr 2026 16:23:11 +0200
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH v1 09/27] xen/riscv: implement make_intc_domU_node()
To: Oleksii Kurochko <oleksii.kurochko@gmail.com>
Cc: Romain Caritey <Romain.Caritey@microchip.com>,
 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.pau@citrix.com>,
 Stefano Stabellini <sstabellini@kernel.org>, xen-devel@lists.xenproject.org
References: <cover.1773157782.git.oleksii.kurochko@gmail.com>
 <7a7f1430090eaf50cc3bff25e894c13404bffad5.1773157782.git.oleksii.kurochko@gmail.com>
 <9b3cd2ba-869b-4757-8bcd-51abad61b9f9@suse.com>
 <4fb7dc0a-9e29-46c0-86d0-f7ef17501a72@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: <4fb7dc0a-9e29-46c0-86d0-f7ef17501a72@gmail.com>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 7bit
X-purgate-ID: tlsNG-16d1c6/1775830994-AEB333D8-3A23452D/0/0
X-purgate-type: clean
X-purgate-size: 2901

On 10.04.2026 16:00, Oleksii Kurochko wrote:
> On 4/1/26 4:38 PM, Jan Beulich wrote:
>> On 10.03.2026 18:08, Oleksii Kurochko wrote:
>>> --- a/xen/arch/riscv/dom0less-build.c
>>> +++ b/xen/arch/riscv/dom0less-build.c
>>> @@ -3,6 +3,15 @@
>>>   #include <xen/fdt-kernel.h>
>>>   #include <xen/init.h>
>>>   
>>> +#include <asm/intc.h>
>>> +
>>> +int __init make_intc_domU_node(struct kernel_info *kinfo)
>>> +{
>>> +    intc_make_domu_dt_node(kinfo);
>>> +
>>> +    return 0;
>>> +}
>>
>> Is this wrapper really needed? Can't what's intc_make_domu_dt_node() right
>> now become make_intc_domU_node()?
> 
> With current implementation no as intc_hw_ops used inside 
> intc_make_domu_dt_node() is declared as static.

How does that matter if you simply rename intc_make_domu_dt_node()?

> But I can introduce:
> 
> enum intc_version intc_hw_version(void)
> {
>     return intc_hw_ops->info->hw_version;
> }
> 
> and the in make_intc_domU_node() just use switch/case to call interrupt 
> controller specific functions.
> 
> Would it be better? It will also help to ...
> 
>>
>>> @@ -41,6 +41,10 @@ struct intc_hw_operations {
>>>   
>>>       /* handle external interrupt */
>>>       void (*handle_interrupt)(struct cpu_user_regs *regs);
>>> +
>>> +    /* Create interrupt controller node for domain */
>>> +    int (*make_dom_dt_node)(const struct kernel_info *kinfo,
>>> +                            const struct dt_device_node *intc);
>>
>> An __init-only hook is somewhat risky, just to mention it. In IOMMU code
>> besides struct iommu_ops we have struct iommu_init_ops, just to give an
>> example of where the same could have been the case.
> 
> .. not introduce hooks in this structure which won't exist after init.

That would be nice (as already said).

>>> --- a/xen/arch/riscv/intc.c
>>> +++ b/xen/arch/riscv/intc.c
>>> @@ -67,3 +67,11 @@ void intc_route_irq_to_xen(struct irq_desc *desc, unsigned int priority)
>>>       intc_set_irq_type(desc, desc->arch.type);
>>>       intc_set_irq_priority(desc, priority);
>>>   }
>>> +
>>> +int __init intc_make_domu_dt_node(const struct kernel_info *kinfo)
>>> +{
>>> +    if ( intc_hw_ops && intc_hw_ops->make_dom_dt_node )
>>> +        return intc_hw_ops->make_dom_dt_node(kinfo, intc_hw_ops->info->node);
>>> +
>>> +    return -ENOSYS;
>>
>> How do you justify this choice of return value? This isn't even a hypercall
>> handler.
> 
> That make_dom_dt_node() isn't provided by interrupt controller, so isn't 
> supported or as it mentioned in the comment "not implemented in 
> public/errno.h:
>    XEN_ERRNO(ENOSYS,	38)	/* Function not implemented */

"Function" as in "system call function" (normally; for us: "hypercall function").
ENOSYS really has a pretty narrow range of valid uses (according to my reading).
EOPNOTSUPP is the more generic alternative.

Jan


From xen-devel-bounces@lists.xenproject.org Fri Apr 10 14:29:33 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Fri, 10 Apr 2026 14:29:33 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1279191.1563734 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wBCrQ-0006Ue-23; Fri, 10 Apr 2026 14:29:28 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1279191.1563734; Fri, 10 Apr 2026 14:29: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 1wBCrP-0006UX-VU; Fri, 10 Apr 2026 14:29:27 +0000
Received: by outflank-mailman (input) for mailman id 1279191;
 Fri, 10 Apr 2026 14:29:26 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <Luca.Fancellu@arm.com>) id 1wBCrO-0006Tf-PV
 for xen-devel@lists.xenproject.org; Fri, 10 Apr 2026 14:29:26 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wBCrO-00HPFQ-5X
 for xen-devel@lists.xenproject.org; Fri, 10 Apr 2026 16:29:26 +0200
Received: from [10.42.69.4] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <Luca.Fancellu@arm.com>)
 id 69d90933-e002-0a2a0a5209dd-0a2a45049558-24
 for <xen-devel@lists.xenproject.org>; Fri, 10 Apr 2026 16:29:25 +0200
Received: from [52.101.83.10]
 (helo=GVXPR05CU001.outbound.protection.outlook.com)
 by tlsNG-ebf023.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.0)
 (envelope-from <Luca.Fancellu@arm.com>)
 id 69d90945-bb33-0a2a45040019-3465530a2f21-3
 for <xen-devel@lists.xenproject.org>; Fri, 10 Apr 2026 16:29:25 +0200
Received: from CWLP123CA0210.GBRP123.PROD.OUTLOOK.COM (2603:10a6:400:19d::19)
 by AS4PR08MB7478.eurprd08.prod.outlook.com (2603:10a6:20b:4e5::9)
 with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9745.28; Fri, 10 Apr
 2026 14:29:22 +0000
Received: from AMS1EPF0000008D.eurprd05.prod.outlook.com
 (2603:10a6:400:19d:cafe::2a) by CWLP123CA0210.outlook.office365.com
 (2603:10a6:400:19d::19) with Microsoft SMTP Server (version=TLS1_3,
 cipher=TLS_AES_256_GCM_SHA384) id 15.20.9769.42 via Frontend Transport; Fri,
 10 Apr 2026 14:29:22 +0000
Received: from outbound-uk1.az.dlp.m.darktrace.com (4.158.2.129) by
 AMS1EPF0000008D.mail.protection.outlook.com (10.167.242.84) with Microsoft
 SMTP Server (version=TLS1_3, cipher=TLS_AES_256_GCM_SHA384) id 15.20.9769.17
 via Frontend Transport; Fri, 10 Apr 2026 14:29:21 +0000
Received: from DU2PR08MB7272.eurprd08.prod.outlook.com (2603:10a6:10:2d7::16)
 by AM8PR08MB5587.eurprd08.prod.outlook.com (2603:10a6:20b:1dd::19)
 with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9769.19; Fri, 10 Apr
 2026 14:28:17 +0000
Received: from DU2PR08MB7272.eurprd08.prod.outlook.com
 ([fe80::5d34:206f:373:a323]) by DU2PR08MB7272.eurprd08.prod.outlook.com
 ([fe80::5d34:206f:373:a323%6]) with mapi id 15.20.9769.018; Fri, 10 Apr 2026
 14:28: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=arm.com header.i="@arm.com" header.h="From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck"; dkim=pass header.s=selector1 header.d=arm.com header.i="@arm.com" header.h="From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck"
ARC-Seal: i=2; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=pass;
 b=oDd0Ipkin1t98ruPPWTiYOrUj2Xwd+k22nalRPrUz1WvKCxvibNWnPl0PLufAZoMvEUtFz7ru8YA4bkFfKqtekUifPFhT1whT9xX0+WpLzWyDKA4NLvw7I2OsnP+F+mSGtWwWH1zFh1q8fUgHADNZqX4rqL//e6DmkDo31v861JABbCK9zGqChgkCwO2nI7Hmcb9OEoEOQS4+f2MLzfqISR3e5CeEv3fdkA+fs0rTKQdvpvJcbjmoMYYst600bfRJ7lZWtpOHE4D1wJ2T/rHZKHrSm3JH3doip7YQemg2buUexPEJBdWN/VF8RUcX9Dczw7yglxtMMtBubJnGRLDLA==
ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com;
 s=arcselector10001;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1;
 bh=tuNN5Xsm5V2t8jdqc1464X6IJZt1tsqeNB7XDP/BdVQ=;
 b=Y9Q5UH5gtw1ony9jgXevIq2do9tvKdmd0K6CtU61CaBEkfPEzun0IF/HytXSmaakLNrdKMbojTbBR+2WZYTcYv/bz50vKuCPjxJGUIjwRMDmqadI6uNEFkBz99PIOgLXXtLyHdaDCXpX5m+wVFSfk6t/4bKVjfs+v3mBmFa3sE/7CE1tyOTy6ow77vFpzRgND2q3B1103hhx/pmp/IMs5Z7MQMvOeunFaxPq97JPKXorAoQ4IpVcC7HtXyK2i/+3IE3aAeGOP9ixl2c8At4peVMpfDn0aCUWRV+V1fzOu83Cs3/AUBELjDb4A+p0v0a2DzO/XKmesX+E0qdxjtlqww==
ARC-Authentication-Results: i=2; mx.microsoft.com 1; spf=pass (sender ip is
 4.158.2.129) smtp.rcpttodomain=epam.com smtp.mailfrom=arm.com; dmarc=pass
 (p=none sp=none pct=100) action=none header.from=arm.com; dkim=pass
 (signature was verified) header.d=arm.com; arc=pass (0 oda=1 ltdi=1
 spf=[1,1,smtp.mailfrom=arm.com] dkim=[1,1,header.d=arm.com]
 dmarc=[1,1,header.from=arm.com])
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=arm.com; s=selector1;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck;
 bh=tuNN5Xsm5V2t8jdqc1464X6IJZt1tsqeNB7XDP/BdVQ=;
 b=ElPRFkDTxnd8cZhWys0IYOg/LnwL/flzbFiA8kH0hZTG8dpZ1pgs38mgNZiu6wZaKuBQ2oYVtIBEf2dovr1NLG7VD9iKYygMqDRWKj75PLqJ9mFrxJ47BB3ZfYHB6pmpN/7MR7/KlVdRvXlZDiLOt6FLwRp3zReZA8hWXNebi9I=
X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 4.158.2.129)
 smtp.mailfrom=arm.com; dkim=pass (signature was verified)
 header.d=arm.com;dmarc=pass action=none header.from=arm.com;
Received-SPF: Pass (protection.outlook.com: domain of arm.com designates
 4.158.2.129 as permitted sender) receiver=protection.outlook.com;
 client-ip=4.158.2.129; helo=outbound-uk1.az.dlp.m.darktrace.com; pr=C
ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none;
 b=BE/Goq9Y45f9JgebPQF5enpDTlwFCAXun52Ak/orB82GQ0lEXmt0u1ZViB55fVAzR6YzIY7jNMRQ0PDtSuWVaZT04jUy950raM3y9G2WrtCxS2xTO7Vl/n/adjr1A88uv+Ahj58f/BpGa1IyvoSc9AreYxzjtMYq2wPxb4LBm4XivKfPGN5WTLrvHltVaWTCdoKE90WGJunZ1nhjuoANth/hdXR9xVhB/4ILnCAL83qeT6OJ0TpmqBEPB1l8erUtrcZLjaC21onrTIM/oLLKcWNhjwoxgK807pKcQ3dPW0z7KNbWfuLLn7fJiQq3z9ps2ouiURLMh8vLt0xhUomLpw==
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com;
 s=arcselector10001;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1;
 bh=tuNN5Xsm5V2t8jdqc1464X6IJZt1tsqeNB7XDP/BdVQ=;
 b=Eq58nvMjj+xqoljhFq+zdg9vuD3T2euTzvt7zocBxZDLy3RHvHZ/4b4hoyITCluvl4uJCd+aixuYB/YU2ao8Zmb/EeI3F5HWcom1pmnjmAnuz91Lxw5xMIIHnnbQitMT5MQkbL1rIym+4AMHMH3/G0igcVnCGewywl+PzeDxTwAqGsky7OJPzYuK1CMb6qEk0qw5rkcctLXubbFKSTEIcCV0peAIRPbmB616aQ/0cVrgRbeprnwuNNCk2Nfr/vRlij7Fa1u0Ta4ixGSVAjBJylnKn25AaQZj2DFdBwcK46uq3CcYk85KNlVRGfAAb6Nd6oBs2deWyK5K038/rhrGqA==
ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass
 smtp.mailfrom=arm.com; dmarc=pass action=none header.from=arm.com; dkim=pass
 header.d=arm.com; arc=none
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=arm.com; s=selector1;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck;
 bh=tuNN5Xsm5V2t8jdqc1464X6IJZt1tsqeNB7XDP/BdVQ=;
 b=ElPRFkDTxnd8cZhWys0IYOg/LnwL/flzbFiA8kH0hZTG8dpZ1pgs38mgNZiu6wZaKuBQ2oYVtIBEf2dovr1NLG7VD9iKYygMqDRWKj75PLqJ9mFrxJ47BB3ZfYHB6pmpN/7MR7/KlVdRvXlZDiLOt6FLwRp3zReZA8hWXNebi9I=
From: Luca Fancellu <Luca.Fancellu@arm.com>
To: Milan Djokic <milan_djokic@epam.com>
CC: "xen-devel@lists.xenproject.org" <xen-devel@lists.xenproject.org>, Rahul
 Singh <Rahul.Singh@arm.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.pau@citrix.com>,
	Stefano Stabellini <sstabellini@kernel.org>, Bertrand Marquis
	<Bertrand.Marquis@arm.com>, Volodymyr Babchuk <Volodymyr_Babchuk@epam.com>
Subject: Re: [PATCH v3 07/23] xen/arm: vIOMMU: Add cmdline boot option "viommu
 = <string>"
Thread-Topic: [PATCH v3 07/23] xen/arm: vIOMMU: Add cmdline boot option
 "viommu = <string>"
Thread-Index: AQHcyPZFD1i896tq5E+b8JqjtvKuVw==
Date: Fri, 10 Apr 2026 14:28:17 +0000
Message-ID: <461C3828-5BCB-4F53-9B39-AB7FC8517039@arm.com>
References: <cover.1774918270.git.milan_djokic@epam.com>
 <5d86efa38ca99439153822fa19064bda6843fdc2.1774918270.git.milan_djokic@epam.com>
In-Reply-To:
 <5d86efa38ca99439153822fa19064bda6843fdc2.1774918270.git.milan_djokic@epam.com>
Accept-Language: en-GB, en-US
Content-Language: en-US
X-MS-Has-Attach:
X-MS-TNEF-Correlator:
x-mailer: Apple Mail (2.3826.700.81.1.6)
Authentication-Results-Original: dkim=none (message not signed)
 header.d=none;dmarc=none action=none header.from=arm.com;
x-ms-traffictypediagnostic:
	DU2PR08MB7272:EE_|AM8PR08MB5587:EE_|AMS1EPF0000008D:EE_|AS4PR08MB7478:EE_
X-MS-Office365-Filtering-Correlation-Id: 3fe9600d-0e2c-4a7c-8c9f-08de970d8edb
x-checkrecipientrouted: true
nodisclaimer: true
X-MS-Exchange-SenderADCheck: 1
X-MS-Exchange-AntiSpam-Relay: 0
X-Microsoft-Antispam-Untrusted:
 BCL:0;ARA:13230040|366016|1800799024|7416014|376014|38070700021|22082099003|56012099003|18002099003;
X-Microsoft-Antispam-Message-Info-Original:
 b+Q+dVWmVK25wTaPLdEyZIVXt+NQDuSM0TKo4X3lmL5BcaMKAXEF+aR5SVGtwpvl5Wy/1gaZ5O5SWRk3709Z8LHvyhJfKgN2EqnOqDHu3aiv1aAYCulbWPMMM3OJCt+SxoNZVUriRLf4gHz4A9pNN+X5siIYCL4lQjiMXd1QLPIujD21SLHEYXqxz3ZdYhKwJ76sqmhBkhgHnhsJB2zhFp96RmYN5Aw+AOMT5BzjpNRwE2ldo68JyP3oS0QEkNTMRG9iZ+shgmYnuk2cSMeXmqUrHvRVqxFVRekyr9WEZZ2vRammb+/dcWu570OAWmAobaLCFtWxr2ixBl6IYDcQKcA4ssEWSCFMC9/XBxXEzRQO+AiRQ+5ZfJmAaKy6Pc+dAxT3Mdz73W46yIFoa7Y4jTgHrFylMVL0XJIEMx8qdWWogEyZ6o01zzc//X7lTRFjENCU/7TVtEgqIGLnWBbkX8zmPZErwZtpIzBANaE0DklfUgWBuZVxdw6Wq/W+8MUhYj+QXzAv4V7rUZx9VTmS8pyjGmb3IpbxJhLbeweSsESJp2Ol5bH90GFdMvhp5F9qob0JqmUdZEHLvN4auOrF4yy9dsxV0czk/C1Sasdgdx6mGlfAsEya+x0jpk/jgrACXrojWYOpV5bARnYRkBbCMCQCCDbUvucPzWZx+yifc2J1+GIVyhOnzWajqKokCWBsznJUSp0rIEv+WGnpacsl9pkk7yd7GyRpHvB/BD/XpMhyDGQ9Ig6QqeC5hr8BHOtVW+pPzY9jH5za0xYSnnFanHMl97nVCWJ7UqvRlWmBEDE=
X-Forefront-Antispam-Report-Untrusted:
 CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:DU2PR08MB7272.eurprd08.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(366016)(1800799024)(7416014)(376014)(38070700021)(22082099003)(56012099003)(18002099003);DIR:OUT;SFP:1101;
Content-Type: text/plain; charset="iso-8859-1"
Content-ID: <31808764CAFB2A40BC60FF9466D5D940@eurprd08.prod.outlook.com>
Content-Transfer-Encoding: quoted-printable
MIME-Version: 1.0
X-Exchange-RoutingPolicyChecked:
 g2epMz50ggjPIekTmcBbhT5Sc9BmGdHTjltlLAPSmxgzjpq/C8uA8NYxh3JCPjozJv8ECpZr5m1TTzJ9WSwHv1ZlERwwwvcfGcUcC9KFxID8MNIOQflBUqPonHkXZMNunXZhG1DviMumSN/7UjuZOPolmHLEW+3d//A6p6rsq8JDyvTKpQLpfU+JgysIBXqmpSFgKmdiuJzQvKOIRY+6Mp9WoAXVHBxH6vO9bAj8qqBLRH4jS9pBEuYC48yxfCrDWh0NTbdrstOsG5qszNu4IxpYUNKIR18snHS+JnCPPcuKkMzLVsEHS/adyuI+pDU/z68fWFeYrMDhtO7vnXRQtw==
X-MS-Exchange-Transport-CrossTenantHeadersStamped: AM8PR08MB5587
X-EOPAttributedMessage: 0
X-MS-Exchange-Transport-CrossTenantHeadersStripped:
 AMS1EPF0000008D.eurprd05.prod.outlook.com
X-MS-PublicTrafficType: Email
X-MS-Office365-Filtering-Correlation-Id-Prvs:
	e2f99864-abbd-4d8b-6e1c-08de970d686b
X-Microsoft-Antispam:
	BCL:0;ARA:13230040|376014|36860700016|35042699022|7416014|14060799003|82310400026|1800799024|22082099003|56012099003|18002099003;
X-Microsoft-Antispam-Message-Info:
	aTAm4MDN5vGrB8U1cZZzD8f/THhn29/i2WH0PmGBxYyirPIyFIax8b4nEU0G5nnqfInKwjdWNijBsE1SfM1XK90Dmal92yUXEHGAJrYHLlo+3r+OxtKe3qa7rZeFE8Fi07PC8OyBj8PXFrhxHBvBHwO6LGRrjNdHGTO/tJdjVZ7owP8/ygVJ9/G4SN85cACyxjBQZx4Qmejq3YrkqQwGmV+yEsHKxkeBCLETbTLDYTIg/X8EffAC9mZvunpFq00vmt4P59IbeFBIhDa0csVWV5dTvGe1xwKGknZEqZvR7699QaV7kxdV04BaozbWefL7yxE+FkweSh01g0ppjfsNmWwVgt3MBahMjDM+fwXlUG70hQf5cC47iomvGVQP5byzXP45GUd2av1wIrI1rSXAlq7LxfDJ36KsqJzFCT7DnD5yavSC1OHpp4xks5L8ihkEL7pRzsp8gH/EDMQALgqhoVFwxRtVbbVrv0SRntx5nrdQ7LGEno9HPAUp71Z9VRRk1zQ9QWB+lwPZYH92RI2Xu2HBHfWwwB7q8sWonG7/x2MTbg0UHsHZ+miLRxjk/T4/XcbEWKlqiXH16skj6W2Fky8pvyrNDNFNHYh4WIe6pfkLla4H/RbgefcH4UMxt76v3X8OHM7Z+kSduEVv9l8CKQb76+Iyd1PAUKOSqiC4I6k5BvIrptOoh/KzNeR6DtRMw3sAfhKg/TlrZlaEM3VlWuCWPYDbZ5wrHH9GwFGRdqkJh1AlvEyYwqJvR9aSXsz1EAWJHdqRoUkz3y2dTd3iLw==
X-Forefront-Antispam-Report:
	CIP:4.158.2.129;CTRY:GB;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:outbound-uk1.az.dlp.m.darktrace.com;PTR:InfoDomainNonexistent;CAT:NONE;SFS:(13230040)(376014)(36860700016)(35042699022)(7416014)(14060799003)(82310400026)(1800799024)(22082099003)(56012099003)(18002099003);DIR:OUT;SFP:1101;
X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1
X-MS-Exchange-AntiSpam-MessageData-0:
	aY6IelDI3KwU+2xu5l1qzCSFZZqo1yK870IEemPtzfoR+YE9GqSShoOwG8fxad3SD+xHIhn5lRvnDnQ6eUEzvzGP5dO3hLj9HtPjUbqFkSsvEw3i6DarucvHayl/NV/Kftxh4+PpYwWwsmlvKdszgavXKNaYz+OIwgMUjleYrmlzn5Z6lyh5TFEDQnoFxT/nRVmWXhPo39TaSfsn9Z+opnQ/42nYDoP1Jn8EJtqvqK0QNQ5YnGGyOWY+x471WG5KaQZvSdA87TQtCXrpgBlhMpMzAxUgjkYFRAKTQNLteY0gXyeAcNwafrCHkzYv4JeyH4irSgz2sKsh70rVd6u8lQ+Mr3R21G6Zc0gYzuvpcdCTy2MQWdncxvXEILUQUSe/95NdEmzyN/8rGUQbdcs1/PACHTFgB1+382WdF7+YW73vOLQscFN2HmfD+rGPZIhU
X-OriginatorOrg: arm.com
X-MS-Exchange-CrossTenant-OriginalArrivalTime: 10 Apr 2026 14:29:21.9424
 (UTC)
X-MS-Exchange-CrossTenant-Network-Message-Id: 3fe9600d-0e2c-4a7c-8c9f-08de970d8edb
X-MS-Exchange-CrossTenant-Id: f34e5979-57d9-4aaa-ad4d-b122a662184d
X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=f34e5979-57d9-4aaa-ad4d-b122a662184d;Ip=[4.158.2.129];Helo=[outbound-uk1.az.dlp.m.darktrace.com]
X-MS-Exchange-CrossTenant-AuthSource:
	AMS1EPF0000008D.eurprd05.prod.outlook.com
X-MS-Exchange-CrossTenant-AuthAs: Anonymous
X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem
X-MS-Exchange-Transport-CrossTenantHeadersStamped: AS4PR08MB7478
X-purgate-ID: tlsNG-ebf023/1775831365-3273A51B-74863711/0/0
X-purgate-type: clean
X-purgate-size: 1064

HI Milan,

>=20
> diff --git a/xen/arch/arm/include/asm/viommu.h b/xen/arch/arm/include/asm=
/viommu.h
> index 2a6742de73..ed338fe0ec 100644
> --- a/xen/arch/arm/include/asm/viommu.h
> +++ b/xen/arch/arm/include/asm/viommu.h
> @@ -10,6 +10,7 @@
> #include <public/xen.h>
>=20
> extern struct list_head host_iommu_list;
> +extern char viommu[];

As far as I can see this one is used only in this header by ...

>=20
> /* data structure for each hardware IOMMU */
> struct host_iommu {
> @@ -50,6 +51,12 @@ uint16_t viommu_get_type(void);
> void add_to_host_iommu_list(paddr_t addr, paddr_t size,
>                             const struct dt_device_node *node);
>=20
> +static always_inline bool is_viommu_enabled(void)
> +{
> +    /* only smmuv3 emulation supported */
> +    return !strcmp(viommu, "smmuv3");
> +}

this function, it seems cleaner to me if viommu is static inside xen/xen/dr=
ivers/passthrough/arm/viommu.c
and this one can be defined there as well, so here we will have only the de=
claration.

Cheers,
Luca



From xen-devel-bounces@lists.xenproject.org Fri Apr 10 14:58:11 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Fri, 10 Apr 2026 14:58:11 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1279235.1563744 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wBDJ5-00029I-7d; Fri, 10 Apr 2026 14:58:03 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1279235.1563744; Fri, 10 Apr 2026 14:58: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 1wBDJ5-00029A-2y; Fri, 10 Apr 2026 14:58:03 +0000
Received: by outflank-mailman (input) for mailman id 1279235;
 Fri, 10 Apr 2026 14:58:01 +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 1wBDJ3-000294-3o
 for xen-devel@lists.xenproject.org; Fri, 10 Apr 2026 14:58:01 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wBDJ2-009EbJ-Fr
 for xen-devel@lists.xenproject.org; Fri, 10 Apr 2026 16:58:00 +0200
Received: from [10.42.69.9] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <dmytro_prokopchuk1@epam.com>)
 id 69d90fef-bab6-0a2a0a5309dd-0a2a4509a690-8
 for <xen-devel@lists.xenproject.org>; Fri, 10 Apr 2026 16:58:00 +0200
Received: from [40.107.162.134]
 (helo=PA4PR04CU001.outbound.protection.outlook.com)
 by tlsNG-bad1c0.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.0)
 (envelope-from <dmytro_prokopchuk1@epam.com>)
 id 69d90ff8-bf79-0a2a45090019-286ba2868d67-3
 for <xen-devel@lists.xenproject.org>; Fri, 10 Apr 2026 16:58:00 +0200
Received: from AM9PR03MB7526.eurprd03.prod.outlook.com (2603:10a6:20b:3de::17)
 by DU5PR03MB10217.eurprd03.prod.outlook.com (2603:10a6:10:517::10)
 with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9769.18; Fri, 10 Apr
 2026 14:57:58 +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.20.9745.035; Fri, 10 Apr 2026
 14:57: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=GkmjMzr1jS/vtXJovCea+njdsGxZU1Od0qgeobygYU208C4lrE1ShZ/eEP2DdPEm2HyW/Mv5br68kvQElP+Goqj6S8VFZHEhgunzh5YZx7i9qcwBJIgBt1UrVAfXS5qUqsdj/05TGFPqX3zhzht+Xf73DxZJqmZcMs/vDekhUKGuJMVOf/41PJD2tcXgowIdKud4amYwT5T5aOYk51G40jyOZq6pv5AfEn+k/1epzi4JIVXVAIxG5NpK0PiAusI5ldRz4wHY5fwn483GpWWQWfxYFHdwiYdHQiaLOHixUWF8qNKigrdmK5n9cpDCBYtZPrJlfm/A6TQdO3X2lIDbKQ==
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com;
 s=arcselector10001;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1;
 bh=Cy01VKSGJ9Y4vrJwf6I1e7ONfe8U1/Lc4lQ6snnN6/I=;
 b=oiHPCql1E1mgtjgt4ZlNYMlgUJROELQyDB1yV6a0DCbi3d3/XPAZTWSANRc7fJwc+We9oE0g2p9Hs5mOMfZnLlMLYYSvsWRhno9UQ6tjGpvt6t2NnXI6ex6aWqx76Uv4x+XYCoy9p/50z/CEcUnz83yzqA3GeKfIaWOw+4XW8Pg884ROv9lgLaHBA0CjgN75CWXblVL09qeg4E4F+XrXpfGRwWV5r+T3pqfJ6QiVaBu1HLtXGUlExJgb99OJKvrChTFwlBOgj/TsGkG1WSojV4MPb21SK9d///s06X/c9NlTi7vt4tY4olwOmbiWADQZ3G78z+s/70Ljis4n3Q2jjA==
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=Cy01VKSGJ9Y4vrJwf6I1e7ONfe8U1/Lc4lQ6snnN6/I=;
 b=E5WvZA0HHvpf18kUliT7TnvXOz7PJSN3BrZb/fsXvjSxXXLnnwwYR5VsrostvkItA/zEPAcp4CyMqiQUiZjMVXAnZUEd0Tr/A5xVjzFW/Jt10hAH/O0O/nz63wn3agqY1rPVvt4dUvy+Gz/pjddlXAoHZW1sa3E3ggpfwpLPijJ+ws80A9yUvsuFNAT09nfQI2DOOaxv/gD3+oMIPhBzgsFrHmMgCEpCX3ndjyAzcIKC8L0DFZpwzuyHO2pwW2nJ9ySfM4r0vPljgp/o9rslBEyO7upjTaVgBJiZU2VHtqLk+grzJDbhPHRGLSEeSrkj/wo/gKRPlAVgMSTsqDNAzw==
From: Dmytro Prokopchuk1 <dmytro_prokopchuk1@epam.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>, =?utf-8?B?Um9nZXIgUGF1IE1vbm7DqQ==?=
	<roger.pau@citrix.com>, Stefano Stabellini <sstabellini@kernel.org>,
	"xen-devel@lists.xenproject.org" <xen-devel@lists.xenproject.org>
Subject: Re: [PATCH] generic/altp2m: address violations of MISRA C Rule 2.1
Thread-Topic: [PATCH] generic/altp2m: address violations of MISRA C Rule 2.1
Thread-Index: AQHcyEeH3FAPJgz8C0q4McY6u5ZElbXXzxqAgACVLIA=
Date: Fri, 10 Apr 2026 14:57:57 +0000
Message-ID: <15aae6fc-35e3-4cf0-9e3c-bd2552db10e6@epam.com>
References:
 <8b5ca213a097f7b221b06b6173e4621563779a73.1775752149.git.dmytro_prokopchuk1@epam.com>
 <3b2daddd-9afc-4c75-92c0-f7c6ace3f735@suse.com>
In-Reply-To: <3b2daddd-9afc-4c75-92c0-f7c6ace3f735@suse.com>
Accept-Language: en-US, uk-UA, ru-RU
Content-Language: en-US
X-MS-Has-Attach:
X-MS-TNEF-Correlator:
authentication-results: 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_|DU5PR03MB10217:EE_
x-ms-office365-filtering-correlation-id: 0e36f140-06fe-4b63-f8e0-08de97118d68
x-ms-exchange-senderadcheck: 1
x-ms-exchange-antispam-relay: 0
x-microsoft-antispam:
 BCL:0;ARA:13230040|42112799006|376014|1800799024|366016|38070700021|22082099003|18002099003|56012099003;
x-microsoft-antispam-message-info:
 MnQYH3/8/JlqddH5mtTX8o+1PQFQlqpVB/+xBLyOG08AsAYHOPu0RE2JSZmWETn9ENAWinMIgSQr1J6Jg9SK87NJvHdzA4xsdGT+DEYRMvklh3sCBNuVGEYjP1ZDim/mP/Bz8t6kyQPqSr71TNdkZ1lkLlGMSntWoH1JGJ62J5F5B1xY27RK0mOAtOqxTIhjKqbfaGNrs0k2V24nxJc3IVoLD978r4/bfDBv8DTcKWz57gMm6ymt+N6XWVLrbC6/BO3KnM/ehZutPHDA8tzqJEPRyExVC4UE6MUItmTN9cvbjquuZfivKU2t4opD/MlQxXeYBMNx2CkuTHvnG4I8pTHUnk0lyRt+ctAwy+dPX+7WQzSospWaVFIEbRZbI/ru+ftaunCaY8VaJr7infx8UsxvDeddTbPdef5kEaW1styzoFiRQtDucEA6djFbwlpV6+Mz+y605S7oELhOO7pAQ0WCLO6C5scfkKJ5MBprP7gISNtauw5LPdChQqFS/GI2PbJmFD2PnsmRs8ha+CgiMTVcgQlw3laaakh6Z98ubv9l/dmPTYwbFqpNFGeqDUl00zSv/W8BADrBGOzzUfxQRHeIVIzdIqDJ2qKrK2n/PeMN4KV/+yuU+4bWOxV7BFYxAEw1ki5IKxb7sJrs9lzS2VmJZ9xkxth+r4irJ7VeCOe623qO5FcezpRVgos0+5qA90A0Eb32U0bbgLWsc3naCA3E4GlLCzUjjUAtJ+/75eQVb0/4AGpwAgkv9fb/CLANRDZWsOgisMRIzQycxVXycwHpyX0Zi6mIlqjlBDp94CM=
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)(42112799006)(376014)(1800799024)(366016)(38070700021)(22082099003)(18002099003)(56012099003);DIR:OUT;SFP:1102;
x-ms-exchange-antispam-messagedata-chunkcount: 1
x-ms-exchange-antispam-messagedata-0:
 =?utf-8?B?WDdhSXVteVJJZWFrM2Z3MndmbFhEWlo0RE9ZTGxQQk1SdUNRb1NlWXdIck5K?=
 =?utf-8?B?VUViank5WXVHU01DOTdOb3BDRG9HaUhBY1FNSjBja2ptdlJrd1R1QnFkUk9G?=
 =?utf-8?B?QUVEOVM4VUZJTHJtb2tkQmt0aFhCekNweWpIeWo2ZTArRWtxVy9NeHpFOThG?=
 =?utf-8?B?eVcvMkNIVnhnSHRBSzlzd2h4ZTI2R1NWdUs5TnVhQjlIN2dRVVdpN0w2aWMx?=
 =?utf-8?B?QUVxTVd5NExvSzF6R21oQzVHZzA5ZFRma3NxRXVBNjlDR1BlbDJRcTVzR1ox?=
 =?utf-8?B?Z0ozR2lsRE40NGdxcVdNSnQyR3VQZTVQVHFjRUVSYmsyS2RVYmw5d0ZnQmhv?=
 =?utf-8?B?Sll1SFEycnl2ekc3TGxhT2hwejBhTS92M3AwQktDZ3N1RXU5ZnZubG9XWlI2?=
 =?utf-8?B?cVRLMk03Y0hxS0haL1RFSmFNdWYwME5IWHR6TEZ2Tk5RUUtlbEgra2FsM2JS?=
 =?utf-8?B?MFJSSGJZV0d6VUI2VGpjdklwSTRnQ1ZXLzd6UlhIaHhGaHYrdmwvd1pySzRh?=
 =?utf-8?B?RERHcS9jR2hiaE51VENRang5eUFKTDFBdHRCYWNtbW5WQ2R2Z0VDU2ZiM211?=
 =?utf-8?B?c3ZrY3NFTmQ1U2xyM1B5amYvNWRubDNheWpJQW85V2RFTFRDcDdaQStmRXpx?=
 =?utf-8?B?bWJtOXlFVkFUWldMS2lJa0JZUk40bDZyY3h4WVJxMTJLcUluaHVHVFFleVdE?=
 =?utf-8?B?bVFDWGxzbzkwbkk2MGI0a0lSa0YyUHlydVlLaWlhZHdrak53aE83c0NuRDMx?=
 =?utf-8?B?ekZnOHNMY0JmVGJrV0pVcGNoeHBtak10dkRyRDlRczBzU3lPN0gvb3dIU1Bq?=
 =?utf-8?B?TVJkZHUyd2FxWFVENXBzdVZpSFFQMHMwMk55VVJqK1VXWHFuLzRiL3Q5dXRS?=
 =?utf-8?B?dTNzcEkvbHhyTzZncUZrZlZmZFpLRXl5WGUyNG1ZVHNjWTk3VUo5WW1kRGMw?=
 =?utf-8?B?TEQ3dEs4SW5walFNc2hUK01PWDZLZWtBbldDN3RuL3Z4c3l2ZzcwSDVBek1F?=
 =?utf-8?B?ZnViZXA0cnBjYURYQmZEOWt1S0ZIdC94dUJ3U2I1dEZIVzF5SGxCMUN3cndK?=
 =?utf-8?B?R0VXcnlPWC9TaWRaQVc0SWozclRMUTFodXBSc0s2NUwvMkZEVzNqNEhRNU9D?=
 =?utf-8?B?eCtCWXAyWFM4cDBjN3lLbWl4RlJVNG1JMWhPZnVMTjk0cGJ1REJFQUVqcy9x?=
 =?utf-8?B?ZW1yVXZvNlZVWWVkb1J1dWRPMzUxRlZmajlJUlZydFNmN1MrQWJjTnBJamhO?=
 =?utf-8?B?b0VHQzE3WkdZaDhKV1dBNFdDNzJ1R1lkTzdjUjJBZm1KbGFudEg4OHdTaTFx?=
 =?utf-8?B?ZWhVR2w5WEdmbnFtR0JNdTExbi9QR1oxVloxWitoRU5DRkxvT1JrdmNhb2VQ?=
 =?utf-8?B?SjZiTGsvZzloS3Z0VGtEc1VFeTZsWEVObkNDbWRCbUJqaUwwdVBESWJnNjBV?=
 =?utf-8?B?bmJTMnZKejBjaVpPRjRKQnR2NjRoa2hrdnYva0JNeHlhL1BCYmoxT0lCOXRJ?=
 =?utf-8?B?Yzd6N0JGOHJia3pxTGtMQWorUG1zYS9jb1FWd2tYbXorTG10VlFQQjB2dHNM?=
 =?utf-8?B?OWJWSDVYeDNFc094aUQxKzc0MmdwUzlVZkNzbzl3QWZaZE02a281NVVoeDVw?=
 =?utf-8?B?NWdrTGpCU0wxZEdyMUVpRmM0TktHOTJMSmwvejJ3bGo1NTZpUmFGVkJRMXlY?=
 =?utf-8?B?UEhiTGV4bm9KYXBIZGdtTzR5elgwRysvaEJlWnk1MUFuZnZ5SVdtTlQ1bjlO?=
 =?utf-8?B?TEs1VFd6cXBiZjhFNlZwanljYVFya2hhOElSYzUvY2l2REVhTjExR3FWYWlW?=
 =?utf-8?B?S3lqZmZCTTdLQlhGRXMzTjh4clg0UTdBdDFodXVVeFF1ZTJSbDRzcThMQXQz?=
 =?utf-8?B?U1o2ZWN5N2h3Qmo0RHk4Y3M0N1JSczA1czZxTkk5cTVPTWo2S2xJN0tjVklD?=
 =?utf-8?B?MGtZZDUwSFg4NjEwZ3FKb1Q0dHZsa21IVkVZdkJ1OEpjRnZMbld5NG1YSDZ4?=
 =?utf-8?B?TkZmWE9mTTJBRlV0eUtHQnpJSzRUQnBhUjVDS1pWNkJqSFpzZmtrTUFNMkJ2?=
 =?utf-8?B?VWNFMUcyWjU3TFdUK0hmSlk4OTNhZEtTcWRBMmsycGVvSGNHREJvRWFNTFlk?=
 =?utf-8?B?aXM2YkVCU0F0TkNoeVU0d3ZBMUM3SVpBdk96aUF2dGF4Uk1mazdNYnphejI0?=
 =?utf-8?B?SVBSakN3bVg4K0FBQjlxOTdsdEZRZk5pTHVCZ3Z1QVdWWmxEMmd3MEpIaG1G?=
 =?utf-8?B?YW5EQm5zMEx5TTVSNGd0S3MvTHplOWQvRkd5R2R1Z292eTNXS0RBRjZEREhS?=
 =?utf-8?B?eitHeHV2eUJRc3hjakMvMEhPM3hKT0VZc0hBT2dXZGF5S21zYlhPekR2cUhJ?=
 =?utf-8?Q?U+Wqrggj0CxYKOlo=3D?=
Content-Type: text/plain; charset="utf-8"
Content-ID: <EF57939B5260174B9A3ADA6817C7715B@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: AM9PR03MB7526.eurprd03.prod.outlook.com
X-MS-Exchange-CrossTenant-Network-Message-Id: 0e36f140-06fe-4b63-f8e0-08de97118d68
X-MS-Exchange-CrossTenant-originalarrivaltime: 10 Apr 2026 14:57:57.4889
 (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: sZv44myoDkVKfTE0yeAdNUDhvRCHdM56iP3YC7SeXYtyisJ6m4/LUEhLpkZHbgCeFMxO/uVwagiRfSJeEAJ1KhMdWveI0U4Y9c85B4OMR+4=
X-MS-Exchange-Transport-CrossTenantHeadersStamped: DU5PR03MB10217
X-purgate-ID: tlsNG-bad1c0/1775833080-2EB48152-B12B273E/0/0
X-purgate-type: clean
X-purgate-size: 2710

SGVsbG8gSmFuLA0KDQpPbiA0LzEwLzI2IDA5OjA0LCBKYW4gQmV1bGljaCB3cm90ZToNCj4gT24g
MDkuMDQuMjAyNiAxOTozNywgRG15dHJvIFByb2tvcGNodWsxIHdyb3RlOg0KPj4gTUlTUkEgQyBS
dWxlIDIuMSBzdGF0ZXM6ICJBIHByb2plY3Qgc2hhbGwgbm90IGNvbnRhaW4gdW5yZWFjaGFibGUg
Y29kZSIuDQo+Pg0KPj4gSW4gY2VydGFpbiBidWlsZCBjb25maWd1cmF0aW9ucywNCj4gDQo+IENh
biB5b3UgZ2l2ZSBhbiBleGFtcGxlIHdoZXJlIC4uLg0KV2hlbiBjb25maWcgVk1fRVZFTlQgaXMg
ZW5hYmxlZCBhbmQgY29tcGlsZWQgYXJjaGl0ZWN0dXJlIChlLmcuIEFybTY0KSANCmRvZXNuJ3Qg
aGF2ZSBhbHRwMm0gaW1wbGVtZW50YXRpb24uDQo+IA0KPj4gdGhlIGZ1bmN0aW9uICdhbHRwMm1f
dmNwdV9pZHgoKScgaXMgZGVmaW5lZA0KPj4gYXMgYW4gaW5saW5lIGZ1bmN0aW9uIHRoYXQgY29u
dGFpbnMgdGhlICdCVUcoKScgbWFjcm8uIFRoaXMgcmVzdWx0ZWQgaW4gYQ0KPj4gdmlvbGF0aW9u
IGJlY2F1c2UgdGhlICdCVUcoKScgbWFjcm8gbWFrZXMgdGhlIGZ1bmN0aW9uIG5vbi1yZXR1cm5p
bmcuDQo+Pg0KVGhlIGNhbGwgdG8gImFsdHAybV92Y3B1X2lkeCgpIiBpcyBndWFyZGVkIGJ5IHRo
ZSBwcmVkaWNhdGUgImlmIA0KKGFsdHAybV9hY3RpdmUoZCkpIiwgd2hpY2ggYWx3YXlzIHJldHVy
bnMgImZhbHNlIiANCihjb21waWxlLXRpbWUtY29uc3RhbnQpIGluIGN1cnJlbnQgYnVpbGQgY29u
ZmlnOg0KDQogICAgIGlmICggYWx0cDJtX2FjdGl2ZShkKSApDQogICAgIHsNCiAgICAgICAgIHJl
cS0+ZmxhZ3MgfD0gVk1fRVZFTlRfRkxBR19BTFRFUk5BVEVfUDJNOw0KICAgICAgICAgcmVxLT5h
bHRwMm1faWR4ID0gYWx0cDJtX3ZjcHVfaWR4KHYpOw0KICAgICB9DQoNCkRDRSByZW1vdmVzIChz
aG91bGQgcmVtb3ZlKSB0aGlzIGVudGlyZSBicmFuY2gsIHNvIHRoZSBCVUcoKSBpcyBuZXZlciAN
CmFjdHVhbGx5IGluY2x1ZGVkIGluIHRoZSBmaW5hbCBiaW5hcnkuDQoNCkJ1dCwgdGhpcyBjb2Rl
IGlzIHN0aWxsIHByZXNlbnQgYWZ0ZXIgcHJlcHJvY2Vzc2luZyBhbmQgaXMgYW5hbHl6ZWQgYnkg
DQp0aGUgRWNsYWlyIHRvb2wgKHJlZ2FyZGxlc3Mgb2Ygd2hldGhlciB0aGlzIGNvZGUgaXMgbGF0
ZXIgcmVtb3ZlZCBieSB0aGUgDQpEQ0UpLg0KDQpObyBpbmxpbmUgZnVuY3Rpb24gLS0+IG5vIGRl
dmlhdGlvbiAoRWNsYWlyIGlzIGhhcHB5KS4NCj4+IFRvIGVuc3VyZSBjb21wbGlhbmNlIHdpdGgg
TUlTUkEgQyBSdWxlIDIuMSwgdGhpcyBwYXRjaCByZW1vdmVzIHRoZSBpbmxpbmUNCj4+IGZ1bmN0
aW9uIGltcGxlbWVudGF0aW9uIGFuZCBpdHMgQlVHKCktYmFzZWQgdW5yZWFjaGFibGUgY29kZS4g
SXQgaXMgcmVwbGFjZWQNCj4+IHdpdGggYW4gdW5jb25kaXRpb25hbCBmdW5jdGlvbiBkZWNsYXJh
dGlvbiBmb3IgJ2FsdHAybV92Y3B1X2lkeCgpJy4NCj4gDQo+IC4uLiBhIGRlY2xhcmF0aW9uIGlz
IG5lZWRlZD8gVGhlIHNvbGUgbm9uLXg4NiByZWZlcmVuY2UgSSBzZWUgaXMgZnJvbQ0KPiBjb21t
b24vbW9uaXRvci5jLCBhbmQgdGhlIHNvbGUgcmVsZXZhbnQgS2NvbmZpZyBvcHRpb24gSSBjYW4g
c3BvdCBpcw0KPiBWTV9FVkVOVC4gV2hlbiB0aGF0J3Mgb2ZmLCB0aGUgZmlsZSB3b24ndCBiZSBi
dWlsdCBhdCBhbGwuDQo+IA0KPiBGdXJ0aGVyLCBCVUcoKSBhbmQgYSBmZXcgbW9yZSBjb25zdHJ1
Y3RzIGhhdmUgYSBkZWRpY2F0ZWQgZGV2aWF0aW9uDQo+IGFscmVhZHkgaW4gcGxhY2UuDQpJZiBz
bywgRWNsYWlyIHNob3VsZG4ndCByZXBvcnQgYSB2aW9sYXRpb24uLi4NCiAgSSBkb24ndCBtaW5k
IGEgdXNlbGVzcyBmdW5jdGlvbiB0byBiZSBzaHJ1bmsgKG9yLCBhcw0KPiBwZXIgYWJvdmUsIHBl
cmhhcHMgZXZlbiBkcm9wcGVkKSwgYnV0IHRoZSBqdXN0aWZpY2F0aW9uIHRoZW4gbmVlZHMgdG8N
Cj4gYmUgZGlmZmVyZW50Lg0KPiANCj4gSmFuDQoNCkJSLCBEbXl0cm8u


From xen-devel-bounces@lists.xenproject.org Fri Apr 10 15:04:00 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Fri, 10 Apr 2026 15:04:00 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1279250.1563770 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wBDOq-0004CW-Aq; Fri, 10 Apr 2026 15:04:00 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1279250.1563770; Fri, 10 Apr 2026 15:04: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 1wBDOq-0004CP-7c; Fri, 10 Apr 2026 15:04:00 +0000
Received: by outflank-mailman (input) for mailman id 1279250;
 Fri, 10 Apr 2026 15:03:59 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <bounce-md_30504962.69d9115d.v1-ae297a03d26745569ddf3718bc0d083e@bounce.vates.tech>)
 id 1wBDOp-0004Bg-D4
 for xen-devel@lists.xenproject.org; Fri, 10 Apr 2026 15:03:59 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wBDOo-005QoJ-PA
 for xen-devel@lists.xenproject.org; Fri, 10 Apr 2026 17:03:58 +0200
Received: from [10.42.69.12] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1) (envelope-from
 <bounce-md_30504962.69d9115d.v1-ae297a03d26745569ddf3718bc0d083e@bounce.vates.tech>)
 id 69d91149-2eae-0a2a0a5409dd-0a2a450cc890-40
 for <xen-devel@lists.xenproject.org>; Fri, 10 Apr 2026 17:03:58 +0200
Received: from [198.2.187.1] (helo=mail187-1.suw11.mandrillapp.com)
 by tlsNG-d25034.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.0)
 (envelope-from
 <bounce-md_30504962.69d9115d.v1-ae297a03d26745569ddf3718bc0d083e@bounce.vates.tech>)
 id 69d9115d-f40c-0a2a450c0019-c602bb010fbb-3
 for <xen-devel@lists.xenproject.org>; Fri, 10 Apr 2026 17:03:58 +0200
Received: from pmta09.mandrill.prod.suw01.rsglab.com (localhost [127.0.0.1])
 by mail187-1.suw11.mandrillapp.com (Mailchimp) with ESMTP id 4fsg711hcRzBsV1YM
 for <xen-devel@lists.xenproject.org>; Fri, 10 Apr 2026 15:03:57 +0000 (GMT)
Received: from [37.26.189.201] by mandrillapp.com id
 ae297a03d26745569ddf3718bc0d083e; Fri, 10 Apr 2026 15:03: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=mte1 header.d=mandrillapp.com header.i="@mandrillapp.com" header.h="From:Subject:To:Cc:Message-Id:In-Reply-To:References:Feedback-ID:Date:MIME-Version:Content-Type:Content-Transfer-Encoding"; dkim=pass header.s=mte1 header.d=vates.tech header.i="thierry.escande@vates.tech" header.h="From:Subject:To:Cc:Message-Id:In-Reply-To:References:Feedback-ID:Date:MIME-Version:Content-Type:Content-Transfer-Encoding"
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=mandrillapp.com;
	s=mte1; t=1775833437; x=1776103437;
	bh=4VJ9kFlhw+z/hCTPHjAS7qoiehNMI6uP2dnFVadsX98=;
	h=From:Subject:To:Cc:Message-Id:In-Reply-To:References:Feedback-ID:
	 Date:MIME-Version:Content-Type:Content-Transfer-Encoding:CC:Date:
	 Subject:From;
	b=rOyEwxwfdzr2WAEhRbG1wQYqHTDcK1+Ek+YCL2xrEq9PFzvC4m6aQkYHryYu8w392
	 2FwsCNLN5wQun3upCzZLVe9+H3zGIZkNPm+uXll6/5b1itWHmMSXDNwgOJjobHIvzZ
	 tbBQ7ElfPQuPRkq8m6AJnu2bxWKqjLrJ/cI+NBkICYRhNraAiLFOPNgdda1DehIQNZ
	 2OcpXnqmiMKzAWd/jousYC4mqzgORsdaKkwLw++Mb/oMdk69q1h5cXYMnbQ67Sch8k
	 ceuLYk5lZ7/RtQxeouGiZ7bJGT2B3GratzE/DWgyVH45/MSg+b+g9/hpWwm4+Ar5F2
	 IVpT6Kx9q72cQ==
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=vates.tech; s=mte1;
	t=1775833437; x=1776093937; i=thierry.escande@vates.tech;
	bh=4VJ9kFlhw+z/hCTPHjAS7qoiehNMI6uP2dnFVadsX98=;
	h=From:Subject:To:Cc:Message-Id:In-Reply-To:References:Feedback-ID:
	 Date:MIME-Version:Content-Type:Content-Transfer-Encoding:CC:Date:
	 Subject:From;
	b=c4iVO3EKMywAXCLcVDfmnTSyDn6d4QWuuKZUDBgrjwPpPPjfZdttf6Aqbc4Z96GOL
	 UXrOlN+nktiO+fKeR3c3sB5ogfmp6iZCatEwrNmVycswLpSZdOtPZWHyv+qFsrqho4
	 CDDorczrMHpj7qPcCWM2PyfL94N99Dcpmh4q56Rc7qBFP3bo4pRKBXVJtD1ZbmG4dP
	 6xaOWT+DBQFd7NEu95HA7voF5H7Cs6FSAzbXw9SfZFNSTO58hhXgNkIu1oHTqzIjMJ
	 ozYJ1G94JKLA4P/viDMhVUZKNVBYtYFQnYkKEe+fZRGEOOlwiyt7X8JpJDybbxMiCp
	 i144Qv6Vu+Jzw==
From: "Thierry Escande" <thierry.escande@vates.tech>
Subject: =?utf-8?Q?[RFC=20PATCH=20v3=202/3]=20libxl:=20Allow=20PCI=20device=20passthrough=20using=20-device=20Qemu=20command=20line?=
X-Mailer: git-send-email 2.53.0
X-Bm-Disclaimer: Yes
X-Bm-Milter-Handled: 4ffbd6c1-ee69-4e1b-aabd-f977039bd3e2
X-Bm-Transport-Timestamp: 1775833436555
To: xen-devel@lists.xenproject.org
Cc: "Thierry Escande" <thierry.escande@vates.tech>, "Anthony PERARD" <anthony.perard@vates.tech>, "Juergen Gross" <jgross@suse.com>, "=?utf-8?Q?Daniel=20P=20.=20Berrang=C3=A9?=" <berrange@redhat.com>, "=?utf-8?Q?Marek=20Marczykowski-G=C3=B3recki?=" <marmarek@invisiblethingslab.com>
Message-Id: <20260410150333.1533568-3-thierry.escande@vates.tech>
In-Reply-To: <20260410150333.1533568-1-thierry.escande@vates.tech>
References: <20260410150333.1533568-1-thierry.escande@vates.tech>
X-Native-Encoded: 1
X-Report-Abuse: =?UTF-8?Q?Please=20forward=20a=20copy=20of=20this=20message,=20including=20all=20headers,=20to=20abuse@mandrill.com.=20You=20can=20also=20report=20abuse=20here:=20https://mandrillapp.com/contact/abuse=3Fid=3D30504962.ae297a03d26745569ddf3718bc0d083e?=
X-Mandrill-User: md_30504962
Feedback-ID: 30504962:30504962.20260410:md
Date: Fri, 10 Apr 2026 15:03:57 +0000
MIME-Version: 1.0
Content-Type: text/plain; charset=utf-8
Content-Transfer-Encoding: 7bit
X-purgate-ID: tlsNG-d25034/1775833438-FE350A3D-E2F968E1/0/0
X-purgate-type: clean
X-purgate-size: 12267

This change makes use of the new option 'hotplug' for host PCI devices
passthrough'd to the guest. If hotplug=0 is used in the pci device
configuration table, the device will be attached to the guest using the
Qemu command line as '-device xen-pci-passthrough,hostaddr=...'

The host device configuration is passed to the -device option as a json
array, just like it's done for hotplug using QMP. The json array is
created by a new internal function libxl__device_pci_get_qmp_json() that
is also used by pci_add_qmp_device_add().

Then, instead of sending the 'device_add' command, the device_add
callback is called to perform the 'query-pci' check to make sure the
passthrough'd device is present.

In the same way at shutdown, the device is not removed using QMP and
only the pci_remove_done() function is called.

As with QMP, the use of the 'hotplug=0' option honors the 'seize' option
by adding the PCI device to the assignable list if needed. This mimics
what is done in libxl__device_pci_add() with regards to seize option and
the assignable PCI device list. This allows to display a proper error
message if the device is not assignable before Qemu starts.
To do so the function pciback_dev_is_assigned() has been renamed as
libxl__pciback_dev_is_assigned() and made available internally, as well
as libxl__device_pci_assignable_add(). Also, libxl_pci_assignable() is
now exported in libxl.h and renamed as libxl_device_pci_assignable()
since its prototype looks like the other libxl_device_pci_*() APIs.

Example use:
 pci = [ "00:03.0,seize=1,hotplug=0" ]

Signed-off-by: Thierry Escande <thierry.escande@vates.tech>
---
v2:
- Add support for YAJL json parser

v3:
- Move code block for device command line parameters creation to a
  correct place.
- Better handling of PCI device assignation check to display the correct
  error message if the device is not assignable.
---
 tools/include/libxl.h             |  1 +
 tools/libs/light/libxl_dm.c       | 85 +++++++++++++++++++++++++++++++
 tools/libs/light/libxl_internal.h |  7 +++
 tools/libs/light/libxl_pci.c      | 57 ++++++++++++++-------
 4 files changed, 132 insertions(+), 18 deletions(-)

diff --git a/tools/include/libxl.h b/tools/include/libxl.h
index 7c098edab6..efd2664a90 100644
--- a/tools/include/libxl.h
+++ b/tools/include/libxl.h
@@ -2666,6 +2666,7 @@ int libxl_device_pci_assignable_add(libxl_ctx *ctx, libxl_device_pci *pci, int r
 int libxl_device_pci_assignable_remove(libxl_ctx *ctx, libxl_device_pci *pci, int rebind);
 libxl_device_pci *libxl_device_pci_assignable_list(libxl_ctx *ctx, int *num);
 void libxl_device_pci_assignable_list_free(libxl_device_pci *list, int num);
+bool libxl_device_pci_assignable(libxl_ctx *ctx, libxl_device_pci *pci);
 
 /* CPUID handling */
 int libxl_cpuid_parse_config(libxl_cpuid_policy_list *cpuid, const char* str);
diff --git a/tools/libs/light/libxl_dm.c b/tools/libs/light/libxl_dm.c
index 511ec76a65..28e4adbd4f 100644
--- a/tools/libs/light/libxl_dm.c
+++ b/tools/libs/light/libxl_dm.c
@@ -1798,6 +1798,91 @@ static int libxl__build_device_model_args_new(libxl__gc *gc,
             break;
         }
 
+        if (guest_config->num_pcidevs) {
+            libxl_device_pci *pci;
+            libxl__json_object *qmp_json;
+            char *json_str;
+#ifdef HAVE_LIBJSONC
+            json_object *jso;
+            const char *buf;
+#elif defined(HAVE_LIBYAJL)
+            yajl_gen hand;
+            /* memory for 'buf' is owned by 'hand' */
+            const unsigned char *buf;
+            libxl_yajl_length len;
+#else
+#           error Missing JSON library
+#endif
+
+            for (i = 0; i < guest_config->num_pcidevs; i++) {
+                pci = &guest_config->pcidevs[i];
+
+                if (pci->hotplug)
+                    continue;
+
+                if (pci->seize && !libxl__pciback_dev_is_assigned(gc, pci)) {
+                    rc = libxl__device_pci_assignable_add(gc, pci, 1);
+                    if (rc)
+                        return rc;
+                }
+
+                if (!libxl_device_pci_assignable(libxl__gc_owner(gc), pci)) {
+                    LOGD(ERROR, guest_domid, "PCI device %x:%x:%x.%x is not assignable",
+                         pci->domain, pci->bus, pci->dev, pci->func);
+                    return ERROR_FAIL;
+                }
+
+                qmp_json = libxl__device_pci_get_qmp_json(gc, pci);
+
+#ifdef HAVE_LIBJSONC
+                rc = libxl__json_object_to_json_object(gc, &jso, qmp_json);
+                if (rc)
+                    return rc;
+
+                buf = json_object_to_json_string_ext(jso,
+                                                     JSON_C_TO_STRING_PLAIN);
+                if (!buf) {
+                    json_object_put(jso);
+                    return ERROR_NOMEM;
+                }
+#elif defined(HAVE_LIBYAJL)
+                hand = libxl_yajl_gen_alloc(NULL);
+                if (!hand) {
+                    return ERROR_NOMEM;
+                }
+#if HAVE_YAJL_V2
+                /* Disable beautify for data sent to QEMU */
+                yajl_gen_config(hand, yajl_gen_beautify, 0);
+#endif
+
+                rc = libxl__json_object_to_yajl_gen(gc, hand, qmp_json);
+                if (rc) {
+                    yajl_gen_free(hand);
+                    return rc;
+                }
+
+                rc = yajl_gen_get_buf(hand, &buf, &len);
+                if (rc != yajl_gen_status_ok) {
+                    yajl_gen_free(hand);
+                    return rc;
+                }
+#endif
+
+                json_str = libxl__strdup(gc, (const char *)buf);
+                if (json_str)
+                    flexarray_vappend(dm_args, "-device", json_str, NULL);
+
+#ifdef HAVE_LIBJSONC
+                json_object_put(jso);
+#elif defined(HAVE_LIBYAJL)
+                yajl_gen_free(hand);
+#endif
+
+                if (!json_str)
+                    return ERROR_NOMEM;
+            }
+        }
+
         if (state->dm_runas) {
             if (qemu_opts->have_runwith_user) {
                 flexarray_append_pair(dm_args, "-run-with",
diff --git a/tools/libs/light/libxl_internal.h b/tools/libs/light/libxl_internal.h
index b65e0064b9..cab2ab4526 100644
--- a/tools/libs/light/libxl_internal.h
+++ b/tools/libs/light/libxl_internal.h
@@ -1729,6 +1729,13 @@ _hidden int libxl__device_pci_setdefault(libxl__gc *gc, uint32_t domid,
                                          libxl_device_pci *pci, bool hotplug);
 _hidden bool libxl__is_igd_vga_passthru(libxl__gc *gc,
                                         const libxl_domain_config *d_config);
+_hidden libxl__json_object *libxl__device_pci_get_qmp_json(libxl__gc *gc,
+                                                         libxl_device_pci *pci);
+_hidden int libxl__pciback_dev_is_assigned(libxl__gc *gc,
+                                           libxl_device_pci *pci);
+_hidden int libxl__device_pci_assignable_add(libxl__gc *gc,
+                                             libxl_device_pci *pci,
+                                             int rebind);
 
 /* from libxl_dtdev */
 
diff --git a/tools/libs/light/libxl_pci.c b/tools/libs/light/libxl_pci.c
index 49d272d0de..07d005e71d 100644
--- a/tools/libs/light/libxl_pci.c
+++ b/tools/libs/light/libxl_pci.c
@@ -686,7 +686,7 @@ out:
     return rc;
 }
 
-static int pciback_dev_is_assigned(libxl__gc *gc, libxl_device_pci *pci)
+int libxl__pciback_dev_is_assigned(libxl__gc *gc, libxl_device_pci *pci)
 {
     char * spath;
     int rc;
@@ -755,9 +755,9 @@ static int pciback_dev_unassign(libxl__gc *gc, libxl_device_pci *pci)
     return 0;
 }
 
-static int libxl__device_pci_assignable_add(libxl__gc *gc,
-                                            libxl_device_pci *pci,
-                                            int rebind)
+int libxl__device_pci_assignable_add(libxl__gc *gc,
+                                     libxl_device_pci *pci,
+                                     int rebind)
 {
     libxl_ctx *ctx = libxl__gc_owner(gc);
     unsigned dom, bus, dev, func;
@@ -798,7 +798,7 @@ static int libxl__device_pci_assignable_add(libxl__gc *gc,
     }
 
     /* Check to see if it's already assigned to pciback */
-    rc = pciback_dev_is_assigned(gc, pci);
+    rc = libxl__pciback_dev_is_assigned(gc, pci);
     if ( rc < 0 ) {
         return ERROR_FAIL;
     }
@@ -913,7 +913,7 @@ static int libxl__device_pci_assignable_remove(libxl__gc *gc,
     }
 
     /* Unbind from pciback */
-    if ( (rc = pciback_dev_is_assigned(gc, pci)) < 0 ) {
+    if ( (rc = libxl__pciback_dev_is_assigned(gc, pci)) < 0 ) {
         return ERROR_FAIL;
     } else if ( rc ) {
         pciback_dev_unassign(gc, pci);
@@ -1098,16 +1098,10 @@ out:
     pci_add_dm_done(egc, pas, rc); /* must be last */
 }
 
-static void pci_add_qmp_device_add(libxl__egc *egc, pci_add_state *pas)
+libxl__json_object *libxl__device_pci_get_qmp_json(libxl__gc *gc,
+                                                   libxl_device_pci *pci)
 {
-    STATE_AO_GC(pas->aodev->ao);
     libxl__json_object *args = NULL;
-    int rc;
-
-    /* Convenience aliases */
-    libxl_domid domid = pas->domid;
-    libxl_device_pci *pci = &pas->pci;
-    libxl__ev_qmp *const qmp = &pas->qmp;
 
     libxl__qmp_param_add_string(gc, &args, "driver",
                                 "xen-pci-passthrough");
@@ -1134,11 +1128,30 @@ static void pci_add_qmp_device_add(libxl__egc *egc, pci_add_state *pas)
     if (pci->permissive)
         libxl__qmp_param_add_bool(gc, &args, "permissive", true);
 
+    return args;
+}
+
+static void pci_add_qmp_device_add(libxl__egc *egc, pci_add_state *pas)
+{
+    STATE_AO_GC(pas->aodev->ao);
+    libxl__json_object *args = NULL;
+    int rc = 0;
+
+    /* Convenience aliases */
+    libxl_domid domid = pas->domid;
+    libxl_device_pci *pci = &pas->pci;
+    libxl__ev_qmp *const qmp = &pas->qmp;
+
+    args = libxl__device_pci_get_qmp_json(gc, pci);
+
     qmp->ao = pas->aodev->ao;
     qmp->domid = domid;
     qmp->payload_fd = -1;
     qmp->callback = pci_add_qmp_device_add_cb;
-    rc = libxl__ev_qmp_send(egc, qmp, "device_add", args);
+    if (pci->hotplug)
+        rc = libxl__ev_qmp_send(egc, qmp, "device_add", args);
+    else
+        pci_add_qmp_device_add_cb(egc, qmp, NULL, 0);
     if (rc) goto out;
     return;
 
@@ -1509,7 +1522,7 @@ int libxl_device_pci_add(libxl_ctx *ctx, uint32_t domid,
     return AO_INPROGRESS;
 }
 
-static bool libxl_pci_assignable(libxl_ctx *ctx, libxl_device_pci *pci)
+bool libxl_device_pci_assignable(libxl_ctx *ctx, libxl_device_pci *pci)
 {
     libxl_device_pci *pcis;
     int num;
@@ -1572,13 +1585,13 @@ void libxl__device_pci_add(libxl__egc *egc, uint32_t domid,
     rc = libxl__device_pci_setdefault(gc, domid, pci, !starting);
     if (rc) goto out;
 
-    if (pci->seize && !pciback_dev_is_assigned(gc, pci)) {
+    if (pci->seize && !libxl__pciback_dev_is_assigned(gc, pci)) {
         rc = libxl__device_pci_assignable_add(gc, pci, 1);
         if ( rc )
             goto out;
     }
 
-    if (!libxl_pci_assignable(ctx, pci)) {
+    if (!libxl_device_pci_assignable(ctx, pci)) {
         LOGD(ERROR, domid, "PCI device %x:%x:%x.%x is not assignable",
              pci->domain, pci->bus, pci->dev, pci->func);
         rc = ERROR_FAIL;
@@ -1820,6 +1833,14 @@ static void do_pci_remove(libxl__egc *egc, pci_remove_state *prs)
     libxl_domain_type type = libxl__domain_type(gc, domid);
     libxl_device_pci *pci = &prs->pci;
     int rc, num;
+
+    /* Passthrough'd device has been passed to Qemu command line so there is
+     * no need to remove it via QMP */
+    if (!pci->hotplug) {
+        pci_remove_done(egc, prs, 0);
+        return;
+    }
+
     pcis = libxl_device_pci_list(ctx, domid, &num);
     if (!pcis) {
         rc = ERROR_FAIL;
-- 
2.53.0



--
Thierry Escande | Vates XCP-ng Developer

XCP-ng & Xen Orchestra - Vates solutions

web: https://vates.tech



From xen-devel-bounces@lists.xenproject.org Fri Apr 10 15:04:00 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Fri, 10 Apr 2026 15:04:00 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1279247.1563753 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wBDOf-0003iD-QS; Fri, 10 Apr 2026 15:03:49 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1279247.1563753; Fri, 10 Apr 2026 15:03: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 1wBDOf-0003i6-M8; Fri, 10 Apr 2026 15:03:49 +0000
Received: by outflank-mailman (input) for mailman id 1279247;
 Fri, 10 Apr 2026 15:03:48 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <bounce-md_30504962.69d91151.v1-e76f9c812507451585636239d8b3ff11@bounce.vates.tech>)
 id 1wBDOe-0003i0-02
 for xen-devel@lists.xenproject.org; Fri, 10 Apr 2026 15:03:48 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wBDOd-00EvpU-Br
 for xen-devel@lists.xenproject.org; Fri, 10 Apr 2026 17:03:47 +0200
Received: from [10.42.69.2] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1) (envelope-from
 <bounce-md_30504962.69d91151.v1-e76f9c812507451585636239d8b3ff11@bounce.vates.tech>)
 id 69d91146-5cb7-0a2a0a5109dd-0a2a4502aab2-36
 for <xen-devel@lists.xenproject.org>; Fri, 10 Apr 2026 17:03:47 +0200
Received: from [198.2.187.14] (helo=mail187-14.suw11.mandrillapp.com)
 by tlsNG-720697.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.0)
 (envelope-from
 <bounce-md_30504962.69d91151.v1-e76f9c812507451585636239d8b3ff11@bounce.vates.tech>)
 id 69d91152-42fa-0a2a45020019-c602bb0e169f-3
 for <xen-devel@lists.xenproject.org>; Fri, 10 Apr 2026 17:03:47 +0200
Received: from pmta09.mandrill.prod.suw01.rsglab.com (localhost [127.0.0.1])
 by mail187-14.suw11.mandrillapp.com (Mailchimp) with ESMTP id
 4fsg6n5hwMz8XS6mc
 for <xen-devel@lists.xenproject.org>; Fri, 10 Apr 2026 15:03:45 +0000 (GMT)
Received: from [37.26.189.201] by mandrillapp.com id
 e76f9c812507451585636239d8b3ff11; Fri, 10 Apr 2026 15:03: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=mte1 header.d=mandrillapp.com header.i="@mandrillapp.com" header.h="From:Subject:To:Cc:Message-Id:Feedback-ID:Date:MIME-Version:Content-Type:Content-Transfer-Encoding"; dkim=pass header.s=mte1 header.d=vates.tech header.i="thierry.escande@vates.tech" header.h="From:Subject:To:Cc:Message-Id:Feedback-ID:Date:MIME-Version:Content-Type:Content-Transfer-Encoding"
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=mandrillapp.com;
	s=mte1; t=1775833425; x=1776103425;
	bh=9OW/2hjgr5no2WPwd7Dtyhno1ODNPbzpH/8YCAXQ9Vk=;
	h=From:Subject:To:Cc:Message-Id:Feedback-ID:Date:MIME-Version:
	 Content-Type:Content-Transfer-Encoding:CC:Date:Subject:From;
	b=s3lqZrO17OfxWadpOXgQ4gFi0VDvGEu+MUrgn9B8zRWkQKcQ2kD904g3qGpoladxe
	 xFlJRn8BT/f4VU7RLv8wj/+cnVRTPosN5bC5xXe2RwXaLGXQn/99JJ+VJDHeBnx8oH
	 rD5lUsapNbxTjXpy8XGjevA8wU9SILn6FJpw/qtO9YCDC0hVWdfaY+wgKkLNJ6STq5
	 AFLmE+rw8ZnqfzFSHwo4kLXwBDD++ohYsfl61Zq3KSImJoWiziaRdg3QX3TlEqoPXi
	 A6zYsxndfQoj49iNh04UMV29H5Np+xgF7QfOhgQ1ab3SHbjiHqdNiX4T+BfMXlImN8
	 CbvzAr5mLwNSw==
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=vates.tech; s=mte1;
	t=1775833425; x=1776093925; i=thierry.escande@vates.tech;
	bh=9OW/2hjgr5no2WPwd7Dtyhno1ODNPbzpH/8YCAXQ9Vk=;
	h=From:Subject:To:Cc:Message-Id:Feedback-ID:Date:MIME-Version:
	 Content-Type:Content-Transfer-Encoding:CC:Date:Subject:From;
	b=1Nim0Iqpd25JmKGUpuarsrJJiWCzr0aGAti7V45jbykMUP6fQKi7CPcACfp6uxyYx
	 qvZseWXVi4yomQe4aJAVmi1u0SuycfPAxByqXuDUjZlV1mQDzU5MCp5rPzrK95ofdp
	 +ZLH4HESBbp1wM3W8BQ1n16CPbiWnmkHQZLvi/sJvymgOWeKP3TcYu42Uf0UvmFAtt
	 qi1kfIPhSGppd4Qh3mWwRIwARueUkp58THypAQCHKZ6VOajdm7HdlUeCFowF4GdDwR
	 PKYD5ZT9XH0MJ86E/pqVKjL/TFmyKYekIu34s89GXzWq1uTf3iWxek+Egyuok6JrIO
	 +gjwbmz9zX52w==
From: "Thierry Escande" <thierry.escande@vates.tech>
Subject: =?utf-8?Q?[RFC=20PATCH=20v3=200/3]=20xl:=20Allow=20PCI=20devices=20to=20be=20passthrough'd=20via=20Qemu=20command=20line?=
X-Mailer: git-send-email 2.53.0
X-Bm-Disclaimer: Yes
X-Bm-Milter-Handled: 4ffbd6c1-ee69-4e1b-aabd-f977039bd3e2
X-Bm-Transport-Timestamp: 1775833424967
To: xen-devel@lists.xenproject.org
Cc: "Thierry Escande" <thierry.escande@vates.tech>, "Anthony PERARD" <anthony.perard@vates.tech>, "Juergen Gross" <jgross@suse.com>, "=?utf-8?Q?Daniel=20P=20.=20Berrang=C3=A9?=" <berrange@redhat.com>, "=?utf-8?Q?Marek=20Marczykowski-G=C3=B3recki?=" <marmarek@invisiblethingslab.com>
Message-Id: <20260410150333.1533568-1-thierry.escande@vates.tech>
X-Native-Encoded: 1
X-Report-Abuse: =?UTF-8?Q?Please=20forward=20a=20copy=20of=20this=20message,=20including=20all=20headers,=20to=20abuse@mandrill.com.=20You=20can=20also=20report=20abuse=20here:=20https://mandrillapp.com/contact/abuse=3Fid=3D30504962.e76f9c812507451585636239d8b3ff11?=
X-Mandrill-User: md_30504962
Feedback-ID: 30504962:30504962.20260410:md
Date: Fri, 10 Apr 2026 15:03:45 +0000
MIME-Version: 1.0
Content-Type: text/plain; charset=utf-8
Content-Transfer-Encoding: 7bit
X-purgate-ID: tlsNG-720697/1775833427-ADB3FCD1-BE51F373/0/0
X-purgate-type: clean
X-purgate-size: 2693

This series adds support for a new 'hotplug' option for PCI devices to be
passthrough'd to guests.

The current mechanism for device passthrough uses QMP device_add command
to hot-plug PCI devices to the guest Qemu instance. This is an issue for
guests running on Q35 chipset (preliminary support posted at [1]) since the
Q35 PCI root bus does not support hotplug. Devices could be hotplugged to
a secondary PCI bus but Xen only support 1 PCI bus for now.

The 'hotplug' option allows to control how devices are attached to the
guest, either by using the legacy QMP mechanism (this is the default) or by
passing it directly to the Qemu command line using xen-pci-passthrough
device.

Example usage in cfg file:
 pci = [ "00:03.0,seize=1,hotplug=0" ]

Since Qemu -device option accepts parameters in json format, this
patchset adds a new internal function libxl__device_pci_get_qmp_json() that
generates the device json object used for both QMP hotplug and command line
passing.

Also, to handle the assignable PCI device list, the function
libxl_pci_assignable() is renamed as libxl_device_pci_assignable() and is
made available from libxl.h for access in libxl_dm.c. 2 other functions are
also exported internally: libxl__pciback_dev_is_assigned() and
libxl__device_pci_assignable_add().

This has been successfully tested on Xen 4.22-dev and Qemu 10.0 running
Debian VMs in both Bios and UEFI mode with a passthrough'd nvme disk.
Disabling the hotplug mechanism might be made mandatory for Q35 machines
later, once Q35 support is merged upstream.

[1] https://lore.kernel.org/xen-devel/20260313163455.790692-1-thierry.escande@vates.tech/

Changes in v2:
- Add support for YAJL json parser

Changes in v3:
- Move code block of device command line parameters creation
- Better handling of pci device assignation

Thierry Escande (3):
  xl: Add pci device hotplug option
  libxl: Allow PCI device passthrough using -device Qemu command line
  docs: provide description for pci hotplug option

 docs/man/xl-pci-configuration.5.pod | 17 ++++++
 docs/man/xl.cfg.5.pod.in            |  6 ++
 tools/include/libxl.h               |  1 +
 tools/libs/light/libxl_dm.c         | 85 +++++++++++++++++++++++++++++
 tools/libs/light/libxl_internal.h   |  7 +++
 tools/libs/light/libxl_pci.c        | 57 +++++++++++++------
 tools/libs/light/libxl_types.idl    |  1 +
 tools/libs/util/libxlu_pci.c        |  2 +
 tools/xl/xl_parse.c                 |  5 ++
 9 files changed, 163 insertions(+), 18 deletions(-)

-- 
2.53.0



--
Thierry Escande | Vates XCP-ng Developer

XCP-ng & Xen Orchestra - Vates solutions

web: https://vates.tech



From xen-devel-bounces@lists.xenproject.org Fri Apr 10 15:04:00 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Fri, 10 Apr 2026 15:04:00 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1279248.1563761 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wBDOk-0003w4-4Q; Fri, 10 Apr 2026 15:03:54 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1279248.1563761; Fri, 10 Apr 2026 15:03: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 1wBDOk-0003vw-17; Fri, 10 Apr 2026 15:03:54 +0000
Received: by outflank-mailman (input) for mailman id 1279248;
 Fri, 10 Apr 2026 15:03:53 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <bounce-md_30504962.69d91157.v1-1b7cd7e0c2ad488cb44a75c9c4b1170f@bounce.vates.tech>)
 id 1wBDOj-0003vZ-FE
 for xen-devel@lists.xenproject.org; Fri, 10 Apr 2026 15:03:53 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wBDOi-005QoJ-RW
 for xen-devel@lists.xenproject.org; Fri, 10 Apr 2026 17:03:52 +0200
Received: from [10.42.69.5] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1) (envelope-from
 <bounce-md_30504962.69d91157.v1-1b7cd7e0c2ad488cb44a75c9c4b1170f@bounce.vates.tech>)
 id 69d91139-2eae-0a2a0a5409dd-0a2a4505b1c6-40
 for <xen-devel@lists.xenproject.org>; Fri, 10 Apr 2026 17:03:52 +0200
Received: from [198.2.187.14] (helo=mail187-14.suw11.mandrillapp.com)
 by tlsNG-c201ff.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.0)
 (envelope-from
 <bounce-md_30504962.69d91157.v1-1b7cd7e0c2ad488cb44a75c9c4b1170f@bounce.vates.tech>)
 id 69d91157-3760-0a2a45050019-c602bb0e37d9-3
 for <xen-devel@lists.xenproject.org>; Fri, 10 Apr 2026 17:03:52 +0200
Received: from pmta09.mandrill.prod.suw01.rsglab.com (localhost [127.0.0.1])
 by mail187-14.suw11.mandrillapp.com (Mailchimp) with ESMTP id
 4fsg6v1yD1z8XS3x7
 for <xen-devel@lists.xenproject.org>; Fri, 10 Apr 2026 15:03:51 +0000 (GMT)
Received: from [37.26.189.201] by mandrillapp.com id
 1b7cd7e0c2ad488cb44a75c9c4b1170f; Fri, 10 Apr 2026 15:03: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=mte1 header.d=mandrillapp.com header.i="@mandrillapp.com" header.h="From:Subject:To:Cc:Message-Id:In-Reply-To:References:Feedback-ID:Date:MIME-Version:Content-Type:Content-Transfer-Encoding"; dkim=pass header.s=mte1 header.d=vates.tech header.i="thierry.escande@vates.tech" header.h="From:Subject:To:Cc:Message-Id:In-Reply-To:References:Feedback-ID:Date:MIME-Version:Content-Type:Content-Transfer-Encoding"
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=mandrillapp.com;
	s=mte1; t=1775833431; x=1776103431;
	bh=ZKqdPVMpXtT8gh10Bvf+Ia+b2oBjvpMt/gEGKWUOgWA=;
	h=From:Subject:To:Cc:Message-Id:In-Reply-To:References:Feedback-ID:
	 Date:MIME-Version:Content-Type:Content-Transfer-Encoding:CC:Date:
	 Subject:From;
	b=RUzm0ypYZjsM3tjwMqQz4NY8RCCsHtMq4taK9jd5PbHnE4fDNACX3iodyNqT9E0GG
	 JC+KNLn/3gN0O2zq7Q/f/+dOlYK+OgJa0KvUMkZf+2EG2tQYHeEeo+TrHtAEV34tKn
	 1CBqFJhXfpTVAQN7So4S53WnSFXZRY3/EvKSO0l5Ev+RC3p78x0KkwiGRaNYOA2VnC
	 tBggTYyI47X9ia6mknJvnFF8ZpBN7DsLmI49maNZ2avy5GJN2hppyAOnmsoFq48mX7
	 t15nokIppoTzQDTA0SEA+w9wXENzF0zl18CAtettO1JAS6V6taWGa2ZXNDA3Q5NePg
	 QEqfgUXtzclUw==
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=vates.tech; s=mte1;
	t=1775833431; x=1776093931; i=thierry.escande@vates.tech;
	bh=ZKqdPVMpXtT8gh10Bvf+Ia+b2oBjvpMt/gEGKWUOgWA=;
	h=From:Subject:To:Cc:Message-Id:In-Reply-To:References:Feedback-ID:
	 Date:MIME-Version:Content-Type:Content-Transfer-Encoding:CC:Date:
	 Subject:From;
	b=RjJqQVaLkMAOrIZEXjjR3KIvv/y7fZaSbBkwtlQX7gXji2yo2x6LtVxKP827PQz0t
	 qlsPnEs/Ih56CkDGdd/jITaHWr/Qp3bl6G3pZPL7W52NVypXVupJSE4+IDJ8xPNlrt
	 KJnFngeOVLU38/xH495ANIhQBrAqk68S409xwDQIs4z+xNzbcufYkWZIn3d7hSNSdg
	 DJIjir1GUbzCegIrCr7NLavlIP53Syw3eFpyPRIrfUIYKajyMGVereUnkCYOy8bxO/
	 8LkRdHDVlUt2mat5Q+pHGvIF/dyGPE2jGT7c64SIpoOLiemi1iryycHGMEZq0eWSPL
	 PkETzhOx3xOOg==
From: "Thierry Escande" <thierry.escande@vates.tech>
Subject: =?utf-8?Q?[RFC=20PATCH=20v3=201/3]=20xl:=20Add=20pci=20device=20hotplug=20option?=
X-Mailer: git-send-email 2.53.0
X-Bm-Disclaimer: Yes
X-Bm-Milter-Handled: 4ffbd6c1-ee69-4e1b-aabd-f977039bd3e2
X-Bm-Transport-Timestamp: 1775833430450
To: xen-devel@lists.xenproject.org
Cc: "Thierry Escande" <thierry.escande@vates.tech>, "Anthony PERARD" <anthony.perard@vates.tech>, "Juergen Gross" <jgross@suse.com>, "=?utf-8?Q?Daniel=20P=20.=20Berrang=C3=A9?=" <berrange@redhat.com>, "=?utf-8?Q?Marek=20Marczykowski-G=C3=B3recki?=" <marmarek@invisiblethingslab.com>
Message-Id: <20260410150333.1533568-2-thierry.escande@vates.tech>
In-Reply-To: <20260410150333.1533568-1-thierry.escande@vates.tech>
References: <20260410150333.1533568-1-thierry.escande@vates.tech>
X-Native-Encoded: 1
X-Report-Abuse: =?UTF-8?Q?Please=20forward=20a=20copy=20of=20this=20message,=20including=20all=20headers,=20to=20abuse@mandrill.com.=20You=20can=20also=20report=20abuse=20here:=20https://mandrillapp.com/contact/abuse=3Fid=3D30504962.1b7cd7e0c2ad488cb44a75c9c4b1170f?=
X-Mandrill-User: md_30504962
Feedback-ID: 30504962:30504962.20260410:md
Date: Fri, 10 Apr 2026 15:03:51 +0000
MIME-Version: 1.0
Content-Type: text/plain; charset=utf-8
Content-Transfer-Encoding: 7bit
X-purgate-ID: tlsNG-c201ff/1775833432-2252396F-A071C152/0/0
X-purgate-type: clean
X-purgate-size: 2930

This option is used to passthrough PCI devices using the Qemu command
line (-device driver,...) instead of the QMP hot-plug mechanism.

This is needed for Q35 support since its PCI root bus doesn't support
hotplugging.

If not specified, the default behavior is to use hotplug via QMP.

Signed-off-by: Thierry Escande <thierry.escande@vates.tech>
---
v2: no change
v3: no change
---
 tools/libs/light/libxl_types.idl | 1 +
 tools/libs/util/libxlu_pci.c     | 2 ++
 tools/xl/xl_parse.c              | 5 +++++
 3 files changed, 8 insertions(+)

diff --git a/tools/libs/light/libxl_types.idl b/tools/libs/light/libxl_types.idl
index a7893460f0..aca0e93793 100644
--- a/tools/libs/light/libxl_types.idl
+++ b/tools/libs/light/libxl_types.idl
@@ -922,6 +922,7 @@ libxl_device_pci = Struct("device_pci", [
     ("seize", bool),
     ("rdm_policy", libxl_rdm_reserve_policy),
     ("name", string),
+    ("hotplug", bool),
     ])
 
 libxl_device_rdm = Struct("device_rdm", [
diff --git a/tools/libs/util/libxlu_pci.c b/tools/libs/util/libxlu_pci.c
index 294482c6d7..f6440c878b 100644
--- a/tools/libs/util/libxlu_pci.c
+++ b/tools/libs/util/libxlu_pci.c
@@ -192,6 +192,8 @@ int xlu_pci_parse_spec_string(XLU_Config *cfg, libxl_device_pci *pci,
             name_present = true;
             pci->name = strdup(val);
             if (!pci->name) ret = ERROR_NOMEM;
+        } else if (!strcmp(key, "hotplug")) {
+            pci->hotplug = atoi(val);
         } else {
             XLU__PCI_ERR(cfg, "Unknown PCI_SPEC_STRING option: %s", key);
             ret = ERROR_INVAL;
diff --git a/tools/xl/xl_parse.c b/tools/xl/xl_parse.c
index 48c72dce9c..7ea2a76662 100644
--- a/tools/xl/xl_parse.c
+++ b/tools/xl/xl_parse.c
@@ -1361,6 +1361,7 @@ void parse_config_data(const char *config_source,
     int pci_msitranslate = 0;
     int pci_permissive = 0;
     int pci_seize = 0;
+    int pci_hotplug = 1;
     int i, e;
     int num_llc_colors;
     int num_xs_quota;
@@ -1699,6 +1700,9 @@ void parse_config_data(const char *config_source,
     if (!xlu_cfg_get_long (config, "pci_seize", &l, 0))
         pci_seize = l;
 
+    if (!xlu_cfg_get_long (config, "pci_hotplug", &l, 0))
+        pci_hotplug = l;
+
     if (!xlu_cfg_get_string(config, "rdm", &buf, 0)) {
         libxl_rdm_reserve rdm;
         if (!xlu_rdm_parse(config, &rdm, buf)) {
@@ -1720,6 +1724,7 @@ void parse_config_data(const char *config_source,
             pci->power_mgmt = pci_power_mgmt;
             pci->permissive = pci_permissive;
             pci->seize = pci_seize;
+            pci->hotplug = pci_hotplug;
             /*
              * Like other pci option, the per-device policy always follows
              * the global policy by default.
-- 
2.53.0



--
Thierry Escande | Vates XCP-ng Developer

XCP-ng & Xen Orchestra - Vates solutions

web: https://vates.tech



From xen-devel-bounces@lists.xenproject.org Fri Apr 10 15:04:08 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Fri, 10 Apr 2026 15:04:08 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1279252.1563779 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wBDOy-0004XU-I3; Fri, 10 Apr 2026 15:04:08 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1279252.1563779; Fri, 10 Apr 2026 15:04: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 1wBDOy-0004XJ-Ed; Fri, 10 Apr 2026 15:04:08 +0000
Received: by outflank-mailman (input) for mailman id 1279252;
 Fri, 10 Apr 2026 15:04:07 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <bounce-md_30504962.69d91165.v1-d6430dce3e4b4bb081ddae9aa27b1492@bounce.vates.tech>)
 id 1wBDOx-0004W7-CM
 for xen-devel@lists.xenproject.org; Fri, 10 Apr 2026 15:04:07 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wBDOw-00G4Yb-Ok
 for xen-devel@lists.xenproject.org; Fri, 10 Apr 2026 17:04:06 +0200
Received: from [10.42.69.9] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1) (envelope-from
 <bounce-md_30504962.69d91165.v1-d6430dce3e4b4bb081ddae9aa27b1492@bounce.vates.tech>)
 id 69d91150-bab6-0a2a0a5309dd-0a2a45099438-34
 for <xen-devel@lists.xenproject.org>; Fri, 10 Apr 2026 17:04:06 +0200
Received: from [198.2.187.1] (helo=mail187-1.suw11.mandrillapp.com)
 by tlsNG-bad1c0.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.0)
 (envelope-from
 <bounce-md_30504962.69d91165.v1-d6430dce3e4b4bb081ddae9aa27b1492@bounce.vates.tech>)
 id 69d91165-bf79-0a2a45090019-c602bb0143b2-3
 for <xen-devel@lists.xenproject.org>; Fri, 10 Apr 2026 17:04:06 +0200
Received: from pmta09.mandrill.prod.suw01.rsglab.com (localhost [127.0.0.1])
 by mail187-1.suw11.mandrillapp.com (Mailchimp) with ESMTP id 4fsg791v2yzBsV34l
 for <xen-devel@lists.xenproject.org>; Fri, 10 Apr 2026 15:04:05 +0000 (GMT)
Received: from [37.26.189.201] by mandrillapp.com id
 d6430dce3e4b4bb081ddae9aa27b1492; Fri, 10 Apr 2026 15:04: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=mte1 header.d=mandrillapp.com header.i="@mandrillapp.com" header.h="From:Subject:To:Cc:Message-Id:In-Reply-To:References:Feedback-ID:Date:MIME-Version:Content-Type:Content-Transfer-Encoding"; dkim=pass header.s=mte1 header.d=vates.tech header.i="thierry.escande@vates.tech" header.h="From:Subject:To:Cc:Message-Id:In-Reply-To:References:Feedback-ID:Date:MIME-Version:Content-Type:Content-Transfer-Encoding"
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=mandrillapp.com;
	s=mte1; t=1775833445; x=1776103445;
	bh=jr8KFyjmD49J7UOWjFVMqFhnqGaZw9GrcOVJv0UGtBY=;
	h=From:Subject:To:Cc:Message-Id:In-Reply-To:References:Feedback-ID:
	 Date:MIME-Version:Content-Type:Content-Transfer-Encoding:CC:Date:
	 Subject:From;
	b=LvD22wV59Xv0dkRwiBnQR+ufjb4doq6Kg3JDB8P6FkuPB2vGYbtMVTDn2ecS3gcbW
	 M/zuSowQ3RPwuSPFVRt32w1INs5JwYL12bFI+3y7MY2AYt9xMbzRzEReKK5lt1CVTm
	 oBL47ahtpuO8khvUhDi6TvzttJVTKdO0ofZwR9yj754SmosxmLjdwMtMTEwe29DMzC
	 ziQZyf8k4bJpnAiyXYKHnrOhtn/ZH9sPWR99jRxgw8UOPf6u4lgqAXEDBqqduecO0a
	 dZZQ25R7BCMW4wmkK1Kzh7z3si3G9yuWGLsn3oKzHJ4k8edKzs4QAHVdr0vnkZhZT0
	 3l6voTFDNH4JA==
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=vates.tech; s=mte1;
	t=1775833445; x=1776093945; i=thierry.escande@vates.tech;
	bh=jr8KFyjmD49J7UOWjFVMqFhnqGaZw9GrcOVJv0UGtBY=;
	h=From:Subject:To:Cc:Message-Id:In-Reply-To:References:Feedback-ID:
	 Date:MIME-Version:Content-Type:Content-Transfer-Encoding:CC:Date:
	 Subject:From;
	b=K+IAFIljLDaenGDIZpVAj4OhrjiM1gaTMVcA2SB/msyQmbEMyFET8Zrj/yYb2SEhd
	 reKhlmU5aKBlOBjjJgWcKwvycw/8rpk1ICCoyoLDJtytg2ex0tpietLonftNdzF3Y/
	 /g0+FKSi8kPTlC/iC8NC8m535bC1LPxDJ3vv0hWncBWw2ovCX6fj2y/CnSRg5nzQ45
	 ER5mrV8L0bGowjqv8SvcZ5k33TyyhSc9/vYzFo1/X9ozVI19jezML4nAkhtW1l1sJu
	 wCRhSO5Yi3CSvc+jUgcg10SmX/YtmnePMDYFvMTmr58cN94h5TrEtZUrgEezpL/aBq
	 QdWWiegHg3iTQ==
From: "Thierry Escande" <thierry.escande@vates.tech>
Subject: =?utf-8?Q?[RFC=20PATCH=20v3=203/3]=20docs:=20provide=20description=20for=20pci=20hotplug=20option?=
X-Mailer: git-send-email 2.53.0
X-Bm-Disclaimer: Yes
X-Bm-Milter-Handled: 4ffbd6c1-ee69-4e1b-aabd-f977039bd3e2
X-Bm-Transport-Timestamp: 1775833442211
To: xen-devel@lists.xenproject.org
Cc: "Thierry Escande" <thierry.escande@vates.tech>, "Anthony PERARD" <anthony.perard@vates.tech>, "Juergen Gross" <jgross@suse.com>, "=?utf-8?Q?Daniel=20P=20.=20Berrang=C3=A9?=" <berrange@redhat.com>, "=?utf-8?Q?Marek=20Marczykowski-G=C3=B3recki?=" <marmarek@invisiblethingslab.com>
Message-Id: <20260410150333.1533568-4-thierry.escande@vates.tech>
In-Reply-To: <20260410150333.1533568-1-thierry.escande@vates.tech>
References: <20260410150333.1533568-1-thierry.escande@vates.tech>
X-Native-Encoded: 1
X-Report-Abuse: =?UTF-8?Q?Please=20forward=20a=20copy=20of=20this=20message,=20including=20all=20headers,=20to=20abuse@mandrill.com.=20You=20can=20also=20report=20abuse=20here:=20https://mandrillapp.com/contact/abuse=3Fid=3D30504962.d6430dce3e4b4bb081ddae9aa27b1492?=
X-Mandrill-User: md_30504962
Feedback-ID: 30504962:30504962.20260410:md
Date: Fri, 10 Apr 2026 15:04:05 +0000
MIME-Version: 1.0
Content-Type: text/plain; charset=utf-8
Content-Transfer-Encoding: 7bit
X-purgate-ID: tlsNG-bad1c0/1775833446-5714D152-747EFEF2/0/0
X-purgate-type: clean
X-purgate-size: 1912

This patch adds description for the 'hotplug' PCI option, allowing
devices to be attached to the guest using the legacy QMP hotplug
mechanism or by passing them to the Qemu command line using '-device'.

Signed-off-by: Thierry Escande <thierry.escande@vates.tech>
---
v2: no change
v3: no change
---
 docs/man/xl-pci-configuration.5.pod | 17 +++++++++++++++++
 docs/man/xl.cfg.5.pod.in            |  6 ++++++
 2 files changed, 23 insertions(+)

diff --git a/docs/man/xl-pci-configuration.5.pod b/docs/man/xl-pci-configuration.5.pod
index 0691f06ad3..8b664173cb 100644
--- a/docs/man/xl-pci-configuration.5.pod
+++ b/docs/man/xl-pci-configuration.5.pod
@@ -166,6 +166,23 @@ dom0 without confirmation.  Please use with care.
 
 =back
 
+=item B<hotplug>=I<BOOLEAN>
+
+=over 4
+
+=item Description
+
+Tells L<xl(1)> to use QMP hotplug mechanism to attach assignable device to
+the guest, or to pass it via Qemu command line using
+'B<-device xen-pci-passthrough,...>'. The default is to use the legacy QMP
+mechanism.
+
+=item Default Value
+
+1
+
+=back
+
 =item B<power_mgmt>=I<BOOLEAN>
 
 =over 4
diff --git a/docs/man/xl.cfg.5.pod.in b/docs/man/xl.cfg.5.pod.in
index 3aac0bc4fb..181aaffa0f 100644
--- a/docs/man/xl.cfg.5.pod.in
+++ b/docs/man/xl.cfg.5.pod.in
@@ -1230,6 +1230,12 @@ B<(HVM only)> Changes the default value of B<power_mgmt> for all PCI
 devices passed through to this VM. See B<power_mgmt>
 above.
 
+=item B<pci_hotplug=BOOLEAN>
+
+B<(HVM only)> Changes the default value of B<hotplug> for all PCI
+devices passed through to this VM. See L<xl-pci-configuration(5)> for
+more details.
+
 =item B<gfx_passthru=BOOLEAN|"STRING">
 
 Enable graphics device PCI passthrough. This option makes an assigned
-- 
2.53.0



--
Thierry Escande | Vates XCP-ng Developer

XCP-ng & Xen Orchestra - Vates solutions

web: https://vates.tech



From xen-devel-bounces@lists.xenproject.org Fri Apr 10 15:12:19 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Fri, 10 Apr 2026 15:12:19 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1279290.1563787 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wBDWp-00078x-ES; Fri, 10 Apr 2026 15:12:15 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1279290.1563787; Fri, 10 Apr 2026 15: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 1wBDWp-00078q-Bm; Fri, 10 Apr 2026 15:12:15 +0000
Received: by outflank-mailman (input) for mailman id 1279290;
 Fri, 10 Apr 2026 15:12:13 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <Oleksii_Moisieiev@epam.com>) id 1wBDWn-00078k-Di
 for xen-devel@lists.xenproject.org; Fri, 10 Apr 2026 15:12:13 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wBDWm-00DKXG-PJ
 for xen-devel@lists.xenproject.org; Fri, 10 Apr 2026 17:12:12 +0200
Received: from [10.42.69.5] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <Oleksii_Moisieiev@epam.com>)
 id 69d9133f-2eae-0a2a0a5409dd-0a2a4505c3f8-18
 for <xen-devel@lists.xenproject.org>; Fri, 10 Apr 2026 17:12:12 +0200
Received: from [40.107.162.97]
 (helo=PA4PR04CU001.outbound.protection.outlook.com)
 by tlsNG-c201ff.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.0)
 (envelope-from <Oleksii_Moisieiev@epam.com>)
 id 69d9134c-3760-0a2a45050019-286ba261cc14-3
 for <xen-devel@lists.xenproject.org>; Fri, 10 Apr 2026 17:12:12 +0200
Received: from DU5PR03MB10263.eurprd03.prod.outlook.com (2603:10a6:10:519::5)
 by AS8PR03MB8420.eurprd03.prod.outlook.com (2603:10a6:20b:52d::22)
 with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9769.15; Fri, 10 Apr
 2026 15:12:10 +0000
Received: from DU5PR03MB10263.eurprd03.prod.outlook.com
 ([fe80::8c9e:b301:61c0:3908]) by DU5PR03MB10263.eurprd03.prod.outlook.com
 ([fe80::8c9e:b301:61c0:3908%5]) with mapi id 15.20.9769.020; Fri, 10 Apr 2026
 15:12: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=kATNyPstnasisNN3VRb0twFNTQTIsaLGlZODkMI1CM/ciA9W5CqYHazIDC0dU3XTWRlB2GUpQrMPV6F5J86z2phaaCK8rf6s/BuMpVISkLCM/EZ6BHcMwgkTIHVoGBNqXjDG1DRBIFcicewe3YKBfrkq4EjOeQ+MYESyGrSQMIk6Zzd4MliVVtzZ0ndc+pyYDg72jcg+VvDpvA5mJk2kK0P0y1YVMwy4GOAaPkO4cR4scSfj7ebLZXFAj8mwD2qJkc187D/YZp92EYA0+ziCMstIILJA1qKK6XAoEOpDc9PkZn5VkboPgRom5mzUmnrKGXRcSkhzlECj1gn1BKZUjA==
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com;
 s=arcselector10001;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1;
 bh=yNuCGUOr1cdp9tsad0r0/l5zdLk78guGqazR5193nIw=;
 b=I5Xy52mbKB2oJ8prN5nHunHXwPxgBrg3OmEGxU/B3G/TLHhI11i6dyPKTaJhcIvQJu1ZY9gPAVIv0lCyI99AnIdJ80GerUYZH6YHzoi8GDQgtDcYVyxIQjDnD4V12oiGrBMgThFZaEJ8uiCLZshu/Nswk8659nQMI9hromVg841+WXAdivfr17RlalSxZZdBTn5d1+C6qQ8WmDZHKpbrbjcTKABiyhXhNySkKXccaSq5V0QrH40fubuQu6xBeMyRUVb1aRU5oH6bTb0pnwamVROe2KoM55MIiweVjJTbsqXQFW1Nma0YBxfbOpc7eCaFGVopDyzTuXp2umivu0POQg==
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=yNuCGUOr1cdp9tsad0r0/l5zdLk78guGqazR5193nIw=;
 b=XUW6aoj63SxAD0YlPZeN9cBmAW7/Sr25mibcSjJVivEU6FOX1jnrALvsYFj6uQt3wGKouIcm4luZulYXKOG0EYaN4/+xlQtSSdsmCfAmOsYYFTLzYz0FEqy0txWjhQY8kyMsyuel2j7WcoWoDHeVjE7i3sB6qoTxpYOi99PeSh2eixSmbpvTbN9G/0BbyIDAWTa++iENY+953Ma5WnL0NJ5RCa08RKCBco6I9bGsv2YF1eeYY2VPkyBD9br7HnqoLQQf3uYynUk5PD1HUOJtX3dMv/3bMWdxCB308ZKgmAgAHQpD5UeZZRW6TEmHkdxg/EU2QlKO9NIKEbcJkwNmaA==
Authentication-Results: dkim=none (message not signed)
 header.d=none;dmarc=none action=none header.from=epam.com;
Message-ID: <ad43c0a3-a0bc-4943-b617-83200ac91ccc@epam.com>
Date: Fri, 10 Apr 2026 18:12:08 +0300
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH v2] xen/sched: rtds: re-arm repl_timer after timer
 re-initialization
To: Juergen Gross <jgross@suse.com>,
 "xen-devel@lists.xenproject.org" <xen-devel@lists.xenproject.org>
Cc: Dario Faggioli <dfaggioli@suse.com>, George Dunlap <gwd@xenproject.org>,
 Meng Xu <mengxu@cis.upenn.edu>
References: <548ea03cc3c3287b1f5dcd101b3c2990ebc08089.1775208527.git.oleksii_moisieiev@epam.com>
 <775bc23d-7cd4-43b4-9e5f-0c70204b4262@suse.com>
 <66b7eaff-f7b9-4737-b32b-ca9ff7b661c1@epam.com>
 <fd394d84-4d8c-4fe2-9e51-58041dc09c69@suse.com>
 <ff983469-db32-46fb-a18a-aed3cda06209@suse.com>
Content-Language: en-US
From: Oleksii Moisieiev <oleksii_moisieiev@epam.com>
In-Reply-To: <ff983469-db32-46fb-a18a-aed3cda06209@suse.com>
Content-Type: text/plain; charset=UTF-8; format=flowed
Content-Transfer-Encoding: 8bit
X-ClientProxiedBy: WA2P291CA0034.POLP291.PROD.OUTLOOK.COM
 (2603:10a6:1d0:1f::7) To DU5PR03MB10263.eurprd03.prod.outlook.com
 (2603:10a6:10:519::5)
MIME-Version: 1.0
X-MS-PublicTrafficType: Email
X-MS-TrafficTypeDiagnostic: DU5PR03MB10263:EE_|AS8PR03MB8420:EE_
X-MS-Office365-Filtering-Correlation-Id: 87978a41-4994-417b-a200-08de9713895a
X-MS-Exchange-SenderADCheck: 1
X-MS-Exchange-AntiSpam-Relay: 0
X-Microsoft-Antispam:
	BCL:0;ARA:13230040|1800799024|366016|376014|56012099003|18002099003|22082099003;
X-Microsoft-Antispam-Message-Info:
	cfVpXZh0m2uJK6aSwBc/v7Etvw2FNm6t9Fs5ujUFuNdN6qhMECbRe9eYsgRdWdnwKrOAtaPyR1gF4SLU/tNbF+ebGELOdux/2UnmkHj/OAT7pP13L7cTRTUt/NuaZbr0/VAbdzjlu+L1tHmWYLSXRMS7s5vZISk3UFc/Hpa397lgxs+rblrqqg6HuojM0e+XX53oJypJl8sI3XqML3Fm0PU+ZvnRWW2TgM7CMSg+CL5pp3v2yOkMY/aPxzyq5L2Blgf6zWY6/bFFJKPcuZbKpgko9cpQaKS5f2283XJA2KYl/+aWd3mV3M0M0XAzVGzNFaEuQl6mhwKM1G2GlJjiLyfsJxKKCmu3tPuRqP+ioErVUwbRT56ft/5KyhuIihDTtYji9fGGLy1clNNxM2VzDhLM6fRHKTIem+m64ixExzbOzH3oiGNZxbQsc0IaxLAwTcYoXwbxR76VAsmAcO8a313V0kWQ1bHqTofiOozm1YZ1MvzWHnXXVbnXaxcjGQkd/bOsvm4wl2E99eoyGcRUMnNIWM3Y8Om96tmP/2mfjaAqTr19AAe/8livU6crDcS7DMxOA5uWKbOuZRQAUrGP1Gb23bhDC1d+4E6fizLrS4Nb09HkS3vGNygl4DmhImmDRAOPbyntsOd4bHETQ8mEr0xBSoD6Dk05HvjkBR+0QFeqpcHOhK+VOOl5kCC32D/9BFcrBAIfAgVU2P6aQCMYkFkIjheBOHbeiP3W3RhuSus=
X-Forefront-Antispam-Report:
	CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:DU5PR03MB10263.eurprd03.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(1800799024)(366016)(376014)(56012099003)(18002099003)(22082099003);DIR:OUT;SFP:1102;
X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1
X-MS-Exchange-AntiSpam-MessageData-0:
	=?utf-8?B?Z1FkMWNZVi9vRmVOKzRxUGYvQkJqVWxwa0l5UTF3b3lRaXZ6VkxuZjdFd1hN?=
 =?utf-8?B?S09yNGJlWWRZNXpWUGwvNVpiM1ROVXBhOUxXaFNtVWg1cExsUHBYK0haZTZZ?=
 =?utf-8?B?Y2R3Y25mZ05mUGdSdGM1V3NxTjlSSWZ4TWIzWFU3aUJPUWthckdHaHh6TUtC?=
 =?utf-8?B?WGZEK2xLWGpkRG9xTTdIY1hsNHVCdHdvTjFZcW5LdlV3cFl1YVFsYXcyT0dK?=
 =?utf-8?B?d0duMStSQzlBVVJ6UUZwOTdRRnFlTWdJaHF3N3NyTU03T3R6OVpwVFBocHJ6?=
 =?utf-8?B?YkwwNVhJaVJkR0h4Lzl1SHdGMVlkdFhQRHVvZ2YxRkR2MUg5WVUwNkNxQjB3?=
 =?utf-8?B?U05LQlRKQ01IQmNHSnA4UHRZY29IMkZBYlZxbU1mRGdaVXNBZGwrNmNpQ3FQ?=
 =?utf-8?B?THEzQ29uQThOOHpuTmpMN3hNYzN3L0hFOGpkWWV1SExQRWwzcW1iUnN5S0ti?=
 =?utf-8?B?cmJmL05YNVREN2tCOG5jSmU0cGhneEtxVTNyTWdoQ3hUei9ybk5aMzFRQWVa?=
 =?utf-8?B?dUFJWmlHUVFTMVJYRUIrM1NtbFdpWXNzT09za3JDZEJ0eFo2VGhoeWQxRitD?=
 =?utf-8?B?eENFcXRSYmFXdVNTNnE1Tks2ek1wcXIyeU5FWUdaUHF4M0tBS2xOenpSV082?=
 =?utf-8?B?a3hNNHZLVk1ORWV5enh6UUJvZ3FqVmRMRHZoMGliTVcrVXRWeG1RTjlkNEcw?=
 =?utf-8?B?eUQ5Uk1xamErRWRHOVBOODZyNEJjdzkwYnlMWk9xd3VxdkI0QUhrNmdHR1VM?=
 =?utf-8?B?UmRxelRyY1czOEFKcGQ4V3pGSGhXU1lGbDlSMUxOYXlueTljQjF6ZndLdTZK?=
 =?utf-8?B?M0V3QVZPTmNWa3RxY2l1eWl0WkVkalRCaVZOc3QyQTZVS1BKQlY1UG13bmU3?=
 =?utf-8?B?ZktFTkxJamZBckI4NzhSR1M2WDliTHRMU1NBRDM1UktVQzFERjFxd3l4MnJy?=
 =?utf-8?B?TEZOblNIMDN0aHVPWWs5QWc1Lzlrbld3d1JNSmIybG1obFJVdXdQTU80KzU2?=
 =?utf-8?B?aGVhUVRoVEtHOUtVK2NDUzQ1R0NiZC92U1dEVUpscEpyTzkzY2F4MzRkVFBK?=
 =?utf-8?B?eGFaUXpkazluOWZ5aFR1Q1ZjUDE1dlpXNGlyMlozRmVPeGREK21jYU85amFU?=
 =?utf-8?B?RG5DWTdYQXZwMEg1SURMaVlwK0wrZ3dUcmNzN0NzZjVjSkxKc2xhRkViSmQz?=
 =?utf-8?B?NWM4RVhXQzRobkdiQmhMWkw0OUhjbzF4Y3BTMmR6NldOeC9IZjZ6Q2k2c25o?=
 =?utf-8?B?N05pd214ckoyYkJyT01xRjZCQnNIZ044SG54MTJObng2R0hrbjJoZ0NBUVM2?=
 =?utf-8?B?ZVZaWm5IcWZFNkhDYXBLbFlmYitIczA4YjRwNExpb2p3d1pxWWVRZGt4ZVNR?=
 =?utf-8?B?WmpMUUxoS0xNL3RBZkVvRW5FL0xFUUVDR3E2c0RyWmg4c283ejRpL2UvVXNy?=
 =?utf-8?B?VThYRkZiL1UzV0FaOEVZN0NkRzBNMVlIazg1N0RDSTRxQVhjZFBNdU5hTVd1?=
 =?utf-8?B?dkNDbVZYcUs3ODRMSmhtS3BXRGlMQjBPL3dWOGJIVmlwcFV2OURYYXNCbW5h?=
 =?utf-8?B?aUZNb3hxZlNLb29yckV3bGFNb2hMQkx6Slo2aU4rZG1HY2tSK01NZGRFTy9W?=
 =?utf-8?B?aXJHNWlodHRkV3VESG92T3hBR0twMWtzcGlCWnhBeDlYYkg1SWpvRVRFRTVt?=
 =?utf-8?B?Q2d0Y3pzc0N6Q1hOMWpkMDJGWHloSURJR2NQbFg0cWRQZGJ3WlRsMlEwR0pR?=
 =?utf-8?B?eVZrb29mNVRzMkFtNFgvaHFFTHlCMm1NNytBSjVyK3VLNkhhNklQbjFXbi9R?=
 =?utf-8?B?NmE1SmZ5ZEdBQnJ5UzhCSklNdGFsNStvZ1BwcDRFNkpmems2MnFDV3M1czc2?=
 =?utf-8?B?NUJGOVBnRHdwQ2pNNWdISkhUMngwTm1MWDh3T2owS1lXTklwWmlXVlNleWhy?=
 =?utf-8?B?dDVJM1VTZytVZnBMZ1pBUlExbEpOZ0w4bnlEWGdzUEpKT3lqV2R5TW1QVy81?=
 =?utf-8?B?dWdsSEZrLytCTWZWWmgzenp1ZUlGRGJobFVndW5qa0JYZ1F4SnN1OWtqVWVz?=
 =?utf-8?B?cGtFbk5wK3h4ditLWlpGWHVtTjRwZXltaFd5M09DTXFrNllOanFtOU5CcWQw?=
 =?utf-8?B?QjVqSEEyR0tYbWlINUx2VnMzbDRRRzR5N3hmYkhGeDF1N1BRM09oVU9mL2No?=
 =?utf-8?B?TjRybGRDY0x1bTF2WG5wVnEwNWR5VzBZNm92K0x2VXRja2JpQTg2UEVQMFk3?=
 =?utf-8?B?NkpyUjhzYmZuOUw1Mk5CMUZaaGpGYllTTlUyYWl6alg3UkJTdThXWnpNUTFO?=
 =?utf-8?B?d09oRzBGaHUwb05TYmNETTIrd0JlQlpCdWZWVVVNVmU2Yzl0NmJOUTJRdlor?=
 =?utf-8?Q?O9hWkF5hKXUlSkdA=3D?=
X-OriginatorOrg: epam.com
X-MS-Exchange-CrossTenant-Network-Message-Id: 87978a41-4994-417b-a200-08de9713895a
X-MS-Exchange-CrossTenant-AuthSource: DU5PR03MB10263.eurprd03.prod.outlook.com
X-MS-Exchange-CrossTenant-AuthAs: Internal
X-MS-Exchange-CrossTenant-OriginalArrivalTime: 10 Apr 2026 15:12:09.9642
 (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: hIPf3qtCLxXUAWkTzTRj7NwzsCu0HrqGQHSdbJal69meYXTIw8uUEg4op4yNADEFibX1jqLouYcfR+TA9YcsFZsawcEmKmqb9SMvrww2Akg=
X-MS-Exchange-Transport-CrossTenantHeadersStamped: AS8PR03MB8420
X-purgate-ID: tlsNG-c201ff/1775833932-3153B96F-1597AB9F/0/0
X-purgate-type: clean
X-purgate-size: 1737


On 10/04/2026 15:16, Juergen Gross wrote:
> On 10.04.26 14:13, Juergen Gross wrote:
>> On 10.04.26 14:04, Oleksii Moisieiev wrote:
>>> Hi Juergen,
>>>
>>> During our safety certification analysis work, we identified this as 
>>> a potential
>>> issue. While we haven't encountered this problem in practice yet, it 
>>> could occur
>>> in the future, so I believe it should be addressed proactively.
>>
>> For being able to occur in future, the handling of removing a cpu from a
>> cpupool would need to be changed. Considering the refusal to remove the
>> last cpu from a populated cpupool is on purpose (this avoids leaving a
>> domain without any cpu to run on), adding the code as you suggest would
>> just be an addition without any benefit.
>>
>> It isn't doing any harm (other than adding code without purpose), so I
>> won't explicitly NAK the patch, but I won't Ack it either.
>
> One further remark: I would ack the addition of an 
> ASSERT(list_empty(replq))
> instead of the conditional set_timer() call.
>
You're right: with the current cpupool semantics, when the timer is 
re-initialized in this path, replq is expected to be empty. In that case 
there is nothing to re-arm, and the timer can be programmed later when a 
new replenishment event is queued.

Now I see that it would probably be better to update the cpupool logic 
to prohibit removing the last pCPU from a cpupool. In that case, this 
fix — even with the ASSERT — seems to be no longer relevant.

I think I'd rather post an update for the cpupool semantics and drop 
this patch. Or I can send a v3 with the ASSERT if you think that is 
still reasonable.

Thank you for the review!

--

Oleksii

>
> Juergen


From xen-devel-bounces@lists.xenproject.org Fri Apr 10 15:19:44 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Fri, 10 Apr 2026 15:19:44 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1279306.1563796 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wBDdz-00080W-43; Fri, 10 Apr 2026 15:19:39 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1279306.1563796; Fri, 10 Apr 2026 15:19: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 1wBDdz-00080P-1W; Fri, 10 Apr 2026 15:19:39 +0000
Received: by outflank-mailman (input) for mailman id 1279306;
 Fri, 10 Apr 2026 15:19:37 +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 1wBDdw-00080D-RO
 for xen-devel@lists.xenproject.org; Fri, 10 Apr 2026 15:19:36 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wBDdw-00DLbO-7I
 for xen-devel@lists.xenproject.org; Fri, 10 Apr 2026 17:19:36 +0200
Received: from [10.42.69.8] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <jgross@suse.com>)
 id 69d914f5-2eae-0a2a0a5409dd-0a2a4508a860-30
 for <xen-devel@lists.xenproject.org>; Fri, 10 Apr 2026 17:19:36 +0200
Received: from [209.85.128.41] (helo=mail-wm1-f41.google.com)
 by tlsNG-c1860d.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.0)
 (envelope-from <jgross@suse.com>)
 id 69d91507-fab6-0a2a45080019-d1558029cdb3-3
 for <xen-devel@lists.xenproject.org>; Fri, 10 Apr 2026 17:19:36 +0200
Received: by mail-wm1-f41.google.com with SMTP id
 5b1f17b1804b1-48896199cbaso23188255e9.1
 for <xen-devel@lists.xenproject.org>; Fri, 10 Apr 2026 08:19:36 -0700 (PDT)
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-488d531f229sm109721765e9.3.2026.04.10.08.19.34
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Fri, 10 Apr 2026 08:19:35 -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=google header.d=suse.com header.i="@suse.com" header.h="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=1775834375; x=1776439175; darn=lists.xenproject.org;
        h=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;
        bh=/a0Bl0+zer2HheR2JzE8quq1PQz0zduAtvU5Ar8MgWQ=;
        b=fTUbzC3iX4BrpILou3F43YqmCCZUecbTI3hvD6lnWPPjrkzk3W3dDLcs5BzQ2vFEws
         JyDUosbMWs5invBqw3B5gmjcbABkVLK2qeYro7RT40GKfo5zR6pjpp/s/NX8DnB45Djo
         TtjY5reR1TItuheRXa6PfSCFvSDG7pKozCnXUlgLmm2AgFoUkBVackWWEFs4f4TBj0WV
         Tqz0QtRctpzlGvyc8moYEro0OTYV13Z+8CjUm560T6Aa6R/JfeyfmGnc9jHlCQxMAc/4
         DB1NEUseU3QtLbu51pp6MN05l1G1Cr8/vzbvTDibGurb68I7w4Xu+iXKfzHr34UxDYBa
         ML0A==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20251104; t=1775834375; x=1776439175;
        h=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;
        bh=/a0Bl0+zer2HheR2JzE8quq1PQz0zduAtvU5Ar8MgWQ=;
        b=pS0w6mJkCWUQSi3jHxrZByqADH/2q7OUPCXa0G4dYOrDKUrHM/1GmANsJhJaEjDKsi
         4ezd8HtyLYt9/XcO+Suf1+WP6ghuvk/RLPkoCq4qMli9tKhnpeG4Q5fLYrnXT6qiemip
         3GFebkvYZeMAzKXSkSAgJYsqK/fqH6AY/glmpsWUGI/ZF0dL13kiw6WkoOP4ae2Ugqki
         FQkNt5GWf6mmYXMYihKdFwHOvEKzs3LTeSed++vKj6TEFzlFmosjcx2YGGWEoSxCiXvW
         DoJi7Sa0sSczKdB7fM8Sap60fRd+WRP0AQyFv1SCAWCQdAs9rXfS+7Drlk4HRB/PFDHr
         yFlg==
X-Forwarded-Encrypted: i=1; AJvYcCXjGQ0wJxVJgDbaS1OSroDdDHnLUT4vUEYHwoSt/u+l9ZLr9BqYlkyNc7HZCGlZQuI/X+Li534klGs=@lists.xenproject.org
X-Gm-Message-State: AOJu0YyqDmE1ntfjaH15W/mpVLHSWcIpy4JqvaO0ml1e2IyNBwyzQQJg
	CpMDkYqRnm+gKxo2E60kegycP69K6JzmjO+dNul+gnM4J0e7/84ig6Chr37RNvEHkNY=
X-Gm-Gg: AeBDiesPQLJ8qo2FTfiDcHJIQJet/72eaUWJ7IHv1t9IJYOUqF4tPqEWgWocyGTb4vq
	2gna3ZLiPrSAJpE134o9bvSYWjSHYGHHel9jsAJajvsKP3wPoofzNxbto79eWuBi5ZBzLerJW/+
	dLTMc9iqjdtuEBACAUH/CTgBKKhjNZ6KRkydnRErqTrXqHcS9RBm6bQ/i5HpR0UeUZpOsvIFyVI
	8m5Enjhi7OjtV+hJzo1pWYRiPFJPaH0CGiKOFkCf3J/VpYigM+thIGvhASoT012UtEx7zNYrbXe
	gjqCFmBZQY71xdgLcvBNfVBYewaS9ciPNgYl7PFqTX3TYdnhS8MRcRlcAaHWmlSDgGTu8pIHwDs
	qlsWNdWco2KbyQMA+Y2iSASPLAzxgpfeyVVBqsXubXnQ3H6GRvdehCiiC1KAtrXiviNkd0NoxKR
	X+oXmompGxwK5JPNYyhYVdtEWhI2QGhIEb1cSdpNDRaRmC3oWXj4W5X+4FzmkhjNH4U5MxLtcCI
	6ffdEfZpgs4bWYsbSTysPoamd1uhC22kUd5FcbGu8puI2XrxquVmg==
X-Received: by 2002:a05:600c:871a:b0:488:c683:be89 with SMTP id 5b1f17b1804b1-488d67f0b8fmr47492705e9.9.1775834375391;
        Fri, 10 Apr 2026 08:19:35 -0700 (PDT)
Message-ID: <ac3e1b58-3f81-406d-824d-4cdae7c7a76c@suse.com>
Date: Fri, 10 Apr 2026 17:19:34 +0200
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH v2] xen/sched: rtds: re-arm repl_timer after timer
 re-initialization
To: Oleksii Moisieiev <oleksii_moisieiev@epam.com>,
 "xen-devel@lists.xenproject.org" <xen-devel@lists.xenproject.org>
Cc: Dario Faggioli <dfaggioli@suse.com>, George Dunlap <gwd@xenproject.org>,
 Meng Xu <mengxu@cis.upenn.edu>
References: <548ea03cc3c3287b1f5dcd101b3c2990ebc08089.1775208527.git.oleksii_moisieiev@epam.com>
 <775bc23d-7cd4-43b4-9e5f-0c70204b4262@suse.com>
 <66b7eaff-f7b9-4737-b32b-ca9ff7b661c1@epam.com>
 <fd394d84-4d8c-4fe2-9e51-58041dc09c69@suse.com>
 <ff983469-db32-46fb-a18a-aed3cda06209@suse.com>
 <ad43c0a3-a0bc-4943-b617-83200ac91ccc@epam.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: <ad43c0a3-a0bc-4943-b617-83200ac91ccc@epam.com>
Content-Type: multipart/signed; micalg=pgp-sha256;
 protocol="application/pgp-signature";
 boundary="------------WRoAP1gvq8CcDShwNVvfAsI3"
X-purgate-ID: tlsNG-c1860d/1775834376-76350497-3A3554C2/0/0
X-purgate-type: clean
X-purgate-size: 8787

This is an OpenPGP/MIME signed message (RFC 4880 and 3156)
--------------WRoAP1gvq8CcDShwNVvfAsI3
Content-Type: multipart/mixed; boundary="------------uPUMaKxhkCeEy0PJUEOYG2r6";
 protected-headers="v1"
From: =?UTF-8?B?SsO8cmdlbiBHcm/Dnw==?= <jgross@suse.com>
To: Oleksii Moisieiev <oleksii_moisieiev@epam.com>,
 "xen-devel@lists.xenproject.org" <xen-devel@lists.xenproject.org>
Cc: Dario Faggioli <dfaggioli@suse.com>, George Dunlap <gwd@xenproject.org>,
 Meng Xu <mengxu@cis.upenn.edu>
Message-ID: <ac3e1b58-3f81-406d-824d-4cdae7c7a76c@suse.com>
Subject: Re: [PATCH v2] xen/sched: rtds: re-arm repl_timer after timer
 re-initialization
References: <548ea03cc3c3287b1f5dcd101b3c2990ebc08089.1775208527.git.oleksii_moisieiev@epam.com>
 <775bc23d-7cd4-43b4-9e5f-0c70204b4262@suse.com>
 <66b7eaff-f7b9-4737-b32b-ca9ff7b661c1@epam.com>
 <fd394d84-4d8c-4fe2-9e51-58041dc09c69@suse.com>
 <ff983469-db32-46fb-a18a-aed3cda06209@suse.com>
 <ad43c0a3-a0bc-4943-b617-83200ac91ccc@epam.com>
In-Reply-To: <ad43c0a3-a0bc-4943-b617-83200ac91ccc@epam.com>

--------------uPUMaKxhkCeEy0PJUEOYG2r6
Content-Type: multipart/mixed; boundary="------------3Z0Bw1l2baHeIDOAtzdwlHtX"

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

T24gMTAuMDQuMjYgMTc6MTIsIE9sZWtzaWkgTW9pc2llaWV2IHdyb3RlOg0KPiANCj4gT24g
MTAvMDQvMjAyNiAxNToxNiwgSnVlcmdlbiBHcm9zcyB3cm90ZToNCj4+IE9uIDEwLjA0LjI2
IDE0OjEzLCBKdWVyZ2VuIEdyb3NzIHdyb3RlOg0KPj4+IE9uIDEwLjA0LjI2IDE0OjA0LCBP
bGVrc2lpIE1vaXNpZWlldiB3cm90ZToNCj4+Pj4gSGkgSnVlcmdlbiwNCj4+Pj4NCj4+Pj4g
RHVyaW5nIG91ciBzYWZldHkgY2VydGlmaWNhdGlvbiBhbmFseXNpcyB3b3JrLCB3ZSBpZGVu
dGlmaWVkIHRoaXMgYXMgYSANCj4+Pj4gcG90ZW50aWFsDQo+Pj4+IGlzc3VlLiBXaGlsZSB3
ZSBoYXZlbid0IGVuY291bnRlcmVkIHRoaXMgcHJvYmxlbSBpbiBwcmFjdGljZSB5ZXQsIGl0
IGNvdWxkIA0KPj4+PiBvY2N1cg0KPj4+PiBpbiB0aGUgZnV0dXJlLCBzbyBJIGJlbGlldmUg
aXQgc2hvdWxkIGJlIGFkZHJlc3NlZCBwcm9hY3RpdmVseS4NCj4+Pg0KPj4+IEZvciBiZWlu
ZyBhYmxlIHRvIG9jY3VyIGluIGZ1dHVyZSwgdGhlIGhhbmRsaW5nIG9mIHJlbW92aW5nIGEg
Y3B1IGZyb20gYQ0KPj4+IGNwdXBvb2wgd291bGQgbmVlZCB0byBiZSBjaGFuZ2VkLiBDb25z
aWRlcmluZyB0aGUgcmVmdXNhbCB0byByZW1vdmUgdGhlDQo+Pj4gbGFzdCBjcHUgZnJvbSBh
IHBvcHVsYXRlZCBjcHVwb29sIGlzIG9uIHB1cnBvc2UgKHRoaXMgYXZvaWRzIGxlYXZpbmcg
YQ0KPj4+IGRvbWFpbiB3aXRob3V0IGFueSBjcHUgdG8gcnVuIG9uKSwgYWRkaW5nIHRoZSBj
b2RlIGFzIHlvdSBzdWdnZXN0IHdvdWxkDQo+Pj4ganVzdCBiZSBhbiBhZGRpdGlvbiB3aXRo
b3V0IGFueSBiZW5lZml0Lg0KPj4+DQo+Pj4gSXQgaXNuJ3QgZG9pbmcgYW55IGhhcm0gKG90
aGVyIHRoYW4gYWRkaW5nIGNvZGUgd2l0aG91dCBwdXJwb3NlKSwgc28gSQ0KPj4+IHdvbid0
IGV4cGxpY2l0bHkgTkFLIHRoZSBwYXRjaCwgYnV0IEkgd29uJ3QgQWNrIGl0IGVpdGhlci4N
Cj4+DQo+PiBPbmUgZnVydGhlciByZW1hcms6IEkgd291bGQgYWNrIHRoZSBhZGRpdGlvbiBv
ZiBhbiBBU1NFUlQobGlzdF9lbXB0eShyZXBscSkpDQo+PiBpbnN0ZWFkIG9mIHRoZSBjb25k
aXRpb25hbCBzZXRfdGltZXIoKSBjYWxsLg0KPj4NCj4gWW91J3JlIHJpZ2h0OiB3aXRoIHRo
ZSBjdXJyZW50IGNwdXBvb2wgc2VtYW50aWNzLCB3aGVuIHRoZSB0aW1lciBpcyByZS0gDQo+
IGluaXRpYWxpemVkIGluIHRoaXMgcGF0aCwgcmVwbHEgaXMgZXhwZWN0ZWQgdG8gYmUgZW1w
dHkuIEluIHRoYXQgY2FzZSB0aGVyZSBpcyANCj4gbm90aGluZyB0byByZS1hcm0sIGFuZCB0
aGUgdGltZXIgY2FuIGJlIHByb2dyYW1tZWQgbGF0ZXIgd2hlbiBhIG5ldyANCj4gcmVwbGVu
aXNobWVudCBldmVudCBpcyBxdWV1ZWQuDQo+IA0KPiBOb3cgSSBzZWUgdGhhdCBpdCB3b3Vs
ZCBwcm9iYWJseSBiZSBiZXR0ZXIgdG8gdXBkYXRlIHRoZSBjcHVwb29sIGxvZ2ljIHRvIA0K
PiBwcm9oaWJpdCByZW1vdmluZyB0aGUgbGFzdCBwQ1BVIGZyb20gYSBjcHVwb29sLiBJbiB0
aGF0IGNhc2UsIHRoaXMgZml4IOKAlCBldmVuIA0KPiB3aXRoIHRoZSBBU1NFUlQg4oCUIHNl
ZW1zIHRvIGJlIG5vIGxvbmdlciByZWxldmFudC4NCj4gDQo+IEkgdGhpbmsgSSdkIHJhdGhl
ciBwb3N0IGFuIHVwZGF0ZSBmb3IgdGhlIGNwdXBvb2wgc2VtYW50aWNzIGFuZCBkcm9wIHRo
aXMgcGF0Y2guIA0KPiBPciBJIGNhbiBzZW5kIGEgdjMgd2l0aCB0aGUgQVNTRVJUIGlmIHlv
dSB0aGluayB0aGF0IGlzIHN0aWxsIHJlYXNvbmFibGUuDQoNClRoZSBjcHVwb29sIHNlbWFu
dGljcyBhcmUgYWxyZWFkeSBleGlzdGluZy4gSSBoYXZlIHdyaXR0ZW4gaXQgdGhpcyB3YXkg
d2hlbiBJDQppbnRyb2R1Y2VkIGNwdXBvb2xzLg0KDQoNCkp1ZXJnZW4NCg==
--------------3Z0Bw1l2baHeIDOAtzdwlHtX
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-----

--------------3Z0Bw1l2baHeIDOAtzdwlHtX--

--------------uPUMaKxhkCeEy0PJUEOYG2r6--

--------------WRoAP1gvq8CcDShwNVvfAsI3
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/Ey8FAmnZFQYFAwAAAAAACgkQsN6d1ii/Ey9G
swf/Z10r4UGFu04AWBsmF/wgKwxBR/tFi4t/9wQiaxaDaPSoRURJpQMjVf6/b2Mb4uuawn9qD+A4
+kbnyPhcikwQzD+iTqblnIFgd7GqRD7gTt2nMz3zTp+FhZRyjHRVMVsZvx5oLmndYitET5WObXXK
o1R5lbTB1AWfPVzo1r4xAA9DZF1XDln+WUQevn4fAyhkuEFLrGEBfnim0uLhLzSjJuMRMjBZe2NX
iV24dzIPJtSZxCdz6DJDQHdcBQoSjgWlS5lTSt4mSZ3Rl6joOS637jHj4y0cz1FuNh/CeLxR7frX
nsi/Ln2gISDrF1HqvIwJZpAZDEiQTdbZYcvIK1W8OA==
=kNoT
-----END PGP SIGNATURE-----

--------------WRoAP1gvq8CcDShwNVvfAsI3--


From xen-devel-bounces@lists.xenproject.org Fri Apr 10 15:28:49 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Fri, 10 Apr 2026 15:28:49 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1279341.1563806 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wBDml-0001Oy-VM; Fri, 10 Apr 2026 15:28:43 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1279341.1563806; Fri, 10 Apr 2026 15: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 1wBDml-0001Or-RU; Fri, 10 Apr 2026 15:28:43 +0000
Received: by outflank-mailman (input) for mailman id 1279341;
 Fri, 10 Apr 2026 15:28:42 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <Luca.Fancellu@arm.com>) id 1wBDmk-0001Ol-HJ
 for xen-devel@lists.xenproject.org; Fri, 10 Apr 2026 15:28:42 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wBDmj-00Ez2f-NE
 for xen-devel@lists.xenproject.org; Fri, 10 Apr 2026 17:28:41 +0200
Received: from [10.42.69.2] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <Luca.Fancellu@arm.com>)
 id 69d916fe-5cb7-0a2a0a5109dd-0a2a4502b418-48
 for <xen-devel@lists.xenproject.org>; Fri, 10 Apr 2026 17:28:41 +0200
Received: from [52.101.69.3]
 (helo=AM0PR83CU005.outbound.protection.outlook.com)
 by tlsNG-720697.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.0)
 (envelope-from <Luca.Fancellu@arm.com>)
 id 69d91728-42fa-0a2a45020019-346545034157-3
 for <xen-devel@lists.xenproject.org>; Fri, 10 Apr 2026 17:28:40 +0200
Received: from DUZPR01CA0275.eurprd01.prod.exchangelabs.com
 (2603:10a6:10:4b9::6) by MI3PR08MB11908.eurprd08.prod.outlook.com
 (2603:10a6:290:74::24) with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9769.42; Fri, 10 Apr
 2026 15:28:38 +0000
Received: from DU2PEPF0001E9C5.eurprd03.prod.outlook.com
 (2603:10a6:10:4b9:cafe::bc) by DUZPR01CA0275.outlook.office365.com
 (2603:10a6:10:4b9::6) with Microsoft SMTP Server (version=TLS1_3,
 cipher=TLS_AES_256_GCM_SHA384) id 15.20.9769.43 via Frontend Transport; Fri,
 10 Apr 2026 15:28:38 +0000
Received: from outbound-uk1.az.dlp.m.darktrace.com (4.158.2.129) by
 DU2PEPF0001E9C5.mail.protection.outlook.com (10.167.8.74) with Microsoft SMTP
 Server (version=TLS1_3, cipher=TLS_AES_256_GCM_SHA384) id 15.20.9745.21 via
 Frontend Transport; Fri, 10 Apr 2026 15:28:37 +0000
Received: from DU2PR08MB7272.eurprd08.prod.outlook.com (2603:10a6:10:2d7::16)
 by DU0PR08MB8711.eurprd08.prod.outlook.com (2603:10a6:10:401::15)
 with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9769.17; Fri, 10 Apr
 2026 15:27:34 +0000
Received: from DU2PR08MB7272.eurprd08.prod.outlook.com
 ([fe80::5d34:206f:373:a323]) by DU2PR08MB7272.eurprd08.prod.outlook.com
 ([fe80::5d34:206f:373:a323%6]) with mapi id 15.20.9769.018; Fri, 10 Apr 2026
 15:27: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=arm.com header.i="@arm.com" header.h="From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck"; dkim=pass header.s=selector1 header.d=arm.com header.i="@arm.com" header.h="From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck"
ARC-Seal: i=2; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=pass;
 b=Fuo1MWaYax9rthGSic3geME2MRYyhjby3nJSDKKSrkvlM4ueprZcVESF3CC6dDfR0e/5mAqjHotDYJVDOtjwJtUtDOefrRWzQaDqwNuzP0tjf8TMQPY0T91Ebfe5KdSwFV47yyAaZyUSVDhPlZsqdHGVgOgj4MxRJD9nL3Y4pqMmbQ4PhimpjlbyKy2Z2nccXbOCW3nPEBiBGQlFXwhCXHYI6oK45mC36DQYWA612z97ENVYHsothPKj57JzUBJ4oXu12v7F3m7rnTJMBmqsMSMyMn1iMI4L1kkbN0XFKXp/Jdjni74/7RunfU6xSFi47apS1xSnIieoL00pSSn7cQ==
ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com;
 s=arcselector10001;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1;
 bh=QCzjePY665vJpJdboo78/mB7n80P6oKKVx0+9c96syo=;
 b=drljHgzOivVDRn56S2EjLMOU5zrBkwEWPa1qPCwZRziZTTIg5LsJX8GD69F7iwVRM1Q9EX/Fl+ZoJJH0XC8cALvrODi8GipFzkygTKCwiMxpMUPFtYo7Vnwtb1+odsohYoXITzk73nd5FSZEBxhd/+9sAAjNoDEO201g79gC9JVlJJUJD+Hi25gZxwUipw1QJ3nZDdRoZG+Ur1yXAGjCQx9svszrEaXzgucgLl14C9pnWT1sJvmh+co9hdxXCHuQL7eTmbMm1PoBckH+85gAKoRHkR7Sah2s5bhBjhRXvdQcob9dKvvW4GdifDn3yK8r8SthRRtUylGYF9LV3lXdZg==
ARC-Authentication-Results: i=2; mx.microsoft.com 1; spf=pass (sender ip is
 4.158.2.129) smtp.rcpttodomain=epam.com smtp.mailfrom=arm.com; dmarc=pass
 (p=none sp=none pct=100) action=none header.from=arm.com; dkim=pass
 (signature was verified) header.d=arm.com; arc=pass (0 oda=1 ltdi=1
 spf=[1,1,smtp.mailfrom=arm.com] dkim=[1,1,header.d=arm.com]
 dmarc=[1,1,header.from=arm.com])
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=arm.com; s=selector1;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck;
 bh=QCzjePY665vJpJdboo78/mB7n80P6oKKVx0+9c96syo=;
 b=FgiH3513OJvbm3eAC03QI5IF18oYSOXaWSsyqX2Wj3h4maVnc1iKxmPSrCRXtuhlsZnID6ZgKgcdts3TPJSKRnrwNhc67lwxZlZNWZKefK7NbC/Gh63Dh0CKL5ku7DNp1qoHffbEHe59zZVU3cO6Mok+/NiF6kRq79oOKIucXHk=
X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 4.158.2.129)
 smtp.mailfrom=arm.com; dkim=pass (signature was verified)
 header.d=arm.com;dmarc=pass action=none header.from=arm.com;
Received-SPF: Pass (protection.outlook.com: domain of arm.com designates
 4.158.2.129 as permitted sender) receiver=protection.outlook.com;
 client-ip=4.158.2.129; helo=outbound-uk1.az.dlp.m.darktrace.com; pr=C
ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none;
 b=xWoC71R4xsYUGc67aTq5fiSqK/R0yhM7ZE9uUD9hXTNLqDUALwzNXvACVU9TMwjQCbRNup0eeLIcia5RqmUhd3z9N22CFTAShK2rgTuH/EDzd+WUSfcXBX4FoJ041zGNHLbdJnNQBzbyyPjY5zaQE/jx/91iUepkSzjXE7yPcUk6D/ufFd2HuwENl1KJ/ypy7OkFO/ovSiOy4Ru+eozJe1uK+rAcau20jezGFE/MId1vyxS6h+3B/LbJuz6G1D8zq0O8hqvIi4ShZnsEcTT357WGlkOYH08ipjOi5CK9teOfTxqUzmo0HTB21wBlKOr3Ux/zIcyydN/0TGNvhAOeJw==
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com;
 s=arcselector10001;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1;
 bh=QCzjePY665vJpJdboo78/mB7n80P6oKKVx0+9c96syo=;
 b=rTK+0yzjbKeE9vn2xeXphHUG/8rck9btUclzwrY3CPD4mlbMmEP+FEphlGov0yVN/VK3EEvymePMdzp9f3in+Zg9XNeyLEGZ8f2U8lqz+vRz2sENKSqrC+vEwWB66mnKvEFlVCaWVIrL1tDwSBMkgCW66Ir0KZvcyEoN8bn/8/f2NSqVZkaKqsFMR/yA/m2nHGJySkfxRHVDMX3JJ32NXqZW1noaXCDlD4oF6WXij3oIykzCrDzcZhQ6YfthNVS1b7TvOlj+m1RZBVCY1/nY4rpjFVDBSBNrl52bBf5wSDxEknriSTrM+oJvxvUqc7f8wmscMeJ2yXhnV2FD/GhgKQ==
ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass
 smtp.mailfrom=arm.com; dmarc=pass action=none header.from=arm.com; dkim=pass
 header.d=arm.com; arc=none
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=arm.com; s=selector1;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck;
 bh=QCzjePY665vJpJdboo78/mB7n80P6oKKVx0+9c96syo=;
 b=FgiH3513OJvbm3eAC03QI5IF18oYSOXaWSsyqX2Wj3h4maVnc1iKxmPSrCRXtuhlsZnID6ZgKgcdts3TPJSKRnrwNhc67lwxZlZNWZKefK7NbC/Gh63Dh0CKL5ku7DNp1qoHffbEHe59zZVU3cO6Mok+/NiF6kRq79oOKIucXHk=
From: Luca Fancellu <Luca.Fancellu@arm.com>
To: Milan Djokic <milan_djokic@epam.com>
CC: "xen-devel@lists.xenproject.org" <xen-devel@lists.xenproject.org>, 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>
Subject: Re: [PATCH v3 08/23] xen/arm: vsmmuv3: Add support for registers
 emulation
Thread-Topic: [PATCH v3 08/23] xen/arm: vsmmuv3: Add support for registers
 emulation
Thread-Index: AQHcyP6NKmaLb7Af3Um2I3EGy28uyQ==
Date: Fri, 10 Apr 2026 15:27:34 +0000
Message-ID: <C6057E0E-ED2E-4C9A-B768-5EE8E23BF346@arm.com>
References: <cover.1774918270.git.milan_djokic@epam.com>
 <25adb33c4be3932c2d946cf7757c933eb042476c.1774918270.git.milan_djokic@epam.com>
In-Reply-To:
 <25adb33c4be3932c2d946cf7757c933eb042476c.1774918270.git.milan_djokic@epam.com>
Accept-Language: en-GB, en-US
Content-Language: en-US
X-MS-Has-Attach:
X-MS-TNEF-Correlator:
x-mailer: Apple Mail (2.3826.700.81.1.6)
Authentication-Results-Original: dkim=none (message not signed)
 header.d=none;dmarc=none action=none header.from=arm.com;
x-ms-traffictypediagnostic:
	DU2PR08MB7272:EE_|DU0PR08MB8711:EE_|DU2PEPF0001E9C5:EE_|MI3PR08MB11908:EE_
X-MS-Office365-Filtering-Correlation-Id: aef32ddc-ac5f-452b-4375-08de9715d664
x-checkrecipientrouted: true
nodisclaimer: true
X-MS-Exchange-SenderADCheck: 1
X-MS-Exchange-AntiSpam-Relay: 0
X-Microsoft-Antispam-Untrusted:
 BCL:0;ARA:13230040|366016|1800799024|376014|38070700021|56012099003|22082099003|18002099003;
X-Microsoft-Antispam-Message-Info-Original:
 Gg4dG6Im/oyDeF07lxA3vytbcElqNET20yiDgvHyj7r+OMYfMCmnsGgD5fOyROLe2hRoByRJcwRM21aib6vwUJTpm4Aeow0FNJH8BI8KfX+kOjfJcbBhcgQB7utE3wdT1eYJtT7L/swapiMesBkfLcGMVT0+EJPVFlc6bED5c3ryizH5CWHeNguHlLUTF2tiYVk1QLfJIER4tm33dBl7lbZeeXGOimVnJsaqCOCklvxMMwgUmUO+GHR/iosqIFHhIGFcFLsiL/Vz2GaaBoD7EOUrqqvVPTZ5kzllnepi5yqc9Xbxu1eg4YuJuUCHAYv5ec2Cnx4i6jx2a4KM0bRRe6dY2zvcL8gSY4XNlgXy9lyUGjE8Xpk3NTn7kybCZ9N/sgy4YAOBX+SSTwJiVhSXut3YKFaUKZSwlvrrjqIC1cX2W1LU1QQR4QHfR79kFwkKHMUpYWOFwdWS8mVXTOPialJBsmxXyDbYTcxE0PHad1otzlcthUWex8HIQ+F8ZAU5Rf8H2Um8BtU6iNBuumruYRWCUmtsRZvHRYrL8stGd3veFQ9kbwObFS3XVRveC4I+fdohiDU78NEsTEso9f0xHqum2cTRUZv4x2uwvQzev8xxReZsmVgWho4oFBsOQ75JmnsgjNkEURNYerWDHJVU+vAE6U7748FRVS8ELlCDYdMpFKtrAsWN+EHXhSQwfkrUhPnH6lNjIP2B+xg8woHjaIq7RtdPAgHJGM33N/4mWzx8A83YzJCYeJSjHsKZB4HTlkgUs2+xNHQC/cxEFkqnNw==
X-Forefront-Antispam-Report-Untrusted:
 CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:DU2PR08MB7272.eurprd08.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(366016)(1800799024)(376014)(38070700021)(56012099003)(22082099003)(18002099003);DIR:OUT;SFP:1101;
Content-Type: text/plain; charset="us-ascii"
Content-ID: <F4A13EE8F792494DBAF8BE98EB8EC6FD@eurprd08.prod.outlook.com>
Content-Transfer-Encoding: quoted-printable
MIME-Version: 1.0
X-Exchange-RoutingPolicyChecked:
 HEcSWVV8ptOI1q1mWSAyMQBT0//sQ/IEihUUFAf0sSK0F8aObvKf5+mwpluKt54VYpxPlGhCy8KomzR7uysHCZszsvAlckkxE8XxzrzJjL2bQznVt3aKE5453Ac3v3Oxzh6Gj1KvvVlvKtWlGqiCOxN/QR41nWd1JPnODhTS3VU/4gN94zoZbtgjZ6aZoOZQn6Je8fVxBKBXEu9gUnEI/9jrdQjw8qS3LE395L3VV0IpNyangj5CLwS4TUOeRdlXuA8CusANLUNwTrkD9307dOR8I2wzPzi1LVpwHG9nn/pMBewLkttXuRsGTwEfSnbdIMV0kvqIIQO0tTlQqU+qSQ==
X-MS-Exchange-Transport-CrossTenantHeadersStamped: DU0PR08MB8711
X-EOPAttributedMessage: 0
X-MS-Exchange-Transport-CrossTenantHeadersStripped:
 DU2PEPF0001E9C5.eurprd03.prod.outlook.com
X-MS-PublicTrafficType: Email
X-MS-Office365-Filtering-Correlation-Id-Prvs:
	23693514-0227-4f05-3166-08de9715b05d
X-Microsoft-Antispam:
	BCL:0;ARA:13230040|14060799003|1800799024|376014|82310400026|36860700016|35042699022|56012099003|18002099003|22082099003;
X-Microsoft-Antispam-Message-Info:
	nOggFd0/EVtf/4dHWwL33XKJG0igKbTrO3EFV80ki58tKNtQJY994oGGnZNUDPIQWHCOAPrcEjFA7CwWzys96a7J/rpQQj0TXTRSiRq6wamy1tsnwCSWlWJTNHg91FJF05jfVfYTBb4gzRQn3KBB1JtyPM/HMhGI6he6xQHHoVjXIbluQ6jJceZNFEf3DP7yVwyRrOtk52w4+moE5CHrpzWM8T6V7a7+XNPgEBBt4u3W5HuZ29NmIbm9qsluZS4y9PM/Px/I7nozYwQgfAKatAakz9pUlRrLFU42AaVFPSorj1lBEejDlvBPjZppAcuO5jPF+uoxbA3BC2jBoUECVvGhefxeFNYMoa0hkq/7ztKzj8wRwMN84L/1wVQaLOHFgoz4/a37k88YVVarbZRJl3ZksL6OcUcxNXACxKefEk2fCbTEqN43X/v78nZZRpwTiJjdKO3mWXiCtSyIWnKuOXXyLYN99lzKjHDbpuPBMdwG377a4emNTNCFjwNZkg+79AhCtwTk5Ych2v3aK5SfNO3uZ/DWAwvvY7nBaKKS/jcdVxl33Str/w+XUvJJdKaQiPjmuYbbR81IgeCoCl/BJxJKelox3Iv+b0QKLC3rTSMenPLPy0xxrq4AmhpGVuieoLBVkhF7uxHCJZ8ujs3q9NkkfO0juYIcHbeDGVQrFx74uItEgBPz+X03IwyuvWxzP66uKl4pCBxWFAihTQY6IA9bXj+KnNcCHrebx1aSUgl2JZd/R4z3LCRCtNIanlt/
X-Forefront-Antispam-Report:
	CIP:4.158.2.129;CTRY:GB;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:outbound-uk1.az.dlp.m.darktrace.com;PTR:InfoDomainNonexistent;CAT:NONE;SFS:(13230040)(14060799003)(1800799024)(376014)(82310400026)(36860700016)(35042699022)(56012099003)(18002099003)(22082099003);DIR:OUT;SFP:1101;
X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1
X-MS-Exchange-AntiSpam-MessageData-0:
	bJ7kk23aeFiZdra/mzV33Dx5W3Hu/9Z61hdRQKnwuva3+dVVFXghtqeEktwlLbhsSHbL89svdCT+JTMzT7e8qcXBHko8ebQEwZeLHJyR1rZm/NKbmm4NXhk2nbSYstFHhQPXIL4Q2NJO+OC21IdbhjRIKT00TV0QuShgfHDkQ8zppjEtQ5H/exTfwaF9Ja3axX/xSkcQcUDY1+Asn04vB24sv2pyFx0dwYkzojiLM19eUEIjJQhzjyxIsPU5RqXx8K/eoOqEbendubJ0ME+2c/FvV/KgijVBJ+rs9FhxZxViMhGkhVbKin0vSHMiGX1rPTI+InxIIa0U8XiXnrn7HNAsMT/iMEPsEfLbCrQtdRM6x3M/s+f7TSeeviDmxD7gjX2RGoBom0I7MPV0fpI/ljjo9BKtmcelQule+ht98tIPntUhP3wXODruEaaTUoQ8
X-OriginatorOrg: arm.com
X-MS-Exchange-CrossTenant-OriginalArrivalTime: 10 Apr 2026 15:28:37.9069
 (UTC)
X-MS-Exchange-CrossTenant-Network-Message-Id: aef32ddc-ac5f-452b-4375-08de9715d664
X-MS-Exchange-CrossTenant-Id: f34e5979-57d9-4aaa-ad4d-b122a662184d
X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=f34e5979-57d9-4aaa-ad4d-b122a662184d;Ip=[4.158.2.129];Helo=[outbound-uk1.az.dlp.m.darktrace.com]
X-MS-Exchange-CrossTenant-AuthSource:
	DU2PEPF0001E9C5.eurprd03.prod.outlook.com
X-MS-Exchange-CrossTenant-AuthAs: Anonymous
X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem
X-MS-Exchange-Transport-CrossTenantHeadersStamped: MI3PR08MB11908
X-purgate-ID: tlsNG-720697/1775834921-47323CD1-D5034290/0/0
X-purgate-type: clean
X-purgate-size: 9194

Hi Milan,

> diff --git a/xen/drivers/passthrough/arm/vsmmu-v3.c b/xen/drivers/passthr=
ough/arm/vsmmu-v3.c
> index e36f200ba5..3ae1e62a50 100644
> --- a/xen/drivers/passthrough/arm/vsmmu-v3.c
> +++ b/xen/drivers/passthrough/arm/vsmmu-v3.c
>=20
[...]
> static int vsmmuv3_mmio_write(struct vcpu *v, mmio_info_t *info,
>                               register_t r, void *priv)
> {
> +    struct virt_smmu *smmu =3D priv;
> +    uint64_t reg;
> +    uint32_t reg32;
> +
> +    switch ( info->gpa & 0xffff )
> +    {
> +    case VREG32(ARM_SMMU_CR0):
> +        reg32 =3D smmu->cr[0];
> +        vreg_reg32_update(&reg32, r, info);
> +        smmu->cr[0] =3D reg32;
> +        smmu->cr0ack =3D reg32 & ~CR0_RESERVED;
> +        break;
> +
> +    case VREG32(ARM_SMMU_CR1):
> +        reg32 =3D smmu->cr[1];
> +        vreg_reg32_update(&reg32, r, info);
> +        smmu->cr[1] =3D reg32;
> +        break;
> +
> +    case VREG32(ARM_SMMU_CR2):
> +        reg32 =3D smmu->cr[2];
> +        vreg_reg32_update(&reg32, r, info);
> +        smmu->cr[2] =3D reg32;
> +        break;
> +
> +    case VREG64(ARM_SMMU_STRTAB_BASE):
> +        reg =3D smmu->strtab_base;
> +        vreg_reg64_update(&reg, r, info);
> +        smmu->strtab_base =3D reg;
> +        break;
> +
> +    case VREG32(ARM_SMMU_STRTAB_BASE_CFG):
> +        reg32 =3D smmu->strtab_base_cfg;
> +        vreg_reg32_update(&reg32, r, info);
> +        smmu->strtab_base_cfg =3D reg32;
> +
> +        smmu->sid_split =3D FIELD_GET(STRTAB_BASE_CFG_SPLIT, reg32);
> +        smmu->features |=3D STRTAB_BASE_CFG_FMT_2LVL;
> +        break;
> +
> +    case VREG32(ARM_SMMU_CMDQ_BASE):

I think this needs to be VREG64

> +        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->cmdq=
.q_base);
> +        if ( smmu->cmdq.max_n_shift > SMMU_CMDQS )
> +            smmu->cmdq.max_n_shift =3D SMMU_CMDQS;
> +        break;
> +
> +    case VREG32(ARM_SMMU_CMDQ_PROD):
> +        reg32 =3D smmu->cmdq.prod;
> +        vreg_reg32_update(&reg32, r, info);
> +        smmu->cmdq.prod =3D reg32;
> +        break;
> +
> +    case VREG32(ARM_SMMU_CMDQ_CONS):
> +        reg32 =3D smmu->cmdq.cons;
> +        vreg_reg32_update(&reg32, r, info);
> +        smmu->cmdq.cons =3D reg32;
> +        break;
> +
> +    case VREG32(ARM_SMMU_EVTQ_BASE):

And also this one VREG64

> +        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->evtq=
.q_base);
> +        if ( smmu->cmdq.max_n_shift > SMMU_EVTQS )
> +            smmu->cmdq.max_n_shift =3D SMMU_EVTQS;

This seems a typo, I think here we want to modify the evtq, not the cmdq?
So in case both condition and assignment needs to change.

> +        break;
> +
> +    case VREG32(ARM_SMMU_EVTQ_PROD):
> +        reg32 =3D smmu->evtq.prod;
> +        vreg_reg32_update(&reg32, r, info);
> +        smmu->evtq.prod =3D reg32;
> +        break;
> +
> +    case VREG32(ARM_SMMU_EVTQ_CONS):
> +        reg32 =3D smmu->evtq.cons;
> +        vreg_reg32_update(&reg32, r, info);
> +        smmu->evtq.cons =3D reg32;
> +        break;
> +
> +    case VREG32(ARM_SMMU_IRQ_CTRL):
> +        reg32 =3D smmu->irq_ctrl;
> +        vreg_reg32_update(&reg32, r, info);
> +        smmu->irq_ctrl =3D reg32;
> +        break;
> +
> +    case VREG64(ARM_SMMU_GERROR_IRQ_CFG0):
> +        reg =3D smmu->gerror_irq_cfg0;
> +        vreg_reg64_update(&reg, r, info);
> +        smmu->gerror_irq_cfg0 =3D reg;
> +        break;
> +
> +    case VREG64(ARM_SMMU_EVTQ_IRQ_CFG0):
> +        reg =3D smmu->evtq_irq_cfg0;
> +        vreg_reg64_update(&reg, r, info);
> +        smmu->evtq_irq_cfg0 =3D reg;
> +        break;
> +
> +    case VREG32(ARM_SMMU_GERRORN):
> +        reg =3D smmu->gerrorn;
> +        vreg_reg64_update(&reg, r, info);

this should be vreg_reg32_update

> +        smmu->gerrorn =3D reg;
> +        break;
> +
> +    default:
> +        printk(XENLOG_G_ERR
> +               "%pv: vSMMUv3: unhandled write r%d offset %"PRIpaddr"\n",
> +               v, info->dabt.reg, (unsigned long)info->gpa & 0xffff);
> +        return IO_ABORT;
> +    }
> +
>     return IO_HANDLED;
> }
>=20
> static int vsmmuv3_mmio_read(struct vcpu *v, mmio_info_t *info,
>                              register_t *r, void *priv)
> {
> +    struct virt_smmu *smmu =3D priv;
> +    uint64_t reg;
> +
> +    switch ( info->gpa & 0xffff )
> +    {
> +    case VREG32(ARM_SMMU_IDR0):
> +        reg  =3D FIELD_PREP(IDR0_S1P, 1) | FIELD_PREP(IDR0_TTF, 2) |
> +            FIELD_PREP(IDR0_COHACC, 0) | FIELD_PREP(IDR0_ASID16, 1) |
> +            FIELD_PREP(IDR0_TTENDIAN, 0) | FIELD_PREP(IDR0_STALL_MODEL, =
1) |
> +            FIELD_PREP(IDR0_ST_LVL, 1) | FIELD_PREP(IDR0_TERM_MODEL, 1);
> +        *r =3D vreg_reg32_extract(reg, info);
> +        break;
> +
> +    case VREG32(ARM_SMMU_IDR1):
> +        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):
> +        reg  =3D FIELD_PREP(IDR3_RIL, 0);
> +        *r =3D vreg_reg32_extract(reg, info);
> +        break;
> +
> +    case VREG32(ARM_SMMU_IDR4):
> +        goto read_impl_defined;
> +
> +    case VREG32(ARM_SMMU_IDR5):
> +        reg  =3D FIELD_PREP(IDR5_GRAN4K, 1) | FIELD_PREP(IDR5_GRAN16K, 1=
) |
> +            FIELD_PREP(IDR5_GRAN64K, 1) | FIELD_PREP(IDR5_OAS, IDR5_OAS_=
48_BIT);
> +        *r =3D vreg_reg32_extract(reg, info);
> +        break;
> +
> +    case VREG32(ARM_SMMU_IIDR):
> +        *r =3D vreg_reg32_extract(ARM_SMMU_IIDR_VAL, info);
> +        break;
> +
> +    case VREG32(ARM_SMMU_CR0):
> +        *r =3D vreg_reg32_extract(smmu->cr[0], info);
> +        break;
> +
> +    case VREG32(ARM_SMMU_CR0ACK):
> +        *r =3D vreg_reg32_extract(smmu->cr0ack, info);
> +        break;
> +
> +    case VREG32(ARM_SMMU_CR1):
> +        *r =3D vreg_reg32_extract(smmu->cr[1], info);
> +        break;
> +
> +    case VREG32(ARM_SMMU_CR2):
> +        *r =3D vreg_reg32_extract(smmu->cr[2], info);
> +        break;
> +
> +    case VREG32(ARM_SMMU_STRTAB_BASE):

this needs to be VREG64 I think

> +        *r =3D vreg_reg64_extract(smmu->strtab_base, info);
> +        break;
> +
> +    case VREG32(ARM_SMMU_STRTAB_BASE_CFG):
> +        *r =3D vreg_reg32_extract(smmu->strtab_base_cfg, info);
> +        break;
> +
> +    case VREG32(ARM_SMMU_CMDQ_BASE):

VREG64

> +        *r =3D vreg_reg64_extract(smmu->cmdq.q_base, info);
> +        break;
> +
> +    case VREG32(ARM_SMMU_CMDQ_PROD):
> +        *r =3D vreg_reg32_extract(smmu->cmdq.prod, info);
> +        break;
> +
> +    case VREG32(ARM_SMMU_CMDQ_CONS):
> +        *r =3D vreg_reg32_extract(smmu->cmdq.cons, info);
> +        break;
> +
> +    case VREG32(ARM_SMMU_EVTQ_BASE):

VREG64

> +        *r =3D vreg_reg64_extract(smmu->evtq.q_base, info);
> +        break;
> +
> +    case VREG32(ARM_SMMU_EVTQ_PROD):
> +        *r =3D vreg_reg32_extract(smmu->evtq.prod, info);
> +        break;
> +
> +    case VREG32(ARM_SMMU_EVTQ_CONS):
> +        *r =3D vreg_reg32_extract(smmu->evtq.cons, info);
> +        break;
> +
> +    case VREG32(ARM_SMMU_IRQ_CTRL):
> +    case VREG32(ARM_SMMU_IRQ_CTRLACK):
> +        *r =3D vreg_reg32_extract(smmu->irq_ctrl, info);
> +        break;
> +
> +    case VREG64(ARM_SMMU_GERROR_IRQ_CFG0):
> +        *r =3D vreg_reg64_extract(smmu->gerror_irq_cfg0, info);
> +        break;
> +
> +    case VREG64(ARM_SMMU_EVTQ_IRQ_CFG0):
> +        *r =3D vreg_reg64_extract(smmu->evtq_irq_cfg0, info);
> +        break;
> +
> +    case VREG32(ARM_SMMU_GERROR):
> +        *r =3D vreg_reg64_extract(smmu->gerror, info);

vreg_reg32_extract

> +        break;
> +
> +    case VREG32(ARM_SMMU_GERRORN):
> +        *r =3D vreg_reg64_extract(smmu->gerrorn, info);

vreg_reg32_extract

> +        break;
> +
> +    default:
> +        printk(XENLOG_G_ERR
> +               "%pv: vSMMUv3: unhandled read r%d offset %"PRIpaddr"\n",
> +               v, info->dabt.reg, (unsigned long)info->gpa & 0xffff);
> +        return IO_ABORT;
> +    }
> +
> +    return IO_HANDLED;
> +
> + read_impl_defined:
> +    printk(XENLOG_G_DEBUG
> +           "%pv: vSMMUv3: RAZ on implementation defined register offset =
%"PRIpaddr"\n",
> +           v, info->gpa & 0xffff);
> +    *r =3D 0;
> +    return IO_HANDLED;
> +
> + read_reserved:
> +    printk(XENLOG_G_DEBUG
> +           "%pv: vSMMUv3: RAZ on reserved register offset %"PRIpaddr"\n"=
,
> +           v, info->gpa & 0xffff);
> +    *r =3D 0;
>     return IO_HANDLED;
> }

Cheers,
Luca



From xen-devel-bounces@lists.xenproject.org Fri Apr 10 15:41:09 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Fri, 10 Apr 2026 15:41:09 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1279379.1563815 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wBDyi-0004Le-2X; Fri, 10 Apr 2026 15:41:04 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1279379.1563815; Fri, 10 Apr 2026 15: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 1wBDyh-0004LX-Vs; Fri, 10 Apr 2026 15:41:03 +0000
Received: by outflank-mailman (input) for mailman id 1279379;
 Fri, 10 Apr 2026 15:41:02 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92) id 1wBDyg-0004LR-Kw
 for xen-devel@lists.xenproject.org; Fri, 10 Apr 2026 15:41:02 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wBDyg-00HZzn-10
 for xen-devel@lists.xenproject.org; Fri, 10 Apr 2026 17:41:02 +0200
Received: from [10.42.69.6] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <oleksii.kurochko@gmail.com>)
 id 69d919eb-e002-0a2a0a5209dd-0a2a4506ecb6-46
 for <xen-devel@lists.xenproject.org>; Fri, 10 Apr 2026 17:41:02 +0200
Received: from [209.85.128.48] (helo=mail-wm1-f48.google.com)
 by tlsNG-16d1c6.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.0)
 (envelope-from <oleksii.kurochko@gmail.com>)
 id 69d91a0d-0df0-0a2a45060019-d1558030ec1a-3
 for <xen-devel@lists.xenproject.org>; Fri, 10 Apr 2026 17:41:01 +0200
Received: by mail-wm1-f48.google.com with SMTP id
 5b1f17b1804b1-488aa77a06eso34707225e9.0
 for <xen-devel@lists.xenproject.org>; Fri, 10 Apr 2026 08:41:01 -0700 (PDT)
Received: from [192.168.1.6] (user-109-243-69-121.play-internet.pl.
 [109.243.69.121]) by smtp.gmail.com with ESMTPSA id
 5b1f17b1804b1-488d58a8445sm76853365e9.6.2026.04.10.08.41.00
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Fri, 10 Apr 2026 08:41:00 -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=20251104 header.d=gmail.com header.i="@gmail.com" header.h="Content-Transfer-Encoding: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=20251104; t=1775835661; x=1776440461; darn=lists.xenproject.org;
        h=content-transfer-encoding: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;
        bh=kooGstmI1qm/7v7twweO2WYTPflN8QuP2Iov/2zS4kc=;
        b=kLudQ+afaWbZBzq92iBDK9+gq3l4UwM4ftloHW76zJ+kD3hcatmH6c7NtJ/GYQzMuL
         eIAo7wDpVPIZI1DSwwhPfcNEVEw1/ivcfxCp0l4LKKH3HxRUZQKeE9/hJAZ/mASUCr5o
         B5B4/FetItM+K6AbVj+VmIBnalrB42V8QBIsTANZj7yzgyUvblds1/x06116F9KScYpv
         oBd0xtSjlrQI7pkqWiO+2XDymxCtHD/a94LqV+3kyV3LXt6WuFxqXrRfWW7zhB8h4R8j
         WUXfwPCSubgN16rkcQQmYJAN0fLmY21H4biG/r0dTe3KX89LLps9Ko+4bvnIGNaCdacc
         FbRA==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20251104; t=1775835661; x=1776440461;
        h=content-transfer-encoding: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;
        bh=kooGstmI1qm/7v7twweO2WYTPflN8QuP2Iov/2zS4kc=;
        b=d3jy0uAxuev2smlZ2vJE7zazy0yHI5wzZkqvO9huiY4AmZ7cH0xK3ZgBa7CF0/4aPJ
         z1VCEDdHD3WIokH8qSQd/BX227BaNSuBOlHt1S6RPpLWheLrsqv5Fg/3tu0A4vm+dD3J
         py5OueUvUUckar+zBQrHW0H/EahfvViFxtqsdyhve0mdNFANHhWjHe/4rOZrJjmxfYVo
         K66eYi6bXPbcpnNTqJGKKglicRtompsTVvBeQDmhdzgNN0Xg0Ex7gNYAZ0PKPmRgq1up
         OxRBeHsyUd/2q2QNmCFsL/TWCxrXnLIc1XwyunXovpFG/mS2mFVnd4PjWXCgho7LBQM1
         fEKg==
X-Forwarded-Encrypted: i=1; AJvYcCUmO8dviD+COavmOKZMQuzzddMMPpjZfyq8BiJXeqZoF8ryGFU6D4pvnPHP1KNH0xpi1s+GKRfQOmM=@lists.xenproject.org
X-Gm-Message-State: AOJu0YzdmeeV4UAS5/ZHfYZV+HIiWBGBgA7sWgc2QHgFIUNAIMszVt2x
	aIi1rslcRIYL7IpctcsBvIV4g8onHQiNMguksUmKz8dR7CaohpFs+sTa
X-Gm-Gg: AeBDies2ltV0McmtErolyB+nPBYU433l++rd2ShMzQbkqaMw5iAP4wbilAWSlrxkdyX
	JyHcA1Ko5jNlLVw6hn+TWbnudvgErbJwQW91iTwfss7wRJUPHmvghTFHII31pHMQH+CyS5nqAj4
	ZUCFxlddt860lUMNzqKQOXH9HDAyVLdgg6HzkR0idaaDwE48j1SI83vQhCGxDH8evStKXXbzG8b
	3L8XeZwR7kbv91JMkmng5mhMM9Q9j7GbVaAFeJowpRQqboiMu6yCbuobjfg60ZquZXfVq9lqdNi
	vhwoUCHjw0Box8Xwv8X1MpRZnIeEoR1C7eQlZr5JYiNMztF4VevEAMrSHWeOtRfoKjELrIXF5Y1
	l4QyjEa6xU6KwuxBeAVXkClSlMFRaIw56p6hNMrTPUdrOm504t0+sioscaZm49Gi74m3Qon26rk
	kHjFVmXT2cJiERf742Gd3f1nlYNDHbMGqxLC4KdmsJ4xRNTb/6XwyMsXORlf0CZblGzVBmS6O5f
	hQ=
X-Received: by 2002:a05:600c:608e:b0:488:78f2:6b0 with SMTP id 5b1f17b1804b1-488d688a11amr48305075e9.29.1775835661226;
        Fri, 10 Apr 2026 08:41:01 -0700 (PDT)
Message-ID: <b2c8e859-a91a-469f-b674-0942d240f0d9@gmail.com>
Date: Fri, 10 Apr 2026 17:40:59 +0200
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH v1 10/27] xen/riscv: generate IMSIC DT node for guest
 domains
To: Jan Beulich <jbeulich@suse.com>
Cc: Romain Caritey <Romain.Caritey@microchip.com>,
 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.pau@citrix.com>,
 Stefano Stabellini <sstabellini@kernel.org>, xen-devel@lists.xenproject.org
References: <cover.1773157782.git.oleksii.kurochko@gmail.com>
 <8154eae081d14da89f27bad581270cc5bba6ccfc.1773157782.git.oleksii.kurochko@gmail.com>
 <93e8407e-cff0-42cc-8cfd-2d82f536a886@suse.com>
Content-Language: en-US
From: Oleksii Kurochko <oleksii.kurochko@gmail.com>
In-Reply-To: <93e8407e-cff0-42cc-8cfd-2d82f536a886@suse.com>
Content-Type: text/plain; charset=UTF-8; format=flowed
Content-Transfer-Encoding: 7bit
X-purgate-ID: tlsNG-16d1c6/1775835661-5E12E3D8-AE8F947F/10/73395122804
X-purgate-type: spam
X-purgate-size: 4939



On 4/1/26 5:05 PM, Jan Beulich wrote:
> On 10.03.2026 18:08, Oleksii Kurochko wrote:
>> Guests using the IMSIC interrupt controller require a corresponding
>> Device Tree description. Add support for generating an IMSIC node when
>> building the guest DT.
>>
>> Keep a reference to the host IMSIC DT node and reuse its compatible
>> property while constructing the guest-visible node.
> 
> Again raises a migration concern. Presumably a guest would then be able
> to migrate only to other hosts with the same compatible property.

Right, but I don't think we can do too much and it is the simplest 
approach just to migrate to hosts with the same compatible property.

If you concern is about DTS property then for IMSIC it will be always 
riscv,imsics according to the RISC-V DT spec. (IIRC, the only other 
option could be qemu,riscv). Actually, I can just hard code 
"riscv,imsic" explicitly instead of re-using of host name.

If your concern is that we will migrate to a host which doesn't support 
IMSIC at all then we should or (a) don't migrate to such host or (b) 
provide an emulation of IMSIC. And option (b) would be terrible from at 
least performance point of view.

>> +static int __init imsic_set_interrupt_extended_prop(struct domain *d,
>> +                                                    void *fdt)
>> +{
>> +    uint32_t len = 0, pos = 0, cpu, phandle;
> 
> At least pos and cpu should be of fixed width types.

I thought that uint32_t is fixed width type, isn't it?

> 
>> +    uint32_t *irq_ext;
>> +    char buf[64];
> 
> Move this one into the loop's scope?

I will do that.

>> +    int res;
>> +
>> +    irq_ext = xvzalloc_array(uint32_t, d->max_vcpus * 2);
>> +    if ( !irq_ext )
>> +        return -ENOMEM;
>> +
>> +    for ( cpu = 0; cpu < d->max_vcpus; cpu++ )
>> +    {
>> +        snprintf(buf, sizeof(buf), "/cpus/cpu@%u/interrupt-controller", cpu);
>> +        phandle = fdt_get_phandle(fdt, fdt_path_offset(fdt, buf));
>> +
>> +        if ( phandle <= 0 )
>> +            return phandle;
> 
> <= is odd to use on an unsigned type. Arm, in a similar situation, uses != .

Agree, it should be !=.

> 
> Yet then - if 0 is an error indicator, aren't you converting this into a
> success indicator for the caller?

I read incorrectly the comment of what fdt_get_phandle() returns. so it 
should be:
         if ( !phandle )
         {
             res = -ENODEV;
             goto out;
         }

goto here as xvfree() should be called in this case.


> 
>> +        irq_ext[pos++] = cpu_to_be32(phandle);
>> +        len += sizeof(uint32_t);
> 
> As before, preferably sizeof(<expression>) to clarify the connection. It's
> pretty obvious here, but still. Yet then - do you really need to maintain
> "len"? Why not use ...
> 
>> +        irq_ext[pos++] = cpu_to_be32(IRQ_S_EXT);
>> +        len += sizeof(uint32_t);
>> +    }
>> +
>> +    res = fdt_property(fdt, "interrupts-extended", irq_ext, len);
> 
> ... "d->max_vcpus * 2 * sizeof(*irq_ext)" here?

Agree, it could and would be better.

> 
>> +    XVFREE(irq_ext);
> 
> This can be just xvfree(), as the variable goes out of scpoe just afterwards
> anyway.
> 
>> +    return res;
>> +}
>> +
>> +int __init imsic_make_dt_node(const struct kernel_info *kinfo)
> 
> So this function is unused until the next patch. Acceptable as long as Eclair
> (or other) scans aren't done for RISC-V, but generally you may want to try to
> get used to order patches such that this is avoided.
> 
>> +{
>> +    uint32_t len;
>> +    const void *data = NULL;
> 
> Why the initializer?

No, need any more, I had a case before so just missed to clean up properly.

> 
>> +    int res = 0;
>> +    void *fdt = kinfo->fdt;
>> +    const struct dt_device_node *host_imsic_node = imsic_cfg.host_node;
>> +    uint32_t *next_phandle = &kinfo->bd.d->arch.next_phandle;
>> +
>> +    res = fdt_begin_node(fdt, host_imsic_node->full_name);
>> +    if ( res )
>> +        return res;
>> +
>> +    data = dt_get_property(host_imsic_node, "compatible", &len);
>> +    if ( !data )
>> +    {
>> +        printk(XENLOG_ERR "%s: Can't find 'compatible' property\n",
>> +               host_imsic_node->full_name);
>> +
>> +        return -ENOENT;
>> +    }
> 
> Move fdt_begin_node() down below here?
> 
>> --- a/xen/arch/riscv/include/asm/imsic.h
>> +++ b/xen/arch/riscv/include/asm/imsic.h
>> @@ -57,11 +57,16 @@ struct imsic_config {
>>       /* MSI */
>>       const struct imsic_msi *msi;
>>   
>> +    /* DT node of IMSIC */
>> +    const struct dt_device_node *host_node;
> 
> Does "host" in the name carry much of a meaning? Maybe better dt_node, to
> (potentially) distinguish it from a NUMA node which also may need tracking
> for an imsic at some point?

Maybe, not too much. Lets rename it.

Thanks.

~ Oleksii


From xen-devel-bounces@lists.xenproject.org Fri Apr 10 15:45:26 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Fri, 10 Apr 2026 15:45:26 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1279396.1563824 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wBE2v-0004uJ-IH; Fri, 10 Apr 2026 15:45:25 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1279396.1563824; Fri, 10 Apr 2026 15:45: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 1wBE2v-0004uC-FB; Fri, 10 Apr 2026 15:45:25 +0000
Received: by outflank-mailman (input) for mailman id 1279396;
 Fri, 10 Apr 2026 15:45:24 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92) id 1wBE2u-0004u6-8R
 for xen-devel@lists.xenproject.org; Fri, 10 Apr 2026 15:45:24 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wBE2t-009K4U-KT
 for xen-devel@lists.xenproject.org; Fri, 10 Apr 2026 17:45:23 +0200
Received: from [10.42.69.3] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <oleksii.kurochko@gmail.com>)
 id 69d91b00-bab6-0a2a0a5309dd-0a2a4503b300-48
 for <xen-devel@lists.xenproject.org>; Fri, 10 Apr 2026 17:45:23 +0200
Received: from [209.85.128.51] (helo=mail-wm1-f51.google.com)
 by tlsNG-33051d.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.0)
 (envelope-from <oleksii.kurochko@gmail.com>)
 id 69d91b13-02b3-0a2a45030019-d1558033d46b-3
 for <xen-devel@lists.xenproject.org>; Fri, 10 Apr 2026 17:45:23 +0200
Received: by mail-wm1-f51.google.com with SMTP id
 5b1f17b1804b1-4852a9c6309so21049325e9.0
 for <xen-devel@lists.xenproject.org>; Fri, 10 Apr 2026 08:45:23 -0700 (PDT)
Received: from fedora (user-109-243-69-121.play-internet.pl. [109.243.69.121])
 by smtp.gmail.com with ESMTPSA id
 5b1f17b1804b1-488d58a8445sm77111195e9.6.2026.04.10.08.45.21
 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
 Fri, 10 Apr 2026 08:45:22 -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=20251104 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=20251104; t=1775835923; x=1776440723; 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;
        bh=92qdXREBVwsG+a0SGoPjpWEPYqqewbVtYm4T62FIQ3Y=;
        b=eL9rg+y53pajxd9Lvfi9yQXdtJchUuCyuXn1DvtbdRnEOe7PgEtPtz6pLlESVcLHPI
         y1R0uSWUDQi6Ef/KuHM2nAI1DiUcjAQOfVgDedntv/E2UiOE5Qx/b4N2nJf0LZ5cLrbK
         ja3HPaJ7u+n3XPENjiXIhLm13PmA2l+RzKc/tQBaOFoVXXzu65bVkiDk5XsDXy/ahtIL
         E4f5UO4swk0qjBkqUyaxRq5OIaqELYVYjEhUGn19CEONcqRJiZ3lC7vv7BLxqyb7u8/3
         rZnC/0Xmpvu1f/+icviFbRfDsDYS6IcgMWA0SIdQhTXtOjMy8KjaOt/uQ1eYvj1dQx5M
         ZSVQ==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20251104; t=1775835923; x=1776440723;
        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;
        bh=92qdXREBVwsG+a0SGoPjpWEPYqqewbVtYm4T62FIQ3Y=;
        b=lvLgOYPRH2dHDvxxxj7CYFWCv1ZnSRpAozYnrDtk05Gd1Q8/NpK/z7nGatjMCmwi6C
         EYeuFE9K6pbgxmK8Ev6bw7YXC+sso7UHPvvzgsaJtaMS1584d5bVUpUlPlsy3uY7cxzd
         l8GWbmUHjoS+e9FSOtY+pfMGoBT0uDIhITLQaKwbvG2pTzvPYjmOIWE5qysQuNaRHpJm
         kPoC9ODNqFJtcVXm1hro4NCEq/c0ywDevV5AFpENmhC8/WpibKQDif6Nb+VnxqC1rO2d
         bfc/ipYJpG4gvxAm31dBtVIjp2yE3wrLvtQiEMt7nug2mOe1ZdhlTuormVblyBA1bSeE
         tBXg==
X-Gm-Message-State: AOJu0YwAtqSWnkdFRkeb8OAXg5RYirMg4UfM1MmDpeizpAAa37+c6aSq
	2PCNQVjNAk52xfllxEYcgxmOjaiATlqYkNhPiDrj6wjayiE2a68VHOTm8KJaRQ==
X-Gm-Gg: AeBDies/dmz7DqYl1Hwd942MeSQylK34PbygMNuFM0vuHTsmP1JnNFfz/hqDQipsapp
	6DOuzaIg91e2IgSC9SFeWCDAn4aDhok7iYLjIyFUAN3S9ngJyVzeGxn9XSE0VPypzftMrNQHr2T
	alOOnufkHlBERTjKTAZXGRxrmN1Edt85jzbJd8JZ2mK1RGLudR4HpB5+IgJrhj01n6JpJBXq+5x
	yAdqcLbYwyKKlfeFHMkVnvyl62LkLHEyp5mPKmIY7aTveHYZU30gxdUN0VBVbB1l0w4uJ5z1Ua1
	GHxEisAofPVeD/X5BKlo4t0ao7AJ5fyAWOMsD4eXyFGcSXqNOC5PzwjW4KXHkHRsdO31lxZuClK
	2x+zwLVovmecKAuRDopcCYAoV2SE8X1c44+Xd8EomexlkCdBVZbh1D4fVZ4g9dAFu6rxjmq0gIU
	aaLFj+4mqAAnu6EtXAuxoZTvEHwdmBq88S6BBHlYiJGfOZeyH40aAUvnSKrRNDEaEt0A==
X-Received: by 2002:a05:600d:d:b0:485:ae14:8191 with SMTP id 5b1f17b1804b1-488d67b8da2mr38326035e9.5.1775835922606;
        Fri, 10 Apr 2026 08:45:22 -0700 (PDT)
From: Oleksii Kurochko <oleksii.kurochko@gmail.com>
To: xen-devel@lists.xenproject.org
Cc: Romain Caritey <Romain.Caritey@microchip.com>,
	Oleksii Kurochko <oleksii.kurochko@gmail.com>,
	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=20Pau=20Monn=C3=A9?= <roger.pau@citrix.com>,
	Stefano Stabellini <sstabellini@kernel.org>
Subject: [PATCH] xen/riscv: allow Xen to use SSTC while hiding it from guests
Date: Fri, 10 Apr 2026 17:45:12 +0200
Message-ID: <eba232ac5a338332ddedc2cb084e0c04ee8744c2.1775835741.git.oleksii.kurochko@gmail.com>
X-Mailer: git-send-email 2.53.0
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit
X-purgate-ID: tlsNG-33051d/1775835923-41914C9A-FA4B47EF/10/73395122804
X-purgate-type: spam
X-purgate-size: 13274

OpenSBI currently does not advertise the SSTC extension via the device
tree, so if SSTC support is detected by Xen the riscv_isa bitmap is updated
manually. Furthermore, removing the "sstc" string from riscv,isa is not
a reliable way to disable SSTC, because OpenSBI probes support by
attempting to access CSR_STIMECMP.

Introduce a runtime probe in Xen to determine whether SSTC is available.
The probe attempts to read CSR_STIMECMP using csr_read_safe(). If the
access succeeds, SSTC is considered available; if a trap occurs, it is
treated as unsupported.

When SSTC is detected, Xen may use it internally to program timers.
However, the extension is not exposed to guests because the required
context switch handling for the SSTC CSRs is not yet implemented.

Note: clearing RISCV_ISA_EXT_sstc from the DTS riscv,isa property is
deferred to a follow-up patch. Also, the corresponding HENVCFG bit is
not set so guests fall back to the SBI timer interface. Timer requests
are then handled by Xen via the usual SBI interception path.

Introduce set_xen_timer() to abstract how the timer is programmed,
either via the SSTC extension or an SBI call.

Drop sbi_set_timer() as it is more than enough to have only introduced
set_xen_timer().

Drop "SBI v0.2 TIME extension detected" message to avoid confusion
which set timer function is really used.

Signed-off-by: Oleksii Kurochko <oleksii.kurochko@gmail.com>
---
CI tests: https://gitlab.com/xen-project/people/olkur/xen/-/pipelines/2437772678


Also, I've manually ran QEMU with SSTC=on/off and built Xen with a newer RISC-V
compileer (in comparison with the version used by CI's docker container) to
verify CONFIG_CC_HAS_ASM_GOTO_OUTPUT branch inside csr_read_safe().
---
Changes in v3:
 - Reword print message when SSTC extension is detected.
 - s/__clear_bit/__set_bit() for the case when SSTC is detected in
   riscv_fill_hwcap().
   Update also the comment above __set_bit().
 - Drop BUG_ON()s in vtimer.c.
 - s/printk/dprintk for the message: SSTC detected...
 - Drop sbi_set_timer global variable, it is enough just to have set_xen_timer.
 - As we set bit in riscv_isa bitmap there is no need to use csr_read_safe(CSR_STIMECMP) second time.
 - Move init of CSR_VSTIMECMP in preinit_xen_time as it looks more correct place.
 - Update the commit message.
---
Changes in v2:
 - Minor style fixes.
 - Drop from vcpu_csr_init() setting of SSTC bit in HENVCFG register. Add it
   back when SSTC for guests will be available.
 - Add static to set_xen_timer function pointer.
 - Refactor sstc_set_xen_timer().
 - s/csr_allowed_read/csr_read_safe()
---
 xen/arch/riscv/cpufeature.c                 | 18 ++++++++
 xen/arch/riscv/include/asm/cpufeature.h     |  1 +
 xen/arch/riscv/include/asm/riscv_encoding.h |  2 +
 xen/arch/riscv/include/asm/sbi.h            | 18 --------
 xen/arch/riscv/include/asm/time.h           |  3 ++
 xen/arch/riscv/sbi.c                        | 29 ++++++++++---
 xen/arch/riscv/time.c                       | 48 ++++++++++++++-------
 xen/arch/riscv/vtimer.c                     |  1 +
 8 files changed, 81 insertions(+), 39 deletions(-)

diff --git a/xen/arch/riscv/cpufeature.c b/xen/arch/riscv/cpufeature.c
index 03e27b037be0..92235fdfd5ab 100644
--- a/xen/arch/riscv/cpufeature.c
+++ b/xen/arch/riscv/cpufeature.c
@@ -17,6 +17,7 @@
 #include <xen/sections.h>
 
 #include <asm/cpufeature.h>
+#include <asm/csr.h>
 
 #ifdef CONFIG_ACPI
 # error "cpufeature.c functions should be updated to support ACPI"
@@ -139,6 +140,7 @@ const struct riscv_isa_ext_data __initconst riscv_isa_ext[] = {
     RISCV_ISA_EXT_DATA(smaia),
     RISCV_ISA_EXT_DATA(smstateen),
     RISCV_ISA_EXT_DATA(ssaia),
+    RISCV_ISA_EXT_DATA(sstc),
     RISCV_ISA_EXT_DATA(svade),
     RISCV_ISA_EXT_DATA(svpbmt),
 };
@@ -483,6 +485,7 @@ void __init riscv_fill_hwcap(void)
     unsigned int i;
     const size_t req_extns_amount = ARRAY_SIZE(required_extensions);
     bool all_extns_available = true;
+    unsigned long tmp;
 
     riscv_fill_hwcap_from_isa_string();
 
@@ -495,6 +498,21 @@ void __init riscv_fill_hwcap(void)
         panic("HW capabilities parsing failed: %s\n", failure_msg);
     }
 
+    if ( csr_read_safe(CSR_STIMECMP, &tmp) )
+    {
+        dprintk(XENLOG_DEBUG,
+                "SSTC detected; supported for Xen use, but not for guests\n");
+
+        /*
+         * As there is no any guarantee that SSTC will be added to riscv,isa
+         * property by OpenSBI(it doesn't add it now) or whatever ran before
+         * Xen, it is needed to set this bit manually.
+         *
+         * Guest isolation is maintained by not setting ENVCFG_STCE in henvcfg.
+         */
+        __set_bit(RISCV_ISA_EXT_sstc, riscv_isa);
+    }
+
     for ( i = 0; i < req_extns_amount; i++ )
     {
         const struct riscv_isa_ext_data ext = required_extensions[i];
diff --git a/xen/arch/riscv/include/asm/cpufeature.h b/xen/arch/riscv/include/asm/cpufeature.h
index ef02a3e26d2c..0c48d57a03bb 100644
--- a/xen/arch/riscv/include/asm/cpufeature.h
+++ b/xen/arch/riscv/include/asm/cpufeature.h
@@ -38,6 +38,7 @@ enum riscv_isa_ext_id {
     RISCV_ISA_EXT_smaia,
     RISCV_ISA_EXT_smstateen,
     RISCV_ISA_EXT_ssaia,
+    RISCV_ISA_EXT_sstc,
     RISCV_ISA_EXT_svade,
     RISCV_ISA_EXT_svpbmt,
     RISCV_ISA_EXT_MAX
diff --git a/xen/arch/riscv/include/asm/riscv_encoding.h b/xen/arch/riscv/include/asm/riscv_encoding.h
index dd15731a86fa..d0d60ba15e62 100644
--- a/xen/arch/riscv/include/asm/riscv_encoding.h
+++ b/xen/arch/riscv/include/asm/riscv_encoding.h
@@ -396,6 +396,8 @@
 #define CSR_VSTVAL			0x243
 #define CSR_VSIP			0x244
 #define CSR_VSATP			0x280
+#define CSR_VSTIMECMP		0x24d
+#define CSR_VSTIMECMPH		0x25d
 
 /* Virtual Interrupts and Interrupt Priorities (H-extension with AIA) */
 #define CSR_HVIEN			0x608
diff --git a/xen/arch/riscv/include/asm/sbi.h b/xen/arch/riscv/include/asm/sbi.h
index ed7af200288f..1952868e963c 100644
--- a/xen/arch/riscv/include/asm/sbi.h
+++ b/xen/arch/riscv/include/asm/sbi.h
@@ -13,7 +13,6 @@
 #define ASM__RISCV__SBI_H
 
 #include <xen/cpumask.h>
-#include <xen/sections.h>
 
 /* SBI-defined implementation ID */
 #define SBI_XEN_IMPID 7
@@ -139,23 +138,6 @@ int sbi_remote_hfence_gvma(const cpumask_t *cpu_mask, vaddr_t start,
 int sbi_remote_hfence_gvma_vmid(const cpumask_t *cpu_mask, vaddr_t start,
                                 size_t size, unsigned long vmid);
 
-/*
- * Programs the clock for next event at (or after) stime_value. stime_value is
- * in absolute time. This function must clear the pending timer interrupt bit
- * as well.
- *
- * If the supervisor wishes to clear the timer interrupt without scheduling the
- * next timer event, it can either request a timer interrupt infinitely far
- * into the future (i.e., (uint64_t)-1), or it can instead mask the timer
- * interrupt by clearing sie.STIE CSR bit.
- *
- * The stime_value parameter represents absolute time measured in ticks.
- *
- * This SBI call returns 0 upon success or an implementation specific negative
- * error code.
- */
-extern int (* __ro_after_init sbi_set_timer)(uint64_t stime_value);
-
 /*
  * Initialize SBI library
  *
diff --git a/xen/arch/riscv/include/asm/time.h b/xen/arch/riscv/include/asm/time.h
index be3875b9984e..4d68900151a7 100644
--- a/xen/arch/riscv/include/asm/time.h
+++ b/xen/arch/riscv/include/asm/time.h
@@ -4,6 +4,7 @@
 
 #include <xen/bug.h>
 #include <xen/muldiv64.h>
+#include <xen/sections.h>
 
 #include <asm/csr.h>
 
@@ -26,6 +27,8 @@ static inline cycles_t get_cycles(void)
 
 void preinit_xen_time(void);
 
+extern int (* __ro_after_init set_xen_timer)(uint64_t deadline);
+
 #endif /* ASM__RISCV__TIME_H */
 
 /*
diff --git a/xen/arch/riscv/sbi.c b/xen/arch/riscv/sbi.c
index b4a7ae6940c1..3576e26033a5 100644
--- a/xen/arch/riscv/sbi.c
+++ b/xen/arch/riscv/sbi.c
@@ -22,6 +22,7 @@
 
 #include <asm/processor.h>
 #include <asm/sbi.h>
+#include <asm/time.h>
 
 static unsigned long __ro_after_init sbi_spec_version = SBI_SPEC_VERSION_DEFAULT;
 
@@ -249,6 +250,21 @@ static int (* __ro_after_init sbi_rfence)(unsigned long fid,
                                           unsigned long arg4,
                                           unsigned long arg5);
 
+/*
+ * Programs the clock for next event at (or after) stime_value. stime_value is
+ * in absolute time. This function must clear the pending timer interrupt bit
+ * as well.
+ *
+ * If the supervisor wishes to clear the timer interrupt without scheduling the
+ * next timer event, it can either request a timer interrupt infinitely far
+ * into the future (i.e., (uint64_t)-1), or it can instead mask the timer
+ * interrupt by clearing sie.STIE CSR bit.
+ *
+ * The stime_value parameter represents absolute time measured in ticks.
+ *
+ * This SBI call returns 0 upon success or an implementation specific negative
+ * error code.
+ */
 static int cf_check sbi_set_timer_v02(uint64_t stime_value)
 {
     struct sbiret ret;
@@ -264,6 +280,10 @@ static int cf_check sbi_set_timer_v02(uint64_t stime_value)
     return sbi_err_map_xen_errno(ret.error);
 }
 
+/*
+ * Legacy SBI v0.1 SET_TIMER; functionally equivalent to sbi_set_timer_v02
+ * from Xen's perspective.
+ */
 static int cf_check sbi_set_timer_v01(uint64_t stime_value)
 {
     struct sbiret ret;
@@ -279,8 +299,6 @@ static int cf_check sbi_set_timer_v01(uint64_t stime_value)
     return sbi_err_map_xen_errno(ret.error);
 }
 
-int (* __ro_after_init sbi_set_timer)(uint64_t stime_value) = sbi_set_timer_v01;
-
 int sbi_remote_sfence_vma(const cpumask_t *cpu_mask, vaddr_t start,
                           size_t size)
 {
@@ -360,10 +378,9 @@ int __init sbi_init(void)
         }
 
         if ( sbi_probe_extension(SBI_EXT_TIME) > 0 )
-        {
-            sbi_set_timer = sbi_set_timer_v02;
-            dprintk(XENLOG_INFO, "SBI v0.2 TIME extension detected\n");
-        }
+            set_xen_timer = sbi_set_timer_v02;
+        else
+            set_xen_timer = sbi_set_timer_v01;
     }
     else
         panic("Ooops. SBI spec version 0.1 detected. Need to add support");
diff --git a/xen/arch/riscv/time.c b/xen/arch/riscv/time.c
index 7efa76fdbcb1..80f0e9ddae6a 100644
--- a/xen/arch/riscv/time.c
+++ b/xen/arch/riscv/time.c
@@ -7,12 +7,24 @@
 #include <xen/time.h>
 #include <xen/types.h>
 
+#include <asm/cpufeature.h>
 #include <asm/csr.h>
-#include <asm/sbi.h>
 
 unsigned long __ro_after_init cpu_khz; /* CPU clock frequency in kHz. */
 uint64_t __ro_after_init boot_clock_cycles;
 
+static int cf_check sstc_set_xen_timer(uint64_t deadline)
+{
+    csr_write(CSR_STIMECMP, deadline);
+#ifdef CONFIG_RISCV_32
+    csr_write(CSR_STIMECMPH, deadline >> 32);
+#endif
+
+    return 0;
+}
+
+int (* __ro_after_init set_xen_timer)(uint64_t deadline);
+
 s_time_t get_s_time(void)
 {
     uint64_t ticks = get_cycles() - boot_clock_cycles;
@@ -61,20 +73,7 @@ int reprogram_timer(s_time_t timeout)
     if ( deadline <= now )
         return 0;
 
-    /*
-     * TODO: When the SSTC extension is supported, it would be preferable to
-     *       use the supervisor timer registers directly here for better
-     *       performance, since an SBI call and mode switch would no longer
-     *       be required.
-     *
-     *       This would also reduce reliance on a specific SBI implementation.
-     *       For example, it is not ideal to panic() if sbi_set_timer() returns
-     *       a non-zero value. Currently it can return 0 or -ENOSUPP, and
-     *       without SSTC we still need an implementation because only the
-     *       M-mode timer is available, and it can only be programmed in
-     *       M-mode.
-     */
-    if ( (rc = sbi_set_timer(deadline)) )
+    if ( (rc = set_xen_timer(deadline)) )
         panic("%s: timer wasn't set because: %d\n", __func__, rc);
 
     /* Enable timer interrupt */
@@ -91,4 +90,23 @@ void __init preinit_xen_time(void)
         panic("%s: ACPI isn't supported\n", __func__);
 
     boot_clock_cycles = get_cycles();
+
+    /* set_xen_timer must have been set by sbi_init() already */
+    ASSERT(set_xen_timer);
+
+    if ( riscv_isa_extension_available(NULL, RISCV_ISA_EXT_sstc) )
+    {
+        set_xen_timer = sstc_set_xen_timer;
+
+        /*
+         * A VS-timer interrupt becomes pending whenever the value of
+         * (time + htimedelta) is greater than or equal to vstimecmp CSR.
+         * Thereby to avoid spurious VS-timer irqs set vstimecmp CSR to
+         * ULONG_MAX.
+         */
+        csr_write(CSR_VSTIMECMP, ULONG_MAX);
+#ifdef CONFIG_RISCV_32
+        csr_write(CSR_VSTIMECMPH, ULONG_MAX);
+#endif
+    }
 }
diff --git a/xen/arch/riscv/vtimer.c b/xen/arch/riscv/vtimer.c
index afd8a53a7387..d5a8dfcb2edb 100644
--- a/xen/arch/riscv/vtimer.c
+++ b/xen/arch/riscv/vtimer.c
@@ -4,6 +4,7 @@
 #include <xen/sched.h>
 #include <xen/timer.h>
 
+#include <asm/cpufeature.h>
 #include <asm/vtimer.h>
 
 static void vtimer_expired(void *data)
-- 
2.53.0



From xen-devel-bounces@lists.xenproject.org Fri Apr 10 15:55:17 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Fri, 10 Apr 2026 15:55:17 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1279414.1563842 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wBECQ-00070B-PV; Fri, 10 Apr 2026 15:55:14 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1279414.1563842; Fri, 10 Apr 2026 15:55: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 1wBECQ-000702-KQ; Fri, 10 Apr 2026 15:55:14 +0000
Received: by outflank-mailman (input) for mailman id 1279414;
 Fri, 10 Apr 2026 15:55:12 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92) id 1wBECO-0006mB-Ch
 for xen-devel@lists.xenproject.org; Fri, 10 Apr 2026 15:55:12 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wBECM-00Cwd5-71
 for xen-devel@lists.xenproject.org; Fri, 10 Apr 2026 17:55:11 +0200
Received: from [10.42.69.10] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <oleksii.kurochko@gmail.com>)
 id 69d91d5e-bab6-0a2a0a5309dd-0a2a450abe1c-6
 for <xen-devel@lists.xenproject.org>; Fri, 10 Apr 2026 17:55:11 +0200
Received: from [209.85.128.51] (helo=mail-wm1-f51.google.com)
 by tlsNG-4011c0.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.0)
 (envelope-from <oleksii.kurochko@gmail.com>)
 id 69d91d5f-ee98-0a2a450a0019-d1558033c175-3
 for <xen-devel@lists.xenproject.org>; Fri, 10 Apr 2026 17:55:11 +0200
Received: by mail-wm1-f51.google.com with SMTP id
 5b1f17b1804b1-4838c15e3cbso19690445e9.3
 for <xen-devel@lists.xenproject.org>; Fri, 10 Apr 2026 08:55:11 -0700 (PDT)
Received: from fedora (user-109-243-69-121.play-internet.pl. [109.243.69.121])
 by smtp.gmail.com with ESMTPSA id
 5b1f17b1804b1-488d5b3c597sm78285605e9.12.2026.04.10.08.55.09
 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
 Fri, 10 Apr 2026 08:55:10 -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=20251104 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=20251104; t=1775836511; x=1776441311; 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;
        bh=MSz7tlr6rhlyBnCcpNqgWXaL+9iidsazDOLEUrgU1Kw=;
        b=hkRvH8V/UMxke5UZ1Lwi2OAgzeNI7sqEUD29pCsTTe3itNieOme7Hc3EAA7NjFTIRl
         Vg/GC34oJLhcnG5KGK7lsg7PxSvrqKtId9ybvREqAuXukabeuDRnKZRIU5X/GxoZpeQm
         ql6rx8xuh9TO2fzSn/4WFVXF+tfUiXvedGj+m0N/AB18Djdp8ZXCszgIPQv6jXF0/S8V
         INQpZ6O/T3kbmakXPUOd4WQfgh0JGJE605R6pZC3Hj18o0MyZ9EYTsLZ2LbFKzHJzVw7
         IPU0J+PwNdw01LreR+X4H5Yxaybv5St5PrzwUUWDrInkv9Kf4Tnzj5tdO8o9OgJwf/PS
         dMCQ==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20251104; t=1775836511; x=1776441311;
        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;
        bh=MSz7tlr6rhlyBnCcpNqgWXaL+9iidsazDOLEUrgU1Kw=;
        b=dt6sdg9BVxKEd4BpZpyuzZUuxmdla3b4BofA9WHqgGcN+mhMlQxPbfoKN0wmVY8VUp
         tZgGHDSMNOrV59XiknF1SYmwTl9VvviW/YT3i5+Yi7qNcg7L8t3Utoxv/7ocvAW3/iWy
         O9pkhu0UBKdOS+SF8GYXmkTiXoTN3Q5e4q9yZJpHXh5FSGeYPrYZ1/kgQkB9VziT65DM
         /EWflfYDuZmYiTmnGFsbgA52Hf54c4B2qCNjTSjWijOcbAz3FUQx8gfNZLkbAgRx2+b2
         T/7bO8eddLXypU4iS2dyzX+eQQa+MdcqG7bqLnFsGkXqzjczBqOKy89tYggEA7Q+Apv4
         zcWw==
X-Gm-Message-State: AOJu0YwrqLSP8cVfERwMt1qomEvtaYCevJd9l8BF6wOySJky+RGiIR7q
	tuoTLYAtVYz7kgYBKheatPsZJw3lQ08CaAJC1JXONVkF1PDdWlKaxwRwapvJgw==
X-Gm-Gg: AeBDiev67pnAEQgFEWo0ghAKMhFtjZsftWc833YSkNx40YbWcIECY9rEIxwWAYK9uuG
	Tgft9YInLQM9IfaAnI0AfjH8S84FMvMr50NtK52+/esfdbN/IyGunR3NYWcX3j7JoueefKSP+BJ
	jhsOC/n+H8GGzNhFg+JltLLShHKQIjtBJlhSGXJd6rPKv2Gg8/ci9y/3YQW82OIjHkd2Ihwnwd2
	uYyiLSHtB3mSBKbCqZC02GonhJXfIx2afV/ydV/l5Ce1L4VJ1c5bZ36gNbVk9K3s3ndaa0Aj0rk
	DOcDVi8CqqG9SWcTx7+vg/dJa3Afox7t5Nm1tUsj5Tvx+VhpFRrjL8MxPP9PzQurMW1R4t1UNDT
	UxUs/WxqOpJGXJGEdsLpVzA+WKeH9Ia3eXbsURz/JxW/w6gOOvipMvPW6c87MiRHRhC2bqADq48
	WXCrdDP7Bi+4hpiUMUfG/n45owLDOSRyJthppM+YL7OxetCVCr1Bw0gpQXgrNMoOHmOA==
X-Received: by 2002:a05:600d:1c:b0:487:1108:48bc with SMTP id 5b1f17b1804b1-488d6836d87mr38497135e9.17.1775836510630;
        Fri, 10 Apr 2026 08:55:10 -0700 (PDT)
From: Oleksii Kurochko <oleksii.kurochko@gmail.com>
To: xen-devel@lists.xenproject.org
Cc: Romain Caritey <Romain.Caritey@microchip.com>,
	Oleksii Kurochko <oleksii.kurochko@gmail.com>,
	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=20Pau=20Monn=C3=A9?= <roger.pau@citrix.com>,
	Stefano Stabellini <sstabellini@kernel.org>
Subject: [PATCH v3 01/12] xen/riscv: implement get_page_from_gfn()
Date: Fri, 10 Apr 2026 17:54:47 +0200
Message-ID: <e32db25650546146594635821441494ee86648e9.1775836193.git.oleksii.kurochko@gmail.com>
X-Mailer: git-send-email 2.53.0
In-Reply-To: <cover.1775836193.git.oleksii.kurochko@gmail.com>
References: <cover.1775836193.git.oleksii.kurochko@gmail.com>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit
X-purgate-ID: tlsNG-4011c0/1775836511-C58140B1-46DD9E41/10/73395122804
X-purgate-type: spam
X-purgate-size: 3227

The function is implemented out-of-line rather than as a static inline,
to avoid header ordering issues where struct domain is incomplete when
asm/p2m.h is included, leading to build failures:
  In file included from ./arch/riscv/include/asm/domain.h:10,
                   from ./include/xen/domain.h:16,
                   from ./include/xen/sched.h:11,
                   from ./include/xen/event.h:12,
                   from common/cpu.c:3:
  ./arch/riscv/include/asm/p2m.h: In function 'get_page_from_gfn':
  ./arch/riscv/include/asm/p2m.h:50:33: error: invalid use of undefined type 'struct domain'
     50 | #define p2m_get_hostp2m(d) (&(d)->arch.p2m)
        |                                 ^~
  ./arch/riscv/include/asm/p2m.h:180:38: note: in expansion of macro 'p2m_get_hostp2m'
    180 |         return p2m_get_page_from_gfn(p2m_get_hostp2m(d), _gfn(gfn), t);
        |                                      ^~~~~~~~~~~~~~~
  make[2]: *** [Rules.mk:253: common/cpu.o] Error 1
  make[1]: *** [build.mk:72: common] Error 2
  make: *** [Makefile:623: xen] Error 2

Signed-off-by: Oleksii Kurochko <oleksii.kurochko@gmail.com>
---
Changes in v3:
 - As nothing is called get_page_from_gfn() for system domains, leave only
   handling of not system domains.
---
Changes in v2:
 - Align implemntation with Arm's get_page_from_gfn().
 - Update the first comment about DOMID_XEN to mention that isn't "normal"
   domain instead of no-autotranslated.
 - Drop footer after commit message.
---
 xen/arch/riscv/include/asm/p2m.h |  8 ++------
 xen/arch/riscv/p2m.c             | 13 +++++++++++++
 2 files changed, 15 insertions(+), 6 deletions(-)

diff --git a/xen/arch/riscv/include/asm/p2m.h b/xen/arch/riscv/include/asm/p2m.h
index 60f27f9b347e..54ea67990f06 100644
--- a/xen/arch/riscv/include/asm/p2m.h
+++ b/xen/arch/riscv/include/asm/p2m.h
@@ -164,12 +164,8 @@ typedef unsigned int p2m_query_t;
 #define P2M_ALLOC    (1u<<0)   /* Populate PoD and paged-out entries */
 #define P2M_UNSHARE  (1u<<1)   /* Break CoW sharing */
 
-static inline struct page_info *get_page_from_gfn(
-    struct domain *d, unsigned long gfn, p2m_type_t *t, p2m_query_t q)
-{
-    BUG_ON("unimplemented");
-    return NULL;
-}
+struct page_info *get_page_from_gfn(struct domain *d, unsigned long gfn,
+                                    p2m_type_t *t, p2m_query_t q);
 
 static inline void memory_type_changed(struct domain *d)
 {
diff --git a/xen/arch/riscv/p2m.c b/xen/arch/riscv/p2m.c
index 89e5db606fc8..d63697c89a1a 100644
--- a/xen/arch/riscv/p2m.c
+++ b/xen/arch/riscv/p2m.c
@@ -1534,3 +1534,16 @@ void p2m_handle_vmenter(void)
      * won't be reused until need_flush is set to true.
      */
 }
+
+struct page_info *get_page_from_gfn(struct domain *d, unsigned long gfn,
+                                    p2m_type_t *t, p2m_query_t q)
+{
+    /*
+     * system domains are domains which doesn't have p2m translation tables,
+     * so they can't use p2m_get_page_from_gfn() and extra care should be
+     * done for them.
+     */
+    ASSERT(!is_system_domain(d));
+
+    return p2m_get_page_from_gfn(p2m_get_hostp2m(d), _gfn(gfn), t);
+}
-- 
2.53.0



From xen-devel-bounces@lists.xenproject.org Fri Apr 10 15:55:17 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Fri, 10 Apr 2026 15:55:17 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1279413.1563833 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wBECO-0006mJ-Ds; Fri, 10 Apr 2026 15:55:12 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1279413.1563833; Fri, 10 Apr 2026 15: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 1wBECO-0006mC-Ax; Fri, 10 Apr 2026 15:55:12 +0000
Received: by outflank-mailman (input) for mailman id 1279413;
 Fri, 10 Apr 2026 15:55:11 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92) id 1wBECN-0006m5-5K
 for xen-devel@lists.xenproject.org; Fri, 10 Apr 2026 15:55:11 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wBECM-00Cgo0-Cw
 for xen-devel@lists.xenproject.org; Fri, 10 Apr 2026 17:55:10 +0200
Received: from [10.42.69.7] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <oleksii.kurochko@gmail.com>)
 id 69d91d56-e002-0a2a0a5209dd-0a2a4507d84e-24
 for <xen-devel@lists.xenproject.org>; Fri, 10 Apr 2026 17:55:10 +0200
Received: from [209.85.128.48] (helo=mail-wm1-f48.google.com)
 by tlsNG-ef75cf.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.0)
 (envelope-from <oleksii.kurochko@gmail.com>)
 id 69d91d5e-ba2d-0a2a45070019-d1558030cd6f-3
 for <xen-devel@lists.xenproject.org>; Fri, 10 Apr 2026 17:55:10 +0200
Received: by mail-wm1-f48.google.com with SMTP id
 5b1f17b1804b1-48896199cbaso23595275e9.1
 for <xen-devel@lists.xenproject.org>; Fri, 10 Apr 2026 08:55:10 -0700 (PDT)
Received: from fedora (user-109-243-69-121.play-internet.pl. [109.243.69.121])
 by smtp.gmail.com with ESMTPSA id
 5b1f17b1804b1-488d5b3c597sm78285605e9.12.2026.04.10.08.55.08
 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
 Fri, 10 Apr 2026 08:55:09 -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=20251104 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=20251104; t=1775836510; x=1776441310; 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;
        bh=MaIju3ZsnFkp3Rq7IEFk2DGoNytbf6zEuSir2q0ipWY=;
        b=eT6vCf3tZbMJsEtQzjsOxAQJUcXmSbFhRQYe25XqJdsEQ6Zz3UfFiW+sWwvLnvpVSd
         qK9+hdsFVyO5z3AsjUmXlWhyuXwg5iDXsM1olkVzIjwJaOorySBtDVz3Qp859BQvqSLL
         ySt6c8nscwXfXXOuZIV99xqHLpJGutqQ55tAsnF8Ubwk3qD7F5C7INSwMNIX08joDxBg
         emsJbKlLW5O+5cAGHQlOMbC0+WXkiHEb47OJP6v36uu0/OzLBM3trh2dAZouEj4KJjm+
         y/1lqs+D/acd2+oc8GlXplLSu/aVYGhf8ygYhvSHtEygSSsMvqWMZcfxyDdSitlbwLhr
         lXwg==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20251104; t=1775836510; x=1776441310;
        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;
        bh=MaIju3ZsnFkp3Rq7IEFk2DGoNytbf6zEuSir2q0ipWY=;
        b=V5oDIrPYcTHjdnwwlbp5fNJMOmNdlyIxKJ9xtFOdSioUx66kuK039FUmZNY3YKFtIg
         o7oCsxgbIvcM92oggrxldG2LT60sU5E+tWpebCImX0JQz6jR3Bf7Pip9tJENwoADRpyS
         RoP2e2vmNRbhMY3Ca+GB368f6i106MpU6WjBNkgXLyhu/ryBhLAUPiFuCBtSMcPwz+O7
         EzQ8EJNtglCeqBaPY0bSluOhRvFskd3ReMTcLSBDxeLfQIcxZuF+FTCH0ptJEo1FKpuh
         4tHmZPHwX1jWdf5J4k/tQ9JwBbRJ3svKNl/K62RetmIVAAtLS9sRnAaBEGsjiEKbom0H
         VFYw==
X-Gm-Message-State: AOJu0YwIvqG477vGFlJJaiRZXWwXCjR1nPcF8sWvDmZzvuA0Yi4mIRAy
	ZP1QZ4dQ/zxjVVzEeeB62gEU+mpBcnATYz2xZIEToZ0WYcyLF6+eQ2lVwouWAg==
X-Gm-Gg: AeBDieu9Op4XwR05w4icD/ZLFodVxqR+rgIiavdJXXhrP33cQo5DyjKNL/Y1W+G1zK+
	EzlxR4YBo7PLTn2KYUiq7yB05tNEh/xHmTqq2QjkOEivA1EnNZ+m3SBmMKIgG3RuGvXHQciAAhd
	cPDcERBDxyuO6t5ncbsqwhZmsWBQsEdAsLJvlftg1AcHnbdT5tYQPfcP/mAh8VzY9qmxxIJycps
	s09kQP3zpKjRewWTUf80o1Ufb7Oe3xu4N7+gTf4Kw8MM1SDHjZi+fs8giVF1UhovYV1t6AbVjSr
	sW37ECpQ0ay4Vr++ArWs9a8SXXLlJ7DZTt1q8aFunQDmOelpOh0Z8r8raSptqXf5GUTqhwkKNgd
	shywIlaAmBl2J5Ycss/ULQj5reBxBaoQpIOyjkWSItAvaEprz5voJvfc1f6qdgAnqKb46+p4xX1
	atdp6Dnr/k0DVl1qUNzvNBHA/nGlCHyrN4bOR1nuVTqKG4VYpUa5Tui/a9EDwYlabQQw==
X-Received: by 2002:a05:600c:a413:b0:488:a639:b787 with SMTP id 5b1f17b1804b1-488d67f39admr37562325e9.11.1775836509469;
        Fri, 10 Apr 2026 08:55:09 -0700 (PDT)
From: Oleksii Kurochko <oleksii.kurochko@gmail.com>
To: xen-devel@lists.xenproject.org
Cc: Romain Caritey <Romain.Caritey@microchip.com>,
	Oleksii Kurochko <oleksii.kurochko@gmail.com>,
	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=20Pau=20Monn=C3=A9?= <roger.pau@citrix.com>,
	Stefano Stabellini <sstabellini@kernel.org>,
	Bertrand Marquis <bertrand.marquis@arm.com>,
	Volodymyr Babchuk <Volodymyr_Babchuk@epam.com>
Subject: [PATCH v3 00/12] RISCV: enable DOMAIN_BUILD_HELPERS
Date: Fri, 10 Apr 2026 17:54:46 +0200
Message-ID: <cover.1775836193.git.oleksii.kurochko@gmail.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-purgate-ID: tlsNG-ef75cf/1775836510-1039741E-9F89EDB6/10/73395122804
X-purgate-type: spam
X-purgate-size: 3110


Introduce necessary things to enable DOMAIN_BUILD_HELPERS config for RISC-V.

Generally it is indepenent patch series from [1] but depends on which
patches will go first it could be some merge conflicts.

[1] https://lore.kernel.org/xen-devel/eba232ac5a338332ddedc2cb084e0c04ee8744c2.1775835741.git.oleksii.kurochko@gmail.com/T/#u

CI tests: https://gitlab.com/xen-project/people/olkur/xen/-/pipelines/2444698148

---
Changes in v3:
 - Address the comments from ML.
---
Changes in v2:
 - Address the comments from ML.
 - Introduce some new patches to make dom0less solution more architecture
   indepenent from terminology point of view.
 - Minor fixes.
---

Oleksii Kurochko (12):
  xen/riscv: implement get_page_from_gfn()
  xen: fix len type for guest copy functions
  xen/riscv: implement copy_to_guest_phys()
  xen/dom0less: rename kernel_zimage_probe() to kernel_image_probe()
  xen/riscv: add kernel loading support
  xen: move declaration of fw_unreserved_regions() to common header
  xen: introduce domain-layout.h with common domain_use_host_layout()
  xen/riscv: rework G-stage mode handling
  xen: rename p2m_ipa_bits to p2m_gpa_bits
  xen/riscv: introduce p2m_gpa_bits
  xen/riscv: add definition of guest RAM banks
  xen/riscv: enable DOMAIN_BUILD_HELPERS

 xen/arch/arm/domain_build.c               |   1 +
 xen/arch/arm/guestcopy.c                  |   6 +-
 xen/arch/arm/include/asm/domain.h         |  14 --
 xen/arch/arm/include/asm/guest_access.h   |   2 +-
 xen/arch/arm/include/asm/p2m.h            |   2 +
 xen/arch/arm/include/asm/setup.h          |   3 -
 xen/arch/arm/kernel.c                     |  48 ++---
 xen/arch/arm/vgic-v3.c                    |   1 +
 xen/arch/riscv/Kconfig                    |   1 +
 xen/arch/riscv/Makefile                   |   3 +
 xen/arch/riscv/dom0less-build.c           |  30 +++
 xen/arch/riscv/guestcopy.c                | 116 +++++++++++
 xen/arch/riscv/include/asm/config.h       |  13 ++
 xen/arch/riscv/include/asm/domain.h       |   1 +
 xen/arch/riscv/include/asm/guest-layout.h |  23 +++
 xen/arch/riscv/include/asm/guest_access.h |   7 +
 xen/arch/riscv/include/asm/p2m.h          |  29 +--
 xen/arch/riscv/kernel.c                   | 230 ++++++++++++++++++++++
 xen/arch/riscv/p2m.c                      | 141 +++++++++----
 xen/arch/riscv/vmid.c                     |   2 +-
 xen/common/device-tree/domain-build.c     |   3 +-
 xen/common/device-tree/kernel.c           |   2 +-
 xen/include/public/arch-riscv.h           |   5 +
 xen/include/xen/bootinfo.h                |   4 +
 xen/include/xen/domain-layout.h           |  28 +++
 xen/include/xen/fdt-domain-build.h        |   2 +-
 xen/include/xen/fdt-kernel.h              |  15 +-
 27 files changed, 631 insertions(+), 101 deletions(-)
 create mode 100644 xen/arch/riscv/dom0less-build.c
 create mode 100644 xen/arch/riscv/guestcopy.c
 create mode 100644 xen/arch/riscv/include/asm/guest-layout.h
 create mode 100644 xen/arch/riscv/kernel.c
 create mode 100644 xen/include/xen/domain-layout.h

-- 
2.53.0



From xen-devel-bounces@lists.xenproject.org Fri Apr 10 15:55:17 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Fri, 10 Apr 2026 15:55:17 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1279417.1563860 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wBECS-0007Rt-8I; Fri, 10 Apr 2026 15:55:16 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1279417.1563860; Fri, 10 Apr 2026 15:55: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 1wBECS-0007Rm-3W; Fri, 10 Apr 2026 15:55:16 +0000
Received: by outflank-mailman (input) for mailman id 1279417;
 Fri, 10 Apr 2026 15:55:14 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92) id 1wBECQ-0006zi-FM
 for xen-devel@lists.xenproject.org; Fri, 10 Apr 2026 15:55:14 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wBECP-00DRdD-RY
 for xen-devel@lists.xenproject.org; Fri, 10 Apr 2026 17:55:13 +0200
Received: from [10.42.69.6] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <oleksii.kurochko@gmail.com>)
 id 69d91d5f-2eae-0a2a0a5409dd-0a2a4506e8bc-12
 for <xen-devel@lists.xenproject.org>; Fri, 10 Apr 2026 17:55:13 +0200
Received: from [209.85.128.53] (helo=mail-wm1-f53.google.com)
 by tlsNG-16d1c6.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.0)
 (envelope-from <oleksii.kurochko@gmail.com>)
 id 69d91d61-0df0-0a2a45060019-d1558035b098-3
 for <xen-devel@lists.xenproject.org>; Fri, 10 Apr 2026 17:55:13 +0200
Received: by mail-wm1-f53.google.com with SMTP id
 5b1f17b1804b1-483487335c2so24236935e9.2
 for <xen-devel@lists.xenproject.org>; Fri, 10 Apr 2026 08:55:13 -0700 (PDT)
Received: from fedora (user-109-243-69-121.play-internet.pl. [109.243.69.121])
 by smtp.gmail.com with ESMTPSA id
 5b1f17b1804b1-488d5b3c597sm78285605e9.12.2026.04.10.08.55.12
 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
 Fri, 10 Apr 2026 08:55:12 -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=20251104 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=20251104; t=1775836513; x=1776441313; 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;
        bh=SFYf07Rw6EEigOnFsAjQXEHqS/FUbbC2HqDC1ySUOAc=;
        b=N6OCPPryxPDH7i+Guk+LEXdipKtQX3Sc+ngp9MAxVonaOmZBiy3xMVAs+TfcFSzJfO
         hQ4oTcZGx/YbJXlzUU5sy2wuwVWIQFUOEL1G3zHWLLCGgW/VvdgoA83NMbAsT19YxXzd
         lodJW3SfrYsJUtzSICLQWqTAVtGzHu4YYx7vmZMf8Jj6jVD6xuAs4lVk57RuT1HBZ2OD
         UmG8936YUFyVjbSae40yY90IlOyGJ0Wh7gZnYdMuX22eCo8bbWj7yg7USe8ZvqY7oC9h
         pWTc2XiH8w/CNmDnqPw9ypQJuLa2ZuiXJ+P1+h5hvPVq4CI4dPhZKoswbJxkzjjNjbBD
         EWpw==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20251104; t=1775836513; x=1776441313;
        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;
        bh=SFYf07Rw6EEigOnFsAjQXEHqS/FUbbC2HqDC1ySUOAc=;
        b=Qthazv9dAehQ2XuRWmLRNojclxs2rJMfBkuJ505hFza9KsPcNoOZYs8b/xi+C+Rs34
         xSNumr3Y0QJUqH4d0ZImjNddsn8ODFExDWmAqLXZpBDFgsMCt1Mu/QO9+tViXzfMQYwu
         p5acvo03a49DPC/RqOSTYPBj/9XdOe3ilYTyP+JxEafysLj6RznEltZTKK+4FInjLF9k
         cS9v64PFGBNJ/kAAJYDqUxL7ioII5QE48HGpveEe13VfwvkH6bmzZbaICdQffLWdc8hB
         5ADXDfDmB/DSJaLEZZRQFGgXmdJml9NGPz262IdwINW88WHNaD5JW47yQK3xnEquQvdD
         S+3Q==
X-Gm-Message-State: AOJu0YyEcnJ/acFY8B2AR2VRsUV3WGw/BF2IJ8wK9IjhAFAwEQ33R8KU
	1OFUiprNJX6f+efKk0IKtATOBRXSG/puKgJMrIoN23CL/FfJT4je5xCaFozkHA==
X-Gm-Gg: AeBDieskIljIoEUIFJtGtskyrFL50/IF/jouza3zJUmNW503GalNyyuIZuV5rLJouwE
	Jlw+H7zptksKpCW3ffCnSBDj5n2mUmDvZbRARpgxXkk5/vl7PVai4MV1PeqJE7TNoTGjd6Ihx+K
	MY/QOP2Ysktgo5ffAKPkTHz9IjPi7JaJagD2qPLLtuftj78x/x0BWeEuWNg4dISss+HhQzOzU16
	0WlETY1FychPAXoKLAndVq4gRDYIdqzbZowpG6Pr0lMIuqH9ycczUzkndYPn43WXFPrJq1QPuUO
	cX+mUJcG6wuRX3hhOnQTy9yZ3kTZwip/MZoN8trwByrNLVQFSMiG25tAZMpohJas9EtMZV7Ib+S
	EPjzty5i+JaxytqMGiTK5HcdEF76GXKQyqyBC18YGsMcd6poZFzgCqV/RErtySGPpxEs6+6YOGO
	W913ibbR7HYdj32lHhb5aHo1XgzKu7Rr+IBGZWDGdlzIY20VjaMaRayATDAAGYvVEBrg==
X-Received: by 2002:a05:600c:45cf:b0:483:8062:b2f with SMTP id 5b1f17b1804b1-488d67b8dddmr46630205e9.6.1775836513001;
        Fri, 10 Apr 2026 08:55:13 -0700 (PDT)
From: Oleksii Kurochko <oleksii.kurochko@gmail.com>
To: xen-devel@lists.xenproject.org
Cc: Romain Caritey <Romain.Caritey@microchip.com>,
	Oleksii Kurochko <oleksii.kurochko@gmail.com>,
	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=20Pau=20Monn=C3=A9?= <roger.pau@citrix.com>,
	Stefano Stabellini <sstabellini@kernel.org>
Subject: [PATCH v3 03/12] xen/riscv: implement copy_to_guest_phys()
Date: Fri, 10 Apr 2026 17:54:49 +0200
Message-ID: <265d9fe7c0ff46c1c969156c889e133593d57fff.1775836193.git.oleksii.kurochko@gmail.com>
X-Mailer: git-send-email 2.53.0
In-Reply-To: <cover.1775836193.git.oleksii.kurochko@gmail.com>
References: <cover.1775836193.git.oleksii.kurochko@gmail.com>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit
X-purgate-ID: tlsNG-16d1c6/1775836513-5FF3D3D8-2F861969/10/73395122804
X-purgate-type: spam
X-purgate-size: 6368

Introduce copy_to_guest_phys() for RISC-V, based on the Arm implementation.

Add a generic copy_guest() helper for copying to and from guest physical
(and potentially virtual addresses in the future), and implement
translate_get_page() to translate a guest physical address into a struct
page_info via the domain p2m.

Compared to the Arm code:
- Drop COPY_flush_dcache(), as no such use cases exist on RISC-V.
- Do not implement the linear mapping case, which is currently unused.
- Use PAGE_OFFSET() to initialize the local offset variable in copy_guest().

Signed-off-by: Oleksii Kurochko <oleksii.kurochko@gmail.com>
---
Changes in v3:
 - s/if (page == NULL)/if ( !page ).
 - Drop " - offset" for unmap_domain_page() inside copy_guest() function.
   unmap_domain_page() is expected to mask (or something similar) the page
   offset bits.
 - Change some types for functions as copy_to_guest_phys_cb function pointer
   prototype was changed too in the prev. commit.
---
Changes in v2:
 - Use BIT() instead of open-coding.
 - Rename COPY_ipa to COPY_gpa.
 - Rename COPY_linear to COPY_gva.
 - Use  BUG_ON(linear) instead if (lineer) + BUG_ON.
 - Rename arg liner to gva for translate_get_page().
 - Update translate_get_page() to properly handling write argument.
 - Return unsigned int for copy_guest() and copy_to_guest_phys() as
   len function parameter is only 'unsigned int'.
 - Reformat function arguments for alignment
---
 xen/arch/riscv/Makefile                   |   1 +
 xen/arch/riscv/guestcopy.c                | 116 ++++++++++++++++++++++
 xen/arch/riscv/include/asm/guest_access.h |   7 ++
 3 files changed, 124 insertions(+)
 create mode 100644 xen/arch/riscv/guestcopy.c

diff --git a/xen/arch/riscv/Makefile b/xen/arch/riscv/Makefile
index 04f02ad89cba..cfc3fdf7d208 100644
--- a/xen/arch/riscv/Makefile
+++ b/xen/arch/riscv/Makefile
@@ -4,6 +4,7 @@ obj-y += domain.o
 obj-$(CONFIG_EARLY_PRINTK) += early_printk.o
 obj-y += entry.o
 obj-y += extable.o
+obj-y += guestcopy.o
 obj-y += imsic.o
 obj-y += intc.o
 obj-y += irq.o
diff --git a/xen/arch/riscv/guestcopy.c b/xen/arch/riscv/guestcopy.c
new file mode 100644
index 000000000000..55a2d6597621
--- /dev/null
+++ b/xen/arch/riscv/guestcopy.c
@@ -0,0 +1,116 @@
+/* SPDX-License-Identifier: GPL-2.0-only */
+
+#include <xen/domain_page.h>
+#include <xen/page-size.h>
+#include <xen/sched.h>
+#include <xen/string.h>
+
+#include <asm/guest_access.h>
+
+#define COPY_from_guest     0U
+#define COPY_to_guest       BIT(0, U)
+#define COPY_gpa            0U
+#define COPY_gva            BIT(1, U)
+
+typedef union
+{
+    struct
+    {
+        struct vcpu *v;
+    } gva;
+
+    struct
+    {
+        struct domain *d;
+    } gpa;
+} copy_info_t;
+
+#define GVA_INFO(vcpu) ((copy_info_t) { .gva = { vcpu } })
+#define GPA_INFO(domain) ((copy_info_t) { .gpa = { domain } })
+
+static struct page_info *translate_get_page(copy_info_t info, uint64_t addr,
+                                            bool gva, bool write)
+{
+    p2m_type_t p2mt;
+    struct page_info *page;
+
+    /*
+     * Not implemented yet.
+     *
+     * If gva == true, the operation will likely require a struct vcpu
+     * rather than just a struct domain. For this reason copy_info_t is
+     * already passed here instead of only struct domain.
+     */
+    BUG_ON(gva);
+
+    page = get_page_from_gfn(info.gpa.d, paddr_to_pfn(addr), &p2mt, P2M_ALLOC);
+
+    if ( !page )
+        return NULL;
+
+    if ( write ? p2mt != p2m_ram_rw : !p2m_is_ram(p2mt) )
+    {
+        put_page(page);
+        return NULL;
+    }
+
+    return page;
+}
+
+static unsigned long copy_guest(void *buf, uint64_t addr, unsigned long len,
+                                copy_info_t info, unsigned int flags)
+{
+    unsigned int offset = PAGE_OFFSET(addr);
+
+    BUILD_BUG_ON((sizeof(addr)) < sizeof(vaddr_t));
+    BUILD_BUG_ON((sizeof(addr)) < sizeof(paddr_t));
+
+    while ( len )
+    {
+        void *p;
+        unsigned long size = min_t(unsigned long, len, PAGE_SIZE - offset);
+        struct page_info *page;
+
+        page = translate_get_page(info, addr, flags & COPY_gva,
+                                  flags & COPY_to_guest);
+        if ( !page )
+            return len;
+
+        p = __map_domain_page(page);
+        p += offset;
+        if ( flags & COPY_to_guest )
+        {
+            /*
+             * buf will be NULL when the caller request to zero the
+             * guest memory.
+             */
+            if ( buf )
+                memcpy(p, buf, size);
+            else
+                memset(p, 0, size);
+        }
+        else
+            memcpy(buf, p, size);
+
+        unmap_domain_page(p);
+        put_page(page);
+        len -= size;
+        buf += size;
+        addr += size;
+
+        /*
+         * After the first iteration, guest virtual address is correctly
+         * aligned to PAGE_SIZE.
+         */
+        offset = 0;
+    }
+
+    return 0;
+}
+
+unsigned long copy_to_guest_phys(struct domain *d, paddr_t gpa, void *buf,
+                                 unsigned long len)
+{
+    return copy_guest(buf, gpa, len, GPA_INFO(d),
+                      COPY_to_guest | COPY_gpa);
+}
diff --git a/xen/arch/riscv/include/asm/guest_access.h b/xen/arch/riscv/include/asm/guest_access.h
index 7cd51fbbdead..8d679319ded0 100644
--- a/xen/arch/riscv/include/asm/guest_access.h
+++ b/xen/arch/riscv/include/asm/guest_access.h
@@ -2,6 +2,10 @@
 #ifndef ASM__RISCV__GUEST_ACCESS_H
 #define ASM__RISCV__GUEST_ACCESS_H
 
+#include <xen/types.h>
+
+struct domain;
+
 unsigned long raw_copy_to_guest(void *to, const void *from, unsigned len);
 unsigned long raw_copy_from_guest(void *to, const void *from, unsigned len);
 unsigned long raw_clear_guest(void *to, unsigned int len);
@@ -18,6 +22,9 @@ unsigned long raw_clear_guest(void *to, unsigned int len);
 #define guest_handle_okay(hnd, nr) (1)
 #define guest_handle_subrange_okay(hnd, first, last) (1)
 
+unsigned long copy_to_guest_phys(struct domain *d, paddr_t gpa, void *buf,
+                                 unsigned long len);
+
 #endif /* ASM__RISCV__GUEST_ACCESS_H */
 /*
  * Local variables:
-- 
2.53.0



From xen-devel-bounces@lists.xenproject.org Fri Apr 10 15:55:17 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Fri, 10 Apr 2026 15:55:17 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1279415.1563848 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wBECR-00073M-1v; Fri, 10 Apr 2026 15:55:15 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1279415.1563848; Fri, 10 Apr 2026 15:55: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 1wBECQ-00072l-Sd; Fri, 10 Apr 2026 15:55:14 +0000
Received: by outflank-mailman (input) for mailman id 1279415;
 Fri, 10 Apr 2026 15:55:13 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92) id 1wBECP-0006xl-DC
 for xen-devel@lists.xenproject.org; Fri, 10 Apr 2026 15:55:13 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wBECN-00Cwd5-7o
 for xen-devel@lists.xenproject.org; Fri, 10 Apr 2026 17:55:12 +0200
Received: from [10.42.69.12] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <oleksii.kurochko@gmail.com>)
 id 69d91d56-bab6-0a2a0a5309dd-0a2a450cb636-16
 for <xen-devel@lists.xenproject.org>; Fri, 10 Apr 2026 17:55:12 +0200
Received: from [209.85.128.50] (helo=mail-wm1-f50.google.com)
 by tlsNG-d25034.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.0)
 (envelope-from <oleksii.kurochko@gmail.com>)
 id 69d91d60-f40c-0a2a450c0019-d1558032cce8-3
 for <xen-devel@lists.xenproject.org>; Fri, 10 Apr 2026 17:55:12 +0200
Received: by mail-wm1-f50.google.com with SMTP id
 5b1f17b1804b1-488971db0fdso21891455e9.0
 for <xen-devel@lists.xenproject.org>; Fri, 10 Apr 2026 08:55:12 -0700 (PDT)
Received: from fedora (user-109-243-69-121.play-internet.pl. [109.243.69.121])
 by smtp.gmail.com with ESMTPSA id
 5b1f17b1804b1-488d5b3c597sm78285605e9.12.2026.04.10.08.55.10
 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
 Fri, 10 Apr 2026 08:55:11 -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=20251104 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=20251104; t=1775836512; x=1776441312; 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;
        bh=Kn185YypiDfOEWixrDVwqtteBm6bdiTVXiEGngdxI1A=;
        b=WMjkiq7nWY1QPOmYYFMstz0ihWMUut040lCHgRvWX7Tsgbf+SA4XlDOQ42/wqAq9Iu
         B32nDvUR48VyZ92ve75jF1EoVkvNvuVtnL02crGza3F7k/ZmLmz560aT7qs1FKZua5V5
         YujsCIdvEZkLRt0p/gTHvZzPJjQ74ZbkvwbZjDoBpkmpJjXk71TQ5YVpj+LLVt7pDJXh
         L1S2wKC86vySSdioa07VX+WmyJJw9z87RoaIGBWkbsD5pVsxNwBA1OXn/32H7ARUP0Pn
         gjt8ahAJzyW6qpmT31XtPYrOQajiPE9uHLJMbrO5M4/iccsVkqbQlNk355q7hxUk3/gl
         VSaw==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20251104; t=1775836512; x=1776441312;
        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;
        bh=Kn185YypiDfOEWixrDVwqtteBm6bdiTVXiEGngdxI1A=;
        b=ejsvwEFcLtaUJrlaa9Gx3JOUIB1MyUqDJ51erhVeuY2IMp9yHMC7gu4VBkWMUvgW3q
         IMU1+7qhD/ZjESqZc4vPQzELTrIIL44YZzb/xREoNWKrTwYWa9irHbJ2DJkFBd3a8qxK
         HS7Qo5KxRc4Ik7nurrgQW5Ftj7MEfSJT3U9FG49zofEpfXbYD+cAiUpqOmm4b8znB7CM
         CHDVp6I5F4hT3+dNw3wzSSkju26LaRx0huy7KJlezzm6nzMSUfcgyRtajk/3dD6KRU4N
         SoWGFgoYz89caXx3P4Fc7aUi8KAdeUwGIFzNYy4FHsW970Hu61+BVFqLAug3B50x4Vch
         1bUg==
X-Gm-Message-State: AOJu0YxwX8c2vSUslPaS9fZCpO6zBOklusSozm9UpBm2DP4pByEW/Bs5
	oNXTsj/ETrY3kV4NSEEvPnv/u+TX/y9O28F5QXEzvgil5NjY0CYG1siRGbY3ag==
X-Gm-Gg: AeBDiesf5UjMtT6c04JsHKu4o67YBDjOBWcqT8RcUpBG+sAoB1+xnQB9ezHckSaI/jZ
	nxh5jjD0/ww0WrpL5lgVziz5qjS5JN2F+3IPU+n7mxAcrOP6lLlWIKxhagg7Pwhj+qNCMahCdnd
	Ekl7cG9D5n+zg6G/ahavx1nffhAKY8ZSViv02O1xP5n0fJlLjXu2xAF+T6asYqyJjKbshAv9Za6
	7OVMGXeQ2xJUVKjaaoO+pQFznqU5Cdxdq5HxhfVKy7EzbHKS23dbCUUtLlrR9XTksFtg1iujHGV
	pf69ByYtINBTJaLGTJymw7deJda94a0btiiGRyvIVLuZDZSkjkjh3Mb0BIf4VBgrC4xekrLdEb0
	BVwHEFJNakIJI445dwcIIBUd3kbgTJtHnC05QiNgHf083e5WBlQszr+apo4+D1b6lZQPGBM1AY1
	P3LGS9uZhiwAhe8AFoBw0zlE3yfvSELOFY0A3I0sdvVHGG2kOv/S4FATACA+Tjw9dv9A==
X-Received: by 2002:a05:600c:5249:b0:485:7f02:afd5 with SMTP id 5b1f17b1804b1-488d680079bmr45339755e9.13.1775836511858;
        Fri, 10 Apr 2026 08:55:11 -0700 (PDT)
From: Oleksii Kurochko <oleksii.kurochko@gmail.com>
To: xen-devel@lists.xenproject.org
Cc: Romain Caritey <Romain.Caritey@microchip.com>,
	Oleksii Kurochko <oleksii.kurochko@gmail.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?q?Roger=20Pau=20Monn=C3=A9?= <roger.pau@citrix.com>
Subject: [PATCH v3 02/12] xen: fix len type for guest copy functions
Date: Fri, 10 Apr 2026 17:54:48 +0200
Message-ID: <9154aea41a11bc0ba95ad15c217db79d029dd119.1775836193.git.oleksii.kurochko@gmail.com>
X-Mailer: git-send-email 2.53.0
In-Reply-To: <cover.1775836193.git.oleksii.kurochko@gmail.com>
References: <cover.1775836193.git.oleksii.kurochko@gmail.com>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit
X-purgate-ID: tlsNG-d25034/1775836512-8254FA3D-75CFC99F/10/73395122804
X-purgate-type: spam
X-purgate-size: 4947

Widen the len argument of copy_to_guest_phys_flush_dcache() and the
copy_to_guest_phys_cb typedef from unsigned int to unsigned long, as
the function can be used to copy large blobs such as the initrd which
may exceed 4GB. Update the internal copy_guest() len argument to
unsigned long accordingly.

Change the type for local variable size in copy_guest() to avoid
compilation error because of type mismatch.

raw_* wrappers above copy_guest() keep returning unsigned long to
avoid type narrowing; it is not an issue for raw_*'s len argument
to remain 'unsigned int' since the assignment to copy_guest()'s wider
unsigned long parameter is safe and there is no raw_* users who
are using a value bigger than what can fit into 'unsigned int'.

Reported-by: Jan Beulich <jbeulich@suse.com>
Signed-off-by: Oleksii Kurochko <oleksii.kurochko@gmail.com>
---
Changes in v3:
 - Correct the declaration of copy_to_guest_phys_cb() instead of return
   'unsigned int' to be in sync with len argument, the type of len argument
   is changed on 'unsigned long' as initrd could be pretty big and also its
   size is stroed in 'paddr_t' which is 'unsigned long'.
 - Update copy_guest() prototype to avoid trancation bug for len argument.
 - Revert prototype changes for raw_* wrappers above copy_guest() as they
   should keep returning unsigned long to avoid type narrowing; it is not
   an issue for raw_*'s len argument to remain 'unsigned int' since the
   assignment to copy_guest()'s wider unsigned long parameter is safe.
 - Change the type for local variable size in copy_guest() to avoid
   compilation error because of type mismatch.
 - Add Reported-by: Jan Beulich <jbeulich@suse.com>
---
Changes in v2:
 - New patch.
---
 xen/arch/arm/guestcopy.c                | 6 +++---
 xen/arch/arm/include/asm/guest_access.h | 2 +-
 xen/include/xen/fdt-domain-build.h      | 2 +-
 3 files changed, 5 insertions(+), 5 deletions(-)

diff --git a/xen/arch/arm/guestcopy.c b/xen/arch/arm/guestcopy.c
index fdb06422b8e9..ca0f72a80bff 100644
--- a/xen/arch/arm/guestcopy.c
+++ b/xen/arch/arm/guestcopy.c
@@ -53,7 +53,7 @@ static struct page_info *translate_get_page(copy_info_t info, uint64_t addr,
     return page;
 }
 
-static unsigned long copy_guest(void *buf, uint64_t addr, unsigned int len,
+static unsigned long copy_guest(void *buf, uint64_t addr, unsigned long len,
                                 copy_info_t info, unsigned int flags)
 {
     /* XXX needs to handle faults */
@@ -65,7 +65,7 @@ static unsigned long copy_guest(void *buf, uint64_t addr, unsigned int len,
     while ( len )
     {
         void *p;
-        unsigned int size = min(len, (unsigned int)PAGE_SIZE - offset);
+        unsigned long size = min_t(unsigned long, len, PAGE_SIZE - offset);
         struct page_info *page;
 
         page = translate_get_page(info, addr, flags & COPY_linear,
@@ -136,7 +136,7 @@ unsigned long raw_copy_from_guest(void *to, const void __user *from,
 unsigned long copy_to_guest_phys_flush_dcache(struct domain *d,
                                               paddr_t gpa,
                                               void *buf,
-                                              unsigned int len)
+                                              unsigned long len)
 {
     return copy_guest(buf, gpa, len, GPA_INFO(d),
                       COPY_to_guest | COPY_ipa | COPY_flush_dcache);
diff --git a/xen/arch/arm/include/asm/guest_access.h b/xen/arch/arm/include/asm/guest_access.h
index 18c88b70d7ec..c13cbec55b65 100644
--- a/xen/arch/arm/include/asm/guest_access.h
+++ b/xen/arch/arm/include/asm/guest_access.h
@@ -14,7 +14,7 @@ unsigned long raw_clear_guest(void *to, unsigned int len);
 unsigned long copy_to_guest_phys_flush_dcache(struct domain *d,
                                               paddr_t gpa,
                                               void *buf,
-                                              unsigned int len);
+                                              unsigned long len);
 
 int access_guest_memory_by_gpa(struct domain *d, paddr_t gpa, void *buf,
                                uint32_t size, bool is_write);
diff --git a/xen/include/xen/fdt-domain-build.h b/xen/include/xen/fdt-domain-build.h
index 886a85381651..1d9e77df0eb3 100644
--- a/xen/include/xen/fdt-domain-build.h
+++ b/xen/include/xen/fdt-domain-build.h
@@ -47,7 +47,7 @@ static inline int get_allocation_size(paddr_t size)
 typedef unsigned long (*copy_to_guest_phys_cb)(struct domain *d,
                                                paddr_t gpa,
                                                void *buf,
-                                               unsigned int len);
+                                               unsigned long len);
 
 void initrd_load(struct kernel_info *kinfo,
                  copy_to_guest_phys_cb cb);
-- 
2.53.0



From xen-devel-bounces@lists.xenproject.org Fri Apr 10 15:55:17 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Fri, 10 Apr 2026 15:55:17 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1279418.1563868 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wBECT-0007hP-Ka; Fri, 10 Apr 2026 15:55:17 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1279418.1563868; Fri, 10 Apr 2026 15:55: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 1wBECT-0007hE-HA; Fri, 10 Apr 2026 15:55:17 +0000
Received: by outflank-mailman (input) for mailman id 1279418;
 Fri, 10 Apr 2026 15:55:15 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92) id 1wBECR-0007EN-Iz
 for xen-devel@lists.xenproject.org; Fri, 10 Apr 2026 15:55:15 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wBECP-00Cwd5-DQ
 for xen-devel@lists.xenproject.org; Fri, 10 Apr 2026 17:55:14 +0200
Received: from [10.42.69.12] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <oleksii.kurochko@gmail.com>)
 id 69d91d56-bab6-0a2a0a5309dd-0a2a450cb636-26
 for <xen-devel@lists.xenproject.org>; Fri, 10 Apr 2026 17:55:14 +0200
Received: from [209.85.128.45] (helo=mail-wm1-f45.google.com)
 by tlsNG-d25034.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.0)
 (envelope-from <oleksii.kurochko@gmail.com>)
 id 69d91d62-f40c-0a2a450c0019-d155802dc8a2-3
 for <xen-devel@lists.xenproject.org>; Fri, 10 Apr 2026 17:55:14 +0200
Received: by mail-wm1-f45.google.com with SMTP id
 5b1f17b1804b1-48897fd88ebso23326085e9.2
 for <xen-devel@lists.xenproject.org>; Fri, 10 Apr 2026 08:55:14 -0700 (PDT)
Received: from fedora (user-109-243-69-121.play-internet.pl. [109.243.69.121])
 by smtp.gmail.com with ESMTPSA id
 5b1f17b1804b1-488d5b3c597sm78285605e9.12.2026.04.10.08.55.13
 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
 Fri, 10 Apr 2026 08:55:13 -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=20251104 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=20251104; t=1775836514; x=1776441314; 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;
        bh=sTRi4YH+C2jL1DPdQVnyL1+s27z+ZRb1KNlQ9e7rLKA=;
        b=s/ADolDC1igUBrDPOfb0FyBbtLgF20pDCtb70tfFOXxjW34DJUjmeIpWcZUCgaQGgh
         Y5qPFZp4pfhZyNi7/+GCs5Pdu1w3LFm2W9SG/rg6yAPNxQTd6AOHb7RxCuOcbgCIfryk
         1k1fCeVRwTzybMTvNOVzzs08ju0cOG/k53w/FqY9KgCNqYF9LPtaT4PhBRvBVPdlpyRC
         ZDckx2a+gjiHdbhPfbuu4uDywDtuLgvn5fc7SQAN70RKuUde2GreZYLiUWX3EcfuLMWu
         d9ECxqwsJM1a3tH/QtOxMbmtFc5aIaUCsDy92SGc+UWDKs9VYEWBPCAkUtVXqksZj3go
         YHqw==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20251104; t=1775836514; x=1776441314;
        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;
        bh=sTRi4YH+C2jL1DPdQVnyL1+s27z+ZRb1KNlQ9e7rLKA=;
        b=QSmsXq6xlY8fO41BZfN/YyvJ03QAO8P7sd4t80ENciSQxkBUtdX2cfLaw2Ue6VvDpW
         IJw5AcKy9+XsGA5uf+bTz90uX7fzhxAUMLge8CdtUY+rH5LGi4Ein+hY+F4HT4wESuaZ
         pqcVr0pMmmx/pJFS68ZSzwW2sDAjVgtAano4C11vQs+IarZj6+hgisFv+kqaNFswumj9
         GljOzpmQXCCGSQyCHFWwFSmh0RdrTGGkEsyGSStD/bivqZyCtj2IQph8bjHpa/CjV/+y
         TKIEbkAwqiOH0rFsR5Z384JgZ2tfgrvQM2yhfoajVvKkxfGnoDzEOBoAgY+LTmbQ24UV
         QXWw==
X-Gm-Message-State: AOJu0YxRgERfs3ZPJ9PfmGhzGap3LbvEgc0VEBz/hxJbVR9dZg6VvcDq
	nqWjmMUymYKGiaqrEPJYbmpiD62ki7AO0A+IOpuYnkFDFCyLY4DCNLGFbvawqQ==
X-Gm-Gg: AeBDieuspLs7cDOb9Xtz6o2VKI1yCFL0cGf9XyulyV4p1MkqiNrp4Cp6UJgh3V9N91T
	BvXbob6g3Sa+FGYu6cW4tOM5pj2+5laNO8wDOyrZtlCol3lZC+P5ic+Cbj4sT65/yGnTSW8fOys
	dmtT/ZCZiVVhENJmCerg9TR+P1Efhdr0S2tRo88J4Pyh7fkOShVNezr9/Z4foYknQu14j3IVIiX
	Y0x+0U+AvVh5IJDRow1lRc+P8Z3MdY+Y2jFlY3Goe4iTTsnyh49mngT9yk+LISZ9gdpne2MjYEM
	8QaB7bODFzvzMf2l6xMqwAl8ZbjYrv6855W24T9v/rl0mAoOTBz9buKJ6izfDvuRA4V9Y06ECkq
	GKyhqE9Z+akUvCipjZousPEae5vmEflJACgzaQAm5sosjwoqx7TTJOzo1TUrNe7VY7BNvR8BJcw
	bYI3mpfVXF/Mwbzh9DI82ICqzKmd1lRaTsSYSbERrWK2BoRJhHShRDujRTWz3QGrQXREkptOvEv
	Fjn
X-Received: by 2002:a05:600c:34cd:b0:487:575:5e1 with SMTP id 5b1f17b1804b1-488d68c2cb4mr48418635e9.24.1775836514072;
        Fri, 10 Apr 2026 08:55:14 -0700 (PDT)
From: Oleksii Kurochko <oleksii.kurochko@gmail.com>
To: xen-devel@lists.xenproject.org
Cc: Romain Caritey <Romain.Caritey@microchip.com>,
	Oleksii Kurochko <oleksii.kurochko@gmail.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?q?Roger=20Pau=20Monn=C3=A9?= <roger.pau@citrix.com>
Subject: [PATCH v3 04/12] xen/dom0less: rename kernel_zimage_probe() to kernel_image_probe()
Date: Fri, 10 Apr 2026 17:54:50 +0200
Message-ID: <b7574a2ac5669e46c02daf58865be3765b3beac5.1775836193.git.oleksii.kurochko@gmail.com>
X-Mailer: git-send-email 2.53.0
In-Reply-To: <cover.1775836193.git.oleksii.kurochko@gmail.com>
References: <cover.1775836193.git.oleksii.kurochko@gmail.com>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit
X-purgate-ID: tlsNG-d25034/1775836514-FF547A3D-4A6AEDB5/10/73395122804
X-purgate-type: spam
X-purgate-size: 7698

The helper kernel_zimage_probe() is referenced from common code
(xen/common/device-tree/kernel.c), but its name is tied to the zImage
format which is specific to Arm (from architectures supported by Xen).

Other architectures supported by Xen, such as RISC-V, do not use the
zImage format and instead rely on other kernel image types (e.g. Image
or compressed Image variants: Image.gz, etc). Using "zimage" in the
name is therefore misleading in architecture-independent code.

Rename kernel_zimage_probe() to kernel_image_probe() and update the
associated structure field from "zimage" to "image" to reflect that the
code handles generic kernel images rather than the zImage format
specifically.

No functional change intended.

Reported-by: Jan Beulich <jbeulich@suse.com>
Signed-off-by: Oleksii Kurochko <oleksii.kurochko@gmail.com>
---
Changes in v3:
 - Nothing changed. Only rebase.
---
Changes in v2:
 - new patch.
---
 xen/arch/arm/kernel.c           | 48 ++++++++++++++++-----------------
 xen/common/device-tree/kernel.c |  2 +-
 xen/include/xen/fdt-kernel.h    |  4 +--
 3 files changed, 27 insertions(+), 27 deletions(-)

diff --git a/xen/arch/arm/kernel.c b/xen/arch/arm/kernel.c
index 7544fd50a20f..3c613cdb233f 100644
--- a/xen/arch/arm/kernel.c
+++ b/xen/arch/arm/kernel.c
@@ -101,8 +101,8 @@ static paddr_t __init kernel_zimage_place(struct kernel_info *info)
     paddr_t load_addr;
 
 #ifdef CONFIG_ARM_64
-    if ( (info->arch.type == DOMAIN_64BIT) && (info->zimage.start == 0) )
-        return mem->bank[0].start + info->zimage.text_offset;
+    if ( (info->arch.type == DOMAIN_64BIT) && (info->image.start == 0) )
+        return mem->bank[0].start + info->image.text_offset;
 #endif
 
     /*
@@ -111,19 +111,19 @@ static paddr_t __init kernel_zimage_place(struct kernel_info *info)
      * and above 32MiB. Load it as high as possible within these
      * constraints, while also avoiding the DTB.
      */
-    if ( info->zimage.start == 0 )
+    if ( info->image.start == 0 )
     {
         paddr_t load_end;
 
         load_end = mem->bank[0].start + mem->bank[0].size;
         load_end = MIN(mem->bank[0].start + MB(128), load_end);
 
-        load_addr = load_end - info->zimage.len;
+        load_addr = load_end - info->image.len;
         /* Align to 2MB */
         load_addr &= ~((2 << 20) - 1);
     }
     else
-        load_addr = info->zimage.start;
+        load_addr = info->image.start;
 
     return load_addr;
 }
@@ -131,8 +131,8 @@ static paddr_t __init kernel_zimage_place(struct kernel_info *info)
 static void __init kernel_zimage_load(struct kernel_info *info)
 {
     paddr_t load_addr = kernel_zimage_place(info);
-    paddr_t paddr = info->zimage.kernel_addr;
-    paddr_t len = info->zimage.len;
+    paddr_t paddr = info->image.kernel_addr;
+    paddr_t len = info->image.len;
     void *kernel;
     int rc;
 
@@ -215,7 +215,7 @@ int __init kernel_uimage_probe(struct kernel_info *info,
         return -EOPNOTSUPP;
     }
 
-    info->zimage.start = be32_to_cpu(uimage.load);
+    info->image.start = be32_to_cpu(uimage.load);
     info->entry = be32_to_cpu(uimage.ep);
 
     /*
@@ -224,20 +224,20 @@ int __init kernel_uimage_probe(struct kernel_info *info,
      * independent image. That means Xen is free to load such an image at
      * any valid address.
      */
-    if ( info->zimage.start == 0 )
+    if ( info->image.start == 0 )
         printk(XENLOG_INFO
                "No load address provided. Xen will decide where to load it.\n");
     else
         printk(XENLOG_INFO
                "Provided load address: %"PRIpaddr" and entry address: %"PRIpaddr"\n",
-               info->zimage.start, info->entry);
+               info->image.start, info->entry);
 
     /*
      * If the image supports position independent execution, then user cannot
      * provide an entry point as Xen will load such an image at any appropriate
      * memory address. Thus, we need to return error.
      */
-    if ( (info->zimage.start == 0) && (info->entry != 0) )
+    if ( (info->image.start == 0) && (info->entry != 0) )
     {
         printk(XENLOG_ERR
                "Entry point cannot be non zero for PIE image.\n");
@@ -257,13 +257,13 @@ int __init kernel_uimage_probe(struct kernel_info *info,
         if ( rc )
             return rc;
 
-        info->zimage.kernel_addr = mod->start;
-        info->zimage.len = mod->size;
+        info->image.kernel_addr = mod->start;
+        info->image.len = mod->size;
     }
     else
     {
-        info->zimage.kernel_addr = addr + sizeof(uimage);
-        info->zimage.len = len;
+        info->image.kernel_addr = addr + sizeof(uimage);
+        info->image.len = len;
     }
 
     info->load = kernel_zimage_load;
@@ -289,7 +289,7 @@ int __init kernel_uimage_probe(struct kernel_info *info,
      * Thus, Xen uses uimage.load attribute to determine the load address and
      * zimage.text_offset is ignored.
      */
-    info->zimage.text_offset = 0;
+    info->image.text_offset = 0;
 #endif
 
     return 0;
@@ -338,10 +338,10 @@ static int __init kernel_zimage64_probe(struct kernel_info *info,
     if ( (end - start) > size )
         return -EINVAL;
 
-    info->zimage.kernel_addr = addr;
-    info->zimage.len = end - start;
-    info->zimage.text_offset = zimage.text_offset;
-    info->zimage.start = 0;
+    info->image.kernel_addr = addr;
+    info->image.len = end - start;
+    info->image.text_offset = zimage.text_offset;
+    info->image.start = 0;
 
     info->load = kernel_zimage_load;
 
@@ -389,10 +389,10 @@ static int __init kernel_zimage32_probe(struct kernel_info *info,
         }
     }
 
-    info->zimage.kernel_addr = addr;
+    info->image.kernel_addr = addr;
 
-    info->zimage.start = start;
-    info->zimage.len = end - start;
+    info->image.start = start;
+    info->image.len = end - start;
 
     info->load = kernel_zimage_load;
 
@@ -403,7 +403,7 @@ static int __init kernel_zimage32_probe(struct kernel_info *info,
     return 0;
 }
 
-int __init kernel_zimage_probe(struct kernel_info *info, paddr_t addr,
+int __init kernel_image_probe(struct kernel_info *info, paddr_t addr,
                                paddr_t size)
 {
     int rc;
diff --git a/xen/common/device-tree/kernel.c b/xen/common/device-tree/kernel.c
index 28096121a52d..cfa27464f0fc 100644
--- a/xen/common/device-tree/kernel.c
+++ b/xen/common/device-tree/kernel.c
@@ -235,7 +235,7 @@ int __init kernel_probe(struct kernel_info *info,
     if ( rc && rc != -EINVAL )
         return rc;
 
-    rc = kernel_zimage_probe(info, mod->start, mod->size);
+    rc = kernel_image_probe(info, mod->start, mod->size);
 
     return rc;
 }
diff --git a/xen/include/xen/fdt-kernel.h b/xen/include/xen/fdt-kernel.h
index 33a60597bb4d..2af3bd5f0722 100644
--- a/xen/include/xen/fdt-kernel.h
+++ b/xen/include/xen/fdt-kernel.h
@@ -56,7 +56,7 @@ struct kernel_info {
             paddr_t text_offset; /* 64-bit Image only */
 #endif
             paddr_t start; /* Must be 0 for 64-bit Image */
-        } zimage;
+        } image;
     };
 
 #if __has_include(<asm/kernel.h>)
@@ -122,7 +122,7 @@ void kernel_load(struct kernel_info *info);
 
 int kernel_decompress(struct boot_module *mod, uint32_t offset);
 
-int kernel_zimage_probe(struct kernel_info *info, paddr_t addr, paddr_t size);
+int kernel_image_probe(struct kernel_info *info, paddr_t addr, paddr_t size);
 
 /*
  * uImage isn't really used nowadays thereby leave kernel_uimage_probe()
-- 
2.53.0



From xen-devel-bounces@lists.xenproject.org Fri Apr 10 15:55:19 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Fri, 10 Apr 2026 15:55:19 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1279419.1563878 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wBECU-0007xK-V0; Fri, 10 Apr 2026 15:55:18 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1279419.1563878; Fri, 10 Apr 2026 15:55: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 1wBECU-0007wr-R8; Fri, 10 Apr 2026 15:55:18 +0000
Received: by outflank-mailman (input) for mailman id 1279419;
 Fri, 10 Apr 2026 15:55:17 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92) id 1wBECS-0007Yn-SI
 for xen-devel@lists.xenproject.org; Fri, 10 Apr 2026 15:55:16 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wBECS-00Cgsb-89
 for xen-devel@lists.xenproject.org; Fri, 10 Apr 2026 17:55:16 +0200
Received: from [10.42.69.9] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <oleksii.kurochko@gmail.com>)
 id 69d91d62-e002-0a2a0a5209dd-0a2a4509a384-2
 for <xen-devel@lists.xenproject.org>; Fri, 10 Apr 2026 17:55:16 +0200
Received: from [209.85.128.45] (helo=mail-wm1-f45.google.com)
 by tlsNG-bad1c0.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.0)
 (envelope-from <oleksii.kurochko@gmail.com>)
 id 69d91d64-bf79-0a2a45090019-d155802daca4-3
 for <xen-devel@lists.xenproject.org>; Fri, 10 Apr 2026 17:55:16 +0200
Received: by mail-wm1-f45.google.com with SMTP id
 5b1f17b1804b1-488a14c31eeso17203645e9.0
 for <xen-devel@lists.xenproject.org>; Fri, 10 Apr 2026 08:55:16 -0700 (PDT)
Received: from fedora (user-109-243-69-121.play-internet.pl. [109.243.69.121])
 by smtp.gmail.com with ESMTPSA id
 5b1f17b1804b1-488d5b3c597sm78285605e9.12.2026.04.10.08.55.14
 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
 Fri, 10 Apr 2026 08:55:14 -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=20251104 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=20251104; t=1775836515; x=1776441315; 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;
        bh=B5ZH7rQJo78iVZbYMuHhA9Tl/XiBD/nIpAdpGmDqucg=;
        b=nnd6pLLacLLQxFXoQZTBTas/aAPaGs+zWXRWBMHvtIZSL6uMkaKs5KbxepNfEUsyfC
         hRhvttFifqzWzm5r5j7jxvUSZcdP7peadLcWDo0IZQqDXgEKM/axwiP83RMgp/zIMwU+
         ie0yGW/9EMqjRl7TZN/QRCnSkXWIoSp90Fz7vx74zYnHXoJeS+MttWM3DB6h6J6hozOR
         /WBC6E+LNSJ9W68bApkhejh7yJg+wh4XMCudZVcncs5f2whu2iI4yfv+MNaCfEy6tT7P
         bPcvbBbmtfAQjI/UcHoFSUQuwBo2Rupt7VW+J5DtGSOHWicv8Vb5uN5R3yXBb2X75OTr
         xF8A==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20251104; t=1775836515; x=1776441315;
        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;
        bh=B5ZH7rQJo78iVZbYMuHhA9Tl/XiBD/nIpAdpGmDqucg=;
        b=i7kl1To89uhG5UBm4jwSBUiYut+pfozoNz3KD4ZgFj+4pKulVlpJ8ySworzf4dEQlt
         qze5pvPmLn7pqyFsFaReRFPWc8IzpLupKkkEjIBQIkAzhLdGwEyKM7RVvo+vExoxm6L2
         N53I3x+gtA0HFtKXR3Hm94h75ZaExpJsj+cbWp9fUmhoWjTRsNYQoaNc4czDGSfA3C5O
         SIl0VHXp2R5qnuuXWhNz+wZDThHt5RpW7zMlgYACYtzC4VF1BYyWHi1som8p2+C9RUec
         0WxFenxQ6bp6JyH34aI5ZHuaRfCZZy1zFH93RDTA0voyVgJ9DziZ9x4I5OBflvLRFMHd
         Ha/Q==
X-Gm-Message-State: AOJu0YxCKrA6JE0CM88VHzANRTKaKiXWVXIvrjrnmf2yVAyiFCZ27kpp
	T5vucy1y8tmOQIvWOOTKlnRT0aA4ELeUweBo//omoZSzQCFxLAhP4cCip52jBA==
X-Gm-Gg: AeBDievn0SMBEvyr7fOYEjCl8mdigIgU1DiHd3xcJ0PnunD+bZxKPOYZ1NgvVoxRfm0
	iopLCDcsG6kskPA4nUxCml4fQU/rz8Q7Ur1zmv8nBt82t1U091QwMvurnizgJU6cjg8seOWqmGY
	mdk68wQrzbimANBYawyPxjZlxSpPpfQvkiNveQmJFc7D+gfakRxXhzAZIBy84tUCP9HD5z85RK4
	gjzMQcD4XWQmoxa2UK8/9IqErE3L93NO25eQjL8rEDntlMAtzZ9ql7/FQq3f6Jo/l5Jh3H8m4G5
	xbMl+eghclq0PJQcLJyZBGYagUWjaA79oJs2ZFW7ODQnztYDFjVUCFGKWHXraHQxSfYoyt3gkCj
	K39JXDX6tbzbx2Zp9J4EiqnBVdsdEiGDla9lgdK2j+JRp8QxaGbFBjoTls9lI3WFdV9GDruFKrT
	hce1+Tl2+wf28bSCMoJM/t+B9bX1GiZZfzs0sJ8ExcHVV0FXMRmABm4sqDQGcyln/TGQ==
X-Received: by 2002:a05:600c:8284:b0:488:d228:a133 with SMTP id 5b1f17b1804b1-488d683d280mr45886265e9.14.1775836515301;
        Fri, 10 Apr 2026 08:55:15 -0700 (PDT)
From: Oleksii Kurochko <oleksii.kurochko@gmail.com>
To: xen-devel@lists.xenproject.org
Cc: Romain Caritey <Romain.Caritey@microchip.com>,
	Oleksii Kurochko <oleksii.kurochko@gmail.com>,
	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=20Pau=20Monn=C3=A9?= <roger.pau@citrix.com>,
	Stefano Stabellini <sstabellini@kernel.org>
Subject: [PATCH v3 05/12] xen/riscv: add kernel loading support
Date: Fri, 10 Apr 2026 17:54:51 +0200
Message-ID: <29ec8e444792caa925ba92cdc406ef8c0b3bd678.1775836193.git.oleksii.kurochko@gmail.com>
X-Mailer: git-send-email 2.53.0
In-Reply-To: <cover.1775836193.git.oleksii.kurochko@gmail.com>
References: <cover.1775836193.git.oleksii.kurochko@gmail.com>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit
X-purgate-ID: tlsNG-bad1c0/1775836516-57941152-7002F875/10/73395122804
X-purgate-type: spam
X-purgate-size: 11722

Introduce support for loading a Linux kernel Image which is got by
uncompressing of Image.gz on RISC-V.

kernel_image_load() and place_modules() currently call panic() on
failure rather than returning an error. This is because the common
kernel_load() in common/device-tree/kernel.c does not expect a
return code. Handling errors gracefully would require a separate
refactor.

The implementation is based on the Xen Arm kernel loading code.

text_offset is available for both 32-bit and 64-bit Image, so fix
that.

Signed-off-by: Oleksii Kurochko <oleksii.kurochko@gmail.com>
---
Changes in v3:
 - s/kernel.o/kernel.init.o.
 - s/struct kernel_info *info/const struct kernel_info *info for kernel_image_place
 - s/ioremap_wc/ioremap_cache() inside kernel_image_load().
 - s/u<N>/uint<N>.
 - Drop hard tabs.
 - Add le{32,64}_to_cpu() when correpondent le endian  fields are read.
 - Update the comment in kernel_image64_probe() about initialization of end of
 image64.
 - Introduce image_size to pass to kernel load function total size of kernel
  it will have at runtime.
- Update kernel_image_place() to not put Image always to bank 0.
- Update place_modules() function to deal with different banks.
- Propage error up the call chain in kernel_image_probe(). 
---
Changes in v2:
 - s/zimage/image as RISC-V doesn't support zImages, only Image and
   Image.{gz,...}.
 - Update the commit message.
---
 xen/arch/riscv/Makefile             |   1 +
 xen/arch/riscv/include/asm/config.h |  13 ++
 xen/arch/riscv/kernel.c             | 230 ++++++++++++++++++++++++++++
 xen/include/xen/fdt-kernel.h        |  11 +-
 4 files changed, 253 insertions(+), 2 deletions(-)
 create mode 100644 xen/arch/riscv/kernel.c

diff --git a/xen/arch/riscv/Makefile b/xen/arch/riscv/Makefile
index cfc3fdf7d208..eecdcbc76867 100644
--- a/xen/arch/riscv/Makefile
+++ b/xen/arch/riscv/Makefile
@@ -8,6 +8,7 @@ obj-y += guestcopy.o
 obj-y += imsic.o
 obj-y += intc.o
 obj-y += irq.o
+obj-y += kernel.init.o
 obj-y += mm.o
 obj-y += p2m.o
 obj-y += paging.o
diff --git a/xen/arch/riscv/include/asm/config.h b/xen/arch/riscv/include/asm/config.h
index 0613de008b13..fd69057826e1 100644
--- a/xen/arch/riscv/include/asm/config.h
+++ b/xen/arch/riscv/include/asm/config.h
@@ -151,6 +151,19 @@
 extern unsigned long phys_offset; /* = load_start - XEN_VIRT_START */
 #endif
 
+/*
+ * KERNEL_LOAD_ADDR_ALIGNMENT is defined based on paragraph of
+ * "Kernel location" of boot.rst:
+ * https://docs.kernel.org/arch/riscv/boot.html#kernel-location
+ */
+#if defined(CONFIG_RISCV_32)
+#define KERNEL_LOAD_ADDR_ALIGNMENT MB(4)
+#elif defined(CONFIG_RISCV_64)
+#define KERNEL_LOAD_ADDR_ALIGNMENT MB(2)
+#else
+#error "Define KERNEL_LOAD_ADDR_ALIGNMENT"
+#endif
+
 #endif /* ASM__RISCV__CONFIG_H */
 /*
  * Local variables:
diff --git a/xen/arch/riscv/kernel.c b/xen/arch/riscv/kernel.c
new file mode 100644
index 000000000000..6d58f3372358
--- /dev/null
+++ b/xen/arch/riscv/kernel.c
@@ -0,0 +1,230 @@
+/* SPDX-License-Identifier: GPL-2.0-only */
+
+#include <xen/bug.h>
+#include <xen/compiler.h>
+#include <xen/errno.h>
+#include <xen/fdt-kernel.h>
+#include <xen/guest_access.h>
+#include <xen/init.h>
+#include <xen/libfdt/libfdt.h>
+#include <xen/mm.h>
+#include <xen/types.h>
+#include <xen/vmap.h>
+
+#include <asm/setup.h>
+
+#define IMAGE64_MAGIC_V2 0x05435352 /* Magic number 2, le, "RSC\x05" */
+
+static void __init place_modules(struct kernel_info *info, paddr_t kernbase,
+                                 paddr_t kernend)
+{
+    const struct boot_module *mod = info->bd.initrd;
+    const struct membanks *banks = kernel_info_get_mem_const(info);
+    const paddr_t initrd_len = ROUNDUP(mod ? mod->size : 0,
+                                       KERNEL_LOAD_ADDR_ALIGNMENT);
+    const paddr_t dtb_len = ROUNDUP(fdt_totalsize(info->fdt),
+                                    KERNEL_LOAD_ADDR_ALIGNMENT);
+    const paddr_t modsize = initrd_len + dtb_len;
+    int bi;
+
+    BUG_ON(modsize < initrd_len);
+
+    /*
+     * Place modules as high in RAM as possible, scanning banks from
+     * last to first so that the end of the last bank is preferred.
+     */
+    for ( bi = banks->nr_banks - 1; bi >= 0; bi-- )
+    {
+        const struct membank *bank = &banks->bank[bi];
+        const paddr_t bank_end = bank->start + bank->size;
+        paddr_t modbase;
+
+        if ( modsize > bank->size )
+            continue;
+
+        modbase = ROUNDDOWN(bank_end - modsize, KERNEL_LOAD_ADDR_ALIGNMENT);
+
+        if ( modbase < bank->start )
+            continue;
+
+        /*
+         * If the kernel resides in this bank, ensure modules do not
+         * overlap with it.
+         */
+        if ( (kernbase >= bank->start) && (kernbase < bank_end) &&
+             (modbase < ROUNDUP(kernend, KERNEL_LOAD_ADDR_ALIGNMENT)) &&
+             (modbase + modsize > kernbase) )
+            continue;
+
+        info->dtb_paddr = modbase;
+        info->initrd_paddr = modbase + dtb_len;
+
+        return;
+    }
+
+    panic("Unable to find suitable location for dtb+initrd\n");
+}
+
+static paddr_t __init kernel_image_place(struct kernel_info *info)
+{
+    paddr_t load_addr = INVALID_PADDR;
+    uint64_t image_size = info->image.image_size ?: info->image.len;
+    const struct membanks *banks = kernel_info_get_mem_const(info);
+    unsigned int nr_banks = banks->nr_banks;
+    unsigned int bi;
+
+    dprintk(XENLOG_DEBUG, "nr_banks(%u)\n", nr_banks);
+
+    /*
+     * At the moment, RISC-V's Linux kernel should be always position
+     * independent based on "Per-MMU execution" of boot.rst:
+     *   https://docs.kernel.org/arch/riscv/boot.html#pre-mmu-execution
+     *
+     * But just for the case when RISC-V's Linux kernel isn't position
+     * independent it is needed to take load address from
+     * info->image.start.
+     *
+     * If `start` is zero, the Image is position independent.
+     */
+    if ( likely(!info->image.start) )
+    {
+        for ( bi = 0; bi != nr_banks; bi++ )
+        {
+            const struct membank *bank = &banks->bank[bi];
+            paddr_t bank_start = bank->start;
+            /*
+             * According to boot.rst kernel load address should be properly
+             * aligned:
+             *   https://docs.kernel.org/arch/riscv/boot.html#kernel-location
+             *
+             * As Image in this case is PIC we can ignore
+             * info->image.text_offset.
+             */
+            paddr_t aligned_start = ROUNDUP(bank_start, KERNEL_LOAD_ADDR_ALIGNMENT);
+            paddr_t bank_end = bank_start + bank->size;
+            paddr_t bank_size;
+
+            if ( aligned_start > bank_end )
+                continue;
+
+            bank_size = bank_end - aligned_start;
+
+            dprintk(XENLOG_DEBUG, "bank[%u].start=%"PRIpaddr"\n", bi, bank->start);
+
+            if ( image_size <= bank_size )
+            {
+                load_addr = aligned_start;
+                break;
+            }
+        }
+    }
+    else
+    {
+        load_addr = info->image.start + info->image.text_offset;
+
+        WARN_ON(!IS_ALIGNED(load_addr, KERNEL_LOAD_ADDR_ALIGNMENT));
+
+        for ( bi = 0; bi != nr_banks; bi++ )
+        {
+            const struct membank *bank = &banks->bank[bi];
+            paddr_t bank_start = bank->start;
+            paddr_t bank_end = bank_start + bank->size;
+
+            if ( (load_addr >= bank_start) && (load_addr < bank_end) &&
+                 (bank_end - load_addr) >= image_size )
+                break;
+        }
+    }
+
+    if ( bi == nr_banks )
+        panic("Failed to place kernel image in any memory bank\n");
+
+    info->entry = load_addr;
+
+    return load_addr;
+}
+
+static void __init kernel_image_load(struct kernel_info *info)
+{
+    int rc;
+    paddr_t load_addr = kernel_image_place(info);
+    paddr_t paddr = info->image.kernel_addr;
+    paddr_t len = info->image.len;
+    paddr_t effective_size = info->image.image_size ?: len;
+    void *kernel;
+
+    place_modules(info, load_addr, load_addr + effective_size);
+
+    printk("Loading Image from %"PRIpaddr" to %"PRIpaddr"-%"PRIpaddr"\n",
+            paddr, load_addr, load_addr + effective_size);
+
+    kernel = ioremap_cache(paddr, len);
+
+    if ( !kernel )
+        panic("Unable to map kernel\n");
+
+    /* Move kernel to proper location in guest phys map */
+    rc = copy_to_guest_phys(info->bd.d, load_addr, kernel, len);
+
+    if ( rc )
+        panic("Unable to copy kernel to proper guest location\n");
+
+    iounmap(kernel);
+}
+
+/* Check if the image is a 64-bit Image */
+static int __init kernel_image64_probe(struct kernel_info *info,
+                                       paddr_t addr, paddr_t size)
+{
+    /* riscv/boot-image-header.rst */
+    struct {
+        uint32_t code0;         /* Executable code */
+        uint32_t code1;         /* Executable code */
+        uint64_t text_offset;   /* Image load offset, little endian */
+        uint64_t image_size;    /* Effective Image size, little endian */
+        uint64_t flags;         /* kernel flags, little endian */
+        uint32_t version;       /* Version of this header */
+        uint32_t res1;          /* Reserved */
+        uint64_t res2;          /* Reserved */
+        uint64_t magic;         /* Deprecated: Magic number, little endian, "RISCV" */
+        uint32_t magic2;        /* Magic number 2, little endian, "RSC\x05" */
+        uint32_t res3;          /* Reserved for PE COFF offset */
+    } image;
+    uint64_t effective_size;
+
+    if ( size < sizeof(image) )
+        return -EINVAL;
+
+    copy_from_paddr(&image, addr, sizeof(image));
+
+    /* Magic v1 is deprecated and may be removed.  Only use v2 */
+    if ( le32_to_cpu(image.magic2) != IMAGE64_MAGIC_V2 )
+        return -EINVAL;
+
+    effective_size = le64_to_cpu(image.image_size);
+
+    if ( effective_size && size > effective_size )
+        return -EINVAL;
+
+    info->image.kernel_addr = addr;
+    /* Actual size in the binary file */
+    info->image.len = size;
+    /* Total memory the kernel occupies at runtime */
+    info->image.image_size = effective_size;
+    info->image.text_offset = le64_to_cpu(image.text_offset);
+    info->image.start = 0;
+
+    info->load = kernel_image_load;
+
+    return 0;
+}
+
+int __init kernel_image_probe(struct kernel_info *info, paddr_t addr,
+                              paddr_t size)
+{
+#ifdef CONFIG_RISCV_64
+    return kernel_image64_probe(info, addr, size);
+#else
+    return -EOPNOTSUPP;
+#endif
+}
diff --git a/xen/include/xen/fdt-kernel.h b/xen/include/xen/fdt-kernel.h
index 2af3bd5f0722..aa977a50f4fc 100644
--- a/xen/include/xen/fdt-kernel.h
+++ b/xen/include/xen/fdt-kernel.h
@@ -52,8 +52,15 @@ struct kernel_info {
         struct {
             paddr_t kernel_addr;
             paddr_t len;
-#if defined(CONFIG_ARM_64) || defined(CONFIG_RISCV_64)
-            paddr_t text_offset; /* 64-bit Image only */
+#if defined(CONFIG_ARM_64) || defined(CONFIG_RISCV)
+            /*
+             * ARM: 64-bit Image only.
+             * RISC-V: both 32-bit and 64-bit Images.
+             */
+            paddr_t text_offset;
+#endif
+#if defined(CONFIG_RISCV)
+            uint64_t image_size; /* Effective size of Image */
 #endif
             paddr_t start; /* Must be 0 for 64-bit Image */
         } image;
-- 
2.53.0



From xen-devel-bounces@lists.xenproject.org Fri Apr 10 15:55:19 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Fri, 10 Apr 2026 15:55:19 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1279420.1563884 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wBECV-000819-E6; Fri, 10 Apr 2026 15:55:19 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1279420.1563884; Fri, 10 Apr 2026 15: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 1wBECV-00080C-4q; Fri, 10 Apr 2026 15:55:19 +0000
Received: by outflank-mailman (input) for mailman id 1279420;
 Fri, 10 Apr 2026 15:55:18 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92) id 1wBECU-0007kD-06
 for xen-devel@lists.xenproject.org; Fri, 10 Apr 2026 15:55:18 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wBECT-00DRfX-CL
 for xen-devel@lists.xenproject.org; Fri, 10 Apr 2026 17:55:17 +0200
Received: from [10.42.69.1] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <oleksii.kurochko@gmail.com>)
 id 69d91d5e-5cb7-0a2a0a5109dd-0a2a450183fa-12
 for <xen-devel@lists.xenproject.org>; Fri, 10 Apr 2026 17:55:17 +0200
Received: from [209.85.128.41] (helo=mail-wm1-f41.google.com)
 by tlsNG-d62444.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.0)
 (envelope-from <oleksii.kurochko@gmail.com>)
 id 69d91d65-6fc9-0a2a45010019-d1558029c9ce-3
 for <xen-devel@lists.xenproject.org>; Fri, 10 Apr 2026 17:55:17 +0200
Received: by mail-wm1-f41.google.com with SMTP id
 5b1f17b1804b1-488b8bc6bc9so15800415e9.3
 for <xen-devel@lists.xenproject.org>; Fri, 10 Apr 2026 08:55:17 -0700 (PDT)
Received: from fedora (user-109-243-69-121.play-internet.pl. [109.243.69.121])
 by smtp.gmail.com with ESMTPSA id
 5b1f17b1804b1-488d5b3c597sm78285605e9.12.2026.04.10.08.55.15
 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
 Fri, 10 Apr 2026 08:55:16 -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=20251104 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=20251104; t=1775836517; x=1776441317; 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;
        bh=jesQc90kE0KVLHrdzzOKKDZHPJckxKYzRoNevvlkGgU=;
        b=mayyM5qlzM//SwrYlQ1Kzb40LKMWwYnfzPJERr22dj6S5bwEdYdASQ6LDwfoZURrW2
         vTqI395p6uEMTwrhf9Ix31V1H/c5BtWFxU48lyekTQJvHJPBY3Skae2T1NQ0fnE0EtvH
         lMR/tRUWAnvc6KKRgneOH4XsDdEwFJCjzXnElsqeMdj6+wzX0PR+3DtpGkyI04HXrBNN
         76c00vtHn2AEzY8Vr8ucr5Sm8h797Zzwl9sPKpiloan38CfyQaIDnsDzK7FB6F+CPdDn
         JlzaatcHSOLFLScbCzkQf++elg2pvocNxPGoS1PDKCKo8138h3zVOziL49ArD9HDhczY
         hVZA==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20251104; t=1775836517; x=1776441317;
        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;
        bh=jesQc90kE0KVLHrdzzOKKDZHPJckxKYzRoNevvlkGgU=;
        b=A0GbsWhKoPYabwdRP2Ii25zn8TCaiC/Wf/teB7phvYfCQ4OUOTm6KDsLHrIWMDOuqO
         QkX7SmWDCJ6DmMWn6yYm1r5mXhhF95F8abJOwb8VavanljNqKE/fLZNDvrbMRslLzLm1
         2tYOGBRMJJCTOcOalD3B1Xpe8PWIUWLs5csSbVMk6lGUtFLBpY6TUo8HaZSq6mLmUlqq
         Y7HSlZPE2t3GPyuKXXgyUpY50C63tWL9N4VomaT3cwFl6dlrEIqp3Qm59h67cdOxwhab
         iTmepCg92hRbg8h1C9ELySuJWdmRXejIxikRR0jiBFkvpwGw+ZRMmuwstjOBQc5YoIcF
         7pyQ==
X-Gm-Message-State: AOJu0YyCuACEDO/dyFxuQJSE1c+9nHV4qyWdoGrsJ/Fo/IVxl0vhQKmq
	3MuDa8KSFmbjGYrpyRutK/0ID4yL4ko+qA1DydCyFsWcvWIY9G1ymGG4Wxezbg==
X-Gm-Gg: AeBDieu7HkCf+U9rebNZMpt1/OD0ZWhvMUIieFw9TVPJOxauV2Fd89lKAB5P7wscZ4p
	6vPFsQF40NIHkSZt8GD6GczvB6bICLldlMAUq1vVbrHu0m4mf8ly/5ydgC1y3KCuZvSN4kWqJIQ
	lxx5g/LhN1cv7utAhd5toABEX0dJ0Ggf47ubkTBmR8qQNp61HIaBrTWbVN4OXUqBMGLNrDqTbnv
	DdKgitEopNIXEiy1MMi0iBVLTPjZu53YDbMwVx+TlNOnOYwyKefbZ1qXqHvjZppSZmzleEVcGQC
	riyIRZfF+L4B+uakCGgBgWQVnX0FWiw9DnnOjDWqXlRjwYnhIvc5J9GEOy6TiY3uKdZaxEPaYaz
	Y6YkTbPMOY3OdqpX9PbxKFhg5umnA3OTjOcZYceUMsOkRNLYokE7SJFSf3BKCkHwWflC6jDHPHF
	XRApIv9ohoIOxv4jUb4Ejorq4H50gr0hAc0lTDkGZ2oWf38qxBlxMgfUiitOZY2mxSKw==
X-Received: by 2002:a05:600c:a105:b0:486:af22:4a2a with SMTP id 5b1f17b1804b1-488d681f281mr33975715e9.7.1775836516480;
        Fri, 10 Apr 2026 08:55:16 -0700 (PDT)
From: Oleksii Kurochko <oleksii.kurochko@gmail.com>
To: xen-devel@lists.xenproject.org
Cc: Romain Caritey <Romain.Caritey@microchip.com>,
	Oleksii Kurochko <oleksii.kurochko@gmail.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?q?Roger=20Pau=20Monn=C3=A9?= <roger.pau@citrix.com>
Subject: [PATCH v3 06/12] xen: move declaration of fw_unreserved_regions() to common header
Date: Fri, 10 Apr 2026 17:54:52 +0200
Message-ID: <fda4e7d9cdb8eb197d7e61c100ca4f7d1aac7b2c.1775836193.git.oleksii.kurochko@gmail.com>
X-Mailer: git-send-email 2.53.0
In-Reply-To: <cover.1775836193.git.oleksii.kurochko@gmail.com>
References: <cover.1775836193.git.oleksii.kurochko@gmail.com>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit
X-purgate-ID: tlsNG-d62444/1775836517-B4967185-119067A8/10/73395122804
X-purgate-type: spam
X-purgate-size: 1452

Since the implementation of fw_unreserved_regions() is in common code, move
its declaration to xen/bootinfo.h.

Signed-off-by: Oleksii Kurochko <oleksii.kurochko@gmail.com>
---
Changes in v2-v3:
 - Nothing changed. Only rebase.
---
 xen/arch/arm/include/asm/setup.h | 3 ---
 xen/include/xen/bootinfo.h       | 4 ++++
 2 files changed, 4 insertions(+), 3 deletions(-)

diff --git a/xen/arch/arm/include/asm/setup.h b/xen/arch/arm/include/asm/setup.h
index 899e33925ca4..0d29b46ea52b 100644
--- a/xen/arch/arm/include/asm/setup.h
+++ b/xen/arch/arm/include/asm/setup.h
@@ -43,9 +43,6 @@ int acpi_make_efi_nodes(void *fdt, struct membank tbl_add[]);
 void create_dom0(void);
 
 void discard_initial_modules(void);
-void fw_unreserved_regions(paddr_t s, paddr_t e,
-                           void (*cb)(paddr_t ps, paddr_t pe),
-                           unsigned int first);
 
 void init_pdx(void);
 void setup_mm(void);
diff --git a/xen/include/xen/bootinfo.h b/xen/include/xen/bootinfo.h
index f834f1957155..dbf492c2e36e 100644
--- a/xen/include/xen/bootinfo.h
+++ b/xen/include/xen/bootinfo.h
@@ -210,4 +210,8 @@ static inline struct membanks *membanks_xzalloc(unsigned int nr,
     return banks;
 }
 
+void fw_unreserved_regions(paddr_t s, paddr_t e,
+                           void (*cb)(paddr_t ps, paddr_t pe),
+                           unsigned int first);
+
 #endif /* XEN_BOOTINFO_H */
-- 
2.53.0



From xen-devel-bounces@lists.xenproject.org Fri Apr 10 15:55:21 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Fri, 10 Apr 2026 15:55:21 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1279422.1563896 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wBECX-0008Sj-1Z; Fri, 10 Apr 2026 15:55:21 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1279422.1563896; Fri, 10 Apr 2026 15:55: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 1wBECW-0008SG-Qh; Fri, 10 Apr 2026 15:55:20 +0000
Received: by outflank-mailman (input) for mailman id 1279422;
 Fri, 10 Apr 2026 15:55:19 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92) id 1wBECV-0007xm-6l
 for xen-devel@lists.xenproject.org; Fri, 10 Apr 2026 15:55:19 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wBECU-00DRfX-Io
 for xen-devel@lists.xenproject.org; Fri, 10 Apr 2026 17:55:18 +0200
Received: from [10.42.69.1] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <oleksii.kurochko@gmail.com>)
 id 69d91d5e-5cb7-0a2a0a5109dd-0a2a450183fa-18
 for <xen-devel@lists.xenproject.org>; Fri, 10 Apr 2026 17:55:18 +0200
Received: from [209.85.128.48] (helo=mail-wm1-f48.google.com)
 by tlsNG-d62444.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.0)
 (envelope-from <oleksii.kurochko@gmail.com>)
 id 69d91d66-6fc9-0a2a45010019-d1558030c4d2-3
 for <xen-devel@lists.xenproject.org>; Fri, 10 Apr 2026 17:55:18 +0200
Received: by mail-wm1-f48.google.com with SMTP id
 5b1f17b1804b1-488c2690057so21734005e9.0
 for <xen-devel@lists.xenproject.org>; Fri, 10 Apr 2026 08:55:18 -0700 (PDT)
Received: from fedora (user-109-243-69-121.play-internet.pl. [109.243.69.121])
 by smtp.gmail.com with ESMTPSA id
 5b1f17b1804b1-488d5b3c597sm78285605e9.12.2026.04.10.08.55.16
 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
 Fri, 10 Apr 2026 08:55:17 -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=20251104 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=20251104; t=1775836518; x=1776441318; 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;
        bh=/4qhZ+8GYYcp7jmfiAyFTdQWpQtMp/eabTrs/ZmAwow=;
        b=pjSsxaFKtWTHxQ/sRV6fUzOTfKcWByj49lHDgoRo7NJx7KJHtcSDnUX5SOdTjhK5Uj
         UpMOgELMNUBUjiELa09Mc625OeqglUYEJJoTo0nzSKtrbzvv/KLeqU78PtJ80Cxl6U4q
         y4uMDM7JEhl45B/sMrHt+nPUtJop1Vf9D9idOP4zeeLLTWSbJiwzOxvCM5MvelGKGohr
         Jek5RQNDjgzkHDy4zZDJ8z15DdrKhkVOV2zf38PupwO2Q92cvlf0vJ74daNqMVwilEXT
         4rjE58cwlpwi/rw8n1eqAcnnwm+19AbFRx3qxDBwQXZK+NOukSulCYqrN5syGakQADLD
         FD3g==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20251104; t=1775836518; x=1776441318;
        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;
        bh=/4qhZ+8GYYcp7jmfiAyFTdQWpQtMp/eabTrs/ZmAwow=;
        b=Qhe+/wDInL3gDiYnSPOQ360OoRAxT8rwdGf0KJVE4E+5He1v09pOnzJTQ48HHFqCHl
         ljagoaJ+ggnelIT7ItbDiJT6EKqdq8TIoHygCeA3Lq+53UGQ2qLO87FlgUhjxPxYFJRg
         vEQn/LoFHUBl7huQTE23AKwT6f6c5/zH6REQWFqvaiyyoqIuDsaktNUnPkR4ZPpAITMR
         jEwRBYkaCYwc6oH+Wukgy460p3ykKy2Dzs7fA7sI9fZ6PE+Kshc/tVTYHwr8f2iPDs29
         MQ7ECrUJ/DSXY0tr8EQSU1vE4mt7NMYkNLehsEOQ4+utGVSjPecAf1HAGASbqV0yRC77
         Qm/Q==
X-Gm-Message-State: AOJu0YzQMeEqe+q2h6ft032AIj0a8TUfViJ5uDmV090kOszlxp0xpVwT
	euPXpA/ivRoYpS4ybkYk0vZCVxnvHBeV3U2uyasNnFyyNgXq6CWZRdh7c/9m0g==
X-Gm-Gg: AeBDievIVYZHwTP2Xv3NqZgs92eaN9wYNODsa2+L2V86LiKjwjudOJP1MIUeeFxDg35
	pHViMzp8PjwCdCJiRI41OiGLagehV2AAbEvkDr/QjoqL+A9LKrx2e6u0PFSwHRAq0fJ2b2JW02X
	CMnuo19Bx1EOyyqCiLUPHV1FlDt+iq7Ubr0NVoG75S/audCFdStYMrRbmzS/avTrvSpRTeCYbfe
	JPME+JmdNqEiryIQAslKapPYN8CQ8+3j6e4trOJgsiB+RDlyiUgaFgJQdhxWqBQ4T3kQZf4nMbY
	0qdCpcXHyFDoNA1y1ri0ZLi1F1kDlHjqWdGB7H20qLvKDG3kH3G+/b8ZP4sXXOM0GzHkJ27bEoF
	XVbD4NseqXWdFOj+7/9C7mBGAz3c9kXISU2T1yfMjAAEaPYEM2bDLAbhFEJd716plZnnANFTGCd
	JR5uGe+o3MQtw3l9LgeZGtfFqnVYIidGAhge957/RdpFR8wl0J7NpWaonvdiJhFkPBAQ==
X-Received: by 2002:a05:600c:4e4d:b0:485:3193:6ddb with SMTP id 5b1f17b1804b1-488d6808507mr49943295e9.3.1775836517625;
        Fri, 10 Apr 2026 08:55:17 -0700 (PDT)
From: Oleksii Kurochko <oleksii.kurochko@gmail.com>
To: xen-devel@lists.xenproject.org
Cc: Romain Caritey <Romain.Caritey@microchip.com>,
	Oleksii Kurochko <oleksii.kurochko@gmail.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?q?Roger=20Pau=20Monn=C3=A9?= <roger.pau@citrix.com>
Subject: [PATCH v3 07/12] xen: introduce domain-layout.h with common domain_use_host_layout()
Date: Fri, 10 Apr 2026 17:54:53 +0200
Message-ID: <2057380b431df202adedf852ad492dd0f156f863.1775836193.git.oleksii.kurochko@gmail.com>
X-Mailer: git-send-email 2.53.0
In-Reply-To: <cover.1775836193.git.oleksii.kurochko@gmail.com>
References: <cover.1775836193.git.oleksii.kurochko@gmail.com>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit
X-purgate-ID: tlsNG-d62444/1775836518-154EE185-F1932820/10/73395122804
X-purgate-type: spam
X-purgate-size: 5440

domain_use_host_layout() is not architecture-specific and may be needed
on x86 [1]. Replace the ARM-specific macro in asm/domain.h with a common
static inline in a new dedicated header, xen/domain-layout.h.

xen/domain.h would be the natural home, but placing it there would
require including xen/paging.h (for paging_mode_translate()) and
xen/sched.h (for is_hardware_domain()), which would introduce circular
dependencies. A separate header that callers opt into avoids this.

Adjust the implementation to take paging_mode_translate() into account
so it works correctly for all architectures, including x86. Some extra
details about implementation [2] and [3].

[1] https://lore.kernel.org/xen-devel/alpine.DEB.2.22.394.2602161038120.359097@ubuntu-linux-20-04-desktop/
[2] https://lore.kernel.org/xen-devel/alpine.DEB.2.22.394.2602271742400.3148344@ubuntu-linux-20-04-desktop/
[3] https://lore.kernel.org/xen-devel/alpine.DEB.2.22.394.2602271750190.3148344@ubuntu-linux-20-04-desktop/

Suggested-by: Stefano Stabellini <sstabellini@kernel.org>
Signed-off-by: Oleksii Kurochko <oleksii.kurochko@gmail.com>
---
Changes in v3:
 - Make argument of domain_use_host_layout() const.
 - Create a separate header to avoid circular heder dependecy and making
   domain_use_host_layour() as static inline.
 - Rework domain_use_host_layout() to be protected by paging_mode_translate().
 - Update the commit message.
---
Changes in v2:
 - Drop ifdef around defintion of domain_use_host_layout() as it
   was suggested generic version. It could be returned back when
   the real use case for it will appear.
 - Add Suggested-by: and update the commit message.
 - Make domain_use_host_layout() function instead of macros to
   avoid ciclular header dependecies. Look at more details in
   the commit message.
---
 xen/arch/arm/domain_build.c           |  1 +
 xen/arch/arm/include/asm/domain.h     | 14 --------------
 xen/arch/arm/vgic-v3.c                |  1 +
 xen/common/device-tree/domain-build.c |  1 +
 xen/include/xen/domain-layout.h       | 28 +++++++++++++++++++++++++++
 5 files changed, 31 insertions(+), 14 deletions(-)
 create mode 100644 xen/include/xen/domain-layout.h

diff --git a/xen/arch/arm/domain_build.c b/xen/arch/arm/domain_build.c
index 6c17a84b2633..60a7cbf915a5 100644
--- a/xen/arch/arm/domain_build.c
+++ b/xen/arch/arm/domain_build.c
@@ -2,6 +2,7 @@
 #include <xen/init.h>
 #include <xen/bootinfo.h>
 #include <xen/compile.h>
+#include <xen/domain-layout.h>
 #include <xen/dom0less-build.h>
 #include <xen/fdt-domain-build.h>
 #include <xen/fdt-kernel.h>
diff --git a/xen/arch/arm/include/asm/domain.h b/xen/arch/arm/include/asm/domain.h
index ffe5d0d9f0a6..f95ad1285e6e 100644
--- a/xen/arch/arm/include/asm/domain.h
+++ b/xen/arch/arm/include/asm/domain.h
@@ -30,20 +30,6 @@ enum domain_type {
 #define is_64bit_domain(d) (0)
 #endif
 
-/*
- * Is the domain using the host memory layout?
- *
- * Direct-mapped domain will always have the RAM mapped with GFN == MFN.
- * To avoid any trouble finding space, it is easier to force using the
- * host memory layout.
- *
- * The hardware domain will use the host layout regardless of
- * direct-mapped because some OS may rely on a specific address ranges
- * for the devices.
- */
-#define domain_use_host_layout(d) (is_domain_direct_mapped(d) || \
-                                   is_hardware_domain(d))
-
 struct vtimer {
     struct vcpu *v;
     int irq;
diff --git a/xen/arch/arm/vgic-v3.c b/xen/arch/arm/vgic-v3.c
index 77aab5c3c293..77517c303061 100644
--- a/xen/arch/arm/vgic-v3.c
+++ b/xen/arch/arm/vgic-v3.c
@@ -10,6 +10,7 @@
  */
 
 #include <xen/bitops.h>
+#include <xen/domain-layout.h>
 #include <xen/init.h>
 #include <xen/irq.h>
 #include <xen/lib.h>
diff --git a/xen/common/device-tree/domain-build.c b/xen/common/device-tree/domain-build.c
index 540627b74e96..e706a6173ba6 100644
--- a/xen/common/device-tree/domain-build.c
+++ b/xen/common/device-tree/domain-build.c
@@ -1,6 +1,7 @@
 /* SPDX-License-Identifier: GPL-2.0-only */
 
 #include <xen/bootinfo.h>
+#include <xen/domain-layout.h>
 #include <xen/fdt-domain-build.h>
 #include <xen/init.h>
 #include <xen/lib.h>
diff --git a/xen/include/xen/domain-layout.h b/xen/include/xen/domain-layout.h
new file mode 100644
index 000000000000..15cbb1813c8a
--- /dev/null
+++ b/xen/include/xen/domain-layout.h
@@ -0,0 +1,28 @@
+#ifndef __XEN_DOMAIN_LAYOUT_H__
+#define __XEN_DOMAIN_LAYOUT_H__
+
+#include <xen/domain.h>
+#include <xen/paging.h>
+#include <xen/sched.h>
+
+/*
+ * Is a domain using the host memory layout?
+ *
+ * domain_use_host_layout() is always False for PV guests.
+ *
+ * Direct-mapped domains (autotranslated domains with memory allocated
+ * contiguously and mapped 1:1 so that GFN == MFN) are always using the
+ * host memory layout to avoid address clashes.
+ *
+ * The hardware domain will use the host layout (regardless of
+ * direct-mapped) because some OS may rely on specific address ranges
+ * for the devices. PV Dom0, like any other PV guests, has
+ * domain_use_host_layout() returning False.
+ */
+static inline bool domain_use_host_layout(const struct domain *d)
+{
+    return paging_mode_translate(d) &&
+           (is_domain_direct_mapped(d) || is_hardware_domain(d));
+}
+
+#endif /* __XEN_DOMAIN_LAYOUT_H__ */
-- 
2.53.0



From xen-devel-bounces@lists.xenproject.org Fri Apr 10 15:55:21 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Fri, 10 Apr 2026 15:55:21 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1279424.1563901 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wBECX-0008WF-HM; Fri, 10 Apr 2026 15:55:21 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1279424.1563901; Fri, 10 Apr 2026 15:55: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 1wBECX-0008VC-8Q; Fri, 10 Apr 2026 15:55:21 +0000
Received: by outflank-mailman (input) for mailman id 1279424;
 Fri, 10 Apr 2026 15:55:20 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92) id 1wBECW-0008KK-Hl
 for xen-devel@lists.xenproject.org; Fri, 10 Apr 2026 15:55:20 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wBECV-00DRfX-Tj
 for xen-devel@lists.xenproject.org; Fri, 10 Apr 2026 17:55:19 +0200
Received: from [10.42.69.10] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <oleksii.kurochko@gmail.com>)
 id 69d91d67-5cb7-0a2a0a5109dd-0a2a450a9f28-6
 for <xen-devel@lists.xenproject.org>; Fri, 10 Apr 2026 17:55:19 +0200
Received: from [209.85.128.44] (helo=mail-wm1-f44.google.com)
 by tlsNG-4011c0.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.0)
 (envelope-from <oleksii.kurochko@gmail.com>)
 id 69d91d67-ee98-0a2a450a0019-d155802cbde7-3
 for <xen-devel@lists.xenproject.org>; Fri, 10 Apr 2026 17:55:19 +0200
Received: by mail-wm1-f44.google.com with SMTP id
 5b1f17b1804b1-488b0046078so22060005e9.1
 for <xen-devel@lists.xenproject.org>; Fri, 10 Apr 2026 08:55:19 -0700 (PDT)
Received: from fedora (user-109-243-69-121.play-internet.pl. [109.243.69.121])
 by smtp.gmail.com with ESMTPSA id
 5b1f17b1804b1-488d5b3c597sm78285605e9.12.2026.04.10.08.55.17
 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
 Fri, 10 Apr 2026 08:55:18 -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=20251104 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=20251104; t=1775836519; x=1776441319; 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;
        bh=djlyIF5R+CWEfFCif4JaIJrt1D+sAomgl/JLYjj3hDI=;
        b=MzwOTpZyxdQMxkyKRB+s4Eahz7Bn4RaUQupeQYnbX6nkmnGD89O6OU6vRGiHhXH15D
         bBGhMmkqZK/egAssnZQG77rOcT3ZiwQIrQewqVFH+XLQ5wVJlRPdXfB/tI07oc6pLv4r
         e9qzu4ZIUnVOvpHZ4unDMnjk0S5u9/NUrRLjkCsH638t8ZCqHs06iGdQO8CHKFmr2jXb
         93Uf6PFfCsia9/QG4WDpn9z/8GdwbUO01u6+x1+7Sl0SkiEpoiSBmpjzpXRlr/OyL5r3
         jCmDda2Df1AX81ODXZrilfuotLX5JYp4knFRTgcGOPL4AofM3ouGAS98sBVvATt6Ihz7
         5J9Q==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20251104; t=1775836519; x=1776441319;
        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;
        bh=djlyIF5R+CWEfFCif4JaIJrt1D+sAomgl/JLYjj3hDI=;
        b=C+EXeYRisuZWf3T52xP2gYUFBX3VQH69SHLNTx0plWhaeJravBeJhH/+DabnQKPzjR
         TC/Rf2C5o7QXZoZu0fI8zpfC5pCaUFx1CrMND34n9tCvWJHQFHoDOlFiXmsuBaj6c565
         B6dbVuE0gZNjEYbi79k/HTR9yPL2JG9JItdK6DCXPvISUISYWKjRrFZ3AhFr0lPMHjoo
         bVnazuMZXpceHA7rJOaCIgQTRdlGtkUm3ul1ewcQZgcsarOrQ89BdOjbxPIzvWEdesia
         QKPZGHkA26VWcRnh+iiGArQQBFiTjfSiWXSik0bSwjllq7ER9JRYaEv5LNtT6fIypbRI
         BnUA==
X-Gm-Message-State: AOJu0YxA6QyatpT6dtLLgnoWXS+YK9nbSVa7RKgwg+5UcueEpzXBzrt4
	LxwQZK9dJEe6ICzix31f/noijo2SMVAavFNZAMNxKsshbqCaLKT/I7JyPg+YfQ==
X-Gm-Gg: AeBDies4hv6mAJLJSqsPXwr3srBWKP3aShax0XiwO4F+mbSEAZ0sYjm3S6vO0yZ8SjS
	Zj/uLDKl8BBDMRBMR83/48Qt9RKcf0LrSIXHlIZxOVs0NAftpMGzqjIx5V2Z8VZUyZ2AsPKbcHg
	JZ9LCq3q9RmIDBJ93k3QjfhyOSA7lMxRRebAfQWlkTB3P+hak7Xk5QeVRMS9ATbMOlZSiLMEwJw
	fbNQrOSau9Fks7UxYjE8h7tIe3rIWJAVYfXsZnBEIE5WEhL9FmyM9b1JxoBTDXWEIx9F+tG3s1/
	cjFfmECfFVMbIxPCx9rSL4dwr18CeeGcxlMgZjFeosJgNg5zbyAOyASfjZUAv0QROeZWzecckZz
	YwMnPrFnL9BHyzanIqZ4e3Oo8lS/Qy8JXWI29Gl2UxbalL2fVlgFUIGaEN0/uiFKbbPdI0eGUGz
	w3Hx6qAQzMEieUHHxqU4qJkLXqmf6L17VR+1u6ekGb+Fn0MrXZ0WYXC89jffFZ46IQVw==
X-Received: by 2002:a05:600c:46cb:b0:488:c51f:e04e with SMTP id 5b1f17b1804b1-488d67f3a0fmr50197155e9.13.1775836518875;
        Fri, 10 Apr 2026 08:55:18 -0700 (PDT)
From: Oleksii Kurochko <oleksii.kurochko@gmail.com>
To: xen-devel@lists.xenproject.org
Cc: Romain Caritey <Romain.Caritey@microchip.com>,
	Oleksii Kurochko <oleksii.kurochko@gmail.com>,
	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=20Pau=20Monn=C3=A9?= <roger.pau@citrix.com>,
	Stefano Stabellini <sstabellini@kernel.org>
Subject: [PATCH v3 08/12] xen/riscv: rework G-stage mode handling
Date: Fri, 10 Apr 2026 17:54:54 +0200
Message-ID: <94c914766171b732524d2d64c283e566595a4d22.1775836193.git.oleksii.kurochko@gmail.com>
X-Mailer: git-send-email 2.53.0
In-Reply-To: <cover.1775836193.git.oleksii.kurochko@gmail.com>
References: <cover.1775836193.git.oleksii.kurochko@gmail.com>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit
X-purgate-ID: tlsNG-4011c0/1775836519-BD3590B1-ACB91251/10/73395122804
X-purgate-type: spam
X-purgate-size: 12904

Rework G-stage mode handling to make the selected mode descriptor
reusable outside of p2m initialization, both for filling CPU nodes in
the device tree passed to dom0less guests and for per-domain G-stage
mode selection at domain creation time.

Promote modes[] from a local __initconst variable inside
gstage_mode_detect() to a file-scope static const array, and convert
max_gstage_mode from an embedded struct (assigned by value) to a global
const pointer into modes[]. This allows referencing both the mode
identifier and the mode name after init without copying the descriptor.
Remove get_max_supported_mode(); its callers now dereference
max_gstage_mode->mode directly.

Change struct p2m_domain::mode from an embedded gstage_mode_desc to a
const pointer into modes[], so each domain shares the descriptor rather
than carrying its own copy.

Adjust the modes[] entries in three ways:
 - Use lowercase names without the "x4" suffix (e.g. "sv39" instead of
   "Sv39x4"). The DT mmu-type binding [1] does not include the suffix,
   so the name can now be passed directly to the guest without
   transformation. The suffix is appended only in the diagnostic
   printk, where it remains informative.
 - Use "none" for Bare mode (HGATP_MODE_OFF) to match the DT binding.
 - Change paging_levels to represent the root page-table level index
   (i.e. total paging levels minus one) rather than the total count.
   P2M_ROOT_LEVEL() now returns the correct VPN index directly, without
   requiring callers to subtract one or use hardcoded offsets.

Add gstage_mode[8] to xen_arch_domainconfig so the toolstack can
request a specific G-stage mode at domain creation time. Introduce
find_gstage_mode() to resolve a mode descriptor by name
(case-insensitive), capping the result at max_gstage_mode to prevent
requesting a mode the hardware does not support. Update p2m_init() to
accept a xen_domctl_createdomain pointer and call find_gstage_mode()
instead of hardcoding Sv39x4.

Add arch_parse_dom0less_node() in a new dom0less-build.c to read the
"mmu-type" DT property from a guest domain node and store it in
boot_domain::create_cfg.arch.gstage_mode, falling back to maximum
supported mode when the property is absent.

[1] https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/tree/Documentation/devicetree/bindings/riscv/cpus.yaml?h=v6.19-rc3#n82

Signed-off-by: Oleksii Kurochko <oleksii.kurochko@gmail.com>
---
Changes in v3:
 - New patch. Was taken from another patch series:
   https://lore.kernel.org/xen-devel/cover.1773157782.git.oleksii.kurochko@gmail.com/T/#m6eb886bdf718b06b967d1688314b80e7374a8de5
---
 xen/arch/riscv/Makefile          |   1 +
 xen/arch/riscv/dom0less-build.c  |  30 ++++++++
 xen/arch/riscv/include/asm/p2m.h |  11 +--
 xen/arch/riscv/p2m.c             | 113 +++++++++++++++++++++----------
 xen/arch/riscv/vmid.c            |   2 +-
 xen/include/public/arch-riscv.h  |   5 ++
 6 files changed, 121 insertions(+), 41 deletions(-)
 create mode 100644 xen/arch/riscv/dom0less-build.c

diff --git a/xen/arch/riscv/Makefile b/xen/arch/riscv/Makefile
index eecdcbc76867..8f7fd625dddd 100644
--- a/xen/arch/riscv/Makefile
+++ b/xen/arch/riscv/Makefile
@@ -1,6 +1,7 @@
 obj-y += aplic.o
 obj-y += cpufeature.o
 obj-y += domain.o
+obj-$(CONFIG_DOM0LESS_BOOT) += dom0less-build.init.o
 obj-$(CONFIG_EARLY_PRINTK) += early_printk.o
 obj-y += entry.o
 obj-y += extable.o
diff --git a/xen/arch/riscv/dom0less-build.c b/xen/arch/riscv/dom0less-build.c
new file mode 100644
index 000000000000..11fa184d54be
--- /dev/null
+++ b/xen/arch/riscv/dom0less-build.c
@@ -0,0 +1,30 @@
+/* SPDX-License-Identifier: GPL-2.0-only */
+
+#include <xen/bootfdt.h>
+#include <xen/device_tree.h>
+#include <xen/init.h>
+
+#include <asm/p2m.h>
+
+int __init arch_parse_dom0less_node(struct dt_device_node *node,
+                                    struct boot_domain *bd)
+{
+    const char *mmu_type;
+
+    if ( dt_property_read_string(node, "mmu-type", &mmu_type) )
+    {
+        dprintk(XENLOG_WARNING, "mmu-type property is missing in guest domain "
+                "node. %s will be used as fallback\n", max_gstage_mode->name);
+
+        mmu_type = max_gstage_mode->name;
+    }
+
+    if ( safe_strcpy(bd->create_cfg.arch.gstage_mode, mmu_type) )
+    {
+        dprintk(XENLOG_ERR, "mmu-type value \"%s\" is too long\n", mmu_type);
+
+        return -EINVAL;
+    }
+
+    return 0;
+}
diff --git a/xen/arch/riscv/include/asm/p2m.h b/xen/arch/riscv/include/asm/p2m.h
index 54ea67990f06..b5b6a996baeb 100644
--- a/xen/arch/riscv/include/asm/p2m.h
+++ b/xen/arch/riscv/include/asm/p2m.h
@@ -13,7 +13,7 @@
 
 #define P2M_ROOT_ORDER  (ilog2(GSTAGE_ROOT_PAGE_TABLE_SIZE) - PAGE_SHIFT)
 #define P2M_ROOT_PAGES  BIT(P2M_ROOT_ORDER, U)
-#define P2M_ROOT_LEVEL(p2m) ((p2m)->mode.paging_levels)
+#define P2M_ROOT_LEVEL(p2m) ((p2m)->mode->paging_levels)
 
 /*
  * According to the RISC-V spec:
@@ -55,6 +55,8 @@ struct gstage_mode_desc {
     char name[8];
 };
 
+extern const struct gstage_mode_desc *max_gstage_mode;
+
 /* Per-p2m-table state */
 struct p2m_domain {
     /*
@@ -68,7 +70,7 @@ struct p2m_domain {
     /* The root of the p2m tree. May be concatenated */
     struct page_info *root;
 
-    struct gstage_mode_desc mode;
+    const struct gstage_mode_desc *mode;
 
     /* Back pointer to domain */
     struct domain *domain;
@@ -215,9 +217,10 @@ static inline bool arch_acquire_resource_check(struct domain *d)
 }
 
 void guest_mm_init(void);
-unsigned char get_max_supported_mode(void);
 
-int p2m_init(struct domain *d);
+struct xen_domctl_createdomain;
+
+int p2m_init(struct domain *d, const struct xen_domctl_createdomain *config);
 
 static inline void p2m_write_lock(struct p2m_domain *p2m)
 {
diff --git a/xen/arch/riscv/p2m.c b/xen/arch/riscv/p2m.c
index d63697c89a1a..b0773083ff53 100644
--- a/xen/arch/riscv/p2m.c
+++ b/xen/arch/riscv/p2m.c
@@ -45,12 +45,27 @@ struct p2m_pte_ctx {
     unsigned int level;          /* Paging level at which the PTE resides. */
 };
 
-static struct gstage_mode_desc __ro_after_init max_gstage_mode = {
-    .mode = HGATP_MODE_OFF,
-    .paging_levels = 0,
-    .name = "Bare",
+/* Values should be sorted by ->mode in this array */
+static const struct gstage_mode_desc modes[] = {
+    /*
+     * Based on the RISC-V spec:
+     *   Bare mode is always supported, regardless of SXLEN.
+     *   When SXLEN=32, the only other valid setting for MODE is Sv32.
+     *   When SXLEN=64, three paged virtual-memory schemes are defined:
+     *   Sv39, Sv48, and Sv57.
+     */
+    { HGATP_MODE_OFF,    0, "none" },
+#ifdef CONFIG_RISCV_32
+    { HGATP_MODE_SV32X4, 1, "sv32" },
+#else
+    { HGATP_MODE_SV39X4, 2, "sv39" },
+    { HGATP_MODE_SV48X4, 3, "sv48" },
+    { HGATP_MODE_SV57X4, 4, "sv57" },
+#endif
 };
 
+const struct gstage_mode_desc * __ro_after_init max_gstage_mode = &modes[0];
+
 static void p2m_free_page(struct p2m_domain *p2m, struct page_info *pg);
 
 static inline void p2m_free_metadata_page(struct p2m_domain *p2m,
@@ -63,11 +78,6 @@ static inline void p2m_free_metadata_page(struct p2m_domain *p2m,
     }
 }
 
-unsigned char get_max_supported_mode(void)
-{
-    return max_gstage_mode.mode;
-}
-
 /*
  * If anything is changed here, it may also require updates to
  * p2m_{get,set}_type().
@@ -148,23 +158,6 @@ static pte_t *p2m_get_root_pointer(struct p2m_domain *p2m, gfn_t gfn)
 
 static void __init gstage_mode_detect(void)
 {
-    static const struct gstage_mode_desc modes[] __initconst = {
-        /*
-         * Based on the RISC-V spec:
-         *   Bare mode is always supported, regardless of SXLEN.
-         *   When SXLEN=32, the only other valid setting for MODE is Sv32.
-         *   When SXLEN=64, three paged virtual-memory schemes are defined:
-         *   Sv39, Sv48, and Sv57.
-         */
-#ifdef CONFIG_RISCV_32
-        { HGATP_MODE_SV32X4, 2, "Sv32x4" }
-#else
-        { HGATP_MODE_SV39X4, 3, "Sv39x4" },
-        { HGATP_MODE_SV48X4, 4, "Sv48x4" },
-        { HGATP_MODE_SV57X4, 5, "Sv57x4" },
-#endif
-    };
-
     for ( unsigned int mode_idx = ARRAY_SIZE(modes); mode_idx-- > 0; )
     {
         unsigned long mode = modes[mode_idx].mode;
@@ -173,16 +166,16 @@ static void __init gstage_mode_detect(void)
 
         if ( MASK_EXTR(csr_read(CSR_HGATP), HGATP_MODE_MASK) == mode )
         {
-            max_gstage_mode = modes[mode_idx];
+            max_gstage_mode = &modes[mode_idx];
 
             break;
         }
     }
 
-    if ( max_gstage_mode.mode == HGATP_MODE_OFF )
+    if ( max_gstage_mode->mode == HGATP_MODE_OFF )
         panic("Xen expects that G-stage won't be Bare mode\n");
 
-    printk("Max supported G-stage mode is %s\n", max_gstage_mode.name);
+    printk("Max supported G-stage mode is %sx4\n", max_gstage_mode->name);
 
     csr_write(CSR_HGATP, 0);
 
@@ -283,7 +276,7 @@ static void clear_and_clean_page(struct page_info *page, bool clean_dcache)
 unsigned long construct_hgatp(const struct p2m_domain *p2m, uint16_t vmid)
 {
     return MASK_INSR(mfn_x(page_to_mfn(p2m->root)), HGATP_PPN_MASK) |
-           MASK_INSR(p2m->mode.mode, HGATP_MODE_MASK) |
+           MASK_INSR(p2m->mode->mode, HGATP_MODE_MASK) |
            MASK_INSR(vmid, HGATP_VMID_MASK);
 }
 
@@ -331,8 +324,40 @@ static int p2m_alloc_root_table(struct p2m_domain *p2m)
     return 0;
 }
 
-int p2m_init(struct domain *d)
+static const struct gstage_mode_desc * find_gstage_mode(const char *mmu_type)
 {
+    for ( unsigned int mode_idx = 0; mode_idx < ARRAY_SIZE(modes); mode_idx++ )
+    {
+        if ( !strcasecmp(mmu_type, modes[mode_idx].name) )
+        {
+            if ( modes[mode_idx].mode == HGATP_MODE_OFF ||
+                 modes[mode_idx].mode > max_gstage_mode->mode )
+                break;
+
+            return &modes[mode_idx];
+        }
+    }
+
+    ASSERT(modes[0].mode == HGATP_MODE_OFF);
+
+    dprintk(XENLOG_ERR, "Requested G-stage mode (%s) isn't supported\n",
+            mmu_type);
+
+    /*
+     * Return the Bare-mode sentinel. p2m_init() will reject it with
+     * -EINVAL, producing the appropriate domain-creation failure.
+     */
+    return &modes[0];
+}
+
+int p2m_init(struct domain *d, const struct xen_domctl_createdomain *config)
+{
+    /*
+     * TODO: This static is a temporary constraint: all guests must use the
+     * same MMU mode because p2m_gpa_bits is not yet per-domain.
+     * Drop this once per-domain p2m_gpa_bits is introduced.
+     */
+    static const struct gstage_mode_desc *m = &modes[0];
     struct p2m_domain *p2m = p2m_get_hostp2m(d);
 
     /*
@@ -341,6 +366,27 @@ int p2m_init(struct domain *d)
      */
     p2m->domain = d;
 
+    if ( !config )
+    {
+        dprintk(XENLOG_ERR, "NULL config is passed\n");
+        return -EINVAL;
+    }
+
+    p2m->mode = find_gstage_mode(config->arch.gstage_mode);
+
+    if ( p2m->mode->mode == HGATP_MODE_OFF )
+        return -EINVAL;
+
+    if ( m->mode == HGATP_MODE_OFF )
+        m = p2m->mode;
+
+    if ( m->mode != p2m->mode->mode )
+    {
+        dprintk(XENLOG_ERR,
+                "Mode should be the same for all guests at the moment\n");
+        return -EINVAL;
+    }
+
     paging_domain_init(d);
 
     rwlock_init(&p2m->lock);
@@ -362,11 +408,6 @@ int p2m_init(struct domain *d)
 #   error "Add init of p2m->clean_dcache"
 #endif
 
-    /* TODO: don't hardcode used for a domain g-stage mode. */
-    p2m->mode.mode = HGATP_MODE_SV39X4;
-    p2m->mode.paging_levels = 2;
-    safe_strcpy(p2m->mode.name, "Sv39x4");
-
     return 0;
 }
 
diff --git a/xen/arch/riscv/vmid.c b/xen/arch/riscv/vmid.c
index 8fbcd500f24d..11c7e9d6d6c8 100644
--- a/xen/arch/riscv/vmid.c
+++ b/xen/arch/riscv/vmid.c
@@ -52,7 +52,7 @@ static DEFINE_PER_CPU(struct vmid_data, vmid_data);
 static unsigned int vmidlen_detect(void)
 {
     unsigned int vmid_bits;
-    unsigned char gstage_mode = get_max_supported_mode();
+    unsigned char gstage_mode = max_gstage_mode->mode;
 
     /*
      * According to the RISC-V Privileged Architecture Spec:
diff --git a/xen/include/public/arch-riscv.h b/xen/include/public/arch-riscv.h
index 360d8e6871ba..5faf8924d926 100644
--- a/xen/include/public/arch-riscv.h
+++ b/xen/include/public/arch-riscv.h
@@ -56,6 +56,11 @@ typedef struct vcpu_guest_context vcpu_guest_context_t;
 DEFINE_XEN_GUEST_HANDLE(vcpu_guest_context_t);
 
 struct xen_arch_domainconfig {
+    /*
+     * G-stage MMU mode for the guest (e.g. "sv39", "sv48", "sv57").
+     * Must be set; an empty string is invalid.
+     */
+    char gstage_mode[8];
 };
 
 #endif
-- 
2.53.0



From xen-devel-bounces@lists.xenproject.org Fri Apr 10 15:55:23 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Fri, 10 Apr 2026 15:55:23 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1279427.1563911 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wBECY-0000Ps-Tb; Fri, 10 Apr 2026 15:55:22 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1279427.1563911; Fri, 10 Apr 2026 15:55: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 1wBECY-0000Pc-M9; Fri, 10 Apr 2026 15:55:22 +0000
Received: by outflank-mailman (input) for mailman id 1279427;
 Fri, 10 Apr 2026 15:55:21 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92) id 1wBECX-0008WP-Ia
 for xen-devel@lists.xenproject.org; Fri, 10 Apr 2026 15:55:21 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wBECW-00Cgsb-UD
 for xen-devel@lists.xenproject.org; Fri, 10 Apr 2026 17:55:20 +0200
Received: from [10.42.69.7] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <oleksii.kurochko@gmail.com>)
 id 69d91d56-e002-0a2a0a5209dd-0a2a4507d84e-46
 for <xen-devel@lists.xenproject.org>; Fri, 10 Apr 2026 17:55:20 +0200
Received: from [209.85.128.47] (helo=mail-wm1-f47.google.com)
 by tlsNG-ef75cf.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.0)
 (envelope-from <oleksii.kurochko@gmail.com>)
 id 69d91d68-ba2d-0a2a45070019-d155802fb157-3
 for <xen-devel@lists.xenproject.org>; Fri, 10 Apr 2026 17:55:20 +0200
Received: by mail-wm1-f47.google.com with SMTP id
 5b1f17b1804b1-4888375f735so21725865e9.3
 for <xen-devel@lists.xenproject.org>; Fri, 10 Apr 2026 08:55:20 -0700 (PDT)
Received: from fedora (user-109-243-69-121.play-internet.pl. [109.243.69.121])
 by smtp.gmail.com with ESMTPSA id
 5b1f17b1804b1-488d5b3c597sm78285605e9.12.2026.04.10.08.55.18
 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
 Fri, 10 Apr 2026 08:55:19 -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=20251104 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=20251104; t=1775836520; x=1776441320; 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;
        bh=p2w7cswF8WNoXf2rJsjt6cpxdm36ufdLhJBaAPtDOQc=;
        b=jaHo8NAkm7wMWRH5gBep5jkdIplGx0IrKAEQTIiwzsiu2VTyHAbSz6LKYYC+6MzwSD
         kI/kYuyhV9qUtpF6w1RfkAWLXNU0FZq5JXADK/j9FcBxfJk0eQ/whibVNPjjpXMd9C5A
         UEP2KqWAOyuidiT6xWfkbZIGbTyOv35FTXpdpNqOpioTPB2+j6ZxAZuyzWKtfLpDdbyF
         K6uAKP0ZvGs2HONoLkuMlfnHPTqzxjgdNGEoaTnItiYPT1GKT6UvyUBqgUba0MWBHxyN
         ZoMU218BpP/xj6h/u/IlpvoEEmhOKTXRtcHCQzNy8Ul+o9sm3sPKXk+QLom+or9Ufl2A
         96oQ==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20251104; t=1775836520; x=1776441320;
        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;
        bh=p2w7cswF8WNoXf2rJsjt6cpxdm36ufdLhJBaAPtDOQc=;
        b=eTuGk47jVzVPnrNdSp3q5qJw2zs4UbUbV/vM5TMXnvBA38v8CNrkTSxMJMNN2XGlRX
         17oHsWjdHCavSo7pQiRQFlXQAkkakYYYRsXd1bwdv5gavIfeVghAgrh232Jc/HRB/IZo
         wHh7UbCJxQi4RCyQRVP+2bC2qqYSupewfbt0VRZWWSFYpv1ffche198jtELLK/MHbv1H
         3uu5hwvrtMAJdwzbg1s12+ei7km1LG3Kw1o6yzd/ycz7TV1eiSUoAjkFY80Q0xoY1Mz7
         GzjgoqU+cISKed5WhWVnwkBs42Db9yKK/Lzia2DZokwFtn8XRvmW1Ck3sxTdm8Cf/Vye
         xhIA==
X-Gm-Message-State: AOJu0YzlsYbEW63VSXl/2ezUeMR3UgR2x0uBK0jWcOcmzaJhNO9lOsAx
	E3rK+eOa1J6u06Jdbd2YV+ASF4mAltSP0m9ypZ0VySZbCd3Uk7DwOvnmRcZ36w==
X-Gm-Gg: AeBDiesxPNykQ3F+L0Rz7/Ec0+nNBbgCnZv/zmQgFNZF7gQieFPb1L8wyF4df+tgm9g
	/FpEm0ym4McLuiuX+YEerbNJgsB1psjwTZmtL4pByDX8If/CC5ODts00F5W7a5NVgv83pvbeX5Y
	OSddRRw/Q5N3VTGeFSG4nDuf3/QwDQHFwEa9tvZY+3EeD10/rYRtbYZ7sUK7xGIFAkA8sOcl7Of
	OK5dIKIqbeQH+fdPtW+PLVZQJfCUtVN6nsR9cOV2ZAfUKzEfml4a0//FMI4pZCN7w7vOJEpb6HX
	HR++bSJi3/UnUH5vAcloWxcC7MPMULYznugGhlCs65bBo0lm9PHfUFFi4HhQqSMyZRdM35o95R+
	opmqHWD+o0oXBibTLHDMtVQqYyLSLdMXwXrdF5Ww/e3KrIhXdBnJ4dAq/srh4y7us46/RdrxAMd
	b7OI8sNnqe83DcXXlGfrxt/se+UvCx6S+oedESRgfnAYoXXAvuNjSCG86KtsLs41Q6aA==
X-Received: by 2002:a05:600c:45cf:b0:483:8062:b2f with SMTP id 5b1f17b1804b1-488d67b8dddmr46635465e9.6.1775836519900;
        Fri, 10 Apr 2026 08:55:19 -0700 (PDT)
From: Oleksii Kurochko <oleksii.kurochko@gmail.com>
To: xen-devel@lists.xenproject.org
Cc: Romain Caritey <Romain.Caritey@microchip.com>,
	Oleksii Kurochko <oleksii.kurochko@gmail.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>
Subject: [PATCH v3 09/12] xen: rename p2m_ipa_bits to p2m_gpa_bits
Date: Fri, 10 Apr 2026 17:54:55 +0200
Message-ID: <ebfa4d838f0774b0b18addafb6ed2ce90c9eaeef.1775836193.git.oleksii.kurochko@gmail.com>
X-Mailer: git-send-email 2.53.0
In-Reply-To: <cover.1775836193.git.oleksii.kurochko@gmail.com>
References: <cover.1775836193.git.oleksii.kurochko@gmail.com>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit
X-purgate-ID: tlsNG-ef75cf/1775836520-8B74241E-4D9E4FF8/10/73395122804
X-purgate-type: spam
X-purgate-size: 1710

The IPA terminology is Arm-specific, so rename p2m_ipa_bits to
p2m_gpa_bits to use architecture-neutral naming in
xen/common/device-tree/ code.

No functional changes.

Reported-by: Jan Beulich <jbeulich@suse.com>
Signed-off-by: Oleksii Kurochko <oleksii.kurochko@gmail.com>
---
Changes in v3:
 - Introduce #define p2m_gpa_bits p2m_ipa_bits for Arm instead of
   renaming of p2m_ipa_bits to p2m_gpa_bits to keep Arm part of
   changes clearer and keep using Arm-specific terminolgy inside
   Arm code.
---
Changes in v2:
 - New patch.
---
 xen/arch/arm/include/asm/p2m.h        | 2 ++
 xen/common/device-tree/domain-build.c | 2 +-
 2 files changed, 3 insertions(+), 1 deletion(-)

diff --git a/xen/arch/arm/include/asm/p2m.h b/xen/arch/arm/include/asm/p2m.h
index 010ce8c9ebbd..7957dbd96e57 100644
--- a/xen/arch/arm/include/asm/p2m.h
+++ b/xen/arch/arm/include/asm/p2m.h
@@ -14,6 +14,8 @@
 /* Holds the bit size of IPAs in p2m tables.  */
 extern unsigned int p2m_ipa_bits;
 
+#define p2m_gpa_bits p2m_ipa_bits
+
 #define MAX_VMID_8_BIT  (1UL << 8)
 #define MAX_VMID_16_BIT (1UL << 16)
 
diff --git a/xen/common/device-tree/domain-build.c b/xen/common/device-tree/domain-build.c
index e706a6173ba6..30625a33ef08 100644
--- a/xen/common/device-tree/domain-build.c
+++ b/xen/common/device-tree/domain-build.c
@@ -221,7 +221,7 @@ int __init find_unallocated_memory(const struct kernel_info *kinfo,
     }
 
     start = 0;
-    end = (1ULL << p2m_ipa_bits) - 1;
+    end = (1ULL << p2m_gpa_bits) - 1;
     res = rangeset_report_ranges(unalloc_mem, PFN_DOWN(start), PFN_DOWN(end),
                                  cb, free_regions);
     if ( res )
-- 
2.53.0



From xen-devel-bounces@lists.xenproject.org Fri Apr 10 15:55:25 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Fri, 10 Apr 2026 15:55:25 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1279431.1563923 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wBECb-0000vZ-EC; Fri, 10 Apr 2026 15:55:25 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1279431.1563923; Fri, 10 Apr 2026 15:55: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 1wBECb-0000vF-9U; Fri, 10 Apr 2026 15:55:25 +0000
Received: by outflank-mailman (input) for mailman id 1279431;
 Fri, 10 Apr 2026 15:55:22 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92) id 1wBECY-0000Lo-N5
 for xen-devel@lists.xenproject.org; Fri, 10 Apr 2026 15:55:22 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wBECY-00Cgsb-32
 for xen-devel@lists.xenproject.org; Fri, 10 Apr 2026 17:55:22 +0200
Received: from [10.42.69.8] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <oleksii.kurochko@gmail.com>)
 id 69d91d5d-e002-0a2a0a5209dd-0a2a4508b042-30
 for <xen-devel@lists.xenproject.org>; Fri, 10 Apr 2026 17:55:22 +0200
Received: from [209.85.128.43] (helo=mail-wm1-f43.google.com)
 by tlsNG-c1860d.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.0)
 (envelope-from <oleksii.kurochko@gmail.com>)
 id 69d91d69-fab6-0a2a45080019-d155802bccf4-3
 for <xen-devel@lists.xenproject.org>; Fri, 10 Apr 2026 17:55:22 +0200
Received: by mail-wm1-f43.google.com with SMTP id
 5b1f17b1804b1-488971db0fdso21894035e9.0
 for <xen-devel@lists.xenproject.org>; Fri, 10 Apr 2026 08:55:22 -0700 (PDT)
Received: from fedora (user-109-243-69-121.play-internet.pl. [109.243.69.121])
 by smtp.gmail.com with ESMTPSA id
 5b1f17b1804b1-488d5b3c597sm78285605e9.12.2026.04.10.08.55.20
 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
 Fri, 10 Apr 2026 08:55:20 -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=20251104 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=20251104; t=1775836521; x=1776441321; 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;
        bh=QlCZP54FVwoINVQH9AKDNs9Wb2jDgoF1x8rYbTHfdf8=;
        b=nkmlAG4FxYmyic2uTgNbvgnloBcv4lHIG4JfWv2Y8MiIxeuRlxdEx/v5LxGRmYZyN3
         4kXsv81wvYapMexxFttt4QQzEdscvc9DfIr9myPUrxX1VLZIVnx7+nRdCQmh7h6F5aUy
         MGq+gJ/dHkmBT1app+vY0AdgmUEA2K8HE/fDBVqU5u7uJcLq/NuVZ/5qltndFkhg7VLe
         6HVJpgmr6ukpVTxPOyzqPCglYigDVaeROjQElu8A81wjULMH851yQifbKul7ydNEE0fm
         eG+O1ncy/2iElyWJXG53mQojAXknOtSkrtXWy1R0M5RCTahfmNi4XlZ8wlZXyrSNq+jy
         hChw==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20251104; t=1775836521; x=1776441321;
        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;
        bh=QlCZP54FVwoINVQH9AKDNs9Wb2jDgoF1x8rYbTHfdf8=;
        b=PiLIfSeRF50dSpoek8oA7qYk54D+yhqYGHiizR9PrhcL6MtS7BOF/fOqX0BCJsEKXb
         CGisXVB4snyRJhCI6841jnyCkPG1LniMvRb57X0tovHpfSeGWWrnBzkXV1xn8bliDIMS
         dtDuCltudwKl4BB7A2Mg+zKHKCrezqEdFb2dmLi43GuzWb4DplzpGwyeR0s+qm1E4GGd
         wt61C8f4dzkmaT3RMzVP/Ky4GFUppSk7ZIfds5AonImq5PC6qBpvpmd+lWj/YOsC1JaT
         HuEVuFWbE5XQlFT3HGN0yvroCrXP0rbP8HLyJQ1LK6hxfPEI525p3brdgVu+yZMVxUfT
         PH7g==
X-Gm-Message-State: AOJu0YxifPvBrtjIcVuuCKxG3mXejSX8y0cx96lldbegVoOn12YOhLWb
	bmMP5z8nzGcFbiOmt0OF2BTouByfSQtVI7HsH/T8z/gTCjV4rwpuKcZCA6LI/g==
X-Gm-Gg: AeBDieu7EgebCA8yc21PL0XA11x77aI35taf1CA0HWW1iJ7/2KK37qmC7h2evqNA9v+
	gnqu9iQUrfMax/wD8zbEhOA/4fUoMFOdPPDxZ/S7Ubgp/8OAfH6KcrzawLoQYlFhwKuQMdh+rsk
	TZMIq3MVLsh0YW5JKUG1mToxBA267HG9MEXtTIKEWg+b76R4o0PreuMSvBMT8G4z2JBCNz9FqIb
	4QzeX6a1JLp/zQXyhGPpn3JFL1yoqnUQu540KpPpv6hUakVEiq3tL2nbODGalYuGpESy0pnlQ1R
	UcMLJgFBtrMM+daRRjZMHV545X1n1wK3Vsds6zMcyvdvnXHzAKApO1a93FSM5rshVykzV/f+9nm
	LOasCZ9VYxXDPemIat4Lp3bs18OVMeiNaOtnF7/uqHrMNrL0lFW99TDmc2fqJX5MimBQPT3urt1
	U6FR0PIPM3m+l8XX1O13DnPo2nczuiWh+uwLJ57/nHkeplWwlWK58t1rDCG/eaLsOKDg==
X-Received: by 2002:a05:600d:d:b0:488:ba5f:984f with SMTP id 5b1f17b1804b1-488d67b8dadmr39997735e9.6.1775836521179;
        Fri, 10 Apr 2026 08:55:21 -0700 (PDT)
From: Oleksii Kurochko <oleksii.kurochko@gmail.com>
To: xen-devel@lists.xenproject.org
Cc: Romain Caritey <Romain.Caritey@microchip.com>,
	Oleksii Kurochko <oleksii.kurochko@gmail.com>,
	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=20Pau=20Monn=C3=A9?= <roger.pau@citrix.com>,
	Stefano Stabellini <sstabellini@kernel.org>
Subject: [PATCH v3 10/12] xen/riscv: introduce p2m_gpa_bits
Date: Fri, 10 Apr 2026 17:54:56 +0200
Message-ID: <87d8050f252fb76e241a40809763e60d9874e902.1775836193.git.oleksii.kurochko@gmail.com>
X-Mailer: git-send-email 2.53.0
In-Reply-To: <cover.1775836193.git.oleksii.kurochko@gmail.com>
References: <cover.1775836193.git.oleksii.kurochko@gmail.com>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit
X-purgate-ID: tlsNG-c1860d/1775836522-75159497-8D1036E3/10/73395122804
X-purgate-type: spam
X-purgate-size: 4033

common/device-tree/domain-build.c uses p2m_gpa_bits to determine the
upper bound of the GPA space when searching for unused regions, so it
must be defined when CONFIG_DOMAIN_BUILD_HELPERS=y.

The variable is initialised to PADDR_BITS and narrowed in p2m_init() to
the GPA width of the selected G-stage mode, allowing an external entity
(e.g. an IOMMU) to restrict it further if needed.

p2m_gpa_bits is a global rather than a per-domain value, which is
acceptable for now because all domains are required to use the same
G-stage MMU mode, as dom0less common code allocates it per all
domains.

Signed-off-by: Oleksii Kurochko <oleksii.kurochko@gmail.com>
---
Changes in v3:
 - Update initialization of p2m_gpa_bits and the comment above.
 - Rework how p2m_gpa_bits is limited.
 - Update the commit message.
---
Changes in v2:
 - New patch.
---
 xen/arch/riscv/include/asm/p2m.h | 10 ++++++++--
 xen/arch/riscv/p2m.c             | 17 ++++++++++++++++-
 2 files changed, 24 insertions(+), 3 deletions(-)

diff --git a/xen/arch/riscv/include/asm/p2m.h b/xen/arch/riscv/include/asm/p2m.h
index b5b6a996baeb..0d1dace1a0d8 100644
--- a/xen/arch/riscv/include/asm/p2m.h
+++ b/xen/arch/riscv/include/asm/p2m.h
@@ -32,10 +32,13 @@
  */
 #define P2M_LEVEL_ORDER(lvl) XEN_PT_LEVEL_ORDER(lvl)
 
-#define P2M_ROOT_EXTRA_BITS(p2m, lvl) (2 * ((lvl) == P2M_ROOT_LEVEL(p2m)))
+#define P2M_ROOT_EXTRA_BITS 2
+
+#define P2M_LEVEL_EXTRA_BITS(p2m, lvl) \
+    (P2M_ROOT_EXTRA_BITS * ((lvl) == P2M_ROOT_LEVEL(p2m)))
 
 #define P2M_PAGETABLE_ENTRIES(p2m, lvl) \
-    (BIT(PAGETABLE_ORDER + P2M_ROOT_EXTRA_BITS(p2m, lvl), UL))
+    (BIT(PAGETABLE_ORDER + P2M_LEVEL_EXTRA_BITS(p2m, lvl), UL))
 
 #define P2M_TABLE_OFFSET(p2m, lvl) (P2M_PAGETABLE_ENTRIES(p2m, lvl) - 1UL)
 
@@ -44,6 +47,9 @@
 #define P2M_LEVEL_MASK(p2m, lvl) \
     (P2M_TABLE_OFFSET(p2m, lvl) << P2M_GFN_LEVEL_SHIFT(lvl))
 
+/* Holds the bit size of GPAs in p2m tables */
+extern unsigned int p2m_gpa_bits;
+
 #define paddr_bits PADDR_BITS
 
 /* Get host p2m table */
diff --git a/xen/arch/riscv/p2m.c b/xen/arch/riscv/p2m.c
index b0773083ff53..1f229e96d740 100644
--- a/xen/arch/riscv/p2m.c
+++ b/xen/arch/riscv/p2m.c
@@ -11,6 +11,8 @@
 #include <xen/sections.h>
 #include <xen/xvmalloc.h>
 
+#include <public/domctl.h>
+
 #include <asm/cpufeature.h>
 #include <asm/csr.h>
 #include <asm/flushtlb.h>
@@ -66,6 +68,12 @@ static const struct gstage_mode_desc modes[] = {
 
 const struct gstage_mode_desc * __ro_after_init max_gstage_mode = &modes[0];
 
+/*
+ * Set to the maximum configured support for GPA bits, so the number of GPA
+ * bits can be restricted by an external entity (e.g. IOMMU).
+ */
+unsigned int __ro_after_init p2m_gpa_bits = PADDR_BITS;
+
 static void p2m_free_page(struct p2m_domain *p2m, struct page_info *pg);
 
 static inline void p2m_free_metadata_page(struct p2m_domain *p2m,
@@ -359,6 +367,7 @@ int p2m_init(struct domain *d, const struct xen_domctl_createdomain *config)
      */
     static const struct gstage_mode_desc *m = &modes[0];
     struct p2m_domain *p2m = p2m_get_hostp2m(d);
+    unsigned int gpa_bits;
 
     /*
      * "Trivial" initialisation is now complete.  Set the backpointer so the
@@ -408,6 +417,12 @@ int p2m_init(struct domain *d, const struct xen_domctl_createdomain *config)
 #   error "Add init of p2m->clean_dcache"
 #endif
 
+    gpa_bits = P2M_GFN_LEVEL_SHIFT(p2m->mode->paging_levels + 1) +
+               P2M_ROOT_EXTRA_BITS;
+
+    if ( gpa_bits < p2m_gpa_bits )
+        p2m_gpa_bits = gpa_bits;
+
     return 0;
 }
 
@@ -1345,7 +1360,7 @@ static mfn_t p2m_get_entry(struct p2m_domain *p2m, gfn_t gfn,
 {
     unsigned int level = P2M_ROOT_LEVEL(p2m);
     unsigned int gfn_limit_bits =
-        P2M_LEVEL_ORDER(level + 1) + P2M_ROOT_EXTRA_BITS(p2m, level);
+        P2M_LEVEL_ORDER(level + 1) + P2M_LEVEL_EXTRA_BITS(p2m, level);
     pte_t entry, *table;
     int rc;
     mfn_t mfn = INVALID_MFN;
-- 
2.53.0



From xen-devel-bounces@lists.xenproject.org Fri Apr 10 15:55:26 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Fri, 10 Apr 2026 15:55:26 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1279434.1563928 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wBECc-00011S-1g; Fri, 10 Apr 2026 15:55:26 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1279434.1563928; Fri, 10 Apr 2026 15:55: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 1wBECb-00010H-No; Fri, 10 Apr 2026 15:55:25 +0000
Received: by outflank-mailman (input) for mailman id 1279434;
 Fri, 10 Apr 2026 15:55:24 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92) id 1wBECZ-0000go-Vt
 for xen-devel@lists.xenproject.org; Fri, 10 Apr 2026 15:55:23 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wBECZ-00Cgsb-BJ
 for xen-devel@lists.xenproject.org; Fri, 10 Apr 2026 17:55:23 +0200
Received: from [10.42.69.7] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <oleksii.kurochko@gmail.com>)
 id 69d91d6a-e002-0a2a0a5209dd-0a2a4507c022-4
 for <xen-devel@lists.xenproject.org>; Fri, 10 Apr 2026 17:55:23 +0200
Received: from [209.85.128.42] (helo=mail-wm1-f42.google.com)
 by tlsNG-ef75cf.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.0)
 (envelope-from <oleksii.kurochko@gmail.com>)
 id 69d91d6b-ba2d-0a2a45070019-d155802ac91f-3
 for <xen-devel@lists.xenproject.org>; Fri, 10 Apr 2026 17:55:23 +0200
Received: by mail-wm1-f42.google.com with SMTP id
 5b1f17b1804b1-488b8bc6bc9so15801995e9.3
 for <xen-devel@lists.xenproject.org>; Fri, 10 Apr 2026 08:55:23 -0700 (PDT)
Received: from fedora (user-109-243-69-121.play-internet.pl. [109.243.69.121])
 by smtp.gmail.com with ESMTPSA id
 5b1f17b1804b1-488d5b3c597sm78285605e9.12.2026.04.10.08.55.21
 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
 Fri, 10 Apr 2026 08:55:22 -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=20251104 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=20251104; t=1775836522; x=1776441322; 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;
        bh=j/LD+Q0Pk+2kpOMYSoWm4Kl0NPbf+mdTSKTiw89GJZY=;
        b=NS3KKP6d9Lf0fLcTNYe9rrRWHhAl/mMHQNBT30DY00SlZK9DezZLP4xT+2fzpjjxLi
         sAhWQZYF046B74ioVBvGtEiET7fBNm80/IYzswi5EWhBxtz8VG5n6jTLFrU82xhdGVSc
         yFu4fmEAPSGM5yxLJBth/1NYXq0tK9Ty/SPBLJVPV5M5EclwEPfniJ4qcp2SPLHWGy1v
         uZ9Y7bcGIzoT1vmPLP9IZ2KHV/2ppkIKc9+Uo6lj03G1QFoZJ2O0BwB8diRHAdWiomsk
         Beq58GP7deZd9O1QmMXZRKmemYCEgn6vFeq75bf1bm8cvGjMsWfAxuWPzQiEeUknxU9q
         hviQ==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20251104; t=1775836522; x=1776441322;
        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;
        bh=j/LD+Q0Pk+2kpOMYSoWm4Kl0NPbf+mdTSKTiw89GJZY=;
        b=mwyL6u975ZoORfknTgQKadglSUE0RjfMh+6osljlQU8/pq6D17QFI7XqCGA1gWKMO8
         NFN/BJq/Cyu8Pr2bEHyfOYzrsw3D3QFL9xlUEJ/2qEiN0zB5KwGOIkHMQS7wWoZWTx60
         MfgK1eNmjcylc7Ja4vtdOqtfsaYaHnYu6fzgLprAOxqU9Lq2AuJPg9N/bEgg8fJ8gcTx
         7HVzqVVJvXIs4k8C1V4jM7uLSfa1w4lqNE+Lr5RQvUzSroWB5YoxNA0Zybu5DcyZoTzc
         VLOmdQVo5spqv7OuyoJIUiA3hnHtdsHHXxyPhCfvyjuCr5YVL6aDN6p/y+9NhQme1gzc
         B60A==
X-Gm-Message-State: AOJu0YxvBFAhG9137LLKdRy0iV8ScdXOcwWAlVEABEejqxQ1NJ1jCbB5
	ziMxkRpTKvDfDsxTDJybK8gO+OEEgxqlB0fXJac9kHL8gI6+5yCfmJ/PbShLeA==
X-Gm-Gg: AeBDiet7w8Bp3XDzJYLynH8UB8BwSDyDDEVd/JW4ozupOA8nx3UafKDgzheJnQ4+sY9
	kEUomgl/n0/Yph/kRKpq3jsQjKPlbbOsYlCvNBYJs/IHwgdQNqkzni42Y24P1hlgLwYmnNkQBAw
	z/GAeEtIkK5lh289XCsTvh6YOyktnnn2mSIGAwcF7kcLaVHOpsCO7KOWXO3FPRoBD39KcfBlIeu
	rMonk0thhf25ifK7/3rUDbdhL88IkXysr5P+tSCqGnvnBvk/mvbT0bek36XJz8by20nEFNGXj+F
	1XUA8y75jKkyrWKk2ZDCoqTbkXD89J0C0DlAPkY4vwGXaSxEZ4RNVnkDX/qbybloPthCAmV9tF5
	KBXwNGhPIeQR53CT2LoQTiD1/tGykFWZdxQDgtFIZf/vd5wHXec7lhkhyRrirAMbbMpONOBw3g7
	sL0ieorlPsx4tS0xUZVP2UKSQx0EPTvonwSzvEaSpeRJaeb2Dd18NnNhr9usqhXqiqPw==
X-Received: by 2002:a05:600c:8907:b0:488:ab1d:dcc5 with SMTP id 5b1f17b1804b1-488d6ac1bafmr31367345e9.27.1775836522434;
        Fri, 10 Apr 2026 08:55:22 -0700 (PDT)
From: Oleksii Kurochko <oleksii.kurochko@gmail.com>
To: xen-devel@lists.xenproject.org
Cc: Romain Caritey <Romain.Caritey@microchip.com>,
	Oleksii Kurochko <oleksii.kurochko@gmail.com>,
	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=20Pau=20Monn=C3=A9?= <roger.pau@citrix.com>,
	Stefano Stabellini <sstabellini@kernel.org>
Subject: [PATCH v3 11/12] xen/riscv: add definition of guest RAM banks
Date: Fri, 10 Apr 2026 17:54:57 +0200
Message-ID: <8280fe1a5effacd595d3dd69b2b11e06226411b2.1775836193.git.oleksii.kurochko@gmail.com>
X-Mailer: git-send-email 2.53.0
In-Reply-To: <cover.1775836193.git.oleksii.kurochko@gmail.com>
References: <cover.1775836193.git.oleksii.kurochko@gmail.com>
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
X-purgate-ID: tlsNG-ef75cf/1775836523-8955341E-457CF58A/10/73395122804
X-purgate-type: spam
X-purgate-size: 3066

The dom0less solution uses defined RAM banks as compile-time constants,
so introduce macros to describe guest RAM banks.

The reason for 2 banks is that there is typically always a use case for
low memory under 4 GB, but the bank under 4 GB ends up being small because
there are other things under 4 GB it can conflict with (interrupt
controller, PCI BARs, etc.). So a second bank is added above that MMIO
region (starting at 8 GiB) to provide the remaining RAM; the gap between
the two banks also exercises code paths handling discontiguous memory.
For Sv32 guests (34-bit GPA, 16 GiB addressable), bank0 provides 2 GB
(2–4 GB) and the first 8 GB of bank1 (8–16 GB) is accessible.

Extended regions are useful for RISC-V: they could be used to provide a
"space" for Linux to map grant mappings.

Despite the fact that for every guest MMU mode the GPA could be up
to 56 bits wide (except Sv32 whose GPA is 34 bits), the combined size
of both banks is limited to 1018 GB as it is more than enough for most
use cases.

Add inclusion of asm/guest-layout.h to asm/domain.h to make dom0less
common code build happy.

Signed-off-by: Oleksii Kurochko <oleksii.kurochko@gmail.com>
---
Changes in v3:
 - Move GUEST_RAM*-related defines to asm/p2m.h instead of public header.
---
Changes in v2:
 - New patch.
---
 xen/arch/riscv/include/asm/domain.h       |  1 +
 xen/arch/riscv/include/asm/guest-layout.h | 23 +++++++++++++++++++++++
 2 files changed, 24 insertions(+)
 create mode 100644 xen/arch/riscv/include/asm/guest-layout.h

diff --git a/xen/arch/riscv/include/asm/domain.h b/xen/arch/riscv/include/asm/domain.h
index 6c48bf13111d..6044ce0feee0 100644
--- a/xen/arch/riscv/include/asm/domain.h
+++ b/xen/arch/riscv/include/asm/domain.h
@@ -7,6 +7,7 @@
 #include <xen/xmalloc.h>
 #include <public/hvm/params.h>
 
+#include <asm/guest-layout.h>
 #include <asm/p2m.h>
 #include <asm/vtimer.h>
 
diff --git a/xen/arch/riscv/include/asm/guest-layout.h b/xen/arch/riscv/include/asm/guest-layout.h
new file mode 100644
index 000000000000..68d95a09394c
--- /dev/null
+++ b/xen/arch/riscv/include/asm/guest-layout.h
@@ -0,0 +1,23 @@
+#ifndef ASM_RISCV_GUEST_LAYOUT_H
+#define ASM_RISCV_GUEST_LAYOUT_H
+
+#include <public/xen.h>
+
+#define GUEST_RAM_BANKS   2
+
+/*
+ * The way to find the extended regions (to be exposed to the guest as unused
+ * address space) relies on the fact that the regions reserved for the RAM
+ * below are big enough to also accommodate such regions.
+ */
+#define GUEST_RAM0_BASE   xen_mk_ullong(0x80000000) /* 2GB of low RAM @ 2GB */
+#define GUEST_RAM0_SIZE   xen_mk_ullong(0x80000000)
+
+#define GUEST_RAM1_BASE   xen_mk_ullong(0x0200000000) /* 1016 GB of RAM @ 8GB */
+#define GUEST_RAM1_SIZE   xen_mk_ullong(0xFE00000000)
+
+/* TODO: allocate these all dynamically */
+#define GUEST_RAM_BANK_BASES   { GUEST_RAM0_BASE, GUEST_RAM1_BASE }
+#define GUEST_RAM_BANK_SIZES   { GUEST_RAM0_SIZE, GUEST_RAM1_SIZE }
+
+#endif /* ASM_RISCV_GUEST_LAYOUT_H */
-- 
2.53.0



From xen-devel-bounces@lists.xenproject.org Fri Apr 10 15:55:27 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Fri, 10 Apr 2026 15:55:27 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1279438.1563932 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wBECc-000179-P8; Fri, 10 Apr 2026 15:55:26 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1279438.1563932; Fri, 10 Apr 2026 15:55: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 1wBECc-000159-Be; Fri, 10 Apr 2026 15:55:26 +0000
Received: by outflank-mailman (input) for mailman id 1279438;
 Fri, 10 Apr 2026 15:55:25 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92) id 1wBECb-0000sc-2l
 for xen-devel@lists.xenproject.org; Fri, 10 Apr 2026 15:55:25 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wBECa-00Cgsb-Eg
 for xen-devel@lists.xenproject.org; Fri, 10 Apr 2026 17:55:24 +0200
Received: from [10.42.69.8] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <oleksii.kurochko@gmail.com>)
 id 69d91d5d-e002-0a2a0a5209dd-0a2a4508b042-36
 for <xen-devel@lists.xenproject.org>; Fri, 10 Apr 2026 17:55:24 +0200
Received: from [209.85.128.54] (helo=mail-wm1-f54.google.com)
 by tlsNG-c1860d.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.0)
 (envelope-from <oleksii.kurochko@gmail.com>)
 id 69d91d6c-fab6-0a2a45080019-d1558036acec-3
 for <xen-devel@lists.xenproject.org>; Fri, 10 Apr 2026 17:55:24 +0200
Received: by mail-wm1-f54.google.com with SMTP id
 5b1f17b1804b1-488a14c31eeso17205725e9.0
 for <xen-devel@lists.xenproject.org>; Fri, 10 Apr 2026 08:55:24 -0700 (PDT)
Received: from fedora (user-109-243-69-121.play-internet.pl. [109.243.69.121])
 by smtp.gmail.com with ESMTPSA id
 5b1f17b1804b1-488d5b3c597sm78285605e9.12.2026.04.10.08.55.22
 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
 Fri, 10 Apr 2026 08:55:23 -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=20251104 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=20251104; t=1775836524; x=1776441324; 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;
        bh=harNJKN/3/ApQ6euFfpXmy5P6ZKtKwJXsuo2nm4shJQ=;
        b=g1sD7/Uo4PcCSc/3eYqqGLtCoyRxAiXEETYpTJ2cis30caJWidGoI69X0eSJJfWo3j
         jPVHS0qwFhhO6dG9skh7rfH9tr+tFbBdAtw5dOEFyjpB0TsPP7qykgA7zYPUkOPAM8Jd
         YUMnPWcAOCa3y1BUywz7PB6QD04jMsDwLHW9mnwSOyDFBQBXl4sKw7F8SbAlmEbI9CrI
         su4P8czBieEaGXYVdZEIaRers5sxmUb5ExekY8zPSpVIWCKntGEOdsj/BarL5yBZWIMF
         qn6Bt/PiqUu2crkb86czStbKHHSftzN7YGbZbNqyjxQVROpxLvO2jyfUKeFIror97ZvR
         1b8w==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20251104; t=1775836524; x=1776441324;
        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;
        bh=harNJKN/3/ApQ6euFfpXmy5P6ZKtKwJXsuo2nm4shJQ=;
        b=Zon3tPA35X/Oc8++38i2Bvo1+Hq6KH2109vHSqEhlw3Vdd0IoRpuksNqmttHz2rSWt
         0sVR7USlghABEcEmpnOwu+PKafeCSnh/G349tgjiUFKGQQU+IgMrz+uE7MO58s1m9XVP
         BGS839c+MMRxX9XlJr5Q5KBHvCfsCWqc3Z/tdGwIBH5bMmaDF3qae1oTX7o6i7PU/gZe
         qwh5yCI1hh5T2TNi5P9TEMHRy32/Ccad/Le+ZP/qgYv2QzKukKT58Po+YkICBMxKLfnS
         tKRn1PkGML9Q8xnCNo8eTjNB4rmna0AylTZLs079u7htNHypMHp/yZaKRzcX3r02Ts5A
         tscw==
X-Gm-Message-State: AOJu0YxWpM8XzRuoqiRV1MnWLvpH4G8HkVx2TBOfhDO8TyJrC+h3TRC2
	dCYv25CkvuGX0YVBPKhTNnvdzUg4uta0b26kNmBnjvcTSgjMjtnTofioh7XTxg==
X-Gm-Gg: AeBDievad738q1r/4nwGez8WdW1/NICeZ9SGTU83nSEUPxeIigrKOObP/2+NHBjvlyK
	7XncSEvxsj/0+Xha+GXOIaiBuymb/6gi1nfdubr/pXlET4vJQ8CfHJ1eWXHw20unnLdnLSwWAii
	MwLyx3KHZh1e4/MubphsEX+cdEEcarhXG88Yxhj7X/v0nCGUPWfH7moATH89zVTbKARaxXaJuTA
	cRB6QrLIlqtSedCEudmwBe37Nz67lI+HwELb574ueZXM32BN/YUUnGUgk5Bn+/BAiqvZ8SnGUVa
	Ti0g4K0sY2uPG+xhm8adc88RU2Ov5mcbdb7Mj3bu0jMtxXll5TlmF5Hl/mzTy16poma6w9n1DuD
	XKcgxoXjpntyg85QKGGwqQ96CDu2MEBIjFWbj5HTiVSax9kwBtJ4OH31x1ZfRcejTn7EW6fY+ho
	3yO8sTgoeXV9ilEEF5EubBjOw4QQ7dYHuwWPGXDbLD4nEqyMMzezQyPJAetBLNgwYrmw==
X-Received: by 2002:a05:600c:3b96:b0:488:b098:b653 with SMTP id 5b1f17b1804b1-488d67f0a8amr49856885e9.13.1775836523657;
        Fri, 10 Apr 2026 08:55:23 -0700 (PDT)
From: Oleksii Kurochko <oleksii.kurochko@gmail.com>
To: xen-devel@lists.xenproject.org
Cc: Romain Caritey <Romain.Caritey@microchip.com>,
	Oleksii Kurochko <oleksii.kurochko@gmail.com>,
	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=20Pau=20Monn=C3=A9?= <roger.pau@citrix.com>,
	Stefano Stabellini <sstabellini@kernel.org>
Subject: [PATCH v3 12/12] xen/riscv: enable DOMAIN_BUILD_HELPERS
Date: Fri, 10 Apr 2026 17:54:58 +0200
Message-ID: <ad7eb62c8953a5dba09f285124251dab2f48cbab.1775836193.git.oleksii.kurochko@gmail.com>
X-Mailer: git-send-email 2.53.0
In-Reply-To: <cover.1775836193.git.oleksii.kurochko@gmail.com>
References: <cover.1775836193.git.oleksii.kurochko@gmail.com>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit
X-purgate-ID: tlsNG-c1860d/1775836524-F5F52497-48010394/10/73395122804
X-purgate-type: spam
X-purgate-size: 851

Everything is ready to enable DOMAIN_BUILD_HELPER which are necessary
for dom0less common code. So enable it.

Signed-off-by: Oleksii Kurochko <oleksii.kurochko@gmail.com>
Acked-by: Jan Beulich <jbeulich@suse.com>
---
Changes in v3:
 - Add Acked-by: Jan Beulich <jbeulich@suse.com>.
---
Changes in v2:
 - Move introduction of p2m_ipa_bits to separate patch.
 - Move to separate patch introduction of guest banks constansts.
---
 xen/arch/riscv/Kconfig | 1 +
 1 file changed, 1 insertion(+)

diff --git a/xen/arch/riscv/Kconfig b/xen/arch/riscv/Kconfig
index a5e87c1757f7..41426c205292 100644
--- a/xen/arch/riscv/Kconfig
+++ b/xen/arch/riscv/Kconfig
@@ -1,5 +1,6 @@
 config RISCV
 	def_bool y
+	select DOMAIN_BUILD_HELPERS
 	select FUNCTION_ALIGNMENT_16B
 	select GENERIC_BUG_FRAME
 	select GENERIC_UART_INIT
-- 
2.53.0



From xen-devel-bounces@lists.xenproject.org Fri Apr 10 17:02:30 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Fri, 10 Apr 2026 17:02:30 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1279586.1563958 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wBFFL-00072I-P1; Fri, 10 Apr 2026 17:02:19 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1279586.1563958; Fri, 10 Apr 2026 17:02: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 1wBFFL-00072B-L4; Fri, 10 Apr 2026 17:02:19 +0000
Received: by outflank-mailman (input) for mailman id 1279586;
 Fri, 10 Apr 2026 16:40:55 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <ruslichenko.r@gmail.com>) id 1wBEud-0004ce-Ol
 for xen-devel@lists.xenproject.org; Fri, 10 Apr 2026 16:40:55 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wBEud-00GILx-4t
 for xen-devel@lists.xenproject.org; Fri, 10 Apr 2026 18:40:55 +0200
Received: from [10.42.69.9] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <ruslichenko.r@gmail.com>)
 id 69d92808-e002-0a2a0a5209dd-0a2a4509c3b6-20
 for <xen-devel@lists.xenproject.org>; Fri, 10 Apr 2026 18:40:55 +0200
Received: from [209.85.221.53] (helo=mail-wr1-f53.google.com)
 by tlsNG-bad1c0.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.0)
 (envelope-from <ruslichenko.r@gmail.com>)
 id 69d92816-bf79-0a2a45090019-d155dd35e810-3
 for <xen-devel@lists.xenproject.org>; Fri, 10 Apr 2026 18:40:55 +0200
Received: by mail-wr1-f53.google.com with SMTP id
 ffacd0b85a97d-43cf7683a28so1518543f8f.2
 for <xen-devel@lists.xenproject.org>; Fri, 10 Apr 2026 09:40:55 -0700 (PDT)
Received: from thinkpad-t470s.. (93-138-230-56.adsl.net.t-com.hr.
 [93.138.230.56]) by smtp.googlemail.com with ESMTPSA id
 ffacd0b85a97d-43d63de2a74sm9148616f8f.3.2026.04.10.09.40.52
 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
 Fri, 10 Apr 2026 09:40:53 -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=20251104 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=20251104; t=1775839254; x=1776444054; 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;
        bh=i2MeOwOQ0HpzPcQqHFqvJhQPkk3zuHdR2kp1S4waI/Y=;
        b=NFd8cvwowwrgrHBayC1FeAFp5rfctjN3P3lIzetmZT07Y8fnV2XY54bTusXlwb3D5z
         GNhaoQX2GbBNfKdi3xlNXWxdazkh9WsirjkSfcx2xHLvur9tziXbbrRYWYEkb+MaFb2t
         1rOXA+qKvnqtXNQEXqv3XVsvoACa64mnPcuEBk9LCUC6ZlKkMIYFvCZufkF1Rrqf+8nJ
         9uULkOXM1Dlcvbq68IVzyxEvgtuMksL/DDDmLgjRcEpE1MLVUoqTvwrLtizFJVzwvCpq
         +vdNU1ZLBbEIrvm9mP/6Pk+hDkXlRC+Xf/qSN8Vt1xBcte9zW3M2/+yKRfCHep9PV8dl
         TGtQ==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20251104; t=1775839254; x=1776444054;
        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;
        bh=i2MeOwOQ0HpzPcQqHFqvJhQPkk3zuHdR2kp1S4waI/Y=;
        b=ct8I4oN+oNlkR3H/nhpMQp7H6ToQouEZul0MwMCeJMTL4LzkWZWaGATuxBwm7gWh4v
         vmvW8OKyRq2lLt9mqGaZCNEJNBUkNs04Ve49M3pi+1YqDnevMsgGbLCCBOgKvoy9BRbK
         +LMES04Ce54rIJWTxK5nIh8exqkrI40vdC2UwYOpu53//HxxgyIslfcxR++p+CMDCSwb
         PybPrdqgcy8PAKFKoGI2rkjxR+n3WMDsHZ4Kh+Yei1kyYCBA7q0rP/QancDQhB1GPNCz
         dY+gzctjVgFV68hw1oN2oqroHmxYH3PdAjeN20VPIPlfDe1R6f6wZadr0VJfPgRfH5Vl
         sikg==
X-Gm-Message-State: AOJu0Yw9MpYrVas/qWT1Okp+8fQ6ZLc9LGMQvOLFqo8htkYh6nTrL10m
	lY3XVf+KxufDHG8VpqdYR7fJxqfCoVoGwaJB5qn3iVK6HKhZxlI/4+hQLEjtCLeh
X-Gm-Gg: AeBDietOq6Lnk347PS0e0J/VLDVaBqhZlVb7nV5U59hD55KigXi0AMQGRh0x1tH1NQH
	86QneOHQlYJsDPJzms9spxUA+YcX15+z6jGplUyi+oP1k4BeB8ykuOryiFKjtFoMizAc4HVvbSd
	CUaAoMGVZM7GgiRjqcFzOU+JvaNY2hvAMhAQP6k9rbX5YzYYynj9LtpN6mDdUn8CTaRL0lc25u0
	WihXEU0WOGErWzTj/U47zuNocr/5CKG9Pv0TL6rbpwaxAv41jZrMQQd+gAAk24tvmuzbTp0036o
	PqYShDv2h3saAxC9bP+bQRAQNpWi/DEEGllK5OWQGkVAoJiOZAtIW7T9Wjy+CpBtWp4a9mSvbB9
	ggWklPiLe0RNB4eTUgxSgtL7ph9+uC3ytaZV/7WgRd6Dlb8a3oDDM3YgCZcKPojd1+54aMdpy7N
	Nbk6HGkw1DQoLO1iiJWbSfp/+fUoWEQOxHU68Cs0JzU2Ns/W9exD95itsXLbsHuPb1Q0Y=
X-Received: by 2002:a05:6000:611:b0:43d:613:33d8 with SMTP id ffacd0b85a97d-43d642b9e4amr6075919f8f.29.1775839253942;
        Fri, 10 Apr 2026 09:40:53 -0700 (PDT)
From: Ruslan Ruslichenko <ruslichenko.r@gmail.com>
To: xen-devel@lists.xenproject.org
Cc: volodymyr_babchuk@epam.com,
	Ruslan_Ruslichenko@epam.com,
	Dario Faggioli <dfaggioli@suse.com>,
	Juergen Gross <jgross@suse.com>,
	George Dunlap <gwd@xenproject.org>
Subject: [PATCH] xen/sched: fix scheduler callback verification on init
Date: Fri, 10 Apr 2026 18:40:39 +0200
Message-ID: <20260410164039.1000284-1-ruslichenko.r@gmail.com>
X-Mailer: git-send-email 2.43.0
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit
X-purgate-ID: tlsNG-bad1c0/1775839255-5CDF7152-028EBDF8/0/0
X-purgate-type: clean
X-purgate-size: 1916

From: Ruslan Ruslichenko <Ruslan_Ruslichenko@epam.com>

During core scheduler initialization, each registered scheduler
is sanity tested in two steps:

- it must provide required callbacks (e.g. init, do_schedule).
- if global_init callback is present, it must succeed.

If any of the steps fail, scheduler entry is cleared in global
'schedulers' array.

However, in the current implementation, if verification fails during
the first step, the scheduler entry is cleared but verification
sequence is not interrupted. This lead to NULL pointer dereference
when subsequent required callbacks verified, and possible during
the second step.

The patch fixes the crashes by adding check inside sched_test_func
macro and skipping the call to a global_init if first step did not pass.

Signed-off-by: Ruslan Ruslichenko <Ruslan_Ruslichenko@epam.com>
---
 xen/common/sched/core.c | 5 ++++-
 1 file changed, 4 insertions(+), 1 deletion(-)

diff --git a/xen/common/sched/core.c b/xen/common/sched/core.c
index a57d5dd929..4270c89491 100644
--- a/xen/common/sched/core.c
+++ b/xen/common/sched/core.c
@@ -3017,7 +3017,7 @@ void __init scheduler_init(void)
     for ( i = 0; i < NUM_SCHEDULERS; i++)
     {
 #define sched_test_func(f)                               \
-        if ( !schedulers[i]->f )                         \
+        if ( schedulers[i] && !schedulers[i]->f )        \
         {                                                \
             printk("scheduler %s misses .%s, dropped\n", \
                    schedulers[i]->opt_name, #f);         \
@@ -3034,6 +3034,9 @@ void __init scheduler_init(void)
 
 #undef sched_test_func
 
+        if ( !schedulers[i] )
+            continue;
+
         if ( schedulers[i]->global_init && schedulers[i]->global_init() < 0 )
         {
             printk("scheduler %s failed initialization, dropped\n",
-- 
2.43.0



From xen-devel-bounces@lists.xenproject.org Fri Apr 10 17:36:39 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Fri, 10 Apr 2026 17:36:39 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1279641.1563967 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wBFmO-0002dG-AJ; Fri, 10 Apr 2026 17:36:28 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1279641.1563967; Fri, 10 Apr 2026 17: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 1wBFmO-0002d9-6w; Fri, 10 Apr 2026 17:36:28 +0000
Received: by outflank-mailman (input) for mailman id 1279641;
 Fri, 10 Apr 2026 17:36:27 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <xakep.amatop@gmail.com>) id 1wBFmN-0002d3-70
 for xen-devel@lists.xenproject.org; Fri, 10 Apr 2026 17:36:27 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wBFmM-00FFGg-JH
 for xen-devel@lists.xenproject.org; Fri, 10 Apr 2026 19:36:26 +0200
Received: from [10.42.69.3] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <xakep.amatop@gmail.com>)
 id 69d93503-bab6-0a2a0a5309dd-0a2a45039306-24
 for <xen-devel@lists.xenproject.org>; Fri, 10 Apr 2026 19:36:26 +0200
Received: from [209.85.208.43] (helo=mail-ed1-f43.google.com)
 by tlsNG-33051d.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.0)
 (envelope-from <xakep.amatop@gmail.com>)
 id 69d9351a-02b3-0a2a45030019-d155d02ba5af-3
 for <xen-devel@lists.xenproject.org>; Fri, 10 Apr 2026 19:36:26 +0200
Received: by mail-ed1-f43.google.com with SMTP id
 4fb4d7f45d1cf-66d65646c65so11742a12.1
 for <xen-devel@lists.xenproject.org>; Fri, 10 Apr 2026 10:36:26 -0700 (PDT)
Received: from EPUAKYIW02F7.. ([45.12.25.238])
 by smtp.gmail.com with ESMTPSA id
 4fb4d7f45d1cf-6708ccd48d0sm519318a12.28.2026.04.10.10.36.23
 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
 Fri, 10 Apr 2026 10:36:24 -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=20251104 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=20251104; t=1775842586; x=1776447386; 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;
        bh=T8RgKnZUaHYG07CM+muNZWfpQmLhMpF3N7LZtrx/ros=;
        b=XtA5WWzqA0SJrc64RubbQ8qbUcdZWWYOB26vPGR4dg4YL7NKJO/INfOX1hjXmFxMrt
         7FjNqXgYH3InTvwVXEfzrlZ5MCnSlWbz4lf9/URwBlWBAG2fl6oK8vxlrWLefUTKDonm
         7MfRAYvCwHoCalO4gOIv7T62Eeq8uyiDK668HkkIx+tz6RsAJ3R52IB28wmtr7JpHoKq
         BrInBat/pGR7Sdl+41f+oURM9jpBplhxxXHn9xqV14suH45L07IrhD6Stc7bZEOc6rvg
         FO8aKfB2jnbtigJ/l8JY3fVulVjcDIAfHuFdAiNYhnWbP4DsyqOc2kEBUKL+is+OOp00
         t6Iw==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20251104; t=1775842586; x=1776447386;
        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;
        bh=T8RgKnZUaHYG07CM+muNZWfpQmLhMpF3N7LZtrx/ros=;
        b=YRERlZa1AjCcRoHabKpe2yM5yEC/OtZX7XU4MZlmecb6HaGE+kFbra4u5gB2TS6XRy
         jippfgxzmR8tkSpfbIgSQL8zCkZKsw7I+a4DRzc50SZCg/ZHfe6S/NexQ0KxFXy5o1B7
         qZ6MYi0K/WsUjt4Ev5WJ9nCVp+MfcetiUNppfJQGOn1SdsmivATOaXcMbsexWyJCfT1U
         k8tGuVtT6i2B/ZeFGK+pEjhqzA2SvTZXnR4nk49jhFRtTWQq58a20I79KA3agQ20vX/F
         fmbDQ5+Of2YCkKl2ohcvcCL3EDLHKW0xFGKuzVxKK1CRU8iykfkB0C1Aa/MJ25Jk/1f+
         Mgbw==
X-Gm-Message-State: AOJu0YziSbMyojdZJTvM678UPwJBkGTLtTJpJIar3vJrOXZMkMwicfQX
	7AgaNHgY2ElcEfAbWr/sNER+MIS1wMe/MNv0lE7A9Odq7iE8xBeU8HMEeCiWFiO1
X-Gm-Gg: AeBDietVsOMnUyLVhlztxtxUtMoksGpHAwmORLQjFS4Nl3Vdb+xx3miasqgUQN/z/ci
	i9LG8oZYGVgazuJafPKZ3sMWvOUeRMVTJYZOWAi3ZpAhdMx+2lEdhVwrFg1LXR5vODdJpKkmuIj
	4VjUl8xfCM5CNR5R9WAl5Jtg7g5bMr5NDVdpDDLbS24bhdb+83RdZDha20El8Ijud95vslLMx9v
	YIqdtcz9ozrZ6uP3QqPB8dwhYW43fE6xzHEY2S8AJBLs4KCweCOF0TfcK1w+dvWZiZkFzpxEaJM
	/tsji5y3ZGAkq3jnw4AIx1ip4+/rAEOPlCbSKNfNUcgEESwOYwe0opT9r8/T6G2k5mfH7ru3ok0
	5BBz3GKS+rUFm8LeW2O4tj+RdUZgdPDaIii3MpsBabR+jggZChcFNKircQTbUSauqwiYO1s6ADt
	MYiLXtPv2Sr/85bMLkfJh5gNE8NPHe4TfyW10xMw==
X-Received: by 2002:a05:6402:21d2:b0:66e:3f9b:4e03 with SMTP id 4fb4d7f45d1cf-67076f7ceeamr1568951a12.12.1775842585411;
        Fri, 10 Apr 2026 10:36:25 -0700 (PDT)
From: Mykola Kvach <xakep.amatop@gmail.com>
To: xen-devel@lists.xenproject.org
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>,
	Mykyta Poturai <mykyta_poturai@epam.com>
Subject: [PATCH v2] arm/gicv3: Decode cacheability fields before comparing
Date: Fri, 10 Apr 2026 20:34:11 +0300
Message-ID: <7c20230fcd388ebe398ce19a21a1cd3c2c73d5fa.1775839987.git.mykola_kvach@epam.com>
X-Mailer: git-send-email 2.43.0
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit
X-purgate-ID: tlsNG-33051d/1775842586-4251AC9A-C0E6E45F/0/0
X-purgate-type: clean
X-purgate-size: 2946

From: Mykola Kvach <mykola_kvach@epam.com>

GITS_BASER_INNER_CACHEABILITY_MASK and
GICR_PROPBASER_INNER_CACHEABILITY_MASK are shifted masks. Comparing the
masked but unshifted values against GIC_BASER_CACHE_nC, which is an
unshifted enum value, leads to incorrect detection of non-cacheable
GITS_CBASER command queue, GITS_BASER tables, and GICR_PROPBASER
mappings.

Use MASK_EXTR() to decode these cacheability fields before comparing
against GIC_BASER_CACHE_nC, so the backing memory is flushed when
required.

Fixes: 8ed8d21373be ("ARM: GICv3 ITS: map ITS command buffer")
Fixes: 05238012b86d ("ARM: GICv3 ITS: allocate device and collection table")
Fixes: c9b939863c89 ("ARM: GICv3: allocate LPI pending and property table")
Signed-off-by: Mykyta Poturai <mykyta_poturai@epam.com>
Signed-off-by: Mykola Kvach <mykola_kvach@epam.com>
---
Changes in v2:
- use MASK_EXTR() instead of open-coding the BASER field shift
- fix the analogous PROPBASER cacheability comparison in
  gicv3_lpi_set_proptable()
- fix the CBASER command queue cacheability check as well
---
 xen/arch/arm/gic-v3-its.c | 6 ++++--
 xen/arch/arm/gic-v3-lpi.c | 3 ++-
 2 files changed, 6 insertions(+), 3 deletions(-)

diff --git a/xen/arch/arm/gic-v3-its.c b/xen/arch/arm/gic-v3-its.c
index 9ba068c46f..e87465d2ff 100644
--- a/xen/arch/arm/gic-v3-its.c
+++ b/xen/arch/arm/gic-v3-its.c
@@ -424,7 +424,8 @@ static void *its_map_cbaser(struct host_its *its)
      * If the command queue memory is mapped as uncached, we need to flush
      * it on every access.
      */
-    if ( !(reg & GITS_BASER_INNER_CACHEABILITY_MASK) )
+    if ( MASK_EXTR(reg, GITS_BASER_INNER_CACHEABILITY_MASK) <=
+         GIC_BASER_CACHE_nC )
     {
         its->flags |= HOST_ITS_FLUSH_CMD_QUEUE;
         printk(XENLOG_WARNING "using non-cacheable ITS command queue\n");
@@ -496,7 +497,8 @@ retry:
         }
         attr = regc & BASER_ATTR_MASK;
     }
-    if ( (regc & GITS_BASER_INNER_CACHEABILITY_MASK) <= GIC_BASER_CACHE_nC )
+    if ( MASK_EXTR(regc, GITS_BASER_INNER_CACHEABILITY_MASK) <=
+         GIC_BASER_CACHE_nC )
         clean_and_invalidate_dcache_va_range(buffer, table_size);
 
     /* If the host accepted our page size, we are done. */
diff --git a/xen/arch/arm/gic-v3-lpi.c b/xen/arch/arm/gic-v3-lpi.c
index de5052e5cf..9ee338edc2 100644
--- a/xen/arch/arm/gic-v3-lpi.c
+++ b/xen/arch/arm/gic-v3-lpi.c
@@ -351,7 +351,8 @@ static int gicv3_lpi_set_proptable(void __iomem * rdist_base)
     }
 
     /* Remember that we have to flush the property table if non-cacheable. */
-    if ( (reg & GICR_PROPBASER_INNER_CACHEABILITY_MASK) <= GIC_BASER_CACHE_nC )
+    if ( MASK_EXTR(reg, GICR_PROPBASER_INNER_CACHEABILITY_MASK) <=
+         GIC_BASER_CACHE_nC )
     {
         lpi_data.flags |= LPI_PROPTABLE_NEEDS_FLUSHING;
         /* Update the redistributors knowledge about the attributes. */
-- 
2.43.0



From xen-devel-bounces@lists.xenproject.org Fri Apr 10 17:41:45 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Fri, 10 Apr 2026 17:41:45 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1279658.1563975 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wBFrR-0004CA-Qz; Fri, 10 Apr 2026 17:41:41 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1279658.1563975; Fri, 10 Apr 2026 17: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 1wBFrR-0004C3-OL; Fri, 10 Apr 2026 17:41:41 +0000
Received: by outflank-mailman (input) for mailman id 1279658;
 Fri, 10 Apr 2026 17:41: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 1wBFrQ-0004Bx-HR
 for xen-devel@lists.xenproject.org; Fri, 10 Apr 2026 17:41:40 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wBFrP-00FFs4-QP
 for xen-devel@lists.xenproject.org; Fri, 10 Apr 2026 19:41:39 +0200
Received: from [10.42.69.8] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <andrew.cooper@citrix.com>)
 id 69d9363d-e002-0a2a0a5209dd-0a2a45088b7e-10
 for <xen-devel@lists.xenproject.org>; Fri, 10 Apr 2026 19:41:39 +0200
Received: from [40.107.201.68]
 (helo=CH4PR04CU002.outbound.protection.outlook.com)
 by tlsNG-c1860d.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.0)
 (envelope-from <andrew.cooper@citrix.com>)
 id 69d93652-fab6-0a2a45080019-286bc944da18-3
 for <xen-devel@lists.xenproject.org>; Fri, 10 Apr 2026 19:41:39 +0200
Received: from CH8PR03MB8275.namprd03.prod.outlook.com (2603:10b6:610:2b9::7)
 by CO6PR03MB6210.namprd03.prod.outlook.com (2603:10b6:5:356::14) with
 Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9769.44; Fri, 10 Apr
 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%6]) with mapi id 15.20.9769.018; Fri, 10 Apr 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=GEcJ4gdU2/yO88as9sBHBHih1jvebj+/p4TI2I9DCxQ7itN2weN2xpcoMVyvGhlX97Z8xMSxbwmIq+PWNUmWTGmy07kgGoD1kYRBJpLeOZFFqljnbFp1a+88RH6iVc3cOTYZq5eWD5F5ntcAwj60K+7LFCxko+VTPp59s4er9tR+DmDltWXlLdLlmhdN2YxHjbo1C/mdQjBOnlp0Hz2BWO6IvqGpOapAP72lX5LLc0uIXDmvgGkB5dkZ7R0RLQZw6pjsbRVt0zd5UcUXHem2p7QbkE/H7MwoPp6VkXD3OGn/hTSCmcLVzFp57TQBJkACncwjsJGIg6rvKYB1J9jjhg==
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com;
 s=arcselector10001;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1;
 bh=gfu7roJvbPHD/ETMldfDilvOFITe9DSQltzRwvMt2Xg=;
 b=SP23ZSkyvKayCsnIWq7cI+w3YYADynUKMP7qKk3iceeWvflNlN2mojVA4JZlXZc/FkShFGjADBjHUm8BJLiTfTdEIGkHWk+hdpDNClXpyoG18bUlW6/43FtNBCM+tf9Ea8yVJqbmnAeMLYAypRRFEWPdjsvo676JSFng9WSdqQZJw+wzfnh5kFVjgJxoCAV4vB+koKWXwexTdeLbhG8c9rVmMKiKOyWLDXFWwaa/mrT8havDHcZRA0vXZtSjPRam+SRr1psZXABuFP5k0lcv6yXsVhWqhu1ISJ+2uHf/x3HYD1l5+ir+rF0s4bHJkfNo/JJXw6crnhJ3ug00ZozriQ==
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=gfu7roJvbPHD/ETMldfDilvOFITe9DSQltzRwvMt2Xg=;
 b=ahPYl8TnkiqI5RpxomlkBvLG6+HszMAjMZDaIeHNpzVeRc0tXwfX6VKEyxemkY5AuHrhHpjJV5Y+HSg/rnciaSVHgJQMbBUe+31vmz4mFcYG8fSgyWm8Ps1kagj1xmgPnF5MvYCCsL4fk4FvXwhQ+eRRYluCi6kdyJ0kwad/gQY=
Authentication-Results: dkim=none (message not signed)
 header.d=none;dmarc=none action=none header.from=citrix.com;
Message-ID: <9eb6c6d9-8e1c-40f6-a44b-579df213bda0@citrix.com>
Date: Fri, 10 Apr 2026 18:41:27 +0100
User-Agent: Mozilla Thunderbird
Cc: Andrew Cooper <andrew.cooper3@citrix.com>,
 Romain Caritey <Romain.Caritey@microchip.com>,
 Alistair Francis <alistair.francis@wdc.com>,
 Connor Davis <connojdavis@gmail.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>
Subject: Re: [PATCH] xen/riscv: allow Xen to use SSTC while hiding it from
 guests
To: Oleksii Kurochko <oleksii.kurochko@gmail.com>,
 xen-devel@lists.xenproject.org
References: <eba232ac5a338332ddedc2cb084e0c04ee8744c2.1775835741.git.oleksii.kurochko@gmail.com>
Content-Language: en-GB
From: Andrew Cooper <andrew.cooper3@citrix.com>
In-Reply-To: <eba232ac5a338332ddedc2cb084e0c04ee8744c2.1775835741.git.oleksii.kurochko@gmail.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_|CO6PR03MB6210:EE_
X-MS-Office365-Filtering-Correlation-Id: 5a626fb1-4c7f-4056-2848-08de972866ea
X-MS-Exchange-SenderADCheck: 1
X-MS-Exchange-AntiSpam-Relay: 0
X-Microsoft-Antispam:
	BCL:0;ARA:13230040|366016|1800799024|376014|7416014|22082099003|56012099003|18002099003;
X-Microsoft-Antispam-Message-Info:
	lcpub/7EqG40uxiSMAjegDg/b+D7VlJFvtGMtVGF/x0LnMhi4Vosigx1iOTz6ZYASeoycNhkd/BHpcNc0BDnni6fCfLVGzf7aX62aCMsYyyjOhL8kuT3lxUlNG2C4aBj7EYcki415AykIzxeG0Rv2AtLjMpQ8aDiuSKQBdiAj6oDXLu6ZO8WjFBjIl3grEa8LCKrzKoPBpsP/jm7cK0toDRQe164O2RxJw/w7XEOo6ovzDPzEGAJ/pPcSsgtVM4wJNl2VEH2VcugyP9JekTJaVL/NHlC/Fv5HlnntYuJcUAsDcYm+vbYQVAYS/zczBYHvOx6VHxtB5hxdTCufGQOMdXvpdgzTPnCVayHbTl7vPnAdBgusycEFWNN+UKvmTlaeDhERlMQWV6rBuOJzwVEAUUOP8pqWKZ3qM1mSQ5q8DOL11tgzHEUGWSlCSQ9voBjuexIPTYhp2rAIIDvrEydmdOYZRHAA3cfukABi35au5Uw17eKx2AUs2FX7CKZIB9OGAh5IZlEMrSbPSsLW4IRsyj9+TEAkvwMhOGsamiCXYpAlyYCI0/+vLYOCJBrCiq/HruRhhpm1eCRC7vtbWhwCGoENfI0+jeK8/60Tv2/ziUL1jlSo6gbUESd0ByKyUTxlFijXsVgamucCms6YHDm6uv3wHltVlTxOyTv2D5yPJeIoamhq6hFDgwRwjJ99U0mliBK+EFjeDBu6FYNkHmHCr6ewcxqUGX27of09jDEftw=
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)(7416014)(22082099003)(56012099003)(18002099003);DIR:OUT;SFP:1101;
X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1
X-MS-Exchange-AntiSpam-MessageData-0:
	=?utf-8?B?VWZrYXRnNDlKT1FrT2ZTeHgzV3lmRHVJeXJtOEtuU0JrL3NhZzMvaURqMFlK?=
 =?utf-8?B?R0tMSlNGZ2ZJbDdCS21sOFdhK1ltTUM1UUo5TXJ3REZtNHRnbWppalIxSFVO?=
 =?utf-8?B?UjEwV3hldFhDVW9qZXB1eUlJUzFZbnZnZW9kTmJvck52Qm5WVU9pR2g4L2Z3?=
 =?utf-8?B?ZmpNd29VUG43NnFVQVZ4M1U0bEE1MEdRT0V4REhWdmZvdHBVbkRnNDE3UUlv?=
 =?utf-8?B?NngrQVpJVHh1dXJaVFNad3BqbldBVmFhTkdsWTZ1K3c2M3VFejdTb3JLVW9z?=
 =?utf-8?B?ZE16Y1daYlp6Z2NBNUduZFRpeHJ0cGlpYVU2YXY3QW9qR3JlUDVVWG9DZWo3?=
 =?utf-8?B?cG43WUpESjcxdVJ5U0gybWdoUW5JUmhWemxDTC9Ga0dGdXQvcjA2TGJyTTUz?=
 =?utf-8?B?UFRyb3RkYzR5TlNRbjhiZUdFWjBEa0grUFZBYkVCN0k4MlNiSEpFWXUzN1Ax?=
 =?utf-8?B?T1A0Mm1xaVZvOURoUHVqY2dFclcvWGxzTVBFN0V5VjhTaldsNmdHRHRJb2hy?=
 =?utf-8?B?YWMyOU5mK28rbm5RUmRodkZGL0pLRmY5UTgyNmJZSFVrb1cxT2NDTFBBdmJj?=
 =?utf-8?B?MGZaTndLTXVvK01DYlVHUXRkYWVXYmVkQjIrN3hRbWV3MmdFemJscndWU2NI?=
 =?utf-8?B?SW9jNkdjcUY2Q1lIcWhWWDFDL1ljbUtQb3ZHLytzSFllOTloQ3BTS2NyaThm?=
 =?utf-8?B?YjE5MzNTT1BzYVp6SUYwcmNPYTRjWjVaeDkyb3hOM2MyZ3ZJUXpUQ1B1Uk1n?=
 =?utf-8?B?M3A5R1RkMU40NnRvSUZhbVNENzJDdlNQRjFocGxTYXVJQ0V1QWxXbEN5RnE5?=
 =?utf-8?B?bVNCQTRHd3hGekNVZ1ZrYm9TcWFSUFpkZENieGlQZXFnalA2SEhEWGlmRCtR?=
 =?utf-8?B?SXJYK2N1d2sxMXh5M3JRSS9BWmx1RDFTRUVxaHNnWGwwcnM3Y0dpM21EMTQ2?=
 =?utf-8?B?UnlzelczVGVtckI0bFRvbzNPbUVzeGliY2R2YWlaN2ErNytUdnR0VmVFZEF3?=
 =?utf-8?B?d085QVIrQUwvYk9RcVRza3JSOGtZOG1ya3hxT3gybHV6WWZKN3NNdFVUNHYx?=
 =?utf-8?B?Ulh0UjFpSUFwOWZUcjRXeUd5RWdSM0dlTndDVUtQdU5weHFjYUxBenhOQnJr?=
 =?utf-8?B?WHd0b1NEMVo2b0ljemFScWJhczRQRG9Sc3R1cndaK0poN1lPb1BrbmxFSW1u?=
 =?utf-8?B?ZS9zYkpPS1RPOG5teDUxbTB3U0NNNFV0a2NQZmpFajVUNFBUM0ExdWJnS0Q4?=
 =?utf-8?B?MFpzaFlxV0tCUmlNbEwzVGg4VFdKem5PRkVoWTdDV3pIb1NleXFrOFh0Z3NI?=
 =?utf-8?B?OW1KU1dzUGRubm9tbVNFaXF2d3pGUlRkNFZlMy9HdFlYZVo5SHlYc04rb2Ux?=
 =?utf-8?B?UCswM09mUjQzcnc4T1NhNzBCV2xrMW5wK0NqREQ0RmVyMks1bE1uSjRWeEdz?=
 =?utf-8?B?M0ltSmt6VkdXdUtMeUtlKzdoU2ZuMm13SnBKUVQzSWNXYkUvWHJDc2JsdTFV?=
 =?utf-8?B?bGRkd3c5ZWpxelVNYmwxUTZTOFA1K0RWRkhLRUtBMlFXYlFmbTZ2bGNYbWFh?=
 =?utf-8?B?Q254Y25kN3FnYTFtQU84QWxWazN4M0dhVGtSMEhFU1E5YXp3NXJNRmcxM0ts?=
 =?utf-8?B?clI0RUF1UlFWUEtMamtTNzJCNGNaU3Ntc0hKMHpxZnFGYlY0SHBTTGtmWDRP?=
 =?utf-8?B?RkhkVnpwczlCYjRZMUlGR0Zma3AzckJYZUcxQU9hcys3eWEyY3pRcW9PMkFJ?=
 =?utf-8?B?Z21iZGE1RlYxK2VrZ2Q4YXVvcTVESkVPQnIxdWo2eEVFUWxXb0Z4ZUdUaDla?=
 =?utf-8?B?ZE9FYVlrVS9ZanFWUW45NDFucVFabXBac1Q2Zi8vMFhOeTBKamF1ZW1YSGx4?=
 =?utf-8?B?Z0svWGJCK2wyWXFVVlNEeXJmN1RpY0xEek1CRE9SZURGaS8vSFJKamNyRmNo?=
 =?utf-8?B?TGNzbzIxZU13YTFSN3pMN3JMRG03aW55TmVscEI4QlAwZERsSkJocFpYOWFI?=
 =?utf-8?B?RUlBRHRZRHhXdmV4UTZ5djYrci84WEZqUUR4dlAxWmdKY2s0Wmt4dVdvbFdO?=
 =?utf-8?B?YkdQeTB3Z08wanllU0ZWTUJwTk8vbnErSjFqRGJiZTZHNVB2aUNSd1podW94?=
 =?utf-8?B?RSs5Y2NqWEJrUEJoSlYwUjhobG9kVjY2SVUzZXM4enhhWi9iNFRsUkFodi9o?=
 =?utf-8?B?ZDlXZmRrUEZyVmRYTk1ScE9nLyttd2VEZENOVElreHp6bmp1TkE3V3NNTzE3?=
 =?utf-8?B?LzYrQlUrclRtTVA4dXJkamhINHdXZ1ZJSnFTdk9iaGEvRjh4N2tqbjlSRmRD?=
 =?utf-8?B?QVcrc3J6UmhxbEg1NjN3NDViT0hUSnNDWm5TaGNPOWJXMDNqMTU5dUVIZC9J?=
 =?utf-8?Q?IL21hJwmbQ5WlZqc=3D?=
X-OriginatorOrg: citrix.com
X-MS-Exchange-CrossTenant-Network-Message-Id: 5a626fb1-4c7f-4056-2848-08de972866ea
X-MS-Exchange-CrossTenant-AuthSource: CH8PR03MB8275.namprd03.prod.outlook.com
X-MS-Exchange-CrossTenant-AuthAs: Internal
X-MS-Exchange-CrossTenant-OriginalArrivalTime: 10 Apr 2026 17:41:31.6237
 (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: NIKfWPDIXObG3P7x8GzYDAGyRDDqEOf3UJ7Y/RF3BCmVswdKFLydSdDb3H3TsbBLeuwuZmFWpXgU7gF6RSwAtKhXggNDV1YxBl8DLjPUe5k=
X-MS-Exchange-Transport-CrossTenantHeadersStamped: CO6PR03MB6210
X-purgate-ID: tlsNG-c1860d/1775842899-F4B5C497-48329AAF/0/0
X-purgate-type: clean
X-purgate-size: 1706

On 10/04/2026 4:45 pm, Oleksii Kurochko wrote:
> diff --git a/xen/arch/riscv/time.c b/xen/arch/riscv/time.c
> index 7efa76fdbcb1..80f0e9ddae6a 100644
> --- a/xen/arch/riscv/time.c
> +++ b/xen/arch/riscv/time.c
> @@ -91,4 +90,23 @@ void __init preinit_xen_time(void)
>          panic("%s: ACPI isn't supported\n", __func__);
>  
>      boot_clock_cycles = get_cycles();
> +
> +    /* set_xen_timer must have been set by sbi_init() already */
> +    ASSERT(set_xen_timer);
> +
> +    if ( riscv_isa_extension_available(NULL, RISCV_ISA_EXT_sstc) )
> +    {
> +        set_xen_timer = sstc_set_xen_timer;
> +
> +        /*
> +         * A VS-timer interrupt becomes pending whenever the value of
> +         * (time + htimedelta) is greater than or equal to vstimecmp CSR.
> +         * Thereby to avoid spurious VS-timer irqs set vstimecmp CSR to
> +         * ULONG_MAX.
> +         */
> +        csr_write(CSR_VSTIMECMP, ULONG_MAX);
> +#ifdef CONFIG_RISCV_32
> +        csr_write(CSR_VSTIMECMPH, ULONG_MAX);
> +#endif

You've got this pattern twice in this patch alone, and these aren't the
only CSRs which are formed of pairs to get a 64bit value in 32bit mode.

Sadly, the numbering isn't consistent for the high constant, but we can
let the compiler do most of the hard work for us.

#ifdef CONFIG_RISCV_32
# define __csr_write32h(csr, val) csr_write(csr ## H, (val) >> 32)
#else
# define __csr_write32h(csr, val) (void)(csr, val)
#endif

#define csr_write64(csr, val) ({
    uint64_t _v = (val);

    csr_write(csr, _v);
    __csr_write32h(csr, _v);
})

will get you a csr_write64(CSR_FOO, bar) which does the right thing on
32bit mode.

~Andrew


From xen-devel-bounces@lists.xenproject.org Fri Apr 10 20:18:21 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Fri, 10 Apr 2026 20:18:21 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1279759.1563984 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wBIIo-00053q-HY; Fri, 10 Apr 2026 20:18:06 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1279759.1563984; Fri, 10 Apr 2026 20:18: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 1wBIIo-00053j-Eq; Fri, 10 Apr 2026 20:18:06 +0000
Received: by outflank-mailman (input) for mailman id 1279759;
 Fri, 10 Apr 2026 20:18:05 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <marmarek@invisiblethingslab.com>) id 1wBIIn-00053d-1k
 for xen-devel@lists.xenproject.org; Fri, 10 Apr 2026 20:18:05 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wBIIm-00FXQG-E0
 for xen-devel@lists.xenproject.org; Fri, 10 Apr 2026 22:18:04 +0200
Received: from [10.42.69.3] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <marmarek@invisiblethingslab.com>)
 id 69d95aad-bab6-0a2a0a5309dd-0a2a45038a4a-44
 for <xen-devel@lists.xenproject.org>; Fri, 10 Apr 2026 22:18:04 +0200
Received: from [103.168.172.156] (helo=fhigh-a5-smtp.messagingengine.com)
 by tlsNG-33051d.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.0)
 (envelope-from <marmarek@invisiblethingslab.com>)
 id 69d95afa-02b3-0a2a45030019-67a8ac9cc257-3
 for <xen-devel@lists.xenproject.org>; Fri, 10 Apr 2026 22:18:03 +0200
Received: from phl-compute-05.internal (phl-compute-05.internal [10.202.2.45])
 by mailfhigh.phl.internal (Postfix) with ESMTP id 33F521400161;
 Fri, 10 Apr 2026 16:18:02 -0400 (EDT)
Received: from phl-frontend-03 ([10.202.2.162])
 by phl-compute-05.internal (MEProxy); Fri, 10 Apr 2026 16:18:02 -0400
Received: by mail.messagingengine.com (Postfix) with ESMTPA; Fri,
 10 Apr 2026 16:18:00 -0400 (EDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@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=1775852282;
	 x=1775938682; bh=mGDEtK3MXDPdp3zrvnUbDrYfoAW9k0bQWVHW1FuAp9o=; b=
	VtKIWuaRYoDpmS392cem5g0dVfqdJqXPFBXmHENQiImE9TJ8tCFYmq8hmeyA4n4O
	eIRxGgRfpGa+0Ioc90B3LbiPL2iFwbki5ITJ8WHYeHC8SM/VffSnD2TjUFL6hAL0
	GxM3yw9G0hzlQp7P40KlgVxGjDFc5XZpTpRtMSGwOMp27nWz92BbcL86/HW7mnca
	5kAVo/RkhUc5zSxwEPTDA31/VCA3rZsRL/EDK8+LcEWhibAACNHP1T4quw7eKV0y
	n3vkqOBnxinJGfNApnK9szZlnk4yyheLg3jivGnO18TgkDHikPNMgn1fynJMMu/m
	AGuhzoK9eoMal8i0MC0L8w==
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=
	1775852282; x=1775938682; bh=mGDEtK3MXDPdp3zrvnUbDrYfoAW9k0bQWVH
	W1FuAp9o=; b=qhaDvUsCVRTvt11d0cL0/3NEdki6RB3nCEmyS0hQ4XAMGrm7M/6
	J0jk+m1NoqsNKI0/laeZBb3bZlcxFYQuWJdjhlhQn/xNndnstHSqvMxjwIoMArwF
	XTjZR1VR6rsXFNaiYzHOX/FTpkhSfGjsF9Z2Qq/TA1e6FtLHvWtiZNGFyRoF/2+K
	Ud1MOx0F7K8AOz1p1IEyh1onySWqp7DnVuPuv51sTZ42cROe1556rmFd4d9BOnVo
	7aqQs7XEl4JpTCrfC0ViQx3mgH0irzs8t4imDbRLB0DVMlx8oVcsWiGS1S5S2K3I
	YYFqO4fmYH3O41F/ToZ3WBpPRqVtOjM14Ew==
X-ME-Sender: <xms:-VrZaZQH5Z8cuuwh4rsQqeXtUm4vJZjTH7vTUbP92RCMQmAkayFFig>
    <xme:-VrZaZoY8EhIgCVCrW9AKD5aSaKwSGZ-6ULRh8hv-UE0RZYgCjLlSIcDvtFBMwnhp
    9bUa5hGZl9B39NjtckefdOFVoMCmORAMKa0x_1gNCod3W05>
X-ME-Received: <xmr:-VrZaXJoX6FSkDzsifeD5C7AYEfFNzNG7tRg6Hod1y9N7MEqfOMclGsmsJi1os9fVOdeaDb8wZuF-7F5ssDnbGXyYXHvN9AwIQM>
X-ME-Proxy-Cause: gggruggvucftvghtrhhoucdtuddrgeefhedrtddtgdeftdefhecutefuodetggdotefrod
    ftvfcurfhrohhfihhlvgemucfhrghsthforghilhdpuffrtefokffrpgfnqfghnecuuegr
    ihhlohhuthemuceftddtnecusecvtfgvtghiphhivghnthhsucdlqddutddtmdenucfjug
    hrpeffhffvvefukfhfgggtuggjsehgtderredttdejnecuhfhrohhmpeforghrvghkucfo
    rghrtgiihihkohifshhkihdqifpkrhgvtghkihcuoehmrghrmhgrrhgvkhesihhnvhhish
    hisghlvghthhhinhhgshhlrggsrdgtohhmqeenucggtffrrghtthgvrhhnpeehhfevhfek
    tdeujedvgfehvdeffeeikeffjeehffehkeefjeeiiedtkedvgfelhfenucffohhmrghinh
    epkhgvrhhnvghlrdhorhhgpdhgihhtlhgrsgdrtghomhdpphhougdrihhnpdhvrghtvghs
    rdhtvggthhenucevlhhushhtvghrufhiiigvpedtnecurfgrrhgrmhepmhgrihhlfhhroh
    hmpehmrghrmhgrrhgvkhesihhnvhhishhisghlvghthhhinhhgshhlrggsrdgtohhmpdhn
    sggprhgtphhtthhopeehpdhmohguvgepshhmthhpohhuthdprhgtphhtthhopehthhhivg
    hrrhihrdgvshgtrghnuggvsehvrghtvghsrdhtvggthhdprhgtphhtthhopeigvghnqdgu
    vghvvghlsehlihhsthhsrdigvghnphhrohhjvggtthdrohhrghdprhgtphhtthhopegrnh
    hthhhonhihrdhpvghrrghrugesvhgrthgvshdrthgvtghhpdhrtghpthhtohepjhhgrhho
    shhssehsuhhsvgdrtghomhdprhgtphhtthhopegsvghrrhgrnhhgvgesrhgvughhrghtrd
    gtohhm
X-ME-Proxy: <xmx:-VrZacoOLxgtOI3y-MPCxk9zyYBp4eI-4ejZ1qtciYGxZiLXZS5ZqA>
    <xmx:-VrZafyEoJaKPyzizTiR4qJ5C4NIGsg8uwS5VX7w2OaU_A6DSQ-8Vw>
    <xmx:-VrZaQNhH34DuO3a_sNGM_oc4YMyGaveptKEPQHQkhU-2egmCNp5Ig>
    <xmx:-VrZaU5IgkNeRfjSRtO3KmS3SK9DUwaSUhkxJKvdAHPAUby0Davc7A>
    <xmx:-lrZaYvLJlX0kZC2gtNYq--TcvzPw79ktFDA4mn0wv9P0LTK3l_bAeod>
Feedback-ID: i1568416f:Fastmail
Date: Fri, 10 Apr 2026 22:17:58 +0200
From: Marek =?utf-8?Q?Marczykowski-G=C3=B3recki?= <marmarek@invisiblethingslab.com>
To: Thierry Escande <thierry.escande@vates.tech>
Cc: xen-devel@lists.xenproject.org,
	Anthony PERARD <anthony.perard@vates.tech>,
	Juergen Gross <jgross@suse.com>,
	Daniel P =?utf-8?B?LiBCZXJyYW5nw6k=?= <berrange@redhat.com>
Subject: Re: [RFC PATCH v3 0/3] xl: Allow PCI devices to be passthrough'd via
 Qemu command line
Message-ID: <adla9tO0YedR3_Yx@mail-itl>
References: <20260410150333.1533568-1-thierry.escande@vates.tech>
MIME-Version: 1.0
Content-Type: multipart/signed; micalg=pgp-sha256;
	protocol="application/pgp-signature"; boundary="bR36BRALjcUs3Tls"
Content-Disposition: inline
In-Reply-To: <20260410150333.1533568-1-thierry.escande@vates.tech>
X-purgate-ID: tlsNG-33051d/1775852284-C8530C9A-8A5E50DB/0/0
X-purgate-type: clean
X-purgate-size: 4624


--bR36BRALjcUs3Tls
Content-Type: text/plain; protected-headers=v1; charset=utf-8
Content-Disposition: inline
Content-Transfer-Encoding: quoted-printable
Date: Fri, 10 Apr 2026 22:17:58 +0200
From: Marek =?utf-8?Q?Marczykowski-G=C3=B3recki?= <marmarek@invisiblethingslab.com>
To: Thierry Escande <thierry.escande@vates.tech>
Cc: xen-devel@lists.xenproject.org,
	Anthony PERARD <anthony.perard@vates.tech>,
	Juergen Gross <jgross@suse.com>,
	Daniel P =?utf-8?B?LiBCZXJyYW5nw6k=?= <berrange@redhat.com>
Subject: Re: [RFC PATCH v3 0/3] xl: Allow PCI devices to be passthrough'd via
 Qemu command line

On Fri, Apr 10, 2026 at 03:03:45PM +0000, Thierry Escande wrote:
> This series adds support for a new 'hotplug' option for PCI devices to be
> passthrough'd to guests.
>=20
> The current mechanism for device passthrough uses QMP device_add command
> to hot-plug PCI devices to the guest Qemu instance. This is an issue for
> guests running on Q35 chipset (preliminary support posted at [1]) since t=
he
> Q35 PCI root bus does not support hotplug. Devices could be hotplugged to
> a secondary PCI bus but Xen only support 1 PCI bus for now.
>=20
> The 'hotplug' option allows to control how devices are attached to the
> guest, either by using the legacy QMP mechanism (this is the default) or =
by
> passing it directly to the Qemu command line using xen-pci-passthrough
> device.
>=20
> Example usage in cfg file:
>  pci =3D [ "00:03.0,seize=3D1,hotplug=3D0" ]
>=20
> Since Qemu -device option accepts parameters in json format, this
> patchset adds a new internal function libxl__device_pci_get_qmp_json() th=
at
> generates the device json object used for both QMP hotplug and command li=
ne
> passing.
>=20
> Also, to handle the assignable PCI device list, the function
> libxl_pci_assignable() is renamed as libxl_device_pci_assignable() and is
> made available from libxl.h for access in libxl_dm.c. 2 other functions a=
re
> also exported internally: libxl__pciback_dev_is_assigned() and
> libxl__device_pci_assignable_add().
>=20
> This has been successfully tested on Xen 4.22-dev and Qemu 10.0 running
> Debian VMs in both Bios and UEFI mode with a passthrough'd nvme disk.
> Disabling the hotplug mechanism might be made mandatory for Q35 machines
> later, once Q35 support is merged upstream.
>=20
> [1] https://lore.kernel.org/xen-devel/20260313163455.790692-1-thierry.esc=
ande@vates.tech/

Much better now:
https://gitlab.com/xen-project/people/marmarek/xen/-/pipelines/2444612680

I get now something like this:
libxl: debug: libxl_dm.c:3044:device_model_launch: Domain 1:  -device
libxl: debug: libxl_dm.c:3044:device_model_launch: Domain 1:  {"driver":"xe=
n-pci-passthrough","id":"pci-pt-03_00.0","hostaddr":"0000:03:00.0"}

So, it works :)

> Changes in v2:
> - Add support for YAJL json parser
>=20
> Changes in v3:
> - Move code block of device command line parameters creation
> - Better handling of pci device assignation
>=20
> Thierry Escande (3):
>   xl: Add pci device hotplug option
>   libxl: Allow PCI device passthrough using -device Qemu command line
>   docs: provide description for pci hotplug option
>=20
>  docs/man/xl-pci-configuration.5.pod | 17 ++++++
>  docs/man/xl.cfg.5.pod.in            |  6 ++
>  tools/include/libxl.h               |  1 +
>  tools/libs/light/libxl_dm.c         | 85 +++++++++++++++++++++++++++++
>  tools/libs/light/libxl_internal.h   |  7 +++
>  tools/libs/light/libxl_pci.c        | 57 +++++++++++++------
>  tools/libs/light/libxl_types.idl    |  1 +
>  tools/libs/util/libxlu_pci.c        |  2 +
>  tools/xl/xl_parse.c                 |  5 ++
>  9 files changed, 163 insertions(+), 18 deletions(-)
>=20
> --=20
> 2.53.0
>=20
>=20
>=20
> --
> Thierry Escande | Vates XCP-ng Developer
>=20
> XCP-ng & Xen Orchestra - Vates solutions
>=20
> web: https://vates.tech
>=20

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

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

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

iQEzBAEBCAAdFiEEhrpukzGPukRmQqkK24/THMrX1ywFAmnZWvYACgkQ24/THMrX
1yzh7gf/Ti5FQbyYKa+M+JuxgasvR8rTUfhVdhxEtcECHwrxU3OFiDJ7PD0CH9Vi
rovXaPYB5spW2vHt8SZKG6ms3isyxVcx/Is1zNwpDyra7V+DW4JS0f4T3ITPrn1G
meMHUeZ2AqsxWzxsn9f4LqUI7RV+jKfeoeHzLKPpsEQ285BTSOI/k6JH8DgSmSVk
ssLfOGhNBVWshzh8IUx5D3sKzQ0q9QUHlKCfkCJAP9DbNAvaYdr+2x1HRd94EIV2
Xy2SsqAmRPQ+VJsTvrCNVlvMJl2nMpX/eF0vF1QbMeDp+LLsM+rHiTM7lIcl2Ebi
zSIJ8alY3JyVRm96R1cBFrfVspnxJQ==
=+lVJ
-----END PGP SIGNATURE-----

--bR36BRALjcUs3Tls--


From xen-devel-bounces@lists.xenproject.org Fri Apr 10 22:06:13 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Fri, 10 Apr 2026 22:06:13 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1279801.1563993 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wBJzE-0001BM-34; Fri, 10 Apr 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 1279801.1563993; Fri, 10 Apr 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 1wBJzE-0001BF-0G; Fri, 10 Apr 2026 22:06:00 +0000
Received: by outflank-mailman (input) for mailman id 1279801;
 Fri, 10 Apr 2026 22:05:59 +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 1wBJzD-0001B9-8P
 for xen-devel@lists.xenproject.org; Fri, 10 Apr 2026 22:05:59 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wBJzC-00GrKY-Ky
 for xen-devel@lists.xenproject.org; Sat, 11 Apr 2026 00:05:58 +0200
Received: from [10.42.69.12] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <sstabellini@kernel.org>)
 id 69d9741e-bab6-0a2a0a5309dd-0a2a450c916c-26
 for <xen-devel@lists.xenproject.org>; Sat, 11 Apr 2026 00:05:58 +0200
Received: from [172.234.252.31] (helo=sea.source.kernel.org)
 by tlsNG-d25034.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.0)
 (envelope-from <sstabellini@kernel.org>)
 id 69d97444-f40c-0a2a450c0019-aceafc1fa48c-3
 for <xen-devel@lists.xenproject.org>; Sat, 11 Apr 2026 00:05:58 +0200
Received: from smtp.kernel.org (transwarp.subspace.kernel.org [100.75.92.58])
 by sea.source.kernel.org (Postfix) with ESMTP id 29194407AA;
 Fri, 10 Apr 2026 22:05:56 +0000 (UTC)
Received: by smtp.kernel.org (Postfix) with ESMTPSA id 304ACC19421;
 Fri, 10 Apr 2026 22:05: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=k20201202 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/simple; d=kernel.org;
	s=k20201202; t=1775858756;
	bh=ey4VoBj5qX4SNQT+2IDihuuGAqI2cAW0TQcfzgtTkDw=;
	h=Date:From:To:cc:Subject:In-Reply-To:References:From;
	b=NwltKpOvKxCgh7HJj/t9mSf1O+OIhxIvAGdB5FKxFWUW0pv0m52scgNNqSkbZ8Kub
	 nGo5lvScP55H+FdSB7oeorLHz6mGgEwl9WYU/bjtfByL/pBMKNZ4Lrll12d+Sohr5V
	 JS/ynIWLxgOlx91GTUIfQn5uFFv7cu4Ef1OZwC5rUdcm9YQUZ7uoRtaKcGiCJfFOy8
	 uQ7vP/QHkJTW9kbcek3+u5n3uKe5kIXoDRlCdsv0rwm+tAk6xSni6nqUQKujT7RGbL
	 OV6G00CFWSg6G04JrxpYcg/NO0zSe64YxC9I/o21erQWtdgRhbyFgJeyy400BF2A/h
	 338vjvCS4MWeA==
Date: Fri, 10 Apr 2026 15:05:52 -0700 (PDT)
From: Stefano Stabellini <sstabellini@kernel.org>
X-X-Sender: sstabellini@ubuntu-linux-20-04-desktop
To: Oleksii Kurochko <oleksii.kurochko@gmail.com>
cc: Xen-devel <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>, 
    "Orzel, Michal" <Michal.Orzel@amd.com>
Subject: Re: Generation of phandles for guest DTB in dom0less
In-Reply-To: <29f456c6-2f6a-4b7d-a70f-9d2d50663b47@gmail.com>
Message-ID: <alpine.DEB.2.22.394.2604101505420.2873990@ubuntu-linux-20-04-desktop>
References: <29f456c6-2f6a-4b7d-a70f-9d2d50663b47@gmail.com>
User-Agent: Alpine 2.22 (DEB 394 2020-01-19)
MIME-Version: 1.0
Content-Type: text/plain; charset=US-ASCII
X-purgate-ID: tlsNG-d25034/1775858758-FEB4CA3D-40A19CD7/0/0
X-purgate-type: clean
X-purgate-size: 2576

On Fri, 10 Apr 2026, Oleksii Kurochko wrote:
> Hi all,
> 
> While working on dom0less guest FDT construction I noticed that
> fdt_generate_phandle() is "broken" when used to generate phandles for a
> guest's nodes. The root cause is the way dom0less manages phandle_intc
> (phandle_gic in Arm terminology): the dummy GIC node already occupies a
> phandle in pfdt, but fdt_generate_phandle(kinfo->fdt, ...) has no visibility
> into pfdt and therefore may produce a phandle that collides with phandle_intc.
> 
> I see three potential approaches to fix this and would like to get the
> community's feedback before going further.
> 
> **Option 1: guest_fdt_generate_phandle() wrapper**
> 
> Introduce a thin wrapper that skips any phandle already reserved by the
> architecture:
> 
>   int guest_fdt_generate_phandle(const struct kernel_info *kinfo, uint32_t
> *phandle)
>   {
>       int res;
> 
>       res = fdt_generate_phandle(kinfo->fdt, phandle);
> 
>       if ( *phandle == kinfo->phandle_intc )
>           (*phandle)++;
> 
>       return res;
>   }
> 
> The obvious downside is that this is not flexible: every future node added to
> pfdt would require a corresponding fixup here, which is easy to forget and
> hard to maintain.
> 
> **Option 2: Reserve a "first free phandle" field in the arch-specific
> structure**
> 
> Add a field to the arch-specific part of struct kernel_info that stores the
> first phandle number guaranteed not to be used by pfdt. Guest phandle
> allocation would then start from (and increment) this field, completely
> avoiding the pfdt phandle space.
> 
> This is cleaner than Option 1 but requires careful initialisation and
> documentation to make sure the field is always set before it is consumed.
> 
> **Option 3: Store a pfdt pointer in struct kernel_info**
> 
> Add a `pfdt` pointer to struct kernel_info and pass it to
> fdt_generate_phandle() whenever a guest phandle is needed:
> 
>   fdt_generate_phandle(kinfo->pfdt, ...)
> 
> Because fdt_generate_phandle() walks the target FDT to find the highest
> existing phandle and returns the next free one, using pfdt as the source of
> truth guarantees uniqueness across both pfdt and the guest FDT, without any
> manual bookkeeping.
> 
> This feels like the most robust option to me, since it naturally handles any
> future nodes added to pfdt without requiring changes to the phandle allocation
> logic.
> 
> Does anyone see issues with Option 3? Are there other approaches worth
> considering?

Option 3 looks decent


From xen-devel-bounces@lists.xenproject.org Sun Apr 12 06:22:24 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Sun, 12 Apr 2026 06:22:24 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1280512.1564003 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wBoCq-0003vg-Uu; Sun, 12 Apr 2026 06:22:04 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1280512.1564003; Sun, 12 Apr 2026 06:22: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 1wBoCq-0003vS-OO; Sun, 12 Apr 2026 06:22:04 +0000
Received: by outflank-mailman (input) for mailman id 1280512;
 Sun, 12 Apr 2026 06:22:04 +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 1wBoCq-0003vM-9j
 for xen-devel@lists.xenproject.org; Sun, 12 Apr 2026 06:22:04 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wBoCp-00H2YG-HR
 for xen-devel@lists.xenproject.org; Sun, 12 Apr 2026 08:22:03 +0200
Received: from [10.42.69.2] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <jgross@suse.com>)
 id 69db39ee-2eae-0a2a0a5409dd-0a2a450299e6-16
 for <xen-devel@lists.xenproject.org>; Sun, 12 Apr 2026 08:22:03 +0200
Received: from [195.135.223.130] (helo=smtp-out1.suse.de)
 by tlsNG-720697.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.0)
 (envelope-from <jgross@suse.com>)
 id 69db3a0b-42fa-0a2a45020019-c387df82dfe2-3
 for <xen-devel@lists.xenproject.org>; Sun, 12 Apr 2026 08:22:03 +0200
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 BDE4E6A844;
 Sun, 12 Apr 2026 06:22:02 +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 971B24A79F;
 Sun, 12 Apr 2026 06:22:02 +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 H0lPIwo622lXRwAAD6G6ig
 (envelope-from <jgross@suse.com>); Sun, 12 Apr 2026 06: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=susede1 header.d=suse.com header.i="@suse.com" header.h="From:Date:Message-ID:To:Cc:MIME-Version:Content-Transfer-Encoding"; dkim=pass header.s=susede1 header.d=suse.com header.i="@suse.com" header.h="From:Date:Message-ID:To:Cc:MIME-Version:Content-Transfer-Encoding"
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=suse.com; s=susede1;
	t=1775974922; h=from:from:reply-to:date:date:message-id:message-id:to:to:cc:cc:
	 mime-version:mime-version:  content-transfer-encoding:content-transfer-encoding;
	bh=H4/EmGHaKtwX8U/Zwd5I44YWhwveUA/5hxSsrtYHhwM=;
	b=pgVKMgQchlrVfbdt6+ZXr36GRlWGA7G5oY5VHCXndLbIXYN93gfDVzJMdEIdEtVQ3gXG07
	ZAJdIsSkcdde63Z6vHPeF8hYi3ngUtALhKadkLfEyK4L/3/rdLYKT+P9zZVZ7DNj+6KKeV
	napuqvs3RZiBuoY04CLnHGmY02Ml3kg=
Authentication-Results: smtp-out1.suse.de;
	none
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=suse.com; s=susede1;
	t=1775974922; h=from:from:reply-to:date:date:message-id:message-id:to:to:cc:cc:
	 mime-version:mime-version:  content-transfer-encoding:content-transfer-encoding;
	bh=H4/EmGHaKtwX8U/Zwd5I44YWhwveUA/5hxSsrtYHhwM=;
	b=pgVKMgQchlrVfbdt6+ZXr36GRlWGA7G5oY5VHCXndLbIXYN93gfDVzJMdEIdEtVQ3gXG07
	ZAJdIsSkcdde63Z6vHPeF8hYi3ngUtALhKadkLfEyK4L/3/rdLYKT+P9zZVZ7DNj+6KKeV
	napuqvs3RZiBuoY04CLnHGmY02Ml3kg=
From: Juergen Gross <jgross@suse.com>
To: torvalds@linux-foundation.org
Cc: linux-kernel@vger.kernel.org,
	xen-devel@lists.xenproject.org,
	sstabellini@kernel.org
Subject: [GIT PULL] xen: branch for v7.1-rc1
Date: Sun, 12 Apr 2026 08:22:02 +0200
Message-ID: <20260412062202.627248-1-jgross@suse.com>
X-Mailer: git-send-email 2.53.0
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit
X-Spamd-Result: default: False [-2.80 / 50.00];
	BAYES_HAM(-3.00)[99.99%];
	MID_CONTAINS_FROM(1.00)[];
	NEURAL_HAM_LONG(-1.00)[-1.000];
	R_MISSING_CHARSET(0.50)[];
	NEURAL_HAM_SHORT(-0.20)[-1.000];
	MIME_GOOD(-0.10)[text/plain];
	FUZZY_RATELIMITED(0.00)[rspamd.com];
	RCVD_VIA_SMTP_AUTH(0.00)[];
	MIME_TRACE(0.00)[0:+];
	ARC_NA(0.00)[];
	DKIM_SIGNED(0.00)[suse.com:s=susede1];
	DBL_BLOCKED_OPENRESOLVER(0.00)[suse.com:mid,imap1.dmz-prg2.suse.org:helo];
	FROM_EQ_ENVFROM(0.00)[];
	FROM_HAS_DN(0.00)[];
	RCPT_COUNT_THREE(0.00)[4];
	RCVD_COUNT_TWO(0.00)[2];
	TO_MATCH_ENVRCPT_ALL(0.00)[];
	TO_DN_NONE(0.00)[];
	RCVD_TLS_ALL(0.00)[]
X-Spam-Flag: NO
X-Spam-Score: -2.80
X-Spam-Level: 
X-purgate-ID: tlsNG-720697/1775974923-47F29CD1-04F8C777/0/0
X-purgate-type: clean
X-purgate-size: 1427

Linus,

Please git pull the following tag:

 git://git.kernel.org/pub/scm/linux/kernel/git/xen/tip.git for-linus-7.1-rc1-tag

xen: branch for v7.1-rc1

It contains:

- a fix of an error path in drivers/xen/manage.c
- a fix for the Xen console driver solving a boot hangup when the
  console backend isn't yet running
- a comment fix in the Xen swiotlb driver
- a hardening patch for Xen on Arm adding a more thorough validation
- a cleanup of the Xen grant table code hiding suspend/resume code for
  the case if CONFIG_HIBERNATE_CALLBACKS isn't defined

Thanks.

Juergen

 arch/arm/xen/enlighten.c           | 10 ++++++----
 drivers/tty/hvc/hvc_xen.c          |  3 +++
 drivers/xen/grant-table.c          |  3 ++-
 drivers/xen/manage.c               | 20 +++++++++++++++++---
 drivers/xen/swiotlb-xen.c          |  2 +-
 include/xen/grant_table.h          | 12 ++++++++++++
 include/xen/interface/io/console.h | 13 +++++++++++++
 7 files changed, 54 insertions(+), 9 deletions(-)

GuoHan Zhao (1):
      xen/manage: unwind partial shutdown watcher setup on error

Jason Andryuk (1):
      hvc/xen: Check console connection flag

Kexin Sun (1):
      xen/swiotlb: fix stale reference to swiotlb_unmap_page()

Pengpeng Hou (2):
      ARM: xen: validate hypervisor compatible before parsing its version
      xen/grant-table: guard gnttab_suspend/resume with CONFIG_HIBERNATE_CALLBACKS


From xen-devel-bounces@lists.xenproject.org Mon Apr 13 08:44:16 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 13 Apr 2026 08:44:16 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1280933.1564015 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wCCtf-0006k7-J8; Mon, 13 Apr 2026 08:43:55 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1280933.1564015; Mon, 13 Apr 2026 08: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 1wCCtf-0006k0-Fu; Mon, 13 Apr 2026 08:43:55 +0000
Received: by outflank-mailman (input) for mailman id 1280933;
 Mon, 13 Apr 2026 08:43:54 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92) id 1wCCte-0006ju-Jn
 for xen-devel@lists.xenproject.org; Mon, 13 Apr 2026 08:43:54 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wCCtd-00Bb9a-SS
 for xen-devel@lists.xenproject.org; Mon, 13 Apr 2026 10:43:53 +0200
Received: from [10.42.69.4] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <oleksii.kurochko@gmail.com>)
 id 69dcacc7-bab6-0a2a0a5309dd-0a2a450495c4-10
 for <xen-devel@lists.xenproject.org>; Mon, 13 Apr 2026 10:43:53 +0200
Received: from [209.85.221.49] (helo=mail-wr1-f49.google.com)
 by tlsNG-ebf023.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.0)
 (envelope-from <oleksii.kurochko@gmail.com>)
 id 69dcacc9-bb33-0a2a45040019-d155dd31c52f-3
 for <xen-devel@lists.xenproject.org>; Mon, 13 Apr 2026 10:43:53 +0200
Received: by mail-wr1-f49.google.com with SMTP id
 ffacd0b85a97d-43d572f7437so2632765f8f.1
 for <xen-devel@lists.xenproject.org>; Mon, 13 Apr 2026 01:43:53 -0700 (PDT)
Received: from [192.168.1.6] (user-109-243-69-121.play-internet.pl.
 [109.243.69.121]) by smtp.gmail.com with ESMTPSA id
 ffacd0b85a97d-43d7a6054dfsm4984799f8f.17.2026.04.13.01.43.51
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Mon, 13 Apr 2026 01:43:52 -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=20251104 header.d=gmail.com header.i="@gmail.com" header.h="Content-Transfer-Encoding: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=20251104; t=1776069833; x=1776674633; darn=lists.xenproject.org;
        h=content-transfer-encoding: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;
        bh=mcPTLLRyjpLLJeDzkteXckkWflgWGJ+66+DAF24dZnE=;
        b=CoM5NDvd4BZL43ibZUG5lWLiBgTPSJll1d0O+KakuHjzriWJfPgsuNAemDyLMuuyv+
         9bWjTGMaDFPMAj6k8tFYZyQTUVViwH84Um3KapwLoLHdblao1x9sI9fIC+MQIyEs5O5w
         aQ28w6qDGGSdKM546pbPvn4+atDRGm2ybU5p80cO+W+kILrRXo6t1UESxguo7r11Z7NO
         xwy8Q994kKwEVoj8LQV5ambgLL/fLGVQUYNudcN9wFLO7xLwomUG+Ms8ravaCXR14q1w
         zwtWlms0wQXhWJx6etff2wyayG72d4H3r0+ys4xEyE5q3l1TgneBH7E0TgpB5jcO0z2G
         rb9Q==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20251104; t=1776069833; x=1776674633;
        h=content-transfer-encoding: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;
        bh=mcPTLLRyjpLLJeDzkteXckkWflgWGJ+66+DAF24dZnE=;
        b=DY9uiciCkIhxjR74/32sXoZ86xsqQvs632dfIiaXcDHR4UTDyR8Ix2nvNl7LOgaW2J
         ijyxQElnFSgpRIcydxUzRucIijP4NddXwJoo7Y04vHGSdvgj62vLj3gIVQlbM0wQjKkO
         W6TnMwzYTj7asHNdJZaV+PDWVwH+uqh+AuPtm8GeJo2w5XIMj2MbTWRgdTL0DWrBt4Y6
         TNimBzMQDhFfCCcfSN7ZgZxQQDnkkjnybY7lW36LaqJTSZkXbneSKKek8EFoCSr5S2dg
         hlp+1uekXgAa/nEeZE7c2nR0fHKdPP0a1y1K1EEh1Q4JpSn0PSHwEYeRtsYOMIIIi1sF
         dBrw==
X-Forwarded-Encrypted: i=1; AFNElJ8U+5Ass6y+Yy6qePOxWBLIje/xfCorkbCOqGUYkgZLDq6jRj1+jm2QApEkBDmvd44/CP7acQLO7xI=@lists.xenproject.org
X-Gm-Message-State: AOJu0Yx12NdLNGpEkUi4VfHKMuKRfW5MBTGQRhWm7ISSqIffUb6w6NFP
	SFSrOACUP3H2KZzsYqMrSSVtNam3jsaW3K8qOyRl2cN72IQxEnpVsrt3
X-Gm-Gg: AeBDiesbGymfXdwCo1v0Sfw1Pqqw8cXxOjGU6Oac2zOC7XMFVXjd9r715O+YtG4rHes
	3RirMi6QngKvRD4ex9CJ17gbdUhoabbja0D6jkuHtE00DYFDrXiO3YWkvYNYr3QLxMQ/LzallrY
	BfEanhAJdK9NZW60s3LMMuPaw19w5b/IHE4ZWvpz+QIwwvwdYUf+ffwop96AgLQiKfn/71XYO6g
	NP5vNKjJqC532gTpJo85mteE9/OKedF5aSz/CyCG3jqI1Ip7NKU8j8Uh359RDSJ1+BQxOdS8MQw
	enbe89hwyHb3r/FyV9AoDurSGwCjG23ovVihxuQCR3CigsT4vXpxkt8BO1Y0bApX7xEYj5niyir
	zGQP4KYHJpQ+L3AKb6DcGdvvYvwcBLUfuaUjTwysCq4grcFoOtSlRWmqxb+GNcQ1G5rFI5Egl8G
	1fnuBB66LHn47gM/XqIxqKVuLwLJf2bGkLnU2hthfOBtUmpD50o8D1/39RAU3/af+8H34jbsFAJ
	OA=
X-Received: by 2002:a05:6000:2886:b0:43b:4982:fc73 with SMTP id ffacd0b85a97d-43d642c77cemr18408832f8f.25.1776069832830;
        Mon, 13 Apr 2026 01:43:52 -0700 (PDT)
Message-ID: <9fd04b0f-3b04-4f1e-ac63-de0fca57d466@gmail.com>
Date: Mon, 13 Apr 2026 10:43:51 +0200
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH v1 11/27] xen/riscv: create APLIC DT node for guest
 domains
To: Jan Beulich <jbeulich@suse.com>
Cc: Romain Caritey <Romain.Caritey@microchip.com>,
 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.pau@citrix.com>,
 Stefano Stabellini <sstabellini@kernel.org>, xen-devel@lists.xenproject.org
References: <cover.1773157782.git.oleksii.kurochko@gmail.com>
 <462b5f7dbe4e5084a35fb869b59327c6c92d1fbf.1773157782.git.oleksii.kurochko@gmail.com>
 <362d1e3a-409c-40ab-8d2c-36dc30a04b88@suse.com>
Content-Language: en-US
From: Oleksii Kurochko <oleksii.kurochko@gmail.com>
In-Reply-To: <362d1e3a-409c-40ab-8d2c-36dc30a04b88@suse.com>
Content-Type: text/plain; charset=UTF-8; format=flowed
Content-Transfer-Encoding: 8bit
X-purgate-ID: tlsNG-ebf023/1776069833-B0F2E51B-88ED3C28/10/73395122804
X-purgate-type: spam
X-purgate-size: 3698



On 4/1/26 5:16 PM, Jan Beulich wrote:
> On 10.03.2026 18:08, Oleksii Kurochko wrote:
>> @@ -295,6 +297,85 @@ static void cf_check aplic_set_irq_type(struct irq_desc *desc,
>>       spin_unlock(&aplic.lock);
>>   }
>>   
>> +static int __init cf_check aplic_make_dom_dt_node(
>> +                                    const struct kernel_info *kinfo,
>> +                                    const struct dt_device_node *aplic_node)
> 
> Nit: Entirely bogus indentation.
> 
>> +{
>> +    uint32_t len;
>> +    const __be32 *regs;
>> +    const void *data = NULL;
> 
> Again, why the initializer?

No real need, I will drop.

> 
>> +    int res = 0;
>> +    void *fdt = kinfo->fdt;
>> +
>> +    res = imsic_make_dt_node(kinfo);
>> +    if ( res )
>> +        return res;
>> +
>> +    res = fdt_begin_node(fdt, aplic_node->full_name);
>> +    if (res)
> 
> Nit: Style.
> 
>> +        return res;
>> +
>> +    data = dt_get_property(aplic_node, "#interrupt-cells", &len);
>> +    if ( !data )
>> +    {
>> +        printk("%s: Can't find '#interrupt-cells' property\n",
>> +               aplic_node->full_name);
>> +        return -FDT_ERR_XEN(ENOENT);
>> +    }
> 
> Again, pull this up to be first in the function?

Agree, it makes sense to move it up.

> 
>> +    res = fdt_property(fdt, "#interrupt-cells", data, len);
>> +    if ( res )
>> +        return res;
> 
> So host properties are again directly handed through to the guest?

I am not sure that it can be different from what host has.

> Shouldn't the number of interrupts (aiui that's the "number of cells"
> here) a guest gets be independent from the host it runs one?

The #interrupt-cells property specifies how many 32-bit values (cells) 
are used to encode a single interrupt specifier when referencing this 
interrupt controller from another device node.
In this APLIC schema, it's fixed at const: 2, meaning every interrupt 
reference requires exactly two cells — typically:

Cell 1 — the interrupt source number (which of the riscv,num-sources 
wired inputs)
Cell 2 — the interrupt type/trigger flags (e.g. edge vs. level, active 
high/low)

So when a device node writes something like interrupts = <42 1>, the 
interrupt controller knows to interpret that as "source 42, trigger type 
1" because #interrupt-cells = <2> told it to consume two cells per 
specifier.


> 
>> +    regs = dt_get_property(aplic_node, "reg", &len);
>> +    if ( !regs )
>> +    {
>> +        printk("%s: Can't find 'reg' property\n", aplic_node->full_name);
>> +        return -FDT_ERR_XEN(ENOENT);
>> +    }
>> +
>> +    res = fdt_property(fdt, "reg", regs, len);
>> +    if ( res )
>> +        return res;
>> +
>> +    data = dt_get_property(aplic_node, "riscv,num-sources", &len);
>> +    if ( !data )
>> +    {
>> +        printk("%s: Can't find 'riscv,num-sources' property\n",
>> +                aplic_node->full_name);
>> +        return -FDT_ERR_XEN(ENOENT);
>> +    }
>> +
>> +    res = fdt_property(fdt, "riscv,num-sources", data, len);
>> +    if ( res )
>> +        return res;
> 
> Or maybe this is the number of interrupts?

This is the total count of hardware interrupt lines wired into this 
APLIC domain.

It could be independent from the host it runs one but looking at the 
possible range [1,1023] for this property if we will put for a guest 
lets say 22 but new host support only 20 when we will be in a trouble 
anyway.

It seems like it is another one thing where it will be needed to check 
that new host has enough number of interrupts and then just deny 
migration to such host.

Thanks.

~ Oleksii


From xen-devel-bounces@lists.xenproject.org Mon Apr 13 08:48:54 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 13 Apr 2026 08:48:54 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1280945.1564024 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wCCyT-0007Kg-4w; Mon, 13 Apr 2026 08:48:53 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1280945.1564024; Mon, 13 Apr 2026 08: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 1wCCyT-0007KZ-1u; Mon, 13 Apr 2026 08:48:53 +0000
Received: by outflank-mailman (input) for mailman id 1280945;
 Mon, 13 Apr 2026 08:48:52 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92) id 1wCCyS-0007KT-FQ
 for xen-devel@lists.xenproject.org; Mon, 13 Apr 2026 08:48:52 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wCCyR-00Bcm9-R8
 for xen-devel@lists.xenproject.org; Mon, 13 Apr 2026 10:48:51 +0200
Received: from [10.42.69.4] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <oleksii.kurochko@gmail.com>)
 id 69dcadf1-2eae-0a2a0a5409dd-0a2a45048b8c-6
 for <xen-devel@lists.xenproject.org>; Mon, 13 Apr 2026 10:48:51 +0200
Received: from [209.85.128.48] (helo=mail-wm1-f48.google.com)
 by tlsNG-ebf023.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.0)
 (envelope-from <oleksii.kurochko@gmail.com>)
 id 69dcadf3-bb33-0a2a45040019-d1558030dd26-3
 for <xen-devel@lists.xenproject.org>; Mon, 13 Apr 2026 10:48:51 +0200
Received: by mail-wm1-f48.google.com with SMTP id
 5b1f17b1804b1-4887f49ec5aso51009365e9.1
 for <xen-devel@lists.xenproject.org>; Mon, 13 Apr 2026 01:48:51 -0700 (PDT)
Received: from [192.168.1.6] (user-109-243-69-121.play-internet.pl.
 [109.243.69.121]) by smtp.gmail.com with ESMTPSA id
 5b1f17b1804b1-488d58bb830sm288502705e9.7.2026.04.13.01.48.50
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Mon, 13 Apr 2026 01:48:50 -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=20251104 header.d=gmail.com header.i="@gmail.com" header.h="Content-Transfer-Encoding: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=20251104; t=1776070131; x=1776674931; darn=lists.xenproject.org;
        h=content-transfer-encoding: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;
        bh=tBPueUyGFRga8AEhs67/Xn6+SE364MXzEAQfF5xNnc0=;
        b=lfMdUZKLOJo+kaCvxB6THHfP4DzSridQMKquv0YS4ceDmo9bZxJ5kVhD573l9kge1E
         krPOuThc1wcUEf/VenzcW0JJ1E4zb+TL8v++VhvhVdx+6Nj/Ly6UIS8OfK9UZrxTsDvs
         K8xbgfNVn7uzIiDVb7As2f2f+zEiE9htBLGBzf3D7GpM8bHmevgRUE57b87+dpg/3U0F
         GQPEpC3FxCVvIiQi/qYqAT8UkAEnh5JcHiDgyXaMzvfe4CfxZ1x+3T4KyjJIxahc99BL
         ZgFz7cNaieE+o30kwzCco49faVCBoY3ZWzq7Z/Tljhw+g67I9Pz2QVIeZ9evgsx28NmN
         X3Gw==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20251104; t=1776070131; x=1776674931;
        h=content-transfer-encoding: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;
        bh=tBPueUyGFRga8AEhs67/Xn6+SE364MXzEAQfF5xNnc0=;
        b=Xf/+e4m4q7fKsZpKx0Es69CPnS2xsKSQqbVXbGT0nv5wg0grVUvLU4Rh51Lw19uGgZ
         G2lVBbLjYG06pzZB8rPn/XAV2UOCOoH9peNwUn7u41axBSkFNHSC5lsdDjlQjB5CE/KY
         i7SsDWXUbJm88IMfb7cxFxyA7bMbn4JS/V/q8dyrfHpkJmmmQApNWQg2k1bfJie21Jel
         vxsTnb2VjT9d4WZRzdwFlwzt+zruhp9ZzxXEdYkwowjDSp3uvi+4UCIS53ptg9stz8Gv
         7IB0+8zD+ZQyUaJJXwgBpMVFppTOXRHplA2wkekU/gMGF5TUDEODOn7bpf5Y9fH/7BKH
         skSA==
X-Forwarded-Encrypted: i=1; AFNElJ+jERDO8G2R0oqChLYS8LmfEYi+zLdsC9uQfs5SK4lyLyct9dYxGHJKF4EXEE8zEwFoAwPt6aA/WgE=@lists.xenproject.org
X-Gm-Message-State: AOJu0Yw0TH2IfC83htQk+qQ0qpIWTaVmfj9LlQh82r90fDCrmm+hWCOo
	HAUHeU3RIsCkWfdkCTeBzlimmU6R8Wg4e03YmbVbgaO7soIxr7m4fX30
X-Gm-Gg: AeBDiesT/046v/heXFAiQJNzlev99rb0+X+1ec80i+Yh57Wp7VLaOD4VO5k0HIg9PBc
	kpYD+z0+Z8s/5CIs2U89VdyaD4H+cZul1qplkUot5P0w3BHdKkhxfzK10dE9BglGq4spztGarFP
	FmBs2cCep1vQrLeqnyV/SvNAGkMIqef/i15z5zpkfbhTwpDfXlbxKxXIjC8fpl71/CHKFZPjQU/
	fKC7FoZU24j0XV0jNn8wxBgCA1qVINYh6fAgPh4OmJN6e+D+h7JaeNhhP2Qn99idfk7uzxgH79h
	JiCn/zExho3cEMXHpTDM3hooGaTflWBv2jO8vScxFYiH2zozN//QQe7XekqgeKD/0KlImYPM+gN
	3stfuLUmpGyXgCkv16qO0bu/lyMcCypzjQfvmrT6zAz/cWIX5OlyiUKqBO78A3161MKbRXyY1F2
	9HJc01xrthT+lBAGxTt9RNx7KfBX+gi96iRKfkd7yILm+AHz3eZCROrs3wTewuooocnyPH98Alg
	k6gz9XFSRZyYg==
X-Received: by 2002:a05:600c:34cc:b0:488:869c:edaf with SMTP id 5b1f17b1804b1-488d67d882cmr177827655e9.8.1776070131088;
        Mon, 13 Apr 2026 01:48:51 -0700 (PDT)
Message-ID: <004619ae-2b07-4ca0-bbd6-b023b5351f01@gmail.com>
Date: Mon, 13 Apr 2026 10:48:49 +0200
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH v1 11/27] xen/riscv: create APLIC DT node for guest
 domains
From: Oleksii Kurochko <oleksii.kurochko@gmail.com>
To: Jan Beulich <jbeulich@suse.com>
Cc: Romain Caritey <Romain.Caritey@microchip.com>,
 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.pau@citrix.com>,
 Stefano Stabellini <sstabellini@kernel.org>, xen-devel@lists.xenproject.org
References: <cover.1773157782.git.oleksii.kurochko@gmail.com>
 <462b5f7dbe4e5084a35fb869b59327c6c92d1fbf.1773157782.git.oleksii.kurochko@gmail.com>
 <362d1e3a-409c-40ab-8d2c-36dc30a04b88@suse.com>
 <9fd04b0f-3b04-4f1e-ac63-de0fca57d466@gmail.com>
Content-Language: en-US
In-Reply-To: <9fd04b0f-3b04-4f1e-ac63-de0fca57d466@gmail.com>
Content-Type: text/plain; charset=UTF-8; format=flowed
Content-Transfer-Encoding: 8bit
X-purgate-ID: tlsNG-ebf023/1776070131-3353351B-EC74DD9A/10/73395122804
X-purgate-type: spam
X-purgate-size: 863



On 4/13/26 10:43 AM, Oleksii Kurochko wrote:
>>> +        return res;
>>> +
>>> +    data = dt_get_property(aplic_node, "#interrupt-cells", &len);
>>> +    if ( !data )
>>> +    {
>>> +        printk("%s: Can't find '#interrupt-cells' property\n",
>>> +               aplic_node->full_name);
>>> +        return -FDT_ERR_XEN(ENOENT);
>>> +    }
>>
>> Again, pull this up to be first in the function?
> 
> Agree, it makes sense to move it up.

But on other hand, there are several time used the same construction 
dt_get_propety() from host aplic node then write this property to guest 
aplic node, then maybe we want to keep this dt_get_property(aplic_node, 
"#interrupt-cells", &len); where it is now to have the same visually 
construction way of guest device tree properties.

~ Oleksii


From xen-devel-bounces@lists.xenproject.org Mon Apr 13 08:49:22 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 13 Apr 2026 08:49:22 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1280953.1564033 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wCCyu-0007lU-Cc; Mon, 13 Apr 2026 08:49:20 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1280953.1564033; Mon, 13 Apr 2026 08:49: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 1wCCyu-0007lN-9j; Mon, 13 Apr 2026 08:49:20 +0000
Received: by outflank-mailman (input) for mailman id 1280953;
 Mon, 13 Apr 2026 08:49:19 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <Luca.Fancellu@arm.com>) id 1wCCys-0007l0-SH
 for xen-devel@lists.xenproject.org; Mon, 13 Apr 2026 08:49:19 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wCCys-00Bd1x-7x
 for xen-devel@lists.xenproject.org; Mon, 13 Apr 2026 10:49:18 +0200
Received: from [10.42.69.4] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <Luca.Fancellu@arm.com>)
 id 69dcae05-2eae-0a2a0a5409dd-0a2a4504d7c4-24
 for <xen-devel@lists.xenproject.org>; Mon, 13 Apr 2026 10:49:17 +0200
Received: from [52.101.83.6]
 (helo=GVXPR05CU001.outbound.protection.outlook.com)
 by tlsNG-ebf023.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.0)
 (envelope-from <Luca.Fancellu@arm.com>)
 id 69dcae0d-bb33-0a2a45040019-346553066770-3
 for <xen-devel@lists.xenproject.org>; Mon, 13 Apr 2026 10:49:17 +0200
Received: from AS4P190CA0015.EURP190.PROD.OUTLOOK.COM (2603:10a6:20b:5de::19)
 by AS8PR08MB7719.eurprd08.prod.outlook.com (2603:10a6:20b:524::12)
 with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9769.48; Mon, 13 Apr
 2026 08:49:15 +0000
Received: from AM4PEPF00027A5F.eurprd04.prod.outlook.com
 (2603:10a6:20b:5de:cafe::37) by AS4P190CA0015.outlook.office365.com
 (2603:10a6:20b:5de::19) with Microsoft SMTP Server (version=TLS1_3,
 cipher=TLS_AES_256_GCM_SHA384) id 15.20.9769.48 via Frontend Transport; Mon,
 13 Apr 2026 08:49:15 +0000
Received: from outbound-uk1.az.dlp.m.darktrace.com (4.158.2.129) by
 AM4PEPF00027A5F.mail.protection.outlook.com (10.167.16.74) with Microsoft
 SMTP Server (version=TLS1_3, cipher=TLS_AES_256_GCM_SHA384) id 15.20.9769.17
 via Frontend Transport; Mon, 13 Apr 2026 08:49:15 +0000
Received: from DU2PR08MB7272.eurprd08.prod.outlook.com (2603:10a6:10:2d7::16)
 by AS4PR08MB8119.eurprd08.prod.outlook.com (2603:10a6:20b:58b::9)
 with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9769.48; Mon, 13 Apr
 2026 08:48:05 +0000
Received: from DU2PR08MB7272.eurprd08.prod.outlook.com
 ([fe80::5d34:206f:373:a323]) by DU2PR08MB7272.eurprd08.prod.outlook.com
 ([fe80::5d34:206f:373:a323%6]) with mapi id 15.20.9769.046; Mon, 13 Apr 2026
 08:48: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=arm.com header.i="@arm.com" header.h="From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck"; dkim=pass header.s=selector1 header.d=arm.com header.i="@arm.com" header.h="From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck"
ARC-Seal: i=2; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=pass;
 b=Hrzm0UhGfKBAsdGQ9gD3L6mQpF6HZps3WIadIWqnopdO5OjpEp4YkZOc5qK7e+cEsU4848LYVqwCJsnpxSHqJ57lbQLUcVcWIWdpSR6/vHPQJQ8j6xIxHZx7gujYSrxLQ2TdIpaOVcgVp5Q1GBmRheSgl2UIA0DRLtfXpxcS9N5cWBT+AChwWlq273us2uFgI1uB3d6JZDgSkAhTgqSzyRRb7qum1d8vH36BVoPkw13M0/ciDTWVMqMNum/HBpzF8NYyX3bwDR6VIDXEmkUbz3wzQ5qhMwmIFqqBlYxmBggd8BTKsJNYE2V0Ud9MbU46227cQldhV05IOiAxtMv3CQ==
ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com;
 s=arcselector10001;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1;
 bh=uSyyuiyaulZe6vGzx6PQiq0FhYY6RBF0uFvWX1WEj3I=;
 b=zANlsrk+ZNzv5cowB1/4dD1489yw7eRCwqCR6/a8T4Q6z/xep1UeajGfkYi/FUhLr9WVEQvbxy/tv1duRI59HkHLXydbfWOFJxawPLJoXAp9JZk/jNMS7Pw5mW3JNcUxzG/mBdJO5P+3dXfQ32bAgV4Q2OpUEwZFr3pBjCpHKBdwKgTKTlHBOmjkC5UXC4qUxFoHk/aO3sFaihUzhcBgGBo9Pp12yYNZhuQ90jV4FUaGUHJkgaXYBuKCkRdJIpDYJsxrrhrEMOuvA177PK13IQFJXjMjjZDjq29gbWE3CeLnJgvJr3/Vc3pmsXeX//B9WsInUrZw5Rc2qMGw/L+1IQ==
ARC-Authentication-Results: i=2; mx.microsoft.com 1; spf=pass (sender ip is
 4.158.2.129) smtp.rcpttodomain=epam.com smtp.mailfrom=arm.com; dmarc=pass
 (p=none sp=none pct=100) action=none header.from=arm.com; dkim=pass
 (signature was verified) header.d=arm.com; arc=pass (0 oda=1 ltdi=1
 spf=[1,1,smtp.mailfrom=arm.com] dkim=[1,1,header.d=arm.com]
 dmarc=[1,1,header.from=arm.com])
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=arm.com; s=selector1;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck;
 bh=uSyyuiyaulZe6vGzx6PQiq0FhYY6RBF0uFvWX1WEj3I=;
 b=dcDkJMtrHsgR1SZGqXr+Flh5RUCgoYWliFeS4rKa0um0qjTGG66w7yt3dl9QtQ3zxy3zeMszUhiBuf4ltWJJFzSvh2oQ/Wbhn8AOdOsvJ9doy8eIun8yVqHldB3ktP5TKIHNGhrSpFteJWMRuCR367ZarPCHRvEJF/vIgi5VzpU=
X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 4.158.2.129)
 smtp.mailfrom=arm.com; dkim=pass (signature was verified)
 header.d=arm.com;dmarc=pass action=none header.from=arm.com;
Received-SPF: Pass (protection.outlook.com: domain of arm.com designates
 4.158.2.129 as permitted sender) receiver=protection.outlook.com;
 client-ip=4.158.2.129; helo=outbound-uk1.az.dlp.m.darktrace.com; pr=C
ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none;
 b=a98PXDywqD7slfSM/GTSPVfowivBvPMi9roq7NWBav4K3mv8foXl29mMS6bi7RS6QjbKTvOYTXpqZ+o0VzKca5pA1vkxmJavm1wxBmd3VDY8KhDbZZipJRbdxAaALXgBjg71hLnuE9WDkTFDiv/zrnELRKlH+4fuS7uvmezAA9SgDEbFBY0PyBG3duBZoj6JuuOUHodlytd0LW6e07BwD7HlB4xL+v9BIDeVuegzk5n125UyFeVNOQCGAeEq2UIcg+PzqTalUqLaziJCIsG5EEfF08eo9pwVKn4M2Y0nQP71ojKXBgG4uaqKfGvgJzlsGmTnIchhbon5HIYH9MMDKg==
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com;
 s=arcselector10001;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1;
 bh=uSyyuiyaulZe6vGzx6PQiq0FhYY6RBF0uFvWX1WEj3I=;
 b=aW+ufWqGNIybB1C9C1WGnh+rUSnMzRBdq0ti0btetjEvRQaHFBOs+fLEnzKMjoQbdQjqclaVnbsLGwARendaiyq8wJfFXRz5r51ejo/FJTkDjWerxjKK7yw2SSP+OJQllHaUicSn3sbtnE2GQuodq3p74caHwXRYxNAfG3r/yXdc2wftO51IzCTma2dj1XRogcgHX2qoDfSmJkjfY1W77zfwP2Ahuii4WBWhE4ScXu7EIkWly0CswQmegr52rgqI/z1qvCKGNFCMGR5rlH02rgSlbvAFpmJXCdIZcepx8CLUpeRB+0gjJBI/n1gklu1sFRZ6Hfj5PzKBeaXNvKQYVQ==
ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass
 smtp.mailfrom=arm.com; dmarc=pass action=none header.from=arm.com; dkim=pass
 header.d=arm.com; arc=none
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=arm.com; s=selector1;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck;
 bh=uSyyuiyaulZe6vGzx6PQiq0FhYY6RBF0uFvWX1WEj3I=;
 b=dcDkJMtrHsgR1SZGqXr+Flh5RUCgoYWliFeS4rKa0um0qjTGG66w7yt3dl9QtQ3zxy3zeMszUhiBuf4ltWJJFzSvh2oQ/Wbhn8AOdOsvJ9doy8eIun8yVqHldB3ktP5TKIHNGhrSpFteJWMRuCR367ZarPCHRvEJF/vIgi5VzpU=
From: Luca Fancellu <Luca.Fancellu@arm.com>
To: Milan Djokic <milan_djokic@epam.com>
CC: "xen-devel@lists.xenproject.org" <xen-devel@lists.xenproject.org>, 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>
Subject: Re: [PATCH v3 09/23] xen/arm: vsmmuv3: Add support for cmdqueue
 handling
Thread-Topic: [PATCH v3 09/23] xen/arm: vsmmuv3: Add support for cmdqueue
 handling
Thread-Index: AQHcyyI+uCH3fkXed0iT4v0tOTag1A==
Date: Mon, 13 Apr 2026 08:48:05 +0000
Message-ID: <28D320C1-8CE3-4C9E-9C0F-4D82863ED03A@arm.com>
References: <cover.1774918270.git.milan_djokic@epam.com>
 <b223a8bb3e4d8771fc643c324a692a2639a91c12.1774918270.git.milan_djokic@epam.com>
In-Reply-To:
 <b223a8bb3e4d8771fc643c324a692a2639a91c12.1774918270.git.milan_djokic@epam.com>
Accept-Language: en-GB, en-US
Content-Language: en-US
X-MS-Has-Attach:
X-MS-TNEF-Correlator:
x-mailer: Apple Mail (2.3826.700.81.1.6)
Authentication-Results-Original: dkim=none (message not signed)
 header.d=none;dmarc=none action=none header.from=arm.com;
x-ms-traffictypediagnostic:
	DU2PR08MB7272:EE_|AS4PR08MB8119:EE_|AM4PEPF00027A5F:EE_|AS8PR08MB7719:EE_
X-MS-Office365-Filtering-Correlation-Id: 0afde00e-f4c3-4fa3-9e8a-08de99398ab0
x-checkrecipientrouted: true
nodisclaimer: true
X-MS-Exchange-SenderADCheck: 1
X-MS-Exchange-AntiSpam-Relay: 0
X-Microsoft-Antispam-Untrusted:
 BCL:0;ARA:13230040|366016|1800799024|376014|38070700021|18002099003|56012099003|22082099003;
X-Microsoft-Antispam-Message-Info-Original:
 RuF+Bz0tgwzlQS6RX1OnLisR0oHHhvtWRccJdb+Pzj65l2G9ZoAxm9O5q94fH2op4MZxfMUaWfbyua0xhzwlDbYcqPpY0dVmKJQezgO5Ap/UVOkkTlaPvDvSR54uUrWq9dTzEWYH0tsazcNLSrBEhJPz6/MWWMJq4pvgdkIrp0iWxLPCWCkfm9yk/wzB2pRtPe9tnbS1VtUNvR9t2IfEvwnIUdRsbCDY0y/1QFzrdw9pDy6caGauXlWgOXdm2nHA9gCl6AILUXgPMQpLhaV2rBqQ/LW7MdKQ7S4kXLSKoGeHLa7SfQBiVTPCcAPGV9fw0Eo2NGToWQeGJ1yKR8rbBOJLKUWMXgB2gXT7tAdPodFnVBj9qSP78QBD3fBuspGjF1iWy8uiqHlO9Exrh3SMQCPzy6jxx+niHAY4+nHCoPtIJ9rSDEmjOLpOujiro7owiXn/RqDR+XuaI/KeCByPPgp185Tgmlf/k4yosGi/pXSOTYti7jruHa2uFIDTmpylFaqcg271LnyruuSRDWcj9mf/YjcS9l59i8Bc6USwwCftNUuQoXQ5D3ydzTB7lvZ/Cus+3dE1HG99xVEA/KlH77IKVN7Gk9XFJNrcXCFWY/0X+kj37TSGUY/J5iouK3fbqchzASssiJSX4ErMuj4jfdXeI0Ad1zNVxPVDqOT255WZGJJUPJ03rBxPANe1NOO3zEtkIsuTsBxJ9s+n9Z+CVa6fLG9gG4sOw4xJPHel/vxQ4L5NU/WcOCDVdp88bPBGlRxY20z1DBQzeDhx2BUeKFaL8O3XwMqyMb3Zomnx+ns=
X-Forefront-Antispam-Report-Untrusted:
 CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:DU2PR08MB7272.eurprd08.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(366016)(1800799024)(376014)(38070700021)(18002099003)(56012099003)(22082099003);DIR:OUT;SFP:1101;
Content-Type: text/plain; charset="utf-8"
Content-ID: <00E0BDE2F840D340815712ACEBAC2FB3@eurprd08.prod.outlook.com>
Content-Transfer-Encoding: base64
MIME-Version: 1.0
X-Exchange-RoutingPolicyChecked:
 B9bE+MDHIlcMKws8f2heeWTCSMi+TbxFQqzdaoxs+z4YAUbABM1vV5yrKLNVL/ddeTDHmP/HcbppgqmDXSmOoaVsHhNNAHwE3+sU/CM5Vsr3lY6g3My6YFlxxxrqf1wTDzYHLyhqa/Z16bLzqTMErcrPNXUOCH1c1HHXToKF0R0Zm404p7rR5lmnWdV8HSQJ5rVQnJ2Omwk6N/I5tlCf4cu/agMx2gyFvNHJnMU5tmBZPlnobXsR0PTpk2aRqGN1K2X3UfXhPSAkp7CnGIt4r3qUjKE3cjjrS+AKIqm5F6J67UfKcvVWf/rh1020GhjdKQk6ucjIonaqCa0QF4EslQ==
X-MS-Exchange-Transport-CrossTenantHeadersStamped: AS4PR08MB8119
X-EOPAttributedMessage: 0
X-MS-Exchange-Transport-CrossTenantHeadersStripped:
 AM4PEPF00027A5F.eurprd04.prod.outlook.com
X-MS-PublicTrafficType: Email
X-MS-Office365-Filtering-Correlation-Id-Prvs:
	b1a95a2b-5dc2-4d0d-337c-08de993960ea
X-Microsoft-Antispam:
	BCL:0;ARA:13230040|35042699022|1800799024|36860700016|376014|14060799003|82310400026|18002099003|56012099003|22082099003;
X-Microsoft-Antispam-Message-Info:
	KPaSYfEr19Hl8vwfEn0Bderbw2BFrcvq94SqX7gW7U43eVS6n7/bPjBval5RCqddgyN+79UUVxmWF2QzE/eI7X51rwRo/XEZZJHDo4N2DLMLysDB3/27HXls+XBnvPwkT6oxu9THnP1L7XxI45GQXIuxM2JAyBniWjektaDivFJ9XhESjwMNczXjcQCl2/dPjyQwOFCI8jPq8ZM9N8Qgc0phRoJbsk5hHM9iJjUmOc8AkbSmef96hqFnCP5JsbyUi3FNDOionh8KQzJTGXgi9buXHmnqa82j7zxQWM0EniTZQK1HvuCER0NoIKrCeztIfIE/H86U9gGpbZcXzRka9Zr6ub98Tiu0ZTz7aR6SeWnJdbSyAOyWUs+58/25Yy8X9WcCj3mvS382YDxi1nEbq8xpI6H6g61/pVT0NygdSCYIXOj0L8trrnLYdOicbLpw+ykzxxOWexdsebTDsNQ9gVdYok3KGi1X3DkxMIJcMJE3ixywcEVIQQnEoz4BKEUBa3GthDwKEOMmxKY6MJbDW70Sly445zIhqnZOxj9WPeJ9z49uTX3rXbB40UnURs2oU1LT4PjhiZTcL9mrTXpxxJta43Zb4WU7oYdYSovTKWzw8xQebTvE31bFuOcj2fDDiZ9sfgfl/13owXt3aMURvO3HpZc0tqJrhMIshRKTiOwEBACEqOPyaNp2Tqp1RkfLEEYPyX9HB5d5avO3GKAosfOceJULlhZMeiQeX5pEOxPmtFJffZy3hHnaqnaGuNE3VxtMoIUZ643y0kLPS8Ry5Q==
X-Forefront-Antispam-Report:
	CIP:4.158.2.129;CTRY:GB;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:outbound-uk1.az.dlp.m.darktrace.com;PTR:InfoDomainNonexistent;CAT:NONE;SFS:(13230040)(35042699022)(1800799024)(36860700016)(376014)(14060799003)(82310400026)(18002099003)(56012099003)(22082099003);DIR:OUT;SFP:1101;
X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1
X-MS-Exchange-AntiSpam-MessageData-0:
	EtQZSC0QlYgsiqTHPwSjzg7xutrxjk+M0FSOCYcFOknMtTnFgDkH0O99umsOQwX4C23DgkZqYFWVmexIaPonL1ThT3b/+Vj6nbNlAFKt9Y4hPcti/w2rNH/LGb++nuIG82lZEenhk+SX1Q7hIZcWoo0xEM/vH/PTgqsgtOwSESd4wkqIvMHyeh6NygibcRji6crPnp9rg2Yj/T7xZIqRWnIIoIaaTHWEesOh8EU1+OoX3hTjvMjCfsNL3Qjh30BMPpcBekNz2o/FLnfgeZsPgebmgZRS3YCqj04f+GuhF7iRNEzgiOKkg1onHhK80BJ7nOizDJyvC10zRHrh0ek7V+rK9vcb366pPoCfoC2nb6+3CBK/nnyYgzDXuo6fKexlAmLcmIeD/7aYry6WTpwf58qzZ+nlK9hlW+o6nYcytXPPsypMTv/O904pr3+8DhYI
X-OriginatorOrg: arm.com
X-MS-Exchange-CrossTenant-OriginalArrivalTime: 13 Apr 2026 08:49:15.1113
 (UTC)
X-MS-Exchange-CrossTenant-Network-Message-Id: 0afde00e-f4c3-4fa3-9e8a-08de99398ab0
X-MS-Exchange-CrossTenant-Id: f34e5979-57d9-4aaa-ad4d-b122a662184d
X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=f34e5979-57d9-4aaa-ad4d-b122a662184d;Ip=[4.158.2.129];Helo=[outbound-uk1.az.dlp.m.darktrace.com]
X-MS-Exchange-CrossTenant-AuthSource:
	AM4PEPF00027A5F.eurprd04.prod.outlook.com
X-MS-Exchange-CrossTenant-AuthAs: Anonymous
X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem
X-MS-Exchange-Transport-CrossTenantHeadersStamped: AS8PR08MB7719
X-purgate-ID: tlsNG-ebf023/1776070157-3172251B-B31996AF/0/0
X-purgate-type: clean
X-purgate-size: 8126

SGkgTWlsYW4sDQoNCj4gT24gMzEgTWFyIDIwMjYsIGF0IDAyOjUyLCBNaWxhbiBEam9raWMgPG1p
bGFuX2Rqb2tpY0BlcGFtLmNvbT4gd3JvdGU6DQo+IA0KPiBGcm9tOiBSYWh1bCBTaW5naCA8cmFo
dWwuc2luZ2hAYXJtLmNvbT4NCj4gDQo+IEFkZCBzdXBwb3J0IGZvciB2aXJ0dWFsIGNtZHF1ZXVl
IGhhbmRsaW5nIGZvciBndWVzdHMNCj4gDQo+IFNpZ25lZC1vZmYtYnk6IFJhaHVsIFNpbmdoIDxy
YWh1bC5zaW5naEBhcm0uY29tPg0KPiBTaWduZWQtb2ZmLWJ5OiBNaWxhbiBEam9raWMgPG1pbGFu
X2Rqb2tpY0BlcGFtLmNvbT4NCj4gLS0tDQo+IHhlbi9kcml2ZXJzL3Bhc3N0aHJvdWdoL2FybS92
c21tdS12My5jIHwgMTAxICsrKysrKysrKysrKysrKysrKysrKysrKysNCj4gMSBmaWxlIGNoYW5n
ZWQsIDEwMSBpbnNlcnRpb25zKCspDQo+IA0KPiBkaWZmIC0tZ2l0IGEveGVuL2RyaXZlcnMvcGFz
c3Rocm91Z2gvYXJtL3ZzbW11LXYzLmMgYi94ZW4vZHJpdmVycy9wYXNzdGhyb3VnaC9hcm0vdnNt
bXUtdjMuYw0KPiBpbmRleCAzYWUxZTYyYTUwLi4wMmZlNmE0NDIyIDEwMDY0NA0KPiAtLS0gYS94
ZW4vZHJpdmVycy9wYXNzdGhyb3VnaC9hcm0vdnNtbXUtdjMuYw0KPiArKysgYi94ZW4vZHJpdmVy
cy9wYXNzdGhyb3VnaC9hcm0vdnNtbXUtdjMuYw0KPiBAQCAtMSw1ICsxLDYgQEANCj4gLyogU1BE
WC1MaWNlbnNlLUlkZW50aWZpZXI6IChHUEwtMi4wLW9yLWxhdGVyIE9SIEJTRC0yLUNsYXVzZSkg
Ki8NCj4gDQo+ICsjaW5jbHVkZSA8eGVuL2d1ZXN0X2FjY2Vzcy5oPg0KPiAjaW5jbHVkZSA8eGVu
L3BhcmFtLmg+DQo+ICNpbmNsdWRlIDx4ZW4vc2NoZWQuaD4NCj4gI2luY2x1ZGUgPGFzbS9tbWlv
Lmg+DQo+IEBAIC0yNSw2ICsyNiwyNiBAQA0KPiAvKiBTdHJ1Y3QgdG8gaG9sZCB0aGUgdklPTU1V
IG9wcyBhbmQgdklPTU1VIHR5cGUgKi8NCj4gZXh0ZXJuIGNvbnN0IHN0cnVjdCB2aW9tbXVfZGVz
YyBfX3JlYWRfbW9zdGx5ICpjdXJfdmlvbW11Ow0KPiANCj4gKy8qIFNNTVV2MyBjb21tYW5kIGRl
ZmluaXRpb25zICovDQo+ICsjZGVmaW5lIENNRFFfT1BfUFJFRkVUQ0hfQ0ZHICAgIDB4MQ0KPiAr
I2RlZmluZSBDTURRX09QX0NGR0lfU1RFICAgICAgICAweDMNCj4gKyNkZWZpbmUgQ01EUV9PUF9D
RkdJX0FMTCAgICAgICAgMHg0DQo+ICsjZGVmaW5lIENNRFFfT1BfQ0ZHSV9DRCAgICAgICAgIDB4
NQ0KPiArI2RlZmluZSBDTURRX09QX0NGR0lfQ0RfQUxMICAgICAweDYNCj4gKyNkZWZpbmUgQ01E
UV9PUF9UTEJJX05IX0FTSUQgICAgMHgxMQ0KPiArI2RlZmluZSBDTURRX09QX1RMQklfTkhfVkEg
ICAgICAweDEyDQo+ICsjZGVmaW5lIENNRFFfT1BfVExCSV9OU05IX0FMTCAgIDB4MzANCj4gKyNk
ZWZpbmUgQ01EUV9PUF9DTURfU1lOQyAgICAgICAgMHg0Ng0KPiArDQo+ICsvKiBRdWV1ZSBIYW5k
bGluZyAqLw0KPiArI2RlZmluZSBRX0JBU0UocSkgICAgICAgKChxKS0+cV9iYXNlICYgUV9CQVNF
X0FERFJfTUFTSykNCj4gKyNkZWZpbmUgUV9DT05TX0VOVChxKSAgIChRX0JBU0UocSkgKyBRX0lE
WChxLCAocSktPmNvbnMpICogKHEpLT5lbnRfc2l6ZSkNCj4gKyNkZWZpbmUgUV9QUk9EX0VOVChx
KSAgIChRX0JBU0UocSkgKyBRX0lEWChxLCAocSktPnByb2QpICogKHEpLT5lbnRfc2l6ZSkNCj4g
Kw0KPiArLyogSGVscGVyIE1hY3JvcyAqLw0KPiArI2RlZmluZSBzbW11X2dldF9jbWRxX2VuYWJs
ZWQoeCkgICAgRklFTERfR0VUKENSMF9DTURRRU4sIHgpDQo+ICsjZGVmaW5lIHNtbXVfY21kX2dl
dF9jb21tYW5kKHgpICAgICBGSUVMRF9HRVQoQ01EUV8wX09QLCB4KQ0KPiArDQo+IC8qIHZpcnR1
YWwgc21tdSBxdWV1ZSAqLw0KPiBzdHJ1Y3QgYXJtX3ZzbW11X3F1ZXVlIHsNCj4gICAgIHVpbnQ2
NF90ICAgIHFfYmFzZTsgLyogYmFzZSByZWdpc3RlciAqLw0KPiBAQCAtNDksOCArNzAsODAgQEAg
c3RydWN0IHZpcnRfc21tdSB7DQo+ICAgICB1aW50NjRfdCAgICBnZXJyb3JfaXJxX2NmZzA7DQo+
ICAgICB1aW50NjRfdCAgICBldnRxX2lycV9jZmcwOw0KPiAgICAgc3RydWN0ICAgICAgYXJtX3Zz
bW11X3F1ZXVlIGV2dHEsIGNtZHE7DQo+ICsgICAgc3BpbmxvY2tfdCAgY21kX3F1ZXVlX2xvY2s7
DQo+IH07DQo+IA0KPiArLyogUXVldWUgbWFuaXB1bGF0aW9uIGZ1bmN0aW9ucyAqLw0KPiArc3Rh
dGljIGJvb2wgcXVldWVfZW1wdHkoc3RydWN0IGFybV92c21tdV9xdWV1ZSAqcSkNCj4gK3sNCj4g
KyAgICByZXR1cm4gUV9JRFgocSwgcS0+cHJvZCkgPT0gUV9JRFgocSwgcS0+Y29ucykgJiYNCj4g
KyAgICAgICAgICAgUV9XUlAocSwgcS0+cHJvZCkgPT0gUV9XUlAocSwgcS0+Y29ucyk7DQo+ICt9
DQo+ICsNCj4gK3N0YXRpYyB2b2lkIHF1ZXVlX2luY19jb25zKHN0cnVjdCBhcm1fdnNtbXVfcXVl
dWUgKnEpDQo+ICt7DQo+ICsgICAgdWludDMyX3QgY29ucyA9IChRX1dSUChxLCBxLT5jb25zKSB8
IFFfSURYKHEsIHEtPmNvbnMpKSArIDE7DQo+ICsgICAgcS0+Y29ucyA9IFFfT1ZGKHEtPmNvbnMp
IHwgUV9XUlAocSwgY29ucykgfCBRX0lEWChxLCBjb25zKTsNCj4gK30NCj4gKw0KPiArc3RhdGlj
IHZvaWQgZHVtcF9zbW11X2NvbW1hbmQodWludDY0X3QgKmNvbW1hbmQpDQo+ICt7DQo+ICsgICAg
Z2RwcmludGsoWEVOTE9HX0VSUiwgImNtZCAweCUwMmxseDogJTAxNmx4ICUwMTZseFxuIiwNCg0K
SSB0aGluayB1c2luZyBQUkl4NjQgaXMgcHJlZmVycmVkDQoNCj4gKyAgICAgICAgICAgICBzbW11
X2NtZF9nZXRfY29tbWFuZChjb21tYW5kWzBdKSwgY29tbWFuZFswXSwgY29tbWFuZFsxXSk7DQo+
ICt9DQo+ICtzdGF0aWMgaW50IGFybV92c21tdV9oYW5kbGVfY21kcyhzdHJ1Y3QgdmlydF9zbW11
ICpzbW11KQ0KPiArew0KPiArICAgIHN0cnVjdCBhcm1fdnNtbXVfcXVldWUgKnEgPSAmc21tdS0+
Y21kcTsNCj4gKyAgICBzdHJ1Y3QgZG9tYWluICpkID0gc21tdS0+ZDsNCj4gKyAgICB1aW50NjRf
dCBjb21tYW5kW0NNRFFfRU5UX0RXT1JEU107DQo+ICsgICAgcGFkZHJfdCBhZGRyOw0KDQpjYW4g
d2UgZGVjbGFyZSDigJhpbnQgcmV0ID0gMDvigJkgaGVyZSBhbmQgLi4uDQoNCj4gKw0KPiArICAg
IGlmICggIXNtbXVfZ2V0X2NtZHFfZW5hYmxlZChzbW11LT5jclswXSkgKQ0KPiArICAgICAgICBy
ZXR1cm4gMDsNCj4gKw0KPiArICAgIHdoaWxlICggIXF1ZXVlX2VtcHR5KHEpICkNCj4gKyAgICB7
DQo+ICsgICAgICAgIGludCByZXQ7DQoNCnJlbW92ZSB0aGlzDQoNCj4gKw0KPiArICAgICAgICBh
ZGRyID0gUV9DT05TX0VOVChxKTsNCj4gKyAgICAgICAgcmV0ID0gYWNjZXNzX2d1ZXN0X21lbW9y
eV9ieV9ncGEoZCwgYWRkciwgY29tbWFuZCwNCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgc2l6ZW9mKGNvbW1hbmQpLCBmYWxzZSk7DQo+ICsgICAgICAgIGlmICgg
cmV0ICkNCj4gKyAgICAgICAgICAgIHJldHVybiByZXQ7DQoNCkhlcmUgd2Ugc2hvdWxkIGF0IGxl
YXN0IGhhdmUgcXVldWVfaW5jX2NvbnMocSk7IGJlZm9yZSByZXR1cm5pbmcsIHNpbmNlDQpvdGhl
cndpc2Ugd2Ugd2lsbCBpbmRlZmluaXRlbHkgZXhlY3V0ZSBvbiB0aGUgc2FtZSBlbGVtZW50Lg0K
DQo+ICsNCj4gKyAgICAgICAgc3dpdGNoICggc21tdV9jbWRfZ2V0X2NvbW1hbmQoY29tbWFuZFsw
XSkgKQ0KPiArICAgICAgICB7DQo+ICsgICAgICAgIGNhc2UgQ01EUV9PUF9DRkdJX1NURToNCj4g
KyAgICAgICAgICAgIGJyZWFrOw0KPiArICAgICAgICBjYXNlIENNRFFfT1BfUFJFRkVUQ0hfQ0ZH
Og0KPiArICAgICAgICBjYXNlIENNRFFfT1BfQ0ZHSV9DRDoNCj4gKyAgICAgICAgY2FzZSBDTURR
X09QX0NGR0lfQ0RfQUxMOg0KPiArICAgICAgICBjYXNlIENNRFFfT1BfQ0ZHSV9BTEw6DQo+ICsg
ICAgICAgIGNhc2UgQ01EUV9PUF9DTURfU1lOQzoNCj4gKyAgICAgICAgICAgIGJyZWFrOw0KPiAr
ICAgICAgICBjYXNlIENNRFFfT1BfVExCSV9OSF9BU0lEOg0KPiArICAgICAgICBjYXNlIENNRFFf
T1BfVExCSV9OU05IX0FMTDoNCj4gKyAgICAgICAgY2FzZSBDTURRX09QX1RMQklfTkhfVkE6DQo+
ICsgICAgICAgICAgICBpZiAoICFpb21tdV9pb3RsYl9mbHVzaF9hbGwoc21tdS0+ZCwgMSkgKQ0K
PiArICAgICAgICAgICAgICAgIGJyZWFrOw0KDQpyZXQgPSBpb21tdV9pb3RsYl9mbHVzaF9hbGwo
c21tdS0+ZCwgMSk7DQppZiAoICFyZXQgKQ0KICAgIGJyZWFrOw0KDQo+ICsgICAgICAgIGRlZmF1
bHQ6DQo+ICsgICAgICAgICAgICBnZHByaW50ayhYRU5MT0dfRVJSLCAidlNNTVV2MzogdW5oYW5k
bGVkIGNvbW1hbmRcbiIpOw0KPiArICAgICAgICAgICAgZHVtcF9zbW11X2NvbW1hbmQoY29tbWFu
ZCk7DQo+ICsgICAgICAgICAgICBicmVhazsNCj4gKyAgICAgICAgfQ0KPiArDQo+ICsgICAgICAg
IGlmICggcmV0ICkNCj4gKyAgICAgICAgew0KPiArICAgICAgICAgICAgZ2RwcmludGsoWEVOTE9H
X0VSUiwNCj4gKyAgICAgICAgICAgICAgICAgICAgICJ2U01NVXYzOiBjb21tYW5kIGVycm9yICVk
IHdoaWxlIGhhbmRsaW5nIGNvbW1hbmRcbiIsDQo+ICsgICAgICAgICAgICAgICAgICAgICByZXQp
Ow0KPiArICAgICAgICAgICAgZHVtcF9zbW11X2NvbW1hbmQoY29tbWFuZCk7DQo+ICsgICAgICAg
IH0NCj4gKyAgICAgICAgcXVldWVfaW5jX2NvbnMocSk7DQo+ICsgICAgfQ0KPiArICAgIHJldHVy
biAwOw0KDQpyZXR1cm4gcmV0Ow0KDQpJbiB0aGlzIHdheSB3ZSBkb27igJl0IHN1cHByZXNzIHRo
ZSBpb3RibCBlcnJvciBidXQgd2UgcHJvcGFnYXRlIHRvIHRoZSBjYWxsZXIuDQoNCj4gK30NCj4g
Kw0KPiBzdGF0aWMgaW50IHZzbW11djNfbW1pb193cml0ZShzdHJ1Y3QgdmNwdSAqdiwgbW1pb19p
bmZvX3QgKmluZm8sDQo+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlZ2lzdGVyX3Qg
ciwgdm9pZCAqcHJpdikNCj4gew0KPiBAQCAtMTA0LDkgKzE5NywxNSBAQCBzdGF0aWMgaW50IHZz
bW11djNfbW1pb193cml0ZShzdHJ1Y3QgdmNwdSAqdiwgbW1pb19pbmZvX3QgKmluZm8sDQo+ICAg
ICAgICAgYnJlYWs7DQo+IA0KPiAgICAgY2FzZSBWUkVHMzIoQVJNX1NNTVVfQ01EUV9QUk9EKToN
Cj4gKyAgICAgICAgc3Bpbl9sb2NrKCZzbW11LT5jbWRfcXVldWVfbG9jayk7DQo+ICAgICAgICAg
cmVnMzIgPSBzbW11LT5jbWRxLnByb2Q7DQo+ICAgICAgICAgdnJlZ19yZWczMl91cGRhdGUoJnJl
ZzMyLCByLCBpbmZvKTsNCj4gICAgICAgICBzbW11LT5jbWRxLnByb2QgPSByZWczMjsNCj4gKw0K
PiArICAgICAgICBpZiAoIGFybV92c21tdV9oYW5kbGVfY21kcyhzbW11KSApDQo+ICsgICAgICAg
ICAgICBnZHByaW50ayhYRU5MT0dfRVJSLCAiZXJyb3IgaGFuZGxpbmcgdlNNTVV2MyBjb21tYW5k
c1xuIik7DQo+ICsNCj4gKyAgICAgICAgc3Bpbl91bmxvY2soJnNtbXUtPmNtZF9xdWV1ZV9sb2Nr
KTsNCj4gICAgICAgICBicmVhazsNCj4gDQo+ICAgICBjYXNlIFZSRUczMihBUk1fU01NVV9DTURR
X0NPTlMpOg0KPiBAQCAtMzI2LDYgKzQyNSw4IEBAIHN0YXRpYyBpbnQgdnNtbXV2M19pbml0X3Np
bmdsZShzdHJ1Y3QgZG9tYWluICpkLCBwYWRkcl90IGFkZHIsIHBhZGRyX3Qgc2l6ZSkNCj4gICAg
IHNtbXUtPmV2dHEucV9iYXNlID0gRklFTERfUFJFUChRX0JBU0VfTE9HMlNJWkUsIFNNTVVfRVZU
UVMpOw0KPiAgICAgc21tdS0+ZXZ0cS5lbnRfc2l6ZSA9IEVWVFFfRU5UX0RXT1JEUyAqIERXT1JE
U19CWVRFUzsNCj4gDQo+ICsgICAgc3Bpbl9sb2NrX2luaXQoJnNtbXUtPmNtZF9xdWV1ZV9sb2Nr
KTsNCj4gKw0KPiAgICAgcmVnaXN0ZXJfbW1pb19oYW5kbGVyKGQsICZ2c21tdXYzX21taW9faGFu
ZGxlciwgYWRkciwgc2l6ZSwgc21tdSk7DQo+IA0KPiAgICAgLyogUmVnaXN0ZXIgdGhlIHZJT01N
VSB0byBiZSBhYmxlIHRvIGNsZWFuIGl0IHVwIGxhdGVyLiAqLw0KPiANCg0KQ2hlZXJzLA0KTHVj
YQ0KDQoNCg==


From xen-devel-bounces@lists.xenproject.org Mon Apr 13 09:28:59 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 13 Apr 2026 09:28:59 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1280971.1564042 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wCDb8-0004WF-9F; Mon, 13 Apr 2026 09:28:50 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1280971.1564042; Mon, 13 Apr 2026 09:28: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 1wCDb8-0004W8-5X; Mon, 13 Apr 2026 09:28:50 +0000
Received: by outflank-mailman (input) for mailman id 1280971;
 Mon, 13 Apr 2026 09:28:48 +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 1wCDb5-0004W2-U7
 for xen-devel@lists.xenproject.org; Mon, 13 Apr 2026 09:28:48 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wCDb5-001hd1-6A
 for xen-devel@lists.xenproject.org; Mon, 13 Apr 2026 11:28:47 +0200
Received: from [10.42.69.5] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <Michal.Orzel@amd.com>)
 id 69dcb74e-5cb7-0a2a0a5109dd-0a2a4505a474-0
 for <xen-devel@lists.xenproject.org>; Mon, 13 Apr 2026 11:28:46 +0200
Received: from [40.107.200.42]
 (helo=CH5PR02CU005.outbound.protection.outlook.com)
 by tlsNG-c201ff.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.0)
 (envelope-from <Michal.Orzel@amd.com>)
 id 69dcb74d-3760-0a2a45050019-286bc82ab93e-3
 for <xen-devel@lists.xenproject.org>; Mon, 13 Apr 2026 11:28:46 +0200
Received: from PH7PR17CA0016.namprd17.prod.outlook.com (2603:10b6:510:324::19)
 by CH0PR12MB8552.namprd12.prod.outlook.com (2603:10b6:610:18e::9)
 with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9818.17; Mon, 13 Apr
 2026 09:28:40 +0000
Received: from CY4PEPF0000E9D3.namprd03.prod.outlook.com
 (2603:10b6:510:324:cafe::36) by PH7PR17CA0016.outlook.office365.com
 (2603:10b6:510:324::19) with Microsoft SMTP Server (version=TLS1_3,
 cipher=TLS_AES_256_GCM_SHA384) id 15.20.9769.48 via Frontend Transport; Mon,
 13 Apr 2026 09:28:40 +0000
Received: from satlexmb07.amd.com (165.204.84.17) by
 CY4PEPF0000E9D3.mail.protection.outlook.com (10.167.241.138) with Microsoft
 SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id
 15.20.9769.17 via Frontend Transport; Mon, 13 Apr 2026 09:28:39 +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.17; Mon, 13 Apr
 2026 04:28:38 -0500
Received: from [10.252.147.171] (10.180.168.240) by satlexmb08.amd.com
 (10.181.42.217) with Microsoft SMTP Server id 15.2.2562.17 via Frontend
 Transport; Mon, 13 Apr 2026 04:28:37 -0500
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@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=o33ikn9K0N++3sd/4gZcJlSG+FgIe+4grtWp3idkhgWNxVSvJVQU8Q9+t7eUf79y3BAYYvoQ74JEopMSK+eTqRj3NkLnNnfki5yGekOfMYxND3gJO4E92T76IywD31ehB8fgTNCT+k7JhY3xRSyWoSkdiGmjsFCXnw8g0RE4UZb5GS05YEUZhezy+gpYhxU44DlJGI9yAP89YK1n0gvx+Yyt7J/gx6YwWJfFT+MWeBmbhUfTlAlmc9Zj128LHSdEVz9KVH3mfs0kadZhzWnFdrqTmkFvNMYsRO2fFB2de/Qn/3zDYupEh4/yTQNXLcxJBAhMcFVWvmb0EPo6Jqzsug==
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com;
 s=arcselector10001;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1;
 bh=oDc4jlx/byKWJZIdOHsPmUYlHd6aYeOMBI//7TUKHho=;
 b=Vdgg8neBD6ABxp2u703QMkl7iYDW280ZHxsNAbuXiI5QMkrOXL2rf83xX3CP6S2e2w63cP5bk4VN0Ui42IBpmhPW6asv5fMPI409Gdw+i/K2Qs6pNWr8+Lc8BT+a9fqT8XMYyAOJx9zeDQiISyeFgDYKFFTC/+F81eMHpexF9fzgwHrGoYlkZgpEzXg9CVUGnafO2BjhYsQSe1imTFGIXB/tIkCTgJyceoUC2GZ8v1breCnhxwCGMz5QEqIVLkdf4GRdUXgQD/p1D6kwVZYz/J0S58lnBqwudLEITq8nA2YRt1CAn/AC6oFYX5mqUgku+JIFR3O1Hg1vbIWIjWjHxQ==
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=oDc4jlx/byKWJZIdOHsPmUYlHd6aYeOMBI//7TUKHho=;
 b=SappMDnzg3VDOWsirSnEghBMzgCClHp29eV0PqenPVKs/oORDTbbnvX69NZk2yC1iXPkU697ivw9toOk7V+9wvFWolai4cAdktE2PWKaQj+2JrVfFZhKf2k/7QMdhntwYJ+GqdDRcj2N2Mpv1f5mWG/+XoehpHTNTQpKHuhFq14=
X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 165.204.84.17)
 smtp.mailfrom=amd.com; dkim=none (message not signed)
 header.d=none;dmarc=pass action=none header.from=amd.com;
Received-SPF: Pass (protection.outlook.com: domain of amd.com designates
 165.204.84.17 as permitted sender) receiver=protection.outlook.com;
 client-ip=165.204.84.17; helo=satlexmb07.amd.com; pr=C
Message-ID: <9cd3e2f1-1b6f-4946-86c2-ff72f34ba138@amd.com>
Date: Mon, 13 Apr 2026 11:28:31 +0200
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH v2] arm/gicv3: Decode cacheability fields before comparing
To: Mykola Kvach <xakep.amatop@gmail.com>, <xen-devel@lists.xenproject.org>
CC: Mykola Kvach <mykola_kvach@epam.com>, Stefano Stabellini
	<sstabellini@kernel.org>, Julien Grall <julien@xen.org>, Bertrand Marquis
	<bertrand.marquis@arm.com>, Volodymyr Babchuk <Volodymyr_Babchuk@epam.com>,
	Mykyta Poturai <mykyta_poturai@epam.com>
References: <7c20230fcd388ebe398ce19a21a1cd3c2c73d5fa.1775839987.git.mykola_kvach@epam.com>
From: "Orzel, Michal" <michal.orzel@amd.com>
Content-Language: en-US
In-Reply-To: <7c20230fcd388ebe398ce19a21a1cd3c2c73d5fa.1775839987.git.mykola_kvach@epam.com>
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: 7bit
X-EOPAttributedMessage: 0
X-MS-PublicTrafficType: Email
X-MS-TrafficTypeDiagnostic: CY4PEPF0000E9D3:EE_|CH0PR12MB8552:EE_
X-MS-Office365-Filtering-Correlation-Id: 934dee65-422f-4468-c043-08de993f0c38
X-MS-Exchange-SenderADCheck: 1
X-MS-Exchange-AntiSpam-Relay: 0
X-Microsoft-Antispam:
	BCL:0;ARA:13230040|82310400026|36860700016|376014|1800799024|18002099003|22082099003|56012099003;
X-Microsoft-Antispam-Message-Info:
	MdgfiyzxC4g5YbpD6DRIvXmzkORas7Xv0BgLNdKIH7N6E3cKdrOhyCnUwTF3rvYR5it1+h2sp1kt5Qhy6g5VfMPj498y0X9LS9rzPYba5qVlnB4mWVg69P0XGIQq2mIJ3Khb2+dO9KGea4iySU6KstHgv1L7h9AyE9QLdUmfWNVYrtQJamp66hr1Wv40ZyTEhyW0l26Mkh9QxxUs4O+ARLQX7vGO3wYvSJdNYOCDXvddBD1t39MNGOzkC6Cs8RpJrnZUsJ8B2e0nqa0dsQwz/Qh2WvB1UB0L8Dsx2XDKdRXV/HlODEPC/gnRpGNUi1yShdsf4vnL+7dFxh5aQp6XXB/J+wfoJ8kbwbFbApiDZMpwGuVnBQdgPXtglCVOvxVaajjJjR1Z4vWpWSdOV0HfwBHvLpAvVNBEpTTcfydtNmMnG10rwRhMEtlZuimotdcGjiIOo6y0GyqOBS7tuE9SqmMKVQ3El/yxPInaEmiomeL99raZ55AgUTKgYriDFw4ycOkaPOTI2e43M1GIjsxCsUb/eL865QKLeWn6e2RbtdIVll/l5oBmXamEKHuWax5s25f0u2qhj7Eo73bGSJzApCgxW29JjSwSXCYWhrwp5Dtizk3K4q8J3WzhfFQn3KQUAKUQ48suV4WkY/tN3eNVZdd6NmKZBbUD2mqTnrvg/RNL1wgXUFbFX+DL7iSzPilmD5nzLNOLu99M1NEC4qrlH1Svg+pVQZPeiR8lrB+IobccHytfYtbLsHJGYhmEihVG97y4JqVCG8SAStV3tzPIMA==
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)(376014)(1800799024)(18002099003)(22082099003)(56012099003);DIR:OUT;SFP:1101;
X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1
X-MS-Exchange-AntiSpam-MessageData-0:
	cotAGUNJafk1rHFX2e+If0Sejl7Eg7cwoCJT0fgCxSJ9D3byp1Ld290NtKbsoz32IhhN0A9pGMpi1LoKbLJq8UI15rWEVsppZCdRmIW15zDUQNsSDzn91uMDC0PUk1eAXhuu6K5qRRyrQ2VGpk+Goiq4iKM7VYwt7wa/Lvhs5/oQy9lQptzExpMxXAqep3iLpq5h0V+AKQp/8Mb+6XLguBgFlnN/UX28W79RQhBnBFpr2IJPqp6hHtu9BnaE39TWA/DuhUUueC7HN3eZsExEP090QEIN+frKCzH23mDvPNYFex7thU5nKTwLYPFEuoZ4uX3fXSw84ETxFspVCyN/y5g/uFQpoqVjCDYPfMXeFu+fxUmj9dMDLKSBfyY5/puPofpgXhnAiHidSBfMCliTckuuDgtYJJCSi/fLFtGTyi4/4KRxey08Ah1eMC0LWVEw
X-OriginatorOrg: amd.com
X-MS-Exchange-CrossTenant-OriginalArrivalTime: 13 Apr 2026 09:28:39.9337
 (UTC)
X-MS-Exchange-CrossTenant-Network-Message-Id: 934dee65-422f-4468-c043-08de993f0c38
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:
	CY4PEPF0000E9D3.namprd03.prod.outlook.com
X-MS-Exchange-CrossTenant-AuthAs: Anonymous
X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem
X-MS-Exchange-Transport-CrossTenantHeadersStamped: CH0PR12MB8552
X-purgate-ID: tlsNG-c201ff/1776072526-3093196F-7FF54ED5/0/0
X-purgate-type: clean
X-purgate-size: 3521



On 10/04/2026 19:34, Mykola Kvach wrote:
> From: Mykola Kvach <mykola_kvach@epam.com>
> 
> GITS_BASER_INNER_CACHEABILITY_MASK and
> GICR_PROPBASER_INNER_CACHEABILITY_MASK are shifted masks. Comparing the
> masked but unshifted values against GIC_BASER_CACHE_nC, which is an
> unshifted enum value, leads to incorrect detection of non-cacheable
> GITS_CBASER command queue, GITS_BASER tables, and GICR_PROPBASER
> mappings.
> 
> Use MASK_EXTR() to decode these cacheability fields before comparing
> against GIC_BASER_CACHE_nC, so the backing memory is flushed when
> required.
> 
> Fixes: 8ed8d21373be ("ARM: GICv3 ITS: map ITS command buffer")
> Fixes: 05238012b86d ("ARM: GICv3 ITS: allocate device and collection table")
> Fixes: c9b939863c89 ("ARM: GICv3: allocate LPI pending and property table")
> Signed-off-by: Mykyta Poturai <mykyta_poturai@epam.com>
> Signed-off-by: Mykola Kvach <mykola_kvach@epam.com>
> ---
> Changes in v2:
> - use MASK_EXTR() instead of open-coding the BASER field shift
> - fix the analogous PROPBASER cacheability comparison in
>   gicv3_lpi_set_proptable()
> - fix the CBASER command queue cacheability check as well
> ---
>  xen/arch/arm/gic-v3-its.c | 6 ++++--
>  xen/arch/arm/gic-v3-lpi.c | 3 ++-
>  2 files changed, 6 insertions(+), 3 deletions(-)
> 
> diff --git a/xen/arch/arm/gic-v3-its.c b/xen/arch/arm/gic-v3-its.c
> index 9ba068c46f..e87465d2ff 100644
> --- a/xen/arch/arm/gic-v3-its.c
> +++ b/xen/arch/arm/gic-v3-its.c
> @@ -424,7 +424,8 @@ static void *its_map_cbaser(struct host_its *its)
>       * If the command queue memory is mapped as uncached, we need to flush
>       * it on every access.
>       */
> -    if ( !(reg & GITS_BASER_INNER_CACHEABILITY_MASK) )
You don't seem to mention this change. This one does not compare to
GIC_BASER_CACHE_nC and checks against 0, which means we are on the safe side. If
you still want to change it, then you should also look few lines above where we
have:
if ( (reg & GITS_BASER_SHAREABILITY_MASK) == 0 )

> +    if ( MASK_EXTR(reg, GITS_BASER_INNER_CACHEABILITY_MASK) <=
> +         GIC_BASER_CACHE_nC )
This is a functional change. Previously we where comparing against 0 and now you
compare against <= 1

~Michal

>      {
>          its->flags |= HOST_ITS_FLUSH_CMD_QUEUE;
>          printk(XENLOG_WARNING "using non-cacheable ITS command queue\n");
> @@ -496,7 +497,8 @@ retry:
>          }
>          attr = regc & BASER_ATTR_MASK;
>      }
> -    if ( (regc & GITS_BASER_INNER_CACHEABILITY_MASK) <= GIC_BASER_CACHE_nC )
> +    if ( MASK_EXTR(regc, GITS_BASER_INNER_CACHEABILITY_MASK) <=
> +         GIC_BASER_CACHE_nC )
>          clean_and_invalidate_dcache_va_range(buffer, table_size);
>  
>      /* If the host accepted our page size, we are done. */
> diff --git a/xen/arch/arm/gic-v3-lpi.c b/xen/arch/arm/gic-v3-lpi.c
> index de5052e5cf..9ee338edc2 100644
> --- a/xen/arch/arm/gic-v3-lpi.c
> +++ b/xen/arch/arm/gic-v3-lpi.c
> @@ -351,7 +351,8 @@ static int gicv3_lpi_set_proptable(void __iomem * rdist_base)
>      }
>  
>      /* Remember that we have to flush the property table if non-cacheable. */
> -    if ( (reg & GICR_PROPBASER_INNER_CACHEABILITY_MASK) <= GIC_BASER_CACHE_nC )
> +    if ( MASK_EXTR(reg, GICR_PROPBASER_INNER_CACHEABILITY_MASK) <=
> +         GIC_BASER_CACHE_nC )
>      {
>          lpi_data.flags |= LPI_PROPTABLE_NEEDS_FLUSHING;
>          /* Update the redistributors knowledge about the attributes. */



From xen-devel-bounces@lists.xenproject.org Mon Apr 13 09:32:45 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 13 Apr 2026 09:32:45 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1280980.1564051 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wCDet-00061R-OD; Mon, 13 Apr 2026 09:32:43 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1280980.1564051; Mon, 13 Apr 2026 09:32: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 1wCDet-00061K-KU; Mon, 13 Apr 2026 09:32:43 +0000
Received: by outflank-mailman (input) for mailman id 1280980;
 Mon, 13 Apr 2026 09:32:42 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92) id 1wCDer-00061E-RM
 for xen-devel@lists.xenproject.org; Mon, 13 Apr 2026 09:32:41 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wCDer-00Bp7w-3c
 for xen-devel@lists.xenproject.org; Mon, 13 Apr 2026 11:32:41 +0200
Received: from [10.42.69.1] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <oleksii.kurochko@gmail.com>)
 id 69dcb834-5cb7-0a2a0a5109dd-0a2a4501df0a-42
 for <xen-devel@lists.xenproject.org>; Mon, 13 Apr 2026 11:32:41 +0200
Received: from [209.85.221.42] (helo=mail-wr1-f42.google.com)
 by tlsNG-d62444.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.0)
 (envelope-from <oleksii.kurochko@gmail.com>)
 id 69dcb838-6fc9-0a2a45010019-d155dd2aede8-3
 for <xen-devel@lists.xenproject.org>; Mon, 13 Apr 2026 11:32:41 +0200
Received: by mail-wr1-f42.google.com with SMTP id
 ffacd0b85a97d-43cff5dafc3so3002955f8f.1
 for <xen-devel@lists.xenproject.org>; Mon, 13 Apr 2026 02:32:41 -0700 (PDT)
Received: from [192.168.1.6] (user-109-243-69-121.play-internet.pl.
 [109.243.69.121]) by smtp.gmail.com with ESMTPSA id
 ffacd0b85a97d-43d7d5812dcsm1288164f8f.32.2026.04.13.02.32.39
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Mon, 13 Apr 2026 02:32:39 -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=20251104 header.d=gmail.com header.i="@gmail.com" header.h="Content-Transfer-Encoding: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=20251104; t=1776072760; x=1776677560; darn=lists.xenproject.org;
        h=content-transfer-encoding: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;
        bh=WM9Oad0qIAdleqbNNdl+nWlHcDIIi8dfYb6hLo725bA=;
        b=ksKN2nk9oJRcRC4I0pdHCkXUkv/0LfPSS+xbqG/Olewxv3P5F5WHz5o0TgRyF3wG+R
         pHC6OI6rgPQRTj83CIz0u6CxCY+1FvbkK9phwPC8PPPMm7xreMUgXm89oL4kymPsHH85
         VTh128bdv0gVEuGYbgONb93+XLwo7COHQn1C2MGKct5AvoakI9Ih/yu3twfViCjxRlrA
         rOLAsNz6xX9Gd397t9upQxsACWNqIMg7RjIcP6FXEDzrZ03j2LJyvaZx+fzE3jc3Pe39
         OPYTG9wS/7UiIiIsEgVT50CTtp5pqFvkb64DRfeIgLlkI/qlaBLhpkiGBP9AlqrapI92
         A/UQ==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20251104; t=1776072760; x=1776677560;
        h=content-transfer-encoding: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;
        bh=WM9Oad0qIAdleqbNNdl+nWlHcDIIi8dfYb6hLo725bA=;
        b=tIpMlcvdJr4VGFq2DC4Bky5hwoy424IviSmdwlB3pZGsyEjliupfJdCzSxvaPHA6HS
         yneRYaWBFx0y6VrAZ3UJRYEUmXyiVPAbfbDwOozztHPYQHy733zVX1550EUU7M9pTX4C
         x/xmGl+hcQ2SovNPDCsJz+S51t6pGii6PG0HJzIZ5Zd8Wq8hiOf4m1+TIA0RAGwMTeVN
         a8i1BC/alUcqIsQp4pwiARlKZWzshh1hK/wbcX35iN0wuWmKiatykQTNdmC3sewfisCt
         6f0XKHxZ3Dtzm+SDkQGtuuvddTfp+XTn8WQTnQ6z9lq7u5o44pVny6B4SNjU65Cus3Dp
         kl0g==
X-Forwarded-Encrypted: i=1; AFNElJ9HNA+gRmDDA43CFxLlOzlSyGOblnsLJ+cks6rlh1Z9Qs8iMfDCWfIiz93ZP7jpujlxcwTXny19T6w=@lists.xenproject.org
X-Gm-Message-State: AOJu0YwlHmeT14x5yX7YuYAAemgxAJeju2YOW3qLNWovUbCq6Ib8zzDy
	zJkQF/22Xl1vD1aj92GN4x3BBohJVASA5prVq4Ia0Djj0ZQm2TWzYXBv
X-Gm-Gg: AeBDies2BxoERyWIWKTIREpem/4M7pjbMkVK0EheuqbBqlSB+u763zqnrrnw4/tBZFC
	Kxyz5KVhv8byFS8Wneq+0A7Xf1qTiRbe8G3JWTUyRkgJKTEnh7YeUH3EqpefXywfGQVI1H/QSX6
	CA0rbM4aV8gIoirfEl5OsJFaNY9ac+GJfWprzhP87BcttHuY1EeL31c3Qu1Z3J0eQ/jx7YnuIZA
	M/qBlq4tLOGE4ScBGtLTTxxQIRkl4WkOoQbURxTAM1vpUfLA5TTPuJRJ4pn5LRIXo0rEhZHCfIl
	2OlLaciJ5oxN6J5PDLrfKBC7P0VacldPaGJi9VQHNOVgaKMk0K4TfCDYT3F+zsjPyQXH/xc8sSy
	zi8Sc2Dx/ORfM/nJmwX5IS2F5Q2xoFxwkHqIl2KobuPixwzAO4bQ8U4d6whCEUDL7xB8rZ1+udE
	VErDkru7oy36/Zes8OLYS53pPZa2pNuIRKXf6ODA20js+soJrl+95anCn41ncjLX6selU3WjhVU
	quKIY3jBh+9Zg==
X-Received: by 2002:a05:6000:2586:b0:43d:1c7a:8b59 with SMTP id ffacd0b85a97d-43d642ea4c9mr17877055f8f.40.1776072760286;
        Mon, 13 Apr 2026 02:32:40 -0700 (PDT)
Message-ID: <e1be0f4d-5090-4f2c-a05b-30b9ed6e1490@gmail.com>
Date: Mon, 13 Apr 2026 11:32:38 +0200
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH v1 12/27] xen/riscv: introduce aia_init() and
 aia_available()
To: Jan Beulich <jbeulich@suse.com>
Cc: Romain Caritey <Romain.Caritey@microchip.com>,
 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.pau@citrix.com>,
 Stefano Stabellini <sstabellini@kernel.org>, xen-devel@lists.xenproject.org
References: <cover.1773157782.git.oleksii.kurochko@gmail.com>
 <74f15b1db86139b36b721ef9d12b998fe4f0f348.1773157782.git.oleksii.kurochko@gmail.com>
 <8393b8fe-6ba9-439c-ae15-a84409d0976d@suse.com>
Content-Language: en-US
From: Oleksii Kurochko <oleksii.kurochko@gmail.com>
In-Reply-To: <8393b8fe-6ba9-439c-ae15-a84409d0976d@suse.com>
Content-Type: text/plain; charset=UTF-8; format=flowed
Content-Transfer-Encoding: 7bit
X-purgate-ID: tlsNG-d62444/1776072761-164F6185-0D05EFC0/10/73395122804
X-purgate-type: spam
X-purgate-size: 2823



On 4/2/26 11:00 AM, Jan Beulich wrote:
> On 10.03.2026 18:08, Oleksii Kurochko wrote:
>> aia_init() is going to contain all the stuff related to AIA initialization.
>> At the moment, it is just Check if SSAIA extension is available and if yes
>> set is_aia_available to true.
> 
> And (future) users of aia_available() can't directly call
> riscv_isa_extension_available()? Nor can aia_available() be a convenience
> wrapper around that call? It's only ...
> 
>> --- /dev/null
>> +++ b/xen/arch/riscv/aia.c
>> @@ -0,0 +1,25 @@
>> +/* SPDX-License-Identifier: GPL-2.0-only */
>> +
>> +#include <xen/errno.h>
>> +#include <xen/init.h>
>> +#include <xen/sections.h>
>> +#include <xen/types.h>
>> +
>> +#include <asm/cpufeature.h>
>> +
>> +static bool __ro_after_init is_aia_available;
> 
> ... a boolean, yes, but still.

My purpose was to have a variable which represent that AIA is 
initialized properly. Maybe, it makes sense to rename this variable to 
is_aia_inited.

The idea is that in future patches VGEIN will be also initialized in 
aia_init() and if wasn't initialized properly then just keep 
is_aia_availabe be set to false and in such case we will have that 
is_aia_available != riscv_isa_extension_available(NULL, 
RISCV_ISA_EXT_ssaia).

Note that regarding VGEIN it is arguable that it should be initialized 
as generally it could be that there is no VGEIN what means that h/w 
assisted guest interrupt files aren't available and s/w one should be 
used. But s/w guest interrupt files aren't supported.
So I mean that with the current implementation if VGEIN isn't 
initialized I will tell that AIA isn't available what generally isn't 
quite true.

> 
>> +bool aia_available(void)
>> +{
>> +    return is_aia_available;
>> +}
>> +
>> +int __init aia_init(void)
>> +{
>> +    if ( !riscv_isa_extension_available(NULL, RISCV_ISA_EXT_ssaia) )
>> +        return -ENODEV;
>> +
>> +    is_aia_available = true;
>> +
>> +    return 0;
>> +}
> 
> Why the return value, when ...
> 
>> --- a/xen/arch/riscv/intc.c
>> +++ b/xen/arch/riscv/intc.c
>> @@ -8,6 +8,7 @@
>>   #include <xen/lib.h>
>>   #include <xen/spinlock.h>
>>   
>> +#include <asm/aia.h>
>>   #include <asm/intc.h>
>>   
>>   static const struct intc_hw_operations *__ro_after_init intc_hw_ops;
>> @@ -27,6 +28,8 @@ void __init intc_preinit(void)
>>   
>>   void __init intc_init(void)
>>   {
>> +    aia_init();
> 
> ... the sole caller doesn't care?

Good point. I think it should return nothing as probably it is just 
another interrupt controller (PLIC) is going to be used.

Also, I thought if aia_init() should be called inside at the start of 
aplic_preinit(). It looks a little bit incorrect as APLIC is just a part 
of AIA spec...

Thanks.

~ Oleksii


From xen-devel-bounces@lists.xenproject.org Mon Apr 13 09:42:27 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 13 Apr 2026 09:42:27 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1280989.1564059 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wCDoE-0007ih-J4; Mon, 13 Apr 2026 09:42:22 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1280989.1564059; Mon, 13 Apr 2026 09:42: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 1wCDoE-0007ia-GE; Mon, 13 Apr 2026 09:42:22 +0000
Received: by outflank-mailman (input) for mailman id 1280989;
 Mon, 13 Apr 2026 09:42:22 +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 1wCDoD-0007iU-UR
 for xen-devel@lists.xenproject.org; Mon, 13 Apr 2026 09:42:22 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wCDoA-002JN6-T4
 for xen-devel@lists.xenproject.org; Mon, 13 Apr 2026 11:42:20 +0200
Received: from [10.42.69.2] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <Michal.Orzel@amd.com>)
 id 69dcba76-bab6-0a2a0a5309dd-0a2a4502d81c-18
 for <xen-devel@lists.xenproject.org>; Mon, 13 Apr 2026 11:42:20 +0200
Received: from [52.101.85.57]
 (helo=BYAPR05CU005.outbound.protection.outlook.com)
 by tlsNG-720697.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.0)
 (envelope-from <Michal.Orzel@amd.com>)
 id 69dcba78-42fa-0a2a45020019-346555392bd8-3
 for <xen-devel@lists.xenproject.org>; Mon, 13 Apr 2026 11:42:19 +0200
Received: from MN2PR10CA0023.namprd10.prod.outlook.com (2603:10b6:208:120::36)
 by CY8PR12MB7587.namprd12.prod.outlook.com (2603:10b6:930:9a::16)
 with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9818.18; Mon, 13 Apr
 2026 09:42:12 +0000
Received: from BN2PEPF000055DE.namprd21.prod.outlook.com
 (2603:10b6:208:120:cafe::c9) by MN2PR10CA0023.outlook.office365.com
 (2603:10b6:208:120::36) with Microsoft SMTP Server (version=TLS1_3,
 cipher=TLS_AES_256_GCM_SHA384) id 15.20.9769.47 via Frontend Transport; Mon,
 13 Apr 2026 09:42:11 +0000
Received: from satlexmb07.amd.com (165.204.84.17) by
 BN2PEPF000055DE.mail.protection.outlook.com (10.167.245.8) with Microsoft
 SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id
 15.20.9846.0 via Frontend Transport; Mon, 13 Apr 2026 09:42:11 +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.17; Mon, 13 Apr
 2026 04:42:10 -0500
Received: from [10.252.147.171] (10.180.168.240) by satlexmb07.amd.com
 (10.181.42.216) with Microsoft SMTP Server id 15.2.2562.17 via Frontend
 Transport; Mon, 13 Apr 2026 04:42:08 -0500
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@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=t9exD6eZ2uw+krt0YIaN856eXRMe6W44TaHu5kkk3GjrxtUeHrp/DkjHfn22jb1//162JkGgbOKf40sj2p0J42rqLdQiBxnILr5zO6KyYBFMzThTtWiNC9IPgtIoqt+PLh0dWhogG7HNMJL1pUeja4ICNXlrZ2twkdNlnuc5AJBP6gS89qfqR3zRuOM+mtA2lrdCrYIWGJXJNE5saFPxqgRDxC/sfNBlUy6MCQUgLQNyi2NPqUdW+ZyA2LbcZBj12uBV3cSnTwf+ztGesJj+fcgWD/LLwG1U1gSKLaQe68EiFnFtihaaqhpYERhEKFwtwqmvy6eMeFsGJrXdRxGzQQ==
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com;
 s=arcselector10001;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1;
 bh=nAUs4XlpWtrjUVRrotvwSiqcy8WNBd6Fmf93e1EHfsA=;
 b=yXgpUmflML60kIK30+2pMDhq517LT+Is6WLFXbfJ7OkSPiH8+ZiOgZDFvhx8xRFN6mOw/Xl83+ydfy3xTcPtomhHMvvE/cZtX68NlE19kKDn/V1jVp6A7dBws4Xx7goHi1yZ2ZQx29nIXtzNoaPctsMSi10BNV6Pk4uMIr0WrOxnwHkf/I/dVvFCNZofoNsoxoAtcUB5ibYzgb8EsQXPs9TfihQC/HlkQAp1SYoja834iLFd3BTYsdikviF03FYPGuYaZ7qt0jRgiVEP2ptlvyI0wDIMAYjTtCt0ZISDol+3x38VN+KmWBVjh8BoBK8xw318p8bXTT5LGEs51la/+w==
ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass (sender ip is
 165.204.84.17) smtp.rcpttodomain=arm.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=nAUs4XlpWtrjUVRrotvwSiqcy8WNBd6Fmf93e1EHfsA=;
 b=4kJ2hKg+mqKIKu4Sx8GhNYgKMAc5kWJG97p80ho/MapqtDNogNcArjrPfxFmmH7+e4dlzMNF4eDZkfWbVaB7vSzfIen8mSxtxkmGPE4AL8vG791Q1iKCqZOS8pLer7ydGwJaA/awjWWgQYHmmOp3J255L3mlWgKeLfSHeyZ6EP0=
X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 165.204.84.17)
 smtp.mailfrom=amd.com; dkim=none (message not signed)
 header.d=none;dmarc=pass action=none header.from=amd.com;
Received-SPF: Pass (protection.outlook.com: domain of amd.com designates
 165.204.84.17 as permitted sender) receiver=protection.outlook.com;
 client-ip=165.204.84.17; helo=satlexmb07.amd.com; pr=C
Message-ID: <43fd7fd7-43dc-4c17-8ff6-b58800fd5f46@amd.com>
Date: Mon, 13 Apr 2026 11:42:08 +0200
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH v3 1/3] arm/mpu: implement setup_virt_paging for MPU
 system
To: Luca Fancellu <luca.fancellu@arm.com>, <xen-devel@lists.xenproject.org>
CC: Penny Zheng <Penny.Zheng@arm.com>, Stefano Stabellini
	<sstabellini@kernel.org>, Julien Grall <julien@xen.org>, Bertrand Marquis
	<bertrand.marquis@arm.com>, Volodymyr Babchuk <Volodymyr_Babchuk@epam.com>,
	Wei Chen <wei.chen@arm.com>, Hari Limaye <hari.limaye@arm.com>, Harry Ramsey
	<harry.ramsey@arm.com>
References: <20260408135531.1744388-1-luca.fancellu@arm.com>
 <20260408135531.1744388-2-luca.fancellu@arm.com>
From: "Orzel, Michal" <michal.orzel@amd.com>
Content-Language: en-US
In-Reply-To: <20260408135531.1744388-2-luca.fancellu@arm.com>
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: 7bit
X-EOPAttributedMessage: 0
X-MS-PublicTrafficType: Email
X-MS-TrafficTypeDiagnostic: BN2PEPF000055DE:EE_|CY8PR12MB7587:EE_
X-MS-Office365-Filtering-Correlation-Id: 784e2231-9c7d-4e46-3ac3-08de9940efcf
X-MS-Exchange-SenderADCheck: 1
X-MS-Exchange-AntiSpam-Relay: 0
X-Microsoft-Antispam:
	BCL:0;ARA:13230040|82310400026|36860700016|7416014|376014|1800799024|18002099003|22082099003|56012099003;
X-Microsoft-Antispam-Message-Info:
	d59cfNUcW6Z8qWMzF/Hj5wvCZOYe/mfXDk4I102qo4yNRZt2XQ66zun9ioyaB8D+N824ZQookafuRqxfKvawQbP1snB9LARiebPKVsgzVBVsepSR7Le21wS+vDs6A1cl0rDMnuAChTkJ3cLFH92t2kDFtN5PHjqEDkb9FuU9XY4kE1e2mlVW5LUpTR4yb9kKhQEpwf7iuo4u8pCyR6itKnVu3rHkxkxI+aZ67hUpfqRMhFCXw4HAqOhmcHoEdiPiGn3bAXAYizQ1Y3kZkNGvkRzKyjA+RZzewTgCKQHpNs5NpDlukSKdYBehHcgMY7Cwjh327nc3gYJYlofLpiRAxFnslGlDT6HCap2ywL9swqYp15ioQmvqlbYbetE5aHBDQ4e96w9JQEB2SxeXh/Wuj+EeGxxvHjbnCuZ4lcTetWekElHUShb9V0fK0Efge60vofaeK/AHNk86jqk6J22CuduWfdkpxnUnGuIQ7hDwVk0AEkSAeE9XYSt9EHNv/APRRy+OiqdKonzGuo34dP4JDV0qjkLWl0fd/IhcLWO/ktRQJCMKVjq5x0QwBI64vf11uCr2zSo7WvUO/yQjfWqEXUG421cX6ynQ9yBUl5H8ADCrcXpAobRFu10eMmhpGLfoppO2IOiYnSJO6kqtLLgUpzBZ9caCZGv2OubqIsrwOLLk4gv2QeMBNoK0ijs2eSn4tkQS8AS49ePW/RxFFnvyRw+QTEA0BUJd70F2AediWc1qxmwnMcENbBo+Ftp5o3TW8X1pcGaPYg7DxT0jFGfwFA==
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)(7416014)(376014)(1800799024)(18002099003)(22082099003)(56012099003);DIR:OUT;SFP:1101;
X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1
X-MS-Exchange-AntiSpam-MessageData-0:
	YU4lJNFs88W/rGQqMzu5Le6WfPbF9BydeU83ygvZwrMCeZYfbiyBldsv/kdu1/+vk4bQHv/Pb5NByUCxujhkyQix7HtZccOhfyJpKIn0o8wJloY/3OV5FzDV8jUmf42+4ovQwpJUKw9Z4AXOpzIXEv/FSIF/x7A3gewE28M/d8PQ+QrzOWwcM8Mo6U/Slu845g546moXriXeDBLXuMs/0aY9rG9PegnOffGOLIBG8821EYdPskqodS4ie5IsKYiUHKOqyQcCJEsvbgqzYWyanXPbhnRLRWBH9/di9SU9VS62IzRe4p/Gcit/Zqnbq6yogoqKOwZmI5K5zwkV+Z8oqRv8Gw1Ev0o9kUn8uJ2UpS0vQHGQjCiWxiE0NNhnjkLANNBwjEOAyxsKfPO7iBQZ1LozMvDfrM3HnEM13locnk43n8cqxXN/ftgPNz8iy96v
X-OriginatorOrg: amd.com
X-MS-Exchange-CrossTenant-OriginalArrivalTime: 13 Apr 2026 09:42:11.3047
 (UTC)
X-MS-Exchange-CrossTenant-Network-Message-Id: 784e2231-9c7d-4e46-3ac3-08de9940efcf
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:
	BN2PEPF000055DE.namprd21.prod.outlook.com
X-MS-Exchange-CrossTenant-AuthAs: Anonymous
X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem
X-MS-Exchange-Transport-CrossTenantHeadersStamped: CY8PR12MB7587
X-purgate-ID: tlsNG-720697/1776073340-AD53CCD1-D31D7DB4/0/0
X-purgate-type: clean
X-purgate-size: 4717



On 08/04/2026 15:55, Luca Fancellu wrote:
> From: Penny Zheng <Penny.Zheng@arm.com>
> 
> Implement setup_virt_paging for aarch64 MPU systems, taking tare of
> stage 2 address translation regime, IPA bits, supported VMID length
> configuration and vtcr_el2/vstcr_el2 register programming.
> 
> Implement also the Armv8-R specific changes to ID_AA64MMFR0_EL1,
> related to the supported memory system architecture (PMSA/VMSA)
> and check that when MPU is built, the underlying HW is compatible
> with PMSA. By default MPU at EL2 and EL1 is required.
> 
> Signed-off-by: Penny Zheng <penny.zheng@arm.com>
> Signed-off-by: Wei Chen <wei.chen@arm.com>
> Signed-off-by: Luca Fancellu <luca.fancellu@arm.com>
> Signed-off-by: Hari Limaye <hari.limaye@arm.com>
> Signed-off-by: Harry Ramsey <harry.ramsey@arm.com>
> ---
> v3:
> - Refactor unused code to more relevant commits.
> - Add P2M print information
> - Formatting issues
> - Update commit message
> v2:
> - Seperate commit into multiple commits
> ---
>  xen/arch/arm/arm64/mpu/p2m.c             | 80 +++++++++++++++++++++++-
>  xen/arch/arm/include/asm/arm64/sysregs.h |  4 ++
>  xen/arch/arm/include/asm/cpufeature.h    | 13 +++-
>  xen/arch/arm/include/asm/processor.h     |  8 +++
>  4 files changed, 101 insertions(+), 4 deletions(-)
> 
> diff --git a/xen/arch/arm/arm64/mpu/p2m.c b/xen/arch/arm/arm64/mpu/p2m.c
> index b6d8b2777b58..fda512dc7c8f 100644
> --- a/xen/arch/arm/arm64/mpu/p2m.c
> +++ b/xen/arch/arm/arm64/mpu/p2m.c
> @@ -2,11 +2,89 @@
>  
>  #include <xen/bug.h>
>  #include <xen/init.h>
> +#include <xen/lib.h>
>  #include <asm/p2m.h>
>  
>  void __init setup_virt_paging(void)
>  {
> -    BUG_ON("unimplemented");
> +    register_t vtcr_el2 = READ_SYSREG(VTCR_EL2);
> +    register_t vstcr_el2 = READ_SYSREG(VSTCR_EL2);
> +
> +    /* PA size */
> +    const unsigned int pa_range_info[] = {32, 36, 40, 42, 44, 48, 52, 0,
> +                                          /* Invalid */};
> +
> +    /*
> +     * Restrict "p2m_ipa_bits" if needed. As P2M table is always configured
> +     * with IPA bits == PA bits, compare against "pabits".
> +     */
> +    if ( pa_range_info[system_cpuinfo.mm64.pa_range] < p2m_ipa_bits )
> +        p2m_ipa_bits = pa_range_info[system_cpuinfo.mm64.pa_range];
> +
> +    /*
> +     * The MSA and MSA_frac fields in the ID_AA64MMFR0_EL1 register identify the
> +     * memory system configurations supported. In Armv8-R AArch64, the
> +     * only permitted value for ID_AA64MMFR0_EL1.MSA is 0b1111.
> +     */
> +    if ( system_cpuinfo.mm64.msa != MM64_MSA_PMSA_SUPPORT )
> +        goto fault;
> +
> +    /* Permitted values for ID_AA64MMFR0_EL1.MSA_frac are 0b0001 and 0b0010. */
> +    if ( (system_cpuinfo.mm64.msa_frac != MM64_MSA_FRAC_PMSA_SUPPORT) &&
> +         (system_cpuinfo.mm64.msa_frac != MM64_MSA_FRAC_VMSA_SUPPORT) )
> +        goto fault;
> +
> +    /* Stage 1 EL1&0 translation regime uses PMSAv8 by default */
> +    vtcr_el2 &= ~VTCR_MSA;
> +
> +    /*
> +     * Clear VTCR_EL2.NSA bit to configure non-secure stage 2 translation output
> +     * address space to access the Secure PA space as Armv8r only implements
> +     * secure state.
> +     */
> +    vtcr_el2 &= ~VTCR_NSA;
> +
> +    /*
> +     * cpuinfo sanitization makes sure we support 16bits VMID only if all cores
> +     * are supporting it.
> +     *
> +     * Set the VS bit only if 16 bit VIMD is supported.
> +     */
> +    if ( system_cpuinfo.mm64.vmid_bits == MM64_VMID_16_BITS_SUPPORT )
> +    {
> +        vtcr_el2 |= VTCR_VS;
> +        max_vmid = MAX_VMID_16_BIT;
> +    }
> +    else
> +        vtcr_el2 &= ~VTCR_VS;
This is the last change to vtcr_el2. Why do you put p2m_vmid_allocator_init()
in-between this and write to vtcr_el2 register? It looks odd.

> +
> +    p2m_vmid_allocator_init();
> +
> +    WRITE_SYSREG(vtcr_el2, VTCR_EL2);
> +
> +    /*
> +     * VSTCR_EL2.SA defines secure stage 2 translation output address space.
> +     * To make sure that all stage 2 translations for the Secure PA space access
> +     * the Secure PA space, we keep SA bit as 0.
> +     *
> +     * VSTCR_EL2.SC is NS check enable bit. To make sure that Stage 2 NS
> +     * configuration is checked against stage 1 NS configuration in EL1&0
> +     * translation regime for the given address, and generates a fault if they
> +     * are different, we set SC bit 1.
> +     */
> +    vstcr_el2 &= ~VSTCR_EL2_SA;
> +    vstcr_el2 |= VSTCR_EL2_SC;
> +    WRITE_SYSREG(vstcr_el2, VSTCR_EL2);
> +
> +    printk("P2M: %d-bit IPA with %d-bit PA and %d-bit VMID\n",
All these are unsigned, so %u.

~Michal


From xen-devel-bounces@lists.xenproject.org Mon Apr 13 09:50:22 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 13 Apr 2026 09:50:22 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1281000.1564068 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wCDvk-00013K-Cn; Mon, 13 Apr 2026 09:50:08 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1281000.1564068; Mon, 13 Apr 2026 09: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 1wCDvk-00013D-9t; Mon, 13 Apr 2026 09:50:08 +0000
Received: by outflank-mailman (input) for mailman id 1281000;
 Mon, 13 Apr 2026 09:50:07 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <Luca.Fancellu@arm.com>) id 1wCDvi-0000zE-Jt
 for xen-devel@lists.xenproject.org; Mon, 13 Apr 2026 09:50:07 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wCDvh-00BtrV-Vt
 for xen-devel@lists.xenproject.org; Mon, 13 Apr 2026 11:50:06 +0200
Received: from [10.42.69.3] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <Luca.Fancellu@arm.com>)
 id 69dcbc4b-bab6-0a2a0a5309dd-0a2a4503806c-14
 for <xen-devel@lists.xenproject.org>; Mon, 13 Apr 2026 11:50:05 +0200
Received: from [52.101.66.19]
 (helo=DUZPR83CU001.outbound.protection.outlook.com)
 by tlsNG-33051d.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.0)
 (envelope-from <Luca.Fancellu@arm.com>)
 id 69dcbc4c-02b3-0a2a45030019-34654213dc1f-3
 for <xen-devel@lists.xenproject.org>; Mon, 13 Apr 2026 11:50:05 +0200
Received: from DU2PR04CA0299.eurprd04.prod.outlook.com (2603:10a6:10:28c::34)
 by DB3PR08MB8916.eurprd08.prod.outlook.com (2603:10a6:10:428::7) with
 Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9769.48; Mon, 13 Apr
 2026 09:50:01 +0000
Received: from DB1PEPF000509E8.eurprd03.prod.outlook.com
 (2603:10a6:10:28c:cafe::f7) by DU2PR04CA0299.outlook.office365.com
 (2603:10a6:10:28c::34) with Microsoft SMTP Server (version=TLS1_3,
 cipher=TLS_AES_256_GCM_SHA384) id 15.20.9769.47 via Frontend Transport; Mon,
 13 Apr 2026 09:50:01 +0000
Received: from outbound-uk1.az.dlp.m.darktrace.com (4.158.2.129) by
 DB1PEPF000509E8.mail.protection.outlook.com (10.167.242.58) with Microsoft
 SMTP Server (version=TLS1_3, cipher=TLS_AES_256_GCM_SHA384) id 15.20.9769.17
 via Frontend Transport; Mon, 13 Apr 2026 09:50:01 +0000
Received: from DU2PR08MB7272.eurprd08.prod.outlook.com (2603:10a6:10:2d7::16)
 by GV2PR08MB7953.eurprd08.prod.outlook.com (2603:10a6:150:ab::16)
 with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9769.44; Mon, 13 Apr
 2026 09:48:49 +0000
Received: from DU2PR08MB7272.eurprd08.prod.outlook.com
 ([fe80::5d34:206f:373:a323]) by DU2PR08MB7272.eurprd08.prod.outlook.com
 ([fe80::5d34:206f:373:a323%6]) with mapi id 15.20.9769.046; Mon, 13 Apr 2026
 09:48: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=arm.com header.i="@arm.com" header.h="From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck"; dkim=pass header.s=selector1 header.d=arm.com header.i="@arm.com" header.h="From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck"
ARC-Seal: i=2; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=pass;
 b=d/OSARfQxsy3w5M79bapGNmrKwiSX0CQVeFQjjVIJIWgvhMkLO8cO41qqtqw8F2KlQts/39lt4ztABCF9+Cxv9O/gixqslH5kjVLHIVhjxuadG6sJWjxfXwxDaoGlvslP9M6NbYXNZHQODFG8/9IG9HEZ7OodrytLR1nF/RFC2SEMUNCgi8h0Hip0ppXNmAQMDnfe4b6yIxd1fcUewh6oaLNbwh37beKsQSjRkEsmQUdmjUXY7VHnoRMjACbpzGwUPNxeLOtMwqGguVKYbjVrUYuEmuHR1jS4IaD1GTWkXgmlWEWcIBy+G666Sth0mfw69D+OdABBY4JIkJ2C8VRXA==
ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com;
 s=arcselector10001;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1;
 bh=1CWTLgNTmHxPBkyYZx5DYhNfQlDOAp+fLSlbsA60ZwM=;
 b=V7hu81z9WwR+C+VEIaon0NsRXBRjy7KKRk8qpZEJun/IOpKQzJmy6B08rGZklS0KVGOLMAHZgcQhOOvK/Cv6q7Y6i7sbggFTBphas+zfZ56rm/TQLW9+611voE3ENLyzy2KU1IVtb/of1u0fl7E77QeOXeAEwWb0k5+cLhoXJKdHiy7UWlSZadODf+Eok/lg9/xSUGf5S83B5rmMW68vUK/cu8SsjJVYYIjxWd84JluCP47eGSpcHD6XZ7IsYaVjfISQNa09SdrasDwF8Zfji47DOWX44btEorXwRQevnZ91DyRHXQ6KaGLT7EWJFRwsKvvfC7C9PAo8kdRa+y67nw==
ARC-Authentication-Results: i=2; mx.microsoft.com 1; spf=pass (sender ip is
 4.158.2.129) smtp.rcpttodomain=epam.com smtp.mailfrom=arm.com; dmarc=pass
 (p=none sp=none pct=100) action=none header.from=arm.com; dkim=pass
 (signature was verified) header.d=arm.com; arc=pass (0 oda=1 ltdi=1
 spf=[1,1,smtp.mailfrom=arm.com] dkim=[1,1,header.d=arm.com]
 dmarc=[1,1,header.from=arm.com])
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=arm.com; s=selector1;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck;
 bh=1CWTLgNTmHxPBkyYZx5DYhNfQlDOAp+fLSlbsA60ZwM=;
 b=S5/g2k1cSG6B1oMTai6KvJ+lKpffExwiNDdn35K4n7FdS+N6jRs9tTwfWdSlTcagHIpinMGdm3yA3BLrbFWSi15ohS+Oi7XF5Cc1YadgVrhyr2mwD3IyY0byDBDDmjCpA/zUz6LZaA45y3rTnaLaPH1G2GGEvX7wTv/x6zHwzdg=
X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 4.158.2.129)
 smtp.mailfrom=arm.com; dkim=pass (signature was verified)
 header.d=arm.com;dmarc=pass action=none header.from=arm.com;
Received-SPF: Pass (protection.outlook.com: domain of arm.com designates
 4.158.2.129 as permitted sender) receiver=protection.outlook.com;
 client-ip=4.158.2.129; helo=outbound-uk1.az.dlp.m.darktrace.com; pr=C
ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none;
 b=hDxuIHHSn7kVbPtIotvuYWm8LW7FgxlvUNIKi0OX9iCVYIiM4777cwYN+oP8aZ1DKp76g/hPZCOjHtKorJCqmqB47RJdl2aQHiFm6UW6uBZyReIjcLknWR4/Zkr3vuL8o5Zb8DhisgWlkV2cFyvHjzW12q6b9IMiHZZvH8co4cqc3WDuszDfC+ehXdy8kWAu7M70LzdKnd7V6hICMYKm9l7Oi5+Utx0huYXqWruESaXV3jrgkrW4U9i5al0H8bUlah7wZfJgQdRMZZ/ghqS5ltgpD3K5/YbUjfAvQcvHmPAsNBCE+AIPiA/0Iq/ON6YGHnaUW9PrtAxlDJB2oLFu4A==
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com;
 s=arcselector10001;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1;
 bh=1CWTLgNTmHxPBkyYZx5DYhNfQlDOAp+fLSlbsA60ZwM=;
 b=At5ZRwDxYURpfpBLUI91ypZmSJzFSyPKocrOHIGtAtBda7lGa2wvjVZ56ROLYQGIfJouppsLoDn0KfuHekte/KBvXOKcX4B7Emu3j7HFfzhVFk/2axbFoJpC7f/YXSicjMLHrfpNgafHuGrm599Xl2sAkHr7Yc7WkBCEAHKBIEuV0ftJAtOS9mBfdFqUSEH0i/uTlU8TtLZnnw9YFEyebF2KFrHGN4fXHdsjDZSrCQ2WzwlBvn15zmaDnZX5i6hvf6sCc8R34CqZMRhviQMdQOTSkWxyZtszKuhhahffsBGcuL/8/MGCm/d9R2a6Px49mcyO3n9prKy33mmgnIrsoA==
ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass
 smtp.mailfrom=arm.com; dmarc=pass action=none header.from=arm.com; dkim=pass
 header.d=arm.com; arc=none
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=arm.com; s=selector1;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck;
 bh=1CWTLgNTmHxPBkyYZx5DYhNfQlDOAp+fLSlbsA60ZwM=;
 b=S5/g2k1cSG6B1oMTai6KvJ+lKpffExwiNDdn35K4n7FdS+N6jRs9tTwfWdSlTcagHIpinMGdm3yA3BLrbFWSi15ohS+Oi7XF5Cc1YadgVrhyr2mwD3IyY0byDBDDmjCpA/zUz6LZaA45y3rTnaLaPH1G2GGEvX7wTv/x6zHwzdg=
From: Luca Fancellu <Luca.Fancellu@arm.com>
To: Milan Djokic <milan_djokic@epam.com>
CC: "xen-devel@lists.xenproject.org" <xen-devel@lists.xenproject.org>, 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>
Subject: Re: [PATCH v3 10/23] xen/arm: vsmmuv3: Add support for command
 CMD_CFGI_STE
Thread-Topic: [PATCH v3 10/23] xen/arm: vsmmuv3: Add support for command
 CMD_CFGI_STE
Thread-Index: AQHcyyq6FXO6ijWppkGjD9BdYA/62A==
Date: Mon, 13 Apr 2026 09:48:49 +0000
Message-ID: <7A296EE6-042F-43B6-A6A8-9BC4408AE605@arm.com>
References: <cover.1774918270.git.milan_djokic@epam.com>
 <5342a5355191ae3b5b7bfcb86c6494334dda82e6.1774918270.git.milan_djokic@epam.com>
In-Reply-To:
 <5342a5355191ae3b5b7bfcb86c6494334dda82e6.1774918270.git.milan_djokic@epam.com>
Accept-Language: en-GB, en-US
Content-Language: en-US
X-MS-Has-Attach:
X-MS-TNEF-Correlator:
x-mailer: Apple Mail (2.3826.700.81.1.6)
Authentication-Results-Original: dkim=none (message not signed)
 header.d=none;dmarc=none action=none header.from=arm.com;
x-ms-traffictypediagnostic:
	DU2PR08MB7272:EE_|GV2PR08MB7953:EE_|DB1PEPF000509E8:EE_|DB3PR08MB8916:EE_
X-MS-Office365-Filtering-Correlation-Id: 83633dbd-c22d-412d-7496-08de9942082f
x-checkrecipientrouted: true
nodisclaimer: true
X-MS-Exchange-SenderADCheck: 1
X-MS-Exchange-AntiSpam-Relay: 0
X-Microsoft-Antispam-Untrusted:
 BCL:0;ARA:13230040|366016|1800799024|376014|56012099003|18002099003|22082099003|38070700021;
X-Microsoft-Antispam-Message-Info-Original:
 3RXi0L7fJFoNldNK5eXm+Pv1dW29rKmqxXnt0s9gVq5uhKcRwUgpvIB5VM38c+GWRE47rHJegv7bIUb7VqlshZCX1jQ7Hv/OMfz3vm2ka/DqPkZGbToT1UcoyOm86vooKuPRYUTIj4yDtIxjS+e7Ac4DPHvfQKe+KHr/0+ycXMQHIoJkP/rhK3muZ/waBaFEooRY0ayl66Oue8Ae8mgNq2Id0FEjuO+zxwBJ7vzAdqjqQ1rRnVa8Ng6G1nF2xyNR8uRZdR9wBmo0w6bLcEW7PWvK5egvbZaI2kL1sxRDjDymjS8bV+dO98e7AlfxSqv3OdzzVT/pyrNK7KIbFZdb3Q88Zl6rZbEifBa0yPXto9s0q6K493tOd91kONRUwEv8b99k3RUKYWqXlluhBWQWTqvTG3iJqIWySqwcFjbTXF0lX7Y/fOw9UBugrsqNCNEI9u6LIhUm3lPNhOffsmA25NFfUHRnlMgj6HeAdTjXb1ccQwH8X3vAxrLy/kHYoaCI02V1WdnqLIybv++Y+hCy6W8dUbtOjvF7demVQabbsfBdPMl+JfqtbIgr2+iZv6T+7DTDBZ0G8W3rzb2vIz+4PDnCalfVQ1suE3RtVNzUIfIEU1WVyjM+sVmU7h+g95HLzMdG/vlC9ZNc53wJmzA/xJVibZn/LWV8J9J5ftJCOwPtGPu3++Nv5OF4FA9DJRUt6EW5io4poSbtQeajUdX846qNGsHxWrNTZF51oV7G8Xe0nWEYCYne9YO6sD7XTNuK7FH/bMDMkV/2X7eyVIppbiSxDQ3US8vyq3nFoKniP8g=
X-Forefront-Antispam-Report-Untrusted:
 CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:DU2PR08MB7272.eurprd08.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(366016)(1800799024)(376014)(56012099003)(18002099003)(22082099003)(38070700021);DIR:OUT;SFP:1101;
Content-Type: text/plain; charset="us-ascii"
Content-ID: <4BF5C6BA466BD842B70B9D9A5D7F0FB6@eurprd08.prod.outlook.com>
Content-Transfer-Encoding: quoted-printable
MIME-Version: 1.0
X-Exchange-RoutingPolicyChecked:
 Dyud/Hk8u1grghSx1LJQHF23rmE9MXvoDXXWSZuq803nXsW1agbeLaFDZimMDtlfCYKaD+/+qbnN0eqWZeqYBgSwDQuqKoA+N2JgBykzO4wGFBwawBywvW2EqzXOHugvbJ+htJprgBIuxa5ZIX3C1enPRm33Lz3YUndAfDVFM6PIkO2SiKo+6lA7cVaVrvQ8S/qLDIN7+zPuhRkvNIOBrFvoRvXGpgMypI7fmBOwWTg2gHNBzE+gLIwLemdT10kPRCjWYT4bsbLa6KnikB8emvpd0cZ0KI/C/euf0bBKQ8s8UtxJMMvEFnLjSSpf/XPX0C2J/hkruX7NE5o1G89zPw==
X-MS-Exchange-Transport-CrossTenantHeadersStamped: GV2PR08MB7953
X-EOPAttributedMessage: 0
X-MS-Exchange-Transport-CrossTenantHeadersStripped:
 DB1PEPF000509E8.eurprd03.prod.outlook.com
X-MS-PublicTrafficType: Email
X-MS-Office365-Filtering-Correlation-Id-Prvs:
	5af6ece9-6c47-4aca-608f-08de9941dd4b
X-Microsoft-Antispam:
	BCL:0;ARA:13230040|1800799024|35042699022|376014|36860700016|14060799003|82310400026|22082099003|18002099003|56012099003;
X-Microsoft-Antispam-Message-Info:
	UnIV3hhNCHQWDbXZmi6ahxehyK7m41TrVVZPIe0fCpQM/b/I9ZLDO+inS6cUTUBffxAXn2eE6PLwZyCFY/dd38dwI8o4/9xbfaFW168eFQoVbi3iw0vtzE81vCpHmTZT6hnCNRjIafSMysMI+kJ49lVaCUk0jsCkfq5MjF3GBYh/VZ6bFu+jWWA6to6xDp0CZBEGmMMCYIqN50lBkmtSRIqEUtAv8aW/NpVtH1wjD6xje3il036ICvehOfn/jY9sPDWT+KDvOvTv6LD6KBhCEafeOCpvJ0VkVshUU61vobGpniEJ4zyjwLK9Y1cODAGTJ5mpMYAGrKHiODqPCwkWuSyjgPLX0QNdcX2+Nvj0cQ6e8OUzhSElQuvOa0cIGSXnR5Y0QqYRGPwGpkWX7Z8v5lgjLS2Mg954NTmJrolpn01imXigyED5zzElAKifQjeT2ov49lPQM0Z1luBGPd+qM7NwVfPr+yxr3kurxRRWLNVj0eaP83avDN+Hc8VDA0z42dFvK9HMxFAM5mk4yvQYeQKln8+HUJU5BJQrZPaqgoccW7elTbkNRuR8RXMMvn9vIpTlEhbSbkCtkgkcsvcuIVor/pndn5sfq6TtfJI6/TyiUBldsAK43cYFA1LoyCM5ogYy2pQI8H+WLZ365xFXH06BCNA4yns5SWGQFeLcUJZFXvC0wH1MawtitfNjrXUgyK0OrNq9ZmV2i2SMAchONbGBXnXTWFKuRwE8JNvktY89e58izRDZJ3symNpOAbcWZYk/LWiQnKHF0Ytu8xA+rw==
X-Forefront-Antispam-Report:
	CIP:4.158.2.129;CTRY:GB;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:outbound-uk1.az.dlp.m.darktrace.com;PTR:InfoDomainNonexistent;CAT:NONE;SFS:(13230040)(1800799024)(35042699022)(376014)(36860700016)(14060799003)(82310400026)(22082099003)(18002099003)(56012099003);DIR:OUT;SFP:1101;
X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1
X-MS-Exchange-AntiSpam-MessageData-0:
	Tk6ExQUoVq38NSfqM0U0bfaA6OWwBMW2bssWice+chvLk18JcvmvxJbacIETpYX0xK+uXex6iU/jd8Iru+i/SdFm9l+teUjlcoxGyKhw43dQ6N1R77qoLRzntBHEWb2NK27CSSX5T3Nvd1tuV9CNdq5XLm32w5mALMNRMqBtzvIZT3tjIc+9lt/u6OK86O37Ox7cevlw8/LjAc5nQsG0h15fGAlx72frAKJcP5oBT1U6G0v+/ZQhr9WP/JBVcxZxJoqHRoTg7SsScVtrgTJ3RfKpiQF/2aFOuGVUol1Uo7Qpyctxwlz+tS/vzTaXf25cbsL3AdY7TUAF2e1rQUs/4uR/SDFNeGIP9MgZEA3f7ojbV3kvgQ+pVI6TM1yDIhkK+j/TWypLmFzruKkaMf1PhRHVcyneV4Ac6L7eAsSRZHY+BemPcJSK7JCBuE6pSivk
X-OriginatorOrg: arm.com
X-MS-Exchange-CrossTenant-OriginalArrivalTime: 13 Apr 2026 09:50:01.6335
 (UTC)
X-MS-Exchange-CrossTenant-Network-Message-Id: 83633dbd-c22d-412d-7496-08de9942082f
X-MS-Exchange-CrossTenant-Id: f34e5979-57d9-4aaa-ad4d-b122a662184d
X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=f34e5979-57d9-4aaa-ad4d-b122a662184d;Ip=[4.158.2.129];Helo=[outbound-uk1.az.dlp.m.darktrace.com]
X-MS-Exchange-CrossTenant-AuthSource:
	DB1PEPF000509E8.eurprd03.prod.outlook.com
X-MS-Exchange-CrossTenant-AuthAs: Anonymous
X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem
X-MS-Exchange-Transport-CrossTenantHeadersStamped: DB3PR08MB8916
X-purgate-ID: tlsNG-33051d/1776073805-47B2BC9A-66E415BC/0/0
X-purgate-type: clean
X-purgate-size: 6329

Hi Milan,

> On 31 Mar 2026, at 02:52, Milan Djokic <milan_djokic@epam.com> wrote:
>=20
> From: Rahul Singh <rahul.singh@arm.com>
>=20
> 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.
>=20
> 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 | 148 +++++++++++++++++++++++++
> 1 file changed, 148 insertions(+)
>=20
> diff --git a/xen/drivers/passthrough/arm/vsmmu-v3.c b/xen/drivers/passthr=
ough/arm/vsmmu-v3.c
> index 02fe6a4422..39ed4dc577 100644
> --- a/xen/drivers/passthrough/arm/vsmmu-v3.c
> +++ b/xen/drivers/passthrough/arm/vsmmu-v3.c
> @@ -45,6 +45,21 @@ extern const struct viommu_desc __read_mostly *cur_vio=
mmu;
> /* Helper Macros */
> #define smmu_get_cmdq_enabled(x)    FIELD_GET(CR0_CMDQEN, x)
> #define smmu_cmd_get_command(x)     FIELD_GET(CMDQ_0_OP, x)
> +#define smmu_cmd_get_sid(x)         FIELD_GET(CMDQ_PREFETCH_0_SID, x)

Was CMDQ_CFGI_0_SID intended here? we use it in arm_vsmmu_handle_cfgi_ste()

> +#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_MAS=
K, \
> +                                    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 {
> @@ -91,6 +106,138 @@ static void dump_smmu_command(uint64_t *command)
>     gdprintk(XENLOG_ERR, "cmd 0x%02llx: %016lx %016lx\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;
> +
> +    log2size =3D FIELD_GET(STRTAB_BASE_CFG_LOG2SIZE, smmu->strtab_base_c=
fg);
> +
> +    if ( sid >=3D (1 << MIN(log2size, SMMU_IDR1_SIDSIZE)) )
> +        return -EINVAL;
> +
> +    if ( smmu->features & STRTAB_BASE_CFG_FMT_2LVL )
> +    {
> +        int idx, max_l2_ste, span;
> +        paddr_t l1ptr, l2ptr;
> +        uint64_t l1std;
> +
> +        strtab_size_shift =3D MAX(5, (int)log2size - smmu->sid_split - 1=
 + 3);
> +        strtab_base =3D smmu->strtab_base & STRTAB_BASE_ADDR_MASK &
> +                        ~GENMASK_ULL(strtab_size_shift, 0);
> +        idx =3D (sid >> STRTAB_SPLIT) * STRTAB_L1_DESC_DWORDS;

I think here we should shift by smmu->sid_split instead of STRTAB_SPLIT?

> +        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);
> +        if ( !span )
> +        {
> +            gdprintk(XENLOG_ERR, "Bad StreamID span\n");
> +            return -EINVAL;
> +        }
> +
> +        max_l2_ste =3D (1 << span) - 1;
> +        l2ptr =3D FIELD_PREP(STRTAB_L1_DESC_L2PTR_MASK,
> +                    FIELD_GET(STRTAB_L1_DESC_L2PTR_MASK, l1std));
> +        idx =3D sid & ((1 << smmu->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);
> +        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) )
> +        return -EAGAIN;
> +
> +    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:
> +        BUG(); /* STE corruption */

This will crash Xen based on the input of the guest, we should print someth=
ing and
jump to bad_ste instead, in my opinion.

> +    }
> +
> +    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:

NIT: code style, one space before labels

Cheers,
Luca



From xen-devel-bounces@lists.xenproject.org Mon Apr 13 09:56:00 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 13 Apr 2026 09:56:00 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1281010.1564077 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wCE1L-0001cW-Vc; Mon, 13 Apr 2026 09:55:55 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1281010.1564077; Mon, 13 Apr 2026 09:55: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 1wCE1L-0001cP-Sp; Mon, 13 Apr 2026 09:55:55 +0000
Received: by outflank-mailman (input) for mailman id 1281010;
 Mon, 13 Apr 2026 09:55:54 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <Luca.Fancellu@arm.com>) id 1wCE1K-0001cJ-MC
 for xen-devel@lists.xenproject.org; Mon, 13 Apr 2026 09:55:54 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wCE1K-00G6yx-26
 for xen-devel@lists.xenproject.org; Mon, 13 Apr 2026 11:55:54 +0200
Received: from [10.42.69.2] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <Luca.Fancellu@arm.com>)
 id 69dcbda6-bab6-0a2a0a5309dd-0a2a4502a9f6-16
 for <xen-devel@lists.xenproject.org>; Mon, 13 Apr 2026 11:55:53 +0200
Received: from [52.101.70.13]
 (helo=AS8PR04CU009.outbound.protection.outlook.com)
 by tlsNG-720697.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.0)
 (envelope-from <Luca.Fancellu@arm.com>)
 id 69dcbda9-42fa-0a2a45020019-3465460d370c-3
 for <xen-devel@lists.xenproject.org>; Mon, 13 Apr 2026 11:55:53 +0200
Received: from DU7P250CA0011.EURP250.PROD.OUTLOOK.COM (2603:10a6:10:54f::26)
 by PAVPR08MB10337.eurprd08.prod.outlook.com (2603:10a6:102:30e::20) with
 Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9769.48; Mon, 13 Apr
 2026 09:55:48 +0000
Received: from DU6PEPF0000A7DF.eurprd02.prod.outlook.com
 (2603:10a6:10:54f:cafe::c5) by DU7P250CA0011.outlook.office365.com
 (2603:10a6:10:54f::26) with Microsoft SMTP Server (version=TLS1_3,
 cipher=TLS_AES_256_GCM_SHA384) id 15.20.9769.48 via Frontend Transport; Mon,
 13 Apr 2026 09:55:48 +0000
Received: from outbound-uk1.az.dlp.m.darktrace.com (4.158.2.129) by
 DU6PEPF0000A7DF.mail.protection.outlook.com (10.167.8.36) with Microsoft SMTP
 Server (version=TLS1_3, cipher=TLS_AES_256_GCM_SHA384) id 15.20.9769.17 via
 Frontend Transport; Mon, 13 Apr 2026 09:55:48 +0000
Received: from DU2PR08MB7272.eurprd08.prod.outlook.com (2603:10a6:10:2d7::16)
 by AS4PR08MB8220.eurprd08.prod.outlook.com (2603:10a6:20b:51f::16)
 with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9769.48; Mon, 13 Apr
 2026 09:54:43 +0000
Received: from DU2PR08MB7272.eurprd08.prod.outlook.com
 ([fe80::5d34:206f:373:a323]) by DU2PR08MB7272.eurprd08.prod.outlook.com
 ([fe80::5d34:206f:373:a323%6]) with mapi id 15.20.9769.046; Mon, 13 Apr 2026
 09:54: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=arm.com header.i="@arm.com" header.h="From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck"; dkim=pass header.s=selector1 header.d=arm.com header.i="@arm.com" header.h="From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck"
ARC-Seal: i=2; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=pass;
 b=qlq4KxB3s7UUakxXxfMXNuuRvZul1pwvgMBzMS55Au6FTlI0caVdlGsWJpPlG5i7ARDBqQtfWyMkDNWW//IpOkgqdlwS1BKjZHwVQq9EDuVifPPEgelyTmVEjKMORC9vo8gB14tHV6a14XmzJgQyPYH131wKG4wylMi3Z5I6oHNFjOhKUkeBnCQCWNvrSM9mkCErhisCeOwjz+Sni9rFH7a+20Pop+mqZjskILo10e2X6RfKedp18WPeBDBjg2FRRyTrjcBIO5wcMEwVrqJEn+zIO2Z9/moVBHwWHd6k6/E0+w5EbbOOPkkh7j964+Zs5E9v5R/DwbFcQi9BKbrtmQ==
ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com;
 s=arcselector10001;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1;
 bh=LClfXYli9yVq6/36kS7I9hr8lVxTEBSejniR4OcaQts=;
 b=tMKASntf4+EZYXbe/KZiLFZZV2QUjSjfCyqBAy02pFbv3MDnllKr6vZnZGq3pw9aRG+q2g7TGv+eUiiIBoQ1gPQlIx5Wg557EGXA3xH3nYW2slzLDFziJcCJh/GwtfFSDOaC/QdQjIFWlHsJ42aZy1YBm6/eGwgnxDxOpNjxcLp/xEXrsjN4fcecbLkBJXuaQRDNUB467gARZ3zb5KXD5TW1gbf+D+Nocz4C53c149jIEbgZgeDdmS5hT9cAXsiXfjKZ93/i9wvKjyYNpPh5vpt3keMOUM5vKoqBzhRkoyxDpEeA9dRzBLhKG1W5fUSwdkb8+i6cbXSag04bCPDaLg==
ARC-Authentication-Results: i=2; mx.microsoft.com 1; spf=pass (sender ip is
 4.158.2.129) smtp.rcpttodomain=amd.com smtp.mailfrom=arm.com; dmarc=pass
 (p=none sp=none pct=100) action=none header.from=arm.com; dkim=pass
 (signature was verified) header.d=arm.com; arc=pass (0 oda=1 ltdi=1
 spf=[1,1,smtp.mailfrom=arm.com] dkim=[1,1,header.d=arm.com]
 dmarc=[1,1,header.from=arm.com])
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=arm.com; s=selector1;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck;
 bh=LClfXYli9yVq6/36kS7I9hr8lVxTEBSejniR4OcaQts=;
 b=knk6pQA7wbwETB4j8cd5FuTBqHKp/DC869mXejQSt/P/xu/Hs/VpeWGV+lZasSfbk9RBYdaO/TOQOoVNMIU6yAdzKk3cv/CGWDQpj1jzM3vWI7FC4DLtDYlq9QpKvZQ8TXWDPHUDtqmEcWXfcqx5PH2jhW4NjqOnq7/CvC440us=
X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 4.158.2.129)
 smtp.mailfrom=arm.com; dkim=pass (signature was verified)
 header.d=arm.com;dmarc=pass action=none header.from=arm.com;
Received-SPF: Pass (protection.outlook.com: domain of arm.com designates
 4.158.2.129 as permitted sender) receiver=protection.outlook.com;
 client-ip=4.158.2.129; helo=outbound-uk1.az.dlp.m.darktrace.com; pr=C
ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none;
 b=bXTlVpcWEVTz4qkr6yIuBTfdW+Opeeh83VG5AZd4g6HZG75GT2p1Nsws/GRWfQ05DMgS5TjLzLlNZtzOW7WdpeGfSZfJI9KzZE8UdxSHWjxtPjum1XoO/zLRXICyvGMrquCbgsSA3Q8DaNoCf38R3/Z2LL614EV0jsuQn3RbGbgV5YAzRizdxpPtTyuRXEY2ujpqnEZ5/CwSGbKq83iHm/XSqxYV75D9JMrOKRSId7JdXk40ez4sNs0jPi++T1aO0vb5ohwbFeJIgU9zYfFo1DD+UeKk817Lio37zmePzKepOtM97fHiOlKuBM8o1sjSN/a/R1fCIxXKXkIQCtfTsQ==
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com;
 s=arcselector10001;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1;
 bh=LClfXYli9yVq6/36kS7I9hr8lVxTEBSejniR4OcaQts=;
 b=YiahNc0yVnOrZPVcIHaGIb8IQdib8Xiqia8vLHdU+lygIwtNCk2f6CMLSii+M+II9CG0U4vzfZfxuwef5rErsvdhR7fdS5nrCoHT6Kx3lIv18co6DIPWS7eOl+Z1wL0BkRO6te3hStj8DMdduePvAMNrXlHhdp8PTVRjOR81TEa7qJNaMtgrYebnUCz/kaXD55BjJs9ce4FzOZzIKIHOZEtZlh2L6QiDtyF2IgqCNoTGUTcijPza8w6/lvhVulxZs8uWDWt66XeJFhH6IgZjx5QaSTj730iGK+KIexkYwTVngWUqVrurXWS+VilkyaYxlegrF32WEFirc0RuktrTjg==
ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass
 smtp.mailfrom=arm.com; dmarc=pass action=none header.from=arm.com; dkim=pass
 header.d=arm.com; arc=none
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=arm.com; s=selector1;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck;
 bh=LClfXYli9yVq6/36kS7I9hr8lVxTEBSejniR4OcaQts=;
 b=knk6pQA7wbwETB4j8cd5FuTBqHKp/DC869mXejQSt/P/xu/Hs/VpeWGV+lZasSfbk9RBYdaO/TOQOoVNMIU6yAdzKk3cv/CGWDQpj1jzM3vWI7FC4DLtDYlq9QpKvZQ8TXWDPHUDtqmEcWXfcqx5PH2jhW4NjqOnq7/CvC440us=
From: Luca Fancellu <Luca.Fancellu@arm.com>
To: "Orzel, Michal" <Michal.Orzel@amd.com>
CC: "xen-devel@lists.xenproject.org" <xen-devel@lists.xenproject.org>, Penny
 Zheng <Penny.Zheng@arm.com>, Stefano Stabellini <sstabellini@kernel.org>,
	Julien Grall <julien@xen.org>, Bertrand Marquis <Bertrand.Marquis@arm.com>,
	Volodymyr Babchuk <Volodymyr_Babchuk@epam.com>, Wei Chen <Wei.Chen@arm.com>,
	Hari Limaye <Hari.Limaye@arm.com>, Harry Ramsey <Harry.Ramsey@arm.com>
Subject: Re: [PATCH v3 1/3] arm/mpu: implement setup_virt_paging for MPU
 system
Thread-Topic: [PATCH v3 1/3] arm/mpu: implement setup_virt_paging for MPU
 system
Thread-Index: AQHcx192xSccBJpVr0WTpZ/GMvC6RrXcxNcAgAADXwA=
Date: Mon, 13 Apr 2026 09:54:43 +0000
Message-ID: <92DD0227-9023-4824-BB39-56E7F20F2F27@arm.com>
References: <20260408135531.1744388-1-luca.fancellu@arm.com>
 <20260408135531.1744388-2-luca.fancellu@arm.com>
 <43fd7fd7-43dc-4c17-8ff6-b58800fd5f46@amd.com>
In-Reply-To: <43fd7fd7-43dc-4c17-8ff6-b58800fd5f46@amd.com>
Accept-Language: en-GB, en-US
Content-Language: en-US
X-MS-Has-Attach:
X-MS-TNEF-Correlator:
x-mailer: Apple Mail (2.3826.700.81.1.6)
Authentication-Results-Original: dkim=none (message not signed)
 header.d=none;dmarc=none action=none header.from=arm.com;
x-ms-traffictypediagnostic:
	DU2PR08MB7272:EE_|AS4PR08MB8220:EE_|DU6PEPF0000A7DF:EE_|PAVPR08MB10337:EE_
X-MS-Office365-Filtering-Correlation-Id: 60c259d6-b6b5-4349-510a-08de9942d6fd
x-checkrecipientrouted: true
nodisclaimer: true
X-MS-Exchange-SenderADCheck: 1
X-MS-Exchange-AntiSpam-Relay: 0
X-Microsoft-Antispam-Untrusted:
 BCL:0;ARA:13230040|1800799024|376014|366016|18002099003|56012099003|22082099003|38070700021;
X-Microsoft-Antispam-Message-Info-Original:
 OsoH5KCKA51XS+C29GhxOOXduO1i3QHelBza7NXzoXB5C+ZfEsOh3OgUPJJQe3B/ut0eDkjqf+czEmKVxx1m7ELUlOFZIqhLdQa3PBbgifbIyGqjc4opr3Di9ICwLOTdI/8l7KuZM0CiJ+skrYo5/kQBGNvMB/UqiqqsxX7QcnsPv+c6kdJ7xpTO8p+grYVbRdAQPDgP7DMSJgw0utpM+12X2yY9n6y/jzKkQFvlKwFpyFfj3qT7GS/vGXADmc3KmWnVI6jsc7cRh4I5sOk0EKdIn0uyT8MQcmxi9QzothFyt8ipuDfvb60isx47PqeHHKkp3AXmDJYDxoBHvUOclfWw22Gl6W1HpNGDkTauYhyPfZ+Z0X7GEyaCZ+Zr9o8+HoC6vbJ/N/oXowAC1LJ7DAYBW3qaVwSWwYoOQE2uZ2dtqgkAA1rvZWAEf8U8U6fbiPU+uWOB27jF0WJg0kYl9dMIg9Wf+bmVuIY1gbSaMy0ZrBk2zz3BYiQxidDMJBpgLjAvCCbbYzBh0EPDcoSF/w3fOOVOB2//rDSs43762ejKzsJdZETDyior0GhUn2DTRTv/rUW9lf/LwK0JtcmdyZq7v4i41RGivApRx4Mv7klfprG/YNqn7KyCwGWamdObgmBkwdH6t/qldYzvyrriHI6ADl8YNsaEX3eCIJPIUzcID/aXjbFQoeYay4nA1sRaApEGbuD7hjXR2uV2qrI6MvUZ6rUxw09VsPKnPu6nFcCvazelGq4COGgn4q9+D9SY5mA8VQqoQ1hjUZcTQOLa0zi4H2VJdjWgPn4HsYg2CLQ=
X-Forefront-Antispam-Report-Untrusted:
 CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:DU2PR08MB7272.eurprd08.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(1800799024)(376014)(366016)(18002099003)(56012099003)(22082099003)(38070700021);DIR:OUT;SFP:1101;
Content-Type: text/plain; charset="us-ascii"
Content-ID: <3779978901E5B94D92AA371D3F7FC00E@eurprd08.prod.outlook.com>
Content-Transfer-Encoding: quoted-printable
MIME-Version: 1.0
X-Exchange-RoutingPolicyChecked:
 Z2ppjeAYEOZ2+44Rfp/7d1BC7efH7v29q4/03OXPd9TDpyRLnHXIlRGYMAfLcJLTrjQIMb1aZWC32LnbU98xcUHPUju/FRsa35FnTG8pXRH3DXAex9HDbvY7LxCh/k7Z2ax+aD9yL1v1dq6td/dUwNLWAUSHkHcNPrVRhNkPTM/ecURUEzqvB8zppvUqpEV21YaEfKgj7Gni+a9Yr+V9easP8Myu+NaO3pMO/wVQH7LHRxG677t8+yQLinIc6FTpE8ZQfp9cpE7Wgxl+ecokG7ApMnaR95ZxuriJRB2zwSBRcZvtGAnut51MQ4qeB5E00yn7V+lLHgNd784FoQ+ncg==
X-MS-Exchange-Transport-CrossTenantHeadersStamped: AS4PR08MB8220
X-EOPAttributedMessage: 0
X-MS-Exchange-Transport-CrossTenantHeadersStripped:
 DU6PEPF0000A7DF.eurprd02.prod.outlook.com
X-MS-PublicTrafficType: Email
X-MS-Office365-Filtering-Correlation-Id-Prvs:
	18283882-79cc-492a-a6af-08de9942afea
X-Microsoft-Antispam:
	BCL:0;ARA:13230040|36860700016|14060799003|35042699022|376014|1800799024|82310400026|56012099003|18002099003|22082099003;
X-Microsoft-Antispam-Message-Info:
	7cgfcHh9o1zwikcSBvOWFP+wv3iePr1hlLxQcn7+FR4Zfs80/Ug0o0nrMbGYBbk/+QI3YXCpjk0IUBTMYRS9py7qk927pJ0zz8Jes/pfRpQi2G5snFFfQ45M0YgBwKGSH36veVlUSG4GKGdOt/wE2vYBcg77eA1jNC89VPUj9Js8sOpL5Oy70c34dzefGO27GiuLoZM3tdhzlqs6T5lg4lfwpDqtWdmYVxj0UhNL+4Z4rdLXZ6GeULiL4S6wIPgJiyW7iG8wGuwIXLHbKQPpTjtMWdYKh2Aztfe5tqCiWSBvHlPqU+7Ti5Us4LMijxiOxXKwHUxuOjyfqAkchwdNpg5AVwjc785/3uqE8XGc1KWG0LDBuWih706aDtTKocykenikFCfLje7v7x82ZEJ+8M1lyDJ/OEOTI6aXoumUIaEHu3cTzHfA3a6FKnSHDGTwpibOkQYzuC8xaEWOSb0cNMzMFSMNaofHD5xSpQdBt3viowXvv/9o1sNk4e07IKmpw0FALu3/+X8TPR9EV2DlaxxSMNWTbxVfVGABA8YhWly1JJpTvI+6ZJN+BwLXXLkP8JvsqQY7mO5gIZUQChxZcDjxmzopcRLqaIm+BpvtPVYNSx90WPj2hkkSKaXMGRL/Bc3FbCheHIRTG8awOjyO7jjaOVywB5GBvN9l4+rQiiOpbgRUnei5Sby0ikZMn08P0F2BwkrbaOqDUW9tbicOYSE7ZSPklXs5aoIR7vpEVDZagJlZ3ZqILpOGS+pHr2ND4Lq+pTAYGvNOuiM2j8UliA==
X-Forefront-Antispam-Report:
	CIP:4.158.2.129;CTRY:GB;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:outbound-uk1.az.dlp.m.darktrace.com;PTR:InfoDomainNonexistent;CAT:NONE;SFS:(13230040)(36860700016)(14060799003)(35042699022)(376014)(1800799024)(82310400026)(56012099003)(18002099003)(22082099003);DIR:OUT;SFP:1101;
X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1
X-MS-Exchange-AntiSpam-MessageData-0:
	m4RmwV7Bi+FvYQpplOi6nLyuDLd9ye4V7YDqYv3xXuxr0MCj5aY2KwVrNBqIpxWB71wFwwdTvDsoptMIyCF7ge4oXMjH3l1Mo8LrkOfilzSCwYN5uHCtomTF/Fo4e4v5LmRt8T82Ev5xDN2lsEy+FMR3kj7PFiGyX3zDFbZ+UMB/D/zgZfnppn/ZJfY4ACj5zPbUk61b/u/sQwyBB2z5j5ivo8Lb4Olmjed1CPp+X7/axKZb4+fuVMK6XA/va/u9ouMwu7HRd3TN35IqfF371kkD1CcgtrQVyesMXHNl1wSRa/pV3czMF0DHbaJwzUspQTFLeOE6GAAWPQ9HPwUFicm9kEcQIWQh/fYYj0S4RGFgfQYhLV2Jscr/UloN+HNLkuPx2qaP27yD2M0LB/1atgiiRUm525yZn2J1oU5JKldq12q5Wi+9IAWJp6uKNOlp
X-OriginatorOrg: arm.com
X-MS-Exchange-CrossTenant-OriginalArrivalTime: 13 Apr 2026 09:55:48.5921
 (UTC)
X-MS-Exchange-CrossTenant-Network-Message-Id: 60c259d6-b6b5-4349-510a-08de9942d6fd
X-MS-Exchange-CrossTenant-Id: f34e5979-57d9-4aaa-ad4d-b122a662184d
X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=f34e5979-57d9-4aaa-ad4d-b122a662184d;Ip=[4.158.2.129];Helo=[outbound-uk1.az.dlp.m.darktrace.com]
X-MS-Exchange-CrossTenant-AuthSource:
	DU6PEPF0000A7DF.eurprd02.prod.outlook.com
X-MS-Exchange-CrossTenant-AuthAs: Anonymous
X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem
X-MS-Exchange-Transport-CrossTenantHeadersStamped: PAVPR08MB10337
X-purgate-ID: tlsNG-720697/1776074153-46B27CD1-4725C3EA/0/0
X-purgate-type: clean
X-purgate-size: 3518

Hi Michal,

>>=20
>> void __init setup_virt_paging(void)
>> {
>> -    BUG_ON("unimplemented");
>> +    register_t vtcr_el2 =3D READ_SYSREG(VTCR_EL2);
>> +    register_t vstcr_el2 =3D READ_SYSREG(VSTCR_EL2);
>> +
>> +    /* PA size */
>> +    const unsigned int pa_range_info[] =3D {32, 36, 40, 42, 44, 48, 52,=
 0,
>> +                                          /* Invalid */};
>> +
>> +    /*
>> +     * Restrict "p2m_ipa_bits" if needed. As P2M table is always config=
ured
>> +     * with IPA bits =3D=3D PA bits, compare against "pabits".
>> +     */
>> +    if ( pa_range_info[system_cpuinfo.mm64.pa_range] < p2m_ipa_bits )
>> +        p2m_ipa_bits =3D pa_range_info[system_cpuinfo.mm64.pa_range];
>> +
>> +    /*
>> +     * The MSA and MSA_frac fields in the ID_AA64MMFR0_EL1 register ide=
ntify the
>> +     * memory system configurations supported. In Armv8-R AArch64, the
>> +     * only permitted value for ID_AA64MMFR0_EL1.MSA is 0b1111.
>> +     */
>> +    if ( system_cpuinfo.mm64.msa !=3D MM64_MSA_PMSA_SUPPORT )
>> +        goto fault;
>> +
>> +    /* Permitted values for ID_AA64MMFR0_EL1.MSA_frac are 0b0001 and 0b=
0010. */
>> +    if ( (system_cpuinfo.mm64.msa_frac !=3D MM64_MSA_FRAC_PMSA_SUPPORT)=
 &&
>> +         (system_cpuinfo.mm64.msa_frac !=3D MM64_MSA_FRAC_VMSA_SUPPORT)=
 )
>> +        goto fault;
>> +
>> +    /* Stage 1 EL1&0 translation regime uses PMSAv8 by default */
>> +    vtcr_el2 &=3D ~VTCR_MSA;
>> +
>> +    /*
>> +     * Clear VTCR_EL2.NSA bit to configure non-secure stage 2 translati=
on output
>> +     * address space to access the Secure PA space as Armv8r only imple=
ments
>> +     * secure state.
>> +     */
>> +    vtcr_el2 &=3D ~VTCR_NSA;
>> +
>> +    /*
>> +     * cpuinfo sanitization makes sure we support 16bits VMID only if a=
ll cores
>> +     * are supporting it.
>> +     *
>> +     * Set the VS bit only if 16 bit VIMD is supported.
>> +     */
>> +    if ( system_cpuinfo.mm64.vmid_bits =3D=3D MM64_VMID_16_BITS_SUPPORT=
 )
>> +    {
>> +        vtcr_el2 |=3D VTCR_VS;
>> +        max_vmid =3D MAX_VMID_16_BIT;
>> +    }
>> +    else
>> +        vtcr_el2 &=3D ~VTCR_VS;
> This is the last change to vtcr_el2. Why do you put p2m_vmid_allocator_in=
it()
> in-between this and write to vtcr_el2 register? It looks odd.

ok I can have the write to the register before calling p2m_vmid_allocator_i=
nit, in the
end what matters is only to call p2m_vmid_allocator_init() after setting ma=
x_vmid.

>=20
>> +
>> +    p2m_vmid_allocator_init();
>> +
>> +    WRITE_SYSREG(vtcr_el2, VTCR_EL2);
>> +
>> +    /*
>> +     * VSTCR_EL2.SA defines secure stage 2 translation output address s=
pace.
>> +     * To make sure that all stage 2 translations for the Secure PA spa=
ce access
>> +     * the Secure PA space, we keep SA bit as 0.
>> +     *
>> +     * VSTCR_EL2.SC is NS check enable bit. To make sure that Stage 2 N=
S
>> +     * configuration is checked against stage 1 NS configuration in EL1=
&0
>> +     * translation regime for the given address, and generates a fault =
if they
>> +     * are different, we set SC bit 1.
>> +     */
>> +    vstcr_el2 &=3D ~VSTCR_EL2_SA;
>> +    vstcr_el2 |=3D VSTCR_EL2_SC;
>> +    WRITE_SYSREG(vstcr_el2, VSTCR_EL2);
>> +
>> +    printk("P2M: %d-bit IPA with %d-bit PA and %d-bit VMID\n",
> All these are unsigned, so %u.

Oops, blindly copying from MMU code, I realise we have the issue also there

Cheers,
Luca



From xen-devel-bounces@lists.xenproject.org Mon Apr 13 10:27:40 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 13 Apr 2026 10:27:40 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1281031.1564091 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wCEVy-00068X-EY; Mon, 13 Apr 2026 10:27:34 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1281031.1564091; Mon, 13 Apr 2026 10: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 1wCEVy-00068Q-Bg; Mon, 13 Apr 2026 10:27:34 +0000
Received: by outflank-mailman (input) for mailman id 1281031;
 Mon, 13 Apr 2026 10:27:33 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <Luca.Fancellu@arm.com>) id 1wCEVx-000673-4F
 for xen-devel@lists.xenproject.org; Mon, 13 Apr 2026 10:27:33 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wCEVw-002gp1-GH
 for xen-devel@lists.xenproject.org; Mon, 13 Apr 2026 12:27:32 +0200
Received: from [10.42.69.8] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <Luca.Fancellu@arm.com>)
 id 69dcc509-e002-0a2a0a5209dd-0a2a450881be-24
 for <xen-devel@lists.xenproject.org>; Mon, 13 Apr 2026 12:27:32 +0200
Received: from [52.101.70.2]
 (helo=AS8PR04CU009.outbound.protection.outlook.com)
 by tlsNG-c1860d.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.0)
 (envelope-from <Luca.Fancellu@arm.com>)
 id 69dcc513-fab6-0a2a45080019-346546027e76-3
 for <xen-devel@lists.xenproject.org>; Mon, 13 Apr 2026 12:27:32 +0200
Received: from AS9PR05CA0336.eurprd05.prod.outlook.com (2603:10a6:20b:490::28)
 by DBBPR08MB6106.eurprd08.prod.outlook.com (2603:10a6:10:202::6) with
 Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9769.48; Mon, 13 Apr
 2026 10:27:24 +0000
Received: from AMS0EPF000001A6.eurprd05.prod.outlook.com
 (2603:10a6:20b:490:cafe::a) by AS9PR05CA0336.outlook.office365.com
 (2603:10a6:20b:490::28) with Microsoft SMTP Server (version=TLS1_3,
 cipher=TLS_AES_256_GCM_SHA384) id 15.20.9769.48 via Frontend Transport; Mon,
 13 Apr 2026 10:27:24 +0000
Received: from outbound-uk1.az.dlp.m.darktrace.com (4.158.2.129) by
 AMS0EPF000001A6.mail.protection.outlook.com (10.167.16.233) with Microsoft
 SMTP Server (version=TLS1_3, cipher=TLS_AES_256_GCM_SHA384) id 15.20.9769.17
 via Frontend Transport; Mon, 13 Apr 2026 10:27:24 +0000
Received: from DU2PR08MB7272.eurprd08.prod.outlook.com (2603:10a6:10:2d7::16)
 by AM0PR08MB5378.eurprd08.prod.outlook.com (2603:10a6:208:18a::15)
 with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9769.48; Mon, 13 Apr
 2026 10:26:22 +0000
Received: from DU2PR08MB7272.eurprd08.prod.outlook.com
 ([fe80::5d34:206f:373:a323]) by DU2PR08MB7272.eurprd08.prod.outlook.com
 ([fe80::5d34:206f:373:a323%6]) with mapi id 15.20.9769.046; Mon, 13 Apr 2026
 10:26: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=arm.com header.i="@arm.com" header.h="From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck"; dkim=pass header.s=selector1 header.d=arm.com header.i="@arm.com" header.h="From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck"
ARC-Seal: i=2; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=pass;
 b=xjXmu7MXM/Ai+pxaEtVgztm0ru+7/MdTGYAAfDI+gFzbz1uRjnnOBsIsoUxdurR2VBWbRgqqXbrP4cc/H8Yy84HWxwy8yndMwxcCavlVBcUCtjpSHO+th+m23UxpeDJn6jRaEcycbDGYJgp6ZYQK8M/X5Q9EJwd9jeyFA47ksyce2Lb+5vbyfJ1I3YqVadOhykV4KWwVEggvSgwaPIR85N/eRhmVfz6FxvP3ZcyWia6OEi1Gr72+CVRXJAxArrJZC+KRAuuAEnL7gXlzHCO6cDkBPqxzxtBSD1BVlgOrMqJux4VP3lisONahp9ruJ/n7fB/EZc1x/CRevP+ewRTYZw==
ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com;
 s=arcselector10001;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1;
 bh=F4I4HNdN/6g9nZ6PILjXBmmgsJbnxoZP8aFuINqNCio=;
 b=qOyi/jiqM4M5UfDdGwijwa2MDUbZ7zAlbXdglbLdHIJnMgzIxET+17yPiPBsJAsFGQiG5FOVqbJlw06IvwA+EfoDjDT/pAg5gWnYBRKQfLeV+TRY9KAr2wnePYZEAOALyxo5Xs5fxcjZL1KfPLuBkbK9p+yu4EWjGQmjNrBm6nKf4i8v1km91v5CBTKG2gO4gITqpf7z9+PJvjOxu6yvHXkwrAMbLZ6qUFxy/3MjHBAdWjdKNpeFcKwt/oftjsCAno2uKCj/tSvQGsYA0KyCOSWqc/8U1tHpIlgg+tv1QgJHhS0Vp26039yImBzm27AM9c/Cf/LNMuHLAR6nWWBX6g==
ARC-Authentication-Results: i=2; mx.microsoft.com 1; spf=pass (sender ip is
 4.158.2.129) smtp.rcpttodomain=epam.com smtp.mailfrom=arm.com; dmarc=pass
 (p=none sp=none pct=100) action=none header.from=arm.com; dkim=pass
 (signature was verified) header.d=arm.com; arc=pass (0 oda=1 ltdi=1
 spf=[1,1,smtp.mailfrom=arm.com] dkim=[1,1,header.d=arm.com]
 dmarc=[1,1,header.from=arm.com])
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=arm.com; s=selector1;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck;
 bh=F4I4HNdN/6g9nZ6PILjXBmmgsJbnxoZP8aFuINqNCio=;
 b=IdMadFs+4k/g+rUWFqSTMMPTsFWF5DvY+ssaWXD40wOKnC3vaCNY2o7OwJwkMWnMqMrpFHA3daG+xg1IXlp/6BcQ5MtqvKxn6KyIeQdRIgTymtvTeVYNBDChFGeAtiq30zJIcJsiUwfgwdi3o6BOhr1W5SlfMikR8QCGCel5qWI=
X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 4.158.2.129)
 smtp.mailfrom=arm.com; dkim=pass (signature was verified)
 header.d=arm.com;dmarc=pass action=none header.from=arm.com;
Received-SPF: Pass (protection.outlook.com: domain of arm.com designates
 4.158.2.129 as permitted sender) receiver=protection.outlook.com;
 client-ip=4.158.2.129; helo=outbound-uk1.az.dlp.m.darktrace.com; pr=C
ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none;
 b=r5WvKGyfV35skksy/8/cDEpNLabKsMGqEsGpmHPmE3peLaxTs4u6BbEGO/9JzmfAhp/s7Z2zjaWdvDyTDbyg2P3wVMhoxsIGkyJihriTQiWdbiLqwhPGPHsOzDYMtTZ/ZJ0HG0xp/Ht3pgUdrqZ+RGIfe4MEP0JI2IDDbeaP1xkU/Vz0j0FucqB0yTHDIndkvLwXUywEqNTSTBB3LjtVOrv7HnXf/vs6hWEuWa3MnNVT+ihH21HezZd4/DPLw1E+/M3f073bLDrEfiuFr4Ux6yU9EayHxPVch/nNP6dBjFN7LShtMIjbJ4m46o9rqFTMjUWmhOuTH3NXYXRlkEJ0Eg==
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com;
 s=arcselector10001;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1;
 bh=F4I4HNdN/6g9nZ6PILjXBmmgsJbnxoZP8aFuINqNCio=;
 b=EI3toym1kT/IFgVa3P7XRkgGhLdHjQ9QaO/LUlHs8Thc7RvZN376Q8KuNKGuXIF4GZX9n4pRmJ3nQLbOxRvwesr0PXJ7GCB8e5QoSUuD/VICMgSYnO0WxONY4Mur9srNtZjIuWcaQYs5cUKittmTmGq1n4DuH4WoPGY4BIyO9zOWTXu8gSHwyIgoJfspk25bob8NkjzVkiwWQ6LHZrJdoD7diAr94RqBhIojDLNig2oqBwYR/RnQ9AL3YbvICW9PT7TKLvx4Z8DEUCZbYbLLAuV5OPKbUo9nnwHN4zZUTrZysgCmVlHkkGy9mG/drtJWAOqZJryoAkvZpAK2uDfiuA==
ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass
 smtp.mailfrom=arm.com; dmarc=pass action=none header.from=arm.com; dkim=pass
 header.d=arm.com; arc=none
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=arm.com; s=selector1;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck;
 bh=F4I4HNdN/6g9nZ6PILjXBmmgsJbnxoZP8aFuINqNCio=;
 b=IdMadFs+4k/g+rUWFqSTMMPTsFWF5DvY+ssaWXD40wOKnC3vaCNY2o7OwJwkMWnMqMrpFHA3daG+xg1IXlp/6BcQ5MtqvKxn6KyIeQdRIgTymtvTeVYNBDChFGeAtiq30zJIcJsiUwfgwdi3o6BOhr1W5SlfMikR8QCGCel5qWI=
From: Luca Fancellu <Luca.Fancellu@arm.com>
To: Milan Djokic <milan_djokic@epam.com>
CC: "xen-devel@lists.xenproject.org" <xen-devel@lists.xenproject.org>, 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.pau@citrix.com>
Subject: Re: [PATCH v3 11/23] xen/arm: vsmmuv3: Attach Stage-1 configuration
 to SMMUv3 hardware
Thread-Topic: [PATCH v3 11/23] xen/arm: vsmmuv3: Attach Stage-1 configuration
 to SMMUv3 hardware
Thread-Index: AQHcyy/51+T36BIjnkSypQJ5KiHeEw==
Date: Mon, 13 Apr 2026 10:26:21 +0000
Message-ID: <B22B467B-C747-4070-B40F-A8297AB9A3BB@arm.com>
References: <cover.1774918270.git.milan_djokic@epam.com>
 <059c718f5407b845b84ec53cdc3ff021296d8bf9.1774918270.git.milan_djokic@epam.com>
In-Reply-To:
 <059c718f5407b845b84ec53cdc3ff021296d8bf9.1774918270.git.milan_djokic@epam.com>
Accept-Language: en-GB, en-US
Content-Language: en-US
X-MS-Has-Attach:
X-MS-TNEF-Correlator:
x-mailer: Apple Mail (2.3826.700.81.1.6)
Authentication-Results-Original: dkim=none (message not signed)
 header.d=none;dmarc=none action=none header.from=arm.com;
x-ms-traffictypediagnostic:
	DU2PR08MB7272:EE_|AM0PR08MB5378:EE_|AMS0EPF000001A6:EE_|DBBPR08MB6106:EE_
X-MS-Office365-Filtering-Correlation-Id: b5e29222-62e6-4b75-4fcb-08de994740fd
x-checkrecipientrouted: true
nodisclaimer: true
X-MS-Exchange-SenderADCheck: 1
X-MS-Exchange-AntiSpam-Relay: 0
X-Microsoft-Antispam-Untrusted:
 BCL:0;ARA:13230040|1800799024|366016|376014|38070700021|22082099003|18002099003|56012099003;
X-Microsoft-Antispam-Message-Info-Original:
 2ofFCddXYY4otPYFlk1QoTqa0UAxh0FoxDnMjyJSfpwojZ96aaDsipHDwFyFWoAyl7V+CHWRJytp3yHNS22zW4jQo0OR/KKxGgvrOPn8n68aM7yXDKVDZX3FenL+i8MULodIonCRp7OhmRO05yUgq0HFppy8gquHT9+8XrtDyM0W+58oly9A0rv/nnX6Ir9kjNdSGvNACnM8nH9P8F6eISASsQ98QOiFeh0cIqBgd4DlIlNY4RyhEvvHTZSG3LuHA255Y31m8js1VpQcalJo3AiF2UqMCWklRnNUlGAJ7a4PG5cnPFg+wu5j4zapkjfKLPmZbmvWQmKwLSqDUDrbrCrpUlO0FJUmgdFeqTmqum1XjpnW3nTE9Rwy3I0nfaKSjTZyoDn7q5YiY7F4zK4ocVXHRAmHpcR3p2uf8rjnBd5iEBV7QHzTRfEZAnWL/c5HB94wzA8wSONAPNIC1s4IhUam6+zAaAfURJLDhN0Awhmv14Ai/ti6+FO4HylwTX3ocXDgbUxkhTUL34q8pXGnFCjkHv2djOxMun+K3Y3zHsbVEkPADneqzQ4KhqL2fPWTjmDoqCEj9yt2koHZpwGar7Ij6tFOZWVHPz1i0h23jJ0wP/spWUVhCVnKjIDdBtQuOwgUHrM8xITTKegACC3UIr9mEXG2pV2N2sBTqqHCdrdbfynWEVXT5w87Jl0IYChMHK0W0cSZudoScPwFCyMqR+7eTAIz60EClR3QEw5u6OJCyaRxld4iAZHksfu5UWYQNGKY6nv/d+6ExzK2PKq7STqdX3THVqmT3zvjKE7UYLg=
X-Forefront-Antispam-Report-Untrusted:
 CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:DU2PR08MB7272.eurprd08.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(1800799024)(366016)(376014)(38070700021)(22082099003)(18002099003)(56012099003);DIR:OUT;SFP:1101;
Content-Type: text/plain; charset="iso-8859-1"
Content-ID: <E18FD225A71C774F8A9459111CB585A8@eurprd08.prod.outlook.com>
Content-Transfer-Encoding: quoted-printable
MIME-Version: 1.0
X-Exchange-RoutingPolicyChecked:
 rk0zU4OBz73hVaoybMKuSOL0YH2gjMZ6GNjrjn1Q00Id0gCJdGZFRvjPYF1TXpg2KWQYDMmNHl5Td4aEWiKm4zPhAbiYLQkL3tN/4L+jc0za2qnKW2Mi8zVbX48W4pHGlyfc1CzQiVTee/MKO9Ya/0x9BzuYzuPGQM0bvfTg5QxVwvMEPyJ/nBGBXw8lU+VJ8gtowUwUTIuG8tug3K5GcrFAPTnc2EGQOhEeEtIecCnxrUiNI0mS/xa7WljY761f69hdqCQXFcJpwBurcL3LpGgnBXKL0OcF1JI6ce/LpmDGS9qGDfXOPw0DQb+tD61m+8ypB4/BJyqazSXzTwgCpg==
X-MS-Exchange-Transport-CrossTenantHeadersStamped: AM0PR08MB5378
X-EOPAttributedMessage: 0
X-MS-Exchange-Transport-CrossTenantHeadersStripped:
 AMS0EPF000001A6.eurprd05.prod.outlook.com
X-MS-PublicTrafficType: Email
X-MS-Office365-Filtering-Correlation-Id-Prvs:
	3369cfe9-96b8-4057-81ce-08de99471bb7
X-Microsoft-Antispam:
	BCL:0;ARA:13230040|14060799003|376014|1800799024|36860700016|35042699022|82310400026|56012099003|22082099003|18002099003;
X-Microsoft-Antispam-Message-Info:
	TVwk8ekQFjb2EntsJzKk/tWkaMomKewMOPJYHNCpCIwDT/TS/3T5gGa+FfvOl+Yhu+XpJ/lCR38vpxAyTDjxkvlqJaakdEsuGrtuk/F8/M2k1RkFr2t0LZiHEAf8XKhghs71QVPzFrVl+y+2K4AviX0LwAOzkdstIHty1k3YCHOuCsDsbuyoJQWuFL4eXNQwnS9E8Aci1cfPhMK/TSRiE4DUNUDBMQspjj1Pz+ZGoO+rUxpPbkkEXYaIo1tSqzEfHFT3poAhRHvfbOb88iAceY1tuxidwBx9F+nW1dMUj/VWJGtlO2er9Tfpf57dPoI9Ddrr219R0vNlHJIs6h7WMviIvo9Vu/6lCXumngGdKvK/57RBpmDLfeK08XMvFmm5o0wyujjE2qmFIQvL70Wf951rn+q++Q/Z5TJ1rbl6kFa+036QlyDUGh43FnAYI8Iqs09ZF5j+Qv3rON/kTAQBIjuhOp7lrqoXHwNBOj0/Emd2DeghY6hlIp8VrqKaTeRd1eMw4zxAkwYXUymUV/zBvA8SZ+PQZ1X6t29GYisjV1ccE+KsENpoGgwCQGnS5JqXocWely9gSfqm04/tbfx8XSoiaP8BrNLasLDdx6vWIlM2xcxeMwHOxxc/b/LG8CdPbcstRxrJW9Jz/D/LOncmCDmJa6k8nCZCHPbXC4KlUkMA2qC4ZNzN/BQpfwXxvYSyr5FP3pTmUPI4q+kAyxf3BWJTBBWZqkU+Kntj+SVjiw7IM/oldzwN5nuXbkduH5/vjl3UpU5u9enJsxrvO1K90w==
X-Forefront-Antispam-Report:
	CIP:4.158.2.129;CTRY:GB;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:outbound-uk1.az.dlp.m.darktrace.com;PTR:InfoDomainNonexistent;CAT:NONE;SFS:(13230040)(14060799003)(376014)(1800799024)(36860700016)(35042699022)(82310400026)(56012099003)(22082099003)(18002099003);DIR:OUT;SFP:1101;
X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1
X-MS-Exchange-AntiSpam-MessageData-0:
	N1CxGByKa1Z8/q3JjoBaBRJ8w0YvEkXJTrP3qrxdYfbgO7i4S/YXtoC11FPSwrqiBH6clbtOlWePDi4k//uZIyOnTRnaiJUCgYagrF0fwotLVYZLfeVFO4GEzVeAzVQ3wk13Py/c8BByJKoMxg5gA3Vtnwc5dOh1I1KfiNgRbnz0orLdKezPOKxYQ7iYBmvAwxZAUaXzAsNZFw0mkf1sGWrmTwxaS6WFfPWLR21KELoPV7BKh3dUKFP+Mva9SdF6jmkNH5qXN08nKg3Qtoh7IxuQuGO6w36A+IrFlz0YVJWyDRsOrczhBXyTcuTLKxiM+9n93HT/w8rkDKMfzeoIAjpq1K3rv6A06v344JLa/ovyLVg3XzrR68WPqm4gwK/joT0bWcOZivY8jppIFgQT2K6VW7j7iju1FAPB/jwL5URoEs2kvbUEwd/jSKpIDWru
X-OriginatorOrg: arm.com
X-MS-Exchange-CrossTenant-OriginalArrivalTime: 13 Apr 2026 10:27:24.4187
 (UTC)
X-MS-Exchange-CrossTenant-Network-Message-Id: b5e29222-62e6-4b75-4fcb-08de994740fd
X-MS-Exchange-CrossTenant-Id: f34e5979-57d9-4aaa-ad4d-b122a662184d
X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=f34e5979-57d9-4aaa-ad4d-b122a662184d;Ip=[4.158.2.129];Helo=[outbound-uk1.az.dlp.m.darktrace.com]
X-MS-Exchange-CrossTenant-AuthSource:
	AMS0EPF000001A6.eurprd05.prod.outlook.com
X-MS-Exchange-CrossTenant-AuthAs: Anonymous
X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem
X-MS-Exchange-Transport-CrossTenantHeadersStamped: DBBPR08MB6106
X-purgate-ID: tlsNG-c1860d/1776076052-75557497-BF3F65D6/0/0
X-purgate-type: clean
X-purgate-size: 5116

Hi Milan,


> On 31 Mar 2026, at 02:52, Milan Djokic <milan_djokic@epam.com> wrote:
>=20
> From: Rahul Singh <rahul.singh@arm.com>
>=20
> Attach the Stage-1 configuration to device STE to support nested
> translation for the guests.
>=20
> 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  | 79 ++++++++++++++++++++++++++
> xen/drivers/passthrough/arm/smmu-v3.h  |  1 +
> xen/drivers/passthrough/arm/vsmmu-v3.c | 18 ++++++
> xen/include/xen/iommu.h                |  6 ++
> 5 files changed, 111 insertions(+)
>=20
> diff --git a/xen/arch/arm/include/asm/iommu.h b/xen/arch/arm/include/asm/=
iommu.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/passthro=
ugh/arm/smmu-v3.c
> index 87612df21d..cf8f638a49 100644
> --- a/xen/drivers/passthrough/arm/smmu-v3.c
> +++ b/xen/drivers/passthrough/arm/smmu-v3.c
> @@ -2810,6 +2810,37 @@ static struct arm_smmu_device *arm_smmu_get_by_dev=
(const struct device *dev)
> return NULL;
> }
>=20
> +static struct iommu_domain *arm_smmu_get_domain_by_sid(struct domain *d,
> + u32 sid)

I think this might be wrong, a system can have multiple SMMU and the SID is=
 unique only
on each SMMU, not on the overall platform, I think arm_smmu_attach_guest_co=
nfig should
pass also the smmu for the selected 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
> + * assigned to this SMMU
> + */
> + 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)
> {
> @@ -3022,6 +3053,53 @@ static void arm_smmu_iommu_xen_domain_teardown(str=
uct domain *d)
> xfree(xen_domain);
> }
>=20
> +static int arm_smmu_attach_guest_config(struct domain *d, u32 sid,
> + 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 =3D arm_smmu_get_domain_by_sid(d, sid);
> +
> + if (!io_domain)
> + return -ENODEV;
> +
> + smmu_domain =3D to_smmu_domain(io_domain);
> +
> + spin_lock(&xen_domain->lock);
> +
> + switch (cfg->config) {
> + case ARM_SMMU_DOMAIN_ABORT:
> + smmu_domain->abort =3D true;

Shold we change also smmu_domain->stage here and ...

> + break;
> + case ARM_SMMU_DOMAIN_BYPASS:
> + smmu_domain->abort =3D false;

Here? I see arm_smmu_write_strtab_ent() uses it to select
s1_cfg or s2_cfg configuration

> + break;
> + case ARM_SMMU_DOMAIN_NESTED:
> + /* Enable Nested stage translation. */
> + smmu_domain->stage =3D ARM_SMMU_DOMAIN_NESTED;
> + 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);
> + 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,
> @@ -3034,6 +3112,7 @@ static const struct iommu_ops arm_smmu_iommu_ops =
=3D {
> .unmap_page =3D arm_iommu_unmap_page,
> .dt_xlate =3D arm_smmu_dt_xlate,
> .add_device =3D arm_smmu_add_device,
> + .attach_guest_config =3D arm_smmu_attach_guest_config
> };
>=20
> static __init int arm_smmu_dt_init(struct dt_device_node *dev,

Cheers,
Luca




From xen-devel-bounces@lists.xenproject.org Mon Apr 13 10:32:16 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 13 Apr 2026 10:32:16 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1281039.1564101 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wCEaT-0007fJ-W6; Mon, 13 Apr 2026 10:32:13 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1281039.1564101; Mon, 13 Apr 2026 10:32: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 1wCEaT-0007fC-SE; Mon, 13 Apr 2026 10:32:13 +0000
Received: by outflank-mailman (input) for mailman id 1281039;
 Mon, 13 Apr 2026 10:32:13 +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 1wCEaT-0007f6-1L
 for xen-devel@lists.xenproject.org; Mon, 13 Apr 2026 10:32:13 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wCEaS-001spm-DN
 for xen-devel@lists.xenproject.org; Mon, 13 Apr 2026 12:32:12 +0200
Received: from [10.42.69.12] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <Michal.Orzel@amd.com>)
 id 69dcc628-bab6-0a2a0a5309dd-0a2a450cc1e8-14
 for <xen-devel@lists.xenproject.org>; Mon, 13 Apr 2026 12:32:11 +0200
Received: from [52.101.43.22]
 (helo=SJ2PR03CU001.outbound.protection.outlook.com)
 by tlsNG-d25034.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.0)
 (envelope-from <Michal.Orzel@amd.com>)
 id 69dcc538-f40c-0a2a450c0019-34652b165d4c-3
 for <xen-devel@lists.xenproject.org>; Mon, 13 Apr 2026 12:28:09 +0200
Received: from BN9PR03CA0877.namprd03.prod.outlook.com (2603:10b6:408:13c::12)
 by LV3PR12MB9187.namprd12.prod.outlook.com (2603:10b6:408:194::20)
 with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9818.20; Mon, 13 Apr
 2026 10:28:04 +0000
Received: from BN1PEPF00005FFC.namprd05.prod.outlook.com
 (2603:10b6:408:13c:cafe::cc) by BN9PR03CA0877.outlook.office365.com
 (2603:10b6:408:13c::12) with Microsoft SMTP Server (version=TLS1_3,
 cipher=TLS_AES_256_GCM_SHA384) id 15.20.9769.48 via Frontend Transport; Mon,
 13 Apr 2026 10:28:04 +0000
Received: from satlexmb07.amd.com (165.204.84.17) by
 BN1PEPF00005FFC.mail.protection.outlook.com (10.167.243.228) with Microsoft
 SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id
 15.20.9769.17 via Frontend Transport; Mon, 13 Apr 2026 10:28:04 +0000
Received: from SATLEXMB04.amd.com (10.181.40.145) by satlexmb07.amd.com
 (10.181.42.216) with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.2.2562.17; Mon, 13 Apr
 2026 05:28:03 -0500
Received: from satlexmb07.amd.com (10.181.42.216) by SATLEXMB04.amd.com
 (10.181.40.145) with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2507.39; Mon, 13 Apr
 2026 05:28:03 -0500
Received: from [10.252.147.171] (10.180.168.240) by satlexmb07.amd.com
 (10.181.42.216) with Microsoft SMTP Server id 15.2.2562.17 via Frontend
 Transport; Mon, 13 Apr 2026 05:28:01 -0500
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@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=RcIjd+Y1DP7bIOiUtF06Rg39zvHdl0Vyxzz5yXyOoWh/t+7S/fF7BT+1W3QUOkPJ1MifZ6IrY1eqsDiq+qe1elrr8Tlj5GwKg9+dQ8T2iLEBnpa5Na+8xX4je25InlQh/oXkAJE9M0xqyfvx3KI02lkUaKXoIb6kOLjNKN0d9hlJ6sGfdSJCtJIU2STkj3T9TAdXZf/hzxHRg5Vd36LXrxDRuQ42FFx0O6rc1v5KnyhjxNHgezct7jfJgt50ciXckrBOaqDLafDeSyQZqK17H5zoIe9nsS8qbip6qwo2HrpKc9u1lXdS5SeuX9MVqOCV1Bax/gG6wn/FeC6z0PFRmg==
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com;
 s=arcselector10001;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1;
 bh=H/z2OmdoXPcAEd3PIyGujSBvqgVOqgg6qrZm7JIsj0E=;
 b=AhbPHkeKzF8nnnJbx3BJK8pa9GlAgs5gUUdN0zPH106E4uHTAXkvK7x4MTslbRrL3z7PPumqHUddA0wlUoAdrtaFApi8HJBgWiUe5I96Z+kKzJzDA4z/5s8/jy9FutXqj5jUMfo0KqdHPR40CXVZyEfF1RmmIeVEhxJe0UUwubB8h4fkzv8nDYWNQdp2GL0s/d5QN5BxUSG+8TMZwH3W4lygODRjZh05LE4Vx5ZZy1YnsQEk1I55CAvSTHgmmBW0b8H/dngg4Mi8Y/MeXC+X1uxkB/Vadw41a+hzocU6TGuUs/M/btwxKH6Gkd7ioCSWbaOTPUYAvux2Fw2JlYldOw==
ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass (sender ip is
 165.204.84.17) smtp.rcpttodomain=arm.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=H/z2OmdoXPcAEd3PIyGujSBvqgVOqgg6qrZm7JIsj0E=;
 b=tSNc/xigEVDuyZnk9qAh2BpmHAApfHRbPGXz38A8wCkY97VbFdHM8WT7XYNOr/1dnR9kO3MJUoYKH1GlJmi/H8IL3uNGTSEK/AqozoUz2N74G3WOdrmwXcEz0mU7LVU1GjegOHHM6fQvwQdFxNL0GomCAeFRvBryrX5bhjFwnLk=
X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 165.204.84.17)
 smtp.mailfrom=amd.com; dkim=none (message not signed)
 header.d=none;dmarc=pass action=none header.from=amd.com;
Received-SPF: Pass (protection.outlook.com: domain of amd.com designates
 165.204.84.17 as permitted sender) receiver=protection.outlook.com;
 client-ip=165.204.84.17; helo=satlexmb07.amd.com; pr=C
Message-ID: <81b7e58f-f004-4632-bc07-00f136d15029@amd.com>
Date: Mon, 13 Apr 2026 12:28:01 +0200
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH v3 1/3] arm/mpu: implement setup_virt_paging for MPU
 system
To: Luca Fancellu <Luca.Fancellu@arm.com>
CC: "xen-devel@lists.xenproject.org" <xen-devel@lists.xenproject.org>, "Penny
 Zheng" <Penny.Zheng@arm.com>, Stefano Stabellini <sstabellini@kernel.org>,
	Julien Grall <julien@xen.org>, Bertrand Marquis <Bertrand.Marquis@arm.com>,
	Volodymyr Babchuk <Volodymyr_Babchuk@epam.com>, Wei Chen <Wei.Chen@arm.com>,
	Hari Limaye <Hari.Limaye@arm.com>, Harry Ramsey <Harry.Ramsey@arm.com>
References: <20260408135531.1744388-1-luca.fancellu@arm.com>
 <20260408135531.1744388-2-luca.fancellu@arm.com>
 <43fd7fd7-43dc-4c17-8ff6-b58800fd5f46@amd.com>
 <92DD0227-9023-4824-BB39-56E7F20F2F27@arm.com>
From: "Orzel, Michal" <michal.orzel@amd.com>
Content-Language: en-US
In-Reply-To: <92DD0227-9023-4824-BB39-56E7F20F2F27@arm.com>
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: 7bit
Received-SPF: None (SATLEXMB04.amd.com: michal.orzel@amd.com does not
 designate permitted sender hosts)
X-EOPAttributedMessage: 0
X-MS-PublicTrafficType: Email
X-MS-TrafficTypeDiagnostic: BN1PEPF00005FFC:EE_|LV3PR12MB9187:EE_
X-MS-Office365-Filtering-Correlation-Id: 726a2388-7237-4b91-0290-08de99475890
X-MS-Exchange-SenderADCheck: 1
X-MS-Exchange-AntiSpam-Relay: 0
X-Microsoft-Antispam:
	BCL:0;ARA:13230040|82310400026|7416014|376014|36860700016|1800799024|56012099003|22082099003|18002099003;
X-Microsoft-Antispam-Message-Info:
	042sKaGb1PS3wKgqNMPOiHMfmfKZEVXDLFL9jgqLU/C5gfEACxL0r8SF6lJZV6NGh1ETB15dHafSQmrsNakUAo0qmcZQ2cQacmBKtQZlRr2w3fAvFFB3R24zpvMN5Hr8VcCNtchXWu+w61BXTx0+zcYiBvEvjFOXW+GKvzhzkrsLsdM8alJkngQCKgqvIfgW6c4hsqfi4onSzHhU7s2GJebFdB7VM215ldhBPZFxeNIPHEFvtbzOI2nlaT6Nd7CfxRBQ+QUCyrJAUBS/i0U967zqHjmHDpwKgvwP1qssSTzbMFvmfrdwT81I5iR9TZ7hZZP8gbKNFxycUrU3eCzk/8hl8/RgEfJ6NU9OV6n7Z33Rw3dkryS+fF/JdneHNiogTPitB+uHVnhtnAXXFLNdLemy9OyKUCoay0RX94HW/Yfu5t5dTqwqUTKJLlxKW5p8Rhr929VYHdU7VkfWFCR5it2FW70axJHSrvVAAOY61YgwjfwfwlipfW+M4ogLcC1Gx5D3hDPp5BGdV8nGyWURwC+nyXIkeYmbieFbZNZ1lRDF6DWzt+E59ftAq6scd9WAaLquMCeovTlgA1X6Edxh/+rSa/VkPxa79DvZwrURFPwNHn/m1753dM+dsX6Hz58Lz2amEXOJ6y36j5OtIYm2nGYqScDyzVmN8CkReRudb5CwspRcn7PnBLJzwQKugzmVWCiw8NZKYHfRxcLVed+VeFbQtsZyDJcxJ91CoCO00s4loG5ITwkclXTfWiylO04Qj5diZNkNazlaZodx47vfTA==
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)(36860700016)(1800799024)(56012099003)(22082099003)(18002099003);DIR:OUT;SFP:1101;
X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1
X-MS-Exchange-AntiSpam-MessageData-0:
	+c2ksASmmxpBU2Q7eO2SfqKyCEor9Z6MEr7AYWe4ILw1pRXeZxJhUQujf7Ud5TKpydmnCEI6usZfI0g+VAD7TodrPLHzkS5Vcp5hTsGdx2JmL6/UrpnYReOwv2L+X/9ZlSFsGx2Ktm7n7cmyXuHHrJuqJWlyzAvUp2Vu2etrq8mVdF0pYiLDh9v12yNZ3oGxWPdQrhR5pMIufYTWAI9VGwVFS+tQCvtqTXp9CF78UVROGeq/m//wDqAMe66KndMGmwxp3loX2s7HGC3pFk+JerrBtw4PO4xaN91iRKw65ybVVR8uFbtdS/FQcl40IB55/ghv/5D1pEziQkGroUSClAwTXLkznJYcZxPkTHwOrTQWBAHBsAujT8+5R1tuG6ZUMZnrbLqZr6G714tsa9QLFBk/aMsbdKV0OI99ZfEB3pWkByiuj64oZnF/QLd8kBi7
X-OriginatorOrg: amd.com
X-MS-Exchange-CrossTenant-OriginalArrivalTime: 13 Apr 2026 10:28:04.0353
 (UTC)
X-MS-Exchange-CrossTenant-Network-Message-Id: 726a2388-7237-4b91-0290-08de99475890
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:
	BN1PEPF00005FFC.namprd05.prod.outlook.com
X-MS-Exchange-CrossTenant-AuthAs: Anonymous
X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem
X-MS-Exchange-Transport-CrossTenantHeadersStamped: LV3PR12MB9187
X-purgate-ID: tlsNG-d25034/1776076091-80B5CA3D-3503C446/0/0
X-purgate-type: clean
X-purgate-size: 3682



On 13/04/2026 11:54, Luca Fancellu wrote:
> Hi Michal,
> 
>>>
>>> void __init setup_virt_paging(void)
>>> {
>>> -    BUG_ON("unimplemented");
>>> +    register_t vtcr_el2 = READ_SYSREG(VTCR_EL2);
>>> +    register_t vstcr_el2 = READ_SYSREG(VSTCR_EL2);
>>> +
>>> +    /* PA size */
>>> +    const unsigned int pa_range_info[] = {32, 36, 40, 42, 44, 48, 52, 0,
>>> +                                          /* Invalid */};
>>> +
>>> +    /*
>>> +     * Restrict "p2m_ipa_bits" if needed. As P2M table is always configured
>>> +     * with IPA bits == PA bits, compare against "pabits".
>>> +     */
>>> +    if ( pa_range_info[system_cpuinfo.mm64.pa_range] < p2m_ipa_bits )
>>> +        p2m_ipa_bits = pa_range_info[system_cpuinfo.mm64.pa_range];
>>> +
>>> +    /*
>>> +     * The MSA and MSA_frac fields in the ID_AA64MMFR0_EL1 register identify the
>>> +     * memory system configurations supported. In Armv8-R AArch64, the
>>> +     * only permitted value for ID_AA64MMFR0_EL1.MSA is 0b1111.
>>> +     */
>>> +    if ( system_cpuinfo.mm64.msa != MM64_MSA_PMSA_SUPPORT )
>>> +        goto fault;
>>> +
>>> +    /* Permitted values for ID_AA64MMFR0_EL1.MSA_frac are 0b0001 and 0b0010. */
>>> +    if ( (system_cpuinfo.mm64.msa_frac != MM64_MSA_FRAC_PMSA_SUPPORT) &&
>>> +         (system_cpuinfo.mm64.msa_frac != MM64_MSA_FRAC_VMSA_SUPPORT) )
>>> +        goto fault;
>>> +
>>> +    /* Stage 1 EL1&0 translation regime uses PMSAv8 by default */
>>> +    vtcr_el2 &= ~VTCR_MSA;
>>> +
>>> +    /*
>>> +     * Clear VTCR_EL2.NSA bit to configure non-secure stage 2 translation output
>>> +     * address space to access the Secure PA space as Armv8r only implements
>>> +     * secure state.
>>> +     */
>>> +    vtcr_el2 &= ~VTCR_NSA;
>>> +
>>> +    /*
>>> +     * cpuinfo sanitization makes sure we support 16bits VMID only if all cores
>>> +     * are supporting it.
>>> +     *
>>> +     * Set the VS bit only if 16 bit VIMD is supported.
>>> +     */
>>> +    if ( system_cpuinfo.mm64.vmid_bits == MM64_VMID_16_BITS_SUPPORT )
>>> +    {
>>> +        vtcr_el2 |= VTCR_VS;
>>> +        max_vmid = MAX_VMID_16_BIT;
>>> +    }
>>> +    else
>>> +        vtcr_el2 &= ~VTCR_VS;
>> This is the last change to vtcr_el2. Why do you put p2m_vmid_allocator_init()
>> in-between this and write to vtcr_el2 register? It looks odd.
> 
> ok I can have the write to the register before calling p2m_vmid_allocator_init, in the
> end what matters is only to call p2m_vmid_allocator_init() after setting max_vmid.
> 
>>
>>> +
>>> +    p2m_vmid_allocator_init();
>>> +
>>> +    WRITE_SYSREG(vtcr_el2, VTCR_EL2);
>>> +
>>> +    /*
>>> +     * VSTCR_EL2.SA defines secure stage 2 translation output address space.
>>> +     * To make sure that all stage 2 translations for the Secure PA space access
>>> +     * the Secure PA space, we keep SA bit as 0.
>>> +     *
>>> +     * VSTCR_EL2.SC is NS check enable bit. To make sure that Stage 2 NS
>>> +     * configuration is checked against stage 1 NS configuration in EL1&0
>>> +     * translation regime for the given address, and generates a fault if they
>>> +     * are different, we set SC bit 1.
>>> +     */
>>> +    vstcr_el2 &= ~VSTCR_EL2_SA;
>>> +    vstcr_el2 |= VSTCR_EL2_SC;
>>> +    WRITE_SYSREG(vstcr_el2, VSTCR_EL2);
>>> +
>>> +    printk("P2M: %d-bit IPA with %d-bit PA and %d-bit VMID\n",
>> All these are unsigned, so %u.
> 
> Oops, blindly copying from MMU code, I realise we have the issue also there
There are many other places in Xen using incorrect printk identifiers but for
the new code we should use the correct ones.

~Michal



From xen-devel-bounces@lists.xenproject.org Mon Apr 13 11:07:57 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 13 Apr 2026 11:07:57 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1281064.1564117 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wCF8p-0003Vw-Pe; Mon, 13 Apr 2026 11:07:43 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1281064.1564117; Mon, 13 Apr 2026 11: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 1wCF8p-0003Vp-Mo; Mon, 13 Apr 2026 11:07:43 +0000
Received: by outflank-mailman (input) for mailman id 1281064;
 Mon, 13 Apr 2026 11:07:42 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <Luca.Fancellu@arm.com>) id 1wCF8n-0003Vj-KF
 for xen-devel@lists.xenproject.org; Mon, 13 Apr 2026 11:07:42 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wCF8m-001zyh-Si
 for xen-devel@lists.xenproject.org; Mon, 13 Apr 2026 13:07:40 +0200
Received: from [10.42.69.11] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <Luca.Fancellu@arm.com>)
 id 69dcce78-e002-0a2a0a5209dd-0a2a450b9f50-12
 for <xen-devel@lists.xenproject.org>; Mon, 13 Apr 2026 13:07:40 +0200
Received: from [40.107.159.52]
 (helo=OSPPR02CU001.outbound.protection.outlook.com)
 by tlsNG-42698a.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.0)
 (envelope-from <Luca.Fancellu@arm.com>)
 id 69dcce7b-bca8-0a2a450b0019-286b9f34e18f-3
 for <xen-devel@lists.xenproject.org>; Mon, 13 Apr 2026 13:07:39 +0200
Received: from DUZP191CA0016.EURP191.PROD.OUTLOOK.COM (2603:10a6:10:4f9::15)
 by AM0PR08MB11803.eurprd08.prod.outlook.com (2603:10a6:20b:747::8) with
 Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9769.48; Mon, 13 Apr
 2026 11:07:38 +0000
Received: from DB5PEPF00014B88.eurprd02.prod.outlook.com
 (2603:10a6:10:4f9:cafe::6b) by DUZP191CA0016.outlook.office365.com
 (2603:10a6:10:4f9::15) with Microsoft SMTP Server (version=TLS1_3,
 cipher=TLS_AES_256_GCM_SHA384) id 15.20.9769.48 via Frontend Transport; Mon,
 13 Apr 2026 11:07:38 +0000
Received: from outbound-uk1.az.dlp.m.darktrace.com (4.158.2.129) by
 DB5PEPF00014B88.mail.protection.outlook.com (10.167.8.196) with Microsoft
 SMTP Server (version=TLS1_3, cipher=TLS_AES_256_GCM_SHA384) id 15.20.9769.17
 via Frontend Transport; Mon, 13 Apr 2026 11:07:37 +0000
Received: from DU2PR08MB7272.eurprd08.prod.outlook.com (2603:10a6:10:2d7::16)
 by AM0PR08MB5460.eurprd08.prod.outlook.com (2603:10a6:208:187::20)
 with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9769.48; Mon, 13 Apr
 2026 11:06:33 +0000
Received: from DU2PR08MB7272.eurprd08.prod.outlook.com
 ([fe80::5d34:206f:373:a323]) by DU2PR08MB7272.eurprd08.prod.outlook.com
 ([fe80::5d34:206f:373:a323%6]) with mapi id 15.20.9769.046; Mon, 13 Apr 2026
 11:06: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=arm.com header.i="@arm.com" header.h="From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck"; dkim=pass header.s=selector1 header.d=arm.com header.i="@arm.com" header.h="From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck"
ARC-Seal: i=2; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=pass;
 b=ysuCD9PJCly+U3YTbYpjP4pVaZ3CAdwWz0h1XSMMj2mBfbfnpDMo3ulJl9FfRwnxVx+hn8rTY1Rz6DVH5TqoJdI43DHUVoVN2tfXwerUwZC0F2Hg1t71P2Rt/pV/pBKfgUFrKF70dVeUyYoq9W9w8ONzFR4rcGdOdCbSLa5Kuiykin1heZO4px9m3j0iFEygPDjV5JGLe8RlkCL6D/Y3BYLyL8rRYsRFfPTG0bq2h4JD7KC9aB1a183q1gs/ALkJAqborhqSWLg54KzdCXYf4HKesdCiXj/aR8s4jR8m+vV5k90ztJfsRUWabOmLgtcL1V5aWxUXci5QsZhdlYZlyA==
ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com;
 s=arcselector10001;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1;
 bh=PKm9WY0FDXfeIXUUjwNFNFIYohAbgJ+9fFMaoRS1vww=;
 b=MO4qNy7wJXk87VVBuhmzOtrm3mT7i66V+kHw+nJDOFEyDIivNEnBCkOnml++Nhls/8I1Myu11fqPyRcKIsMGxf5nrdBowK1xdPszU8oQsH/j1xdYJEbbkH5MFefhrTy71p17eS3U7EldTxW2TA5q2AW5n2nUgGwnrSxbDCfz7L0JsjUYPsZMjYt7I8j0fs5jiOpJBzsp8liMDDBYW4OSotm7pmPwU6ogqVhLM1+PKOoFjfX2KtPe68PUKDWowJloLDyfNy4EMkEYJx8AEF+BbxbQk3wKfuuDxLmQJQclfdElLAIrr/2VQhVCmwsapZwCY3uSdgpTtpQImOaDZ3DxCQ==
ARC-Authentication-Results: i=2; mx.microsoft.com 1; spf=pass (sender ip is
 4.158.2.129) smtp.rcpttodomain=epam.com smtp.mailfrom=arm.com; dmarc=pass
 (p=none sp=none pct=100) action=none header.from=arm.com; dkim=pass
 (signature was verified) header.d=arm.com; arc=pass (0 oda=1 ltdi=1
 spf=[1,1,smtp.mailfrom=arm.com] dkim=[1,1,header.d=arm.com]
 dmarc=[1,1,header.from=arm.com])
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=arm.com; s=selector1;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck;
 bh=PKm9WY0FDXfeIXUUjwNFNFIYohAbgJ+9fFMaoRS1vww=;
 b=XfC70CuLigXcCatdr2jD5/cjMg0x+OeIXIpIjtjROcskQR3PR6QIMx1JX2u9k1psNn1sQYzyaD5GvazbZ4hTFQgwSqWctZQq0KhjT1BqIEuKJLofRMttM/5uZfR1cPUThPY2LMAicj7VBBpMIKk0JD7xoftAHwRZrw//W6VXvqo=
X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 4.158.2.129)
 smtp.mailfrom=arm.com; dkim=pass (signature was verified)
 header.d=arm.com;dmarc=pass action=none header.from=arm.com;
Received-SPF: Pass (protection.outlook.com: domain of arm.com designates
 4.158.2.129 as permitted sender) receiver=protection.outlook.com;
 client-ip=4.158.2.129; helo=outbound-uk1.az.dlp.m.darktrace.com; pr=C
ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none;
 b=V5LhpyeoEw3rzihf9K+w3mQXrP3ZN17AkanExxjQouaoLJI1BjcSJBB0tcYqx9D/AF4Z1nvxMdeuxtIkQC22INhN80Iak4F1P7Do74EeAGdNMK7vQuJgrqNj28ukyBL5RQBorF+Tw2NOY0sSmZ16HOm6Q8VvLGDg3dw7Morw6dP1wvzJuQk0nYSyqGT0ILFQLesCpj/gKHvcyff7bN/p9ium7v/VEvvr8Q0kXPT/qqyOW+8rQIZJZZyvC9cP20iH0zp8Hb+MObuOjBSFeaFPncOL3alj9c7WoW7GwQvsd6PPkeAJ2AWyi58v7i+YwEcAM8f2wghBXYpYLoDFP5H4vg==
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com;
 s=arcselector10001;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1;
 bh=PKm9WY0FDXfeIXUUjwNFNFIYohAbgJ+9fFMaoRS1vww=;
 b=ZsRj6vASN0FxKSG0IsNS9XdtDc33OytSVqWAcmnLcYOOI/iZt4d2j3fmEAoYDqZyntWLQcrluGkVDzbLZIF6sT67/Yg8+hsxzN7R/NItnESJRutAd04vsBqF8NK7EVULWDK72JC+SEuaZPAcV31mJGgHiB7JqPpVqFyszuY3Nuf5Oed2+HDe/HCVzk/fFJP7FXb0GXx1E1PeMFTIY6E90FsQrYaMHlUkq020KndigNdW1tR9TUyslwl20RPyfjHxRY5B7xa9Fc+5gZu98rZ6qZZ7ycLDo+C6gIb1rIE1yQ1kJnviquMNajIGDRoaxImeIq9fc6ohDMN8gNO9n5yQXg==
ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass
 smtp.mailfrom=arm.com; dmarc=pass action=none header.from=arm.com; dkim=pass
 header.d=arm.com; arc=none
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=arm.com; s=selector1;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck;
 bh=PKm9WY0FDXfeIXUUjwNFNFIYohAbgJ+9fFMaoRS1vww=;
 b=XfC70CuLigXcCatdr2jD5/cjMg0x+OeIXIpIjtjROcskQR3PR6QIMx1JX2u9k1psNn1sQYzyaD5GvazbZ4hTFQgwSqWctZQq0KhjT1BqIEuKJLofRMttM/5uZfR1cPUThPY2LMAicj7VBBpMIKk0JD7xoftAHwRZrw//W6VXvqo=
From: Luca Fancellu <Luca.Fancellu@arm.com>
To: Milan Djokic <milan_djokic@epam.com>
CC: "xen-devel@lists.xenproject.org" <xen-devel@lists.xenproject.org>, 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>
Subject: Re: [PATCH v3 12/23] xen/arm: vsmmuv3: Add support for event queue
 and global error
Thread-Topic: [PATCH v3 12/23] xen/arm: vsmmuv3: Add support for event queue
 and global error
Thread-Index: AQHcyzWWF4JjVjjX1ESgGXK5vaYBUA==
Date: Mon, 13 Apr 2026 11:06:33 +0000
Message-ID: <825D8F28-5C8C-4C46-9B53-04BE9FA7F156@arm.com>
References: <cover.1774918270.git.milan_djokic@epam.com>
 <b3c49d35b986dff560bba8a51f85fb6b4a57c0c5.1774918270.git.milan_djokic@epam.com>
In-Reply-To:
 <b3c49d35b986dff560bba8a51f85fb6b4a57c0c5.1774918270.git.milan_djokic@epam.com>
Accept-Language: en-GB, en-US
Content-Language: en-US
X-MS-Has-Attach:
X-MS-TNEF-Correlator:
x-mailer: Apple Mail (2.3826.700.81.1.6)
Authentication-Results-Original: dkim=none (message not signed)
 header.d=none;dmarc=none action=none header.from=arm.com;
x-ms-traffictypediagnostic:
	DU2PR08MB7272:EE_|AM0PR08MB5460:EE_|DB5PEPF00014B88:EE_|AM0PR08MB11803:EE_
X-MS-Office365-Filtering-Correlation-Id: 8ed481e8-b12f-41a9-fc84-08de994cdf65
x-checkrecipientrouted: true
nodisclaimer: true
X-MS-Exchange-SenderADCheck: 1
X-MS-Exchange-AntiSpam-Relay: 0
X-Microsoft-Antispam-Untrusted:
 BCL:0;ARA:13230040|366016|1800799024|376014|38070700021|56012099003|22082099003|18002099003;
X-Microsoft-Antispam-Message-Info-Original:
 AfF64NTuI7RmNzk+yCxAjargna58CMMQ9k36FQ3IqR/p0LAtbcuiqHrjBAFwSF/IlvcxNr7U02/Bf1rlUUwZa19T71SdUCikhOsc3DA3J5aegftTnvAsRCEaqtxFEbICNaJRzUsn7gj2lx+5YZSACnulawyPBT0POZBngxxKSFdTwIz18jHBCCbk1e5yVZnLUbK46ua3xwm+8PfTuR+OdDaS5AkLgucEeCHwAssJ2X27gMG06zn3bWcsmFaED+nAFnFDdZHVMUZek5xwMON+20YwGpRi6ejcU5ZEX9JnlcRdJanWm61rH88CjNiXJJLoi+d54lh2S55M/xdsrgLE2rSjxlWAaflrH0mtDikIWPKItSgik6mES7wv3JuDGJJ+4VY/iDR5ufL68p6+wQPvVVVQy1VY8UKqfyKy7qHNV494qLTT5Ojhe7HRAK5jmpdGDygQk6bkGWhH5PqAw6Tqs/AmNcxeRUZcyCJ6vFrp3Orw1oCDGsPpyundTk28ehfLJP+6L1lEYg7nqKCN5xk2V0sJVPZxjpX3+jn7QEobHb0nDY6c/lA9+wd36pDU/3HguQN6CyJ/foYVp4kcHRPk8tDHtkMVVwYPR8wrR/mzyVTX6lYDdwqe9BCPHIJARCUKnXQ3n0nXYCOFzjPR9nv/WGrOcSOqu2Ypt/I1cEszQE3wClwGMWFe3DGY9rkCV8IuRjlPsQ03EkzeK9oRL05vADwok28axwxPSX7rfe0LGlMINniVhN5j9Z782wNLrsvBG1PNGHwgetTZD4FeZS2Jo6PL2IQDZz2Aq7b+clvSB3g=
X-Forefront-Antispam-Report-Untrusted:
 CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:DU2PR08MB7272.eurprd08.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(366016)(1800799024)(376014)(38070700021)(56012099003)(22082099003)(18002099003);DIR:OUT;SFP:1101;
Content-Type: text/plain; charset="utf-8"
Content-ID: <5E4A4ADCC6C19E4CB85CD138B5596E3D@eurprd08.prod.outlook.com>
Content-Transfer-Encoding: base64
MIME-Version: 1.0
X-Exchange-RoutingPolicyChecked:
 bkRHeuzSrFqqAPZtXATZyVu3xM3SEixXnYjb+dNIJbuK16Zp5qCTipeoNfQLo5FSofsH1mQqhVl9z8Gn5mOpx85d4ryuhfM+O1+KQ4ha5oTmKYpk3IR9IVSjs95KezKOPDLGXL2m6s9RuCHybqjAxAZCLyLWHxbgoaXD5hIZmy4EBEvpYyZmPbTRcb3i9qn8dGm9xEB1ynKlqxlf/1wwljIZb29tmZV9guLRvaCwQQMzEPkH8zN/sR6+Y116m8295P0AVJ7oYrNGhUL3n/cajNLb0ve2E5m1eNI8aiZCASEWgFRj5On/uWxncsJezOlE2TtyePF417Cr5GmK51xAYw==
X-MS-Exchange-Transport-CrossTenantHeadersStamped: AM0PR08MB5460
X-EOPAttributedMessage: 0
X-MS-Exchange-Transport-CrossTenantHeadersStripped:
 DB5PEPF00014B88.eurprd02.prod.outlook.com
X-MS-PublicTrafficType: Email
X-MS-Office365-Filtering-Correlation-Id-Prvs:
	70448949-0ba2-42da-5b10-08de994cb917
X-Microsoft-Antispam:
	BCL:0;ARA:13230040|1800799024|14060799003|36860700016|35042699022|82310400026|376014|56012099003|22082099003|18002099003;
X-Microsoft-Antispam-Message-Info:
	ZNIENit3dPnSuT7RHukYOHNFvIvma1GpregN1fmgmtWyT1hVW6dQEN+XzDDgvqVmbc3rNdLBT/ot6qXb64Ks+BJXlZ6K0hTmiHAAOlvQeM38YL5arlCk77UP8ZXRG7tlvMfHLnnz2pdsHCmGIAJ4THSe+B2ODq71TnQJIjjZz7PoNKS5TJzPhMLjEuXUZTCATFwqZ1SlN7sgflkjwQsCkPVd6TVj/vx7/3rt+mDFOUjr0PGxgvfeHjC2ddumRNA3VsTwYzRNfXaqUeBeac5yQ5FYS5AXmxtLfv+kTebqaczGYP7wZz+M3SPEzm7x0G6eO4GXmqRMdRHQg7uV8hFP/wjv2n4JUMM/7+6Q5NwFpfme/DXFyFEdJFmrDnsexVw+SVV14koCAQyL0KPF3qeeqFmooATkM0r/VHzl59SwdvuEbWhc1zOwJ8h2YP7GqppIP+J1YsLfeupRhzdaQdFKpuSztpgXzadltQ48jYHJ9fdlmUxp0+oJCE3WdQR09FCCAtOqICqW7I03QiMnXNuBtjMNYwBYsZSWXb+5DXXOcQdq1a2qi5nQuKR3QZ20mBroiJKvEhV0RgCLRZzQEGrde2gsHvSEPV23QzAI45rlcLaahB9wKKb/nDlAD6SYBtQHGB1KhYGugksNBbbaH1wyFXSJPiCviCihlyKAPN99RMAJ11bv5HE6Es4p7o0q2aFCarZJTo4Z4oF1f50q/zp3rYBYWXtnQnOoeeI7xf70fojSxkudqk6RVptKDNUMs4ti3ApGhGZYgjUKXLiEJkmMtw==
X-Forefront-Antispam-Report:
	CIP:4.158.2.129;CTRY:GB;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:outbound-uk1.az.dlp.m.darktrace.com;PTR:InfoDomainNonexistent;CAT:NONE;SFS:(13230040)(1800799024)(14060799003)(36860700016)(35042699022)(82310400026)(376014)(56012099003)(22082099003)(18002099003);DIR:OUT;SFP:1101;
X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1
X-MS-Exchange-AntiSpam-MessageData-0:
	5OzgiNHCKx2RyRMpyctAwvgYxDOPIMUmx4l0S+vKSEaF1JPrSeUlG27OL1HWW7XOxW7GdJFh56tld7LB4vqZUuYZ5hlPaTvZb5Lp55KwbcUyPAk5aol3GAnqaHhTK4o8Jy2DmXqMTSVTrWPfhftkVGiH/nx3dM3a5GniDIj+dPijE2sQUeZ5gdL4VOoOvSz9vpyyVQGxi+fw/6zNUuZJAnXe86U2WYyG1FeJ3XFzTxKCVEOi9+qoyHH/KCsicYGnZa825tN5aAGOcadM0nUoHnEKEwQ+LCRZSLhyd8GYzh6e3Eh8sW5JTRIl6yGx3nmBJYHbGO5PWJqgpTZzXueIjbgwRMT1r/xuri6xf5Bkd5/vcTU0RuKXKJ813lDuKFAP1FPnyGYppF2ib6B5UFF5foXLTZasqfPwHE+e+E60QfRQ6qXviaMHy28TyYWHP8/l
X-OriginatorOrg: arm.com
X-MS-Exchange-CrossTenant-OriginalArrivalTime: 13 Apr 2026 11:07:37.6631
 (UTC)
X-MS-Exchange-CrossTenant-Network-Message-Id: 8ed481e8-b12f-41a9-fc84-08de994cdf65
X-MS-Exchange-CrossTenant-Id: f34e5979-57d9-4aaa-ad4d-b122a662184d
X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=f34e5979-57d9-4aaa-ad4d-b122a662184d;Ip=[4.158.2.129];Helo=[outbound-uk1.az.dlp.m.darktrace.com]
X-MS-Exchange-CrossTenant-AuthSource:
	DB5PEPF00014B88.eurprd02.prod.outlook.com
X-MS-Exchange-CrossTenant-AuthAs: Anonymous
X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem
X-MS-Exchange-Transport-CrossTenantHeadersStamped: AM0PR08MB11803
X-purgate-ID: tlsNG-42698a/1776078459-EC75A2A1-A335CC4D/0/0
X-purgate-type: clean
X-purgate-size: 14066

SGkgTWlsYW4sDQoNCj4gZGlmZiAtLWdpdCBhL3hlbi9kcml2ZXJzL3Bhc3N0aHJvdWdoL2FybS92
c21tdS12My5jIGIveGVuL2RyaXZlcnMvcGFzc3Rocm91Z2gvYXJtL3ZzbW11LXYzLmMNCj4gaW5k
ZXggNmQzNjM2YjE4Yi4uN2E2YzE4ZGY1MyAxMDA2NDQNCj4gLS0tIGEveGVuL2RyaXZlcnMvcGFz
c3Rocm91Z2gvYXJtL3ZzbW11LXYzLmMNCj4gKysrIGIveGVuL2RyaXZlcnMvcGFzc3Rocm91Z2gv
YXJtL3ZzbW11LXYzLmMNCj4gQEAgLTQ0LDYgKzQ0LDcgQEAgZXh0ZXJuIGNvbnN0IHN0cnVjdCB2
aW9tbXVfZGVzYyBfX3JlYWRfbW9zdGx5ICpjdXJfdmlvbW11Ow0KPiANCj4gLyogSGVscGVyIE1h
Y3JvcyAqLw0KPiAjZGVmaW5lIHNtbXVfZ2V0X2NtZHFfZW5hYmxlZCh4KSAgICBGSUVMRF9HRVQo
Q1IwX0NNRFFFTiwgeCkNCj4gKyNkZWZpbmUgc21tdV9nZXRfZXZ0cV9lbmFibGVkKHgpICAgIEZJ
RUxEX0dFVChDUjBfRVZUUUVOLCB4KQ0KPiAjZGVmaW5lIHNtbXVfY21kX2dldF9jb21tYW5kKHgp
ICAgICBGSUVMRF9HRVQoQ01EUV8wX09QLCB4KQ0KPiAjZGVmaW5lIHNtbXVfY21kX2dldF9zaWQo
eCkgICAgICAgICBGSUVMRF9HRVQoQ01EUV9QUkVGRVRDSF8wX1NJRCwgeCkNCj4gI2RlZmluZSBz
bW11X2dldF9zdGVfczFjZG1heCh4KSAgICAgRklFTERfR0VUKFNUUlRBQl9TVEVfMF9TMUNETUFY
LCB4KQ0KPiBAQCAtNTIsNiArNTMsMzUgQEAgZXh0ZXJuIGNvbnN0IHN0cnVjdCB2aW9tbXVfZGVz
YyBfX3JlYWRfbW9zdGx5ICpjdXJfdmlvbW11Ow0KPiAjZGVmaW5lIHNtbXVfZ2V0X3N0ZV9zMWN0
eHB0cih4KSAgICBGSUVMRF9QUkVQKFNUUlRBQl9TVEVfMF9TMUNUWFBUUl9NQVNLLCBcDQo+ICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZJRUxEX0dFVChTVFJUQUJfU1RFXzBf
UzFDVFhQVFJfTUFTSywgeCkpDQo+IA0KPiArLyogZXZlbnQgcXVldWUgZW50cnkgKi8NCj4gK3N0
cnVjdCBhcm1fc21tdV9ldnRxX2VudCB7DQo+ICsgICAgLyogQ29tbW9uIGZpZWxkcyAqLw0KPiAr
ICAgIHVpbnQ4X3QgICAgIG9wY29kZTsNCj4gKyAgICB1aW50MzJfdCAgICBzaWQ7DQo+ICsNCj4g
KyAgICAvKiBFdmVudC1zcGVjaWZpYyBmaWVsZHMgKi8NCj4gKyAgICB1bmlvbiB7DQo+ICsgICAg
ICAgIHN0cnVjdCB7DQo+ICsgICAgICAgICAgICB1aW50MzJfdCBzc2lkOw0KPiArICAgICAgICAg
ICAgYm9vbCBzc3Y7DQo+ICsgICAgICAgIH0gY19iYWRfc3RlX3N0cmVhbWlkOw0KPiArDQo+ICsg
ICAgICAgIHN0cnVjdCB7DQo+ICsgICAgICAgICAgICBib29sIHN0YWxsOw0KPiArICAgICAgICAg
ICAgdWludDE2X3Qgc3RhZzsNCj4gKyAgICAgICAgICAgIHVpbnQzMl90IHNzaWQ7DQo+ICsgICAg
ICAgICAgICBib29sIHNzdjsNCj4gKyAgICAgICAgICAgIGJvb2wgczI7DQo+ICsgICAgICAgICAg
ICB1aW50NjRfdCBhZGRyOw0KPiArICAgICAgICAgICAgYm9vbCBybnc7DQo+ICsgICAgICAgICAg
ICBib29sIHBudTsNCj4gKyAgICAgICAgICAgIGJvb2wgaW5kOw0KPiArICAgICAgICAgICAgdWlu
dDhfdCBjbGFzczsNCj4gKyAgICAgICAgICAgIHVpbnQ2NF90IGFkZHIyOw0KPiArICAgICAgICB9
IGZfdHJhbnNsYXRpb247DQo+ICsgICAgfTsNCj4gK307DQo+ICsNCj4gLyogc3RhZ2UtMSB0cmFu
c2xhdGlvbiBjb25maWd1cmF0aW9uICovDQo+IHN0cnVjdCBhcm1fdnNtbXVfczFfdHJhbnNfY2Zn
IHsNCj4gICAgIHBhZGRyX3QgczFjdHhwdHI7DQo+IEBAIC04Miw2ICsxMTIsNyBAQCBzdHJ1Y3Qg
dmlydF9zbW11IHsNCj4gICAgIHVpbnQzMl90ICAgIHN0cnRhYl9iYXNlX2NmZzsNCj4gICAgIHVp
bnQ2NF90ICAgIHN0cnRhYl9iYXNlOw0KPiAgICAgdWludDMyX3QgICAgaXJxX2N0cmw7DQo+ICsg
ICAgdWludDMyX3QgICAgdmlycTsNCj4gICAgIHVpbnQ2NF90ICAgIGdlcnJvcl9pcnFfY2ZnMDsN
Cj4gICAgIHVpbnQ2NF90ICAgIGV2dHFfaXJxX2NmZzA7DQo+ICAgICBzdHJ1Y3QgICAgICBhcm1f
dnNtbXVfcXVldWUgZXZ0cSwgY21kcTsNCj4gQEAgLTg5LDYgKzEyMCwxMiBAQCBzdHJ1Y3Qgdmly
dF9zbW11IHsNCj4gfTsNCj4gDQo+IC8qIFF1ZXVlIG1hbmlwdWxhdGlvbiBmdW5jdGlvbnMgKi8N
Cj4gK3N0YXRpYyBib29sIHF1ZXVlX2Z1bGwoc3RydWN0IGFybV92c21tdV9xdWV1ZSAqcSkNCj4g
K3sNCj4gKyAgICByZXR1cm4gUV9JRFgocSwgcS0+cHJvZCkgPT0gUV9JRFgocSwgcS0+Y29ucykg
JiYNCj4gKyAgICAgICAgICAgUV9XUlAocSwgcS0+cHJvZCkgIT0gUV9XUlAocSwgcS0+Y29ucyk7
DQo+ICt9DQo+ICsNCj4gc3RhdGljIGJvb2wgcXVldWVfZW1wdHkoc3RydWN0IGFybV92c21tdV9x
dWV1ZSAqcSkNCj4gew0KPiAgICAgcmV0dXJuIFFfSURYKHEsIHEtPnByb2QpID09IFFfSURYKHEs
IHEtPmNvbnMpICYmDQo+IEBAIC0xMDEsMTEgKzEzOCwxMDUgQEAgc3RhdGljIHZvaWQgcXVldWVf
aW5jX2NvbnMoc3RydWN0IGFybV92c21tdV9xdWV1ZSAqcSkNCj4gICAgIHEtPmNvbnMgPSBRX09W
RihxLT5jb25zKSB8IFFfV1JQKHEsIGNvbnMpIHwgUV9JRFgocSwgY29ucyk7DQo+IH0NCj4gDQo+
ICtzdGF0aWMgdm9pZCBxdWV1ZV9pbmNfcHJvZChzdHJ1Y3QgYXJtX3ZzbW11X3F1ZXVlICpxKQ0K
PiArew0KPiArICAgIHUzMiBwcm9kID0gKFFfV1JQKHEsIHEtPnByb2QpIHwgUV9JRFgocSwgcS0+
cHJvZCkpICsgMTsNCj4gKyAgICBxLT5wcm9kID0gUV9PVkYocS0+cHJvZCkgfCBRX1dSUChxLCBw
cm9kKSB8IFFfSURYKHEsIHByb2QpOw0KPiArfQ0KPiArDQo+IHN0YXRpYyB2b2lkIGR1bXBfc21t
dV9jb21tYW5kKHVpbnQ2NF90ICpjb21tYW5kKQ0KPiB7DQo+ICAgICBnZHByaW50ayhYRU5MT0df
RVJSLCAiY21kIDB4JTAybGx4OiAlMDE2bHggJTAxNmx4XG4iLA0KPiAgICAgICAgICAgICAgc21t
dV9jbWRfZ2V0X2NvbW1hbmQoY29tbWFuZFswXSksIGNvbW1hbmRbMF0sIGNvbW1hbmRbMV0pOw0K
PiB9DQo+ICsNCj4gK3N0YXRpYyB2b2lkIGFybV92c21tdV9pbmplY3RfaXJxKHN0cnVjdCB2aXJ0
X3NtbXUgKnNtbXUsIGJvb2wgaXNfZ2Vycm9yLA0KPiArICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICB1aW50MzJfdCBnZXJyb3JfZXJyKQ0KPiArew0KPiArICAgIHVpbnQzMl90IG5ld19n
ZXJyb3JzLCBwZW5kaW5nOw0KPiArDQo+ICsgICAgaWYgKCBpc19nZXJyb3IgKQ0KPiArICAgIHsN
Cj4gKyAgICAgICAgLyogdHJpZ2dlciBnbG9iYWwgZXJyb3IgaXJxIHRvIGd1ZXN0ICovDQo+ICsg
ICAgICAgIHBlbmRpbmcgPSBzbW11LT5nZXJyb3IgXiBzbW11LT5nZXJyb3JuOw0KPiArICAgICAg
ICBuZXdfZ2Vycm9ycyA9IH5wZW5kaW5nICYgZ2Vycm9yX2VycjsNCj4gKw0KPiArICAgICAgICAv
KiBvbmx5IHRvZ2dsZSBub24gcGVuZGluZyBlcnJvcnMgKi8NCj4gKyAgICAgICAgaWYgKCFuZXdf
Z2Vycm9ycykNCg0KTklUOiBjb2Rlc3R5bGUsIHNwYWNlcyBpbnNpZGUgcGFyZW50aGVzZXMgDQoN
Cj4gKyAgICAgICAgICAgIHJldHVybjsNCj4gKw0KPiArICAgICAgICBzbW11LT5nZXJyb3IgXj0g
bmV3X2dlcnJvcnM7DQo+ICsgICAgfQ0KPiArDQo+ICsgICAgdmdpY19pbmplY3RfaXJxKHNtbXUt
PmQsIE5VTEwsIHNtbXUtPnZpcnEsIHRydWUpOw0KDQpJIGRvbuKAmXQgdW5kZXJzdGFuZCB0aGlz
LCBzaG91bGRu4oCZdCB3ZSBoYXZlIHRoZSBpcnEgbGV2ZWwgaGlnaCBvciBsb3cgZGVwZW5kaW5n
IG9uDQpldmVudCBxdWV1ZSBvciBnbG9iYWwgZXJyb3IgcGVuZGluZz8gQWxzbyB0aGlzIGRvZXNu
4oCZdCB0YWtlIGludG8gY29uc2lkZXJhdGlvbg0KaXJxIGVuYWJsZWQgKElSUV9DVFJMX0VWVFFf
SVJRRU4gLyBJUlFfQ1RSTF9HRVJST1JfSVJRRU4pDQoNCj4gK30NCj4gKw0KPiArc3RhdGljIGlu
dCBhcm1fdnNtbXVfd3JpdGVfZXZ0cShzdHJ1Y3QgdmlydF9zbW11ICpzbW11LCB1aW50NjRfdCAq
ZXZ0KQ0KPiArew0KPiArICAgIHN0cnVjdCBhcm1fdnNtbXVfcXVldWUgKnEgPSAmc21tdS0+ZXZ0
cTsNCj4gKyAgICBzdHJ1Y3QgZG9tYWluICpkID0gc21tdS0+ZDsNCj4gKyAgICBwYWRkcl90IGFk
ZHI7DQo+ICsgICAgaW50IHJldDsNCj4gKw0KPiArICAgIGlmICggIXNtbXVfZ2V0X2V2dHFfZW5h
YmxlZChzbW11LT5jclswXSkgKQ0KPiArICAgICAgICByZXR1cm4gLUVJTlZBTDsNCj4gKw0KPiAr
ICAgIGlmICggcXVldWVfZnVsbChxKSApDQo+ICsgICAgICAgIHJldHVybiAtRUlOVkFMOw0KPiAr
DQo+ICsgICAgYWRkciA9IFFfUFJPRF9FTlQocSk7DQo+ICsgICAgcmV0ID0gYWNjZXNzX2d1ZXN0
X21lbW9yeV9ieV9ncGEoZCwgYWRkciwgZXZ0LA0KPiArICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHNpemVvZigqZXZ0KSAqIEVWVFFfRU5UX0RXT1JEUywgdHJ1ZSk7DQo+ICsg
ICAgaWYgKCByZXQgKQ0KPiArICAgICAgICByZXR1cm4gcmV0Ow0KPiArDQo+ICsgICAgcXVldWVf
aW5jX3Byb2QocSk7DQo+ICsNCj4gKyAgICAvKiB0cmlnZ2VyIGV2ZW50cSBpcnEgdG8gZ3Vlc3Qg
Ki8NCj4gKyAgICBpZiAoICFxdWV1ZV9lbXB0eShxKSApDQo+ICsgICAgICAgIGFybV92c21tdV9p
bmplY3RfaXJxKHNtbXUsIGZhbHNlLCAwKTsNCj4gKw0KPiArICAgIHJldHVybiAwOw0KPiArfQ0K
PiArDQo+ICt2b2lkIGFybV92c21tdV9zZW5kX2V2ZW50KHN0cnVjdCB2aXJ0X3NtbXUgKnNtbXUs
DQo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCBhcm1fc21tdV9ldnRxX2VudCAq
ZW50KQ0KPiArew0KPiArICAgIHVpbnQ2NF90IGV2dFtFVlRRX0VOVF9EV09SRFNdOw0KPiArICAg
IGludCByZXQ7DQo+ICsNCj4gKyAgICBtZW1zZXQoZXZ0LCAwLCAxIDw8IEVWVFFfRU5UX1NaX1NI
SUZUKTsNCj4gKw0KPiArICAgIGlmICggIXNtbXVfZ2V0X2V2dHFfZW5hYmxlZChzbW11LT5jclsw
XSkgKQ0KPiArICAgICAgICByZXR1cm47DQo+ICsNCj4gKyAgICBldnRbMF0gfD0gRklFTERfUFJF
UChFVlRRXzBfSUQsIGVudC0+b3Bjb2RlKTsNCj4gKyAgICBldnRbMF0gfD0gRklFTERfUFJFUChF
VlRRXzBfU0lELCBlbnQtPnNpZCk7DQo+ICsNCj4gKyAgICBzd2l0Y2ggKGVudC0+b3Bjb2RlKQ0K
DQpOSVQ6IGNvZGVzdHlsZSwgc3BhY2VzIGluc2lkZSBwYXJlbnRoZXNlcyANCg0KPiArICAgIHsN
Cj4gKyAgICBjYXNlIEVWVF9JRF9CQURfU1RSRUFNSUQ6DQo+ICsgICAgY2FzZSBFVlRfSURfQkFE
X1NURToNCj4gKyAgICAgICAgZXZ0WzBdIHw9IEZJRUxEX1BSRVAoRVZUUV8wX1NTSUQsIGVudC0+
Y19iYWRfc3RlX3N0cmVhbWlkLnNzaWQpOw0KPiArICAgICAgICBldnRbMF0gfD0gRklFTERfUFJF
UChFVlRRXzBfU1NWLCBlbnQtPmNfYmFkX3N0ZV9zdHJlYW1pZC5zc3YpOw0KPiArICAgICAgICBi
cmVhazsNCj4gKyAgICBjYXNlIEVWVF9JRF9UUkFOU0xBVElPTl9GQVVMVDoNCj4gKyAgICBjYXNl
IEVWVF9JRF9BRERSX1NJWkVfRkFVTFQ6DQo+ICsgICAgY2FzZSBFVlRfSURfQUNDRVNTX0ZBVUxU
Og0KPiArICAgIGNhc2UgRVZUX0lEX1BFUk1JU1NJT05fRkFVTFQ6DQo+ICsgICAgICAgIGJyZWFr
Ow0KPiArICAgIGRlZmF1bHQ6DQo+ICsgICAgICAgIGdkcHJpbnRrKFhFTkxPR19XQVJOSU5HLCAi
dlNNTVV2MzogZXZlbnQgb3Bjb2RlIGlzIGJhZFxuIik7DQo+ICsgICAgICAgIGJyZWFrOw0KPiAr
ICAgIH0NCj4gKw0KPiArICAgIHJldCA9IGFybV92c21tdV93cml0ZV9ldnRxKHNtbXUsIGV2dCk7
DQo+ICsgICAgaWYgKCByZXQgKQ0KPiArICAgICAgICBhcm1fdnNtbXVfaW5qZWN0X2lycShzbW11
LCB0cnVlLCBHRVJST1JfRVZUUV9BQlRfRVJSKTsNCj4gKw0KPiArICAgIHJldHVybjsNCj4gK30N
Cj4gKw0KPiBzdGF0aWMgaW50IGFybV92c21tdV9maW5kX3N0ZShzdHJ1Y3QgdmlydF9zbW11ICpz
bW11LCB1aW50MzJfdCBzaWQsDQo+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVpbnQ2
NF90ICpzdGUpDQo+IHsNCj4gQEAgLTExNCwxMSArMjQ1LDIyIEBAIHN0YXRpYyBpbnQgYXJtX3Zz
bW11X2ZpbmRfc3RlKHN0cnVjdCB2aXJ0X3NtbXUgKnNtbXUsIHVpbnQzMl90IHNpZCwNCj4gICAg
IHVpbnQzMl90IGxvZzJzaXplOw0KPiAgICAgaW50IHN0cnRhYl9zaXplX3NoaWZ0Ow0KPiAgICAg
aW50IHJldDsNCj4gKyAgICBzdHJ1Y3QgYXJtX3NtbXVfZXZ0cV9lbnQgZW50ID0gew0KPiArICAg
ICAgICAuc2lkID0gc2lkLA0KPiArICAgICAgICAuY19iYWRfc3RlX3N0cmVhbWlkID0gew0KPiAr
ICAgICAgICAgICAgLnNzaWQgPSAwLA0KPiArICAgICAgICAgICAgLnNzdiA9IGZhbHNlLA0KPiAr
ICAgICAgICB9LA0KPiArICAgIH07DQo+IA0KPiAgICAgbG9nMnNpemUgPSBGSUVMRF9HRVQoU1RS
VEFCX0JBU0VfQ0ZHX0xPRzJTSVpFLCBzbW11LT5zdHJ0YWJfYmFzZV9jZmcpOw0KPiANCj4gICAg
IGlmICggc2lkID49ICgxIDw8IE1JTihsb2cyc2l6ZSwgU01NVV9JRFIxX1NJRFNJWkUpKSApDQo+
ICsgICAgew0KPiArICAgICAgICBlbnQub3Bjb2RlID0gRVZUX0lEX0JBRF9TVEU7DQo+ICsgICAg
ICAgIGFybV92c21tdV9zZW5kX2V2ZW50KHNtbXUsICZlbnQpOw0KPiAgICAgICAgIHJldHVybiAt
RUlOVkFMOw0KPiArICAgIH0NCj4gDQo+ICAgICBpZiAoIHNtbXUtPmZlYXR1cmVzICYgU1RSVEFC
X0JBU0VfQ0ZHX0ZNVF8yTFZMICkNCj4gICAgIHsNCj4gQEAgLTE1Niw2ICsyOTgsOCBAQCBzdGF0
aWMgaW50IGFybV92c21tdV9maW5kX3N0ZShzdHJ1Y3QgdmlydF9zbW11ICpzbW11LCB1aW50MzJf
dCBzaWQsDQo+ICAgICAgICAgew0KPiAgICAgICAgICAgICBnZHByaW50ayhYRU5MT0dfRVJSLCAi
aWR4PSVkID4gbWF4X2wyX3N0ZT0lZFxuIiwNCj4gICAgICAgICAgICAgICAgICAgICAgaWR4LCBt
YXhfbDJfc3RlKTsNCj4gKyAgICAgICAgICAgIGVudC5vcGNvZGUgPSBFVlRfSURfQkFEX1NUUkVB
TUlEOw0KPiArICAgICAgICAgICAgYXJtX3ZzbW11X3NlbmRfZXZlbnQoc21tdSwgJmVudCk7DQo+
ICAgICAgICAgICAgIHJldHVybiAtRUlOVkFMOw0KPiAgICAgICAgIH0NCj4gICAgICAgICBhZGRy
ID0gbDJwdHIgKyBpZHggKiBzaXplb2YoKnN0ZSkgKiBTVFJUQUJfU1RFX0RXT1JEUzsNCj4gQEAg
LTE4Myw2ICszMjcsMTQgQEAgc3RhdGljIGludCBhcm1fdnNtbXVfZGVjb2RlX3N0ZShzdHJ1Y3Qg
dmlydF9zbW11ICpzbW11LCB1aW50MzJfdCBzaWQsDQo+ICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgdWludDY0X3QgKnN0ZSkNCj4gew0KPiAgICAgdWludDY0X3QgdmFsID0gc3RlWzBd
Ow0KPiArICAgIHN0cnVjdCBhcm1fc21tdV9ldnRxX2VudCBlbnQgPSB7DQo+ICsgICAgICAgIC5v
cGNvZGUgPSBFVlRfSURfQkFEX1NURSwNCj4gKyAgICAgICAgLnNpZCA9IHNpZCwNCj4gKyAgICAg
ICAgLmNfYmFkX3N0ZV9zdHJlYW1pZCA9IHsNCj4gKyAgICAgICAgICAgIC5zc2lkID0gMCwNCj4g
KyAgICAgICAgICAgIC5zc3YgPSBmYWxzZSwNCj4gKyAgICAgICAgfSwNCj4gKyAgICB9Ow0KPiAN
Cj4gICAgIGlmICggISh2YWwgJiBTVFJUQUJfU1RFXzBfVikgKQ0KPiAgICAgICAgIHJldHVybiAt
RUFHQUlOOw0KPiBAQCAtMjE3LDYgKzM2OSw3IEBAIHN0YXRpYyBpbnQgYXJtX3ZzbW11X2RlY29k
ZV9zdGUoc3RydWN0IHZpcnRfc21tdSAqc21tdSwgdWludDMyX3Qgc2lkLA0KPiAgICAgcmV0dXJu
IDA7DQo+IA0KPiBiYWRfc3RlOg0KPiArICAgIGFybV92c21tdV9zZW5kX2V2ZW50KHNtbXUsICZl
bnQpOw0KPiAgICAgcmV0dXJuIC1FSU5WQUw7DQo+IH0NCj4gDQo+IEBAIC01NzcsNyArNzMwLDgg
QEAgc3RhdGljIGNvbnN0IHN0cnVjdCBtbWlvX2hhbmRsZXJfb3BzIHZzbW11djNfbW1pb19oYW5k
bGVyID0gew0KPiAgICAgLndyaXRlID0gdnNtbXV2M19tbWlvX3dyaXRlLA0KPiB9Ow0KPiANCj4g
LXN0YXRpYyBpbnQgdnNtbXV2M19pbml0X3NpbmdsZShzdHJ1Y3QgZG9tYWluICpkLCBwYWRkcl90
IGFkZHIsIHBhZGRyX3Qgc2l6ZSkNCj4gK3N0YXRpYyBpbnQgdnNtbXV2M19pbml0X3NpbmdsZShz
dHJ1Y3QgZG9tYWluICpkLCBwYWRkcl90IGFkZHIsDQo+ICsgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgcGFkZHJfdCBzaXplLCB1aW50MzJfdCB2aXJxKQ0KPiB7DQo+ICAgICBzdHJ1Y3Qg
dmlydF9zbW11ICpzbW11Ow0KPiANCj4gQEAgLTU4Niw2ICs3NDAsNyBAQCBzdGF0aWMgaW50IHZz
bW11djNfaW5pdF9zaW5nbGUoc3RydWN0IGRvbWFpbiAqZCwgcGFkZHJfdCBhZGRyLCBwYWRkcl90
IHNpemUpDQoNCldlIGFyZSBub3cgaW5qZWN0aW5nIGlycXMgZHVlIHRvIHRoaXMgcGF0Y2gsIHdl
IHNob3VsZCB2Z2ljX3Jlc2VydmVfdmlycSgpIGl0IGFzIHdlIGRvIGluIHBhdGNoDQrigJx4ZW4v
YXJtOiB2c21tdXYzOiBBbGxvYyB2aXJxIGZvciB2aXJ0dWFsIFNNTVV2M+KAnSwgc28gbWF5YmUg
YmV0dGVyIHRvIG1vdmUgdGhlc2UgY2hhbmdlcyBoZXJlLg0KDQo+ICAgICAgICAgcmV0dXJuIC1F
Tk9NRU07DQo+IA0KPiAgICAgc21tdS0+ZCA9IGQ7DQo+ICsgICAgc21tdS0+dmlycSA9IHZpcnE7
DQo+ICAgICBzbW11LT5jbWRxLnFfYmFzZSA9IEZJRUxEX1BSRVAoUV9CQVNFX0xPRzJTSVpFLCBT
TU1VX0NNRFFTKTsNCj4gICAgIHNtbXUtPmNtZHEuZW50X3NpemUgPSBDTURRX0VOVF9EV09SRFMg
KiBEV09SRFNfQllURVM7DQo+ICAgICBzbW11LT5ldnRxLnFfYmFzZSA9IEZJRUxEX1BSRVAoUV9C
QVNFX0xPRzJTSVpFLCBTTU1VX0VWVFFTKTsNCj4gQEAgLTYxMiwxNCArNzY3LDE2IEBAIGludCBk
b21haW5fdnNtbXV2M19pbml0KHN0cnVjdCBkb21haW4gKmQpDQo+IA0KPiAgICAgICAgIGxpc3Rf
Zm9yX2VhY2hfZW50cnkoaHdfaW9tbXUsICZob3N0X2lvbW11X2xpc3QsIGVudHJ5KQ0KPiAgICAg
ICAgIHsNCj4gLSAgICAgICAgICAgIHJldCA9IHZzbW11djNfaW5pdF9zaW5nbGUoZCwgaHdfaW9t
bXUtPmFkZHIsIGh3X2lvbW11LT5zaXplKTsNCj4gKyAgICAgICAgICAgIHJldCA9IHZzbW11djNf
aW5pdF9zaW5nbGUoZCwgaHdfaW9tbXUtPmFkZHIsIGh3X2lvbW11LT5zaXplLA0KPiArICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBod19pb21tdS0+aXJxKTsNCj4gICAgICAg
ICAgICAgaWYgKCByZXQgKQ0KPiAgICAgICAgICAgICAgICAgcmV0dXJuIHJldDsNCj4gICAgICAg
ICB9DQo+ICAgICB9DQo+ICAgICBlbHNlDQo+ICAgICB7DQo+IC0gICAgICAgIHJldCA9IHZzbW11
djNfaW5pdF9zaW5nbGUoZCwgR1VFU1RfVlNNTVVWM19CQVNFLCBHVUVTVF9WU01NVVYzX1NJWkUp
Ow0KPiArICAgICAgICByZXQgPSB2c21tdXYzX2luaXRfc2luZ2xlKGQsIEdVRVNUX1ZTTU1VVjNf
QkFTRSwgR1VFU1RfVlNNTVVWM19TSVpFLA0KPiArICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIEdVRVNUX1ZTTU1VX1NQSSk7DQo+ICAgICAgICAgaWYgKCByZXQgKQ0KPiAgICAgICAg
ICAgICByZXR1cm4gcmV0Ow0KPiAgICAgfQ0KPiBkaWZmIC0tZ2l0IGEveGVuL2luY2x1ZGUvcHVi
bGljL2FyY2gtYXJtLmggYi94ZW4vaW5jbHVkZS9wdWJsaWMvYXJjaC1hcm0uaA0KPiBpbmRleCBl
YmFjMDJlZDYzLi4xYjYwNmUyMGZkIDEwMDY0NA0KPiAtLS0gYS94ZW4vaW5jbHVkZS9wdWJsaWMv
YXJjaC1hcm0uaA0KPiArKysgYi94ZW4vaW5jbHVkZS9wdWJsaWMvYXJjaC1hcm0uaA0KPiBAQCAt
NTI3LDkgKzUyNywxMCBAQCB0eXBlZGVmIHVpbnQ2NF90IHhlbl9jYWxsYmFja190Ow0KPiAjZGVm
aW5lIEdVRVNUX0VWVENITl9QUEkgICAgICAgIDMxDQo+IA0KPiAjZGVmaW5lIEdVRVNUX1ZQTDAx
MV9TUEkgICAgICAgIDMyDQo+ICsjZGVmaW5lIEdVRVNUX1ZTTU1VX1NQSSAgICAgICAgIDMzDQoN
ClRoaXMgY2hhbmdlIGFsb25lIGJyZWFrcyBhbHJlYWR5IGJ1aWx0IHRvb2xzdGFjaywgY2FuIHdl
IGp1c3QNCmhhdmUgR1VFU1RfVlNNTVVfU1BJIGFzIDQ0IGFuZCBsZWF2ZSBHVUVTVF9WSVJUSU9f
TU1JT19TUElfRklSU1QgYW5kDQpHVUVTVF9WSVJUSU9fTU1JT19TUElfTEFTVCBhcyB0aGV5IGFy
ZT8NCg0KPiANCj4gLSNkZWZpbmUgR1VFU1RfVklSVElPX01NSU9fU1BJX0ZJUlNUICAgMzMNCj4g
LSNkZWZpbmUgR1VFU1RfVklSVElPX01NSU9fU1BJX0xBU1QgICAgNDMNCj4gKyNkZWZpbmUgR1VF
U1RfVklSVElPX01NSU9fU1BJX0ZJUlNUICAgMzQNCj4gKyNkZWZpbmUgR1VFU1RfVklSVElPX01N
SU9fU1BJX0xBU1QgICAgNDQNCj4gDQo+IC8qDQo+ICAqIFNHSSBpcyB0aGUgcHJlZmVycmVkIGRl
bGl2ZXJ5IG1lY2hhbmlzbSBvZiBGRi1BIHBlbmRpbmcgbm90aWZpY2F0aW9ucyBvcg0KPiANCg0K
Q2hlZXJzLA0KTHVjYQ0KDQo=


From xen-devel-bounces@lists.xenproject.org Mon Apr 13 11:18:03 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 13 Apr 2026 11:18:03 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1281077.1564126 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wCFIk-0005C0-Mg; Mon, 13 Apr 2026 11:17:58 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1281077.1564126; Mon, 13 Apr 2026 11:17: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 1wCFIk-0005Bt-Jv; Mon, 13 Apr 2026 11:17:58 +0000
Received: by outflank-mailman (input) for mailman id 1281077;
 Mon, 13 Apr 2026 11:17:57 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <Luca.Fancellu@arm.com>) id 1wCFIj-0005Bn-8f
 for xen-devel@lists.xenproject.org; Mon, 13 Apr 2026 11:17:57 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wCFIh-002fqo-2b
 for xen-devel@lists.xenproject.org; Mon, 13 Apr 2026 13:17:56 +0200
Received: from [10.42.69.10] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <Luca.Fancellu@arm.com>)
 id 69dcd0e3-bab6-0a2a0a5309dd-0a2a450abe54-6
 for <xen-devel@lists.xenproject.org>; Mon, 13 Apr 2026 13:17:56 +0200
Received: from [52.101.84.66]
 (helo=DB3PR0202CU003.outbound.protection.outlook.com)
 by tlsNG-4011c0.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.0)
 (envelope-from <Luca.Fancellu@arm.com>)
 id 69dcd0e4-ee98-0a2a450a0019-346554427cbc-3
 for <xen-devel@lists.xenproject.org>; Mon, 13 Apr 2026 13:17:56 +0200
Received: from CWLP265CA0345.GBRP265.PROD.OUTLOOK.COM (2603:10a6:401:5a::21)
 by DB9PR08MB10380.eurprd08.prod.outlook.com (2603:10a6:10:3d8::12) with
 Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9769.48; Mon, 13 Apr
 2026 11:17:50 +0000
Received: from AMS0EPF000001B7.eurprd05.prod.outlook.com
 (2603:10a6:401:5a:cafe::7f) by CWLP265CA0345.outlook.office365.com
 (2603:10a6:401:5a::21) with Microsoft SMTP Server (version=TLS1_3,
 cipher=TLS_AES_256_GCM_SHA384) id 15.20.9769.48 via Frontend Transport; Mon,
 13 Apr 2026 11:17:50 +0000
Received: from outbound-uk1.az.dlp.m.darktrace.com (4.158.2.129) by
 AMS0EPF000001B7.mail.protection.outlook.com (10.167.16.171) with Microsoft
 SMTP Server (version=TLS1_3, cipher=TLS_AES_256_GCM_SHA384) id 15.20.9745.21
 via Frontend Transport; Mon, 13 Apr 2026 11:17:50 +0000
Received: from DU2PR08MB7272.eurprd08.prod.outlook.com (2603:10a6:10:2d7::16)
 by AS1PR08MB7426.eurprd08.prod.outlook.com (2603:10a6:20b:4c5::16)
 with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9769.48; Mon, 13 Apr
 2026 11:16:46 +0000
Received: from DU2PR08MB7272.eurprd08.prod.outlook.com
 ([fe80::5d34:206f:373:a323]) by DU2PR08MB7272.eurprd08.prod.outlook.com
 ([fe80::5d34:206f:373:a323%6]) with mapi id 15.20.9769.046; Mon, 13 Apr 2026
 11:16: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=arm.com header.i="@arm.com" header.h="From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck"; dkim=pass header.s=selector1 header.d=arm.com header.i="@arm.com" header.h="From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck"
ARC-Seal: i=2; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=pass;
 b=CY37ZnH3grwjZLs+4Kq76tz0uB7ss/0KEzOsLs1YrvAKXch3BjGbL/0FdQG9GaCyKAItXqey1BJ1YjXWfpIN61OS79UEQS33mEFxuKmOE89WKPEV2qp7O3YRfQM+jzhWwsI3eZ3ABUE34Al6MOum6t9ECzGFSy19Tk84dJzF+YgEMOCQzGpr2xse5OZDXTBSYRaqZ3J3j+0Tr2Myloq59oQoWMR+NcjXOH9IqGTuHo++QTLvp5qj8tZq8AN/IOAAUkChd8uKrFFNqbLWcnF3PZjGXeAW8dyujnA22haCHw0MuBWIhxxeGLRKDNVbc5mIroyekJoLy8QE6wP2DI3Bcw==
ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com;
 s=arcselector10001;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1;
 bh=cHXkUK2ksaHQIaQO4rvqTEn0qfD/qzYhGUrXViw9+Wo=;
 b=xQbUlCLVxAOSGcZVNBznGQjQdlh1npMrcF8hh4yiVBT4Rkn6hgASbOP41kHkKS+fhUgYR/QlNHhOoiXKHgkrPOi/P7MYKZMUyYSsoRs31EP/wXn26PejiXn5J5BCAbS7N5xDtLU8B8Hf5IbUcBZ6vElC1jltSZcXY/iTlRr8/Fyt5WfeITQzJyPeCFBjRWM9Ttt4RJb0x/XAHlTnXQeKj0buLKNfHH/DITQmcbprLSnfkalwfCK7cC4smCJoj9vWDOLtgSv/Vm5fNdKvN5/5gp87w2w5PzviWYJlvA/8A4FuvaIZNpAMk0OP/GwRKYGCpXWGLTKO/ljWIaRu0iStYw==
ARC-Authentication-Results: i=2; mx.microsoft.com 1; spf=pass (sender ip is
 4.158.2.129) smtp.rcpttodomain=epam.com smtp.mailfrom=arm.com; dmarc=pass
 (p=none sp=none pct=100) action=none header.from=arm.com; dkim=pass
 (signature was verified) header.d=arm.com; arc=pass (0 oda=1 ltdi=1
 spf=[1,1,smtp.mailfrom=arm.com] dkim=[1,1,header.d=arm.com]
 dmarc=[1,1,header.from=arm.com])
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=arm.com; s=selector1;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck;
 bh=cHXkUK2ksaHQIaQO4rvqTEn0qfD/qzYhGUrXViw9+Wo=;
 b=EBGLyx18M+TlI1BaNUHwrnlffNXs1coRuYTL2tzKoIRkPSPzUxDXQjHBazPdgHrpD7bTnEuvyxlBmVg8ikbX56eQbWjxKtzMTRqxbiHlwIwqQ29A3rUKgREybb+artFaii/7HqKLAenr09Eoj+wIlU78nMvVO/3V3E7OWSiVOIM=
X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 4.158.2.129)
 smtp.mailfrom=arm.com; dkim=pass (signature was verified)
 header.d=arm.com;dmarc=pass action=none header.from=arm.com;
Received-SPF: Pass (protection.outlook.com: domain of arm.com designates
 4.158.2.129 as permitted sender) receiver=protection.outlook.com;
 client-ip=4.158.2.129; helo=outbound-uk1.az.dlp.m.darktrace.com; pr=C
ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none;
 b=drK5cJm6uGNGpmGJQYYrGBWFVAYY61Dd8LEZDCo14oY2+mIUajACphsi428C3wxIL3n5g4lF42iXezD+hRYgybIlDNnurHU/eB71bTJZLbV3v1eYI3PsmIbDeCVmtwTdY+opmPht7OEi2RqyfdLeDY0C1oz6epxwLUb2Fmv6m/iIoD7z2CyjmpX+30zaSnlW/WZfFprn0+stwlUsnxU5cjCHJ3IcM0LCSTgfrNMY7lWllEAQgM86fn2sOwYd5m0Mrkdth2N3z345/I/9JlH0dSWHJGvUvyFoidRNDF4eis28ONZo8F3GScgdtlqUor774U0NKJOw9pFIAZONnJ9WUg==
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com;
 s=arcselector10001;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1;
 bh=cHXkUK2ksaHQIaQO4rvqTEn0qfD/qzYhGUrXViw9+Wo=;
 b=OjkkbgqOxeoXaYuiMdux6P2u6I2AGeSQvoQaS5JWmWDgmz7SynfN/mbV0ct3zxJH3fAaRZmvi00GAnJ+HW2QPxwI6qKDvpQoLiJy3CbW/xbvxg5nSfx7G4fCIFYB6uRkgEq5xrIxKAVI4qLmagWQHdw+WYVS5l0RDuLECNn5tMm9e8iAILeQ0VB2ummM0TkEYxMQwzVffHCsUFlxDf00MevQAm2K3u1n0SQYp0czpbawRIobNMDg486PpxTIUE/72muUcOE+PYPydcj/p+6OyhSV7I4kYniLS8aXDwBCz9xdtq3tXaLkAhGmlgHfMnNPGx0hmXYBGYM4+/sjvoSzrQ==
ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass
 smtp.mailfrom=arm.com; dmarc=pass action=none header.from=arm.com; dkim=pass
 header.d=arm.com; arc=none
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=arm.com; s=selector1;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck;
 bh=cHXkUK2ksaHQIaQO4rvqTEn0qfD/qzYhGUrXViw9+Wo=;
 b=EBGLyx18M+TlI1BaNUHwrnlffNXs1coRuYTL2tzKoIRkPSPzUxDXQjHBazPdgHrpD7bTnEuvyxlBmVg8ikbX56eQbWjxKtzMTRqxbiHlwIwqQ29A3rUKgREybb+artFaii/7HqKLAenr09Eoj+wIlU78nMvVO/3V3E7OWSiVOIM=
From: Luca Fancellu <Luca.Fancellu@arm.com>
To: Milan Djokic <milan_djokic@epam.com>
CC: "xen-devel@lists.xenproject.org" <xen-devel@lists.xenproject.org>, 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>
Subject: Re: [PATCH v3 13/23] xen/arm: vsmmuv3: Add "iommus" property node for
 dom0 devices
Thread-Topic: [PATCH v3 13/23] xen/arm: vsmmuv3: Add "iommus" property node
 for dom0 devices
Thread-Index: AQHcyzcD3QNwY3yhCkub84C0ooY0iQ==
Date: Mon, 13 Apr 2026 11:16:45 +0000
Message-ID: <7A2DBEB7-B07D-4587-8DD0-3E0F49EFC4B0@arm.com>
References: <cover.1774918270.git.milan_djokic@epam.com>
 <7911f13c4fa495fb330eb611e41465f8897fa87f.1774918270.git.milan_djokic@epam.com>
In-Reply-To:
 <7911f13c4fa495fb330eb611e41465f8897fa87f.1774918270.git.milan_djokic@epam.com>
Accept-Language: en-GB, en-US
Content-Language: en-US
X-MS-Has-Attach:
X-MS-TNEF-Correlator:
x-mailer: Apple Mail (2.3826.700.81.1.6)
Authentication-Results-Original: dkim=none (message not signed)
 header.d=none;dmarc=none action=none header.from=arm.com;
x-ms-traffictypediagnostic:
	DU2PR08MB7272:EE_|AS1PR08MB7426:EE_|AMS0EPF000001B7:EE_|DB9PR08MB10380:EE_
X-MS-Office365-Filtering-Correlation-Id: 84183a24-ef8a-47bb-110b-08de994e4c6b
x-checkrecipientrouted: true
nodisclaimer: true
X-MS-Exchange-SenderADCheck: 1
X-MS-Exchange-AntiSpam-Relay: 0
X-Microsoft-Antispam-Untrusted:
 BCL:0;ARA:13230040|376014|1800799024|366016|38070700021|22082099003|18002099003|56012099003;
X-Microsoft-Antispam-Message-Info-Original:
 cbRenezuahVnEcKLfEqlfUth6D9wyAkoyxfSipQ0FZASzwocW1QCiUrxYqCLj+zNbWjHct6533FSyoyauhCsWfPGAnyZ4sDMYWmdTbhHQf1T3qSnveTl1EXMY07SCoN8MdgeJy7jZJGHlas79nMVrgOLNwA2PjO9KnUr1tP9xOKr9Kvigo3vlDQcq666+2RAOrfpEfMm8d0FjbmPpevSRrpYjIwAex4Yug0aCX5WONw44D2WlHMs7lo8h25n2qkxT6V6y5aYrQpZmg37524ShTi2IUrm46Ss3A7pYj0CNvLSOWHztmXIf+OZL6nvwFJymdEypLu2Ou0iLXWPi+veUfTKSO8mKg4RlXTNAlegygQQGhrlCzW80x+Bi86LG4062yNB1gSwqQjL6dJawveY0V+3TP2bzNrGWF3yZA5b7rHdJFs3OwIPzxNzCsJG3p45ZMfDuooLOBDy5aTT1xYW5f3LNoptVCffzdLbLuXzRjWPavnjoqUPTLaQLXiShDdkp5oHeFxWvirVMnFzgB/4P0wKsNo29QjwSS7lva3qKPlOSk5xUXPzwgOj/FSs4zTZEawIEC4Vb7sjbhF0t8ZTuxJssOHcYgOnTQXTd8C3Zju3WPCRZFNT0RS18e6Kmceg2jilfpJ1nLj5M3dDVH3W9W0bEYm0S7sarRzd3rTRT4uvsfJ8ONeHTweHEnXJc4mnYM8KiZXRjJBOwNNcnerDQ5ssHx4MRbnjsO8EqUBK5StzkJwpZJvSgGBH6hvnf9zZ8qPiQzMhXLqkD3Lb1483RS+uK29fKCqJcipNKBEpmKI=
X-Forefront-Antispam-Report-Untrusted:
 CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:DU2PR08MB7272.eurprd08.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(376014)(1800799024)(366016)(38070700021)(22082099003)(18002099003)(56012099003);DIR:OUT;SFP:1101;
Content-Type: text/plain; charset="utf-8"
Content-ID: <5B0A523B5710CB499DFCB0229D33D694@eurprd08.prod.outlook.com>
Content-Transfer-Encoding: base64
MIME-Version: 1.0
X-Exchange-RoutingPolicyChecked:
 fdQeN7LxKWbD3knVmJLnjNTZYKG0gZBQa5UK/6MpOTgFEwLoasRoRLCOOZvFvcibY0F7hFFPScRA2TdzJBZKgRbVvDO/dQ8V1Bf/ilQe70V8PupgxES1qM7qx4HJSyxwwAHT0yk2X4KSqdUBR9doTPYxcW8gqUFF/SRmrLOruDtWzhYUJdIBdD3UuyVui0lurYQ4gQisaOU/2V9IFkJpqdgwPle1hCNEcrGginqjeu0Z4XlA113rfg2t7McN05OMsGs38KCpq9lPPVJrf2NGkwPZ3Cjk39IuYzrqKJYIBQHWoqnFIWTL+5j4Oy8L7REtyWoSEqBLBATRMcYDpMcFXw==
X-MS-Exchange-Transport-CrossTenantHeadersStamped: AS1PR08MB7426
X-EOPAttributedMessage: 0
X-MS-Exchange-Transport-CrossTenantHeadersStripped:
 AMS0EPF000001B7.eurprd05.prod.outlook.com
X-MS-PublicTrafficType: Email
X-MS-Office365-Filtering-Correlation-Id-Prvs:
	adfb2194-bba8-4bb0-5851-08de994e25ca
X-Microsoft-Antispam:
	BCL:0;ARA:13230040|1800799024|376014|36860700016|14060799003|35042699022|82310400026|56012099003|22082099003|18002099003;
X-Microsoft-Antispam-Message-Info:
	qeoHspKg9oAF5PRnYQ2CM8nXOFWeEnU66tuwabW+ipV0yHKdg3kBjkK8zt1zhsPrfLxY9nzdk8/6nGZehfiqkKAYc6oWk34njot6Y+/tMH1VwPG0wnWsFPwJZGzbsL2J5mgZTJBrJrfcj6C+WETg9IX58Qe1P1cVQ//g0D63vvhVjgDn/b2EZ6RIqIosfEaM3qZBXgF4a4QAKokqhgDxWASbmsvgJKRleMkhg9Ipj2kjGABrrzRtEkNc39AiHr4jS/YsbMPNOrUyRFTsmJygmSqrc+w5GAY0hBKYSLh5EcXP8PWTQaItaxc5XufBnAI6NkDMQzcEsQEXHPwW1IRiWs5dkZLSjaczZYEopK2F9XXu6zpVPU2u11ozX9tq532WCjdIfgGfh0T9dmG5GpTzv8n4sTmAthrndrpf3hH6uiXi/LluZ2E5qpZP5xNDStrRVJEq2Nc3xRqd7cyGKjBeluHZ7Xs/qExVj+6bdfvmAZGKIv3G/WjqFEJBs9AuFe67MSnet2i7H47pDrYj5PoODCBGEWfcIIkcUgGnmwnqIJToVOA52OuLzjTeE3VpSAVHuPN8s9YRal/UkHzfx493ktd7jtnuiwO//CfPt7ql1Di8UDU/3GOPszcxT8oRz1qQ2RH58ywMif2IXopGY09cFuMR7VMfI6z5+Gus/Q6TIK6pRqpiLbEQCS8KI0XQQJsm958IhsUH3EpoF39r1Ow7bMQokRddA70xp9KxA+ca8Hb5nzZjU61toaSrD67eku+wLksfqdfRx+Yf7lkX5fOotg==
X-Forefront-Antispam-Report:
	CIP:4.158.2.129;CTRY:GB;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:outbound-uk1.az.dlp.m.darktrace.com;PTR:InfoDomainNonexistent;CAT:NONE;SFS:(13230040)(1800799024)(376014)(36860700016)(14060799003)(35042699022)(82310400026)(56012099003)(22082099003)(18002099003);DIR:OUT;SFP:1101;
X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1
X-MS-Exchange-AntiSpam-MessageData-0:
	sfdLC97EDzyXCKVIezEOv3D+GFgtzCFhEhTujnj0Yq5Y2Ejqoe2J+yL4W5pDo5SfvdFh/0sbaIuXgVtYY3A89SinPOqIqGbV9Y4Yc/lfio7ykPduEeWHERT1Q6HzjoifdCecYwSB1FcI35t1cEzUTO1SJ2A0faqLK7oLqMjyM+k+ZBhhI1qFbfCrVjsBp3jQ/98Al8kOeYvetjF/vTN1xS7w0vk6j91jD+pSQnlAubXyBGtmcNRkna18Muqba5AfpHj36RAFPSC549VDqoFh/v5bRvRe6NcXoerw70wy0FTM+JtIATvblUHgOJ7I74Fl6svCru6P05xnDS1ZDNzkteZdc1AlY/9gKSB8gQvmLYptTNR9HkeJoGKM7veU276hacTEbde5wLdd4Ort7qFYJB5PrA5/xl0P86sznTiLfLXMYFA8sTll3xQ+bN1oBbwx
X-OriginatorOrg: arm.com
X-MS-Exchange-CrossTenant-OriginalArrivalTime: 13 Apr 2026 11:17:50.0859
 (UTC)
X-MS-Exchange-CrossTenant-Network-Message-Id: 84183a24-ef8a-47bb-110b-08de994e4c6b
X-MS-Exchange-CrossTenant-Id: f34e5979-57d9-4aaa-ad4d-b122a662184d
X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=f34e5979-57d9-4aaa-ad4d-b122a662184d;Ip=[4.158.2.129];Helo=[outbound-uk1.az.dlp.m.darktrace.com]
X-MS-Exchange-CrossTenant-AuthSource:
	AMS0EPF000001B7.eurprd05.prod.outlook.com
X-MS-Exchange-CrossTenant-AuthAs: Anonymous
X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem
X-MS-Exchange-Transport-CrossTenantHeadersStamped: DB9PR08MB10380
X-purgate-ID: tlsNG-4011c0/1776079076-BE3510B1-26B28D26/0/0
X-purgate-type: clean
X-purgate-size: 1914

SGkgTWlsYW4sDQoNCj4gT24gMzEgTWFyIDIwMjYsIGF0IDAyOjUyLCBNaWxhbiBEam9raWMgPG1p
bGFuX2Rqb2tpY0BlcGFtLmNvbT4gd3JvdGU6DQo+IA0KPiBGcm9tOiBSYWh1bCBTaW5naCA8cmFo
dWwuc2luZ2hAYXJtLmNvbT4NCj4gDQo+ICJpb21tdXMiIHByb3BlcnR5IHdpbGwgYmUgYWRkZWQg
Zm9yIGRvbTAgZGV2aWNlcyB0byB2aXJ0dWFsDQo+IElPTU1VIG5vZGUgdG8gZW5hYmxlIHRoZSBk
b20wIGxpbnV4IGtlcm5lbCB0byBjb25maWd1cmUgdGhlIElPTU1VDQo+IA0KPiBTaWduZWQtb2Zm
LWJ5OiBSYWh1bCBTaW5naCA8cmFodWwuc2luZ2hAYXJtLmNvbT4NCj4gU2lnbmVkLW9mZi1ieTog
TWlsYW4gRGpva2ljIDxtaWxhbl9kam9raWNAZXBhbS5jb20+DQo+IC0tLQ0KPiB4ZW4vYXJjaC9h
cm0vZG9tYWluX2J1aWxkLmMgfCA3ICsrKysrLS0NCj4gMSBmaWxlIGNoYW5nZWQsIDUgaW5zZXJ0
aW9ucygrKSwgMiBkZWxldGlvbnMoLSkNCj4gDQo+IGRpZmYgLS1naXQgYS94ZW4vYXJjaC9hcm0v
ZG9tYWluX2J1aWxkLmMgYi94ZW4vYXJjaC9hcm0vZG9tYWluX2J1aWxkLmMNCj4gaW5kZXggYTUx
NTYzZWUzZC4uMzBhNGYxZmQwOSAxMDA2NDQNCj4gLS0tIGEveGVuL2FyY2gvYXJtL2RvbWFpbl9i
dWlsZC5jDQo+ICsrKyBiL3hlbi9hcmNoL2FybS9kb21haW5fYnVpbGQuYw0KPiBAQCAtNTM4LDkg
KzUzOCwxMiBAQCBzdGF0aWMgaW50IF9faW5pdCB3cml0ZV9wcm9wZXJ0aWVzKHN0cnVjdCBkb21h
aW4gKmQsIHN0cnVjdCBrZXJuZWxfaW5mbyAqa2luZm8sDQo+ICAgICAgICAgICAgIGNvbnRpbnVl
Ow0KPiAgICAgICAgIH0NCj4gDQo+IC0gICAgICAgIGlmICggaW9tbXVfbm9kZSApDQo+ICsgICAg
ICAgIC8qDQo+ICsgICAgICAgICAqIEV4cG9zZSBJT01NVSBzcGVjaWZpYyBwcm9wZXJ0aWVzIHRv
IGh3ZG9tIHdoZW4gdklPTU1VIGlzDQo+ICsgICAgICAgICAqIGVuYWJsZWQuDQo+ICsgICAgICAg
ICAqLw0KPiArICAgICAgICBpZiAoIGlvbW11X25vZGUgJiYgIWlzX3Zpb21tdV9lbmFibGVkKCkg
KQ0KPiAgICAgICAgIHsNCj4gLSAgICAgICAgICAgIC8qIERvbid0IGV4cG9zZSBJT01NVSBzcGVj
aWZpYyBwcm9wZXJ0aWVzIHRvIGh3ZG9tICovDQo+ICAgICAgICAgICAgIGlmICggZHRfcHJvcGVy
dHlfbmFtZV9pc19lcXVhbChwcm9wLCAiaW9tbXVzIikgKQ0KPiAgICAgICAgICAgICAgICAgY29u
dGludWU7DQo+IA0KPiANCg0KSSB0aGluayB0aGlzIGNvbW1pdCBzaG91bGQgYmUgc3F1YXNoZWQg
d2l0aCAieGVuL2FybTogdklPTU1VOiBJT01NVSBkZXZpY2UgdHJlZSBub2RlIGZvciBkb20w4oCd
DQpzbyB0aGF0IHdlIGNhbiBoYXZlIGEgY29uc2lzdGVudCBoYW5kbGluZyBvZiB0aGUgRFQgcHJv
cGVydGllcy4NCg0KQ2hlZXJzLA0KTHVjYQ0KDQo=


From xen-devel-bounces@lists.xenproject.org Mon Apr 13 11:21:45 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 13 Apr 2026 11:21:45 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1281088.1564136 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wCFMO-0006jD-CG; Mon, 13 Apr 2026 11:21:44 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1281088.1564136; Mon, 13 Apr 2026 11:21: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 1wCFMO-0006j6-8O; Mon, 13 Apr 2026 11:21:44 +0000
Received: by outflank-mailman (input) for mailman id 1281088;
 Mon, 13 Apr 2026 11:21:43 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <Luca.Fancellu@arm.com>) id 1wCFMN-0006j0-2F
 for xen-devel@lists.xenproject.org; Mon, 13 Apr 2026 11:21:43 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wCFMM-002rJC-AN
 for xen-devel@lists.xenproject.org; Mon, 13 Apr 2026 13:21:42 +0200
Received: from [10.42.69.6] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <Luca.Fancellu@arm.com>)
 id 69dcd1bf-e002-0a2a0a5209dd-0a2a4506a7dc-20
 for <xen-devel@lists.xenproject.org>; Mon, 13 Apr 2026 13:21:41 +0200
Received: from [40.107.162.15]
 (helo=PA4PR04CU001.outbound.protection.outlook.com)
 by tlsNG-16d1c6.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.0)
 (envelope-from <Luca.Fancellu@arm.com>)
 id 69dcd1c5-0df0-0a2a45060019-286ba20f891f-3
 for <xen-devel@lists.xenproject.org>; Mon, 13 Apr 2026 13:21:41 +0200
Received: from CWLP123CA0208.GBRP123.PROD.OUTLOOK.COM (2603:10a6:400:19d::13)
 by DU4PR08MB11810.eurprd08.prod.outlook.com (2603:10a6:10:63f::7)
 with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9769.48; Mon, 13 Apr
 2026 11:21:39 +0000
Received: from AMS1EPF0000008D.eurprd05.prod.outlook.com
 (2603:10a6:400:19d:cafe::9a) by CWLP123CA0208.outlook.office365.com
 (2603:10a6:400:19d::13) with Microsoft SMTP Server (version=TLS1_3,
 cipher=TLS_AES_256_GCM_SHA384) id 15.20.9769.48 via Frontend Transport; Mon,
 13 Apr 2026 11:21:39 +0000
Received: from outbound-uk1.az.dlp.m.darktrace.com (4.158.2.129) by
 AMS1EPF0000008D.mail.protection.outlook.com (10.167.242.84) with Microsoft
 SMTP Server (version=TLS1_3, cipher=TLS_AES_256_GCM_SHA384) id 15.20.9769.17
 via Frontend Transport; Mon, 13 Apr 2026 11:21:38 +0000
Received: from DU2PR08MB7272.eurprd08.prod.outlook.com (2603:10a6:10:2d7::16)
 by DBBPR08MB6217.eurprd08.prod.outlook.com (2603:10a6:10:201::14)
 with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9769.48; Mon, 13 Apr
 2026 11:20:36 +0000
Received: from DU2PR08MB7272.eurprd08.prod.outlook.com
 ([fe80::5d34:206f:373:a323]) by DU2PR08MB7272.eurprd08.prod.outlook.com
 ([fe80::5d34:206f:373:a323%6]) with mapi id 15.20.9769.046; Mon, 13 Apr 2026
 11: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>
Authentication-Results: eu.smtp.expurgate.cloud; dkim=pass header.s=selector1 header.d=arm.com header.i="@arm.com" header.h="From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck"; dkim=pass header.s=selector1 header.d=arm.com header.i="@arm.com" header.h="From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck"
ARC-Seal: i=2; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=pass;
 b=hP6AjWR4xgXEeQ/DH1Kj/llpFK/rydiRBOvuoBc1qjuq7Dsi5J2Hy8U2o/FqLQOUJIfnHNzzXkuuXoSNkh0jVWjZTYw0fPzvnx+MczSO31gI7TqXSY9BkdkbwQKDhOJiCRwZv+ZiBsXc4DKw0msCyR0C/4WUG528uPcgWfA7ABhTXfP+lM1OD2tenQxE+wFLcm2259Z6KXincJCT4HHpAQMVKPDA0QEGwAiDw906QsuGBuFWODyMU3/PsLwjJFqJAyyMrUVRCngvBrlgxW0b83Tj1idabDGyeEqukwMQvdwRDVfPFTRKqW7uPV4/nY5PezGwAxmH+313rwguunsG3g==
ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com;
 s=arcselector10001;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1;
 bh=aExhZ8RsEchHwcCN4tdC2mc8T2FKPcQ1CUXHmeGfEZ4=;
 b=ljAdb8iP4uCXWWIYQMpVpKBvceFAXaMNh1AWe0MM0N4BaHu03m419DRZHkQUb5pD9STUClXdspyzG0OKJ6uCdr8fh8aLmL654b6x2C9pkxJlr0KpyuytOeWstt6whUOnfnMyv4RNgVtLGxp4smEDPxmu2Xhbk4JtfxI8FxnsL2hRW66m+GFMaCsFRNG0/0DmN9GcJ42mC3D2DN5ONLOaof1/AfM0X3yhNEG6mb+O+KDCHFonU9t9TfvS/hzQSiZJ1qnC52b/WTXqXT34UL8ldvlSTwyP749AxZI1n17oUq8FwD493MsQFT3VG32qhoPkhe2CES+jH6KbTxgWO13tcg==
ARC-Authentication-Results: i=2; mx.microsoft.com 1; spf=pass (sender ip is
 4.158.2.129) smtp.rcpttodomain=epam.com smtp.mailfrom=arm.com; dmarc=pass
 (p=none sp=none pct=100) action=none header.from=arm.com; dkim=pass
 (signature was verified) header.d=arm.com; arc=pass (0 oda=1 ltdi=1
 spf=[1,1,smtp.mailfrom=arm.com] dkim=[1,1,header.d=arm.com]
 dmarc=[1,1,header.from=arm.com])
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=arm.com; s=selector1;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck;
 bh=aExhZ8RsEchHwcCN4tdC2mc8T2FKPcQ1CUXHmeGfEZ4=;
 b=Basbhp3J6WFJbZcEDmT7/vOjqAqPQ2SB0WIwCQVK5AzIxqF+OiatZl3QHnzozBHw0SPSyt4g7kZ4+gVvQ7PQLSs/k19R9AwxAMSr1H2ptbI60NUNzQmwJcorkqP7rCFhL34lv6rIZeP0/FubT55tqr2pm0eSOHGse0nsWnxCn6A=
X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 4.158.2.129)
 smtp.mailfrom=arm.com; dkim=pass (signature was verified)
 header.d=arm.com;dmarc=pass action=none header.from=arm.com;
Received-SPF: Pass (protection.outlook.com: domain of arm.com designates
 4.158.2.129 as permitted sender) receiver=protection.outlook.com;
 client-ip=4.158.2.129; helo=outbound-uk1.az.dlp.m.darktrace.com; pr=C
ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none;
 b=DypZybjwUtMiir69GrqXy/+Xjp441LsV9X6xa0dTD9drilw+3GUVbrM0ru2kKOcy3cjG6rwIh43B9/qkcjTQhaZDNBMV9WLhnwabNc1up4EzPRD+SGoF/PQyjyod7k6BQHSl4gmQrv83idEumFQEWwh2tiw413Q1e+e1HqprkIoKHBb2tsFNKuc0Y8Y/RXcCnxfR3f4GHWYlYXUZ7c0zslWbG2+2CrgXtKPFdlIQxMMkzMm2hPClhJhm5oE8pF3LomxxbJc0IdImwg/o3bLubJKqkNUTTyWmoSsQPSeByFXOtHFGgqDOJjxucimlX9nf7j9zR/uEOfdXQRu63P/EqQ==
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com;
 s=arcselector10001;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1;
 bh=aExhZ8RsEchHwcCN4tdC2mc8T2FKPcQ1CUXHmeGfEZ4=;
 b=pA3b1KCvndII1mbJ9mkwpXpUmBRaZL7qEWfd9Ks54pRJ8mOS+hvXlSn/+ys8GXK2c0PkHLsSk32LY4CtwyI+SGZzFIkTDnwbpTKzAHbY396x6iMgV6lHXL1A2fkw/Ri1IYJD8op6l5SA70EJicVj3mqQ2C7zq2qMfifREYYXzaUS7/wkCq29TFrBpjBTaEVkjuaQ85Nv2YAevpKpj3M9j8fsJtk4GA3XXdPv0SGG5Rx2JTTMrcN7Ka8dBIbeZNPCMK7JncTmCqP9agrKFHmSxcPnVlvPd3MWzj0/ss+6mJzGQ0uIpkw2F60Q0qVjXdwPaNJXcy5GmtBJCKQI+aGa/A==
ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass
 smtp.mailfrom=arm.com; dmarc=pass action=none header.from=arm.com; dkim=pass
 header.d=arm.com; arc=none
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=arm.com; s=selector1;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck;
 bh=aExhZ8RsEchHwcCN4tdC2mc8T2FKPcQ1CUXHmeGfEZ4=;
 b=Basbhp3J6WFJbZcEDmT7/vOjqAqPQ2SB0WIwCQVK5AzIxqF+OiatZl3QHnzozBHw0SPSyt4g7kZ4+gVvQ7PQLSs/k19R9AwxAMSr1H2ptbI60NUNzQmwJcorkqP7rCFhL34lv6rIZeP0/FubT55tqr2pm0eSOHGse0nsWnxCn6A=
From: Luca Fancellu <Luca.Fancellu@arm.com>
To: Milan Djokic <milan_djokic@epam.com>
CC: "xen-devel@lists.xenproject.org" <xen-devel@lists.xenproject.org>, 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.pau@citrix.com>
Subject: Re: [PATCH v3 11/23] xen/arm: vsmmuv3: Attach Stage-1 configuration
 to SMMUv3 hardware
Thread-Topic: [PATCH v3 11/23] xen/arm: vsmmuv3: Attach Stage-1 configuration
 to SMMUv3 hardware
Thread-Index: AQHcyy/u1+T36BIjnkSypQJ5KiHeE7Xc2JCA
Date: Mon, 13 Apr 2026 11:20:36 +0000
Message-ID: <3E901035-1A91-4BF9-97CF-B3C9D3326DB2@arm.com>
References: <cover.1774918270.git.milan_djokic@epam.com>
 <059c718f5407b845b84ec53cdc3ff021296d8bf9.1774918270.git.milan_djokic@epam.com>
 <B22B467B-C747-4070-B40F-A8297AB9A3BB@arm.com>
In-Reply-To: <B22B467B-C747-4070-B40F-A8297AB9A3BB@arm.com>
Accept-Language: en-GB, en-US
Content-Language: en-US
X-MS-Has-Attach:
X-MS-TNEF-Correlator:
x-mailer: Apple Mail (2.3826.700.81.1.6)
Authentication-Results-Original: dkim=none (message not signed)
 header.d=none;dmarc=none action=none header.from=arm.com;
x-ms-traffictypediagnostic:
	DU2PR08MB7272:EE_|DBBPR08MB6217:EE_|AMS1EPF0000008D:EE_|DU4PR08MB11810:EE_
X-MS-Office365-Filtering-Correlation-Id: 9e7ff1a2-f6aa-4eb9-84c9-08de994ed4d3
x-checkrecipientrouted: true
nodisclaimer: true
X-MS-Exchange-SenderADCheck: 1
X-MS-Exchange-AntiSpam-Relay: 0
X-Microsoft-Antispam-Untrusted:
 BCL:0;ARA:13230040|1800799024|366016|376014|38070700021|18002099003|22082099003|56012099003;
X-Microsoft-Antispam-Message-Info-Original:
 GoxLSdsj2+EUs4GOQF2p1HDiJ3LwVUqEvJpTGVVoBOYx6SGde4Y3wQ27c8A8JN2Ae4AL9AcYS0Abg3AlCwX3N9T57Na1KI9Mqvd4c6J30btqk+/wJyFLTSbC6JOfNjYv2peEbzmz5Rk/y7zNk36/uEtnZ/FBnt9Vu8L+iHJg4C6e1w2be32cJStiJRDQGJwylcR/UdrdzdoDaCAwaI375xbSeAb6qiy2a4Rz1tEdkCHFqUdeqCEzpMUYBHFOsutFszQc0Fk6+5T6tCXTmhZpup4i342gldBnKxqNq7b5yYnn3zRtyqZ85P2JD3hczXCbo8MGLhCdUTouccJWqLCWR5PjOdzV4JIuMty05g6CJikkpsq6v9uwv2YCQn6nuF1ybqL6jvsemtburQqrgd0JNx4gfxJ5POEC0MQVGEaqsxEJKQXChIZd9oXFkHhos4rr9whDPm6jPrrtq982x+/Gj24IdsrS5gwBVVkZMBxD50GAwnY1IbOP0FW7lQBaXKVb47xw+s0zglQigiWSMQC7pUaurdfzan20my0N7eeBzS2kYdbpI8iPb3y4Q8milEiA8xMdsdaNd6apGCnuzjpSVaGnJGahbMAj7svYS3Mp6G+OtZdHKUFydnenYTqTaP5/w2qtym0iOWobQ6qDcVFwz6ce1pApS34lxeWw7i+FMZ9MWXNisoAjYza0LIoRKf4gu0eEa7f2f/ZSrLDJM6vFk3DygtkxiqXUelfxjif6roBHREOmCGR3tVX0Jxc8j7pGJiztAnFYhF92WRwfICwM9w9WcMy4EULpoT4ehmsvLHE=
X-Forefront-Antispam-Report-Untrusted:
 CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:DU2PR08MB7272.eurprd08.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(1800799024)(366016)(376014)(38070700021)(18002099003)(22082099003)(56012099003);DIR:OUT;SFP:1101;
Content-Type: text/plain; charset="utf-8"
Content-ID: <9B53ECA575C1E040ACFA8DFBA3937C3D@eurprd08.prod.outlook.com>
Content-Transfer-Encoding: base64
MIME-Version: 1.0
X-Exchange-RoutingPolicyChecked:
 nOY3wdiRavVRjG4maoIbWDK/Tkh75o3gi26sMijUZTNVVhaSg2jUfrzDbmvbVLIABpfu18/sDUChM6LvoTbLG9SHQMdZgZ+XGZ+6ke97ZZG0+oWYW+lIkiYvpdGAs48mXvzctvAakac2QqqifNxt0DVgA+uWRwYjTqty7cM3YW3ncy3JjSh9Biewm/io6VRx5OBIofmma5oWsQtDRm1PM4XJ36mRiTbEF4Qra6ckWECTutl6aRtorOvQGBC5qfPeiVemauI+IpEBI6phEr8KgxoPu0TE1D5VBVLRr2kfIXnA0+QrL8CPKJqE7UQrym4o6DPiw7QG6cdxGlWC7MAa9A==
X-MS-Exchange-Transport-CrossTenantHeadersStamped: DBBPR08MB6217
X-EOPAttributedMessage: 0
X-MS-Exchange-Transport-CrossTenantHeadersStripped:
 AMS1EPF0000008D.eurprd05.prod.outlook.com
X-MS-PublicTrafficType: Email
X-MS-Office365-Filtering-Correlation-Id-Prvs:
	a2131174-8fca-4fc0-ecb1-08de994eaf5d
X-Microsoft-Antispam:
	BCL:0;ARA:13230040|14060799003|376014|1800799024|36860700016|82310400026|35042699022|18002099003|56012099003|22082099003;
X-Microsoft-Antispam-Message-Info:
	Mt4q61xD6hHWeMWJqr4Ltw5t0SJBTz4V5wEniNUVnE4w/IUDW4M/E3N4VMLhOAgVHxUQWIDDGvoie0mp/KiHI4xvaMFugaSbPwbRwcePsRQNZRgvLYNWRMESU5pGEPfbOVXdU26B8bG4Y74XqkuE75ALwL7w+Lwfa2q+fX/Js/cXuuvh6NzKZpkViQAuvmX2o67fgIaaJqbW8k43cxfVWjNlhTmW0bnFyGjdoe7it/YoFoRC4TUrduY41SXM207BLGg3L84U86d03DcLSMPVtfbDUIfSoSmJfU3F8r0br/vXkZZBiX1eHEzxcDgj0fiUXtWOV9ABWAaP7CSK68LJPUzA5Yd0pEwvLtp/0ZfN8S9JjU51yE7GTwETIPEqbhyIbuNJpsR8Z63+FpCnsawELmWmkqNYl42xx0TC8Ug74scPUhJzXTknC/LpfhlMUSDL8WzOefihrbN56JLeOTenwuq0RAOtGa0BProfsvitBBot/RWHB0vqNY/mgC9u2xD3hYQrIlr0EMplw6lLjLQrhH5+cXLX+m4S+25TWS0B/PDccg+FWhNSMGUZc2PwoQdwhGlGknhIRAyR9X4ngOmVMX1Q+9CvVfMXgbdpiXpBhanLzXP421RAC3fDuGfqq2mDfjCmnLS1rAHyu7BYmuGSg0gAz2r5jI1wL9Vh0sq26uW3FhVJ2WpaEL7XNIqmKtJJUlN7B/fU+Ft2S/Dwngboc4sRdcKEfbFVfoYeFulqg6N+uop6NkILPXnnPqESaPoImYxlgoIOIwx6NlYm1U7X3g==
X-Forefront-Antispam-Report:
	CIP:4.158.2.129;CTRY:GB;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:outbound-uk1.az.dlp.m.darktrace.com;PTR:InfoDomainNonexistent;CAT:NONE;SFS:(13230040)(14060799003)(376014)(1800799024)(36860700016)(82310400026)(35042699022)(18002099003)(56012099003)(22082099003);DIR:OUT;SFP:1101;
X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1
X-MS-Exchange-AntiSpam-MessageData-0:
	PGzvUGftqJNZUc9YM9MbUo0FQ7jF6hVnu+5FQqkTNNDs2KH8LS5bzSbFzCWgT6evYC3PwB3pz4Gqgxjnp5f7wjBNozxjQJ7SoEGOm6HNlKIHWGPMTVJvkmZyH76ikCN0TtSxjEMMt9kxk69nDM7GOw9OI7EWCqOsxJCoAGsQjpH5qK3m1CCIHXTuuZlI8vlJvjdgqBGtMnfxAt6aYlTuD68mIIgQMlESe1zqZ0TKO5BSkbglYDdk5pP6rJGdsK8utvu/3NDOVWr5fP5u+PHRZgv9uHv4TsjFYKjqxaodp4ctw1p2B0Viip4sREcPU98ARpv3YiUHREiLIhOxZT8+cBJycMJALsOjBqTBTpKahjBTHk5fyrfaUBqFxe7+rA5pKEuc61FT7xer0hLhm9Fp2lWTkC3Av0LcPScl+MA1Q+0FFztQo8VXibdq8AxFFlA4
X-OriginatorOrg: arm.com
X-MS-Exchange-CrossTenant-OriginalArrivalTime: 13 Apr 2026 11:21:38.9419
 (UTC)
X-MS-Exchange-CrossTenant-Network-Message-Id: 9e7ff1a2-f6aa-4eb9-84c9-08de994ed4d3
X-MS-Exchange-CrossTenant-Id: f34e5979-57d9-4aaa-ad4d-b122a662184d
X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=f34e5979-57d9-4aaa-ad4d-b122a662184d;Ip=[4.158.2.129];Helo=[outbound-uk1.az.dlp.m.darktrace.com]
X-MS-Exchange-CrossTenant-AuthSource:
	AMS1EPF0000008D.eurprd05.prod.outlook.com
X-MS-Exchange-CrossTenant-AuthAs: Anonymous
X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem
X-MS-Exchange-Transport-CrossTenantHeadersStamped: DU4PR08MB11810
X-purgate-ID: tlsNG-16d1c6/1776079301-AEF353D8-FF568B9E/0/0
X-purgate-type: clean
X-purgate-size: 2936

SEkgTWlsYW4sDQoNCj4gT24gMTMgQXByIDIwMjYsIGF0IDExOjI2LCBMdWNhIEZhbmNlbGx1IDxM
dWNhLkZhbmNlbGx1QGFybS5jb20+IHdyb3RlOg0KPiANCj4gSGkgTWlsYW4sDQo+IA0KPiANCj4+
IE9uIDMxIE1hciAyMDI2LCBhdCAwMjo1MiwgTWlsYW4gRGpva2ljIDxtaWxhbl9kam9raWNAZXBh
bS5jb20+IHdyb3RlOg0KPj4gDQo+PiBGcm9tOiBSYWh1bCBTaW5naCA8cmFodWwuc2luZ2hAYXJt
LmNvbT4NCj4+IA0KPj4gQXR0YWNoIHRoZSBTdGFnZS0xIGNvbmZpZ3VyYXRpb24gdG8gZGV2aWNl
IFNURSB0byBzdXBwb3J0IG5lc3RlZA0KPj4gdHJhbnNsYXRpb24gZm9yIHRoZSBndWVzdHMuDQo+
PiANCj4+IFNpZ25lZC1vZmYtYnk6IFJhaHVsIFNpbmdoIDxyYWh1bC5zaW5naEBhcm0uY29tPg0K
Pj4gU2lnbmVkLW9mZi1ieTogTWlsYW4gRGpva2ljIDxtaWxhbl9kam9raWNAZXBhbS5jb20+DQo+
PiAtLS0NCj4+IHhlbi9hcmNoL2FybS9pbmNsdWRlL2FzbS9pb21tdS5oICAgICAgIHwgIDcgKysr
DQo+PiB4ZW4vZHJpdmVycy9wYXNzdGhyb3VnaC9hcm0vc21tdS12My5jICB8IDc5ICsrKysrKysr
KysrKysrKysrKysrKysrKysrDQo+PiB4ZW4vZHJpdmVycy9wYXNzdGhyb3VnaC9hcm0vc21tdS12
My5oICB8ICAxICsNCj4+IHhlbi9kcml2ZXJzL3Bhc3N0aHJvdWdoL2FybS92c21tdS12My5jIHwg
MTggKysrKysrDQo+PiB4ZW4vaW5jbHVkZS94ZW4vaW9tbXUuaCAgICAgICAgICAgICAgICB8ICA2
ICsrDQo+PiA1IGZpbGVzIGNoYW5nZWQsIDExMSBpbnNlcnRpb25zKCspDQo+PiANCj4+IGRpZmYg
LS1naXQgYS94ZW4vYXJjaC9hcm0vaW5jbHVkZS9hc20vaW9tbXUuaCBiL3hlbi9hcmNoL2FybS9p
bmNsdWRlL2FzbS9pb21tdS5oDQo+PiBpbmRleCBhZDE1NDc3ZTI0Li41NmJjOTMxNGE3IDEwMDY0
NA0KPj4gLS0tIGEveGVuL2FyY2gvYXJtL2luY2x1ZGUvYXNtL2lvbW11LmgNCj4+ICsrKyBiL3hl
bi9hcmNoL2FybS9pbmNsdWRlL2FzbS9pb21tdS5oDQo+PiBAQCAtMjAsNiArMjAsMTMgQEAgc3Ry
dWN0IGFyY2hfaW9tbXUNCj4+ICAgIHZvaWQgKnByaXY7DQo+PiB9Ow0KPj4gDQo+PiArc3RydWN0
IGlvbW11X2d1ZXN0X2NvbmZpZyB7DQo+PiArICAgIHBhZGRyX3QgICAgIHMxY3R4cHRyOw0KPj4g
KyAgICB1aW50OF90ICAgICBjb25maWc7DQo+PiArICAgIHVpbnQ4X3QgICAgIHMxZm10Ow0KPj4g
KyAgICB1aW50OF90ICAgICBzMWNkbWF4Ow0KPj4gK307DQo+PiArDQo+PiBjb25zdCBzdHJ1Y3Qg
aW9tbXVfb3BzICppb21tdV9nZXRfb3BzKHZvaWQpOw0KPj4gdm9pZCBpb21tdV9zZXRfb3BzKGNv
bnN0IHN0cnVjdCBpb21tdV9vcHMgKm9wcyk7DQo+PiANCj4+IGRpZmYgLS1naXQgYS94ZW4vZHJp
dmVycy9wYXNzdGhyb3VnaC9hcm0vc21tdS12My5jIGIveGVuL2RyaXZlcnMvcGFzc3Rocm91Z2gv
YXJtL3NtbXUtdjMuYw0KPj4gaW5kZXggODc2MTJkZjIxZC4uY2Y4ZjYzOGE0OSAxMDA2NDQNCj4+
IC0tLSBhL3hlbi9kcml2ZXJzL3Bhc3N0aHJvdWdoL2FybS9zbW11LXYzLmMNCj4+ICsrKyBiL3hl
bi9kcml2ZXJzL3Bhc3N0aHJvdWdoL2FybS9zbW11LXYzLmMNCj4+IEBAIC0yODEwLDYgKzI4MTAs
MzcgQEAgc3RhdGljIHN0cnVjdCBhcm1fc21tdV9kZXZpY2UgKmFybV9zbW11X2dldF9ieV9kZXYo
Y29uc3Qgc3RydWN0IGRldmljZSAqZGV2KQ0KPj4gcmV0dXJuIE5VTEw7DQo+PiB9DQo+PiANCj4+
ICtzdGF0aWMgc3RydWN0IGlvbW11X2RvbWFpbiAqYXJtX3NtbXVfZ2V0X2RvbWFpbl9ieV9zaWQo
c3RydWN0IGRvbWFpbiAqZCwNCj4+ICsgdTMyIHNpZCkNCj4gDQo+IEkgdGhpbmsgdGhpcyBtaWdo
dCBiZSB3cm9uZywgYSBzeXN0ZW0gY2FuIGhhdmUgbXVsdGlwbGUgU01NVSBhbmQgdGhlIFNJRCBp
cyB1bmlxdWUgb25seQ0KPiBvbiBlYWNoIFNNTVUsIG5vdCBvbiB0aGUgb3ZlcmFsbCBwbGF0Zm9y
bSwgSSB0aGluayBhcm1fc21tdV9hdHRhY2hfZ3Vlc3RfY29uZmlnIHNob3VsZA0KPiBwYXNzIGFs
c28gdGhlIHNtbXUgZm9yIHRoZSBzZWxlY3RlZCBzaWQuDQoNCkFwb2xvZ2llcywgSeKAmXZlIHJl
YWQgdGhlIGRlc2lnbiwgSSB0aGluayB0aGlzIGlzIGludGVudGlvbmFsLiBJIHdpdGhkcmF3IHRo
aXMgY29tbWVudC4NCg0KQ2hlZXJzLA0KTHVjYQ0KDQoNCg==


From xen-devel-bounces@lists.xenproject.org Mon Apr 13 11:48:12 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 13 Apr 2026 11:48:12 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1281099.1564144 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wCFlu-0001JM-Bn; Mon, 13 Apr 2026 11:48:06 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1281099.1564144; Mon, 13 Apr 2026 11: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 1wCFlu-0001JF-7m; Mon, 13 Apr 2026 11:48:06 +0000
Received: by outflank-mailman (input) for mailman id 1281099;
 Mon, 13 Apr 2026 11:48:04 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <Luca.Fancellu@arm.com>) id 1wCFls-0001J9-J0
 for xen-devel@lists.xenproject.org; Mon, 13 Apr 2026 11:48:04 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wCFlr-002xu7-Ui
 for xen-devel@lists.xenproject.org; Mon, 13 Apr 2026 13:48:03 +0200
Received: from [10.42.69.12] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <Luca.Fancellu@arm.com>)
 id 69dcd7ec-e002-0a2a0a5209dd-0a2a450cd658-26
 for <xen-devel@lists.xenproject.org>; Mon, 13 Apr 2026 13:48:03 +0200
Received: from [40.107.130.0]
 (helo=MRWPR03CU001.outbound.protection.outlook.com)
 by tlsNG-d25034.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.0)
 (envelope-from <Luca.Fancellu@arm.com>)
 id 69dcd7f3-f40c-0a2a450c0019-286b820019a3-3
 for <xen-devel@lists.xenproject.org>; Mon, 13 Apr 2026 13:48:03 +0200
Received: from DB9PR02CA0021.eurprd02.prod.outlook.com (2603:10a6:10:1d9::26)
 by PAWPR08MB9568.eurprd08.prod.outlook.com (2603:10a6:102:2f2::12)
 with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9769.48; Mon, 13 Apr
 2026 11:48:00 +0000
Received: from DU6PEPF00009529.eurprd02.prod.outlook.com
 (2603:10a6:10:1d9:cafe::28) by DB9PR02CA0021.outlook.office365.com
 (2603:10a6:10:1d9::26) with Microsoft SMTP Server (version=TLS1_3,
 cipher=TLS_AES_256_GCM_SHA384) id 15.20.9769.48 via Frontend Transport; Mon,
 13 Apr 2026 11:48:00 +0000
Received: from outbound-uk1.az.dlp.m.darktrace.com (4.158.2.129) by
 DU6PEPF00009529.mail.protection.outlook.com (10.167.8.10) with Microsoft SMTP
 Server (version=TLS1_3, cipher=TLS_AES_256_GCM_SHA384) id 15.20.9769.17 via
 Frontend Transport; Mon, 13 Apr 2026 11:48:00 +0000
Received: from DU2PR08MB7272.eurprd08.prod.outlook.com (2603:10a6:10:2d7::16)
 by GV4PR08MB11273.eurprd08.prod.outlook.com (2603:10a6:150:2ee::10)
 with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9769.48; Mon, 13 Apr
 2026 11:46:56 +0000
Received: from DU2PR08MB7272.eurprd08.prod.outlook.com
 ([fe80::5d34:206f:373:a323]) by DU2PR08MB7272.eurprd08.prod.outlook.com
 ([fe80::5d34:206f:373:a323%6]) with mapi id 15.20.9769.046; Mon, 13 Apr 2026
 11:46: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=arm.com header.i="@arm.com" header.h="From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck"; dkim=pass header.s=selector1 header.d=arm.com header.i="@arm.com" header.h="From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck"
ARC-Seal: i=2; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=pass;
 b=q9ja0OFGWmfzdZMVempoDKAtq4nXmUEQ/zwAfZ6l6t4KouIJ7fzHb9gsqDRlDxjMWpVjbmuYLQEqhiZXJjyOl5hwaTAICrfS3ee7lFJGONx02H4zhzOXZO7ii52z5SxqE+9x7kXOqu49Ruvzs0dWPxdsMBnbVRNHmcweUYwumq87GJESJIBZkXGTfBkGeTjvw2hGVUE59qSyaJkLnz5RFqix+Z2+bapp036a3KB/atPm1iAKjmdVV3iB9IhRDykcQRodIlOqGmtE7WWgGrXimAHRncScN4F2ub+Zlu+6/DtTPp8Rmlp7DUIUXTqR6H/cDPx2uRia5y1Z1sA6rGg3Dg==
ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com;
 s=arcselector10001;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1;
 bh=qx7CM4GUeTJ+yHQCO4Wz5NMdfHnS3Bcg8ShdcYvUV8A=;
 b=ZYSPBzbN6eM3tEZHBmXVSxBtqAq+XVcwautsD2oRkqYIwuGdbJ3BvsVyFRuVAG0vdkpJFP+o/Bp6GUyM8L23zYGCIXCMJ2QsKWgGwwi0DFV0FxKB695g/OKsPDDEX/z297AqKG4xjkKbvnAkKCvcOo3EJ1JdwaUvyvjj8Hp1jPBXZGaT3GNgu+Ygs8qXGLNFYDCz8xUbDZavHiiN4JcCWYOyP8dYeQhb1vO/858gEMq+2HnDdLudsKie7u3WasXlhTU8H9+J3CefMnz6b3VWnC9o0i7/IGDzsYucH9N7DHOWwZ97x9ohpBlgmSxDms455IBNOeySN2ZhE3eZvuiocw==
ARC-Authentication-Results: i=2; mx.microsoft.com 1; spf=pass (sender ip is
 4.158.2.129) smtp.rcpttodomain=epam.com smtp.mailfrom=arm.com; dmarc=pass
 (p=none sp=none pct=100) action=none header.from=arm.com; dkim=pass
 (signature was verified) header.d=arm.com; arc=pass (0 oda=1 ltdi=1
 spf=[1,1,smtp.mailfrom=arm.com] dkim=[1,1,header.d=arm.com]
 dmarc=[1,1,header.from=arm.com])
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=arm.com; s=selector1;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck;
 bh=qx7CM4GUeTJ+yHQCO4Wz5NMdfHnS3Bcg8ShdcYvUV8A=;
 b=NQDeNJclxd4JwKjO+DWsjxOdDiinN1Kofr4sQPMwRW94Nt4PjDauCSVNBr5VZgPxGVpSOs0tqdW5Cx4viIZrUGRp+Ihn1wJfBRnRDElZ3G+YWJUtPyv5FStiUqmKg6B63+J10dNrAZy2t+2vINRduz1yvyDfQooxHyybAr5FlVw=
X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 4.158.2.129)
 smtp.mailfrom=arm.com; dkim=pass (signature was verified)
 header.d=arm.com;dmarc=pass action=none header.from=arm.com;
Received-SPF: Pass (protection.outlook.com: domain of arm.com designates
 4.158.2.129 as permitted sender) receiver=protection.outlook.com;
 client-ip=4.158.2.129; helo=outbound-uk1.az.dlp.m.darktrace.com; pr=C
ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none;
 b=lhYueQRbBS3K/5HUzWHh/SV6jMZWbuopbSpCs6SJ87q2zAEBXRIR7JFnzqhPJT6KZ63pywkjHdH413Qd7K1iopY2miGLfwVnvmMjXan1h2OciJLuyWz32bb3jTPiuBhPPeEmyOb2SgugLkzo4ppKBTAAPuFutPyhTB47f/rzSGFp8rMebGm4oJxv0shHD/4qbqhrL+6jASvig+92HTp4sQJ+Z9aLZtXK37Yz15pvjZKNuj3RdLr+sqbyUviHr0lveNV9x8jDNU/VF/lRVMpHz0HCfDdxNw31fIv4Aj6cpIIs6+hblrqoa3yLMEUS3F+FCagLGyrdDWQuzHyjyKNABw==
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com;
 s=arcselector10001;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1;
 bh=qx7CM4GUeTJ+yHQCO4Wz5NMdfHnS3Bcg8ShdcYvUV8A=;
 b=phi7jQrzWC3rMwmhzSGduCCtugfGfNAqFx+1V3/B4a5Y96hBNi2z7Kd6f8alyIMk/0RlVFO4C3bNguQMFfuMPnUlaIokqB2VDCCGkqXbc+Puw/U/WhOx3pJEsE7bHlQ65gbRCS9X+3NluhBDh4NDPvomuLCMGlIKBK8M/uWsJ+KGphagAww4l6+lHQwTqF5xQlYc2+Q17cSpLNQRg8Mw/Va6OKqdLy0QGZPTyAYRApLoi87g/qMbc8SSifISIivhMeh0xUS/N2rA2MpmsugQpfWCB0KfX80vbhbExAfnOTua+85QTKwRGVInqjq2SRvZG6ArAznweXIhenPT094Jag==
ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass
 smtp.mailfrom=arm.com; dmarc=pass action=none header.from=arm.com; dkim=pass
 header.d=arm.com; arc=none
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=arm.com; s=selector1;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck;
 bh=qx7CM4GUeTJ+yHQCO4Wz5NMdfHnS3Bcg8ShdcYvUV8A=;
 b=NQDeNJclxd4JwKjO+DWsjxOdDiinN1Kofr4sQPMwRW94Nt4PjDauCSVNBr5VZgPxGVpSOs0tqdW5Cx4viIZrUGRp+Ihn1wJfBRnRDElZ3G+YWJUtPyv5FStiUqmKg6B63+J10dNrAZy2t+2vINRduz1yvyDfQooxHyybAr5FlVw=
From: Luca Fancellu <Luca.Fancellu@arm.com>
To: Milan Djokic <milan_djokic@epam.com>
CC: "xen-devel@lists.xenproject.org" <xen-devel@lists.xenproject.org>, 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>
Subject: Re: [PATCH v3 14/23] xen/arm: vIOMMU: IOMMU device tree node for dom0
Thread-Topic: [PATCH v3 14/23] xen/arm: vIOMMU: IOMMU device tree node for
 dom0
Thread-Index: AQHcyzs6VJb6/zH3nkySmP47A5N2jg==
Date: Mon, 13 Apr 2026 11:46:56 +0000
Message-ID: <C89F2BB4-6E71-4F0B-B458-3AE6E33D462B@arm.com>
References: <cover.1774918270.git.milan_djokic@epam.com>
 <ad7c5071c7d2424d292d4a2dc863a69c0a4b973c.1774918270.git.milan_djokic@epam.com>
In-Reply-To:
 <ad7c5071c7d2424d292d4a2dc863a69c0a4b973c.1774918270.git.milan_djokic@epam.com>
Accept-Language: en-GB, en-US
Content-Language: en-US
X-MS-Has-Attach:
X-MS-TNEF-Correlator:
x-mailer: Apple Mail (2.3826.700.81.1.6)
Authentication-Results-Original: dkim=none (message not signed)
 header.d=none;dmarc=none action=none header.from=arm.com;
x-ms-traffictypediagnostic:
	DU2PR08MB7272:EE_|GV4PR08MB11273:EE_|DU6PEPF00009529:EE_|PAWPR08MB9568:EE_
X-MS-Office365-Filtering-Correlation-Id: f473b6eb-2d01-4bd8-4930-08de9952835e
x-checkrecipientrouted: true
nodisclaimer: true
X-MS-Exchange-SenderADCheck: 1
X-MS-Exchange-AntiSpam-Relay: 0
X-Microsoft-Antispam-Untrusted:
 BCL:0;ARA:13230040|376014|1800799024|366016|38070700021|18002099003|56012099003|22082099003;
X-Microsoft-Antispam-Message-Info-Original:
 1Xwh0LUigAmK0j30TbeCjkOwNmmoiTd2/P4qbIB3tPJc1PxXL1YpkIG2VJgJ1cA7dtaz22P/uroTRdcqdix/3ehjII0ktNzyJpwoU/7LNV70Si6LRo+mKZJx/R4saOxIB4ghUrGSh0YYk6W+xojzAHGSlsJxJ8TkBc7FCyP1GvB/4soi7BIH6ZJ1CTgdBSzJAvcRPRbcQOqPi935rxS0HTBvsRc9KLCGV7QolRgSIwqDgtXTmVzcJ91W/AOuXEbmQdc93kFspM7AyXZUnCWbR6kWMEchdoC7KHFnlx4l5pefar99LF8Z3FBHKA1lwrgSDb2RcbEQ1x8LKpO6kqiBXwy1a/DNAt071mgKCBC0LzNovMt43+jnd4+KlRPT5Z37XUPXfeBZcOmN5cGLZwIc2QILVWRHPQqSjIe3xYqEIiU4kkhedxEmRifKY/VILIwHHEAR1tRnPCo0lJr+fEh+etDT2LZmrvKba9K+Nb9YzMTysh7CrQW2UpXz8fzlm94yZ4PK3Wg1FJIWvi5uaLP33wW2sFWOAEX2H2naRu3FdFsI6G0BvozvPyc37NZrcAEMRTnTxiqNybc3uN43M4GQ39EG+D6ZKVgvWXIm7RLVYLO5YEEAhUs9vGrXJlKhg/vPbRYbpoeg8Yd9KQdHsMjAoEu8FxKJy/2c/o1cGG0hmWT0cyhZrosc8YfqmRuqO29cvzBoy5PAT4AGGvHnRapP7MUVxtMC43NPGjYMdFgjC1vp0OZsA2f/QWW43yFnVfD8qiZ8GjB5bgudAN9p0DpFrB5MwMf/dyzfE/vzR3L9t1Q=
X-Forefront-Antispam-Report-Untrusted:
 CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:DU2PR08MB7272.eurprd08.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(376014)(1800799024)(366016)(38070700021)(18002099003)(56012099003)(22082099003);DIR:OUT;SFP:1101;
Content-Type: text/plain; charset="us-ascii"
Content-ID: <0570CF606400454D9C5043272C9A7245@eurprd08.prod.outlook.com>
Content-Transfer-Encoding: quoted-printable
MIME-Version: 1.0
X-Exchange-RoutingPolicyChecked:
 KPaTNw5SFGvXpAZboqxB4svRG/Zr/Sod/iIVgzvhgZ7fvEjUjc9t6DTMVLnrPdXwoPiNxQ7B83bsPv+x2ZwYfkdvwcywx3d56LUezh77tlLQJ141hsWzcGpmGcV+MZIH5b9FWLCRu4xYNbKyx1IzyoZbJYJDp3ak68fDCo5OWQWY752XfLV/qFCTZJB7gQ3fYpcXDW3os1pE3L+vOSieWMVWNPM9cTokP6IoczmR76rYC/Kj22+WMq/pDW1bEz0VikFiwZHPglyN41FzAtwavGtUxQofsgcK3AnOIQ/fjSn2PVEYLiwn/5I9LSBC5gmrWeyAW9KCPkFtkkQq6wrqzA==
X-MS-Exchange-Transport-CrossTenantHeadersStamped: GV4PR08MB11273
X-EOPAttributedMessage: 0
X-MS-Exchange-Transport-CrossTenantHeadersStripped:
 DU6PEPF00009529.eurprd02.prod.outlook.com
X-MS-PublicTrafficType: Email
X-MS-Office365-Filtering-Correlation-Id-Prvs:
	d54e4d6c-ca9e-40c7-8aa1-08de99525d70
X-Microsoft-Antispam:
	BCL:0;ARA:13230040|36860700016|376014|82310400026|14060799003|35042699022|1800799024|56012099003|22082099003|18002099003;
X-Microsoft-Antispam-Message-Info:
	HavdfncEobghqazmlUB3dCcVBkg2vwig/4ZtR51ceFC8TtwuXCJdhxmg9alWKgtzk6PuQA1GyNXCCeQXKn6042f6oGEfmUSGeE4aSfeQSIFEcbXqjJnt6P6DB2NDf1K0+BC5GIjG6k5jLAJd03ga0xJv9RSmEIDpikhlqxH+Yf/2quL9h6zTksNFxEHas2f5Lw2cqKX7oD4DmqexO/tZhPJFr7VCGzpeTA0pjkrb+0ZcIKO/zFyAZPfC4jkXnDrUAjhn0kHdvWFz7MAAd1DxvBM80aIehX95wHXJ3HcQ2NkuZb+nSHRMBTO26sYHGG35sto7q4N+DRvSWPWGGSdzVsqL+QV56MKL/I3G+0yr8DYGtbVQgAl2weJssxJDSOXhV7wcRTB5ycywXhVyMjsOD6lQTK3CCgYbLpPcPyiJQrNT2c/pKJGZUsndR361U0S/Ag9Eizdplew7eCnasDaBLDf/lXnA8ChMNH8amJiwyXiKHEZNn+nhDc+E3lqBT2/kND1V1tRX9CyTWBacvXhQyIy5E6Va/t0vZ7XsDZBGIl1sRUon066reaQFzOCPQhwLjCS/Wd21/sN1Yu9OOKlCiBjXvDSrxdLvHEzGB5qhKx3DODWg3a5wiXMgWNm7IDJV9C+9pvEY/5fjz288U2c1vx90/XK+pwkJ3/MU08SPMxFDOYm0BVyKwla7SQBGxrTuYWSzQWUdGr8vUEQ3m80m+sRr8qUwEyHlElEJ9L4v/jTEE8AqNkev1Ri1NoOMPdPI6IpW9mucrCcPebHSrVSJbg==
X-Forefront-Antispam-Report:
	CIP:4.158.2.129;CTRY:GB;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:outbound-uk1.az.dlp.m.darktrace.com;PTR:InfoDomainNonexistent;CAT:NONE;SFS:(13230040)(36860700016)(376014)(82310400026)(14060799003)(35042699022)(1800799024)(56012099003)(22082099003)(18002099003);DIR:OUT;SFP:1101;
X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1
X-MS-Exchange-AntiSpam-MessageData-0:
	7921uPUzdxEqK+TY6gqH+xya0lla5WoH8Sp7b8EqmeyJOChzO4JG9fTbFkyuPWllxVD9KTBwTM55/U/JqnktJDiWqdP9a9HPeYIrB4dvHXMgCxHRjadZFxmumFcTI8ZYsGGKyGWFIQePwC5Qa+OVhqrRdoVKbX7qWZzMaA8BdHnuEstO4Nb5rwBHDUwGlFCWDVcPT4rNjc5bUstPK/0aPyli7why69usZSiJ+nWgbOG+bVWDtPY2TqjRHQDmNjMFW7JRLnKxdGmjnKDPjK/rEo0TU6VM+sdS6rNWu5e2o+abICdsz+LUBhnVG9ooqpqyxej7qyLXALKZlbxN0RJ0aDQqU2tz0Vjy+ptYGUiFMHoeP88VAa3eldW/SJJ1D4vDHRzknf/RW27xVz0hojxUsCFqFH+bjIJA6zwVUURvq8jRKLvW7JVrtM12dsLVYW4Y
X-OriginatorOrg: arm.com
X-MS-Exchange-CrossTenant-OriginalArrivalTime: 13 Apr 2026 11:48:00.2418
 (UTC)
X-MS-Exchange-CrossTenant-Network-Message-Id: f473b6eb-2d01-4bd8-4930-08de9952835e
X-MS-Exchange-CrossTenant-Id: f34e5979-57d9-4aaa-ad4d-b122a662184d
X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=f34e5979-57d9-4aaa-ad4d-b122a662184d;Ip=[4.158.2.129];Helo=[outbound-uk1.az.dlp.m.darktrace.com]
X-MS-Exchange-CrossTenant-AuthSource:
	DU6PEPF00009529.eurprd02.prod.outlook.com
X-MS-Exchange-CrossTenant-AuthAs: Anonymous
X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem
X-MS-Exchange-Transport-CrossTenantHeadersStamped: PAWPR08MB9568
X-purgate-ID: tlsNG-d25034/1776080883-A4242A3D-DF43C862/0/0
X-purgate-type: clean
X-purgate-size: 1189

Hi Milan,

> On 31 Mar 2026, at 02:52, Milan Djokic <milan_djokic@epam.com> wrote:
>=20
> From: Rahul Singh <rahul.singh@arm.com>
>=20
> 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 cmdline option viommu
> is enabled.
>=20
> Signed-off-by: Rahul Singh <rahul.singh@arm.com>
> Signed-off-by: Milan Djokic <milan_djokic@epam.com>
> ---
> xen/arch/arm/domain_build.c       | 94 +++++++++++++++++++++++++++++++
> xen/arch/arm/include/asm/viommu.h |  1 +
> 2 files changed, 95 insertions(+)
>=20
> diff --git a/xen/arch/arm/domain_build.c b/xen/arch/arm/domain_build.c
> index 30a4f1fd09..54ae3b5033 100644
> --- a/xen/arch/arm/domain_build.c
> +++ b/xen/arch/arm/domain_build.c
> @@ -1440,6 +1440,95 @@ int __init make_timer_node(const struct kernel_inf=
o *kinfo)
>     return res;
> }
>=20
> +#ifdef CONFIG_ARM_VIRTUAL_IOMMU
> +static int make_hwdom_viommu_node(const struct kernel_info *kinfo)

__init ?

The rest looks ok to me, with that fixed:

Reviewed-by: Luca Fancellu <luca.fancellu@arm.com>

Cheers,
Luca



From xen-devel-bounces@lists.xenproject.org Mon Apr 13 11:51:33 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 13 Apr 2026 11:51:33 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1281110.1564152 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wCFpB-0002qr-S4; Mon, 13 Apr 2026 11:51:29 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1281110.1564152; Mon, 13 Apr 2026 11:51: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 1wCFpB-0002qk-P5; Mon, 13 Apr 2026 11:51:29 +0000
Received: by outflank-mailman (input) for mailman id 1281110;
 Mon, 13 Apr 2026 11:51:28 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <Luca.Fancellu@arm.com>) id 1wCFpA-0002qe-6l
 for xen-devel@lists.xenproject.org; Mon, 13 Apr 2026 11:51:28 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wCFp7-002nLI-Fh
 for xen-devel@lists.xenproject.org; Mon, 13 Apr 2026 13:51:27 +0200
Received: from [10.42.69.11] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <Luca.Fancellu@arm.com>)
 id 69dcd8b7-5cb7-0a2a0a5109dd-0a2a450b8990-38
 for <xen-devel@lists.xenproject.org>; Mon, 13 Apr 2026 13:51:26 +0200
Received: from [52.101.69.9]
 (helo=AM0PR83CU005.outbound.protection.outlook.com)
 by tlsNG-42698a.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.0)
 (envelope-from <Luca.Fancellu@arm.com>)
 id 69dcd8be-bca8-0a2a450b0019-3465450905b0-3
 for <xen-devel@lists.xenproject.org>; Mon, 13 Apr 2026 13:51:26 +0200
Received: from CWLP265CA0468.GBRP265.PROD.OUTLOOK.COM (2603:10a6:400:1d4::21)
 by AS8PR08MB9744.eurprd08.prod.outlook.com (2603:10a6:20b:614::11)
 with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9769.48; Mon, 13 Apr
 2026 11:51:21 +0000
Received: from AMS0EPF000001B4.eurprd05.prod.outlook.com
 (2603:10a6:400:1d4:cafe::be) by CWLP265CA0468.outlook.office365.com
 (2603:10a6:400:1d4::21) with Microsoft SMTP Server (version=TLS1_3,
 cipher=TLS_AES_256_GCM_SHA384) id 15.20.9769.48 via Frontend Transport; Mon,
 13 Apr 2026 11:51:21 +0000
Received: from outbound-uk1.az.dlp.m.darktrace.com (4.158.2.129) by
 AMS0EPF000001B4.mail.protection.outlook.com (10.167.16.168) with Microsoft
 SMTP Server (version=TLS1_3, cipher=TLS_AES_256_GCM_SHA384) id 15.20.9745.21
 via Frontend Transport; Mon, 13 Apr 2026 11:51:21 +0000
Received: from DU2PR08MB7272.eurprd08.prod.outlook.com (2603:10a6:10:2d7::16)
 by GV1PR08MB11147.eurprd08.prod.outlook.com (2603:10a6:150:1ec::12)
 with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9769.48; Mon, 13 Apr
 2026 11:50:14 +0000
Received: from DU2PR08MB7272.eurprd08.prod.outlook.com
 ([fe80::5d34:206f:373:a323]) by DU2PR08MB7272.eurprd08.prod.outlook.com
 ([fe80::5d34:206f:373:a323%6]) with mapi id 15.20.9769.046; Mon, 13 Apr 2026
 11:50: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=arm.com header.i="@arm.com" header.h="From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck"; dkim=pass header.s=selector1 header.d=arm.com header.i="@arm.com" header.h="From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck"
ARC-Seal: i=2; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=pass;
 b=xZNQVCzCKkXZPF9ecR6BtXQFLFJZvs0SeAoR4SLmsMwSI2JAK3na7TBfWkF03DtRo7/3CPGQ1rMCpye8fDItxPj+Z3+ByLH/o2DGGblDQI8kmnqNwl3FCfwMv6l7JVHB16gxXx03hViqU2L2dAHRqZYEz+CEWnXlgNnHuZIYp213Wf5LJoEZOPmRvbhg48/7HA+ZhDvpnozunwMxq+g7tN4KGLx7lk7NyhgoOxZXUs0x4uqGuw8QIARIZh2qrb01qh6nBOvKvV8AQ3vEpg5Xk/X8tN+FpmO1zfQrf82Ysh7WdKix+hsDWftVt4HQ1b0g1vXXnTNkwO67rfL5Y8Kulw==
ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com;
 s=arcselector10001;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1;
 bh=5YwGIOcxhYngTLwhIGyiIMx6vouGo3F+MNrV+Lkof/8=;
 b=CIFrSkiET6+FPlf/CSTMdXrwCTZou8JBBZ2WI8JejLgpvvQGQAgrFz8egn5iZFuUzNgJu9ladNUerfNsuhTXNc71dok0M8FXa/jBCTEVnGJ6PiICau3UfGHHCjLODzy+Wz9G+qakRH/9z3hu/TKILCw37BCm72vxJ6N+iEHUQ4C2P8vbtoBY13dPc8F+hRXxGfKtCte/NdnGPhs5QAdXbKJhOKZ/WouIaRWFdI7EYxsMuUI8Y9cdd5fWxFiDoDAOBn1Ay19RUmQuZa9eDNhXwUTxI6xsiZGGnJ0IthuRLpiEpnWrAwM0QQ/H3N02Z7HgrVNeqZpI4jTnaoDeA3MfAA==
ARC-Authentication-Results: i=2; mx.microsoft.com 1; spf=pass (sender ip is
 4.158.2.129) smtp.rcpttodomain=epam.com smtp.mailfrom=arm.com; dmarc=pass
 (p=none sp=none pct=100) action=none header.from=arm.com; dkim=pass
 (signature was verified) header.d=arm.com; arc=pass (0 oda=1 ltdi=1
 spf=[1,1,smtp.mailfrom=arm.com] dkim=[1,1,header.d=arm.com]
 dmarc=[1,1,header.from=arm.com])
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=arm.com; s=selector1;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck;
 bh=5YwGIOcxhYngTLwhIGyiIMx6vouGo3F+MNrV+Lkof/8=;
 b=qZsjj1urdw3X4zjNSYu5dOZNs7gE1KSgXmMBGX6xg03apUrFD/vbn24s99xhUQ48RQbklkqNRtPUbTF/i5WV2lAZgLBPKRV8WcgB+dPDk9nhQeoVW/rx3irlxhsGGrXScGJa5Yxv/YW+e2o7MDkZzn4sEJYkwLWFRlQ+Wl1+PHI=
X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 4.158.2.129)
 smtp.mailfrom=arm.com; dkim=pass (signature was verified)
 header.d=arm.com;dmarc=pass action=none header.from=arm.com;
Received-SPF: Pass (protection.outlook.com: domain of arm.com designates
 4.158.2.129 as permitted sender) receiver=protection.outlook.com;
 client-ip=4.158.2.129; helo=outbound-uk1.az.dlp.m.darktrace.com; pr=C
ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none;
 b=VatQjqs56JPiMH8ucqBUnCMDKw/NoDoL3CYcM5suzhLjoUCsrGIYIpGYjX/uc7tPN3VrBL78IJtVApTynWR/2IC6sSbSO/SwlH8OtbQ2zdLjK4P75TlmgFF5qA42kSJCBCNQfvWgW3KE5DxUMO4mhJTXL0yl+DBN9jVaoGUKJB3wBHbz2bWmn392jFrCsQfVylPiZpEGl94cwuJ28WLxPW/bZrpQqGjLNbK66B06Uc630SMlj7qSalP2CRJZkHpZJyQ5F0shMmdFy0NRfsafxXn4n1OtRopjLcfFtBwrJdZ4r1yVelfdjhib9dcQbfx+KxfeAUaZwHlZgEPvx2asRg==
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com;
 s=arcselector10001;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1;
 bh=5YwGIOcxhYngTLwhIGyiIMx6vouGo3F+MNrV+Lkof/8=;
 b=ni3JbeJtXwurtiO7alZidsWtKLF9Sh6pmSZVR3/IbPdYGg0QeiIhJ0tOyVNstHRKTTex+1N8cuZuauS/ZX4fmeN7oOIKtKmmYuZQRZJGFXxy1qdUUhy4W1h7nMB1AHsWYW+jr1EWTxh7BUCs/MOd93o6Ykwh0mr6kEBjLnmj118t6qg+YU6uNxBw90TD5sbe+XZbBimfUSbfvL+WXEjKBhtnwPNnKQ82m27o3KlJlqJiQsAfA/L3ynM4lHYVe0Gy8WH1gV4rS1v/VgG3u3oHejbpkW+hhrMswPlFgNkiTXiXCXE/lqk3ZejzdH22WSf6wY+2yM/Ajuab8nMUV24WHQ==
ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass
 smtp.mailfrom=arm.com; dmarc=pass action=none header.from=arm.com; dkim=pass
 header.d=arm.com; arc=none
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=arm.com; s=selector1;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck;
 bh=5YwGIOcxhYngTLwhIGyiIMx6vouGo3F+MNrV+Lkof/8=;
 b=qZsjj1urdw3X4zjNSYu5dOZNs7gE1KSgXmMBGX6xg03apUrFD/vbn24s99xhUQ48RQbklkqNRtPUbTF/i5WV2lAZgLBPKRV8WcgB+dPDk9nhQeoVW/rx3irlxhsGGrXScGJa5Yxv/YW+e2o7MDkZzn4sEJYkwLWFRlQ+Wl1+PHI=
From: Luca Fancellu <Luca.Fancellu@arm.com>
To: Milan Djokic <milan_djokic@epam.com>
CC: "xen-devel@lists.xenproject.org" <xen-devel@lists.xenproject.org>, 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.pau@citrix.com>
Subject: Re: [PATCH v3 15/23] xen/arm: vsmmuv3: Emulated SMMUv3 device tree
 node for dom0less
Thread-Topic: [PATCH v3 15/23] xen/arm: vsmmuv3: Emulated SMMUv3 device tree
 node for dom0less
Thread-Index: AQHcyzuw/Pcnjl0pp0C7t77+0BHaBQ==
Date: Mon, 13 Apr 2026 11:50:13 +0000
Message-ID: <39A65150-0D12-4CA8-AF1B-C14CFE30FB12@arm.com>
References: <cover.1774918270.git.milan_djokic@epam.com>
 <c2eadb067d706e0f6f4289644d30cd4b1167c4df.1774918270.git.milan_djokic@epam.com>
In-Reply-To:
 <c2eadb067d706e0f6f4289644d30cd4b1167c4df.1774918270.git.milan_djokic@epam.com>
Accept-Language: en-GB, en-US
Content-Language: en-US
X-MS-Has-Attach:
X-MS-TNEF-Correlator:
x-mailer: Apple Mail (2.3826.700.81.1.6)
Authentication-Results-Original: dkim=none (message not signed)
 header.d=none;dmarc=none action=none header.from=arm.com;
x-ms-traffictypediagnostic:
	DU2PR08MB7272:EE_|GV1PR08MB11147:EE_|AMS0EPF000001B4:EE_|AS8PR08MB9744:EE_
X-MS-Office365-Filtering-Correlation-Id: b762f554-c274-42c1-cf41-08de9952fb28
x-checkrecipientrouted: true
nodisclaimer: true
X-MS-Exchange-SenderADCheck: 1
X-MS-Exchange-AntiSpam-Relay: 0
X-Microsoft-Antispam-Untrusted:
 BCL:0;ARA:13230040|366016|1800799024|376014|7416014|38070700021|18002099003|56012099003|22082099003;
X-Microsoft-Antispam-Message-Info-Original:
 Tlt0gzFfCMPSjMK2EJQwtS3tBtlaljRF0fzxQYq62GGKgVKTEySg6fjomMx6/eXhQgHJ3IT0i95RW+dZPUzAN6oyUZqP0KuJfu9UsMuvJyjQ5opuzPnAWd+w/iZlynLvvA93hIzV+oHeMDsXvCf6Ys3dG3uf71Kg2xcDBm12VmfEyyHnU17pwZpDKhXMO3J2Ne+1v76lR/8VYnGLGvDfZRtw8GUlQ8FL6N5og+jFfY4dgJu5XNtAYcTj6Ir6glqoBVg+Ez33BjdbCh/ryTGe53uvwqtOQlZLdAiVJXM3xDacGanD2cx39HLEYhk2jAuOyrSc/XkD4O4/Q5Xw1B3kPs7jNWYKCgABKWH8bqtFhcy5gQdDGQyTfZZ6DSJCMsdCjDt24pPcTZCtMMZOP/m2RpQl+E+rxqLNa2ZAq7+JdjMPHhd/GdSsd0IhZ6kucvxKpsoLAVYQ3u5wnSOREotZl606vCoqqaACgcFgQ8ktd07Gt1ueC0W3VEg42lP8XsYwJOuqLC3d6mTAnkVJP+cJBc8tODuRSoV5cfMr78LmMyrbQ+XC88XHvHeZ39uclo1vupahkisYxl7hgCF6AbXAmis4lDtEgrXMzjs6FCyHWF9EDsD7cZ2wr7UvaD4YbTWjWo5j7xq2gOTT50SF1n+zL8p/Sr9jd8VjF+lxWrudel/vgmN/LcVsN2JRONDxV867+lRddsoTfJCyHns23M498fnCzwvQE0YL8+ezWIRjlmUzyy8b9SJrTtLwqDtMhIxX1s8qTVlNZRx7ngcAiUkxtJiGvBvT5j6SlKTrhIPRBU8=
X-Forefront-Antispam-Report-Untrusted:
 CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:DU2PR08MB7272.eurprd08.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(366016)(1800799024)(376014)(7416014)(38070700021)(18002099003)(56012099003)(22082099003);DIR:OUT;SFP:1101;
Content-Type: text/plain; charset="iso-8859-1"
Content-ID: <2A591FDE10F2B646ABA3D47C638638A2@eurprd08.prod.outlook.com>
Content-Transfer-Encoding: quoted-printable
MIME-Version: 1.0
X-Exchange-RoutingPolicyChecked:
 lbMfACPDFIKpi6fy3Hm/+ycV7IomMErqthru7IIL9SFLAjIcsO96NawbNRaLPvt3xpy3tk+kqZzC2bH4I073KKZM2DJ0JUNujZWTfU+ZauStap4ZbRfgHTAOXKwEJTA9F05Nj/k0NPEknC10GVR/NPgSwiU49TlyPNa6GHm3K3GIW3Szbs/3hmJj8g6i1ThlzXtt+xqgKZcTJ/FNZYYc7Tq3oGSRh4o5UGgGVB1piTGDD2fndEARK/4yHa0Qk9zeZNl5LRN34m7U1CXdqwpaCBkv051EouoEZWcbXHFhkMZXM3DeSclMXOpVBQt+KQaLeJJOCYOn8UnNvyKXALaaoQ==
X-MS-Exchange-Transport-CrossTenantHeadersStamped: GV1PR08MB11147
X-EOPAttributedMessage: 0
X-MS-Exchange-Transport-CrossTenantHeadersStripped:
 AMS0EPF000001B4.eurprd05.prod.outlook.com
X-MS-PublicTrafficType: Email
X-MS-Office365-Filtering-Correlation-Id-Prvs:
	a85cbf41-137b-4c68-9245-08de9952d30b
X-Microsoft-Antispam:
	BCL:0;ARA:13230040|36860700016|14060799003|82310400026|35042699022|1800799024|7416014|376014|56012099003|22082099003|18002099003;
X-Microsoft-Antispam-Message-Info:
	DkbRdkjJBj48f05W7xnId8TcqydTXRnqr13L5wkeIGxrk/AFGMQy4VBkGNqjTsLxMNfzUxO01nnVrPglD5vAlYv5unfkR1QbYpN/jIKGrYO9XJGV0gRC7n85gZ86RprnIejqtsRrsX2MVgj7P9dAeGBBJ+XabgsM/DASfDOJq87M8bdy5nGr8zIQCwnuU3YhP5emVzMiBiu+vbw6343+Ml6+XHgLpgjxSNBP9UswTGWdR/mpnQRUXsta99efFMUPq89tlyUeDXiSSEO17z/97ZKIzxlHpQX7VkTQy02pG26eMjkCDLRTbEFoeFJEswZzHoaz2m5ZxAFsi4NhxhszabmbMCexWfMEp9bgoIRo6404mGxp+lPr5X0pPLVCQX/G77U3zgJmDkofdIpylYskXEOo4IZlsOAjUGfB1fomeH1LFJXjKgC97w9zgKYSe/VXpcLmVN/y50rlKMgbXHOavUM/TxIB+f4QmP3nFzCDUeQmkMpppXUMGQuEewjRI9av+iHp2V9GzoGbj5v9ZjF5it5n/EWgO6qBSEyvDB8eJ0Aj+z4Gp1kNGyFmLt4xQmK46boetkxVUkqtLc3J3B8fZ2J2fuubdUQ3HRnk7hv6kgvWGbUIEhg59hfBwH7fzsf5MGEQkXl1qs/f+5rO34wbDd1Mah/jktYFmpTQ/T6mYytHDQNPgfzYZLYisZm/fGroKjNU7yzg6TgBHYC0D2w65dwTBPnkF1rgG2iLwBx5Mjal82djZWeGzEouQWtEN5r/O3zMhFGY85kZTFxZ2Cf/Ug==
X-Forefront-Antispam-Report:
	CIP:4.158.2.129;CTRY:GB;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:outbound-uk1.az.dlp.m.darktrace.com;PTR:InfoDomainNonexistent;CAT:NONE;SFS:(13230040)(36860700016)(14060799003)(82310400026)(35042699022)(1800799024)(7416014)(376014)(56012099003)(22082099003)(18002099003);DIR:OUT;SFP:1101;
X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1
X-MS-Exchange-AntiSpam-MessageData-0:
	NgMv1DWsCj05U9MwExrDKshHq8vNxCW+EGaZv+/A1DcCxdiAXDHD6ytiYUWvnEmp2M5VR7BCkiLkxuZH5H7Tif2E8vHoSwg9YvXRseKGH6TqYHOup+SaCMtzLQVjSsgJHwGWWXIpJKuHmqi+65r3n/dyK7xc13SOFzOWimmb9hjP7sHXAapnv2ydu4hP+XCdv3sNxuLZdKVhqtETX5hwqIaunBbJkGzgJrQbFsvxBVgyyW55JBt5OXjVkQl8oAeCcSfhjwcEvvnSjmkIMIt2tktR0WjatuWM56iDhsFpz8Xi2lwj7oR3j+nzaACVEjoLGqFuNpQCb/SP8vAqK8Y6iwTCP7+mRXRfx1COBGwftBuLX992eTHg2YZ6eSpHZyW00vAj4+iWaTkYpBbpLlnk6ldWrhXW84c2DWOcWtQFx52cqxFf38g8Q8XZiSZY00mY
X-OriginatorOrg: arm.com
X-MS-Exchange-CrossTenant-OriginalArrivalTime: 13 Apr 2026 11:51:21.2345
 (UTC)
X-MS-Exchange-CrossTenant-Network-Message-Id: b762f554-c274-42c1-cf41-08de9952fb28
X-MS-Exchange-CrossTenant-Id: f34e5979-57d9-4aaa-ad4d-b122a662184d
X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=f34e5979-57d9-4aaa-ad4d-b122a662184d;Ip=[4.158.2.129];Helo=[outbound-uk1.az.dlp.m.darktrace.com]
X-MS-Exchange-CrossTenant-AuthSource:
	AMS0EPF000001B4.eurprd05.prod.outlook.com
X-MS-Exchange-CrossTenant-AuthAs: Anonymous
X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem
X-MS-Exchange-Transport-CrossTenantHeadersStamped: AS8PR08MB9744
X-purgate-ID: tlsNG-42698a/1776081086-EE74A2A1-7F60D61F/0/0
X-purgate-type: clean
X-purgate-size: 1482

Hi Milan,

> On 31 Mar 2026, at 02:52, Milan Djokic <milan_djokic@epam.com> wrote:
>=20
> From: Rahul Singh <rahul.singh@arm.com>
>=20
> 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.
>=20
> Signed-off-by: Rahul Singh <rahul.singh@arm.com>
> Signed-off-by: Milan Djokic <milan_djokic@epam.com>
> ---
> xen/arch/arm/dom0less-build.c         | 53 +++++++++++++++++++++++++++
> xen/include/public/device_tree_defs.h |  1 +
> 2 files changed, 54 insertions(+)
>=20
> diff --git a/xen/arch/arm/dom0less-build.c b/xen/arch/arm/dom0less-build.=
c
> index 067835e5d0..a48edb9568 100644
> --- a/xen/arch/arm/dom0less-build.c
> +++ b/xen/arch/arm/dom0less-build.c
> @@ -218,10 +218,63 @@ static int __init make_vpl011_uart_node(struct kern=
el_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);

PRIx64 ?

The rest looks ok to me, with that fixed:

Reviewed-by: Luca Fancellu <luca.fancellu@arm.com>

Cheers,
Luca




From xen-devel-bounces@lists.xenproject.org Mon Apr 13 13:45:24 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 13 Apr 2026 13:45:24 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1281152.1564179 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wCHbD-0007gk-TR; Mon, 13 Apr 2026 13:45:11 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1281152.1564179; Mon, 13 Apr 2026 13: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 1wCHbD-0007gd-PD; Mon, 13 Apr 2026 13:45:11 +0000
Received: by outflank-mailman (input) for mailman id 1281152;
 Mon, 13 Apr 2026 13:45:11 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <Luca.Fancellu@arm.com>) id 1wCHbC-0007gX-Ry
 for xen-devel@lists.xenproject.org; Mon, 13 Apr 2026 13:45:11 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wCHbC-007me8-7i
 for xen-devel@lists.xenproject.org; Mon, 13 Apr 2026 15:45:10 +0200
Received: from [10.42.69.11] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <Luca.Fancellu@arm.com>)
 id 69dcf362-bab6-0a2a0a5309dd-0a2a450b9672-12
 for <xen-devel@lists.xenproject.org>; Mon, 13 Apr 2026 15:45:09 +0200
Received: from [52.101.69.22]
 (helo=AM0PR83CU005.outbound.protection.outlook.com)
 by tlsNG-42698a.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.0)
 (envelope-from <Luca.Fancellu@arm.com>)
 id 69dcf365-bca8-0a2a450b0019-34654516ff6b-3
 for <xen-devel@lists.xenproject.org>; Mon, 13 Apr 2026 15:45:09 +0200
Received: from DUZPR01CA0139.eurprd01.prod.exchangelabs.com
 (2603:10a6:10:4bd::14) by FRZPR08MB10901.eurprd08.prod.outlook.com
 (2603:10a6:d10:139::19) with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9769.48; Mon, 13 Apr
 2026 13:45:06 +0000
Received: from DB1PEPF000509F5.eurprd02.prod.outlook.com
 (2603:10a6:10:4bd:cafe::a2) by DUZPR01CA0139.outlook.office365.com
 (2603:10a6:10:4bd::14) with Microsoft SMTP Server (version=TLS1_3,
 cipher=TLS_AES_256_GCM_SHA384) id 15.20.9769.48 via Frontend Transport; Mon,
 13 Apr 2026 13:45:06 +0000
Received: from outbound-uk1.az.dlp.m.darktrace.com (4.158.2.129) by
 DB1PEPF000509F5.mail.protection.outlook.com (10.167.242.151) with Microsoft
 SMTP Server (version=TLS1_3, cipher=TLS_AES_256_GCM_SHA384) id 15.20.9769.17
 via Frontend Transport; Mon, 13 Apr 2026 13:45:05 +0000
Received: from DU2PR08MB7272.eurprd08.prod.outlook.com (2603:10a6:10:2d7::16)
 by AS8PR08MB6405.eurprd08.prod.outlook.com (2603:10a6:20b:332::12)
 with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9769.17; Mon, 13 Apr
 2026 13:44:03 +0000
Received: from DU2PR08MB7272.eurprd08.prod.outlook.com
 ([fe80::5d34:206f:373:a323]) by DU2PR08MB7272.eurprd08.prod.outlook.com
 ([fe80::5d34:206f:373:a323%6]) with mapi id 15.20.9769.046; Mon, 13 Apr 2026
 13:44:03 +0000
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@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=arm.com header.i="@arm.com" header.h="From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck"; dkim=pass header.s=selector1 header.d=arm.com header.i="@arm.com" header.h="From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck"
ARC-Seal: i=2; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=pass;
 b=E2d5O3UTMPkivMp1q8ugqtnIB8sdTwOwrkr2INf+Fdp1Ta+F0hX4Mm4RiHO3va0+R/6CqAXonqmGRQgPbNGi9UITP1AawHPKpl74UH9hF9oXvVLgZOld88soX4zU4cAc9sS70JHrql2k9jhSTALYM439XoaQyKhVU6Ik92LbjtC8JUyjkge6gSt+Bqi0vvIZf9+GxrfouePOvgJBIYj7iC3K+uQM+PyZ7xoqKMkZ2uB8NC4abWg+r6/vjRmK//paBmss9WqIT7QlZzVD3MbcTgPN1sk0rnU7ndXG4cCQFYrBFFEVW7Ch7MnkOK1kauzoa7+ah9xOVh2SFFefvlFNoA==
ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com;
 s=arcselector10001;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1;
 bh=fAs/IheV+auxMrH8rqjFGGtBB/B27mD1QFcTXdKHfno=;
 b=eSVTPHfDLFNiP6Yy/tRqup2HqpejxjvwUXHNOhJ+1sacNcE6ToljSg/5euD5qm05oL4+yCu0MHZtNRz24Z8Yk5iIhq85IgrIIUHubhcSLnZla/rfNT9pkPuDbgCBg98auqDiVKzOJ0u1jkMJ9keGWDM1prgJp23A/fBcGo06ONQH9/Mq/73ZstwInGLYWjhiGnkyZ660uPeUJV7sCfw2Y5WO6ussJ4sinwTed2SNzOoK2sKjd8Bi4hEsFVSUJMKSfqN44VcDJY3H5i2Kk85VxVFLxRX0+IeaJgOP/JZ1CSGw0cnPMW+F2yBpmwGhzhtrtj2X6butASM1BZ0YtReVEg==
ARC-Authentication-Results: i=2; mx.microsoft.com 1; spf=pass (sender ip is
 4.158.2.129) smtp.rcpttodomain=epam.com smtp.mailfrom=arm.com; dmarc=pass
 (p=none sp=none pct=100) action=none header.from=arm.com; dkim=pass
 (signature was verified) header.d=arm.com; arc=pass (0 oda=1 ltdi=1
 spf=[1,1,smtp.mailfrom=arm.com] dkim=[1,1,header.d=arm.com]
 dmarc=[1,1,header.from=arm.com])
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=arm.com; s=selector1;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck;
 bh=fAs/IheV+auxMrH8rqjFGGtBB/B27mD1QFcTXdKHfno=;
 b=HJjSpxCG4hLGdJ1zNk7TGCGa3kklfSeYvPXNuDfT//GqFecxTsvMPnLoz6ySzIMOPK4R1wUcQZKwgngsQDw0T/UwMf5A37z4rb+dyMsYRp9ybB61X5PcYC/GtFwDENqkuGVlQXMN+4guWh9IfToVhr+8BV74Ul6gFvbhLm5BjBY=
X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 4.158.2.129)
 smtp.mailfrom=arm.com; dkim=pass (signature was verified)
 header.d=arm.com;dmarc=pass action=none header.from=arm.com;
Received-SPF: Pass (protection.outlook.com: domain of arm.com designates
 4.158.2.129 as permitted sender) receiver=protection.outlook.com;
 client-ip=4.158.2.129; helo=outbound-uk1.az.dlp.m.darktrace.com; pr=C
ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none;
 b=IHDnAwXwfuAEuqRE1bOMIro2OaoDDm50LTukWjfJ0UNyUrsHs4kae3GH6fRAmwzbIVFacKttM7m5IqSV39DOjb2qw1RWYpvAicESicGNSMvNcTDu3nbcQCtPBtXaeuymUEOo7e0UuLjGVE84a1+nhTmwLOjmC75oNMWaWbEGJcODM+j9vwj6d/vSaKbOPm6bs2zunnvI0Fr7TWGJM7g7DEN5qb3I2j5p5SL+MV/0YsabtnzCw/oLTCjysngNagMFpQ92boYRxeSuW7SL1QUUdRRgtzueWfhZpiagNE3REqPiEs9YcxojUv3DOYVDrd3cHf4FFZVR3tzXyzFEzr4ovA==
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com;
 s=arcselector10001;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1;
 bh=fAs/IheV+auxMrH8rqjFGGtBB/B27mD1QFcTXdKHfno=;
 b=mpXDn3Bj9PRaH2raLccTiQPYVMMuCvOyzYqCJAUCxFsHdaJdtTTG/t1oKoaHK3vziwDmE5b2/QWeFq/3gG8dN8UMdHiAnV6gH8KxMTsbIjqGufK3ADa96BopUtkP41xEjaenokOfg1KxHO/cZoW3Iku67/Gd2AkICijsUlL3PP7sOO+OpBybzl2n88rlkMOLyc5jHQcMgNEpDvS9uZCURlNybSqmLsiipmhdEF90gJOplyDjaUlZiwNhzYf2RTLMqXscp3WmTZvT50TRcOfWQ0N0Cs7a4+LCDk2y0o4pjaMRY7WTLkjvzscxddY43StkJsZQOcH9gDO1BL6Cm100fQ==
ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass
 smtp.mailfrom=arm.com; dmarc=pass action=none header.from=arm.com; dkim=pass
 header.d=arm.com; arc=none
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=arm.com; s=selector1;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck;
 bh=fAs/IheV+auxMrH8rqjFGGtBB/B27mD1QFcTXdKHfno=;
 b=HJjSpxCG4hLGdJ1zNk7TGCGa3kklfSeYvPXNuDfT//GqFecxTsvMPnLoz6ySzIMOPK4R1wUcQZKwgngsQDw0T/UwMf5A37z4rb+dyMsYRp9ybB61X5PcYC/GtFwDENqkuGVlQXMN+4guWh9IfToVhr+8BV74Ul6gFvbhLm5BjBY=
From: Luca Fancellu <Luca.Fancellu@arm.com>
To: Milan Djokic <milan_djokic@epam.com>
CC: "xen-devel@lists.xenproject.org" <xen-devel@lists.xenproject.org>, Rahul
 Singh <Rahul.Singh@arm.com>, Anthony PERARD <anthony.perard@vates.tech>,
	Juergen Gross <jgross@suse.com>
Subject: Re: [PATCH v3 16/23] arm/libxl: vsmmuv3: Emulated SMMUv3 device tree
 node in libxl
Thread-Topic: [PATCH v3 16/23] arm/libxl: vsmmuv3: Emulated SMMUv3 device tree
 node in libxl
Thread-Index: AQHcy0uWtT0jmyy89kG09VrDZ/FQXg==
Date: Mon, 13 Apr 2026 13:44:02 +0000
Message-ID: <B8A18E5E-387F-4390-8928-AA53E6D23270@arm.com>
References: <cover.1774918270.git.milan_djokic@epam.com>
 <58c7eb798749c8c78935f5a8fc9e0aeff81760bb.1774918270.git.milan_djokic@epam.com>
In-Reply-To:
 <58c7eb798749c8c78935f5a8fc9e0aeff81760bb.1774918270.git.milan_djokic@epam.com>
Accept-Language: en-GB, en-US
Content-Language: en-US
X-MS-Has-Attach:
X-MS-TNEF-Correlator:
x-mailer: Apple Mail (2.3826.700.81.1.6)
Authentication-Results-Original: dkim=none (message not signed)
 header.d=none;dmarc=none action=none header.from=arm.com;
x-ms-traffictypediagnostic:
	DU2PR08MB7272:EE_|AS8PR08MB6405:EE_|DB1PEPF000509F5:EE_|FRZPR08MB10901:EE_
X-MS-Office365-Filtering-Correlation-Id: 0ff1fe43-62b2-42a1-c83e-08de9962defd
x-checkrecipientrouted: true
nodisclaimer: true
X-MS-Exchange-SenderADCheck: 1
X-MS-Exchange-AntiSpam-Relay: 0
X-Microsoft-Antispam-Untrusted:
 BCL:0;ARA:13230040|376014|366016|1800799024|38070700021|22082099003|18002099003|56012099003;
X-Microsoft-Antispam-Message-Info-Original:
 wHz5zINFGM/QfaiuQEBGCtRucsADZ8cfStHyWfzTpK/T4LURnIs07s6TKhQvD7NRXqRg/gIJOa76IKto3synKbhmtttva5sIwCT2CjNqynEv5mMAc0Fvaic7+tNLhUfT2p5/qQYNbnWDUY6rQRXcqtC6dLU2Z+yuy1JWQefOtnAOoT/PKGKZxmQH1JfJtD7v1xpn9Kn7KGx/OttMAmUiPV1ycHvIgno7fbUsEZCyQfewaYt2AiWqA0dtK+s2WSgcwxkrorOsIo+/T8Jy7V21IR7sd5oHvz6s1ZT+Z6YvBRMDdkfy7+R+7L15Wsx1uE0nBRCJuQTdXWNmvWugd1OrNMvEuLpIzMVdaqfx5MDlfAtcBKxh0eedBVB2k0psOYjrYkdFWCfLJfkzc9TJe7VlpicVkhqzZlAsOCLHXXSCzGuBCk/LQMYpqjRDe5I8eth3Bz5fbLYHI03leSvJ6o1dMehDogafVPtOVjtqJJ1VFM3GuRvT4jVCE+cguCp0qcqPB+Pe94OITypToDAn9j6ceF18ZyIDDF8YhTUw8SszIuB6oOkNG0CY1VNEWK9hdbKM0v/L7X92jYcD81mboB9N31IhPOZi6JYXIg8X68TUWyTLdB1EYEMAE7uEzViWk6RM+5chjttsexFCaOYKbEiyTY2TjIR8giiIhwF0ER4/PGXGj4WygUlLi7F2kvuCUMmsCXhGGMrkTToIwLC2SpY1Ef2zBaOcEjI5qqRB2iln6+MsDSNUycB0Cha8Y7CX7b4J1c5xhutxH+SBo6o0ThSP/OcNkgqsZtVhx9dtlcQ66ic=
X-Forefront-Antispam-Report-Untrusted:
 CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:DU2PR08MB7272.eurprd08.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(376014)(366016)(1800799024)(38070700021)(22082099003)(18002099003)(56012099003);DIR:OUT;SFP:1101;
Content-Type: text/plain; charset="utf-8"
Content-ID: <7C3FCADD1620DC419D941DBA881890E3@eurprd08.prod.outlook.com>
Content-Transfer-Encoding: base64
MIME-Version: 1.0
X-Exchange-RoutingPolicyChecked:
 mTv+T4SeKw5kaDLXxMp+yyCfcbN1RDKMBLj83Hm3/gk0CETCeN7AWRf38TIXLZw7yNUrIfxyAgKGgGaTj7O+hYYRB7envoDgdnUjYT9RJH2Nw7NHioqhIDfMsVc3UjbqM4NxyFtJVFgTAo9hcJnZQ52kOKCvO62nN37sRGu8oEH7lGpkv8W6I5Mo61FbAlrYuEXpDpgfyjIvfrSD4AisSAx9WrwBINGjn90qNFVdUpwP1BSz049xEA7Y1Z6q8QABQ31JEWstzvaYcCUKo3SGgobYKzbG8Wc4nWK4tbF2Uk6Tr0rT3iUxeIRNjil5FhXJGyxS53yW+o8taixx5YS8Mg==
X-MS-Exchange-Transport-CrossTenantHeadersStamped: AS8PR08MB6405
X-EOPAttributedMessage: 0
X-MS-Exchange-Transport-CrossTenantHeadersStripped:
 DB1PEPF000509F5.eurprd02.prod.outlook.com
X-MS-PublicTrafficType: Email
X-MS-Office365-Filtering-Correlation-Id-Prvs:
	674ff7f8-cb2c-49d7-948a-08de9962b971
X-Microsoft-Antispam:
	BCL:0;ARA:13230040|35042699022|376014|1800799024|14060799003|82310400026|36860700016|56012099003|22082099003|18002099003;
X-Microsoft-Antispam-Message-Info:
	ujK167y112wKppNJeMD46fU3YBGrqUb16YnYWxqYwsqzP6vzcXgybFUx/3B6xcvzjp6qFPkUbM2gwVPJ+q/bIGOavm3AwG4RAEc4bB6pmxf8gXEtg79rSXfK/luID/Na+r9Cv+tns+VPeeHtztvbS3Qz2tuAd6MaKwN82D6nKVkNpRshaF3OT4DHmdIZ4HVuH3QpwACMdg9vhxEMzhh0O73jVVhEO1hZSFLPWKGku3N/tY7eEYW6+mPTeqIPFw0DNqWwVA2TuWSgAwYNg77hP73NedZO6/rqkHFot+/E6saRGe1py06a8mtj6pXUhw+ODr0WgMOqNQw8RAP2yrkDz8lYPJ609a3TRY8TKzJ8JYGVjKHH474MCV1pvt6jbaLpWPK0VXAAZ8D0NrNOhA/7BKLNriBQi+w/jxGbURob3/m538Pr9auryYYsMUuCYfnBRINnTRmmDf8K0AWirE/hPXHwdfRfpTtdohXGhD0mXTeqefofcu9Ih2d49PjbNcCvsYFzIQRYZhuZF7ZDUJb7Mm1pIcMeD8QwFOJCwC+GLd+ULuYry1jIm9pg+iaM3YZRUoxvVigQklu4olBrUm77m6yShQxSiibcXgSxfDRDm8iLkIciSh8QqMoO+72ccqKdDBzj/A0T0BdzKVBJVx4Adh2CGnCMGwguwN4F5vPuT5mahS11xjauv+1PbTnUEAk0K4sriCDOMtTFKMxsikSzBb1I22kx0eyw0AEDZrjciCUoPiUt5uu9sPbQVWbvyZZDyAelyBjorMcqXnJbRQdgDA==
X-Forefront-Antispam-Report:
	CIP:4.158.2.129;CTRY:GB;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:outbound-uk1.az.dlp.m.darktrace.com;PTR:InfoDomainNonexistent;CAT:NONE;SFS:(13230040)(35042699022)(376014)(1800799024)(14060799003)(82310400026)(36860700016)(56012099003)(22082099003)(18002099003);DIR:OUT;SFP:1101;
X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1
X-MS-Exchange-AntiSpam-MessageData-0:
	chzpPKqrwzEARNG2oNh7cg9x2o054nXgr+Eb/rZ1gu4oF5JAVxA9BjTPVd9aVusmQ6US2ipzOGDPENM62m7m73kR/RH5kj/hlpgV96TnfxZ4nT8ARvbGZkaal7zOqzEKc/KnXHjWXawHR1fQoQVBZWXQMCZeuMN6qxo+9PLMcDUVejiJXTRE2I3K1aFlf/yH+dbFU2mgn1nQoRsOmdfeFTPPGEr9IaJoyHzZS6I21x17aJiGVaajg94DZlbTqgtIeyHdGgfq4niTFEo97YvMMUgmDmcScLwTzKzCDcBGzQ4nw0vnTt83sE3GrQe7wTU7/Uk17R3WfdnI1G2Qcm4Mi8k/xTPHBjGy4BQBZ9/3EAclnOgliDASWPb2xSYfhgXYHis1/GumX8SxeaXoWV2Y5mU9bhJNO0BhBwgL4mN25l9MJRaqvADtWkoHYdAoFX8A
X-OriginatorOrg: arm.com
X-MS-Exchange-CrossTenant-OriginalArrivalTime: 13 Apr 2026 13:45:05.9191
 (UTC)
X-MS-Exchange-CrossTenant-Network-Message-Id: 0ff1fe43-62b2-42a1-c83e-08de9962defd
X-MS-Exchange-CrossTenant-Id: f34e5979-57d9-4aaa-ad4d-b122a662184d
X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=f34e5979-57d9-4aaa-ad4d-b122a662184d;Ip=[4.158.2.129];Helo=[outbound-uk1.az.dlp.m.darktrace.com]
X-MS-Exchange-CrossTenant-AuthSource:
	DB1PEPF000509F5.eurprd02.prod.outlook.com
X-MS-Exchange-CrossTenant-AuthAs: Anonymous
X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem
X-MS-Exchange-Transport-CrossTenantHeadersStamped: FRZPR08MB10901
X-purgate-ID: tlsNG-42698a/1776087909-F5FC02A1-A167A402/0/0
X-purgate-type: clean
X-purgate-size: 3470

SGkgTWlsYW4sDQoNCj4gT24gMzEgTWFyIDIwMjYsIGF0IDAyOjUyLCBNaWxhbiBEam9raWMgPG1p
bGFuX2Rqb2tpY0BlcGFtLmNvbT4gd3JvdGU6DQo+IA0KPiBGcm9tOiBSYWh1bCBTaW5naCA8cmFo
dWwuc2luZ2hAYXJtLmNvbT4NCj4gDQo+IGxpYnhsIHdpbGwgY3JlYXRlIGFuIEVtdWxhdGVkIFNN
TVV2MyBkZXZpY2UgdHJlZSBub2RlIGluIHRoZSBkZXZpY2UNCj4gdHJlZSB0byBlbmFibGUgdGhl
IGd1ZXN0IE9TIHRvIGRpc2NvdmVyIHRoZSB2aXJ0dWFsIFNNTVV2MyBkdXJpbmcgZ3Vlc3QNCj4g
Ym9vdC4NCj4gDQo+IEVtdWxhdGVkIFNNTVV2MyBkZXZpY2UgdHJlZSBub2RlIHdpbGwgb25seSBi
ZSBjcmVhdGVkIHdoZW4NCj4gInZpb21tdT1zbW11djMiIGlzIHNldCBpbiB4bCBkb21haW4gY29u
ZmlndXJhdGlvbi4NCj4gDQo+IFNpZ25lZC1vZmYtYnk6IFJhaHVsIFNpbmdoIDxyYWh1bC5zaW5n
aEBhcm0uY29tPg0KPiBTaWduZWQtb2ZmLWJ5OiBNaWxhbiBEam9raWMgPG1pbGFuX2Rqb2tpY0Bl
cGFtLmNvbT4NCj4gLS0tDQo+IHRvb2xzL2xpYnMvbGlnaHQvbGlieGxfYXJtLmMgfCAzNyArKysr
KysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysNCj4gMSBmaWxlIGNoYW5nZWQsIDM3IGlu
c2VydGlvbnMoKykNCj4gDQo+IGRpZmYgLS1naXQgYS90b29scy9saWJzL2xpZ2h0L2xpYnhsX2Fy
bS5jIGIvdG9vbHMvbGlicy9saWdodC9saWJ4bF9hcm0uYw0KPiBpbmRleCBhMjQ4NzkzNTg4Li5l
Yjg3OTQ3M2Y1IDEwMDY0NA0KPiAtLS0gYS90b29scy9saWJzL2xpZ2h0L2xpYnhsX2FybS5jDQo+
ICsrKyBiL3Rvb2xzL2xpYnMvbGlnaHQvbGlieGxfYXJtLmMNCj4gQEAgLTkwMSw2ICs5MDEsMzYg
QEAgc3RhdGljIGludCBtYWtlX3ZwbDAxMV91YXJ0X25vZGUobGlieGxfX2djICpnYywgdm9pZCAq
ZmR0LA0KPiAgICAgcmV0dXJuIDA7DQo+IH0NCj4gDQo+ICtzdGF0aWMgaW50IG1ha2VfdnNtbXV2
M19ub2RlKGxpYnhsX19nYyAqZ2MsIHZvaWQgKmZkdCwNCj4gKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgY29uc3Qgc3RydWN0IGFyY2hfaW5mbyAqYWluZm8sDQo+ICsgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHN0cnVjdCB4Y19kb21faW1hZ2UgKmRvbSkNCj4gK3sNCj4gKyAgICBp
bnQgcmVzOw0KPiArICAgIGNvbnN0IGNoYXIgKm5hbWUgPSBHQ1NQUklOVEYoImlvbW11QCVsbHgi
LCBHVUVTVF9WU01NVVYzX0JBU0UpOw0KDQpQUkl4NjQgPw0KDQo+ICsNCj4gKyAgICByZXMgPSBm
ZHRfYmVnaW5fbm9kZShmZHQsIG5hbWUpOw0KPiArICAgIGlmIChyZXMpIHJldHVybiByZXM7DQo+
ICsNCj4gKyAgICByZXMgPSBmZHRfcHJvcGVydHlfY29tcGF0KGdjLCBmZHQsIDEsICJhcm0sc21t
dS12MyIpOw0KPiArICAgIGlmIChyZXMpIHJldHVybiByZXM7DQo+ICsNCj4gKyAgICByZXMgPSBm
ZHRfcHJvcGVydHlfcmVncyhnYywgZmR0LCBHVUVTVF9ST09UX0FERFJFU1NfQ0VMTFMsDQo+ICsg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgR1VFU1RfUk9PVF9TSVpFX0NFTExTLCAxLCBHVUVT
VF9WU01NVVYzX0JBU0UsDQo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgR1VFU1RfVlNN
TVVWM19TSVpFKTsNCj4gKyAgICBpZiAocmVzKSByZXR1cm4gcmVzOw0KPiArDQo+ICsgICAgcmVz
ID0gZmR0X3Byb3BlcnR5X2NlbGwoZmR0LCAicGhhbmRsZSIsIEdVRVNUX1BIQU5ETEVfVlNNTVVW
Myk7DQo+ICsgICAgaWYgKHJlcykgcmV0dXJuIHJlczsNCj4gKw0KPiArICAgIHJlcyA9IGZkdF9w
cm9wZXJ0eV9jZWxsKGZkdCwgIiNpb21tdS1jZWxscyIsIDEpOw0KPiArICAgIGlmIChyZXMpIHJl
dHVybiByZXM7DQo+ICsNCj4gKyAgICByZXMgPSBmZHRfZW5kX25vZGUoZmR0KTsNCj4gKyAgICBp
ZiAocmVzKSByZXR1cm4gcmVzOw0KPiArDQo+ICsgICAgcmV0dXJuIDA7DQo+ICt9DQo+ICsNCj4g
c3RhdGljIGludCBtYWtlX3ZwY2lfbm9kZShsaWJ4bF9fZ2MgKmdjLCB2b2lkICpmZHQsDQo+ICAg
ICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgc3RydWN0IGFyY2hfaW5mbyAqYWluZm8sDQo+
ICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RydWN0IHhjX2RvbV9pbWFnZSAqZG9tKQ0KPiBA
QCAtOTQyLDYgKzk3MiwxMCBAQCBzdGF0aWMgaW50IG1ha2VfdnBjaV9ub2RlKGxpYnhsX19nYyAq
Z2MsIHZvaWQgKmZkdCwNCj4gICAgICAgICBHVUVTVF9WUENJX1BSRUZFVENIX01FTV9TSVpFKTsN
Cj4gICAgIGlmIChyZXMpIHJldHVybiByZXM7DQo+IA0KPiArICAgIHJlcyA9IGZkdF9wcm9wZXJ0
eV92YWx1ZXMoZ2MsIGZkdCwgImlvbW11LW1hcCIsIDQsIDAsDQo+ICsgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBHVUVTVF9QSEFORExFX1ZTTU1VVjMsIDAsIDB4MTAwMDApOw0KPiArICAg
IGlmIChyZXMpIHJldHVybiByZXM7DQoNClNob3VsZG7igJl0IHRoaXMgb25lIGJlIHByb3RlY3Rl
ZCBieSAoaW5mby0+YXJjaF9hcm0udmlvbW11X3R5cGUgPT0gTElCWExfVklPTU1VX1RZUEVfU01N
VVYzKT8NCg0KQ2hlZXJzLA0KTHVjYQ0KDQo=


From xen-devel-bounces@lists.xenproject.org Mon Apr 13 14:10:05 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 13 Apr 2026 14:10:05 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1281168.1564195 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wCHzD-0002Kt-S5; Mon, 13 Apr 2026 14:09:59 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1281168.1564195; Mon, 13 Apr 2026 14:09: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 1wCHzD-0002Km-PD; Mon, 13 Apr 2026 14:09:59 +0000
Received: by outflank-mailman (input) for mailman id 1281168;
 Mon, 13 Apr 2026 14:09:58 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <Luca.Fancellu@arm.com>) id 1wCHzC-0002KD-My
 for xen-devel@lists.xenproject.org; Mon, 13 Apr 2026 14:09:58 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wCHzC-002cUY-31
 for xen-devel@lists.xenproject.org; Mon, 13 Apr 2026 16:09:58 +0200
Received: from [10.42.69.3] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <Luca.Fancellu@arm.com>)
 id 69dcf934-5cb7-0a2a0a5109dd-0a2a45038396-14
 for <xen-devel@lists.xenproject.org>; Mon, 13 Apr 2026 16:09:57 +0200
Received: from [40.107.130.46]
 (helo=MRWPR03CU001.outbound.protection.outlook.com)
 by tlsNG-33051d.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.0)
 (envelope-from <Luca.Fancellu@arm.com>)
 id 69dcf935-02b3-0a2a45030019-286b822e898e-3
 for <xen-devel@lists.xenproject.org>; Mon, 13 Apr 2026 16:09:57 +0200
Received: from CWLP265CA0491.GBRP265.PROD.OUTLOOK.COM (2603:10a6:400:18a::23)
 by VE1PR08MB5728.eurprd08.prod.outlook.com (2603:10a6:800:1a0::13)
 with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9769.48; Mon, 13 Apr
 2026 14:09:51 +0000
Received: from AMS1EPF00000090.eurprd05.prod.outlook.com
 (2603:10a6:400:18a:cafe::3b) by CWLP265CA0491.outlook.office365.com
 (2603:10a6:400:18a::23) with Microsoft SMTP Server (version=TLS1_3,
 cipher=TLS_AES_256_GCM_SHA384) id 15.20.9769.48 via Frontend Transport; Mon,
 13 Apr 2026 14:09:49 +0000
Received: from outbound-uk1.az.dlp.m.darktrace.com (4.158.2.129) by
 AMS1EPF00000090.mail.protection.outlook.com (10.167.242.87) with Microsoft
 SMTP Server (version=TLS1_3, cipher=TLS_AES_256_GCM_SHA384) id 15.20.9769.17
 via Frontend Transport; Mon, 13 Apr 2026 14:09:49 +0000
Received: from DU2PR08MB7272.eurprd08.prod.outlook.com (2603:10a6:10:2d7::16)
 by VI1PR08MB10273.eurprd08.prod.outlook.com (2603:10a6:800:1be::7)
 with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9745.28; Mon, 13 Apr
 2026 14:08:43 +0000
Received: from DU2PR08MB7272.eurprd08.prod.outlook.com
 ([fe80::5d34:206f:373:a323]) by DU2PR08MB7272.eurprd08.prod.outlook.com
 ([fe80::5d34:206f:373:a323%6]) with mapi id 15.20.9769.046; Mon, 13 Apr 2026
 14:08: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=arm.com header.i="@arm.com" header.h="From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck"; dkim=pass header.s=selector1 header.d=arm.com header.i="@arm.com" header.h="From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck"
ARC-Seal: i=2; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=pass;
 b=qposFM5KButqIHk3UZcHz56rIDo1oE8U1GMEheNs/05sz3//1e7ONfF4sWxCS+06uITnfmT8NEoxmMptY3wwlYYKsuWKq0DzgP0APn/VERGwBIAkvKuWveSNInyzTv1HrlDXF1nfIzIRWpFqIvQPbBWZfvuCmW0hw9earFUH1AjthjA3Q+K5WAs1/kgU2f3Kj++ZASqEo3sMWCCx3wx2ZMdJW8ZEeKONoN2a52NRbIR33mzeZfXdDrfGw5yppZRfQOWk3Hez9tir7mCNIEPa57ZxL/DeMZsxGQDbXr/2SWS3F1zdlNKEG48NZlFRN9s+wctN9QK1DpYvsCI7pleLxQ==
ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com;
 s=arcselector10001;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1;
 bh=uz9UpjxAqS+7cm/kak0fgHeEiA61zv4+UV3DbjBj2JA=;
 b=QSoLGjOqZdhVkSFdFrbgmXu9hE33Wpx8JFeKhauIipWssiUnhZvGOSgHCqXcYB/9UPCBNfes32oxNIhS8ytmoU6B17/w496jFYWkbi3TA/bH2qXMyG4Vsx1rOqabe0zVbgqpun3ziifGy6qI+iAwoVNaJ6zGkya3i0WQd84bntyry5pg99nT28qHLSJmYyLBKzBWWiuRfGLsq999KyWxKT5V505SZgJzRWpGLs0RvnefxeQ+TIFVeiieqzwmCWWYaF/81lUqXSPCqBqq2RzfiB+UKXSqKP2bWzcmeJvu7g00JDhnhCbxGzJ4hiqAvuI3gHoPjtYv5QMHFT9eGI3Izg==
ARC-Authentication-Results: i=2; mx.microsoft.com 1; spf=pass (sender ip is
 4.158.2.129) smtp.rcpttodomain=epam.com smtp.mailfrom=arm.com; dmarc=pass
 (p=none sp=none pct=100) action=none header.from=arm.com; dkim=pass
 (signature was verified) header.d=arm.com; arc=pass (0 oda=1 ltdi=1
 spf=[1,1,smtp.mailfrom=arm.com] dkim=[1,1,header.d=arm.com]
 dmarc=[1,1,header.from=arm.com])
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=arm.com; s=selector1;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck;
 bh=uz9UpjxAqS+7cm/kak0fgHeEiA61zv4+UV3DbjBj2JA=;
 b=kdVoPUULoP+pB0k8i8sXtIbzXP40uCm5rNeV1+N1LtINSITiQbvlOqPKZhqJhqZwLciflv9x/wi1yOqqXAC336hCDB/C2QiF9ZMdc/1u9UHuSRAwljkdMMQ2lZp2mejfbTBv7wf0xe/ON7lf4cFBbL3AjNO8NnFRo+c6LKf9NC8=
X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 4.158.2.129)
 smtp.mailfrom=arm.com; dkim=pass (signature was verified)
 header.d=arm.com;dmarc=pass action=none header.from=arm.com;
Received-SPF: Pass (protection.outlook.com: domain of arm.com designates
 4.158.2.129 as permitted sender) receiver=protection.outlook.com;
 client-ip=4.158.2.129; helo=outbound-uk1.az.dlp.m.darktrace.com; pr=C
ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none;
 b=X4EVDDE9qx75xFX397Ppf/syiLOdWFgtFZMLkEtperpBILjK+/S5eBIr6s/e8LO0/edR60Z8mXVveSuqhAhrM6/nqSfKixopoLZvHfnqOcsnmDsH1UqX2BsxipbrHMXPi5KZBRFIpPxYkzUfuvnNQbRZyXZSYgdU4YGeDBG4PS2lTyx2Lts7PEkz9RbPiq4BiKYMIIpLs2OP9ainGYnsFJwMQW39tJdUmWOQwhMMW80AVKVO1RNeWmCjz4TvNbamKojH2eHuOD6R5kqGuVZevfhZelh1kW8lA4sBXwz2XukaCe4q8hfZd1t3nNwsCjAd1en4gZfp5nJjEdrQv3G6VA==
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com;
 s=arcselector10001;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1;
 bh=uz9UpjxAqS+7cm/kak0fgHeEiA61zv4+UV3DbjBj2JA=;
 b=G5Et4hkIqq+4+ku3/3Cb6zYS7UICCYWYvssjGKdV7GU+qpwJD2SgAyeV0dQx+E5Sl9ztFmaIRRl/8uY8+mrc/IxMVFCkV/k2NgKXp3qdnMoQXEKFWIjJfcc1PdkmASa5JzVTB5BIorIj0V+Y6+PX8UlL8kfZ8dRDZGAFjvtvUPiMDt/ATu+WHTwL8UFdre9EopzENm6QtTpJ7OaHAM3uxhq3CxHsvW4GgpQ4IovIQ06gzofPG1NJz+9VfXQaYBEf5Bto4Lgp9qYViIRlJpJnwsIMW7RD/zK/n+ciIWuc/AsQJGJE3W8XfLW2AJlPCq32+a/bpkPhyDg+9Te+DqhZ5Q==
ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass
 smtp.mailfrom=arm.com; dmarc=pass action=none header.from=arm.com; dkim=pass
 header.d=arm.com; arc=none
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=arm.com; s=selector1;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck;
 bh=uz9UpjxAqS+7cm/kak0fgHeEiA61zv4+UV3DbjBj2JA=;
 b=kdVoPUULoP+pB0k8i8sXtIbzXP40uCm5rNeV1+N1LtINSITiQbvlOqPKZhqJhqZwLciflv9x/wi1yOqqXAC336hCDB/C2QiF9ZMdc/1u9UHuSRAwljkdMMQ2lZp2mejfbTBv7wf0xe/ON7lf4cFBbL3AjNO8NnFRo+c6LKf9NC8=
From: Luca Fancellu <Luca.Fancellu@arm.com>
To: Milan Djokic <milan_djokic@epam.com>
CC: "xen-devel@lists.xenproject.org" <xen-devel@lists.xenproject.org>, 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>
Subject: Re: [PATCH v3 17/23] xen/arm: vsmmuv3: Alloc virq for virtual SMMUv3
Thread-Topic: [PATCH v3 17/23] xen/arm: vsmmuv3: Alloc virq for virtual SMMUv3
Thread-Index: AQHcy08JvVB1cGPAx0GVSpi1e5g4zw==
Date: Mon, 13 Apr 2026 14:08:43 +0000
Message-ID: <6045AD03-C831-4A3C-82DC-34A38A1EF716@arm.com>
References: <cover.1774918270.git.milan_djokic@epam.com>
 <f06cb7dce5ae69de77164cef365ba659a077348f.1774918270.git.milan_djokic@epam.com>
In-Reply-To:
 <f06cb7dce5ae69de77164cef365ba659a077348f.1774918270.git.milan_djokic@epam.com>
Accept-Language: en-GB, en-US
Content-Language: en-US
X-MS-Has-Attach:
X-MS-TNEF-Correlator:
x-mailer: Apple Mail (2.3826.700.81.1.6)
Authentication-Results-Original: dkim=none (message not signed)
 header.d=none;dmarc=none action=none header.from=arm.com;
x-ms-traffictypediagnostic:
	DU2PR08MB7272:EE_|VI1PR08MB10273:EE_|AMS1EPF00000090:EE_|VE1PR08MB5728:EE_
X-MS-Office365-Filtering-Correlation-Id: 61bcdad2-a594-4989-1398-08de99665352
x-checkrecipientrouted: true
nodisclaimer: true
X-MS-Exchange-SenderADCheck: 1
X-MS-Exchange-AntiSpam-Relay: 0
X-Microsoft-Antispam-Untrusted:
 BCL:0;ARA:13230040|1800799024|366016|376014|22082099003|18002099003|56012099003|38070700021;
X-Microsoft-Antispam-Message-Info-Original:
 gxi+4gCn99gpb1JtHNvBowPzo9UNFWg/DRChRGow6Fhpnx9pU3vha7yisT+yrBATq7ZdjN5/CVuPj1+BK3+j8JIe+wj2F1sW3X0HF7r0ET9PVvk8OH82A5LtWvj4q0jNWXtYgKZ2qWiuJVVXCDu12+f7FZtiU50Any54JBuJh+fOaynU4UUXfAszLOqwZbU6Z3OvrYOztaPQlMuHe2ygoealQ973WkVgvrcv4J18Tei2y1B5UT/AykaSjlLk+IziBLEfvHbRJ1NGETYshNLK6QedIGmeFf/XgfxEsui1DyCrE6CMjtiNvFtGEp/gI63qBOiMtubuMUsk5ipMCXqXHADJi1aa3S41EadalTj/CCsicZpm3vObPzBX5r20tQTQiRF0kv8eihRrxx/buFX4T0moIsfVg+vH2uXBvRvZnW7UHt5bMhmPugbTaHH4s00fYYlO3HCnp6DloazNhHH1+xs6qtdgPhoYF1H+TcsGBDaE9D2r60snK6cax/SnG5ccGN5V5WnwWuBh4NzYmuRnez7CVsPpKpGMIg9rA+oTJPM0QHbHLDEkZk1zGyoWgtCjIhT7IG4ZsA6eTWFtO1A6pNymX0K/ffDRQ4JmZcnf3tc7xc/Kvg0vQvnfrjcLTJPlHPjAqWu9Ji5oEV2vj+RUmG+zixpoy1IZ0NVK9IwPwsDK+wbtaBHk3/CmLfep7cXrU18Lk819KlUAe1cyRKX6fRWAbjU3mSM1y9FNXrnDpQ+8peD+dgOxm6KdWnUovf6L
X-Forefront-Antispam-Report-Untrusted:
 CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:DU2PR08MB7272.eurprd08.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(1800799024)(366016)(376014)(22082099003)(18002099003)(56012099003)(38070700021);DIR:OUT;SFP:1101;
Content-Type: text/plain; charset="utf-8"
Content-ID: <A326CE1761DC70428E35E68B56B60530@eurprd08.prod.outlook.com>
Content-Transfer-Encoding: base64
MIME-Version: 1.0
X-Exchange-RoutingPolicyChecked:
 nO4La22IxBUmt5WSCBU9P3J8mmTgVlW8YQWpap65khegB3M1OIiPJg/Idv1bUSh+4VCRCYS2hy/ZVOBsKWcgPK+fUtUYAU7+Tt/0oedzPELZI/YwXuJhT2zJsplYW/9Ahuhz/DRAGLSZY5eYb6U0XvJdMkHAIlJQDSfq86LyjUjNAg2c2inCPvGx52tD0BX2bGPNVvy550voGniyVexiNt1EF2cUfYLg8JX3i6fMg2kO/N5aWu6QPTzptQzYh7HjG1zY+1s8tdB2V9ZD0bbJGb5mLGtPjATH874vyHnTnZXNI7ahJG255m3h05reqpoVwbdo2ywB1A0VOpS2wDysxA==
X-MS-Exchange-Transport-CrossTenantHeadersStamped: VI1PR08MB10273
X-EOPAttributedMessage: 0
X-MS-Exchange-Transport-CrossTenantHeadersStripped:
 AMS1EPF00000090.eurprd05.prod.outlook.com
X-MS-PublicTrafficType: Email
X-MS-Office365-Filtering-Correlation-Id-Prvs:
	dc5391b7-9940-4c52-be16-08de99662bf1
X-Microsoft-Antispam:
	BCL:0;ARA:13230040|14060799003|1800799024|376014|36860700016|82310400026|35042699022|22082099003|18002099003|56012099003;
X-Microsoft-Antispam-Message-Info:
	2+NoXp5KhI1MCwL1o+EnP+uJ5Sw59czjTTBzK3pD6hw2cFja2sXW3ybyoI3s3DHbIcrI6nvUeKqoSoKMONquay85Ns7L/CaR3jwj/EHAjP+V7TLxySx+ofbtMGiAuDLF6GYPcMuhRmg2Isjhz7QPzvXOpXrcAn3yR6rwry7xab7WTvUxyQlaeDVL3gdsEfo5MKtNkTNta/7u44M3BVmktQ3ouUC2nEqdedCH+FQXzbVZIalVrV0UnZQSXxxeh1bUxq8WHLpaj+xaCpYaA0AMph/VzXWUVVpn3CpsImcUPb6x6njBFr5XiHwBh4WFNe41XugqICpHrYjAwwPQrqUMW4SF12BL0nt6FxOZz/M++gvLd0q8tlJxbtMVcr4JKFVZRt1RLwrphKB9Sh9wKejRIguSDF4deq5ix+ebOXX4WMcCOxVOiRXX/1/KffK70Si34KD9XOjtvCOcnNMBMq658zO7yDrFBVYKbQEnuOo4lmkumVIIMlPv3+Tq6X27lG6eHZuhT2NshlMBzRzrHrFXkXCpd6oUv04v17jzgJbF08W3OGNK798ySW45rKJ9Hhqkjgk/oZjs75hebOZBkAmB8hA1t/DiXtzFJsrvZEK8Yph/1d+A/eSWnIP2J/Q7Xaa2yhBZ1U2Hjne2lJxaNDIZF+oSZfxPDbVfGczbW8iqTDPiAEORO6qcJei4AeURegtCzE+wBvDZL2YiAeYJcFoTl0L4C6zj2ngazqJfN2A5cr4=
X-Forefront-Antispam-Report:
	CIP:4.158.2.129;CTRY:GB;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:outbound-uk1.az.dlp.m.darktrace.com;PTR:InfoDomainNonexistent;CAT:NONE;SFS:(13230040)(14060799003)(1800799024)(376014)(36860700016)(82310400026)(35042699022)(22082099003)(18002099003)(56012099003);DIR:OUT;SFP:1101;
X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1
X-MS-Exchange-AntiSpam-MessageData-0:
	tN3mk1X+o4Vy/ToXsAseqjUMHsvu1H85OYVOmlM6KTMaszytSu80SqGeFxSYQgNfuGAZMLOm9xyijkrUajPRPGjjE2D450LJjBjyBjHLKSMA3X+OoW45Qb2yM5Y6CEbO6wXkZS5TA3Sk+vJam7XyQBtL+FytP4fYm6OuYXTKK4lRhYp9gPd4yczonk+fenhEmRmVwQ1lfNByrQJtZnFBeilnFih9cx5ydO+Oqyza4DaY9wGejLk3h/TiB9YMgCelh+bAgmtBZ8HLAgJmhrMpl4e5Jyq+2mEEAehwn71x5QhKWqbNZ6jSBxJjWVlx0GPZX6fCc2TF9CrOwBvzNDDSF59h8RMbwBNqPu1iggQEJ/wZObG/+qFrvQuPht9CM6oZff3qQFaO7QOCKCMOKxEnFWkJe4OQb5ahULE3Mzgj4AoJBwyehg+MW2RlWm4DE0dR
X-OriginatorOrg: arm.com
X-MS-Exchange-CrossTenant-OriginalArrivalTime: 13 Apr 2026 14:09:49.5760
 (UTC)
X-MS-Exchange-CrossTenant-Network-Message-Id: 61bcdad2-a594-4989-1398-08de99665352
X-MS-Exchange-CrossTenant-Id: f34e5979-57d9-4aaa-ad4d-b122a662184d
X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=f34e5979-57d9-4aaa-ad4d-b122a662184d;Ip=[4.158.2.129];Helo=[outbound-uk1.az.dlp.m.darktrace.com]
X-MS-Exchange-CrossTenant-AuthSource:
	AMS1EPF00000090.eurprd05.prod.outlook.com
X-MS-Exchange-CrossTenant-AuthAs: Anonymous
X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem
X-MS-Exchange-Transport-CrossTenantHeadersStamped: VE1PR08MB5728
X-purgate-ID: tlsNG-33051d/1776089397-41B15C9A-9447CEF1/0/0
X-purgate-type: clean
X-purgate-size: 9296

SGkgTWlsYW4sDQoNCj4gT24gMzEgTWFyIDIwMjYsIGF0IDAyOjUyLCBNaWxhbiBEam9raWMgPG1p
bGFuX2Rqb2tpY0BlcGFtLmNvbT4gd3JvdGU6DQo+IA0KPiBGcm9tOiBSYWh1bCBTaW5naCA8cmFo
dWwuc2luZ2hAYXJtLmNvbT4NCj4gDQo+IEFsbG9jIGFuZCByZXNlcnZlIHZpcnEgZm9yIGV2ZW50
IHF1ZXVlIGFuZCBnbG9iYWwgZXJyb3IgdG8gc2VuZCBldmVudCB0bw0KPiBndWVzdHMuIEFsc28g
TW9kaWZ5IHRoZSBsaWJ4bCB0byBhY2NvbWFkYXRlIHRoZSBuZXcgZGVmaW5lIHZpcnEuDQo+IA0K
PiBTaWduZWQtb2ZmLWJ5OiBSYWh1bCBTaW5naCA8cmFodWwuc2luZ2hAYXJtLmNvbT4NCj4gU2ln
bmVkLW9mZi1ieTogTWlsYW4gRGpva2ljIDxtaWxhbl9kam9raWNAZXBhbS5jb20+DQo+IC0tLQ0K
PiB0b29scy9saWJzL2xpZ2h0L2xpYnhsX2FybS5jICAgICAgICAgICB8IDI4ICsrKysrKysrKysr
KysrKysrKysrKysrKy0tDQo+IHhlbi9hcmNoL2FybS9kb20wbGVzcy1idWlsZC5jICAgICAgICAg
IHwgMTcgKysrKysrKysrKysrKysrKw0KPiB4ZW4vZHJpdmVycy9wYXNzdGhyb3VnaC9hcm0vdnNt
bXUtdjMuYyB8IDEzICsrKysrKysrKysrKw0KPiAzIGZpbGVzIGNoYW5nZWQsIDU2IGluc2VydGlv
bnMoKyksIDIgZGVsZXRpb25zKC0pDQo+IA0KPiBkaWZmIC0tZ2l0IGEvdG9vbHMvbGlicy9saWdo
dC9saWJ4bF9hcm0uYyBiL3Rvb2xzL2xpYnMvbGlnaHQvbGlieGxfYXJtLmMNCj4gaW5kZXggZWI4
Nzk0NzNmNS4uODAzYzNiMzliNyAxMDA2NDQNCj4gLS0tIGEvdG9vbHMvbGlicy9saWdodC9saWJ4
bF9hcm0uYw0KPiArKysgYi90b29scy9saWJzL2xpZ2h0L2xpYnhsX2FybS5jDQo+IEBAIC04Niw4
ICs4Niw4IEBAIGludCBsaWJ4bF9fYXJjaF9kb21haW5fcHJlcGFyZV9jb25maWcobGlieGxfX2dj
ICpnYywNCj4gew0KPiAgICAgdWludDMyX3QgbnJfc3BpcyA9IDAsIGNmZ19ucl9zcGlzID0gZF9j
b25maWctPmJfaW5mby5hcmNoX2FybS5ucl9zcGlzOw0KPiAgICAgdW5zaWduZWQgaW50IGk7DQo+
IC0gICAgdWludDMyX3QgdnVhcnRfaXJxLCB2aXJ0aW9faXJxID0gMDsNCj4gLSAgICBib29sIHZ1
YXJ0X2VuYWJsZWQgPSBmYWxzZSwgdmlydGlvX2VuYWJsZWQgPSBmYWxzZTsNCj4gKyAgICB1aW50
MzJfdCB2dWFydF9pcnEsIHZpcnRpb19pcnEgPSAwLCB2c21tdV9pcnEgPSAwOw0KPiArICAgIGJv
b2wgdnVhcnRfZW5hYmxlZCA9IGZhbHNlLCB2aXJ0aW9fZW5hYmxlZCA9IGZhbHNlLCB2c21tdV9l
bmFibGVkID0gZmFsc2U7DQo+ICAgICB1aW50NjRfdCB2aXJ0aW9fbW1pb19iYXNlID0gR1VFU1Rf
VklSVElPX01NSU9fQkFTRTsNCj4gICAgIHVpbnQzMl90IHZpcnRpb19tbWlvX2lycSA9IEdVRVNU
X1ZJUlRJT19NTUlPX1NQSV9GSVJTVDsNCj4gICAgIGludCByYzsNCj4gQEAgLTEwMiw2ICsxMDIs
MTYgQEAgaW50IGxpYnhsX19hcmNoX2RvbWFpbl9wcmVwYXJlX2NvbmZpZyhsaWJ4bF9fZ2MgKmdj
LA0KPiAgICAgICAgIHZ1YXJ0X2VuYWJsZWQgPSB0cnVlOw0KPiAgICAgfQ0KPiANCj4gKyAgICAv
Kg0KPiArICAgICAqIElmIHNtbXV2MyB2aW9tbXUgaXMgZW5hYmxlZCB0aGVuIGluY3JlbWVudCB0
aGUgbnJfc3BpcyB0byBhbGxvdyBhbGxvY2F0aW9uDQo+ICsgICAgICogb2YgU1BJIFZJUlEgZm9y
IFZTTU1VLg0KPiArICAgICAqLw0KPiArICAgIGlmIChkX2NvbmZpZy0+Yl9pbmZvLmFyY2hfYXJt
LnZpb21tdV90eXBlID09IExJQlhMX1ZJT01NVV9UWVBFX1NNTVVWMykgew0KPiArICAgICAgICBu
cl9zcGlzICs9IChHVUVTVF9WU01NVV9TUEkgLSAzMikgKyAxOw0KPiArICAgICAgICB2c21tdV9p
cnEgPSBHVUVTVF9WU01NVV9TUEk7DQo+ICsgICAgICAgIHZzbW11X2VuYWJsZWQgPSB0cnVlOw0K
PiArICAgIH0NCg0KTm93IHdlIHdvdWxkIGluZmxhdGUgdG9vIG11Y2ggbnJfc3BpcyBpZiBhbHNv
IHZQTDAxMSBpcyBwcmVzZW50LCBJIHRoaW5rIHRoaXMgY29tbWl0IHNob3VsZA0KbW9kaWZ5IHRo
YXQgcGFydCBhbmQgdGhpcyBwYXJ0IGluIHRoaXMgd2F5Og0KDQppZiAoZF9jb25maWctPmJfaW5m
by5hcmNoX2FybS52dWFydCA9PSBMSUJYTF9WVUFSVF9UWVBFX1NCU0FfVUFSVCkgew0KICAgIG5y
X3NwaXMgPSBtYXgobnJfc3BpcywgR1VFU1RfVlBMMDExX1NQSSAtIDMyICsgMSk7DQogICAgdnVh
cnRfaXJxID0gR1VFU1RfVlBMMDExX1NQSTsNCiAgICB2dWFydF9lbmFibGVkID0gdHJ1ZTsNCn0N
Cg0KaWYgKGRfY29uZmlnLT5iX2luZm8uYXJjaF9hcm0udmlvbW11X3R5cGUgPT0gTElCWExfVklP
TU1VX1RZUEVfU01NVVYzKSB7DQogICAgbnJfc3BpcyA9IG1heChucl9zcGlzLCBHVUVTVF9WU01N
VV9TUEkgLSAzMiArIDEpOw0KICAgIHZzbW11X2lycSA9IEdVRVNUX1ZTTU1VX1NQSTsNCiAgICB2
c21tdV9lbmFibGVkID0gdHJ1ZTsNCn0NCg0KYXMgZG9uZSBoZXJlIGh0dHBzOi8veGVuYml0cy54
ZW4ub3JnL2dpdHdlYi8/cD14ZW4uZ2l0O2E9YmxvYjtmPXRvb2xzL2xpYnMvbGlnaHQvbGlieGxf
YXJtLmM7aD03ZTlmOGExYmMzNjY2YWM5YTNmOGFhNDg3MzY2Mzk5ZGMyNTViMTQ5O2hiPXJlZnMv
aGVhZHMvc3RhZ2luZyNsMTQ0DQoNCg0KPiArDQo+ICAgICBmb3IgKGkgPSAwOyBpIDwgZF9jb25m
aWctPm51bV9kaXNrczsgaSsrKSB7DQo+ICAgICAgICAgbGlieGxfZGV2aWNlX2Rpc2sgKmRpc2sg
PSAmZF9jb25maWctPmRpc2tzW2ldOw0KPiANCj4gQEAgLTE3MCw2ICsxODAsMTEgQEAgaW50IGxp
YnhsX19hcmNoX2RvbWFpbl9wcmVwYXJlX2NvbmZpZyhsaWJ4bF9fZ2MgKmdjLA0KPiAgICAgICAg
ICAgICByZXR1cm4gRVJST1JfRkFJTDsNCj4gICAgICAgICB9DQo+IA0KPiArICAgICAgICBpZiAo
dnNtbXVfZW5hYmxlZCAmJiBpcnEgPT0gdnNtbXVfaXJxKSB7DQo+ICsgICAgICAgICAgICBMT0co
RVJST1IsICJQaHlzaWNhbCBJUlEgJXUgY29uZmxpY3Rpbmcgd2l0aCB2U01NVXYzIFNQSVxuIiwg
aXJxKTsNCj4gKyAgICAgICAgICAgIHJldHVybiBFUlJPUl9GQUlMOw0KPiArICAgICAgICB9DQo+
ICsNCj4gICAgICAgICBpZiAoaXJxIDwgMzIpDQo+ICAgICAgICAgICAgIGNvbnRpbnVlOw0KPiAN
Cj4gQEAgLTkwNyw2ICs5MjIsNyBAQCBzdGF0aWMgaW50IG1ha2VfdnNtbXV2M19ub2RlKGxpYnhs
X19nYyAqZ2MsIHZvaWQgKmZkdCwNCj4gew0KPiAgICAgaW50IHJlczsNCj4gICAgIGNvbnN0IGNo
YXIgKm5hbWUgPSBHQ1NQUklOVEYoImlvbW11QCVsbHgiLCBHVUVTVF9WU01NVVYzX0JBU0UpOw0K
PiArICAgIGdpY19pbnRlcnJ1cHQgaW50cjsNCj4gDQo+ICAgICByZXMgPSBmZHRfYmVnaW5fbm9k
ZShmZHQsIG5hbWUpOw0KPiAgICAgaWYgKHJlcykgcmV0dXJuIHJlczsNCj4gQEAgLTkyNSw2ICs5
NDEsMTQgQEAgc3RhdGljIGludCBtYWtlX3ZzbW11djNfbm9kZShsaWJ4bF9fZ2MgKmdjLCB2b2lk
ICpmZHQsDQo+ICAgICByZXMgPSBmZHRfcHJvcGVydHlfY2VsbChmZHQsICIjaW9tbXUtY2VsbHMi
LCAxKTsNCj4gICAgIGlmIChyZXMpIHJldHVybiByZXM7DQo+IA0KPiArICAgIHJlcyA9IGZkdF9w
cm9wZXJ0eV9zdHJpbmcoZmR0LCAiaW50ZXJydXB0LW5hbWVzIiwgImNvbWJpbmVkIik7DQo+ICsg
ICAgaWYgKHJlcykgcmV0dXJuIHJlczsNCj4gKw0KPiArICAgIHNldF9pbnRlcnJ1cHQoaW50ciwg
R1VFU1RfVlNNTVVfU1BJLCAweGYsIERUX0lSUV9UWVBFX0xFVkVMX0hJR0gpOw0KPiArDQo+ICsg
ICAgcmVzID0gZmR0X3Byb3BlcnR5X2ludGVycnVwdHMoZ2MsIGZkdCwgJmludHIsIDEpOw0KPiAr
ICAgIGlmIChyZXMpIHJldHVybiByZXM7DQo+ICsNCj4gICAgIHJlcyA9IGZkdF9lbmRfbm9kZShm
ZHQpOw0KPiAgICAgaWYgKHJlcykgcmV0dXJuIHJlczsNCj4gDQo+IGRpZmYgLS1naXQgYS94ZW4v
YXJjaC9hcm0vZG9tMGxlc3MtYnVpbGQuYyBiL3hlbi9hcmNoL2FybS9kb20wbGVzcy1idWlsZC5j
DQo+IGluZGV4IGE0OGVkYjk1NjguLjczODA3NTNmYTIgMTAwNjQ0DQo+IC0tLSBhL3hlbi9hcmNo
L2FybS9kb20wbGVzcy1idWlsZC5jDQo+ICsrKyBiL3hlbi9hcmNoL2FybS9kb20wbGVzcy1idWls
ZC5jDQo+IEBAIC0yMjUsNiArMjI1LDcgQEAgc3RhdGljIGludCBfX2luaXQgbWFrZV92c21tdXYz
X25vZGUoY29uc3Qgc3RydWN0IGtlcm5lbF9pbmZvICpraW5mbykNCj4gICAgIGNoYXIgYnVmWzI0
XTsNCj4gICAgIF9fYmUzMiByZWdbR1VFU1RfUk9PVF9BRERSRVNTX0NFTExTICsgR1VFU1RfUk9P
VF9TSVpFX0NFTExTXTsNCj4gICAgIF9fYmUzMiAqY2VsbHM7DQo+ICsgICAgZ2ljX2ludGVycnVw
dF90IGludHI7DQo+ICAgICB2b2lkICpmZHQgPSBraW5mby0+ZmR0Ow0KPiANCj4gICAgIHNucHJp
bnRmKGJ1Ziwgc2l6ZW9mKGJ1ZiksICJpb21tdUAlbGx4IiwgR1VFU1RfVlNNTVVWM19CQVNFKTsN
Cj4gQEAgLTI1NSw2ICsyNTYsMjIgQEAgc3RhdGljIGludCBfX2luaXQgbWFrZV92c21tdXYzX25v
ZGUoY29uc3Qgc3RydWN0IGtlcm5lbF9pbmZvICpraW5mbykNCj4gICAgIGlmICggcmVzICkNCj4g
ICAgICAgICByZXR1cm4gcmVzOw0KPiANCj4gKyAgICByZXMgPSBmZHRfcHJvcGVydHlfc3RyaW5n
KGZkdCwgImludGVycnVwdC1uYW1lcyIsICJjb21iaW5lZCIpOw0KPiArICAgIGlmICggcmVzICkN
Cj4gKyAgICAgICAgcmV0dXJuIHJlczsNCj4gKw0KPiArICAgIHNldF9pbnRlcnJ1cHQoaW50ciwg
R1VFU1RfVlNNTVVfU1BJLCAweGYsIERUX0lSUV9UWVBFX0xFVkVMX0hJR0gpOw0KPiArDQo+ICsg
ICAgcmVzID0gZmR0X3Byb3BlcnR5KGtpbmZvLT5mZHQsICJpbnRlcnJ1cHRzIiwNCj4gKyAgICAg
ICAgICAgICAgICAgICAgICAgaW50ciwgc2l6ZW9mKGludHIpKTsNCj4gKyAgICBpZiAoIHJlcyAp
DQo+ICsgICAgICAgIHJldHVybiByZXM7DQo+ICsNCj4gKyAgICByZXMgPSBmZHRfcHJvcGVydHlf
Y2VsbChraW5mby0+ZmR0LCAiaW50ZXJydXB0LXBhcmVudCIsDQo+ICsgICAgICAgICAgICAgICAg
ICAgICAgICAgICAga2luZm8tPnBoYW5kbGVfaW50Yyk7DQo+ICsgICAgaWYgKCByZXMgKQ0KPiAr
ICAgICAgICByZXR1cm4gcmVzOw0KPiArDQo+ICAgICByZXMgPSBmZHRfZW5kX25vZGUoZmR0KTsN
Cj4gDQo+ICAgICByZXR1cm4gcmVzOw0KPiBkaWZmIC0tZ2l0IGEveGVuL2RyaXZlcnMvcGFzc3Ro
cm91Z2gvYXJtL3ZzbW11LXYzLmMgYi94ZW4vZHJpdmVycy9wYXNzdGhyb3VnaC9hcm0vdnNtbXUt
djMuYw0KPiBpbmRleCA3YTZjMThkZjUzLi5hNWI5NzAwMzY5IDEwMDY0NA0KPiAtLS0gYS94ZW4v
ZHJpdmVycy9wYXNzdGhyb3VnaC9hcm0vdnNtbXUtdjMuYw0KPiArKysgYi94ZW4vZHJpdmVycy9w
YXNzdGhyb3VnaC9hcm0vdnNtbXUtdjMuYw0KPiBAQCAtNzMzLDYgKzczMyw3IEBAIHN0YXRpYyBj
b25zdCBzdHJ1Y3QgbW1pb19oYW5kbGVyX29wcyB2c21tdXYzX21taW9faGFuZGxlciA9IHsNCj4g
c3RhdGljIGludCB2c21tdXYzX2luaXRfc2luZ2xlKHN0cnVjdCBkb21haW4gKmQsIHBhZGRyX3Qg
YWRkciwNCj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhZGRyX3Qgc2l6ZSwgdWlu
dDMyX3QgdmlycSkNCj4gew0KPiArICAgIGludCByZXQ7DQo+ICAgICBzdHJ1Y3QgdmlydF9zbW11
ICpzbW11Ow0KPiANCj4gICAgIHNtbXUgPSB4emFsbG9jKHN0cnVjdCB2aXJ0X3NtbXUpOw0KPiBA
QCAtNzQ4LDEyICs3NDksMjQgQEAgc3RhdGljIGludCB2c21tdXYzX2luaXRfc2luZ2xlKHN0cnVj
dCBkb21haW4gKmQsIHBhZGRyX3QgYWRkciwNCj4gDQo+ICAgICBzcGluX2xvY2tfaW5pdCgmc21t
dS0+Y21kX3F1ZXVlX2xvY2spOw0KPiANCj4gKyAgICByZXQgPSB2Z2ljX3Jlc2VydmVfdmlycShk
LCB2aXJxKTsNCj4gKyAgICBpZiAoICFyZXQgKQ0KPiArICAgIHsNCj4gKyAgICAgICAgcmV0ID0g
LUVJTlZBTDsNCj4gKyAgICAgICAgZ290byBvdXQ7DQo+ICsgICAgfQ0KPiArDQo+ICAgICByZWdp
c3Rlcl9tbWlvX2hhbmRsZXIoZCwgJnZzbW11djNfbW1pb19oYW5kbGVyLCBhZGRyLCBzaXplLCBz
bW11KTsNCj4gDQo+ICAgICAvKiBSZWdpc3RlciB0aGUgdklPTU1VIHRvIGJlIGFibGUgdG8gY2xl
YW4gaXQgdXAgbGF0ZXIuICovDQo+ICAgICBsaXN0X2FkZF90YWlsKCZzbW11LT52aW9tbXVfbGlz
dCwgJmQtPmFyY2gudmlvbW11X2xpc3QpOw0KPiANCj4gICAgIHJldHVybiAwOw0KPiArDQo+ICtv
dXQ6DQo+ICsgICAgeGZyZWUoc21tdSk7DQo+ICsgICAgdmdpY19mcmVlX3ZpcnEoZCwgdmlycSk7
DQoNCkkgZG9u4oCZdCB0aGluayB3ZSBzaG91bGQgdXNlIHZnaWNfZnJlZV92aXJxIGhlcmUsIGlm
IGl0IHdhcyByZXNlcnZlZCBhbHJlYWR5IHRoZXJlIGlzIHNvbWUNCmJ1ZywgdGhlIHZpcnEgY2Fu
IGJlIEdVRVNUX1ZTTU1VX1NQSSBmb3IgZ3Vlc3RzIGFuZCBod19pb21tdS0+aXJxIGZvciBIVyBk
b21haW4sDQpzbyBpZiBpdOKAmXMgcmVzZXJ2ZWQgaXQgc2hvdWxkIGJlIGEgY29uZmlndXJhdGlv
biBpc3N1ZSBhbmQgZnJlZWluZyBpdCB3b3VsZCByZW1vdmUg4oCcc29tZW9uZSBlbHNl4oCdDQpy
ZXNlcnZlZCBpcnEuDQpQcm9iYWJseSBJIHdvdWxkIHByaW50IHNvbWV0aGluZyBpbiB0aGUgaWYg
YWJvdmUgYW5kIGFsc28gSSB3b3VsZCBqdXN0IGhhdmUgdGhlIGNvbnRlbnQgb2YgdGhpcw0KTGFi
ZWwtcGF0aCBpbnNpZGUgdGhlIGlmIGJyYW5jaCwgc2luY2UgaXQgaXMgdGhlIG9ubHkgY29uc3Vt
ZXIgb2YgdGhpcyBsYWJlbC4NCg0KPiArICAgIHJldHVybiByZXQ7DQo+IH0NCj4gDQo+IGludCBk
b21haW5fdnNtbXV2M19pbml0KHN0cnVjdCBkb21haW4gKmQpDQo+IA0KDQpDaGVlcnMsDQpMdWNh
DQoNCg0KDQo=


From xen-devel-bounces@lists.xenproject.org Mon Apr 13 14:16:24 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 13 Apr 2026 14:16:24 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1281180.1564204 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wCI5L-0003v0-Jx; Mon, 13 Apr 2026 14:16:19 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1281180.1564204; Mon, 13 Apr 2026 14:16: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 1wCI5L-0003ut-Ga; Mon, 13 Apr 2026 14:16:19 +0000
Received: by outflank-mailman (input) for mailman id 1281180;
 Mon, 13 Apr 2026 14:16:18 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <Luca.Fancellu@arm.com>) id 1wCI5J-0003uU-PK
 for xen-devel@lists.xenproject.org; Mon, 13 Apr 2026 14:16:18 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wCI5J-003Um2-1o
 for xen-devel@lists.xenproject.org; Mon, 13 Apr 2026 16:16:17 +0200
Received: from [10.42.69.2] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <Luca.Fancellu@arm.com>)
 id 69dcfaa7-2eae-0a2a0a5409dd-0a2a4502a5d6-22
 for <xen-devel@lists.xenproject.org>; Mon, 13 Apr 2026 16:16:16 +0200
Received: from [52.101.83.49]
 (helo=GVXPR05CU001.outbound.protection.outlook.com)
 by tlsNG-720697.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.0)
 (envelope-from <Luca.Fancellu@arm.com>)
 id 69dcfab0-42fa-0a2a45020019-3465533124ca-3
 for <xen-devel@lists.xenproject.org>; Mon, 13 Apr 2026 16:16:16 +0200
Received: from AM9P250CA0001.EURP250.PROD.OUTLOOK.COM (2603:10a6:20b:21c::6)
 by AS8PR08MB6101.eurprd08.prod.outlook.com (2603:10a6:20b:29a::7) with
 Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9769.48; Mon, 13 Apr
 2026 14:16:13 +0000
Received: from AM3PEPF00009BA2.eurprd04.prod.outlook.com
 (2603:10a6:20b:21c:cafe::70) by AM9P250CA0001.outlook.office365.com
 (2603:10a6:20b:21c::6) with Microsoft SMTP Server (version=TLS1_3,
 cipher=TLS_AES_256_GCM_SHA384) id 15.20.9769.48 via Frontend Transport; Mon,
 13 Apr 2026 14:16:13 +0000
Received: from outbound-uk1.az.dlp.m.darktrace.com (4.158.2.129) by
 AM3PEPF00009BA2.mail.protection.outlook.com (10.167.16.27) with Microsoft
 SMTP Server (version=TLS1_3, cipher=TLS_AES_256_GCM_SHA384) id 15.20.9769.17
 via Frontend Transport; Mon, 13 Apr 2026 14:16:12 +0000
Received: from DU2PR08MB7272.eurprd08.prod.outlook.com (2603:10a6:10:2d7::16)
 by PA6PR08MB10417.eurprd08.prod.outlook.com (2603:10a6:102:3cd::16)
 with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9769.48; Mon, 13 Apr
 2026 14:15:08 +0000
Received: from DU2PR08MB7272.eurprd08.prod.outlook.com
 ([fe80::5d34:206f:373:a323]) by DU2PR08MB7272.eurprd08.prod.outlook.com
 ([fe80::5d34:206f:373:a323%6]) with mapi id 15.20.9769.046; Mon, 13 Apr 2026
 14:15: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=arm.com header.i="@arm.com" header.h="From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck"; dkim=pass header.s=selector1 header.d=arm.com header.i="@arm.com" header.h="From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck"
ARC-Seal: i=2; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=pass;
 b=VeggpSkADjoJX9UgixV1BSOLxoVxpB7xcR6tKCfTvWqt6QqJiomxBz90XTk/7Soa0LA+J3vp0DnwQBuXVD5aJE8V05rJsnjt+WTcBnWyTBuZQHSeuTRxUt/Jt67mg40stdOcr/gZAGWwDlfm+k1N0/wasR0QmIJ/m67Q9b4/PmOFUGwBl/ep8IPg+0zEj13zqA516sDmgGQWxMp1NWXeXKr1lp9SD0ME9ImSz4PSnIWo6FcPQQ0e+wQhGc2RJJZVInd5QDGI0uFFehVsqhgd7CLwJmmf0PIrdO0Ro7yNVlawoBj7fkY2dfHIqur4eQwcG9mXEMJaKI1CC31LNH4AAA==
ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com;
 s=arcselector10001;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1;
 bh=QZLZQdTkKwWkK4TbcgQ8zuEaVJVDCFbrEW8fwYaWNY0=;
 b=lCK0PdwyJQq9rYnw6T907Tg7/t/grsP2/tRyCPJScwCr36n/brzB2zlx4djb4vzEbLz6cbJqWyAsvFzhT7NyUaRlzeATGQ0bu59wxibaA41mNcLH9MqdGGaMkkCDciHQ3FWnLpyCSOf+6seAnh3ClmP5AibJVf5v+7V3lQk2pXw034nOy2WXBTKUO32r1VQANhw+DrZ5ueH/PvpwexBXjw9MYbW96sIXJ3DClI3ecMPuj+DDMKDFUNwnL08PTuw2nKaHNqXWfmwXFQRjunCBPGQBvg0Z/qn+I6P+8wYFoOuON6F2QpUr8Hdu1PZ1gm3wlyf3DjXM4lDdkETHjtBemg==
ARC-Authentication-Results: i=2; mx.microsoft.com 1; spf=pass (sender ip is
 4.158.2.129) smtp.rcpttodomain=epam.com smtp.mailfrom=arm.com; dmarc=pass
 (p=none sp=none pct=100) action=none header.from=arm.com; dkim=pass
 (signature was verified) header.d=arm.com; arc=pass (0 oda=1 ltdi=1
 spf=[1,1,smtp.mailfrom=arm.com] dkim=[1,1,header.d=arm.com]
 dmarc=[1,1,header.from=arm.com])
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=arm.com; s=selector1;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck;
 bh=QZLZQdTkKwWkK4TbcgQ8zuEaVJVDCFbrEW8fwYaWNY0=;
 b=nk7jkR2R6zKBA2sBlm3vXEA2tcMCZN+P/3JtgF0YL8VGu+OSqGOgdmKvSMVcBaPwYIpjnyzHjxEiv/bXnp4cla1c9CkWj0iz5D5p9c69CFH/yOU1cLb5bCaMp4OzrZh5I8VoXW2aRY6qvmUnUa5/CLIjoqIsB0KYhZkq5nnXqlY=
X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 4.158.2.129)
 smtp.mailfrom=arm.com; dkim=pass (signature was verified)
 header.d=arm.com;dmarc=pass action=none header.from=arm.com;
Received-SPF: Pass (protection.outlook.com: domain of arm.com designates
 4.158.2.129 as permitted sender) receiver=protection.outlook.com;
 client-ip=4.158.2.129; helo=outbound-uk1.az.dlp.m.darktrace.com; pr=C
ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none;
 b=WrNcMBrxCTjIHd+u+51j78ue4sI9+RIU4k53WwB69ektqSJdaHZAk9Nq2nSZTlNQ+glG/iGGS6Uv5NYZ98ADdRo+Op2D3X0AE6vTKrNGMosfq4R+iPkhpfddN5aWwZ/yruyYoirgCCqgBtCiiBJ+rioN9gqRXz6G/j6OjQyXASCZkj6bT+WV5lnzMj7EZT5j/SqrE8E0ZqLHagm/bydd1kQyGMnVyQftSXFXAzC5sfZZ57u30jZOeasieUBkxpk6lDUGP/jiqLofp8mvSBU8aI2NWA9Riw/h4l8AednsqRMTXRGg/HuDVZ4rOEkJW0+z/BVwts4nzx4bTIXIAY6B/w==
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com;
 s=arcselector10001;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1;
 bh=QZLZQdTkKwWkK4TbcgQ8zuEaVJVDCFbrEW8fwYaWNY0=;
 b=AWpZ2tpdUV/c73l4px/O/z+HINgC2VIBGz0HBSZ/SXaaq4/zzO5ZAnM6/Oa7v4g0V6ZI64N3x5FXte4VNgszsZd2Omqo1SN8In1V5HVsK/055yBTXJkf3AKYs54WXuFziWI68NYfASUc31p/THO9sQBkgtrYdzSz9iCRfggSMypQLe+jCxC+oZcys15/6jzkcHrQg/su3qWVon+ogSF2WZ1ERKusuc6ztzjrvTLhAk4zY3xH5E5FIu185TipTjHiVsUeCDNVAf/DprrBxmi47Wpc+FoRl2y2YFEZMOaaW5Ef1vRtsiY64nLGUmn7w9lFp9vOrsYe2zHpUrfk8wthdA==
ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass
 smtp.mailfrom=arm.com; dmarc=pass action=none header.from=arm.com; dkim=pass
 header.d=arm.com; arc=none
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=arm.com; s=selector1;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck;
 bh=QZLZQdTkKwWkK4TbcgQ8zuEaVJVDCFbrEW8fwYaWNY0=;
 b=nk7jkR2R6zKBA2sBlm3vXEA2tcMCZN+P/3JtgF0YL8VGu+OSqGOgdmKvSMVcBaPwYIpjnyzHjxEiv/bXnp4cla1c9CkWj0iz5D5p9c69CFH/yOU1cLb5bCaMp4OzrZh5I8VoXW2aRY6qvmUnUa5/CLIjoqIsB0KYhZkq5nnXqlY=
From: Luca Fancellu <Luca.Fancellu@arm.com>
To: Milan Djokic <milan_djokic@epam.com>
CC: "xen-devel@lists.xenproject.org" <xen-devel@lists.xenproject.org>, 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>
Subject: Re: [PATCH v3 18/23] xen/arm: vsmmuv3: Add support to send stage-1
 event to guest
Thread-Topic: [PATCH v3 18/23] xen/arm: vsmmuv3: Add support to send stage-1
 event to guest
Thread-Index: AQHcy0/uQpbP6nU2r020PGJaL0V6Mg==
Date: Mon, 13 Apr 2026 14:15:08 +0000
Message-ID: <DFFDC382-6762-482F-A620-0DE46295B027@arm.com>
References: <cover.1774918270.git.milan_djokic@epam.com>
 <51e727a521f25c3eb83b374529c8632fb8b2f314.1774918270.git.milan_djokic@epam.com>
In-Reply-To:
 <51e727a521f25c3eb83b374529c8632fb8b2f314.1774918270.git.milan_djokic@epam.com>
Accept-Language: en-GB, en-US
Content-Language: en-US
X-MS-Has-Attach:
X-MS-TNEF-Correlator:
x-mailer: Apple Mail (2.3826.700.81.1.6)
Authentication-Results-Original: dkim=none (message not signed)
 header.d=none;dmarc=none action=none header.from=arm.com;
x-ms-traffictypediagnostic:
	DU2PR08MB7272:EE_|PA6PR08MB10417:EE_|AM3PEPF00009BA2:EE_|AS8PR08MB6101:EE_
X-MS-Office365-Filtering-Correlation-Id: e296eb19-365c-4cb8-a047-08de996737b6
x-checkrecipientrouted: true
nodisclaimer: true
X-MS-Exchange-SenderADCheck: 1
X-MS-Exchange-AntiSpam-Relay: 0
X-Microsoft-Antispam-Untrusted:
 BCL:0;ARA:13230040|366016|376014|1800799024|38070700021|22082099003|56012099003|18002099003;
X-Microsoft-Antispam-Message-Info-Original:
 x7auLZvI2V9Reu4t6TGAlFQU3rBDNyogmjD9X71163jS7TNoFyJiNL+gmh4ctffYvg0Eo6glLzL5TllVBDcevh4pT2fzl/dCZQwRepH9dMVbAx8PjD+JK2l1UjFfKqbA3iVvUOV7qQSdct92XieLCt1f/tAbwGrx94qRlM2DrRJ7xE0hAer97aVJ7t7B4DXwX34i3NX7nzr50yPQzwYU+Yjp+rNLeHfkpblpLsaBvtTEsHJ/3A+gBBefyVCmBvireeuVG0DWmzKsAgHhhaEF3oHSdGXFsXqOrNT7Xia/8uCyhuLM8NE9aQlGnDZIYh29/cgK1CpTyQE03WBj9pnOTpT0HRvWgTKTnI7w9Opq+tiJdgakV2cxwsuRuLGj+nMxkQ1nas4+6s+tfuhx4p8YRKzJRGl+vfAVZaXN+Yve6NuSzkeBQGO8owB0SVSTHUKcr/WXs+pTyJnJq8691Q1CUoESVF51qHA/AkgARGVJ50noq5fGNJiAWF+ZoXzZaPjbySDVuiklJUb1JrDvyIFtJzwGvO1URhbyHiLJZK12NYC4XZMB3Yo6NsIyLarBo8roU+i8R46X2k5XXUM3UMkXHAbp9E+xJQiWvFzPPI4jTIFFShpyTFlJVtpAHhqebUW3CmWBLdkZusIaELCxbBBPZFjPY0dkMqsL9JlK9XAXyVDyoz0XbzO9CZmqa5YEclc1+/estyrw7CvlEAU7rcJvZ2xm2mdk44gbR81mlshm1Lg7G0OwEgo0Ed0xAVwiouvp2Ix/pQqHGyB894YoRr5QUSb1TRHXK0abQed8QAqNm4I=
X-Forefront-Antispam-Report-Untrusted:
 CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:DU2PR08MB7272.eurprd08.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(366016)(376014)(1800799024)(38070700021)(22082099003)(56012099003)(18002099003);DIR:OUT;SFP:1101;
Content-Type: text/plain; charset="utf-8"
Content-ID: <9C5460A2116DD34C9FEC0DB0741AF301@eurprd08.prod.outlook.com>
Content-Transfer-Encoding: base64
MIME-Version: 1.0
X-Exchange-RoutingPolicyChecked:
 uyvmWT56UZYpa/y/BceWUTbN/tjt0qrXuosMELp7vt5DklvPVPTmSW/iXgWRmA6lYqILiiLXtBJ0Gttfq9UkCXDJ3Bv3I+3+HOzAA06xD+1113LuKNY5a2GI1I6tl/7WxWAHUpncwhCnw7hD75fEXTnOp5eqt4gWznvsXN3RRdKDTar60leLIorvFncHsm+xPGDDfwmCiXagloHENgDbj0WHu323ISMP4Lxq/3WbfiiY5t4yAgija29LsepaO8t03//coUA7AfPf0arlpUforgNDWzqc61OI7T2F65i5ngr5aVhqivWbphhLZdPXSAuDnwM00LYb8HfvVxyUzO9mkA==
X-MS-Exchange-Transport-CrossTenantHeadersStamped: PA6PR08MB10417
X-EOPAttributedMessage: 0
X-MS-Exchange-Transport-CrossTenantHeadersStripped:
 AM3PEPF00009BA2.eurprd04.prod.outlook.com
X-MS-PublicTrafficType: Email
X-MS-Office365-Filtering-Correlation-Id-Prvs:
	3f34c1ea-cbef-4a21-8fc2-08de9967117d
X-Microsoft-Antispam:
	BCL:0;ARA:13230040|82310400026|35042699022|14060799003|36860700016|1800799024|376014|18002099003|56012099003|22082099003;
X-Microsoft-Antispam-Message-Info:
	v5Y+/1o+rlzuVkaK2z6UsNHGbjtnoSqU6G4JFWZMmpb4Qi6Bn7+554lnMoX5yAb56ff1ZvZCUghHXlO2t5W2jdOti+A/w6h9wYdzTzaTMJSHzm9D8rOrRVBLgB11OCdQ0gP4uiIDh8uhvEUKRmFfNfS87xPxmgnKuhdBHkn0iyfHIfcjmaqdNKF52zul/JySXgMUia9Dry9VlRO/dU1oA0T5Zhb1gTsDd5ZSiEelx/oawxzaEFFztlJqGtDCFFBhRhzsqIlnqxzPPkMhrzUP1MMUQu5aApJywmKFFJAOofUp+78L6BM+zdvUwvzCoCb/M1W5TKdzk6VugUdRJG4R6dNNHDyiMfpBDQ2u6A1tcJ2499MSWbPfQXVKH7anb2lO8akkwscePZI0vsRl3Bm5sh5j7Kyn7nOIVuT88bMlYixYwy8YLfRfAzt1zM2s0k6AC/B6xLEdrc5WbM7gEiIi4U2E75S0EB+uBtJE7lwp5QRyLvPGce8lU/v3C5+b3SuXQrCMrvabo/F4h85B/O935TxRFLqHjwKFf8+YRslVANdq4teX+65et1CE9vhWGcKuCdK2r9az/L1nkkbqY4dxg+J2QnoJwbGkDnvbLAjtsDMCT4kE+vwdtYesy3V7dZcEPRKvTfnmnFsXJ6fkvLv6TJ/b43I8vW+gTmIgTF67wkI6Tw8/UwYxL5m09XoaGdbJnJhXhHdXNlCMfIq+j1/tbbMAVoQaTv72TB/1Qn6daWBj0p87cIQBI2sKyAgiKWkk3xcmENTTxHmOdGUsCJ9lBA==
X-Forefront-Antispam-Report:
	CIP:4.158.2.129;CTRY:GB;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:outbound-uk1.az.dlp.m.darktrace.com;PTR:InfoDomainNonexistent;CAT:NONE;SFS:(13230040)(82310400026)(35042699022)(14060799003)(36860700016)(1800799024)(376014)(18002099003)(56012099003)(22082099003);DIR:OUT;SFP:1101;
X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1
X-MS-Exchange-AntiSpam-MessageData-0:
	TRNRaDDKHXZT8swoKrYPXe84VzpS9qJK5v6LCYBGcLpM0BlFfp6khMlxThymjKV4ocHtju47JTLp4qEdOPM38YR5yLqNokPSejDcfb+IMpdsSydZ/u9r+zklOdfZqndVhHDm/iIYAPgIwzNeTdWN2p2xEz6wHOIOJfi3odt8pfA/y1Iuu89dlcteQDNFHHXlXIhotPjnaTJijs6G4mTuomeMH1HvkhUCEqIlUzgzSHWvIitHEdMhOfzAiE/SNtMTQLeBfhkaBjIYfIoFz7J06Vf6gvac7cd7MIBwn/e2G3lk2XelL+QRWCnHaXZZpsnVdJq7Sf6NjE5xdJBjc29sWT6aQRtsmfCjYnbjUbJR8m9jp8DXkXZrWmd/c0NoaQydi6dG2rITU8pjo5r3JXaxd96RU9MXNQK3kvprpeDtJwou1afxlGAcU+uUszdsA3Xd
X-OriginatorOrg: arm.com
X-MS-Exchange-CrossTenant-OriginalArrivalTime: 13 Apr 2026 14:16:12.7532
 (UTC)
X-MS-Exchange-CrossTenant-Network-Message-Id: e296eb19-365c-4cb8-a047-08de996737b6
X-MS-Exchange-CrossTenant-Id: f34e5979-57d9-4aaa-ad4d-b122a662184d
X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=f34e5979-57d9-4aaa-ad4d-b122a662184d;Ip=[4.158.2.129];Helo=[outbound-uk1.az.dlp.m.darktrace.com]
X-MS-Exchange-CrossTenant-AuthSource:
	AM3PEPF00009BA2.eurprd04.prod.outlook.com
X-MS-Exchange-CrossTenant-AuthAs: Anonymous
X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem
X-MS-Exchange-Transport-CrossTenantHeadersStamped: AS8PR08MB6101
X-purgate-ID: tlsNG-720697/1776089776-47122CD1-FAB0F649/0/0
X-purgate-type: clean
X-purgate-size: 8138

SEkgTWlsYW4sDQoNCj4gT24gMzEgTWFyIDIwMjYsIGF0IDAyOjUyLCBNaWxhbiBEam9raWMgPG1p
bGFuX2Rqb2tpY0BlcGFtLmNvbT4gd3JvdGU6DQo+IA0KPiBGcm9tOiBSYWh1bCBTaW5naCA8cmFo
dWwuc2luZ2hAYXJtLmNvbT4NCj4gDQo+IFN0YWdlLTEgdHJhbnNsYXRpb24gaXMgaGFuZGxlZCBi
eSBndWVzdCwgdGhlcmVmb3JlIHN0YWdlLTEgZmF1bHQgaGFzIHRvDQo+IGJlIGZvcndhcmRlZCB0
byBndWVzdC4NCj4gDQo+IFNpZ25lZC1vZmYtYnk6IFJhaHVsIFNpbmdoIDxyYWh1bC5zaW5naEBh
cm0uY29tPg0KPiBTaWduZWQtb2ZmLWJ5OiBNaWxhbiBEam9raWMgPG1pbGFuX2Rqb2tpY0BlcGFt
LmNvbT4NCj4gLS0tDQo+IHhlbi9kcml2ZXJzL3Bhc3N0aHJvdWdoL2FybS9zbW11LXYzLmMgIHwg
NDggKysrKysrKysrKysrKysrKysrKysrKysrLS0NCj4geGVuL2RyaXZlcnMvcGFzc3Rocm91Z2gv
YXJtL3ZzbW11LXYzLmMgfCA0NSArKysrKysrKysrKysrKysrKysrKysrKysNCj4geGVuL2RyaXZl
cnMvcGFzc3Rocm91Z2gvYXJtL3ZzbW11LXYzLmggfCAxMiArKysrKysrDQo+IDMgZmlsZXMgY2hh
bmdlZCwgMTAzIGluc2VydGlvbnMoKyksIDIgZGVsZXRpb25zKC0pDQo+IA0KPiBkaWZmIC0tZ2l0
IGEveGVuL2RyaXZlcnMvcGFzc3Rocm91Z2gvYXJtL3NtbXUtdjMuYyBiL3hlbi9kcml2ZXJzL3Bh
c3N0aHJvdWdoL2FybS9zbW11LXYzLmMNCj4gaW5kZXggY2Y4ZjYzOGE0OS4uNGMxOTUxZDc1MyAx
MDA2NDQNCj4gLS0tIGEveGVuL2RyaXZlcnMvcGFzc3Rocm91Z2gvYXJtL3NtbXUtdjMuYw0KPiAr
KysgYi94ZW4vZHJpdmVycy9wYXNzdGhyb3VnaC9hcm0vc21tdS12My5jDQo+IEBAIC04NjksNyAr
ODY5LDYgQEAgc3RhdGljIGludCBhcm1fc21tdV9pbml0X2wyX3N0cnRhYihzdHJ1Y3QgYXJtX3Nt
bXVfZGV2aWNlICpzbW11LCB1MzIgc2lkKQ0KPiByZXR1cm4gMDsNCj4gfQ0KPiANCj4gLV9fbWF5
YmVfdW51c2VkDQo+IHN0YXRpYyBzdHJ1Y3QgYXJtX3NtbXVfbWFzdGVyICoNCj4gYXJtX3NtbXVf
ZmluZF9tYXN0ZXIoc3RydWN0IGFybV9zbW11X2RldmljZSAqc21tdSwgdTMyIHNpZCkNCj4gew0K
PiBAQCAtODkwLDEwICs4ODksNTEgQEAgYXJtX3NtbXVfZmluZF9tYXN0ZXIoc3RydWN0IGFybV9z
bW11X2RldmljZSAqc21tdSwgdTMyIHNpZCkNCj4gcmV0dXJuIE5VTEw7DQo+IH0NCj4gDQo+ICtz
dGF0aWMgaW50IGFybV9zbW11X2hhbmRsZV9ldnQoc3RydWN0IGFybV9zbW11X2RldmljZSAqc21t
dSwgdTY0ICpldnQpDQo+ICt7DQo+ICsgaW50IHJldDsNCj4gKyBzdHJ1Y3QgYXJtX3NtbXVfbWFz
dGVyICptYXN0ZXI7DQo+ICsgdTMyIHNpZCA9IEZJRUxEX0dFVChFVlRRXzBfU0lELCBldnRbMF0p
Ow0KPiArDQo+ICsgc3dpdGNoIChGSUVMRF9HRVQoRVZUUV8wX0lELCBldnRbMF0pKSB7DQo+ICsg
Y2FzZSBFVlRfSURfVFJBTlNMQVRJT05fRkFVTFQ6DQo+ICsgYnJlYWs7DQo+ICsgY2FzZSBFVlRf
SURfQUREUl9TSVpFX0ZBVUxUOg0KPiArIGJyZWFrOw0KPiArIGNhc2UgRVZUX0lEX0FDQ0VTU19G
QVVMVDoNCj4gKyBicmVhazsNCj4gKyBjYXNlIEVWVF9JRF9QRVJNSVNTSU9OX0ZBVUxUOg0KPiAr
IGJyZWFrOw0KPiArIGRlZmF1bHQ6DQo+ICsgcmV0dXJuIC1FT1BOT1RTVVBQOw0KPiArIH0NCj4g
Kw0KPiArIC8qIFN0YWdlLTIgZXZlbnQgKi8NCj4gKyBpZiAoZXZ0WzFdICYgRVZUUV8xX1MyKQ0K
PiArIHJldHVybiAtRUZBVUxUOw0KPiArDQo+ICsgbXV0ZXhfbG9jaygmc21tdS0+c3RyZWFtc19t
dXRleCk7DQo+ICsgbWFzdGVyID0gYXJtX3NtbXVfZmluZF9tYXN0ZXIoc21tdSwgc2lkKTsNCj4g
KyBpZiAoIW1hc3Rlcikgew0KPiArIHJldCA9IC1FSU5WQUw7DQo+ICsgZ290byBvdXRfdW5sb2Nr
Ow0KPiArIH0NCj4gKw0KPiArIHJldCA9IGFybV92c21tdV9oYW5kbGVfZXZ0KG1hc3Rlci0+ZG9t
YWluLT5kLCBzbW11LT5kZXYsIGV2dCk7DQo+ICsgaWYgKHJldCkgew0KPiArIHJldCA9IC1FSU5W
QUw7DQo+ICsgZ290byBvdXRfdW5sb2NrOw0KPiArIH0NCj4gKw0KPiArb3V0X3VubG9jazoNCj4g
KyBtdXRleF91bmxvY2soJnNtbXUtPnN0cmVhbXNfbXV0ZXgpOw0KPiArIHJldHVybiByZXQ7DQo+
ICt9DQo+ICsNCj4gLyogSVJRIGFuZCBldmVudCBoYW5kbGVycyAqLw0KPiBzdGF0aWMgdm9pZCBh
cm1fc21tdV9ldnRxX3Rhc2tsZXQodm9pZCAqZGV2KQ0KPiB7DQo+IC0gaW50IGk7DQo+ICsgaW50
IGksIHJldDsNCj4gc3RydWN0IGFybV9zbW11X2RldmljZSAqc21tdSA9IGRldjsNCj4gc3RydWN0
IGFybV9zbW11X3F1ZXVlICpxID0gJnNtbXUtPmV2dHEucTsNCj4gc3RydWN0IGFybV9zbW11X2xs
X3F1ZXVlICpsbHEgPSAmcS0+bGxxOw0KPiBAQCAtOTAzLDYgKzk0MywxMCBAQCBzdGF0aWMgdm9p
ZCBhcm1fc21tdV9ldnRxX3Rhc2tsZXQodm9pZCAqZGV2KQ0KPiB3aGlsZSAoIXF1ZXVlX3JlbW92
ZV9yYXcocSwgZXZ0KSkgew0KPiB1OCBpZCA9IEZJRUxEX0dFVChFVlRRXzBfSUQsIGV2dFswXSk7
DQo+IA0KPiArIHJldCA9IGFybV9zbW11X2hhbmRsZV9ldnQoc21tdSwgZXZ0KTsNCj4gKyBpZiAo
IXJldCkNCj4gKyBjb250aW51ZTsNCj4gKw0KPiBkZXZfaW5mbyhzbW11LT5kZXYsICJldmVudCAw
eCUwMnggcmVjZWl2ZWQ6XG4iLCBpZCk7DQo+IGZvciAoaSA9IDA7IGkgPCBBUlJBWV9TSVpFKGV2
dCk7ICsraSkNCj4gZGV2X2luZm8oc21tdS0+ZGV2LCAiXHQweCUwMTZsbHhcbiIsDQo+IGRpZmYg
LS1naXQgYS94ZW4vZHJpdmVycy9wYXNzdGhyb3VnaC9hcm0vdnNtbXUtdjMuYyBiL3hlbi9kcml2
ZXJzL3Bhc3N0aHJvdWdoL2FybS92c21tdS12My5jDQo+IGluZGV4IGE1Yjk3MDAzNjkuLjVkMGRh
YmQyYjIgMTAwNjQ0DQo+IC0tLSBhL3hlbi9kcml2ZXJzL3Bhc3N0aHJvdWdoL2FybS92c21tdS12
My5jDQo+ICsrKyBiL3hlbi9kcml2ZXJzL3Bhc3N0aHJvdWdoL2FybS92c21tdS12My5jDQo+IEBA
IC0xMDMsNiArMTAzLDcgQEAgc3RydWN0IGFybV92c21tdV9xdWV1ZSB7DQo+IHN0cnVjdCB2aXJ0
X3NtbXUgew0KPiAgICAgc3RydWN0ICAgICAgZG9tYWluICpkOw0KPiAgICAgc3RydWN0ICAgICAg
bGlzdF9oZWFkIHZpb21tdV9saXN0Ow0KPiArICAgIHBhZGRyX3QgICAgIGFkZHI7DQo+ICAgICB1
aW50OF90ICAgICBzaWRfc3BsaXQ7DQo+ICAgICB1aW50MzJfdCAgICBmZWF0dXJlczsNCj4gICAg
IHVpbnQzMl90ICAgIGNyWzNdOw0KPiBAQCAtMjM3LDYgKzIzOCw0OSBAQCB2b2lkIGFybV92c21t
dV9zZW5kX2V2ZW50KHN0cnVjdCB2aXJ0X3NtbXUgKnNtbXUsDQo+ICAgICByZXR1cm47DQo+IH0N
Cj4gDQo+ICtzdGF0aWMgc3RydWN0IHZpcnRfc21tdSAqdnNtbXV2M19maW5kX2J5X2FkZHIoc3Ry
dWN0IGRvbWFpbiAqZCwgcGFkZHJfdCBwYWRkcikNCj4gK3sNCj4gKyAgICBzdHJ1Y3QgdmlydF9z
bW11ICpzbW11Ow0KPiArDQo+ICsgICAgbGlzdF9mb3JfZWFjaF9lbnRyeSggc21tdSwgJmQtPmFy
Y2gudmlvbW11X2xpc3QsIHZpb21tdV9saXN0ICkNCj4gKyAgICB7DQo+ICsgICAgICAgIGlmICgg
c21tdS0+YWRkciA9PSBwYWRkciApDQo+ICsgICAgICAgICAgICByZXR1cm4gc21tdTsNCj4gKyAg
ICB9DQo+ICsNCj4gKyAgICByZXR1cm4gTlVMTDsNCj4gK30NCj4gKw0KPiAraW50IGFybV92c21t
dV9oYW5kbGVfZXZ0KHN0cnVjdCBkb21haW4gKmQsIHN0cnVjdCBkZXZpY2UgKmRldiwgdWludDY0
X3QgKmV2dCkNCj4gK3sNCj4gKyAgICBpbnQgcmV0Ow0KPiArICAgIHN0cnVjdCB2aXJ0X3NtbXUg
KnNtbXU7DQo+ICsNCj4gKyAgICBpZiAoIGlzX2hhcmR3YXJlX2RvbWFpbihkKSApDQo+ICsgICAg
ew0KPiArICAgICAgICBwYWRkcl90IHBhZGRyOw0KPiArICAgICAgICAvKiBCYXNlIGFkZHJlc3Mg
Ki8NCj4gKyAgICAgICAgcmV0ID0gZHRfZGV2aWNlX2dldF9hZGRyZXNzKGRldl90b19kdChkZXYp
LCAwLCAmcGFkZHIsIE5VTEwpOw0KPiArICAgICAgICBpZiAoIHJldCApDQo+ICsgICAgICAgICAg
ICByZXR1cm4gLUVJTlZBTDsNCj4gKw0KPiArICAgICAgICBzbW11ID0gdnNtbXV2M19maW5kX2J5
X2FkZHIoZCwgcGFkZHIpOw0KPiArICAgICAgICBpZiAoICFzbW11ICkNCj4gKyAgICAgICAgICAg
IHJldHVybiAtRU5PREVWOw0KPiArICAgIH0NCj4gKyAgICBlbHNlDQo+ICsgICAgew0KPiArICAg
ICAgICBzbW11ID0gbGlzdF9lbnRyeShkLT5hcmNoLnZpb21tdV9saXN0Lm5leHQsDQo+ICsgICAg
ICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCB2aXJ0X3NtbXUsIHZpb21tdV9saXN0KTsNCj4g
KyAgICB9DQo+ICsNCj4gKyAgICByZXQgPSBhcm1fdnNtbXVfd3JpdGVfZXZ0cShzbW11LCBldnQp
Ow0KPiArICAgIGlmICggcmV0ICkNCj4gKyAgICAgICAgYXJtX3ZzbW11X2luamVjdF9pcnEoc21t
dSwgdHJ1ZSwgR0VSUk9SX0VWVFFfQUJUX0VSUik7DQo+ICsNCj4gKyAgICByZXR1cm4gMDsNCj4g
K30NCj4gKw0KPiBzdGF0aWMgaW50IGFybV92c21tdV9maW5kX3N0ZShzdHJ1Y3QgdmlydF9zbW11
ICpzbW11LCB1aW50MzJfdCBzaWQsDQo+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVp
bnQ2NF90ICpzdGUpDQo+IHsNCj4gQEAgLTc0Miw2ICs3ODYsNyBAQCBzdGF0aWMgaW50IHZzbW11
djNfaW5pdF9zaW5nbGUoc3RydWN0IGRvbWFpbiAqZCwgcGFkZHJfdCBhZGRyLA0KPiANCj4gICAg
IHNtbXUtPmQgPSBkOw0KPiAgICAgc21tdS0+dmlycSA9IHZpcnE7DQo+ICsgICAgc21tdS0+YWRk
ciA9IGFkZHI7DQo+ICAgICBzbW11LT5jbWRxLnFfYmFzZSA9IEZJRUxEX1BSRVAoUV9CQVNFX0xP
RzJTSVpFLCBTTU1VX0NNRFFTKTsNCj4gICAgIHNtbXUtPmNtZHEuZW50X3NpemUgPSBDTURRX0VO
VF9EV09SRFMgKiBEV09SRFNfQllURVM7DQo+ICAgICBzbW11LT5ldnRxLnFfYmFzZSA9IEZJRUxE
X1BSRVAoUV9CQVNFX0xPRzJTSVpFLCBTTU1VX0VWVFFTKTsNCj4gZGlmZiAtLWdpdCBhL3hlbi9k
cml2ZXJzL3Bhc3N0aHJvdWdoL2FybS92c21tdS12My5oIGIveGVuL2RyaXZlcnMvcGFzc3Rocm91
Z2gvYXJtL3ZzbW11LXYzLmgNCj4gaW5kZXggZTExZjg1YjQzMS4uYzdiZmQzZmI1OSAxMDA2NDQN
Cj4gLS0tIGEveGVuL2RyaXZlcnMvcGFzc3Rocm91Z2gvYXJtL3ZzbW11LXYzLmgNCj4gKysrIGIv
eGVuL2RyaXZlcnMvcGFzc3Rocm91Z2gvYXJtL3ZzbW11LXYzLmgNCj4gQEAgLTgsNiArOCwxMiBA
QA0KPiANCj4gdm9pZCB2c21tdXYzX3NldF90eXBlKHZvaWQpOw0KPiANCj4gK3N0YXRpYyBpbmxp
bmUgaW50IGFybV92c21tdV9oYW5kbGVfZXZ0KHN0cnVjdCBkb21haW4gKmQsDQo+ICsgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3QgZGV2aWNlICpkZXYsIHVpbnQ2
NF90ICpldnQpDQo+ICt7DQo+ICsgICAgcmV0dXJuIC1FSU5WQUw7DQo+ICt9DQoNClNob3VsZG7i
gJl0IHRoaXMgYmUgdGhlIHByb3RvdHlwZSBvZiBhcm1fdnNtbXVfaGFuZGxlX2V2dCgpIGluc3Rl
YWQgb2YgYSBzdHViIGltcGxlbWVudGF0aW9uPw0KDQo+ICsNCj4gI2Vsc2UNCj4gDQo+IHN0YXRp
YyBpbmxpbmUgdm9pZCB2c21tdXYzX3NldF90eXBlKHZvaWQpDQo+IEBAIC0xNSw2ICsyMSwxMiBA
QCBzdGF0aWMgaW5saW5lIHZvaWQgdnNtbXV2M19zZXRfdHlwZSh2b2lkKQ0KPiAgICAgcmV0dXJu
Ow0KPiB9DQo+IA0KPiArc3RhdGljIGlubGluZSBpbnQgYXJtX3ZzbW11X2hhbmRsZV9ldnQoc3Ry
dWN0IGRvbWFpbiAqZCwNCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IHN0cnVjdCBkZXZpY2UgKmRldiwgdWludDY0X3QgKmV2dCkNCj4gK3sNCj4gKyAgICByZXR1cm4g
LUVJTlZBTDsNCj4gK30NCj4gKw0KPiAjZW5kaWYgLyogQ09ORklHX1ZJUlRVQUxfQVJNX1NNTVVf
VjMgKi8NCj4gDQo+ICNlbmRpZiAvKiBfX0FSQ0hfQVJNX1ZTTU1VX1YzX0hfXyAqLw0KPiANCg0K
Q2hlZXJzLA0KTHVjYQ0KDQo=


From xen-devel-bounces@lists.xenproject.org Mon Apr 13 14:31:00 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 13 Apr 2026 14:31:00 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1281192.1564213 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wCIJQ-0006lS-Oq; Mon, 13 Apr 2026 14:30:52 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1281192.1564213; Mon, 13 Apr 2026 14:30: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 1wCIJQ-0006lL-La; Mon, 13 Apr 2026 14:30:52 +0000
Received: by outflank-mailman (input) for mailman id 1281192;
 Mon, 13 Apr 2026 14:30: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 1wCIJO-0006lF-IJ
 for xen-devel@lists.xenproject.org; Mon, 13 Apr 2026 14:30:50 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wCIJN-00DE36-UO
 for xen-devel@lists.xenproject.org; Mon, 13 Apr 2026 16:30:49 +0200
Received: from [10.42.69.7] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <Jason.Andryuk@amd.com>)
 id 69dcfe0c-bab6-0a2a0a5309dd-0a2a4507ce2c-38
 for <xen-devel@lists.xenproject.org>; Mon, 13 Apr 2026 16:30:49 +0200
Received: from [40.107.200.65]
 (helo=CH5PR02CU005.outbound.protection.outlook.com)
 by tlsNG-ef75cf.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.0)
 (envelope-from <Jason.Andryuk@amd.com>)
 id 69dcfe17-ba2d-0a2a45070019-286bc841e2ee-3
 for <xen-devel@lists.xenproject.org>; Mon, 13 Apr 2026 16:30:48 +0200
Received: from CYXPR02CA0048.namprd02.prod.outlook.com (2603:10b6:930:cc::26)
 by CY8PR12MB8338.namprd12.prod.outlook.com (2603:10b6:930:7b::8) with
 Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9769.48; Mon, 13 Apr
 2026 14:30:45 +0000
Received: from CY4PEPF0000EDD7.namprd03.prod.outlook.com
 (2603:10b6:930:cc:cafe::5a) by CYXPR02CA0048.outlook.office365.com
 (2603:10b6:930:cc::26) with Microsoft SMTP Server (version=TLS1_3,
 cipher=TLS_AES_256_GCM_SHA384) id 15.20.9769.48 via Frontend Transport; Mon,
 13 Apr 2026 14:30:45 +0000
Received: from satlexmb08.amd.com (165.204.84.17) by
 CY4PEPF0000EDD7.mail.protection.outlook.com (10.167.241.203) with Microsoft
 SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id
 15.20.9769.17 via Frontend Transport; Mon, 13 Apr 2026 14:30:44 +0000
Received: from SATLEXMB04.amd.com (10.181.40.145) by satlexmb08.amd.com
 (10.181.42.217) with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.2.2562.17; Mon, 13 Apr
 2026 09:30:44 -0500
Received: from satlexmb08.amd.com (10.181.42.217) by SATLEXMB04.amd.com
 (10.181.40.145) with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2507.39; Mon, 13 Apr
 2026 09:30:44 -0500
Received: from [172.24.171.253] (10.180.168.240) by satlexmb08.amd.com
 (10.181.42.217) with Microsoft SMTP Server id 15.2.2562.17 via Frontend
 Transport; Mon, 13 Apr 2026 09:30:43 -0500
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@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=KcRUr6n9VFbu6g2SnulC019SkymGzDaxFI3zV3cNy68uED2iOO4UkfAsEDQIfsmuBT289XkDrrD4Ng3YZ4b0G9HEUUkr7omb0iwVUlVro7SEuAp6hdDbshZQlLN6ubHmppg/h3Kfd+KhD1MH4pJDDzITLeZw3+b668/x+E9FHt+aGaFKbJezptN9YhU2NLJGtlmN78vCIBUddPgHJwmRPNz0+rABWYiq3m0wPp3pByqyPIHyWVrdvFlxGTLITHqCF/Z6q6+2arLcIKdptIZm1copPuogbBrDqfMnC4JOmpyYG3Y3VwNJrC21TWjLZRGcZtOyPfN0q/CZG420DPFm0A==
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com;
 s=arcselector10001;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1;
 bh=91i3G8cCsRuVTzCrLA15uZisLzTf8O+SKiCVkYxiWXQ=;
 b=tVIoaEvXQbjvFVKwrPIZvdOwLp23IaATZ0OnRK7BfjFMa0Y9CkiBJqE8tQ+fM/6V9g+s4Jt1Zb1ZSNmxpG+9wIDFCg7GOeawFV9BzCVBwTY8H0hdHrTNs/IrJ1Kik5qbaqnvBE/lhzHorrG7NJq7OB6PZ+EFxf90FE3l6sVPtSXPgRzbr0rs+4qX4rDdARoHOl1RSJ60o7L7/LHihMwde1mnFQOBrqtS0JJc2Y4GLWkH670vW0XeS4YY8FXmCdo3VOrb9F1/QLmP2qw+8pRK2Jzd8vBu3ZYiiQsT33/webGfbVBs/iEMjnuU+p80xzI3R7XheG4TQwrfMNuyTrWmJQ==
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=91i3G8cCsRuVTzCrLA15uZisLzTf8O+SKiCVkYxiWXQ=;
 b=15i/Z8HohVKpDN9dc+yl1wnWQsfEG7FLp37J5umvPxgXKgjYCkO6O69CyvnyvYNhKfMUIFhv6gCxuKwLIgwxiUv6MZ1qEaIDO5meefhY2tXe3k0KWdZIGnuKzVkoad0O23QvSlJY3qk5izkoUNSy6xXRQfFaQ5K8FdKdtc2xQ28=
X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 165.204.84.17)
 smtp.mailfrom=amd.com; dkim=none (message not signed)
 header.d=none;dmarc=pass action=none header.from=amd.com;
Received-SPF: Pass (protection.outlook.com: domain of amd.com designates
 165.204.84.17 as permitted sender) receiver=protection.outlook.com;
 client-ip=165.204.84.17; helo=satlexmb08.amd.com; pr=C
Message-ID: <5d09f299-6df9-4225-ad9d-576409e19484@amd.com>
Date: Mon, 13 Apr 2026 10:30:42 -0400
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [GIT PULL] xen: branch for v7.1-rc1
To: Juergen Gross <jgross@suse.com>, <torvalds@linux-foundation.org>, "Greg
 Kroah-Hartman" <gregkh@linuxfoundation.org>
CC: <linux-kernel@vger.kernel.org>, <xen-devel@lists.xenproject.org>,
	<sstabellini@kernel.org>
References: <20260412062202.627248-1-jgross@suse.com>
Content-Language: en-US
From: Jason Andryuk <jason.andryuk@amd.com>
In-Reply-To: <20260412062202.627248-1-jgross@suse.com>
Content-Type: text/plain; charset="UTF-8"; format=flowed
Content-Transfer-Encoding: 7bit
Received-SPF: None (SATLEXMB04.amd.com: jason.andryuk@amd.com does not
 designate permitted sender hosts)
X-EOPAttributedMessage: 0
X-MS-PublicTrafficType: Email
X-MS-TrafficTypeDiagnostic: CY4PEPF0000EDD7:EE_|CY8PR12MB8338:EE_
X-MS-Office365-Filtering-Correlation-Id: 5f275a5c-3b0b-45f3-a437-08de99693f8a
X-MS-Exchange-SenderADCheck: 1
X-MS-Exchange-AntiSpam-Relay: 0
X-Microsoft-Antispam:
	BCL:0;ARA:13230040|36860700016|376014|82310400026|1800799024|18002099003|22082099003|56012099003;
X-Microsoft-Antispam-Message-Info:
	eBZ2x9vwhMP96Jw5pBDxCh4U3nRUooRDwvmlqxjLTaI6JR4wDgn/Id/geNzPczNNJ5VE5oURNV6VQOU4rQ2iWd0S5YfWfNdbMKoED1gtYkiHkB6wKLCpiECjcKIDaMiknsVdppRTikNYdBe+SyaQjjbtIgxP9BVSA5VooifJmH4UPblhYTk5bK0W363JYL5vSAPEu/YGGLIthRdChJLTk9sxfSAyhvj7bt8XeLoHaJuU24wDGlOo9jDw+AS0pGhjDnM4ObE+B4xdKAqdItsdIW5PJ1L70tNqYE7AMyinJ4lkeQ/wKThPsOpji1FPKTl0o75hxrB7hsx4qgZ1GrR08rZk5PIJuGcxP72o8e5iVcK6pd8K4C9eNnhqgYZ1wl7BMlzjYfU+hGtmai2KWd8qRILa/DVluzI466t31UrEcaauwB4A3Yi5LXJpvkAzgxpnPdHGmNqACMNuErV9xF1RjewZ0ickQ54AunFwU2VkYTaexSvFRQJUw/4A9ooo+PI9hsT05p8uvpksbHGGcRmm2wBFTGFXUXMEUPoi0Atw0eQFYdaPLJuZDDvM0+IKGntSzjwOv7MySCTMBOjwzQVA7/TKnN1maWpgQKk7uxoOhDnC1KRjdahhPWm+czKt0pJj5uZWNuyJfLF/oxdL8asllf+OKUdY2tcyyGvYuhfSWjuk95k2We66jJcSNvKagk7DBlsUdt51lwqug2VFSCltRN4JZIDv28+6XDmixLG/uccCOWW4fHiLwZNHjKK+l3BuwYLb8OVHSLnGYnCzMnbUKw==
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)(376014)(82310400026)(1800799024)(18002099003)(22082099003)(56012099003);DIR:OUT;SFP:1101;
X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1
X-MS-Exchange-AntiSpam-MessageData-0:
	1p3dCqWYwk28SKFVEtBmIxpQ57AIcE30BYGOusFCZILfAKHxzaP0H66pObK2NKwk7Dye//PT0ARmkf5yW/TSWN9/d16nxVWVF8Xgk4KB/28D0HfaAO0MNu4AziYwtTm523GyQ/IL8j9S3h8SaJACopnNvWCYTB+HSpHUi0nr31X82EFolkN4yjIiva1qJOyVM8a56cBN6qNTc7U/kHQRefor8tq101CFzTbjdZDGMg17ByAWv5e8dzzWchjHhcyznr+57gfrDesOgZD4Q3OKzIaJXwscBmlAxCwQ7OQgX1AAy1X6SE5nSB1TQfGiUgPjFmViXUornYa33XcHYn3xQkypAa0/FzPYw7eVS8ndPDE/K1JOeIJLnpL3w3/lSN0bcEaS5DnRxi8hmPcslQC7KNEgdz8hKZPzMnoNK9XY5EBrbUo6PcUsu/etfli1yeHG
X-OriginatorOrg: amd.com
X-MS-Exchange-CrossTenant-OriginalArrivalTime: 13 Apr 2026 14:30:44.8980
 (UTC)
X-MS-Exchange-CrossTenant-Network-Message-Id: 5f275a5c-3b0b-45f3-a437-08de99693f8a
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:
	CY4PEPF0000EDD7.namprd03.prod.outlook.com
X-MS-Exchange-CrossTenant-AuthAs: Anonymous
X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem
X-MS-Exchange-Transport-CrossTenantHeadersStamped: CY8PR12MB8338
X-purgate-ID: tlsNG-ef75cf/1776090649-1039741E-BCA8FF7F/0/0
X-purgate-type: clean
X-purgate-size: 801

Hi Juergen and Greg,

On 2026-04-12 02:22, Juergen Gross wrote:
> Linus,
> 
> Please git pull the following tag:
> 
>   git://git.kernel.org/pub/scm/linux/kernel/git/xen/tip.git for-linus-7.1-rc1-tag
> 
> xen: branch for v7.1-rc1

> - a fix for the Xen console driver solving a boot hangup when the
>    console backend isn't yet running

> 
> Jason Andryuk (1):
>        hvc/xen: Check console connection flag

Greg included this one in tty-testing as 
d50dd728ced93a1900ff0be924b6f273baf59fb2, which has been in linux-next 
for a bit.

https://git.kernel.org/pub/scm/linux/kernel/git/gregkh/tty.git/commit/?h=tty-testing&id=d50dd728ced93a1900ff0be924b6f273baf59fb2

I just wanted to bring this to your attention so you can decide which 
way it should go.

Thanks,
Jason


From xen-devel-bounces@lists.xenproject.org Mon Apr 13 14:42:15 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 13 Apr 2026 14:42:15 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1281209.1564221 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wCIUN-00008u-Ps; Mon, 13 Apr 2026 14:42:11 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1281209.1564221; Mon, 13 Apr 2026 14:42: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 1wCIUN-00008n-My; Mon, 13 Apr 2026 14:42:11 +0000
Received: by outflank-mailman (input) for mailman id 1281209;
 Mon, 13 Apr 2026 14:42:09 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92) id 1wCIUL-00008f-Oh
 for xen-devel@lists.xenproject.org; Mon, 13 Apr 2026 14:42:09 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wCIUL-007xxU-0x
 for xen-devel@lists.xenproject.org; Mon, 13 Apr 2026 16:42:09 +0200
Received: from [10.42.69.3] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <oleksii.kurochko@gmail.com>)
 id 69dd00b7-e002-0a2a0a5209dd-0a2a4503ab10-36
 for <xen-devel@lists.xenproject.org>; Mon, 13 Apr 2026 16:42:09 +0200
Received: from [209.85.221.49] (helo=mail-wr1-f49.google.com)
 by tlsNG-33051d.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.0)
 (envelope-from <oleksii.kurochko@gmail.com>)
 id 69dd00c0-02b3-0a2a45030019-d155dd31ad4b-3
 for <xen-devel@lists.xenproject.org>; Mon, 13 Apr 2026 16:42:08 +0200
Received: by mail-wr1-f49.google.com with SMTP id
 ffacd0b85a97d-43cfd832155so3053691f8f.1
 for <xen-devel@lists.xenproject.org>; Mon, 13 Apr 2026 07:42:08 -0700 (PDT)
Received: from [192.168.1.6] (user-109-243-69-121.play-internet.pl.
 [109.243.69.121]) by smtp.gmail.com with ESMTPSA id
 ffacd0b85a97d-43d63e4f16bsm32154771f8f.26.2026.04.13.07.42.06
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Mon, 13 Apr 2026 07:42:07 -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=20251104 header.d=gmail.com header.i="@gmail.com" header.h="Content-Transfer-Encoding:In-Reply-To:Content-Language:References:Cc:To:Subject:From:User-Agent:MIME-Version:Date:Message-ID"
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=gmail.com; s=20251104; t=1776091328; x=1776696128; darn=lists.xenproject.org;
        h=content-transfer-encoding:in-reply-to:content-language:references
         :cc:to:subject:from:user-agent:mime-version:date:message-id:from:to
         :cc:subject:date:message-id:reply-to;
        bh=UWQxix9XwXVkNsiA1TuF2NjYBhksRbXlSi5koezn3RU=;
        b=OzB6k2www+iZsWBTDKg80WSwH5GLpU9HTKHPA5xdwE6cQNqII1lyt12NZQcYKkpk+t
         CLbB53aVzd4QGOIAFD49NLHws2CQROVZG/KIdYCBcbqqroZ/5Nzc6yUarOhAeGP6OaOP
         dZWchkiGYrFWQE5ESI3b+v1fIiMjGNHu+VNwOQKlcFYV2SyvqY3lW0JIK216w63cwaYE
         Rj/svC84A+tC05vgSjxp3W0xRYrne3+aPtarm0OirmcrYom+Vdk52ildx89ICpXJzeIY
         4kcAmd2n2JcwkrUGltkLA/2zEt9cYiYAUFFpmRU4n94CBxNCec3kDVla7Sz1QbyE/5R9
         +NYA==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20251104; t=1776091328; x=1776696128;
        h=content-transfer-encoding:in-reply-to:content-language:references
         :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;
        bh=UWQxix9XwXVkNsiA1TuF2NjYBhksRbXlSi5koezn3RU=;
        b=s+v/6kVCtteXmPXdb7fIde3diCXWxOV1actbP5BUxnXP2TfzsUIImdNrtJlcji0HS7
         lKXOZJmuoOKn/+2/lknbmS+FU6UIeCC+1SzYBZx5RycKSGb6b/j7tDZ1vq9aQ8xtd3I4
         crI9euPrGAJshZbrJhjcjWieQz2NOPo8/+89YbLncgAfJgnLAG9LxQJribbq7WyqsSkw
         uyMOCLWvv6djlf0mWyhL7Ni4MFPdzvtooYfC9u0mE54sJ0U+DcuR/5kyt0FEeOXCIxZF
         1YMGgh0FfYkk8lJvbiye2daJunoelIw3zMKc9YczVha99Wl+4gn7RX+xzglXOqdmvuGU
         rjrQ==
X-Forwarded-Encrypted: i=1; AFNElJ9Zfe09FfOohgdEDJJHUDRlUZfpPHY/vZqDE9y/6bZlonVHocdyFfnqoGkuwJ2lhRj8dJ+5Y9oTvvI=@lists.xenproject.org
X-Gm-Message-State: AOJu0YxpiGiVEc9QyvurU7em5d/zJomW2jCLpK/zy7dnE26ma3akXmWA
	9sL7d3UmcZiGKZfdWinWz7017a5cpC4hwve3SqH1+6DGd3WylGcugEPN
X-Gm-Gg: AeBDies1gc2Rin6Dd/3Zav6HkD3SkOfXzKU00h/RCaskoPM37JPtQjFPfviayhYnbiI
	eioMgwsBQvR6olaSxBzwKNwBS61EUp83zhKgESxp3rv17rDoCJib2SLYOyEJ4Wpjwe8tNnQ03Qp
	JpJb1uKuqDcVgOdSG0DuDf3syyquMPbr3zAniJOTu43HPOC2WvX18UQe+NnS9ocQVbkvUTBDkUQ
	LsBZ6s8ab+ecS3TN7iIUO34DX7E+2i0M6bTxy9P1LRMir3sN64jfskGRUnTgzmLGEa03MXwXsFP
	DTjJVW4wqkPZvbG3WDcjL7NRt4RS9cRNM3LYonT0Xu0YB+Nl9yZsS5h1rf+87FAym0TrDc5Z1BV
	Z76IQf0FWM99inJ0VMNmiwRm/5jdj8uc8A5xDDtH4rvPpduVf2gd1Z4yGd3FHourpxLE8IW00nh
	w6MUfJAbwjOIBcqOdO5HsdxFnURifyEi5Gv+msFQ/tmxYfvFZEAI3dhfHxbU7SSY3zL4xnabo7T
	FY=
X-Received: by 2002:a5d:4b92:0:b0:43d:7ea8:62e6 with SMTP id ffacd0b85a97d-43d7ea86390mr134899f8f.46.1776091328040;
        Mon, 13 Apr 2026 07:42:08 -0700 (PDT)
Message-ID: <4b977410-8d24-41c3-9c83-7d95637ddea3@gmail.com>
Date: Mon, 13 Apr 2026 16:42:06 +0200
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
From: Oleksii Kurochko <oleksii.kurochko@gmail.com>
Subject: Re: [PATCH v1 13/27] xen/riscv: add basic VGEIN management for AIA
 guests
To: Jan Beulich <jbeulich@suse.com>
Cc: Romain Caritey <Romain.Caritey@microchip.com>,
 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.pau@citrix.com>,
 Stefano Stabellini <sstabellini@kernel.org>, xen-devel@lists.xenproject.org
References: <cover.1773157782.git.oleksii.kurochko@gmail.com>
 <f358325514c91c540e0edf992ca51414a1964fe0.1773157782.git.oleksii.kurochko@gmail.com>
 <09fed304-685c-46a9-9159-72baa1721224@suse.com>
Content-Language: en-US
In-Reply-To: <09fed304-685c-46a9-9159-72baa1721224@suse.com>
Content-Type: text/plain; charset=UTF-8; format=flowed
Content-Transfer-Encoding: 7bit
X-purgate-ID: tlsNG-33051d/1776091328-4251AC9A-0314A617/10/73395122804
X-purgate-type: spam
X-purgate-size: 11852



On 4/2/26 12:03 PM, Jan Beulich wrote:
> On 10.03.2026 18:08, Oleksii Kurochko wrote:
>> AIA provides a hardware-accelerated mechanism for delivering external
>> interrupts to domains via "guest interrupt files" located in IMSIC.
>> A single physical hart can implement multiple such files (up to GEILEN),
>> allowing several virtual harts to receive interrupts directly from hardware
> 
> Isn't use of such an optimization coming prematurely? Shouldn't this series
> focus on getting basic functionality in place?

At the moment, we don't support only APLIC for guest interrupts as it 
will require trap-and-emulation approach, so just from the start it was 
decided to go with APLIC+IMSIC (IMSIC here as it only one interrupt 
controller which exist and support VGEIN stuff at the momemnt) approach 
and then when it will be needed back to only the case when APLIC is 
supported.

Maybe, it was better to introduce in patch series where a lauching of 
domain actually happens.

Considering that you've already made a review, I prefer then to have 
this patch part of this patch series.

> 
>> --- a/xen/arch/riscv/aia.c
>> +++ b/xen/arch/riscv/aia.c
>> @@ -1,11 +1,24 @@
>>   /* SPDX-License-Identifier: GPL-2.0-only */
>>   
>> +#include <xen/bitmap.h>
>>   #include <xen/errno.h>
>>   #include <xen/init.h>
>>   #include <xen/sections.h>
>> +#include <xen/sched.h>
>> +#include <xen/spinlock.h>
>>   #include <xen/types.h>
>> +#include <xen/xvmalloc.h>
>>   
>> +#include <asm/aia.h>
>>   #include <asm/cpufeature.h>
>> +#include <asm/csr.h>
>> +#include <asm/current.h>
>> +
>> +/*
>> + * Bitmap for each physical cpus to detect which VS (guest)
>> + * interrupt file id was used.
>> + */
>> +DEFINE_PER_CPU(struct vgein_bmp, vgein_bmp);
> 
> Why can this not be static? All management looks to be in this same file.

It could be, it couldn't be before when I have vgein/hgei interrupt 
handler in traps but after I decided to move it to aia.c, it looks like 
it is fine to make it static.

> 
>> @@ -14,12 +27,109 @@ bool aia_available(void)
>>       return is_aia_available;
>>   }
>>   
>> +int __init vgein_init(unsigned int cpu)
> 
> If this needs invoking once per CPU being brought up, it can't be __init.

Yes, it is going to be called inside the secondary CPU bring-up function.

__init sections are removed much later, after all CPUs are brought up, 
so it looks like that at the moment when secondary CPUs are being 
brought up, __init still exists and can be called.

> 
> Also - static?

It isn't static because it will be called inside the secondary CPU 
bring-up function.

> 
>> +{
>> +    struct vgein_bmp *vgein = &per_cpu(vgein_bmp, cpu);
>> +
>> +    csr_write(CSR_HGEIE, -1UL);
>> +    vgein->geilen = flsl(csr_read(CSR_HGEIE));
>> +    csr_write(CSR_HGEIE, 0);
>> +    if ( vgein->geilen )
>> +        vgein->geilen--;
> 
> I don't understand this. The "len" in "geilen" stands for "length", I suppose,
> i.e. the number of bits. Hmm, the spec itself is inconsistent: "The number of
> bits implemented in hgeip and hgeie for guest external interrupts is UNSPECIFIED
> and may be zero. This number is known as GEILEN." This may or may not include
> bit 0 (which is implemented, but r/o zero). Then saying "Hence, if GEILEN is
> nonzero, bits GEILEN:1 shall be writable in ..." suggests 0 isn't included, but
> that's not unambiguous.

But they explicitly wrote that: The least-significant bits are 
implemented first, apart from bit 0. So bit 0 is explicitly excluded.

> 
> Anyway, may I suggest
> 
>      vgein->geilen = flsl(csr_read(CSR_HGEIE) >> 1);
> 
> instead?

It would be really better.

> 
>> +    BUG_ON(!vgein->geilen);
> 
> You can return (an error, but see the respective remark on the earlier patch),
> no need to crash the system. That return may want to come after the printk()
> below, though.
> 
>> +    printk("cpu%d.geilen=%d\n", cpu, vgein->geilen);
> 
> As before - %u please with unsigned int.
> 
>> +    if ( !vgein->bmp )
> 
> Why would this check be needed?
> 
>> +    {
>> +        vgein->bmp = xvzalloc_array(unsigned long, BITS_TO_LONGS(vgein->geilen));
> 
> With the determination above, isn't BITS_TO_LONGS(vgein->geilen) ==
> BITS_PER_LONG in all cases? Surely you don't mean to runtime-allocate
> space for a single unsigned long? So I wonder is the dimension used
> is wrong.

Hm, I can't remember why I did so. You are right there is no any sense 
to allocate a single unsinged long in runtime...

> 
> If it isn't, dynamically allocating the owners array may be more
> useful, as (on RV64) occupies a fixed 512 bytes right now.

Agree, it make sense it will be much less memory if to allocate like:
     vgein->owners = xvzalloc_array(struct vcpu *, vgein->geilen);
     if ( !vgein->owners )
         return -ENOMEM;

as maximum value of vgein->geilen is 63.

> 
>> +        if ( !vgein->bmp )
>> +            return -ENOMEM;
>> +    }
>> +
>> +    spin_lock_init(&vgein->lock);
>> +
>> +    return 0;
>> +}
>> +
>>   int __init aia_init(void)
>>   {
>> +    int rc = 0;
>> +
>>       if ( !riscv_isa_extension_available(NULL, RISCV_ISA_EXT_ssaia) )
>>           return -ENODEV;
>>   
>> +    if ( (rc = vgein_init(0)) )
>> +        return rc;
>> +
>>       is_aia_available = true;
> 
> Ah, this answers a question of mine on the earlier patch: This boolean
> indicates more than just the extension being available. But why does
> the description there not simply say so? How am I as a reviewer supposed
> to know?

I relised that it is worse to mention that only when saw your reply in 
the earlier patch, I will update the commit message for convience.

> 
>> -    return 0;
>> +    return rc;
>> +}
>> +
>> +unsigned int vgein_assign(struct vcpu *v)
>> +{
>> +    unsigned int vgein_id;
>> +
> 
> Seemingly undue blank line.
> 
>> +    struct vgein_bmp *vgein_bmp = &per_cpu(vgein_bmp, v->processor);
>> +    unsigned long *bmp = vgein_bmp->bmp;
>> +    unsigned long flags;
>> +
>> +    spin_lock_irqsave(&vgein_bmp->lock, flags);
>> +    vgein_id = bitmap_weight(bmp, vgein_bmp->geilen);
> 
> How can the ID to use be the number of bits which are set? This only works
> if all set bits are contiguous at the bottom.

Oh, it is really wrong. find_first_zero_bit() should be instead or
vgein_id = find_next_zero_bit(bmp, vgein_bmp->geilen + 1, 1);

> 
>> +    /*
>> +     * All vCPU guest interrupt files are used and we don't support a case
>> +     * when number of vCPU on 1 pCPU is bigger then geilen.
>> +     */
> 
> This wants checking in vgein_init() then. CPUs (beyond the boot one)
> violating this should not be brought online.

It'll be nice. But we can't know how many vCPUs will be ran on pCPU when 
vgein_init() is executed.

> 
>> +    ASSERT(vgein_id < vgein_bmp->geilen);
> 
> What if not bit is available? By asserting, you assume the caller will not
> call here when no ID is available.

It is just a temporary ASSERT() (as we don't support software guest 
interrupt files) because in general it is fine if there is no bit 
available, it will just mean that that no physical hardware guest 
interrupt file is assigned to the virtual hart, and software-based 
emulation (a "software file") must be used to handle guest external 
interrupts.

Will it be better to return 0 now here and just don't create a vCPU
on ...

  Yet there is no caller of this function,
> so how can one verify whether this assertion is appropriate?

... the caller side when an assignment is expected to be happen?


> 
>> +    bitmap_set(bmp, vgein_id, 1);
> 
> __set_bit()?

I thought that it will be fine to use for bmp, bitmap_* functions(). 
__set_bit is what is called inside bitmap_set().


> 
>> +    spin_unlock_irqrestore(&vgein_bmp->lock, flags);
>> +
>> +    /*
>> +     * The vgein_id shouldn't be zero, as it will indicate that no guest
>> +     * external interrupt source is selected for VS-level external interrupts
>> +     * according to RISC-V priviliged spec:
>> +     *   8.2.1 Hypervisor Status Register (hstatus) in RISC-V priviliged spec:
> 
> Please avoid section numbers in such references. The section of this name
> in the version I'm looking at is 21.2.1.
> 
>> +     *   The VGEIN (Virtual Guest External Interrupt Number) field selects
>> +     *   a guest external interrupt source for VS-level external interrupts.
>> +     *   VGEIN is a WLRL field that must be able to hold values between zero
>> +     *   and the maximum guest external interrupt number (known as GEILEN),
>> +     *   inclusive.
>> +     *   When VGEIN=0, no guest external interrupt source is selected for
>> +     *   VS-level external interrupts.
>> +     */
>> +    vgein_id++;
> 
> Related to my comment regarding GEILEN, this shouldn't be necessary. Keep
> bits in their natural positions, and simply avoid using bit 0 (either by
> setting it during init and then never clearing it, or by starting the
> scan for clear bits at bit 1).
> 
>> +#ifdef VGEIN_DEBUG
>> +    printk("%s: %pv: vgein_id(%u), xen_cpu%d_bmp=%#lx\n",
>> +           __func__, v, vgein_id, v->processor, *bmp);
>> +#endif
>> +
>> +    vcpu_guest_cpu_user_regs(v)->hstatus &= ~HSTATUS_VGEIN;
>> +    vcpu_guest_cpu_user_regs(v)->hstatus |=
>> +        MASK_INSR(vgein_id, HSTATUS_VGEIN);
> 
> When is this function going to be invoked? (As before, not knowing this is
> one of the problems with introducing functions with no callers.)

vgein_assign() function is going to be invoked during the call of 
arch_vcpu_create().

I also thought to make vgein_assign() just work with vgein_id and just 
return vgein_id and fill v->hstatus on the caller side. It looks a 
little bit cleaner from some point of view.
It is still need to return vgein_id as it is needed for IMSIC's guest 
interrupt file address calculation.

> 
>> +    return vgein_id;
>> +}
>> +
>> +void vgein_release(struct vcpu *v, unsigned int vgen_id)
>> +{
>> +    unsigned long flags;
>> +
> 
> Another seemingly stray blank line.
> 
>> +    struct vgein_bmp *vgein_bmp = &per_cpu(vgein_bmp, v->processor);
>> +
>> +    spin_lock_irqsave(&vgein_bmp->lock, flags);
>> +    bitmap_clear(vgein_bmp->bmp, vgen_id - 1, 1);
> 
> __clear_bit()?
> 

The same as with bitmap_set() as ->bmp is bitmap I expect that 
bitmap_*() functions should be used. But just to avoid extra if() inside 
bitmap_clear(), I will use __clear_bit().

>> +    spin_unlock_irqrestore(&vgein_bmp->lock, flags);
>> +
>> +#ifdef VGEIN_DEBUG
>> +    printk("%s: vgein_id(%u), xen_cpu%d_bmp=%#lx\n",
>> +           __func__, vgen_id, v->processor, *vgein_bmp->bmp);
> 
> I can't spot a difference from the message in vgein_assign(). How is one
> to distinguish the two in a log?

By function name which is the first argument (__func__).

> 
>> --- a/xen/arch/riscv/include/asm/aia.h
>> +++ b/xen/arch/riscv/include/asm/aia.h
>> @@ -3,8 +3,26 @@
>>   #ifndef ASM__RISCV__AIA_H
>>   #define ASM__RISCV__AIA_H
>>   
>> +#include <xen/percpu.h>
>> +#include <xen/spinlock.h>
>> +
>> +struct vcpu;
>> +
>> +struct vgein_bmp {
> 
> What does the _bmp suffix indicate here? There's ...
> 
>> +    unsigned long *bmp;
> 
> ... a bitmap field, yes, but ...
> 
>> +    spinlock_t lock;
>> +    struct vcpu *owners[BITS_PER_LONG];
>> +    unsigned int geilen;
>> +};
> 
> ... the structure as a whole has quite a bit more.

Agree, there is no any sense for _bmp. It would be better to use _ctrl.

Also, I will move this struct to aia.c. Then it also make sense to 
rename vgein_vmp variable just to vgein.

Thanks.

~ Oleksii


From xen-devel-bounces@lists.xenproject.org Mon Apr 13 14:42:20 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 13 Apr 2026 14:42:20 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1281211.1564231 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wCIUW-0000QU-17; Mon, 13 Apr 2026 14:42:20 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1281211.1564231; Mon, 13 Apr 2026 14:42: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 1wCIUV-0000QK-U7; Mon, 13 Apr 2026 14:42:19 +0000
Received: by outflank-mailman (input) for mailman id 1281211;
 Mon, 13 Apr 2026 14:42:18 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <Luca.Fancellu@arm.com>) id 1wCIUU-0000Po-On
 for xen-devel@lists.xenproject.org; Mon, 13 Apr 2026 14:42:18 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wCIUU-007xxE-44
 for xen-devel@lists.xenproject.org; Mon, 13 Apr 2026 16:42:18 +0200
Received: from [10.42.69.6] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <Luca.Fancellu@arm.com>)
 id 69dd00c3-2eae-0a2a0a5409dd-0a2a4506af1c-16
 for <xen-devel@lists.xenproject.org>; Mon, 13 Apr 2026 16:42:17 +0200
Received: from [40.107.130.60]
 (helo=MRWPR03CU001.outbound.protection.outlook.com)
 by tlsNG-16d1c6.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.0)
 (envelope-from <Luca.Fancellu@arm.com>)
 id 69dd00c9-0df0-0a2a45060019-286b823c2dd2-3
 for <xen-devel@lists.xenproject.org>; Mon, 13 Apr 2026 16:42:17 +0200
Received: from DUZPR01CA0006.eurprd01.prod.exchangelabs.com
 (2603:10a6:10:3c3::13) by DB9PR08MB7536.eurprd08.prod.outlook.com
 (2603:10a6:10:304::6) with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9769.48; Mon, 13 Apr
 2026 14:42:15 +0000
Received: from DU2PEPF00028D09.eurprd03.prod.outlook.com
 (2603:10a6:10:3c3:cafe::8b) by DUZPR01CA0006.outlook.office365.com
 (2603:10a6:10:3c3::13) with Microsoft SMTP Server (version=TLS1_3,
 cipher=TLS_AES_256_GCM_SHA384) id 15.20.9769.48 via Frontend Transport; Mon,
 13 Apr 2026 14:42:15 +0000
Received: from outbound-uk1.az.dlp.m.darktrace.com (4.158.2.129) by
 DU2PEPF00028D09.mail.protection.outlook.com (10.167.242.169) with Microsoft
 SMTP Server (version=TLS1_3, cipher=TLS_AES_256_GCM_SHA384) id 15.20.9769.17
 via Frontend Transport; Mon, 13 Apr 2026 14:42:15 +0000
Received: from DU2PR08MB7272.eurprd08.prod.outlook.com (2603:10a6:10:2d7::16)
 by PA4PR08MB6142.eurprd08.prod.outlook.com (2603:10a6:102:ee::15)
 with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9769.48; Mon, 13 Apr
 2026 14:41:13 +0000
Received: from DU2PR08MB7272.eurprd08.prod.outlook.com
 ([fe80::5d34:206f:373:a323]) by DU2PR08MB7272.eurprd08.prod.outlook.com
 ([fe80::5d34:206f:373:a323%6]) with mapi id 15.20.9769.046; Mon, 13 Apr 2026
 14:41: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=arm.com header.i="@arm.com" header.h="From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck"; dkim=pass header.s=selector1 header.d=arm.com header.i="@arm.com" header.h="From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck"
ARC-Seal: i=2; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=pass;
 b=jKJayHNtNkMzj04pay72zX2n/AZzuwPOCpmXEQTpB0nQL3KgrLq8pkrD9WTS8akst3j/XMGNYtrCvDo/Vd5cHVznXNBFA7NGiKIWDLYp6taCQfJYZHVr4ai6vFaMahUzmH8c0Y+G1mrsHRCSZEWd6x4gDha3FFiX1U+RfFSNBHOUadP4dAuOxP7qD7tRaIkue6lewWsIOQJivMyeGi+cAwic3qazK+Ro4i+D2Vx4GCd3qOvs3iCdVogKq7pqCos/Cec4SpQ/mM33/9kI1WzhDVzWov5R9ZCDln7Z2WiQ6RI0WATnitIIrnwAONH6k+sKE+pSmiPzCrxxj9mnFvAgWA==
ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com;
 s=arcselector10001;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1;
 bh=MtPTZHVQFJOOxgS79tzBM52TNf/PIT4q/fs5VXC4URQ=;
 b=xrz/PXXgPbodSS3nGzv/oOR5PF8BTNkhlTWLjhid06svTF6Y/MyPa8JmqubfnRZXFEwziLiAGDMHjWGm2af71M9JpUvMnSqfZNp4eHE5Ukwf5qZPkefmJungKEIUWwRw5qQ9BkzHeMWdXhvu0T3Kx7ABr+AqaKb3QxNNGaZf8fRo5T2vJcz6oKyF3n1e3LZONaXSTuhHsW8vjc3cEdCXv0KnYyQKdRu7m+9AOpuPNMj50krjQ9GRU13xJ8q+ckHmuHV6secAPGerDBUA5hipTuAsmthFJUxuziFijJ+XuW76lXhE81dzENGh2oIWpdSgiKtifPy3ixywOeoqBedgQw==
ARC-Authentication-Results: i=2; mx.microsoft.com 1; spf=pass (sender ip is
 4.158.2.129) smtp.rcpttodomain=epam.com smtp.mailfrom=arm.com; dmarc=pass
 (p=none sp=none pct=100) action=none header.from=arm.com; dkim=pass
 (signature was verified) header.d=arm.com; arc=pass (0 oda=1 ltdi=1
 spf=[1,1,smtp.mailfrom=arm.com] dkim=[1,1,header.d=arm.com]
 dmarc=[1,1,header.from=arm.com])
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=arm.com; s=selector1;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck;
 bh=MtPTZHVQFJOOxgS79tzBM52TNf/PIT4q/fs5VXC4URQ=;
 b=Ad4bdztB+6RSMUiB5G5RSF0BCmoeh4mF13oR89PpLrEO1NZFapR8CGBBRIIU0/IFL7DcCcwwlbaky1x7vyXSEX0VtbRosX4JhllOIBl7wOzMz/BSLesxIOFh6tzq+1cxTFE3DypABHrLDbiPckZQ+cXO8CNBSiOdCzTRNxPRtv0=
X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 4.158.2.129)
 smtp.mailfrom=arm.com; dkim=pass (signature was verified)
 header.d=arm.com;dmarc=pass action=none header.from=arm.com;
Received-SPF: Pass (protection.outlook.com: domain of arm.com designates
 4.158.2.129 as permitted sender) receiver=protection.outlook.com;
 client-ip=4.158.2.129; helo=outbound-uk1.az.dlp.m.darktrace.com; pr=C
ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none;
 b=VZSUgcp6lqR5nBUD3uoluVJJpWGRKHvT9WGBsbTQAdTooiYqgerR+8b01AobpzM+oBYjgpHC4z+jnmJITtvaI0dg6EEWKlogRoIawDlGEwRqI8Ok5J95HECXMde8UfLWKxbGDDkJ3h/grRriFm1Ewft2reIVspDey+NC3v7vXobEnvKOo4ZulH1FqsXqSzPtWkJTO/vbDfmsCdUf0Yrj8kJ5s+djiXinegxUU+3GsgWQIDuy8pwegyEegW/4HWV3XVigWGDDEkR1HCWx5Tit9knxGe8zlZX5aZuzv+8Em1875V19PQOADGsVPE+oCLNftwAL2rn4cuTSk/hLzMiKoA==
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com;
 s=arcselector10001;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1;
 bh=MtPTZHVQFJOOxgS79tzBM52TNf/PIT4q/fs5VXC4URQ=;
 b=oM8DBLMH0UcHk0UBfHHawUlYwMAnoZZs/ODEqVUNCHZA9gRpJ1lW0rquZmqhBLaIHG3CcWt5HyL8meAQuR1A1Rq+J/9vnLyBPsLyPxK2RM9gWWZinJ4XLuRJyNt2bldLNJnaeFTTNDXV/GIdeNXz7JPOvnV9kXx1nl9kVNIypQxpJJ2BkucYA+C7n8uYn63IlDriY2gWZbQ2iU18QkftPfU1y7GZAYcERLtn+Ixn7CrNfXwBsM2JAA2Ca41sslg+trVvFlikOvXMmo2A3wRuE4+4PQIcd5/iC5wEPQiSMWX5uV7332NAFyYoKX5pwmpvlUaFU/Zupu5WegHYoKhP8g==
ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass
 smtp.mailfrom=arm.com; dmarc=pass action=none header.from=arm.com; dkim=pass
 header.d=arm.com; arc=none
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=arm.com; s=selector1;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck;
 bh=MtPTZHVQFJOOxgS79tzBM52TNf/PIT4q/fs5VXC4URQ=;
 b=Ad4bdztB+6RSMUiB5G5RSF0BCmoeh4mF13oR89PpLrEO1NZFapR8CGBBRIIU0/IFL7DcCcwwlbaky1x7vyXSEX0VtbRosX4JhllOIBl7wOzMz/BSLesxIOFh6tzq+1cxTFE3DypABHrLDbiPckZQ+cXO8CNBSiOdCzTRNxPRtv0=
From: Luca Fancellu <Luca.Fancellu@arm.com>
To: Milan Djokic <milan_djokic@epam.com>
CC: "xen-devel@lists.xenproject.org" <xen-devel@lists.xenproject.org>, Rahul
 Singh <Rahul.Singh@arm.com>, Anthony PERARD <anthony.perard@vates.tech>,
	Juergen Gross <jgross@suse.com>
Subject: Re: [PATCH v3 19/23] libxl/arm: vIOMMU: Modify the partial device
 tree for iommus
Thread-Topic: [PATCH v3 19/23] libxl/arm: vIOMMU: Modify the partial device
 tree for iommus
Thread-Index: AQHcy1OBPTTxiIivxUiCAbiXnDP/YQ==
Date: Mon, 13 Apr 2026 14:41:13 +0000
Message-ID: <451B2915-2A12-435D-A3E4-7450ACA0DD64@arm.com>
References: <cover.1774918270.git.milan_djokic@epam.com>
 <801f1c90347d66ce4427b9c5986809a781d94081.1774918270.git.milan_djokic@epam.com>
In-Reply-To:
 <801f1c90347d66ce4427b9c5986809a781d94081.1774918270.git.milan_djokic@epam.com>
Accept-Language: en-GB, en-US
Content-Language: en-US
X-MS-Has-Attach:
X-MS-TNEF-Correlator:
x-mailer: Apple Mail (2.3826.700.81.1.6)
Authentication-Results-Original: dkim=none (message not signed)
 header.d=none;dmarc=none action=none header.from=arm.com;
x-ms-traffictypediagnostic:
	DU2PR08MB7272:EE_|PA4PR08MB6142:EE_|DU2PEPF00028D09:EE_|DB9PR08MB7536:EE_
X-MS-Office365-Filtering-Correlation-Id: 27418ce0-b937-43ab-8a2a-08de996adb28
x-checkrecipientrouted: true
nodisclaimer: true
X-MS-Exchange-SenderADCheck: 1
X-MS-Exchange-AntiSpam-Relay: 0
X-Microsoft-Antispam-Untrusted:
 BCL:0;ARA:13230040|366016|1800799024|376014|38070700021|18002099003|56012099003|22082099003;
X-Microsoft-Antispam-Message-Info-Original:
 6nMypYdApnWlGI4WohlXvocRwNxIlJ7vQ93S29PdkqsAf6FjMy9i37523SvXUklNyrJWkW8h8wfA7AIIpr06N8fozWD2B7BMEC0CsDvA8iI0Ru5mYJf3Xr8waHULBc1LcgF5d5ULr/QXvGZHOpCxKeI/u2vT3lPvNVEXQPOrX7kr1IhoFjlSZXmK75w+D1Le18Tv6fHMH/5Y/vwKe2YACbIDeCYG3VFdWFp4CF8svvlfAiXYbX55xLsuMqjLPnK6URBfMXLVK/+H0CsuK6dwFj97qtd7JmWG5hS7J96Db1w7D2ezlTZDJ51B7TUjk/8FhHq1Y6JK5/4qS3JnvTZ6XcQdvEi9IPLZ3nfqqReXbbUNC1Vgex1tH8wKz77PF9MKGKMgLShKSSyZ8W3ZMVyA6K+EfeZDCdPxyKsA/96wPLiaNfJTCES8w7zE5H8EMN1nu5/ZDorTDVWqRtMqvY1LQLD1WGUXK+FBE4pdFN/YfJYyFqTTXePpmyMt3Fy9qrJ/sOszkpv/z0FEUyv+W/tpoUBvYBbCzR3XnJzhqXV/vCNdYFHSJWLLAvyGAC7m8pviYEcodfbl8qlHWJUznJmZrQCw4PDH3MiAo3Gyg3isok6b2fEvaFRUoy0U6i/D7iVbo/PkTRvyLtNm9wQGiavtagKW/feOw7TtAy9ilgaBEF7lT94xejpu4BKPzBFOO0MNu30OqSU9fprgx9hCs0TH77wiFm4ogVDHyR/qPk1kMrjs33tudmbSQZdp6UHfjg4yxVbykbHwzj6AqhR6btAcNr5WK04W5ideXFsxWW2Hj7Q=
X-Forefront-Antispam-Report-Untrusted:
 CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:DU2PR08MB7272.eurprd08.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(366016)(1800799024)(376014)(38070700021)(18002099003)(56012099003)(22082099003);DIR:OUT;SFP:1101;
Content-Type: text/plain; charset="us-ascii"
Content-ID: <28B7ABE7D069014E82B1BE9123E0F6C3@eurprd08.prod.outlook.com>
Content-Transfer-Encoding: quoted-printable
MIME-Version: 1.0
X-Exchange-RoutingPolicyChecked:
 C4bzQGx90OfQ5Xi1o9/4ITeoK0WTr055ZLZZOL7bBZLD2znAx8XqDWKCbh/MJBeD8KQdVTnuyCA88TVqdQameehcJ9fk8p7pFua34DHasNlFbjJ79oX/QRnAIsUPb2ykvvjyA0V0mkVBNZs2PCWtPubCWv4hkmU27ObYt+PXdDJiusJmA4vaqaB+A73Ag9dFi+ZMZUme5GE0uBDNQSH2hYk0bRMn/VLVR1b5Hu5snz0aVDFdy8iwFAP17amuJC2yLX5WVJX4j/PMWUCSZIgd46Gnm4tLIykuhQ/y0Lqme1lOS6PER2li2n2GXroQ3H94KMKS2c8SHanOueNGi6ybqQ==
X-MS-Exchange-Transport-CrossTenantHeadersStamped: PA4PR08MB6142
X-EOPAttributedMessage: 0
X-MS-Exchange-Transport-CrossTenantHeadersStripped:
 DU2PEPF00028D09.eurprd03.prod.outlook.com
X-MS-PublicTrafficType: Email
X-MS-Office365-Filtering-Correlation-Id-Prvs:
	f822d434-1526-4383-ccef-08de996ab60f
X-Microsoft-Antispam:
	BCL:0;ARA:13230040|35042699022|36860700016|14060799003|376014|82310400026|1800799024|22082099003|18002099003|56012099003;
X-Microsoft-Antispam-Message-Info:
	ENFsH1sFwBvH5/3iX5fnTS8EMqRShC2vG8T40lNtSPUmhD9Tw38hEpppU+bFmy/gS7R3tjY6RgMQyUSPq3r/OWzBUNBsUayRkSX7Ym2kcN135sxGiWiCVHShFxMLDNLmovs/DXxqmXzm0ZumY1z0LILIb0dK44Ykden2rLUl0mq1qGpkFFxvz7ORZyg01Pk749v1/99JZHZK56DTrMLgBSd13laTQPxHO6HItm6pHLFmjwOulfZirrFb5UuIza0S99kvrKGWYXLAC0B2MllEnBcSVbrZFTEwmFPKiNPv4gkZzV/rsUA5WGQm3P3rRbdl/oJVITsVTp62E6d2WH2VruDFjsCMzdzyBd7nFI1FCpp+P7YBV12NbEIOQznmUJ1KBpke9HZ5cZwETpwPFQtCxHehOQp7XP70q9ElfGcxneYMzgy8SgontKTaSsVcG7ChgPKb/K0arqIRjv0LReUKv9mOF2cnQvtxfSvb07hd7DRkNklmeJSAsMQqFEkZFOScdfLMl3QixjYzVRm5XkPkzfub0ixW3cLTWvr8yHyMk5qR2bXSErnkSX6Wb+vRbaeKs6HuVQrTN8jWKlSsH/g8OS7/rSPe7i9S3Kwr3sEQQIqubcJAu/vl6jTew0jGUEhIw8SlUUdXb39CYbM7DlfGtd7gT64hKZCI3+k/krEbGccHok8gZjBhXF5SVUIH5Qulw208VUknOSCqGarp9xt6np3VaZLsPj7vaMt6fpLoOpNDC+7gDiSZWbisyZg8kbndKShTwEYU6D2heA3HRMFilQ==
X-Forefront-Antispam-Report:
	CIP:4.158.2.129;CTRY:GB;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:outbound-uk1.az.dlp.m.darktrace.com;PTR:InfoDomainNonexistent;CAT:NONE;SFS:(13230040)(35042699022)(36860700016)(14060799003)(376014)(82310400026)(1800799024)(22082099003)(18002099003)(56012099003);DIR:OUT;SFP:1101;
X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1
X-MS-Exchange-AntiSpam-MessageData-0:
	LxdozWUekax1OH07VuZzGCcZhsKAMntzajkXFWaHSaIibLZRlhCyUqZQnL9Nw84Cva0YELLx4RdTpp5AhJh8sgZrQiwdx6rToLkt9jAvlCFnbvqnxteIREYOK4Daq+kUDkRhLl1knljHGEGN8gBZo+nSLz/ZQ9n82RSRQsS3NIiWPvWZEuHP1ARtrfnrZLzQf+gQ/yGXGGhtyY9s5n2ETjd4R5oovPtzuWHzwqe3alUsdS5YLQw2vClCCeHX5o6lf81mk6RNGn4xpzRyiNhiD7QrM1l1bHMZ4Z92eViOYljpwtLWxfhav3GVvtbENLIgX9W0sgWaLzuElovUiPdMKCp1SzohX7AsIWLg+hEOOovTFQ7rEIb1QpKSoNW7B4SLZVvXK11SAFqNs526NUkds9adzn6MBzyRcUyLHWjZxCI1tyOsWHTF1VEg6R6vE7DR
X-OriginatorOrg: arm.com
X-MS-Exchange-CrossTenant-OriginalArrivalTime: 13 Apr 2026 14:42:15.4532
 (UTC)
X-MS-Exchange-CrossTenant-Network-Message-Id: 27418ce0-b937-43ab-8a2a-08de996adb28
X-MS-Exchange-CrossTenant-Id: f34e5979-57d9-4aaa-ad4d-b122a662184d
X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=f34e5979-57d9-4aaa-ad4d-b122a662184d;Ip=[4.158.2.129];Helo=[outbound-uk1.az.dlp.m.darktrace.com]
X-MS-Exchange-CrossTenant-AuthSource:
	DU2PEPF00028D09.eurprd03.prod.outlook.com
X-MS-Exchange-CrossTenant-AuthAs: Anonymous
X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem
X-MS-Exchange-Transport-CrossTenantHeadersStamped: DB9PR08MB7536
X-purgate-ID: tlsNG-16d1c6/1776091337-AD92A3D8-E73AD811/0/0
X-purgate-type: clean
X-purgate-size: 513

Hi Milan,

> On 31 Mar 2026, at 02:52, Milan Djokic <milan_djokic@epam.com> wrote:
>=20
> From: Rahul Singh <rahul.singh@arm.com>
>=20
> 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 confiure the IOMMU

Typo s/confiure/configure/

The rest looks ok to me

with that addressed:

Reviewed-by: Luca Fancellu <luca.fancellu@arm.com>

Cheers,
Luca



From xen-devel-bounces@lists.xenproject.org Mon Apr 13 14:47:54 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 13 Apr 2026 14:47:54 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1281230.1564240 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wCIZf-0001JN-NF; Mon, 13 Apr 2026 14:47:39 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1281230.1564240; Mon, 13 Apr 2026 14:47: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 1wCIZf-0001JG-Jm; Mon, 13 Apr 2026 14:47:39 +0000
Received: by outflank-mailman (input) for mailman id 1281230;
 Mon, 13 Apr 2026 14:47:38 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <Luca.Fancellu@arm.com>) id 1wCIZd-0001JA-T7
 for xen-devel@lists.xenproject.org; Mon, 13 Apr 2026 14:47:38 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wCIZd-005Sru-0O
 for xen-devel@lists.xenproject.org; Mon, 13 Apr 2026 16:47:37 +0200
Received: from [10.42.69.5] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <Luca.Fancellu@arm.com>)
 id 69dd0206-bab6-0a2a0a5309dd-0a2a4505df80-8
 for <xen-devel@lists.xenproject.org>; Mon, 13 Apr 2026 16:47:36 +0200
Received: from [40.107.162.51]
 (helo=PA4PR04CU001.outbound.protection.outlook.com)
 by tlsNG-c201ff.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.0)
 (envelope-from <Luca.Fancellu@arm.com>)
 id 69dd0207-3760-0a2a45050019-286ba2335dd3-4
 for <xen-devel@lists.xenproject.org>; Mon, 13 Apr 2026 16:47:36 +0200
Received: from AM8P191CA0019.EURP191.PROD.OUTLOOK.COM (2603:10a6:20b:21a::24)
 by DBBPR08MB5994.eurprd08.prod.outlook.com (2603:10a6:10:20d::5) with
 Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9769.48; Mon, 13 Apr
 2026 14:47:32 +0000
Received: from AM4PEPF00027A65.eurprd04.prod.outlook.com
 (2603:10a6:20b:21a:cafe::4e) by AM8P191CA0019.outlook.office365.com
 (2603:10a6:20b:21a::24) with Microsoft SMTP Server (version=TLS1_3,
 cipher=TLS_AES_256_GCM_SHA384) id 15.20.9769.48 via Frontend Transport; Mon,
 13 Apr 2026 14:47:32 +0000
Received: from outbound-uk1.az.dlp.m.darktrace.com (4.158.2.129) by
 AM4PEPF00027A65.mail.protection.outlook.com (10.167.16.86) with Microsoft
 SMTP Server (version=TLS1_3, cipher=TLS_AES_256_GCM_SHA384) id 15.20.9769.17
 via Frontend Transport; Mon, 13 Apr 2026 14:47:32 +0000
Received: from DU2PR08MB7272.eurprd08.prod.outlook.com (2603:10a6:10:2d7::16)
 by GV2PR08MB11605.eurprd08.prod.outlook.com (2603:10a6:150:2d6::6)
 with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9769.48; Mon, 13 Apr
 2026 14:46:29 +0000
Received: from DU2PR08MB7272.eurprd08.prod.outlook.com
 ([fe80::5d34:206f:373:a323]) by DU2PR08MB7272.eurprd08.prod.outlook.com
 ([fe80::5d34:206f:373:a323%6]) with mapi id 15.20.9769.046; Mon, 13 Apr 2026
 14:46: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=arm.com header.i="@arm.com" header.h="From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck"; dkim=pass header.s=selector1 header.d=arm.com header.i="@arm.com" header.h="From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck"
ARC-Seal: i=2; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=pass;
 b=A13YOEKs/5fu+PG42GwaQnDsIYmOHBjecb03/BJN2qlozKy/f9lRBIpvfxKDhjTms6405Xs+NHkUos094fYuVvga2+/X3wv3kJB4HJJHdf0GpTnNanpT9Ly7WUUxummUPE7064uouUAyGEhJQwWFw/AKBaBkfClK9LvCsPDhadVS9ieMUjLJeje7p8gKlVhU7by0HaPuaAkLLm/6aRRQ5rtdK6eG14y/bWiUHO6r5xetRF/dp47ImS19Kv+fOMBU86iANfJ77FmJEWR9xWgKWv6BS5ifULwnnn3OFbU4OAv9E2bIOJvMXkInToPsRTf1Sz+xSAa0dFJ9TSsBokyUVw==
ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com;
 s=arcselector10001;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1;
 bh=p4FmrOpFb0e42n9yiw5GMtvYtRFntCV4vjFBnK7J5CQ=;
 b=aQJI5Jbg7YkmQHijPwK1YCbvoXqwS/bTR3Xeoi5UtmcutG2a9FM+oJoOYvBTmeR00uQcmtQJzkU3yWLRySEpeVssfOmsx8WnD8psEe+kFHjw+t1CVYTyT+u704o1wHrY/lvA95hoHr5kH5kHPejb5Voo9BG7/mHDTmg2KbGPeQsY6wzWonxgYk+3Z08NM/1QM+RycjN/R9N0joZKq/BViVLCN9QcMRxrqzTBgCSQnb3LKuD/qZcD82h5+z1cGQ1qQgm5Jp0Rv1LjLqzw8mssYvfRR5Rydrl1HqRuJUUDDhtfb2hc2NWaRBpytF3FkXxeKA2Y/TRE1eI2TMcNhaD9kg==
ARC-Authentication-Results: i=2; mx.microsoft.com 1; spf=pass (sender ip is
 4.158.2.129) smtp.rcpttodomain=epam.com smtp.mailfrom=arm.com; dmarc=pass
 (p=none sp=none pct=100) action=none header.from=arm.com; dkim=pass
 (signature was verified) header.d=arm.com; arc=pass (0 oda=1 ltdi=1
 spf=[1,1,smtp.mailfrom=arm.com] dkim=[1,1,header.d=arm.com]
 dmarc=[1,1,header.from=arm.com])
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=arm.com; s=selector1;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck;
 bh=p4FmrOpFb0e42n9yiw5GMtvYtRFntCV4vjFBnK7J5CQ=;
 b=E9Y1+5FcyYcH7WWNRNjH9A23Wkgp9rtREzhzlnyN8OrmlUxZYf+JVDfOCqHxilwbDODs2fvPnxsAzObka2wrlAveDarKCN/DvA4YBr8RYgixIFEbLCr+y2izl/hw80kZ9TqKfvABxF8A2KY5wOMCuQDQDkfNuFQIXwGS7cEKucQ=
X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 4.158.2.129)
 smtp.mailfrom=arm.com; dkim=pass (signature was verified)
 header.d=arm.com;dmarc=pass action=none header.from=arm.com;
Received-SPF: Pass (protection.outlook.com: domain of arm.com designates
 4.158.2.129 as permitted sender) receiver=protection.outlook.com;
 client-ip=4.158.2.129; helo=outbound-uk1.az.dlp.m.darktrace.com; pr=C
ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none;
 b=iDe8x30MXtO/HO8CFSN6E6vwtdqo++h+eiMWZwoCBQCPhKAdh27XRP6aJ8N0uESjMoEuVJG3p5uFcO57znDe2WSEyHwM0HO9uQI3A0Ld8X5GZ+dGZwQpZ+XeEC+RopYkfIFnj8GD449LUyjEqwvkoANzc0Jd5SryOvJ6aTI7bfkTieoSRkpS/LNsrUUM6m96PFwwGpE+OUOUE1wIHWew3bXf/2nXJNdJ7Te6a7nssyHOqku7ftg3EF482fQ0n6oNlzQlCVFo81QjivEmzne/IWBzI7UplFPo2FbzHryLtNLYefGtzZIEQTjUhKHyK04A9AAMWsNkKQzTOHohAXpyoQ==
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com;
 s=arcselector10001;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1;
 bh=p4FmrOpFb0e42n9yiw5GMtvYtRFntCV4vjFBnK7J5CQ=;
 b=PJvgHDltr+Qrr1JFZQrRl7EtxsiBi9AVw+qGDxpvxlD0BQB/uARmCYO3cBUeU708q7hjXC4BSbyLanjdjfwgSMI5tmknzvM+kAQys//mZ+eR+ZvcQxO3TspCzmpGW40pIsq7dvryz90BFBFmTsDfiqb6xTg0RERDLb20OUw6pl1OQ4lWw3b8iYevHGo0h0QTb3mV1kKsEyRS9UfAhS9XnVfVQ08HRaQZxNRp1h9rhmm9CdlK6U4CQu8WZKDHUKueKgNBkoz/xyvjGtKFSIQEDKb77UbDX1Twq3xu9CdfKsrQjRA7ls6+HRSVpD7eKfesw4dFFAna80jZLkXHKQ81Qg==
ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass
 smtp.mailfrom=arm.com; dmarc=pass action=none header.from=arm.com; dkim=pass
 header.d=arm.com; arc=none
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=arm.com; s=selector1;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck;
 bh=p4FmrOpFb0e42n9yiw5GMtvYtRFntCV4vjFBnK7J5CQ=;
 b=E9Y1+5FcyYcH7WWNRNjH9A23Wkgp9rtREzhzlnyN8OrmlUxZYf+JVDfOCqHxilwbDODs2fvPnxsAzObka2wrlAveDarKCN/DvA4YBr8RYgixIFEbLCr+y2izl/hw80kZ9TqKfvABxF8A2KY5wOMCuQDQDkfNuFQIXwGS7cEKucQ=
From: Luca Fancellu <Luca.Fancellu@arm.com>
To: Milan Djokic <milan_djokic@epam.com>
CC: "xen-devel@lists.xenproject.org" <xen-devel@lists.xenproject.org>, 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>
Subject: Re: [PATCH v3 20/23] xen/arm: vIOMMU: Modify the partial device tree
 for dom0less
Thread-Topic: [PATCH v3 20/23] xen/arm: vIOMMU: Modify the partial device tree
 for dom0less
Thread-Index: AQHcy1RPOVtQoBcTykuFEWgWmPGPfw==
Date: Mon, 13 Apr 2026 14:46:29 +0000
Message-ID: <F81332F5-7278-489E-BB76-4BDEEB2BA727@arm.com>
References: <cover.1774918270.git.milan_djokic@epam.com>
 <2de0eddeb862a7d9f0fb55c7dca1152591d71404.1774918270.git.milan_djokic@epam.com>
In-Reply-To:
 <2de0eddeb862a7d9f0fb55c7dca1152591d71404.1774918270.git.milan_djokic@epam.com>
Accept-Language: en-GB, en-US
Content-Language: en-US
X-MS-Has-Attach:
X-MS-TNEF-Correlator:
x-mailer: Apple Mail (2.3826.700.81.1.6)
Authentication-Results-Original: dkim=none (message not signed)
 header.d=none;dmarc=none action=none header.from=arm.com;
x-ms-traffictypediagnostic:
	DU2PR08MB7272:EE_|GV2PR08MB11605:EE_|AM4PEPF00027A65:EE_|DBBPR08MB5994:EE_
X-MS-Office365-Filtering-Correlation-Id: bcff1009-62e3-4384-45c6-08de996b984a
x-checkrecipientrouted: true
nodisclaimer: true
X-MS-Exchange-SenderADCheck: 1
X-MS-Exchange-AntiSpam-Relay: 0
X-Microsoft-Antispam-Untrusted:
 BCL:0;ARA:13230040|376014|366016|1800799024|38070700021|56012099003|22082099003|18002099003;
X-Microsoft-Antispam-Message-Info-Original:
 0kO2crIU1Ejio8ZX9ziZyhISCuhHieBLfitmAC2U16NH/lKa28NqxB/pk6im3w4IQKHP3RKyuHZPDKkHP4+sQWY5Axx5qhhFEQ2krArpTOdS7JQ4CWSlQCoHuKsbFufM9xaG+RINmXn3JMpxiMm2BDz0q0EGCO5gw5ChoMRKXv4zt1qRsmqeSH+fiqUxQ9iUPUv1zO4mx0s9SMRnBP5GGxkcNhTe8mCjry4HfFFeoHAVsJaGei76EJCtnDtYvgFHVsEdHQJ3jm74/Z8hC/BbFbKlo2vnlgMNn85krFxJHgJbGHVet7pJOKJnxTqxydRLMmkE38pXDmM7u0okc9O239tIUSwtIyH6//8VGb1bUMHMEchM5apV7qlaAEMbx8KjmH7jR/eae9Fb9IzDFuZFsVo6qaMNlvhUv5DkRlQ0E9pmHYdmm3v903BtPDLx5KjEMSd/Ksn0DCWwtfRtZtcrOXsZFrUySU3s1q7A2wdP0xvefYFGeSKijjB0GFjyNaNL96E5JZxhzfmbjKb+MCfIV/xhlWsw91VyA8YeIDT9KW+oGjiQcBmPCZYbxjWDga4Uqq7ne1vC5cpf8/0M+DYbnfhwxptp3beETBP0AE4Lp1DLeF2AxqFKsQjSSBOvWXvmILM4O5+KQcwPDHap5GxJqGeQT/uHn1b0IKWSG0a7vTKFu9Y75KA3E5qlNOegyJS4yZ6EBc8p4Gjc/9IT0qQ2mrpGTmBY8E3LcRKcYvTTZ3vsVjSD58SRqi0AxJ5a5wNCoiErZSGuekmf8ZaDV4IY56lj4hzhlCcczWDcra7Vsr0=
X-Forefront-Antispam-Report-Untrusted:
 CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:DU2PR08MB7272.eurprd08.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(376014)(366016)(1800799024)(38070700021)(56012099003)(22082099003)(18002099003);DIR:OUT;SFP:1101;
Content-Type: text/plain; charset="us-ascii"
Content-ID: <7255C820ECBFAB46B46587FFAA6CFE23@eurprd08.prod.outlook.com>
Content-Transfer-Encoding: quoted-printable
MIME-Version: 1.0
X-Exchange-RoutingPolicyChecked:
 pwbajrYYlUpqKdgEKhHM2tFbx6i02gud/30hiaFyZZWmLyplCxM/vn6J5/D3AXGcRvFM7UbxI1MRfaDfcv6lGTTcoTJpUWavu9AFHGvyzBgbufVDEMC+LlYmKt4ep9DKHs+aoh0PYyfYHKv4adHprNY2JTVSanF6n5+34cMdFhGQMqyIzb+puX0VeiSWsWKe8xwYe5Z3KnBTT8bFCEpevYUArXYVwgiBz21fqfyLZ7r6Nd3HaQvP9NKrbTmnisgnIyXmTxg/elAiIMWKqErDaeeJnLUVviN+9tVNIaPMIG/kI7FxiA9rAhrmIptgLCCBDQQVWY0iprOE5TP0I1kpTg==
X-MS-Exchange-Transport-CrossTenantHeadersStamped: GV2PR08MB11605
X-EOPAttributedMessage: 0
X-MS-Exchange-Transport-CrossTenantHeadersStripped:
 AM4PEPF00027A65.eurprd04.prod.outlook.com
X-MS-PublicTrafficType: Email
X-MS-Office365-Filtering-Correlation-Id-Prvs:
	e45ecc21-da52-43e8-2a12-08de996b726e
X-Microsoft-Antispam:
	BCL:0;ARA:13230040|82310400026|35042699022|14060799003|36860700016|1800799024|376014|18002099003|22082099003|56012099003;
X-Microsoft-Antispam-Message-Info:
	ckg+RrE+EbbIs/mjDu0x+bi4SyQaAnt3u6vu2QZJZ3uhPwZBrnSW+nj2/BSXZmmevZpIuAB48f5itvRvtfMHSvRMtf+LLkiKLL0St4dCIriKiIj6q89NbfOW0rMAgU/Gb55EJWHmzKZtYAdE64YrkTN2HQauchGJkuomv05mXRh3NZwsWq7jrKvjstMZkODhoeRScIZ51bhdRxlPVL89ZWQfbTWUuuhBrsY9oT9AZUjXn5/a+TVyGLD9pwmg3ILe0F64DLRAQrLk/GOmO2YGd8XOxQsecpAC/kZjOZ/IPX5INZrWdhZZj1Go2VUCB9xEryEfBUVgNiAl5BaslQMJsgVasFLs+bIMIUeeWKiipCp9HrMJo2li1g200njkOWbBBufS0YtLL64sL64/c9nb45F0OvoymvvE9ZDKYGcSmbkWenQKfQ3yIw+qpU6vV26mYxgv9G8tYQEK7R7olDhVC0RFaeveIQII8vlf28vOVOnj5u8BXbsqWLXoHoVT3OHHFfxLRScvuMrJVx4DQ3BPXr795GGWdBVmOEcEbSAVpkkL/tMDZFF3CRABhVizPEUdUjIAqIvVPjAp2Hp4POJ27JugGpiMu9EFOVZaM148jyaVb1s8D/KXvZcjMv4h3dzOuvtsUOn/w2tcIVy5N4mxZyFNEiaakjgn6vHzhgwRuCA+lOOBJNZeJWZJ2p0Cn/AAEKBiTAs9PXzun9OWlgByJW7UHtEEWAblJkpcqUFCmbJli8IdIlqEuCU2SOIO/YOsW/4NR3ZA5By+GrLfUsXvZg==
X-Forefront-Antispam-Report:
	CIP:4.158.2.129;CTRY:GB;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:outbound-uk1.az.dlp.m.darktrace.com;PTR:InfoDomainNonexistent;CAT:NONE;SFS:(13230040)(82310400026)(35042699022)(14060799003)(36860700016)(1800799024)(376014)(18002099003)(22082099003)(56012099003);DIR:OUT;SFP:1101;
X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1
X-MS-Exchange-AntiSpam-MessageData-0:
	hiR0EYiCY/JOpFiX1EXzwPGW63uES4PyGusw+fhPDg4hqwiZYQbYSEm1zLXo2BZ+BufqykuMjUUi6f2/2cMFHN2CJA59yd7HBwb0UNoUFuBsMJSReejgauWBQhzFZB/DkRw1awlanfIA6/xwlvWhCeDOc4LkPrrjUw0BGkU3GgQhDQHFmg6pJtJKolZm4RrZc4g2uhMVJf+7Mr5uL8ngO/6wcJ/yr7Pe4/1LiuMv8bOAfc0UdWvFK1O9iUSuilYMQQ+hc5H/m/COKQKvH1XRdD7X2FSnl5r8DtJHKbWbHq98+ArLA8LuS3V5QedrO12OBiTserp/35HUoLW0QrLm3nmbGy7lQPAZBIancD0iu5DSR7J2uc0Ik5sdXP3qRQSNzCbyLWy4F7VKxNH1rjeouKeGjBYxZJCVIdGhDZprdNx/iGf/u1ZffxCYspVprMN/
X-OriginatorOrg: arm.com
X-MS-Exchange-CrossTenant-OriginalArrivalTime: 13 Apr 2026 14:47:32.7628
 (UTC)
X-MS-Exchange-CrossTenant-Network-Message-Id: bcff1009-62e3-4384-45c6-08de996b984a
X-MS-Exchange-CrossTenant-Id: f34e5979-57d9-4aaa-ad4d-b122a662184d
X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=f34e5979-57d9-4aaa-ad4d-b122a662184d;Ip=[4.158.2.129];Helo=[outbound-uk1.az.dlp.m.darktrace.com]
X-MS-Exchange-CrossTenant-AuthSource:
	AM4PEPF00027A65.eurprd04.prod.outlook.com
X-MS-Exchange-CrossTenant-AuthAs: Anonymous
X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem
X-MS-Exchange-Transport-CrossTenantHeadersStamped: DBBPR08MB5994
X-purgate-ID: tlsNG-c201ff/1776091656-383E496F-E143179A/0/0
X-purgate-type: clean
X-purgate-size: 2742

Hi Milan,

> On 31 Mar 2026, at 02:52, Milan Djokic <milan_djokic@epam.com> wrote:
>=20
> From: Rahul Singh <rahul.singh@arm.com>
>=20
> 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 confiure the IOMMU

typo s/confiure/configure/

> correctly replace the phandle in partial device tree with virtual
> IOMMU phandle when "iommus" property is set.
>=20
> 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 | 31 ++++++++++++++++++++++++-
> 1 file changed, 30 insertions(+), 1 deletion(-)
>=20
> diff --git a/xen/common/device-tree/dom0less-build.c b/xen/common/device-=
tree/dom0less-build.c
> index 840d14419d..4b74d2f705 100644
> --- a/xen/common/device-tree/dom0less-build.c
> +++ b/xen/common/device-tree/dom0less-build.c
> @@ -318,7 +318,35 @@ static int __init handle_prop_pfdt(struct kernel_inf=
o *kinfo,
>     return ( propoff !=3D -FDT_ERR_NOTFOUND ) ? propoff : 0;
> }
>=20
> -static int __init scan_pfdt_node(struct kernel_info *kinfo, const void *=
pfdt,
> +static void 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;
> +
> +    prop_c =3D xzalloc_bytes(proplen);

we should check if the allocation was ok

> +
> +    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 FD=
T");
> +        return;
> +    }
> +
> +    return;
> +}
> +
> +static int __init scan_pfdt_node(struct kernel_info *kinfo, void *pfdt,
>                                  int nodeoff,
>                                  uint32_t address_cells, uint32_t size_ce=
lls,
>                                  bool scan_passthrough_prop)
> @@ -344,6 +372,7 @@ static int __init scan_pfdt_node(struct kernel_info *=
kinfo, const void *pfdt,
>     node_next =3D fdt_first_subnode(pfdt, nodeoff);
>     while ( node_next > 0 )
>     {
> +        modify_pfdt_node(pfdt, node_next);
>         rc =3D scan_pfdt_node(kinfo, pfdt, node_next, address_cells, size=
_cells,
>                             scan_passthrough_prop);
>         if ( rc )
>=20

Cheers,
Luca



From xen-devel-bounces@lists.xenproject.org Mon Apr 13 14:57:37 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 13 Apr 2026 14:57:37 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1281243.1564248 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wCIjD-00033Y-IX; Mon, 13 Apr 2026 14:57:31 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1281243.1564248; Mon, 13 Apr 2026 14:57: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 1wCIjD-00033R-Ff; Mon, 13 Apr 2026 14:57:31 +0000
Received: by outflank-mailman (input) for mailman id 1281243;
 Mon, 13 Apr 2026 14:57:29 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <bounce-md_30504962.69dd0457.v1-28f3e43204da469e876df1a9d9bd776a@bounce.vates.tech>)
 id 1wCIjB-00033L-Ik
 for xen-devel@lists.xenproject.org; Mon, 13 Apr 2026 14:57:29 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wCIjA-00H66A-TP
 for xen-devel@lists.xenproject.org; Mon, 13 Apr 2026 16:57:28 +0200
Received: from [10.42.69.4] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1) (envelope-from
 <bounce-md_30504962.69dd0457.v1-28f3e43204da469e876df1a9d9bd776a@bounce.vates.tech>)
 id 69dd0442-bab6-0a2a0a5309dd-0a2a4504eae2-36
 for <xen-devel@lists.xenproject.org>; Mon, 13 Apr 2026 16:57:28 +0200
Received: from [198.2.187.14] (helo=mail187-14.suw11.mandrillapp.com)
 by tlsNG-ebf023.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.0)
 (envelope-from
 <bounce-md_30504962.69dd0457.v1-28f3e43204da469e876df1a9d9bd776a@bounce.vates.tech>)
 id 69dd0457-bb33-0a2a45040019-c602bb0e0455-3
 for <xen-devel@lists.xenproject.org>; Mon, 13 Apr 2026 16:57:28 +0200
Received: from pmta09.mandrill.prod.suw01.rsglab.com (localhost [127.0.0.1])
 by mail187-14.suw11.mandrillapp.com (Mailchimp) with ESMTP id
 4fvVr716W2z8XRvwr
 for <xen-devel@lists.xenproject.org>; Mon, 13 Apr 2026 14:57:27 +0000 (GMT)
Received: from [37.26.189.201] by mandrillapp.com id
 28f3e43204da469e876df1a9d9bd776a; Mon, 13 Apr 2026 14:57: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=mte1 header.d=mandrillapp.com header.i="@mandrillapp.com" header.h="From:Subject:To:Cc:Message-Id:In-Reply-To:Feedback-ID:Date:MIME-Version:Content-Type:Content-Transfer-Encoding"; dkim=pass header.s=mte1 header.d=vates.tech header.i="anthony.perard@vates.tech" header.h="From:Subject:To:Cc:Message-Id:In-Reply-To:Feedback-ID:Date:MIME-Version:Content-Type:Content-Transfer-Encoding"
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=mandrillapp.com;
	s=mte1; t=1776092247; x=1776362247;
	bh=Ac2SMe+TO7wLj+00Cc1kM0953s+GmmDu/NitHI4i6w4=;
	h=From:Subject:To:Cc:Message-Id:In-Reply-To:Feedback-ID:Date:
	 MIME-Version:Content-Type:Content-Transfer-Encoding:CC:Date:
	 Subject:From;
	b=LYz6gAtpwooT2PCfBXeR9tP+AMS+/WIdZ9RP0WEQoY+POVNg+ShfhVwKHtyryDjjp
	 4zggltitjAP/hKag8KtzULPUDWTkepc6r+OSZNIIDxXMVLOdfwZnPv/No/r58Pshna
	 kGYMRU/5vwSyugqUJKaXo6++b01KJoD7nAe/vwYYCtqETFLYTMQfBWfqKAApKvay9x
	 GYD6J2PBBX+x3iXAJYcmKHVxogXwvdGYW15a2+WWceaUsk5g8foD/jZ7TZOM+g/a8r
	 VjZOo2hW4n+Kan9J28TQxj+xZK6j9yMKlgprRMSKRVAS5E9QyEjzBT7GHW5yS3/BGE
	 daZB6Q6zR4s2A==
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=vates.tech; s=mte1;
	t=1776092247; x=1776352747; i=anthony.perard@vates.tech;
	bh=Ac2SMe+TO7wLj+00Cc1kM0953s+GmmDu/NitHI4i6w4=;
	h=From:Subject:To:Cc:Message-Id:In-Reply-To:Feedback-ID:Date:
	 MIME-Version:Content-Type:Content-Transfer-Encoding:CC:Date:
	 Subject:From;
	b=dx3L7YiDGuM+ep9omsd8lTJHPyNy2aWDPX23M6txrx7GGLh/X4l9myzkLoEnA15w7
	 9jk+23dvjUqu+RIgURfMU20SJRngQ5eiOkAFxx3jE0dkAPZM17GkFcz0Dp0QNw2Vq5
	 /WGFrV2AwhwMGu+nGyY9laYg9G1n6FwFHe1H1kzLQmjK4c2A2c8usEhRbOLCpl6e0M
	 e8zhzsLMG4zTkecD6Ff7Brkk1zivTDynDT0lGKKH7cwyihq0MhBZgb3y34hJMlT6aB
	 97dDKZTyIxUZOGCrjZ7aDe3m0E5xmuh+p+969+Z5iRGc7M/AaMDwheUUmJdL7BrSJ9
	 VRMAokc8b5uag==
From: "Anthony PERARD" <anthony.perard@vates.tech>
Subject: =?utf-8?Q?Re:=20[PATCH=20test-artifacts=20v3=2001/13]=20Add=20Alpine=203.22=20containers?=
X-Bm-Disclaimer: Yes
X-Bm-Milter-Handled: 4ffbd6c1-ee69-4e1b-aabd-f977039bd3e2
X-Bm-Transport-Timestamp: 1776092245824
To: "=?utf-8?Q?Marek=20Marczykowski-G=C3=B3recki?=" <marmarek@invisiblethingslab.com>
Cc: xen-devel@lists.xenproject.org, "Andrew Cooper" <andrew.cooper3@citrix.com>, "Stefano Stabellini" <sstabellini@kernel.org>, "=?utf-8?Q?Roger=20Pau=20Monn=C3=A9?=" <roger.pau@citrix.com>
Message-Id: <ad0EVSlkYcxQF5ce@l14>
In-Reply-To: <89e8adefe509165c419b0be7a1fdcd19289c2be7.1774999132.git-series.marmarek@invisiblethingslab.com>
X-Native-Encoded: 1
X-Report-Abuse: =?UTF-8?Q?Please=20forward=20a=20copy=20of=20this=20message,=20including=20all=20headers,=20to=20abuse@mandrill.com.=20You=20can=20also=20report=20abuse=20here:=20https://mandrillapp.com/contact/abuse=3Fid=3D30504962.28f3e43204da469e876df1a9d9bd776a?=
X-Mandrill-User: md_30504962
Feedback-ID: 30504962:30504962.20260413:md
Date: Mon, 13 Apr 2026 14:57:27 +0000
MIME-Version: 1.0
Content-Type: text/plain; charset=utf-8
Content-Transfer-Encoding: 7bit
X-purgate-ID: tlsNG-ebf023/1776092248-B072A51B-5980200C/0/0
X-purgate-type: clean
X-purgate-size: 1665

I'm commenting on changes I found in the branch used by the pipeline
linked in the cover leter, since there's no copy on the mailing list of
the patch :-( (overzealous spam filter).

> diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml
> index c698612d5acd..17d25ce0f921 100644
> --- a/.gitlab-ci.yml
> +++ b/.gitlab-ci.yml
> @@ -40,6 +40,13 @@ alpine-3.18-arm64-rootfs:
>    variables:
>      CONTAINER: alpine:3.18-arm64-base
> 
> +alpine-3.22-arm64-rootfs:
> +  extends: .arm64-artifacts
> +  script:
> +    - ./scripts/alpine-rootfs.sh
> +  variables:
> +    CONTAINER: alpine:3.18-arm64-base
> +

Shouldn't this use the 3.22 converner version?


> diff --git a/containerize b/containerize
> index 38a434ab7075..b3722b465e01 100755
> --- a/containerize
> +++ b/containerize
> @@ -28,6 +28,10 @@ case "_${CONTAINER}" in
>      _alpine-3.18-arm64-build) CONTAINER="${BASE}/alpine:3.18-arm64-build" ;;
>      _alpine-3.18-x86_64-base) CONTAINER="${BASE}/alpine:3.18-x86_64-base" ;;
>      _alpine-3.18-x86_64-build|_) CONTAINER="${BASE}/alpine:3.18-x86_64-build" ;;
> +    _alpine-3.22-arm64-base) CONTAINER="${BASE}/alpine:3.22-arm64-base" ;;
> +    _alpine-3.22-arm64-build) CONTAINER="${BASE}/alpine:3.22-arm64-build" ;;
> +    _alpine-3.22-x86_64-base) CONTAINER="${BASE}/alpine:3.22-x86_64-base" ;;
> +    _alpine-3.22-x86_64-build|_) CONTAINER="${BASE}/alpine:3.22-x86_64-build" ;;

If you intend to make the x86 3.22 build container the new default, you
are going to need to change the 3.18 x86 build container line above.

Thanks,


--
 | Vates

XCP-ng & Xen Orchestra - Vates solutions

web: https://vates.tech



From xen-devel-bounces@lists.xenproject.org Mon Apr 13 15:12:00 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 13 Apr 2026 15:12:00 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1281255.1564258 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wCIx6-00061f-Ns; Mon, 13 Apr 2026 15:11:52 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1281255.1564258; Mon, 13 Apr 2026 15:11: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 1wCIx6-00061Y-LE; Mon, 13 Apr 2026 15:11:52 +0000
Received: by outflank-mailman (input) for mailman id 1281255;
 Mon, 13 Apr 2026 15:11:51 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <Luca.Fancellu@arm.com>) id 1wCIx5-00061S-Ag
 for xen-devel@lists.xenproject.org; Mon, 13 Apr 2026 15:11:51 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wCIx3-00831b-BG
 for xen-devel@lists.xenproject.org; Mon, 13 Apr 2026 17:11:49 +0200
Received: from [10.42.69.10] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <Luca.Fancellu@arm.com>)
 id 69dd07a0-e002-0a2a0a5209dd-0a2a450ad466-42
 for <xen-devel@lists.xenproject.org>; Mon, 13 Apr 2026 17:11:48 +0200
Received: from [52.101.66.46]
 (helo=DUZPR83CU001.outbound.protection.outlook.com)
 by tlsNG-4011c0.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.0)
 (envelope-from <Luca.Fancellu@arm.com>)
 id 69dd07b4-ee98-0a2a450a0019-3465422e4861-4
 for <xen-devel@lists.xenproject.org>; Mon, 13 Apr 2026 17:11:48 +0200
Received: from DUZPR01CA0278.eurprd01.prod.exchangelabs.com
 (2603:10a6:10:4b9::23) by VI0PR08MB10653.eurprd08.prod.outlook.com
 (2603:10a6:800:20c::16) with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9769.48; Mon, 13 Apr
 2026 15:11:43 +0000
Received: from DB1PEPF000509E8.eurprd03.prod.outlook.com
 (2603:10a6:10:4b9:cafe::55) by DUZPR01CA0278.outlook.office365.com
 (2603:10a6:10:4b9::23) with Microsoft SMTP Server (version=TLS1_3,
 cipher=TLS_AES_256_GCM_SHA384) id 15.20.9769.48 via Frontend Transport; Mon,
 13 Apr 2026 15:11:41 +0000
Received: from outbound-uk1.az.dlp.m.darktrace.com (4.158.2.129) by
 DB1PEPF000509E8.mail.protection.outlook.com (10.167.242.58) with Microsoft
 SMTP Server (version=TLS1_3, cipher=TLS_AES_256_GCM_SHA384) id 15.20.9769.17
 via Frontend Transport; Mon, 13 Apr 2026 15:11:41 +0000
Received: from DU2PR08MB7272.eurprd08.prod.outlook.com (2603:10a6:10:2d7::16)
 by DBBPR08MB6011.eurprd08.prod.outlook.com (2603:10a6:10:209::13)
 with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9769.48; Mon, 13 Apr
 2026 15:10:38 +0000
Received: from DU2PR08MB7272.eurprd08.prod.outlook.com
 ([fe80::5d34:206f:373:a323]) by DU2PR08MB7272.eurprd08.prod.outlook.com
 ([fe80::5d34:206f:373:a323%6]) with mapi id 15.20.9769.046; Mon, 13 Apr 2026
 15:10: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=selector1 header.d=arm.com header.i="@arm.com" header.h="From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck"; dkim=pass header.s=selector1 header.d=arm.com header.i="@arm.com" header.h="From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck"
ARC-Seal: i=2; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=pass;
 b=soEeiypCwOyKyW2TRre0iIkDh6jV4zOHPRd0F++csmZD5Mr76URB0DeGK1BlmqIcvGX3xYu8b+HkVZxcs/P4Ta/wHrgf0WVnFbS3zY0yHRxPlZgVloTpl1RXLX/IB25pyvZzrbGsnh5QwKTE6vxFCtR/DXRiMHhWNij5MpuV1s26LJwMPl9yljc71CDmnb9rc6ZlZNUNutBOpbYxaECIA/ITfES/Hq14j/oyCQcdE91CRNxM3o50HIa9B0K0kb/me2HUeIG9sIMdbJGJ+ece7cFbi3qxjt6M+XaruLj0x3vjZ4J+mkQEBcaVZCEbSEtTyz/8nCvLJ/7jO9jP2bFL2A==
ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com;
 s=arcselector10001;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1;
 bh=X+RK/YsyMGkxGoAUBKg19MjBNh2hVfPCdtBx0j51PdE=;
 b=LAyfuMeAbLX7JA+FboxXBD+Qs2k25FTkUJArue4K6wZ4vuWrAbOYFNtLE6zgwtn0XNSXHK7zG9DY+Le5hPhAo5urXBoFge+hkC9FfwZtlz7qdsjFNP+fl9Nnf2chdTtVLRT6B+XwG9dsUCTcU8J3o8acluHlEDgCvaDnwadztsk0PECKFu/ZbOsvYIZkd7IYReEIyqo88ERLx1Wp4eWAKNPNRZZOepv+dk6TSePe2Xvx0VP/hs5qgz2Q0PCh70KOST2LZEMKYTUOrWL6DDrWR4U1bacFelm6b0XyL0Ppz/SaM1OQ4VhykmSKdYIbh5IctsToW8h42QkW+K9id9Vj5Q==
ARC-Authentication-Results: i=2; mx.microsoft.com 1; spf=pass (sender ip is
 4.158.2.129) smtp.rcpttodomain=epam.com smtp.mailfrom=arm.com; dmarc=pass
 (p=none sp=none pct=100) action=none header.from=arm.com; dkim=pass
 (signature was verified) header.d=arm.com; arc=pass (0 oda=1 ltdi=1
 spf=[1,1,smtp.mailfrom=arm.com] dkim=[1,1,header.d=arm.com]
 dmarc=[1,1,header.from=arm.com])
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=arm.com; s=selector1;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck;
 bh=X+RK/YsyMGkxGoAUBKg19MjBNh2hVfPCdtBx0j51PdE=;
 b=LpL6VFtFo7YQzZ1Y92cTT5OvSfLHGg2EdVmbP0j5EJE9eAB9ci7AFNAWB8SbxkedjPfPXSB8Hk8BYyUuGmWWuwfoooCJFC6SlaIf00W4f7HFcoLCH5lMwoo7UX5u5oPjX4V1z+W8YT+LLRUigQOWzPAj73wHmu3eG8ytRD4OyyE=
X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 4.158.2.129)
 smtp.mailfrom=arm.com; dkim=pass (signature was verified)
 header.d=arm.com;dmarc=pass action=none header.from=arm.com;
Received-SPF: Pass (protection.outlook.com: domain of arm.com designates
 4.158.2.129 as permitted sender) receiver=protection.outlook.com;
 client-ip=4.158.2.129; helo=outbound-uk1.az.dlp.m.darktrace.com; pr=C
ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none;
 b=gfdPuLhGBlqH6FLjYO1fk8ZXr4xkXDZNC1Xp4qkLMUnMNkDJa+7MzHbWCqPKmTSd5u49CkhoM3OOZndKqGaKa56RqWyohGqIcI0dWN+88g/GRN7Y7CNxPWNIGSnuODw8y+6HEDABHH3VBQSBKVekk6MuDof78HELIKvI00RkBLftxtSVoHLLPiyUqMIsCI6lD6sHXph9peNSKDlR8DV6eCsklCpovqr2JRjzrwUF9PgH9gMM5yhDu5dFraI3+15hcpW8uQN8Tjxb86OogVOqXPQE/Nh4B0SkNJkDGkcV2udM1JnkeEno55csUCaLgo9FAB3wJKqa7GQwe5I+sB2rmw==
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com;
 s=arcselector10001;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1;
 bh=X+RK/YsyMGkxGoAUBKg19MjBNh2hVfPCdtBx0j51PdE=;
 b=Zy0BuQWNi4XoXAL/6CpXIcWUgoVKCeyUi4CwkVjEukEcfSabAe9g1Pe//w0BSa3E5BvRbFRaeueGe2YEKvLKkQu84QPvpoYWJJ42JgQ/30E1HXuuORw0uO/unUE7C2ThD2u+3nPqxYch4x/u2WyHnN3vOkE6CGFE7g2o55yRsnn5PqwRUxMmqEmJ+JRwRS5aMPmdkm2cym2a/NIDXzftS/cFr24F9Dr3AlcrvpwP/SNDsolisyT1UtBUai9Y5USdlCLgDcLnXB2rGNpgr6K49rNFdJslpS/8ctEsMRKP1wLheBX1AZg4TLO2A2CCGTp+IQS7IkXbPwYMHvc40frHZQ==
ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass
 smtp.mailfrom=arm.com; dmarc=pass action=none header.from=arm.com; dkim=pass
 header.d=arm.com; arc=none
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=arm.com; s=selector1;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck;
 bh=X+RK/YsyMGkxGoAUBKg19MjBNh2hVfPCdtBx0j51PdE=;
 b=LpL6VFtFo7YQzZ1Y92cTT5OvSfLHGg2EdVmbP0j5EJE9eAB9ci7AFNAWB8SbxkedjPfPXSB8Hk8BYyUuGmWWuwfoooCJFC6SlaIf00W4f7HFcoLCH5lMwoo7UX5u5oPjX4V1z+W8YT+LLRUigQOWzPAj73wHmu3eG8ytRD4OyyE=
From: Luca Fancellu <Luca.Fancellu@arm.com>
To: Milan Djokic <milan_djokic@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>,
	Volodymyr Babchuk <Volodymyr_Babchuk@epam.com>
Subject: Re: [PATCH v3 21/23] xen/arm: vIOMMU vSID->pSID mapping layer
Thread-Topic: [PATCH v3 21/23] xen/arm: vIOMMU vSID->pSID mapping layer
Thread-Index: AQHcy1evF3Gl2rIueUOP2AqRDPAGLg==
Date: Mon, 13 Apr 2026 15:10:37 +0000
Message-ID: <8F8191AB-CA77-4FD4-B32C-DE178CF10DFD@arm.com>
References: <cover.1774918270.git.milan_djokic@epam.com>
 <2105eb0cf298e1e8b1ec826516cb094d5f8ee2eb.1774918270.git.milan_djokic@epam.com>
In-Reply-To:
 <2105eb0cf298e1e8b1ec826516cb094d5f8ee2eb.1774918270.git.milan_djokic@epam.com>
Accept-Language: en-GB, en-US
Content-Language: en-US
X-MS-Has-Attach:
X-MS-TNEF-Correlator:
x-mailer: Apple Mail (2.3826.700.81.1.6)
Authentication-Results-Original: dkim=none (message not signed)
 header.d=none;dmarc=none action=none header.from=arm.com;
x-ms-traffictypediagnostic:
	DU2PR08MB7272:EE_|DBBPR08MB6011:EE_|DB1PEPF000509E8:EE_|VI0PR08MB10653:EE_
X-MS-Office365-Filtering-Correlation-Id: d8978088-a417-4bf6-48fe-08de996ef785
x-checkrecipientrouted: true
nodisclaimer: true
X-MS-Exchange-SenderADCheck: 1
X-MS-Exchange-AntiSpam-Relay: 0
X-Microsoft-Antispam-Untrusted:
 BCL:0;ARA:13230040|376014|1800799024|366016|56012099003|18002099003|22082099003|38070700021;
X-Microsoft-Antispam-Message-Info-Original:
 lJTdT4ILEtaSw00So2Y2u4O8hFQMrgJy7MOLbsLxGiXI9AlMbcZD1dUdcb4exztU92SaEstnQd+J0xWH+lnUPV+wpLoy5v1SzSbUV8t2oQCVowuHA/qR8pRTnlB+H2fYLxCkyB1iopWG7BgaVpb6sCA3F3S5UEyQExl1ZWr+6EFgIV7kjlqY6IFF+jv9j2/4KJkzTe3Ru6czXt2QpsNdDGiA6i/D1GEZqK5lwBQZIDbFz5bRFZ1fT9NYx9WxSuoFj+QismpditahxvCzLm5+tUpowYsJBYsStN2UY43Y2+w4NmwDkGE03bVm62cfZJ8TOamPeOaL0jV+Vc8s3m+AQGJRmDEtHsxWW/cPF8LFTAscdGAg/dLmyNpcFAmzlEKpf8vVJ1f+ePl//EfOnlTrZ34xHfJ++ooZVjUW0/DcFNihlvPtBSCHEXHSwzrBF0pQA7016674ybbCa0iPwAjSRDp4XPijFZK1rMGyAvQzX7Hzo4T3TTPi/d8Y1aiS+I1o6qzXplKReztYMgXRhwx6tvuuxLqk818bxlwERJIeX3Er4udqFlq6JlxXxCMuPgfW1lad8nZXkJn/My85omJpAsBWiOa/8TkwlksEOLZLU388Zd5NH/20HO8V98kN1YVPv6IDP78poflrXDlzvuikzVz0x2gWL68KAjTjkWiMp+eBWydzs3wD27FaLHNHU0kLnUJ6bBbs2o62+EaZHmus2lpGcxc697QLA7tCCzcieU6VAzVGmQMaSTE9/MJsqBOqraVVeE5DPYi9l36Pk/OBfch4dqdeWVydEb/q027ineM=
X-Forefront-Antispam-Report-Untrusted:
 CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:DU2PR08MB7272.eurprd08.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(376014)(1800799024)(366016)(56012099003)(18002099003)(22082099003)(38070700021);DIR:OUT;SFP:1101;
Content-Type: text/plain; charset="utf-8"
Content-ID: <62FB58074258CD4CBB58E12BE0CA795D@eurprd08.prod.outlook.com>
Content-Transfer-Encoding: base64
MIME-Version: 1.0
X-Exchange-RoutingPolicyChecked:
 tQO7D3z3YlksFfuu/P+vqcxJ9MV9tVdUNrKwpgoJHeedGNjwBLOmj99rWtJRIAwoDBqG9ILv0uxDRSVc4ShBEgB4Tee8CiheDZyGa+U3q8HtHjBcv35iD5d1T9BD48ibjH+GTfEAOyKu96EccSshqGbNQaexd9MwfK4kF2ZaIyC+gFFlrwGoUwvfl7PXjTQvclIhVUJc6DYNUySitQl9t/9hVV8nzvnAT83jC6Nyo/wH/3KchxU7y2UCyrSo16FbWSCLiO/T1VCS8vsvKV4pdv+MqqcwpxjnJBT2QvLnPi0GqZDB58DtYxzz4SmRWJ5wLNFmVDCI9vrtEZBprPQgnQ==
X-MS-Exchange-Transport-CrossTenantHeadersStamped: DBBPR08MB6011
X-EOPAttributedMessage: 0
X-MS-Exchange-Transport-CrossTenantHeadersStripped:
 DB1PEPF000509E8.eurprd03.prod.outlook.com
X-MS-PublicTrafficType: Email
X-MS-Office365-Filtering-Correlation-Id-Prvs:
	72abdb0d-adef-4a9a-1979-08de996ed1e9
X-Microsoft-Antispam:
	BCL:0;ARA:13230040|35042699022|1800799024|376014|36860700016|14060799003|82310400026|18002099003|22082099003|56012099003;
X-Microsoft-Antispam-Message-Info:
	c5fcztnzfs/GLBxgoCM9EwJv89RVqtpVqC/qbyCnKmSO7xC/9xupqIVHrQUjVaCwDwGQIGFpmurkMcutam+BRd1Dyd5Pd4wi1d4cJVL3WJY5BLuNKUABpTNtkugcYb1Dw5P8tlexPWNgci0hNDRWR9JfIZrPQBjJT5deO1OuGaN3IB/P1KIpfzeQLaCZvAnL/cflik19zl6lTd19JSdY5p7kXYHxVTvIw7II3PW2Fi70ma24a3+4/8+he7R6g/ZGp2YzhwNpDdQpFKqNyCxo+Ch/5VD6Lj8JzUZx2BPQ1El7c+ZE9ifRm8WmOL24eIfT7OdxeUWopg04ihC603lYcpoqLX0oZlEWFj+bRA9/dk4oVnahqf6iGoqE0TPOH9KXXE2TX908Ykcc3panHnS5oLLImB0c59/V/zxYOIB7m9j1LoCdEunsW4hQdD6bMc9vr0fc0sURMN/T+xPk0LifNOL7En5p9b4Q9GBAhDfhHVrvFg5EspIw34ie/0fGy4Lz0vqP8Bfvt/RVvO1SQb6sXFBVGQDeoXEWGCPfXub+OZ7SXoLYfTAYRRR33q1N/7X8nNWiA7xBWdNXqT+imr9+Yz/jiSIbitHP5SOUIBaSWAd5R3PBxN8boJ4r2lYWgpImz7ylPShR5D+qLqrbCet1war4PxdCEe17icZGfzkpdIqup/XwnomwnwUt3+1SNesj2pcd8vvjq86m7MfP3Vt/tyB4uyOCLgsSfN3XIc+boAnG15BvtVOsitaCMMyui6VCZedfyjERejJ8Z/a1NDZr2w==
X-Forefront-Antispam-Report:
	CIP:4.158.2.129;CTRY:GB;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:outbound-uk1.az.dlp.m.darktrace.com;PTR:InfoDomainNonexistent;CAT:NONE;SFS:(13230040)(35042699022)(1800799024)(376014)(36860700016)(14060799003)(82310400026)(18002099003)(22082099003)(56012099003);DIR:OUT;SFP:1101;
X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1
X-MS-Exchange-AntiSpam-MessageData-0:
	tEExNuZf0oj0zfsCQO1kVQH1QgSglUkMqfUyqkGlUyd/D26/WimArzrCuxtJZ3a1ZOuxlzbAygI9EiRcbXxWOt5s2xm0Y+gktc4m/Dqe8uPcU1cDzfBhHHF+erraNwp7YSz2LK260DNC6gp3PowIiCnTutFvoolwaAIXk79N1xZKiLzF710r7NpoTRBb22a5miDY9GhDz95KmPWWcpPg/ZbIbtIXgyVGodFKlPFfx4Tp9T37w+MLt1OCZ30ACZIoGvmMwYXgdnUWvkvjl1QQ0Xgzjbf2jwwQemxIiOwJDmMsGJWupBHqJPEkoCA9uWkmMRuw+rOWJ7/MD0nVctrN/JA7/4cfa5PAEfgmP1wmFhepPU+04/dX3irF+i1/x5J2Z7Tt/bESZqTd00BQ10Q6RY/EKXt0CKyGTaXnbNcFFVK3esrfTxYHsckc5fmsV30g
X-OriginatorOrg: arm.com
X-MS-Exchange-CrossTenant-OriginalArrivalTime: 13 Apr 2026 15:11:41.0196
 (UTC)
X-MS-Exchange-CrossTenant-Network-Message-Id: d8978088-a417-4bf6-48fe-08de996ef785
X-MS-Exchange-CrossTenant-Id: f34e5979-57d9-4aaa-ad4d-b122a662184d
X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=f34e5979-57d9-4aaa-ad4d-b122a662184d;Ip=[4.158.2.129];Helo=[outbound-uk1.az.dlp.m.darktrace.com]
X-MS-Exchange-CrossTenant-AuthSource:
	DB1PEPF000509E8.eurprd03.prod.outlook.com
X-MS-Exchange-CrossTenant-AuthAs: Anonymous
X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem
X-MS-Exchange-Transport-CrossTenantHeadersStamped: VI0PR08MB10653
X-purgate-ID: tlsNG-4011c0/1776093108-C56170B1-9D0A978B/0/0
X-purgate-type: clean
X-purgate-size: 16188

SGkgTWlsYW4sDQoNCj4gT24gMzEgTWFyIDIwMjYsIGF0IDAyOjUyLCBNaWxhbiBEam9raWMgPG1p
bGFuX2Rqb2tpY0BlcGFtLmNvbT4gd3JvdGU6DQo+IA0KPiBJbnRyb2R1Y2UgdklPTU1VIG1hcHBp
bmcgbGF5ZXIgaW4gb3JkZXIgdG8gc3VwcG9ydCBwYXNzdGhyb3VnaCBvZiBJT01NVQ0KPiBkZXZp
Y2VzIGF0dGFjaGVkIHRvIGRpZmZlcmVudCBwaHlzaWNhbCBJT01NVXMgKGUuZy4gZGV2aWNlcyB3
aXRoIHRoZSBzYW1lIHN0cmVhbUlEKS4NCj4gTmV3IGdlbmVyaWMgdklPTU1VIEFQSSBpcyBhZGRl
ZDogdmlvbW11X2FsbG9jYXRlX2ZyZWVfdmlkKCkuDQo+IFRoaXMgZnVuY3Rpb24gd2lsbCBhbGxv
Y2F0ZSBhIG5ldyBndWVzdCB2U0lEIGFuZCBtYXAgaXQgdG8gaW5wdXQgcFNJRC4NCj4gT25jZSBt
YXBwaW5nIGlzIGVzdGFibGlzaGVkLCBndWVzdCB3aWxsIHVzZSB2U0lEIGZvciBzdGFnZS0xIGNv
bW1hbmRzDQo+IGFuZCB4ZW4gd2lsbCB0cmFuc2xhdGUgdlNJRC0+cFNJRCBhbmQgcHJvcGFnYXRl
IGl0IHRvd2FyZHMgc3RhZ2UtMi4NCj4gSW50cm9kdWNlZCBuYW1pbmcgaXMgZ2VuZXJpYyAodklE
L3BJRCksIHNpbmNlIHRoaXMgQVBJIGNvdWxkIGJlIHVzZWQNCj4gZm9yIG90aGVyIElPTU1VIHR5
cGVzIGluIHRoZSBmdXR1cmUuDQo+IEltcGxlbWVudGVkIHVzYWdlIG9mIHRoZSBuZXcgQVBJIGZv
ciBkb20wbGVzcyBndWVzdHMuIHZTSURzIGFyZSBhbGxvY2F0ZWQNCj4gb24gZ3Vlc3QgZGV2aWNl
IHRyZWUgY3JlYXRpb24gYW5kIHRoZSBvcmlnaW5hbCBwU0lEIGlzDQo+IHJlcGxhY2VkIHdpdGgg
dlNJRCB3aGljaCBzaGFsbCBiZSB1c2VkIGJ5IHRoZSBndWVzdCBkcml2ZXIuDQo+IA0KPiBTaWdu
ZWQtb2ZmLWJ5OiBNaWxhbiBEam9raWMgPG1pbGFuX2Rqb2tpY0BlcGFtLmNvbT4NCj4gLS0tDQo+
IHhlbi9hcmNoL2FybS9pbmNsdWRlL2FzbS92aW9tbXUuaCAgICAgICB8IDEwICsrKysNCj4geGVu
L2NvbW1vbi9kZXZpY2UtdHJlZS9kb20wbGVzcy1idWlsZC5jIHwgMzIgKysrKysrKysrLS0tDQo+
IHhlbi9kcml2ZXJzL3Bhc3N0aHJvdWdoL2FybS92aW9tbXUuYyAgICB8ICA3ICsrKw0KPiB4ZW4v
ZHJpdmVycy9wYXNzdGhyb3VnaC9hcm0vdnNtbXUtdjMuYyAgfCA2NyArKysrKysrKysrKysrKysr
KysrKysrKystDQo+IDQgZmlsZXMgY2hhbmdlZCwgMTA2IGluc2VydGlvbnMoKyksIDEwIGRlbGV0
aW9ucygtKQ0KPiANCj4gZGlmZiAtLWdpdCBhL3hlbi9hcmNoL2FybS9pbmNsdWRlL2FzbS92aW9t
bXUuaCBiL3hlbi9hcmNoL2FybS9pbmNsdWRlL2FzbS92aW9tbXUuaA0KPiBpbmRleCAwMWQ0ZDBk
ZmVmLi42YTJmYzU2ZTM4IDEwMDY0NA0KPiAtLS0gYS94ZW4vYXJjaC9hcm0vaW5jbHVkZS9hc20v
dmlvbW11LmgNCj4gKysrIGIveGVuL2FyY2gvYXJtL2luY2x1ZGUvYXNtL3Zpb21tdS5oDQo+IEBA
IC0zMyw2ICszMywxNSBAQCBzdHJ1Y3QgdmlvbW11X29wcyB7DQo+ICAgICAgKiBDYWxsZWQgZHVy
aW5nIGRvbWFpbiBkZXN0cnVjdGlvbiB0byBmcmVlIHJlc291cmNlcyB1c2VkIGJ5IHZJT01NVS4N
Cj4gICAgICAqLw0KPiAgICAgaW50ICgqcmVsaW5xdWlzaF9yZXNvdXJjZXMpKHN0cnVjdCBkb21h
aW4gKmQpOw0KPiArDQo+ICsgICAgLyoNCj4gKyAgICAgKiBBbGxvY2F0ZSBmcmVlIHZTSUQvdlJJ
RCBmb3IgdGhlIGd1ZXN0IGRldmljZSBhbmQgZXN0YWJsaXNoIHZJRC0+cElEIG1hcHBpbmcNCj4g
KyAgICAgKiBDYWxsZWQgZHVyaW5nIGRvbWFpbiBkZXZpY2UgYXNzaWdubWVudC4NCj4gKyAgICAg
KiBSZXR1cm5zIDAgb24gc3VjY2VzcyBhbmQgc2V0cyB2aWQgYXJndW1lbnQgdG8gbmV3bHkgYWxs
b2NhdGVkIHZTSUQvdlJJRA0KPiArICAgICAqIG1hcHBlZCB0byBwaHlzaWNhbCBJRCAoaWQgYXJn
dW1lbnQpLg0KPiArICAgICAqIE5lZ2F0aXZlIGVycm9yIGNvZGUgcmV0dXJuZWQgaWYgYWxsb2Nh
dGlvbiBmYWlscy4NCj4gKyAgICAgKi8NCj4gKyAgICBpbnQgKCphbGxvY2F0ZV9mcmVlX3ZpZCko
c3RydWN0IGRvbWFpbiAqZCwgdWludDMyX3QgaWQsIHVpbnQzMl90ICp2aWQpOw0KPiB9Ow0KPiAN
Cj4gc3RydWN0IHZpb21tdV9kZXNjIHsNCj4gQEAgLTQ4LDYgKzU3LDcgQEAgc3RydWN0IHZpb21t
dV9kZXNjIHsNCj4gDQo+IGludCBkb21haW5fdmlvbW11X2luaXQoc3RydWN0IGRvbWFpbiAqZCwg
dWludDE2X3QgdmlvbW11X3R5cGUpOw0KPiBpbnQgdmlvbW11X3JlbGlucXVpc2hfcmVzb3VyY2Vz
KHN0cnVjdCBkb21haW4gKmQpOw0KPiAraW50IHZpb21tdV9hbGxvY2F0ZV9mcmVlX3ZpZChzdHJ1
Y3QgZG9tYWluICpkLCB1aW50MzJfdCBpZCwgdWludDMyX3QgKnZpZCk7DQo+IHVpbnQxNl90IHZp
b21tdV9nZXRfdHlwZSh2b2lkKTsNCj4gdm9pZCBhZGRfdG9faG9zdF9pb21tdV9saXN0KHBhZGRy
X3QgYWRkciwgcGFkZHJfdCBzaXplLA0KPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29u
c3Qgc3RydWN0IGR0X2RldmljZV9ub2RlICpub2RlKTsNCj4gZGlmZiAtLWdpdCBhL3hlbi9jb21t
b24vZGV2aWNlLXRyZWUvZG9tMGxlc3MtYnVpbGQuYyBiL3hlbi9jb21tb24vZGV2aWNlLXRyZWUv
ZG9tMGxlc3MtYnVpbGQuYw0KPiBpbmRleCA0Yjc0ZDJmNzA1Li5mNWFmZGYzODFjIDEwMDY0NA0K
PiAtLS0gYS94ZW4vY29tbW9uL2RldmljZS10cmVlL2RvbTBsZXNzLWJ1aWxkLmMNCj4gKysrIGIv
eGVuL2NvbW1vbi9kZXZpY2UtdHJlZS9kb20wbGVzcy1idWlsZC5jDQo+IEBAIC0zMSw2ICszMSw4
IEBADQo+ICNpbmNsdWRlIDx4ZW4vc3RhdGljLW1lbW9yeS5oPg0KPiAjaW5jbHVkZSA8eGVuL3N0
YXRpYy1zaG1lbS5oPg0KPiANCj4gKyNpbmNsdWRlIDxhc20vdmlvbW11Lmg+DQo+ICsNCj4gI2Rl
ZmluZSBYRU5TVE9SRV9QRk5fTEFURV9BTExPQyBVSU5UNjRfTUFYDQo+IA0KPiBzdGF0aWMgZG9t
aWRfdCBfX2luaXRkYXRhIHhzX2RvbWlkID0gRE9NSURfSU5WQUxJRDsNCj4gQEAgLTMxOCwyMiAr
MzIwLDMzIEBAIHN0YXRpYyBpbnQgX19pbml0IGhhbmRsZV9wcm9wX3BmZHQoc3RydWN0IGtlcm5l
bF9pbmZvICpraW5mbywNCj4gICAgIHJldHVybiAoIHByb3BvZmYgIT0gLUZEVF9FUlJfTk9URk9V
TkQgKSA/IHByb3BvZmYgOiAwOw0KPiB9DQo+IA0KPiAtc3RhdGljIHZvaWQgbW9kaWZ5X3BmZHRf
bm9kZSh2b2lkICpwZmR0LCBpbnQgbm9kZW9mZikNCj4gKyNpZmRlZiBDT05GSUdfQVJNX1ZJUlRV
QUxfSU9NTVUNCj4gK3N0YXRpYyB2b2lkIG1vZGlmeV9wZmR0X25vZGUodm9pZCAqcGZkdCwgaW50
IG5vZGVvZmYsIHN0cnVjdCBkb21haW4gKmQpDQo+IHsNCj4gICAgIGludCBwcm9wbGVuLCBpLCBy
YzsNCj4gICAgIGNvbnN0IGZkdDMyX3QgKnByb3A7DQo+ICAgICBmZHQzMl90ICpwcm9wX2M7DQo+
ICsgICAgdWludDMyX3QgdnNpZDsNCj4gDQo+IC0gICAgcHJvcCA9IGZkdF9nZXRwcm9wKHBmZHQs
IG5vZGVvZmYsICJpb21tdXMiLCAmcHJvcGxlbik7DQo+ICsgICAgcHJvcCA9IGZkdF9nZXRwcm9w
KHBmZHQsIG5vZGVvZmYsICJpb21tdXMiLCAmcHJvcGxlbik7IA0KPiAgICAgaWYgKCAhcHJvcCAp
DQo+ICAgICAgICAgcmV0dXJuOw0KPiANCj4gICAgIHByb3BfYyA9IHh6YWxsb2NfYnl0ZXMocHJv
cGxlbik7DQo+IA0KPiArICAgIC8qIA0KPiArICAgICAqIEFzc2lnbiA8dklPTU1VIHZTSUQ+IHBh
aXJzIHRvIGlvbW11cyBwcm9wZXJ0eSBhbmQgZXN0YWJsaXNoDQo+ICsgICAgICogdlNJRC0+cFNJ
RCBtYXBwaW5ncw0KPiArICAgICovDQo+ICAgICBmb3IgKCBpID0gMDsgaSA8IHByb3BsZW4gLyA4
OyArK2kgKQ0KPiAgICAgew0KPiAgICAgICAgIHByb3BfY1tpICogMl0gPSBjcHVfdG9fZmR0MzIo
R1VFU1RfUEhBTkRMRV9WU01NVVYzKTsNCj4gLSAgICAgICAgcHJvcF9jW2kgKiAyICsgMV0gPSBw
cm9wW2kgKiAyICsgMV07DQo+ICsgICAgICAgIHJjID0gdmlvbW11X2FsbG9jYXRlX2ZyZWVfdmlk
KGQsIGZkdDMyX3RvX2NwdShwcm9wW2kgKiAyICsgMV0pLCAmdnNpZCk7DQo+ICsgICAgICAgIGlm
KCByYyApIHsNCg0KTklUOiBjb2Rlc3R5bGUsIHNwYWNlIGFmdGVyIOKAmGlmJw0KDQo+ICsgICAg
ICAgICAgICBkcHJpbnRrKFhFTkxPR19FUlIsICJGYWlsZWQgdG8gYWxsb2NhdGUgbmV3IHZTSUQg
Zm9yIGlvbW11IGRldmljZSIpOw0KPiArICAgICAgICAgICAgcmV0dXJuOw0KPiArICAgICAgICB9
DQo+ICsgICAgICAgIHByb3BfY1tpICogMiArIDFdID0gY3B1X3RvX2ZkdDMyKHZzaWQpOw0KPiAg
ICAgfQ0KPiANCj4gICAgIHJjID0gZmR0X3NldHByb3AocGZkdCwgbm9kZW9mZiwgImlvbW11cyIs
IHByb3BfYywgcHJvcGxlbik7DQo+IEBAIC0zNDUsMTEgKzM1OCwxNCBAQCBzdGF0aWMgdm9pZCBt
b2RpZnlfcGZkdF9ub2RlKHZvaWQgKnBmZHQsIGludCBub2Rlb2ZmKQ0KPiANCj4gICAgIHJldHVy
bjsNCj4gfQ0KPiArI2Vsc2UNCj4gKyAgICBzdGF0aWMgdm9pZCBtb2RpZnlfcGZkdF9ub2RlKHZv
aWQgKnBmZHQsIGludCBub2Rlb2ZmLCBzdHJ1Y3QgZG9tYWluICpkKSB7fQ0KPiArI2VuZGlmDQo+
IA0KPiBzdGF0aWMgaW50IF9faW5pdCBzY2FuX3BmZHRfbm9kZShzdHJ1Y3Qga2VybmVsX2luZm8g
KmtpbmZvLCB2b2lkICpwZmR0LA0KPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBp
bnQgbm9kZW9mZiwNCj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdWludDMyX3Qg
YWRkcmVzc19jZWxscywgdWludDMyX3Qgc2l6ZV9jZWxscywNCj4gLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGJvb2wgc2Nhbl9wYXNzdGhyb3VnaF9wcm9wKQ0KPiArICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgYm9vbCBzY2FuX3Bhc3N0aHJvdWdoX3Byb3AsIHN0cnVj
dCBkb21haW4gKmQpDQo+IHsNCj4gICAgIGludCByYyA9IDA7DQo+ICAgICB2b2lkICpmZHQgPSBr
aW5mby0+ZmR0Ow0KPiBAQCAtMzcyLDkgKzM4OCw5IEBAIHN0YXRpYyBpbnQgX19pbml0IHNjYW5f
cGZkdF9ub2RlKHN0cnVjdCBrZXJuZWxfaW5mbyAqa2luZm8sIHZvaWQgKnBmZHQsDQo+ICAgICBu
b2RlX25leHQgPSBmZHRfZmlyc3Rfc3Vibm9kZShwZmR0LCBub2Rlb2ZmKTsNCj4gICAgIHdoaWxl
ICggbm9kZV9uZXh0ID4gMCApDQo+ICAgICB7DQo+IC0gICAgICAgIG1vZGlmeV9wZmR0X25vZGUo
cGZkdCwgbm9kZV9uZXh0KTsNCj4gKyAgICAgICAgbW9kaWZ5X3BmZHRfbm9kZShwZmR0LCBub2Rl
X25leHQsIGQpOw0KPiAgICAgICAgIHJjID0gc2Nhbl9wZmR0X25vZGUoa2luZm8sIHBmZHQsIG5v
ZGVfbmV4dCwgYWRkcmVzc19jZWxscywgc2l6ZV9jZWxscywNCj4gLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBzY2FuX3Bhc3N0aHJvdWdoX3Byb3ApOw0KPiArICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHNjYW5fcGFzc3Rocm91Z2hfcHJvcCwgZCk7DQo+ICAgICAgICAgaWYgKCByYyAp
DQo+ICAgICAgICAgICAgIHJldHVybiByYzsNCj4gDQo+IEBAIC00NDMsNyArNDU5LDcgQEAgc3Rh
dGljIGludCBfX2luaXQgZG9tYWluX2hhbmRsZV9kdGJfYm9vdF9tb2R1bGUoc3RydWN0IGRvbWFp
biAqZCwNCj4gICAgICAgICAgICAgcmVzID0gc2Nhbl9wZmR0X25vZGUoa2luZm8sIHBmZHQsIG5v
ZGVfbmV4dCwNCj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRFRfUk9PVF9OT0RF
X0FERFJfQ0VMTFNfREVGQVVMVCwNCj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
RFRfUk9PVF9OT0RFX1NJWkVfQ0VMTFNfREVGQVVMVCwNCj4gLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGZhbHNlKTsNCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGZhbHNlLCBkKTsNCj4gICAgICAgICAgICAgaWYgKCByZXMgKQ0KPiAgICAgICAgICAgICAgICAg
Z290byBvdXQ7DQo+ICAgICAgICAgICAgIGNvbnRpbnVlOw0KPiBAQCAtNDUzLDcgKzQ2OSw3IEBA
IHN0YXRpYyBpbnQgX19pbml0IGRvbWFpbl9oYW5kbGVfZHRiX2Jvb3RfbW9kdWxlKHN0cnVjdCBk
b21haW4gKmQsDQo+ICAgICAgICAgICAgIHJlcyA9IHNjYW5fcGZkdF9ub2RlKGtpbmZvLCBwZmR0
LCBub2RlX25leHQsDQo+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERUX1JPT1Rf
Tk9ERV9BRERSX0NFTExTX0RFRkFVTFQsDQo+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIERUX1JPT1RfTk9ERV9TSVpFX0NFTExTX0RFRkFVTFQsDQo+IC0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICB0cnVlKTsNCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHRydWUsIGQpOw0KPiAgICAgICAgICAgICBpZiAoIHJlcyApDQo+ICAgICAgICAgICAgICAg
ICBnb3RvIG91dDsNCj4gICAgICAgICAgICAgY29udGludWU7DQo+IGRpZmYgLS1naXQgYS94ZW4v
ZHJpdmVycy9wYXNzdGhyb3VnaC9hcm0vdmlvbW11LmMgYi94ZW4vZHJpdmVycy9wYXNzdGhyb3Vn
aC9hcm0vdmlvbW11LmMNCj4gaW5kZXggNWY1ODkyZmJiMi4uNGI3ODM3YTkxZiAxMDA2NDQNCj4g
LS0tIGEveGVuL2RyaXZlcnMvcGFzc3Rocm91Z2gvYXJtL3Zpb21tdS5jDQo+ICsrKyBiL3hlbi9k
cml2ZXJzL3Bhc3N0aHJvdWdoL2FybS92aW9tbXUuYw0KPiBAQCAtNzEsNiArNzEsMTMgQEAgaW50
IHZpb21tdV9yZWxpbnF1aXNoX3Jlc291cmNlcyhzdHJ1Y3QgZG9tYWluICpkKQ0KPiAgICAgcmV0
dXJuIGN1cl92aW9tbXUtPm9wcy0+cmVsaW5xdWlzaF9yZXNvdXJjZXMoZCk7DQo+IH0NCj4gDQo+
ICtpbnQgdmlvbW11X2FsbG9jYXRlX2ZyZWVfdmlkKHN0cnVjdCBkb21haW4gKmQsIHVpbnQzMl90
IGlkLCB1aW50MzJfdCAqdmlkKSB7DQo+ICsgICAgaWYgKCAhY3VyX3Zpb21tdSApDQo+ICsgICAg
ICAgIHJldHVybiAtRU5PREVWOw0KPiArDQo+ICsgICAgcmV0dXJuIGN1cl92aW9tbXUtPm9wcy0+
YWxsb2NhdGVfZnJlZV92aWQoZCwgaWQsIHZpZCk7DQo+ICt9DQo+ICsNCj4gdWludDE2X3Qgdmlv
bW11X2dldF90eXBlKHZvaWQpDQo+IHsNCj4gICAgIGlmICggIWN1cl92aW9tbXUgKQ0KPiBkaWZm
IC0tZ2l0IGEveGVuL2RyaXZlcnMvcGFzc3Rocm91Z2gvYXJtL3ZzbW11LXYzLmMgYi94ZW4vZHJp
dmVycy9wYXNzdGhyb3VnaC9hcm0vdnNtbXUtdjMuYw0KPiBpbmRleCA1ZDBkYWJkMmIyLi42MDRm
MDllOTgwIDEwMDY0NA0KPiAtLS0gYS94ZW4vZHJpdmVycy9wYXNzdGhyb3VnaC9hcm0vdnNtbXUt
djMuYw0KPiArKysgYi94ZW4vZHJpdmVycy9wYXNzdGhyb3VnaC9hcm0vdnNtbXUtdjMuYw0KPiBA
QCAtNTMsNiArNTMsOCBAQCBleHRlcm4gY29uc3Qgc3RydWN0IHZpb21tdV9kZXNjIF9fcmVhZF9t
b3N0bHkgKmN1cl92aW9tbXU7DQo+ICNkZWZpbmUgc21tdV9nZXRfc3RlX3MxY3R4cHRyKHgpICAg
IEZJRUxEX1BSRVAoU1RSVEFCX1NURV8wX1MxQ1RYUFRSX01BU0ssIFwNCj4gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgRklFTERfR0VUKFNUUlRBQl9TVEVfMF9TMUNUWFBUUl9N
QVNLLCB4KSkNCj4gDQo+ICsjZGVmaW5lIE1BWF9WU0lEICAgKDEgPDwgU01NVV9JRFIxX1NJRFNJ
WkUpDQo+ICsNCj4gLyogZXZlbnQgcXVldWUgZW50cnkgKi8NCj4gc3RydWN0IGFybV9zbW11X2V2
dHFfZW50IHsNCj4gICAgIC8qIENvbW1vbiBmaWVsZHMgKi8NCj4gQEAgLTEwMCw2ICsxMDIsMTQg
QEAgc3RydWN0IGFybV92c21tdV9xdWV1ZSB7DQo+ICAgICB1aW50OF90ICAgICBtYXhfbl9zaGlm
dDsNCj4gfTsNCj4gDQo+ICsvKiB2U0lELT5wU0lEIG1hcHBpbmcgZW50cnkgKi8NCj4gK3N0cnVj
dCB2c2lkX2VudHJ5IHsNCj4gKyAgICBib29sICAgICAgICB2YWxpZDsNCj4gKyAgICB1aW50MzJf
dCAgICB2c2lkOw0KPiArICAgIHN0cnVjdCBob3N0X2lvbW11ICpwaHlzX3NtbXU7DQo+ICsgICAg
dWludDMyX3QgICAgcHNpZDsNCj4gK307DQo+ICsNCj4gc3RydWN0IHZpcnRfc21tdSB7DQo+ICAg
ICBzdHJ1Y3QgICAgICBkb21haW4gKmQ7DQo+ICAgICBzdHJ1Y3QgICAgICBsaXN0X2hlYWQgdmlv
bW11X2xpc3Q7DQo+IEBAIC0xMTgsNiArMTI4LDcgQEAgc3RydWN0IHZpcnRfc21tdSB7DQo+ICAg
ICB1aW50NjRfdCAgICBldnRxX2lycV9jZmcwOw0KPiAgICAgc3RydWN0ICAgICAgYXJtX3ZzbW11
X3F1ZXVlIGV2dHEsIGNtZHE7DQo+ICAgICBzcGlubG9ja190ICBjbWRfcXVldWVfbG9jazsNCj4g
KyAgICBzdHJ1Y3QgdnNpZF9lbnRyeSAqdnNpZHM7DQo+IH07DQo+IA0KPiAvKiBRdWV1ZSBtYW5p
cHVsYXRpb24gZnVuY3Rpb25zICovDQo+IEBAIC00MjYsNiArNDM3LDI5IEBAIHN0YXRpYyBpbnQg
YXJtX3ZzbW11X2hhbmRsZV9jZmdpX3N0ZShzdHJ1Y3QgdmlydF9zbW11ICpzbW11LCB1aW50NjRf
dCAqY21kcHRyKQ0KPiAgICAgc3RydWN0IGFybV92c21tdV9zMV90cmFuc19jZmcgczFfY2ZnID0g
ezB9Ow0KPiAgICAgdWludDMyX3Qgc2lkID0gc21tdV9jbWRfZ2V0X3NpZChjbWRwdHJbMF0pOw0K
PiAgICAgc3RydWN0IGlvbW11X2d1ZXN0X2NvbmZpZyBndWVzdF9jZmcgPSB7MH07DQo+ICsgICAg
dWludDMyX3QgcHNpZDsNCj4gKyAgICBzdHJ1Y3QgYXJtX3NtbXVfZXZ0cV9lbnQgZW50ID0gew0K
PiArICAgICAgICAub3Bjb2RlID0gRVZUX0lEX0JBRF9TVEUsDQo+ICsgICAgICAgIC5zaWQgPSBz
aWQsDQo+ICsgICAgICAgIC5jX2JhZF9zdGVfc3RyZWFtaWQgPSB7DQo+ICsgICAgICAgICAgICAu
c3NpZCA9IDAsDQo+ICsgICAgICAgICAgICAuc3N2ID0gZmFsc2UsDQo+ICsgICAgICAgIH0sDQo+
ICsgICAgfTsNCj4gKw0KPiArICAgIC8qIFNJRHMgaWRlbnRpdHkgbWFwcGVkIGZvciBIVyBkb21h
aW4gKi8NCj4gKyAgICBpZiAoIGlzX2hhcmR3YXJlX2RvbWFpbihkKSApDQo+ICsgICAgICAgIHBz
aWQgPSBzaWQ7DQo+ICsgICAgZWxzZSB7DQo+ICsgICAgICAgIC8qIHZTSUQgb3V0IG9mIHJhbmdl
IG9yIG5vdCBtYXBwZWQgdG8gcFNJRCAqLw0KPiArICAgICAgICBpZiAoIHNpZCA+PSBNQVhfVlNJ
RCB8fCAhc21tdS0+dnNpZHNbc2lkXS52YWxpZCApDQo+ICsgICAgICAgIHsNCj4gKyAgICAgICAg
ICAgIGFybV92c21tdV9zZW5kX2V2ZW50KHNtbXUsICZlbnQpOw0KPiArICAgICAgICAgICAgcmV0
dXJuIC1FSU5WQUw7DQo+ICsgICAgICAgIH0NCj4gKw0KPiArICAgICAgICBwc2lkID0gc21tdS0+
dnNpZHNbc2lkXS5wc2lkOw0KPiArICAgIH0NCj4gDQo+ICAgICByZXQgPSBhcm1fdnNtbXVfZmlu
ZF9zdGUoc21tdSwgc2lkLCBzdGUpOw0KPiAgICAgaWYgKCByZXQgKQ0KPiBAQCAtNDQ2LDcgKzQ4
MCw3IEBAIHN0YXRpYyBpbnQgYXJtX3ZzbW11X2hhbmRsZV9jZmdpX3N0ZShzdHJ1Y3QgdmlydF9z
bW11ICpzbW11LCB1aW50NjRfdCAqY21kcHRyKQ0KPiAgICAgZWxzZQ0KPiAgICAgICAgIGd1ZXN0
X2NmZy5jb25maWcgPSBBUk1fU01NVV9ET01BSU5fTkVTVEVEOw0KPiANCj4gLSAgICByZXQgPSBo
ZC0+cGxhdGZvcm1fb3BzLT5hdHRhY2hfZ3Vlc3RfY29uZmlnKGQsIHNpZCwgJmd1ZXN0X2NmZyk7
DQo+ICsgICAgcmV0ID0gaGQtPnBsYXRmb3JtX29wcy0+YXR0YWNoX2d1ZXN0X2NvbmZpZyhkLCBw
c2lkLCAmZ3Vlc3RfY2ZnKTsNCj4gICAgIGlmICggcmV0ICkNCj4gICAgICAgICByZXR1cm4gcmV0
Ow0KPiANCj4gQEAgLTc5MSw2ICs4MjUsNyBAQCBzdGF0aWMgaW50IHZzbW11djNfaW5pdF9zaW5n
bGUoc3RydWN0IGRvbWFpbiAqZCwgcGFkZHJfdCBhZGRyLA0KPiAgICAgc21tdS0+Y21kcS5lbnRf
c2l6ZSA9IENNRFFfRU5UX0RXT1JEUyAqIERXT1JEU19CWVRFUzsNCj4gICAgIHNtbXUtPmV2dHEu
cV9iYXNlID0gRklFTERfUFJFUChRX0JBU0VfTE9HMlNJWkUsIFNNTVVfRVZUUVMpOw0KPiAgICAg
c21tdS0+ZXZ0cS5lbnRfc2l6ZSA9IEVWVFFfRU5UX0RXT1JEUyAqIERXT1JEU19CWVRFUzsNCj4g
KyAgICBzbW11LT52c2lkcyA9IHh6YWxsb2NfYXJyYXkoc3RydWN0IHZzaWRfZW50cnksIE1BWF9W
U0lEKTsNCg0Kd2Ugc2hvdWxkIGNoZWNrIGlmIGFsbG9jYXRpb24gaXMgb2sNCg0KPiANCj4gICAg
IHNwaW5fbG9ja19pbml0KCZzbW11LT5jbWRfcXVldWVfbG9jayk7DQo+IA0KPiBAQCAtODUwLDgg
Kzg4NSw5IEBAIGludCB2c21tdXYzX3JlbGlucXVpc2hfcmVzb3VyY2VzKHN0cnVjdCBkb21haW4g
KmQpDQo+ICAgICBpZiAoIGxpc3RfaGVhZF9pc19udWxsKCZkLT5hcmNoLnZpb21tdV9saXN0KSAp
DQo+ICAgICAgICAgcmV0dXJuIDA7DQo+IA0KPiAtICAgIGxpc3RfZm9yX2VhY2hfZW50cnlfc2Fm
ZShwb3MsIHRlbXAsICZkLT5hcmNoLnZpb21tdV9saXN0LCB2aW9tbXVfbGlzdCApDQo+ICsgICAg
bGlzdF9mb3JfZWFjaF9lbnRyeV9zYWZlKHBvcywgdGVtcCwgJmQtPmFyY2gudmlvbW11X2xpc3Qs
IHZpb21tdV9saXN0KQ0KPiAgICAgew0KPiArICAgICAgICB4ZnJlZShwb3MtPnZzaWRzKTsNCj4g
ICAgICAgICBsaXN0X2RlbCgmcG9zLT52aW9tbXVfbGlzdCk7DQo+ICAgICAgICAgeGZyZWUocG9z
KTsNCj4gICAgIH0NCj4gQEAgLTg1OSw4ICs4OTUsMzUgQEAgaW50IHZzbW11djNfcmVsaW5xdWlz
aF9yZXNvdXJjZXMoc3RydWN0IGRvbWFpbiAqZCkNCj4gICAgIHJldHVybiAwOw0KPiB9DQo+IA0K
PiAraW50IHZzbW11djNfYWxsb2NhdGVfZnJlZV92aWQoc3RydWN0IGRvbWFpbiAqZCwgdWludDMy
X3QgaWQsIHVpbnQzMl90ICp2aWQpIHsNCj4gKyAgICB1aW50MTZfdCBpID0gMDsNCj4gKyAgICBz
dHJ1Y3QgdmlydF9zbW11ICpzbW11Ow0KPiArDQo+ICsgICAgaWYgKCBsaXN0X2hlYWRfaXNfbnVs
bCgmZC0+YXJjaC52aW9tbXVfbGlzdCkgKQ0KPiArICAgICAgICByZXR1cm4gLUVOT0RFVjsNCj4g
Kw0KPiArICAgIHNtbXUgPSBsaXN0X2ZpcnN0X2VudHJ5KCZkLT5hcmNoLnZpb21tdV9saXN0LCBz
dHJ1Y3QgdmlydF9zbW11LCB2aW9tbXVfbGlzdCk7DQo+ICsNCj4gKyAgICAvKiBHZXQgZmlyc3Qg
ZnJlZSB2U0lEIGluZGV4ICovDQo+ICsgICAgd2hpbGUgKCBzbW11LT52c2lkc1tpXS52YWxpZCAm
JiBpKysgPCBNQVhfVlNJRCApOw0KDQpUaGlzIHdpbGwgYWNjZXNzIE9PQiB3aGVuIHlvdSB3aWxs
IHJlYWNoIE1BWF9WU0lEIGFuZCBsYXRlciBldmFsdWF0ZSBzbW11LT52c2lkc1tpXS52YWxpZCwN
Ckkgc3VnZ2VzdCB0byBtb2RpZnkgbGlrZSB0aGlzOg0KDQp3aGlsZSAoIGkgPCBNQVhfVlNJRCAm
JiBzbW11LT52c2lkc1tpXS52YWxpZCApDQogICAgaSsrOw0KDQo+ICsNCj4gKyAgICAvKiBNYXgg
bnVtYmVyIG9mIHZTSURzIGFscmVhZHkgYWxsb2NhdGVkPyAqLw0KPiArICAgIGlmICggaSA9PSBN
QVhfVlNJRCkgew0KDQpOSVQ6IGNvZGUgc3R5bGUsIHNwYWNlIGJlZm9yZSDigJgpJw0KDQo+ICsg
ICAgICAgIHJldHVybiAtRU5PTUVNOw0KPiArICAgIH0NCj4gKw0KPiArICAgIC8qIEVzdGFibGlz
aCB2U0lELT5wU0lEIG1hcHBpbmcgKi8NCj4gKyAgICBzbW11LT52c2lkc1tpXS52YWxpZCA9IHRy
dWU7DQo+ICsgICAgc21tdS0+dnNpZHNbaV0udnNpZCA9IGk7DQo+ICsgICAgc21tdS0+dnNpZHNb
aV0ucHNpZCA9IGlkOw0KPiArICAgICp2aWQgPSBzbW11LT52c2lkc1tpXS52c2lkOw0KDQpXaHkg
aXMgcGh5c19zbW11IG5ldmVyIHBvcHVsYXRlZCBhbmQgdXNlZD8NCg0KPiArDQo+ICsgICAgcmV0
dXJuIDA7DQo+ICt9DQo+ICsNCj4gc3RhdGljIGNvbnN0IHN0cnVjdCB2aW9tbXVfb3BzIHZzbW11
djNfb3BzID0gew0KPiAgICAgLmRvbWFpbl9pbml0ID0gZG9tYWluX3ZzbW11djNfaW5pdCwNCj4g
KyAgICAuYWxsb2NhdGVfZnJlZV92aWQgPSB2c21tdXYzX2FsbG9jYXRlX2ZyZWVfdmlkLA0KPiAg
ICAgLnJlbGlucXVpc2hfcmVzb3VyY2VzID0gdnNtbXV2M19yZWxpbnF1aXNoX3Jlc291cmNlcywN
Cj4gfTsNCj4gDQoNCkNoZWVycywNCkx1Y2ENCg0K


From xen-devel-bounces@lists.xenproject.org Mon Apr 13 16:05:55 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 13 Apr 2026 16:05:55 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1281278.1564267 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wCJn9-0004VK-Ky; Mon, 13 Apr 2026 16:05:39 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1281278.1564267; Mon, 13 Apr 2026 16:05: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 1wCJn9-0004VD-I3; Mon, 13 Apr 2026 16:05:39 +0000
Received: by outflank-mailman (input) for mailman id 1281278;
 Mon, 13 Apr 2026 16:05:38 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92) id 1wCJn8-0004V7-Ct
 for xen-devel@lists.xenproject.org; Mon, 13 Apr 2026 16:05:38 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wCJn7-003mXt-KV
 for xen-devel@lists.xenproject.org; Mon, 13 Apr 2026 18:05:37 +0200
Received: from [10.42.69.11] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <oleksii.kurochko@gmail.com>)
 id 69dd1444-2eae-0a2a0a5409dd-0a2a450bc5c0-42
 for <xen-devel@lists.xenproject.org>; Mon, 13 Apr 2026 18:05:37 +0200
Received: from [209.85.128.51] (helo=mail-wm1-f51.google.com)
 by tlsNG-42698a.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.0)
 (envelope-from <oleksii.kurochko@gmail.com>)
 id 69dd1451-bca8-0a2a450b0019-d1558033f134-3
 for <xen-devel@lists.xenproject.org>; Mon, 13 Apr 2026 18:05:37 +0200
Received: by mail-wm1-f51.google.com with SMTP id
 5b1f17b1804b1-488ab2db91aso72093245e9.3
 for <xen-devel@lists.xenproject.org>; Mon, 13 Apr 2026 09:05:37 -0700 (PDT)
Received: from [192.168.1.6] (user-109-243-69-121.play-internet.pl.
 [109.243.69.121]) by smtp.gmail.com with ESMTPSA id
 5b1f17b1804b1-488d5396293sm290575095e9.15.2026.04.13.09.05.35
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Mon, 13 Apr 2026 09:05:35 -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=20251104 header.d=gmail.com header.i="@gmail.com" header.h="Content-Transfer-Encoding:Subject:From:Cc:To:Content-Language:User-Agent:MIME-Version:Date:Message-ID"
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=gmail.com; s=20251104; t=1776096337; x=1776701137; darn=lists.xenproject.org;
        h=content-transfer-encoding:subject:from:cc:to:content-language
         :user-agent:mime-version:date:message-id:from:to:cc:subject:date
         :message-id:reply-to;
        bh=l9kSlr7M/cd/U+HrSMaeGiAGAoMt2Lf/q/IlZijcvCc=;
        b=fB9K0qLMWas0PF+PPJVXRm70qwrbkEJgn600TzT7AOSrqf2T/BFsVJSwtg056huA9Y
         kfU/ECnSEqTHblvEq/hXysrZbSvhY80D0avyvHlrEC1DFLeabTM8DmQs4aTAL7ICOAhG
         mtStvVAvK7FaV9nuFOnJ+zrIAwmOgA/wReQNi40lWFCcN8i0l13IgC0CLovrKU2MTvMc
         +s6eaahEhJ1ra86qywxzwlc/xtAtZIoVEHhYN51T3l3Rbowytl+PF5mSWQjSZ1tk3bkZ
         Y7vWEyDyfFPNDiW3hAc3j5g9ggDDfFscRpVGdAAHurQCKG+OR6Is/0+oExlBf/3FXddC
         9+7Q==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20251104; t=1776096337; x=1776701137;
        h=content-transfer-encoding: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;
        bh=l9kSlr7M/cd/U+HrSMaeGiAGAoMt2Lf/q/IlZijcvCc=;
        b=OG1p3YFHu/45g8b8iFLujVqwTrKmmuN8cJ3RU19Ceqkkjml26ojyrP9lKuoc3Ngzii
         +/xYr1Iusi3849c58i6dLGL8Oq/yu2ZZFklcOeb2bPXpoAdWqtZBLtT6gk8qBmEYr0Ub
         vkYsfV7npSqplmZ46Rk+8DWi6S/Ayj94fmJ1XGMG0xzj3/3mIxvYfshs3GbBhet8ACvj
         5izvnID2n64OneEUo+hIFR/BW5Vx1SjeGINmpBtB6NhRQq4o9riQS/BlZxDRCWL7BRVs
         Ia/VoxZIax5qCr6TRTr537Uwo6317h3DjNpYvtXcpoxXokIY5QNdApEG9yLfcIIveBGz
         2FOw==
X-Gm-Message-State: AOJu0YzxVknl1wJXjy8Dz6tN2FIdAbBIF4R1e/g6SBWnKJh011QpyoYI
	e3IWQrgtK4oUxO98As8/d3PqXg7Z/TVP4P/B+hVJC+eSrfT8MK+t4B6PkVHc4w==
X-Gm-Gg: AeBDietzBQT2wpyK34/AewmYnsnpZ8aZj+ppRfRdVfsWPV+LJyC1JiMOQwmZ6HofFOn
	h2Ew0MTIRjK7Hlm6YXz6InludfHlcN4c3aSqquQBoNibM5qv1nX3pUpl0EYQZWp0Swkebqh0I6V
	cebORZBiRb4WaDkBfreyFxsUUf8lPPMeICmivbR6W7PM9bd8tZ62idHSaW/h4h41SJ0oYOcAY8a
	ucSpCSsYTgGWNeG5GRPEYkwImpDopQalbhc3RsudWtGkrzOQJw+Nl7GRHV6/HHeJL5JvnfEjfre
	4TZbZbUGKI8Q07CcfTqcoIFdXfwuc9looR6r9iVhBq697DCxiAbmyOQAWKtpZ39tXTgcc65f3Zb
	mY64kWqnGf0QEKy8Xbka5P4IO46p3o183EJLvH9442Mntl8JpDGOyF2JCyzzT3ehB0DknkkzcPY
	rCUrT5TPbULckeUM51HLMbwstoq/Zh30EkOviUAQNHYU3XD0OUxPtmBEV6r+cv3ePBxkuXiJHWJ
	l5B/w2MmNMqfw==
X-Received: by 2002:a05:600c:608e:b0:488:8185:e672 with SMTP id 5b1f17b1804b1-488d688d2fbmr191377585e9.30.1776096336458;
        Mon, 13 Apr 2026 09:05:36 -0700 (PDT)
Message-ID: <b6e4dde9-0a59-4bdc-951c-2dbdf284c7ed@gmail.com>
Date: Mon, 13 Apr 2026 18:05:34 +0200
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Content-Language: en-US
To: Xen-devel <xen-devel@lists.xenproject.org>
Cc: "committers@xenproject.org" <committers@xenproject.org>,
 Community Manager <community.manager@xenproject.org>
From: Oleksii Kurochko <oleksii.kurochko@gmail.com>
Subject: [REMINDER] Last posting date for Xen 4.22 is Fri Apr 17, 2026
Content-Type: text/plain; charset=UTF-8; format=flowed
Content-Transfer-Encoding: 7bit
X-purgate-ID: tlsNG-42698a/1776096337-ED5532A1-57256222/10/73395122804
X-purgate-type: spam
X-purgate-size: 340

Hi all,

The last posting date for Xen 4.21 is Fri Apr 17, 2026. If you want your
features to be included for the release, please make sure they are 
posted for the first time before Fri Apr 17, 2026.

Full schedule can be found here:
    https://wiki.xenproject.org/wiki/Xen_Project_X.YY_Release_Notes

Best regards,
   Oleksii


From xen-devel-bounces@lists.xenproject.org Mon Apr 13 16:26:02 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 13 Apr 2026 16:26:02 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1281292.1564276 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wCK6n-0007Fm-7i; Mon, 13 Apr 2026 16:25:57 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1281292.1564276; Mon, 13 Apr 2026 16:25: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 1wCK6n-0007Ff-4b; Mon, 13 Apr 2026 16:25:57 +0000
Received: by outflank-mailman (input) for mailman id 1281292;
 Mon, 13 Apr 2026 16:25:55 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <Luca.Fancellu@arm.com>) id 1wCK6l-0007FZ-C3
 for xen-devel@lists.xenproject.org; Mon, 13 Apr 2026 16:25:55 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wCK6g-003dVZ-Q1
 for xen-devel@lists.xenproject.org; Mon, 13 Apr 2026 18:25:52 +0200
Received: from [10.42.69.8] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <Luca.Fancellu@arm.com>)
 id 69dd190c-e002-0a2a0a5209dd-0a2a45089368-12
 for <xen-devel@lists.xenproject.org>; Mon, 13 Apr 2026 18:25:52 +0200
Received: from [40.107.130.48]
 (helo=MRWPR03CU001.outbound.protection.outlook.com)
 by tlsNG-c1860d.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.0)
 (envelope-from <Luca.Fancellu@arm.com>)
 id 69dd190f-fab6-0a2a45080019-286b82305bc1-4
 for <xen-devel@lists.xenproject.org>; Mon, 13 Apr 2026 18:25:51 +0200
Received: from DUZP191CA0066.EURP191.PROD.OUTLOOK.COM (2603:10a6:10:4fa::9) by
 VE1PR08MB5837.eurprd08.prod.outlook.com (2603:10a6:800:1a9::23) with
 Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9769.48; Mon, 13 Apr
 2026 16:25:46 +0000
Received: from DU6PEPF0000952A.eurprd02.prod.outlook.com
 (2603:10a6:10:4fa:cafe::d6) by DUZP191CA0066.outlook.office365.com
 (2603:10a6:10:4fa::9) with Microsoft SMTP Server (version=TLS1_3,
 cipher=TLS_AES_256_GCM_SHA384) id 15.20.9769.48 via Frontend Transport; Mon,
 13 Apr 2026 16:25:46 +0000
Received: from outbound-uk1.az.dlp.m.darktrace.com (4.158.2.129) by
 DU6PEPF0000952A.mail.protection.outlook.com (10.167.8.11) with Microsoft SMTP
 Server (version=TLS1_3, cipher=TLS_AES_256_GCM_SHA384) id 15.20.9769.17 via
 Frontend Transport; Mon, 13 Apr 2026 16:25:46 +0000
Received: from DU2PR08MB7272.eurprd08.prod.outlook.com (2603:10a6:10:2d7::16)
 by PAVPR08MB9186.eurprd08.prod.outlook.com (2603:10a6:102:30c::16)
 with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9769.48; Mon, 13 Apr
 2026 16:24:43 +0000
Received: from DU2PR08MB7272.eurprd08.prod.outlook.com
 ([fe80::5d34:206f:373:a323]) by DU2PR08MB7272.eurprd08.prod.outlook.com
 ([fe80::5d34:206f:373:a323%6]) with mapi id 15.20.9769.046; Mon, 13 Apr 2026
 16:24: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=arm.com header.i="@arm.com" header.h="From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck"; dkim=pass header.s=selector1 header.d=arm.com header.i="@arm.com" header.h="From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck"
ARC-Seal: i=2; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=pass;
 b=vOeCsu0vn7rf42EUghtSjZOmhHDDyrGSHSFxQWyN7KLv8znHmrO5WfmHXbWchNMmlyVxGybb9BIihYFafBT4Y7gWOUqYrjoLRVhVyTlG57N9ROra5ohZPYLr+SBZn9hAPu+4ga9ZDuVpZc12bXSis0OFc7FGpKeV284T/G3pQWX1qNtqWpmOVwY6SdnCv1/jJA3D40W0Wg3Ee4sunj6ELxi9sgyjFP71G/OJCdeWKj3hssUzY9j3/lsTNupufBkEChZslWAsMPm8JOlo5FRuZdhixT6gIVxvpfX08wH8oMbaP944tEvOi3ZF5mf4sOIWmXVd0V3ouH0+Y+ErwjFPag==
ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com;
 s=arcselector10001;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1;
 bh=+rHOLqb1g2DktH40JBmSE0Qodwj7cYYJF2/7diWxsgY=;
 b=rRGAPTDSqBu+XSIrf0mnXxAWVi7mybePECglN0tlBjMJeVAkh6I6aiTzLy/Qo2NoXJptWW2yjBpm2vtn2J/xI/fSO5Int3xMBP+Wr6PIm8ZGPW2fZC6feldSfQ7cOB3KWqDsRCwFgVPMZfC1IvbkIVqSoCSg+A6V0apzlU5juHakrsX9m3XEprVjwRosDdVmnJN15hYDgqAL6k/aQ6Em/aIkL+oQcrrE9EP4Iky4UbfqDDvXLQ6fTxcZcceoCrlsqnwicPMyM26gMOolePigThBr+oG2oKmZETlnAxZzWqJUxGEADBbBj+GPYfjIEZbv34aiZd9nUlimxpZRAHhDnw==
ARC-Authentication-Results: i=2; mx.microsoft.com 1; spf=pass (sender ip is
 4.158.2.129) smtp.rcpttodomain=epam.com smtp.mailfrom=arm.com; dmarc=pass
 (p=none sp=none pct=100) action=none header.from=arm.com; dkim=pass
 (signature was verified) header.d=arm.com; arc=pass (0 oda=1 ltdi=1
 spf=[1,1,smtp.mailfrom=arm.com] dkim=[1,1,header.d=arm.com]
 dmarc=[1,1,header.from=arm.com])
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=arm.com; s=selector1;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck;
 bh=+rHOLqb1g2DktH40JBmSE0Qodwj7cYYJF2/7diWxsgY=;
 b=Ma4ipyKpreh4gjZNB05YXYcYXAh5ScT8gYHbahQGtbMRP2fq4VSYsRwjQ97OsZBsTqhw2kUMCkI5cwvD6dRrxfw3Thi2ZtRgcc3JPfKHiKvng6AiMYIMsk7DHxLMdTwnxSvXF8ZNFG1cH47xs1I5BEk4R+/CQl0X26GfiVy/k0I=
X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 4.158.2.129)
 smtp.mailfrom=arm.com; dkim=pass (signature was verified)
 header.d=arm.com;dmarc=pass action=none header.from=arm.com;
Received-SPF: Pass (protection.outlook.com: domain of arm.com designates
 4.158.2.129 as permitted sender) receiver=protection.outlook.com;
 client-ip=4.158.2.129; helo=outbound-uk1.az.dlp.m.darktrace.com; pr=C
ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none;
 b=f/Q0IzIX+wDBOKbQnJJFagaxAxO2fSLXeVWkiTXc7IcPt04w/pR1WHOxc9tX8Tu2dvzPhwW/Y68x58prA9SIBc8z1Z5pqPxk55tIj2arMJnId9ouLG9gohIP1IVdZPSsLJ4nOZ9ZUxvddhcEK93muBChsO50ALAv4vojrIceos0ENpVZC4bb3S6qRqJKsEV6WM9OJNhYooGDKSQq07tIOtSzO6qpIpsgqOEpi0Lgf6h8ULeph0CUYA/8OfvtbJmDZCh6EBQtw0puN/iYPZK4bufaf3EEiN3FXljP876tLy3BKrnBs9pBdm27gi/Uostu5YL7AyRUje4yTHQtcXDYTQ==
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com;
 s=arcselector10001;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1;
 bh=+rHOLqb1g2DktH40JBmSE0Qodwj7cYYJF2/7diWxsgY=;
 b=aHEAMjOLe2y+zGKehL+4BRftJiTcr9ucnE3pnT0rNb56cc3FwquzpL0w+uiudpU6NOp94aXwg1sYNTDro+cSpUfSXbOFk4YDb7nLKtcrDQUqRC6h9/bzxj2jM9nOPERhRlA5QxweiPjMNixgW34Q3mavsfHgUjIjMGlsnmzAhQVidl+LJAt4u5q15Wg6g1LpN2+ps5NtcBHq35fIZd8ZU4vmgGmMjsdiJyGeIAU380u7XHmw7PSBvzZiRbSBx6CLkI/61iJaz2cRLXshDwMF48XUeaGC7GADD9WTVA0lMHi+NCsrUKsqUgSvRZILrrgsnUOosPBnukLatR6lcN1yDA==
ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass
 smtp.mailfrom=arm.com; dmarc=pass action=none header.from=arm.com; dkim=pass
 header.d=arm.com; arc=none
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=arm.com; s=selector1;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck;
 bh=+rHOLqb1g2DktH40JBmSE0Qodwj7cYYJF2/7diWxsgY=;
 b=Ma4ipyKpreh4gjZNB05YXYcYXAh5ScT8gYHbahQGtbMRP2fq4VSYsRwjQ97OsZBsTqhw2kUMCkI5cwvD6dRrxfw3Thi2ZtRgcc3JPfKHiKvng6AiMYIMsk7DHxLMdTwnxSvXF8ZNFG1cH47xs1I5BEk4R+/CQl0X26GfiVy/k0I=
From: Luca Fancellu <Luca.Fancellu@arm.com>
To: Milan Djokic <milan_djokic@epam.com>
CC: "xen-devel@lists.xenproject.org" <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?B?Um9nZXIgUGF1IE1vbm7DqQ==?= <roger.pau@citrix.com>, Stefano
 Stabellini <sstabellini@kernel.org>, Bertrand Marquis
	<Bertrand.Marquis@arm.com>, Volodymyr Babchuk <Volodymyr_Babchuk@epam.com>,
	"Daniel P. Smith" <dpsmith@apertussolutions.com>
Subject: Re: [PATCH v3 22/23] libxl/arm: Introduce domctl command for IOMMU
 vSID/vRID mapping
Thread-Topic: [PATCH v3 22/23] libxl/arm: Introduce domctl command for IOMMU
 vSID/vRID mapping
Thread-Index: AQHcy2IISQU6+UC2eUGQqKsvfV2Idg==
Date: Mon, 13 Apr 2026 16:24:43 +0000
Message-ID: <65C47E3B-982A-4C31-A0F2-98A5822A94B4@arm.com>
References: <cover.1774918270.git.milan_djokic@epam.com>
 <9db4c7b985de8cafacf778c41c35699f2ef07fe2.1774918270.git.milan_djokic@epam.com>
In-Reply-To:
 <9db4c7b985de8cafacf778c41c35699f2ef07fe2.1774918270.git.milan_djokic@epam.com>
Accept-Language: en-GB, en-US
Content-Language: en-US
X-MS-Has-Attach:
X-MS-TNEF-Correlator:
x-mailer: Apple Mail (2.3826.700.81.1.6)
Authentication-Results-Original: dkim=none (message not signed)
 header.d=none;dmarc=none action=none header.from=arm.com;
x-ms-traffictypediagnostic:
	DU2PR08MB7272:EE_|PAVPR08MB9186:EE_|DU6PEPF0000952A:EE_|VE1PR08MB5837:EE_
X-MS-Office365-Filtering-Correlation-Id: bb88e3d7-b1a2-4377-cd59-08de99795129
x-checkrecipientrouted: true
nodisclaimer: true
X-MS-Exchange-SenderADCheck: 1
X-MS-Exchange-AntiSpam-Relay: 0
X-Microsoft-Antispam-Untrusted:
 BCL:0;ARA:13230040|376014|7416014|1800799024|366016|38070700021|22082099003|56012099003|18002099003;
X-Microsoft-Antispam-Message-Info-Original:
 Xi954p558dWdv2qR+bE6yU8Hk0SVwfflqCVu23DfWQvdr/whjVkzg6c1Nz/s9wjRcLHlES3lxcT5oqwY//kVZYQfq3WoIk2YWgvdbngZyDTMhhsX4ViVGs2NkHJqgVJR22q/SSTfDufl7zv4yjCBX0yyRxt5h9aG89mElasHM31OWIzbluj/kADgFGBoRUwOSdPVxVRYzE1abU9K/gh2p0YFvY51DpbAuLb2wYMMjWf09Ro6Z3bJzwsdY5Ns0WZF1VSyDdN8mFiot4kCVkUeyay88B5IWFIxICGJeI15WJk/ONCv0RK+KmI19SekSnTK/vY3r/qfdelAn+xgSwlYWKvChIoBHgffIBpjbbqZbHmyy0N0WtDA3YdbrCQkHM0oRkfXHs8LV55XEjpuKxYcL71z1HpLPLvvxkIQn+8YHLdj9fnqs1xpx40vQ1pL3GgZtyPEA/7N/uFRidDed3iaEptZHb+xgeunuWtUd0i0Yv6hhmPvpKWskwrFs+D8DmFbv8CVJYgpgLJR0Iq/YF/ySHitUjwV3cGPgLH+ApW0l8dfU6nbwRMPUe2u6SfhVk6DcpJoh+QqZC3610rrpU8f52+6vAHF9XMZNahaGLJFvruNfX3sCqVUiZsMfGc0K6BYe6JrOxOVVYLOgJA/CKudardAH6mbU6VRmN2xItJEEUxuBMwQB220XFuyDHprpXcXm19WqWt8nFzL/7sirIPjP6TDGKr7CI/7r3RLOcUVw4qfgZr0laxXWqrTKpsECHSAj6MBU7DlwZurXHFM3hBPTM111CMR9dWfLHMiXis3tCo=
X-Forefront-Antispam-Report-Untrusted:
 CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:DU2PR08MB7272.eurprd08.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(376014)(7416014)(1800799024)(366016)(38070700021)(22082099003)(56012099003)(18002099003);DIR:OUT;SFP:1101;
Content-Type: text/plain; charset="utf-8"
Content-ID: <7BF01EFB49D1F84F858FE3D0F3C16F9E@eurprd08.prod.outlook.com>
Content-Transfer-Encoding: base64
MIME-Version: 1.0
X-Exchange-RoutingPolicyChecked:
 HS5Kn/Al+VSyUrpa7eB0g+rYKRq2jpqm8kW5SlIvA4zdE6OD8oez0HEnELX5zQOsxI9YKguz8kKE4vvTOl2KNQ6tau2GUiFdFnnjOftofYpJOm+21imddaMzHVDNTDrgETwHqCwHxoW5I5q5hR7nHJty+hJ/4Ek9GUgDJRgmGd2cKy1Tn1/8FEYEViYGHRzLaPiUiIFU6siHCY3JYBtHrV0bo37J6dGvYJ8oryi4lgqijKygfSB1VsvLqt8AyFH2BSSQaLCT/blqpoaPdNd/weef8yyOoYiUjcezwbj8TsOk9qJGYy6xHbymLnZ8LdTTnuzdarWAQKAwSXfkkL3yIg==
X-MS-Exchange-Transport-CrossTenantHeadersStamped: PAVPR08MB9186
X-EOPAttributedMessage: 0
X-MS-Exchange-Transport-CrossTenantHeadersStripped:
 DU6PEPF0000952A.eurprd02.prod.outlook.com
X-MS-PublicTrafficType: Email
X-MS-Office365-Filtering-Correlation-Id-Prvs:
	8ef13914-3b83-4363-630b-08de99792b6e
X-Microsoft-Antispam:
	BCL:0;ARA:13230040|36860700016|14060799003|35042699022|82310400026|376014|7416014|1800799024|22082099003|18002099003|56012099003;
X-Microsoft-Antispam-Message-Info:
	1JU+1bAmnajNT1Zk7VzP7AXcA6xvLOj1yYGlvGtj/4nD6jkR0NYAI5CYAFvhJGFDWzEjJibVLBUJjIeUuV9iclgZ7OlT46rPZaOgdGBOmK39rMgXS4uZVuUxlg/GJLMUXbYmPQbjLl3Hpt/mgJ958Tw3bVj1LruTAdWwx1p7XyIxL3wWMxH3l7PZEKWsLVGEv8Ts5ltNU5ES31p0hZuka6JCEvzghO1enoozDUSa3NCzx8NeICaD5ifK1Vz91zUCQlhw5s7Iht3NqbJTaPgfMyd6cYUD13oB/F3e2UdhcdnF+KKLwlQWN1ZdAf5OwO/ez+0SvWONO3J4i+47oWhyRFhfjj9/jAMrV0vEArnCMnvo3VJ8ZFiqbYCMIZZhrezA3BhtiQRt5FgKGsl14RW7fuAEEVYDB5ZgI4l/j/WtvIUpbsVixHpOaMyzhd0BN5n6P1dGS0Y9RR5Zyvm30AS5qPTpPXffEAfPLheOIXIH/BOBe7IMMOQHJhrPqGsdV9mzlVkLNsbeEWP6og7lDIn156lWZH/rCCiBifatc04auXY63roSbd4cifwJhbP/7ku5dXkajr55IUSFGG6UqvCwd1g2g4WpEgai4ABqsOi/Km+NRM6cmwNpdAh/eWEahSyDA1GYxpYxnYge8NhUjMeq71bZrf7NjfCmuRdkvWbmpG3WuflJmp6SbYgGlacllcW8RhA3MTl9s+XZA1LnA2Qzu430EECjOJEAvP9c54+5n218EmcheQ9QQ3JMkPAkWAhdSgHwax7pasaTUBcvRAYZbg==
X-Forefront-Antispam-Report:
	CIP:4.158.2.129;CTRY:GB;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:outbound-uk1.az.dlp.m.darktrace.com;PTR:InfoDomainNonexistent;CAT:NONE;SFS:(13230040)(36860700016)(14060799003)(35042699022)(82310400026)(376014)(7416014)(1800799024)(22082099003)(18002099003)(56012099003);DIR:OUT;SFP:1101;
X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1
X-MS-Exchange-AntiSpam-MessageData-0:
	SEnMgEC9LOvPZvLDpjdhgsXSL+M33+6c/8+KTR3s5S7rKqmvbaLYbw3p1L7hYENBGBMGKngziHJi6LQfzpTrIts7mC1fVXxN8VPKoVjwAZmegv2+URwKIfOUDh2i9mHKlaDKp07oaHzsJDJRpkZg05as3Mk+NnbT566bI3OA/u5cLw57ensNWcCMHHyQHXGsjgFQGnQqV68veU9CoEBXrsjV+CgCaWd8Vis9n1lVskIJMlREMMXu9YaFIgyF4vQcmIsQN30uvVpXzNGgVi98r1ATRJfO0c3iJBpGdmoA+Jdj8O9FgZglkyzOFabYqpZgbLwkpVhwZJQvTmkOEIXMzVrYdNjIZLixOxlu+tkDZsuuE9sPDWk6XiwNGoCXACF1E3pgdURzV+shqGo2mDsFbmV5C4BWU7TgV9EmK59u0mdrKFsg+Yl1YQP5XQkpvesi
X-OriginatorOrg: arm.com
X-MS-Exchange-CrossTenant-OriginalArrivalTime: 13 Apr 2026 16:25:46.3851
 (UTC)
X-MS-Exchange-CrossTenant-Network-Message-Id: bb88e3d7-b1a2-4377-cd59-08de99795129
X-MS-Exchange-CrossTenant-Id: f34e5979-57d9-4aaa-ad4d-b122a662184d
X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=f34e5979-57d9-4aaa-ad4d-b122a662184d;Ip=[4.158.2.129];Helo=[outbound-uk1.az.dlp.m.darktrace.com]
X-MS-Exchange-CrossTenant-AuthSource:
	DU6PEPF0000952A.eurprd02.prod.outlook.com
X-MS-Exchange-CrossTenant-AuthAs: Anonymous
X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem
X-MS-Exchange-Transport-CrossTenantHeadersStamped: VE1PR08MB5837
X-purgate-ID: tlsNG-c1860d/1776097552-F7D43497-3E3C6133/0/0
X-purgate-type: clean
X-purgate-size: 17308

SGkgTWlsYW4sDQoNCj4gT24gMzEgTWFyIDIwMjYsIGF0IDAyOjUyLCBNaWxhbiBEam9raWMgPG1p
bGFuX2Rqb2tpY0BlcGFtLmNvbT4gd3JvdGU6DQo+IA0KPiBGb3IgZ3Vlc3RzIGNyZWF0ZWQgdmlh
IGNvbnRyb2wgZG9tYWluICh4bCwgemVwaHlyIHhlbmxpYiksIHBhcnRpYWwgZGV2aWNlDQo+IHRy
ZWUgaXMgcGFyc2VkIGFuZCBsb2FkZWQgb24gY29udHJvbCBkb21haW4gc2lkZS4NCj4gU0lEcyBp
biBndWVzdHMgZGV2aWNlIHRyZWUgaGF2ZSB0byBiZSByZXBsYWNlZCB3aXRoDQo+IHZpcnR1YWwg
U0lEcyB3aGljaCBhcmUgbWFwcGVkIHRvIHBoeXNpY2FsIFNJRHMuIEluIG9yZGVyDQo+IHRvIGRv
IHRoYXQsIGNvbnRyb2wgZG9tYWluIGhhcyB0byByZXF1ZXN0IGZyb20gWGVuIHRvIGNyZWF0ZQ0K
PiBhIG5ldyB2U0lEIGFuZCBtYXAgaXQgdG8gb3JpZ2luYWwgcFNJRCBmb3IgZXZlcnkgZ3Vlc3Qg
ZGV2aWNlIElPTU1VDQo+IHN0cmVhbSBJRC4gRm9yIHRoaXMgcHVycG9zZSwgbmV3IGRvbWN0bCBj
b21tYW5kIChYRU5fRE9NQ1RMX3Zpb21tdV9hbGxvY2F0ZV92aWQpDQo+IGlzIGludHJvZHVjZWQg
d2hpY2ggY29udHJvbCBkb21haW4gY2FuIHVzZSB0byByZXF1ZXN0IGEgbmV3IHZTSUQgbWFwcGlu
ZyBhbmQNCj4gaW5zZXJ0IGEgbmV3IHZTSUQgaW50byBndWVzdCBkZXZpY2UgdHJlZSBvbmNlIG1h
cHBlZC4NCj4gUmVxdWVzdGVkIHZTSUQgYWxsb2NhdGlvbiB1c2luZyB0aGlzIGludGVyZmFjZSBm
b3IgdlBDSS9EVCBkZXZpY2VzLg0KPiANCj4gU2lnbmVkLW9mZi1ieTogTWlsYW4gRGpva2ljIDxt
aWxhbl9kam9raWNAZXBhbS5jb20+DQo+IC0tLQ0KPiB0b29scy9pbmNsdWRlL3hlbmN0cmwuaCAg
ICAgICAgICAgICB8ICAxMiArKysNCj4gdG9vbHMvbGlicy9jdHJsL3hjX2RvbWFpbi5jICAgICAg
ICAgfCAgMjMgKysrKysNCj4gdG9vbHMvbGlicy9saWdodC9saWJ4bF9hcm0uYyAgICAgICAgfCAx
MjcgKysrKysrKysrKysrKysrKysrKysrKysrKy0tLQ0KPiB4ZW4vYXJjaC9hcm0vZG9tY3RsLmMg
ICAgICAgICAgICAgICB8ICAzNCArKysrKysrKw0KPiB4ZW4vaW5jbHVkZS9wdWJsaWMvZG9tY3Rs
LmggICAgICAgICB8ICAyMCArKysrKw0KPiB4ZW4veHNtL2ZsYXNrL2hvb2tzLmMgICAgICAgICAg
ICAgICB8ICAgNCArDQo+IHhlbi94c20vZmxhc2svcG9saWN5L2FjY2Vzc192ZWN0b3JzIHwgICAy
ICsNCj4gNyBmaWxlcyBjaGFuZ2VkLCAyMTIgaW5zZXJ0aW9ucygrKSwgMTAgZGVsZXRpb25zKC0p
DQo+IA0KPiBkaWZmIC0tZ2l0IGEvdG9vbHMvaW5jbHVkZS94ZW5jdHJsLmggYi90b29scy9pbmNs
dWRlL3hlbmN0cmwuaA0KPiBpbmRleCBkNWRiZjY5Yzg5Li42MWJlODkyY2M4IDEwMDY0NA0KPiAt
LS0gYS90b29scy9pbmNsdWRlL3hlbmN0cmwuaA0KPiArKysgYi90b29scy9pbmNsdWRlL3hlbmN0
cmwuaA0KPiBAQCAtMjY1OSw2ICsyNjU5LDE4IEBAIGludCB4Y19kb21haW5fc2V0X2xsY19jb2xv
cnMoeGNfaW50ZXJmYWNlICp4Y2gsIHVpbnQzMl90IGRvbWlkLA0KPiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGNvbnN0IHVpbnQzMl90ICpsbGNfY29sb3JzLA0KPiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHVpbnQzMl90IG51bV9sbGNfY29sb3JzKTsNCj4gDQo+ICsvKg0KPiAr
ICogQWxsb2NhdGUgZ3Vlc3QgSU9NTVUgdlNJRCBhbmQgZXN0YWJsaXNoIGl0cyBtYXBwaW5nIHRv
IHBTSUQuDQo+ICsgKiBJdCBjYW4gb25seSBiZSB1c2VkIG9uIGRvbWFpbiBEVCBjcmVhdGlvbi4N
Cj4gKyAqIEN1cnJlbnRseSB1c2VkIGZvciBBUk0gb25seSwgcG9zc2libHkgZm9yIFJJU0MtViBp
biB0aGUNCj4gKyAqIGZ1dHVyZS4gRnVuY3Rpb24gaGFzIG5vIGVmZmVjdCBmb3IgeDg2Lg0KPiAr
ICovDQo+ICtpbnQgeGNfZG9tYWluX3Zpb21tdV9hbGxvY2F0ZV92c2lkX3JhbmdlKHhjX2ludGVy
ZmFjZSAqeGNoLA0KPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1
aW50MzJfdCBkb21pZCwNCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgdWludDE2X3QgbnJfc2lkcywNCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgdWludDMyX3QgZmlyc3RfcHNpZCwNCj4gKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgdWludDMyX3QgKmZpcnN0X3ZzaWQpOw0KPiArDQo+ICNpZiBkZWZp
bmVkKF9fYXJtX18pIHx8IGRlZmluZWQoX19hYXJjaDY0X18pDQo+IGludCB4Y19kdF9vdmVybGF5
KHhjX2ludGVyZmFjZSAqeGNoLCB2b2lkICpvdmVybGF5X2ZkdCwNCj4gICAgICAgICAgICAgICAg
ICAgdWludDMyX3Qgb3ZlcmxheV9mZHRfc2l6ZSwgdWludDhfdCBvdmVybGF5X29wKTsNCj4gZGlm
ZiAtLWdpdCBhL3Rvb2xzL2xpYnMvY3RybC94Y19kb21haW4uYyBiL3Rvb2xzL2xpYnMvY3RybC94
Y19kb21haW4uYw0KPiBpbmRleCAwMWMwNjY5Yzg4Li4zOWZmZTgwZTZkIDEwMDY0NA0KPiAtLS0g
YS90b29scy9saWJzL2N0cmwveGNfZG9tYWluLmMNCj4gKysrIGIvdG9vbHMvbGlicy9jdHJsL3hj
X2RvbWFpbi5jDQo+IEBAIC0yMjIyLDYgKzIyMjIsMjkgQEAgb3V0Og0KPiANCj4gICAgIHJldHVy
biByZXQ7DQo+IH0NCj4gKw0KPiAraW50IHhjX2RvbWFpbl92aW9tbXVfYWxsb2NhdGVfdnNpZF9y
YW5nZSh4Y19pbnRlcmZhY2UgKnhjaCwNCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgdWludDMyX3QgZG9taWQsDQo+ICsgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHVpbnQxNl90IG5yX3NpZHMsDQo+ICsgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIHVpbnQzMl90IGZpcnN0X3BzaWQsDQo+ICsgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVpbnQzMl90ICpmaXJzdF92c2lkKQ0KPiAr
ew0KPiArICAgIGludCBlcnI7DQo+ICsgICAgc3RydWN0IHhlbl9kb21jdGwgZG9tY3RsID0ge307
DQo+ICsNCj4gKyAgICBkb21jdGwuY21kID0gWEVOX0RPTUNUTF92aW9tbXVfYWxsb2NfdnNpZF9y
YW5nZTsNCj4gKyAgICBkb21jdGwuZG9tYWluID0gZG9taWQ7DQo+ICsgICAgZG9tY3RsLnUudmlv
bW11X2FsbG9jX3ZzaWRfcmFuZ2UuZmlyc3RfcHNpZCA9IGZpcnN0X3BzaWQ7DQo+ICsgICAgZG9t
Y3RsLnUudmlvbW11X2FsbG9jX3ZzaWRfcmFuZ2UubnJfc2lkcyA9IG5yX3NpZHM7DQo+ICsNCj4g
KyAgICBpZiAoIChlcnIgPSBkb19kb21jdGwoeGNoLCAmZG9tY3RsKSkgIT0gMCApDQo+ICsgICAg
ICAgIHJldHVybiBlcnI7DQo+ICsNCj4gKyAgICAqZmlyc3RfdnNpZCA9IGRvbWN0bC51LnZpb21t
dV9hbGxvY192c2lkX3JhbmdlLmZpcnN0X3ZzaWQ7DQo+ICsNCj4gKyAgICByZXR1cm4gMDsNCj4g
K30NCj4gKw0KPiAvKg0KPiAgKiBMb2NhbCB2YXJpYWJsZXM6DQo+ICAqIG1vZGU6IEMNCj4gZGlm
ZiAtLWdpdCBhL3Rvb2xzL2xpYnMvbGlnaHQvbGlieGxfYXJtLmMgYi90b29scy9saWJzL2xpZ2h0
L2xpYnhsX2FybS5jDQo+IGluZGV4IDdiODg3ODk4YmIuLjc5OTA0Yjc0NmMgMTAwNjQ0DQo+IC0t
LSBhL3Rvb2xzL2xpYnMvbGlnaHQvbGlieGxfYXJtLmMNCj4gKysrIGIvdG9vbHMvbGlicy9saWdo
dC9saWJ4bF9hcm0uYw0KPiBAQCAtOTU1LDYgKzk1NSwxMyBAQCBzdGF0aWMgaW50IG1ha2VfdnNt
bXV2M19ub2RlKGxpYnhsX19nYyAqZ2MsIHZvaWQgKmZkdCwNCj4gICAgIHJldHVybiAwOw0KPiB9
DQo+IA0KPiArLyoNCj4gKyAqIFN0b3JlcyBzdGFydGluZyB2U0lEIG9mIHZQQ0kgSU9NTVUgU0lE
IHJhbmdlDQo+ICsgKiBVc2VkIGFzIGEgbG9va3VwIHZhbHVlIHRvIGF2b2lkIHJlcGVhdGVkDQo+
ICsgKiB2U0lEIHJhbmdlIGFsbG9jYXRpb24gb24gZXZlcnkgZmR0IHJlc2l6ZS4NCj4gKyAqLw0K
PiArc3RhdGljIGludCB2cGNpX2ZpcnN0X3ZzaWQgPSAtMTsNCg0KV2hhdCBoYXBwZW4gYmV0d2Vl
biBvbmUgZ3Vlc3QgY3JlYXRpb24gYW5kIGFub3RoZXIgc2luY2UgdGhpcyBhbmQgdmlvbW11X3N0
cmVhbV9saXN0DQphcmUgZ2xvYmFsPw0KDQo+ICsNCj4gc3RhdGljIGludCBtYWtlX3ZwY2lfbm9k
ZShsaWJ4bF9fZ2MgKmdjLCB2b2lkICpmZHQsDQo+ICAgICAgICAgICAgICAgICAgICAgICAgICAg
Y29uc3Qgc3RydWN0IGFyY2hfaW5mbyAqYWluZm8sDQo+ICAgICAgICAgICAgICAgICAgICAgICAg
ICAgc3RydWN0IHhjX2RvbV9pbWFnZSAqZG9tKQ0KPiBAQCAtOTYzLDYgKzk3MCw5IEBAIHN0YXRp
YyBpbnQgbWFrZV92cGNpX25vZGUobGlieGxfX2djICpnYywgdm9pZCAqZmR0LA0KPiAgICAgY29u
c3QgdWludDY0X3QgdnBjaV9lY2FtX2Jhc2UgPSBHVUVTVF9WUENJX0VDQU1fQkFTRTsNCj4gICAg
IGNvbnN0IHVpbnQ2NF90IHZwY2lfZWNhbV9zaXplID0gR1VFU1RfVlBDSV9FQ0FNX1NJWkU7DQo+
ICAgICBjb25zdCBjaGFyICpuYW1lID0gR0NTUFJJTlRGKCJwY2llQCUiUFJJeDY0LCB2cGNpX2Vj
YW1fYmFzZSk7DQo+ICsgICAgdWludDE2X3QgaW9tbXVfcmFuZ2Vfc2l6ZSA9IDB4MTAwMDsNCj4g
KyAgICB1aW50MzJfdCBmaXJzdF92c2lkOw0KPiArICAgIHVpbnQzMl90IGZpcnN0X3BzaWQgPSAw
Ow0KPiANCj4gICAgIHJlcyA9IGZkdF9iZWdpbl9ub2RlKGZkdCwgbmFtZSk7DQo+ICAgICBpZiAo
cmVzKSByZXR1cm4gcmVzOw0KPiBAQCAtOTk2LDggKzEwMDYsMjAgQEAgc3RhdGljIGludCBtYWtl
X3ZwY2lfbm9kZShsaWJ4bF9fZ2MgKmdjLCB2b2lkICpmZHQsDQo+ICAgICAgICAgR1VFU1RfVlBD
SV9QUkVGRVRDSF9NRU1fU0laRSk7DQo+ICAgICBpZiAocmVzKSByZXR1cm4gcmVzOw0KPiANCj4g
KyAgICAvKiByZXF1ZXN0IHZTSUQgcmFuZ2UgYWxsb2NhdGlvbiBpZiBub3QgYWxyZWFkeSBhbGxv
Y2F0ZWQgKi8NCj4gKyAgICBpZiAodnBjaV9maXJzdF92c2lkIDwgMCkgew0KPiArICAgICAgICBy
ZXMgPSB4Y19kb21haW5fdmlvbW11X2FsbG9jYXRlX3ZzaWRfcmFuZ2UoQ1RYLT54Y2gsIGRvbS0+
Z3Vlc3RfZG9taWQsDQo+ICsgICAgICAgICAgICBpb21tdV9yYW5nZV9zaXplLCBmaXJzdF9wc2lk
LCAmZmlyc3RfdnNpZCk7DQo+ICsgICAgICAgIGlmIChyZXMpDQo+ICsgICAgICAgICAgICByZXR1
cm4gcmVzOw0KPiArICAgICAgICB2cGNpX2ZpcnN0X3ZzaWQgPSBmaXJzdF92c2lkOw0KPiArICAg
IH0NCj4gKyAgICBlbHNlIHsNCj4gKyAgICAgICAgZmlyc3RfdnNpZCA9IHZwY2lfZmlyc3RfdnNp
ZDsNCj4gKyAgICB9DQo+ICsNCj4gICAgIHJlcyA9IGZkdF9wcm9wZXJ0eV92YWx1ZXMoZ2MsIGZk
dCwgImlvbW11LW1hcCIsIDQsIDAsDQo+IC0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBH
VUVTVF9QSEFORExFX1ZTTU1VVjMsIDAsIDB4MTAwMDApOw0KPiArICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBHVUVTVF9QSEFORExFX1ZTTU1VVjMsIGZpcnN0X3ZzaWQsIGlvbW11X3Jhbmdl
X3NpemUpOw0KPiAgICAgaWYgKHJlcykgcmV0dXJuIHJlczsNCj4gDQo+ICAgICByZXMgPSBmZHRf
ZW5kX25vZGUoZmR0KTsNCj4gQEAgLTEzMjYsMTEgKzEzNDgsOTIgQEAgc3RhdGljIGludCBjb3B5
X3BhcnRpYWxfZmR0KGxpYnhsX19nYyAqZ2MsIHZvaWQgKmZkdCwgdm9pZCAqcGZkdCkNCj4gICAg
IHJldHVybiAwOw0KPiB9DQo+IA0KPiAtc3RhdGljIGludCBtb2RpZnlfcGFydGlhbF9mZHQobGli
eGxfX2djICpnYywgdm9pZCAqcGZkdCkNCj4gKy8qDQo+ICsgKiBTdG9yZSB2aXJ0dWFsaXplZCAn
aW9tbXVzJyBwcm9wZXJ0aWVzIGZvciBldmVyeSBub2RlIGF0dGFjaGVkIHRvIElPTU1VDQo+ICsg
KiBhbmQgcGFzc3Rocm91Z2hlZCB0byBndWVzdC4NCj4gKyAqIFVzZWQgYXMgYSBsb29rdXAgdGFi
bGUgZm9yIG1hcHBpbmcgPHBoYW5kbGUgcFNJRD4gLT4gPHZoYW5kbGUgdlNJRD4NCj4gKyAqLw0K
PiArc3RydWN0IHZpb21tdV9zdHJlYW0gew0KPiArICAgIFhFTl9MSVNUX0VOVFJZKHN0cnVjdCB2
aW9tbXVfc3RyZWFtKSBlbnRyeTsNCj4gKyAgICBjaGFyIHBhdGhbMTI4XTsgICAgICAgICAgLyog
RFQgcGF0aCwgc3RhYmxlIGFjcm9zcyByZXNpemVzICovDQo+ICsgICAgZmR0MzJfdCAqaW9tbXVz
OyAgICAgICAgIC8qIGZ1bGx5IHZpcnR1YWxpemVkIGlvbW11cyBwcm9wZXJ0eSAqLw0KPiArfTsN
Cj4gKw0KPiArc3RhdGljIFhFTl9MSVNUX0hFQUQoLCBzdHJ1Y3QgdmlvbW11X3N0cmVhbSkgdmlv
bW11X3N0cmVhbV9saXN0Ow0KPiArDQo+ICsvKg0KPiArICogSGVscGVyIGZ1bmN0aW9uIHdoaWNo
IGNyZWF0ZXMgbWFwcGluZyBvZiBkdCBub2RlIHRvDQo+ICsgKiB0byB2aXJ0dWFsaXplZCAnaW9t
bXVzJyBwcm9wZXJ0eQ0KPiArICogTWFwcGluZ3Mgc3RvcmVkIGluIGEgZ2xvYmFsICd2aW9tbXVf
c3RyZWFtX2xpc3QnIHRvDQo+ICsgKiBtYWtlIGl0IHJldXNhYmxlIGZvciBldmVyeSBmZHQgcmVz
aXplDQo+ICsgKi8NCj4gK3N0YXRpYyBpbnQgdmlvbW11X2dldF9zdHJlYW0obGlieGxfX2djICpn
YywNCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdWludDMyX3QgZG9taWQsDQo+ICsg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGZkdDMyX3QgKnByb3AsDQo+ICsgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGludCBwcm9wbGVuLA0KPiArICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBjb25zdCBjaGFyKiBwYXRoLCBmZHQzMl90ICoqaW9tbXVzKQ0KPiArew0K
PiArICAgIGludCBpLCByOw0KPiArICAgIHVpbnQzMl90IHZzaWQsIHBzaWQ7DQo+ICsgICAgc3Ry
dWN0IHZpb21tdV9zdHJlYW0gKnZpb21tdV9zdHJlYW07DQo+ICsNCj4gKyAgICAvKiBMb29rdXAg
aWYgc3RyZWFtIGZvciB0YXJnZXQgZGV2aWNlIGlzIGFscmVhZHkgYWxsb2NhdGVkICovDQo+ICsg
ICAgWEVOX0xJU1RfRk9SRUFDSCh2aW9tbXVfc3RyZWFtLCAmdmlvbW11X3N0cmVhbV9saXN0LCBl
bnRyeSkNCj4gKyAgICB7DQo+ICsgICAgICAgIGlmICghc3RyY21wKHZpb21tdV9zdHJlYW0tPnBh
dGgsIHBhdGgpKSB7DQo+ICsgICAgICAgICAgICAqaW9tbXVzID0gdmlvbW11X3N0cmVhbS0+aW9t
bXVzOw0KPiArICAgICAgICAgICAgcmV0dXJuIDA7DQo+ICsgICAgICAgIH0NCj4gKyAgICB9DQo+
ICsNCj4gKyAgICAvKiBBbGxvY2F0ZSBuZXcgdmlvbW11IHN0cmVhbSAqLw0KPiArICAgIHZpb21t
dV9zdHJlYW0gPSBtYWxsb2Moc2l6ZW9mKHN0cnVjdCB2aW9tbXVfc3RyZWFtKSk7DQo+ICsgICAg
aWYgKCF2aW9tbXVfc3RyZWFtKQ0KPiArICAgICAgICByZXR1cm4gRVJST1JfTk9NRU07DQo+ICsg
ICAgbWVtc2V0KHZpb21tdV9zdHJlYW0sIDAsIHNpemVvZihzdHJ1Y3QgdmlvbW11X3N0cmVhbSkp
Ow0KPiArICAgIHZpb21tdV9zdHJlYW0tPmlvbW11cyA9IG1hbGxvYyhwcm9wbGVuKTsNCj4gKyAg
ICBpZiAoIXZpb21tdV9zdHJlYW0tPmlvbW11cykNCj4gKyAgICAgICAgcmV0dXJuIEVSUk9SX05P
TUVNOw0KDQp3ZSBzaG91bGQgZnJlZSB2aW9tbXVfc3RyZWFtIGhlcmUNCg0KPiArICAgIG1lbXNl
dCh2aW9tbXVfc3RyZWFtLT5pb21tdXMsIDAsIHByb3BsZW4pOw0KPiArDQo+ICsgICAgTE9HKERF
QlVHLCAiQ3JlYXRpbmcgdklPTU1VIHN0cmVhbSBmb3IgZGV2aWNlICVzIiwNCj4gKyAgICAgICAg
cGF0aCk7DQo+ICsNCj4gKyAgICAvKg0KPiArICAgICAqIFZpcnR1YWxpemUgZGV2aWNlICJpb21t
dXMiIHByb3BlcnR5DQo+ICsgICAgICogKHJlcGxhY2UgcElPTU1VIHdpdGggdklPTU1VIHBoYW5k
bGUgYW5kIHBTSURzIHdpdGggbWFwcGVkIHZTSURzKQ0KPiArICAgICAqLw0KPiArICAgIGZvciAo
aSA9IDA7IGkgPCBwcm9wbGVuIC8gODsgKytpKSB7DQo+ICsgICAgICAgIHZpb21tdV9zdHJlYW0t
PmlvbW11c1tpICogMl0gPSBjcHVfdG9fZmR0MzIoR1VFU1RfUEhBTkRMRV9WU01NVVYzKTsNCj4g
KyAgICAgICAgLyogQWxsb2NhdGUgbmV3IHZTSUQgbWFwcGVkIHRvIHBTSUQgKi8NCj4gKyAgICAg
ICAgcHNpZCA9IGZkdDMyX3RvX2NwdShwcm9wW2kgKiAyICsgMV0pOw0KPiArICAgICAgICByID0g
eGNfZG9tYWluX3Zpb21tdV9hbGxvY2F0ZV92c2lkX3JhbmdlKENUWC0+eGNoLCBkb21pZCwgMSwg
cHNpZCwgJnZzaWQpOw0KPiArICAgICAgICBpZiAocikgew0KPiArICAgICAgICAgICAgTE9HKEVS
Uk9SLCAiQ2FuJ3QgYWxsb2NhdGUgbmV3IHZTSUQvdlJJRCBmb3IgZ3Vlc3QgSU9NTVUgZGV2aWNl
Iik7DQo+ICsgICAgICAgICAgICByZXR1cm4gcjsNCj4gKyAgICAgICAgfQ0KPiArICAgICAgICB2
aW9tbXVfc3RyZWFtLT5pb21tdXNbaSAqIDIgKyAxXSA9IGNwdV90b19mZHQzMih2c2lkKTsNCj4g
KyAgICAgICAgTE9HKERFQlVHLCAiTWFwcGVkIHZTSUQ6ICV1IHRvIHBTSUQ6ICV1IiwgdnNpZCwg
cHNpZCk7DQo+ICsgICAgfQ0KPiArDQo+ICsgICAgc3RyY3B5KHZpb21tdV9zdHJlYW0tPnBhdGgs
IHBhdGgpOw0KPiArICAgICppb21tdXMgPSAgdmlvbW11X3N0cmVhbS0+aW9tbXVzOw0KPiArDQo+
ICsgICAgWEVOX0xJU1RfSU5TRVJUX0hFQUQoJnZpb21tdV9zdHJlYW1fbGlzdCwgdmlvbW11X3N0
cmVhbSwgZW50cnkpOw0KPiArDQo+ICsgICAgcmV0dXJuIDA7DQo+ICt9DQo+ICsNCj4gKy8qDQo+
ICsgKiBVc2VkIHRvIHVwZGF0ZSBwYXJ0aWFsIGZkdCB3aGVuIHZJT01NVSBpcyBlbmFibGVkDQo+
ICsgKiBNYXBzIGR0IHByb3BlcnRpZXMgb2YgSU9NTVUgZGV2aWNlcyB0byB2aXJ0dWFsIElPTU1V
DQo+ICsgKi8NCj4gK3N0YXRpYyBpbnQgdmlvbW11X21vZGlmeV9wYXJ0aWFsX2ZkdChsaWJ4bF9f
Z2MgKmdjLCB2b2lkICpwZmR0LCB1aW50MzJfdCBkb21pZCkNCj4gew0KPiAtICAgIGludCBub2Rl
b2ZmLCBwcm9wbGVuLCBpLCByOw0KPiArICAgIGludCBub2Rlb2ZmLCBwcm9wbGVuLCByOw0KPiAg
ICAgY29uc3QgZmR0MzJfdCAqcHJvcDsNCj4gICAgIGZkdDMyX3QgKnByb3BfYzsNCj4gKyAgICBj
aGFyIHBhdGhbMTI4XTsNCj4gDQo+ICAgICBub2Rlb2ZmID0gZmR0X3BhdGhfb2Zmc2V0KHBmZHQs
ICIvcGFzc3Rocm91Z2giKTsNCj4gICAgIGlmIChub2Rlb2ZmIDwgMCkNCj4gQEAgLTEzNDQsMTEg
KzE0NDcsMTYgQEAgc3RhdGljIGludCBtb2RpZnlfcGFydGlhbF9mZHQobGlieGxfX2djICpnYywg
dm9pZCAqcGZkdCkNCj4gICAgICAgICBpZiAoIXByb3ApDQo+ICAgICAgICAgICAgIGNvbnRpbnVl
Ow0KPiANCj4gLSAgICAgICAgcHJvcF9jID0gbGlieGxfX3phbGxvYyhnYywgcHJvcGxlbik7DQo+
ICsgICAgICAgIHIgPSBmZHRfZ2V0X3BhdGgocGZkdCwgbm9kZW9mZiwgcGF0aCwgc2l6ZW9mKHBh
dGgpKTsNCj4gKyAgICAgICAgaWYgKCByIDwgMCApIHsNCj4gKyAgICAgICAgICAgIExPRyhFUlJP
UiwgIkNhbid0IGdldCBwYXNzdGhyb3VnaCBub2RlIHBhdGgiKTsNCj4gKyAgICAgICAgICAgIHJl
dHVybiByOw0KPiArICAgICAgICB9DQo+IA0KPiAtICAgICAgICBmb3IgKGkgPSAwOyBpIDwgcHJv
cGxlbiAvIDg7ICsraSkgew0KPiAtICAgICAgICAgICAgcHJvcF9jW2kgKiAyXSA9IGNwdV90b19m
ZHQzMihHVUVTVF9QSEFORExFX1ZTTU1VVjMpOw0KPiAtICAgICAgICAgICAgcHJvcF9jW2kgKiAy
ICsgMV0gPSBwcm9wW2kgKiAyICsgMV07DQo+ICsgICAgICAgIHIgPSB2aW9tbXVfZ2V0X3N0cmVh
bShnYywgZG9taWQsIHByb3AsIHByb3BsZW4sIHBhdGgsICZwcm9wX2MpOw0KPiArICAgICAgICBp
ZiAocikgew0KPiArICAgICAgICAgICAgTE9HKEVSUk9SLCAiQ2FuJ3QgZ2V0IHZpb21tdSBzdHJl
YW0iKTsNCj4gKyAgICAgICAgICAgIHJldHVybiByOw0KPiAgICAgICAgIH0NCj4gDQo+ICAgICAg
ICAgciA9IGZkdF9zZXRwcm9wKHBmZHQsIG5vZGVvZmYsICJpb21tdXMiLCBwcm9wX2MsIHByb3Bs
ZW4pOw0KPiBAQCAtMTM2MCw3ICsxNDY4LDYgQEAgc3RhdGljIGludCBtb2RpZnlfcGFydGlhbF9m
ZHQobGlieGxfX2djICpnYywgdm9pZCAqcGZkdCkNCj4gDQo+ICAgICByZXR1cm4gMDsNCj4gfQ0K
PiAtDQo+ICNlbHNlDQo+IA0KPiBzdGF0aWMgaW50IGNoZWNrX3BhcnRpYWxfZmR0KGxpYnhsX19n
YyAqZ2MsIHZvaWQgKmZkdCwgc2l6ZV90IHNpemUpDQo+IEBAIC0xMzc5LDcgKzE0ODYsNyBAQCBz
dGF0aWMgaW50IGNvcHlfcGFydGlhbF9mZHQobGlieGxfX2djICpnYywgdm9pZCAqZmR0LCB2b2lk
ICpwZmR0KQ0KPiAgICAgcmV0dXJuIC1GRFRfRVJSX0lOVEVSTkFMOw0KPiB9DQo+IA0KPiAtc3Rh
dGljIGludCBtb2RpZnlfcGFydGlhbF9mZHQobGlieGxfX2djICpnYywgdm9pZCAqcGZkdCkNCj4g
K3N0YXRpYyBpbnQgdmlvbW11X21vZGlmeV9wYXJ0aWFsX2ZkdChsaWJ4bF9fZ2MgKmdjLCB2b2lk
ICpwZmR0LCB1aW50MzJfdCBkb21pZCkNCj4gew0KPiAgICAgTE9HKEVSUk9SLCAicGFydGlhbCBk
ZXZpY2UgdHJlZSBub3Qgc3VwcG9ydGVkIik7DQo+IA0KPiBAQCAtMTUxMSw3ICsxNjE4LDcgQEAg
bmV4dF9yZXNpemU6DQo+ICAgICAgICAgaWYgKGluZm8tPmFyY2hfYXJtLnZpb21tdV90eXBlID09
IExJQlhMX1ZJT01NVV9UWVBFX1NNTVVWMykgew0KPiAgICAgICAgICAgICBGRFQoIG1ha2VfdnNt
bXV2M19ub2RlKGdjLCBmZHQsIGFpbmZvLCBkb20pICk7DQo+ICAgICAgICAgICAgIGlmIChwZmR0
KQ0KPiAtICAgICAgICAgICAgICAgIEZEVCggbW9kaWZ5X3BhcnRpYWxfZmR0KGdjLCBwZmR0KSAp
Ow0KPiArICAgICAgICAgICAgICAgIEZEVCggdmlvbW11X21vZGlmeV9wYXJ0aWFsX2ZkdChnYywg
cGZkdCwgZG9tLT5ndWVzdF9kb21pZCkgKTsNCj4gICAgICAgICB9DQo+IA0KPiAgICAgICAgIGZv
ciAoaSA9IDA7IGkgPCBkX2NvbmZpZy0+bnVtX2Rpc2tzOyBpKyspIHsNCj4gZGlmZiAtLWdpdCBh
L3hlbi9hcmNoL2FybS9kb21jdGwuYyBiL3hlbi9hcmNoL2FybS9kb21jdGwuYw0KPiBpbmRleCBh
ZDkxNGM5MTVmLi5jODU4NTNlNGNiIDEwMDY0NA0KPiAtLS0gYS94ZW4vYXJjaC9hcm0vZG9tY3Rs
LmMNCj4gKysrIGIveGVuL2FyY2gvYXJtL2RvbWN0bC5jDQo+IEBAIC0xNiw2ICsxNiw3IEBADQo+
ICNpbmNsdWRlIDx4ZW4vdHlwZXMuaD4NCj4gI2luY2x1ZGUgPHhzbS94c20uaD4NCj4gI2luY2x1
ZGUgPHB1YmxpYy9kb21jdGwuaD4NCj4gKyNpbmNsdWRlIDxhc20vdmlvbW11Lmg+DQo+IA0KPiB2
b2lkIGFyY2hfZ2V0X2RvbWFpbl9pbmZvKGNvbnN0IHN0cnVjdCBkb21haW4gKmQsDQo+ICAgICAg
ICAgICAgICAgICAgICAgICAgICAgc3RydWN0IHhlbl9kb21jdGxfZ2V0ZG9tYWluaW5mbyAqaW5m
bykNCj4gQEAgLTE3OSw2ICsxODAsMzkgQEAgbG9uZyBhcmNoX2RvX2RvbWN0bChzdHJ1Y3QgeGVu
X2RvbWN0bCAqZG9tY3RsLCBzdHJ1Y3QgZG9tYWluICpkLA0KPiAgICAgfQ0KPiAgICAgY2FzZSBY
RU5fRE9NQ1RMX2R0X292ZXJsYXk6DQo+ICAgICAgICAgcmV0dXJuIGR0X292ZXJsYXlfZG9tY3Rs
KGQsICZkb21jdGwtPnUuZHRfb3ZlcmxheSk7DQo+ICsNCj4gKyNpZmRlZiBDT05GSUdfQVJNX1ZJ
UlRVQUxfSU9NTVUNCj4gKyAgICBjYXNlIFhFTl9ET01DVExfdmlvbW11X2FsbG9jX3ZzaWRfcmFu
Z2U6DQo+ICsgICAgew0KPiArICAgICAgICBpbnQgcmMgPSAwOw0KPiArICAgICAgICB1aW50MTZf
dCBpOw0KPiArICAgICAgICB1aW50MzJfdCB2c2lkOw0KPiArICAgICAgICBzdHJ1Y3QgeGVuX2Rv
bWN0bF92aW9tbXVfYWxsb2NfdnNpZF9yYW5nZSAqdmlvbW11X2FsbG9jX3ZzaWRfcmFuZ2UgPQ0K
PiArICAgICAgICAgICAgJmRvbWN0bC0+dS52aW9tbXVfYWxsb2NfdnNpZF9yYW5nZTsNCj4gKw0K
PiArICAgICAgICBpZiAoIHZpb21tdV9hbGxvY192c2lkX3JhbmdlLT5wYWQgKQ0KPiArICAgICAg
ICAgICAgcmV0dXJuIC1FSU5WQUw7DQo+ICsNCj4gKyAgICAgICAgZm9yICggaSA9IDA7IGkgPCB2
aW9tbXVfYWxsb2NfdnNpZF9yYW5nZS0+bnJfc2lkczsgaSsrICkNCj4gKyAgICAgICAgew0KPiAr
ICAgICAgICAgICAgcmMgPSB2aW9tbXVfYWxsb2NhdGVfZnJlZV92aWQoZCwgdmlvbW11X2FsbG9j
X3ZzaWRfcmFuZ2UtPmZpcnN0X3BzaWQNCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgKyBpLCAmdnNpZCk7DQoNClNpbmNlIHdlIGFyZSB1c2luZyBsaWtlIHRo
aXMsIHdvdWxkbuKAmXQgaGF2ZSBiZWVuIGJldHRlciB0byBoYXZlIGFuIOKAnHZpb21tdV9hbGxv
Y2F0ZV9mcmVlX3ZpZF9yYW5nZSgp4oCdPw0KDQo+ICsgICAgICAgICAgICBpZiggcmMgKQ0KPiAr
ICAgICAgICAgICAgICAgIHJldHVybiByYzsNCj4gKyAgICAgICAgfQ0KPiArDQo+ICsgICAgICAg
IGlmICggIXJjICkNCj4gKyAgICAgICAgew0KPiArICAgICAgICAgICAgLyogQ2FsY3VsYXRlIGZp
cnN0IHZTSUQgZnJvbSBhbGxvY2F0ZWQgcmFuZ2UgKi8NCj4gKyAgICAgICAgICAgIHZpb21tdV9h
bGxvY192c2lkX3JhbmdlLT5maXJzdF92c2lkID0gdnNpZCAtDQo+ICsgICAgICAgICAgICAgICAg
dmlvbW11X2FsbG9jX3ZzaWRfcmFuZ2UtPm5yX3NpZHMgKyAxOw0KPiArICAgICAgICAgICAgcmMg
PSBjb3B5X3RvX2d1ZXN0KHVfZG9tY3RsLCBkb21jdGwsIDEpOw0KDQp3ZSBzaG91bGQgdXNlIHNv
bWV0aGluZyBsaWtlOg0KcmMgPSBjb3B5X3RvX2d1ZXN0KHVfZG9tY3RsLCBkb21jdGwsIDEpOw0K
aWYgKCByYyApDQogICAgcmMgPSAtRUZBVUxUOw0KDQpDaGVlcnMsDQpMdWNhDQoNCg==


From xen-devel-bounces@lists.xenproject.org Tue Apr 14 01:00:08 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 14 Apr 2026 01:00:08 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1281376.1564286 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wCS87-0006cr-57; Tue, 14 Apr 2026 00:59:51 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1281376.1564286; Tue, 14 Apr 2026 00:59: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 1wCS87-0006cj-0U; Tue, 14 Apr 2026 00:59:51 +0000
Received: by outflank-mailman (input) for mailman id 1281376;
 Tue, 14 Apr 2026 00:59:49 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <joan.bae@boeing.com>) id 1wCS85-0006cZ-Ho
 for xen-devel@lists.xenproject.org; Tue, 14 Apr 2026 00:59:49 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wCS84-003pRB-CM
 for xen-devel@lists.xenproject.org; Tue, 14 Apr 2026 02:59:48 +0200
Received: from [10.42.69.8] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <joan.bae@boeing.com>)
 id 69dd916a-bab6-0a2a0a5309dd-0a2a4508da3e-10
 for <xen-devel@lists.xenproject.org>; Tue, 14 Apr 2026 02:59:47 +0200
Received: from [130.76.20.195] (helo=ewa-mbsout-02.mbs.boeing.net)
 by tlsNG-c1860d.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.0)
 (envelope-from <joan.bae@boeing.com>)
 id 69dd9180-fab6-0a2a45080019-824c14c3c1ec-3
 for <xen-devel@lists.xenproject.org>; Tue, 14 Apr 2026 02:59:46 +0200
Received: from localhost (localhost [127.0.0.1])
 by ewa-mbsout-02.mbs.boeing.net (8.15.2/8.15.2/DOWNSTREAM_MBSOUT) with SMTP id
 63E0xg0S057930; Mon, 13 Apr 2026 17:59:43 -0700
Received: from ewa-av-01.mbs.boeing.net (ewa-av-01.mbs.boeing.net
 [137.137.51.75])
 by ewa-mbsout-02.mbs.boeing.net (8.15.2/8.15.2/8.15.2/UPSTREAM_MBSOUT) with
 ESMTPS id 63E0xV3f057854
 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK);
 Mon, 13 Apr 2026 17:59:31 -0700
Received: from localhost (localhost [127.0.0.1])
 by ewa-av-01.mbs.boeing.net (8.15.2/8.15.2/DOWNSTREAM_RELAY) with SMTP id
 63E0xU3U053066; Mon, 13 Apr 2026 17:59:30 -0700
Received: from A6424298.boeing.com (a6424298.nos.boeing.com [10.191.242.201])
 by ewa-av-01.mbs.boeing.net (8.15.2/8.15.2/UPSTREAM_RELAY) with
 ESMTP id 63E0xKU3052426; Mon, 13 Apr 2026 17:59:21 -0700
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
Authentication-Results: eu.smtp.expurgate.cloud; dkim=pass header.s=boeing-s1912 header.d=boeing.com header.i="@boeing.com" header.h="From:To:Cc:Subject:Date"
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=boeing.com;
	s=boeing-s1912; t=1776128383;
	bh=7rRZv4jH4j5UcfT3Vc0EKG1kzDe3IUvMyVRk4LD2oNo=;
	h=From:To:Cc:Subject:Date:From;
	b=jtqnKOmjyUOaNazw0e450E7ofcLvt9OZ3PnfW/LsbbZoKcz64p13tA/3fF42bZUV/
	 8ubsBSByQEZ1TRKfnMMT35FWLJn8IjfptQmlNip5BvItsqmr9rPikPgQ1wPIsY7kgj
	 6LjgLMR5vK/DO7I/KfTwOlxTqKt1BNUTvRnrjjTz7CC2WdWsNVcOHuOlSw0nboF0Mo
	 HBJhOSScUKNGabji1VOpKvaC+YphaoWK1aomRq/7NQGFu7v0+N2KNs+yv+YbIM8avk
	 uDqqXv/G3678tSf2umb4jUaomSV1aV/ZLtwj/Ns/dRokHnQrVFgKFmdnfqdHJNUQfy
	 /G8eCr7ZV//ug==
From: Joan Bae <joan.bae@boeing.com>
To: xen-devel@lists.xenproject.org
Cc: Joan Bae <joan.bae@boeing.com>,
        Stefano Stabellini <sstabellini@kernel.org>,
        Julien Grall <julien@xen.org>,
        Bertrand Marquis <bertrand.marquis@arm.com>,
        Michal Orzel <michal.orzel@amd.com>
Subject: [XEN PATCH] xen/common: validate shared memory guest address overlap with guest RAM
Date: Tue, 14 Apr 2026 09:59:18 +0900
Message-ID: <59dcd094173791926fff212f3f2b86df50b0dc12.1776060772.git.joan.bae@boeing.com>
X-Mailer: git-send-email 2.43.0
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit
X-TM-AS-GCONF: 00
X-purgate-ID: tlsNG-c1860d/1776128387-F4F5A497-0FD6B68A/0/0
X-purgate-type: clean
X-purgate-size: 3546

Currently, process_shm() does not check whether the guest physical
address of a shared memory region overlaps with the domain's allocated RAM banks.
Neither process_shm() nor p2m_set_entry() checks for existing
mappings, so the RAM mapping is silently overwritten if a user
specifies a guest physical address that falls within the guest RAM
range. Since construct_domain() loads the kernel after process_shm(),
the kernel can end up in shared memory pages. This can cause:
- Another domain corrupting the kernel via shared memory write
- Silent guest crash with no error message from Xen

Add a check in process_shm() to validate that the shared memory
guest address range does not overlap with any of the domain's
allocated RAM banks.

Signed-off-by: Joan Bae <joan.bae@boeing.com>
---
 xen/common/device-tree/static-shmem.c | 37 +++++++++++++++++++++++++++
 1 file changed, 37 insertions(+)

diff --git a/xen/common/device-tree/static-shmem.c b/xen/common/device-tree/static-shmem.c
index 4c4cc1b123..b0ae0304a1 100644
--- a/xen/common/device-tree/static-shmem.c
+++ b/xen/common/device-tree/static-shmem.c
@@ -293,6 +293,31 @@ static bool __init save_map_heap_pages(struct domain *d, struct page_info *pg,
     return false;
 }
 
+static bool __init
+check_shm_guest_paddr_overlap(struct kernel_info *kinfo, paddr_t gbase,
+                                paddr_t size)
+{
+    unsigned int i;
+    const struct membanks *kinfo_mem = kernel_info_get_mem_const(kinfo);
+    paddr_t gend = gbase + size;
+
+    for ( i = 0; i < kinfo_mem->nr_banks; i++ )
+    {
+        paddr_t bankbase = kinfo_mem->bank[i].start;
+        paddr_t bankend = bankbase + kinfo_mem->bank[i].size;
+
+        /* Check if shared memory overlaps with guest RAM */
+        if ( gbase < bankend && bankbase < gend )
+        {
+            printk("Shared memory guest address 0x%"PRIpaddr" - 0x%"PRIpaddr""
+                    " overlaps with guest RAM 0x%"PRIpaddr" - 0x%"PRIpaddr"\n",
+                    gbase, gend - 1, bankbase, bankend - 1);
+            return true;
+        }
+    }
+
+    return false;
+}
+
 int __init process_shm(struct domain *d, struct kernel_info *kinfo,
                        const struct dt_device_node *node)
 {
@@ -355,6 +380,12 @@ int __init process_shm(struct domain *d, struct kernel_info *kinfo,
             /* guest phys address is after host phys address */
             gbase = dt_read_paddr(cells + addr_cells, addr_cells);
 
+            if ( check_shm_guest_paddr_overlap(kinfo, gbase, psize) )
+            {
+                printk("%pd: shared memory region overlaps with the guest's RAM range\n", d);
+                return -EINVAL;
+            }
+
             if ( is_domain_direct_mapped(d) && (pbase != gbase) )
             {
                 printk("%pd: physical address 0x%"PRIpaddr" and guest address 0x%"PRIpaddr" are not direct-mapped.\n",
@@ -396,6 +427,12 @@ int __init process_shm(struct domain *d, struct kernel_info *kinfo,
             /* guest phys address is right at the beginning */
             gbase = dt_read_paddr(cells, addr_cells);
 
+            if ( check_shm_guest_paddr_overlap(kinfo, gbase, psize) )
+            {
+                printk("%pd: shared memory region overlaps with the guest's RAM range\n", d);
+                return -EINVAL;
+            }
+
             if ( !alloc_bank )
             {
                 alloc_heap_pages_cb_extra cb_arg = { d, role_str, gbase,
-- 
2.43.0



From xen-devel-bounces@lists.xenproject.org Tue Apr 14 01:47:05 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 14 Apr 2026 01:47:05 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1281385.1564294 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wCSrY-0003k0-AA; Tue, 14 Apr 2026 01:46:48 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1281385.1564294; Tue, 14 Apr 2026 01:46: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 1wCSrY-0003jt-7L; Tue, 14 Apr 2026 01:46:48 +0000
Received: by outflank-mailman (input) for mailman id 1281385;
 Tue, 14 Apr 2026 01:46:47 +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 1wCSrX-0003jn-8K
 for xen-devel@lists.xenproject.org; Tue, 14 Apr 2026 01:46:47 +0000
Received: from xenbits.xenproject.org ([104.239.192.120])
 by mail.xenproject.org with esmtp (Exim 4.96)
 (envelope-from <julien@xen.org>) id 1wCSrV-001QkU-2P;
 Tue, 14 Apr 2026 01:46:45 +0000
Received: from [116.84.110.196] (helo=[10.158.125.74])
 by xenbits.xenproject.org with esmtpsa (TLS1.3) tls
 TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (Exim 4.96)
 (envelope-from <julien@xen.org>) id 1wCSrV-001UUQ-14;
 Tue, 14 Apr 2026 01:46: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=xen.org;
	s=20200302mail; h=Content-Transfer-Encoding:Content-Type:In-Reply-To:From:
	References:Cc:To:Subject:MIME-Version:Date:Message-ID;
	bh=hn/ObxAnxTNEf0U8zXIaExFL3p9yj5z4expNS+0guuA=; b=Tr375Fbn7RH6XLG3nob3qGod/x
	LHEXzMiWx6iB50ckfTXVdif9fO89Fape8rmqBhrtdd19r8nHa9c8UAvsQ6YFcBVUfIDSoweQ3CvL5
	QCeaLUvFiYXykgn0lvzIRgqMSijq4MC2EbW1DZEwcY3EGlqGMK/JCjKL2wVK0P6k/yx4=;
Message-ID: <cfe8b6ae-2f52-47c4-862d-52d648d41895@xen.org>
Date: Tue, 14 Apr 2026 10:46:41 +0900
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [XEN PATCH] xen/common: validate shared memory guest address
 overlap with guest RAM
Content-Language: en-GB
To: Joan Bae <joan.bae@boeing.com>, xen-devel@lists.xenproject.org
Cc: Stefano Stabellini <sstabellini@kernel.org>,
 Bertrand Marquis <bertrand.marquis@arm.com>,
 Michal Orzel <michal.orzel@amd.com>
References: <59dcd094173791926fff212f3f2b86df50b0dc12.1776060772.git.joan.bae@boeing.com>
From: Julien Grall <julien@xen.org>
In-Reply-To: <59dcd094173791926fff212f3f2b86df50b0dc12.1776060772.git.joan.bae@boeing.com>
Content-Type: text/plain; charset=UTF-8; format=flowed
Content-Transfer-Encoding: 7bit

Hi Joan,

Thank you for the patch.

On 14/04/2026 09:59, Joan Bae wrote:
> Currently, process_shm() does not check whether the guest physical
> address of a shared memory region overlaps with the domain's allocated RAM banks.
> Neither process_shm() nor p2m_set_entry() checks for existing
> mappings, so the RAM mapping is silently overwritten if a user
> specifies a guest physical address that falls within the guest RAM
> range. Since construct_domain() loads the kernel after process_shm(),
> the kernel can end up in shared memory pages. This can cause:
> - Another domain corrupting the kernel via shared memory write
> - Silent guest crash with no error message from Xen

This seems to be solving one specific issue (RAM clashing with shared 
memory) but I believe this could also happen with other kind of mappings 
because, as you said, p2m_set_entry() doesn't check any overlap.

So I would rather prefer if we solve the problem once and for all. This 
would mean modifying p2m_set_entry() (or one of its top caller). 
Although, we would need to be careful to not break memory hypercalls 
which may rely on overwriting existing mappings.

Cheers,

-- 
Julien Grall



From xen-devel-bounces@lists.xenproject.org Tue Apr 14 02:06:24 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 14 Apr 2026 02:06:24 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1281393.1564302 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wCTAE-0006x9-Rj; Tue, 14 Apr 2026 02:06:06 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1281393.1564302; Tue, 14 Apr 2026 02:06: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 1wCTAE-0006x2-Ou; Tue, 14 Apr 2026 02:06:06 +0000
Received: by outflank-mailman (input) for mailman id 1281393;
 Tue, 14 Apr 2026 02:06:05 +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 1wCTAD-0006ww-5r
 for xen-devel@lists.xenproject.org; Tue, 14 Apr 2026 02:06:05 +0000
Received: from xenbits.xenproject.org ([104.239.192.120])
 by mail.xenproject.org with esmtp (Exim 4.96)
 (envelope-from <julien@xen.org>) id 1wCTAC-001RYj-1V;
 Tue, 14 Apr 2026 02:06:04 +0000
Received: from [116.84.110.196] (helo=[10.158.125.74])
 by xenbits.xenproject.org with esmtpsa (TLS1.3) tls
 TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (Exim 4.96)
 (envelope-from <julien@xen.org>) id 1wCTAC-001VdL-0b;
 Tue, 14 Apr 2026 02:06: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=xen.org;
	s=20200302mail; h=Content-Transfer-Encoding:Content-Type:In-Reply-To:From:
	References:Cc:To:Subject:MIME-Version:Date:Message-ID;
	bh=XaWnSOD31kbNTVXa8LLDZ78YYn+M2bU6cCp9h8fe9Qg=; b=o275si6sn9VPmUiSTnyq3eITuX
	P9G8zdKf/2EI8LPde9jZBeoyEkqQIzXpHW0FzDRY1dC5Bj9+pkTrG9GYDrPCU6/XxeBZmGzx8S+Yr
	hSv9qy4F9+9RaI4la4e4MA/yUPjosKOxFwkc7d8kBFzw9JMBJJl3LYkVDYxLnG1yixyI=;
Message-ID: <83786d8b-d57a-4c79-8e8b-7115d4276568@xen.org>
Date: Tue, 14 Apr 2026 11:06:00 +0900
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH v2] xen: gic-v3: Introduce CONFIG_GICV3_NR_LRS
Content-Language: en-GB
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>,
 Michal Orzel <michal.orzel@amd.com>,
 Volodymyr Babchuk <Volodymyr_Babchuk@epam.com>
References: <20260318140900.3795710-1-ayan.kumar.halder@amd.com>
From: Julien Grall <julien@xen.org>
In-Reply-To: <20260318140900.3795710-1-ayan.kumar.halder@amd.com>
Content-Type: text/plain; charset=UTF-8; format=flowed
Content-Transfer-Encoding: 7bit

Hi Ayan,

On 18/03/2026 23:09, Ayan Kumar Halder wrote:
> One key requirement of Xen functional safety is to reduce the number
> of lines of code to be safety certified. Besides, a safety certified
> Xen requires a static hardware configuration to be defined. This static
> hardware configuration is described as per the test hardware/emulator
> hardware configuration against which Xen is verified.
> 
> Introduce GICV3_NR_LRS with the two aims in mind:

Out of interest, why is this limited to GICv3?

> 1. User should set the number of GICV3 list registers as per the test
> hardware so that the unwanted code can be removed using GCC's dead
> code elimination or preprocessor's config.

We discussed this offline, I am not fully convinced you can rely on dead 
code elimination to always remove the BUG() in gicv3_ich_read_lr(). If 
you want to rely on dead code eliminitation, then you will want to call 
a function which have a prototype defined but not implemented (similar 
to what we do for bitops with __bad_atomic_read()) which would fail a 
link time if the compiler didn't remove the code.

> 2. By doing #1, one can ensure that there is no untested code due to
> unsupported hardware platform and thus there is no safety impact due
> to untested code.
> 
> However if the user does not set GICV3_NR_LRS, then it is set to 0.
> Thus Xen will fallback to the default scenario (i.e. read the hardware
> register to determine the number of LRS).
> 
> 1. In gicv3_save_lrs()/gicv3_restore_lrs(), use the number of list
> registers from GICV3_NR_LRS (if defined) instead of gicv3_info.nr_lrs.
> This ensures that if the hardware does not support more than 4 LRs
> (for example), the code accessing LR 4-15 is never reached. The
> compiler can eliminate the unsupported cases as the switch case uses a
> constant conditional.
> 
> 2. RAZ/WI for the unsupported LRs.
> 
> Signed-off-by: Ayan Kumar Halder <ayan.kumar.halder@amd.com>
> Signed-off-by: Michal Orzel <michal.orzel@amd.com>
> ---
> Changelog:
> 
> v1 - 1. s/lrs/LRS
> 2. Implement RAZ/WI instead of panic
> 
> Few comments which were not addressed
> 1. Do "gicv3_info.nr_lrs to LRS" in gicv3_hyp_init() and keep the code
> unchanged in gicv3_save_lrs()/gicv3_restore_lrs() -- This prevents the
> compiler from doing dead code elimination as the switch condition cannot
> be evaluated at compile time.
> I am not sure how to get around this issue.
> 
>   xen/arch/arm/Kconfig  |  9 +++++++++
>   xen/arch/arm/gic-v3.c | 14 ++++++++++++--
>   2 files changed, 21 insertions(+), 2 deletions(-)
> 
> diff --git a/xen/arch/arm/Kconfig b/xen/arch/arm/Kconfig
> index 2f2b501fda..6540013f97 100644
> --- a/xen/arch/arm/Kconfig
> +++ b/xen/arch/arm/Kconfig
> @@ -276,6 +276,15 @@ config PCI_PASSTHROUGH
>   
>   endmenu
>   
> +config GICV3_NR_LRS
> +	int "Number of GICv3 Link Registers supported" if EXPERT

Supported by who? The hardware? Xen? Asking, because I could forsee an 
integrator wanted to limit the number of LRs to something smaller than 
what the HW supports (in a lot of cases, 2 LRs is sufficient).

> +	depends on GICV3
> +	range 0 16
> +	default 0
> +	help
> +	  Controls the number of Link registers to be accessed.
> +	  Keep it set to 0 to use a value obtained from a hardware register.

I still strongly think that if GICV3_NR_LRS is set, then it needs to be 
checked against the value read by the hardware

> +
>   menu "ARM errata workaround via the alternative framework"
>   	depends on HAS_ALTERNATIVE
>   
> diff --git a/xen/arch/arm/gic-v3.c b/xen/arch/arm/gic-v3.c
> index bc07f97c16..eaae95eb4d 100644
> --- a/xen/arch/arm/gic-v3.c
> +++ b/xen/arch/arm/gic-v3.c
> @@ -51,6 +51,8 @@ static DEFINE_PER_CPU(void __iomem*, rbase);
>   #define GICD                   (gicv3.map_dbase)
>   #define GICD_RDIST_BASE        (this_cpu(rbase))
>   #define GICD_RDIST_SGI_BASE    (GICD_RDIST_BASE + SZ_64K)
> +#define LRS                    (CONFIG_GICV3_NR_LRS ?: \
> +                                gicv3_info.nr_lrs)

IMHO, LRS is a little bit vague. What about MAX_LRS? Or maybe NR_LRS?

>   
>   /*
>    * Saves all 16(Max) LR registers. Though number of LRs implemented
> @@ -59,7 +61,7 @@ static DEFINE_PER_CPU(void __iomem*, rbase);
>   static inline void gicv3_save_lrs(struct vcpu *v)
>   {
>       /* Fall through for all the cases */
> -    switch ( gicv3_info.nr_lrs )
> +    switch ( LRS )
>       {
>       case 16:
>           v->arch.gic.v3.lr[15] = READ_SYSREG_LR(15);
> @@ -121,7 +123,7 @@ static inline void gicv3_save_lrs(struct vcpu *v)
>   static inline void gicv3_restore_lrs(const struct vcpu *v)
>   {
>       /* Fall through for all the cases */
> -    switch ( gicv3_info.nr_lrs )
> +    switch ( LRS )
>       {
>       case 16:
>           WRITE_SYSREG_LR(v->arch.gic.v3.lr[15], 15);
> @@ -178,6 +180,10 @@ static inline void gicv3_restore_lrs(const struct vcpu *v)
>   
>   static uint64_t gicv3_ich_read_lr(int lr)
>   {
> +    /* RAZ for unsupported LR */
> +    if ( lr >= LRS )
> +        return 0;
> +
>       switch ( lr )
>       {
>       case 0: return READ_SYSREG_LR(0);
> @@ -203,6 +209,10 @@ static uint64_t gicv3_ich_read_lr(int lr)
>   
>   static void gicv3_ich_write_lr(int lr, uint64_t val)
>   {
> +    /* WI for unsupported LR */

AFAIU, this path is really not meant to happen. So I don't think we want 
to silently ignore the write as it would mean an interrupt is missing. I 
think in debug build, we probably want to use ASSERT_UNREACHABLE(). If 
we want something for production as well, then we could instead use WARN().

Cheers,

-- 
Julien Grall



From xen-devel-bounces@lists.xenproject.org Tue Apr 14 02:10:43 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 14 Apr 2026 02:10:43 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1281401.1564313 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wCTEe-00006N-D7; Tue, 14 Apr 2026 02:10:40 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1281401.1564313; Tue, 14 Apr 2026 02:10: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 1wCTEe-00006G-9M; Tue, 14 Apr 2026 02:10:40 +0000
Received: by outflank-mailman (input) for mailman id 1281401;
 Tue, 14 Apr 2026 02:10:39 +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 1wCTEd-00006A-HX
 for xen-devel@lists.xenproject.org; Tue, 14 Apr 2026 02:10:39 +0000
Received: from xenbits.xenproject.org ([104.239.192.120])
 by mail.xenproject.org with esmtp (Exim 4.96)
 (envelope-from <julien@xen.org>) id 1wCTEd-001RdR-0p;
 Tue, 14 Apr 2026 02:10:39 +0000
Received: from [116.84.110.196] (helo=[10.158.125.74])
 by xenbits.xenproject.org with esmtpsa (TLS1.3) tls
 TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (Exim 4.96)
 (envelope-from <julien@xen.org>) id 1wCTEc-001VmT-30;
 Tue, 14 Apr 2026 02:10: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=xen.org;
	s=20200302mail; h=Content-Transfer-Encoding:Content-Type:In-Reply-To:From:
	References:Cc:To:Subject:MIME-Version:Date:Message-ID;
	bh=bhrcCn6V/kPpvu1fA3POfrorI1qX0VaIDSvPlAcKewI=; b=cKAl92WWPcY+Y6kasF5Qv+bL2N
	tA2R5REsSc5Wg5nIbuIC6egP+ZVBIAXXKLwHac0B2zWuiQEeqnQncF6D/xxOR3XLZ+VvrJK6W2ALE
	Bj0WmMoWyKJbAszo2SQd6iMAHy/JZfRADXjiGLOKgvOOa+MePOlMA26l2UV0vj2hHXNo=;
Message-ID: <56478969-509d-4527-b136-4498840606e2@xen.org>
Date: Tue, 14 Apr 2026 11:10:35 +0900
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH v2] xen: gic-v3: Introduce CONFIG_GICV3_NR_LRS
Content-Language: en-GB
To: Luca Fancellu <Luca.Fancellu@arm.com>,
 Ayan Kumar Halder <ayan.kumar.halder@amd.com>
Cc: "xen-devel@lists.xenproject.org" <xen-devel@lists.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>
References: <20260318140900.3795710-1-ayan.kumar.halder@amd.com>
 <D28202A5-EA01-4AE7-816C-FE3B703605F6@arm.com>
From: Julien Grall <julien@xen.org>
In-Reply-To: <D28202A5-EA01-4AE7-816C-FE3B703605F6@arm.com>
Content-Type: text/plain; charset=UTF-8; format=flowed
Content-Transfer-Encoding: 7bit

Hi,

On 08/04/2026 23:24, Luca Fancellu wrote:
>> @@ -203,6 +209,10 @@ static uint64_t gicv3_ich_read_lr(int lr)
>>
>> static void gicv3_ich_write_lr(int lr, uint64_t val)
>> {
>> +    /* WI for unsupported LR */
>> +    if ( lr >= LRS )
>> +        return;
>> +
>>      switch ( lr )
>>      {
>>      case 0:
> 
> Now, since we are using CONFIG_GICV3_NR_LRS or gicv3_info.nr_lrs in gicv3_save_lrs/gicv3_restore_lrs,
> there are other part of the codebase using nr_lrs (gic_get_nr_lrs() is one of them), but all the callers of that
> function will use the HW nr_lrs and not the CONFIG_GICV3_NR_LRS, so I think some work needs to be done
> to align them or there will be mismatches at runtime with possible loss of information.

+1. We need a consistent view for the number of LRs. I could also see a 
use case where the integrator wants to support less LRs than what the HW 
supports (this doesn't seem to be prevented with this patch).

Note, during Xen boot, we may need to zero the LRs which are unused as 
they may potentially contain active interrupts.

Cheers,

-- 
Julien Grall



From xen-devel-bounces@lists.xenproject.org Tue Apr 14 02:17:54 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 14 Apr 2026 02:17:54 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1281412.1564321 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wCTLY-0000pq-4A; Tue, 14 Apr 2026 02:17:48 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1281412.1564321; Tue, 14 Apr 2026 02:17: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 1wCTLY-0000pj-1E; Tue, 14 Apr 2026 02:17:48 +0000
Received: by outflank-mailman (input) for mailman id 1281412;
 Tue, 14 Apr 2026 02:17:46 +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 1wCTLW-0000pd-6C
 for xen-devel@lists.xenproject.org; Tue, 14 Apr 2026 02:17:46 +0000
Received: from xenbits.xenproject.org ([104.239.192.120])
 by mail.xenproject.org with esmtp (Exim 4.96)
 (envelope-from <julien@xen.org>) id 1wCTLV-001RkF-2B;
 Tue, 14 Apr 2026 02:17:45 +0000
Received: from [116.84.110.196] (helo=[10.158.125.74])
 by xenbits.xenproject.org with esmtpsa (TLS1.3) tls
 TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (Exim 4.96)
 (envelope-from <julien@xen.org>) id 1wCTLV-001W45-1J;
 Tue, 14 Apr 2026 02:17: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=xen.org;
	s=20200302mail; h=Content-Transfer-Encoding:Content-Type:In-Reply-To:From:
	References:Cc:To:Subject:MIME-Version:Date:Message-ID;
	bh=js5XNSEc24aap/AOxb/rFQf3IpHmT2uTLaA9JtlSpc0=; b=kQ6mYhiE4UbFDKjrAquAjVOavl
	mwX1laZ5Ny0jlbjvKMJ4CvtK4PFw0ob1gcRx8MTrL7nIaqh+2ftFi0WGzsYh5DBjE0sO9jWK9vt3I
	rn8lS9JynCRf5UMEBBc6vfR5Gi5HfeGl2YtXgH2l3waHT211GhXiV2TGGAHhHXR6om/4=;
Message-ID: <56a7c116-4ecb-4dfc-a7dd-774d53041fe9@xen.org>
Date: Tue, 14 Apr 2026 11:17:41 +0900
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH v2 02/23] xen/arm: smmuv3: Add support for stage-1 and
 nested stage translation
Content-Language: en-GB
To: Milan Djokic <milan_djokic@epam.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>,
 Michal Orzel <michal.orzel@amd.com>,
 Volodymyr Babchuk <Volodymyr_Babchuk@epam.com>
References: <cover.1774305918.git.milan_djokic@epam.com>
 <cb8a2cb5df50128f4c49d34a7ab8faa4e73f83c6.1774305918.git.milan_djokic@epam.com>
From: Julien Grall <julien@xen.org>
In-Reply-To: <cb8a2cb5df50128f4c49d34a7ab8faa4e73f83c6.1774305918.git.milan_djokic@epam.com>
Content-Type: text/plain; charset=UTF-8; format=flowed
Content-Transfer-Encoding: 7bit

Hi Milan,

On 24/03/2026 07:51, Milan Djokic wrote:
> 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 | 93 +++++++++++++++++++++++----
>   xen/drivers/passthrough/arm/smmu-v3.h |  9 +++
>   2 files changed, 91 insertions(+), 11 deletions(-)
> 
> diff --git a/xen/drivers/passthrough/arm/smmu-v3.c b/xen/drivers/passthrough/arm/smmu-v3.c
> index 73cc4ef08f..f9c6837919 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 = le64_to_cpu(dst[0]);
> -	bool ste_live = false;
> +	bool s1_live = false, s2_live = false, ste_live = false;
> +	bool abort, translate = false;
>   	struct arm_smmu_device *smmu = NULL;
> +	struct arm_smmu_s1_cfg *s1_cfg = NULL;
>   	struct arm_smmu_s2_cfg *s2_cfg = NULL;
>   	struct arm_smmu_domain *smmu_domain = NULL;
>   	struct arm_smmu_cmdq_ent prefetch_cmd = {
> @@ -699,30 +701,54 @@ static void arm_smmu_write_strtab_ent(struct arm_smmu_master *master, u32 sid,
>   		smmu = master->smmu;
>   	}
>   
> -	if (smmu_domain)
> -		s2_cfg = &smmu_domain->s2_cfg;
> +	if (smmu_domain) {
> +		switch (smmu_domain->stage) {
> +		case ARM_SMMU_DOMAIN_NESTED:
> +			s1_cfg = &smmu_domain->s1_cfg;
> +			fallthrough;
> +		case ARM_SMMU_DOMAIN_S2:
> +			s2_cfg = &smmu_domain->s2_cfg;
> +			break;
> +		default:
> +			break;
> +		}
> +		translate = !!s1_cfg || !!s2_cfg;

NIT: translate is a bool. So do you actually need the !!?

> +	}
>   
>   	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 = true;
> +			break;
>   		case STRTAB_STE_0_CFG_S2_TRANS:
> -			ste_live = true;
> +			s2_live = true;
> +			break;
> +		case STRTAB_STE_0_CFG_NESTED:
> +			s1_live = true;
> +			s2_live = true;
>   			break;
>   		case STRTAB_STE_0_CFG_ABORT:
> -			BUG_ON(!disable_bypass);

I am not sure I understand why this was removed. Can you clarify?

>   			break;
>   		default:
>   			BUG(); /* STE corruption */
>   		}
>   	}
>   
> +	ste_live = s1_live || s2_live;
> +
>   	/* Nuke the existing STE_0 value, as we're going to rewrite it */
>   	val = STRTAB_STE_0_V;
>   
>   	/* Bypass/fault */
> -	if (!smmu_domain || !(s2_cfg)) {
> -		if (!smmu_domain && disable_bypass)
> +	if (!smmu_domain)
> +		abort = disable_bypass;
> +	else
> +		abort = smmu_domain->abort;
> +
> +	if (abort || !translate) {
> +		if (abort)
>   			val |= FIELD_PREP(STRTAB_STE_0_CFG, STRTAB_STE_0_CFG_ABORT);
>   		else
>   			val |= FIELD_PREP(STRTAB_STE_0_CFG, STRTAB_STE_0_CFG_BYPASS);
> @@ -740,7 +766,33 @@ static void arm_smmu_write_strtab_ent(struct arm_smmu_master *master, u32 sid,
>   		return;
>   	}
>   
> +	if (ste_live) {
> +		/* First invalidate the live STE */
> +		dst[0] = cpu_to_le64(STRTAB_STE_0_CFG_ABORT);
> +		arm_smmu_sync_ste_for_sid(smmu, sid);
> +	}
> +
> +	if (s1_cfg) {
> +		BUG_ON(s1_live);
> +		dst[1] = 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] |= cpu_to_le64(STRTAB_STE_1_S1STALLD);
> +
> +		val |= (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 = s2_cfg->vttbr & STRTAB_STE_3_S2TTB_MASK;
>   		u64 strtab =
>   			 FIELD_PREP(STRTAB_STE_2_S2VMID, s2_cfg->vmid) |
>   			 FIELD_PREP(STRTAB_STE_2_VTCR, s2_cfg->vtcr) |
> @@ -750,12 +802,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;
>   
> -		BUG_ON(ste_live);
> +		if (s2_live) {
> +			u64 s2ttb = le64_to_cpu(dst[3]) & STRTAB_STE_3_S2TTB_MASK;
> +			BUG_ON(s2ttb != vttbr);
> +		}
> +
>   		dst[2] = cpu_to_le64(strtab);
>   
> -		dst[3] = cpu_to_le64(s2_cfg->vttbr & STRTAB_STE_3_S2TTB_MASK);
> +		dst[3] = cpu_to_le64(vttbr);
>   
>   		val |= FIELD_PREP(STRTAB_STE_0_CFG, STRTAB_STE_0_CFG_S2_TRANS);
> +	} else {
> +		dst[2] = 0;
> +		dst[3] = 0;
>   	}
>   
>   	if (master->ats_enabled)
> @@ -1254,6 +1313,15 @@ static int arm_smmu_domain_finalise(struct iommu_domain *domain,
>   {
>   	int ret;
>   	struct arm_smmu_domain *smmu_domain = to_smmu_domain(domain);
> +	struct arm_smmu_device *smmu = smmu_domain->smmu;
> +
> +	if (smmu_domain->stage == ARM_SMMU_DOMAIN_NESTED &&
> +		(!(smmu->features & ARM_SMMU_FEAT_TRANS_S1) ||
> +		 !(smmu->features & ARM_SMMU_FEAT_TRANS_S2))) {
> +			dev_info(smmu_domain->smmu->dev,
> +					"does not implement two stages\n");
> +			return -EINVAL;
> +	}
>   
>   	/* Restrict the stage to what we can actually support */
>   	smmu_domain->stage = ARM_SMMU_DOMAIN_S2;
> @@ -2353,11 +2421,14 @@ static int arm_smmu_device_hw_probe(struct arm_smmu_device *smmu)
>   		break;
>   	}
>   
> +	if (reg & IDR0_S1P)
> +		smmu->features |= ARM_SMMU_FEAT_TRANS_S1;
> +
>   	if (reg & IDR0_S2P)
>   		smmu->features |= ARM_SMMU_FEAT_TRANS_S2;
>   
> -	if (!(reg & IDR0_S2P)) {
> -		dev_err(smmu->dev, "no stage-2 translation support!\n");
> +	if (!(reg & (IDR0_S1P | IDR0_S2P))) {

I believe the behavior is now slightly different. This would not print 
anything if the SMMU support stage-1 but not stage-2. However, Xen at 
least need the latter.

> +		dev_err(smmu->dev, "no translation support!\n");
>   		return -ENXIO;
>   	}
>   
> diff --git a/xen/drivers/passthrough/arm/smmu-v3.h b/xen/drivers/passthrough/arm/smmu-v3.h
> index ab1f29f6c7..3fb13b7e21 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
>   
>   #define STRTAB_STE_0_S1FMT		GENMASK_ULL(5, 4)
>   #define STRTAB_STE_0_S1FMT_LINEAR	0
> @@ -549,6 +550,12 @@ struct arm_smmu_strtab_l1_desc {
>   	dma_addr_t			l2ptr_dma;
>   };
>   
> +struct arm_smmu_s1_cfg {
> +	u64				s1ctxptr;
> +	u8				s1fmt;
> +	u8				s1cdmax;
> +};
> +
>   struct arm_smmu_s2_cfg {
>   	u16				vmid;
>   	u64				vttbr;
> @@ -669,7 +676,9 @@ struct arm_smmu_domain {
>   	atomic_t			nr_ats_masters;
>   
>   	enum arm_smmu_domain_stage	stage;
> +	struct arm_smmu_s1_cfg	s1_cfg;
>   	struct arm_smmu_s2_cfg	s2_cfg;
> +	bool			abort;

I think there might be some padding before s1_cfg. So I wonder whether 
this would be better be moved before to reduce the size of the structure.

>   
>   	/* Xen domain associated with this SMMU domain */
>   	struct domain		*d;

Cheers,

-- 
Julien Grall



From xen-devel-bounces@lists.xenproject.org Tue Apr 14 02:22:05 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 14 Apr 2026 02:22:05 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1281425.1564329 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wCTPc-0002OF-LY; Tue, 14 Apr 2026 02:22:00 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1281425.1564329; Tue, 14 Apr 2026 02:22: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 1wCTPc-0002O8-J4; Tue, 14 Apr 2026 02:22:00 +0000
Received: by outflank-mailman (input) for mailman id 1281425;
 Tue, 14 Apr 2026 02:21:59 +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 1wCTPb-0002O0-4y
 for xen-devel@lists.xenproject.org; Tue, 14 Apr 2026 02:21:59 +0000
Received: from xenbits.xenproject.org ([104.239.192.120])
 by mail.xenproject.org with esmtp (Exim 4.96)
 (envelope-from <julien@xen.org>) id 1wCTPa-001RpZ-0B;
 Tue, 14 Apr 2026 02:21:58 +0000
Received: from [116.84.110.196] (helo=[10.158.125.74])
 by xenbits.xenproject.org with esmtpsa (TLS1.3) tls
 TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (Exim 4.96)
 (envelope-from <julien@xen.org>) id 1wCTPZ-001WFu-2S;
 Tue, 14 Apr 2026 02:21: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>
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=/mKi+oHOvJtVh86QkdJWZmXPzkAj7tH9N7+wbcpLyCQ=; b=c1IFRaEjqGaw8efOCAalfg8Fag
	7ZXSAog3x4dTqYNAaDoLFm7FhVGohBwKhtMqFlcCLehItr8NNaTI+DQNxXsXqbE2/RAJ5u0Q2UmzL
	9pprwm2sutNSOt2vj3HTdN3IoLwL2wdI8FCOCD697ZeI3zof5qBTlHE7y90unyYoE3JM=;
Message-ID: <e1d5c911-6bd4-455b-9a3d-8505285f69b8@xen.org>
Date: Tue, 14 Apr 2026 11:21:52 +0900
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH v3 00/23] Add SMMUv3 Stage 1 Support for Xen guests
Content-Language: en-GB
To: Milan Djokic <milan_djokic@epam.com>,
 "xen-devel@lists.xenproject.org" <xen-devel@lists.xenproject.org>
Cc: Bertrand Marquis <bertrand.marquis@arm.com>,
 Rahul Singh <rahul.singh@arm.com>,
 Stefano Stabellini <sstabellini@kernel.org>,
 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?Q?Roger_Pau_Monn=C3=A9?= <roger.pau@citrix.com>,
 Nick Rosbrook <enr0n@ubuntu.com>, George Dunlap <gwd@xenproject.org>,
 Juergen Gross <jgross@suse.com>,
 "Daniel P. Smith" <dpsmith@apertussolutions.com>
References: <cover.1774305918.git.milan_djokic@epam.com>
 <cover.1774918270.git.milan_djokic@epam.com>
From: Julien Grall <julien@xen.org>
In-Reply-To: <cover.1774918270.git.milan_djokic@epam.com>
Content-Type: text/plain; charset=UTF-8; format=flowed
Content-Transfer-Encoding: 7bit

Hi Milan,

On 31/03/2026 10:51, Milan Djokic wrote:
> This patch series provides emulated SMMUv3 support in Xen, enabling stage-1
> translation for the guest OS.
> 
> 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. The goal of this work is to support Stage 1
> translation for Xen guests.
> 
> This patch series represents a continuation of work from Rahul Singh:
> https://patchwork.kernel.org/project/xen-devel/cover/cover.1669888522.git.rahul.singh@arm.com/
> Original patch series is aligned with the newest Xen structure, with the addition
> of translation layer which provides 1:N vIOMMU->pIOMMU mapping, in order to
> support passthrough of the devices attached to different physical IOMMUs.
> 
> We cannot trust the guest OS to control the SMMUv3 hardware directly as
> compromised guest OS can corrupt the SMMUv3 configuration and make the system
> vulnerable. The guest gets the ownership of the stage 1 page tables and also
> owns stage 1 configuration structures. The Xen handles the root configuration
> structure (for security reasons), including the stage 2 configuration.
> 
> XEN will emulate the SMMUv3 hardware and expose the virtual SMMUv3 to the
> guest. Guest can use the native SMMUv3 driver to configure the stage 1
> translation. When the guest configures the SMMUv3 for Stage 1, XEN will trap
> the access and configure hardware.
> 
> SMMUv3 Driver(Guest OS) -> Configure the Stage-1 translation ->
> XEN trap access -> XEN SMMUv3 driver configure the HW.
> 
> The final patch series commit provides a design document for the emulated
> IOMMU (arm-viommu.rst), which was previously discussed with the maintainers.
> Details regarding implementation, future work and security risks are outlined
> in this document.
> 
> ---
> Changes in v2:
>   - Updated design and implementation with vIOMMU->pIOMMU mapping layer
>   - Addressed security risks in the design, provided initial performance
>     measurements
>   - Addressed comments from previous version
>   - Tested on Renesas R-Car platform, initial performance measurements for
>     stage-1 vs stage-1-less guests
> ---
> 
> ---
> Changes in v3:
>   - Bump domctl version, added explicit padding for the new domctl structures
>   - Remove unnecessary changes according to review comments
>   - Add "ARM" prefix for vIOMMU Kconfig options, since only ARM architecture is
>     supported at this point
>   - Re-generate go code
>   - Add missing commit sign-off tags

Can you please avoid posting new revision in reply-to a previous one? 
This makes tracking quite difficult on the reviewer side. So I ended up 
starting to post comments on v2. Please have a look at them.

Cheers,

-- 
Julien Grall



From xen-devel-bounces@lists.xenproject.org Tue Apr 14 08:12:06 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 14 Apr 2026 08:12:06 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1281457.1564343 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wCYsB-00017H-6D; Tue, 14 Apr 2026 08:11:51 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1281457.1564343; Tue, 14 Apr 2026 08:11: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 1wCYsB-00017A-2Q; Tue, 14 Apr 2026 08:11:51 +0000
Received: by outflank-mailman (input) for mailman id 1281457;
 Tue, 14 Apr 2026 08:11:49 +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 1wCYs9-000174-Fc
 for xen-devel@lists.xenproject.org; Tue, 14 Apr 2026 08:11:49 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wCYs8-005quB-3j
 for xen-devel@lists.xenproject.org; Tue, 14 Apr 2026 10:11:48 +0200
Received: from [10.42.69.8] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <Michal.Orzel@amd.com>)
 id 69ddf6b8-bab6-0a2a0a5309dd-0a2a4508d414-32
 for <xen-devel@lists.xenproject.org>; Tue, 14 Apr 2026 10:11:47 +0200
Received: from [52.101.43.0]
 (helo=SJ2PR03CU001.outbound.protection.outlook.com)
 by tlsNG-c1860d.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.0)
 (envelope-from <Michal.Orzel@amd.com>)
 id 69ddf6c1-fab6-0a2a45080019-34652b0012ee-4
 for <xen-devel@lists.xenproject.org>; Tue, 14 Apr 2026 10:11:47 +0200
Received: from MN2PR20CA0038.namprd20.prod.outlook.com (2603:10b6:208:235::7)
 by SJ5PPFD5E8DE351.namprd12.prod.outlook.com
 (2603:10b6:a0f:fc02::9a4) with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9769.48; Tue, 14 Apr
 2026 08:11:40 +0000
Received: from BL6PEPF00022574.namprd02.prod.outlook.com
 (2603:10b6:208:235:cafe::9a) by MN2PR20CA0038.outlook.office365.com
 (2603:10b6:208:235::7) with Microsoft SMTP Server (version=TLS1_3,
 cipher=TLS_AES_256_GCM_SHA384) id 15.20.9769.48 via Frontend Transport; Tue,
 14 Apr 2026 08:11:39 +0000
Received: from satlexmb07.amd.com (165.204.84.17) by
 BL6PEPF00022574.mail.protection.outlook.com (10.167.249.42) with Microsoft
 SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id
 15.20.9769.17 via Frontend Transport; Tue, 14 Apr 2026 08:11:39 +0000
Received: from SATLEXMB03.amd.com (10.181.40.144) by satlexmb07.amd.com
 (10.181.42.216) with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.2.2562.17; Tue, 14 Apr
 2026 03:11:39 -0500
Received: from satlexmb08.amd.com (10.181.42.217) by SATLEXMB03.amd.com
 (10.181.40.144) with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2507.39; Tue, 14 Apr
 2026 03:11:38 -0500
Received: from XIR-MICHALO-L1.xilinx.com (10.180.168.240) by
 satlexmb08.amd.com (10.181.42.217) with Microsoft SMTP Server id 15.2.2562.17
 via Frontend Transport; Tue, 14 Apr 2026 03:11:37 -0500
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@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=DUCwW21L9PPlcsfIks9yEoRta1EIouMTQKA4p/5Q1VbdlXcYPpadYyaQutXtXlKJTalB15lvYWK8iUk91cQBrItCircLp00P68jChPwlLr9SH90jqMnHpR9pAU98SwNpb4ivKEP/ZVPe/51ZU8eourBhGJNrLOLtsQNZuK7/5Gx5iWvJ3fRPmS63hty/zFLmV/Ksn3KsUqMyC4Vuk5UOgM79MX/XDBdnGw442G32wQa8ycRjDEtK8r3Fu/npczzuc2ZHQbcEN9krQRQaHWvjo+aJPOXHfLUdlMPXC6UM8Aj/uKMa70niypZFw3R+kfcyMW4RXt4YyrimS7FSCe2YOw==
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com;
 s=arcselector10001;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1;
 bh=PP1KyGMUPJvF5Q1ukT7V82w/Lm2EsCmlDdLEROtkou0=;
 b=HeE7Zb9PYVVoqHQHWP96r4oMc4+0pUJZgFH74GWbQ8/trEOGo/qiYz7wG4t+biDYdWwWx+sEV4m4RyxjP0wZsXv87+Tm8olYQ9hYq9SkKBHFIPLphquslOP9GM9umIa2LJ7SPRTDDz2JaGcZ9k4hGnDkbufcKgQ3Qv6/HsEw4c4svFs3FtSiPWee+6nRSZ6h35y7rnOzo97VU5hhGR7nppBwfYhGu3W68bif1pINo5Q5+jiw0jD5dIYJIROo9Jaln/oK6p2PxD3lKGsCJny41hO9MnluADpvH1F3NIFhaeufrtVUQVuAI7Y+P95IYlTCAAfnG8bAXqzD+p7FrmVunw==
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=PP1KyGMUPJvF5Q1ukT7V82w/Lm2EsCmlDdLEROtkou0=;
 b=y2U0zr0J50Uocv8mpPe5kNBlqvPlxcsgAWJq+JcUT5ias7Rv1OSMA1Msr7KK9pdNNV2vgz8VoMOTfXNINFPL1JCspWIlvP+GU6LuI8nBLe+ZHq6hwRGp/rTLTYpRt/ra+Z/m3qD6iDC89NA6JMm1hcCjazHJqGqeFChMZxHY5tw=
X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 165.204.84.17)
 smtp.mailfrom=amd.com; dkim=none (message not signed)
 header.d=none;dmarc=pass action=none header.from=amd.com;
Received-SPF: Pass (protection.outlook.com: domain of amd.com designates
 165.204.84.17 as permitted sender) receiver=protection.outlook.com;
 client-ip=165.204.84.17; helo=satlexmb07.amd.com; pr=C
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>,
	<Mark.Rutland@arm.com>
Subject: [PATCH] xen/arm64: flushtlb: Optimize ARM64_WORKAROUND_REPEAT_TLBI
Date: Tue, 14 Apr 2026 10:11:24 +0200
Message-ID: <20260414081124.48741-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
Received-SPF: None (SATLEXMB03.amd.com: michal.orzel@amd.com does not
 designate permitted sender hosts)
X-EOPAttributedMessage: 0
X-MS-PublicTrafficType: Email
X-MS-TrafficTypeDiagnostic: BL6PEPF00022574:EE_|SJ5PPFD5E8DE351:EE_
X-MS-Office365-Filtering-Correlation-Id: 182f4983-c2c1-467b-24c8-08de99fd74bc
X-MS-Exchange-SenderADCheck: 1
X-MS-Exchange-AntiSpam-Relay: 0
X-Microsoft-Antispam:
	BCL:0;ARA:13230040|1800799024|376014|36860700016|82310400026|13003099007|56012099003|18002099003;
X-Microsoft-Antispam-Message-Info:
	Vb0imuJC/sTDyw+CSlUnl7zUUfRn36atApgSsOxsRIDdCP/4iPUh2Ms2RmWCAym0Xd6r3GwI3I+ky90sJY/vqu74LcHVnsJUA9lofhoDnkvy3H8JAO0dKfnf4jyR2ZevuED8axlOvB7ARIclBKuORGUMdOND8c5uUkKx9auNNdCfYfvxtpXa+yGoGZngo0+vD6p4kd+LPGxEznPEN0N80Q7V+pHATWbv1jfZgkIRLps4gExp/k7j2uXD3spP0nhHMW2QBrVRh1J/yX4lTrZxD3pwzIb+YqoWZzrlzeh6+9PNFiZhheTTl+QH5CLi25oh/eKI85LARvY97yDIRrpfh2Apgefi8GKwX+VByCVmx8oIyOaKI83Y1cgGC7wsrJH2Zmli+g1e4F1gZCgTyKcYIKyKlAWno7S++YD0vBfo6/L/YL5/IlEkROLyiMWydBA6YzifrAOubuCuWrA+7gh6+uwAKui1Gqk9OdCpYXB9rR8KE8eRAtUrmyi6nGfkxmhRMfEAT3q2phSiyHMn4vIYbKyyeVQOZ3bi83uxLWu76YN7RD3Zv5n99AewG74gNsmVrzjsliZBm4DY/h9zik6EuHpbEdJSyjkLp1YhYuFSTb/qBRE+RWon8UPaoXAcwmFyazrUFYaUtoRbwxRbExcw5zGuBcsoHFF2KH5EnFUdB8v1mGjTL9Rjx1H1LKsJIrE8o812jWKVoAnfsSTqwq0IDWPdyibouJKITC+t047zJPgS6sTyYmBYy6BZ44rkSJCZZMIjy+iaMnG49H1IJjXrzA==
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)(36860700016)(82310400026)(13003099007)(56012099003)(18002099003);DIR:OUT;SFP:1101;
X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1
X-MS-Exchange-AntiSpam-MessageData-0:
	o1kFbWFtiK3xeI1aUlgDvbUumLAYh/h+ajwt3ii+FpIdIjWjilwDpqSyIP1L3m78pyCoF3HMhgh//Ak1pjkfwXODCQ03lLr8iDjBvLhyxz8HU/uXbJkqa4rHzpbh7VjSyaMXh5uRQ4+4WtwjiXTkD+yQAT+EbfAm+8/1yvmYxdEqlfGDP3PAghehknGaAiNqro9dsHxuTRvqmWIYbuktXW3aTiDzsLW4ZEctdaNCyEmrxN/frMIRyujyfP8/E4xIXZ83QA21mhSkg5FajU1ScBOTryrXg9NehFw+qKddKXHs11TTMxuW6opoAhGqUNfR09tOOk2ZSNBRv99PlQLeF9XSqqO92JR7GaKApxey21snfhhE53AmSV8dv+PhrBv6uKGBRW5pbukIhoAUkQgFcswa+dXTU42Tqn52QaFoCH9MHUWYUk03YT61eqKnb1uG
X-OriginatorOrg: amd.com
X-MS-Exchange-CrossTenant-OriginalArrivalTime: 14 Apr 2026 08:11:39.7012
 (UTC)
X-MS-Exchange-CrossTenant-Network-Message-Id: 182f4983-c2c1-467b-24c8-08de99fd74bc
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:
	BL6PEPF00022574.namprd02.prod.outlook.com
X-MS-Exchange-CrossTenant-AuthAs: Anonymous
X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem
X-MS-Exchange-Transport-CrossTenantHeadersStamped: SJ5PPFD5E8DE351
X-purgate-ID: tlsNG-c1860d/1776154307-F6151497-20639DC2/0/0
X-purgate-type: clean
X-purgate-size: 12302

The ARM64_WORKAROUND_REPEAT_TLBI workaround is used to mitigate several
errata where broadcast TLBI;DSB sequences don't provide all the
architecturally required synchronization. The workaround performs more
work than necessary, and can have significant overhead. This patch
optimizes the workaround, as explained below.

1. All relevant errata only affect the ordering and/or completion of
   memory accesses which have been translated by an invalidated TLB
   entry. The actual invalidation of TLB entries is unaffected.

2. The existing workaround is applied to both broadcast and local TLB
   invalidation, whereas for all relevant errata it is only necessary to
   apply a workaround for broadcast invalidation.

3. The existing workaround replaces every TLBI with a TLBI;DSB;TLBI
   sequence, whereas for all relevant errata it is only necessary to
   execute a single additional TLBI;DSB sequence after any number of
   TLBIs are completed by a DSB.

   For example, for a sequence of batched TLBIs:

       TLBI <op1>[, <arg1>]
       TLBI <op2>[, <arg2>]
       TLBI <op3>[, <arg3>]
       DSB ISH

   ... the existing workaround will expand this to:

       TLBI <op1>[, <arg1>]
       DSB ISH                  // additional
       TLBI <op1>[, <arg1>]     // additional
       TLBI <op2>[, <arg2>]
       DSB ISH                  // additional
       TLBI <op2>[, <arg2>]     // additional
       TLBI <op3>[, <arg3>]
       DSB ISH                  // additional
       TLBI <op3>[, <arg3>]     // additional
       DSB ISH

   ... whereas it is sufficient to have:

       TLBI <op1>[, <arg1>]
       TLBI <op2>[, <arg2>]
       TLBI <op3>[, <arg3>]
       DSB ISH
       TLBI <opX>[, <argX>]     // additional
       DSB ISH                  // additional

   Using a single additional TBLI and DSB at the end of the sequence can
   have significantly lower overhead as each DSB which completes a TLBI
   must synchronize with other PEs in the system, with potential
   performance effects both locally and system-wide.

4. The existing workaround repeats each specific TLBI operation, whereas
   for all relevant errata it is sufficient for the additional TLBI to
   use *any* operation which will be broadcast, regardless of which
   translation regime or stage of translation the operation applies to.

   For example, for a single TLBI:

       TLBI ALLE2IS
       DSB ISH

   ... the existing workaround will expand this to:

       TLBI ALLE2IS
       DSB ISH
       TLBI ALLE2IS             // additional
       DSB ISH                  // additional

   ... whereas it is sufficient to have:

       TLBI ALLE2IS
       DSB ISH
       TLBI VALE1IS, XZR        // additional
       DSB ISH                  // additional

   As the additional TLBI doesn't have to match a specific earlier TLBI,
   the additional TLBI can be implemented in separate code, with no
   memory of the earlier TLBIs. The additional TLBI can also use a
   cheaper TLBI operation.

5. The existing workaround is applied to both Stage-1 and Stage-2 TLB
   invalidation, whereas for all relevant errata it is only necessary to
   apply a workaround for Stage-1 invalidation.

   Architecturally, TLBI operations which invalidate only Stage-2
   information (e.g. IPAS2E1IS) are not required to invalidate TLB
   entries which combine information from Stage-1 and Stage-2
   translation table entries, and consequently may not complete memory
   accesses translated by those combined entries. In these cases,
   completion of memory accesses is only guaranteed after subsequent
   invalidation of Stage-1 information (e.g. VMALLE1IS).

Rework the workaround logic as follows:
 - add TLB_HELPER_LOCAL() to be used for local TLB ops without a
   workaround,
 - modify TLB_HELPER() workaround to use tlbi vale2is, xzr as a second
   TLB,
 - drop TLB_HELPER_VA(). It's used only by __flush_xen_tlb_one_local
   which is local and does not need workaround and by
   __flush_xen_tlb_one. In the latter case, since it's used in a loop,
   we don't need a workaround in the middle. Add __tlb_repeat_sync with
   a workaround to be used at the end after DSB and before final ISB,
 - TLBI VALE2IS passing XZR is used as an additional TLBI. While there is
   an identity mapping there, it's used very rarely. The performance
   impact is therefore negligible. If things change in the future, we
   can revisit the decision.

Signed-off-by: Michal Orzel <michal.orzel@amd.com>
---
Linux counterpart (already merged):
https://lore.kernel.org/linux-arm-kernel/20260218164348.2022831-1-mark.rutland@arm.com/
---
 xen/arch/arm/include/asm/arm32/flushtlb.h |   3 +
 xen/arch/arm/include/asm/arm64/flushtlb.h | 108 ++++++++++++++--------
 xen/arch/arm/include/asm/flushtlb.h       |   1 +
 3 files changed, 71 insertions(+), 41 deletions(-)

diff --git a/xen/arch/arm/include/asm/arm32/flushtlb.h b/xen/arch/arm/include/asm/arm32/flushtlb.h
index 61c25a318998..5483be08fbbe 100644
--- a/xen/arch/arm/include/asm/arm32/flushtlb.h
+++ b/xen/arch/arm/include/asm/arm32/flushtlb.h
@@ -57,6 +57,9 @@ static inline void __flush_xen_tlb_one(vaddr_t va)
     asm volatile(STORE_CP32(0, TLBIMVAHIS) : : "r" (va) : "memory");
 }
 
+/* Only for ARM64_WORKAROUND_REPEAT_TLBI */
+static inline void __tlb_repeat_sync(void) {}
+
 #endif /* __ASM_ARM_ARM32_FLUSHTLB_H__ */
 /*
  * Local variables:
diff --git a/xen/arch/arm/include/asm/arm64/flushtlb.h b/xen/arch/arm/include/asm/arm64/flushtlb.h
index 3b99c11b50d1..1606b26bf28a 100644
--- a/xen/arch/arm/include/asm/arm64/flushtlb.h
+++ b/xen/arch/arm/include/asm/arm64/flushtlb.h
@@ -12,9 +12,14 @@
  * ARM64_WORKAROUND_REPEAT_TLBI:
  * Modification of the translation table for a virtual address might lead to
  * read-after-read ordering violation.
- * The workaround repeats TLBI+DSB ISH operation for all the TLB flush
- * operations. While this is strictly not necessary, we don't want to
- * take any risk.
+ * The workaround repeats TLBI+DSB ISH operation for broadcast TLB flush
+ * operations. The workaround is not needed for local operations.
+ *
+ * It is sufficient for the additional TLBI to use *any* operation which will
+ * be broadcast, regardless of which translation regime or stage of translation
+ * the operation applies to. TLBI VALE2IS is used passing XZR. While there is
+ * an identity mapping there, it's only used during suspend/resume, CPU on/off,
+ * so the impact (performance if any) is negligible.
  *
  * For Xen page-tables the ISB will discard any instructions fetched
  * from the old mappings.
@@ -26,69 +31,90 @@
  * Note that for local TLB flush, using non-shareable (nsh) is sufficient
  * (see D5-4929 in ARM DDI 0487H.a). Although, the memory barrier in
  * for the workaround is left as inner-shareable to match with Linux
- * v6.1-rc8.
+ * v6.19.
  */
-#define TLB_HELPER(name, tlbop, sh)              \
+#define TLB_HELPER_LOCAL(name, tlbop)            \
 static inline void name(void)                    \
 {                                                \
     asm_inline volatile (                        \
-        "dsb  "  # sh  "st;"                     \
+        "dsb  nshst;"                            \
         "tlbi "  # tlbop  ";"                    \
-        ALTERNATIVE(                             \
-            "nop; nop;",                         \
-            "dsb  ish;"                          \
-            "tlbi "  # tlbop  ";",               \
-            ARM64_WORKAROUND_REPEAT_TLBI,        \
-            CONFIG_ARM64_WORKAROUND_REPEAT_TLBI) \
-        "dsb  "  # sh  ";"                       \
+        "dsb  nsh;"                              \
         "isb;"                                   \
         : : : "memory");                         \
 }
 
-/*
- * FLush TLB by VA. This will likely be used in a loop, so the caller
- * is responsible to use the appropriate memory barriers before/after
- * the sequence.
- *
- * See above about the ARM64_WORKAROUND_REPEAT_TLBI sequence.
- */
-#define TLB_HELPER_VA(name, tlbop)               \
-static inline void name(vaddr_t va)              \
-{                                                \
-    asm_inline volatile (                        \
-        "tlbi "  # tlbop  ", %0;"                \
-        ALTERNATIVE(                             \
-            "nop; nop;",                         \
-            "dsb  ish;"                          \
-            "tlbi "  # tlbop  ", %0;",           \
-            ARM64_WORKAROUND_REPEAT_TLBI,        \
-            CONFIG_ARM64_WORKAROUND_REPEAT_TLBI) \
-        : : "r" (va >> PAGE_SHIFT) : "memory");  \
+#define TLB_HELPER(name, tlbop)                       \
+static inline void name(void)                         \
+{                                                     \
+    asm_inline volatile (                             \
+        "dsb  ishst;"                                 \
+        "tlbi "  # tlbop  ";"                         \
+        ALTERNATIVE(                                  \
+            "nop; nop;",                              \
+            "dsb  ish;"                               \
+            "tlbi vale2is, xzr;",                     \
+            ARM64_WORKAROUND_REPEAT_TLBI,             \
+            CONFIG_ARM64_WORKAROUND_REPEAT_TLBI)      \
+        "dsb  ish;"                                   \
+        "isb;"                                        \
+        : : : "memory"); \
 }
 
 /* Flush local TLBs, current VMID only. */
-TLB_HELPER(flush_guest_tlb_local, vmalls12e1, nsh)
+TLB_HELPER_LOCAL(flush_guest_tlb_local, vmalls12e1)
 
 /* Flush innershareable TLBs, current VMID only */
-TLB_HELPER(flush_guest_tlb, vmalls12e1is, ish)
+TLB_HELPER(flush_guest_tlb, vmalls12e1is)
 
 /* Flush local TLBs, all VMIDs, non-hypervisor mode */
-TLB_HELPER(flush_all_guests_tlb_local, alle1, nsh)
+TLB_HELPER_LOCAL(flush_all_guests_tlb_local, alle1)
 
 /* Flush innershareable TLBs, all VMIDs, non-hypervisor mode */
-TLB_HELPER(flush_all_guests_tlb, alle1is, ish)
+TLB_HELPER(flush_all_guests_tlb, alle1is)
 
 /* Flush all hypervisor mappings from the TLB of the local processor. */
-TLB_HELPER(flush_xen_tlb_local, alle2, nsh)
+TLB_HELPER_LOCAL(flush_xen_tlb_local, alle2)
+
+#undef TLB_HELPER_LOCAL
+#undef TLB_HELPER
+
+/*
+ * FLush TLB by VA. This will likely be used in a loop, so the caller
+ * is responsible to use the appropriate memory barriers before/after
+ * the sequence.
+ */
 
 /* Flush TLB of local processor for address va. */
-TLB_HELPER_VA(__flush_xen_tlb_one_local, vae2)
+static inline void __flush_xen_tlb_one_local(vaddr_t va)
+{
+    asm_inline volatile (
+        "tlbi vae2, %0" : : "r" (va >> PAGE_SHIFT) : "memory");
+}
 
 /* Flush TLB of all processors in the inner-shareable domain for address va. */
-TLB_HELPER_VA(__flush_xen_tlb_one, vae2is)
+static inline void __flush_xen_tlb_one(vaddr_t va)
+{
+    asm_inline volatile (
+        "tlbi vae2is, %0" : : "r" (va >> PAGE_SHIFT) : "memory");
+}
 
-#undef TLB_HELPER
-#undef TLB_HELPER_VA
+/*
+ * ARM64_WORKAROUND_REPEAT_TLBI:
+ * For all relevant erratas it is only necessary to execute a single
+ * additional TLBI;DSB sequence after any number of TLBIs are completed by DSB.
+ */
+static inline void __tlb_repeat_sync(void)
+{
+    asm_inline volatile (
+        ALTERNATIVE(
+            "nop; nop;",
+            "tlbi vale2is, xzr;"
+            "dsb  ish;",
+            ARM64_WORKAROUND_REPEAT_TLBI,
+            CONFIG_ARM64_WORKAROUND_REPEAT_TLBI)
+        : : : "memory");
+}
 
 #endif /* __ASM_ARM_ARM64_FLUSHTLB_H__ */
 /*
diff --git a/xen/arch/arm/include/asm/flushtlb.h b/xen/arch/arm/include/asm/flushtlb.h
index e45fb6d97b02..c292c3c00d29 100644
--- a/xen/arch/arm/include/asm/flushtlb.h
+++ b/xen/arch/arm/include/asm/flushtlb.h
@@ -65,6 +65,7 @@ static inline void flush_xen_tlb_range_va(vaddr_t va,
         va += PAGE_SIZE;
     }
     dsb(ish); /* Ensure the TLB invalidation has completed */
+    __tlb_repeat_sync();
     isb();
 }
 
-- 
2.43.0



From xen-devel-bounces@lists.xenproject.org Tue Apr 14 08:30:32 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 14 Apr 2026 08:30:32 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1281465.1564352 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wCZAB-0003zL-KT; Tue, 14 Apr 2026 08:30:27 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1281465.1564352; Tue, 14 Apr 2026 08: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 1wCZAB-0003zE-HU; Tue, 14 Apr 2026 08:30:27 +0000
Received: by outflank-mailman (input) for mailman id 1281465;
 Tue, 14 Apr 2026 08:30:26 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <bounce-md_30504962.69ddfb1e.v1-13a796e5373942fc88336edd7b0df515@bounce.vates.tech>)
 id 1wCZA9-0003z6-TX
 for xen-devel@lists.xenproject.org; Tue, 14 Apr 2026 08:30:26 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wCZA6-005n09-UQ
 for xen-devel@lists.xenproject.org; Tue, 14 Apr 2026 10:30:24 +0200
Received: from [10.42.69.7] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1) (envelope-from
 <bounce-md_30504962.69ddfb1e.v1-13a796e5373942fc88336edd7b0df515@bounce.vates.tech>)
 id 69ddfb19-bab6-0a2a0a5309dd-0a2a4507cf36-26
 for <xen-devel@lists.xenproject.org>; Tue, 14 Apr 2026 10:30:24 +0200
Received: from [198.2.187.1] (helo=mail187-1.suw11.mandrillapp.com)
 by tlsNG-ef75cf.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.0)
 (envelope-from
 <bounce-md_30504962.69ddfb1e.v1-13a796e5373942fc88336edd7b0df515@bounce.vates.tech>)
 id 69ddfb1f-ba2d-0a2a45070019-c602bb018196-3
 for <xen-devel@lists.xenproject.org>; Tue, 14 Apr 2026 10:30:24 +0200
Received: from pmta09.mandrill.prod.suw01.rsglab.com (localhost [127.0.0.1])
 by mail187-1.suw11.mandrillapp.com (Mailchimp) with ESMTP id 4fvyC24mvBzBsXMYd
 for <xen-devel@lists.xenproject.org>; Tue, 14 Apr 2026 08:30:22 +0000 (GMT)
Received: from [37.26.189.201] by mandrillapp.com id
 13a796e5373942fc88336edd7b0df515; Tue, 14 Apr 2026 08: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=mte1 header.d=mandrillapp.com header.i="@mandrillapp.com" header.h="From:Subject:Message-Id:To:Cc:References:In-Reply-To:Feedback-ID:Date:MIME-Version:Content-Type:Content-Transfer-Encoding"; dkim=pass header.s=mte1 header.d=vates.tech header.i="teddy.astie@vates.tech" header.h="From:Subject:Message-Id:To:Cc:References:In-Reply-To:Feedback-ID:Date:MIME-Version:Content-Type:Content-Transfer-Encoding"
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=mandrillapp.com;
	s=mte1; t=1776155422; x=1776425422;
	bh=twDtVKfWbW1DxGQO9l+h7kZSrEa6BM5hE+mqdHaJ/zE=;
	h=From:Subject:Message-Id:To:Cc:References:In-Reply-To:Feedback-ID:
	 Date:MIME-Version:Content-Type:Content-Transfer-Encoding:CC:Date:
	 Subject:From;
	b=KaW88MzTW1vy5/Qf0DSDs59OcQiKPi3z3A+InpRA57sPzSSRmP5pAWjsGSUrNWGfH
	 nVZ7qrn3hsNsBvkEVZSBExnpZFfuKd89hszJ2hDciAeRfMK3lFut9SomR3A162alwF
	 ksLd4E3k0l3uwXyNtEnlhPp9c4V5WKmZeEvUCuNZH/fA8VJJn7PWio/DZXbaDw3l80
	 6RwBo1VcY2hI/uUSS6wd0V9w1b7Ngb9jfy/VEcNz1rMKFGPVWvSzRVy1d9p9A6yVTf
	 QoyE43VuJx41sN2uS3ZJ0ktOKXJF7wskFIXxgJLt64Lkxma4IRr18WnRaVsL45P8fu
	 XE4uwAW8h/q4Q==
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=vates.tech; s=mte1;
	t=1776155422; x=1776415922; i=teddy.astie@vates.tech;
	bh=twDtVKfWbW1DxGQO9l+h7kZSrEa6BM5hE+mqdHaJ/zE=;
	h=From:Subject:Message-Id:To:Cc:References:In-Reply-To:Feedback-ID:
	 Date:MIME-Version:Content-Type:Content-Transfer-Encoding:CC:Date:
	 Subject:From;
	b=hSWSgQbvGThdcMnF5iVnQ2BWc3+iWBOFNXpDVoYkBF+BXDMYOsnpbFrm3M0DjMGpi
	 RtVxKFSE4QiEg5DU2jeVlDxxcXXM5VhZAgRI3IySfLF2ezr1nKbf+YXRyut2F/+gbZ
	 L1xg63sbm0w9osjZBJRjGtuqBMI9WrPSMcJGjbUbp9l9d9zL/rFnTlOKsqFCKIyL1N
	 LYKSDg+eB0em+vkjv1JlcIzzreprTSCovey6/17/yOpNBnTnul2WOT9GCXR95uKpvG
	 /AzmZc0KPVFP/3OykCyD0Bif1y+wUgXwK9s/PSZ7Wpp/5Tu0aqVYYkWiyH5wjg3wRI
	 sVcshIcj/wquQ==
From: "Teddy Astie" <teddy.astie@vates.tech>
Subject: =?utf-8?Q?Re:=20[RFC=20PATCH=20v3=201/3]=20xl:=20Add=20pci=20device=20hotplug=20option?=
X-Bm-Disclaimer: Yes
X-Bm-Milter-Handled: 4ffbd6c1-ee69-4e1b-aabd-f977039bd3e2
X-Bm-Transport-Timestamp: 1776155421888
Message-Id: <4c058f15-7396-4c06-8886-b77c56dfb14f@vates.tech>
To: "Thierry Escande" <thierry.escande@vates.tech>, xen-devel@lists.xenproject.org
Cc: "Anthony PERARD" <anthony.perard@vates.tech>, "Juergen Gross" <jgross@suse.com>, "=?utf-8?Q?Daniel=20P=20.=20Berrang=C3=A9?=" <berrange@redhat.com>, "=?utf-8?Q?Marek=20Marczykowski-G=C3=B3recki?=" <marmarek@invisiblethingslab.com>
References: <20260410150333.1533568-1-thierry.escande@vates.tech> <20260410150333.1533568-2-thierry.escande@vates.tech>
In-Reply-To: <20260410150333.1533568-2-thierry.escande@vates.tech>
X-Native-Encoded: 1
X-Report-Abuse: =?UTF-8?Q?Please=20forward=20a=20copy=20of=20this=20message,=20including=20all=20headers,=20to=20abuse@mandrill.com.=20You=20can=20also=20report=20abuse=20here:=20https://mandrillapp.com/contact/abuse=3Fid=3D30504962.13a796e5373942fc88336edd7b0df515?=
X-Mandrill-User: md_30504962
Feedback-ID: 30504962:30504962.20260414:md
Date: Tue, 14 Apr 2026 08:30:22 +0000
MIME-Version: 1.0
Content-Type: text/plain; charset=utf-8
Content-Transfer-Encoding: quoted-printable
X-purgate-ID: tlsNG-ef75cf/1776155424-8BB4041E-2B272237/0/0
X-purgate-type: clean
X-purgate-size: 3257

Le 10/04/2026 =C3=A0 17:06, Thierry Escande a =C3=A9crit=C2=A0:
> This option is used to passthrough PCI devices using the Qemu command
> line (-device driver,...) instead of the QMP hot-plug mechanism.
> 
> This is needed for Q35 support since its PCI root bus doesn't support
> hotplugging.
> 
> If not specified, the default behavior is to use hotplug via QMP.
> 
> Signed-off-by: Thierry Escande <thierry.escande@vates.tech>
> ---
> v2: no change
> v3: no change
> ---
>   tools/libs/light/libxl_types.idl | 1 +
>   tools/libs/util/libxlu_pci.c     | 2 ++
>   tools/xl/xl_parse.c              | 5 +++++
>   3 files changed, 8 insertions(+)
> 
> diff --git a/tools/libs/light/libxl_types.idl b/tools/libs/light/libxl_ty=
pes.idl
> index a7893460f0..aca0e93793 100644
> --- a/tools/libs/light/libxl_types.idl
> +++ b/tools/libs/light/libxl_types.idl
> @@ -922,6 +922,7 @@ libxl_device_pci =3D Struct("device_pci", [
>       ("seize", bool),
>       ("rdm_policy", libxl_rdm_reserve_policy),
>       ("name", string),
> +    ("hotplug", bool),
>       ])
>   
>   libxl_device_rdm =3D Struct("device_rdm", [
> diff --git a/tools/libs/util/libxlu_pci.c b/tools/libs/util/libxlu_pci.c
> index 294482c6d7..f6440c878b 100644
> --- a/tools/libs/util/libxlu_pci.c
> +++ b/tools/libs/util/libxlu_pci.c
> @@ -192,6 +192,8 @@ int xlu_pci_parse_spec_string(XLU_Config *cfg, libxl_=
device_pci *pci,
>               name_present =3D true;
>               pci->name =3D strdup(val);
>               if (!pci->name) ret =3D ERROR_NOMEM;
> +        } else if (!strcmp(key, "hotplug")) {
> +            pci->hotplug =3D atoi(val);
>           } else {
>               XLU__PCI_ERR(cfg, "Unknown PCI_SPEC_STRING option: %s", key=
);
>               ret =3D ERROR_INVAL;
> diff --git a/tools/xl/xl_parse.c b/tools/xl/xl_parse.c
> index 48c72dce9c..7ea2a76662 100644
> --- a/tools/xl/xl_parse.c
> +++ b/tools/xl/xl_parse.c
> @@ -1361,6 +1361,7 @@ void parse_config_data(const char *config_source,
>       int pci_msitranslate =3D 0;
>       int pci_permissive =3D 0;
>       int pci_seize =3D 0;
> +    int pci_hotplug =3D 1;
>       int i, e;
>       int num_llc_colors;
>       int num_xs_quota;
> @@ -1699,6 +1700,9 @@ void parse_config_data(const char *config_source,
>       if (!xlu_cfg_get_long (config, "pci_seize", &l, 0))
>           pci_seize =3D l;
>   
> +    if (!xlu_cfg_get_long (config, "pci_hotplug", &l, 0))
> +        pci_hotplug =3D l;
> +
>       if (!xlu_cfg_get_string(config, "rdm", &buf, 0)) {
>           libxl_rdm_reserve rdm;
>           if (!xlu_rdm_parse(config, &rdm, buf)) {
> @@ -1720,6 +1724,7 @@ void parse_config_data(const char *config_source,
>               pci->power_mgmt =3D pci_power_mgmt;
>               pci->permissive =3D pci_permissive;
>               pci->seize =3D pci_seize;
> +            pci->hotplug =3D pci_hotplug;
>               /*
>                * Like other pci option, the per-device policy always foll=
ows
>                * the global policy by default.

Reviewed-by: Teddy Astie <teddy.astie@vates.tech>


--
Teddy Astie | Vates XCP-ng Developer

XCP-ng & Xen Orchestra - Vates solutions

web: https://vates.tech




From xen-devel-bounces@lists.xenproject.org Tue Apr 14 09:03:05 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 14 Apr 2026 09:03:05 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1281480.1564368 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wCZfZ-0008AM-Aj; Tue, 14 Apr 2026 09:02:53 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1281480.1564368; Tue, 14 Apr 2026 09:02: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 1wCZfZ-0008AF-83; Tue, 14 Apr 2026 09:02:53 +0000
Received: by outflank-mailman (input) for mailman id 1281480;
 Tue, 14 Apr 2026 09:02:52 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <bounce-md_30504962.69de0207.v1-b9680d33670344a88a98b650cd451bf3@bounce.vates.tech>)
 id 1wCZfY-0008A5-Kd
 for xen-devel@lists.xenproject.org; Tue, 14 Apr 2026 09:02:52 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wCZfW-008ho5-Kk
 for xen-devel@lists.xenproject.org; Tue, 14 Apr 2026 11:02:50 +0200
Received: from [10.42.69.12] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1) (envelope-from
 <bounce-md_30504962.69de0207.v1-b9680d33670344a88a98b650cd451bf3@bounce.vates.tech>)
 id 69de02b6-e002-0a2a0a5209dd-0a2a450c8724-28
 for <xen-devel@lists.xenproject.org>; Tue, 14 Apr 2026 11:02:50 +0200
Received: from [198.2.187.1] (helo=mail187-1.suw11.mandrillapp.com)
 by tlsNG-d25034.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.0)
 (envelope-from
 <bounce-md_30504962.69de0207.v1-b9680d33670344a88a98b650cd451bf3@bounce.vates.tech>)
 id 69de02b9-f40c-0a2a450c0019-c602bb01ed5c-3
 for <xen-devel@lists.xenproject.org>; Tue, 14 Apr 2026 11:02:50 +0200
Received: from pmta09.mandrill.prod.suw01.rsglab.com (localhost [127.0.0.1])
 by mail187-1.suw11.mandrillapp.com (Mailchimp) with ESMTP id 4fvys36XyvzBsWKQC
 for <xen-devel@lists.xenproject.org>; Tue, 14 Apr 2026 08:59:51 +0000 (GMT)
Received: from [37.26.189.201] by mandrillapp.com id
 b9680d33670344a88a98b650cd451bf3; Tue, 14 Apr 2026 08:59: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=mte1 header.d=mandrillapp.com header.i="@mandrillapp.com" header.h="From:Subject:Message-Id:To:Cc:References:In-Reply-To:Feedback-ID:Date:MIME-Version:Content-Type:Content-Transfer-Encoding"; dkim=pass header.s=mte1 header.d=vates.tech header.i="teddy.astie@vates.tech" header.h="From:Subject:Message-Id:To:Cc:References:In-Reply-To:Feedback-ID:Date:MIME-Version:Content-Type:Content-Transfer-Encoding"
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=mandrillapp.com;
	s=mte1; t=1776157191; x=1776427191;
	bh=8jPI6VgNJMTJNIvIHMSppJhg9KypSLlcd8SYkTbpLig=;
	h=From:Subject:Message-Id:To:Cc:References:In-Reply-To:Feedback-ID:
	 Date:MIME-Version:Content-Type:Content-Transfer-Encoding:CC:Date:
	 Subject:From;
	b=T3Zor9C52AcN957CmzdR6gij3hs/UD+/NF4ku8IuVvqx57Zf7jnOmzgsP2X53u7qH
	 hLCh2sFMrnw6YzNHjpD7Yhh0su+I6E/RTKy1vn2Otk7hB8AXn+V5Sb6fsQEFPIT3S1
	 G9jFD52dQyz2vnEWD9h8FsYtWztDxtdwY1M/Npda2TYo5E0OKR9Aj6FSdXYkG5byzs
	 Do0O6Jc4M6EOZpmDfAHlTm4cG3Qu3C4PyCSS0Xe8+EiC8Qxx+8uIOFiaGYr+0gAQV2
	 Bg0nSz1dswDyKJOteWkT4I4UBxLvA7/fpBGDFnxURwS1Vz/vhONFAYDm6xlrNSc3Va
	 b9kfdN1be4F1w==
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=vates.tech; s=mte1;
	t=1776157191; x=1776417691; i=teddy.astie@vates.tech;
	bh=8jPI6VgNJMTJNIvIHMSppJhg9KypSLlcd8SYkTbpLig=;
	h=From:Subject:Message-Id:To:Cc:References:In-Reply-To:Feedback-ID:
	 Date:MIME-Version:Content-Type:Content-Transfer-Encoding:CC:Date:
	 Subject:From;
	b=ajdXIbbOT8V+fkiigRG3cTwnPBcHYOaUlDxN69Yt1irH5yTFG+HmfzvIlSzNj8myx
	 c2wr1nvttUzE3aDu45CgcekS2FcTOFnJgP8WFtXr0pfKjdWm1jVTUQL5urjxvYHgsV
	 mx/0FywqR2OCIcvpCx6zMlihb8ZyBxAgOQPiLNp8KEknoqPic5uJOYu/IQcqZSJFFx
	 rC4VRmTZuaTi2u8fUdbXgks1RoWnQ7uKVTwFr1uszu38aNOqMLSf9aAFRcu+/siAci
	 vAYu57opIEvk8ZQpR568+PomoaW/u8mKHyo+oBLzjgRB+yhNfPdwE1k6vrpjMsh40X
	 GV0s47gdrDC8w==
From: "Teddy Astie" <teddy.astie@vates.tech>
Subject: =?utf-8?Q?Re:=20[RFC=20PATCH=20v3=202/3]=20libxl:=20Allow=20PCI=20device=20passthrough=20using=20-device=20Qemu=20command=20line?=
X-Bm-Disclaimer: Yes
X-Bm-Milter-Handled: 4ffbd6c1-ee69-4e1b-aabd-f977039bd3e2
X-Bm-Transport-Timestamp: 1776157191140
Message-Id: <ece34618-f527-455d-a6fe-c964aa1f4878@vates.tech>
To: "Thierry Escande" <thierry.escande@vates.tech>, xen-devel@lists.xenproject.org
Cc: "Anthony PERARD" <anthony.perard@vates.tech>, "Juergen Gross" <jgross@suse.com>, "=?utf-8?Q?Daniel=20P=20.=20Berrang=C3=A9?=" <berrange@redhat.com>, "=?utf-8?Q?Marek=20Marczykowski-G=C3=B3recki?=" <marmarek@invisiblethingslab.com>
References: <20260410150333.1533568-1-thierry.escande@vates.tech> <20260410150333.1533568-3-thierry.escande@vates.tech>
In-Reply-To: <20260410150333.1533568-3-thierry.escande@vates.tech>
X-Native-Encoded: 1
X-Report-Abuse: =?UTF-8?Q?Please=20forward=20a=20copy=20of=20this=20message,=20including=20all=20headers,=20to=20abuse@mandrill.com.=20You=20can=20also=20report=20abuse=20here:=20https://mandrillapp.com/contact/abuse=3Fid=3D30504962.b9680d33670344a88a98b650cd451bf3?=
X-Mandrill-User: md_30504962
Feedback-ID: 30504962:30504962.20260414:md
Date: Tue, 14 Apr 2026 08:59:51 +0000
MIME-Version: 1.0
Content-Type: text/plain; charset=utf-8
Content-Transfer-Encoding: quoted-printable
X-purgate-ID: tlsNG-d25034/1776157370-8055FA3D-F07BA524/0/0
X-purgate-type: clean
X-purgate-size: 13699

Le 10/04/2026 =C3=A0 17:06, Thierry Escande a =C3=A9crit=C2=A0:
> This change makes use of the new option 'hotplug' for host PCI devices
> passthrough'd to the guest. If hotplug=3D0 is used in the pci device
> configuration table, the device will be attached to the guest using the
> Qemu command line as '-device xen-pci-passthrough,hostaddr=3D...'
> 
> The host device configuration is passed to the -device option as a json
> array, just like it's done for hotplug using QMP. The json array is
> created by a new internal function libxl__device_pci_get_qmp_json() that
> is also used by pci_add_qmp_device_add().

If (in this specific case) we're not using QMP anymore, I think 
libxl__device_pci_get_qmp_json should lose the "qmp" qualification.
(unless QEMU also considers JSON-formatted command-line paramters as QMP)

> 
> Then, instead of sending the 'device_add' command, the device_add
> callback is called to perform the 'query-pci' check to make sure the
> passthrough'd device is present.
> 
> In the same way at shutdown, the device is not removed using QMP and
> only the pci_remove_done() function is called.
> 
> As with QMP, the use of the 'hotplug=3D0' option honors the 'seize' optio=
n
> by adding the PCI device to the assignable list if needed. This mimics
> what is done in libxl__device_pci_add() with regards to seize option and
> the assignable PCI device list. This allows to display a proper error
> message if the device is not assignable before Qemu starts.
> To do so the function pciback_dev_is_assigned() has been renamed as
> libxl__pciback_dev_is_assigned() and made available internally, as well
> as libxl__device_pci_assignable_add(). Also, libxl_pci_assignable() is
> now exported in libxl.h and renamed as libxl_device_pci_assignable()
> since its prototype looks like the other libxl_device_pci_*() APIs.
> 
> Example use:
>   pci =3D [ "00:03.0,seize=3D1,hotplug=3D0" ]
> 
> Signed-off-by: Thierry Escande <thierry.escande@vates.tech>
> ---
> v2:
> - Add support for YAJL json parser
> 
> v3:
> - Move code block for device command line parameters creation to a
>    correct place.
> - Better handling of PCI device assignation check to display the correct
>    error message if the device is not assignable.
> ---
>   tools/include/libxl.h             |  1 +
>   tools/libs/light/libxl_dm.c       | 85 +++++++++++++++++++++++++++++++
>   tools/libs/light/libxl_internal.h |  7 +++
>   tools/libs/light/libxl_pci.c      | 57 ++++++++++++++-------
>   4 files changed, 132 insertions(+), 18 deletions(-)
> 
> diff --git a/tools/include/libxl.h b/tools/include/libxl.h
> index 7c098edab6..efd2664a90 100644
> --- a/tools/include/libxl.h
> +++ b/tools/include/libxl.h
> @@ -2666,6 +2666,7 @@ int libxl_device_pci_assignable_add(libxl_ctx *ctx,=
 libxl_device_pci *pci, int r
>   int libxl_device_pci_assignable_remove(libxl_ctx *ctx, libxl_device_pci=
 *pci, int rebind);
>   libxl_device_pci *libxl_device_pci_assignable_list(libxl_ctx *ctx, int =
*num);
>   void libxl_device_pci_assignable_list_free(libxl_device_pci *list, int =
num);
> +bool libxl_device_pci_assignable(libxl_ctx *ctx, libxl_device_pci *pci);
>   
>   /* CPUID handling */
>   int libxl_cpuid_parse_config(libxl_cpuid_policy_list *cpuid, const char=
* str);
> diff --git a/tools/libs/light/libxl_dm.c b/tools/libs/light/libxl_dm.c
> index 511ec76a65..28e4adbd4f 100644
> --- a/tools/libs/light/libxl_dm.c
> +++ b/tools/libs/light/libxl_dm.c
> @@ -1798,6 +1798,91 @@ static int libxl__build_device_model_args_new(libx=
l__gc *gc,
>               break;
>           }
>   
> +        if (guest_config->num_pcidevs) {
> +            libxl_device_pci *pci;
> +            libxl__json_object *qmp_json;
> +            char *json_str;
> +#ifdef HAVE_LIBJSONC
> +            json_object *jso;
> +            const char *buf;
> +#elif defined(HAVE_LIBYAJL)
> +            yajl_gen hand;
> +            /* memory for 'buf' is owned by 'hand' */
> +            const unsigned char *buf;
> +            libxl_yajl_length len;
> +#else
> +#           error Missing JSON library
> +#endif
> +
> +            for (i =3D 0; i < guest_config->num_pcidevs; i++) {
> +                pci =3D &guest_config->pcidevs[i];
> +
> +                if (pci->hotplug)
> +                    continue;
> +
> +                if (pci->seize && !libxl__pciback_dev_is_assigned(gc, pc=
i)) {
> +                    rc =3D libxl__device_pci_assignable_add(gc, pci, 1);
> +                    if (rc)
> +                        return rc;
> +                }> +
> +                if (!libxl_device_pci_assignable(libxl__gc_owner(gc), pc=
i)) {
> +                    LOGD(ERROR, guest_domid, "PCI device %x:%x:%x.%x is =
not assignable",
> +                         pci->domain, pci->bus, pci->dev, pci->func);
> +                    return ERROR_FAIL;
> +                }
> +
> +                qmp_json =3D libxl__device_pci_get_qmp_json(gc, pci);
> +
> +#ifdef HAVE_LIBJSONC
> +                rc =3D libxl__json_object_to_json_object(gc, &jso, qmp_j=
son);
> +                if (rc)
> +                    return rc;
> +
> +                buf =3D json_object_to_json_string_ext(jso,
> +                                                     JSON_C_TO_STRING_PL=
AIN);
> +                if (!buf) {
> +                    json_object_put(jso);
> +                    return ERROR_NOMEM;
> +                }
> +#elif defined(HAVE_LIBYAJL)
> +                hand =3D libxl_yajl_gen_alloc(NULL);
> +                if (!hand) {
> +                    return ERROR_NOMEM;
> +                }
> +#if HAVE_YAJL_V2
> +                /* Disable beautify for data sent to QEMU */
> +                yajl_gen_config(hand, yajl_gen_beautify, 0);
> +#endif
> +
> +                rc =3D libxl__json_object_to_yajl_gen(gc, hand, qmp_json=
);
> +                if (rc) {
> +                    yajl_gen_free(hand);
> +                    return rc;
> +                }
> +
> +                rc =3D yajl_gen_get_buf(hand, &buf, &len);
> +                if (rc !=3D yajl_gen_status_ok) {
> +                    yajl_gen_free(hand);
> +                    return rc;
> +                }
> +#endif
> +
> +                json_str =3D libxl__strdup(gc, (const char *)buf);
> +                if (json_str)
> +                    flexarray_vappend(dm_args, "-device", json_str, NULL=
);
> +
> +#ifdef HAVE_LIBJSONC
> +                json_object_put(jso);
> +#elif defined(HAVE_LIBYAJL)
> +                yajl_gen_free(hand);
> +#endif
> +
> +                if (!json_str)
> +                    return ERROR_NOMEM;
> +            }
> +        }
> +
>           if (state->dm_runas) {
>               if (qemu_opts->have_runwith_user) {
>                   flexarray_append_pair(dm_args, "-run-with",
> diff --git a/tools/libs/light/libxl_internal.h b/tools/libs/light/libxl_i=
nternal.h
> index b65e0064b9..cab2ab4526 100644
> --- a/tools/libs/light/libxl_internal.h
> +++ b/tools/libs/light/libxl_internal.h
> @@ -1729,6 +1729,13 @@ _hidden int libxl__device_pci_setdefault(libxl__gc=
 *gc, uint32_t domid,
>                                            libxl_device_pci *pci, bool ho=
tplug);
>   _hidden bool libxl__is_igd_vga_passthru(libxl__gc *gc,
>                                           const libxl_domain_config *d_co=
nfig);
> +_hidden libxl__json_object *libxl__device_pci_get_qmp_json(libxl__gc *gc=
,
> +                                                         libxl_device_pc=
i *pci);
> +_hidden int libxl__pciback_dev_is_assigned(libxl__gc *gc,
> +                                           libxl_device_pci *pci);
> +_hidden int libxl__device_pci_assignable_add(libxl__gc *gc,
> +                                             libxl_device_pci *pci,
> +                                             int rebind);
>   
>   /* from libxl_dtdev */
>   
> diff --git a/tools/libs/light/libxl_pci.c b/tools/libs/light/libxl_pci.c
> index 49d272d0de..07d005e71d 100644
> --- a/tools/libs/light/libxl_pci.c
> +++ b/tools/libs/light/libxl_pci.c
> @@ -686,7 +686,7 @@ out:
>       return rc;
>   }
>   
> -static int pciback_dev_is_assigned(libxl__gc *gc, libxl_device_pci *pci)
> +int libxl__pciback_dev_is_assigned(libxl__gc *gc, libxl_device_pci *pci)
>   {
>       char * spath;
>       int rc;
> @@ -755,9 +755,9 @@ static int pciback_dev_unassign(libxl__gc *gc, libxl_=
device_pci *pci)
>       return 0;
>   }
>   
> -static int libxl__device_pci_assignable_add(libxl__gc *gc,
> -                                            libxl_device_pci *pci,
> -                                            int rebind)
> +int libxl__device_pci_assignable_add(libxl__gc *gc,
> +                                     libxl_device_pci *pci,
> +                                     int rebind)
>   {
>       libxl_ctx *ctx =3D libxl__gc_owner(gc);
>       unsigned dom, bus, dev, func;
> @@ -798,7 +798,7 @@ static int libxl__device_pci_assignable_add(libxl__gc=
 *gc,
>       }
>   
>       /* Check to see if it's already assigned to pciback */
> -    rc =3D pciback_dev_is_assigned(gc, pci);
> +    rc =3D libxl__pciback_dev_is_assigned(gc, pci);
>       if ( rc < 0 ) {
>           return ERROR_FAIL;
>       }
> @@ -913,7 +913,7 @@ static int libxl__device_pci_assignable_remove(libxl_=
_gc *gc,
>       }
>   
>       /* Unbind from pciback */
> -    if ( (rc =3D pciback_dev_is_assigned(gc, pci)) < 0 ) {
> +    if ( (rc =3D libxl__pciback_dev_is_assigned(gc, pci)) < 0 ) {
>           return ERROR_FAIL;
>       } else if ( rc ) {
>           pciback_dev_unassign(gc, pci);
> @@ -1098,16 +1098,10 @@ out:
>       pci_add_dm_done(egc, pas, rc); /* must be last */
>   }
>   
> -static void pci_add_qmp_device_add(libxl__egc *egc, pci_add_state *pas)
> +libxl__json_object *libxl__device_pci_get_qmp_json(libxl__gc *gc,
> +                                                   libxl_device_pci *pci=
)
>   {
> -    STATE_AO_GC(pas->aodev->ao);
>       libxl__json_object *args =3D NULL;
> -    int rc;
> -
> -    /* Convenience aliases */
> -    libxl_domid domid =3D pas->domid;
> -    libxl_device_pci *pci =3D &pas->pci;
> -    libxl__ev_qmp *const qmp =3D &pas->qmp;
>   
>       libxl__qmp_param_add_string(gc, &args, "driver",
>                                   "xen-pci-passthrough");
> @@ -1134,11 +1128,30 @@ static void pci_add_qmp_device_add(libxl__egc *eg=
c, pci_add_state *pas)
>       if (pci->permissive)
>           libxl__qmp_param_add_bool(gc, &args, "permissive", true);
>   
> +    return args;
> +}
> +
> +static void pci_add_qmp_device_add(libxl__egc *egc, pci_add_state *pas)
> +{
> +    STATE_AO_GC(pas->aodev->ao);
> +    libxl__json_object *args =3D NULL;
> +    int rc =3D 0;
> +
> +    /* Convenience aliases */
> +    libxl_domid domid =3D pas->domid;
> +    libxl_device_pci *pci =3D &pas->pci;
> +    libxl__ev_qmp *const qmp =3D &pas->qmp;
> +
> +    args =3D libxl__device_pci_get_qmp_json(gc, pci);
> +
>       qmp->ao =3D pas->aodev->ao;
>       qmp->domid =3D domid;
>       qmp->payload_fd =3D -1;
>       qmp->callback =3D pci_add_qmp_device_add_cb;

Is it expected to set this callback when !pci->hotplug (given it's the 
same than the one we call afterward) ?
(I don't really know well how works libxl though)

> -    rc =3D libxl__ev_qmp_send(egc, qmp, "device_add", args);
> +    if (pci->hotplug)
> +        rc =3D libxl__ev_qmp_send(egc, qmp, "device_add", args);
> +    else
> +        pci_add_qmp_device_add_cb(egc, qmp, NULL, 0);
>       if (rc) goto out;
>       return;
>   
> @@ -1509,7 +1522,7 @@ int libxl_device_pci_add(libxl_ctx *ctx, uint32_t d=
omid,
>       return AO_INPROGRESS;
>   }
>   
> -static bool libxl_pci_assignable(libxl_ctx *ctx, libxl_device_pci *pci)
> +bool libxl_device_pci_assignable(libxl_ctx *ctx, libxl_device_pci *pci)
>   {
>       libxl_device_pci *pcis;
>       int num;
> @@ -1572,13 +1585,13 @@ void libxl__device_pci_add(libxl__egc *egc, uint3=
2_t domid,
>       rc =3D libxl__device_pci_setdefault(gc, domid, pci, !starting);
>       if (rc) goto out;
>   
> -    if (pci->seize && !pciback_dev_is_assigned(gc, pci)) {
> +    if (pci->seize && !libxl__pciback_dev_is_assigned(gc, pci)) {
>           rc =3D libxl__device_pci_assignable_add(gc, pci, 1);
>           if ( rc )
>               goto out;
>       }
>   
> -    if (!libxl_pci_assignable(ctx, pci)) {
> +    if (!libxl_device_pci_assignable(ctx, pci)) {
>           LOGD(ERROR, domid, "PCI device %x:%x:%x.%x is not assignable",
>                pci->domain, pci->bus, pci->dev, pci->func);
>           rc =3D ERROR_FAIL;
> @@ -1820,6 +1833,14 @@ static void do_pci_remove(libxl__egc *egc, pci_rem=
ove_state *prs)
>       libxl_domain_type type =3D libxl__domain_type(gc, domid);
>       libxl_device_pci *pci =3D &prs->pci;
>       int rc, num;
> +
> +    /* Passthrough'd device has been passed to Qemu command line so ther=
e is
> +     * no need to remove it via QMP */
> +    if (!pci->hotplug) {
> +        pci_remove_done(egc, prs, 0);
> +        return;
> +    }
> +

I think you can move the renaming/refactoring part into a separate patch 
and make the hotplug part separate.

>       pcis =3D libxl_device_pci_list(ctx, domid, &num);
>       if (!pcis) {
>           rc =3D ERROR_FAIL;



--
Teddy Astie | Vates XCP-ng Developer

XCP-ng & Xen Orchestra - Vates solutions

web: https://vates.tech




From xen-devel-bounces@lists.xenproject.org Tue Apr 14 09:10:04 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 14 Apr 2026 09:10:04 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1281490.1564377 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wCZmS-0000NP-0A; Tue, 14 Apr 2026 09:10:00 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1281490.1564377; Tue, 14 Apr 2026 09:09: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 1wCZmR-0000NI-Tg; Tue, 14 Apr 2026 09:09:59 +0000
Received: by outflank-mailman (input) for mailman id 1281490;
 Tue, 14 Apr 2026 09:09:58 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <bounce-md_30504962.69de02f9.v1-3bd3658f131248f4abab24c50165b9dc@bounce.vates.tech>)
 id 1wCZmQ-0000N8-Fc
 for xen-devel@lists.xenproject.org; Tue, 14 Apr 2026 09:09:58 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wCZmP-00AOQ4-No
 for xen-devel@lists.xenproject.org; Tue, 14 Apr 2026 11:09:57 +0200
Received: from [10.42.69.2] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1) (envelope-from
 <bounce-md_30504962.69de02f9.v1-3bd3658f131248f4abab24c50165b9dc@bounce.vates.tech>)
 id 69de0463-bab6-0a2a0a5309dd-0a2a4502c576-10
 for <xen-devel@lists.xenproject.org>; Tue, 14 Apr 2026 11:09:57 +0200
Received: from [198.2.187.1] (helo=mail187-1.suw11.mandrillapp.com)
 by tlsNG-720697.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.0)
 (envelope-from
 <bounce-md_30504962.69de02f9.v1-3bd3658f131248f4abab24c50165b9dc@bounce.vates.tech>)
 id 69de0464-42fa-0a2a45020019-c602bb01b8ab-3
 for <xen-devel@lists.xenproject.org>; Tue, 14 Apr 2026 11:09:57 +0200
Received: from pmta09.mandrill.prod.suw01.rsglab.com (localhost [127.0.0.1])
 by mail187-1.suw11.mandrillapp.com (Mailchimp) with ESMTP id 4fvyxj3CLJzBsXNlW
 for <xen-devel@lists.xenproject.org>; Tue, 14 Apr 2026 09:03:53 +0000 (GMT)
Received: from [37.26.189.201] by mandrillapp.com id
 3bd3658f131248f4abab24c50165b9dc; Tue, 14 Apr 2026 09:03: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=mte1 header.d=mandrillapp.com header.i="@mandrillapp.com" header.h="From:Subject:Message-Id:To:Cc:References:In-Reply-To:Feedback-ID:Date:MIME-Version:Content-Type:Content-Transfer-Encoding"; dkim=pass header.s=mte1 header.d=vates.tech header.i="teddy.astie@vates.tech" header.h="From:Subject:Message-Id:To:Cc:References:In-Reply-To:Feedback-ID:Date:MIME-Version:Content-Type:Content-Transfer-Encoding"
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=mandrillapp.com;
	s=mte1; t=1776157433; x=1776427433;
	bh=SmtwCDm1NRLAsj7Hr+STM+l6ztJL8PN3iVl5NvgBlR4=;
	h=From:Subject:Message-Id:To:Cc:References:In-Reply-To:Feedback-ID:
	 Date:MIME-Version:Content-Type:Content-Transfer-Encoding:CC:Date:
	 Subject:From;
	b=AuOfPcSo9Vux40ixD83qEwkU72TL/RIP2pjwH6jC1sGQjE3WUK2Eexn/IFIzrlv3M
	 kGlWB4lMUWvnzUpap3TIkmSbfFtn0KJbus/htK6FoIkjh5nektpgKhjNCNGovlFgNQ
	 J2XMknacI2FC2ezKkJ7TJRvY8Ji0QEqADwCAeE8q7aBTIYvEw3VjbaRptfDGOsf2uy
	 Iv7ofdTms9Pd2Gc2krwr8/juMAhItejMj+1qWHmjht1IWe/xlPJbdmORCvWuhYTkLF
	 SOmgz7dhGZ4G+S8qZPpZ9OJeYz4rqqYjsQSRhgS484s7X2rpVX0aQdJu7uLAwhuDbU
	 nrvrlWmWDeRtg==
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=vates.tech; s=mte1;
	t=1776157433; x=1776417933; i=teddy.astie@vates.tech;
	bh=SmtwCDm1NRLAsj7Hr+STM+l6ztJL8PN3iVl5NvgBlR4=;
	h=From:Subject:Message-Id:To:Cc:References:In-Reply-To:Feedback-ID:
	 Date:MIME-Version:Content-Type:Content-Transfer-Encoding:CC:Date:
	 Subject:From;
	b=OgneJo8boniEahu6IlKf5jd5eYgxhhqOruTjV/8JO9qa0EFGiwAYdVc7CZwwVhi0z
	 riBDTg1nvXqwP9EPoSkm/cDTdyEq+RunhvjY9JKPRjnawqV4Ee2JVCYyBwmOD1EL58
	 Grzt7AQxwEJgRlQhAvgoRUzZq8dIdngOshGT9RaapYZFbqgNeNc3lUZ6nSO66wEDmQ
	 GcIrK/Cm/YsbLssEbh9zR8rm2yxqFepYJvFuWIcSGxUHcb/SXkm5Wwu80OzzhrVI+C
	 VbpMmjDR1gIonaD7vY5F57UVw6b2zCybi27sF30UFvSIuWVZ5db5RRH24KnXF2HjBX
	 kvRIcOvUzTwrA==
From: "Teddy Astie" <teddy.astie@vates.tech>
Subject: =?utf-8?Q?Re:=20[RFC=20PATCH=20v3=203/3]=20docs:=20provide=20description=20for=20pci=20hotplug=20option?=
X-Bm-Disclaimer: Yes
X-Bm-Milter-Handled: 4ffbd6c1-ee69-4e1b-aabd-f977039bd3e2
X-Bm-Transport-Timestamp: 1776157432758
Message-Id: <aebab2d5-afc4-4495-b2ec-bdd0caef9b9e@vates.tech>
To: "Thierry Escande" <thierry.escande@vates.tech>, xen-devel@lists.xenproject.org
Cc: "Anthony PERARD" <anthony.perard@vates.tech>, "Juergen Gross" <jgross@suse.com>, "=?utf-8?Q?Daniel=20P=20.=20Berrang=C3=A9?=" <berrange@redhat.com>, "=?utf-8?Q?Marek=20Marczykowski-G=C3=B3recki?=" <marmarek@invisiblethingslab.com>
References: <20260410150333.1533568-1-thierry.escande@vates.tech> <20260410150333.1533568-4-thierry.escande@vates.tech>
In-Reply-To: <20260410150333.1533568-4-thierry.escande@vates.tech>
X-Native-Encoded: 1
X-Report-Abuse: =?UTF-8?Q?Please=20forward=20a=20copy=20of=20this=20message,=20including=20all=20headers,=20to=20abuse@mandrill.com.=20You=20can=20also=20report=20abuse=20here:=20https://mandrillapp.com/contact/abuse=3Fid=3D30504962.3bd3658f131248f4abab24c50165b9dc?=
X-Mandrill-User: md_30504962
Feedback-ID: 30504962:30504962.20260414:md
Date: Tue, 14 Apr 2026 09:03:53 +0000
MIME-Version: 1.0
Content-Type: text/plain; charset=utf-8
Content-Transfer-Encoding: quoted-printable
X-purgate-ID: tlsNG-720697/1776157797-449F4CD1-1B01D432/0/0
X-purgate-type: clean
X-purgate-size: 2184

Le 10/04/2026 =C3=A0 17:06, Thierry Escande a =C3=A9crit=C2=A0:
> This patch adds description for the 'hotplug' PCI option, allowing
> devices to be attached to the guest using the legacy QMP hotplug
> mechanism or by passing them to the Qemu command line using '-device'.
> 
> Signed-off-by: Thierry Escande <thierry.escande@vates.tech>
> ---
> v2: no change
> v3: no change
> ---
>   docs/man/xl-pci-configuration.5.pod | 17 +++++++++++++++++
>   docs/man/xl.cfg.5.pod.in            |  6 ++++++
>   2 files changed, 23 insertions(+)
> 
> diff --git a/docs/man/xl-pci-configuration.5.pod b/docs/man/xl-pci-config=
uration.5.pod
> index 0691f06ad3..8b664173cb 100644
> --- a/docs/man/xl-pci-configuration.5.pod
> +++ b/docs/man/xl-pci-configuration.5.pod
> @@ -166,6 +166,23 @@ dom0 without confirmation.  Please use with care.
>   
>   =3Dback
>   
> +=3Ditem B<hotplug>=3DI<BOOLEAN>
> +
> +=3Dover 4
> +
> +=3Ditem Description
> +
> +Tells L<xl(1)> to use QMP hotplug mechanism to attach assignable device =
to
> +the guest, or to pass it via Qemu command line using
> +'B<-device xen-pci-passthrough,...>'. The default is to use the legacy Q=
MP
> +mechanism.
> +
> +=3Ditem Default Value
> +
> +1
> +
> +=3Dback
> +
>   =3Ditem B<power_mgmt>=3DI<BOOLEAN>
>   
>   =3Dover 4
> diff --git a/docs/man/xl.cfg.5.pod.in b/docs/man/xl.cfg.5.pod.in
> index 3aac0bc4fb..181aaffa0f 100644
> --- a/docs/man/xl.cfg.5.pod.in
> +++ b/docs/man/xl.cfg.5.pod.in
> @@ -1230,6 +1230,12 @@ B<(HVM only)> Changes the default value of B<power=
_mgmt> for all PCI
>   devices passed through to this VM. See B<power_mgmt>
>   above.
>   
> +=3Ditem B<pci_hotplug=3DBOOLEAN>
> +
> +B<(HVM only)> Changes the default value of B<hotplug> for all PCI
> +devices passed through to this VM. See L<xl-pci-configuration(5)> for
> +more details.
> +
>   =3Ditem B<gfx_passthru=3DBOOLEAN|"STRING">
>   
>   Enable graphics device PCI passthrough. This option makes an assigned

Reviewed-by: Teddy Astie <teddy.astie@vates.tech>


--
Teddy Astie | Vates XCP-ng Developer

XCP-ng & Xen Orchestra - Vates solutions

web: https://vates.tech




From xen-devel-bounces@lists.xenproject.org Tue Apr 14 09:19:03 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 14 Apr 2026 09:19:03 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1281498.1564387 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wCZuv-00022x-QZ; Tue, 14 Apr 2026 09:18:45 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1281498.1564387; Tue, 14 Apr 2026 09: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 1wCZuv-00022q-ND; Tue, 14 Apr 2026 09:18:45 +0000
Received: by outflank-mailman (input) for mailman id 1281498;
 Tue, 14 Apr 2026 09:18:44 +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 1wCZuu-00022k-7h
 for xen-devel@lists.xenproject.org; Tue, 14 Apr 2026 09:18:44 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wCZus-00FhFb-Re
 for xen-devel@lists.xenproject.org; Tue, 14 Apr 2026 11:18:42 +0200
Received: from [10.42.69.1] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <berrange@redhat.com>)
 id 69de0668-bab6-0a2a0a5309dd-0a2a4501b2c6-46
 for <xen-devel@lists.xenproject.org>; Tue, 14 Apr 2026 11:18:42 +0200
Received: from [170.10.129.124] (helo=us-smtp-delivery-124.mimecast.com)
 by tlsNG-d62444.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.0)
 (envelope-from <berrange@redhat.com>)
 id 69de0671-6fc9-0a2a45010019-aa0a817c78fb-3
 for <xen-devel@lists.xenproject.org>; Tue, 14 Apr 2026 11:18:42 +0200
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-rTsOmLJ1OXS-Dp8JHnGxGg-1; Tue,
 14 Apr 2026 05:18:37 -0400
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 1B7F3195609E; Tue, 14 Apr 2026 09:18:36 +0000 (UTC)
Received: from redhat.com (headnet01.pony-001.prod.iad2.dc.redhat.com
 [10.2.32.101])
 by mx-prod-int-05.mail-002.prod.us-west-2.aws.redhat.com (Postfix) with ESMTPS
 id 603AD195608E; Tue, 14 Apr 2026 09: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: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=1776158321;
	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=OmtXZQeMRh+rctyuoTSEkZL1cxFBhrRFLX3Pl/Sx4gY=;
	b=iIJKCCw3AccmdxsXljI/a/zzQY6TYsW2MW0mp06h1WARreOc5wQusndsvyWqBL6Oo8cgwT
	j6xdyJC4h7dvWz66lRjS15asLExcRPalR+axXf+ezndFs2w9WVDL85G3BStP/y78NKg9nv
	b6VLxhxeiScgPoRVtKYgmzEeQ1eDziY=
X-MC-Unique: rTsOmLJ1OXS-Dp8JHnGxGg-1
X-Mimecast-MFC-AGG-ID: rTsOmLJ1OXS-Dp8JHnGxGg_1776158316
Date: Tue, 14 Apr 2026 10:18:30 +0100
From: Daniel =?utf-8?B?UC4gQmVycmFuZ8Op?= <berrange@redhat.com>
To: Teddy Astie <teddy.astie@vates.tech>
Cc: Thierry Escande <thierry.escande@vates.tech>,
	xen-devel@lists.xenproject.org,
	Anthony PERARD <anthony.perard@vates.tech>,
	Juergen Gross <jgross@suse.com>,
	Marek =?utf-8?Q?Marczykowski-G=C3=B3recki?= <marmarek@invisiblethingslab.com>
Subject: Re: [RFC PATCH v3 2/3] libxl: Allow PCI device passthrough using
 -device Qemu command line
Message-ID: <ad4GZpUdtbf1I4hA@redhat.com>
Reply-To: Daniel =?utf-8?B?UC4gQmVycmFuZ8Op?= <berrange@redhat.com>
References: <20260410150333.1533568-1-thierry.escande@vates.tech>
 <20260410150333.1533568-3-thierry.escande@vates.tech>
 <ece34618-f527-455d-a6fe-c964aa1f4878@vates.tech>
MIME-Version: 1.0
In-Reply-To: <ece34618-f527-455d-a6fe-c964aa1f4878@vates.tech>
User-Agent: Mutt/2.2.14 (2025-02-20)
X-Scanned-By: MIMEDefang 3.0 on 10.30.177.17
X-Mimecast-Spam-Score: 0
X-Mimecast-MFC-PROC-ID: xv42_pn1bDFyYsTJpSaxrf8hxdO54BckhQ3lEAUkun8_1776158316
X-Mimecast-Originator: redhat.com
Content-Type: text/plain; charset=utf-8
Content-Disposition: inline
Content-Transfer-Encoding: 8bit
X-purgate-ID: tlsNG-d62444/1776158322-B78FC185-67B3D50F/0/0
X-purgate-type: clean
X-purgate-size: 1688

On Tue, Apr 14, 2026 at 08:59:52AM +0000, Teddy Astie wrote:
> Le 10/04/2026 à 17:06, Thierry Escande a écrit :
> > This change makes use of the new option 'hotplug' for host PCI devices
> > passthrough'd to the guest. If hotplug=0 is used in the pci device
> > configuration table, the device will be attached to the guest using the
> > Qemu command line as '-device xen-pci-passthrough,hostaddr=...'
> > 
> > The host device configuration is passed to the -device option as a json
> > array, just like it's done for hotplug using QMP. The json array is
> > created by a new internal function libxl__device_pci_get_qmp_json() that
> > is also used by pci_add_qmp_device_add().
> 
> If (in this specific case) we're not using QMP anymore, I think 
> libxl__device_pci_get_qmp_json should lose the "qmp" qualification.
> (unless QEMU also considers JSON-formatted command-line paramters as QMP)

FWIW, from the QEMU POV, 'QMP' refers to the monitor protocol,
whose specification is defined using the 'QAPI' schema language.

QEMU is increasing enabling use of JSON on the command line, by
having the CLI args parsed using 'QAPI' visitors. In these cases,
the 'QAPI' data structures are shared between the command line
and QMP in most cases.

IOW, in this case, perhaps "qapi_json" is a more accurate name
than 'qmp_json' if libxl is returning a JSON doc that represents
an object defined using QAPI.


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 Apr 14 09:23:05 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 14 Apr 2026 09:23:05 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1281510.1564395 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wCZz6-0003bs-DQ; Tue, 14 Apr 2026 09:23:04 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1281510.1564395; Tue, 14 Apr 2026 09:23: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 1wCZz6-0003bl-AU; Tue, 14 Apr 2026 09:23:04 +0000
Received: by outflank-mailman (input) for mailman id 1281510;
 Tue, 14 Apr 2026 09:23:02 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92) id 1wCZz4-0003bf-KI
 for xen-devel@lists.xenproject.org; Tue, 14 Apr 2026 09:23:02 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wCZz4-008mOs-05
 for xen-devel@lists.xenproject.org; Tue, 14 Apr 2026 11:23:02 +0200
Received: from [10.42.69.11] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <oleksii.kurochko@gmail.com>)
 id 69de076e-e002-0a2a0a5209dd-0a2a450b9aba-44
 for <xen-devel@lists.xenproject.org>; Tue, 14 Apr 2026 11:23:01 +0200
Received: from [209.85.128.50] (helo=mail-wm1-f50.google.com)
 by tlsNG-42698a.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.0)
 (envelope-from <oleksii.kurochko@gmail.com>)
 id 69de0775-bca8-0a2a450b0019-d1558032d943-3
 for <xen-devel@lists.xenproject.org>; Tue, 14 Apr 2026 11:23:01 +0200
Received: by mail-wm1-f50.google.com with SMTP id
 5b1f17b1804b1-4852b81c73aso50445035e9.3
 for <xen-devel@lists.xenproject.org>; Tue, 14 Apr 2026 02:23:01 -0700 (PDT)
Received: from [192.168.1.6] (user-109-243-69-121.play-internet.pl.
 [109.243.69.121]) by smtp.gmail.com with ESMTPSA id
 5b1f17b1804b1-488ede1e050sm61093025e9.5.2026.04.14.02.23.00
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Tue, 14 Apr 2026 02:23:00 -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=20251104 header.d=gmail.com header.i="@gmail.com" header.h="Content-Transfer-Encoding:In-Reply-To:Content-Language:References:Cc:To:Subject:From:User-Agent:MIME-Version:Date:Message-ID"
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=gmail.com; s=20251104; t=1776158581; x=1776763381; darn=lists.xenproject.org;
        h=content-transfer-encoding:in-reply-to:content-language:references
         :cc:to:subject:from:user-agent:mime-version:date:message-id:from:to
         :cc:subject:date:message-id:reply-to;
        bh=gyW1eNfX7+FHuCieG0wIqF5U3m34SVn5rEwevC5SNFQ=;
        b=mz5nbcFvR2ky6PaaPsNicNpO99AweKfZC7MF/aouf8jhZ2EMSyVVDPmjcdyUSXKBfA
         U0ddVKil1I/u+SOn4Nn7ivf/f5LC3wPITtC+i/Mxcv1HQuiuGaXQJ7/+HEi+ZsIyS3/C
         I8GR+9+LSk9EjG40iJ+ibulK9WaGKjumkSifJXr//VqmSEjm0L+QhXPYTFvWLrsrsYP5
         2Bmh3H5wBLpIsWqi3E4M2N+YZ+gI1un3EN0cyDXbq9isaDnXHtjIoPdyaLkojf2iowv5
         /lD/L8yYBaoAuyBlR4KXyixcROrNe0eFb5ZYuWcVEpPh4Wxg6UngS18JmU0neKN82ter
         Qw3g==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20251104; t=1776158581; x=1776763381;
        h=content-transfer-encoding:in-reply-to:content-language:references
         :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;
        bh=gyW1eNfX7+FHuCieG0wIqF5U3m34SVn5rEwevC5SNFQ=;
        b=YCOVRb8axZOdq9wVwpbEwmPyuYGlvZxF4pBCMuaO6Sq0HV1RtBSkK80meTHvoReWVO
         44330ivmxxogkoyucLkFwSSsrwfI2CuVaJ1h0E8cDrD4NCv//+e5wjK6TfJkO5tL9WgM
         jj5uhBZMAmsUBFt7CfFzh1/GADBXg2tE4fzztQLFf8h9HFtgvQDrtXY7uys8vqOwa0sQ
         OOoCz79LacXowMKTosfKXCvObxJ3rGxzehPLIEAIeGDeccTGeDS/eXuWdK7lli8ECNXf
         7vc2qtDy/0iZug/+ZkTOnVhY0j32mhLAV2KIZek9cANb25k9IJCWOFob0RDRLK+J+7ru
         /j6A==
X-Forwarded-Encrypted: i=1; AFNElJ/SAnPOCC8hpZPkC2q+pY98xY5kTU9rQxw83SVdvQp5Axk4jb7NB3Xd4ETCjNh8sjIOM/tPg5i+HGE=@lists.xenproject.org
X-Gm-Message-State: AOJu0YyQTglzXUfSy8u3avI+jFVCQIESgD9QAFSeBnlKwVG3pVRMqsaW
	TG4bCoALO53rpx7JkXIjyOEX/j1vTvXqiQRN/lNBFGALiLHtg0K/Yd3Q
X-Gm-Gg: AeBDievpj8AhxH98ukhPUN2hwyNCx9oYT7TbxmVK1tzkwF9sL2p7qA32Iv76Opofd+e
	7AtbQPu5PiZVLvavRTD7SL7EFdEdLcV7o1PsobpEpWDrkpg4kj9VYY4kx1yI6xrHC878iw+jI3m
	sPa3Hk/reQnhRZUUksZ21TeNsTvVoHB7jF82mwrcgxcQ01dMnm44Z5c0CYvSFukxqk2vf274GwV
	Wm+mDBcXlsYIcRn16LL0dhm1yydYj52dkDCkjpav4ug903YdYcYKvrK5mQRmPdZxOg98ymASOv7
	KgfbARTmfEy5Vr3oJKleq1ogW/RxVU6+3IndCz9GNAvQV0HLUImeSgMOLPjUlqgK2cObj7CrVHP
	Su0EeVxVecc9vJFotgAWwg1rBKJwzGG0Ew02OcE6pMf7ufPtPm00Vub4zWSwb6xTJx4FhK1MALb
	7LavmqKEE9F5SYAw2a/WTze7x7wNXYZgewm1on4ExGJDcxNVdCf9uhL1VfBLwsc3aUbDmeap/It
	3nb33mfDHd89GDUhRtAv2e4
X-Received: by 2002:a05:600c:8b38:b0:488:be58:bb77 with SMTP id 5b1f17b1804b1-488d6890ee3mr206590465e9.30.1776158581098;
        Tue, 14 Apr 2026 02:23:01 -0700 (PDT)
Message-ID: <2f555a8b-d058-41ca-80f8-ce3dc08edfbe@gmail.com>
Date: Tue, 14 Apr 2026 11:22:59 +0200
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
From: Oleksii Kurochko <oleksii.kurochko@gmail.com>
Subject: Re: [PATCH v1 14/27] xen/riscv: introduce per-vCPU IMSIC state
To: Jan Beulich <jbeulich@suse.com>
Cc: Romain Caritey <Romain.Caritey@microchip.com>,
 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.pau@citrix.com>,
 Stefano Stabellini <sstabellini@kernel.org>, xen-devel@lists.xenproject.org
References: <cover.1773157782.git.oleksii.kurochko@gmail.com>
 <8196fa8f000e384af697a44cb3d50ece966e82a7.1773157782.git.oleksii.kurochko@gmail.com>
 <1f5e262d-da1f-49a2-8e89-87fb714e51bf@suse.com>
Content-Language: en-US
In-Reply-To: <1f5e262d-da1f-49a2-8e89-87fb714e51bf@suse.com>
Content-Type: text/plain; charset=UTF-8; format=flowed
Content-Transfer-Encoding: 7bit
X-purgate-ID: tlsNG-42698a/1776158581-F67C42A1-C14602A6/10/73395122804
X-purgate-type: spam
X-purgate-size: 5476



On 4/2/26 1:31 PM, Jan Beulich wrote:
> On 10.03.2026 18:08, Oleksii Kurochko wrote:
>> Each vCPU interacting with the IMSIC requires state to track the
>> associated guest interrupt file and its backing context.
>>
>> Introduce a per-vCPU structure to hold IMSIC-related state, including
>> the guest interrupt file identifier and the CPU providing the backing
>> VS-file. Access to the guest file identifier is protected by a lock.
>>
>> Initialize this structure during vCPU setup and store it in arch_vcpu.
>> The initial state marks the VS-file as software-backed until it becomes
>> associated with a physical CPU.
>>
>> Add helpers to retrieve and update the guest interrupt file identifier.
> 
> Yet again a functions with no callers.

They will be called in follow-up patches.


> 
>> --- a/xen/arch/riscv/imsic.c
>> +++ b/xen/arch/riscv/imsic.c
>> @@ -59,6 +59,29 @@ do {                            \
>>       csr_clear(CSR_SIREG, v);    \
>>   } while (0)
>>   
>> +unsigned int vcpu_guest_file_id(const struct vcpu *v)
>> +{
>> +    struct imsic_state *imsic_state = v->arch.imsic_state;
>> +    unsigned long flags;
>> +    unsigned int vsfile_id;
>> +
>> +    read_lock_irqsave(&imsic_state->vsfile_lock, flags);
>> +    vsfile_id = imsic_state->guest_file_id;
>> +    read_unlock_irqrestore(&imsic_state->vsfile_lock, flags);
> 
> What purpose does this locking have? Already ...
> 
>> +    return vsfile_id;
> 
> ... here the value can be stale, if indeed there is a chance of races.
> Did you perhaps mean to use ACCESS_ONCE() here and where the value is
> set?

ACCESS_ONCE() isn't guarantee only compiler re-ordering (as basically it 
is just volatile-related stuff inisde the macros)?

Generally, I think that that guest_file_id is needed to be updated only 
during migration of vCPU from one pCPU to another and I expect that 
during this migration vCPU isn't active, so no one will want to read 
imsic_state->guest_file_id. But on the other hand, there is:
   bool imsic_has_interrupt(const struct vcpu *vcpu)
   {
   ...
     /*
      * The IMSIC SW-file directly injects interrupt via hvip so
      * only check for interrupt when IMSIC VS-file is being used.
      */

     read_lock_irqsave(&imsic_state->vsfile_lock, flags);
     if ( imsic_state->vsfile_pcpu != NR_CPUS )
         ret = !!(csr_read(CSR_HGEIP) & BIT(imsic_state->guest_file_id, 
UL));
     read_unlock_irqrestore(&imsic_state->vsfile_lock, flags);
   ...
   }
which I think could be called in parallel with with migration, so then 
still lock are needed.

> 
>> @@ -315,6 +338,25 @@ static int imsic_parse_node(const struct dt_device_node *node,
>>       return 0;
>>   }
>>   
>> +int __init vcpu_imsic_init(struct vcpu *v)
> 
> __init for a function involved in setting up a vCPU?

Yes, it will be used during creationg of a vCPU.

> 
>> +{
>> +    struct imsic_state *imsic_state;
>> +
>> +    /* Allocate IMSIC context */
>> +    imsic_state = xvzalloc(struct imsic_state);
>> +    if ( !imsic_state )
>> +        return -ENOMEM;
>> +
>> +    v->arch.imsic_state = imsic_state;
>> +
>> +    /* Setup IMSIC context  */
>> +    rwlock_init(&imsic_state->vsfile_lock);
>> +
>> +    imsic_state->guest_file_id = imsic_state->vsfile_pcpu = NR_CPUS;
> 
> Iirc Misra dislikes such double assignments, so better avoid them right away.
> (As per a comment at the bottom this may need splitting anyway.)
> 
>> --- a/xen/arch/riscv/include/asm/domain.h
>> +++ b/xen/arch/riscv/include/asm/domain.h
>> @@ -52,6 +52,8 @@ struct arch_vcpu {
>>   
>>       struct vtimer vtimer;
>>   
>> +    struct imsic_state *imsic_state;
> 
> Just like it's "vtimer", perhaps also "vimsic_state" for both the field
> and the struct tag?

Makes sense. Lets rename this field and tag.

> 
>> @@ -64,8 +65,20 @@ struct imsic_config {
>>       spinlock_t lock;
>>   };
>>   
>> +struct imsic_state {
>> +    /* IMSIC VS-file */
>> +    rwlock_t vsfile_lock;
>> +    unsigned int guest_file_id;
>> +    /*
>> +     * (vsfile_pcpu >= 0) => h/w IMSIC VS-file
>> +     * (vsfile_pcpu == NR_CPUS) => s/w IMSIC SW-file
>> +     */
>> +    unsigned long vsfile_pcpu;
> 
> And why unsigned long, when unsigned int will do (as about everywhere else
> for CPU numbers)? That'll also shrink the structure size by 8 bytes.

Originally, IIRC mhartid register is unsigned long, so potentially we 
could have amount of pCPU up to what fit into unsigned long.

But know I see that AIA limits amount of pCPUs to 16,384 harts. So we 
could really use unsigned int here.

> 
> As to the comment - as per vcpu_imsic_init() NR_CPUS also has some special
> meaning for guest_file_id, yet there's no comment there. How do file ID and
> NR_CPUS fit together anyway?

Agree, it looks incorrect. I tried to avoid introduction of "#define 
GIELEN_MAX 64".
As an option I can use UINT_MAX as init value for guest_file_id or even 
better just use 0 as it basically means that SW-file should be used.

The idea is that if s/w IMSIC SW-file is used that it doesn't sit on any 
pCPU, so we should have some marker to show that and NR_CPUS should be fine.

As a result guest_file_id should be init-ed with 0 (and it will be by 
default as xvzalloc() is used for allocation) and ->vsfile_pcpu inits 
with NR_CPUS. Also, I will add a comment above guest_file_id.

Thanks.

~ Oleksii


From xen-devel-bounces@lists.xenproject.org Tue Apr 14 09:23:15 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 14 Apr 2026 09:23:15 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1281513.1564405 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wCZzH-0003sz-L2; Tue, 14 Apr 2026 09:23:15 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1281513.1564405; Tue, 14 Apr 2026 09:23: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 1wCZzH-0003ss-H8; Tue, 14 Apr 2026 09:23:15 +0000
Received: by outflank-mailman (input) for mailman id 1281513;
 Tue, 14 Apr 2026 09:23:13 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92) id 1wCZzF-0003rq-GW
 for xen-devel@lists.xenproject.org; Tue, 14 Apr 2026 09:23:13 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wCZzE-00ASKL-So
 for xen-devel@lists.xenproject.org; Tue, 14 Apr 2026 11:23:12 +0200
Received: from [10.42.69.9] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <bernhard.kaindl@citrix.com>)
 id 69de0779-2eae-0a2a0a5409dd-0a2a45098dec-38
 for <xen-devel@lists.xenproject.org>; Tue, 14 Apr 2026 11:23:12 +0200
Received: from [160.101.131.9] (helo=na1pdmzitismtp02.tibco.com)
 by tlsNG-bad1c0.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.0)
 (envelope-from <bernhard.kaindl@citrix.com>)
 id 69de077f-bf79-0a2a45090019-a0658309af00-3
 for <xen-devel@lists.xenproject.org>; Tue, 14 Apr 2026 11:23:12 +0200
Received: from debian.eng.citrite.net (unknown [10.113.40.46])
 by na1pdmzitismtp02.tibco.com (Postfix) with ESMTP id E59EF81A1E35;
 Tue, 14 Apr 2026 05:22:17 -0400 (EDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-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: Bernhard Kaindl <bernhard.kaindl@citrix.com>
To: xen-devel@lists.xenproject.org
Cc: Bernhard Kaindl <bernhard.kaindl@citrix.com>,
	Jan Beulich <jbeulich@suse.com>,
	=?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>,
	Julien Grall <julien@xen.org>,
	Stefano Stabellini <sstabellini@kernel.org>
Subject: [PATCH v2] docs: Draft Design Document for NUMA-aware claim sets
Date: Tue, 14 Apr 2026 10:21:13 +0100
Message-Id: <9e65c4d4f82ea7a41e9284d58c513dc00e96e7f9.1776158129.git.bernhard.kaindl@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/1776158592-5CDF72F2-E07FAA1A/3/8697954094
X-purgate-type: clean.bounce
X-purgate-size: 97947

This design extends Xen's memory claim handling to support claim sets
spanning multiple NUMA nodes.  Roger Pau Monné described it as:

  >  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.

      -- Roger Pau Monné

This design implements that model and integrates itself into the Sphinx
documentation for the Xen hypervisor below docs/designs.

Suggested-by: Jan Beulich <jbeulich@suse.com>
Suggested-by: Roger Pau Monné <roger.pau@citrix.com>
Signed-off-by: Bernhard Kaindl <bernhard.kaindl@citrix.com>

---
Dear reviewers,

for convenience, the rendered design document is available here for review:
https://bernhard-xen.readthedocs.io/en/claim-sets-v2-design/designs/claims/

The Sphinx site can be built and viewed locally with the following commands:

git pull git@gitlab.com:bernhardkaindl/xen.git claim-sets-v2-design

make -C docs sphinx-env-build # xdg-open docs/sphinx/html/index.html
or start a minimal HTTP server: (cd docs/sphinx/html; python -m http.server)

Changes since v1:
-----------------

- After consultations, I improved the function names to follow standard
  naming recommendations and improved the used metaphors. I considered
  many suggestions, and decided to rename the new functions as follows:

  * claims_retire_allocation() -> redeem_claims_for_allocation()
    - Use redeem because it is part of an exchange of claims for memory.

  * claims_retire_global()     -> deduct_global_claims()
  * claims_retire_nodes()      -> deduct_node_claims()
    - These perform the act of reducung the amount of global/node claims.

  * claims_retire_node()       -> cancel_all_node_claims()
    - Cancel all node claims when needed when the claims are terminated.

- Associated words in the text changed from retire to redeem and deduct.

Best regards,

  Bernhard
---
 .readthedocs.yaml                             |   4 +-
 docs/.gitignore                               |   1 +
 docs/Makefile                                 |  12 +-
 docs/conf.py                                  |  51 +-
 docs/designs/claims/accounting.rst            | 273 ++++++++++
 docs/designs/claims/design.rst                | 345 ++++++++++++
 docs/designs/claims/edge-cases.rst            |  24 +
 docs/designs/claims/history.rst               |  82 +++
 docs/designs/claims/implementation.rst        | 492 ++++++++++++++++++
 docs/designs/claims/index.rst                 |  43 ++
 docs/designs/claims/installation.rst          | 122 +++++
 docs/designs/claims/invariants.mmd            |  36 ++
 docs/designs/claims/protection.rst            |  41 ++
 docs/designs/claims/redeeming.rst             |  70 +++
 docs/designs/claims/usecases.rst              |  39 ++
 docs/designs/index.rst                        |  16 +
 docs/designs/launch/hyperlaunch.rst           |   4 +-
 .../dom/DOMCTL_claim_memory-data.mmd          |  43 ++
 .../dom/DOMCTL_claim_memory-seqdia.mmd        |  23 +
 .../dom/DOMCTL_claim_memory-workflow.mmd      |  23 +
 docs/guest-guide/dom/DOMCTL_claim_memory.rst  |  81 +++
 docs/guest-guide/dom/index.rst                |  14 +
 docs/guest-guide/index.rst                    |  23 +
 docs/guest-guide/mem/XENMEM_claim_pages.rst   | 100 ++++
 docs/guest-guide/mem/index.rst                |  12 +
 docs/hypervisor-guide/index.rst               |   7 +
 docs/index.rst                                |   7 +-
 27 files changed, 1978 insertions(+), 10 deletions(-)
 create mode 100644 docs/designs/claims/accounting.rst
 create mode 100644 docs/designs/claims/design.rst
 create mode 100644 docs/designs/claims/edge-cases.rst
 create mode 100644 docs/designs/claims/history.rst
 create mode 100644 docs/designs/claims/implementation.rst
 create mode 100644 docs/designs/claims/index.rst
 create mode 100644 docs/designs/claims/installation.rst
 create mode 100644 docs/designs/claims/invariants.mmd
 create mode 100644 docs/designs/claims/protection.rst
 create mode 100644 docs/designs/claims/redeeming.rst
 create mode 100644 docs/designs/claims/usecases.rst
 create mode 100644 docs/designs/index.rst
 create mode 100644 docs/guest-guide/dom/DOMCTL_claim_memory-data.mmd
 create mode 100644 docs/guest-guide/dom/DOMCTL_claim_memory-seqdia.mmd
 create mode 100644 docs/guest-guide/dom/DOMCTL_claim_memory-workflow.mmd
 create mode 100644 docs/guest-guide/dom/DOMCTL_claim_memory.rst
 create mode 100644 docs/guest-guide/dom/index.rst
 create mode 100644 docs/guest-guide/mem/XENMEM_claim_pages.rst
 create mode 100644 docs/guest-guide/mem/index.rst

diff --git a/.readthedocs.yaml b/.readthedocs.yaml
index d3aff7662ebf..f6dbb4ffa86f 100644
--- a/.readthedocs.yaml
+++ b/.readthedocs.yaml
@@ -12,7 +12,9 @@ build:
   jobs:
     post_install:
       # Instead of needing a separate requirements.txt
-      - python -m pip install --upgrade --no-cache-dir sphinx-rtd-theme
+      - >
+        python -m pip install --upgrade --no-cache-dir sphinx-rtd-theme
+        sphinxcontrib-mermaid
 
 sphinx:
   configuration: docs/conf.py
diff --git a/docs/.gitignore b/docs/.gitignore
index c3ce50335ae6..80c3d14ede69 100644
--- a/docs/.gitignore
+++ b/docs/.gitignore
@@ -1,3 +1,4 @@
+/.sphinx/
 /figs/*.png
 /html/
 /man/xl.cfg.5.pod
diff --git a/docs/Makefile b/docs/Makefile
index 8e68300e3b44..47e9f366ce7a 100644
--- a/docs/Makefile
+++ b/docs/Makefile
@@ -55,6 +55,16 @@ build: html txt pdf man-pages figs
 sphinx-html:
 	sphinx-build -b html . sphinx/html
 
+# Sphinx build target that sets up a virtual environment and installs
+# dependencies. This is intended for use by developers who want to build
+# the Sphinx documentation locally. Keep it the dependencies in sync with
+# .readthedocs.yaml.
+sphinx-env-build:
+	if [ ! -d .sphinx ]; then python -m venv .sphinx; fi
+	. .sphinx/bin/activate && \
+	pip install sphinx-rtd-theme sphinxcontrib-mermaid && \
+	$(MAKE) sphinx-html
+
 .PHONY: html
 html: $(DOC_HTML) html/index.html
 
@@ -76,7 +86,7 @@ pdf: $(DOC_PDF)
 clean: clean-man-pages
 	$(MAKE) -C figs clean
 	rm -rf .word_count *.aux *.dvi *.bbl *.blg *.glo *.idx *~
-	rm -rf *.ilg *.log *.ind *.toc *.bak *.tmp core
+	rm -rf *.ilg *.log *.ind *.toc *.bak *.tmp core .sphinx
 	rm -rf html txt pdf sphinx/html
 
 .PHONY: distclean
diff --git a/docs/conf.py b/docs/conf.py
index 2fb8bafe6589..97d79a0eb562 100644
--- a/docs/conf.py
+++ b/docs/conf.py
@@ -61,7 +61,48 @@ needs_sphinx = '1.4'
 # Add any Sphinx extension module names here, as strings. They can be
 # extensions coming with Sphinx (named 'sphinx.ext.*') or your custom
 # ones.
-extensions = []
+extensions = ["sphinx.ext.autosectionlabel"]
+
+try:
+    import sphinxcontrib.mermaid
+    extensions.append("sphinxcontrib.mermaid")
+except ImportError:
+    pass
+
+def on_build_finished(app, exception):
+    if exception:
+        return
+    try:
+        import sphinxcontrib.mermaid
+    except ImportError:
+        sys.stderr.write("""
+        To fix rendering mermaid diagrams, install `sphinxcontrib.mermaid` in
+        your Python venv. On Debian-based systems, you can install it with:\n
+            sudo apt install python3-sphinxcontrib-mermaid\n
+        Alternatively, you can use pipx to install sphinx and the needed
+        extras in an isolated environment with:\n
+            pipx install sphinx
+            pipx inject sphinx sphinxcontrib-mermaid sphinx-rtd-theme\n
+        Or, use `make -C docs sphinx-env-build` to build the documentation
+        in a suitable Python environment with all dependencies.\n""")
+    print("The generated documentation is available at:")
+    print(f"file://{app.outdir}/index.html")
+    print("You can also serve it locally with:")
+    print(f"  (cd {app.outdir}; python -m http.server)")
+
+def setup(app):
+    app.connect("build-finished", on_build_finished)
+
+
+# Extension options
+
+# sphinxcontrib.mermaid
+mermaid_init_js = """
+mermaid.initialize({ startOnLoad: true });
+"""
+
+# sphinx.ext.autosectionlabel
+autosectionlabel_prefix_document = True
 
 # Add any paths that contain templates here, relative to this directory.
 templates_path = ['_templates']
@@ -82,7 +123,7 @@ language = 'en'
 # List of patterns, relative to source directory, that match files and
 # directories to ignore when looking for source files.
 # This pattern also affects html_static_path and html_extra_path.
-exclude_patterns = [u'sphinx/output', 'Thumbs.db', '.DS_Store']
+exclude_patterns = [u'sphinx/output', 'Thumbs.db', '.DS_Store', '.sphinx']
 
 # The name of the Pygments (syntax highlighting) style to use.
 pygments_style = None
@@ -99,7 +140,11 @@ highlight_language = 'none'
 try:
     import sphinx_rtd_theme
     html_theme = 'sphinx_rtd_theme'
-    html_theme_path = [sphinx_rtd_theme.get_html_theme_path()]
+    # The sphinx_rtd_theme package versions prior to 3.0.0 require the theme
+    # path to be added to html_theme_path, while newer are warning about it:
+    # https://sphinx-rtd-theme.readthedocs.io/en/stable/changelog.html#deprecations
+    if sphinx_rtd_theme.__version__.split('.') < ['3', '0', '0']:
+        html_theme_path = [sphinx_rtd_theme.get_html_theme_path()]
 except ImportError:
     sys.stderr.write('Warning: The Sphinx \'sphinx_rtd_theme\' HTML theme was not found. Make sure you have the theme installed to produce pretty HTML output. Falling back to the default theme.\n')
 
diff --git a/docs/designs/claims/accounting.rst b/docs/designs/claims/accounting.rst
new file mode 100644
index 000000000000..d8efe0cdf24f
--- /dev/null
+++ b/docs/designs/claims/accounting.rst
@@ -0,0 +1,273 @@
+.. SPDX-License-Identifier: CC-BY-4.0
+
+Claims Accounting
+-----------------
+
+.. contents:: Table of Contents
+   :local:
+
+.. note::
+   Claims accounting state is only updated while holding :c:expr:`heap_lock`.
+   See :ref:`designs/claims/accounting:Locking of claims accounting`
+   for details on the locks used to protect claims accounting state.
+
+This section formalizes the internal state and invariants that Xen must
+maintain to ensure correctness.
+
+For readers following the design in order, the preceding sections are:
+
+1. :doc:`/designs/claims/design` introduces the overall model and goals.
+2. :doc:`/designs/claims/installation` explains how claim sets are installed.
+3. :doc:`/designs/claims/protection` describes how claimed memory is
+   protected during allocation.
+4. :doc:`/designs/claims/redeeming` explains how claims are redeemed as
+   allocations succeed.
+
+Overview
+^^^^^^^^
+
+.. table:: Table 1: Claims accounting - All accesses, Aggregate state,
+           and invariants protected by :c:expr:`heap_lock`.
+   :widths: auto
+
+   ============ ======================================= =======================
+   Level           Claims must be lower or equal to       Available memory
+   ============ ======================================= =======================
+   Node         :c:expr:`node_outstanding_claims[node]` :c:expr:`node_avail_pages[node]`
+                  Aggregate state:
+
+                  Over all domains:
+
+                  SUM(:c:expr:`domain.claims[node]`)
+   Global       :c:expr:`outstanding_claims` =          :c:expr:`total_avail_pages` =
+                 Aggregate state:                        Aggregate state:
+
+                 SUM() over all domains:                 SUM() over all nodes:
+
+                 :c:expr:`domain.global_claims` +        :c:expr:`node_avail_pages[]`
+                 :c:expr:`domain.node_claims`
+
+                 Also, the sum over all nodes:
+
+                 :c:expr:`node_outstanding_claims[*]`
+   Dom global   :c:expr:`domain.global_claims`          :c:expr:`total_avail_pages`
+   Dom per-node :c:expr:`domain.claims[node]`           :c:expr:`node_avail_pages[node]`
+   Dom slow tot :c:expr:`domain.global_claims` +        :c:expr:`total_avail_pages`
+                SUM(:c:expr:`domain.claims[node]`)
+   Aggregate:   :c:expr:`domain.node_claims` =
+                SUM(:c:expr:`domain.claims[node]`)
+   Domain total :c:expr:`domain.global_claims`          :c:expr:`total_avail_pages`
+                + :c:expr:`domain.node_claims`
+   Domain mem   :c:expr:`domain_tot_pages(domain)`      Invariant: must be
+                 - plus :c:expr:`domain.global_claims`   lower or equal to
+
+                 + plus :c:expr:`domain.node_claims`     :c:expr:`domain.max_pages`
+   ============ ======================================= =======================
+
+Claims accounting state
+^^^^^^^^^^^^^^^^^^^^^^^
+
+When installing claims and redeeming them for allocation, the page allocator
+redeems the allocation's claims by deducing the claimed pages from per-node
+claims and if not sufficient to cover the allocation, from global claims
+as a fallback. See :doc:`redeeming` for details on redeeming claims during
+allocation.
+
+:c:expr:`domain.claims[MAX_NUMNODES]`
+  The domain's claims for specific NUMA nodes, indexed by node ID.
+
+:c:expr:`domain.global_claims`
+  The domain's global claim.
+
+Aggregate state
+^^^^^^^^^^^^^^^
+
+Xen also maintains aggregate state for fast checks in allocator hot paths:
+
+:c:expr:`outstanding_claims`:
+  The sum of all claims across all domains for global and node claims.
+
+:c:expr:`node_outstanding_claims[MAX_NUMNODES]`:
+  The sum of all claims across all domains for specific NUMA nodes, indexed
+  by node ID, used for efficient checks in the allocator hot paths to ensure
+  that node claims do not exceed the available memory on the respective node.
+
+:c:expr:`domain.node_claims`:
+  The total of the domain's node claims,
+  equal to the sum of :c:expr:`domain.claims[MAX_NUMNODES]` for all nodes
+  and used for efficient checks in the allocator.
+
+:c:expr:`domain_tot_pages(domain)`
+  The total pages allocated to the domain, used for validating that claims do
+  not exceed the domain's maximum page limits. This is the sum of the
+  domain's global claim and node claims, i.e. :c:expr:`domain.global_claims`
+  + :c:expr:`domain.node_claims`.
+
+Claims accounting invariants
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+Xen must maintain the following invariants:
+
+- Global claims:
+    :c:expr:`outstanding_claims` :math:`\le` :c:expr:`total_avail_pages`
+
+- Node claims:
+    :c:expr:`node_outstanding_claims[alloc_node]` :math:`\le`
+    :c:expr:`node_avail_pages[alloc_node]`
+- Domain claims:
+    :c:expr:`domain.global_claims` + :c:expr:`domain.node_claims` +
+    :c:expr:`domain_tot_pages(domain)` :math:`\le` :c:expr:`domain.max_pages`
+
+   See :doc:`redeeming` for details on the latter invariant.
+
+Locking of claims accounting
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+.. c:alias:: domain.page_alloc_lock
+
+.. c:var:: spinlock_t heap_lock
+
+   Lock for all heap operations including claims. It protects the claims state
+   and invariants from concurrent updates and ensures that checks in the
+   allocator hot paths see a consistent view of the claims state.
+
+   If :c:expr:`domain.page_alloc_lock` is needed to check
+   :c:expr:`domain_tot_pages(domain)` on top of new claims against
+   :c:expr:`domain.max_pages` for the domain, it needs to be taken
+   before :c:expr:`heap_lock` for consistent locking order to avoid deadlocks.
+
+Variables and data structures
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+.. c:type:: uint8_t nodeid_t
+
+   Type for :term:`NUMA node` IDs. The :c:expr:`memflags` variable of
+   :c:expr:`xc_populate_physmap()` and related functions for populating
+   the :term:`physmap` allocates 8 bits in the flags for the node ID, which
+   limits the theoretical maximum value of ``CONFIG_NR_NUMA_NODES`` at 254,
+   which is far beyond the current maximum of 64 supported by Xen and should
+   be sufficient for the foreseeable future.
+
+.. c:macro:: MAX_NUMNODES
+
+   The maximum number of NUMA nodes supported by Xen. Used for validating
+   node IDs in the :c:expr:`memory_claim_t` entries of claim sets.
+   When Xen is built without NUMA support, it is 1.
+   The default on x86_64 is 64 which is sufficient for current hardware and
+   allows for efficient storage of e.g. the :c:expr:`node_online_map` for
+   online nodes and :c:expr:`domain.node_affinity` in a single 64-bit value,
+   and in the :c:expr:`domain.claims[MAX_NUMNODES]` array.
+
+   ``xen/arch/Kconfig`` limits the maximum number of NUMA nodes to 64. While
+   Xen can be compiled for up to 254 nodes, configuring machines to split
+   the installed memory into more than 64 nodes would be unusual.
+   For example, dual-socket servers, even when using multiple chips per CPU
+   package should typically be configured for 2 NUMA nodes by default.
+
+.. c:var:: long total_avail_pages
+
+   Total available pages in the system, including both free and claimed pages.
+   This is used for validating that global claims do not exceed the total
+   available memory in the system.
+
+.. c:var:: long outstanding_claims
+
+   The total global claims across all domains. This is maintained for
+   efficient checks in the allocator hot paths to ensure the global claims
+   invariant that total claims do not exceed the total available memory is not
+   violated.
+
+.. c:var:: long node_avail_pages[MAX_NUMNODES]
+
+   Available pages for each NUMA node, including both free and claimed pages.
+   This is used for validating that node claims do not exceed the available
+   memory on the respective NUMA node.
+
+.. c:var:: long node_outstanding_claims[MAX_NUMNODES]
+
+   The total claims across all domains for each NUMA node, indexed by node
+   ID. This is maintained for efficient checks in the allocator hot paths.
+
+.. c:macro:: domain_tot_pages(domain)
+
+   The total pages allocated to the domain, used for validating that this
+   allocation and the domain's claims do not exceed :c:expr:`domain.max_pages`.
+
+.. c:struct:: domain
+
+   .. c:member:: unsigned int global_claims
+
+      The domain's global claim, representing the number of pages claimed
+      globally for the domain.
+
+   .. c:member:: unsigned int node_claims
+
+      The total of the domain's node claims, equal to the sum of
+      :c:expr:`claims` for all nodes.
+      It is maintained for efficient checks in the allocator hot paths
+      without needing to sum over the per-node claims each time.
+
+   .. c:member:: unsigned int claims[MAX_NUMNODES]
+
+      The domain's claims for each :term:`NUMA node`, indexed by node ID.
+
+      As :c:expr:`domain` is allocated using a dedicated page for each domain,
+      this allows for efficient and fast storage with direct indexing without
+      consuming any additional memory for an additional allocation.
+
+      The page allocated for struct :c:expr:`domain` is large enough
+      to accommodate this array several times, even beyond the current
+      :c:expr:`MAX_NUMNODES` limit of 64, so it should be sufficient even
+      for future expansion of the maximum number of supported NUMA nodes
+      if needed. The allocation has a build-time assertion for safety to
+      ensure that struct :c:expr:`domain` fits within the allocated page.
+
+      The sum of these claims is stored in :c:expr:`domain.node_claims`
+      for efficient checks in the allocator hot paths which need to know
+      the total number of node claims for the :term:`domain`.
+
+   .. c:member:: unsigned int max_pages
+
+      The maximum number of pages the domain is allowed to claim, set at
+      domain creation time.
+
+   .. c:member:: rspinlock_t page_alloc_lock
+
+      Lock for checking :c:expr:`domain_tot_pages(domain)` on top of new claims
+      against :c:expr:`domain.max_pages` when installing these new claims.
+      This is a recursive spinlock to allow for nested calls into the allocator
+      while holding it, such as when redeeming claims during page allocation.
+      It is taken before :c:expr:`heap_lock` when installing claims to ensure a
+      consistent locking order and may not be taken while holding
+      :c:expr:`heap_lock` to avoid deadlocks.
+
+   .. c:member:: nodemask_t node_affinity
+
+      A :c:expr:`nodemask_t` representing the set of NUMA nodes the domain
+      is affine to. This is used for efficient checks in the allocator hot
+      paths to quickly get the set of nodes a domain is affine to for
+      memory allocation decisions.
+
+.. c:type:: nodemask_t
+
+   A bitmap representing a set of NUMA nodes, used for status information
+   like :c:expr:`node_online_map` and the :c:expr:`domain.node_affinity`
+   and to track which nodes are online and which nodes are in a domain's
+   node affinity.
+
+.. c:var:: nodemask_t node_online_map
+
+   A bitmap representing which NUMA nodes are currently online in the system.
+   This is used for validating that claims are only made for online nodes and
+   for efficient checks in the allocator hot paths to quickly determine which
+   nodes are online. Currently, Xen does not support hotplug of NUMA nodes,
+   so this is set at boot time based on the platform firmware configuration
+   and does not change at runtime.
+
+Claims Accounting Diagram
+^^^^^^^^^^^^^^^^^^^^^^^^^
+
+This diagram illustrates the claims accounting state and the invariants:
+
+.. mermaid:: invariants.mmd
+  :caption: Diagram: Claims accounting state and invariants
diff --git a/docs/designs/claims/design.rst b/docs/designs/claims/design.rst
new file mode 100644
index 000000000000..4e5841590d37
--- /dev/null
+++ b/docs/designs/claims/design.rst
@@ -0,0 +1,345 @@
+.. SPDX-License-Identifier: CC-BY-4.0
+
+#############
+Claims Design
+#############
+
+.. contents:: Table of Contents
+    :backlinks: entry
+    :local:
+
+************
+Introduction
+************
+
+Xen's page allocator supports a :term:`claims` API that allows privileged
+:term:`domain builders` to reserve an amount of available memory before
+:term:`populating` the :term:`guest physical memory` of new :term:`domains`
+they are creating, configuring and building.
+
+These reservations are called :term:`claims`. They ensure that the claimed
+memory remains available for the :term:`domains` when allocating it, even
+if other :term:`domains` are allocating memory at the same time.
+
+:term:`Installing claims` is a privileged operation performed by
+:term:`domain builders` before they populate the :term:`guest physical memory`.
+This prevents other :term:`domains` from allocating memory earmarked
+for :term:`domains` under construction. Xen maintains the per-domain
+claim state for pages that are claimed but not yet allocated.
+
+When claim installation succeeds, Xen updates the claim state to reflect
+the new targets and protects the claimed memory until it is allocated or
+the claim is released. As Xen allocates pages for the domain, claims are
+redeemed by reducing the claim state by the size of each allocation.
+
+************
+Design Goals
+************
+
+The design's primary goals are:
+
+1. Allow :term:`domain builders` to claim memory
+   on multiple :term:`NUMA nodes` using a :term:`claim set` atomically.
+
+2. Preserve the existing :c:expr:`XENMEM_claim_pages` hypercall command
+   for compatibility with existing :term:`domain builders` and its legacy
+   semantics, while introducing a new, unrestricted hypercall command for
+   new use cases such as NUMA-aware claim sets.
+
+3. Global claims are supported for compatibility with existing domain builders
+   and for use cases where a flexible claim that can be satisfied from any node
+   is desirable, such as on UMA machines or as a fallback for memory that comes
+   available on any node. This means we cannot remove or replace the legacy
+   global claim call nor the needed variables maintaining the global claim
+   state. They are still very much needed: claims are not just for NUMA use
+   cases, but for :term:`parallel domain builds` in general.
+
+   Only on UMA machines is a global claim the same as a claim on node 0,
+   but the same is not true for NUMA machines, where global claims can claim
+   more memory than any single node, and the global claim can be used as a
+   flexible fallback for claiming memory on any node, which can be useful
+   when preferred NUMA node(s) should be claimed, but may have insufficient
+   free memory at the time of claim installation, and the global claim can
+   ensure that the shortfall is available from any node.
+
+4. Use fast allocation-time claims protection in the allocator's hot paths
+   to protect claimed memory from parallel allocations from other domain
+   builders in case of parallel domain builds, and to protect claimed
+   memory from allocations from already running domains.
+
+***************
+Design Overview
+***************
+
+The legacy :ref:`XENMEM_claim_pages` hypercall is superseded by
+:c:expr:`XEN_DOMCTL_claim_memory`. This hypercall installs a :term:`claim set`.
+It is an array of :c:expr:`memory_claim_t` entries, where each entry specifies
+a page count and a target: either a specific NUMA node ID or a special selector
+(for example, a global or flexible claim).
+
+Like legacy claims, claim sets are validated and installed under
+:c:expr:`domain.page_alloc_lock` and :c:expr:`heap_lock`: Either the entire
+set is accepted, or the request fails with no side effects.  Repeated calls
+to install claims replace any existing claims for the domain rather than
+accumulating.
+
+As installing claim sets after allocations is not a supported use case,
+the legacy behaviour of subtracting existing allocations from installed
+claims is somewhat surprising and counterintuitive, and page exchanges
+make incremental per-node tracking of already-allocated pages on a per-node
+basis difficult. Therefore, claim sets do not retain the legacy behaviour of
+subtracting existing allocations, optionally on a per-node basis, from the
+installed claims across the individual claim set entries.
+
+Summary:
+
+- Legacy domain builders can continue to use the previous (now deprecated)
+  :c:expr:`XENMEM_claim_pages` hypercall command to install single-node claims
+  with the legacy semantics and, aside from improvements or fixes to global
+  claims in general, observe no changes in their behaviour.
+- Updated domain builders can take advantage of claim sets to install
+  NUMA-aware :term:`claims` on multiple :term:`NUMA nodes` and/or globally
+  in a single step.
+
+For readers following the design in order, the next sections cover the
+following topics:
+
+1. :doc:`/designs/claims/installation` explains how claim sets are installed.
+2. :doc:`/designs/claims/protection` describes how claimed memory is
+   protected during allocation.
+3. :doc:`/designs/claims/redeeming` explains how claims are redeemed as
+   allocations succeed.
+4. :doc:`/designs/claims/accounting` describes the accounting model that
+   underpins those steps.
+
+********************
+Key design decisions
+********************
+
+.. glossary::
+
+ :c:expr:`node_outstanding_claims[MAX_NUMNODES]`
+  Tracks the sum of all claims on a node. :c:expr:`get_free_buddy()` checks
+  it before scanning zones on a node, so claimed memory is protected from
+  other allocations.
+
+ :c:expr:`redeem_claims_for_allocation()`
+   When allocating memory for a domain, the page allocator redeems the
+   matching claims for this allocation, ensuring the domain's total memory
+   allocation as :c:expr:`domain_tot_pages(domain)` plus its outstanding claims
+   as :c:expr:`domain.global_claims + domain.node_claims` remain within the
+   domain's limits, defined by :c:expr:`domain.max_pages`.
+   See :doc:`redeeming` for details on redeeming claims.
+
+ :c:expr:`domain.global_claims` (formerly :c:expr:`domain.outstanding_claims`)
+  Support for :term:`global claims` is maintained for two reasons: first,
+  for compatibility with existing domain builders, and second, for use cases
+  where a flexible claim that can be satisfied from any node is desirable.
+
+  When the preferred NUMA node(s) for a domain do not have sufficient free
+  memory to satisfy the domain's memory requirements, global claims provide
+  a flexible fallback for the memory shortfall from the preferred node(s) that
+  can be satisfied from any available node.
+
+  In this case, :term:`domain builders` can exploit a combination of passing
+  the preferred node to :c:expr:`xc_domain_populate_physmap()` and
+  :term:`NUMA node affinity` to steer allocations towards the preferred NUMA
+  node(s), while letting the global claim ensure that the shortfall is
+  available.
+
+  This allows the domain builder to define a set of desired NUMA nodes to
+  allocate from and even specify which nodes to prefer for an allocation,
+  but the claim for the shortfall is flexible, not specific to any node.
+
+*********
+Non-goals
+*********
+
+Using per-node allocator data
+=============================
+
+Some data structures could be moved into the per-node allocator data
+allocated by `init_node_heap()`, to avoid bouncing those data structures
+between nodes, but that would not eliminate the need to take the global
+:c:expr:`heap_lock`, which is still needed to protect the allocator's
+internal state during allocation and deallocation.
+
+The synchronisation point for taking the global :c:expr:`heap_lock` is
+the main point of contention during allocation, freeing and scrubbing
+pages. The overhead of accessing the per-node claims accounting data
+is expected to be minimal.
+
+However, we aim move that data into the per-node allocator data in the
+future to reduce the need to bounce those data structures between nodes.
+
+Legacy behaviours
+=================
+
+Installing claims is a privileged operation performed by domain builders
+before they populate guest memory. As such, tracking previous allocations
+is not in scope for claims.
+
+For the following reasons, claim sets do not retain the legacy behaviour
+of subtracting existing allocations from installed claims:
+
+- Xen does not currently maintain a ``d->node_tot_pages[node]`` count,
+  and the hypercall to exchange extents of memory with new memory makes
+  such accounting relatively complicated.
+
+- The legacy behaviour is somewhat surprising and counterintuitive.
+  Because installing claims after allocations is not a supported use case,
+  subtracting existing allocations at installation time is unnecessary.
+
+- Claim sets are a new API and can provide more intuitive semantics
+  without subtracting existing allocations from installed claims. This
+  also simplifies the implementation and makes it easier to maintain.
+
+Versioned hypercall
+===================
+
+The :term:`domain builders` using the :c:expr:`XEN_DOMCTL_claim_memory`
+hypercall also need to use other version-controlled hypercalls which
+are wrapped through the :term:`libxenctrl` library.
+
+Wrapping this call in :term:`libxenctrl` is therefore a practical approach;
+otherwise, we would have a mix of version-controlled and unversioned hypercalls,
+which could be confusing for API users and for future maintenance. From the
+domain builders' viewpoint, it is more consistent to expose the claims
+hypercall in the same way as the other calls they use.
+
+Stable interfaces also have drawbacks: with stable syscalls, Linux needs
+to maintain the old interface indefinitely, which can be a maintenance burden
+and can limit the ability to make improvements or changes to the interface
+in the future. Linux carries many system call successor families, e.g., oldstat,
+stat, newstat, stat64, fstatat, statx, with similar examples including openat,
+openat2, clone3, dup3, waitid, mmap2, epoll_create1, pselect6 and many more.
+Glibc hides that complexity from users by providing a consistent API, but it
+still needs to maintain the old system calls for compatibility.
+
+In contrast, versioned hypercalls allow for more flexibility and evolution of
+the API while still providing a clear path to adopt new features. The reserved
+fields and reserved bits in the structures of this hypercall allow for many
+future extensions without breaking existing callers.
+
+********
+Glossary
+********
+
+.. glossary::
+
+ claims
+  Reservations of memory for :term:`domains` that are installed by
+  :term:`domain builders` before :term:`populating` the domain's memory.
+  Claims ensure that the reserved memory remains available for the
+  :term:`domains` when allocating it, even if other :term:`domains` are
+  allocating memory at the same time.
+
+ claim set
+  An array of :c:expr:`memory_claim_t` entries, each specifying a page count
+  and a target (either a NUMA node ID or a special value for global claims),
+  that can be installed atomically for a domain to reserve memory on multiple
+  NUMA nodes. The chapter on :ref:`designs/claims/installation:claim sets`
+  provides further information on the structure and semantics of claim sets.
+
+ claim set installation
+ installing claim sets
+ installing claims
+  The process of validating and installing a claim set for a domain under
+  :c:expr:`domain.page_alloc_lock` and :c:expr:`heap_lock`, ensuring that
+  either the entire set is accepted and installed, or the request fails with
+  no side effects.
+  The chapter on :ref:`designs/claims/installation:claim set installation`
+  provides further information on the structure and semantics of claim sets.
+
+ domain builders
+  Privileged entities (such as :term:`toolstacks` in management :term:`domains`)
+  responsible for constructing and configuring :term:`domains`, including
+  installing :term:`claims`, :term:`populating` memory, and setting up other
+  resources before the :term:`domains` are started.
+
+ domains
+  Virtual machine instances managed by Xen, built by :term:`domain builders`.
+
+ global claims
+  :term:`claims` that can be satisfied from any NUMA node, required for
+  compatibility with existing domain builders and for use cases where
+  strict node-local placement is not required or not possible, such as on
+  UMA machines or as a fallback for memory that comes available on any node.
+
+ libxenctrl
+  A library used by :term:`domain builders` running in privileged
+  :term:`domains` to interact with the hypervisor, including making
+  hypercalls to install claims and populate memory.
+
+ libxenguest
+  A library used by :term:`domain builders` running in privileged
+  :term:`domains` to interact with the hypervisor, including making
+  hypercalls to install claims and populate memory.
+
+ meminit
+  The phase of a domain build where the guest's physical memory is populated,
+  which involves allocating and mapping physical memory for the domain's guest
+  :term:`physmap`. This should be performed after installing :term:`claims`
+  to protect the process against parallel allocations of other domain builder
+  processes in case of parallel domain builds.
+
+  It is implemented in :term:`libxenguest` and optionally installs
+  :term:`claims` to ensure the claimed memory is reserved before populating
+  the :term:`physmap` using calls to :c:expr:`xc_domain_populate_physmap()`.
+
+ nodemask
+  A bitmap representing a set of NUMA nodes, used for status information
+  like :c:expr:`node_online_map` and the :c:expr:`domain.node_affinity`.
+
+ node
+ NUMA node
+ NUMA nodes
+  A grouping of CPUs and memory in a NUMA architecture. NUMA nodes have
+  varying access latencies to memory, and NUMA-aware claims allow
+  :term:`domain builders` to reserve memory on specific NUMA nodes
+  for performance reasons. Platform firmware configures what constitutes
+  a NUMA node, and Xen relies on that configuration for NUMA-related features.
+
+  When this design refers to NUMA nodes, it is referring to the NUMA nodes
+  as defined by the platform firmware and exposed to Xen, initialized at boot
+  time and not changing at runtime (so far).
+
+  The NUMA node ID is a numeric identifier for a NUMA node, used whenever code
+  specifies a NUMA node, such as the target of a claim or indexing into arrays
+  related to NUMA nodes.
+
+  NUMA node IDs start at 0 and are less than :c:expr:`MAX_NUMNODES`.
+
+  Some NUMA nodes may be offline, and the :c:expr:`node_online_map` is used
+  to track which nodes are online. Currently, Xen does not support hotplug
+  of NUMA nodes, so the set of online NUMA nodes is determined at boot time
+  based on the platform firmware configuration and does not change at runtime.
+
+ NUMA node affinity
+  The preference of a :term:`domain` for a set of NUMA nodes, which can be used
+  by :term:`domain builders` to guide memory allocation even when not forcing
+  the buddy allocator to only consider (or prefer) a specific node when
+  allocating memory, but even a set of preferred NUMA nodes.
+
+  By default, domains have NUMA node auto-affinity, which means their NUMA
+  node affinity is determined automatically by the hypervisor based on the
+  CPU affinity of their vCPUs, but it can be disabled and configured.
+
+ guest physical memory
+ physmap
+  The mapping of a domain's guest physical memory to the host's
+  machine address space. The :term:`physmap` defines how the guest's
+  physical memory corresponds to the actual memory locations on the host.
+
+ populating
+  The process of allocating and mapping physical memory for a domain's guest
+  :term:`physmap`, performed by the :term:`domain builders`, preferably after
+  installing :term:`claims` to protect the process against parallel allocations
+  of other domain builder processes in case of parallel domain builds.
+
+ toolstacks
+  Privileged entities (running in privileged :term:`domains`) responsible for
+  managing :term:`domains`, including building, configuring, and controlling
+  their lifecycle using :term:`domain builders`. One toolstack may run
+  multiple :term:`domain builders` in parallel to build multiple :term:`domains`
+  at the same time.
diff --git a/docs/designs/claims/edge-cases.rst b/docs/designs/claims/edge-cases.rst
new file mode 100644
index 000000000000..cfb37ef24259
--- /dev/null
+++ b/docs/designs/claims/edge-cases.rst
@@ -0,0 +1,24 @@
+.. SPDX-License-Identifier: CC-BY-4.0
+
+Handling Edge Cases
+-------------------
+
+Allocations exceeding claims
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+When an allocation exceeds the domain's claims, the allocator must check
+whether unclaimed memory can satisfy the remainder of the request before
+rejecting the allocation.
+
+Previously, if a domain's remaining claim did not fully cover a request,
+the allocator rejected the allocation even when enough unclaimed memory
+existed to satisfy it.
+
+This forced the :term:`meminit` API to fall back from ``1G`` pages to ``2M``
+and eventually to ``4K`` pages, reducing performance due to higher TLB
+pressure and increased page bookkeeping.
+
+Supporting the use of unclaimed memory to satisfy the remainder of the
+request in such cases lets builders continue to use large pages when the
+combination of claims and unclaimed memory allows it, possibly improving
+runtime performance in such scenarios.
diff --git a/docs/designs/claims/history.rst b/docs/designs/claims/history.rst
new file mode 100644
index 000000000000..e0b6cddc8d89
--- /dev/null
+++ b/docs/designs/claims/history.rst
@@ -0,0 +1,82 @@
+.. SPDX-License-Identifier: CC-BY-4.0
+
+*******************
+Development History
+*******************
+
+.. note:: This section provides historical context on the development of
+   NUMA-aware claims, including previous implementations and feedback received,
+   to give a better understanding of the design decisions made in the current
+   implementation.
+
+The initial `implementation of single-node claims <v1_>`_ (by Alejandro Vallejo)
+introduced node-exact claims, allowing :term:`domain builders` to claim memory
+on one :term:`NUMA node`. It passed a NUMA node in the node bits of the
+:c:expr:`xen_memory_reservation.mem_flags`
+field of the pre-existing claims hypercall :ref:`XENMEM_claim_pages` and, by
+adding the flag ``d->claim_node`` and updating it to the passed node, defined
+the target of the claim as either the specified NUMA node or global memory.
+
+.. sidebar:: Feedback and suggestions for multi-node claim sets
+
+   The initial implementations of single-node claims received feedback from the
+   community, with multiple suggestions to extend the API to support `multi-node
+   claim sets <v1m_>`_. This feedback highlighted the need for a more flexible
+   and extensible design that could accommodate claims on multiple NUMA nodes.
+
+This design was relatively simple and allowed for a quick implementation of
+single-node claims, but it had limitations in terms of flexibility and future
+extensibility.
+
+The `v2 series added a hypercall API for multi-node claims <v2_>`_, opening the
+door to future multi-node claim sets and further work in that direction.
+
+The `v3 series refactored and improved the implementation <v3_>`_, protecting
+claimed memory against parallel allocations by other domain builders.
+
+Between v3 and v4, `Roger Pau Monné and Andrew Cooper developed and merged
+several critical fixes <fix1_>`_ for Xen's overall claims implementation.
+These fixes also allowed Roger to improve the implementation for redeeming
+claims during domain memory allocation. In turn, this enabled a
+fully working implementation that protected claimed memory against parallel
+allocations by other domain builders.
+
+With the `v4 series <v4_>`_, we submitted the combined work that completed the
+fixes for protecting claimed memory on NUMA nodes. The review process indicated
+that supporting multiple claim sets would require a `redesign <v4-03_>`_ of
+claim installation and management, which led to this design document.
+
+Acknowledgements
+----------------
+
+The claim sets design builds on the single-node claims implementation
+described above and the feedback it generated. The following people
+should be acknowledged for their contributions:
+
+- *Alejandro Vallejo* for initiating the single-node NUMA claims series.
+- *Roger Pau Monné* for merging critical fixes and proposing the initial
+  multi-node claim-sets specification that inspired this design.
+- *Andrew Cooper* for integrating and validating the work internally,
+  helping to stabilise and productise the single-node implementation.
+- *Jan Beulich* for providing reviews that led to many improvements.
+- *Bernhard Kaindl* for maintaining the single-node series, initiating
+  the multi-node implementation and authoring this design document.
+- *Marcus Granado* and *Edwin Török* for contributing design input,
+  providing guidance, debugging and testing of single-node implementations.
+
+.. _fix1:
+   https://lists.xenproject.org/archives/html/xen-devel/2026-01/msg00164.html
+
+.. _v1:
+   https://patchew.org/Xen/20250314172502.53498-1-alejandro.vallejo@cloud.com/
+.. _v1m:
+   https://lists.xenproject.org/archives/html/xen-devel/2025-06/msg00484.html
+.. _v2:
+   https://lists.xen.org/archives/html/xen-devel/2025-08/msg01076.html
+.. _v3:
+   https://patchew.org/Xen/cover.1757261045.git.bernhard.kaindl@cloud.com/
+.. _v4:
+    https://lists.xenproject.org/archives/html/xen-devel/2026-02/msg01387.html
+.. _v4-03: https://patchwork.kernel.org/project/xen-devel/
+   patch/6927e45bf7c2ce56b8849c16a2024edb86034358.1772098423
+   .git.bernhard.kaindl@citrix.com/
diff --git a/docs/designs/claims/implementation.rst b/docs/designs/claims/implementation.rst
new file mode 100644
index 000000000000..518932599333
--- /dev/null
+++ b/docs/designs/claims/implementation.rst
@@ -0,0 +1,492 @@
+.. SPDX-License-Identifier: CC-BY-4.0
+
+#####################
+Claims Implementation
+#####################
+
+.. contents:: Table of Contents
+    :backlinks: entry
+    :local:
+
+.. note:: This part describes implementation details of claims and their
+    interaction with memory allocation in Xen. It covers the functions and
+    data structures involved in :term:`installing claims`, allocating memory
+    with :term:`claims`, and handling related edge cases.
+
+Functions related to the implementation of claims and their interaction
+with memory allocation.
+
+**********************
+Installation of claims
+**********************
+
+This section describes the functions and data structures involved
+in :term:`installing claims` for domains and the internal functions for
+validating and installing claim sets.
+
+xc_domain_claim_memory()
+------------------------
+
+.. c:function:: int xc_domain_claim_memory(xc_interface *xch, \
+                                           uint32_t domid, \
+                                           uint32_t nr_claims, \
+                                           memory_claim_t *claims)
+
+    :param xch:       The libxenctrl interface to use for the hypercall
+    :param domid:     The ID of the domain for which to install the claim set
+    :param nr_claims: The number of claims in the claim set
+    :param claims:    The claim set to install for the domain
+    :type xch:        xc_interface *
+    :type domid:      uint32_t
+    :type nr_claims:  uint32_t
+    :type claims:     memory_claim_t *
+    :returns:         0 on success, or a negative error code on failure.
+
+    Wrapper for :c:expr:`XEN_DOMCTL_claim_memory` to install
+    :ref:`claim sets <designs/claims/installation:claim sets>` for a domain.
+
+domain_set_outstanding_pages()
+------------------------------
+
+.. c:function:: int domain_set_outstanding_pages(struct domain *d, \
+                                                 unsigned long pages)
+
+    :param d:     The domain for which to set the outstanding claims
+    :param pages: The number of pages to claim globally for the domain
+    :type d:      struct domain *
+    :type pages:  unsigned long
+    :returns: 0 on success, or a negative error code on failure.
+
+    Handles claim installation for :c:expr:`XENMEM_claim_pages` and
+    :c:expr:`XEN_DOMCTL_claim_memory` with
+    :c:expr:`XEN_DOMCTL_CLAIM_MEMORY_LEGACY` by setting the domain's
+    :term:`global claims` to the specified number of pages. It calculates
+    the claims as the requested pages minus the domain's total pages.
+    When :c:expr:`pages == 0`, it clears the claims of the domain.
+
+domain_set_node_claims()
+------------------------
+
+.. c:function:: int domain_set_node_claims(struct domain *d, \
+                                           unsigned int nr_claims, \
+                                           memory_claim_t *claims)
+
+    :param d: The domain for which to set the node claims
+    :param nr_claims: The number of claims in the claim set
+    :param claims: The claim set to install for the domain
+    :type claims: memory_claim_t *
+    :type d: struct domain *
+    :type nr_claims: unsigned int
+    :returns: 0 on success, or a negative error code on failure.
+
+    Handles :term:`installing claim sets`. It performs the validation
+    of the :term:`claim set` and updates the domain's claims accordingly.
+
+    The function works in four phases:
+
+     1. Validating claim entries and checking node-local availability
+     2. Validating total claims and checking global availability
+     3. Resetting any current claims of the domain
+     4. Installing the claim set as the domain's claiming state
+
+    Phase 1 checks claim entries for validity and memory availability:
+
+     1. Target must be :c:expr:`XEN_DOMCTL_CLAIM_MEMORY_GLOBAL` or a node.
+     2. Each target node may only appear once in the claim set.
+     3. For node-local claims, requested pages must not exceed the available
+        memory on that node after accounting for existing claims.
+     4. The explicit padding field must be zero for forward compatibility.
+
+    Phase 2 checks:
+
+     1. The sum of claims must not exceed globally available memory.
+     2. The claims must not exceed the :c:expr:`domain.max_pages` limit.
+        See :doc:`accounting` and :doc:`redeeming` for the accounting
+        checks that enforce the domain's :c:expr:`domain.max_pages` limit.
+
+************************************
+Helper functions for managing claims
+************************************
+
+- :c:expr:`deduct_global_claims()` to reduce global claims.
+- :c:expr:`deduct_node_claims()` to reduce node-local claims.
+- :c:expr:`cancel_all_node_claims()` to cancel all node claims of a domain.
+
+deduct_global_claims()
+----------------------
+
+.. c:function:: unsigned long deduct_global_claims(struct domain *d, \
+                                                   unsigned long \
+                                                   pages_to_deduct)
+
+    :param d: The domain for which to deduct the global claims
+    :param pages_to_deduct: The number of pages to deduct
+    :type d: struct domain *
+    :type pages_to_deduct: unsigned long
+    :returns: The number of pages actually deducted from the global claim.
+
+    This function deducts the specified number of globally claimed pages
+    and updates the global outstanding totals accordingly.
+
+deduct_node_claims()
+--------------------
+
+.. c:function:: unsigned long deduct_node_claims(struct domain *d, \
+                                                 nodeid_t node, \
+                                                 unsigned long pages_to_deduct)
+
+    :param d: The domain for which to deduct the node claim
+    :param node: The node for which to deduct the claim
+    :param pages_to_deduct: The number of pages to deduct from the claim
+    :type d: struct domain *
+    :type node: nodeid_t
+    :type pages_to_deduct: unsigned long
+    :returns: The number of pages actually deducted from the claim
+
+    This function deducts a specified number of pages from a domain's
+    claim on a specific node. It limits the deduction to the number of
+    pages actually claimed by the domain on that node and updates the
+    node-local claims currently held by the domain on that node,
+    and it updates the global and node-level claim state accordingly.
+
+cancel_all_node_claims()
+------------------------
+
+.. c:function:: void cancel_all_node_claims(struct domain *d)
+
+    :param d: The domain for which to release all node-specific claims.
+    :type d: struct domain *
+
+    This function is used by
+    :ref:`designs/claims/implementation:domain_set_outstanding_pages()`
+    to release all node-specific claims of the domain's claiming state.
+
+**********************
+Allocation with claims
+**********************
+
+The functions below play a key role in allocating memory for domains.
+
+xc_domain_populate_physmap()
+----------------------------
+
+ .. c:function:: int xc_domain_populate_physmap(xc_interface *xch, \
+                                           uint32_t domid, \
+                                           unsigned long nr_extents, \
+                                           unsigned int extent_order, \
+                                           unsigned int mem_flags, \
+                                           xen_pfn_t *extent_start)
+
+    :param xch: The :term:`libxenctrl` interface
+    :param domid: The ID of the domain
+    :param nr_extents: Number of extents
+    :param extent_order: Order of the extents
+    :param mem_flags: Allocation flags
+    :param extent_start: Starting PFN
+    :type xch: xc_interface *
+    :type domid: uint32_t
+    :type nr_extents: unsigned long
+    :type extent_order: unsigned int
+    :type mem_flags: unsigned int
+    :type extent_start: xen_pfn_t *
+    :returns: 0 on success, or a negative error code on failure.
+
+    This function is a wrapper for the ``XENMEM_populate_physmap`` hypercall,
+    which is handled by the :c:expr:`populate_physmap()` function in the
+    hypervisor. It is used by :term:`libxenguest` for populating the
+    :term:`guest physical memory` of a domain. :term:`domain builders` can
+    set the :term:`NUMA node affinity` and pass the preferred node to this
+    function to steer allocations towards the preferred NUMA node(s) and let
+    :term:`claims` ensure that the memory will be available even in cases
+    of :term:`parallel domain builds` where multiple domains are being built
+    at the same time.
+
+
+populate_physmap()
+------------------
+
+The :term:`meminit` API calls :c:expr:`xc_domain_populate_physmap()`
+for populating the :term:`guest physical memory`. It invokes the restartable
+``XENMEM_populate_physmap`` hypercall implemented by
+:c:expr:`populate_physmap()`.
+
+.. c:function:: void populate_physmap(struct memop_args *a)
+
+    :param a: Provides status and hypercall restart info
+    :type a: struct memop_args *
+
+    Allocates memory for building a domain and uses it for populating the
+    :term:`physmap`. For allocation, it uses
+    :c:expr:`alloc_domheap_pages()`, which forwards the request to
+    :c:expr:`alloc_heap_pages()`.
+
+    During domain creation, it adds the ``MEMF_no_scrub`` flag to the request
+    for populating the :term:`physmap` to optimize domain startup by allowing
+    the use of unscrubbed pages.
+
+    When that happens, it scrubs the pages as needed using hypercall
+    continuation to avoid long hypercall latency and watchdog timeouts.
+
+    Domain builders can optimise on-demand scrubbing by running
+    :term:`physmap` population pinned to the domain's NUMA node,
+    keeping scrubbing local and avoiding cross-node traffic.
+
+alloc_heap_pages()
+------------------
+
+.. c:function:: struct page_info *alloc_heap_pages(unsigned int zone_lo, \
+                                                   unsigned int zone_hi, \
+                                                   unsigned int order, \
+                                                   unsigned int memflags, \
+                                                   struct domain *d)
+
+    :param zone_lo: The lowest zone index to consider for allocation
+    :param zone_hi: The highest zone index to consider for allocation
+    :param order: The order of the pages to allocate (2^order pages)
+    :param memflags: Memory allocation flags that may affect the allocation
+    :param d: The domain for which to allocate memory or NULL
+    :type zone_lo: unsigned int
+    :type zone_hi: unsigned int
+    :type order: unsigned int
+    :type memflags: unsigned int
+    :type d: struct domain *
+    :returns: The allocated page_info structure, or NULL on failure
+
+    This function allocates a contiguous block of pages from the heap.
+    It checks claims and available memory before attempting the
+    allocation. On success, it updates relevant counters and redeems
+    claims as necessary.
+
+    It first checks whether the request can be satisfied given the domain's
+    claims and available memory using :c:expr:`claims_permit_request()`.
+    If claims and availability permit the request, it calls
+    :c:expr:`get_free_buddy()` to find a suitable block of free pages
+    while respecting node and zone constraints.
+
+    If ``MEMF_no_scrub`` is allowed, it may return unscrubbed pages. When that
+    happens, :c:expr:`populate_physmap()` scrubs them if needed with hypercall
+    continuation to avoid long hypercall latency and watchdog timeouts.
+
+    Simplified pseudo-code of its logic:
+.. code:: C
+
+    struct page_info *alloc_heap_pages(unsigned int zone_lo,
+                                       unsigned int zone_hi,
+                                       unsigned int order,
+                                       unsigned int memflags,
+                                       struct domain *d) {
+        /* Check whether claims and available memory permit the request.
+         * `avail_pages` and `claims` are placeholders for the appropriate
+         * global or node-local availability/counts used by the real code. */
+        if (!claims_permit_request(d, avail_pages, claims, memflags,
+                                   1UL << order, NUMA_NO_NODE))
+            return NULL;
+
+        /* Find a suitable buddy block. Pass the zone range, order and
+         * memflags so the helper can apply node and zone selection. */
+        pg = get_free_buddy(zone_lo, zone_hi, order, memflags, d);
+        if (!pg)
+            return NULL;
+
+        redeem_claims_for_allocation(d, 1UL << order, node_of(pg));
+        update_counters_and_stats(d, order);
+        if (pg_has_dirty_pages(pg))
+            scrub_dirty_pages(pg);
+        return pg;
+    }
+
+get_free_buddy()
+----------------
+
+.. c:function:: struct page_info *get_free_buddy(unsigned int zone_lo, \
+                                                 unsigned int zone_hi, \
+                                                 unsigned int order, \
+                                                 unsigned int memflags, \
+                                                 const struct domain *d)
+
+    :param zone_lo: The lowest zone index to consider for allocation
+    :param zone_hi: The highest zone index to consider for allocation
+    :param order: The order of the pages to allocate (2^order pages)
+    :param memflags: Flags for conducting the allocation
+    :param d: domain to allocate memory for or NULL
+    :type zone_lo: unsigned int
+    :type zone_hi: unsigned int
+    :type order: unsigned int
+    :type memflags: unsigned int
+    :type d: struct domain *
+    :returns: The allocated page_info structure, or NULL on failure
+
+    This function finds a suitable block of free pages in the buddy
+    allocator while respecting claims and node-level available memory.
+
+    Called by :c:expr:`alloc_heap_pages()` after verifying the request is
+    permissible, it iterates over nodes and zones to find a buddy block
+    that satisfies the request. It checks node-local claims before
+    attempting allocation from a node.
+
+    Using :c:expr:`claims_permit_request()`, it checks whether the node
+    has enough unclaimed memory to satisfy the request or whether the
+    domain's claims can permit the request on that node after accounting
+    for outstanding claims.
+
+    If the node can satisfy the request, it searches for a suitable block
+    in the specified zones. If found, it returns the block; otherwise it
+    tries the next node until all online nodes are exhausted.
+
+    Simplified pseudo-code of its logic:
+.. code:: C
+
+    /*
+     * preferred_node_or_next_node() represents the policy to first try the
+     * preferred/requested node then fall back to other online nodes.
+     */
+    struct page_info *get_free_buddy(unsigned int zone_lo,
+                                     unsigned int zone_hi,
+                                     unsigned int order,
+                                     unsigned int memflags,
+                                     const struct domain *d) {
+        nodeid_t request_node = MEMF_get_node(memflags);
+
+        /*
+         * Iterate over candidate nodes: start with preferred node (if any),
+         * then try other online nodes according to the normal placement policy.
+         */
+        while (there are more nodes to try) {
+            nodeid_t node = preferred_node_or_next_node(request_node);
+            if (!node_allocatable_request(d, node_avail_pages[node],
+                                          node_outstanding_claims[node],
+                                          memflags, 1UL << order, node))
+                goto try_next_node;
+
+            /* Find a zone on this node with a suitable buddy */
+            for (int zone = highest_zone; zone >= lowest_zone; zone--)
+                for (int j = order; j <= MAX_ORDER; j++)
+                    if ((pg = remove_head(&heap(node, zone, j))) != NULL)
+                        return pg;
+         try_next_node:
+            if (request_node != NUMA_NO_NODE && (memflags & MEMF_exact_node))
+                return NULL;
+            /* Fall back to the next node and repeat. */
+        }
+        return NULL;
+    }
+
+*******************************************
+Helper functions for allocation with claims
+*******************************************
+
+For allocating memory while respecting claims, :c:expr:`alloc_heap_pages()`
+and :c:expr:`get_free_buddy()` use :c:expr:`claims_permit_request()` to
+check whether the claims permit the request before attempting allocation.
+
+If permitted, the allocation proceeds, and after success,
+:c:expr:`redeem_claims_for_allocation()` redeems the claims for the allocation
+based on the domain's claiming state and the node of the allocation.
+
+See :ref:`designs/claims/design:Key design decisions` for the
+rationale behind this design and the accounting checks that enforce
+the :c:expr:`domain.max_pages` limit during allocation with claims.
+
+claims_permit_request()
+-----------------------
+
+.. c:function:: bool claims_permit_request(const struct domain *d, \
+                                           unsigned long avail_pages, \
+                                           unsigned long claims, \
+                                           unsigned int memflags, \
+                                           unsigned long request, \
+                                           nodeid_t node)
+
+    :param d: domain for which to check
+    :param avail_pages: pages available globally or on node
+    :param claims: outstanding claims globally or on node
+    :param memflags: memory allocation flags for the request
+    :param request: pages requested for allocation
+    :param node: node of the request or NUMA_NO_NODE for global
+    :type d: const struct domain *
+    :type avail_pages: unsigned long
+    :type claims: unsigned long
+    :type memflags: unsigned int
+    :type request: unsigned long
+    :type node: nodeid_t
+    :returns: true if claims and available memory permit the request, \
+              false otherwise.
+
+    This function checks whether a memory allocation request can be
+    satisfied given the current state of available memory and outstanding
+    claims for the domain. It calculates the amount of unclaimed memory
+    and determines whether it is sufficient to satisfy the request.
+
+    If unclaimed memory is insufficient, it checks if the domain's claims
+    can cover the shortfall, taking into account whether the request is
+    node-specific or global.
+
+redeem_claims_for_allocation()
+------------------------------
+
+.. c:function:: void redeem_claims_for_allocation(struct domain *d, \
+                                                  unsigned long allocation, \
+                                                  nodeid_t alloc_node)
+
+    :param d: The domain for which to redeem claims
+    :param allocation: The number of pages allocated
+    :param alloc_node: The node on which the allocation was made
+    :type d: struct domain *
+    :type allocation: unsigned long
+    :type alloc_node: nodeid_t
+
+    See :doc:`redeeming` for details on redeeming claims after allocation.
+
+**************************************
+Offlining memory in presence of claims
+**************************************
+
+When offlining pages, Xen must ensure that available memory on a node or
+globally does not fall below outstanding claims. If it does, Xen recalls
+claims from domains until accounting is valid again.
+
+This is triggered by privileged domains via the
+``XEN_SYSCTL_page_offline_op`` sysctl or by machine-check memory errors.
+
+Offlining currently allocated pages does not immediately reduce available
+memory: pages are marked offlining and become offline only when freed.
+Pages marked offlining will not become available again, so this does not
+affect claim invariants.
+
+However, when already free pages are offlined, free memory can drop
+below outstanding claims; in that case the offlining process calls
+:c:expr:`reserve_offlined_page()` to offline the page.
+
+It checks whether offlining the page would cause available memory on the
+page's node, or globally, to fall below the respective outstanding claims:
+
+- When
+  :c:expr:`node_outstanding_claims[offline_node]` exceeds
+  :c:expr:`node_avail_pages[offline_node]` for the node of the offlined page,
+  :c:expr:`reserve_offlined_page()` calls :c:expr:`deduct_node_claims()`
+  to recall claims on that node from domains with claims on the node of the
+  offlined buddy until the claim accounting of the node is valid again.
+
+- When total :c:expr:`outstanding_claims` exceeds :c:expr:`total_avail_pages`,
+  :c:expr:`reserve_offlined_page()` calls :c:expr:`deduct_global_claims()` to
+  recall global claims from domains with global claims until global accounting
+  is valid again.
+
+This can violate claim guarantees, but it is necessary to maintain system
+stability when memory must be offlined.
+
+reserve_offlined_page()
+-----------------------
+
+.. c:function:: int reserve_offlined_page(struct page_info *head)
+
+    :param head: The page being offlined
+    :type head: struct page_info *
+    :returns: 0 on success, or a negative error code on failure.
+
+    This function is called during the offlining process to offline pages.
+
+    If offlining a page causes available memory to fall below outstanding
+    claims, it checks the node and global claim accounting and recalls
+    claims from domains as necessary to ensure accounting invariants hold
+    after a buddy is offlined.
diff --git a/docs/designs/claims/index.rst b/docs/designs/claims/index.rst
new file mode 100644
index 000000000000..2c9ef414b017
--- /dev/null
+++ b/docs/designs/claims/index.rst
@@ -0,0 +1,43 @@
+.. SPDX-License-Identifier: CC-BY-4.0
+
+NUMA-aware Claim Sets
+=====================
+
+Design and implementation of NUMA-aware claim sets.
+
+Status: Draft for review
+
+This design first introduces the external behaviour of claim sets: how claims
+are installed, how they protect allocations, and how they are redeemed.
+It then covers the underlying accounting model and implementation details.
+
+For readers following the design in order, the next sections cover the
+following topics:
+
+1. :doc:`/designs/claims/usecases` describes the use cases for claim sets.
+2. :doc:`/designs/claims/history` provides the development's historical context
+3. :doc:`/designs/claims/design` introduces the overall model and goals.
+4. :doc:`/designs/claims/installation` explains how claim sets are installed.
+5. :doc:`/designs/claims/protection` describes how claimed memory is
+   protected during allocation.
+6. :doc:`/designs/claims/redeeming` explains how claims are redeemed as
+   allocations succeed.
+7. :doc:`/designs/claims/accounting` describes the accounting model that
+   underpins those steps.
+
+.. toctree:: :caption: Contents
+   :maxdepth: 2
+
+   usecases
+   history
+   design
+   installation
+   protection
+   redeeming
+   accounting
+   implementation
+   edge-cases
+
+.. contents::
+    :backlinks: entry
+    :local:
diff --git a/docs/designs/claims/installation.rst b/docs/designs/claims/installation.rst
new file mode 100644
index 000000000000..29ab43589fe8
--- /dev/null
+++ b/docs/designs/claims/installation.rst
@@ -0,0 +1,122 @@
+.. SPDX-License-Identifier: CC-BY-4.0
+
+########################
+Claim Installation Paths
+########################
+
+**********
+Claim sets
+**********
+
+A claim set is an array of :c:expr:`memory_claim_t` entries, each specifying
+a page count and a target.  Targets are either a NUMA node ID, or one of two
+special values:
+
+.. c:macro:: XEN_DOMCTL_CLAIM_MEMORY_GLOBAL
+
+   Value for the :c:expr:`xen_memory_claim.target` field of a claim set entry
+   to specify a global claim satisfied from any node, useful when strict
+   per-node placement is not required or as a fallback for memory that
+   may be populated on any node.
+
+   These claims are redeemed on allocation only when the allocation node's
+   claims are exhausted, so they provide a way to claim memory when the
+   available memory on the allocation nodes is not fully sufficient to
+   satisfy the domain's needs, but the global pool has sufficient free
+   memory to cover the shortfall and the domain can tolerate some fallback
+   to non-preferred nodes without selecting a specific node for the fallback.
+
+   Supported by :c:expr:`XEN_DOMCTL_claim_memory` but not the legacy claim path.
+
+.. c:macro:: XEN_DOMCTL_CLAIM_MEMORY_LEGACY
+
+   This is a special selector for :c:expr:`xen_memory_claim.target` that can
+   only be used in a single-entry claim set to indicate that the claim set
+   should be processed by the legacy claim installation logic. It is not a
+   valid target for regular claims and is not supported for multi-entry
+   claim sets and is only used for backward compatibility and is not
+   intended for use in new code.
+
+.. note:: The legacy path is deprecated. Use :c:expr:`XEN_DOMCTL_claim_memory`
+   with :c:expr:`XEN_DOMCTL_CLAIM_MEMORY_GLOBAL` for global claims in new
+   code instead of :c:expr:`XEN_DOMCTL_CLAIM_MEMORY_LEGACY`.
+
+.. c:type:: memory_claim_t
+
+   Typedef for :c:expr:`xen_memory_claim`,
+   the structure for passing claim sets to the hypervisor.
+
+.. c:struct:: xen_memory_claim
+
+   Underlying structure for passing claim sets to the hypervisor.
+
+   This structure represents an individual claim entry in a claim set.
+   It specifies the number of pages claimed and the target of the claim,
+   which can be a specific NUMA node or a special value for global claims.
+
+   The structure includes padding for future expansion, and it is important
+   to zero-initialise it or use designated initializers to ensure forward
+   compatibility. Members are as follows:
+
+   .. c:member:: uint64_aligned_t pages
+
+      Number of pages for this claim entry.
+
+   .. c:member:: uint32_t target
+
+      The target of the claim, which can be a specific NUMA node
+      or a special selector to steer the claim to the global pool
+      or to invoke the legacy claim path.
+      Valid values are either a node ID in the range of valid NUMA nodes, or:
+
+      :c:expr:`XEN_DOMCTL_CLAIM_MEMORY_GLOBAL` for a global claim, or
+      :c:expr:`XEN_DOMCTL_CLAIM_MEMORY_LEGACY` for the legacy claim path.
+
+   .. c:member:: uint32_t pad
+
+      Reserved for future use, must be 0 for forward compatibility.
+
+.. c:type:: uint64_aligned_t
+
+   64-bit unsigned integer type with alignment requirements suitable for
+   representing page counts in the claim structure.
+
+**********************
+Claim set installation
+**********************
+
+Claim set installation is invoked via :c:expr:`XEN_DOMCTL_claim_memory` and
+:ref:`designs/claims/implementation:domain_set_node_claims()` implements
+the claim set installation logic.
+
+Claim sets using
+:c:expr:`XEN_DOMCTL_CLAIM_MEMORY_LEGACY` are dispatched to
+:ref:`designs/claims/implementation:domain_set_outstanding_pages()`
+for the legacy claim installation logic.
+
+See :doc:`accounting` for details on the claims accounting state.
+
+*************************
+Legacy claim installation
+*************************
+
+.. note:: The legacy path is deprecated.
+   Use :c:expr:`XEN_DOMCTL_claim_memory` for new code.
+
+Legacy claims are set via the :ref:`XENMEM_claim_pages` command,
+implemented by
+:ref:`designs/claims/implementation:domain_set_outstanding_pages()`
+with the following semantics:
+
+- The request contains exactly one global claim entry of the form
+  :c:expr:`xen_memory_claim.target = XEN_DOMCTL_CLAIM_MEMORY_LEGACY`.
+- It sets :c:expr:`domain.global_claims` to the requested pages, minus
+  the domain's total pages, i.e. the pages allocated to the domain so far,
+  so that the domain's global outstanding claims reflect the shortfall of
+  allocated pages from claimed pages:
+  :c:expr:`xen_memory_claim.pages - domain_tot_pages(domain)`.
+- Passing :c:expr:`xen_memory_claim.pages == 0`
+  clears all claims installed for the domain.
+
+Aside from the edge cases for allocations exceeding claims and
+offlining pages, the legacy path is functionally unchanged.
diff --git a/docs/designs/claims/invariants.mmd b/docs/designs/claims/invariants.mmd
new file mode 100644
index 000000000000..ac9bfba34d49
--- /dev/null
+++ b/docs/designs/claims/invariants.mmd
@@ -0,0 +1,36 @@
+%% SPDX-License-Identifier: CC-BY-4.0
+%% Claim variables and their Invariants
+flowchart TD
+
+subgraph "Access&nbsp;under&nbsp;the&nbsp;<tt><b>heap_lock</b></tt>&nbsp;only:"
+   direction TB
+   Memory_of_Nodes --"&nbsp; Contribute to &nbsp;"--> Overall_Memory
+   Overall_Memory --"&nbsp; Available to &nbsp;"--> Memory_of_Domains
+end
+
+subgraph Memory_of_Nodes["Per-node claims and available memory"]
+    direction LR
+    per_node_claims -->|"&nbsp; less or equal to &nbsp;"| node_avail_pages
+    per_node_claims["Claims on the node:
+                     <tt>node_outstanding_claims[n]"]
+    node_avail_pages["Available pages on the node:
+                      <tt>node_avail_pages[n]"]
+end
+
+subgraph Overall_Memory["Overall claims and available memory"]
+    direction LR
+    outstanding -->|"&nbsp; less or equal to &nbsp;"| avail_pages
+    outstanding["Total claims on the host:
+                 <tt>outstanding_claims"]
+    avail_pages["Available pages on the host:
+                 <tt>total_avail_pages"]
+end
+
+subgraph Memory_of_Domains["Per-domain&nbsp;claims and available memory"]
+    direction LR
+    claims -->|"&nbsp; less or equal to &nbsp;"| available_memory_for_domains
+    claims["Claims of the domain:<br><tt>d->claims[n]
+                                         d->global_claims"]
+    available_memory_for_domains["Available pages:<br><tt>node_avail_pages[n]
+                                                          total_avail_pages"]
+end
\ No newline at end of file
diff --git a/docs/designs/claims/protection.rst b/docs/designs/claims/protection.rst
new file mode 100644
index 000000000000..2de6097d2c74
--- /dev/null
+++ b/docs/designs/claims/protection.rst
@@ -0,0 +1,41 @@
+.. SPDX-License-Identifier: CC-BY-4.0
+
+Protection of Claims
+--------------------
+
+Claimed memory must be protected from unrelated allocations while remaining
+available to the claiming domain.
+
+The allocator performs two checks.
+
+Global check
+^^^^^^^^^^^^
+
+``alloc_heap_pages()`` first verifies whether the request fits the global
+pool after accounting for claims. The request is permitted when either:
+
+- Enough unclaimed memory exists globally to satisfy the request.
+- The requesting domain's outstanding claims cover the shortfall.
+
+For this check, the domain's applicable claim is
+``d->global_claims + d->node_claims``. The domain therefore receives
+credit for its complete claim set, whether reservations are global,
+per-node, or both.
+
+Node check
+^^^^^^^^^^
+
+After passing the global check, the allocator calls ``get_free_buddy()``
+to find free pages. It loops over the NUMA nodes to find a suitable
+node with enough free memory to satisfy the request.
+
+It performs an additional node-local claims check using the domain's claim
+for that node (``d->claims[node]``) to determine whether the node is qualified
+to satisfy the request before examining that node's free lists.
+
+Unless the caller requested an exact node, the allocator loops
+over nodes until it finds one where the request can be satisfied
+by the unclaimed memory and the node-local claim for that node.
+
+If no qualifying node is found, the allocator rejects the request
+due to insufficient memory.
diff --git a/docs/designs/claims/redeeming.rst b/docs/designs/claims/redeeming.rst
new file mode 100644
index 000000000000..8d0fa9125aa2
--- /dev/null
+++ b/docs/designs/claims/redeeming.rst
@@ -0,0 +1,70 @@
+.. SPDX-License-Identifier: CC-BY-4.0
+
+Redeeming Claims
+----------------
+
+After a successful allocation,
+:ref:`designs/claims/implementation:redeem_claims_for_allocation()`
+redeems claims up to the size of the allocation in the same critical
+region that updates the free-page counters.
+
+The function performs the following steps to redeem the matching claims
+for this allocation, ensuring the domain's total memory allocation as
+:c:expr:`domain_tot_pages(domain)` plus its outstanding claims as
+:c:expr:`domain.global_claims + domain.node_claims` remain within the
+domain's limits, defined by :c:expr:`domain.max_pages`:
+
+Steps to redeem claims for an allocation
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+Step 1:
+  Redeem claims from :c:expr:`domain.claims[alloc_node]` on the allocation
+  node, up to the size of that claim.
+Step 2:
+  If the allocation exceeds :c:expr:`domain.claims[alloc_node]`, redeem the
+  remaining pages from the global fallback claim :c:expr:`domain.global_claims`
+  (if one exists).
+Step 3:
+  If the allocation exceeds the combination of those claims, redeem the
+  remaining pages from other per-node claims so that the domain's total
+  allocation plus claims remain within the domain's :c:expr:`domain.max_pages`
+  limit.
+
+Enforcing the :c:expr:`domain.max_pages` limit
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+:c:expr:`domain_tot_pages(domain)` +
+:c:expr:`domain.global_claims + domain.node_claims`
+must not exceed the :c:expr:`domain.max_pages` limit, otherwise
+the domain would exceed its memory entitlement.
+
+At claim installation time
+ This check is done by
+ :c:expr:`domain_set_node_claims()` and
+ :c:expr:`domain_set_outstanding_pages()`.
+
+.. :sidebar::
+   See :ref:`designs/claims/accounting:Locking of claims accounting`
+   for the locks used to protect claims accounting state and invariants.
+
+At memory allocation time
+  If (unexpectedly) a domain builder ends up allocating memory from
+  different nodes than it claimed from, the domain's total allocation
+  plus claims could exceed the domain's :c:expr:`domain.max_pages`
+  limit, unless the page allocator redeems claims from other nodes
+  to ensure the sum of the domain's claims and populated pages
+  remains within the :c:expr:`domain.max_pages` limit.
+
+  :ref:`designs/claims/implementation:redeem_claims_for_allocation()`
+  cannot reliably check :c:expr:`domain.max_pages` race-free because
+  :c:expr:`domain.max_pages` is not protected by the :c:expr:`heap_lock`
+  taken by the page allocator during allocation.
+
+  To check the domain's limits, it would have to take the
+  :c:expr:`domain.page_alloc_lock` to inspect the domain's
+  limits and its current allocation. However, taking that lock
+  while holding the :c:expr:`heap_lock` would invert the locking
+  order and could lead to deadlocks.
+
+  Therefore, :ref:`designs/claims/implementation:redeem_claims_for_allocation()`
+  redeems the remaining allocation from other-node claims in Step 3.
diff --git a/docs/designs/claims/usecases.rst b/docs/designs/claims/usecases.rst
new file mode 100644
index 000000000000..5a618f0d0280
--- /dev/null
+++ b/docs/designs/claims/usecases.rst
@@ -0,0 +1,39 @@
+.. SPDX-License-Identifier: CC-BY-4.0
+
+#########
+Use Cases
+#########
+
+.. glossary::
+
+ Parallel :term:`domain builds`
+
+  When many domains need to be created and built, many :term:`domain builders`
+  compete for the same pools of memory, which can lead to inefficient NUMA
+  placement of :term:`guest physical memory` and thus suboptimal performance
+  for the domains.
+
+  NUMA-aware claims can help solve this problem and ensure that memory
+  is available on the appropriate NUMA nodes.
+
+ Domain builds
+
+  The process of constructing and configuring :term:`domains` by
+  :term:`domain builders`, which includes installing :term:`claims`,
+  :term:`populating` memory, and setting up other resources before the
+  :term:`domains` are started. When multiple :term:`domain builders` can
+  run in parallel, this is referred to as parallel domain builds, which can
+  benefit from NUMA-aware claims because the domain builders are competing for
+  the same pools of memory on the NUMA nodes.
+
+ Boot storms
+
+  It is common for many domains to be booted at the same time, such as during
+  system startup or when large numbers of domains need to be started.
+
+ Parallel migrations
+
+  Similar to :term:`boot storms`, except that the domains are being migrated
+  instead of booted, which can happen when other hosts are being drained
+  for maintenance (host evacuation) or when workloads are being rebalanced
+  across hosts.
diff --git a/docs/designs/index.rst b/docs/designs/index.rst
new file mode 100644
index 000000000000..036653303231
--- /dev/null
+++ b/docs/designs/index.rst
@@ -0,0 +1,16 @@
+.. SPDX-License-Identifier: CC-BY-4.0
+
+Design documents
+================
+
+Design documents and implementation details for the Xen hypervisor itself.
+This is intended for developers working on the Xen hypervisor,
+and for those interested in the internal workings of Xen.
+
+.. toctree::
+   :maxdepth: 2
+   :numbered: 4
+
+   launch/hyperlaunch
+   launch/hyperlaunch-devicetree
+   claims/index
diff --git a/docs/designs/launch/hyperlaunch.rst b/docs/designs/launch/hyperlaunch.rst
index 3bed36f97637..aa7c2798a380 100644
--- a/docs/designs/launch/hyperlaunch.rst
+++ b/docs/designs/launch/hyperlaunch.rst
@@ -2,8 +2,6 @@
 Hyperlaunch Design Document
 ###########################
 
-.. sectnum:: :depth: 4
-
 This post is a Request for Comment on the included v4 of a design document that
 describes Hyperlaunch: a new method of launching the Xen hypervisor, relating
 to dom0less and work from the Hyperlaunch project. We invite discussion of this
@@ -13,6 +11,8 @@ Xen Development mailing list.
 
 
 .. contents:: :depth: 3
+   :backlinks: entry
+   :local:
 
 
 Introduction
diff --git a/docs/guest-guide/dom/DOMCTL_claim_memory-data.mmd b/docs/guest-guide/dom/DOMCTL_claim_memory-data.mmd
new file mode 100644
index 000000000000..50687392fd20
--- /dev/null
+++ b/docs/guest-guide/dom/DOMCTL_claim_memory-data.mmd
@@ -0,0 +1,43 @@
+%% SPDX-License-Identifier: CC-BY-4.0
+classDiagram
+class do_domctl["Args passed to <tt>do_domctl()</tt>"] {
+    +uint32_t cmd: XEN_DOMCTL_claim_memory
+    +uint32_t domain: Domain ID
+    +xen_domctl_claim_memory: Claim set
+}
+class xen_domctl_claim_memory["Claim set passed to <tt>do_domctl()</tt>"] {
+    +memory_claim_t* claims: Claim entries
+    +uint32_t nr_claims: Number of claim entries
+    +uint32_t pad: always 0 for future use
+}
+class memory_claim_t["Claim set: Array of claim entries"] {
+    +pages: Pages to claim
+    +node: Claim selector or node
+    +pad: always 0 for future use
+}
+class xc_domain_claim_memory["xc_domain_claim_memory()"] {
+    +xc_interface* xch
+    +uint32_t domid
+    +uint32_t nr_claims
+    +memory_claim_t* claims
+}
+class global_claimss["Global and Node claim counters"] {
+    global free = total_avail_pages - outstanding_claims
+    node free = node_avail_pages[node] - node_outstanding_claims[node]
+}
+class claim["XEN_DOMCTL_claim_memory"] {
+    +domain_set_outstanding_pages()
+    +domain_set_node_claims()
+}
+class domain["Claim fields in struct domain"] {
+    +global_claims - Global claims of the domain
+    +node_claims - Sum of claims on all nodes of the domain
+    +claims[] - Array of claims on specific nodes
+}
+xen_domctl_claim_memory o--> memory_claim_t
+do_domctl o--> xen_domctl_claim_memory
+xc_domain_claim_memory ..> do_domctl: passes<br> <tt>Claim set</tt>
+xc_domain_claim_memory ..> claim : calls <tt>do_domctl()</tt>
+claim ..> xen_domctl_claim_memory : reads
+claim ..> domain : sets
+domain ..> global_claimss : updates outstanding claims
diff --git a/docs/guest-guide/dom/DOMCTL_claim_memory-seqdia.mmd b/docs/guest-guide/dom/DOMCTL_claim_memory-seqdia.mmd
new file mode 100644
index 000000000000..05d688c59f13
--- /dev/null
+++ b/docs/guest-guide/dom/DOMCTL_claim_memory-seqdia.mmd
@@ -0,0 +1,23 @@
+%% SPDX-License-Identifier: CC-BY-4.0
+sequenceDiagram
+
+actor DomainBuilder
+participant OcamlStub as OCaml stub for<br>xc_domain<br>claim_memory
+participant Libxc as xc_domain<br>claim_memory
+participant Domctl as XEN_DOMCTL<br>claim_memory
+#participant DomainLogic as claim_memory
+participant Alloc as domain<br>set<br>outstanding_pages
+
+DomainBuilder->>OcamlStub: claims
+OcamlStub->>OcamlStub: marshall claims -----> OCaml to C
+OcamlStub->>Libxc: claims
+
+Libxc->>Domctl: do_domctl
+
+Domctl->>Domctl: copy_from_guest(claim)
+Domctl->>Domctl: validate claim
+Domctl->>Alloc: set<br>outstanding_pages
+Alloc-->>Domctl: result
+Domctl-->>Libxc: rc
+Libxc-->>OcamlStub: rc
+OcamlStub-->>DomainBuilder: claim_result
\ No newline at end of file
diff --git a/docs/guest-guide/dom/DOMCTL_claim_memory-workflow.mmd b/docs/guest-guide/dom/DOMCTL_claim_memory-workflow.mmd
new file mode 100644
index 000000000000..372f2bb7a616
--- /dev/null
+++ b/docs/guest-guide/dom/DOMCTL_claim_memory-workflow.mmd
@@ -0,0 +1,23 @@
+%% SPDX-License-Identifier: CC-BY-4.0
+sequenceDiagram
+
+participant Toolstack
+participant Xen
+participant NUMA Node memory
+
+Toolstack->>Xen: XEN_DOMCTL_createdomain
+Toolstack->>Xen: XEN_DOMCTL_max_mem(max_pages)
+
+Toolstack->>Xen: XEN_DOMCTL_claim_memory(pages, node)
+Xen->>NUMA Node memory: Claim pages on node
+Xen-->>Toolstack: Claim granted
+
+Toolstack->>Xen: XEN_DOMCTL_set_nodeaffinity(node)
+
+loop Populate domain memory
+    Toolstack->>Xen: XENMEM_populate_physmap(memflags:node)
+    Xen->>NUMA Node memory: alloc from claimed node
+end
+
+Toolstack->>Xen: XEN_DOMCTL_claim_memory(0, NO_NODE)
+Xen-->>Toolstack: Remaining claims released
diff --git a/docs/guest-guide/dom/DOMCTL_claim_memory.rst b/docs/guest-guide/dom/DOMCTL_claim_memory.rst
new file mode 100644
index 000000000000..d435799c57a6
--- /dev/null
+++ b/docs/guest-guide/dom/DOMCTL_claim_memory.rst
@@ -0,0 +1,81 @@
+.. SPDX-License-Identifier: CC-BY-4.0
+
+.. c:macro:: XEN_DOMCTL_claim_memory
+
+   Hypercall command for installing claim sets for a domain.
+
+   This hypercall command allows :term:`domain builders` to install a
+   :term:`claim set` targeting :term:`NUMA nodes` and :term:`global claims`.
+
+   The hypervisor tracks the installed claims for each domain and enforces
+   them during memory allocation, so that claimed memory is protected from
+   other allocations and the domain's memory requirements can be met even
+   when other parallel domain builders are also allocating memory for other
+   domains in parallel.
+
+   :ref:`designs/claims/installation:Claim set installation` describes
+   how the Xen hypervisor processes the claim sets installed via this
+   hypercall command.
+
+API example using libxenctrl
+----------------------------
+
+The example below shows how a domain builder can install a claim set and
+later replace or clear it. :c:expr:`memory_claim_t` contains padding for future
+expansion; zero-initialise the structure or use designated initializers to
+ensure forward compatibility.
+
+.. code-block:: C
+
+  #include <xenctrl.h>
+
+  void example_claims(xc_interface *xch, uint32_t domid)
+  {
+    /* Claim 1024 pages on node 0, 1024 pages on node 1, and 1024 global */
+    memory_claim_t claims[] = {
+      {.pages = 1024, .node = XEN_DOMCTL_CLAIM_MEMORY_GLOBAL},
+      {.pages = 1024, .node = 0},
+      {.pages = 1024, .node = 1}
+    };
+    xc_domain_claim_memory(xch, domid, ARRAY_SIZE(claims), claims);
+
+    /* Replace the claim set with claims on nodes 1, 2, and 3 */
+    memory_claim_t claims2[] = {
+      {.pages = 1024, .node = 1},
+      {.pages = 1024, .node = 2},
+      {.pages = 1024, .node = 3},
+    };
+    xc_domain_claim_memory(xch, domid, ARRAY_SIZE(claims2), claims2);
+
+    /* Release any remaining claim once the domain is built */
+    memory_claim_t clear[] = {
+      {.pages = 0, .node = XEN_DOMCTL_CLAIM_MEMORY_GLOBAL}
+    };
+    xc_domain_claim_memory(xch, domid, ARRAY_SIZE(clear), clear);
+  }
+
+Call sequence diagram
+---------------------
+
+The following sequence diagram illustrates the call flow for claiming memory
+for a domain using this hypercall command from an OCaml domain builder:
+
+.. mermaid:: DOMCTL_claim_memory-seqdia.mmd
+  :caption: Sequence diagram: Call flow for claiming memory for a domain
+
+Claim workflow
+--------------
+
+This diagram illustrates a workflow for claiming and populating memory:
+
+.. mermaid:: DOMCTL_claim_memory-workflow.mmd
+  :caption: Workflow diagram: Claiming and populating memory for a domain
+
+Used functions & data structures
+--------------------------------
+
+This diagram illustrates the key functions and data structures involved in
+installing claims via the :c:expr:`XEN_DOMCTL_claim_memory` hypercall command:
+
+.. mermaid:: DOMCTL_claim_memory-data.mmd
+  :caption: Diagram: Function and data relationships for installing claims
diff --git a/docs/guest-guide/dom/index.rst b/docs/guest-guide/dom/index.rst
new file mode 100644
index 000000000000..445ccf599047
--- /dev/null
+++ b/docs/guest-guide/dom/index.rst
@@ -0,0 +1,14 @@
+.. SPDX-License-Identifier: CC-BY-4.0
+
+Domctl Hypercall
+================
+
+Through domctl hypercalls, toolstacks in privileged domains can perform
+operations related to domain management.  This includes operations such as
+creating, destroying, and modifying domains, as well as querying domain
+information.
+
+.. toctree::
+   :maxdepth: 2
+
+   DOMCTL_claim_memory
diff --git a/docs/guest-guide/index.rst b/docs/guest-guide/index.rst
index 5455c67479cf..d9611cd7504d 100644
--- a/docs/guest-guide/index.rst
+++ b/docs/guest-guide/index.rst
@@ -3,6 +3,29 @@
 Guest documentation
 ===================
 
+Xen exposes a set of hypercalls that allow domains and toolstacks in
+privileged contexts (such as Dom0) to request services from the hypervisor.
+
+Through these hypercalls, privileged domains can perform privileged operations
+such as querying system information, memory and domain management,
+and enabling inter-domain communication via shared memory and event channels.
+
+These hypercalls are documented in the following sections, grouped by their
+functionality. Each section provides an overview of the hypercalls, their
+parameters, and examples of how to use them.
+
+Hypercall API documentation
+---------------------------
+
+.. toctree::
+   :maxdepth: 2
+
+   dom/index
+   mem/index
+
+Hypercall ABI documentation
+---------------------------
+
 .. toctree::
    :maxdepth: 2
 
diff --git a/docs/guest-guide/mem/XENMEM_claim_pages.rst b/docs/guest-guide/mem/XENMEM_claim_pages.rst
new file mode 100644
index 000000000000..1e8a50afc856
--- /dev/null
+++ b/docs/guest-guide/mem/XENMEM_claim_pages.rst
@@ -0,0 +1,100 @@
+.. SPDX-License-Identifier: CC-BY-4.0
+.. _XENMEM_claim_pages:
+
+XENMEM_claim_pages
+==================
+
+.. note:: This API is deprecated;
+   Use :c:expr:`XEN_DOMCTL_claim_memory` for new code.
+
+.. c:macro:: XENMEM_claim_pages
+
+   Hypercall command for installing legacy claims.
+
+   :ref:`designs/claims/installation:Legacy claim installation` describes
+   the API for installing legacy claims via this hypercall command.
+
+   It passes a single claim entry to the hypervisor via a
+   :c:expr:`xen_memory_reservation` structure with the page count in the
+   :c:expr:`xen_memory_reservation.nr_extents` field and the domain ID
+   :c:expr:`xen_memory_reservation.domid` field. The claim entry's target is
+   implicitly global, and the legacy claim path is invoked in the hypervisor
+   to process the claim:
+
+.. c:struct:: xen_memory_reservation
+
+   Structure for passing claim requests to the hypervisor via
+   :ref:`XENMEM_claim_pages` and other memory reservation hypercalls.
+
+   .. code-block:: C
+
+      struct xen_memory_reservation {
+          xen_pfn_t   *extent_start; /* not used for XENMEM_claim_pages */
+          xen_ulong_t  nr_extents;   /* pass page counts to claim */
+          unsigned int extent_order; /* must be 0 */
+          unsigned int mem_flags;    /* XENMEMF flags. */
+          domid_t      domid;        /* domain to apply the claim to */
+      };
+      typedef struct xen_memory_reservation xen_memory_reservation_t;
+
+   .. c:member:: xen_ulong_t nr_extents
+
+      For :ref:`XENMEM_claim_pages`, the page count to claim.
+
+   .. c:member:: domid_t domid
+
+        Domain ID for the claim.
+
+   .. c:member:: unsigned int mem_flags
+
+      Must be 0 for :ref:`XENMEM_claim_pages`; not used for claims.
+
+      In principle, it supports all the :c:expr:`XENMEMF_*` flags, including
+      the possibility of passing a single NUMA node ID, but using it to pass
+      a NUMA node ID is not currently supported by the legacy claim path.
+
+      During review of the NUMA extension of the legacy claim path, it
+      was used, but the request was made to instead create a new hypercall
+      which is now :c:expr:`XEN_DOMCTL_claim_memory` with support for claim sets.
+
+   .. c:member:: unsigned int extent_order
+   .. c:member:: xen_pfn_t *extent_start
+
+      Both are not used for :ref:`XENMEM_claim_pages`, but are used for other
+      memory reservation hypercalls.
+
+   See :ref:`designs/claims/installation:Legacy claim installation` for details.
+
+API example using libxenctrl
+----------------------------
+
+The example below claims pages, populates the domain,
+and then clears the claim.
+
+.. code-block:: C
+
+  #include <xenctrl.h>
+
+  int build_with_claims(xc_interface *xch, uint32_t domid,
+                        unsigned long nr_pages)
+  {
+      int ret;
+
+      /* Claim pages for the domain build. */
+      ret = xc_domain_claim_pages(xch, domid, nr_pages);
+      if ( ret < 0 )
+          return ret;
+
+      /* Populate the domain's physmap. */
+      ret = xc_domain_populate_physmap(xch, domid, /* ... */);
+      if ( ret < 0 )
+          return ret;
+
+      /* Release any remaining claim after populating the domain memory. */
+      ret = xc_domain_claim_pages(xch, domid, 0);
+      if ( ret < 0 )
+          return ret;
+
+      /* Unpause the domain to allow it to run. */
+      return xc_unpause_domain(xch, domid);
+  }
diff --git a/docs/guest-guide/mem/index.rst b/docs/guest-guide/mem/index.rst
new file mode 100644
index 000000000000..086281f082a0
--- /dev/null
+++ b/docs/guest-guide/mem/index.rst
@@ -0,0 +1,12 @@
+.. SPDX-License-Identifier: CC-BY-4.0
+
+Memctl Hypercall
+================
+
+The XENMEM hypercall interface allows guests to perform various control
+operations related to memory management.
+
+.. toctree::
+   :maxdepth: 2
+
+   XENMEM_claim_pages
diff --git a/docs/hypervisor-guide/index.rst b/docs/hypervisor-guide/index.rst
index 520fe01554ab..904f8daeb79e 100644
--- a/docs/hypervisor-guide/index.rst
+++ b/docs/hypervisor-guide/index.rst
@@ -3,9 +3,16 @@
 Hypervisor documentation
 ========================
 
+.. The toctree of the hypervisor design documentation,
+   providing an overview and links to the various design
+   documents are added in the `designs` directory and
+   are referenced using the `designs/index` page here.
+   (this is a documentation comment which is not rendered)
+
 .. toctree::
    :maxdepth: 2
 
+   ../designs/index
    code-coverage
 
    x86/index
diff --git a/docs/index.rst b/docs/index.rst
index bd87d736b9c3..b6803f6a341e 100644
--- a/docs/index.rst
+++ b/docs/index.rst
@@ -53,17 +53,18 @@ kind of development environment.
    hypervisor-guide/index
    misc/ci
 
-
 Unsorted documents
 ------------------
 
 Documents in need of some rearranging.
 
+.. The design documentation is added in the `designs` directory
+   included in the hypervisor guide now.
+   (this is a documentation comment which is not rendered)
+
 .. toctree::
    :maxdepth: 2
 
-   designs/launch/hyperlaunch
-   designs/launch/hyperlaunch-devicetree
    misc/xen-makefiles/makefiles
    misra/index
    fusa/index
-- 
2.39.5



From xen-devel-bounces@lists.xenproject.org Tue Apr 14 09:55:23 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 14 Apr 2026 09:55:23 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1281554.1564414 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wCaUD-0008Cp-3p; Tue, 14 Apr 2026 09:55:13 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1281554.1564414; Tue, 14 Apr 2026 09:55: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 1wCaUD-0008Ci-11; Tue, 14 Apr 2026 09:55:13 +0000
Received: by outflank-mailman (input) for mailman id 1281554;
 Tue, 14 Apr 2026 09:55:11 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <olekstysh@gmail.com>) id 1wCaUB-0008Ca-QH
 for xen-devel@lists.xenproject.org; Tue, 14 Apr 2026 09:55:11 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wCaU7-0068KX-Tv
 for xen-devel@lists.xenproject.org; Tue, 14 Apr 2026 11:55:09 +0200
Received: from [10.42.69.1] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <olekstysh@gmail.com>)
 id 69de0ef4-5cb7-0a2a0a5109dd-0a2a4501a27c-44
 for <xen-devel@lists.xenproject.org>; Tue, 14 Apr 2026 11:55:09 +0200
Received: from [209.85.128.47] (helo=mail-wm1-f47.google.com)
 by tlsNG-d62444.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.0)
 (envelope-from <olekstysh@gmail.com>)
 id 69de0efd-6fc9-0a2a45010019-d155802fb9bc-3
 for <xen-devel@lists.xenproject.org>; Tue, 14 Apr 2026 11:55:09 +0200
Received: by mail-wm1-f47.google.com with SMTP id
 5b1f17b1804b1-48374014a77so73441905e9.3
 for <xen-devel@lists.xenproject.org>; Tue, 14 Apr 2026 02:55:09 -0700 (PDT)
Received: from [192.168.0.112] ([91.123.151.140])
 by smtp.gmail.com with ESMTPSA id
 5b1f17b1804b1-488d681ea59sm120999895e9.14.2026.04.14.02.55.07
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Tue, 14 Apr 2026 02:55:07 -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=20251104 header.d=gmail.com header.i="@gmail.com" header.h="Content-Transfer-Encoding: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=20251104; t=1776160509; x=1776765309; darn=lists.xenproject.org;
        h=content-transfer-encoding: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;
        bh=AmNa19N8+QZNP/ohDnpTlbvtv8o+CLutWIXJRtYFcvo=;
        b=W4p1maido8Nj1XFn9sFj3+R8EfEVnz9ZYhI1XeAZy5WIydgMjFWUV3pC7DbaobUdQw
         eSkYSXTnInd5GqT1Mv9izVMJdk88qSUogSEvg4PWYSvXSzFb8k8ZYS5VuxjIRUSswpIW
         ucyzolTgQTNl6FBvoXL4dHBF98I/wTveRcMzas0lriFpPhBOdDmIIjs2NTGiyPQNI2i7
         AexLdwrRZ3GSfVnwZbUkjasyFx66FumbKvZtOY8UY2upl8NQcItRf27esyxLIf3LMsn/
         KASIamArTjWtOmlTZplj7TP9GamA9wdThqifrRwduLDLgE2mHGkn7AHEJmEGLXluW04E
         /+jw==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20251104; t=1776160509; x=1776765309;
        h=content-transfer-encoding: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;
        bh=AmNa19N8+QZNP/ohDnpTlbvtv8o+CLutWIXJRtYFcvo=;
        b=JF6sK/KQ7sKDkpLzI2YvaoaGB+5sUyV3HyrA8QddFilWeVwDT17VwY/DrmTPv//DXW
         FvTERuWdNN7yyZ1+CAY54HMPVMd7io66WM3YsFpNZ1QRvo2VM1yx5b1MBwey8zWX+aRy
         sgxtUfgA3yZ/xWTj9xvpmyoj9HkTBrlzXKMlGSdtqcm3012RdqmnMc8u5ltyhpvIOmZ0
         OUnXDMMKWkBoh/J0Jzl3EjzCOtC5UekasNxJfeChLASkZogfpNBQBt5kzbrFeqG95F3j
         o/wdq8c1HtPPWYQHRP/zwKr3qxjYGzc8bjE/DaznliFBz6wjvlrSw+2Gc44dlOJKk1sA
         oRdQ==
X-Forwarded-Encrypted: i=1; AFNElJ/diQFEGOqnVu/qmO4sCQbc0wOtkA7pwETPYWyekXoN5+8sIEAnsuuR7p2ZO9DA7kBvUwMczMdaX6s=@lists.xenproject.org
X-Gm-Message-State: AOJu0Yz8d21BojJiKZ6a0rpne3p78+coi/EsrqEGJ4eM+k9XyLCZO78X
	OdXlL+N+p1R0jaTjDWMy/FEY2UfPDXcR19CXjn9Dw+J1144kYrev34rC
X-Gm-Gg: AeBDieszcmSi+Pe5QzVzXRUYePhi6FBUmErnFs3lnZ4+Qop3/XREWAQyGyC+x18EK6l
	SWLQPYZTYvcCTDzZmPgkNy153Vd4IJdKsHP63kfRrNcmsG3CPG+6qqzE/RxhErQYK2vbHyKZj+x
	g526mLSVQwKEq9lQCj0uOUwEmIF3uOb5We6ydZbeUTacTMWXI1uU+kjzMSsxRjLo6nEYlT1ADd6
	rwCABiAOGTiMc8pI1TSqTw0O0VW++yEtbhGEfkrl64EN2glainxRnWZTZ5MkngZ5383YUsYU1vd
	A0Xgt5qztG2pauEh+n7KXMlZUx3QcMQs+jkuJdwhvgjdNbXoh9Z5ez8d6ah01+zBevf2iZ2Kmkw
	stlHxl/x+/IEYepqqzh0WkeqU3Efphk4qflx7sVxXUdsJovmJa4rhA16Oxe5lu7Qog5+x3bVwea
	8JPGl8dPQfjkJtggzkg14Q7GDDDlV20NPLwfeQbS0Q8ToJ8Qzb
X-Received: by 2002:a05:600c:3acf:b0:485:35a4:939f with SMTP id 5b1f17b1804b1-488d68a8275mr189524385e9.28.1776160508268;
        Tue, 14 Apr 2026 02:55:08 -0700 (PDT)
Message-ID: <c97f9f2e-f98a-4dfc-9c49-4c0ebd6af9d5@gmail.com>
Date: Tue, 14 Apr 2026 12:55:06 +0300
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH v2 3/4] xen/drivers/char/cadence-uart: fix IRQ
 registration failure propagation
To: Oleksii Moisieiev <Oleksii_Moisieiev@epam.com>,
 "xen-devel@lists.xenproject.org" <xen-devel@lists.xenproject.org>
Cc: Bertrand Marquis <bertrand.marquis@arm.com>, Julien Grall
 <julien@xen.org>, Michal Orzel <michal.orzel@amd.com>,
 Stefano Stabellini <sstabellini@kernel.org>,
 Volodymyr Babchuk <Volodymyr_Babchuk@epam.com>
References: <cover.1775742562.git.oleksii_moisieiev@epam.com>
 <f8ad018f3cd8930f7efddb362b889f0afec2408a.1775742562.git.oleksii_moisieiev@epam.com>
Content-Language: en-US
From: Oleksandr Tyshchenko <olekstysh@gmail.com>
In-Reply-To: <f8ad018f3cd8930f7efddb362b889f0afec2408a.1775742562.git.oleksii_moisieiev@epam.com>
Content-Type: text/plain; charset=UTF-8; format=flowed
Content-Transfer-Encoding: 7bit
X-purgate-ID: tlsNG-d62444/1776160509-158EC185-A8684F2B/0/0
X-purgate-type: clean
X-purgate-size: 2910



On 4/9/26 16:50, Oleksii Moisieiev wrote:

Hello Oleksii


> In cuart_init_postirq(), two code paths could reach the
> interrupt-enable write to IER without a handler being registered:
> 
> - When no valid IRQ number was provided (uart->irq <= 0), the original
>    positive-condition guard (if uart->irq > 0) skipped the irqaction
>    setup but still fell through to the IER write, enabling the receive
>    data interrupt with no handler installed.
> 
> - When setup_irq() returned an error, only an error message was
>    printed and execution continued to the IER write, arming the
>    receive hardware interrupt line with no handler to service it. On
>    platforms where the GIC receives this asserted line, the result is
>    either repeated spurious-interrupt warnings or an unhandled
>    interrupt fault.
> 
> Restructure cuart_init_postirq() to use early returns in both error
> paths.
> 
> Signed-off-by: Oleksii Moisieiev <oleksii_moisieiev@epam.com>
> ---
> 
> 
> 
>   xen/drivers/char/cadence-uart.c | 17 +++++++++++------
>   1 file changed, 11 insertions(+), 6 deletions(-)
> 
> diff --git a/xen/drivers/char/cadence-uart.c b/xen/drivers/char/cadence-uart.c
> index b2f379833f..a63dc4adb2 100644
> --- a/xen/drivers/char/cadence-uart.c
> +++ b/xen/drivers/char/cadence-uart.c
> @@ -72,13 +72,18 @@ static void __init cuart_init_postirq(struct serial_port *port)
>       struct cuart *uart = port->uart;
>       int rc;
>   
> -    if ( uart->irq > 0 )
> +    /* Don't unmask interrupts if no valid irq was provided */
> +    if ( uart->irq <= 0 )

But irq field is defined as an unsigned int. By definition, an unsigned 
int can never be less than zero.

> +        return;
> +
> +    uart->irqaction.handler = cuart_interrupt;
> +    uart->irqaction.name    = "cadence-uart";
> +    uart->irqaction.dev_id  = port;
> +    if ( (rc = setup_irq(uart->irq, 0, &uart->irqaction)) != 0 )
>       {
> -        uart->irqaction.handler = cuart_interrupt;
> -        uart->irqaction.name    = "cadence-uart";
> -        uart->irqaction.dev_id  = port;
> -        if ( (rc = setup_irq(uart->irq, 0, &uart->irqaction)) != 0 )
> -            printk("ERROR: Failed to allocate cadence-uart IRQ %d\n", uart->irq);
> +        printk("ERROR: Failed to allocate cadence-uart IRQ %d\n", uart->irq);

NIT: The format specifier should be %u

> +        /* Do not unmask interrupts if irq handler wasn't set */
> +        return;
>       }
>   
>       /* Clear pending error interrupts */


I notice that with this change, the block that clears pending error 
interrupts is now skipped if setup_irq() fails or if no valid IRQ is 
provided. Is this intentional / OK?
In "[PATCH v2 1/4] xen/drivers/char: fix SCIF IRQ registration failure 
propagation", the error status registers are always cleared, even on 
failure.









From xen-devel-bounces@lists.xenproject.org Tue Apr 14 10:27:33 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 14 Apr 2026 10:27:33 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1281564.1564422 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wCazF-0003mq-Fy; Tue, 14 Apr 2026 10:27:17 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1281564.1564422; Tue, 14 Apr 2026 10: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 1wCazF-0003mj-DO; Tue, 14 Apr 2026 10:27:17 +0000
Received: by outflank-mailman (input) for mailman id 1281564;
 Tue, 14 Apr 2026 10:27:16 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92) id 1wCazE-0003lX-5v
 for xen-devel@lists.xenproject.org; Tue, 14 Apr 2026 10:27:16 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wCazC-002Cy5-NK
 for xen-devel@lists.xenproject.org; Tue, 14 Apr 2026 12:27:14 +0200
Received: from [10.42.69.6] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <oleksii.kurochko@gmail.com>)
 id 69de167d-bab6-0a2a0a5309dd-0a2a4506a812-26
 for <xen-devel@lists.xenproject.org>; Tue, 14 Apr 2026 12:27:14 +0200
Received: from [209.85.128.46] (helo=mail-wm1-f46.google.com)
 by tlsNG-16d1c6.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.0)
 (envelope-from <oleksii.kurochko@gmail.com>)
 id 69de1682-0df0-0a2a45060019-d155802ee594-3
 for <xen-devel@lists.xenproject.org>; Tue, 14 Apr 2026 12:27:14 +0200
Received: by mail-wm1-f46.google.com with SMTP id
 5b1f17b1804b1-48334ee0aeaso52278555e9.1
 for <xen-devel@lists.xenproject.org>; Tue, 14 Apr 2026 03:27:14 -0700 (PDT)
Received: from [192.168.1.6] (user-109-243-69-121.play-internet.pl.
 [109.243.69.121]) by smtp.gmail.com with ESMTPSA id
 5b1f17b1804b1-488ede15694sm63957855e9.3.2026.04.14.03.27.12
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Tue, 14 Apr 2026 03:27:13 -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=20251104 header.d=gmail.com header.i="@gmail.com" header.h="Content-Transfer-Encoding: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=20251104; t=1776162434; x=1776767234; darn=lists.xenproject.org;
        h=content-transfer-encoding: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;
        bh=Soy1YtMmw4vyXzarneePUgAcchK40/FeKLITTrphjhw=;
        b=U8ail76H78PcW4ypBXIboZ0zpJbW7CCaCneLzZ+uBGR5Pl/V0NV0ZgFygRxY5RZZ1a
         +klr6nbkzpIooWQrAP0bslCH/PgGKs0f1eTR9OIu0ZdYmA4lLLRoDAcQWBNy0EUGSx94
         gb9XP0H6qQS34mBDEOkASkeeOV0p4Iws0VAs3gBQomHHtZZ2+pr/B4LRTJHljv9ZkSn2
         injZWvTK+WrPTj89cnfIQxI0UXtnMjzFiaRg6n4OTBpFt3Eu5mzDpTvXbrq96FKBQ599
         YlMcskkFF1d+NYmONoUzOnm4rVbAJWI30WkUzYSbPJ5X/4TE1F5C7K0hyA6Lm5E7C/Dd
         NMjQ==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20251104; t=1776162434; x=1776767234;
        h=content-transfer-encoding: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;
        bh=Soy1YtMmw4vyXzarneePUgAcchK40/FeKLITTrphjhw=;
        b=HxdoEbFBpdPRLI4O7fAECG5jzQ0e8mFEfUSjVzfC4AvQ6phaKuyk78CWrxnCJVTCK9
         JYYhA8dq8E/T7XyqMPrQUWBuvt8W3IRQAKOStgIbZ2W2DOEMOhCVXXo9RdktJXKSNy2e
         Rm6xh5G4GD1623yupCEcQozjzWPJ36mTaknTSabzBsnTww9N5YJh90BGb01ncXwXXjUz
         vCpRKKlTbvyLf6Ew/zIwg2HCeyXLdJFlSoAzHZaea3Xi0ohWLVErI77atbwchOpn8duW
         YigWhU01mZ5CIGkieipN4e4mbclzHVzGXNgXj+RKDKeetfo/Eij+7nyIqYxFtupshAGF
         uOOw==
X-Forwarded-Encrypted: i=1; AFNElJ9Yn/nC0V3/PQ/HMUBYoO8D4Bm//368VO2o+gVgod17dPVEaMJNMqSWSYs/djUUBaqqQyNlhGAjO5c=@lists.xenproject.org
X-Gm-Message-State: AOJu0YxSe/4dZEey1F3ouL+cwtj+ylsoyho9IaXiaYnG7+X8fdqY2WxP
	Q9Fl45myHZ7JiF1rxqyG4J/FTj3YMNe8eJlJld8a+JID3nkTTob9wAPm
X-Gm-Gg: AeBDietIWmRw5o445rabJAW2sFGasiKfIyv3RZhdR5AZFhj1N1vJNcAmsPJp3UN7p0e
	i4pNkEKIvi3OfeG+mNbH8xA2780Tx8NlmrOyS4PDRjj7olTtgTdc/H6hPv349xBLx/6lHj2Eb55
	/6Bm2jUTmtaCOwSACcRCrkRe+CyRz/+t9tOwiOKMoECw4bQz2lbYDrU2aeanJRfyaRznKeN1+U6
	VEkK9/L5QFsvcL+M/ZXZAL/+0H7Zs53AOj/uShILVoOiqjfiLJt360h8oJK1/QtqrZiFIkL78HE
	ebT34snp7aKIOrkS9cRzqycp9KrZmcl4/c6bncxvP1q8OFQqSSJYQyfH0xckyWjG6xa1iizO+t9
	513BeyM22tgShQDM8g7gC2bMyeR4542VYkt5bUdObCCf61Yhyu5D0qiJZjOpRCEBKFncEoyoqQ0
	ghUOJcg1Yg7sktJb6lZ+0PDTD2+5HmhCK+RV/bzFar46YoUQlVSykQ6VBXjLgxbHwb7MW9Pirmp
	fZ4O6zKqvuLOQ==
X-Received: by 2002:a05:600c:4f56:b0:480:690e:f14a with SMTP id 5b1f17b1804b1-488d68765fcmr253833985e9.14.1776162433894;
        Tue, 14 Apr 2026 03:27:13 -0700 (PDT)
Message-ID: <a324161d-f8b4-47fe-b5ac-52df6060e45b@gmail.com>
Date: Tue, 14 Apr 2026 12:27:11 +0200
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH v1 15/27] xen/riscv: add very early virtual APLIC (vAPLIC)
 initialization support
To: Jan Beulich <jbeulich@suse.com>
Cc: Romain Caritey <Romain.Caritey@microchip.com>,
 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.pau@citrix.com>,
 Stefano Stabellini <sstabellini@kernel.org>, xen-devel@lists.xenproject.org
References: <cover.1773157782.git.oleksii.kurochko@gmail.com>
 <e8bcf5618a19fb44d4391410f2f67ffd98a96647.1773157782.git.oleksii.kurochko@gmail.com>
 <44cb3124-8972-4a0c-b785-64f2022f178b@suse.com>
Content-Language: en-US
From: Oleksii Kurochko <oleksii.kurochko@gmail.com>
In-Reply-To: <44cb3124-8972-4a0c-b785-64f2022f178b@suse.com>
Content-Type: text/plain; charset=UTF-8; format=flowed
Content-Transfer-Encoding: 7bit
X-purgate-ID: tlsNG-16d1c6/1776162434-65A543D8-5155CBAE/10/73395122804
X-purgate-type: spam
X-purgate-size: 5930



On 4/2/26 1:58 PM, Jan Beulich wrote:
> On 10.03.2026 18:08, Oleksii Kurochko wrote:
>> @@ -47,6 +48,19 @@ struct intc_hw_operations {
>>                               const struct dt_device_node *intc);
>>   };
>> +
>> +struct vintc {
>> +    const struct intc_info *info;
> 
> Isn't this referencing a physical INTC's structure? Why would the virtual
> one's properties have to match that of the physical one?

It is because of how vAPLIC emulation load and store is working.

> 
>> --- /dev/null
>> +++ b/xen/arch/riscv/include/asm/vaplic.h
>> @@ -0,0 +1,36 @@
>> +/* SPDX-License-Identifier: MIT */
>> +/*
>> + * xen/arch/riscv/vaplic.c
>> + *
>> + * Virtual RISC-V Advanced Platform-Level Interrupt Controller support
>> + *
>> + * Copyright (c) Microchip.
>> + */
>> +
>> +#ifndef ASM__RISCV__VAPLIC_H
>> +#define ASM__RISCV__VAPLIC_H
>> +
>> +#include <xen/kernel.h>
>> +#include <xen/types.h>
>> +
>> +#include <asm/intc.h>
>> +
>> +struct domain;
>> +
>> +#define to_vaplic(v) container_of(v, struct vaplic, base)
> 
> I'm confused here, maybe first of all because of the use of v. v is our
> common identified for struct vcpu * instances. Using it in a macro like
> this one suggests a struct vcpu * needs passing into the macro. Yet from
> the two uses of the macro that doesn't look to be the case.

v it is stale name when vpalic() was per vCPU. (what looks incorrect as 
on real h/w APLIC isn't belongs to one pCPU).

> 
> Perhaps best to have a struct domain * passed into here?

struct domain * will be better.

> 
>> +struct vaplic_regs {
>> +    uint32_t domaincfg;
>> +    uint32_t smsiaddrcfg;
>> +    uint32_t smsiaddrcfgh;
> 
> The latter two aren't used, and generally I'd expect a h-suffixed field to
> exist only for RV32. (The un-suffixed field then would need to be unsigned
> long, of course.)

It should be a part of another patch. I will drop them for now.

> 
>> +};
>> +
>> +struct vaplic {
>> +    struct vintc base;
> 
> How does "base" fit with the type of the field?

The field name base is a idiom for embedding a "base class" struct as 
the first member, enabling a form of inheritance.

Any suggestion how to rename it better?

> 
>> --- a/xen/arch/riscv/intc.c
>> +++ b/xen/arch/riscv/intc.c
>> @@ -6,6 +6,7 @@
>>   #include <xen/init.h>
>>   #include <xen/irq.h>
>>   #include <xen/lib.h>
>> +#include <xen/sched.h>
>>   #include <xen/spinlock.h>
> 
> Why is this change needed all of the sudden?

Incorrect rebase. I will drop that.

> 
>> --- /dev/null
>> +++ b/xen/arch/riscv/vaplic.c
>> @@ -0,0 +1,74 @@
>> +/* SPDX-License-Identifier: MIT */
>> +/*
>> + * xen/arch/riscv/vaplic.c
>> + *
>> + * Virtual RISC-V Advanced Platform-Level Interrupt Controller support
>> + *
>> + * Copyright (c) Microchip.
>> + * Copyright (c) Vates
>> + */
>> +
>> +#include <xen/errno.h>
>> +#include <xen/sched.h>
>> +#include <xen/xvmalloc.h>
>> +
>> +#include <asm/aia.h>
>> +#include <asm/imsic.h>
>> +#include <asm/intc.h>
>> +#include <asm/vaplic.h>
>> +
>> +#include "aplic-priv.h"
>> +
>> +static int __init cf_check vcpu_vaplic_init(struct vcpu *v)
>> +{
>> +    int rc = 0;
>> +
>> +    rc = vcpu_imsic_init(v);
>> +    if ( rc )
>> +        return rc;
>> +
>> +    imsic_set_guest_file_id(v, vgein_assign(v));
> 
> And vgein_assign() can't fail? (Rhetorical question - of course it can. That
> function shouldn't assert that it can fine a valid ID.)

Technically it can't fail (except some bug of course), this function 
should in general return 0 (when there aren't left h/w IDs) or something 
 > 0 (when there are some h/w IDs). ASSERT() inside it was added only 
because of ...

> 
> But then - aren't you limiting the number of vCPU-s a host can handle by the
> number vgein IDs?

... At the moment, I am limiting because S/W interrutps guest files 
(IDs) aren't supported.

> 
>> +    return rc;
>> +}
>> +
>> +static const struct vintc_ops vaplic_ops = {
>> +    .vcpu_init = vcpu_vaplic_init,
>> +};
>> +
>> +static struct vintc * __init vaplic_alloc(void)
>> +{
>> +    struct vaplic *v = NULL;
> 
> Onve again - why the initializer? In fact, ...
> 
>> +    v = xvzalloc(struct vaplic);
> 
> ... this could be the initializer.

Sure, I will use it as initializer.

> 
>> +    if ( !v )
>> +        return NULL;
>> +
>> +    return &v->base;
>> +}
> 
> If you returned and ...
> 
>> +int __init domain_vaplic_init(struct domain *d)
>> +{
>> +    int ret = 0;
>> +
>> +    d->arch.vintc = vaplic_alloc();
> 
> ... stored struct vaplic *, the slightly odd to_vaplic() macro wouldn't
> be needed.

vaplic_alloc() return struct vintc *, which is then used by to_vaplic() 
to get struct vaplic *.

> 
>> +    if ( !d->arch.vintc )
>> +    {
>> +        ret = -ENOMEM;
>> +        goto fail;
> 
> Nit: goto when simply return could be used.
> 
>> +    }
>> +
>> +    d->arch.vintc->ops = &vaplic_ops;
> 
> Are other kinds of ops structures going to appear? If not, why the extra
> indirection?

At the moment, no I don't see any other kinds of ops struct. It was just 
convenient way to group them and then easier to initialize them - just 
one assignment instead of addinng a separate line in domain_vaplic_init().

> 
>> +    to_vaplic(d->arch.vintc)->regs.domaincfg =
>> +        APLIC_DOMAINCFG_IE | APLIC_DOMAINCFG_DM;
>> +
>> + fail:
>> +    return ret;
>> +}
>> +
>> +void __init domain_vaplic_deinit(struct domain *d)
>> +{
>> +    struct vaplic *vaplic = to_vaplic(d->arch.vintc);
>> +
>> +    XVFREE(vaplic);
> 
> If this cleared the struct domain field, then yes. But the way it is, just
> xvfree() will suffice. (Re-work following other remarks may want it to
> become XVFREE() again, though.)

Agree, it could be xvfree() for now.

Thanks.

~ Oleksii


From xen-devel-bounces@lists.xenproject.org Tue Apr 14 10:34:24 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 14 Apr 2026 10:34:24 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1281575.1564441 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wCb66-0005YN-HB; Tue, 14 Apr 2026 10:34:22 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1281575.1564441; Tue, 14 Apr 2026 10: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 1wCb66-0005YG-DR; Tue, 14 Apr 2026 10:34:22 +0000
Received: by outflank-mailman (input) for mailman id 1281575;
 Tue, 14 Apr 2026 10:34:21 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <roger.pau@citrix.com>) id 1wCb64-0005TT-Tx
 for xen-devel@lists.xenproject.org; Tue, 14 Apr 2026 10:34:21 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wCb64-005RxD-9s
 for xen-devel@lists.xenproject.org; Tue, 14 Apr 2026 12:34:20 +0200
Received: from [10.42.69.5] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <roger.pau@citrix.com>)
 id 69de182a-2eae-0a2a0a5409dd-0a2a4505bdb8-2
 for <xen-devel@lists.xenproject.org>; Tue, 14 Apr 2026 12:34:20 +0200
Received: from [40.107.209.66]
 (helo=PH8PR06CU001.outbound.protection.outlook.com)
 by tlsNG-c201ff.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.0)
 (envelope-from <roger.pau@citrix.com>)
 id 69de182a-3760-0a2a45050019-286bd1427fbf-3
 for <xen-devel@lists.xenproject.org>; Tue, 14 Apr 2026 12:34:19 +0200
Received: from CH7PR03MB7860.namprd03.prod.outlook.com (2603:10b6:610:24e::14)
 by DS7PR03MB5573.namprd03.prod.outlook.com (2603:10b6:5:2d1::19) with
 Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9769.48; Tue, 14 Apr
 2026 10:34:17 +0000
Received: from CH7PR03MB7860.namprd03.prod.outlook.com
 ([fe80::f5ba:35df:1c9f:b343]) by CH7PR03MB7860.namprd03.prod.outlook.com
 ([fe80::f5ba:35df:1c9f:b343%4]) with mapi id 15.20.9818.017; Tue, 14 Apr 2026
 10:34: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=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=Ajk3/CBDEvqd5ldbLVNXK6BrF1eE4rP5G2Huus7/PFAGN6vPHaM0EDCKraXUdsSFQ0Q5nea8h5DgyNbxH8GSXq6YNikm7KF89l5NI4CTNIr7zTfZsdh5/fq3GMliVg2ZNDKo+27oBMMOZc6o5MUh39BOJYBHZ7E788ZHbWNYegLEePjwNWJOevJRJsD4o3rg7hmMoRGIRpjE2jb54/5f/Yrzf7CxGaKXYRliYLa5RRZ6bcfs53bXe58sEJgpIpezc3/w7Dc8TxxuDiYk3J0Jrf19mJ7ku2C7ePVbTmHRwoK2Tc5mHwl/qJaA+/rcgq4LzDqA+0iDonPrGJ9jCAzAmw==
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com;
 s=arcselector10001;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1;
 bh=rGVSDh5emAwA1BEqtFY9L9MsAQ0MuA1Vvn2A/zahgyg=;
 b=f08y7wmZFZiEo9TrXj83dPz1Je7cyA698vQKlK4fSvDENugNjKWGpq3y4+YiDRSGMtXOsCvV7pfUPs1p/a7ojb+iPYhfcHBVn+ReyVcnulBf1eN+2MQrhfrSuOVBh+fiD0GR9sxfTKL22eC687mylKAfxzcFefIiucl1uW54CIJdqUpjfyxVyoFYdnM9V6I18MpAdA6Mn2GzLOq6ehSvHuBnHLVqd6atWmx9/MdQ2f8ZuUMtfVH1SGUUe6Qv1/y2tmK0gzuJrKT/ZIUBPbMQjqeUwtG+tQikHNSXeh2xL0rbFR5MMeBDhjb1adxw77jOZ9SiYRbA4GWlY8K25f9g8Q==
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=rGVSDh5emAwA1BEqtFY9L9MsAQ0MuA1Vvn2A/zahgyg=;
 b=kt//cFlS0ndojtG1SWYn+sWeSabhY85IIQZJ76Z/HSg+mGsefI9v+BnTodCsi6B1FYieu922YRw4sI+CsFgt5d/ba1HAFI23dC1aWMKXx5gfWzjnGCXOK1Q65jtQqH/ts27g4w6WwXYNBQBPuwBBs+6L2ffxONq0q9xUQU0nnhc=
Authentication-Results: dkim=none (message not signed)
 header.d=none;dmarc=none action=none header.from=citrix.com;
From: Roger Pau Monne <roger.pau@citrix.com>
To: xen-devel@lists.xenproject.org
Cc: Roger Pau Monne <roger.pau@citrix.com>,
	Jan Beulich <jbeulich@suse.com>,
	Andrew Cooper <andrew.cooper3@citrix.com>,
	Teddy Astie <teddy.astie@vates.tech>
Subject: [PATCH 1/2] x86/time: use native TSC scaling factors when TSC is not scaled
Date: Tue, 14 Apr 2026 12:33:26 +0200
Message-ID: <20260414103327.7420-2-roger.pau@citrix.com>
X-Mailer: git-send-email 2.53.0
In-Reply-To: <20260414103327.7420-1-roger.pau@citrix.com>
References: <20260414103327.7420-1-roger.pau@citrix.com>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
X-ClientProxiedBy: MA2P292CA0016.ESPP292.PROD.OUTLOOK.COM (2603:10a6:250::14)
 To BY1PR03MB7875.namprd03.prod.outlook.com (2603:10b6:a03:5b1::10)
MIME-Version: 1.0
X-MS-PublicTrafficType: Email
X-MS-TrafficTypeDiagnostic: CH7PR03MB7860:EE_|DS7PR03MB5573:EE_
X-MS-Office365-Filtering-Correlation-Id: 4bbcf984-4e24-4ac2-c874-08de9a116085
X-MS-Exchange-SenderADCheck: 1
X-MS-Exchange-AntiSpam-Relay: 0
X-Microsoft-Antispam:
	BCL:0;ARA:13230040|376014|366016|1800799024|18002099003|22082099003|56012099003;
X-Microsoft-Antispam-Message-Info:
	9KwTCntheGr4nN8hi2eJ7QNXyRT1Bny65fvvlwxnq61XHr5s/GexIXXFonZQoyNFtNQLzJS04DAkpG2+COY0rYMHkopoLwmnDRf7c+Ynj0xNg3dmCBHjZYWZiGoRvPOqaI1wZzimOZb5h8wQEt2pbPUPEXa0WAsR8L+8xyVg8rIq6ptYtTidNhtKB005keVgyjrmfsEJNL74D724bPcrTPESEYegpxoU6nMj/PXvWdSTg20XuO+xrSSPJxXi5ahyny9I8tquh7S3g2sXgocE0ZOWt7lY8ASn6Q7Hh7c7BH3nTgiEr/X/TPE2HQRbhTNY7HuojDHysaXbiysqQab8l0xeK2qfOJnZ59sKbU1ApDSw+Jpg6wlH2+3M/fFcTLRoLXrn6BfC4tVz4Rv+kLLUVqEwH8Wj5mNKxJ5uH0dOKZZxNZrZopxc4ZmBp053Z+OpOFa1g0ZFifTs4D/9xiV/N1F3E5GMaVDQPv42rdQfPky+cCeCG8fW0w9Nyev+MZFk2cOxz9DKgVvAXSwhzNPT/Aw8Zhoo+0VRP5Puo7y4I72U2y5doYlLO537jt3o6/JbikRvEVs8iEalt5vyKAIrIYI82uUMDnn/f/G+Z8NWl3A1w7w3CjFDrMKNzBlMYIVn14ZkJ9sttLIU4+tBYsRAT3sneRQ1YSMNrAqH44o1M0fgqiVOzalkMJw2LIGOWKXRoAl19Izzzet8rLaZbH0cjFfzZKAoU26xHi+V47WhXaY=
X-Forefront-Antispam-Report:
	CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:CH7PR03MB7860.namprd03.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(376014)(366016)(1800799024)(18002099003)(22082099003)(56012099003);DIR:OUT;SFP:1101;
X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1
X-MS-Exchange-AntiSpam-MessageData-0:
	=?utf-8?B?SXdCV29WMW5wa3lZdDlxY2E1UDZTYzBFZmhHZjBybElGRWlGa0RuN3diaDA1?=
 =?utf-8?B?ZkJGT3RkdHBSSkZndWEyTVhQc2kxblNheUlFWUFCY1ExMEtOYUJudmw4REFP?=
 =?utf-8?B?amZCOVVxdlZHVVh3TkhhSWt4RlhGWWVReEYxb3dZZlBvT29UUlVqaXF2aW9y?=
 =?utf-8?B?MEI4SlZuRDdaL3hFRmZtaXFyVGx2OGpiUXlzd3ZHWnN1dTRlY3VXWVBMeWVo?=
 =?utf-8?B?VGRNcEwrOFlqS2NZTnpvTlNRYXFqWmdSTnJNVjhXMXZIQzAvTWMzUXY0RVZr?=
 =?utf-8?B?cDM1c29nbCtGOE1Mcmc2RVZRQVI5R004ZjgweUJ2YStEaDRhLzFSR3BQQXk0?=
 =?utf-8?B?a1VQTWlGVDdvV3BDSFJ0b3ZpMHltcEhUQU1wdDV5SHpKL2c2OVdzdlJNT2RF?=
 =?utf-8?B?Vk16OEZySW9lT0VPdUNRaG80SG1JeUZlaG5WNEhQYnpnTzhzU01rOUp2QlMx?=
 =?utf-8?B?TytnQ29BTlE5NWZ3bmxuejFUc05Ia2t3azBjR0wzc1dTVXpuQ0pXZTFtWFJY?=
 =?utf-8?B?VWt6cSs2UjNNVWYzQTRyczFteEgrZHBDajF1eDZBRTRwVkx0NXdZczNqZkdl?=
 =?utf-8?B?akZuOEJJT2tCZ0JNNkRuOE8xQ3Y4bXFCSFJvWUZ1UU1WYWpRam5LSlBLV2Ja?=
 =?utf-8?B?N2s4V3dDcnhBUlE1WitvdjZJZFdsdExJWG80YU1HU3pkUEpKa2NtUXc5ejhX?=
 =?utf-8?B?VzlFQ1JLSm9ZZzJYUHk4bkZLUUlhOUQ2RVZ2WEVSQzBta3BTL1hpcVBWUVk5?=
 =?utf-8?B?L1BlY0xaTURFeEIxTGtSc216aHRyWUpjTkF2L3FDZThPTTEzTURmb3lhclNB?=
 =?utf-8?B?dXVYd3dxK21oa2FhYjkxRUhNeGF1K1o1VmJjM3JzL3lzeEdZVTRMNHRjdnNG?=
 =?utf-8?B?Y1ArM0hYRlJIMENIZXF0elpKLzc3OFo2VyswckhVWEJlWkZ2VktKQit4ck5y?=
 =?utf-8?B?NW02K1ZwQXJSUkN1UnQ3Nk56citnc01wOXkzblZZSElOblJxTXRzdnZrUjk3?=
 =?utf-8?B?L0JMck1jYmhQbUQ2cjZGRlZXSENYUkhnazI4L0g0TURkTnpIREl2M3lnVmh6?=
 =?utf-8?B?eTZvVVVZWE9TYkxmSE5MRmp0VlFGTENxZnN4QkgwOVVKWDVEL3BmRk1RZ2tq?=
 =?utf-8?B?UWhWUGovQmY3ZE9NUFJjN21YY29adzczQVBEZHNDQyszQmVHWU1NdGsxcndl?=
 =?utf-8?B?UHNNL2FFRUdET0xkWWdzQlBTRTY5ZnltQkhsWUFPSUl6ZGx5T1lYNjZSeXJ4?=
 =?utf-8?B?K2oxY2IxYXpLZi9WOVpKTEFYSmkyNVA5bUVaQUFpSW1abGVwbElRUnIxR3lY?=
 =?utf-8?B?SDRZWDJkSk82R0pZSGphOVRhaDFFN2duMTdqM1FyZ3QzVElxRlpQaWZnTHlP?=
 =?utf-8?B?ZkFUcW9rZHhlSTNTblMrSWs5Uk95WHZTSUI4SVNXcm1sRTd6b0NSeURWMGpE?=
 =?utf-8?B?dVJRQmIwUWpqSERDeTVYUjVCdXJCK1FrWFNyOEI0QTl2WjBBb0ZPTTE3bThV?=
 =?utf-8?B?UnFzUTkxYzloOUdGdVRIbU00UFV3amt4NXVVVXczQmcvbnNhVDArZERiaURO?=
 =?utf-8?B?bk9yUE44MXUyTktESWxvSTA0Y0c0R0wzNDRvaXB3L1JMV010OFpVdnNQL2tI?=
 =?utf-8?B?aDJBSjdwTTliWDg3RHd3NU9aa1g3MUxhSmV6UDBnY3g5T3hjL0lHNWkxbkdF?=
 =?utf-8?B?eklIZ0VKRXdEQW4vWWVsaFg3Zmp0WDExb2I3cGEwK3lNZm1qS0xIaHpnTlFE?=
 =?utf-8?B?bVM5SWFiMU9IWmxmdGEvT0J0N1ZnTjVnRGRudEZSZlZlWHp2b0FaNG1qTXRv?=
 =?utf-8?B?M0J1QmQ2MXFlRFZRTi9hcUZpVEF5M0t1Q2JpVU9HSUM1M0w1K09oY01CVEp3?=
 =?utf-8?B?STEvMDFMaDBJNTJRS0R3OHM2SW4rclVNS0NuYUZ0c0o0WFQ5dXBUSkJQUEh3?=
 =?utf-8?B?d1pOUmdJNkl0N3R6RzBwQUQwd1BRY0xTMjJYc3l3bUZEa21qKysvTERha0gr?=
 =?utf-8?B?ZVdJN09tT3c2djBKRmhocXZhMi9xVGxIRHpLRkt0RDdqNGZLTnNSZ3ArcEFR?=
 =?utf-8?B?ZE5xclM3T2U2Njh1RVEvQnV0RWhCYUxGLzFHL2tpTzdCUWI3MCt3N2pjSksx?=
 =?utf-8?B?Y2ppRi9HSk1ieFQzc0piSG0zV0sySGJLcWw2bGw0TzFtUzFHYXJxd2hVZzA4?=
 =?utf-8?B?a3Z1azN0MFo4WmhmQTdlcm9Hems3OGpVK1BTMW5QbFcxVlpZK00zRXR0dDQ4?=
 =?utf-8?B?Q1F5VllJTE9SWHZDR0Y3TWUzZ0xOb0dOZ0ZaaythWWVXekpydXV0M0I1cThM?=
 =?utf-8?B?eXlqbm1aUmhkSXNMU21SamhHYXp1UjlDb2ZlRy9IMjFMWVozdm5oUT09?=
X-OriginatorOrg: citrix.com
X-MS-Exchange-CrossTenant-Network-Message-Id: 4bbcf984-4e24-4ac2-c874-08de9a116085
X-MS-Exchange-CrossTenant-AuthSource: BY1PR03MB7875.namprd03.prod.outlook.com
X-MS-Exchange-CrossTenant-AuthAs: Internal
X-MS-Exchange-CrossTenant-OriginalArrivalTime: 14 Apr 2026 10:34:17.1600
 (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: L/MB8L+7ZF+G8/lZdoyOSXo54R5RGP91ubWBu4O2D5Q8NB4Rli6CJyoxLkdducX/8mZkvMCQizA81u5GNqLnnA==
X-MS-Exchange-Transport-CrossTenantHeadersStamped: DS7PR03MB5573
X-purgate-ID: tlsNG-c201ff/1776162860-2312596F-A368D2EF/0/0
X-purgate-type: clean
X-purgate-size: 2885

When running HVM guest in native TSC mode avoid using the recalculated vTSC
scaling factors based on the cpu_khz value.  Using the kHz based frequency
leads to the TSC scaling values possibly not being the same as the ones
used by the per CPU cpu_time->tsc_scale field, which introduces skew
between the guest and Xen's calculations of the system time.

On a 2gHz system, where the frequency is possibly detected as 1999999999Hz
(note this is a worse-case scenario), the cpu_khz variable will be set to
1999999kHz, and hence 999Hz cycles will be not accounted for per second.
Over a second (the time synchronization period), this leads to a skew of:

cycles * 1 / (Hz freq) = 999 / 1999999999 = 499,5ns

So far this has gone unnoticed because the time synchronization rendezvous
forces the update of the tsc_timestamp and system_time fields in the vCPU
time info area, and hence the skew only accumulates up to the rendezvous
period.  Attempting to remove the rendezvous causes the skew to grow
unbounded.

Fix by using the native TSC scaling values (as used by Xen) when the guest
TSC is not scaled.

Fixes: eab8a90be723 ("x86/time: scale host TSC in pvclock properly")
Signed-off-by: Roger Pau Monné <roger.pau@citrix.com>
---
I'm worried about the usage of cpu_khz beyond simple printing it for
informational purposes.  Overall I think it would be safer to store the
frequency in Hz, as to avoid losing the least significant digits.

In any case, that's a different change.
---
 xen/arch/x86/time.c | 18 +++++++++++++-----
 1 file changed, 13 insertions(+), 5 deletions(-)

diff --git a/xen/arch/x86/time.c b/xen/arch/x86/time.c
index 4233ea507d40..244277c0a921 100644
--- a/xen/arch/x86/time.c
+++ b/xen/arch/x86/time.c
@@ -1710,17 +1710,25 @@ static void collect_time_info(const struct vcpu *v,
     else
     {
         if ( is_hvm_domain(d) && hvm_tsc_scaling_supported )
-        {
             tsc_stamp            = hvm_scale_tsc(d, t->stamp.local_tsc);
-            u->tsc_to_system_mul = d->arch.vtsc_to_ns.mul_frac;
-            u->tsc_shift         = d->arch.vtsc_to_ns.shift;
-        }
         else
-        {
             tsc_stamp            = t->stamp.local_tsc;
+
+        /*
+         * HVM guests using the native TSC ratio should use the same per-CPU
+         * scaling factors as Xen.  This ensures time keeping is always in sync
+         * between Xen and the guest.
+         */
+        if ( tsc_stamp == t->stamp.local_tsc )
+        {
             u->tsc_to_system_mul = t->tsc_scale.mul_frac;
             u->tsc_shift         = t->tsc_scale.shift;
         }
+        else
+        {
+            u->tsc_to_system_mul = d->arch.vtsc_to_ns.mul_frac;
+            u->tsc_shift         = d->arch.vtsc_to_ns.shift;
+        }
     }
 
     u->tsc_timestamp = tsc_stamp;
-- 
2.53.0



From xen-devel-bounces@lists.xenproject.org Tue Apr 14 10:34:25 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 14 Apr 2026 10:34:25 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1281574.1564433 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wCb64-0005Kf-6d; Tue, 14 Apr 2026 10:34:20 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1281574.1564433; Tue, 14 Apr 2026 10:34: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 1wCb64-0005KY-2w; Tue, 14 Apr 2026 10:34:20 +0000
Received: by outflank-mailman (input) for mailman id 1281574;
 Tue, 14 Apr 2026 10:34:18 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <roger.pau@citrix.com>) id 1wCb62-0005KS-5G
 for xen-devel@lists.xenproject.org; Tue, 14 Apr 2026 10:34:18 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wCb61-0091k8-D0
 for xen-devel@lists.xenproject.org; Tue, 14 Apr 2026 12:34:17 +0200
Received: from [10.42.69.9] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <roger.pau@citrix.com>)
 id 69de1816-5cb7-0a2a0a5109dd-0a2a4509bf4e-36
 for <xen-devel@lists.xenproject.org>; Tue, 14 Apr 2026 12:34:17 +0200
Received: from [52.101.201.58]
 (helo=PH7PR06CU001.outbound.protection.outlook.com)
 by tlsNG-bad1c0.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.0)
 (envelope-from <roger.pau@citrix.com>)
 id 69de1827-bf79-0a2a45090019-3465c93afc7a-3
 for <xen-devel@lists.xenproject.org>; Tue, 14 Apr 2026 12:34:16 +0200
Received: from CH7PR03MB7860.namprd03.prod.outlook.com (2603:10b6:610:24e::14)
 by DS7PR03MB5573.namprd03.prod.outlook.com (2603:10b6:5:2d1::19) with
 Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9769.48; Tue, 14 Apr
 2026 10:34:12 +0000
Received: from CH7PR03MB7860.namprd03.prod.outlook.com
 ([fe80::f5ba:35df:1c9f:b343]) by CH7PR03MB7860.namprd03.prod.outlook.com
 ([fe80::f5ba:35df:1c9f:b343%4]) with mapi id 15.20.9818.017; Tue, 14 Apr 2026
 10:34: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=ExzE881PzynhrciFQfyBS2bSjDlG6dA1hcz5KCX7MkZ0CZbC/GoWd/R4LJq+sh4GYrpoh24T/rrsBw29zeJAQzbYyGbbsJS5w+BbRcyFtiHADVf+Q0VT/+AsZL2S4S/q5d7lFBl0d52TO4BNSeYEFVk3jPoF2ugpNn2WtRQYURlswsPseyb1Nlj1sRAzllOwOaxcM9pIK174Cdr+JftAlhq+RXPq9dn9Hb+zcV176EXFXn3UkfjO5DlXACJn31x/hCtIItViw/LWThoS07+m2cI/Ajb9Qq96SyJuRzXJI59GgLRSLWL9bwGvU5RhkNZRRpFGw7vaSeAAOMoOas7yXQ==
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com;
 s=arcselector10001;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1;
 bh=qkmC8IXQxgYOEFFtKm/qpnF1ibUpy9+DhFJIcy5HhzQ=;
 b=IsghH2346Dr51BGHwL9i+e2TVbZB4VPJFp1mCRi9++Y8WYE3zq+Ke1ufN/qey2kpmafDjkU92kTDrhdixqU8AOMXL0kJ8ALpbApq40GoZYALD4BYyNbAAUTeBsBfpMvM5ll752AciNs+Qu5RVTtqU+7AUaDHCK+Ktl5sKVfXe4qMuTCnq34ao+L7vrDRmBt2zoZ+FhEKeDasjU2sR6S1puClhN9pMtOCas2dd35vRhVBw8ckVyO+9U1TimxK4EAu6QkQZtLgw+MAvn3DS1mRXbTUWP7U36M19UdgYtdOfZSOPMMeIAOA0joHfl1m+gJ7dU0v/OthBuyA4tDOkiNFXg==
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=qkmC8IXQxgYOEFFtKm/qpnF1ibUpy9+DhFJIcy5HhzQ=;
 b=dG7DkrYFS7utPX6RhOceBMdgt3B89Pzr4fJhsFSSJ2ateaH7hkq1SrIyfIA7J4VH2MOIjOOBcrMI5k4CItd+Ut/EKM2g0Vtwk8hixpv5JRih2BwV10W3IvCEL50PVQnVSVKS2KOpgB5Gs7braLo9YeCIoCudjSUzrgmx6zs4s2c=
Authentication-Results: dkim=none (message not signed)
 header.d=none;dmarc=none action=none header.from=citrix.com;
From: Roger Pau Monne <roger.pau@citrix.com>
To: xen-devel@lists.xenproject.org
Cc: Roger Pau Monne <roger.pau@citrix.com>,
	Jan Beulich <jbeulich@suse.com>,
	Andrew Cooper <andrew.cooper3@citrix.com>,
	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>,
	Alistair Francis <alistair.francis@wdc.com>,
	Connor Davis <connojdavis@gmail.com>,
	Oleksii Kurochko <oleksii.kurochko@gmail.com>
Subject: [PATCH 0/2] time: fix time accounting for x86 HVM guests
Date: Tue, 14 Apr 2026 12:33:25 +0200
Message-ID: <20260414103327.7420-1-roger.pau@citrix.com>
X-Mailer: git-send-email 2.53.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
X-ClientProxiedBy: MA3P292CA0056.ESPP292.PROD.OUTLOOK.COM
 (2603:10a6:250:48::14) To CH7PR03MB7860.namprd03.prod.outlook.com
 (2603:10b6:610:24e::14)
MIME-Version: 1.0
X-MS-PublicTrafficType: Email
X-MS-TrafficTypeDiagnostic: CH7PR03MB7860:EE_|DS7PR03MB5573:EE_
X-MS-Office365-Filtering-Correlation-Id: 51fae068-5a82-4feb-7763-08de9a115e58
X-MS-Exchange-SenderADCheck: 1
X-MS-Exchange-AntiSpam-Relay: 0
X-Microsoft-Antispam:
	BCL:0;ARA:13230040|7416014|376014|366016|1800799024|18002099003|56012099003;
X-Microsoft-Antispam-Message-Info:
	r/ulJ5ns8Ewhg5DAT4NqfjB6LENXwdDQer7CXertHxq0CCX1ekTTyMU5kaw5jq63v924Pm5Ex2+zLx5pKwwmMjmD87rswf7cE8/NfjJrMvdErgAMLByyc+Fuv0+7TUTBHIBD+Vhc4SS3yfADIK7pOAKC2mHxw3PryBPP/EJIPa9jIYls9i26GC9LulXRXZmPJnyh8kwKhg824ZPln1GnmSQtBUg36yO28PZS4iwaIrSUDOivSPX/dtEXRpvF6YVkdeKIuUsMbehmrOsJHTsgoCzEtv6Uz/JiZzLSfEHEZdnMtU04k+3KJ5ugNHQuG3t5kJC2G1x8vimc50qh4R8q/s7/x8EvqbCfyvAM3GgT1LVHN63xVksjyvanWKGZXefVT6WybNamtVTgJbJaWg1B5JQxEmQS8Vl2RA9NVm23qZxY7gW/zTGhQ/ZIwZaQGTvsT8XhEzTXB2moOFA5BRCUPPQOzi2+VMeD7Vu2/MM5aS+1BM2fxSOtqvhg6N04Fs52Ef27w0gBmC+QMLQ3zoW1BWcgaTUGlD55pzBQlXtslgYIaiDNGk5HrWIRFqlX8nXKcyh8Co63Li45x0QDLcMJ60kUVU/WjpRxRoy+jRdhQJZVQaDErTKADl6F9TvgDBLzF/awd0HU+i8SrZG2jfHYGgSn+5X0bcE7hu4KU5n7PyxU7KYcckkapJo5uwAxCqLHe/JiNdWya5JWEq1Orv8S6GIqklyrp7DLpZ7RjCwwYQU=
X-Forefront-Antispam-Report:
	CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:CH7PR03MB7860.namprd03.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(7416014)(376014)(366016)(1800799024)(18002099003)(56012099003);DIR:OUT;SFP:1101;
X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1
X-MS-Exchange-AntiSpam-MessageData-0:
	=?utf-8?B?NFRvT2JUYVREYk4zamtPaDNhMS8waXcxTlQ2NHRYSlJ0dDFiWFJCS2c4YXY5?=
 =?utf-8?B?WnNxWHBQaVZqTnJVQnI3RDRzeGtIcDM1SURIV0U1U3ZScUZoSTRaU3Jkazhk?=
 =?utf-8?B?RFBxSDl5WGxTcENDeEZnektucHJYc1EvVzloMm9VV0ZwSEdTZTlCblExc3ha?=
 =?utf-8?B?OHZsNFZXZU16ZU5panBQNzR2NVNoTGpDUGlxOHlTSjdia2dyb3R4TFNzclJZ?=
 =?utf-8?B?dDAybXdQbkhYanlueitFWmw5T1luWFN3TExydWpsTkRCSU12V3prRk1YeUlU?=
 =?utf-8?B?bVR0bFRJZ1htZXBhWkFhcTBNQzRZcy9zQUxLUmJSN3IweDJpdmFlcGFIb2w4?=
 =?utf-8?B?T0tQbEcvZUt3TWFvSGVCWEpNZmFwbVhuT2xOVE5tbkZRS092REVkbGtDRUlU?=
 =?utf-8?B?ZDNQTW92a01SZjhOQmduME9qa1ZUbVdvTktjOUQ1QmpUM2dXN3Z5Vmgvd3Ry?=
 =?utf-8?B?c0lMRytzemNjUll4amw1RCtJeUZINUhBdlZ0ejlvWEZWdlBkcHVKeWYvTU5P?=
 =?utf-8?B?dWt0SjdCRmIwMy9YOHFMcWtBTjdMdE5HSE1jdlcrb2ZDalJ3b1RPbmNjcEIz?=
 =?utf-8?B?d2tnV01oNVExR3Y2QWEwMEM1bkdrbFFOMHpLUEduNlhKMG1hYlA1Tkp1cWdW?=
 =?utf-8?B?VU1BWGhwSE8vNVF3RGhEZGY2Q01aYkNVTXVZSmlFTlFrbmI5L1ArSVg3NTJr?=
 =?utf-8?B?TnhzQ0ZDaUxQM0lDWmZYcHdUV2dJTUVsdHQ1Z0cxWUFFVUZISE9SV1lPUjlD?=
 =?utf-8?B?cU8yZTRQejFYcE4rR0Y2SUswRnJYK3BKdFJjbmRtYy85Y2ZLeXpTRitRT3Zp?=
 =?utf-8?B?TklDS3pmWHBtSGtJOVRFUkdjZnJHbFlaTU1YamxJUDNPdko3UEEvZFExVWFu?=
 =?utf-8?B?UElVcDNvWnpkRS9zbHpvWjMvckREYTFzbitMRFJ5TTVKNUtrdnRqRERwanlB?=
 =?utf-8?B?OUdOKzFNQVVGdW1YbWJkTkhEcVNwd2xhdGFYY01URno2NDIxZ0ZGd1ZWZkdk?=
 =?utf-8?B?blp3akJsZHZwd0N3QTl2VmZucENwVlMrTlJDeG03Q3JwTmJ4Nm9DNi9ZdHNK?=
 =?utf-8?B?WS9QdndDUDAxUDJ0RjUzbnozTFFYYXVqM2FvUlJ4empoSFpwaEFTeHByUzR0?=
 =?utf-8?B?a0dyT2kyNHFsSTRxUWg4YS9FaTJuNEs3TGFrWlpKTkRtMEM0K2NlbW92VzBQ?=
 =?utf-8?B?TVhQNEFJV29rc1kxNU42VkFISElCNmxPWUpuTE9vMkNlcjNzdDN2NnhZWTl1?=
 =?utf-8?B?UndtY20wYlgwWTJsVkJVWlU4c0FpZW4yNjZSM2pBSDRlUkpYNlRXZ3cxeEdJ?=
 =?utf-8?B?TzZxRHorY1p6WUZSNFR4SzhRcWpQS2VCSVpCbXVLRy8yT1dTMThkUUZjL1BU?=
 =?utf-8?B?akg0SS9yVDI4V2szSEt3MDBkN2grcFVzSElRTy9NNzFuUUV1c09WQ2E2T1Uw?=
 =?utf-8?B?NUREWDluemlrUk9GSWpGV1hzTUR1RWFtSUE5L0l0ZUR6NkJKSWlTZi9ETm5s?=
 =?utf-8?B?a0hUaEs4ZG1xelc2NzdxbklKNW5hcnZoSGZPNFNYTWZRR2RHaUppNS9Xbi9l?=
 =?utf-8?B?amFTUkN3bi9hMzM0c3NVT3RSQzM4QUpLdXRLVjN3Q0R1ZlVjY2w0N1RuSHBk?=
 =?utf-8?B?b1NLTUZ2S0R1RHEzaDUyUXRqeFhjbG5pRyt2b1c1SlpQaHRneGJjcUgwSW9I?=
 =?utf-8?B?RmNZcmFQTWVuVXduQnNhUDhVVWRYZktjQTBnVnJMU2tlMldMUGs4eGRTKytq?=
 =?utf-8?B?QVNiRElSamlnTTRWUDYxMWZpK01Nb2p2MUVBUDEyNXR4SE1vUEF2VFlINTFx?=
 =?utf-8?B?dmJSNThDOUJnOW16TmMzRVpMNWJOV2lwNkxLZVB2bjVwUUx5N0VuMkJTSThs?=
 =?utf-8?B?SFdwRDFCZmNGTFB1UzdEaXkwZldBUTBRMENOYUp2NEFKNmt0ZjlDUzYwMW1m?=
 =?utf-8?B?c1A2bVhHUkJJaWdTYUFSaDlrZXN3STBabG9ZVStxSW1yZlNuVmM2VTYwUWth?=
 =?utf-8?B?VVp1Sy9hN3U2WlBsdm5YaW9aZ1Y2MDZCdmlkQTZYbzdISkFBNXZsRlh4NjJL?=
 =?utf-8?B?OHdjRFZsUnJVOVdTYWw1V0g2dnhhTXhPejFkajBYUGgrT3BRRFhsMzg4WUg2?=
 =?utf-8?B?dG5tY1dyREJORzdkT3ljQnBsMGJKVzd2QUNYVFN0aTlaUzYxU0hvMk5aM2VE?=
 =?utf-8?B?MEpEWlBUUmdaaENKOUw1MEhEendzRzkyakVNSWx6aWh3NkpmSUxOSjlHY0RO?=
 =?utf-8?B?ZThyalE2eXpFdnFLRFVsMVNxeE5pSkk1RUpCUHBLQ3BFU2VVdWVvS2diMmdO?=
 =?utf-8?B?MDF6UmRXaCtDait6Ym9DWjJJUDZpUWV3TlZXcklnZVNhb21LNFZZdz09?=
X-OriginatorOrg: citrix.com
X-MS-Exchange-CrossTenant-Network-Message-Id: 51fae068-5a82-4feb-7763-08de9a115e58
X-MS-Exchange-CrossTenant-AuthSource: CH7PR03MB7860.namprd03.prod.outlook.com
X-MS-Exchange-CrossTenant-AuthAs: Internal
X-MS-Exchange-CrossTenant-OriginalArrivalTime: 14 Apr 2026 10:34:12.3866
 (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: trO6gVLdwo09Ap7a/61SxMm9hFCLq8P6CzTlGzH2WqUTY/HBij/L85CUgY9iikF2kqMUYgR4altXNKJNMmAeyA==
X-MS-Exchange-Transport-CrossTenantHeadersStamped: DS7PR03MB5573
X-purgate-ID: tlsNG-bad1c0/1776162856-56949152-373032A7/0/0
X-purgate-type: clean
X-purgate-size: 624

Hello,

When not emulating the TSC the guest time value calculated by using the
vCPU time info page in HVM mode would drift between time synchronization
intervals.  First patch fixes the drift, second patch makes the
calculation of cpu_khz round up the value for better accuracy.

Thanks, Roger.

Roger Pau Monne (2):
  x86/time: use native TSC scaling factors when TSC is not scaled
  xen/cpu: round up cpu_khz calculations

 xen/arch/arm/time.c   |  4 ++--
 xen/arch/riscv/time.c |  2 +-
 xen/arch/x86/time.c   | 20 ++++++++++++++------
 3 files changed, 17 insertions(+), 9 deletions(-)

-- 
2.53.0



From xen-devel-bounces@lists.xenproject.org Tue Apr 14 10:34:25 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 14 Apr 2026 10:34:25 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1281577.1564449 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wCb69-0005ov-Nr; Tue, 14 Apr 2026 10:34:25 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1281577.1564449; Tue, 14 Apr 2026 10: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 1wCb69-0005oN-LB; Tue, 14 Apr 2026 10:34:25 +0000
Received: by outflank-mailman (input) for mailman id 1281577;
 Tue, 14 Apr 2026 10:34:24 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <roger.pau@citrix.com>) id 1wCb68-0005n2-Nb
 for xen-devel@lists.xenproject.org; Tue, 14 Apr 2026 10:34:24 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wCb68-0091ky-3O
 for xen-devel@lists.xenproject.org; Tue, 14 Apr 2026 12:34:24 +0200
Received: from [10.42.69.12] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <roger.pau@citrix.com>)
 id 69de1829-bab6-0a2a0a5309dd-0a2a450cd56e-20
 for <xen-devel@lists.xenproject.org>; Tue, 14 Apr 2026 12:34:24 +0200
Received: from [40.107.209.70]
 (helo=PH8PR06CU001.outbound.protection.outlook.com)
 by tlsNG-d25034.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.0)
 (envelope-from <roger.pau@citrix.com>)
 id 69de182e-f40c-0a2a450c0019-286bd1468b6f-3
 for <xen-devel@lists.xenproject.org>; Tue, 14 Apr 2026 12:34:23 +0200
Received: from CH7PR03MB7860.namprd03.prod.outlook.com (2603:10b6:610:24e::14)
 by DS7PR03MB5573.namprd03.prod.outlook.com (2603:10b6:5:2d1::19) with
 Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9769.48; Tue, 14 Apr
 2026 10:34:21 +0000
Received: from CH7PR03MB7860.namprd03.prod.outlook.com
 ([fe80::f5ba:35df:1c9f:b343]) by CH7PR03MB7860.namprd03.prod.outlook.com
 ([fe80::f5ba:35df:1c9f:b343%4]) with mapi id 15.20.9818.017; Tue, 14 Apr 2026
 10: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=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=xFx2x81Rje7dQ1qFoh5RGg21Lc7ruXMgPMRgOkm2sd6P6vp7ncQZrdQrcrxM4zzxWvzdWkjnWw93/7+aDXun0/DHhxKLcuxyJG63MAwW5Pvwtlp87BcTymq9OFvVbvNzAREMNLc4v6p0TvJolLeryXfXDsoXj3UhM8m7tnD6zi2G3wwvDi50wT6bxcOE1115M0vGympuHDKRxkCIV4N7Jjy7qCGiO/aStiBdCu2GUmikD/4mflMw+lphrN3wbWvDZ/AkYVKLFK4EvjqSlJOzuS6/r/QfXcbP/3yBSz6FYuqz6fu2C0QAE3nF6/Dqse+VmhgnXPjJQ5VR58ylHvJwfQ==
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com;
 s=arcselector10001;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1;
 bh=4vd6wmy5re3Pw6r5a1e8wGjbTzbuX+NVCRIv+nVQt1Q=;
 b=xhM7f5QDu/+5xgv9K/5Rc1AlQSu88HVtNLsQHAWN9/1/YtwE3ipFzbZl+QixW+yI5J+EHSGUTiG1XoRQArDZpFLP0Q7T8Qn0GXrDYV15mJ7kIJVRDOdMaQvGrqnyrd/LB6PYXuAWJe8l1rQbAp6aiAmLgt3XTqxYbEl4JtVuZvFjo05ajrjyv1+rrhmrwBfjtGtlt1dJwyGXo9ImHBx/khIjEfMgUA9FiXU6ObcpWEh3tJatqthUnoKJBM46+hlR1pw5258pZ5fNAm3kLDq7diFe25RAKKDu911YTxfhZvXjeTAODcpOkegv7gfbqFoFTRiM/1xEwMbEs0wWS+tAHQ==
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=4vd6wmy5re3Pw6r5a1e8wGjbTzbuX+NVCRIv+nVQt1Q=;
 b=LAg0xRL2VTCawGZO27fRqsoarbiFp6A9zn+eAiEZcPZlfBufJckNMzLAG9Uqz43GUrbf3SmEq5oSfLmzFG7T60R1C3NQ6IqTFVkTGvOvWqWLYKS2Mbp/Zgde2+6Pz3PwGcUdDkQZfUGi3JQjideIyX71YnBQSccumnZ24N4mOqk=
Authentication-Results: dkim=none (message not signed)
 header.d=none;dmarc=none action=none header.from=citrix.com;
From: Roger Pau Monne <roger.pau@citrix.com>
To: xen-devel@lists.xenproject.org
Cc: Roger Pau Monne <roger.pau@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>,
	Alistair Francis <alistair.francis@wdc.com>,
	Connor Davis <connojdavis@gmail.com>,
	Oleksii Kurochko <oleksii.kurochko@gmail.com>,
	Jan Beulich <jbeulich@suse.com>,
	Andrew Cooper <andrew.cooper3@citrix.com>,
	Teddy Astie <teddy.astie@vates.tech>
Subject: [PATCH 2/2] xen/cpu: round up cpu_khz calculations
Date: Tue, 14 Apr 2026 12:33:27 +0200
Message-ID: <20260414103327.7420-3-roger.pau@citrix.com>
X-Mailer: git-send-email 2.53.0
In-Reply-To: <20260414103327.7420-1-roger.pau@citrix.com>
References: <20260414103327.7420-1-roger.pau@citrix.com>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
X-ClientProxiedBy: MA3P292CA0066.ESPP292.PROD.OUTLOOK.COM
 (2603:10a6:250:49::11) To CH7PR03MB7860.namprd03.prod.outlook.com
 (2603:10b6:610:24e::14)
MIME-Version: 1.0
X-MS-PublicTrafficType: Email
X-MS-TrafficTypeDiagnostic: CH7PR03MB7860:EE_|DS7PR03MB5573:EE_
X-MS-Office365-Filtering-Correlation-Id: 2f9555a4-8be6-4fbc-a285-08de9a11638f
X-MS-Exchange-SenderADCheck: 1
X-MS-Exchange-AntiSpam-Relay: 0
X-Microsoft-Antispam:
	BCL:0;ARA:13230040|7416014|376014|366016|1800799024|18002099003|22082099003|56012099003;
X-Microsoft-Antispam-Message-Info:
	GBpaUKpJr4t8JK+err59HyGW2cBK/XkQ2oewZTD8nYvjEAo9kWaPOFpRhMRsv9ryu3vsIB5MgoZ+iF1RVCesh8OCc8fumnnpwm2ZZsYmhQ5v/w4FXO3pSjlRUiRJMTY+AIrQtVpLrarLLHBc0/vfo5ssaVCDE6x+sL68QcNLnV5dq2jQ6wcKfdKiyA0zfPsc5YoWMAKQwAH5J7stYvJhOUD2O4+b+DBxE88FHbJQUNYP9+aR+J5lIKCBTuRexwFjV/9H755fJ9EeNIaGBKEitxV7w1/Lsq6AbpBfCy+icueKr1ja76X2iRy96kFPVirEoDYIhiNhSAiZLgS+t11jMNMWe3ix72vcwAoQv8vemaYcCeL+haVLcHeYd8pCVvl1oRxzXEyKqX1X+Pc+kuoto18+6cM9Iw/1oBuIARj0b6OrZcU+N6qSw/sj8/YQ7MUzSY5CEl0wforImFzJYPjGjIrJ0hnlGdbvyal3JGv/aYoJ490fDjXryREswf0/zELNfmuieB/TCM1Oil1A439dFgybE7aXen1pV0Zs/mALotPcV+VLPrXp84V+vGqVBJAwqnNiZCCGV1eQItZ5tYA4M/I3A0n+OJ5VqOGVp8EEBhP0S1H4mTyy60WUun70PZN2T6w/rrVrnGBDg9a5ztQSR1MExWCL5i9ya4Y3XDWumpba2LdNiHoZo+tZ10mB+ZNa8o0XTTC28JhdeyiP2FWm9HPynP2m/dh4biRsncs5RFU=
X-Forefront-Antispam-Report:
	CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:CH7PR03MB7860.namprd03.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(7416014)(376014)(366016)(1800799024)(18002099003)(22082099003)(56012099003);DIR:OUT;SFP:1101;
X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1
X-MS-Exchange-AntiSpam-MessageData-0:
	=?utf-8?B?YWlHMTdOaTJpQm0wRlBKeTVQOWw2ZEsrZ0p6bnZYYk9objduNUQ1SjB2QzVP?=
 =?utf-8?B?U0xLaDU0K1hyVjVhU0dyQVBVQ0lzcmVMR3E3d2hJYWM0b0pDZXJCd2pwWDdV?=
 =?utf-8?B?MVBCcFczbi9XU0NUcW5aSFY2SVZEOHFuTlh5R3RMZU11KzRJSHQ2QnIzbHV5?=
 =?utf-8?B?MmhDS1VDQ1NaRzJRdDhlczZ0L1d5TDRORnArUXZWSG5VeGI2V0tJUFJCdnJK?=
 =?utf-8?B?R3FEQ0dEc2RwejVNdVc3R1hHU0kzUVJKM0xaYlNWMWJLWVpLL0VJN09hNWpP?=
 =?utf-8?B?UHFOY0ZPZjk2eDUwdVRQaG9lOWZHNHpZZkhaL2ZKTHVCeWdSSTd6NWU1UHp1?=
 =?utf-8?B?am8wTnhBTUIyQWpUeUNZcXB5T1lyMzJEc21OSURMMENIaEdzMVM1WlN6elpD?=
 =?utf-8?B?UUdPdDhLK214V0dPQkQ5UUprNTN2RnBtQWtjUXAyRi8xZ1RQM2VLSDdWMllE?=
 =?utf-8?B?ZGNOMjJsdG1yTVYveXdKVFJOcmRkZk51VW9zQVRhL1hhSDYyMFVHN0Y4UFZ2?=
 =?utf-8?B?QlArR00zMmNtQ1MxRVI5dGl5aHl5OG8xTGROQ1R5Y1ErTS9hZHNaS1JEdkxh?=
 =?utf-8?B?L3I1KzJzMWhHa2ljUkpGdkFYRHdhUnhvK1NDRXp1MGhFUm5zZGVtV0I2Q3lG?=
 =?utf-8?B?a3lyeUxzZ1RPWFZ3MWU1MEJ0dllURTVRZ0tEVkY3V1JhcmdpSVJzUmlvZ1l2?=
 =?utf-8?B?b0JZUlRmeHZ1VFlMT1ZIV1BrK1dHeXJsdTZJVitLQUx6aEUzbStQVXQraldB?=
 =?utf-8?B?cXpoakVIWklhcmkvdkRWOVdGTkZoRi9sZm02bnNVcVkwNVU0alVCcERqOSsz?=
 =?utf-8?B?TXV5dmQyMlVZSklmRnBQZUVGcEZ0V3J1SW93SGRBcW9DNURwaGZZZ0txWFdj?=
 =?utf-8?B?RkVDaVBuTWF5RlZwTUY0eFZicnl6TzdHdDJ2MzlROWp0OFUrYTRXRFRuYzZ3?=
 =?utf-8?B?c1lMZTNOcEI3S09KMEtxbkNacEdFMlB5bk1wQXFLcXJNdU05OEcxM1ZlbVRD?=
 =?utf-8?B?ZGUwMjVNeU1JU2hYQVh3cWk1SDNSNkFXcC9VS3NZSzZKN3pFcXVPSTJIa1dO?=
 =?utf-8?B?ZC9zamNrOXUvVktvMlJtQk9iL25PeUFmdXhvWjArV0tpRWpYa0dTMS9sdEx1?=
 =?utf-8?B?VFRoQ05rQ0pGaCtMYnZRL1JKTjdzNHhBOHZWWmswV09DbGZicGFwM3hxaDl2?=
 =?utf-8?B?aFNjODRoZTI5QVlyQWVxd1FwaElpajlTRTZiejRwVzkxWTcyak5NUWV1NWdF?=
 =?utf-8?B?T09jbWtGVVRIcEhGSlhReURZVHVqUzJYamVuaUNkWUM2Y3duYTZQZnZHTmZn?=
 =?utf-8?B?UmFQUm0vcGg5SS9PdFRYYlpPaTRLNk5XbVBEMEZPRmtnU1I1VERCbWNYcnVk?=
 =?utf-8?B?VlZzNFU0aXM5ZHlLTUcwUktuei9vRUxoQUN0M2lnc0pIUGE2ZVJNR0FGZVVO?=
 =?utf-8?B?akRKR1c0V20zb01sSE5OU0hOdVprYXdRZm5qeHRRb2xSSFJ5USt2cnc3QXNJ?=
 =?utf-8?B?VklYWENrUW1UUzV1UlZCaWNPaWZ3Rmg1UGREenZnT3ZEVEJjRHBCQ3FqVE5p?=
 =?utf-8?B?RXJYUGZ2Yjl2YXdkanlOUlcreEcyQmNjOWh1Qktid1pwVHpVelpMa0hvN2k2?=
 =?utf-8?B?bklDSnkydTlHbWRMZ1crOGRNa2tjZGMwY1BaYWh0ditBbnYyQ1d2VzcvZ1Ri?=
 =?utf-8?B?QllqMUZVaVJWY2ZHUHJvcTBPNVRHdHVJdmk1KzdEWjBRSkFaVzZYdzV4bUlX?=
 =?utf-8?B?VEg3akpKZ0QzV01pSEV1RndxTHlEaHdTNFJvdWVVdTRuUWFPUU5VdkFnTjFu?=
 =?utf-8?B?RzJmNlVOaXJYc3VISFRmRUlWdEs2VFFrbXVpaWVVREVGQVBnMXlLUTZjZWNv?=
 =?utf-8?B?cllkUHAyKzA5Q1ZTRnkyU1VXOXNOSlRrWERZZVJjeW1hejJNZURScFJXc3Iv?=
 =?utf-8?B?RmU2Q0JNU2tnSFJuZ1lrQTU1QUxXUm10Q1k2YkI2a0xhOHh2NDhUVDc5UGJF?=
 =?utf-8?B?MUpNY0VWRy9oemJvWXpxWkxRSlB4VU4zWWpKZjBBUFVLMnJudTNSam1aUXBy?=
 =?utf-8?B?cVdOU0c2OHkvOFdycmpWSGh3MkhqUWZzbFFYdDROWjRFVmhRQ0tQV24rcDhP?=
 =?utf-8?B?YTN5dlcvbXhvSFdhcXVJRVBYUlNnb3pZb0RGTjdZTDFMUGNiWVVBTFlSTUcw?=
 =?utf-8?B?QkRISTZxQW1JRTU4cGt5YTYyOHR2c3pYR2NOd3ExTHZXKzJ3Ym1VYWxyUldm?=
 =?utf-8?B?Q2QyT3REUDBFNjdIRWtERVd3ZVZIbzkvVFNZTjEwOEV4a1VUZU5Tb2JOeWRE?=
 =?utf-8?B?R3dyTzFicDZURm1LazVQcExsTU5pOXQ1M1hRN1NMQjNyWjNhdEdNZz09?=
X-OriginatorOrg: citrix.com
X-MS-Exchange-CrossTenant-Network-Message-Id: 2f9555a4-8be6-4fbc-a285-08de9a11638f
X-MS-Exchange-CrossTenant-AuthSource: CH7PR03MB7860.namprd03.prod.outlook.com
X-MS-Exchange-CrossTenant-AuthAs: Internal
X-MS-Exchange-CrossTenant-OriginalArrivalTime: 14 Apr 2026 10:34:21.0498
 (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: /tFqel6TdhRAUye85AV6cJwq8X4Zjo81nQvBn6XqhoyxE0Ca6E9yBDysbF3AnKpjQ5B3aYxm3R9Npo7y87TKyw==
X-MS-Exchange-Transport-CrossTenantHeadersStamped: DS7PR03MB5573
X-purgate-ID: tlsNG-d25034/1776162864-8254FA3D-6DEB300D/0/0
X-purgate-type: clean
X-purgate-size: 2251

All arches truncate the cpu_khz without taking into account the less
significant digits.  Instead use DIV_ROUND_UP() when scaling from Hz to kHz
to get as more accurate kHz value.

Signed-off-by: Roger Pau Monné <roger.pau@citrix.com>
---
While the possibly more accurate value is nice, I'm not sure it's actually
fixing any functional bug, and hence the lack of "Fixes:" tag.
---
 xen/arch/arm/time.c   | 4 ++--
 xen/arch/riscv/time.c | 2 +-
 xen/arch/x86/time.c   | 2 +-
 3 files changed, 4 insertions(+), 4 deletions(-)

diff --git a/xen/arch/arm/time.c b/xen/arch/arm/time.c
index a12912a106a0..9e0c485c77db 100644
--- a/xen/arch/arm/time.c
+++ b/xen/arch/arm/time.c
@@ -118,7 +118,7 @@ static void __init preinit_dt_xen_time(void)
     res = dt_property_read_u32(timer, "clock-frequency", &rate);
     if ( res )
     {
-        cpu_khz = rate / 1000;
+        cpu_khz = DIV_ROUND_UP(rate, 1000);
         validate_timer_frequency();
         timer_dt_clock_frequency = rate;
     }
@@ -136,7 +136,7 @@ void __init preinit_xen_time(void)
 
     if ( !cpu_khz )
     {
-        cpu_khz = (READ_SYSREG(CNTFRQ_EL0) & CNTFRQ_MASK) / 1000;
+        cpu_khz = DIV_ROUND_UP(READ_SYSREG(CNTFRQ_EL0) & CNTFRQ_MASK, 1000);
         validate_timer_frequency();
     }
 
diff --git a/xen/arch/riscv/time.c b/xen/arch/riscv/time.c
index 7efa76fdbcb1..faca7b70e13a 100644
--- a/xen/arch/riscv/time.c
+++ b/xen/arch/riscv/time.c
@@ -40,7 +40,7 @@ static void __init preinit_dt_xen_time(void)
     if ( !dt_property_read_u32(timer, "timebase-frequency", &rate) )
         panic("Unable to find clock frequency\n");
 
-    cpu_khz = rate / 1000;
+    cpu_khz = DIV_ROUND_UP(rate, 1000);
 }
 
 int reprogram_timer(s_time_t timeout)
diff --git a/xen/arch/x86/time.c b/xen/arch/x86/time.c
index 244277c0a921..b84414f00d05 100644
--- a/xen/arch/x86/time.c
+++ b/xen/arch/x86/time.c
@@ -2642,7 +2642,7 @@ void __init early_time_init(void)
     set_time_scale(&t->tsc_scale, tmp);
     t->stamp.local_tsc = boot_tsc_stamp;
 
-    cpu_khz = tmp / 1000;
+    cpu_khz = DIV_ROUND_UP(tmp, 1000);
     printk("Detected %lu.%03lu MHz processor.\n", 
            cpu_khz / 1000, cpu_khz % 1000);
 
-- 
2.53.0



From xen-devel-bounces@lists.xenproject.org Tue Apr 14 11:10:34 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 14 Apr 2026 11:10:34 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1281609.1564459 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wCbf1-00037x-Ck; Tue, 14 Apr 2026 11:10:27 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1281609.1564459; Tue, 14 Apr 2026 11:10: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 1wCbf1-00037q-9A; Tue, 14 Apr 2026 11:10:27 +0000
Received: by outflank-mailman (input) for mailman id 1281609;
 Tue, 14 Apr 2026 11:10:26 +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 1wCbf0-00037k-FV
 for xen-devel@lists.xenproject.org; Tue, 14 Apr 2026 11:10:26 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wCbez-00G8q2-RM
 for xen-devel@lists.xenproject.org; Tue, 14 Apr 2026 13:10:25 +0200
Received: from [10.42.69.9] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <Mykyta_Poturai@epam.com>)
 id 69de209d-5cb7-0a2a0a5109dd-0a2a45098ab4-8
 for <xen-devel@lists.xenproject.org>; Tue, 14 Apr 2026 13:10:25 +0200
Received: from [52.101.83.106]
 (helo=GVXPR05CU001.outbound.protection.outlook.com)
 by tlsNG-bad1c0.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.0)
 (envelope-from <Mykyta_Poturai@epam.com>)
 id 69de20a1-bf79-0a2a45090019-3465536a65de-3
 for <xen-devel@lists.xenproject.org>; Tue, 14 Apr 2026 13:10:25 +0200
Received: from PAVPR03MB10102.eurprd03.prod.outlook.com
 (2603:10a6:102:30d::12) by GV1PR03MB8405.eurprd03.prod.outlook.com
 (2603:10a6:150:54::18) with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9769.48; Tue, 14 Apr
 2026 11:10:21 +0000
Received: from PAVPR03MB10102.eurprd03.prod.outlook.com
 ([fe80::b8c6:f37a:987a:beb]) by PAVPR03MB10102.eurprd03.prod.outlook.com
 ([fe80::b8c6:f37a:987a:beb%5]) with mapi id 15.20.9769.046; Tue, 14 Apr 2026
 11:10: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=YQ1aOJRECjA+VYr/t1Y4A5VptQqULxLDcM/v6Qs/Dzv3cfISXcO5FYhPM3rXCqef1V1WeUm6zbh8QgU4NWZR2cjs47tNin5fOAUNZh+MN2RySnoeoU/pq7f6tc8XyivrQsDZCV+QjoB+adFtMR0EVBN6AORYr75Cwjl+XKY5a9kmSrRlkL+HIScncQhwuyC+p2O1K/ekxWtM27g8WUwJyhYwOa/KfIuEhmmsMR6vOPZzP2/ye7a+4PENKeeejNBI3jNg3Ghs9iob2+791GQQ10D3jiPyIJUHqaFKTGS//BKDQXtxW75D14Lcvt2Ze6Fo1KdWzFqj0xM7TbyMKN+GWg==
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com;
 s=arcselector10001;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1;
 bh=ScHZun5Ls8cTAvbEzw8uZSH5eJY0bYlpTajuRZ84vIs=;
 b=efIuZvgfDFhd9FWkEHhu3OyDYG9SiWSStK2GtGoYMpUyrHZ2j1rKbNKInpxB0eZ/FpZAg/oQLzQlNGdMYzrCxOZkNH3M0x/WFKZW32IjODMo40pbqdPC6I1xbAaYV5WyTe5l072mXW+cJxE2Y5dfFdzm6xEQXFo7qix5J4DQTf53fdAGB1BJ9D4IRUzr0oK1ZSr7d6ZwXfoPyUTpqAgihtqvpEaRr1VFIrJ+yoVZECyII3/0izHs93Cjvdgu7Pc3ESxL4lbLvcgWl2SUq4uSgbOauWWQbW6BzbGVPJxKHRX14Mdgrz50+LV5oyRg88vLiQBhGunuPOK04JBmPyuGkw==
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=ScHZun5Ls8cTAvbEzw8uZSH5eJY0bYlpTajuRZ84vIs=;
 b=ILyCAsOJu8AiXZV/jz6JpVQrD6YFiQGDFwgL+ZKFNL3OLRvQCfWMMEEEnSCFsNAo6KxKRalndGyNUGwMH9NudszsD/ilc20qNcULr0kOUmgMaie7oLnGofIJeykGELm2hzkYIFhpRBo+RpR9NFFZz86Uy49okyUeNoXuakM46BKxYEqwo9+uR0Jj3a9aNEZuiTtx1IXm9L/g/cBhejuuHL03jF7NYB+ZdE/nz1wUji2LoMvDgw2US9zkpymNPxJLuLKqIPZ8fOEydDBV03clLgzGt8/3ghXgRwityKWmtI+RFvmMW/fMrvwKcq5jICfQlmQuDiFA9Px3b76tPGk/9A==
From: Mykyta Poturai <Mykyta_Poturai@epam.com>
To: Ruslan Ruslichenko <ruslichenko.r@gmail.com>,
	"xen-devel@lists.xenproject.org" <xen-devel@lists.xenproject.org>
CC: Volodymyr Babchuk <Volodymyr_Babchuk@epam.com>, Ruslan Ruslichenko
	<ruslan_ruslichenko@epam.com>, Dario Faggioli <dfaggioli@suse.com>, Juergen
 Gross <jgross@suse.com>, George Dunlap <gwd@xenproject.org>
Subject: Re: [PATCH] xen/sched: fix scheduler callback verification on init
Thread-Topic: [PATCH] xen/sched: fix scheduler callback verification on init
Thread-Index: AQHcyQvWtY5A3fOflECcuP5RifO+2rXebHgA
Date: Tue, 14 Apr 2026 11:10:21 +0000
Message-ID: <358dc4fb-139b-4000-99cb-c9271e90437d@epam.com>
References: <20260410164039.1000284-1-ruslichenko.r@gmail.com>
In-Reply-To: <20260410164039.1000284-1-ruslichenko.r@gmail.com>
Accept-Language: en-US
Content-Language: en-US
X-MS-Has-Attach:
X-MS-TNEF-Correlator:
authentication-results: dkim=none (message not signed)
 header.d=none;dmarc=none action=none header.from=epam.com;
x-ms-publictraffictype: Email
x-ms-traffictypediagnostic: PAVPR03MB10102:EE_|GV1PR03MB8405:EE_
x-ms-office365-filtering-correlation-id: 6f7fd0ee-993c-4f6d-74d3-08de9a166b3c
x-ms-exchange-senderadcheck: 1
x-ms-exchange-antispam-relay: 0
x-microsoft-antispam:
 BCL:0;ARA:13230040|366016|1800799024|376014|38070700021|18002099003|22082099003|56012099003;
x-microsoft-antispam-message-info:
 5BbLC2fMONsGXO++0PbRz0E2ny+yzjzjBb6++wowca9CfU8JFemfAphMTYaRFQo23wC15V+3mTN9Ep1CCLfxnCYB3bBi77kwvMaZt7fjm2pWfCCQvJoUHSRsPnqL0ptJIILUKzJq/dE1PJ2+xcd1EOM25aud/NdmOBl1yeBu4TQEcjPX4t9Bhg/TsOY6ukx3/qW7bLrHky24xRCQiQlw2vaxdSc0hDr8U/FMwHYYUiThdqTjgidScPoqot8Ff04KwwpHtDiw17Vqn/AHdEt1CRvy/dyUYOF+yc/+AU84kgT6bGr+FG+Ifc+fCZjJXgl+cfyvYmCzj/0Hf/jqRKgB6GuVO97YKhw+JBg/jksRd3Wh/ogbW8TZyflduPAKA7tFNCAZI0CvffUwuj/nejzvlL8wfvONS5Q2kdfzRf4xWZXOioJoomVtGG0vka/+9yEnf1VCIvqkcDCUiZJivp9T5o04rTIX/aMEktry6ItyVNu4FHLmT0eRlzwcxJxjmOsTbJofSNImIOH1TrRxJT0YQSgWYqiR2Q9QGQto0jB8fiO6dxz1RopIOCKU1M537JHVf8wlTXzd3CqmMv8MSg64Zi+ROYSJU5khPeCExZ0HAgpnwqVS5ZMiO/8Yrj8qtcI5L6g5iKwxxHwQl+rzQlSduGwldz+NYtKiKZ363ok040wOlCtQ/t0hA4u55dDqZZ9DIEDA2bCB2WSRzyR+jV9UTslMgfNyeIugY6dJy3IiIYESSYaLpdIoidwlc/6m9+UNMH6Isy0VUXq3R9RKOoCSa7legL/EMpY0iEEG1B9LFyc=
x-forefront-antispam-report:
 CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:PAVPR03MB10102.eurprd03.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(366016)(1800799024)(376014)(38070700021)(18002099003)(22082099003)(56012099003);DIR:OUT;SFP:1102;
x-ms-exchange-antispam-messagedata-chunkcount: 1
x-ms-exchange-antispam-messagedata-0:
 =?utf-8?B?UEpJdWh2enlpNXBPVFpCTXpuRGxTTkU0RzJtQ2Z2Y0xteWo4N3o4a0E3OEg2?=
 =?utf-8?B?Q1BWYXU0UVFOeE5pVG1mMVhDYzRGNVFXUXJxUUNNMWlSVTFiR2VvUFp4Wjdo?=
 =?utf-8?B?VmQyZjFONVhmVzg1KzdUdm1sL1F5c05nK0RIR0xNaGw1WFB4N1Y2TUdTVDZZ?=
 =?utf-8?B?NjdlM0ZxK1BuclJvMmxWc0ZEOTZQbUdLSEVRaHVHQkpPdEwxY0Z2MlBSTE41?=
 =?utf-8?B?UkVKOFF4TXZERitXbk1JMitONGNQdFkvYjMzQTU5Z3ZRWkc5SjhLWkhXYjlM?=
 =?utf-8?B?bU9jeGMvY2Vvd1E1ODJQUTBqNFVVOU40dU80U05XMFROQlorTHl2V1laaTk5?=
 =?utf-8?B?Z1FSaTU1M1FQaG5CNExWV21MZ2ZSZVIzZHN3aWhxSjRQZkRLYkFWbWVnZVkv?=
 =?utf-8?B?N0ZpQmNvUHpZa1BZN3ZpaUhNUmV0T1FiUXl6eWZtSWV6Wm5JMTdCY3JUY0ti?=
 =?utf-8?B?YmhabEIxejFrczNYQ1JyeFhtZGZpU29SZUcwSEJndGtPekdIQWFwODhxQXU1?=
 =?utf-8?B?RjlLNW8yN1JFOFZVVUEvcWdnRVZvMnFIUUdGc2RkcnFrTGdCZmluSkhYR3Zk?=
 =?utf-8?B?MXR3em84YzRMbkdYSlppdWRKM2dPeVRnM01FQTVQSHREN1lTS2hJTGlHOHFC?=
 =?utf-8?B?YmVOc3VNRitUcnV6dUQwNzltVzV5T0lNRHk0S2wxM0hndHhldGMzYUEzWVpv?=
 =?utf-8?B?Z1ZqMjVxelpBWFkvYUFZRGJiSFUxTGpzM1B6WGdBVU5icG4zbXUraFZTVFBk?=
 =?utf-8?B?bUhXc2F1UTVKWXdaNGxFbWtYelk1K1VMVVVxbklIVFpES1JYaEYvdkdCdW82?=
 =?utf-8?B?b3VONys2NnRPWTZiUWJVUk56Vk4wMmhDTmQ0dDB5NjQwR2dEdi9sWUV3REZP?=
 =?utf-8?B?MGdMd1A4cnN3anFueDEvTHl4TkpZT0lSVHIyM3g2R1J0Z2xEMFJ3aGpQZHhG?=
 =?utf-8?B?MFpvUmhwU044SFhqdS9oU2tIWkIrQlp6eURUTVZKRk52V25IaEhodjZmNHdv?=
 =?utf-8?B?SmIzOGVmckdBVzBuY0l3RmJlNXI2anpCY3VWYm9QeERKaFBuaTlqeXdJY1Nx?=
 =?utf-8?B?UlhQMWlqVVRoSkJVai9FdjRnWkFDUGFDS3NueEdqeEpXdW1OTW51OUdlZzFy?=
 =?utf-8?B?ZnAwRWE1QXpYVXc4VzJOem9WeGloOXgvUXp1N253YTk2QzZuOXJKQk4xRWRY?=
 =?utf-8?B?b1R3T3FMc3p3WUVGZ200RzZINmpBb0xCT1ROakROd0s0dkh1WGNMdWQrRGwz?=
 =?utf-8?B?NkJqMy9OYzlaRkhRNkU4aDdTS2tNay8vblQ1RlREazRsT0VxT2lyUGZjbWFC?=
 =?utf-8?B?cVA4MDBDYzZFcTNBLzk2dFFDTmxYZFI3U3hnb09VLzRUSE12QjZXejhJaks4?=
 =?utf-8?B?cXU0ZFNSVlZkeGlhWDlaTXQzZzAyem9TSnVhTmp2emJ0a3dTaFkwOG8raUpB?=
 =?utf-8?B?TGZzSi96NFRJMDBCTUQ2bDdweE5jQ3g0MTJEMmM5amlzNS9wYTVFWGJpa3du?=
 =?utf-8?B?L1d0V1hYV3Arc1ZFVVdWTUh5elowa1RzREtzYWJ1Z01JeW1kcm1Dcm5MNHdF?=
 =?utf-8?B?V2FUaDNraXJNQSt0YmE0OTRianN5dU9iZngvK1NxNlFyaExHM1Rqb2RvZnh5?=
 =?utf-8?B?a2JmVHZXU2YxWnhaTlZHM1lTNXdZdHBTTDVXM2NHdFpZTmw0ZVZBdWk1eElC?=
 =?utf-8?B?ZUl5RHlDT3R5MTBPTFdrU3ZiRVB5UVAwNzlYNHdCYWEwU28wVmllallFM25h?=
 =?utf-8?B?QzlBZFcvU2R4aUJ0WTV2S2JEUzJmZDZrbkRRTVFyKzJkNW91Q0RoTUdLUWFP?=
 =?utf-8?B?REJtKzZtYUpEV3FyamZkQ0I1QXlybCs1T2cwNlI5S2wyQjdPeFhuRm1XK3Bx?=
 =?utf-8?B?YmNVeDlWa3NiaFZ4SWdFMXptOFFoaWVLL21kYTVWbmJNa3ZUOTNZbTc2OWJ2?=
 =?utf-8?B?WmtuZzc2UzVsOG9SZGZ2OFJqN1lIRnFLb3JMMWlQRXozSS9rY1kxb1J6S3F4?=
 =?utf-8?B?OFMvaEhKenMwMnlacEQxRTFpWXJKMVdYOHJPZjA5WWt4YkxyQ28yTW93cHRw?=
 =?utf-8?B?NTVBMi9hMEVvVHQxTG9SNW9ocVpyZVAxU1J5cStPQysxSkcrMnRLcnFoWC93?=
 =?utf-8?B?TjJLUks1T2NHYjlhMXNkOVR4VDY2VmVBSGNBU1J2N3FCOTdZSHhPNGhKQi9Z?=
 =?utf-8?B?VVBPTGpieWxvOWpVVWN3d3YvVGJyU05XNEpEQ2ExdDg5dVpUR3lmSDNYZjRz?=
 =?utf-8?B?aVEzd1dKdVMyaUpjcVVaT1E0TWx0VFdSVDFFU0pqY1Nyd0o5YzY1R0ZmeGhs?=
 =?utf-8?B?MzRLQlNIK0M0a1BQWk9PUlUxeG1USlpwWjVhWC9ybXJ5SVlMM2crV0VMbllM?=
 =?utf-8?Q?96vrETohOzQ0Utyg=3D?=
Content-Type: text/plain; charset="utf-8"
Content-ID: <3EF6F05B197F954BA0C603700E015ABF@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: PAVPR03MB10102.eurprd03.prod.outlook.com
X-MS-Exchange-CrossTenant-Network-Message-Id: 6f7fd0ee-993c-4f6d-74d3-08de9a166b3c
X-MS-Exchange-CrossTenant-originalarrivaltime: 14 Apr 2026 11:10:21.2051
 (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: w82+Txnn1ECUo4J0knUeiRFhJSlZl+sStffX/A4aEcX91wMw3fE9++OVujB3OOfbklEYS2s3RMpGpQIGvgP09Q==
X-MS-Exchange-Transport-CrossTenantHeadersStamped: GV1PR03MB8405
X-purgate-ID: tlsNG-bad1c0/1776165025-5515D152-5B9C06BE/0/0
X-purgate-type: clean
X-purgate-size: 3006

T24gNC8xMC8yNiAxOTo0MCwgUnVzbGFuIFJ1c2xpY2hlbmtvIHdyb3RlOg0KPiBGcm9tOiBSdXNs
YW4gUnVzbGljaGVua28gPFJ1c2xhbl9SdXNsaWNoZW5rb0BlcGFtLmNvbT4NCj4gDQo+IER1cmlu
ZyBjb3JlIHNjaGVkdWxlciBpbml0aWFsaXphdGlvbiwgZWFjaCByZWdpc3RlcmVkIHNjaGVkdWxl
cg0KPiBpcyBzYW5pdHkgdGVzdGVkIGluIHR3byBzdGVwczoNCj4gDQo+IC0gaXQgbXVzdCBwcm92
aWRlIHJlcXVpcmVkIGNhbGxiYWNrcyAoZS5nLiBpbml0LCBkb19zY2hlZHVsZSkuDQo+IC0gaWYg
Z2xvYmFsX2luaXQgY2FsbGJhY2sgaXMgcHJlc2VudCwgaXQgbXVzdCBzdWNjZWVkLg0KPiANCj4g
SWYgYW55IG9mIHRoZSBzdGVwcyBmYWlsLCBzY2hlZHVsZXIgZW50cnkgaXMgY2xlYXJlZCBpbiBn
bG9iYWwNCj4gJ3NjaGVkdWxlcnMnIGFycmF5Lg0KPiANCj4gSG93ZXZlciwgaW4gdGhlIGN1cnJl
bnQgaW1wbGVtZW50YXRpb24sIGlmIHZlcmlmaWNhdGlvbiBmYWlscyBkdXJpbmcNCj4gdGhlIGZp
cnN0IHN0ZXAsIHRoZSBzY2hlZHVsZXIgZW50cnkgaXMgY2xlYXJlZCBidXQgdmVyaWZpY2F0aW9u
DQo+IHNlcXVlbmNlIGlzIG5vdCBpbnRlcnJ1cHRlZC4gVGhpcyBsZWFkIHRvIE5VTEwgcG9pbnRl
ciBkZXJlZmVyZW5jZQ0KPiB3aGVuIHN1YnNlcXVlbnQgcmVxdWlyZWQgY2FsbGJhY2tzIHZlcmlm
aWVkLCBhbmQgcG9zc2libGUgZHVyaW5nDQo+IHRoZSBzZWNvbmQgc3RlcC4NCj4gDQo+IFRoZSBw
YXRjaCBmaXhlcyB0aGUgY3Jhc2hlcyBieSBhZGRpbmcgY2hlY2sgaW5zaWRlIHNjaGVkX3Rlc3Rf
ZnVuYw0KPiBtYWNybyBhbmQgc2tpcHBpbmcgdGhlIGNhbGwgdG8gYSBnbG9iYWxfaW5pdCBpZiBm
aXJzdCBzdGVwIGRpZCBub3QgcGFzcy4NCj4gDQo+IFNpZ25lZC1vZmYtYnk6IFJ1c2xhbiBSdXNs
aWNoZW5rbyA8UnVzbGFuX1J1c2xpY2hlbmtvQGVwYW0uY29tPg0KPiAtLS0NCj4gICB4ZW4vY29t
bW9uL3NjaGVkL2NvcmUuYyB8IDUgKysrKy0NCj4gICAxIGZpbGUgY2hhbmdlZCwgNCBpbnNlcnRp
b25zKCspLCAxIGRlbGV0aW9uKC0pDQo+IA0KPiBkaWZmIC0tZ2l0IGEveGVuL2NvbW1vbi9zY2hl
ZC9jb3JlLmMgYi94ZW4vY29tbW9uL3NjaGVkL2NvcmUuYw0KPiBpbmRleCBhNTdkNWRkOTI5Li40
MjcwYzg5NDkxIDEwMDY0NA0KPiAtLS0gYS94ZW4vY29tbW9uL3NjaGVkL2NvcmUuYw0KPiArKysg
Yi94ZW4vY29tbW9uL3NjaGVkL2NvcmUuYw0KPiBAQCAtMzAxNyw3ICszMDE3LDcgQEAgdm9pZCBf
X2luaXQgc2NoZWR1bGVyX2luaXQodm9pZCkNCj4gICAgICAgZm9yICggaSA9IDA7IGkgPCBOVU1f
U0NIRURVTEVSUzsgaSsrKQ0KPiAgICAgICB7DQo+ICAgI2RlZmluZSBzY2hlZF90ZXN0X2Z1bmMo
ZikgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXA0KPiAtICAgICAgICBpZiAoICFzY2hl
ZHVsZXJzW2ldLT5mICkgICAgICAgICAgICAgICAgICAgICAgICAgXA0KPiArICAgICAgICBpZiAo
IHNjaGVkdWxlcnNbaV0gJiYgIXNjaGVkdWxlcnNbaV0tPmYgKSAgICAgICAgXA0KPiAgICAgICAg
ICAgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwNCj4g
ICAgICAgICAgICAgICBwcmludGsoInNjaGVkdWxlciAlcyBtaXNzZXMgLiVzLCBkcm9wcGVkXG4i
LCBcDQo+ICAgICAgICAgICAgICAgICAgICAgIHNjaGVkdWxlcnNbaV0tPm9wdF9uYW1lLCAjZik7
ICAgICAgICAgXA0KID4gICAgICAgICAgICAgICBzY2hlZHVsZXJzW2ldID0gTlVMTDsgICAgICAg
ICAgICAgICAgICAgICAgICBcDQoNCk1heWJlIGl0IHdvdWxkIGJlIGNsZWFuZXIgdG8ganVzdCBh
ZGQgImNvbnRpbnVlIiBoZXJlPw0KDQo+IEBAIC0zMDM0LDYgKzMwMzQsOSBAQCB2b2lkIF9faW5p
dCBzY2hlZHVsZXJfaW5pdCh2b2lkKQ0KPiAgIA0KPiAgICN1bmRlZiBzY2hlZF90ZXN0X2Z1bmMN
Cj4gICANCj4gKyAgICAgICAgaWYgKCAhc2NoZWR1bGVyc1tpXSApDQo+ICsgICAgICAgICAgICBj
b250aW51ZTsNCj4gKw0KPiAgICAgICAgICAgaWYgKCBzY2hlZHVsZXJzW2ldLT5nbG9iYWxfaW5p
dCAmJiBzY2hlZHVsZXJzW2ldLT5nbG9iYWxfaW5pdCgpIDwgMCApDQo+ICAgICAgICAgICB7DQo+
ICAgICAgICAgICAgICAgcHJpbnRrKCJzY2hlZHVsZXIgJXMgZmFpbGVkIGluaXRpYWxpemF0aW9u
LCBkcm9wcGVkXG4iLA0KDQotLSANCk15a3l0YQ==


From xen-devel-bounces@lists.xenproject.org Tue Apr 14 11:17:20 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 14 Apr 2026 11:17:20 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1281620.1564468 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wCblc-0003m5-7w; Tue, 14 Apr 2026 11:17:16 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1281620.1564468; Tue, 14 Apr 2026 11:17: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 1wCblc-0003li-38; Tue, 14 Apr 2026 11:17:16 +0000
Received: by outflank-mailman (input) for mailman id 1281620;
 Tue, 14 Apr 2026 11:17:15 +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 1wCbla-0003kX-Md
 for xen-devel@lists.xenproject.org; Tue, 14 Apr 2026 11:17:14 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wCblW-006NYf-KA
 for xen-devel@lists.xenproject.org; Tue, 14 Apr 2026 13:17:12 +0200
Received: from [10.42.69.10] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <Michal.Orzel@amd.com>)
 id 69de2233-bab6-0a2a0a5309dd-0a2a450a9b02-12
 for <xen-devel@lists.xenproject.org>; Tue, 14 Apr 2026 13:17:11 +0200
Received: from [52.101.53.28]
 (helo=BL0PR03CU003.outbound.protection.outlook.com)
 by tlsNG-4011c0.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.0)
 (envelope-from <Michal.Orzel@amd.com>)
 id 69de2236-ee98-0a2a450a0019-3465351cdfb0-3
 for <xen-devel@lists.xenproject.org>; Tue, 14 Apr 2026 13:17:11 +0200
Received: from PH7PR02CA0015.namprd02.prod.outlook.com (2603:10b6:510:33d::23)
 by DM4PR12MB6229.namprd12.prod.outlook.com (2603:10b6:8:a8::16) with
 Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9818.20; Tue, 14 Apr
 2026 11:17:05 +0000
Received: from MW1PEPF0001615E.namprd21.prod.outlook.com
 (2603:10b6:510:33d:cafe::20) by PH7PR02CA0015.outlook.office365.com
 (2603:10b6:510:33d::23) with Microsoft SMTP Server (version=TLS1_3,
 cipher=TLS_AES_256_GCM_SHA384) id 15.20.9769.48 via Frontend Transport; Tue,
 14 Apr 2026 11:17:05 +0000
Received: from satlexmb07.amd.com (165.204.84.17) by
 MW1PEPF0001615E.mail.protection.outlook.com (10.167.249.89) with Microsoft
 SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id
 15.20.9846.0 via Frontend Transport; Tue, 14 Apr 2026 11:17:04 +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.17; Tue, 14 Apr
 2026 06:17:03 -0500
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.17; Tue, 14 Apr
 2026 04:17:03 -0700
Received: from XIR-MICHALO-L1.xilinx.com (10.180.168.240) by
 satlexmb07.amd.com (10.181.42.216) with Microsoft SMTP Server id 15.2.2562.17
 via Frontend Transport; Tue, 14 Apr 2026 06:17:02 -0500
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@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=U/3gVNPelSFCvbA+7uPBXVJItZgJRePU5583/z/uRET7LyKOxNi3pAPelqHPYUlDRaKnWSB5baQWaUiixcxIopFDbYfyyAiaoug2UU4E7SN6ygqszh6M0+a1E/Imb3JjX3AfdXhHQK8Q8e5vpO88a6K0X0buvxUTUTT2Q9HV5+S9AFLSqVNGe1Gm8qLfKjgbQGlaekOki6e7mRCt2755MlJptP4ZLdY7pBxW2eUYAruPI8S0nWF611OxE3+g/BMKXqNN0f7gKGAV095M/onE1oYG7bBGfzknkKEMN4ctUY89x2/AUIidxUPGGZKS2szjOMsc0Lpag8rDhfBD89a7ew==
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com;
 s=arcselector10001;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1;
 bh=O9IPtRn5b3drkQIDroJacJeGO+V1t6gl2/Oa8o8Yyyw=;
 b=HEm5Elma5b2c7Y3KriL6gsckKHwr27B14wQtrokW4gS1MkPjINdkYiWPXSLbq7QdZCH27kYMsS5cGyieUcowFTU8KZ65UTHFgeWJ22RWBkRGJ48gwS3LGP60ZlHPHi68qzOHai9j5uRWG03bFwo4+84VZ2eEgdk/ri4VDw5Xhs07V3dUH10kFv1uerjjnutKxvhDrr8Vv8l1rvauimMTdgvyaIm6olgXT8/P+eam7Lsd9IDIDfwqBDX0mc4a1A+JSc6LV8K9SUSCDe1Lfmj1dgcXaWe+U3t7mtRht5jdlrKHd57Yw1YgKkU6u94j/kTgZ8dxnVNHmrVdP+T79n6I7Q==
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=O9IPtRn5b3drkQIDroJacJeGO+V1t6gl2/Oa8o8Yyyw=;
 b=tCcukVFlmAsPA9ab4C7p3Bnk2VT9zv/STdV/CStmUx59UwMnEjANfP0DNZenoSX0LT75xEVJzv8ogmuPU2Je+DLOXrMJ1QZhuL32KmdY07KyYrOCiwt0IaHNS5B71YO5OzsEaVpx9/fYidc0qnS1kllMbhv56cqnPWIvzbRMnDw=
X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 165.204.84.17)
 smtp.mailfrom=amd.com; dkim=none (message not signed)
 header.d=none;dmarc=pass action=none header.from=amd.com;
Received-SPF: Pass (protection.outlook.com: domain of amd.com designates
 165.204.84.17 as permitted sender) receiver=protection.outlook.com;
 client-ip=165.204.84.17; helo=satlexmb07.amd.com; pr=C
From: Michal Orzel <michal.orzel@amd.com>
To: <xen-devel@lists.xenproject.org>
CC: Michal Orzel <michal.orzel@amd.com>, Doug Goldstein <cardoe@cardoe.com>,
	Stefano Stabellini <sstabellini@kernel.org>, Andrew Cooper
	<andrew.cooper3@citrix.com>
Subject: [PATCH] automation: Extend eclair-ARM64-allcode and mark as gating
Date: Tue, 14 Apr 2026 13:16:56 +0200
Message-ID: <20260414111656.72939-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: MW1PEPF0001615E:EE_|DM4PR12MB6229:EE_
X-MS-Office365-Filtering-Correlation-Id: b530cab0-d318-4f3a-2a35-08de9a175bdd
X-MS-Exchange-SenderADCheck: 1
X-MS-Exchange-AntiSpam-Relay: 0
X-Microsoft-Antispam:
	BCL:0;ARA:13230040|1800799024|36860700016|376014|82310400026|18002099003|13003099007|56012099003;
X-Microsoft-Antispam-Message-Info:
	65jzoNZna+gj+YuDFw/BGp/hO9BjGs5i69RavK5VE1NRTgZMr5g62QeQovNSiypPV4eMZ9+ez2EV181M8jfkm3npc6ynu6L5gjDp2dVMq/BfSFENMl5LPDzpahBfAHrs+Hr4kSSLWSyo4C1ZAhZy1ghCydW454SVlqkiTZSYgODK8WojSosBMVL5mLKcwbBtIMORTRuW+w1SbjwKRTjXHJk42Xtir1SK97hNjN+M1xPDAeJqqGBGkKaptob7ntng5N5cEXL8/xhYU92YRRYkDDqVeCeRKReUM4HQJ3Hf5Qx2h878tPHmIZ9GjpSx5/5sj99GOnoi2u1/eJvIunwSFFBacWJ1RbY7rc9V7oKITw+tQOrsOhxpUojuxCX77kb6liEPinYZtHhblAYYzDYFVdtJPKcgo0hO3URfycqhh/uH/UYaEtXSMxMVjN1hWrb4TNIK/spFSAtR/2blNGPy5nq8rBSBFe1ckCfZeH3qOhDJb16tK6wAnAgp367z0SnRqG9zDMkV00AeIFIXCGybzxKqXyGwNI3PQXG988JUZQjg/E1XxkfWMpjJVuE3c2Qcv4T9aUbodg1K7cOArO9bqeN65mvY7P2snYc63BaBzFP98MrjMOz2fsQ+5ZmwGG132D/T2EzEBvvprRm3FWROoOFecJ5P36sg06K6kf8NP4U/P1sy8NInLIcK0oz7o6eUvZwb/J1lJiu4TY11xJn4EQqqBLjXQh/EgV8F1UbJRTE=
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)(36860700016)(376014)(82310400026)(18002099003)(13003099007)(56012099003);DIR:OUT;SFP:1101;
X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1
X-MS-Exchange-AntiSpam-MessageData-0:
	SOx7PI+OQKZvNTkohRXCL+Y9YYewckS64OqDFo0Yr382C9xdW0cJGCvfOTD3YXDrqxE/rD1GCGzzCEZ4i3ki0zBdN9k54kMfwAsvRtq4Kkswnnx2tFldRRE74iAovyjpFHc8UTblhqSBd+xQWbPLbttgzKog8yz9qtI4bf8pIfgXSL4bmISHzqg/HdMaKZx0kMxCSOvhyNswF93Pqbd1yGEVdOOBTz1nYcuzoTRMbRG/9z2wHBAmCUieSWj0BnGglsudiXKIbVUO66L3HmliAoeIHG36Jfx67mSUuKibRKxziRq8RtdjVT4upQty3/PkOwwkg8JfbqmjsOftVWp+28kqD7km2tQsm4hi3f7d4WTGk+rTUZfcNnsT0H/uUJ9SlZOVb/SmusfMcaI+vldq5Aro7gWNyzXGRtVJgjddwdwRevxCzds27HXTOCrJs3Cb
X-OriginatorOrg: amd.com
X-MS-Exchange-CrossTenant-OriginalArrivalTime: 14 Apr 2026 11:17:04.7900
 (UTC)
X-MS-Exchange-CrossTenant-Network-Message-Id: b530cab0-d318-4f3a-2a35-08de9a175bdd
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:
	MW1PEPF0001615E.namprd21.prod.outlook.com
X-MS-Exchange-CrossTenant-AuthAs: Anonymous
X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem
X-MS-Exchange-Transport-CrossTenantHeadersStamped: DM4PR12MB6229
X-purgate-ID: tlsNG-4011c0/1776165431-BDD520B1-5C39818C/0/0
X-purgate-type: clean
X-purgate-size: 994

Extend the job by enabling static memory, static shared memory and early
printk features. Given no more regressions for clean rules, mark as
gating.

Signed-off-by: Michal Orzel <michal.orzel@amd.com>
---
https://gitlab.com/xen-project/people/morzel/xen/-/pipelines/2451527401
---
 automation/gitlab-ci/analyze.yaml | 6 +++++-
 1 file changed, 5 insertions(+), 1 deletion(-)

diff --git a/automation/gitlab-ci/analyze.yaml b/automation/gitlab-ci/analyze.yaml
index 4e9af9d60224..b3f99f472d9e 100644
--- a/automation/gitlab-ci/analyze.yaml
+++ b/automation/gitlab-ci/analyze.yaml
@@ -149,7 +149,11 @@ eclair-ARM64-allcode:
       CONFIG_STACK_PROTECTOR=y
       CONFIG_UNSUPPORTED=y
       CONFIG_VM_EVENT=y
-  allow_failure: true
+      CONFIG_STATIC_MEMORY=y
+      CONFIG_STATIC_SHM=y
+      CONFIG_EARLY_UART_CHOICE_PL011=y
+      CONFIG_EARLY_UART_BASE_ADDRESS=0x0
+  allow_failure: false
 
 eclair-ARM64-testing:
   extends: eclair-ARM64-allcode
-- 
2.43.0



From xen-devel-bounces@lists.xenproject.org Tue Apr 14 11:29:46 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 14 Apr 2026 11:29:46 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1281631.1564477 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wCbxT-0005YJ-6n; Tue, 14 Apr 2026 11:29:31 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1281631.1564477; Tue, 14 Apr 2026 11:29: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 1wCbxT-0005YC-3z; Tue, 14 Apr 2026 11:29:31 +0000
Received: by outflank-mailman (input) for mailman id 1281631;
 Tue, 14 Apr 2026 11:29:29 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92) id 1wCbxR-0005Y6-Fg
 for xen-devel@lists.xenproject.org; Tue, 14 Apr 2026 11:29:29 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wCbxQ-002Q05-1S
 for xen-devel@lists.xenproject.org; Tue, 14 Apr 2026 13:29:28 +0200
Received: from [10.42.69.1] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <oleksii.kurochko@gmail.com>)
 id 69de2506-2eae-0a2a0a5409dd-0a2a45019848-32
 for <xen-devel@lists.xenproject.org>; Tue, 14 Apr 2026 13:29:28 +0200
Received: from [209.85.128.46] (helo=mail-wm1-f46.google.com)
 by tlsNG-d62444.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.0)
 (envelope-from <oleksii.kurochko@gmail.com>)
 id 69de2517-6fc9-0a2a45010019-d155802edde2-3
 for <xen-devel@lists.xenproject.org>; Tue, 14 Apr 2026 13:29:27 +0200
Received: by mail-wm1-f46.google.com with SMTP id
 5b1f17b1804b1-4887f49ec5aso66958685e9.1
 for <xen-devel@lists.xenproject.org>; Tue, 14 Apr 2026 04:29:27 -0700 (PDT)
Received: from [192.168.1.6] (user-109-243-69-121.play-internet.pl.
 [109.243.69.121]) by smtp.gmail.com with ESMTPSA id
 5b1f17b1804b1-488ede15694sm70788025e9.3.2026.04.14.04.29.26
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Tue, 14 Apr 2026 04:29:26 -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=20251104 header.d=gmail.com header.i="@gmail.com" header.h="Content-Transfer-Encoding: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=20251104; t=1776166167; x=1776770967; darn=lists.xenproject.org;
        h=content-transfer-encoding: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;
        bh=BVx3Q+BUemHoO8kbvOP/JtWJmUw3Y0X/LMAbzrFyGuw=;
        b=j+FytLlOapLOduFK/BYe7kXdMVzIwgmbFu3axjue34R9vDctHYZKtqeH5/dKR10ex3
         6fA8iJ1TCuZz0qAZ+reCn/EDl0SXhUT/YW4Jt4P0DgxhHZQpLNaGMTfvXoXwwQgEZDyh
         NiyJejmKJryyjbetMbxrsPB6Dn56JzEXQfuiThOM11kdfXHxjd9HC83jAy66usb0ojig
         DKWFopAiQnkQHbS7nx5CpCrO9146/r3eO36g+bPOWVYMehtbSt9aSoDZ92gx9sS5Hwbu
         7l9BYepqOrfTuz0zhu2gWYKrT84Bg/QYJNTza0iEeYjPJjyPwlx3ScoQ7bzg+NcwckLE
         wc7g==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20251104; t=1776166167; x=1776770967;
        h=content-transfer-encoding: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;
        bh=BVx3Q+BUemHoO8kbvOP/JtWJmUw3Y0X/LMAbzrFyGuw=;
        b=qYle6f8KTx21sU3Xyh8nZdI1pB2QtaCvYg36ZJVwq2SuFa3PMGR1g6slDBhDX/wbDu
         /7SKgjDb8yVoLKivT8olUTpBltN5v+uHaRhd3eHxTgQe0ISLnXMiZZbJuR4Vryy2mX8F
         6dz6EpddPgD7jD0lJuPW51jNx6JyMSvyDo54a5Lxtx80i2s4bnNAoYXbXK44gO62Q+Yq
         xYCPH+EkJtbwm9EeOAzSJ+iUfJnw46eGaqHP+wMW8w02fNQ5GXm7CLLXjSyRfQyTYzG8
         A7spLlqE5dEXwDkG0RwvyXQiap1jEMG/G8aGx5b7VCnxd/b3jnamzQWpvm3SOxBQyxaV
         Ri5A==
X-Forwarded-Encrypted: i=1; AFNElJ9eFsuDLKS2xw0xSSXmipN3/iyWS4adrZrH0yT1eeuHblHyIUKvwxUfeuuqgVUEqj4YL3fn2ybsf6k=@lists.xenproject.org
X-Gm-Message-State: AOJu0Yyi1ogfwkR1kpo987q8F1eX7VPMJTVPXhu8wCeVwJB/O+2xZP5h
	srUNoQplNEfz4JnQ88ra5xIDmG5KJJASq2KpC1oU7tkl7mtqNI+HqG7w
X-Gm-Gg: AeBDievAYPjdFiw3UpHM+ftaLt4p/yYumpU6H5bdChZKaMzLjPkRcupX0qiFGoLbAH3
	S5O3t0/yQGJ4By/h49oIpt3Q0qoEuFrvAhZHByAAC5YRzg9M0fX5H8V8x3dDPLs0N2fPfe1vRrh
	l8xm2biMc5rSgwqY+BJWNJI5MRELkVEqEGCTMvGfy3sUnUv7zxH6yQE2FzQLyl++R62YnPJjspB
	fdeFMU75vTs9xl7A1nBiMa5iv34FulqDt+ua5sw6zQ/jFEdgsC3JHGmj+cUlLWkvEBiWjYtA+12
	InnGXoRgb8+YT/Qgwlf8vv59H0MA6yo5udF4mmNVNlO1M6mVu8rLmpdxA47HIgvxTKyvEsjfm79
	7d7VH3jcV79wJs2CkasKkjIkx+jSWIQ1+3Th9EEMGXSlboOa/jrc+8dOgTiNV4cAQ2Xisyi5sgA
	7zpQqw5f+9AMUneOz8lE2yPV6iGH0m/Qv8TnOrc+/kFK5bXee5QeBEC8KK8AM7iyX+RBNpkHHkH
	t//uQMiqg9xNw==
X-Received: by 2002:a05:600c:8b30:b0:488:b14f:b8ed with SMTP id 5b1f17b1804b1-488d6657928mr232695635e9.0.1776166167275;
        Tue, 14 Apr 2026 04:29:27 -0700 (PDT)
Message-ID: <f099b925-0ea9-43a7-b760-f70f343a4d7c@gmail.com>
Date: Tue, 14 Apr 2026 13:29:25 +0200
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH v1 16/27] xen/riscv: implement IRQ mapping for device
 passthrough
To: Jan Beulich <jbeulich@suse.com>
Cc: Romain Caritey <Romain.Caritey@microchip.com>,
 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.pau@citrix.com>,
 Stefano Stabellini <sstabellini@kernel.org>, xen-devel@lists.xenproject.org
References: <cover.1773157782.git.oleksii.kurochko@gmail.com>
 <10654a6c38fa929b5fdf6f214badfe4f60fe78d4.1773157782.git.oleksii.kurochko@gmail.com>
 <8a8a2afd-6f53-4f45-b8c8-fb34a6fbb970@suse.com>
Content-Language: en-US
From: Oleksii Kurochko <oleksii.kurochko@gmail.com>
In-Reply-To: <8a8a2afd-6f53-4f45-b8c8-fb34a6fbb970@suse.com>
Content-Type: text/plain; charset=UTF-8; format=flowed
Content-Transfer-Encoding: 7bit
X-purgate-ID: tlsNG-d62444/1776166167-B68F4185-D9A76C7B/10/73395122804
X-purgate-type: spam
X-purgate-size: 7788



On 4/2/26 2:22 PM, Jan Beulich wrote:
> On 10.03.2026 18:08, Oleksii Kurochko wrote:
>> --- a/xen/arch/riscv/include/asm/setup.h
>> +++ b/xen/arch/riscv/include/asm/setup.h
>> @@ -5,6 +5,10 @@
>>   
>>   #include <xen/types.h>
>>   
>> +struct domain;
>> +struct dt_device_node;
>> +struct rangeset;
>> +
>>   #define max_init_domid (0)
>>   
>>   void setup_mm(void);
>> @@ -13,6 +17,19 @@ void copy_from_paddr(void *dst, paddr_t paddr, unsigned long len);
>>   
>>   void init_csr_masks(void);
>>   
>> +/* TODO: move somewhere to common header? */
> 
> Counter question: Why ...
> 
>> +/*
>> + * Retrieves the interrupts configuration from a device tree node and maps
>> + * those interrupts to the target domain.
>> + *
>> + * Returns:
>> + *   < 0 error
>> + *   0   success
>> + */
>> +int map_device_irqs_to_domain(struct domain *d, struct dt_device_node *dev,
>> +                              bool need_mapping,
>> +                              struct rangeset *irq_ranges);
> 
> ... is this not an inline function, when ...
> 
>> --- a/xen/arch/riscv/intc.c
>> +++ b/xen/arch/riscv/intc.c
>> @@ -79,3 +79,11 @@ int __init intc_make_domu_dt_node(const struct kernel_info *kinfo)
>>   
>>       return -ENOSYS;
>>   }
>> +
>> +int map_device_irqs_to_domain(struct domain *d, struct dt_device_node *dev,
>> +                              bool need_mapping,
>> +                              struct rangeset *irq_ranges)
>> +{
>> +    return d->arch.vintc->ops->map_device_irqs_to_domain(d, dev, need_mapping,
>> +                                                         irq_ranges);
>> +}
> 
> ... it's merely a wrapper around an indirect function call? And then the
> function isn't used anywhere anyway.

It is used by dom0less common code and it is a wrapper because Arm has 
different implementation and Arm doesn't have 
map_device_irqs_to_domain() in its virtual interrupt controller operations.

> 
>> --- a/xen/arch/riscv/vaplic.c
>> +++ b/xen/arch/riscv/vaplic.c
>> @@ -9,6 +9,7 @@
>>    */
>>   
>>   #include <xen/errno.h>
>> +#include <xen/iocap.h>
>>   #include <xen/sched.h>
>>   #include <xen/xvmalloc.h>
>>   
>> @@ -19,6 +20,113 @@
>>   
>>   #include "aplic-priv.h"
>>   
>> +struct vaplic_priv {
>> +    /* Contains a legal interrupts for a domain */
>> +    uint32_t auth_irq_bmp[APLIC_NUM_REGS];
>> +};
> 
> With it apparently plural that is correct, the first "a" wants dropping
> from the comment.
> 
>> +static bool is_irq_shared_among_domains(const struct domain *d,
>> +                                        const unsigned int irq_num)
>> +{
>> +    struct domain *tmp;
> 
> const
> 
>> +    unsigned int reg_num = irq_num / APLIC_NUM_REGS;
>> +    unsigned int bit_pos = irq_num % APLIC_NUM_REGS;
>> +
>> +    for_each_domain ( tmp )
> 
> See other uses of the construct for how this needs synchronizing. But looping
> over all domains looks pretty inefficient anyway for ...
> 
>> +    {
>> +        uint32_t *auth_irq_bmp;
>> +
>> +        if ( tmp == d )
>> +            continue;
>> +
>> +        auth_irq_bmp = tmp->arch.vintc->private;
>> +
>> +        if ( auth_irq_bmp[reg_num] & BIT(bit_pos, U) )
>> +        {
>> +            printk("%s: irq%d is shared between %pd and %pd\n", __func__,
>> +                   irq_num, tmp, d);
>> +
>> +            return true;
>> +        }
> 
> ... the intended purpose. If IRQs can't be shared, can't you maintain global
> state of which ones are in use _somewhere_?

Makes sense. I will create a static array inside 
vaplic_map_device_irqs_to_domain() and maintain global state there.

> 
>> +    }
>> +
>> +    return false;
>> +}
> 
> This together with ...
> 
>> +int vaplic_map_device_irqs_to_domain(struct domain *d,
>> +                                     struct dt_device_node *dev,
>> +                                     bool need_mapping,
>> +                                     struct rangeset *irq_ranges)
>> +{
>> +    unsigned int i, nirq;
>> +    int res, irq;
>> +    struct dt_raw_irq rirq;
>> +    uint32_t *auth_irq_bmp = d->arch.vintc->private;
>> +    unsigned int reg_num;
>> +
>> +    nirq = dt_number_of_irq(dev);
>> +
>> +    /* Give permission and map IRQs */
>> +    for ( i = 0; i < nirq; i++ )
>> +    {
>> +        res = dt_device_get_raw_irq(dev, i, &rirq);
>> +        if ( res )
>> +        {
>> +            printk(XENLOG_ERR "Unable to retrieve irq %u for %s\n",
>> +                   i, dt_node_full_name(dev));
>> +            return res;
>> +        }
>> +
>> +        /*
>> +         * Don't map IRQ that have no physical meaning
>> +         * ie: IRQ whose controller is not APLIC/IMSIC/PLIC.
>> +         */
>> +        if ( rirq.controller != dt_interrupt_controller )
>> +        {
>> +            dt_dprintk("irq %u not connected to primary controller."
>> +                       "Connected to %s\n", i,
>> +                       dt_node_full_name(rirq.controller));
>> +            continue;
>> +        }
>> +
>> +        irq = platform_get_irq(dev, i);
>> +        if ( irq < 0 )
>> +        {
>> +            printk("Unable to get irq %u for %s\n", i, dt_node_full_name(dev));
>> +            return irq;
>> +        }
>> +
>> +        res = irq_permit_access(d, irq);
>> +        if ( res )
>> +        {
>> +            printk(XENLOG_ERR "Unable to permit to %pd access to IRQ %u\n", d,
>> +                   irq);
> 
> This time the other way around: %d please with plain int. (Again at least
> once further down.)
> 
>> +            return res;
>> +        }
>> +
>> +        reg_num = irq / APLIC_NUM_REGS;
>> +
>> +        if ( is_irq_shared_among_domains(d, irq) )
>> +        {
>> +            printk("%s: Shared IRQ isn't supported\n", __func__);
>> +            return -EINVAL;
>> +        }
>> +
>> +        auth_irq_bmp[reg_num] |= BIT(irq % APLIC_NUM_REGS, U);
> 
> ... all of this leaves me with the impression that IRQ numbering isn't really
> virtualized. IRQs are merely split into groups, one group per domain (and
> maybe some unused). How are you going to fit in truly virtual IRQs?

What do you mean by truly virtual IRQs?

I can't totally agree that the current approach isn't use virtual IRQs, 
yes, they are 1:1 mapped but on the other side Xen is responsible to 
give an IRQ number for guest's device and Xen is responsible that guest 
isn't trying to reach IRQ which not belongs to it.


> 
>> +        dt_dprintk("  - IRQ: %u\n", irq);
>> +
>> +        if ( irq_ranges )
>> +        {
>> +            res = rangeset_add_singleton(irq_ranges, irq);
>> +            if ( res )
>> +                return res;
>> +        }
> 
> What is irq_ranges?

IIUC based on Arm code irq_ranges is an optional output accumulator, the 
caller allocates and passes it in when it needs to track which IRQs were 
mapped (overlay use case), or passes NULL when that tracking is not needed.

I added here as map_device_irqs_to_domain() is called from the common 
code and so maybe one day someone will decide to pass irq_ranges to this 
functions. At the moment, for RISC-V it is the only one user of 
map_device_irqs_to_domain() and it passes NULL.

> 
>> @@ -34,6 +142,7 @@ static int __init cf_check vcpu_vaplic_init(struct vcpu *v)
>>   
>>   static const struct vintc_ops vaplic_ops = {
>>       .vcpu_init = vcpu_vaplic_init,
>> +    .map_device_irqs_to_domain = vaplic_map_device_irqs_to_domain,
>>   };
> 
> What about the inverse function, needed for domain cleanup?

I planned to add it when it will be really needed. At the momemnt, I 
don't have such use cases.

Thanks.

~ Oleksii


From xen-devel-bounces@lists.xenproject.org Tue Apr 14 11:36:32 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 14 Apr 2026 11:36:32 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1281642.1564485 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wCc4B-00075F-S5; Tue, 14 Apr 2026 11:36:27 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1281642.1564485; Tue, 14 Apr 2026 11:36: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 1wCc4B-000758-PW; Tue, 14 Apr 2026 11:36:27 +0000
Received: by outflank-mailman (input) for mailman id 1281642;
 Tue, 14 Apr 2026 11:36:26 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <bounce-md_30504962.69de26b7.v1-257b21c4df744c0ea0670254c1d0c766@bounce.vates.tech>)
 id 1wCc49-000752-VE
 for xen-devel@lists.xenproject.org; Tue, 14 Apr 2026 11:36:26 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wCc49-00FyEd-3o
 for xen-devel@lists.xenproject.org; Tue, 14 Apr 2026 13:36:25 +0200
Received: from [10.42.69.3] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1) (envelope-from
 <bounce-md_30504962.69de26b7.v1-257b21c4df744c0ea0670254c1d0c766@bounce.vates.tech>)
 id 69de26b6-e002-0a2a0a5209dd-0a2a4503befa-8
 for <xen-devel@lists.xenproject.org>; Tue, 14 Apr 2026 13:36:24 +0200
Received: from [198.2.187.14] (helo=mail187-14.suw11.mandrillapp.com)
 by tlsNG-33051d.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.0)
 (envelope-from
 <bounce-md_30504962.69de26b7.v1-257b21c4df744c0ea0670254c1d0c766@bounce.vates.tech>)
 id 69de26b7-02b3-0a2a45030019-c602bb0e877a-3
 for <xen-devel@lists.xenproject.org>; Tue, 14 Apr 2026 13:36:24 +0200
Received: from pmta09.mandrill.prod.suw01.rsglab.com (localhost [127.0.0.1])
 by mail187-14.suw11.mandrillapp.com (Mailchimp) with ESMTP id
 4fw2Kg2Sm9z8XRvxX
 for <xen-devel@lists.xenproject.org>; Tue, 14 Apr 2026 11:36:23 +0000 (GMT)
Received: from [37.26.189.201] by mandrillapp.com id
 257b21c4df744c0ea0670254c1d0c766; Tue, 14 Apr 2026 11:36: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=mte1 header.d=mandrillapp.com header.i="@mandrillapp.com" header.h="From:Subject:Message-Id:To:Cc:References:In-Reply-To:Feedback-ID:Date:MIME-Version:Content-Type:Content-Transfer-Encoding"; dkim=pass header.s=mte1 header.d=vates.tech header.i="ngoc-tu.dinh@vates.tech" header.h="From:Subject:Message-Id:To:Cc:References:In-Reply-To:Feedback-ID:Date:MIME-Version:Content-Type:Content-Transfer-Encoding"
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=mandrillapp.com;
	s=mte1; t=1776166583; x=1776436583;
	bh=xwnl3M2COGDDo2p9tYSk8w95SfMZZ/DdHUWNhVXJjFc=;
	h=From:Subject:Message-Id:To:Cc:References:In-Reply-To:Feedback-ID:
	 Date:MIME-Version:Content-Type:Content-Transfer-Encoding:CC:Date:
	 Subject:From;
	b=HKsOlKKvb9wvqin1rprD45U5jl0KnNmIsKH/+9RcQ0H9A1wS51aW92nbqjdG+FIua
	 DFMKU9Cp5r9lE1Qj2/SXWDxlVdTYkgdHuXMF9Z6DlWc/k7xBiaqXV/YacVM2U+6PVL
	 /4PolylLG5T3PUAydL8v1czpUVphXb2lrbKu7A6A0BnKPtZbKJXcuaBKl6hBCloMlt
	 4JQBvPJlc9Khnx0JhcIbsQgk1mbz2uBIYuoz9xJS8GqSZXqQwZOibKtlh5962OLkS7
	 Psr1sWXGv7NHVk/Bk91xLk/pEqOc3/fw4CRkWm2b7scpmZIbDOlL/e1n043FfZML5h
	 79GApbmmUgYYg==
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=vates.tech; s=mte1;
	t=1776166583; x=1776427083; i=ngoc-tu.dinh@vates.tech;
	bh=xwnl3M2COGDDo2p9tYSk8w95SfMZZ/DdHUWNhVXJjFc=;
	h=From:Subject:Message-Id:To:Cc:References:In-Reply-To:Feedback-ID:
	 Date:MIME-Version:Content-Type:Content-Transfer-Encoding:CC:Date:
	 Subject:From;
	b=mNAGXJrYoNmLRKoPA0DE0SP9PrP70Z6cr04lQrBXUW2E1UszXpBWokEfK7I9552YP
	 wKDLJtk2Wfo3zKWlyDPmVAytcVjLpptFB72N3et9DQsYvSBGGOUaGh+C93iPurml6n
	 Ddn6To9pmNXoL5jWW7QUmTnuT4E+C/KclpXPZnbJ7fhcrX94IpuxTTGiSAysQzAKa6
	 6kIyTIutb6DWjS7SHoSZfBVv27Jd21OHLdJ6SgsmAv3Mz3+n8eJ1qQRnaZd/3NdMEJ
	 K7pp/jeMFuU9DqTwi44QMiUu4E1DN3zt7ilfHIujPoP+Wv8Hi6lMG7hAO6pwGerYKk
	 FiY8BREJKMgsQ==
From: "Tu Dinh" <ngoc-tu.dinh@vates.tech>
Subject: =?utf-8?Q?Re:=20[PATCH=202/2]=20xen/cpu:=20round=20up=20cpu=5Fkhz=20calculations?=
X-Bm-Disclaimer: Yes
X-Bm-Milter-Handled: 4ffbd6c1-ee69-4e1b-aabd-f977039bd3e2
X-Bm-Transport-Timestamp: 1776166581512
Message-Id: <d647f18c-c91b-4507-ac1a-149e50d14062@vates.tech>
To: "Roger Pau Monne" <roger.pau@citrix.com>, 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>, "Alistair Francis" <alistair.francis@wdc.com>, "Connor Davis" <connojdavis@gmail.com>, "Oleksii Kurochko" <oleksii.kurochko@gmail.com>, "Jan Beulich" <jbeulich@suse.com>, "Andrew Cooper" <andrew.cooper3@citrix.com>, "Teddy Astie" <teddy.astie@vates.tech>
References: <20260414103327.7420-1-roger.pau@citrix.com> <20260414103327.7420-3-roger.pau@citrix.com>
In-Reply-To: <20260414103327.7420-3-roger.pau@citrix.com>
X-Native-Encoded: 1
X-Report-Abuse: =?UTF-8?Q?Please=20forward=20a=20copy=20of=20this=20message,=20including=20all=20headers,=20to=20abuse@mandrill.com.=20You=20can=20also=20report=20abuse=20here:=20https://mandrillapp.com/contact/abuse=3Fid=3D30504962.257b21c4df744c0ea0670254c1d0c766?=
X-Mandrill-User: md_30504962
Feedback-ID: 30504962:30504962.20260414:md
Date: Tue, 14 Apr 2026 11:36:23 +0000
MIME-Version: 1.0
Content-Type: text/plain; charset=utf-8
Content-Transfer-Encoding: quoted-printable
X-purgate-ID: tlsNG-33051d/1776166584-40369C9A-690E3EA6/0/0
X-purgate-type: clean
X-purgate-size: 2660

On 14/04/2026 12:36, Roger Pau Monne wrote:
> All arches truncate the cpu_khz without taking into account the less
> significant digits.  Instead use DIV_ROUND_UP() when scaling from Hz to k=
Hz
> to get as more accurate kHz value.
> 
> Signed-off-by: Roger Pau Monn=C3=A9 <roger.pau@citrix.com>

Couldn't DIV_ROUND be used here instead for a round-to-closest?

> ---
> While the possibly more accurate value is nice, I'm not sure it's actuall=
y
> fixing any functional bug, and hence the lack of "Fixes:" tag.
> ---
>   xen/arch/arm/time.c   | 4 ++--
>   xen/arch/riscv/time.c | 2 +-
>   xen/arch/x86/time.c   | 2 +-
>   3 files changed, 4 insertions(+), 4 deletions(-)
> 
> diff --git a/xen/arch/arm/time.c b/xen/arch/arm/time.c
> index a12912a106a0..9e0c485c77db 100644
> --- a/xen/arch/arm/time.c
> +++ b/xen/arch/arm/time.c
> @@ -118,7 +118,7 @@ static void __init preinit_dt_xen_time(void)
>       res =3D dt_property_read_u32(timer, "clock-frequency", &rate);
>       if ( res )
>       {
> -        cpu_khz =3D rate / 1000;
> +        cpu_khz =3D DIV_ROUND_UP(rate, 1000);
>           validate_timer_frequency();
>           timer_dt_clock_frequency =3D rate;
>       }
> @@ -136,7 +136,7 @@ void __init preinit_xen_time(void)
>   
>       if ( !cpu_khz )
>       {
> -        cpu_khz =3D (READ_SYSREG(CNTFRQ_EL0) & CNTFRQ_MASK) / 1000;
> +        cpu_khz =3D DIV_ROUND_UP(READ_SYSREG(CNTFRQ_EL0) & CNTFRQ_MASK, =
1000);
>           validate_timer_frequency();
>       }
>   
> diff --git a/xen/arch/riscv/time.c b/xen/arch/riscv/time.c
> index 7efa76fdbcb1..faca7b70e13a 100644
> --- a/xen/arch/riscv/time.c
> +++ b/xen/arch/riscv/time.c
> @@ -40,7 +40,7 @@ static void __init preinit_dt_xen_time(void)
>       if ( !dt_property_read_u32(timer, "timebase-frequency", &rate) )
>           panic("Unable to find clock frequency\n");
>   
> -    cpu_khz =3D rate / 1000;
> +    cpu_khz =3D DIV_ROUND_UP(rate, 1000);
>   }
>   
>   int reprogram_timer(s_time_t timeout)
> diff --git a/xen/arch/x86/time.c b/xen/arch/x86/time.c
> index 244277c0a921..b84414f00d05 100644
> --- a/xen/arch/x86/time.c
> +++ b/xen/arch/x86/time.c
> @@ -2642,7 +2642,7 @@ void __init early_time_init(void)
>       set_time_scale(&t->tsc_scale, tmp);
>       t->stamp.local_tsc =3D boot_tsc_stamp;
>   
> -    cpu_khz =3D tmp / 1000;
> +    cpu_khz =3D DIV_ROUND_UP(tmp, 1000);
>       printk("Detected %lu.%03lu MHz processor.\n",
>              cpu_khz / 1000, cpu_khz % 1000);
>   



--
Ngoc Tu Dinh | Vates XCP-ng Developer

XCP-ng & Xen Orchestra - Vates solutions

web: https://vates.tech




From xen-devel-bounces@lists.xenproject.org Tue Apr 14 11:42:25 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 14 Apr 2026 11:42:25 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1281653.1564494 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wCc9r-0000OI-Iz; Tue, 14 Apr 2026 11:42:19 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1281653.1564494; Tue, 14 Apr 2026 11:42: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 1wCc9r-0000OB-G2; Tue, 14 Apr 2026 11:42:19 +0000
Received: by outflank-mailman (input) for mailman id 1281653;
 Tue, 14 Apr 2026 11:42:18 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92) id 1wCc9q-0000O5-Pb
 for xen-devel@lists.xenproject.org; Tue, 14 Apr 2026 11:42:18 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wCc9q-00AwR9-1m
 for xen-devel@lists.xenproject.org; Tue, 14 Apr 2026 13:42:18 +0200
Received: from [10.42.69.12] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <oleksii.kurochko@gmail.com>)
 id 69de280f-5cb7-0a2a0a5109dd-0a2a450ce60a-24
 for <xen-devel@lists.xenproject.org>; Tue, 14 Apr 2026 13:42:17 +0200
Received: from [209.85.128.43] (helo=mail-wm1-f43.google.com)
 by tlsNG-d25034.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.0)
 (envelope-from <oleksii.kurochko@gmail.com>)
 id 69de2819-f40c-0a2a450c0019-d155802bec47-3
 for <xen-devel@lists.xenproject.org>; Tue, 14 Apr 2026 13:42:17 +0200
Received: by mail-wm1-f43.google.com with SMTP id
 5b1f17b1804b1-488aa77a06eso91071905e9.0
 for <xen-devel@lists.xenproject.org>; Tue, 14 Apr 2026 04:42:17 -0700 (PDT)
Received: from [192.168.1.6] (user-109-243-69-121.play-internet.pl.
 [109.243.69.121]) by smtp.gmail.com with ESMTPSA id
 5b1f17b1804b1-488d5cf2e70sm202909035e9.0.2026.04.14.04.42.15
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Tue, 14 Apr 2026 04:42:16 -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=20251104 header.d=gmail.com header.i="@gmail.com" header.h="Content-Transfer-Encoding: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=20251104; t=1776166937; x=1776771737; darn=lists.xenproject.org;
        h=content-transfer-encoding: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;
        bh=JUP8Sn5b+QdkF//PtXNqcRDDdQzwJmQqArPusk2Q4ZA=;
        b=PanHo9F0BGgQJfnpk654MGXvA4++6jYeWN1Ia9KUsvL1mGfBqfsIGIa6H+FWnJsD/s
         QuaSvx7CmrW5xurD0InU8S4Ba1ZM6rPqGCVNR/DwcQAACs/Cs7vafK6cD/9A4ILcMEWS
         bOiZ+sEPzmNaWK/6ykjeLu6of5FhsDdkY7SXy4beReQKkgLM4ntxFSBMYmp+gLvZcxtF
         M8MARLSoPqunwp7pA6lp14MMb5rvjdNHivO29Vm5zb+dJtd7MVQRlsKvKXL/qo5Qm7Fs
         p/laOrIbU3TjJ7FaejPfya6Qfki0IWew6WAYDWXprUcNigqv11nP86UtqNCZqxPiSfFD
         3efg==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20251104; t=1776166937; x=1776771737;
        h=content-transfer-encoding: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;
        bh=JUP8Sn5b+QdkF//PtXNqcRDDdQzwJmQqArPusk2Q4ZA=;
        b=qXgbIZPj6EfdZ9cM5t0qbCZiNGmZ9cEUhFE8YL4D0cp+iREFwQy0K81cjgPwLu9z9N
         3E6WIMVeVH0JFz9dU0InB8iMottG4RZvpgwKkxWMBF9xwYfPLsdPkY0iZ3sg0lE66Lfi
         ZlSl2JmQSnGZ3naOnC7GO5k9j2fkr19IY2d0R8Ozzw1Jh3/qDnlRi67mW0LF8ueHqxW0
         FtvuGRxNcIfepBtUguIOlfXp6SEzjYFP0qK4gp7U5uyQCchLljzvOvvfkY0rFzEaHV+c
         /V5iCHTEe9LwQZ4ETWJXSEm7zXLBbcul+yImNA+a85JAdz8z5mbxMVDY/rlbaGa+xFMs
         05ZQ==
X-Forwarded-Encrypted: i=1; AFNElJ9mtDG3OnYZC52lZF6yhSUSf3PfIHsppg2FdooXly3DoWzCF0IjlX842WoP2mzkQg4wT20s44gsAK8=@lists.xenproject.org
X-Gm-Message-State: AOJu0Ywfu2iwb1L/sjTf3x0ChFm0t6+Uav/A+TjC5eV4Icq7rvbJxE6N
	sOvIv3VE/Nin7sul+XLd0OWNw538N4RGeP0tG+OZxXQqP5LmAHl9v8pN
X-Gm-Gg: AeBDievqsE85wwuFqcFfgrOSElp6JTmk3ZGIeqk6A83dwkbyCrgmpQ2oicqGtGlpYfj
	+r5425AwsrfOhIkp3w09uULJpEl5uGZwiYQ31djvObBL3z1YnGLBZT8vDz67tXJwolJuZDMgtLh
	9YtQK3qSRe3qLVbId87PLgRLL1oZdHEn+DJiJB0rE0AIDiOUiJjp/jFyQtwdu1MT2AOXKFPgNcL
	QDo5AsCZ1+zK4in2za38O+MMbckHVh6gSoTVwKu4lkazaNZBKsYAmvR/UKDhIUoH6/Sc3QNk247
	fsw2lmkk9S32rZZ+9UWL9wM3vRLQ/MFM1MWyR/ElYUSLYZVMHUbobuXcv3elYpdVoSB8+6e48Kv
	ay9oyQBviCDxM1OtIpkw6Ch+apcTjY+pnQETsH0bkPCL8zcGm01AEw8n+O+bC+kzYhuJuj7g6IT
	pwuEx31Xh5GXczrDu1HiAmh/lXuvxcZIYoeXPKiZ/YlaugTiEXFEL4Cy94AVUoDkTG3EJl4DbWx
	9Xt5+oNd3rb5A==
X-Received: by 2002:a05:600c:4f83:b0:488:7ff5:2c67 with SMTP id 5b1f17b1804b1-488d67f0aa2mr211771925e9.12.1776166936568;
        Tue, 14 Apr 2026 04:42:16 -0700 (PDT)
Message-ID: <42b01875-e992-414a-84a7-3bc4e4aa16ef@gmail.com>
Date: Tue, 14 Apr 2026 13:42:14 +0200
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH v1 17/27] xen/riscv: add missing APLIC register offsets,
 masks to asm/aplic.h.
To: Jan Beulich <jbeulich@suse.com>
Cc: Romain Caritey <Romain.Caritey@microchip.com>,
 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.pau@citrix.com>,
 Stefano Stabellini <sstabellini@kernel.org>, xen-devel@lists.xenproject.org
References: <cover.1773157782.git.oleksii.kurochko@gmail.com>
 <2097fefb49fca36f641ddd7d7fb31e796a03619e.1773157782.git.oleksii.kurochko@gmail.com>
 <072c0f21-a223-46dd-8ea2-f3591c2fd547@suse.com>
Content-Language: en-US
From: Oleksii Kurochko <oleksii.kurochko@gmail.com>
In-Reply-To: <072c0f21-a223-46dd-8ea2-f3591c2fd547@suse.com>
Content-Type: text/plain; charset=UTF-8; format=flowed
Content-Transfer-Encoding: 7bit
X-purgate-ID: tlsNG-d25034/1776166937-83B44A3D-E7882E6A/10/73395122804
X-purgate-type: spam
X-purgate-size: 2544



On 4/2/26 2:51 PM, Jan Beulich wrote:
> On 10.03.2026 18:08, Oleksii Kurochko wrote:
>> These definitions are required for correct decoding of APLIC MMIO
>> accesses and target configuration, and will be used by both the
>> physical and virtual APLIC implementations.
>>
>> No functional change is intended by this patch; it only centralises
>> hardware definitions that were previously missing.
>>
>> Co-developed-by: Romain Caritey <Romain.Caritey@microchip.com>
>> Signed-off-by: Oleksii Kurochko <oleksii.kurochko@gmail.com>
> 
> I can commit this as is (with my ack added), but I'd like you to consider
> again my remark elsewhere as to ...
> 
>> --- a/xen/arch/riscv/include/asm/aplic.h
>> +++ b/xen/arch/riscv/include/asm/aplic.h
>> @@ -17,6 +17,11 @@
>>   
>>   #define APLIC_NUM_REGS 32
>>   
>> +#define APLIC_REG_OFFSET_MASK   0x3FFF
>> +#define APLIC_TARGET_IPRIO_MASK 0xFF
>> +#define APLIC_TARGET_GUEST_IDX_SHIFT 12
>> +#define APLIC_TARGET_EIID_MASK  0x7FF
>> +
>>   #define APLIC_DOMAINCFG_IE      BIT(8, U)
>>   #define APLIC_DOMAINCFG_DM      BIT(2, U)
>>   
>> @@ -27,6 +32,36 @@
>>   #define APLIC_SOURCECFG_SM_LEVEL_HIGH   0x6
>>   #define APLIC_SOURCECFG_SM_LEVEL_LOW    0x7
>>   
>> +#define APLIC_DOMAINCFG         0x0000
>> +#define APLIC_SOURCECFG_BASE    0x0004
>> +#define APLIC_SOURCECFG_LAST    0x0FFC
>> +
>> +#define APLIC_SMSICFGADDR       0x1BC8
>> +#define APLIC_SMSICFGADDRH      0x1BCC
>> +
>> +#define APLIC_SETIP_BASE        0x1C00
>> +#define APLIC_SETIP_LAST        0x1C7C
>> +#define APLIC_SETIPNUM          0x1CDC
>> +
>> +#define APLIC_CLRIP_BASE        0x1D00
>> +#define APLIC_CLRIP_LAST        0x1D7C
>> +#define APLIC_CLRIPNUM          0x1DDC
>> +
>> +#define APLIC_SETIE_BASE        0x1E00
>> +#define APLIC_SETIE_LAST        0x1E7C
>> +#define APLIC_SETIENUM          0x1EDC
>> +
>> +#define APLIC_CLRIE_BASE        0x1F00
>> +#define APLIC_CLRIE_LAST        0x1F7C
>> +#define APLIC_CLRIENUM          0x1FDC
>> +
>> +#define APLIC_SETIPNUM_LE       0x2000
>> +
>> +#define APLIC_GENMSI            0x3000
>> +
>> +#define APLIC_TARGET_BASE       0x3004
>> +#define APLIC_TARGET_LAST       0x3FFC
> 
> ... the case of hex digits vs the need to have L (and hence U) suffixes in
> upper case for Misra's sake. Those suffixes are easier to spot as such when
> the hex digits use lower case. Then even for un-suffixed numbers lower case
> is preferable imo, for overall consistency.

I will switch to lower case.

~ Oleksii


From xen-devel-bounces@lists.xenproject.org Tue Apr 14 11:45:22 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 14 Apr 2026 11:45:22 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1281666.1564523 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wCcCm-00018V-96; Tue, 14 Apr 2026 11:45:20 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1281666.1564523; Tue, 14 Apr 2026 11:45: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 1wCcCm-00018O-6T; Tue, 14 Apr 2026 11:45:20 +0000
Received: by outflank-mailman (input) for mailman id 1281666;
 Tue, 14 Apr 2026 11:45:19 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92) id 1wCcCl-00018I-7L
 for xen-devel@lists.xenproject.org; Tue, 14 Apr 2026 11:45:19 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wCcCk-00G083-K6
 for xen-devel@lists.xenproject.org; Tue, 14 Apr 2026 13:45:18 +0200
Received: from [10.42.69.10] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <oleksii.kurochko@gmail.com>)
 id 69de28c7-5cb7-0a2a0a5109dd-0a2a450a9c24-10
 for <xen-devel@lists.xenproject.org>; Tue, 14 Apr 2026 13:45:18 +0200
Received: from [209.85.128.47] (helo=mail-wm1-f47.google.com)
 by tlsNG-4011c0.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.0)
 (envelope-from <oleksii.kurochko@gmail.com>)
 id 69de28ce-ee98-0a2a450a0019-d155802fa8fa-3
 for <xen-devel@lists.xenproject.org>; Tue, 14 Apr 2026 13:45:18 +0200
Received: by mail-wm1-f47.google.com with SMTP id
 5b1f17b1804b1-482f454be5bso57861425e9.0
 for <xen-devel@lists.xenproject.org>; Tue, 14 Apr 2026 04:45:18 -0700 (PDT)
Received: from [192.168.1.6] (user-109-243-69-121.play-internet.pl.
 [109.243.69.121]) by smtp.gmail.com with ESMTPSA id
 ffacd0b85a97d-43d63e4f16bsm38863535f8f.26.2026.04.14.04.45.16
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Tue, 14 Apr 2026 04:45:17 -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=20251104 header.d=gmail.com header.i="@gmail.com" header.h="Content-Transfer-Encoding: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=20251104; t=1776167118; x=1776771918; darn=lists.xenproject.org;
        h=content-transfer-encoding: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;
        bh=A5rXna91Knf1BxzFhOxEplw4p6Ue8ki87G2ESnjeg+8=;
        b=XLMBOaUwAUcX85EXkLfq8TgKdVt7h7Ro/Tf8fnc3evLY+MGc6yIYv6RASdRRmAxUr1
         QZ3NAsbcXtbVK893+xXUV/AdvY4agXY97I+3yvpzQsFh/k+p1PA5X5/2EEwsE26qmSIm
         HMVAx1QWcGllvr+fCU4HUokz83tNpeiscSOrKGvej3ORLYBrN/FjtFv1pN9yfdD0Ycn0
         liwMzwBya5n7A3jX/qKlnEMfUOa/kdIaliOkGuMO8Se+oi9gvLJshpO0rBEf8pieRFtv
         SNdZA+9t1wkTUbSSrWNnWYn1YOYTKm09thlUBlrYjjagc8YcVLzlUgWkcsHQuNPuScWp
         Fx4Q==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20251104; t=1776167118; x=1776771918;
        h=content-transfer-encoding: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;
        bh=A5rXna91Knf1BxzFhOxEplw4p6Ue8ki87G2ESnjeg+8=;
        b=Z6PfA05tNtzJKa9DXuY5VjR1B5Vx4sJ7FcgRvM1w4hKinTn5vcIp2b6DafT0u14qKf
         M3Bp3UpHtgZA9wkPQGJmWPBd8n19X3+5NsoKMidDU02FAYJfdkm3LqTGDn7TSZvsZvjX
         1izOqhDbds7xuN766tBBtGtXfHh5Cw4Bfnq+l//nqHZM9LWvnOhDfqRvCYZZtbU25uJk
         g/zku5SDsJAyST/ePPWd5ELwdshAWbJ6MLPOlS4cwrigPHr54TedVCFn549UQqE6fvMH
         FYieLWyWwCuVBN2t/FiZQ0bmOq0Y9PksfIh6NEKiAL9G/2O3++0WLwuuQBNbCX19mOiA
         3gCQ==
X-Forwarded-Encrypted: i=1; AFNElJ/PL76kZhO24VB7oEFFe+iI/TUe4Yf4OyH/QAvz8fa0dULVSYTzIltQiHIRP0dvw29h8f6cW543YvQ=@lists.xenproject.org
X-Gm-Message-State: AOJu0YxIDWbjk5KxAXA/eZZnErgG2GB/N5zdAEeTdalXwBeIEbYzXtyr
	0d+qWoXh4WJOIIBUbSajGiplGfnC56gW3CxTpwh7I+ESw4bOuNpIIKpx
X-Gm-Gg: AeBDietn5mdjNklUhsQw8oPbWdkAzGPMyIK/kskd13w4AiBnBX9o5p8OWAaMbNQS9/p
	agz5Es1H1wqDevxJRZpFBp/3IP+3XMgXZZtWiJzrNjtMy9U/e6ENh2/5q12B3igIgDFGsIjM464
	4dUkn02t5eWFgP0LLdTECESNNz2MM2W6gYSUn94QPdbsz4MbjYKienWT5ZX7pNKDE0WDB0/D3O0
	DX3UWDKKv7zdqtXa9Al6FBAHJKqIskKS9sCygYDdciKFg4SwbkgKPk1LFMOIKvHHIARtS+2/3Wx
	g4TZXhZO4ZOowJkQS/CT+WljaGFNFfOYJUOr20rpQGlhU9dGT3J23ovTpGXySY5gsyJVBp8zl45
	Npt8vGLste0nqTRNDH6wS7ddve9lb+ACWGf/wRcelScMq6t2LwsvW9qRSv5pnNm3mJSuB8ErYBT
	XjgeEe/Vx2SMFoiVuHpsXtUtqfxLDL1D7d8qDjFiUqXVpAp/DgAXKEeN5xZDENzaFEMfjbetLjQ
	2OthzDPETkQ9Q==
X-Received: by 2002:a05:600c:609a:b0:485:3e00:944a with SMTP id 5b1f17b1804b1-488d68ae78amr228279505e9.9.1776167117902;
        Tue, 14 Apr 2026 04:45:17 -0700 (PDT)
Message-ID: <f0503bd6-3ea3-42da-9211-02836addc176@gmail.com>
Date: Tue, 14 Apr 2026 13:45:16 +0200
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH v1 18/27] xen/riscv: add vaplic access check
To: Jan Beulich <jbeulich@suse.com>
Cc: Romain Caritey <Romain.Caritey@microchip.com>,
 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.pau@citrix.com>,
 Stefano Stabellini <sstabellini@kernel.org>, xen-devel@lists.xenproject.org
References: <cover.1773157782.git.oleksii.kurochko@gmail.com>
 <0fc9adf790d4f981e8117bd9759c7e64bb11e439.1773157782.git.oleksii.kurochko@gmail.com>
 <0519fb8a-48e3-4f36-8d6c-a966080ffb55@suse.com>
Content-Language: en-US
From: Oleksii Kurochko <oleksii.kurochko@gmail.com>
In-Reply-To: <0519fb8a-48e3-4f36-8d6c-a966080ffb55@suse.com>
Content-Type: text/plain; charset=UTF-8; format=flowed
Content-Transfer-Encoding: 7bit
X-purgate-ID: tlsNG-4011c0/1776167118-BED4A0B1-78C1925E/10/73395122804
X-purgate-type: spam
X-purgate-size: 1814



On 4/2/26 3:10 PM, Jan Beulich wrote:
> On 10.03.2026 18:08, Oleksii Kurochko wrote:
>> --- a/xen/arch/riscv/aplic.c
>> +++ b/xen/arch/riscv/aplic.c
>> @@ -38,6 +38,7 @@ static struct aplic_priv aplic = {
>>   
>>   static struct intc_info __ro_after_init aplic_info = {
>>       .hw_version = INTC_APLIC,
>> +    .private = &aplic,
> 
> Isn't this the host instance again? How can you ...
> 
>> --- a/xen/arch/riscv/vaplic.c
>> +++ b/xen/arch/riscv/vaplic.c
>> @@ -127,6 +127,20 @@ int vaplic_map_device_irqs_to_domain(struct domain *d,
>>       return 0;
>>   }
>>   
>> +static int cf_check vaplic_is_access(const struct vcpu *vcpu,
>> +                                     const unsigned long addr)
>> +{
>> +    const struct vaplic *vaplic = to_vaplic(vcpu->domain->arch.vintc);
>> +    const struct aplic_priv *priv = vaplic->base.info->private;
>> +    const paddr_t paddr_end = priv->paddr_start + priv->size;
>> +
>> +    /* check if it is an APLIC access */
>> +    if ( priv->paddr_start <= addr && addr < paddr_end )
> 
> ... use that here? Or asked differently, again: Where's the virtualization,
> i.e. the abstraction away from host properties?

With the current use case it was easier to choose such approach then 
provide the full abstraction.

> 
> Furthermore, is it really sufficient to check just the starting address of
> an access? Shouldn't the last byte accessed also fall into the range in
> question?

I think that it is okay, my understanding is that *paddr_end technically 
is another range.

> 
>> +        return 1;
>> +
>> +    return 0;
>> +}
> 
> This function looks to want to return bool (and then use true/false).

Agree, then it will also need to update function pointer prototype in 
vintc_ops.

Thanks.

~ Oleksii


From xen-devel-bounces@lists.xenproject.org Tue Apr 14 11:51:07 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 14 Apr 2026 11:51:07 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1281681.1564545 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wCcIJ-0002yM-0V; Tue, 14 Apr 2026 11:51:03 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1281681.1564545; Tue, 14 Apr 2026 11:51: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 1wCcII-0002yF-U7; Tue, 14 Apr 2026 11:51:02 +0000
Received: by outflank-mailman (input) for mailman id 1281681;
 Tue, 14 Apr 2026 11:51:01 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92) id 1wCcIH-0002y9-AC
 for xen-devel@lists.xenproject.org; Tue, 14 Apr 2026 11:51:01 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wCcIG-006dsP-Mw
 for xen-devel@lists.xenproject.org; Tue, 14 Apr 2026 13:51:00 +0200
Received: from [10.42.69.6] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <oleksii.kurochko@gmail.com>)
 id 69de2a1d-e002-0a2a0a5209dd-0a2a4506e108-34
 for <xen-devel@lists.xenproject.org>; Tue, 14 Apr 2026 13:51:00 +0200
Received: from [209.85.221.47] (helo=mail-wr1-f47.google.com)
 by tlsNG-16d1c6.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.0)
 (envelope-from <oleksii.kurochko@gmail.com>)
 id 69de2a24-0df0-0a2a45060019-d155dd2fe5bf-3
 for <xen-devel@lists.xenproject.org>; Tue, 14 Apr 2026 13:51:00 +0200
Received: by mail-wr1-f47.google.com with SMTP id
 ffacd0b85a97d-43d43e09de5so3262103f8f.1
 for <xen-devel@lists.xenproject.org>; Tue, 14 Apr 2026 04:51:00 -0700 (PDT)
Received: from [192.168.1.6] (user-109-243-69-121.play-internet.pl.
 [109.243.69.121]) by smtp.gmail.com with ESMTPSA id
 ffacd0b85a97d-43d73e36e7csm20916876f8f.10.2026.04.14.04.50.58
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Tue, 14 Apr 2026 04:50:59 -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=20251104 header.d=gmail.com header.i="@gmail.com" header.h="Content-Transfer-Encoding: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=20251104; t=1776167460; x=1776772260; darn=lists.xenproject.org;
        h=content-transfer-encoding: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;
        bh=PHMm9J6eMxk5SMR7O1VKUQp9xNw6YbW8N0bTJ96bi9A=;
        b=CHhQwOA6yPBvHnFDiwf6h1C3NB95DzsnZBdvGdYi+aeUb9rZthmMzie7lsT39U/Ol0
         ecgQ+naVyMyL7SopFvdhjT8z5MXHyUDTzb3MmilpNX4bTEx9fPYJWCUTBphwPu/2+pqo
         hVSJRUceFdd9MUfWwMbTtFPaBGlnzkJuly/YdrBeOOz9/uF+N2wRdv0Slnfki9FO6K/e
         3l4s+YkfgUPIR4F3yZj9NRZ16G0pXuu5c85QJr4iYtYdK+nPMlmP28wdCY+JxmdNBgsK
         /JaCrpFol/K1AisXl1h4/J6u+MClkCRLM7CdMjUj8V4SiKgTS5PO2NCnwNmcJ2mEvw88
         /z/w==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20251104; t=1776167460; x=1776772260;
        h=content-transfer-encoding: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;
        bh=PHMm9J6eMxk5SMR7O1VKUQp9xNw6YbW8N0bTJ96bi9A=;
        b=nhN15zsy55SUlUZ2MeJt4GxYY+sFFHlMM+/LJgCQhkWUAiT5VOhgWpvSXmvX5PHf1a
         RpssJPOWPwzvLexQaXSBWqeEuXn6mka8aUOJfJrJjoMMTq1MkKfmWwJ7fL+SofulYZfE
         6EQ2qiz6J9vRoPtkzGaD5IEU8/F1roq0Y2yML9ZYfouLMUgNAo00REJlsLc8NNtdlJ04
         sGbdTp+bKfvASpmfGZRY+g+EjSu0VivuNarEyRNFy8OP9ifp+x+uU2XEtph6nJS7SDkC
         k3UG9rL60XcDzRtitYpmynK9TVzAmyacFt0lgV0TJkKEaVToNnA/B806Pzq8jHc0MGWs
         bdPA==
X-Forwarded-Encrypted: i=1; AFNElJ8EaxnhCsXGFYP0Fj776Z6L7+xsyzS0eTWsXPUdI8ieowlTNKBXrU1RIDpMm2KCWV1V6TA9wAsCMac=@lists.xenproject.org
X-Gm-Message-State: AOJu0YwKih4AcljcT/PGMn/BXews24By2nUAnWauga3Q0icIdtzfUW6o
	GnF+JFJAckm4kuA/zyl7naASyw8WyxwefErS9ww992yrhC/vdYvJ20ZY
X-Gm-Gg: AeBDietLkA7Tttat9QLa4Y3wYdzWG9VSHhWkrjjyfr1bw7WE6zKGbA5G/qFH3/jhcwO
	NVUg944LXQK7S9J7qKsKm6EOOJlrRGQg5NuOBeiMdTePAjs80sTMhUVKjj6TWTIkpM//g6iUVR9
	L04BEk5hOrTv/cQWQfaTbTgvathBqxXBgH8SLnPsKEwhgSktk8tElR42qIuQs0EODS35KTLbW07
	S9djEGNRQlkdJUuPTgokpgYLkVGYaHHZ0VpqJ5UCHU8ipW+p6VpZqwjlcqvJPRP7ir+eBW4OhPO
	So6RBqEJVNlpusvrU3higcMfTB/KDgLDWRW56k+OBjkgdfxAij/0O8xJb30NR+qvswF3qDmxKCE
	grulKQ6v1Rns8c5/nlba6vRS2/uo9RnvsyJ5KBL/A5EyEmU8YWirAIL2U/qtOz9jE+kGXVd0JI6
	1ja+R51cagaFUwC3vGrd40hIJalJEhD0qt0d3dj7K3B1HlzUjlW7z5xyVZcIngzWJkVmGk7a//X
	w8S0orE5SWJYQ==
X-Received: by 2002:a05:6000:2211:b0:43c:fd92:f432 with SMTP id ffacd0b85a97d-43d6425968amr26524599f8f.2.1776167459881;
        Tue, 14 Apr 2026 04:50:59 -0700 (PDT)
Message-ID: <e3f6e9f4-1ad1-449e-8a5e-a09579d89c6d@gmail.com>
Date: Tue, 14 Apr 2026 13:50:58 +0200
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH v1 24/27] xen/riscv: init rcu
To: Jan Beulich <jbeulich@suse.com>
Cc: Romain Caritey <Romain.Caritey@microchip.com>,
 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.pau@citrix.com>,
 Stefano Stabellini <sstabellini@kernel.org>, xen-devel@lists.xenproject.org
References: <cover.1773157782.git.oleksii.kurochko@gmail.com>
 <c55191b5c4ec8f42bc73bfb2d680945b439c6db6.1773157782.git.oleksii.kurochko@gmail.com>
 <81e37c32-56dd-43eb-97a0-ffe405e1ac19@suse.com>
Content-Language: en-US
From: Oleksii Kurochko <oleksii.kurochko@gmail.com>
In-Reply-To: <81e37c32-56dd-43eb-97a0-ffe405e1ac19@suse.com>
Content-Type: text/plain; charset=UTF-8; format=flowed
Content-Transfer-Encoding: 7bit
X-purgate-ID: tlsNG-16d1c6/1776167460-5FD3C3D8-9632AE81/10/73395122804
X-purgate-type: spam
X-purgate-size: 298



On 4/2/26 5:03 PM, Jan Beulich wrote:
> On 10.03.2026 18:08, Oleksii Kurochko wrote:
>> Signed-off-by: Oleksii Kurochko <oleksii.kurochko@gmail.com>
> 
> Fold patches 23-25 into a single one, with an adjusted title?

I am totally okay with that. I will do that.

Thasnks.

~ Oleksii


From xen-devel-bounces@lists.xenproject.org Tue Apr 14 11:56:18 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 14 Apr 2026 11:56:18 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1281690.1564553 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wCcNI-0003Wl-Hs; Tue, 14 Apr 2026 11:56:12 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1281690.1564553; Tue, 14 Apr 2026 11:56: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 1wCcNI-0003We-F6; Tue, 14 Apr 2026 11:56:12 +0000
Received: by outflank-mailman (input) for mailman id 1281690;
 Tue, 14 Apr 2026 11:56:11 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <roger.pau@citrix.com>) id 1wCcNH-0003WY-6h
 for xen-devel@lists.xenproject.org; Tue, 14 Apr 2026 11:56:11 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wCcNG-005k04-Jk
 for xen-devel@lists.xenproject.org; Tue, 14 Apr 2026 13:56:10 +0200
Received: from [10.42.69.8] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <roger.pau@citrix.com>)
 id 69de2b51-2eae-0a2a0a5409dd-0a2a4508d126-30
 for <xen-devel@lists.xenproject.org>; Tue, 14 Apr 2026 13:56:10 +0200
Received: from [40.93.195.41]
 (helo=SN4PR2101CU001.outbound.protection.outlook.com)
 by tlsNG-c1860d.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.0)
 (envelope-from <roger.pau@citrix.com>)
 id 69de2b58-fab6-0a2a45080019-285dc3291459-3
 for <xen-devel@lists.xenproject.org>; Tue, 14 Apr 2026 13:56:10 +0200
Received: from CH7PR03MB7860.namprd03.prod.outlook.com (2603:10b6:610:24e::14)
 by SJ0PR03MB6549.namprd03.prod.outlook.com (2603:10b6:a03:386::19)
 with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9769.48; Tue, 14 Apr
 2026 11:56:06 +0000
Received: from CH7PR03MB7860.namprd03.prod.outlook.com
 ([fe80::f5ba:35df:1c9f:b343]) by CH7PR03MB7860.namprd03.prod.outlook.com
 ([fe80::f5ba:35df:1c9f:b343%4]) with mapi id 15.20.9818.017; Tue, 14 Apr 2026
 11:56: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=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=P0ScF8jZpRm1oL6n2F/p8MkC3vfzqQxKe8/VrCEaX2tj4NVHuDU7D8SsqKAn1CQoHgqHYml1vII3wJjbPsXDhjNKaH47PJ4ku4otMCXzgfMnKA8Bvqmvqw3SMKnormhrhdy3UJajXZQeHGxqg+G1e6iqHhZlISkjp5o8nNGx6E35/eguC9/i43RmldoFk6VgwikWlmEv2l6mUM7UrLdFGwyG3GlufsimjFaZJrHLVuLXteIFmhn9RSTPfjxogzuKJgywUpI0RxVJdjmC5Q9ig8tsQ0L/i+genbIe8ny1ype5jX9fL9MxX/MauENBeqHXoMKV7fy6GZJefmexc19p3A==
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com;
 s=arcselector10001;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1;
 bh=2M94bJv33gHFeqrysa14xF6+TDgzNfyA8CIlc/roGXA=;
 b=uZsAJ/NU1DQp/xjJYTfvjN/vULR9DmGkiXkUSfKrCtIqtTMqkJe2RJ5Kb48Cy8RIWKb6tp+DDrUULw8AEqHIE7XPEZHTaK48iZZSA6RMf2jdIw75/9g6MsC8OzfbbAjbLzOP2mCQEPSK3hNpPLZzv6uE/+OB+n3irfHDfpMvTrfSOLeFT/NIDeuUuP/rzO1peiMUXTJNe8U2PdG6Z/v2pMQ9h2qLFgECIAEbWZm+hjWVo0uiqxTieq2oY0fNXZJNyGxWPk0W5mO/Mqco1rjecKpWp2/pkzM/p75D7GXEFSan+Gm/rCZyBct0aY35kvtwPH2I+kizN7vaQ1cEj2yG4A==
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=2M94bJv33gHFeqrysa14xF6+TDgzNfyA8CIlc/roGXA=;
 b=t3Cvkad7oGxTjONqVlfotYOhl/gq7d+ZVwFFmxiD4TLLBvWAUZOhX6zGdiD1dhYft6Ju7B9p2UwCCfbHnFT+ST5aowfuLgA6dPCPlYNxbIZIvcnszrM4Al52dOGi5VAA1/DImjqgRS6iaybkYPyTpqsRm+bmL5GH7FjEtEDajyM=
Authentication-Results: dkim=none (message not signed)
 header.d=none;dmarc=none action=none header.from=citrix.com;
Date: Tue, 14 Apr 2026 13:56:02 +0200
From: Roger Pau =?utf-8?B?TW9ubsOp?= <roger.pau@citrix.com>
To: Tu Dinh <ngoc-tu.dinh@vates.tech>
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>,
	Alistair Francis <alistair.francis@wdc.com>,
	Connor Davis <connojdavis@gmail.com>,
	Oleksii Kurochko <oleksii.kurochko@gmail.com>,
	Jan Beulich <jbeulich@suse.com>,
	Andrew Cooper <andrew.cooper3@citrix.com>,
	Teddy Astie <teddy.astie@vates.tech>
Subject: Re: [PATCH 2/2] xen/cpu: round up cpu_khz calculations
Message-ID: <ad4rUspwCosSxfs4@macbook.local>
References: <20260414103327.7420-1-roger.pau@citrix.com>
 <20260414103327.7420-3-roger.pau@citrix.com>
 <d647f18c-c91b-4507-ac1a-149e50d14062@vates.tech>
Content-Type: text/plain; charset=utf-8
Content-Disposition: inline
Content-Transfer-Encoding: 8bit
In-Reply-To: <d647f18c-c91b-4507-ac1a-149e50d14062@vates.tech>
X-ClientProxiedBy: BN9P223CA0018.NAMP223.PROD.OUTLOOK.COM
 (2603:10b6:408:10b::23) To CH7PR03MB7860.namprd03.prod.outlook.com
 (2603:10b6:610:24e::14)
MIME-Version: 1.0
X-MS-PublicTrafficType: Email
X-MS-TrafficTypeDiagnostic: CH7PR03MB7860:EE_|SJ0PR03MB6549:EE_
X-MS-Office365-Filtering-Correlation-Id: ba114bf7-befa-4a1e-f06a-08de9a1ccf23
X-MS-Exchange-SenderADCheck: 1
X-MS-Exchange-AntiSpam-Relay: 0
X-Microsoft-Antispam:
	BCL:0;ARA:13230040|366016|376014|7416014|1800799024|22082099003|56012099003|18002099003;
X-Microsoft-Antispam-Message-Info:
	Hnqwy7/l3rrlRO5Vni/zqbNy9mUV7a3eu1hfJBxeY3pyTV0SaJYLPDvg1gmyCzGeuKT1LO/KafXA+bNvvPFG5hh8ao94g7Be66RIpXKcNvq2AYxrmFeWp7UpOEUUjzUbeY3j80prFRMf/ToCazubh8iek9Mv4TFlXhTPd1BZ8m7iYnWJrkX5CtTwK3oebNW2aolL7QVZAHsNb1kf0Hi+bvrlnR4LHFH805KTdQz7zzhIF/fygxuB0kE3fbG1zKMOmVeHpELiYm6D9wF9hD7JYDnbHTBV6tOjj1SF3O0iTz2Gt5oK9xW0ggkmkT4DBz9Mh8gCVRp+gBSJT0QheUDBt+LuMdHZrkFh1jD0LSzwRBis0y7N6vJ+SHDDZLFtYkm5JZOmH6OAnOBh/gbGRM/OwlOlhRv+D5yvCTuIrmdLuj1rAI4VrT20T6HG5+EmWEdoLoQaylsOawXC4cVVqXQ42kOjFouEctA6AgCdN8ONycQtq3fY8l7yYV3+oW06lpKIbwGR2I6kSUuDY+BkOwGXkCcZqP0rTCJyNjARrJytnIqwd7LuAUnIhOLlMtrvUPChc/UYcIqbBQQIuU3CJOg79cN8fG3131r15pmiEaR01qqebM3LfW5r80CS3I+pd9Z6brnKbUoQTHr15OCz0Ils+7CqzfEzUE+KqGPauTbCkzXp4VOU0Ls9bYJEq77wC4DpFEuDfyCrOeX6Y7zAnwscz5/CUu0jy7b8nazHpJ6ND88=
X-Forefront-Antispam-Report:
	CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:CH7PR03MB7860.namprd03.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(366016)(376014)(7416014)(1800799024)(22082099003)(56012099003)(18002099003);DIR:OUT;SFP:1101;
X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1
X-MS-Exchange-AntiSpam-MessageData-0:
	=?utf-8?B?ZjBKam1zZHpqTnFFcUFFNTB3WFhxcGdKUzNETnVGRjA5RWh6THZNM0Z3R25J?=
 =?utf-8?B?bjZORWRkdndzWHROQWJPNzBkMDErakl6TFU2Uld2WXNHMDdNVE5uTlZUZGk4?=
 =?utf-8?B?YTdqb3J5bVJDRjd0Y3ZldXI4UThkMCswQXFQcElkcy9yd2lGZWsrNUV0VEZp?=
 =?utf-8?B?SktQWjJDanFDQ01MR2lYZ05IeFlIZ011azl1STJmaDZIMjRLUVcxWWFuSW5I?=
 =?utf-8?B?LzU0SE5Sd3J0czAzSnRSMGV1bVFtV2hrcGVWMGdFbDFGeVR4eUViaElwV28r?=
 =?utf-8?B?eldQSTgrMGEwd2xLcUlmNGVlTGZCbHlGWFdDMFNlTlE2Z2kyQUE5czZXaWFs?=
 =?utf-8?B?WmhBTFBOdDVvQzZDYWZZdG5IZWdINnpnQ0dpcUxxOFFHaDJKbnp4cytreS9y?=
 =?utf-8?B?d0hQZnQ3Z3dVdWtONTJOMjdXTEtYZmhuOS9YYldCdUUwRjd6S0hUM0Z5MHN5?=
 =?utf-8?B?T1RrNDQ1WFVqbFNUalVRcWF4ZWdkQmx4SWM5dFJtRVVCRTdxMVNjcmdiZG1Y?=
 =?utf-8?B?ZitkcTg5YXROWktvbDdZTVN5Zms0NmkyaXBBK1NkeVJ6VmtTb0FOZExyL29m?=
 =?utf-8?B?c0lRRWg5d2RxT2pzdU56azQ2RENjQVZNa01mdFRQL1k1OFRaQlQ2ZXJpUXZL?=
 =?utf-8?B?SjB5Mk1WZXkyVFJjd3RVOGNDRGNmOGNJTE5kVS9rdExCVVBWcnVUckZDdXZo?=
 =?utf-8?B?YXZETUJvWklIUEZVWm5RUnZyOCswcU4yYUZJVGx1L0hQQ3FkQ3E2b1JpcGNH?=
 =?utf-8?B?OGtja3pvMEN5ejZBT0JmSU53cGxpcmF0RmZpRWl1VGQ1WmQrWG9rNk53NHdG?=
 =?utf-8?B?VFc3R3FSR3VJa3IvYi9BeE1IQ1I3YkxUckhnK1NCOFc2UnhUQS9RNzhwUU1K?=
 =?utf-8?B?djhXYlQzSkl4WnMzWWtLQ0lhREw1MEtReFM3K3B1MENsTDdWOUtWYkNrYUFU?=
 =?utf-8?B?b1hoSlJtM0Fsbk4ybHNFZUpEZ1hLNTJGUnBsdjdLL3ZOejNQNU1OaFY4OHp2?=
 =?utf-8?B?Mi9VOFAvQmR5VTg0QUJSYmsvdkZ2SWpNSjJKcmd4Q24vUDJyR3V0ZXRGc2R4?=
 =?utf-8?B?TXlYaW8reHlSM3A1OWRvQlZkVGo0T29EZlZzL2xTbTVnU0JXVTNHM20zdUx4?=
 =?utf-8?B?dDlmaml4a2h3Sm0wcG9JQ0J2Skw1eTEzTnN1RWF5b3REWXZMbWRpSXRtVm1s?=
 =?utf-8?B?Q05lTFdhT3VzVjVNaGVwVlBhL0lNMUxBdFJMZHM2Wmpydm1YeTkwaVNlOFpv?=
 =?utf-8?B?cHYrU0xJbzM2TlBwNVlNTE84dzZaei81YjJhTFBmSHpUekRuanN4T1AvN1R4?=
 =?utf-8?B?L0c2eGFPUFdhUS9RTVdjWThBTW56Q002dUlnK0RpNE80VTVGWGFEelkzZnlG?=
 =?utf-8?B?RmgyZ29WM213UTlsdkpFbHBLUUlSV0d0WE9ZYWtaZ3VRRENsSkFaV1c1ZkJy?=
 =?utf-8?B?VWx6Y2QvOHlRVEY1dXl4dy9JOWVzSjVJRDZsN3ZhcE5MUlRSMWlBRHZBLzFZ?=
 =?utf-8?B?emVZM1psWkFqdzRhVlNjeVAyNHMyTllEVGV4bmtxZlZqM1FlQ1BDVXZNbnJG?=
 =?utf-8?B?a3VZOTVqU0NUT1QzS01mT3pxRzVWUUpBSGtHV3JheE1IMXBuOUJJN0dUVGdX?=
 =?utf-8?B?QzhRWVloYWhxcDZHTkZ2ZzVYeUhTcnVkRUFFQW54ZlFYMkR1ZC9GVmV1eHEx?=
 =?utf-8?B?S2VaSXFpTXdkQ0hvSWF3RjVGRTNYcXBDT0pjSG5mT2UrVmdWUC9sc0RYTGZV?=
 =?utf-8?B?b01JNUdCZFJlcEltSkwvdlpISEtvZTZpcTBaRmNvN3NRamVKUDF1RVlTdWhn?=
 =?utf-8?B?OUJjNDBWZ3h4NE9nNmtNMmRoTFFueGdaUnF3bWw2SG5VRjVSRUNZck1JRURI?=
 =?utf-8?B?OWgxNEp2UFZSbTRoWjZic2NOb2h0OEkxSVhiaVJNa0k0NjdWcVJNMEM3Tnd1?=
 =?utf-8?B?U2kvZzdtN0g4YWo1STFheHpaQWpkR0VFSVY1ZTM1d213QStoMUtlWEQ2RDlI?=
 =?utf-8?B?MUhLVzEvYUhOM1d2U1M4QVE2ZTdDUWtKZjNtd09uVkY1L0k1WVpTYjc5blNB?=
 =?utf-8?B?SCs2VUNGZGlRaTVaYkF2cUplNzZGUUVLUjN2REZDM2RLWGpFcVJ3ZGk4a0Yx?=
 =?utf-8?B?dVNYUytuUmhkZno4UUVSZllzaVU3ZUFMTDA5SE9rdmtaL0QrSjk3cGVXYnEw?=
 =?utf-8?B?NnpDeVpkVUhJa0dsY2xIWDVrd1UwRmpFL0pxSjEvNDljRzdiWkRGYUh4bko2?=
 =?utf-8?B?Zkw3L2NSZnZ1R21tMFVRSWI2dkxMdzVGbXVPRVdxREwyZ1l2eFRBbldvMmF4?=
 =?utf-8?B?M2krN2hKZERPUmdWM2hKQUlYRU5VZlFacjZjNUZzNUNxWW4vZ2tEdz09?=
X-OriginatorOrg: citrix.com
X-MS-Exchange-CrossTenant-Network-Message-Id: ba114bf7-befa-4a1e-f06a-08de9a1ccf23
X-MS-Exchange-CrossTenant-AuthSource: CH7PR03MB7860.namprd03.prod.outlook.com
X-MS-Exchange-CrossTenant-AuthAs: Internal
X-MS-Exchange-CrossTenant-OriginalArrivalTime: 14 Apr 2026 11:56:05.9353
 (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: lX7Jjn1PJr/vjNlhroL8XtXYJuFlmLgLmhSiY3SrfH0IzkeFI3CFak0CPkNgy+ifGyLnlq6qyT/K6/j4RH0sPg==
X-MS-Exchange-Transport-CrossTenantHeadersStamped: SJ0PR03MB6549
X-purgate-ID: tlsNG-c1860d/1776167770-F6D4B497-D0F6A6E6/0/0
X-purgate-type: clean
X-purgate-size: 495

On Tue, Apr 14, 2026 at 11:36:22AM +0000, Tu Dinh wrote:
> On 14/04/2026 12:36, Roger Pau Monne wrote:
> > All arches truncate the cpu_khz without taking into account the less
> > significant digits.  Instead use DIV_ROUND_UP() when scaling from Hz to kHz
> > to get as more accurate kHz value.
> > 
> > Signed-off-by: Roger Pau Monné <roger.pau@citrix.com>
> 
> Couldn't DIV_ROUND be used here instead for a round-to-closest?

My bad, I got confused with the macro names.

Roger.


From xen-devel-bounces@lists.xenproject.org Tue Apr 14 12:04:58 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 14 Apr 2026 12:04:58 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1281701.1564564 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wCcVh-0005Pl-EP; Tue, 14 Apr 2026 12:04:53 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1281701.1564564; Tue, 14 Apr 2026 12:04: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 1wCcVh-0005Pe-Ag; Tue, 14 Apr 2026 12:04:53 +0000
Received: by outflank-mailman (input) for mailman id 1281701;
 Tue, 14 Apr 2026 12:04:51 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <nicola.vetrini@bugseng.com>) id 1wCcVf-0005PY-Pp
 for xen-devel@lists.xenproject.org; Tue, 14 Apr 2026 12:04:51 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wCcVf-009KLV-6t
 for xen-devel@lists.xenproject.org; Tue, 14 Apr 2026 14:04:51 +0200
Received: from [10.42.69.4] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <nicola.vetrini@bugseng.com>)
 id 69de2d5c-2eae-0a2a0a5409dd-0a2a4504c700-36
 for <xen-devel@lists.xenproject.org>; Tue, 14 Apr 2026 14:04:51 +0200
Received: from [162.55.131.47] (helo=support.bugseng.com)
 by tlsNG-ebf023.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.0)
 (envelope-from <nicola.vetrini@bugseng.com>)
 id 69de2d62-bb33-0a2a45040019-a237832fa4e2-3
 for <xen-devel@lists.xenproject.org>; Tue, 14 Apr 2026 14:04:51 +0200
Received: from support.bugseng.com (support.bugseng.com [162.55.131.47])
 (Authenticated sender: nicola)
 by support.bugseng.com (Postfix) with ESMTPA id D11C34EE8D50;
 Tue, 14 Apr 2026 14:04:50 +0200 (CEST)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-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
Authentication-Results: bugseng.com; arc=none smtp.remote-ip=162.55.131.47
ARC-Seal: i=1; d=bugseng.com; s=openarc; a=rsa-sha256; cv=none; t=1776168290;
	b=znbrPan31mdDDHdVtmu6dWk8WqZ1Q4SrB14En764rUvEbfjGN9nQR4hjZPCJtW7aS4Lp
	 eOdge/ytg2jeta356aJOgtQyUhiV9v/Wmgn8V+941EitL73XAQdXUKIanKMmAjlJXTNdd
	 qJPh7raabU55f3pqSF8h7H7oJHem4lR1hBGA217r9cFxYZM4JNgMEdcuHPp/TKj/rtV6A
	 VlVWmHrwt9KAPjwwjXMAa7vhZ+dOP5JXPfdNitjuptDHl0hAYFA0j+SMhUMEYDF7EE4Px
	 xz+TR9q3VTbyFF1uVrGzfoJaJrOlX0mA+lb0/qqSFP771BiYPNutTw5elPwpbZLBoHpvs
	 DL5qQhNa9GUy8WUIqM2iLK5lbS7XyEngFyQJIZjRISZc4N1S19TpJbGWYRMBUAT2ZRqUx
	 B1CzEN9Qq+iKVloRPKxL2vSZ/Ih4DJuplf9OIVorTuTuw+GW2ihwp+dz8cTSSEBeB5KSs
	 kWgRYXWMUZz4UVkAVunowzJZ/1JoroNJ9asFeeZztLoJ4ACpsCt2HfzbUFQJVzO7MvpLR
	 +mBFpWAyNsY7vEiZxyhox86dYBkdl/sCEgjpbqDsoF/kUS9b5I6HDHi32kD9t665e532B
	 SRBSRlc9bZ6woWKDonN2ZpNjCaSpoFVlr8Tq/6zNG1VmsPbYf4KBzzVg1nbFpWc=
ARC-Message-Signature: i=1; d=bugseng.com; s=openarc; a=rsa-sha256;
	c=relaxed/relaxed; t=1776168290;
	h=MIME-Version:Date:From:To:Cc:Subject:In-Reply-To:References:
	 Message-ID:X-Sender:Organization:Content-Type:
	 Content-Transfer-Encoding;
	bh=JU4pvPTIQQJuO3ucPW6MqZkZAJcCu5Tx5uiE1Cgg+EM=;
	b=RmusjHEqebKyWtX0QgrExWGoW2TgaKeU8jWwU9cnyblA4eIF62/ZrAuon0KJfz643s5A
	 JbGNLirFnbMU55jXuYRta1H9108noFriKNuR5pe8uMpOWlEXXBpd48jnpPwf6Zksij8N8
	 hlV57s6RGqOwKxRDitbYmVt0h4f+njzCUP+S8N8oCH6FaSFrC5/QqOaQnT3jgkHizikiK
	 X8kTpEljpsxQSWdx5fG7tsnuGfCCd0Skmtx/mnjoi+RrVd68wZwAvt8ROth95lvTTQqwX
	 RiP/mXXYJg4hk9FA8rirQgwy47eLM5hsZLWRwbn/nGYQ/Gyj9vctZ0T9hPS2u1/VkJKYk
	 by9u/EjBJvPMXNgl5JJYcNeo1ELRpBavXB7X7bLGWBdgCripRRQ6teO/WpdUczCz+WmN9
	 sGk0VpnN5ROzJnbh6hhJi+Pa/xbxpyz+5KQqlI+fEJMhUg1dfYhRn54J86a+wx0ZrQWuX
	 2/XsgaKowePkaXmkohc+0DYNQ7oszUVsFVeBpyiAUDihpYzipfdwTo+1HT4DI4YIiEsy5
	 0SEH/fqQ4A7oX1XBRztkdc0k0SRj1r0ZRYF8XPWEBRf2NG/t2yIoxFiBkVHxenUabMkXp
	 Qx2X2vWyF5Um3ja7YNgZlHe+vLP/7Rpz8Bcmq8SNZC1gwLvsV185nMJ351xD850=
ARC-Authentication-Results: i=1; bugseng.com; arc=none smtp.remote-ip=162.55.131.47
MIME-Version: 1.0
Date: Tue, 14 Apr 2026 14:04:50 +0200
From: Nicola Vetrini <nicola.vetrini@bugseng.com>
To: Michal Orzel <michal.orzel@amd.com>
Cc: xen-devel@lists.xenproject.org, Doug Goldstein <cardoe@cardoe.com>,
 Stefano Stabellini <sstabellini@kernel.org>, Andrew Cooper
 <andrew.cooper3@citrix.com>
Subject: Re: [PATCH] automation: Extend eclair-ARM64-allcode and mark as
 gating
In-Reply-To: <20260414111656.72939-1-michal.orzel@amd.com>
References: <20260414111656.72939-1-michal.orzel@amd.com>
Message-ID: <68b7bb7e95e6ae92b976c98af1a7cab9@bugseng.com>
X-Sender: nicola.vetrini@bugseng.com
Organization: BUGSENG s.r.l.
Content-Type: text/plain; charset=US-ASCII;
 format=flowed
Content-Transfer-Encoding: 7bit
X-purgate-ID: tlsNG-ebf023/1776168291-31F2651B-B3ED53E4/0/0
X-purgate-type: clean
X-purgate-size: 1352

On 2026-04-14 13:16, Michal Orzel wrote:
> Extend the job by enabling static memory, static shared memory and 
> early
> printk features. Given no more regressions for clean rules, mark as
> gating.
> 
> Signed-off-by: Michal Orzel <michal.orzel@amd.com>
> ---
> https://gitlab.com/xen-project/people/morzel/xen/-/pipelines/2451527401

NIT: pipeline does not seem to be public. Other than that:

Reviewed-by: Nicola Vetrini <nicola.vetrini@bugseng.com>

> ---
>  automation/gitlab-ci/analyze.yaml | 6 +++++-
>  1 file changed, 5 insertions(+), 1 deletion(-)
> 
> diff --git a/automation/gitlab-ci/analyze.yaml 
> b/automation/gitlab-ci/analyze.yaml
> index 4e9af9d60224..b3f99f472d9e 100644
> --- a/automation/gitlab-ci/analyze.yaml
> +++ b/automation/gitlab-ci/analyze.yaml
> @@ -149,7 +149,11 @@ eclair-ARM64-allcode:
>        CONFIG_STACK_PROTECTOR=y
>        CONFIG_UNSUPPORTED=y
>        CONFIG_VM_EVENT=y
> -  allow_failure: true
> +      CONFIG_STATIC_MEMORY=y
> +      CONFIG_STATIC_SHM=y
> +      CONFIG_EARLY_UART_CHOICE_PL011=y
> +      CONFIG_EARLY_UART_BASE_ADDRESS=0x0
> +  allow_failure: false
> 
>  eclair-ARM64-testing:
>    extends: eclair-ARM64-allcode

-- 
Nicola Vetrini, B.Sc.
Software Engineer
BUGSENG (https://bugseng.com)
LinkedIn: https://www.linkedin.com/in/nicola-vetrini-a42471253


From xen-devel-bounces@lists.xenproject.org Tue Apr 14 12:32:37 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 14 Apr 2026 12:32:37 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1281721.1564604 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wCcwG-0001bF-Vs; Tue, 14 Apr 2026 12:32:20 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1281721.1564604; Tue, 14 Apr 2026 12:32: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 1wCcwG-0001b7-SD; Tue, 14 Apr 2026 12:32:20 +0000
Received: by outflank-mailman (input) for mailman id 1281721;
 Tue, 14 Apr 2026 12:32:20 +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 1wCcwG-0001b1-8V
 for xen-devel@lists.xenproject.org; Tue, 14 Apr 2026 12:32:20 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wCcwF-006n5w-Cm
 for xen-devel@lists.xenproject.org; Tue, 14 Apr 2026 14:32:19 +0200
Received: from [10.42.69.2] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <Michal.Orzel@amd.com>)
 id 69de33d0-2eae-0a2a0a5409dd-0a2a4502d9ec-18
 for <xen-devel@lists.xenproject.org>; Tue, 14 Apr 2026 14:32:18 +0200
Received: from [52.101.56.65]
 (helo=BN1PR04CU002.outbound.protection.outlook.com)
 by tlsNG-720697.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.0)
 (envelope-from <Michal.Orzel@amd.com>)
 id 69de33d0-42fa-0a2a45020019-346538412ef3-4
 for <xen-devel@lists.xenproject.org>; Tue, 14 Apr 2026 14:32:18 +0200
Received: from IA1P220CA0022.NAMP220.PROD.OUTLOOK.COM (2603:10b6:208:464::11)
 by DS4PR12MB9771.namprd12.prod.outlook.com (2603:10b6:8:29b::10) with
 Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9769.48; Tue, 14 Apr
 2026 12:32:14 +0000
Received: from BN2PEPF000044A5.namprd04.prod.outlook.com
 (2603:10b6:208:464:cafe::18) by IA1P220CA0022.outlook.office365.com
 (2603:10b6:208:464::11) with Microsoft SMTP Server (version=TLS1_3,
 cipher=TLS_AES_256_GCM_SHA384) id 15.20.9769.49 via Frontend Transport; Tue,
 14 Apr 2026 12:32:14 +0000
Received: from satlexmb08.amd.com (165.204.84.17) by
 BN2PEPF000044A5.mail.protection.outlook.com (10.167.243.104) with Microsoft
 SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id
 15.20.9769.17 via Frontend Transport; Tue, 14 Apr 2026 12:32:13 +0000
Received: from SATLEXMB03.amd.com (10.181.40.144) by satlexmb08.amd.com
 (10.181.42.217) with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.2.2562.17; Tue, 14 Apr
 2026 07:32:13 -0500
Received: from satlexmb07.amd.com (10.181.42.216) by SATLEXMB03.amd.com
 (10.181.40.144) with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2507.39; Tue, 14 Apr
 2026 07:32:13 -0500
Received: from [10.252.147.171] (10.180.168.240) by satlexmb07.amd.com
 (10.181.42.216) with Microsoft SMTP Server id 15.2.2562.17 via Frontend
 Transport; Tue, 14 Apr 2026 07:32:12 -0500
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@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=moa+UiFDVn87tKqQELVrX0WfDG8Dq/8yDd8FCydnfu9bLqv91+cDaStld/lRoKkoBw4hfnTb4KNkx0+4D7xAJk5c+3JrG5GHXj7D5ZLWi5i0W6z5NiOj2C6clVhcTwVb7YOhDCpLJ6EPNTp71wBYYOr5q2fnVd07PliCsLPIRxf4F0VVX50VgiAM1fvSXxiO0foLG+4EBVvJXb7M3RDNozoN7PdHuFS1tFR80Vya7ilvLPoGp6h5bJu9bpwDpeyTN2tZ98DRnxpmFkKZC2V2nmjM6BQJETq49JjZxvizftJ007IHpzW8be3aDRJIMF5AUJsCPT8M1Iu+OURTbUej8Q==
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com;
 s=arcselector10001;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1;
 bh=67heYYZyfuwfpEymd1WEfnbfit7+2H/jJm22KDeSEto=;
 b=A5HRlrXraoVv7r0JwDhbm0IUJaCEEaXLganpP3IgQIQqdO8s0ELagsZ2BtdRYzuR/Eks37583Vy3XUqjqENUFyQH8/sSpYYmKivP7wRA2MpwajKd0JSt/NC/wiFIAaDo2+UNXw0TVi8II4n0vaWzo8fPtpcQ8n+PFjVB4yqw/cw+swu+HOHR78B1CUC4AF489mejeu3qLfXaDX3XaV0FnkPt2V7udkCCHcWLVWA5bC6jIhQub2G9HU/IUiBqo1s7FwwXRNzURu1Ho1mknTYeIyg29IpTVuS+qzP3z4eP8GALdDxN8NofgoZqYZZuylxAsDb6huv4Fnncz6IwMPXTDg==
ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass (sender ip is
 165.204.84.17) smtp.rcpttodomain=bugseng.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=67heYYZyfuwfpEymd1WEfnbfit7+2H/jJm22KDeSEto=;
 b=zTM8KP4H3e9VH/m+ldu/GbN6hnGOj882MaYhEAzOmiw6y08JRhoRUN9BMIcwrPhUDTUv248pSLcb1zculybEo/n15/JzU0wtzMGqiadnpQGbwcxYEP8ArjIXClW4K7+h5L6r3f0x6t2StnJxvXeG10eQ3UpLbzTFvRPtvlEC3lM=
X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 165.204.84.17)
 smtp.mailfrom=amd.com; dkim=none (message not signed)
 header.d=none;dmarc=pass action=none header.from=amd.com;
Received-SPF: Pass (protection.outlook.com: domain of amd.com designates
 165.204.84.17 as permitted sender) receiver=protection.outlook.com;
 client-ip=165.204.84.17; helo=satlexmb08.amd.com; pr=C
Message-ID: <04a5356f-17ba-4aa0-95c1-045d8efffdb3@amd.com>
Date: Tue, 14 Apr 2026 14:32:11 +0200
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH] automation: Extend eclair-ARM64-allcode and mark as
 gating
To: Nicola Vetrini <nicola.vetrini@bugseng.com>
CC: <xen-devel@lists.xenproject.org>, Doug Goldstein <cardoe@cardoe.com>,
	Stefano Stabellini <sstabellini@kernel.org>, Andrew Cooper
	<andrew.cooper3@citrix.com>
References: <20260414111656.72939-1-michal.orzel@amd.com>
 <68b7bb7e95e6ae92b976c98af1a7cab9@bugseng.com>
From: "Orzel, Michal" <michal.orzel@amd.com>
Content-Language: en-US
In-Reply-To: <68b7bb7e95e6ae92b976c98af1a7cab9@bugseng.com>
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: 7bit
Received-SPF: None (SATLEXMB03.amd.com: michal.orzel@amd.com does not
 designate permitted sender hosts)
X-EOPAttributedMessage: 0
X-MS-PublicTrafficType: Email
X-MS-TrafficTypeDiagnostic: BN2PEPF000044A5:EE_|DS4PR12MB9771:EE_
X-MS-Office365-Filtering-Correlation-Id: f0613454-3692-4d40-f133-08de9a21db75
X-MS-Exchange-SenderADCheck: 1
X-MS-Exchange-AntiSpam-Relay: 0
X-Microsoft-Antispam:
	BCL:0;ARA:13230040|36860700016|376014|82310400026|1800799024|22082099003|18002099003|56012099003;
X-Microsoft-Antispam-Message-Info:
	ZnhYj+fo+v/uUsAezx6Pc037KnRc0uzIWRyQG173XIN9uBKXl8FMXOeISaHa+p9KOIrGNp4EEdZeutU4an3b1d/cjQBc5kSW+V9y8J6jkySxyrzlZzhssXA43Cq2+4nPk7PIrB4looPA79GpejqRseBE4CxGdr0nKGT52oSGjWIOdyK9U+mz5OobI2PV8LU9Q8QSiDet3Ik5G1SrSClndrT3Nt5///ZBZF0FsM9cf87Jo/QuSQahJEwzl2Qs4Cr2LxSvsC3LSpN9ZjDzVTU8XFFsoxST3TRh9ShgPsD2u+YAwFmgmypuvFcBaxZyDSj3b/q6aToNZ4f8+0gz6tVpI06SfhBHac9BbQhdSypE5KMrbtV4U9OQFyECKGD+Tey17HGPCKGq0zkEcvsuV3yTT2dd6Cxa7Z5lP7ohKiDiZmGGd7rv1EEuPfZpAQlJG/6dHBShNqLyFtDimeBMLeliQi8XNVak1p3tKqA5Kqi38q181zTeud5FTKTVFsyiAbCAj0Oo7FYZJqK/qQiIouO5awwyG9S0MpkWnqa+V11A2VZWgf4rz/jDQ8m2PgOFBSXvqJe5mk+MUpl76TyMd9xGlrGYTxUeuQ9Mi67Yno7XORbr+IkKIYccJP9DCY6EEdFiZpdJKe/zfJTY0VkeCiCgd98R+WjsmKSMF935Vw7ZuE1M1yWA3XYg21WVn5oZa6RRyQxeUC8zI64owrhNhrP1zpFOKBgIo1unm8OIPhVnNkE=
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)(376014)(82310400026)(1800799024)(22082099003)(18002099003)(56012099003);DIR:OUT;SFP:1101;
X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1
X-MS-Exchange-AntiSpam-MessageData-0:
	0EPhpcqlV5Ohk3osjLvOlTf6o0WEWAFECRV8GNvlrRQzPiyD585IZLkPTI+eY1H5n4DLhOdpHyshCnSGZjFWCYeKPApmoV6Dmw3UZilIShmQbas9SccGnOOZ+uPgmx6f3rOdR16qlwZfnPFWBlsmzHVlNylQSxAdHS/V7PP1vyzqje+7N90MITJIOO+Goj6bq5W+KDh2t19oIrLusv9Lkfm/2+gxb3uRTdRuQYORzQ6/IrXUECpwWmkj5MZxe+GLnNdCAZPD5UmkaVP0BC4azz1ytQHq7VkC882HtzT4vdZuS/ddkO7wv2kGY8qpMdieSciFfS8k6mhFsYg11ccf5WBLktjwrT4aYurysGA/vYXLRdQk8fW8+m8pDAAQD3XUn1E4lrZufZzLWad7drGWIAm4C7YxbEH4C53jAPBnP45UcmnvpVPwu98Xr/+ffgKQ
X-OriginatorOrg: amd.com
X-MS-Exchange-CrossTenant-OriginalArrivalTime: 14 Apr 2026 12:32:13.9293
 (UTC)
X-MS-Exchange-CrossTenant-Network-Message-Id: f0613454-3692-4d40-f133-08de9a21db75
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:
	BN2PEPF000044A5.namprd04.prod.outlook.com
X-MS-Exchange-CrossTenant-AuthAs: Anonymous
X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem
X-MS-Exchange-Transport-CrossTenantHeadersStamped: DS4PR12MB9771
X-purgate-ID: tlsNG-720697/1776169938-447CBCD1-74EEC9B1/0/0
X-purgate-type: clean
X-purgate-size: 629



On 14/04/2026 14:04, Nicola Vetrini wrote:
> On 2026-04-14 13:16, Michal Orzel wrote:
>> Extend the job by enabling static memory, static shared memory and 
>> early
>> printk features. Given no more regressions for clean rules, mark as
>> gating.
>>
>> Signed-off-by: Michal Orzel <michal.orzel@amd.com>
>> ---
>> https://gitlab.com/xen-project/people/morzel/xen/-/pipelines/2451527401
> 
> NIT: pipeline does not seem to be public. Other than that:
Ah yes, my fork is private, so only owners (i.e. committers) can see it.

> 
> Reviewed-by: Nicola Vetrini <nicola.vetrini@bugseng.com>
Thanks.

~Michal



From xen-devel-bounces@lists.xenproject.org Tue Apr 14 12:37:40 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 14 Apr 2026 12:37:40 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1281730.1564613 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wCd1M-0002Ah-Hq; Tue, 14 Apr 2026 12:37:36 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1281730.1564613; Tue, 14 Apr 2026 12: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 1wCd1M-0002Aa-Et; Tue, 14 Apr 2026 12:37:36 +0000
Received: by outflank-mailman (input) for mailman id 1281730;
 Tue, 14 Apr 2026 12:37:35 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <ruslichenko.r@gmail.com>) id 1wCd1L-0002AK-18
 for xen-devel@lists.xenproject.org; Tue, 14 Apr 2026 12:37:35 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wCd1J-005sby-RL
 for xen-devel@lists.xenproject.org; Tue, 14 Apr 2026 14:37:33 +0200
Received: from [10.42.69.3] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <ruslichenko.r@gmail.com>)
 id 69de34f6-5cb7-0a2a0a5109dd-0a2a450386b0-42
 for <xen-devel@lists.xenproject.org>; Tue, 14 Apr 2026 14:37:33 +0200
Received: from [209.85.167.182] (helo=mail-oi1-f182.google.com)
 by tlsNG-33051d.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.0)
 (envelope-from <ruslichenko.r@gmail.com>)
 id 69de350c-02b3-0a2a45030019-d155a7b6b99b-3
 for <xen-devel@lists.xenproject.org>; Tue, 14 Apr 2026 14:37:33 +0200
Received: by mail-oi1-f182.google.com with SMTP id
 5614622812f47-46fc5b8a068so1811802b6e.3
 for <xen-devel@lists.xenproject.org>; Tue, 14 Apr 2026 05:37:33 -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=20251104 header.d=gmail.com header.i="@gmail.com" header.h="Content-Transfer-Encoding:Cc:To:Subject:Message-ID:Date:From:In-Reply-To:References:MIME-Version"
ARC-Seal: i=1; a=rsa-sha256; t=1776170252; cv=none;
        d=google.com; s=arc-20240605;
        b=M3UkeP5n+se6S7TPzMiw0wdpnI5mhsoKCsuNXfhqPb6Jf6pDLkfFXS4Be1ApIAFT+l
         WZOvmKFGfQ3HT64clf8Jk4orKn+hTlpAsUQtk3fRui0run1CA5px9le/YQsTrElEXNnX
         U9x82Q0nmK8iDXaEs1EXuFvGM+hAsaisS38HadH+ZDkwh6bsSySzxgchKsvN3S07MMPs
         BWfif9NLnruMV6BM04wVS0kR7Gh5sV4N8WSD6tRxX+nddZBU6Gi3d+5DPK+tR3Jdl/sP
         LImTvtAadYia4hqlJ9ZEYrJ3hb2lwGkZxvYS4w7vKRvl83QKD8Yjp1jxMYfuBXIVr+Ip
         3xpw==
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20240605;
        h=content-transfer-encoding:cc:to:subject:message-id:date:from
         :in-reply-to:references:mime-version:dkim-signature;
        bh=Q9zdWPoWdvbWCQTO+55S7ZInEF0uDLun5ABiAEsj0AE=;
        fh=IS/tDDkuF9s3/ln8GtiQ3p6v+3aSD0NVmXMIz5Ujy88=;
        b=YZKv+7nNLhUb9CJIo6iHDIr0PKsB6YvXuVDDMGCpO6kO5XAiomS4yx80BzUBKsTXwb
         4hqHxuH4oHfGZ5Es2yY8e8sRstk4FnfnZgS+a5oBIdVv1Num71xGbvK7r2hyXybR9SgL
         I95FngOs8xYBsVZSaQ5fYp+PppAv2J7aXJaq6PrpLOb+qos+SIQEBI4F4EE/2asS5Mgo
         BMJ7L69FrCHnebInnqfyRUSqaz4dwH6ITGwUt1lmctq8gpNZoBM8eAauG1MD8nnv7jVj
         mOxUaXAHktaW8wAvVNPW8zU6B+D5W1xdXXRcD3n8Lgaqel0O8fTUWnJAPQ5O5XjOtzWz
         e7Sg==;
        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=20251104; t=1776170252; x=1776775052; darn=lists.xenproject.org;
        h=content-transfer-encoding:cc:to:subject:message-id:date:from
         :in-reply-to:references:mime-version:from:to:cc:subject:date
         :message-id:reply-to;
        bh=Q9zdWPoWdvbWCQTO+55S7ZInEF0uDLun5ABiAEsj0AE=;
        b=H12Sg2SA01FoxYI9yzI32nXw+ARrl62WugVXZ8RWWXLMOrahgzhsUxwdjln9NiAeCS
         Wnz5hK9wKGU0ueLVogqkx21poyLhoW5JBhsxaLQNF9LGoMGOvKTIYkC4ogbIRo53hEqn
         VtoP7qR32WK6jIhn+PnDg9yIC/qkPimtGVuOIPFI//uYDP2EY6PsD1uuFioJMSts8nJc
         LA+PfqkQw2TY3kCQGzMezDpn/JplsqQJBwwNCP+jDL2lQ0FIZJXjVIurHhV4ts9axP+j
         5IEJN1H/7XPLtqZPqYqnYmuDmueJ1V5JwG6FQrKmsKDQkyswd0IuCKijFOmihkAOQWay
         GnYA==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20251104; t=1776170252; x=1776775052;
        h=content-transfer-encoding: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;
        bh=Q9zdWPoWdvbWCQTO+55S7ZInEF0uDLun5ABiAEsj0AE=;
        b=S1eezWexijJA63U3pJc0w+ShFyOqeDsMreim7VQnEBwF6gqZYK7xLwT5aqulGhznqG
         5vQw2rWDW7Q3KoXpv3Uz7AZl98vbCja+yAMUedpNDgAvE69+49zehyTWDTydAwQE+30m
         lTBYJiAqn1Mp26SKUBhOtkV+bXgUZ96fgyZqoZQ8IRMva73uJvLhmjB538mLrKHZyg6W
         LN6C0DrQAbFqN0CtY/nVD4duf3Mt4Q7vGmoDr0aeu1hnu/vAuAnu+xWJK8c2t7nwxR3D
         FEyiv9n2xIVVmbnbypvuoConHFIyezafo9QShNfqrCFfq1ygYymgEdh/R1ILbFkDiNva
         bmJw==
X-Gm-Message-State: AOJu0YzyYmHw7UrhiSIzLSksR5fluYuzSETFgML7IWs+EQZYkedoVVLm
	Mjk4MCXVyefNWDiMZh65T48L62/NZE16Js4QIhnVlhu5kP32Sd+bqCoxA9D7DMahwl4iTEmT7XI
	SSD+AzsMPh7l40sHaQR4nGvSxhMGIxo0=
X-Gm-Gg: AeBDieuFw47xxgaOFTSZHI2MRvk5TeXWgd1a3sbz5p6VXFeHMtw2eQUK9IZTkhwgfav
	s46wxuDf9TIrIxKIar40kA6cod2Ppy0FibyRWfiGr7B+y+nnqcC283Idws4hOEcDp73uZCtjY9n
	hc+aJJkDFSn7hC/XmrKL+MAXuK/xltsno8P/qbT81gbTjvfuA7yGNLm7acqPur/eoa7wheeZfvA
	6r5oVg8r3N8/23ST8OW/WKflljYmHUaJicskCIVz9iW5vrDVOomsThKxEnynWvu4+W6fOs1zlK8
	lgjD8sg=
X-Received: by 2002:a05:6808:4e83:b0:467:2926:123d with SMTP id
 5614622812f47-478a0f16ac5mr6863726b6e.47.1776170252023; Tue, 14 Apr 2026
 05:37:32 -0700 (PDT)
MIME-Version: 1.0
References: <20260410164039.1000284-1-ruslichenko.r@gmail.com> <358dc4fb-139b-4000-99cb-c9271e90437d@epam.com>
In-Reply-To: <358dc4fb-139b-4000-99cb-c9271e90437d@epam.com>
From: Ruslan Ruslichenko <ruslichenko.r@gmail.com>
Date: Tue, 14 Apr 2026 14:37:20 +0200
X-Gm-Features: AQROBzBzEfXsERmTVDGkisvVxFwcHpmRn1YsCRm4l15OcpihPcQdjXdqjOA7-N4
Message-ID: <CAN-aV1F+Rmzs4P8AXOD2szDX_ofejDgenZuL3atHA1qTyGhvPQ@mail.gmail.com>
Subject: Re: [PATCH] xen/sched: fix scheduler callback verification on init
To: Mykyta Poturai <Mykyta_Poturai@epam.com>
Cc: "xen-devel@lists.xenproject.org" <xen-devel@lists.xenproject.org>, 
	Volodymyr Babchuk <Volodymyr_Babchuk@epam.com>, 
	Ruslan Ruslichenko <ruslan_ruslichenko@epam.com>, Dario Faggioli <dfaggioli@suse.com>, 
	Juergen Gross <jgross@suse.com>, George Dunlap <gwd@xenproject.org>
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: quoted-printable
X-purgate-ID: tlsNG-33051d/1776170253-41512C9A-91311D73/0/0
X-purgate-type: clean
X-purgate-size: 2537

On Tue, Apr 14, 2026 at 1:10=E2=80=AFPM Mykyta Poturai <Mykyta_Poturai@epam=
.com> wrote:
>
> On 4/10/26 19:40, Ruslan Ruslichenko wrote:
> > From: Ruslan Ruslichenko <Ruslan_Ruslichenko@epam.com>
> >
> > During core scheduler initialization, each registered scheduler
> > is sanity tested in two steps:
> >
> > - it must provide required callbacks (e.g. init, do_schedule).
> > - if global_init callback is present, it must succeed.
> >
> > If any of the steps fail, scheduler entry is cleared in global
> > 'schedulers' array.
> >
> > However, in the current implementation, if verification fails during
> > the first step, the scheduler entry is cleared but verification
> > sequence is not interrupted. This lead to NULL pointer dereference
> > when subsequent required callbacks verified, and possible during
> > the second step.
> >
> > The patch fixes the crashes by adding check inside sched_test_func
> > macro and skipping the call to a global_init if first step did not pass=
.
> >
> > Signed-off-by: Ruslan Ruslichenko <Ruslan_Ruslichenko@epam.com>
> > ---
> >   xen/common/sched/core.c | 5 ++++-
> >   1 file changed, 4 insertions(+), 1 deletion(-)
> >
> > diff --git a/xen/common/sched/core.c b/xen/common/sched/core.c
> > index a57d5dd929..4270c89491 100644
> > --- a/xen/common/sched/core.c
> > +++ b/xen/common/sched/core.c
> > @@ -3017,7 +3017,7 @@ void __init scheduler_init(void)
> >       for ( i =3D 0; i < NUM_SCHEDULERS; i++)
> >       {
> >   #define sched_test_func(f)                               \
> > -        if ( !schedulers[i]->f )                         \
> > +        if ( schedulers[i] && !schedulers[i]->f )        \
> >           {                                                \
> >               printk("scheduler %s misses .%s, dropped\n", \
> >                      schedulers[i]->opt_name, #f);         \
>  >               schedulers[i] =3D NULL;                        \
>
> Maybe it would be cleaner to just add "continue" here?
>

Probably, yes. This will also skip unneeded checks after the first
missing callback.
I will update the patch then.

--
BR,
Ruslan

> > @@ -3034,6 +3034,9 @@ void __init scheduler_init(void)
> >
> >   #undef sched_test_func
> >
> > +        if ( !schedulers[i] )
> > +            continue;
> > +
> >           if ( schedulers[i]->global_init && schedulers[i]->global_init=
() < 0 )
> >           {
> >               printk("scheduler %s failed initialization, dropped\n",
>
> --
> Mykyta


From xen-devel-bounces@lists.xenproject.org Tue Apr 14 13:15:24 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 14 Apr 2026 13:15:24 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1281749.1564622 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wCdbq-0007Er-9l; Tue, 14 Apr 2026 13:15:18 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1281749.1564622; Tue, 14 Apr 2026 13:15: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 1wCdbq-0007Ek-77; Tue, 14 Apr 2026 13:15:18 +0000
Received: by outflank-mailman (input) for mailman id 1281749;
 Tue, 14 Apr 2026 13:15:17 +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 1wCdbp-0007Ed-6H
 for xen-devel@lists.xenproject.org; Tue, 14 Apr 2026 13:15:17 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wCdbo-00Gb5n-Ir
 for xen-devel@lists.xenproject.org; Tue, 14 Apr 2026 15:15:16 +0200
Received: from [10.42.69.6] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <Mykyta_Poturai@epam.com>)
 id 69de3ddb-2eae-0a2a0a5409dd-0a2a4506e278-34
 for <xen-devel@lists.xenproject.org>; Tue, 14 Apr 2026 15:15:16 +0200
Received: from [52.101.66.131]
 (helo=DUZPR83CU001.outbound.protection.outlook.com)
 by tlsNG-16d1c6.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.0)
 (envelope-from <Mykyta_Poturai@epam.com>)
 id 69de3de3-0df0-0a2a45060019-34654283cf67-4
 for <xen-devel@lists.xenproject.org>; Tue, 14 Apr 2026 15:15:16 +0200
Received: from PAVPR03MB10102.eurprd03.prod.outlook.com
 (2603:10a6:102:30d::12) by PA6PR03MB10362.eurprd03.prod.outlook.com
 (2603:10a6:102:3c9::20) with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9769.48; Tue, 14 Apr
 2026 13:15:12 +0000
Received: from PAVPR03MB10102.eurprd03.prod.outlook.com
 ([fe80::b8c6:f37a:987a:beb]) by PAVPR03MB10102.eurprd03.prod.outlook.com
 ([fe80::b8c6:f37a:987a:beb%5]) with mapi id 15.20.9769.046; Tue, 14 Apr 2026
 13:15: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=vMfjnYpvUVNWaqzDn+esEaZ/6/0h1NcteXl2Vwal8EDmMO33ROBUwz0sKSgJLBfXxQeUtCCCtbE86c3F1Upl9Eg+JxZTMIimIYZnf4ZqO64mVGcywEE8/QSREXQ/5RxlefxJr/na621LBQ1RUu6bAHjI86xWh2qx4xz+zG/iK0xpGYZdp+3nWnm6kI3AgJFSwbr+DmXo/tk+urZnclVGhVk87S1wpB4TTNQEjCoak1OPoEVsUwmSpRj8UFgmOK3nVsl0fNOjJqNGScojpbO/3w4ZL4I4Vevvdq48R638jv2BuI06fD2fb1PGBgT4lONTxofuKBwfPX72ZF479d3slA==
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com;
 s=arcselector10001;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1;
 bh=Qs5eBLnzDjr4kf7mQODZBSZ6PkjvoPt+M64D6wbMWaQ=;
 b=eBVYh5g78PkLIzSbVvfB5uLkvEcv+RNCUl0SaXXeTyYfSLrMgcWArU7GhuRtFxwady4u0cQBFoaRwPqKSvJEN10TUTCoreHVKIyrVe+LoB2silH51ZdsPGUM79DHxbziPV3O3T0UzyY187KjJhPjE4QsRlgj58+kaBFo6c3XF/TGKDj/QIqGZwA/haOkq9IMDc62xF+Ux9a0AsL8e8+Il3lhL6A1fsxu8CpqRKzd3s8kz7wzKrMD2Xf0nMvwGyHdiEYDSpKfC4EibfuQNCAww40V6R9FPTaAgBFpyKyjmMQgGlmCm1MmuCWFhJprxcleA9l8Bt1xtlvK5PNl1ay9Yw==
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=Qs5eBLnzDjr4kf7mQODZBSZ6PkjvoPt+M64D6wbMWaQ=;
 b=QTrq3iH1BqPikEoAyTeqxDTXVmEiJqeYh1MBlB/M896WFeDc38HAXXIU+SDhkAjAAvwFhUrbuh018e/GNDPa0ZDz4Bxo69jXXMiMDdt7yeJN8aHC0Tzf4XplPMlFBxdOEdUl2egLnMDnzCZc1PTShilUpfu5Fq7rq53ORjUGPBJnlsyLws6x+PH8RLNF8UxR3L/Y6tXCsv4TYTyoAHld/Of5o8p/2ZrOn60W4JnN5mWMpA3JwLcxrGqx6bYOQyBonvD78ctqXEUCBDTvtJcXYedz8TGxJiMUkuVQS6dcJ2/OrTnXYTs9Kx6fCRpKfCY/yUUsfFrKu6aYXrlBB6demg==
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>, Rahul Singh <rahul.singh@arm.com>
Subject: [PATCH v2] xen/arm: smmuv3: Add support for removing devices
Thread-Topic: [PATCH v2] xen/arm: smmuv3: Add support for removing devices
Thread-Index: AQHczBC6OGp5DbFlyEyismnWkcVdqA==
Date: Tue, 14 Apr 2026 13:15:12 +0000
Message-ID:
 <da128e8fb41add9efc30860612786cd62f21addc.1776168699.git.mykyta_poturai@epam.com>
Accept-Language: en-US
Content-Language: en-US
X-MS-Has-Attach:
X-MS-TNEF-Correlator:
authentication-results: dkim=none (message not signed)
 header.d=none;dmarc=none action=none header.from=epam.com;
x-ms-publictraffictype: Email
x-ms-traffictypediagnostic: PAVPR03MB10102:EE_|PA6PR03MB10362:EE_
x-ms-office365-filtering-correlation-id: 4a07abd4-df28-4f4a-e4d1-08de9a27dc8a
x-ms-exchange-senderadcheck: 1
x-ms-exchange-antispam-relay: 0
x-microsoft-antispam:
 BCL:0;ARA:13230040|376014|1800799024|366016|38070700021|56012099003|18002099003;
x-microsoft-antispam-message-info:
 umcfbcw1gcLsBz+TdKy3wkLRv3itsO2VL9V3xiHgdDCMDICFGZnZm+CO60gg9xCsEoVMZJZJN4yJpORJ4EZjTocJSe/WVRYCD9uvhpBL41SkamurJCjH18i9kTeCt1o7cTl1wZ/1guFATLpRXTc/vOrKQD0quufhGlb9YRz5g4T0PCgTUdcMQvIpJveivyIoC4PaqFBFGo5XM6xLik3GSwIbee1bg3BHNi5uJNNq5GU9zBE7R7N3+JYv1C5Z26SZQcq5MV8sH7TmdFNtrIDntnBNAFL4h6Aw6DbT5glVIN6clEwE27hoqs5PJVXbosBDkiL9+6+3ZalJ4Dj2UQu8QC521mzP8Nlhszx87Vddn19/jwaBJBSK5U5/zPSihNSb5CNzWtAmdEiDJNTRHfkVXXAf706FhRm7ysVpBnlVeeQj7lTFUYK0dwZYTmWPjUdNQc/hPW507jd0plj3QVj0cna92cP6Gj9pfRyw5OZh0MZPIHvHPe5YowkVrVqi+qjHJQcKGhcFiyBXzcOZttOY0+oJJcsx6G2EpFgb6zMA+tXsrU66z+GhPMaKOygj+u4AK1uf3hc+l78skQSfEmZxb7Gkn5KML3lTMau3c1BnO1BejmN9Eo0scY0gq03ezn43NS60pFElD+xwL+Hue0pPpfRmEvZ17yLAeTavpsaowaQFZqTLj8QLAp5gbdFxJjPwOI4vCZ53KxNyVf/i3UJCaqpjMJwdndW65P7Bb53x/mYbZfTisd/LTeEvJBwNhCil
x-forefront-antispam-report:
 CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:PAVPR03MB10102.eurprd03.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(376014)(1800799024)(366016)(38070700021)(56012099003)(18002099003);DIR:OUT;SFP:1102;
x-ms-exchange-antispam-messagedata-chunkcount: 1
x-ms-exchange-antispam-messagedata-0:
 =?iso-8859-1?Q?80zq/OCZlxv/ePzuZmEuZCGmlZ+opf27uwzMo4tLkFOJvy2SabCYY/Uq/h?=
 =?iso-8859-1?Q?wG+6F5HgeqtSRys+8wzIyT2HfJYRwwFRtwY2fjFT0RsKyu2Ynuw8AJz+a+?=
 =?iso-8859-1?Q?Jex5m+XwPisj35EDeb+ak6x99ci0qgH2Dlts4VFOx7/Sf755PJNc5w98ig?=
 =?iso-8859-1?Q?M+pcqVolPunKeRc4xTEzFVrelqgESpE+OAeVLb0sXRNJL0tfL2FqyC3PYM?=
 =?iso-8859-1?Q?ddcrJGbKhTruRFEVhQVgpHnzqjKxbYrLtUkpdiRyjBG49wN51MOPhDpDpD?=
 =?iso-8859-1?Q?8v4WaBeRvFhtVGdRTzNtP9uknhmntbE+gkwWO5pE1prToKKyFgelTR4vhx?=
 =?iso-8859-1?Q?F/Kq5ru3rsav7hBtyv7GLaMYMvWlLXFQmF0NMx6WcIgxLu+8Qrv/oxViKW?=
 =?iso-8859-1?Q?wLU6PcX5LNbYOPHJhmIcIdV9NAZ4H0zAc+sDrk1npWFI1f8hbpxvAW2EyR?=
 =?iso-8859-1?Q?/US1u7eCtRQxlAzSyBkP2HUJ7U84BwJteNIidjMEF3Z8K9iNdBIW6vKLLG?=
 =?iso-8859-1?Q?EhUG89eS9namRRA6JkIe/5rw1oE2dkJ8QDyqL1FKZNbD6LoOEv33zbcZ4G?=
 =?iso-8859-1?Q?sAe+rzZQRzPBGEtYBkjPHYPuYF32VzzMsvw8DWH31vuRm4HlxNI/cnniDq?=
 =?iso-8859-1?Q?U1NdP0dTvPW55GtgwDuNfV4bwAmz2wCckBZe8Kw5/1H3AC14lhd3ucNji7?=
 =?iso-8859-1?Q?GqzQKoehqbZd8CsaHIcansIh2ZUPUDsCnoGSbhVvoWJWiZLJX7kc5Q/E5S?=
 =?iso-8859-1?Q?+9+YWzZUWtxVSwqmMLfjQJN1K05hnOiSyDAQZatqaLqV+UMG46CIKe7O8q?=
 =?iso-8859-1?Q?WYLxB7/VTr28vmWBDTn2CmTpRCfva41sDVDo8Z4gEUvMP3XWJZ91YONvXb?=
 =?iso-8859-1?Q?6Dueeug+0H0OlHA4PVnQRMimXoT0quL4l8LJ0aMEp3txZ5wJIxfut5hhY6?=
 =?iso-8859-1?Q?CQ08x0Xwr+G3WOHA6C6iJxNXzmB2hvgtNr6JTFsw2jODm2djy3uJUTeqT9?=
 =?iso-8859-1?Q?9fbfPfbsQVQUZlKpTy7BxjclaBhhnMz9gZzL/xmRJZISJ4Ag5KLHPL33DP?=
 =?iso-8859-1?Q?CHEeM5H7rF+fm/yj6DZo6FEOUl/QPuiZWzt3mjAhmYgLUgpQQh+PYdclue?=
 =?iso-8859-1?Q?ydbOfUhHfNG/L9F0JVqg2Q1nSQsFP+a+PzZjSOBXAUJLTppEwvoVHWyfaz?=
 =?iso-8859-1?Q?KQU/eMtqBOpYG/kP9kmyQ2SJUnK0rQ9Icoy2rgHKHEr6PxGSFymHIJR23t?=
 =?iso-8859-1?Q?dyMa1Tz1c+aR4di6y+NsOZP5NRMWoGyPsJ6qLCcvhHJLBF55/wOUwL1/E4?=
 =?iso-8859-1?Q?3Buc2fnpd3GXoKhD+2ZVCVYKmUjfxv55hPN9d722tsyU3gveaLafimLIjl?=
 =?iso-8859-1?Q?f973YeMdcLwrki5c6qDbtu1eQNyxyj97vQqBF2WZWHd+lkWjeKDuCSVOGO?=
 =?iso-8859-1?Q?hZ6vJLNQ1G3YL3Hd1V1yPYlIYvHBFq7TD9fP6DjIOui4YDE0cr1m4CXluy?=
 =?iso-8859-1?Q?kZ3fD7YFVEsnuCAdvf4O1fwZT2fwW0xAylnCWQ4kgRXHGhrjQrTCPlUp1Y?=
 =?iso-8859-1?Q?fahyo1EvzCL0pHq297dGMF/Aua1fITEnlk8j63whye63dYUEHiLTofQr/d?=
 =?iso-8859-1?Q?EjbSXwqEMgHpFgMei9gr2XY5VReKqQ4r+FyJbLs/FITl4+/pHLq/KG3aJR?=
 =?iso-8859-1?Q?u9XUJdDdEgwYJymmJ9asdbP60y5vqssESDym7do4e0SxpkiSCH/bJBSc3S?=
 =?iso-8859-1?Q?Gzg44ZA1cY1OgNn3gBgMHETqaVZtIBO7qaIEkb7QFtp/6T9PL7dTNbq6SW?=
 =?iso-8859-1?Q?v6OTYlEDmyY8lLoXehr9gYhc2HCG11U=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: PAVPR03MB10102.eurprd03.prod.outlook.com
X-MS-Exchange-CrossTenant-Network-Message-Id: 4a07abd4-df28-4f4a-e4d1-08de9a27dc8a
X-MS-Exchange-CrossTenant-originalarrivaltime: 14 Apr 2026 13:15:12.7335
 (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: zKgu/Bf8Zy2kOPQi/ipex+d2mKen255zwhysMC0MNXo4pEWc8A9uYXhPeiGIuHhJl8yihGjW9i8swKu/hQjHhA==
X-MS-Exchange-Transport-CrossTenantHeadersStamped: PA6PR03MB10362
X-purgate-ID: tlsNG-16d1c6/1776172516-6484B3D8-2F745132/0/0
X-purgate-type: clean
X-purgate-size: 5618

Allow for removing devices from SMMUv3. arm_smmu_deassign_dev handles
most of the work by disabling ATS and zeroing STEs. Additionally, unset
the dt_device_is_protected flag and free no longer needed smmu_master.

Rework dt_device_set_protected to accept a boolean parameter, update
callsites.

Tested on QEMU with SRIOV series[1] by repeatedly enabling/disabling
VFs.

[1]: https://patchew.org/Xen/cover.1772806036.git.mykyta._5Fpoturai@epam.co=
m/

Signed-off-by: Mykyta Poturai <mykyta_poturai@epam.com>
---
V1-V2:
* check for phantom functions
* simplify pci/dt device split
* improve error handling
* don't try to free master for unprotected devices
* rework dt_device_set_protected
---
 xen/drivers/passthrough/arm/ipmmu-vmsa.c |  2 +-
 xen/drivers/passthrough/arm/smmu-v3.c    | 57 +++++++++++++++++++++++-
 xen/drivers/passthrough/arm/smmu.c       |  4 +-
 xen/include/xen/device_tree.h            |  5 ++-
 4 files changed, 62 insertions(+), 6 deletions(-)

diff --git a/xen/drivers/passthrough/arm/ipmmu-vmsa.c b/xen/drivers/passthr=
ough/arm/ipmmu-vmsa.c
index fa9ab9cb13..0648f9b407 100644
--- a/xen/drivers/passthrough/arm/ipmmu-vmsa.c
+++ b/xen/drivers/passthrough/arm/ipmmu-vmsa.c
@@ -1367,7 +1367,7 @@ static int ipmmu_add_device(u8 devfn, struct device *=
dev)
         }
=20
         /* Let Xen know that the master device is protected by an IOMMU. *=
/
-        dt_device_set_protected(dev_to_dt(dev));
+        dt_device_set_protected(dev_to_dt(dev), true);
     }
 #ifdef CONFIG_HAS_PCI
     if ( dev_is_pci(dev) )
diff --git a/xen/drivers/passthrough/arm/smmu-v3.c b/xen/drivers/passthroug=
h/arm/smmu-v3.c
index bf153227db..8e080cd7d0 100644
--- a/xen/drivers/passthrough/arm/smmu-v3.c
+++ b/xen/drivers/passthrough/arm/smmu-v3.c
@@ -1493,6 +1493,60 @@ static int arm_smmu_assign_dev(struct domain *d, u8 =
devfn, struct device *dev,
 static int arm_smmu_deassign_dev(struct domain *d, uint8_t devfn,
 				 struct device *dev);
=20
+static int arm_smmu_remove_device(u8 devfn, struct device *dev)
+{
+	struct arm_smmu_master *master;
+	struct iommu_fwspec *fwspec;
+	struct domain *d =3D NULL;
+
+	fwspec =3D dev_iommu_fwspec_get(dev);
+	if ( !fwspec )
+		return -ENODEV;
+
+	master =3D dev_iommu_priv_get(dev);
+	if ( !master )
+		return -ENODEV;
+
+	if ( IS_ENABLED(CONFIG_HAS_PCI) && dev_is_pci(dev) )
+	{
+		struct pci_dev *pdev =3D dev_to_pci(dev);
+
+		/* Ignore calls for phantom functions */
+		if ( devfn !=3D pdev->devfn )
+			return 0;
+
+		d =3D pdev->domain;
+	}
+	else
+	{
+		if ( !dt_device_is_protected(dev_to_dt(dev)) )
+		{
+			dev_err(dev, "Not added to SMMUv3\n");
+			return -ENODEV;
+		}
+
+		dt_device_set_protected(dev_to_dt(dev), false);
+		if ( master->domain && master->domain->d )
+			d =3D master->domain->d;
+	}
+
+	if ( d )
+	{
+		int ret =3D arm_smmu_deassign_dev(d, devfn, dev);
+		/* This should never fail because we already checked the domain */
+		ASSERT(!ret);
+	}
+
+	arm_smmu_disable_pasid(master);
+
+	dev_info(dev, "Removed master device (SMMUv3 %s StreamIds %u)\n",
+		 dev_name(fwspec->iommu_dev), fwspec->num_ids);
+
+	xfree(master);
+	dev_iommu_priv_set(dev, NULL);
+	return 0;
+}
+
 static int arm_smmu_add_device(u8 devfn, struct device *dev)
 {
 	int i, ret;
@@ -1571,7 +1625,7 @@ static int arm_smmu_add_device(u8 devfn, struct devic=
e *dev)
 		}
=20
 		/* Let Xen know that the master device is protected by an IOMMU. */
-		dt_device_set_protected(dev_to_dt(dev));
+		dt_device_set_protected(dev_to_dt(dev), true);
 	}
=20
 	dev_info(dev, "Added master device (SMMUv3 %s StreamIds %u)\n",
@@ -2867,6 +2921,7 @@ static const struct iommu_ops arm_smmu_iommu_ops =3D =
{
 	.unmap_page		=3D arm_iommu_unmap_page,
 	.dt_xlate		=3D arm_smmu_dt_xlate,
 	.add_device		=3D arm_smmu_add_device,
+	.remove_device		=3D arm_smmu_remove_device,
 };
=20
 static __init int arm_smmu_dt_init(struct dt_device_node *dev,
diff --git a/xen/drivers/passthrough/arm/smmu.c b/xen/drivers/passthrough/a=
rm/smmu.c
index d63c901551..4d2f71f152 100644
--- a/xen/drivers/passthrough/arm/smmu.c
+++ b/xen/drivers/passthrough/arm/smmu.c
@@ -825,7 +825,7 @@ static int arm_smmu_dt_add_device_legacy(struct arm_smm=
u_device *smmu,
 	if ( !dev_is_pci(dev) )
 	{
 		/* Xen: Let Xen know that the device is protected by an SMMU */
-		dt_device_set_protected(dev_node);
+		dt_device_set_protected(dev_node, true);
 	}
=20
 	for (i =3D 0; i < fwspec->num_ids; ++i) {
@@ -862,7 +862,7 @@ static int arm_smmu_dt_remove_device_legacy(struct arm_=
smmu_device *smmu,
=20
 	if ( !dev_is_pci(dev) )
 		/* Protected by dt_host_lock and dtdevs_lock as caller holds these locks=
. */
-		dev_node->is_protected =3D false;
+		dt_device_set_protected(dev_node, false);
=20
 	kfree(master);
 	return 0;
diff --git a/xen/include/xen/device_tree.h b/xen/include/xen/device_tree.h
index 06d7643622..76ae1e674a 100644
--- a/xen/include/xen/device_tree.h
+++ b/xen/include/xen/device_tree.h
@@ -300,9 +300,10 @@ static inline domid_t dt_device_used_by(const struct d=
t_device_node *device)
     return device->used_by;
 }
=20
-static inline void dt_device_set_protected(struct dt_device_node *device)
+static inline void dt_device_set_protected(struct dt_device_node *device,
+                                           bool protected)
 {
-    device->is_protected =3D true;
+    device->is_protected =3D protected;
 }
=20
 static inline bool dt_device_is_protected(const struct dt_device_node *dev=
ice)
--=20
2.51.2


From xen-devel-bounces@lists.xenproject.org Tue Apr 14 13:18:05 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 14 Apr 2026 13:18:05 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1281759.1564631 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wCdeV-0007vS-Of; Tue, 14 Apr 2026 13:18:03 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1281759.1564631; Tue, 14 Apr 2026 13:18: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 1wCdeV-0007vL-Lz; Tue, 14 Apr 2026 13:18:03 +0000
Received: by outflank-mailman (input) for mailman id 1281759;
 Tue, 14 Apr 2026 13:18:02 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <bernhard.kaindl@citrix.com>) id 1wCdeU-0007vD-2t
 for xen-devel@lists.xenproject.org; Tue, 14 Apr 2026 13:18:02 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wCdeT-002nHw-G0
 for xen-devel@lists.xenproject.org; Tue, 14 Apr 2026 15:18:01 +0200
Received: from [10.42.69.1] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <bernhard.kaindl@citrix.com>)
 id 69de3e7f-2eae-0a2a0a5409dd-0a2a4501d8ee-44
 for <xen-devel@lists.xenproject.org>; Tue, 14 Apr 2026 15:18:01 +0200
Received: from [160.101.131.8] (helo=na1pdmzitismtp01.tibco.com)
 by tlsNG-d62444.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.1)
 (envelope-from <bernhard.kaindl@citrix.com>)
 id 69de3e88-c1f2-0a2a45010019-a0658308bf0e-3
 for <xen-devel@lists.xenproject.org>; Tue, 14 Apr 2026 15:18:01 +0200
Received: from debian.eng.citrite.net (unknown [10.113.40.46])
 by na1pdmzitismtp01.tibco.com (Postfix) with ESMTP id 23A26423F9C3;
 Tue, 14 Apr 2026 09:17:17 -0400 (EDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-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: Bernhard Kaindl <bernhard.kaindl@citrix.com>
To: xen-devel@lists.xenproject.org
Cc: Bernhard Kaindl <bernhard.kaindl@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.pau@citrix.com>,
	Stefano Stabellini <sstabellini@kernel.org>,
	Juergen Gross <jgross@suse.com>,
	"Daniel P. Smith" <dpsmith@apertussolutions.com>,
	Christian Lindig <christian.lindig@citrix.com>,
	David Scott <dave@recoil.org>
Subject: [PATCH v6 0/7] xen/mm: Introduce NUMA-aware claim sets for domains
Date: Tue, 14 Apr 2026 14:15:57 +0100
Message-Id: <cover.1776172526.git.bernhard.kaindl@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/1776172681-BFE7BFF4-F7A99ACD/0/0
X-purgate-type: clean
X-purgate-size: 5785

Hi all,

This series extends Xen's memory claim handling to support claim sets
spanning multiple NUMA nodes.

Earlier review raised the concern that claims would need to evolve from a
single claim into a multi-node model. Roger Pau Monné described the core
requirement well:

  >  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.

      -- Roger Pau Monné

This submission implements that model, and its design and code have been
validated through the following methods:

1. A suite of host-side integration tests (to be posted shortly), which
   can be executed on the build host (e.g., on a developer machine) like
   the PDX tests by Roger Pau Monné (make -C tools/tests/pdx run), as
   well as the domid and rangeset tests.

2. A comprehensive functional system test suite (with nineteen test
   cases), included in this v6 submission. These tests are run using
   automated deployment across various machine types and generations
   in our labs.

3. A set of high-level functional integration tests and performance
   tests, executed as part of end-to-end product deployment validation.

4. Validation in a customer's standardised application performance lab
   to confirm their performance expectations. (This testing was done on
   predecessor code sharing the same design, with the main difference
   being that only single-node claims were supported in the previous
   code base.)

The series has been reworked substantially in response to v4 review.
Because of that, it is likely best reviewed as a fresh series rather
than incrementally.

Patch summary:

1. xen/mm: Refactor deducting claims to prepare for functional changes
2. xen/mm: Claims check: Allow free pages to cover a shortfall of claims
3. xen/mm: Optimise getting free page counts per NUMA node
4. xen/mm: Split d->outstanding_pages to global_claims & node_claims
5. xen/mm: Introduce Claim Sets for multiple NUMA nodes
6. tools/ocaml/libs/xc: Add OCaml bindings for NUMA-aware claims
7. tools/tests/mem-claim: Add a test suite for the memory claim API

The v2 design document submitted ahead of this series may also help with
review. It explains the background, design rationale, and implementation
details.

Rendered version:
https://bernhard-xen.readthedocs.io/en/claim-sets-v2-design/designs/claims

Many thanks to everyone who contributed to the earlier work and review,
especially Alejandro Vallejo, Jan Beulich, Andrew Cooper, Roger Pau
Monné, Marcus Granado, and Edwin Török.

Changes since v5:
-----------------

- No functional changes for the sum of all commits.
  (Adding a new function argument was moved to the commit that needs it.)

- Added a comprehensive test suite for the new hypercall using the
  libxenctrl wrapper xc_domain_claim_memory(), based on the test in
  tools/tests/mem-claim/test-mem-claim.c for the existing hypercall
  API by Andrew Cooper.

- Improved the function names to follow standard naming recommendations.
  The added functions are renamed as follows:

  * claims_retire_allocation() -> redeem_claims_for_allocation()
    - Use "redeem" because it is part of an exchange of claims for memory.

  * claims_retire_global()     -> deduct_global_claims()
  * claims_retire_nodes()      -> deduct_node_claims()
    - These perform the act of reducing the amount of global/node claims.

  * claims_retire_node()       -> cancel_all_node_claims()
    - Cancel all node claims when needed when the claims are terminated.

  * The comments and the design document v2 have been updated accordingly.

Thanks,

  Bernhard

Bernhard Kaindl (7):
  xen/mm: Refactor claim deduction for later functional changes
  xen/mm: Allow free pages to cover a claims shortfall
  xen/mm: Optimise getting free page counts per NUMA node
  xen/mm: Split outstanding claims into global and node totals
  xen/mm: Introduce NUMA-aware memory claim sets
  tools/ocaml/libs/xc: Add an OCaml binding for NUMA-aware claims
  tools/tests/mem-claim: Add a test suite for the memory claim API

 tools/include/xenctrl.h                   |   4 +
 tools/libs/ctrl/xc_domain.c               |  38 +
 tools/ocaml/libs/xc/xenctrl.ml            |  11 +
 tools/ocaml/libs/xc/xenctrl.mli           |  11 +
 tools/ocaml/libs/xc/xenctrl_stubs.c       |  47 +
 tools/tests/mem-claim/.gitignore          |   1 +
 tools/tests/mem-claim/Makefile            |  17 +-
 tools/tests/mem-claim/accounting-1.h      | 401 +++++++++
 tools/tests/mem-claim/input-phase1.h      | 171 ++++
 tools/tests/mem-claim/input-phase2.h      |  91 ++
 tools/tests/mem-claim/libtestclaims.c     | 995 ++++++++++++++++++++++
 tools/tests/mem-claim/libtestclaims.h     | 202 +++++
 tools/tests/mem-claim/test-claim-memory.c | 129 +++
 xen/common/domctl.c                       |  56 +-
 xen/common/page_alloc.c                   | 374 +++++++-
 xen/include/public/domctl.h               |  32 +
 xen/include/public/memory.h               |   9 +
 xen/include/xen/mm.h                      |   3 +
 xen/include/xen/sched.h                   |  13 +-
 xen/xsm/flask/hooks.c                     |   1 +
 xen/xsm/flask/policy/access_vectors       |   1 +
 21 files changed, 2573 insertions(+), 34 deletions(-)
 create mode 100644 tools/tests/mem-claim/accounting-1.h
 create mode 100644 tools/tests/mem-claim/input-phase1.h
 create mode 100644 tools/tests/mem-claim/input-phase2.h
 create mode 100644 tools/tests/mem-claim/libtestclaims.c
 create mode 100644 tools/tests/mem-claim/libtestclaims.h
 create mode 100644 tools/tests/mem-claim/test-claim-memory.c

-- 
2.39.5



From xen-devel-bounces@lists.xenproject.org Tue Apr 14 13:24:56 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 14 Apr 2026 13:24:56 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1281788.1564640 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wCdl6-00014g-E1; Tue, 14 Apr 2026 13:24:52 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1281788.1564640; Tue, 14 Apr 2026 13: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 1wCdl6-00014Z-B8; Tue, 14 Apr 2026 13:24:52 +0000
Received: by outflank-mailman (input) for mailman id 1281788;
 Tue, 14 Apr 2026 13:24:51 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <bernhard.kaindl@citrix.com>) id 1wCdl5-00014S-Pi
 for xen-devel@lists.xenproject.org; Tue, 14 Apr 2026 13:24:51 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wCdl4-0062r6-GJ
 for xen-devel@lists.xenproject.org; Tue, 14 Apr 2026 15:24:50 +0200
Received: from [10.42.69.6] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <bernhard.kaindl@citrix.com>)
 id 69de4020-e002-0a2a0a5209dd-0a2a4506c2d6-8
 for <xen-devel@lists.xenproject.org>; Tue, 14 Apr 2026 15:24:50 +0200
Received: from [160.101.131.8] (helo=na1pdmzitismtp01.tibco.com)
 by tlsNG-16d1c6.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.0)
 (envelope-from <bernhard.kaindl@citrix.com>)
 id 69de4021-0df0-0a2a45060019-a0658308b188-3
 for <xen-devel@lists.xenproject.org>; Tue, 14 Apr 2026 15:24:50 +0200
Received: from debian.eng.citrite.net (unknown [10.113.40.46])
 by na1pdmzitismtp01.tibco.com (Postfix) with ESMTP id 85E40424A79F;
 Tue, 14 Apr 2026 09:24:06 -0400 (EDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-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: Bernhard Kaindl <bernhard.kaindl@citrix.com>
To: xen-devel@lists.xenproject.org
Cc: Bernhard Kaindl <bernhard.kaindl@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.pau@citrix.com>,
	Stefano Stabellini <sstabellini@kernel.org>
Subject: [PATCH v6 1/7] xen/mm: Refactor claim deduction for later functional changes
Date: Tue, 14 Apr 2026 14:22:45 +0100
Message-Id: <5302d33e7e896347acc7a8212df4f28ea098e28e.1776172526.git.bernhard.kaindl@citrix.com>
X-Mailer: git-send-email 2.39.5
In-Reply-To: <cover.1776172526.git.bernhard.kaindl@citrix.com>
References: <cover.1776172526.git.bernhard.kaindl@citrix.com>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit
X-purgate-ID: tlsNG-16d1c6/1776173090-5E32F3D8-CC5F05F9/0/0
X-purgate-type: clean
X-purgate-size: 2424

Refactor claim deduction to make the claims accounting model easier to
follow ahead of later functional changes.

Three new callers will need to deduct claims, and two of them will also
need the number of pages deducted to be returned.

No functional change.

Signed-off-by: Bernhard Kaindl <bernhard.kaindl@citrix.com>
---
History:

Functionally unchanged since v4, only minor cleanups have been applied and:
- Updated the function name deduct_global_claims() to follow standard naming.
- Moved the other function into another commit as it had no users here.
---
 xen/common/page_alloc.c | 22 +++++++++++++++-------
 1 file changed, 15 insertions(+), 7 deletions(-)

diff --git a/xen/common/page_alloc.c b/xen/common/page_alloc.c
index b1edef87124f..80577aa4d50c 100644
--- a/xen/common/page_alloc.c
+++ b/xen/common/page_alloc.c
@@ -518,6 +518,19 @@ unsigned long domain_adjust_tot_pages(struct domain *d, long pages)
     return d->tot_pages;
 }
 
+/* Deduct up to the given amount of pages from the global claims of a domain */
+static unsigned long deduct_global_claims(struct domain *d,
+                                          unsigned long reduction)
+{
+    reduction = min(reduction, d->outstanding_pages + 0UL);
+    ASSERT(reduction <= outstanding_claims);
+
+    outstanding_claims -= reduction;
+    d->outstanding_pages -= reduction;
+
+    return reduction;
+}
+
 int domain_set_outstanding_pages(struct domain *d, unsigned long pages)
 {
     int ret = -ENOMEM;
@@ -535,8 +548,7 @@ int domain_set_outstanding_pages(struct domain *d, unsigned long pages)
     /* pages==0 means "unset" the claim. */
     if ( pages == 0 )
     {
-        outstanding_claims -= d->outstanding_pages;
-        d->outstanding_pages = 0;
+        deduct_global_claims(d, d->outstanding_pages);
         ret = 0;
         goto out;
     }
@@ -1067,11 +1079,7 @@ 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);
-
-        BUG_ON(outstanding > outstanding_claims);
-        outstanding_claims -= outstanding;
-        d->outstanding_pages -= outstanding;
+        deduct_global_claims(d, request);
     }
 
     check_low_mem_virq();
-- 
2.39.5



From xen-devel-bounces@lists.xenproject.org Tue Apr 14 13:25:35 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 14 Apr 2026 13:25:35 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1281806.1564648 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wCdlm-0001Y8-MD; Tue, 14 Apr 2026 13:25:34 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1281806.1564648; Tue, 14 Apr 2026 13:25: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 1wCdlm-0001Y1-Iu; Tue, 14 Apr 2026 13:25:34 +0000
Received: by outflank-mailman (input) for mailman id 1281806;
 Tue, 14 Apr 2026 13:25:33 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <bernhard.kaindl@citrix.com>) id 1wCdll-0001Xp-Rp
 for xen-devel@lists.xenproject.org; Tue, 14 Apr 2026 13:25:33 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wCdll-00GLNf-8O
 for xen-devel@lists.xenproject.org; Tue, 14 Apr 2026 15:25:33 +0200
Received: from [10.42.69.11] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <bernhard.kaindl@citrix.com>)
 id 69de403c-2eae-0a2a0a5409dd-0a2a450bb360-46
 for <xen-devel@lists.xenproject.org>; Tue, 14 Apr 2026 15:25:33 +0200
Received: from [160.101.131.9] (helo=na1pdmzitismtp02.tibco.com)
 by tlsNG-42698a.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.0)
 (envelope-from <bernhard.kaindl@citrix.com>)
 id 69de404a-bca8-0a2a450b0019-a0658309e5ae-3
 for <xen-devel@lists.xenproject.org>; Tue, 14 Apr 2026 15:25:32 +0200
Received: from debian.eng.citrite.net (unknown [10.113.40.46])
 by na1pdmzitismtp02.tibco.com (Postfix) with ESMTP id D35F181A5671;
 Tue, 14 Apr 2026 09:24:36 -0400 (EDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-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: Bernhard Kaindl <bernhard.kaindl@citrix.com>
To: xen-devel@lists.xenproject.org
Cc: Bernhard Kaindl <bernhard.kaindl@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.pau@citrix.com>,
	Stefano Stabellini <sstabellini@kernel.org>
Subject: [PATCH v6 2/7] xen/mm: Allow free pages to cover a claims shortfall
Date: Tue, 14 Apr 2026 14:22:46 +0100
Message-Id: <5d1e06a0fcaee4520bf79d58199e447194f84fe8.1776172526.git.bernhard.kaindl@citrix.com>
X-Mailer: git-send-email 2.39.5
In-Reply-To: <cover.1776172526.git.bernhard.kaindl@citrix.com>
References: <cover.1776172526.git.bernhard.kaindl@citrix.com>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit
X-purgate-ID: tlsNG-42698a/1776173133-ED9512A1-8F1A5C29/0/0
X-purgate-type: clean
X-purgate-size: 3086

Allow an allocation to proceed when free, unclaimed memory can cover a
claims shortfall.

In preparation for NUMA-aware claims, refactor this check into a
reusable helper so the same logic can be applied to NUMA nodes.

Suggested-by: Jan Beulich <jbeulich@suse.com>
Signed-off-by: Bernhard Kaindl <bernhard.kaindl@citrix.com>

---

Changes since v4: Extracted into a dedicated patch and merged the
formerly separate functions into one, as suggested by Jan Beulich.

Signed-off-by: Bernhard Kaindl <bernhard.kaindl@citrix.com>
---
 xen/common/page_alloc.c | 41 ++++++++++++++++++++++++++++++++++++++---
 1 file changed, 38 insertions(+), 3 deletions(-)

diff --git a/xen/common/page_alloc.c b/xen/common/page_alloc.c
index 80577aa4d50c..a67839413319 100644
--- a/xen/common/page_alloc.c
+++ b/xen/common/page_alloc.c
@@ -868,6 +868,42 @@ static void check_and_stop_scrub(struct page_info *head)
     }
 }
 
+/*
+ * Allow the request when unclaimed pages suffice, or when a refcounted
+ * domain's outstanding claims cover the shortfall.
+ */
+static bool claims_permit_request(const struct domain *d,
+                                  unsigned long avail_pages,
+                                  unsigned long competing_claims,
+                                  unsigned int memflags,
+                                  unsigned long requested_pages)
+{
+    unsigned long unclaimed_pages;
+
+    ASSERT(spin_is_locked(&heap_lock));
+    ASSERT(avail_pages >= competing_claims);
+
+    /* Start from the free pages not already claimed by other domains. */
+    unclaimed_pages = avail_pages - competing_claims;
+
+    /* Allow the request to proceed when unclaimed pages suffice. */
+    if ( requested_pages <= unclaimed_pages )
+        return true;
+
+    /*
+     * If unclaimed pages are insufficient, only a refcounted domain allocation
+     * may use claims to cover the shortfall.
+     */
+    if ( !d || (memflags & MEMF_no_refcount) )
+        return false;
+
+    /*
+     * Allow the request to proceed when combination of unclaimed pages and the
+     * claims held by the domain cover the shortfall for the requested_pages.
+     */
+    return requested_pages <= unclaimed_pages + d->outstanding_pages;
+}
+
 static struct page_info *get_free_buddy(unsigned int zone_lo,
                                         unsigned int zone_hi,
                                         unsigned int order, unsigned int memflags,
@@ -1012,9 +1048,8 @@ static struct page_info *alloc_heap_pages(
      * Claimed memory is considered unavailable unless the request
      * is made by a domain with sufficient unclaimed pages.
      */
-    if ( (outstanding_claims + request > total_avail_pages) &&
-          ((memflags & MEMF_no_refcount) ||
-           !d || d->outstanding_pages < request) )
+    if ( !claims_permit_request(d, total_avail_pages, outstanding_claims,
+                                memflags, request) )
     {
         spin_unlock(&heap_lock);
         return NULL;
-- 
2.39.5



From xen-devel-bounces@lists.xenproject.org Tue Apr 14 13:26:37 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 14 Apr 2026 13:26:37 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1281823.1564657 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wCdmm-000246-U2; Tue, 14 Apr 2026 13:26:36 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1281823.1564657; Tue, 14 Apr 2026 13:26: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 1wCdmm-00023z-RL; Tue, 14 Apr 2026 13:26:36 +0000
Received: by outflank-mailman (input) for mailman id 1281823;
 Tue, 14 Apr 2026 13:26:35 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <bernhard.kaindl@citrix.com>) id 1wCdml-00023r-K7
 for xen-devel@lists.xenproject.org; Tue, 14 Apr 2026 13:26:35 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wCdmk-00GLlP-Ve
 for xen-devel@lists.xenproject.org; Tue, 14 Apr 2026 15:26:35 +0200
Received: from [10.42.69.6] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <bernhard.kaindl@citrix.com>)
 id 69de407e-bab6-0a2a0a5309dd-0a2a4506d774-42
 for <xen-devel@lists.xenproject.org>; Tue, 14 Apr 2026 15:26:34 +0200
Received: from [160.101.131.8] (helo=na1pdmzitismtp01.tibco.com)
 by tlsNG-16d1c6.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.0)
 (envelope-from <bernhard.kaindl@citrix.com>)
 id 69de4089-0df0-0a2a45060019-a06583088930-3
 for <xen-devel@lists.xenproject.org>; Tue, 14 Apr 2026 15:26:34 +0200
Received: from debian.eng.citrite.net (unknown [10.113.40.46])
 by na1pdmzitismtp01.tibco.com (Postfix) with ESMTP id 9FBB6424A7AA;
 Tue, 14 Apr 2026 09:25:50 -0400 (EDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-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: Bernhard Kaindl <bernhard.kaindl@citrix.com>
To: xen-devel@lists.xenproject.org
Cc: Bernhard Kaindl <bernhard.kaindl@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.pau@citrix.com>,
	Stefano Stabellini <sstabellini@kernel.org>,
	Alejandro Vallejo <alejandro.vallejo@cloud.com>
Subject: [PATCH v6 3/7] xen/mm: Optimise getting free page counts per NUMA node
Date: Tue, 14 Apr 2026 14:22:47 +0100
Message-Id: <a205d6fbffca96889e63f3359e8d86eba3fd667d.1776172526.git.bernhard.kaindl@citrix.com>
X-Mailer: git-send-email 2.39.5
In-Reply-To: <cover.1776172526.git.bernhard.kaindl@citrix.com>
References: <cover.1776172526.git.bernhard.kaindl@citrix.com>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit
X-purgate-ID: tlsNG-16d1c6/1776173194-5DB2B3D8-A3F06007/0/0
X-purgate-type: clean
X-purgate-size: 3131

From: Alejandro Vallejo <alejandro.vallejo@cloud.com>

Introduce per-node free page counters to improve the efficiency of
avail_node_heap_pages():

- It no longer needs to iterate over all zones in a node.

- It is used by the numainfo hypercall and the debug key 'u' to display
  NUMA information in the printk buffer.

- It will also be needed by node-specific claims to determine the
  number of free pages in a node in the hot path of get_free_buddy()
  without looping over all zones.

No functional change.

Signed-off-by: Alejandro Vallejo <alejandro.vallejo@cloud.com>
Signed-off-by: Bernhard Kaindl <bernhard.kaindl@citrix.com>

---

Applied Jan's review:
https://lists.xenproject.org/archives/html/xen-devel/2026-03/msg00144.html

Changes:
- Removed accessor macro
- Abandoned conversion to unsigned long
---
 xen/common/page_alloc.c | 19 ++++++++++++++++++-
 1 file changed, 18 insertions(+), 1 deletion(-)

diff --git a/xen/common/page_alloc.c b/xen/common/page_alloc.c
index a67839413319..28c424072d25 100644
--- a/xen/common/page_alloc.c
+++ b/xen/common/page_alloc.c
@@ -485,7 +485,20 @@ static unsigned long node_need_scrub[MAX_NUMNODES];
 
 static unsigned long *avail[MAX_NUMNODES];
 static long total_avail_pages;
+/*
+ * Sum of the free pages in all zones of that node.
+ * Provided via sysctl by NUMA node placement decisions of domain builders and
+ * for monitoring. It is also logged with debug-key 'u' for NUMA debugging.
+ */
+static long node_avail_pages[MAX_NUMNODES];
 
+/*
+ * The global heap lock, protecting access to the heap and related structures.
+ * It protects the heap and claims of the buddy allocator and d->*claims.
+ * The locking order is: d->page_alloc_lock (optional) -> heap_lock
+ * - Numerous external callers holding d->page_alloc_lock call functions
+ *   taking the heap_lock. Note: Violating it would cause an ABBA deadlock.
+ */
 static DEFINE_SPINLOCK(heap_lock);
 static long outstanding_claims; /* total outstanding claims by all domains */
 
@@ -1092,6 +1105,8 @@ static struct page_info *alloc_heap_pages(
         }
     }
 
+    ASSERT(node_avail_pages[node] >= request);
+    node_avail_pages[node] -= request;
     ASSERT(avail[node][zone] >= request);
     avail[node][zone] -= request;
     total_avail_pages -= request;
@@ -1282,6 +1297,7 @@ static int reserve_offlined_page(struct page_info *head)
         if ( !page_state_is(cur_head, offlined) )
             continue;
 
+        node_avail_pages[node]--;
         avail[node][zone]--;
         total_avail_pages--;
         ASSERT(total_avail_pages >= 0);
@@ -1606,6 +1622,7 @@ static void free_heap_pages(
         }
     }
 
+    node_avail_pages[node] += 1 << order;
     avail[node][zone] += 1 << order;
     total_avail_pages += 1 << order;
     if ( need_scrub )
@@ -2873,7 +2890,7 @@ unsigned long avail_domheap_pages_region(
 
 unsigned long avail_node_heap_pages(unsigned int nodeid)
 {
-    return avail_heap_pages(MEMZONE_XEN, NR_ZONES -1, nodeid);
+    return node_avail_pages[nodeid];
 }
 
 
-- 
2.39.5



From xen-devel-bounces@lists.xenproject.org Tue Apr 14 13:27:25 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 14 Apr 2026 13:27:25 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1281855.1564667 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wCdnZ-0002cb-6i; Tue, 14 Apr 2026 13:27:25 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1281855.1564667; Tue, 14 Apr 2026 13:27: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 1wCdnZ-0002cU-3r; Tue, 14 Apr 2026 13:27:25 +0000
Received: by outflank-mailman (input) for mailman id 1281855;
 Tue, 14 Apr 2026 13:27:24 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <bernhard.kaindl@citrix.com>) id 1wCdnX-0002cA-SR
 for xen-devel@lists.xenproject.org; Tue, 14 Apr 2026 13:27:23 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wCdnV-006tG8-NV
 for xen-devel@lists.xenproject.org; Tue, 14 Apr 2026 15:27:23 +0200
Received: from [10.42.69.4] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <bernhard.kaindl@citrix.com>)
 id 69de40b9-5cb7-0a2a0a5109dd-0a2a450487f8-14
 for <xen-devel@lists.xenproject.org>; Tue, 14 Apr 2026 15:27:23 +0200
Received: from [160.101.131.9] (helo=na1pdmzitismtp02.tibco.com)
 by tlsNG-ebf023.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.0)
 (envelope-from <bernhard.kaindl@citrix.com>)
 id 69de40ba-bb33-0a2a45040019-a0658309c394-3
 for <xen-devel@lists.xenproject.org>; Tue, 14 Apr 2026 15:27:23 +0200
Received: from debian.eng.citrite.net (unknown [10.113.40.46])
 by na1pdmzitismtp02.tibco.com (Postfix) with ESMTP id C4BE581A567F;
 Tue, 14 Apr 2026 09:26:28 -0400 (EDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-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: Bernhard Kaindl <bernhard.kaindl@citrix.com>
To: xen-devel@lists.xenproject.org
Cc: Bernhard Kaindl <bernhard.kaindl@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.pau@citrix.com>,
	Stefano Stabellini <sstabellini@kernel.org>
Subject: [PATCH v6 4/7] xen/mm: Split outstanding claims into global and node totals
Date: Tue, 14 Apr 2026 14:22:48 +0100
Message-Id: <e7e95f2476f1f6636f2f31618891be6c087996de.1776172526.git.bernhard.kaindl@citrix.com>
X-Mailer: git-send-email 2.39.5
In-Reply-To: <cover.1776172526.git.bernhard.kaindl@citrix.com>
References: <cover.1776172526.git.bernhard.kaindl@citrix.com>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit
X-purgate-ID: tlsNG-ebf023/1776173243-3152351B-B3EE361C/0/0
X-purgate-type: clean
X-purgate-size: 6513

Replace d->outstanding_pages with d->global_claims and add
d->node_claims as the aggregate of the domain's node-specific claims.

Keep the allocator hot path efficient and report the combined claims
state using the two new fields.

No functional change.

Signed-off-by: Bernhard Kaindl <bernhard.kaindl@citrix.com>
---
 xen/common/domctl.c     |  2 +-
 xen/common/page_alloc.c | 33 ++++++++++++++++-----------------
 xen/include/xen/sched.h |  7 +++++--
 3 files changed, 22 insertions(+), 20 deletions(-)

diff --git a/xen/common/domctl.c b/xen/common/domctl.c
index 93738931c575..2cc5a4ff32fd 100644
--- a/xen/common/domctl.c
+++ b/xen/common/domctl.c
@@ -97,7 +97,7 @@ void getdomaininfo(struct domain *d, struct xen_domctl_getdomaininfo *info)
 
     info->tot_pages         = domain_tot_pages(d);
     info->max_pages         = d->max_pages;
-    info->outstanding_pages = d->outstanding_pages;
+    info->outstanding_pages = d->global_claims + d->node_claims;
 #ifdef CONFIG_MEM_SHARING
     info->shr_pages         = atomic_read(&d->shr_pages);
 #endif
diff --git a/xen/common/page_alloc.c b/xen/common/page_alloc.c
index 28c424072d25..ee4942f93373 100644
--- a/xen/common/page_alloc.c
+++ b/xen/common/page_alloc.c
@@ -535,11 +535,11 @@ unsigned long domain_adjust_tot_pages(struct domain *d, long pages)
 static unsigned long deduct_global_claims(struct domain *d,
                                           unsigned long reduction)
 {
-    reduction = min(reduction, d->outstanding_pages + 0UL);
+    reduction = min(reduction, d->global_claims + 0UL);
     ASSERT(reduction <= outstanding_claims);
 
     outstanding_claims -= reduction;
-    d->outstanding_pages -= reduction;
+    d->global_claims -= reduction;
 
     return reduction;
 }
@@ -552,8 +552,7 @@ int domain_set_outstanding_pages(struct domain *d, unsigned long pages)
     /*
      * Two locks are needed here:
      *  - d->page_alloc_lock: protects accesses to d->{tot,max,extra}_pages.
-     *  - heap_lock: protects accesses to d->outstanding_pages, total_avail_pages
-     *    and outstanding_claims.
+     *  - heap_lock: Protects accesses to the claims and avail_pages state.
      */
     nrspin_lock(&d->page_alloc_lock);
     spin_lock(&heap_lock);
@@ -561,13 +560,13 @@ int domain_set_outstanding_pages(struct domain *d, unsigned long pages)
     /* pages==0 means "unset" the claim. */
     if ( pages == 0 )
     {
-        deduct_global_claims(d, d->outstanding_pages);
+        deduct_global_claims(d, d->global_claims);
         ret = 0;
         goto out;
     }
 
-    /* only one active claim per domain please */
-    if ( d->outstanding_pages )
+    /* Reject updating global claims and we can't update node claims */
+    if ( d->global_claims || d->node_claims )
     {
         ret = -EINVAL;
         goto out;
@@ -594,8 +593,8 @@ int domain_set_outstanding_pages(struct domain *d, unsigned long pages)
         goto out;
 
     /* yay, claim fits in available memory, stake the claim, success! */
-    d->outstanding_pages = claim;
-    outstanding_claims += d->outstanding_pages;
+    d->global_claims = claim;
+    outstanding_claims += claim;
     ret = 0;
 
 out:
@@ -891,7 +890,7 @@ static bool claims_permit_request(const struct domain *d,
                                   unsigned int memflags,
                                   unsigned long requested_pages)
 {
-    unsigned long unclaimed_pages;
+    unsigned long unclaimed_pages, applicable_claims;
 
     ASSERT(spin_is_locked(&heap_lock));
     ASSERT(avail_pages >= competing_claims);
@@ -910,11 +909,13 @@ static bool claims_permit_request(const struct domain *d,
     if ( !d || (memflags & MEMF_no_refcount) )
         return false;
 
+    applicable_claims = d->global_claims;
+
     /*
      * Allow the request to proceed when combination of unclaimed pages and the
      * claims held by the domain cover the shortfall for the requested_pages.
      */
-    return requested_pages <= unclaimed_pages + d->outstanding_pages;
+    return requested_pages <= unclaimed_pages + applicable_claims;
 }
 
 static struct page_info *get_free_buddy(unsigned int zone_lo,
@@ -1112,18 +1113,16 @@ static struct page_info *alloc_heap_pages(
     total_avail_pages -= request;
     ASSERT(total_avail_pages >= 0);
 
-    if ( d && d->outstanding_pages && !(memflags & MEMF_no_refcount) )
+    if ( d && d->global_claims && !(memflags & MEMF_no_refcount) )
     {
         /*
          * Adjust claims in the same locked region where total_avail_pages is
          * adjusted, not doing so would lead to a window where the amount of
          * free memory (avail - claimed) would be incorrect.
          *
-         * Note that by adjusting the claimed amount here it's possible for
-         * pages to fail to be assigned to the claiming domain while already
-         * having been subtracted from d->outstanding_pages.  Such claimed
-         * amount is then lost, as the pages that fail to be assigned to the
-         * domain are freed without replenishing the claim.  This is fine given
+         * Note, after redeeming claims for the allocation here, assign_pages()
+         * could fail. The domain looses The redeemed claims as the not assigned
+         * pages are freed without replenishing the claim.  This is fine given
          * claims are only to be used during physmap population as part of
          * domain build, and any failure in assign_pages() there will result in
          * the domain being destroyed before creation is finished.  Losing part
diff --git a/xen/include/xen/sched.h b/xen/include/xen/sched.h
index 212c7d765c3e..2995c99aa34a 100644
--- a/xen/include/xen/sched.h
+++ b/xen/include/xen/sched.h
@@ -413,8 +413,11 @@ struct domain
     unsigned int     tot_pages;
 
     unsigned int     xenheap_pages;     /* pages allocated from Xen heap */
-    /* Pages claimed but not possessed, protected by global heap_lock. */
-    unsigned int     outstanding_pages;
+
+    /* All claims are protected by the heap_lock */
+    unsigned int     global_claims;     /* Global Host-level claims */
+    unsigned int     node_claims;       /* Sum of the Node-specific claims */
+
     unsigned int     max_pages;         /* maximum value for domain_tot_pages() */
     unsigned int     extra_pages;       /* pages not included in domain_tot_pages() */
 
-- 
2.39.5



From xen-devel-bounces@lists.xenproject.org Tue Apr 14 13:28:13 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 14 Apr 2026 13:28:13 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1281881.1564677 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wCdoJ-0003CD-JE; Tue, 14 Apr 2026 13:28:11 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1281881.1564677; Tue, 14 Apr 2026 13:28: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 1wCdoJ-0003C5-FB; Tue, 14 Apr 2026 13:28:11 +0000
Received: by outflank-mailman (input) for mailman id 1281881;
 Tue, 14 Apr 2026 13:28:10 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <bernhard.kaindl@citrix.com>) id 1wCdoH-0003Bv-Q2
 for xen-devel@lists.xenproject.org; Tue, 14 Apr 2026 13:28:10 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wCdoH-00BM0p-6y
 for xen-devel@lists.xenproject.org; Tue, 14 Apr 2026 15:28:09 +0200
Received: from [10.42.69.9] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <bernhard.kaindl@citrix.com>)
 id 69de40e3-5cb7-0a2a0a5109dd-0a2a4509d356-10
 for <xen-devel@lists.xenproject.org>; Tue, 14 Apr 2026 15:28:09 +0200
Received: from [160.101.131.9] (helo=na1pdmzitismtp02.tibco.com)
 by tlsNG-bad1c0.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.0)
 (envelope-from <bernhard.kaindl@citrix.com>)
 id 69de40e8-bf79-0a2a45090019-a0658309dd12-3
 for <xen-devel@lists.xenproject.org>; Tue, 14 Apr 2026 15:28:08 +0200
Received: from debian.eng.citrite.net (unknown [10.113.40.46])
 by na1pdmzitismtp02.tibco.com (Postfix) with ESMTP id 2D56481A5881;
 Tue, 14 Apr 2026 09:27:14 -0400 (EDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-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: Bernhard Kaindl <bernhard.kaindl@citrix.com>
To: xen-devel@lists.xenproject.org
Cc: Bernhard Kaindl <bernhard.kaindl@citrix.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>,
	=?UTF-8?q?Roger=20Pau=20Monn=C3=A9?= <roger.pau@citrix.com>,
	Stefano Stabellini <sstabellini@kernel.org>,
	"Daniel P. Smith" <dpsmith@apertussolutions.com>,
	Marcus Granado <marcus.granado@citrix.com>,
	Alejandro Vallejo <alejandro.vallejo@cloud.com>
Subject: [PATCH v6 5/7] xen/mm: Introduce NUMA-aware memory claim sets
Date: Tue, 14 Apr 2026 14:22:49 +0100
Message-Id: <9557995cdab48481b7276443cbae11b00ef03c2e.1776172526.git.bernhard.kaindl@citrix.com>
X-Mailer: git-send-email 2.39.5
In-Reply-To: <cover.1776172526.git.bernhard.kaindl@citrix.com>
References: <cover.1776172526.git.bernhard.kaindl@citrix.com>
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
X-purgate-ID: tlsNG-bad1c0/1776173289-5D1F5152-81BCB725/0/0
X-purgate-type: clean
X-purgate-size: 28667

Extend Xen's memory claim handling to support claim sets spanning
multiple NUMA nodes.

Earlier review raised the concern that claims would need to evolve from a
single claim into a multi-node model. Roger Pau Monné described the core
requirement well:

  >  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.

      -- Roger Pau Monné

Implement that model.

A claim set can contain multiple node-specific claims and an optional
global 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,
3. redeeming claims for allocations with claims,
4. while keeping the legacy claim interface without functional changes.

Suggested-by: Jan Beulich <jbeulich@suse.com>
Suggested-by: Marcus Granado <marcus.granado@citrix.com>
Signed-off-by: Alejandro Vallejo <alejandro.vallejo@cloud.com>
Signed-off-by: Roger Pau Monné <roger.pau@citrix.com>
Signed-off-by: Bernhard Kaindl <bernhard.kaindl@citrix.com>

---
The v2 design document submitted ahead of this series may help with review.
It explains the background, design rationale, and implementation details.

Rendered version:
https://bernhard-xen.readthedocs.io/en/claim-sets-v2-design/designs/claims

Many thanks to everyone who contributed to the earlier work and review,
especially Alejandro Vallejo, Jan Beulich, Andrew Cooper, Roger Pau
Monné, Marcus Granado, and Edwin Török.

Thanks,

  Bernhard
---
 tools/include/xenctrl.h             |   4 +
 tools/libs/ctrl/xc_domain.c         |  38 ++++
 xen/common/domctl.c                 |  54 ++++++
 xen/common/page_alloc.c             | 277 +++++++++++++++++++++++++++-
 xen/include/public/domctl.h         |  32 ++++
 xen/include/public/memory.h         |   9 +
 xen/include/xen/mm.h                |   3 +
 xen/include/xen/sched.h             |   6 +
 xen/xsm/flask/hooks.c               |   1 +
 xen/xsm/flask/policy/access_vectors |   1 +
 10 files changed, 420 insertions(+), 5 deletions(-)

diff --git a/tools/include/xenctrl.h b/tools/include/xenctrl.h
index d5dbf69c8968..a0a9f2143b32 100644
--- a/tools/include/xenctrl.h
+++ b/tools/include/xenctrl.h
@@ -2659,6 +2659,10 @@ int xc_domain_set_llc_colors(xc_interface *xch, uint32_t domid,
                              const uint32_t *llc_colors,
                              uint32_t num_llc_colors);
 
+int xc_domain_claim_memory(xc_interface *xch, uint32_t domid,
+                           uint32_t nr_claims,
+                           memory_claim_t *claims);
+
 #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 01c0669c8863..32cd91187d44 100644
--- a/tools/libs/ctrl/xc_domain.c
+++ b/tools/libs/ctrl/xc_domain.c
@@ -1070,6 +1070,44 @@ int xc_domain_remove_from_physmap(xc_interface *xch,
     return xc_memory_op(xch, XENMEM_remove_from_physmap, &xrfp, sizeof(xrfp));
 }
 
+/* Claim the guest memory for a domain before starting the domain build */
+int xc_domain_claim_memory(xc_interface *xch,
+                           uint32_t domid,
+                           uint32_t nr_claims,
+                           memory_claim_t *claims)
+{
+    struct xen_domctl domctl = {};
+    DECLARE_HYPERCALL_BOUNCE(claims, sizeof(*claims) * nr_claims,
+                             XC_HYPERCALL_BUFFER_BOUNCE_IN);
+    int ret;
+
+    if ( xc_hypercall_bounce_pre(xch, claims) )
+        return -1;
+
+    domctl.cmd = XEN_DOMCTL_claim_memory;
+    domctl.domain = domid;
+    domctl.u.claim_memory.nr_claims = nr_claims;
+    set_xen_guest_handle(domctl.u.claim_memory.claims, claims);
+
+    ret = do_domctl(xch, &domctl);
+
+    xc_hypercall_bounce_post(xch, claims);
+
+    return ret;
+}
+
+/*
+ * Legacy API for claiming pages, replaced by xc_domain_claim_memory()
+ *
+ * Note: This hypercall is deprecated by xc_domain_claim_memory()
+ * which provides the same claim semantics described above, and thus can be
+ * used as drop-in replacement and is extended for NUMA-node-specific claims.
+ * This hypercall should not be used by new code.
+ *
+ * See the following documentation pages for more information:
+ * docs/guest-guide/dom/DOMCTL_claim_memory.rst
+ * docs/guest-guide/mem/XENMEM_claim_pages.rst
+ */
 int xc_domain_claim_pages(xc_interface *xch,
                                uint32_t domid,
                                unsigned long nr_pages)
diff --git a/xen/common/domctl.c b/xen/common/domctl.c
index 2cc5a4ff32fd..16d239c75bde 100644
--- a/xen/common/domctl.c
+++ b/xen/common/domctl.c
@@ -51,6 +51,51 @@ static int xenctl_bitmap_to_nodemask(nodemask_t *nodemask,
                                    MAX_NUMNODES);
 }
 
+/* Claim memory for a domain (or if a claim exists, release the claim) */
+static int claim_memory(struct domain *d,
+    const struct xen_domctl_claim_memory *uinfo)
+{
+    memory_claim_t *claims;
+    int rc = -EFAULT;
+
+    /* alloc_color_heap_page() does not handle claims, reject LLC coloring. */
+    if ( llc_coloring_enabled )
+        return -EOPNOTSUPP;
+
+    if ( !uinfo->nr_claims || uinfo->pad )
+        return -EINVAL;
+
+    /* Only calls for the supported number of nodes + a global claim can pass */
+    if ( uinfo->nr_claims > MAX_NUMNODES + 1 )
+        return -E2BIG;
+
+    /*
+     * Under domctl_lock, domain_kill() sets d->is_dying and retires claims.
+     * If it set, this is in the past and we should reject the claim request.
+     */
+    if ( d->is_dying )
+        return -ESRCH;
+
+    claims = xmalloc_array(memory_claim_t, uinfo->nr_claims);
+    if ( claims == NULL )
+        return -ENOMEM;
+
+    if ( copy_from_guest(claims, uinfo->claims, uinfo->nr_claims) )
+        goto out;
+
+    rc = -EINVAL; /* Default error code for invalid claim args */
+    if ( claims[0].target == XEN_DOMCTL_CLAIM_MEMORY_LEGACY &&
+         uinfo->nr_claims == 1 )
+        /* Implement installing a legacy claim for backwards compatibility */
+        rc = domain_set_outstanding_pages(d, claims[0].pages);
+    else
+        /* domain_install_claim_set() performs validation of the claim set */
+        rc = domain_install_claim_set(d, uinfo->nr_claims, claims);
+ out:
+    xfree(claims);
+    return rc;
+}
+
 void getdomaininfo(struct domain *d, struct xen_domctl_getdomaininfo *info)
 {
     struct vcpu *v;
@@ -865,6 +910,15 @@ long do_domctl(XEN_GUEST_HANDLE_PARAM(xen_domctl_t) u_domctl)
             copyback = true;
         break;
 
+    case XEN_DOMCTL_claim_memory:
+        /* Use the same XSM hook as XENMEM_claim_pages */
+        ret = xsm_claim_pages(XSM_PRIV, d);
+        if ( ret )
+            break;
+
+        ret = claim_memory(d, &op->u.claim_memory);
+        break;
+
     default:
         ret = arch_do_domctl(op, d, u_domctl);
         break;
diff --git a/xen/common/page_alloc.c b/xen/common/page_alloc.c
index ee4942f93373..6101bd6be9a9 100644
--- a/xen/common/page_alloc.c
+++ b/xen/common/page_alloc.c
@@ -502,6 +502,9 @@ static long node_avail_pages[MAX_NUMNODES];
 static DEFINE_SPINLOCK(heap_lock);
 static long outstanding_claims; /* total outstanding claims by all domains */
 
+/* Sum of the outstanding claims of all domains on that node. */
+static long node_outstanding_claims[MAX_NUMNODES];
+
 static unsigned long avail_heap_pages(
     unsigned int zone_lo, unsigned int zone_hi, unsigned int node)
 {
@@ -544,6 +547,164 @@ static unsigned long deduct_global_claims(struct domain *d,
     return reduction;
 }
 
+/* Release outstanding claims on a specific node */
+static unsigned long deduct_node_claims(struct domain *d, nodeid_t node,
+                                        unsigned long release)
+{
+    unsigned long consumed = 0;
+
+    /* If the allocation was larger than the claims, do not release beyond it */
+    if ( d->claims[node] ) /* Release the claims for this node */
+    {
+        /* Use min_t for clarity to make the comparison type explicit */
+        consumed = min_t(unsigned long, release, d->claims[node]);
+        d->claims[node] -= consumed;
+
+        ASSERT(consumed <= outstanding_claims);
+        outstanding_claims -= consumed;
+
+        ASSERT(consumed <= node_outstanding_claims[node]);
+        node_outstanding_claims[node] -= consumed;
+
+        ASSERT(consumed <= d->node_claims);
+        d->node_claims -= consumed;
+    }
+    return consumed;
+}
+
+/* Release all outstanding claims on all online nodes */
+static void cancel_all_node_claims(struct domain *d)
+{
+    nodeid_t node;
+
+    for_each_online_node ( node )
+    {
+        if ( !d->node_claims )
+            return;
+        deduct_node_claims(d, node, d->claims[node]);
+    }
+}
+
+/* Validate a claim set and install it if valid. */
+int domain_install_claim_set(struct domain *d, unsigned int nr_claims,
+                             memory_claim_t *claim_set)
+{
+    nodemask_t nodes;
+    uint32_t target;
+    uint64_t pages, tot_pages, max_pages, node_requests = 0, global_request = 0;
+    bool global_target_seen = false;
+    int ret = -EINVAL;
+
+    nrspin_lock(&d->page_alloc_lock);
+    spin_lock(&heap_lock);
+
+    /*
+     * Phase 1: Check and process the individual claim entries.
+     * Result: Extracted global claims and the sum of the node-local claims.
+     */
+    nodes_clear(nodes);
+    for ( int i = 0; i < nr_claims; i++ )
+    {
+        target = claim_set[i].target;
+        pages = claim_set[i].pages;
+        if ( claim_set[i].pad ) /* Check before handling global claims */
+            goto out;
+
+        if ( target == XEN_DOMCTL_CLAIM_MEMORY_GLOBAL )
+        {
+            if ( global_target_seen ) /* Only one global target allowed */
+                goto out;
+
+            global_request = pages; /* Will be checked with the total claims */
+            global_target_seen = true;
+            continue;
+        }
+
+        if ( target >= MAX_NUMNODES || !node_online(target) )
+        {
+            ret = -ENOENT; /* Node not valid or not online */
+            goto out;
+        }
+        if ( nodemask_test(target, &nodes) || /* Duplicate node in claim set */
+             /* Check for overflow before we add the pages to node_requests */
+             pages > ((typeof(d->node_claims))-1) - node_requests )
+            goto out;
+        node_set(target, nodes);
+
+        ASSERT(node_outstanding_claims[target] >= 0 &&
+               node_avail_pages[target] >= node_outstanding_claims[target]);
+        if ( pages > (uint64_t)(node_avail_pages[target] -
+                                node_outstanding_claims[target]) +
+                         d->claims[target] ) /* current claim deduction */
+        {
+            ret = -ENOMEM; /* Claim exceeds available memory on node */
+            goto out;
+        }
+        node_requests += pages; /* Will be checked with the total claims */
+    }
+
+    max_pages = d->max_pages;
+    tot_pages = domain_tot_pages(d);
+    /*
+     * Check that the total of claims and current pages fits in d->max_pages.
+     * Subtract sequentially from max_pages instead of adding the claims:
+     * each subtraction is safe because the prior comparison guarantees
+     * the subtrahend doesn't exceed the remaining budget. This avoids
+     * overflow regardless of the type widths of the claims and max_pages,
+     * as long as the claims are non-negative (which they are, as unsigned)
+     * and max_pages is not negative, which we check as well here.
+     */
+    if ( global_request > max_pages ||
+         node_requests > max_pages - global_request ||
+         tot_pages > max_pages - global_request - node_requests )
+        goto out; /* claims + domain_tot_pages exceeds max_pages: EINVAL */
+
+    /* States the invariants we are committed to for the next check */
+    ASSERT(outstanding_claims >= 0 && total_avail_pages >= outstanding_claims);
+    /*
+     * Ensure swapping claims fits into the global unclaimed pages:
+     *
+     * Compare the new claims (global_request + node_requests) against the
+     * available unclaimed memory (total_avail_pages - outstanding_claims)
+     * plus the domain's current claims (d->global_claims + d->node_claims)
+     * because they will be deducted when installing the new claim state.
+     */
+    if ( global_request + node_requests >
+         (uint64_t)(total_avail_pages - outstanding_claims) + d->global_claims +
+         d->node_claims )
+    {
+        ret = -ENOMEM;
+        goto out; /* Claim update exceeds available unclaimed memory: ENOMEM */
+    }
+
+    /* Phase 3: Remove the old claims before installing the new claims */
+    deduct_global_claims(d, d->global_claims);
+    cancel_all_node_claims(d);
+
+    /* Phase 4: Install new claims: Global claims and overall node claims */
+    outstanding_claims += global_request + node_requests;
+    d->global_claims = global_request;
+    d->node_claims = node_requests;
+
+    /* Phase 5: Install the individual node claims */
+    for ( int i = 0; i < nr_claims; i++ )
+    {
+        target = claim_set[i].target;
+        pages = claim_set[i].pages;
+        if ( target >= MAX_NUMNODES ) /* Skip non-node claim targets */
+            continue;
+
+        /* Install the node claim and update the node's total claims claims. */
+        d->claims[target] = pages;
+        node_outstanding_claims[target] += pages;
+    }
+    ret = 0;
+out:
+    spin_unlock(&heap_lock);
+    nrspin_unlock(&d->page_alloc_lock);
+    return ret;
+}
+
 int domain_set_outstanding_pages(struct domain *d, unsigned long pages)
 {
     int ret = -ENOMEM;
@@ -560,6 +721,7 @@ int domain_set_outstanding_pages(struct domain *d, unsigned long pages)
     /* pages==0 means "unset" the claim. */
     if ( pages == 0 )
     {
+        cancel_all_node_claims(d);
         deduct_global_claims(d, d->global_claims);
         ret = 0;
         goto out;
@@ -603,6 +765,85 @@ out:
     return ret;
 }
 
+/*
+ * Redeem the claims to cover a successful allocation.
+ *
+ * The claims for an allocation are redeemed in order of specificity:
+ *
+ * 1.) Firstly, the claim for the node the allocation was from (if any),
+ * 2.) Secondly, followed by global claims as a fallback (if any), and
+ * 3.) Finally, other remaining node claims from other nodes (if any).
+ *
+ * This order ensures that the most specific claims are redeemed first,
+ * and that the global claim is only used as a fallback if the node-specific
+ * claim is insufficient to cover the allocation or non-existant in case
+ * the domain doesn't have a claim on the alloc_node. This preserves the
+ * intent of the claims system to allow domains to reserve memory on
+ * specific nodes and only use global claims as a fallback when necessary.
+ *
+ * Finally, if the domain doesn't have sufficient claims on the alloc_node
+ * and the global fallback claim doesn't cover the remains of the allocation,
+ * but as the domain still has other claims, redeem the remaining portion
+ * of the allocation from those claims.
+ *
+ * This final step ensures that the domain's total claims (global + node
+ * claims) are always redeemed to cover the allocation, which in turn
+ * prevents domain_tot_pages(d) + d->global_claims + d->node_claims
+ * from exceeding the domain's d->max_pages limit.
+ *
+ * If this final step was not taken, then it would be possible for a domain to
+ * block off more than its share of system memory as defined by d->max_pages.
+ *
+ * Note: We can't reliably check d->max_pages here, at least not under the
+ * d->page_alloc_lock as taking it here would violate the locking order,
+ * but we can ensure that the domain's claims are always redeemed to cover
+ * the allocation, which is sufficient to preserve the intent of d->max_pages
+ * cap the domain's memory usage and claims to d->max_pages. While we could
+ * add checking it without lock as a best effort check, a domain builder is
+ * not supposed to claim memory on one set of nodes and then allocate from
+ * another set of nodes, so it would not be meaningful to add such a check,
+ * and the final check covers our bases to handle such misbehaviour anyway.
+ */
+static void redeem_claims_for_allocation(struct domain *d,
+                                         unsigned long pages_to_redeem,
+                                         nodeid_t alloc_node)
+{
+    ASSERT(spin_is_locked(&heap_lock));
+
+    /* 1.) Redeem the allocation from the alloc_node's claim insofar possible */
+    if ( d->claims[alloc_node] )
+    {
+        pages_to_redeem -= deduct_node_claims(d, alloc_node, pages_to_redeem);
+        if ( pages_to_redeem == 0 )
+            return; /* The allocation is fully consumed by alloc_node claim */
+    }
+
+    /* 2.) Redeem the unredeemed allocation from the global / fallback claims */
+    pages_to_redeem -= deduct_global_claims(d, pages_to_redeem);
+
+    if ( pages_to_redeem == 0 || !d->node_claims )
+        return; /* Allocation fully consumed or the domain has no claims left */
+
+    /*
+     * 3.) Finally, if the domain doesn't have sufficient claims on alloc_node
+     * and the global fallback claim didn't cover the remains of the allocation,
+     * consume the remaining portion of the allocation from the domain's other
+     * node claims. See the function comment for the details behind this step.
+     */
+    pages_to_redeem = min(pages_to_redeem, d->node_claims + 0UL);
+    if ( pages_to_redeem )
+    {
+        nodeid_t node;
+
+        for_each_online_node ( node )
+        {
+            pages_to_redeem -= deduct_node_claims(d, node, pages_to_redeem);
+            if ( pages_to_redeem == 0 )
+                break;
+        }
+    }
+}
+
 #ifdef CONFIG_SYSCTL
 void get_outstanding_claims(uint64_t *free_pages, uint64_t *outstanding_pages)
 {
@@ -888,7 +1129,7 @@ static bool claims_permit_request(const struct domain *d,
                                   unsigned long avail_pages,
                                   unsigned long competing_claims,
                                   unsigned int memflags,
-                                  unsigned long requested_pages)
+                                  unsigned long requested_pages, nodeid_t node)
 {
     unsigned long unclaimed_pages, applicable_claims;
 
@@ -915,6 +1156,24 @@ static bool claims_permit_request(const struct domain *d,
      * Allow the request to proceed when combination of unclaimed pages and the
      * claims held by the domain cover the shortfall for the requested_pages.
      */
+    if ( node == NUMA_NO_NODE )
+        /*
+         * We are checking global claims: For the global claims check,
+         * we apply the domain's global claims and node claims: The domain
+         * can use any of its claims to allow the global check to proceed.
+         *
+         * get_free_buddy() will repeat this check using a node which
+         * will check if either the node has enough unclaimed pages
+         * or the domain enough claims for the node (see below).
+         */
+        applicable_claims = d->node_claims + d->global_claims;
+    else
+        /*
+         * We are checking node-specific claims: For the node-specific claims
+         * check, we may only apply the domain's claim on that specific node.
+         */
+        applicable_claims = d->claims[node];
+
     return requested_pages <= unclaimed_pages + applicable_claims;
 }
 
@@ -967,9 +1226,15 @@ static struct page_info *get_free_buddy(unsigned int zone_lo,
      */
     for ( ; ; )
     {
+        /* Ensure the target node and the claims permit this allocation */
+        if ( !claims_permit_request(d, node_avail_pages[node],
+                                    node_outstanding_claims[node], memflags,
+                                    1UL << order, node) )
+            goto try_next_node;
+
         zone = zone_hi;
         do {
-            /* Check if target node can support the allocation. */
+            /* Check if this target zone on node can support the allocation. */
             if ( !avail[node] || (avail[node][zone] < (1UL << order)) )
                 continue;
 
@@ -996,6 +1261,8 @@ static struct page_info *get_free_buddy(unsigned int zone_lo,
             }
         } while ( zone-- > zone_lo ); /* careful: unsigned zone may wrap */
 
+    try_next_node:
+        /* If MEMF_exact_node was passed, we may not skip to a different node */
         if ( (memflags & MEMF_exact_node) && req_node != NUMA_NO_NODE )
             return NULL;
 
@@ -1063,7 +1330,7 @@ static struct page_info *alloc_heap_pages(
      * is made by a domain with sufficient unclaimed pages.
      */
     if ( !claims_permit_request(d, total_avail_pages, outstanding_claims,
-                                memflags, request) )
+                                memflags, request, NUMA_NO_NODE) )
     {
         spin_unlock(&heap_lock);
         return NULL;
@@ -1113,7 +1380,7 @@ static struct page_info *alloc_heap_pages(
     total_avail_pages -= request;
     ASSERT(total_avail_pages >= 0);
 
-    if ( d && d->global_claims && !(memflags & MEMF_no_refcount) )
+    if ( d && !(memflags & MEMF_no_refcount) )
     {
         /*
          * Adjust claims in the same locked region where total_avail_pages is
@@ -1128,7 +1395,7 @@ static struct page_info *alloc_heap_pages(
          * the domain being destroyed before creation is finished.  Losing part
          * of the claim makes no difference.
          */
-        deduct_global_claims(d, request);
+        redeem_claims_for_allocation(d, request, node);
     }
 
     check_low_mem_virq();
diff --git a/xen/include/public/domctl.h b/xen/include/public/domctl.h
index 8f6708c0a7cd..a4f08248e6ee 100644
--- a/xen/include/public/domctl.h
+++ b/xen/include/public/domctl.h
@@ -1276,6 +1276,36 @@ 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; /* Node and/or claim type like legacy or a global claim */
+    uint32_t pad;    /* Explicit padding: Reserved, initialize to 0 on input */
+};
+typedef struct xen_memory_claim memory_claim_t;
+DEFINE_XEN_GUEST_HANDLE(memory_claim_t);
+
+/* Special claim targets for the target field of memory_claim_t */
+#define XEN_DOMCTL_CLAIM_MEMORY_LEGACY 0x40000000U /* No node, legacy claim */
+#define XEN_DOMCTL_CLAIM_MEMORY_GLOBAL 0x80000000U /* No node, global claim */
+
+/*
+ * XEN_DOMCTL_claim_memory
+ *
+ * Claim memory for a guest domain. It sets aside an amount of memory
+ * (it is not pre-allocated) for the purpose of satisfying future memory
+ * allocation requests for building the guest's physical address space.
+ * Memory can be claimed on a set of nodes, or globally (without node
+ * affinity), or with legacy behavior. The set of claims is a claim set. See
+ * docs/guest-guide/dom/DOMCTL_claim_memory.rsti and docs/designs/claims/.
+ */
+struct xen_domctl_claim_memory {
+    /* IN: Array of struct xen_memory_claim */
+    XEN_GUEST_HANDLE_64(memory_claim_t) claims;
+    /* IN: Number of claims in the claims array handle. */
+    uint32_t nr_claims;
+    uint32_t pad;  /* Explicit padding: Reserved, initialize to 0 on input */
+};
+
 struct xen_domctl {
 /* Stable domctl ops: interface_version is required to be 0.  */
     uint32_t cmd;
@@ -1368,6 +1398,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_claim_memory                  91
 #define XEN_DOMCTL_gdbsx_guestmemio            1000
 #define XEN_DOMCTL_gdbsx_pausevcpu             1001
 #define XEN_DOMCTL_gdbsx_unpausevcpu           1002
@@ -1436,6 +1467,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_claim_memory      claim_memory;
         uint8_t                             pad[128];
     } u;
 };
diff --git a/xen/include/public/memory.h b/xen/include/public/memory.h
index bd9fc37b5297..ccec095f8660 100644
--- a/xen/include/public/memory.h
+++ b/xen/include/public/memory.h
@@ -569,6 +569,15 @@ 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 deprecated by XEN_DOMCTL_claim_memory
+ * which provides the same claim semantics described above, and thus can be
+ * used as drop-in replacement and is extended for NUMA-node-specific claims.
+ * This hypercall should not be used by new code.
+ *
+ * See the following documentation pages for more information:
+ * docs/guest-guide/dom/DOMCTL_claim_memory.rst
+ * docs/guest-guide/mem/XENMEM_claim_pages.rst
  */
 #define XENMEM_claim_pages                  24
 
diff --git a/xen/include/xen/mm.h b/xen/include/xen/mm.h
index b80bec00c124..b2d6a6f266ba 100644
--- a/xen/include/xen/mm.h
+++ b/xen/include/xen/mm.h
@@ -69,6 +69,7 @@
 #include <xen/list.h>
 #include <xen/spinlock.h>
 #include <xen/perfc.h>
+#include <public/domctl.h>
 #include <public/memory.h>
 
 struct page_info;
@@ -131,6 +132,8 @@ int populate_pt_range(unsigned long virt, unsigned long nr_mfns);
 /* Claim handling */
 unsigned long __must_check domain_adjust_tot_pages(struct domain *d,
     long pages);
+int domain_install_claim_set(struct domain *d, unsigned int nr_claims,
+                             memory_claim_t *claims);
 int domain_set_outstanding_pages(struct domain *d, unsigned long pages);
 void get_outstanding_claims(uint64_t *free_pages, uint64_t *outstanding_pages);
 
diff --git a/xen/include/xen/sched.h b/xen/include/xen/sched.h
index 2995c99aa34a..d31f4546e3b0 100644
--- a/xen/include/xen/sched.h
+++ b/xen/include/xen/sched.h
@@ -417,6 +417,12 @@ struct domain
     /* All claims are protected by the heap_lock */
     unsigned int     global_claims;     /* Global Host-level claims */
     unsigned int     node_claims;       /* Sum of the Node-specific claims */
+    /*
+     * struct domain is allocated in a dedicated page with more than enough
+     * spare capacity. It's efficient to use that page to store the
+     * per-node claims in it instead allocating a separate array for it.
+     */
+    unsigned int     claims[MAX_NUMNODES]; /* Array of per-NUMA-node claims */
 
     unsigned int     max_pages;         /* maximum value for domain_tot_pages() */
     unsigned int     extra_pages;       /* pages not included in domain_tot_pages() */
diff --git a/xen/xsm/flask/hooks.c b/xen/xsm/flask/hooks.c
index 28522dcbd271..9e999ac1ba73 100644
--- a/xen/xsm/flask/hooks.c
+++ b/xen/xsm/flask/hooks.c
@@ -651,6 +651,7 @@ static int cf_check flask_domctl(struct domain *d, unsigned int cmd,
 
     /* These have individual XSM hooks (common/domctl.c) */
     case XEN_DOMCTL_getdomaininfo:
+    case XEN_DOMCTL_claim_memory:
     case XEN_DOMCTL_scheduler_op:
     case XEN_DOMCTL_irq_permission:
     case XEN_DOMCTL_iomem_permission:
diff --git a/xen/xsm/flask/policy/access_vectors b/xen/xsm/flask/policy/access_vectors
index bbb9c117ec4a..e7defa117a16 100644
--- a/xen/xsm/flask/policy/access_vectors
+++ b/xen/xsm/flask/policy/access_vectors
@@ -216,6 +216,7 @@ class domain2
 # XEN_DOMCTL_scheduler_op with XEN_DOMCTL_SCHEDOP_putinfo
     setscheduler
 # XENMEM_claim_pages
+# XEN_DOMCTL_claim_memory
     setclaim
 # XEN_DOMCTL_cacheflush
     cacheflush
-- 
2.39.5



From xen-devel-bounces@lists.xenproject.org Tue Apr 14 13:30:11 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 14 Apr 2026 13:30:11 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1281908.1564684 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wCdqB-0004iq-0a; Tue, 14 Apr 2026 13:30:07 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1281908.1564684; Tue, 14 Apr 2026 13: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 1wCdqA-0004ij-U1; Tue, 14 Apr 2026 13:30:06 +0000
Received: by outflank-mailman (input) for mailman id 1281908;
 Tue, 14 Apr 2026 13:30:06 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <bernhard.kaindl@citrix.com>) id 1wCdqA-0004fz-CQ
 for xen-devel@lists.xenproject.org; Tue, 14 Apr 2026 13:30:06 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wCdq8-006u0t-43
 for xen-devel@lists.xenproject.org; Tue, 14 Apr 2026 15:30:05 +0200
Received: from [10.42.69.3] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <bernhard.kaindl@citrix.com>)
 id 69de4158-5cb7-0a2a0a5109dd-0a2a4503b5fa-38
 for <xen-devel@lists.xenproject.org>; Tue, 14 Apr 2026 15:30:05 +0200
Received: from [160.101.131.9] (helo=na1pdmzitismtp02.tibco.com)
 by tlsNG-33051d.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.0)
 (envelope-from <bernhard.kaindl@citrix.com>)
 id 69de415c-02b3-0a2a45030019-a0658309dcde-3
 for <xen-devel@lists.xenproject.org>; Tue, 14 Apr 2026 15:30:05 +0200
Received: from debian.eng.citrite.net (unknown [10.113.40.46])
 by na1pdmzitismtp02.tibco.com (Postfix) with ESMTP id EFBC181A473F;
 Tue, 14 Apr 2026 09:29:10 -0400 (EDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-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: Bernhard Kaindl <bernhard.kaindl@citrix.com>
To: xen-devel@lists.xenproject.org
Cc: Bernhard Kaindl <bernhard.kaindl@citrix.com>,
	Christian Lindig <christian.lindig@citrix.com>,
	David Scott <dave@recoil.org>,
	Anthony PERARD <anthony.perard@vates.tech>,
	Christian Lindig <christian.lindig@cloud.com>,
	Andrew Cooper <andrew.cooper3@citrix.com>
Subject: [PATCH v6 6/7] tools/ocaml/libs/xc: Add an OCaml binding for NUMA-aware claims
Date: Tue, 14 Apr 2026 14:22:50 +0100
Message-Id: <284b58e46f6e2cb0df3f404da881f40884df5045.1776172526.git.bernhard.kaindl@citrix.com>
X-Mailer: git-send-email 2.39.5
In-Reply-To: <cover.1776172526.git.bernhard.kaindl@citrix.com>
References: <cover.1776172526.git.bernhard.kaindl@citrix.com>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit
X-purgate-ID: tlsNG-33051d/1776173405-C9136C9A-31D4E234/0/0
X-purgate-type: clean
X-purgate-size: 4737

Add an OCaml binding for xc_domain_claim_memory() so the
XEN_DOMCTL_claim_memory hypercall can be used from OCaml.

This allows OCaml toolstacks to place NUMA-aware memory
claims for domains as well as host-wide claims.

tools/ocaml/libs/xc/xenctrl.ml/mli:
- Add claim record type and domain_claim_memory external.

tools/ocaml/libs/xc/xenctrl_stubs.c:
- Validate claim count and arguments.
- Marshal the OCaml claim array to memory_claim_t[].
- Map node/target of -1 to XEN_DOMCTL_CLAIM_MEMORY_GLOBAL.

Acked-by: Christian Lindig <christian.lindig@cloud.com>
Requested-by: Andrew Cooper <andrew.cooper3@citrix.com>
Signed-off-by: Bernhard Kaindl <bernhard.kaindl@citrix.com>
---
 tools/ocaml/libs/xc/xenctrl.ml      | 11 +++++++
 tools/ocaml/libs/xc/xenctrl.mli     | 11 +++++++
 tools/ocaml/libs/xc/xenctrl_stubs.c | 47 +++++++++++++++++++++++++++++
 3 files changed, 69 insertions(+)

diff --git a/tools/ocaml/libs/xc/xenctrl.ml b/tools/ocaml/libs/xc/xenctrl.ml
index 97108b9d861a..680cd8ec5449 100644
--- a/tools/ocaml/libs/xc/xenctrl.ml
+++ b/tools/ocaml/libs/xc/xenctrl.ml
@@ -370,6 +370,17 @@ external domain_deassign_device: handle -> domid -> (int * int * int * int) -> u
 external domain_test_assign_device: handle -> domid -> (int * int * int * int) -> bool
   = "stub_xc_domain_test_assign_device"
 
+(* OCaml binding for xc_domain_claim_memory(): Install claim sets for a domain,
+   target is either a NUMA node or -1 for no node - memory from any node). *)
+
+type claim =
+  {
+    pages: int64;   (* Number of pages to claim *)
+    target: int32;  (* Target: NUMA node ID, or -1 for a flexible claim *)
+  }
+external domain_claim_memory: handle -> domid -> claim array -> unit
+  = "stub_xc_domain_claim_memory"
+
 external version: handle -> version = "stub_xc_version_version"
 external version_compile_info: handle -> compile_info
   = "stub_xc_version_compile_info"
diff --git a/tools/ocaml/libs/xc/xenctrl.mli b/tools/ocaml/libs/xc/xenctrl.mli
index 9fccb2c2c287..8a7c53a09d97 100644
--- a/tools/ocaml/libs/xc/xenctrl.mli
+++ b/tools/ocaml/libs/xc/xenctrl.mli
@@ -297,6 +297,17 @@ external domain_deassign_device: handle -> domid -> (int * int * int * int) -> u
 external domain_test_assign_device: handle -> domid -> (int * int * int * int) -> bool
   = "stub_xc_domain_test_assign_device"
 
+(* OCaml binding for xc_domain_claim_memory(): Install claim sets for a domain,
+   target is either a NUMA node or -1 for no node - memory from any node). *)
+
+type claim =
+  {
+    pages: int64;   (* Number of pages to claim *)
+    target: int32;  (* Target: NUMA node ID, or -1 for a flexible claim *)
+  }
+external domain_claim_memory: handle -> domid -> claim array -> unit
+  = "stub_xc_domain_claim_memory"
+
 external version : handle -> version = "stub_xc_version_version"
 external version_compile_info : handle -> compile_info
   = "stub_xc_version_compile_info"
diff --git a/tools/ocaml/libs/xc/xenctrl_stubs.c b/tools/ocaml/libs/xc/xenctrl_stubs.c
index c55f73b265b2..90464f718df0 100644
--- a/tools/ocaml/libs/xc/xenctrl_stubs.c
+++ b/tools/ocaml/libs/xc/xenctrl_stubs.c
@@ -1435,6 +1435,53 @@ CAMLprim value stub_xc_watchdog(value xch_val, value domid, value timeout)
 	CAMLreturn(Val_int(ret));
 }
 
+CAMLprim value stub_xc_domain_claim_memory(value xch_val, value domid,
+                                           value claims)
+{
+	CAMLparam3(xch_val, domid, claims);
+	xc_interface *xch = xch_of_val(xch_val);
+	mlsize_t nr_claims = Wosize_val(claims);
+	memory_claim_t *claim;
+	uint32_t c_domid = (uint32_t)Int_val(domid);
+	int retval;
+
+	claim = calloc(nr_claims, sizeof(*claim));
+	if (claim == NULL && nr_claims != 0)
+		caml_raise_out_of_memory();
+
+	for (mlsize_t i = 0; i < nr_claims; i++) {
+		value claim_rec = Field(claims, i);
+		int64_t pages = Int64_val(Field(claim_rec, 0));
+		int32_t target = Int32_val(Field(claim_rec, 1));
+		uint32_t c_target;
+
+		if (pages < 0 || target < -1 ) {
+			free(claim);
+			caml_invalid_argument("domain_claim_memory: invalid pages or node");
+		}
+
+		if (target == -1)
+			c_target = XEN_DOMCTL_CLAIM_MEMORY_GLOBAL;
+		else
+			c_target = (uint32_t)target;
+
+		claim[i] = (memory_claim_t) {
+			.pages = (uint64_t)pages, .target = c_target
+		};
+	}
+
+	/* May have to wait for the domctl lock, release the OCaml runtime lock. */
+	caml_enter_blocking_section();
+	retval = xc_domain_claim_memory(xch, c_domid, nr_claims, claim);
+	caml_leave_blocking_section();
+
+	free(claim);
+	if (retval < 0)
+		failwith_xc(xch);
+
+	CAMLreturn(Val_unit);
+}
+
 /*
  * Local variables:
  *  indent-tabs-mode: t
-- 
2.39.5



From xen-devel-bounces@lists.xenproject.org Tue Apr 14 13:30:52 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 14 Apr 2026 13:30:52 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1281928.1564694 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wCdqu-0005IH-7f; Tue, 14 Apr 2026 13:30:52 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1281928.1564694; Tue, 14 Apr 2026 13:30: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 1wCdqu-0005IA-4v; Tue, 14 Apr 2026 13:30:52 +0000
Received: by outflank-mailman (input) for mailman id 1281928;
 Tue, 14 Apr 2026 13:30:51 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <bernhard.kaindl@citrix.com>) id 1wCdqt-0005I1-9X
 for xen-devel@lists.xenproject.org; Tue, 14 Apr 2026 13:30:51 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wCdqs-008zP9-MI
 for xen-devel@lists.xenproject.org; Tue, 14 Apr 2026 15:30:50 +0200
Received: from [10.42.69.11] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <bernhard.kaindl@citrix.com>)
 id 69de4188-5cb7-0a2a0a5109dd-0a2a450be768-16
 for <xen-devel@lists.xenproject.org>; Tue, 14 Apr 2026 15:30:50 +0200
Received: from [160.101.131.9] (helo=na1pdmzitismtp02.tibco.com)
 by tlsNG-42698a.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.0)
 (envelope-from <bernhard.kaindl@citrix.com>)
 id 69de4189-bca8-0a2a450b0019-a0658309e2d0-3
 for <xen-devel@lists.xenproject.org>; Tue, 14 Apr 2026 15:30:50 +0200
Received: from debian.eng.citrite.net (unknown [10.113.40.46])
 by na1pdmzitismtp02.tibco.com (Postfix) with ESMTP id 3DCE981A473F;
 Tue, 14 Apr 2026 09:29:56 -0400 (EDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-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: Bernhard Kaindl <bernhard.kaindl@citrix.com>
To: xen-devel@lists.xenproject.org
Cc: Bernhard Kaindl <bernhard.kaindl@citrix.com>,
	Anthony PERARD <anthony.perard@vates.tech>
Subject: [PATCH v6 7/7] tools/tests/mem-claim: Add a test suite for the memory claim API
Date: Tue, 14 Apr 2026 14:22:51 +0100
Message-Id: <8604d18c252ce142c2f341e2b0016936d159dd7e.1776172526.git.bernhard.kaindl@citrix.com>
X-Mailer: git-send-email 2.39.5
In-Reply-To: <cover.1776172526.git.bernhard.kaindl@citrix.com>
References: <cover.1776172526.git.bernhard.kaindl@citrix.com>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit
X-purgate-ID: tlsNG-42698a/1776173450-EF14D101-31FB0BB1/0/0
X-purgate-type: clean
X-purgate-size: 78485

Add a comprehensive test suite for the xc_domain_claim_memory() API
that covers argument validation and the protection semantics of
memory claims across domains and NUMA nodes.

The suite verifies claim behaviour both globally and per-node, and
checks how claims interact with allocations and replacement semantics.

Key checks include:

- Argument validation and correct errno handling for invalid inputs.
- NUMA-aware claim sets, covering node-specific and global targets.
- Replacement semantics after allocations (global and node-scoped).
- Inter-domain protection and claim movement across NUMA nodes.

Signed-off-by: Bernhard Kaindl <bernhard.kaindl@citrix.com>
---
 tools/tests/mem-claim/.gitignore          |   1 +
 tools/tests/mem-claim/Makefile            |  17 +-
 tools/tests/mem-claim/accounting-1.h      | 401 +++++++++
 tools/tests/mem-claim/input-phase1.h      | 171 ++++
 tools/tests/mem-claim/input-phase2.h      |  91 ++
 tools/tests/mem-claim/libtestclaims.c     | 995 ++++++++++++++++++++++
 tools/tests/mem-claim/libtestclaims.h     | 202 +++++
 tools/tests/mem-claim/test-claim-memory.c | 129 +++
 8 files changed, 2000 insertions(+), 7 deletions(-)
 create mode 100644 tools/tests/mem-claim/accounting-1.h
 create mode 100644 tools/tests/mem-claim/input-phase1.h
 create mode 100644 tools/tests/mem-claim/input-phase2.h
 create mode 100644 tools/tests/mem-claim/libtestclaims.c
 create mode 100644 tools/tests/mem-claim/libtestclaims.h
 create mode 100644 tools/tests/mem-claim/test-claim-memory.c

diff --git a/tools/tests/mem-claim/.gitignore b/tools/tests/mem-claim/.gitignore
index cfcee00b819b..08365576b22b 100644
--- a/tools/tests/mem-claim/.gitignore
+++ b/tools/tests/mem-claim/.gitignore
@@ -1 +1,2 @@
 test-mem-claim
+test-claim-memory
diff --git a/tools/tests/mem-claim/Makefile b/tools/tests/mem-claim/Makefile
index 76ba3e3c8bef..77decd4b0d05 100644
--- a/tools/tests/mem-claim/Makefile
+++ b/tools/tests/mem-claim/Makefile
@@ -1,14 +1,16 @@
 XEN_ROOT = $(CURDIR)/../../..
 include $(XEN_ROOT)/tools/Rules.mk
 
-TARGET := test-mem-claim
+TARGETS := test-mem-claim test-claim-memory
+
+LIB_OBJ := libtestclaims.o
 
 .PHONY: all
-all: $(TARGET)
+all: $(TARGETS)
 
 .PHONY: clean
 clean:
-	$(RM) -- *.o $(TARGET) $(DEPS_RM)
+	$(RM) -- *.o $(TARGETS) $(DEPS_RM)
 
 .PHONY: distclean
 distclean: clean
@@ -17,11 +19,11 @@ distclean: clean
 .PHONY: install
 install: all
 	$(INSTALL_DIR) $(DESTDIR)$(LIBEXEC)/tests
-	$(INSTALL_PROG) $(TARGET) $(DESTDIR)$(LIBEXEC)/tests
+	$(INSTALL_PROG) $(TARGETS) $(DESTDIR)$(LIBEXEC)/tests
 
 .PHONY: uninstall
 uninstall:
-	$(RM) -- $(DESTDIR)$(LIBEXEC)/tests/$(TARGET)
+	$(RM) -- $(patsubst %,$(DESTDIR)$(LIBEXEC)/tests/%,$(TARGETS))
 
 CFLAGS += $(CFLAGS_xeninclude)
 CFLAGS += $(CFLAGS_libxenctrl)
@@ -32,7 +34,8 @@ LDFLAGS += $(APPEND_LDFLAGS)
 
 %.o: Makefile
 
-$(TARGET): test-mem-claim.o
-	$(CC) -o $@ $< $(LDFLAGS)
+
+$(TARGETS): %: %.o $(LIB_OBJ)
+	$(CC) -o $@ $^ $(LDFLAGS)
 
 -include $(DEPS_INCLUDE)
diff --git a/tools/tests/mem-claim/accounting-1.h b/tools/tests/mem-claim/accounting-1.h
new file mode 100644
index 000000000000..70bae2215702
--- /dev/null
+++ b/tools/tests/mem-claim/accounting-1.h
@@ -0,0 +1,401 @@
+/* SPDX-License-Identifier: GPL-2.0-only */
+/*
+ * claim-memory-allocations.h - Test claiming memory and claims protection
+ * with NUMA-aware claim sets.
+ *
+ * Check claiming memory and allocation against claims with NUMA-aware
+ * claim sets, including:
+ *
+ * - Claiming all or nearly all free memory on a node or globally and
+ *   verifying  the claim is reflected in physinfo and that memory can
+ *   be allocated against the claim.
+ * - Exercise xc_domain_claim_memory() with different valid claim sets.
+ * - Exercise xc_domain_claim_pages() and verify that claims are reflected
+ *   in the outstanding pages in Xen.
+ */
+#include "libtestclaims.h"
+
+/*
+ * A1-1: basic single-node claim is tracked in outstanding pages and released
+ * when the domain is destroyed.
+ *
+ * Smoke test: claims half the primary node's free pages, verifies they
+ * appear in physinfo.outstanding_pages, then returns.  The fixture destroys
+ * the domain, which releases the claim, and verifies outstanding pages returns
+ * to the pre-test baseline.
+ *
+ * Skipped when NUMA is disabled (num_nodes == 1 and no per-node free pages) or
+ * when there are fewer than 2 free pages available on the primary node.
+ */
+static int test_basic_node_claim(struct test_ctx *ctx)
+{
+    uint64_t pre_existing_claims, free_pages;
+    memory_claim_t claim;
+
+    /* Get the free memory on the test node */
+    ctx->target1 = ctx->env->primary_node;
+    lib_get_node_free_pages(ctx, ctx->target1, &free_pages, NULL);
+
+    if ( free_pages < 2 )
+        return lib_fail(
+            ctx, "need >= 2 free pages on node %" PRIu64 ", got %" PRIu64,
+            ctx->target1, free_pages);
+
+    /*
+     * Leave one page of slack between the claim and the free pages
+     * so claim does not fail due to a small concurrent allocation.
+     */
+    ctx->alloc_pages = free_pages - 1;
+    snprintf(ctx->result->params, sizeof(ctx->result->params),
+             "node=%" PRIu64 " claim_pages=%" PRIu64 " free_pages=%" PRIu64,
+             ctx->target1, ctx->alloc_pages, free_pages);
+
+    /*
+     * Capture the baseline after domain creation (domain creation doesn't
+     * change outstanding pages, so this equals the fixture's baseline).
+     */
+    rc = lib_get_total_claims(ctx, &pre_existing_claims);
+    if ( rc )
+        return rc;
+
+    claim = (memory_claim_t){.pages = ctx->alloc_pages, .target = ctx->target1};
+    rc = lib_claim_memory(ctx, ctx->dom_1, 1, &claim, "set basic node claim");
+    if ( rc )
+        return rc;
+
+    return lib_check_claim(
+        ctx, pre_existing_claims, ctx->alloc_pages,
+        "check node claim is reflected in outstanding pages");
+
+    /* Domain teardown releases claim; fixture verifies baseline is restored. */
+}
+
+/*
+ * A1-2: global claim is replaced atomically after an allocation.
+ *
+ * Sets an initial global claim, allocates one extent (consuming part of it),
+ * then sets a smaller replacement claim and verifies the outstanding count
+ * reflects the new absolute target.
+ */
+static int test_global_replace_after_alloc(struct test_ctx *ctx)
+{
+    unsigned long free_pages;
+    unsigned long initial_pages;
+
+    /* Get the global free memory for sizing the initial claim */
+    lib_get_global_free_pages(ctx, &free_pages);
+
+    if ( free_pages < 2 )
+        return lib_fail(ctx, "need >= 2 free pages global, got %" PRIu64,
+                        free_pages);
+
+    /*
+     * This test needs two valid claim targets: an initial larger claim
+     * and a smaller replacement target after consuming one claimed page.
+     */
+    initial_pages    = free_pages;
+    ctx->alloc_pages = free_pages / 2;
+
+    snprintf(ctx->result->params, sizeof(ctx->result->params),
+             "alloc_pages=%" PRIu64 " initial=%" PRIu64 " "
+             "replacement=%" PRIu64 " global_free=%" PRIu64,
+             ctx->alloc_pages, initial_pages, ctx->alloc_pages, free_pages);
+
+    rc = lib_claim_memory(ctx, ctx->dom_1, 1, /* one claim */
+                          &(memory_claim_t){
+                              .pages  = initial_pages,
+                              .target = XEN_DOMCTL_CLAIM_MEMORY_GLOBAL,
+                          },
+                          "set initial global replacement claim");
+    if ( rc )
+        return rc;
+
+    lib_set_step(ctx, "Allocate one extent to consume part of claim");
+    rc = lib_populate_success(ctx, (lib_populate_args_t){
+                                  .domid      = ctx->dom_1,
+                                  .nr_extents = 1,
+                              });
+    if ( rc )
+        return rc;
+
+    rc = lib_claim_memory(ctx, ctx->dom_1, 1, /* one claim */
+                          &(memory_claim_t){
+                              .pages  = ctx->alloc_pages,
+                              .target = XEN_DOMCTL_CLAIM_MEMORY_GLOBAL,
+                          },
+                          "replace global claim with a new absolute target");
+    if ( rc )
+        return rc;
+
+    return lib_release_all_claims(ctx, ctx->dom_1);
+}
+
+/*
+ * A1-3: node-specific claim is replaced atomically after an allocation.
+ *
+ * Same as C-1 but scoped to the primary NUMA node:
+ * Sets an initial node claim, allocates one extent (consuming part of it),
+ * then sets a smaller replacement claim and verifies the outstanding count
+ * reflects the new absolute target.
+ */
+static int test_node_replace_after_alloc(struct test_ctx *ctx)
+{
+    uint64_t free_pages, initial_pages;
+
+    /* Node used for claim sizing, claiming and allocation */
+    ctx->target1 = ctx->env->primary_node;
+
+    /* Get the free memory on the test node for sizing the initial claim */
+    lib_get_node_free_pages(ctx, ctx->target1, &free_pages, NULL);
+    if ( free_pages < 2 )
+        return lib_skip_test(
+            ctx, "need >= 2 pages on node %" PRIu64 ", got %" PRIu64,
+            ctx->target1, free_pages);
+    /*
+     * This test needs two valid claim targets: an initial larger claim
+     * and a smaller replacement target after consuming one claimed page.
+     *
+     * Leave one page of slack between the claim and the free pages
+     * so claim does not fail due to a small concurrent allocation.
+     */
+    initial_pages    = free_pages - 1;
+    ctx->alloc_pages = free_pages / 2;
+
+    /* Logging of test parameters */
+    snprintf(ctx->result->params, sizeof(ctx->result->params),
+             "node=%" PRIu64 " init=%" PRIu64 " replacement=%" PRIu64
+             " free=%" PRIu64,
+             ctx->target1, initial_pages, ctx->alloc_pages, free_pages);
+
+    /* Create the claim with initial_pages */
+    rc = lib_claim_memory(ctx, ctx->dom_1, 1, /* one claim */
+                          &(memory_claim_t){
+                              .pages  = initial_pages,
+                              .target = ctx->target1,
+                          },
+                          "set initial node-specific replacement claim");
+    if ( rc )
+        return rc;
+
+    lib_set_step(ctx, "Allocate one extent to consume part of claim");
+    rc =
+        lib_populate_success(ctx, (lib_populate_args_t){
+                                 .domid      = ctx->dom_1,
+                                 .nr_extents = 1,
+                                 .flags = XENMEMF_exact_node(ctx->target1),
+                             });
+    if ( rc )
+        return rc;
+
+    /* Update the claim with ctx->alloc_pages */
+    rc = lib_claim_memory(ctx, ctx->dom_1, 1, /* one claim */
+                          &(memory_claim_t){
+                              .pages  = ctx->alloc_pages,
+                              .target = ctx->target1,
+                          },
+                          "replace node claim with a new absolute target");
+    if ( rc )
+        return rc;
+
+    return lib_release_all_claims(ctx, ctx->dom_1);
+}
+
+/*
+ * A1-4: legacy xc_domain_claim_pages() global claim is tracked in outstanding
+ * pages, reduced by an allocation, and released when the domain is destroyed.
+ */
+static int test_legacy_global_claim(struct test_ctx *ctx)
+{
+    uint64_t pre_existing_claims, free_pages;
+
+    /* Get the global free memory for sizing the claim */
+    lib_get_global_free_pages(ctx, &free_pages);
+
+    ctx->alloc_pages = free_pages / 2;
+    snprintf(ctx->result->params, sizeof(ctx->result->params), "claim=%" PRIu64,
+             ctx->alloc_pages);
+
+    rc = lib_get_total_claims(ctx, &pre_existing_claims);
+    if ( rc )
+        return rc;
+
+    rc = lib_claim_pages_legacy(ctx, ctx->dom_1, ctx->alloc_pages,
+                                "set legacy global claim");
+    if ( rc )
+        return rc;
+
+    rc = lib_check_claim(ctx, pre_existing_claims, ctx->alloc_pages,
+                         "claim is added the outstanding pages");
+    if ( rc )
+        return rc;
+
+    lib_set_step(ctx, "allocate extents to redeem a part of claim");
+    rc = lib_populate_success(ctx, (lib_populate_args_t){
+                                  .domid      = ctx->dom_1,
+                                  .nr_extents = 10,
+                              });
+    if ( rc )
+        return rc;
+
+    return lib_check_claim(
+        ctx, pre_existing_claims, ctx->alloc_pages - 10,
+        "allocated against claim, outstanding pages reduced");
+    /* Teardown releases the claim; fixture verifies baseline is restored. */
+}
+
+/*
+ * A1-5: Test blocking allocation with claims and claim movement between nodes.
+ *
+ * This test performs a sequence of claims and allocations to verify that claims
+ * block allocations on the claimed node, that moving a claim to another node
+ * allows allocation on the original node, and that the new node is now blocked
+ * by the claim until it is released.
+ *
+ * To achieve this, the test creates a helper domain used for allocation
+ * attempts, then:
+ *
+ * Claims most free pages on the primary node, verifies allocation is blocked,
+ * then moves the claim to the secondary node, verifies the original allocation
+ * can now succeed on the primary node.
+ *
+ * It then verifies allocation is now blocked on the secondary node,
+ * releases the claim, and verifies the allocation can now succeed on the
+ * secondary node as well.
+ *
+ * Requires at least two online NUMA nodes.
+ */
+static int test_move_claim_between_nodes(struct test_ctx *ctx)
+{
+    uint64_t free_src, free_dst, spare_pages = 10;
+
+    if ( !ctx->env->have_secondary_node )
+        return lib_skip_test(ctx, "Requires at least two online NUMA nodes.");
+
+    ctx->target1 = ctx->env->primary_node;
+    ctx->target2 = ctx->env->secondary_node;
+
+    lib_get_node_free_pages(ctx, ctx->target1, &free_src, NULL);
+    lib_get_node_free_pages(ctx, ctx->target2, &free_dst, NULL);
+
+    if ( free_src < spare_pages + 1 || free_dst < spare_pages + 1 )
+        return lib_fail(ctx, "Need more pages, got %" PRIu64 "/%" PRIu64 ".",
+                        free_src, free_dst);
+
+    lib_set_step(ctx, "Claim most memory on source node.");
+    rc = lib_claim_all_on_node(ctx, ctx->dom_1, ctx->target1, spare_pages);
+    if ( rc )
+        return rc;
+
+    lib_set_step(ctx, "The claim blocks the allocation on the source node.");
+    rc =
+        lib_populate_failure(ctx, (lib_populate_args_t){
+                                 .domid      = ctx->dom_2,
+                                 .nr_extents = spare_pages * 2,
+                                 .flags = XENMEMF_exact_node(ctx->target1),
+                             });
+    if ( rc )
+        return rc;
+
+    lib_set_step(ctx, "Move the claim to most memory on the destination node.");
+    rc = lib_claim_all_on_node(ctx, ctx->dom_1, ctx->target2, spare_pages);
+    if ( rc )
+        return rc;
+
+    lib_set_step(ctx, "Moved claim no longer blocks allocs on source node.");
+    rc =
+        lib_populate_success(ctx, (lib_populate_args_t){
+                                 .domid      = ctx->dom_2,
+                                 .start      = spare_pages * 2,
+                                 .nr_extents = spare_pages * 2,
+                                 .flags = XENMEMF_exact_node(ctx->target1),
+                             });
+    if ( rc )
+        return rc;
+
+    lib_set_step(ctx, "Moved claim now blocks allocs on destination node.");
+    rc =
+        lib_populate_failure(ctx, (lib_populate_args_t){
+                                 .domid      = ctx->dom_2,
+                                 .nr_extents = spare_pages * 2,
+                                 .flags = XENMEMF_exact_node(ctx->target2),
+                             });
+    if ( rc )
+        return rc;
+
+    rc = lib_release_all_claims(ctx, ctx->dom_1);
+    if ( rc )
+        return rc;
+
+    lib_set_step(ctx, "Claim released, allocs on destination node succeed.");
+    rc =
+        lib_populate_success(ctx, (lib_populate_args_t){
+                                 .domid      = ctx->dom_2,
+                                 .start      = spare_pages * 2,
+                                 .nr_extents = spare_pages * 2,
+                                 .flags = XENMEMF_exact_node(ctx->target2),
+                             });
+    if ( rc )
+        return rc;
+
+    return lib_release_all_claims(ctx, ctx->dom_1);
+}
+
+/*
+ * A1-6: Check that a calling xc_domain_claim_pages(claim_pages = 0)
+ * resets the claims to the baseline.
+ */
+static int test_zero_claim_resets_claim(struct test_ctx *ctx)
+{
+    uint64_t pre_existing_claims;
+
+    rc = lib_get_total_claims(ctx, &pre_existing_claims);
+    if ( rc )
+        return rc;
+
+    /* Make a claim first to move outstanding away from the baseline. */
+    rc = lib_claim_pages_legacy(ctx, ctx->dom_1, 8,
+                                "zero claim to reset outstanding to baseline");
+    if ( rc )
+        return rc;
+
+    /* Now set a zero claim to reset outstanding back to the baseline. */
+    rc = lib_claim_pages_legacy(ctx, ctx->dom_1, 0,
+                                "zero claim to reset outstanding to baseline");
+    if ( rc )
+        return rc;
+
+    return lib_check_claim(ctx, pre_existing_claims, 0,
+                           "check zero claim resets outstanding to baseline");
+}
+
+/*
+ * A1-7: Check that a calling xc_domain_claim_memory(claim_pages = 0)
+ * resets the claims to the baseline.
+ */
+static int test_zero_claim_memory_resets(struct test_ctx *ctx)
+{
+    uint64_t pre_existing_claims;
+
+    rc = lib_get_total_claims(ctx, &pre_existing_claims);
+    if ( rc )
+        return rc;
+
+    /* Make a claim first to move outstanding away from the baseline. */
+    rc = lib_claim_memory(
+        ctx, ctx->dom_1, 1,
+        &(memory_claim_t){.pages = 8, .target = ctx->env->primary_node},
+        "make a claim to move outstanding away from baseline");
+    if ( rc )
+        return rc;
+
+    /* Now set a zero claim to reset outstanding back to the baseline. */
+    rc = lib_claim_memory(
+        ctx, ctx->dom_1, 1,
+        &(memory_claim_t){.pages = 0, .target = XEN_DOMCTL_CLAIM_MEMORY_GLOBAL},
+        "set a zero claim to reset outstanding to baseline");
+    if ( rc )
+        return rc;
+
+    return lib_check_claim(ctx, pre_existing_claims, 0,
+                           "check zero claim resets outstanding to baseline");
+}
diff --git a/tools/tests/mem-claim/input-phase1.h b/tools/tests/mem-claim/input-phase1.h
new file mode 100644
index 000000000000..5a97bb5eeb20
--- /dev/null
+++ b/tools/tests/mem-claim/input-phase1.h
@@ -0,0 +1,171 @@
+/* SPDX-License-Identifier: GPL-2.0-only */
+/*
+ * input-phase1.h - Test Phase 1 argument validation for memory claims,
+ * including invalid claim parameters and claiming more pages than are free.
+ *
+ * I1-1 - I1-9: invalid claims are rejected with appropriate error codes.
+ *
+ * This file contains test cases to validate argument handling when dealing
+ * with NUMA-aware claim sets.
+ *
+ * Tests various invalid claim parameters (non-present node, too many claims,
+ * node id above UINT8_MAX, pages above INT32_MAX, non-zero pad, zero claim
+ * count, null claims pointer with non-zero count, and non-null claims pointer
+ * with zero count) and verify they are rejected with the expected error code.
+ */
+#include "libtestclaims.h"
+
+static int test_reject_non_present_node(struct test_ctx *ctx)
+{
+    memory_claim_t claim = {
+        .pages = 1, .target = ctx->env->num_nodes, /* Out-of-range node id */
+    };
+
+    ctx->target1 = ctx->env->primary_node;
+    snprintf(ctx->result->params, sizeof(ctx->result->params),
+             "node=%u num_nodes=%u", claim.target, ctx->env->num_nodes);
+
+    return lib_expect_claim_memory_failure(
+        ctx, ctx->dom_1, 1, &claim, ENOENT,
+        "reject claim on a non-present NUMA node");
+}
+
+static int test_reject_too_many_claims(struct test_ctx *ctx)
+{
+    const uint32_t nr_claims = 0x100; /* Xen does not support such nr_claims */
+    memory_claim_t claims[nr_claims];
+
+    ctx->target1 = ctx->env->primary_node;
+    for ( uint32_t i = 0; i < nr_claims; i++ )
+        claims[i] = ((memory_claim_t){
+                         .pages  = 1,
+                         .target = ctx->env->primary_node,
+                     });
+
+    snprintf(ctx->result->params, sizeof(ctx->result->params), "nr_claims=%u",
+             nr_claims);
+
+    return lib_expect_claim_memory_failure(
+        ctx, ctx->dom_1, nr_claims, claims, E2BIG,
+        "reject claim list larger than the supported maximum");
+}
+
+static int test_reject_node_gt_uint8_max(struct test_ctx *ctx)
+{
+    memory_claim_t claim = {
+        .pages  = 1,
+        .target = UINT8_MAX + 1U,
+    };
+
+    ctx->target1 = ctx->env->primary_node;
+    snprintf(ctx->result->params, sizeof(ctx->result->params), "node=%u",
+             claim.target);
+
+    return lib_expect_claim_memory_failure(
+        ctx, ctx->dom_1, 1, &claim, ENOENT,
+        "reject claim with node id above UINT8_MAX");
+}
+
+static int test_reject_pages_gt_int32_max(struct test_ctx *ctx)
+{
+    memory_claim_t claim = {
+        .pages  = INT32_MAX + 1UL,
+        .target = ctx->env->primary_node,
+    };
+
+    ctx->target1 = ctx->env->primary_node;
+    snprintf(ctx->result->params, sizeof(ctx->result->params),
+             "pages=%" PRIu64 " node=%u", claim.pages, claim.target);
+
+    return lib_expect_claim_memory_failure(
+        ctx, ctx->dom_1, 1, &claim, ENOMEM,
+        "reject claim with pages larger than INT32_MAX");
+}
+
+static int test_reject_nonzero_pad(struct test_ctx *ctx)
+{
+    memory_claim_t claim = {
+        .pages  = 1,
+        .target = ctx->env->primary_node,
+        .pad    = 1,
+    };
+
+    ctx->target1 = ctx->env->primary_node;
+    snprintf(ctx->result->params, sizeof(ctx->result->params), "node=%u pad=%u",
+             claim.target, claim.pad);
+
+    return lib_expect_claim_memory_failure(
+        ctx, ctx->dom_1, 1, &claim, EINVAL,
+        "reject claim with non-zero padding");
+}
+
+static int test_reject_zero_claim_count(struct test_ctx *ctx)
+{
+    snprintf(ctx->result->params, sizeof(ctx->result->params), "nr_claims=0");
+
+    return lib_expect_claim_memory_failure(
+        ctx, ctx->dom_1, 0, NULL, EINVAL,
+        "reject xc_domain_claim_memory() with nr_claims == 0");
+}
+
+static int test_null_claims_nonzero_count(struct test_ctx *ctx)
+{
+    snprintf(ctx->result->params, sizeof(ctx->result->params),
+             "nr_claims=1 claims=NULL");
+
+    return lib_expect_claim_memory_failure(
+        ctx, ctx->dom_1, 1, NULL, EFAULT,
+        "reject xc_domain_claim_memory() with claims=NULL and nr_claims == 1");
+}
+
+static int test_zero_count_valid_pointer(struct test_ctx *ctx)
+{
+    memory_claim_t claim = {
+        .pages  = 1,
+        .target = ctx->env->primary_node,
+    };
+
+    snprintf(ctx->result->params, sizeof(ctx->result->params),
+             "nr_claims=0 claims=valid node=%u", claim.target);
+
+    return lib_expect_claim_memory_failure(
+        ctx, ctx->dom_1, 0, &claim, EINVAL,
+        "reject xc_domain_claim_memory() with !nr_claims but a claims pointer");
+}
+
+/*
+ * I1-9: Check both xc_domain_claim_pages() and xc_domain_claim_memory()
+ * with pages > free pages fail with ENOMEM.
+ */
+static int test_claim_pages_gt_free_enomem(struct test_ctx *ctx)
+{
+    uint64_t free_pages;
+
+    /* Get the global free memory for sizing the claim */
+    lib_get_global_free_pages(ctx, &free_pages);
+    ctx->alloc_pages = free_pages + 1;
+
+    snprintf(ctx->result->params, sizeof(ctx->result->params),
+             "claim=%" PRIu64 " global=%" PRIu64, ctx->alloc_pages, free_pages);
+
+    rc = lib_claim_pages_legacy_failure(
+        ctx, ctx->dom_1, ctx->alloc_pages, ENOMEM,
+        "reject xc_domain_claim_pages() with pages > global free page");
+    if ( rc )
+        return rc;
+
+    rc = lib_expect_claim_memory_failure(
+        ctx, ctx->dom_1, 1,
+        &(memory_claim_t){.pages  = ctx->alloc_pages,
+                          .target = XEN_DOMCTL_CLAIM_MEMORY_GLOBAL},
+        ENOMEM, "reject claim_memory() with pages > global free pages");
+
+    /* Get the free pages on the primary node and fail to claim more than it */
+    lib_get_node_free_pages(ctx, ctx->env->primary_node, &free_pages, NULL);
+    rc = lib_expect_claim_memory_failure(
+        ctx, ctx->dom_1, 1,
+        &(memory_claim_t){.pages  = free_pages + 1,
+                          .target = ctx->env->primary_node},
+        ENOMEM, "reject claim_memory() with pages > node free pages");
+    return rc;
+}
diff --git a/tools/tests/mem-claim/input-phase2.h b/tools/tests/mem-claim/input-phase2.h
new file mode 100644
index 000000000000..d57a7e8a37c0
--- /dev/null
+++ b/tools/tests/mem-claim/input-phase2.h
@@ -0,0 +1,91 @@
+/* SPDX-License-Identifier: GPL-2.0-only */
+/*
+ * input-phase2.h - Test argument validation for memory claims
+ *
+ * This file contains test cases to validate argument handling when dealing
+ * with NUMA-aware claim sets.
+ */
+#include "libtestclaims.h"
+
+static int d2_claim_expect_enomem_global(struct test_ctx *ctx, uint64_t claims)
+{
+    rc = lib_claim_pages_legacy_failure(
+        ctx, ctx->dom_2, claims, ENOMEM,
+        "expect ENOMEM for xc_domain_claim_pages() with claims > spare page");
+    if ( rc )
+        return rc;
+
+    return lib_expect_claim_memory_failure(
+        ctx, ctx->dom_2, 1,
+        /* Request more than the spare to ensure failure */
+        &(memory_claim_t){.pages  = claims,
+                          .target = XEN_DOMCTL_CLAIM_MEMORY_GLOBAL},
+        ENOMEM, "expect ENOMEM for claim_memory() with claims > spare pages");
+}
+
+static int d2_claim_expect_enomem_node(struct test_ctx *ctx, uint64_t claims)
+{
+    return lib_expect_claim_memory_failure(
+        ctx, ctx->dom_2, 1,
+        /* Request more than the spare to ensure failure */
+        &(memory_claim_t){.pages = claims, .target = ctx->target1}, ENOMEM,
+        "expect ENOMEM for claim_memory() with claims > spare pages");
+}
+
+/*
+ * I2-1
+ *
+ * Create a legacy global claim for d1 using claim_pages and assert that
+ * claim calls for d2 that exceed the unclaimed memory fail with ENOMEM.
+ */
+static int test_claim_pages_causes_enomem(struct test_ctx *ctx)
+{
+    uint64_t free_pages;
+
+    /* Get the global free memory for sizing the claim */
+    lib_get_global_free_pages(ctx, &free_pages);
+    ctx->alloc_pages = free_pages - SPARE_PAGES;
+
+    snprintf(ctx->result->params, sizeof(ctx->result->params),
+             "claim=%" PRIu64 " global=%" PRIu64, ctx->alloc_pages, free_pages);
+
+    rc = lib_claim_pages_legacy(
+        ctx, ctx->dom_1, ctx->alloc_pages,
+        "dom_1: claim nearly all global memory with claim_pages");
+    if ( rc )
+        return rc;
+
+    rc = d2_claim_expect_enomem_global(ctx, SPARE_PAGES * 2);
+    if ( !rc )
+        rc = d2_claim_expect_enomem_node(ctx, SPARE_PAGES * 2);
+    return rc;
+}
+
+/*
+ * I2-2
+ *
+ * Create a global claim for d1 using claim_memory and assert that
+ * claim calls for d2 that exceed the unclaimed memory fail with ENOMEM.
+ */
+static int test_claim_memory_causes_enomem(struct test_ctx *ctx)
+{
+    if ( lib_claim_all_on_host(ctx, ctx->dom_1, SPARE_PAGES) )
+        return -1;
+    rc = d2_claim_expect_enomem_global(ctx, SPARE_PAGES * 2);
+    if ( !rc )
+        rc = d2_claim_expect_enomem_node(ctx, SPARE_PAGES * 2);
+    return rc;
+}
+
+/*
+ * I2-3
+ *
+ * Create a primary-node claim for d1 using claim_memory and assert that
+ * claim calls for d2 that exceed the unclaimed memory fail with ENOMEM.
+ */
+static int test_claim_prima_causes_enomem(struct test_ctx *ctx)
+{
+    if ( lib_claim_all_on_node(ctx, ctx->dom_1, ctx->target1, SPARE_PAGES) )
+        return -1;
+    return d2_claim_expect_enomem_node(ctx, SPARE_PAGES * 2);
+}
diff --git a/tools/tests/mem-claim/libtestclaims.c b/tools/tests/mem-claim/libtestclaims.c
new file mode 100644
index 000000000000..c4c1a63e1856
--- /dev/null
+++ b/tools/tests/mem-claim/libtestclaims.c
@@ -0,0 +1,995 @@
+/* SPDX-License-Identifier: GPL-2.0-only */
+/*
+ * Functional system test framework for testing memory claims in Xen.
+ *
+ * See test-claim-memory.c for details on a test suite using this framework
+ * and the verifications it is designed to perform on behalf of a test suite.
+ *
+ * Besides providing the test suite with functionality to validate the
+ * effects of memory claims on the system, such as querying memory state,
+ * creating and destroying test domains, performing claim operations and
+ * populating memory, it also provides a consistent way to manage test
+ * state and record failures with detailed messages that include the
+ * current step, test parameters, and a snapshot of relevant memory
+ * state to aid in diagnosing issues when a test fails.
+ *
+ * It also provides the framework to select test cases, run them, and
+ * restore the system to a clean state after tests by destroying test
+ * domains to release populated memory and claims, even if a test fails
+ * partway through.
+ *
+ * The functions cover:
+ *
+ * - Managing the test_ctx structure which holds the test environment,
+ *   configuration, and results.
+ *
+ * - Providing helper functions to:
+ *   - Create and destroy domains for testing, which are needed to make claims
+ *   - Query the system's memory state in terms of free pages and outstanding
+ *     claims, which are used for sizing claims and verifying their effects.
+ *   - Perform claim operations and check their effects on the system.
+ *   - Populate memory to test the blocking effects of claims.
+ *   - Record failures with detailed messages that include the current step,
+ *     test parameters, and a snapshot of relevant memory state.
+ *
+ * - Cleanup the test environment by destroying domains after tests, ensuring
+ *   that claims are released and the system is left in a clean state even
+ *   if a test fails partway through.
+ *
+ * - Providing a consistent way to skip tests when preconditions are not met,
+ *   such as insufficient free memory or lack of multiple NUMA nodes.
+ *
+ * - Ensuring that all interactions with Xen are checked for errors, and that
+ *   any failures are reported with detailed diagnostics.
+ *
+ * - Test cases should use the provided helper functions to perform all
+ *   operations that interact with Xen or manage test state to ensure
+ *   consistent failure reporting and cleanup.
+ */
+#include <err.h>
+#include <errno.h>
+#include <getopt.h>
+#include <inttypes.h>
+#include <stdarg.h>
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+#include <time.h>
+
+#include <xen-tools/common-macros.h>
+
+#include "libtestclaims.h"
+
+int rc;
+static int step;
+static const struct option long_options[] = {
+    {"help",    no_argument,       NULL, 'h'},
+    {"list",    no_argument,       NULL, 'l'},
+    {"test",    required_argument, NULL, 't'},
+    {"verbose", no_argument,       NULL, 'v'},
+    {NULL,      0,                 NULL, 0  },
+};
+
+/* --- diagnostics helpers --- */
+
+/* Append formatted text to a buffer, ensuring it is always null-terminated. */
+void lib_appendf(char *buf, size_t size, const char *fmt, ...)
+{
+    va_list ap;
+    size_t used = strlen(buf);
+
+    if ( used >= size )
+        return;
+
+    va_start(ap, fmt);
+    vsnprintf(buf + used, size - used, fmt, ap);
+    va_end(ap);
+}
+
+/* Print debug information if verbose mode is enabled. */
+void lib_debugf(struct test_ctx *ctx, const char *fmt, ...)
+{
+    va_list ap;
+
+    if ( !ctx->cfg->verbose )
+        return;
+
+    fputs("      debug: ", stdout);
+
+    va_start(ap, fmt);
+    vprintf(fmt, ap);
+    va_end(ap);
+
+    fputc('\n', stdout);
+}
+
+/*
+ * Set the current test step description, which is included in failure reports.
+ * If verbose mode is enabled, also print the step to stdout.
+ */
+void lib_set_step(struct test_ctx *ctx, const char *fmt, ...)
+{
+    va_list ap;
+
+    va_start(ap, fmt);
+    vsnprintf(ctx->step, sizeof(ctx->step), fmt, ap);
+    va_end(ap);
+
+    if ( ctx->cfg->verbose )
+        printf("      step %d: %s\n", ++step, ctx->step);
+}
+
+/*
+ * Record a test failure with a formatted message and errno, and include the
+ * current step, test parameters, and a snapshot of relevant memory state in
+ * the details.
+ */
+static void append_snapshot(struct test_ctx *ctx)
+{
+    xc_physinfo_t physinfo;
+    unsigned int nodes[2] = {ctx->target1, ctx->target2};
+
+    xc_physinfo(ctx->env->xch, &physinfo);
+    ctx_appendf(ctx,
+                "\n    snapshot: free_pages=%" PRIu64
+                ", outstanding_pages=%" PRIu64,
+                physinfo.free_pages, physinfo.outstanding_pages);
+
+    /* Include their free/total pages at the time of failure in the snapshot. */
+    for ( size_t i = 0; i < ARRAY_SIZE(nodes); i++ )
+    {
+        unsigned long free_pages, total_pages;
+        unsigned int node = nodes[i];
+
+        if ( node == INVALID_NODE )
+            continue;
+        if ( i == 1 && node == nodes[0] )
+            continue;
+
+        lib_get_node_free_pages(ctx, node, &free_pages, &total_pages);
+        ctx_appendf(ctx, "\n    snapshot: node%u free=%lu total=%lu", node,
+                    free_pages, total_pages);
+    }
+}
+
+/*
+ * Record a test failure with a formatted message and the given errno.
+ *
+ * Include the current step, test parameters, and a snapshot of relevant
+ * memory state in the details.
+ */
+int lib_fail_with_errno(struct test_ctx *ctx, int errnum, const char *fmt, ...)
+{
+    va_list ap;
+
+    ctx->result->status     = TEST_FAILED;
+    ctx->result->details[0] = '\0';
+
+    ctx_appendf(ctx, "step=%s", ctx->step[0] ? ctx->step : "(not set)");
+    ctx_appendf(ctx, "\n    dom_1=%u dom_2=%u target1=%s target2=%s",
+                ctx->dom_1, ctx->dom_2,
+                ctx->target1 == INVALID_NODE ? "n/a" : "set",
+                ctx->target2 == INVALID_NODE ? "n/a" : "set");
+
+    if ( ctx->target1 != INVALID_NODE )
+        ctx_appendf(ctx, " (%" PRIu64 ")", ctx->target1);
+    if ( ctx->target2 != INVALID_NODE )
+        ctx_appendf(ctx, " (%" PRIu64 ")", ctx->target2);
+
+    ctx_appendf(ctx, "\n    alloc_pages=%lu", ctx->alloc_pages);
+
+    ctx_appendf(ctx, "\n    cause: ");
+    va_start(ap, fmt);
+    vsnprintf(ctx->result->details + strlen(ctx->result->details),
+              sizeof(ctx->result->details) - strlen(ctx->result->details), fmt,
+              ap);
+    va_end(ap);
+
+    if ( errnum )
+        ctx_appendf(ctx, "\n    errno=%d (%s)", errnum, strerror(errnum));
+
+    append_snapshot(ctx);
+    return -1;
+}
+
+/*
+ * Record a test failure with a formatted message and the current errno.
+ *
+ * Calls lib_fail_with_errno() to do the actual recording, passing the current
+ * errno.
+ */
+int lib_fail(struct test_ctx *ctx, const char *fmt, ...)
+{
+    va_list ap;
+    int saved_errno = errno;
+    char message[1024];
+
+    va_start(ap, fmt);
+    vsnprintf(message, sizeof(message), fmt, ap);
+    va_end(ap);
+
+    return lib_fail_with_errno(ctx, saved_errno, "%s", message);
+}
+
+/*
+ * Record that a test was skipped with a formatted message.
+ *
+ * Include the message in the details to explain why the test was skipped.
+ */
+int lib_skip_test(struct test_ctx *ctx, const char *fmt, ...)
+{
+    va_list ap;
+
+    ctx->result->status     = TEST_SKIPPED;
+    ctx->result->details[0] = '\0';
+
+    va_start(ap, fmt);
+    vsnprintf(ctx->result->details, sizeof(ctx->result->details), fmt, ap);
+    va_end(ap);
+
+    return 1;
+}
+
+/* --- memory-state queries --- */
+
+/* Get the number of free and total pages for a specific NUMA node. */
+int lib_get_node_free_pages(struct test_ctx *ctx, unsigned int node,
+                            uint64_t *free_pages, uint64_t *total_pages)
+{
+    struct test_env *env = ctx->env;
+
+    if ( node >= env->num_nodes ) /* Check node validity */
+        return lib_fail(ctx, "Invalid node %u/%u", node, env->num_nodes);
+
+    if ( xc_numainfo(env->xch, &env->num_nodes, env->meminfo, NULL) )
+        return lib_fail(ctx, "xc_numainfo failed to get node memory info");
+
+    *free_pages = env->meminfo[node].memfree / XC_PAGE_SIZE;
+    if ( total_pages )
+        *total_pages = env->meminfo[node].memsize / XC_PAGE_SIZE;
+    return 0;
+}
+
+/* Get the total number of free pages available across all nodes. */
+int lib_get_global_free_pages(struct test_ctx *ctx, uint64_t *free_pages)
+{
+    struct test_env *env = ctx->env;
+    uint64_t free_bytes;
+
+    if ( xc_availheap(env->xch, 0, 0, -1, &free_bytes) )
+        return lib_fail(ctx, "xc_availheap failed to get global pages");
+
+    *free_pages = free_bytes / XC_PAGE_SIZE;
+    return 0;
+}
+
+/* Get the current number of outstanding pages. */
+int lib_get_total_claims(struct test_ctx *ctx,
+                         uint64_t        *outstanding_pages_global)
+{
+    xc_physinfo_t physinfo;
+
+    if ( xc_physinfo(ctx->env->xch, &physinfo) )
+        return lib_fail(ctx, "xc_physinfo failed to get outstanding pages");
+    *outstanding_pages_global = physinfo.outstanding_pages;
+    return 0;
+}
+
+/* --- claim check operations --- */
+
+/* Check the current outstanding pages against the expected value. */
+int lib_check_claim(struct test_ctx *ctx, uint64_t baseline_outstanding,
+                    uint64_t expected_delta, const char *reason)
+{
+    xc_physinfo_t physinfo;
+    uint64_t expected = baseline_outstanding + expected_delta;
+
+    lib_set_step(ctx, "%s", reason);
+    if ( xc_physinfo(ctx->env->xch, &physinfo) )
+        return lib_fail(ctx, "xc_physinfo failed to get outstanding pages");
+
+    if ( physinfo.outstanding_pages != expected )
+        return lib_fail_with_errno(
+            ctx, 0, "expected outstanding_pages=%" PRIu64 ", got %" PRIu64,
+            expected, physinfo.outstanding_pages);
+    return 0;
+}
+
+/* --- domain lifecycle --- */
+
+/*
+ * Create a domain with the specified configuration and label.
+ * Record a failure if the creation or maxmem setting fails.
+ *
+ * On success, the new domain ID is stored in *domid.
+ */
+int lib_create_domain(struct test_ctx *ctx, uint32_t *domid, const char *label)
+{
+    struct xen_domctl_createdomain create = ctx->env->create_template;
+
+    lib_set_step(ctx, "create %s domain", label);
+    *domid = DOMID_INVALID;
+    if ( xc_domain_create(ctx->env->xch, domid, &create) )
+        return lib_fail(ctx, "xc_domain_create(%s) failed", label);
+
+    lib_set_step(ctx, "set maxmem for %s domain", label);
+    if ( xc_domain_setmaxmem(ctx->env->xch, *domid, -1) )
+    {
+        lib_destroy_domain(ctx, domid, label);
+        return lib_fail(ctx, "xc_domain_setmaxmem(%s) failed", label);
+    }
+
+    return 0;
+}
+
+/*
+ * Destroy the specified domain, if it is valid.
+ * Add the destroy step with the given label to the current test description.
+ * Record a failure if the destroy operation fails.
+ *
+ * This should be called during test cleanup to ensure domains are destroyed
+ * and claims are released even if a test fails partway through.
+ */
+int lib_destroy_domain(struct test_ctx *ctx, uint32_t *domid, const char *label)
+{
+    if ( *domid == DOMID_INVALID )
+        return 0;
+
+    lib_set_step(ctx, "destroy %s domain", label);
+    rc     = xc_domain_destroy(ctx->env->xch, *domid);
+    *domid = DOMID_INVALID;
+    if ( rc )
+    {
+        if ( ctx->result->status == TEST_FAILED )
+        {
+            ctx_appendf(ctx,
+                        "\n    cleanup: xc_domain_destroy(%s) failed: %d (%s)",
+                        label, errno, strerror(errno));
+            return -1;
+        }
+
+        return lib_fail(ctx, "xc_domain_destroy(%s) failed", label);
+    }
+
+    return 0;
+}
+
+/* --- claim operations --- */
+
+/*
+ * Attempt to claim memory with the specified parameters.
+ * Record the failure if the claim operation fails.
+ */
+int lib_claim_memory(struct test_ctx *ctx, uint32_t domid, uint32_t nr_claims,
+                     memory_claim_t *claims, const char *reason)
+{
+    lib_set_step(ctx, "%s", reason);
+    rc = xc_domain_claim_memory(ctx->env->xch, domid, nr_claims, claims);
+    if ( rc )
+    {
+        uint64_t outstanding_pages, node_free, total_pages;
+
+        lib_get_node_free_pages(ctx, ctx->target1, &node_free, &total_pages);
+        lib_get_total_claims(ctx, &outstanding_pages);
+
+        return lib_fail(ctx,
+                        "xc_domain_claim_memory failed: node=%" PRIu64
+                        "\n    total_outstanding: %" PRIu64
+                        "\n          total_pages: %" PRIu64
+                        "\n      node free_pages: %" PRIu64,
+                        ctx->target1, outstanding_pages, total_pages,
+                        node_free);
+    }
+    return rc;
+}
+
+/*
+ * Attempt to claim memory with the specified parameters, expecting it to fail
+ * with the specified errno. Record a failure if it does not fail as expected.
+ */
+int lib_expect_claim_memory_failure(struct test_ctx *ctx, uint32_t domid,
+                                    uint32_t nr_claims, memory_claim_t *claims,
+                                    int expected_errno, const char *reason)
+{
+    lib_set_step(ctx, "%s", reason);
+    rc = xc_domain_claim_memory(ctx->env->xch, domid, nr_claims, claims);
+    if ( rc == -1 && errno == expected_errno )
+        return 0;
+
+    return lib_fail_with_errno(ctx, errno,
+                               "expected xc_domain_claim_memory() to fail with "
+                               "errno=%d (%s), got rc=%d",
+                               expected_errno, strerror(expected_errno), rc);
+}
+
+/*
+ * Release all claims for the specified domain by setting a global claim with
+ * zero pages. Record the failure if the claim release operation fails.
+ */
+int lib_release_all_claims(struct test_ctx *ctx, uint32_t domid)
+{
+    memory_claim_t claim = {
+        .pages  = 0,
+        .target = XEN_DOMCTL_CLAIM_MEMORY_GLOBAL,
+    };
+
+    lib_set_step(ctx, "release all claims with global zero claim");
+    rc = xc_domain_claim_memory(ctx->env->xch, domid, 1, &claim);
+    if ( rc )
+        return lib_fail(ctx, "xc_domain_claim_memory(..., global=0) failed");
+    return 0;
+}
+
+/*
+ * Claim all available memory on the host except for a specified number
+ * of pages to spare. Record the failure if the claim operation fails.
+ */
+int lib_claim_all_on_host(struct test_ctx *ctx, uint32_t domid,
+                          unsigned int spare)
+{
+    unsigned long free_pages;
+    unsigned long claim_pages = 0;
+
+    lib_set_step(ctx, "claim all except %u pages on host", spare);
+    lib_get_global_free_pages(ctx, &free_pages);
+    if ( free_pages <= spare )
+        return lib_fail(ctx, "Not enough free pages @ host, spare=%u, free=%lu",
+                        spare, free_pages);
+
+    claim_pages += free_pages - spare;
+    snprintf(ctx->result->params, sizeof(ctx->result->params),
+             "claim all pages except %u pages on host claim=%lu free=%lu",
+             spare, claim_pages, free_pages);
+    return lib_claim_memory(
+        ctx, domid, 1,
+        &(memory_claim_t){.pages  = claim_pages,
+                          .target = XEN_DOMCTL_CLAIM_MEMORY_GLOBAL},
+        ctx->result->params);
+}
+
+/*
+ * Claim all available memory on the specified node except for a specified
+ * number of pages to spare. Record the failure if the claim operation fails.
+ *
+ * This is used to set up a claim that exhausts the free memory on a specific
+ * node, which is needed to test the behavior of claims that target specific
+ * nodes and the global claim accounting that tracks them. The spare pages are
+ * needed to ensure that the claim can be successfully installed and leave some
+ * free pages on the node leave a little breathing room for other allocations
+ * and not cause the test to fail because of a minor fluctuation in free memory
+ * that causes unexpected differences in the expected vs actual page counts.
+ *
+ * This function also checks that the delta of global outstanding claims before
+ * and after the claim matches the expected delta based on the number of pages
+ * claimed, accounting for any existing claims the domain had before making the
+ * claim, since these existing claims are already part of the global outstanding
+ * claims, so we need to account for them in the expected delta when we check
+ * the global delta after the claim.
+ *
+ * It also checks that the domain's outstanding claims after the claim matches
+ * the number of pages claimed, ensuring that the claim was correctly installed.
+ */
+int lib_claim_all_on_node(struct test_ctx *ctx, uint32_t domid,
+                          unsigned int node, unsigned int spare)
+{
+    uint64_t global_before, global_after, free_pages, claim_pages = 0;
+    uint64_t dom_claims_before;
+    xc_domaininfo_t info;
+
+    lib_set_step(ctx, "claim all except %u pages on node %u", spare, node);
+    lib_get_node_free_pages(ctx, node, &free_pages, NULL);
+    if ( free_pages <= spare )
+        return lib_fail(ctx, "Not enough pages @ node %u, spare=%u, free=%lu",
+                        node, spare, free_pages);
+
+    claim_pages += free_pages - spare;
+    snprintf(ctx->result->params, sizeof(ctx->result->params),
+             "claim all pages except %u pages on node %u claim=%lu free=%lu",
+             spare, node, claim_pages, free_pages);
+
+    /*
+     * Get the domain's outstanding claims before making the claim to check the
+     * delta after the claim: If the domain had existing claims, these claims
+     * are already part of the global outstanding claims, so we need to account
+     * for them when we check the global delta after the claim to ensure it
+     * matches the expected delta.
+     */
+    if ( xc_domain_getinfo_single(ctx->env->xch, domid, &info) )
+        return lib_fail(ctx, "xc_domain_getinfo failed to get domain claims");
+    dom_claims_before = info.outstanding_pages;
+
+    /*
+     * Get the global outstanding claims before making the claim to check the
+     * delta after the claim.
+     */
+    lib_get_total_claims(ctx, &global_before);
+    rc = lib_claim_memory(
+        ctx, domid, 1, &(memory_claim_t){.pages = claim_pages, .target = node},
+        ctx->result->params);
+    if ( rc )
+        return rc;
+    lib_get_total_claims(ctx, &global_after);
+
+    if ( xc_domain_getinfo_single(ctx->env->xch, domid, &info) )
+        return lib_fail(ctx, "xc_domain_getinfo failed to get domain claims");
+
+    if ( info.outstanding_pages != claim_pages )
+        return lib_fail(ctx, "unexpected claims installation: exp=%lu, got=%lu",
+                        claim_pages, info.outstanding_pages);
+
+    if ( global_after - global_before != claim_pages - dom_claims_before )
+        return lib_fail(ctx, "unexp. global delta @ node %u: exp=%lu, got=%lu",
+                        node, claim_pages, global_before - global_after);
+    return 0;
+}
+
+/*
+ * Attempt to claim memory with the legacy xc_domain_claim_pages() API.
+ * Record the failure if the claim operation fails.
+ */
+int lib_claim_pages_legacy(struct test_ctx *ctx, uint32_t domid,
+                           unsigned long nr_pages, const char *reason)
+{
+    lib_set_step(ctx, "%s", reason);
+    rc = xc_domain_claim_pages(ctx->env->xch, domid, nr_pages);
+    if ( rc )
+        return lib_fail(ctx, "xc_domain_claim_pages(%lu) failed", nr_pages);
+    return 0;
+}
+
+/*
+ * Attempt to claim memory with the legacy xc_domain_claim_pages() API.
+ * Expect it to fail with the specified errno.
+ * Record a failure on success or if it fails with an unexpected errno.
+ */
+int lib_claim_pages_legacy_failure(struct test_ctx *ctx, uint32_t domid,
+                                   unsigned long request, int expected_errno,
+                                   const char *reason)
+{
+    uint64_t outstanding_claims, free_pages;
+
+    /*
+     * Sanity check: Check that there are not enough free pages for installing
+     * the claim, as this is the only condition under which the claim install
+     * is expected to fail with ENOMEM. If this fails, the previous actions
+     * of the test did not properly set up the expected conditions for the
+     * claim to fail, so we record this as the cause of failure.
+     */
+    lib_get_total_claims(ctx, &outstanding_claims);
+    lib_get_global_free_pages(ctx, &free_pages);
+    if ( request < free_pages - outstanding_claims )
+        return lib_fail(ctx,
+                        "too many unclaimed pages to expect ENOMEM: "
+                        "request=%lu, free=%" PRIu64 " - claims=%" PRIu64
+                        "=%" PRIu64,
+                        request, free_pages, outstanding_claims,
+                        free_pages - outstanding_claims);
+    lib_set_step(ctx, "%s", reason);
+    rc = xc_domain_claim_pages(ctx->env->xch, domid, request);
+    if ( rc == -1 && errno == expected_errno )
+        return 0;
+
+    return lib_fail_with_errno(ctx, errno,
+                               "expected xc_domain_claim_pages() to fail "
+                               "with errno=%d(%s), got rc=%d",
+                               expected_errno, strerror(expected_errno), rc);
+}
+
+/* --- physmap population --- */
+
+/*
+ * Private helper function to populate extents at the specified GPFN
+ * with the xc_domain_populate_physmap() API, and return the result code.
+ *
+ * Tests may use its callers lib_populate_success() or lib_populate_failure()
+ * which record the failure the actual result did not match the expectation.
+ */
+static int lib_populate_physmap(struct test_ctx *ctx, lib_populate_args_t args)
+{
+    xen_pfn_t *frames;
+
+    frames = calloc(args.nr_extents, sizeof(*frames));
+    if ( !frames )
+        return lib_fail(ctx, "calloc(%lu) failed", args.nr_extents);
+
+    for ( unsigned long i = 0; i < args.nr_extents; i++ )
+        frames[i] = args.start + i;
+
+    errno = 0;
+    rc    = xc_domain_populate_physmap_exact(ctx->env->xch, args.domid,
+                                             args.nr_extents, args.order,
+                                             args.flags, frames);
+    free(frames);
+    return rc;
+}
+
+/*
+ * Populate extents at the specified GPFN with checking if it
+ * succeeded. Record the failure with diagnostics if it did not.
+ */
+int lib_populate_success(struct test_ctx *ctx, lib_populate_args_t args)
+{
+    rc = lib_populate_physmap(ctx, args);
+    if ( rc )
+        return lib_fail(ctx, "expected populate to succeed for node %u",
+                        XENMEMF_get_node(args.flags));
+    return 0;
+}
+
+/*
+ * Attempt to populate extents at the specified GPFN with checking if it
+ * failed. Record a failure with diagnostics if it did not fail as expected.
+ */
+int lib_populate_failure(struct test_ctx *ctx, lib_populate_args_t args)
+{
+    rc = lib_populate_physmap(ctx, args);
+    if ( rc == 0 )
+        return lib_fail_with_errno(
+            ctx, 0, "expected exact-node populate to fail for node %u",
+            XENMEMF_get_node(args.flags));
+    return 0;
+}
+
+/* --- test runner --- */
+
+static double timespec_diff_ms(const struct timespec *start,
+                               const struct timespec *end)
+{
+    double sec  = (double)(end->tv_sec - start->tv_sec);
+    double nsec = (double)(end->tv_nsec - start->tv_nsec);
+
+    return sec * 1000.0 + nsec / 1e6;
+}
+
+static void usage(FILE *stream, const char *prog)
+{
+    fprintf(stream,
+            "Usage: %s [OPTIONS]\n\n"
+            "Options:\n"
+            "  -l, --list         List available test IDs and exit\n"
+            "  -t, --test ID      Run only the specified test ID (repeatable)\n"
+            "  -v, --verbose      Print per-step progress\n"
+            "  -h, --help         Show this help text\n",
+            prog);
+}
+
+int lib_print_available_tests(const struct test_case *cases, size_t num_cases)
+{
+    puts("Available tests:");
+    for ( size_t i = 0; i < num_cases; i++ )
+        printf("  %s  %s\n", cases[i].id, cases[i].name);
+    return 0;
+}
+
+/*
+ * Parse command-line arguments to configure the test run.
+ * It populates the runtime_config struct with the parsed configuration,
+ * including test IDs and the verbose flag.
+ *
+ * It supports filtering tests by test ID and enabling verbose output.
+ * If --list is specified, prints available tests and exits.
+ * By default, all tests will be run with concise output.
+ * If cfg.list_only is set, the caller should exit after this function returns.
+ *
+ * Returns 0 on success, or 1 on failure (invalid arguments)
+ */
+int lib_parse_args(int argc, char *argv[], struct runtime_config *cfg)
+{
+    int opt;
+
+    while ( (opt = getopt_long(argc, argv, "hlt:v", long_options, NULL)) != -1 )
+    {
+        switch ( opt )
+        {
+        case 'h':
+            usage(stdout, argv[0]);
+        case 'l':
+            cfg->list_only = true;
+            break;
+
+        case 't':
+            if ( cfg->nr_selected_ids >= ARRAY_SIZE(cfg->selected_ids) )
+                errx(1, "too many --test selectors (max %zu)",
+                     ARRAY_SIZE(cfg->selected_ids));
+            cfg->selected_ids[cfg->nr_selected_ids++] = optarg;
+            break;
+
+        case 'v':
+            cfg->verbose = true;
+            break;
+
+        default:
+            usage(stderr, argv[0]);
+            return 1;
+        }
+    }
+
+    if ( cfg->list_only )
+        return 0;
+
+    printf("========= testcase program: %s ==========\n", argv[0]);
+    if ( cfg->nr_selected_ids )
+    {
+        printf("Selected %zu test(s):\n", cfg->nr_selected_ids);
+        for ( size_t i = 0; i < cfg->nr_selected_ids; i++ )
+            printf("  %s\n", cfg->selected_ids[i]);
+    }
+    return 0;
+}
+
+/*
+ * Run a single test case, capturing results and ensuring cleanup.
+ *
+ * Outstanding claims are tracked baseline_outstanding are are checked
+ * to be reset to the baseline at the end of the test, ensuring that all
+ * claims are released after each test case.
+ *
+ * Returns 0 on success, or -1 on failure with result details populated.
+ */
+int lib_run_one_test(struct test_env *env, const struct runtime_config *cfg,
+                     const struct test_case *test, struct test_result *result)
+{
+    struct test_ctx ctx = {
+        .env         = env,
+        .cfg         = cfg,
+        .result      = result,
+        .dom_1       = DOMID_INVALID,
+        .dom_2       = DOMID_INVALID,
+        .target1     = env->primary_node,
+        .target2     = INVALID_NODE,
+        .alloc_pages = 0,
+        .step        = "",
+    };
+    uint64_t baseline_outstanding;
+    struct timespec start, end;
+
+    if ( env->num_nodes >= 2 )
+        ctx.target2 = env->secondary_node;
+
+    result->test        = test;
+    result->status      = TEST_PASSED;
+    result->params[0]   = '\0';
+    result->details[0]  = '\0';
+    result->duration_ms = 0.0;
+
+    /*
+     * Fixture: capture baseline, create the primary domain, run the test
+     * body, then always destroy any remaining test domains and verify
+     * outstanding pages returned to baseline.
+     */
+    rc = lib_get_total_claims(&ctx, &baseline_outstanding);
+    if ( rc )
+        goto out;
+
+    rc = lib_create_domain(&ctx, &ctx.dom_1, "primary");
+    if ( rc )
+        goto out;
+
+    rc = lib_create_domain(&ctx, &ctx.dom_2, "secondary");
+    if ( rc )
+        goto out;
+
+    clock_gettime(CLOCK_MONOTONIC, &start);
+
+    errno = 0;
+    rc    = test->test(&ctx); /* Run the test body */
+
+    clock_gettime(CLOCK_MONOTONIC, &end);
+    result->duration_ms = timespec_diff_ms(&start, &end);
+
+    if ( rc > 0 && result->status == TEST_SKIPPED )
+        rc = 0;
+
+out:
+    /* Cleanup test domains without affecting the return code if rc != 0 */
+    if ( lib_destroy_domain(&ctx, &ctx.dom_2, "helper") && !rc )
+        rc = -1;
+
+    if ( lib_destroy_domain(&ctx, &ctx.dom_1, "primary") && !rc )
+        rc = -1;
+
+    if ( !rc &&
+         lib_check_claim(&ctx, baseline_outstanding, 0,
+                         "check cleanup restored baseline claimed pages") )
+        rc = -1;
+
+    if ( rc < 0 )
+        result->status = TEST_FAILED;
+
+    return rc;
+}
+
+/*
+ * Run all test cases, filtering based on the runtime configuration, and print
+ * results to stdout. Each test case is run with lib_run_one_test() which
+ * captures detailed diagnostics on failure.
+ */
+void lib_run_tests(struct test_env *env, char *argv0,
+                   const struct runtime_config *cfg,
+                   const struct test_case      *test_cases,
+                   unsigned int num_test_cases, struct test_result *results)
+{
+    for ( size_t i = 0; i < num_test_cases; i++ )
+    {
+        struct test_result *result = &results[i];
+
+        if ( !test_is_selected(cfg, &test_cases[i]) )
+            continue;
+
+        lib_run_one_test(env, cfg, &test_cases[i], result);
+
+        /* Print a summary: test, result, including parameters and duration. */
+        printf("%s::%s [%s] %s (%.2f ms)\n", argv0, result->test->id,
+               result->params[0] ? result->params : "default",
+               status_name(result->status), result->duration_ms);
+
+        if ( result->status == TEST_FAILED || result->status == TEST_SKIPPED )
+            printf("    %s\n", result->details);
+    }
+}
+
+/*
+ * Print a concise summary of test results, including counts of passed, failed,
+ * and skipped tests, and details for any failures or skips.
+ */
+int lib_summary(const struct test_result *results, unsigned int num_results)
+{
+    unsigned int passed = 0, failed = 0, skipped = 0;
+
+    puts("================== short test summary info =================");
+    for ( size_t i = 0; i < num_results; i++ )
+    {
+        if ( !results[i].test )
+            continue;
+
+        printf("%s %s %s\n", status_name(results[i].status),
+               results[i].test->id, results[i].test->name);
+
+        switch ( results[i].status )
+        {
+        case TEST_PASSED:
+            passed++;
+            break;
+        case TEST_FAILED:
+            failed++;
+            printf("    %s\n", results[i].details);
+            break;
+        case TEST_SKIPPED:
+            skipped++;
+            printf("    %s\n", results[i].details);
+            break;
+        }
+    }
+    printf("============ %u passed, %u failed, %u skipped ============\n",
+           passed, failed, skipped);
+    return failed;
+}
+
+/* Update the create_template structure based on the host's capabilities */
+static void fixup_create_template(struct xen_domctl_createdomain *create,
+                                  const xc_physinfo_t            *physinfo)
+{
+#if defined(__x86_64__) || defined(__i386__)
+    if ( !(physinfo->capabilities & XEN_SYSCTL_PHYSCAP_hap) )
+        create->flags &= ~XEN_DOMCTL_CDF_hap;
+
+    if ( !(physinfo->capabilities &
+           (XEN_SYSCTL_PHYSCAP_hap | XEN_SYSCTL_PHYSCAP_shadow)) ||
+         !(physinfo->capabilities & XEN_SYSCTL_PHYSCAP_hvm) )
+    {
+        create->flags &= ~XEN_DOMCTL_CDF_hvm;
+        create->arch.emulation_flags = 0;
+    }
+#else
+    (void)physinfo;
+#endif
+}
+
+/*
+ * Initialise the test environment by opening the Xen control interface,
+ * querying the number of NUMA nodes, and populating memory information.
+ * Returns 0 on success, or -1 on failure with errno set.
+ */
+int lib_initialise_test_env(struct test_env *env)
+{
+    xc_physinfo_t physinfo;
+
+    env->xch = xc_interface_open(NULL, NULL, 0);
+    if ( !env->xch )
+        err(1, "xc_interface_open");
+
+    /*
+     * Get the number of nodes to allocate xc_meminfo_t structures for.
+     * If NUMA is disabled, this will return one node, so we can still
+     * run tests that don't require > 1 NUMA node on non-NUMA hosts.
+     */
+    xc_numainfo(env->xch, &env->num_nodes, NULL, NULL);
+
+    /* Allocate memory for xc_meminfo_t structures */
+    env->meminfo = calloc(env->num_nodes, sizeof(*env->meminfo));
+    if ( !env->meminfo )
+        err(1, "calloc");
+
+    /* Populate meminfo structures with current data */
+    xc_numainfo(env->xch, &env->num_nodes, env->meminfo, NULL);
+    xc_physinfo(env->xch, &physinfo);
+
+    /* Initialise the create_template structure */
+    env->create_template = (struct xen_domctl_createdomain){
+        .flags            = XEN_DOMCTL_CDF_hvm | XEN_DOMCTL_CDF_hap,
+        .max_vcpus        = 1,
+        .max_grant_frames = 1,
+        .grant_opts       = XEN_DOMCTL_GRANT_version(1),
+#if defined(__x86_64__) || defined(__i386__)
+        .arch = { .emulation_flags = XEN_X86_EMU_LAPIC, },
+#endif
+    };
+    /* Update the create_template structure based on the host's capabilities */
+    fixup_create_template(&env->create_template, &physinfo);
+
+    env->primary_node        = 0;
+    env->secondary_node      = 0;
+    env->have_secondary_node = false;
+
+    /*
+     * Pick the node with the most free memory as the primary node, and if
+     * there's a second node, pick the one with the next most free memory as
+     * the secondary.
+     */
+    for ( unsigned int i = 1; i < env->num_nodes; i++ )
+    {
+        if ( env->meminfo[i].memfree > env->meminfo[env->primary_node].memfree )
+        {
+            env->secondary_node      = env->primary_node;
+            env->primary_node        = i;
+            env->have_secondary_node = true;
+        }
+        else if ( !env->have_secondary_node ||
+                  env->meminfo[i].memfree >
+                  env->meminfo[env->secondary_node].memfree )
+        {
+            env->secondary_node      = i;
+            env->have_secondary_node = true;
+        }
+    }
+
+    if ( env->num_nodes < 2 )
+        env->have_secondary_node = false;
+    else if ( env->secondary_node == env->primary_node )
+    {
+        for ( unsigned int i = 0; i < env->num_nodes; i++ )
+        {
+            if ( i != env->primary_node )
+            {
+                env->secondary_node      = i;
+                env->have_secondary_node = true;
+                break;
+            }
+        }
+    }
+
+    return 0;
+}
+
+/* Free allocated memory and close the Xen control interface */
+void lib_release_test_env(struct test_env *env)
+{
+    free(env->meminfo);
+    env->meminfo = NULL;
+
+    if ( env->xch )
+    {
+        xc_interface_close(env->xch);
+        env->xch = NULL;
+    }
+}
+
+/*
+ * Local variables:
+ * mode: C
+ * c-file-style: "BSD"
+ * c-basic-offset: 4
+ * tab-width: 4
+ * indent-tabs-mode: nil
+ * End:
+ */
diff --git a/tools/tests/mem-claim/libtestclaims.h b/tools/tests/mem-claim/libtestclaims.h
new file mode 100644
index 000000000000..66aa6bc2da10
--- /dev/null
+++ b/tools/tests/mem-claim/libtestclaims.h
@@ -0,0 +1,202 @@
+/* SPDX-License-Identifier: GPL-2.0-only */
+/*
+ * Header file for the functional system test framework
+ * testing for memory claims in the Xen hypervisor.
+ *
+ * This header declares the interface for the test framework implemented
+ * in libtestclaims.c.
+ *
+ * It includes the definitions of the test environment, test context, and
+ * helper functions for performing memory claim operations, querying memory
+ * state, managing test domains, and recording test results.
+ */
+#ifndef _LIBTEST_MEM_CLAIMS_
+#define _LIBTEST_MEM_CLAIMS_
+
+#include <limits.h>
+#include <stdbool.h>
+#include <stdint.h>
+#include <stdlib.h>
+
+#include <xenctrl.h>
+
+#define MAX_SELECTED_TESTS 32
+#define INVALID_NODE       UINT_MAX
+#define SPARE_PAGES        200
+
+struct test_env {
+    xc_interface                  *xch;
+    struct xen_domctl_createdomain create_template;
+    unsigned int                   num_nodes;
+    unsigned int                   primary_node;
+    unsigned int                   secondary_node;
+    bool                           have_secondary_node;
+    xc_meminfo_t                  *meminfo;
+};
+
+struct runtime_config {
+    const char *selected_ids[MAX_SELECTED_TESTS];
+    size_t      nr_selected_ids;
+    bool        list_only;
+    bool        verbose;
+};
+
+enum test_status {
+    TEST_PASSED,
+    TEST_FAILED,
+    TEST_SKIPPED,
+};
+
+struct test_case;
+
+struct test_result {
+    const struct test_case *test;
+    enum test_status        status;
+    char                    params[256];
+    char                    details[4096];
+    double                  duration_ms;
+};
+
+struct test_ctx {
+    struct test_env             *env;
+    const struct runtime_config *cfg;
+    struct test_result          *result;
+    uint32_t                     dom_1;
+    uint32_t                     dom_2;
+    uint64_t                     target1;
+    uint64_t                     target2;
+    uint64_t                     alloc_pages;
+    char                         step[160];
+};
+
+struct lib_populate_physmap_args {
+    uint32_t      domid;
+    xen_pfn_t     start;
+    unsigned long nr_extents;
+    unsigned int  order;
+    unsigned int  flags;
+};
+typedef struct lib_populate_physmap_args lib_populate_args_t;
+
+/*
+ * test_fn_t: the test body.  Called after the fixture has created
+ * ctx->domid and captured a baseline outstanding-pages count.  Tests needing
+ * extra domains should create and destroy them explicitly.
+ * Returns 0 on pass, -1 on fail, 1 on skip.
+ */
+typedef int (*test_fn_t)(struct test_ctx *ctx);
+
+struct test_case {
+    const char *id;
+    const char *name;
+    test_fn_t   test;
+};
+
+/* --- diagnostics helpers --- */
+void lib_appendf(char *buf, size_t size, const char *fmt, ...)
+__attribute__((format(printf, 3, 4)));
+
+/* Append a formatted string to ctx->result->details. */
+#define ctx_appendf(ctx, ...)                                               \
+        lib_appendf((ctx)->result->details, sizeof((ctx)->result->details), \
+                    __VA_ARGS__)
+void lib_debugf(struct test_ctx *ctx, const char *fmt, ...)
+__attribute__((format(printf, 2, 3)));
+void lib_set_step(struct test_ctx *ctx, const char *fmt, ...)
+__attribute__((format(printf, 2, 3)));
+int lib_fail_with_errno(struct test_ctx *ctx, int errnum, const char *fmt, ...)
+__attribute__((format(printf, 3, 4)));
+int lib_fail(struct test_ctx *ctx, const char *fmt, ...)
+__attribute__((format(printf, 2, 3)));
+int lib_skip_test(struct test_ctx *ctx, const char *fmt, ...)
+__attribute__((format(printf, 2, 3)));
+
+/* --- memory-state queries --- */
+int lib_get_node_free_pages(struct test_ctx *ctx, unsigned int node,
+                            unsigned long *free_pages,
+                            unsigned long *total_pages);
+int lib_get_global_free_pages(struct test_ctx *ctx, unsigned long *free_pages);
+int lib_get_total_claims(struct test_ctx *ctx,
+                         uint64_t        *outstanding_pages_global);
+int lib_check_claim(struct test_ctx *ctx, uint64_t baseline_outstanding,
+                    uint64_t expected_delta, const char *reason);
+
+/* --- domain lifecycle --- */
+int lib_create_domain(struct test_ctx *ctx, uint32_t *domid, const char *label);
+int lib_destroy_domain(struct test_ctx *ctx, uint32_t *domid,
+                       const char *label);
+
+/* --- claim operations --- */
+int lib_claim_memory(struct test_ctx *ctx, uint32_t domid, uint32_t nr_claims,
+                     memory_claim_t *claims, const char *reason);
+int lib_expect_claim_memory_failure(struct test_ctx *ctx, uint32_t domid,
+                                    uint32_t nr_claims, memory_claim_t *claims,
+                                    int expected_errno, const char *reason);
+int lib_release_all_claims(struct test_ctx *ctx, uint32_t domid);
+int lib_claim_pages_legacy(struct test_ctx *ctx, uint32_t domid,
+                           unsigned long nr_pages, const char *reason);
+int lib_claim_pages_legacy_failure(struct test_ctx *ctx, uint32_t domid,
+                                   unsigned long nr_pages, int expected_errno,
+                                   const char *reason);
+int lib_claim_all_on_host(struct test_ctx *ctx, uint32_t domid,
+                          unsigned int spare);
+int lib_claim_all_on_node(struct test_ctx *ctx, uint32_t domid, uint32_t node,
+                          uint32_t spare);
+
+/* --- physmap --- */
+int lib_populate_success(struct test_ctx *ctx, lib_populate_args_t args);
+int lib_populate_failure(struct test_ctx *ctx, lib_populate_args_t args);
+
+/* --- test runner --- */
+int  lib_print_available_tests(const struct test_case *cases, size_t num_cases);
+int  lib_parse_args(int argc, char *argv[], struct runtime_config *cfg);
+int  lib_run_one_test(struct test_env *env, const struct runtime_config *cfg,
+                      const struct test_case *test, struct test_result *result);
+void lib_run_tests(struct test_env *env, char *argv0,
+                   const struct runtime_config *cfg,
+                   const struct test_case      *test_cases,
+                   unsigned int num_test_cases, struct test_result *results);
+int  lib_summary(const struct test_result *results, unsigned int num_results);
+int  lib_initialise_test_env(struct test_env *env);
+void lib_release_test_env(struct test_env *env);
+unsigned long lib_default_alloc_pages(unsigned long free_pages);
+
+extern int rc;
+
+static inline const char *status_name(enum test_status status)
+{
+    switch ( status )
+    {
+    case TEST_PASSED:
+        return "PASSED";
+    case TEST_FAILED:
+        return "FAILED";
+    case TEST_SKIPPED:
+        return "SKIPPED";
+    }
+    return "UNKNOWN";
+}
+
+static inline bool test_is_selected(const struct runtime_config *cfg,
+                                    const struct test_case      *test)
+{
+    if ( !cfg->nr_selected_ids )
+        return true;
+
+    for ( size_t i = 0; i < cfg->nr_selected_ids; i++ )
+        if ( !strcmp(cfg->selected_ids[i], test->id) )
+            return true;
+    return false;
+}
+
+#endif /* _LIBTEST_MEM_CLAIMS_ */
+
+/*
+ * Local variables:
+ * mode: C
+ * c-file-style: "BSD"
+ * c-basic-offset: 4
+ * tab-width: 4
+ * indent-tabs-mode: nil
+ * End:
+ */
diff --git a/tools/tests/mem-claim/test-claim-memory.c b/tools/tests/mem-claim/test-claim-memory.c
new file mode 100644
index 000000000000..4ea94515ed22
--- /dev/null
+++ b/tools/tests/mem-claim/test-claim-memory.c
@@ -0,0 +1,129 @@
+/* SPDX-License-Identifier: GPL-2.0-only */
+/*
+ * Functional system test suite for testing memory claims in Xen.
+ *
+ * It is designed to test the xc_domain_claim_memory() API and
+ * to reconfirm the xc_domain_claim_pages() API and interacts
+ * with the running Xen hypervisor in Dom0 using libxenctrl.
+ *
+ * The verifications performed by the test cases include:
+ *
+ * - Validating that claims can be successfully made with valid parameters
+ *   and that they have the expected effects on the system's memory state,
+ *   such as increasing the number of outstanding claimed pages.
+ *
+ * - Validating that invalid claim attempts are rejected with the expected
+ *   error codes, such as EINVAL for invalid parameters or ENOMEM when
+ *   claiming more pages than are free.
+ *
+ * - Validating the effects of memory claims on the system, such as blocking
+ *   effects when claiming more pages than are free or left unclaimed by
+ *   other domains, and the guarantees provided by claims such as reserved
+ *   claimed pages not being allocated to other domains.
+ *
+ * For the need to perform these verifications, the test cases interact
+ * with the Xen hypervisor to query the system's memory state, create and
+ * destroy test domains, perform claim operations, and populate memory to
+ * test the blocking effects of claims.
+ *
+ * As the act of testing the blocking effects of claims involves allocating
+ * memory from the system, other operations that interact with the system's
+ * memory state should be avoided or kept to a minimum during the test run
+ * to avoid interference with the test results.
+ *
+ * During these interactions, the test cases record successes and failures
+ * with detailed messages that include the current step, test parameters,
+ * and a snapshot of relevant memory state to aid in diagnosing issues
+ * when a test fails.
+ *
+ * The test suite also ensures that domains are destroyed after tests to
+ * clean up claims and leave the system in a clean state, even if a test
+ * fails partway through.
+ *
+ * Some test cases that require multiple NUMA nodes can be skipped if the
+ * system does not have a 2nd NUMA node, allowing the test suite to be run
+ * on single-node systems as well.
+ *
+ * It is designed to run on a quiet system as it stakes claims on the system's
+ * memory and verifies their effects, by allocating against the running system
+ * Xen hypervisor in Dom0 using libxenctrl.
+ */
+#include <err.h>
+#include <errno.h>
+#include <limits.h>
+#include <stdio.h>
+#include <inttypes.h>
+#include <stdlib.h>
+#include <string.h>
+
+#include <xen-tools/common-macros.h>
+
+#include "libtestclaims.h"
+#include "accounting-1.h"
+#include "input-phase1.h"
+#include "input-phase2.h"
+
+/* Short helper to declare test cases more concisely. */
+#define CASE(ID, NAME, FN)                           \
+        {                                            \
+            .id = (ID), .name = (NAME), .test = (FN) \
+        }
+
+/*
+ * List of test cases.  lib_run_tests() iterates over this list to run tests.
+ *
+ * Tests are identified by their id (e.g. "A1-1") and have a descriptive name
+ * and a function pointer to the test implementation.
+ */
+static const struct test_case cases[] = {
+    CASE("A1-1", "basic_node_claim", test_basic_node_claim),
+    CASE("A1-2", "global_replace_after_alloc", test_global_replace_after_alloc),
+    CASE("A1-3", "node_replace_after_alloc", test_node_replace_after_alloc),
+    CASE("A1-4", "legacy_global_claim", test_legacy_global_claim),
+    CASE("A1-5", "move_claim_between_nodes", test_move_claim_between_nodes),
+    CASE("A1-6", "zero_claim_resets_claim", test_zero_claim_resets_claim),
+    CASE("A1-7", "zero_claim_memory_reset", test_zero_claim_memory_resets),
+    CASE("I1-1", "reject_non_present_node", test_reject_non_present_node),
+    CASE("I1-2", "reject_too_many_claims", test_reject_too_many_claims),
+    CASE("I1-3", "reject_node_gt_uint8_max", test_reject_node_gt_uint8_max),
+    CASE("I1-4", "reject_pages_gt_int32_max", test_reject_pages_gt_int32_max),
+    CASE("I1-5", "reject_nonzero_pad", test_reject_nonzero_pad),
+    CASE("I1-6", "reject_zero_claim_count", test_reject_zero_claim_count),
+    CASE("I1-7", "null_claims_nonzero_count", test_null_claims_nonzero_count),
+    CASE("I1-8", "zero_count_with_pointer", test_zero_count_valid_pointer),
+    CASE("I1-9", "claim_pages_gt_free_enomem", test_claim_pages_gt_free_enomem),
+    CASE("I2-1", "claim_pages_causes_enomem", test_claim_pages_causes_enomem),
+    CASE("I2-2", "claim_memory_causes_enomem", test_claim_memory_causes_enomem),
+    CASE("I2-3", "claim_prima_causes_enomem", test_claim_prima_causes_enomem),
+};
+
+/* Test entry point */
+int main(int argc, char **argv)
+{
+    struct test_result results[ARRAY_SIZE(cases)] = {};
+    struct runtime_config cfg = {};
+    struct test_env env = {};
+    int retval;
+
+    retval = lib_parse_args(argc, argv, &cfg);
+    if ( cfg.list_only )
+        return lib_print_available_tests(cases, ARRAY_SIZE(cases));
+    if ( !retval )
+    {
+        lib_initialise_test_env(&env);
+        lib_run_tests(&env, argv[0], &cfg, cases, ARRAY_SIZE(cases), results);
+        retval = lib_summary(results, ARRAY_SIZE(results));
+        lib_release_test_env(&env);
+    }
+    return retval ? EXIT_FAILURE : EXIT_SUCCESS;
+}
+
+/*
+ * Local variables:
+ * mode: C
+ * c-file-style: "BSD"
+ * c-basic-offset: 4
+ * tab-width: 4
+ * indent-tabs-mode: nil
+ * End:
+ */
-- 
2.39.5



From xen-devel-bounces@lists.xenproject.org Tue Apr 14 14:02:02 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 14 Apr 2026 14:02:02 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1281998.1564703 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wCeKm-00015A-K7; Tue, 14 Apr 2026 14:01:44 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1281998.1564703; Tue, 14 Apr 2026 14: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 1wCeKm-000153-GI; Tue, 14 Apr 2026 14:01:44 +0000
Received: by outflank-mailman (input) for mailman id 1281998;
 Tue, 14 Apr 2026 14:01:43 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <Luca.Fancellu@arm.com>) id 1wCeKk-00014x-SB
 for xen-devel@lists.xenproject.org; Tue, 14 Apr 2026 14:01:43 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wCeKk-006AC3-8x
 for xen-devel@lists.xenproject.org; Tue, 14 Apr 2026 16:01:42 +0200
Received: from [10.42.69.2] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <Luca.Fancellu@arm.com>)
 id 69de48c5-e002-0a2a0a5209dd-0a2a4502e28c-0
 for <xen-devel@lists.xenproject.org>; Tue, 14 Apr 2026 16:01:41 +0200
Received: from [52.101.66.68]
 (helo=DUZPR83CU001.outbound.protection.outlook.com)
 by tlsNG-720697.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.0)
 (envelope-from <Luca.Fancellu@arm.com>)
 id 69de48c5-42fa-0a2a45020019-34654244a55d-4
 for <xen-devel@lists.xenproject.org>; Tue, 14 Apr 2026 16:01:41 +0200
Received: from CWLP123CA0190.GBRP123.PROD.OUTLOOK.COM (2603:10a6:400:19c::10)
 by VI0PR08MB11432.eurprd08.prod.outlook.com (2603:10a6:800:301::15)
 with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9769.48; Tue, 14 Apr
 2026 14:01:36 +0000
Received: from AM4PEPF00027A66.eurprd04.prod.outlook.com
 (2603:10a6:400:19c:cafe::e1) by CWLP123CA0190.outlook.office365.com
 (2603:10a6:400:19c::10) with Microsoft SMTP Server (version=TLS1_3,
 cipher=TLS_AES_256_GCM_SHA384) id 15.20.9769.48 via Frontend Transport; Tue,
 14 Apr 2026 14:01:36 +0000
Received: from outbound-uk1.az.dlp.m.darktrace.com (4.158.2.129) by
 AM4PEPF00027A66.mail.protection.outlook.com (10.167.16.91) with Microsoft
 SMTP Server (version=TLS1_3, cipher=TLS_AES_256_GCM_SHA384) id 15.20.9769.17
 via Frontend Transport; Tue, 14 Apr 2026 14:01:36 +0000
Received: from DU2PR08MB7272.eurprd08.prod.outlook.com (2603:10a6:10:2d7::16)
 by PAVPR08MB9185.eurprd08.prod.outlook.com (2603:10a6:102:30d::16)
 with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9769.48; Tue, 14 Apr
 2026 14:00:33 +0000
Received: from DU2PR08MB7272.eurprd08.prod.outlook.com
 ([fe80::5d34:206f:373:a323]) by DU2PR08MB7272.eurprd08.prod.outlook.com
 ([fe80::5d34:206f:373:a323%6]) with mapi id 15.20.9769.046; Tue, 14 Apr 2026
 14:00: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=arm.com header.i="@arm.com" header.h="From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck"; dkim=pass header.s=selector1 header.d=arm.com header.i="@arm.com" header.h="From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck"
ARC-Seal: i=2; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=pass;
 b=sERpPIsvjS70YwPBDDruA0xoNJE7/O+OV1Ed7NLjtrcl2tK1jLoeRpwHWiEWEElULf+AlOlgsoAnE6AvFa3GWZY18He383C/NNZYiBNgmPiZMAttFvA6bfWTI2OFM2N9gzIO1cyYgTYoOjxyKvQawEHORN4qlv22HE4JOYV8aI5oVc5S6UKhMDl/NTqH9iZibaxP3yrRTv0MUlWvMXAJScJPb9JR3PGR19cNW+flkLc0Xzsa3ATFq72zr/Q9/FNAZZHF5Yr3Jvwme+hRgsUXekv+oP8m9Ag8F50H8GzXLdWX8mvkJ5j0GZyw0tSLQyoeM8mot/sg1Edn4k14jAT2wQ==
ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com;
 s=arcselector10001;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1;
 bh=e/4wpittnPMP+IMBMpKGM7HFyqEM2qlCacWZP4+2o9c=;
 b=g0S1N3UoedM/2U+ucINbtuQwPN9JpEWq5sZba1ii8mLC2i6927QjWp90wW8NUQsMk4THZolhUMNtxcAshAafok/rODsv3NY50wZkmUdA1bbcDm+tA2bCX6m+8zkL7maJdiHCd210Kw3jqqs63fic3Z/65fsCY40HKN4Tc4qQ5D8ydCcqKftwvsyTH3wLsp0v2lCIivl4NNNKJdozp0jjf4/56q7yhNPuwMH62RugJRb9lc+vf2W1Q7Y/dDQuw5/Ed0dFKX5Qpv2GoTRrg2XISAIvzsymtjX5WijlKKF2UmpTpjEanLICEdhiOv6ntVpUNniGUgjPU0imXmohEimbuA==
ARC-Authentication-Results: i=2; mx.microsoft.com 1; spf=pass (sender ip is
 4.158.2.129) smtp.rcpttodomain=amd.com smtp.mailfrom=arm.com; dmarc=pass
 (p=none sp=none pct=100) action=none header.from=arm.com; dkim=pass
 (signature was verified) header.d=arm.com; arc=pass (0 oda=1 ltdi=1
 spf=[1,1,smtp.mailfrom=arm.com] dkim=[1,1,header.d=arm.com]
 dmarc=[1,1,header.from=arm.com])
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=arm.com; s=selector1;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck;
 bh=e/4wpittnPMP+IMBMpKGM7HFyqEM2qlCacWZP4+2o9c=;
 b=e2avLYTY5M22waajNS/e2QQkodS74hZHCHeKoVqsQ2n+NnEUvf8ancWRbmUUVr/8IgZw0iyWLDi2lj1h+uId5X8axmGuQN44CKi9kiKfMJ3JU48pW3iiKHTjhtFIKdlF0EwmlTF2rwC7PVLI6JOT99npkFIioYT8c3uZBu2oBGQ=
X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 4.158.2.129)
 smtp.mailfrom=arm.com; dkim=pass (signature was verified)
 header.d=arm.com;dmarc=pass action=none header.from=arm.com;
Received-SPF: Pass (protection.outlook.com: domain of arm.com designates
 4.158.2.129 as permitted sender) receiver=protection.outlook.com;
 client-ip=4.158.2.129; helo=outbound-uk1.az.dlp.m.darktrace.com; pr=C
ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none;
 b=YMbnOSiJiY1JByKzj9Gxnc/elnpZBW8pDo2h/VNrPXL3Z5MS9pm73X06vDIZX6EEnC1ag9tDq9RdcaY/z5KgAdxHe+WmW57W263YbQ0HjL0BCm7Ig6zW+wJ3L7VdLF5BQAw8heHJ2JME2TD+5/UmQvlMl2BXp3P8Fo/wH73yomLSRL/KVSKbs/aZhR2yv8NrtUEJno7P2tS0GWA3rIeWxwsgXK23Y2aH+UdU64BL2Xu2uFKQsIWNCNqJz5dPE0m6xenUG17AR+CKXKZcQVRD1PrwqWk/xGLO5XkU9SQI2z7irfM18noeBquI4gBlwPFLGUA+tgiFkWCdZcbGA+MA6A==
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com;
 s=arcselector10001;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1;
 bh=e/4wpittnPMP+IMBMpKGM7HFyqEM2qlCacWZP4+2o9c=;
 b=brZDQ5ZqVLtgcRmWBsG/sjzMZwq/l/YaNwQrlk7QYqoFyatt0939RmInYbh5H1Gad4uRd78GawK0SRAYvepJpB8vj+5LYBGDowwVLSgmdpf9DCAp30oWYeE7rfWLgtfW4NFtMCzVfMHAjrmVJd6tdrP1eXANBetWuLN9k/WoJJgK/dpC3I9eXmoLlcQKPgqnMMD214xIs+Mzczrru0bb7GAj1YGqIFbNKb82GejUOzs9h0rpfLLS4gq/Kwp6YNQiTm46heTg2cjvAgiOv2qzkhum2GrlMHpjLEcIa0UUwwfulDZa7wYWzHzgfkyrfh5EfjGwcdw5vAziCSS2vxGTsA==
ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass
 smtp.mailfrom=arm.com; dmarc=pass action=none header.from=arm.com; dkim=pass
 header.d=arm.com; arc=none
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=arm.com; s=selector1;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck;
 bh=e/4wpittnPMP+IMBMpKGM7HFyqEM2qlCacWZP4+2o9c=;
 b=e2avLYTY5M22waajNS/e2QQkodS74hZHCHeKoVqsQ2n+NnEUvf8ancWRbmUUVr/8IgZw0iyWLDi2lj1h+uId5X8axmGuQN44CKi9kiKfMJ3JU48pW3iiKHTjhtFIKdlF0EwmlTF2rwC7PVLI6JOT99npkFIioYT8c3uZBu2oBGQ=
From: Luca Fancellu <Luca.Fancellu@arm.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>, Volodymyr Babchuk
	<Volodymyr_Babchuk@epam.com>, Mark Rutland <Mark.Rutland@arm.com>
Subject: Re: [PATCH] xen/arm64: flushtlb: Optimize
 ARM64_WORKAROUND_REPEAT_TLBI
Thread-Topic: [PATCH] xen/arm64: flushtlb: Optimize
 ARM64_WORKAROUND_REPEAT_TLBI
Thread-Index: AQHcy+Zsv818FERxykqUrZrX/7GOFLXeli0A
Date: Tue, 14 Apr 2026 14:00:32 +0000
Message-ID: <5098DD0F-9FA9-469B-BAAA-2CA0C1382FA0@arm.com>
References: <20260414081124.48741-1-michal.orzel@amd.com>
In-Reply-To: <20260414081124.48741-1-michal.orzel@amd.com>
Accept-Language: en-GB, en-US
Content-Language: en-US
X-MS-Has-Attach:
X-MS-TNEF-Correlator:
x-mailer: Apple Mail (2.3826.700.81.1.6)
Authentication-Results-Original: dkim=none (message not signed)
 header.d=none;dmarc=none action=none header.from=arm.com;
x-ms-traffictypediagnostic:
	DU2PR08MB7272:EE_|PAVPR08MB9185:EE_|AM4PEPF00027A66:EE_|VI0PR08MB11432:EE_
X-MS-Office365-Filtering-Correlation-Id: 86d2f5fe-322d-4d5b-f695-08de9a2e57b9
x-checkrecipientrouted: true
nodisclaimer: true
X-MS-Exchange-SenderADCheck: 1
X-MS-Exchange-AntiSpam-Relay: 0
X-Microsoft-Antispam-Untrusted:
 BCL:0;ARA:13230040|1800799024|366016|376014|38070700021|22082099003|18002099003|56012099003;
X-Microsoft-Antispam-Message-Info-Original:
 ljwnV+OXguAx/VIdeYGG3ewEoihRzuq2QnbsWtoKZTV05EiJtgX0MizVKCMHW5JL1KSwcx4auj91YYI432u/+BXL0fRb0togdKbIgugR33NSBF5X3Iapkt4XM6k9aIzhNazxFVWMYqOUV6u6R33JPMro06htz78xp2IWLBm1O+rGMtZX7ZSYSuOVdrurfFb2TbzduYl2vZ7s8T2MWEXFzdhm3b0QeZndpdwPDnkSiQkbeyTqKr4dd9QR+9uBm1UVbU+ka7HU+VHQHJEDtMbvcJjLwghvqX8iwVpGDAvykVI2PZGzezbB8EQeUwyn3d6bP1jkEovFl0uKu+W64wEpCzqDSnDoVwVc3KkTl5Y7P9zaLUyzVSaad1bXXkW9uIgVr8ggl9xZ0Nyj7jrTqoEBmh+0UsHmFvb2op9kMHeD9EW4cme+rt201BQgS22HqPRQoVj7D49d4zPV7pU7DDUJp8R4kXG2Z1yoC16gafXySPcfSm5WpnmTVOQfb2GNtI9IykXX2cGF8RVodmXOadnLzq5rwFsLdmOycTFHaTDth01xmROjTnr+olqdUf/5ocJUsswbQPpXrCOrJAyFk7xGpYHpEawK++wAFR9/6UfT/g2kcCiGL9dqYAU/IM9jAuyWSUcrQe7JPNI0L0h4lpSc2LpOzGJ2kFyv2SBxH/b+WLNxcZiBBtHrjEDjtgt9ppMOmd2OvrxkR/NfhmsSmiV9cpTnXCgeGvqmp7o9d6PmUbJ+S60ASAEkgASYjIZeX6ZpmAv530zWLXIfY0+AR2LtNHUDAa7CrREF9xo+PeNFX9k=
X-Forefront-Antispam-Report-Untrusted:
 CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:DU2PR08MB7272.eurprd08.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(1800799024)(366016)(376014)(38070700021)(22082099003)(18002099003)(56012099003);DIR:OUT;SFP:1101;
Content-Type: text/plain; charset="utf-8"
Content-ID: <B83097778CEFAC469B0802511B7BDB3E@eurprd08.prod.outlook.com>
Content-Transfer-Encoding: base64
MIME-Version: 1.0
X-Exchange-RoutingPolicyChecked:
 T7tvkjsMV5c0ezP7liZRwlwwCnV/0DRbRnLLSkzaOKgpwh4RCVsdCLQN/8JhKC05RWMy7MOkteabOXPpWiu5b/Zl0PEt02o9oggDu/p2Rvq83uHoHOhLttKOla+/kavDzxoUh63PD5LC7oZ4oOf0cef5b1e0FyDtPY8pNvHwc9NM1OtnEc9MXfUvZY6bOf6F8i1vAs/3jmyXskQXDVmI+sdCnjn7Pe20SqX/wxBSQ86MuKDoO9TN74VdJFS8gmX61DzHFL6tOShjC2uhOJ6QBZ+cBPMlXGVoau8mStSel/cdWoUd6gmjUfSDPyXT6p9UFFFC7imb4Lm0G8tJT9hbmA==
X-MS-Exchange-Transport-CrossTenantHeadersStamped: PAVPR08MB9185
X-EOPAttributedMessage: 0
X-MS-Exchange-Transport-CrossTenantHeadersStripped:
 AM4PEPF00027A66.eurprd04.prod.outlook.com
X-MS-PublicTrafficType: Email
X-MS-Office365-Filtering-Correlation-Id-Prvs:
	3569d87b-cd57-4d10-08cf-08de9a2e31f3
X-Microsoft-Antispam:
	BCL:0;ARA:13230040|36860700016|376014|14060799003|1800799024|35042699022|82310400026|18002099003|56012099003|22082099003;
X-Microsoft-Antispam-Message-Info:
	wofQTS2n3td6ST4WskbaJXEiHhaFdkDrlcfeq/7F6IbPaXigVjFM4twgalQFrqbpWIAmwIQ7ZIRO6Y9xonHa4m/xhqsnx013iK/68Oo7XgxymAYX62owEC4dTkma7kXQLhgeseo1PxtZ4/XifwX3tgafKeogC42nQ1Dxg1UK1PzvRNKDa6OGVvR9BRXLTw/oN9TFvwHsyzQ76cgT9F8KseXA3Wg4/yZEbVNo/9llRaoXcWieRAhChua6WDq8R/maMc89WRfcd8kBq8mmRtM5eckKQ1C/5h1L9SbH6733m0s9o8Lgpdj1oXGpoHJdXa7eTs+V/YvRDh3fDK54ohiIlayg4MgcGHTBET5p675I3gGmbI1A4DJf5RmzoBE1vKaL3oSwdhodCF0xWvYlxQvlworeXaG51l4WLpX80Oa2UUAAs3EL3vyuOi0TVKzcCKO/nSmb47FA7/hWxc57l0eq/C2gbHkrvEqRwH9yLLxaRL5v/AylkrvNWeBpbH8MPALUCc0FNUTioduywotZcR/Eslw3FKPg4LfYelAKfGsOfsRx7zuJJnFd0G/TRw57GjLhCy3ArxhR2h9aCqrkDNhdT92A/WDCzLN1DYGGm6pZ+eF3iX6zglBhTzVqMp8KDLAAHs1R8cKu4KH8kzrh07vnFUUDYSl1yxb8OaiKz5XJRdT1/QB+84SFQQESJwFPdTp7zJi389vb2o02thMovJXS2Qm8UyEbSAamVfWu053i+1ZmY6HW6DaOVw4tWWi+Fgoz8fEeda1NQskWdL1rCp/r8g==
X-Forefront-Antispam-Report:
	CIP:4.158.2.129;CTRY:GB;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:outbound-uk1.az.dlp.m.darktrace.com;PTR:InfoDomainNonexistent;CAT:NONE;SFS:(13230040)(36860700016)(376014)(14060799003)(1800799024)(35042699022)(82310400026)(18002099003)(56012099003)(22082099003);DIR:OUT;SFP:1101;
X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1
X-MS-Exchange-AntiSpam-MessageData-0:
	1Qvxl2zx61bJk4xjGl7GAjsJujQ0Kz2w1qo5AYT8jauuGzf6R+Y2dFTJlYsIRaYeQ4cf/Enl2BYjnKy9lJXynBcQ46itvneO1PURplZh+jUS7D0vHafkMFItCSaIrCdz/M/u/PKDT1143Wfd8wMYrmNOcYDYWc20FizdqslJx4DMUto9Gdm+J6ohnga8tVBrCQhCod/jbtFrLxrhJKDS3R6LUzZieekWkd+8Z2k2EgKGa7vc9QQOCHX0jsn0mjDhpdeJwNZs+mkEfHhj7xn8RkzemyH22PP46FhuDB3ok10W3UEX+x19GpyK2y0WdbUlPjv5OjVrPoEpyvR8I8cY89I8xuBdEDru2CVKpA+wfLiSDUosngCLZd7RH3BN1EJMoBEpWjNzXe8sP641I05oRvriaEqqaf78isWKL0p4KGu7O8atrXwYlcz3IaxiLy2T
X-OriginatorOrg: arm.com
X-MS-Exchange-CrossTenant-OriginalArrivalTime: 14 Apr 2026 14:01:36.3005
 (UTC)
X-MS-Exchange-CrossTenant-Network-Message-Id: 86d2f5fe-322d-4d5b-f695-08de9a2e57b9
X-MS-Exchange-CrossTenant-Id: f34e5979-57d9-4aaa-ad4d-b122a662184d
X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=f34e5979-57d9-4aaa-ad4d-b122a662184d;Ip=[4.158.2.129];Helo=[outbound-uk1.az.dlp.m.darktrace.com]
X-MS-Exchange-CrossTenant-AuthSource:
	AM4PEPF00027A66.eurprd04.prod.outlook.com
X-MS-Exchange-CrossTenant-AuthAs: Anonymous
X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem
X-MS-Exchange-Transport-CrossTenantHeadersStamped: VI0PR08MB11432
X-purgate-ID: tlsNG-720697/1776175301-4792ECD1-C92A8D0A/0/0
X-purgate-type: clean
X-purgate-size: 18076

SGkgTWljaGFsLA0KDQo+IE9uIDE0IEFwciAyMDI2LCBhdCAwOToxMSwgTWljaGFsIE9yemVsIDxt
aWNoYWwub3J6ZWxAYW1kLmNvbT4gd3JvdGU6DQo+IA0KPiBUaGUgQVJNNjRfV09SS0FST1VORF9S
RVBFQVRfVExCSSB3b3JrYXJvdW5kIGlzIHVzZWQgdG8gbWl0aWdhdGUgc2V2ZXJhbA0KPiBlcnJh
dGEgd2hlcmUgYnJvYWRjYXN0IFRMQkk7RFNCIHNlcXVlbmNlcyBkb24ndCBwcm92aWRlIGFsbCB0
aGUNCj4gYXJjaGl0ZWN0dXJhbGx5IHJlcXVpcmVkIHN5bmNocm9uaXphdGlvbi4gVGhlIHdvcmth
cm91bmQgcGVyZm9ybXMgbW9yZQ0KPiB3b3JrIHRoYW4gbmVjZXNzYXJ5LCBhbmQgY2FuIGhhdmUg
c2lnbmlmaWNhbnQgb3ZlcmhlYWQuIFRoaXMgcGF0Y2gNCj4gb3B0aW1pemVzIHRoZSB3b3JrYXJv
dW5kLCBhcyBleHBsYWluZWQgYmVsb3cuDQo+IA0KPiAxLiBBbGwgcmVsZXZhbnQgZXJyYXRhIG9u
bHkgYWZmZWN0IHRoZSBvcmRlcmluZyBhbmQvb3IgY29tcGxldGlvbiBvZg0KPiAgIG1lbW9yeSBh
Y2Nlc3NlcyB3aGljaCBoYXZlIGJlZW4gdHJhbnNsYXRlZCBieSBhbiBpbnZhbGlkYXRlZCBUTEIN
Cj4gICBlbnRyeS4gVGhlIGFjdHVhbCBpbnZhbGlkYXRpb24gb2YgVExCIGVudHJpZXMgaXMgdW5h
ZmZlY3RlZC4NCj4gDQo+IDIuIFRoZSBleGlzdGluZyB3b3JrYXJvdW5kIGlzIGFwcGxpZWQgdG8g
Ym90aCBicm9hZGNhc3QgYW5kIGxvY2FsIFRMQg0KPiAgIGludmFsaWRhdGlvbiwgd2hlcmVhcyBm
b3IgYWxsIHJlbGV2YW50IGVycmF0YSBpdCBpcyBvbmx5IG5lY2Vzc2FyeSB0bw0KPiAgIGFwcGx5
IGEgd29ya2Fyb3VuZCBmb3IgYnJvYWRjYXN0IGludmFsaWRhdGlvbi4NCj4gDQo+IDMuIFRoZSBl
eGlzdGluZyB3b3JrYXJvdW5kIHJlcGxhY2VzIGV2ZXJ5IFRMQkkgd2l0aCBhIFRMQkk7RFNCO1RM
QkkNCj4gICBzZXF1ZW5jZSwgd2hlcmVhcyBmb3IgYWxsIHJlbGV2YW50IGVycmF0YSBpdCBpcyBv
bmx5IG5lY2Vzc2FyeSB0bw0KPiAgIGV4ZWN1dGUgYSBzaW5nbGUgYWRkaXRpb25hbCBUTEJJO0RT
QiBzZXF1ZW5jZSBhZnRlciBhbnkgbnVtYmVyIG9mDQo+ICAgVExCSXMgYXJlIGNvbXBsZXRlZCBi
eSBhIERTQi4NCj4gDQo+ICAgRm9yIGV4YW1wbGUsIGZvciBhIHNlcXVlbmNlIG9mIGJhdGNoZWQg
VExCSXM6DQo+IA0KPiAgICAgICBUTEJJIDxvcDE+WywgPGFyZzE+XQ0KPiAgICAgICBUTEJJIDxv
cDI+WywgPGFyZzI+XQ0KPiAgICAgICBUTEJJIDxvcDM+WywgPGFyZzM+XQ0KPiAgICAgICBEU0Ig
SVNIDQo+IA0KPiAgIC4uLiB0aGUgZXhpc3Rpbmcgd29ya2Fyb3VuZCB3aWxsIGV4cGFuZCB0aGlz
IHRvOg0KPiANCj4gICAgICAgVExCSSA8b3AxPlssIDxhcmcxPl0NCj4gICAgICAgRFNCIElTSCAg
ICAgICAgICAgICAgICAgIC8vIGFkZGl0aW9uYWwNCj4gICAgICAgVExCSSA8b3AxPlssIDxhcmcx
Pl0gICAgIC8vIGFkZGl0aW9uYWwNCj4gICAgICAgVExCSSA8b3AyPlssIDxhcmcyPl0NCj4gICAg
ICAgRFNCIElTSCAgICAgICAgICAgICAgICAgIC8vIGFkZGl0aW9uYWwNCj4gICAgICAgVExCSSA8
b3AyPlssIDxhcmcyPl0gICAgIC8vIGFkZGl0aW9uYWwNCj4gICAgICAgVExCSSA8b3AzPlssIDxh
cmczPl0NCj4gICAgICAgRFNCIElTSCAgICAgICAgICAgICAgICAgIC8vIGFkZGl0aW9uYWwNCj4g
ICAgICAgVExCSSA8b3AzPlssIDxhcmczPl0gICAgIC8vIGFkZGl0aW9uYWwNCj4gICAgICAgRFNC
IElTSA0KPiANCj4gICAuLi4gd2hlcmVhcyBpdCBpcyBzdWZmaWNpZW50IHRvIGhhdmU6DQo+IA0K
PiAgICAgICBUTEJJIDxvcDE+WywgPGFyZzE+XQ0KPiAgICAgICBUTEJJIDxvcDI+WywgPGFyZzI+
XQ0KPiAgICAgICBUTEJJIDxvcDM+WywgPGFyZzM+XQ0KPiAgICAgICBEU0IgSVNIDQo+ICAgICAg
IFRMQkkgPG9wWD5bLCA8YXJnWD5dICAgICAvLyBhZGRpdGlvbmFsDQo+ICAgICAgIERTQiBJU0gg
ICAgICAgICAgICAgICAgICAvLyBhZGRpdGlvbmFsDQo+IA0KPiAgIFVzaW5nIGEgc2luZ2xlIGFk
ZGl0aW9uYWwgVEJMSSBhbmQgRFNCIGF0IHRoZSBlbmQgb2YgdGhlIHNlcXVlbmNlIGNhbg0KDQpO
SVQ6IFR5cG8gcy9UQkxJL1RMQkkNCg0KPiAgIGhhdmUgc2lnbmlmaWNhbnRseSBsb3dlciBvdmVy
aGVhZCBhcyBlYWNoIERTQiB3aGljaCBjb21wbGV0ZXMgYSBUTEJJDQo+ICAgbXVzdCBzeW5jaHJv
bml6ZSB3aXRoIG90aGVyIFBFcyBpbiB0aGUgc3lzdGVtLCB3aXRoIHBvdGVudGlhbA0KPiAgIHBl
cmZvcm1hbmNlIGVmZmVjdHMgYm90aCBsb2NhbGx5IGFuZCBzeXN0ZW0td2lkZS4NCj4gDQo+IDQu
IFRoZSBleGlzdGluZyB3b3JrYXJvdW5kIHJlcGVhdHMgZWFjaCBzcGVjaWZpYyBUTEJJIG9wZXJh
dGlvbiwgd2hlcmVhcw0KPiAgIGZvciBhbGwgcmVsZXZhbnQgZXJyYXRhIGl0IGlzIHN1ZmZpY2ll
bnQgZm9yIHRoZSBhZGRpdGlvbmFsIFRMQkkgdG8NCj4gICB1c2UgKmFueSogb3BlcmF0aW9uIHdo
aWNoIHdpbGwgYmUgYnJvYWRjYXN0LCByZWdhcmRsZXNzIG9mIHdoaWNoDQo+ICAgdHJhbnNsYXRp
b24gcmVnaW1lIG9yIHN0YWdlIG9mIHRyYW5zbGF0aW9uIHRoZSBvcGVyYXRpb24gYXBwbGllcyB0
by4NCj4gDQo+ICAgRm9yIGV4YW1wbGUsIGZvciBhIHNpbmdsZSBUTEJJOg0KPiANCj4gICAgICAg
VExCSSBBTExFMklTDQo+ICAgICAgIERTQiBJU0gNCj4gDQo+ICAgLi4uIHRoZSBleGlzdGluZyB3
b3JrYXJvdW5kIHdpbGwgZXhwYW5kIHRoaXMgdG86DQo+IA0KPiAgICAgICBUTEJJIEFMTEUySVMN
Cj4gICAgICAgRFNCIElTSA0KPiAgICAgICBUTEJJIEFMTEUySVMgICAgICAgICAgICAgLy8gYWRk
aXRpb25hbA0KPiAgICAgICBEU0IgSVNIICAgICAgICAgICAgICAgICAgLy8gYWRkaXRpb25hbA0K
PiANCj4gICAuLi4gd2hlcmVhcyBpdCBpcyBzdWZmaWNpZW50IHRvIGhhdmU6DQo+IA0KPiAgICAg
ICBUTEJJIEFMTEUySVMNCj4gICAgICAgRFNCIElTSA0KPiAgICAgICBUTEJJIFZBTEUxSVMsIFha
UiAgICAgICAgLy8gYWRkaXRpb25hbA0KPiAgICAgICBEU0IgSVNIICAgICAgICAgICAgICAgICAg
Ly8gYWRkaXRpb25hbA0KPiANCj4gICBBcyB0aGUgYWRkaXRpb25hbCBUTEJJIGRvZXNuJ3QgaGF2
ZSB0byBtYXRjaCBhIHNwZWNpZmljIGVhcmxpZXIgVExCSSwNCj4gICB0aGUgYWRkaXRpb25hbCBU
TEJJIGNhbiBiZSBpbXBsZW1lbnRlZCBpbiBzZXBhcmF0ZSBjb2RlLCB3aXRoIG5vDQo+ICAgbWVt
b3J5IG9mIHRoZSBlYXJsaWVyIFRMQklzLiBUaGUgYWRkaXRpb25hbCBUTEJJIGNhbiBhbHNvIHVz
ZSBhDQo+ICAgY2hlYXBlciBUTEJJIG9wZXJhdGlvbi4NCj4gDQo+IDUuIFRoZSBleGlzdGluZyB3
b3JrYXJvdW5kIGlzIGFwcGxpZWQgdG8gYm90aCBTdGFnZS0xIGFuZCBTdGFnZS0yIFRMQg0KPiAg
IGludmFsaWRhdGlvbiwgd2hlcmVhcyBmb3IgYWxsIHJlbGV2YW50IGVycmF0YSBpdCBpcyBvbmx5
IG5lY2Vzc2FyeSB0bw0KPiAgIGFwcGx5IGEgd29ya2Fyb3VuZCBmb3IgU3RhZ2UtMSBpbnZhbGlk
YXRpb24uDQo+IA0KPiAgIEFyY2hpdGVjdHVyYWxseSwgVExCSSBvcGVyYXRpb25zIHdoaWNoIGlu
dmFsaWRhdGUgb25seSBTdGFnZS0yDQo+ICAgaW5mb3JtYXRpb24gKGUuZy4gSVBBUzJFMUlTKSBh
cmUgbm90IHJlcXVpcmVkIHRvIGludmFsaWRhdGUgVExCDQo+ICAgZW50cmllcyB3aGljaCBjb21i
aW5lIGluZm9ybWF0aW9uIGZyb20gU3RhZ2UtMSBhbmQgU3RhZ2UtMg0KPiAgIHRyYW5zbGF0aW9u
IHRhYmxlIGVudHJpZXMsIGFuZCBjb25zZXF1ZW50bHkgbWF5IG5vdCBjb21wbGV0ZSBtZW1vcnkN
Cj4gICBhY2Nlc3NlcyB0cmFuc2xhdGVkIGJ5IHRob3NlIGNvbWJpbmVkIGVudHJpZXMuIEluIHRo
ZXNlIGNhc2VzLA0KPiAgIGNvbXBsZXRpb24gb2YgbWVtb3J5IGFjY2Vzc2VzIGlzIG9ubHkgZ3Vh
cmFudGVlZCBhZnRlciBzdWJzZXF1ZW50DQo+ICAgaW52YWxpZGF0aW9uIG9mIFN0YWdlLTEgaW5m
b3JtYXRpb24gKGUuZy4gVk1BTExFMUlTKS4NCj4gDQo+IFJld29yayB0aGUgd29ya2Fyb3VuZCBs
b2dpYyBhcyBmb2xsb3dzOg0KPiAtIGFkZCBUTEJfSEVMUEVSX0xPQ0FMKCkgdG8gYmUgdXNlZCBm
b3IgbG9jYWwgVExCIG9wcyB3aXRob3V0IGENCj4gICB3b3JrYXJvdW5kLA0KPiAtIG1vZGlmeSBU
TEJfSEVMUEVSKCkgd29ya2Fyb3VuZCB0byB1c2UgdGxiaSB2YWxlMmlzLCB4enIgYXMgYSBzZWNv
bmQNCj4gICBUTEIsDQoNClRMQkkgPw0KDQo+IC0gZHJvcCBUTEJfSEVMUEVSX1ZBKCkuIEl0J3Mg
dXNlZCBvbmx5IGJ5IF9fZmx1c2hfeGVuX3RsYl9vbmVfbG9jYWwNCj4gICB3aGljaCBpcyBsb2Nh
bCBhbmQgZG9lcyBub3QgbmVlZCB3b3JrYXJvdW5kIGFuZCBieQ0KPiAgIF9fZmx1c2hfeGVuX3Rs
Yl9vbmUuIEluIHRoZSBsYXR0ZXIgY2FzZSwgc2luY2UgaXQncyB1c2VkIGluIGEgbG9vcCwNCj4g
ICB3ZSBkb24ndCBuZWVkIGEgd29ya2Fyb3VuZCBpbiB0aGUgbWlkZGxlLiBBZGQgX190bGJfcmVw
ZWF0X3N5bmMgd2l0aA0KPiAgIGEgd29ya2Fyb3VuZCB0byBiZSB1c2VkIGF0IHRoZSBlbmQgYWZ0
ZXIgRFNCIGFuZCBiZWZvcmUgZmluYWwgSVNCLA0KPiAtIFRMQkkgVkFMRTJJUyBwYXNzaW5nIFha
UiBpcyB1c2VkIGFzIGFuIGFkZGl0aW9uYWwgVExCSS4gV2hpbGUgdGhlcmUgaXMNCj4gICBhbiBp
ZGVudGl0eSBtYXBwaW5nIHRoZXJlLCBpdCdzIHVzZWQgdmVyeSByYXJlbHkuIFRoZSBwZXJmb3Jt
YW5jZQ0KPiAgIGltcGFjdCBpcyB0aGVyZWZvcmUgbmVnbGlnaWJsZS4gSWYgdGhpbmdzIGNoYW5n
ZSBpbiB0aGUgZnV0dXJlLCB3ZQ0KPiAgIGNhbiByZXZpc2l0IHRoZSBkZWNpc2lvbi4NCj4gDQo+
IFNpZ25lZC1vZmYtYnk6IE1pY2hhbCBPcnplbCA8bWljaGFsLm9yemVsQGFtZC5jb20+DQo+IC0t
LQ0KPiBMaW51eCBjb3VudGVycGFydCAoYWxyZWFkeSBtZXJnZWQpOg0KPiBodHRwczovL2xvcmUu
a2VybmVsLm9yZy9saW51eC1hcm0ta2VybmVsLzIwMjYwMjE4MTY0MzQ4LjIwMjI4MzEtMS1tYXJr
LnJ1dGxhbmRAYXJtLmNvbS8NCj4gLS0tDQo+IHhlbi9hcmNoL2FybS9pbmNsdWRlL2FzbS9hcm0z
Mi9mbHVzaHRsYi5oIHwgICAzICsNCj4geGVuL2FyY2gvYXJtL2luY2x1ZGUvYXNtL2FybTY0L2Zs
dXNodGxiLmggfCAxMDggKysrKysrKysrKysrKystLS0tLS0tLQ0KPiB4ZW4vYXJjaC9hcm0vaW5j
bHVkZS9hc20vZmx1c2h0bGIuaCAgICAgICB8ICAgMSArDQo+IDMgZmlsZXMgY2hhbmdlZCwgNzEg
aW5zZXJ0aW9ucygrKSwgNDEgZGVsZXRpb25zKC0pDQo+IA0KPiBkaWZmIC0tZ2l0IGEveGVuL2Fy
Y2gvYXJtL2luY2x1ZGUvYXNtL2FybTMyL2ZsdXNodGxiLmggYi94ZW4vYXJjaC9hcm0vaW5jbHVk
ZS9hc20vYXJtMzIvZmx1c2h0bGIuaA0KPiBpbmRleCA2MWMyNWEzMTg5OTguLjU0ODNiZTA4ZmJi
ZSAxMDA2NDQNCj4gLS0tIGEveGVuL2FyY2gvYXJtL2luY2x1ZGUvYXNtL2FybTMyL2ZsdXNodGxi
LmgNCj4gKysrIGIveGVuL2FyY2gvYXJtL2luY2x1ZGUvYXNtL2FybTMyL2ZsdXNodGxiLmgNCj4g
QEAgLTU3LDYgKzU3LDkgQEAgc3RhdGljIGlubGluZSB2b2lkIF9fZmx1c2hfeGVuX3RsYl9vbmUo
dmFkZHJfdCB2YSkNCj4gICAgIGFzbSB2b2xhdGlsZShTVE9SRV9DUDMyKDAsIFRMQklNVkFISVMp
IDogOiAiciIgKHZhKSA6ICJtZW1vcnkiKTsNCj4gfQ0KPiANCj4gKy8qIE9ubHkgZm9yIEFSTTY0
X1dPUktBUk9VTkRfUkVQRUFUX1RMQkkgKi8NCj4gK3N0YXRpYyBpbmxpbmUgdm9pZCBfX3RsYl9y
ZXBlYXRfc3luYyh2b2lkKSB7fQ0KPiArDQo+ICNlbmRpZiAvKiBfX0FTTV9BUk1fQVJNMzJfRkxV
U0hUTEJfSF9fICovDQo+IC8qDQo+ICAqIExvY2FsIHZhcmlhYmxlczoNCj4gZGlmZiAtLWdpdCBh
L3hlbi9hcmNoL2FybS9pbmNsdWRlL2FzbS9hcm02NC9mbHVzaHRsYi5oIGIveGVuL2FyY2gvYXJt
L2luY2x1ZGUvYXNtL2FybTY0L2ZsdXNodGxiLmgNCj4gaW5kZXggM2I5OWMxMWI1MGQxLi4xNjA2
YjI2YmYyOGEgMTAwNjQ0DQo+IC0tLSBhL3hlbi9hcmNoL2FybS9pbmNsdWRlL2FzbS9hcm02NC9m
bHVzaHRsYi5oDQo+ICsrKyBiL3hlbi9hcmNoL2FybS9pbmNsdWRlL2FzbS9hcm02NC9mbHVzaHRs
Yi5oDQo+IEBAIC0xMiw5ICsxMiwxNCBAQA0KPiAgKiBBUk02NF9XT1JLQVJPVU5EX1JFUEVBVF9U
TEJJOg0KPiAgKiBNb2RpZmljYXRpb24gb2YgdGhlIHRyYW5zbGF0aW9uIHRhYmxlIGZvciBhIHZp
cnR1YWwgYWRkcmVzcyBtaWdodCBsZWFkIHRvDQo+ICAqIHJlYWQtYWZ0ZXItcmVhZCBvcmRlcmlu
ZyB2aW9sYXRpb24uDQo+IC0gKiBUaGUgd29ya2Fyb3VuZCByZXBlYXRzIFRMQkkrRFNCIElTSCBv
cGVyYXRpb24gZm9yIGFsbCB0aGUgVExCIGZsdXNoDQo+IC0gKiBvcGVyYXRpb25zLiBXaGlsZSB0
aGlzIGlzIHN0cmljdGx5IG5vdCBuZWNlc3NhcnksIHdlIGRvbid0IHdhbnQgdG8NCj4gLSAqIHRh
a2UgYW55IHJpc2suDQo+ICsgKiBUaGUgd29ya2Fyb3VuZCByZXBlYXRzIFRMQkkrRFNCIElTSCBv
cGVyYXRpb24gZm9yIGJyb2FkY2FzdCBUTEIgZmx1c2gNCj4gKyAqIG9wZXJhdGlvbnMuIFRoZSB3
b3JrYXJvdW5kIGlzIG5vdCBuZWVkZWQgZm9yIGxvY2FsIG9wZXJhdGlvbnMuDQo+ICsgKg0KPiAr
ICogSXQgaXMgc3VmZmljaWVudCBmb3IgdGhlIGFkZGl0aW9uYWwgVExCSSB0byB1c2UgKmFueSog
b3BlcmF0aW9uIHdoaWNoIHdpbGwNCj4gKyAqIGJlIGJyb2FkY2FzdCwgcmVnYXJkbGVzcyBvZiB3
aGljaCB0cmFuc2xhdGlvbiByZWdpbWUgb3Igc3RhZ2Ugb2YgdHJhbnNsYXRpb24NCj4gKyAqIHRo
ZSBvcGVyYXRpb24gYXBwbGllcyB0by4gVExCSSBWQUxFMklTIGlzIHVzZWQgcGFzc2luZyBYWlIu
IFdoaWxlIHRoZXJlIGlzDQo+ICsgKiBhbiBpZGVudGl0eSBtYXBwaW5nIHRoZXJlLCBpdCdzIG9u
bHkgdXNlZCBkdXJpbmcgc3VzcGVuZC9yZXN1bWUsIENQVSBvbi9vZmYsDQo+ICsgKiBzbyB0aGUg
aW1wYWN0IChwZXJmb3JtYW5jZSBpZiBhbnkpIGlzIG5lZ2xpZ2libGUuDQo+ICAqDQo+ICAqIEZv
ciBYZW4gcGFnZS10YWJsZXMgdGhlIElTQiB3aWxsIGRpc2NhcmQgYW55IGluc3RydWN0aW9ucyBm
ZXRjaGVkDQo+ICAqIGZyb20gdGhlIG9sZCBtYXBwaW5ncy4NCj4gQEAgLTI2LDY5ICszMSw5MCBA
QA0KPiAgKiBOb3RlIHRoYXQgZm9yIGxvY2FsIFRMQiBmbHVzaCwgdXNpbmcgbm9uLXNoYXJlYWJs
ZSAobnNoKSBpcyBzdWZmaWNpZW50DQo+ICAqIChzZWUgRDUtNDkyOSBpbiBBUk0gRERJIDA0ODdI
LmEpLiBBbHRob3VnaCwgdGhlIG1lbW9yeSBiYXJyaWVyIGluDQo+ICAqIGZvciB0aGUgd29ya2Fy
b3VuZCBpcyBsZWZ0IGFzIGlubmVyLXNoYXJlYWJsZSB0byBtYXRjaCB3aXRoIExpbnV4DQo+IC0g
KiB2Ni4xLXJjOC4NCj4gKyAqIHY2LjE5Lg0KPiAgKi8NCj4gLSNkZWZpbmUgVExCX0hFTFBFUihu
YW1lLCB0bGJvcCwgc2gpICAgICAgICAgICAgICBcDQo+ICsjZGVmaW5lIFRMQl9IRUxQRVJfTE9D
QUwobmFtZSwgdGxib3ApICAgICAgICAgICAgXA0KPiBzdGF0aWMgaW5saW5lIHZvaWQgbmFtZSh2
b2lkKSAgICAgICAgICAgICAgICAgICAgXA0KPiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgXA0KPiAgICAgYXNtX2lubGluZSB2b2xhdGlsZSAoICAgICAg
ICAgICAgICAgICAgICAgICAgXA0KPiAtICAgICAgICAiZHNiICAiICAjIHNoICAic3Q7IiAgICAg
ICAgICAgICAgICAgICAgIFwNCj4gKyAgICAgICAgImRzYiAgbnNoc3Q7IiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBcDQo+ICAgICAgICAgInRsYmkgIiAgIyB0bGJvcCAgIjsiICAgICAgICAg
ICAgICAgICAgICBcDQo+IC0gICAgICAgIEFMVEVSTkFUSVZFKCAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgXA0KPiAtICAgICAgICAgICAgIm5vcDsgbm9wOyIsICAgICAgICAgICAgICAgICAg
ICAgICAgIFwNCj4gLSAgICAgICAgICAgICJkc2IgIGlzaDsiICAgICAgICAgICAgICAgICAgICAg
ICAgICBcDQo+IC0gICAgICAgICAgICAidGxiaSAiICAjIHRsYm9wICAiOyIsICAgICAgICAgICAg
ICAgXA0KPiAtICAgICAgICAgICAgQVJNNjRfV09SS0FST1VORF9SRVBFQVRfVExCSSwgICAgICAg
IFwNCj4gLSAgICAgICAgICAgIENPTkZJR19BUk02NF9XT1JLQVJPVU5EX1JFUEVBVF9UTEJJKSBc
DQo+IC0gICAgICAgICJkc2IgICIgICMgc2ggICI7IiAgICAgICAgICAgICAgICAgICAgICAgXA0K
PiArICAgICAgICAiZHNiICBuc2g7IiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwNCj4g
ICAgICAgICAiaXNiOyIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwNCj4gICAg
ICAgICA6IDogOiAibWVtb3J5Iik7ICAgICAgICAgICAgICAgICAgICAgICAgIFwNCj4gfQ0KPiAN
Cj4gLS8qDQo+IC0gKiBGTHVzaCBUTEIgYnkgVkEuIFRoaXMgd2lsbCBsaWtlbHkgYmUgdXNlZCBp
biBhIGxvb3AsIHNvIHRoZSBjYWxsZXINCj4gLSAqIGlzIHJlc3BvbnNpYmxlIHRvIHVzZSB0aGUg
YXBwcm9wcmlhdGUgbWVtb3J5IGJhcnJpZXJzIGJlZm9yZS9hZnRlcg0KPiAtICogdGhlIHNlcXVl
bmNlLg0KPiAtICoNCj4gLSAqIFNlZSBhYm92ZSBhYm91dCB0aGUgQVJNNjRfV09SS0FST1VORF9S
RVBFQVRfVExCSSBzZXF1ZW5jZS4NCj4gLSAqLw0KPiAtI2RlZmluZSBUTEJfSEVMUEVSX1ZBKG5h
bWUsIHRsYm9wKSAgICAgICAgICAgICAgIFwNCj4gLXN0YXRpYyBpbmxpbmUgdm9pZCBuYW1lKHZh
ZGRyX3QgdmEpICAgICAgICAgICAgICBcDQo+IC17ICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgXA0KPiAtICAgIGFzbV9pbmxpbmUgdm9sYXRpbGUgKCAgICAg
ICAgICAgICAgICAgICAgICAgIFwNCj4gLSAgICAgICAgInRsYmkgIiAgIyB0bGJvcCAgIiwgJTA7
IiAgICAgICAgICAgICAgICBcDQo+IC0gICAgICAgIEFMVEVSTkFUSVZFKCAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgXA0KPiAtICAgICAgICAgICAgIm5vcDsgbm9wOyIsICAgICAgICAgICAg
ICAgICAgICAgICAgIFwNCj4gLSAgICAgICAgICAgICJkc2IgIGlzaDsiICAgICAgICAgICAgICAg
ICAgICAgICAgICBcDQo+IC0gICAgICAgICAgICAidGxiaSAiICAjIHRsYm9wICAiLCAlMDsiLCAg
ICAgICAgICAgXA0KPiAtICAgICAgICAgICAgQVJNNjRfV09SS0FST1VORF9SRVBFQVRfVExCSSwg
ICAgICAgIFwNCj4gLSAgICAgICAgICAgIENPTkZJR19BUk02NF9XT1JLQVJPVU5EX1JFUEVBVF9U
TEJJKSBcDQo+IC0gICAgICAgIDogOiAiciIgKHZhID4+IFBBR0VfU0hJRlQpIDogIm1lbW9yeSIp
OyAgXA0KPiArI2RlZmluZSBUTEJfSEVMUEVSKG5hbWUsIHRsYm9wKSAgICAgICAgICAgICAgICAg
ICAgICAgXA0KPiArc3RhdGljIGlubGluZSB2b2lkIG5hbWUodm9pZCkgICAgICAgICAgICAgICAg
ICAgICAgICAgXA0KPiAreyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgXA0KPiArICAgIGFzbV9pbmxpbmUgdm9sYXRpbGUgKCAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgXA0KPiArICAgICAgICAiZHNiICBpc2hzdDsiICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgXA0KPiArICAgICAgICAidGxiaSAiICAjIHRsYm9wICAiOyIgICAg
ICAgICAgICAgICAgICAgICAgICAgXA0KPiArICAgICAgICBBTFRFUk5BVElWRSggICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgXA0KPiArICAgICAgICAgICAgIm5vcDsgbm9wOyIsICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgXA0KPiArICAgICAgICAgICAgImRzYiAgaXNoOyIg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXA0KPiArICAgICAgICAgICAgInRsYmkgdmFs
ZTJpcywgeHpyOyIsICAgICAgICAgICAgICAgICAgICAgXA0KPiArICAgICAgICAgICAgQVJNNjRf
V09SS0FST1VORF9SRVBFQVRfVExCSSwgICAgICAgICAgICAgXA0KPiArICAgICAgICAgICAgQ09O
RklHX0FSTTY0X1dPUktBUk9VTkRfUkVQRUFUX1RMQkkpICAgICAgXA0KPiArICAgICAgICAiZHNi
ICBpc2g7IiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXA0KPiArICAgICAgICAi
aXNiOyIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXA0KPiArICAgICAg
ICA6IDogOiAibWVtb3J5Iik7IFwNCj4gfQ0KPiANCj4gLyogRmx1c2ggbG9jYWwgVExCcywgY3Vy
cmVudCBWTUlEIG9ubHkuICovDQo+IC1UTEJfSEVMUEVSKGZsdXNoX2d1ZXN0X3RsYl9sb2NhbCwg
dm1hbGxzMTJlMSwgbnNoKQ0KPiArVExCX0hFTFBFUl9MT0NBTChmbHVzaF9ndWVzdF90bGJfbG9j
YWwsIHZtYWxsczEyZTEpDQo+IA0KPiAvKiBGbHVzaCBpbm5lcnNoYXJlYWJsZSBUTEJzLCBjdXJy
ZW50IFZNSUQgb25seSAqLw0KPiAtVExCX0hFTFBFUihmbHVzaF9ndWVzdF90bGIsIHZtYWxsczEy
ZTFpcywgaXNoKQ0KPiArVExCX0hFTFBFUihmbHVzaF9ndWVzdF90bGIsIHZtYWxsczEyZTFpcykN
Cj4gDQo+IC8qIEZsdXNoIGxvY2FsIFRMQnMsIGFsbCBWTUlEcywgbm9uLWh5cGVydmlzb3IgbW9k
ZSAqLw0KPiAtVExCX0hFTFBFUihmbHVzaF9hbGxfZ3Vlc3RzX3RsYl9sb2NhbCwgYWxsZTEsIG5z
aCkNCj4gK1RMQl9IRUxQRVJfTE9DQUwoZmx1c2hfYWxsX2d1ZXN0c190bGJfbG9jYWwsIGFsbGUx
KQ0KPiANCj4gLyogRmx1c2ggaW5uZXJzaGFyZWFibGUgVExCcywgYWxsIFZNSURzLCBub24taHlw
ZXJ2aXNvciBtb2RlICovDQo+IC1UTEJfSEVMUEVSKGZsdXNoX2FsbF9ndWVzdHNfdGxiLCBhbGxl
MWlzLCBpc2gpDQo+ICtUTEJfSEVMUEVSKGZsdXNoX2FsbF9ndWVzdHNfdGxiLCBhbGxlMWlzKQ0K
PiANCj4gLyogRmx1c2ggYWxsIGh5cGVydmlzb3IgbWFwcGluZ3MgZnJvbSB0aGUgVExCIG9mIHRo
ZSBsb2NhbCBwcm9jZXNzb3IuICovDQo+IC1UTEJfSEVMUEVSKGZsdXNoX3hlbl90bGJfbG9jYWws
IGFsbGUyLCBuc2gpDQo+ICtUTEJfSEVMUEVSX0xPQ0FMKGZsdXNoX3hlbl90bGJfbG9jYWwsIGFs
bGUyKQ0KPiArDQo+ICsjdW5kZWYgVExCX0hFTFBFUl9MT0NBTA0KPiArI3VuZGVmIFRMQl9IRUxQ
RVINCj4gKw0KPiArLyoNCj4gKyAqIEZMdXNoIFRMQiBieSBWQS4gVGhpcyB3aWxsIGxpa2VseSBi
ZSB1c2VkIGluIGEgbG9vcCwgc28gdGhlIGNhbGxlcg0KPiArICogaXMgcmVzcG9uc2libGUgdG8g
dXNlIHRoZSBhcHByb3ByaWF0ZSBtZW1vcnkgYmFycmllcnMgYmVmb3JlL2FmdGVyDQo+ICsgKiB0
aGUgc2VxdWVuY2UuDQo+ICsgKi8NCj4gDQo+IC8qIEZsdXNoIFRMQiBvZiBsb2NhbCBwcm9jZXNz
b3IgZm9yIGFkZHJlc3MgdmEuICovDQo+IC1UTEJfSEVMUEVSX1ZBKF9fZmx1c2hfeGVuX3RsYl9v
bmVfbG9jYWwsIHZhZTIpDQo+ICtzdGF0aWMgaW5saW5lIHZvaWQgX19mbHVzaF94ZW5fdGxiX29u
ZV9sb2NhbCh2YWRkcl90IHZhKQ0KPiArew0KPiArICAgIGFzbV9pbmxpbmUgdm9sYXRpbGUgKA0K
PiArICAgICAgICAidGxiaSB2YWUyLCAlMCIgOiA6ICJyIiAodmEgPj4gUEFHRV9TSElGVCkgOiAi
bWVtb3J5Iik7DQo+ICt9DQo+IA0KPiAvKiBGbHVzaCBUTEIgb2YgYWxsIHByb2Nlc3NvcnMgaW4g
dGhlIGlubmVyLXNoYXJlYWJsZSBkb21haW4gZm9yIGFkZHJlc3MgdmEuICovDQo+IC1UTEJfSEVM
UEVSX1ZBKF9fZmx1c2hfeGVuX3RsYl9vbmUsIHZhZTJpcykNCj4gK3N0YXRpYyBpbmxpbmUgdm9p
ZCBfX2ZsdXNoX3hlbl90bGJfb25lKHZhZGRyX3QgdmEpDQo+ICt7DQo+ICsgICAgYXNtX2lubGlu
ZSB2b2xhdGlsZSAoDQo+ICsgICAgICAgICJ0bGJpIHZhZTJpcywgJTAiIDogOiAiciIgKHZhID4+
IFBBR0VfU0hJRlQpIDogIm1lbW9yeSIpOw0KPiArfQ0KPiANCj4gLSN1bmRlZiBUTEJfSEVMUEVS
DQo+IC0jdW5kZWYgVExCX0hFTFBFUl9WQQ0KPiArLyoNCj4gKyAqIEFSTTY0X1dPUktBUk9VTkRf
UkVQRUFUX1RMQkk6DQo+ICsgKiBGb3IgYWxsIHJlbGV2YW50IGVycmF0YXMgaXQgaXMgb25seSBu
ZWNlc3NhcnkgdG8gZXhlY3V0ZSBhIHNpbmdsZQ0KPiArICogYWRkaXRpb25hbCBUTEJJO0RTQiBz
ZXF1ZW5jZSBhZnRlciBhbnkgbnVtYmVyIG9mIFRMQklzIGFyZSBjb21wbGV0ZWQgYnkgRFNCLg0K
PiArICovDQo+ICtzdGF0aWMgaW5saW5lIHZvaWQgX190bGJfcmVwZWF0X3N5bmModm9pZCkNCj4g
K3sNCj4gKyAgICBhc21faW5saW5lIHZvbGF0aWxlICgNCj4gKyAgICAgICAgQUxURVJOQVRJVkUo
DQo+ICsgICAgICAgICAgICAibm9wOyBub3A7IiwNCj4gKyAgICAgICAgICAgICJ0bGJpIHZhbGUy
aXMsIHh6cjsiDQo+ICsgICAgICAgICAgICAiZHNiICBpc2g7IiwNCj4gKyAgICAgICAgICAgIEFS
TTY0X1dPUktBUk9VTkRfUkVQRUFUX1RMQkksDQo+ICsgICAgICAgICAgICBDT05GSUdfQVJNNjRf
V09SS0FST1VORF9SRVBFQVRfVExCSSkNCj4gKyAgICAgICAgOiA6IDogIm1lbW9yeSIpOw0KPiAr
fQ0KPiANCj4gI2VuZGlmIC8qIF9fQVNNX0FSTV9BUk02NF9GTFVTSFRMQl9IX18gKi8NCj4gLyoN
Cj4gZGlmZiAtLWdpdCBhL3hlbi9hcmNoL2FybS9pbmNsdWRlL2FzbS9mbHVzaHRsYi5oIGIveGVu
L2FyY2gvYXJtL2luY2x1ZGUvYXNtL2ZsdXNodGxiLmgNCj4gaW5kZXggZTQ1ZmI2ZDk3YjAyLi5j
MjkyYzNjMDBkMjkgMTAwNjQ0DQo+IC0tLSBhL3hlbi9hcmNoL2FybS9pbmNsdWRlL2FzbS9mbHVz
aHRsYi5oDQo+ICsrKyBiL3hlbi9hcmNoL2FybS9pbmNsdWRlL2FzbS9mbHVzaHRsYi5oDQo+IEBA
IC02NSw2ICs2NSw3IEBAIHN0YXRpYyBpbmxpbmUgdm9pZCBmbHVzaF94ZW5fdGxiX3JhbmdlX3Zh
KHZhZGRyX3QgdmEsDQo+ICAgICAgICAgdmEgKz0gUEFHRV9TSVpFOw0KPiAgICAgfQ0KPiAgICAg
ZHNiKGlzaCk7IC8qIEVuc3VyZSB0aGUgVExCIGludmFsaWRhdGlvbiBoYXMgY29tcGxldGVkICov
DQo+ICsgICAgX190bGJfcmVwZWF0X3N5bmMoKTsNCg0KTW9yZSBhIHF1ZXN0aW9uIGhlcmUgcmF0
aGVyIHRoYW4gYSBjb21tZW50LCBzaGFsbCB3ZSBoYXZlIGEgY29tbWVudCBvbiB0b3ANCm9mIHRo
aXMgc3RhdGluZyB0aGF0IGl04oCZcyBkZWxpYmVyYXRlIHRvIGhhdmUgaXQgYmVmb3JlIHRoZSBp
c2I/DQpPciBkZXZlbG9wZXIgc2hvdWxkIGluZmVyIGl0IGZyb20gdGhlIGNvZGUgYW5kIGZyb20g
Z2l0IGJsYW1lPw0KDQo+ICAgICBpc2IoKTsNCj4gfQ0KPiANCj4gLS0gDQo+IDIuNDMuMA0KPiAN
Cj4gDQoNCldpdGggdGhlc2UgZml4ZWQ6DQoNClJldmlld2VkLWJ5OiBMdWNhIEZhbmNlbGx1IDxs
dWNhLmZhbmNlbGx1QGFybS5jb20+DQoNCkNoZWVycywNCkx1Y2ENCg0K


From xen-devel-bounces@lists.xenproject.org Tue Apr 14 15:09:30 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 14 Apr 2026 15:09:30 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1282015.1564712 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wCfO7-0000Du-Dg; Tue, 14 Apr 2026 15:09:15 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1282015.1564712; Tue, 14 Apr 2026 15: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 1wCfO7-0000Dn-A8; Tue, 14 Apr 2026 15:09:15 +0000
Received: by outflank-mailman (input) for mailman id 1282015;
 Tue, 14 Apr 2026 15:09:14 +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 1wCfO5-0000Dh-OH
 for xen-devel@lists.xenproject.org; Tue, 14 Apr 2026 15:09:14 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wCfO5-009Jqk-4G
 for xen-devel@lists.xenproject.org; Tue, 14 Apr 2026 17:09:13 +0200
Received: from [10.42.69.1] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <Michal.Orzel@amd.com>)
 id 69de5890-2eae-0a2a0a5409dd-0a2a4501a0b6-16
 for <xen-devel@lists.xenproject.org>; Tue, 14 Apr 2026 17:09:12 +0200
Received: from [40.93.201.13]
 (helo=CY3PR05CU001.outbound.protection.outlook.com)
 by tlsNG-d62444.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.1)
 (envelope-from <Michal.Orzel@amd.com>)
 id 69de5897-c1f2-0a2a45010019-285dc90d7eea-3
 for <xen-devel@lists.xenproject.org>; Tue, 14 Apr 2026 17:09:12 +0200
Received: from CY8PR11CA0037.namprd11.prod.outlook.com (2603:10b6:930:4a::29)
 by MW3PR12MB4474.namprd12.prod.outlook.com (2603:10b6:303:2e::7) with
 Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9818.20; Tue, 14 Apr
 2026 15:09:06 +0000
Received: from CY4PEPF0000FCC3.namprd03.prod.outlook.com
 (2603:10b6:930:4a:cafe::3) by CY8PR11CA0037.outlook.office365.com
 (2603:10b6:930:4a::29) with Microsoft SMTP Server (version=TLS1_3,
 cipher=TLS_AES_256_GCM_SHA384) id 15.20.9769.48 via Frontend Transport; Tue,
 14 Apr 2026 15:09:06 +0000
Received: from satlexmb08.amd.com (165.204.84.17) by
 CY4PEPF0000FCC3.mail.protection.outlook.com (10.167.242.105) with Microsoft
 SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id
 15.20.9769.17 via Frontend Transport; Tue, 14 Apr 2026 15:09:05 +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.17; Tue, 14 Apr
 2026 10:09:05 -0500
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.17; Tue, 14 Apr
 2026 08:09:05 -0700
Received: from [10.71.194.215] (10.180.168.240) by satlexmb08.amd.com
 (10.181.42.217) with Microsoft SMTP Server id 15.2.2562.17 via Frontend
 Transport; Tue, 14 Apr 2026 10:09:04 -0500
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@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=eSBa7Ye7ZBFcKKiB6jh26xvEZiIenchoGWuAfY94p7QcKoVTQYNAa3/e3MEEgypn39IGX9ul7dW2YS1Jv0OG4d35B+ioua370gwAa416kRGy7ZPCcsd8Fz0cx1nynl80aOUZnHj/D2cuWKjM+tcVvP+dokxDAzy4MQawnXMKO5kc4yILqILUCaMBqXQHwVkaiVbLCBbAFf4F/Jcv8VzpqSfhhQFVk6S/4PptSneSbeqeC3DK8k+0rG2065bd5L3eE1eEc09WyhmmLm6KXBVMorTrnR3EgiSK0eNYDLsFKquALapDLE4r2/BiVvr+oWFxau5rFmjQlSImNF9hhPrRTw==
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com;
 s=arcselector10001;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1;
 bh=GPnLa69NK5YQDa5XdNtqbH6KdIGMfRh498olWKYQckE=;
 b=QYW3ito3ZuxQVpG4nUQRBAtsB1ReoqcFQO2eCnInSa7bB5CmV79z37o6ygEtxdQAw1qjosbNJsVT8lEHN51KxqxN1W0MUnjwaYZzeIqcTwR1kYnCrTPoDAokYqIFMetgCT6NEFAquW/EEkw3pg9PXtkscKh3hYbLOI4+eHLNATXjW8h2THjb2VgyOf2DNitWbFHqiR34kjAVLguPHJgyeeqH1LjevUGss9qxbPaifpEkajMBuiVRCOqRBD5K7QOhs4o4PpF5MRoDJRqd4rV9vDW+tV/wFSlLoMAUTiVhc+EeL7S6rh6pAtml7mQhU8j1Dpv/Q0Qy/j8oAiRXobsufQ==
ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass (sender ip is
 165.204.84.17) smtp.rcpttodomain=arm.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=GPnLa69NK5YQDa5XdNtqbH6KdIGMfRh498olWKYQckE=;
 b=TvGUJHjFwSDwBHCSiA4ErT+BbIVmkh9MjunIzDW5xkqO7k/3X7kzfpWJOqTIVAz3tBanfR/QyWldSp1anoyKg3giJKPwEPLu3vGJCcN+TATUvodfU981/iAuMnSTU0cuIes7CvxBaIXmgKGIuJW9mL+mimkLaJtywqMIN0n2hDw=
X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 165.204.84.17)
 smtp.mailfrom=amd.com; dkim=none (message not signed)
 header.d=none;dmarc=pass action=none header.from=amd.com;
Received-SPF: Pass (protection.outlook.com: domain of amd.com designates
 165.204.84.17 as permitted sender) receiver=protection.outlook.com;
 client-ip=165.204.84.17; helo=satlexmb08.amd.com; pr=C
Message-ID: <df9e3f30-6130-42ba-b90c-749a2f195074@amd.com>
Date: Tue, 14 Apr 2026 17:09:03 +0200
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH] xen/arm64: flushtlb: Optimize
 ARM64_WORKAROUND_REPEAT_TLBI
To: Luca Fancellu <Luca.Fancellu@arm.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>, Volodymyr Babchuk
	<Volodymyr_Babchuk@epam.com>, Mark Rutland <Mark.Rutland@arm.com>
References: <20260414081124.48741-1-michal.orzel@amd.com>
 <5098DD0F-9FA9-469B-BAAA-2CA0C1382FA0@arm.com>
From: "Orzel, Michal" <michal.orzel@amd.com>
Content-Language: en-US
In-Reply-To: <5098DD0F-9FA9-469B-BAAA-2CA0C1382FA0@arm.com>
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: 8bit
X-EOPAttributedMessage: 0
X-MS-PublicTrafficType: Email
X-MS-TrafficTypeDiagnostic: CY4PEPF0000FCC3:EE_|MW3PR12MB4474:EE_
X-MS-Office365-Filtering-Correlation-Id: b3274379-0224-4e0b-968f-08de9a37c57b
X-MS-Exchange-SenderADCheck: 1
X-MS-Exchange-AntiSpam-Relay: 0
X-Microsoft-Antispam:
	BCL:0;ARA:13230040|36860700016|82310400026|376014|1800799024|22082099003|18002099003|56012099003|18096099003;
X-Microsoft-Antispam-Message-Info:
	9dsfwOpcakas2/KZ/RN084Jlqlk2JK1YJsvxdWfCSs76fylVVOZpIhddh+z/KC1sHvhMEjhrtY9vj5q/7uiQ/9O3FRGAwiaTn5tvuD4CIU6Ta+YTJN42oUjUptoscBc4U7vEliRTxSGum3OgqUwVf7x2mUi8VIbQ4cvqs2gAqEPHB7emndawtBqYswbaWUVtgGJgvBTiR2+4K1ArF6C42PE6WWhFHYB7j0epso0yNwKDTkPPzxfVAAmb7GjMPaGOV3tfCC4Z+7PFlgCIP1cuPVRap4d9w4E9uq19Qzcs2LLjWWCT+XOiqtORVoWNw+DIAMIcIbtDsVhN08YL6qQZQfawGIeym6FO5TGsbjFzIUPcBwZrYB1fvqV7Pl+4jRGbv4E2k/MVhsnmmQ1NkEBdBzXJg/0ncL+6d0qPnLsD3YlUASciEEa4B9fmrINkDV0TzgGWVTZvpMFMdLeV+qkrNZqb5hmrhbLV/NmshavYNdllEDXYnOm0adVUPbA8CjYw3GP8Hr1jTO/xhguIEo1VZRECiD4PKIuHWCP2aK5r/zFjOQR9N17Yf0rS+sobyqz9Rfc5Wx5KT+4RK92B57dGPaDGTVd2dLA4Qt1zJ584y2YtJpdfl11LyviLYZLxmhP1enTbACKOwctz8JRu4zPaMgNlEbFMlZDYDtYbrwKLQsbitGJwwO18GYiPRbgXXxjtppz+K+U2Rijhlj+IMOwf7MQhvbSf7HmjKZAERZ4q/zCSj3WRM7hTzGukMqPF+PLHTfpmJnytGfwFdFlbgXUNJO4XQWFVj9vUdIfA1xqqlhw=
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)(1800799024)(22082099003)(18002099003)(56012099003)(18096099003);DIR:OUT;SFP:1101;
X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1
X-MS-Exchange-AntiSpam-MessageData-0:
	tOstmmu6fGaep4AqO0vOXrVCJwjtgVUuvBfuQyHIh2PqRyaRb+0mcZ0i3KIWjFkzZBF6u6VQtd3Cd2NkhuKJA/+ej3yzVnGiDSzO//CydM7zhR9aCEmXkbGrrXIV3vPHlJBhI+ps0Akpiw6/IIr8t0TcoIoo5AaLoN52OfEVBTiwA9xVV5vorPVMtAqHT66UTKZQ67xtSTGj8DozHaJPZ+Q2zw8KJtmev58eNIytWLMMDbekjdkbKIfE4YwLWnCQ+Sx/huO9TbS2flDZbavINinM1cPqZA2bWPJ7X7aoWO3ytReqRFZTUnTRyHGBjulzRnlcC7VaIpbQwPDtOSF6BSfjEcyKPp0AVcCy39Gho+11TSq4jNdy8cjL6joNKfOclDW51OqH9ZUBvI0l0+71RTSpbCmgE2m2b5q1ON8PQfm+Pr2WtEljYTCpV2496CxO
X-OriginatorOrg: amd.com
X-MS-Exchange-CrossTenant-OriginalArrivalTime: 14 Apr 2026 15:09:05.9423
 (UTC)
X-MS-Exchange-CrossTenant-Network-Message-Id: b3274379-0224-4e0b-968f-08de9a37c57b
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:
	CY4PEPF0000FCC3.namprd03.prod.outlook.com
X-MS-Exchange-CrossTenant-AuthAs: Anonymous
X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem
X-MS-Exchange-Transport-CrossTenantHeadersStamped: MW3PR12MB4474
X-purgate-ID: tlsNG-d62444/1776179352-B727DFF4-01CA152A/0/0
X-purgate-type: clean
X-purgate-size: 13844



On 14/04/2026 16:00, Luca Fancellu wrote:
> Hi Michal,
> 
>> On 14 Apr 2026, at 09:11, Michal Orzel <michal.orzel@amd.com> wrote:
>>
>> The ARM64_WORKAROUND_REPEAT_TLBI workaround is used to mitigate several
>> errata where broadcast TLBI;DSB sequences don't provide all the
>> architecturally required synchronization. The workaround performs more
>> work than necessary, and can have significant overhead. This patch
>> optimizes the workaround, as explained below.
>>
>> 1. All relevant errata only affect the ordering and/or completion of
>>   memory accesses which have been translated by an invalidated TLB
>>   entry. The actual invalidation of TLB entries is unaffected.
>>
>> 2. The existing workaround is applied to both broadcast and local TLB
>>   invalidation, whereas for all relevant errata it is only necessary to
>>   apply a workaround for broadcast invalidation.
>>
>> 3. The existing workaround replaces every TLBI with a TLBI;DSB;TLBI
>>   sequence, whereas for all relevant errata it is only necessary to
>>   execute a single additional TLBI;DSB sequence after any number of
>>   TLBIs are completed by a DSB.
>>
>>   For example, for a sequence of batched TLBIs:
>>
>>       TLBI <op1>[, <arg1>]
>>       TLBI <op2>[, <arg2>]
>>       TLBI <op3>[, <arg3>]
>>       DSB ISH
>>
>>   ... the existing workaround will expand this to:
>>
>>       TLBI <op1>[, <arg1>]
>>       DSB ISH                  // additional
>>       TLBI <op1>[, <arg1>]     // additional
>>       TLBI <op2>[, <arg2>]
>>       DSB ISH                  // additional
>>       TLBI <op2>[, <arg2>]     // additional
>>       TLBI <op3>[, <arg3>]
>>       DSB ISH                  // additional
>>       TLBI <op3>[, <arg3>]     // additional
>>       DSB ISH
>>
>>   ... whereas it is sufficient to have:
>>
>>       TLBI <op1>[, <arg1>]
>>       TLBI <op2>[, <arg2>]
>>       TLBI <op3>[, <arg3>]
>>       DSB ISH
>>       TLBI <opX>[, <argX>]     // additional
>>       DSB ISH                  // additional
>>
>>   Using a single additional TBLI and DSB at the end of the sequence can
> 
> NIT: Typo s/TBLI/TLBI
> 
>>   have significantly lower overhead as each DSB which completes a TLBI
>>   must synchronize with other PEs in the system, with potential
>>   performance effects both locally and system-wide.
>>
>> 4. The existing workaround repeats each specific TLBI operation, whereas
>>   for all relevant errata it is sufficient for the additional TLBI to
>>   use *any* operation which will be broadcast, regardless of which
>>   translation regime or stage of translation the operation applies to.
>>
>>   For example, for a single TLBI:
>>
>>       TLBI ALLE2IS
>>       DSB ISH
>>
>>   ... the existing workaround will expand this to:
>>
>>       TLBI ALLE2IS
>>       DSB ISH
>>       TLBI ALLE2IS             // additional
>>       DSB ISH                  // additional
>>
>>   ... whereas it is sufficient to have:
>>
>>       TLBI ALLE2IS
>>       DSB ISH
>>       TLBI VALE1IS, XZR        // additional
>>       DSB ISH                  // additional
>>
>>   As the additional TLBI doesn't have to match a specific earlier TLBI,
>>   the additional TLBI can be implemented in separate code, with no
>>   memory of the earlier TLBIs. The additional TLBI can also use a
>>   cheaper TLBI operation.
>>
>> 5. The existing workaround is applied to both Stage-1 and Stage-2 TLB
>>   invalidation, whereas for all relevant errata it is only necessary to
>>   apply a workaround for Stage-1 invalidation.
>>
>>   Architecturally, TLBI operations which invalidate only Stage-2
>>   information (e.g. IPAS2E1IS) are not required to invalidate TLB
>>   entries which combine information from Stage-1 and Stage-2
>>   translation table entries, and consequently may not complete memory
>>   accesses translated by those combined entries. In these cases,
>>   completion of memory accesses is only guaranteed after subsequent
>>   invalidation of Stage-1 information (e.g. VMALLE1IS).
>>
>> Rework the workaround logic as follows:
>> - add TLB_HELPER_LOCAL() to be used for local TLB ops without a
>>   workaround,
>> - modify TLB_HELPER() workaround to use tlbi vale2is, xzr as a second
>>   TLB,
> 
> TLBI ?
> 
>> - drop TLB_HELPER_VA(). It's used only by __flush_xen_tlb_one_local
>>   which is local and does not need workaround and by
>>   __flush_xen_tlb_one. In the latter case, since it's used in a loop,
>>   we don't need a workaround in the middle. Add __tlb_repeat_sync with
>>   a workaround to be used at the end after DSB and before final ISB,
>> - TLBI VALE2IS passing XZR is used as an additional TLBI. While there is
>>   an identity mapping there, it's used very rarely. The performance
>>   impact is therefore negligible. If things change in the future, we
>>   can revisit the decision.
>>
>> Signed-off-by: Michal Orzel <michal.orzel@amd.com>
>> ---
>> Linux counterpart (already merged):
>> https://lore.kernel.org/linux-arm-kernel/20260218164348.2022831-1-mark.rutland@arm.com/
>> ---
>> xen/arch/arm/include/asm/arm32/flushtlb.h |   3 +
>> xen/arch/arm/include/asm/arm64/flushtlb.h | 108 ++++++++++++++--------
>> xen/arch/arm/include/asm/flushtlb.h       |   1 +
>> 3 files changed, 71 insertions(+), 41 deletions(-)
>>
>> diff --git a/xen/arch/arm/include/asm/arm32/flushtlb.h b/xen/arch/arm/include/asm/arm32/flushtlb.h
>> index 61c25a318998..5483be08fbbe 100644
>> --- a/xen/arch/arm/include/asm/arm32/flushtlb.h
>> +++ b/xen/arch/arm/include/asm/arm32/flushtlb.h
>> @@ -57,6 +57,9 @@ static inline void __flush_xen_tlb_one(vaddr_t va)
>>     asm volatile(STORE_CP32(0, TLBIMVAHIS) : : "r" (va) : "memory");
>> }
>>
>> +/* Only for ARM64_WORKAROUND_REPEAT_TLBI */
>> +static inline void __tlb_repeat_sync(void) {}
>> +
>> #endif /* __ASM_ARM_ARM32_FLUSHTLB_H__ */
>> /*
>>  * Local variables:
>> diff --git a/xen/arch/arm/include/asm/arm64/flushtlb.h b/xen/arch/arm/include/asm/arm64/flushtlb.h
>> index 3b99c11b50d1..1606b26bf28a 100644
>> --- a/xen/arch/arm/include/asm/arm64/flushtlb.h
>> +++ b/xen/arch/arm/include/asm/arm64/flushtlb.h
>> @@ -12,9 +12,14 @@
>>  * ARM64_WORKAROUND_REPEAT_TLBI:
>>  * Modification of the translation table for a virtual address might lead to
>>  * read-after-read ordering violation.
>> - * The workaround repeats TLBI+DSB ISH operation for all the TLB flush
>> - * operations. While this is strictly not necessary, we don't want to
>> - * take any risk.
>> + * The workaround repeats TLBI+DSB ISH operation for broadcast TLB flush
>> + * operations. The workaround is not needed for local operations.
>> + *
>> + * It is sufficient for the additional TLBI to use *any* operation which will
>> + * be broadcast, regardless of which translation regime or stage of translation
>> + * the operation applies to. TLBI VALE2IS is used passing XZR. While there is
>> + * an identity mapping there, it's only used during suspend/resume, CPU on/off,
>> + * so the impact (performance if any) is negligible.
>>  *
>>  * For Xen page-tables the ISB will discard any instructions fetched
>>  * from the old mappings.
>> @@ -26,69 +31,90 @@
>>  * Note that for local TLB flush, using non-shareable (nsh) is sufficient
>>  * (see D5-4929 in ARM DDI 0487H.a). Although, the memory barrier in
>>  * for the workaround is left as inner-shareable to match with Linux
>> - * v6.1-rc8.
>> + * v6.19.
>>  */
>> -#define TLB_HELPER(name, tlbop, sh)              \
>> +#define TLB_HELPER_LOCAL(name, tlbop)            \
>> static inline void name(void)                    \
>> {                                                \
>>     asm_inline volatile (                        \
>> -        "dsb  "  # sh  "st;"                     \
>> +        "dsb  nshst;"                            \
>>         "tlbi "  # tlbop  ";"                    \
>> -        ALTERNATIVE(                             \
>> -            "nop; nop;",                         \
>> -            "dsb  ish;"                          \
>> -            "tlbi "  # tlbop  ";",               \
>> -            ARM64_WORKAROUND_REPEAT_TLBI,        \
>> -            CONFIG_ARM64_WORKAROUND_REPEAT_TLBI) \
>> -        "dsb  "  # sh  ";"                       \
>> +        "dsb  nsh;"                              \
>>         "isb;"                                   \
>>         : : : "memory");                         \
>> }
>>
>> -/*
>> - * FLush TLB by VA. This will likely be used in a loop, so the caller
>> - * is responsible to use the appropriate memory barriers before/after
>> - * the sequence.
>> - *
>> - * See above about the ARM64_WORKAROUND_REPEAT_TLBI sequence.
>> - */
>> -#define TLB_HELPER_VA(name, tlbop)               \
>> -static inline void name(vaddr_t va)              \
>> -{                                                \
>> -    asm_inline volatile (                        \
>> -        "tlbi "  # tlbop  ", %0;"                \
>> -        ALTERNATIVE(                             \
>> -            "nop; nop;",                         \
>> -            "dsb  ish;"                          \
>> -            "tlbi "  # tlbop  ", %0;",           \
>> -            ARM64_WORKAROUND_REPEAT_TLBI,        \
>> -            CONFIG_ARM64_WORKAROUND_REPEAT_TLBI) \
>> -        : : "r" (va >> PAGE_SHIFT) : "memory");  \
>> +#define TLB_HELPER(name, tlbop)                       \
>> +static inline void name(void)                         \
>> +{                                                     \
>> +    asm_inline volatile (                             \
>> +        "dsb  ishst;"                                 \
>> +        "tlbi "  # tlbop  ";"                         \
>> +        ALTERNATIVE(                                  \
>> +            "nop; nop;",                              \
>> +            "dsb  ish;"                               \
>> +            "tlbi vale2is, xzr;",                     \
>> +            ARM64_WORKAROUND_REPEAT_TLBI,             \
>> +            CONFIG_ARM64_WORKAROUND_REPEAT_TLBI)      \
>> +        "dsb  ish;"                                   \
>> +        "isb;"                                        \
>> +        : : : "memory"); \
>> }
>>
>> /* Flush local TLBs, current VMID only. */
>> -TLB_HELPER(flush_guest_tlb_local, vmalls12e1, nsh)
>> +TLB_HELPER_LOCAL(flush_guest_tlb_local, vmalls12e1)
>>
>> /* Flush innershareable TLBs, current VMID only */
>> -TLB_HELPER(flush_guest_tlb, vmalls12e1is, ish)
>> +TLB_HELPER(flush_guest_tlb, vmalls12e1is)
>>
>> /* Flush local TLBs, all VMIDs, non-hypervisor mode */
>> -TLB_HELPER(flush_all_guests_tlb_local, alle1, nsh)
>> +TLB_HELPER_LOCAL(flush_all_guests_tlb_local, alle1)
>>
>> /* Flush innershareable TLBs, all VMIDs, non-hypervisor mode */
>> -TLB_HELPER(flush_all_guests_tlb, alle1is, ish)
>> +TLB_HELPER(flush_all_guests_tlb, alle1is)
>>
>> /* Flush all hypervisor mappings from the TLB of the local processor. */
>> -TLB_HELPER(flush_xen_tlb_local, alle2, nsh)
>> +TLB_HELPER_LOCAL(flush_xen_tlb_local, alle2)
>> +
>> +#undef TLB_HELPER_LOCAL
>> +#undef TLB_HELPER
>> +
>> +/*
>> + * FLush TLB by VA. This will likely be used in a loop, so the caller
>> + * is responsible to use the appropriate memory barriers before/after
>> + * the sequence.
>> + */
>>
>> /* Flush TLB of local processor for address va. */
>> -TLB_HELPER_VA(__flush_xen_tlb_one_local, vae2)
>> +static inline void __flush_xen_tlb_one_local(vaddr_t va)
>> +{
>> +    asm_inline volatile (
>> +        "tlbi vae2, %0" : : "r" (va >> PAGE_SHIFT) : "memory");
>> +}
>>
>> /* Flush TLB of all processors in the inner-shareable domain for address va. */
>> -TLB_HELPER_VA(__flush_xen_tlb_one, vae2is)
>> +static inline void __flush_xen_tlb_one(vaddr_t va)
>> +{
>> +    asm_inline volatile (
>> +        "tlbi vae2is, %0" : : "r" (va >> PAGE_SHIFT) : "memory");
>> +}
>>
>> -#undef TLB_HELPER
>> -#undef TLB_HELPER_VA
>> +/*
>> + * ARM64_WORKAROUND_REPEAT_TLBI:
>> + * For all relevant erratas it is only necessary to execute a single
>> + * additional TLBI;DSB sequence after any number of TLBIs are completed by DSB.
>> + */
>> +static inline void __tlb_repeat_sync(void)
>> +{
>> +    asm_inline volatile (
>> +        ALTERNATIVE(
>> +            "nop; nop;",
>> +            "tlbi vale2is, xzr;"
>> +            "dsb  ish;",
>> +            ARM64_WORKAROUND_REPEAT_TLBI,
>> +            CONFIG_ARM64_WORKAROUND_REPEAT_TLBI)
>> +        : : : "memory");
>> +}
>>
>> #endif /* __ASM_ARM_ARM64_FLUSHTLB_H__ */
>> /*
>> diff --git a/xen/arch/arm/include/asm/flushtlb.h b/xen/arch/arm/include/asm/flushtlb.h
>> index e45fb6d97b02..c292c3c00d29 100644
>> --- a/xen/arch/arm/include/asm/flushtlb.h
>> +++ b/xen/arch/arm/include/asm/flushtlb.h
>> @@ -65,6 +65,7 @@ static inline void flush_xen_tlb_range_va(vaddr_t va,
>>         va += PAGE_SIZE;
>>     }
>>     dsb(ish); /* Ensure the TLB invalidation has completed */
>> +    __tlb_repeat_sync();
> 
> More a question here rather than a comment, shall we have a comment on top
> of this stating that it’s deliberate to have it before the isb?
> Or developer should infer it from the code and from git blame?
I think the explanation in flushtlb.h and commit msg should be enough. To
understand it fully, you still need to read the complete message to get a full
picture, so I don't think that adding a commit with one sentence improves the
situation.

> 
>>     isb();
>> }
>>
>> -- 
>> 2.43.0
>>
>>
> 
> With these fixed:
The NITs can be fixed on commit provided no other remarks from other
maintainers, specifically @Julien.

~Michal



From xen-devel-bounces@lists.xenproject.org Tue Apr 14 15:17:52 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 14 Apr 2026 15:17:52 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1282025.1564722 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wCfWN-0001oa-6I; Tue, 14 Apr 2026 15:17:47 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1282025.1564722; Tue, 14 Apr 2026 15:17: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 1wCfWN-0001oT-2R; Tue, 14 Apr 2026 15:17:47 +0000
Received: by outflank-mailman (input) for mailman id 1282025;
 Tue, 14 Apr 2026 15:17:45 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <bernhard.kaindl@citrix.com>) id 1wCfWL-0001oN-Gd
 for xen-devel@lists.xenproject.org; Tue, 14 Apr 2026 15:17:45 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wCfWK-00GyXU-9N
 for xen-devel@lists.xenproject.org; Tue, 14 Apr 2026 17:17:44 +0200
Received: from [10.42.69.7] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <bernhard.kaindl@citrix.com>)
 id 69de5a8d-e002-0a2a0a5209dd-0a2a4507c124-24
 for <xen-devel@lists.xenproject.org>; Tue, 14 Apr 2026 17:17:44 +0200
Received: from [52.101.46.23]
 (helo=CO1PR03CU002.outbound.protection.outlook.com)
 by tlsNG-ef75cf.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.0)
 (envelope-from <bernhard.kaindl@citrix.com>)
 id 69de5a96-ba2d-0a2a45070019-34652e17cb91-3
 for <xen-devel@lists.xenproject.org>; Tue, 14 Apr 2026 17:17:43 +0200
Received: from LV3PR03MB7707.namprd03.prod.outlook.com (2603:10b6:408:28b::21)
 by CH0PR03MB6068.namprd03.prod.outlook.com (2603:10b6:610:bf::21)
 with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9769.48; Tue, 14 Apr
 2026 15:17:36 +0000
Received: from LV3PR03MB7707.namprd03.prod.outlook.com
 ([fe80::97e8:ef9c:9031:e2bf]) by LV3PR03MB7707.namprd03.prod.outlook.com
 ([fe80::97e8:ef9c:9031:e2bf%6]) with mapi id 15.20.9769.046; Tue, 14 Apr 2026
 15:17: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=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=UJa63nQ03rQ1ZJTYobZsogUzbIpx+EondWqH4Bec3pcCtz4P4SX+I3Kzax8VKiO9ltbMt451MtjvE/zlSHXYF+YojF69tZOSO1eiGrL1tn8PpAxgLHrLYpnHZ/nNjw92L/zWgRdCkZLSvhKUB/DenD71LLtHbe01TwglAv0C66rb/vYCZhfmfARb+JsXnHAsqURW7HYZs/TyEmB1BrszlPMqNS8N5hp4VNMPxsBNu48rBCRWuFu8C1lZ23cF+Ix2rFuc1J0v9UGCV/K9WbVwvf9q//bxGCctGd+cWxkvaLr4YgaB7IozU8THBEZ2rjzM66i7Wod8t3Q8+Bm9LTVWaw==
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com;
 s=arcselector10001;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1;
 bh=keQrFtT9dt5ZDdhDEWvYWBjAYAxqqgcuTssWiEsqDlA=;
 b=rJkjXr3G7mVd6a41emhNx26+KWoRoHoKi4AP8xysX9LcPRxcR1WS3tg1n/yZHGskO25OxDz5pEFLtYhDThq2PIWi2FPPR0DnlPp4ukWmuLdF+8XF+DN03gnmfA1kKH+qq+PrzBXOFObWFBW784wmLYXPP8ZlVyDELXwK4fXpB/1dxf6VEw6ufitVP7W2xsn9iwUjiwcB9iZf/zU3Hvq9HpEYje8+4rp7D9fPfGsugxTfjZaZgpQEWWtf3wtLb9eQK4wzuBxFy1zB/84kdSwO5rUs0bneWf11ThHgi818eQRRK+Q26Bo5VT6WY3ifCQ/xOK6dKbeMaLjGMityl4zUNQ==
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=keQrFtT9dt5ZDdhDEWvYWBjAYAxqqgcuTssWiEsqDlA=;
 b=icj9r5onP9krSxqdkoxnUG1CoLloS3f81fSgsjHl5FTFcvla8N1F39CDPG2Smy3azY9CqM1q1A05ucaDw3Zek3Ge2w8y+NJPI9mWVS2HgVfMZNey+fLAdmZ7KAFWlMD6LydUPSjdNqRkhlwmXSLDQat3djwsNGUvRuRlEL/Lhak=
From: Bernhard Kaindl <bernhard.kaindl@citrix.com>
To: Jan Beulich <jbeulich@suse.com>
CC: Andrew Cooper <andrew.cooper@citrix.com>, Anthony PERARD
	<anthony.perard@vates.tech>, Michal Orzel <michal.orzel@amd.com>, Julien
 Grall <julien@xen.org>, Roger Pau Monne <roger.pau@citrix.com>, 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 05/10] xen/domain: Add DOMCTL handler for claiming
 memory with NUMA awareness
Thread-Topic: [PATCH v4 05/10] xen/domain: Add DOMCTL handler for claiming
 memory with NUMA awareness
Thread-Index: AQHcpy8NKyz6wh/Wrk6CsdW/rK3ShrWf2LiAgAAdICA=
Date: Tue, 14 Apr 2026 15:17:36 +0000
Message-ID:
 <LV3PR03MB7707A579E5CBD292B127995C87252@LV3PR03MB7707.namprd03.prod.outlook.com>
References: <cover.1772098423.git.bernhard.kaindl@citrix.com>
 <b2c94f0c3b41976b2691ce15b9f9a2589370e65a.1772098423.git.bernhard.kaindl@citrix.com>
 <7d439bb1-7381-4fa4-af79-423e8c7fafb1@suse.com>
In-Reply-To: <7d439bb1-7381-4fa4-af79-423e8c7fafb1@suse.com>
Accept-Language: en-GB, en-US
Content-Language: en-GB
X-MS-Has-Attach:
X-MS-TNEF-Correlator:
authentication-results: dkim=none (message not signed)
 header.d=none;dmarc=none action=none header.from=citrix.com;
x-ms-publictraffictype: Email
x-ms-traffictypediagnostic: LV3PR03MB7707:EE_|CH0PR03MB6068:EE_
x-ms-office365-filtering-correlation-id: 77f1c313-5d3a-4652-4d28-08de9a38f58d
x-ms-exchange-senderadcheck: 1
x-ms-exchange-antispam-relay: 0
x-microsoft-antispam:
 BCL:0;ARA:13230040|1800799024|376014|366016|38070700021|18002099003|22082099003|56012099003;
x-microsoft-antispam-message-info:
 T7qMN6GaovhBvpVEWSNChHSDG1Doiz0eLAtJgMSJEy4ePhr4HSb3+a/jRi/qUBz61MUmV0Reel6R/Pjs9jS5qu0F84NWKpjz6CXi6XYpzW6fDn4zt9e9aLKEjIyGX4v2NnmA5RKWqillc9hHptPdaRHjn8gjHXzMpB69M15dnr/MwQ9H+W4DsIbGSS8GFPVwJvLTFoEk6sAQ1jcoZ7Pkib5tsufJZZHWSqfbdXvT+BbqWHPH2MYbG04tHIHIplfKAZnGBuDbN3JIhlwR9CiK2j2+HquRKKptqk7nnzQqDZ+RRkAF6TADTourwlHzLzDRFR7MHW+NEFNUiiSWaGFtcmYF9aMV53Xmf1TWhOVoWdypeKimlZmw5OiHgqyiDDOod2YHYEGvlFPyN64r6NZ45IxZBqooZtkzh4sAZfMvQP9p7iTC7+ol0L8EknD7vIyjiuRJp9QFPNscbEI8VeBGcSziOYxgMTWF/QBOPzT0k8hZVXJRr7qhsmrr970HfMf0whvkOJTx4zdj/LpKNlWR07U0QfyNhXlFC/XcE6l1hMTnsxOUU3Z97M53iSOATmKbLHrphUHoTZlXVRYYS+//LqdtEQWLJfzxouGOwjyYJqYS7JxpH77mNddPCB7tgNC3dt+gHA1sdPlDM5VE+QfYJ/UoUMJrA3y17Ikwyo6d0P04FjraZRzTqkS8hZSIuLg9zsf4rpJnyPnvsITUBsg2OC2j1ZU8VBbQn1ACyVYpPmiAxEbXj5mZALByrQCBXAtR
x-forefront-antispam-report:
 CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:LV3PR03MB7707.namprd03.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(1800799024)(376014)(366016)(38070700021)(18002099003)(22082099003)(56012099003);DIR:OUT;SFP:1101;
x-ms-exchange-antispam-messagedata-chunkcount: 1
x-ms-exchange-antispam-messagedata-0:
 =?utf-8?B?czdkcEpkbUhjSnc3K2hianYya1M4cVZvNmhYKyt3S1drdFN0b0ZMUHBJVzg5?=
 =?utf-8?B?S2ZuSEd6MTBHdzRXR2JLSkFyZkZhLzNkN0NmMW1xMVZwZEJIMnlRbVFsVnc1?=
 =?utf-8?B?eUNIOEZDRXBlUVIySUI4dU55MXdUZDRMTGlZbDZUTEY3d0Z5N1JheFpxOTFH?=
 =?utf-8?B?UHJ6SzkwTWZJNEJScGo2MTQ2eWp1bU9zVjVJWDluYXhBbm9KNHgzakxLWTIr?=
 =?utf-8?B?S3RSbmRrMVNHV2xocW84ZU5hSThIT2kyY3F2RGtCaHluQ0hBWk4wYTdVeTVy?=
 =?utf-8?B?dlBPRHFtNXF1dTJpcnhUU1VrMVFwSUlwY0VjbndrVjJ1ekdpUkhyYVJjOVE5?=
 =?utf-8?B?MkJiTDZVV0JMVUY4dVRVYzBjTTNFdlE3UVc3TUx3WldsMlljS29QaHRSWjg0?=
 =?utf-8?B?N09qbkRoczdqREwrSzg2clV0blZielJLSXNZbFlDMlJZUU0xU1I1VHJnTHpi?=
 =?utf-8?B?SzNHVDJBZHlQQWc4NHlEaU9nMGU1WTMyZkZiZDZVUkQyWCtLbGkxajVYMkpz?=
 =?utf-8?B?NGZHRGViNnNIaXVPOXFGMHBZWEF0ZkV2anVaNmpndDJGYVFMNEVmUEF6MWZw?=
 =?utf-8?B?WEttRUwvdVFadDcvWFVLNnFCanZDWEVCTThDM2JyT1VEbVFEdElBT0FRTU84?=
 =?utf-8?B?dUhtcld5RGU5RTczcHA4Y2lrQlpkczIrTUE4MnFlM29xd0pGWFUyYklaZVNB?=
 =?utf-8?B?NkkxZmFvUGF4elp6TXM4YXk2bk9XcHpJZDFGQm5wUU5RY3RFVlpOTkIxc2Vo?=
 =?utf-8?B?d2tpSGdHOXpUWkl3WFlmbmY5UkFEZ3BBL205aWlnUTN4ZzQweG8yVjZ0L3RZ?=
 =?utf-8?B?cXhMaE9LclQyaVQxd0NpQmZ2bm9pLzFoVWlONWpidkZlTTJudHFYRzFJL1BT?=
 =?utf-8?B?bnRINHUwYzgvcnVHMGpiUzV5STAxMWNzaEswQkpLM0RpK25TcVoxOWpvYnZ4?=
 =?utf-8?B?K1ZjQXphTmtZdk5tV2VEaVdWWjg1V2JEWjg0aitoV3owcEM5MytXaWhCMzdY?=
 =?utf-8?B?ZENUdHk3bTVoK3FKZDZTS1V2SHExNFRaU0FFZ1p3aWUzcThJNjk5L01FcUZF?=
 =?utf-8?B?SU1nSlAydDZSVG1ma1RUZG1tWlo5UmFSaUc1N0hDcWxVK0dkdDI5ZlMwU011?=
 =?utf-8?B?UXBaYkY2NUNzMWZSZ2ZTR0JFRkRSa0tEQ3FVNUZ6TUpwS3JQMGhBQnVCaUpU?=
 =?utf-8?B?T3JYcWxVRzVuZER5K3NWVDd2STJkNW5kY2FYbFdJSjJpT3c4aTNCNjhocHlE?=
 =?utf-8?B?WjZ2QzdhaC9nNklLajZnOXNqMkRWS0YydWNmem51S3lwMXpUeFBhMGNhd3dE?=
 =?utf-8?B?aU40Tnl6TUlrbmwrMXZSbVVnMkV3TTd6Mjh2T0VGOGJCcmJzSjI0eUZCYmR1?=
 =?utf-8?B?ZHN3b08xaDBpa0ovY2U3SXlUOU40OXVZRmdCY0VlTmd1ODZpSDR6QTloQU1w?=
 =?utf-8?B?cEN2Wll2MWJzRWs5UEJSN3grYnN5R3ZxUnhnM1ZTWlQwdDFzTmxRZEQ0WUdB?=
 =?utf-8?B?MENUcVNIelJvUlkvNFVrSUgxblYrZDhQOFRhMUdqLzkyeGI4MGgyVEZKTzdu?=
 =?utf-8?B?bEhwK3Q1UEdCQmRJNzlJTTNtZnhDVXBqU3g5QVZsenorbUJES2o2aHcxN1li?=
 =?utf-8?B?TjBoQmlWR0MyYVRVZHlTMnpEVk1RYXg5WVVTZGF5d0d4eHhzaHFrc3BrRmIw?=
 =?utf-8?B?S2xjZVUydWNVZVcyNU5BRnllV09wVlZDZnBVU2FqeEZ2RWdqT3V1R2xldnR3?=
 =?utf-8?B?RVdvRGNQTVZ3eUdBNUlTaHB5bjJIWm1hWEE4ajAvdGNLbUtKM2JtWFc5VWpX?=
 =?utf-8?B?bTc3ODhCSUppUzVUUGZaSktDcVoyb3dsdCsyeHdzc1ZSd3Q4aDhPRHFiWHZi?=
 =?utf-8?B?RkhQQnZPL1BWY1dITld1dnByUnFxQnFtQVV0b1l6NFhQT3l2NDNIVVZ6dnU4?=
 =?utf-8?B?NklpbUlDSjNpeFpwUUlDQlBCeStoLzZxdHJ3K05hUkIzanphaHR5UUhiazNa?=
 =?utf-8?B?bHNhMCtiWWxKZ0t6bUE3Yk0xeFlEU24rZGx3V0xObFdBS0NPRnBNaUVPUWc1?=
 =?utf-8?B?WlBwNlRQb1VUY0psdlcvMWNVNFZMZXF1MlFvT2dPUUNBQkU3TUhCWXZXb2wz?=
 =?utf-8?B?Q2RLaTZSVkZjMkpjSCtuZmx2eVBaVWNSOFBLUXJtOGJza0duNE5iMXMyUnNj?=
 =?utf-8?B?c2drc0xXMmY2aVUzdk82NElKUWR3TnZnamQ3RVlVNURZNk9GNlJ5aE9Ndmsv?=
 =?utf-8?B?aFVLdHREYlJpWCtFanNXQjBzZ014c0hQZkNPZnIwLzlDT0xEUk40S0dvWmtz?=
 =?utf-8?B?YXh6QmRXSlNEK1l1R1NUbzdscWFjeTEySGNzNGRZUjlscXNDazVpUT09?=
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: LV3PR03MB7707.namprd03.prod.outlook.com
X-MS-Exchange-CrossTenant-Network-Message-Id: 77f1c313-5d3a-4652-4d28-08de9a38f58d
X-MS-Exchange-CrossTenant-originalarrivaltime: 14 Apr 2026 15:17:36.1361
 (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: di6JSZXLONVkvFaIa7tlEE5iQoFKZA9v3wy8Gdtm7by+Ckf0FAVjZ4nnCjMSzFbWWUJJQkND7qD+RBCvy6GoY5uQtYi1Ma1fT4Ei8GnoG48=
X-MS-Exchange-Transport-CrossTenantHeadersStamped: CH0PR03MB6068
X-purgate-ID: tlsNG-ef75cf/1776179863-8975241E-0B0A186A/0/0
X-purgate-type: clean
X-purgate-size: 9924

SGkgSmFuLA0KDQpJJ20gc29ycnkgZm9yIHRoZSBsYXRlIHJlcGx5LCBJIGhhZCBtYW55IFRPRE9z
IGFuZCBhIHZhY2F0aW9uIG1lYW53aGlsZSwNCmJ1dCBJJ20gYmFjayB3aXRoIHRoZSBmaXhlcyBm
b3IgdGhlIHJldmlldy4NCg0KSmFuIEJldWxpY2ggd3JvdGU6DQo+ID4gLS0tIGEveGVuL2NvbW1v
bi9kb21haW4uYw0KPiA+ICsrKyBiL3hlbi9jb21tb24vZG9tYWluLmMNClsuLi5dDQo+ID4gK2lu
dCBjbGFpbV9tZW1vcnkoc3RydWN0IGRvbWFpbiAqZCwgWy4uLl0NCj4gDQo+IHN0YXRpYyBpbiBk
b21jdGwuYz8gT3RoZXJ3aXNlIHdpdGggUGVubnkncyB3b3JrIHRvIG1ha2UgZG9tY3RsIG9wdGlv
bmFsIHRoaXMNCj4gd291bGQgYmUgdW5yZWFjaGFibGUgY29kZS4NCg0KVGhhbmtzLCBkb25lOiBN
b3ZlZCBpdCB0byBkb21jdGwuYyB0byBiZSBub3QgY29tcGlsZWQgd2l0aG91dCBNR01UX0hZUEVS
Q0FMTFMgaW4gdjUvdjYuDQoNCj4gPiArICAgIGlmICggdWluZm8tPnBhZCB8fCB1aW5mby0+bnJf
Y2xhaW1zICE9IDEgfHwgZC0+aXNfZHlpbmcgKQ0KPiA+ICsgICAgICAgIHJldHVybiAtRUlOVkFM
Ow0KPiANCj4gQXMgYWxyZWFkeSBhbGx1ZGVkIHRvIGluIHJlcGx5IHRvIHBhdGNoIDAzLCBJIGNh
bid0IGhlbHAgdGhlIGltcHJlc3Npb24gdGhhdA0KPiB1c2FnZSBvZiB0aGlzIHN1Yi1vcCB3aXRo
IG11bHRpcGxlIGVudHJpZXMgd291bGQgd2UgcXVpdGUgZGlmZmVyZW50IChpLmUuIGl0DQo+IHdv
dWxkIGJlIG5vdCBvbmx5IHRoZSBpbXBsZW1lbnRhdGlvbiBpbiBYZW4gdGhhdCBjaGFuZ2VzKS4g
SSdtIHRoZXJlZm9yZQ0KPiBwcmV0dHkgdW5jZXJ0YWluIHdoZXRoZXIgdGFraW5nIGl0IHdpdGgg
dGhpcyByZXN0cmljdGlvbiBpcyBnb2luZyB0byBtYWtlDQo+IG11Y2ggc2Vuc2UuDQoNCkkgc3Vi
bWl0dGVkIHRoaXMgc3ViLW9wIHRvIHN1cHBvcnQgbXVsdGlwbGUgZW50cmllcyB3aXRoIHY1L3Y2
IG5vdy4NCg0KSW4gdjUvdjYgdGhlc2UgY2hlY2tzIGFyZSB1cGRhdGVkIHRvIHN1cHBvcnQgbXVs
dGlwbGUgY2xhaW1zIGluIHRoZSBjbGFpbSBzZXQuDQpGb3IgY2xhcml0eSwgSSByZW5hbWVkIHRo
ZSAubm9kZSBvZiB0aGUgaW5kaXZpZHVhbCBjbGFpbSBlbnRyaWVzIHRvIC50YXJnZXQ6DQoNClRo
ZSB0YXJnZXQgb2YgYSBjbGFpbSBlbnRyeSBjYW4gYWxzbyBiZSBhIHNlbGVjdG9yIGZvciBhIGds
b2JhbCBjbGFpbQ0Kb3IgYSBsZWdhY3kgY2xhaW0gYW5kIHRoZSBmaWVsZCBoYXZlIG1hbnkgYml0
cyBmb3IgZnV0dXJlIHVzZS4NCg0KVGhpcyB3YXNuJ3QgbmVlZGVkIGJ1dCBJIHRoaW5rIGl0J3Mg
Y2xlYXJlciB0aGF0IHRoZSBjbGFpbSBlbnRyeSBzcGVjaWZpZXMgYQ0KdGFyZ2V0IHdoaWNoIGlz
IHdoZXJlIHRoZSBjbGFpbSBlbnRyeSBpcyBhaW1lZCBhdCwgaXQncyBub3QganVzdCBvbmx5IGEg
bm9kZS4NCg0KPiArICAgIGlmICggY2xhaW0ubm9kZSA9PSBYRU5fRE9NQ1RMX0NMQUlNX01FTU9S
WV9OT19OT0RFICkNCj4gPiArICAgICAgICBjbGFpbS5ub2RlID0gTlVNQV9OT19OT0RFOw0KPiAN
Cj4gV2hhdCBhYm91dCB0aGUgaW5jb21pbmcgY2xhaW0ubm9kZSBiZWluZyBOVU1BX05PX05PREU/
IEltbyB0aGUgcmFuZ2UgY2hlY2tpbmcNCj4gdGhlIHByZXZpb3VzIHBhdGNoIGFkZHMgdG8gZG9t
YWluX3NldF9vdXRzdGFuZGluZ19wYWdlcygpIHdhbnRzIHRvIG1vdmUgaGVyZSwNCj4gYXQgd2hp
Y2ggcG9pbnQgdGhlIGZ1bmN0aW9uJ3MgbmV3IHBhcmFtZXRlciBjb3VsZCBiZSBwcm9wZXJseSBu
b2RlaWRfdC4NCg0Kbm9kZWlkX3QgYW5kIE5VTUFfTk9fTk9ERSBoYXZlIChqdWRnaW5nIGJ5IHRo
ZSBleGlzdGluZyBpbXBsZW1lbnRhdGlvbikgYXJlIG5vdA0KZXhwb3NlZCBpbiB0aGUgcHVibGlj
IEFQSSB0byB0aGUgY29udHJvbCBkb21haW4uDQoNClRoaXMgc2VwYXJhdGlvbiBpcyBwcm9iYWJs
eSBhIGdvb2QgdGhpbmcgYmVjYXVzZSBpdCBhbGxvd3MgdG8gY2hhbmdlIFhlbiBpbnRlcm5hbHMN
Cmxpa2Ugbm9kZWl0X3QgYW5kIE5VTUFfTk9fTk9ERSBpZiBzbyBkZXNpcmVkIHdpdGhvdXQgY2hh
bmdpbmcgdGhlIHB1YmxpYyBBUEkuDQoNCk5VTUFfTk9fTk9ERSBpcyBkZWZpbmVkIGFzIDB4RkYg
YW5kIG5vZGVpZF90IGlzIHU4LiBCdXQgdGhhdCBpcyBqdXN0IGFuDQppbXBsZW1lbnRhdGlvbiBk
ZXRhaWwgb2YgdGhlIEh5cGVydmlzb3IgaXRzZWxmLiBJZiBuZWVkZWQsIHdlIGNvdWxkIGNoYW5n
ZQ0KdGhlIGltcGxlbWVudGF0aW9uIGxpa2UgdGhpcyBzZXJpZXMgY291bGQgZG8sIGlmIHdhbnRl
ZC4NCg0KVGhlIHB1YmxpYyBzdHJ1Y3QgeGVuX3N5c2N0bF9udW1haW5mbyBhbmQgeGVuX3N5c2N0
bF9waHlzaW5mbyBkZWZpbmUgbnVtX25vZGVzLA0KbnJfbm9kZXMgYW5kIG1heF9ub2RlX2lkIGFz
IHVpbnQzMl90LCBmb3IgZXhhbXBsZS4gRm9yIHR5cGUgY29uc2lzdGVuY3ksIEkgb3B0ZWQNCnRv
IGRlZmluZSB0aGlzIHB1YmxpYyBBUEkgYXMgdWludDMyX3QgYXMgd2VsbCBhbmQgbm90IGV4cG9z
ZSBpbnRlcm5hbCB0eXBlcy92YWx1ZXMuDQogDQo+ID4gKyAgICByZXR1cm4gZG9tYWluX3NldF9v
dXRzdGFuZGluZ19wYWdlcyhkLCBjbGFpbS5wYWdlcywgY2xhaW0ubm9kZSk7DQo+ID4gK30NCj4g
DQo+IFRoZXJlJ3Mgbm8gY29weWluZyBiYWNrIG9mIHRoZSByZXN1bHQuIFdoZW4gdGhpcyBpcyBl
eHRlbmRlZCB0byBhbGxvdyBtb3JlDQo+IHRoYW4gb25lIGVudHJ5LCB3aGF0J3MgdGhlIHBsYW4g
dG93YXJkcyBkZWFsaW5nIHdpdGggcGFydGlhbCBzdWNjZXNzPyBOZWVkaW5nDQo+IHRvIHJvbGwg
YmFjayBtYXkgYmUgdW53aWVsZHkuDQoNClJvZ2VyIGRlc2NyaWJlZCB0aGUgY29yZSByZXF1aXJl
bWVudCBJJ20gaW1wbGVtZW50aW5nOg0KDQogID4gSWRlYWxseSwgd2Ugd291bGQgbmVlZCB0byBp
bnRyb2R1Y2UgYSBuZXcgaHlwZXJjYWxsIHRoYXQgYWxsb3dzDQogID4gbWFraW5nIGNsYWltcyBm
cm9tIG11bHRpcGxlIG5vZGVzIGluIGEgc2luZ2xlIGxvY2tlZCByZWdpb24sDQogID4gYXMgdG8g
ZW5zdXJlIHN1Y2Nlc3Mgb3IgZmFpbHVyZSBpbiBhbiBhdG9taWMgd2F5Lg0KDQogICAgICAtLSBS
b2dlciBQYXUgTW9ubsOpDQpSZWY6DQpodHRwczovL2xpc3RzLnhlbnByb2plY3Qub3JnL2FyY2hp
dmVzL2h0bWwveGVuLWRldmVsLzIwMjUtMDYvbXNnMDA0ODQuaHRtbA0KDQpBcyBhIHJlc3VsdCwg
d2UgZG9uJ3QgbmVlZCB0byBoYW5kbGUgcGFydGlhbCBzdWNjZXNzZXMsIHNvIGl0cyBub3QgbmVl
ZGVkLg0KDQo+ID4gKyNkZWZpbmUgWEVOX0RPTUNUTF9DTEFJTV9bLi4uXSAgICAweEZGRkZGRkZG
ICAvKiBObyBub2RlOiBob3N0IGNsYWltICovDQo+IA0KPiAiaG9zdCBjbGFpbSIgKGluIHRoZSBj
b21tZW50KSBhbHNvIGlzIGFtYmlndW91cy4gUGVyLW5vZGUgY2xhaW1zIGFsc28gYWZmZWN0DQo+
IHRoZSBob3N0LiBNYXliZSAiaG9zdCB3aWRlIiBvciAiZ2xvYmFsIj8NCg0KVGhhbmtzIGZvciB0
aGlzIHN1Z2dlc3Rpb24hIEkgY2hhbmdlZCB0aGUgdGVybSB1c2VkIGV2ZXJ5d2hlcmUgdG8gImds
b2JhbCIgaW4gdjUvNi4NCg0KPiA+ICsvKiBVc2UgWEVOX05PREVfQ0xBSU1fSU5JVCB0byBpbml0
aWFsaXplIGEgbWVtb3J5X2NsYWltX3Qgc3RydWN0dXJlICovDQo+ID4gKyNkZWZpbmUgWEVOX05P
REVfQ0xBSU1fSU5JVChfcGFnZXMsIF9ub2RlKSB7IFwNCj4gPiArICAgIC5wYWdlcyA9IChfcGFn
ZXMpLCAgICAgICAgICAgICAgICAgIFwNCj4gPiArICAgIC5ub2RlID0gKF9ub2RlKSwgICAgICAg
ICAgICAgICAgICAgIFwNCj4gPiArICAgIC5wYWQgPSAwICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIFwNCj4gPiArfQ0KPiANCj4gV2hpbGUgb25seSBhIG1hY3JvLCBpdCdzIHN0aWxsIG5vdCBD
ODksIGFuZCBoZW5jZSBtYXkgd2FudHMgb2ZmZXJpbmcgb25seSBhcw0KPiBhbiBleHRlbnNpb24u
IEFsc28gLnBhZCBkb2Vzbid0IG5lZWQgZXhwbGljaXRseSBzcGVjaWZ5aW5nLCBkb2VzIGl0PyBJ
ZiB5b3UNCj4gcHJvdmlkZSBzdWNoIGEgbWFjcm8sIGlkZW50aWZpZXJzIHVzZWQgYWxzbyBuZWVk
IHRvIHN0cmljdGx5IGNvbmZvcm0gdG8gdGhlDQo+IEMgc3BlYyAoSU9XIGxlYWRpbmcgdW5kZXJz
Y29yZXMgYXJlbid0IHBlcm1pdHRlZCkuDQoNClRoYW5rcywgcmVtb3ZlZCBhcyBub3QgbmVlZGVk
Lg0KDQo+ID4gK0RFRklORV9YRU5fR1VFU1RfSEFORExFKG1lbW9yeV9jbGFpbV90KTsNCj4gDQo+
IFRoaXMgd2FudHMgdG8gbW92ZSB1cCBuZXh0IHRvIHRoZSB0eXBlZGVmLg0KDQpUaGFua3MsIGRv
bmUgaW4gdjUvdjYuDQogDQo+ID4gKyAgICAvKiBJTjogbnVtYmVyIG9mIGNsYWltcyBpbiB0aGUg
Y2xhaW1zIGFycmF5IGhhbmRsZS4gU2VlIHRoZSBjbGFpbXMNCj4gDQo+IElzIHJlcGVhdGluZyB0
aGUgd29yZCAiY2xhaW0iIG5lY2Vzc2FyeSAvIHVzZWZ1bCBoZXJlPw0KDQpUaGFua3MsIGZpeGVk
Lg0KDQo+ID4gICNkZWZpbmUgWEVOX0RPTUNUTF9nZXRfZG9tYWluX3N0YXRlICAgICAgICAgICAg
ICA5MCAvKiBzdGFibGUgaW50ZXJmYWNlICovDQo+ID4gKyNkZWZpbmUgWEVOX0RPTUNUTF9jbGFp
bV9tZW1vcnkgICAgICAgICAgICAgICAgICA5MQ0KPiANCj4gU2VlaW5nIHRoZSBhZGphY2VudCBj
b21tZW50LCBkaWQgeW91IGNvbnNpZGVyIG1ha2luZyB0aGlzIG5ldyBzdWItb3AgYSBzdGFibGUN
Cj4gb25lIGFzIHdlbGw/DQoNClRoYW5rcywgSSBpbnZlc3RpZ2F0ZWQgbWFraW5nIHN1Y2ggY2hh
bmdlLCBidXQgSSBkb24ndCB0aGluayBpdCBzaG91bGQgYmUgY2hhbmdlZDoNCg0KSW4gc2hvcnQs
IFhFTl9ET01DVExfZ2V0X2RvbWFpbl9zdGF0ZSB1c2VzIGEgZml4ZWQgaHlwZXJjYWxsIHZlcnNp
b24gb2YgMCBhbmQgaXMNCmZyb3plbiBiZWNhdXNlIGl0IG5lZWRzIHRvIGJlIHVzZWQgYnkgYSBj
YWxsZXIgdGhhdCBtdXN0IHN1cHBvcnQgbXVsdGlwbGUgWGVuDQp2ZXJzaW9ucy4gQ29uc2VxdWVu
dGx5LCBsaWJ4ZW5jdHJsLCB1c2luZyBvbmx5IHRoZSB2ZXJzaW9uIGNvbnRyb2xsZWQgaHlwZXJj
YWxscw0KZG9lcyBub3QgaW1wbGVtZW50IHRoaXMgaHlwZXJjYWxsLg0KDQpUaGF0J3Mgbm90IHRo
ZSBkZXNpZ25lZCB1c2UgY2FzZSBvZiB0aGlzIGh5cGVyY2FsbDoNCg0KVGhlIGRlc2lnbmVkIHVz
ZSBpcyBkb21haW4gYnVpbGRlcnMgcnVubmluZyBpbiBEb20wIHdoaWNoIGFscmVhZHkNCm5lZWQg
dG8gdXNlIHRoZSB1bnN0YWJsZSAodmVyc2lvbmVkKSBpbnRlcmZhY2VzIGZvciBidWlsZGluZyBk
b21haW5zLg0KDQpJIHRoaW5rIHRoYXQgY2FsbGluZyB0aGlzIGh5cGVyY2FsbCB0aHJvdWdoIGxp
YnhlbmN0cmwgbGlrZSB0aGUgb3RoZXINCmh5cGVyY2FsbHMgdGhlIGRvbWFpbiBidWlsZGVycyBz
dWl0IGl0IGJldHRlci4gT3RoZXJ3aXNlLCB0aGUgZG9tYWluIGJ1aWxkZXJzDQp3b3VsZCB1c2Ug
YSBtaXggb2YgdmVyc2lvbi1jb250cm9sbGVkIGFuZCBmcm96ZW4vc3RhYmxlIGh5cGVyY2FsbHMs
IHdoaWNoIGNvdWxkDQpiZSBjb25mdXNpbmcgZm9yIEFQSSB1c2VycyBhbmQgZm9yIGZ1dHVyZSBt
YWludGVuYW5jZS4NCg0KRnJvbSB0aGUgZG9tYWluIGJ1aWxkZXJz4oCZIHZpZXdwb2ludCwgaXQg
aXMgbW9yZSBjb25zaXN0ZW50IHRvIGV4cG9zZQ0KdGhlIGNsYWltcyBoeXBlcmNhbGwgaW4gdGhl
IHNhbWUgd2F5IGFzIHRoZSBvdGhlciBjYWxscyB0aGV5IHVzZS4NCg0KRnJvbSBteSB2aWV3cG9p
bnQsIHN1Y2ggZnJvemVuIGludGVyZmFjZXMgYWxzbyBoYXZlIGRyYXdiYWNrczogQnkgcHJvdmlk
aW5nDQpzdGFibGUgc3lzY2FsbHMsIExpbnV4IG5lZWRzIHRvIG1haW50YWluIHRoZSBvbGQgaW50
ZXJmYWNlIGluZGVmaW5pdGVseSwgd2hpY2gNCmNhbiBiZSBhIG1haW50ZW5hbmNlIGJ1cmRlbiBh
bmQgY2FuIGxpbWl0IHRoZSBhYmlsaXR5IHRvIG1ha2UgaW1wcm92ZW1lbnRzIG9yDQpjaGFuZ2Vz
IHRvIHRoZSBpbnRlcmZhY2UgaW4gdGhlIGZ1dHVyZS4gTGludXggY2FycmllcyBtYW55IHN5c2Nh
bGwgc3VjY2Vzc29yDQpmYW1pbGllcywgZS5nLiwgb2xkc3RhdCwgc3RhdCwgbmV3c3RhdCwgc3Rh
dDY0LCBmc3RhdGF0LCBzdGF0eCwgd2l0aCBzaW1pbGFyDQpleGFtcGxlcyBpbmNsdWRpbmcgb3Bl
bmF0LCBvcGVuYXQyLCBjbG9uZTMsIGR1cDMsIHdhaXRpZCwgbW1hcDIsIGVwb2xsX2NyZWF0ZTEs
DQpwc2VsZWN0NiBhbmQgbWFueSBtb3JlLiBHbGliYyBoaWRlcyB0aGF0IGNvbXBsZXhpdHkgZnJv
bSB1c2VycyBieSBwcm92aWRpbmcgYQ0KY29uc2lzdGVudCBBUEksIGJ1dCBpdCBzdGlsbCBuZWVk
cyB0byBtYWludGFpbiB0aGUgb2xkIHN5c3RlbSBjYWxscyBmb3INCmNvbXBhdGliaWxpdHkuIFhl
bidzIGludGVyZmFjZSBmb3IgRG9tMCBpcyBub3QgYW4gT1Mga2VybmVsIHN5c2NhbGwgaW50ZXJm
YWNlLg0KDQpJbiBjb250cmFzdCwgdGhlIHZlcnNpb25lZCBsaWJ4ZW5jdHJsIGh5cGVyY2FsbHMg
YWxsb3cgZm9yIG1vcmUgZmxleGliaWxpdHkgYW5kDQpldm9sdXRpb24gb2YgdGhlIEFQSSB3aGls
ZSBzdGlsbCBwcm92aWRpbmcgYSBjbGVhciBwYXRoIHRvIGFkb3B0IG5ldyBmZWF0dXJlcy4NCg0K
VGhlIHJlc2VydmVkIGZpZWxkcyBhbmQgcmVzZXJ2ZWQgYml0cyBpbiB0aGUgc3RydWN0dXJlcyBv
ZiB0aGlzIGh5cGVyY2FsbCBhbGxvdw0KZm9yIG1hbnkgZnV0dXJlIGV4dGVuc2lvbnMgd2l0aG91
dCBicmVha2luZyBleGlzdGluZyBjYWxsZXJzLg0KDQpUaGFua3MgZm9yIHlvdXIgcmV2aWV3IG9m
IHRoZSB2NCBzZXJpZXMgc28gZmFyLA0KYW5kIEknbSBsb29raW5nIGZvcndhcmQgZm9yIGV2ZXJ5
b25lJ3MgcmV2aWV3cyBvZiB0aGUgdjYgc2VyaWVzOg0KDQpbUEFUQ0ggdjJdIGRvY3M6IERyYWZ0
IERlc2lnbiBEb2N1bWVudCBmb3IgTlVNQS1hd2FyZSBjbGFpbSBzZXRzDQpodHRwczovL2xpc3Rz
Lnhlbi5vcmcvYXJjaGl2ZXMvaHRtbC94ZW4tZGV2ZWwvMjAyNi0wNC9tc2cwMDU2OS5odG1sDQpo
dHRwczovL3BhdGNod29yay5rZXJuZWwub3JnL3Byb2plY3QveGVuLWRldmVsL2xpc3QvP3Nlcmll
cz0xMDgxMDQ3DQoNCltQQVRDSCB2NiAwLzddIHhlbi9tbTogSW50cm9kdWNlIE5VTUEtYXdhcmUg
Y2xhaW0gc2V0cyBmb3IgZG9tYWlucw0KaHR0cHM6Ly9saXN0cy54ZW4ub3JnL2FyY2hpdmVzL2h0
bWwveGVuLWRldmVsLzIwMjYtMDQvbXNnMDA1ODcuaHRtbA0KaHR0cHM6Ly9wYXRjaHdvcmsua2Vy
bmVsLm9yZy9wcm9qZWN0L3hlbi1kZXZlbC9saXN0Lz9zZXJpZXM9MTA4MTEzOQ0KDQpUaGFua3Ms
IEJlcm5oYXJkDQo=


From xen-devel-bounces@lists.xenproject.org Tue Apr 14 16:04:48 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 14 Apr 2026 16:04:48 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1282042.1564731 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wCgFm-0000HA-Mi; Tue, 14 Apr 2026 16:04:42 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1282042.1564731; Tue, 14 Apr 2026 16: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 1wCgFm-0000H3-J7; Tue, 14 Apr 2026 16:04:42 +0000
Received: by outflank-mailman (input) for mailman id 1282042;
 Tue, 14 Apr 2026 16:04:42 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92) id 1wCgFl-0000Gx-OV
 for xen-devel@lists.xenproject.org; Tue, 14 Apr 2026 16:04:41 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wCgFj-00BqBd-F0
 for xen-devel@lists.xenproject.org; Tue, 14 Apr 2026 18:04:39 +0200
Received: from [10.42.69.2] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <oleksii.kurochko@gmail.com>)
 id 69de6589-5cb7-0a2a0a5109dd-0a2a4502d0f0-32
 for <xen-devel@lists.xenproject.org>; Tue, 14 Apr 2026 18:04:39 +0200
Received: from [209.85.128.44] (helo=mail-wm1-f44.google.com)
 by tlsNG-720697.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.0)
 (envelope-from <oleksii.kurochko@gmail.com>)
 id 69de6597-42fa-0a2a45020019-d155802ca574-3
 for <xen-devel@lists.xenproject.org>; Tue, 14 Apr 2026 18:04:39 +0200
Received: by mail-wm1-f44.google.com with SMTP id
 5b1f17b1804b1-488b8efed61so57203285e9.1
 for <xen-devel@lists.xenproject.org>; Tue, 14 Apr 2026 09:04:39 -0700 (PDT)
Received: from [192.168.1.6] (user-109-243-69-121.play-internet.pl.
 [109.243.69.121]) by smtp.gmail.com with ESMTPSA id
 ffacd0b85a97d-43d63e46a85sm42868094f8f.24.2026.04.14.09.04.37
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Tue, 14 Apr 2026 09:04:38 -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=20251104 header.d=gmail.com header.i="@gmail.com" header.h="Content-Transfer-Encoding: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=20251104; t=1776182679; x=1776787479; darn=lists.xenproject.org;
        h=content-transfer-encoding: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;
        bh=a+aMCWayM4ixlHJG7UsZh7nEeBfMdvI1oSjCQGXA9E8=;
        b=PwqBXoIMuRMDZWBtfoq6F7tin3ryMWQpJB5PWnvAZ+5CvL7YQGMCzFtlWxjsS1vX4f
         jZbIVobbxEr3HwfBkKCNujgM0V3hrt10rfjavEd1cZqQnuIMw5UG5XiKuaAG+Q9IxDxy
         fzLY67mFzH48k+cEf5RxC1Q5o9gyN1ku9g/YPYADFA5xXefATlc1hDqzB/hNUVfmcMx6
         Njb9ukMnwddr/JJTp0QoQLe+IkW/kFnmPHG4RCoUYyZsF9EdDHf11A8djaDZodDGF0u0
         U0/fzbx8H4dDvR3KiD2Wq4NF83JeNd6KbCUihaGorX4RXyuBNnB5e3fOLtgzSBIbj/Ll
         p+9A==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20251104; t=1776182679; x=1776787479;
        h=content-transfer-encoding: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;
        bh=a+aMCWayM4ixlHJG7UsZh7nEeBfMdvI1oSjCQGXA9E8=;
        b=qebUlvGH0ZF9VHQ9BFwCvbjRrDK9O3/NvucGwqeNMEKImIZeb8FTmPOB67hT3EZVyP
         lzJq8megPq728xWQarR6P0Z7RIVcQnZbpuJixuTKcfCDENseISrqz4qT3X5zYNeY0ofl
         hh5t7FMUPA8Rv7xdOTWvGghJM2pFlNq3AhQdZV2BsnhvFyLN2h04BuKgvSjoY9DZhSB6
         V5S49Jx2RBsjDLt5vKSmkpLBuIB3YcKZ2RCgVw8RvKWJM7Nv7gn7kH8oTgnr+3Bbd1s8
         f6eu/+gU7LG3mw994WWfYk1tvwPAFi3CaDuPrFZ2+x7Jnxmpro86AmJfdsr4bUnmvQw3
         k0oQ==
X-Forwarded-Encrypted: i=1; AFNElJ/hrNSC0SmxJ3FRbyb/4BTwI2Uo+jyMkomp7DARhaeisJR5YFigs6PVzoLk9TxB45JuHpRA//2VNj4=@lists.xenproject.org
X-Gm-Message-State: AOJu0Yzd7bFSlrdNgJGFW0OgoquKksTdaGVfo+EcoXuhkBWzfaq4Gb5k
	6CAPh0kZirKiR/JLTe1D2GGOWdbT8eqC4h7U6EQHTVtSA6YWICTYoqkC
X-Gm-Gg: AeBDieue5HfY1GCE5XGmecJBLKq0WL2Rwca3xWadDDHHG9SnPldgSuOpX+50ZKjprLS
	dc1WhjcwUMMLWK77sOYHyblpwt8toKkK/Wn6F5/AybbCwK+Ozcbs+WPD1niZ8vof69r6p3TGbz/
	XT2zmL6xWYEYm8l3YX1xVT0aCB/IqpU+3yMBDw887yzhvUVRnPt6Jl6BEMtiypQtPYnWPGctmsP
	OLzryXWJwFsW2RDS00uFb8konnXaerpl0eZrM9aOAGoENpD309lgD49HPLOI2QO+0oUuL2yXQtN
	n9n3X5QBqUkD/IC9y6f8nOF5DzyS4ZENgIEqe0sUXZfJthhaiN5a5ckgTLOfM6jQk6CrvZ5OAl4
	LTz9Kgw3LI0rp4E7TZaEG/yHrWTaVPX1IaMHiS4jF550BDwh/zbMYdcnjkuRveu3Ic1CsVv9w3G
	yP/MeSORiV01CeL7rw1ObwlezlEQAgYDAZ4j3mdU/psOe5xAxo5yXnsrJjv1US24BySWyVqxVc1
	kAgbFkKpVOQ5w==
X-Received: by 2002:a05:600c:4a12:b0:488:aac9:7a31 with SMTP id 5b1f17b1804b1-488cd23f39fmr201037065e9.0.1776182678527;
        Tue, 14 Apr 2026 09:04:38 -0700 (PDT)
Message-ID: <76ea5954-89cd-47a4-872a-239bbc08b785@gmail.com>
Date: Tue, 14 Apr 2026 18:04:36 +0200
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH v1 19/27] xen/riscv: emulate guest writes to virtual APLIC
 MMIO
To: Jan Beulich <jbeulich@suse.com>
Cc: Romain Caritey <Romain.Caritey@microchip.com>,
 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.pau@citrix.com>,
 Stefano Stabellini <sstabellini@kernel.org>, xen-devel@lists.xenproject.org
References: <cover.1773157782.git.oleksii.kurochko@gmail.com>
 <e29eace5006929e61da347814b9759896d179e28.1773157782.git.oleksii.kurochko@gmail.com>
 <2bff40f5-2eef-4e72-8191-b3442607e0e4@suse.com>
Content-Language: en-US
From: Oleksii Kurochko <oleksii.kurochko@gmail.com>
In-Reply-To: <2bff40f5-2eef-4e72-8191-b3442607e0e4@suse.com>
Content-Type: text/plain; charset=UTF-8; format=flowed
Content-Transfer-Encoding: 7bit
X-purgate-ID: tlsNG-720697/1776182679-ACD30CD1-EDAE375D/10/73395122804
X-purgate-type: spam
X-purgate-size: 12136



On 4/2/26 4:18 PM, Jan Beulich wrote:
> On 10.03.2026 18:08, Oleksii Kurochko wrote:
>> --- a/xen/arch/riscv/vaplic.c
>> +++ b/xen/arch/riscv/vaplic.c
>> @@ -20,6 +20,16 @@
>>   
>>   #include "aplic-priv.h"
>>   
>> +#define APLIC_REG_GET(addr, offset) \
>> +    readl((void *)((vaddr_t)(addr) + offset))
>> +#define APLIC_REG_SET(addr, offset, value) \
>> +    writel(value, (void *)((vaddr_t)(addr) + offset))
> 
> Why is addr properly parenthesized, but offset isn't?

Overlooked that. Will fix.

> 
>> +#define AUTH_IRQ_BIT(irqnum) (auth_irq_bmp[(irqnum) / APLIC_NUM_REGS] & \
>> +                              BIT((irqnum) % APLIC_NUM_REGS, U))
>> +
>> +#define regval_to_irqn(reg_val) ((reg_val) / sizeof(uint32_t))
> 
> I'm trying to make sense of the division here, but I think the main issue
> is with naming: It's not a "register value" which is passed into here, but
> a register index (offset from a range's base register).

register index would be clearer. I will rename s/regval/regindx.
> 
>> @@ -127,6 +137,164 @@ int vaplic_map_device_irqs_to_domain(struct domain *d,
>>       return 0;
>>   }
>>   
>> +static void vaplic_dm_update_target(const unsigned long hart_id, uint32_t *iprio)
>> +{
>> +    *iprio &= APLIC_TARGET_IPRIO_MASK;
>> +    *iprio |= (hart_id << APLIC_TARGET_HART_IDX_SHIFT);
>> +}
>> +
>> +static void vaplic_update_target(const struct imsic_config *imsic,
>> +                                 const int guest_id,
>> +                                 const unsigned long hart_id, uint32_t *value)
>> +{
>> +    unsigned long group_index;
>> +    unsigned int hhxw = imsic->group_index_bits;
>> +    unsigned int lhxw = imsic->hart_index_bits;
>> +    unsigned int hhxs = imsic->group_index_shift - IMSIC_MMIO_PAGE_SHIFT * 2;
>> +    unsigned long base_ppn = imsic->msi[hart_id].base_addr >> IMSIC_MMIO_PAGE_SHIFT;
>> +
>> +    group_index = (base_ppn >> (hhxs + 12)) & (BIT(hhxw, UL) - 1);
> 
> And there's no constant available to make this literal 12 more descriptive?

As it was used in aplic_set_irq_affinity() - IMSIC_MMIO_PAGE_SHIFT could 
be used here.

> 
>> +    *value &= APLIC_TARGET_EIID_MASK;
>> +    *value |= guest_id << APLIC_TARGET_GUEST_IDX_SHIFT;
>> +    *value |= hart_id << APLIC_TARGET_HART_IDX_SHIFT;
>> +    *value |= group_index << (lhxw + APLIC_TARGET_HART_IDX_SHIFT) ;
>> +}
> 
> Both functions returning void right now, why would they need to return their
> result via indirection?

No specific reason. Do you think it would be better just to return value 
instead? I am okay to rework that.

> 
>> +#define CALC_REG_VALUE(base) \
>> +{ \
>> +    uint32_t index; \
>> +    uint32_t tmp_val; \
> 
> Combine these two, or have the variables have initializers?
> 
>> +    index = regval_to_irqn(offset - base); \
> 
> There's no "offset" declared or passed into here, nor ...
> 
>> +    tmp_val = APLIC_REG_GET(priv->regs, aplic_addr) & ~auth_irq_bmp[index]; \
> 
> ... "priv", nor ...
> 
>> +    value &= auth_irq_bmp[index]; \
>> +    value |= tmp_val; \
> 
> ... "value". It may remain like this, but then it wants putting inside the
> sole function that uses it, and be #undef-ed at the end of the function.
> 
>> +}
> 
> Please wrap in do/while(0), for use sites to be required to have semicolons
> (and hence look like normal statements). Or make it a statement expression
> properly returning the calculated value.

I will put the following inside the function + undef at the end:

#define CALC_REG_VALUE(base) do {                               \ 
                                   \
     uint32_t index = regindx_to_irqn(offset - (base));          \
     uint32_t tmp_val = APLIC_REG_GET(priv->regs, aplic_addr) &  \
                        ~auth_irq_bmp[index];                    \
     value &= auth_irq_bmp[index];                               \
     value |= tmp_val;                                           \
} while ( 0 )

> 
>> +static int cf_check vaplic_emulate_store(const struct vcpu *vcpu,
>> +                                         unsigned long addr, uint32_t value)
>> +{
>> +    struct vaplic *vaplic = to_vaplic(vcpu->domain->arch.vintc);
>> +    struct aplic_priv *priv = vaplic->base.info->private;
>> +    uint32_t offset = addr & APLIC_REG_OFFSET_MASK;
> 
> See ./CODING_STYLE as to uses of fixed-width types.
> 
>> +    unsigned long aplic_addr = addr - priv->paddr_start;
>> +    const uint32_t *auth_irq_bmp = vcpu->domain->arch.vintc->private;
>> +
>> +    switch ( offset )
>> +    {
>> +    case APLIC_SETIP_BASE ... APLIC_SETIP_LAST:
> 
> And (taking this just as example) any misaligned accesses falling in this range
> are fine?

Do you mean something like 0x1C02 instead of 0x1C00 or 0x1C04? If yes, 
then I don't think. I will add the following between switch():
     if ( offset & 3 )
     {
         gdprintk(XENLOG_WARNING, "Misaligned APLIC access at offset %#x\n",
                  offset);
         return -EINVAL;
     }

> 
>> +        CALC_REG_VALUE(APLIC_SETIP_BASE);
>> +        break;
>> +
>> +    case APLIC_CLRIP_BASE ... APLIC_CLRIP_LAST:
>> +        CALC_REG_VALUE(APLIC_CLRIP_BASE);
>> +        break;
>> +
>> +    case APLIC_SETIE_BASE ... APLIC_SETIE_LAST:
>> +        CALC_REG_VALUE(APLIC_SETIE_BASE);
>> +        break;
>> +
>> +    case APLIC_CLRIE_BASE ... APLIC_CLRIE_LAST:
>> +        CALC_REG_VALUE(APLIC_CLRIE_BASE);
>> +        break;
>> +
>> +    case APLIC_SOURCECFG_BASE ... APLIC_SOURCECFG_LAST:
>> +        /* We don't suppert delagation, so bit10 if sourcecfg should be 0 */
>> +        ASSERT(!(value & BIT(10, U)));
> 
> And that bit doesn't have a proper #define?

No, at the moment, I will add:
  #define APLIC_SOURCECFG_D   BIT(10, U) to aplic.h.
> 
>> +        /*
>> +         * As sourcecfg register starts from 1:
>> +         *   0x0000 domaincfg
>> +         *   0x0004 sourcecfg[1]
>> +         *   0x0008 sourcecfg[2]
>> +         *    ...
>> +         *   0x0FFC sourcecfg[1023]
>> +         * It is necessary to calculate an interrupt number by substracting
> 
> Nit: subtracting
> 
>> +         * of APLIC_DOMAINCFG instead of APLIC_SOURCECFG_BASE.
>> +         */
>> +        if ( !AUTH_IRQ_BIT(regval_to_irqn(offset - APLIC_DOMAINCFG)) )
>> +            /* interrupt not enabled, ignore it */
> 
> Throughout the series: Please adhere to ./CODING_STYLE.
> 
>> +            return 0;
>> +
>> +        break;
> 
> And any value is okay to write?

No, it should be in a range 
[APLIC_SOURCECFG_SM_INACTIVE,APLIC_SOURCECFG_SM_LEVEL_LOW].

I will add the check before break:
         if ( value > APLIC_SOURCECFG_SM_LEVEL_LOW )
         {
             gdprintk(XENLOG_WARNING,
                      "value(%u) is incorrect for sourcecfg register\n", 
value);
             value = APLIC_SOURCECFG_SM_INACTIVE;
         }

> 
>> +    case APLIC_TARGET_BASE ... APLIC_TARGET_LAST:
>> +        struct vcpu *target_vcpu = NULL;
>> +
>> +        /*
>> +         * Look at vaplic_emulate_load() for explanation why
>> +         * APLIC_GENMSI is substracted.
>> +         */
> 
> There's no vaplic_emulate_load() - how can I go look there?

It is introduced in the next patch.

> 
> Also same typo again as above.
> 
>> +        if ( !AUTH_IRQ_BIT(regval_to_irqn(offset - APLIC_GENMSI)) )
>> +            /* interrupt not enabled, ignore it */
>> +            return 0;
>> +
>> +        for ( int i = 0; i < vcpu->domain->max_vcpus; i++ )
> 
> unsigned int
> 
>> +        {
>> +            struct vcpu *v = vcpu->domain->vcpu[i];
>> +
>> +            if ( v->vcpu_id == (value >> APLIC_TARGET_HART_IDX_SHIFT) )
>> +            {
>> +                target_vcpu = v;
>> +                break;
>> +            }
>> +        }
>> +
>> +        ASSERT(target_vcpu);
> 
> What guarantees the pointer to be non-NULL? The incoming value can be
> arbitrary, afaict.

I didn't understand your point. It is just checking that target_vcpu has 
been found. If after for() loop the value of target_vcpu is still NULL 
then something wrong in Xen.

> 
>> +        if ( !(vaplic->regs.domaincfg & APLIC_DOMAINCFG_DM) )
>> +        {
>> +            vaplic_dm_update_target(cpuid_to_hartid(target_vcpu->processor),
>> +                                    &value);
>> +        }
>> +        else
>> +            vaplic_update_target(priv->imsic_cfg,
>> +                                 vcpu_guest_file_id(target_vcpu),
>> +                                 cpuid_to_hartid(target_vcpu->processor),
>> +                                 &value);
> 
> I'm struggling with the naming here: When DM is clear, a function with "dm"
> in the name is called.

it means direct (delivery) mode. Maybe it is better to put dm at the end 
of the function name? Or it is just better to change it to something else?

> 
> For the latter one, unless other uses are intended speaking against that,
> instead of the middle two arguments simply pass target_vcpu?

Good point. I will update the function accordingly.

> 
> Also please omit the braces consistently from both branches.
> 
>> +        break;
>> +
>> +    case APLIC_SETIPNUM:
>> +    case APLIC_SETIPNUM_LE:
> 
> What about APLIC_SETIPNUM_BE?
> 
>> +    case APLIC_CLRIPNUM:
>> +    case APLIC_SETIENUM:
>> +    case APLIC_CLRIENUM:
>> +        if ( AUTH_IRQ_BIT(value) )
>> +            break;
> 
> Aren't you easily overrunning auth_irq_bmp[] here?

It makes sense to add instead:
         if ( !value || value >= APLIC_NUM_REGS * APLIC_NUM_REGS ||
              !AUTH_IRQ_BIT(value) )
             return 0;
         break;

> 
>> +        return 0;
>> +
>> +    case APLIC_DOMAINCFG:
>> +        /*
>> +         * TODO:
>> +         * The domaincfg register has this format:
>> +         * bits 31:24 read-only 0x80
>> +         * bit 8      IE
>> +         * bit 7      read-only 0
>> +         * bit 2      DM (WARL)
>> +         * bit 0      BE (WARL)
>> +         *
>> +         * The most interesting bit for us is IE(Interrupt Enable) bit.
>> +         * At the moment, at least, Linux doesn't use domaincfg.IE bit to
>> +         * disable interrupts globally, but if one day someone will use it
>> +         * then extra actions should be done.
>> +         */
>> +
>> +        printk_once("%s: Nothing to do, domaincfg is set by aplic during "
>> +                    "initialization in Xen\n", __func__);
> 
> As per the comment it's not "nothing to do", but your choice to ignore writes
> even if they may be relevant.

I will change "Nothing to do" to "Ignore writes to".

> 
>> +        return 0;
>> +
>> +    default:
>> +        panic("%s: unsupported register offset: %#x\n", __func__, offset);
> 
> Crashing the host for the guest doing something odd? It's odd that the function
> only ever returns 0 anyway - it could simply return an error here (if the
> itention is to not ignore such writes).

But maybe it is a legal offset and we really want to support it?

Even if I will return just error then a caller site will want to do 
something with this error -> for example, kill domain or panic() again. 
Maybe panic is to much and just domain should be crashed here:

default:
     gdprintk(XENLOG_WARNING,
              "Unhandled APLIC write at offset %#x (value %#x)\n",
              offset, value);
     domain_crash(vcpu->domain);
     return 0;
?

> 
> As it's not clear what values other than zero such a function may return, I
> also can't comment on its (and the hook's) return type (may want to be bool
> instead of int).

Maybe, it makes sense to switch to bool. As I mentioned above I'm 
returning -EINVAL in some cases. But it could be really just return 1 
instead. Here:
     if ( offset & 3 )
     {
         gdprintk(XENLOG_WARNING, "Misaligned APLIC access at offset %#x\n",
                  offset);
         return -EINVAL;
     }

Thanks.

~ Oleksii


From xen-devel-bounces@lists.xenproject.org Tue Apr 14 20:08:55 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 14 Apr 2026 20:08:55 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1282070.1564739 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wCk3q-0002Jy-Dh; Tue, 14 Apr 2026 20:08:38 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1282070.1564739; Tue, 14 Apr 2026 20:08: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 1wCk3q-0002Jq-8y; Tue, 14 Apr 2026 20:08:38 +0000
Received: by outflank-mailman (input) for mailman id 1282070;
 Tue, 14 Apr 2026 20:08:36 +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 1wCk3o-0002JR-Ls
 for xen-devel@lists.xenproject.org; Tue, 14 Apr 2026 20:08:36 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wCk3l-007whr-UN
 for xen-devel@lists.xenproject.org; Tue, 14 Apr 2026 22:08:35 +0200
Received: from [10.42.69.2] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <sstabellini@kernel.org>)
 id 69de9ea0-5cb7-0a2a0a5109dd-0a2a4502e8ea-32
 for <xen-devel@lists.xenproject.org>; Tue, 14 Apr 2026 22:08:35 +0200
Received: from [172.234.252.31] (helo=sea.source.kernel.org)
 by tlsNG-720697.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.0)
 (envelope-from <sstabellini@kernel.org>)
 id 69de9ec1-42fa-0a2a45020019-aceafc1fe558-3
 for <xen-devel@lists.xenproject.org>; Tue, 14 Apr 2026 22:08:34 +0200
Received: from smtp.kernel.org (transwarp.subspace.kernel.org [100.75.92.58])
 by sea.source.kernel.org (Postfix) with ESMTP id C64D1416F8;
 Tue, 14 Apr 2026 20:08:32 +0000 (UTC)
Received: by smtp.kernel.org (Postfix) with ESMTPSA id 4206FC19425;
 Tue, 14 Apr 2026 20:08: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=k20201202 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/simple; d=kernel.org;
	s=k20201202; t=1776197312;
	bh=yjVCZ3a0MrQZ9xudQupVJGsRXbJe5XDuXlr+v1hQPS8=;
	h=Date:From:To:cc:Subject:In-Reply-To:References:From;
	b=r2fSS6EPlkY+jyQLBgtliy+sf1NAR9PIAYSdJhLd/2rPvH7J2Zlc34WQr6g8V3A2l
	 Ndwx7RIDMsSqmF2/VCY5dgM+c4RRvSudqZzdmu3LU9leWblj+MAYIQPHSH2iaL6H6V
	 BY6ZPV5017q9iKPxBkq/BaN8VmmKM26b8Kk8sSRg8C2zgrhINye9giYyvRnzOCePMv
	 Ue9YDENRDV8GTI5tVtvrPO7Qyoe9TJ2IZlm62pxaEG33Mozgr/jrzcj1i2Jr8NT+Xa
	 MD2J+gFFhNyiP4lP7Xt8AaZkgq1dp56DeFf0kCIWpnJRoJs1tVG2VDyjZMjICkdhvu
	 C4bYDyONnvOjw==
Date: Tue, 14 Apr 2026 13:08:22 -0700 (PDT)
From: Stefano Stabellini <sstabellini@kernel.org>
X-X-Sender: sstabellini@ubuntu-linux-20-04-desktop
To: Roger Pau Monne <roger.pau@citrix.com>
cc: xen-devel@lists.xenproject.org, Jan Beulich <jbeulich@suse.com>, 
    Andrew Cooper <andrew.cooper3@citrix.com>, 
    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>, 
    Alistair Francis <alistair.francis@wdc.com>, 
    Connor Davis <connojdavis@gmail.com>, 
    Oleksii Kurochko <oleksii.kurochko@gmail.com>
Subject: Re: [PATCH 0/2] time: fix time accounting for x86 HVM guests
In-Reply-To: <20260414103327.7420-1-roger.pau@citrix.com>
Message-ID: <alpine.DEB.2.22.394.2604141308020.1307609@ubuntu-linux-20-04-desktop>
References: <20260414103327.7420-1-roger.pau@citrix.com>
User-Agent: Alpine 2.22 (DEB 394 2020-01-19)
MIME-Version: 1.0
Content-Type: text/plain; charset=US-ASCII
X-purgate-ID: tlsNG-720697/1776197314-AE524CD1-A6F09630/0/0
X-purgate-type: clean
X-purgate-size: 625

On Tue, 14 Apr 2026, Roger Pau Monne wrote:
> Hello,
> 
> When not emulating the TSC the guest time value calculated by using the
> vCPU time info page in HVM mode would drift between time synchronization
> intervals.  First patch fixes the drift, second patch makes the
> calculation of cpu_khz round up the value for better accuracy.
> 
> Thanks, Roger.
> 
> Roger Pau Monne (2):
>   x86/time: use native TSC scaling factors when TSC is not scaled
>   xen/cpu: round up cpu_khz calculations

Thanks Roger, this fixed an outstanding bug I was seeing!

Tested-by: Stefano Stabellini <sstabellini@kernel.org>


From xen-devel-bounces@lists.xenproject.org Tue Apr 14 20:24:36 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 14 Apr 2026 20:24:36 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1282080.1564758 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wCkJF-0005Dc-Qt; Tue, 14 Apr 2026 20:24:33 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1282080.1564758; Tue, 14 Apr 2026 20:24: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 1wCkJF-0005DV-Mw; Tue, 14 Apr 2026 20:24:33 +0000
Received: by outflank-mailman (input) for mailman id 1282080;
 Tue, 14 Apr 2026 20:24:33 +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 1wCkJF-0005CU-8n
 for xen-devel@lists.xenproject.org; Tue, 14 Apr 2026 20:24:33 +0000
Received: from xenbits.xenproject.org ([104.239.192.120])
 by mail.xenproject.org with esmtp (Exim 4.96)
 (envelope-from <julien@xen.org>) id 1wCkJE-001nT3-26;
 Tue, 14 Apr 2026 20:24:32 +0000
Received: from [2a02:8012:3a1:0:6452:fdce:8dbd:9a39]
 by xenbits.xenproject.org with esmtpsa (TLS1.3) tls
 TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (Exim 4.96)
 (envelope-from <julien@xen.org>) id 1wCkJE-0036wi-1I;
 Tue, 14 Apr 2026 20:24: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=xen.org;
	s=20200302mail; h=Content-Transfer-Encoding:Content-Type:In-Reply-To:From:
	References:Cc:To:Subject:MIME-Version:Date:Message-ID;
	bh=hvfc6WY0pbSdLS2SJLE1D/glK/FsO9Y9J36uU8Z+6EY=; b=5VltWaQYTRHArNRQXpNj+qjEJJ
	HbSV/AXBfcZhwczUsUmhAv7f6ST+rdx1obUA1X9sc86DgII0rLppdPQRiAsUeQ5z57oKg1ABmJrmi
	p79pLpggf2RT4ei+vc/G88LWPiU4OdOBwgA1lUFJKB9sGIy+tIRtFs4ZL4JOnag1Dg5A=;
Message-ID: <8cb4ca97-e605-4416-b532-a8df4816a0ee@xen.org>
Date: Tue, 14 Apr 2026 15:15:38 +0900
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH v3 04/23] xen/arm: vIOMMU: add generic vIOMMU framework
Content-Language: en-GB
To: Milan Djokic <milan_djokic@epam.com>,
 "xen-devel@lists.xenproject.org" <xen-devel@lists.xenproject.org>
Cc: Rahul Singh <rahul.singh@arm.com>,
 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>,
 Anthony PERARD <anthony.perard@vates.tech>, Jan Beulich <jbeulich@suse.com>,
 =?UTF-8?Q?Roger_Pau_Monn=C3=A9?= <roger.pau@citrix.com>
References: <cover.1774918270.git.milan_djokic@epam.com>
 <c12f84b9306a2b74a555c710f21f5362120205ed.1774918270.git.milan_djokic@epam.com>
From: Julien Grall <julien@xen.org>
In-Reply-To: <c12f84b9306a2b74a555c710f21f5362120205ed.1774918270.git.milan_djokic@epam.com>
Content-Type: text/plain; charset=UTF-8; format=flowed
Content-Transfer-Encoding: 7bit

Hi Milan,

On 31/03/2026 10:52, Milan Djokic wrote:
> 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        |  2 +
>   xen/arch/arm/domain.c                | 33 +++++++++++++
>   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 | 48 +++++++++++++++++++
>   xen/include/public/arch-arm.h        |  5 ++
>   xen/include/public/domctl.h          |  4 +-
>   9 files changed, 168 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 4181c10538..067835e5d0 100644
> --- a/xen/arch/arm/dom0less-build.c
> +++ b/xen/arch/arm/dom0less-build.c
> @@ -23,6 +23,7 @@
>   #include <asm/arm64/sve.h>
>   #include <asm/domain_build.h>
>   #include <asm/firmware/sci.h>
> +#include <asm/viommu.h>
>   #include <asm/grant_table.h>
>   #include <asm/setup.h>
>   
> @@ -317,6 +318,7 @@ int __init arch_parse_dom0less_node(struct dt_device_node *node,
>       uint32_t val;
>   
>       d_cfg->arch.gic_version = XEN_DOMCTL_CONFIG_GIC_NATIVE;
> +    d_cfg->arch.viommu_type = viommu_get_type();
>       d_cfg->flags |= XEN_DOMCTL_CDF_hvm | XEN_DOMCTL_CDF_hap;
>   
>       if ( domu_dt_sci_parse(node, d_cfg) )
> diff --git a/xen/arch/arm/domain.c b/xen/arch/arm/domain.c
> index 94b9858ad2..241f87386b 100644
> --- a/xen/arch/arm/domain.c
> +++ b/xen/arch/arm/domain.c
> @@ -28,6 +28,7 @@
>   #include <asm/tee/tee.h>
>   #include <asm/vfp.h>
>   #include <asm/vgic.h>
> +#include <asm/viommu.h>
>   #include <asm/vtimer.h>
>   
>   #include "vpci.h"
> @@ -550,6 +551,14 @@ int arch_sanitise_domain_config(struct xen_domctl_createdomain *config)
>           return -EINVAL;
>       }
>   
> +    /* Check config structure padding */
> +    if ( config->arch.pad )
> +    {
> +        dprintk(XENLOG_INFO,
> +            "Invalid input config, padding must be zero\n");
> +        return -EINVAL;
> +    }
> +
>       /* Check feature flags */
>       if ( sve_vl_bits > 0 )
>       {
> @@ -626,6 +635,21 @@ int arch_sanitise_domain_config(struct xen_domctl_createdomain *config)
>           return -EINVAL;
>       }
>   
> +    if ( !(config->flags & XEN_DOMCTL_CDF_iommu) &&
> +         config->arch.viommu_type != XEN_DOMCTL_CONFIG_VIOMMU_NONE )
> +    {
> +        dprintk(XENLOG_INFO,
> +                "vIOMMU requested while iommu not enabled for domain\n");
> +        return -EINVAL;
> +    }
> +
> +    if ( config->arch.viommu_type != XEN_DOMCTL_CONFIG_VIOMMU_NONE )
> +    {
> +        dprintk(XENLOG_INFO,
> +                "vIOMMU type requested not supported by the platform or Xen\n");
> +        return -EINVAL;
> +    }
> +
>       return sci_domain_sanitise_config(config);
>   }
>   
> @@ -721,6 +745,9 @@ int arch_domain_create(struct domain *d,
>       if ( (rc = sci_domain_init(d, config)) != 0 )
>           goto fail;
>   
> +    if ( (rc = domain_viommu_init(d, config->arch.viommu_type)) != 0 )
> +        goto fail;
> +
>       return 0;
>   
>   fail:
> @@ -965,6 +992,7 @@ enum {
>       PROG_pci = 1,
>       PROG_sci,
>       PROG_tee,
> +    PROG_viommu,

I am not entirely sure about the position. Is the intention to 
relinquish the viommu state *after* the devices are detached? If so, it 
would be better to move this call just after 'PROG_pci' and add a 
comment indicating the dependency.

>       PROG_xen,
>       PROG_page,
>       PROG_mapping,
> @@ -1021,6 +1049,11 @@ int domain_relinquish_resources(struct domain *d)
>           if (ret )
>               return ret;
>   
> +    PROGRESS(viommu):
> +        ret = viommu_relinquish_resources(d);
> +        if (ret )
> +            return ret;
> +
>       PROGRESS(xen):
>           ret = relinquish_memory(d, &d->xenpage_list);
>           if ( ret )
> diff --git a/xen/arch/arm/domain_build.c b/xen/arch/arm/domain_build.c
> index e8795745dd..a51563ee3d 100644
> --- a/xen/arch/arm/domain_build.c
> +++ b/xen/arch/arm/domain_build.c
> @@ -35,6 +35,7 @@
>   #include <asm/arm64/sve.h>
>   #include <asm/cpufeature.h>
>   #include <asm/domain_build.h>
> +#include <asm/viommu.h>
>   #include <xen/event.h>
>   
>   #include <xen/irq.h>
> @@ -1946,6 +1947,7 @@ void __init create_dom0(void)
>       dom0_cfg.arch.nr_spis = vgic_def_nr_spis();
>       dom0_cfg.arch.tee_type = tee_get_type();
>       dom0_cfg.max_vcpus = dom0_max_vcpus();
> +    dom0_cfg.arch.viommu_type = viommu_get_type();
>   
>       if ( iommu_enabled )
>           dom0_cfg.flags |= XEN_DOMCTL_CDF_iommu;
> diff --git a/xen/arch/arm/include/asm/viommu.h b/xen/arch/arm/include/asm/viommu.h
> new file mode 100644
> index 0000000000..4598f543b8
> --- /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__
> +
> +#ifdef CONFIG_ARM_VIRTUAL_IOMMU
> +
> +#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
> +     */
> +    uint16_t viommu_type;

Below, you define viommu_type as 'uint8_t'. So shouldn't this also be 
'uint8_t'?

> +};
> +
> +int domain_viommu_init(struct domain *d, uint16_t viommu_type);
> +int viommu_relinquish_resources(struct domain *d);
> +uint16_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, uint16_t viommu_type)
> +{
> +    if ( likely(viommu_type == 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/Kconfig
> index b413c33a4c..3c174bc87b 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.
>   
> +config ARM_VIRTUAL_IOMMU
> +	bool "Virtual IOMMU Support (UNSUPPORTED)" if UNSUPPORTED
> +	help
> +	 Support virtual IOMMU infrastructure to implement vIOMMU.
> +
>   endif
>   
>   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 += iommu.o iommu_helpers.o iommu_fwspec.o
>   obj-$(CONFIG_ARM_SMMU) += smmu.o
>   obj-$(CONFIG_IPMMU_VMSA) += ipmmu-vmsa.o
>   obj-$(CONFIG_ARM_SMMU_V3) += smmu-v3.o
> +obj-$(CONFIG_ARM_VIRTUAL_IOMMU) += viommu.o
> diff --git a/xen/drivers/passthrough/arm/viommu.c b/xen/drivers/passthrough/arm/viommu.c
> new file mode 100644
> index 0000000000..7ab6061e34
> --- /dev/null
> +++ b/xen/drivers/passthrough/arm/viommu.c
> @@ -0,0 +1,48 @@
> +/* 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>
> +
> +const struct viommu_desc __read_mostly *cur_viommu;

You don't seem to define 'cur_viommmu' in the header. So shouldn't this 
be 'static'? Also, AFAICT, 'cur_viommu' would be set only once at boot. 
So rather than using __read_mostly, you probably want to use 
'__ro_after_init'.

> +
> +int domain_viommu_init(struct domain *d, uint16_t viommu_type)
> +{
> +    if ( viommu_type == XEN_DOMCTL_CONFIG_VIOMMU_NONE )
> +        return 0;
> +
> +    if ( !cur_viommu )
> +        return -ENODEV;
> +
> +    if ( cur_viommu->viommu_type != 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);
> +}
> +
> +uint16_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 cd563cf706..d4953d40fd 100644
> --- a/xen/include/public/arch-arm.h
> +++ b/xen/include/public/arch-arm.h
> @@ -330,6 +330,8 @@ DEFINE_XEN_GUEST_HANDLE(vcpu_guest_context_t);
>   #define XEN_DOMCTL_CONFIG_ARM_SCI_NONE      0
>   #define XEN_DOMCTL_CONFIG_ARM_SCI_SCMI_SMC  1
>   
> +#define XEN_DOMCTL_CONFIG_VIOMMU_NONE   0
> +
>   struct xen_arch_domainconfig {
>       /* IN/OUT */
>       uint8_t gic_version;
> @@ -355,6 +357,9 @@ struct xen_arch_domainconfig {
>       uint32_t clock_frequency;
>       /* IN */
>       uint8_t arm_sci_type;
> +    /* IN */
> +    uint8_t viommu_type;
> +    uint16_t pad;
>   };
>   #endif /* __XEN__ || __XEN_TOOLS__ */
>   
> diff --git a/xen/include/public/domctl.h b/xen/include/public/domctl.h
> index 8f6708c0a7..23124547f3 100644
> --- a/xen/include/public/domctl.h
> +++ b/xen/include/public/domctl.h
> @@ -30,9 +30,9 @@
>    * fields) don't require a change of the version.
>    * Stable ops are NOT covered by XEN_DOMCTL_INTERFACE_VERSION!
>    *
> - * Last version bump: Xen 4.19
> + * Last version bump: Xen 4.22
>    */
> -#define XEN_DOMCTL_INTERFACE_VERSION 0x00000017
> +#define XEN_DOMCTL_INTERFACE_VERSION 0x00000018
>   
>   /*
>    * NB. xen_domctl.domain is an IN/OUT parameter for this operation.

Cheers,

-- 
Julien Grall



From xen-devel-bounces@lists.xenproject.org Tue Apr 14 20:24:36 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 14 Apr 2026 20:24:36 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1282079.1564748 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wCkJD-0004zD-Jo; Tue, 14 Apr 2026 20:24:31 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1282079.1564748; Tue, 14 Apr 2026 20:24: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 1wCkJD-0004z6-Gs; Tue, 14 Apr 2026 20:24:31 +0000
Received: by outflank-mailman (input) for mailman id 1282079;
 Tue, 14 Apr 2026 20:24:29 +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 1wCkJB-0004z0-SP
 for xen-devel@lists.xenproject.org; Tue, 14 Apr 2026 20:24:29 +0000
Received: from xenbits.xenproject.org ([104.239.192.120])
 by mail.xenproject.org with esmtp (Exim 4.96)
 (envelope-from <julien@xen.org>) id 1wCkJB-001nSu-0Z;
 Tue, 14 Apr 2026 20:24:29 +0000
Received: from [2a02:8012:3a1:0:6452:fdce:8dbd:9a39]
 by xenbits.xenproject.org with esmtpsa (TLS1.3) tls
 TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (Exim 4.96)
 (envelope-from <julien@xen.org>) id 1wCkJA-0036wi-36;
 Tue, 14 Apr 2026 20:24: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=xen.org;
	s=20200302mail; h=Content-Transfer-Encoding:Content-Type:In-Reply-To:From:
	References:Cc:To:Subject:MIME-Version:Date:Message-ID;
	bh=JVdik3zfubZEJqj2xS+6s9d1Kw5jWMMJH4KgQvL21Oc=; b=YAcauW58vGNSbNj9xQqUAK1Z3q
	LBQn16esHGukWatzeK1GO5mLpcW6f6PO7lNyqhkNKoK2OB6xO0/EF10kaCknxL6x/X80dGVNS3koe
	1BFMeHqpKygjAu4eJ8nfF8gQjNFvzgjVo9BGTIqt0XNsou4PGPCzgR+ue0mrwxiLulDo=;
Message-ID: <f92207ec-0f7a-464e-93a9-e0e9ee3a2cfa@xen.org>
Date: Tue, 14 Apr 2026 15:06:42 +0900
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH v3 03/23] xen/arm: smmuv3: Alloc io_domain for each device
Content-Language: en-GB
To: Milan Djokic <milan_djokic@epam.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>,
 Michal Orzel <michal.orzel@amd.com>,
 Volodymyr Babchuk <Volodymyr_Babchuk@epam.com>
References: <cover.1774918270.git.milan_djokic@epam.com>
 <78e4f2e2c68cdb75aa1c0dd7e8b456c03aa2fe6f.1774918270.git.milan_djokic@epam.com>
From: Julien Grall <julien@xen.org>
In-Reply-To: <78e4f2e2c68cdb75aa1c0dd7e8b456c03aa2fe6f.1774918270.git.milan_djokic@epam.com>
Content-Type: text/plain; charset=UTF-8; format=flowed
Content-Transfer-Encoding: 7bit

Hi Milan,

On 31/03/2026 10:52, Milan Djokic wrote:
> 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.
> 
> 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 | 13 +++++++++++--
>   1 file changed, 11 insertions(+), 2 deletions(-)
> 
> diff --git a/xen/drivers/passthrough/arm/smmu-v3.c b/xen/drivers/passthrough/arm/smmu-v3.c
> index f9c6837919..19e55b6c9b 100644
> --- a/xen/drivers/passthrough/arm/smmu-v3.c
> +++ b/xen/drivers/passthrough/arm/smmu-v3.c
> @@ -2809,11 +2809,13 @@ static struct arm_smmu_device *arm_smmu_get_by_dev(const struct device *dev)
>   static struct iommu_domain *arm_smmu_get_domain(struct domain *d,
>   				struct device *dev)
>   {
> +	unsigned long flags;

In Xen, we are trying to limit the scope of local variables. AFAICT, 
this is only used within the loop below. So this can be defined later. 
Same ...

>   	struct iommu_domain *io_domain;
>   	struct arm_smmu_domain *smmu_domain;
>   	struct iommu_fwspec *fwspec = dev_iommu_fwspec_get(dev);
>   	struct arm_smmu_xen_domain *xen_domain = dom_iommu(d)->arch.priv;
>   	struct arm_smmu_device *smmu = arm_smmu_get_by_dev(fwspec->iommu_dev);
> +	struct arm_smmu_master *master;

... here. Also, AFAICT, ``master`` is not meant ot be modified. So 
shouldn't this be 'const'?

Cheers,

-- 
Julien Grall



From xen-devel-bounces@lists.xenproject.org Tue Apr 14 20:24:38 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 14 Apr 2026 20:24:38 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1282082.1564766 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wCkJK-0005T7-5J; Tue, 14 Apr 2026 20:24:38 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1282082.1564766; Tue, 14 Apr 2026 20:24: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 1wCkJK-0005Sy-2E; Tue, 14 Apr 2026 20:24:38 +0000
Received: by outflank-mailman (input) for mailman id 1282082;
 Tue, 14 Apr 2026 20:24:37 +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 1wCkJJ-0005SC-9G
 for xen-devel@lists.xenproject.org; Tue, 14 Apr 2026 20:24:37 +0000
Received: from xenbits.xenproject.org ([104.239.192.120])
 by mail.xenproject.org with esmtp (Exim 4.96)
 (envelope-from <julien@xen.org>) id 1wCkJI-001nTE-26;
 Tue, 14 Apr 2026 20:24:36 +0000
Received: from [2a02:8012:3a1:0:6452:fdce:8dbd:9a39]
 by xenbits.xenproject.org with esmtpsa (TLS1.3) tls
 TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (Exim 4.96)
 (envelope-from <julien@xen.org>) id 1wCkJI-0036wi-1c;
 Tue, 14 Apr 2026 20:24: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=xen.org;
	s=20200302mail; h=Content-Transfer-Encoding:Content-Type:In-Reply-To:From:
	References:Cc:To:Subject:MIME-Version:Date:Message-ID;
	bh=AHmYUvmIYyfh5dRdTCNsTASPX/XO0DclUvr2J8d1xqM=; b=lThJrqOcegsEXtTr6iPEIVDwSl
	AIg2Z01fKfPv9R6h+0nvE+Cj/4hW0RxrG3E1JeP947CLaXQlWpdNAX5hGFNY4VxRAvG6XhxGF4w+f
	W2zSDQI3bZq6zlaNb6f87neV/GjdgB2IGr/J7yRCdAIOVrQ93yVnwsuh/zqL5b1eHn+I=;
Message-ID: <cfe13725-971c-4a25-9d47-f3f80b4cf318@xen.org>
Date: Tue, 14 Apr 2026 15:19:07 +0900
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH v3 04/23] xen/arm: vIOMMU: add generic vIOMMU framework
Content-Language: en-GB
To: Luca Fancellu <Luca.Fancellu@arm.com>,
 Milan Djokic <milan_djokic@epam.com>,
 Andrew Cooper <andrew.cooper3@citrix.com>
Cc: "xen-devel@lists.xenproject.org" <xen-devel@lists.xenproject.org>,
 Rahul Singh <Rahul.Singh@arm.com>,
 Stefano Stabellini <sstabellini@kernel.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.pau@citrix.com>
References: <cover.1774918270.git.milan_djokic@epam.com>
 <c12f84b9306a2b74a555c710f21f5362120205ed.1774918270.git.milan_djokic@epam.com>
 <93490E9C-4D22-4EAB-965E-B20DA8189C60@arm.com>
From: Julien Grall <julien@xen.org>
In-Reply-To: <93490E9C-4D22-4EAB-965E-B20DA8189C60@arm.com>
Content-Type: text/plain; charset=UTF-8; format=flowed
Content-Transfer-Encoding: 8bit



On 10/04/2026 19:41, Luca Fancellu wrote:
> Hi Milan,
> 
>> diff --git a/xen/arch/arm/domain.c b/xen/arch/arm/domain.c
>> index 94b9858ad2..241f87386b 100644
>> --- a/xen/arch/arm/domain.c
>> +++ b/xen/arch/arm/domain.c
>> @@ -28,6 +28,7 @@
>> #include <asm/tee/tee.h>
>> #include <asm/vfp.h>
>> #include <asm/vgic.h>
>> +#include <asm/viommu.h>
>> #include <asm/vtimer.h>
>>
>> #include "vpci.h"
>> @@ -550,6 +551,14 @@ int arch_sanitise_domain_config(struct xen_domctl_createdomain *config)
>>          return -EINVAL;
>>      }
>>
>> +    /* Check config structure padding */
>> +    if ( config->arch.pad )
>> +    {
>> +        dprintk(XENLOG_INFO,
>> +            "Invalid input config, padding must be zero\n");
>> +        return -EINVAL;
>> +    }
>> +
> 
> This feels ok but unrelated to the patch

In general, we want to have padding explictly define and zeroed. I 
wouldn't mind if this is kept in this patch but this would need to be 
mentioned in the commit message.

> , but also the text maybe should be something like “Invalid domain configuration during domain creation\n”.
> 
>>      /* Check feature flags */
>>      if ( sve_vl_bits > 0 )
>>      {
>> @@ -626,6 +635,21 @@ int arch_sanitise_domain_config(struct xen_domctl_createdomain *config)
>>          return -EINVAL;
>>      }
>>
>> +    if ( !(config->flags & XEN_DOMCTL_CDF_iommu) &&
>> +         config->arch.viommu_type != XEN_DOMCTL_CONFIG_VIOMMU_NONE )
>> +    {
>> +        dprintk(XENLOG_INFO,
>> +                "vIOMMU requested while iommu not enabled for domain\n");
>> +        return -EINVAL;
>> +    }
>> +
>> +    if ( config->arch.viommu_type != XEN_DOMCTL_CONFIG_VIOMMU_NONE )
>> +    {
>> +        dprintk(XENLOG_INFO,
>> +                "vIOMMU type requested not supported by the platform or Xen\n");
>> +        return -EINVAL;
>> +    }
>> +
>>      return sci_domain_sanitise_config(config);
>> }
>>
>> @@ -721,6 +745,9 @@ int arch_domain_create(struct domain *d,
>>      if ( (rc = sci_domain_init(d, config)) != 0 )
>>          goto fail;
>>
>> +    if ( (rc = domain_viommu_init(d, config->arch.viommu_type)) != 0 )
>> +        goto fail;
>> +
>>      return 0;
>>
>> fail:
>> @@ -965,6 +992,7 @@ enum {
>>      PROG_pci = 1,
>>      PROG_sci,
>>      PROG_tee,
>> +    PROG_viommu,
>>      PROG_xen,
>>      PROG_page,
>>      PROG_mapping,
>> @@ -1021,6 +1049,11 @@ int domain_relinquish_resources(struct domain *d)
>>          if (ret )
>>              return ret;
>>
>> +    PROGRESS(viommu):
>> +        ret = viommu_relinquish_resources(d);
>> +        if (ret )
>> +            return ret;
>> +
>>      PROGRESS(xen):
>>          ret = relinquish_memory(d, &d->xenpage_list);
>>          if ( ret )
>> diff --git a/xen/arch/arm/domain_build.c b/xen/arch/arm/domain_build.c
>> index e8795745dd..a51563ee3d 100644
>> --- a/xen/arch/arm/domain_build.c
>> +++ b/xen/arch/arm/domain_build.c
>> @@ -35,6 +35,7 @@
>> #include <asm/arm64/sve.h>
>> #include <asm/cpufeature.h>
>> #include <asm/domain_build.h>
>> +#include <asm/viommu.h>
> 
> NIT: In my local branch I’ve rebased this on top of new staging
> 
>>
>> diff --git a/xen/include/public/arch-arm.h b/xen/include/public/arch-arm.h
>> index cd563cf706..d4953d40fd 100644
>> --- a/xen/include/public/arch-arm.h
>> +++ b/xen/include/public/arch-arm.h
>> @@ -330,6 +330,8 @@ DEFINE_XEN_GUEST_HANDLE(vcpu_guest_context_t);
>> #define XEN_DOMCTL_CONFIG_ARM_SCI_NONE      0
>> #define XEN_DOMCTL_CONFIG_ARM_SCI_SCMI_SMC  1
>>
>> +#define XEN_DOMCTL_CONFIG_VIOMMU_NONE   0
>> +
>> struct xen_arch_domainconfig {
>>      /* IN/OUT */
>>      uint8_t gic_version;
>> @@ -355,6 +357,9 @@ struct xen_arch_domainconfig {
>>      uint32_t clock_frequency;
>>      /* IN */
>>      uint8_t arm_sci_type;
>> +    /* IN */
>> +    uint8_t viommu_type;
>> +    uint16_t pad;
> 
> Having the padding explicit feels ok to me, but I would rely on maintainer
> choice.

See above. To expand what I wrote, if we don't define the padding 
explicitly and then check against zero, then we can't re-use them 
without breaking the ABI. So...

> 
>> };
>> #endif /* __XEN__ || __XEN_TOOLS__ */
>>
>> diff --git a/xen/include/public/domctl.h b/xen/include/public/domctl.h
>> index 8f6708c0a7..23124547f3 100644
>> --- a/xen/include/public/domctl.h
>> +++ b/xen/include/public/domctl.h
>> @@ -30,9 +30,9 @@
>>   * fields) don't require a change of the version.
>>   * Stable ops are NOT covered by XEN_DOMCTL_INTERFACE_VERSION!
>>   *
>> - * Last version bump: Xen 4.19
>> + * Last version bump: Xen 4.22
>>   */
>> -#define XEN_DOMCTL_INTERFACE_VERSION 0x00000017
>> +#define XEN_DOMCTL_INTERFACE_VERSION 0x00000018
> 
> I don’t think the changes in this patch are breaking the ABI, so this should not be bumped;
> said so, I would rely on @Andrew or another maintainer for this

... this is needed because older toolstack may not zero the field.

Cheers,

-- 
Julien Grall



From xen-devel-bounces@lists.xenproject.org Tue Apr 14 20:24:46 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 14 Apr 2026 20:24:46 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1282083.1564776 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wCkJS-0005od-E7; Tue, 14 Apr 2026 20:24:46 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1282083.1564776; Tue, 14 Apr 2026 20: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 1wCkJS-0005oQ-9W; Tue, 14 Apr 2026 20:24:46 +0000
Received: by outflank-mailman (input) for mailman id 1282083;
 Tue, 14 Apr 2026 20:24:44 +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 1wCkJQ-0005mB-Nd
 for xen-devel@lists.xenproject.org; Tue, 14 Apr 2026 20:24:44 +0000
Received: from xenbits.xenproject.org ([104.239.192.120])
 by mail.xenproject.org with esmtp (Exim 4.96)
 (envelope-from <julien@xen.org>) id 1wCkJQ-001nTb-1F;
 Tue, 14 Apr 2026 20:24:44 +0000
Received: from [2a02:8012:3a1:0:6452:fdce:8dbd:9a39]
 by xenbits.xenproject.org with esmtpsa (TLS1.3) tls
 TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (Exim 4.96)
 (envelope-from <julien@xen.org>) id 1wCkJQ-0036wi-0F;
 Tue, 14 Apr 2026 20:24: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=xen.org;
	s=20200302mail; h=Content-Transfer-Encoding:Content-Type:In-Reply-To:From:
	References:Cc:To:Subject:MIME-Version:Date:Message-ID;
	bh=y9Jy5pZT/zSrlNnVBifWKpQNbFOCzie1g4ZvyNRLRHY=; b=qE6DT/azrqQnsOwGlseeR9+lKy
	jB8R93UfI8s5smLGSC5n65lXfAKmdZ8uOiZMfcKqYbUkrnp2QN7JfVZ8ijL6dBxkPpDL2jz8gJdCQ
	0CSrpri/qlWvjdxHhQj/u+1XemFdJ2TD416WpBvzeluY1SQX4U77PUq6fzrEYLmKwuBY=;
Message-ID: <1dcec397-a265-4972-8f2c-fd10c6e0b6ad@xen.org>
Date: Tue, 14 Apr 2026 16:09:33 +0900
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH v3 05/23] xen/arm: vsmmuv3: Add dummy support for virtual
 SMMUv3 for guests
Content-Language: en-GB
To: Milan Djokic <milan_djokic@epam.com>,
 "xen-devel@lists.xenproject.org" <xen-devel@lists.xenproject.org>
Cc: Rahul Singh <rahul.singh@arm.com>,
 Stefano Stabellini <sstabellini@kernel.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?Q?Roger_Pau_Monn=C3=A9?=
 <roger.pau@citrix.com>
References: <cover.1774918270.git.milan_djokic@epam.com>
 <97aa20fdcec324bb58c6869ddcba5fcf29bf75b3.1774918270.git.milan_djokic@epam.com>
From: Julien Grall <julien@xen.org>
In-Reply-To: <97aa20fdcec324bb58c6869ddcba5fcf29bf75b3.1774918270.git.milan_djokic@epam.com>
Content-Type: text/plain; charset=UTF-8; format=flowed
Content-Transfer-Encoding: 8bit

Hi Milan,

On 31/03/2026 10:52, Milan Djokic wrote:
> From: Rahul Singh <rahul.singh@arm.com>
> 
> domain_viommu_init() will be called during domain creation and will add
> the dummy trap handler for virtual IOMMUs for guests.
> 
> A host IOMMU list will be created when host IOMMU devices are probed
> and this list will be used to create the IOMMU device tree node for
> dom0. For dom0, 1-1 mapping will be established between vIOMMU in dom0
> and physical IOMMU.
> 
> For domUs, the 1-N mapping will be established between domU and physical
> IOMMUs. A new area has been reserved in the arm guest physical map at
> which the emulated vIOMMU node is created in the device tree.
> 
> Also set the vIOMMU type to vSMMUv3 to enable vIOMMU framework to call
> vSMMUv3 domain creation/destroy functions.
> 
> Signed-off-by: Rahul Singh <rahul.singh@arm.com>
> Signed-off-by: Milan Djokic <milan_djokic@epam.com>
> ---
>   xen/arch/arm/domain.c                  |   3 +-
>   xen/arch/arm/include/asm/domain.h      |   4 +
>   xen/arch/arm/include/asm/viommu.h      |  20 ++++
>   xen/drivers/passthrough/Kconfig        |   8 ++
>   xen/drivers/passthrough/arm/Makefile   |   1 +
>   xen/drivers/passthrough/arm/smmu-v3.c  |   7 ++
>   xen/drivers/passthrough/arm/viommu.c   |  30 ++++++
>   xen/drivers/passthrough/arm/vsmmu-v3.c | 124 +++++++++++++++++++++++++
>   xen/drivers/passthrough/arm/vsmmu-v3.h |  20 ++++
>   xen/include/public/arch-arm.h          |   7 +-
>   10 files changed, 222 insertions(+), 2 deletions(-)
>   create mode 100644 xen/drivers/passthrough/arm/vsmmu-v3.c
>   create mode 100644 xen/drivers/passthrough/arm/vsmmu-v3.h
> 
> diff --git a/xen/arch/arm/domain.c b/xen/arch/arm/domain.c
> index 241f87386b..b982d79b3b 100644
> --- a/xen/arch/arm/domain.c
> +++ b/xen/arch/arm/domain.c
> @@ -643,7 +643,8 @@ int arch_sanitise_domain_config(struct xen_domctl_createdomain *config)
>           return -EINVAL;
>       }
>   
> -    if ( config->arch.viommu_type != XEN_DOMCTL_CONFIG_VIOMMU_NONE )
> +    if ( config->arch.viommu_type != XEN_DOMCTL_CONFIG_VIOMMU_NONE &&
> +         config->arch.viommu_type != viommu_get_type() )
>       {
>           dprintk(XENLOG_INFO,
>                   "vIOMMU type requested not supported by the platform or Xen\n");
> diff --git a/xen/arch/arm/include/asm/domain.h b/xen/arch/arm/include/asm/domain.h
> index 758ad807e4..61108d0068 100644
> --- a/xen/arch/arm/include/asm/domain.h
> +++ b/xen/arch/arm/include/asm/domain.h
> @@ -126,6 +126,10 @@ struct arch_domain
>       void *sci_data;
>   #endif
>   
> +#ifdef CONFIG_ARM_VIRTUAL_IOMMU
> +    struct list_head viommu_list;     /* List of virtual IOMMUs */
> +#endif
> +
>   }  __cacheline_aligned;
>   
>   struct arch_vcpu
> diff --git a/xen/arch/arm/include/asm/viommu.h b/xen/arch/arm/include/asm/viommu.h
> index 4598f543b8..2a6742de73 100644
> --- a/xen/arch/arm/include/asm/viommu.h
> +++ b/xen/arch/arm/include/asm/viommu.h
> @@ -5,9 +5,21 @@
>   #ifdef CONFIG_ARM_VIRTUAL_IOMMU
>   
>   #include <xen/lib.h>
> +#include <xen/list.h>
>   #include <xen/types.h>
>   #include <public/xen.h>
>   
> +extern struct list_head host_iommu_list;
> +
> +/* data structure for each hardware IOMMU */
> +struct host_iommu {
> +    struct list_head entry;
> +    const struct dt_device_node *dt_node;
> +    paddr_t addr;
> +    paddr_t size;
> +    uint32_t irq;

You don't seem to use ``irq`` in this patch. What is this meant to be 
used for?

> +};
> +
>   struct viommu_ops {
>       /*
>        * Called during domain construction if toolstack requests to enable
> @@ -35,6 +47,8 @@ struct viommu_desc {
>   int domain_viommu_init(struct domain *d, uint16_t viommu_type);
>   int viommu_relinquish_resources(struct domain *d);
>   uint16_t viommu_get_type(void);
> +void add_to_host_iommu_list(paddr_t addr, paddr_t size,
> +                            const struct dt_device_node *node);
>   
>   #else
>   
> @@ -56,6 +70,12 @@ static inline int viommu_relinquish_resources(struct domain *d)
>       return 0;
>   }
>   
> +static inline void add_to_host_iommu_list(paddr_t addr, paddr_t size,
> +                                          const struct dt_device_node *node)
> +{
> +    return;
> +}
> +
>   #endif /* CONFIG_ARM_VIRTUAL_IOMMU */
>   
>   #endif /* __ARCH_ARM_VIOMMU_H__ */
> diff --git a/xen/drivers/passthrough/Kconfig b/xen/drivers/passthrough/Kconfig
> index 3c174bc87b..9c48e7415e 100644
> --- a/xen/drivers/passthrough/Kconfig
> +++ b/xen/drivers/passthrough/Kconfig
> @@ -40,6 +40,14 @@ config ARM_VIRTUAL_IOMMU
>   	help
>   	 Support virtual IOMMU infrastructure to implement vIOMMU.
>   
> +config VIRTUAL_ARM_SMMU_V3
> +	bool "ARM Ltd. Virtual SMMUv3 Support (UNSUPPORTED)"
> +	depends on ARM_SMMU_V3 && ARM_VIRTUAL_IOMMU
> +	help
> +	 Support for implementations of the virtual ARM System MMU architecture
> +	 version 3. Virtual SMMUv3 is unsupported feature and should not be used
> +	 in production.
> +
>   endif
>   
>   config AMD_IOMMU
> diff --git a/xen/drivers/passthrough/arm/Makefile b/xen/drivers/passthrough/arm/Makefile
> index c3783188e3..c8f0a5f802 100644
> --- a/xen/drivers/passthrough/arm/Makefile
> +++ b/xen/drivers/passthrough/arm/Makefile
> @@ -3,3 +3,4 @@ obj-$(CONFIG_ARM_SMMU) += smmu.o
>   obj-$(CONFIG_IPMMU_VMSA) += ipmmu-vmsa.o
>   obj-$(CONFIG_ARM_SMMU_V3) += smmu-v3.o
>   obj-$(CONFIG_ARM_VIRTUAL_IOMMU) += viommu.o
> +obj-$(CONFIG_VIRTUAL_ARM_SMMU_V3) += vsmmu-v3.o
> diff --git a/xen/drivers/passthrough/arm/smmu-v3.c b/xen/drivers/passthrough/arm/smmu-v3.c
> index 19e55b6c9b..87612df21d 100644
> --- a/xen/drivers/passthrough/arm/smmu-v3.c
> +++ b/xen/drivers/passthrough/arm/smmu-v3.c
> @@ -93,6 +93,7 @@
>   #include <asm/platform.h>
>   
>   #include "smmu-v3.h"
> +#include "vsmmu-v3.h"
>   
>   #define ARM_SMMU_VTCR_SH_IS		3
>   #define ARM_SMMU_VTCR_RGN_WBWA		1
> @@ -2727,6 +2728,9 @@ static int __init arm_smmu_device_probe(struct platform_device *pdev)
>   	list_add(&smmu->devices, &arm_smmu_devices);
>   	spin_unlock(&arm_smmu_devices_lock);
>   
> +    /* Add to host IOMMU list to initialize vIOMMU for dom0 */

The indentation looks odd. Is this correctly aligned?

> +	add_to_host_iommu_list(ioaddr, iosize, dev_to_dt(pdev));
> +
>   	return 0;
>   
>   
> @@ -3058,6 +3062,9 @@ static __init int arm_smmu_dt_init(struct dt_device_node *dev,
>   
>   	platform_features &= smmu->features;
>   
> +	/* Set vIOMMU type to SMMUv3 */
> +	vsmmuv3_set_type();
> +
>   	return 0;
>   }
>   
> diff --git a/xen/drivers/passthrough/arm/viommu.c b/xen/drivers/passthrough/arm/viommu.c
> index 7ab6061e34..53ae46349a 100644
> --- a/xen/drivers/passthrough/arm/viommu.c
> +++ b/xen/drivers/passthrough/arm/viommu.c
> @@ -2,12 +2,42 @@
>   
>   #include <xen/errno.h>
>   #include <xen/init.h>
> +#include <xen/irq.h>
>   #include <xen/types.h>
>   
>   #include <asm/viommu.h>
>   
> +/* List of all host IOMMUs */
> +LIST_HEAD(host_iommu_list);

I don't quite follow why this is part of the common code. That said, why 
do we need to register the host IOMMU? Wouldn't it be simpler to go 
through the list of pIOMMU in the vSMMU v3 implementation?

> +
>   const struct viommu_desc __read_mostly *cur_viommu;
>   
> +/* Common function for adding to host_iommu_list */
> +void add_to_host_iommu_list(paddr_t addr, paddr_t size,
> +                            const struct dt_device_node *node)

Is this supposed to only be called during __init? If so, this will help 
to justify the ...

> +{
> +    struct host_iommu *iommu_data;
> +
> +    iommu_data = xzalloc(struct host_iommu);
> +    if ( !iommu_data )
> +        panic("vIOMMU: Cannot allocate memory for host IOMMU data\n");

... panic(). If not, then this function needs to return an error.

> +
> +    iommu_data->addr = addr;
> +    iommu_data->size = size;
> +    iommu_data->dt_node = node;
> +    iommu_data->irq = platform_get_irq(node, 0);
> +    if ( iommu_data->irq < 0 )
> +    {
> +        gdprintk(XENLOG_ERR,
> +                 "vIOMMU: Cannot find a valid IOMMU irq\n");

Shouldn't you free the allocated memory? That said, why is it ok to 
ignore the vIOMMU in this case?

> +        return;
> +    }
> +
> +    printk("vIOMMU: Found IOMMU @0x%"PRIx64"\n", addr);
> +
> +    list_add_tail(&iommu_data->entry, &host_iommu_list);
> +}
> +
>   int domain_viommu_init(struct domain *d, uint16_t viommu_type)
>   {
>       if ( viommu_type == XEN_DOMCTL_CONFIG_VIOMMU_NONE )
> diff --git a/xen/drivers/passthrough/arm/vsmmu-v3.c b/xen/drivers/passthrough/arm/vsmmu-v3.c
> new file mode 100644
> index 0000000000..6b4009e5ef
> --- /dev/null
> +++ b/xen/drivers/passthrough/arm/vsmmu-v3.c
> @@ -0,0 +1,124 @@
> +/* SPDX-License-Identifier: (GPL-2.0-or-later OR BSD-2-Clause) */
> +
> +#include <xen/param.h>
> +#include <xen/sched.h>
> +#include <asm/mmio.h>
> +#include <asm/viommu.h>
> +
> +/* Struct to hold the vIOMMU ops and vIOMMU type */
> +extern const struct viommu_desc __read_mostly *cur_viommu;

Why is this defined in the C file? Shouldn't this be defined in 
``viomum.h``? That said, looking at the use, I think we want to 
introduce a helper to set the cur_viommu and not export ``cur_viommu``.

> +
> +struct virt_smmu {
> +    struct      domain *d;
> +    struct      list_head viommu_list;
> +};
> +
> +static int vsmmuv3_mmio_write(struct vcpu *v, mmio_info_t *info,
> +                              register_t r, void *priv)
> +{
> +    return IO_HANDLED;
> +}
> +
> +static int vsmmuv3_mmio_read(struct vcpu *v, mmio_info_t *info,
> +                             register_t *r, void *priv)
> +{
> +    return IO_HANDLED;
> +}

I undertand that both helpers are meant to be updated in a later patch. 
However, I think it makes quite difficult to know whether the code is 
complete by the end of the series. I would strongly recommend adding 
'BUG_ON("unimplemented");' so we can easily grep whether there is 
anything missing by the end.

> +
> +static const struct mmio_handler_ops vsmmuv3_mmio_handler = {
> +    .read  = vsmmuv3_mmio_read,
> +    .write = vsmmuv3_mmio_write,
> +};
> +
> +static int vsmmuv3_init_single(struct domain *d, paddr_t addr, paddr_t size)
> +{
> +    struct virt_smmu *smmu;
> +
> +    smmu = xzalloc(struct virt_smmu);
> +    if ( !smmu )
> +        return -ENOMEM;
> +
> +    smmu->d = d;
> +
> +    register_mmio_handler(d, &vsmmuv3_mmio_handler, addr, size, smmu);

I can't seem to find a place where the number of handler supported is 
incremented (see domain_io_init()) for the vIOMMU. Are you sure we 
always have enough space today?

> +
> +    /* Register the vIOMMU to be able to clean it up later. */
> +    list_add_tail(&smmu->viommu_list, &d->arch.viommu_list);
> +
> +    return 0;
> +}
> +
> +int domain_vsmmuv3_init(struct domain *d)
> +{
> +    int ret;

Coding style: newline missing.

> +    INIT_LIST_HEAD(&d->arch.viommu_list);
> +
> +    if ( is_hardware_domain(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);
> +            if ( ret )
> +                return ret;
> +        }
> +    }
> +    else
> +    {
> +        ret = vsmmuv3_init_single(d, GUEST_VSMMUV3_BASE, GUEST_VSMMUV3_SIZE);
> +        if ( ret )
> +            return ret;
> +    }
> +
> +    return 0;
> +}
> +
> +int vsmmuv3_relinquish_resources(struct domain *d)
> +{
> +    struct virt_smmu *pos, *temp;
> +
> +    /* Cope with unitialized vIOMMU */
> +    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_del(&pos->viommu_list);
> +        xfree(pos);
> +    }
> +
> +    return 0;
> +}
> +
> +static const struct viommu_ops vsmmuv3_ops = {
> +    .domain_init = domain_vsmmuv3_init,
> +    .relinquish_resources = vsmmuv3_relinquish_resources,
> +};
> +
> +static const struct viommu_desc vsmmuv3_desc = {
> +    .ops = &vsmmuv3_ops,
> +    .viommu_type = XEN_DOMCTL_CONFIG_VIOMMU_SMMUV3,
> +};
> +
> +void __init vsmmuv3_set_type(void)
> +{
> +    const struct viommu_desc *desc = &vsmmuv3_desc;
> +
> +    if ( cur_viommu && (cur_viommu != desc) )
> +    {
> +        printk("WARNING: Cannot set vIOMMU, already set to a different value\n");
> +        return;
> +    }
> +
> +    cur_viommu = desc;
> +}
> +
> +/*
> + * Local variables:
> + * mode: C
> + * c-file-style: "BSD"
> + * c-basic-offset: 4
> + * indent-tabs-mode: nil
> + * End:
> + */
> diff --git a/xen/drivers/passthrough/arm/vsmmu-v3.h b/xen/drivers/passthrough/arm/vsmmu-v3.h
> new file mode 100644
> index 0000000000..e11f85b431
> --- /dev/null
> +++ b/xen/drivers/passthrough/arm/vsmmu-v3.h
> @@ -0,0 +1,20 @@
> +/* SPDX-License-Identifier: (GPL-2.0-or-later OR BSD-2-Clause) */
> +#ifndef __ARCH_ARM_VSMMU_V3_H__
> +#define __ARCH_ARM_VSMMU_V3_H__
> +
> +#include <asm/viommu.h>
> +
> +#ifdef CONFIG_VIRTUAL_ARM_SMMU_V3
> +
> +void vsmmuv3_set_type(void);
> +
> +#else
> +
> +static inline void vsmmuv3_set_type(void)
> +{
> +    return;
> +}
> +
> +#endif /* CONFIG_VIRTUAL_ARM_SMMU_V3 */
> +
> +#endif /* __ARCH_ARM_VSMMU_V3_H__ */
> diff --git a/xen/include/public/arch-arm.h b/xen/include/public/arch-arm.h
> index d4953d40fd..ebac02ed63 100644
> --- a/xen/include/public/arch-arm.h
> +++ b/xen/include/public/arch-arm.h
> @@ -330,7 +330,8 @@ DEFINE_XEN_GUEST_HANDLE(vcpu_guest_context_t);
>   #define XEN_DOMCTL_CONFIG_ARM_SCI_NONE      0
>   #define XEN_DOMCTL_CONFIG_ARM_SCI_SCMI_SMC  1
>   
> -#define XEN_DOMCTL_CONFIG_VIOMMU_NONE   0
> +#define XEN_DOMCTL_CONFIG_VIOMMU_NONE       0

I am generally against trying to align values because this is just 
introducing unnecessary churn in the code.

> +#define XEN_DOMCTL_CONFIG_VIOMMU_SMMUV3     1
>   
>   struct xen_arch_domainconfig {
>       /* IN/OUT */
> @@ -456,6 +457,10 @@ typedef uint64_t xen_callback_t;
>   #define GUEST_GICV3_GICR0_BASE     xen_mk_ullong(0x03020000) /* vCPU0..127 */
>   #define GUEST_GICV3_GICR0_SIZE     xen_mk_ullong(0x01000000)
>   
> +/* vsmmuv3 ITS mappings */

What is ITS stand for in this context?

> +#define GUEST_VSMMUV3_BASE     xen_mk_ullong(0x04040000)
> +#define GUEST_VSMMUV3_SIZE     xen_mk_ullong(0x00040000)

If I am not mistaken, you are reserving 256KiB. However, looking at the 
SMMU spec (section 6.1, ARM IHI 0070 H.a), the minimum is 128 KiB. Are 
you intending to expose additional features?

> +
>   /*
>    * 256 MB is reserved for VPCI configuration space based on calculation
>    * 256 buses x 32 devices x 8 functions x 4 KB = 256 MB

Cheers,

-- 
Julien Grall



From xen-devel-bounces@lists.xenproject.org Tue Apr 14 20:24:47 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 14 Apr 2026 20:24:47 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1282087.1564784 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wCkJT-00063O-Kp; Tue, 14 Apr 2026 20:24:47 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1282087.1564784; Tue, 14 Apr 2026 20: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 1wCkJT-00063D-Gw; Tue, 14 Apr 2026 20:24:47 +0000
Received: by outflank-mailman (input) for mailman id 1282087;
 Tue, 14 Apr 2026 20:24:46 +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 1wCkJS-0005oE-5y
 for xen-devel@lists.xenproject.org; Tue, 14 Apr 2026 20:24:46 +0000
Received: from xenbits.xenproject.org ([104.239.192.120])
 by mail.xenproject.org with esmtp (Exim 4.96)
 (envelope-from <julien@xen.org>) id 1wCkJM-001nTQ-1v;
 Tue, 14 Apr 2026 20:24:40 +0000
Received: from [2a02:8012:3a1:0:6452:fdce:8dbd:9a39]
 by xenbits.xenproject.org with esmtpsa (TLS1.3) tls
 TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (Exim 4.96)
 (envelope-from <julien@xen.org>) id 1wCkJM-0036wi-1G;
 Tue, 14 Apr 2026 20:24: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=xen.org;
	s=20200302mail; h=Content-Transfer-Encoding:Content-Type:In-Reply-To:From:
	References:Cc:To:Subject:MIME-Version:Date:Message-ID;
	bh=hM9fqT/J7mb5lZTQsjxgjpy1ycoQF+7u90mM95CalWM=; b=Dm8u9zuf+yTX0fLInCjfU/PmV2
	DqZjhx7HaqZmEJBzDsqTredSOH9YuXb9UOuAyQRViXz6wUbLiBanG6nc5zSQMvN8TZ9nZE0Ha2SK6
	Rfulx3dPGtjWGTZfd/GD4+d6twJM02AXsbULOg07kJPVDCoLqYBus/IJnx4tXzk8rmPM=;
Message-ID: <75f9ccb1-e7e8-419c-9359-7779c5662a02@xen.org>
Date: Tue, 14 Apr 2026 15:26:14 +0900
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH v1 02/27] xen/riscv: Implement construct_domain()
Content-Language: en-GB
To: Oleksii Kurochko <oleksii.kurochko@gmail.com>,
 Jan Beulich <jbeulich@suse.com>
Cc: Romain Caritey <Romain.Caritey@microchip.com>,
 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>, =?UTF-8?Q?Roger_Pau_Monn=C3=A9?=
 <roger.pau@citrix.com>, Stefano Stabellini <sstabellini@kernel.org>,
 xen-devel@lists.xenproject.org
References: <cover.1773157782.git.oleksii.kurochko@gmail.com>
 <3a86599284108e6f2a27488a03145f8dd1b71def.1773157782.git.oleksii.kurochko@gmail.com>
 <cd1fa52a-0ff2-4b7f-9b0b-c33b6a01b6c8@suse.com>
 <95fc62d9-cfd4-4b75-a9b0-7e90c9ba1095@gmail.com>
 <c3e20570-6dbf-4dd9-86de-d334e0f71f3a@suse.com>
 <2926ad08-39c8-4559-bb40-7231c69d9a65@gmail.com>
From: Julien Grall <julien@xen.org>
In-Reply-To: <2926ad08-39c8-4559-bb40-7231c69d9a65@gmail.com>
Content-Type: text/plain; charset=UTF-8; format=flowed
Content-Transfer-Encoding: 8bit

Hi,

On 09/04/2026 22:39, Oleksii Kurochko wrote:
>>>>> +    BUG_ON(v->is_initialised);
>>>>> +
>>>>> +    kernel_load(kinfo);
>>>>> +    initrd_load(kinfo, copy_to_guest_phys);
>>>>> +    dtb_load(kinfo, copy_to_guest_phys);
>>>> These all return void, despite this also being used for non-Dom0. Is it
>>>> really fatal to a dom0less system if one out of many domains fail to be
>>>> built?
>>> For a dom0less system, my opinion is that it should not be fatal, it
>>> should simply ignore a domain that fails to build and continue with the
>>> rest. However, with the current common dom0less code it will just
>>> panic(). This is a behavior I would like to change and it is on my TODO
>>> list.
>>>
>>> Regarding the functions returning void, this is because all of them
>>> currently call panic() on failure, which I expect will need to change in
>>> order to ignore a domain that fails to build in dom0less mode.
>>>
>>> For the current implementation of the common dom0less code this is fine,
>>> but I agree it should be addressed in a separate patch series.
>>>
>>>    Especially when, despite the name, there is a Dom0?
>>>
>>> For this case, a failure there should indeed be fatal, so panic() is
>>> appropriate.
>> I think you misunderstood. I wasn't referring to the building of Dom0
>> failing. Was rather emphasizing that when there is a Dom0, failure to
>> create a DomU likely should even less so be fatal, as Dom0 could later
>> rectify the situation.
> 
> Oh, okay, then it is really less fatal if DomU creation will fail in the 
> case of Dom0.

I am not sure I agree with this statement. The goal of dom0less is to 
not have a dom0 at all. So there is no way to rectify after the fact.

At least on Arm, we took the stance that boot failures are fatal because 
this is a clear signal that something went wrong. It may be more 
difficult to notice if you continue to boot.

Cheers,

-- 
Julien Grall



From xen-devel-bounces@lists.xenproject.org Tue Apr 14 20:24:49 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 14 Apr 2026 20:24:49 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1282089.1564793 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wCkJV-0006KB-SR; Tue, 14 Apr 2026 20:24:49 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1282089.1564793; Tue, 14 Apr 2026 20: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 1wCkJV-0006K0-OO; Tue, 14 Apr 2026 20:24:49 +0000
Received: by outflank-mailman (input) for mailman id 1282089;
 Tue, 14 Apr 2026 20:24:48 +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 1wCkJU-0006Ev-EY
 for xen-devel@lists.xenproject.org; Tue, 14 Apr 2026 20:24:48 +0000
Received: from xenbits.xenproject.org ([104.239.192.120])
 by mail.xenproject.org with esmtp (Exim 4.96)
 (envelope-from <julien@xen.org>) id 1wCkJT-001nTl-2o;
 Tue, 14 Apr 2026 20:24:47 +0000
Received: from [2a02:8012:3a1:0:6452:fdce:8dbd:9a39]
 by xenbits.xenproject.org with esmtpsa (TLS1.3) tls
 TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (Exim 4.96)
 (envelope-from <julien@xen.org>) id 1wCkJT-0036wi-2K;
 Tue, 14 Apr 2026 20:24: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=xen.org;
	s=20200302mail; h=Content-Transfer-Encoding:Content-Type:In-Reply-To:From:
	References:Cc:To:Subject:MIME-Version:Date:Message-ID;
	bh=9YaZxjoKz18ZaT0K7IsqTa9f9VS7PwBgIblFZCsgu/c=; b=3vV5BhkS3eXiLHMLnktLSgq4hK
	/y4zHUPJ9mEJevevpbBBm8Aze90H9YZAv87xN8sf0V9jpMaYEa59jOa/OrTBvR1+ioXnK06wKd9xW
	szSCbYPlIT/RmsCQ6HvJi0/ydaR7vl92rMitSjsCowkvCWeXBTbWsbIaSaCK/RppOo9Y=;
Message-ID: <4d00797b-fe24-43d6-9ada-42426bcdab30@xen.org>
Date: Tue, 14 Apr 2026 16:18:11 +0900
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH v3 07/23] xen/arm: vIOMMU: Add cmdline boot option "viommu
 = <string>"
Content-Language: en-GB
To: Milan Djokic <milan_djokic@epam.com>,
 "xen-devel@lists.xenproject.org" <xen-devel@lists.xenproject.org>
Cc: Rahul Singh <rahul.singh@arm.com>,
 Andrew Cooper <andrew.cooper3@citrix.com>,
 Anthony PERARD <anthony.perard@vates.tech>,
 Michal Orzel <michal.orzel@amd.com>, Jan Beulich <jbeulich@suse.com>,
 =?UTF-8?Q?Roger_Pau_Monn=C3=A9?= <roger.pau@citrix.com>,
 Stefano Stabellini <sstabellini@kernel.org>,
 Bertrand Marquis <bertrand.marquis@arm.com>,
 Volodymyr Babchuk <Volodymyr_Babchuk@epam.com>
References: <cover.1774918270.git.milan_djokic@epam.com>
 <5d86efa38ca99439153822fa19064bda6843fdc2.1774918270.git.milan_djokic@epam.com>
From: Julien Grall <julien@xen.org>
In-Reply-To: <5d86efa38ca99439153822fa19064bda6843fdc2.1774918270.git.milan_djokic@epam.com>
Content-Type: text/plain; charset=UTF-8; format=flowed
Content-Transfer-Encoding: 7bit

Hi Milan,

On 31/03/2026 10:52, Milan Djokic wrote:
> From: Rahul Singh <rahul.singh@arm.com>
> 
> Add cmdline boot option "viommu = <string>" to enable or disable the
> virtual iommu support for guests on ARM (only viommu="smmuv3" supported
> for now).

In Xen terminology, 'guests' refers to domUs. IOW, this doesn't include 
dom0. Is this what you meant? If so, how would you enable it for dom0?

That said, is there any particular reason why this can't be 
automatically enabled based on the SMMUv3 discovered?

> 
> Signed-off-by: Rahul Singh <rahul.singh@arm.com>
> Signed-off-by: Milan Djokic <milan_djokic@epam.com>
> ---
>   docs/misc/xen-command-line.pandoc      |  9 +++++++++
>   xen/arch/arm/include/asm/viommu.h      | 12 ++++++++++++
>   xen/drivers/passthrough/arm/viommu.c   | 11 +++++++++++
>   xen/drivers/passthrough/arm/vsmmu-v3.c |  3 +++
>   4 files changed, 35 insertions(+)
> 
> diff --git a/docs/misc/xen-command-line.pandoc b/docs/misc/xen-command-line.pandoc
> index 6c77129732..6531c2355c 100644
> --- a/docs/misc/xen-command-line.pandoc
> +++ b/docs/misc/xen-command-line.pandoc
> @@ -2850,6 +2850,15 @@ The optional `keep` parameter causes Xen to continue using the vga
>   console even after dom0 has been started.  The default behaviour is to
>   relinquish control to dom0.
>   
> +### viommu (arm)
> +> `= <string>`
> +
> +> Default: ``
> +
> +Flag to enable or disable support for the virtual IOMMU for guests. Disabled by
> +default. Enable by specifying target IOMMU type (if supported). Only "smmuv3"
> +IOMMU emulation supported at this point.
> +
>   ### viridian-spinlock-retry-count (x86)
>   > `= <integer>`
>   
> diff --git a/xen/arch/arm/include/asm/viommu.h b/xen/arch/arm/include/asm/viommu.h
> index 2a6742de73..ed338fe0ec 100644
> --- a/xen/arch/arm/include/asm/viommu.h
> +++ b/xen/arch/arm/include/asm/viommu.h
> @@ -10,6 +10,7 @@
>   #include <public/xen.h>
>   
>   extern struct list_head host_iommu_list;
> +extern char viommu[];
>   
>   /* data structure for each hardware IOMMU */
>   struct host_iommu {
> @@ -50,6 +51,12 @@ uint16_t viommu_get_type(void);
>   void add_to_host_iommu_list(paddr_t addr, paddr_t size,
>                               const struct dt_device_node *node);
>   
> +static always_inline bool is_viommu_enabled(void)

Regardless what Luca wrote, why do we need to force "always_inline"?

> +{
> +    /* only smmuv3 emulation supported */
> +    return !strcmp(viommu, "smmuv3");
> +}
> +
>   #else
>   
>   static inline uint8_t viommu_get_type(void)
> @@ -76,6 +83,11 @@ static inline void add_to_host_iommu_list(paddr_t addr, paddr_t size,
>       return;
>   }
>   
> +static always_inline bool is_viommu_enabled(void)
> +{
> +    return false;
> +}
> +
>   #endif /* CONFIG_ARM_VIRTUAL_IOMMU */
>   
>   #endif /* __ARCH_ARM_VIOMMU_H__ */
> diff --git a/xen/drivers/passthrough/arm/viommu.c b/xen/drivers/passthrough/arm/viommu.c
> index 53ae46349a..5f5892fbb2 100644
> --- a/xen/drivers/passthrough/arm/viommu.c
> +++ b/xen/drivers/passthrough/arm/viommu.c
> @@ -3,6 +3,7 @@
>   #include <xen/errno.h>
>   #include <xen/init.h>
>   #include <xen/irq.h>
> +#include <xen/param.h>
>   #include <xen/types.h>
>   
>   #include <asm/viommu.h>
> @@ -38,8 +39,18 @@ void add_to_host_iommu_list(paddr_t addr, paddr_t size,
>       list_add_tail(&iommu_data->entry, &host_iommu_list);
>   }
>   
> +/* By default viommu is disabled.
> + * If enabled, 'viommu' param indicates type (smmuv3 is only supported type atm)
> + */
> +char __read_mostly viommu[10] = "";
> +string_param("viommu", viommu);
> +
>   int domain_viommu_init(struct domain *d, uint16_t viommu_type)
>   {
> +    /* Enable viommu when it has been enabled explicitly (viommu="smmuv3"). */
> +    if ( !is_viommu_enabled() )
 > +        return 0;> +
>       if ( viommu_type == XEN_DOMCTL_CONFIG_VIOMMU_NONE )
>           return 0;
>   
> diff --git a/xen/drivers/passthrough/arm/vsmmu-v3.c b/xen/drivers/passthrough/arm/vsmmu-v3.c
> index 6b4009e5ef..e36f200ba5 100644
> --- a/xen/drivers/passthrough/arm/vsmmu-v3.c
> +++ b/xen/drivers/passthrough/arm/vsmmu-v3.c
> @@ -105,6 +105,9 @@ void __init vsmmuv3_set_type(void)
>   {
>       const struct viommu_desc *desc = &vsmmuv3_desc;
>   
> +    if ( !is_viommu_enabled() )

This is likely going to go wrong in the future if we add support for 
other vIOMMU in the future. If we decide to continue using the command 
line option (see above), you would want want an helper to return the 
selected emulation and check against SMMUv3 here.

Cheers,

-- 
Julien Grall



From xen-devel-bounces@lists.xenproject.org Tue Apr 14 20:24:52 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 14 Apr 2026 20:24:52 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1282092.1564801 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wCkJY-0006ef-8D; Tue, 14 Apr 2026 20:24:52 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1282092.1564801; Tue, 14 Apr 2026 20: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 1wCkJY-0006eQ-4k; Tue, 14 Apr 2026 20:24:52 +0000
Received: by outflank-mailman (input) for mailman id 1282092;
 Tue, 14 Apr 2026 20:24:50 +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 1wCkJW-0006Xg-RI
 for xen-devel@lists.xenproject.org; Tue, 14 Apr 2026 20:24:50 +0000
Received: from xenbits.xenproject.org ([104.239.192.120])
 by mail.xenproject.org with esmtp (Exim 4.96)
 (envelope-from <julien@xen.org>) id 1wCkJW-001nTv-1X;
 Tue, 14 Apr 2026 20:24:50 +0000
Received: from [2a02:8012:3a1:0:6452:fdce:8dbd:9a39]
 by xenbits.xenproject.org with esmtpsa (TLS1.3) tls
 TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (Exim 4.96)
 (envelope-from <julien@xen.org>) id 1wCkJW-0036wi-16;
 Tue, 14 Apr 2026 20:24: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=xen.org;
	s=20200302mail; h=Content-Transfer-Encoding:Content-Type:In-Reply-To:From:
	References:Cc:To:Subject:MIME-Version:Date:Message-ID;
	bh=QFBLfe5i/9JqZBRgUFAj7nWhiJfRTY56kNhSbwiwTQk=; b=0S9RfB0x6qrJPSFDae9jphUcrr
	nyjl6xNGf4BS8hZvn7h05Fc1npFScMmKPEJLlg7f+PJdnIN45iYenX5xFcJbo/VaEFimam6Du+hPc
	Zq8clk9jv2X3Otb/auFuSMV6psCOjfTd6Nw6t7MPo4JZH65g6UBN/wKN5zq3wjeTYuVo=;
Message-ID: <6d1806aa-b009-407a-9a7a-476f9f4deb70@xen.org>
Date: Tue, 14 Apr 2026 17:10:37 +0900
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH v3 08/23] xen/arm: vsmmuv3: Add support for registers
 emulation
Content-Language: en-GB
To: Milan Djokic <milan_djokic@epam.com>,
 "xen-devel@lists.xenproject.org" <xen-devel@lists.xenproject.org>
Cc: Rahul Singh <rahul.singh@arm.com>,
 Stefano Stabellini <sstabellini@kernel.org>,
 Bertrand Marquis <bertrand.marquis@arm.com>,
 Michal Orzel <michal.orzel@amd.com>,
 Volodymyr Babchuk <Volodymyr_Babchuk@epam.com>
References: <cover.1774918270.git.milan_djokic@epam.com>
 <25adb33c4be3932c2d946cf7757c933eb042476c.1774918270.git.milan_djokic@epam.com>
From: Julien Grall <julien@xen.org>
In-Reply-To: <25adb33c4be3932c2d946cf7757c933eb042476c.1774918270.git.milan_djokic@epam.com>
Content-Type: text/plain; charset=UTF-8; format=flowed
Content-Transfer-Encoding: 7bit

Hi Milan,

On 31/03/2026 10:52, Milan Djokic wrote:
> 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/smmu-v3.h  |   6 +
>   xen/drivers/passthrough/arm/vsmmu-v3.c | 286 +++++++++++++++++++++++++
>   2 files changed, 292 insertions(+)
> 
> diff --git a/xen/drivers/passthrough/arm/smmu-v3.h b/xen/drivers/passthrough/arm/smmu-v3.h
> index 3fb13b7e21..fab4fd5a26 100644
> --- a/xen/drivers/passthrough/arm/smmu-v3.h
> +++ b/xen/drivers/passthrough/arm/smmu-v3.h
> @@ -60,6 +60,12 @@
>   #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 ARM_SMMU_CR0			0x20
>   #define CR0_ATSCHK			(1 << 4)
>   #define CR0_CMDQEN			(1 << 3)
> diff --git a/xen/drivers/passthrough/arm/vsmmu-v3.c b/xen/drivers/passthrough/arm/vsmmu-v3.c
> index e36f200ba5..3ae1e62a50 100644
> --- a/xen/drivers/passthrough/arm/vsmmu-v3.c
> +++ b/xen/drivers/passthrough/arm/vsmmu-v3.c
> @@ -3,25 +3,307 @@
>   #include <xen/param.h>
>   #include <xen/sched.h>
>   #include <asm/mmio.h>
> +#include <asm/vgic-emul.h>

vgic-emul.h is intended to only be used in the vGIC code. I am fine if 
you want to use it in vsmmu-v3.c but it needs to be renamed. Maybe to 
vdev-emul.h.

>   #include <asm/viommu.h>
> +#include <asm/vreg.h>
> +
> +#include "smmu-v3.h"
> +
> +/* 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)
> +#define CR0_RESERVED        0xFFFFFC20

AFAIU, this is covering all the bits defined by the SMMU spec. But some 
of them are optional. Does this mean we will expose those optional features?

> +#define SMMU_IDR1_SIDSIZE   16
> +#define SMMU_CMDQS          19

Can you add some details how you decided the size of the command and ...

> +#define SMMU_EVTQS          19

... even queues?

> +#define DWORDS_BYTES        8
> +#define ARM_SMMU_IIDR_VAL   0x12

I am not sure which implementer this is referring to. But how do you 
plan to handle errata? Are we sure they can always be handled by Xen?

>   
>   /* Struct to hold the vIOMMU ops and vIOMMU type */
>   extern const struct viommu_desc __read_mostly *cur_viommu;
>   
> +/* 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;
> +    uint8_t     sid_split;
> +    uint32_t    features;
> +    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;
>   };
>   
>   static int vsmmuv3_mmio_write(struct vcpu *v, mmio_info_t *info,
>                                 register_t r, void *priv)
>   {
> +    struct virt_smmu *smmu = priv;
> +    uint64_t reg;
> +    uint32_t reg32;

Looking at this helper and the read one, I am bit surprised there is no 
lock taken nor we check the access size.  Can you explain why?

For instance, we should not allow 64-bit access on 32-bit register. The 
rest of the size (8-bit and 16-bit) is IMP DEFINED so it may be easier 
just not allow them.

> +
> +    switch ( info->gpa & 0xffff )
> +    {
> +    case VREG32(ARM_SMMU_CR0):
 > +        reg32 = smmu->cr[0];> +        vreg_reg32_update(&reg32, r, 
info);
> +        smmu->cr[0] = reg32;
> +        smmu->cr0ack = reg32 & ~CR0_RESERVED;
> +        break;
> +
> +    case VREG32(ARM_SMMU_CR1):
> +        reg32 = smmu->cr[1];
> +        vreg_reg32_update(&reg32, r, info);
> +        smmu->cr[1] = reg32;
> +        break;
> +
> +    case VREG32(ARM_SMMU_CR2):
> +        reg32 = smmu->cr[2];
> +        vreg_reg32_update(&reg32, r, info);
> +        smmu->cr[2] = reg32;
> +        break;
> +
> +    case VREG64(ARM_SMMU_STRTAB_BASE):

Looking at the SMMU spec (6.3.24 in ARM IHI 0070 H.a), the behavior of 
writing to the register is constrained unpredictable before SMMUv3.2, 
but after it should be ignored if SMMU_CR0.SMMUEN == 1.

So this implementation would not be valid for SMMUv3.2 and later. For 
convenience it would be best to just ignore the write (which is also 
valid for SMMUv3.1 and ealier).

> +        reg = smmu->strtab_base;
> +        vreg_reg64_update(&reg, r, info);
> +        smmu->strtab_base = reg;
> +        break;
> +
> +    case VREG32(ARM_SMMU_STRTAB_BASE_CFG):

Similar to above, there are some conditions when this field can be 
written (see 6.3.25).

> +        reg32 = smmu->strtab_base_cfg;
> +        vreg_reg32_update(&reg32, r, info);
> +        smmu->strtab_base_cfg = reg32;
> +
> +        smmu->sid_split = FIELD_GET(STRTAB_BASE_CFG_SPLIT, reg32);

The information for sid_split is already stored in 
``smmu->strtab_base_cfg``. So why do we need to store it differently?

> +        smmu->features |= STRTAB_BASE_CFG_FMT_2LVL;

I haven't checked the rest of the code yet. But from the name, I would 
assume it indicates whether 2-level stream table is supported. From my 
understanding of the specification, this is selectable by the guest OS. 
So why is this unconditionally set?

> +        break;
> +
> +    case VREG32(ARM_SMMU_CMDQ_BASE):

Similar to above, there are some condition when this field is RO.

> +        reg = smmu->cmdq.q_base;
> +        vreg_reg64_update(&reg, r, info);
> +        smmu->cmdq.q_base = reg;
> +        smmu->cmdq.max_n_shift = FIELD_GET(Q_BASE_LOG2SIZE, smmu->cmdq.q_base);
> +        if ( smmu->cmdq.max_n_shift > SMMU_CMDQS )
> +            smmu->cmdq.max_n_shift = SMMU_CMDQS;
> +        break;
> +
> +    case VREG32(ARM_SMMU_CMDQ_PROD):
> +        reg32 = smmu->cmdq.prod;
> +        vreg_reg32_update(&reg32, r, info);
> +        smmu->cmdq.prod = reg32;

AFAIU, this implementation is not yet complete. If so, it would be good 
to mark it as such with a comment of BUG_ON("Not yet implemented"). Same 
for everywhere in this file and the rest of the series.

> +        break;
> +
> +    case VREG32(ARM_SMMU_CMDQ_CONS):
> +        reg32 = smmu->cmdq.cons;
> +        vreg_reg32_update(&reg32, r, info);
> +        smmu->cmdq.cons = reg32;
> +        break;
> +
> +    case VREG32(ARM_SMMU_EVTQ_BASE):
> +        reg = smmu->evtq.q_base;
> +        vreg_reg64_update(&reg, r, info);
> +        smmu->evtq.q_base = reg;
> +        smmu->evtq.max_n_shift = FIELD_GET(Q_BASE_LOG2SIZE, smmu->evtq.q_base);
> +        if ( smmu->cmdq.max_n_shift > SMMU_EVTQS )
> +            smmu->cmdq.max_n_shift = SMMU_EVTQS;
> +        break;
> +
> +    case VREG32(ARM_SMMU_EVTQ_PROD):
> +        reg32 = smmu->evtq.prod;
> +        vreg_reg32_update(&reg32, r, info);
> +        smmu->evtq.prod = reg32;
> +        break;
> +
> +    case VREG32(ARM_SMMU_EVTQ_CONS):
> +        reg32 = smmu->evtq.cons;
> +        vreg_reg32_update(&reg32, r, info);
> +        smmu->evtq.cons = reg32;
> +        break;
> +
> +    case VREG32(ARM_SMMU_IRQ_CTRL):
> +        reg32 = smmu->irq_ctrl;
> +        vreg_reg32_update(&reg32, r, info);
> +        smmu->irq_ctrl = reg32;
> +        break;
> +
> +    case VREG64(ARM_SMMU_GERROR_IRQ_CFG0):
> +        reg = smmu->gerror_irq_cfg0;
> +        vreg_reg64_update(&reg, r, info);
> +        smmu->gerror_irq_cfg0 = reg;
> +        break;
> +
> +    case VREG64(ARM_SMMU_EVTQ_IRQ_CFG0):
> +        reg = smmu->evtq_irq_cfg0;
> +        vreg_reg64_update(&reg, r, info);
> +        smmu->evtq_irq_cfg0 = reg;
> +        break;
> +
> +    case VREG32(ARM_SMMU_GERRORN):
> +        reg = smmu->gerrorn;
> +        vreg_reg64_update(&reg, r, info);
> +        smmu->gerrorn = reg;
> +        break;
> +
> +    default:
> +        printk(XENLOG_G_ERR
> +               "%pv: vSMMUv3: unhandled write r%d offset %"PRIpaddr"\n",

NIT: The vIOMMU is per-domain so it is sufficient to print "%pd".

> +               v, info->dabt.reg, (unsigned long)info->gpa & 0xffff);
> +        return IO_ABORT;

Per section 6 of the SMMU:

"
For all pages except Page 1, undefined register locations are RES0. For 
Page 1, access to undefined/Reserved
register locations is CONSTRAINED UNPREDICTABLE and an implementation 
has one of the following behaviors:
[...]
"

Here you seem to implement page0 so the default case should be write 
ignore and therefore IO_HANDLED should be returned. BTW, you don't seem 
to handle page1. Is this going to be handled later on?

> +    }
> +
>       return IO_HANDLED;
>   }
>   
>   static int vsmmuv3_mmio_read(struct vcpu *v, mmio_info_t *info,
>                                register_t *r, void *priv)
>   {
> +    struct virt_smmu *smmu = priv;
> +    uint64_t reg;
> +
> +    switch ( info->gpa & 0xffff )
> +    {
> +    case VREG32(ARM_SMMU_IDR0):
> +        reg  = FIELD_PREP(IDR0_S1P, 1) | FIELD_PREP(IDR0_TTF, 2) |

As the page-table will be used by the HW, shouldn't TTF reflect what the 
HW supports? This would allow the vIOMMU to work for 32-bit domains.

> +            FIELD_PREP(IDR0_COHACC, 0) | FIELD_PREP(IDR0_ASID16, 1) |

Here you set COHACC to 0 which means the guest OS will have to clean the 
cache every time. This is safe everywhere, but it will have an impact on 
performance. I am not asking to allow COHACC when the HW supports it, 
but I think a TODO would be worth.

For ASID16, shouldn't the value be based on the HW?

As an aside, I guess we don't allow BTM because we only expose a single 
vSMMU?

> +            FIELD_PREP(IDR0_TTENDIAN, 0) | FIELD_PREP(IDR0_STALL_MODEL, 1) |

For TTENDIAN, it is the same as above.

For STALL_MODEL, I think 1 is ok.

> +            FIELD_PREP(IDR0_ST_LVL, 1) | FIELD_PREP(IDR0_TERM_MODEL, 1);

Overall, it feels the value set in IDR0 and IDR1 (below) needs some comment.

> +        *r = vreg_reg32_extract(reg, info);
> +        break;
> +
> +    case VREG32(ARM_SMMU_IDR1):
> +        reg  = FIELD_PREP(IDR1_SIDSIZE, SMMU_IDR1_SIDSIZE) |
> +            FIELD_PREP(IDR1_CMDQS, SMMU_CMDQS) |
> +            FIELD_PREP(IDR1_EVTQS, SMMU_EVTQS);
> +        *r = vreg_reg32_extract(reg, info);
> +        break;
> +
> +    case VREG32(ARM_SMMU_IDR2):
> +        goto read_reserved;
> +
> +    case VREG32(ARM_SMMU_IDR3):
> +        reg  = FIELD_PREP(IDR3_RIL, 0);

I am not sure why we explicitely need to set RIL but not the other fields?

 > +        *r = vreg_reg32_extract(reg, info);> +        break;
> +
> +    case VREG32(ARM_SMMU_IDR4):
> +        goto read_impl_defined;
> +
> +    case VREG32(ARM_SMMU_IDR5):
> +        reg  = FIELD_PREP(IDR5_GRAN4K, 1) | FIELD_PREP(IDR5_GRAN16K, 1) |
> +            FIELD_PREP(IDR5_GRAN64K, 1) | FIELD_PREP(IDR5_OAS, IDR5_OAS_48_BIT);

Similar to the other fields in IDR0, isn't this based on what the HW 
supports?	

> +        *r = vreg_reg32_extract(reg, info);
> +        break;
> +
> +    case VREG32(ARM_SMMU_IIDR):
> +        *r = vreg_reg32_extract(ARM_SMMU_IIDR_VAL, info);
> +        break;
> +
> +    case VREG32(ARM_SMMU_CR0):
> +        *r = vreg_reg32_extract(smmu->cr[0], info);
> +        break;
> +
> +    case VREG32(ARM_SMMU_CR0ACK):
> +        *r = vreg_reg32_extract(smmu->cr0ack, info);
> +        break;
> +
> +    case VREG32(ARM_SMMU_CR1):
> +        *r = vreg_reg32_extract(smmu->cr[1], info);
> +        break;
> +
> +    case VREG32(ARM_SMMU_CR2):
> +        *r = vreg_reg32_extract(smmu->cr[2], info);
> +        break;
> +
> +    case VREG32(ARM_SMMU_STRTAB_BASE):
> +        *r = vreg_reg64_extract(smmu->strtab_base, info);
> +        break;
> +
> +    case VREG32(ARM_SMMU_STRTAB_BASE_CFG):
> +        *r = vreg_reg32_extract(smmu->strtab_base_cfg, info);
> +        break;
> +
> +    case VREG32(ARM_SMMU_CMDQ_BASE):
> +        *r = vreg_reg64_extract(smmu->cmdq.q_base, info);
> +        break;
> +
> +    case VREG32(ARM_SMMU_CMDQ_PROD):
> +        *r = vreg_reg32_extract(smmu->cmdq.prod, info);
> +        break;
> +
> +    case VREG32(ARM_SMMU_CMDQ_CONS):
> +        *r = vreg_reg32_extract(smmu->cmdq.cons, info);
> +        break;
> +
> +    case VREG32(ARM_SMMU_EVTQ_BASE):
> +        *r = vreg_reg64_extract(smmu->evtq.q_base, info);
> +        break;
> +
> +    case VREG32(ARM_SMMU_EVTQ_PROD):
> +        *r = vreg_reg32_extract(smmu->evtq.prod, info);
> +        break;
> +
> +    case VREG32(ARM_SMMU_EVTQ_CONS):
> +        *r = vreg_reg32_extract(smmu->evtq.cons, info);
> +        break;
> +
> +    case VREG32(ARM_SMMU_IRQ_CTRL):
> +    case VREG32(ARM_SMMU_IRQ_CTRLACK):
> +        *r = vreg_reg32_extract(smmu->irq_ctrl, info);
> +        break;
> +
> +    case VREG64(ARM_SMMU_GERROR_IRQ_CFG0):
> +        *r = vreg_reg64_extract(smmu->gerror_irq_cfg0, info);
> +        break;
> +
> +    case VREG64(ARM_SMMU_EVTQ_IRQ_CFG0):
> +        *r = vreg_reg64_extract(smmu->evtq_irq_cfg0, info);
> +        break;
> +
> +    case VREG32(ARM_SMMU_GERROR):
> +        *r = vreg_reg64_extract(smmu->gerror, info);
> +        break;
> +
> +    case VREG32(ARM_SMMU_GERRORN):
> +        *r = vreg_reg64_extract(smmu->gerrorn, info);
> +        break;
> +
> +    default:
> +        printk(XENLOG_G_ERR
> +               "%pv: vSMMUv3: unhandled read r%d offset %"PRIpaddr"\n",
> +               v, info->dabt.reg, (unsigned long)info->gpa & 0xffff);
> +        return IO_ABORT;
> +    }
> +
> +    return IO_HANDLED;
> +
> + read_impl_defined:
> +    printk(XENLOG_G_DEBUG
> +           "%pv: vSMMUv3: RAZ on implementation defined register offset %"PRIpaddr"\n",
> +           v, info->gpa & 0xffff);
> +    *r = 0;
> +    return IO_HANDLED;
> +
> + read_reserved:
> +    printk(XENLOG_G_DEBUG
> +           "%pv: vSMMUv3: RAZ on reserved register offset %"PRIpaddr"\n",
> +           v, info->gpa & 0xffff);
> +    *r = 0;
>       return IO_HANDLED;
>   }
>   
> @@ -39,6 +321,10 @@ static int vsmmuv3_init_single(struct domain *d, paddr_t addr, paddr_t size)
>           return -ENOMEM;
>   
>       smmu->d = d;
> +    smmu->cmdq.q_base = FIELD_PREP(Q_BASE_LOG2SIZE, SMMU_CMDQS);
> +    smmu->cmdq.ent_size = CMDQ_ENT_DWORDS * DWORDS_BYTES;
> +    smmu->evtq.q_base = FIELD_PREP(Q_BASE_LOG2SIZE, SMMU_EVTQS);
> +    smmu->evtq.ent_size = EVTQ_ENT_DWORDS * DWORDS_BYTES;

I understand why we initialize ent_size. But I am not sure to understand 
why we need to initialize q_base. Can you clarify?

>   
>       register_mmio_handler(d, &vsmmuv3_mmio_handler, addr, size, smmu);
>   

Cheers,

-- 
Julien Grall



From xen-devel-bounces@lists.xenproject.org Tue Apr 14 20:24:54 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 14 Apr 2026 20:24:54 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1282096.1564811 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wCkJa-0006y1-I6; Tue, 14 Apr 2026 20:24:54 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1282096.1564811; Tue, 14 Apr 2026 20: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 1wCkJa-0006x3-Dq; Tue, 14 Apr 2026 20:24:54 +0000
Received: by outflank-mailman (input) for mailman id 1282096;
 Tue, 14 Apr 2026 20:24:53 +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 1wCkJZ-0006tP-Ba
 for xen-devel@lists.xenproject.org; Tue, 14 Apr 2026 20:24:53 +0000
Received: from xenbits.xenproject.org ([104.239.192.120])
 by mail.xenproject.org with esmtp (Exim 4.96)
 (envelope-from <julien@xen.org>) id 1wCkJZ-001nU6-00;
 Tue, 14 Apr 2026 20:24:53 +0000
Received: from [2a02:8012:3a1:0:6452:fdce:8dbd:9a39]
 by xenbits.xenproject.org with esmtpsa (TLS1.3) tls
 TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (Exim 4.96)
 (envelope-from <julien@xen.org>) id 1wCkJY-0036wi-2l;
 Tue, 14 Apr 2026 20:24: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=xen.org;
	s=20200302mail; h=Content-Transfer-Encoding:Content-Type:In-Reply-To:From:
	References:Cc:To:Subject:MIME-Version:Date:Message-ID;
	bh=09cHly2BqHYGkH46vKnOx07jfMK6IV594uDYR5Bmswg=; b=dYthwWWTRu8t31JD9TpxyWNo7w
	QY+H99Bw3+5QPpBIWWOA3jlT+6y4HdchpYCCrbLgI465eaik4BAfQhHRZl0qpHiDjt/YLovGusv5G
	0Am67lhsAW2Oeox2scP6A3dTT728WvBpdv9HozZRPc4cuIQVA3TwGj2tl05n1ks3DDI0=;
Message-ID: <5aa739f7-dba0-42bf-beb3-594c53fdb868@xen.org>
Date: Tue, 14 Apr 2026 17:18:19 +0900
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH v3 09/23] xen/arm: vsmmuv3: Add support for cmdqueue
 handling
Content-Language: en-GB
To: Milan Djokic <milan_djokic@epam.com>,
 "xen-devel@lists.xenproject.org" <xen-devel@lists.xenproject.org>
Cc: Rahul Singh <rahul.singh@arm.com>,
 Stefano Stabellini <sstabellini@kernel.org>,
 Bertrand Marquis <bertrand.marquis@arm.com>,
 Michal Orzel <michal.orzel@amd.com>,
 Volodymyr Babchuk <Volodymyr_Babchuk@epam.com>
References: <cover.1774918270.git.milan_djokic@epam.com>
 <b223a8bb3e4d8771fc643c324a692a2639a91c12.1774918270.git.milan_djokic@epam.com>
From: Julien Grall <julien@xen.org>
In-Reply-To: <b223a8bb3e4d8771fc643c324a692a2639a91c12.1774918270.git.milan_djokic@epam.com>
Content-Type: text/plain; charset=UTF-8; format=flowed
Content-Transfer-Encoding: 7bit

Hi Milan,

On 31/03/2026 10:52, Milan Djokic wrote:
> From: Rahul Singh <rahul.singh@arm.com>
> 
> Add support for virtual cmdqueue handling for guests

This commit message is quite light. There are quite a few pitfalss with 
the command queue because it can be long running which require some 
explaining on the plan to handle it.

If this is delayed for later, then it would be useful to document in the 
code what's missing so it is easier to know whether the vSMMUv3 
implementation can be security supported (I assume this will be the goal).

> 
> 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 | 101 +++++++++++++++++++++++++
>   1 file changed, 101 insertions(+)
> 
> diff --git a/xen/drivers/passthrough/arm/vsmmu-v3.c b/xen/drivers/passthrough/arm/vsmmu-v3.c
> index 3ae1e62a50..02fe6a4422 100644
> --- a/xen/drivers/passthrough/arm/vsmmu-v3.c
> +++ b/xen/drivers/passthrough/arm/vsmmu-v3.c
> @@ -1,5 +1,6 @@
>   /* SPDX-License-Identifier: (GPL-2.0-or-later OR BSD-2-Clause) */
>   
> +#include <xen/guest_access.h>
>   #include <xen/param.h>
>   #include <xen/sched.h>
>   #include <asm/mmio.h>
> @@ -25,6 +26,26 @@
>   /* Struct to hold the vIOMMU ops and vIOMMU type */
>   extern const struct viommu_desc __read_mostly *cur_viommu;
>   
> +/* SMMUv3 command definitions */
> +#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_get_cmdq_enabled(x)    FIELD_GET(CR0_CMDQEN, x)
> +#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 */
> @@ -49,8 +70,80 @@ struct virt_smmu {
>       uint64_t    gerror_irq_cfg0;
>       uint64_t    evtq_irq_cfg0;
>       struct      arm_vsmmu_queue evtq, cmdq;
> +    spinlock_t  cmd_queue_lock;
>   };
>   
> +/* Queue manipulation functions */
> +static bool queue_empty(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 void queue_inc_cons(struct arm_vsmmu_queue *q)
> +{
> +    uint32_t cons = (Q_WRP(q, q->cons) | Q_IDX(q, q->cons)) + 1;
> +    q->cons = Q_OVF(q->cons) | Q_WRP(q, cons) | Q_IDX(q, cons);
> +}
> +
> +static void dump_smmu_command(uint64_t *command)
> +{
> +    gdprintk(XENLOG_ERR, "cmd 0x%02llx: %016lx %016lx\n",
> +             smmu_cmd_get_command(command[0]), command[0], command[1]);

I would consider using gprintk() because this could be useful even in 
non-production build.

> +}
> +static int arm_vsmmu_handle_cmds(struct virt_smmu *smmu)
> +{
> +    struct arm_vsmmu_queue *q = &smmu->cmdq;
> +    struct domain *d = smmu->d;
> +    uint64_t command[CMDQ_ENT_DWORDS];
> +    paddr_t addr;
> +
> +    if ( !smmu_get_cmdq_enabled(smmu->cr[0]) )
> +        return 0;
> +
> +    while ( !queue_empty(q) )
 > +    {> +        int ret;
> +
> +        addr = Q_CONS_ENT(q);
> +        ret = access_guest_memory_by_gpa(d, addr, command,
> +                                         sizeof(command), false);
> +        if ( ret )
> +            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:

Is this empty because there is nothing to do? Or is this empty because 
they are not yet implemented?

> +            break;
> +        case CMDQ_OP_TLBI_NH_ASID:
> +        case CMDQ_OP_TLBI_NSNH_ALL:
> +        case CMDQ_OP_TLBI_NH_VA:
> +            if ( !iommu_iotlb_flush_all(smmu->d, 1) )

This is quite a bigger hammer when the guest may only want to flush the 
S1 TLB for a single device. I am ok for now, but it would be good to add 
a TODO for optimizing it.

> +                break;
> +        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 0;
> +}
> +
>   static int vsmmuv3_mmio_write(struct vcpu *v, mmio_info_t *info,
>                                 register_t r, void *priv)
>   {
> @@ -104,9 +197,15 @@ static int vsmmuv3_mmio_write(struct vcpu *v, mmio_info_t *info,
>           break;
>   
>       case VREG32(ARM_SMMU_CMDQ_PROD):
> +        spin_lock(&smmu->cmd_queue_lock);
>           reg32 = smmu->cmdq.prod;
>           vreg_reg32_update(&reg32, r, info);
>           smmu->cmdq.prod = reg32;
> +
> +        if ( arm_vsmmu_handle_cmds(smmu) )
> +            gdprintk(XENLOG_ERR, "error handling vSMMUv3 commands\n");
> +
> +        spin_unlock(&smmu->cmd_queue_lock);
>           break;
>   
>       case VREG32(ARM_SMMU_CMDQ_CONS):
> @@ -326,6 +425,8 @@ static int vsmmuv3_init_single(struct domain *d, paddr_t addr, paddr_t size)
>       smmu->evtq.q_base = FIELD_PREP(Q_BASE_LOG2SIZE, SMMU_EVTQS);
>       smmu->evtq.ent_size = EVTQ_ENT_DWORDS * DWORDS_BYTES;
>   
> +    spin_lock_init(&smmu->cmd_queue_lock);
> +
>       register_mmio_handler(d, &vsmmuv3_mmio_handler, addr, size, smmu);
>   
>       /* Register the vIOMMU to be able to clean it up later. */

Cheers,

-- 
Julien Grall



From xen-devel-bounces@lists.xenproject.org Wed Apr 15 02:21:47 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 15 Apr 2026 02:21:47 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1282156.1564820 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wCpsh-0002q2-Si; Wed, 15 Apr 2026 02:21:31 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1282156.1564820; Wed, 15 Apr 2026 02: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 1wCpsh-0002pu-Nu; Wed, 15 Apr 2026 02:21:31 +0000
Received: by outflank-mailman (input) for mailman id 1282156;
 Wed, 15 Apr 2026 02:21:31 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <joan.bae@boeing.com>) id 1wCpsg-0002po-QL
 for xen-devel@lists.xenproject.org; Wed, 15 Apr 2026 02:21:31 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wCpse-000XhT-NX
 for xen-devel@lists.xenproject.org; Wed, 15 Apr 2026 04:21:29 +0200
Received: from [10.42.69.2] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <joan.bae@boeing.com>)
 id 69def5cb-e002-0a2a0a5209dd-0a2a450288b6-42
 for <xen-devel@lists.xenproject.org>; Wed, 15 Apr 2026 04:21:27 +0200
Received: from [130.76.144.163] (helo=clt-mbsout-02.mbs.boeing.net)
 by tlsNG-720697.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.0)
 (envelope-from <joan.bae@boeing.com>)
 id 69def625-42fa-0a2a45020019-824c90a39098-3
 for <xen-devel@lists.xenproject.org>; Wed, 15 Apr 2026 04:21:26 +0200
Received: from localhost (localhost [127.0.0.1])
 by clt-mbsout-02.mbs.boeing.net (8.15.2/8.15.2/DOWNSTREAM_MBSOUT) with SMTP id
 63F2LO2m009931; Tue, 14 Apr 2026 22:21:24 -0400
Received: from XCH16-09-08.nos.boeing.com (xch16-09-08.nos.boeing.com
 [144.115.66.156])
 by clt-mbsout-02.mbs.boeing.net (8.15.2/8.15.2/8.15.2/UPSTREAM_MBSOUT) with
 ESMTPS id 63F2Jh07008906
 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NO);
 Tue, 14 Apr 2026 22:19:43 -0400
Received: from XCH19-01-11.nos.boeing.com (144.115.67.131) by
 XCH16-09-08.nos.boeing.com (144.115.66.156) with Microsoft SMTP Server
 (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id
 15.1.2507.58; Tue, 14 Apr 2026 19:19:42 -0700
Received: from XCH19-EDGE-C02.nos.boeing.com (130.76.144.198) by
 XCH19-01-11.nos.boeing.com (144.115.67.131) with Microsoft SMTP Server
 (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id
 15.2.2562.37 via Frontend Transport; Tue, 14 Apr 2026 19:19:42 -0700
Received: from USG02-CY1-obe.outbound.protection.office365.us (23.103.199.178)
 by boeing.com (130.76.144.198) with Microsoft SMTP Server
 (version=TLS1_2, 
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.1748.39; Tue, 14 Apr
 2026 19:19:41 -0700
Received: from SA1P110MB1614.NAMP110.PROD.OUTLOOK.COM (2001:489a:200:196::15)
 by BN0P110MB1546.NAMP110.PROD.OUTLOOK.COM (2001:489a:200:185::12)
 with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9769.48; Wed, 15 Apr
 2026 02:19:40 +0000
Received: from SA1P110MB1614.NAMP110.PROD.OUTLOOK.COM
 ([fe80::452a:f17:6196:8976]) by SA1P110MB1614.NAMP110.PROD.OUTLOOK.COM
 ([fe80::452a:f17:6196:8976%4]) with mapi id 15.20.9769.046; Wed, 15 Apr 2026
 02:19: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=boeing-s1912 header.d=boeing.com header.i="@boeing.com" header.h="From:To:CC:Subject:Date:References:In-Reply-To"; dkim=pass header.s=selector1-boeing-onmicrosoft-com header.d=boeing.onmicrosoft.com header.i="@boeing.onmicrosoft.com" header.h="From:Date:Subject:Message-ID:Content-Type:MIME-Version:x-ms-exchange-senderadcheck"
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=boeing.com;
	s=boeing-s1912; t=1776219684;
	bh=mh3jw2nNypx/gjnyF2rTr4YGVZIzELOgxhSCK38qGjI=;
	h=From:To:CC:Subject:Date:References:In-Reply-To:From;
	b=ikFxk9BdwUsqJBWc5EtQWH9pcO+O2kBW6Me+Be91LaZjpj1lqC3HwEAXVL5cUspcz
	 QdX4iAzIwXAEZMGc9sK7Zr842f1PzAuaxZKNXFkngsSbr6/hCyjWoE4VGTog0HJPqh
	 2gNkfsNHucH9U3+pPEypTlk7ApLj+hN4D5aYUqeRjY4sXZNVN+80VO7FwwC+8LV8mL
	 3vAV7c2NgKRb4fR3gPu+hJOs0Zb4LgkL9wfqz/sDrci7BXuZw4a0xCDS/6/pUeXvAV
	 m6kxkjNLANp/IzJoS7Rh0VmS0gtjXC+sYv9zBVN1naRc4/hW77qQLFsLPbSkJO25Pf
	 eGKuo/77Q9G9Q==
ARC-Seal: i=1; a=rsa-sha256; s=arcselector5401; d=microsoft.com; cv=none;
 b=rqaHgzA3rsBF9fvGHuzwZoMehVmJAf9IIHmva8eM4/XXmMZhjtyQNGPlojFMEUuSP5EgytMNOZASYcX7gyhrsIflPICm2iVonfiNWRaP/3+A+eUv6GfSufYNOKhmlx9FAZd6rLsq9tMDa9W4ic6mDSll+Co75k4kZcBTrvyFk9wXAcmP/2TbcGKKfY9r7TlcxHmt0pIZi4yqViNO43znpfu57KlVuSpV1TN6RjSgdjJbo8q+Z+ww2eGouwWwkcPj5A4Xulu7pUt0OCc1LAa2mOvfDzbxe6A8+F+bq+Uq5OLsuks6bx9/sUCCPXOZ6ZR6WBBzZknXC8fwgAUN+QgUww==
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com;
 s=arcselector5401;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1;
 bh=mh3jw2nNypx/gjnyF2rTr4YGVZIzELOgxhSCK38qGjI=;
 b=lNapfPH99MhWizTyuamdF6iSBnvqjgLgBhEYwfdsQid4nwafUhcWMeQcNrOn5nZgSnGZfe9qxsFuSgM7W51OGXJW9c3S5r61c4036gTPiW5airgBULf6+pLOZCCY6Y3YVS9FZG2B0lLv8qNFBha6XVJLkTk899CNpvKzdE/lY9nNpRciSoW/KCSdzcIIixOpdER3W+3iMU6hReKaNkKkdedv5scYlkblTGrOj/hxKfohuLeqihbcwt6PTxWN/sGIffKFQqWJYfniN8GVcEm4zCZQqyHkzRYPEZ1gpQq1gOz5FoDnKBB31c4UVg2YZB2GGZ6YYsiqTSun4o2wEemlhQ==
ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass
 smtp.mailfrom=boeing.com; dmarc=pass action=none header.from=boeing.com;
 dkim=pass header.d=boeing.com; arc=none
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
 d=boeing.onmicrosoft.com; s=selector1-boeing-onmicrosoft-com;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck;
 bh=mh3jw2nNypx/gjnyF2rTr4YGVZIzELOgxhSCK38qGjI=;
 b=PkIoEgUpdZYZtkmhz+1hk4coseO/sRhJwjDlGafwFj6hVHSF/VaqLSMQI9nug1+pAdLb8x0Zbs4LgArNJlkBGJwSLRABR8pVEY9TgAzrVciShhqeVegtAcoP0OH01xok7uoNnooeqUFE5fZ41dGerSfDFhra/KprbVYL6zYn4EI=
From: "Bae, Joan" <joan.bae@boeing.com>
To: Julien Grall <julien@xen.org>,
        "xen-devel@lists.xenproject.org"
	<xen-devel@lists.xenproject.org>
CC: Stefano Stabellini <sstabellini@kernel.org>,
        Bertrand Marquis
	<bertrand.marquis@arm.com>,
        Michal Orzel <michal.orzel@amd.com>
Subject: RE: [EXTERNAL] Re: [XEN PATCH] xen/common: validate shared memory
 guest address overlap with guest RAM
Thread-Topic: [EXTERNAL] Re: [XEN PATCH] xen/common: validate shared memory
 guest address overlap with guest RAM
Thread-Index: AQHcy6n8SUKFV8ls/kGsGA5q0Nlt0bXdycCAgAGZ18A=
Date: Wed, 15 Apr 2026 02:19:39 +0000
Message-ID: <SA1P110MB16142073986E51B11EF98CD9FF22A@SA1P110MB1614.NAMP110.PROD.OUTLOOK.COM>
References: <59dcd094173791926fff212f3f2b86df50b0dc12.1776060772.git.joan.bae@boeing.com>
 <cfe8b6ae-2f52-47c4-862d-52d648d41895@xen.org>
In-Reply-To: <cfe8b6ae-2f52-47c4-862d-52d648d41895@xen.org>
Accept-Language: en-US
Content-Language: en-US
X-MS-Has-Attach:
X-MS-TNEF-Correlator:
authentication-results: dkim=none (message not signed)
 header.d=none;dmarc=none action=none header.from=boeing.com;
x-ms-publictraffictype: Email
x-ms-traffictypediagnostic: SA1P110MB1614:EE_|BN0P110MB1546:EE_
x-ms-office365-filtering-correlation-id: e8e60b48-e995-490e-c9f0-08de9a9572cc
x-ms-exchange-senderadcheck: 1
x-microsoft-antispam: BCL:0;ARA:13230040|1800799024|366016|56012099003|18002099003|22082099003|38070700021;
x-microsoft-antispam-message-info: WbFYTB371mM0QeTu25pgMGg8KLpfeLf3Lh0j/xXryUnlxVKLuujjNllJka6DmdWN4qaG3YeUJ65n5iLphQYXOgZ5fSF6sGABzLLd0m7p/l8wyVR3MOSFDhyyXtjtI6IBjZ1PfhbrhD/EP5WJJqgzoJfdrMzgwRflMlHNw13NSoatrH2Erd7aOZZwwJT7U/GsEukVdAwIQ0sBJXn2k4VW4lTkhe/KWWLVXxVLCmgU6vj0lNzj7R63V8MH1iwo6GH2yYUp96f7JpwzPZEeTHfIN/6zJZduap6KDgy1NasRqcfbDsKIjDszQ4wouXkUQmd2HkpozqWFRdTairUpwzQW8pzv55q0zO9c5S5VSpxeG+oZXLYrGhTV8aGsSSi1R8mgUO4ouOysCaaJLnIBG8AK454cTS4tUOjfYt3zT+tKCXHuFCuivjSz6oc+2SWxJLJkXz5raAXNR98F5ij0w+8aqmMpbMPmDLRaBU1xYdjsdZXwuyKS2q37UkdWde7/vPWjP8lKnsTSfAJNAI/KqtOy7JY/MHJ9LBzs6Hw66XjFvS8aOwwmBZYTYdT1Ky9k3mvbcJ4CL+ts+YJGxAtjTorktpLn4119fwCGAasuwyZLTnWvBUABvWS+zo+1szWJac8q/2r4zk3Twh43AsvlnVhZfHcOUWxln45xw0IqNjq9nzCIcO0fMnUBvNXdLjNgB+MaY4ofxXg2CSqdeUmfDJyPYBJumkDiFfPuS6/Z9T/4yCmkcfGXLXciTuIMDua27JGsQ7UsUY6ucXmX34dO1E+UE55c23wHapsGiky+Hp7Ea0w=
x-forefront-antispam-report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:SA1P110MB1614.NAMP110.PROD.OUTLOOK.COM;PTR:;CAT:NONE;SFS:(13230040)(1800799024)(366016)(56012099003)(18002099003)(22082099003)(38070700021);DIR:OUT;SFP:1101;
x-ms-exchange-antispam-messagedata-chunkcount: 1
x-ms-exchange-antispam-messagedata-0: =?utf-8?B?eHVUOEYzUVZ2d1lZQU9uV3ZhMmp6ZjhVWjE3Y1RhOUM3bWt6VVJJaEdHVkVo?=
 =?utf-8?B?ZkN3alRXWXR5OXB3WHVBMVlPTlY3VDlHd2prblJXejN4aUFRVkJBQklQMjR5?=
 =?utf-8?B?WGVOUWxsem82WmpFbEQ0WTBCcG51N0ZqUEg4ajEvT0VkdGM1dnRzQ29MdFRD?=
 =?utf-8?B?bVZyaXErSm8xaEZxTktKMFJTWTBGc2xnVEEzN0Zzdm5RbTYySFVURkNYaFd1?=
 =?utf-8?B?YnF1MGtDUWc3enFKZ295ekMvVGtMYU0xSW1wdFVUbG9LYmR6U0tSNkRZamRl?=
 =?utf-8?B?ZzhjN3Q4NWRVY0cvMGxsWWVxdXRldkhOa1pmMk9VUVk0cVJjUHhoNUUrWklH?=
 =?utf-8?B?QW1FcHdka0hKLzVYaHUzY1ZmcGc0VXpremR6Q0h4SFQyTHp2bldSQ2xXRk56?=
 =?utf-8?B?ZUJRNmQrZ3FYTGJzVU5BbGZpYVpyNEwzanhtU25BUEh1YTlJNUZQT2NpcGxj?=
 =?utf-8?B?bC85YnZab3lJZ0ZxRmhtcngxRG9ST2pYbkhzYmZscVBrZ0ZnU21ucmZQVG44?=
 =?utf-8?B?Sy9JZ21DdzNPOG5XdGRQOVNYelRqWm9IMEtscVY0MXlWVGMxalgrWDArdkVI?=
 =?utf-8?B?VzMxb3JCZi9hc0Qrd1F5QkVSZURMNXJ6WTBqNGRuSEE4SXIvdUVIbjNzQjZh?=
 =?utf-8?B?bnpZd0ZrVHF6YmFFNGVvM3R5ckx6WDVnRWZKR054bklNYXlFbnRNblBvTFp5?=
 =?utf-8?B?LzRDd2QvOERwZWV1bURtMXV5MXUyc1NOamdObHphRmNMN3dEdHBqUTN3SXo2?=
 =?utf-8?B?ZzR0Z3BMSkdUWjBJYkxYaW5KYllOMXh1YXljUUtkeXlYT1BQOU1Ha3NSWnJ3?=
 =?utf-8?B?VlprdTFCODYwcTJZaElRUUlQMkE3WjZ0aXBsa1FVbE54NFl1MkxhWnl6aWdR?=
 =?utf-8?B?WmE4ZjBsZjh1bUs5VGJjOGd4blF3T3ZhNDBnd1BHYkVzOGdvK1NjOTZPQ1Z5?=
 =?utf-8?B?dVRlcXVwcitVdzdMTGpPeGRDYWhCU0c2ajNlNURkMGhhNzFya0pRb3lLRzhD?=
 =?utf-8?B?ZHZIc3NEcjBncVlYcGtXazFsaWgwZHBIcithSDBKd3hWeXN3TCtBQjArZ04w?=
 =?utf-8?B?N2FvaG85WUlZYVBTMVFXNFk4VnNxWnVZOW1EOFpXMEZMM1VFcjFwV0RtUGVa?=
 =?utf-8?B?SWV3QzUzTHZWcVczNSt4bGhpUVJ0a0RBcG5reHpDRFpDZkk5ZW8vdW1GWDZo?=
 =?utf-8?B?V20zZGE1d1g3VXZ5QVBpdERDKzdTMytNOHhtaFJjVEM5VDZSQllVWHZYRVhS?=
 =?utf-8?B?OUVtaWgwclVLQ3lWcmR0MllGY0FKZWhoRUZRWm42bmVsdjd4UlYycTJtOU1p?=
 =?utf-8?B?OEVaRGxmQVdxZFEzVmxub3p2ejVHVjhTQ05YRTZMelJ4Y0VxeU1pNEtLOTRv?=
 =?utf-8?B?Uk1ZUWwxL0JyemVsajVScFI5OWxrWFVuakVRbndSSnp3clR6SVVrTWFKSmtp?=
 =?utf-8?B?T3JiYjZENzZJbHBxWmlGM0FWTy9tK1JOeGh3VUUrUnBPdzJmVmo4dUpxS1Jx?=
 =?utf-8?B?RDZxTFVIVzdZQ2k0KzhrZGVDUnBFZHNMbDMxSlNkSWh2WkprUFQ4bUU0OFQ5?=
 =?utf-8?B?RTZLR09rSlJQTnJGTWdXVEE0Z0djSU5nemJvb2JxLzJlUmdDMkhwU1VWL05L?=
 =?utf-8?B?N3V4NXRzU2M4bTZNRzJ1UnVrVFA5dzhVN3BOakNCM0FGejMrc3VZT3JxOEE1?=
 =?utf-8?B?SDJxUDd6dkpVWjZQTW84MU9oa2NtZTBOcHE3SHlNM2I5bUhKa1lNYkFDekd6?=
 =?utf-8?B?eTJjMDFwbk1PSUxHNjVTb3FUMlQ4b09wdlRiS1BxMHhTYmVvZDh5OFJzMzU2?=
 =?utf-8?B?UXRhTm1VSndIc3JyUHVjT3JnUUdPVlpXeUFLNEFDbVJQTmt2dlBOZGt3OXJR?=
 =?utf-8?B?QitNNWVNY3lQNjRDUmdnbDBCaHpEWTg5TW1hWllpUis0MW53dExDY0hiWjk0?=
 =?utf-8?B?WlNCbGZSYks2L2c5N0xOaDJKeVRDNU9Cd2pGMlJuZzBueEVOY0pDUCthMXdh?=
 =?utf-8?B?UGVzOURWNXlmanllRXFlNThaSS9oTXpTN0lSVTF3WWpDS0ZDZDJqT05PM0xR?=
 =?utf-8?B?aWpQQ2c1QW1VNlozRDRYTHplMmpTMHdIUFpMNDAzN1lPR2FaYlNGb1ZBTWd5?=
 =?utf-8?B?bTczcDZaZnptZ1JiUVJOWGFnVFF0T1YycVd1eE95MTlLdHVSU2FWY1ZERnM5?=
 =?utf-8?Q?ky3v/A1Nh77aK0vy5qCs5eZhmN6iQQkfiHBnvEu38qnT?=
Content-Type: text/plain; charset="utf-8"
Content-Transfer-Encoding: base64
MIME-Version: 1.0
X-MS-Exchange-CrossTenant-AuthAs: Internal
X-MS-Exchange-CrossTenant-AuthSource: SA1P110MB1614.NAMP110.PROD.OUTLOOK.COM
X-MS-Exchange-CrossTenant-Network-Message-Id: e8e60b48-e995-490e-c9f0-08de9a9572cc
X-MS-Exchange-CrossTenant-originalarrivaltime: 15 Apr 2026 02:19:39.9633
 (UTC)
X-MS-Exchange-CrossTenant-fromentityheader: Hosted
X-MS-Exchange-CrossTenant-id: bcf48bba-4d6f-4dee-a0d2-7df59cc36629
X-MS-Exchange-Transport-CrossTenantHeadersStamped: BN0P110MB1546
X-OriginatorOrg: boeing.com
X-TM-AS-GCONF: 00
X-purgate-ID: tlsNG-720697/1776219687-46D20CD1-23388831/0/0
X-purgate-type: clean
X-purgate-size: 3700

SGkgSnVsaWVuLA0KDQpUaGFuayB5b3UgZm9yIHRoZSByZXZpZXcuIEkgYWdyZWUgdGhhdCB0aGUg
b3ZlcmxhcCBpc3N1ZSBpcyBub3QgbGltaXRlZCB0byBzaGFyZWQgbWVtb3J5IG92ZXJsYXBwaW5n
IHdpdGggUkFNLiBJdCBjb3VsZCBoYXBwZW4gd2l0aCBhbnkgUDJNIG1hcHBpbmcgZHVyaW5nIGRv
bWFpbiBjb25zdHJ1Y3Rpb24uDQoNCkkgcmVzZWFyY2hlZCB0aGUgY2FsbGVycyBvZiBwMm1fc2V0
X2VudHJ5KCkuIEF0IGEgaGlnaGVyIGxldmVsLCBwMm1faW5zZXJ0X21hcHBpbmcoKSBjYWxsZXJz
IGNhbiBiZSBjYXRlZ29yaXplZCBpbnRvIHR3byBncm91cHM6IHJ1bnRpbWUgaHlwZXJjYWxscyBh
bmQgZG9tYWluIGNvbnN0cnVjdGlvbi4NCg0KUnVudGltZSBoeXBlcmNhbGxzIHN1Y2ggYXMgWEVO
TUVNX3BvcHVsYXRlX3BoeXNtYXAgcmVseSBvbiBvdmVyd3JpdGluZyBleGlzdGluZyBtYXBwaW5n
cywgc28gdGhleSBtdXN0IGFsbG93IGl0LiBPbiB0aGUgb3RoZXIgaGFuZCwgZG9tYWluIGNvbnN0
cnVjdGlvbiBjYWxsZXJzIHN1Y2ggYXMgZ3Vlc3RfcGh5c21hcF9hZGRfcGFnZXMoKSBzaG91bGQg
bm90IGFsbG93IG92ZXJ3cml0aW5nIGV4aXN0aW5nIG1hcHBpbmdzLg0KDQpTaW5jZSBib3RoIGNh
dGVnb3JpZXMgZGVwZW5kIG9uIHAybV9zZXRfZW50cnkoKSwgYWRkaW5nIGEgYmxhbmtldCBjaGVj
ayB0aGVyZSB3b3VsZCBicmVhayB0aGUgcnVudGltZSBoeXBlcmNhbGwgcGF0aHMuDQoNCk15IHBs
YW4gZm9yIHYyIGlzIHRvIGFkZCBhIGNoZWNrZWQgdmFyaWFudCBvZiBwMm1faW5zZXJ0X21hcHBp
bmcoKSAobmFtZWQgYXMgcDJtX2luc2VydF9tYXBwaW5nX2NoZWNrZWQpIHRoYXQgdmVyaWZpZXMg
bm8gZXhpc3RpbmcgbWFwcGluZyBpcyBwcmVzZW50IGJlZm9yZSBpbnNlcnRpbmcuIERvbWFpbiBi
dWlsZCBwYXRocyB3b3VsZCB1c2UgdGhlIGNoZWNrZWQgdmVyc2lvbiwgd2hpbGUgcnVudGltZSBo
eXBlcmNhbGwgcGF0aHMgcmVtYWluIHVuY2hhbmdlZC4NCg0KSSBhbHNvIG5vdGljZWQgYSByZWxh
dGVkIFRPRE8gaW4gcDJtLmg6DQovKiBUT0RPOiBBZGQgYSBjaGVjayBpbiBfX3AybV9zZXRfZW50
cnkoKSB0byBhdm9pZCBjcmVhdGluZyBhIG1hcHBpbmcgaW4NCiogYXJjaF9kb21haW5fY3JlYXRl
KCkgdGhhdCByZXF1aXJlcyBwMm1fcHV0X2wzX3BhZ2UoKSB0byBiZSBjYWxsZWQuIC8NCg0KVGhp
cyBzZWVtcyB0byBiZSBhZGRyZXNzaW5nIGEgc2ltaWxhciBjb25jZXJuLiBXb3VsZCB0aGUgYXBw
cm9hY2ggb2YgYSBjaGVja2VkIHdyYXBwZXIgYXQgdGhlIHAybV9pbnNlcnRfbWFwcGluZygpIGxl
dmVsIGJlIGFjY2VwdGFibGUsIG9yIHdvdWxkIHlvdSBwcmVmZXIgdGhlIGNoZWNrIGF0IGEgZGlm
ZmVyZW50IGxldmVsPw0KDQpUaGFuayB5b3UsDQpKb2FuDQoNCj4gRVhUIGVtYWlsOiBiZSBtaW5k
ZnVsIG9mIGxpbmtzL2F0dGFjaG1lbnRzLg0KPiANCj4gSGkgSm9hbiwNCj4gDQo+IFRoYW5rIHlv
dSBmb3IgdGhlIHBhdGNoLg0KPiANCj4gT24gMTQvMDQvMjAyNiAwOTo1OSwgSm9hbiBCYWUgd3Jv
dGU6DQo+PiBDdXJyZW50bHksIHByb2Nlc3Nfc2htKCkgZG9lcyBub3QgY2hlY2sgd2hldGhlciB0
aGUgZ3Vlc3QgcGh5c2ljYWwNCj4+IGFkZHJlc3Mgb2YgYSBzaGFyZWQgbWVtb3J5IHJlZ2lvbiBv
dmVybGFwcyB3aXRoIHRoZSBkb21haW4ncyBhbGxvY2F0ZWQNCj4+IFJBTSBiYW5rcy4gTmVpdGhl
ciBwcm9jZXNzX3NobSgpIG5vciBwMm1fc2V0X2VudHJ5KCkgY2hlY2tzIGZvcg0KPj4gZXhpc3Rp
bmcgbWFwcGluZ3MsIHNvIHRoZSBSQU0gbWFwcGluZyBpcyBzaWxlbnRseSBvdmVyd3JpdHRlbiBp
ZiBhIHVzZXINCj4+IHNwZWNpZmllcyBhIGd1ZXN0IHBoeXNpY2FsIGFkZHJlc3MgdGhhdCBmYWxs
cyB3aXRoaW4gdGhlIGd1ZXN0IFJBTQ0KPj4gcmFuZ2UuIFNpbmNlIGNvbnN0cnVjdF9kb21haW4o
KSBsb2FkcyB0aGUga2VybmVsIGFmdGVyIHByb2Nlc3Nfc2htKCksDQo+PiB0aGUga2VybmVsIGNh
biBlbmQgdXAgaW4gc2hhcmVkIG1lbW9yeSBwYWdlcy4gVGhpcyBjYW4gY2F1c2U6IC0gQW5vdGhl
cg0KPj4gZG9tYWluIGNvcnJ1cHRpbmcgdGhlIGtlcm5lbCB2aWEgc2hhcmVkIG1lbW9yeSB3cml0
ZSAtIFNpbGVudCBndWVzdA0KPj4gY3Jhc2ggd2l0aCBubyBlcnJvciBtZXNzYWdlIGZyb20gWGVu
DQo+IA0KPiBUaGlzIHNlZW1zIHRvIGJlIHNvbHZpbmcgb25lIHNwZWNpZmljIGlzc3VlIChSQU0g
Y2xhc2hpbmcgd2l0aCBzaGFyZWQNCj4gbWVtb3J5KSBidXQgSSBiZWxpZXZlIHRoaXMgY291bGQg
YWxzbyBoYXBwZW4gd2l0aCBvdGhlciBraW5kIG9mIG1hcHBpbmdzDQo+IGJlY2F1c2UsIGFzIHlv
dSBzYWlkLCBwMm1fc2V0X2VudHJ5KCkgZG9lc24ndCBjaGVjayBhbnkgb3ZlcmxhcC4NCj4gDQo+
IFNvIEkgd291bGQgcmF0aGVyIHByZWZlciBpZiB3ZSBzb2x2ZSB0aGUgcHJvYmxlbSBvbmNlIGFu
ZCBmb3IgYWxsLiBUaGlzDQo+IHdvdWxkIG1lYW4gbW9kaWZ5aW5nIHAybV9zZXRfZW50cnkoKSAo
b3Igb25lIG9mIGl0cyB0b3AgY2FsbGVyKS4NCj4gQWx0aG91Z2gsIHdlIHdvdWxkIG5lZWQgdG8g
YmUgY2FyZWZ1bCB0byBub3QgYnJlYWsgbWVtb3J5IGh5cGVyY2FsbHMNCj4gd2hpY2ggbWF5IHJl
bHkgb24gb3ZlcndyaXRpbmcgZXhpc3RpbmcgbWFwcGluZ3MuDQo+IA0KPiBDaGVlcnMsDQo+DQoN
ClRoYW5rcywNCkpvYW4gQmFlDQoNCg0K


From xen-devel-bounces@lists.xenproject.org Wed Apr 15 07:35:38 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 15 Apr 2026 07:35:38 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1282190.1564841 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wCumP-0005DI-W4; Wed, 15 Apr 2026 07:35:21 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1282190.1564841; Wed, 15 Apr 2026 07:35: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 1wCumP-0005DB-T1; Wed, 15 Apr 2026 07:35:21 +0000
Received: by outflank-mailman (input) for mailman id 1282190;
 Wed, 15 Apr 2026 07:35:20 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92) id 1wCumO-0005D5-Jc
 for xen-devel@lists.xenproject.org; Wed, 15 Apr 2026 07:35:20 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wCumN-008Pcn-6Y
 for xen-devel@lists.xenproject.org; Wed, 15 Apr 2026 09:35:19 +0200
Received: from [10.42.69.11] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <oleksii.kurochko@gmail.com>)
 id 69df3fb1-e002-0a2a0a5209dd-0a2a450bca50-38
 for <xen-devel@lists.xenproject.org>; Wed, 15 Apr 2026 09:35:19 +0200
Received: from [209.85.221.46] (helo=mail-wr1-f46.google.com)
 by tlsNG-42698a.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.0)
 (envelope-from <oleksii.kurochko@gmail.com>)
 id 69df3fb7-bca8-0a2a450b0019-d155dd2ec489-3
 for <xen-devel@lists.xenproject.org>; Wed, 15 Apr 2026 09:35:19 +0200
Received: by mail-wr1-f46.google.com with SMTP id
 ffacd0b85a97d-43cfac48bc7so4446557f8f.0
 for <xen-devel@lists.xenproject.org>; Wed, 15 Apr 2026 00:35:19 -0700 (PDT)
Received: from [192.168.1.6] (user-109-243-69-121.play-internet.pl.
 [109.243.69.121]) by smtp.gmail.com with ESMTPSA id
 ffacd0b85a97d-43ead33d518sm2955315f8f.6.2026.04.15.00.35.17
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Wed, 15 Apr 2026 00:35:18 -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=20251104 header.d=gmail.com header.i="@gmail.com" header.h="Content-Transfer-Encoding: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=20251104; t=1776238518; x=1776843318; darn=lists.xenproject.org;
        h=content-transfer-encoding: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;
        bh=iHEDNAm0auYUBYZibOP5HqlZhcFEDb2kjI8zEAv+1+c=;
        b=qQlZtOjUvDbMgM1DQXqc4ODrfi5N91RhtrhGkyMN5TM3OfwWwm6x4bIiNal3/U6hlo
         FuVAUeEqllnxenXKJs3oZGdTdx2BCyS5RwQOVVS6lB15RhH7YEmAdsvHxPCylFNlZP20
         XhjBZ+pdFyvGwniEBahI3/tSkFjh5rkH/u+cHACOr4VRz3knlP/YBAr3JCrEzypvjZRG
         NLAGHO/BGcsnWI/onc1erh7jepnWaK+WftZ8L94ZKMWcLLie2UhqgZ8y/ZEhnb4vwDsv
         VIoKjtftQN3E7LCWsA54uEaaAwpJ+gqoAyUUQLr2nHd/2QPSbI9TGVa2Rtbx1AFhdDTL
         Bb/w==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20251104; t=1776238518; x=1776843318;
        h=content-transfer-encoding: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;
        bh=iHEDNAm0auYUBYZibOP5HqlZhcFEDb2kjI8zEAv+1+c=;
        b=Ysn8OrHA0775yDMs+VwSrm6/sW3jp/KJn7/fKHCO931RD6Sq/wdnCeZNdvx3jdENVj
         op7Lp4c6+4DRIYnG9uSFnBZ08CLFhuqJiCK1Dqyyu4S04xZ3Zg93HxE9X3P6JNK/V2Wn
         U6ENGgvCBE7nhTm0g9ThoCK5dAuBTtQUV1Ge0J+zKmKUtuaP7sQe/VrGS4gd3aIMN3s0
         aKL2jFq+EXkVX7HQsJmMENbOuKiNgMMfaiqp+eXYo5ANgw/uXnpBZBhwMkXcte4r7OX+
         KZ2STl8iGnfzP+92VhruXNpGwDufROCpooNwDsc4HoXFM8JPBCsQX6NrRTGXDQPaBNKz
         5/9Q==
X-Forwarded-Encrypted: i=1; AFNElJ8E/d/NZiy7BbK3b4ke8f8RnZAXvRWHCU76cpHYsSd03BzA6wK6m/etEmaQLD7IAWirQdebA7vU7uM=@lists.xenproject.org
X-Gm-Message-State: AOJu0YzWapHE0wSNZQBBNmeEJkgBNcMg5TrGv/ZxoQs/GpJ01Nkagh6f
	hSLfN7rxVifH4TQzed/F170MSsuKEb7NEpV65OkrI9bxmbHmRnf60E75
X-Gm-Gg: AeBDies/wkcUjy+TDQAY+cBL99uKU8hvdlWJiv+AkAHNJrXLx2JZBVJQX9SrsY4O1Wg
	w0uflrEea8QJMj+Xoclm70TfXeaVlx8YyUB3hFcu7xUalhm8xjuXAk6N5R3+CL2XBj0DlKqgZqj
	kmfTBZbf1UusEHk9tGO+xJv9Jzma/2PM0gsPQz3ilO0Iiufm0KOgjkWFnmFWH4fkfL04svmWyM4
	3ggmOp+0wBSKn7mBlzTEXygHYapuhvLXjh97WraDqpkefJF1m5jAUJ57MvnNvZPx4UWldmNzmm5
	qa6IVF7C9LXRQVECHXipfiVCUUZSxFHJmh+57W8p6w53lCBRmgQwtd9v+jmAk7wUqaajL772/J6
	/uVp2U3aGN3HHUiaDxdX9zs1bDe3WGSXQJP9u9SItihGvEBsO+gjPsa8G0oAVxS4Brm5rtbMIbS
	2naNu1uvGu3pkjODJDx26hAxGnWq403wLNvyHbmM1bcTmZrpDY5mHLFt/ZqVlXfJu//PJEn4FKV
	pycfBfMNkY95A==
X-Received: by 2002:a5d:5f44:0:b0:439:ca9b:1f61 with SMTP id ffacd0b85a97d-43d6428a2a2mr29032519f8f.17.1776238518407;
        Wed, 15 Apr 2026 00:35:18 -0700 (PDT)
Message-ID: <b3468705-a05e-4a45-bafb-de395dbfad4f@gmail.com>
Date: Wed, 15 Apr 2026 09:35:16 +0200
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH v1 18/27] xen/riscv: add vaplic access check
From: Oleksii Kurochko <oleksii.kurochko@gmail.com>
To: Jan Beulich <jbeulich@suse.com>
Cc: Romain Caritey <Romain.Caritey@microchip.com>,
 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.pau@citrix.com>,
 Stefano Stabellini <sstabellini@kernel.org>, xen-devel@lists.xenproject.org
References: <cover.1773157782.git.oleksii.kurochko@gmail.com>
 <0fc9adf790d4f981e8117bd9759c7e64bb11e439.1773157782.git.oleksii.kurochko@gmail.com>
 <0519fb8a-48e3-4f36-8d6c-a966080ffb55@suse.com>
 <f0503bd6-3ea3-42da-9211-02836addc176@gmail.com>
Content-Language: en-US
In-Reply-To: <f0503bd6-3ea3-42da-9211-02836addc176@gmail.com>
Content-Type: text/plain; charset=UTF-8; format=flowed
Content-Transfer-Encoding: 8bit
X-purgate-ID: tlsNG-42698a/1776238519-EEB482A1-8FD15938/10/73395122804
X-purgate-type: spam
X-purgate-size: 955



On 4/14/26 1:45 PM, Oleksii Kurochko wrote:
>>> +static int cf_check vaplic_is_access(const struct vcpu *vcpu,
>>> +                                     const unsigned long addr)
>>> +{
>>> +    const struct vaplic *vaplic = to_vaplic(vcpu->domain->arch.vintc);
>>> +    const struct aplic_priv *priv = vaplic->base.info->private;
>>> +    const paddr_t paddr_end = priv->paddr_start + priv->size;
>>> +
>>> +    /* check if it is an APLIC access */
>>> +    if ( priv->paddr_start <= addr && addr < paddr_end )
>>
>> ... use that here? Or asked differently, again: Where's the 
>> virtualization,
>> i.e. the abstraction away from host properties?
> 
> With the current use case it was easier to choose such approach then 
> provide the full abstraction.

BUt specifically here even with the current approach there is no too 
much sense to check MMIO of real APLIC.

~ Oleksii


From xen-devel-bounces@lists.xenproject.org Wed Apr 15 07:50:14 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 15 Apr 2026 07:50:14 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1282199.1564850 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wCv0k-0007uU-4G; Wed, 15 Apr 2026 07:50:10 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1282199.1564850; Wed, 15 Apr 2026 07: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 1wCv0k-0007uN-1k; Wed, 15 Apr 2026 07:50:10 +0000
Received: by outflank-mailman (input) for mailman id 1282199;
 Wed, 15 Apr 2026 07:50:08 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92) id 1wCv0i-0007uH-4O
 for xen-devel@lists.xenproject.org; Wed, 15 Apr 2026 07:50:08 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wCv0f-009SHF-CZ
 for xen-devel@lists.xenproject.org; Wed, 15 Apr 2026 09:50:06 +0200
Received: from [10.42.69.2] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <oleksii.kurochko@gmail.com>)
 id 69df432e-5cb7-0a2a0a5109dd-0a2a450286d2-6
 for <xen-devel@lists.xenproject.org>; Wed, 15 Apr 2026 09:50:06 +0200
Received: from [209.85.221.41] (helo=mail-wr1-f41.google.com)
 by tlsNG-720697.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.0)
 (envelope-from <oleksii.kurochko@gmail.com>)
 id 69df432e-42fa-0a2a45020019-d155dd29a8bc-3
 for <xen-devel@lists.xenproject.org>; Wed, 15 Apr 2026 09:50:06 +0200
Received: by mail-wr1-f41.google.com with SMTP id
 ffacd0b85a97d-43d70c30767so2014780f8f.0
 for <xen-devel@lists.xenproject.org>; Wed, 15 Apr 2026 00:50:06 -0700 (PDT)
Received: from [192.168.1.6] (user-109-243-69-121.play-internet.pl.
 [109.243.69.121]) by smtp.gmail.com with ESMTPSA id
 ffacd0b85a97d-43ead33d6desm3437664f8f.3.2026.04.15.00.50.04
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Wed, 15 Apr 2026 00:50:05 -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=20251104 header.d=gmail.com header.i="@gmail.com" header.h="Content-Transfer-Encoding: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=20251104; t=1776239406; x=1776844206; darn=lists.xenproject.org;
        h=content-transfer-encoding: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;
        bh=yr8dJFrwU5yb3+vX6Kokpw1l7MzGMIO02Sxm13Ouz1k=;
        b=kZOwhvEX7jzRxXIFvwtUv1F02taufBdubjZDnKfU28B7DTTAP5FKv9RrwkW9SsVES3
         qW6hcR3KHvq3bMSVOJFx3CxgHE6LPZnk3Usy2qn9Olf1qAyXGbzoDCe6takfdXAWj3Fw
         74EyJi5zSG5J0dCpZs+z7dL1vP+Z4Qh2LjZHEp31YlrZSwSPWzNuSHJiRsrG6sOYaHux
         3a0gyv5QaAIUrGq34SVJ/Qo1oCUyZNAmAtOUYbqvNoRlgjpDA7wiNSAgzwhco87EBuhX
         LyPYogoVR+h2/9+AFl8REnjqu63QA721z0LZkOOoj3K4670oYLJ6k1i0X94qDM2HSDMr
         K7Ew==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20251104; t=1776239406; x=1776844206;
        h=content-transfer-encoding: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;
        bh=yr8dJFrwU5yb3+vX6Kokpw1l7MzGMIO02Sxm13Ouz1k=;
        b=NI+Q1wfn7RdRTWuqk2hQXUBKsTxPWZ0d5FEz0pCTRiwexnAlI9jiwOv6odMiXEpFGF
         +9Yfo1FhHsGmglkMAEQdZKP1HvUX4C9vaqFOd0PvVyQPo3MdsJrG6rWzY2SMcYBKu+IK
         9uS7bINwrBbkBikLbMSBNvHnHFZkZ2hqjRoJuII3BP480i+MTyMPmYg7YZWDZ5T9IGn8
         OoIke+mGG82yRpfplt2r7WP1Y4LzjwnongHPWNvj7MJIERqmh8b0IAgm/vTXKEDk6TmX
         56NVXlNsYpREuQtfoA4hMo+jF8EySZBDkGYBl3BuL6/RDK9R36B0Ha5lcJUvBRGJtB1N
         TuIg==
X-Forwarded-Encrypted: i=1; AFNElJ8qrLt2CXum2+splm3wKEuC39yMIMxpMwK/IZwZ0XkZFW0RFokxK9ecT1tefmH5nBu3DaNuPs3SLW8=@lists.xenproject.org
X-Gm-Message-State: AOJu0YyUA+q3ANedsdJbelvoYkXRgc8hggmxm0Up+/4em+6RiFxsZ8M8
	CN3+gocviWcUvozIO/2d42zgVfah6UGW6rYV8ccEaIVMmac0bTWK4XVu
X-Gm-Gg: AeBDieta3qaAK7NGXmQxQo/HHBiMCJ9QzBRuCIhO6IBdeQY3c9teBvVZ2PswZtvPjLw
	b2PiJiX3uvA4zPTSqT2klxkyjLSzYQIwTsCT8EUgjXbmb1FwSnkarB8FFOkLFUjh/ihtSAkOB4r
	qb5LoQBAp0gSik2nBg0TWFCYkPNV6dwFNoL4Dmc1AsdkCd0j5AiNoxBEqaTW3GcX1EntZEjxtjf
	2Bb+tgjXD7E7wPkFLtnC0RNk/SJltwQvqmiNVCdXTIuLh7RqoBsflajHz+sYqc2DTSsNx5kw6IC
	+G7FtigO7KCpiMlgUpUiPj5jUOQdTEz+DXwLLg5GJU+AGwTORNwt4TW+zRdAHgJRQIfO+RK/NOx
	HT/P8L/H+x/Pn5lsrzKVomS+H/2EJVwBUHz9rMErO9hFI3kMPQdoymvi2ZIDzViFc/X0oSpqJDO
	A8ZSCKZ3m7BRWHRrzbKibI1yN8tsXS7AIEuLCfrMUnJ9Dk3ZH5ysR5LViqFLX5iY5cvpqZq2sL9
	pvZ2zGMuWf1+g==
X-Received: by 2002:a05:6000:2087:b0:43d:779e:afa8 with SMTP id ffacd0b85a97d-43d779eb19amr17848318f8f.16.1776239405883;
        Wed, 15 Apr 2026 00:50:05 -0700 (PDT)
Message-ID: <6f4b3a0b-8c13-4c54-afa1-2893aa967254@gmail.com>
Date: Wed, 15 Apr 2026 09:50:04 +0200
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH v1 21/27] xen/riscv: introduce (de)initialization helpers
 for vINTC
To: Jan Beulich <jbeulich@suse.com>
Cc: Romain Caritey <Romain.Caritey@microchip.com>,
 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.pau@citrix.com>,
 Stefano Stabellini <sstabellini@kernel.org>, xen-devel@lists.xenproject.org
References: <cover.1773157782.git.oleksii.kurochko@gmail.com>
 <61311834fef7cf8a736a8fa972b6461bbfd46e6d.1773157782.git.oleksii.kurochko@gmail.com>
 <cf20ebc8-ff58-456d-a7f6-c844cb427306@suse.com>
Content-Language: en-US
From: Oleksii Kurochko <oleksii.kurochko@gmail.com>
In-Reply-To: <cf20ebc8-ff58-456d-a7f6-c844cb427306@suse.com>
Content-Type: text/plain; charset=UTF-8; format=flowed
Content-Transfer-Encoding: 7bit
X-purgate-ID: tlsNG-720697/1776239406-45333CD1-4E509466/10/73395122804
X-purgate-type: spam
X-purgate-size: 1176



On 4/2/26 4:58 PM, Jan Beulich wrote:
> On 10.03.2026 18:08, Oleksii Kurochko wrote:
>> @@ -96,4 +97,7 @@ void intc_handle_external_irqs(struct cpu_user_regs *regs);
>>   
>>   int intc_make_domu_dt_node(const struct kernel_info *kinfo);
>>   
>> +int domain_vintc_init(struct domain *d);
>> +void domain_vintc_deinit(struct domain *d);
> 
> The former has a caller added, but the later hasn't.

As arch_domain_destroy() is stub at the moment, domain_vintc_deinit() 
isn't called.

> 
>> @@ -87,3 +88,42 @@ int map_device_irqs_to_domain(struct domain *d, struct dt_device_node *dev,
>>       return d->arch.vintc->ops->map_device_irqs_to_domain(d, dev, need_mapping,
>>                                                            irq_ranges);
>>   }
>> +
>> +int __init domain_vintc_init(struct domain *d)
> 
> The __init here and below is questionable again.

This function is called during construction domain only, what happen 
when __init section exists. So it is okay to have __init here.

Any use cases where it isn't true?

It could be wrong for domain_vintc_deinit() as it could be called when 
__init section was freed.

~ Oleksii


From xen-devel-bounces@lists.xenproject.org Wed Apr 15 08:44:53 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 15 Apr 2026 08:44:53 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1282222.1564859 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wCvrR-0006K9-95; Wed, 15 Apr 2026 08:44:37 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1282222.1564859; Wed, 15 Apr 2026 08:44: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 1wCvrR-0006K2-69; Wed, 15 Apr 2026 08:44:37 +0000
Received: by outflank-mailman (input) for mailman id 1282222;
 Wed, 15 Apr 2026 08:44:35 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <marmarek@invisiblethingslab.com>) id 1wCvrP-0006Jw-Fl
 for xen-devel@lists.xenproject.org; Wed, 15 Apr 2026 08:44:35 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wCvrO-001aZC-3S
 for xen-devel@lists.xenproject.org; Wed, 15 Apr 2026 10:44:34 +0200
Received: from [10.42.69.7] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <marmarek@invisiblethingslab.com>)
 id 69df4fe7-bab6-0a2a0a5309dd-0a2a45079824-42
 for <xen-devel@lists.xenproject.org>; Wed, 15 Apr 2026 10:44:34 +0200
Received: from [103.168.172.144] (helo=fout-a1-smtp.messagingengine.com)
 by tlsNG-ef75cf.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.0)
 (envelope-from <marmarek@invisiblethingslab.com>)
 id 69df4ff0-ba2d-0a2a45070019-67a8ac90a24f-3
 for <xen-devel@lists.xenproject.org>; Wed, 15 Apr 2026 10:44:33 +0200
Received: from phl-compute-10.internal (phl-compute-10.internal [10.202.2.50])
 by mailfout.phl.internal (Postfix) with ESMTP id 9A248EC0451;
 Wed, 15 Apr 2026 04:44:32 -0400 (EDT)
Received: from phl-frontend-04 ([10.202.2.163])
 by phl-compute-10.internal (MEProxy); Wed, 15 Apr 2026 04:44:32 -0400
Received: by mail.messagingengine.com (Postfix) with ESMTPA; Wed,
 15 Apr 2026 04:44:29 -0400 (EDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@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=1776242672;
	 x=1776329072; bh=N2sUNPb/DUN86WUSuc8oHa4ohFtHe6vFAApW3P+4DdU=; b=
	o19SrUIyrrxuBn3DkwvfqvySyVBCOXtcvW/r8iCDhAtUfO9CfquryPb8jUcnyoWK
	4OCND67nM5najTMDMoG17q0VS4HOU3HCc3aipFRpoGpYWbYOH+ngBLeF/VkVjYiu
	KDSncmPPMr+vcPJwELE+Q1ZXhmmDJnD9kpe/yWLmuiAZXiEczXtbJa6BegpvGOkK
	xkQg9LiLzbweJXAwD1feNzi77tU9JRn2hPyrYGHDM4Ymd5aPIjkSca4cDpmEoaox
	u3hLn4doy88x9PFqXofJEYCj7o7MAPTzVbHZIS7lehCnpTD3Q/u9d8ruKMmRQKxr
	7ZBJC0DE82PfK8xDCKMf8Q==
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=
	1776242672; x=1776329072; bh=N2sUNPb/DUN86WUSuc8oHa4ohFtHe6vFAAp
	W3P+4DdU=; b=XLHOTjmwkiyAuKLWm90TlgmEOQMaCK6kQE0ac4DEoi41dWnPrKG
	GTKv9AB4T27zoMhe+10mf7M10R8weIKBfJCRulYOlygRjubup2rEchBcSK+hYnGg
	mBIHkYptAWd2UXqnbRZFvh+m4srHq+21bxtEVCtQAXkbxyTiXMw8O8EXrCCieG03
	ka79CW9eLYypbBQjKKW1SDlI9XLwRO9O6WQpgLMhruq3eixGmIcwBLWalOWY7NyZ
	kMnFntPXnie6fy4MYPfYGhGz19mjiDEtr0caaUF8cxiunOUtYWXbqucMKlxMMTWa
	4DnRR3YsBpNJ9KWmOtkbGscjMpasRbyUrSQ==
X-ME-Sender: <xms:70_faarmNuvCy18KK6d_qFOBnz6EPdfxMjLQcPVr0kjdZmT_Lma8qQ>
    <xme:70_fafBwv9xcC38icVx7nxyOp4AVoUmKZBOtU0xZQbBTij_-YU-eIgLEJpY8pxONa
    yKc4HZX4M1uKoAf8rfRNgclJ_k8f-KjC0e6ThV3WiNk-JMeNQ>
X-ME-Received: <xmr:70_fabfXKrcw-Mm59HrC2AqGCWHLyifVwmxhyXkY1PpWyFPLc8DU8tylo5zH>
X-ME-Proxy-Cause: gggruggvucftvghtrhhoucdtuddrgeefhedrtddtgdegfeeifecutefuodetggdotefrod
    ftvfcurfhrohhfihhlvgemucfhrghsthforghilhdpuffrtefokffrpgfnqfghnecuuegr
    ihhlohhuthemuceftddtnecusecvtfgvtghiphhivghnthhsucdlqddutddtmdenucfjug
    hrpeffhffvvefukfhfgggtuggjsehgtderredttdejnecuhfhrohhmpeforghrvghkucfo
    rghrtgiihihkohifshhkihdqifpkrhgvtghkihcuoehmrghrmhgrrhgvkhesihhnvhhish
    hisghlvghthhhinhhgshhlrggsrdgtohhmqeenucggtffrrghtthgvrhhnpefgudelteef
    vefhfeehieetleeihfejhfeludevteetkeevtedtvdegueetfeejudenucevlhhushhtvg
    hrufhiiigvpedtnecurfgrrhgrmhepmhgrihhlfhhrohhmpehmrghrmhgrrhgvkhesihhn
    vhhishhisghlvghthhhinhhgshhlrggsrdgtohhmpdhnsggprhgtphhtthhopedufedpmh
    houggvpehsmhhtphhouhhtpdhrtghpthhtoheprhhoghgvrhdrphgruhestghithhrihig
    rdgtohhmpdhrtghpthhtohepgigvnhdquggvvhgvlheslhhishhtshdrgigvnhhprhhojh
    gvtghtrdhorhhgpdhrtghpthhtohepjhgsvghulhhitghhsehsuhhsvgdrtghomhdprhgt
    phhtthhopegrnhgurhgvfidrtghoohhpvghrfeestghithhrihigrdgtohhmpdhrtghpth
    htohepthgvugguhidrrghsthhivgesvhgrthgvshdrthgvtghhpdhrtghpthhtohepshhs
    thgrsggvlhhlihhniheskhgvrhhnvghlrdhorhhgpdhrtghpthhtohepjhhulhhivghnse
    igvghnrdhorhhgpdhrtghpthhtohepsggvrhhtrhgrnhgurdhmrghrqhhuihhssegrrhhm
    rdgtohhmpdhrtghpthhtohepmhhitghhrghlrdhorhiivghlsegrmhgurdgtohhm
X-ME-Proxy: <xmx:70_faXviLW98SJtNx1kx7k6CkEwpVNyMk5jpcIR6ndkS7GlGNBV3JQ>
    <xmx:8E_faSj7UZxGuwrnGiZZHkHva1-ydIPeNoQprtijKnRuaQSi4CRT9g>
    <xmx:8E_fafsrGH2y32nBDuo2OKy2EEOby44u4HJ9Qc6tq7rISWj3QHSdpQ>
    <xmx:8E_fad8eIKpaFDU5GGDOxJAjcrSK-QePgQnhjrMP1S7D96G2ad-92Q>
    <xmx:8E_fadOoaomSTdd4cEIFZRJWIuKSp0SngMdFp2VdjX_cxn0lBIfU3ape>
Feedback-ID: i1568416f:Fastmail
Date: Wed, 15 Apr 2026 10:44:28 +0200
From: Marek =?utf-8?Q?Marczykowski-G=C3=B3recki?= <marmarek@invisiblethingslab.com>
To: Roger Pau Monne <roger.pau@citrix.com>
Cc: xen-devel@lists.xenproject.org, Jan Beulich <jbeulich@suse.com>,
	Andrew Cooper <andrew.cooper3@citrix.com>,
	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>,
	Alistair Francis <alistair.francis@wdc.com>,
	Connor Davis <connojdavis@gmail.com>,
	Oleksii Kurochko <oleksii.kurochko@gmail.com>
Subject: Re: [PATCH 0/2] time: fix time accounting for x86 HVM guests
Message-ID: <ad9P7K1BY442UD0Z@mail-itl>
References: <20260414103327.7420-1-roger.pau@citrix.com>
MIME-Version: 1.0
Content-Type: multipart/signed; micalg=pgp-sha256;
	protocol="application/pgp-signature"; boundary="OXkKdlGRfDshscfP"
Content-Disposition: inline
In-Reply-To: <20260414103327.7420-1-roger.pau@citrix.com>
X-purgate-ID: tlsNG-ef75cf/1776242674-8AF4E41E-890966F3/0/0
X-purgate-type: clean
X-purgate-size: 2192


--OXkKdlGRfDshscfP
Content-Type: text/plain; protected-headers=v1; charset=utf-8
Content-Disposition: inline
Content-Transfer-Encoding: quoted-printable
Date: Wed, 15 Apr 2026 10:44:28 +0200
From: Marek =?utf-8?Q?Marczykowski-G=C3=B3recki?= <marmarek@invisiblethingslab.com>
To: Roger Pau Monne <roger.pau@citrix.com>
Cc: xen-devel@lists.xenproject.org, Jan Beulich <jbeulich@suse.com>,
	Andrew Cooper <andrew.cooper3@citrix.com>,
	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>,
	Alistair Francis <alistair.francis@wdc.com>,
	Connor Davis <connojdavis@gmail.com>,
	Oleksii Kurochko <oleksii.kurochko@gmail.com>
Subject: Re: [PATCH 0/2] time: fix time accounting for x86 HVM guests

On Tue, Apr 14, 2026 at 12:33:25PM +0200, Roger Pau Monne wrote:
> Hello,
>=20
> When not emulating the TSC the guest time value calculated by using the
> vCPU time info page in HVM mode would drift between time synchronization
> intervals.  First patch fixes the drift, second patch makes the
> calculation of cpu_khz round up the value for better accuracy.

I confirm with with those patches, and without the other fix ("x86/time:
do not kill calibration timer on suspend") the post-S3 issue is also
gone!

Tested-by: Marek Marczykowski-G=C3=B3recki <marmarek@invisiblethingslab.com>

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

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

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

iQEzBAEBCAAdFiEEhrpukzGPukRmQqkK24/THMrX1ywFAmnfT+wACgkQ24/THMrX
1yzkOwf+MKW7KLhSeEiOfUGFN213ssCRXJNceF+o9Jd63DzpnbvLZgLl/jpu7oPb
tBsuKDdTGi3UlVaPCvspWLxE1PEo8xRNa7WJXt+7TXstdvtbegP/iDyPtRd7o5Z2
pdWTjbfCkSNLCKjMaTUar/QahBwDxzF554j7qcd17ocY6UzopuPmfl4bo2EGp84a
BWBiqncXwDQIEqDby7C8uShEpm5nEzXH9IpfSSfKItxMulh6x0ZPHR89YxDxaQhw
1+I6RIaeC9sY8kO8TGaiQXLyKqXzZLPkW76S/+WYiBDLySm5s8Eewny9bJu6G09V
+aOvgZxUjFUZFE7wv7gFWBVWM0HO7g==
=Ci4O
-----END PGP SIGNATURE-----

--OXkKdlGRfDshscfP--


From xen-devel-bounces@lists.xenproject.org Wed Apr 15 10:00:33 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 15 Apr 2026 10:00:33 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1282240.1564868 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wCx2d-0007Uw-4c; Wed, 15 Apr 2026 10:00:15 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1282240.1564868; Wed, 15 Apr 2026 10:00: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 1wCx2d-0007Up-0l; Wed, 15 Apr 2026 10:00:15 +0000
Received: by outflank-mailman (input) for mailman id 1282240;
 Wed, 15 Apr 2026 10:00:14 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92) id 1wCx2c-0007Uj-4d
 for xen-devel@lists.xenproject.org; Wed, 15 Apr 2026 10:00:14 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wCx2b-00CaMR-H5
 for xen-devel@lists.xenproject.org; Wed, 15 Apr 2026 12:00:13 +0200
Received: from [10.42.69.5] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <oleksii.kurochko@gmail.com>)
 id 69df61aa-bab6-0a2a0a5309dd-0a2a4505d82c-14
 for <xen-devel@lists.xenproject.org>; Wed, 15 Apr 2026 12:00:13 +0200
Received: from [209.85.221.46] (helo=mail-wr1-f46.google.com)
 by tlsNG-c201ff.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.0)
 (envelope-from <oleksii.kurochko@gmail.com>)
 id 69df61ad-3760-0a2a45050019-d155dd2ec1cf-3
 for <xen-devel@lists.xenproject.org>; Wed, 15 Apr 2026 12:00:13 +0200
Received: by mail-wr1-f46.google.com with SMTP id
 ffacd0b85a97d-43d04fc3bf2so3916226f8f.3
 for <xen-devel@lists.xenproject.org>; Wed, 15 Apr 2026 03:00:13 -0700 (PDT)
Received: from [192.168.1.6] (user-109-243-69-121.play-internet.pl.
 [109.243.69.121]) by smtp.gmail.com with ESMTPSA id
 ffacd0b85a97d-43ead33d6d3sm4063430f8f.8.2026.04.15.03.00.11
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Wed, 15 Apr 2026 03:00:11 -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=20251104 header.d=gmail.com header.i="@gmail.com" header.h="Content-Transfer-Encoding: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=20251104; t=1776247213; x=1776852013; darn=lists.xenproject.org;
        h=content-transfer-encoding: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;
        bh=44CQNYnrERcsZdmbdj2+0ek2N0Tk9JZJVu6xznulA34=;
        b=iX/wF+9ecbDtt5zO26oi4BKGxrwxpYekE0ZMbjPkFPE0Xb8tvVWQeh+GiQj4GpEr3Z
         6v91w9hh+3EnGgSyHTPZnFKKWrv3FqSZVL00zQjGWv+yPqL5+oTC5ghFO8n2E6EN/4Xu
         MRdeMW8dOl5TAxVFt72EvApv2RAaRDtPUoUL0O63hgiuDizVl7NyO3vWgZwDctbmx3nx
         QAp3WO9UIA34Nl0xUfAzQ8hHyC+u49RvOhJlT16FBz7eVUzUsKqzNibHJpprCakWQxra
         DKsjdycFD7C6lqHUvf4t7ickd3/DSK9uiX57YljdeqyOMz7kyAu1mebMQ18aia3BpPDv
         f4Jw==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20251104; t=1776247213; x=1776852013;
        h=content-transfer-encoding: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;
        bh=44CQNYnrERcsZdmbdj2+0ek2N0Tk9JZJVu6xznulA34=;
        b=H2w5TypSxid3dzGSvgQxBtinvTU/RoHPaujN2HQp4i0Amiqi0GbKmf0lvxi0DrxKTX
         U5P41sTbBCqnpqfBi+OD+SA/HiK0CXC1hXI4W5FCcLfCFfh+JCjqNTkLL/+1lf3uU59F
         tCff0DIaFTelm2NNDbs7rzUZGQopZAF6rFV/zQCTjpls9avRa+kQ9oH/g4q4jZ8lmR8F
         EgVeEOspupiwdzWAmi4zAIjqEO03EPpJkt/Sdc0LzqfRKWLUgLN0S+ElDfQYgJprtlwx
         S8TJ3ZpOASff7FD81HnZIteVYTxqKRQnRypGf8mOd6P7txwTqJgIEet4kPedz1g2B9tN
         ZEAQ==
X-Forwarded-Encrypted: i=1; AFNElJ8iaWOqAY9NnOZE46ZXXLoldbzhgCGmNi3LrCV4S1EZ9xix6r08Khq8D3O2UKnUioi+mfCK/Jjx4NI=@lists.xenproject.org
X-Gm-Message-State: AOJu0Yx5z7MeAjS+lT7VsGEzQJQ4hXI55O78s9QB9pEoEtAn2pXgQNAY
	8aM1j1jMZEVaoDW4yhszNix9S0oFhPaZpWmDQ2m614hRFTvuaoC9PZ8L
X-Gm-Gg: AeBDieu3t2J+9ZjKU6Bg+KRCD8xxp1HH1LZtEPoqMAQ/6eoBtRsih92emnz3/wIHM/+
	mWyVQHL6cJ9/FT37UgHpfslmFDLo1wEVHHSZeeQXYITRgJXNOl6zbXFwa/4R/yESMitzZT/CAna
	5Ze2WiN7AVjKf38wP1CUrwGMy3NeV3rbdNBEJxDCDnhzWCb5SfRMeA8PE0q/InX7INqDzPrDsuF
	mX3wMieQ+qnZtIr1kvpUh2aa5LVAfEcHJRay4wyoBRMjq2Um2erv3Fv9r1WkKmqucA9+P+xjD7y
	Kqa/wtus1IOiMxg+ff46YRJLufKPK1Dbi9+YL6hlv+RQgXgiroNiOV9vqMnyJ/08P8+JxlFSX5l
	CzBCYeaKgh10PeqYfYy+5U6GzBjZYqHg0Fi3IWMOgODGGO/IszP1qJ6C9lJxh8t8VnqjBWbdxkl
	YqGOhIhNAwp/vvMe+9UNnainXnf7uJCQOLqBnLkhST2B4U3ebc4ZofhK4ix/s73Vu0XDVp4ORKb
	wOsZDxJ6ytKSvXob+0MHGle
X-Received: by 2002:a5d:64e3:0:b0:43d:7b90:fa23 with SMTP id ffacd0b85a97d-43d7b90fe37mr16606962f8f.29.1776247212507;
        Wed, 15 Apr 2026 03:00:12 -0700 (PDT)
Message-ID: <d8c22d64-8b03-4354-bebc-062499ac010a@gmail.com>
Date: Wed, 15 Apr 2026 12:00:10 +0200
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH v1 27/27] xen/riscv: add initial dom0less infrastructure
 support
To: Jan Beulich <jbeulich@suse.com>
Cc: Romain Caritey <Romain.Caritey@microchip.com>,
 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.pau@citrix.com>,
 Stefano Stabellini <sstabellini@kernel.org>, xen-devel@lists.xenproject.org
References: <cover.1773157782.git.oleksii.kurochko@gmail.com>
 <a66c727d0b99b9de41f516e1304b1a70192c9392.1773157782.git.oleksii.kurochko@gmail.com>
 <79c69067-4771-40df-a52b-8b552cd92a00@suse.com>
Content-Language: en-US
From: Oleksii Kurochko <oleksii.kurochko@gmail.com>
In-Reply-To: <79c69067-4771-40df-a52b-8b552cd92a00@suse.com>
Content-Type: text/plain; charset=UTF-8; format=flowed
Content-Transfer-Encoding: 7bit
X-purgate-ID: tlsNG-c201ff/1776247213-3959396F-BAABC2A3/10/73395122804
X-purgate-type: spam
X-purgate-size: 4546



On 4/7/26 4:11 PM, Jan Beulich wrote:
> On 10.03.2026 18:09, Oleksii Kurochko wrote:
>> Enable dom0less support for RISC-V by selecting HAS_DOM0LESS and
>> providing the minimal architecture hooks required by the common
>> dom0less infrastructure.
>>
>> Add stub implementations for architecture-specific helpers used when
>> building domains from the device tree. These currently perform no
>> additional work but allow the generic dom0less code to build and run
>> on RISC-V.
>>
>> Introduce max_init_domid as a runtime variable rather than a constant
>> so that it can be updated during dom0less domain creation.
>>
>> Provide missing helpers and definitions required by the domain
>> construction code,
> 
> I'm wondering about the splitting among patches: There's half a dozen
> (effectively stub) functions which are added here, and then there is
> the single init_vuart() which was split out into the earlier patch.
> What's the pattern behind this, i.e. why isn't init_vuart() also
> being added here?

If it'll be more convenient I am okay to merge prev. patch with the 
current one.

init_vuart() is in a separate patch as it has some useful functionality 
inside and thereby it will be more convenient to review.

> 
>> including domain bitness helpers and the
>> p2m_set_allocation() prototype.
>>
>> Additionally define the guest magic memory region in the public
>> RISC-V interface.
>>
>> Signed-off-by: Oleksii Kurochko <oleksii.kurochko@gmail.com>
>> ---
>> Open questions:
>>   - Shouldn't declaration/defintion of max_init_domid move to common code
>>     instead of having it for each architecture separately? If yes, then what
>>     would be the best place.
> 
> What would you use to decide whether the declaration or #define is
> needed? (Plausible headers to put it can surely be found: console.h,
> domain.h, and perhaps more.)

I thought about to wrap that with CONFIG_DOM0LESS_BOOT as the 
declaration is needed only for this case, for all other cases it is just 
#define.

Or as an option we could always use declaration all the time. It won't 
increase size of Xen too much or decrease performance because of 
variable access.

> 
>> --- a/xen/arch/riscv/include/asm/domain.h
>> +++ b/xen/arch/riscv/include/asm/domain.h
>> @@ -20,6 +20,14 @@ struct hvm_domain
>>       uint64_t              params[HVM_NR_PARAMS];
>>   };
>>   
>> +#ifdef CONFIG_RISCV_64
>> +#define is_32bit_domain(d) (0)
>> +#define is_64bit_domain(d) (1)
>> +#else
>> +#define is_32bit_domain(d) (1)
>> +#define is_64bit_domain(d) (0)
>> +#endif
> 
> First, please use true/false. Then, while I agree with the RV32 part, 32-bit
> guests surely will need to be an option on a 64-bit hypervisor. Imo you'd
> better introduced a field in struct arch_domain to carry that information
> (or to derive it from) right away. That wouldn't be set to non-zero for the
> time being, i.e. that same constant-true/false would still result.
> 
> Otherwise I don't see why you use #ifdef; you could then have things
> simpler as
> 
> #define is_32bit_domain(d) IS_ENABLED(CONFIG_RISCV_32)
> #define is_64bit_domain(d) IS_ENABLED(CONFIG_RISCV_64)
> 
> (but I specifically don't recommend going this route).

I will introduce a type in struct arch_domain then.

> 
>> --- a/xen/include/public/arch-riscv.h
>> +++ b/xen/include/public/arch-riscv.h
>> @@ -58,6 +58,9 @@ typedef uint64_t xen_ulong_t;
>>   #define GUEST_RAM_BANK_BASES   { GUEST_RAM0_BASE }
>>   #define GUEST_RAM_BANK_SIZES   { GUEST_RAM0_SIZE }
>>   
>> +#define GUEST_MAGIC_BASE  xen_mk_ullong(0x39000000)
>> +#define GUEST_MAGIC_SIZE  xen_mk_ullong(0x01000000)
> 
> What is this, and why does it need putting in the public interface? 

In other patch series such related things will live in 
asm/guest-layout.h. It will be moved there after rebase on top of that 
patch series.

It is needed now only for common dom0less code compilation as at the 
moment we don't use xenstore pages for dom0less.

But generally it is region which is used to allocate "magic pages" 
-special pages that facilitate communication between the guest and the 
Xen hypervisor such as Console, XenStore pages etc.

I have in my TODO to understand how to remove requirement to have this 
fixed region from dom0less common code.

Plus
> how come the numbers are exactly the same as what Arm uses?

It could be different. But this region is free for RISC-V too so it is 
fine to re-use.

~ Oleksii


From xen-devel-bounces@lists.xenproject.org Wed Apr 15 10:28:54 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 15 Apr 2026 10:28:54 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1282253.1564876 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wCxUF-000262-Ag; Wed, 15 Apr 2026 10:28:47 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1282253.1564876; Wed, 15 Apr 2026 10:28: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 1wCxUF-00025v-86; Wed, 15 Apr 2026 10:28:47 +0000
Received: by outflank-mailman (input) for mailman id 1282253;
 Wed, 15 Apr 2026 10:28:45 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92) id 1wCxUD-00025W-RH
 for xen-devel@lists.xenproject.org; Wed, 15 Apr 2026 10:28:45 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wCxUC-005mFT-Df
 for xen-devel@lists.xenproject.org; Wed, 15 Apr 2026 12:28:44 +0200
Received: from [10.42.69.8] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <oleksii.kurochko@gmail.com>)
 id 69df6856-e002-0a2a0a5209dd-0a2a45088a96-26
 for <xen-devel@lists.xenproject.org>; Wed, 15 Apr 2026 12:28:44 +0200
Received: from [209.85.221.41] (helo=mail-wr1-f41.google.com)
 by tlsNG-c1860d.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.0)
 (envelope-from <oleksii.kurochko@gmail.com>)
 id 69df685c-fab6-0a2a45080019-d155dd29b0c7-3
 for <xen-devel@lists.xenproject.org>; Wed, 15 Apr 2026 12:28:44 +0200
Received: by mail-wr1-f41.google.com with SMTP id
 ffacd0b85a97d-43cf8fe9c2aso4132735f8f.2
 for <xen-devel@lists.xenproject.org>; Wed, 15 Apr 2026 03:28:44 -0700 (PDT)
Received: from [192.168.1.6] (user-109-243-69-121.play-internet.pl.
 [109.243.69.121]) by smtp.gmail.com with ESMTPSA id
 ffacd0b85a97d-43ead33d65asm4199243f8f.4.2026.04.15.03.28.42
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Wed, 15 Apr 2026 03:28:43 -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=20251104 header.d=gmail.com header.i="@gmail.com" header.h="Content-Transfer-Encoding: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=20251104; t=1776248924; x=1776853724; darn=lists.xenproject.org;
        h=content-transfer-encoding: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;
        bh=xv7hMJMSYEeaNFos14tIaoI9ze4huV8IS1cZ7kSzMfU=;
        b=tA/Qw/Auzo3fHPkDKXrmKsDChBLvNzVILm3HYIfkkeyihqsOcQgz0wgFgtWndrjaMK
         P4dSzMlP5ltoOnnoEw+7oRs/LK2T0UEqtQEYsCh4ZfjazaHVq6jhUipxv4uZERkywP+U
         6pAgip2m981QWzqL63fGpgbI3YUN0GfbzP2Qrlc+N5+JkKCKE0rav7spF+26KYf7qU/s
         uOtHDswCnHdZzK9Px74H8AwCM/+SPic/ZEe5aqO9efBYt6NZBvzWMUcbetdXse89MW4v
         ak2Waj9X7K6QUX/yCBNvIrDsVsmQjVJDY5n/qEAzuqdxNfOLjNdhxFmXfIRvO7q6xIfR
         lxDA==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20251104; t=1776248924; x=1776853724;
        h=content-transfer-encoding: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;
        bh=xv7hMJMSYEeaNFos14tIaoI9ze4huV8IS1cZ7kSzMfU=;
        b=K/phqf4OHQzoqXZjqBuXfF1jLb/MpIijOA2AGk08/OCE2WkacaN5S1oAzvFhpoiUVd
         y5RTnHIMm+cND05HlWvyGZItCQRarI/3nO1yG+W7x2R4cM9CzLCoEl9dAayWwUw8ygwv
         loe0FFc/QdJdcBpbdJ0vfN4UH7YbdrwMTflUUoHXtxqN7998J2CpBE8gd4facY0EkVb3
         sCYyoxyzfc+wkJ7J8doAiazUQDSRslv0iYBD4lFyHRUQ8hk99Qyem4D/uTFJSCK6QcPb
         4+i9S+tzz+WDz7ETilRZWkLBSz/Lxs7s82O/bJ1p1xZMMjI89xlqneVQcDTuxQV0lWfb
         HPpQ==
X-Forwarded-Encrypted: i=1; AFNElJ8stzIcMBDIpHXDG5ax/9vs6et5Tzp4QHjZor1DtacA2NCCKr+NzsomnuTjoCelC+u9g80nCY0LlRs=@lists.xenproject.org
X-Gm-Message-State: AOJu0Yy6G86GhSUs37IZ8KGp9Dm6vaIuzSfqUGhaMg5W/uitNMubjyIr
	UFtPSp9RZ/ZuZex8wiDV5SXm3M1s8t88vP5o81PCnM9MbKhG7Zv+dFyo
X-Gm-Gg: AeBDiet1hso11Bx8M758p1gK1hHrO2eXSXI6fsfUlG/z+jeIVCfluMBHTpPE0w3dOdL
	4jRBNS3Dp3+f7StSiiAiJIkW/FChA0nsqhU2kkHEXLaOGmCNVdXJWUxJ3OWkaVfqIc7VG6GRsXZ
	wdklAUQnHAJKbJ5y/0ZGSbeDwz2hginVVzUvp80ikSMoSBBIKvNDpzd2HhDUdmGV0Y1rk4tqKoA
	9rD8OOk7M0CGYhBzzDZx82fHs5cY6Q5D5jnpSp/4yJ+NOWKw7gLHbffgLUCQCHFLVjH/QRhNbjM
	YqzivArnG222HWcfK0cI7jTGh71DTwLf/A0W2NUHqUZPL4ukOKILJ9zbQSJujwIk4xch3IF3k0L
	9XuqDv/W4fevTQyekUyv1TIXvhQCKZX8yf7XXAvpuIt080WLkm8uZwW5pJDVaPMf1JJejDJTU4J
	4LV651raTBh94Iw5wbJJDwO1jDqCbgRFctPX87JOqNB/FV57puzYAEfc9YZdR/cpO/5ELN6q1XX
	S38VaOjU+IfhA==
X-Received: by 2002:a05:6000:2c06:b0:43c:f0c0:c571 with SMTP id ffacd0b85a97d-43d642c9401mr29784194f8f.47.1776248923535;
        Wed, 15 Apr 2026 03:28:43 -0700 (PDT)
Message-ID: <7032dd40-f1fe-4d34-b559-6f2eb853bf5b@gmail.com>
Date: Wed, 15 Apr 2026 12:28:41 +0200
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH v1 27/27] xen/riscv: add initial dom0less infrastructure
 support
To: Jan Beulich <jbeulich@suse.com>
Cc: Romain Caritey <Romain.Caritey@microchip.com>,
 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.pau@citrix.com>,
 Stefano Stabellini <sstabellini@kernel.org>, xen-devel@lists.xenproject.org
References: <cover.1773157782.git.oleksii.kurochko@gmail.com>
 <a66c727d0b99b9de41f516e1304b1a70192c9392.1773157782.git.oleksii.kurochko@gmail.com>
 <79c69067-4771-40df-a52b-8b552cd92a00@suse.com>
Content-Language: en-US
From: Oleksii Kurochko <oleksii.kurochko@gmail.com>
In-Reply-To: <79c69067-4771-40df-a52b-8b552cd92a00@suse.com>
Content-Type: text/plain; charset=UTF-8; format=flowed
Content-Transfer-Encoding: 7bit
X-purgate-ID: tlsNG-c1860d/1776248924-F654F497-69CCCEED/10/73395122804
X-purgate-type: spam
X-purgate-size: 508



On 4/7/26 4:11 PM, Jan Beulich wrote:
>> --- a/xen/arch/riscv/setup.c
>> +++ b/xen/arch/riscv/setup.c
>> @@ -32,6 +32,8 @@
>>   #include <asm/traps.h>
>>   #include <asm/vsbi.h>
>>   
>> +domid_t max_init_domid = 0;
> The initializer isn't of much use, is it? Instead add __read_mostly, like
> Arm has it?

Then I expect it will fail to compile as setup.c should contain only 
__init data.

So the we have to remove or __read_mostly or put max_init_domid to 
different file.

~ Oleksii


From xen-devel-bounces@lists.xenproject.org Wed Apr 15 11:37:31 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 15 Apr 2026 11:37:31 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1282282.1564919 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wCyYg-0002vK-B9; Wed, 15 Apr 2026 11:37:26 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1282282.1564919; Wed, 15 Apr 2026 11: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 1wCyYg-0002uj-1q; Wed, 15 Apr 2026 11:37:26 +0000
Received: by outflank-mailman (input) for mailman id 1282282;
 Wed, 15 Apr 2026 11:37:24 +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 1wCyYe-0002dH-Li
 for xen-devel@lists.xenproject.org; Wed, 15 Apr 2026 11:37:24 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wCyYe-00EiIN-1m
 for xen-devel@lists.xenproject.org; Wed, 15 Apr 2026 13:37:24 +0200
Received: from [10.42.69.7] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <Michal.Orzel@amd.com>)
 id 69df786a-5cb7-0a2a0a5109dd-0a2a4507bd00-44
 for <xen-devel@lists.xenproject.org>; Wed, 15 Apr 2026 13:37:23 +0200
Received: from [40.107.201.51]
 (helo=CH4PR04CU002.outbound.protection.outlook.com)
 by tlsNG-ef75cf.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.0)
 (envelope-from <Michal.Orzel@amd.com>)
 id 69df7872-ba2d-0a2a45070019-286bc933c55f-4
 for <xen-devel@lists.xenproject.org>; Wed, 15 Apr 2026 13:37:23 +0200
Received: from BL1PR13CA0147.namprd13.prod.outlook.com (2603:10b6:208:2bb::32)
 by CH3PR12MB8510.namprd12.prod.outlook.com (2603:10b6:610:15b::10)
 with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9818.20; Wed, 15 Apr
 2026 11:37:18 +0000
Received: from BL02EPF0001A108.namprd05.prod.outlook.com
 (2603:10b6:208:2bb:cafe::fe) by BL1PR13CA0147.outlook.office365.com
 (2603:10b6:208:2bb::32) with Microsoft SMTP Server (version=TLS1_3,
 cipher=TLS_AES_256_GCM_SHA384) id 15.20.9769.48 via Frontend Transport; Wed,
 15 Apr 2026 11:37:18 +0000
Received: from satlexmb07.amd.com (165.204.84.17) by
 BL02EPF0001A108.mail.protection.outlook.com (10.167.241.138) with Microsoft
 SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id
 15.20.9769.17 via Frontend Transport; Wed, 15 Apr 2026 11:37:18 +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.17; Wed, 15 Apr
 2026 06:37:17 -0500
Received: from XIR-MICHALO-L1.xilinx.com (10.180.168.240) by
 satlexmb07.amd.com (10.181.42.216) with Microsoft SMTP Server id 15.2.2562.17
 via Frontend Transport; Wed, 15 Apr 2026 06:37:16 -0500
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@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=G7c2MUcoSltDJUc6qWC1367mtrZT8LhDV06G0jiBjnoBSUy28cYKmw4x8RnEJWXevbexQbRpcZwpamzZ0wcNQHxJeK988yh87V7BbG+jf9qTxoTETPn4dRV177rH3mndv22zs89mAtvzqy6waqAudTBjD380dl3bpzvSgWfsExH/6hk+yKMwWMQgF2yl5YZCq7cZoTeHwQGoMoXfbiNbesTOW8dZGnGEzVFRSYklrjvd0wuYw8swU/idUvblys+kyz6Ogj4Ch7WtjbNwMobRB1rSnNZqMTukgohb0aFdNGM0ite6fIV8OeH2FDuYAzj8538HiojMXoKrxy02sTFjjw==
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com;
 s=arcselector10001;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1;
 bh=IKYP4E5I1ro3m4rC4xatOfhu9k8oT84Qye3Au8P0bR0=;
 b=a8GxZYSDyZkJoI361q3k74wq5Q2IR8W4iJ/UzrDJOtWXNfezZSLvApAsSvzq+E/0UjdLMwyf/BqWxeJYDexn277F0m1imBFEAVOOPIZ8FkSOp7jpLujnEFbsG1tl6GJOKvLdvSQyAmM0OOBnBOFnnCgKVMclZ9oEW6MDzE15zk8v30aQMFn8qbO4oSColCBxtgpu3XczY5BH4D2pVk4qI4y9VGU7BjtHiDb51hS6DV4dT9mqPbs2WVKPimLIw3Z9UqDiqiC5X/B+jFAt9dS2zlozHveXcAuqjehOcZpcXtbH+6HJz8/+Prj3BEXOd3ZXO/MewX62my30y+cukuDrQA==
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=IKYP4E5I1ro3m4rC4xatOfhu9k8oT84Qye3Au8P0bR0=;
 b=IhRuXLL0WJFHHpohU+gDFz48G4zc11Rfib0rv56XdwvSWBfQlmKc8XSrypBRLhwM96pezj26/uZaCzX8Kf1+G8LTl/RxxAxGhjLtIQM64FbgoAjXxGoE2Kmz/zA26LSMIR+DtDY6kyUzjT2ptoTm5gErCODeYJoc3UOAWirLq1w=
X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 165.204.84.17)
 smtp.mailfrom=amd.com; dkim=none (message not signed)
 header.d=none;dmarc=pass action=none header.from=amd.com;
Received-SPF: Pass (protection.outlook.com: domain of amd.com designates
 165.204.84.17 as permitted sender) receiver=protection.outlook.com;
 client-ip=165.204.84.17; helo=satlexmb07.amd.com; pr=C
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>
Subject: [PATCH 4/6] xen/dt-overlay: fix silent success in dt_overlay_remove_node
Date: Wed, 15 Apr 2026 13:36:58 +0200
Message-ID: <20260415113700.107915-5-michal.orzel@amd.com>
X-Mailer: git-send-email 2.43.0
In-Reply-To: <20260415113700.107915-1-michal.orzel@amd.com>
References: <20260415113700.107915-1-michal.orzel@amd.com>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit
Content-Type: text/plain
X-EOPAttributedMessage: 0
X-MS-PublicTrafficType: Email
X-MS-TrafficTypeDiagnostic: BL02EPF0001A108:EE_|CH3PR12MB8510:EE_
X-MS-Office365-Filtering-Correlation-Id: e6a0a1e9-c4d6-4cfd-656d-08de9ae35982
X-MS-Exchange-SenderADCheck: 1
X-MS-Exchange-AntiSpam-Relay: 0
X-Microsoft-Antispam:
	BCL:0;ARA:13230040|36860700016|82310400026|376014|1800799024|56012099003|18002099003|22082099003;
X-Microsoft-Antispam-Message-Info:
	93CgH3e2sS/b2ZGNQk5HLUMslz1U3svMNW24DSv+ZyTldX8rcOdDCBVPywxARZ3WkIqFxatrGRzTd8JjN8//Rs9hBtvhoAgyRgxP6DIYJj6wwIZ33yT/+s4LD/jUDDNqAKxQWewm1pz17IkPyKYduMgmbMG6798AuDqBgZoLjUPkq+UzYFaJQY8lCMUOKIhovOKhl93J3p5aFXqkdzdz74waqTXj3pOxgnyCwjhmUsrRKGU7qk6vYBuFpENz3wBcsZQoICkdQ0FeiEJBC7FTeuq+9hryJcDJcA/4ikfUonCT9iDRIan4S5Muu50QNk/Sfhl2Vn2VjMfRo67lMlAxfigGgb1Qs/Q8VGMmMzjILD2hXNyEo+M2ZA9fvctLi0X+exs2puHyxfVGOqJ0rYaaJ1FtX/kQO7oI9AKw8QPKqtsW19ceYTgG9Egv5Wjz4v/g2P7nR6p/ui70u2CVXBIBvsIEUOrerztocIHFkXvld+L3KvVIoKOZV17x3vKo9RHMGiLNZpHY9r+BlnTRyYdTMEdqEg2Ek2mMPUEZ6y8OjGMgSvc+hsZy5NoJEyWXd/Tb7DemHtbsz2w2leVgXNH7+N2GFNsrcG06mXB38TMF+teHHQYKeo85rmM8cAeZNBBGrrZ/C6f9d08LYzbvCp6QWOmCGUBAKgZG5wYx9wkrM2XGf7LTkO8Tcmokyba7ScPKzf6+94T+k6MbmYXbKnPTOZXBiAchoSwrZ90IwyuzeVDoZWm850qMmo7PqvTpOKVHV5ajPFTfHZUNeuM3zM1GNw==
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)(1800799024)(56012099003)(18002099003)(22082099003);DIR:OUT;SFP:1101;
X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1
X-MS-Exchange-AntiSpam-MessageData-0:
	2d94dy0encczEHStc3OvEWPDL/aLJdp5kytPmukhxjhPfDlx0Nf5D9aBavkkOZtxWIf/5egMUtWD9Ga0R0mLZRF51f9FsT67aS5yBJmz57fD9MebNYXTslNyjdgRUxLaq4n5L7+Emwg0bycX3RzJppktHOrKA8qWdOddwQSKJD/dHjNXIVJ95VXDmr/mfgCgsDEs0KM8nbebXmgroT/7k6KAhI9k2PXIQz9L3K3RIQxKv4hRUkz3uSvC1zvUyi93ha7rJxa9hukq0QT3rK0pkGEPXwByRteGGhYHIhimBYl4eFddnL2osG+FTngwevVkYu9tN+1etOo+KzRfzxdYcaGo7EozKmg4EbnthR93t4P8VmL146IdW8963AXfkaJhaI7L86tHAD3dSyjK/SEvlKSgPw6jYvni+iO5vAE489qTV46qSGxR+Z6036o/UzdP
X-OriginatorOrg: amd.com
X-MS-Exchange-CrossTenant-OriginalArrivalTime: 15 Apr 2026 11:37:18.2720
 (UTC)
X-MS-Exchange-CrossTenant-Network-Message-Id: e6a0a1e9-c4d6-4cfd-656d-08de9ae35982
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:
	BL02EPF0001A108.namprd05.prod.outlook.com
X-MS-Exchange-CrossTenant-AuthAs: Anonymous
X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem
X-MS-Exchange-Transport-CrossTenantHeadersStamped: CH3PR12MB8510
X-purgate-ID: tlsNG-ef75cf/1776253043-12B4841E-F97C014B/0/0
X-purgate-type: clean
X-purgate-size: 1224

dt_overlay_remove_node() silently returns 0 when the target node is not
found in the parent's sibling list.  The loop simply exits without
matching and falls through to "return 0", making the caller believe the
node was successfully removed.

Return -ENODEV after the loop when no match is found, and change the
found-path from break to an explicit return 0 so the two outcomes are
distinct.

Fixes: 7e5c4a8b86f1 ("xen/arm: Implement device tree node removal functionalities")
Signed-off-by: Michal Orzel <michal.orzel@amd.com>
---
 xen/common/device-tree/dt-overlay.c | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/xen/common/device-tree/dt-overlay.c b/xen/common/device-tree/dt-overlay.c
index 0eed1532a10d..d3d4669718ac 100644
--- a/xen/common/device-tree/dt-overlay.c
+++ b/xen/common/device-tree/dt-overlay.c
@@ -125,11 +125,11 @@ static int dt_overlay_remove_node(struct dt_device_node *device_node)
             else
                 np->allnext = np->allnext->allnext;
 
-            break;
+            return 0;
         }
     }
 
-    return 0;
+    return -ENODEV;
 }
 
 static int dt_overlay_add_node(struct dt_device_node *device_node,
-- 
2.43.0



From xen-devel-bounces@lists.xenproject.org Wed Apr 15 11:37:31 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 15 Apr 2026 11:37:31 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1282278.1564886 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wCyYc-0002D7-3t; Wed, 15 Apr 2026 11:37:22 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1282278.1564886; Wed, 15 Apr 2026 11:37: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 1wCyYc-0002D0-0g; Wed, 15 Apr 2026 11:37:22 +0000
Received: by outflank-mailman (input) for mailman id 1282278;
 Wed, 15 Apr 2026 11:37:20 +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 1wCyYa-0002Co-7K
 for xen-devel@lists.xenproject.org; Wed, 15 Apr 2026 11:37:20 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wCyYZ-009G0r-Fb
 for xen-devel@lists.xenproject.org; Wed, 15 Apr 2026 13:37:19 +0200
Received: from [10.42.69.12] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <Michal.Orzel@amd.com>)
 id 69df7867-e002-0a2a0a5209dd-0a2a450cd9b0-40
 for <xen-devel@lists.xenproject.org>; Wed, 15 Apr 2026 13:37:18 +0200
Received: from [52.101.57.26]
 (helo=BN8PR05CU002.outbound.protection.outlook.com)
 by tlsNG-d25034.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.0)
 (envelope-from <Michal.Orzel@amd.com>)
 id 69df786d-f40c-0a2a450c0019-3465391a0986-3
 for <xen-devel@lists.xenproject.org>; Wed, 15 Apr 2026 13:37:18 +0200
Received: from BYAPR02CA0069.namprd02.prod.outlook.com (2603:10b6:a03:54::46)
 by SN7PR12MB6789.namprd12.prod.outlook.com (2603:10b6:806:26b::22)
 with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9769.48; Wed, 15 Apr
 2026 11:37:13 +0000
Received: from CO1PEPF00012E80.namprd03.prod.outlook.com
 (2603:10b6:a03:54:cafe::92) by BYAPR02CA0069.outlook.office365.com
 (2603:10b6:a03:54::46) with Microsoft SMTP Server (version=TLS1_3,
 cipher=TLS_AES_256_GCM_SHA384) id 15.20.9769.48 via Frontend Transport; Wed,
 15 Apr 2026 11:37:13 +0000
Received: from satlexmb08.amd.com (165.204.84.17) by
 CO1PEPF00012E80.mail.protection.outlook.com (10.167.249.55) with Microsoft
 SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id
 15.20.9769.17 via Frontend Transport; Wed, 15 Apr 2026 11:37:12 +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.17; Wed, 15 Apr
 2026 06:37:11 -0500
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.17; Wed, 15 Apr
 2026 06:37:11 -0500
Received: from XIR-MICHALO-L1.xilinx.com (10.180.168.240) by
 satlexmb07.amd.com (10.181.42.216) with Microsoft SMTP Server id 15.2.2562.17
 via Frontend Transport; Wed, 15 Apr 2026 06:37:09 -0500
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@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=w+fOpr9kC2Blpa/vNJadYpwb/mlw1Hfhw3cFWmEJx27vdgLb9fvnAGwgqbRCsUpAgfPkq2cUQB/nTPSvhlLEEjCxNhUkxoxkXIxwPMqnu7R49rjzzvDhXGZQxxeytSWCkujGMUrVi23rRR3h7X4Es2ZLsBTL13/WitN6HdpYMzITNQxhj80R2OhWn2qAvlPbntDv9cca3UxTub8Zly6LD/8r3LfZ+6cbnWYe17cFPjaOkVl5yo6TvQ7FsMWM3zgv6TE01pGts/C/HHxYhhX7jz/sEZopg8ZTaqlwu+3FC3hk7T06xGwnlvceAteRz6D8YASYD1ucso71ieVk2c/jmA==
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com;
 s=arcselector10001;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1;
 bh=/P1AkaFLYhWOON2UBch2rg76UUV/R3rJhXF5sFoZeyw=;
 b=paTeMkbAvrElntBkYpvNCXVZbn/qZkfeDkSOJN3/uaWNIM+UqxnUwDje3oxXgXMYcAILvjIW4Mnyq0PlhOO/6xB7yKxOQlYB1kRD5d0xUhByRQvZ9F64NWyvfCC7+gUSscI7GM5yYoAqMf5zP/4sPpRLofZENqpifKSazDVBTX2ntTRjuNqU42xL5s4dULt6IxTn47IQLsALpSTpFvUTCAFPUuG0fR5r7qTMKrC8NfVQPTVn1Sv9X4qkCP2H1xqNoAFyvneMbHW7i2kr0DD11KBnBXKi3sri2U3Oed/k+hHuWYiP3ECWIdoTiylmtVHxFEUgU95Pw/RofoQ3e1/fvg==
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=/P1AkaFLYhWOON2UBch2rg76UUV/R3rJhXF5sFoZeyw=;
 b=wN7FG22cskYd56HVuuL/lSmw/N9GGMbFXTyZgzS1H03v82qFFljGePFn8ck/beUmHNq96x9p9GeC78+2ADI5ewYUkY+0Oh94nUsxAAROVFRc3WIM9muCg4urlb3RRM1giNzRVftOvK8rboT4WCVdXJi+1WCmwWwJbbgK8Rd4rPk=
X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 165.204.84.17)
 smtp.mailfrom=amd.com; dkim=none (message not signed)
 header.d=none;dmarc=pass action=none header.from=amd.com;
Received-SPF: Pass (protection.outlook.com: domain of amd.com designates
 165.204.84.17 as permitted sender) receiver=protection.outlook.com;
 client-ip=165.204.84.17; helo=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>
Subject: [PATCH 0/6] dt-overlay: some fixes and improvements
Date: Wed, 15 Apr 2026 13:36:54 +0200
Message-ID: <20260415113700.107915-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: CO1PEPF00012E80:EE_|SN7PR12MB6789:EE_
X-MS-Office365-Filtering-Correlation-Id: 906a3078-f6b9-4451-71cc-08de9ae3560b
X-MS-Exchange-SenderADCheck: 1
X-MS-Exchange-AntiSpam-Relay: 0
X-Microsoft-Antispam:
	BCL:0;ARA:13230040|36860700016|376014|82310400026|1800799024|56012099003|18002099003;
X-Microsoft-Antispam-Message-Info:
	D1M0HXng9Yb5ddguUkr7FsK6SLlmjTTTvDVfRjAsrdEij9RNo4cQNGUx01U09pQXsdif471bDhKwRoHApQ3PEZYUGCBovwxLUGlmZLZAiCyN085cxoMuUO9CGacnPcx4VzOee+feAaOyYGahmbFfpPiI7hXRWz+hitynbeF5g0ZjTfm77b0y7lu7AXtu8TF/SkdFEwX25GYb8pb58Atr7uqBgD5oOKeSCJWR6c0aXDb7T7h4y+e44EZOAWHsN49+vfvLjShxgTYyfLqgfX2eBFoyNRXj43WfauFGilI/PX3b/MvSKnR06CNe5C5S60xrxjupl5RObuznZJXrAq10AusKgq9EAq46Vzdp61Swl7BwMBmPGH+wF+6G3uEo34GD76NdKaPhJgO6hFhhOqVuzAPTw7K0R5+mjHJXzvQOn2iBlDipbG1GUJpv2qCnCPbE/DGVdLv4JSROSjU64+8Aw8a8Z9uPwoAJjuoHk8KLBLZAj5/oQOFXVls2DlSpuW70EIRXI2AZpB3U6bYZJrv4pJQgD3PgKQI7xzZPCubpCJTNVU2Jp4TZxNHA0Wq8GZT6yLM1WqHx3/R5HOax/BQA4ZO9N5QjNkfFAGrcb7AuBe/l7OyeZvS2CaqVFNBU5ZIotX4HrZN4KYDbp4IR/MhnczUMUwgHsudU/Oyttl/bOLtfmQ7Anq44xqENCq3KYkGCzf9GPpkYVM5ikNlhMfCXhc/rabyMgc0GGKDd9rbAfe0OlO/uUuhen3foy7VvNRtZImCptz8D7FCg/jIWXreLcA==
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)(376014)(82310400026)(1800799024)(56012099003)(18002099003);DIR:OUT;SFP:1101;
X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1
X-MS-Exchange-AntiSpam-MessageData-0:
	B8V9olcV4lLe2Q9RJIU9ty4ecc7K3jrXDqk2Ktumxy3wO98G5dSZEXYARcm488HgYjxG033BBD6lFRCz/iNV0pMNAqEcoibM0m15GZ/9JD8owpKJ8AjokgaPXy/QmPZQiwXamGV6/5mG4pbotNGiUQjit/P0WLD4GOe3rBf8u95OaqltBjWvlfdgLIQGarcb8YmV/xtHT4sQXKbv8wfGAXFicIHZmKi5djeK/hLCmVEDSmwx3V9RwT97kP37Api88XMWhMvfYg8oYc5dsM3hVDYf3y8Bc+LY65SkGI2J5BLBwwzzfOMW8V7ycGMEtNTQFWuQjPJlVC9xZNhQK9c8eVcMxTkZ5RtbsGZb/aYizY3gqCrZl/ylbYagF0A61Yw+KyKjCDNAVDdTIblGmzeMFSvkSrtJR4Slsy85Bg5tnMZWQNNrjsOv+qAb6iU0WqwJ
X-OriginatorOrg: amd.com
X-MS-Exchange-CrossTenant-OriginalArrivalTime: 15 Apr 2026 11:37:12.3696
 (UTC)
X-MS-Exchange-CrossTenant-Network-Message-Id: 906a3078-f6b9-4451-71cc-08de9ae3560b
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:
	CO1PEPF00012E80.namprd03.prod.outlook.com
X-MS-Exchange-CrossTenant-AuthAs: Anonymous
X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem
X-MS-Exchange-Transport-CrossTenantHeadersStamped: SN7PR12MB6789
X-purgate-ID: tlsNG-d25034/1776253038-FD756A3D-E1C80DDB/0/0
X-purgate-type: clean
X-purgate-size: 1409

I don't like the state this feature is in right now. While the feature, even in
Linux is quite fragile, I investigated quite a lot of corner cases and many
issues are present due to the fact that we support a weird combination of
ADD/REMOVE + ATTACH without DETACH. Focusing on fixing issues and implementing
DETACH is not an easy task now. REMOVE handles things that should really be done
by DETACH. I think that the best move forward would be to strip the REMOVE
operation from the dt-overlay subsystem (I would preserve ABI). This would
eliminate the buggy, incomplete teardown code and leave a clean ADD+ATTACH
surface to later build DETACH and a proper REMOVE on top of. Thoughts?
The removal of REMOVE could be done in this release, not to carry on the buggy
code.

I tested this series with the AMD SW/HW stack.

Michal Orzel (6):
  xen/dt-overlay: fix double-free of rangesets on attach failure
  xen/dt-overlay: fix rangeset leak and dead code in domctl path
  xen/dt-overlay: check overlay size before memcmp in tracker lookup
  xen/dt-overlay: fix silent success in dt_overlay_remove_node
  xen/dt-overlay: support phandle-based targeting in
    overlay_get_nodes_info
  xen/dt-overlay: attach resources for child nodes in overlay

 xen/common/device-tree/dt-overlay.c | 120 ++++++++++++++++++++++++----
 1 file changed, 105 insertions(+), 15 deletions(-)

-- 
2.43.0



From xen-devel-bounces@lists.xenproject.org Wed Apr 15 11:37:31 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 15 Apr 2026 11:37:31 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1282279.1564890 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wCyYc-0002GC-Ad; Wed, 15 Apr 2026 11:37:22 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1282279.1564890; Wed, 15 Apr 2026 11:37: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 1wCyYc-0002FB-6r; Wed, 15 Apr 2026 11:37:22 +0000
Received: by outflank-mailman (input) for mailman id 1282279;
 Wed, 15 Apr 2026 11:37:20 +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 1wCyYa-0002Cp-C8
 for xen-devel@lists.xenproject.org; Wed, 15 Apr 2026 11:37:20 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wCyYY-00AKCO-77
 for xen-devel@lists.xenproject.org; Wed, 15 Apr 2026 13:37:19 +0200
Received: from [10.42.69.2] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <Michal.Orzel@amd.com>)
 id 69df786c-2eae-0a2a0a5409dd-0a2a4502cab0-16
 for <xen-devel@lists.xenproject.org>; Wed, 15 Apr 2026 13:37:19 +0200
Received: from [52.101.52.4]
 (helo=BL2PR02CU003.outbound.protection.outlook.com)
 by tlsNG-720697.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.0)
 (envelope-from <Michal.Orzel@amd.com>)
 id 69df786d-42fa-0a2a45020019-346534042a1c-4
 for <xen-devel@lists.xenproject.org>; Wed, 15 Apr 2026 13:37:19 +0200
Received: from BYAPR02CA0068.namprd02.prod.outlook.com (2603:10b6:a03:54::45)
 by CH3PR12MB9729.namprd12.prod.outlook.com (2603:10b6:610:253::20)
 with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9818.20; Wed, 15 Apr
 2026 11:37:14 +0000
Received: from CO1PEPF00012E80.namprd03.prod.outlook.com
 (2603:10b6:a03:54:cafe::42) by BYAPR02CA0068.outlook.office365.com
 (2603:10b6:a03:54::45) with Microsoft SMTP Server (version=TLS1_3,
 cipher=TLS_AES_256_GCM_SHA384) id 15.20.9769.50 via Frontend Transport; Wed,
 15 Apr 2026 11:37:14 +0000
Received: from satlexmb08.amd.com (165.204.84.17) by
 CO1PEPF00012E80.mail.protection.outlook.com (10.167.249.55) with Microsoft
 SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id
 15.20.9769.17 via Frontend Transport; Wed, 15 Apr 2026 11:37:14 +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.17; Wed, 15 Apr
 2026 06:37:13 -0500
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.17; Wed, 15 Apr
 2026 06:37:12 -0500
Received: from XIR-MICHALO-L1.xilinx.com (10.180.168.240) by
 satlexmb07.amd.com (10.181.42.216) with Microsoft SMTP Server id 15.2.2562.17
 via Frontend Transport; Wed, 15 Apr 2026 06:37:11 -0500
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@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=kfYRO1QDCIAK590ECS1om9S1rrzkEjLTM8KKSsIzns9qKslHklP8Sb2QI0yJa2d99a5IHhIooB7OudHmRKyH5JOMa3j4SBNHpzERziuvb2Cdq4ayLT6akMXowpjhFZAs+/X9UD5BEq9+kz/8EyP+ZHCNz0sNyZo/3/XXyaZNRWWddZd7TwjGFNP3L5KdMNWTNq0hPs/kSox6K05RdVWGIHXjwW3OTFEUMcR+I0vzi6ozlhfcdo1CyqLksHknl4YGSDiIFJXahEqxe7Eiqfef8iIuRpduk2XnxbjtvznM6CzH7FgWVYqsYPacvfh5ekG2dEVqmJUoEfTQzPTQgdt5WQ==
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com;
 s=arcselector10001;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1;
 bh=HcZupUjCihrhH4fumGKyczgJktfm1ndcrphTiFO0/vw=;
 b=TN1btHVWbTXJ1+HDdQAds2PAafw5JW+MCYc/ACQpFx7Ga8W+3/QX3tBYzPTO8vPX5IZSrMOcMo2Y6y8RD49haW6ImrYj9VwKZP58qVNtCB9yfamHlNCEU4BdIN+AupzfEBl3Z+hbw6fbMkfoRSiMdKHRCPaM5JIVkWm0Rp8kyr8k422C9VsXqruJQ7ZD3B9qzphTsT0OLnStIr2XAyZwqYohYRxgyX0IxXXUbb+F++i1eqXYFphtRquBFUHPD/rHzTg0K/BJzdiYp4y0z/m5eJoNfGRpvtbZb1XvWhGqzzw9sOo1e0WzrlLzVZYiPcgx2nrMcs96h2JQkb66kREnqw==
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=HcZupUjCihrhH4fumGKyczgJktfm1ndcrphTiFO0/vw=;
 b=uyGGa5fOADXzEn8OZWcudjuuIBd3hc72vx5piG7laL4bkxiUIJQSciwRe9U+hPRxe3L1xczBYPqiKYq0ETJ93y7n4N2nGJeGNNOPcJOwMLg/aUer4AXiGAhpBFo5F7m4FfhIVvmgJJbQh/76X7OLIO2r2tj67z4sCHIJrjdyhkk=
X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 165.204.84.17)
 smtp.mailfrom=amd.com; dkim=none (message not signed)
 header.d=none;dmarc=pass action=none header.from=amd.com;
Received-SPF: Pass (protection.outlook.com: domain of amd.com designates
 165.204.84.17 as permitted sender) receiver=protection.outlook.com;
 client-ip=165.204.84.17; helo=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>, Gyujeong Jin <wlsrbwjd7232@gmail.com>
Subject: [PATCH 1/6] xen/dt-overlay: fix double-free of rangesets on attach failure
Date: Wed, 15 Apr 2026 13:36:55 +0200
Message-ID: <20260415113700.107915-2-michal.orzel@amd.com>
X-Mailer: git-send-email 2.43.0
In-Reply-To: <20260415113700.107915-1-michal.orzel@amd.com>
References: <20260415113700.107915-1-michal.orzel@amd.com>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit
Content-Type: text/plain
X-EOPAttributedMessage: 0
X-MS-PublicTrafficType: Email
X-MS-TrafficTypeDiagnostic: CO1PEPF00012E80:EE_|CH3PR12MB9729:EE_
X-MS-Office365-Filtering-Correlation-Id: d43d5f58-3a0a-4e4d-6356-08de9ae35720
X-MS-Exchange-SenderADCheck: 1
X-MS-Exchange-AntiSpam-Relay: 0
X-Microsoft-Antispam:
	BCL:0;ARA:13230040|82310400026|376014|36860700016|1800799024|22082099003|56012099003|18002099003;
X-Microsoft-Antispam-Message-Info:
	e0Qmfy7XBtb55aK1MYyjv28/DhSrp7BdXWuiQLsgObXzRVhieKaooicCfWCH6b02gZoHzdoJa5p8BizCf5sIgiGHiq6RmyRsLfcRvn7V5SoBu/6TIXPXDUpun5SZ89Qs6lVr3eYy95P+Ci5GqdoBV3E71oU0bILLbs9YPrdSBKiokdn+/8o/s6S5mHlWoH4mgi7XFBmhRhQYrSoYODXbjWdawtk7oA0culZIpOOb6ifoG2PjU1jhYamUvJ+y7nWL8hE/vjqXUHzjertf+MVQi4pbJeQj9mbnIQytQG2XuY4a1dpOZ+8N1P31kK2H9i251i3pmvuVciPokaA619E6cw1s+FKXtTnnKY0YOxJYponsKb3EzDkb1fCPs2Xpv5tmP7YliV8bKglezxuOfDRgdeIReq0zEB9u10c3YPFwKoVKjztKm5FezJxhpRTGVScLwtcV/O9eZNxUtA6Nyky8gijB0X4QAwmnM9iGSb9BFohvHrBl8hVuJtQJ2VoMrjLfi2VriuqFkMymbIL5UlARPkA2baLw/ebUesUkr1DadamK/JmR8Tyw3f9KnQRj/oWS4eYVek+KNrmBOzojEe3vyGiPO4LjgIa5qgOJFkOEzGdMpjrUNlrw4tjij4xWcKXxYmtJO+pEJvph1zS8ObA8GiDlvj0kUzDr2pPlH1vCt3HF12pgN3ywCmsLb7+7HSBozMPSlPmCCIxXvRQNaAoyNPexVqKXRgMG2g8BvlpU+rC1AB625i/9xI3gfnrvqYttV3r3OpnNpdgk+2ewWdnHaw==
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)(376014)(36860700016)(1800799024)(22082099003)(56012099003)(18002099003);DIR:OUT;SFP:1101;
X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1
X-MS-Exchange-AntiSpam-MessageData-0:
	j4s5c15RwMLaov4Zih+EK8Tk4j9X7FaD0DvzjhBHNil6PtDDet+4On0iaDeWIBO5InI44jVzBByASb6u6cpQImoW7lAjy6HrmW+d6ICcLSy9FMJCE1LeOvPPCce6bUNK5DlcSIb16GFbEAZzOZIrjsmHcmOzBKIlEXDqfsVN4dNHGdm5cx0IMrRYWNiB5Ir0HBnqBbciOisuIIHfVQqpBcyDfdGe9ku+B4fQgD6JGjpDIeLN8FBcX0NMohu6E1GSuQklJH7sfODkOacjwawnAnxQwNcTCKF4rSINPhMjoZFtl+eMWue7Pn+G5+09UttVU2cUgFOLKw2RIgMZxosqfbVjxmsb8pgiJGPZWmYZ5ghdSLeSIxmiYI3EtF/oMofZjXElrXONQ1gJ37FaqFJP/1et9Fe7hRjD1t52Ucud30hyJ2bQhU4EeFgwlL5S0pH9
X-OriginatorOrg: amd.com
X-MS-Exchange-CrossTenant-OriginalArrivalTime: 15 Apr 2026 11:37:14.2084
 (UTC)
X-MS-Exchange-CrossTenant-Network-Message-Id: d43d5f58-3a0a-4e4d-6356-08de9ae35720
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:
	CO1PEPF00012E80.namprd03.prod.outlook.com
X-MS-Exchange-CrossTenant-AuthAs: Anonymous
X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem
X-MS-Exchange-Transport-CrossTenantHeadersStamped: CH3PR12MB9729
X-purgate-ID: tlsNG-720697/1776253039-AD93ECD1-EE44A305/0/0
X-purgate-type: clean
X-purgate-size: 1287

handle_attach_overlay_nodes() destroys the IRQ and IOMEM rangesets on
failure but leaves the pointers dangling in the tracker entry. A
subsequent handle_remove_overlay_nodes() for the same overlay will call
rangeset_consume_ranges() on freed memory followed by a second
rangeset_destroy(), resulting in use-after-free and double-free.

NULL the pointers after rangeset_destroy() so that remove_nodes() and
handle_remove_overlay_nodes() skip the stale entries.

Fixes: 4c733873b5c2 ("xen/arm: Add XEN_DOMCTL_dt_overlay and device attachment to domains")
Reported-by: Gyujeong Jin <wlsrbwjd7232@gmail.com>
Signed-off-by: Michal Orzel <michal.orzel@amd.com>
---
 xen/common/device-tree/dt-overlay.c | 2 ++
 1 file changed, 2 insertions(+)

diff --git a/xen/common/device-tree/dt-overlay.c b/xen/common/device-tree/dt-overlay.c
index d184186c015e..6fa07dbf42a5 100644
--- a/xen/common/device-tree/dt-overlay.c
+++ b/xen/common/device-tree/dt-overlay.c
@@ -910,7 +910,9 @@ static long handle_attach_overlay_nodes(struct domain *d,
     if ( entry )
     {
         rangeset_destroy(entry->irq_ranges);
+        entry->irq_ranges = NULL;
         rangeset_destroy(entry->iomem_ranges);
+        entry->iomem_ranges = NULL;
     }
 
     return rc;
-- 
2.43.0



From xen-devel-bounces@lists.xenproject.org Wed Apr 15 11:37:31 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 15 Apr 2026 11:37:31 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1282280.1564905 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wCyYe-0002dI-Ih; Wed, 15 Apr 2026 11:37:24 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1282280.1564905; Wed, 15 Apr 2026 11:37: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 1wCyYe-0002d9-Db; Wed, 15 Apr 2026 11:37:24 +0000
Received: by outflank-mailman (input) for mailman id 1282280;
 Wed, 15 Apr 2026 11:37:23 +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 1wCyYd-0002Zz-9z
 for xen-devel@lists.xenproject.org; Wed, 15 Apr 2026 11:37:23 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wCyYb-00AKCb-4s
 for xen-devel@lists.xenproject.org; Wed, 15 Apr 2026 13:37:22 +0200
Received: from [10.42.69.11] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <Michal.Orzel@amd.com>)
 id 69df786b-bab6-0a2a0a5309dd-0a2a450ba234-30
 for <xen-devel@lists.xenproject.org>; Wed, 15 Apr 2026 13:37:22 +0200
Received: from [52.101.193.47]
 (helo=CH1PR05CU001.outbound.protection.outlook.com)
 by tlsNG-42698a.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.0)
 (envelope-from <Michal.Orzel@amd.com>)
 id 69df7870-bca8-0a2a450b0019-3465c12f572e-3
 for <xen-devel@lists.xenproject.org>; Wed, 15 Apr 2026 13:37:22 +0200
Received: from BL1PR13CA0167.namprd13.prod.outlook.com (2603:10b6:208:2bd::22)
 by PH7PR12MB7306.namprd12.prod.outlook.com (2603:10b6:510:20a::12)
 with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9818.20; Wed, 15 Apr
 2026 11:37:17 +0000
Received: from BL02EPF0001A103.namprd05.prod.outlook.com
 (2603:10b6:208:2bd:cafe::2c) by BL1PR13CA0167.outlook.office365.com
 (2603:10b6:208:2bd::22) with Microsoft SMTP Server (version=TLS1_3,
 cipher=TLS_AES_256_GCM_SHA384) id 15.20.9769.48 via Frontend Transport; Wed,
 15 Apr 2026 11:37:16 +0000
Received: from satlexmb07.amd.com (165.204.84.17) by
 BL02EPF0001A103.mail.protection.outlook.com (10.167.241.133) with Microsoft
 SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id
 15.20.9769.17 via Frontend Transport; Wed, 15 Apr 2026 11:37:16 +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.17; Wed, 15 Apr
 2026 06:37:16 -0500
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.17; Wed, 15 Apr
 2026 06:37:16 -0500
Received: from XIR-MICHALO-L1.xilinx.com (10.180.168.240) by
 satlexmb07.amd.com (10.181.42.216) with Microsoft SMTP Server id 15.2.2562.17
 via Frontend Transport; Wed, 15 Apr 2026 06:37:14 -0500
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@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=YujAX0BwNy/b/M33ko7MdpwKKg7RfYPFyALesCI+WGWFDXMSQ6h2wtpSCmuZMq+UClCqvT28aLYW0835zEH2CxZoXLfDYJHac0JveY7AYO7oSBR+uZWE6oFcviBIyByJYXN3Ofld6r++W3R+xddvrfsyIiWpmWTFl3mP+0cvUhuvmpakQuouVGpCUtuUVK5Su8SbFiN0fmfgOw/zucy7sNLT7+6hR4L/PKHOXuK9ov3mB6nQId2w0dMVyBU+C2X1h9zV/Bo5oA9maBDB+ZenkNJ0IFli+c9zwi8/PLFj8z4yMzG4JH6HrwoHDpK3yiK47U0NoHMnvHsN7sdIisc2FQ==
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com;
 s=arcselector10001;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1;
 bh=6QvN1netQKCnwaqY6XX9r+J1KJJsy3StwsOiX7PZDs4=;
 b=h2scQRRc6ycB7EIUbOJVEhsiuhUPkyWmy5Ar5hqYD+BibRv5UH/+LIKwAs8XnWJyvH9q6pq6E9ZbSPk9m/6MMDjDXvt7hXzy0OPJ44rg4zkKZQpO9w9En4gxf8jOZjOB/YrGpQIjHvqlX08AjD4mKyacS4rswmZY2KjKulsoRhwwm9NBnBg9m9ISbTEoiMlqeYgUJopNroSyXiSPNntHtmYaFLhOaDnzztHc7bFn/IX9NcMJHYTjWaP8DOzl3BhVN+przPilphLJe887HnKODEUX5GGfkQl8+sk+yGaMrgVKZ2LnL3y8Q3YMHGGaou52M8DSvJB0f1ME6hAdSPZd4g==
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=6QvN1netQKCnwaqY6XX9r+J1KJJsy3StwsOiX7PZDs4=;
 b=b40bMIPFlziQ5yY7pjU0U/nhqNmHxj7p6P7gR+47mXmAhnGNGYTlp8SMgiv2W0dKwY5M0VejZY7U4PX0gwZRyhlz+4sq60Z4HlH6bmZJIeZoMUVzbXQXpxcZuZj0dHY8dY3hA5fwsKtGuo8rY5dpJyhST1aGs6K/zRAPjrmS75E=
X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 165.204.84.17)
 smtp.mailfrom=amd.com; dkim=none (message not signed)
 header.d=none;dmarc=pass action=none header.from=amd.com;
Received-SPF: Pass (protection.outlook.com: domain of amd.com designates
 165.204.84.17 as permitted sender) receiver=protection.outlook.com;
 client-ip=165.204.84.17; helo=satlexmb07.amd.com; pr=C
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>
Subject: [PATCH 3/6] xen/dt-overlay: check overlay size before memcmp in tracker lookup
Date: Wed, 15 Apr 2026 13:36:57 +0200
Message-ID: <20260415113700.107915-4-michal.orzel@amd.com>
X-Mailer: git-send-email 2.43.0
In-Reply-To: <20260415113700.107915-1-michal.orzel@amd.com>
References: <20260415113700.107915-1-michal.orzel@amd.com>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit
Content-Type: text/plain
X-EOPAttributedMessage: 0
X-MS-PublicTrafficType: Email
X-MS-TrafficTypeDiagnostic: BL02EPF0001A103:EE_|PH7PR12MB7306:EE_
X-MS-Office365-Filtering-Correlation-Id: 6e08bb71-4749-40c6-8bf5-08de9ae35888
X-MS-Exchange-SenderADCheck: 1
X-MS-Exchange-AntiSpam-Relay: 0
X-Microsoft-Antispam:
	BCL:0;ARA:13230040|376014|1800799024|36860700016|82310400026|56012099003|22082099003|18002099003;
X-Microsoft-Antispam-Message-Info:
	5J1FTqiYgIe85Uz/iM5sFxRhAngSZcnXPmnfB8VaZZkClCuWrMTY2Ti6GmZZ9/3PwO8k4ngYoogv2hhnZHt55+ikWo41nwwN0lKssrIwDEHjfV9pc0fnYs5xCVM6DTYV1O7ZczrQDJm5KLpfERb9I0/MQDGwCkWow2yV0X9sewYOFlAKIzKf6+rxRRaS+od1FsJr6lFpTEahlI4ssmBBmOSIW43tJQ3JX+gwB2XQ/yTLhgZWgCSteqJr2TvZaDgzLWpn4ub6I/X+tblvhW79Udkq3RQUZw3LvSc9cV0x3ROUdo2Zx5riP4wQNxmWkS29FSneXs92ioCadA7gUsqBJg0sWZgEe34Nys8BGWpWOh9z16yVemgZj4yIyvlxJckFHmWJb4dkatVWKGntPgO0Qqs1wwa9S+n20UUoGsGjCUsHkoRyZN4rpd0A0AnoMRa04NluIMG3pcVqA2ScdKdrX0zn/nimDZeulY+PZH2N2PGhciq2mmf6PH8ZONu0TtDhaZZZ0ZJ4qC6iG31Lhqy/9IW6Me/naiWE2AJVcSj6Ptf3sMT3ESokkENTh10zNXfaC1NVGC0/mYC9ebqt6bj2fJchYnxHhmsiJIeln7l6Bs1BQe2DxUHkr+K1zTMsNL69bVntcR87HKsLk0j7DWQ63IrePYRgPaQdcAm9iaSXvOYYy5ahVsn7qWTFXHp/vnS56lUxmGd6GrovacjYeL+AH5QQXehqndDtV+/CzzTugE2JYqPAxQi9Ko9qhSR46sAyrutyc5XHN81zXyDbpkcyrQ==
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)(36860700016)(82310400026)(56012099003)(22082099003)(18002099003);DIR:OUT;SFP:1101;
X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1
X-MS-Exchange-AntiSpam-MessageData-0:
	3NFScCTnfYFbtInc0Xoq+d2u9i0CcUEh84lJKepY1OMh143NiKsehrpy4A2pkvLesKFVH2MRFehBe31sXfRoPBZhZrivy66xexfw7Y1MJdc+o/Y3csqiNcPeVEdh9KfWRNTAOar7T5OYgjtVTqdEAWp1LCJOwWhDNugMnfmt6gIbL1Y5eWatrSAMZaU2qJaXEv/DMafOg8063v1Hau0UI31ZkjVcpicj1oIp3QleZa1AjPo331hiRA00IpFkaS+oCGCK+wksCYSIi4uj6abMFicxuKqHBRtELyXcuRLLu1jlji+3l1X8Vug/KL2ZW2LUbyOEJe9IacnvCD+EyAABUopq6dzMXy1tu+eoFGnO61EUOAAW7NR4SuQWPBX052YoWuArPSjCBsRksKXzg+actuJl8Q4ybUO+VqT1LHqjUVG7QVJoiaDETKZZY3WoYo/F
X-OriginatorOrg: amd.com
X-MS-Exchange-CrossTenant-OriginalArrivalTime: 15 Apr 2026 11:37:16.6342
 (UTC)
X-MS-Exchange-CrossTenant-Network-Message-Id: 6e08bb71-4749-40c6-8bf5-08de9ae35888
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:
	BL02EPF0001A103.namprd05.prod.outlook.com
X-MS-Exchange-CrossTenant-AuthAs: Anonymous
X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem
X-MS-Exchange-Transport-CrossTenantHeadersStamped: PH7PR12MB7306
X-purgate-ID: tlsNG-42698a/1776253042-EF34C2A1-5705A061/0/0
X-purgate-type: clean
X-purgate-size: 1441

find_track_entry_from_tracker() compares overlay_fdt_size bytes of the
stored overlay against the input without verifying that the stored
overlay is at least that large. If the input is larger, memcmp reads
past the stored allocation. If smaller, a prefix match could falsely
succeed.

Compare fdt_totalsize() of the stored overlay against overlay_fdt_size
first. Both values are validated by check_overlay_fdt() at their
respective entry points, so no additional field in overlay_track is
needed.

Fixes: 7e5c4a8b86f1 ("xen/arm: Implement device tree node removal functionalities")
Signed-off-by: Michal Orzel <michal.orzel@amd.com>
---
 xen/common/device-tree/dt-overlay.c | 3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)

diff --git a/xen/common/device-tree/dt-overlay.c b/xen/common/device-tree/dt-overlay.c
index 3853e6e347fe..0eed1532a10d 100644
--- a/xen/common/device-tree/dt-overlay.c
+++ b/xen/common/device-tree/dt-overlay.c
@@ -379,7 +379,8 @@ find_track_entry_from_tracker(const void *overlay_fdt,
      */
     list_for_each_entry_safe( entry, temp, &overlay_tracker, entry )
     {
-        if ( memcmp(entry->overlay_fdt, overlay_fdt, overlay_fdt_size) == 0 )
+        if ( (fdt_totalsize(entry->overlay_fdt) == overlay_fdt_size) &&
+             !memcmp(entry->overlay_fdt, overlay_fdt, overlay_fdt_size) )
         {
             found_entry = true;
             break;
-- 
2.43.0



From xen-devel-bounces@lists.xenproject.org Wed Apr 15 11:37:31 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 15 Apr 2026 11:37:31 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1282284.1564931 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wCyYh-0003KL-HR; Wed, 15 Apr 2026 11:37:27 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1282284.1564931; Wed, 15 Apr 2026 11:37: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 1wCyYh-0003KB-CY; Wed, 15 Apr 2026 11:37:27 +0000
Received: by outflank-mailman (input) for mailman id 1282284;
 Wed, 15 Apr 2026 11:37:26 +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 1wCyYg-000318-KO
 for xen-devel@lists.xenproject.org; Wed, 15 Apr 2026 11:37:26 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wCyYe-00AKHN-Ew
 for xen-devel@lists.xenproject.org; Wed, 15 Apr 2026 13:37:26 +0200
Received: from [10.42.69.10] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <Michal.Orzel@amd.com>)
 id 69df7861-2eae-0a2a0a5409dd-0a2a450aeb5a-48
 for <xen-devel@lists.xenproject.org>; Wed, 15 Apr 2026 13:37:25 +0200
Received: from [52.101.57.67]
 (helo=BN8PR05CU002.outbound.protection.outlook.com)
 by tlsNG-4011c0.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.0)
 (envelope-from <Michal.Orzel@amd.com>)
 id 69df7874-ee98-0a2a450a0019-346539433ad3-3
 for <xen-devel@lists.xenproject.org>; Wed, 15 Apr 2026 13:37:25 +0200
Received: from SJ0PR03CA0208.namprd03.prod.outlook.com (2603:10b6:a03:2ef::33)
 by BL4PR12MB9484.namprd12.prod.outlook.com (2603:10b6:208:58e::15)
 with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9791.32; Wed, 15 Apr
 2026 11:37:21 +0000
Received: from CO1PEPF00012E7D.namprd03.prod.outlook.com
 (2603:10b6:a03:2ef:cafe::a4) by SJ0PR03CA0208.outlook.office365.com
 (2603:10b6:a03:2ef::33) with Microsoft SMTP Server (version=TLS1_3,
 cipher=TLS_AES_256_GCM_SHA384) id 15.20.9769.44 via Frontend Transport; Wed,
 15 Apr 2026 11:37:21 +0000
Received: from satlexmb08.amd.com (165.204.84.17) by
 CO1PEPF00012E7D.mail.protection.outlook.com (10.167.249.52) with Microsoft
 SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id
 15.20.9769.17 via Frontend Transport; Wed, 15 Apr 2026 11:37:20 +0000
Received: from SATLEXMB04.amd.com (10.181.40.145) by satlexmb08.amd.com
 (10.181.42.217) with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.2.2562.17; Wed, 15 Apr
 2026 06:37:19 -0500
Received: from satlexmb07.amd.com (10.181.42.216) by SATLEXMB04.amd.com
 (10.181.40.145) with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2507.39; Wed, 15 Apr
 2026 06:37:19 -0500
Received: from XIR-MICHALO-L1.xilinx.com (10.180.168.240) by
 satlexmb07.amd.com (10.181.42.216) with Microsoft SMTP Server id 15.2.2562.17
 via Frontend Transport; Wed, 15 Apr 2026 06:37:18 -0500
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@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=BFMqWsGHznRzvoBXDTBOQmCQkHNGoYGtOwFw0gs2uOOmeSQEm9S8QD+A7P0L51uEl46mXcHH9G0X/HQ/GgYDLLoujyHEFit1Ekyxmv1iU3+lbQ6XlKw2idsf7gFYCzFKZzaog9J0gZWKwZ5qLoIyZnwyANH02gs8XuWPhoLFVinVkT0AF/3aDaeYsy5MFjTvlu2db0pcDIhVhCWmsRGizseC0yNNKb94LKGlXBz05Ve1Zb25oQvxEKm8RQuAFWEwu6ySVEPCDunm8ptJ98hrnPMqeMq/oBE6c8J8vDxNd2nRoAQI4cwbLruB3QmjgWsFW1vzLinusEfUprDsnAQYEA==
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com;
 s=arcselector10001;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1;
 bh=D4OWT3wEIvjpzw9Xkvlr6Mw8vRGWd6LHuIzfFhcybcE=;
 b=iHH9aSJ+FR0xZqG5ECX5V3pYjWly6vk9xb0frxqz3RuZy1vsD2KS+sMr16kRvOKV6CezaZrywZTxLM08/JizotXkhP6LK74Ikhc6BPOAlXQ6nQO1TAAsLwUUMBJuII0+ZJLumakdjgyAd1pdjZkH24KcQsY6EL56Uf8otCzpAE0p6aJGAB9a2Y54wfyGbYiKM166gzjg1mh/xTplDnjoOVAYXN5SzMj7NdAqhuMFdSDPN91y5CcUySwTsNOwCqBQI+8w45h1K2PUpOJmTtxFrrDMTIw0O+MUJtPbbAbwk1qyWMjDAnnRK6dleC/jfOHBU1B+yM7IQatVQC4/051e3w==
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=D4OWT3wEIvjpzw9Xkvlr6Mw8vRGWd6LHuIzfFhcybcE=;
 b=bElhxLrn5fOhoh7zsIG8rNp/tonKNicY3yvXmkMZkqYZW1WZ8ZNcOECGFKD2N0YOZNzOri7hi7nF501jTmror80iXK6jxL/4zm0fcXYkJlqcR1hl7jT2cu7mPYdap5+7UXhTw+ArQq6nIdW/ni+vrzMxC88x5E+1WWrMqqghrt8=
X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 165.204.84.17)
 smtp.mailfrom=amd.com; dkim=none (message not signed)
 header.d=none;dmarc=pass action=none header.from=amd.com;
Received-SPF: Pass (protection.outlook.com: domain of amd.com designates
 165.204.84.17 as permitted sender) receiver=protection.outlook.com;
 client-ip=165.204.84.17; helo=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>
Subject: [PATCH 5/6] xen/dt-overlay: support phandle-based targeting in overlay_get_nodes_info
Date: Wed, 15 Apr 2026 13:36:59 +0200
Message-ID: <20260415113700.107915-6-michal.orzel@amd.com>
X-Mailer: git-send-email 2.43.0
In-Reply-To: <20260415113700.107915-1-michal.orzel@amd.com>
References: <20260415113700.107915-1-michal.orzel@amd.com>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit
Content-Type: text/plain
Received-SPF: None (SATLEXMB04.amd.com: michal.orzel@amd.com does not
 designate permitted sender hosts)
X-EOPAttributedMessage: 0
X-MS-PublicTrafficType: Email
X-MS-TrafficTypeDiagnostic: CO1PEPF00012E7D:EE_|BL4PR12MB9484:EE_
X-MS-Office365-Filtering-Correlation-Id: a3562573-1ea7-4114-f66a-08de9ae35ada
X-MS-Exchange-SenderADCheck: 1
X-MS-Exchange-AntiSpam-Relay: 0
X-Microsoft-Antispam:
	BCL:0;ARA:13230040|376014|36860700016|82310400026|1800799024|22082099003|18002099003|56012099003;
X-Microsoft-Antispam-Message-Info:
	pfzXJtEAUbsowuNyJqo3RkzJ+U4keejQBjqn4ymkRLVBPUH0FEN9YCQk1LTeJ5ia/l6h7YQ9wR0deLtmtL49jwFWNNPaT1XRLtDPXATq+SX6OWRcUGPISdpjSA4qR0lg15mYolWVsBjrYGyezeSQjutMNlnE02zbYIb1YJjQc6+cjnd+wEFbJnyFVrWtsUtCchZR/gsbaJaZuf7KmqyCCDW7wnMdXev6fdi9fOqaLk3MwatJQdGi7xFE7BSEbAgVQ5umba7CfOpRf6lTzgkgHuWtARq+fGMArXC6WI5b8Zoa96rF9+7Nivt1sNN4rAjKbqGTgA6HVNn4N7DR20zGlLSwQeKnRYsMku7H4BKTd7YGLuZTpaJD7O9Q6Xo2PrZRqy5pVJaEImgo2cobCvi+CG6TU3etAobdVm5RPe2ZXxvURl385G1MUiDCUzW/f5rnphroHD6ciocsw3O2zyXpE1sg9ksojHtiJwGiOtb5FwPfw90sHi046QGjWgCpfninwx8XD6bp4urF8t823u25URRm1P1WhF59chJ6u1W3JQ//+t+6uX/ow4o1wpoBt9eSHynyUHGSsTiE5J6hCLwNdVXaTNSN4IOig8r5k1FXle6mjH/nwCqjjRd6oKB4LJ7zrckVjkgRi3Rq6EXeQluqZoqJH0seSsrORUTjI6FA0rQSSYlmhz8QXWWj2DFNX3nyvXYvNTFwjfSfOIeE0iorXTbKLd1mHtHFfsFk5VcSqAbVV/OLBHTvgKMtX94374rULmRSfT5OuljtX/pvy3JRiQ==
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)(36860700016)(82310400026)(1800799024)(22082099003)(18002099003)(56012099003);DIR:OUT;SFP:1101;
X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1
X-MS-Exchange-AntiSpam-MessageData-0:
	K9SoG0BYfzgMKjd46y0D4bnfU9nHxGrGzrojGF2DYRTTlyJ3y5xbTcdHh/HWXJebvD9Px7pl8rigf3CtC7FC0vL0v4ZjjQurNMenlqUk84aMmx936AD8FbxUuzlzHbL2wV5J2toufvI1xjRIhDBTSXe6ELRsIhLJZ+o00lnjW8xhC/nS8kjzjJhlss8zMg4Yb7b/wTctLOyOXRXG+vZSZ5cYJaY/Obd3PDZw6nAMV4+Kw7mxgfO7wX4Tyefo4mmTbabvegugXAwrMLB8FiVG5DRz/NMBF+ZOHVv6bKAg1Bah/dTLivFqhPqYiwZShEmsHax2jF746hG+4x5qdHG6J9Cn0UnwJV4yf3E0bap2knt6pnGjpDChvs4cHcl6G0+4ySCXtU6nVlKFSajAMCEcMDOv3ExIbJEWras2rSMhhkXPjT+NRzhcYDOM4lPFjYQr
X-OriginatorOrg: amd.com
X-MS-Exchange-CrossTenant-OriginalArrivalTime: 15 Apr 2026 11:37:20.4402
 (UTC)
X-MS-Exchange-CrossTenant-Network-Message-Id: a3562573-1ea7-4114-f66a-08de9ae35ada
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:
	CO1PEPF00012E7D.namprd03.prod.outlook.com
X-MS-Exchange-CrossTenant-AuthAs: Anonymous
X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem
X-MS-Exchange-Transport-CrossTenantHeadersStamped: BL4PR12MB9484
X-purgate-ID: tlsNG-4011c0/1776253045-0EF4B0B1-E223FD59/0/0
X-purgate-type: clean
X-purgate-size: 4420

overlay_get_nodes_info() is called before fdt_overlay_apply() to extract
target paths from the overlay. This fails for overlays using phandle-based
targeting (target = <&label>) because DTC compiles these as unresolved
fixups (target = <0xffffffff>), causing fdt_overlay_target_offset() to
return -FDT_ERR_BADPHANDLE. Prior to this change users were forced to
manually modify the dtbo (even for hwdom) to switch from target to
target-phandle by manually inspecting also the host DTB.

Introduce overlay_get_target_path() which directly handles the two
targeting cases that occur before fixup resolution:
 - target-path: the string property is returned directly.
 - target = <&label>: the label is found in the overlay's __fixups__
   node, then resolved to a path via the base DTB's __symbols__ node.

Signed-off-by: Michal Orzel <michal.orzel@amd.com>
---
 xen/common/device-tree/dt-overlay.c | 65 ++++++++++++++++++++++++++---
 1 file changed, 59 insertions(+), 6 deletions(-)

diff --git a/xen/common/device-tree/dt-overlay.c b/xen/common/device-tree/dt-overlay.c
index d3d4669718ac..a0dee7edb7e5 100644
--- a/xen/common/device-tree/dt-overlay.c
+++ b/xen/common/device-tree/dt-overlay.c
@@ -286,6 +286,63 @@ static unsigned int overlay_node_count(const void *overlay_fdt)
     return num_overlay_nodes;
 }
 
+/*
+ * Resolve the target path for an overlay fragment.
+ *
+ * This is called before fdt_overlay_apply(), so phandle-based targets
+ * (target = <&label>) are still unresolved (compiled as 0xffffffff by DTC).
+ * Handle the two cases that actually occur:
+ *  - target-path property: the path string is used directly,
+ *  - target = <&label>: the label is looked up in the overlay's __fixups__
+ *    node, then resolved to a path via the base DTB's __symbols__ node.
+ *
+ * Returns a pointer into the FDT on success, NULL on failure.
+ */
+static const char *overlay_get_target_path(const void *fdt, const void *fdto,
+                                           int fragment)
+{
+    const char *path, *fragment_name;
+    int fixups_off, symbols_off, property;
+    int fragment_name_len;
+
+    /* Try target-path first (string-based targeting) */
+    path = fdt_getprop(fdto, fragment, "target-path", NULL);
+    if ( path )
+        return path;
+
+    /* Phandle-based target: resolve via __fixups__ and __symbols__ */
+    fixups_off = fdt_path_offset(fdto, "/__fixups__");
+    if ( fixups_off < 0 )
+        return NULL;
+
+    symbols_off = fdt_path_offset(fdt, "/__symbols__");
+    if ( symbols_off < 0 )
+        return NULL;
+
+    fragment_name = fdt_get_name(fdto, fragment, &fragment_name_len);
+    if ( !fragment_name )
+        return NULL;
+
+    fdt_for_each_property_offset(property, fdto, fixups_off)
+    {
+        const char *val, *label, *p;
+        int val_len;
+
+        val = fdt_getprop_by_offset(fdto, property, &label, &val_len);
+        if ( !val )
+            continue;
+
+        /* Match entries of the form "/<fragment_name>:target:0" */
+        for ( p = val; p < (val + val_len); p += (strlen(p) + 1) )
+            if ( p[0] == '/' &&
+                 !strncmp(p + 1, fragment_name, fragment_name_len) &&
+                 !strcmp(p + 1 + fragment_name_len, ":target:0") )
+                return fdt_getprop(fdt, symbols_off, label, NULL);
+    }
+
+    return NULL;
+}
+
 /*
  * overlay_get_nodes_info gets full name with path for all the nodes which
  * are in one level of __overlay__ tag. This is useful when checking node for
@@ -298,7 +355,6 @@ static int overlay_get_nodes_info(const void *fdto, char **nodes_full_path)
 
     fdt_for_each_subnode(fragment, fdto, 0)
     {
-        int target;
         int overlay;
         int subnode;
         const char *target_path;
@@ -307,11 +363,8 @@ static int overlay_get_nodes_info(const void *fdto, char **nodes_full_path)
         if ( overlay < 0 )
             continue;
 
-        target = fdt_overlay_target_offset(device_tree_flattened, fdto,
-                                           fragment, &target_path);
-        if ( target < 0 )
-            return target;
-
+        target_path = overlay_get_target_path(device_tree_flattened, fdto,
+                                              fragment);
         if ( target_path == NULL )
             return -EINVAL;
 
-- 
2.43.0



From xen-devel-bounces@lists.xenproject.org Wed Apr 15 11:37:31 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 15 Apr 2026 11:37:31 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1282286.1564940 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wCyYk-0003f8-W4; Wed, 15 Apr 2026 11:37:30 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1282286.1564940; Wed, 15 Apr 2026 11:37: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 1wCyYk-0003eu-Sm; Wed, 15 Apr 2026 11:37:30 +0000
Received: by outflank-mailman (input) for mailman id 1282286;
 Wed, 15 Apr 2026 11:37:30 +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 1wCyYj-0003d5-TY
 for xen-devel@lists.xenproject.org; Wed, 15 Apr 2026 11:37:30 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wCyYj-009G4C-AE
 for xen-devel@lists.xenproject.org; Wed, 15 Apr 2026 13:37:29 +0200
Received: from [10.42.69.1] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <Michal.Orzel@amd.com>)
 id 69df786f-bab6-0a2a0a5309dd-0a2a4501ad1e-38
 for <xen-devel@lists.xenproject.org>; Wed, 15 Apr 2026 13:37:28 +0200
Received: from [52.101.62.13]
 (helo=DM5PR21CU001.outbound.protection.outlook.com)
 by tlsNG-d62444.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.1)
 (envelope-from <Michal.Orzel@amd.com>)
 id 69df7877-c1f2-0a2a45010019-34653e0db0fb-3
 for <xen-devel@lists.xenproject.org>; Wed, 15 Apr 2026 13:37:28 +0200
Received: from BL1PR13CA0127.namprd13.prod.outlook.com (2603:10b6:208:2bb::12)
 by BY5PR12MB4274.namprd12.prod.outlook.com (2603:10b6:a03:206::18)
 with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9818.20; Wed, 15 Apr
 2026 11:37:22 +0000
Received: from BL02EPF0001A108.namprd05.prod.outlook.com
 (2603:10b6:208:2bb:cafe::ac) by BL1PR13CA0127.outlook.office365.com
 (2603:10b6:208:2bb::12) with Microsoft SMTP Server (version=TLS1_3,
 cipher=TLS_AES_256_GCM_SHA384) id 15.20.9769.48 via Frontend Transport; Wed,
 15 Apr 2026 11:37:21 +0000
Received: from satlexmb07.amd.com (165.204.84.17) by
 BL02EPF0001A108.mail.protection.outlook.com (10.167.241.138) with Microsoft
 SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id
 15.20.9769.17 via Frontend Transport; Wed, 15 Apr 2026 11:37:21 +0000
Received: from SATLEXMB04.amd.com (10.181.40.145) by satlexmb07.amd.com
 (10.181.42.216) with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.2.2562.17; Wed, 15 Apr
 2026 06:37:21 -0500
Received: from satlexmb07.amd.com (10.181.42.216) by SATLEXMB04.amd.com
 (10.181.40.145) with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2507.39; Wed, 15 Apr
 2026 06:37:21 -0500
Received: from XIR-MICHALO-L1.xilinx.com (10.180.168.240) by
 satlexmb07.amd.com (10.181.42.216) with Microsoft SMTP Server id 15.2.2562.17
 via Frontend Transport; Wed, 15 Apr 2026 06:37:19 -0500
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@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=TnvBxuQMmquKtqShmz937brUuJ6TEc+gg/BKX79O8gv78IFGgxDNkDnk+grj6cO9dilN9puMTH064t1XrZVdkq+qXtZeAQMZpYMbqQ4bhO7zcbFBaFjuQpafhL8RmKojaPBirB7QAtjiuG3Slq30T3HwtGiie2tPi92Nlur0xb2YnqK8KB+YnnnBABVIe+SPRdYJM9zaB7m7cg3YC4MCSvEszXAHvl6HuriVPnUoLhdCs3GM2JIZGdtyATVbQ6WUfr2F9ukYWPZiV4wcoJAeJQy2RevtgrXZqKZTTBrj5nuNXqgcq4TZqmr0hYI/e2L0gOtWlEScuFZA+rgm8xvTdw==
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com;
 s=arcselector10001;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1;
 bh=hB9ytw7x4Jebi3tKWGpsuYy48KxopqXnvHggFtPWCpA=;
 b=vG9KHq+Z/zo7gKfyWrR0nawQVUg0EReTNshHS1zIr+uxjl3l/RlmAfF2xQ6fQ4ltbv+4F9VgRepkkWnwY0hnK56pfD4mLVCLan6woORMcSUtMGgEVPtUAur2kETihcWqnhfEwbnXs0SO+iXOE44lnRyiwqCOjp/0EmTPEaq4V2WfNA9ldLLj7XwiVr4T7MLlrkDaSqjR0r89/9zEFfL28wuiQacMU9pU7K7IaL2ZdQJIQhl17jHSdlR//Arf3ET+SBeMrOgtm6kGfwkaPoWVnBtwz6yqZVFYZv8lFXb7wggU8x+pWyzFFPOVq9AbblnkinVuHZpiFLAvGh/WkML/mw==
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=hB9ytw7x4Jebi3tKWGpsuYy48KxopqXnvHggFtPWCpA=;
 b=1CQ+8XlZ4b3Aylscw8z565+l0IIAWcsewYxcWshNYwQYA35rK+JP53b1ydMowljyJ+x49yqwaB4u7uWpYMzls3ueXuB7vFASQDpOS0iA/LbeQsJomliQhf3ewJ+YhF052jIyEuxARYpt0SzwvNT5TobJCFIY3uabr9nHiSd22KY=
X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 165.204.84.17)
 smtp.mailfrom=amd.com; dkim=none (message not signed)
 header.d=none;dmarc=pass action=none header.from=amd.com;
Received-SPF: Pass (protection.outlook.com: domain of amd.com designates
 165.204.84.17 as permitted sender) receiver=protection.outlook.com;
 client-ip=165.204.84.17; helo=satlexmb07.amd.com; pr=C
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>
Subject: [PATCH 6/6] xen/dt-overlay: attach resources for child nodes in overlay
Date: Wed, 15 Apr 2026 13:37:00 +0200
Message-ID: <20260415113700.107915-7-michal.orzel@amd.com>
X-Mailer: git-send-email 2.43.0
In-Reply-To: <20260415113700.107915-1-michal.orzel@amd.com>
References: <20260415113700.107915-1-michal.orzel@amd.com>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit
Content-Type: text/plain
Received-SPF: None (SATLEXMB04.amd.com: michal.orzel@amd.com does not
 designate permitted sender hosts)
X-EOPAttributedMessage: 0
X-MS-PublicTrafficType: Email
X-MS-TrafficTypeDiagnostic: BL02EPF0001A108:EE_|BY5PR12MB4274:EE_
X-MS-Office365-Filtering-Correlation-Id: ebca11c2-b8ac-48be-c02a-08de9ae35b9d
X-MS-Exchange-SenderADCheck: 1
X-MS-Exchange-AntiSpam-Relay: 0
X-Microsoft-Antispam:
	BCL:0;ARA:13230040|376014|82310400026|1800799024|36860700016|22082099003|18002099003|56012099003;
X-Microsoft-Antispam-Message-Info:
	9RImkJQnJ+WV95qZw95lkOzhmA/9P6Mfh4ocIDZj3qkLRIYJv5gYzkfSw9WB27SRCh3Sbkaw5PcjkRI2CVt1iHrJ/P7cLKtsjao4azKzCIjELfPfLGR8bce93ocIgC+yy2KnxCJDYe/d9G3tfCdSD/pxn9e9DMq2TjYL7xC2wCD/Yxz7naOWerg7ktV8DDlxEcFI5Z4U3eqf9ctCRU+A7hnMZAKQNpugwnjiiYgKv/wMfrQ1OvyXW9d/Dbh44qt7W6btaTZ4sZ9HRh1HylQWWO9uGHi/BowN+HXwuAKwY36526gE17Q4XnLVNH58D+iBRJjJoueFd6e8u0qZeAVNFmBoJFg0MsTDjf/hrmIxRzkoEEldUMk1fiG2N50S/W7+GA7vCllZrUvwg8aKhyt+CDF+mHDDUGdCO+skLpXukNbU4K5l6B22nmFkfqHmwleR63iDOB7V8WjcI3airv01mslxk4580pvM38d0CZYwkaKKwgkU4AmR0BmWtJIKPDz4J73YeXHA1yP/caGss6VKZxeiZNrICLzq1b1K9u8BC09IYqZccSpCdJnvR0a0uKIvUh7iVJB6S46B5eMvGAB1ba79dOsVFoHP79U/noC5SZklsfnDvBAZ0sHYFdVf9+KT7oLdt4fwnqCB35x5Eyh0znyY+k0RLX9t0Jrc1TQNdhb7yndyPWmbdTy7rtJbtCg5/XDmNvk241A/hFlRdU22iCdpHBVBvLDNjUo6WDMD3ihP6uPLyz+vtzwcR4Ic3Blme+vOGpjGefXK/lmV9iW2Ow==
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)(1800799024)(36860700016)(22082099003)(18002099003)(56012099003);DIR:OUT;SFP:1101;
X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1
X-MS-Exchange-AntiSpam-MessageData-0:
	d4e1tmwLxaa5YXwxN/kTc80whTCvrybkqEOdlj/R9aA4PZO6Wb3EKriN2AS1Sut16cH/ig/6Ket7fxx8kr5LHu3a8f7nIbf7Q9Ws9fLMpTfnxwVtQ+u1OIuIVflaMosFEfiqFa74jVZTg8cAjotAv0fFmCIYmbZD4Hfl3dhvXFUOl2ndr+uMZyZ910r7/nzOx4vsIeD5PUkH0n4vfscnbgy30DephGscKUN7EMiFXkbDzWfj8k2CUZt9Z+iCrxNC0iaZsFSDclAxDq/CpcTz9I/4QI+96hFN+O3fhemuz1Fqgw4q0Ecx/MShnGxFn9zWtoJXvEbxQr1uMzOk6i4qR8BVRktoKdlN5pAdx9DbR6H+lUociktqJ5eZaUBcWZuRXnyOiuKAPPLu+iT74cMuCV0DKL1FHon3pHSJ1rrMGJNfo+f/aRTX+4DzIe3XR20h
X-OriginatorOrg: amd.com
X-MS-Exchange-CrossTenant-OriginalArrivalTime: 15 Apr 2026 11:37:21.8040
 (UTC)
X-MS-Exchange-CrossTenant-Network-Message-Id: ebca11c2-b8ac-48be-c02a-08de9ae35b9d
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:
	BL02EPF0001A108.namprd05.prod.outlook.com
X-MS-Exchange-CrossTenant-AuthAs: Anonymous
X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem
X-MS-Exchange-Transport-CrossTenantHeadersStamped: BY5PR12MB4274
X-purgate-ID: tlsNG-d62444/1776253048-B4E13FF4-14468FCA/0/0
X-purgate-type: clean
X-purgate-size: 3237

handle_attach_overlay_nodes() only calls handle_device() on the
top-level overlay nodes tracked in entry->nodes_address[].  Child nodes
that have their own reg, interrupts, or iommus properties are never
processed, so their IRQs are not routed, MMIO regions are not mapped,
and IOMMU setup is skipped.

Introduce handle_device_and_children() which recursively walks the
subtree rooted at each overlay node and calls handle_device() on every
descendant, ensuring all resources in the overlay are properly attached.

Note that the attach error path has a pre-existing bug: on partial
failure, the tracking rangesets are destroyed without first revoking the
IRQ/MMIO permissions and IOMMU assignments that were already granted by
the successful handle_device() calls.  Add a TODO comment to flag this.

Signed-off-by: Michal Orzel <michal.orzel@amd.com>
---
 xen/common/device-tree/dt-overlay.c | 34 +++++++++++++++++++++++++++--
 1 file changed, 32 insertions(+), 2 deletions(-)

diff --git a/xen/common/device-tree/dt-overlay.c b/xen/common/device-tree/dt-overlay.c
index a0dee7edb7e5..b837f1112188 100644
--- a/xen/common/device-tree/dt-overlay.c
+++ b/xen/common/device-tree/dt-overlay.c
@@ -894,6 +894,30 @@ static long handle_add_overlay_nodes(void *overlay_fdt,
     return rc;
 }
 
+static int handle_device_and_children(struct domain *d,
+                                      struct dt_device_node *dev,
+                                      p2m_type_t p2mt,
+                                      struct rangeset *iomem_ranges,
+                                      struct rangeset *irq_ranges)
+{
+    int rc;
+    struct dt_device_node *child;
+
+    rc = handle_device(d, dev, p2mt, iomem_ranges, irq_ranges);
+    if ( rc )
+        return rc;
+
+    dt_for_each_child_node(dev, child)
+    {
+        rc = handle_device_and_children(d, child, p2mt,
+                                        iomem_ranges, irq_ranges);
+        if ( rc )
+            return rc;
+    }
+
+    return 0;
+}
+
 static long handle_attach_overlay_nodes(struct domain *d,
                                         const void *overlay_fdt,
                                         uint32_t overlay_fdt_size)
@@ -951,8 +975,9 @@ static long handle_attach_overlay_nodes(struct domain *d,
         }
 
         write_lock(&dt_host_lock);
-        rc = handle_device(d, overlay_node, p2m_mmio_direct_c,
-                           entry->iomem_ranges, entry->irq_ranges);
+        rc = handle_device_and_children(d, overlay_node, p2m_mmio_direct_c,
+                                        entry->iomem_ranges,
+                                        entry->irq_ranges);
         write_unlock(&dt_host_lock);
         if ( rc )
         {
@@ -968,6 +993,11 @@ static long handle_attach_overlay_nodes(struct domain *d,
  out:
     spin_unlock(&overlay_lock);
 
+    /*
+     * TODO: IRQ/MMIO permissions and IOMMU assignments granted by
+     * handle_device() before the failure are not revoked here.  We only
+     * destroy the tracking rangesets, leaking the actual grants.
+     */
     if ( entry )
     {
         rangeset_destroy(entry->irq_ranges);
-- 
2.43.0



From xen-devel-bounces@lists.xenproject.org Wed Apr 15 11:37:31 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 15 Apr 2026 11:37:31 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1282281.1564912 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wCyYf-0002rD-TK; Wed, 15 Apr 2026 11:37:25 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1282281.1564912; Wed, 15 Apr 2026 11:37: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 1wCyYf-0002r6-PH; Wed, 15 Apr 2026 11:37:25 +0000
Received: by outflank-mailman (input) for mailman id 1282281;
 Wed, 15 Apr 2026 11:37:24 +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 1wCyYe-0002d0-7r
 for xen-devel@lists.xenproject.org; Wed, 15 Apr 2026 11:37:24 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wCyYd-00EiIN-Kx
 for xen-devel@lists.xenproject.org; Wed, 15 Apr 2026 13:37:23 +0200
Received: from [10.42.69.7] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <Michal.Orzel@amd.com>)
 id 69df786a-5cb7-0a2a0a5109dd-0a2a4507bd00-42
 for <xen-devel@lists.xenproject.org>; Wed, 15 Apr 2026 13:37:23 +0200
Received: from [40.107.200.54]
 (helo=CH5PR02CU005.outbound.protection.outlook.com)
 by tlsNG-ef75cf.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.0)
 (envelope-from <Michal.Orzel@amd.com>)
 id 69df7871-ba2d-0a2a45070019-286bc836ac84-3
 for <xen-devel@lists.xenproject.org>; Wed, 15 Apr 2026 13:37:23 +0200
Received: from BYAPR02CA0043.namprd02.prod.outlook.com (2603:10b6:a03:54::20)
 by LV2PR12MB5824.namprd12.prod.outlook.com (2603:10b6:408:176::19)
 with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9791.34; Wed, 15 Apr
 2026 11:37:15 +0000
Received: from CO1PEPF00012E80.namprd03.prod.outlook.com
 (2603:10b6:a03:54:cafe::6) by BYAPR02CA0043.outlook.office365.com
 (2603:10b6:a03:54::20) with Microsoft SMTP Server (version=TLS1_3,
 cipher=TLS_AES_256_GCM_SHA384) id 15.20.9769.49 via Frontend Transport; Wed,
 15 Apr 2026 11:37:15 +0000
Received: from satlexmb08.amd.com (165.204.84.17) by
 CO1PEPF00012E80.mail.protection.outlook.com (10.167.249.55) with Microsoft
 SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id
 15.20.9769.17 via Frontend Transport; Wed, 15 Apr 2026 11:37:15 +0000
Received: from SATLEXMB04.amd.com (10.181.40.145) by satlexmb08.amd.com
 (10.181.42.217) with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.2.2562.17; Wed, 15 Apr
 2026 06:37:14 -0500
Received: from satlexmb07.amd.com (10.181.42.216) by SATLEXMB04.amd.com
 (10.181.40.145) with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2507.39; Wed, 15 Apr
 2026 06:37:14 -0500
Received: from XIR-MICHALO-L1.xilinx.com (10.180.168.240) by
 satlexmb07.amd.com (10.181.42.216) with Microsoft SMTP Server id 15.2.2562.17
 via Frontend Transport; Wed, 15 Apr 2026 06:37:13 -0500
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@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=eIOVP1pq34duUHo5i2GxCl23UlwJTbMy5nxJphsYdCuqdn5dVU0JNcV4098vB59WAHcF0iABR4g3n7QKCNCECPG9bm5wLfoHjeazfJsI5uCqzps8ZgcTHqObFu5hzsp1oxYu2OUce7vJ7sKTVmHkCQ668T7OH2r6ZaTVy5tRpjTl3R0nGQe5YXZLHv4Pk3yKqsWkHHoDfxD5suCJ8qHGtFRseG4JTMaRqIpzYwvl+4svGX8zscAUG0Df5KBkl7Z0Pan37Z5Sg+BacybO4YUG62XbUC1gZeoWOHiUYHmIkK7Jq8mXt3ZhMrfvSLdN+muHzS4AwraLp6XQI2GKoakALQ==
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com;
 s=arcselector10001;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1;
 bh=EZfueW+bKtEtsepdRhebqYHJ0nLM0ZVvpZlJIzZj62s=;
 b=lEaXK0HisMtgZXPLUUFLrynEtYWUmG0WKOV0n4wsrI0XfBw6r1suvNRQ+RQZtofWWwswN6BTa56+qRHveSwRVcG4EbprDDVOffiblIp6qIHbLstJMGvfE73Qi/ppIZTD2gG8loUFpwmtCz1XCGZi+l4k5AmJgZm0kpSVTXdkANs9SlnrBfRN6lq88ePzXr3CbIA7Vf2+Pe/mrxrE99Vv+wQXccvB4QEaPXnIDjEC+G0wtsOSh9PCJn/gnNv9C3JLOEDBppgQ6Y1d5baMzTQG0QxRtBpTh9k+BP2YaDQynbO5C3FN6NhO7HtrGHvIfhuE+6/vm1lDYI2wg9UVwW3J9A==
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=EZfueW+bKtEtsepdRhebqYHJ0nLM0ZVvpZlJIzZj62s=;
 b=OzfMrVrA4AmoDbJP4E59sNfkcNsYP1zvnATR+21kIJLfg2RTjNQLP5MycEUEctk7FXWZllr38SJHtyjWyeJ5EunxLfZ3BsIimrnEGBzlBKnL9f9a4mOCnehPmsxrwNGsZLyF6rxjPXkK9vRg/zxmDzfgWE9+3l1UhKNIuo3LQyY=
X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 165.204.84.17)
 smtp.mailfrom=amd.com; dkim=none (message not signed)
 header.d=none;dmarc=pass action=none header.from=amd.com;
Received-SPF: Pass (protection.outlook.com: domain of amd.com designates
 165.204.84.17 as permitted sender) receiver=protection.outlook.com;
 client-ip=165.204.84.17; helo=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>, Jan Beulich <jbeulich@suse.com>
Subject: [PATCH 2/6] xen/dt-overlay: fix rangeset leak and dead code in domctl path
Date: Wed, 15 Apr 2026 13:36:56 +0200
Message-ID: <20260415113700.107915-3-michal.orzel@amd.com>
X-Mailer: git-send-email 2.43.0
In-Reply-To: <20260415113700.107915-1-michal.orzel@amd.com>
References: <20260415113700.107915-1-michal.orzel@amd.com>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit
Content-Type: text/plain
Received-SPF: None (SATLEXMB04.amd.com: michal.orzel@amd.com does not
 designate permitted sender hosts)
X-EOPAttributedMessage: 0
X-MS-PublicTrafficType: Email
X-MS-TrafficTypeDiagnostic: CO1PEPF00012E80:EE_|LV2PR12MB5824:EE_
X-MS-Office365-Filtering-Correlation-Id: 0a18a0f7-b228-4b80-4af8-08de9ae357a7
X-MS-Exchange-SenderADCheck: 1
X-MS-Exchange-AntiSpam-Relay: 0
X-Microsoft-Antispam:
	BCL:0;ARA:13230040|36860700016|82310400026|376014|1800799024|22082099003|18002099003|56012099003;
X-Microsoft-Antispam-Message-Info:
	qPO6hjxaGQmUMM0azdX7IAkw1TgaZHb8DRgEvjRavQu0YShdXRCgkYVLVrl0uWVAfOe2FRlRchX+t1tytk6diDC5BW256Fh0hoWD36VkaFd/qvn0iTcSac3PdsBCZvSEwdYaXtgORC30W2cng/Lq6YMuoIzr8bm8ZVLExscF1FaMAMO4mmkYLVWhThjYJ4tQVXvjRxfa2XpIZJLgnTn7x/v6iDZO5O4dhFl7Z4Jh/3RXdqr7/paaXgPOrKMv/pEDkPk8jUMG3ozO2SVPr95bUuhRokF9autwIKbzrQizhcCkv5lNNCMWdIb8jnvDTpFoqDV8EUtzccu+uXbPNbVQn4UmSqJwlDtjJJji8O62C8chZ6mPPAp3l1WQ/ibjx8n51bfujvNmhjc8xm43ufyMTXHHVTts2koAepmomyVjPgSuJTIEeMm4Xf/hodJE8TouLhDTu+XrshSTSa6x+aLgK+rosZlN0Xbf/qT9jqVYnTf9ZqqYwM9TGsxXxrkqDmyMoZd5JFyX/ZAUQoGChRGsc5UkBPpIRmtHAPJdk35umU6JQDblQMXd6WVyj6ViTnEG9GY76n0ZIa2AMW05EpbwC0Su3W9eP5kV2GX8kF/RMUnxc7F28qITxQ5o4kboCSGG//xejKcV2Edss0zbuBmaGvSazMh6dlypELKJEzKWxvXNy6pc6m9/rtREo9ZszAQUtnME880U0uKdP/QNjhcqkSJobRaaD7nBUUKI+ELhKEprzjgSMAqwUIM5XS3NXdWjYARgSdoLgjzEAt2P9iwC1g==
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)(1800799024)(22082099003)(18002099003)(56012099003);DIR:OUT;SFP:1101;
X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1
X-MS-Exchange-AntiSpam-MessageData-0:
	r8eGcTweoxaoizso/jawi6TBDH9VsDrrV405uLEjr/LX4WjStm3Gh08q8uSuDs8mfBB1vOBlqWE6weWaG0BXC/0ZXtuAeISFaGa9FLO9ODUMex45TSn8P3YnWAUjDUOVyz32K7dUIWB/UL5u026Q/ta4ha43py1rTzzgVpAxSsFFjGEBBxW0wnTASQsHnNYZB5z95PpVrhGxl2pMM3OByQYXOFKNawJ55706RqbcMvMTcQZcPyPjpR1BAIJXWevX9f4lRwVh175V1q78S+sc9imVWY1mZ8TfzEE1L9g61Lo/ALyw90y4sqjVaEwLenS5JEbJgya/Qe6BMcYdIV6M92Bc7JmhCJxDuGr/oZMap4shNu+IPVHItcTftjo6Lzu7cr65Fl0YHH+jF9183IahoBKQyWBH+GCRAT66hP+jI7WsiVcaBWH4g4FhuwTZeov+
X-OriginatorOrg: amd.com
X-MS-Exchange-CrossTenant-OriginalArrivalTime: 15 Apr 2026 11:37:15.0932
 (UTC)
X-MS-Exchange-CrossTenant-Network-Message-Id: 0a18a0f7-b228-4b80-4af8-08de9ae357a7
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:
	CO1PEPF00012E80.namprd03.prod.outlook.com
X-MS-Exchange-CrossTenant-AuthAs: Anonymous
X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem
X-MS-Exchange-Transport-CrossTenantHeadersStamped: LV2PR12MB5824
X-purgate-ID: tlsNG-ef75cf/1776253043-13D4741E-B85B477E/0/0
X-purgate-type: clean
X-purgate-size: 1822

handle_attach_overlay_nodes() unconditionally creates new rangesets
without checking whether they already exist from a prior attach. A
repeated attach for the same overlay leaks the original pair. Reject the
operation with -EEXIST if rangesets are already present.

Also, dt_overlay_domctl() early-returns -EOPNOTSUPP for any operation
other than ATTACH, making the if/else at the bottom unreachable. Remove
the dead branch.

Fixes: 4c733873b5c2 ("xen/arm: Add XEN_DOMCTL_dt_overlay and device attachment to domains")
Reported-by: Jan Beulich <jbeulich@suse.com>
Signed-off-by: Michal Orzel <michal.orzel@amd.com>
---
 xen/common/device-tree/dt-overlay.c | 12 ++++++++----
 1 file changed, 8 insertions(+), 4 deletions(-)

diff --git a/xen/common/device-tree/dt-overlay.c b/xen/common/device-tree/dt-overlay.c
index 6fa07dbf42a5..3853e6e347fe 100644
--- a/xen/common/device-tree/dt-overlay.c
+++ b/xen/common/device-tree/dt-overlay.c
@@ -861,6 +861,13 @@ static long handle_attach_overlay_nodes(struct domain *d,
         goto out;
     }
 
+    if ( entry->irq_ranges || entry->iomem_ranges )
+    {
+        printk(XENLOG_ERR "Overlay is already attached\n");
+        spin_unlock(&overlay_lock);
+        return -EEXIST;
+    }
+
     entry->irq_ranges = rangeset_new(d, "Overlays: Interrupts", 0);
     if (entry->irq_ranges == NULL)
     {
@@ -991,10 +998,7 @@ long dt_overlay_domctl(struct domain *d, struct xen_domctl_dt_overlay *op)
         return -EFAULT;
     }
 
-    if ( op->overlay_op == XEN_DOMCTL_DT_OVERLAY_ATTACH )
-        ret = handle_attach_overlay_nodes(d, overlay_fdt, op->overlay_fdt_size);
-    else
-        ret = -EOPNOTSUPP;
+    ret = handle_attach_overlay_nodes(d, overlay_fdt, op->overlay_fdt_size);
 
     xfree(overlay_fdt);
 
-- 
2.43.0



From xen-devel-bounces@lists.xenproject.org Wed Apr 15 11:49:14 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 15 Apr 2026 11:49:14 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1282343.1564950 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wCyk0-0007Cj-VK; Wed, 15 Apr 2026 11:49:08 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1282343.1564950; Wed, 15 Apr 2026 11:49: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 1wCyk0-0007Cc-Rj; Wed, 15 Apr 2026 11:49:08 +0000
Received: by outflank-mailman (input) for mailman id 1282343;
 Wed, 15 Apr 2026 11:49:07 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <wlsrbwjd7232@gmail.com>) id 1wCyjz-0007CW-LF
 for xen-devel@lists.xenproject.org; Wed, 15 Apr 2026 11:49:07 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wCyjz-00CsKN-1u
 for xen-devel@lists.xenproject.org; Wed, 15 Apr 2026 13:49:07 +0200
Received: from [10.42.69.11] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <wlsrbwjd7232@gmail.com>)
 id 69df7b28-2eae-0a2a0a5409dd-0a2a450ba75a-32
 for <xen-devel@lists.xenproject.org>; Wed, 15 Apr 2026 13:49:07 +0200
Received: from [74.125.82.52] (helo=mail-dl1-f52.google.com)
 by tlsNG-42698a.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.0)
 (envelope-from <wlsrbwjd7232@gmail.com>)
 id 69df7b31-bca8-0a2a450b0019-4a7d52349400-3
 for <xen-devel@lists.xenproject.org>; Wed, 15 Apr 2026 13:49:06 +0200
Received: by mail-dl1-f52.google.com with SMTP id
 a92af1059eb24-12734af2cdcso566794c88.0
 for <xen-devel@lists.xenproject.org>; Wed, 15 Apr 2026 04:49: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=20251104 header.d=gmail.com header.i="@gmail.com" header.h="Cc:To:Subject:Message-ID:Date:From:In-Reply-To:References:MIME-Version"
ARC-Seal: i=1; a=rsa-sha256; t=1776253745; cv=none;
        d=google.com; s=arc-20240605;
        b=hoX1EA4eaN1rbw6hAXbaL7aKN4xYv6vnfcObrAY8zOb0Zqs4kwLNJXsTzRgHWe8wkY
         a4SYQUKTHKWT7Q6KhMBuQieh0Tidoxm2qcCJJLkMdIff742NOMZxQoYiaNy71Zl9uE7i
         84PxOmsFQ/meT6zhatBF1jcqk3WECkz7KsH/aJMDmrJZQSYw/FY5vT4oWygI70M+0ssA
         n4EfbRLq1TsyjGfPoLlzuDpGLB/y3hl/BBie33fkGOb9UM3AxQx9uzlLYOTkK1JNMtjf
         3yUk+Zs3Ce7IdpJJD5c5CqDHd0poKq6djMyi/n+CKJEgJcCeNpquArY6KtqoITUSSS1P
         WmRA==
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20240605;
        h=cc:to:subject:message-id:date:from:in-reply-to:references
         :mime-version:dkim-signature;
        bh=fF0EDgYzvalXVplasDURxrz1JbxTcNnbbzGMmI0mBAw=;
        fh=55tUfj1WwP7DhKmsv27FhfRdeMgov7mEKJwUGhbYoYE=;
        b=WMKFdwMTqqa7AZKXDkdHR87vMke0rOrN8nOVXURzU1ttr4b6QDsB1+U28lEi/uUZhW
         Q0hR5OONG1TQSwGidv2qgdvI5iz6uZZDkc4h6W1Qi7T7/m4JWidFGpP/r3cuZeTZwtyy
         akDYctfkPMqO5Iq/u+8aqXJay3xI0DS7Dtjf1Wt4l/3zcBGrPcCaSHvTtUOjwbShTs6R
         AZZK/C38kNYJOQH1BRh6MSUjUNXJ4ohZi7obP9ghC/bjkPofhdSEh41emh1xisKYvfxR
         B+BlLq04HzT87BnJHWcRHnQ0GQUYUon34Z+IR5NK+XTl/cuZr9Z7s0zW7RD4lT6AV4r7
         zZ9g==;
        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=20251104; t=1776253745; x=1776858545; darn=lists.xenproject.org;
        h=cc:to:subject:message-id:date:from:in-reply-to:references
         :mime-version:from:to:cc:subject:date:message-id:reply-to;
        bh=fF0EDgYzvalXVplasDURxrz1JbxTcNnbbzGMmI0mBAw=;
        b=jU+DDmVJ/I9t6Wz/ltxFyPWS2s6sD8tb522lV0r/4Pv8U0KUxjID1PJIYILdMrLAOF
         0onwJOt40UnAnno66cZiXsbsaTBojOf6pwb2LCVf/JGXF+U+AlxMkwTt/hes+46waqBt
         c3ZKjWm02moYPWkjL9DDtfEKXm8PouPHeevOXpxOMTv/TwiJFYWsALPwv6SFDGYikhXs
         dKUzqUiBIRzKKc9SpDmE0rrFBgX8LX2GQwK+7pfDFmmRRzP+RV3nH41KuSryjnKp7u4F
         TcsSJvepX3kQWe/KdLPVJ6idVpmD6WU+KB88WM48DQ7vRpiUu6M1YkN6jteYpbDMKGDZ
         V32Q==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20251104; t=1776253745; x=1776858545;
        h=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;
        bh=fF0EDgYzvalXVplasDURxrz1JbxTcNnbbzGMmI0mBAw=;
        b=kamg5K3z8kRTgrl6NrXpLQ+zdjwNyPS5wqgTQLY2mGl9Pv9JljLfo8LQH37/3QwSb5
         zm8VKr6bB7q6aEx+VT3oDTUVfUBBsFW9TotP2PVPRXJ2GmxWASk7pqjTAEEMsrhwjjBO
         rEBrtf3J6Yqx4ia3nS04qfRdrJO4dzYgRrdhVF87YiKu0/FkseshpoILp0px66yJZNaD
         7g4iMiJ0lxeRctLulllO+rYs/XWtqjToM7l3P3aA6+GXUlhX8j6KhJawG4rD1gpMYqzp
         SqNVPCPQLvNAWNF62rp8Ej8mIUtXL8ejPivLCY4XiyreiybygasYYj4ec7p3kMsx86TK
         LOoQ==
X-Gm-Message-State: AOJu0Yw+BFL7bWTkbBEwXzh3eoT9ZfJ7nxKEyRK1iQQOutBw1F0YY5MX
	6aEbkenySaeIU2oomcIXuECMaeQevNkUL56KNlQ9Jzl4s+Bio7kwNSt9BV0d/VadIGrtYuAy6+5
	G6b0OzdLBJLOAER0JDjFUT/fQP+QNASM=
X-Gm-Gg: AeBDieuZdhXM8sCCwWKi10eZ5mhqE7sLxDwPspfw/mzUA2Aglf1yZCeAR1PrVO6oZ1r
	ekhMsLKoUgH6y5ufyheGZvamH9xQQgBoqD8oTin7D7tmm7ZeBS6pQR4f1OG/GUKnQcMZNxRuvMa
	QkqpOU7mqNGQzleC5ncS9wlMido5lBHuj9hbqCnN11k5frHOcAQGMapRaER35B9/dfFqDI5cwqu
	0Q2P7g3skh6K86JPMPgBgN4VFY7JwkqEtmdnh6zVaqHg5PZ4DpoQhLeEt5Kr3k+9F4ZXMTHGJ93
	4eFEIsYK5QxpV9CLVo23I+I4+CIZWb8=
X-Received: by 2002:a05:7022:6182:b0:128:d590:2947 with SMTP id
 a92af1059eb24-12c5d4cb57bmr486048c88.4.1776253744550; Wed, 15 Apr 2026
 04:49:04 -0700 (PDT)
MIME-Version: 1.0
References: <20260415113700.107915-1-michal.orzel@amd.com> <20260415113700.107915-2-michal.orzel@amd.com>
In-Reply-To: <20260415113700.107915-2-michal.orzel@amd.com>
From: Gyujeong Jin <wlsrbwjd7232@gmail.com>
Date: Wed, 15 Apr 2026 20:48:53 +0900
X-Gm-Features: AQROBzDZ2_suPqDuYVx4ON47qTbGVxvMFSHBd9Ap8npzwo9pDkzE10NRof6f6hE
Message-ID: <CANrF8CEDV5m1Jap0kBoa3sOXD2GV6PAYumfV9rgL2c70nZa=tg@mail.gmail.com>
Subject: Re: [PATCH 1/6] xen/dt-overlay: fix double-free of rangesets on
 attach failure
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>
Content-Type: multipart/alternative; boundary="0000000000007995ca064f7e4d7f"
X-purgate-ID: tlsNG-42698a/1776253746-F43D62A1-F419A566/0/0
X-purgate-type: clean
X-purgate-size: 4671

--0000000000007995ca064f7e4d7f
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: quoted-printable

Thanks for your efforts.

I=E2=80=99ve seen some advisories that received cve here.
https://xenbits.xen.org/xsa/

Can I receive a cve for this report?

Thanks.

2026=EB=85=84 4=EC=9B=94 15=EC=9D=BC (=EC=88=98) 20:37, Michal Orzel <micha=
l.orzel@amd.com>=EB=8B=98=EC=9D=B4 =EC=9E=91=EC=84=B1:

> handle_attach_overlay_nodes() destroys the IRQ and IOMEM rangesets on
> failure but leaves the pointers dangling in the tracker entry. A
> subsequent handle_remove_overlay_nodes() for the same overlay will call
> rangeset_consume_ranges() on freed memory followed by a second
> rangeset_destroy(), resulting in use-after-free and double-free.
>
> NULL the pointers after rangeset_destroy() so that remove_nodes() and
> handle_remove_overlay_nodes() skip the stale entries.
>
> Fixes: 4c733873b5c2 ("xen/arm: Add XEN_DOMCTL_dt_overlay and device
> attachment to domains")
> Reported-by: Gyujeong Jin <wlsrbwjd7232@gmail.com>
> Signed-off-by: Michal Orzel <michal.orzel@amd.com>
> ---
>  xen/common/device-tree/dt-overlay.c | 2 ++
>  1 file changed, 2 insertions(+)
>
> diff --git a/xen/common/device-tree/dt-overlay.c
> b/xen/common/device-tree/dt-overlay.c
> index d184186c015e..6fa07dbf42a5 100644
> --- a/xen/common/device-tree/dt-overlay.c
> +++ b/xen/common/device-tree/dt-overlay.c
> @@ -910,7 +910,9 @@ static long handle_attach_overlay_nodes(struct domain
> *d,
>      if ( entry )
>      {
>          rangeset_destroy(entry->irq_ranges);
> +        entry->irq_ranges =3D NULL;
>          rangeset_destroy(entry->iomem_ranges);
> +        entry->iomem_ranges =3D NULL;
>      }
>
>      return rc;
> --
> 2.43.0
>
>

--0000000000007995ca064f7e4d7f
Content-Type: text/html; charset="UTF-8"
Content-Transfer-Encoding: quoted-printable

<div dir=3D"auto">Thanks for your efforts.</div><div dir=3D"auto"><br></div=
><div dir=3D"auto">I=E2=80=99ve seen some advisories that received cve here=
.</div><div dir=3D"auto"><div style=3D"font-size:inherit"><a href=3D"https:=
//xenbits.xen.org/xsa/" style=3D"font-size:inherit">https://xenbits.xen.org=
/xsa/</a></div><br></div><div dir=3D"auto">Can I receive a cve for this rep=
ort?</div><div dir=3D"auto"><br></div><div dir=3D"auto">Thanks.</div><div><=
br><div class=3D"gmail_quote gmail_quote_container"><div dir=3D"ltr" class=
=3D"gmail_attr">2026=EB=85=84 4=EC=9B=94 15=EC=9D=BC (=EC=88=98) 20:37, Mic=
hal Orzel &lt;<a href=3D"mailto:michal.orzel@amd.com">michal.orzel@amd.com<=
/a>&gt;=EB=8B=98=EC=9D=B4 =EC=9E=91=EC=84=B1:<br></div><blockquote class=3D=
"gmail_quote" style=3D"margin:0px 0px 0px 0.8ex;border-left-width:1px;borde=
r-left-style:solid;padding-left:1ex;border-left-color:rgb(204,204,204)">han=
dle_attach_overlay_nodes() destroys the IRQ and IOMEM rangesets on<br>
failure but leaves the pointers dangling in the tracker entry. A<br>
subsequent handle_remove_overlay_nodes() for the same overlay will call<br>
rangeset_consume_ranges() on freed memory followed by a second<br>
rangeset_destroy(), resulting in use-after-free and double-free.<br>
<br>
NULL the pointers after rangeset_destroy() so that remove_nodes() and<br>
handle_remove_overlay_nodes() skip the stale entries.<br>
<br>
Fixes: 4c733873b5c2 (&quot;xen/arm: Add XEN_DOMCTL_dt_overlay and device at=
tachment to domains&quot;)<br>
Reported-by: Gyujeong Jin &lt;<a href=3D"mailto:wlsrbwjd7232@gmail.com" tar=
get=3D"_blank">wlsrbwjd7232@gmail.com</a>&gt;<br>
Signed-off-by: Michal Orzel &lt;<a href=3D"mailto:michal.orzel@amd.com" tar=
get=3D"_blank">michal.orzel@amd.com</a>&gt;<br>
---<br>
=C2=A0xen/common/device-tree/dt-overlay.c | 2 ++<br>
=C2=A01 file changed, 2 insertions(+)<br>
<br>
diff --git a/xen/common/device-tree/dt-overlay.c b/xen/common/device-tree/d=
t-overlay.c<br>
index d184186c015e..6fa07dbf42a5 100644<br>
--- a/xen/common/device-tree/dt-overlay.c<br>
+++ b/xen/common/device-tree/dt-overlay.c<br>
@@ -910,7 +910,9 @@ static long handle_attach_overlay_nodes(struct domain *=
d,<br>
=C2=A0 =C2=A0 =C2=A0if ( entry )<br>
=C2=A0 =C2=A0 =C2=A0{<br>
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0rangeset_destroy(entry-&gt;irq_ranges);<b=
r>
+=C2=A0 =C2=A0 =C2=A0 =C2=A0 entry-&gt;irq_ranges =3D NULL;<br>
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0rangeset_destroy(entry-&gt;iomem_ranges);=
<br>
+=C2=A0 =C2=A0 =C2=A0 =C2=A0 entry-&gt;iomem_ranges =3D NULL;<br>
=C2=A0 =C2=A0 =C2=A0}<br>
<br>
=C2=A0 =C2=A0 =C2=A0return rc;<br>
-- <br>
2.43.0<br>
<br>
</blockquote></div></div>

--0000000000007995ca064f7e4d7f--


From xen-devel-bounces@lists.xenproject.org Wed Apr 15 11:55:20 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 15 Apr 2026 11:55:20 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1282354.1564958 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wCypu-0000I4-Hr; Wed, 15 Apr 2026 11:55:14 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1282354.1564958; Wed, 15 Apr 2026 11:55: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 1wCypu-0000Hx-EH; Wed, 15 Apr 2026 11:55:14 +0000
Received: by outflank-mailman (input) for mailman id 1282354;
 Wed, 15 Apr 2026 11:55:13 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <bounce-md_30504962.69df7b8f.v1-b04eb2f46eaf41bd866880f8e9a735d4@bounce.vates.tech>)
 id 1wCyps-0000Hr-Us
 for xen-devel@lists.xenproject.org; Wed, 15 Apr 2026 11:55:13 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wCyps-00AGON-6h
 for xen-devel@lists.xenproject.org; Wed, 15 Apr 2026 13:55:12 +0200
Received: from [10.42.69.4] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1) (envelope-from
 <bounce-md_30504962.69df7b8f.v1-b04eb2f46eaf41bd866880f8e9a735d4@bounce.vates.tech>)
 id 69df7c99-2eae-0a2a0a5409dd-0a2a4504dc3a-22
 for <xen-devel@lists.xenproject.org>; Wed, 15 Apr 2026 13:55:12 +0200
Received: from [198.2.187.1] (helo=mail187-1.suw11.mandrillapp.com)
 by tlsNG-ebf023.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.0)
 (envelope-from
 <bounce-md_30504962.69df7b8f.v1-b04eb2f46eaf41bd866880f8e9a735d4@bounce.vates.tech>)
 id 69df7c9e-bb33-0a2a45040019-c602bb01cb85-3
 for <xen-devel@lists.xenproject.org>; Wed, 15 Apr 2026 13:55:11 +0200
Received: from pmta09.mandrill.prod.suw01.rsglab.com (localhost [127.0.0.1])
 by mail187-1.suw11.mandrillapp.com (Mailchimp) with ESMTP id 4fwfbg27tFzBsYwV7
 for <xen-devel@lists.xenproject.org>; Wed, 15 Apr 2026 11:50:39 +0000 (GMT)
Received: from [37.26.189.201] by mandrillapp.com id
 b04eb2f46eaf41bd866880f8e9a735d4; Wed, 15 Apr 2026 11:50: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=mte1 header.d=mandrillapp.com header.i="@mandrillapp.com" header.h="From:Subject:To:Cc:Message-Id:References:In-Reply-To:Feedback-ID:Date:MIME-Version:Content-Type:Content-Transfer-Encoding"; dkim=pass header.s=mte1 header.d=vates.tech header.i="anthony.perard@vates.tech" header.h="From:Subject:To:Cc:Message-Id:References:In-Reply-To:Feedback-ID:Date:MIME-Version:Content-Type:Content-Transfer-Encoding"
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=mandrillapp.com;
	s=mte1; t=1776253839; x=1776523839;
	bh=GCGte0Z3A7kTvS18fV4wo3myVXmVNIE4719dmtr62Y0=;
	h=From:Subject:To:Cc:Message-Id:References:In-Reply-To:Feedback-ID:
	 Date:MIME-Version:Content-Type:Content-Transfer-Encoding:CC:Date:
	 Subject:From;
	b=Q4V7IjTnk/JsoSc9/BAmAURWO4Wr3bjPXoyLls88u3V52eVPlhVITGvL7+HCbag4d
	 85mtUVb+J8rmlhlmI8J+hQQQ66dHhZvBjf/DR2vwx+MWRbyhSO6+0tHqFubo8zL3XR
	 kofeiLBgrOaBwWCyc10J+y4gg3wMztkHqFW1f9DmkZET+GfKR6uUnmMeMlPMQhQAUV
	 QTZdrmSWtzpPa4GdWi6vMPRB7Y6X4CL1p2q3uCl2DSaiZexK+o3Eoflp2fOUf23Ruq
	 lnXIn1iamPre9E413bhzTrJ15zb/sMWKO0dHptbSrzeiPcCtH1hMRm5TRkWdpKQ9fl
	 YIXZC6f0Zs8HQ==
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=vates.tech; s=mte1;
	t=1776253839; x=1776514339; i=anthony.perard@vates.tech;
	bh=GCGte0Z3A7kTvS18fV4wo3myVXmVNIE4719dmtr62Y0=;
	h=From:Subject:To:Cc:Message-Id:References:In-Reply-To:Feedback-ID:
	 Date:MIME-Version:Content-Type:Content-Transfer-Encoding:CC:Date:
	 Subject:From;
	b=Ge0N67Uck/NbUZCNCkXqNqIUFYS9H6/unHpl2eDXICYaL0+1SEj06Iqi+ebkzei03
	 sUKipL9XVtgU13D1YjNx9e7JqDOXCsWkBubByYfAQc/8AzWo0h/J11Wb0OOVXB6n2E
	 h4OrMLFjzfOvsKmbIFlCv1wOi4e5TOu70LneY16FZSl2v++gtJ+ioOiQbGYMC/ku9X
	 ahp3IujpHyUvaXEKXp5P1k1H+EAtBkquJCewOI9rgnR4jsPiRTc5t76vg8UutUfUpR
	 sdlNxR/ruSFVtTfD6ByQkO1pFlntplhhXY9nmDHXtEPOSeUpDcCe/1ehWCgi4g4GUe
	 Z6Qv4wGaC7erQ==
From: "Anthony PERARD" <anthony.perard@vates.tech>
Subject: =?utf-8?Q?Re:=20[PATCH=20test-artifacts=20v3=2003/13]=20Add=20debian=20rootfs=20artifact?=
X-Bm-Disclaimer: Yes
X-Bm-Milter-Handled: 4ffbd6c1-ee69-4e1b-aabd-f977039bd3e2
X-Bm-Transport-Timestamp: 1776253838063
To: "=?utf-8?Q?Marek=20Marczykowski-G=C3=B3recki?=" <marmarek@invisiblethingslab.com>
Cc: xen-devel@lists.xenproject.org, "Andrew Cooper" <andrew.cooper3@citrix.com>, "Stefano Stabellini" <sstabellini@kernel.org>, "=?utf-8?Q?Roger=20Pau=20Monn=C3=A9?=" <roger.pau@citrix.com>
Message-Id: <ad97jcRfLG7nXk29@l14>
References: <cover.bd2e5bd58e4b316c9c1042b1ca8db51b81fb7ea7.1774999132.git-series.marmarek@invisiblethingslab.com>
In-Reply-To: <cover.bd2e5bd58e4b316c9c1042b1ca8db51b81fb7ea7.1774999132.git-series.marmarek@invisiblethingslab.com>
X-Native-Encoded: 1
X-Report-Abuse: =?UTF-8?Q?Please=20forward=20a=20copy=20of=20this=20message,=20including=20all=20headers,=20to=20abuse@mandrill.com.=20You=20can=20also=20report=20abuse=20here:=20https://mandrillapp.com/contact/abuse=3Fid=3D30504962.b04eb2f46eaf41bd866880f8e9a735d4?=
X-Mandrill-User: md_30504962
Feedback-ID: 30504962:30504962.20260415:md
Date: Wed, 15 Apr 2026 11:50:39 +0000
MIME-Version: 1.0
Content-Type: text/plain; charset=utf-8
Content-Transfer-Encoding: 7bit
X-purgate-ID: tlsNG-ebf023/1776254111-B052B51B-E85556CC/0/0
X-purgate-type: clean
X-purgate-size: 1415

I'm commenting on changes I found in the branch used by the pipeline
linked in the cover leter, since there's no copy on the mailing list of
the patch :-( (overzealous spam filter).

> diff --git a/scripts/debian-rootfs.sh b/scripts/debian-rootfs.sh
> new file mode 100755
> index 000000000000..7cb8a96e39c0
> --- /dev/null
> +++ b/scripts/debian-rootfs.sh
...
> +PKGS=(
> +    # System
> +    bridge-utils
> +    dropbear
> +    udev
> +    systemd-sysv
> +    iproute2
> +    inetutils-ping
> +    util-linux
> +    cpio

Is `cpio` going to be used in dom0? The alpine rootfs don't have it.

> +# don't need persistent logging, avoid journal flush service
> +rmdir var/log/journal

I think this would better be done with:

    cat >> /etc/systemd/journald.conf.d/storage.conf <<EOF
    [Journal]
    Storage=volatile
    EOF

because I think systemd intend to change the behavior in future release,
and we are more explicit with a config file.

> +# Create rootfs
> +cd /
> +{
> +    PATHS="bin etc home init lib lib64 mnt opt root sbin srv tmp usr var"
> +    find $PATHS -print0
> +    echo -ne "dev\0proc\0run\0sys\0"
> +} | cpio -0 -H newc -o | gzip > "${COPYDIR}/rootfs.cpio.gz"

You should add "-R0:0" to the `cpio` command, like we do for the alpine
rootfs.

Thanks,


--
 | Vates

XCP-ng & Xen Orchestra - Vates solutions

web: https://vates.tech



From xen-devel-bounces@lists.xenproject.org Wed Apr 15 11:58:33 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 15 Apr 2026 11:58:33 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1282361.1564966 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wCyt6-0000nD-Ts; Wed, 15 Apr 2026 11:58:32 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1282361.1564966; Wed, 15 Apr 2026 11:58: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 1wCyt6-0000n6-RJ; Wed, 15 Apr 2026 11:58:32 +0000
Received: by outflank-mailman (input) for mailman id 1282361;
 Wed, 15 Apr 2026 11:58:31 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <bounce-md_30504962.69df7ce6.v1-9c3c2a7e817948e4aa5e830b2a7d3782@bounce.vates.tech>)
 id 1wCyt5-0000n0-M1
 for xen-devel@lists.xenproject.org; Wed, 15 Apr 2026 11:58:31 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wCyt3-00APm8-G7
 for xen-devel@lists.xenproject.org; Wed, 15 Apr 2026 13:58:31 +0200
Received: from [10.42.69.10] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1) (envelope-from
 <bounce-md_30504962.69df7ce6.v1-9c3c2a7e817948e4aa5e830b2a7d3782@bounce.vates.tech>)
 id 69df7d5a-e002-0a2a0a5209dd-0a2a450ab282-24
 for <xen-devel@lists.xenproject.org>; Wed, 15 Apr 2026 13:58:30 +0200
Received: from [198.2.187.14] (helo=mail187-14.suw11.mandrillapp.com)
 by tlsNG-4011c0.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.0)
 (envelope-from
 <bounce-md_30504962.69df7ce6.v1-9c3c2a7e817948e4aa5e830b2a7d3782@bounce.vates.tech>)
 id 69df7d65-ee98-0a2a450a0019-c602bb0eb902-3
 for <xen-devel@lists.xenproject.org>; Wed, 15 Apr 2026 13:58:30 +0200
Received: from pmta09.mandrill.prod.suw01.rsglab.com (localhost [127.0.0.1])
 by mail187-14.suw11.mandrillapp.com (Mailchimp) with ESMTP id
 4fwfkG6SFPz8XSLZn
 for <xen-devel@lists.xenproject.org>; Wed, 15 Apr 2026 11:56:22 +0000 (GMT)
Received: from [37.26.189.201] by mandrillapp.com id
 9c3c2a7e817948e4aa5e830b2a7d3782; Wed, 15 Apr 2026 11:56: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=mte1 header.d=mandrillapp.com header.i="@mandrillapp.com" header.h="From:Subject:Message-Id:To:Cc:References:In-Reply-To:Feedback-ID:Date:MIME-Version:Content-Type:Content-Transfer-Encoding"; dkim=pass header.s=mte1 header.d=vates.tech header.i="teddy.astie@vates.tech" header.h="From:Subject:Message-Id:To:Cc:References:In-Reply-To:Feedback-ID:Date:MIME-Version:Content-Type:Content-Transfer-Encoding"
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=mandrillapp.com;
	s=mte1; t=1776254182; x=1776524182;
	bh=WIWJlCYAKOt0EHTWZdN0VepA2MSlrAv0igbJ3uBehFg=;
	h=From:Subject:Message-Id:To:Cc:References:In-Reply-To:Feedback-ID:
	 Date:MIME-Version:Content-Type:Content-Transfer-Encoding:CC:Date:
	 Subject:From;
	b=FQRaEMZspkHw0E7oZGKsLJ+X6cyXylXGT60UsrNzgQ06REGJXpWYIJInvadwoJ/UC
	 h3AfB4Omyb/RLVFOuV84MiQIO5bmNjIsuE8kQ/E1kNvw1m3bNCdXgQWqJ1V7kenffr
	 b/I08Cz1VOhLFVQQgoWYBWNxfrN80J7nde1xnqoYyi1zmAOBQYtoKKn4BRL9YW2k0E
	 CH/Mipav0KPQFFVUmprEi1DFnoGlp/PTxpPHcnNfVr74xJwRgE+3AZsIjW6d4RbK83
	 sm0cajmE+0fVYA1PfiEAm95tkk9BbvDHeU6njmXYRdgye70gx0YhCQ5DzAvDfoP/Hx
	 LwSNbijU1roig==
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=vates.tech; s=mte1;
	t=1776254182; x=1776514682; i=teddy.astie@vates.tech;
	bh=WIWJlCYAKOt0EHTWZdN0VepA2MSlrAv0igbJ3uBehFg=;
	h=From:Subject:Message-Id:To:Cc:References:In-Reply-To:Feedback-ID:
	 Date:MIME-Version:Content-Type:Content-Transfer-Encoding:CC:Date:
	 Subject:From;
	b=nfuSHcvY9Vpz4mWWc1r0kBUVcj772WAxm6nlGXzTIr7OlX64m0/76nn4JDzs26LvT
	 WGQgVt5Jt5vWuetfAQlEoQDOcDFYF4PW1tSd/g7k/wobvkltMWYvDunBYpcBwFR9Ps
	 dJ5hUIxof/4AL1hfLFe8Z1aCdcSz/kGmcVhGGL/i9rydsCdTC0ZGPx+ib9bhC/axAT
	 eSYuo9LTRnIcS0m/TpTnih2QLUbMIIGSPro6w2j+IPoGGi7AHDZTkf25/yfXM3Ehv1
	 4DtwumLfdVBTVQg6YqmRPWqKkVuy5aOvkyOhUILxUciZPDwhw4tOMp63mEH3aAkLX/
	 tYTg8AlzKv1yA==
From: "Teddy Astie" <teddy.astie@vates.tech>
Subject: =?utf-8?Q?Re:=20[PATCH=201/6]=20xen/dt-overlay:=20fix=20double-free=20of=20rangesets=20on=20attach=20failure?=
X-Bm-Disclaimer: Yes
X-Bm-Milter-Handled: 4ffbd6c1-ee69-4e1b-aabd-f977039bd3e2
X-Bm-Transport-Timestamp: 1776254181615
Message-Id: <29f94a8b-1c5d-42b6-9887-4303ddf58bd0@vates.tech>
To: "Gyujeong Jin" <wlsrbwjd7232@gmail.com>, "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>
References: <20260415113700.107915-1-michal.orzel@amd.com> <20260415113700.107915-2-michal.orzel@amd.com> <CANrF8CEDV5m1Jap0kBoa3sOXD2GV6PAYumfV9rgL2c70nZa=tg@mail.gmail.com>
In-Reply-To: <CANrF8CEDV5m1Jap0kBoa3sOXD2GV6PAYumfV9rgL2c70nZa=tg@mail.gmail.com>
X-Native-Encoded: 1
X-Report-Abuse: =?UTF-8?Q?Please=20forward=20a=20copy=20of=20this=20message,=20including=20all=20headers,=20to=20abuse@mandrill.com.=20You=20can=20also=20report=20abuse=20here:=20https://mandrillapp.com/contact/abuse=3Fid=3D30504962.9c3c2a7e817948e4aa5e830b2a7d3782?=
X-Mandrill-User: md_30504962
Feedback-ID: 30504962:30504962.20260415:md
Date: Wed, 15 Apr 2026 11:56:22 +0000
MIME-Version: 1.0
Content-Type: text/plain; charset=utf-8
Content-Transfer-Encoding: quoted-printable
X-purgate-ID: tlsNG-4011c0/1776254310-BED4A0B1-88B86905/0/0
X-purgate-type: clean
X-purgate-size: 2554

Le 15/04/2026 =C3=A0 13:51, Gyujeong Jin a =C3=A9crit=C2=A0:
> Thanks for your efforts.
> 
> I=E2=80=99ve seen some advisories that received cve here.
> https://xenbits.xen.org/xsa/ <https://xenbits.xen.org/xsa/>
> 
> Can I receive a cve for this report?
> 
> Thanks.
> 

Device-tree overlay is marked as "Experimental", hence it's not Security 
supported so no XSA would be issued, even if it it has security 
implications for the feature.

I don't know regarding individual CVEs though.

> 2026=EB=85=84 4=EC=9B=94 15=EC=9D=BC (=EC=88=98) 20:37, Michal Orzel <mic=
hal.orzel@amd.com 
> <mailto:michal.orzel@amd.com>>=EB=8B=98=EC=9D=B4 =EC=9E=91=EC=84=B1:
> 
>     handle_attach_overlay_nodes() destroys the IRQ and IOMEM rangesets on
>     failure but leaves the pointers dangling in the tracker entry. A
>     subsequent handle_remove_overlay_nodes() for the same overlay will ca=
ll
>     rangeset_consume_ranges() on freed memory followed by a second
>     rangeset_destroy(), resulting in use-after-free and double-free.
> 
>     NULL the pointers after rangeset_destroy() so that remove_nodes() and
>     handle_remove_overlay_nodes() skip the stale entries.
> 
>     Fixes: 4c733873b5c2 ("xen/arm: Add XEN_DOMCTL_dt_overlay and device
>     attachment to domains")
>     Reported-by: Gyujeong Jin <wlsrbwjd7232@gmail.com
>     <mailto:wlsrbwjd7232@gmail.com>>
>     Signed-off-by: Michal Orzel <michal.orzel@amd.com
>     <mailto:michal.orzel@amd.com>>
>     ---
>      =C2=A0xen/common/device-tree/dt-overlay.c | 2 ++
>      =C2=A01 file changed, 2 insertions(+)
> 
>     diff --git a/xen/common/device-tree/dt-overlay.c b/xen/common/
>     device-tree/dt-overlay.c
>     index d184186c015e..6fa07dbf42a5 100644
>     --- a/xen/common/device-tree/dt-overlay.c
>     +++ b/xen/common/device-tree/dt-overlay.c
>     @@ -910,7 +910,9 @@ static long handle_attach_overlay_nodes(struct
>     domain *d,
>      =C2=A0 =C2=A0 =C2=A0if ( entry )
>      =C2=A0 =C2=A0 =C2=A0{
>      =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0rangeset_destroy(entry->irq_ranges=
);
>     +=C2=A0 =C2=A0 =C2=A0 =C2=A0 entry->irq_ranges =3D NULL;
>      =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0rangeset_destroy(entry->iomem_rang=
es);
>     +=C2=A0 =C2=A0 =C2=A0 =C2=A0 entry->iomem_ranges =3D NULL;
>      =C2=A0 =C2=A0 =C2=A0}
> 
>      =C2=A0 =C2=A0 =C2=A0return rc;
>     -- 
>     2.43.0
> 

Teddy


--
Teddy Astie | Vates XCP-ng Developer

XCP-ng & Xen Orchestra - Vates solutions

web: https://vates.tech




From xen-devel-bounces@lists.xenproject.org Wed Apr 15 12:14:36 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 15 Apr 2026 12:14:36 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1282378.1564975 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wCz8Z-000457-8n; Wed, 15 Apr 2026 12:14:31 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1282378.1564975; Wed, 15 Apr 2026 12:14: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 1wCz8Z-000450-69; Wed, 15 Apr 2026 12:14:31 +0000
Received: by outflank-mailman (input) for mailman id 1282378;
 Wed, 15 Apr 2026 12:14:30 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <bounce-md_30504962.69df7d05.v1-915fc230090640e9a53f57400ec0dcc2@bounce.vates.tech>)
 id 1wCz8Y-00044u-BS
 for xen-devel@lists.xenproject.org; Wed, 15 Apr 2026 12:14:30 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wCz8X-00CW1w-OU
 for xen-devel@lists.xenproject.org; Wed, 15 Apr 2026 14:14:29 +0200
Received: from [10.42.69.12] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1) (envelope-from
 <bounce-md_30504962.69df7d05.v1-915fc230090640e9a53f57400ec0dcc2@bounce.vates.tech>)
 id 69df8125-2eae-0a2a0a5409dd-0a2a450ca6aa-0
 for <xen-devel@lists.xenproject.org>; Wed, 15 Apr 2026 14:14:29 +0200
Received: from [198.2.187.1] (helo=mail187-1.suw11.mandrillapp.com)
 by tlsNG-d25034.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.0)
 (envelope-from
 <bounce-md_30504962.69df7d05.v1-915fc230090640e9a53f57400ec0dcc2@bounce.vates.tech>)
 id 69df8124-f40c-0a2a450c0019-c602bb01cb3a-3
 for <xen-devel@lists.xenproject.org>; Wed, 15 Apr 2026 14:14:29 +0200
Received: from pmta09.mandrill.prod.suw01.rsglab.com (localhost [127.0.0.1])
 by mail187-1.suw11.mandrillapp.com (Mailchimp) with ESMTP id 4fwfks5LG6zBsXrPp
 for <xen-devel@lists.xenproject.org>; Wed, 15 Apr 2026 11:56:53 +0000 (GMT)
Received: from [37.26.189.201] by mandrillapp.com id
 915fc230090640e9a53f57400ec0dcc2; Wed, 15 Apr 2026 11:56: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=mte1 header.d=mandrillapp.com header.i="@mandrillapp.com" header.h="From:Subject:To:Cc:Message-Id:References:In-Reply-To:Feedback-ID:Date:MIME-Version:Content-Type:Content-Transfer-Encoding"; dkim=pass header.s=mte1 header.d=vates.tech header.i="anthony.perard@vates.tech" header.h="From:Subject:To:Cc:Message-Id:References:In-Reply-To:Feedback-ID:Date:MIME-Version:Content-Type:Content-Transfer-Encoding"
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=mandrillapp.com;
	s=mte1; t=1776254213; x=1776524213;
	bh=w7uZ9Pb+etRnkvD6kyJuXnCt2Zq8CjZnHSza/rI5GdI=;
	h=From:Subject:To:Cc:Message-Id:References:In-Reply-To:Feedback-ID:
	 Date:MIME-Version:Content-Type:Content-Transfer-Encoding:CC:Date:
	 Subject:From;
	b=CQHqUMsCz6G6y5IuNR+Sj2zG5LEwONvitxLNgNI3QhjufdiqpbMwzc4UTFkcenuda
	 dx3c/4uuYk90YHErDBqBXdJCaLGvbejQThiZRslsskyUIBIkKLprHOiXK3M7KqA+uI
	 RbfLLPJSF2Alse9HnaspqiJPPQxAaGa7kd8KmXHoWcXbhw57aFrGSG8wQgUHJhljTt
	 E+Bw3wM9919AcSdt8x0BCbRJAnuUWP07LshEYguQoJ13Grmd8GWafXCPvZ2I8CkoIh
	 YmIBLvanAbLcMImEg4cgCwizpY/CSrZz57eXtM1FRSDZNGVEGpFE9ncOqGoEUi6k/z
	 5Rv3wBa+hny7Q==
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=vates.tech; s=mte1;
	t=1776254213; x=1776514713; i=anthony.perard@vates.tech;
	bh=w7uZ9Pb+etRnkvD6kyJuXnCt2Zq8CjZnHSza/rI5GdI=;
	h=From:Subject:To:Cc:Message-Id:References:In-Reply-To:Feedback-ID:
	 Date:MIME-Version:Content-Type:Content-Transfer-Encoding:CC:Date:
	 Subject:From;
	b=T0S1DsUYhLnqa9/Yv0iIocuwYGYX60zgSFOAlpTVSXUEvtT7ih44ubaytqKwM9Vjj
	 4hNt43RfQ/gNA3zeF32qqP3pUp832EDW+7UGb1paN/bteN7g7LmewWxYmx/UT2VBqq
	 FGQHEMyVHQAPEai+595Fkhj+6aia1GOiKwVvtWT0N+AAOAiDDbCs7gBqAI7IbjxYH3
	 crBRKgBpJPkOO7V8zUSlAFuOofZSh5YV3vs0dpuB6Yfsi1AH0mE0R5Ty/MQcW7Jl5A
	 L3oulOXdlcLiqCx7Ij1IU+7s0/wVah8mteTWg3jvAZjthzD9o6svPnfR/zDKtplQeP
	 c0Poy23ZtRFjw==
From: "Anthony PERARD" <anthony.perard@vates.tech>
Subject: =?utf-8?Q?Re:=20[PATCH=20test-artifacts=20v3=2004/13]=20Add=20linux-6.12.79-x86=5F64?=
X-Bm-Disclaimer: Yes
X-Bm-Milter-Handled: 4ffbd6c1-ee69-4e1b-aabd-f977039bd3e2
X-Bm-Transport-Timestamp: 1776254212591
To: "=?utf-8?Q?Marek=20Marczykowski-G=C3=B3recki?=" <marmarek@invisiblethingslab.com>
Cc: xen-devel@lists.xenproject.org, "Andrew Cooper" <andrew.cooper3@citrix.com>, "Stefano Stabellini" <sstabellini@kernel.org>, "=?utf-8?Q?Roger=20Pau=20Monn=C3=A9?=" <roger.pau@citrix.com>
Message-Id: <ad99BL-v7fOAdqH8@l14>
References: <cover.bd2e5bd58e4b316c9c1042b1ca8db51b81fb7ea7.1774999132.git-series.marmarek@invisiblethingslab.com> <b53df707293f8907f5bb28a6d7380c28236b2637.1774999132.git-series.marmarek@invisiblethingslab.com>
In-Reply-To: <b53df707293f8907f5bb28a6d7380c28236b2637.1774999132.git-series.marmarek@invisiblethingslab.com>
X-Native-Encoded: 1
X-Report-Abuse: =?UTF-8?Q?Please=20forward=20a=20copy=20of=20this=20message,=20including=20all=20headers,=20to=20abuse@mandrill.com.=20You=20can=20also=20report=20abuse=20here:=20https://mandrillapp.com/contact/abuse=3Fid=3D30504962.915fc230090640e9a53f57400ec0dcc2?=
X-Mandrill-User: md_30504962
Feedback-ID: 30504962:30504962.20260415:md
Date: Wed, 15 Apr 2026 11:56:53 +0000
MIME-Version: 1.0
Content-Type: text/plain; charset=utf-8
Content-Transfer-Encoding: quoted-printable
X-purgate-ID: tlsNG-d25034/1776255269-FE350A3D-D26C1ADC/0/0
X-purgate-type: clean
X-purgate-size: 480

On Wed, Apr 01, 2026 at 01:21:54AM +0200, Marek Marczykowski-G=C3=B3recki w=
rote:
> +linux-6.12.60-x86_64:
> +  extends: .x86_64-artifacts
> +  script: ./scripts/build-linux.sh "6.12.60"

I've got:
    $ ./scripts/build-linux.sh "6.12.60"
    LINUX_VERSION must be set

Linux version want's to be in a env variable, not an argument.

Cheers,


--
Anthony Perard | Vates XCP-ng Developer

XCP-ng & Xen Orchestra - Vates solutions

web: https://vates.tech




From xen-devel-bounces@lists.xenproject.org Wed Apr 15 12:22:49 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 15 Apr 2026 12:22:49 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1282390.1564985 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wCzGW-0005tz-1I; Wed, 15 Apr 2026 12:22:44 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1282390.1564985; Wed, 15 Apr 2026 12:22: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 1wCzGV-0005ts-Up; Wed, 15 Apr 2026 12:22:43 +0000
Received: by outflank-mailman (input) for mailman id 1282390;
 Wed, 15 Apr 2026 12:22:43 +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 1wCzGV-0005tm-0d
 for xen-devel@lists.xenproject.org; Wed, 15 Apr 2026 12:22:43 +0000
Received: from xenbits.xenproject.org ([104.239.192.120])
 by mail.xenproject.org with esmtp (Exim 4.96)
 (envelope-from <julien@xen.org>) id 1wCzGU-003DMY-06;
 Wed, 15 Apr 2026 12:22:42 +0000
Received: from [2a02:8012:3a1:0:6452:fdce:8dbd:9a39]
 by xenbits.xenproject.org with esmtpsa (TLS1.3) tls
 TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (Exim 4.96)
 (envelope-from <julien@xen.org>) id 1wCzGT-0042rr-2b;
 Wed, 15 Apr 2026 12:22: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>
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=9OxsrBbnph6Lh14GYqegueMdJ+lWozdPjhaBtj9/v4o=; b=3VCHho85Y2SnHT8OuFc2Xm8zE9
	+9vVQkndkQRQOSFJnu/nVe2y5NvQmvJ7gbQfngTmlDmWm0pQDYXKbwPRnnODzu5a25LVM7E1j/rBM
	4Gb9qfF+CKOTje041BSgxj5U+ehoCQqXCICXK//x4BLj7mT5segt0FumlDmYsTdp6a4M=;
Message-ID: <aa00c8d8-f20b-46ab-9a69-039d1016a1b8@xen.org>
Date: Wed, 15 Apr 2026 13:22:39 +0100
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH 1/6] xen/dt-overlay: fix double-free of rangesets on
 attach failure
Content-Language: en-GB
To: Gyujeong Jin <wlsrbwjd7232@gmail.com>, Michal Orzel <michal.orzel@amd.com>
Cc: xen-devel@lists.xenproject.org,
 Stefano Stabellini <sstabellini@kernel.org>,
 Bertrand Marquis <bertrand.marquis@arm.com>
References: <20260415113700.107915-1-michal.orzel@amd.com>
 <20260415113700.107915-2-michal.orzel@amd.com>
 <CANrF8CEDV5m1Jap0kBoa3sOXD2GV6PAYumfV9rgL2c70nZa=tg@mail.gmail.com>
From: Julien Grall <julien@xen.org>
In-Reply-To: <CANrF8CEDV5m1Jap0kBoa3sOXD2GV6PAYumfV9rgL2c70nZa=tg@mail.gmail.com>
Content-Type: text/plain; charset=UTF-8; format=flowed
Content-Transfer-Encoding: 8bit

Hi Gyujeong,

On 15/04/2026 12:48, Gyujeong Jin wrote:
> Thanks for your efforts.
> 
> I’ve seen some advisories that received cve here.
> https://xenbits.xen.org/xsa/ <https://xenbits.xen.org/xsa/>
> 
> Can I receive a cve for this report?

Thank you for the original report. The security team doesn't issue any 
CVE when there is no associated XSA.

Best regards,

-- 
Julien Grall



From xen-devel-bounces@lists.xenproject.org Wed Apr 15 12:27:17 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 15 Apr 2026 12:27:17 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1282398.1564994 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wCzKt-0006SH-HG; Wed, 15 Apr 2026 12:27:15 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1282398.1564994; Wed, 15 Apr 2026 12:27: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 1wCzKt-0006SA-EO; Wed, 15 Apr 2026 12:27:15 +0000
Received: by outflank-mailman (input) for mailman id 1282398;
 Wed, 15 Apr 2026 12:27:14 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <marmarek@invisiblethingslab.com>) id 1wCzKr-0006RJ-SF
 for xen-devel@lists.xenproject.org; Wed, 15 Apr 2026 12:27:13 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wCzKr-00EsDN-75
 for xen-devel@lists.xenproject.org; Wed, 15 Apr 2026 14:27:13 +0200
Received: from [10.42.69.3] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <marmarek@invisiblethingslab.com>)
 id 69df8420-5cb7-0a2a0a5109dd-0a2a4503826c-2
 for <xen-devel@lists.xenproject.org>; Wed, 15 Apr 2026 14:27:13 +0200
Received: from [202.12.124.153] (helo=fhigh-b2-smtp.messagingengine.com)
 by tlsNG-33051d.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.0)
 (envelope-from <marmarek@invisiblethingslab.com>)
 id 69df841f-02b3-0a2a45030019-ca0c7c99e261-3
 for <xen-devel@lists.xenproject.org>; Wed, 15 Apr 2026 14:27:12 +0200
Received: from phl-compute-01.internal (phl-compute-01.internal [10.202.2.41])
 by mailfhigh.stl.internal (Postfix) with ESMTP id 249A97A006B;
 Wed, 15 Apr 2026 08:27:11 -0400 (EDT)
Received: from phl-frontend-03 ([10.202.2.162])
 by phl-compute-01.internal (MEProxy); Wed, 15 Apr 2026 08:27:11 -0400
Received: by mail.messagingengine.com (Postfix) with ESMTPA; Wed,
 15 Apr 2026 08:27:09 -0400 (EDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@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=1776256030;
	 x=1776342430; bh=u4LpjOvbZZvmCOfTYYUNqZJH+ixHXPnxjsDtmD4fLR8=; b=
	ojQaCzlvuZswXoQ06tPAQXAeDkTPdOlA6ZIEkTf8lipVN9E0JA5wmhTuRaR/GgKM
	wq3SaKR66PHFffv7/NNVY69ZKzWDMfr38h2jJqIbG9kpetDlB25fsMAEZ5RufaoO
	a/8hPI5RwsmKKTA5SFdOnKqu8yqA07Nu1vhxhqkpa4PBO3XTl6qihnnlfqRt5l3W
	WzVlhNFDl+jlaDgJ4aRcgfIdRyAzpfx/2/CuC38aQdjWuIUvgoVpdLiU6+C8lse5
	/dZtgOnOvhEqH8xH3V/CtgyqCYJvGza0MMwOFi4lFWWPC2iVJNaNk2CIeveaeu19
	VfnhQNvLoM6L0V0MYwjBVA==
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=
	1776256030; x=1776342430; bh=u4LpjOvbZZvmCOfTYYUNqZJH+ixHXPnxjsD
	tmD4fLR8=; b=ai5Y2WVi17+eP4GqVTYxgjeE/P92c8wvXb1NkcF7h+0czzpfia+
	RZPoQ+JddQEZ9sx07uX0kYFcZIY4EbqZXbUPwUeEmcxHZI73+ez986F/A4B+6oBB
	kSBtXuaip7GR3ImDy5onAq4yl0EeXhzTYugivyoJqyj5SEi9j5zfZVz39FHOo4Zj
	wLwqefxHL4VRRdfOOcy5bruwCkRQTenkXoPd6KdfIUFNXlKW6fI8Pb/EWLzkgSrU
	TN47LgIGfBsh2w4SjmbrGM4Ivp6sa0+at0tgiasnu4ZsVuzfheFQcfePdKPKSuo7
	8V2DchvYnlLHGJ1IJBxGzfDoRdEURva/NFA==
X-ME-Sender: <xms:HoTfaU-VXKLN0zITelhypru3FbvcBYLwIDZ4jtj0NfOvacW55pqLLQ>
    <xme:HoTfaTlzkZFCZLBVETyx8-jSMJcicBFJrMdzCnnp8cGTvMEmHz4ubzVfSYcaVm6uX
    3tplvTllKBTznhf6tm7EUQUtTztAhDKPODoBMNb6nmQITbdJg>
X-ME-Received: <xmr:HoTfaSXYEfIe5kwsgbq-Gng9O-JW11Es944ZfSgFO3Jpu-pj4V16htNP5NV7>
X-ME-Proxy-Cause: gggruggvucftvghtrhhoucdtuddrgeefhedrtddtgdeggedtkecutefuodetggdotefrod
    ftvfcurfhrohhfihhlvgemucfhrghsthforghilhdpuffrtefokffrpgfnqfghnecuuegr
    ihhlohhuthemuceftddtnecusecvtfgvtghiphhivghnthhsucdlqddutddtmdenucfjug
    hrpeffhffvvefukfhfgggtuggjsehgtderredttdejnecuhfhrohhmpeforghrvghkucfo
    rghrtgiihihkohifshhkihdqifpkrhgvtghkihcuoehmrghrmhgrrhgvkhesihhnvhhish
    hisghlvghthhhinhhgshhlrggsrdgtohhmqeenucggtffrrghtthgvrhhnpefgudelteef
    vefhfeehieetleeihfejhfeludevteetkeevtedtvdegueetfeejudenucevlhhushhtvg
    hrufhiiigvpedtnecurfgrrhgrmhepmhgrihhlfhhrohhmpehmrghrmhgrrhgvkhesihhn
    vhhishhisghlvghthhhinhhgshhlrggsrdgtohhmpdhnsggprhgtphhtthhopeehpdhmoh
    guvgepshhmthhpohhuthdprhgtphhtthhopegrnhhthhhonhihrdhpvghrrghrugesvhgr
    thgvshdrthgvtghhpdhrtghpthhtohepgigvnhdquggvvhgvlheslhhishhtshdrgigvnh
    hprhhojhgvtghtrdhorhhgpdhrtghpthhtoheprghnughrvgifrdgtohhophgvrhefsegt
    ihhtrhhigidrtghomhdprhgtphhtthhopehsshhtrggsvghllhhinhhisehkvghrnhgvlh
    drohhrghdprhgtphhtthhopehrohhgvghrrdhprghusegtihhtrhhigidrtghomh
X-ME-Proxy: <xmx:HoTfaQFwh_dHZaPUdOveP7GpCRoAmYGjWbhYON-2ecS-h8ZzhqD2Gg>
    <xmx:HoTfaWdTTWfkIPx65nnb3R2ogiLaQtBeJWXu-FEftmA791HlrtYn2g>
    <xmx:HoTfaZJmy60DwBuSEmtfRcDxPXlqLgVSOftfuEMN3u_phAqxpkMn9w>
    <xmx:HoTfaTEgkz7fRjaYdKzSfUh9ABmeOwq38Me5uPB4m95C9aGJOV9BMA>
    <xmx:HoTfacPaP06cGxvHoSSVloWEKdkCaVQvGBAyhFWWlLT3f1yctH4rvcW2>
Feedback-ID: i1568416f:Fastmail
Date: Wed, 15 Apr 2026 14:27:07 +0200
From: Marek =?utf-8?Q?Marczykowski-G=C3=B3recki?= <marmarek@invisiblethingslab.com>
To: Anthony PERARD <anthony.perard@vates.tech>
Cc: xen-devel@lists.xenproject.org,
	Andrew Cooper <andrew.cooper3@citrix.com>,
	Stefano Stabellini <sstabellini@kernel.org>,
	Roger Pau =?utf-8?B?TW9ubsOp?= <roger.pau@citrix.com>
Subject: Re: [PATCH test-artifacts v3 04/13] Add linux-6.12.79-x86_64
Message-ID: <ad-EG63q_TnaJEtg@mail-itl>
References: <cover.bd2e5bd58e4b316c9c1042b1ca8db51b81fb7ea7.1774999132.git-series.marmarek@invisiblethingslab.com>
 <b53df707293f8907f5bb28a6d7380c28236b2637.1774999132.git-series.marmarek@invisiblethingslab.com>
 <ad99BL-v7fOAdqH8@l14>
MIME-Version: 1.0
Content-Type: multipart/signed; micalg=pgp-sha256;
	protocol="application/pgp-signature"; boundary="iJT/IRkUW/TDFo7l"
Content-Disposition: inline
In-Reply-To: <ad99BL-v7fOAdqH8@l14>
X-purgate-ID: tlsNG-33051d/1776256033-C9F3DC9A-3F6303B4/0/0
X-purgate-type: clean
X-purgate-size: 1770


--iJT/IRkUW/TDFo7l
Content-Type: text/plain; protected-headers=v1; charset=utf-8
Content-Disposition: inline
Content-Transfer-Encoding: quoted-printable
Date: Wed, 15 Apr 2026 14:27:07 +0200
From: Marek =?utf-8?Q?Marczykowski-G=C3=B3recki?= <marmarek@invisiblethingslab.com>
To: Anthony PERARD <anthony.perard@vates.tech>
Cc: xen-devel@lists.xenproject.org,
	Andrew Cooper <andrew.cooper3@citrix.com>,
	Stefano Stabellini <sstabellini@kernel.org>,
	Roger Pau =?utf-8?B?TW9ubsOp?= <roger.pau@citrix.com>
Subject: Re: [PATCH test-artifacts v3 04/13] Add linux-6.12.79-x86_64

On Wed, Apr 15, 2026 at 11:56:53AM +0000, Anthony PERARD wrote:
> On Wed, Apr 01, 2026 at 01:21:54AM +0200, Marek Marczykowski-G=C3=B3recki=
 wrote:
> > +linux-6.12.60-x86_64:
> > +  extends: .x86_64-artifacts
> > +  script: ./scripts/build-linux.sh "6.12.60"
>=20
> I've got:
>     $ ./scripts/build-linux.sh "6.12.60"
>     LINUX_VERSION must be set
>=20
> Linux version want's to be in a env variable, not an argument.

Oh, that's patch ordering, after 07/13 it's in argument.

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

--iJT/IRkUW/TDFo7l
Content-Type: application/pgp-signature; name=signature.asc

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

iQEzBAEBCAAdFiEEhrpukzGPukRmQqkK24/THMrX1ywFAmnfhBsACgkQ24/THMrX
1yxNBggAhN+2TOjqGxS0TnA50h0e8lluW0NoRmeoNP4Uo3veszjA1kJ6f2d4zeAE
r6yXCJ7u8Gsa5D9VUtEqZuz2/Xsm9CLG8bhYr5GTTsu81dPbSHx8BMDXah4DyxMc
88LR1GpCPOwxqp/FZUvw3zAytWIPF4K8NDlbC9rgt+9up4TmhEVPgj9nDcatvGlQ
peMDlDJ4XEfQtnP8K9huImW2meIGmXoqfkzbMHeVzsOTw0IZ/vPFfuOxr0iosCFq
bjM0OYxA2EmzdNWdVtxB3JCNUVCL0VHD8lCpJbIBxTUMHY68Ct+yP8bLvxiu3Uww
hATaPwIGJ3ekY62H/TSSri6J1r7N5w==
=XsGF
-----END PGP SIGNATURE-----

--iJT/IRkUW/TDFo7l--


From xen-devel-bounces@lists.xenproject.org Wed Apr 15 12:31:13 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 15 Apr 2026 12:31:13 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1282408.1565004 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wCzOf-0008Fi-0c; Wed, 15 Apr 2026 12:31:09 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1282408.1565004; Wed, 15 Apr 2026 12: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 1wCzOe-0008Fb-Sp; Wed, 15 Apr 2026 12:31:08 +0000
Received: by outflank-mailman (input) for mailman id 1282408;
 Wed, 15 Apr 2026 12:31:07 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <Bertrand.Marquis@arm.com>) id 1wCzOc-0008FV-RB
 for xen-devel@lists.xenproject.org; Wed, 15 Apr 2026 12:31:07 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wCzOc-002DD3-7e
 for xen-devel@lists.xenproject.org; Wed, 15 Apr 2026 14:31:06 +0200
Received: from [10.42.69.11] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <Bertrand.Marquis@arm.com>)
 id 69df8500-bab6-0a2a0a5309dd-0a2a450bd5b0-36
 for <xen-devel@lists.xenproject.org>; Wed, 15 Apr 2026 14:31:05 +0200
Received: from [52.101.69.15]
 (helo=AM0PR83CU005.outbound.protection.outlook.com)
 by tlsNG-42698a.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.0)
 (envelope-from <Bertrand.Marquis@arm.com>)
 id 69df8509-bca8-0a2a450b0019-3465450fea9b-3
 for <xen-devel@lists.xenproject.org>; Wed, 15 Apr 2026 14:31:05 +0200
Received: from CWLP123CA0216.GBRP123.PROD.OUTLOOK.COM (2603:10a6:400:19d::16)
 by AS4PR08MB7997.eurprd08.prod.outlook.com (2603:10a6:20b:580::22)
 with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9769.48; Wed, 15 Apr
 2026 12:31:00 +0000
Received: from AMS1EPF00000091.eurprd05.prod.outlook.com
 (2603:10a6:400:19d:cafe::ef) by CWLP123CA0216.outlook.office365.com
 (2603:10a6:400:19d::16) with Microsoft SMTP Server (version=TLS1_3,
 cipher=TLS_AES_256_GCM_SHA384) id 15.20.9769.50 via Frontend Transport; Wed,
 15 Apr 2026 12:30:58 +0000
Received: from outbound-uk1.az.dlp.m.darktrace.com (4.158.2.129) by
 AMS1EPF00000091.mail.protection.outlook.com (10.167.242.88) with Microsoft
 SMTP Server (version=TLS1_3, cipher=TLS_AES_256_GCM_SHA384) id 15.20.9769.17
 via Frontend Transport; Wed, 15 Apr 2026 12:30:58 +0000
Received: from PR3PR08MB5593.eurprd08.prod.outlook.com (2603:10a6:102:84::13)
 by DB9PR08MB11244.eurprd08.prod.outlook.com (2603:10a6:10:5e1::10)
 with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9769.48; Wed, 15 Apr
 2026 12:29:51 +0000
Received: from PR3PR08MB5593.eurprd08.prod.outlook.com
 ([fe80::aae1:6871:afc4:620e]) by PR3PR08MB5593.eurprd08.prod.outlook.com
 ([fe80::aae1:6871:afc4:620e%5]) with mapi id 15.20.9769.018; Wed, 15 Apr 2026
 12:29: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=arm.com header.i="@arm.com" header.h="From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck"; dkim=pass header.s=selector1 header.d=arm.com header.i="@arm.com" header.h="From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck"
ARC-Seal: i=2; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=pass;
 b=pwnI9bgmt7ilD7OtBw6I3bNxeMW0iJNQjyZcwtqCRq10Hom8SskCAoDGPoKcYdgwnxlfrsiXEO/eog8EOrZeZ9034dbuPyLr9/YqwQLGn9rRuInIQUl+exyO+qytatkMKQxD67VTntjcT4cimWfEpPSfI5UOC6a9Qe/jvJsVv7tPFvlU6lYWfmKsJFtLhgL/N46QDt0AvUJs+mYwE1pvrwldpP36tWLylBtzQjPYmRJV7y4HSwOwVfsRMOCAY91hDPY1UFNdedTEAkXzE22F1pCEC/XAfgaStr/JdGGEUFAUViuY6uKJ7NiuMYguUTOKJKtbBTdf1bPI3rrUfiLpUg==
ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com;
 s=arcselector10001;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1;
 bh=a0acH5JpKmQYar14t/VnmlFLxigNyXg6z3yS5uUK+ws=;
 b=uFJT0LkW5Y8VCa/wj7zrNCicjEs6BP1gwWiPhQTj8FA39KIsuGQRjbqM1wg+Qy6yAanpTr8QfQxtmNK7qCWQrCdq2aO8osa21MHVOiTkO3+0ohuN6XB1R0/6nHlW3KtEPhmUucY65O1zLfqSw9PE6rpX/6C0B+ZXGZzyUQIA14LphBkYlOVjChq5sOFH58mFCd+OtmJv6rBgdfRVoBti4wSy5ECUVdpoRpQ0D6P8UWSGrSXlAhc633FQK0SPTJX5hvI1VV4gXkf82/Y2I0lQ42SZ21QZfQBN1nx7CAmvSMKPNkvlJjdzz1UHoUQsKDWUYVNb57b2bk4iGz8X6eIQ8A==
ARC-Authentication-Results: i=2; mx.microsoft.com 1; spf=pass (sender ip is
 4.158.2.129) smtp.rcpttodomain=suse.com smtp.mailfrom=arm.com; dmarc=pass
 (p=none sp=none pct=100) action=none header.from=arm.com; dkim=pass
 (signature was verified) header.d=arm.com; arc=pass (0 oda=1 ltdi=1
 spf=[1,1,smtp.mailfrom=arm.com] dkim=[1,1,header.d=arm.com]
 dmarc=[1,1,header.from=arm.com])
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=arm.com; s=selector1;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck;
 bh=a0acH5JpKmQYar14t/VnmlFLxigNyXg6z3yS5uUK+ws=;
 b=RpHkWxk8RGRxYNz5VI+R8eY4Or3ZnbZTej/vWTrFwg/8OW7PCxBzE71GFpWtC59YGrnaMIn66g2HWFyN37HcqC65Kph4zU/iCju8x+/yXLfn35qHEpqi6lt+S23aEphr99Xtd6pLjysVdRVHu5LXiS8/5+Af1xQxiJZ2uH+wrrQ=
X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 4.158.2.129)
 smtp.mailfrom=arm.com; dkim=pass (signature was verified)
 header.d=arm.com;dmarc=pass action=none header.from=arm.com;
Received-SPF: Pass (protection.outlook.com: domain of arm.com designates
 4.158.2.129 as permitted sender) receiver=protection.outlook.com;
 client-ip=4.158.2.129; helo=outbound-uk1.az.dlp.m.darktrace.com; pr=C
ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none;
 b=BmJoT1hU4CMKp9OX8OTtjm9YNGIveOwjuxWiBz6f+zkWc5TGVnZoHGCzgfZ5xuC4onPqyajwXntdg5aKHbbrZT3PdE10T2JJXXldqcYpyE9WaL9ntG1WyUyeu2VuA/5GpAcJAIvNaEDEZ9U0yTKwkolBwG6g1amN0pbVFkOoHP2RgsxIziTDfAXRnrwYzg8VqWZt8Pn4TwzJE7MHpbGnTKeUQ0YWNYrJrlYChCjdHa9bhZIpE8bp/CdILwA+5WnkoSNiFGSXOKnop4Dnr2ARHx+Z3ezL5iOX0pJhbb4KJBicRTnpLOGX1RhkOavuhAbOV7oJx+iwOoEeLVlwGrkyTg==
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com;
 s=arcselector10001;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1;
 bh=a0acH5JpKmQYar14t/VnmlFLxigNyXg6z3yS5uUK+ws=;
 b=IO1VJCsrjqgS/zUv9D5S8+nyYo7dzuNj0zXE9pGO4J7ltKbKPBwvI/ooAaYCl7gmE9R3DweAIn60PZVYps7UWGyyHKI0t/o7R/h5ceLylg7OKOJ307cWqlCHtPHjXK8l0amkfDmEEkGiBf0fiqvi/HjbR6BSu7MCNgwkKlYkY12eAsAD6vMczEYCMDrZp9WcFA5GYgTfz8yk/mACPNYV6uHuj/mqPjrcZr5vh767488NDWGRvkNJS+dygksefvSViPanSn71KdeaOXbui2G1d7xhYL7pb3C6oqNnuofHX2g7HSdVU7/hlQsw1GhU7x4QjNCJv9RWv3yi2SJ2std2xA==
ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass
 smtp.mailfrom=arm.com; dmarc=pass action=none header.from=arm.com; dkim=pass
 header.d=arm.com; arc=none
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=arm.com; s=selector1;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck;
 bh=a0acH5JpKmQYar14t/VnmlFLxigNyXg6z3yS5uUK+ws=;
 b=RpHkWxk8RGRxYNz5VI+R8eY4Or3ZnbZTej/vWTrFwg/8OW7PCxBzE71GFpWtC59YGrnaMIn66g2HWFyN37HcqC65Kph4zU/iCju8x+/yXLfn35qHEpqi6lt+S23aEphr99Xtd6pLjysVdRVHu5LXiS8/5+Af1xQxiJZ2uH+wrrQ=
From: Bertrand Marquis <Bertrand.Marquis@arm.com>
To: Jan Beulich <jbeulich@suse.com>
CC: Mykola Kvach <xakep.amatop@gmail.com>, Mykola Kvach
	<mykola_kvach@epam.com>, Stefano Stabellini <sstabellini@kernel.org>, Julien
 Grall <julien@xen.org>, Michal Orzel <michal.orzel@amd.com>, Volodymyr
 Babchuk <Volodymyr_Babchuk@epam.com>, "xen-devel@lists.xenproject.org"
	<xen-devel@lists.xenproject.org>
Subject: Re: [PATCH v3] xen/arm: vpsci: ignore upper 32 bits for SMC32 PSCI
 arguments
Thread-Topic: [PATCH v3] xen/arm: vpsci: ignore upper 32 bits for SMC32 PSCI
 arguments
Thread-Index:
 AQHcwTztA0BB9cGvO0qBEZxru/k/mbXJvzqAgAAMSgCAABEHgIAACdaAgAAJKoCAAAgSAIAAKwOAgBYB9QA=
Date: Wed, 15 Apr 2026 12:29:51 +0000
Message-ID: <DDF9A244-22CB-416E-A855-D85FECE0A3C2@arm.com>
References:
 <e1d18d55557ebe232fd62174f186b1cf228e48e5.1774981189.git.mykola_kvach@epam.com>
 <dc5550d7-5a2d-4ca1-85de-5a17c24aeac4@suse.com>
 <CAGeoDV-ffZsOW+Cu0-oPA1obBOv_1nWU8_PAdaqaoy6=YUHGig@mail.gmail.com>
 <5b16e00e-9a4d-4a18-8a5e-dde10b42a043@suse.com>
 <CAGeoDV_Cdpa6beFemKaVcCguwmo95x0g0rsRYbS1x5dAUxFPLQ@mail.gmail.com>
 <5fb9b5ee-ee71-49ec-b545-62c8ec27fc15@suse.com>
 <CAGeoDV-HCKUXZ-CZBASLik=xkR02w-n=5+HVsYGwfDf4zD-3zA@mail.gmail.com>
 <425cdc68-5e25-4e01-b5d9-6469e2d08abb@suse.com>
In-Reply-To: <425cdc68-5e25-4e01-b5d9-6469e2d08abb@suse.com>
Accept-Language: en-GB, en-US
Content-Language: en-US
X-MS-Has-Attach:
X-MS-TNEF-Correlator:
x-mailer: Apple Mail (2.3864.500.181)
Authentication-Results-Original: dkim=none (message not signed)
 header.d=none;dmarc=none action=none header.from=arm.com;
x-ms-traffictypediagnostic:
	PR3PR08MB5593:EE_|DB9PR08MB11244:EE_|AMS1EPF00000091:EE_|AS4PR08MB7997:EE_
X-MS-Office365-Filtering-Correlation-Id: e580d7a6-ad44-4a88-cea6-08de9aead8f9
x-checkrecipientrouted: true
nodisclaimer: true
X-MS-Exchange-SenderADCheck: 1
X-MS-Exchange-AntiSpam-Relay: 0
X-Microsoft-Antispam-Untrusted:
 BCL:0;ARA:13230040|1800799024|366016|376014|38070700021|56012099003|18002099003|22082099003;
X-Microsoft-Antispam-Message-Info-Original:
 hrUXsHhkMxb0/e+xP4bzfziYl8LFNCcDZuchl+X3/3t9lAzS8NVnFexvfMuFnQFAbhjlVTbu0kRJ8AfFlq4BAeewDxuA/PEuLNAld36b2HJa3NAasEFGbxz8xKmj/KlXA00UrNF7skUTQJV31F4bKrz/WU35iGtLfM/ckp6fHuN9afH5G7FBU2WqJTQRW83HTemo4e0Ye2skjyVva8OdDpJ5LKsskmM0D5OWHgPVN+fIe7N4RtMJ//w7j1W9rTYQFMYf/BJqIXHd5Hb/A6lmBMffDHVpmb+e/HYwTWTkbuvsM5NNm23YL5aOlKN5IgsbqIdj9ZMlIRJ32cjz9/vrCsiv8WYYhNki56y0nyhrhZ3p4PwZVri5gEWlibzOvUdgTJ9dcQEKzfxDGRHqf1Q5SsZ0LBx2wwfTpDMcuROk5xrzuWL8RIE5r7pM67Xibc636Ztl7slBE99X0Go0a5eb2HVyeva3T5v0DL2XrePnXzvZgm2Raxt9s09xzCSytD5knytlq3tnd+6gp4DoZzaGEWQm67lCqnMJ5NVAdCJ/lgHjwDtUUh0Ia16K8HGR+2B9E1YrY6FpJaS2G0IVNsKMjR1vkjDacOKPd/zyykETNA/rDwEnC7N767LKFTASrw+SJyb+ZipRyop0q4ocpbOco3H0LG/Ae1xFwt9hSvBtMdvbckcvYYenKvZIkvsQK++2FNbqSajWGmPzn9VWhi3By0UCmORIig6o/A3ez47m5r1IZs/iQ+w+M8E2tl6vDMQ1YI66GAdDPJ1oC/wVXHBfcCo9w3KqPWOy9W1ltXRGCOk=
X-Forefront-Antispam-Report-Untrusted:
 CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:PR3PR08MB5593.eurprd08.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(1800799024)(366016)(376014)(38070700021)(56012099003)(18002099003)(22082099003);DIR:OUT;SFP:1101;
Content-Type: text/plain; charset="utf-8"
Content-ID: <CB4989F6D387AF4493DA08FB4AD46208@eurprd08.prod.outlook.com>
Content-Transfer-Encoding: base64
MIME-Version: 1.0
X-Exchange-RoutingPolicyChecked:
 pvIkVlTQwThmqbYinq6u2v046JmJOigADSUpuhu/KFfnoaPuzIrH474bOycs84mjCgaegZyFLFJ+Ls0ZTGxPzyrFVL/iTbQZlya+Nl6WkDhr9dongCqC6J1mqJy3l4smce7UrxZCyeAfigd/HjcfYHVPLKO0M1scNoq+9+6w5zg9EEjIB6uldOk4PrI8dxWDR2rZgtQBJT7Wt4QNoenydkmic2Cm96G03MfD9nCH1b343q/Z6sebA7IjtjclyCscgbVt4tT3KX+NVnlKdbWoUjxWl/DcIO8BSHZJlXru1+37VEnG2ASBa2W53NrQbJVzqsoJswaUC26Wi/XjI7Wl9w==
X-MS-Exchange-Transport-CrossTenantHeadersStamped: DB9PR08MB11244
X-EOPAttributedMessage: 0
X-MS-Exchange-Transport-CrossTenantHeadersStripped:
 AMS1EPF00000091.eurprd05.prod.outlook.com
X-MS-PublicTrafficType: Email
X-MS-Office365-Filtering-Correlation-Id-Prvs:
	e9cd6aa2-7091-40a8-bfbd-08de9aeab0f9
X-Microsoft-Antispam:
	BCL:0;ARA:13230040|36860700016|14060799003|376014|35042699022|82310400026|1800799024|56012099003|22082099003|18002099003;
X-Microsoft-Antispam-Message-Info:
	PPQ10RYZ39pMwU2dxW1FgWePtPLZUbe5L74bOX/K8u/YKE3DGPaOslpgl/Ft83fa8mukGJt6M9yL2QeFIEldCpPgZ64gSzMcr2yU8LzDIR5829RIuS3ytdkpCbMshgDU93yJLGt+rWgGqRNUKnSVmU0EWEd00qTacLVjSP7FpUuwRDv/wbJHzh734ZxO5uKfAwL6+MkFw0TW3IwwQ5doAIjMqsNKuCJKDHy9/pfN9yI3GAU8g8u/P0g9nVNz0kEr6kjMudGJuRU8A9aa9IBd4LG7OCgB5dAz6iKL2ImB798nT2l+zIqzhcgfBbT/QDRtINeuwh0wbXq8uV78TFUK1Azac/kqLDBhhUDfSiOl6UBS5zoGLbMOFpg16//6rchbfrHjPyRviDGz4yo8cRuoYlE6QlP3dKHSvuBLzJcPKU+to5G9eJ88nX6nvSAyadG2Ub033S1v2JJ3wYq6MrmLT4ZSSVHha+Aytx7NUJwf3i01EVT+UTHcosnmGPCwWim7pwX/5RYqgVINzkcwFQoM8xPFnh4Rv3FuQ86yiedBkJzIbh+G9oLlOTlfGzE79JNOBTXOIMozwpSRopymfWuRziqCwx147DEQabo7u+NnHkuaveLtj3bM1iIE3sLROzRMGgzGfptdk+qATovwb/BiqqYQIcoJwQa7d6P25VneIOv0PSARQib2Bys9tPtHpMBTXKPv6mNzlEPlC/+G8/REDXwe9qK8mx7IqQKRKMo2iut+pxrtkEfcEATJWrGhPt8igE7H3GrgEMvWUiPALCq/jw==
X-Forefront-Antispam-Report:
	CIP:4.158.2.129;CTRY:GB;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:outbound-uk1.az.dlp.m.darktrace.com;PTR:InfoDomainNonexistent;CAT:NONE;SFS:(13230040)(36860700016)(14060799003)(376014)(35042699022)(82310400026)(1800799024)(56012099003)(22082099003)(18002099003);DIR:OUT;SFP:1101;
X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1
X-MS-Exchange-AntiSpam-MessageData-0:
	YmFwNv6HyuIjQzRHa+D0OhowdzXmj7YS2bfgBy2/w/UALAfHnZo+/IydT2KDOwZQYksfML4yNQU40EBPqsRxBLlwXExz/07Tl8Ep5sBQWI4IRkIVJJIrd+JwNdgTE29/phofRiWPijqL4C/wYUs1jEtKWcLpN0N/Iziuysvj0qLa3FFAHD+8hZy55GZc4quI3m2iYWQjjcB9VOWlqmGyU8i6XrP627MhUVIR6GGLW8FeoaVBcM+8TI7+C6bpuVyqNso2KwyXTV3Kd5bR2DcTwuav03Wr816Dwyt79zOfHn5hShwVbUNpfdrXJ9pY2XTh6MomHhfBt8d0Vih+whaJLp5wFMFk4zk3xXVbYcZiIlU7ehqf1nAxmpDpqOsjpqitwXD8JZPjd3HmmdAvORp1tcJoNAcBe7qaUV0IOSEQgR7RMitfHTdTZJ1e9u3jQLy2
X-OriginatorOrg: arm.com
X-MS-Exchange-CrossTenant-OriginalArrivalTime: 15 Apr 2026 12:30:58.5392
 (UTC)
X-MS-Exchange-CrossTenant-Network-Message-Id: e580d7a6-ad44-4a88-cea6-08de9aead8f9
X-MS-Exchange-CrossTenant-Id: f34e5979-57d9-4aaa-ad4d-b122a662184d
X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=f34e5979-57d9-4aaa-ad4d-b122a662184d;Ip=[4.158.2.129];Helo=[outbound-uk1.az.dlp.m.darktrace.com]
X-MS-Exchange-CrossTenant-AuthSource:
	AMS1EPF00000091.eurprd05.prod.outlook.com
X-MS-Exchange-CrossTenant-AuthAs: Anonymous
X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem
X-MS-Exchange-Transport-CrossTenantHeadersStamped: AS4PR08MB7997
X-purgate-ID: tlsNG-42698a/1776256265-F5BC22A1-037FB8AC/0/0
X-purgate-type: clean
X-purgate-size: 9492

SGkgSmFuIGFuZCBNeWtvbGEsDQoNCj4gT24gMSBBcHIgMjAyNiwgYXQgMTQ6MjQsIEphbiBCZXVs
aWNoIDxqYmV1bGljaEBzdXNlLmNvbT4gd3JvdGU6DQo+IA0KPiBPbiAwMS4wNC4yMDI2IDExOjUx
LCBNeWtvbGEgS3ZhY2ggd3JvdGU6DQo+PiBPbiBXZWQsIEFwciAxLCAyMDI2IGF0IDEyOjIy4oCv
UE0gSmFuIEJldWxpY2ggPGpiZXVsaWNoQHN1c2UuY29tPiB3cm90ZToNCj4+PiBPbiAwMS4wNC4y
MDI2IDEwOjQ5LCBNeWtvbGEgS3ZhY2ggd3JvdGU6DQo+Pj4+IE9uIFdlZCwgQXByIDEsIDIwMjYg
YXQgMTE6MTTigK9BTSBKYW4gQmV1bGljaCA8amJldWxpY2hAc3VzZS5jb20+IHdyb3RlOg0KPj4+
Pj4gT24gMDEuMDQuMjAyNiAwOToxMywgTXlrb2xhIEt2YWNoIHdyb3RlOg0KPj4+Pj4+IE9uIFdl
ZCwgQXByIDEsIDIwMjYgYXQgOToyOeKAr0FNIEphbiBCZXVsaWNoIDxqYmV1bGljaEBzdXNlLmNv
bT4gd3JvdGU6DQo+Pj4+Pj4+IE9uIDMxLjAzLjIwMjYgMjA6MzEsIE15a29sYSBLdmFjaCB3cm90
ZToNCj4+Pj4+Pj4+IEZyb206IE15a29sYSBLdmFjaCA8bXlrb2xhX2t2YWNoQGVwYW0uY29tPg0K
Pj4+Pj4+Pj4gDQo+Pj4+Pj4+PiBTTUNDQyBERU4wMDI4Rywgc2VjdGlvbiAzLjEsIHN0YXRlcyB0
aGF0IGZvciBBQXJjaDY0IFNNQy9IVkMgY2FsbHMNCj4+Pj4+Pj4+IHVzaW5nIFduLCBvbmx5IHRo
ZSBsZWFzdCBzaWduaWZpY2FudCAzMiBiaXRzIGFyZSBzaWduaWZpY2FudCBhbmQgdGhlDQo+Pj4+
Pj4+PiB1cHBlciAzMiBiaXRzIG11c3QgYmUgaWdub3JlZCBieSB0aGUgaW1wbGVtZW50YXRpb24u
DQo+Pj4+Pj4+PiANCj4+Pj4+Pj4+IFNvIGZvciBTTUMzMiBQU0NJIGNhbGxzLCBYZW4gbXVzdCBu
b3QgdHJlYXQgbm9uLXplcm8gdXBwZXIgYml0cyBpbiB0aGUNCj4+Pj4+Pj4+IGFyZ3VtZW50IHJl
Z2lzdGVycyBhcyBhbiBlcnJvci4gSW5zdGVhZCwgdGhleSBzaG91bGQgYmUgZGlzY2FyZGVkIHdo
ZW4NCj4+Pj4+Pj4+IGRlY29kaW5nIHRoZSBhcmd1bWVudHMuDQo+Pj4+Pj4+PiANCj4+Pj4+Pj4+
IEFybSBBUk0gRERJIDA0ODdKLmEgKEQxLTU0MDYpIGFsc28gbm90ZXMgdGhhdCB0aGUgdXBwZXIg
MzIgYml0cyBtYXkgYmUNCj4+Pj4+Pj4+IGltcGxlbWVudGF0aW9uIGRlZmluZWQgd2hlbiBlbnRl
cmluZyBmcm9tIEFBcmNoMzIuIFhlbiB6ZXJvcyB0aGVtIG9uDQo+Pj4+Pj4+PiBlbnRyeSwgYnV0
IHRoYXQgZ3VhcmFudGVlIGlzIG9ubHkgcmVsZXZhbnQgZm9yIDMyLWJpdCBkb21haW5zLg0KPj4+
Pj4+Pj4gDQo+Pj4+Pj4+PiBVcGRhdGUgUFNDSSB2MC4yKyBDUFVfT04sIENQVV9TVVNQRU5ELCBB
RkZJTklUWV9JTkZPIGFuZCBTWVNURU1fU1VTUEVORA0KPj4+Pj4+Pj4gdG8gcmVhZCBTTUMzMiBh
cmd1bWVudHMgdmlhIFBTQ0lfQVJHMzIoKSwgd2hpbGUga2VlcGluZyB0aGUgU01DNjQNCj4+Pj4+
Pj4+IGhhbmRsaW5nIHVuY2hhbmdlZC4NCj4+Pj4+Pj4+IA0KPj4+Pj4+Pj4gTm8gZnVuY3Rpb25h
bCBjaGFuZ2UgaXMgaW50ZW5kZWQgZm9yIFBTQ0kgMC4xLg0KPj4+Pj4+Pj4gDQo+Pj4+Pj4+PiBT
dWdnZXN0ZWQtYnk6IEp1bGllbiBHcmFsbCA8anVsaWVuQHhlbi5vcmc+DQo+Pj4+Pj4+PiBTaWdu
ZWQtb2ZmLWJ5OiBNeWtvbGEgS3ZhY2ggPG15a29sYV9rdmFjaEBlcGFtLmNvbT4NCj4+Pj4+Pj4+
IFJldmlld2VkLWJ5OiBCZXJ0cmFuZCBNYXJxdWlzIDxiZXJ0cmFuZC5tYXJxdWlzQGFybS5jb20+
DQo+Pj4+Pj4+IA0KPj4+Pj4+PiBJIHRob3VnaHQgSSBtaWdodCBhcyB3ZWxsIGluY2x1ZGUgdGhp
cyBpbiBteSBuZXh0IGNvbW1pdCBzd2VlcCwgYnV0IGlzbid0DQo+Pj4+Pj4+IHRoaXMgUi1iIGJl
aW5nIGludmFsaWRhdGVkIGJ5IC4uLg0KPj4+Pj4+PiANCj4+Pj4+Pj4+IC0tLQ0KPj4+Pj4+Pj4g
djM6DQo+Pj4+Pj4+PiAtIHVzZSBQU0NJX0FSR19DT05WIGZvciBTWVNURU1fU1VTUEVORA0KPj4+
Pj4+PiANCj4+Pj4+Pj4gLi4uIHRoaXMgY2hhbmdlLiBUaGF0J3MgLi4uDQo+Pj4+Pj4+IA0KPj4+
Pj4+Pj4gQEAgLTQyMiwxNCArNDI3LDggQEAgYm9vbCBkb192cHNjaV8wXzJfY2FsbChzdHJ1Y3Qg
Y3B1X3VzZXJfcmVncyAqcmVncywgdWludDMyX3QgZmlkKQ0KPj4+Pj4+Pj4gICAgIGNhc2UgUFND
SV8xXzBfRk4zMl9TWVNURU1fU1VTUEVORDoNCj4+Pj4+Pj4+ICAgICBjYXNlIFBTQ0lfMV8wX0ZO
NjRfU1lTVEVNX1NVU1BFTkQ6DQo+Pj4+Pj4+PiAgICAgew0KPj4+Pj4+Pj4gLSAgICAgICAgcmVn
aXN0ZXJfdCBlcG9pbnQgPSBQU0NJX0FSRyhyZWdzLCAxKTsNCj4+Pj4+Pj4+IC0gICAgICAgIHJl
Z2lzdGVyX3QgY2lkID0gUFNDSV9BUkcocmVncywgMik7DQo+Pj4+Pj4+PiAtDQo+Pj4+Pj4+PiAt
ICAgICAgICBpZiAoIGZpZCA9PSBQU0NJXzFfMF9GTjMyX1NZU1RFTV9TVVNQRU5EICkNCj4+Pj4+
Pj4+IC0gICAgICAgIHsNCj4+Pj4+Pj4+IC0gICAgICAgICAgICBlcG9pbnQgJj0gR0VOTUFTSygz
MSwgMCk7DQo+Pj4+Pj4+PiAtICAgICAgICAgICAgY2lkICY9IEdFTk1BU0soMzEsIDApOw0KPj4+
Pj4+Pj4gLSAgICAgICAgfQ0KPj4+Pj4+Pj4gKyAgICAgICAgcmVnaXN0ZXJfdCBlcG9pbnQgPSBQ
U0NJX0FSR19DT05WKHJlZ3MsIDEsIGlzX2NvbnZfNjQpOw0KPj4+Pj4+Pj4gKyAgICAgICAgcmVn
aXN0ZXJfdCBjaWQgPSBQU0NJX0FSR19DT05WKHJlZ3MsIDIsIGlzX2NvbnZfNjQpOw0KPj4+Pj4+
Pj4gDQo+Pj4+Pj4+PiAgICAgICAgIHBlcmZjX2luY3IodnBzY2lfc3lzdGVtX3N1c3BlbmQpOw0K
Pj4+Pj4+Pj4gICAgICAgICBQU0NJX1NFVF9SRVNVTFQocmVncywgZG9fcHNjaV8xXzBfc3lzdGVt
X3N1c3BlbmQoZXBvaW50LCBjaWQpKTsNCj4+Pj4+Pj4gDQo+Pj4+Pj4+IC4uLiB0aGlzIGh1bmsg
YWl1aSwgd2hpY2ggaXMgZmFyIGZyb20gbWVyZWx5IGNvc21ldGljIGltby4gV2hpbGUNCj4+Pj4+
PiANCj4+Pj4+PiBOb2JvZHkgc2FpZCB0aGF0IHRoZSBjaGFuZ2UgaGFkIHRvIGJlIHB1cmVseSBj
b3NtZXRpYyBpbiBvcmRlciB0byBrZWVwDQo+Pj4+Pj4gdGhlIHRhZy4gSSB1bmRlcnN0b29kIGl0
IGRpZmZlcmVudGx5IGZyb20gdGhlIG9mZmljaWFsIFhlbg0KPj4+Pj4+IGRvY3VtZW50YXRpb24g
cGFnZXMuDQo+Pj4+Pj4gDQo+Pj4+Pj4+IGJlaGF2aW9yIGxvb2tzIHRvIHJlbWFpbiB0aGUgc2Ft
ZSBmb3IgUFNDSV8xXzBfRk4zMl9TWVNURU1fU1VTUEVORCwgaXQNCj4+Pj4+PiANCj4+Pj4+PiBF
eGFjdGx5LiBJZiB0aGUgY2hhbmdlcyBhcmUgbm90IHN1YnN0YW50aWFsLCBJIGRvIG5vdCBzZWUg
YSByZWFzb24gdG8NCj4+Pj4+PiBkcm9wIHRoZSB0YWcgLi4uDQo+Pj4+Pj4gDQo+Pj4+Pj4+IGNs
ZWFybHkgY2hhbmdlcyBmb3IgUFNDSV8xXzBfRk42NF9TWVNURU1fU1VTUEVORC4gVGhhdCBtYXkg
YmUgaW50ZW5kZWQNCj4+Pj4+Pj4gYW5kIGZvciB0aGUgYmV0dGVyLCBidXQgdGhlIGNoYW5nZSBj
bGVhcmx5IHdhc24ndCByZXZpZXdlZCBieSBCZXJ0cmFuZCwNCj4+Pj4+Pj4gbm9yIC0gd2hlbiBv
ZmZlcmluZyB0aGUgUi1iIC0gZGlkIGhlIGFzayBmb3IgdGhpcyBleHRyYSBjaGFuZ2UuDQo+Pj4+
Pj4gDQo+Pj4+Pj4gLi4uIGFuZCB0aGlzIGlzIGFsc28gaG93IEkgdW5kZXJzdG9vZCB0aGUgWGVu
IHBhdGNoIHN1Ym1pc3Npb24NCj4+Pj4+PiBndWlkZWxpbmVzIFsxXSwgd2hpY2ggc2F5Og0KPj4+
Pj4+IA0KPj4+Pj4+ICJOb3RlIHRoYXQgaWYgdGhlcmUgYXJlIHNldmVyYWwgcmV2aXNpb25zIG9m
IGEgcGF0Y2gsIHlvdSBvdWdodCB0bw0KPj4+Pj4+IGNvcHkgdGFncyB0aGF0IGhhdmUgYWNjdW11
bGF0ZWQgZHVyaW5nIHRoZSByZXZpZXcuIEZvciBleGFtcGxlLCBpZg0KPj4+Pj4+IHBlcnNvbiBB
IGFuZCBwZXJzb24gQiBhZGRlZCBhIFJldmlld2VkLWJ5OiB0YWcgdG8gdjEgb2YgeW91ciBwYXRj
aCwNCj4+Pj4+PiBpbmNsdWRlIGl0IGludG8gdjIgb2YgeW91ciBwYXRjaC4gSWYgeW91IG1ha2Ug
c3Vic3RhbnRpYWwgY2hhbmdlcw0KPj4+Pj4+IGFmdGVyIGNlcnRhaW4gdGFncyB3ZXJlIGFscmVh
ZHkgYXBwbGllZCwgeW91IHdpbGwgd2FudCB0byBjb25zaWRlcg0KPj4+Pj4+IHdoaWNoIG9uZXMg
YXJlIG5vIGxvbmdlciBhcHBsaWNhYmxlIChhbmQgbWF5IHJlcXVpcmUgcmUtcHJvdmlkaW5nKS4i
DQo+Pj4+Pj4gDQo+Pj4+Pj4gU28gbXkgdW5kZXJzdGFuZGluZyB3YXMgdGhhdCB0YWdzIHNob3Vs
ZCBub3JtYWxseSBiZSBrZXB0IGFjcm9zcw0KPj4+Pj4+IHJldmlzaW9ucywgdW5sZXNzIHRoZSBj
aGFuZ2VzIGFyZSBzdWJzdGFudGlhbCBlbm91Z2ggdG8gbWFrZSB0aGVtIG5vDQo+Pj4+Pj4gbG9u
Z2VyIGFwcGxpY2FibGUuDQo+Pj4+PiANCj4+Pj4+IE1heWJlIG91ciB1bmRlcnN0YW5kaW5nIG9m
ICJzdWJzdGFudGlhbCIgZGlmZmVycy4gVG8gbWUgdGhhdCdzIGFueXRoaW5nDQo+Pj4+PiBjaGFu
Z2luZyBmdW5jdGlvbmFsaXR5LiBTdHlsZSBhZGp1c3RtZW50cywgdHlwbyBjb3JyZWN0aW9ucywg
YW5kIGFsaWtlDQo+Pj4+PiBnZW5lcmFsbHkgYXJlbid0IHN1YnN0YW50aWFsIChhbGJlaXQgZXZl
biB0aGVuIHRoZXJlIG1heSBiZSBleGNlcHRpb25zKS4NCj4+Pj4gDQo+Pj4+IFRoYW5rcyBmb3Ig
Y2xhcmlmeWluZyB3aGF0IHlvdSBjb25zaWRlciBzdWJzdGFudGlhbC4NCj4+Pj4gDQo+Pj4+IEV2
ZW4gdW5kZXIgdGhhdCBpbnRlcnByZXRhdGlvbiwgSSBkbyBub3Qgc2VlIGEgZnVuY3Rpb25hbGl0
eSBjaGFuZ2UNCj4+Pj4gaGVyZS4gIlJlZmFjdG9yaW5nIiBzZWVtcyBsaWtlIHRoZSBtb3JlIGFj
Y3VyYXRlIHRlcm0gaW4gdGhpcyBjYXNlOg0KPj4+PiB0aGUgaW50ZXJuYWwgZm9ybSBjaGFuZ2Vz
LCBidXQgdGhlIGludGVuZGVkIGV4dGVybmFsIGJlaGF2aW9yIGRvZXMNCj4+Pj4gbm90Lg0KPj4+
PiANCj4+Pj4gSXQgbWF5IGJlIHRoYXQgd2UgYXJlIHVzaW5nICJmdW5jdGlvbmFsIGNoYW5nZSIg
aW4gc2xpZ2h0bHkgZGlmZmVyZW50DQo+Pj4+IHNlbnNlcyBoZXJlLg0KPj4+PiANCj4+Pj4gRm9y
IHYzLCB0aGUgc3dpdGNoIHRvIFBTQ0lfQVJHX0NPTlYoKSBpbiBTWVNURU1fU1VTUEVORCB3YXMg
bWVhbnQgdG8NCj4+Pj4gbWFrZSB0aGlzIGNhc2UgY29uc2lzdGVudCB3aXRoIHRoZSBoZWxwZXIt
YmFzZWQgYXJndW1lbnQgZGVjb2RpbmcgdXNlZA0KPj4+PiBlbHNld2hlcmUsIG5vdCB0byBjaGFu
Z2UgYmVoYXZpb3IuDQo+Pj4+IA0KPj4+PiBJbiBwYXJ0aWN1bGFyLCBJIGRvIG5vdCBzZWUgYSBm
dW5jdGlvbmFsIGNoYW5nZSBmb3INCj4+Pj4gUFNDSV8xXzBfRk42NF9TWVNURU1fU1VTUEVORDog
djIgdXNlZCBQU0NJX0FSRyhyZWdzLCAxLzIpLCBhbmQgaW4gdjMNCj4+Pj4gUFNDSV9BUkdfQ09O
VihyZWdzLCAxLzIsIGlzX2NvbnZfNjQpIHNob3VsZCByZXNvbHZlIHRvIHRoZSBzYW1lIHRoaW5n
DQo+Pj4+IHdoZW4gaXNfY29udl82NCBpcyB0cnVlLg0KPj4+IA0KPj4+IElzbid0IHRoZSB3aG9s
ZSBwb2ludCBvZiB0aGUgcGF0Y2ggdG8gYWx0ZXIgYmVoYXZpb3Igd2hlbiBpc19jb252XzY0IGlz
DQo+Pj4gZmFsc2U/IEZvciB0aGF0IGNhc2UgUFNDSV8xXzBfRk42NF9TWVNURU1fU1VTUEVORCBi
ZWhhdmlvciBsb29rcyB0bw0KPj4+IGNoYW5nZSBpbiB2Mywgd2hlbiBpdCBkaWRuJ3QgaW4gdjIu
IFdoZXJlYXMgZm9yDQo+Pj4gUFNDSV8xXzBfRk4zMl9TWVNURU1fU1VTUEVORCB0aGUgdjMgY2hh
bmdlIGluZGVlZCBvbmx5IGVsaW1pbmF0ZXMgb3Blbi0NCj4+PiBjb2RpbmcsIHdoaWNoIG9uZSBt
YXkgb3IgbWF5IG5vdCByZWdhcmQgYXMgInN1YnN0YW50aWFsIi4NCj4+IA0KPj4gSSB0aGluayB0
aGUgcG9pbnQgSSB3YXMgdHJ5aW5nIHRvIG1ha2UgaXMgc2xpZ2h0bHkgbmFycm93ZXI6IGluIHRo
aXMNCj4+IGNvZGUgcGF0aCwgaXNfY29udl82NCBpcyBkZXJpdmVkIGRpcmVjdGx5IGZyb20gZmlk
IHZpYQ0KPj4gc21jY2NfaXNfY29udl82NChmaWQpIGJlZm9yZSB0aGUgc3dpdGNoIChmaWQpLg0K
Pj4gDQo+PiBTbyBmb3IgUFNDSV8xXzBfRk42NF9TWVNURU1fU1VTUEVORCwgSSBkbyBub3Qgc2Vl
IGhvdw0KPj4gaXNfY29udl82NCA9PSBmYWxzZSBjb3VsZCBhcmlzZSBoZXJlOiBpZiB3ZSBhcmUg
aW4gdGhlIEZONjQgY2FzZSwNCj4+IHRoZSBmdW5jdGlvbiBJRCBhbHJlYWR5IGVuY29kZXMgdGhl
IDY0LWJpdCBjb252ZW50aW9uLg0KPj4gDQo+PiBDb252ZXJzZWx5LCBpZiBpc19jb252XzY0IGlz
IGZhbHNlIGhlcmUsIHRoZW4gdGhpcyBjYW5ub3QgYmUgdGhlDQo+PiBGTjY0IGNhc2UuDQo+IA0K
PiBBaCwgSSBzZWUuIFRvIGZpZ3VyZSB0aGF0IG91dCwgSSB3b3VsZCBoYXZlIGhhZCB0byBkbyBh
IHByb3BlciByZXZpZXcuIEkNCj4gd2FzIGFmdGVyIGNvbW1pdHRpbmcgb25seSwgd2hpY2ggb3Vn
aHQgdG8gYmUgYW4gZW50aXJlbHkgbWVjaGFuaWNhbCBzdGVwLg0KPiANCj4+IE9uIHRoYXQgYmFz
aXMsIEkgZG8gbm90IHNlZSBhIGJlaGF2aW9yYWwgY2hhbmdlIGZvciB0aGUgRk42NA0KPj4gU1lT
VEVNX1NVU1BFTkQgY2FzZSBpbiB2My4NCj4gDQo+IEkgYWdyZWUgKG5vdykuIEknbSBzdGlsbCBu
b3QgZ29pbmcgdG8gcGljayB1cCB0aGF0IHBhdGNoLCBidXQgcmF0aGVyDQo+IGxlYXZlIGl0IHRv
IHRoZSBBcm0gbWFpbnRhaW5lcnMuIFdoaWxlIG5vdCBhcyBjbGVhciBjdXQgYXMgaXQgZmlyc3QN
Cj4gc2VlbWVkIHRvIG1lLCBJIHN0aWxsIGNvbnNpZGVyIGl0IHdpdGhpbiB0aGUgZ3JleSBhcmVh
Lg0KDQpTb3JyeSBmb3IgdGhlIGRlbGF5LCB0aGlzIGZlbHQgdGhyb3VnaCBpbiBteSBmaWx0ZXJz
IGFzIGl0IHdhcyByZXZpZXdlZC1ieSBhbHJlYWR5Lg0KDQpJIGFtIG9rIHdpdGggdGhlIGNoYW5n
ZXMgZG9uZSB3aGljaCBtYWtlIHNlbnNlIChtYXNrIGlzIG5vdyBkb25lDQpkaXJlY3RseSkuDQoN
ClJldmlld2VkLWJ5OiBCZXJ0cmFuZCBNYXJxdWlzIDxiZXJ0cmFuZC5tYXJxdWlzQGFybS5jb20+
DQoNCkNoZWVycw0KQmVydHJhbmQNCg0KPiANCj4gSmFuDQoNCg0K


From xen-devel-bounces@lists.xenproject.org Wed Apr 15 13:18:01 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 15 Apr 2026 13:18:01 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1282433.1565013 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wD07o-0005mj-7Q; Wed, 15 Apr 2026 13:17:48 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1282433.1565013; Wed, 15 Apr 2026 13:17: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 1wD07o-0005mc-3W; Wed, 15 Apr 2026 13:17:48 +0000
Received: by outflank-mailman (input) for mailman id 1282433;
 Wed, 15 Apr 2026 13:17:47 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <bounce-md_30504962.69df8ff8.v1-fd547845742743ca86a5e54dbe50272d@bounce.vates.tech>)
 id 1wD07n-0005mW-LG
 for xen-devel@lists.xenproject.org; Wed, 15 Apr 2026 13:17:47 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wD07m-009cId-Ak
 for xen-devel@lists.xenproject.org; Wed, 15 Apr 2026 15:17:46 +0200
Received: from [10.42.69.4] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1) (envelope-from
 <bounce-md_30504962.69df8ff8.v1-fd547845742743ca86a5e54dbe50272d@bounce.vates.tech>)
 id 69df8ff3-2eae-0a2a0a5409dd-0a2a45048df8-22
 for <xen-devel@lists.xenproject.org>; Wed, 15 Apr 2026 15:17:46 +0200
Received: from [198.2.187.14] (helo=mail187-14.suw11.mandrillapp.com)
 by tlsNG-ebf023.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.0)
 (envelope-from
 <bounce-md_30504962.69df8ff8.v1-fd547845742743ca86a5e54dbe50272d@bounce.vates.tech>)
 id 69df8ff8-bb33-0a2a45040019-c602bb0e9b6a-3
 for <xen-devel@lists.xenproject.org>; Wed, 15 Apr 2026 15:17:45 +0200
Received: from pmta09.mandrill.prod.suw01.rsglab.com (localhost [127.0.0.1])
 by mail187-14.suw11.mandrillapp.com (Mailchimp) with ESMTP id
 4fwhX84VpVz8XTRtg
 for <xen-devel@lists.xenproject.org>; Wed, 15 Apr 2026 13:17:44 +0000 (GMT)
Received: from [37.26.189.201] by mandrillapp.com id
 fd547845742743ca86a5e54dbe50272d; Wed, 15 Apr 2026 13: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=mte1 header.d=mandrillapp.com header.i="@mandrillapp.com" header.h="From:Subject:To:Cc:Message-Id:References:In-Reply-To:Feedback-ID:Date:MIME-Version:Content-Type:Content-Transfer-Encoding"; dkim=pass header.s=mte1 header.d=vates.tech header.i="anthony.perard@vates.tech" header.h="From:Subject:To:Cc:Message-Id:References:In-Reply-To:Feedback-ID:Date:MIME-Version:Content-Type:Content-Transfer-Encoding"
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=mandrillapp.com;
	s=mte1; t=1776259064; x=1776529064;
	bh=vft3hscYBCsif/rRX+2OMXfzz+6WO4w3xXn7Q/U4/KI=;
	h=From:Subject:To:Cc:Message-Id:References:In-Reply-To:Feedback-ID:
	 Date:MIME-Version:Content-Type:Content-Transfer-Encoding:CC:Date:
	 Subject:From;
	b=Z0S/ysZWGDVvTUs9KUsTUJemkVyjUONCKPBy6NPlR86fHnmoArat5/YzArGQnMEFZ
	 xI2e+36bc72ahmjUUU+ewImQj2TCM+iT4qHtPZuiBG8Qurl2HKyLXphte7HqHYaDQg
	 qUPG/E/S6jLBHtdX7VrF7ppPKzh2OKw25DWIoHkoPfZhUkUZgX/8Az81dgXZV+5g6M
	 78BwJtc2qMwZl8eyqLdKAa9hEugnB11sWrbH8PVXRdpvGzsVCzS+z9GCvB/6Fnrre/
	 wLJE/sq2yUobTS0vtx4evBoJCIZWommYwBrX4Axu9vfV3dGAPMwEf5GIjACbVru2UI
	 vUyMApaQnwapw==
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=vates.tech; s=mte1;
	t=1776259064; x=1776519564; i=anthony.perard@vates.tech;
	bh=vft3hscYBCsif/rRX+2OMXfzz+6WO4w3xXn7Q/U4/KI=;
	h=From:Subject:To:Cc:Message-Id:References:In-Reply-To:Feedback-ID:
	 Date:MIME-Version:Content-Type:Content-Transfer-Encoding:CC:Date:
	 Subject:From;
	b=F5oKBKCsCZBqCGb5y7N8vGQZCFEteQ7QrRGgevr2Wnfuncs4vQOF5jDSIDXPlo8VO
	 f8lGlybV1tFIg/u2UlCUMSEemlsTHrtUUv9F2hOZyei1DdAcYY4P7TQf2/pTXr1LoO
	 ENvtk1D1aKt/u861lxkcLO17+2ILnPQy5oOnWk5tLBMrxsP8IiwOUXuPbLpNzMzdSc
	 feKlKRdfJkUdRKwy8oWFkeKrNhWMZrkbPdHJztc3Wr3ORujV88SKNwzRyLKSJVkMEE
	 4OF2kHljFTFbncbWGi8mM63T82nUHXboQEkz1rNkujmZH2An84ROdxWJhnh2/nhWw5
	 xGSLQvmS2XphA==
From: "Anthony PERARD" <anthony.perard@vates.tech>
Subject: =?utf-8?Q?Re:=20[PATCH=20test-artifacts=20v3=2007/13]=20Support=20building=20arbitrary=20Linux=20branch/tag/commit?=
X-Bm-Disclaimer: Yes
X-Bm-Milter-Handled: 4ffbd6c1-ee69-4e1b-aabd-f977039bd3e2
X-Bm-Transport-Timestamp: 1776259063364
To: "=?utf-8?Q?Marek=20Marczykowski-G=C3=B3recki?=" <marmarek@invisiblethingslab.com>
Cc: xen-devel@lists.xenproject.org, "Andrew Cooper" <andrew.cooper3@citrix.com>, "Stefano Stabellini" <sstabellini@kernel.org>, "=?utf-8?Q?Roger=20Pau=20Monn=C3=A9?=" <roger.pau@citrix.com>
Message-Id: <ad-P9s8enOeHWFyL@l14>
References: <cover.bd2e5bd58e4b316c9c1042b1ca8db51b81fb7ea7.1774999132.git-series.marmarek@invisiblethingslab.com> <b616361a3464b221a342dab11cd21ca76454a957.1774999132.git-series.marmarek@invisiblethingslab.com>
In-Reply-To: <b616361a3464b221a342dab11cd21ca76454a957.1774999132.git-series.marmarek@invisiblethingslab.com>
X-Native-Encoded: 1
X-Report-Abuse: =?UTF-8?Q?Please=20forward=20a=20copy=20of=20this=20message,=20including=20all=20headers,=20to=20abuse@mandrill.com.=20You=20can=20also=20report=20abuse=20here:=20https://mandrillapp.com/contact/abuse=3Fid=3D30504962.fd547845742743ca86a5e54dbe50272d?=
X-Mandrill-User: md_30504962
Feedback-ID: 30504962:30504962.20260415:md
Date: Wed, 15 Apr 2026 13:17:44 +0000
MIME-Version: 1.0
Content-Type: text/plain; charset=utf-8
Content-Transfer-Encoding: quoted-printable
X-purgate-ID: tlsNG-ebf023/1776259066-3072A51B-3BF21ADD/0/0
X-purgate-type: clean
X-purgate-size: 1552

On Wed, Apr 01, 2026 at 01:21:57AM +0200, Marek Marczykowski-G=C3=B3recki w=
rote:
> diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml
> index 58f7571f5366..62b2a24e7faf 100644
> --- a/.gitlab-ci.yml
> +++ b/.gitlab-ci.yml
> @@ -49,9 +53,13 @@ alpine-3.22-arm64-rootfs:
>  
>  linux-6.6.86-arm64:
>    extends: .arm64-artifacts
> -  script: ./scripts/build-linux.sh
> -  variables:
> -    LINUX_VERSION: 6.6.86
> +  script: ./scripts/build-linux.sh "6.6.86"

Is it crazy to think we could grab the linux version from the job name?
:-D

linux-6.6.86-arm64:
  script:
    - linux_version=3D"$CI_JOB_NAME"
    - linux_version=3D"${linux_version#linux-}"
    - linux_version=3D"${linux_version%%-*}"
    - ./scripts/build-linux.sh "$linux_version"

That would avoid having a job building a version of linux that is
different than the expected one, which can happen easly when duplicating
an existing job for building a new version of linux.

> diff --git a/scripts/build-linux.sh b/scripts/build-linux.sh
> index cf0e744bd232..882bac2189a6 100755
> --- a/scripts/build-linux.sh
> +++ b/scripts/build-linux.sh
> @@ -1,5 +1,8 @@
>  #!/usr/bin/env bash
>  
> +LINUX_VERSION=3D"$1"
> +LINUX_GIT_URL=3D"$2"
> +
>  if test -z "${LINUX_VERSION}"

With LINUX_VERSION been set just before, this test doesn't make sense
anymore, or the error message is wrong.

>  then
>      >&2 echo "LINUX_VERSION must be set"; exit 1

Thanks,


--
 | Vates

XCP-ng & Xen Orchestra - Vates solutions

web: https://vates.tech




From xen-devel-bounces@lists.xenproject.org Wed Apr 15 13:32:21 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 15 Apr 2026 13:32:21 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1282447.1565020 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wD0Lp-0008UO-DY; Wed, 15 Apr 2026 13:32:17 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1282447.1565020; Wed, 15 Apr 2026 13: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 1wD0Lp-0008UH-Ak; Wed, 15 Apr 2026 13:32:17 +0000
Received: by outflank-mailman (input) for mailman id 1282447;
 Wed, 15 Apr 2026 13:32:16 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <bounce-md_30504962.69df935e.v1-1a795d0610064f5681462d6652086e28@bounce.vates.tech>)
 id 1wD0Lo-0008UB-Mh
 for xen-devel@lists.xenproject.org; Wed, 15 Apr 2026 13:32:16 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wD0Lo-00Ad2n-35
 for xen-devel@lists.xenproject.org; Wed, 15 Apr 2026 15:32:16 +0200
Received: from [10.42.69.12] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1) (envelope-from
 <bounce-md_30504962.69df935e.v1-1a795d0610064f5681462d6652086e28@bounce.vates.tech>)
 id 69df9358-2eae-0a2a0a5409dd-0a2a450cbe98-26
 for <xen-devel@lists.xenproject.org>; Wed, 15 Apr 2026 15:32:16 +0200
Received: from [198.2.187.14] (helo=mail187-14.suw11.mandrillapp.com)
 by tlsNG-d25034.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.0)
 (envelope-from
 <bounce-md_30504962.69df935e.v1-1a795d0610064f5681462d6652086e28@bounce.vates.tech>)
 id 69df935e-f40c-0a2a450c0019-c602bb0e1bb3-3
 for <xen-devel@lists.xenproject.org>; Wed, 15 Apr 2026 15:32:15 +0200
Received: from pmta09.mandrill.prod.suw01.rsglab.com (localhost [127.0.0.1])
 by mail187-14.suw11.mandrillapp.com (Mailchimp) with ESMTP id
 4fwhrt474bz8XSCwc
 for <xen-devel@lists.xenproject.org>; Wed, 15 Apr 2026 13:32:14 +0000 (GMT)
Received: from [37.26.189.201] by mandrillapp.com id
 1a795d0610064f5681462d6652086e28; Wed, 15 Apr 2026 13:32: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=mte1 header.d=mandrillapp.com header.i="@mandrillapp.com" header.h="From:Subject:To:Cc:Message-Id:In-Reply-To:References:Feedback-ID:Date:MIME-Version:Content-Type:Content-Transfer-Encoding"; dkim=pass header.s=mte1 header.d=vates.tech header.i="teddy.astie@vates.tech" header.h="From:Subject:To:Cc:Message-Id:In-Reply-To:References:Feedback-ID:Date:MIME-Version:Content-Type:Content-Transfer-Encoding"
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=mandrillapp.com;
	s=mte1; t=1776259934; x=1776529934;
	bh=3eORvMGgdV2JgrkelULgZntYhi01D/h/hCD6psmBUzQ=;
	h=From:Subject:To:Cc:Message-Id:In-Reply-To:References:Feedback-ID:
	 Date:MIME-Version:Content-Type:Content-Transfer-Encoding:CC:Date:
	 Subject:From;
	b=15Gve7/aVyAjshyU9xqF45HVlaLk1cz2WuA1ckl8tNQwsy90JF/oFEeCrjj0xw276
	 R+XcfCczNFmqTM8hr8IBzKxkXui5UbNwCXO+NdoSiu70KgoMZjbZDEusRsVJrm8wdB
	 y/WGMjtAt2ZZ+o6oKt5xXHzhH0DbfbEggDD53sG20tR/+g1u3MMx15bcF8Gw0W88M8
	 4+AqL8+JdBeynymMfBd8N3O20FongqlicGGCdv1aEsB1FX/bqj9bQkYwWGwYtnPqXE
	 D/K5lsLZeFPFiDa5I6PvyCnV8gtvkHaeSgip9Rrkga3DFngA9FqHgUiua4S8Sio+m1
	 Jd0lhbd7Hl5Iw==
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=vates.tech; s=mte1;
	t=1776259934; x=1776520434; i=teddy.astie@vates.tech;
	bh=3eORvMGgdV2JgrkelULgZntYhi01D/h/hCD6psmBUzQ=;
	h=From:Subject:To:Cc:Message-Id:In-Reply-To:References:Feedback-ID:
	 Date:MIME-Version:Content-Type:Content-Transfer-Encoding:CC:Date:
	 Subject:From;
	b=aewLOIUc21gakTYdJKuHjfeDFOm3ibWen26ACcWO78RBFuXCYlAaocdFPenc56U8T
	 UsMH9fXjPDtKuvSiPrvyzmlXCpgsRi81mAu7lPxPl+Tp88Sg08b4Y4KpqR/Ukrvtav
	 JrxaNgimXczfB6bbpaajTnMUSs7DT96FcG+TEorDqKye7Qk2b2IrlkgVJodVhdL6rS
	 KlNux50R7fFsQhZ7BSDY7c0ai9tDLP+2ph7uTykQ0savGllAhYoDsRiSu/HjQQfMF/
	 BhY7X3BQN3Ez8sI8ov30Xdz/896wzIqVbwLDEtqLGlaIKX3Bmdx6C7jf67Qh0oE/2O
	 4Us0B80lMQMLw==
From: "Teddy Astie" <teddy.astie@vates.tech>
Subject: =?utf-8?Q?[RFC=20PATCH=201/7]=20vmx:=20Introduce=20vcpu=20single=20context=20VPID=20invalidation?=
X-Mailer: git-send-email 2.52.0
X-Bm-Disclaimer: Yes
X-Bm-Milter-Handled: 4ffbd6c1-ee69-4e1b-aabd-f977039bd3e2
X-Bm-Transport-Timestamp: 1776259933722
To: xen-devel@lists.xenproject.org
Cc: "Teddy Astie" <teddy.astie@vates.tech>, "Jan Beulich" <jbeulich@suse.com>, "Andrew Cooper" <andrew.cooper3@citrix.com>, "=?utf-8?Q?Roger=20Pau=20Monn=C3=A9?=" <roger.pau@citrix.com>
Message-Id: <50c96e2306538eb7cd28ddfcb21163c628fae0a4.1776259594.git.teddy.astie@vates.tech>
In-Reply-To: <cover.1776259594.git.teddy.astie@vates.tech>
References: <cover.1776259594.git.teddy.astie@vates.tech>
X-Native-Encoded: 1
X-Report-Abuse: =?UTF-8?Q?Please=20forward=20a=20copy=20of=20this=20message,=20including=20all=20headers,=20to=20abuse@mandrill.com.=20You=20can=20also=20report=20abuse=20here:=20https://mandrillapp.com/contact/abuse=3Fid=3D30504962.1a795d0610064f5681462d6652086e28?=
X-Mandrill-User: md_30504962
Feedback-ID: 30504962:30504962.20260415:md
Date: Wed, 15 Apr 2026 13:32:14 +0000
MIME-Version: 1.0
Content-Type: text/plain; charset=utf-8
Content-Transfer-Encoding: 7bit
X-purgate-ID: tlsNG-d25034/1776259936-FF547A3D-0EE0BC28/0/0
X-purgate-type: clean
X-purgate-size: 1506

Introduce vpid_sync_vcpu_context to do a single-context invalidation
on the vpid attached to the vcpu as a alternative to per-gva and all-context
invlidations.

Signed-off-by: Teddy Astie <teddy.astie@vates.tech>
---
 xen/arch/x86/include/asm/hvm/vmx/vmx.h | 21 +++++++++++++++++++++
 1 file changed, 21 insertions(+)

diff --git a/xen/arch/x86/include/asm/hvm/vmx/vmx.h b/xen/arch/x86/include/asm/hvm/vmx/vmx.h
index da04752e17..3524cb3536 100644
--- a/xen/arch/x86/include/asm/hvm/vmx/vmx.h
+++ b/xen/arch/x86/include/asm/hvm/vmx/vmx.h
@@ -452,6 +452,27 @@ static inline void ept_sync_all(void)
 
 void ept_sync_domain(struct p2m_domain *p2m);
 
+static inline void vpid_sync_vcpu_context(const struct vcpu *v)
+{
+    int type = INVVPID_SINGLE_CONTEXT;
+
+    /*
+     * If single context invalidation is not supported, we escalate to
+     * use all context invalidation.
+     */
+    if ( likely(cpu_has_vmx_vpid_invvpid_single_context) )
+        goto execute_invvpid;
+
+    /*
+     * If single context invalidation is not supported, we escalate to
+     * use all context invalidation.
+     */
+    type = INVVPID_ALL_CONTEXT;
+
+execute_invvpid:
+    __invvpid(type, v->arch.hvm.n1asid.asid, 0);
+}
+
 static inline void vpid_sync_vcpu_gva(struct vcpu *v, unsigned long gva)
 {
     int type = INVVPID_INDIVIDUAL_ADDR;
-- 
2.52.0



--
Teddy Astie | Vates XCP-ng Developer

XCP-ng & Xen Orchestra - Vates solutions

web: https://vates.tech



From xen-devel-bounces@lists.xenproject.org Wed Apr 15 13:32:22 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 15 Apr 2026 13:32:22 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1282448.1565029 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wD0Lr-0000Gj-Ko; Wed, 15 Apr 2026 13:32:19 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1282448.1565029; Wed, 15 Apr 2026 13:32: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 1wD0Lr-0000Gc-Hv; Wed, 15 Apr 2026 13:32:19 +0000
Received: by outflank-mailman (input) for mailman id 1282448;
 Wed, 15 Apr 2026 13:32:18 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <bounce-md_30504962.69df9360.v1-2f204a884a51440aa20c387e5f905bb7@bounce.vates.tech>)
 id 1wD0Lq-0000GL-Or
 for xen-devel@lists.xenproject.org; Wed, 15 Apr 2026 13:32:18 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wD0Lq-00DDma-1o
 for xen-devel@lists.xenproject.org; Wed, 15 Apr 2026 15:32:18 +0200
Received: from [10.42.69.1] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1) (envelope-from
 <bounce-md_30504962.69df9360.v1-2f204a884a51440aa20c387e5f905bb7@bounce.vates.tech>)
 id 69df9357-e002-0a2a0a5209dd-0a2a4501b888-48
 for <xen-devel@lists.xenproject.org>; Wed, 15 Apr 2026 15:32:18 +0200
Received: from [198.2.187.14] (helo=mail187-14.suw11.mandrillapp.com)
 by tlsNG-d62444.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.1)
 (envelope-from
 <bounce-md_30504962.69df9360.v1-2f204a884a51440aa20c387e5f905bb7@bounce.vates.tech>)
 id 69df9360-c1f2-0a2a45010019-c602bb0eba87-3
 for <xen-devel@lists.xenproject.org>; Wed, 15 Apr 2026 15:32:17 +0200
Received: from pmta09.mandrill.prod.suw01.rsglab.com (localhost [127.0.0.1])
 by mail187-14.suw11.mandrillapp.com (Mailchimp) with ESMTP id
 4fwhrw3phtz8XSHSC
 for <xen-devel@lists.xenproject.org>; Wed, 15 Apr 2026 13:32:16 +0000 (GMT)
Received: from [37.26.189.201] by mandrillapp.com id
 2f204a884a51440aa20c387e5f905bb7; Wed, 15 Apr 2026 13:32: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=mte1 header.d=mandrillapp.com header.i="@mandrillapp.com" header.h="From:Subject:To:Cc:Message-Id:In-Reply-To:References:Feedback-ID:Date:MIME-Version:Content-Type:Content-Transfer-Encoding"; dkim=pass header.s=mte1 header.d=vates.tech header.i="teddy.astie@vates.tech" header.h="From:Subject:To:Cc:Message-Id:In-Reply-To:References:Feedback-ID:Date:MIME-Version:Content-Type:Content-Transfer-Encoding"
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=mandrillapp.com;
	s=mte1; t=1776259936; x=1776529936;
	bh=V1xNEuLkT/UoGYapzOaT2ccLIg+S5oeSeb8h+8Yriq0=;
	h=From:Subject:To:Cc:Message-Id:In-Reply-To:References:Feedback-ID:
	 Date:MIME-Version:Content-Type:Content-Transfer-Encoding:CC:Date:
	 Subject:From;
	b=WXZh8Dzd8Jh/HUh0lgwEq2jolZ+EXZZ7ZvGjDjnMle6r3u7Zrw44uVMOCQml9LTay
	 j3+E734Z/i7cr7aEbZu8QrOq75ZZ8u27s9OPQi3lttmksmCcKgdh/C0zwEOAF3R/x8
	 EcFhVuDLe7KZS4l+suQkXOJH6FQ5BeY4cjehcHjwQECprEnySKOKoxby4G0hKGFiCI
	 acGELDQbHM4RFVy1tnccCtM6YIUJXzdrqdJMLZ5TsSck9YqL49VyeJamgPAFEvYpMt
	 WP0dIuE7bT0d+WSPb+fC4ArvJ6eql1bA0F1y13iZgxDHw2mMUK6wpC92Bh7oXsjcIM
	 LqVKnwMiAY6Mw==
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=vates.tech; s=mte1;
	t=1776259936; x=1776520436; i=teddy.astie@vates.tech;
	bh=V1xNEuLkT/UoGYapzOaT2ccLIg+S5oeSeb8h+8Yriq0=;
	h=From:Subject:To:Cc:Message-Id:In-Reply-To:References:Feedback-ID:
	 Date:MIME-Version:Content-Type:Content-Transfer-Encoding:CC:Date:
	 Subject:From;
	b=QqmXDzKPu0zPeEW63cqKXrsHH/05zS9IyAZVmh4ynlQ6NM3HoYbDH7vKPhF2b2hO6
	 JbAUd+ssbjHpS4jvZ/kGHPnhzeEqmuYLRZV/EjofnYLBwFXgUbQlhaBjTruq5mu4Zz
	 BaX4mk+Uqlg5OmcorAOMDhndUvYIpKeg9HyKrUgDbA5UDr1YKJUandjrSuayg2SILl
	 KQu6g0R7buUUn92ddGU3a/luHF2d+YmAqbd8csK/b5AqoMjMqxA3Eemi1zjKoN/WgE
	 M+JTHsWMg0L4ESL+tSBQ9cUyl73F4HzvrJBoyuc+VQ7XSkAeGjrGcChoQR/RkMM5e3
	 4GlwhHOp9Bbww==
From: "Teddy Astie" <teddy.astie@vates.tech>
Subject: =?utf-8?Q?[RFC=20PATCH=202/7]=20common:=20Track=20latest=20pCPU=20that=20ran=20the=20vCPU?=
X-Mailer: git-send-email 2.52.0
X-Bm-Disclaimer: Yes
X-Bm-Milter-Handled: 4ffbd6c1-ee69-4e1b-aabd-f977039bd3e2
X-Bm-Transport-Timestamp: 1776259935319
To: xen-devel@lists.xenproject.org
Cc: "Teddy Astie" <teddy.astie@vates.tech>, "Jan Beulich" <jbeulich@suse.com>, "Andrew Cooper" <andrew.cooper3@citrix.com>, "=?utf-8?Q?Roger=20Pau=20Monn=C3=A9?=" <roger.pau@citrix.com>, "Jason Andryuk" <jason.andryuk@amd.com>, "Anthony PERARD" <anthony.perard@vates.tech>, "Michal Orzel" <michal.orzel@amd.com>, "Julien Grall" <julien@xen.org>, "Stefano Stabellini" <sstabellini@kernel.org>
Message-Id: <f127344e083d224d2203b83c701375ca15e6368b.1776259594.git.teddy.astie@vates.tech>
In-Reply-To: <cover.1776259594.git.teddy.astie@vates.tech>
References: <cover.1776259594.git.teddy.astie@vates.tech>
X-Native-Encoded: 1
X-Report-Abuse: =?UTF-8?Q?Please=20forward=20a=20copy=20of=20this=20message,=20including=20all=20headers,=20to=20abuse@mandrill.com.=20You=20can=20also=20report=20abuse=20here:=20https://mandrillapp.com/contact/abuse=3Fid=3D30504962.2f204a884a51440aa20c387e5f905bb7?=
X-Mandrill-User: md_30504962
Feedback-ID: 30504962:30504962.20260415:md
Date: Wed, 15 Apr 2026 13:32:16 +0000
MIME-Version: 1.0
Content-Type: text/plain; charset=utf-8
Content-Transfer-Encoding: 7bit
X-purgate-ID: tlsNG-d62444/1776259938-B5E6BFF4-9814C635/0/0
X-purgate-type: clean
X-purgate-size: 3524

Track on which pCPU each vCPU of a domain ran. This will
be used to know whether a TLB flush is required or not
when the vCPU is migrated on another pCPU.

Signed-off-by: Teddy Astie <teddy.astie@vates.tech>
---
I wonder if there is a way to move 

    curr->domain->latest_vcpu[cpu] = curr->vcpu_id

into a (at least more) common code ?

 xen/arch/x86/hvm/svm/svm.c | 3 +++
 xen/arch/x86/hvm/vmx/vmx.c | 3 +++
 xen/common/domain.c        | 8 ++++++++
 xen/include/xen/sched.h    | 4 ++++
 4 files changed, 18 insertions(+)

diff --git a/xen/arch/x86/hvm/svm/svm.c b/xen/arch/x86/hvm/svm/svm.c
index ced6166847..58e927ae04 100644
--- a/xen/arch/x86/hvm/svm/svm.c
+++ b/xen/arch/x86/hvm/svm/svm.c
@@ -967,6 +967,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;
+    unsigned int cpu = smp_processor_id();
 
     ASSERT(hvmemul_cache_disabled(curr));
 
@@ -977,6 +978,8 @@ void asmlinkage svm_vmenter_helper(void)
 
     svm_sync_vmcb(curr, vmcb_needs_vmsave);
 
+    curr->domain->latest_vcpu[cpu] = curr->vcpu_id;
+
     vmcb->rax = regs->rax;
     vmcb->rip = regs->rip;
     vmcb->rsp = regs->rsp;
diff --git a/xen/arch/x86/hvm/vmx/vmx.c b/xen/arch/x86/hvm/vmx/vmx.c
index 269ca56433..ec0a790336 100644
--- a/xen/arch/x86/hvm/vmx/vmx.c
+++ b/xen/arch/x86/hvm/vmx/vmx.c
@@ -4934,6 +4934,7 @@ bool asmlinkage vmx_vmenter_helper(const struct cpu_user_regs *regs)
     u32 new_asid, old_asid;
     struct hvm_vcpu_asid *p_asid;
     bool need_flush;
+    unsigned int cpu = smp_processor_id();
 
     ASSERT(hvmemul_cache_disabled(curr));
 
@@ -4977,6 +4978,8 @@ bool asmlinkage vmx_vmenter_helper(const struct cpu_user_regs *regs)
     if ( unlikely(need_flush) )
         vpid_sync_all();
 
+    currd->latest_vcpu[cpu] = curr->vcpu_id;
+
     if ( paging_mode_hap(curr->domain) )
     {
         struct ept_data *ept = &p2m_get_hostp2m(currd)->ept;
diff --git a/xen/common/domain.c b/xen/common/domain.c
index bb9e210c28..7867166411 100644
--- a/xen/common/domain.c
+++ b/xen/common/domain.c
@@ -758,6 +758,7 @@ static void _domain_destroy(struct domain *d)
     rangeset_domain_destroy(d);
 
     free_cpumask_var(d->dirty_cpumask);
+    xfree(d->latest_vcpu);
 
     xsm_free_security_domain(d);
 
@@ -992,6 +993,13 @@ struct domain *domain_create(domid_t domid,
     if ( !zalloc_cpumask_var(&d->dirty_cpumask) )
         goto fail;
 
+    err = -ENOMEM;
+    d->latest_vcpu = xmalloc_array(int, nr_cpu_ids);
+    if ( !d->latest_vcpu )
+        goto fail;
+    for (unsigned int i = 0; i < nr_cpu_ids; i++)
+        d->latest_vcpu[i] = -1;
+
     rangeset_domain_initialise(d);
 
     if ( is_idle_domain(d) )
diff --git a/xen/include/xen/sched.h b/xen/include/xen/sched.h
index 212c7d765c..4b8ae21b51 100644
--- a/xen/include/xen/sched.h
+++ b/xen/include/xen/sched.h
@@ -567,6 +567,10 @@ struct domain
     /* Bitmask of CPUs which are holding onto this domain's state. */
     cpumask_var_t    dirty_cpumask;
 
+    /* Mapping of the latest vCPU that ran on a specific CPU
+     * (-1 if the vCPU hasn't ran yet) */
+    int *latest_vcpu;
+
     struct arch_domain arch;
 
     void *ssid; /* sHype security subject identifier */
-- 
2.52.0



--
Teddy Astie | Vates XCP-ng Developer

XCP-ng & Xen Orchestra - Vates solutions

web: https://vates.tech



From xen-devel-bounces@lists.xenproject.org Wed Apr 15 13:32:24 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 15 Apr 2026 13:32:24 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1282449.1565039 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wD0Lw-0000XS-S6; Wed, 15 Apr 2026 13:32:24 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1282449.1565039; Wed, 15 Apr 2026 13:32: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 1wD0Lw-0000XL-PS; Wed, 15 Apr 2026 13:32:24 +0000
Received: by outflank-mailman (input) for mailman id 1282449;
 Wed, 15 Apr 2026 13:32:22 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <bounce-md_30504962.69df9364.v1-549f1328209a4bf6a574e4c88ba3cd82@bounce.vates.tech>)
 id 1wD0Lu-0000Vi-R3
 for xen-devel@lists.xenproject.org; Wed, 15 Apr 2026 13:32:22 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wD0Lu-002WU8-7f
 for xen-devel@lists.xenproject.org; Wed, 15 Apr 2026 15:32:22 +0200
Received: from [10.42.69.6] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1) (envelope-from
 <bounce-md_30504962.69df9364.v1-549f1328209a4bf6a574e4c88ba3cd82@bounce.vates.tech>)
 id 69df935d-bab6-0a2a0a5309dd-0a2a45068222-44
 for <xen-devel@lists.xenproject.org>; Wed, 15 Apr 2026 15:32:22 +0200
Received: from [198.2.186.1] (helo=mail186-1.suw21.mandrillapp.com)
 by tlsNG-16d1c6.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.0)
 (envelope-from
 <bounce-md_30504962.69df9364.v1-549f1328209a4bf6a574e4c88ba3cd82@bounce.vates.tech>)
 id 69df9365-0df0-0a2a45060019-c602ba012713-3
 for <xen-devel@lists.xenproject.org>; Wed, 15 Apr 2026 15:32:21 +0200
Received: from pmta10.mandrill.prod.suw01.rsglab.com (localhost [127.0.0.1])
 by mail186-1.suw21.mandrillapp.com (Mailchimp) with ESMTP id 4fwhs05lXXzBsV0jL
 for <xen-devel@lists.xenproject.org>; Wed, 15 Apr 2026 13:32:20 +0000 (GMT)
Received: from [37.26.189.201] by mandrillapp.com id
 549f1328209a4bf6a574e4c88ba3cd82; Wed, 15 Apr 2026 13:32: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=mte1 header.d=mandrillapp.com header.i="@mandrillapp.com" header.h="From:Subject:To:Cc:Message-Id:In-Reply-To:References:Feedback-ID:Date:MIME-Version:Content-Type:Content-Transfer-Encoding"; dkim=pass header.s=mte1 header.d=vates.tech header.i="teddy.astie@vates.tech" header.h="From:Subject:To:Cc:Message-Id:In-Reply-To:References:Feedback-ID:Date:MIME-Version:Content-Type:Content-Transfer-Encoding"
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=mandrillapp.com;
	s=mte1; t=1776259940; x=1776529940;
	bh=6GgW9zqjU7eafFgo+aMF5dqgD8VnWAi/yFVJIMHbHCg=;
	h=From:Subject:To:Cc:Message-Id:In-Reply-To:References:Feedback-ID:
	 Date:MIME-Version:Content-Type:Content-Transfer-Encoding:CC:Date:
	 Subject:From;
	b=M/DcqyVjR/cY6vyn1nwNEyOdFK41VqfPRkEf8M2hmsDIRAFT8OsZ/mMoK9FpeSdCu
	 M4XM5s9vYiVDx7WOixvesMgEEsvJ3iEWNPEn8LAFoUvH2eXy28TGFtJyDiRmxjmaJI
	 SiuAe+e61IuADQEmQc7TtAUGSyoWO+z2PWz9EnR4XLHjdFDSx0He8zcdVD/pBV7o7u
	 8+VgCnCQ02WSqJn81P0c7+zRQPJHTKn89PACppphLIRwwDjroL3TQAK/icmlLEDrLU
	 Fnf1ZH+nWfbnPhD57jfaC4XnPr4ndRFz/NHFxKgtH1tuMFJFsWyNL/69Mnh7wLBxJb
	 bgxaTo/QXk82w==
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=vates.tech; s=mte1;
	t=1776259940; x=1776520440; i=teddy.astie@vates.tech;
	bh=6GgW9zqjU7eafFgo+aMF5dqgD8VnWAi/yFVJIMHbHCg=;
	h=From:Subject:To:Cc:Message-Id:In-Reply-To:References:Feedback-ID:
	 Date:MIME-Version:Content-Type:Content-Transfer-Encoding:CC:Date:
	 Subject:From;
	b=jithJSCaP3cYKzWK9+hoC7D6Nl4asINeWNx5+ssXORJ6d6cfKP2b9rHme4Nl1PnnW
	 zRsj6HYHAFchkQNHVhBL22Tj+TvmyC/+2/dpX2GEf9anFD1N6HqtMmrxAsTsCpSKFG
	 S5Oedq0nfY7ebLatQHsX2xq/HN0jr2qskwpSJp2Roc60xhwCF/KZJxta2skzvJU6TN
	 YUgrgDzLBKUpcT9GBtQodtK4jG8C1EtfU0LoolYWoIrj6rQAaMSpWhQFPO2J7HogEh
	 4FIcUXORTsJLaUF5Lucy6JUMInZAe+bb/1rZ00JOBqX4zl9koGel8mEonC6I05kDVI
	 DpWuXF/w4DvLw==
From: "Teddy Astie" <teddy.astie@vates.tech>
Subject: =?utf-8?Q?[RFC=20PATCH=204/7]=20x86:=20Set=20v->needs=5Ftlb=5Fflush=20when=20needed?=
X-Mailer: git-send-email 2.52.0
X-Bm-Disclaimer: Yes
X-Bm-Milter-Handled: 4ffbd6c1-ee69-4e1b-aabd-f977039bd3e2
X-Bm-Transport-Timestamp: 1776259938505
To: xen-devel@lists.xenproject.org
Cc: "Teddy Astie" <teddy.astie@vates.tech>, "Jan Beulich" <jbeulich@suse.com>, "Andrew Cooper" <andrew.cooper3@citrix.com>, "=?utf-8?Q?Roger=20Pau=20Monn=C3=A9?=" <roger.pau@citrix.com>, "Jason Andryuk" <jason.andryuk@amd.com>, "Tim Deegan" <tim@xen.org>
Message-Id: <3415abe736e46b3f36ccb045aa5144a371774fba.1776259594.git.teddy.astie@vates.tech>
In-Reply-To: <cover.1776259594.git.teddy.astie@vates.tech>
References: <cover.1776259594.git.teddy.astie@vates.tech>
X-Native-Encoded: 1
X-Report-Abuse: =?UTF-8?Q?Please=20forward=20a=20copy=20of=20this=20message,=20including=20all=20headers,=20to=20abuse@mandrill.com.=20You=20can=20also=20report=20abuse=20here:=20https://mandrillapp.com/contact/abuse=3Fid=3D30504962.549f1328209a4bf6a574e4c88ba3cd82?=
X-Mandrill-User: md_30504962
Feedback-ID: 30504962:30504962.20260415:md
Date: Wed, 15 Apr 2026 13:32:20 +0000
MIME-Version: 1.0
Content-Type: text/plain; charset=utf-8
Content-Transfer-Encoding: 7bit
X-purgate-ID: tlsNG-16d1c6/1776259942-5FB3B3D8-53BADBDA/0/0
X-purgate-type: clean
X-purgate-size: 7788

Sets v->needs_tlb_flush in where a tlb flush is expected
to be scheduled on the vCPU.

Signed-off-by: Teddy Astie <teddy.astie@vates.tech>
---
The goal here is to avoid too much noise in [1], hence it currently
cohexists with hvm_asid_flush_vcpu(), but [1] will drop
hvm_asid_flush_vcpu() and only keep needs_tlb_flush.

[1] x86/hvm: Transition to needs_tlb_flush logic, use  per-domain ASID

 xen/arch/x86/flushtlb.c        | 4 ++++
 xen/arch/x86/hvm/emulate.c     | 1 +
 xen/arch/x86/hvm/hvm.c         | 1 +
 xen/arch/x86/hvm/svm/svm.c     | 5 +++++
 xen/arch/x86/hvm/vmx/vmcs.c    | 1 +
 xen/arch/x86/hvm/vmx/vmx.c     | 3 +++
 xen/arch/x86/hvm/vmx/vvmx.c    | 1 +
 xen/arch/x86/mm/p2m.c          | 4 ++++
 xen/arch/x86/mm/paging.c       | 1 +
 xen/arch/x86/mm/shadow/multi.c | 1 +
 10 files changed, 22 insertions(+)

diff --git a/xen/arch/x86/flushtlb.c b/xen/arch/x86/flushtlb.c
index 23721bb52c..8ee2385bba 100644
--- a/xen/arch/x86/flushtlb.c
+++ b/xen/arch/x86/flushtlb.c
@@ -324,7 +324,11 @@ unsigned int guest_flush_tlb_flags(const struct domain *d)
 void guest_flush_tlb_mask(const struct domain *d, const cpumask_t *mask)
 {
     unsigned int flags = guest_flush_tlb_flags(d);
+    struct vcpu *v;
 
     if ( flags )
         flush_mask(mask, flags);
+
+    for_each_vcpu(d, v)
+        v->needs_tlb_flush = true;
 }
diff --git a/xen/arch/x86/hvm/emulate.c b/xen/arch/x86/hvm/emulate.c
index f3aae158e9..3bc1d321cc 100644
--- a/xen/arch/x86/hvm/emulate.c
+++ b/xen/arch/x86/hvm/emulate.c
@@ -2657,6 +2657,7 @@ static int cf_check hvmemul_tlb_op(
         if ( x86emul_invpcid_type(aux) != X86_INVPCID_INDIV_ADDR )
         {
             hvm_asid_flush_vcpu(current);
+            current->needs_tlb_flush = true;
             break;
         }
         aux = x86emul_invpcid_pcid(aux);
diff --git a/xen/arch/x86/hvm/hvm.c b/xen/arch/x86/hvm/hvm.c
index 4a81afce02..0f0b0e242f 100644
--- a/xen/arch/x86/hvm/hvm.c
+++ b/xen/arch/x86/hvm/hvm.c
@@ -1613,6 +1613,7 @@ int hvm_vcpu_initialise(struct vcpu *v)
     struct domain *d = v->domain;
 
     hvm_asid_flush_vcpu(v);
+    v->needs_tlb_flush = true;
 
     spin_lock_init(&v->arch.hvm.tm_lock);
     INIT_LIST_HEAD(&v->arch.hvm.tm_list);
diff --git a/xen/arch/x86/hvm/svm/svm.c b/xen/arch/x86/hvm/svm/svm.c
index 58e927ae04..64c08432fd 100644
--- a/xen/arch/x86/hvm/svm/svm.c
+++ b/xen/arch/x86/hvm/svm/svm.c
@@ -138,6 +138,8 @@ static void cf_check svm_update_guest_cr(
         {
             if ( !(flags & HVM_UPDATE_GUEST_CR3_NOFLUSH) )
                 hvm_asid_flush_vcpu(v);
+                
+            v->needs_tlb_flush = true;
         }
         else if ( nestedhvm_vmswitch_in_progress(v) )
             ; /* CR3 switches during VMRUN/VMEXIT do not flush the TLB. */
@@ -944,6 +946,7 @@ static void noreturn cf_check svm_do_resume(void)
         hvm_migrate_pirqs(v);
         /* Migrating to another ASID domain.  Request a new ASID. */
         hvm_asid_flush_vcpu(v);
+        v->needs_tlb_flush = true;
     }
 
     if ( !vcpu_guestmode && !vlapic_hw_disabled(vlapic) )
@@ -2306,6 +2309,8 @@ static void cf_check svm_invlpg(struct vcpu *v, unsigned long linear)
 {
     /* Safe fallback. Take a new ASID. */
     hvm_asid_flush_vcpu(v);
+    /* Schedule a tlb flush on the VCPU. */
+    v->needs_tlb_flush = true;
 }
 
 static bool cf_check svm_get_pending_event(
diff --git a/xen/arch/x86/hvm/vmx/vmcs.c b/xen/arch/x86/hvm/vmx/vmcs.c
index 8e52ef4d49..4efe13e07f 100644
--- a/xen/arch/x86/hvm/vmx/vmcs.c
+++ b/xen/arch/x86/hvm/vmx/vmcs.c
@@ -1904,6 +1904,7 @@ void cf_check vmx_do_resume(void)
         v->arch.hvm.vmx.hostenv_migrated = 1;
 
         hvm_asid_flush_vcpu(v);
+        v->needs_tlb_flush = true;
     }
 
     debug_state = v->domain->debugger_attached
diff --git a/xen/arch/x86/hvm/vmx/vmx.c b/xen/arch/x86/hvm/vmx/vmx.c
index ec0a790336..0e4f9f9c3d 100644
--- a/xen/arch/x86/hvm/vmx/vmx.c
+++ b/xen/arch/x86/hvm/vmx/vmx.c
@@ -1511,6 +1511,7 @@ static void cf_check vmx_handle_cd(struct vcpu *v, unsigned long value)
 
             wbinvd();               /* flush possibly polluted cache */
             hvm_asid_flush_vcpu(v); /* invalidate memory type cached in TLB */
+            v->needs_tlb_flush = true; /* invalidate memory type cached in TLB */
             v->arch.hvm.vmx.cache_mode = CACHE_MODE_NO_FILL;
         }
         else
@@ -1520,6 +1521,7 @@ static void cf_check vmx_handle_cd(struct vcpu *v, unsigned long value)
             if ( !is_iommu_enabled(v->domain) || iommu_snoop )
                 vmx_clear_msr_intercept(v, MSR_IA32_CR_PAT, VMX_MSR_RW);
             hvm_asid_flush_vcpu(v); /* no need to flush cache */
+            v->needs_tlb_flush = true;
         }
     }
 }
@@ -1872,6 +1874,7 @@ static void cf_check vmx_update_guest_cr(
 
         if ( !(flags & HVM_UPDATE_GUEST_CR3_NOFLUSH) )
             hvm_asid_flush_vcpu(v);
+        v->needs_tlb_flush = true;
         break;
 
     default:
diff --git a/xen/arch/x86/hvm/vmx/vvmx.c b/xen/arch/x86/hvm/vmx/vvmx.c
index e4cdfe55c1..16d6f1d61b 100644
--- a/xen/arch/x86/hvm/vmx/vvmx.c
+++ b/xen/arch/x86/hvm/vmx/vvmx.c
@@ -1254,6 +1254,7 @@ static void virtual_vmentry(struct cpu_user_regs *regs)
         if ( nvmx->guest_vpid != new_vpid )
         {
             hvm_asid_flush_vcpu_asid(&vcpu_nestedhvm(v).nv_n2asid);
+            v->needs_tlb_flush = true;
             nvmx->guest_vpid = new_vpid;
         }
     }
diff --git a/xen/arch/x86/mm/p2m.c b/xen/arch/x86/mm/p2m.c
index fddecdf978..910623ac93 100644
--- a/xen/arch/x86/mm/p2m.c
+++ b/xen/arch/x86/mm/p2m.c
@@ -25,6 +25,7 @@
 #include <asm/p2m.h>
 #include <asm/mem_sharing.h>
 #include <asm/hvm/nestedhvm.h>
+#include <asm/hvm/vcpu.h>
 #include <asm/altp2m.h>
 #include <asm/vm_event.h>
 #include <xsm/xsm.h>
@@ -1439,6 +1440,7 @@ p2m_flush(struct vcpu *v, struct p2m_domain *p2m)
     vcpu_nestedhvm(v).nv_p2m = NULL;
     p2m_flush_table(p2m);
     hvm_asid_flush_vcpu(v);
+    v->needs_tlb_flush = true;
 }
 
 void
@@ -1498,6 +1500,7 @@ static void assign_np2m(struct vcpu *v, struct p2m_domain *p2m)
 static void nvcpu_flush(struct vcpu *v)
 {
     hvm_asid_flush_vcpu(v);
+    v->needs_tlb_flush = true;
     vcpu_nestedhvm(v).stale_np2m = true;
 }
 
@@ -1618,6 +1621,7 @@ void np2m_schedule(int dir)
             {
                 /* This vCPU's np2m was flushed while it was not runnable */
                 hvm_asid_flush_core();
+                curr->needs_tlb_flush = true;
                 vcpu_nestedhvm(curr).nv_p2m = NULL;
             }
             else
diff --git a/xen/arch/x86/mm/paging.c b/xen/arch/x86/mm/paging.c
index 2396f81ad5..b0b3bef753 100644
--- a/xen/arch/x86/mm/paging.c
+++ b/xen/arch/x86/mm/paging.c
@@ -939,6 +939,7 @@ void paging_update_nestedmode(struct vcpu *v)
         /* TODO: shadow-on-shadow */
         v->arch.paging.nestedmode = NULL;
     hvm_asid_flush_vcpu(v);
+    v->needs_tlb_flush = true;
 }
 
 int __init paging_set_allocation(struct domain *d, unsigned int pages,
diff --git a/xen/arch/x86/mm/shadow/multi.c b/xen/arch/x86/mm/shadow/multi.c
index 80cd3299fa..2df2842138 100644
--- a/xen/arch/x86/mm/shadow/multi.c
+++ b/xen/arch/x86/mm/shadow/multi.c
@@ -3165,6 +3165,7 @@ sh_update_linear_entries(struct vcpu *v)
      * without this change, it would fetch the wrong value due to a stale TLB.
      */
     sh_flush_local(d);
+    v->needs_tlb_flush = true;
 }
 
 static pagetable_t cf_check sh_update_cr3(struct vcpu *v, bool noflush)
-- 
2.52.0



--
Teddy Astie | Vates XCP-ng Developer

XCP-ng & Xen Orchestra - Vates solutions

web: https://vates.tech



From xen-devel-bounces@lists.xenproject.org Wed Apr 15 13:32:32 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 15 Apr 2026 13:32:32 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1282455.1565048 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wD0M4-0000sY-7m; Wed, 15 Apr 2026 13:32:32 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1282455.1565048; Wed, 15 Apr 2026 13:32: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 1wD0M4-0000sN-4B; Wed, 15 Apr 2026 13:32:32 +0000
Received: by outflank-mailman (input) for mailman id 1282455;
 Wed, 15 Apr 2026 13:32:30 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <bounce-md_30504962.69df936b.v1-23fe8188e6a9447487e3112d66dc3e1a@bounce.vates.tech>)
 id 1wD0M2-0000q7-1H
 for xen-devel@lists.xenproject.org; Wed, 15 Apr 2026 13:32:30 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wD0M1-006OmM-DH
 for xen-devel@lists.xenproject.org; Wed, 15 Apr 2026 15:32:29 +0200
Received: from [10.42.69.8] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1) (envelope-from
 <bounce-md_30504962.69df936b.v1-23fe8188e6a9447487e3112d66dc3e1a@bounce.vates.tech>)
 id 69df936d-e002-0a2a0a5209dd-0a2a4508b786-2
 for <xen-devel@lists.xenproject.org>; Wed, 15 Apr 2026 15:32:29 +0200
Received: from [198.2.186.1] (helo=mail186-1.suw21.mandrillapp.com)
 by tlsNG-c1860d.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.0)
 (envelope-from
 <bounce-md_30504962.69df936b.v1-23fe8188e6a9447487e3112d66dc3e1a@bounce.vates.tech>)
 id 69df936c-fab6-0a2a45080019-c602ba01ada0-3
 for <xen-devel@lists.xenproject.org>; Wed, 15 Apr 2026 15:32:29 +0200
Received: from pmta10.mandrill.prod.suw01.rsglab.com (localhost [127.0.0.1])
 by mail186-1.suw21.mandrillapp.com (Mailchimp) with ESMTP id 4fwhs766YJzBsX13v
 for <xen-devel@lists.xenproject.org>; Wed, 15 Apr 2026 13:32:27 +0000 (GMT)
Received: from [37.26.189.201] by mandrillapp.com id
 23fe8188e6a9447487e3112d66dc3e1a; Wed, 15 Apr 2026 13:32: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=mte1 header.d=mandrillapp.com header.i="@mandrillapp.com" header.h="From:Subject:To:Cc:Message-Id:In-Reply-To:References:Feedback-ID:Date:MIME-Version:Content-Type:Content-Transfer-Encoding"; dkim=pass header.s=mte1 header.d=vates.tech header.i="teddy.astie@vates.tech" header.h="From:Subject:To:Cc:Message-Id:In-Reply-To:References:Feedback-ID:Date:MIME-Version:Content-Type:Content-Transfer-Encoding"
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=mandrillapp.com;
	s=mte1; t=1776259947; x=1776529947;
	bh=V9h2LeDrWd+hcIIUXMFjjufE73oFJ5PXheM8EpWf9EU=;
	h=From:Subject:To:Cc:Message-Id:In-Reply-To:References:Feedback-ID:
	 Date:MIME-Version:Content-Type:Content-Transfer-Encoding:CC:Date:
	 Subject:From;
	b=BLUWRz5ltob2x4MQ72Sidnl1M4Rj7Xo26zp6CfZ/eOx9U9szMwmGG6Cr+e7In9Z/U
	 2aegQxcEOm2bnlD+4B2q4huWHpX+5kFzpueYW+hlrVagZyHEVk/sqeD2wjFJzOlVqL
	 ANf7VvijRwtX5LJswWwPRtb0AjnHjEf9VhhgjGqGbzaSwbH5+OgrQYRdlS+4rVfyFX
	 jYcfrA09RfC8pf1/IKZQDFVl/VnutiiFNLP+qxVqAybH55yHP5rez2YdRTzH1QQ9M9
	 x6k3/pw9p4k29YV+3nZuuC84F3NC13/9ilODIGJZYTzsGcHu+lFrXF5Zb2kZfidqYI
	 WJm8azYKbdilQ==
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=vates.tech; s=mte1;
	t=1776259947; x=1776520447; i=teddy.astie@vates.tech;
	bh=V9h2LeDrWd+hcIIUXMFjjufE73oFJ5PXheM8EpWf9EU=;
	h=From:Subject:To:Cc:Message-Id:In-Reply-To:References:Feedback-ID:
	 Date:MIME-Version:Content-Type:Content-Transfer-Encoding:CC:Date:
	 Subject:From;
	b=WwAN6xK8C6OYy2JJXwfERhI1QDvdeUeYmm4R4jTvlKcEPXC9vjywJaOz10d+arYAw
	 KnCa/eA9SXQopN62WYN9ZlN8aI4nbFGUfoejCpMfznKIrfFvhZTWQUfz0m3lksaqSY
	 rBlNjmpqpPDgUw72eEuOlbCOfEvD/TRt/qyxSftwZPfP98LFmphJMeLWf03jWGfRlL
	 E21GraGfuDGd7tjweHj53QOq25/C+M0B8v1rf76nhAbcE9nisIUHWWcPq8nQ27gFTu
	 m3FYYXZJFBWGGSIZKrTKCHJaue1vDELCnaXx9OjXnJHDdaQpuB+6i/GGVfL345yAQ9
	 HoMBybpFl9MPw==
From: "Teddy Astie" <teddy.astie@vates.tech>
Subject: =?utf-8?Q?[RFC=20PATCH=206/7]=20x86/hvm:=20Transition=20to=20needs=5Ftlb=5Fflush=20logic,=20use=20per-domain=20ASID?=
X-Mailer: git-send-email 2.52.0
X-Bm-Disclaimer: Yes
X-Bm-Milter-Handled: 4ffbd6c1-ee69-4e1b-aabd-f977039bd3e2
X-Bm-Transport-Timestamp: 1776259945929
To: xen-devel@lists.xenproject.org
Cc: "Teddy Astie" <teddy.astie@vates.tech>, "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.pau@citrix.com>, "Stefano Stabellini" <sstabellini@kernel.org>, "Jason Andryuk" <jason.andryuk@amd.com>, "Tim Deegan" <tim@xen.org>
Message-Id: <2775da1be0c767a2dc7fcdf5caaf43278da2ab74.1776259594.git.teddy.astie@vates.tech>
In-Reply-To: <cover.1776259594.git.teddy.astie@vates.tech>
References: <cover.1776259594.git.teddy.astie@vates.tech>
X-Native-Encoded: 1
X-Report-Abuse: =?UTF-8?Q?Please=20forward=20a=20copy=20of=20this=20message,=20including=20all=20headers,=20to=20abuse@mandrill.com.=20You=20can=20also=20report=20abuse=20here:=20https://mandrillapp.com/contact/abuse=3Fid=3D30504962.23fe8188e6a9447487e3112d66dc3e1a?=
X-Mandrill-User: md_30504962
Feedback-ID: 30504962:30504962.20260415:md
Date: Wed, 15 Apr 2026 13:32:27 +0000
MIME-Version: 1.0
Content-Type: text/plain; charset=utf-8
Content-Transfer-Encoding: 7bit
X-purgate-ID: tlsNG-c1860d/1776259949-77348497-BD68DE05/0/0
X-purgate-type: clean
X-purgate-size: 42911

Change the ASID model where all vCPU of a domain share the same ASID
as required by AMD SEV and broadcast TLB flushing features (AMD INVLPGB).

ASID 1 is reserved as a placeholder for "no domain ASID", and used when
either ASID are not supported or no more ASID is available for use.
In this case, we always flush the TLB when from and to such domain's
vCPU.

Moreover, centralize the TLB flushing logic to use needs_tlb_flush, if
a full TLB flush needs to be performed for the vCPU, either through
SVM tlb_control or VMX invvpid before entering the guest.

As a result, drop ASID tickling logic, which is now redundant with the
needs_tlb_flush mechanism introduced previously. Also take the opportunity
to drop some now unused helpers now that FLUSH_HVM_ASID_CORE is dropped.

Signed-off-by: Teddy Astie <teddy.astie@vates.tech>
---
Nested virt makes some aspects tricky and is hard to reason about,
especially since there are 2 ASID in such case and complex TLB flushing
logic.

 docs/misc/xen-command-line.pandoc      |   2 +-
 xen/arch/x86/flushtlb.c                |  18 +--
 xen/arch/x86/hvm/asid.c                | 169 +++++++++++--------------
 xen/arch/x86/hvm/emulate.c             |   1 -
 xen/arch/x86/hvm/hvm.c                 |  24 +++-
 xen/arch/x86/hvm/nestedhvm.c           |   7 +-
 xen/arch/x86/hvm/svm/asid.c            |  67 +++++++---
 xen/arch/x86/hvm/svm/nestedsvm.c       |   2 +-
 xen/arch/x86/hvm/svm/svm.c             |  31 +++--
 xen/arch/x86/hvm/svm/svm.h             |   4 -
 xen/arch/x86/hvm/vmx/vmcs.c            |   5 +-
 xen/arch/x86/hvm/vmx/vmx.c             |  64 +++++-----
 xen/arch/x86/hvm/vmx/vvmx.c            |   3 +-
 xen/arch/x86/include/asm/flushtlb.h    |   7 -
 xen/arch/x86/include/asm/hvm/asid.h    |  26 ++--
 xen/arch/x86/include/asm/hvm/domain.h  |   1 +
 xen/arch/x86/include/asm/hvm/hvm.h     |  15 +--
 xen/arch/x86/include/asm/hvm/svm.h     |   5 +
 xen/arch/x86/include/asm/hvm/vcpu.h    |  10 +-
 xen/arch/x86/include/asm/hvm/vmx/vmx.h |   4 +-
 xen/arch/x86/mm/hap/hap.c              |   9 +-
 xen/arch/x86/mm/p2m.c                  |   3 -
 xen/arch/x86/mm/paging.c               |   1 -
 xen/arch/x86/mm/shadow/multi.c         |  11 +-
 24 files changed, 228 insertions(+), 261 deletions(-)

diff --git a/docs/misc/xen-command-line.pandoc b/docs/misc/xen-command-line.pandoc
index 6c77129732..099b718df9 100644
--- a/docs/misc/xen-command-line.pandoc
+++ b/docs/misc/xen-command-line.pandoc
@@ -208,7 +208,7 @@ to appropriate auditing by Xen.  Argo is disabled by default.
 > Default: `true`
 
 Permit Xen to use Address Space Identifiers.  This is an optimisation which
-tags the TLB entries with an ID per vcpu.  This allows for guest TLB flushes
+tags the TLB entries with an ID per domain.  This allows for guest TLB flushes
 to be performed without the overhead of a complete TLB flush.
 
 ### async-show-all (x86)
diff --git a/xen/arch/x86/flushtlb.c b/xen/arch/x86/flushtlb.c
index 8ee2385bba..f60d2df8fd 100644
--- a/xen/arch/x86/flushtlb.c
+++ b/xen/arch/x86/flushtlb.c
@@ -13,6 +13,7 @@
 #include <xen/softirq.h>
 #include <asm/cache.h>
 #include <asm/flushtlb.h>
+#include <asm/hvm/hvm.h>
 #include <asm/invpcid.h>
 #include <asm/nops.h>
 #include <asm/page.h>
@@ -117,7 +118,6 @@ void switch_cr3_cr4(unsigned long cr3, unsigned long cr4)
 
     if ( tlb_clk_enabled )
         t = pre_flush();
-    hvm_flush_guest_tlbs();
 
     old_cr4 = read_cr4();
     ASSERT(!(old_cr4 & X86_CR4_PCIDE) || !(old_cr4 & X86_CR4_PGE));
@@ -221,9 +221,6 @@ unsigned int flush_area_local(const void *va, unsigned int flags)
             do_tlb_flush();
     }
 
-    if ( flags & FLUSH_HVM_ASID_CORE )
-        hvm_flush_guest_tlbs();
-
     if ( flags & (FLUSH_CACHE_EVICT | FLUSH_CACHE_WRITEBACK) )
     {
         const struct cpuinfo_x86 *c = &current_cpu_data;
@@ -313,21 +310,12 @@ void cache_writeback(const void *addr, unsigned int size)
     asm volatile ("sfence" ::: "memory");
 }
 
-unsigned int guest_flush_tlb_flags(const struct domain *d)
-{
-    bool shadow = paging_mode_shadow(d);
-    bool asid = is_hvm_domain(d) && (cpu_has_svm || shadow);
-
-    return (shadow ? FLUSH_TLB : 0) | (asid ? FLUSH_HVM_ASID_CORE : 0);
-}
-
 void guest_flush_tlb_mask(const struct domain *d, const cpumask_t *mask)
 {
-    unsigned int flags = guest_flush_tlb_flags(d);
     struct vcpu *v;
 
-    if ( flags )
-        flush_mask(mask, flags);
+    if ( paging_mode_shadow(d) )
+        flush_tlb_mask(mask);
 
     for_each_vcpu(d, v)
         v->needs_tlb_flush = true;
diff --git a/xen/arch/x86/hvm/asid.c b/xen/arch/x86/hvm/asid.c
index 935cae3901..1a21125161 100644
--- a/xen/arch/x86/hvm/asid.c
+++ b/xen/arch/x86/hvm/asid.c
@@ -5,138 +5,115 @@
  * Copyright (c) 2009, Citrix Systems, Inc.
  */
 
+#include <xen/errno.h>
 #include <xen/init.h>
 #include <xen/lib.h>
 #include <xen/param.h>
-#include <xen/sched.h>
-#include <xen/smp.h>
-#include <xen/percpu.h>
+#include <xen/spinlock.h>
+#include <xen/xvmalloc.h>
+
+#include <asm/bitops.h>
 #include <asm/hvm/asid.h>
 
 /* Xen command-line option to enable ASIDs */
 static bool __read_mostly opt_asid_enabled = true;
 boolean_param("asid", opt_asid_enabled);
 
+bool __read_mostly asid_enabled = false;
+static unsigned long __ro_after_init *asid_bitmap;
+static unsigned long __ro_after_init asid_count;
+static DEFINE_SPINLOCK(asid_lock);
+
 /*
- * ASIDs partition the physical TLB.  In the current implementation ASIDs are
- * introduced to reduce the number of TLB flushes.  Each time the guest's
- * virtual address space changes (e.g. due to an INVLPG, MOV-TO-{CR3, CR4}
- * operation), instead of flushing the TLB, a new ASID is assigned.  This
- * reduces the number of TLB flushes to at most 1/#ASIDs.  The biggest
- * advantage is that hot parts of the hypervisor's code and data retain in
- * the TLB.
- *
  * Sketch of the Implementation:
+ * ASIDs are assigned uniquely per domain and doesn't change during the lifecycle of the
+ * domain. Once vcpus are initialized and are up, we assign the same ASID to all vcpus
+ * of that domain at the first VMRUN. In order to process a TLB flush on a vcpu, we set
+ * needs_tlb_flush to schedule a TLB flush for the next VMRUN (e.g using tlb control 
+ * field of VMCB).
  *
- * ASIDs are a CPU-local resource.  As preemption of ASIDs is not possible,
- * ASIDs are assigned in a round-robin scheme.  To minimize the overhead of
- * ASID invalidation, at the time of a TLB flush,  ASIDs are tagged with a
- * 64-bit generation.  Only on a generation overflow the code needs to
- * invalidate all ASID information stored at the VCPUs with are run on the
- * specific physical processor.  This overflow appears after about 2^80
- * host processor cycles, so we do not optimize this case, but simply disable
- * ASID useage to retain correctness.
+ * We reserve ASID=1 as being the ASID used when none other is available (or with asid
+ * use disabled). Multiples domains may use this ASID, thus we need to systematically
+ * flush the TLB for this one when switching between vCPUs with ASID=1.
  */
 
-/* Per-CPU ASID management. */
-struct hvm_asid_data {
-   uint64_t core_asid_generation;
-   uint32_t next_asid;
-   uint32_t max_asid;
-   bool disabled;
-};
-
-static DEFINE_PER_CPU(struct hvm_asid_data, hvm_asid_data);
-
-void hvm_asid_init(unsigned int nasids)
+int __init hvm_asid_init(unsigned long nasids)
 {
-    static int8_t __ro_after_init g_disabled = -1;
-    struct hvm_asid_data *data = &this_cpu(hvm_asid_data);
+    ASSERT(nasids);
 
-    data->max_asid = nasids - 1;
-    data->disabled = !opt_asid_enabled || (nasids <= 1);
+    asid_count = nasids;
+    asid_enabled = opt_asid_enabled && (nasids > 1);
 
-    if ( g_disabled < 0 )
-    {
-        g_disabled = data->disabled;
-        printk("HVM: ASIDs %sabled\n", data->disabled ? "dis" : "en");
-    }
-    else if ( g_disabled != data->disabled )
-        printk("HVM: CPU%u: ASIDs %sabled\n", smp_processor_id(),
-               data->disabled ? "dis" : "en");
+    asid_bitmap = xvzalloc_array(unsigned long, BITS_TO_LONGS(asid_count + 1));
+    if ( !asid_bitmap )
+        return -ENOMEM;
 
-    /* Zero indicates 'invalid generation', so we start the count at one. */
-    data->core_asid_generation = 1;
+    printk("HVM: ASIDs %sabled (count=%lu)\n", asid_enabled ? "en" : "dis", asid_count);
 
-    /* Zero indicates 'ASIDs disabled', so we start the count at one. */
-    data->next_asid = 1;
-}
+    /* ASID 0 and 1 are reserved, mark it as permanently used */
+    set_bit(0, asid_bitmap);
+    set_bit(1, asid_bitmap);
 
-void hvm_asid_flush_vcpu_asid(struct hvm_vcpu_asid *asid)
-{
-    write_atomic(&asid->generation, 0);
+    return 0;
 }
 
-void hvm_asid_flush_vcpu(struct vcpu *v)
+int hvm_asid_alloc(struct hvm_asid *asid)
 {
-    hvm_asid_flush_vcpu_asid(&v->arch.hvm.n1asid);
-    hvm_asid_flush_vcpu_asid(&vcpu_nestedhvm(v).nv_n2asid);
-}
+    unsigned long new_asid;
 
-void hvm_asid_flush_core(void)
-{
-    struct hvm_asid_data *data = &this_cpu(hvm_asid_data);
+    if ( !asid_enabled )
+    {
+        asid->asid = 1;
+        return 0;
+    }
 
-    if ( data->disabled )
-        return;
+    spin_lock(&asid_lock);
+    new_asid = find_first_zero_bit(asid_bitmap, asid_count);
+    if ( new_asid > asid_count )
+        return -ENOSPC;
 
-    if ( likely(++data->core_asid_generation != 0) )
-        return;
+    set_bit(new_asid, asid_bitmap);
 
-    /*
-     * ASID generations are 64 bit.  Overflow of generations never happens.
-     * For safety, we simply disable ASIDs, so correctness is established; it
-     * only runs a bit slower.
-     */
-    printk("HVM: ASID generation overrun. Disabling ASIDs.\n");
-    data->disabled = 1;
+    asid->asid = new_asid;
+    spin_unlock(&asid_lock);
+    return 0;
 }
 
-bool hvm_asid_handle_vmenter(struct hvm_vcpu_asid *asid)
+int hvm_asid_alloc_range(struct hvm_asid *asid, unsigned long min, unsigned long max)
 {
-    struct hvm_asid_data *data = &this_cpu(hvm_asid_data);
+    unsigned long new_asid;
+    
+    if ( WARN_ON(min >= asid_count) )
+        return -EINVAL;
 
-    /* On erratum #170 systems we must flush the TLB. 
-     * Generation overruns are taken here, too. */
-    if ( data->disabled )
-        goto disabled;
+    if ( !asid_enabled )
+        return -EOPNOTSUPP;
 
-    /* Test if VCPU has valid ASID. */
-    if ( read_atomic(&asid->generation) == data->core_asid_generation )
-        return 0;
+    spin_lock(&asid_lock);
+    new_asid = find_next_zero_bit(asid_bitmap, asid_count, min);
+    if ( new_asid > max || new_asid > asid_count )
+        return -ENOSPC;
 
-    /* If there are no free ASIDs, need to go to a new generation */
-    if ( unlikely(data->next_asid > data->max_asid) )
-    {
-        hvm_asid_flush_core();
-        data->next_asid = 1;
-        if ( data->disabled )
-            goto disabled;
-    }
+    set_bit(new_asid, asid_bitmap);
 
-    /* Now guaranteed to be a free ASID. */
-    asid->asid = data->next_asid++;
-    write_atomic(&asid->generation, data->core_asid_generation);
+    asid->asid = new_asid;
+    spin_unlock(&asid_lock);
+    return 0;
+}
 
-    /*
-     * When we assign ASID 1, flush all TLB entries as we are starting a new
-     * generation, and all old ASID allocations are now stale. 
-     */
-    return (asid->asid == 1);
+void hvm_asid_free(struct hvm_asid *asid)
+{
+    ASSERT( asid->asid );
 
- disabled:
-    asid->asid = 0;
-    return 0;
+    if ( !asid_enabled || asid->asid == 1 )
+        return;
+
+    ASSERT( asid->asid < asid_count );
+
+    spin_lock(&asid_lock);
+    WARN_ON(!test_bit(asid->asid, asid_bitmap));
+    clear_bit(asid->asid, asid_bitmap);
+    spin_unlock(&asid_lock);
 }
 
 /*
diff --git a/xen/arch/x86/hvm/emulate.c b/xen/arch/x86/hvm/emulate.c
index 3bc1d321cc..efdf236df1 100644
--- a/xen/arch/x86/hvm/emulate.c
+++ b/xen/arch/x86/hvm/emulate.c
@@ -2656,7 +2656,6 @@ static int cf_check hvmemul_tlb_op(
     case x86emul_invpcid:
         if ( x86emul_invpcid_type(aux) != X86_INVPCID_INDIV_ADDR )
         {
-            hvm_asid_flush_vcpu(current);
             current->needs_tlb_flush = true;
             break;
         }
diff --git a/xen/arch/x86/hvm/hvm.c b/xen/arch/x86/hvm/hvm.c
index 0f0b0e242f..2ab625d6e0 100644
--- a/xen/arch/x86/hvm/hvm.c
+++ b/xen/arch/x86/hvm/hvm.c
@@ -520,11 +520,13 @@ static bool hvm_get_pending_event(struct vcpu *v, struct x86_event *info)
 
 void hvm_do_resume(struct vcpu *v)
 {
+    struct domain *currd = v->domain;;
+
     check_wakeup_from_wait();
 
     pt_restore_timer(v);
 
-    if ( has_vpci(v->domain) && vpci_process_pending(v) )
+    if ( has_vpci(currd) && vpci_process_pending(v) )
     {
         raise_softirq(SCHEDULE_SOFTIRQ);
         return;
@@ -559,6 +561,13 @@ void hvm_do_resume(struct vcpu *v)
             v->arch.monitor.next_interrupt_enabled = false;
         }
     }
+
+    if ( unlikely(currd->arch.hvm.asid.asid == 1) )
+        /*
+         * As ASID=1 may be shared across multiples domains, we can't easily track the
+         * state of the TLB, we always flush the TLB before resuming this vCPU.
+         */
+        v->needs_tlb_flush = true;
 }
 
 static int cf_check hvm_print_line(
@@ -714,6 +723,10 @@ int hvm_domain_initialise(struct domain *d,
     if ( rc )
         goto fail2;
 
+    rc = hvm_asid_alloc(&d->arch.hvm.asid);
+    if ( rc )
+        goto fail2;
+
     rc = alternative_call(hvm_funcs.domain_initialise, d);
     if ( rc != 0 )
         goto fail2;
@@ -794,7 +807,7 @@ void hvm_domain_destroy(struct domain *d)
         list_del(&ioport->list);
         xfree(ioport);
     }
-
+    hvm_asid_free(&d->arch.hvm.asid);
     destroy_vpci_mmcfg(d);
 }
 
@@ -1612,7 +1625,6 @@ int hvm_vcpu_initialise(struct vcpu *v)
     int rc;
     struct domain *d = v->domain;
 
-    hvm_asid_flush_vcpu(v);
     v->needs_tlb_flush = true;
 
     spin_lock_init(&v->arch.hvm.tm_lock);
@@ -4085,6 +4097,11 @@ static void hvm_s3_resume(struct domain *d)
     }
 }
 
+int hvm_flush_tlb(const unsigned long *vcpu_bitmap)
+{
+    return current->domain->arch.paging.flush_tlb(vcpu_bitmap);
+}
+
 static int hvmop_flush_tlb_all(void)
 {
     if ( !is_hvm_domain(current->domain) )
@@ -5464,4 +5481,3 @@ int hvm_copy_context_and_params(struct domain *dst, struct domain *src)
  * indent-tabs-mode: nil
  * End:
  */
-
diff --git a/xen/arch/x86/hvm/nestedhvm.c b/xen/arch/x86/hvm/nestedhvm.c
index bddd77d810..61e866b771 100644
--- a/xen/arch/x86/hvm/nestedhvm.c
+++ b/xen/arch/x86/hvm/nestedhvm.c
@@ -12,6 +12,7 @@
 #include <asm/hvm/nestedhvm.h>
 #include <asm/event.h>  /* for local_event_delivery_(en|dis)able */
 #include <asm/paging.h> /* for paging_mode_hap() */
+#include <asm/hvm/asid.h>
 
 static unsigned long *shadow_io_bitmap[3];
 
@@ -36,13 +37,11 @@ nestedhvm_vcpu_reset(struct vcpu *v)
     hvm_unmap_guest_frame(nv->nv_vvmcx, 1);
     nv->nv_vvmcx = NULL;
     nv->nv_vvmcxaddr = INVALID_PADDR;
-    nv->nv_flushp2m = 0;
+    nv->nv_flushp2m = true;
     nv->nv_p2m = NULL;
     nv->stale_np2m = false;
     nv->np2m_generation = 0;
 
-    hvm_asid_flush_vcpu_asid(&nv->nv_n2asid);
-
     alternative_vcall(hvm_funcs.nhvm_vcpu_reset, v);
 
     /* vcpu is in host mode */
@@ -86,7 +85,7 @@ static void cf_check nestedhvm_flushtlb_ipi(void *info)
      * This is cheaper than flush_tlb_local() and has
      * the same desired effect.
      */
-    hvm_asid_flush_core();
+    WARN_ON(hvm_flush_tlb(NULL));
     vcpu_nestedhvm(v).nv_p2m = NULL;
     vcpu_nestedhvm(v).stale_np2m = true;
 }
diff --git a/xen/arch/x86/hvm/svm/asid.c b/xen/arch/x86/hvm/svm/asid.c
index 53aa5d0512..44d2138895 100644
--- a/xen/arch/x86/hvm/svm/asid.c
+++ b/xen/arch/x86/hvm/svm/asid.c
@@ -1,39 +1,46 @@
 /* SPDX-License-Identifier: GPL-2.0-only */
 /*
- * asid.c: handling ASIDs in SVM.
+ * asid.c: handling ASIDs/VPIDs.
  * Copyright (c) 2007, Advanced Micro Devices, Inc.
  */
 
+#include <xen/cpumask.h>
+
 #include <asm/amd.h>
 #include <asm/hvm/nestedhvm.h>
 #include <asm/hvm/svm.h>
+#include <asm/processor.h>
 
 #include "svm.h"
 #include "vmcb.h"
 
-void svm_asid_init(const struct cpuinfo_x86 *c)
+void __init svm_asid_init(void)
 {
-    unsigned int nasids = 0;
+    unsigned int cpu, nasids = cpuid_ebx(0x8000000aU);
+
+    if ( !nasids )
+        nasids = 1;
 
-    /* Check for erratum #170, and leave ASIDs disabled if it's present. */
-    if ( !cpu_has_amd_erratum(c, AMD_ERRATUM_170) )
-        nasids = cpuid_ebx(0x8000000aU);
+    for_each_present_cpu(cpu)
+    {
+        /* Check for erratum #170, and leave ASIDs disabled if it's present. */
+        if ( cpu_has_amd_erratum(&cpu_data[cpu], AMD_ERRATUM_170) )
+        {
+            printk(XENLOG_WARNING "Disabling ASID due to errata 170 on CPU%u\n", cpu);
+            nasids = 1;
+        }
+    }
 
-    hvm_asid_init(nasids);
+    BUG_ON(hvm_asid_init(nasids));
 }
 
 /*
- * Called directly before VMRUN.  Checks if the VCPU needs a new ASID,
- * assigns it, and if required, issues required TLB flushes.
+ * Called directly at the first VMRUN/VMENTER of a vcpu to assign the ASID/VPID.
  */
-void svm_asid_handle_vmrun(void)
+void svm_vcpu_assign_asid(struct vcpu *v)
 {
-    struct vcpu *curr = current;
-    struct vmcb_struct *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;
-    bool need_flush = hvm_asid_handle_vmenter(p_asid);
+    struct vmcb_struct *vmcb = v->arch.hvm.svm.vmcb;
+    struct hvm_asid *p_asid = &v->domain->arch.hvm.asid;
 
     /* ASID 0 indicates that ASIDs are disabled. */
     if ( p_asid->asid == 0 )
@@ -44,11 +51,31 @@ void svm_asid_handle_vmrun(void)
         return;
     }
 
-    if ( vmcb_get_asid(vmcb) != p_asid->asid )
-        vmcb_set_asid(vmcb, p_asid->asid);
+    /* In case ASIDs are disabled, as ASID = 0 is reserved, guest can use 1 instead. */
+    vmcb_set_asid(vmcb, asid_enabled ? p_asid->asid : 1);
+}
+
+/* Call to make a TLB flush at the next VMRUN. */
+void svm_vcpu_set_tlb_control(struct vcpu *v)
+{
+    struct vmcb_struct *vmcb = v->arch.hvm.svm.vmcb;
+
+    /*
+     * If the vcpu is already running, the tlb control flag may not be
+     * processed and will be cleared at the next VMEXIT, which will undo
+     * what we are trying to do.
+     */
+    WARN_ON(v != current && v->is_running);
+
+    vmcb->tlb_control =
+        cpu_has_svm_flushbyasid ? TLB_CTRL_FLUSH_ASID : TLB_CTRL_FLUSH_ALL;
+}
+
+void svm_vcpu_clear_tlb_control(struct vcpu *v)
+{
+    struct vmcb_struct *vmcb = v->arch.hvm.svm.vmcb;
 
-    /* We can't rely on TLB_CTRL_FLUSH_ASID as all ASIDs are stale here. */
-    vmcb->tlb_control = need_flush ? TLB_CTRL_FLUSH_ALL : TLB_CTRL_NO_FLUSH;
+    vmcb->tlb_control = TLB_CTRL_NO_FLUSH;
 }
 
 /*
diff --git a/xen/arch/x86/hvm/svm/nestedsvm.c b/xen/arch/x86/hvm/svm/nestedsvm.c
index ef6fa5d23b..d9a84f9388 100644
--- a/xen/arch/x86/hvm/svm/nestedsvm.c
+++ b/xen/arch/x86/hvm/svm/nestedsvm.c
@@ -5,6 +5,7 @@
  *
  */
 
+#include <asm/hvm/asid.h>
 #include <asm/hvm/support.h>
 #include <asm/hvm/svm.h>
 #include <asm/hvm/nestedhvm.h>
@@ -638,7 +639,6 @@ nsvm_vcpu_vmentry(struct vcpu *v, struct cpu_user_regs *regs,
     if ( svm->ns_asid != vmcb_get_asid(ns_vmcb))
     {
         nv->nv_flushp2m = 1;
-        hvm_asid_flush_vcpu_asid(&vcpu_nestedhvm(v).nv_n2asid);
         svm->ns_asid = vmcb_get_asid(ns_vmcb);
     }
 
diff --git a/xen/arch/x86/hvm/svm/svm.c b/xen/arch/x86/hvm/svm/svm.c
index 8714fb18ec..ba22acb8a6 100644
--- a/xen/arch/x86/hvm/svm/svm.c
+++ b/xen/arch/x86/hvm/svm/svm.c
@@ -27,6 +27,7 @@
 #include <asm/hvm/nestedhvm.h>
 #include <asm/hvm/support.h>
 #include <asm/hvm/svm.h>
+#include <asm/hvm/asid.h>
 #include <asm/i387.h>
 #include <asm/idt.h>
 #include <asm/iocap.h>
@@ -137,16 +138,18 @@ static void cf_check svm_update_guest_cr(
         if ( !nestedhvm_enabled(v->domain) )
         {
             if ( !(flags & HVM_UPDATE_GUEST_CR3_NOFLUSH) )
-                hvm_asid_flush_vcpu(v);
                 
             v->needs_tlb_flush = true;
         }
         else if ( nestedhvm_vmswitch_in_progress(v) )
             ; /* CR3 switches during VMRUN/VMEXIT do not flush the TLB. */
         else if ( !(flags & HVM_UPDATE_GUEST_CR3_NOFLUSH) )
-            hvm_asid_flush_vcpu_asid(
-                nestedhvm_vcpu_in_guestmode(v)
-                ? &vcpu_nestedhvm(v).nv_n2asid : &v->arch.hvm.n1asid);
+        {
+            if (nestedhvm_vcpu_in_guestmode(v))
+                vcpu_nestedhvm(v).nv_flushp2m = true;
+            else
+                v->needs_tlb_flush = true;
+        }
         break;
     case 4:
         value = HVM_CR4_HOST_MASK;
@@ -944,8 +947,6 @@ static void noreturn cf_check svm_do_resume(void)
         v->arch.hvm.svm.launch_core = smp_processor_id();
         hvm_migrate_timers(v);
         hvm_migrate_pirqs(v);
-        /* Migrating to another ASID domain.  Request a new ASID. */
-        hvm_asid_flush_vcpu(v);
         v->needs_tlb_flush = true;
     }
 
@@ -974,8 +975,6 @@ void asmlinkage svm_vmenter_helper(void)
 
     ASSERT(hvmemul_cache_disabled(curr));
 
-    svm_asid_handle_vmrun();
-
     TRACE_TIME(TRC_HVM_VMENTRY |
                (nestedhvm_vcpu_in_guestmode(curr) ? TRC_HVM_NESTEDFLAG : 0));
 
@@ -991,6 +990,9 @@ void asmlinkage svm_vmenter_helper(void)
 
     curr->domain->latest_vcpu[cpu] = curr->vcpu_id;
 
+    if ( test_and_clear_bool(curr->needs_tlb_flush) )
+        svm_vcpu_set_tlb_control(curr);
+
     vmcb->rax = regs->rax;
     vmcb->rip = regs->rip;
     vmcb->rsp = regs->rsp;
@@ -1111,6 +1113,8 @@ static int cf_check svm_vcpu_initialise(struct vcpu *v)
         return rc;
     }
 
+    svm_vcpu_assign_asid(v);
+
     return 0;
 }
 
@@ -1536,9 +1540,6 @@ static int _svm_cpu_up(bool bsp)
     /* check for erratum 383 */
     svm_init_erratum_383(c);
 
-    /* Initialize core's ASID handling. */
-    svm_asid_init(c);
-
     /* Initialize OSVW bits to be used by guests */
     svm_host_osvw_init();
 
@@ -2293,7 +2294,7 @@ static void svm_invlpga_intercept(
 {
     svm_invlpga(linear,
                 (asid == 0)
-                ? v->arch.hvm.n1asid.asid
+                ? v->domain->arch.hvm.asid.asid
                 : vcpu_nestedhvm(v).nv_n2asid.asid);
 }
 
@@ -2315,8 +2316,6 @@ static bool cf_check is_invlpg(
 
 static void cf_check svm_invlpg(struct vcpu *v, unsigned long linear)
 {
-    /* Safe fallback. Take a new ASID. */
-    hvm_asid_flush_vcpu(v);
     /* Schedule a tlb flush on the VCPU. */
     v->needs_tlb_flush = true;
 }
@@ -2486,6 +2485,8 @@ const struct hvm_function_table * __init start_svm(void)
     svm_function_table.caps.hap_superpage_2mb = true;
     svm_function_table.caps.hap_superpage_1gb = cpu_has_page1gb;
 
+    svm_asid_init();
+
     return &svm_function_table;
 }
 
@@ -2542,6 +2543,8 @@ void asmlinkage svm_vmexit_handler(void)
                    (vlapic_get_reg(vlapic, APIC_TASKPRI) & 0x0F));
     }
 
+    svm_vcpu_clear_tlb_control(v);
+
     exit_reason = vmcb->exitcode;
 
     if ( hvm_long_mode_active(v) )
diff --git a/xen/arch/x86/hvm/svm/svm.h b/xen/arch/x86/hvm/svm/svm.h
index cfa411ad5a..901354e914 100644
--- a/xen/arch/x86/hvm/svm/svm.h
+++ b/xen/arch/x86/hvm/svm/svm.h
@@ -12,12 +12,8 @@
 #include <xen/types.h>
 
 struct cpu_user_regs;
-struct cpuinfo_x86;
 struct vcpu;
 
-void svm_asid_init(const struct cpuinfo_x86 *c);
-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);
 
diff --git a/xen/arch/x86/hvm/vmx/vmcs.c b/xen/arch/x86/hvm/vmx/vmcs.c
index 4efe13e07f..88808e26e7 100644
--- a/xen/arch/x86/hvm/vmx/vmcs.c
+++ b/xen/arch/x86/hvm/vmx/vmcs.c
@@ -20,6 +20,7 @@
 #include <asm/current.h>
 #include <asm/flushtlb.h>
 #include <asm/hvm/hvm.h>
+#include <asm/hvm/asid.h>
 #include <asm/hvm/io.h>
 #include <asm/hvm/nestedhvm.h>
 #include <asm/hvm/vmx/vmcs.h>
@@ -778,8 +779,6 @@ static int _vmx_cpu_up(bool bsp)
 
     this_cpu(vmxon) = 1;
 
-    hvm_asid_init(cpu_has_vmx_vpid ? (1u << VMCS_VPID_WIDTH) : 0);
-
     if ( cpu_has_vmx_ept )
         ept_sync_all();
 
@@ -1903,7 +1902,6 @@ void cf_check vmx_do_resume(void)
          */
         v->arch.hvm.vmx.hostenv_migrated = 1;
 
-        hvm_asid_flush_vcpu(v);
         v->needs_tlb_flush = true;
     }
 
@@ -2117,7 +2115,6 @@ void vmcs_dump_vcpu(struct vcpu *v)
          (SECONDARY_EXEC_ENABLE_VPID | SECONDARY_EXEC_ENABLE_VM_FUNCTIONS) )
         printk("Virtual processor ID = 0x%04x VMfunc controls = %016lx\n",
                vmr16(VIRTUAL_PROCESSOR_ID), vmr(VM_FUNCTION_CONTROL));
-
     vmx_vmcs_exit(v);
 }
 
diff --git a/xen/arch/x86/hvm/vmx/vmx.c b/xen/arch/x86/hvm/vmx/vmx.c
index dceff2f221..15989cf136 100644
--- a/xen/arch/x86/hvm/vmx/vmx.c
+++ b/xen/arch/x86/hvm/vmx/vmx.c
@@ -25,6 +25,7 @@
 #include <asm/fsgsbase.h>
 #include <asm/gdbsx.h>
 #include <asm/guest-msr.h>
+#include <asm/hvm/asid.h>
 #include <asm/hvm/emulate.h>
 #include <asm/hvm/hvm.h>
 #include <asm/hvm/monitor.h>
@@ -834,6 +835,18 @@ static void cf_check vmx_cpuid_policy_changed(struct vcpu *v)
         vmx_update_secondary_exec_control(v);
     }
 
+    if ( asid_enabled )
+    {
+        v->arch.hvm.vmx.secondary_exec_control |= SECONDARY_EXEC_ENABLE_VPID;
+        vmx_update_secondary_exec_control(v);
+    }
+    else
+    {
+        v->arch.hvm.vmx.secondary_exec_control &= ~SECONDARY_EXEC_ENABLE_VPID;
+        vmx_update_secondary_exec_control(v);
+    }
+
+
     /*
      * We can safely pass MSR_SPEC_CTRL through to the guest, even if STIBP
      * isn't enumerated in hardware, as SPEC_CTRL_STIBP is ignored.
@@ -1510,7 +1523,6 @@ static void cf_check vmx_handle_cd(struct vcpu *v, unsigned long value)
             vmx_set_msr_intercept(v, MSR_IA32_CR_PAT, VMX_MSR_RW);
 
             wbinvd();               /* flush possibly polluted cache */
-            hvm_asid_flush_vcpu(v); /* invalidate memory type cached in TLB */
             v->needs_tlb_flush = true; /* invalidate memory type cached in TLB */
             v->arch.hvm.vmx.cache_mode = CACHE_MODE_NO_FILL;
         }
@@ -1520,7 +1532,6 @@ static void cf_check vmx_handle_cd(struct vcpu *v, unsigned long value)
             vmx_set_guest_pat(v, *pat);
             if ( !is_iommu_enabled(v->domain) || iommu_snoop )
                 vmx_clear_msr_intercept(v, MSR_IA32_CR_PAT, VMX_MSR_RW);
-            hvm_asid_flush_vcpu(v); /* no need to flush cache */
             v->needs_tlb_flush = true;
         }
     }
@@ -1873,7 +1884,6 @@ static void cf_check vmx_update_guest_cr(
         __vmwrite(GUEST_CR3, v->arch.hvm.hw_cr[3]);
 
         if ( !(flags & HVM_UPDATE_GUEST_CR3_NOFLUSH) )
-            hvm_asid_flush_vcpu(v);
         v->needs_tlb_flush = true;
         break;
 
@@ -3171,6 +3181,8 @@ const struct hvm_function_table * __init start_vmx(void)
     lbr_tsx_fixup_check();
     ler_to_fixup_check();
 
+    BUG_ON(hvm_asid_init(cpu_has_vmx_vpid ? (1u << VMCS_VPID_WIDTH) : 1));
+
     return &vmx_function_table;
 }
 
@@ -4934,9 +4946,7 @@ bool asmlinkage vmx_vmenter_helper(const struct cpu_user_regs *regs)
 {
     struct vcpu *curr = current;
     struct domain *currd = curr->domain;
-    u32 new_asid, old_asid;
-    struct hvm_vcpu_asid *p_asid;
-    bool need_flush;
+    struct hvm_asid *p_asid;
     unsigned int cpu = smp_processor_id();
 
     ASSERT(hvmemul_cache_disabled(curr));
@@ -4948,38 +4958,16 @@ bool asmlinkage vmx_vmenter_helper(const struct cpu_user_regs *regs)
     if ( curr->domain->arch.hvm.pi_ops.vcpu_block )
         vmx_pi_do_resume(curr);
 
-    if ( !cpu_has_vmx_vpid )
+    if ( !asid_enabled )
         goto out;
     if ( nestedhvm_vcpu_in_guestmode(curr) )
         p_asid = &vcpu_nestedhvm(curr).nv_n2asid;
     else
-        p_asid = &curr->arch.hvm.n1asid;
+        p_asid = &currd->arch.hvm.asid;
 
-    old_asid = p_asid->asid;
-    need_flush = hvm_asid_handle_vmenter(p_asid);
-    new_asid = p_asid->asid;
+    __vmwrite(VIRTUAL_PROCESSOR_ID, p_asid->asid);
 
-    if ( unlikely(new_asid != old_asid) )
-    {
-        __vmwrite(VIRTUAL_PROCESSOR_ID, new_asid);
-        if ( !old_asid && new_asid )
-        {
-            /* VPID was disabled: now enabled. */
-            curr->arch.hvm.vmx.secondary_exec_control |=
-                SECONDARY_EXEC_ENABLE_VPID;
-            vmx_update_secondary_exec_control(curr);
-        }
-        else if ( old_asid && !new_asid )
-        {
-            /* VPID was enabled: now disabled. */
-            curr->arch.hvm.vmx.secondary_exec_control &=
-                ~SECONDARY_EXEC_ENABLE_VPID;
-            vmx_update_secondary_exec_control(curr);
-        }
-    }
 
-    if ( unlikely(need_flush) )
-        vpid_sync_all();
     /**
      * Check if we were the latest vCPU of this domain that ran on this pCPU.
      * Flush the TLB if it is not, as the TLB entries are the ones from the previous
@@ -4993,16 +4981,21 @@ bool asmlinkage vmx_vmenter_helper(const struct cpu_user_regs *regs)
     if ( paging_mode_hap(curr->domain) )
     {
         struct ept_data *ept = &p2m_get_hostp2m(currd)->ept;
-        unsigned int cpu = smp_processor_id();
         unsigned int inv = 0; /* None => Single => All */
         struct ept_data *single = NULL; /* Single eptp, iff inv == 1 */
 
+        if ( test_and_clear_bool(curr->needs_tlb_flush)  )
+        {
+            inv = 1;
+            single = ept;
+        }
+
         if ( cpumask_test_cpu(cpu, ept->invalidate) )
         {
             cpumask_clear_cpu(cpu, ept->invalidate);
 
             /* Automatically invalidate all contexts if nested. */
-            inv += 1 + nestedhvm_enabled(currd);
+            inv = 1 + nestedhvm_enabled(currd);
             single = ept;
         }
 
@@ -5031,6 +5024,11 @@ bool asmlinkage vmx_vmenter_helper(const struct cpu_user_regs *regs)
             __invept(inv == 1 ? INVEPT_SINGLE_CONTEXT : INVEPT_ALL_CONTEXT,
                      inv == 1 ? single->eptp          : 0);
     }
+    else /* Shadow paging */
+    {
+        if ( test_and_clear_bool(curr->needs_tlb_flush) )
+            vpid_sync_vcpu_context(curr);
+    }
 
  out:
     if ( unlikely(curr->arch.hvm.vmx.lbr_flags & LBR_FIXUP_MASK) )
diff --git a/xen/arch/x86/hvm/vmx/vvmx.c b/xen/arch/x86/hvm/vmx/vvmx.c
index 16d6f1d61b..7314aa5633 100644
--- a/xen/arch/x86/hvm/vmx/vvmx.c
+++ b/xen/arch/x86/hvm/vmx/vvmx.c
@@ -1253,7 +1253,6 @@ static void virtual_vmentry(struct cpu_user_regs *regs)
 
         if ( nvmx->guest_vpid != new_vpid )
         {
-            hvm_asid_flush_vcpu_asid(&vcpu_nestedhvm(v).nv_n2asid);
             v->needs_tlb_flush = true;
             nvmx->guest_vpid = new_vpid;
         }
@@ -2053,7 +2052,7 @@ static int nvmx_handle_invvpid(struct cpu_user_regs *regs)
     case INVVPID_INDIVIDUAL_ADDR:
     case INVVPID_SINGLE_CONTEXT:
     case INVVPID_ALL_CONTEXT:
-        hvm_asid_flush_vcpu_asid(&vcpu_nestedhvm(current).nv_n2asid);
+        hvm_flush_tlb(NULL);
         break;
     default:
         vmfail(regs, VMX_INSN_INVEPT_INVVPID_INVALID_OP);
diff --git a/xen/arch/x86/include/asm/flushtlb.h b/xen/arch/x86/include/asm/flushtlb.h
index 7bcbca2b7f..d8167aca18 100644
--- a/xen/arch/x86/include/asm/flushtlb.h
+++ b/xen/arch/x86/include/asm/flushtlb.h
@@ -125,12 +125,6 @@ void switch_cr3_cr4(unsigned long cr3, unsigned long cr4);
 #define FLUSH_VCPU_STATE 0x1000
  /* Flush the per-cpu root page table */
 #define FLUSH_ROOT_PGTBL 0x2000
-#if CONFIG_HVM
- /* Flush all HVM guests linear TLB (using ASID/VPID) */
-#define FLUSH_HVM_ASID_CORE 0x4000
-#else
-#define FLUSH_HVM_ASID_CORE 0
-#endif
 #if defined(CONFIG_PV) || defined(CONFIG_SHADOW_PAGING)
 /*
  * Adding this to the flags passed to flush_area_mask will prevent using the
@@ -190,7 +184,6 @@ void flush_area_mask(const cpumask_t *mask, const void *va,
 
 static inline void flush_page_to_ram(unsigned long mfn, bool sync_icache) {}
 
-unsigned int guest_flush_tlb_flags(const struct domain *d);
 void guest_flush_tlb_mask(const struct domain *d, const cpumask_t *mask);
 
 #endif /* __FLUSHTLB_H__ */
diff --git a/xen/arch/x86/include/asm/hvm/asid.h b/xen/arch/x86/include/asm/hvm/asid.h
index 25ba57e768..13ea357f70 100644
--- a/xen/arch/x86/include/asm/hvm/asid.h
+++ b/xen/arch/x86/include/asm/hvm/asid.h
@@ -8,25 +8,21 @@
 #ifndef __ASM_X86_HVM_ASID_H__
 #define __ASM_X86_HVM_ASID_H__
 
+#include <xen/stdbool.h>
+#include <xen/stdint.h>
 
-struct vcpu;
-struct hvm_vcpu_asid;
+struct hvm_asid {
+  uint32_t asid;
+};
 
-/* Initialise ASID management for the current physical CPU. */
-void hvm_asid_init(unsigned int nasids);
+extern bool asid_enabled;
 
-/* Invalidate a particular ASID allocation: forces re-allocation. */
-void hvm_asid_flush_vcpu_asid(struct hvm_vcpu_asid *asid);
+/* Initialise ASID management distributed across all CPUs. */
+int hvm_asid_init(unsigned long nasids);
 
-/* Invalidate all ASID allocations for specified VCPU: forces re-allocation. */
-void hvm_asid_flush_vcpu(struct vcpu *v);
-
-/* Flush all ASIDs on this processor core. */
-void hvm_asid_flush_core(void);
-
-/* Called before entry to guest context. Checks ASID allocation, returns a
- * boolean indicating whether all ASIDs must be flushed. */
-bool hvm_asid_handle_vmenter(struct hvm_vcpu_asid *asid);
+int hvm_asid_alloc(struct hvm_asid *asid);
+int hvm_asid_alloc_range(struct hvm_asid *asid, unsigned long min, unsigned long max);
+void hvm_asid_free(struct hvm_asid *asid);
 
 #endif /* __ASM_X86_HVM_ASID_H__ */
 
diff --git a/xen/arch/x86/include/asm/hvm/domain.h b/xen/arch/x86/include/asm/hvm/domain.h
index abf9bc448d..03fe6c8f7b 100644
--- a/xen/arch/x86/include/asm/hvm/domain.h
+++ b/xen/arch/x86/include/asm/hvm/domain.h
@@ -139,6 +139,7 @@ struct hvm_domain {
     } write_map;
 
     struct hvm_pi_ops pi_ops;
+    struct hvm_asid asid;
 
     union {
         struct vmx_domain vmx;
diff --git a/xen/arch/x86/include/asm/hvm/hvm.h b/xen/arch/x86/include/asm/hvm/hvm.h
index e7c1364802..935d9e7548 100644
--- a/xen/arch/x86/include/asm/hvm/hvm.h
+++ b/xen/arch/x86/include/asm/hvm/hvm.h
@@ -274,6 +274,8 @@ int hvm_domain_initialise(struct domain *d,
 void hvm_domain_relinquish_resources(struct domain *d);
 void hvm_domain_destroy(struct domain *d);
 
+int hvm_flush_tlb(const unsigned long *vcpu_bitmap);
+
 int hvm_vcpu_initialise(struct vcpu *v);
 void hvm_vcpu_destroy(struct vcpu *v);
 void hvm_vcpu_down(struct vcpu *v);
@@ -497,17 +499,6 @@ static inline void hvm_set_tsc_offset(struct vcpu *v, uint64_t offset)
     alternative_vcall(hvm_funcs.set_tsc_offset, v, offset);
 }
 
-/*
- * Called to ensure than all guest-specific mappings in a tagged TLB are 
- * flushed; does *not* flush Xen's TLB entries, and on processors without a 
- * tagged TLB it will be a noop.
- */
-static inline void hvm_flush_guest_tlbs(void)
-{
-    if ( hvm_enabled )
-        hvm_asid_flush_core();
-}
-
 static inline unsigned int
 hvm_get_cpl(struct vcpu *v)
 {
@@ -901,8 +892,6 @@ static inline int hvm_cpu_up(void)
 
 static inline void hvm_cpu_down(void) {}
 
-static inline void hvm_flush_guest_tlbs(void) {}
-
 static inline void hvm_invlpg(const struct vcpu *v, unsigned long linear)
 {
     ASSERT_UNREACHABLE();
diff --git a/xen/arch/x86/include/asm/hvm/svm.h b/xen/arch/x86/include/asm/hvm/svm.h
index a35a61273b..1877bb149a 100644
--- a/xen/arch/x86/include/asm/hvm/svm.h
+++ b/xen/arch/x86/include/asm/hvm/svm.h
@@ -9,6 +9,11 @@
 #ifndef __ASM_X86_HVM_SVM_H__
 #define __ASM_X86_HVM_SVM_H__
 
+void svm_asid_init(void);
+void svm_vcpu_assign_asid(struct vcpu *v);
+void svm_vcpu_set_tlb_control(struct vcpu *v);
+void svm_vcpu_clear_tlb_control(struct vcpu *v);
+
 /*
  * PV context switch helpers.  Prefetching the VMCB area itself has been shown
  * to be useful for performance.
diff --git a/xen/arch/x86/include/asm/hvm/vcpu.h b/xen/arch/x86/include/asm/hvm/vcpu.h
index 836138a4a6..7472cdd0f2 100644
--- a/xen/arch/x86/include/asm/hvm/vcpu.h
+++ b/xen/arch/x86/include/asm/hvm/vcpu.h
@@ -9,6 +9,7 @@
 #define __ASM_X86_HVM_VCPU_H__
 
 #include <xen/tasklet.h>
+#include <asm/hvm/asid.h>
 #include <asm/hvm/vlapic.h>
 #include <asm/hvm/vmx/vmcs.h>
 #include <asm/hvm/vmx/vvmx.h>
@@ -16,11 +17,6 @@
 #include <asm/mtrr.h>
 #include <public/hvm/ioreq.h>
 
-struct hvm_vcpu_asid {
-    uint64_t generation;
-    uint32_t asid;
-};
-
 struct hvm_vcpu_io {
     /*
      * HVM emulation:
@@ -78,7 +74,7 @@ struct nestedvcpu {
     bool stale_np2m; /* True when p2m_base in VMCx02 is no longer valid */
     uint64_t np2m_generation;
 
-    struct hvm_vcpu_asid nv_n2asid;
+    struct hvm_asid nv_n2asid;
 
     bool nv_vmentry_pending;
     bool nv_vmexit_pending;
@@ -142,8 +138,6 @@ struct hvm_vcpu {
     /* (MFN) hypervisor page table */
     pagetable_t         monitor_table;
 
-    struct hvm_vcpu_asid n1asid;
-
     u64                 msr_tsc_adjust;
 
     union {
diff --git a/xen/arch/x86/include/asm/hvm/vmx/vmx.h b/xen/arch/x86/include/asm/hvm/vmx/vmx.h
index 3524cb3536..4f307ae123 100644
--- a/xen/arch/x86/include/asm/hvm/vmx/vmx.h
+++ b/xen/arch/x86/include/asm/hvm/vmx/vmx.h
@@ -470,7 +470,7 @@ static inline void vpid_sync_vcpu_context(const struct vcpu *v)
     type = INVVPID_ALL_CONTEXT;
 
 execute_invvpid:
-    __invvpid(type, v->arch.hvm.n1asid.asid, 0);
+    __invvpid(type, v->domain->arch.hvm.asid.asid, 0);
 }
 
 static inline void vpid_sync_vcpu_gva(struct vcpu *v, unsigned long gva)
@@ -494,7 +494,7 @@ static inline void vpid_sync_vcpu_gva(struct vcpu *v, unsigned long gva)
         type = INVVPID_ALL_CONTEXT;
 
 execute_invvpid:
-    __invvpid(type, v->arch.hvm.n1asid.asid, (u64)gva);
+    __invvpid(type, v->domain->arch.hvm.asid.asid, (u64)gva);
 }
 
 static inline void vpid_sync_all(void)
diff --git a/xen/arch/x86/mm/hap/hap.c b/xen/arch/x86/mm/hap/hap.c
index 5ccb80bda5..156734d3e0 100644
--- a/xen/arch/x86/mm/hap/hap.c
+++ b/xen/arch/x86/mm/hap/hap.c
@@ -27,6 +27,7 @@
 #include <asm/p2m.h>
 #include <asm/domain.h>
 #include <xen/numa.h>
+#include <asm/hvm/asid.h>
 #include <asm/hvm/nestedhvm.h>
 #include <public/sched.h>
 
@@ -750,18 +751,16 @@ static bool cf_check flush_tlb(const unsigned long *vcpu_bitmap)
         if ( !flush_vcpu(v, vcpu_bitmap) )
             continue;
 
-        hvm_asid_flush_vcpu(v);
-
         cpu = read_atomic(&v->dirty_cpu);
         if ( cpu != this_cpu && is_vcpu_dirty_cpu(cpu) && v->is_running )
             __cpumask_set_cpu(cpu, mask);
     }
 
+    guest_flush_tlb_mask(d, mask);
+
     /*
      * Trigger a vmexit on all pCPUs with dirty vCPU state in order to force an
-     * ASID/VPID change and hence accomplish a guest TLB flush. Note that vCPUs
-     * not currently running will already be flushed when scheduled because of
-     * the ASID tickle done in the loop above.
+     * ASID/VPID flush and hence accomplish a guest TLB flush.
      */
     on_selected_cpus(mask, NULL, NULL, 0);
 
diff --git a/xen/arch/x86/mm/p2m.c b/xen/arch/x86/mm/p2m.c
index 910623ac93..6eb6035f09 100644
--- a/xen/arch/x86/mm/p2m.c
+++ b/xen/arch/x86/mm/p2m.c
@@ -1439,7 +1439,6 @@ p2m_flush(struct vcpu *v, struct p2m_domain *p2m)
     ASSERT(v->domain == p2m->domain);
     vcpu_nestedhvm(v).nv_p2m = NULL;
     p2m_flush_table(p2m);
-    hvm_asid_flush_vcpu(v);
     v->needs_tlb_flush = true;
 }
 
@@ -1499,7 +1498,6 @@ static void assign_np2m(struct vcpu *v, struct p2m_domain *p2m)
 
 static void nvcpu_flush(struct vcpu *v)
 {
-    hvm_asid_flush_vcpu(v);
     v->needs_tlb_flush = true;
     vcpu_nestedhvm(v).stale_np2m = true;
 }
@@ -1620,7 +1618,6 @@ void np2m_schedule(int dir)
             if ( !np2m_valid )
             {
                 /* This vCPU's np2m was flushed while it was not runnable */
-                hvm_asid_flush_core();
                 curr->needs_tlb_flush = true;
                 vcpu_nestedhvm(curr).nv_p2m = NULL;
             }
diff --git a/xen/arch/x86/mm/paging.c b/xen/arch/x86/mm/paging.c
index b0b3bef753..af5584a777 100644
--- a/xen/arch/x86/mm/paging.c
+++ b/xen/arch/x86/mm/paging.c
@@ -938,7 +938,6 @@ void paging_update_nestedmode(struct vcpu *v)
     else
         /* TODO: shadow-on-shadow */
         v->arch.paging.nestedmode = NULL;
-    hvm_asid_flush_vcpu(v);
     v->needs_tlb_flush = true;
 }
 
diff --git a/xen/arch/x86/mm/shadow/multi.c b/xen/arch/x86/mm/shadow/multi.c
index 2df2842138..0eef92bc5b 100644
--- a/xen/arch/x86/mm/shadow/multi.c
+++ b/xen/arch/x86/mm/shadow/multi.c
@@ -81,12 +81,6 @@ const char *const fetch_type_names[] = {
 
 static pagetable_t cf_check sh_update_cr3(struct vcpu *v, bool noflush);
 
-/* Helper to perform a local TLB flush. */
-static void sh_flush_local(const struct domain *d)
-{
-    flush_local(guest_flush_tlb_flags(d));
-}
-
 #if GUEST_PAGING_LEVELS >= 4 && defined(CONFIG_PV32)
 #define ASSERT_VALID_L2(t) \
     ASSERT((t) == SH_type_l2_shadow || (t) == SH_type_l2h_shadow)
@@ -2947,7 +2941,8 @@ static bool cf_check sh_invlpg(struct vcpu *v, unsigned long linear)
     if ( mfn_to_page(sl1mfn)->u.sh.type
          == SH_type_fl1_shadow )
     {
-        sh_flush_local(v->domain);
+        flush_tlb_local();
+        v->needs_tlb_flush = true;
         return false;
     }
 
@@ -3164,7 +3159,7 @@ sh_update_linear_entries(struct vcpu *v)
      * linear pagetable to read a top-level shadow page table entry. But,
      * without this change, it would fetch the wrong value due to a stale TLB.
      */
-    sh_flush_local(d);
+    flush_tlb_local();
     v->needs_tlb_flush = true;
 }
 
-- 
2.52.0



--
Teddy Astie | Vates XCP-ng Developer

XCP-ng & Xen Orchestra - Vates solutions

web: https://vates.tech



From xen-devel-bounces@lists.xenproject.org Wed Apr 15 13:32:32 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 15 Apr 2026 13:32:32 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1282456.1565053 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wD0M4-0000yz-MS; Wed, 15 Apr 2026 13:32:32 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1282456.1565053; Wed, 15 Apr 2026 13:32: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 1wD0M4-0000xS-Ix; Wed, 15 Apr 2026 13:32:32 +0000
Received: by outflank-mailman (input) for mailman id 1282456;
 Wed, 15 Apr 2026 13:32:31 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <bounce-md_30504962.69df936d.v1-0c12d93e9f5c4829941f2040aaaea336@bounce.vates.tech>)
 id 1wD0M3-0000rk-IL
 for xen-devel@lists.xenproject.org; Wed, 15 Apr 2026 13:32:31 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wD0M2-006OmM-UK
 for xen-devel@lists.xenproject.org; Wed, 15 Apr 2026 15:32:30 +0200
Received: from [10.42.69.8] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1) (envelope-from
 <bounce-md_30504962.69df936d.v1-0c12d93e9f5c4829941f2040aaaea336@bounce.vates.tech>)
 id 69df936d-e002-0a2a0a5209dd-0a2a4508b786-8
 for <xen-devel@lists.xenproject.org>; Wed, 15 Apr 2026 15:32:30 +0200
Received: from [198.2.187.14] (helo=mail187-14.suw11.mandrillapp.com)
 by tlsNG-c1860d.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.0)
 (envelope-from
 <bounce-md_30504962.69df936d.v1-0c12d93e9f5c4829941f2040aaaea336@bounce.vates.tech>)
 id 69df936d-fab6-0a2a45080019-c602bb0e6efc-3
 for <xen-devel@lists.xenproject.org>; Wed, 15 Apr 2026 15:32:30 +0200
Received: from pmta09.mandrill.prod.suw01.rsglab.com (localhost [127.0.0.1])
 by mail187-14.suw11.mandrillapp.com (Mailchimp) with ESMTP id
 4fwhs93YTkz8XSS6N
 for <xen-devel@lists.xenproject.org>; Wed, 15 Apr 2026 13:32:29 +0000 (GMT)
Received: from [37.26.189.201] by mandrillapp.com id
 0c12d93e9f5c4829941f2040aaaea336; Wed, 15 Apr 2026 13:32: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=mte1 header.d=mandrillapp.com header.i="@mandrillapp.com" header.h="From:Subject:To:Cc:Message-Id:In-Reply-To:References:Feedback-ID:Date:MIME-Version:Content-Type:Content-Transfer-Encoding"; dkim=pass header.s=mte1 header.d=vates.tech header.i="teddy.astie@vates.tech" header.h="From:Subject:To:Cc:Message-Id:In-Reply-To:References:Feedback-ID:Date:MIME-Version:Content-Type:Content-Transfer-Encoding"
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=mandrillapp.com;
	s=mte1; t=1776259949; x=1776529949;
	bh=PxrQtMDpZ4zK9NM/vPWDKrs+JHdyCRhp9oAg6MOgvbY=;
	h=From:Subject:To:Cc:Message-Id:In-Reply-To:References:Feedback-ID:
	 Date:MIME-Version:Content-Type:Content-Transfer-Encoding:CC:Date:
	 Subject:From;
	b=oVZdRPBp1MTtk98qliB0H0nRsGwTVPFph7/ZjEQ8768eeQDmTSSpYfKFvHrtQcaUa
	 4uOZj7xW/xq1MqSXcerjQg9gsiAyW5mbPTHDDDkqe0ZC5qpxdPhpmKOvXMNZH5VGgG
	 dES0Sf3STEa6vMnvcvmd5tEEfnyyYj0MuUlfyobpEtOjYTqL7HvjqFdlF6zLoqjg7w
	 EMkQKCfjBbh5zlfQ+GXRnfau5rMnHMuoqXQgvdf/siTEMysaQKYFBiGZ6heUKM9hFz
	 ig2rE/idtKk1q03yMD56Jr0cWowqNZ9kHIm/zBJztOp2/lkR8MBeW/a1hx8AN+sO9T
	 U1/24lnP1qJVA==
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=vates.tech; s=mte1;
	t=1776259949; x=1776520449; i=teddy.astie@vates.tech;
	bh=PxrQtMDpZ4zK9NM/vPWDKrs+JHdyCRhp9oAg6MOgvbY=;
	h=From:Subject:To:Cc:Message-Id:In-Reply-To:References:Feedback-ID:
	 Date:MIME-Version:Content-Type:Content-Transfer-Encoding:CC:Date:
	 Subject:From;
	b=mmEcEjbID8EA1NDPxstRncJDX6FMeMCENCqKnJYaTtJyyqoR/i32ckL1o+Xfor5pH
	 leYnLEKkPK5G4ORftlm/I0yqLKjBDA0F7zGbCS61tx3D+/MkbztTWv1LqBExPOjKSl
	 lSsOHKPmg5Le9lO+ZNuDc+G0Wj8a3AmexFd7zRjQ3dO9YyA4gMk0F4t99Ljqd2azIu
	 ZsUIqy4YN3hyUjL3+CvnNxceBhVtEzmKhJWAem6/oGC2eDv1U+2q35KogEVwEkT7dE
	 zF3lFgkPZx6p70oqGz92bRn7VEAJ/Ca7L6dKnypK97VBTidmFMxc5/6JpVwyzc9jHx
	 VMnp0wnAp0vww==
From: "Teddy Astie" <teddy.astie@vates.tech>
Subject: =?utf-8?Q?[RFC=20PATCH=207/7]=20hvm:=20Allow=20specifying=20a=20prefered=20asid=20minimum?=
X-Mailer: git-send-email 2.52.0
X-Bm-Disclaimer: Yes
X-Bm-Milter-Handled: 4ffbd6c1-ee69-4e1b-aabd-f977039bd3e2
X-Bm-Transport-Timestamp: 1776259947257
To: xen-devel@lists.xenproject.org
Cc: "Teddy Astie" <teddy.astie@vates.tech>, "Jan Beulich" <jbeulich@suse.com>, "Andrew Cooper" <andrew.cooper3@citrix.com>, "=?utf-8?Q?Roger=20Pau=20Monn=C3=A9?=" <roger.pau@citrix.com>
Message-Id: <1603515ebdf6f7b26d5503c99ab5e5e2ac8fe278.1776259595.git.teddy.astie@vates.tech>
In-Reply-To: <cover.1776259594.git.teddy.astie@vates.tech>
References: <cover.1776259594.git.teddy.astie@vates.tech>
X-Native-Encoded: 1
X-Report-Abuse: =?UTF-8?Q?Please=20forward=20a=20copy=20of=20this=20message,=20including=20all=20headers,=20to=20abuse@mandrill.com.=20You=20can=20also=20report=20abuse=20here:=20https://mandrillapp.com/contact/abuse=3Fid=3D30504962.0c12d93e9f5c4829941f2040aaaea336?=
X-Mandrill-User: md_30504962
Feedback-ID: 30504962:30504962.20260415:md
Date: Wed, 15 Apr 2026 13:32:29 +0000
MIME-Version: 1.0
Content-Type: text/plain; charset=utf-8
Content-Transfer-Encoding: 7bit
X-purgate-ID: tlsNG-c1860d/1776259950-75358497-AD69C7F1/0/0
X-purgate-type: clean
X-purgate-size: 1837

To avoid clobbering all ASIDs that are below SEV-enabled guest maximum,
we want to allocate if possible all ASID over a "prefered minimum"
and fallback to below otherwise.

Signed-off-by: Teddy Astie <teddy.astie@vates.tech>
---
 xen/arch/x86/hvm/asid.c             | 8 ++++++++
 xen/arch/x86/include/asm/hvm/asid.h | 1 +
 2 files changed, 9 insertions(+)

diff --git a/xen/arch/x86/hvm/asid.c b/xen/arch/x86/hvm/asid.c
index 1a21125161..4ad3200c96 100644
--- a/xen/arch/x86/hvm/asid.c
+++ b/xen/arch/x86/hvm/asid.c
@@ -22,6 +22,9 @@ boolean_param("asid", opt_asid_enabled);
 bool __read_mostly asid_enabled = false;
 static unsigned long __ro_after_init *asid_bitmap;
 static unsigned long __ro_after_init asid_count;
+
+/* Default minimum ASID to use */
+unsigned long __read_mostly asid_default_min = 0;
 static DEFINE_SPINLOCK(asid_lock);
 
 /*
@@ -67,6 +70,11 @@ int hvm_asid_alloc(struct hvm_asid *asid)
         return 0;
     }
 
+    /* Try to allocate above default minimum */
+    if ( asid_default_min &&
+         !hvm_asid_alloc_range(asid, asid_default_min, asid_count) )
+        return 0;
+
     spin_lock(&asid_lock);
     new_asid = find_first_zero_bit(asid_bitmap, asid_count);
     if ( new_asid > asid_count )
diff --git a/xen/arch/x86/include/asm/hvm/asid.h b/xen/arch/x86/include/asm/hvm/asid.h
index 13ea357f70..e989ebbe8c 100644
--- a/xen/arch/x86/include/asm/hvm/asid.h
+++ b/xen/arch/x86/include/asm/hvm/asid.h
@@ -16,6 +16,7 @@ struct hvm_asid {
 };
 
 extern bool asid_enabled;
+extern unsigned long asid_default_min;
 
 /* Initialise ASID management distributed across all CPUs. */
 int hvm_asid_init(unsigned long nasids);
-- 
2.52.0



--
Teddy Astie | Vates XCP-ng Developer

XCP-ng & Xen Orchestra - Vates solutions

web: https://vates.tech



From xen-devel-bounces@lists.xenproject.org Wed Apr 15 13:44:57 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 15 Apr 2026 13:44:57 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1282498.1565066 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wD0Xz-0003zB-IC; Wed, 15 Apr 2026 13:44:51 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1282498.1565066; Wed, 15 Apr 2026 13:44: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 1wD0Xz-0003z4-FK; Wed, 15 Apr 2026 13:44:51 +0000
Received: by outflank-mailman (input) for mailman id 1282498;
 Wed, 15 Apr 2026 13:44:50 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <bounce-md_30504962.69df964f.v1-603041154a0e46c9bf79c06074e1b14a@bounce.vates.tech>)
 id 1wD0Xy-0003yx-FN
 for xen-devel@lists.xenproject.org; Wed, 15 Apr 2026 13:44:50 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wD0Xx-00DFnq-4Z
 for xen-devel@lists.xenproject.org; Wed, 15 Apr 2026 15:44:49 +0200
Received: from [10.42.69.10] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1) (envelope-from
 <bounce-md_30504962.69df964f.v1-603041154a0e46c9bf79c06074e1b14a@bounce.vates.tech>)
 id 69df964d-bab6-0a2a0a5309dd-0a2a450acd86-14
 for <xen-devel@lists.xenproject.org>; Wed, 15 Apr 2026 15:44:49 +0200
Received: from [198.2.186.1] (helo=mail186-1.suw21.mandrillapp.com)
 by tlsNG-4011c0.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.0)
 (envelope-from
 <bounce-md_30504962.69df964f.v1-603041154a0e46c9bf79c06074e1b14a@bounce.vates.tech>)
 id 69df964f-ee98-0a2a450a0019-c602ba01f614-3
 for <xen-devel@lists.xenproject.org>; Wed, 15 Apr 2026 15:44:48 +0200
Received: from pmta10.mandrill.prod.suw01.rsglab.com (localhost [127.0.0.1])
 by mail186-1.suw21.mandrillapp.com (Mailchimp) with ESMTP id 4fwj7M2xXpzBsV4dp
 for <xen-devel@lists.xenproject.org>; Wed, 15 Apr 2026 13:44:47 +0000 (GMT)
Received: from [37.26.189.201] by mandrillapp.com id
 603041154a0e46c9bf79c06074e1b14a; Wed, 15 Apr 2026 13:44: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=mte1 header.d=mandrillapp.com header.i="@mandrillapp.com" header.h="From:Subject:To:Cc:Message-Id:References:In-Reply-To:Feedback-ID:Date:MIME-Version:Content-Type:Content-Transfer-Encoding"; dkim=pass header.s=mte1 header.d=vates.tech header.i="anthony.perard@vates.tech" header.h="From:Subject:To:Cc:Message-Id:References:In-Reply-To:Feedback-ID:Date:MIME-Version:Content-Type:Content-Transfer-Encoding"
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=mandrillapp.com;
	s=mte1; t=1776260687; x=1776530687;
	bh=//hAjML2pP2vneo2Hm8FFXS2YtyAc4eA0WjPQ7ENl3I=;
	h=From:Subject:To:Cc:Message-Id:References:In-Reply-To:Feedback-ID:
	 Date:MIME-Version:Content-Type:Content-Transfer-Encoding:CC:Date:
	 Subject:From;
	b=CWJLQsjDywmikCmPwll4k9l6BwkfqwAt6BJJFPzVZAz4589wppITxJHKQfLrZGGQR
	 WWzeRGjmG7kZJX4KxqRrUAGyGOXf1/9wmsWM/yOaFEclCowfP9K8Si4BuEWcHYeBJR
	 PeJ0IyHfDJywxuXkWa2JO49x0xxvomd+LENjRwN2VjF4De3wsFwChBnRyP9td2PJKc
	 GfrsydVmdCsYurKff8+wvuWg+uPJFhkq5NrTDR+IymbjlIaXJVG80miFp1BAbO/UhH
	 C8+wF5cB/DwhgqeB9sz7idR42eVvNFD245i+R/yHDVQeeTcVOMtwxrDnotE7HRqaoY
	 wVAmQd9mLRwtA==
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=vates.tech; s=mte1;
	t=1776260687; x=1776521187; i=anthony.perard@vates.tech;
	bh=//hAjML2pP2vneo2Hm8FFXS2YtyAc4eA0WjPQ7ENl3I=;
	h=From:Subject:To:Cc:Message-Id:References:In-Reply-To:Feedback-ID:
	 Date:MIME-Version:Content-Type:Content-Transfer-Encoding:CC:Date:
	 Subject:From;
	b=kcKALmQok2Xxm7U9tuhtxZ/rLyqDfvZQddaWVbquy75KG6gu3m/gbVslYV2oGzmyH
	 eNqANYyJU8cVP6VVVviMp1yctYFPuOIJZyRHNQ7wZaWmyjp+ys2VPCjG3O/VwgLzKy
	 5b1zno7bm7bZrZGdAvqAbzQ3/9uHsapJ05mLnJRZgKUSq7HIIt7wapYTkb0D6lCk/r
	 zINaGxiwUCP78RM4bAvVUB4W465lq8s3HFwx+CtabRXWbzLs843TQmPQn0WQ5CnBYo
	 Bu3eNUzK2Ttfcmd21pUbAQvX1WoI+70qASashqf9n+uk1Sybs7+BtVaQ9AYoURfhd+
	 M1ubXx4nYv9PQ==
From: "Anthony PERARD" <anthony.perard@vates.tech>
Subject: =?utf-8?Q?Re:=20[PATCH=20test-artifacts=20v3=2009/13]=20Add=20trigger-test=20job,=20to=20run=20test=20on=20a=20Linux=20built=20from=20a=20branch/tag?=
X-Bm-Disclaimer: Yes
X-Bm-Milter-Handled: 4ffbd6c1-ee69-4e1b-aabd-f977039bd3e2
X-Bm-Transport-Timestamp: 1776260686233
To: "=?utf-8?Q?Marek=20Marczykowski-G=C3=B3recki?=" <marmarek@invisiblethingslab.com>
Cc: xen-devel@lists.xenproject.org, "Andrew Cooper" <andrew.cooper3@citrix.com>, "Stefano Stabellini" <sstabellini@kernel.org>, "=?utf-8?Q?Roger=20Pau=20Monn=C3=A9?=" <roger.pau@citrix.com>
Message-Id: <ad-WTdnAdOzcUkze@l14>
References: <cover.bd2e5bd58e4b316c9c1042b1ca8db51b81fb7ea7.1774999132.git-series.marmarek@invisiblethingslab.com> <9893108225500bb841a39918942bc9267e62b6af.1774999132.git-series.marmarek@invisiblethingslab.com>
In-Reply-To: <9893108225500bb841a39918942bc9267e62b6af.1774999132.git-series.marmarek@invisiblethingslab.com>
X-Native-Encoded: 1
X-Report-Abuse: =?UTF-8?Q?Please=20forward=20a=20copy=20of=20this=20message,=20including=20all=20headers,=20to=20abuse@mandrill.com.=20You=20can=20also=20report=20abuse=20here:=20https://mandrillapp.com/contact/abuse=3Fid=3D30504962.603041154a0e46c9bf79c06074e1b14a?=
X-Mandrill-User: md_30504962
Feedback-ID: 30504962:30504962.20260415:md
Date: Wed, 15 Apr 2026 13:44:47 +0000
MIME-Version: 1.0
Content-Type: text/plain; charset=utf-8
Content-Transfer-Encoding: quoted-printable
X-purgate-ID: tlsNG-4011c0/1776260688-BFF430B1-0B40947B/0/0
X-purgate-type: clean
X-purgate-size: 2617

On Wed, Apr 01, 2026 at 01:21:59AM +0200, Marek Marczykowski-G=C3=B3recki w=
rote:
> When scheduling pipeline in test-artifacts repo, it can get also
> TEST_TRIGGER_REPO and TEST_TRIGGER_BRANCH variables, to trigger relevant
> pipeline to test just built artifacts.
> Pass ARTIFACTS_REPO+ARTIFACTS_BRANCH to the child pipeline to ensure it
> fetches artifacts from the right job.
> For example, to build linux-next and test Xen staging on it, the
> pipeline could be triggered with:
> 
>     LINUX_GIT_URL=3Dhttps://git.kernel.org/pub/scm/linux/kernel/git/next/=
linux-next.git
>     LINUX_GIT_VERSION=3Dmaster
>     TEST_TRIGGER_REPO=3Dxen-project/hardware/xen
>     TEST_TRIGGER_BRANCH=3Dstaging
> 
> The triggered xen test pipeline will skip most build jobs.
> 
> Signed-off-by: Marek Marczykowski-G=C3=B3recki <marmarek@invisiblethingsl=
ab.com>
> ---

You might want to add that this depends on two patch for the xen repo,
for the trigger to do the expected tests:
    CI: make test-artifacts repo/branch/job customizable
    ci: introduce BUILD_FOR_TESTS_ONLY

> diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml
> index 62b2a24e7faf..9d90a8f57ff8 100644
> --- a/.gitlab-ci.yml
> +++ b/.gitlab-ci.yml
> @@ -105,3 +110,18 @@ linux-git-x86_64:
>  microcode-x86:
>    extends: .x86_64-artifacts
>    script: ./scripts/x86-microcode.sh
> +
> +trigger-test:
> +  stage: deploy
> +  trigger:
> +    project: $TEST_TRIGGER_REPO
> +    branch: $TEST_TRIGGER_BRANCH
> +    strategy: mirror
> +  variables:
> +    ARTIFACTS_REPO: $CI_PROJECT_PATH
> +    ARTIFACTS_BRANCH: $CI_COMMIT_REF_NAME
> +    LINUX_JOB_X86_64: linux-git-x86_64
> +    LINUX_JOB_ARM64: linux-git-arm64
> +    BUILD_FOR_TESTS_ONLY: 1

Can we add this?
  inherit:
    variables: false

Otherwise, as I understand, the triggered pipeline will also use the
global variables, like TEST_TRIGGER_REPO, LINUX_GIT_VERSION, ... Or I
could be wrong because we don't set a default value and the are only
manual/scheduled pipeline variable.

https://docs.gitlab.com/ci/yaml/#trigger
> CI/CD variables defined in a top-level variables section (globally) or
> in the trigger job are forwarded to the downstream pipeline as trigger
> variables.

https://docs.gitlab.com/ci/pipelines/downstream_pipelines/#prevent-default-=
variables-from-being-passed

I'm not sure if the inherit:variables:false is needed, so:
Reviewed-by: Anthony PERARD <anthony.perard@vates.tech>

Thanks,


--
Anthony Perard | Vates XCP-ng Developer

XCP-ng & Xen Orchestra - Vates solutions

web: https://vates.tech




From xen-devel-bounces@lists.xenproject.org Wed Apr 15 13:54:35 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 15 Apr 2026 13:54:35 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1282510.1565083 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wD0hM-0005zL-GV; Wed, 15 Apr 2026 13:54:32 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1282510.1565083; Wed, 15 Apr 2026 13:54: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 1wD0hM-0005zE-Du; Wed, 15 Apr 2026 13:54:32 +0000
Received: by outflank-mailman (input) for mailman id 1282510;
 Wed, 15 Apr 2026 13:54:30 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <bounce-md_30504962.69df9361.v1-58b0a3bb1a944e24a0083559f9875d46@bounce.vates.tech>)
 id 1wD0hK-0005mE-Rh
 for xen-devel@lists.xenproject.org; Wed, 15 Apr 2026 13:54:30 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wD0hK-002UaC-75
 for xen-devel@lists.xenproject.org; Wed, 15 Apr 2026 15:54:30 +0200
Received: from [10.42.69.4] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1) (envelope-from
 <bounce-md_30504962.69df9361.v1-58b0a3bb1a944e24a0083559f9875d46@bounce.vates.tech>)
 id 69df9895-2eae-0a2a0a5409dd-0a2a4504a5da-6
 for <xen-devel@lists.xenproject.org>; Wed, 15 Apr 2026 15:54:30 +0200
Received: from [198.2.187.1] (helo=mail187-1.suw11.mandrillapp.com)
 by tlsNG-ebf023.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.0)
 (envelope-from
 <bounce-md_30504962.69df9361.v1-58b0a3bb1a944e24a0083559f9875d46@bounce.vates.tech>)
 id 69df9894-bb33-0a2a45040019-c602bb01fc7d-3
 for <xen-devel@lists.xenproject.org>; Wed, 15 Apr 2026 15:54:29 +0200
Received: from pmta09.mandrill.prod.suw01.rsglab.com (localhost [127.0.0.1])
 by mail187-1.suw11.mandrillapp.com (Mailchimp) with ESMTP id 4fwhrx69gkzBsbN6V
 for <xen-devel@lists.xenproject.org>; Wed, 15 Apr 2026 13:32:17 +0000 (GMT)
Received: from [37.26.189.201] by mandrillapp.com id
 58b0a3bb1a944e24a0083559f9875d46; Wed, 15 Apr 2026 13:32: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=mte1 header.d=mandrillapp.com header.i="@mandrillapp.com" header.h="From:Subject:To:Cc:Message-Id:In-Reply-To:References:Feedback-ID:Date:MIME-Version:Content-Type:Content-Transfer-Encoding"; dkim=pass header.s=mte1 header.d=vates.tech header.i="teddy.astie@vates.tech" header.h="From:Subject:To:Cc:Message-Id:In-Reply-To:References:Feedback-ID:Date:MIME-Version:Content-Type:Content-Transfer-Encoding"
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=mandrillapp.com;
	s=mte1; t=1776259937; x=1776529937;
	bh=cDN1jWQB46rVs3zOCKAJTcEcv7n7xu0idZzLK6Twz+k=;
	h=From:Subject:To:Cc:Message-Id:In-Reply-To:References:Feedback-ID:
	 Date:MIME-Version:Content-Type:Content-Transfer-Encoding:CC:Date:
	 Subject:From;
	b=b7YKXzwBRqXevTTdluknHhPQVsV4/0GoTs6tYB6Fl1/uxvl6Il6b+bvwDmz9w4DKS
	 1ASvxd8tvRDh7cED8IQQci6fjhrNwua4ceUfLUM2pgU/fn2GHfIVaqJ3CcMbA7OJdW
	 BeN/oB+VMZf4Ti008he9IbImrciNxrTbbgbhcZBSFOccWu4MpLgCdrjXuzxiKOyzfY
	 8U6HdKOwesVOGC8/Pdw3nHkTT4N4l7S2M/M8ypcTGKnMNkKvtbiyEXd8MIAJ3OBbSU
	 zjnUAAZcXrnZOGxgaIZYMARWpKZyRHXhmmOWdLIdynJVaJJGcFWk+5/7E2JT09klrq
	 ZkLTRqhpZKv9Q==
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=vates.tech; s=mte1;
	t=1776259937; x=1776520437; i=teddy.astie@vates.tech;
	bh=cDN1jWQB46rVs3zOCKAJTcEcv7n7xu0idZzLK6Twz+k=;
	h=From:Subject:To:Cc:Message-Id:In-Reply-To:References:Feedback-ID:
	 Date:MIME-Version:Content-Type:Content-Transfer-Encoding:CC:Date:
	 Subject:From;
	b=KOXLsXqTIZ85Ipkyr+nrJkb5ifofsFfgCVQK8WLLIfkdBHiwZNLwzRy2Jas7SZx+p
	 ZcH2lCfnXHQbV95qHbyn6H1jYqgHgefHdykZDPl2UUsoEnsnezHTh0MR22Hz2S+UAp
	 YcJUeC9PLgawjOn3Zbkl2MyUtjzT5yXfAgAI6U788QAv/Z0a7n9bxh/7/SqIJShNT7
	 lqM4S8si0zgj1+XiMePpZLjZ36qgfPiwGY+yuq7EKfcAwEr0CYU+1ntzeIfCWDJUkb
	 hmlmigMNhcXdun8dQXzWudpPoMmzebfazBzI2qgeE1UTAsb2gzftQp9CaJMeujZYxy
	 KjFAUVnNyuFAg==
From: "Teddy Astie" <teddy.astie@vates.tech>
Subject: =?utf-8?Q?[RFC=20PATCH=203/7]=20common:=20Introduce=20needs=5Ftlb=5Fflush=20vcpu=20field?=
X-Mailer: git-send-email 2.52.0
X-Bm-Disclaimer: Yes
X-Bm-Milter-Handled: 4ffbd6c1-ee69-4e1b-aabd-f977039bd3e2
X-Bm-Transport-Timestamp: 1776259936778
To: xen-devel@lists.xenproject.org
Cc: "Teddy Astie" <teddy.astie@vates.tech>, "Dario Faggioli" <dfaggioli@suse.com>, "Juergen Gross" <jgross@suse.com>, "George Dunlap" <gwd@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=20Pau=20Monn=C3=A9?=" <roger.pau@citrix.com>, "Stefano Stabellini" <sstabellini@kernel.org>
Message-Id: <76d570a1b444a0bf2308389d9ed8bef8878b0c96.1776259594.git.teddy.astie@vates.tech>
In-Reply-To: <cover.1776259594.git.teddy.astie@vates.tech>
References: <cover.1776259594.git.teddy.astie@vates.tech>
X-Native-Encoded: 1
X-Report-Abuse: =?UTF-8?Q?Please=20forward=20a=20copy=20of=20this=20message,=20including=20all=20headers,=20to=20abuse@mandrill.com.=20You=20can=20also=20report=20abuse=20here:=20https://mandrillapp.com/contact/abuse=3Fid=3D30504962.58b0a3bb1a944e24a0083559f9875d46?=
X-Mandrill-User: md_30504962
Feedback-ID: 30504962:30504962.20260415:md
Date: Wed, 15 Apr 2026 13:32:17 +0000
MIME-Version: 1.0
Content-Type: text/plain; charset=utf-8
Content-Transfer-Encoding: 7bit
X-purgate-ID: tlsNG-ebf023/1776261270-B112D51B-F48AC452/0/0
X-purgate-type: clean
X-purgate-size: 1892

This field is meant to be used to schedule a TLB flush on the vCPU
before waking it up. This field can be set from another vCPU at any
time.

Schedule a TLB flush when the vCPU is migrated to another CPU.
This is needed as the vCPU-related TLB entries may be out of sync
with what happened on another core.

Currently, no architecture use this mechanism, but it is meant to
be used as a way to schedule a TLB flush on the vCPU.

Signed-off-by: Teddy Astie <teddy.astie@vates.tech>
---
 xen/common/sched/core.c | 5 +++++
 xen/include/xen/sched.h | 2 ++
 2 files changed, 7 insertions(+)

diff --git a/xen/common/sched/core.c b/xen/common/sched/core.c
index a57d5dd929..f8e615b3af 100644
--- a/xen/common/sched/core.c
+++ b/xen/common/sched/core.c
@@ -1188,7 +1188,12 @@ static void sched_unit_migrate_finish(struct sched_unit *unit)
 
     /* Wake on new CPU. */
     for_each_sched_unit_vcpu ( unit, v )
+    {
+        if ( old_cpu != new_cpu )
+            /* Migrating to another CPU needs TLB flush */
+            v->needs_tlb_flush = true;
         vcpu_wake(v);
+    }
 }
 
 static bool sched_check_affinity_broken(const struct sched_unit *unit)
diff --git a/xen/include/xen/sched.h b/xen/include/xen/sched.h
index 4b8ae21b51..a26c571015 100644
--- a/xen/include/xen/sched.h
+++ b/xen/include/xen/sched.h
@@ -224,6 +224,8 @@ struct vcpu
     bool             defer_shutdown;
     /* VCPU is paused following shutdown request (d->is_shutting_down)? */
     bool             paused_for_shutdown;
+    /* VCPU needs its TLB flushed before waking. */
+    bool             needs_tlb_flush;
     /* VCPU need affinity restored */
     uint8_t          affinity_broken;
 #define VCPU_AFFINITY_OVERRIDE    0x01
-- 
2.52.0



--
Teddy Astie | Vates XCP-ng Developer

XCP-ng & Xen Orchestra - Vates solutions

web: https://vates.tech



From xen-devel-bounces@lists.xenproject.org Wed Apr 15 13:54:35 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 15 Apr 2026 13:54:35 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1282509.1565075 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wD0hL-0005mS-B3; Wed, 15 Apr 2026 13:54:31 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1282509.1565075; Wed, 15 Apr 2026 13:54: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 1wD0hL-0005mK-7b; Wed, 15 Apr 2026 13:54:31 +0000
Received: by outflank-mailman (input) for mailman id 1282509;
 Wed, 15 Apr 2026 13:54:30 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <bounce-md_30504962.69df935d.v1-7a1d26ad580a45489050d865f5dd3455@bounce.vates.tech>)
 id 1wD0hK-0005m8-3y
 for xen-devel@lists.xenproject.org; Wed, 15 Apr 2026 13:54:30 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wD0hJ-002UaC-Gn
 for xen-devel@lists.xenproject.org; Wed, 15 Apr 2026 15:54:29 +0200
Received: from [10.42.69.6] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1) (envelope-from
 <bounce-md_30504962.69df935d.v1-7a1d26ad580a45489050d865f5dd3455@bounce.vates.tech>)
 id 69df988c-2eae-0a2a0a5409dd-0a2a4506a5c2-38
 for <xen-devel@lists.xenproject.org>; Wed, 15 Apr 2026 15:54:29 +0200
Received: from [198.2.187.1] (helo=mail187-1.suw11.mandrillapp.com)
 by tlsNG-16d1c6.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.0)
 (envelope-from
 <bounce-md_30504962.69df935d.v1-7a1d26ad580a45489050d865f5dd3455@bounce.vates.tech>)
 id 69df9894-0df0-0a2a45060019-c602bb019b01-3
 for <xen-devel@lists.xenproject.org>; Wed, 15 Apr 2026 15:54:29 +0200
Received: from pmta09.mandrill.prod.suw01.rsglab.com (localhost [127.0.0.1])
 by mail187-1.suw11.mandrillapp.com (Mailchimp) with ESMTP id 4fwhrs2rTkzBsbNWF
 for <xen-devel@lists.xenproject.org>; Wed, 15 Apr 2026 13:32:13 +0000 (GMT)
Received: from [37.26.189.201] by mandrillapp.com id
 7a1d26ad580a45489050d865f5dd3455; Wed, 15 Apr 2026 13:32: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=mte1 header.d=mandrillapp.com header.i="@mandrillapp.com" header.h="From:Subject:To:Cc:Message-Id:Feedback-ID:Date:MIME-Version:Content-Type:Content-Transfer-Encoding"; dkim=pass header.s=mte1 header.d=vates.tech header.i="teddy.astie@vates.tech" header.h="From:Subject:To:Cc:Message-Id:Feedback-ID:Date:MIME-Version:Content-Type:Content-Transfer-Encoding"
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=mandrillapp.com;
	s=mte1; t=1776259933; x=1776529933;
	bh=eaNab+1rc2BcfVbepkQ2ytNtOfdi2ILkULRqAk1y38E=;
	h=From:Subject:To:Cc:Message-Id:Feedback-ID:Date:MIME-Version:
	 Content-Type:Content-Transfer-Encoding:CC:Date:Subject:From;
	b=0LSKHwi5OD/KFEMho3TAYLAo49v4xNxE/gGa3VppnR90vwVIeycGZGR+8KJYv41cW
	 7KeSIY1OtAqkmMW8ReaACNmZPoSX6EOT7xIiC2q4aFBy9iPDbm+a6fkn3sTP+lU7TI
	 8SnihsnQI3VSAvGeyQDdgOKs0NHZtolSmP+K869hyC/z9VuErqJse1xoTwsmFzA/du
	 thjaeh/JFR6f4pIYiHTNGCvxWzf7Y07PmGKt4T5lxHYebgdip1kzZmBjT1KKloPZBK
	 PNQmizKyO6iRWDd35REv8sIVSuEzllndjCtIfR6WCHowUlOWJrXE4glR0o34Jvjnhm
	 cV2ExtaCBGIgw==
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=vates.tech; s=mte1;
	t=1776259933; x=1776520433; i=teddy.astie@vates.tech;
	bh=eaNab+1rc2BcfVbepkQ2ytNtOfdi2ILkULRqAk1y38E=;
	h=From:Subject:To:Cc:Message-Id:Feedback-ID:Date:MIME-Version:
	 Content-Type:Content-Transfer-Encoding:CC:Date:Subject:From;
	b=PnmTODKgc//LggMKpqMw7iWTR+myzszTu9LlC5KJMvO5XDNPczQVz/NPFPmBM97Ba
	 S2XIWqVyYx/EIboX9hEEWxE9vkHLx5liJUQxSa/ZDGE1vFsXYW34f3Hgu2MszunPeF
	 Edai2/ZYM8PELE5eDpO0hDmhCYCusgSGyjTLSDDzEzZZhkkMBPBOTx/wRsCvLyqUXC
	 UdkGtNBtbEpx0pT2ERzKJiDxdvV3xinsbGlWp3E1sbHJ0Pr+dBWpnZdY9c5ceweT8H
	 a8xuG3xbqIH+b0bkVZwL+zWfw31VyCgIY+xI4vVR6VsLfPP3+AeX2iBvkGa0AEj/+7
	 9voKYG15MGCuw==
From: "Teddy Astie" <teddy.astie@vates.tech>
Subject: =?utf-8?Q?[RFC=20PATCH=200/7]=20x86:=20Use=20a=20single=20fixed=20ASID=20per=20domain?=
X-Mailer: git-send-email 2.52.0
X-Bm-Disclaimer: Yes
X-Bm-Milter-Handled: 4ffbd6c1-ee69-4e1b-aabd-f977039bd3e2
X-Bm-Transport-Timestamp: 1776259931711
To: xen-devel@lists.xenproject.org
Cc: "Teddy Astie" <teddy.astie@vates.tech>, "Jan Beulich" <jbeulich@suse.com>, "Andrew Cooper" <andrew.cooper3@citrix.com>, "=?utf-8?Q?Roger=20Pau=20Monn=C3=A9?=" <roger.pau@citrix.com>, "Jason Andryuk" <jason.andryuk@amd.com>, "Anthony PERARD" <anthony.perard@vates.tech>, "Michal Orzel" <michal.orzel@amd.com>, "Julien Grall" <julien@xen.org>, "Stefano Stabellini" <sstabellini@kernel.org>, "Dario Faggioli" <dfaggioli@suse.com>, "Juergen Gross" <jgross@suse.com>, "George Dunlap" <gwd@xenproject.org>, "Tim Deegan" <tim@xen.org>
Message-Id: <cover.1776259594.git.teddy.astie@vates.tech>
X-Native-Encoded: 1
X-Report-Abuse: =?UTF-8?Q?Please=20forward=20a=20copy=20of=20this=20message,=20including=20all=20headers,=20to=20abuse@mandrill.com.=20You=20can=20also=20report=20abuse=20here:=20https://mandrillapp.com/contact/abuse=3Fid=3D30504962.7a1d26ad580a45489050d865f5dd3455?=
X-Mandrill-User: md_30504962
Feedback-ID: 30504962:30504962.20260415:md
Date: Wed, 15 Apr 2026 13:32:13 +0000
MIME-Version: 1.0
Content-Type: text/plain; charset=utf-8
Content-Transfer-Encoding: 7bit
X-purgate-ID: tlsNG-16d1c6/1776261269-5E12E3D8-65004FE7/0/0
X-purgate-type: clean
X-purgate-size: 4934

(ASID can be replaced with VPID for Intel)

This patch series is a reorganized version of [1] though, it share the same goal.
Not a lot of logic remain from v1/v2 [2] and the patch series is structured quite
differently to v3 [1].

Currently in Xen. In order to perform a TLB flush for a guest, we just increment
the ASID, which has the same effect as flushing the TLB. When we run out of ASID,
we flush the entire TLB and start over.
This is done per pCPU, thus the ASID management is done on a per-pCPU basis.

However, AMD SEV requires the ASID to be configured in advance and be unique per
domain as it bound to the encryption key used for the domain.

This patch series propose a new ASID model where a fixed single ASID is attributed
to the domain, thus all vCPU share such ASID. Moreover, the TLB for a vCPU is always
flushed in these conditions :
* the vCPU is migrated to another pCPU
(remote pCPU TLB may be out of sync or lack flushes made previously)
* a different vCPU of the same domain previously ran on this pCPU
(TLB entries comes from the previous vCPU, which may have a different CR3)

Albeit related to a SEV vulnerability, [4] gives more justifications on the needs
of these rules for correctness.

It is also important for making hypervisor-side guest broadcast TLB flushing
realistic, as a single fixed ASID per domain allows a broacast TLB flush to use
such ASID as target.

Moreover, AMD programmer manual also explicitely require this for correctly virtualizing
INVLPGB in guests (through 090h:7 ("Enable INVLPGB/TLBSYNC.") in VMCB) :
> A guest that executes a legal INVLPGB that is not intercepted will have the requested
> ASID field replaced by the current ASID and the valid ASID bit set before doing the
> broadcast invalidation.  Because of its broadcast nature, the ASID field must be global
> and all processors must allocate the same ASID to the same Guest for proper operation.
> Hypervisors that do not support a global ASID must intercept the Guest usage of INVLPGB,
> if enabled, for proper behavior.

In order to avoid making ASID management too complex, transition to only using a fixed ASID
per domain. If no ASID is available (e.g out of ASID or ASID usage is diabled), we use ASID=1
as a placeholder (which is still a valid ASID), and always flush the TLB on context switch
if the vcpu is using ASID=1.

Also add a way to specify a prefered minimum ASID, it is meant to be used later on to avoid
clobbering the low ASID space of SEV-ES and favor allocating ASIDs over that space.

[1] x86/hvm: Introduce Xen-wide ASID allocator
https://lore.kernel.org/xen-devel/cover.1750770621.git.teddy.astie@vates.tech/

[2] x86/hvm: Introduce Xen-wide ASID allocator
https://lore.kernel.org/xen-devel/cover.1723574652.git.vaishali.thakkar@vates.tech/

[4] TLB Poisoning Attacks on AMD Secure Encrypted Virtualization
https://dl.acm.org/doi/epdf/10.1145/3485832.3485876

Teddy Astie (7):
  vmx: Introduce vcpu single context VPID invalidation
  common: Track latest pCPU that ran the vCPU
  common: Introduce needs_tlb_flush vcpu field
  x86: Set v->needs_tlb_flush when needed
  x86/hvm: Flush TLB on vCPU overlaps on the same pCPU
  x86/hvm: Transition to needs_tlb_flush logic, use per-domain ASID
  hvm: Allow specifying a prefered asid minimum

 docs/misc/xen-command-line.pandoc      |   2 +-
 xen/arch/x86/flushtlb.c                |  22 +--
 xen/arch/x86/hvm/asid.c                | 177 +++++++++++--------------
 xen/arch/x86/hvm/emulate.c             |   2 +-
 xen/arch/x86/hvm/hvm.c                 |  25 +++-
 xen/arch/x86/hvm/nestedhvm.c           |   7 +-
 xen/arch/x86/hvm/svm/asid.c            |  67 +++++++---
 xen/arch/x86/hvm/svm/nestedsvm.c       |   2 +-
 xen/arch/x86/hvm/svm/svm.c             |  47 +++++--
 xen/arch/x86/hvm/svm/svm.h             |   4 -
 xen/arch/x86/hvm/vmx/vmcs.c            |   6 +-
 xen/arch/x86/hvm/vmx/vmx.c             |  77 ++++++-----
 xen/arch/x86/hvm/vmx/vvmx.c            |   4 +-
 xen/arch/x86/include/asm/flushtlb.h    |   7 -
 xen/arch/x86/include/asm/hvm/asid.h    |  27 ++--
 xen/arch/x86/include/asm/hvm/domain.h  |   1 +
 xen/arch/x86/include/asm/hvm/hvm.h     |  15 +--
 xen/arch/x86/include/asm/hvm/svm.h     |   5 +
 xen/arch/x86/include/asm/hvm/vcpu.h    |  10 +-
 xen/arch/x86/include/asm/hvm/vmx/vmx.h |  23 +++-
 xen/arch/x86/mm/hap/hap.c              |   9 +-
 xen/arch/x86/mm/p2m.c                  |   7 +-
 xen/arch/x86/mm/paging.c               |   2 +-
 xen/arch/x86/mm/shadow/multi.c         |  12 +-
 xen/common/domain.c                    |   8 ++
 xen/common/sched/core.c                |   5 +
 xen/include/xen/sched.h                |   6 +
 27 files changed, 319 insertions(+), 260 deletions(-)

-- 
2.52.0



--
Teddy Astie | Vates XCP-ng Developer

XCP-ng & Xen Orchestra - Vates solutions

web: https://vates.tech



From xen-devel-bounces@lists.xenproject.org Wed Apr 15 13:54:37 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 15 Apr 2026 13:54:37 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1282512.1565094 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wD0hR-0006HS-TD; Wed, 15 Apr 2026 13:54:37 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1282512.1565094; Wed, 15 Apr 2026 13:54: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 1wD0hR-0006HJ-Oy; Wed, 15 Apr 2026 13:54:37 +0000
Received: by outflank-mailman (input) for mailman id 1282512;
 Wed, 15 Apr 2026 13:54:37 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <bounce-md_30504962.69df9366.v1-4a8938bac7ba4f1da0b2eca74ce48353@bounce.vates.tech>)
 id 1wD0hR-0006Gm-6I
 for xen-devel@lists.xenproject.org; Wed, 15 Apr 2026 13:54:37 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wD0hQ-00AiEv-J7
 for xen-devel@lists.xenproject.org; Wed, 15 Apr 2026 15:54:36 +0200
Received: from [10.42.69.10] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1) (envelope-from
 <bounce-md_30504962.69df9366.v1-4a8938bac7ba4f1da0b2eca74ce48353@bounce.vates.tech>)
 id 69df9880-e002-0a2a0a5209dd-0a2a450ab858-42
 for <xen-devel@lists.xenproject.org>; Wed, 15 Apr 2026 15:54:36 +0200
Received: from [198.2.187.1] (helo=mail187-1.suw11.mandrillapp.com)
 by tlsNG-4011c0.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.0)
 (envelope-from
 <bounce-md_30504962.69df9366.v1-4a8938bac7ba4f1da0b2eca74ce48353@bounce.vates.tech>)
 id 69df989b-ee98-0a2a450a0019-c602bb012713-3
 for <xen-devel@lists.xenproject.org>; Wed, 15 Apr 2026 15:54:36 +0200
Received: from pmta09.mandrill.prod.suw01.rsglab.com (localhost [127.0.0.1])
 by mail187-1.suw11.mandrillapp.com (Mailchimp) with ESMTP id 4fwhs210V9zBsbVnk
 for <xen-devel@lists.xenproject.org>; Wed, 15 Apr 2026 13:32:22 +0000 (GMT)
Received: from [37.26.189.201] by mandrillapp.com id
 4a8938bac7ba4f1da0b2eca74ce48353; Wed, 15 Apr 2026 13:32: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=mte1 header.d=mandrillapp.com header.i="@mandrillapp.com" header.h="From:Subject:To:Cc:Message-Id:In-Reply-To:References:Feedback-ID:Date:MIME-Version:Content-Type:Content-Transfer-Encoding"; dkim=pass header.s=mte1 header.d=vates.tech header.i="teddy.astie@vates.tech" header.h="From:Subject:To:Cc:Message-Id:In-Reply-To:References:Feedback-ID:Date:MIME-Version:Content-Type:Content-Transfer-Encoding"
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=mandrillapp.com;
	s=mte1; t=1776259942; x=1776529942;
	bh=BuRU+2TlBcBTTb5Q+25wdwHHW2PQBda97rbEBk2HBMg=;
	h=From:Subject:To:Cc:Message-Id:In-Reply-To:References:Feedback-ID:
	 Date:MIME-Version:Content-Type:Content-Transfer-Encoding:CC:Date:
	 Subject:From;
	b=apafzCn1D7dkgCAP+0AjQlCovSuawJ7U/aO/D63ik+eRQX5BuBCfKkFM0hys+l4MS
	 yCt7cCc2xU91kZ48za/Eu+Rn3C7g8CtdCiJ+xDH64IcWxSSMNYIpfTh7cmYy4dx6sv
	 nuoB4tDfEYzJakMU6ziW2flgBRMnIVA08FWOcLEGgQJeNAxs88j78lJHJrwv/LTOzu
	 09LdE9FaEi6u5x+a0MEfU9b9d19PrkUrG6y2msQalKXtW7VJq2iffuGWM2VIzHCiuT
	 5u+OUB1dTUZ06cd1sggMHedQF7NabDHv/rAhdSba94ppi8ZGMiGAHHNsdzS93+QctT
	 GDh1mcioHVj0Q==
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=vates.tech; s=mte1;
	t=1776259942; x=1776520442; i=teddy.astie@vates.tech;
	bh=BuRU+2TlBcBTTb5Q+25wdwHHW2PQBda97rbEBk2HBMg=;
	h=From:Subject:To:Cc:Message-Id:In-Reply-To:References:Feedback-ID:
	 Date:MIME-Version:Content-Type:Content-Transfer-Encoding:CC:Date:
	 Subject:From;
	b=hI2Bdf1HB2413BPp4DlZ3xzYuvIoZXqhgjQwJTZT95WWdYYyvv1uTmZrqBSxwG/kV
	 gbi9lsO0BQLwyIJHb00h2ces0yaBJhWBuL5CZhc5X/s94EHKXF87eo2Pv2vlzwOJQ4
	 1sWyBN4sdrsibmP2RnQyaSX/1V0364bh+XG2+ZtAvmvJyOl4QusgTISD1Hsq7q29um
	 4HnSZu1I5qN6AJRSmdjR+0N5PvU0Y+gOzDtmw/FIai6aKYW8vOjrxiIhjYCvtBj+37
	 gxRIl/8BP10jHRKB/0soWoYwi9PCDO+cKdDvp8Ilwz+RIiml/H7UuvEJznFP4Yifgl
	 irKu+6nyNL52A==
From: "Teddy Astie" <teddy.astie@vates.tech>
Subject: =?utf-8?Q?[RFC=20PATCH=205/7]=20x86/hvm:=20Flush=20TLB=20on=20vCPU=20overlaps=20on=20the=20same=20pCPU?=
X-Mailer: git-send-email 2.52.0
X-Bm-Disclaimer: Yes
X-Bm-Milter-Handled: 4ffbd6c1-ee69-4e1b-aabd-f977039bd3e2
X-Bm-Transport-Timestamp: 1776259941217
To: xen-devel@lists.xenproject.org
Cc: "Teddy Astie" <teddy.astie@vates.tech>, "Jan Beulich" <jbeulich@suse.com>, "Andrew Cooper" <andrew.cooper3@citrix.com>, "=?utf-8?Q?Roger=20Pau=20Monn=C3=A9?=" <roger.pau@citrix.com>, "Jason Andryuk" <jason.andryuk@amd.com>
Message-Id: <f70c32a1cf28a5972a3f237f0aab7382b19234dc.1776259594.git.teddy.astie@vates.tech>
In-Reply-To: <cover.1776259594.git.teddy.astie@vates.tech>
References: <cover.1776259594.git.teddy.astie@vates.tech>
X-Native-Encoded: 1
X-Report-Abuse: =?UTF-8?Q?Please=20forward=20a=20copy=20of=20this=20message,=20including=20all=20headers,=20to=20abuse@mandrill.com.=20You=20can=20also=20report=20abuse=20here:=20https://mandrillapp.com/contact/abuse=3Fid=3D30504962.4a8938bac7ba4f1da0b2eca74ce48353?=
X-Mandrill-User: md_30504962
Feedback-ID: 30504962:30504962.20260415:md
Date: Wed, 15 Apr 2026 13:32:22 +0000
MIME-Version: 1.0
Content-Type: text/plain; charset=utf-8
Content-Transfer-Encoding: 7bit
X-purgate-ID: tlsNG-4011c0/1776261276-0FF430B1-C81FA595/0/0
X-purgate-type: clean
X-purgate-size: 2201

When using the same ASID/VPID for all vCPU of a domain, we need
to make sure that when context switching between 2 vCPUs of the
same domain on the same pCPU don't miss a TLB flush, as they
may be using different CR3.

Flush the TLB if the latest vCPU that ran on this core differ
to the one we're currently on.

Signed-off-by: Teddy Astie <teddy.astie@vates.tech>
---
Would it be preferable to move it to common code (or shared logic for x86).

 xen/arch/x86/hvm/svm/svm.c | 8 ++++++++
 xen/arch/x86/hvm/vmx/vmx.c | 7 +++++++
 2 files changed, 15 insertions(+)

diff --git a/xen/arch/x86/hvm/svm/svm.c b/xen/arch/x86/hvm/svm/svm.c
index 64c08432fd..8714fb18ec 100644
--- a/xen/arch/x86/hvm/svm/svm.c
+++ b/xen/arch/x86/hvm/svm/svm.c
@@ -981,6 +981,14 @@ void asmlinkage svm_vmenter_helper(void)
 
     svm_sync_vmcb(curr, vmcb_needs_vmsave);
 
+    /**
+     * Check if we were the latest vCPU of this domain that ran on this pCPU.
+     * Flush the TLB if it is not, as the TLB entries are the ones from the previous
+     * vCPU. vCPU migration from a CPU to another always imply a TLB flush.
+     */
+    if ( curr->domain->latest_vcpu[cpu] != curr->vcpu_id )
+        curr->needs_tlb_flush = true;
+
     curr->domain->latest_vcpu[cpu] = curr->vcpu_id;
 
     vmcb->rax = regs->rax;
diff --git a/xen/arch/x86/hvm/vmx/vmx.c b/xen/arch/x86/hvm/vmx/vmx.c
index 0e4f9f9c3d..dceff2f221 100644
--- a/xen/arch/x86/hvm/vmx/vmx.c
+++ b/xen/arch/x86/hvm/vmx/vmx.c
@@ -4980,6 +4980,13 @@ bool asmlinkage vmx_vmenter_helper(const struct cpu_user_regs *regs)
 
     if ( unlikely(need_flush) )
         vpid_sync_all();
+    /**
+     * Check if we were the latest vCPU of this domain that ran on this pCPU.
+     * Flush the TLB if it is not, as the TLB entries are the ones from the previous
+     * vCPU. vCPU migration from a CPU to another always imply a TLB flush.
+     */
+    if ( currd->latest_vcpu[cpu] != curr->vcpu_id )
+        curr->needs_tlb_flush = true;
 
     currd->latest_vcpu[cpu] = curr->vcpu_id;
 
-- 
2.52.0



--
Teddy Astie | Vates XCP-ng Developer

XCP-ng & Xen Orchestra - Vates solutions

web: https://vates.tech



From xen-devel-bounces@lists.xenproject.org Wed Apr 15 13:55:27 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 15 Apr 2026 13:55:27 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1282537.1565102 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wD0iE-0007FR-55; Wed, 15 Apr 2026 13:55:26 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1282537.1565102; Wed, 15 Apr 2026 13:55: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 1wD0iE-0007FK-1n; Wed, 15 Apr 2026 13:55:26 +0000
Received: by outflank-mailman (input) for mailman id 1282537;
 Wed, 15 Apr 2026 13:55:24 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <Luca.Fancellu@arm.com>) id 1wD0iC-0007F0-75
 for xen-devel@lists.xenproject.org; Wed, 15 Apr 2026 13:55:24 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wD0iB-00AiWO-Jw
 for xen-devel@lists.xenproject.org; Wed, 15 Apr 2026 15:55:23 +0200
Received: from [10.42.69.6] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <Luca.Fancellu@arm.com>)
 id 69df98b8-2eae-0a2a0a5409dd-0a2a45069a60-42
 for <xen-devel@lists.xenproject.org>; Wed, 15 Apr 2026 15:55:22 +0200
Received: from [52.101.69.66]
 (helo=AM0PR83CU005.outbound.protection.outlook.com)
 by tlsNG-16d1c6.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.0)
 (envelope-from <Luca.Fancellu@arm.com>)
 id 69df98ca-0df0-0a2a45060019-346545429e43-3
 for <xen-devel@lists.xenproject.org>; Wed, 15 Apr 2026 15:55:22 +0200
Received: from DU2PR04CA0009.eurprd04.prod.outlook.com (2603:10a6:10:3b::14)
 by DU2PR08MB10280.eurprd08.prod.outlook.com (2603:10a6:10:491::19) with
 Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9745.41; Wed, 15 Apr
 2026 13:55:16 +0000
Received: from DB1PEPF000509EF.eurprd03.prod.outlook.com
 (2603:10a6:10:3b:cafe::84) by DU2PR04CA0009.outlook.office365.com
 (2603:10a6:10:3b::14) with Microsoft SMTP Server (version=TLS1_3,
 cipher=TLS_AES_256_GCM_SHA384) id 15.20.9769.48 via Frontend Transport; Wed,
 15 Apr 2026 13:55:15 +0000
Received: from outbound-uk1.az.dlp.m.darktrace.com (4.158.2.129) by
 DB1PEPF000509EF.mail.protection.outlook.com (10.167.242.73) with Microsoft
 SMTP Server (version=TLS1_3, cipher=TLS_AES_256_GCM_SHA384) id 15.20.9769.17
 via Frontend Transport; Wed, 15 Apr 2026 13:55:15 +0000
Received: from DU2PR08MB7272.eurprd08.prod.outlook.com (2603:10a6:10:2d7::16)
 by PA4PR08MB5950.eurprd08.prod.outlook.com (2603:10a6:102:e0::22)
 with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9769.48; Wed, 15 Apr
 2026 13:54:13 +0000
Received: from DU2PR08MB7272.eurprd08.prod.outlook.com
 ([fe80::5d34:206f:373:a323]) by DU2PR08MB7272.eurprd08.prod.outlook.com
 ([fe80::5d34:206f:373:a323%6]) with mapi id 15.20.9769.046; Wed, 15 Apr 2026
 13:54: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=arm.com header.i="@arm.com" header.h="From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck"; dkim=pass header.s=selector1 header.d=arm.com header.i="@arm.com" header.h="From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck"
ARC-Seal: i=2; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=pass;
 b=QnAtdtz5+lurcmZlwob5lN6btqapw6svmikI54YmOZWwy4l4Ztvw7s/bYEnT3HfAvZtl2Yc+bNhs4lwThMaJo3QikCLahowi7xVH0Oz9EVl8ou+I6z1ETgPZCg1dNkpilAygf8aC50jaglOrPxPvqHc2JFAoPhVzjlLYlcGBWZWCsAMOolOjN+thJvnGWqJGz3h1Fw3rZlWqz8bY9OJV6EsZljoPewynDHr7nbAyJ7rWOoubKbv6rj34MyYLsjqkZfeCM0u/vEWaVvvqrJqjsV2tY7qZwDlR27+CtQBCL4EsdHu4cTOXkNaVCEqkPQFXKP2TXOx7D6btHVrBA/fWfA==
ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com;
 s=arcselector10001;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1;
 bh=ixw4pxK1fDBPLFHhWF2pFWbJoAbbrbz1Drpqzf/0oNg=;
 b=jQs/xqM9hcvz9N46f7fZzptZ2O/D39902jWK6XioJjMqw7crFAKxVKndvgHYroFnDiFy2LwCm7kCjMUhl+lxC/ZvI0w+81XxEg3ZRt5LM30nBbLJJkVof+yTLzJcg1CO3SaxT8WhiHWr4Yx//OXbEfyDnbbIyM/CVsIfmwdaBaQ9mEz/NwJm2rIiF9U+el0LnNvGFnMvn1nonq479l6n1ANtMYtb6knsaw7J/PKq1XCxnSfOi7IIOwu16Z2NeSbf0e65upNj6M5sYdvgjHa5XFT3gre01MtRExl7jJBXWAiEZ8yTSvjC8goOCBWOopWbioz8wzn1Wm5P0ICqsHq+5Q==
ARC-Authentication-Results: i=2; mx.microsoft.com 1; spf=pass (sender ip is
 4.158.2.129) smtp.rcpttodomain=epam.com smtp.mailfrom=arm.com; dmarc=pass
 (p=none sp=none pct=100) action=none header.from=arm.com; dkim=pass
 (signature was verified) header.d=arm.com; arc=pass (0 oda=1 ltdi=1
 spf=[1,1,smtp.mailfrom=arm.com] dkim=[1,1,header.d=arm.com]
 dmarc=[1,1,header.from=arm.com])
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=arm.com; s=selector1;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck;
 bh=ixw4pxK1fDBPLFHhWF2pFWbJoAbbrbz1Drpqzf/0oNg=;
 b=GweTJdAVYy2uApPIh8EEdoCnf79bQSM9hfiE5Ai+mZiA/LhVzrQFHqcifosI+lvRY9fAGbOCXSbEany1Q0dQQLGpGOb7W8eilZJkuxcgecZdcaG7g95X85pJuJGNRttQJM/hKEsMfaX0fIYOe6RbcAQrapbAdQr1z8RcCQ9Q7hU=
X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 4.158.2.129)
 smtp.mailfrom=arm.com; dkim=pass (signature was verified)
 header.d=arm.com;dmarc=pass action=none header.from=arm.com;
Received-SPF: Pass (protection.outlook.com: domain of arm.com designates
 4.158.2.129 as permitted sender) receiver=protection.outlook.com;
 client-ip=4.158.2.129; helo=outbound-uk1.az.dlp.m.darktrace.com; pr=C
ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none;
 b=xAOTJYTRw8fMviz0zSJPkJmD0i7aVs2+qeBBUz9jhGDcDPEu/vS+wLKmB3qM3PUXyGpwCWF/0sEoAJkjR5cvAt7YZQqYTmBtBvRGCNxc3SCJkTW09ZruIC6r63PkWmnYdsdRVTOU1i+vn02L99iUcni3n+r2quQtQkQae3rluIsfG840uply0GnZzGU/pAETBeUSXXru0OCC4egnuEmlDKKvv25UCBTi9qx6imSx4sKUyjqQZuY/8vY0Aa1OVqUzHtJ65GmeWn+SR3SvLK9ViR4oW0TP/98w0ZlihjaKcwr3wSGTaiNdWmOHx/hStHYF+16HV8SZSWH7ednnBpPUPQ==
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com;
 s=arcselector10001;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1;
 bh=ixw4pxK1fDBPLFHhWF2pFWbJoAbbrbz1Drpqzf/0oNg=;
 b=iIn1kO0T4Q5muZ2qFnXD7fLdOmbNOyo6u80iUVPWJQk2zt0BS8d76yX1b/iBZIHDCedAH70vaVofEy/CIMhkRO9QpoGrDyAbP/sCdmqZmYNHNqs9d/L0qzhOnxC9NuQy1zTAKRLHrvpA2ZOdLSmUcnBboUz5SU66OqXbGW4KMdQ8dNF2nC4UFa4XlYRbnmukzCERugzacqw6D6E6x24vTwXh6XG/BT3upSXpPdgbuUILx0WKH9sq81e5cM4lvC3UxyVCXnc1N1VAQqpzLDsM2Fa8s3BE334F5cnPA1fG2SYPuh4I9M9p9tHjTnc177ZvSTaKW2qdmI1NEwye8GyhyQ==
ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass
 smtp.mailfrom=arm.com; dmarc=pass action=none header.from=arm.com; dkim=pass
 header.d=arm.com; arc=none
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=arm.com; s=selector1;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck;
 bh=ixw4pxK1fDBPLFHhWF2pFWbJoAbbrbz1Drpqzf/0oNg=;
 b=GweTJdAVYy2uApPIh8EEdoCnf79bQSM9hfiE5Ai+mZiA/LhVzrQFHqcifosI+lvRY9fAGbOCXSbEany1Q0dQQLGpGOb7W8eilZJkuxcgecZdcaG7g95X85pJuJGNRttQJM/hKEsMfaX0fIYOe6RbcAQrapbAdQr1z8RcCQ9Q7hU=
From: Luca Fancellu <Luca.Fancellu@arm.com>
To: Mykyta Poturai <Mykyta_Poturai@epam.com>, Stewart Hildebrand
	<stewart.hildebrand@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>, Michal Orzel <michal.orzel@amd.com>,
	Volodymyr Babchuk <Volodymyr_Babchuk@epam.com>, Rahul Singh
	<Rahul.Singh@arm.com>
Subject: Re: [PATCH v2] xen/arm: smmuv3: Add support for removing devices
Thread-Topic: [PATCH v2] xen/arm: smmuv3: Add support for removing devices
Thread-Index: AQHczBC6OGp5DbFlyEyismnWkcVdqLXgJmgA
Date: Wed, 15 Apr 2026 13:54:12 +0000
Message-ID: <8CF45F67-B635-478D-9623-A69956FFEC5B@arm.com>
References:
 <da128e8fb41add9efc30860612786cd62f21addc.1776168699.git.mykyta_poturai@epam.com>
In-Reply-To:
 <da128e8fb41add9efc30860612786cd62f21addc.1776168699.git.mykyta_poturai@epam.com>
Accept-Language: en-GB, en-US
Content-Language: en-US
X-MS-Has-Attach:
X-MS-TNEF-Correlator:
x-mailer: Apple Mail (2.3826.700.81.1.6)
Authentication-Results-Original: dkim=none (message not signed)
 header.d=none;dmarc=none action=none header.from=arm.com;
x-ms-traffictypediagnostic:
	DU2PR08MB7272:EE_|PA4PR08MB5950:EE_|DB1PEPF000509EF:EE_|DU2PR08MB10280:EE_
X-MS-Office365-Filtering-Correlation-Id: 8debb3a7-9276-4798-bf6f-08de9af69f57
x-checkrecipientrouted: true
nodisclaimer: true
X-MS-Exchange-SenderADCheck: 1
X-MS-Exchange-AntiSpam-Relay: 0
X-Microsoft-Antispam-Untrusted:
 BCL:0;ARA:13230040|376014|1800799024|366016|38070700021|18002099003|56012099003|22082099003;
X-Microsoft-Antispam-Message-Info-Original:
 R42cZaqUvrAyQlGdmAemoK8YcZsI+rq+NmeodvdcnPDNXLr6gaRsI10f+jjhV5o6lS4sm2GpaGcbr3jrnna/Cgft+stuJNoIbXcwBxKwpsfmkSkRToMuY7so/r+xaKKRjs+XeSMZhbwr9sv8HS9D7mCSQtRguxjhi2zERJUwwMgrihhAp+wfXEeeYSp04Rf7/bmipha+hqCV8/EbIirbETkS0hhCbHojwctiJ0S0notwMnqW6rIMQTxgrod2VQ/ZvYR1iEvLPmEMlhfa/EWTaX/pVNtwqKMLV0XTBTm4VXZLHmyr5y89Cbp4cOIkeiFSsAlfmXOZhqpFCPjvcrPamkBthnBGWpyFVvcNBnjk8x7+bVCV9iLOpqYHXIE2ZU+EXvoGGFal09oXj/mLy40oYFddIWYPSFUdKL1t01+Fl66vaH9TycMSpqDQb4VvlZhHuBGyDdo/8MYCoYDEpxX9HGi3R0eCsdnAOn+uJJorVKQeXSxdjxiCUaq5+Tu2iHtUKeCVSOoYgxAtNlhzEj3LgHemmBso9QQg7EkHqIDhskfI7XJt0h8LIM8vrJUcjHW24OYdLXv1lP6SI5oZHC8g3aMnPc52srjjkHb2vvbyT2jEUhrO5LGLJZSGZ8bZEpCeFj8BWaTozIU1YObdg4P66lJujXNdykb6nFQLQHm+cWaUEBYSgXn7+dxO3D/8QO5Ym8n0ag7jgJq3olnTEbBSMwW3ZrqKjgkwawa07Ng7SdFFNlbgOND0H8XgdPPvAgwk
X-Forefront-Antispam-Report-Untrusted:
 CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:DU2PR08MB7272.eurprd08.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(376014)(1800799024)(366016)(38070700021)(18002099003)(56012099003)(22082099003);DIR:OUT;SFP:1101;
Content-Type: text/plain; charset="utf-8"
Content-ID: <F34427B6B1A71148BA4CA0412031D797@eurprd08.prod.outlook.com>
Content-Transfer-Encoding: base64
MIME-Version: 1.0
X-Exchange-RoutingPolicyChecked:
 sHIqLigVhujf0LcmlGJ6uMlf3QjcicGxCk+4oEda0vm7oXDraIbJlUJp2KLq4SWmmjt3WeIi4NJbMGio7P9sxbN/Zxh+l0a1fqxGGD9UwXcC611x+5Wd/lpXto2CTxSmSLIWd4mslosDzNilKVnFBwE1WmI7zGXHCYyHMi8VXrujLx9n+KXSyDuhrBA1nbnpDWwiixlelCtbxlDHP0aJdioxXvMiAKS76zsCA5XbDtPz7t4y3EFhl+VXDeoFhNwJBwxVZRdVHRw1LSeW188QrEa2xc/iqHNUc/UTeE9O68NRAjDdQhvJcNZNnhIl7N3XTN51pfVreTfzpoo3xnBQIg==
X-MS-Exchange-Transport-CrossTenantHeadersStamped: PA4PR08MB5950
X-EOPAttributedMessage: 0
X-MS-Exchange-Transport-CrossTenantHeadersStripped:
 DB1PEPF000509EF.eurprd03.prod.outlook.com
X-MS-PublicTrafficType: Email
X-MS-Office365-Filtering-Correlation-Id-Prvs:
	39460ed1-37d4-40d7-5fa2-08de9af679df
X-Microsoft-Antispam:
	BCL:0;ARA:13230040|36860700016|35042699022|376014|14060799003|1800799024|82310400026|18002099003|56012099003|22082099003;
X-Microsoft-Antispam-Message-Info:
	W14+3C/i0/jaTo42g0k2nzPNpu0e8S2c3xcTvUaiu/aW/SzT5lSoSNhbh7RANaWpEeHLyPTDioRLUtiOAzwq3rmyDdTQiMgffhDM7/S2D1FKFfU2gMcv1Y5Wz3FdEsMOT+kcoQYPOFu3xB/VXg0AQz7T2jZVsVVcgFxwrXMNDtWs+1WEhTUtLoqmBJPg2g6iAvEpFQH07QyyqunP2ScsW8NS9WmRQOwSWycnymIgejZUCL8o5G2GMUWp1z5k6WQzBBw4fix9OF3gPN25uGFwyRyURMngtXiPeHC0L6XdSbtSl93kJbtoYTfB1bRP/wv/dX9l0xSP6gMpYgQ0hAFXrJfaA2ktKRCM03Fczct/909KFDJbUYdvnRgFbCj7UmtxrNjYrWRFaKe2CdbxincFlPvP6i8O2rjNri6RN6XthekPUbfOTdn+Eo24PLjRgJZJi4bqLYxGsJWKp5yujq1aYUYLaXgwWg52M9mSVrLN4a8kWKkk0Z0wVyLfVwYLSGTWin9W8rFwUMjQS1NX6l0koYYS2zb598i090JjuDU3dFv7GozQ4A8HT9nEyvBGSawf1hwjeCoPFGw5vlp75m3zq/duefZXnf7qdf+jYFNKaelpcWKIv2XDVpuRmsJb726Mxn3ek4osYRqdX6e8StfNAppgpJvHuiczsoHKFLJ+lbtAhttHtAQV8IJ99W3ZhcvamjXuEZXTGH4jmaHJPXFZofz4uvjNk4rIfPoZpSCEdIk=
X-Forefront-Antispam-Report:
	CIP:4.158.2.129;CTRY:GB;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:outbound-uk1.az.dlp.m.darktrace.com;PTR:InfoDomainNonexistent;CAT:NONE;SFS:(13230040)(36860700016)(35042699022)(376014)(14060799003)(1800799024)(82310400026)(18002099003)(56012099003)(22082099003);DIR:OUT;SFP:1101;
X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1
X-MS-Exchange-AntiSpam-MessageData-0:
	xLFcTu2v/CCgCAU/0eoZB0elylc2aNztO7EgdZWCoy9k8vjl8UdDrDSNv/Sb7U5H7MUVvX89rj3i+4B2Ll4uc0CabGsR0Z3PP7u/nE+Ic9RsYIH3aMPySlAGtFMcEMEmPea3Cl88DD2b0RJyYqywgZfZcJxe8dSUa0+2n0Yz01n1eKFS37tXg1s5VPVkEKDQLgwRwPNc5smGIxOQ3cbKneXvD98vFj+GG9nLexM9V78MRX2U1DcCJgx2NLkhSBQYKCB/AvGRvc75/2qeREdWOhC1ko6nPnBbCL2xnBnN2Kulp9l2PA5XsEdwAzuA/DyZMZcK4w/FoSAEFq6SbF9DuqDVTFnfdLNyquKfSzByfdo1pHLbaQN94UPmvMzY3Cosl6zJITg9hRK/KTxKN+w+REO8+Rv/S9YFjJc1T8dL1SLhrQoO/MKHk6h3sxSXoKrP
X-OriginatorOrg: arm.com
X-MS-Exchange-CrossTenant-OriginalArrivalTime: 15 Apr 2026 13:55:15.8027
 (UTC)
X-MS-Exchange-CrossTenant-Network-Message-Id: 8debb3a7-9276-4798-bf6f-08de9af69f57
X-MS-Exchange-CrossTenant-Id: f34e5979-57d9-4aaa-ad4d-b122a662184d
X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=f34e5979-57d9-4aaa-ad4d-b122a662184d;Ip=[4.158.2.129];Helo=[outbound-uk1.az.dlp.m.darktrace.com]
X-MS-Exchange-CrossTenant-AuthSource:
	DB1PEPF000509EF.eurprd03.prod.outlook.com
X-MS-Exchange-CrossTenant-AuthAs: Anonymous
X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem
X-MS-Exchange-Transport-CrossTenantHeadersStamped: DU2PR08MB10280
X-purgate-ID: tlsNG-16d1c6/1776261322-654513D8-680A911B/0/0
X-purgate-type: clean
X-purgate-size: 5538

SGkgTXlreXRhLA0KDQo+IE9uIDE0IEFwciAyMDI2LCBhdCAxNDoxNSwgTXlreXRhIFBvdHVyYWkg
PE15a3l0YV9Qb3R1cmFpQGVwYW0uY29tPiB3cm90ZToNCj4gDQo+IEFsbG93IGZvciByZW1vdmlu
ZyBkZXZpY2VzIGZyb20gU01NVXYzLiBhcm1fc21tdV9kZWFzc2lnbl9kZXYgaGFuZGxlcw0KPiBt
b3N0IG9mIHRoZSB3b3JrIGJ5IGRpc2FibGluZyBBVFMgYW5kIHplcm9pbmcgU1RFcy4gQWRkaXRp
b25hbGx5LCB1bnNldA0KPiB0aGUgZHRfZGV2aWNlX2lzX3Byb3RlY3RlZCBmbGFnIGFuZCBmcmVl
IG5vIGxvbmdlciBuZWVkZWQgc21tdV9tYXN0ZXIuDQo+IA0KPiBSZXdvcmsgZHRfZGV2aWNlX3Nl
dF9wcm90ZWN0ZWQgdG8gYWNjZXB0IGEgYm9vbGVhbiBwYXJhbWV0ZXIsIHVwZGF0ZQ0KPiBjYWxs
c2l0ZXMuDQo+IA0KDQpTaG91bGQgLi4uDQoNCj4gVGVzdGVkIG9uIFFFTVUgd2l0aCBTUklPViBz
ZXJpZXNbMV0gYnkgcmVwZWF0ZWRseSBlbmFibGluZy9kaXNhYmxpbmcNCj4gVkZzLg0KPiANCj4g
WzFdOiBodHRwczovL3BhdGNoZXcub3JnL1hlbi9jb3Zlci4xNzcyODA2MDM2LmdpdC5teWt5dGEu
XzVGcG90dXJhaUBlcGFtLmNvbS8NCg0KdGhpcyBiZSBvbWl0dGVkIGZyb20gY29tbWl0IG1lc3Nh
Z2U/DQoNCj4gDQo+IFNpZ25lZC1vZmYtYnk6IE15a3l0YSBQb3R1cmFpIDxteWt5dGFfcG90dXJh
aUBlcGFtLmNvbT4NCj4gLS0tDQo+IFYxLVYyOg0KPiAqIGNoZWNrIGZvciBwaGFudG9tIGZ1bmN0
aW9ucw0KPiAqIHNpbXBsaWZ5IHBjaS9kdCBkZXZpY2Ugc3BsaXQNCj4gKiBpbXByb3ZlIGVycm9y
IGhhbmRsaW5nDQo+ICogZG9uJ3QgdHJ5IHRvIGZyZWUgbWFzdGVyIGZvciB1bnByb3RlY3RlZCBk
ZXZpY2VzDQo+ICogcmV3b3JrIGR0X2RldmljZV9zZXRfcHJvdGVjdGVkDQo+IC0tLQ0KPiB4ZW4v
ZHJpdmVycy9wYXNzdGhyb3VnaC9hcm0vaXBtbXUtdm1zYS5jIHwgIDIgKy0NCj4geGVuL2RyaXZl
cnMvcGFzc3Rocm91Z2gvYXJtL3NtbXUtdjMuYyAgICB8IDU3ICsrKysrKysrKysrKysrKysrKysr
KysrLQ0KPiB4ZW4vZHJpdmVycy9wYXNzdGhyb3VnaC9hcm0vc21tdS5jICAgICAgIHwgIDQgKy0N
Cj4geGVuL2luY2x1ZGUveGVuL2RldmljZV90cmVlLmggICAgICAgICAgICB8ICA1ICsrLQ0KPiA0
IGZpbGVzIGNoYW5nZWQsIDYyIGluc2VydGlvbnMoKyksIDYgZGVsZXRpb25zKC0pDQo+IA0KPiBk
aWZmIC0tZ2l0IGEveGVuL2RyaXZlcnMvcGFzc3Rocm91Z2gvYXJtL2lwbW11LXZtc2EuYyBiL3hl
bi9kcml2ZXJzL3Bhc3N0aHJvdWdoL2FybS9pcG1tdS12bXNhLmMNCj4gaW5kZXggZmE5YWI5Y2Ix
My4uMDY0OGY5YjQwNyAxMDA2NDQNCj4gLS0tIGEveGVuL2RyaXZlcnMvcGFzc3Rocm91Z2gvYXJt
L2lwbW11LXZtc2EuYw0KPiArKysgYi94ZW4vZHJpdmVycy9wYXNzdGhyb3VnaC9hcm0vaXBtbXUt
dm1zYS5jDQo+IEBAIC0xMzY3LDcgKzEzNjcsNyBAQCBzdGF0aWMgaW50IGlwbW11X2FkZF9kZXZp
Y2UodTggZGV2Zm4sIHN0cnVjdCBkZXZpY2UgKmRldikNCj4gICAgICAgICB9DQo+IA0KPiAgICAg
ICAgIC8qIExldCBYZW4ga25vdyB0aGF0IHRoZSBtYXN0ZXIgZGV2aWNlIGlzIHByb3RlY3RlZCBi
eSBhbiBJT01NVS4gKi8NCj4gLSAgICAgICAgZHRfZGV2aWNlX3NldF9wcm90ZWN0ZWQoZGV2X3Rv
X2R0KGRldikpOw0KPiArICAgICAgICBkdF9kZXZpY2Vfc2V0X3Byb3RlY3RlZChkZXZfdG9fZHQo
ZGV2KSwgdHJ1ZSk7DQo+ICAgICB9DQo+ICNpZmRlZiBDT05GSUdfSEFTX1BDSQ0KPiAgICAgaWYg
KCBkZXZfaXNfcGNpKGRldikgKQ0KPiBkaWZmIC0tZ2l0IGEveGVuL2RyaXZlcnMvcGFzc3Rocm91
Z2gvYXJtL3NtbXUtdjMuYyBiL3hlbi9kcml2ZXJzL3Bhc3N0aHJvdWdoL2FybS9zbW11LXYzLmMN
Cj4gaW5kZXggYmYxNTMyMjdkYi4uOGUwODBjZDdkMCAxMDA2NDQNCj4gLS0tIGEveGVuL2RyaXZl
cnMvcGFzc3Rocm91Z2gvYXJtL3NtbXUtdjMuYw0KPiArKysgYi94ZW4vZHJpdmVycy9wYXNzdGhy
b3VnaC9hcm0vc21tdS12My5jDQo+IEBAIC0xNDkzLDYgKzE0OTMsNjAgQEAgc3RhdGljIGludCBh
cm1fc21tdV9hc3NpZ25fZGV2KHN0cnVjdCBkb21haW4gKmQsIHU4IGRldmZuLCBzdHJ1Y3QgZGV2
aWNlICpkZXYsDQo+IHN0YXRpYyBpbnQgYXJtX3NtbXVfZGVhc3NpZ25fZGV2KHN0cnVjdCBkb21h
aW4gKmQsIHVpbnQ4X3QgZGV2Zm4sDQo+IHN0cnVjdCBkZXZpY2UgKmRldik7DQo+IA0KPiArc3Rh
dGljIGludCBhcm1fc21tdV9yZW1vdmVfZGV2aWNlKHU4IGRldmZuLCBzdHJ1Y3QgZGV2aWNlICpk
ZXYpDQo+ICt7DQo+ICsgc3RydWN0IGFybV9zbW11X21hc3RlciAqbWFzdGVyOw0KPiArIHN0cnVj
dCBpb21tdV9md3NwZWMgKmZ3c3BlYzsNCg0KSeKAmW0gbG9va2luZyBpbnRvIHRoZSBhcm1fc21t
dV9yZW1vdmVfZGV2aWNlLCBhdCBzb21lIHBvaW50IHRoZXJlIHdlIGFsbG9jYXRlDQp0aGUgaW9t
bXVfZndzcGVjLCBidXQgd2UgYXJlIG5vdCB1c2luZyBpb21tdV9md3NwZWNfZnJlZSgpIGhlcmUs
IEnigJl2ZSB0cmllZA0KdG8gbG9vayBhcm91bmQgYW5kIEnigJltIG5vdCBhYmxlIHRvIHNlZSB3
aGF0IGZyZWVzIHRoYXQgc3RydWN0dXJlIGFwYXJ0IGZvcm0NCmlvbW11X3JlbW92ZV9kdF9kZXZp
Y2UoKS4NCkJ1dCBwY2lfcmVtb3ZlX2RldmljZSgpIC0+IGlvbW11X3JlbW92ZV9kZXZpY2UoKSBj
YW4gY2FsbCB0aGlzIGZ1bmN0aW9uIGFzIHdlbGwsIEnigJltIG5vdCBzdXJlIEnigJl2ZSB1bmRl
cnN0b29kDQpjb3JyZWN0bHkgdGhlIGZyYW1ld29yayBoZXJlIHNvIG1heWJlIHNvbWVvbmUgd2l0
aCBtb3JlIFBDSSBleHBlcmllbmNlIGNhbiBoZWxwDQpAU3Rld2FydCBIaWxkZWJyYW5kID8NCg0K
DQo+ICsgc3RydWN0IGRvbWFpbiAqZCA9IE5VTEw7DQo+ICsNCj4gKyBmd3NwZWMgPSBkZXZfaW9t
bXVfZndzcGVjX2dldChkZXYpOw0KPiArIGlmICggIWZ3c3BlYyApDQo+ICsgcmV0dXJuIC1FTk9E
RVY7DQo+ICsNCj4gKyBtYXN0ZXIgPSBkZXZfaW9tbXVfcHJpdl9nZXQoZGV2KTsNCj4gKyBpZiAo
ICFtYXN0ZXIgKQ0KPiArIHJldHVybiAtRU5PREVWOw0KPiArDQo+ICsgaWYgKCBJU19FTkFCTEVE
KENPTkZJR19IQVNfUENJKSAmJiBkZXZfaXNfcGNpKGRldikgKQ0KPiArIHsNCj4gKyBzdHJ1Y3Qg
cGNpX2RldiAqcGRldiA9IGRldl90b19wY2koZGV2KTsNCj4gKw0KPiArIC8qIElnbm9yZSBjYWxs
cyBmb3IgcGhhbnRvbSBmdW5jdGlvbnMgKi8NCj4gKyBpZiAoIGRldmZuICE9IHBkZXYtPmRldmZu
ICkNCj4gKyByZXR1cm4gMDsNCj4gKw0KPiArIGQgPSBwZGV2LT5kb21haW47DQo+ICsgfQ0KPiAr
IGVsc2UNCj4gKyB7DQo+ICsgaWYgKCAhZHRfZGV2aWNlX2lzX3Byb3RlY3RlZChkZXZfdG9fZHQo
ZGV2KSkgKQ0KPiArIHsNCj4gKyBkZXZfZXJyKGRldiwgIk5vdCBhZGRlZCB0byBTTU1VdjNcbiIp
Ow0KPiArIHJldHVybiAtRU5PREVWOw0KPiArIH0NCj4gKw0KPiArIGR0X2RldmljZV9zZXRfcHJv
dGVjdGVkKGRldl90b19kdChkZXYpLCBmYWxzZSk7DQo+ICsgaWYgKCBtYXN0ZXItPmRvbWFpbiAm
JiBtYXN0ZXItPmRvbWFpbi0+ZCApDQo+ICsgZCA9IG1hc3Rlci0+ZG9tYWluLT5kOw0KPiArIH0N
Cj4gKw0KPiArIGlmICggZCApDQo+ICsgew0KPiArIGludCByZXQgPSBhcm1fc21tdV9kZWFzc2ln
bl9kZXYoZCwgZGV2Zm4sIGRldik7DQo+ICsgLyogVGhpcyBzaG91bGQgbmV2ZXIgZmFpbCBiZWNh
dXNlIHdlIGFscmVhZHkgY2hlY2tlZCB0aGUgZG9tYWluICovDQo+ICsgQVNTRVJUKCFyZXQpOw0K
PiArIH0NCj4gKw0KPiArIGFybV9zbW11X2Rpc2FibGVfcGFzaWQobWFzdGVyKTsNCj4gKw0KPiAr
IGRldl9pbmZvKGRldiwgIlJlbW92ZWQgbWFzdGVyIGRldmljZSAoU01NVXYzICVzIFN0cmVhbUlk
cyAldSlcbiIsDQo+ICsgZGV2X25hbWUoZndzcGVjLT5pb21tdV9kZXYpLCBmd3NwZWMtPm51bV9p
ZHMpOw0KPiArDQo+ICsgeGZyZWUobWFzdGVyKTsNCj4gKyBkZXZfaW9tbXVfcHJpdl9zZXQoZGV2
LCBOVUxMKTsNCj4gKyByZXR1cm4gMDsNCj4gK30NCj4gKw0KDQpDaGVlcnMsDQpMdWNhDQoNCg==


From xen-devel-bounces@lists.xenproject.org Wed Apr 15 14:32:44 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 15 Apr 2026 14:32:44 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1282554.1565111 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wD1I6-0004wh-V2; Wed, 15 Apr 2026 14:32:30 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1282554.1565111; Wed, 15 Apr 2026 14:32: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 1wD1I6-0004wa-S4; Wed, 15 Apr 2026 14:32:30 +0000
Received: by outflank-mailman (input) for mailman id 1282554;
 Wed, 15 Apr 2026 14:32:29 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <Luca.Fancellu@arm.com>) id 1wD1I5-0004wU-AA
 for xen-devel@lists.xenproject.org; Wed, 15 Apr 2026 14:32:29 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wD1I4-00ApuF-Fm
 for xen-devel@lists.xenproject.org; Wed, 15 Apr 2026 16:32:28 +0200
Received: from [10.42.69.9] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <Luca.Fancellu@arm.com>)
 id 69dfa17a-bab6-0a2a0a5309dd-0a2a45098a7a-4
 for <xen-devel@lists.xenproject.org>; Wed, 15 Apr 2026 16:32:28 +0200
Received: from [52.101.83.63]
 (helo=GVXPR05CU001.outbound.protection.outlook.com)
 by tlsNG-bad1c0.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.0)
 (envelope-from <Luca.Fancellu@arm.com>)
 id 69dfa17b-bf79-0a2a45090019-3465533f570b-3
 for <xen-devel@lists.xenproject.org>; Wed, 15 Apr 2026 16:32:28 +0200
Received: from DU2PR04CA0299.eurprd04.prod.outlook.com (2603:10a6:10:28c::34)
 by AS8PR08MB8160.eurprd08.prod.outlook.com (2603:10a6:20b:561::12)
 with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9769.48; Wed, 15 Apr
 2026 14:32:22 +0000
Received: from DB1PEPF00050A01.eurprd03.prod.outlook.com
 (2603:10a6:10:28c:cafe::ee) by DU2PR04CA0299.outlook.office365.com
 (2603:10a6:10:28c::34) with Microsoft SMTP Server (version=TLS1_3,
 cipher=TLS_AES_256_GCM_SHA384) id 15.20.9769.50 via Frontend Transport; Wed,
 15 Apr 2026 14:32:22 +0000
Received: from outbound-uk1.az.dlp.m.darktrace.com (4.158.2.129) by
 DB1PEPF00050A01.mail.protection.outlook.com (10.167.242.43) with Microsoft
 SMTP Server (version=TLS1_3, cipher=TLS_AES_256_GCM_SHA384) id 15.20.9745.21
 via Frontend Transport; Wed, 15 Apr 2026 14:32:21 +0000
Received: from DU2PR08MB7272.eurprd08.prod.outlook.com (2603:10a6:10:2d7::16)
 by GV2PR08MB7954.eurprd08.prod.outlook.com (2603:10a6:150:a8::20)
 with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9818.21; Wed, 15 Apr
 2026 14:31:18 +0000
Received: from DU2PR08MB7272.eurprd08.prod.outlook.com
 ([fe80::5d34:206f:373:a323]) by DU2PR08MB7272.eurprd08.prod.outlook.com
 ([fe80::5d34:206f:373:a323%6]) with mapi id 15.20.9769.046; Wed, 15 Apr 2026
 14:31: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=arm.com header.i="@arm.com" header.h="From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck"; dkim=pass header.s=selector1 header.d=arm.com header.i="@arm.com" header.h="From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck"
ARC-Seal: i=2; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=pass;
 b=jey7VvFTEs3ighi1WgEtVuenMAEtF3770kseqvNpK/jVek86BjQD14R6lLVmEAnt1rBQI3ofT7ItNUQKoCTEJKQXOXdwtC4QmB+0LdZrC6cjZVTZayulhjjD6jSPTisp/dyS9CVnz4Agyk2F/0qLWohP+l6k6/9LdC7EoGptod0hOvr6031zsTmZDJRvy39oXMkpS5OFJx86zknWFwBYtzT8Xlm7AtKtBmudmzHcdGgfTfoje4qGRVLV5/6EOw5uDtuGtwAW+DLzerXjynVRt3P6vbdt4Jh4TBSj7yU3xIaozrG499tgyiKpRX+jHdS9Pb01gJ89AdnDXNfBd8G6Yw==
ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com;
 s=arcselector10001;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1;
 bh=KQdJJxGfBiMUNrgXyhm/E+tiuTsLt47c6AZEW/9sf6Q=;
 b=FBx4i2WHnEjk4yIbXFbCXw6ilqDX9kWuGPUUnZ7PDy7mvfkwc/bwzxONcW9OlHBzXH0FSh0D6Jx7tOwaViVFYX/Yq+R6m0wA48PoI4BqeAFpbvB5trqPphCYr8OvSUy8qvB4zULZNmn7IGlk1zl8eJ3GTOFm2fNSlgsNAsc88Gr4ZmwpFT3MT8cFwEdbO1PqTYvqULT6jt8SWYIyZpspieWIjdWpdkhI7fselHCZwaV+SmFtYGn8cbePxBdQ3egxC7Wcw3ZZ58Gmb0CmAzEJm0B/ePj4//4Q3Nw11amdpKjoHPfDay2N8Dy96oUSbWHPBitgTHNKVkJmT4PnBpF6jw==
ARC-Authentication-Results: i=2; mx.microsoft.com 1; spf=pass (sender ip is
 4.158.2.129) smtp.rcpttodomain=epam.com smtp.mailfrom=arm.com; dmarc=pass
 (p=none sp=none pct=100) action=none header.from=arm.com; dkim=pass
 (signature was verified) header.d=arm.com; arc=pass (0 oda=1 ltdi=1
 spf=[1,1,smtp.mailfrom=arm.com] dkim=[1,1,header.d=arm.com]
 dmarc=[1,1,header.from=arm.com])
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=arm.com; s=selector1;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck;
 bh=KQdJJxGfBiMUNrgXyhm/E+tiuTsLt47c6AZEW/9sf6Q=;
 b=cD8kqXo80lDTPnn6zQCVl31Y+/WgKo4rYYpyslkxbxfVxChcybFDxVE2ST5Z/yviQPIjUJcVNdyRWruW0on5sUoG5EQ5pAwx3yTIH6QK/Q981rrX7hwOnvtCHQaWhd6B+l7qLaLw2EYazIEVAWv8Q7y6NmKPSnIP1cahD8Ap3+0=
X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 4.158.2.129)
 smtp.mailfrom=arm.com; dkim=pass (signature was verified)
 header.d=arm.com;dmarc=pass action=none header.from=arm.com;
Received-SPF: Pass (protection.outlook.com: domain of arm.com designates
 4.158.2.129 as permitted sender) receiver=protection.outlook.com;
 client-ip=4.158.2.129; helo=outbound-uk1.az.dlp.m.darktrace.com; pr=C
ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none;
 b=Wh/XryE8Pg+U7ZOb1FdrYykaFKJ944jQbN8Ju02ChcrHrg0tAA5MZfiAI+mlL5dXzJPesJljOj1w/pZ3O6D9jJ6zNKpZRdDRnZklD08BuQQD63tffwiioRozdhsLCuefF8HVzpT72pdIxm+sHIuUM+7+nf4w5FjCkGR6iWzU4iwLXDcQXEnwOxAtg3/U3srs7IGKruWHCVU4V6rADu9I769dcoG86qazJhEv7wFEAl/cKt05iS66lAfEwUdSrmlbWdZmTkI0Pv46t3Tm1CPwe2qdu/6t6d1jGSHvuKPv9i+bD6K0vqMmzHdx9s07BEvcgxlUIB0zukxlfAnuZ4TOcA==
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com;
 s=arcselector10001;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1;
 bh=KQdJJxGfBiMUNrgXyhm/E+tiuTsLt47c6AZEW/9sf6Q=;
 b=ORT0jTBUFn2G8s7fREqXo9kIYhAMdK8XkwxFExqIt70W+f3SgQTKKUGpvGcSgaEVlGgbPZWgRbnho/9ZoNv22h1yadTUQ7q56QR9ZUz+xuZVcx1YALQeXcOnrv3Pj2+KOs8C5xo874OYXsxfl8qP4CcoT3Yk4mzuDWpMnGcU2LgWMNaimYBR8ufYvEVp05z2aZJ9aL7zzHweN6/k0xqzu1locOQnFI2eONWjuhDYA8kr9CTZ/2nr+wjARPgRvU0jZq3yC9Gaw5SJ6uhUEgkpOQ+KdIkXLNZ59sxVfoe/AFERjYppGrjwG5nalimX92hT4c/EsbeXIMSxssQ9IwgfdQ==
ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass
 smtp.mailfrom=arm.com; dmarc=pass action=none header.from=arm.com; dkim=pass
 header.d=arm.com; arc=none
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=arm.com; s=selector1;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck;
 bh=KQdJJxGfBiMUNrgXyhm/E+tiuTsLt47c6AZEW/9sf6Q=;
 b=cD8kqXo80lDTPnn6zQCVl31Y+/WgKo4rYYpyslkxbxfVxChcybFDxVE2ST5Z/yviQPIjUJcVNdyRWruW0on5sUoG5EQ5pAwx3yTIH6QK/Q981rrX7hwOnvtCHQaWhd6B+l7qLaLw2EYazIEVAWv8Q7y6NmKPSnIP1cahD8Ap3+0=
From: Luca Fancellu <Luca.Fancellu@arm.com>
To: Mykyta Poturai <Mykyta_Poturai@epam.com>, Stewart Hildebrand
	<stewart.hildebrand@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>, Michal Orzel <michal.orzel@amd.com>,
	Volodymyr Babchuk <Volodymyr_Babchuk@epam.com>, Rahul Singh
	<Rahul.Singh@arm.com>
Subject: Re: [PATCH v2] xen/arm: smmuv3: Add support for removing devices
Thread-Topic: [PATCH v2] xen/arm: smmuv3: Add support for removing devices
Thread-Index: AQHczBC6OGp5DbFlyEyismnWkcVdqLXgJmgAgAAKXQA=
Date: Wed, 15 Apr 2026 14:31:18 +0000
Message-ID: <809EAE3B-A92F-4655-83F4-20D3F65C3828@arm.com>
References:
 <da128e8fb41add9efc30860612786cd62f21addc.1776168699.git.mykyta_poturai@epam.com>
 <8CF45F67-B635-478D-9623-A69956FFEC5B@arm.com>
In-Reply-To: <8CF45F67-B635-478D-9623-A69956FFEC5B@arm.com>
Accept-Language: en-GB, en-US
Content-Language: en-US
X-MS-Has-Attach:
X-MS-TNEF-Correlator:
x-mailer: Apple Mail (2.3826.700.81.1.6)
Authentication-Results-Original: dkim=none (message not signed)
 header.d=none;dmarc=none action=none header.from=arm.com;
x-ms-traffictypediagnostic:
	DU2PR08MB7272:EE_|GV2PR08MB7954:EE_|DB1PEPF00050A01:EE_|AS8PR08MB8160:EE_
X-MS-Office365-Filtering-Correlation-Id: 333c1d14-7a55-4168-3230-08de9afbce0f
x-checkrecipientrouted: true
nodisclaimer: true
X-MS-Exchange-SenderADCheck: 1
X-MS-Exchange-AntiSpam-Relay: 0
X-Microsoft-Antispam-Untrusted:
 BCL:0;ARA:13230040|366016|376014|1800799024|38070700021|56012099003|18002099003|22082099003;
X-Microsoft-Antispam-Message-Info-Original:
 0FwEeHZqKl67z+SN9c07ZLHREc9rhMiaotknfha2ZVwct2GAczFEUqJ7PspuL1emOFAv97gZwe9giWb4TWIMt79zEwM3XSQzivbSxD84BPi+GlHJ4XB/BoqcwuwmqqRjTnjrvuk9rf+VwhIHgvyt9eZgSUWQazHb3C582XPFlrqwbU1qRhZRkWNpa4rRHRJ/dJdZehGyFrESPiixREXnoFBGAHAUwzco+TrlRU1+MKJapb8blR/HaUr3cDBcxr4A4VH32u8hrFBQUX3v0+MLtGXAchlkmNt4upjDCQ3ZCfBu2z2p0EhBVvYO+BVOLPJEvpNQxPwqNV1saiHdL3izIgEryBlPReUyzbuquqUDjkwfAjkCdJ/Tp4iXE46F8SGy3Kt4Ke0imdlLf26AIvkzCXv2OvesNcB0in5cjkFLrkMmdtyEgQp+G12EeOXH12/npH/iu+MDm+X87s5Hvj5O4zwHX9YJsTzX/VCYK0ro+Z+J6+fd275HP6xmPwX8bYd6/vF/H7FBJ3zkvZhvlCSIR7fRe3e1y6bFTPcQS4DUGPsGeWxQDIGvbwAOZ5WX284DtgllySanMtWcwO9gaWhNuVWARtvW+ftKRdRDZpsl/W+695578da0K9Lhz3UeE4haWtNAUknMPrZjkjsshFmd2OAERpeLJJk+OzEWp4bwuHwcCba/sNUF1jlQ8+AXOkoVdVMojiTaVWSSda+DTa7hIUBGPnLUmdBPIi9x+5tdxycxpAg7tH6Y1nhLwLVIPiwz
X-Forefront-Antispam-Report-Untrusted:
 CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:DU2PR08MB7272.eurprd08.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(366016)(376014)(1800799024)(38070700021)(56012099003)(18002099003)(22082099003);DIR:OUT;SFP:1101;
Content-Type: text/plain; charset="utf-8"
Content-ID: <B2986F72C977904394B8D0EEA78822C7@eurprd08.prod.outlook.com>
Content-Transfer-Encoding: base64
MIME-Version: 1.0
X-Exchange-RoutingPolicyChecked:
 VvwTh74DvGo0WYTn6EnxFkYByJd1AxVNKdOSyo8f07d+HQ6kKqpjKTo4EB7cj/M2XnS8AXWEd+xB6eKG0kVNNt3o42gg91zRRSR5YmNgpNHiszY36Sgh7+Qd8PE6jKKtx9w8yFlUL+I59a/X8+fdwhemXHVZbFiC0eu7qp1ud+ogQ5IV5DjITLouy9fKp8EbdZIlCw2FuCtUVVb7u2pKr2wWAhAtVHkZmHqbQR1Lz3KYcAp0edKDRmHCgxWeaXerbFi/UOdFoARkMKmQCLpxPeF6QrbQ2OgjiXD1EdL7xcO2j/hlSUy/n7jbhBvmB+6WBUiPeehnxScS9xHYUTF8/Q==
X-MS-Exchange-Transport-CrossTenantHeadersStamped: GV2PR08MB7954
X-EOPAttributedMessage: 0
X-MS-Exchange-Transport-CrossTenantHeadersStripped:
 DB1PEPF00050A01.eurprd03.prod.outlook.com
X-MS-PublicTrafficType: Email
X-MS-Office365-Filtering-Correlation-Id-Prvs:
	cb7daa26-c92f-49a7-cf38-08de9afba862
X-Microsoft-Antispam:
	BCL:0;ARA:13230040|376014|1800799024|36860700016|82310400026|35042699022|14060799003|22082099003|56012099003|18002099003;
X-Microsoft-Antispam-Message-Info:
	FCe6nEgcpUMUyDT+8u9coY2o4ljY0O1jcY/CLSp5r6Ltp6ACScM+Jdt7tS95o1V1YcXtWSeeprIi8gfVW8pzE3lhTRHerXe6iA8RR8RGfdhHuCqgLT9pLlYPVwFA0oKn+iLHHFZNEbRsmcYtKGHmWxEOWb3mNTouTJPXhyvhzMCg4gI5sia9nlq94iCmCak8ixGcYHgPpwTRKEjpWV9+C2j6XDa5JbduRyOPU42gxMXx2cBdV3j2xLJgTp6XKPAAru3nk6wsSQleDe8Cj7o68Wbtw1KLP1YV4CsZM+zwV+cpUNP0EMGO4KLG+CGiCs3UHHAvlK5YOtbSyDLLWizPkk5XxMY4l/aQ2RCe2lSuTwXaTE4AQSTC5ZdLoKJtbAEuOb+zB/2zyUUdGFEyE8yg2+Kl6T2rt+qR8cfpi/gHH8dfQ7C4fMP264sWklhnv7M+0LlILeR5AjE+9etFJVkpXuzZNzskDG9xjJBzqfuzh/PK25IOAaOv8bWm00TMNmjiCYWZlgjZW31FTz7dj/bOajAf1lqV4exF/aSghxJ12cJOBX+cX8efCaWR2J4TOD8hWOt81lVQTBT3MTxN7ZZayu1WtDnUFlMNgrAL+8vMb51KOwdFds9tBBOsdT2AmqgUrvBiB/NxBs4VawOgnCp6edmP0g4QDwEXLU0gZL1pVXWXUYff3z2EkwI7IGYUWtLLsh8wH49HSVZPIDhFjsaDw/R+bbY2GVQbBT3PTnllT/Q=
X-Forefront-Antispam-Report:
	CIP:4.158.2.129;CTRY:GB;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:outbound-uk1.az.dlp.m.darktrace.com;PTR:InfoDomainNonexistent;CAT:NONE;SFS:(13230040)(376014)(1800799024)(36860700016)(82310400026)(35042699022)(14060799003)(22082099003)(56012099003)(18002099003);DIR:OUT;SFP:1101;
X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1
X-MS-Exchange-AntiSpam-MessageData-0:
	Ia3hpwJtY03Wu7PB8TzRa+wWvlb9Cze0XfNNCvYXl/7wr4jPko4YDG8s4q5Wz/Zl3p/OZVSacPm1iC4Oi54iM/J0PobdlJk9YpWXxYg3MSpug+0pruTe7FSl55hfaLBgPQ4n01ZbArNtHrZ2AZB7UcPaXzsYSMQXJUVMcv7z/1O8+MccX+5L0/whxptDc1tYUPOjsyGFekXiUJ4iyAmxuXGWZ/kJJIEMOpSVearhh1TZDZ06BkM8O3ahltl1aHBL0hZfywQkhOE4TKqDY0Px0eaGSm/AQ7dKGsdWKvyWtMs5SkoWCI3sev0eOSfblbteHlgEioa98byA6Wj2mjTuk1b4I/qJFgTBYwjgmX8O7/3E0J5R1OkYPcSULqy0iBOTbGqH2w98P5uCJcbiUL9XMkYwbHspqIlw6p5zbg/qPzqGTNcQi+wXGnVbtvnrAjH5
X-OriginatorOrg: arm.com
X-MS-Exchange-CrossTenant-OriginalArrivalTime: 15 Apr 2026 14:32:21.6606
 (UTC)
X-MS-Exchange-CrossTenant-Network-Message-Id: 333c1d14-7a55-4168-3230-08de9afbce0f
X-MS-Exchange-CrossTenant-Id: f34e5979-57d9-4aaa-ad4d-b122a662184d
X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=f34e5979-57d9-4aaa-ad4d-b122a662184d;Ip=[4.158.2.129];Helo=[outbound-uk1.az.dlp.m.darktrace.com]
X-MS-Exchange-CrossTenant-AuthSource:
	DB1PEPF00050A01.eurprd03.prod.outlook.com
X-MS-Exchange-CrossTenant-AuthAs: Anonymous
X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem
X-MS-Exchange-Transport-CrossTenantHeadersStamped: AS8PR08MB8160
X-purgate-ID: tlsNG-bad1c0/1776263548-2E354152-D0326728/0/0
X-purgate-type: clean
X-purgate-size: 5916

DQoNCj4gT24gMTUgQXByIDIwMjYsIGF0IDE0OjU0LCBMdWNhIEZhbmNlbGx1IDxMdWNhLkZhbmNl
bGx1QGFybS5jb20+IHdyb3RlOg0KPiANCj4gSGkgTXlreXRhLA0KPiANCj4+IE9uIDE0IEFwciAy
MDI2LCBhdCAxNDoxNSwgTXlreXRhIFBvdHVyYWkgPE15a3l0YV9Qb3R1cmFpQGVwYW0uY29tPiB3
cm90ZToNCj4+IA0KPj4gQWxsb3cgZm9yIHJlbW92aW5nIGRldmljZXMgZnJvbSBTTU1VdjMuIGFy
bV9zbW11X2RlYXNzaWduX2RldiBoYW5kbGVzDQo+PiBtb3N0IG9mIHRoZSB3b3JrIGJ5IGRpc2Fi
bGluZyBBVFMgYW5kIHplcm9pbmcgU1RFcy4gQWRkaXRpb25hbGx5LCB1bnNldA0KPj4gdGhlIGR0
X2RldmljZV9pc19wcm90ZWN0ZWQgZmxhZyBhbmQgZnJlZSBubyBsb25nZXIgbmVlZGVkIHNtbXVf
bWFzdGVyLg0KPj4gDQo+PiBSZXdvcmsgZHRfZGV2aWNlX3NldF9wcm90ZWN0ZWQgdG8gYWNjZXB0
IGEgYm9vbGVhbiBwYXJhbWV0ZXIsIHVwZGF0ZQ0KPj4gY2FsbHNpdGVzLg0KPj4gDQo+IA0KPiBT
aG91bGQgLi4uDQo+IA0KPj4gVGVzdGVkIG9uIFFFTVUgd2l0aCBTUklPViBzZXJpZXNbMV0gYnkg
cmVwZWF0ZWRseSBlbmFibGluZy9kaXNhYmxpbmcNCj4+IFZGcy4NCj4+IA0KPj4gWzFdOiBodHRw
czovL3BhdGNoZXcub3JnL1hlbi9jb3Zlci4xNzcyODA2MDM2LmdpdC5teWt5dGEuXzVGcG90dXJh
aUBlcGFtLmNvbS8NCj4gDQo+IHRoaXMgYmUgb21pdHRlZCBmcm9tIGNvbW1pdCBtZXNzYWdlPw0K
PiANCj4+IA0KPj4gU2lnbmVkLW9mZi1ieTogTXlreXRhIFBvdHVyYWkgPG15a3l0YV9wb3R1cmFp
QGVwYW0uY29tPg0KPj4gLS0tDQo+PiBWMS1WMjoNCj4+ICogY2hlY2sgZm9yIHBoYW50b20gZnVu
Y3Rpb25zDQo+PiAqIHNpbXBsaWZ5IHBjaS9kdCBkZXZpY2Ugc3BsaXQNCj4+ICogaW1wcm92ZSBl
cnJvciBoYW5kbGluZw0KPj4gKiBkb24ndCB0cnkgdG8gZnJlZSBtYXN0ZXIgZm9yIHVucHJvdGVj
dGVkIGRldmljZXMNCj4+ICogcmV3b3JrIGR0X2RldmljZV9zZXRfcHJvdGVjdGVkDQo+PiAtLS0N
Cj4+IHhlbi9kcml2ZXJzL3Bhc3N0aHJvdWdoL2FybS9pcG1tdS12bXNhLmMgfCAgMiArLQ0KPj4g
eGVuL2RyaXZlcnMvcGFzc3Rocm91Z2gvYXJtL3NtbXUtdjMuYyAgICB8IDU3ICsrKysrKysrKysr
KysrKysrKysrKysrLQ0KPj4geGVuL2RyaXZlcnMvcGFzc3Rocm91Z2gvYXJtL3NtbXUuYyAgICAg
ICB8ICA0ICstDQo+PiB4ZW4vaW5jbHVkZS94ZW4vZGV2aWNlX3RyZWUuaCAgICAgICAgICAgIHwg
IDUgKystDQo+PiA0IGZpbGVzIGNoYW5nZWQsIDYyIGluc2VydGlvbnMoKyksIDYgZGVsZXRpb25z
KC0pDQo+PiANCj4+IGRpZmYgLS1naXQgYS94ZW4vZHJpdmVycy9wYXNzdGhyb3VnaC9hcm0vaXBt
bXUtdm1zYS5jIGIveGVuL2RyaXZlcnMvcGFzc3Rocm91Z2gvYXJtL2lwbW11LXZtc2EuYw0KPj4g
aW5kZXggZmE5YWI5Y2IxMy4uMDY0OGY5YjQwNyAxMDA2NDQNCj4+IC0tLSBhL3hlbi9kcml2ZXJz
L3Bhc3N0aHJvdWdoL2FybS9pcG1tdS12bXNhLmMNCj4+ICsrKyBiL3hlbi9kcml2ZXJzL3Bhc3N0
aHJvdWdoL2FybS9pcG1tdS12bXNhLmMNCj4+IEBAIC0xMzY3LDcgKzEzNjcsNyBAQCBzdGF0aWMg
aW50IGlwbW11X2FkZF9kZXZpY2UodTggZGV2Zm4sIHN0cnVjdCBkZXZpY2UgKmRldikNCj4+ICAg
ICAgICB9DQo+PiANCj4+ICAgICAgICAvKiBMZXQgWGVuIGtub3cgdGhhdCB0aGUgbWFzdGVyIGRl
dmljZSBpcyBwcm90ZWN0ZWQgYnkgYW4gSU9NTVUuICovDQo+PiAtICAgICAgICBkdF9kZXZpY2Vf
c2V0X3Byb3RlY3RlZChkZXZfdG9fZHQoZGV2KSk7DQo+PiArICAgICAgICBkdF9kZXZpY2Vfc2V0
X3Byb3RlY3RlZChkZXZfdG9fZHQoZGV2KSwgdHJ1ZSk7DQo+PiAgICB9DQo+PiAjaWZkZWYgQ09O
RklHX0hBU19QQ0kNCj4+ICAgIGlmICggZGV2X2lzX3BjaShkZXYpICkNCj4+IGRpZmYgLS1naXQg
YS94ZW4vZHJpdmVycy9wYXNzdGhyb3VnaC9hcm0vc21tdS12My5jIGIveGVuL2RyaXZlcnMvcGFz
c3Rocm91Z2gvYXJtL3NtbXUtdjMuYw0KPj4gaW5kZXggYmYxNTMyMjdkYi4uOGUwODBjZDdkMCAx
MDA2NDQNCj4+IC0tLSBhL3hlbi9kcml2ZXJzL3Bhc3N0aHJvdWdoL2FybS9zbW11LXYzLmMNCj4+
ICsrKyBiL3hlbi9kcml2ZXJzL3Bhc3N0aHJvdWdoL2FybS9zbW11LXYzLmMNCj4+IEBAIC0xNDkz
LDYgKzE0OTMsNjAgQEAgc3RhdGljIGludCBhcm1fc21tdV9hc3NpZ25fZGV2KHN0cnVjdCBkb21h
aW4gKmQsIHU4IGRldmZuLCBzdHJ1Y3QgZGV2aWNlICpkZXYsDQo+PiBzdGF0aWMgaW50IGFybV9z
bW11X2RlYXNzaWduX2RldihzdHJ1Y3QgZG9tYWluICpkLCB1aW50OF90IGRldmZuLA0KPj4gc3Ry
dWN0IGRldmljZSAqZGV2KTsNCj4+IA0KPj4gK3N0YXRpYyBpbnQgYXJtX3NtbXVfcmVtb3ZlX2Rl
dmljZSh1OCBkZXZmbiwgc3RydWN0IGRldmljZSAqZGV2KQ0KPj4gK3sNCj4+ICsgc3RydWN0IGFy
bV9zbW11X21hc3RlciAqbWFzdGVyOw0KPj4gKyBzdHJ1Y3QgaW9tbXVfZndzcGVjICpmd3NwZWM7
DQo+IA0KPiBJ4oCZbSBsb29raW5nIGludG8gdGhlIGFybV9zbW11X3JlbW92ZV9kZXZpY2UsIGF0
IHNvbWUgcG9pbnQgdGhlcmUgd2UgYWxsb2NhdGUNCg0KQXBvbG9naWVzLCBJIG1lYW50IGFybV9z
bW11X2FkZF9kZXZpY2UgaGVyZQ0KDQo+IHRoZSBpb21tdV9md3NwZWMsIGJ1dCB3ZSBhcmUgbm90
IHVzaW5nIGlvbW11X2Z3c3BlY19mcmVlKCkgaGVyZSwgSeKAmXZlIHRyaWVkDQo+IHRvIGxvb2sg
YXJvdW5kIGFuZCBJ4oCZbSBub3QgYWJsZSB0byBzZWUgd2hhdCBmcmVlcyB0aGF0IHN0cnVjdHVy
ZSBhcGFydCBmb3JtDQo+IGlvbW11X3JlbW92ZV9kdF9kZXZpY2UoKS4NCj4gQnV0IHBjaV9yZW1v
dmVfZGV2aWNlKCkgLT4gaW9tbXVfcmVtb3ZlX2RldmljZSgpIGNhbiBjYWxsIHRoaXMgZnVuY3Rp
b24gYXMgd2VsbCwgSeKAmW0gbm90IHN1cmUgSeKAmXZlIHVuZGVyc3Rvb2QNCj4gY29ycmVjdGx5
IHRoZSBmcmFtZXdvcmsgaGVyZSBzbyBtYXliZSBzb21lb25lIHdpdGggbW9yZSBQQ0kgZXhwZXJp
ZW5jZSBjYW4gaGVscA0KPiBAU3Rld2FydCBIaWxkZWJyYW5kID8NCj4gDQo+IA0KPj4gKyBzdHJ1
Y3QgZG9tYWluICpkID0gTlVMTDsNCj4+ICsNCj4+ICsgZndzcGVjID0gZGV2X2lvbW11X2Z3c3Bl
Y19nZXQoZGV2KTsNCj4+ICsgaWYgKCAhZndzcGVjICkNCj4+ICsgcmV0dXJuIC1FTk9ERVY7DQo+
PiArDQo+PiArIG1hc3RlciA9IGRldl9pb21tdV9wcml2X2dldChkZXYpOw0KPj4gKyBpZiAoICFt
YXN0ZXIgKQ0KPj4gKyByZXR1cm4gLUVOT0RFVjsNCj4+ICsNCj4+ICsgaWYgKCBJU19FTkFCTEVE
KENPTkZJR19IQVNfUENJKSAmJiBkZXZfaXNfcGNpKGRldikgKQ0KPj4gKyB7DQo+PiArIHN0cnVj
dCBwY2lfZGV2ICpwZGV2ID0gZGV2X3RvX3BjaShkZXYpOw0KPj4gKw0KPj4gKyAvKiBJZ25vcmUg
Y2FsbHMgZm9yIHBoYW50b20gZnVuY3Rpb25zICovDQo+PiArIGlmICggZGV2Zm4gIT0gcGRldi0+
ZGV2Zm4gKQ0KPj4gKyByZXR1cm4gMDsNCj4+ICsNCj4+ICsgZCA9IHBkZXYtPmRvbWFpbjsNCj4+
ICsgfQ0KPj4gKyBlbHNlDQo+PiArIHsNCj4+ICsgaWYgKCAhZHRfZGV2aWNlX2lzX3Byb3RlY3Rl
ZChkZXZfdG9fZHQoZGV2KSkgKQ0KPj4gKyB7DQo+PiArIGRldl9lcnIoZGV2LCAiTm90IGFkZGVk
IHRvIFNNTVV2M1xuIik7DQo+PiArIHJldHVybiAtRU5PREVWOw0KPj4gKyB9DQo+PiArDQo+PiAr
IGR0X2RldmljZV9zZXRfcHJvdGVjdGVkKGRldl90b19kdChkZXYpLCBmYWxzZSk7DQo+PiArIGlm
ICggbWFzdGVyLT5kb21haW4gJiYgbWFzdGVyLT5kb21haW4tPmQgKQ0KPj4gKyBkID0gbWFzdGVy
LT5kb21haW4tPmQ7DQo+PiArIH0NCj4+ICsNCj4+ICsgaWYgKCBkICkNCj4+ICsgew0KPj4gKyBp
bnQgcmV0ID0gYXJtX3NtbXVfZGVhc3NpZ25fZGV2KGQsIGRldmZuLCBkZXYpOw0KPj4gKyAvKiBU
aGlzIHNob3VsZCBuZXZlciBmYWlsIGJlY2F1c2Ugd2UgYWxyZWFkeSBjaGVja2VkIHRoZSBkb21h
aW4gKi8NCj4+ICsgQVNTRVJUKCFyZXQpOw0KPj4gKyB9DQo+PiArDQo+PiArIGFybV9zbW11X2Rp
c2FibGVfcGFzaWQobWFzdGVyKTsNCj4+ICsNCj4+ICsgZGV2X2luZm8oZGV2LCAiUmVtb3ZlZCBt
YXN0ZXIgZGV2aWNlIChTTU1VdjMgJXMgU3RyZWFtSWRzICV1KVxuIiwNCj4+ICsgZGV2X25hbWUo
ZndzcGVjLT5pb21tdV9kZXYpLCBmd3NwZWMtPm51bV9pZHMpOw0KPj4gKw0KPj4gKyB4ZnJlZSht
YXN0ZXIpOw0KPj4gKyBkZXZfaW9tbXVfcHJpdl9zZXQoZGV2LCBOVUxMKTsNCj4+ICsgcmV0dXJu
IDA7DQo+PiArfQ0KPj4gKw0KPiANCj4gQ2hlZXJzLA0KPiBMdWNhDQo+IA0KDQo=


From xen-devel-bounces@lists.xenproject.org Wed Apr 15 14:38:51 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 15 Apr 2026 14:38:51 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1282576.1565135 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wD1OA-00062c-Rm; Wed, 15 Apr 2026 14:38:46 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1282576.1565135; Wed, 15 Apr 2026 14: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 1wD1OA-00062V-P8; Wed, 15 Apr 2026 14:38:46 +0000
Received: by outflank-mailman (input) for mailman id 1282576;
 Wed, 15 Apr 2026 14:38:45 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <Luca.Fancellu@arm.com>) id 1wD1O8-00062P-SM
 for xen-devel@lists.xenproject.org; Wed, 15 Apr 2026 14:38:44 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wD1O8-00DRci-0b
 for xen-devel@lists.xenproject.org; Wed, 15 Apr 2026 16:38:44 +0200
Received: from [10.42.69.9] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <Luca.Fancellu@arm.com>)
 id 69dfa2f2-e002-0a2a0a5209dd-0a2a4509ddb8-10
 for <xen-devel@lists.xenproject.org>; Wed, 15 Apr 2026 16:38:43 +0200
Received: from [52.101.69.63]
 (helo=AM0PR83CU005.outbound.protection.outlook.com)
 by tlsNG-bad1c0.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.0)
 (envelope-from <Luca.Fancellu@arm.com>)
 id 69dfa2f3-bf79-0a2a45090019-3465453f7fb8-3
 for <xen-devel@lists.xenproject.org>; Wed, 15 Apr 2026 16:38:43 +0200
Received: from AS9PR06CA0159.eurprd06.prod.outlook.com (2603:10a6:20b:45c::26)
 by GVXPR08MB10476.eurprd08.prod.outlook.com (2603:10a6:150:155::14)
 with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9769.48; Wed, 15 Apr
 2026 14:38:40 +0000
Received: from AMS0EPF00000194.eurprd05.prod.outlook.com
 (2603:10a6:20b:45c:cafe::b0) by AS9PR06CA0159.outlook.office365.com
 (2603:10a6:20b:45c::26) with Microsoft SMTP Server (version=TLS1_3,
 cipher=TLS_AES_256_GCM_SHA384) id 15.20.9769.50 via Frontend Transport; Wed,
 15 Apr 2026 14:38:40 +0000
Received: from outbound-uk1.az.dlp.m.darktrace.com (4.158.2.129) by
 AMS0EPF00000194.mail.protection.outlook.com (10.167.16.214) with Microsoft
 SMTP Server (version=TLS1_3, cipher=TLS_AES_256_GCM_SHA384) id 15.20.9769.17
 via Frontend Transport; Wed, 15 Apr 2026 14:38:39 +0000
Received: from DU2PR08MB7272.eurprd08.prod.outlook.com (2603:10a6:10:2d7::16)
 by DU0PR08MB8068.eurprd08.prod.outlook.com (2603:10a6:10:3eb::8) with
 Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9769.48; Wed, 15 Apr
 2026 14:37:33 +0000
Received: from DU2PR08MB7272.eurprd08.prod.outlook.com
 ([fe80::5d34:206f:373:a323]) by DU2PR08MB7272.eurprd08.prod.outlook.com
 ([fe80::5d34:206f:373:a323%6]) with mapi id 15.20.9769.046; Wed, 15 Apr 2026
 14:37: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=arm.com header.i="@arm.com" header.h="From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck"; dkim=pass header.s=selector1 header.d=arm.com header.i="@arm.com" header.h="From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck"
ARC-Seal: i=2; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=pass;
 b=R8pYzF9LXXWUsEFJFvu5jgZDnvVj6gSuYKdPFxUa3kXLl7wKJvxQISIRkllzCBVR+oHXh/ARYhrbUGUThN1Z4r2AxSCrHTU7y9MdgKDlUlODg95oSwC+AyBDQfgXUXNP9NMcvJJrJC6Y9us14F058F4BtLaShAdjPhK0edywKLnBx6uUu//s7xyQQTbRL4J8DNXMPYmxIZ8+I17NfvOMIs60te4uxtCmvy9BuFtkymwAOR8XnYiULjfrIEN+cUKSoJviWitUM2xtqXrIEGdLkgjzeu+5YX5gzW4GGVmWwAZ7zskmpK2oiQherm47P/jzvioB9+sND1yWEszQ2kbnVw==
ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com;
 s=arcselector10001;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1;
 bh=LIjIk0BIWkQiU0lB0x4GGC4TSeNBWSaXMuHu4P0Zo6o=;
 b=VskQSJNCF+CgrKRSqKKw6M5o7EY3ZUyb441VI139nfKgK0jWQP3WXbJxRoUVTmhnMOCKqez5sWr+HKh8h/ENlryxR1kJ9Xybczdh9KK1x28f8wkOej9z7O1iX5BPsQ/0ieFF/7qReWCdO9iaIveforXTYZFfcC3vu9gyRxN/SPB50mK3Rd2xdYZupOwB1mA2j6bcYHi/XStwL5nifTNRSbdwtJega/WImPksIcruk3CMDfBwmNL1LgKy/BYQFZKfPFjAvxgREdGeWvZlmTNDgZVJNeSmI2jziuB51cdzG3yQx6fW1Wt/TReq37JNzTiaXuGJN1dTV7FUZ+1VxE/oqQ==
ARC-Authentication-Results: i=2; mx.microsoft.com 1; spf=pass (sender ip is
 4.158.2.129) smtp.rcpttodomain=amd.com smtp.mailfrom=arm.com; dmarc=pass
 (p=none sp=none pct=100) action=none header.from=arm.com; dkim=pass
 (signature was verified) header.d=arm.com; arc=pass (0 oda=1 ltdi=1
 spf=[1,1,smtp.mailfrom=arm.com] dkim=[1,1,header.d=arm.com]
 dmarc=[1,1,header.from=arm.com])
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=arm.com; s=selector1;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck;
 bh=LIjIk0BIWkQiU0lB0x4GGC4TSeNBWSaXMuHu4P0Zo6o=;
 b=g7sWPSwa/cdjliI5MxbiRkC7NYU5pbVTpb6M2mxv2G1kvM7+Mwkvwu/kxEyWKs0+90X9oBvAtp3BAJx/9NGGKz1HhS8ygaN4OAomWb71UU/r7C4la2tnq7RrsKNPdxmv8DK+osRFvRAeqMhTZFvL+5eZD0YzLh8BLyw6mAIKFmE=
X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 4.158.2.129)
 smtp.mailfrom=arm.com; dkim=pass (signature was verified)
 header.d=arm.com;dmarc=pass action=none header.from=arm.com;
Received-SPF: Pass (protection.outlook.com: domain of arm.com designates
 4.158.2.129 as permitted sender) receiver=protection.outlook.com;
 client-ip=4.158.2.129; helo=outbound-uk1.az.dlp.m.darktrace.com; pr=C
ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none;
 b=U28r+XVociOAtmMMOQhmyy8EirPqW2kLX97Ul32tf2/s3WEaK0HZvNmyEEcS7cDkMIObW/SjVqB2imtCfbwPAvb8REZ+csyfJ3KXehA7f7jFbHwyUhRRh8SaIoJSrueDgblkuEf566wiiaFiOASXcUVQxLS5wk+/ipTdSdKrZlA1ttZxsQEPnWkD/npVyCpToikx2NbmThrhBGRQz9WruTFM3TMkrVu97GXNeT6Yg3jfKEECK+WUNcG0WVh/KI3q7peCl5PIlynEw+ePnAXIE0K/ea9yIzwiwzkSDzVHXOPTxgWhyhVU6x7ij8KUKsxGgE+lLmf/uRjbgNs3dhwKrQ==
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com;
 s=arcselector10001;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1;
 bh=LIjIk0BIWkQiU0lB0x4GGC4TSeNBWSaXMuHu4P0Zo6o=;
 b=cHm2BZb6vJgslavzgWAK8NZh+OOchvkjwKz09qy9fXFxEdQjeDq8vhLdq9hxDCP3kwpubltUFAwkVQCOn0mPaK+/d2ofhfwJh98yn1nvlYtauk+FUnTDJcD8cVg3Mi3+WdHBwvfeQiEHA5LblURpVBMs8XO3HH3lO98mzJBXI8dJUcpqSqyBTptEptOWaxnxpP/h3F2G1pyk10zPlHj4rLZ86luPt78fMbEs9uSvpPb6gEFdZkFfH/VtyH6yYgyd6AP6SkWzIvGVuAISg4JqEbdK5Cbe2ZWIyO7IRSbA6RWPjpiJ8WEDI37YAjqdFB34to/1C7qDxFl3r9uZC2frEQ==
ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass
 smtp.mailfrom=arm.com; dmarc=pass action=none header.from=arm.com; dkim=pass
 header.d=arm.com; arc=none
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=arm.com; s=selector1;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck;
 bh=LIjIk0BIWkQiU0lB0x4GGC4TSeNBWSaXMuHu4P0Zo6o=;
 b=g7sWPSwa/cdjliI5MxbiRkC7NYU5pbVTpb6M2mxv2G1kvM7+Mwkvwu/kxEyWKs0+90X9oBvAtp3BAJx/9NGGKz1HhS8ygaN4OAomWb71UU/r7C4la2tnq7RrsKNPdxmv8DK+osRFvRAeqMhTZFvL+5eZD0YzLh8BLyw6mAIKFmE=
From: Luca Fancellu <Luca.Fancellu@arm.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>, Gyujeong Jin <wlsrbwjd7232@gmail.com>
Subject: Re: [PATCH 1/6] xen/dt-overlay: fix double-free of rangesets on
 attach failure
Thread-Topic: [PATCH 1/6] xen/dt-overlay: fix double-free of rangesets on
 attach failure
Thread-Index: AQHczMxJvMmkK2xs/ECWEgYirLYt+bXgMQwA
Date: Wed, 15 Apr 2026 14:37:32 +0000
Message-ID: <A0CD5D33-67D7-4A69-A5C3-C7C37F72830C@arm.com>
References: <20260415113700.107915-1-michal.orzel@amd.com>
 <20260415113700.107915-2-michal.orzel@amd.com>
In-Reply-To: <20260415113700.107915-2-michal.orzel@amd.com>
Accept-Language: en-GB, en-US
Content-Language: en-US
X-MS-Has-Attach:
X-MS-TNEF-Correlator:
x-mailer: Apple Mail (2.3826.700.81.1.6)
Authentication-Results-Original: dkim=none (message not signed)
 header.d=none;dmarc=none action=none header.from=arm.com;
x-ms-traffictypediagnostic:
	DU2PR08MB7272:EE_|DU0PR08MB8068:EE_|AMS0EPF00000194:EE_|GVXPR08MB10476:EE_
X-MS-Office365-Filtering-Correlation-Id: 1ac87782-f327-4847-bf28-08de9afcaf1b
x-checkrecipientrouted: true
nodisclaimer: true
X-MS-Exchange-SenderADCheck: 1
X-MS-Exchange-AntiSpam-Relay: 0
X-Microsoft-Antispam-Untrusted:
 BCL:0;ARA:13230040|376014|1800799024|366016|38070700021|18002099003|56012099003|22082099003;
X-Microsoft-Antispam-Message-Info-Original:
 ILBYC9GDO0tudyMkoe7FYgzT1IBWGQdbzfz6e0C324OjXWAfkQva3dTy2M00cmHeKWveZqQ5orr3/1CWHhYMEKkn4rBXwlHujUES/XyTV8xupEsI8jenqcRqfsJilHSW09WCdmFWo87a63Btkc2RQN8Ajyvm5EpftvdZJz9YBY8i8+e3YQTt00K6jLRmR4+7V4oG29ifeCe35Ui5oXPrli/F2jUrsTTB8FaDFzSSFamOQ/EDM5Cz+EOw77w50wBNZ3sQBWe4157qbdVCSa72CCp7VDCPz/8QmF+V97UvY9eTGNIwMA1tSNKdnkScxSuOv91XyG0RohL5SX7FufmnecuyWK29LdVzucXk4vkXmJceUXeevvDZzvrmEkEUumKX4C1UPeau+ZNiWaRckL6tScv6dc0nhnCj1OMyqAEI8fcNreeXx/H+3dqasP+RIWgHBjTj8EAMJPqPKMyBRjkApUiWbRd8mOXUrNuhUZM+rLk5wjSG+isKUvzLwjozLjJOb8zNCysoVsCjyz4kExmiUvYD378AeR4PdqI1IPwkqtSYVyC5urxq1wH05DY7YDLPevwXse4GCci0a+j+J70V47yZ3uQ9Nj1Rav4Prj+3RQrff9As/rYVHezfXKm0ejope/zICij1jJkRWE+nly6TOOQOovwTmYZOoquuFRCuxF5COELguBBW/zpfpqX7lqZtIKMgkNaHhfFmnZ1fz81J6lt7BgoF8qq6wrcHep9z0mRdn76kyQAWe5IrTl/GX6HTXTjtDQOGCWPm7C/FLA6PqU+GNtVWNea4dG0B3tL/p3E=
X-Forefront-Antispam-Report-Untrusted:
 CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:DU2PR08MB7272.eurprd08.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(376014)(1800799024)(366016)(38070700021)(18002099003)(56012099003)(22082099003);DIR:OUT;SFP:1101;
Content-Type: text/plain; charset="us-ascii"
Content-ID: <790E5A00B5947F4EA0118C69335D0219@eurprd08.prod.outlook.com>
Content-Transfer-Encoding: quoted-printable
MIME-Version: 1.0
X-Exchange-RoutingPolicyChecked:
 W078W8iIITmNh5zxDDR2P716Z2rury0w7w4nJgY7cqE1upUUgJDzzPQnO0v5cNsiRXshjlhXcOZgQzjqtq2woF2QOpq6D4se0kp0OVazv4SokbjEvuKoH9w5j0+mc8OCd0UVPQSlkuHGOeZhIMlJ5zXeHXvHChWPMYkLXVnL6HRRxNH86EWpnAUowwo22TugPthKJL5IbODH2IUf0pPz9m5hGYUYJSioxlBPIY8pfWXnBqeeN89gDSDIC8+FpWRYZtUNpwSDisaGqHWwLago3pZoi8RdyWmvBufjUesVaOmIsQXW6IoswwkfpMmdQTb1ybBYHTk4Zsh7YpqL2rVPUw==
X-MS-Exchange-Transport-CrossTenantHeadersStamped: DU0PR08MB8068
X-EOPAttributedMessage: 0
X-MS-Exchange-Transport-CrossTenantHeadersStripped:
 AMS0EPF00000194.eurprd05.prod.outlook.com
X-MS-PublicTrafficType: Email
X-MS-Office365-Filtering-Correlation-Id-Prvs:
	fe36b5a8-36a2-4ffa-7e17-08de9afc8796
X-Microsoft-Antispam:
	BCL:0;ARA:13230040|1800799024|376014|14060799003|36860700016|35042699022|82310400026|56012099003|22082099003|18002099003;
X-Microsoft-Antispam-Message-Info:
	r92DbuJ9B7LQMqLrXasnOsAMw4NqWBRPEabxgaqu9mE4fm4FllON1OtaR1GzStI81FsJkbDTWrLk0HEa2EWb1gBLWXk6uaWosbnlBqTIcxLztkmRQQDyWdpOtr0rMuL/LmNAZuVyBhZOjtHFzeabP//5hJLuGm9ecu5SMfCsLDIrLMKz08uEDEOSWK5rlnlK2t822oJwdub2neDIx8jKFAs80eHM9Kp5Pj2AqEkuscOaXXS3sFgAdY1P+WV93eutnCafSVtHy48TTTefVf0LJ7zYHWR/WQAgtYuxxcleBQjrk3Cl5mUarr7YCn5bORzfE2dQ8fxYmW7CDa7cmLaB0O/eyYP7O7jLoSBazZltKD4gja2R3uCV8BDEGO9HiUE4dRIFpHD4Bl4m1InhHMEl2sbCN5u7/aasYM5dGlHDNguK8UkHSv9Ym63KjW8f3O5Uj08T37PGYsbkcRzQCL007BlObXicHXPLXtpigi7WA1L0Mll6DE0ibMOJw4juYYDnUbxO79o+2hfaLz0Tio2iCTxnDEnNoB2uJMd2eAufQhU4wXzXcGMaoCMMe1bA+rnXVNln6tjvdgy/VtHUhNOkS+iHo9WgxjoihwEKo0LqWKbaU2iC7CE9QXAKO0Yx0FvqgM/SZp9ZfU2+6W6ohhKkmFB3mPp8zbNLW1pngCt1sGkiahauIVDfTBg4pO+ux773ms5OLY3Dhw4XkyWHvLdLAlB3EDh2MOvNmrKJ5doTMEGd2uCZrK0brrvnZ9UEgLVNRz5XeX4b0+Wkr5rszYm/Nw==
X-Forefront-Antispam-Report:
	CIP:4.158.2.129;CTRY:GB;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:outbound-uk1.az.dlp.m.darktrace.com;PTR:InfoDomainNonexistent;CAT:NONE;SFS:(13230040)(1800799024)(376014)(14060799003)(36860700016)(35042699022)(82310400026)(56012099003)(22082099003)(18002099003);DIR:OUT;SFP:1101;
X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1
X-MS-Exchange-AntiSpam-MessageData-0:
	VzAB+HkPpan2PdiB1sY067kQtTTIWqpZdFXMz807mh5PMoorBs2h2hc6GUPTK09yR8WLlxdB4qENgs1Dh9Ru/1FImUMh0KK3S50lqCC5pS0nR76waXkbNNjJCkiJXrbtfiIUCXURZlMZagwAyqU0H/eYnEyuozogJRl8J1GQwMwhcp+1rpCrDZQZleqrD7WbnxnRfCJl08ACBXNze0IXr95xFBoqx8G55cOOhb3Ut+mG2kdxQGiJuW7YLDsBcQHbegSZ0AvJqUYwZUdyaYvwJ4sr0H/A2n59dXO0/lYcEqfYx4jjVURZtRFcwL4olybrPpcDUzdK5nMA9DOPLdJjuUEcw60CVU5Z0rIcKtkF1xl0xVm4kob2yYiw2Sprf16N8F9FQlZfdwsioF+GGbarf7nSnM5LqrEy9oTylwYo5tPT2O+fMnp0BcL5DUThVoY/
X-OriginatorOrg: arm.com
X-MS-Exchange-CrossTenant-OriginalArrivalTime: 15 Apr 2026 14:38:39.2537
 (UTC)
X-MS-Exchange-CrossTenant-Network-Message-Id: 1ac87782-f327-4847-bf28-08de9afcaf1b
X-MS-Exchange-CrossTenant-Id: f34e5979-57d9-4aaa-ad4d-b122a662184d
X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=f34e5979-57d9-4aaa-ad4d-b122a662184d;Ip=[4.158.2.129];Helo=[outbound-uk1.az.dlp.m.darktrace.com]
X-MS-Exchange-CrossTenant-AuthSource:
	AMS0EPF00000194.eurprd05.prod.outlook.com
X-MS-Exchange-CrossTenant-AuthAs: Anonymous
X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem
X-MS-Exchange-Transport-CrossTenantHeadersStamped: GVXPR08MB10476
X-purgate-ID: tlsNG-bad1c0/1776263923-2E74A152-F1BC5B7F/0/0
X-purgate-type: clean
X-purgate-size: 888

Hi Michal,

> On 15 Apr 2026, at 12:36, Michal Orzel <michal.orzel@amd.com> wrote:
>=20
> handle_attach_overlay_nodes() destroys the IRQ and IOMEM rangesets on
> failure but leaves the pointers dangling in the tracker entry. A
> subsequent handle_remove_overlay_nodes() for the same overlay will call
> rangeset_consume_ranges() on freed memory followed by a second
> rangeset_destroy(), resulting in use-after-free and double-free.
>=20
> NULL the pointers after rangeset_destroy() so that remove_nodes() and
> handle_remove_overlay_nodes() skip the stale entries.
>=20
> Fixes: 4c733873b5c2 ("xen/arm: Add XEN_DOMCTL_dt_overlay and device attac=
hment to domains")
> Reported-by: Gyujeong Jin <wlsrbwjd7232@gmail.com>
> Signed-off-by: Michal Orzel <michal.orzel@amd.com>
> ---

Looks ok to me

Reviewed-by: Luca Fancellu <luca.fancellu@arm.com>

Cheers,
Luca



From xen-devel-bounces@lists.xenproject.org Wed Apr 15 14:51:28 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 15 Apr 2026 14:51:28 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1282584.1565145 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wD1aK-0000Jn-Uu; Wed, 15 Apr 2026 14:51:20 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1282584.1565145; Wed, 15 Apr 2026 14: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 1wD1aK-0000Jg-R3; Wed, 15 Apr 2026 14:51:20 +0000
Received: by outflank-mailman (input) for mailman id 1282584;
 Wed, 15 Apr 2026 14:51:19 +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 1wD1aJ-0000Ja-Nu
 for xen-devel@lists.xenproject.org; Wed, 15 Apr 2026 14:51:19 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wD1aI-006h9p-83
 for xen-devel@lists.xenproject.org; Wed, 15 Apr 2026 16:51:18 +0200
Received: from [10.42.69.7] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <Mykyta_Poturai@epam.com>)
 id 69dfa5e5-2eae-0a2a0a5409dd-0a2a4507864c-2
 for <xen-devel@lists.xenproject.org>; Wed, 15 Apr 2026 16:51:18 +0200
Received: from [52.101.70.90]
 (helo=AS8PR04CU009.outbound.protection.outlook.com)
 by tlsNG-ef75cf.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.0)
 (envelope-from <Mykyta_Poturai@epam.com>)
 id 69dfa5e5-ba2d-0a2a45070019-3465465aea16-3
 for <xen-devel@lists.xenproject.org>; Wed, 15 Apr 2026 16:51:17 +0200
Received: from PAVPR03MB10102.eurprd03.prod.outlook.com
 (2603:10a6:102:30d::12) by GV1PR03MB10332.eurprd03.prod.outlook.com
 (2603:10a6:150:160::19) with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9818.20; Wed, 15 Apr
 2026 14:51:13 +0000
Received: from PAVPR03MB10102.eurprd03.prod.outlook.com
 ([fe80::b8c6:f37a:987a:beb]) by PAVPR03MB10102.eurprd03.prod.outlook.com
 ([fe80::b8c6:f37a:987a:beb%5]) with mapi id 15.20.9769.046; Wed, 15 Apr 2026
 14:51: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=pNXHWB815q8z0I3MymuDdLVNTREQ3gjfiANNfDGe0tSmSqOTAhYyZJxIlmmTKpteDaTxV83x2euArsbDBvNjpmsWHKvB58I7tsuvb1+0ct0QggP53aHSMechDljUg/+mbN4xTeQF3v3M/lGIu8bGTQkLzdmjmq/+DIWk5Ad8v4LxA7pGQFxAyLSPbtTTiw6k2GLm4jcS/w/dllrYC1UpZLqj+wLlcAOD1bRx8Pwn9JhX8JIzCkuOlUvDTc+sSmJzhKvN13KxyoAICzH/hSHP7rQgdWAhOXAlOyjwoMAFkHucwaHdRFBExchzQX5XDQZdW/BnfSlyvJw/CL+0r6dvOw==
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com;
 s=arcselector10001;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1;
 bh=D2z8A4beCmW03g94nx44erDZyXZVg5UfzsoDSGXfkes=;
 b=srjl77pw4XUnHFgYL3RtnBigO4GmbpBuUGkseugvR+aEuGu2YE9yf/G587IecqcaZ0y9iJMqrwvo/c3lo6j4b469+0B1BSA3UW4qLIrE7I9tfk1uoOZuGmXUkNHQHuPYup42sYXve+vR0dWS4A2qGZIeMfQOzjVW9joXZRRA6mmhvqlRp9lLfWxu5cabJrRT1s0pn4YHcvo3TJUom25/HHjo/PpME2kDnJVeucrQm2VdlQs8BlgLfD5tN3ghz3KISDhKl0nq6L2wOE5sKwSdr9NPQLv7P5uCQOG0nLDz4Nmpsnvk41rmwYKXuZgBLoce6+Qlf9XBZ7uXBHlk6pURvQ==
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=D2z8A4beCmW03g94nx44erDZyXZVg5UfzsoDSGXfkes=;
 b=syG+V+SgK+qRcbte4JuaIrHIk3q3xTq3Th9clobjeP1R/l/KKiHUPX9IcbRNymvy2/dBz+VC9WhNt6yf7E33G2lymFeSpquRUMDOoNEJDGLUvK2KgPBKMGlIWMCqmoq7as4HKqq1TdSPRrT1kXit+a+j7r+T/VzxO6TDYLk4y5kQVTrfSVQxZrr/MWAllbZSr4o9RdI4LWih99clH2TKakzVA+EfCixrlYUhYglnpEQqdIzcqXE4kmCAEx7qexK+uLVJOQNkXc0NZARQPaHiRo+6WEVrAJJioKRadaYeqGgX2oraeZc6uMO8gcXVNDnEfSTpJ2V7gqlnowquuNxvyw==
From: Mykyta Poturai <Mykyta_Poturai@epam.com>
To: Jan Beulich <jbeulich@suse.com>
CC: Anthony PERARD <anthony.perard@vates.tech>, Juergen Gross
	<jgross@suse.com>, "xen-devel@lists.xenproject.org"
	<xen-devel@lists.xenproject.org>
Subject: Re: [PATCH v7 5/6] tools: Allow building xen-hptool without
 CONFIG_MIGRATE
Thread-Topic: [PATCH v7 5/6] tools: Allow building xen-hptool without
 CONFIG_MIGRATE
Thread-Index: AQHcwDy3LJnr4T20vUWAas874pXmi7XHAiYAgBlL+wA=
Date: Wed, 15 Apr 2026 14:51:13 +0000
Message-ID: <f4a1cfa1-f3ea-4fa0-bffd-1f6346e07d39@epam.com>
References: <cover.1774871881.git.mykyta_poturai@epam.com>
 <73db845e6617130966a565cdca6274db4cb46428.1774871881.git.mykyta_poturai@epam.com>
 <58cfab3b-7cf2-4e38-9968-1248e665f985@suse.com>
In-Reply-To: <58cfab3b-7cf2-4e38-9968-1248e665f985@suse.com>
Accept-Language: en-US
Content-Language: en-US
X-MS-Has-Attach:
X-MS-TNEF-Correlator:
authentication-results: dkim=none (message not signed)
 header.d=none;dmarc=none action=none header.from=epam.com;
x-ms-publictraffictype: Email
x-ms-traffictypediagnostic: PAVPR03MB10102:EE_|GV1PR03MB10332:EE_
x-ms-office365-filtering-correlation-id: 17982b2e-43ec-4973-cfbb-08de9afe7090
x-ms-exchange-senderadcheck: 1
x-ms-exchange-antispam-relay: 0
x-microsoft-antispam:
 BCL:0;ARA:13230040|366016|1800799024|376014|38070700021|56012099003|22082099003|18002099003;
x-microsoft-antispam-message-info:
 yIpNC8Up76rBTKEI5aTRbn/8C7U7g7v0vCUEHRd9dL0xlV3lkhmvT+0eKE6JlCfvRmpm1Dg1x5qhGB/7DEbHwnxWgmWVeztNljX2XmF66/zlQKO5rVaQ8RbGlhFDkJ0hPFnaC76D8ThHPpAeibod6YXwSxXiB1JWKkto5IyyCtdimo3NklRSc89NJoJ5q7SJTunmD/pYaNJPZTL2dV63w7ZtzqHPUJUOUu2U0I/ZzmDZpiYNntziEXGb2J4J8OFIQ5a+A6TqGjn1kDA3EMQOerVDAksf2JQJL8vjH3D0tlMNEMi5px8CXv7Sh0uLMeoh/9NBl7fBWo+h3jX1ZkSWH4hgcCjv0JBzTtlWfn2ZAxRzW+iVntYcHjndF63/5nWdolHrT/+Lr7/PYYUoYvTI6O0Fr0NcWmeZ1cMno5ucw7hCl3JngnLzjtD4jEP5SJiiJ2qbgIbikCA9mDcUwwapW3J8b4WpCswBhOu+vyTcXd4lw8vI4f9usisF3PI0tmSiBoB3K+TGWhzrqSbUVFPGJVq11zM3NlOZ4xyZWYuQElNR6il777LIRu2gs7uDP6Tu6zIjmQmVHQi6uhYnDXXJO7/hBRDzlxbRVdpt1dv7MuTGonL8TKEJBXZ7lDJF9u/HDdyBxs7Ehzf4bQnmbwkVwhJaXcyrTPqXpDEXSpLJypBOD7KDSwErg1GrNzZA93sx1H2T3WDakh9Sfz8I9poMLEquy8Ll4vfY3FncHPr+WXEFLQw5Sao/DG9Fr21q2zn1xZ4qUVxxWFskehO3KTG8qPip7CwH09ZgdWWeXQHQ1WE=
x-forefront-antispam-report:
 CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:PAVPR03MB10102.eurprd03.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(366016)(1800799024)(376014)(38070700021)(56012099003)(22082099003)(18002099003);DIR:OUT;SFP:1102;
x-ms-exchange-antispam-messagedata-chunkcount: 1
x-ms-exchange-antispam-messagedata-0:
 =?utf-8?B?Qk0xS013ZjhPNURsQ0pjUk9pdjJESDhqL1NmaVloRW5naGN2QkY5Z09seWRN?=
 =?utf-8?B?SjJieHRWR1FKVnZBM1NOZU43YzgxNW5kdk4rc3BQcEZpNGhuR3FYR1NXUDlI?=
 =?utf-8?B?TjVTNmdiQThPS0ZDK3pINnlqTkZHbms3QnQvaFlNYjBsQW1XVDNPa2NqQkty?=
 =?utf-8?B?ZVJJa01zd0ljRGZJR1dKenMvZTY5dkZWQktVQ3paWTB5emQzZERHNDBjTGxC?=
 =?utf-8?B?QXlWRjlINHl2aUNaMVNlNFExWDI4MCt2WmNIbjZZblZCM0FKaVRFYS9YTFN0?=
 =?utf-8?B?YVkrK2FoT1YzOUpoNGNlc05mRVk3N2E1TERIRXpjUU40UnVyMEsyNmw0YWww?=
 =?utf-8?B?ME1LYlh2aktjYm9uSWZnSzVZR2pxTmIwbVVSb2JNY2xGcXR2dzhHN3JvR3hE?=
 =?utf-8?B?b1NCMm5GejVDR3ZzL3o4U0xqYW1UU0RqQWtJOWxDSlJlQ2dqYVhxZFBjUzBR?=
 =?utf-8?B?Sm8yQ24waDRvYjh3ZVlLa3ArcWl3dVdzYSszVkpWNitBRE90MTFFeTcyNGpT?=
 =?utf-8?B?VGVRTS9YanZSQ0RtUUx1R09hNlNaa1lncEh4ZVk5WmZFNlRCcVg4NEhGWFZ0?=
 =?utf-8?B?aEhnNTN0N2tibUJmcUw5SS9ZT3BFZThJRXlpWDR4RnJvSE4xV1dLY0c4VjVl?=
 =?utf-8?B?cHNza09hOGRDOXBpK2dNRGFJeUVQTDIvMEZXSVV5WStDWnVEU3M1bjNxejlH?=
 =?utf-8?B?Ym9mb1liR21kRjRiU3NacFNsMFZxVlVleVVlN1prdTVRL29nSER3bkRBaVZ4?=
 =?utf-8?B?eTRaZXc3NWxMWVFiYnkrQ3B0OTFtR1dYTUcxNGovRDZENmlIWm5kbmVpZFRK?=
 =?utf-8?B?MnVDSzE3WjltdXFzL0J5Y2xOYkExN1o5dWxvSEZtek9iMXRwd1I4SnhyUFZC?=
 =?utf-8?B?bTVXOWI2VWh0MkxSMEwwb1hvNm5DZzhSd0NtL1hXQXpPOW1rVU94ZGhLK1ZH?=
 =?utf-8?B?ZmRvSVM1NWh6MWJYdEVaclU2d0ZYemhXdkNCS1hpclRKemRWNThYa1VOdTNj?=
 =?utf-8?B?Mk9WWThJdjNrUnV1czUzQ3p2akNidnErV1o4UFl6NVJ4eFE4L1YybjlUbXJL?=
 =?utf-8?B?b3hiMkxyM1lhVEl2R0VlNFJxOXJscmN4T1BuUXZPdjR2OU8xTzQ0UUppVWs2?=
 =?utf-8?B?UENSU3lUOTdMVjlBOVgyZnNYWXRGWE9WZ2lwNW1KUmZiSjBGaGt0YzdBUzZj?=
 =?utf-8?B?VC85WUNiejRkcy9vOFdpcGFOV0c4QVp4d25RTkNpell2a0ZiVTNEQVQzS09x?=
 =?utf-8?B?SHU2QVdaV3Q4bkVWRXZ2RjN6K3hMSlpZYmtqRG4ybERlNm85blFiRTRBQUND?=
 =?utf-8?B?dVllTEpxQUJkWUh3WlA5MWtMdjBuTkhMVktZUXI0M01VaHBaa3F6WFowbzB0?=
 =?utf-8?B?UG9FV2lmS2ZsZVlPTG1zOWMwSDNYc0g3V3YvVUVDVWNBWXpZM3pQKzh1c2lY?=
 =?utf-8?B?ZjZsb0xGejdCUG5yTEZKS0w5a0drTFlGNjA1ZVRrWlFOWVR4L2l4bHUvZWps?=
 =?utf-8?B?enZhaUpZOW1HUlFHbzNvZk5EMGRWdHN2YU9IbEJ0YlpLUWtoeXVpMGNpTkdH?=
 =?utf-8?B?aGhFSThvWllMWmlIbWpXRnMvbE83Q3h5dlFQdUxxd0xTZ3J3Uk5LajY2WXRO?=
 =?utf-8?B?Vmt2aU5tVXgySDBLQTA4Vy9IMGhZNUUvUXd1S2ZETHFxMnZVQTdRTEFyTTJE?=
 =?utf-8?B?QzNSaTdIeXBWbUFmSk1aMDZLZFdPZ1IyVFBUVjBrMWFubUl1cWV5NVNnbHJ3?=
 =?utf-8?B?L1FzMGN5NVorVWlJSThEUU5aTU5mSmNqYXg1NEZvbFphV2VUTnRKWmxzU0Zi?=
 =?utf-8?B?aTJ6Nm9teU5zUGh2alBqMUtLcjRSR1FxVlVzUU1xRnBzdjZnUFQrSDdLd3hr?=
 =?utf-8?B?T3lCakFzM09kTXI0d3h4YzFaeWFsZjBLZzZqemMzSWhPWWtTSC82ZVN2c3Bt?=
 =?utf-8?B?SmtvUkZsOXUrTVkram11RG10dnhPYUgzSE8zTEZ2c1U2U09ubGxZMDZMaVZs?=
 =?utf-8?B?dTM4Rno2SHF0QkhkMXk3Njc2QnFVVlhHY1luT1Mxc0tnTnpNUmNJWkZ1NEZG?=
 =?utf-8?B?bHR5OWZFSXJHTTlBd0xJZm1sazFBdER3V2ZQVXZWTm1NSEc2S29LeUt2Y2N2?=
 =?utf-8?B?SVRJSGtrRWdQUSszTkRVcHgxQkNOVDM4V3pxNHV5ams3ZkR4OTNTTWMyclBi?=
 =?utf-8?B?VU9KNC83aVJnQ3B2YWpLYkxjdWQ2M1FhckI3Rzl5SkE5YXNjbFZYZHRVNTJB?=
 =?utf-8?B?S0E5b3dHQ0VWalZsa2pFcUdsRU1nSGtRRXVuZS9kRDkwRWt0YSt3U2lBK0dl?=
 =?utf-8?B?alUvMEhlUEQ0blRad1hhVExyMWZ0N0VqZS9rbm51dzA2M1NRY2x2ZE5XS05F?=
 =?utf-8?Q?NiDhyuVUPc75sz+w=3D?=
Content-Type: text/plain; charset="utf-8"
Content-ID: <1F4B7C980A17D445A8B27296CDD17E4F@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: PAVPR03MB10102.eurprd03.prod.outlook.com
X-MS-Exchange-CrossTenant-Network-Message-Id: 17982b2e-43ec-4973-cfbb-08de9afe7090
X-MS-Exchange-CrossTenant-originalarrivaltime: 15 Apr 2026 14:51:13.3482
 (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: XJudqi0nyciJngUdQ3kjMAfpCfavqIxphbNOzIV9ZeSkcoRaDBV3wXU9v9/fJnai+7gH97lyMPhHQnKLnCzGRw==
X-MS-Exchange-Transport-CrossTenantHeadersStamped: GV1PR03MB10332
X-purgate-ID: tlsNG-ef75cf/1776264677-88F5E41E-2AD6CFCC/0/0
X-purgate-type: clean
X-purgate-size: 3052

DQoNCk9uIDMvMzAvMjYgMTU6MzIsIEphbiBCZXVsaWNoIHdyb3RlOg0KPiBPbiAzMC4wMy4yMDI2
IDEzOjU5LCBNeWt5dGEgUG90dXJhaSB3cm90ZToNCj4+IFdpdGggQ1BVIGhvdHBsdWcgc3lzY3Rs
cyBpbXBsZW1lbnRlZCBvbiBBcm0gaXQgYmVjb21lcyB1c2VmdWwgdG8gaGF2ZSBhDQo+PiB0b29s
IGZvciBjYWxsaW5nIHRoZW0uDQo+Pg0KPj4gQWNjb3JkaW5nIHRvIHRoZSBjb21taXQgaGlzdG9y
eSBpdCBzZWVtcyB0aGF0IHB1dHRpbmcgaHB0b29sIHVuZGVyDQo+PiBjb25maWcgTUlHUkFURSB3
YXMgYSBtZWFzdXJlIHRvIGZpeCBJQTY0IGJ1aWxkLiBBcyBJQTY0IGlzIG5vIGxvbmdlcg0KPj4g
c3VwcG9ydGVkIGl0IGNhbiBub3cgYmUgYnJvdWdodCBiYWNrLiBTbyBidWlsZCBpdCB1bmNvbmRp
dGlvbmFsbHkuDQo+Pg0KPj4gU2lnbmVkLW9mZi1ieTogTXlreXRhIFBvdHVyYWkgPG15a3l0YV9w
b3R1cmFpQGVwYW0uY29tPg0KPj4gLS0tDQo+PiB2Ni0+djc6DQo+PiAqIG5vIGNoYW5nZXMNCj4+
DQo+PiB2NS0+djY6DQo+PiAqIGRvbid0IGNoYW5nZSBvcmRlciBpbiBNYWtlZmlsZQ0KPj4NCj4+
IHY0LT52NToNCj4+ICogbWFrZSBocHRvb2wgYWx3YXlzIGJ1aWxkDQo+Pg0KPj4gdjMtPnY0Og0K
Pj4gKiBubyBjaGFuZ2VzDQo+Pg0KPj4gdjItPnYzOg0KPj4gKiBubyBjaGFuZ2VzDQo+Pg0KPj4g
djEtPnYyOg0KPj4gKiBzd2l0Y2ggdG8gY29uZmlndXJlIGZyb20gbGVnYWN5IGNvbmZpZw0KPj4g
LS0tDQo+PiAgIHRvb2xzL2xpYnMvZ3Vlc3QvTWFrZWZpbGUuY29tbW9uIHwgMiArLQ0KPj4gICB0
b29scy9taXNjL01ha2VmaWxlICAgICAgICAgICAgICB8IDIgKy0NCj4+ICAgMiBmaWxlcyBjaGFu
Z2VkLCAyIGluc2VydGlvbnMoKyksIDIgZGVsZXRpb25zKC0pDQo+Pg0KPj4gZGlmZiAtLWdpdCBh
L3Rvb2xzL2xpYnMvZ3Vlc3QvTWFrZWZpbGUuY29tbW9uIGIvdG9vbHMvbGlicy9ndWVzdC9NYWtl
ZmlsZS5jb21tb24NCj4+IGluZGV4IGI5MjhhNGEyNDYuLjAzZGZjZWU3ZmEgMTAwNjQ0DQo+PiAt
LS0gYS90b29scy9saWJzL2d1ZXN0L01ha2VmaWxlLmNvbW1vbg0KPj4gKysrIGIvdG9vbHMvbGli
cy9ndWVzdC9NYWtlZmlsZS5jb21tb24NCj4+IEBAIC03LDYgKzcsNyBAQCBPQkpTLXkgKz0geGdf
cHJpdmF0ZS5vDQo+PiAgIE9CSlMteSArPSB4Z19kb21haW4ubw0KPj4gICBPQkpTLXkgKz0geGdf
c3VzcGVuZC5vDQo+PiAgIE9CSlMteSArPSB4Z19yZXN1bWUubw0KPj4gK09CSlMteSArPSB4Z19v
ZmZsaW5lX3BhZ2Uubw0KPj4gICBpZmVxICgkKENPTkZJR19NSUdSQVRFKSx5KQ0KPj4gICBPQkpT
LXkgKz0geGdfc3JfY29tbW9uLm8NCj4+ICAgT0JKUy0kKENPTkZJR19YODYpICs9IHhnX3NyX2Nv
bW1vbl94ODYubw0KPj4gQEAgLTE3LDcgKzE4LDYgQEAgT0JKUy0kKENPTkZJR19YODYpICs9IHhn
X3NyX3NhdmVfeDg2X3B2Lm8NCj4+ICAgT0JKUy0kKENPTkZJR19YODYpICs9IHhnX3NyX3NhdmVf
eDg2X2h2bS5vDQo+PiAgIE9CSlMteSArPSB4Z19zcl9yZXN0b3JlLm8NCj4+ICAgT0JKUy15ICs9
IHhnX3NyX3NhdmUubw0KPj4gLU9CSlMteSArPSB4Z19vZmZsaW5lX3BhZ2Uubw0KPj4gICBlbHNl
DQo+PiAgIE9CSlMteSArPSB4Z19ub21pZ3JhdGUubw0KPj4gICBlbmRpZg0KPiANCj4gVGhpcyBs
b29rcyB3cm9uZyB0byBtZS4gVGhlcmUgYXJlIHg4Ni1zcGVjaWZpY3MgaW4gdGhhdCBmaWxlLCB3
aGljaCBzaG91bGRuJ3QNCj4gYmUgYnVpbHQgb24gQXJtLiBBbmQgdGhlIG5hbWUgb2YgdGhlIGZp
bGUgYWxzbyBkb2Vzbid0IGluZGljYXRlIGFueSByZWxhdGlvbg0KPiB0byBDUFUgbWFuYWdlbWVu
dC4NCj4gDQo+IEphbg0KDQp4ZW4taHB0b29sIHJlcXVpcmVzIHhnX29mZmxpbmVfcGFnZSBhcyBp
dCBoYXMgYm90aCBDUFUgYW5kIG1lbW9yeSANCmhvdHBsdWcgY29tbWFuZHMuIFdpdGhvdXQgYnVp
bGRpbmcgeGdfb2ZmbGluZV9wYWdlIGl0IGZhaWxzIHdpdGgNCg0KeGVuLWhwdG9vbDogc3ltYm9s
IGxvb2t1cCBlcnJvcjogeGVuLWhwdG9vbDogdW5kZWZpbmVkIHN5bWJvbDogDQp4Y19tYXJrX3Bh
Z2Vfb2ZmbGluZSwgdmVyc2lvbiBsaWJ4ZW5ndWVzdF80LjIyLjANCg0Kd2hlbiB0cnlpbmcgdG8g
ZG8gbWVtb3J5IG9wcy4NCg0KSXMgaXQgYW4gYWNjZXB0YWJsZSBiZWhhdmlvcj8gSWYgc28gSSBn
dWVzcyB3ZSBjYW4gYnVpbGQgeGdfb2ZmbGluZSBwYWdlIA0Kb25seSBvbiB4ODYuDQoNCi0tIA0K
TXlreXRh


From xen-devel-bounces@lists.xenproject.org Wed Apr 15 15:06:46 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 15 Apr 2026 15:06:46 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1282593.1565153 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wD1pA-000280-5b; Wed, 15 Apr 2026 15:06:40 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1282593.1565153; Wed, 15 Apr 2026 15:06: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 1wD1pA-00027t-2T; Wed, 15 Apr 2026 15:06:40 +0000
Received: by outflank-mailman (input) for mailman id 1282593;
 Wed, 15 Apr 2026 15:06:38 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <peng.fan@oss.nxp.com>) id 1wD1p8-00027n-JQ
 for xen-devel@lists.xenproject.org; Wed, 15 Apr 2026 15:06:38 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wD1p7-002iit-Uy
 for xen-devel@lists.xenproject.org; Wed, 15 Apr 2026 17:06:38 +0200
Received: from [10.42.69.6] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <peng.fan@oss.nxp.com>)
 id 69dfa97d-bab6-0a2a0a5309dd-0a2a4506a5cc-6
 for <xen-devel@lists.xenproject.org>; Wed, 15 Apr 2026 17:06:37 +0200
Received: from [52.101.69.16]
 (helo=AM0PR83CU005.outbound.protection.outlook.com)
 by tlsNG-16d1c6.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.0)
 (envelope-from <peng.fan@oss.nxp.com>)
 id 69dfa977-0df0-0a2a45060019-34654510a9d7-3
 for <xen-devel@lists.xenproject.org>; Wed, 15 Apr 2026 17:06:31 +0200
Received: from DB9PR04MB8461.eurprd04.prod.outlook.com (2603:10a6:10:2cf::20)
 by PAXPR04MB9470.eurprd04.prod.outlook.com (2603:10a6:102:2b3::15)
 with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9769.48; Wed, 15 Apr
 2026 15:06:28 +0000
Received: from DB9PR04MB8461.eurprd04.prod.outlook.com
 ([fe80::21f6:947a:1f40:18af]) by DB9PR04MB8461.eurprd04.prod.outlook.com
 ([fe80::21f6:947a:1f40:18af%6]) with mapi id 15.20.9769.046; Wed, 15 Apr 2026
 15:06: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-NXP1-onmicrosoft-com header.d=NXP1.onmicrosoft.com header.i="@NXP1.onmicrosoft.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=G/YegBjGjvFF6v1M2n/hBabdRgNfRarK31AZDLhxa0FEHM3EBHGBc8NCRpOeeVWQY1KCvjvY9GbcIYW+k/Di8Q5+tPY0POJznBSL/lxTZgqWUbp+0VvTrqaME38iP/XM5IoE2wAGhhYFRSkj520jW8INpd+nU9Bvvk9JJ80/atMf4CjM1Vy/EVf0tHAKT0JMvArhVlgOYpQ0q0RhT3LkoAxNPyRQ7GzRUdRQuTkKvUl/B5jetVKCBihDURBsS6+kivh6OlBvyzzzOsedeIqWJ1hLl3FVxGrnA0o+BP/VndP4GuwQoj8GpccFw4etuVjSAvG+U+uqq7L648B34qic1Q==
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com;
 s=arcselector10001;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1;
 bh=fmcvVWSkK3QeMTcIF/V8g/ybVObIa+ABL+fgg4jkOUY=;
 b=N1mMycjWO3sl6YOOdwvc6DgsSMNADFO4aK0K4U+NCCBrWXSCJdmxt5Mx/ACGH4CGBKrDI+NDqoy+YUpE93q+nTeT/kP1mahslfaEmXhpWJgIDH94CSCDyfyGyVUMWXDNLFFT8Kqztv94lCc7gdSwSXWNz2UaytX92t3xt8Z2e9gYJ9Ks+bWxhyBDC40aCorEkCQaDYVVe1lWdpATSjMFl3h3eHwQ17LoPyw7PTe7Zxdjj8zhGJxa76tFEHhrNfUTO7t5alA60RHL/nE8jYu/+ZKO9NcqjsO9tX2DaN+TKhGAmPt6VXRoMvtEXcjb1dsF+pmJmhDR1NR3C9Es1mKnQw==
ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass
 smtp.mailfrom=oss.nxp.com; dmarc=pass action=none header.from=oss.nxp.com;
 dkim=pass header.d=oss.nxp.com; arc=none
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=NXP1.onmicrosoft.com;
 s=selector1-NXP1-onmicrosoft-com;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck;
 bh=fmcvVWSkK3QeMTcIF/V8g/ybVObIa+ABL+fgg4jkOUY=;
 b=XbdyP+DV3mu9iZx/XFaF7SIvBA2pehw3uUd5aa9SNL4V7ZZXrOyTkiqKpWV6g2kipioadIYeW40VrppYixT6P/mR96MQh9la276Omfx5MRgwobrYtCTP94Z0Fh4+/6P3pLFzZBezmSDI0OyQVr0nWxMkKyntILFHPl2B6/4SDTZXUIEHp3vpQfOeYY3TC2EV5jQSetZoX/Rwow0HZCmjowmhFrST48YSxLGw01oF/6sJCJrbMmZMkJ+4e/F+cjmVvV6mH9onRHO4WjM6/BrueoV7/YqzJrRMgKj+ar1t+DGHp0DG0HN2D4ZJ1WP+4xPfdnU8ug+Q3YsBlqU3EZP8IA==
Authentication-Results: dkim=none (message not signed)
 header.d=none;dmarc=none action=none header.from=oss.nxp.com;
From: "Peng Fan (OSS)" <peng.fan@oss.nxp.com>
Date: Wed, 15 Apr 2026 23:08:36 +0800
Subject: [PATCH RFC] xen/swiotlb: avoid arch_sync_dma_* on per-device DMA
 memory
Content-Type: text/plain; charset="utf-8"
Content-Transfer-Encoding: 7bit
Message-Id: <20260415-xen-swiotlb-v1-1-de24eda3c0fd@nxp.com>
X-B4-Tracking: v=1; b=H4sIAPOp32kC/6tWKk4tykwtVrJSqFYqSi3LLM7MzwNyDHUUlJIzE
 vPSU3UzU4B8JSMDIzMDE0NT3YrUPN3i8sz8kpwkXWOTRENLiySzZMMUMyWgjoKi1LTMCrBp0Up
 Bbs5KsbW1AJtHq/JiAAAA
X-Change-ID: 20260415-xen-swiotlb-34a198b6c1d6
To: Juergen Gross <jgross@suse.com>, 
 Stefano Stabellini <sstabellini@kernel.org>, 
 Oleksandr Tyshchenko <oleksandr_tyshchenko@epam.com>
Cc: xen-devel@lists.xenproject.org, iommu@lists.linux.dev, 
 linux-kernel@vger.kernel.org, Peng Fan <peng.fan@nxp.com>
X-Mailer: b4 0.14.2
X-ClientProxiedBy: MA5P287CA0226.INDP287.PROD.OUTLOOK.COM
 (2603:1096:a01:1b4::11) To DB9PR04MB8461.eurprd04.prod.outlook.com
 (2603:10a6:10:2cf::20)
MIME-Version: 1.0
X-MS-Exchange-MessageSentRepresentingType: 1
X-MS-PublicTrafficType: Email
X-MS-TrafficTypeDiagnostic: DB9PR04MB8461:EE_|PAXPR04MB9470:EE_
X-MS-Office365-Filtering-Correlation-Id: 389c48ec-d835-4f4f-9c53-08de9b0091b2
X-MS-Exchange-SharedMailbox-RoutingAgent-Processed: True
X-MS-Exchange-SenderADCheck: 1
X-MS-Exchange-AntiSpam-Relay: 0
X-Microsoft-Antispam:
	BCL:0;ARA:13230040|52116014|376014|366016|19092799006|1800799024|18002099003|38350700014|56012099003;
X-Microsoft-Antispam-Message-Info:
	6ZjO6FFmkIuqO3Zki60YObNpRN0M9BMGRrNX5m5cSn38ed1JJuzkfs/R/9KqmB+BCyoAZ5RTfnccrJlu9oLEXXLKzm1fLYjSk1AlBkNwjOboxpfl3sYE6vplOLkWukNg0CW4Xq9WkLYwu+654IJG2cKmW1DjaHGpWFDmKYOVFBMCbXsQZNKNJMPsNb2dTLl2y4yULESD4sbm9EuljnZJBVO4ixkIRcaBc1lhPMrz+j+NMoIfEpOnkL71557ZBjrC4Qx3eWRpaKlmyQI2/cevQ4SgJz0EhUi0Wj72JOxUqqBNdpqiY4JpeBoC9D/aTsLEvvh+Va0/VJR/M2PCijzC9+wV5TQwBYDaGuHROuQ79L9WJQvFU9U5vh5aMtF6Ybg8hW6fBoBMdZ5WySj/aWxRXu3XHKSwcCB3sQTt9ulcYoNCkj6I9MOT3UKzrVJaFVZY9c4DxpMoUjsThjouirz6wy9BuQbPKfUSKroU79RwQ2M6ge5j01IH7/BAbIXTE/SROxzH5+XvUtLLIdSInJLj/MBpWjkbhYR4w6KL7grESFbTE9u1Ft9HJca7SZ4a3HYZfR5USmfUo21iDtF7SxQSgkA+OuiKvp0Xetxc11STzqe5R9m0oYzqxqGJq5MiBgf1jxPgPn13d4JhRBWxBU+xgfu6iYySkSHTC0/8F1xjOXkYQpe+v9Re3Df////KF5Hxjmbzpd/y6jIhjfqOsR9Y5evIPBPuwTGY+0wyxDGsYGWzLDAsGOISWOOrJAhcdZOfvAqYgPXYplqrkdEad1mgcum7CNQNwTTA7wGmxC5tz9k=
X-Forefront-Antispam-Report:
	CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:DB9PR04MB8461.eurprd04.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(52116014)(376014)(366016)(19092799006)(1800799024)(18002099003)(38350700014)(56012099003);DIR:OUT;SFP:1101;
X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1
X-MS-Exchange-AntiSpam-MessageData-0:
	=?utf-8?B?My9MZjNLZHB0Umhmakc4MExSYTRkUDFKeW8wSE5YR0JtSFk1Lzd0Vm5LN3Iz?=
 =?utf-8?B?NkRYYVMrMkVjTlF1QWxkdFBXVHBlOGFXTFNvRzF2ZHoyV0l4M2V3TzU4d0Zq?=
 =?utf-8?B?K2RQSWlqcG5UNzhsdFhEZEoxZGJMaFNaNlZEUmpIOTd2c1h6UTNWa1MrNDhU?=
 =?utf-8?B?aGdwY0RsUG9Pem8vUElHdTVhMHpTczhqN20vM0sxYXBHKzJiNWJoaHRObDhY?=
 =?utf-8?B?RGYrMnhKa1ZGblhDdHZQTVIwQ2pTQjQ4WFBjRnBNdkJzSjN0QnJwWkZ2YnUw?=
 =?utf-8?B?NnRJN0l0eWVabGVoK0QxSTY3bktibnNjVDRsRmZHNTJWb3g4R050ODJ5aHJZ?=
 =?utf-8?B?eENFSzZvME1SczJUMHZJSUtjakpva1ZrOFNxQndIS21oOXphWWpSeW9Gb1ZO?=
 =?utf-8?B?R0ZNY2NVSzNHUWQwVWJZWUlLMFNwYU5HL2poNU9paW9XQlRyRzZNSVF6RDk2?=
 =?utf-8?B?UFNRZWRBQWJjVjNEcm81a0ppU2JKR2NyRDRJZUc0OFhlV1ErWTdvK3hqU2M5?=
 =?utf-8?B?THg5bmI2ZTl1cHNseitWYXBLeWpscDNycnE5QTFhTEN4bGJQVXR4a0FSZ1FX?=
 =?utf-8?B?bE81VlVmRHM5dzY1bnhLRDNOMjlsRnAxeWN6eTFCY0VSdGpxQWp0VlNKMndt?=
 =?utf-8?B?aGJFRC85cnAwNXd6UWxydm1rVENPajZ2L3hMZStkaHlGUzRxTXlPdDlTeFNB?=
 =?utf-8?B?ZGxvR3RzZTY4QnhIaW53U3hVRG9LTCtvR0VzaUt5M0syYy9RbVk5b2pxb0ZF?=
 =?utf-8?B?M0w4N2ZoWWYxMXd2NWNFYk1tNjVPU01Pa3oyeUxmMGpZL3c4UE56c0pONXJu?=
 =?utf-8?B?L0JQRVpoQm50cWR5bUFtOXlEdVhWWTBRWGtlT2xHaEVzZ3VzZ3RSdWxlekQr?=
 =?utf-8?B?L2ZWaDQ3eUE5eU5tYldrRVJubE9aUHJHQlp1bGxXZHRQcmRXaFh2ZWZvT1RR?=
 =?utf-8?B?SDB1UzhrSTdxWG1McTQxVitCRUk5N3JTRGRrc2loNjRLbUFZN0dwWFFIOENa?=
 =?utf-8?B?VGtzcEJ4OVFrd3pLTitremhNYkI3enhTRWZEMERsVzN4VkJMdjJ3aTFnanhj?=
 =?utf-8?B?MTVhQUJ3VHFzQis5eVRZY09YaDNReUdQUmpHMjI4WGkwZktYWWtwbktZbHh4?=
 =?utf-8?B?bXpwVzFzamtFajdKWE9rQitqNlhRRlJVdnVtOFBuWlJiRm9XSHZkei9zMWM4?=
 =?utf-8?B?UUFUU2RFV2VZUFJsQU84eGlNNzNIRFJjRVo2QVhBbGJucExXc3FRekRnV05V?=
 =?utf-8?B?cWZoVlJNdzB6aklKSER0bzdLWjMzZUVrcWdkbGJMNmRPR251ZUNxWjhMQnJV?=
 =?utf-8?B?QXdSYytlbEh6OW81bmlISDhLeFoybjR4TmtPRnRIeGlzcGMvblBiK0srUWFD?=
 =?utf-8?B?Qm5IYWtaSjRXd0VwYUNYWllHSVVwSnZmczlrZm8vOHo2ZjZlMFVQZVg1eSs0?=
 =?utf-8?B?bVRKT3JYbHF0SmhZUEZyYjBsNVhPeHVCYkZ2d2dLbkhNdWVXc0hUREZ2VVdE?=
 =?utf-8?B?eEJQWHNOUDJHdVVETkZQd0hiTFJuaDQ0VElhbGhnanN5a3RKc2hWdjJ6cVpw?=
 =?utf-8?B?OWwvYTBZbW1maFMyYWUzSjdBOHkrbGl1cGlXMmJhczI4MTVoVEkvUkdVRHlJ?=
 =?utf-8?B?RDQ3SGk5aFhwZTVQaVFvMytoNlRMQ29CNmRKQi8xWldIdUczN0pkVTV6aVY3?=
 =?utf-8?B?Z1NhV0FDOWh5R3pCcUtwVFB6VGJ1b2wwZnVxbXlaQ0huV3B4OTRxclJDZFVV?=
 =?utf-8?B?eENQZDE2L3dUTU9yaHEzRFMrUU5wMS9PTnYyU2tFd01tUllRc01Zd0Nqb2Uv?=
 =?utf-8?B?SHZ2OFZ4elhPaUxsRVB6dGsycURwMVhRTFlqck1RbXRhTVJSM1F4alI0QlVB?=
 =?utf-8?B?ZUYwcStlVHB0djVZcGRYR05oOVR0bWdndDNMYWxnK2xzNXhVUEV4MGNNWWNX?=
 =?utf-8?B?QzdlMmcySjRWaFkybmtoTXI2YTd6azJJblB0U0RmeFMzMW50RHpkNHZSSnMv?=
 =?utf-8?B?T3BubkpFWnNNSjh6OUlXZGVLbjdzYkpjMWtIT3BpZUd0MVN0cG95dGxOZTU0?=
 =?utf-8?B?T2RyNXh3UTgxY0RycDVFY0dVNnF5K0d0SVRLaHVISDZFbHJXM0o4d242VlR2?=
 =?utf-8?B?MVE3UkFvN0NENDRQcHJBMVBkaEpzdkhhaVZoYWlkbHZhTWVkTU5PWUZyYWNZ?=
 =?utf-8?B?dHRhTG9rZm9keEtHOWJaZlVRVVpSMHVGSGVXc0hjNGNMUzdrYlJjLzVnbG1I?=
 =?utf-8?B?NHFDckdzRlBhcTZKSXY3VWdodFY3NG1pZE1iNGJJT3J5TGpZcmpJeXBBKytY?=
 =?utf-8?B?YWhFeTFYYmhhU3hTSGxhc1B1RXF1U2t6dDNBSTZkN2VqL28wRmpLUT09?=
X-OriginatorOrg: oss.nxp.com
X-MS-Exchange-CrossTenant-Network-Message-Id: 389c48ec-d835-4f4f-9c53-08de9b0091b2
X-MS-Exchange-CrossTenant-AuthSource: DB9PR04MB8461.eurprd04.prod.outlook.com
X-MS-Exchange-CrossTenant-AuthAs: Internal
X-MS-Exchange-CrossTenant-OriginalArrivalTime: 15 Apr 2026 15:06:28.2062
 (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: 2xNfQ/kYJg/5HWIFG6LcqcUDkOI5eHnBOxSU9LqS9k/P7BJgjW1QhrrWmKNX7t1VnImQdaJQZrE87fD7+o900w==
X-MS-Exchange-Transport-CrossTenantHeadersStamped: PAXPR04MB9470
X-purgate-ID: tlsNG-16d1c6/1776265591-644493D8-4CF1AFE5/0/0
X-purgate-type: clean
X-purgate-size: 3649

From: Peng Fan <peng.fan@nxp.com>

On ARM64, arch_sync_dma_for_{cpu,device}() assumes that the
physical address passed in refers to normal RAM that is part of the
kernel linear(direct) mapping, as it unconditionally derives a CPU
virtual address via phys_to_virt().

With Xen swiotlb, devices may use per-device coherent DMA memory,
such as reserved-memory regions described by 'shared-dma-pool',
which are assigned to dev->dma_mem. These regions may be marked
no-map in DT and therefore are not part of the kernel linear map.
In such cases, pfn_valid() still returns true, but phys_to_virt()
is not valid and cache maintenance via arch_sync_dma_* will fault.

Prevent this by excluding devices with a private DMA memory pool
(dev->dma_mem) from the arch_sync_dma_* fast path, and always
fall back to xen_dma_sync_* for those devices to avoid invalid
phys_to_virt() conversions for no-map DMA memory while preserving the
existing fast path for normal, linear-mapped RAM.

Signed-off-by: Peng Fan <peng.fan@nxp.com>
---
 drivers/xen/swiotlb-xen.c | 17 +++++++++++++----
 1 file changed, 13 insertions(+), 4 deletions(-)

diff --git a/drivers/xen/swiotlb-xen.c b/drivers/xen/swiotlb-xen.c
index 2cbf2b588f5b20cfbf9e83a8339dc22092c9559a..b1445df99d9a8f1d18a83b8c413bada6e5579209 100644
--- a/drivers/xen/swiotlb-xen.c
+++ b/drivers/xen/swiotlb-xen.c
@@ -195,6 +195,11 @@ xen_swiotlb_free_coherent(struct device *dev, size_t size, void *vaddr,
 }
 #endif /* CONFIG_X86 */
 
+static inline bool dev_has_private_dma_pool(struct device *dev)
+{
+	return dev && dev->dma_mem;
+}
+
 /*
  * Map a single buffer of the indicated size for DMA in streaming mode.  The
  * physical address to use is returned.
@@ -262,7 +267,8 @@ static dma_addr_t xen_swiotlb_map_phys(struct device *dev, phys_addr_t phys,
 
 done:
 	if (!dev_is_dma_coherent(dev) && !(attrs & DMA_ATTR_SKIP_CPU_SYNC)) {
-		if (pfn_valid(PFN_DOWN(dma_to_phys(dev, dev_addr)))) {
+		if (pfn_valid(PFN_DOWN(dma_to_phys(dev, dev_addr))) &&
+		    !dev_has_private_dma_pool(dev)) {
 			arch_sync_dma_for_device(phys, size, dir);
 			arch_sync_dma_flush();
 		} else {
@@ -289,7 +295,8 @@ static void xen_swiotlb_unmap_phys(struct device *hwdev, dma_addr_t dev_addr,
 	BUG_ON(dir == DMA_NONE);
 
 	if (!dev_is_dma_coherent(hwdev) && !(attrs & DMA_ATTR_SKIP_CPU_SYNC)) {
-		if (pfn_valid(PFN_DOWN(dma_to_phys(hwdev, dev_addr)))) {
+		if (pfn_valid(PFN_DOWN(dma_to_phys(hwdev, dev_addr))) &&
+		    !dev_has_private_dma_pool(hwdev)) {
 			arch_sync_dma_for_cpu(paddr, size, dir);
 			arch_sync_dma_flush();
 		} else {
@@ -312,7 +319,8 @@ xen_swiotlb_sync_single_for_cpu(struct device *dev, dma_addr_t dma_addr,
 	struct io_tlb_pool *pool;
 
 	if (!dev_is_dma_coherent(dev)) {
-		if (pfn_valid(PFN_DOWN(dma_to_phys(dev, dma_addr)))) {
+		if (pfn_valid(PFN_DOWN(dma_to_phys(dev, dma_addr))) &&
+		    !dev_has_private_dma_pool(dev)) {
 			arch_sync_dma_for_cpu(paddr, size, dir);
 			arch_sync_dma_flush();
 		} else {
@@ -337,7 +345,8 @@ xen_swiotlb_sync_single_for_device(struct device *dev, dma_addr_t dma_addr,
 		__swiotlb_sync_single_for_device(dev, paddr, size, dir, pool);
 
 	if (!dev_is_dma_coherent(dev)) {
-		if (pfn_valid(PFN_DOWN(dma_to_phys(dev, dma_addr)))) {
+		if (pfn_valid(PFN_DOWN(dma_to_phys(dev, dma_addr))) &&
+		    !dev_has_private_dma_pool(dev)) {
 			arch_sync_dma_for_device(paddr, size, dir);
 			arch_sync_dma_flush();
 		} else {

---
base-commit: 66672af7a095d89f082c5327f3b15bc2f93d558e
change-id: 20260415-xen-swiotlb-34a198b6c1d6

Best regards,
-- 
Peng Fan <peng.fan@nxp.com>



From xen-devel-bounces@lists.xenproject.org Wed Apr 15 15:07:08 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 15 Apr 2026 15:07:08 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1282600.1565162 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wD1pc-0002ZH-FS; Wed, 15 Apr 2026 15:07:08 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1282600.1565162; Wed, 15 Apr 2026 15:07: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 1wD1pc-0002ZA-CP; Wed, 15 Apr 2026 15:07:08 +0000
Received: by outflank-mailman (input) for mailman id 1282600;
 Wed, 15 Apr 2026 15:07:07 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <Luca.Fancellu@arm.com>) id 1wD1pa-0002We-Un
 for xen-devel@lists.xenproject.org; Wed, 15 Apr 2026 15:07:07 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wD1pa-002n71-BW
 for xen-devel@lists.xenproject.org; Wed, 15 Apr 2026 17:07:06 +0200
Received: from [10.42.69.1] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <Luca.Fancellu@arm.com>)
 id 69dfa98f-e002-0a2a0a5209dd-0a2a450194c6-28
 for <xen-devel@lists.xenproject.org>; Wed, 15 Apr 2026 17:07:06 +0200
Received: from [52.101.83.1]
 (helo=GVXPR05CU001.outbound.protection.outlook.com)
 by tlsNG-d62444.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.1)
 (envelope-from <Luca.Fancellu@arm.com>)
 id 69dfa999-c1f2-0a2a45010019-34655301e223-3
 for <xen-devel@lists.xenproject.org>; Wed, 15 Apr 2026 17:07:05 +0200
Received: from PR3P251CA0023.EURP251.PROD.OUTLOOK.COM (2603:10a6:102:b5::10)
 by GVXPR08MB11398.eurprd08.prod.outlook.com (2603:10a6:150:2e5::8) with
 Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9769.48; Wed, 15 Apr
 2026 15:06:59 +0000
Received: from AM4PEPF00025F9B.EURPRD83.prod.outlook.com
 (2603:10a6:102:b5:cafe::dd) by PR3P251CA0023.outlook.office365.com
 (2603:10a6:102:b5::10) with Microsoft SMTP Server (version=TLS1_3,
 cipher=TLS_AES_256_GCM_SHA384) id 15.20.9769.48 via Frontend Transport; Wed,
 15 Apr 2026 15:06:58 +0000
Received: from outbound-uk1.az.dlp.m.darktrace.com (4.158.2.129) by
 AM4PEPF00025F9B.mail.protection.outlook.com (10.167.16.10) with Microsoft
 SMTP Server (version=TLS1_3, cipher=TLS_AES_256_GCM_SHA384) id 15.20.9846.0
 via Frontend Transport; Wed, 15 Apr 2026 15:06:57 +0000
Received: from DU2PR08MB7272.eurprd08.prod.outlook.com (2603:10a6:10:2d7::16)
 by AM8PR08MB6611.eurprd08.prod.outlook.com (2603:10a6:20b:36b::15)
 with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9769.48; Wed, 15 Apr
 2026 15:05:54 +0000
Received: from DU2PR08MB7272.eurprd08.prod.outlook.com
 ([fe80::5d34:206f:373:a323]) by DU2PR08MB7272.eurprd08.prod.outlook.com
 ([fe80::5d34:206f:373:a323%6]) with mapi id 15.20.9769.046; Wed, 15 Apr 2026
 15:05: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=arm.com header.i="@arm.com" header.h="From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck"; dkim=pass header.s=selector1 header.d=arm.com header.i="@arm.com" header.h="From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck"
ARC-Seal: i=2; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=pass;
 b=kmhHU+gDiTOVsVNCsBcLJV/c+Qba7qr5lvV70IqJZRJUqIcFeaee485ue03JQOy0wlAP788gBOaKAl8jA09S5NmGEjC43W0WjrW6+jup51bCKe9KX9HYyPRb5AVSAET4Qrf0h7PRnaODNKAypxe8CrSgkDpOEF+6+WYA4BEY0OFP1bIrOaCVCzQ5Itofcv6ixxaIEv2EMqnsyk4XaHy9oHLwx6LB5QjKup+E7LFGsWYFWfyOSVvBLloqWbw1+RwucWyetrLKx3WxujZX1jFolgX7nXVmdEBTn3KIOlOR4wKxxdbcUz2Jm/z4nTxYWyvOq8sCA7OX2j54Hq/8ogAP9g==
ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com;
 s=arcselector10001;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1;
 bh=Wo/T6ByA8fqWtDlMUx4LiAYm7Wr4gCGAllXZXFM8KNE=;
 b=qhdBNPZNeAJnPCVwDKMkUORHxkqNCVsY3bRSu6p25OHpb5iXVGGdvkBjJ9/e6wT7ocKZ7J4iS+bZ3e2Iohk8cJPKHolaAL/6xNq3rRmIiSIzBtundqb577hBaw2PJRLBLioGfq7uMKggfsJkaqY133CKVTfxLnj8pdwlh0Riia7cFr87g3DEeg/9nX7m0JxxEtF8f/yx52vQrUdLGieWDZtbsV/YTQpVQP/bZFz7Oa834fB1cSKp2amAYbPWqlS9JM+IGxVczo6ckF4Yjtww4jPOVTGpfM6Lq0Rq/I+/dkD7m2LtrQhatbPbfJP6eCc7hXwRlH7QkoXi9zEaKkWeGA==
ARC-Authentication-Results: i=2; mx.microsoft.com 1; spf=pass (sender ip is
 4.158.2.129) smtp.rcpttodomain=amd.com smtp.mailfrom=arm.com;
 dmarc=bestguesspass action=none header.from=arm.com; dkim=pass (signature was
 verified) header.d=arm.com; arc=pass (0 oda=1 ltdi=1
 spf=[1,1,smtp.mailfrom=arm.com] dkim=[1,1,header.d=arm.com]
 dmarc=[1,1,header.from=arm.com])
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=arm.com; s=selector1;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck;
 bh=Wo/T6ByA8fqWtDlMUx4LiAYm7Wr4gCGAllXZXFM8KNE=;
 b=Dx2PLMR9Q6+jhoDQoowaB8m5islUSgDoNxmYRF180fXDD2Dj1Q5tQ6UZRn6/xKxtu32n33TvZHA/if6+Kp8rayznEaV70SfhbE/2tQUNEHvamTlzL4PGgEkm2VBeCs3G4R+rZMVaY3cFi8JynqEtHZwqSqsepOSiZnFnmG9EihE=
X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 4.158.2.129)
 smtp.mailfrom=arm.com; dkim=pass (signature was verified)
 header.d=arm.com;dmarc=bestguesspass action=none header.from=arm.com;
Received-SPF: Pass (protection.outlook.com: domain of arm.com designates
 4.158.2.129 as permitted sender) receiver=protection.outlook.com;
 client-ip=4.158.2.129; helo=outbound-uk1.az.dlp.m.darktrace.com; pr=C
ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none;
 b=ex/A+Nf7UCgOO35X3PCk1RH7HqJCTmEOnN9DPTapkrW3TlBpbQp+VzmGevR2OCXOlGXu2JoDK2MlqhRtalJJSJ19AxEc9ZDDDuHt8tj5cq06yClyD25GCUv1i59AD1NuxRzn90GYzRVrmRzZqE7p6GeD10GnDWlLCKKfD5mE1JlV7q9E6h8bJ4I9tp+YfOp4Es1spcu/sF88VlfGxLKMbRpnXnN1Tzagtkd2pH8kwXhN0fRv01Fm+EuYEhaYhfhFTHN1hkfp3CoKGup7mNJ/YlM+/99HfMmKiAX5ITRD/ZDHLJhENb/X7r5VKRAfqG8qe0Ceo7Eztxr4D7uCp58sjA==
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com;
 s=arcselector10001;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1;
 bh=Wo/T6ByA8fqWtDlMUx4LiAYm7Wr4gCGAllXZXFM8KNE=;
 b=xwjmYnQWDpGuOSbsiDM2gOTPWUYi3IO8eUqLqeD6Ov9wiZ6Dfl6I9aCGSdGiQEq3AaL5z+oVxAEUUKlNHQKXQW4nld6c7OqnBz+w4JK2QMDosvLkpNJQKxR0hMQQSvz9qV7lidavWxaL/izhO4qIYTK+Qvy3Ov8BCTvUDC57Y+NbFF4I7lvV8FqPdxRwh7nWn3kVSO0ErrbfyOVLudg1OmSKd5x5Rm6T4U8LNehm9A5s8LkXVThHO402RJRDa4yL915Nl4PSlBiHe52VL5JL85rApVWrv8YuYR0yzNW+/uXMyE5jHMiyXDD9ysaLauhVt2U0o3LYte6t//2IAkWC2g==
ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass
 smtp.mailfrom=arm.com; dmarc=pass action=none header.from=arm.com; dkim=pass
 header.d=arm.com; arc=none
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=arm.com; s=selector1;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck;
 bh=Wo/T6ByA8fqWtDlMUx4LiAYm7Wr4gCGAllXZXFM8KNE=;
 b=Dx2PLMR9Q6+jhoDQoowaB8m5islUSgDoNxmYRF180fXDD2Dj1Q5tQ6UZRn6/xKxtu32n33TvZHA/if6+Kp8rayznEaV70SfhbE/2tQUNEHvamTlzL4PGgEkm2VBeCs3G4R+rZMVaY3cFi8JynqEtHZwqSqsepOSiZnFnmG9EihE=
From: Luca Fancellu <Luca.Fancellu@arm.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>, Jan Beulich <jbeulich@suse.com>
Subject: Re: [PATCH 2/6] xen/dt-overlay: fix rangeset leak and dead code in
 domctl path
Thread-Topic: [PATCH 2/6] xen/dt-overlay: fix rangeset leak and dead code in
 domctl path
Thread-Index: AQHczMxIjpIzSUmpeUSPrgyPaY80gLXgOPiA
Date: Wed, 15 Apr 2026 15:05:53 +0000
Message-ID: <33C5577E-F6AE-4FC2-BE53-879BA4EB6198@arm.com>
References: <20260415113700.107915-1-michal.orzel@amd.com>
 <20260415113700.107915-3-michal.orzel@amd.com>
In-Reply-To: <20260415113700.107915-3-michal.orzel@amd.com>
Accept-Language: en-GB, en-US
Content-Language: en-US
X-MS-Has-Attach:
X-MS-TNEF-Correlator:
x-mailer: Apple Mail (2.3826.700.81.1.6)
Authentication-Results-Original: dkim=none (message not signed)
 header.d=none;dmarc=none action=none header.from=arm.com;
x-ms-traffictypediagnostic:
	DU2PR08MB7272:EE_|AM8PR08MB6611:EE_|AM4PEPF00025F9B:EE_|GVXPR08MB11398:EE_
X-MS-Office365-Filtering-Correlation-Id: cba028a4-ced4-44ea-d482-08de9b00a333
x-checkrecipientrouted: true
nodisclaimer: true
X-MS-Exchange-SenderADCheck: 1
X-MS-Exchange-AntiSpam-Relay: 0
X-Microsoft-Antispam-Untrusted:
 BCL:0;ARA:13230040|376014|1800799024|366016|56012099003|18002099003|22082099003|38070700021;
X-Microsoft-Antispam-Message-Info-Original:
 NqMkLMq6zwMVkqClthsEV8yypB9/g0N4hmQKkYCojcFj2stOfCzvg9Fuz7h5hZqcv9FtGK1iAwHuHgHMJiE/frs84Upx2SEB5D6cAi37gW1gDta5njpDSJGPPUN4e780yOp+Hkom17omL6pY8NyOoHg0b8C0+pagk0fSaSjN6xLp8mxnbQBlQYUurHxTDwOPaEaYuZJ5gzpqjb+LP5LDTDcR099J0IQxwlhT24BwYWnN81RBvtPKAF0Ce5rApO8RPHWOZrL4RNyoIN913TDcOTGnhNs+m798+Efk5jg2QuneYBschzLtdeH5c16RWl4MJfh8DjgGw0SDmgsXBgXDDisVzyh3S1QtNwySpRWUsSL4TezD6k6VHTNPBS5nLCS9zmMwPpGnmbcfBNn8QZcRqgMpO1+HpW4lfZqVPN4+gPKb/iyGAHZCnF0FoYVZrIgKqOCEu5ZPC3raH2wSwhp9fGfHv/dDMUIla3fOsmNny34MBAWD4pXEywU/FVSIBIxftkc/MZW+ca29ibRuAhQF0iCtE3cXJC9ZwsFj0PN8YbPIJNGrWQ+xZcQIfstf8Ly+5WJ32evI0zrDoI3xf4AyKmPu6CmGk3oYHHaZdvu4aih8TCXIPsMnmqpHe7Jp1gcTRu7tlMXOnwtUmXQGE8GMMmrmTViFAYeRXKintRFDCRkeH8SYVZK9W4Y2k3TowXg+1RqnDj6Ge/lgfmK/xUA/h8zcdhOSIDzx5SMiUYrD1i6aWTVKTSH3taEyeCXYNk4lEwMFuy/CT1SPeB5DU+mQmyyB3iL6MnqjltK0DBFzvu4=
X-Forefront-Antispam-Report-Untrusted:
 CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:DU2PR08MB7272.eurprd08.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(376014)(1800799024)(366016)(56012099003)(18002099003)(22082099003)(38070700021);DIR:OUT;SFP:1101;
Content-Type: text/plain; charset="us-ascii"
Content-ID: <DB4D5317EA736B43B78901BCFAD45BE3@eurprd08.prod.outlook.com>
Content-Transfer-Encoding: quoted-printable
MIME-Version: 1.0
X-Exchange-RoutingPolicyChecked:
 RrjQuAIFdSY9z8XZ9zBbbNrlQWpUWQugcB0C9vB+40Ps2/XRqlhE6XDhu97QRWV3fn/E6Gq8wPw3ZhmJ/hzqNajBiopRirYezjtKRTbT4HT3NGWcV+mFCVJKSAFm9gehWe6j2WCTLT/+cfeG6WwUErsgLO6w1T5UW0ZNy/gUJH88IOlygsTK9qShj0xiLK+IKSpMoQfiSVogzYNvCYd5HheedQTCX/Dl0W87l0XpzcgixFxjXi3+hixfwp9jPyvArg/ngnfvj3l3Eh7FYzse27FJrR3ZyNISGe7Jgl1ScHPNu9AlbRlUlwFJutaOAP3O7PizLLwvxP1t8iIE7tqfaA==
X-MS-Exchange-Transport-CrossTenantHeadersStamped: AM8PR08MB6611
X-EOPAttributedMessage: 0
X-MS-Exchange-Transport-CrossTenantHeadersStripped:
 AM4PEPF00025F9B.EURPRD83.prod.outlook.com
X-MS-PublicTrafficType: Email
X-MS-Office365-Filtering-Correlation-Id-Prvs:
	1b76ece7-65fc-484a-cac5-08de9b007d3e
X-Microsoft-Antispam:
	BCL:0;ARA:13230040|35042699022|1800799024|14060799003|36860700016|376014|82310400026|56012099003|22082099003|18002099003;
X-Microsoft-Antispam-Message-Info:
	B5AhMwmbvjbbJ/FU9zkKFezWuqpckQu1sLYifFKnxkDS+ErETR0w3MKhgKZlAZGHQ2w6N+E1ToB25QzpOGLVMLlYN0br7AwMFy9cpmgE+joNw3OuWvf8yEWvzOv3iL6hIG02UKya/sQ3QMWxnMGw6hOOpCFwIcw1VgcFFtaUYAMESh9ozEzlfB9u5Y6I6n/xsuvkBnG0B6jiDJlS0/lfyOtv0FFp+r1xj2bZeTiXhAkjpu4pI3ya+SZsHtRjfm55Fy6LJv73ngpdyuEWJOPK4hm/7aTwlNAnCDUvV6WkhqWolNpYgvoId4Dh5UI16kU71+nV5rd2tQKEhnQz2KKHcz/kDjGEnDeyKKct8vStvXGo/0WNS0RalnusIxBrVRYvonpwtXU+XDeENqx17T+1atdzcQIZ3oB/Vf/J4wrwsuO5SxOqps2N9V4JX7JVAottTYDW17klVKbM2RdGCFb9H45t3GzasypjAYBBewXpt97qMygGa6Yed1Aneri9E/EdxHYUQongvVNDm5XKmUWZDgvDShY4Y0qC+NyBue/r/grlp6A09r87wDaPAziC6DuZPnZaenlVwOfWCswRjBhM1Q/vZ3LvGqbRB/HCxcfxwJk1BeXZlYhg5jPwLs8Coiv8FojmK8jgjSglLkgTkPrMRpV25dnWW5atPd0i6lZRkCI7o/uEphmXWBwi8mh8Au2guk3PkL1Vk4tNIvj2fCylXCcJzF5q/fEyDgqxIb2mEIhky19KWTtO/hdI8dN6qQQGpjswb0IBoumTFArYZB7cJA==
X-Forefront-Antispam-Report:
	CIP:4.158.2.129;CTRY:GB;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:outbound-uk1.az.dlp.m.darktrace.com;PTR:InfoDomainNonexistent;CAT:NONE;SFS:(13230040)(35042699022)(1800799024)(14060799003)(36860700016)(376014)(82310400026)(56012099003)(22082099003)(18002099003);DIR:OUT;SFP:1101;
X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1
X-MS-Exchange-AntiSpam-MessageData-0:
	WGNzcKgl3sx57pMnvKRQmgMV6S3leysZQVVN/FFY8NMR16Pm54cLpe2x/+JTXtL5cBIVO3Q4WbHGsVXAY7jWMQk7iQ6GhlDomn2rgqMkbksGsLpMJiMGCv7cagrhXO4WUrE8elqtv/520oVK43drXgMvMJ99prXImS7Hnko/V8pOiWzemJyezs3vTtE9FZ9JeTtmzbJfRjtBJNSWcdsfVRpSMbUFPw3C8Zg8xttj16PYaczDpPgg2inFbuYkqnOHi1fWgJUtP1BifmPA6AAiAS0nDn3h03Z+nYb3wQuH8C/qpfSr66qGa+5B+HKCR9NzN3kleaPoNFzEFhWrL2XXHFCqNoudvMzqrVkm0LQmf5L7ESbxAKnZwgYGfL/E4TGzULkvn90Vepcrdlbm5kJoIswUl0xVUTLloMUp6IM0SJO9hUDnSYOOoSkjsg/cjc+2
X-OriginatorOrg: arm.com
X-MS-Exchange-CrossTenant-OriginalArrivalTime: 15 Apr 2026 15:06:57.2634
 (UTC)
X-MS-Exchange-CrossTenant-Network-Message-Id: cba028a4-ced4-44ea-d482-08de9b00a333
X-MS-Exchange-CrossTenant-Id: f34e5979-57d9-4aaa-ad4d-b122a662184d
X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=f34e5979-57d9-4aaa-ad4d-b122a662184d;Ip=[4.158.2.129];Helo=[outbound-uk1.az.dlp.m.darktrace.com]
X-MS-Exchange-CrossTenant-AuthSource:
	AM4PEPF00025F9B.EURPRD83.prod.outlook.com
X-MS-Exchange-CrossTenant-AuthAs: Anonymous
X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem
X-MS-Exchange-Transport-CrossTenantHeadersStamped: GVXPR08MB11398
X-purgate-ID: tlsNG-d62444/1776265625-B6C7CFF4-628C6E80/0/0
X-purgate-type: clean
X-purgate-size: 829

Hi Michal,

> On 15 Apr 2026, at 12:36, Michal Orzel <michal.orzel@amd.com> wrote:
>=20
> handle_attach_overlay_nodes() unconditionally creates new rangesets
> without checking whether they already exist from a prior attach. A
> repeated attach for the same overlay leaks the original pair. Reject the
> operation with -EEXIST if rangesets are already present.
>=20
> Also, dt_overlay_domctl() early-returns -EOPNOTSUPP for any operation
> other than ATTACH, making the if/else at the bottom unreachable. Remove
> the dead branch.
>=20
> Fixes: 4c733873b5c2 ("xen/arm: Add XEN_DOMCTL_dt_overlay and device attac=
hment to domains")
> Reported-by: Jan Beulich <jbeulich@suse.com>
> Signed-off-by: Michal Orzel <michal.orzel@amd.com>
> ---

Reviewed-by: Luca Fancellu <luca.fancellu@arm.com>

Cheers,
Luca



From xen-devel-bounces@lists.xenproject.org Wed Apr 15 15:08:39 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 15 Apr 2026 15:08:39 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1282613.1565171 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wD1r4-0003NJ-SX; Wed, 15 Apr 2026 15:08:38 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1282613.1565171; Wed, 15 Apr 2026 15:08: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 1wD1r4-0003NC-PD; Wed, 15 Apr 2026 15:08:38 +0000
Received: by outflank-mailman (input) for mailman id 1282613;
 Wed, 15 Apr 2026 15:08:37 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <Luca.Fancellu@arm.com>) id 1wD1r2-0003N4-T6
 for xen-devel@lists.xenproject.org; Wed, 15 Apr 2026 15:08:37 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wD1r2-002j77-9Q
 for xen-devel@lists.xenproject.org; Wed, 15 Apr 2026 17:08:36 +0200
Received: from [10.42.69.2] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <Luca.Fancellu@arm.com>)
 id 69dfa9e9-5cb7-0a2a0a5109dd-0a2a4502949a-34
 for <xen-devel@lists.xenproject.org>; Wed, 15 Apr 2026 17:08:36 +0200
Received: from [52.101.65.17]
 (helo=DU2PR03CU002.outbound.protection.outlook.com)
 by tlsNG-720697.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.0)
 (envelope-from <Luca.Fancellu@arm.com>)
 id 69dfa9f3-42fa-0a2a45020019-346541119581-3
 for <xen-devel@lists.xenproject.org>; Wed, 15 Apr 2026 17:08:36 +0200
Received: from DUZPR01CA0337.eurprd01.prod.exchangelabs.com
 (2603:10a6:10:4b8::10) by AS8PR08MB9599.eurprd08.prod.outlook.com
 (2603:10a6:20b:619::14) with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9769.48; Wed, 15 Apr
 2026 15:08:32 +0000
Received: from DB1PEPF000509FE.eurprd03.prod.outlook.com
 (2603:10a6:10:4b8:cafe::83) by DUZPR01CA0337.outlook.office365.com
 (2603:10a6:10:4b8::10) with Microsoft SMTP Server (version=TLS1_3,
 cipher=TLS_AES_256_GCM_SHA384) id 15.20.9769.50 via Frontend Transport; Wed,
 15 Apr 2026 15:08:32 +0000
Received: from outbound-uk1.az.dlp.m.darktrace.com (4.158.2.129) by
 DB1PEPF000509FE.mail.protection.outlook.com (10.167.242.40) with Microsoft
 SMTP Server (version=TLS1_3, cipher=TLS_AES_256_GCM_SHA384) id 15.20.9769.17
 via Frontend Transport; Wed, 15 Apr 2026 15:08:32 +0000
Received: from DU2PR08MB7272.eurprd08.prod.outlook.com (2603:10a6:10:2d7::16)
 by AM8PR08MB6611.eurprd08.prod.outlook.com (2603:10a6:20b:36b::15)
 with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9769.48; Wed, 15 Apr
 2026 15:07:29 +0000
Received: from DU2PR08MB7272.eurprd08.prod.outlook.com
 ([fe80::5d34:206f:373:a323]) by DU2PR08MB7272.eurprd08.prod.outlook.com
 ([fe80::5d34:206f:373:a323%6]) with mapi id 15.20.9769.046; Wed, 15 Apr 2026
 15:07: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=arm.com header.i="@arm.com" header.h="From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck"; dkim=pass header.s=selector1 header.d=arm.com header.i="@arm.com" header.h="From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck"
ARC-Seal: i=2; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=pass;
 b=locPtHOB+9iYyEBFRyZqPoCeJliiNLG7ZxaJiZEMce51ppBIlo6KGfk2zzpmGTVE/QmOvzY9p098vYdD4jfuAtRF0bQeXN2SeGwKaEu+f426W2+jTHYKM1x1WAZfBNDrzWYWgVF6+lkj/RhOT5OQawPJHYGuZFPUhI6N1PjTpOEk/T0Mc24a4ezDRCjTcH/KK1X9xojAm6DbcaCUHG1w1l4rP68cz0ZaFdOXQZZNOg4C9Y1dDcazZJ5HKJgM5SHlMRa6qdEOJRhLsOiG0XjNi/fSn/zfmXlU3px+CYQPRbcU8sQmU0r5z3h1Fk20tv907BU4k3STDffXRldkqPTKJA==
ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com;
 s=arcselector10001;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1;
 bh=U9aOtsz1H8UBDHomtN3Nu4TE7/nAC3uZn18LYU+VbfA=;
 b=UK6GJgINEfFcOyyRz1ESfCiz0bOjshLBAFIBhdD5HOd58dc3u0RYYeZAgQiaCZwHx5b6XiT0F7a59NKYsXOK+nr1a2bUbM9x75O7ry5oTCSg+PQ8pupk/0S3Oq7lG1G9F6tTZ0HMK1Pw0ABH78DYFMCd1jGnwS9i9Zr1sZJ37pm8ae8BapWZXF/fqfTfd/LetcJKVkYAdBV3BUwREWXcgXpP4mdcpdWHSkTEidyFcEzR/+3oM6WVY/mIaKxjZGT86cxzlKFu3h/U5Wu+Dr3VM9B5YnVN7Lo74VpMh0XqqXLUxFUG1AsMZPBHsXKGvONHhEBKhGHbjrS5A6+te7E1FQ==
ARC-Authentication-Results: i=2; mx.microsoft.com 1; spf=pass (sender ip is
 4.158.2.129) smtp.rcpttodomain=amd.com smtp.mailfrom=arm.com; dmarc=pass
 (p=none sp=none pct=100) action=none header.from=arm.com; dkim=pass
 (signature was verified) header.d=arm.com; arc=pass (0 oda=1 ltdi=1
 spf=[1,1,smtp.mailfrom=arm.com] dkim=[1,1,header.d=arm.com]
 dmarc=[1,1,header.from=arm.com])
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=arm.com; s=selector1;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck;
 bh=U9aOtsz1H8UBDHomtN3Nu4TE7/nAC3uZn18LYU+VbfA=;
 b=JQpzil+RVH5xg9S2eLXPcKmUVqedeYp8Vn1M2J52jLeIfmZcMdXaoOMdGqf6w5romMAYCwVtzSgMtoosmHKPc2qrdcV2Ud4YZVysephblV1Wsf5udtsU5zn3AVoBeWuJWbKIbu360nTXGa8yziibRG/BhhFmvQsZfccPD9/IKRk=
X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 4.158.2.129)
 smtp.mailfrom=arm.com; dkim=pass (signature was verified)
 header.d=arm.com;dmarc=pass action=none header.from=arm.com;
Received-SPF: Pass (protection.outlook.com: domain of arm.com designates
 4.158.2.129 as permitted sender) receiver=protection.outlook.com;
 client-ip=4.158.2.129; helo=outbound-uk1.az.dlp.m.darktrace.com; pr=C
ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none;
 b=QYm7x4DHlgs/g1iFjYo9woIwB7QupL0VXS0SFBrjs+G0H7dPCgvk8MjrcsHRyrhunrVI4Ax0IXQC4WxOMpPrf0VeCzi+19gmPQEIIntS57nko1h4lJYzBNFKzM2YFqWd8D6FSDC638VuxG1MjUp6Nko4xg8SxJ1BcwsBLXGOewElbWLIw/wlxvbwF97TaY/+QbebmaNM/abCUkTpuC4kQe7RTxGprPSkwzlkQ7pkT7iRc2DtlX+/bW8EchdCTecF5yuAL/k/FMV3HLlwUEVTLn1HC3eSSbDQqDdj8ybSiyHALTrVZKnao3+C19h+Ze7pFoxd/hBW+PNwf2xI807xJg==
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com;
 s=arcselector10001;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1;
 bh=U9aOtsz1H8UBDHomtN3Nu4TE7/nAC3uZn18LYU+VbfA=;
 b=AOff8n/peNH2ZM+AVn4Th0Jfbwqpwb/dQjIf7Jq+K1nEzDBl9UfMyJBgDN2hMSYmdxtalm3blw6vpzQ/q0PLf74RK7sGKXbV3NVKCQ3qDszqpi5Je3h9gWzKjq1L6xf3AVz4rnahVP3iRU/zK3KqPDyuDWUKegexJ3fDU/34MXkrh/QkrCwWJU04Pa84tMX57lejd9ybLWPjSX/1e2rXkTG5mOaGhy/BM3FRuxZaXof0P22oSAjIg2qzUMQtqlTI/8KvQdyNnRNoWlPVK+3Sacy8uJoN48a3ap2OoNOfe7xfh40+EVh9o/dkTii4LRA+smR4cdLIftZ8JVJtqpKeJQ==
ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass
 smtp.mailfrom=arm.com; dmarc=pass action=none header.from=arm.com; dkim=pass
 header.d=arm.com; arc=none
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=arm.com; s=selector1;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck;
 bh=U9aOtsz1H8UBDHomtN3Nu4TE7/nAC3uZn18LYU+VbfA=;
 b=JQpzil+RVH5xg9S2eLXPcKmUVqedeYp8Vn1M2J52jLeIfmZcMdXaoOMdGqf6w5romMAYCwVtzSgMtoosmHKPc2qrdcV2Ud4YZVysephblV1Wsf5udtsU5zn3AVoBeWuJWbKIbu360nTXGa8yziibRG/BhhFmvQsZfccPD9/IKRk=
From: Luca Fancellu <Luca.Fancellu@arm.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 3/6] xen/dt-overlay: check overlay size before memcmp in
 tracker lookup
Thread-Topic: [PATCH 3/6] xen/dt-overlay: check overlay size before memcmp in
 tracker lookup
Thread-Index: AQHczMxJg8ELi4EY80SLuelicY+ivrXgOWQA
Date: Wed, 15 Apr 2026 15:07:24 +0000
Message-ID: <BFE6762A-7A1B-484C-B69B-43D9FB13B47E@arm.com>
References: <20260415113700.107915-1-michal.orzel@amd.com>
 <20260415113700.107915-4-michal.orzel@amd.com>
In-Reply-To: <20260415113700.107915-4-michal.orzel@amd.com>
Accept-Language: en-GB, en-US
Content-Language: en-US
X-MS-Has-Attach:
X-MS-TNEF-Correlator:
x-mailer: Apple Mail (2.3826.700.81.1.6)
Authentication-Results-Original: dkim=none (message not signed)
 header.d=none;dmarc=none action=none header.from=arm.com;
x-ms-traffictypediagnostic:
	DU2PR08MB7272:EE_|AM8PR08MB6611:EE_|DB1PEPF000509FE:EE_|AS8PR08MB9599:EE_
X-MS-Office365-Filtering-Correlation-Id: b6ab5b90-8480-4678-0aa7-08de9b00dc05
x-checkrecipientrouted: true
nodisclaimer: true
X-MS-Exchange-SenderADCheck: 1
X-MS-Exchange-AntiSpam-Relay: 0
X-Microsoft-Antispam-Untrusted:
 BCL:0;ARA:13230040|376014|1800799024|366016|56012099003|18002099003|22082099003|38070700021;
X-Microsoft-Antispam-Message-Info-Original:
 oMYnB0F/kqzjguHhwSHFC6bLAoh2lbYfdu3Y4d0PC/zq8VmT3TDGPAMfUkBdJybzSDVJJ7uQl3iig8lOPJS4RO4keIHrtyyisj3XoJcW3hrvhVtXRz1tpXxEjj9qoRAegA+7YUFqoiUeudq1a6APO592qDcnC2J7p47C1ka362Diq3F8HX457WpElj6ho8O2LN5JNCbSu6/ebgrY77oyPrdCZ+2IShXdFITrrE1UNeZUvs3/jCBllbovrMQ4Pw15+xvaOJ4Rp3PkTO/3FpMvvZ6d4RH9qpmuk5ULFkj7xzEr4ZvqyTMXHJ8/VEvSx4ADQU8lQrm6xMyB+iWkFmtrIRIuy7mhueFqVrp5Q4oZSN4DOx5oAlRawoMbPDgUoVeh74+ZtoCDD8JMzh9xh3YkRpn4rXOhtuXTAxk9I6W2699mmjLplEjqkf+AmGVvIdfgQ3uGER0yYGw3IXQlv269zDIq07+z6UDTsmgPMFg69oApQlAXVSLwlv0l6aiP/++kTgM6Jnl5Zb0crcvSiygixhOzBaKOGKufse+mpVe+HYRczFb4CSDayH3g9ExGSG17P1Me0SOQoSO58jelPyOSc75mHn66Ucr0VmpePSJvq+4QUOdtecFzryTGdczuKowq5K1lHU3YJHVx41o3enHyFPWGALlO3BV1iGZFgyL/rZWzJ4ypjF6Xto5An8LeVUb9gTRZcy7gpL2h4qCmU+OuYEhBWK9P9McEJIBFAJDKxywpQO63Eq9Yo7JQkdg4C76aA2iUuRZagn10z/YCcgHLTU8OKgzuCc796yAzKtGhywg=
X-Forefront-Antispam-Report-Untrusted:
 CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:DU2PR08MB7272.eurprd08.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(376014)(1800799024)(366016)(56012099003)(18002099003)(22082099003)(38070700021);DIR:OUT;SFP:1101;
Content-Type: text/plain; charset="us-ascii"
Content-ID: <901381CCDE94584895F608565A684268@eurprd08.prod.outlook.com>
Content-Transfer-Encoding: quoted-printable
MIME-Version: 1.0
X-Exchange-RoutingPolicyChecked:
 YN5PIn+kKskUFdMzYfB/Q0QCAbfAE+MhDXtGDDtMEweipmdlME/x0qMKcjgpg41LBw61RurHMYzntFMhZBNB1BPutDNRy+fu9lIvL5UPowOvCYqkEYFYM3nM6fKFPRNxb66/4dlme4gwxBhVbKeR8jhH3V2Jhu01d3+1ogu3AbOwR6BFqwN+smPCBgQy6mrILlEXtQV+BAeATDOxSfhiSmH3Uvthi17VmYbJhTbgEha/8n6GyyMvYBM6UmVXRnzwlkUfzLR/Bk4Oqs/L8UvaXxAhKMeC2uBcAtBmWH7xV034mMeqwIbvdwzutXJtHmEn7VQ12UYTRzwpGHnDXBpZZg==
X-MS-Exchange-Transport-CrossTenantHeadersStamped: AM8PR08MB6611
X-EOPAttributedMessage: 0
X-MS-Exchange-Transport-CrossTenantHeadersStripped:
 DB1PEPF000509FE.eurprd03.prod.outlook.com
X-MS-PublicTrafficType: Email
X-MS-Office365-Filtering-Correlation-Id-Prvs:
	0001f02e-dc0c-4ab2-2a98-08de9b00b358
X-Microsoft-Antispam:
	BCL:0;ARA:13230040|82310400026|14060799003|35042699022|36860700016|1800799024|376014|22082099003|56012099003|18002099003;
X-Microsoft-Antispam-Message-Info:
	dSZFGjJ533Pjzp1bUYX+MawSYvsQuL46AGZ9eALgwocSGhEJWGvaO0+DSRyvPkb38+WAz7+w4W5ecGmwdFf8lQgzS8Ub8hYZm7OAHazF0YsnYNTMviTsQIXEoAZFhl3uEaQox0s78UYkS/ckFYE5WOtdOPskbgZ4asQ9X57yCpU2KQT1aDSLlTjB1pfHVMBRYYQxkZ1C0YzmCGRaLlPafcLPt+YRx2nS7J9aN2sv1kdt3aM7zgyfDJMUMBnFYJ0jJmm7O+KMR8+hUl2P46w4Aj93RV9CR8q9GBSoPkC8BNe+wVFGpkxQ5Hl8eGuBBzdY5dNEo0xizkO77rDVf/ITEAi78EOpODkEppCtWH5izAV1260TslGEyDHV9eQiVa0YQYlu73OYsnfvHE9nCEf87CppJKEQRSkatmievp9TdHjADSaTx0CE6e6JbWpILGpZVSV0KISMdWZPatpGlhIfXg1oE3pLkLXmRzgG4MOsVHVZTF4/pqamkjd2wyimpBEen84jJvI2/WlQ50iTCF2voAKBzE8zHPasNgwXldGT77Vc1lggFwUAgDt6SO8FJSTSPG33RxDlDJfUCDxZQBworhmUG4zWP/hSpg37d2awA0N3pqYKikkNQxA5l4rZEbU0iaE9P2fkc0mhZZOzHXGHwftnXUCvLE+k0hvDMdVnC00ZWMG+DXW0Aqkw208qDgCOif3BjXhSZeDQwBeG1fBeApl9QAzTvhhkDc7Ivv/SnfoADD+JvySLPnxd0sJIlr9pfxEGTYA3Oc7ld6r8wys1vw==
X-Forefront-Antispam-Report:
	CIP:4.158.2.129;CTRY:GB;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:outbound-uk1.az.dlp.m.darktrace.com;PTR:InfoDomainNonexistent;CAT:NONE;SFS:(13230040)(82310400026)(14060799003)(35042699022)(36860700016)(1800799024)(376014)(22082099003)(56012099003)(18002099003);DIR:OUT;SFP:1101;
X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1
X-MS-Exchange-AntiSpam-MessageData-0:
	KUka7StHsfWCBQzJuEPq63YWbjgnQ+bLSKCRyCc8SkADLKjW1JErYkx2wHQR8V2qXTXozcSFoe4UTMn4b4Zeek5v1G5amOuovg4AGfHx/LS8ph73MFQ4Tn1GWpYIi0qR5o2LiC6/HtAlpVae99BGD8tf3wpFuMW5/FcTCDAv0oBu8WyS7p50g0QYmTxMYlw8sBbKMaTOtxYcOpsxMGS47aFlybqGeeXMH/H4ba2E6YsSeTTZc6i09k9ZAy0rH0O197Q+9TVm80GTYNRm4HNrmTCGrKyfbQ+rwQNBTWEa4z0FHK9TcbzeIZzr8K+kI9vpZZqUSha4vMNtvrAy17RKmzkvrs+V0PA932vhYS0cz1ZPV++CGyHdle0TBtW5EQ/k4eU2SnFRf0FnNuKAEzKDkl7x7XSqY27eHcUixwHgvqmG9Q0dg4gCfjeKWqjpfVOV
X-OriginatorOrg: arm.com
X-MS-Exchange-CrossTenant-OriginalArrivalTime: 15 Apr 2026 15:08:32.5815
 (UTC)
X-MS-Exchange-CrossTenant-Network-Message-Id: b6ab5b90-8480-4678-0aa7-08de9b00dc05
X-MS-Exchange-CrossTenant-Id: f34e5979-57d9-4aaa-ad4d-b122a662184d
X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=f34e5979-57d9-4aaa-ad4d-b122a662184d;Ip=[4.158.2.129];Helo=[outbound-uk1.az.dlp.m.darktrace.com]
X-MS-Exchange-CrossTenant-AuthSource:
	DB1PEPF000509FE.eurprd03.prod.outlook.com
X-MS-Exchange-CrossTenant-AuthAs: Anonymous
X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem
X-MS-Exchange-Transport-CrossTenantHeadersStamped: AS8PR08MB9599
X-purgate-ID: tlsNG-720697/1776265716-4C9F4CD1-EB663FD4/0/0
X-purgate-type: clean
X-purgate-size: 852

Hi Michal,

> On 15 Apr 2026, at 12:36, Michal Orzel <michal.orzel@amd.com> wrote:
>=20
> find_track_entry_from_tracker() compares overlay_fdt_size bytes of the
> stored overlay against the input without verifying that the stored
> overlay is at least that large. If the input is larger, memcmp reads
> past the stored allocation. If smaller, a prefix match could falsely
> succeed.
>=20
> Compare fdt_totalsize() of the stored overlay against overlay_fdt_size
> first. Both values are validated by check_overlay_fdt() at their
> respective entry points, so no additional field in overlay_track is
> needed.
>=20
> Fixes: 7e5c4a8b86f1 ("xen/arm: Implement device tree node removal functio=
nalities")
> Signed-off-by: Michal Orzel <michal.orzel@amd.com>
> ---

Reviewed-by: Luca Fancellu <luca.fancellu@arm.com>

Cheers,
Luca



From xen-devel-bounces@lists.xenproject.org Wed Apr 15 15:10:09 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 15 Apr 2026 15:10:09 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1282622.1565179 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wD1sV-0004qs-6m; Wed, 15 Apr 2026 15:10:07 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1282622.1565179; Wed, 15 Apr 2026 15:10: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 1wD1sV-0004ql-3z; Wed, 15 Apr 2026 15:10:07 +0000
Received: by outflank-mailman (input) for mailman id 1282622;
 Wed, 15 Apr 2026 15:10:05 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <Luca.Fancellu@arm.com>) id 1wD1sS-0004Yp-Vm
 for xen-devel@lists.xenproject.org; Wed, 15 Apr 2026 15:10:05 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wD1sS-00FPEx-92
 for xen-devel@lists.xenproject.org; Wed, 15 Apr 2026 17:10:04 +0200
Received: from [10.42.69.6] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <Luca.Fancellu@arm.com>)
 id 69dfaa47-2eae-0a2a0a5409dd-0a2a45069136-26
 for <xen-devel@lists.xenproject.org>; Wed, 15 Apr 2026 17:10:04 +0200
Received: from [52.101.65.23]
 (helo=DU2PR03CU002.outbound.protection.outlook.com)
 by tlsNG-16d1c6.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.0)
 (envelope-from <Luca.Fancellu@arm.com>)
 id 69dfaa4b-0df0-0a2a45060019-34654117f7a5-3
 for <xen-devel@lists.xenproject.org>; Wed, 15 Apr 2026 17:10:04 +0200
Received: from DU2P250CA0014.EURP250.PROD.OUTLOOK.COM (2603:10a6:10:231::19)
 by PAXPR08MB6464.eurprd08.prod.outlook.com (2603:10a6:102:df::22) with
 Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9769.48; Wed, 15 Apr
 2026 15:10:01 +0000
Received: from DU2PEPF00028D0A.eurprd03.prod.outlook.com
 (2603:10a6:10:231:cafe::9b) by DU2P250CA0014.outlook.office365.com
 (2603:10a6:10:231::19) with Microsoft SMTP Server (version=TLS1_3,
 cipher=TLS_AES_256_GCM_SHA384) id 15.20.9769.50 via Frontend Transport; Wed,
 15 Apr 2026 15:10:00 +0000
Received: from outbound-uk1.az.dlp.m.darktrace.com (4.158.2.129) by
 DU2PEPF00028D0A.mail.protection.outlook.com (10.167.242.170) with Microsoft
 SMTP Server (version=TLS1_3, cipher=TLS_AES_256_GCM_SHA384) id 15.20.9745.21
 via Frontend Transport; Wed, 15 Apr 2026 15:10:00 +0000
Received: from DU2PR08MB7272.eurprd08.prod.outlook.com (2603:10a6:10:2d7::16)
 by AS2PR08MB9128.eurprd08.prod.outlook.com (2603:10a6:20b:5fc::10)
 with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9769.48; Wed, 15 Apr
 2026 15:08:54 +0000
Received: from DU2PR08MB7272.eurprd08.prod.outlook.com
 ([fe80::5d34:206f:373:a323]) by DU2PR08MB7272.eurprd08.prod.outlook.com
 ([fe80::5d34:206f:373:a323%6]) with mapi id 15.20.9769.046; Wed, 15 Apr 2026
 15:08: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=arm.com header.i="@arm.com" header.h="From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck"; dkim=pass header.s=selector1 header.d=arm.com header.i="@arm.com" header.h="From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck"
ARC-Seal: i=2; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=pass;
 b=XfPo7YUEHfBGIC9dEl4elXkpxR3qKUlpPIalCxiLeUX6aV0XxKfTahrubjBtJByYN55CzXcflTlym1nV/vqwwtkYVcXJzaAjfzfz+4QfQSTU1jUX5MueBHKcyJaaa4ktN1yhhZvWMXUoMsNiKd6iBwagnxTugaT76jpP+2To2lw0iuSjNx2maYAdhTN9o4PYHqzUN4af6tk7pqUiFz3OagKAU7omrRtzjSG6ONlxNm2qMagiTnhRrN8RaWaD5M8YAtYN8LaHE2FTWrW/prMQufXh24jMP5HHKnu0lTI/5lrrA6FTwCPsKpvedqAQwDDoybyDL3SVh/LLke2Ygkjk5Q==
ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com;
 s=arcselector10001;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1;
 bh=JwNicM0MXbmAJx8wdyghKv0O4TJH9+yp1tSqxhZRdeA=;
 b=O9JEl8DHVBkEK9fFTF4q5OoTwcZoBnm7R7uX5T9kia4PIWcb3UTsKEkne4d1/bNq+6uC/MXdDeiZ64RueGVhXmGqMytqiPX2WgbE1DEFne829G86fGAGQdqTyl3p1EWepYplZ1YzQAOydeQ/UVlHP29czLrhEeR46yCyLwVRRtMR0OgzDJFFBck87tym2rcOh54x5jesef2/yZI1QW7R00iESO298kdk+/1VfQKYnCKIvpjHqUdfPpNS2Ck/ZhzpZdv8i9L2EV816WKf3xAZRdSpWcWekXlGqzppqWXV40TIMAIFWzn4VvQGFAwU+IU4idmzHP1cRlje8p95H8ORKg==
ARC-Authentication-Results: i=2; mx.microsoft.com 1; spf=pass (sender ip is
 4.158.2.129) smtp.rcpttodomain=amd.com smtp.mailfrom=arm.com; dmarc=pass
 (p=none sp=none pct=100) action=none header.from=arm.com; dkim=pass
 (signature was verified) header.d=arm.com; arc=pass (0 oda=1 ltdi=1
 spf=[1,1,smtp.mailfrom=arm.com] dkim=[1,1,header.d=arm.com]
 dmarc=[1,1,header.from=arm.com])
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=arm.com; s=selector1;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck;
 bh=JwNicM0MXbmAJx8wdyghKv0O4TJH9+yp1tSqxhZRdeA=;
 b=Cdqwd9vgIsfGOr5bi1FjOr6gtjJPQASZmSybxHjEr8JGp3km3R7GNsi2Apq9Fc42SO2XlEaj6z5nCgLY1QoLo/se1z23bv+QzTm4uLsHO5Wh+q31wULO8YCSfokeAFleG+0J2juYRVNRzTd4Z5U0QMiDqYVpk9doC+CaBJqNBcI=
X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 4.158.2.129)
 smtp.mailfrom=arm.com; dkim=pass (signature was verified)
 header.d=arm.com;dmarc=pass action=none header.from=arm.com;
Received-SPF: Pass (protection.outlook.com: domain of arm.com designates
 4.158.2.129 as permitted sender) receiver=protection.outlook.com;
 client-ip=4.158.2.129; helo=outbound-uk1.az.dlp.m.darktrace.com; pr=C
ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none;
 b=RLsLKJCS0jvR+VeK7PagtVt9Fvlv0zPUJtOxRtO7hvuUn1QETrJtLiOkecIP0oaaawwvKzeUCxTn5hXYuSkg0B9cvO7OcrsQDrkkE7+AxKH7zVu4iyMbBlj1O0K2jm8iA/NrFXDIxigEdvDAQ+9UaCPPQYg4Zt0L7d9Run5y1B6sESHel3G28fQBDqX0Xxec1POwV6rWzWmjMfooeFX79h4DuZk7liq++oBrYVAPKd7P4r3p4oE+o36uZfTi0B8bvvcenxPhWc7ivUL/m0Lv6EanJVgAUC1LBF5VYyfQOqPigaRXFbjr7dkafnpBaK3BqfhkC9hKMYcZQjkDwLnRyg==
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com;
 s=arcselector10001;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1;
 bh=JwNicM0MXbmAJx8wdyghKv0O4TJH9+yp1tSqxhZRdeA=;
 b=f+RnK+JNZFuVgU8qEKkkPY5ECgyP8F79M7kwDTN74iRSoAvZZHDt2BWPgNuBhM3crZJQL3ECHOfGOVuErt3fEtwEPfGzG3hBYfQOd9WXb1YAqh/quC9G2u3h+D++x15jK2rZ/VSpvSJDQWy4zBUOQaCjFHlr2qoGZDbSOSu3J6Q/27e+73dAD7Nhc8VQsWLPNWCAi9bpi6V+wQFuMk+I7yw17iIJQ84IVqNOIOm3oO5c9NtBDNY33eX0gPdPZOlbO5mIfCUlSSOwX/J8oAfhTnj/Ck+agEBzWD1WKosuQq4jh1/n+ZPWhhgWb3TSREsTT5OIALbSoA1Vpyci5sAAMw==
ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass
 smtp.mailfrom=arm.com; dmarc=pass action=none header.from=arm.com; dkim=pass
 header.d=arm.com; arc=none
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=arm.com; s=selector1;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck;
 bh=JwNicM0MXbmAJx8wdyghKv0O4TJH9+yp1tSqxhZRdeA=;
 b=Cdqwd9vgIsfGOr5bi1FjOr6gtjJPQASZmSybxHjEr8JGp3km3R7GNsi2Apq9Fc42SO2XlEaj6z5nCgLY1QoLo/se1z23bv+QzTm4uLsHO5Wh+q31wULO8YCSfokeAFleG+0J2juYRVNRzTd4Z5U0QMiDqYVpk9doC+CaBJqNBcI=
From: Luca Fancellu <Luca.Fancellu@arm.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 4/6] xen/dt-overlay: fix silent success in
 dt_overlay_remove_node
Thread-Topic: [PATCH 4/6] xen/dt-overlay: fix silent success in
 dt_overlay_remove_node
Thread-Index: AQHczMxII8OnvwK6REKHyMHK6ZFZCLXgOc+A
Date: Wed, 15 Apr 2026 15:08:54 +0000
Message-ID: <30CCBA3C-D43C-4516-9DB7-9333428AE277@arm.com>
References: <20260415113700.107915-1-michal.orzel@amd.com>
 <20260415113700.107915-5-michal.orzel@amd.com>
In-Reply-To: <20260415113700.107915-5-michal.orzel@amd.com>
Accept-Language: en-GB, en-US
Content-Language: en-US
X-MS-Has-Attach:
X-MS-TNEF-Correlator:
x-mailer: Apple Mail (2.3826.700.81.1.6)
Authentication-Results-Original: dkim=none (message not signed)
 header.d=none;dmarc=none action=none header.from=arm.com;
x-ms-traffictypediagnostic:
	DU2PR08MB7272:EE_|AS2PR08MB9128:EE_|DU2PEPF00028D0A:EE_|PAXPR08MB6464:EE_
X-MS-Office365-Filtering-Correlation-Id: 4d58bb97-4278-4dfe-c3f9-08de9b01105a
x-checkrecipientrouted: true
nodisclaimer: true
X-MS-Exchange-SenderADCheck: 1
X-MS-Exchange-AntiSpam-Relay: 0
X-Microsoft-Antispam-Untrusted:
 BCL:0;ARA:13230040|366016|1800799024|376014|56012099003|22082099003|18002099003|38070700021;
X-Microsoft-Antispam-Message-Info-Original:
 1r487uqhQM8jMKXeWoZkgixqfUG9Qa0EHEDxkgd7DmQIi6Z5WO1GzilXocsOLZfzgfX47LuEmd9+QppW8qHIHU6izkKaenNpGCwE4Ewg/zTjrxvkpY32XPoxNhq1/NLXjzDCDMcHdDCnU3VgPBYz8kyl2HLR6OikE2oyJZdEHxmKCj+HoQTA96wQ5L/06ICpfb2544yXmX/4TsmfsPhq5nWgL7czBVhQaZXdhf2kPyZ37lJONEcxnh+XmVzCVOHiNYFLiXBvncna3i7W00wZJltlunuFu3vQncAxcLfVaPUbbiKWiQKDmjgGX6shwA6sHUlmHUST7O/PWssHYS3TCqNBuhjZYrhrMR1VL7eedXsYBTMV8kGiEvFyt9+BaKYgC/lOD+zatcdmKp8rs3fVNiR9uZ1wg+uaR8WuKL60OeWBVzmHAAUdruO+7ADLJpUmJ6Bx0g4ra0bBJ7MczoH9mlLRPR++sHyMJTxItkwjL8mdMe3RuGV8k46HN8kVnt9ooDQ5pm0IZnhfhYykfuYXKWp86YwouD7cyMSyTO2cgk9nn7pW60IBTgHYmK6V09VXCPhqunxnl37IV5xDl/x+yzps5dpUmQ2B76auGlp8JQcb7Idfcm8LOlK1BW67yhnisdYumO1p1ob4KkS3m2MSiRDcfUJ6EYrwUPna9pVsi4s8P41LyBY6eCxTrNoY2GlU63rDf/VE0f8QR5dCY3uR6gfRIrcDh74qoKhyT3XBtgPvfSG+PAnSOAMNmMOZV9hHrKNeVlxAlXm6042hHRtw8XuMg/qF3lLaAOIXOXuQ+PY=
X-Forefront-Antispam-Report-Untrusted:
 CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:DU2PR08MB7272.eurprd08.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(366016)(1800799024)(376014)(56012099003)(22082099003)(18002099003)(38070700021);DIR:OUT;SFP:1101;
Content-Type: text/plain; charset="us-ascii"
Content-ID: <D65434E93B112341A609EB903F1DDA18@eurprd08.prod.outlook.com>
Content-Transfer-Encoding: quoted-printable
MIME-Version: 1.0
X-Exchange-RoutingPolicyChecked:
 E7fZXlz5OE59tUac9mr3hzJ1YFPMBL3SmNHfsAGDmTt1PsvexM+WjQfYK/jiqLLaf98OTbnqReYFckUFpqjAs2sVLPPzWXAd43QJLoI/udY2fyWckeYtqhKY+C6yj1EbuGaP415OSs+1O7seNjwGeksO9cJpRL3V4c6/pXbgfPXw3k0mP7Xami2A7uUawXUjbo33f7WwfuFGWLtwPi56BeIQDc5aygef/2ltRJGNePWsBeCKQQLo0G+NdD4QG+VF+AhCK4oo1zF2G8oGudKMluIA9sAHVNEfcKfCvXP0hOrZg1P29N/GYCUVvYnZhsBaf+4wsgICHXzR1kelMHffLA==
X-MS-Exchange-Transport-CrossTenantHeadersStamped: AS2PR08MB9128
X-EOPAttributedMessage: 0
X-MS-Exchange-Transport-CrossTenantHeadersStripped:
 DU2PEPF00028D0A.eurprd03.prod.outlook.com
X-MS-PublicTrafficType: Email
X-MS-Office365-Filtering-Correlation-Id-Prvs:
	71796af7-cb75-4f43-ca24-08de9b00e8eb
X-Microsoft-Antispam:
	BCL:0;ARA:13230040|1800799024|14060799003|36860700016|376014|82310400026|35042699022|22082099003|18002099003|56012099003;
X-Microsoft-Antispam-Message-Info:
	RKLTmLnuI8wYXBrCiIiR0PveP+RHb/Xi6pBrRENKftFySRDuOwK0kdQxSOOsGXUV56+UR/nzfaGNsHVh2TnYpDegLUdB8hZMm0OCNBZZSl2bi4VdVM5gQpzCIO2FKuA8UeQ5xiyLZ+0zqomGJf2D+VYN61ZOYektU4LbmNBqv/JJ9HY7yaGSbrr+GAEx5Obu67Cy03pVhKgYcfG4M05OiEDc+BN+yX/c9xckNkJ3t3tT1OzwayF/tHafJnA/IFYYD6YS9CI4kDboHwZvvIXxZidhrSOjb6GG8GbHLMg2giyhY9LYjSNofXdVqsNnXi711PGxuNZpCZ7f/XvZvTR2qjHkDdagRw6zSaYCaMmNo/hPKTQM2VQZq5SJ5B+TcyDpAILyHKxqFO5/ajZCWu0VbsW69wjfSw9hzDUWn2hAqvjSsE0YOOUknjxMzpvIHpFZihWA6YzG7/VReBerhWPUW5TuDAIW/hiZpxK4sh/a623wk82EbXVULk6Fe31Hw+MY31UzdUsdGAeGUPam2j7g0jLzoaQd4iTnlC6EmJ5sn1n+tglkab0BaIdL2hhL5vYTJ0d9Fv6aF8pSMFOD8WtHc2sYgF2O2Be4dWM6vZvkszoq04a2zakXZSm5sEhalBiovnKGen+v/Eiv9seL/DNv8DvQVGd7Kty9ti8sPMJzlFHCuNksq8n7rP8qRIa6oAWEOBQt5zr6OgXNyuDtQ8RaJFs0IrNjQ3BJlQ/l+bBZpA+iK0SQr7ZFhlFNoWyGbKFhmgUYD71n8gHeDsLXZxs37Q==
X-Forefront-Antispam-Report:
	CIP:4.158.2.129;CTRY:GB;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:outbound-uk1.az.dlp.m.darktrace.com;PTR:InfoDomainNonexistent;CAT:NONE;SFS:(13230040)(1800799024)(14060799003)(36860700016)(376014)(82310400026)(35042699022)(22082099003)(18002099003)(56012099003);DIR:OUT;SFP:1101;
X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1
X-MS-Exchange-AntiSpam-MessageData-0:
	wE5hhejPz/YuWNqjdJhH1/auktcjaP6+6eaaPvOGswtbDEzpC01bJAdCuhZqhkG4YKHpbSOgectcL/53I2vIWOSuW1DdnLsii2R/BVMcXmMQxovagGRw2h9RC3ORSz42p5yr3w20HOLqZClBLyxe6qYe9D/B0zH9NmfWqesDwFvCkPaWImYQ+tqNDfLFtS0SB/P+CHtvgTyIMvt/BHL95N4fSMy/xjjMAzFMr+Ckj9GLaZuXe2mWuMDiBCgOrIzVkJsDSpBWomsGkWvuw48xOR15M45XbFilWw2h3UdqPm1CBekbZ40APscHoaLcZnzwpWnMP6gBWL3383l5sJBli7kXw9lMHVhDuQwILzExz+vmZTpYE/yiYUQSPQMOxkaMDoU8Gx3VZLFnu8pyIk+zlHwLsS+PMXs9pggOpRIjzjkkGAiIZ8PKK6ucHWRNhSQh
X-OriginatorOrg: arm.com
X-MS-Exchange-CrossTenant-OriginalArrivalTime: 15 Apr 2026 15:10:00.3837
 (UTC)
X-MS-Exchange-CrossTenant-Network-Message-Id: 4d58bb97-4278-4dfe-c3f9-08de9b01105a
X-MS-Exchange-CrossTenant-Id: f34e5979-57d9-4aaa-ad4d-b122a662184d
X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=f34e5979-57d9-4aaa-ad4d-b122a662184d;Ip=[4.158.2.129];Helo=[outbound-uk1.az.dlp.m.darktrace.com]
X-MS-Exchange-CrossTenant-AuthSource:
	DU2PEPF00028D0A.eurprd03.prod.outlook.com
X-MS-Exchange-CrossTenant-AuthAs: Anonymous
X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem
X-MS-Exchange-Transport-CrossTenantHeadersStamped: PAXPR08MB6464
X-purgate-ID: tlsNG-16d1c6/1776265804-AFB3B3D8-6092D58F/0/0
X-purgate-type: clean
X-purgate-size: 760

Hi Michal,

> On 15 Apr 2026, at 12:36, Michal Orzel <michal.orzel@amd.com> wrote:
>=20
> dt_overlay_remove_node() silently returns 0 when the target node is not
> found in the parent's sibling list.  The loop simply exits without
> matching and falls through to "return 0", making the caller believe the
> node was successfully removed.
>=20
> Return -ENODEV after the loop when no match is found, and change the
> found-path from break to an explicit return 0 so the two outcomes are
> distinct.
>=20
> Fixes: 7e5c4a8b86f1 ("xen/arm: Implement device tree node removal functio=
nalities")
> Signed-off-by: Michal Orzel <michal.orzel@amd.com>
> ---

Looks ok to me

Reviewed-by: Luca Fancellu <luca.fancellu@arm.com>

Cheers,
Luca




From xen-devel-bounces@lists.xenproject.org Wed Apr 15 15:37:37 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 15 Apr 2026 15:37:37 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1282643.1565189 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wD2Io-00089t-9P; Wed, 15 Apr 2026 15:37:18 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1282643.1565189; Wed, 15 Apr 2026 15: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 1wD2Io-00089m-6X; Wed, 15 Apr 2026 15:37:18 +0000
Received: by outflank-mailman (input) for mailman id 1282643;
 Wed, 15 Apr 2026 15:37:17 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <Luca.Fancellu@arm.com>) id 1wD2In-00089g-7y
 for xen-devel@lists.xenproject.org; Wed, 15 Apr 2026 15:37:17 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wD2Im-00A2VS-Ds
 for xen-devel@lists.xenproject.org; Wed, 15 Apr 2026 17:37:16 +0200
Received: from [10.42.69.9] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <Luca.Fancellu@arm.com>)
 id 69dfb096-e002-0a2a0a5209dd-0a2a45098fb2-26
 for <xen-devel@lists.xenproject.org>; Wed, 15 Apr 2026 17:37:16 +0200
Received: from [52.101.69.52]
 (helo=AM0PR83CU005.outbound.protection.outlook.com)
 by tlsNG-bad1c0.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.0)
 (envelope-from <Luca.Fancellu@arm.com>)
 id 69dfb0ab-bf79-0a2a45090019-34654534b354-3
 for <xen-devel@lists.xenproject.org>; Wed, 15 Apr 2026 17:37:16 +0200
Received: from DB9PR02CA0011.eurprd02.prod.outlook.com (2603:10a6:10:1d9::16)
 by PAWPR08MB10974.eurprd08.prod.outlook.com (2603:10a6:102:46b::11)
 with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9769.48; Wed, 15 Apr
 2026 15:37:09 +0000
Received: from DB1PEPF00039231.eurprd03.prod.outlook.com
 (2603:10a6:10:1d9:cafe::7b) by DB9PR02CA0011.outlook.office365.com
 (2603:10a6:10:1d9::16) with Microsoft SMTP Server (version=TLS1_3,
 cipher=TLS_AES_256_GCM_SHA384) id 15.20.9769.49 via Frontend Transport; Wed,
 15 Apr 2026 15:37:09 +0000
Received: from outbound-uk1.az.dlp.m.darktrace.com (4.158.2.129) by
 DB1PEPF00039231.mail.protection.outlook.com (10.167.8.104) with Microsoft
 SMTP Server (version=TLS1_3, cipher=TLS_AES_256_GCM_SHA384) id 15.20.9769.17
 via Frontend Transport; Wed, 15 Apr 2026 15:37:09 +0000
Received: from DU2PR08MB7272.eurprd08.prod.outlook.com (2603:10a6:10:2d7::16)
 by PA6PR08MB10595.eurprd08.prod.outlook.com (2603:10a6:102:3d1::13)
 with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9769.48; Wed, 15 Apr
 2026 15:36:04 +0000
Received: from DU2PR08MB7272.eurprd08.prod.outlook.com
 ([fe80::5d34:206f:373:a323]) by DU2PR08MB7272.eurprd08.prod.outlook.com
 ([fe80::5d34:206f:373:a323%6]) with mapi id 15.20.9769.046; Wed, 15 Apr 2026
 15:36:03 +0000
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@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=arm.com header.i="@arm.com" header.h="From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck"; dkim=pass header.s=selector1 header.d=arm.com header.i="@arm.com" header.h="From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck"
ARC-Seal: i=2; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=pass;
 b=ei5P0W6U2WHq2t1SjuYItEMXYguP5Q3ymWws7Fkd1VSIwvU3+Snw7dLws7482u2/99ORBEGG+Y6J5YUNQ4p+Ql2i7DOm5+A5nn8TfRDjlo1XDMpXBUXQAJpjfRcqLs4uMRpRhSJafVO4OWAGJ2ctpRoBVpO/jMmZu4bRqMxQlsTnkHGNkZEEH2LAPzgB5YZwx5z8r2x+1uJh3dxFE4AWUQ6xeqcPwy/Nm+oLM0D6d6uRBCtBpS5Oe7Y65xNrEWLP7NSpuyt9NNUAm6BWADzLBn9ciEO4YMV2Aqcs557Rlos+JxfJQxZi5LNH0V7QBNuIlA/ljL+z9RmT/kLhKeEmyA==
ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com;
 s=arcselector10001;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1;
 bh=V30waawHWtz8KtOq537okWU7QDZkzMvpmsGajsBBg08=;
 b=q8W44l22SHK8BxtmmaSzXoJ8EgRdiH/fOS6b/FrfpXBvDlWBiwe8LmKQsHcvw7hcHG01Nf2y4/W9RVssW6ZQuu1T9srjEGJqqI2m+WTETtI7PS54FSIejVlmBVCnvf4Y5lzLMd7YqlsAMK8SfurGKayvqmKcCVzMoUNTm+lOgdMcAd575fgYGX9arGqdapluLyAU7qlUkB0SfvFeNAeK8SUYppPpG55WpS9oA7QJj91zOSPWMTswIS89BDUaQ7aGSEwYQ2D1z2K4bUi8+dyN+Gj1EQFwQp0JDEoCz8zbXy6xHk6tP0Ttl0MDXgyZ6vTxWR6iAnEdKxkzih/87nHy2A==
ARC-Authentication-Results: i=2; mx.microsoft.com 1; spf=pass (sender ip is
 4.158.2.129) smtp.rcpttodomain=amd.com smtp.mailfrom=arm.com; dmarc=pass
 (p=none sp=none pct=100) action=none header.from=arm.com; dkim=pass
 (signature was verified) header.d=arm.com; arc=pass (0 oda=1 ltdi=1
 spf=[1,1,smtp.mailfrom=arm.com] dkim=[1,1,header.d=arm.com]
 dmarc=[1,1,header.from=arm.com])
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=arm.com; s=selector1;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck;
 bh=V30waawHWtz8KtOq537okWU7QDZkzMvpmsGajsBBg08=;
 b=S+eHRSiLa5Ie28WQGSrMc2ijb/kp2Ew1gzf2LLSr1A0wVGsBMS+d5j/kzRB7eHnng0f4Se78WNol1WBaeu2bB6X3FZZoA12pUA6SuWFY84seseRS7NHDXYZHtMNyghtTXZuA9xkg3iqIgproNDKnLZ/dYZ2L22eZjWTmeF3LTfA=
X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 4.158.2.129)
 smtp.mailfrom=arm.com; dkim=pass (signature was verified)
 header.d=arm.com;dmarc=pass action=none header.from=arm.com;
Received-SPF: Pass (protection.outlook.com: domain of arm.com designates
 4.158.2.129 as permitted sender) receiver=protection.outlook.com;
 client-ip=4.158.2.129; helo=outbound-uk1.az.dlp.m.darktrace.com; pr=C
ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none;
 b=vwNIiXcghd6Cl/99F7YsYgDVN8IYiiGPoGZbQFoAx7bnbqQ8eHRJ09CcAuDG6oHjSspnUasAoBGiONVwBqNWuYfMSpN/FNWXeYa6BqhFuy3gXca3MsTFeLqpewcjDVPNHQ8rGZCrssIqL4SLV+08nCtkSVT4dGbxa1Z2ztccV3zJt2U2WAEZSw2OzY244BUbV5ChWNUPeNHywZxSvogG8AJFa9Hby6vLjYjSNQrHYY8lh+irFRGLfgPldASgKQJrDtORzO5T6j50UWWKcF8ze09tTJBZVq7MExIcW5QqqEKn7dJwi9QTksiCBUIcVA2iLQ5LoXndtcPQfZ5EJBA7uQ==
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com;
 s=arcselector10001;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1;
 bh=V30waawHWtz8KtOq537okWU7QDZkzMvpmsGajsBBg08=;
 b=rxnKH1kJe9JMCQ1Dek7e0hC4RZKS5mPAKf4di8drdk5MSv9dYR8vx8Dc/+EBGBAK+KPi3r+4q2X702grjc53bq56zjmozCq4N+pehHEjh8xHhbjmLwqMgilxOl3/u9JnqY6v9Byv97kOwmAfRrAQ4GBDiKxIElSEa9u01SxHYui6PvdE0Uw1CuZMS0Kor6DVpjOkaEnqwPQ7U9WmirItoKjYuKRoZNH8em0xFFb2q+/Z4iBcuzxVfWefn9JOgaIiFyYUXVnoESoZW74z48Xazvc58LEZjw+mMtFiajlO5LMzSYGaQNr6mFRvV0YQXJoqUhe/KG/it2UW9F1wnGw+hA==
ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass
 smtp.mailfrom=arm.com; dmarc=pass action=none header.from=arm.com; dkim=pass
 header.d=arm.com; arc=none
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=arm.com; s=selector1;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck;
 bh=V30waawHWtz8KtOq537okWU7QDZkzMvpmsGajsBBg08=;
 b=S+eHRSiLa5Ie28WQGSrMc2ijb/kp2Ew1gzf2LLSr1A0wVGsBMS+d5j/kzRB7eHnng0f4Se78WNol1WBaeu2bB6X3FZZoA12pUA6SuWFY84seseRS7NHDXYZHtMNyghtTXZuA9xkg3iqIgproNDKnLZ/dYZ2L22eZjWTmeF3LTfA=
From: Luca Fancellu <Luca.Fancellu@arm.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 5/6] xen/dt-overlay: support phandle-based targeting in
 overlay_get_nodes_info
Thread-Topic: [PATCH 5/6] xen/dt-overlay: support phandle-based targeting in
 overlay_get_nodes_info
Thread-Index: AQHczMxJn1pwTu5+sUmN2MgYtFAQK7XgQWaA
Date: Wed, 15 Apr 2026 15:36:03 +0000
Message-ID: <519E2133-12B9-4E51-A7A5-FDBADF82159E@arm.com>
References: <20260415113700.107915-1-michal.orzel@amd.com>
 <20260415113700.107915-6-michal.orzel@amd.com>
In-Reply-To: <20260415113700.107915-6-michal.orzel@amd.com>
Accept-Language: en-GB, en-US
Content-Language: en-US
X-MS-Has-Attach:
X-MS-TNEF-Correlator:
x-mailer: Apple Mail (2.3826.700.81.1.6)
Authentication-Results-Original: dkim=none (message not signed)
 header.d=none;dmarc=none action=none header.from=arm.com;
x-ms-traffictypediagnostic:
	DU2PR08MB7272:EE_|PA6PR08MB10595:EE_|DB1PEPF00039231:EE_|PAWPR08MB10974:EE_
X-MS-Office365-Filtering-Correlation-Id: bb2436c4-433a-4763-9a3d-08de9b04db77
x-checkrecipientrouted: true
nodisclaimer: true
X-MS-Exchange-SenderADCheck: 1
X-MS-Exchange-AntiSpam-Relay: 0
X-Microsoft-Antispam-Untrusted:
 BCL:0;ARA:13230040|1800799024|376014|366016|56012099003|18002099003|22082099003|38070700021;
X-Microsoft-Antispam-Message-Info-Original:
 kM9GRW3OafS1J3vXITUDiqebPMQldCaS+a4nqEC1F8tKr3VinjN487f0cbGpD0rSY2i9gS/gTicV/rr8WChxw3rHVb5YsMcT4vMTZGRUfREthaEJERIWNV5jO6WEi3zUOf8cj/rSGa2+Wu2XQ8HNVEH6LP6YFqMPVup3Ix3RtBT3jyiLQslzkIKLmJvznnDQiMoCKWq8TNWrpnVUVQWqD395T1R+LRvS2jGB8Iqt4zvXAYYEPl6rwDcyenBPMWqecw3jjiAlY3UUR/8V1U1fGPYUQRHg5VQvVjogAdIgKZcRxglj7Ms8kvpuRimo8Vn97F0TuctY3NKSU2kO14z3b0aL8Ny4VCcnWP8KosE0G5OGjEQcsXv4E6zcKvW9bu5prFTCVf0Ne8V1W4trtFDkaKOdxQAcckqjs9ZiUQlC3xmxzTRByN9d7NYiY0mCsGA8Lx1vuZml4MMv0wKeCn5xawbnu+Jat2HTTlR8c/2NjJv91Xt8l/U0gpYh5Yr2jNv6q/P+kCtzqAEnr588xMhrQtjnRzHfj1D/FNCSXO2JXNOeTEGenZuzXPb2f2+Ho6DfHELwixIGQbzmwXzTZkPDK+x+vdZpH15GaPabIL442HrbY4UPLqJk4UH34YRWAH8nk5E4w2aW72/wxzoOTrp6iI0fTCiZWqTSmgq9k1WheqGJ8q9dsBdf6S2N+5yzL5gnSfny7YZY7Rh32w7mNiu6jr9fsHMdzimMOzuUPwDj//W5fDHwJpDZcRqUUSbrm0TI+rAuMhlYZJipJOWGZHPoRpMYsU5+keQhH9zwWs4MbA4=
X-Forefront-Antispam-Report-Untrusted:
 CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:DU2PR08MB7272.eurprd08.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(1800799024)(376014)(366016)(56012099003)(18002099003)(22082099003)(38070700021);DIR:OUT;SFP:1101;
Content-Type: text/plain; charset="us-ascii"
Content-ID: <CF8D78B940BF4347A53BA1F2CA07BD1D@eurprd08.prod.outlook.com>
Content-Transfer-Encoding: quoted-printable
MIME-Version: 1.0
X-Exchange-RoutingPolicyChecked:
 nSYuB5xMpUxeN5gY3tj1C5wnyTJH4bfHYMQLLV99BEtlipshxpawPRLFrfftTchR5fifUy6quGGT0HkmdvOwEVikab7U0P1zARoRYBDvw++PIjpHIWQAJ5EFJ5SM1zhBD2H37EJ/htJRj85b785VJNHNBxW84dmc6jdz2YuWIZaQHudhLgqU8kxrKnRJLMT4oOBmGsWG7bDoP7MhhNvqeNjUVDGYjsxWF4CiagsQEHmwhXZ+S4K2+0+P2xZF7CgIijrmuc1vf0aH6u08BuFG4hbSZ6ICH96gZJdobAjL/Kp6E74Uy0TJzMaE47Tbc4eGfv6o8+0w6BUHgN2L3lFSyg==
X-MS-Exchange-Transport-CrossTenantHeadersStamped: PA6PR08MB10595
X-EOPAttributedMessage: 0
X-MS-Exchange-Transport-CrossTenantHeadersStripped:
 DB1PEPF00039231.eurprd03.prod.outlook.com
X-MS-PublicTrafficType: Email
X-MS-Office365-Filtering-Correlation-Id-Prvs:
	5a0d91dc-a462-4573-540e-08de9b04b42c
X-Microsoft-Antispam:
	BCL:0;ARA:13230040|376014|35042699022|82310400026|14060799003|1800799024|36860700016|18002099003|22082099003|56012099003;
X-Microsoft-Antispam-Message-Info:
	nSncK29kLySZYImA+IBU7xnWonaRjdOZ457WeQfbjOvR7JcTbmDjUA9E97YCvJuCmJmNeJCrWsVI1OuO9zn7CK0LKXAK/ME+VUm3snyIeCoTdikfhs50ngQalnxh2ZxtuSotIlfsBb3Q9jU30+LQLi1VCdHOMBkjj6jfUEy2Z8nk7upe/jgcvEfdGp0s4jyL8FihivhDCsIsBQGSkleja7KSlKsAGu0nrTrozUb1PnNDnsYfJJtDudtJ6jg2UFgLqQlUQ9wFCiMtZJ2rdkMCO3bkVPcHBQpVn5+H+Bo5AIlji56OMVAxOe68yN9fwrVeCv8TiZC7Nwoqy/oO1Z1yJASIbRSKWIyHqAFaVRoh3/OSjC3Uv2zlXRfVf1RhoYsbnwzKixRt5SapL/mdcGrlCGqDSAH4ZhOquzY+xxjqJzHLXpzipFwjuqa3TUddbhI+iOyn/20Cc20STGSqkkDS/K7f8oq6W54xksh0aQDyv77TnEVQlfdE0DV9Pd8gn0GQS1wStLDcOCODLhP6gnHHQ5Uv+3rLmoAgISxpx36y8JwSzfdBjuQAoYAdM/Up/NkgGH1UQWwyGEZmmMM0Sg8JA88d59NZ3OzkGXLUJXmTgtWB1SDtdHgn/GLicRd3uI2ErKN3EhbDcGn55KB9FyYBL5OC5AU1HFA8j06WA/wELfjVwSxCXGxYi/RekonRxC4C6YYcoNv6hHFikLr1MfMgBInru2Z10RY45DXFYnCmmqB1T1gbRyhfTnM1Y9BlwUnOTwPyMCVnMbWl/irxa2pLEw==
X-Forefront-Antispam-Report:
	CIP:4.158.2.129;CTRY:GB;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:outbound-uk1.az.dlp.m.darktrace.com;PTR:InfoDomainNonexistent;CAT:NONE;SFS:(13230040)(376014)(35042699022)(82310400026)(14060799003)(1800799024)(36860700016)(18002099003)(22082099003)(56012099003);DIR:OUT;SFP:1101;
X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1
X-MS-Exchange-AntiSpam-MessageData-0:
	nCq/u2LFqRsswlbdHi83VeHeTxfRNRNTg65EbGHz6utUMMaDit9givSV28zjpgUgm+4ZG6COjMnBTurmf5nQ4HXgV7nX8SBZqeXbHH1OmlFyxfDlQa/ZNaFeAcUGzD5Z2dEEmzjtezC12DsrdslVmM6vPum8m3tj/ujQpZ6vOlfv39TGqulykw3lD1+F9HXCs3k5/CDS21wNK7L3MP5hq2kpkCwyIOxxJ7sGISztjImffMow+JlDYY6d2PqSIzi0RUVqZ3ezXYEq7myKeS+cWEXF53CNS6e+CrZoSvvEv25Db59QElYGBAdkZ9Xd3TsCHX151EPb4NyEWQfyVWm39fNkmdlaJo7kvnIhVq7L5xGAP+ihS7JM0iRHMIIVrJaWBY5DkmoQKaiwEaLYkO1Ko5ESSaz5ngpYWVJ4WbT3X5q/BZNUSSeg3oHAg8G7nRr1
X-OriginatorOrg: arm.com
X-MS-Exchange-CrossTenant-OriginalArrivalTime: 15 Apr 2026 15:37:09.6349
 (UTC)
X-MS-Exchange-CrossTenant-Network-Message-Id: bb2436c4-433a-4763-9a3d-08de9b04db77
X-MS-Exchange-CrossTenant-Id: f34e5979-57d9-4aaa-ad4d-b122a662184d
X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=f34e5979-57d9-4aaa-ad4d-b122a662184d;Ip=[4.158.2.129];Helo=[outbound-uk1.az.dlp.m.darktrace.com]
X-MS-Exchange-CrossTenant-AuthSource:
	DB1PEPF00039231.eurprd03.prod.outlook.com
X-MS-Exchange-CrossTenant-AuthAs: Anonymous
X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem
X-MS-Exchange-Transport-CrossTenantHeadersStamped: PAWPR08MB10974
X-purgate-ID: tlsNG-bad1c0/1776267436-5674A152-07F72940/0/0
X-purgate-type: clean
X-purgate-size: 5099

Hi Michal,

> On 15 Apr 2026, at 12:36, Michal Orzel <michal.orzel@amd.com> wrote:
>=20
> overlay_get_nodes_info() is called before fdt_overlay_apply() to extract
> target paths from the overlay. This fails for overlays using phandle-base=
d
> targeting (target =3D <&label>) because DTC compiles these as unresolved
> fixups (target =3D <0xffffffff>), causing fdt_overlay_target_offset() to
> return -FDT_ERR_BADPHANDLE. Prior to this change users were forced to
> manually modify the dtbo (even for hwdom) to switch from target to
> target-phandle by manually inspecting also the host DTB.
>=20
> Introduce overlay_get_target_path() which directly handles the two
> targeting cases that occur before fixup resolution:
> - target-path: the string property is returned directly.
> - target =3D <&label>: the label is found in the overlay's __fixups__
>   node, then resolved to a path via the base DTB's __symbols__ node.
>=20
> Signed-off-by: Michal Orzel <michal.orzel@amd.com>
> ---
> xen/common/device-tree/dt-overlay.c | 65 ++++++++++++++++++++++++++---
> 1 file changed, 59 insertions(+), 6 deletions(-)
>=20
> diff --git a/xen/common/device-tree/dt-overlay.c b/xen/common/device-tree=
/dt-overlay.c
> index d3d4669718ac..a0dee7edb7e5 100644
> --- a/xen/common/device-tree/dt-overlay.c
> +++ b/xen/common/device-tree/dt-overlay.c
> @@ -286,6 +286,63 @@ static unsigned int overlay_node_count(const void *o=
verlay_fdt)
>     return num_overlay_nodes;
> }
>=20
> +/*
> + * Resolve the target path for an overlay fragment.
> + *
> + * This is called before fdt_overlay_apply(), so phandle-based targets
> + * (target =3D <&label>) are still unresolved (compiled as 0xffffffff by=
 DTC).
> + * Handle the two cases that actually occur:
> + *  - target-path property: the path string is used directly,
> + *  - target =3D <&label>: the label is looked up in the overlay's __fix=
ups__
> + *    node, then resolved to a path via the base DTB's __symbols__ node.
> + *
> + * Returns a pointer into the FDT on success, NULL on failure.
> + */
> +static const char *overlay_get_target_path(const void *fdt, const void *=
fdto,
> +                                           int fragment)
> +{
> +    const char *path, *fragment_name;
> +    int fixups_off, symbols_off, property;
> +    int fragment_name_len;
> +
> +    /* Try target-path first (string-based targeting) */
> +    path =3D fdt_getprop(fdto, fragment, "target-path", NULL);
> +    if ( path )
> +        return path;
> +
> +    /* Phandle-based target: resolve via __fixups__ and __symbols__ */
> +    fixups_off =3D fdt_path_offset(fdto, "/__fixups__");
> +    if ( fixups_off < 0 )
> +        return NULL;
> +
> +    symbols_off =3D fdt_path_offset(fdt, "/__symbols__");
> +    if ( symbols_off < 0 )
> +        return NULL;
> +
> +    fragment_name =3D fdt_get_name(fdto, fragment, &fragment_name_len);
> +    if ( !fragment_name )
> +        return NULL;
> +
> +    fdt_for_each_property_offset(property, fdto, fixups_off)
> +    {
> +        const char *val, *label, *p;
> +        int val_len;
> +
> +        val =3D fdt_getprop_by_offset(fdto, property, &label, &val_len);
> +        if ( !val )
> +            continue;
> +
> +        /* Match entries of the form "/<fragment_name>:target:0" */
> +        for ( p =3D val; p < (val + val_len); p +=3D (strlen(p) + 1) )

what guarantees us that p will be null terminated, if a malformed overlay
is passed this strlen can read past the string, we can use strnlen having a=
s
upper bound a counter=3Dval_len? decreasing counter each iteration.

Or do you think it can never happen?

> +            if ( p[0] =3D=3D '/' &&
> +                 !strncmp(p + 1, fragment_name, fragment_name_len) &&
> +                 !strcmp(p + 1 + fragment_name_len, ":target:0") )
> +                return fdt_getprop(fdt, symbols_off, label, NULL);
> +    }
> +
> +    return NULL;
> +}
> +
> /*
>  * overlay_get_nodes_info gets full name with path for all the nodes whic=
h
>  * are in one level of __overlay__ tag. This is useful when checking node=
 for
> @@ -298,7 +355,6 @@ static int overlay_get_nodes_info(const void *fdto, c=
har **nodes_full_path)
>=20
>     fdt_for_each_subnode(fragment, fdto, 0)
>     {
> -        int target;
>         int overlay;
>         int subnode;
>         const char *target_path;
> @@ -307,11 +363,8 @@ static int overlay_get_nodes_info(const void *fdto, =
char **nodes_full_path)
>         if ( overlay < 0 )
>             continue;
>=20
> -        target =3D fdt_overlay_target_offset(device_tree_flattened, fdto=
,
> -                                           fragment, &target_path);
> -        if ( target < 0 )
> -            return target;
> -
> +        target_path =3D overlay_get_target_path(device_tree_flattened, f=
dto,
> +                                              fragment);
>         if ( target_path =3D=3D NULL )
>             return -EINVAL;
>=20
> --=20
> 2.43.0
>=20
>=20

Cheers,
Luca




From xen-devel-bounces@lists.xenproject.org Wed Apr 15 15:57:20 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 15 Apr 2026 15:57:20 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1282653.1565197 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wD2c3-0002lN-Qo; Wed, 15 Apr 2026 15:57:11 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1282653.1565197; Wed, 15 Apr 2026 15:57: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 1wD2c3-0002lG-OE; Wed, 15 Apr 2026 15:57:11 +0000
Received: by outflank-mailman (input) for mailman id 1282653;
 Wed, 15 Apr 2026 15:57:10 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <Luca.Fancellu@arm.com>) id 1wD2c2-0002lA-9G
 for xen-devel@lists.xenproject.org; Wed, 15 Apr 2026 15:57:10 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wD2c1-002rJ6-M5
 for xen-devel@lists.xenproject.org; Wed, 15 Apr 2026 17:57:09 +0200
Received: from [10.42.69.12] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <Luca.Fancellu@arm.com>)
 id 69dfb519-2eae-0a2a0a5409dd-0a2a450ca7fe-48
 for <xen-devel@lists.xenproject.org>; Wed, 15 Apr 2026 17:57:09 +0200
Received: from [40.107.162.30]
 (helo=PA4PR04CU001.outbound.protection.outlook.com)
 by tlsNG-d25034.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.0)
 (envelope-from <Luca.Fancellu@arm.com>)
 id 69dfb555-f40c-0a2a450c0019-286ba21e8eb8-3
 for <xen-devel@lists.xenproject.org>; Wed, 15 Apr 2026 17:57:09 +0200
Received: from AS4P192CA0037.EURP192.PROD.OUTLOOK.COM (2603:10a6:20b:658::28)
 by AS8PR08MB10152.eurprd08.prod.outlook.com (2603:10a6:20b:63e::20)
 with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9769.48; Wed, 15 Apr
 2026 15:57:00 +0000
Received: from AMS1EPF0000004A.eurprd04.prod.outlook.com
 (2603:10a6:20b:658:cafe::3f) by AS4P192CA0037.outlook.office365.com
 (2603:10a6:20b:658::28) with Microsoft SMTP Server (version=TLS1_3,
 cipher=TLS_AES_256_GCM_SHA384) id 15.20.9769.50 via Frontend Transport; Wed,
 15 Apr 2026 15:57:00 +0000
Received: from outbound-uk1.az.dlp.m.darktrace.com (4.158.2.129) by
 AMS1EPF0000004A.mail.protection.outlook.com (10.167.16.134) with Microsoft
 SMTP Server (version=TLS1_3, cipher=TLS_AES_256_GCM_SHA384) id 15.20.9769.17
 via Frontend Transport; Wed, 15 Apr 2026 15:57:00 +0000
Received: from DU2PR08MB7272.eurprd08.prod.outlook.com (2603:10a6:10:2d7::16)
 by VE1PR08MB5712.eurprd08.prod.outlook.com (2603:10a6:800:1a8::5)
 with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9769.48; Wed, 15 Apr
 2026 15:55:57 +0000
Received: from DU2PR08MB7272.eurprd08.prod.outlook.com
 ([fe80::5d34:206f:373:a323]) by DU2PR08MB7272.eurprd08.prod.outlook.com
 ([fe80::5d34:206f:373:a323%6]) with mapi id 15.20.9769.046; Wed, 15 Apr 2026
 15:55: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=arm.com header.i="@arm.com" header.h="From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck"; dkim=pass header.s=selector1 header.d=arm.com header.i="@arm.com" header.h="From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck"
ARC-Seal: i=2; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=pass;
 b=AYGZUILptsh0Gvz5JnsO0EFQ0rLkJDpL0tEceSOIivTLSkbxZ6ViGTC553iIUkdnwysMDVO/oMd/P+Lmgmol2FKTH4Ndql2fsKfUIyU4Tfki6pshr0OFW8cMGFUuY/FpQHzBwKdL6M5GndgcFQj9E5WDw1h7Wk9vLGoT82L80PxE1Rl5F+jO2WEf/dUq4j2B2jcG8S4rmAqbbgct52WPf7lHluNUtkdgsGLN/tcXtPOGdS1/OCM0Q0zJR/FkieLsW3xsLq8KxfZFuNnyMcf99T6ZqvSYXrrMEH9ICOM8KmR2rgMaHZbAVCHp59NEOuXR7qwDjzwAv5HVL/3ZxOXGhg==
ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com;
 s=arcselector10001;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1;
 bh=Tk7/cHl0rzOfWaoLWd/gpPXNecC2vp6Jp0xxxlMwimQ=;
 b=RFdtADAeZMDJQeiFOcMw0J2w4YaNqQ1v7/jrN8+uUo01KdqEBNIxYfemR5kT36B6BadwpZ/7euq6GItpiJJguZirbtyscMRz5LFlaKVHmVFEH5O/O8AVyurcAsgV7eIRGOvmKDdd8AEJxF264EVhi6oDzSnqQOOcx86kDiE0vCugF2QMII/sioaaOIlsm/au/dtFbd6CRgH7h073xP95LQZcLa9vjrJp3fcqbqg619rDkM2EAvw+GbGNHo+N35Dv8QjeM4ODcgBssVRrbaNGS45Dt4+mM/M9qm0/Kve4o1ydB2PpUAZo7rG/H0jiI3Sf1uWCib3BPsrFg3Qb3BJCpw==
ARC-Authentication-Results: i=2; mx.microsoft.com 1; spf=pass (sender ip is
 4.158.2.129) smtp.rcpttodomain=amd.com smtp.mailfrom=arm.com; dmarc=pass
 (p=none sp=none pct=100) action=none header.from=arm.com; dkim=pass
 (signature was verified) header.d=arm.com; arc=pass (0 oda=1 ltdi=1
 spf=[1,1,smtp.mailfrom=arm.com] dkim=[1,1,header.d=arm.com]
 dmarc=[1,1,header.from=arm.com])
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=arm.com; s=selector1;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck;
 bh=Tk7/cHl0rzOfWaoLWd/gpPXNecC2vp6Jp0xxxlMwimQ=;
 b=nWQmR2qk+G0ttxj4W/gUsWAxkMUUtVFM2BKW1PIIH/CDLz6NLmq3HEmHy5tMfGMYOxcbNEi3cF7h57B2kLfQce6iRo29bFj3fyXn8EB0AEuwCHv55mQOoQJuyAM/2GSWI4b8JOfaFHB2dikrjXd4MToX0MoO1qI9aXcuC9nXqck=
X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 4.158.2.129)
 smtp.mailfrom=arm.com; dkim=pass (signature was verified)
 header.d=arm.com;dmarc=pass action=none header.from=arm.com;
Received-SPF: Pass (protection.outlook.com: domain of arm.com designates
 4.158.2.129 as permitted sender) receiver=protection.outlook.com;
 client-ip=4.158.2.129; helo=outbound-uk1.az.dlp.m.darktrace.com; pr=C
ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none;
 b=pOKs2OBkkZBXMWjChgm+XymeKLZhbAotL3WY0qd5gaoMYAQbPzBGzuj2E4XHZ7H/6Qbfy/xR/anuJgUYUVtXrhqK96EKPSLRjS6mBykhpB7sHfLcEKZ3svibhgc038d2JkfmbA25QMn9j05QNeMoEfQNCy3iXgIPNZMPrgb1/MtGQ75TsuZUZfWVvTNmSESSMrTQXPdp2VdI9uMO42jiou4eadmlZWbEmxCa+m99oiUYJZVQyUb7F0yweN6qDMwr1m387DA1Gg+n0FYo2lyfF7tVAqK4U/BDsbFAdERvRsLjjHoyKamR1pOES4xuuTeBP0lUCs192Epc4IwZCScyDA==
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com;
 s=arcselector10001;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1;
 bh=Tk7/cHl0rzOfWaoLWd/gpPXNecC2vp6Jp0xxxlMwimQ=;
 b=DcrrVk5bjxE/A+NYIeC/KG26rOUGymlbYdPySNYGeSPtgzlOeg332ysJdE/fKPtZTGOyThc8ZPuCSVm1G2hihdJn3TIGHKpD74/fV8PRxbdYY+U6xbOhhe+ztfJOwHXDH0frinWq7PcOupM9l2ordjqCaiua8U1jwVG2+5WK+F2UCapZSzZrH3ey25sD0TDRnj2+zg63W7wJSJDaCVmG+omMD44FNSUhn4grUhtqtGkyT7Wut1+cOqkQLOU8tMvc20k92eY3EBBcDvmqCOgd2uLzy70dmsvZJ2CyfRtAMf1LdtbRssSAtSuxzLdaM9odld6HtnQpbJJES+xdAim4gQ==
ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass
 smtp.mailfrom=arm.com; dmarc=pass action=none header.from=arm.com; dkim=pass
 header.d=arm.com; arc=none
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=arm.com; s=selector1;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck;
 bh=Tk7/cHl0rzOfWaoLWd/gpPXNecC2vp6Jp0xxxlMwimQ=;
 b=nWQmR2qk+G0ttxj4W/gUsWAxkMUUtVFM2BKW1PIIH/CDLz6NLmq3HEmHy5tMfGMYOxcbNEi3cF7h57B2kLfQce6iRo29bFj3fyXn8EB0AEuwCHv55mQOoQJuyAM/2GSWI4b8JOfaFHB2dikrjXd4MToX0MoO1qI9aXcuC9nXqck=
From: Luca Fancellu <Luca.Fancellu@arm.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 6/6] xen/dt-overlay: attach resources for child nodes in
 overlay
Thread-Topic: [PATCH 6/6] xen/dt-overlay: attach resources for child nodes in
 overlay
Thread-Index: AQHczMxJagU60W5wKEqy3Z9xj7be5LXgRvWA
Date: Wed, 15 Apr 2026 15:55:57 +0000
Message-ID: <399078B8-E138-4689-AF98-8BDC6052C080@arm.com>
References: <20260415113700.107915-1-michal.orzel@amd.com>
 <20260415113700.107915-7-michal.orzel@amd.com>
In-Reply-To: <20260415113700.107915-7-michal.orzel@amd.com>
Accept-Language: en-GB, en-US
Content-Language: en-US
X-MS-Has-Attach:
X-MS-TNEF-Correlator:
x-mailer: Apple Mail (2.3826.700.81.1.6)
Authentication-Results-Original: dkim=none (message not signed)
 header.d=none;dmarc=none action=none header.from=arm.com;
x-ms-traffictypediagnostic:
	DU2PR08MB7272:EE_|VE1PR08MB5712:EE_|AMS1EPF0000004A:EE_|AS8PR08MB10152:EE_
X-MS-Office365-Filtering-Correlation-Id: d7e0988e-fe14-42d7-3609-08de9b07a14d
x-checkrecipientrouted: true
nodisclaimer: true
X-MS-Exchange-SenderADCheck: 1
X-MS-Exchange-AntiSpam-Relay: 0
X-Microsoft-Antispam-Untrusted:
 BCL:0;ARA:13230040|376014|1800799024|366016|38070700021|18002099003|56012099003|22082099003;
X-Microsoft-Antispam-Message-Info-Original:
 bmSe0QuNQfzIthojUNU2KI3otg5PIckTwoCBnxbCj1yc/mjO2FuHiM0wOneYVOagC9R5xVpjcmRUIo+U6lq8TsQaaKCx9eTkMtqbPLys+A4sOJ/u+Bv3IaLJVZzsIVcVcKdQPYKJr8dUsRrFBbSYONbwK2MoVbm+P8M9DrbLyFd87DjKg6qht9kw5RNra0tS+JrHplbZ/O2fyWiFXcakJaL6z/k9EbMyPCuAMwy6kxUTmYwmmRSgYlS6WgF2vHm99k+Dh/BESfYLnptOZ1zVqhDpCyWiSGzx87laYWNaOkptuRgQB+2FSMmEQ4FJo2jzS21W2uVEOkkxi198U5Svqe3+OX+V87504ClVw5YjZVN4fax+oSKYtn9t8matj3XMmUPDizQOUXdywzb2A0c4VzjO1Bg9xxTeH+f+bzaq0j9kjQyuPCh77XhAVnRFQF5GPLPJW8EZK4q+FYr332Gc3RwOejGbA7cluVsElsLp+PQwzu/nUDFAjPFFU0rAL//7hFwYAyvkBnnyOF+Kz4eUKfc7bCPvLE6JYlEXRoCC66xwLUG8CMfDvXu3UCnwVca/y712UZ8qUm4Xmr7JCU4X/ipmCYZMAyR4qnG9N/TZVS72r7g1wAIlyuLgR6FS13ItZqRu10ZZSsDGCyBZViWYzpmTRKghmwx46JYoLDhSmTph2GX7VQrtyifJeIlVB6sY7th2CZ0SwhhIpLv5WIw9zGlSFX5ywWJ7QxhyKEaxrp/FHl1lhvQmKoJsgqEa178obhDN3VedAQ8NDo24hzwmqBx/8vZHrwJlu/8LBmtH9l0=
X-Forefront-Antispam-Report-Untrusted:
 CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:DU2PR08MB7272.eurprd08.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(376014)(1800799024)(366016)(38070700021)(18002099003)(56012099003)(22082099003);DIR:OUT;SFP:1101;
Content-Type: text/plain; charset="us-ascii"
Content-ID: <F18E0BC272FBBF4D93291239101961C5@eurprd08.prod.outlook.com>
Content-Transfer-Encoding: quoted-printable
MIME-Version: 1.0
X-Exchange-RoutingPolicyChecked:
 nXyjJEx3nXw9bX09HsynZrd4b3GflUn6iJpge+TMdOE4ueu7UzZuAWtt8oTd701idgQ3FoD+obcO3mBfa3kotIt60SWTWb4f7CazdbHBvk3zsh4uBZW6LBXn9GUSi0ZOgWyWvX3EP+RVuS67XKZtn7auyNIprVzwAsOjZ720PVb+oreR5yWWJFxcz5pxfr5q3mPtTGHWl3VfGODFSawpW1axQVWkUjUgqRiDpMny/Pe+lVUoBv77UrdjBojiT82ebDHCLZUXz05bdfK5oEWIV0O/HSZBLqa0XMdAgGodOaiHZvuySdU+eWLYuEbamLmKN5tKtDZyDPm8bmn45kzjAg==
X-MS-Exchange-Transport-CrossTenantHeadersStamped: VE1PR08MB5712
X-EOPAttributedMessage: 0
X-MS-Exchange-Transport-CrossTenantHeadersStripped:
 AMS1EPF0000004A.eurprd04.prod.outlook.com
X-MS-PublicTrafficType: Email
X-MS-Office365-Filtering-Correlation-Id-Prvs:
	48e2393a-4008-4253-a9a9-08de9b077bdd
X-Microsoft-Antispam:
	BCL:0;ARA:13230040|14060799003|376014|36860700016|82310400026|35042699022|1800799024|22082099003|56012099003|18002099003;
X-Microsoft-Antispam-Message-Info:
	r+hNDKmw4opRUz3qtGUNKWFVqB3obVr8bF/xkmENjX4KM+BPVqX9ywccAgYSvtB06ODOjLT96k+Sexx3Datshw1QrBtAHioVHZJnYWp79xbtk5Z8YqQB1ozfbLiVHpdMWRsG8bUPsUAX6HG/MSs+mf5ymCIIIxRsKsaMPRZZSxKNTn79MI4HVkTGlYacRhvxeh6hG+FMfE4dvOcbFMuABKZCFMpucsuKgCUvKKar/jPBo2ULm4MryQ8hPb5LsM6Sn0Khk0h5jhXdCP52mdPrRu4gUeJOCZaPHtLHr4N/eiPaVqLQjqM8a3//CAVELND1H62VMuebUSXUCOGKGuHSA6uatXX7sxgrNbGqgjKVZtsAmOKATJMBJfZkiZd7qzd9ix+PKLlzVavu2JIf/fEC5jeXB5urO6FV8g1nBQoxs0Tn44viu79nZb1ejuy4eEqb+sqXU/rx4w9qEYnzohjuGPOSn55pQXBO98PZ+oybdNbcyIm2D6ERlBlAAImzQS3JgYt17ZzaTH57UIMBt3yUz14zckTUW8DRAhb6Fvxe14ZBAoo62us3qgOsp4Js0a7wujwpKC0MSc52dMEUh1R4+UuVJhbs4Q5awt8jcpFrW61m0GO3H810bHVcKg+Vasg/EP0ps+y1w1lISwP963aAYmsweAI+cMyDkpaHc9lM8BkYhS37W4kjaEwTYr530aYvFS7wYovYKIxKACR1YCkNT0UXLmKfiDWe5nVj8vWjhxhP2MrrYi2uL1NDZPHzDQv82rAOxBZ7evYRUdYkg6/R2g==
X-Forefront-Antispam-Report:
	CIP:4.158.2.129;CTRY:GB;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:outbound-uk1.az.dlp.m.darktrace.com;PTR:InfoDomainNonexistent;CAT:NONE;SFS:(13230040)(14060799003)(376014)(36860700016)(82310400026)(35042699022)(1800799024)(22082099003)(56012099003)(18002099003);DIR:OUT;SFP:1101;
X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1
X-MS-Exchange-AntiSpam-MessageData-0:
	crVFjz3jy1+BY9v6wqWUaqUqOV19YFVKz2IxTZLI5DaSM75n7w394A1bpfKdbO6NwFZxd0FyON2KwhGHvhAw9dAbd415LSJ9RQab+t5aEObhBe4MIllg7josHLj2aK48JtJ01FQ/jxMphu74n2zLg95au+BFuf2NUQwLHCdU4NQ4IVkWanrJGlboS+cH8gQLK01eVdUp7/bfwm2Oi1cCOzgqCYxrIDk5IveHrftmGAjlxawOVhkxIXLKtwlkTpYL2cg2DCtNa1dhZF/1CtcA9HlX+DcWfQ6dhr/l6raErG4mKYUxTy6Yrv7sVI9S0dW4lsqbCwpJPDvND5BVNf6ZRQmXhmjTd+ScD9bhW/k85Uj4X2nqR7WRxNaqrXyMck3lR7Duw4z0dvcx/TZ65jG2m2D4OTa6iPpSVVvriCTf1BHkxZsL0Ms8y/pipmxbHTZN
X-OriginatorOrg: arm.com
X-MS-Exchange-CrossTenant-OriginalArrivalTime: 15 Apr 2026 15:57:00.5559
 (UTC)
X-MS-Exchange-CrossTenant-Network-Message-Id: d7e0988e-fe14-42d7-3609-08de9b07a14d
X-MS-Exchange-CrossTenant-Id: f34e5979-57d9-4aaa-ad4d-b122a662184d
X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=f34e5979-57d9-4aaa-ad4d-b122a662184d;Ip=[4.158.2.129];Helo=[outbound-uk1.az.dlp.m.darktrace.com]
X-MS-Exchange-CrossTenant-AuthSource:
	AMS1EPF0000004A.eurprd04.prod.outlook.com
X-MS-Exchange-CrossTenant-AuthAs: Anonymous
X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem
X-MS-Exchange-Transport-CrossTenantHeadersStamped: AS8PR08MB10152
X-purgate-ID: tlsNG-d25034/1776268629-80D5BA3D-FDB42907/0/0
X-purgate-type: clean
X-purgate-size: 1105

Hi Michal,

> On 15 Apr 2026, at 12:37, Michal Orzel <michal.orzel@amd.com> wrote:
>=20
> handle_attach_overlay_nodes() only calls handle_device() on the
> top-level overlay nodes tracked in entry->nodes_address[].  Child nodes
> that have their own reg, interrupts, or iommus properties are never
> processed, so their IRQs are not routed, MMIO regions are not mapped,
> and IOMMU setup is skipped.
>=20
> Introduce handle_device_and_children() which recursively walks the
> subtree rooted at each overlay node and calls handle_device() on every
> descendant, ensuring all resources in the overlay are properly attached.
>=20
> Note that the attach error path has a pre-existing bug: on partial
> failure, the tracking rangesets are destroyed without first revoking the
> IRQ/MMIO permissions and IOMMU assignments that were already granted by
> the successful handle_device() calls.  Add a TODO comment to flag this.
>=20
> Signed-off-by: Michal Orzel <michal.orzel@amd.com>
> ---
>=20

Looks ok to me

Reviewed-by: Luca Fancellu <luca.fancellu@arm.com>

Cheers,
Luca





From xen-devel-bounces@lists.xenproject.org Wed Apr 15 17:40:43 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 15 Apr 2026 17:40:43 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1282686.1565208 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wD4E2-0000GT-MY; Wed, 15 Apr 2026 17:40:30 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1282686.1565208; Wed, 15 Apr 2026 17:40: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 1wD4E2-0000GK-I8; Wed, 15 Apr 2026 17:40:30 +0000
Received: by outflank-mailman (input) for mailman id 1282686;
 Wed, 15 Apr 2026 17:40:29 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <marmarek@invisiblethingslab.com>) id 1wD4E1-0000GE-JY
 for xen-devel@lists.xenproject.org; Wed, 15 Apr 2026 17:40:29 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wD4Dz-003782-LH
 for xen-devel@lists.xenproject.org; Wed, 15 Apr 2026 19:40:28 +0200
Received: from [10.42.69.5] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <marmarek@invisiblethingslab.com>)
 id 69dfcd69-5cb7-0a2a0a5109dd-0a2a4505cabe-42
 for <xen-devel@lists.xenproject.org>; Wed, 15 Apr 2026 19:40:27 +0200
Received: from [202.12.124.157] (helo=fhigh-b6-smtp.messagingengine.com)
 by tlsNG-c201ff.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.0)
 (envelope-from <marmarek@invisiblethingslab.com>)
 id 69dfcd89-3760-0a2a45050019-ca0c7c9dd7e7-3
 for <xen-devel@lists.xenproject.org>; Wed, 15 Apr 2026 19:40:26 +0200
Received: from phl-compute-06.internal (phl-compute-06.internal [10.202.2.46])
 by mailfhigh.stl.internal (Postfix) with ESMTP id 600147A0227;
 Wed, 15 Apr 2026 13:40:25 -0400 (EDT)
Received: from phl-frontend-04 ([10.202.2.163])
 by phl-compute-06.internal (MEProxy); Wed, 15 Apr 2026 13:40:25 -0400
Received: by mail.messagingengine.com (Postfix) with ESMTPA; Wed,
 15 Apr 2026 13:40:22 -0400 (EDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@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=1776274825;
	 x=1776361225; bh=s3XtCFscdlXN7iNA/z6lXwyh+C6EF+xDAafKYuN191g=; b=
	h7XYXW5ohqP5fTkawCmdoTKM8FMi/Xi5tiSorkwnL8Jp2qBWOKRNJvmL6MygEZgC
	HsZy+yFoToa2ux+am/Z+q/bLY5FTCa8wddjA2vPSSCMq+NqVMZ5ihorhsnNbu0ct
	Bn002wlTEt9ng3tCQ7hjgU2oqsFLChvuZN+wpPWn6bTCgdl/4lhQT87IAVgcG9JG
	C5THSo+8DStYWUPgSKxLZF0MlSTcgG1GtX8qmQcloqo7f4gdkt0vY2+A6/nasZai
	tF+tTseWmUR4GNdQfjTqfDSxro6lQBG1MU5p1WA8Os6o9Z752bGJKn6H5GjIigZp
	Bwg9yz/h0iHyjj8MjzLcXQ==
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=
	1776274825; x=1776361225; bh=s3XtCFscdlXN7iNA/z6lXwyh+C6EF+xDAaf
	KYuN191g=; b=SEt6Iq+Ej6w9OLnQhoiDNtpyx8BFOKXrGkJNy80UG5UEuqGugH4
	U810k5YOMdmY9Rq9xzbMffeOf071wKb0p35xKCnhYzVL1blUiTkAUtzJi9O4iLHw
	/fQFHG/PrFsImSV+z2Vm/qOiiHeQNrT9yHBjhv/TtLGkAUoDj+Ldjw2u9a8/3FWT
	6+0YWo3+Ma/s/jQFwkq9OHhvePEC8p/tDu1J7PPfLkSMU86LLTRmELhyx6UcOno0
	Kq5vfmat/iLZwHdGGVmH2YIjgmbEnk+BykKctPzUYex/tK91QR3osm3ABv1nG+75
	AOyySvst3bSerVK6fdync+Te1f52AeZUSDg==
X-ME-Sender: <xms:iM3fadXs0aa9p0_6BRNzg02-nMToXkSv-mHPOplDu3AX4Zeyy1lECQ>
    <xme:iM3faUcbssfcSY_rQIMMUa1G3evzFpcj-aZGKnD5Cce0e5kKpfheoXNlTS1uL5vUK
    HbjbwTe2AUDmZpbCjR1gP8EzXB9OD9b9WF90_a80Y_Q1_oL2g>
X-ME-Received: <xmr:iM3faRv63WXyWLAmC9PDb8ryYUvgsNdjItIHiDWwbNLAbNvR7tz0yyDeqlL_>
X-ME-Proxy-Cause: gggruggvucftvghtrhhoucdtuddrgeefhedrtddtgdeggeejudcutefuodetggdotefrod
    ftvfcurfhrohhfihhlvgemucfhrghsthforghilhdpuffrtefokffrpgfnqfghnecuuegr
    ihhlohhuthemuceftddtnecusecvtfgvtghiphhivghnthhsucdlqddutddtmdenucfjug
    hrpeffhffvvefukfhfgggtuggjsehgtderredttdejnecuhfhrohhmpeforghrvghkucfo
    rghrtgiihihkohifshhkihdqifpkrhgvtghkihcuoehmrghrmhgrrhgvkhesihhnvhhish
    hisghlvghthhhinhhgshhlrggsrdgtohhmqeenucggtffrrghtthgvrhhnpeehfeejueej
    teefhedtgfefhfdugeehgfektdejieejteekuddtgefhudekfefggfenucffohhmrghinh
    epkhgvrhhnvghlrdhorhhgpdhgihhtlhgrsgdrtghomhdpvhgrthgvshdrthgvtghhnecu
    vehluhhsthgvrhfuihiivgeptdenucfrrghrrghmpehmrghilhhfrhhomhepmhgrrhhmrg
    hrvghksehinhhvihhsihgslhgvthhhihhnghhslhgrsgdrtghomhdpnhgspghrtghpthht
    ohephedpmhhouggvpehsmhhtphhouhhtpdhrtghpthhtoheprghnthhhohhnhidrphgvrh
    grrhgusehvrghtvghsrdhtvggthhdprhgtphhtthhopeigvghnqdguvghvvghlsehlihhs
    thhsrdigvghnphhrohhjvggtthdrohhrghdprhgtphhtthhopegrnhgurhgvfidrtghooh
    hpvghrfeestghithhrihigrdgtohhmpdhrtghpthhtohepshhsthgrsggvlhhlihhnihes
    khgvrhhnvghlrdhorhhgpdhrtghpthhtoheprhhoghgvrhdrphgruhestghithhrihigrd
    gtohhm
X-ME-Proxy: <xmx:iM3fab_pvE5qqMs6CdShS1KQ_4oIlH_rRWLKRyIW6khiYV3l4sEOXQ>
    <xmx:iM3faU3dmpPzC1WGJr7inZksqyHEG3dHGYH4A6hdlmyyZSjFsAMPyg>
    <xmx:iM3faYDBu8heSzI1NfmoVm52GGY8cp1L0u-Zlo-SQW559ohsH2xDJw>
    <xmx:iM3faYerA-DpAB81opqHZltx5kbd8QFbvwRdyWvWWiIVBkrLpeezfw>
    <xmx:ic3faWmfx19u_xFrs3SrGCMpPFF5ZJWzlkcnUjKC6QSN_IjhBhLkYsDL>
Feedback-ID: i1568416f:Fastmail
Date: Wed, 15 Apr 2026 19:40:19 +0200
From: Marek =?utf-8?Q?Marczykowski-G=C3=B3recki?= <marmarek@invisiblethingslab.com>
To: Anthony PERARD <anthony.perard@vates.tech>
Cc: xen-devel@lists.xenproject.org,
	Andrew Cooper <andrew.cooper3@citrix.com>,
	Stefano Stabellini <sstabellini@kernel.org>,
	Roger Pau =?utf-8?B?TW9ubsOp?= <roger.pau@citrix.com>
Subject: Re: [PATCH test-artifacts v3 09/13] Add trigger-test job, to run
 test on a Linux built from a branch/tag
Message-ID: <ad_Ng5TryP3Nj6em@mail-itl>
References: <cover.bd2e5bd58e4b316c9c1042b1ca8db51b81fb7ea7.1774999132.git-series.marmarek@invisiblethingslab.com>
 <9893108225500bb841a39918942bc9267e62b6af.1774999132.git-series.marmarek@invisiblethingslab.com>
 <ad-WTdnAdOzcUkze@l14>
MIME-Version: 1.0
Content-Type: multipart/signed; micalg=pgp-sha256;
	protocol="application/pgp-signature"; boundary="CaGGDZKULuvCeH9e"
Content-Disposition: inline
In-Reply-To: <ad-WTdnAdOzcUkze@l14>
X-purgate-ID: tlsNG-c201ff/1776274827-2292196F-228500A5/0/0
X-purgate-type: clean
X-purgate-size: 4409


--CaGGDZKULuvCeH9e
Content-Type: text/plain; protected-headers=v1; charset=utf-8
Content-Disposition: inline
Content-Transfer-Encoding: quoted-printable
Date: Wed, 15 Apr 2026 19:40:19 +0200
From: Marek =?utf-8?Q?Marczykowski-G=C3=B3recki?= <marmarek@invisiblethingslab.com>
To: Anthony PERARD <anthony.perard@vates.tech>
Cc: xen-devel@lists.xenproject.org,
	Andrew Cooper <andrew.cooper3@citrix.com>,
	Stefano Stabellini <sstabellini@kernel.org>,
	Roger Pau =?utf-8?B?TW9ubsOp?= <roger.pau@citrix.com>
Subject: Re: [PATCH test-artifacts v3 09/13] Add trigger-test job, to run
 test on a Linux built from a branch/tag

On Wed, Apr 15, 2026 at 01:44:47PM +0000, Anthony PERARD wrote:
> On Wed, Apr 01, 2026 at 01:21:59AM +0200, Marek Marczykowski-G=C3=B3recki=
 wrote:
> > When scheduling pipeline in test-artifacts repo, it can get also
> > TEST_TRIGGER_REPO and TEST_TRIGGER_BRANCH variables, to trigger relevant
> > pipeline to test just built artifacts.
> > Pass ARTIFACTS_REPO+ARTIFACTS_BRANCH to the child pipeline to ensure it
> > fetches artifacts from the right job.
> > For example, to build linux-next and test Xen staging on it, the
> > pipeline could be triggered with:
> >
> >     LINUX_GIT_URL=3Dhttps://git.kernel.org/pub/scm/linux/kernel/git/nex=
t/linux-next.git
> >     LINUX_GIT_VERSION=3Dmaster
> >     TEST_TRIGGER_REPO=3Dxen-project/hardware/xen
> >     TEST_TRIGGER_BRANCH=3Dstaging
> >
> > The triggered xen test pipeline will skip most build jobs.
> >
> > Signed-off-by: Marek Marczykowski-G=C3=B3recki <marmarek@invisiblething=
slab.com>
> > ---
>=20
> You might want to add that this depends on two patch for the xen repo,
> for the trigger to do the expected tests:
>     CI: make test-artifacts repo/branch/job customizable
>     ci: introduce BUILD_FOR_TESTS_ONLY
>=20
> > diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml
> > index 62b2a24e7faf..9d90a8f57ff8 100644
> > --- a/.gitlab-ci.yml
> > +++ b/.gitlab-ci.yml
> > @@ -105,3 +110,18 @@ linux-git-x86_64:
> >  microcode-x86:
> >    extends: .x86_64-artifacts
> >    script: ./scripts/x86-microcode.sh
> > +
> > +trigger-test:
> > +  stage: deploy
> > +  trigger:
> > +    project: $TEST_TRIGGER_REPO
> > +    branch: $TEST_TRIGGER_BRANCH
> > +    strategy: mirror
> > +  variables:
> > +    ARTIFACTS_REPO: $CI_PROJECT_PATH
> > +    ARTIFACTS_BRANCH: $CI_COMMIT_REF_NAME
> > +    LINUX_JOB_X86_64: linux-git-x86_64
> > +    LINUX_JOB_ARM64: linux-git-arm64
> > +    BUILD_FOR_TESTS_ONLY: 1
>=20
> Can we add this?
>   inherit:
>     variables: false
>=20
> Otherwise, as I understand, the triggered pipeline will also use the
> global variables, like TEST_TRIGGER_REPO, LINUX_GIT_VERSION, ... Or I
> could be wrong because we don't set a default value and the are only
> manual/scheduled pipeline variable.
>=20
> https://docs.gitlab.com/ci/yaml/#trigger
> > CI/CD variables defined in a top-level variables section (globally) or
> > in the trigger job are forwarded to the downstream pipeline as trigger
> > variables.
>=20
> https://docs.gitlab.com/ci/pipelines/downstream_pipelines/#prevent-defaul=
t-variables-from-being-passed

Hm, yes, inherit:variables:false might be needed if we'd want to avoid
passing those variables. But, TBH I'm not sure if we want to avoid that
- it might be useful at some point to get LINUX_GIT_VERSION there, for
example.=20

> I'm not sure if the inherit:variables:false is needed, so:
> Reviewed-by: Anthony PERARD <anthony.perard@vates.tech>
>=20
> Thanks,
>=20
>=20
> --
> Anthony Perard | Vates XCP-ng Developer
>=20
> XCP-ng & Xen Orchestra - Vates solutions
>=20
> web: https://vates.tech
>=20
>=20

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

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

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

iQEzBAEBCAAdFiEEhrpukzGPukRmQqkK24/THMrX1ywFAmnfzYMACgkQ24/THMrX
1yx8Xwf/XSWAbi0mIjPs1NEu6gFMy2T5CYBtFs5hZkffz7lLVAKUbS5PHBLsMBKh
98gCov1nT1b9ZYVhEB/0fDjhMF4LyQNOhD/flAkcBR/iLSaz9jftt9u0qdeXRBjx
FBTSxsLT4NvthLgUB+hcFJfGY2/2IWsznVTLkg58UnLnCEiLyie7ovMbHTRgvN2H
C+a5+4YrnCEU6XdLRDSYmMEhcgmZZQKybGZgy7i8+68zrJT85CL33yElh4W0jhja
1mFVrOYHz4ZlHVti4HYF8TILSF5ck8L3mmW9NHiL2VQ1ZEz6YTiBmGgOHUL/CJYF
A/VFCVCHiAM4UJM24XtD6TE+mzLigw==
=qeFz
-----END PGP SIGNATURE-----

--CaGGDZKULuvCeH9e--


From xen-devel-bounces@lists.xenproject.org Wed Apr 15 17:46:00 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 15 Apr 2026 17:46:00 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1282694.1565216 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wD4JG-0000pD-7o; Wed, 15 Apr 2026 17:45:54 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1282694.1565216; Wed, 15 Apr 2026 17:45: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 1wD4JG-0000p6-4M; Wed, 15 Apr 2026 17:45:54 +0000
Received: by outflank-mailman (input) for mailman id 1282694;
 Wed, 15 Apr 2026 17:45:53 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <bernhard.kaindl@citrix.com>) id 1wD4JF-0000oy-CK
 for xen-devel@lists.xenproject.org; Wed, 15 Apr 2026 17:45:53 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wD4JE-00Dvab-Ly
 for xen-devel@lists.xenproject.org; Wed, 15 Apr 2026 19:45:52 +0200
Received: from [10.42.69.5] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <bernhard.kaindl@citrix.com>)
 id 69dfceaf-2eae-0a2a0a5409dd-0a2a4505d5e0-30
 for <xen-devel@lists.xenproject.org>; Wed, 15 Apr 2026 19:45:52 +0200
Received: from [160.101.131.9] (helo=na1pdmzitismtp02.tibco.com)
 by tlsNG-c201ff.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.0)
 (envelope-from <bernhard.kaindl@citrix.com>)
 id 69dfcecf-3760-0a2a45050019-a06583098b08-3
 for <xen-devel@lists.xenproject.org>; Wed, 15 Apr 2026 19:45:52 +0200
Received: from debian.eng.citrite.net (unknown [10.113.40.46])
 by na1pdmzitismtp02.tibco.com (Postfix) with ESMTP id 7B8CB81C0CF2;
 Wed, 15 Apr 2026 13:44:57 -0400 (EDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-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: Bernhard Kaindl <bernhard.kaindl@citrix.com>
To: xen-devel@lists.xenproject.org
Cc: Bernhard Kaindl <bernhard.kaindl@citrix.com>,
	Anthony PERARD <anthony.perard@vates.tech>,
	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=20Pau=20Monn=C3=A9?= <roger.pau@citrix.com>,
	Stefano Stabellini <sstabellini@kernel.org>
Subject: [PATCH 0/4] xen/mm: Host-side unit/integration test framework for page_alloc.c
Date: Wed, 15 Apr 2026 18:34:55 +0100
Message-Id: <cover.1776273656.git.bernhard.kaindl@citrix.com>
X-Mailer: git-send-email 2.39.5
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit
X-purgate-ID: tlsNG-c201ff/1776275152-21B3896F-8A0D6962/0/0
X-purgate-type: clean
X-purgate-size: 4597

Hi all,

This patch series adds a host-side unit and integration test framework
for the Xen page allocator in xen/common/page_alloc.c.

Using this framework, it also adds a host-side integration test suite
for memory claims, including NUMA-aware claim sets.

This test suite complements the functional system tests submitted as
part of the NUMA-aware claims v6 series yesterday.

The purpose is to verify the behaviour of the page allocator when
multi-node claim sets are present in situations that are easier to
create and validate in isolation, with full control over a synthetic
Xen heap state and visibility into the claim state of domains as
claims are made and redeemed through heap allocation.

This series depends on the NUMA claims v6 series, which introduced
NUMA-aware claim sets which I submitted yesterday:

[PATCH v6 0/7] xen/mm: Introduce NUMA-aware claim sets for domains
https://lists.xen.org/archives/html/xen-devel/2026-04/msg00587.html
https://patchwork.kernel.org/project/xen-devel/list/?series=1081139

Its design is described in this design document submitted yesterday:

[PATCH v2] docs: Draft Design Document for NUMA-aware claim sets
https://lists.xen.org/archives/html/xen-devel/2026-04/msg00569.html
https://patchwork.kernel.org/project/xen-devel/list/?series=1081047

Patch summary:

1. tools/tests/alloc: Add test framework for xen/common/page_alloc.c
2. tools/tests/alloc: Add integration tests for claims and claim sets
3. tools/tests/alloc: Add tests for offlining with claims present
4. xen/mm: Fix recalling claims when offlining pages if needed

Thanks,

  Bernhard Kaindl

---
PS: The bug fixed in the last commit of this series affects global
outstanding claims as implemented in current Xen master as well.

However, this only arises when Xen offlines pages. Page offlining
code in current Xen still has known limitations, particularly when
offlining pages from larger buddies, and should be avoided in the
interest of heap integrity.

That said, this test framework makes it possible to run targeted
test cases on a synthetic Xen heap and observe logged changes
to the heap during page offlining.

That should make further offlining fixes easier to validate, both by
checking the test results and by inspecting the resulting heap state.

If you are interested in that, the next series will add a test suite
for offlining pages using this test framework. That should make it
possible to observe the effects of the bugs and the corresponding
fixes on any machine able to compile Xen source code.

Bernhard Kaindl (4):
  tools/tests/alloc: Unit and Integration Test Framework for
    page_alloc.c
  tools/tests/alloc: Add integration test suite for memory claims
  tools/tests/alloc: Add tests for offlining with claims present
  xen/mm: Recall claims when offlining pages if needed

 tools/tests/Makefile                        |   1 +
 tools/tests/alloc/.gitignore                |   6 +
 tools/tests/alloc/Makefile                  | 141 ++++++
 tools/tests/alloc/README.rst                |  31 ++
 tools/tests/alloc/check-asserts.h           | 347 +++++++++++++++
 tools/tests/alloc/harness.h                 |  69 +++
 tools/tests/alloc/hypervisor-macros.h       | 101 +++++
 tools/tests/alloc/libtest-page_alloc.h      | 356 +++++++++++++++
 tools/tests/alloc/mock-page_list.h          | 307 +++++++++++++
 tools/tests/alloc/page_alloc-wrapper.h      | 465 ++++++++++++++++++++
 tools/tests/alloc/page_alloc_shim.h         | 433 ++++++++++++++++++
 tools/tests/alloc/test-claims_basic.c       | 230 ++++++++++
 tools/tests/alloc/test-claims_numa_redeem.c | 201 +++++++++
 tools/tests/alloc/test-offlining-claims.c   | 102 +++++
 xen/common/page_alloc.c                     |  42 ++
 15 files changed, 2832 insertions(+)
 create mode 100644 tools/tests/alloc/.gitignore
 create mode 100644 tools/tests/alloc/Makefile
 create mode 100644 tools/tests/alloc/README.rst
 create mode 100644 tools/tests/alloc/check-asserts.h
 create mode 100644 tools/tests/alloc/harness.h
 create mode 100644 tools/tests/alloc/hypervisor-macros.h
 create mode 100644 tools/tests/alloc/libtest-page_alloc.h
 create mode 100644 tools/tests/alloc/mock-page_list.h
 create mode 100644 tools/tests/alloc/page_alloc-wrapper.h
 create mode 100644 tools/tests/alloc/page_alloc_shim.h
 create mode 100644 tools/tests/alloc/test-claims_basic.c
 create mode 100644 tools/tests/alloc/test-claims_numa_redeem.c
 create mode 100644 tools/tests/alloc/test-offlining-claims.c

-- 
2.39.5



From xen-devel-bounces@lists.xenproject.org Wed Apr 15 17:47:32 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 15 Apr 2026 17:47:32 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1282720.1565225 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wD4Kp-0001TK-Hb; Wed, 15 Apr 2026 17:47:31 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1282720.1565225; Wed, 15 Apr 2026 17:47: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 1wD4Kp-0001TD-EP; Wed, 15 Apr 2026 17:47:31 +0000
Received: by outflank-mailman (input) for mailman id 1282720;
 Wed, 15 Apr 2026 17:47:30 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <bernhard.kaindl@citrix.com>) id 1wD4Ko-0001Ns-4b
 for xen-devel@lists.xenproject.org; Wed, 15 Apr 2026 17:47:30 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wD4Kn-00DXB0-Hb
 for xen-devel@lists.xenproject.org; Wed, 15 Apr 2026 19:47:29 +0200
Received: from [10.42.69.6] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <bernhard.kaindl@citrix.com>)
 id 69dfcf20-e002-0a2a0a5209dd-0a2a4506aab4-18
 for <xen-devel@lists.xenproject.org>; Wed, 15 Apr 2026 19:47:29 +0200
Received: from [160.101.131.9] (helo=na1pdmzitismtp02.tibco.com)
 by tlsNG-16d1c6.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.0)
 (envelope-from <bernhard.kaindl@citrix.com>)
 id 69dfcf30-0df0-0a2a45060019-a0658309e5ce-3
 for <xen-devel@lists.xenproject.org>; Wed, 15 Apr 2026 19:47:29 +0200
Received: from debian.eng.citrite.net (unknown [10.113.40.46])
 by na1pdmzitismtp02.tibco.com (Postfix) with ESMTP id 80CA481C0DDB;
 Wed, 15 Apr 2026 13:46:34 -0400 (EDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-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: Bernhard Kaindl <bernhard.kaindl@citrix.com>
To: xen-devel@lists.xenproject.org
Cc: Bernhard Kaindl <bernhard.kaindl@citrix.com>,
	Anthony PERARD <anthony.perard@vates.tech>
Subject: [PATCH 1/4] tools/tests/alloc: Unit and Integration Test Framework for page_alloc.c
Date: Wed, 15 Apr 2026 18:34:56 +0100
Message-Id: <bbd242400a624465bebae0fa2b7591acd37c7236.1776273656.git.bernhard.kaindl@citrix.com>
X-Mailer: git-send-email 2.39.5
In-Reply-To: <cover.1776273656.git.bernhard.kaindl@citrix.com>
References: <cover.1776273656.git.bernhard.kaindl@citrix.com>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit
X-purgate-ID: tlsNG-16d1c6/1776275249-5E530078-FE305C64/0/0
X-purgate-type: clean
X-purgate-size: 91660

Add a test framefork for unit and integration test suites testing
the Xen page allocator module xen/common/page_alloc.c in isolation.

It enables test suites to verify the behaviour of the page allocator
in situations that are easier to create and validate in isolation,
with full control over a synthetic Xen heap state and visibility
into the allocator and domain state.

Signed-off-by: Bernhard Kaindl <bernhard.kaindl@citrix.com>
---
 tools/tests/Makefile                   |   1 +
 tools/tests/alloc/.gitignore           |   6 +
 tools/tests/alloc/Makefile             | 141 ++++++++
 tools/tests/alloc/README.rst           |  31 ++
 tools/tests/alloc/check-asserts.h      | 347 ++++++++++++++++++
 tools/tests/alloc/harness.h            |  69 ++++
 tools/tests/alloc/hypervisor-macros.h  | 101 ++++++
 tools/tests/alloc/libtest-page_alloc.h | 356 +++++++++++++++++++
 tools/tests/alloc/mock-page_list.h     | 307 ++++++++++++++++
 tools/tests/alloc/page_alloc-wrapper.h | 465 +++++++++++++++++++++++++
 tools/tests/alloc/page_alloc_shim.h    | 433 +++++++++++++++++++++++
 11 files changed, 2257 insertions(+)
 create mode 100644 tools/tests/alloc/.gitignore
 create mode 100644 tools/tests/alloc/Makefile
 create mode 100644 tools/tests/alloc/README.rst
 create mode 100644 tools/tests/alloc/check-asserts.h
 create mode 100644 tools/tests/alloc/harness.h
 create mode 100644 tools/tests/alloc/hypervisor-macros.h
 create mode 100644 tools/tests/alloc/libtest-page_alloc.h
 create mode 100644 tools/tests/alloc/mock-page_list.h
 create mode 100644 tools/tests/alloc/page_alloc-wrapper.h
 create mode 100644 tools/tests/alloc/page_alloc_shim.h

diff --git a/tools/tests/Makefile b/tools/tests/Makefile
index 6477a4386dda..ca3de4c7b54a 100644
--- a/tools/tests/Makefile
+++ b/tools/tests/Makefile
@@ -2,6 +2,7 @@ XEN_ROOT = $(CURDIR)/../..
 include $(XEN_ROOT)/tools/Rules.mk
 
 SUBDIRS-y :=
+SUBDIRS-y += alloc
 SUBDIRS-y += domid
 SUBDIRS-y += mem-claim
 SUBDIRS-y += paging-mempool
diff --git a/tools/tests/alloc/.gitignore b/tools/tests/alloc/.gitignore
new file mode 100644
index 000000000000..9f77c5879772
--- /dev/null
+++ b/tools/tests/alloc/.gitignore
@@ -0,0 +1,6 @@
+/test-claims_basic
+/test-claims_numa_install
+/test-claims_numa_redeem
+/test-online_page
+/test-offlining-claims
+/test-reserve_offline_page
diff --git a/tools/tests/alloc/Makefile b/tools/tests/alloc/Makefile
new file mode 100644
index 000000000000..f5724aa3f699
--- /dev/null
+++ b/tools/tests/alloc/Makefile
@@ -0,0 +1,141 @@
+# SPDX-License-Identifier: GPL-2.0-only
+# Makefile for tools/tests/alloc
+
+XEN_ROOT := $(abspath $(CURDIR)/../../..)
+include $(XEN_ROOT)/tools/Rules.mk
+RELDIR := $(subst $(XEN_ROOT)/,,$(CURDIR))
+
+TEST_SOURCES := $(notdir $(wildcard test-*.c))
+TARGETS := $(TEST_SOURCES:.c=)
+
+.PHONY: all
+all: $(TARGETS)
+
+define RUN_TESTS
+	@echo "Build configuration:"
+	@echo "CC=$(CC)"
+	@echo "CFLAGS='$(CFLAGS)'"
+	@for test in $? ; do \
+		echo;echo "$(RELDIR): RUN_TESTS: $$test...";echo; \
+		./$$test ; EXIT_CODE=$$? ; \
+		if [ $$EXIT_CODE -ne 0 ]; then \
+			echo "Test $$test failed with exit code $$EXIT_CODE"; \
+			exit 1; \
+		fi; \
+	done
+	@echo
+	@echo "Tests executed successfully:"
+	@for test in $? ; do \
+		echo "  - $$test"; \
+	done
+endef
+
+# Run the tests if possible, otherwise print a warning and skip them.
+.PHONY: run
+# Determine if the tests can be run on the build host. If CC and HOSTCC
+# are the same, we can run the tests directly. If they differ, we check
+# if binfmt-support and qemu-binfmt are available to run the tests under
+# using binfmt-misc using qemu-user-static.
+ifeq ($(CC),$(HOSTCC))
+    TESTS_RUNNABLE=yes
+else
+    BINFMT_SUPP := $(if $(wildcard /etc/init.d/binfmt-support),1,0)
+    QEMU_BINFMT := $(if $(wildcard /usr/libexec/qemu-binfmt),1,0)
+    ifeq ($(BINFMT_SUPP)$(QEMU_BINFMT),11)
+        # Running static binaries doesn't need extra setup besides qemu-binfmt
+        CFLAGS += -static
+        TESTS_RUNNABLE=yes
+    else
+        TESTS_RUNNABLE=no
+    endif
+endif
+
+run: $(TARGETS)
+ifeq ($(TESTS_RUNNABLE),yes)
+	$(RUN_TESTS)
+else
+	$(warning HOSTCC != CC, and qemu-binfmt not detected, skipping alloc tests)
+endif
+
+# Run the tests  binfmt-misc set up
+BINFMT_SUPP := $(if $(wildcard /etc/init.d/binfmt-support),1,0)
+QEMU_BINFMT := $(if $(wildcard /usr/libexec/qemu-binfmt),1,0)
+.PHONY: run-tests
+run-tests: $(TARGETS)
+ifeq ($(CC),$(HOSTCC))
+	$(RUN_TESTS)
+else ifeq ($(BINFMT_SUPP)$(QEMU_BINFMT),11)
+	$(RUN_TESTS)
+else
+	$(warning Note: binfmt-support or qemu-user not found, skipping run-tests)
+endif
+
+#
+# Build and run the tests for multiple architectures,
+# skipping if the appropriate cross-compiler is not found.
+# The default XEN_TARGET_ARCH is always built and tested as well.
+# This is gcc-specific, but can be adapted for other toolchains.
+#
+ARCHS := arm64-aarch64-linux-gnu arm32-arm-linux-gnueabihf
+ARCHS += x86_32-i686-linux-gnu x86_64-x86_64-linux-gnu
+ARCHS += ppc64-powerpc64le-linux-gnu riscv64-riscv64-linux-gnu
+.PHONY: run-archs
+run-archs: $(TARGETS)
+ifneq ($(CC),gcc)
+	$(warning run-archs target is only supported with CC=gcc for now, skipping)
+else
+	@set -e;PASSES=;SKIPPED_ARCHS=; \
+	MAKEFLAGS="$$MAKEFLAGS --no-print-directory"; \
+
+	for t in $(ARCHS); do \
+		A=$${t%%-*}; C=$${t#*-}; \
+	    [ $$A != $(XEN_TARGET_ARCH) ] || continue; \
+		if ! type "$${C}-gcc" >/dev/null 2>&1; then \
+	        echo " $${C}-gcc not found, skipping $${A}"; \
+			SKIPPED_ARCHS="$${SKIPPED_ARCHS} $${A}"; continue; \
+	    fi; \
+		if [ $${A} = $(XEN_TARGET_ARCH) ]; then C=$(CROSS_COMPILE); fi; \
+		make XEN_TARGET_ARCH="$${A}" CROSS_COMPILE=$$C- clean run-tests; \
+		PASSES="$${PASSES} $${A}"; \
+	done;\
+	echo "$@ successful for:$${PASSES} $(XEN_TARGET_ARCH)";\
+	[ -z "$${SKIPPED_ARCHS}" ] || echo "Skipped architectures:$${SKIPPED_ARCHS}"
+endif
+
+.PHONY: clean
+.NOTPARALLEL: clean
+clean:
+	$(RM) -- *.o $(TARGETS) $(DEPS_RM)
+
+.PHONY: distclean
+distclean: clean
+	$(RM) -- *~
+
+.PHONY: install
+install: all
+	$(INSTALL_DIR) $(DESTDIR)$(LIBEXEC)/tests
+	$(INSTALL_PROG) $(TARGETS) $(DESTDIR)$(LIBEXEC)/tests
+
+.PHONY: uninstall
+uninstall:
+	$(RM) -- $(patsubst %,$(DESTDIR)$(LIBEXEC)/tests/%,$(TARGETS))
+
+# CFLAGS for building the tests
+XEN_INCLUDE_ARCH := $(subst x86_64,x86,$(XEN_COMPILE_ARCH))
+CFLAGS += -D__XEN_TOOLS__
+CFLAGS += $(APPEND_CFLAGS)
+CFLAGS += -I$(XEN_ROOT)/xen/include
+CFLAGS += -I$(XEN_ROOT)/xen/arch/$(XEN_INCLUDE_ARCH)/include
+CFLAGS += $(CFLAGS_xeninclude)
+
+# Enable sanitizers to catch memory errors and undefined behavior in the code
+# for x86_64. Other architectures do not support -fstatic with it.
+ifeq ($(XEN_TARGET_ARCH),x86_64)
+CFLAGS += -fsanitize=address -fsanitize=undefined -fno-common
+endif
+
+# Build rules for the tests
+$(TARGETS): %: %.o $(LIB_OBJ)
+	$(CC) -o $@ $^ $(LDFLAGS) $(CPPFLAGS) $(CFLAGS) $(APPEND_CFLAGS)
+
+-include $(DEPS_INCLUDE)
diff --git a/tools/tests/alloc/README.rst b/tools/tests/alloc/README.rst
new file mode 100644
index 000000000000..3ed362598bb3
--- /dev/null
+++ b/tools/tests/alloc/README.rst
@@ -0,0 +1,31 @@
+.. SPDX-License-Identifier: CC-BY-4.0
+
+Unit and Integration test suite for the page allocator
+======================================================
+
+The tests in ``tools/tests/alloc`` contain unit tests for the
+Xen page allocator in ``xen/common/page_alloc.c`` and are
+built as standalone executables.
+
+They are not intended to be run in a Xen environment, but rather to test
+the allocator logic in isolation and can be run on any compatible host
+system at build time and do not use any installed libraries or require
+any special setup or dependencies beyond the standard C library.
+
+The tests use a shim as a substitute for Xen hypervisor code that would
+conflict with running the page allocator as a host executable, and they
+use helper functions to initialize and assert the status of the data
+structures of the allocator such as the page lists and zones.
+
+The tests can be run with the ``run`` target of the ``Makefile``, which
+will execute all the test executables and report their results unless
+you override the TARGETS variable to run a specific test:
+
+.. code:: shell
+
+    make -C tools/tests/alloc clean all run \
+            TARGETS=test-reserve_offline_page-uma
+
+To add a new test, simply create a new C file with a name starting with
+``test-``, implement the test logic, and it will be automatically included
+in the build and run targets by default.
diff --git a/tools/tests/alloc/check-asserts.h b/tools/tests/alloc/check-asserts.h
new file mode 100644
index 000000000000..04a254c0999d
--- /dev/null
+++ b/tools/tests/alloc/check-asserts.h
@@ -0,0 +1,347 @@
+/* SPDX-License-Identifier: GPL-2.0-only */
+/*
+ * Header-only library for check assertions in unit tests.
+ *
+ * Copyright (C) 2026 Cloud Software Group
+ */
+#ifndef _CHECK_ASSERTS_H_
+#define _CHECK_ASSERTS_H_
+
+#include <assert.h>
+#include <execinfo.h>
+#include <stdarg.h>
+#include <stdbool.h>
+#include <stdio.h>
+#include <stdlib.h>
+#include <sys/utsname.h>
+
+#ifndef CONFIG_NUMA
+#define CONFIG_NUMA 0
+#endif
+#define __used __attribute__((__used__))
+
+/** ## Global state for the test framework and assertions */
+
+/** Set when assertions are expected to fail */
+static bool testcase_assert_expected_to_fail = false;
+/** Set when verbose assertions are enabled */
+static bool testcase_assert_verbose_assertions = true;
+/**
+ * The current function for verbose assertions, used to avoid repeating the
+ * function name in the logs for multiple assertions within the same function.
+ */
+static const char *testcase_assert_current_func = NULL;
+/** The current indentation level for verbose assertions */
+static int testcase_assert_verbose_indent_level = 0;
+/** Failed checks since the last call call to EXPECTED_TO_FAIL_BEGIN() */
+static int testcase_assert_expected_failures = 0;
+/** Failed checks within EXPECTED_TO_FAIL_BEGIN()/END() in this test case */
+static int testcase_assert_expected_failures_total = 0;
+/** Successful assertions in this test case */
+static int testcase_assert_successful_assert_total = 0;
+#define assert_failed_str "Assertion failed: "
+
+/** ## Assertion macros and helpers */
+
+/** Check a condition and log the result with context. */
+#define CHECK(condition, fmt, ...)                                    \
+        testcase_assert(condition, __FILE__, __LINE__, __func__, fmt, \
+                        ##__VA_ARGS__)
+
+/** If the condition is false, treat it as a test assertion failure */
+#define ASSERT(x) \
+        testcase_assert(x, __FILE__, __LINE__, __func__, assert_failed_str #x)
+
+/** If the condition is true, treat it as a bug, used in Xen hypervisor code */
+#define BUG_ON(x) \
+        testcase_assert(!(x), __FILE__, __LINE__, __func__, "BUG_ON: " #x)
+
+/** Assert that the code is unreachable */
+#define ASSERT_UNREACHABLE() assert(false)
+
+/** ## Helpers for expected assertion failures */
+
+/** Marks the beginning of a block where assertions are expected to fail */
+#define EXPECTED_TO_FAIL_BEGIN() (testcase_assert_expected_to_fail = true)
+/** Marks the end of a block where assertions are expected to fail */
+#define EXPECTED_TO_FAIL_END(c) testcase_assert_check_expected_failures(c)
+
+/** Checks the number of expected failures against the actual count */
+static void __used testcase_assert_check_expected_failures(int expected)
+{
+    if ( testcase_assert_expected_failures != expected )
+    {
+        fprintf(stderr, "Test assertion expected %d failures, but got %d\n",
+                expected, testcase_assert_expected_failures);
+        abort();
+    }
+    testcase_assert_expected_to_fail = false;
+    testcase_assert_expected_failures = 0;
+    testcase_assert_expected_failures_total += expected;
+}
+
+/** ## Test case management and reporting */
+
+/** Function pointer used for initializing a test case */
+static void (*testcase_init_func)(const char *, int);
+
+/** Set up the function pointer for initializing a test case */
+static void __used setup_testcase_init_func(void (*init_fn)(const char *, int))
+{
+    testcase_init_func = init_fn;
+}
+
+/**
+ * Assert a condition within a test case
+ *
+ * This function is the core of the assertion mechanism for test cases.
+ * It checks a given condition and handles both expected and unexpected
+ * assertion failures.
+ *
+ * If the assertion is expected to fail, it logs the failure and increments
+ * the expected failure count.  If the assertion is not expected to fail but
+ * does, it logs the failure and aborts the test.  If the assertion passes,
+ * it increments the successful assertion count and optionally logs the
+ * successful assertion if verbose assertions are enabled.
+ *
+ * Args:
+ *  condition (bool):    The condition to check.  If false, the assertion fails.
+ *  file (const char *): The file where the assertion is located, for logging.
+ *  line (int):          The source line of the assertion, for logging.
+ *  func (const char *): The function name where the assertion is located.
+ *  fmt (const char *):  A printf format string with context for the assertion.
+ *  ...:                 Additional arguments for the format string.
+ */
+static void testcase_assert(bool condition, const char *file, int line,
+                            const char *func, const char *fmt, ...)
+{
+    va_list ap;
+    const char *relpath = file;
+
+    while ( (file = strstr(relpath, "../")) )
+        relpath += 3;
+
+    va_start(ap, fmt);
+    if ( testcase_assert_expected_to_fail )
+    {
+        fprintf(stderr, "\n- Test assertion %s at %s:%d:\n  ",
+                condition ? "unexpectedly passed" : "expectedly failed",
+                relpath, line);
+        vfprintf(stderr, fmt, ap);
+        va_end(ap);
+        fprintf(stderr, "\n");
+
+        if ( condition )
+            abort(); /* Unexpected pass, treat as test failure */
+        else
+            testcase_assert_expected_failures++; /* update for the report */
+        return;
+    }
+    if ( !condition )
+    {
+        fprintf(stderr, "Test assertion failed at %s:%d: ", relpath, line);
+        vfprintf(stderr, fmt, ap);
+        fprintf(stderr, "\n");
+        abort();
+    }
+    testcase_assert_successful_assert_total++;
+    if ( testcase_assert_verbose_assertions )
+    {
+        /* As the assertion didn't actually fail, remove the prefix */
+        if ( strncmp(fmt, assert_failed_str, strlen(assert_failed_str)) == 0 )
+            fmt += strlen(assert_failed_str);
+
+        if ( strcmp(fmt, "ret == 0") == 0 )
+            return;
+
+        for ( int i = 0; i < testcase_assert_verbose_indent_level; i++ )
+            printf("  ");
+
+        printf("%s:%d: ", relpath, line);
+
+        /*
+         * Skip logging the passed function if it was already logged for the
+         * current function, or the source or the function starts with test.
+         */
+        if ( (testcase_assert_current_func == NULL ||
+              strcmp(testcase_assert_current_func, func)) &&
+             (strncmp(relpath, "test-", strlen("test-")) &&
+              strncmp(func, "test_", strlen("test_"))) )
+            printf("%s(): ", func);
+
+        if ( strncmp(fmt, "BUG_ON:", strlen("BUG_ON:")) )
+            printf("ASSERT(");
+
+        vprintf(fmt, ap);
+        va_end(ap);
+
+        if ( strncmp(fmt, "BUG_ON:", strlen("BUG_ON:")) )
+            printf(")");
+
+        printf("\n");
+    }
+}
+
+/** Structure to represent a test case and its results for reporting */
+struct testcase {
+    /** Human-readable name of the test case */
+    const char *name;
+    /** Test ID */
+    const char *tid;
+    /** Integer argument for the test case */
+    int         intarg;
+    /** Function pointer to the test case function */
+    void        (*func)(int);
+    /** Number of assertions passed */
+    int         passed_asserts;
+    /** Number of expected failures occurred */
+    int         expected_failures;
+} testcases[40];
+/** Pointer to the current test case being executed, for tracking results */
+struct testcase *current_testcase = testcases;
+
+static void print_testcase_report(struct testcase *tc)
+{
+    printf("- %-5s %-34s %2d: %3d assertions passed", tc->tid, tc->name,
+           tc->intarg, tc->passed_asserts);
+    if ( tc->expected_failures )
+        printf(" (%2d XFAIL)", tc->expected_failures);
+    printf("\n");
+}
+
+/**
+ * Execute the given test function and record the number of assertions
+ * passed and expected failures for the test report.  The test function
+ * is expected to use the CHECK, ASSERT, and BUG_ON macros for assertions,
+ * and can use EXPECTED_TO_FAIL_BEGIN and EXPECTED_TO_FAIL_END to mark
+ * assertions that are expected to fail for testing negative scenarios.
+ *
+ * The test function is also passed an integer argument that can be used
+ * to specify different scenarios or parameters for the test.
+ *
+ * The test report will include the name of the test case, the integer
+ * argument, the number of assertions passed, and the number of expected
+ * failures.  The test report is printed after the test function completes,
+ * and a summary report is printed after all test cases have been executed.
+ *
+ * The test function can also use the verbose assertion mode to print
+ * additional context for each assertion, which can be helpful for debugging
+ * test failures and understanding the test flow.
+ *
+ * Args:
+ *   case_func (void (*)(int)):
+ *                  The test function to execute, which takes an int argument.
+ *   int_arg (int): An argument to pass to the test function, which can be used
+ *                  to specify different scenarios or parameters for the test.
+ *   tid (const char *):
+ *                  A test id; string identifier for the test case.
+ *   case_name (const char *):
+ *                  A human-readable name for the test case, used for reporting.
+ */
+static void run_testcase(void (*case_func)(int), int int_arg, const char *tid,
+                         const char *case_name)
+{
+    printf("\nTest Case: %s...\n", case_name);
+    current_testcase->name = case_name;
+    current_testcase->func = case_func;
+    current_testcase->intarg = int_arg;
+    current_testcase->tid = tid;
+    current_testcase->passed_asserts = 0;
+    current_testcase->expected_failures = 0;
+
+    /*
+     * Call the testcase initialization function if it is set, which can be
+     * used to reset global state or set up specific scenarios for the test.
+     *
+     * For example, the page allocator tests use this to reset the state of the
+     * synthetic page structures and the heap before each test case.
+     */
+    if ( testcase_init_func && int_arg >= 0 )
+        testcase_init_func(case_name, int_arg);
+
+    case_func(int_arg);
+
+    current_testcase->passed_asserts = testcase_assert_successful_assert_total;
+    current_testcase->expected_failures =
+        testcase_assert_expected_failures_total;
+
+    testcase_assert_successful_assert_total = 0;
+    testcase_assert_expected_failures_total = 0;
+
+    printf("\nResults:\n");
+    print_testcase_report(current_testcase);
+    current_testcase++;
+}
+#define RUN_TESTCASE(tid, func, arg) run_testcase(func, arg, #tid, #func)
+
+/**
+ * Provide a report of all test cases executed and their results,
+ * including the total number of assertions passed and expected failures.
+ */
+static int testcase_print_summary(const char *argv0)
+{
+    struct utsname uts;
+    int total_asserts = 0, expected_failures = 0;
+
+    fprintf(stderr, "\nTest Report:\n");
+
+    current_testcase = testcases;
+    for ( size_t i = 0; i < ARRAY_SIZE(testcases) && current_testcase->func;
+          i++ )
+    {
+        print_testcase_report(current_testcase);
+        total_asserts += current_testcase->passed_asserts;
+        expected_failures += current_testcase->expected_failures;
+        current_testcase++;
+    }
+    current_testcase->tid = "Total";
+    current_testcase->name = "";
+    current_testcase->passed_asserts = total_asserts;
+    current_testcase->expected_failures = expected_failures;
+    current_testcase->intarg = current_testcase - testcases;
+    print_testcase_report(current_testcase);
+
+    uname(&uts);
+    printf("\nTest suite %s for %s completed.\n", argv0, uts.machine);
+    return 0;
+}
+
+static const char *parse_args(int argc, char *argv[], const char *topic)
+{
+    const char *program_name = argv[0];
+    struct utsname uts;
+
+    if ( argc != 1 )
+    {
+        fprintf(stderr, "Usage: %s\n", argv[0]);
+        return NULL;
+    }
+    program_name = strrchr(program_name, '/');
+    if ( program_name )
+        program_name++;
+    else
+        program_name = argv[0];
+
+    uname(&uts);
+    printf("Suite : %s\n", program_name);
+    printf("Topic : %s\n", topic);
+    printf("Config: CONFIG_NUMA %s\n",
+           config_enabled(CONFIG_NUMA) ? "enabled" : "disabled");
+#ifndef __clang__
+    printf("Target: gcc %s/%s\n", __VERSION__, uts.machine);
+#else
+    printf("Target: %s/%s\n", __VERSION__, uts.machine);
+#endif
+    return program_name;
+}
+
+#endif /* _CHECK_ASSERTS_H_ */
+
+/*
+ * Local variables:
+ * mode: C
+ * c-file-style: "BSD"
+ * c-basic-offset: 4
+ * indent-tabs-mode: nil
+ * End:
+ */
diff --git a/tools/tests/alloc/harness.h b/tools/tests/alloc/harness.h
new file mode 100644
index 000000000000..946c796c5475
--- /dev/null
+++ b/tools/tests/alloc/harness.h
@@ -0,0 +1,69 @@
+/* SPDX-License-Identifier: GPL-2.0-only */
+/*
+ * Common test harness for page allocation unit tests.
+ *
+ * Copyright (C) 2026 Cloud Software Group
+ */
+
+#ifndef _TEST_HARNESS_
+#define _TEST_HARNESS_
+
+#include <assert.h>
+#include <errno.h>
+#include <limits.h>
+#include <stdint.h>
+#include <stdio.h>
+
+/* Enable debug mode to enable additional checks */
+#define CONFIG_DEBUG
+
+/* Define common macros which are compatible with the test context */
+#include "hypervisor-macros.h"
+
+/* Provide the common check_asserts library for test assertions */
+#include "check-asserts.h"
+
+/* Common Xen types for the test context */
+typedef uint8_t u8;
+typedef uint64_t paddr_t;
+typedef unsigned long cpumask_t;
+typedef long long s_time_t;
+typedef bool spinlock_t;
+
+/*
+ * The original implementation of reserve_offlined_page() causes the GCC
+ * and clang AddressSanitizer (ASAN) to report stack-buffer-overflow
+ * when the test_merge_tail_pair test case is run with ASAN enabled,
+ * when test verifies the state of the free lists in the heap.
+ *
+ * It finds several list pointer errors in the heap state and one of the
+ * appears to trigger ASAN's stack-buffer-overflow detection on x86_64.
+ *
+ * To temporarily work around this issue, we detect if ASAN is enabled
+ * and in order to be able skip the ASSERT_LIST_EQUAL verification step
+ * in the test case that triggers the ASAN error, while still allowing
+ * the rest of the test case to run and verify all execution with ASAN.
+ */
+/* clang-format off */
+#if defined(__has_feature)
+/* Clang uses __has_feature to detect AddressSanitizer */
+# if __has_feature(address_sanitizer)
+#  define ASAN_ENABLED 1
+# endif
+/* GCC uses __SANITIZE_ADDRESS__ to detect AddressSanitizer */
+#elif defined(__SANITIZE_ADDRESS__)
+# define ASAN_ENABLED 1
+#else
+# define ASAN_ENABLED 0
+#endif
+/* clang-format on */
+#endif /* _TEST_HARNESS_H_ */
+
+/*
+ * Local variables:
+ * mode: C
+ * c-file-style: "BSD"
+ * c-basic-offset: 4
+ * indent-tabs-mode: nil
+ * End:
+ */
diff --git a/tools/tests/alloc/hypervisor-macros.h b/tools/tests/alloc/hypervisor-macros.h
new file mode 100644
index 000000000000..0d35bd9a806c
--- /dev/null
+++ b/tools/tests/alloc/hypervisor-macros.h
@@ -0,0 +1,101 @@
+/* SPDX-License-Identifier: GPL-2.0-only */
+/*
+ * Common macros and definitions for building host-side unit tests
+ * the Xen hypervisor.
+ *
+ * Copyright (C) 2026 Cloud Software Group
+ */
+
+#ifndef _TEST_ALLOC_XEN_MACROS_
+#define _TEST_ALLOC_XEN_MACROS_
+
+/*
+ * In Xen, STATIC_IF(x) and config_enabled(x) are defined in kconfig.h
+ * which we cannot include, so we need to define the necessary macros.
+ */
+#define STATIC_IF(option)        static_if(option)
+#define static_if(value)         _static_if(__ARG_PLACEHOLDER_##value)
+#define _static_if(arg1_or_junk) ___config_enabled(arg1_or_junk static, )
+#define __ARG_PLACEHOLDER_1      0,
+#define config_enabled(cfg)      _config_enabled(cfg)
+#define _config_enabled(value)   __config_enabled(__ARG_PLACEHOLDER_##value)
+
+#define __config_enabled(arg1_or_junk) ___config_enabled(arg1_or_junk 1, 0)
+
+#define ___config_enabled(__ignored, val, ...) val
+
+/*
+ * We include common-macros.h to reuse the Xen-tools macros, which are
+ * not necessarily the same as the Xen hypervisor macros, but are close
+ * enough for the test context.
+ */
+#include <xen-tools/common-macros.h>
+
+/*
+ * Define the header guards of the Xen headers that the Xen hypervisor
+ * variants of the definitions in common-macros.h and bitops.h to prevent
+ * conflicting definitions from those headers that prevent clean compilation.
+ */
+#define __XEN_CONST_H__
+#define __MACROS_H__
+
+/*
+ * We also define the Xen hypervisor macros that are used by page_alloc.c
+ * but not defined by common-macros.h, but needed to build hypervisor code
+ * in the test context, such as IS_ALIGNED() and the ffsl/flsl macros.
+ */
+#define IS_ALIGNED(x, a) (!((x) & ((a) - 1)))
+
+/*
+ * Inclde the Xen-tools bitops.h to reuse the bitops from the tools side.
+ * They are not necessarily the same as the Xen hypervisor bitops, but are
+ * close enough for the test context.
+ */
+#include <xen-tools/bitops.h>
+/*
+ * Afer including the Xen-tools bitops.h, we need to redefine the ffsl and flsl
+ * macros to match the behavior of the Xen hypervisor's ffsl and flsl, which
+ * return unsigned int and are relevant for signed/unsigned conversion checking
+ * and type hints in the test context.
+ * And we need to undefine conflicting macros defined by xen-tools headers.
+ */
+#undef BITS_PER_LONG
+#undef __LITTLE_ENDIAN
+#undef __BIG_ENDIAN
+/* Xen ffsl returns 1-based position of lowest set bit as unsigned int */
+#undef ffsl /* tools/include/xen-tools/bitops.h returns signed int */
+#define ffsl(x) ((unsigned int)__builtin_ffsl(x))
+/* Xen flsl returns 1-based position of highest set bit as unsigned int */
+#define flsl(x) ((unsigned int)((x) ? BITS_PER_LONG - __builtin_clzl(x) : 0))
+
+/* Common assertion and logging macros */
+#define BUG()                     assert(false)
+#define domain_crash(d)           ((void)(d))
+#define PRI_mfn                   "lu"
+#define PRI_stime                 "lld"
+#define printk                    printf
+#define dprintk(level, fmt, ...)  printk(fmt, ##__VA_ARGS__)
+#define gdprintk(level, fmt, ...) printk(fmt, ##__VA_ARGS__)
+#define gprintk(level, fmt, ...)  printk(fmt, ##__VA_ARGS__)
+#define panic(fmt, ...)                          \
+        do                                       \
+        {                                        \
+            fprintf(stderr, fmt, ##__VA_ARGS__); \
+            abort();                             \
+        } while ( 0 )
+
+/* Support including xen/sections.h and other function attributes */
+#define __initdata
+#define __init        __used
+#define __initcall(f) static int __used (*f##_ptr)(void) = (f)
+
+#endif /* _TEST_ALLOC_XEN_MACROS_ */
+
+/*
+ * Local variables:
+ * mode: C
+ * c-file-style: "BSD"
+ * c-basic-offset: 4
+ * indent-tabs-mode: nil
+ * End:
+ */
diff --git a/tools/tests/alloc/libtest-page_alloc.h b/tools/tests/alloc/libtest-page_alloc.h
new file mode 100644
index 000000000000..5654152cd48a
--- /dev/null
+++ b/tools/tests/alloc/libtest-page_alloc.h
@@ -0,0 +1,356 @@
+/* SPDX-License-Identifier: GPL-2.0-only */
+/*
+ * Test framework for testing the memory-allocation functionality
+ * of xen/common/page_alloc.c, consisting of:
+ *
+ * 1. A header-only shim for page_alloc.c to provide the necessary
+ *    definitions and helpers to allow the test framework to include
+ *    the real page_alloc.c directly into its translation unit.
+ *
+ * 2. A set of mocks for the Xen types and functions used by page_alloc.c,
+ *    sufficient to support the test scenarios in tools/tests/alloc.
+ *
+ *    This includes mocks for NUMA topology, designed to allow the test
+ *    scenarios to manipulate the state of the allocator and verify its
+ *    behavior in a way that is consistent with how page_alloc.c acts when
+ *    used by the running Xen hypervisor, while being self-contained and
+ *    suitable for unit and integration testing.
+ *
+ * 3. A tiny wrapper which includes the real page_alloc.c for testing.
+ *
+ *    It disables a few of the -Wextra warnings enabled by the test
+ *    framework that are not yet fixed in page_alloc.c, such as some
+ *    sign-compare warnings and unused parameter warnings in its code.
+ *
+ * 4. A library for NUMA heap initialisation, and asserting the heap status.
+ *
+ *    This library provides functions to prepare the state of the memory
+ *    allocator for the test scenarios, such as:
+ *
+ *    a. Initializing the heap before each test case, creating NUMA nodes,
+ *       and adding pages to the heap in specific states, such as free,
+ *       allocated, marked to be offlined or already offlined.
+ *
+ *    b. Verifying the state of the heap and the page_info structures after
+ *       test actions, such as checking that pages are allocated or freed
+ *       as expected, that the state of the page_info structures is consistent
+ *       with the expected state.
+ *
+ * 5. Test case lifecycle management, such as initializing the test context
+ *    before each test case, printing the outcome of each test case,
+ *    tracking the number of assertions, logging assertions with file
+ *    and line information, and printing a summary report at the end.
+ *
+ * 6. A Makefile for discovering, compiling, running the test cases,
+ *    and reporting results which test cases were run.
+ *
+ *    The Makefile is designed to allow running individual test cases
+ *    or the entire test suite for all supported CPU architectures, if
+ *    so desired.
+ *
+ *    It is also responsible for compiling the tests with address sanitizer
+ *    (ASAN) enabled to catch memory errors in the page allocator code
+ *    and the test code, especially when manipulating the state of the
+ *    page_info structures inside the test scenarios.
+ *
+ * Copyright (C) 2026 Cloud Software Group
+ */
+#include <stdarg.h>
+#include <execinfo.h>
+#include <string.h>
+
+/* Enable -Wextra warnings as errors to catch e.g. sign-compare issues */
+#pragma GCC diagnostic error "-Wextra"
+
+/* Support for printing the status of pages for debugging */
+struct page_info;
+static void print_page_info(struct page_info *pos);
+static void print_page_count_info(unsigned long count_info);
+
+#define TEST_USES_PAGE_ALLOC_SHIM
+#include "page_alloc_shim.h"
+
+/* Include the real page_alloc.c for testing */
+
+#include "page_alloc-wrapper.h"
+
+static const unsigned int node = 0;
+static const unsigned int node0 = 0;
+static const unsigned int node1 = 1;
+static const unsigned int order0 = 0;
+static const unsigned int order1 = 1;
+static const unsigned int order2 = 2;
+static const unsigned int order3 = 3;
+
+/**
+ * Functions for setting up test scenarios with a clean allocator state,
+ * and for building synthetic buddy trees with the expected page_info state.
+ */
+
+/* Set up a bare minimum NUMA node topology. */
+static void init_numa_node_data(unsigned int start_mfn)
+{
+    (void)start_mfn;
+#ifdef CONFIG_NUMA
+    /*
+     * For simplicity, we assign each CPU to its own node, and set each
+     * node's cpumask to contain just that CPU.
+     *
+     * If needed, we could easily modify this setup to have multiple CPUs
+     * per node by adjusting the cpu_to_node assignments and node_to_cpumask
+     * values accordingly.
+     *
+     * The test scenarios in this suite do not currently require multiple
+     * CPUs per node, but we could extend them to do so if desired.
+     *
+     * This is just a default setup that the test scenarios can rely on,
+     * and they are free to modify the cpu_to_node and node_to_cpumask
+     * values as needed for their specific test cases.
+     */
+    for ( unsigned int i = 0; i < NR_CPUS; i++ )
+        cpu_to_node[i] = i;
+
+    /* Each node has a single CPU in its cpumask for simplicity */
+    for ( unsigned int i = 0; i < MAX_NUMNODES; i++ )
+        node_to_cpumask[i] = (1UL << i);
+
+    /* Initialize node data structures */
+    for ( unsigned int i = 0; i < MAX_NUMNODES; i++ )
+    {
+        /* Each node has 8 pages for testing for now */
+        node_data[i].node_start_pfn = start_mfn + (i * 8);
+        node_data[i].node_present_pages = 8UL;
+        node_data[i].node_spanned_pages = 8UL;
+    }
+
+    /*
+     * Set up memnodemap so that mfn_to_nid() correctly resolves MFN
+     * ranges to NUMA nodes: with memnode_shift=3 each memnodemap entry
+     * covers 8 MFNs (2^3), matching the 8-page-per-node layout above.
+     * Entry i maps MFNs [i*8 .. (i+1)*8 - 1] to node i.
+     */
+    memnode_shift = 3;
+    for ( unsigned int i = 0; i < 64; i++ )
+        memnodemap[i] = (nodeid_t)i;
+#endif /* CONFIG_NUMA */
+}
+
+static void init_dummy_domains(void);
+/**
+ * Reset all page_alloc translation-unit globals that these tests observe.
+ *
+ * The test program includes xen/common/page_alloc.c directly, so its
+ * file-scope variables become global variables of this translation unit.
+ *
+ * Each test must start from a clean page allocator state, with a clean heap,
+ * clean availability counters, and empty offlined and broken lists.
+ */
+static void reset_page_alloc_state(const char *caller_func, int start_mfn)
+{
+    unsigned int zone;
+    unsigned int order;
+
+    printf("\n%s: start_mfn = %u\n", caller_func, start_mfn);
+
+    /* Clear the test page table used for synthetic page_info objects. */
+    memset(frame_table, 0, sizeof(frame_table));
+
+    /* Clear the backing storage used by the imported allocator globals. */
+    memset(test_heap_storage, 0, sizeof(test_heap_storage));
+    memset(test_avail_storage, 0, sizeof(test_avail_storage));
+
+    /* Clear the shim-owned singleton objects used by helper macros. */
+    memset(&test_dummy_domain1, 0, sizeof(test_dummy_domain1));
+    memset(&test_dummy_domain2, 0, sizeof(test_dummy_domain2));
+    memset(&test_current_vcpu, 0, sizeof(test_current_vcpu));
+
+    /* Reinitialise the global page lists manipulated by the allocator. */
+    INIT_PAGE_LIST_HEAD(&page_offlined_list);
+    INIT_PAGE_LIST_HEAD(&page_broken_list);
+    INIT_PAGE_LIST_HEAD(&test_page_list);
+
+    init_numa_node_data(start_mfn); /* Only used for NUMA-enabled builds */
+
+    /* Reinitialise every per-zone, per-order free-list bucket. */
+    for ( nodeid_t node = 0; node < MAX_NUMNODES; node++ )
+    {
+        _heap[node] = &test_heap_storage[node];
+        avail[node] = test_avail_storage[node];
+        node_avail_pages[node] = 0;
+        for ( zone = 0; zone < NR_ZONES; zone++ )
+            for ( order = 0; order <= MAX_ORDER; order++ )
+                INIT_PAGE_LIST_HEAD(&heap(node, zone, order));
+    }
+
+    total_avail_pages = 0;
+    outstanding_claims = 0;
+    /*
+     * The valid MFN range for the test context is configured to cover only
+     * the test frame table, so that any attempts by page_alloc.c to prevent
+     * functions in page_alloc.c is only manipulating the intended test
+     * state and not accessing uninitialized memory or going out of bounds.
+     *
+     * Set up the initial range of valid pages for mfn_valid() used by
+     * free_heap_pages() as condition if there are successors/predecessors
+     * to merge pages with. Unless successors/predecessors are initialized
+     * to be free, it should forgoe merging and just add the provided page
+     * as-is to the heap, but to prevent it looking up uninitialised memory,
+     * we set the valid MFN range to cover the frame_table only.
+     */
+    first_valid_mfn = start_mfn;
+    max_page = sizeof(frame_table) / sizeof(frame_table[0]);
+    assert(first_valid_mfn < max_page);
+
+    init_dummy_domains();
+}
+
+static void init_dummy_domains(void)
+{
+    nodemask_t dom_node_affinity;
+    struct domain *dom;
+    int dom_id = 1;            /* Start domain IDs from 1 for clarity in logs */
+
+    /* Provide a current vcpu/domain pair for code paths that inspect it. */
+    test_current_vcpu.domain = &test_dummy_domain1;
+
+    /* Provide the dummy domains for tests that need some domains */
+    domain_list = &test_dummy_domain1;
+    test_dummy_domain1.next_in_list = &test_dummy_domain2;
+
+    nodes_clear(dom_node_affinity);
+    node_set(node0, dom_node_affinity);
+    node_set(node1, dom_node_affinity);
+
+    for_each_domain ( dom )
+    {
+        dom->node_affinity = dom_node_affinity;
+        dom->max_pages = MAX_PAGES;
+        dom->domain_id = dom_id++;
+    }
+}
+
+/* Initialize the page allocator tests */
+static void __used init_page_alloc_tests(void)
+{
+    /* Define the function above as the testcase initialization function */
+    setup_testcase_init_func(reset_page_alloc_state);
+}
+
+/**
+ * Populate a page descriptor with the minimal state needed by
+ * reserve_offlined_page().
+ *
+ * Tests build synthetic buddy trees by placing a small set of
+ * page_info objects into allocator free lists. This helper
+ * keeps that setup consistent across scenarios.
+ *
+ * Args:
+ *  page (struct page_info *): Pointer to the page_info to be initialised.
+ *  order (unsigned int):      The order to set in the page_info's order field
+ *  state (unsigned long):     The state bits to set in the page's count_info
+ *                             field, e.g. PGC_state_inuse for pages to be
+ *                             added to the heap, or PGC_state_offlined for
+ *                             pages to be added to the offlined list.
+ */
+static void init_test_page(struct page_info *page, unsigned int order,
+                           unsigned long state)
+{
+    mfn_t mfn = page_to_mfn(page);
+
+    if ( mfn < first_valid_mfn && mfn > 0 && mfn < max_page )
+        first_valid_mfn = mfn;
+
+    if ( mfn >= max_page && mfn < ARRAY_SIZE(frame_table) )
+        max_page = mfn + 1;
+
+    CHECK(mfn_valid(mfn), "mfn %lu valid: %lu-%lu", mfn, first_valid_mfn,
+          max_page);
+
+    memset(page, 0, sizeof(*page));
+
+    /* Model the page as a free buddy head of the requested order. */
+    page->v.free.order = order;
+
+    /* Default to no tracked dirty subrange and no active scrubbing. */
+    page->u.free.first_dirty = INVALID_DIRTY_IDX;
+    page->u.free.scrub_state = BUDDY_NOT_SCRUBBING;
+
+    /* Install the requested allocator state bits for this synthetic page. */
+    page->count_info = state;
+}
+
+/**
+ * Initialize the given pages as a buddy of the requested order,
+ * with the first page as the buddy head and the rest as subpages
+ * of it, and add the intialised buddy to the heap.
+ *
+ * This helper is intended to be used by test scenarios to set up
+ * the heap with buddies of the expected order and state for testing
+ * operations that manipulate the heap, such as reserve_offlined_page()
+ * and free_heap_pages(), and to ensure that the heap state is consistent
+ * with the page_info state after those operations.
+ *
+ * The buddy is added to the heap using free_heap_pages() which
+ * models the expected usage of the heap and ensures that the
+ * heap structures are updated correctly according to the logic
+ * of the allocator, which may change over time.
+ *
+ * For example, if the logic for merging buddies or tracking claims changes,
+ * using free_heap_pages() ensures that the test setup will be correct even
+ * after such changes, and that the test scenarios will be testing the real
+ * behaviour of the allocator rather than an idealised version of it.
+ *
+ * Args:
+ *  pages (struct page_info *): Pointer to the first page_info in an array.
+ *  order (unsigned int):       The order of the buddy to be created.
+ *  caller (const char *):      The name of the calling function for context.
+ * Returns:
+ *  The zone of the added buddy, which can be useful for test scenarios that
+ *  need to know the zone of the buddy for further operations or assertions.
+ */
+static zone_t __used page_list_add_buddy(struct page_info *pages,
+                                         unsigned int order, const char *caller)
+{
+    size_t i, num_pages = 1U << order;
+    bool verbose_asserts_save = testcase_assert_verbose_assertions;
+
+    /* Avoid logging spinlocks and verbose assertions during initialization */
+    testcase_assert_verbose_assertions = false;
+
+    /*
+     * Initialize the first page as the head of the buddy with the given order.
+     * All pages are initialized as in-use as this is the API expected by
+     * free_heap_pages() when it adds a buddy to the heap(). This model is
+     * consistent with the way the boot allocator and online_page() handle
+     * page initialization as well as the normal way for used pages to be freed.
+     */
+    init_test_page(&pages[0], order, PGC_state_inuse);
+
+    /* Add the subpages of the buddy as order-0 buddies to the heap */
+    for ( i = 1; i < num_pages; i++ )
+        init_test_page(&pages[i], order0, PGC_state_inuse);
+
+    /*
+     * Add the created buddy to the heap. This uses the same code path as
+     * freeing used pages and is consistent with the way the boot allocator
+     * and online_page() handle page initialization. Using free_heap_pages()
+     * has the additional benefit of ensuring that the heap structures are
+     * consistent even if the internal logic of the heap management changes.
+     *
+     * For example, implementing NUMA claims adds new per-node claims counters
+     * and logic to free_heap_pages(), so using it here ensures that the test
+     * setup will be correct even after such changes.
+     */
+    printf("%s: Adding buddy of order %u at MFN %lu to the heap.\n", caller,
+           order, page_to_mfn(&pages[0]));
+
+    testcase_assert_verbose_assertions = false;
+
+    free_heap_pages(&pages[0], order, false);
+
+    testcase_assert_verbose_assertions = verbose_asserts_save;
+    return page_to_zone(&pages[0]);
+}
+
+#define test_page_list_add_buddy(pages, order) \
+        page_list_add_buddy(pages, order, __func__)
diff --git a/tools/tests/alloc/mock-page_list.h b/tools/tests/alloc/mock-page_list.h
new file mode 100644
index 000000000000..92a0f7c53042
--- /dev/null
+++ b/tools/tests/alloc/mock-page_list.h
@@ -0,0 +1,307 @@
+/* SPDX-License-Identifier: GPL-2.0-only */
+/*
+ * Mock page list implementation for testing page allocator functions.
+ *
+ * This mock implementation provides a simplified version of the page list
+ * structures and functions used by the page allocator, allowing unit tests
+ * to be written without relying on the full Xen environment.
+ *
+ * Copyright (C) 2026 Cloud Software Group
+ */
+#ifndef _MOCK_PAGE_LIST_H_
+#define _MOCK_PAGE_LIST_H_
+
+#include <stdbool.h>
+#include <stddef.h>
+#include <stdint.h>
+
+#include "harness.h" /* Provides the generic Xen defintitions needed */
+
+/*
+ * Wrapper around xen/config.h for common Xen definitions for the test context
+ */
+#define __XEN_KCONFIG_H
+#undef __nonnull
+#undef offsetof
+#include <xen/config.h>
+/* Xen code adds cf_check as an attribute macro to functions we don't call */
+#undef cf_check
+#define cf_check __used
+
+#define MAX_ORDER 20
+
+/*
+ * The page_info structures in the frame table are manipulated directly
+ * by page_alloc.c, so they must be defined in a way that is consistent
+ * with how page_alloc.c uses them, while being self-contained and suitable
+ * for unit testing.
+ *
+ * The test scenarios can then manipulate the state of these page_info
+ * structures to set up test conditions and verify the behavior of the
+ * allocator in a way that is consistent with how it acts when used by
+ * the running hypervisor.
+ */
+struct page_info {
+    unsigned long count_info; /* PGC_state_inuse and other flags/counters */
+    union {
+        /* When the page is in use, u.inuse.type_info is used for status */
+        struct {
+            unsigned long type_info;
+        } inuse;
+        /*
+         * When the page is free, u.free is used for buddy management.
+         *
+         * Using BUILD_BUG_ON(sizeof(var->u) != sizeof(long)), page_alloc
+         * enforces that the u.free struct is exactly the size of a long.
+         * 32-bit architectures need to use bitfields to fit the fields
+         * in a long, while 64-bit architectures can use normal fields.
+         */
+        union {
+            struct {
+                unsigned int  first_dirty : MAX_ORDER + 1;
+#define INVALID_DIRTY_IDX ((1UL << (MAX_ORDER + 1)) - 1)
+                bool          need_tlbflush : 1;
+                unsigned long scrub_state : 2;
+#define BUDDY_NOT_SCRUBBING 0
+#define BUDDY_SCRUBBING     1
+#define BUDDY_SCRUB_ABORT   2
+            };
+            unsigned long val;
+        } free;
+    } u;
+    union {
+        struct {
+            unsigned int order;
+#define PFN_ORDER(pg) ((pg)->v.free.order)
+        } free;
+        unsigned long type_info;
+    } v;
+    uint32_t          tlbflush_timestamp;
+    struct domain    *owner;
+    struct page_info *list_next;
+    struct page_info *list_prev;
+};
+
+struct page_list_head {
+    struct page_info *head;
+    struct page_info *tail;
+    unsigned int      count;
+};
+#define PAGE_LIST_HEAD(name) struct page_list_head name = {NULL, NULL, 0}
+
+static inline void test_page_list_init(struct page_list_head *list)
+{
+    list->head = NULL;
+    list->tail = NULL;
+    list->count = 0;
+}
+#define INIT_PAGE_LIST_HEAD(l) test_page_list_init(l)
+
+/* Used by page_alloc.c */
+#define page_list_for_each_safe(pos, tmp, list)        \
+        for ( (pos) = page_list_first(list),           \
+              (tmp) = (pos) ? (pos)->list_next : NULL; \
+              (pos) != NULL;                           \
+              (pos) = (tmp), (tmp) = (pos) ? (pos)->list_next : NULL )
+
+typedef unsigned long mfn_t;
+static struct page_list_head test_page_list;
+
+#define page_to_list(d, pg)          (&test_page_list)
+#define page_list_add(pg, list)      test_page_list_add((pg), (list))
+#define page_list_add_tail(pg, list) test_page_list_add_tail((pg), (list))
+#define page_list_del(pg, list)      test_page_list_del((pg), (list))
+#define page_list_empty(list)        ((list)->head == NULL)
+#define page_list_first(list)        ((list)->head)
+#define page_list_last(list)         ((list)->tail)
+#define page_list_remove_head(list)  test_page_list_remove_head((list))
+
+static inline void test_page_list_add_common(struct page_info *pg,
+                                             struct page_list_head *list,
+                                             bool at_tail)
+{
+    pg->list_next = NULL;
+    pg->list_prev = NULL;
+
+    if ( list->head == NULL )
+    {
+        list->head = pg;
+        list->tail = pg;
+    }
+    else if ( at_tail )
+    {
+        pg->list_prev = list->tail;
+        list->tail->list_next = pg;
+        list->tail = pg;
+    }
+    else
+    {
+        pg->list_next = list->head;
+        list->head->list_prev = pg;
+        list->head = pg;
+    }
+
+    list->count++;
+}
+
+#define test_page_list_add(pg, list) test_page_list_add_common(pg, list, false)
+#define test_page_list_add_tail(pg, list) \
+        test_page_list_add_common(pg, list, true)
+
+static inline void test_page_list_del(struct page_info *pg,
+                                      struct page_list_head *list)
+{
+    if ( pg->list_prev )
+        pg->list_prev->list_next = pg->list_next;
+    else
+        list->head = pg->list_next;
+
+    if ( pg->list_next )
+        pg->list_next->list_prev = pg->list_prev;
+    else
+        list->tail = pg->list_prev;
+
+    pg->list_next = NULL;
+    pg->list_prev = NULL;
+
+    ASSERT(list->count > 0);
+    list->count--;
+}
+
+static inline struct page_info *
+test_page_list_remove_head(struct page_list_head *list)
+{
+    struct page_info *pg = list->head;
+
+    if ( pg )
+        test_page_list_del(pg, list);
+
+    return pg;
+}
+
+/*
+ * The frame table is the foundation for the buddy allocator algorithm
+ * implemented by page_alloc.c, and the test scenarios manipulate the
+ * state of the page_info structures in the frame table to set up test
+ * conditions and verify the behavior of the allocator.
+ *
+ * The frame table is indexed by MFN as required by the buddy allocator
+ * algorithm in page_alloc.c, so the translation functions between page_info
+ * pointers and MFNs are defined to allow page_alloc.c to manipulate the
+ * page_info structures in the test frame table using MFN-based translations.
+ */
+extern struct page_info frame_table[];
+#define page_to_mfn(pg)   ((mfn_t)((pg) - &frame_table[0]))
+#define mfn_to_page(mfn)  (&frame_table[(mfn)])
+#define mfn_valid(mfn)    (mfn >= first_valid_mfn && mfn < max_page)
+#define maddr_to_page(pa) (CHECK(false, "Not implemented"))
+
+/*
+ * Helper functions to print the state of the heap and offlined pages
+ * for reference while asserting consistency of the heap and offlined
+ * page state.
+ *
+ * These functions are called at various points in the test scenarios
+ * to validate that the internal state of the allocator is consistent
+ * with expectations.
+ */
+
+/* Architecture-specific page state defines */
+#define PG_shift(idx)         (BITS_PER_LONG - (idx))
+#define PG_mask(x, idx)       (x##UL << PG_shift(idx))
+#define PGT_count_width       PG_shift(2)
+#define PGT_count_mask        ((1UL << PGT_count_width) - 1)
+#define PGC_allocated         PG_mask(1, 1)
+#define PGC_xen_heap          PG_mask(1, 2)
+#define _PGC_need_scrub       PG_shift(4)
+#define PGC_need_scrub        PG_mask(1, 4)
+#define _PGC_broken           PG_shift(7)
+#define PGC_broken            PG_mask(1, 7)
+#define PGC_state             PG_mask(3, 9)
+#define PGC_state_inuse       PG_mask(0, 9)
+#define PGC_state_offlining   PG_mask(1, 9)
+#define PGC_state_offlined    PG_mask(2, 9)
+#define PGC_state_free        PG_mask(3, 9)
+#define page_state_is(pg, st) (((pg)->count_info & PGC_state) == PGC_state_##st)
+#define PGC_count_width       PG_shift(9)
+#define PGC_count_mask        ((1UL << PGC_count_width) - 1)
+#define _PGC_extra            PG_shift(10)
+#define PGC_extra             PG_mask(1, 10)
+
+struct PGC_flag_names {
+    unsigned long flag;
+    const char   *name;
+} PGC_flag_names[] = {
+    {.flag = PGC_need_scrub, "PGC_need_scrub"},
+    {.flag = PGC_extra,      "PGC_extra"     },
+    {.flag = PGC_broken,     "PGC_broken"    },
+    {.flag = PGC_xen_heap,   "PGC_xen_heap"  },
+};
+
+static const char *pgc_state_name(unsigned long count_info)
+{
+    switch ( count_info & PGC_state )
+    {
+    case PGC_state_inuse:
+        return "PGC_state_inuse";
+    case PGC_state_offlining:
+        return "PGC_state_offlining";
+    case PGC_state_offlined:
+        return "PGC_state_offlined";
+    case PGC_state_free:
+        return "PGC_state_free";
+    default:
+        assert("Invalid page state" && false);
+    }
+}
+
+/* Print the count_info flags of a page_info for reference */
+static void print_page_count_info(unsigned long count_info)
+{
+    printf("        flags: %s", pgc_state_name(count_info));
+    for ( size_t i = 0; i < ARRAY_SIZE(PGC_flag_names); i++ )
+        if ( count_info & PGC_flag_names[i].flag )
+            printf(" %s", PGC_flag_names[i].name);
+    puts("");
+}
+
+/* Print the state of a single page for reference */
+static void print_page_info(struct page_info *pos)
+{
+    printf("      mfn %lu: order %u, first_dirty %x\n", page_to_mfn(pos),
+           PFN_ORDER(pos), pos->u.free.first_dirty);
+    print_page_count_info(pos->count_info);
+}
+
+/* Print and assert the state of an offlined page.*/
+static void print_and_assert_offlined_page(struct page_info *pos)
+{
+    print_page_info(pos);
+    /*
+     * The order of offlined pages must always be 0 because pages are only
+     * offlined as standalone pages.  Higher-order pages on the offline lists
+     * are not supported by reserve_offlined_page() and online_page().
+     */
+    CHECK(PFN_ORDER(pos) == 0, "All offlined pages must have order 0");
+
+    /*
+     * Check the first_dirty index of offlined pages: Current code does
+     * not use first_dirty for offlined pages as it only points to the
+     * first dirty subpage within a buddy on the heap, and offlined pages
+     * are not on the heap. As it is not used, current code sets it to
+     * INVALID_DIRTY_IDX when offlining a page, so just confirm that.
+     *
+     * PS: Their scrubbing state is tracked by count_info & PG_need_scrub.
+     * In case an offlined page is onlined, the onlining code will be
+     * responsible to set first_dirty based on the scrubbing state.
+     */
+    if ( pos->u.free.first_dirty != INVALID_DIRTY_IDX )
+    {
+        printf("WARNING: offlined page at MFN %lu has first_dirty %x but "
+               "expected INVALID_DIRTY_IDX\n",
+               page_to_mfn(pos), pos->u.free.first_dirty);
+        ASSERT(pos->u.free.first_dirty == INVALID_DIRTY_IDX);
+    }
+}
+
+#endif /* _MOCK_PAGE_LIST_H_ */
\ No newline at end of file
diff --git a/tools/tests/alloc/page_alloc-wrapper.h b/tools/tests/alloc/page_alloc-wrapper.h
new file mode 100644
index 000000000000..ce1889e3aa37
--- /dev/null
+++ b/tools/tests/alloc/page_alloc-wrapper.h
@@ -0,0 +1,465 @@
+/* SPDX-License-Identifier: GPL-2.0-only */
+/*
+ * Test framework for testing Xen's memory-allocation functionality.
+ *
+ * This file wraps xen/common/page_alloc.c for the test framework.
+ *
+ * Context:
+ *
+ * The test framework includes the real page_alloc.c directly into its
+ * translation unit, along with mocks for the Xen types and functions
+ * used by page_alloc.c, and a library for NUMA heap initialisation
+ * and asserting the heap status.
+ *
+ * This file serves as the wrapper around page_alloc.c, providing the
+ * necessary definitions and helpers to allow the test framework to
+ * include the real page_alloc.c directly into its translation unit.
+ *
+ * It also provides wrapper functions for key page_alloc.c functions like
+ * mark_page_offline() and offline_page() to allow the test scenarios to
+ * log the actions being taken and the outcomes observed when these functions
+ * are called, which is important for understanding the behavior of the
+ * allocator during the test scenarios and for debugging any issues that arise.
+ *
+ * Copyright (C) 2026 Cloud Software Group
+ */
+#include <stdarg.h>
+#include <string.h>
+
+#define TEST_USES_PAGE_ALLOC_SHIM
+#include "page_alloc_shim.h"
+
+/* Include the real page_alloc.c for testing */
+
+#pragma GCC diagnostic push
+/* TODO: We should fix the remaining sign-compare warnings in page_alloc.c */
+#pragma GCC diagnostic ignored "-Wsign-compare"
+#pragma GCC diagnostic ignored "-Wunused-parameter"
+#include "../../xen/common/page_alloc.c"
+#pragma GCC diagnostic pop
+
+/* Allows the logging spinlock/unlock mocks to identify the heap lock */
+static spinlock_t *heap_lock_ptr = &heap_lock;
+
+/*
+ * Global state for the test page allocator shim and helpers.
+ *
+ * This includes the heap storage and availability counters that the test
+ * scenarios manipulate, as well as the domain list and a bug counter for
+ * the test program to track any unexpected conditions encountered in the
+ * test helpers.
+ */
+#ifndef PAGES_PER_ZONE
+#define PAGES_PER_ZONE 8
+#endif
+
+#ifndef MAX_PAGES
+#define MAX_PAGES (MAX_NUMNODES * NR_ZONES * PAGES_PER_ZONE)
+#endif
+
+/*
+ * The test frame table serves as the backing storage for the page_info
+ * structures used in the test scenarios, and the page_info structures
+ * are indexed by MFN for easy translation between page_info pointers and
+ * MFNs in the test helpers and assertions.
+ *
+ * The frame table is the foundation for the buddy allocator algorithm
+ * implemented by page_alloc.c, and the test scenarios manipulate the
+ * state of the page_info structures in the frame table to set up test
+ * conditions and verify the behavior of the allocator.
+ */
+struct page_info frame_table[MAX_PAGES];
+
+/* Provide a test pages pointer for the test scenarios */
+static struct page_info *test_pages = frame_table;
+
+/*
+ * Global state for the test page allocator shim and helpers.
+ *
+ * This includes the heap storage and availability counters that the test
+ * scenarios manipulate, as well as the domain list and a bug counter for
+ * the test program to track any unexpected conditions encountered in the
+ * test helpers.
+ */
+static heap_by_zone_and_order_t test_heap_storage[MAX_NUMNODES];
+static unsigned long test_avail_storage[MAX_NUMNODES][NR_ZONES];
+struct domain *domain_list;
+typedef size_t zone_t;
+
+static int __used test_domain_install_claim_set(struct domain *d,
+                                                unsigned int nr_claims,
+                                                memory_claim_t *claim_set)
+{
+    bool save_verbose_asserts = testcase_assert_verbose_assertions;
+    char target_str[16];
+
+    /* Avoid logging verbose logging while marking a page offline */
+    testcase_assert_verbose_assertions = false;
+
+    printf("%s => Installing claim set for domain %u:\n", __func__,
+           d->domain_id);
+    for ( unsigned int i = 0; i < nr_claims; i++ )
+    {
+        switch ( claim_set[i].target )
+        {
+        case XEN_DOMCTL_CLAIM_MEMORY_GLOBAL:
+            snprintf(target_str, sizeof(target_str), "GLOBAL");
+            break;
+        case XEN_DOMCTL_CLAIM_MEMORY_LEGACY:
+            snprintf(target_str, sizeof(target_str), "LEGACY");
+            break;
+        default:
+            snprintf(target_str, sizeof(target_str), "NODE %u",
+                     claim_set[i].target);
+            break;
+        }
+        printf("  Claim %u: pages=%lu, target=%s\n", i, claim_set[i].pages,
+               target_str);
+    }
+
+    int ret = domain_install_claim_set(d, nr_claims, claim_set);
+    printf("%s <= domain_install_claim_set() returned %d\n", __func__, ret);
+    testcase_assert_verbose_assertions = save_verbose_asserts;
+    return ret;
+}
+#define domain_install_claim_set(d, nr_claims, claim_set) \
+        test_domain_install_claim_set(d, nr_claims, claim_set)
+
+static unsigned long __used test_mark_page_offline(struct page_info *page,
+                                                   int flag,
+                                                   const char *caller_func)
+{
+    bool save_verbose_asserts = testcase_assert_verbose_assertions;
+
+    /* Avoid logging verbose logging while marking a page offline */
+    testcase_assert_verbose_assertions = false;
+
+    printf("%s => Marking page at MFN %lu as %s.\n", caller_func,
+           page_to_mfn(page), flag ? "broken" : "offlined");
+
+    mark_page_offline(page, flag);
+
+    testcase_assert_verbose_assertions = save_verbose_asserts;
+    return 0;
+}
+#define mark_page_offline(pg, flag) test_mark_page_offline(pg, flag, __func__)
+
+static const char *offline_state_name(uint32_t offline_status)
+{
+    switch ( offline_status )
+    {
+    case PG_OFFLINE_FAILED:
+        return "PG_OFFLINE_FAILED";
+    case PG_OFFLINE_PENDING:
+        return "PG_OFFLINE_PENDING";
+    case PG_OFFLINE_OFFLINED:
+        return "PG_OFFLINE_OFFLINED";
+    case PG_OFFLINE_AGAIN:
+        return "PG_OFFLINE_AGAIN";
+    default:
+        return "PG_OFFLINE_UNKNOWN_STATUS";
+    }
+}
+
+static int __used test_offline_page(mfn_t mfn, int broken, uint32_t *status)
+{
+    bool save_verbose_asserts = testcase_assert_verbose_assertions;
+
+    testcase_assert_verbose_assertions = false;
+    printf("%s => Offlining page at MFN %lu with broken=%d\n", __func__, mfn,
+           broken);
+
+    int ret = offline_page(mfn, broken, status);
+
+    printf("%s <= offline_page() returned %d, status=0x%x (%s)\n", __func__,
+           ret, *status, offline_state_name(*status));
+    testcase_assert_verbose_assertions = save_verbose_asserts;
+    return 0;
+}
+#define offline_page(mfn, broken, status) test_offline_page(mfn, broken, status)
+
+static int __used test_set_outstanding_pages(struct domain *dom,
+                                             unsigned long pages,
+                                             const char *caller_func)
+{
+    bool save_verbose_asserts = testcase_assert_verbose_assertions;
+
+    /* Avoid logging verbose logging while setting outstanding claims */
+    testcase_assert_verbose_assertions = false;
+    printf("%s => domain_set_outstanding_pages(dom=%u, pages=%lu)\n",
+           caller_func, dom->domain_id, pages);
+
+    int ret = domain_set_outstanding_pages(dom, pages);
+
+    printf("%s <= domain_set_outstanding_pages() = %d\n", caller_func, ret);
+    testcase_assert_current_func = NULL;
+    testcase_assert_verbose_assertions = save_verbose_asserts;
+    return ret;
+}
+#define domain_set_outstanding_pages(dom, pages) \
+        test_set_outstanding_pages(dom, pages, __func__)
+
+static struct page_info *__used test_alloc_domheap(struct domain *dom,
+                                                   unsigned int order,
+                                                   unsigned int memflags,
+                                                   const char *caller_func)
+{
+    bool save_verbose_asserts = testcase_assert_verbose_assertions;
+
+    /* Avoid logging verbose logging while allocating domheap pages */
+    testcase_assert_verbose_assertions = false;
+    printf("%s => alloc_domheap_pages(dom=%u, order=%u, memflags=%x)\n",
+           caller_func, dom->domain_id, order, memflags);
+    testcase_assert_current_func = "alloc_domheap_pages";
+    testcase_assert_verbose_indent_level++;
+    struct page_info *pg = alloc_domheap_pages(dom, order, memflags);
+    testcase_assert_verbose_indent_level--;
+    testcase_assert_current_func = NULL;
+
+    testcase_assert_verbose_assertions = save_verbose_asserts;
+    return pg;
+}
+#define alloc_domheap_pages(dom, order, memflags) \
+        test_alloc_domheap(dom, order, memflags, __func__)
+
+#ifdef CONFIG_SYSCTL
+/* Helper for just getting the number of free pages for ASSERTs */
+static uint64_t __used free_pages(void)
+{
+    uint64_t free_pages, total_claims;
+    bool verbose_asserts_save = testcase_assert_verbose_assertions;
+
+    /* Avoid logging spinlock actions while getting the free page count */
+    testcase_assert_verbose_assertions = false;
+    get_outstanding_claims(&free_pages, &total_claims);
+    testcase_assert_verbose_assertions = verbose_asserts_save;
+    return free_pages;
+}
+#define FREE_PAGES free_pages()
+
+/* Helper for just getting the total number of claimed pages for ASSERTs */
+static uint64_t __used total_claims(void)
+{
+    uint64_t free_pages, total_claims;
+    bool verbose_asserts_save = testcase_assert_verbose_assertions;
+
+    /* Avoid logging spinlock actions while getting the total claims */
+    testcase_assert_verbose_assertions = false;
+    get_outstanding_claims(&free_pages, &total_claims);
+    testcase_assert_verbose_assertions = verbose_asserts_save;
+    return total_claims;
+}
+#define TOTAL_CLAIMS total_claims()
+
+#define DOM_GLOBAL_CLAIMS(d)  ((d)->global_claims)
+#define DOM_NODE_CLAIMS(d, n) ((d)->claims[n])
+
+#endif /* CONFIG_SYSCTL */
+
+static void print_order_list(nodeid_t node, zone_t zone, size_t order)
+{
+    struct page_info *pos = page_list_first(&heap(node, zone, order));
+
+    if ( pos )
+        printf("    Heap for zone %zu, order %zu:\n", zone, order);
+
+    while ( pos )
+    {
+        size_t page_order = PFN_ORDER(pos);
+
+        print_page_info(pos);
+        /* Print the subpages of the buddy head */
+        for ( size_t sub_pg = 1; sub_pg < (1U << page_order); sub_pg++ )
+        {
+            struct page_info *sub_pos = pos + sub_pg;
+
+            printf("  ");
+            print_page_info(sub_pos);
+            /* Assert the subpages of a buddy to have order-0. */
+            ASSERT(PFN_ORDER(sub_pos) == 0);
+        }
+        /* Assert that the page_order matches the heap order. */
+        if ( page_order != order )
+        {
+            printf("ERROR:mfn %lu has order %zu but expected %zu "
+                   "based on heap position\n",
+                   page_to_mfn(pos), page_order, order);
+            ASSERT(page_order == order);
+        }
+        pos = pos->list_next;
+    }
+}
+
+#define CHECK_BUDDY(pages, fmt, ...) \
+        check_buddy(pages, __FILE__, __LINE__, fmt, ##__VA_ARGS__)
+
+/* Function to print the order and first_dirty of each page for debugging. */
+static void check_buddy(struct page_info *pages, const char *file, int line,
+                        const char *fmt, ...)
+{
+    size_t size = 1U << PFN_ORDER(pages);
+    bool verbose_asserts_save = testcase_assert_verbose_assertions;
+    va_list args;
+
+    if ( fmt ) /* Print the given message for context in the logs.*/
+    {
+        va_start(args, fmt);
+        printf("  %s:%d: ", file, line);
+        vprintf(fmt, args);
+        puts(":");
+        va_end(args);
+    }
+    else
+        printf("  %s:%d: %s():\n", file, line, __func__);
+
+    /* Avoid logging internal assertions while logging the free list status */
+    testcase_assert_verbose_assertions = false;
+
+    /*
+     * Inside pages, first_dirty must (if not INVALID_DIRTY_IDX) index the
+     * (first) page itself or a subpage within the page's range (<= 2^order).
+     */
+    for ( size_t i = 0; i < size; i++ )
+    {
+        unsigned long first_dirty = pages[i].u.free.first_dirty;
+        unsigned int tail_offset = (1U << PFN_ORDER(&pages[i])) - 1;
+
+        if ( first_dirty != INVALID_DIRTY_IDX && first_dirty > tail_offset )
+        {
+            printf("page at index %zu has first_dirty %lx but expected <= %u "
+                   "based on its order\n",
+                   i, first_dirty, tail_offset);
+            ASSERT(pages[i].u.free.first_dirty == tail_offset);
+        }
+    }
+
+    /* Traverse the offlined list, print and assert errors in it. */
+    struct page_info *pos = page_list_first(&page_offlined_list);
+    if ( pos )
+        puts("    Offlined list:");
+    while ( pos )
+    {
+        print_and_assert_offlined_page(pos);
+        pos = pos->list_next;
+    }
+
+    /* Traverse the broken list, print and assert errors in it. */
+    pos = page_list_first(&page_broken_list);
+    if ( pos )
+        puts("    Broken list:");
+    while ( pos )
+    {
+        print_and_assert_offlined_page(pos);
+        pos = pos->list_next;
+    }
+
+    /*
+     * Traverse the _heap[node] for each order and zone and print and assert
+     * the order and first_dirty of each page for each heap for debugging.
+     *
+     * This is to help verify that the heap structure is consistent with the
+     * page_info order fields after operations that manipulate both, such as
+     * reserve_offlined_page().
+     */
+    for ( nodeid_t node = 0; node < MAX_NUMNODES; node++ )
+        for ( size_t order = 0; order <= MAX_ORDER; order++ )
+            for ( size_t zone = 0; zone < NR_ZONES; zone++ )
+                print_order_list(node, zone, order);
+    testcase_assert_verbose_assertions = verbose_asserts_save;
+}
+
+/*
+ * Failure reporting helper that prints the provided message, the test
+ * caller context and a native backtrace before aborting.
+ */
+static void fail_with_ctx(const char *caller_file, const char *caller_func,
+                          int caller_line, const char *fmt, ...)
+{
+    va_list ap;
+
+    fprintf(stderr, "\n- %s: Assertion failed: ", caller_func);
+    va_start(ap, fmt);
+    testcase_assert(false, caller_file, caller_line, caller_func, fmt, ap);
+    vfprintf(stderr, fmt, ap);
+    va_end(ap);
+}
+
+/*
+ * Assert that a page_list matches the provided sequence of page pointers.
+ *
+ * The public helper below is a macro so call sites can provide a simple list
+ * of page pointers while the implementation works over an ordinary array.
+ */
+static void __used assert_list_eq_array(struct page_list_head *list,
+                                        struct page_info *const expected[],
+                                        unsigned int nr_expected,
+                                        const char *call_file,
+                                        const char *caller_func,
+                                        int caller_line)
+{
+    struct page_info *pos;
+    int fails_before = testcase_assert_expected_failures;
+    unsigned int index = 0;
+
+    if ( list->count != nr_expected )
+        fail_with_ctx(call_file, caller_func, caller_line,
+                      "list count mismatch: expected %u, got %u", nr_expected,
+                      list->count);
+
+    if ( nr_expected == 0 )
+    {
+        if ( page_list_first(list) != NULL )
+            fail_with_ctx(call_file, caller_func, caller_line,
+                          "expected empty list but head != NULL");
+        else
+            testcase_assert_successful_assert_total++;
+        return;
+    }
+
+    if ( page_list_first(list) != expected[0] )
+        fail_with_ctx(call_file, caller_func, caller_line,
+                      "list head mismatch: expected %p, got %p", expected[0],
+                      page_list_first(list));
+
+    for ( pos = page_list_first(list); pos; pos = pos->list_next, index++ )
+    {
+        if ( index >= nr_expected )
+            fail_with_ctx(call_file, caller_func, caller_line,
+                          "list contains more elements than expected");
+
+        if ( pos != expected[index] )
+            fail_with_ctx(call_file, caller_func, caller_line,
+                          "element %u mismatch: expected %p, got %p", index,
+                          expected[index], pos);
+
+        if ( pos->list_prev != (index ? expected[index - 1] : NULL) )
+            fail_with_ctx(call_file, caller_func, caller_line,
+                          "list_prev mismatch at index %u", index);
+
+        if ( pos->list_next !=
+             (index + 1 < nr_expected ? expected[index + 1] : NULL) )
+            fail_with_ctx(call_file, caller_func, caller_line,
+                          "list_next mismatch at index %u", index);
+    }
+
+    if ( index != nr_expected )
+        fail_with_ctx(
+            call_file, caller_func, caller_line,
+            "list element count consumed mismatch: expected %u, got %u",
+            nr_expected, index);
+
+    if ( testcase_assert_expected_failures == fails_before )
+        testcase_assert_successful_assert_total++;
+}
+
+/** Assert that a page_list matches the provided sequence of page pointers. */
+#define ASSERT_LIST_EQUAL(list, ...)                                     \
+        do                                                               \
+        {                                                                \
+            struct page_info *const expected[] = {__VA_ARGS__};          \
+            assert_list_eq_array((list), expected, ARRAY_SIZE(expected), \
+                                 __FILE__,                               \
+                                 __func__, __LINE__);                    \
+        } while ( 0 )
+/** Assert that a page_list is empty. */
+#define ASSERT_LIST_EMPTY(list) ASSERT(page_list_empty(list))
diff --git a/tools/tests/alloc/page_alloc_shim.h b/tools/tests/alloc/page_alloc_shim.h
new file mode 100644
index 000000000000..74459b6dda61
--- /dev/null
+++ b/tools/tests/alloc/page_alloc_shim.h
@@ -0,0 +1,433 @@
+/* SPDX-License-Identifier: GPL-2.0-only */
+/*
+ * Header-only shim for unit testing functions in xen/common/page_alloc.c.
+ *
+ * This header provides the necessary definitions and helpers to allow:
+ *
+ * 1) the test program to include the real page_alloc.c directly into its
+ *    translation unit, and
+ *
+ * 2) the test scenarios to manipulate the allocator state and verify its
+ *    behavior in a way that is consistent with the real page_alloc.c, while
+ *    being self-contained and suitable for unit testing.
+ *
+ * The test page allocator shim provides the necessary definitions for the
+ * page_info structure and the translation functions between page_info
+ * pointers and MFNs, so that page_alloc.c can manipulate the page_info
+ * structures in the test frame table and verify its behavior in a way
+ * that is consistent with how page_alloc.c acts when used by the running
+ * hypervisor, while being self-contained and suitable for unit testing.
+ *
+ * Shim definitions for Xen types and functions used by page_alloc.c.
+ *
+ * This shim is intended to be included directly in the test program
+ * or header-only library for testing a specific scenario, included
+ * by the test program, for unit testing functions in common/page_alloc.c.
+ *
+ * It provides stubs (minimal definitions for Xen types and functions)
+ * used by page_alloc.c, sufficient to support the test scenarios in
+ * tools/tests/alloc.
+ *
+ * It is not intended to be complete or accurate for general use in
+ * other test contexts or as a general-purpose shim for page_alloc.c.
+ *
+ * Copyright (C) 2026 Cloud Software Group
+ */
+#ifndef _TEST_ALLOC_PAGE_ALLOC_SHIM_
+#define _TEST_ALLOC_PAGE_ALLOC_SHIM_
+
+/*.
+ * Guard against language servers and linters picking up this header in
+ * the wrong context.
+ *
+ * This header is only intended to be used in the test program for unit
+ * testing functions in xen/common/page_alloc.c, and test programs define
+ * TEST_USES_PAGE_ALLOC_SHIM to enable the definitions in this header.
+ */
+#ifndef TEST_USES_PAGE_ALLOC_SHIM
+#warning "This header is only for use in page_alloc.c unit tests."
+#else
+/*
+ * Inside the intended test context, provide mocks and stub definitions.
+ */
+
+/* Configure the included headers for the test context */
+#ifndef CONFIG_NR_CPUS
+#define CONFIG_NR_CPUS 64
+#endif
+
+#if defined(CONFIG_NUMA) && !defined(CONFIG_NR_NUMA_NODES)
+#define CONFIG_NR_NUMA_NODES 64
+#endif
+
+#define CONFIG_SCRUB_DEBUG
+
+/* Provide struct page_info and related Xen definitions */
+#include "mock-page_list.h"
+
+/* Include the common check_asserts library for test assertions */
+#include "check-asserts.h"
+
+/*
+ * We add the Xen headers to the include path so page_alloc.c can
+ * resolve its #include directives without having to replicate all
+ * headers as actual files in the test tree:
+ *
+ * We define the header guards of those files to prevent unwanted
+ * definitions from those headers that conflict with the test harness.
+ */
+#define XEN_SOFTIRQ_H
+#define XEN__XVMALLOC_H
+#define _LINUX_INIT_H
+#define _XEN_PARAM_H
+#define __LIB_H__ /* C runtime library, only for the hypervisor */
+#define __LINUX_NODEMASK_H
+#define __FLUSHTLB_H__
+#define __SCHED_H__
+#define __SPINLOCK_H__
+#define __TYPES_H__ /* Conflicts with the compiler-provided types */
+#define __VM_EVENT_H__
+#define __X86_PAGE_H__
+#define __XEN_CPUMASK_H
+#define __XEN_EVENT_H__
+#define __XEN_FRAME_NUM_H__
+#define __XEN_IRQ_H__
+#define __XEN_MM_H__
+#define __XEN_PDX_H__
+
+#include <xen/keyhandler.h>
+#include <xen/page-size.h>
+#include <public/xen.h>
+
+/* Include xen/numa.h with stubs and unused parameter warnings disabled */
+#define cpumask_clear_cpu(cpu, mask) ((void)(cpu), (void)(mask))
+#define mfn_to_pdx(mfn)              ((unsigned long)(mfn))
+#pragma GCC diagnostic push
+#ifndef CONFIG_NUMA
+#pragma GCC diagnostic ignored "-Wunused-parameter"
+#endif
+#include <xen/numa.h>
+#pragma GCC diagnostic pop
+
+/* Flexible definition to support 32- and 64-bit architectures */
+#undef PADDR_BITS
+#define PADDR_BITS              (BITS_PER_LONG - PAGE_SHIFT)
+#define pfn_to_paddr(pfn)       ((paddr_t)(pfn) << PAGE_SHIFT)
+#define paddr_to_pfn(pa)        ((unsigned long)((pa) >> PAGE_SHIFT))
+#define INVALID_MFN_INITIALIZER (~0UL)
+
+typedef unsigned long nodemask_t;
+
+struct domain {
+    spinlock_t     page_alloc_lock;
+    nodemask_t     node_affinity;
+    nodeid_t       last_alloc_node;
+    domid_t        domain_id;
+    unsigned int   tot_pages;
+    unsigned int   max_pages;
+    unsigned int   extra_pages;
+    unsigned int   global_claims;
+    unsigned int   node_claims;
+    unsigned int   claims[MAX_NUMNODES];
+    unsigned int   xenheap_pages;
+    bool           is_dying;
+    struct domain *next_in_list;
+};
+extern struct domain *domain_list;
+
+struct vcpu {
+    struct domain *domain;
+};
+
+/*
+ * Provide two domains for the test context, so that test helpers can
+ * call allocator functions that require domain context and verify behavior
+ * that depends on domain state, such as claims accounting and page allocation
+ * for specific domains.
+ */
+static struct domain test_dummy_domain1;
+static struct domain test_dummy_domain2;
+static struct domain __used *dom1 = &test_dummy_domain1;
+static struct domain __used *dom2 = &test_dummy_domain2;
+
+/* To provide a current vcpu/domain pair for code paths that inspect it. */
+static unsigned char test_dummy_storage[PAGE_SIZE];
+static struct vcpu test_current_vcpu;
+static struct vcpu *current = &test_current_vcpu;
+static cpumask_t cpu_online_map = ~0UL;
+
+#define for_each_domain(_d) \
+        for ( (_d) = domain_list; (_d) != NULL; (_d) = (_d)->next_in_list )
+#define for_each_online_node(i) for ( (i) = 0; (i) < MAX_NUMNODES; ++(i) )
+#define for_each_cpu(i, mask)   for ( (i) = 0; (i) < 1; ++(i) )
+
+/* dom_cow is a domain pointer used by the memory sharing code */
+#ifdef CONFIG_MEM_SHARING
+static struct domain *dom_cow;
+#else
+#define dom_cow NULL
+#endif
+
+/*
+ * Logging spinlock for the test context
+ */
+static spinlock_t *heap_lock_ptr;
+
+/* Helper function to track spinlock actions for additional context */
+static void print_spinlock(const char *action, spinlock_t *lock,
+                           const char *file, int line, const char *func)
+{
+    const char *relpath = file;
+
+    if ( !testcase_assert_verbose_assertions )
+        return;
+
+    while ( (file = strstr(relpath, "../")) )
+        relpath += 3;
+
+    for ( int i = 0; i < testcase_assert_verbose_indent_level; i++ )
+        printf("  ");
+
+    /* Print the path first:*/
+    if ( testcase_assert_current_func == NULL ||
+         strcmp(testcase_assert_current_func, func) != 0 )
+        printf("%s:%d: %s(): ", relpath, line, func);
+    else
+        printf("%s:%d: ", relpath, line);
+
+    if ( lock == heap_lock_ptr )
+        printf("heap_lock %s\n", action);
+    else if ( domain_list && lock == &test_dummy_domain1.page_alloc_lock )
+        printf("dom1->page_alloc_lock %s\n", action);
+    else if ( domain_list && lock == &test_dummy_domain2.page_alloc_lock )
+        printf("dom2->page_alloc_lock %s\n", action);
+    else
+        printf("unknown lock %p %s\n", (void *)lock, action);
+}
+
+/*
+ * If testcase_assert_verbose_assertions is enabled, the spinlock
+ * functions print the spinlock being acquired or released along with
+ * the file and line number of the assertion that triggered it.
+ * This can be helpful for debugging test failures and understanding
+ * the sequence of events leading up to the failure.
+ */
+#define spin_lock(l) \
+        (print_spinlock("acquired", l, __FILE__, __LINE__, __func__), (void)(l))
+#define spin_unlock(l) \
+        (print_spinlock("released", l, __FILE__, __LINE__, __func__), (void)(l))
+#define spin_lock_cb(l, cb, data) spin_lock(l)
+#define spin_lock_kick()          ((void)0)
+#define nrspin_lock(l)            spin_lock(l)
+#define nrspin_unlock(l)          spin_unlock(l)
+#define rspin_lock(l)             spin_lock(l)
+#define rspin_unlock(l)           spin_unlock(l)
+#define DEFINE_SPINLOCK(l)        spinlock_t l
+/*
+ * For the test context, we assume all locks are always held to avoid having
+ * to manage lock state in the test helpers.  This allows the test helpers
+ * to call allocator functions that require locks to be held without needing
+ * to acquire those locks, which simplifies the test code and focuses on
+ * exercising the allocator logic under test.
+ *
+ * Invariants that would normally be protected by locks must still be upheld
+ * by the test helpers, but the test helpers can assume they have exclusive
+ * access to the allocator state and do not need to worry about concurrency.
+ */
+#define spin_is_locked(l)         true
+#define rspin_is_locked(l)        true
+
+/* memflags: */
+#define _MEMF_no_refcount         0
+#define MEMF_no_refcount          (1U << _MEMF_no_refcount)
+#define _MEMF_populate_on_demand  1
+#define MEMF_populate_on_demand   (1U << _MEMF_populate_on_demand)
+#define _MEMF_keep_scrub          2
+#define MEMF_keep_scrub           (1U << _MEMF_keep_scrub)
+#define _MEMF_no_dma              3
+#define MEMF_no_dma               (1U << _MEMF_no_dma)
+#define _MEMF_exact_node          4
+#define MEMF_exact_node           (1U << _MEMF_exact_node)
+#define _MEMF_no_owner            5
+#define MEMF_no_owner             (1U << _MEMF_no_owner)
+#define _MEMF_no_tlbflush         6
+#define MEMF_no_tlbflush          (1U << _MEMF_no_tlbflush)
+#define _MEMF_no_icache_flush     7
+#define MEMF_no_icache_flush      (1U << _MEMF_no_icache_flush)
+#define _MEMF_no_scrub            8
+#define MEMF_no_scrub             (1U << _MEMF_no_scrub)
+#define _MEMF_node                16
+#define MEMF_node_mask            ((1U << (8 * sizeof(nodeid_t))) - 1)
+#define MEMF_node(n)              ((((n) + 1)&MEMF_node_mask) << _MEMF_node)
+#define MEMF_get_node(f)          ((((f) >> _MEMF_node) - 1)&MEMF_node_mask)
+#define _MEMF_bits                24
+#define MEMF_bits(n)              ((n) << _MEMF_bits)
+
+#define string_param(name, var)
+#define custom_param(name, fn)
+#define size_param(name, var)
+#define boolean_param(name, func)
+#define integer_param(name, var)
+#define ACCESS_ONCE(x) (x)
+#define cmpxchg(ptr, oldv, newv) \
+        ({                       \
+             *(ptr) = (newv);    \
+             (oldv);             \
+         })
+
+#define is_xen_heap_page(pg)          false
+#define page_to_virt(pg)              ((void *)(pg))
+#define virt_to_page(v)               ((struct page_info *)(v))
+#define mfn_to_virt(mfn)              ((void *)&test_dummy_storage)
+#define __mfn_to_virt(mfn)            mfn_to_virt(mfn)
+#define _mfn(x)                       ((mfn_t)(x))
+#define mfn_x(x)                      ((unsigned long)(x))
+#define mfn_add(mfn, nr)              ((mfn) + (nr))
+#define mfn_min(a, b)                 ((a) < (b) ? (a) : (b))
+
+/*
+ * NUMA stubs for unit testing NUMA-aware page allocator logic.
+ *
+ * nodemask_test() and node_set() implement real bit operations so that
+ * domain_install_claim_set() can correctly detect duplicate node entries
+ * in a claim set. mfn_to_pdx() is defined before xen/numa.h is included.
+ */
+
+static nodemask_t node_online_map = ~0UL;
+#define num_online_nodes()            MAX_NUMNODES
+#define node_online(node)             ((node) < MAX_NUMNODES)
+#define nodes_intersects(a, b)        ((a) & (b))
+#define nodes_and(dst, a, b)          ((dst) = (a) & (b))
+#define nodes_andnot(dst, a, b)       ((dst) = (a) & ~(b))
+#define nodes_clear(dst)              ((dst) = 0)
+#define nodemask_test(node, mask)     ((*(mask) >> (node)) & 1UL)
+#define node_set(node, mask)          ((mask) |= (1UL << (node)))
+#define node_clear(node, mask)        ((void)(mask))
+#define node_test_and_set(node, mask) false
+#define first_node(mask)              0U
+#define next_node(node, mask)         MAX_NUMNODES
+#define cycle_node(node, mask)        0U
+
+#ifdef CONFIG_NUMA
+#define __node_distance(a, b) 0
+nodeid_t cpu_to_node[NR_CPUS];
+cpumask_t node_to_cpumask[MAX_NUMNODES];
+struct node_data node_data[MAX_NUMNODES];
+unsigned int memnode_shift;
+
+static typeof(*memnodemap) _memnodemap[64];
+nodeid_t *memnodemap = _memnodemap;
+unsigned long memnodemapsize = sizeof(_memnodemap);
+#endif /* CONFIG_NUMA */
+
+/*
+ * Stub definitions for Xen functions and macros used by page_alloc.c,
+ * sufficient to support the test scenarios in tools/tests/alloc.
+ *
+ * These are not intended to be complete or accurate for general use
+ * in other test contexts or as a general-purpose shim for page_alloc.c.
+ */
+#define rcu_lock_domain(id)               (&test_dummy_domain1)
+#define rcu_lock_domain_by_any_id(id)     (&test_dummy_domain1)
+#define NOW()                             0LL
+#define SYS_STATE_active                  1
+#define system_state                      0
+#define cpu_online(cpu)                   ((cpu) == 0)
+#define smp_processor_id()                0U
+#define smp_wmb()                         ((void)0)
+#define cpumask_empty(mask)               true
+#define cpumask_clear(mask)               ((void)(mask))
+#define cpumask_and(dst, a, b)            ((void)(dst), (void)(a), (void)(b))
+#define cpumask_or(dst, a, b)             ((void)(dst), (void)(a), (void)(b))
+#define cpumask_copy(dst, src)            ((void)(dst), (void)(src))
+#define cpumask_first(mask)               0U
+#define cpumask_intersects(a, b)          false
+#define cpumask_weight(mask)              1
+#define __cpumask_set_cpu(cpu, mask)      ((void)(cpu), (void)(mask))
+#define page_get_owner(pg)                ((pg)->owner)
+#define page_set_owner(pg, d)             ((pg)->owner = (d))
+#define page_get_owner_and_reference(pg)  ((pg)->owner)
+#define page_set_tlbflush_timestamp(pg)   ((pg)->tlbflush_timestamp = 0)
+#define set_gpfn_from_mfn(mfn, gpfn)      ((void)0)
+#define page_is_offlinable(mfn)           true
+#define is_xen_fixed_mfn(mfn)             false
+#define filtered_flush_tlb_mask(ts)       ((void)(ts))
+#define accumulate_tlbflush(need, pg, ts) ((void)(need), (void)(pg), (void)(ts))
+#define flush_page_to_ram(mfn, icache)    ((void)(mfn), (void)(icache))
+#define scrub_page_hot(ptr)               clear_page_hot(ptr)
+#define scrub_page_cold(ptr)              clear_page_cold(ptr)
+#define send_global_virq(virq)            ((void)(virq))
+#define softirq_pending(cpu)              false
+#define process_pending_softirqs()        ((void)0)
+#define on_selected_cpus(msk, f, data, w) ((void)0)
+#define cpu_relax()                       ((void)0)
+#define xmalloc(type)                     calloc(1, sizeof(type))
+#define xmalloc_array(type, nr)           calloc((nr), sizeof(type))
+#define xvzalloc_array(type, nr)          calloc((nr), sizeof(type))
+#define xvmalloc_array(type, nr)          calloc((nr), sizeof(type))
+#define get_order_from_pages(nr)          0U
+#define get_order_from_bytes(bytes)       0U
+#define arch_mfns_in_directmap(mfn, nr)   true
+#define maddr_to_mfn(pa)                  ((mfn_t)paddr_to_pfn(pa))
+
+#define ASSERT_ALLOC_CONTEXT()              ((void)0)
+#define arch_free_heap_page(d, pg)          ((void)(d), (void)(pg))
+#define get_knownalive_domain(d)            ((void)(d))
+#define domain_clamp_alloc_bitsize(d, bits) (bits)
+#define mem_paging_enabled(d)               false
+#define put_domain(d)                       ((void)(d))
+#define clear_page_hot(ptr)                 memset((ptr), 0, PAGE_SIZE)
+#define clear_page_cold(ptr)                memset((ptr), 0, PAGE_SIZE)
+#define unmap_domain_page(ptr)              ((void)(ptr))
+#define put_page(pg)                        ((void)(pg))
+
+void *alloc_xenheap_pages(unsigned int order, unsigned int memflags);
+void  init_domheap_pages(paddr_t ps, paddr_t pe);
+struct page_info *alloc_domheap_pages(struct domain *d, unsigned int order,
+                                      unsigned int memflags);
+
+/* Additional stubs for test support */
+
+unsigned int arch_get_dma_bitsize(void)
+{
+    return 32U;
+}
+
+/* Return number of pages currently posessed by the domain */
+static inline unsigned int domain_tot_pages(const struct domain *d)
+{
+    assert(d->extra_pages <= d->tot_pages);
+    return d->tot_pages - d->extra_pages;
+}
+
+/* LLC (Last Level Cache) coloring support stubs */
+#define llc_coloring_enabled                false
+unsigned int get_max_nr_llc_colors(void)
+{
+    return 1U;
+}
+unsigned int page_to_llc_color(const struct page_info *pg)
+{
+    (void)pg;
+    return 0U;
+}
+
+#define parse_bool(s, e) (-1) /* Not parsed, use the default */
+
+void __init register_keyhandler(unsigned char key, keyhandler_fn_t *fn,
+                                const char *desc, bool diagnostic)
+{
+    (void)key;
+    (void)fn;
+    (void)desc;
+    (void)diagnostic;
+}
+
+unsigned long simple_strtoul(const char *cp, const char **endp,
+                             unsigned int base)
+{
+    return strtoul(cp, (char **)endp, base);
+}
+
+#endif /* TEST_USES_PAGE_ALLOC_SHIM */
+#endif /* _TEST_ALLOC_PAGE_ALLOC_SHIM_ */
-- 
2.39.5



From xen-devel-bounces@lists.xenproject.org Wed Apr 15 17:48:25 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 15 Apr 2026 17:48:25 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1282742.1565233 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wD4Lg-00021r-Uo; Wed, 15 Apr 2026 17:48:24 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1282742.1565233; Wed, 15 Apr 2026 17:48: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 1wD4Lg-00021k-SA; Wed, 15 Apr 2026 17:48:24 +0000
Received: by outflank-mailman (input) for mailman id 1282742;
 Wed, 15 Apr 2026 17:48:23 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <bernhard.kaindl@citrix.com>) id 1wD4Lf-00021e-0r
 for xen-devel@lists.xenproject.org; Wed, 15 Apr 2026 17:48:23 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wD4Le-00Dvub-Dz
 for xen-devel@lists.xenproject.org; Wed, 15 Apr 2026 19:48:22 +0200
Received: from [10.42.69.11] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <bernhard.kaindl@citrix.com>)
 id 69dfcf53-e002-0a2a0a5209dd-0a2a450bd8f2-14
 for <xen-devel@lists.xenproject.org>; Wed, 15 Apr 2026 19:48:22 +0200
Received: from [160.101.131.8] (helo=na1pdmzitismtp01.tibco.com)
 by tlsNG-42698a.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.0)
 (envelope-from <bernhard.kaindl@citrix.com>)
 id 69dfcf65-bca8-0a2a450b0019-a0658308ba10-3
 for <xen-devel@lists.xenproject.org>; Wed, 15 Apr 2026 19:48:22 +0200
Received: from debian.eng.citrite.net (unknown [10.113.40.46])
 by na1pdmzitismtp01.tibco.com (Postfix) with ESMTP id 37E1F4203287;
 Wed, 15 Apr 2026 13:47:38 -0400 (EDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-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: Bernhard Kaindl <bernhard.kaindl@citrix.com>
To: xen-devel@lists.xenproject.org
Cc: Bernhard Kaindl <bernhard.kaindl@citrix.com>,
	Anthony PERARD <anthony.perard@vates.tech>
Subject: [PATCH 2/4] tools/tests/alloc: Add integration test suite for memory claims
Date: Wed, 15 Apr 2026 18:34:57 +0100
Message-Id: <355d67b11c88695bec517a16d88b696a96ed0e5f.1776273656.git.bernhard.kaindl@citrix.com>
X-Mailer: git-send-email 2.39.5
In-Reply-To: <cover.1776273656.git.bernhard.kaindl@citrix.com>
References: <cover.1776273656.git.bernhard.kaindl@citrix.com>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit
X-purgate-ID: tlsNG-42698a/1776275302-1734C2A1-D9852D6D/0/0
X-purgate-type: clean
X-purgate-size: 18715

Add a host-side integration test suite for memory claims, including
NUMA-aware claim sets.

This complements the functional system tests submitted as part of the
NUMA-aware claims series.

It verifies the behaviour of the page allocator when multi-node claim
sets are present in situations that are easier to create and validate
in isolation, with full control over a synthetic Xen heap state and
visibility into the claim state of domains as claims are made and
redeemed through heap allocation.

The included tests cover a range of claim-related scenarios to ensure
that the Xen page allocator behaves as expected.

Signed-off-by: Bernhard Kaindl <bernhard.kaindl@citrix.com>
---
 tools/tests/alloc/test-claims_basic.c       | 230 ++++++++++++++++++++
 tools/tests/alloc/test-claims_numa_redeem.c | 201 +++++++++++++++++
 2 files changed, 431 insertions(+)
 create mode 100644 tools/tests/alloc/test-claims_basic.c
 create mode 100644 tools/tests/alloc/test-claims_numa_redeem.c

diff --git a/tools/tests/alloc/test-claims_basic.c b/tools/tests/alloc/test-claims_basic.c
new file mode 100644
index 000000000000..f81e75876d30
--- /dev/null
+++ b/tools/tests/alloc/test-claims_basic.c
@@ -0,0 +1,230 @@
+/* SPDX-License-Identifier: GPL-2.0-only */
+/*
+ * Unit tests for memory claims in xen/common/page_alloc.c.
+ *
+ * Copyright (C) 2026 Cloud Software Group
+ */
+
+/* Enable sysctl support in page_alloc.c for testing get_outstanding_claims() */
+#define CONFIG_NUMA   1
+#define CONFIG_SYSCTL 1
+#include "libtest-page_alloc.h"
+
+/*
+ * Wrapper for domain_install_claim_set() with the function signature as
+ * domain_set_outstanding_pages() to test both domain_install_claim_set()
+ * and domain_set_outstanding_pages() by using a function pointer for
+ * setting claims to check feature parity and consistent behavior.
+ */
+
+int test_set_global_claims(struct domain *d, unsigned long pages)
+{
+    memory_claim_t claim_set[] = {
+        {.target = XEN_DOMCTL_CLAIM_MEMORY_GLOBAL, .pages = pages},
+    };
+    return domain_install_claim_set(d, ARRAY_SIZE(claim_set), claim_set);
+}
+typedef int (*set_global_claims)(struct domain *d, unsigned long pages);
+
+/*
+ * Function pointer to test both domain_install_claim_set() and
+ * domain_set_outstanding_pages() interchangeably in the test
+ * scenarios for feature parity and consistent behaviour.
+ */
+set_global_claims install_global_claims = test_set_global_claims;
+
+/*
+ * Test that memory claims are consumed correctly during allocations.
+ */
+static void test_alloc_domheap_consumes_claims(int start_mfn)
+{
+    unsigned long avail_pages_zone;
+    int zone, ret;
+    struct page_info *pages = test_pages + start_mfn, *allocated;
+
+    /*
+     * PREPARE
+     */
+
+    /* Create a buddy of order 2 (4 pages) and add it to the heap. */
+    zone = test_page_list_add_buddy(pages, order2);
+
+    /* Verify the initial state of the heap */
+    ASSERT_LIST_EQUAL(&heap(node, zone, order2), pages);
+    ASSERT(page_list_empty(&heap(node, zone, order1)));
+    ASSERT(page_list_empty(&heap(node, zone, order0)));
+    CHECK_BUDDY(pages, "Order-2 buddy prepared on the heap");
+
+    /*
+     * ACT 1
+     */
+
+    /* Claim 3 out of the 4 pages for the dummy domain */
+    ret = test_set_global_claims(dom1, 3);
+    ASSERT(ret == 0);
+
+    /* Allocate an order-1 page for the dummy domain */
+    allocated = alloc_domheap_pages(dom1, order1, 0);
+    CHECK(allocated == &pages[2], "Expect allocation start at 3rd page");
+
+    /*
+     * ASSERT 1
+     *
+     * The allocation is expected to split the order-2 buddy and allocate
+     * an order-1 chunk from it, leaving the remaining order-1 chunk as a free
+     * available pages, and the claim should have been consumed accordingly.
+     */
+
+    /* Verify the state of the heap after allocation */
+    ASSERT(page_list_empty(&heap(node, zone, order2)));
+    ASSERT(page_list_empty(&heap(node, zone, order0)));
+    /* The remaining order-1 chunk should be the first page */
+    ASSERT_LIST_EQUAL(&heap(node, zone, order1), pages);
+    CHECK_BUDDY(pages, "Buddy after order-1 allocation");
+
+    /* Verify the state of the aggregate counters */
+    CHECK(TOTAL_CLAIMS == 1, "Expect 1 claims left after allocation");
+    CHECK(FREE_PAGES == 2, "Expect 2 available after allocation");
+    CHECK(avail_heap_pages(zone, zone, node) == 2, "Expect 2 in zone");
+
+    /*
+     * ACT 2
+     */
+
+    /* Allocate one of the two remaining order-0 pages for the dummy domain */
+    allocated = alloc_domheap_pages(dom1, order0, 0);
+    CHECK(allocated == &pages[1], "alloc_domheap_pages returned the 2nd page");
+
+    /*
+     * ASSERT 2
+     *
+     * The allocation is expected to split the remaining order-1
+     * buddy and allocate an order-0 page from it, leaving the
+     * remaining order-0 page as a free available page, and the
+     * claim should have been consumed accordingly.
+     */
+
+    /* Verify the state of the heap after allocation */
+    ASSERT(page_list_empty(&heap(node, zone, order2)));
+    ASSERT(page_list_empty(&heap(node, zone, order1)));
+    /* The remaining order-0 page should be the only free page we've left */
+    ASSERT_LIST_EQUAL(&heap(node, zone, order0), pages);
+
+    /* Verify the state of the aggregate counters */
+    CHECK(TOTAL_CLAIMS == 0, "Expect all claims consumed after allocation");
+    CHECK(FREE_PAGES == 1, "Expect one free page after allocation");
+
+    avail_pages_zone = avail_heap_pages(zone, zone, node);
+    CHECK(avail_pages_zone == 1, "Expect one page in zone after allocation");
+
+    /*
+     * PREPARE 3
+     */
+
+    /* Claim all free memory from another domain to block allocations */
+    ret = test_set_global_claims(dom2, FREE_PAGES);
+    ASSERT(ret == 0);
+
+    /*
+     * ACT 3
+     */
+
+    /* Claim more than dom1 already has fails with ENOMEM (claimed by dom2) */
+    ret = test_set_global_claims(dom1, domain_tot_pages(dom1) + 1);
+    CHECK(ret == -ENOMEM, "dom 1 claim +1 fails due to insufficient pages");
+
+    /* Claim more than dom1's d->max_pages fails with EINVAL */
+    ret = test_set_global_claims(dom1, dom1->max_pages + 1);
+    CHECK(ret == -EINVAL, "dom 1 claim fails due to exceeding max_pages");
+
+    /* Attempt to allocate an order-0 page with a foreign claim present */
+    allocated = alloc_domheap_pages(dom1, order0, 0);
+    CHECK(allocated == NULL, "dom 1 alloc fails b/c domain 2's claim");
+
+    /*
+     * ASSERT 3
+     */
+
+    /* Verify the state of the heap after failed allocation (no changes) */
+    ASSERT(page_list_empty(&heap(node, zone, order2)));
+    ASSERT(page_list_empty(&heap(node, zone, order1)));
+    /* Due to the foreign claim, the remaining page should still be free */
+    ASSERT_LIST_EQUAL(&heap(node, zone, order0), pages);
+
+    /* Verify the state of the aggregate counters (no changes expected) */
+    CHECK(TOTAL_CLAIMS == 1, "Expect domain 2's claim to be still present");
+    CHECK(FREE_PAGES == 1, "Expect one free page after failed alloc");
+
+    avail_pages_zone = avail_heap_pages(zone, zone, node);
+    CHECK(avail_pages_zone == 1, "Expect one page in zone after allocation");
+}
+
+/*
+ * Test that memory claims are consumed correctly during allocations.
+ */
+static void test_cancel_claims(int start_mfn)
+{
+    struct page_info *page = test_pages + start_mfn;
+    unsigned long claims;
+
+    /* Create a buddy of order 2 (4 pages) and add it to the heap. */
+    test_page_list_add_buddy(page, order2);
+    claims = FREE_PAGES / 2;
+    /* Claim half of the free pages for dom1 */
+    ASSERT(test_set_global_claims(dom1, claims) == 0);
+    ASSERT(TOTAL_CLAIMS == claims);
+
+    /*
+     * Act: Cancel the claims for the dummy domain and verify that the
+     * claim counts are updated and the free pages are available again.
+     */
+
+    /* Act + Assert 2: Claim all free pages for dom2, should fail */
+    ASSERT(test_set_global_claims(dom2, FREE_PAGES) == -ENOMEM);
+    ASSERT(TOTAL_CLAIMS == claims);
+
+    /* Act + Assert 1: Cancel all claims for dom1 */
+    ASSERT(test_set_global_claims(dom1, 0) == 0);
+    ASSERT(TOTAL_CLAIMS == 0);
+
+    /* Act + Assert 2: Claim all free pages for dom2, should work */
+    ASSERT(test_set_global_claims(dom2, FREE_PAGES) == 0);
+    ASSERT(TOTAL_CLAIMS == FREE_PAGES);
+}
+
+int main(int argc, char *argv[])
+{
+    const char *topic = "Test legacy claims with allocation from the heap";
+    const char *program_name = parse_args(argc, argv, topic);
+
+    if ( !program_name )
+        return EXIT_FAILURE;
+
+    init_page_alloc_tests();
+
+    /* Use domain_set_outstanding_pages() for staking claims */
+    install_global_claims = domain_set_outstanding_pages;
+    RUN_TESTCASE(ADCL, test_alloc_domheap_consumes_claims, 0);
+
+    /*
+     * Use test_set_global_claims() which is a wrapper around
+     * domain_install_claim_set() to check ensure consistent
+     * behavior with domain_set_outstanding_pages().
+     */
+    install_global_claims = test_set_global_claims;
+    RUN_TESTCASE(ADCG, test_alloc_domheap_consumes_claims, 4);
+
+    RUN_TESTCASE(TCCL, test_cancel_claims, 0);
+
+    testcase_print_summary(program_name);
+    return 0;
+}
+
+/*
+ * Local variables:
+ * mode: C
+ * c-file-style: "BSD"
+ * c-basic-offset: 4
+ * indent-tabs-mode: nil
+ * End:
+ */
diff --git a/tools/tests/alloc/test-claims_numa_redeem.c b/tools/tests/alloc/test-claims_numa_redeem.c
new file mode 100644
index 000000000000..61bec12be1c0
--- /dev/null
+++ b/tools/tests/alloc/test-claims_numa_redeem.c
@@ -0,0 +1,201 @@
+/* SPDX-License-Identifier: GPL-2.0-only */
+/*
+ * Integration tests for redeeming NUMA memory claim set as implemented
+ * in xen/common/page_alloc.c's redeem_claims_for_allocation() and
+ * related functions.
+ *
+ * redeem_claims_for_allocation() is exercised indirectly through
+ * alloc_domheap_pages() which is the primary interface for allocating
+ * pages from a domain's heap.
+ *
+ * By means of domain_install_claim_set(), a claim set with global and
+ * per-NUMA-node claims is installed for a dummy domain, and then
+ * allocations with NUMA node affinity are performed to verify that the
+ * appropriate claims are redeemed (same-node first, global fallback next,
+ * then other nodes to not exceed page limits). The test also verifies that
+ * aggregate counters are updated correctly after each allocation.
+ *
+ * The test verifies that when a domain has a claim set installed with
+ * global and per-NUMA-node claims, allocations that specify NUMA node
+ * affinity will redeem the appropriate claims (same-node first, global
+ * fallback claim next, then other nodes to not exceed page limits).
+ * It also verifies that the aggregate claim counters are updated
+ * correctly after each allocation.
+ *
+ * Copyright (C) 2026 Cloud Software Group
+ */
+
+#define CONFIG_NUMA   1
+#define CONFIG_SYSCTL 1
+#include "libtest-page_alloc.h"
+
+/*
+ * Test redeeming NUMA memory claims in exchange for allocations,
+ * and the redeemed claims are correctly reflected in the domain's
+ * claim state and the aggregate claim counters.
+ */
+static void test_claims_numa_install(int start_mfn)
+{
+    unsigned long avail_pages_zone;
+    int zone, ret;
+    struct page_info *pages = test_pages + start_mfn, *allocated;
+
+    /*
+     * PREPARE
+     */
+
+    /*
+     * Node 1's pages start at the pfn set by init_numa_node_data():
+     * node_data[node1].node_start_pfn = start_mfn + 8 (8 MFNs per node with
+     * memnode_shift=3). The order-2 buddy (4 pages) placed there satisfies
+     * the 2-page node1 claim and provides enough total pages for the
+     * 2 global + 2 node0 + 2 node1 = 6-page claim set (2 + 4 = 6 total).
+     */
+    struct page_info *pages_node1 =
+        test_pages + node_data[node1].node_start_pfn;
+
+    /* Create an order-1 buddy (2 pages) for node 0 and add it to the heap. */
+    zone = test_page_list_add_buddy(pages, order1);
+
+    /* Verify the initial state of node 0's heap. */
+    ASSERT_LIST_EQUAL(&heap(node0, zone, order1), pages);
+    ASSERT(page_list_empty(&heap(node0, zone, order0)));
+    CHECK_BUDDY(pages, "Order-1 buddy on node 0 prepared");
+
+    /* Create an order-2 buddy (4 pages) for node 1 and add it to the heap. */
+    test_page_list_add_buddy(pages_node1, order2);
+    CHECK_BUDDY(pages_node1, "Order-2 buddy on node 1 prepared");
+
+    /*
+     * ACT 1
+     */
+
+    /* Install a claim set with global + per-NUMA-node claims. */
+    memory_claim_t claim_set[] = {
+        {.target = XEN_DOMCTL_CLAIM_MEMORY_GLOBAL, .pages = 2},
+        {.target = node0,                          .pages = 2},
+        {.target = node1,                          .pages = 2},
+    };
+    ret = domain_install_claim_set(dom1, ARRAY_SIZE(claim_set), claim_set);
+    CHECK(ret == 0, "domain_install_claim_set should succeed: %d", ret);
+
+    /* Assert dom1's claims */
+    CHECK(TOTAL_CLAIMS == 6, "Expect 6 total claims after installation");
+    CHECK(DOM_GLOBAL_CLAIMS(dom1) == 2,
+          "Expect dom1 having 2 global claims after installation");
+    CHECK(DOM_NODE_CLAIMS(dom1, node0) == 2,
+          "Expect dom1 having 2 claims for node0 after installation");
+    CHECK(DOM_NODE_CLAIMS(dom1, node1) == 2,
+          "Expect dom1 having 2 claims for node1 after installation");
+
+    /* Allocate an order-0 page from node 0 for the dummy domain. */
+    allocated = alloc_domheap_pages(dom1, order0, MEMF_node(node0));
+    CHECK(allocated != NULL, "alloc_domheap_pages should succeed");
+
+    /*
+     * ASSERT 1
+     *
+     * The order-0 allocation from node 0 splits the node 0 order-1 buddy:
+     * - The lower half (pages[0]) stays on node 0's order-0 heap.
+     * - The upper half (pages[1]) is returned as the allocated page.
+     * One node 0 claim is consumed by the allocation.
+     */
+    CHECK_BUDDY(pages, "Buddy after order-0 allocation");
+    /* Verify the state of node 0's heap after allocation. */
+    ASSERT(page_list_empty(&heap(node0, zone, order2)));
+    ASSERT(page_list_empty(&heap(node0, zone, order1)));
+    /* The lower half (pages[0]) remains as the sole order-0 buddy on node 0. */
+    ASSERT_LIST_EQUAL(&heap(node0, zone, order0), pages);
+
+    avail_pages_zone = avail_heap_pages(zone, zone, node0);
+    CHECK(avail_pages_zone == 1, "Expect one page in node0 after allocation");
+
+    /* Verify the state of the aggregate counters after allocation. */
+    CHECK(TOTAL_CLAIMS == 5, "Expect 5 total claims left after allocation");
+    CHECK(FREE_PAGES == 5, "Expect 5 free pages left after allocation");
+
+    /* Assert dom1's claims after the allocation from node0 */
+    CHECK(DOM_GLOBAL_CLAIMS(dom1) == 2,
+          "Expect dom1 still having 2 global claims after allocation");
+    CHECK(DOM_NODE_CLAIMS(dom1, node0) == 1,
+          "Expect dom1 having 1 claim for node0 after allocation");
+    CHECK(DOM_NODE_CLAIMS(dom1, node1) == 2,
+          "Expect dom1 still having 2 claims for node1 after allocation");
+
+    /* Allocate an order-0 page from node 1 for the dummy domain. */
+    allocated = alloc_domheap_pages(dom1, order0, MEMF_node(node1));
+    CHECK(allocated != NULL, "order-0 alloc from node1");
+
+    /* Assert dom1's claims after the allocation from node1 */
+    CHECK(DOM_GLOBAL_CLAIMS(dom1) == 2,
+          "Expect dom1 still having 2 global claims after allocation");
+    CHECK(DOM_NODE_CLAIMS(dom1, node0) == 1,
+          "Expect dom1 having 1 claim for node0 after allocation");
+    CHECK(DOM_NODE_CLAIMS(dom1, node1) == 1,
+          "Expect dom1 having 1 claim for node1 after allocation");
+
+    /* Allocate an order-1 page from node 1 for the dummy domain. */
+    allocated = alloc_domheap_pages(dom1, order1, MEMF_node(node1));
+    CHECK(allocated != NULL, "order-1 alloc from node1");
+
+    /* Assert dom1's claims after the allocation from node1 */
+    CHECK(DOM_GLOBAL_CLAIMS(dom1) == 1,
+          "Expect dom1 having redeemed one global claim after allocation");
+    CHECK(DOM_NODE_CLAIMS(dom1, node0) == 1,
+          "Expect dom1 having 1 claim for node0 after allocation");
+    CHECK(DOM_NODE_CLAIMS(dom1, node1) == 0,
+          "Expect dom1 having 0 claims for node1 after allocation");
+
+    /* Allocate an order-0 page from node 1 for the dummy domain. */
+    allocated = alloc_domheap_pages(dom1, order0, MEMF_node(node1));
+    CHECK(allocated != NULL, "order-0 alloc from node1");
+
+    /* Assert dom1's claims after the allocation from node1 */
+    CHECK(DOM_GLOBAL_CLAIMS(dom1) == 0,
+          "Expect dom1 having redeemed one global claim after allocation");
+    CHECK(DOM_NODE_CLAIMS(dom1, node0) == 1,
+          "Expect dom1 having 1 claim for node0 after allocation");
+    CHECK(DOM_NODE_CLAIMS(dom1, node1) == 0,
+          "Expect dom1 having 0 claims for node1 after allocation");
+
+    /* Allocate an order-0 page from node 1 for the dummy domain. */
+    allocated = alloc_domheap_pages(dom1, order0, MEMF_node(node1));
+    CHECK(allocated != NULL, "order-0 alloc from node1");
+
+    /* Assert dom1's claims after the allocation from node1 */
+    CHECK(DOM_GLOBAL_CLAIMS(dom1) == 0,
+          "Expect dom1 having redeemed one global claim after allocation");
+    CHECK(DOM_NODE_CLAIMS(dom1, node0) == 0,
+          "Expect dom1 having 0 claims for node0 after allocation");
+    CHECK(DOM_NODE_CLAIMS(dom1, node1) == 0,
+          "Expect dom1 having 0 claims for node1 after allocation");
+}
+
+int main(int argc, char *argv[])
+{
+    const char *topic = "Test legacy claims with allocation from the heap";
+    const char *program_name = parse_args(argc, argv, topic);
+
+    if ( !program_name )
+        return EXIT_FAILURE;
+
+    init_page_alloc_tests();
+    /*
+     * Use test_set_global_claims() which is a wrapper around
+     * domain_install_claim_set() to check ensure consistent
+     * behavior with domain_set_outstanding_pages().
+     */
+    RUN_TESTCASE(CNI0, test_claims_numa_install, 0);
+
+    testcase_print_summary(program_name);
+    return 0;
+}
+
+/*
+ * Local variables:
+ * mode: C
+ * c-file-style: "BSD"
+ * c-basic-offset: 4
+ * indent-tabs-mode: nil
+ * End:
+ */
-- 
2.39.5



From xen-devel-bounces@lists.xenproject.org Wed Apr 15 17:49:39 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 15 Apr 2026 17:49:39 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1282759.1565244 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wD4Ms-0002Xy-8X; Wed, 15 Apr 2026 17:49:38 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1282759.1565244; Wed, 15 Apr 2026 17: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 1wD4Ms-0002Xr-4y; Wed, 15 Apr 2026 17:49:38 +0000
Received: by outflank-mailman (input) for mailman id 1282759;
 Wed, 15 Apr 2026 17:49:37 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <bernhard.kaindl@citrix.com>) id 1wD4Mr-0002Xj-5i
 for xen-devel@lists.xenproject.org; Wed, 15 Apr 2026 17:49:37 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wD4Mp-00BPMT-0q
 for xen-devel@lists.xenproject.org; Wed, 15 Apr 2026 19:49:36 +0200
Received: from [10.42.69.10] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <bernhard.kaindl@citrix.com>)
 id 69dfcfab-2eae-0a2a0a5409dd-0a2a450a9636-6
 for <xen-devel@lists.xenproject.org>; Wed, 15 Apr 2026 19:49:36 +0200
Received: from [160.101.131.9] (helo=na1pdmzitismtp02.tibco.com)
 by tlsNG-4011c0.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.0)
 (envelope-from <bernhard.kaindl@citrix.com>)
 id 69dfcfaf-ee98-0a2a450a0019-a0658309cb08-3
 for <xen-devel@lists.xenproject.org>; Wed, 15 Apr 2026 19:49:36 +0200
Received: from debian.eng.citrite.net (unknown [10.113.40.46])
 by na1pdmzitismtp02.tibco.com (Postfix) with ESMTP id 063EE81BB9DF;
 Wed, 15 Apr 2026 13:48:41 -0400 (EDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-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: Bernhard Kaindl <bernhard.kaindl@citrix.com>
To: xen-devel@lists.xenproject.org
Cc: Bernhard Kaindl <bernhard.kaindl@citrix.com>,
	Anthony PERARD <anthony.perard@vates.tech>
Subject: [PATCH 3/4] tools/tests/alloc: Add tests for offlining with claims present
Date: Wed, 15 Apr 2026 18:34:58 +0100
Message-Id: <84f126a27ba8035601777e8cdb0d5d0a6a337c51.1776273656.git.bernhard.kaindl@citrix.com>
X-Mailer: git-send-email 2.39.5
In-Reply-To: <cover.1776273656.git.bernhard.kaindl@citrix.com>
References: <cover.1776273656.git.bernhard.kaindl@citrix.com>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit
X-purgate-ID: tlsNG-4011c0/1776275376-C461F0B1-D5967C0C/0/0
X-purgate-type: clean
X-purgate-size: 4750

Add an integration test for offlining pages with outstanding claims.
The test offlines two pages, with the second offline operation
recalling one claim to prevent over-claiming beyond the available
memory. Due to missing checks in the offlining code, there are
expected failures which will be fixed in a test-driven manner.

Run this test with both global claims and node-local claims.

Signed-off-by: Bernhard Kaindl <bernhard.kaindl@citrix.com>
---
 tools/tests/alloc/test-offlining-claims.c | 106 ++++++++++++++++++++++
 1 file changed, 106 insertions(+)
 create mode 100644 tools/tests/alloc/test-offlining-claims.c

diff --git a/tools/tests/alloc/test-offlining-claims.c b/tools/tests/alloc/test-offlining-claims.c
new file mode 100644
index 000000000000..d22d270ceeb4
--- /dev/null
+++ b/tools/tests/alloc/test-offlining-claims.c
@@ -0,0 +1,106 @@
+/* SPDX-License-Identifier: GPL-2.0-only */
+/*
+ * Integration test for offlining pages with outstanding claims in page_alloc.c.
+ *
+ * Copyright (C) 2026 Cloud Software Group
+ */
+
+/* Enable sysctl support in page_alloc.c for testing get_outstanding_claims() */
+#define CONFIG_SYSCTL
+#define CONFIG_NUMA
+#include "libtest-page_alloc.h"
+
+/*
+ * Claim 3 of 4 pages globally, offline two pages, and the 2nd offline should
+ * recall one claim to prevent over-claiming beyond the available memory.
+ *
+ * As part of offline_page(), reserve_offlined_page() should recall the
+ * needed claims to not exceed the number of pages that are are remaining.
+ */
+static void test_offlining_with_global_claims(int mfn)
+{
+    struct page_info *page = test_pages + mfn;
+    uint32_t status = 0;
+    memory_claim_t claims[1] = {
+        {.pages = 3, .target = XEN_DOMCTL_CLAIM_MEMORY_GLOBAL}
+    };
+
+    /* PREPARE */
+    test_page_list_add_buddy(page, order2); /* Add a buddy with 4 free pages*/
+    ASSERT(domain_install_claim_set(dom1, ARRAY_SIZE(claims), claims) == 0);
+    offline_page(mfn + 3, 0, &status); /* Offline the 1st page */
+    ASSERT(status & PG_OFFLINE_OFFLINED);
+    CHECK(TOTAL_CLAIMS == 3, "Still 3 claims before offlining the 2nd page");
+
+    /* ACT */
+    /* Offlining the 2nd page must reduce the free pages and claims to 2 */
+    status = 0;
+    offline_page(mfn + 1, 0, &status); /* Offline the 2nd page */
+    ASSERT(status & PG_OFFLINE_OFFLINED);
+
+    /* ASSERT */
+    CHECK_BUDDY(page, "After offlining the 2nd page");
+    CHECK(FREE_PAGES == 2, "Expect 2 free pages after offlining two pages");
+    EXPECTED_TO_FAIL_BEGIN();
+    CHECK(TOTAL_CLAIMS == 2, "Expect 2 claims after offlining two pages");
+    EXPECTED_TO_FAIL_END(1);
+}
+
+
+/*
+ * Claim 3 of 4 pages on node0, offline two pages, and the 2nd offline should
+ * recall one claim to prevent over-claiming beyond the available memory.
+ *
+ * As part of offline_page(), reserve_offlined_page() should recall the
+ * needed claims to not exceed the number of pages that are are remaining.
+ */
+static void test_offlining_with_node_claims(int mfn)
+{
+    struct page_info *page = test_pages + mfn;
+    uint32_t status = 0;
+    memory_claim_t claims[1] = { {.pages = 3, .target = node0} };
+
+    /* PREPARE */
+    test_page_list_add_buddy(page, order2); /* Add a buddy with 4 free pages*/
+    ASSERT(domain_install_claim_set(dom1, ARRAY_SIZE(claims), claims) == 0);
+    ASSERT(offline_page(mfn + 3, 0, &status) == 0); /* Offline the 1st page */
+    ASSERT(status & PG_OFFLINE_OFFLINED);
+    CHECK(TOTAL_CLAIMS == 3, "Still 3 claims before offlining the 2nd page");
+
+    /* ACT */
+    /* Offlining the 2nd page must reduce the free pages and claims to 2 */
+    ASSERT(offline_page(mfn + 1, 0, &status) == 0); /* Offline the 2nd page */
+    ASSERT(status & PG_OFFLINE_OFFLINED);
+
+    /* ASSERT */
+    CHECK_BUDDY(page, "After offlining the 2nd page");
+    CHECK(FREE_PAGES == 2, "Expect 2 free pages after offlining two pages");
+    EXPECTED_TO_FAIL_BEGIN();
+    CHECK(TOTAL_CLAIMS == 2, "Expect 2 claims after offlining two pages");
+    EXPECTED_TO_FAIL_END(1);
+}
+
+int main(int argc, char *argv[])
+{
+    const char *topic = "Test offlining with memory claims";
+    const char *program_name = parse_args(argc, argv, topic);
+
+    if ( !program_name )
+        return EXIT_FAILURE;
+
+    init_page_alloc_tests();
+
+    RUN_TESTCASE(OWGC, test_offlining_with_global_claims, 0);
+    RUN_TESTCASE(OWNC, test_offlining_with_node_claims, 0);
+
+    return testcase_print_summary(program_name);
+}
+
+/*
+ * Local variables:
+ * mode: C
+ * c-file-style: "BSD"
+ * c-basic-offset: 4
+ * indent-tabs-mode: nil
+ * End:
+ */
-- 
2.39.5



From xen-devel-bounces@lists.xenproject.org Wed Apr 15 17:50:27 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 15 Apr 2026 17:50:27 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1282779.1565251 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wD4Nf-00041i-FZ; Wed, 15 Apr 2026 17:50:27 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1282779.1565251; Wed, 15 Apr 2026 17: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 1wD4Nf-00041a-Ch; Wed, 15 Apr 2026 17:50:27 +0000
Received: by outflank-mailman (input) for mailman id 1282779;
 Wed, 15 Apr 2026 17:50:26 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <bernhard.kaindl@citrix.com>) id 1wD4Ne-000419-NP
 for xen-devel@lists.xenproject.org; Wed, 15 Apr 2026 17:50:26 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wD4Ne-003Aog-49
 for xen-devel@lists.xenproject.org; Wed, 15 Apr 2026 19:50:26 +0200
Received: from [10.42.69.8] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <bernhard.kaindl@citrix.com>)
 id 69dfcfdf-bab6-0a2a0a5309dd-0a2a4508c2ca-14
 for <xen-devel@lists.xenproject.org>; Wed, 15 Apr 2026 19:50:26 +0200
Received: from [160.101.131.8] (helo=na1pdmzitismtp01.tibco.com)
 by tlsNG-c1860d.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.0)
 (envelope-from <bernhard.kaindl@citrix.com>)
 id 69dfcfe1-fab6-0a2a45080019-a06583088420-3
 for <xen-devel@lists.xenproject.org>; Wed, 15 Apr 2026 19:50:25 +0200
Received: from debian.eng.citrite.net (unknown [10.113.40.46])
 by na1pdmzitismtp01.tibco.com (Postfix) with ESMTP id A982A4290110;
 Wed, 15 Apr 2026 13:49:41 -0400 (EDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-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: Bernhard Kaindl <bernhard.kaindl@citrix.com>
To: xen-devel@lists.xenproject.org
Cc: Bernhard Kaindl <bernhard.kaindl@citrix.com>,
	Anthony PERARD <anthony.perard@vates.tech>,
	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=20Pau=20Monn=C3=A9?= <roger.pau@citrix.com>,
	Stefano Stabellini <sstabellini@kernel.org>
Subject: [PATCH 4/4] xen/mm: Recall claims when offlining pages if needed
Date: Wed, 15 Apr 2026 18:34:59 +0100
Message-Id: <c9f2ceb6568223302a0dd92f9681de89953fe00b.1776273656.git.bernhard.kaindl@citrix.com>
X-Mailer: git-send-email 2.39.5
In-Reply-To: <cover.1776273656.git.bernhard.kaindl@citrix.com>
References: <cover.1776273656.git.bernhard.kaindl@citrix.com>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit
X-purgate-ID: tlsNG-c1860d/1776275426-7694D497-AB44D8E1/0/0
X-purgate-type: clean
X-purgate-size: 4038

Fix a bug where offlining pages could cause an unsigned underflow
in total_avail_pages - outstanding_claims, leading to incorrect
claim behavior.

This issue arises when outstanding claims are close to the total
available pages. It occurse when domain_set_outstanding_claims()
and domain_install_claim_set effectively do this:

 unsigned long avail_pages = total_avail_pages - outstanding_claims;

When this unsigned subtraction underflows, staking claims can succeed
even when there is insufficient unclaimed memory for the new claim.
This leads to a state where claims always succeed, regardless of
actual memory availability.

To prevent this, recall claims when offlining pages if needed to maintain
equilibrium between `total_avail_pages` and outstanding claims for global
and for per-NUMA-node claims.

Signed-off-by: Bernhard Kaindl <bernhard.kaindl@citrix.com>
---
 tools/tests/alloc/test-offlining-claims.c |  4 ---
 xen/common/page_alloc.c                   | 42 +++++++++++++++++++++++
 2 files changed, 42 insertions(+), 4 deletions(-)

diff --git a/tools/tests/alloc/test-offlining-claims.c b/tools/tests/alloc/test-offlining-claims.c
index d22d270ceeb4..0844c792e740 100644
--- a/tools/tests/alloc/test-offlining-claims.c
+++ b/tools/tests/alloc/test-offlining-claims.c
@@ -41,9 +41,7 @@ static void test_offlining_with_global_claims(int mfn)
     /* ASSERT */
     CHECK_BUDDY(page, "After offlining the 2nd page");
     CHECK(FREE_PAGES == 2, "Expect 2 free pages after offlining two pages");
-    EXPECTED_TO_FAIL_BEGIN();
     CHECK(TOTAL_CLAIMS == 2, "Expect 2 claims after offlining two pages");
-    EXPECTED_TO_FAIL_END(1);
 }
 
 
@@ -75,9 +73,7 @@ static void test_offlining_with_node_claims(int mfn)
     /* ASSERT */
     CHECK_BUDDY(page, "After offlining the 2nd page");
     CHECK(FREE_PAGES == 2, "Expect 2 free pages after offlining two pages");
-    EXPECTED_TO_FAIL_BEGIN();
     CHECK(TOTAL_CLAIMS == 2, "Expect 2 claims after offlining two pages");
-    EXPECTED_TO_FAIL_END(1);
 }
 
 int main(int argc, char *argv[])
diff --git a/xen/common/page_alloc.c b/xen/common/page_alloc.c
index 6101bd6be9a9..adedf6fae590 100644
--- a/xen/common/page_alloc.c
+++ b/xen/common/page_alloc.c
@@ -1575,6 +1575,48 @@ static int reserve_offlined_page(struct page_info *head)
         count++;
     }
 
+    if ( count )
+    {
+        long recall_pages;
+        struct domain *d;
+
+        /* Ensure that claims on the node are in line with its free memory. */
+        recall_pages = node_outstanding_claims[node] - node_avail_pages[node];
+        if ( recall_pages > 0 )
+            /*
+             * node_avail_pages slipped below node_outstanding_claims.
+             * We need to recall claimed pages until the amount of claimed
+             * memory is in line with the amount of available memory again.
+             */
+            for_each_domain ( d )
+            {
+                if ( d->claims[node] )
+                {
+                    recall_pages -= deduct_node_claims(d, node, recall_pages);
+                    if ( recall_pages <= 0 )
+                        break;
+                }
+            }
+
+        /* Ensure that outstanding claims are in line with available memory. */
+        recall_pages = outstanding_claims - total_avail_pages;
+        if ( recall_pages > 0 )
+            /*
+             * total_avail_pages slipped below outstanding_claims.
+             * We need to recall claimed pages until the amount of claimed
+             * memory is in line with the amount of available memory again.
+             */
+            for_each_domain ( d )
+            {
+                if ( d->global_claims )
+                {
+                    recall_pages -= deduct_global_claims(d, recall_pages);
+                    if ( recall_pages <= 0 )
+                        break;
+                }
+            }
+    }
+
     return count;
 }
 
-- 
2.39.5



From xen-devel-bounces@lists.xenproject.org Wed Apr 15 17:59:49 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 15 Apr 2026 17:59:49 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1282833.1565262 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wD4Wc-0004tY-Dn; Wed, 15 Apr 2026 17:59:42 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1282833.1565262; Wed, 15 Apr 2026 17:59: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 1wD4Wc-0004tR-9g; Wed, 15 Apr 2026 17:59:42 +0000
Received: by outflank-mailman (input) for mailman id 1282833;
 Wed, 15 Apr 2026 17:59:41 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <marmarek@invisiblethingslab.com>) id 1wD4Wb-0004tL-4r
 for xen-devel@lists.xenproject.org; Wed, 15 Apr 2026 17:59:41 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wD4Wa-00Fo2C-Hx
 for xen-devel@lists.xenproject.org; Wed, 15 Apr 2026 19:59:40 +0200
Received: from [10.42.69.8] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <marmarek@invisiblethingslab.com>)
 id 69dfd1f9-2eae-0a2a0a5409dd-0a2a4508c85a-26
 for <xen-devel@lists.xenproject.org>; Wed, 15 Apr 2026 19:59:40 +0200
Received: from [202.12.124.151] (helo=fout-b8-smtp.messagingengine.com)
 by tlsNG-c1860d.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.0)
 (envelope-from <marmarek@invisiblethingslab.com>)
 id 69dfd20b-fab6-0a2a45080019-ca0c7c97d1bb-3
 for <xen-devel@lists.xenproject.org>; Wed, 15 Apr 2026 19:59:40 +0200
Received: from phl-compute-05.internal (phl-compute-05.internal [10.202.2.45])
 by mailfout.stl.internal (Postfix) with ESMTP id BEBBF1D00178;
 Wed, 15 Apr 2026 13:59:38 -0400 (EDT)
Received: from phl-frontend-03 ([10.202.2.162])
 by phl-compute-05.internal (MEProxy); Wed, 15 Apr 2026 13:59:39 -0400
Received: by mail.messagingengine.com (Postfix) with ESMTPA; Wed,
 15 Apr 2026 13:59:36 -0400 (EDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@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=1776275978;
	 x=1776362378; bh=TItQ1Z10KOZDPzGlEFaeVgGZZIHK2+KajL7t9C/o4mM=; b=
	Tec/2A3sBHuO8GSwNUPExGaG222ls2FUa7QbrgjUx/BRV0KjsHWwf4orU6AwO7v9
	RW8CojmfHvMrYaIkYfFNkw5xB/oQ0cbsEUIJd8WSyq9ne37Cz0L+pswKB9PP9318
	sYJVY+WZZntJayMu5ndQ+P/IWsEzR4wa/p431dY6RTsVA1WjnZke9e+hJ7pH9fyL
	hPK+xTWf08mkOWr7OXlGU3+c4zYBr82jBKH3c243NtrpKQzGwJzM4ga7EpagmIhX
	OlJ/v+JCPm1CWDdGzOUsbwV/swkzQJvfqpnyEUEIyC7AgFfEhjb/IdgM7j/j+pnf
	GEr2zhFrlW0S/+KyLbfn4A==
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=
	1776275978; x=1776362378; bh=TItQ1Z10KOZDPzGlEFaeVgGZZIHK2+KajL7
	t9C/o4mM=; b=YNUrjIXRcY5lhC+BYaYk22i8ZxTm8f6l1V9mN0qGroCF37mz7Jn
	u35+susCAjvqwxPvrkh3CsC597TMlxqAXi5IJerrI0MrKsLm3rjOcvSX19hm425s
	UZ+JIUqBWIQbxW1cEqYE+dSoxDz/n6UvUHbb5mBcQwEP1c3acDO+x6cvKLgKJ0wy
	c6IsoeHBj9IOTdNQ+RmD6oejqsDBxMfFE+l/StB+zl4op+t7Ud5BDZ+0ijoSltJ+
	VzrbJTK9ZTWdEHGurtfgQaOz14T+bWATWj82/HOannUdHshWIUSMzTMI5rVTisqZ
	4TxntLnBnaGBwwMCxVy2QOCY1yEJ/vp36wQ==
X-ME-Sender: <xms:CtLfaWGIWzlpVZUOIdW0u_5q_tsLVvMM-qhP-z5sicPWVTKQazg17w>
    <xme:CtLfaeMdGZt-4NxMTCWlc8XVvvDR8J2JK2IeIXLh4xplhQCgeAnbjOymV5s3Tzftp
    I0JFIWt9Vuo2xsOYg7_ZtM82q63X3CK5Ty4-fNOdyq8wUNp0A>
X-ME-Received: <xmr:CtLfaYc-4qQOquA5331iOaS5EHk5eLUuWLvd4_EZk6z5Qqld7rWIHtltq47->
X-ME-Proxy-Cause: gggruggvucftvghtrhhoucdtuddrgeefhedrtddtgdeggeejhecutefuodetggdotefrod
    ftvfcurfhrohhfihhlvgemucfhrghsthforghilhdpuffrtefokffrpgfnqfghnecuuegr
    ihhlohhuthemuceftddtnecusecvtfgvtghiphhivghnthhsucdlqddutddtmdenucfjug
    hrpeffhffvvefukfhfgggtuggjsehgtderredttdejnecuhfhrohhmpeforghrvghkucfo
    rghrtgiihihkohifshhkihdqifpkrhgvtghkihcuoehmrghrmhgrrhgvkhesihhnvhhish
    hisghlvghthhhinhhgshhlrggsrdgtohhmqeenucggtffrrghtthgvrhhnpefgudelteef
    vefhfeehieetleeihfejhfeludevteetkeevtedtvdegueetfeejudenucevlhhushhtvg
    hrufhiiigvpedtnecurfgrrhgrmhepmhgrihhlfhhrohhmpehmrghrmhgrrhgvkhesihhn
    vhhishhisghlvghthhhinhhgshhlrggsrdgtohhmpdhnsggprhgtphhtthhopeehpdhmoh
    guvgepshhmthhpohhuthdprhgtphhtthhopegrnhhthhhonhihrdhpvghrrghrugesvhgr
    thgvshdrthgvtghhpdhrtghpthhtohepgigvnhdquggvvhgvlheslhhishhtshdrgigvnh
    hprhhojhgvtghtrdhorhhgpdhrtghpthhtoheprghnughrvgifrdgtohhophgvrhefsegt
    ihhtrhhigidrtghomhdprhgtphhtthhopehsshhtrggsvghllhhinhhisehkvghrnhgvlh
    drohhrghdprhgtphhtthhopehrohhgvghrrdhprghusegtihhtrhhigidrtghomh
X-ME-Proxy: <xmx:CtLfabsTl7RWx73OfT0q9OnsTU04nDvDn5cnX_Ki1MO7oF5xh83JJA>
    <xmx:CtLfaZklhy900oHUV-lLcHOssFExGpzdIIvZ3BVLV5508jnvXDnMTQ>
    <xmx:CtLfadzRWgMWNZbekdIAh_Nzxomx6IlV65DJO2Hz0WyygGa8hUlzfw>
    <xmx:CtLfabNKQJug3uIiHLU2b7a2rKxQiC_oayzxbWJHE0ehuxHaGoC3Mw>
    <xmx:CtLfaZ2_FuF01yqkZlzDdy6uFcvSUPhfipWTx6f5BeDjGKfkQJqSkvSC>
Feedback-ID: i1568416f:Fastmail
Date: Wed, 15 Apr 2026 19:59:34 +0200
From: Marek =?utf-8?Q?Marczykowski-G=C3=B3recki?= <marmarek@invisiblethingslab.com>
To: Anthony PERARD <anthony.perard@vates.tech>
Cc: xen-devel@lists.xenproject.org,
	Andrew Cooper <andrew.cooper3@citrix.com>,
	Stefano Stabellini <sstabellini@kernel.org>,
	Roger Pau =?utf-8?B?TW9ubsOp?= <roger.pau@citrix.com>
Subject: Re: [PATCH test-artifacts v3 03/13] Add debian rootfs artifact
Message-ID: <ad_SBvYvvFmOspSQ@mail-itl>
References: <cover.bd2e5bd58e4b316c9c1042b1ca8db51b81fb7ea7.1774999132.git-series.marmarek@invisiblethingslab.com>
 <ad97jcRfLG7nXk29@l14>
MIME-Version: 1.0
Content-Type: multipart/signed; micalg=pgp-sha256;
	protocol="application/pgp-signature"; boundary="iO2MMPZnQIZUJ200"
Content-Disposition: inline
In-Reply-To: <ad97jcRfLG7nXk29@l14>
X-purgate-ID: tlsNG-c1860d/1776275980-F5358497-608B4827/0/0
X-purgate-type: clean
X-purgate-size: 4493


--iO2MMPZnQIZUJ200
Content-Type: text/plain; protected-headers=v1; charset=utf-8
Content-Disposition: inline
Content-Transfer-Encoding: quoted-printable
Date: Wed, 15 Apr 2026 19:59:34 +0200
From: Marek =?utf-8?Q?Marczykowski-G=C3=B3recki?= <marmarek@invisiblethingslab.com>
To: Anthony PERARD <anthony.perard@vates.tech>
Cc: xen-devel@lists.xenproject.org,
	Andrew Cooper <andrew.cooper3@citrix.com>,
	Stefano Stabellini <sstabellini@kernel.org>,
	Roger Pau =?utf-8?B?TW9ubsOp?= <roger.pau@citrix.com>
Subject: Re: [PATCH test-artifacts v3 03/13] Add debian rootfs artifact

On Wed, Apr 15, 2026 at 11:50:38AM +0000, Anthony PERARD wrote:
> I'm commenting on changes I found in the branch used by the pipeline
> linked in the cover leter, since there's no copy on the mailing list of
> the patch :-( (overzealous spam filter).
>=20
> > diff --git a/scripts/debian-rootfs.sh b/scripts/debian-rootfs.sh
> > new file mode 100755
> > index 000000000000..7cb8a96e39c0
> > --- /dev/null
> > +++ b/scripts/debian-rootfs.sh
> ...
> > +PKGS=3D(
> > +    # System
> > +    bridge-utils
> > +    dropbear
> > +    udev
> > +    systemd-sysv
> > +    iproute2
> > +    inetutils-ping
> > +    util-linux
> > +    cpio
>=20
> Is `cpio` going to be used in dom0? The alpine rootfs don't have it.

Alpine does have it, via busybox. That said, I don't see it used in any
current test.

> > +# don't need persistent logging, avoid journal flush service
> > +rmdir var/log/journal
>=20
> I think this would better be done with:
>=20
>     cat >> /etc/systemd/journald.conf.d/storage.conf <<EOF
>     [Journal]
>     Storage=3Dvolatile
>     EOF
>=20
> because I think systemd intend to change the behavior in future release,
> and we are more explicit with a config file.

+1=20

> > +# Create rootfs
> > +cd /
> > +{
> > +    PATHS=3D"bin etc home init lib lib64 mnt opt root sbin srv tmp usr=
 var"
> > +    find $PATHS -print0
> > +    echo -ne "dev\0proc\0run\0sys\0"
> > +} | cpio -0 -H newc -o | gzip > "${COPYDIR}/rootfs.cpio.gz"
>=20
> You should add "-R0:0" to the `cpio` command, like we do for the alpine
> rootfs.

Hm, I'm not sure if that's a good idea. There are a few intentionally
non-root files in Debian. Right now that is:

-rw-r-----   1 root     42            496 Apr  1 01:08 etc/gshadow
-rw-r-----   1 root     42            564 Apr  1 01:08 etc/shadow
-rw-r-----   1 root     42            444 Apr  1 01:08 etc/gshadow-
-rw-r-----   1 root     42            565 Apr  1 01:08 etc/shadow-
-rwxr-sr-x   1 root     42          31256 Apr 19  2025 usr/bin/expiry
-rwxr-sr-x   1 root     42         113848 Apr 19  2025 usr/bin/chage
-rwsr-xr--   1 root     printadm    51272 Mar  8  2025 usr/lib/dbus-1.0/dbu=
s-daemon-launch-helper
-rwxr-sr-x   1 root     42          43256 Jun 29  2025 usr/sbin/unix_chkpwd
drwxr-xr-x   2 systemd- systemd-        0 Apr  1 01:08 var/lib/systemd/netw=
ork
drwxr-xr-x   2 42       root            0 Apr  1 01:07 var/lib/apt/lists/au=
xfiles
drwx------   2 42       root            0 Apr  1 01:07 var/lib/apt/lists/pa=
rtial
drwxrwsr-x   2 root     mem             0 Sep  8  2025 var/mail
-rw-rw-r--   1 root     43              0 Sep  8  2025 var/log/wtmp
-rw-rw-r--   1 root     43              0 Sep  8  2025 var/log/lastlog
-rw-rw----   1 root     43              0 Sep  8  2025 var/log/btmp
-rw-r-----   1 root     adm         31508 Apr  1 01:08 var/log/apt/term.log
drwx------   2 42       root            0 Apr  1 01:08 var/cache/apt/archiv=
es/partial

While it _might_ not explode right now if we reset it to root, it may
cause issues in the future (for example APT likes to run downloads as
unprivileged user, with write access only to
/var/lib/apt/lists/partial).

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

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

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

iQEzBAEBCAAdFiEEhrpukzGPukRmQqkK24/THMrX1ywFAmnf0gYACgkQ24/THMrX
1yywJAf9Hox59QX1bPfUoIvyEWf6brJupObK9u+k+Palml7/JlBzUPBjOEx9kRXk
xOq1PQztrcF67Bah2eiGDSPPB8/DkLRNLUXUXRmMRzWIvFSonmYOTqx5MdEjUUiP
dA7iPxyK0/1w/GQ7aL+ZrmUCHgoceX/0U90hst0Vj9J44t2+whMpPi8qq8NpJdyZ
itoewc1fKyNvyz/b49Ao3v8lfNZ+MXL0hm3qiFYYdEzMTHagStlggr2+GcrcxoMt
SXc/jJY/YbUGerEZLcISuoaz2yRZ3gUsoovJQaqj2R4xp04PUZOLAhxTgsP+defN
kQjM5bxi1ESRIPgEsgBWG9rlSaJIDA==
=wwwp
-----END PGP SIGNATURE-----

--iO2MMPZnQIZUJ200--


From xen-devel-bounces@lists.xenproject.org Wed Apr 15 22:39:24 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 15 Apr 2026 22:39:24 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1282908.1565270 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wD8t0-0005RK-45; Wed, 15 Apr 2026 22:39:06 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1282908.1565270; Wed, 15 Apr 2026 22:39: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 1wD8sz-0005R5-VN; Wed, 15 Apr 2026 22:39:05 +0000
Received: by outflank-mailman (input) for mailman id 1282908;
 Wed, 15 Apr 2026 22:39:04 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <pr-tracker-bot@kernel.org>) id 1wD8sy-0005Qz-4v
 for xen-devel@lists.xenproject.org; Wed, 15 Apr 2026 22:39:04 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wD8sw-00E5Hm-U4
 for xen-devel@lists.xenproject.org; Thu, 16 Apr 2026 00:39:02 +0200
Received: from [10.42.69.9] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <pr-tracker-bot@kernel.org>)
 id 69e012c8-5cb7-0a2a0a5109dd-0a2a4509e116-46
 for <xen-devel@lists.xenproject.org>; Thu, 16 Apr 2026 00:39:02 +0200
Received: from [172.234.252.31] (helo=sea.source.kernel.org)
 by tlsNG-bad1c0.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.0)
 (envelope-from <pr-tracker-bot@kernel.org>)
 id 69e01385-bf79-0a2a45090019-aceafc1fcc34-3
 for <xen-devel@lists.xenproject.org>; Thu, 16 Apr 2026 00:39:02 +0200
Received: from smtp.kernel.org (transwarp.subspace.kernel.org [100.75.92.58])
 by sea.source.kernel.org (Postfix) with ESMTP id B2D6443EE4;
 Wed, 15 Apr 2026 22:39:00 +0000 (UTC)
Received: by smtp.kernel.org (Postfix) with ESMTPSA id 913CFC19424;
 Wed, 15 Apr 2026 22:39:00 +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
 02E1F380A963; Wed, 15 Apr 2026 22:38: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=k20201202 header.d=kernel.org header.i="@kernel.org" header.h="Subject:From:In-Reply-To:References:Date:To:Cc"
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org;
	s=k20201202; t=1776292740;
	bh=u4aKVvdutaNNPEDn+NYqz5QpfufNxXnKjBN8Ribs3ZQ=;
	h=Subject:From:In-Reply-To:References:Date:To:Cc:From;
	b=IT48Gtjyce80EYKaU8/WL2Tpivb8lzW34m5HhRTrKjRR2+v327S0Kil1B7g/V9a7x
	 vuK1vNkL1Rzxgpg1vJldi5e2aAtfFaplU2pSEup/Z62cbLQcxz6hkkHzpxCiJh9cvT
	 B4BZV0ouNttUSlBHmKiSxa2IUE1Sy/22rxiQDoUeV1fQ9QoFBr/yx06POw8vhWL8qu
	 U8D/MX5fgodYbLjMSWOiMYU9Xp1XrdEL2ik0Bke8OGZ/usse/zBsh1bXsyfJaJ1Xo5
	 IlmcdwzDTc/r0oUmAnv4FihOlHflZJTSnobqO8Ecfh7ERqXWoHAW25SM0OUXoQzcmr
	 MpA4467VzqfoA==
Subject: Re: [GIT PULL] xen: branch for v7.1-rc1
From: pr-tracker-bot@kernel.org
In-Reply-To: <20260412062202.627248-1-jgross@suse.com>
References: <20260412062202.627248-1-jgross@suse.com>
X-PR-Tracked-List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
X-PR-Tracked-Message-Id: <20260412062202.627248-1-jgross@suse.com>
X-PR-Tracked-Remote: git://git.kernel.org/pub/scm/linux/kernel/git/xen/tip.git for-linus-7.1-rc1-tag
X-PR-Tracked-Commit-Id: 3f100dd61ad4ee7c1fb6a44775a928dcdba7515b
X-PR-Merge-Tree: torvalds/linux.git
X-PR-Merge-Refname: refs/heads/master
X-PR-Merge-Commit-Id: 83964553e8a94217edf961994ea0ca722d297447
Message-Id: <177629270956.2482053.15639149570997116080.pr-tracker-bot@kernel.org>
Date: Wed, 15 Apr 2026 22:38:29 +0000
To: Juergen Gross <jgross@suse.com>
Cc: torvalds@linux-foundation.org, linux-kernel@vger.kernel.org, xen-devel@lists.xenproject.org, sstabellini@kernel.org
X-purgate-ID: tlsNG-bad1c0/1776292742-54B58152-9B4BF6EB/0/0
X-purgate-type: clean
X-purgate-size: 362

The pull request you sent on Sun, 12 Apr 2026 08:22:02 +0200:

> git://git.kernel.org/pub/scm/linux/kernel/git/xen/tip.git for-linus-7.1-rc1-tag

has been merged into torvalds/linux.git:
https://git.kernel.org/torvalds/c/83964553e8a94217edf961994ea0ca722d297447

Thank you!

-- 
Deet-doot-dot, I am a bot.
https://korg.docs.kernel.org/prtracker.html


From xen-devel-bounces@lists.xenproject.org Wed Apr 15 23:27:56 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 15 Apr 2026 23:27:56 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1282922.1565279 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wD9e9-0003ZU-GK; Wed, 15 Apr 2026 23:27:49 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1282922.1565279; Wed, 15 Apr 2026 23:27: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 1wD9e9-0003ZN-Dl; Wed, 15 Apr 2026 23:27:49 +0000
Received: by outflank-mailman (input) for mailman id 1282922;
 Wed, 15 Apr 2026 23:27:48 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <demiobenour@gmail.com>) id 1wD9e8-0003ZH-Jw
 for xen-devel@lists.xenproject.org; Wed, 15 Apr 2026 23:27:48 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wD9e8-003kVm-0n
 for xen-devel@lists.xenproject.org; Thu, 16 Apr 2026 01:27:48 +0200
Received: from [10.42.69.5] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <demiobenour@gmail.com>)
 id 69e01ef3-2eae-0a2a0a5409dd-0a2a45059de4-2
 for <xen-devel@lists.xenproject.org>; Thu, 16 Apr 2026 01:27:47 +0200
Received: from [74.125.224.47] (helo=mail-yx1-f47.google.com)
 by tlsNG-c201ff.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.0)
 (envelope-from <demiobenour@gmail.com>)
 id 69e01ef2-3760-0a2a45050019-4a7de02fe84c-3
 for <xen-devel@lists.xenproject.org>; Thu, 16 Apr 2026 01:27:47 +0200
Received: by mail-yx1-f47.google.com with SMTP id
 956f58d0204a3-64d5a7926cfso7078547d50.2
 for <xen-devel@lists.xenproject.org>; Wed, 15 Apr 2026 16:27:47 -0700 (PDT)
Received: from [10.138.34.110]
 (h96-60-57-129.cncrtn.broadband.dynamic.tds.net. [96.60.57.129])
 by smtp.gmail.com with ESMTPSA id
 956f58d0204a3-652e4508655sm1421019d50.7.2026.04.15.16.27.44
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Wed, 15 Apr 2026 16:27:44 -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=20251104 header.d=gmail.com header.i="@gmail.com" header.h="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=gmail.com; s=20251104; t=1776295666; x=1776900466; darn=lists.xenproject.org;
        h=autocrypt:subject:from:cc:to:content-language:user-agent
         :mime-version:date:message-id:from:to:cc:subject:date:message-id
         :reply-to;
        bh=imz3KCjPXDAeJK06QDpjVtxLVaZQKFSQV7ZyOqZpsjU=;
        b=AAl/I0LUNX6ipMZWFkNu4BCEejOaNWZytZ75Ax8RAwQotKStJbmiXNyJZ0yu1czAcp
         cBU2UJQBxLeyoYuiYI8XZX090Y0ggB0kiPh06hsYW9toGshWWqX+1VPXraqtq60CIIyT
         Oh4o+zZoMbCcBFm7T2AE8gKDvj13A8FxLDVCFsih1F9ZDAxVCQacef8/dTfLO5pxmDei
         U+u2DKEjgWEkASQjoZmqgvC5JKb7IEAQa9J3SKghBSTCc9aS7A0HY4aJP61snMAyTfYa
         9qcgPEvwo7sXSRV0l1GKb2aGyld/CElncfsqvl92eLA24sSuAz1foX7ZwNGRDfXxLsYL
         5LtQ==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20251104; t=1776295666; x=1776900466;
        h=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;
        bh=imz3KCjPXDAeJK06QDpjVtxLVaZQKFSQV7ZyOqZpsjU=;
        b=rkEmUi+QlJpKpX//YVHBBxEPUFOXvIqjvsL75p+vTOCP97eII/qAS6Kla5ihFYt7L0
         pK8ziINeWT/qmqKt6Z2osTQRpzwPG3BcAR96pB831LcjYAk1uKoteFNkZBJWwi9BcAGF
         mvnsJFzpdhLum4vevRO47Pp36rCtQtc/F/g8rB+MmbxjLNdRRL34ihjLxci++GWi18ma
         q4pDsJbGlpcKtGQW79Boq2CR37UhGhuhFdoYcxGysrHOBFdvH0D2aTt01SGv0G1b8E22
         QbleqnJcfc8lXjiwJJwMFzY8878MtVES1QnaH2RlZxTBRH+NvVms6FdNzvVdXIxJPCAO
         zqOA==
X-Forwarded-Encrypted: i=1; AFNElJ8i8dAZFU1+2GBSlceMnYhHRwL/RKIzOsY0RUyMzuyxWTDx1iuHTMASK8QglNnDamB4mfnsRZbUhP4=@lists.xenproject.org
X-Gm-Message-State: AOJu0YyCSF6MuE21yzUFU6z4oowHT8eLjxZrqOs4PiSjmwqfx5Hq9i7n
	nWhI4dOxOFb+yvgY01YK2nQj4hymxI0hy5hvgRLX1D0IEihiWSLYcCqF
X-Gm-Gg: AeBDiev+YrRbcfH3BVri7bHNZSDyTOxuw4Q3s5o0uBsQQeRYz5g7NaZcgJqlT/r8CJF
	nzX6PXiWE2/DSw3voAg3AqnvJXhyyf/VtBlC6HZaSBdS7ckdEz1gEKqRbDm3rACFUlirRArkaBc
	umJ8OXqfsvQsNvfAvAIqa65Wz3p3i7nNaKEnn2jB+e5giuCvOCJoG+IPRy5lTQrgRgivoQk7cES
	18p7AghNUaP2n1zXZ8YS4qc84+lY0JMwSkSboHBo4nYVVSc3lU50dpS5nSTmGL4dmyRbODbYLwW
	qlB6oW1ULUo3jGx0VYaUADqxBjwIy9cahtrS4cm/9nfYsRv5OWC9hz3bkupfLtgj5BDrb+91/pZ
	Jxn4NPNgDOoxV3pnyfp9yqcLy/hkAw1DPbcpT48MMdNmo8PL1wPf+cux/hbbwc6dZnhgjSxbgRT
	i8/vyUadOIA2kgRo0ntw6hn2SPzmuIV2irJXrzzqQopMDmzx7HyBq3kQDAK74rx7Me8qi9MyZAG
	3NjJtzW81hAWs+/S3vGOaF2Tm7e4NPeljAFtsPUMR0X+p4=
X-Received: by 2002:a05:690e:1241:b0:651:b13e:f9ef with SMTP id 956f58d0204a3-651b13f1902mr17149939d50.14.1776295665843;
        Wed, 15 Apr 2026 16:27:45 -0700 (PDT)
Message-ID: <a06133f7-3093-4733-9786-bc46c1453e06@gmail.com>
Date: Wed, 15 Apr 2026 19:27:40 -0400
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Content-Language: en-US
To: dri-devel@lists.freedesktop.org,
 Xen developer discussion <xen-devel@lists.xenproject.org>,
 linux-media@vger.kernel.org
Cc: Val Packett <val@invisiblethingslab.com>,
 =?UTF-8?Q?Christian_K=C3=B6nig?= <christian.koenig@amd.com>,
 Suwit Semal <sumit.semwal@linaro.org>
From: Demi Marie Obenour <demiobenour@gmail.com>
Subject: Pinned, non-revocable mappings of VRAM: will bad things happen?
Autocrypt: addr=demiobenour@gmail.com; keydata=
 xsFNBFp+A0oBEADffj6anl9/BHhUSxGTICeVl2tob7hPDdhHNgPR4C8xlYt5q49yB+l2nipd
 aq+4Gk6FZfqC825TKl7eRpUjMriwle4r3R0ydSIGcy4M6eb0IcxmuPYfbWpr/si88QKgyGSV
 Z7GeNW1UnzTdhYHuFlk8dBSmB1fzhEYEk0RcJqg4AKoq6/3/UorR+FaSuVwT7rqzGrTlscnT
 DlPWgRzrQ3jssesI7sZLm82E3pJSgaUoCdCOlL7MMPCJwI8JpPlBedRpe9tfVyfu3euTPLPx
 wcV3L/cfWPGSL4PofBtB8NUU6QwYiQ9Hzx4xOyn67zW73/G0Q2vPPRst8LBDqlxLjbtx/WLR
 6h3nBc3eyuZ+q62HS1pJ5EvUT1vjyJ1ySrqtUXWQ4XlZyoEFUfpJxJoN0A9HCxmHGVckzTRl
 5FMWo8TCniHynNXsBtDQbabt7aNEOaAJdE7to0AH3T/Bvwzcp0ZJtBk0EM6YeMLtotUut7h2
 Bkg1b//r6bTBswMBXVJ5H44Qf0+eKeUg7whSC9qpYOzzrm7+0r9F5u3qF8ZTx55TJc2g656C
 9a1P1MYVysLvkLvS4H+crmxA/i08Tc1h+x9RRvqba4lSzZ6/Tmt60DPM5Sc4R0nSm9BBff0N
 m0bSNRS8InXdO1Aq3362QKX2NOwcL5YaStwODNyZUqF7izjK4QARAQABzTxEZW1pIE1hcmll
 IE9iZW5vdXIgKGxvdmVyIG9mIGNvZGluZykgPGRlbWlvYmVub3VyQGdtYWlsLmNvbT7CwXgE
 EwECACIFAlp+A0oCGwMGCwkIBwMCBhUIAgkKCwQWAgMBAh4BAheAAAoJELKItV//nCLBhr8Q
 AK/xrb4wyi71xII2hkFBpT59ObLN+32FQT7R3lbZRjVFjc6yMUjOb1H/hJVxx+yo5gsSj5LS
 9AwggioUSrcUKldfA/PKKai2mzTlUDxTcF3vKx6iMXKA6AqwAw4B57ZEJoMM6egm57TV19kz
 PMc879NV2nc6+elaKl+/kbVeD3qvBuEwsTe2Do3HAAdrfUG/j9erwIk6gha/Hp9yZlCnPTX+
 VK+xifQqt8RtMqS5R/S8z0msJMI/ajNU03kFjOpqrYziv6OZLJ5cuKb3bZU5aoaRQRDzkFIR
 6aqtFLTohTo20QywXwRa39uFaOT/0YMpNyel0kdOszFOykTEGI2u+kja35g9TkH90kkBTG+a
 EWttIht0Hy6YFmwjcAxisSakBuHnHuMSOiyRQLu43ej2+mDWgItLZ48Mu0C3IG1seeQDjEYP
 tqvyZ6bGkf2Vj+L6wLoLLIhRZxQOedqArIk/Sb2SzQYuxN44IDRt+3ZcDqsPppoKcxSyd1Ny
 2tpvjYJXlfKmOYLhTWs8nwlAlSHX/c/jz/ywwf7eSvGknToo1Y0VpRtoxMaKW1nvH0OeCSVJ
 itfRP7YbiRVc2aNqWPCSgtqHAuVraBRbAFLKh9d2rKFB3BmynTUpc1BQLJP8+D5oNyb8Ts4x
 Xd3iV/uD8JLGJfYZIR7oGWFLP4uZ3tkneDfYzsFNBFp+A0oBEAC9ynZI9LU+uJkMeEJeJyQ/
 8VFkCJQPQZEsIGzOTlPnwvVna0AS86n2Z+rK7R/usYs5iJCZ55/JISWd8xD57ue0eB47bcJv
 VqGlObI2DEG8TwaW0O0duRhDgzMEL4t1KdRAepIESBEA/iPpI4gfUbVEIEQuqdqQyO4GAe+M
 kD0Hy5JH/0qgFmbaSegNTdQg5iqYjRZ3ttiswalql1/iSyv1WYeC1OAs+2BLOAT2NEggSiVO
 txEfgewsQtCWi8H1SoirakIfo45Hz0tk/Ad9ZWh2PvOGt97Ka85o4TLJxgJJqGEnqcFUZnJJ
 riwoaRIS8N2C8/nEM53jb1sH0gYddMU3QxY7dYNLIUrRKQeNkF30dK7V6JRH7pleRlf+wQcN
 fRAIUrNlatj9TxwivQrKnC9aIFFHEy/0mAgtrQShcMRmMgVlRoOA5B8RTulRLCmkafvwuhs6
 dCxN0GNAORIVVFxjx9Vn7OqYPgwiofZ6SbEl0hgPyWBQvE85klFLZLoj7p+joDY1XNQztmfA
 rnJ9x+YV4igjWImINAZSlmEcYtd+xy3Li/8oeYDAqrsnrOjb+WvGhCykJk4urBog2LNtcyCj
 kTs7F+WeXGUo0NDhbd3Z6AyFfqeF7uJ3D5hlpX2nI9no/ugPrrTVoVZAgrrnNz0iZG2DVx46
 x913pVKHl5mlYQARAQABwsFfBBgBAgAJBQJafgNKAhsMAAoJELKItV//nCLBwNIP/AiIHE8b
 oIqReFQyaMzxq6lE4YZCZNj65B/nkDOvodSiwfwjjVVE2V3iEzxMHbgyTCGA67+Bo/d5aQGj
 gn0TPtsGzelyQHipaUzEyrsceUGWYoKXYyVWKEfyh0cDfnd9diAm3VeNqchtcMpoehETH8fr
 RHnJdBcjf112PzQSdKC6kqU0Q196c4Vp5HDOQfNiDnTf7gZSj0BraHOByy9LEDCLhQiCmr+2
 E0rW4tBtDAn2HkT9uf32ZGqJCn1O+2uVfFhGu6vPE5qkqrbSE8TG+03H8ecU2q50zgHWPdHM
 OBvy3EhzfAh2VmOSTcRK+tSUe/u3wdLRDPwv/DTzGI36Kgky9MsDC5gpIwNbOJP2G/q1wT1o
 Gkw4IXfWv2ufWiXqJ+k7HEi2N1sree7Dy9KBCqb+ca1vFhYPDJfhP75I/VnzHVssZ/rYZ9+5
 1yDoUABoNdJNSGUYl+Yh9Pw9pE3Kt4EFzUlFZWbE4xKL/NPno+z4J9aWemLLszcYz/u3XnbO
 vUSQHSrmfOzX3cV4yfmjM5lewgSstoxGyTx2M8enslgdXhPthZlDnTnOT+C+OTsh8+m5tos8
 HQjaPM01MKBiAqdPgksm1wu2DrrwUi6ChRVTUBcj6+/9IJ81H2P2gJk3Ls3AVIxIffLoY34E
 +MYSfkEjBz0E8CLOcAw7JIwAaeBT
Content-Type: multipart/signed; micalg=pgp-sha256;
 protocol="application/pgp-signature";
 boundary="------------JwJpbZ3mHpzXPLUp0B7FWWj5"
X-purgate-ID: tlsNG-c201ff/1776295667-38BE896F-450ED4F7/0/0
X-purgate-type: clean
X-purgate-size: 13809

This is an OpenPGP/MIME signed message (RFC 4880 and 3156)
--------------JwJpbZ3mHpzXPLUp0B7FWWj5
Content-Type: multipart/mixed; boundary="------------j4Zxq0OS2K7J4oc5TzDSXxST";
 protected-headers="v1"
Message-ID: <a06133f7-3093-4733-9786-bc46c1453e06@gmail.com>
Date: Wed, 15 Apr 2026 19:27:40 -0400
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Content-Language: en-US
To: dri-devel@lists.freedesktop.org,
 Xen developer discussion <xen-devel@lists.xenproject.org>,
 linux-media@vger.kernel.org
Cc: Val Packett <val@invisiblethingslab.com>,
 =?UTF-8?Q?Christian_K=C3=B6nig?= <christian.koenig@amd.com>,
 Suwit Semal <sumit.semwal@linaro.org>
From: Demi Marie Obenour <demiobenour@gmail.com>
Subject: Pinned, non-revocable mappings of VRAM: will bad things happen?
Autocrypt: addr=demiobenour@gmail.com; keydata=
 xsFNBFp+A0oBEADffj6anl9/BHhUSxGTICeVl2tob7hPDdhHNgPR4C8xlYt5q49yB+l2nipd
 aq+4Gk6FZfqC825TKl7eRpUjMriwle4r3R0ydSIGcy4M6eb0IcxmuPYfbWpr/si88QKgyGSV
 Z7GeNW1UnzTdhYHuFlk8dBSmB1fzhEYEk0RcJqg4AKoq6/3/UorR+FaSuVwT7rqzGrTlscnT
 DlPWgRzrQ3jssesI7sZLm82E3pJSgaUoCdCOlL7MMPCJwI8JpPlBedRpe9tfVyfu3euTPLPx
 wcV3L/cfWPGSL4PofBtB8NUU6QwYiQ9Hzx4xOyn67zW73/G0Q2vPPRst8LBDqlxLjbtx/WLR
 6h3nBc3eyuZ+q62HS1pJ5EvUT1vjyJ1ySrqtUXWQ4XlZyoEFUfpJxJoN0A9HCxmHGVckzTRl
 5FMWo8TCniHynNXsBtDQbabt7aNEOaAJdE7to0AH3T/Bvwzcp0ZJtBk0EM6YeMLtotUut7h2
 Bkg1b//r6bTBswMBXVJ5H44Qf0+eKeUg7whSC9qpYOzzrm7+0r9F5u3qF8ZTx55TJc2g656C
 9a1P1MYVysLvkLvS4H+crmxA/i08Tc1h+x9RRvqba4lSzZ6/Tmt60DPM5Sc4R0nSm9BBff0N
 m0bSNRS8InXdO1Aq3362QKX2NOwcL5YaStwODNyZUqF7izjK4QARAQABzTxEZW1pIE1hcmll
 IE9iZW5vdXIgKGxvdmVyIG9mIGNvZGluZykgPGRlbWlvYmVub3VyQGdtYWlsLmNvbT7CwXgE
 EwECACIFAlp+A0oCGwMGCwkIBwMCBhUIAgkKCwQWAgMBAh4BAheAAAoJELKItV//nCLBhr8Q
 AK/xrb4wyi71xII2hkFBpT59ObLN+32FQT7R3lbZRjVFjc6yMUjOb1H/hJVxx+yo5gsSj5LS
 9AwggioUSrcUKldfA/PKKai2mzTlUDxTcF3vKx6iMXKA6AqwAw4B57ZEJoMM6egm57TV19kz
 PMc879NV2nc6+elaKl+/kbVeD3qvBuEwsTe2Do3HAAdrfUG/j9erwIk6gha/Hp9yZlCnPTX+
 VK+xifQqt8RtMqS5R/S8z0msJMI/ajNU03kFjOpqrYziv6OZLJ5cuKb3bZU5aoaRQRDzkFIR
 6aqtFLTohTo20QywXwRa39uFaOT/0YMpNyel0kdOszFOykTEGI2u+kja35g9TkH90kkBTG+a
 EWttIht0Hy6YFmwjcAxisSakBuHnHuMSOiyRQLu43ej2+mDWgItLZ48Mu0C3IG1seeQDjEYP
 tqvyZ6bGkf2Vj+L6wLoLLIhRZxQOedqArIk/Sb2SzQYuxN44IDRt+3ZcDqsPppoKcxSyd1Ny
 2tpvjYJXlfKmOYLhTWs8nwlAlSHX/c/jz/ywwf7eSvGknToo1Y0VpRtoxMaKW1nvH0OeCSVJ
 itfRP7YbiRVc2aNqWPCSgtqHAuVraBRbAFLKh9d2rKFB3BmynTUpc1BQLJP8+D5oNyb8Ts4x
 Xd3iV/uD8JLGJfYZIR7oGWFLP4uZ3tkneDfYzsFNBFp+A0oBEAC9ynZI9LU+uJkMeEJeJyQ/
 8VFkCJQPQZEsIGzOTlPnwvVna0AS86n2Z+rK7R/usYs5iJCZ55/JISWd8xD57ue0eB47bcJv
 VqGlObI2DEG8TwaW0O0duRhDgzMEL4t1KdRAepIESBEA/iPpI4gfUbVEIEQuqdqQyO4GAe+M
 kD0Hy5JH/0qgFmbaSegNTdQg5iqYjRZ3ttiswalql1/iSyv1WYeC1OAs+2BLOAT2NEggSiVO
 txEfgewsQtCWi8H1SoirakIfo45Hz0tk/Ad9ZWh2PvOGt97Ka85o4TLJxgJJqGEnqcFUZnJJ
 riwoaRIS8N2C8/nEM53jb1sH0gYddMU3QxY7dYNLIUrRKQeNkF30dK7V6JRH7pleRlf+wQcN
 fRAIUrNlatj9TxwivQrKnC9aIFFHEy/0mAgtrQShcMRmMgVlRoOA5B8RTulRLCmkafvwuhs6
 dCxN0GNAORIVVFxjx9Vn7OqYPgwiofZ6SbEl0hgPyWBQvE85klFLZLoj7p+joDY1XNQztmfA
 rnJ9x+YV4igjWImINAZSlmEcYtd+xy3Li/8oeYDAqrsnrOjb+WvGhCykJk4urBog2LNtcyCj
 kTs7F+WeXGUo0NDhbd3Z6AyFfqeF7uJ3D5hlpX2nI9no/ugPrrTVoVZAgrrnNz0iZG2DVx46
 x913pVKHl5mlYQARAQABwsFfBBgBAgAJBQJafgNKAhsMAAoJELKItV//nCLBwNIP/AiIHE8b
 oIqReFQyaMzxq6lE4YZCZNj65B/nkDOvodSiwfwjjVVE2V3iEzxMHbgyTCGA67+Bo/d5aQGj
 gn0TPtsGzelyQHipaUzEyrsceUGWYoKXYyVWKEfyh0cDfnd9diAm3VeNqchtcMpoehETH8fr
 RHnJdBcjf112PzQSdKC6kqU0Q196c4Vp5HDOQfNiDnTf7gZSj0BraHOByy9LEDCLhQiCmr+2
 E0rW4tBtDAn2HkT9uf32ZGqJCn1O+2uVfFhGu6vPE5qkqrbSE8TG+03H8ecU2q50zgHWPdHM
 OBvy3EhzfAh2VmOSTcRK+tSUe/u3wdLRDPwv/DTzGI36Kgky9MsDC5gpIwNbOJP2G/q1wT1o
 Gkw4IXfWv2ufWiXqJ+k7HEi2N1sree7Dy9KBCqb+ca1vFhYPDJfhP75I/VnzHVssZ/rYZ9+5
 1yDoUABoNdJNSGUYl+Yh9Pw9pE3Kt4EFzUlFZWbE4xKL/NPno+z4J9aWemLLszcYz/u3XnbO
 vUSQHSrmfOzX3cV4yfmjM5lewgSstoxGyTx2M8enslgdXhPthZlDnTnOT+C+OTsh8+m5tos8
 HQjaPM01MKBiAqdPgksm1wu2DrrwUi6ChRVTUBcj6+/9IJ81H2P2gJk3Ls3AVIxIffLoY34E
 +MYSfkEjBz0E8CLOcAw7JIwAaeBT

--------------j4Zxq0OS2K7J4oc5TzDSXxST
Content-Type: multipart/mixed; boundary="------------Ta5juJgfI0DZ27VwkVPMBljQ"

--------------Ta5juJgfI0DZ27VwkVPMBljQ
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: quoted-printable

Is it safe to assume that if a dmabuf exporter cannot handle
non-revocable, pinned importers, it will fail the import?  Or is
using dma_buf_pin() unsafe if one does not know the exporter?

For context, Xen grant tables do not support revocation.  One can ask
the guest to unmap the grants, but if the guest doesn't obey the only
recourse is to ungracefully kill it.  They also do not support page
faults, so the pages must be pinned.  Right now, grant tables don't
support PCI BAR mappings, but that's fixable.

How badly is this going to break with dGPU VRAM, if at all?  I know
that AMDGPU has a fallback when the BAR isn't mappable.  What about
other drivers?  Supporting page faults the way KVM does is going to
be extremely hard, so pinned mappings and DMA transfers are vastly
preferable.
--=20
Sincerely,
Demi Marie Obenour (she/her/hers)

--------------Ta5juJgfI0DZ27VwkVPMBljQ
Content-Type: application/pgp-keys; name="OpenPGP_0xB288B55FFF9C22C1.asc"
Content-Disposition: attachment; filename="OpenPGP_0xB288B55FFF9C22C1.asc"
Content-Description: OpenPGP public key
Content-Transfer-Encoding: quoted-printable

-----BEGIN PGP PUBLIC KEY BLOCK-----

xsFNBFp+A0oBEADffj6anl9/BHhUSxGTICeVl2tob7hPDdhHNgPR4C8xlYt5q49y
B+l2nipdaq+4Gk6FZfqC825TKl7eRpUjMriwle4r3R0ydSIGcy4M6eb0IcxmuPYf
bWpr/si88QKgyGSVZ7GeNW1UnzTdhYHuFlk8dBSmB1fzhEYEk0RcJqg4AKoq6/3/
UorR+FaSuVwT7rqzGrTlscnTDlPWgRzrQ3jssesI7sZLm82E3pJSgaUoCdCOlL7M
MPCJwI8JpPlBedRpe9tfVyfu3euTPLPxwcV3L/cfWPGSL4PofBtB8NUU6QwYiQ9H
zx4xOyn67zW73/G0Q2vPPRst8LBDqlxLjbtx/WLR6h3nBc3eyuZ+q62HS1pJ5EvU
T1vjyJ1ySrqtUXWQ4XlZyoEFUfpJxJoN0A9HCxmHGVckzTRl5FMWo8TCniHynNXs
BtDQbabt7aNEOaAJdE7to0AH3T/Bvwzcp0ZJtBk0EM6YeMLtotUut7h2Bkg1b//r
6bTBswMBXVJ5H44Qf0+eKeUg7whSC9qpYOzzrm7+0r9F5u3qF8ZTx55TJc2g656C
9a1P1MYVysLvkLvS4H+crmxA/i08Tc1h+x9RRvqba4lSzZ6/Tmt60DPM5Sc4R0nS
m9BBff0Nm0bSNRS8InXdO1Aq3362QKX2NOwcL5YaStwODNyZUqF7izjK4QARAQAB
zTxEZW1pIE9iZW5vdXIgKElUTCBFbWFpbCBLZXkpIDxhdGhlbmFAaW52aXNpYmxl
dGhpbmdzbGFiLmNvbT7CwY4EEwEIADgWIQR2h02fEza6IlkHHHGyiLVf/5wiwQUC
X6YJvQIbAwULCQgHAgYVCgkICwIEFgIDAQIeAQIXgAAKCRCyiLVf/5wiwWRhD/0Y
R+YYC5Kduv/2LBgQJIygMsFiRHbR4+tWXuTFqgrxxFSlMktZ6gQrQCWe38WnOXkB
oY6n/5lSJdfnuGd2UagZ/9dkaGMUkqt+5WshLFly4BnP7pSsWReKgMP7etRTwn3S
zk1OwFx2lzY1EnnconPLfPBc6rWG2moA6l0WX+3WNR1B1ndqpl2hPSjT2jUCBWDV
rGOUSX7r5f1WgtBeNYnEXPBCUUM51pFGESmfHIXQrqFDA7nBNiIVFDJTmQzuEqIy
Jl67pKNgooij5mKzRhFKHfjLRAH4mmWZlB9UjDStAfFBAoDFHwd1HL5VQCNQdqEc
/9lZDApqWuCPadZN+pGouqLysesIYsNxUhJ7dtWOWHl0vs7/3qkWmWun/2uOJMQh
ra2u8nA9g91FbOobWqjrDd6x3ZJoGQf4zLqjmn/P514gb697788e573WN/MpQ5XI
Fl7aM2d6/GJiq6LC9T2gSUW4rbPBiqOCeiUx7Kd/sVm41p9TOA7fEG4bYddCfDsN
xaQJH6VRK3NOuBUGeL+iQEVF5Xs6Yp+U+jwvv2M5Lel3EqAYo5xXTx4ls0xaxDCu
fudcAh8CMMqx3fguSb7Mi31WlnZpk0fDuWQVNKyDP7lYpwc4nCCGNKCj622ZSocH
AcQmX28L8pJdLYacv9pU3jPy4fHcQYvmTavTqowGnM08RGVtaSBNYXJpZSBPYmVu
b3VyIChsb3ZlciBvZiBjb2RpbmcpIDxkZW1pb2Jlbm91ckBnbWFpbC5jb20+wsF4
BBMBAgAiBQJafgNKAhsDBgsJCAcDAgYVCAIJCgsEFgIDAQIeAQIXgAAKCRCyiLVf
/5wiwYa/EACv8a2+MMou9cSCNoZBQaU+fTmyzft9hUE+0d5W2UY1RY3OsjFIzm9R
/4SVccfsqOYLEo+S0vQMIIIqFEq3FCpXXwPzyimotps05VA8U3Bd7yseojFygOgK
sAMOAee2RCaDDOnoJue01dfZMzzHPO/TVdp3OvnpWipfv5G1Xg96rwbhMLE3tg6N
xwAHa31Bv4/Xq8CJOoIWvx6fcmZQpz01/lSvsYn0KrfEbTKkuUf0vM9JrCTCP2oz
VNN5BYzqaq2M4r+jmSyeXLim922VOWqGkUEQ85BSEemqrRS06IU6NtEMsF8EWt/b
hWjk/9GDKTcnpdJHTrMxTspExBiNrvpI2t+YPU5B/dJJAUxvmhFrbSIbdB8umBZs
I3AMYrEmpAbh5x7jEjoskUC7uN3o9vpg1oCLS2ePDLtAtyBtbHnkA4xGD7ar8mem
xpH9lY/i+sC6CyyIUWcUDnnagKyJP0m9ks0GLsTeOCA0bft2XA6rD6aaCnMUsndT
ctrab42CV5XypjmC4U1rPJ8JQJUh1/3P48/8sMH+3krxpJ06KNWNFaUbaMTGiltZ
7x9DngklSYrX0T+2G4kVXNmjaljwkoLahwLla2gUWwBSyofXdqyhQdwZsp01KXNQ
UCyT/Pg+aDcm/E7OMV3d4lf7g/CSxiX2GSEe6BlhSz+Lmd7ZJ3g32M1ARGVtaSBN
YXJpZSBPYmVub3VyIChJVEwgRW1haWwgS2V5KSA8ZGVtaUBpbnZpc2libGV0aGlu
Z3NsYWIuY29tPsLBjgQTAQgAOBYhBHaHTZ8TNroiWQcccbKItV//nCLBBQJgOEV+
AhsDBQsJCAcCBhUKCQgLAgQWAgMBAh4BAheAAAoJELKItV//nCLBKwoP/1WSnFdv
SAD0g7fD0WlF+oi7ISFT7oqJnchFLOwVHK4Jg0e4hGn1ekWsF3Ha5tFLh4V/7UUu
obYJpTfBAA2CckspYBqLtKGjFxcaqjjpO1I2W/jeNELVtSYuCOZICjdNGw2Hl9yH
KRZiBkqc9u8lQcHDZKq4LIpVJj6ZQV/nxttDX90ax2No1nLLQXFbr5wb465LAPpU
lXwunYDij7xJGye+VUASQh9datye6orZYuJvNo8Tr3mAQxxkfR46LzWgxFCPEAZJ
5P56Nc0IMHdJZj0Uc9+1jxERhOGppp5jlLgYGK7faGB/jTV6LaRQ4Ad+xiqokDWp
mUOZsmA+bMbtPfYjDZBz5mlyHcIRKIFpE1l3Y8F7PhJuzzMUKkJi90CYakCV4x/a
Zs4pzk5E96c2VQx01RIEJ7fzHF7lwFdtfTS4YsLtAbQFsKayqwkGcVv2B1AHeqdo
TMX+cgDvjd1ZganGlWA8Sv9RkNSMchn1hMuTwERTyFTr2dKPnQdA1F480+jUap41
ClXgn227WkCIMrNhQGNyJsnwyzi5wS8rBVRQ3BOTMyvGM07j3axUOYaejEpg7wKi
wTPZGLGH1sz5GljD/916v5+v2xLbOo5606j9dWf5/tAhbPuqrQgWv41wuKDi+dDD
EKkODF7DHes8No+QcHTDyETMn1RYm7t0RKR4zsFNBFp+A0oBEAC9ynZI9LU+uJkM
eEJeJyQ/8VFkCJQPQZEsIGzOTlPnwvVna0AS86n2Z+rK7R/usYs5iJCZ55/JISWd
8xD57ue0eB47bcJvVqGlObI2DEG8TwaW0O0duRhDgzMEL4t1KdRAepIESBEA/iPp
I4gfUbVEIEQuqdqQyO4GAe+MkD0Hy5JH/0qgFmbaSegNTdQg5iqYjRZ3ttiswalq
l1/iSyv1WYeC1OAs+2BLOAT2NEggSiVOtxEfgewsQtCWi8H1SoirakIfo45Hz0tk
/Ad9ZWh2PvOGt97Ka85o4TLJxgJJqGEnqcFUZnJJriwoaRIS8N2C8/nEM53jb1sH
0gYddMU3QxY7dYNLIUrRKQeNkF30dK7V6JRH7pleRlf+wQcNfRAIUrNlatj9Txwi
vQrKnC9aIFFHEy/0mAgtrQShcMRmMgVlRoOA5B8RTulRLCmkafvwuhs6dCxN0GNA
ORIVVFxjx9Vn7OqYPgwiofZ6SbEl0hgPyWBQvE85klFLZLoj7p+joDY1XNQztmfA
rnJ9x+YV4igjWImINAZSlmEcYtd+xy3Li/8oeYDAqrsnrOjb+WvGhCykJk4urBog
2LNtcyCjkTs7F+WeXGUo0NDhbd3Z6AyFfqeF7uJ3D5hlpX2nI9no/ugPrrTVoVZA
grrnNz0iZG2DVx46x913pVKHl5mlYQARAQABwsFfBBgBAgAJBQJafgNKAhsMAAoJ
ELKItV//nCLBwNIP/AiIHE8boIqReFQyaMzxq6lE4YZCZNj65B/nkDOvodSiwfwj
jVVE2V3iEzxMHbgyTCGA67+Bo/d5aQGjgn0TPtsGzelyQHipaUzEyrsceUGWYoKX
YyVWKEfyh0cDfnd9diAm3VeNqchtcMpoehETH8frRHnJdBcjf112PzQSdKC6kqU0
Q196c4Vp5HDOQfNiDnTf7gZSj0BraHOByy9LEDCLhQiCmr+2E0rW4tBtDAn2HkT9
uf32ZGqJCn1O+2uVfFhGu6vPE5qkqrbSE8TG+03H8ecU2q50zgHWPdHMOBvy3Ehz
fAh2VmOSTcRK+tSUe/u3wdLRDPwv/DTzGI36Kgky9MsDC5gpIwNbOJP2G/q1wT1o
Gkw4IXfWv2ufWiXqJ+k7HEi2N1sree7Dy9KBCqb+ca1vFhYPDJfhP75I/VnzHVss
Z/rYZ9+51yDoUABoNdJNSGUYl+Yh9Pw9pE3Kt4EFzUlFZWbE4xKL/NPno+z4J9aW
emLLszcYz/u3XnbOvUSQHSrmfOzX3cV4yfmjM5lewgSstoxGyTx2M8enslgdXhPt
hZlDnTnOT+C+OTsh8+m5tos8HQjaPM01MKBiAqdPgksm1wu2DrrwUi6ChRVTUBcj
6+/9IJ81H2P2gJk3Ls3AVIxIffLoY34E+MYSfkEjBz0E8CLOcAw7JIwAaeBTzsFN
BGbyLVgBEACqClxh50hmBepTSVlan6EBq3OAoxhrAhWZYEwN78k+ENhK68KhqC5R
IsHzlL7QHW1gmfVBQZ63GnWiraM6wOJqFTL4ZWvRslga9u28FJ5XyK860mZLgYhK
9BzoUk4s+dat9jVUbq6LpQ1Ot5I9vrdzo2p1jtQ8h9WCIiFxSYy8s8pZ3hHh5T64
GIj1m/kY7lG3VIdUgoNiREGf/iOMjUFjwwE9ZoJ26j9p7p1U+TkKeF6wgswEB1T3
J8KCAtvmRtqJDq558IU5jhg5fgN+xHB8cgvUWulgK9FIF9oFxcuxtaf/juhHWKMO
RtL0bHfNdXoBdpUDZE+mLBUAxF6KSsRrvx6AQyJs7VjgXJDtQVWvH0PUmTrEswgb
49nNU+dLLZQAZagxqnZ9Dp5l6GqaGZCHERJcLmdY/EmMzSf5YazJ6c0vO8rdW27M
kn73qcWAplQn5mOXaqbfzWkAUPyUXppuRHfrjxTDz3GyJJVOeMmMrTxH4uCaGpOX
Z8tN6829J1roGw4oKDRUQsaBAeEDqizXMPRc+6U9vI5FXzbAsb+8lKW65G7JWHym
YPOGUt2hK4DdTA1PmVo0DxH00eWWeKxqvmGyX+Dhcg+5e191rPsMRGsDlH6KihI6
+3JIuc0y6ngdjcp6aalbuvPIGFrCRx3tnRtNc7He6cBWQoH9RPwluwARAQABwsOs
BBgBCgAgFiEEdodNnxM2uiJZBxxxsoi1X/+cIsEFAmbyLVgCGwICQAkQsoi1X/+c
IsHBdCAEGQEKAB0WIQSilC2pUlbVp66j3+yzNoc6synyUwUCZvItWAAKCRCzNoc6
synyU85gD/0T1QDtPhovkGwoqv4jUbEMMvpeYQf+oWgm/TjWPeLwdjl7AtY0G9Ml
ZoyGniYkoHi37Gnn/ShLT3B5vtyI58ap2+SSa8SnGftdAKRLiWFWCiAEklm9FRk8
N3hwxhmSFF1KR/AIDS4g+HIsZn7YEMubBSgLlZZ9zHl4O4vwuXlREBEW97iL/FSt
VownU2V39t7PtFvGZNk+DJH7eLO3jmNRYB0PL4JOyyda3NH/J92iwrFmjFWWmmWb
/Xz8l9DIs+Z59pRCVTTwbBEZhcUc7rVMCcIYL+q1WxBG2e6lMn15OQJ5WfiE6E0I
sGirAEDnXWx92JNGx5l+mMpdpsWhBZ5iGTtttZesibNkQfd48/eCgFi4cxJUC4PT
UQwfD9AMgzwSTGJrkI5XGy+XqxwOjL8UA0iIrtTpMh49zw46uV6kwFQCgkf32jZM
OLwLTNSzclbnA7GRd8tKwezQ/XqeK3dal2n+cOr+o+Eka7yGmGWNUqFbIe8cjj9T
JeF3mgOCmZOwMI+wIcQYRSf+e5VTMO6TNWH5BI3vqeHSt7HkYuPlHT0pGum88d4a
pWqhulH4rUhEMtirX1hYx8Q4HlUOQqLtxzmwOYWkhl1C+yPObAvUDNiHCLf9w28n
uihgEkzHt9J4VKYulyJM9fe3ENcyU6rpXD7iANQqcr87ogKXFxknZ97uEACvSucc
RbnnAgRqZ7GDzgoBerJ2zrmhLkeREZ08iz1zze1JgyW3HEwdr2UbyAuqvSADCSUU
GN0vtQHsPzWl8onRc7lOPqPDF8OO+UfN9NAfA4wl3QyChD1GXl9rwKQOkbvdlYFV
UFx9u86LNi4ssTmU8p9NtHIGpz1SYMVYNoYy9NU7EVqypGMguDCL7gJt6GUmA0sw
p+YCroXiwL2BJ7RwRqTpgQuFL1gShkA17D5jK4mDPEetq1d8kz9rQYvAR/sTKBsR
ImC3xSfn8zpWoNTTB6lnwyP5Ng1bu6esS7+SpYprFTe7ZqGZF6xhvBPf1Ldi9UAm
U2xPN1/eeWxEa2kusidmFKPmN8lcT4miiAvwGxEnY7Oww9CgZlUB+LP4dl5VPjEt
sFeAhrgxLdpVTjPRRwTd9VQF3/XYl83j5wySIQKIPXgT3sG3ngAhDhC8I8GpM36r
8WJJ3x2yVzyJUbBPO0GBhWE2xPNIfhxVoU4cGGhpFqz7dPKSTRDGq++MrFgKKGpI
ZwT3CPTSSKc7ySndEXWkOYArDIdtyxdE1p5/c3aoz4utzUU7NDHQ+vVIwlnZSMiZ
jek2IJP3SZ+COOIHCVxpUaZ4lnzWT4eDqABhMLpIzw6NmGfg+kLBJhouqz81WITr
EtJuZYM5blWncBOJCoWMnBEcTEo/viU3GgcVRw=3D=3D
=3Dx94R
-----END PGP PUBLIC KEY BLOCK-----

--------------Ta5juJgfI0DZ27VwkVPMBljQ--

--------------j4Zxq0OS2K7J4oc5TzDSXxST--

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

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

iQIzBAEBCgAdFiEEopQtqVJW1aeuo9/sszaHOrMp8lMFAmngHuwACgkQszaHOrMp
8lMq/xAAl7LvTNF/As4bGkigmyuztUzS5e82d9OaCZa5LM1YS1RcDHaLfwMWR8h7
wj+azaiTFj9OSiMVYukrQlcYMGMMnsYauY/zA6OT0tK1p28+lZyDzxzAYEWRYcn8
xu0avQQ69wERounuPdnRPs2cdiGJj9atMz1OrUkXeVsBnJy73j1TrFUei9WL/pMv
bX3xmQTZIhb4PXlO/0PaXQOrSZrCGM+NzHpzh7XEcq1nSCrbDSIhuTHm8p+ei5De
B9xXfTMS7cqJKoEFKdj8IoVM3ppCR9oN8/yqtddWei8tnDnoGuTEUSQiEXyJ7BjK
4O0XaBcWkf9xRCjUSG5w8m/h6YLFcoFl2tfDnpN4OE8F/DV3KqJ49gwE9WjXPQBC
GG/6K63JPFeqyDdzVuAHRAS0kTuOQVYNAjYjmuM97aSiFFUo/tlDvhlScvSIje2i
T4yNow7wychqJ6U/iN3l3yHyyZU0VZbZcdmDyqj0YIjgm2Ct+In64trZoRttXHZ/
mFGpV7+XNvC+bjGSfR3JNu8oICXDsoBuC2YA+XpSn6ZRKGpsw6GRAOOVo5JJFUzQ
1CwPDnILsc4wAGm3EZRxaJ60xp0X+hNRdd35q3Y3spwhusKFeFIJsWjseO4zvElT
GMwoNdV0UlWlTIY1ma+sqCMr2/gXTU3VeQ+9iTXs2R9bspNlXpw=
=4U/Z
-----END PGP SIGNATURE-----

--------------JwJpbZ3mHpzXPLUp0B7FWWj5--


From xen-devel-bounces@lists.xenproject.org Thu Apr 16 03:27:01 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 16 Apr 2026 03:27:01 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1282958.1565288 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wDDNO-0007xi-5X; Thu, 16 Apr 2026 03:26:46 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1282958.1565288; Thu, 16 Apr 2026 03:26: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 1wDDNN-0007xa-VE; Thu, 16 Apr 2026 03:26:45 +0000
Received: by outflank-mailman (input) for mailman id 1282958;
 Thu, 16 Apr 2026 03:26:45 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <vijayanand.jitta@oss.qualcomm.com>)
 id 1wDDNM-0007xU-RT
 for xen-devel@lists.xenproject.org; Thu, 16 Apr 2026 03:26:45 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wDDNL-00Gn7I-GX
 for xen-devel@lists.xenproject.org; Thu, 16 Apr 2026 05:26:43 +0200
Received: from [10.42.69.1] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <vijayanand.jitta@oss.qualcomm.com>)
 id 69e056d0-e002-0a2a0a5209dd-0a2a4501af84-22
 for <xen-devel@lists.xenproject.org>; Thu, 16 Apr 2026 05:26:43 +0200
Received: from [205.220.168.131] (helo=mx0a-0031df01.pphosted.com)
 by tlsNG-d62444.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.1)
 (envelope-from <vijayanand.jitta@oss.qualcomm.com>)
 id 69e056f1-c1f2-0a2a45010019-cddca88395ca-3
 for <xen-devel@lists.xenproject.org>; Thu, 16 Apr 2026 05:26:42 +0200
Received: from pps.filterd (m0279866.ppops.net [127.0.0.1])
 by mx0a-0031df01.pphosted.com (8.18.1.11/8.18.1.11) with ESMTP id
 63G0UTZQ2834981
 for <xen-devel@lists.xenproject.org>; Thu, 16 Apr 2026 03:26:40 GMT
Received: from mail-pf1-f199.google.com (mail-pf1-f199.google.com
 [209.85.210.199])
 by mx0a-0031df01.pphosted.com (PPS) with ESMTPS id 4djcsvj3fr-1
 (version=TLSv1.3 cipher=TLS_AES_128_GCM_SHA256 bits=128 verify=NOT)
 for <xen-devel@lists.xenproject.org>; Thu, 16 Apr 2026 03:26:40 +0000 (GMT)
Received: by mail-pf1-f199.google.com with SMTP id
 d2e1a72fcca58-82f2478c37bso6176814b3a.3
 for <xen-devel@lists.xenproject.org>; Wed, 15 Apr 2026 20:26:40 -0700 (PDT)
Received: from [10.219.57.109] ([202.46.23.19])
 by smtp.gmail.com with ESMTPSA id
 d2e1a72fcca58-82f6707b6b8sm4265094b3a.22.2026.04.15.20.26.29
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Wed, 15 Apr 2026 20:26:38 -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=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: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=qualcomm.com; h=
	cc:content-transfer-encoding:content-type:date:from:in-reply-to
	:message-id:mime-version:references:subject:to; s=qcppdkim1; bh=
	vDK6pAlGwxYE897uZGp1sSM8FaPwo0OHKjiLMvDJlSM=; b=SWY9Qd3WKivoaF5z
	JCNUWFn6lHYDHyOuTykCB5IdRbNsUrvJXHcbkMpoXZzEFaGmmiVh4/iNs5m2m3/d
	1ctBxyEGpnQhAu31duNagl7MvxO6Dphq86jgT8s1bddtRVBYt5aiZvC0Q06xHb4f
	pJ5mQ251/oFa31hOjocFi81oL7nTanhTsaxGMhiRvRj3+79HdoaaaOzK6DQpIlj8
	DMKRTns25lEdApCluihx1mohx8vnRlScMBm04DII0VQ2demD5TuPnhQ0Qu4l9aQk
	+r4A6uDr4avQHRyxxypoO1lgUgcJ9ZoXxMNexwA1OoF0Yg1Uo5d1Y4vVKNY0rEpu
	3CT5jQ==
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=oss.qualcomm.com; s=google; t=1776310000; x=1776914800; darn=lists.xenproject.org;
        h=content-transfer-encoding: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;
        bh=vDK6pAlGwxYE897uZGp1sSM8FaPwo0OHKjiLMvDJlSM=;
        b=hwFvBdHvLdqB6TUnyx1q8nwzoCCm/VUE4GicCwVwSIValWezyP30/w3rvnrlOwzKtB
         NbhCD8RLQCL7TJiJnr2TzV+6bQ8BW2RoPZjLZOlmplmew6hXiU1n3G70FtX6URX2RjXj
         gSByxuybyuk/fPFtBsa2zgfstVnyCxo3Ht/OgFxgSdDP8vqB+1Ud1K3z0MT5N1GjPBkP
         giItmh5xSvNu62+f3Jyk6da5BQFfJjiNyEy+OfvrarML9uhT8X6WDTO00ksARdd5iKNy
         rkhsHS/+0QaNBnnCl8in/8UdKFtGbVIaUbky2wx3+9ywLT7xX5BeO71MN38TCqNHZ+c6
         4mKw==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20251104; t=1776310000; x=1776914800;
        h=content-transfer-encoding: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;
        bh=vDK6pAlGwxYE897uZGp1sSM8FaPwo0OHKjiLMvDJlSM=;
        b=FR3RjQd9CeiHbJzQ/t3AGyHsOj9lTdOTwexUaZWSojcRoJZAhG9ExiN2GRdRST4eye
         +wpplwtFXdQXDm6fFu+JnPaEbl+s8GpRMZVHD3i5Mi07FaTFxEkN2l4yvTWiX5gW2lK3
         fNE+cmffP02yFigwsH5216UuyRrY88irl+QZN1EoFjM8vcj4WA2wKOWYQBeqJD05MBfy
         7KpqUID2wxo00N5lK4T+v8viyanXBKrzC+Cual6+IBQUa33vSs1bfNIQm9AnnPxiJKjP
         otSUnb8NDjNPX84hmWDMV8H9G7kyw8X6hcfFbsXzgzUBpB7p3VN0wxiZ2MLtsLD38Ig6
         kd1g==
X-Forwarded-Encrypted: i=1; AFNElJ/ScQ1+c+V9448J8kSS+1Qz4zFd25KjBVt5t0U/A/OPZXpMY8f4zaTZuCnqcTENfAavTlDqxLXhTv8=@lists.xenproject.org
X-Gm-Message-State: AOJu0YyMJkuxHebQarb0SDNXpc8GeClIArWxoPQA19ri91J/jiT4Kolb
	Hy0iY5ZuQtRK3Cg08OhVUxvjHAfyHiegUnrs9Nm0Q+qs0C32nzzPjqIhqFLtkhVsgSJ4ziss32T
	qXyVGAIl0kqzYS8eryK0X5A1wKaahD/JxbU4VU7YRqDFAD8cLk1bPLKOkO1vnpkp/sCHZQg==
X-Gm-Gg: AeBDietEzj6JIhQ+GuKX1kHt/PsSgY5oUsTePgC9jUxYzmq9wsgFny9OU5eX6SUihj+
	aRthhPg+WI4bwQszG6rTV53T6NqK9cLMDa/fdKfpQ7Uig40u3lTmZr+JqwJz+C1SIOQV49N2UMv
	vvX9h39etUmX4hMWYAsvKFkHd4Cy0mDJeu338dunlLO71/Duk6o9xSR3oGNRLpP0yQ4fjzwevkG
	2uEWHv8gpt6bYNBij4K4URvbfqHKp7drfRnjR42+JgDnSalFabbqEsp8oQ8Qxq6Uk2iz5W/hA1j
	WXMO5iFc62D0zkaFOiN06kstBj4BEeo2X0iOYBaX9Jgud50K/jFPqTcZlMI7Xtv/vJ+C2eZ1UH1
	Gy4oh8w9J4vWK+OFkOiVamOTlLxqnED0Ivd4hDpL4vpqQ6QgrfAVUjzxd
X-Received: by 2002:a05:6a00:3924:b0:82c:77cd:50e8 with SMTP id d2e1a72fcca58-82f0c30f593mr23470678b3a.27.1776309999733;
        Wed, 15 Apr 2026 20:26:39 -0700 (PDT)
X-Received: by 2002:a05:6a00:3924:b0:82c:77cd:50e8 with SMTP id d2e1a72fcca58-82f0c30f593mr23470629b3a.27.1776309999089;
        Wed, 15 Apr 2026 20:26:39 -0700 (PDT)
Message-ID: <555b2695-1feb-482b-aec2-d6f3f2b2ef0e@oss.qualcomm.com>
Date: Thu, 16 Apr 2026 08:56:24 +0530
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH v13 3/3] of: Respect #{iommu,msi}-cells in maps
To: Nipun Gupta <nipun.gupta@amd.com>,
        Nikhil Agarwal
 <nikhil.agarwal@amd.com>,
        Joerg Roedel <joro@8bytes.org>, Will Deacon <will@kernel.org>,
        Robin Murphy <robin.murphy@arm.com>, Marc Zyngier <maz@kernel.org>,
        Lorenzo Pieralisi <lpieralisi@kernel.org>,
        Thomas Gleixner <tglx@kernel.org>,
        Saravana Kannan <saravanak@kernel.org>,
        Richard Zhu <hongxing.zhu@nxp.com>,
        Lucas Stach <l.stach@pengutronix.de>,
        =?UTF-8?Q?Krzysztof_Wilczy=C5=84ski?= <kwilczynski@kernel.org>,
        Manivannan Sadhasivam <mani@kernel.org>,
        Bjorn Helgaas
 <bhelgaas@google.com>, Frank Li <Frank.Li@nxp.com>,
        Sascha Hauer <s.hauer@pengutronix.de>,
        Pengutronix Kernel Team <kernel@pengutronix.de>,
        Fabio Estevam <festevam@gmail.com>, Juergen Gross <jgross@suse.com>,
        Stefano Stabellini <sstabellini@kernel.org>,
        Oleksandr Tyshchenko <oleksandr_tyshchenko@epam.com>,
        Dmitry Baryshkov <dmitry.baryshkov@oss.qualcomm.com>,
        Konrad Dybcio <konrad.dybcio@oss.qualcomm.com>,
        Bjorn Andersson <bjorn.andersson@oss.qualcomm.com>,
        Rob Herring <robh@kernel.org>, Conor Dooley <conor+dt@kernel.org>,
        Krzysztof Kozlowski <krzk+dt@kernel.org>,
        Prakash Gupta <prakash.gupta@oss.qualcomm.com>,
        Vikash Garodia <vikash.garodia@oss.qualcomm.com>
Cc: linux-kernel@vger.kernel.org, iommu@lists.linux.dev,
        linux-arm-kernel@lists.infradead.org, devicetree@vger.kernel.org,
        linux-pci@vger.kernel.org, imx@lists.linux.dev,
        xen-devel@lists.xenproject.org, linux-arm-msm@vger.kernel.org,
        Charan Teja Kalla <charan.kalla@oss.qualcomm.com>
References: <20260408-parse_iommu_cells-v13-0-fa921e92661b@oss.qualcomm.com>
 <20260408-parse_iommu_cells-v13-3-fa921e92661b@oss.qualcomm.com>
Content-Language: en-US
From: Vijayanand Jitta <vijayanand.jitta@oss.qualcomm.com>
In-Reply-To: <20260408-parse_iommu_cells-v13-3-fa921e92661b@oss.qualcomm.com>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 7bit
X-Proofpoint-GUID: 6O7hIPU-KsNlEwkCnCKDetfjLj9HUHBU
X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwNDE2MDAyOSBTYWx0ZWRfX1dbmOrPr6IHL
 xhT7bbt8Wy+vx7CLhftFT6xSqiHtwqsfjL/h0paqvJKvmXWH1Wi6B5YBNpgFaCXVt6vMQjW1JXI
 IQqLSZk3H/LbAoN0/6/DWMkCOnGYQQkCBLruWOuLdaYME+J6o/d5lMTQR66TEUn3eXKCjiTVXdl
 SVG/xjmg3oep92fjSmQUJicqTiPLfqaxYopRB6Z23deV+WTpVgW9vn6B6uwGJclsFg4ZzQ7E/eF
 YGjpWGRJJOxxiI6UBZbJ7kICbFbqodrAz5zz4SmUlOIF2UFZdTRelaFc7xjjKEQhGev9xDeUnRV
 PW1VtPMvvC3BYiEaA9KJjognlqxoia2s/Fyej9n5411MFQz/hoD1/quWPEk9SsOcPO9lvcZ6Nmc
 4TmdrbhOfxSlNiDcrK9/ua7kUACo0ss0k5Cgd9nF31pJ3+1rF3M+73BLUsOzc12z3DA+j+zxWv2
 gJL5ZRcn1mcaVmWhsqg==
X-Authority-Analysis: v=2.4 cv=Iby3n2qa c=1 sm=1 tr=0 ts=69e056f0 cx=c_pps
 a=WW5sKcV1LcKqjgzy2JUPuA==:117 a=j4ogTh8yFefVWWEFDRgCtg==:17
 a=IkcTkHD0fZMA:10 a=A5OVakUREuEA:10 a=s4-Qcg_JpJYA:10
 a=VkNPw1HP01LnGYTKEx00:22 a=u7WPNUs3qKkmUXheDGA7:22 a=YMgV9FUhrdKAYTUUvYB2:22
 a=7CQSdrXTAAAA:8 a=EUspDBNiAAAA:8 a=OsyBWCJeBE2wmg0BnjgA:9 a=QEXdDO2ut3YA:10
 a=OpyuDcXvxspvyRM73sMx:22 a=a-qgeE7W1pNrGK8U0ZQC:22
X-Proofpoint-ORIG-GUID: 6O7hIPU-KsNlEwkCnCKDetfjLj9HUHBU
X-Proofpoint-Virus-Version: vendor=baseguard
 engine=ICAP:2.0.293,Aquarius:18.0.1143,Hydra:6.1.51,FMLib:17.12.100.49
 definitions=2026-04-16_01,2026-04-13_04,2025-10-01_01
X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0
 spamscore=0 clxscore=1015 priorityscore=1501 suspectscore=0 phishscore=0
 bulkscore=0 lowpriorityscore=0 impostorscore=0 malwarescore=0 adultscore=0
 classifier=typeunknown authscore=0 authtc= authcc= route=outbound adjust=0
 reason=mlx scancount=1 engine=8.22.0-2604070000 definitions=main-2604160029
X-purgate-ID: tlsNG-d62444/1776310003-B6C7CFF4-926DCFCE/0/0
X-purgate-type: clean
X-purgate-size: 12762



On 4/8/2026 3:33 PM, Vijayanand Jitta wrote:
> From: Robin Murphy <robin.murphy@arm.com>
> 
> So far our parsing of {iommu,msi}-map properties has always blindly
> assumed that the output specifiers will always have exactly 1 cell.
> This typically does happen to be the case, but is not actually enforced
> (and the PCI msi-map binding even explicitly states support for 0 or 1
> cells) - as a result we've now ended up with dodgy DTs out in the field
> which depend on this behaviour to map a 1-cell specifier for a 2-cell
> provider, despite that being bogus per the bindings themselves.
> 
> Since there is some potential use in being able to map at least single
> input IDs to multi-cell output specifiers (and properly support 0-cell
> outputs as well), add support for properly parsing and using the target
> nodes' #cells values, albeit with the unfortunate complication of still
> having to work around expectations of the old behaviour too.
> 
> Since there are multi-cell output specifiers, the callers of of_map_id()
> may need to get the exact cell output value for further processing.
> Update of_map_id() to set args_count in the output to reflect the actual
> number of output specifier cells.
> 
> Signed-off-by: Robin Murphy <robin.murphy@arm.com>
> Signed-off-by: Charan Teja Kalla <charan.kalla@oss.qualcomm.com>
> Signed-off-by: Vijayanand Jitta <vijayanand.jitta@oss.qualcomm.com>
> ---
>  drivers/of/base.c  | 157 +++++++++++++++++++++++++++++++++++++++++------------
>  include/linux/of.h |   6 +-
>  2 files changed, 125 insertions(+), 38 deletions(-)
> 
> diff --git a/drivers/of/base.c b/drivers/of/base.c
> index b3d002015192..2554e4f1a181 100644
> --- a/drivers/of/base.c
> +++ b/drivers/of/base.c
> @@ -2096,18 +2096,48 @@ int of_find_last_cache_level(unsigned int cpu)
>  	return cache_level;
>  }
>  
> +/*
> + * Some DTs have an iommu-map targeting a 2-cell IOMMU node while
> + * specifying only 1 cell. Fortunately they all consist of value '1'
> + * as the 2nd cell entry with the same target, so check for that pattern.
> + *
> + * Example:
> + *	IOMMU node:
> + *		#iommu-cells = <2>;
> + *
> + *	Device node:
> + *		iommu-map = <0x0000 &smmu 0x0000 0x1>,
> + *			    <0x0100 &smmu 0x0100 0x1>;
> + */
> +static bool of_check_bad_map(const __be32 *map, int len)
> +{
> +	__be32 phandle = map[1];
> +
> +	if (len % 4)
> +		return false;
> +	for (int i = 0; i < len; i += 4) {
> +		if (map[i + 1] != phandle || map[i + 3] != cpu_to_be32(1))
> +			return false;
> +	}
> +	return true;
> +}
> +
>  /**
>   * of_map_id - Translate an ID through a downstream mapping.
>   * @np: root complex device node.
>   * @id: device ID to map.
>   * @map_name: property name of the map to use.
> + * @cells_name: property name of target specifier cells.
>   * @map_mask_name: optional property name of the mask to use.
>   * @filter_np: optional device node to filter matches by, or NULL to match any.
>   *	If non-NULL, only map entries targeting this node will be matched.
>   * @arg: pointer to a &struct of_phandle_args for the result. On success,
> - *	@arg->args[0] will contain the translated ID. If a map entry was
> - *	matched, @arg->np will be set to the target node with a reference
> - *	held that the caller must release with of_node_put().
> + *	@arg->args_count will be set to the number of output specifier cells
> + *	as defined by @cells_name in the target node, and
> + *	@arg->args[0..args_count-1] will contain the translated output
> + *	specifier values. If a map entry was matched, @arg->np will be set
> + *	to the target node with a reference held that the caller must release
> + *	with of_node_put().
>   *
>   * Given a device ID, look up the appropriate implementation-defined
>   * platform ID and/or the target device which receives transactions on that
> @@ -2116,17 +2146,19 @@ int of_find_last_cache_level(unsigned int cpu)
>   * Return: 0 on success or a standard error code on failure.
>   */
>  int of_map_id(const struct device_node *np, u32 id,
> -	       const char *map_name, const char *map_mask_name,
> +	       const char *map_name, const char *cells_name,
> +	       const char *map_mask_name,
>  	       const struct device_node *filter_np, struct of_phandle_args *arg)
>  {
>  	u32 map_mask, masked_id;
> -	int map_len;
> +	int map_bytes, map_len, offset = 0;
> +	bool bad_map = false;
>  	const __be32 *map = NULL;
>  
>  	if (!np || !map_name || !arg)
>  		return -EINVAL;
>  
> -	map = of_get_property(np, map_name, &map_len);
> +	map = of_get_property(np, map_name, &map_bytes);
>  	if (!map) {
>  		if (filter_np)
>  			return -ENODEV;
> @@ -2136,11 +2168,9 @@ int of_map_id(const struct device_node *np, u32 id,
>  		return 0;
>  	}
>  
> -	if (!map_len || map_len % (4 * sizeof(*map))) {
> -		pr_err("%pOF: Error: Bad %s length: %d\n", np,
> -			map_name, map_len);
> -		return -EINVAL;
> -	}
> +	if (map_bytes % sizeof(*map))
> +		goto err_map_len;
> +	map_len = map_bytes / sizeof(*map);
>  
>  	/* The default is to select all bits. */
>  	map_mask = 0xffffffff;
> @@ -2153,39 +2183,84 @@ int of_map_id(const struct device_node *np, u32 id,
>  		of_property_read_u32(np, map_mask_name, &map_mask);
>  
>  	masked_id = map_mask & id;
> -	for ( ; map_len > 0; map_len -= 4 * sizeof(*map), map += 4) {
> +
> +	while (offset < map_len) {
>  		struct device_node *phandle_node;
> -		u32 id_base = be32_to_cpup(map + 0);
> -		u32 phandle = be32_to_cpup(map + 1);
> -		u32 out_base = be32_to_cpup(map + 2);
> -		u32 id_len = be32_to_cpup(map + 3);
> +		u32 id_base, phandle, id_len, id_off, cells = 0;
> +		const __be32 *out_base;
> +
> +		if (map_len - offset < 2)
> +			goto err_map_len;
> +
> +		id_base = be32_to_cpup(map + offset);
>  
>  		if (id_base & ~map_mask) {
> -			pr_err("%pOF: Invalid %s translation - %s-mask (0x%x) ignores id-base (0x%x)\n",
> -				np, map_name, map_name,
> -				map_mask, id_base);
> +			pr_err("%pOF: Invalid %s translation - %s (0x%x) ignores id-base (0x%x)\n",
> +			       np, map_name, map_mask_name, map_mask, id_base);
>  			return -EFAULT;
>  		}
>  
> -		if (masked_id < id_base || masked_id >= id_base + id_len)
> -			continue;
> -
> +		phandle = be32_to_cpup(map + offset + 1);
>  		phandle_node = of_find_node_by_phandle(phandle);
>  		if (!phandle_node)
>  			return -ENODEV;
>  
> +		if (bad_map) {
> +			cells = 1;
> +		} else if (of_property_read_u32(phandle_node, cells_name, &cells)) {
> +			pr_err("%pOF: missing %s property\n", phandle_node, cells_name);
> +			of_node_put(phandle_node);
> +			return -EINVAL;
> +		}
> +
> +		if (map_len - offset < 3 + cells) {
> +			of_node_put(phandle_node);
> +			goto err_map_len;
> +		}
> +
> +		if (offset == 0 && cells == 2) {
> +			bad_map = of_check_bad_map(map, map_len);
> +			if (bad_map) {
> +				pr_warn_once("%pOF: %s mismatches target %s, assuming extra cell of 0\n",
> +					     np, map_name, cells_name);
> +				cells = 1;
> +			}
> +		}
> +
> +		out_base = map + offset + 2;
> +		offset += 3 + cells;
> +
> +		id_len = be32_to_cpup(map + offset - 1);
> +		if (id_len > 1 && cells > 1) {
> +			/*
> +			 * With 1 output cell we reasonably assume its value
> +			 * has a linear relationship to the input; with more,
> +			 * we'd need help from the provider to know what to do.
> +			 */
> +			pr_err("%pOF: Unsupported %s - cannot handle %d-ID range with %d-cell output specifier\n",
> +			       np, map_name, id_len, cells);
> +			of_node_put(phandle_node);
> +			return -EINVAL;
> +		}
> +		id_off = masked_id - id_base;
> +		if (masked_id < id_base || id_off >= id_len) {
> +			of_node_put(phandle_node);
> +			continue;
> +		}
> +
>  		if (filter_np && filter_np != phandle_node) {
>  			of_node_put(phandle_node);
>  			continue;
>  		}
>  
>  		arg->np = phandle_node;
> -		arg->args[0] = masked_id - id_base + out_base;
> -		arg->args_count = 1;
> +		for (int i = 0; i < cells; i++)
> +			arg->args[i] = id_off + be32_to_cpu(out_base[i]);
> +		arg->args_count = cells;
>  
>  		pr_debug("%pOF: %s, using mask %08x, id-base: %08x, out-base: %08x, length: %08x, id: %08x -> %08x\n",
> -			np, map_name, map_mask, id_base, out_base,
> -			id_len, id, masked_id - id_base + out_base);
> +			np, map_name, map_mask, id_base, be32_to_cpup(out_base),
> +			id_len, id, id_off + be32_to_cpup(out_base));
>  		return 0;
>  	}
>  
> @@ -2196,6 +2271,10 @@ int of_map_id(const struct device_node *np, u32 id,
>  	arg->args[0] = id;
>  	arg->args_count = 1;
>  	return 0;
> +
> +err_map_len:
> +	pr_err("%pOF: Error: Bad %s length: %d\n", np, map_name, map_bytes);
> +	return -EINVAL;
>  }
>  EXPORT_SYMBOL_GPL(of_map_id);
>  
> @@ -2205,18 +2284,21 @@ EXPORT_SYMBOL_GPL(of_map_id);
>   * @id: Requester ID of the device (e.g. PCI RID/BDF or a platform
>   *      stream/device ID) used as the lookup key in the iommu-map table.
>   * @arg: pointer to a &struct of_phandle_args for the result. On success,
> - *	@arg->args[0] contains the translated ID. If a map entry was matched,
> - *	@arg->np holds a reference to the target node that the caller must
> - *	release with of_node_put().
> + *	@arg->args_count will be set to the number of output specifier cells
> + *	and @arg->args[0..args_count-1] will contain the translated output
> + *	specifier values. If a map entry was matched, @arg->np holds a
> + *	reference to the target node that the caller must release with
> + *	of_node_put().
>   *
> - * Convenience wrapper around of_map_id() using "iommu-map" and "iommu-map-mask".
> + * Convenience wrapper around of_map_id() using "iommu-map", "#iommu-cells",
> + * and "iommu-map-mask".
>   *
>   * Return: 0 on success or a standard error code on failure.
>   */
>  int of_map_iommu_id(const struct device_node *np, u32 id,
>  		    struct of_phandle_args *arg)
>  {
> -	return of_map_id(np, id, "iommu-map", "iommu-map-mask", NULL, arg);
> +	return of_map_id(np, id, "iommu-map", "#iommu-cells", "iommu-map-mask", NULL, arg);
>  }
>  EXPORT_SYMBOL_GPL(of_map_iommu_id);
>  
> @@ -2229,17 +2311,20 @@ EXPORT_SYMBOL_GPL(of_map_iommu_id);
>   *	to match any. If non-NULL, only map entries targeting this node will
>   *	be matched.
>   * @arg: pointer to a &struct of_phandle_args for the result. On success,
> - *	@arg->args[0] contains the translated ID. If a map entry was matched,
> - *	@arg->np holds a reference to the target node that the caller must
> - *	release with of_node_put().
> + *	@arg->args_count will be set to the number of output specifier cells
> + *	and @arg->args[0..args_count-1] will contain the translated output
> + *	specifier values. If a map entry was matched, @arg->np holds a
> + *	reference to the target node that the caller must release with
> + *	of_node_put().
>   *
> - * Convenience wrapper around of_map_id() using "msi-map" and "msi-map-mask".
> + * Convenience wrapper around of_map_id() using "msi-map", "#msi-cells",
> + * and "msi-map-mask".
>   *
>   * Return: 0 on success or a standard error code on failure.
>   */
>  int of_map_msi_id(const struct device_node *np, u32 id,
>  		  const struct device_node *filter_np, struct of_phandle_args *arg)
>  {
> -	return of_map_id(np, id, "msi-map", "msi-map-mask", filter_np, arg);
> +	return of_map_id(np, id, "msi-map", "#msi-cells", "msi-map-mask", filter_np, arg);
>  }
>  EXPORT_SYMBOL_GPL(of_map_msi_id);
> diff --git a/include/linux/of.h b/include/linux/of.h
> index 8548cd9eb4f1..51ac8539f2c3 100644
> --- a/include/linux/of.h
> +++ b/include/linux/of.h
> @@ -462,7 +462,8 @@ const char *of_prop_next_string(const struct property *prop, const char *cur);
>  bool of_console_check(const struct device_node *dn, char *name, int index);
>  
>  int of_map_id(const struct device_node *np, u32 id,
> -	       const char *map_name, const char *map_mask_name,
> +	       const char *map_name, const char *cells_name,
> +	       const char *map_mask_name,
>  	       const struct device_node *filter_np, struct of_phandle_args *arg);
>  
>  int of_map_iommu_id(const struct device_node *np, u32 id,
> @@ -934,7 +935,8 @@ static inline void of_property_clear_flag(struct property *p, unsigned long flag
>  }
>  
>  static inline int of_map_id(const struct device_node *np, u32 id,
> -			     const char *map_name, const char *map_mask_name,
> +			     const char *map_name, const char *cells_name,
> +			     const char *map_mask_name,
>  			     const struct device_node *filter_np,
>  			     struct of_phandle_args *arg)
>  {
> 

Gentle ping.

Thanks,
Vijay


From xen-devel-bounces@lists.xenproject.org Thu Apr 16 06:46:21 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 16 Apr 2026 06:46:21 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1282983.1565297 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wDGUI-0007Sn-5M; Thu, 16 Apr 2026 06:46:06 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1282983.1565297; Thu, 16 Apr 2026 06:46: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 1wDGUH-0007Sf-Vp; Thu, 16 Apr 2026 06:46:05 +0000
Received: by outflank-mailman (input) for mailman id 1282983;
 Thu, 16 Apr 2026 06:46:04 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <jbeulich@suse.com>) id 1wDGUG-0007SZ-FT
 for xen-devel@lists.xenproject.org; Thu, 16 Apr 2026 06:46:04 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wDGUF-00BoRw-PA
 for xen-devel@lists.xenproject.org; Thu, 16 Apr 2026 08:46:03 +0200
Received: from [10.42.69.3] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <jbeulich@suse.com>)
 id 69e0859f-bab6-0a2a0a5309dd-0a2a4503d80a-16
 for <xen-devel@lists.xenproject.org>; Thu, 16 Apr 2026 08:46:03 +0200
Received: from [209.85.128.50] (helo=mail-wm1-f50.google.com)
 by tlsNG-33051d.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.0)
 (envelope-from <jbeulich@suse.com>)
 id 69e085ab-02b3-0a2a45030019-d1558032a47e-3
 for <xen-devel@lists.xenproject.org>; Thu, 16 Apr 2026 08:46:03 +0200
Received: by mail-wm1-f50.google.com with SMTP id
 5b1f17b1804b1-4887ca8e529so1984315e9.0
 for <xen-devel@lists.xenproject.org>; Wed, 15 Apr 2026 23:46:03 -0700 (PDT)
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-488f08b4f7esm58847495e9.0.2026.04.15.23.46.02
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Wed, 15 Apr 2026 23:46:02 -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=google header.d=suse.com header.i="@suse.com" header.h="Content-Transfer-Encoding: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=1776321963; x=1776926763; darn=lists.xenproject.org;
        h=content-transfer-encoding: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;
        bh=aGQaaIyORai5qktmzL8qZVGyiFGYScSPxNYKtpLC2b0=;
        b=P0sAktcKPpHZLFSxDVWEb6CEZtUOH6SnbLUiyp0uAroVaxVgumvU+C2J7XrBb7fAwX
         pBzv7dTodT8FGuifkyke/0g125HzeSvwvFWBMSL97cAd/PnW01am/uLxzTu+Q82V0VG8
         6Kgy8DbRgPIMAGJ1VZxz6fbSWTthy9EZZRBwt47W1W2Dvbqp4u9CX/NNebQ9hns65tV4
         g2dPhySQ2EkjHCq+JpRS5cEBnQM9S+EqxbaFuAQhV2n0G14i+EPoEo/y13eBAKvHxgSj
         iNU0k3FyrvwNyJ49ds7ToymdLYA9DIjbQY+Ti0oIkaHCNQOnzaxB48lT2QoJLdhMOR1a
         qo7w==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20251104; t=1776321963; x=1776926763;
        h=content-transfer-encoding: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;
        bh=aGQaaIyORai5qktmzL8qZVGyiFGYScSPxNYKtpLC2b0=;
        b=NrmokNQ3YbECugoyuvbVv89gYX19Z960libo+7EukoPQpnmB5/7R+is4/BAzHGxTCE
         AMKmSWhpBo+qA8trMruwMwq/K9xRzs0jql4nPRBFIPlDGF4y6EedRXq9JkFDo71Z2AD3
         CV0bIOlW3NcIZR9cnAXDU5+KB6aSmlMuPY0BtHIjizK7dk4CPbJo0OKM122JpNiKblPa
         OUHF/skQdF1m7RCUIisDQADms3dzAGfuXsJhFGBjEs3tq6jRzBbYkFynvRpUxlMPC7eX
         cSBXUaZpHbFpvOXMJKsq/RhRKUGfPi4kJflS0toz4Y3rTp5klYl27IEoQDl85zgxeoPd
         5LGQ==
X-Forwarded-Encrypted: i=1; AFNElJ86aRISEJMUXMxjOc32lJCaiTEsa+iboJJzSRcZwkbFtSS2TWOVPFARvgqtOy0X1n9/hVbfR4/UVNI=@lists.xenproject.org
X-Gm-Message-State: AOJu0YyC7ptAILQow+R7iWllNOr6cOmEhwF6k8GDm9tyvxZ7BJcctXqA
	jSk2YhpuX3wqqtCEEUSUg9pXmgw1tDoq1EmvuC//rzBmUcKqAXLz1ad3zu5xE5KdPA==
X-Gm-Gg: AeBDieu64mtJCHS8OCkw8akNhVF8xAfxY1Rvgygds0O4tV9OSYl25RksbgdyQvPjTOe
	Jta3hsgYGYitofOMIgPZXqEvCJAEGHf8e0bVqsIovXQ7J6QafTqTpMwfbWLuoutxygFGGyi2Rii
	p8s/DEbqkSQUzf/wSEB/mp+xrrstYy7iL8cqcPGmpHm+73WUv9MmCT2Qzk1v4n8g1rR37R9AYkV
	AWgOVja50TBA+muAQ/8pyrTS+4VoekWbAMhWE4E6oYZeGKLWmxx/An+arzcGTBJfSg6lR27b1f1
	ZmwlGV47SIJvQbAvmAHpufkGTOcsZ9QhG6XbR/BabQ5q8rdQm0JmmL/5PS2V8hW+I3RdIVp4ZdP
	9iz0bx676w9aM9cVrIqTw+HWK0FDQ7KwkAITqTnzq3sUeHYe9mhn+dfaNAlB0vYG6aqwJUfBgL6
	As+IhuIAbJ+ZSCVubs97F82dIL2xF9LGmSZUp41Z967Xv0KoTMgv9CeuZe/sJ2nAE6yV2eE0lRG
	Ku2XTyTaeC4IL7HILzQtE7+mA==
X-Received: by 2002:a05:600c:3e0a:b0:488:c6e9:1e0c with SMTP id 5b1f17b1804b1-488f47c90ddmr27973765e9.5.1776321962858;
        Wed, 15 Apr 2026 23:46:02 -0700 (PDT)
Message-ID: <589b36fe-946d-4a34-8227-a4dc558db304@suse.com>
Date: Thu, 16 Apr 2026 08:46:05 +0200
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH v4 05/10] xen/domain: Add DOMCTL handler for claiming
 memory with NUMA awareness
To: Bernhard Kaindl <bernhard.kaindl@citrix.com>
Cc: Andrew Cooper <andrew.cooper@citrix.com>,
 Anthony PERARD <anthony.perard@vates.tech>,
 Michal Orzel <michal.orzel@amd.com>, Julien Grall <julien@xen.org>,
 Roger Pau Monne <roger.pau@citrix.com>,
 Stefano Stabellini <sstabellini@kernel.org>,
 "Daniel P. Smith" <dpsmith@apertussolutions.com>,
 "xen-devel@lists.xenproject.org" <xen-devel@lists.xenproject.org>
References: <cover.1772098423.git.bernhard.kaindl@citrix.com>
 <b2c94f0c3b41976b2691ce15b9f9a2589370e65a.1772098423.git.bernhard.kaindl@citrix.com>
 <7d439bb1-7381-4fa4-af79-423e8c7fafb1@suse.com>
 <LV3PR03MB7707A579E5CBD292B127995C87252@LV3PR03MB7707.namprd03.prod.outlook.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: <LV3PR03MB7707A579E5CBD292B127995C87252@LV3PR03MB7707.namprd03.prod.outlook.com>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 7bit
X-purgate-ID: tlsNG-33051d/1776321963-40F6FC9A-A3BCF9AC/0/0
X-purgate-type: clean
X-purgate-size: 2913

On 14.04.2026 17:17, Bernhard Kaindl wrote:
> Jan Beulich wrote:
>>> --- a/xen/common/domain.c
>>> +++ b/xen/common/domain.c
> [...]
>>> +int claim_memory(struct domain *d, [...]
>>
>> static in domctl.c? Otherwise with Penny's work to make domctl optional this
>> would be unreachable code.
> 
> Thanks, done: Moved it to domctl.c to be not compiled without MGMT_HYPERCALLS in v5/v6.
> 
>>> +    if ( uinfo->pad || uinfo->nr_claims != 1 || d->is_dying )
>>> +        return -EINVAL;
>>
>> As already alluded to in reply to patch 03, I can't help the impression that
>> usage of this sub-op with multiple entries would we quite different (i.e. it
>> would be not only the implementation in Xen that changes). I'm therefore
>> pretty uncertain whether taking it with this restriction is going to make
>> much sense.
> 
> I submitted this sub-op to support multiple entries with v5/v6 now.
> 
> In v5/v6 these checks are updated to support multiple claims in the claim set.
> For clarity, I renamed the .node of the individual claim entries to .target:
> 
> The target of a claim entry can also be a selector for a global claim
> or a legacy claim and the field have many bits for future use.
> 
> This wasn't needed but I think it's clearer that the claim entry specifies a
> target which is where the claim entry is aimed at, it's not just only a node.
> 
>> +    if ( claim.node == XEN_DOMCTL_CLAIM_MEMORY_NO_NODE )
>>> +        claim.node = NUMA_NO_NODE;
>>
>> What about the incoming claim.node being NUMA_NO_NODE? Imo the range checking
>> the previous patch adds to domain_set_outstanding_pages() wants to move here,
>> at which point the function's new parameter could be properly nodeid_t.
> 
> nodeid_t and NUMA_NO_NODE have (judging by the existing implementation) are not
> exposed in the public API to the control domain.
> 
> This separation is probably a good thing because it allows to change Xen internals
> like nodeit_t and NUMA_NO_NODE if so desired without changing the public API.
> 
> NUMA_NO_NODE is defined as 0xFF and nodeid_t is u8. But that is just an
> implementation detail of the Hypervisor itself. If needed, we could change
> the implementation like this series could do, if wanted.

You spell it all out here, but then you don't draw the conclusion that I was aiming
at: If someone passes in 0xff, that _should not_ be mistaken for NUMA_NO_NODE. Hence
for the time being you simply need to reject 0xff if you don't want to expose "no
specific node" exactly that way in the ABI. And indeed ...

> The public struct xen_sysctl_numainfo and xen_sysctl_physinfo define num_nodes,
> nr_nodes and max_node_id as uint32_t, for example. For type consistency, I opted
> to define this public API as uint32_t as well and not expose internal types/values.

... the proper representation there would then likely be 0xffffffff.

Jan


From xen-devel-bounces@lists.xenproject.org Thu Apr 16 06:49:31 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 16 Apr 2026 06:49:31 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1282993.1565306 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wDGXa-00088e-JV; Thu, 16 Apr 2026 06:49:30 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1282993.1565306; Thu, 16 Apr 2026 06: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 1wDGXa-00088X-Fq; Thu, 16 Apr 2026 06:49:30 +0000
Received: by outflank-mailman (input) for mailman id 1282993;
 Thu, 16 Apr 2026 06:49:28 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <jbeulich@suse.com>) id 1wDGXY-00088P-H7
 for xen-devel@lists.xenproject.org; Thu, 16 Apr 2026 06:49:28 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wDGXX-004fPu-U6
 for xen-devel@lists.xenproject.org; Thu, 16 Apr 2026 08:49:27 +0200
Received: from [10.42.69.12] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <jbeulich@suse.com>)
 id 69e08661-2eae-0a2a0a5409dd-0a2a450ce5f2-44
 for <xen-devel@lists.xenproject.org>; Thu, 16 Apr 2026 08:49:27 +0200
Received: from [209.85.128.45] (helo=mail-wm1-f45.google.com)
 by tlsNG-d25034.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.0)
 (envelope-from <jbeulich@suse.com>)
 id 69e08677-f40c-0a2a450c0019-d155802dd93b-3
 for <xen-devel@lists.xenproject.org>; Thu, 16 Apr 2026 08:49:27 +0200
Received: by mail-wm1-f45.google.com with SMTP id
 5b1f17b1804b1-4852b81c73aso70600565e9.3
 for <xen-devel@lists.xenproject.org>; Wed, 15 Apr 2026 23:49:27 -0700 (PDT)
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-488f5818d70sm48262825e9.4.2026.04.15.23.49.26
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Wed, 15 Apr 2026 23:49:26 -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=google header.d=suse.com header.i="@suse.com" header.h="Content-Transfer-Encoding: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=1776322167; x=1776926967; darn=lists.xenproject.org;
        h=content-transfer-encoding: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;
        bh=dO5dep/7LW5nwzf5LpZvfuD8LTzYgo0Fq8G+WRGNV9o=;
        b=AWxwUOvOSuKrCaxxWsMB5LK84PKmky4Xu22MzKFxJi/gjtLjV7VbNOHZZ8y7AQromb
         k0PFjGHw0dFCXGiMivitZZleO68kxsLH7Bv7hnyG/Zx+Q3YDHcjFA69jR0WboPH2hKe4
         NkY38AGEwOG8nvz2SoZZkN4IdcFGzzXQRzMVVTfvd0QGQUn5dPBCxcuLb71+83gjKhk9
         pgkZBid1DdL0mkMoLvjY5kTiCh+zoJYdGDjLWguWbu0jju9/dIfC18eEcr+bxObqY4K7
         mO5PBdgbmRCEamS46KtXQDt5ghcGxYjavQloKaLaQ/InLZFWphROY7aqJG5rWM1iImav
         6seQ==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20251104; t=1776322167; x=1776926967;
        h=content-transfer-encoding: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;
        bh=dO5dep/7LW5nwzf5LpZvfuD8LTzYgo0Fq8G+WRGNV9o=;
        b=byp9mUVrB3dRUPRmjEKONKM9tzPDSueqhEb0d73dXCJFQMRQYgiNNZV91UgaU0z+Ij
         ERlUpzCDqYio0xjPk9VYkMwe/oGN/9ZhmwWJzwIBUtZk5CkbPwEOn9cKACK3cRjTuCWA
         BxrIqZOY+5E5TdeBqul1hVi8UZsu0a3ZFHOc0c18Wq8XMWRR7LoWOE/M2nKLqydC8Gp9
         Xm9jzQC/TJfYyLB8snk4Xy4ss2PKaR9wRrcY3HX+XIpRoF2q0l2ciGnPN295hIQ70MB0
         1OUanKZeuFOPzLug+jKDzWjyC6eA1QWeAxnfsZdZf+GRxuQV0jYpKheIbt3F447fH5Ar
         rWrQ==
X-Forwarded-Encrypted: i=1; AFNElJ9p6AUByhwB+kGHi9iDG76Lx8uazA3BJWatW7GljNjx8nbxko0fAg+ucn4UUhA/2MjPT3Eyy4NiQvw=@lists.xenproject.org
X-Gm-Message-State: AOJu0Ywf5gS9cYoyFp/8GSGiG1QdJNFasa2p43b8DQe1mze+mKFQDMft
	g1K94OSXyW+odZH45oSIsfTe3TMV/PZmYGzkax9IcyBx10ainrAM+eWA7dPOylXKJg==
X-Gm-Gg: AeBDies2EglShCGtGCKREU7JjBFceMPb/GsINnp/M3KxWJhezQwgssh5140UDwBgEkH
	6cX4lG289+OXqr/4iTqVXbESuGcjN0fdDD7bJ5st32OGALsg4k6crQEijhotrvCQOvqOBh2Unod
	rdiqtfOHw/OHbsYj1rKMa3XFxEgXdeLQOPhiDovIpEb1YmHe1wJ7hGIAcZO01bvSfjK4BOESAcB
	oKaKSDWD9C8S5MU4HXVBsMfhkmhCyOTvPb6GJ8D798eIOVnIJ5NGXu3O2TsmpZHNjCdN648Fzuu
	lf6PDgRJIkMQ3UVQPIDHRZsthBercZZiBySDJHcSpAfDVPm69uvRBp5s/3uxagDusQbiu5HK4El
	Umo+AZryb0GncC3feCcjOaKN5D4W+yXr/oswgfmMXiu9rp6VzovZehIzkC6GLRaasiw2LwGkBop
	7MSw0r6CHCs6YDRNAVOphnaDpah9c7pyU6WQhSf1nsUI+O0JZ+96i9txBiMCMgTpvleeMUPmOfk
	R0tns3jcAKgOI9n2OFcNoYZHg==
X-Received: by 2002:a05:600c:3b29:b0:486:fbf6:abd4 with SMTP id 5b1f17b1804b1-488d67d24cbmr316921605e9.9.1776322167196;
        Wed, 15 Apr 2026 23:49:27 -0700 (PDT)
Message-ID: <28900826-5a96-4bf0-8d5b-11fd1be8386a@suse.com>
Date: Thu, 16 Apr 2026 08:49:30 +0200
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH v7 5/6] tools: Allow building xen-hptool without
 CONFIG_MIGRATE
To: Mykyta Poturai <Mykyta_Poturai@epam.com>
Cc: Anthony PERARD <anthony.perard@vates.tech>,
 Juergen Gross <jgross@suse.com>,
 "xen-devel@lists.xenproject.org" <xen-devel@lists.xenproject.org>
References: <cover.1774871881.git.mykyta_poturai@epam.com>
 <73db845e6617130966a565cdca6274db4cb46428.1774871881.git.mykyta_poturai@epam.com>
 <58cfab3b-7cf2-4e38-9968-1248e665f985@suse.com>
 <f4a1cfa1-f3ea-4fa0-bffd-1f6346e07d39@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: <f4a1cfa1-f3ea-4fa0-bffd-1f6346e07d39@epam.com>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 7bit
X-purgate-ID: tlsNG-d25034/1776322167-8274EA3D-3973FB81/0/0
X-purgate-type: clean
X-purgate-size: 2619

On 15.04.2026 16:51, Mykyta Poturai wrote:
> On 3/30/26 15:32, Jan Beulich wrote:
>> On 30.03.2026 13:59, Mykyta Poturai wrote:
>>> 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.
>>>
>>> Signed-off-by: Mykyta Poturai <mykyta_poturai@epam.com>
>>> ---
>>> 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/libs/guest/Makefile.common | 2 +-
>>>   tools/misc/Makefile              | 2 +-
>>>   2 files changed, 2 insertions(+), 2 deletions(-)
>>>
>>> diff --git a/tools/libs/guest/Makefile.common b/tools/libs/guest/Makefile.common
>>> index b928a4a246..03dfcee7fa 100644
>>> --- a/tools/libs/guest/Makefile.common
>>> +++ b/tools/libs/guest/Makefile.common
>>> @@ -7,6 +7,7 @@ OBJS-y += xg_private.o
>>>   OBJS-y += xg_domain.o
>>>   OBJS-y += xg_suspend.o
>>>   OBJS-y += xg_resume.o
>>> +OBJS-y += xg_offline_page.o
>>>   ifeq ($(CONFIG_MIGRATE),y)
>>>   OBJS-y += xg_sr_common.o
>>>   OBJS-$(CONFIG_X86) += xg_sr_common_x86.o
>>> @@ -17,7 +18,6 @@ OBJS-$(CONFIG_X86) += xg_sr_save_x86_pv.o
>>>   OBJS-$(CONFIG_X86) += xg_sr_save_x86_hvm.o
>>>   OBJS-y += xg_sr_restore.o
>>>   OBJS-y += xg_sr_save.o
>>> -OBJS-y += xg_offline_page.o
>>>   else
>>>   OBJS-y += xg_nomigrate.o
>>>   endif
>>
>> This looks wrong to me. There are x86-specifics in that file, which shouldn't
>> be built on Arm. And the name of the file also doesn't indicate any relation
>> to CPU management.
> 
> xen-hptool requires xg_offline_page as it has both CPU and memory 
> hotplug commands. Without building xg_offline_page it fails with
> 
> xen-hptool: symbol lookup error: xen-hptool: undefined symbol: 
> xc_mark_page_offline, version libxenguest_4.22.0
> 
> when trying to do memory ops.
> 
> Is it an acceptable behavior?

I don't think so, no. The tool wouldn't, aiui, load at all then if built with
"bindnow" enabled.

> If so I guess we can build xg_offline page only on x86.

We still need to, imo. But the tool still needs to be usable no matter how
specifically it is built. It should avoid referencing xg_offline_page.c
functions when built for non-x86.

Jan


From xen-devel-bounces@lists.xenproject.org Thu Apr 16 07:33:39 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 16 Apr 2026 07:33:39 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1283007.1565316 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wDHED-0006GN-N3; Thu, 16 Apr 2026 07:33:33 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1283007.1565316; Thu, 16 Apr 2026 07:33: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 1wDHED-0006GG-IA; Thu, 16 Apr 2026 07:33:33 +0000
Received: by outflank-mailman (input) for mailman id 1283007;
 Thu, 16 Apr 2026 07:33: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 1wDHEB-0006GA-HL
 for xen-devel@lists.xenproject.org; Thu, 16 Apr 2026 07:33:31 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wDHE9-00Bzbm-Ek
 for xen-devel@lists.xenproject.org; Thu, 16 Apr 2026 09:33:29 +0200
Received: from [10.42.69.12] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <Michal.Orzel@amd.com>)
 id 69e090be-e002-0a2a0a5209dd-0a2a450c8770-30
 for <xen-devel@lists.xenproject.org>; Thu, 16 Apr 2026 09:33:29 +0200
Received: from [40.107.209.41]
 (helo=PH8PR06CU001.outbound.protection.outlook.com)
 by tlsNG-d25034.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.0)
 (envelope-from <Michal.Orzel@amd.com>)
 id 69e090c7-f40c-0a2a450c0019-286bd129d959-3
 for <xen-devel@lists.xenproject.org>; Thu, 16 Apr 2026 09:33:28 +0200
Received: from SJ0PR13CA0006.namprd13.prod.outlook.com (2603:10b6:a03:2c0::11)
 by DS0PR12MB8295.namprd12.prod.outlook.com (2603:10b6:8:f6::21) with
 Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9818.25; Thu, 16 Apr
 2026 07:33:23 +0000
Received: from BY1PEPF0001AE1B.namprd04.prod.outlook.com
 (2603:10b6:a03:2c0:cafe::63) by SJ0PR13CA0006.outlook.office365.com
 (2603:10b6:a03:2c0::11) with Microsoft SMTP Server (version=TLS1_3,
 cipher=TLS_AES_256_GCM_SHA384) id 15.20.9769.49 via Frontend Transport; Thu,
 16 Apr 2026 07:33:23 +0000
Received: from satlexmb07.amd.com (165.204.84.17) by
 BY1PEPF0001AE1B.mail.protection.outlook.com (10.167.242.103) with Microsoft
 SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id
 15.20.9769.17 via Frontend Transport; Thu, 16 Apr 2026 07:33:23 +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.17; Thu, 16 Apr
 2026 02:33:22 -0500
Received: from [10.252.147.171] (10.180.168.240) by satlexmb08.amd.com
 (10.181.42.217) with Microsoft SMTP Server id 15.2.2562.17 via Frontend
 Transport; Thu, 16 Apr 2026 02:33:21 -0500
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@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=k+OwDvswQJ02CQ1kYV+tfGQCael/3eI4UrAx74FifOatTA/NSlOIsWiTxCFp65WW+8WuzKSEprumvIzJGq2LzP3mhsWPxm3eT8QcVbJZOT9I/D+KzxI5bE7NclsIqwBnOBr4Lfcox3elj5R9JkIkU52GvIWRdJyBREN0ckT4bYoxQgTIKEMBRs7VQTj1O26X+DPNIDEIABcxaATPaTXmhT6GEvX1WY27JyvYMufuzvEZXuzX26hjvCHGhwEW9jF6rJnoy55E7xnlKZZTcGwdw3EDctKvkaS4RfiOZcc3A+LINWCz9w2SHGRdP78emaw5Jr87embtgVJKb+Ns7/Bqjw==
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com;
 s=arcselector10001;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1;
 bh=Rjz6lH4DBIsBQmGmwW1Sb4aKSYK3QlElRjNYFM4WV4s=;
 b=Zt8k0pTLlFZz8ekSdM2aJAl981bVuYDUmQHqDOM+yvl4WTHCSKOPvZoP0dSnIyc5BCMRTydamjIKvflFxSCdmNaaanoEuqk93z/mjXWPl/tYCyYMeiwDa/QYF6UzuZug8LK6QTABtlpW9OT9qHrGuSvEIg5DgrUMBhAkvX1VVTpuvTJrKzmiDLNlAJJtlwDSH1+Vel0MVqlOIDLLD11m/AdIngf/vQ7wep0xjzs+qh5woc8tL7oqW0SrusUoZC64gj9aq47ZTINWGXUxM34C9WU2zsR9IWfqqqY1c2Cjc5atsko9nRdQiPRDTXpjqFpgX4D+9dJTfZskU6M+VWlc3A==
ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass (sender ip is
 165.204.84.17) smtp.rcpttodomain=arm.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=Rjz6lH4DBIsBQmGmwW1Sb4aKSYK3QlElRjNYFM4WV4s=;
 b=p9PaRl/icFX+x3vsnMq1BR/Sr8jyjxfCL8De18g82sTlIsoaOEd2OsUtvNG/WIdqpmsM5qVnEG6deMro2z1kWkG8SyiSJuUBRiVQAbFk+XzWl4ejoNb8J8oz0X2gev5/971TdVBSFyrJBD1A9XvVsnLdATWYURgqLxIvGSjOZzg=
X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 165.204.84.17)
 smtp.mailfrom=amd.com; dkim=none (message not signed)
 header.d=none;dmarc=pass action=none header.from=amd.com;
Received-SPF: Pass (protection.outlook.com: domain of amd.com designates
 165.204.84.17 as permitted sender) receiver=protection.outlook.com;
 client-ip=165.204.84.17; helo=satlexmb07.amd.com; pr=C
Message-ID: <1ab0c888-e890-490e-adad-938222f31a62@amd.com>
Date: Thu, 16 Apr 2026 09:33:16 +0200
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH 5/6] xen/dt-overlay: support phandle-based targeting in
 overlay_get_nodes_info
To: Luca Fancellu <Luca.Fancellu@arm.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>
References: <20260415113700.107915-1-michal.orzel@amd.com>
 <20260415113700.107915-6-michal.orzel@amd.com>
 <519E2133-12B9-4E51-A7A5-FDBADF82159E@arm.com>
From: "Orzel, Michal" <michal.orzel@amd.com>
Content-Language: en-US
In-Reply-To: <519E2133-12B9-4E51-A7A5-FDBADF82159E@arm.com>
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: 7bit
X-EOPAttributedMessage: 0
X-MS-PublicTrafficType: Email
X-MS-TrafficTypeDiagnostic: BY1PEPF0001AE1B:EE_|DS0PR12MB8295:EE_
X-MS-Office365-Filtering-Correlation-Id: 4190388a-c2b8-4a1e-1eb1-08de9b8a70d0
X-MS-Exchange-SenderADCheck: 1
X-MS-Exchange-AntiSpam-Relay: 0
X-Microsoft-Antispam:
	BCL:0;ARA:13230040|82310400026|36860700016|376014|1800799024|18002099003|56012099003|22082099003;
X-Microsoft-Antispam-Message-Info:
	mFVp1ILR11HMTH8C5IBcCZ7sX6HmwafW/jsYErRrsxdl5r+KTC8rQhjAr2mYEycMKdxbmYAtj4B6cHgJ5FpX7r90rE7ZEZ9mOupZ7m22nGC15BKyGLjlk1Hj18MIiEq8k8qd1ttIF/MPhfb5+U7LSiKpY96YDGFI9YofPWlL4ygA+uffliPv6+zt+1epO5LRll6teEDZr43wiOKNyI7vr+qRNF9H3eCpF8UltmtgQFIgTkEsqbq9H6lJzsiPAsMrxS+MdxMwv3ZtetbA09PkjXsRxC827tUz+g/4h4Fe0cbYKy+aT5p/scN4gUKQLsdMC8i/omb7Sfe+/ofKPZlRp7MQJ9eVKp1tEtd1qhEQIzret4sGKauwMQQAVOqw9ymMcTrhMRNuaxNhP+imemC+RU/yvDYdDrzKeyEbC7pnNcmM0Ct8mLfeXDfQ4V7smTlUG1iIOdcuI2653RU6mriRooNh1gozj300sT2gxy46PTyPTmlFQInZWmZHCD6ahRb5foAPZHabX15XSUcE99WABIAvNJz/78HiAiF4IIFcB1btlN+TU84aWJCjrK6cqvpJ+A5ecx7AOudzRw64TK4TgRrhRwgUxqheO0SZlUvPNs/PdLqjmVEzxu9w3mQfA3FKNSE3ImZJmAgalmGGmlf0twE4Tx/Y4SvEnOurTgnstDI3rC5noxbfKGGKd74G+uZARBAtr0x2KTXjlXKDBwvda2qJfZaUCC+TVxRyGTI0YlqsXfnP+euxJD8IK2/b4k4RYYwZkbsp6I489ps7n7qP9Q==
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)(376014)(1800799024)(18002099003)(56012099003)(22082099003);DIR:OUT;SFP:1101;
X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1
X-MS-Exchange-AntiSpam-MessageData-0:
	fytqQGQRQIUwAaucP0Y+Qwm3iJbZCM848GD13rubk9pKasYvDnuEgqCPtincLSz9lm3Fb/Y9qIIENVZpZUGEwv0iFADfVLr6VUKX7td2nzzhIAWVDVIyPWNnzmujOBKfZ9gh2YZM6GUn4JeyDw+0KCnMY55PcDKosvswomVNkLwRZv8YrD8Rofx9qlPn4dfoS47BTOdZCe8KFAJNetgdlRSydXRZtZzybsClghvFoG5vkqqkxAUXtOjQp8hOn4KRknxYYtczVqS/900FC42WNATmS8gdrOU6hnDoEUPyNe4F5KMpHqqHcp1tIoR4wegHpi08weShiDwM85pDx/x6DjumP7qvsgQ5Mi0GidpKx9CcEhyrDMZwvKPKc9KfcisghPi4/RGtpVfjiVzOKXKXR7vK+PYO3+JBllqkj0k6FoudO1A5Lds9xULymg8l9+0B
X-OriginatorOrg: amd.com
X-MS-Exchange-CrossTenant-OriginalArrivalTime: 16 Apr 2026 07:33:23.2323
 (UTC)
X-MS-Exchange-CrossTenant-Network-Message-Id: 4190388a-c2b8-4a1e-1eb1-08de9b8a70d0
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:
	BY1PEPF0001AE1B.namprd04.prod.outlook.com
X-MS-Exchange-CrossTenant-AuthAs: Anonymous
X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem
X-MS-Exchange-Transport-CrossTenantHeadersStamped: DS0PR12MB8295
X-purgate-ID: tlsNG-d25034/1776324809-FF149A3D-B64F0B10/0/0
X-purgate-type: clean
X-purgate-size: 4122



On 15/04/2026 17:36, Luca Fancellu wrote:
> Hi Michal,
> 
>> On 15 Apr 2026, at 12:36, Michal Orzel <michal.orzel@amd.com> wrote:
>>
>> overlay_get_nodes_info() is called before fdt_overlay_apply() to extract
>> target paths from the overlay. This fails for overlays using phandle-based
>> targeting (target = <&label>) because DTC compiles these as unresolved
>> fixups (target = <0xffffffff>), causing fdt_overlay_target_offset() to
>> return -FDT_ERR_BADPHANDLE. Prior to this change users were forced to
>> manually modify the dtbo (even for hwdom) to switch from target to
>> target-phandle by manually inspecting also the host DTB.
>>
>> Introduce overlay_get_target_path() which directly handles the two
>> targeting cases that occur before fixup resolution:
>> - target-path: the string property is returned directly.
>> - target = <&label>: the label is found in the overlay's __fixups__
>>   node, then resolved to a path via the base DTB's __symbols__ node.
>>
>> Signed-off-by: Michal Orzel <michal.orzel@amd.com>
>> ---
>> xen/common/device-tree/dt-overlay.c | 65 ++++++++++++++++++++++++++---
>> 1 file changed, 59 insertions(+), 6 deletions(-)
>>
>> diff --git a/xen/common/device-tree/dt-overlay.c b/xen/common/device-tree/dt-overlay.c
>> index d3d4669718ac..a0dee7edb7e5 100644
>> --- a/xen/common/device-tree/dt-overlay.c
>> +++ b/xen/common/device-tree/dt-overlay.c
>> @@ -286,6 +286,63 @@ static unsigned int overlay_node_count(const void *overlay_fdt)
>>     return num_overlay_nodes;
>> }
>>
>> +/*
>> + * Resolve the target path for an overlay fragment.
>> + *
>> + * This is called before fdt_overlay_apply(), so phandle-based targets
>> + * (target = <&label>) are still unresolved (compiled as 0xffffffff by DTC).
>> + * Handle the two cases that actually occur:
>> + *  - target-path property: the path string is used directly,
>> + *  - target = <&label>: the label is looked up in the overlay's __fixups__
>> + *    node, then resolved to a path via the base DTB's __symbols__ node.
>> + *
>> + * Returns a pointer into the FDT on success, NULL on failure.
>> + */
>> +static const char *overlay_get_target_path(const void *fdt, const void *fdto,
>> +                                           int fragment)
>> +{
>> +    const char *path, *fragment_name;
>> +    int fixups_off, symbols_off, property;
>> +    int fragment_name_len;
>> +
>> +    /* Try target-path first (string-based targeting) */
>> +    path = fdt_getprop(fdto, fragment, "target-path", NULL);
>> +    if ( path )
>> +        return path;
>> +
>> +    /* Phandle-based target: resolve via __fixups__ and __symbols__ */
>> +    fixups_off = fdt_path_offset(fdto, "/__fixups__");
>> +    if ( fixups_off < 0 )
>> +        return NULL;
>> +
>> +    symbols_off = fdt_path_offset(fdt, "/__symbols__");
>> +    if ( symbols_off < 0 )
>> +        return NULL;
>> +
>> +    fragment_name = fdt_get_name(fdto, fragment, &fragment_name_len);
>> +    if ( !fragment_name )
>> +        return NULL;
>> +
>> +    fdt_for_each_property_offset(property, fdto, fixups_off)
>> +    {
>> +        const char *val, *label, *p;
>> +        int val_len;
>> +
>> +        val = fdt_getprop_by_offset(fdto, property, &label, &val_len);
>> +        if ( !val )
>> +            continue;
>> +
>> +        /* Match entries of the form "/<fragment_name>:target:0" */
>> +        for ( p = val; p < (val + val_len); p += (strlen(p) + 1) )
> 
> what guarantees us that p will be null terminated, if a malformed overlay
> is passed this strlen can read past the string, we can use strnlen having as
> upper bound a counter=val_len? decreasing counter each iteration.
> 
> Or do you think it can never happen?
In theory it can happen, in practice this is something not usually taken into
account. But we can surely stay on the defensive side and do a single check
right after fdt_getprop_by_offset to catch not-NUL terminated stringlist:
if ( !val || !val_len || val[val_len - 1] != '\0' )

In case of no other remarks, I'd do that on commit.

~Michal



From xen-devel-bounces@lists.xenproject.org Thu Apr 16 07:39:40 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 16 Apr 2026 07:39:40 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1283015.1565324 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wDHK4-0006wg-7K; Thu, 16 Apr 2026 07:39:36 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1283015.1565324; Thu, 16 Apr 2026 07:39: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 1wDHK4-0006wZ-4l; Thu, 16 Apr 2026 07:39:36 +0000
Received: by outflank-mailman (input) for mailman id 1283015;
 Thu, 16 Apr 2026 07:39:35 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <jbeulich@suse.com>) id 1wDHK3-0006wT-8I
 for xen-devel@lists.xenproject.org; Thu, 16 Apr 2026 07:39:35 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wDHK2-00HTU7-H9
 for xen-devel@lists.xenproject.org; Thu, 16 Apr 2026 09:39:34 +0200
Received: from [10.42.69.12] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <jbeulich@suse.com>)
 id 69e09235-bab6-0a2a0a5309dd-0a2a450c94be-4
 for <xen-devel@lists.xenproject.org>; Thu, 16 Apr 2026 09:39:34 +0200
Received: from [209.85.128.44] (helo=mail-wm1-f44.google.com)
 by tlsNG-d25034.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.0)
 (envelope-from <jbeulich@suse.com>)
 id 69e09236-f40c-0a2a450c0019-d155802cb838-3
 for <xen-devel@lists.xenproject.org>; Thu, 16 Apr 2026 09:39:34 +0200
Received: by mail-wm1-f44.google.com with SMTP id
 5b1f17b1804b1-488a88aeec9so101700285e9.2
 for <xen-devel@lists.xenproject.org>; Thu, 16 Apr 2026 00:39:34 -0700 (PDT)
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-488f5854163sm31390845e9.13.2026.04.16.00.39.33
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Thu, 16 Apr 2026 00:39:33 -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=google header.d=suse.com header.i="@suse.com" header.h="Content-Transfer-Encoding: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=1776325174; x=1776929974; darn=lists.xenproject.org;
        h=content-transfer-encoding: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;
        bh=lUy4IMsFKUYxEdOGRnb7lcU/LwT38X80A2ejqY9vxrs=;
        b=XsmmIFKyBOmVsH5LOCJ0T0KRdA12eAnZGJPvZSExsRvwFBnEZhZGHun83Cfz+fISeN
         44OjKubVVeFRkxUpww0freoj2t1venoGqRIE1Kaq4vxLH9p+/r/EIYm3TaYnmhmYWZCp
         9hZaRKcBwPmkY/p6LsVMyBMryJ7I6tV1LKGqD62RMQ9CpPdPOTc9Im+4wghh34Vv0ivR
         v5yk39WcIaPXCsndDhbkf0/dbUo+PGGhnk+WjCAcUFpCHtwW18YYJ4WqfklEuS66J6uP
         vGxPh6KO/RyMwKHnIfNKf8EZSBBbuUXIZPUo3MahMc7L+dm5NbsS7BQLK+W0Pksa3IFv
         IBug==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20251104; t=1776325174; x=1776929974;
        h=content-transfer-encoding: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;
        bh=lUy4IMsFKUYxEdOGRnb7lcU/LwT38X80A2ejqY9vxrs=;
        b=Hs2jiWouDixA9vrkq5YmTDHdFPf0UpVrZzfxsFooBz2oBfbMQybsCd72/rvphBWeUY
         QMT/gGWq76Qb/T1lQn41VHuQ8BKGFESjsEmo4szUqALwmeDyO8BfwEEgkQgkoqZVu4Aq
         /miduf3gtje+XNGSzae1kcn8YzdikSYPnKWAYfLuYH9OUItWYhzd+vzibpJSUuXqwYrL
         K1m8s/dDNnkBVXh+6/PS/hZbayVyxWvCZdODiwMV5bpgtKfkV0LZgGiHCgqnEpInlKxt
         Vb+k23dJj16xY11hh5z0goeONnURPSDygZMXtbg1GESz9KADJPKCkrQ4s11ZIZVWDAMm
         i08w==
X-Forwarded-Encrypted: i=1; AFNElJ82aQuA+U4Vfy2SeBOpWY/6s2Spv5G7hsrIDlqWaOAiZX5+M5LMpavRResbnOXFgWj1LkoTQeppuTM=@lists.xenproject.org
X-Gm-Message-State: AOJu0YwP90GusUrtCtkqS51725u9VO4syqN7R39EaSIPp3iLxY9xVSnS
	Fn4ipCXJ31T4ws2XQTbeANj398UHipquleqrtlEahRIFT7F92Xnl728pzyH9hg6gmA==
X-Gm-Gg: AeBDies/bvX49R9RxetmAcnq+pviFtCRBsav+pnA9mFHuoTs8QYwCDvDq012vD5YZvK
	HBIcRGFlQ4t3wiEcLfZ3V3jAXu/LaOAk+H256W3MnaEjRS8JBSjfQxoxfEPpsafWB4RQJaKRPEz
	hLhg+dRel+DSIYKWHX6BaJqDmasAJMPyeqmtq9s5VRNNCM0W1Klw6Hw4W/2Uu6b99YD2Y0hXyJm
	mgbwwSjKuZ1du8zAsenAoxpkeq+uuqVcM/7rHaXKbudezGoaf56kRNvLtlLobUkTZXbQiRkb9hG
	VLKlHYIoJuqSLol5cl0BpgHYv38y66+JKloQb1qW6tY0Ge9zs7ZVqbyjcOCblpz0wPFJupW5+ei
	EVMKhZf1Al6aQdPLkXON63+h8dw58MquQyNNq8h7QvQUaBAB3qeuz6Nuna269cumDUfZ7zOumyh
	a9AXSuv0sONVUgnIc/83ueKHiLkDOkUkXbpLMr1DpGNJhLjZh1xToDhwxPr292A31qZIq3l9Fiq
	MxRnVgCl97dnqkaraITBLJ0bA==
X-Received: by 2002:a05:600c:19c8:b0:483:709e:f238 with SMTP id 5b1f17b1804b1-488d68ab2ccmr333871375e9.29.1776325173722;
        Thu, 16 Apr 2026 00:39:33 -0700 (PDT)
Message-ID: <15fa364f-03b1-433b-b759-9f87da338cac@suse.com>
Date: Thu, 16 Apr 2026 09:39:36 +0200
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH 1/4] tools/tests/alloc: Unit and Integration Test
 Framework for page_alloc.c
To: Bernhard Kaindl <bernhard.kaindl@citrix.com>
Cc: Anthony PERARD <anthony.perard@vates.tech>, xen-devel@lists.xenproject.org
References: <cover.1776273656.git.bernhard.kaindl@citrix.com>
 <bbd242400a624465bebae0fa2b7591acd37c7236.1776273656.git.bernhard.kaindl@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: <bbd242400a624465bebae0fa2b7591acd37c7236.1776273656.git.bernhard.kaindl@citrix.com>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 7bit
X-purgate-ID: tlsNG-d25034/1776325174-81D53A3D-AA714608/0/0
X-purgate-type: clean
X-purgate-size: 1935

On 15.04.2026 19:34, Bernhard Kaindl wrote:
> Add a test framefork for unit and integration test suites testing
> the Xen page allocator module xen/common/page_alloc.c in isolation.
> 
> It enables test suites to verify the behaviour of the page allocator
> in situations that are easier to create and validate in isolation,
> with full control over a synthetic Xen heap state and visibility
> into the allocator and domain state.
> 
> Signed-off-by: Bernhard Kaindl <bernhard.kaindl@citrix.com>

Just two remarks (nits?) for now:

> ---
>  tools/tests/Makefile                   |   1 +
>  tools/tests/alloc/.gitignore           |   6 +
>  tools/tests/alloc/Makefile             | 141 ++++++++
>  tools/tests/alloc/README.rst           |  31 ++
>  tools/tests/alloc/check-asserts.h      | 347 ++++++++++++++++++
>  tools/tests/alloc/harness.h            |  69 ++++
>  tools/tests/alloc/hypervisor-macros.h  | 101 ++++++
>  tools/tests/alloc/libtest-page_alloc.h | 356 +++++++++++++++++++
>  tools/tests/alloc/mock-page_list.h     | 307 ++++++++++++++++
>  tools/tests/alloc/page_alloc-wrapper.h | 465 +++++++++++++++++++++++++
>  tools/tests/alloc/page_alloc_shim.h    | 433 +++++++++++++++++++++++
>  11 files changed, 2257 insertions(+)

This is a lot of new code.

>  create mode 100644 tools/tests/alloc/.gitignore
>  create mode 100644 tools/tests/alloc/Makefile
>  create mode 100644 tools/tests/alloc/README.rst
>  create mode 100644 tools/tests/alloc/check-asserts.h
>  create mode 100644 tools/tests/alloc/harness.h
>  create mode 100644 tools/tests/alloc/hypervisor-macros.h
>  create mode 100644 tools/tests/alloc/libtest-page_alloc.h
>  create mode 100644 tools/tests/alloc/mock-page_list.h
>  create mode 100644 tools/tests/alloc/page_alloc-wrapper.h
>  create mode 100644 tools/tests/alloc/page_alloc_shim.h

No underscores please in new files' names when dashes will do.

Jan


From xen-devel-bounces@lists.xenproject.org Thu Apr 16 07:50:42 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 16 Apr 2026 07:50:42 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1283028.1565333 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wDHUc-0001IW-86; Thu, 16 Apr 2026 07:50:30 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1283028.1565333; Thu, 16 Apr 2026 07: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 1wDHUc-0001IP-4l; Thu, 16 Apr 2026 07:50:30 +0000
Received: by outflank-mailman (input) for mailman id 1283028;
 Thu, 16 Apr 2026 07:50:28 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <jbeulich@suse.com>) id 1wDHUa-0001IJ-QZ
 for xen-devel@lists.xenproject.org; Thu, 16 Apr 2026 07:50:28 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wDHUZ-004srb-KP
 for xen-devel@lists.xenproject.org; Thu, 16 Apr 2026 09:50:27 +0200
Received: from [10.42.69.2] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <jbeulich@suse.com>)
 id 69e094c1-bab6-0a2a0a5309dd-0a2a4502b9a6-14
 for <xen-devel@lists.xenproject.org>; Thu, 16 Apr 2026 09:50:27 +0200
Received: from [209.85.128.52] (helo=mail-wm1-f52.google.com)
 by tlsNG-720697.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.1)
 (envelope-from <jbeulich@suse.com>)
 id 69e094c3-af86-0a2a45020019-d1558034dd12-3
 for <xen-devel@lists.xenproject.org>; Thu, 16 Apr 2026 09:50:27 +0200
Received: by mail-wm1-f52.google.com with SMTP id
 5b1f17b1804b1-4887f49ec5aso92438315e9.1
 for <xen-devel@lists.xenproject.org>; Thu, 16 Apr 2026 00:50:27 -0700 (PDT)
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-488f57da2aesm56616015e9.0.2026.04.16.00.50.26
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Thu, 16 Apr 2026 00:50:26 -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=google header.d=suse.com header.i="@suse.com" header.h="Content-Transfer-Encoding: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=1776325827; x=1776930627; darn=lists.xenproject.org;
        h=content-transfer-encoding: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;
        bh=tMXhL46ToYC2144wJofpwWHHdAPTGr07OEbGF3f56j8=;
        b=JkX1bfIDVS22QpHmcgMYfpc36adLDI01ES+siqTh9Lj74NE7FcOEkuhm1v1XHBbfZF
         fcZCGVbVV4YIpF2rqbJG+FVDZCGUuSmzEAZ1y6etYgYm86ZOFuQe6lvg3mmMyCszYJjR
         6exkCldvFfxnU0vBtlXGNPzk6Lkv58mfl3rPPXdz++k1GFuTlMUtKAC55/3OrkTIlZnk
         n9NtZ2Ns82NDIpm5KhjZ99bNIFUOdW2NsNVEyLDbAj0v2xcNgAWEKuc4uciCeklkaVIM
         O2ScrPWLJaZve7ooOkpUB+UEc6dUS22+VdnjQzE/hXC+bncMUzvyZdzUSnEXfI1nLxa9
         1vUw==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20251104; t=1776325827; x=1776930627;
        h=content-transfer-encoding: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;
        bh=tMXhL46ToYC2144wJofpwWHHdAPTGr07OEbGF3f56j8=;
        b=i1yKWRHwruKMxYFI6nw8Khr4auwMphPk9EkMQtuRlqCbE+bAIPtY8XiVEPGrssBzkX
         vEXOh5gOCUuoTjUfsXGlVFR+Dt2DAlle8Xl4xElMuJ/V0MFp2U+zXPFM9Cbwi0TNjc7K
         UMdysjsq+3rPh7iWUH11krgFRIEmsq0/ZnA8Emc13o5Cs6yC9ay71S63K7Xyywz1YxSy
         Pd7E2oZoPjCMqRVAFyhn0IGatvZLlbwdmgct0pIdfeWFeW/LSSBGRvD/XD5lLXjqp0Bl
         jrjU79hoQSFsX820iHNa7MPtcUlys7NUoXSKJLoyaEiuQJvlyTksfVroaUMBRwTO3eBU
         GjSg==
X-Forwarded-Encrypted: i=1; AFNElJ9aWVhp7c4vM61x0EW9xlHp7GEcxEnoyv+C+xb+mYfaqNDb/BlErRawWmtW4jAKAk9UivYnDLDPYRo=@lists.xenproject.org
X-Gm-Message-State: AOJu0YxOLnIggkfFz/qkY3QXVVufGYsjJFwnPxygKHoRlR2523QUIvMO
	FWSARF95hVAjBZgMmLAcvCc5rladklOMLLmBXKoB7pGjW/YcqsVXRzNFKV7btfsAPg==
X-Gm-Gg: AeBDieskoXY10mkBN3kLxFlaxI6TdRNwSNisXCepm3L9QI8FFR41hVylndlQBGQ2hXO
	a7BE1fabxGEuuB26l+yGQ06QrfcyPdNRPq2z469OJPG87bM+CmTYv4sGVKswQIgv/LzyzPLvJAt
	dLB+j4XicceUdx9/ZEiQirlIrCJ7W3wUsTK7M+brCyYx4qg1Oj6Otz0erhjX0jl3bwV9H38bDBQ
	2mJrLR8OumSGm1tJinaAd6rkb8XXguw8AbEbjkO15gLqCtw2x//H220mfuCE8dCSH5z7M2hLHyw
	fgn9DwpiJpUQ99EEjZpfGnrWwtWsQnr+9loURArV4PJKtDV6jxOAGaJ6BJKcGQB9s3otfAKnWlM
	YK/f2ti9FwX5AViW0YW6xeD6S4/IOS6xDlAxOA2EgGNRg3SlRS4E0/4D1KetZgUMGV8RpIZej6O
	ebKnzf+XV9QcgW5m0oCLEnORVyshX7IVuPFW1V4Eh5gSqWAiMLKC2f6KMQIck5F2Ol0uTeD7hmG
	tfLTv9wYOUmoM+BoBd18Bm4Lw==
X-Received: by 2002:a05:600c:4709:b0:488:ae6c:42c0 with SMTP id 5b1f17b1804b1-488d67d2ab2mr298039035e9.7.1776325826868;
        Thu, 16 Apr 2026 00:50:26 -0700 (PDT)
Message-ID: <feee06f0-584a-4b2c-b761-c3b77627c26d@suse.com>
Date: Thu, 16 Apr 2026 09:50:29 +0200
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH] xen/riscv: allow Xen to use SSTC while hiding it from
 guests
To: Andrew Cooper <andrew.cooper3@citrix.com>,
 Oleksii Kurochko <oleksii.kurochko@gmail.com>
Cc: Romain Caritey <Romain.Caritey@microchip.com>,
 Alistair Francis <alistair.francis@wdc.com>,
 Connor Davis <connojdavis@gmail.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.pau@citrix.com>,
 Stefano Stabellini <sstabellini@kernel.org>, xen-devel@lists.xenproject.org
References: <eba232ac5a338332ddedc2cb084e0c04ee8744c2.1775835741.git.oleksii.kurochko@gmail.com>
 <9eb6c6d9-8e1c-40f6-a44b-579df213bda0@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: <9eb6c6d9-8e1c-40f6-a44b-579df213bda0@citrix.com>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 7bit
X-purgate-ID: tlsNG-720697/1776325827-82969161-BA3636A7/0/0
X-purgate-type: clean
X-purgate-size: 1738

On 10.04.2026 19:41, Andrew Cooper wrote:
> On 10/04/2026 4:45 pm, Oleksii Kurochko wrote:
>> diff --git a/xen/arch/riscv/time.c b/xen/arch/riscv/time.c
>> index 7efa76fdbcb1..80f0e9ddae6a 100644
>> --- a/xen/arch/riscv/time.c
>> +++ b/xen/arch/riscv/time.c
>> @@ -91,4 +90,23 @@ void __init preinit_xen_time(void)
>>          panic("%s: ACPI isn't supported\n", __func__);
>>  
>>      boot_clock_cycles = get_cycles();
>> +
>> +    /* set_xen_timer must have been set by sbi_init() already */
>> +    ASSERT(set_xen_timer);
>> +
>> +    if ( riscv_isa_extension_available(NULL, RISCV_ISA_EXT_sstc) )
>> +    {
>> +        set_xen_timer = sstc_set_xen_timer;
>> +
>> +        /*
>> +         * A VS-timer interrupt becomes pending whenever the value of
>> +         * (time + htimedelta) is greater than or equal to vstimecmp CSR.
>> +         * Thereby to avoid spurious VS-timer irqs set vstimecmp CSR to
>> +         * ULONG_MAX.
>> +         */
>> +        csr_write(CSR_VSTIMECMP, ULONG_MAX);
>> +#ifdef CONFIG_RISCV_32
>> +        csr_write(CSR_VSTIMECMPH, ULONG_MAX);
>> +#endif
> 
> You've got this pattern twice in this patch alone, and these aren't the
> only CSRs which are formed of pairs to get a 64bit value in 32bit mode.
> 
> Sadly, the numbering isn't consistent for the high constant, but we can
> let the compiler do most of the hard work for us.
> 
> #ifdef CONFIG_RISCV_32
> # define __csr_write32h(csr, val) csr_write(csr ## H, (val) >> 32)
> #else
> # define __csr_write32h(csr, val) (void)(csr, val)

Just to mention: Since the comma is an operator here (not a lexical element
separating function arguments), more parenthesization may be needed for
Misra's sake.

Jan


From xen-devel-bounces@lists.xenproject.org Thu Apr 16 07:55:52 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 16 Apr 2026 07:55:52 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1283035.1565342 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wDHZj-0001rO-PV; Thu, 16 Apr 2026 07:55:47 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1283035.1565342; Thu, 16 Apr 2026 07:55: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 1wDHZj-0001rH-M0; Thu, 16 Apr 2026 07:55:47 +0000
Received: by outflank-mailman (input) for mailman id 1283035;
 Thu, 16 Apr 2026 07:55:46 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <jbeulich@suse.com>) id 1wDHZi-0001rB-Bp
 for xen-devel@lists.xenproject.org; Thu, 16 Apr 2026 07:55:46 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wDHZh-004uAU-KK
 for xen-devel@lists.xenproject.org; Thu, 16 Apr 2026 09:55:45 +0200
Received: from [10.42.69.1] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <jbeulich@suse.com>)
 id 69e095ff-2eae-0a2a0a5409dd-0a2a4501a7ac-8
 for <xen-devel@lists.xenproject.org>; Thu, 16 Apr 2026 09:55:45 +0200
Received: from [209.85.128.41] (helo=mail-wm1-f41.google.com)
 by tlsNG-d62444.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.1)
 (envelope-from <jbeulich@suse.com>)
 id 69e09601-c1f2-0a2a45010019-d1558029c1b9-3
 for <xen-devel@lists.xenproject.org>; Thu, 16 Apr 2026 09:55:45 +0200
Received: by mail-wm1-f41.google.com with SMTP id
 5b1f17b1804b1-4838c15e3cbso71976625e9.3
 for <xen-devel@lists.xenproject.org>; Thu, 16 Apr 2026 00:55:45 -0700 (PDT)
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-488f0eaffaasm38296185e9.23.2026.04.16.00.55.44
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Thu, 16 Apr 2026 00:55:44 -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=google header.d=suse.com header.i="@suse.com" header.h="Content-Transfer-Encoding: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=1776326145; x=1776930945; darn=lists.xenproject.org;
        h=content-transfer-encoding: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;
        bh=4QyDIOCsbMq+hB5YoKzP5G/4oefbQcwjMhuS5duvxx4=;
        b=CjA2iqdIyZCLvSR6ECqoPL/5kdzzTw+oDy7HVH5NYp0+QljO4bdIhePM5Vj8Bxbutr
         RjwDg3Nart9nJ4zfMb6jJzOY02wNfMFx0hV8eEBkUtNx+PWNpS7PQVG+9BDJZ7VLFk/I
         KLeorhegcz0jweYn/K3Gsb+MtBEktQY22yGLC3nC3Jcc5BuXvMBD+tGMOAFVr6JOJQnC
         UdRFxs2JZSkdpAKxX2tTZe0PoxDUfVshxcS0JatOUXV8XOt/adKoF3kcly/2Q1ixfnt4
         xkBOQQ9U2gj9G5J99udhuhXJVUKqMWQu08t1IAJIqckkC34xURtBEw1WEo0JtRQVMwrD
         DtpQ==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20251104; t=1776326145; x=1776930945;
        h=content-transfer-encoding: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;
        bh=4QyDIOCsbMq+hB5YoKzP5G/4oefbQcwjMhuS5duvxx4=;
        b=khL9SW8GAkkbPR6L7e6hdNP2pD0O/dPDGQkH9uHTtFJ+WNacEKS58XhyeChtqxQ+yS
         Hpmja196qSkn5N2EW2eI0+0WBhwH5bcc7tooRG1qIdjMEu2qyPkeGZuB1UtEBquVQQoy
         EYUU3pxIlXjAxqFxLn809d8seI+ToUfJPptsPV6L0nOr3RDMp6bAO0chzp21R6kluYnm
         B9qbGI9R1dgFYKnh8QFHMAl++/BWqs17ST/j1AmwuNWcwsyiCfk6lzdmigraQgZTproa
         Mp3CvUHWWT+mn/KegSQKzTmAy+fPA+7kU6kCjmgfZ6nbbkmyYPhfFyZB7At9e3R8Y5hs
         irvg==
X-Forwarded-Encrypted: i=1; AFNElJ/vgRa4GHjMS5GpFlNe/tUx8rBmpHB3cE7FCSfNEl5N7yo6wom2Ubr4y1U2wDqICnrSJOEZAaoRLW4=@lists.xenproject.org
X-Gm-Message-State: AOJu0YwgTAN3PgEk9TRU5TvcM2IuGdd4aDsXtNJTuIbkSgmOEqVb8fQ2
	xy0ik5CedtF9wsP3ozGe28Www/HWCAN4mjGpBLgY+J7B2Kcw5cASwv8ox3Qk13ygpQ==
X-Gm-Gg: AeBDievQRJFf4ffaVI2FnozTwkMMvY/i229QJ/cg7s3q7x/IEU91yv/3fpEptf0SsaI
	fFpyKS3uEXdHUQjOw+LMG8DmB7AnCAx7xYZST7T0ofB4AxZQ285cUlYmUAZGa0YDL6oNW6U4BtZ
	dWc/rXVMcxWch64I0hohT5MNV7sFs+P9kLiGc2WDSGnv03iwmGyu21gYbPA7iy5iQycn/a9ifgC
	BrcOmZCwcu5p4U3UsXufp2yFcsJGZcwkaceS7AeEiPtKXQcfe2hbTXcSOERcXkJyI4ocv61SdJ4
	3cv2ZovhP47pwm2Eqe6/iboVkXWD/lAVnSSNMqjgeBa1D8kmuIZVYBEqEfkc0EKNsV14p3tUBDK
	z8dA+6qUeQ1E5jorRTuFbPOlhIjhj/yWxLYeqE5WZ4aRyHhfpkXAmoqIP9h7TcriajjqZDfe9nk
	NOq4IPGpaOdIZMilpyqolken8/khs4i3i/eQyVOJRGKf5POjoLub0C3VfEoxu6duHZCxVFiGGDL
	ZZ2sqCUiUMOjkAhlfSl61x86A==
X-Received: by 2002:a05:600c:5303:b0:488:b196:d249 with SMTP id 5b1f17b1804b1-488d67bf74fmr331917165e9.5.1776326144980;
        Thu, 16 Apr 2026 00:55:44 -0700 (PDT)
Message-ID: <636b5d74-6383-475f-af4c-c4964bb40bde@suse.com>
Date: Thu, 16 Apr 2026 09:55:47 +0200
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH 2/2] xen/cpu: round up cpu_khz calculations
To: Roger Pau Monne <roger.pau@citrix.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>,
 Alistair Francis <alistair.francis@wdc.com>,
 Connor Davis <connojdavis@gmail.com>,
 Oleksii Kurochko <oleksii.kurochko@gmail.com>,
 Andrew Cooper <andrew.cooper3@citrix.com>,
 Teddy Astie <teddy.astie@vates.tech>, xen-devel@lists.xenproject.org
References: <20260414103327.7420-1-roger.pau@citrix.com>
 <20260414103327.7420-3-roger.pau@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: <20260414103327.7420-3-roger.pau@citrix.com>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
X-purgate-ID: tlsNG-d62444/1776326145-B6265FF4-04142350/0/0
X-purgate-type: clean
X-purgate-size: 730

On 14.04.2026 12:33, Roger Pau Monne wrote:
> All arches truncate the cpu_khz without taking into account the less
> significant digits.  Instead use DIV_ROUND_UP() when scaling from Hz to kHz
> to get as more accurate kHz value.
> 
> Signed-off-by: Roger Pau Monné <roger.pau@citrix.com>
> ---
> While the possibly more accurate value is nice, I'm not sure it's actually
> fixing any functional bug, and hence the lack of "Fixes:" tag.

With, as suggested by Tu, DIV_ROUND() used instead (which then statistically
indeed is an improvement in accuracy)

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

As it's only statistically, nevertheless there is a risk of (perceived)
regressions, just to mention it.

Jan


From xen-devel-bounces@lists.xenproject.org Thu Apr 16 08:00:43 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 16 Apr 2026 08:00:43 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1283056.1565350 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wDHeS-0004AE-LU; Thu, 16 Apr 2026 08:00:40 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1283056.1565350; Thu, 16 Apr 2026 08: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 1wDHeS-0004A7-If; Thu, 16 Apr 2026 08:00:40 +0000
Received: by outflank-mailman (input) for mailman id 1283056;
 Thu, 16 Apr 2026 08:00:38 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <jbeulich@suse.com>) id 1wDHeQ-0004A1-Hx
 for xen-devel@lists.xenproject.org; Thu, 16 Apr 2026 08:00:38 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wDHeP-008lFI-E8
 for xen-devel@lists.xenproject.org; Thu, 16 Apr 2026 10:00:37 +0200
Received: from [10.42.69.5] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <jbeulich@suse.com>)
 id 69e09723-2eae-0a2a0a5409dd-0a2a450581bc-4
 for <xen-devel@lists.xenproject.org>; Thu, 16 Apr 2026 10:00:37 +0200
Received: from [209.85.221.42] (helo=mail-wr1-f42.google.com)
 by tlsNG-c201ff.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.1)
 (envelope-from <jbeulich@suse.com>)
 id 69e09725-aaa8-0a2a45050019-d155dd2adccd-3
 for <xen-devel@lists.xenproject.org>; Thu, 16 Apr 2026 10:00:37 +0200
Received: by mail-wr1-f42.google.com with SMTP id
 ffacd0b85a97d-43cfe71e5d3so5942623f8f.0
 for <xen-devel@lists.xenproject.org>; Thu, 16 Apr 2026 01:00:37 -0700 (PDT)
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-43ead3d5c8fsm12169840f8f.19.2026.04.16.01.00.34
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Thu, 16 Apr 2026 01:00:35 -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=google header.d=suse.com header.i="@suse.com" header.h="Content-Transfer-Encoding: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=1776326437; x=1776931237; darn=lists.xenproject.org;
        h=content-transfer-encoding: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;
        bh=XKZwicmqb2cHpd/GbOmMhjuShjCWstgKPs70YGlsOyY=;
        b=PsiH7BSAfcFn2hbqfCUVKSeF5HbmqaK7qq8Cno9a/kTjtrTBdImk8Gc5oCtghRezRL
         RGvftkMJoorQGuZwo0749KxI5E/NjVrA5V+UujwQ8A+lfFKpNIqhjs2e4Mn1JvzGc3Xn
         9MBkooRCb3SNf9IAy+XKfJazXpevDcsWmfqnP7L6wLNXOyRZdIcfWVJK1bdVjigVlCbu
         jbpEeGCyByT/tanWzrBSgALw4n/DCh+XUeoiDtA8XHpzcQgS2zwIwrFWE7RuOHuTarZi
         nKyLQgm3KDFA469MI1+7PXDsjnvrgDkysg3aUbXtiCQjUm/YGBWQdi1K00QRTth3zP4U
         dbrg==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20251104; t=1776326437; x=1776931237;
        h=content-transfer-encoding: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;
        bh=XKZwicmqb2cHpd/GbOmMhjuShjCWstgKPs70YGlsOyY=;
        b=WAn94WJWmBIPZqJvDoVRdmag7azWe/05294Jd1Sf0GHey+WCw1dkGydumEhZu+ePnl
         2k2R78kbCpxQ/bVAaLY6KUrJkZqc7xIILlUArrBgnTPF2K2K9rKF5uQGfy+9y2mFTPTK
         c6o/Z2mhpKDdRFMdO5lWrQO3D9XhlVyPqR8aAlqK6DuqdsmX8rlYLu0sk3U3EvsYnyfP
         OfFFxaXLO39bS8EwokrtYxB1KMlJrACkiHZ1Jpqy2iX7qYZqzv8SyG0ro9/CwW+vwWMU
         jp/oMlLFD/sfD34eDJQW6g5zd5BxppkqV3phtMfKTX6VYLpFDX4Dq8u9sKREF2WBogcY
         VB3w==
X-Forwarded-Encrypted: i=1; AFNElJ/AzvKtmAuEttyyRkLATh5GImCtz0d18p8mdwkMnB4Ek/nZyOjS1zKSgWGLUTojX9OF7l7sTopE9x0=@lists.xenproject.org
X-Gm-Message-State: AOJu0YxX+uUDBuRUXx5iEjQtzZVOvOlGbH3rAeaxsIslomojYRYm7Or4
	KZjdoraaBu6PSHb9+PYfHMzshHjaHEa3ZAwbBksCzPfsKpUox0/K+XrBlszdzahbXw==
X-Gm-Gg: AeBDietYSMF6YAO1ko5BYTwwc1j6oPDys1JAZ8dvMdcGdFL5MviTNZf4Cy3AS5K32lX
	EBwdDDXAxsKhNtB+4Rlr8ORvZYE+vFdBA+UDTxPgYc/kPb7i9d/n5+a1M3Zz/erl5+dBf5x6vjv
	jqtphLhZpoNmHLspHlJinQiRwN9HHfulQ1LK8g1ylIh+kq+JhV61nAzaamgQTOhMYFgyTTFfr+L
	BdWr/UzbpUAbPq4v1Z5HjehBRJLqWY0+/td42CJgbCRNdjQ3av7RfNBSOgmb2g3NXtjFEZcpvPg
	Ss8HYKLw7+ik/c4E+T7x/8VeEAXBgmDC+1wYxQQ2HwwDDf5WQ4A3bbTYpSDlGdaIGKzyujdtNkb
	/uL1dlfWS4feDl2ZWraDpHviJRT3nQ1dppvBWhXlkSYjHzS7Qdl08BBzBJZdDc0ZPCVLRkvltFq
	XV5YYTNQo8RRecvboK9hlqyzi3ag2Z/sq6t2JRWzGNRXUIwai9wEBouiCKRbzOWamPsA4s3Th3n
	A4GiBY+spgA/Ze4pcm7NzP2fg==
X-Received: by 2002:a05:6000:1a8d:b0:43d:1bf6:30f3 with SMTP id ffacd0b85a97d-43d6424c4f6mr36834838f8f.14.1776326435656;
        Thu, 16 Apr 2026 01:00:35 -0700 (PDT)
Message-ID: <4347d816-f838-443c-aaed-5e0bf615bbf9@suse.com>
Date: Thu, 16 Apr 2026 10:00:37 +0200
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH] xen/sched: fix scheduler callback verification on init
To: Ruslan Ruslichenko <ruslichenko.r@gmail.com>
Cc: volodymyr_babchuk@epam.com, Ruslan_Ruslichenko@epam.com,
 Dario Faggioli <dfaggioli@suse.com>, Juergen Gross <jgross@suse.com>,
 George Dunlap <gwd@xenproject.org>, xen-devel@lists.xenproject.org
References: <20260410164039.1000284-1-ruslichenko.r@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: <20260410164039.1000284-1-ruslichenko.r@gmail.com>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 7bit
X-purgate-ID: tlsNG-c201ff/1776326437-E23D8443-AB5D4AF8/0/0
X-purgate-type: clean
X-purgate-size: 1001

On 10.04.2026 18:40, Ruslan Ruslichenko wrote:
> From: Ruslan Ruslichenko <Ruslan_Ruslichenko@epam.com>
> 
> During core scheduler initialization, each registered scheduler
> is sanity tested in two steps:
> 
> - it must provide required callbacks (e.g. init, do_schedule).
> - if global_init callback is present, it must succeed.
> 
> If any of the steps fail, scheduler entry is cleared in global
> 'schedulers' array.
> 
> However, in the current implementation, if verification fails during
> the first step, the scheduler entry is cleared but verification
> sequence is not interrupted. This lead to NULL pointer dereference
> when subsequent required callbacks verified, and possible during
> the second step.
> 
> The patch fixes the crashes by adding check inside sched_test_func
> macro and skipping the call to a global_init if first step did not pass.
> 
> Signed-off-by: Ruslan Ruslichenko <Ruslan_Ruslichenko@epam.com>

This likely also wants a Fixes: tag.

Jan


From xen-devel-bounces@lists.xenproject.org Thu Apr 16 08:14:56 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 16 Apr 2026 08:14:56 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1283066.1565361 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wDHs7-00060n-QS; Thu, 16 Apr 2026 08:14:47 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1283066.1565361; Thu, 16 Apr 2026 08:14: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 1wDHs7-00060g-MM; Thu, 16 Apr 2026 08:14:47 +0000
Received: by outflank-mailman (input) for mailman id 1283066;
 Thu, 16 Apr 2026 08:14:46 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <jbeulich@suse.com>) id 1wDHs6-00060a-O5
 for xen-devel@lists.xenproject.org; Thu, 16 Apr 2026 08:14:46 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wDHs5-004zU6-Eb
 for xen-devel@lists.xenproject.org; Thu, 16 Apr 2026 10:14:45 +0200
Received: from [10.42.69.7] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <jbeulich@suse.com>)
 id 69e09a70-bab6-0a2a0a5309dd-0a2a4507d11c-26
 for <xen-devel@lists.xenproject.org>; Thu, 16 Apr 2026 10:14:45 +0200
Received: from [209.85.128.49] (helo=mail-wm1-f49.google.com)
 by tlsNG-ef75cf.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.1)
 (envelope-from <jbeulich@suse.com>)
 id 69e09a75-229c-0a2a45070019-d1558031c0eb-3
 for <xen-devel@lists.xenproject.org>; Thu, 16 Apr 2026 10:14:45 +0200
Received: by mail-wm1-f49.google.com with SMTP id
 5b1f17b1804b1-488a9033b2cso92682475e9.2
 for <xen-devel@lists.xenproject.org>; Thu, 16 Apr 2026 01:14:45 -0700 (PDT)
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-488f0ad1e4fsm71315205e9.1.2026.04.16.01.14.44
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Thu, 16 Apr 2026 01:14:44 -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=google header.d=suse.com header.i="@suse.com" header.h="Content-Transfer-Encoding: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=1776327285; x=1776932085; darn=lists.xenproject.org;
        h=content-transfer-encoding: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;
        bh=p1QIm5E603AZnHs17+I/8L71jgSjY7rjOHGih7nazO0=;
        b=OlHuIlEJzqrRnk/Ql7uHITgur9AbFjcNfiGiks9xsUzgkg3qy85QoKnNFhjEyICQr8
         Ez5axEXMSHQn980IYglT/2G9okL5RVLH+vXkxUqZeBKNSSfe49WQvS4MlIQdWD8esFMd
         PxaD+eH3H1Yix6aDxjTw3bw63Twvga3cEn1k+rkv58d6oQwycfywYFZKYYC15LeuOu1w
         pB9vLGnaI+kIhHEPU8/7/SRXipFJplNH3iyyTg747zEbDTZahqBFgx+fGesXYyPZDscL
         q3x/t+pz31kr51/Y568N+5vgAoHnnUDX/UrPww08hrnoldyJZqxSr6QxKpIYxly+kY0A
         hdsw==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20251104; t=1776327285; x=1776932085;
        h=content-transfer-encoding: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;
        bh=p1QIm5E603AZnHs17+I/8L71jgSjY7rjOHGih7nazO0=;
        b=qqL1TEdXecK/GX1I4/3Uqwm1Ap3/GLp1vilA36890ay4Gy7GBSarfHCJATfUxESPrI
         +7FMUE2skqXu7CgqDrRs71lK2Hu38Agn70NVmei+Ue3cy3Akmvj6LvLeuzONxiev+Inh
         NjeAAVQYR9OZjJan5m3/w2q5gp6/rHryVXZx/PvShy4pdKo7WDR9ZEIOwYifzwqZhT7O
         5a0BECacNWhCi2S5vWIfM1jB8Q/gZrawIV2RjeVBT/k2WXyYnEaz++vceHTV0sE38Z2B
         5tXvBC3vWzjjhpSW03qdV5OcSTC6qvB49+jI6sjob1Ek1PgSr8w5ZRe/PMbGUC0HhVNB
         /cRg==
X-Gm-Message-State: AOJu0YxtlA3HxfAj22GH16ZM9FaI+VD565xVjk2hCJdSBn4kS4rBfeeM
	KbYma1VQ3F9CLxmeV8fSqGg7dMGoC0gk6pc9FZIcoxMicRRm9LHg+tV6vvT3Hk8ayQ==
X-Gm-Gg: AeBDietdYQ0/rFtrFasXMofRufFMmoQoIr4UiH/zWh2cw+z5HX1RlJa/GOuh9kI0fnE
	L6YH0sFaSiEh7Fsz7uPaLH9wI1rVnl7PWUd58K7eNHKoDF4vutzZmHIB6NeMYG9FHd7JQyxSZS9
	Xaf3Jj1+HAdCmNTg2ZEsDCBiQDwBUXxp8F87Twg1tFGTNsO5t4wAX9zAGbdeqTPFrLlp3a6a4hg
	PYHom17Oi6Hv9P0W/neSbXfNHP/GBURf/Vf+nxp/PHghp2g3jLQTIOUkVeCfyKbZddZjxL6Jfj2
	cdgnuIxFqjbfXAMgRbO2DmpMtMrbNb6B6zVJo7j38M2FP8d9DlKUBcE8kuN7IZwoD7fMhawrCxo
	QrQGskNnnktcF2LCe315UL467FA55vYoAV0AmFS6lwg2lYETWZyune1yKhPt74lSB60Yen1LgS1
	SElSinf8pSO8BRl7HC81JT6/mUcaazccrSyfWphqUFfpJtZoE8+IiN2I1qq5kxn8z+MnsDwujf9
	S74B5vCt52adfYOJnFZ1XKgQg==
X-Received: by 2002:a05:600c:a109:b0:488:a977:8de with SMTP id 5b1f17b1804b1-488d6839866mr238187375e9.16.1776327284666;
        Thu, 16 Apr 2026 01:14:44 -0700 (PDT)
Message-ID: <3f832c12-5a02-418d-b420-23ed3cf798db@suse.com>
Date: Thu, 16 Apr 2026 10:14:47 +0200
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH] hypfs: remove unreachable statement in the
 'hypfs_get_entry_rel()'
To: Dmytro Prokopchuk1 <dmytro_prokopchuk1@epam.com>,
 Juergen Gross <jgross@suse.com>
Cc: "xen-devel@lists.xenproject.org" <xen-devel@lists.xenproject.org>
References: <341811ced2943fb79d0235c27781c564c7bdaf02.1775749146.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: <341811ced2943fb79d0235c27781c564c7bdaf02.1775749146.git.dmytro_prokopchuk1@epam.com>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 7bit
X-purgate-ID: tlsNG-ef75cf/1776327285-AE573C48-5BD032FD/0/0
X-purgate-type: clean
X-purgate-size: 631

On 09.04.2026 17:55, Dmytro Prokopchuk1 wrote:
> --- a/xen/common/hypfs.c
> +++ b/xen/common/hypfs.c
> @@ -347,8 +347,6 @@ static struct hypfs_entry *hypfs_get_entry_rel(struct hypfs_entry_dir *dir,
>          path = end + 1;
>          dir = container_of(entry, struct hypfs_entry_dir, e);
>      }
> -
> -    return ERR_PTR(-ENOENT);
>  }

How certain are we that no supported compiler in any mode of compilation might
issue a diagnostic for the then missing "return" at the end of a function
returning non-void? Imo we might be better off adding ASSERT_UNREACHABLE() and
keeping the "return" that's there.

Jan


From xen-devel-bounces@lists.xenproject.org Thu Apr 16 08:21:24 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 16 Apr 2026 08:21:24 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1283076.1565369 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wDHyR-0007ni-I1; Thu, 16 Apr 2026 08:21:19 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1283076.1565369; Thu, 16 Apr 2026 08:21: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 1wDHyR-0007nb-EL; Thu, 16 Apr 2026 08:21:19 +0000
Received: by outflank-mailman (input) for mailman id 1283076;
 Thu, 16 Apr 2026 08:21:18 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <jbeulich@suse.com>) id 1wDHyQ-0007nT-OQ
 for xen-devel@lists.xenproject.org; Thu, 16 Apr 2026 08:21:18 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wDHyQ-008q4O-1e
 for xen-devel@lists.xenproject.org; Thu, 16 Apr 2026 10:21:18 +0200
Received: from [10.42.69.12] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <jbeulich@suse.com>)
 id 69e09bf5-5cb7-0a2a0a5109dd-0a2a450cbb94-14
 for <xen-devel@lists.xenproject.org>; Thu, 16 Apr 2026 10:21:17 +0200
Received: from [209.85.128.52] (helo=mail-wm1-f52.google.com)
 by tlsNG-d25034.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.1)
 (envelope-from <jbeulich@suse.com>)
 id 69e09bfd-62f1-0a2a450c0019-d1558034d048-3
 for <xen-devel@lists.xenproject.org>; Thu, 16 Apr 2026 10:21:17 +0200
Received: by mail-wm1-f52.google.com with SMTP id
 5b1f17b1804b1-488e1a8ac40so71944765e9.2
 for <xen-devel@lists.xenproject.org>; Thu, 16 Apr 2026 01:21:17 -0700 (PDT)
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-488f58163cbsm34521655e9.1.2026.04.16.01.21.16
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Thu, 16 Apr 2026 01:21:16 -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=google header.d=suse.com header.i="@suse.com" header.h="Content-Transfer-Encoding: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=1776327677; x=1776932477; darn=lists.xenproject.org;
        h=content-transfer-encoding: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;
        bh=204vXJ5Mf5lwfgk2mPSushMQVKP5YvRBh3FzXyP/C3k=;
        b=DNTGDIj3sVxzCQ60SYSz9vC+AuUQ9mRJ78hM9lOLvGJ80RGtpgB0VBBvRBd/bBFC9i
         GbCsVBf18lymlQO/6aM3ojd9DkLZBgWt7ZpDPe9Z7kKhwjWGicwmOzKeuPu1guBzK3DZ
         V+4z7i5J24J0t4mbJiIUDaNQtF5Bydtj84nkataFnh3Ll1UDvdQzFT4SJO6krlbnDjQN
         VFKht/jbgk8ut/hhX5sfNrnMIgz+i6MvtCiiJkHLFIKloOKZh9Y8dZakWawggonSSP0D
         zKyNYKmX5jyWIe66iXS+AJ6u9XDHMSc0x+0Rn/qTuWiqL2sB9QGE3ebpcKAGiCQzb4GB
         pOlA==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20251104; t=1776327677; x=1776932477;
        h=content-transfer-encoding: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;
        bh=204vXJ5Mf5lwfgk2mPSushMQVKP5YvRBh3FzXyP/C3k=;
        b=Q9GVwogPejqgR3PVd75ingK+yKTK23scepJ5LfHbZUOcyHYd6HnCS31W1Cu1r2qhLw
         Abg+0dXkMljNw78u8vM+aZ94Pg9iddUM4PhPn2ket4Aq12AuRXmHhnUjTyvO/ZV9DlWJ
         abi8w8Cu3CszBK876y2dih9nFEUgkwS1oDAWKdK7zNQRb0Jcib1NzRNUiqRecC9/BtCD
         hAAJZ3WzltaDdFsNs+QDKUPH8QxOf7A/jlUROEmVmpToY/ZJC7V2ppEjH/sZ6NDuNQea
         fdvgN1kaSrx4J6FNukXqMHF9nx+xFekLybGUaJLq1PPdgydortcpDM9/N8Zhwdej3h1Q
         qoHQ==
X-Forwarded-Encrypted: i=1; AFNElJ+OyepxgogJIJwxEgI/eg8VQhtttCXRo+E1OPPuQggTj/N2qsHPVU0h+PS0Kw5rpXhhLUVwRTJ4Arw=@lists.xenproject.org
X-Gm-Message-State: AOJu0Yz2LEd2wvu63kG5v+EvmKsNgHQk3fTa9ArOv9q/oqrK1G9mYijT
	oGJ80z93TtSxFVu8W21WenQnoU8/lWyme0Hs1a9P6U3KAaUZknfZIGdhX33hG63b+A==
X-Gm-Gg: AeBDieu87mNzXsDizACwPmOiYF9oN5aCSt6Bv4nAnU3f6Eoac1IkdduA4/K/H91TC0P
	VrOhSHKidkfx/vD9tXAKfu4mm518AdKqlCS6Z3d6K3gsefvxO478dJtCFAIjMErXs2PkZ8C1kC7
	N/I9uiW3cLd61zLuUoLSFLPTcnz+orKeBwA81m2cYOpmGusFxiebqvXxh6gvnLQfxAU3uQTOA2P
	9VnJmOtmc1JwYJNZd/VZZfeGDWQcTabvWrmBflDCRi3yCGTet3PGH4J74Gr1ERIAQoUE5MAgfwy
	G/RGDLUzQ/lZLnipQtdSannzuB3cJNlHzS+PFV+GEC7X+l5EBIrHt+Ogrg37JQjfK2yKFiuc50I
	9TTvcJdh62g8xNdjQsax/Y5gC2ROuSt87CMZRqB3F3rziz0/xDBPozLiENrwuz/21g104Jhj2kT
	7aekw5J69f49d/27SecKQdwv6HbfduAZ595XohcwSkvGi1HA2vI9Jt2Kt7BBp0/ap/3dwVp13Y8
	gbacuX3DwZSIteVqoCyadRtRw==
X-Received: by 2002:a05:600c:8b6d:b0:485:9a50:3384 with SMTP id 5b1f17b1804b1-488d688209dmr319229815e9.25.1776327676870;
        Thu, 16 Apr 2026 01:21:16 -0700 (PDT)
Message-ID: <4f9e6615-b9ab-4c2e-9345-100e73eebbb3@suse.com>
Date: Thu, 16 Apr 2026 10:21:19 +0200
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH 1/2] vtd: Drop dead check for permissions in lookup_page
To: Teddy Astie <teddy.astie@vates.tech>
Cc: Andrew Cooper <andrew.cooper3@citrix.com>,
 =?UTF-8?Q?Roger_Pau_Monn=C3=A9?= <roger.pau@citrix.com>,
 xen-devel@lists.xenproject.org
References: <815edfd0db90859a4ce270d833d9d721ff66e31c.1775814143.git.teddy.astie@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: <815edfd0db90859a4ce270d833d9d721ff66e31c.1775814143.git.teddy.astie@vates.tech>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 7bit
X-purgate-ID: tlsNG-d25034/1776327677-F5A00CF5-A136CAC7/0/0
X-purgate-type: clean
X-purgate-size: 402

On 10.04.2026 12:09, Teddy Astie wrote:
> `val` comes from `addr_to_dma_page_maddr()` which is a pagetable
> paddr and doesn't leak the PTE flags in it.

Did you read the comment ahead of the function, in particular the part about
the caller passing 0 for "target"?

> Rather than returning entries without any permissions, assume they
> are always r/w.

This wouldn't be any better.

Jan


From xen-devel-bounces@lists.xenproject.org Thu Apr 16 08:22:41 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 16 Apr 2026 08:22:41 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1283084.1565377 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wDHzk-0008J8-Rd; Thu, 16 Apr 2026 08:22:40 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1283084.1565377; Thu, 16 Apr 2026 08:22: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 1wDHzk-0008J1-OP; Thu, 16 Apr 2026 08:22:40 +0000
Received: by outflank-mailman (input) for mailman id 1283084;
 Thu, 16 Apr 2026 08:22:39 +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 1wDHzj-0008Ir-GU
 for xen-devel@lists.xenproject.org; Thu, 16 Apr 2026 08:22:39 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wDHzi-00Fofh-RY
 for xen-devel@lists.xenproject.org; Thu, 16 Apr 2026 10:22:38 +0200
Received: from [10.42.69.5] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <Mykyta_Poturai@epam.com>)
 id 69e09c46-5cb7-0a2a0a5109dd-0a2a4505bba2-32
 for <xen-devel@lists.xenproject.org>; Thu, 16 Apr 2026 10:22:38 +0200
Received: from [52.101.69.117]
 (helo=AM0PR83CU005.outbound.protection.outlook.com)
 by tlsNG-c201ff.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.1)
 (envelope-from <Mykyta_Poturai@epam.com>)
 id 69e09c4e-aaa8-0a2a45050019-34654575b95f-3
 for <xen-devel@lists.xenproject.org>; Thu, 16 Apr 2026 10:22:38 +0200
Received: from PAVPR03MB10102.eurprd03.prod.outlook.com
 (2603:10a6:102:30d::12) by PAVPR03MB9478.eurprd03.prod.outlook.com
 (2603:10a6:102:305::5) with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9818.25; Thu, 16 Apr
 2026 08:22:33 +0000
Received: from PAVPR03MB10102.eurprd03.prod.outlook.com
 ([fe80::b8c6:f37a:987a:beb]) by PAVPR03MB10102.eurprd03.prod.outlook.com
 ([fe80::b8c6:f37a:987a:beb%5]) with mapi id 15.20.9769.046; Thu, 16 Apr 2026
 08: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=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=SQ56SlUlDhD6Vku9RvhKluP0JXUCySGwvhUoGHG8wBYnVxJEHjrAlOs0kMHhW1lmI1Riu2iKQYUYDR8WkhLcpGQuilc1mV+eIzEkx69HsvVRQH4f7nwow5E2AjqQgWTRSKkiOMcXU1GzsJ4an59ewHTQaCwcKGEIPg6Hz/j0DzAWSDtpm9JK05aJP/9SSrkcMZHw3AiGPvqCeJpk1aHZAMdzJdY7YBrE3Ft4J/LLStjt5rT6BjLXb0XpOXyj2oNZS5nBPguI6aypm5dp7RaTLmfbUXAAk8GzDTgwq38pHHyq/sQ3KDmTyW0G4uRSxP0hNh6Qp6mEujeLJ291l0/dzQ==
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com;
 s=arcselector10001;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1;
 bh=dOdlTcrJXzFiibxdFJRgpXKFhxgyJoch+FjgdX+thX4=;
 b=s2sLCGf2k1gpUqqzAum5vclawyU0XzYlXXyGA7lpg/nUqOjXYApLyg6y3w5suS2eDhs7P8AD8qmpvPmv10DPSvGW0J78BZYkFOVBIE75/qXwnPiQ2HG/rzqQZ/J4L8pkxyiGiawPexaAwr3cDeLz26Zby53B+7Di52/cU4tEag0c59nQBB72UjZrxEHoHAG2m8srWPjM7Tn4K5FvKwAN5U8wKDrfgjMaLh9rPhWQ7nhqvkBJgXAFzok3VPPmkijuXbep3HBOvyX+OLt0c3IIh5bk4BEKkCbuLwi7hCgt6f7aRZSUHorptIiSfla4SbX7yhPSX4ljDCb+A/9gXqe9yw==
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=dOdlTcrJXzFiibxdFJRgpXKFhxgyJoch+FjgdX+thX4=;
 b=DziRUbplZ4Bw9ZjPgU/H/5igOpdISllGKFhLWkb8hzQhj3Kk/9nMbkq5JJqXoAyJnb07DZqnp71I71N7Yn31uhcD8w6Dx3PhbSnxnpDOjUJUBm5r32Gd5YzSPGutONPvqhYdHCz5ee/vOkhMrobmDjOeNJRAq9zWujpJw0hR4KnG70OUBdTOkWXnvmtyM6Nuj1DwRbApU6rPB8yCuvw/P9+F7PpCFLtmFY7A/NyaX7MM/89a8LQaFw1xjPR7Hagt1Oelw1Hm3MqIDeXxMJTNcRWnJ6G/V1ybVeAf6g3Dk609GSzQvk7Uec/r/C4p0qm6XkmmaTSGggwm5mMUJcLhxg==
From: Mykyta Poturai <Mykyta_Poturai@epam.com>
To: Jan Beulich <jbeulich@suse.com>
CC: Anthony PERARD <anthony.perard@vates.tech>, Juergen Gross
	<jgross@suse.com>, "xen-devel@lists.xenproject.org"
	<xen-devel@lists.xenproject.org>
Subject: Re: [PATCH v7 5/6] tools: Allow building xen-hptool without
 CONFIG_MIGRATE
Thread-Topic: [PATCH v7 5/6] tools: Allow building xen-hptool without
 CONFIG_MIGRATE
Thread-Index: AQHcwDy3LJnr4T20vUWAas874pXmi7XHAiYAgBlL+wCAAQu/AIAAGf4A
Date: Thu, 16 Apr 2026 08:22:32 +0000
Message-ID: <96829f0b-faac-4100-8c30-c93ac9459600@epam.com>
References: <cover.1774871881.git.mykyta_poturai@epam.com>
 <73db845e6617130966a565cdca6274db4cb46428.1774871881.git.mykyta_poturai@epam.com>
 <58cfab3b-7cf2-4e38-9968-1248e665f985@suse.com>
 <f4a1cfa1-f3ea-4fa0-bffd-1f6346e07d39@epam.com>
 <28900826-5a96-4bf0-8d5b-11fd1be8386a@suse.com>
In-Reply-To: <28900826-5a96-4bf0-8d5b-11fd1be8386a@suse.com>
Accept-Language: en-US
Content-Language: en-US
X-MS-Has-Attach:
X-MS-TNEF-Correlator:
authentication-results: dkim=none (message not signed)
 header.d=none;dmarc=none action=none header.from=epam.com;
x-ms-publictraffictype: Email
x-ms-traffictypediagnostic: PAVPR03MB10102:EE_|PAVPR03MB9478:EE_
x-ms-office365-filtering-correlation-id: 46116a25-ae80-4044-511c-08de9b914ee8
x-ms-exchange-senderadcheck: 1
x-ms-exchange-antispam-relay: 0
x-microsoft-antispam:
 BCL:0;ARA:13230040|376014|1800799024|366016|38070700021|22082099003|18002099003|56012099003;
x-microsoft-antispam-message-info:
 wXgIgIhneSGymzCOQ1aQHoFZ422tqf/RwJD8vRmHzsfCwDFjXECufk8ucirbGF7wHEeCw4w8sajLEQo8sFhRou8rViM8vc7QGxl1j8dYnKewdbrsj8KqtTZFZzJK3L0dVTkkBSy7IiIYmf8DDVLH/z0+/08eUbcQnC7wRwc8IwJKmOAMq0CNXeMV3rMIV2+ypz3SGOoW+XNju2xU/hmfyRH1QEmWQyZUVokYKY7jeJvu6bjBoLm4M9jzIxKAoKrhvVRlgHQiNDjjjcv38hd3v4rYQY1+lh1pCJk3Hl1tRjerQOpz2V+7z1gQERrijAva6+lnBXKiAJWMfv2fTvGjLdY44o8SSZYiMBGmxDUJ77OuaRN0KDeS8RAfuVTT5Pyif6ova1TlWANTxBG25kyUwD9MN3/REG5yZd7b69Wr0s/esGHMrfRRlJNyqPHn5L1JNn05U2xDtmbvf/K7aHvS/znp+nSRLqi8TC31UyHUTv4Fi53QqNGfUQyuROQlhawBJ/psQ11xkXWBurS9chT535LGYFL1i/Me4IE5eQm3Acglqjo39e788D01Jo5PkYMVjXoffn9ezdR1S80L5lcQbJ3CEP0Ic0BwpyuYD6aJkSZbg/DiZT0f80GwrcitZ7+O5YYh5QTF/So93fw1CSCQf1K+bx6ZkdpMW87+cjQ0WAyk9wPXwg+JdZJGFdD7O5Tkam5L+NECshhbQek7QXN9F1gjICJ5mzXsLJ6aOCLpUjCZerOO4UVN0RxnnyM71ypgDNbT7SMyUbMhobiz/L3fVBdZW2Ex0uMHGDEPU92DVyU=
x-forefront-antispam-report:
 CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:PAVPR03MB10102.eurprd03.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(376014)(1800799024)(366016)(38070700021)(22082099003)(18002099003)(56012099003);DIR:OUT;SFP:1102;
x-ms-exchange-antispam-messagedata-chunkcount: 1
x-ms-exchange-antispam-messagedata-0:
 =?utf-8?B?dXM1QzNteHRHdFJRUlorWkdrMW1yWjFNeVlQOGgwUjZmeDVEUzM2OU9JQldG?=
 =?utf-8?B?NG9BTXI2NEZvYzMxNzVvM2Y0RHZEZDl0eUwrRzl4WGdiRXdxcndENy83Y1By?=
 =?utf-8?B?UGlwenI2TktJOGtaQlJXeTRtbUpaMUQxdFUxZWIyc2xhbEQ4UXpMMzF5SVhU?=
 =?utf-8?B?RjlueWdSTGVBaVNwR2xlM1BHVXl1SExUSDRWVk5sWUZCVTRWTHg5aUt3V2Vv?=
 =?utf-8?B?YUhVajNFUDVtRDlUWXFFa2VPRGY0d25YSG9sWkZDczhYaDgyQmorS2E2enZD?=
 =?utf-8?B?QVkxREREbWZWa3NGWTFFbHRkM0dKTDE1YzEvTmwwODdCWkl2WXY3Y0xOWStr?=
 =?utf-8?B?b1Z4R21yeGdhSm9ieElPNWthVko5cVJKbEFZbm9EOTFweUVCSjlDUndvVHlV?=
 =?utf-8?B?WENLb1JSMlluUW0vZ1dKenV5Nk1VRklFbFl1SjlYQVVTVGNlN0FEbDVCbi81?=
 =?utf-8?B?NDZCSUR6NVRCWVl6b0d1UkwzNWd4NGZya1JKOU9CcUp0eXEwSzJnSXAxL1V5?=
 =?utf-8?B?VGRxRUlPTmg3cGJLWUNIaFRlc09zM01sRW52UHVxaGhobVVaMnlmbDcyRDZ6?=
 =?utf-8?B?MWxheDIyQTR6NFo0TEdheklJS2JHYUwxNkc3SjRZck9tMnREbm9UdGhwNU5X?=
 =?utf-8?B?T3lFRVlmbmdLTEF4K1hoUlJTdjJJVXJyL1dhWURXellwdEdwa1oxbjFQOWJ4?=
 =?utf-8?B?Mml5Q0pwYjRKTHZFQUczOUUyOVVCR3FXMVdrNkNyR1JpbE9hakZJS0Mwbkdl?=
 =?utf-8?B?eVNpYnZ4dEQ4TUYzcVFEVTBVUDI1bWR2dEJYRG15cTNaSHBXcUVPSUhhZDFN?=
 =?utf-8?B?bWdzdWNDNXpucDkzbEZ0dnBpMXBaZ3BzNVkrdmtXK29KV05mdWwyd3A1Mk16?=
 =?utf-8?B?aTJORFpWdnVJcXhrYzZLRCtUMWJWRmxzQVFaeGJKUUFYR1owNlRTWmJPb2hz?=
 =?utf-8?B?ck5JVnp3ekxLK0FkdkZXVkNoY1RTOGpDMHUvRy9BS2RYNG1BK3MrdlE1bEZB?=
 =?utf-8?B?azFFYXptelVQeTlnNm5rSnZFNWljL3IvVU9sQVVWakZoYnpyQ092emxYcUk0?=
 =?utf-8?B?KzVBa2UxNW4vdUR3ZDg0SkRZMnJ0R0pwWW5Ta1BtdlZHWmJ2VVNCWFVpNC9z?=
 =?utf-8?B?bkh1ZUluMk9GZXhWcnU1MzZ0TnFwWm4zbFdscWpNV1cwak9jcXdkdTZwSjc4?=
 =?utf-8?B?RGpsaGJUU05VK2ZvenpNREJuVzIxWlI1aUFqeVVkbFI2bGQ2ZGlxMmtXTVpH?=
 =?utf-8?B?TStIbTRlbC9HY3JReUszaUxhZURVQ1lEUmpXYmRsdXo4UEo4bExMd1dUSldx?=
 =?utf-8?B?aVloOGpkTkRXWHNEbXRvWVpJeVRwVG9TQ2pLVWxUVGZrRnNNTzB5a1g4RjQ1?=
 =?utf-8?B?OGIxb091VzN4Z3VrVHZBWmV0MHVpaDVUU1lYOFE2ZXh2a0J0N2hNSG1JUmI3?=
 =?utf-8?B?NWdnNkF2YVp4c2FwTXRMZC9TYkg5aS9KUkJzbGhWcFFVVllxMy8reHhuU3M0?=
 =?utf-8?B?MFJZamxxL0RzRDdVWllFMnM1SG4xUFIxVDhkWHZ4akFFRm8wZ1pzRjlZV1Jh?=
 =?utf-8?B?TTZKaDVlSzdpQXRDTjh5R2pCT0N6dUphb3Jwem1XVFlCNUVsL3JvYjFrdkRp?=
 =?utf-8?B?YWgzR2kxRUlTZjFrdUF2YU5CSXpUSVdjNnh5SUFteUhqNXM5UjB1Tlp3Wkx5?=
 =?utf-8?B?RWREYU5tVUNRd0FDZERDbjJRODNsY1QyaXFkTlZPQkZRZmV6YVBrTCs5TTdN?=
 =?utf-8?B?R3YxK05hQlhlQktOVDZEUXBnY3pzb0xhY0FoalI2ZDE2WjNhU2JCcEVYRmJM?=
 =?utf-8?B?bWhxc2hZWWE1Skk5SzlrTk9XemVObmtMMEZBYlIrMlFMUm9CaEJxZGk2N2hE?=
 =?utf-8?B?N0taMXplRkIydDVOd2p5VTFYWjJPb040OWQ2RTVGWWUzQnlUS004Y28rZTlQ?=
 =?utf-8?B?Um5qb3E2T0hPQVRuQnpZcm9pdTA1UkpKMDYzQi8zVkI4TGNSQ1pubW1WM3pM?=
 =?utf-8?B?QSttZVpKQllvNXhTaDkxaVdJS2F1RnBtMzdldGo0S0p0cUZQZzRHVjZnVGtZ?=
 =?utf-8?B?aWw0UHRMamhuZ1pQNjhBWW5rQnFuLzE0TTU1cFdTdElhMG44U0hKc21ud2Zz?=
 =?utf-8?B?Q1kvc2hxLzl5N3B0bDFPZ0F1MHkrR2FOZk43cXdFaHk0SEgwNjRSOUVpWXJ2?=
 =?utf-8?B?c1RSSTFXODIvU0FUQXFIQkhLZ2tOcHU5T3BPNnkvOTFPMHN2NFpVbzBsNUtQ?=
 =?utf-8?B?VS9lL2E5R01LQkhwbWVyQjZBY0NPbkRvZkhYdEtxamZRbHNqdVZtUUxJU1A3?=
 =?utf-8?B?NG91Ky9sYVpDd2tIaFdCam5PcmF6cDlSTGtmcnlITUhDKzdLUHVGaDRERkU3?=
 =?utf-8?Q?L35onvDD48PV0CHw=3D?=
Content-Type: text/plain; charset="utf-8"
Content-ID: <2A00936AB8666A4FAEE79DA8E29C1124@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: PAVPR03MB10102.eurprd03.prod.outlook.com
X-MS-Exchange-CrossTenant-Network-Message-Id: 46116a25-ae80-4044-511c-08de9b914ee8
X-MS-Exchange-CrossTenant-originalarrivaltime: 16 Apr 2026 08:22:32.9482
 (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: hlr4yIvfbwqE5ICYkfVTooJxAX+zM+MSb2Aa5/pi44yfwcuw7k7CH1wHsYfBKeYsEwN3ftv+qlfxF6BOCEiPGA==
X-MS-Exchange-Transport-CrossTenantHeadersStamped: PAVPR03MB9478
X-purgate-ID: tlsNG-c201ff/1776327758-2AB68443-C60B5887/0/0
X-purgate-type: clean
X-purgate-size: 4160

T24gNC8xNi8yNiAwOTo0OSwgSmFuIEJldWxpY2ggd3JvdGU6DQo+IE9uIDE1LjA0LjIwMjYgMTY6
NTEsIE15a3l0YSBQb3R1cmFpIHdyb3RlOg0KPj4gT24gMy8zMC8yNiAxNTozMiwgSmFuIEJldWxp
Y2ggd3JvdGU6DQo+Pj4gT24gMzAuMDMuMjAyNiAxMzo1OSwgTXlreXRhIFBvdHVyYWkgd3JvdGU6
DQo+Pj4+IFdpdGggQ1BVIGhvdHBsdWcgc3lzY3RscyBpbXBsZW1lbnRlZCBvbiBBcm0gaXQgYmVj
b21lcyB1c2VmdWwgdG8gaGF2ZSBhDQo+Pj4+IHRvb2wgZm9yIGNhbGxpbmcgdGhlbS4NCj4+Pj4N
Cj4+Pj4gQWNjb3JkaW5nIHRvIHRoZSBjb21taXQgaGlzdG9yeSBpdCBzZWVtcyB0aGF0IHB1dHRp
bmcgaHB0b29sIHVuZGVyDQo+Pj4+IGNvbmZpZyBNSUdSQVRFIHdhcyBhIG1lYXN1cmUgdG8gZml4
IElBNjQgYnVpbGQuIEFzIElBNjQgaXMgbm8gbG9uZ2VyDQo+Pj4+IHN1cHBvcnRlZCBpdCBjYW4g
bm93IGJlIGJyb3VnaHQgYmFjay4gU28gYnVpbGQgaXQgdW5jb25kaXRpb25hbGx5Lg0KPj4+Pg0K
Pj4+PiBTaWduZWQtb2ZmLWJ5OiBNeWt5dGEgUG90dXJhaSA8bXlreXRhX3BvdHVyYWlAZXBhbS5j
b20+DQo+Pj4+IC0tLQ0KPj4+PiB2Ni0+djc6DQo+Pj4+ICogbm8gY2hhbmdlcw0KPj4+Pg0KPj4+
PiB2NS0+djY6DQo+Pj4+ICogZG9uJ3QgY2hhbmdlIG9yZGVyIGluIE1ha2VmaWxlDQo+Pj4+DQo+
Pj4+IHY0LT52NToNCj4+Pj4gKiBtYWtlIGhwdG9vbCBhbHdheXMgYnVpbGQNCj4+Pj4NCj4+Pj4g
djMtPnY0Og0KPj4+PiAqIG5vIGNoYW5nZXMNCj4+Pj4NCj4+Pj4gdjItPnYzOg0KPj4+PiAqIG5v
IGNoYW5nZXMNCj4+Pj4NCj4+Pj4gdjEtPnYyOg0KPj4+PiAqIHN3aXRjaCB0byBjb25maWd1cmUg
ZnJvbSBsZWdhY3kgY29uZmlnDQo+Pj4+IC0tLQ0KPj4+PiAgICB0b29scy9saWJzL2d1ZXN0L01h
a2VmaWxlLmNvbW1vbiB8IDIgKy0NCj4+Pj4gICAgdG9vbHMvbWlzYy9NYWtlZmlsZSAgICAgICAg
ICAgICAgfCAyICstDQo+Pj4+ICAgIDIgZmlsZXMgY2hhbmdlZCwgMiBpbnNlcnRpb25zKCspLCAy
IGRlbGV0aW9ucygtKQ0KPj4+Pg0KPj4+PiBkaWZmIC0tZ2l0IGEvdG9vbHMvbGlicy9ndWVzdC9N
YWtlZmlsZS5jb21tb24gYi90b29scy9saWJzL2d1ZXN0L01ha2VmaWxlLmNvbW1vbg0KPj4+PiBp
bmRleCBiOTI4YTRhMjQ2Li4wM2RmY2VlN2ZhIDEwMDY0NA0KPj4+PiAtLS0gYS90b29scy9saWJz
L2d1ZXN0L01ha2VmaWxlLmNvbW1vbg0KPj4+PiArKysgYi90b29scy9saWJzL2d1ZXN0L01ha2Vm
aWxlLmNvbW1vbg0KPj4+PiBAQCAtNyw2ICs3LDcgQEAgT0JKUy15ICs9IHhnX3ByaXZhdGUubw0K
Pj4+PiAgICBPQkpTLXkgKz0geGdfZG9tYWluLm8NCj4+Pj4gICAgT0JKUy15ICs9IHhnX3N1c3Bl
bmQubw0KPj4+PiAgICBPQkpTLXkgKz0geGdfcmVzdW1lLm8NCj4+Pj4gK09CSlMteSArPSB4Z19v
ZmZsaW5lX3BhZ2Uubw0KPj4+PiAgICBpZmVxICgkKENPTkZJR19NSUdSQVRFKSx5KQ0KPj4+PiAg
ICBPQkpTLXkgKz0geGdfc3JfY29tbW9uLm8NCj4+Pj4gICAgT0JKUy0kKENPTkZJR19YODYpICs9
IHhnX3NyX2NvbW1vbl94ODYubw0KPj4+PiBAQCAtMTcsNyArMTgsNiBAQCBPQkpTLSQoQ09ORklH
X1g4NikgKz0geGdfc3Jfc2F2ZV94ODZfcHYubw0KPj4+PiAgICBPQkpTLSQoQ09ORklHX1g4Nikg
Kz0geGdfc3Jfc2F2ZV94ODZfaHZtLm8NCj4+Pj4gICAgT0JKUy15ICs9IHhnX3NyX3Jlc3RvcmUu
bw0KPj4+PiAgICBPQkpTLXkgKz0geGdfc3Jfc2F2ZS5vDQo+Pj4+IC1PQkpTLXkgKz0geGdfb2Zm
bGluZV9wYWdlLm8NCj4+Pj4gICAgZWxzZQ0KPj4+PiAgICBPQkpTLXkgKz0geGdfbm9taWdyYXRl
Lm8NCj4+Pj4gICAgZW5kaWYNCj4+Pg0KPj4+IFRoaXMgbG9va3Mgd3JvbmcgdG8gbWUuIFRoZXJl
IGFyZSB4ODYtc3BlY2lmaWNzIGluIHRoYXQgZmlsZSwgd2hpY2ggc2hvdWxkbid0DQo+Pj4gYmUg
YnVpbHQgb24gQXJtLiBBbmQgdGhlIG5hbWUgb2YgdGhlIGZpbGUgYWxzbyBkb2Vzbid0IGluZGlj
YXRlIGFueSByZWxhdGlvbg0KPj4+IHRvIENQVSBtYW5hZ2VtZW50Lg0KPj4NCj4+IHhlbi1ocHRv
b2wgcmVxdWlyZXMgeGdfb2ZmbGluZV9wYWdlIGFzIGl0IGhhcyBib3RoIENQVSBhbmQgbWVtb3J5
DQo+PiBob3RwbHVnIGNvbW1hbmRzLiBXaXRob3V0IGJ1aWxkaW5nIHhnX29mZmxpbmVfcGFnZSBp
dCBmYWlscyB3aXRoDQo+Pg0KPj4geGVuLWhwdG9vbDogc3ltYm9sIGxvb2t1cCBlcnJvcjogeGVu
LWhwdG9vbDogdW5kZWZpbmVkIHN5bWJvbDoNCj4+IHhjX21hcmtfcGFnZV9vZmZsaW5lLCB2ZXJz
aW9uIGxpYnhlbmd1ZXN0XzQuMjIuMA0KPj4NCj4+IHdoZW4gdHJ5aW5nIHRvIGRvIG1lbW9yeSBv
cHMuDQo+Pg0KPj4gSXMgaXQgYW4gYWNjZXB0YWJsZSBiZWhhdmlvcj8NCj4gDQo+IEkgZG9uJ3Qg
dGhpbmsgc28sIG5vLiBUaGUgdG9vbCB3b3VsZG4ndCwgYWl1aSwgbG9hZCBhdCBhbGwgdGhlbiBp
ZiBidWlsdCB3aXRoDQo+ICJiaW5kbm93IiBlbmFibGVkLg0KPiANCj4+IElmIHNvIEkgZ3Vlc3Mg
d2UgY2FuIGJ1aWxkIHhnX29mZmxpbmUgcGFnZSBvbmx5IG9uIHg4Ni4NCj4gDQo+IFdlIHN0aWxs
IG5lZWQgdG8sIGltby4gQnV0IHRoZSB0b29sIHN0aWxsIG5lZWRzIHRvIGJlIHVzYWJsZSBubyBt
YXR0ZXIgaG93DQo+IHNwZWNpZmljYWxseSBpdCBpcyBidWlsdC4gSXQgc2hvdWxkIGF2b2lkIHJl
ZmVyZW5jaW5nIHhnX29mZmxpbmVfcGFnZS5jDQo+IGZ1bmN0aW9ucyB3aGVuIGJ1aWx0IGZvciBu
b24teDg2Lg0KPiANCj4gSmFuDQoNCkFzIEkgdW5kZXJzdGFuZCwgdGhlIHVzYWdlIG9mIGFyY2gt
c3BlY2lmaWMgY29tcGlsZSB0aW1lIGNoZWNrcyBpcyANCmhlYXZpbHkgZGlzY291cmFnZWQgaW4g
dG9vbHMuIFNvIEkgZG9u4oCZdCB0aGluayBpdCB3b3VsZCBiZSBhcHByb3ZlZCBieSANCnRvb2xz
IG1haW50YWluZXJzLiBEbyB3ZSByZWFsbHkgbmVlZCB0byBvbWl0IHRoaXMgZmlsZSBpZiBtZW1v
cnkgb3BzIGFyZSANCmFscmVhZHkgZ2V0dGluZyBibG9ja2VkIGJ5IFhlbiBvbiBBcm0gYW55d2F5
Pw0KDQotLSANCk15a3l0YQ==


From xen-devel-bounces@lists.xenproject.org Thu Apr 16 08:23:07 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 16 Apr 2026 08:23:07 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1283092.1565387 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wDI0B-0000JM-2v; Thu, 16 Apr 2026 08:23:07 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1283092.1565387; Thu, 16 Apr 2026 08:23: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 1wDI0A-0000JD-WA; Thu, 16 Apr 2026 08:23:06 +0000
Received: by outflank-mailman (input) for mailman id 1283092;
 Thu, 16 Apr 2026 08:23:05 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <Luca.Fancellu@arm.com>) id 1wDI09-0000Hf-Cx
 for xen-devel@lists.xenproject.org; Thu, 16 Apr 2026 08:23:05 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wDI08-00FS4J-Pc
 for xen-devel@lists.xenproject.org; Thu, 16 Apr 2026 10:23:04 +0200
Received: from [10.42.69.3] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <Luca.Fancellu@arm.com>)
 id 69e09c60-5cb7-0a2a0a5109dd-0a2a4503df4e-30
 for <xen-devel@lists.xenproject.org>; Thu, 16 Apr 2026 10:23:03 +0200
Received: from [52.101.72.51]
 (helo=AM0PR02CU008.outbound.protection.outlook.com)
 by tlsNG-33051d.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.1)
 (envelope-from <Luca.Fancellu@arm.com>)
 id 69e09c66-672d-0a2a45030019-34654833f43b-3
 for <xen-devel@lists.xenproject.org>; Thu, 16 Apr 2026 10:23:03 +0200
Received: from DU7P189CA0028.EURP189.PROD.OUTLOOK.COM (2603:10a6:10:552::33)
 by DB9PR08MB6410.eurprd08.prod.outlook.com (2603:10a6:10:262::8) with
 Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9769.48; Thu, 16 Apr
 2026 08:22:58 +0000
Received: from DU6PEPF00009523.eurprd02.prod.outlook.com
 (2603:10a6:10:552:cafe::75) by DU7P189CA0028.outlook.office365.com
 (2603:10a6:10:552::33) with Microsoft SMTP Server (version=TLS1_3,
 cipher=TLS_AES_256_GCM_SHA384) id 15.20.9769.52 via Frontend Transport; Thu,
 16 Apr 2026 08:22:58 +0000
Received: from outbound-uk1.az.dlp.m.darktrace.com (4.158.2.129) by
 DU6PEPF00009523.mail.protection.outlook.com (10.167.8.4) with Microsoft SMTP
 Server (version=TLS1_3, cipher=TLS_AES_256_GCM_SHA384) id 15.20.9769.17 via
 Frontend Transport; Thu, 16 Apr 2026 08:22:57 +0000
Received: from DU2PR08MB7272.eurprd08.prod.outlook.com (2603:10a6:10:2d7::16)
 by AS8PR08MB10100.eurprd08.prod.outlook.com (2603:10a6:20b:63e::5)
 with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9818.25; Thu, 16 Apr
 2026 08:21:55 +0000
Received: from DU2PR08MB7272.eurprd08.prod.outlook.com
 ([fe80::5d34:206f:373:a323]) by DU2PR08MB7272.eurprd08.prod.outlook.com
 ([fe80::5d34:206f:373:a323%6]) with mapi id 15.20.9769.046; Thu, 16 Apr 2026
 08:21: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=arm.com header.i="@arm.com" header.h="From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck"; dkim=pass header.s=selector1 header.d=arm.com header.i="@arm.com" header.h="From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck"
ARC-Seal: i=2; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=pass;
 b=t7cLBJZe/SO6m8+Dlpeisa7x1CaigaZuLm4L+6/vh6xYEkIKz9CnGL1nHheKUSKW6mvYWVsRGcJdzOPqUM1TErl6VefLimZ2AkUNvSLIGtMwvebbTFS6OHSBj+M9zfyHXuAS1lWLcZIARL4gfZJYy3bpPu/ce58f/+WDmm3zr97DLtKg4Mm6TZdjwUnYsfCWMX92l6egxTVx9fNLb6MV5Qf9Zz+hteTFzfpo/zXmZVruiUN4u+owvMoKW38RrotEF6+2XRcp2daeVbpOyYWyD+o9kqkxIAo0vl1iFOu0hjlcJ0wMISdR15bkBORri9YOg1UL4YZhTV114vQDdLGBLw==
ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com;
 s=arcselector10001;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1;
 bh=nfok6GtyZbB92DO23LCWQJIQ0G1lbsbdtCxjgOCANBI=;
 b=BQ3I9ooFbaaFXE3pyu66mIW0OQ8GZJmRMlZ4dYB8k0hJu/Qo3MOlgXcBWukkTY5hTqb7hpWwE+iWX3FR1AIGisfmqFS7zBDcatLN+uMG/nL2k7wfh+TtXpXLsDHSCQmncv/Py4jH0Rr3hnCba6guzXXRuX1PPJWIgGhx2zIDgu90BzPcGnFWtorIlIplaBbLiMdc3ucTNaDXjU6nlXY/eCyN5MarunrsKMymH4Azpy9GuLV/xS3QJEzGvg+4OMyAvzA/q6wh1eUtZIvJGnE9EPZOiZCkrwo7tVwF0yAeg1KGhcoxqRdu6UQvkRzNo1XF+zOul3a3AjqduMa0rSNF5A==
ARC-Authentication-Results: i=2; mx.microsoft.com 1; spf=pass (sender ip is
 4.158.2.129) smtp.rcpttodomain=amd.com smtp.mailfrom=arm.com; dmarc=pass
 (p=none sp=none pct=100) action=none header.from=arm.com; dkim=pass
 (signature was verified) header.d=arm.com; arc=pass (0 oda=1 ltdi=1
 spf=[1,1,smtp.mailfrom=arm.com] dkim=[1,1,header.d=arm.com]
 dmarc=[1,1,header.from=arm.com])
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=arm.com; s=selector1;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck;
 bh=nfok6GtyZbB92DO23LCWQJIQ0G1lbsbdtCxjgOCANBI=;
 b=TC4HqGeB6Zdib09QwW0Qxpc4/df0QU2RMhJWFZp0GIOQP4LiDIDG3sZ1ck2LG3yUsDr/A7hmxo4NLwr9ZsrzRRMAAtwg/Dqn7fpQrLfxNmjHaNmTizd8PVNHG9XVHUgS30/BHbV+CqeKK1/eIZqt2UrQyUJWda1s/REJIBGe32A=
X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 4.158.2.129)
 smtp.mailfrom=arm.com; dkim=pass (signature was verified)
 header.d=arm.com;dmarc=pass action=none header.from=arm.com;
Received-SPF: Pass (protection.outlook.com: domain of arm.com designates
 4.158.2.129 as permitted sender) receiver=protection.outlook.com;
 client-ip=4.158.2.129; helo=outbound-uk1.az.dlp.m.darktrace.com; pr=C
ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none;
 b=nkqC7rOkQRZXaAZDZPFUOYNK99VPVdq7Vw4WVnyLz05f1OeA7vARWwssW08h8vn1Fa3jUl0SUhTjdw07cGHbU+0jiSKWv0rymxJrNiMAtzDuvfZkB5tAvS3fDJo92pf8MSn5X43hB/QbHpckL/bluEU5XH/xrihmAWWHC+cCK6+2LCEq6Mo1wQnlgDO8HNRnaHSlm/F0n/Ne24cGQkOrAWaYj+O2W94yI3rJEE4VhnVa9M+c9eAQo04OlbSVIOx4ZwTJ8RART0vUg9DaeCeQ9ycQ6wtUrIvej0rk5SN9Rv/VtwWZvqstRmepsArptBL32bpacvY1mAYH0sk/lc0v8Q==
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com;
 s=arcselector10001;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1;
 bh=nfok6GtyZbB92DO23LCWQJIQ0G1lbsbdtCxjgOCANBI=;
 b=fd8RI6JAjbtFrCtnD9vX3bpgPuXZapa9+g/dfsDiF23LoKlDXJAhMYbvQDJcddQk/ozjTe55InOFs74Ktk1iMZomKVFooqMvgq1/keDWuSGOlzPVqMZHX9MaVAWVmuYMwBvpL1bB4huPNH4+padKMIzsun7FYvyhyHm+KJZ7aELi7cMB94PQzpgt4P7HLrte1Iryh3O2kbJFkQIO+WYkfJI2xn/Y1TKOvTl5RjVwNwCUb4F2KxFF2/xPc+aRq8GRRFHGDtj0ghnYHWCw1sQYmvwZOtlp2ltrdMdnfSxmmrCJXcjMMCAzHNovQMegH9nUZCuhWNg55lZ0VuNGAJa4kw==
ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass
 smtp.mailfrom=arm.com; dmarc=pass action=none header.from=arm.com; dkim=pass
 header.d=arm.com; arc=none
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=arm.com; s=selector1;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck;
 bh=nfok6GtyZbB92DO23LCWQJIQ0G1lbsbdtCxjgOCANBI=;
 b=TC4HqGeB6Zdib09QwW0Qxpc4/df0QU2RMhJWFZp0GIOQP4LiDIDG3sZ1ck2LG3yUsDr/A7hmxo4NLwr9ZsrzRRMAAtwg/Dqn7fpQrLfxNmjHaNmTizd8PVNHG9XVHUgS30/BHbV+CqeKK1/eIZqt2UrQyUJWda1s/REJIBGe32A=
From: Luca Fancellu <Luca.Fancellu@arm.com>
To: "Orzel, Michal" <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 5/6] xen/dt-overlay: support phandle-based targeting in
 overlay_get_nodes_info
Thread-Topic: [PATCH 5/6] xen/dt-overlay: support phandle-based targeting in
 overlay_get_nodes_info
Thread-Index: AQHczMxJn1pwTu5+sUmN2MgYtFAQK7XgQWaAgAELlQCAAA1zAA==
Date: Thu, 16 Apr 2026 08:21:55 +0000
Message-ID: <6E811F82-6F9F-4894-B2A3-03AA166E78F4@arm.com>
References: <20260415113700.107915-1-michal.orzel@amd.com>
 <20260415113700.107915-6-michal.orzel@amd.com>
 <519E2133-12B9-4E51-A7A5-FDBADF82159E@arm.com>
 <1ab0c888-e890-490e-adad-938222f31a62@amd.com>
In-Reply-To: <1ab0c888-e890-490e-adad-938222f31a62@amd.com>
Accept-Language: en-GB, en-US
Content-Language: en-US
X-MS-Has-Attach:
X-MS-TNEF-Correlator:
x-mailer: Apple Mail (2.3826.700.81.1.6)
Authentication-Results-Original: dkim=none (message not signed)
 header.d=none;dmarc=none action=none header.from=arm.com;
x-ms-traffictypediagnostic:
	DU2PR08MB7272:EE_|AS8PR08MB10100:EE_|DU6PEPF00009523:EE_|DB9PR08MB6410:EE_
X-MS-Office365-Filtering-Correlation-Id: 5a04a5c4-4d6f-4677-766b-08de9b915dd9
x-checkrecipientrouted: true
nodisclaimer: true
X-MS-Exchange-SenderADCheck: 1
X-MS-Exchange-AntiSpam-Relay: 0
X-Microsoft-Antispam-Untrusted:
 BCL:0;ARA:13230040|376014|366016|1800799024|18002099003|56012099003|22082099003|38070700021;
X-Microsoft-Antispam-Message-Info-Original:
 ESRg0aQYHlDuOvQN+ex7kU7EY6IrjnwDpDDzgT3RktUvcP2Cc749+D8BIodlvXHOk3v/fAFvh1JuwR3YQgcdfjyWjC2Sv4+pPf3bq3dd/dVmWQk6raCJewxuaVr6ghdgu6gTY4enQiRMzwTN/hJiRgPPg3kRHNAWSNhTdH/OqcOgJW9+bMEuZSGOr7RhI0owWToDrHDXTEPUYPbICzBg+0shOoq5h9TzQTR0P9SGyOQSk2dLgb50VWbSGHc0wSLyDCHCydxDfBQf1w6zl8C4TSciRCQ8ZMVfRykPde58O7ZgybqIxQqRWEZrDTmkBH/OKa6fBfs2hDaCLDK95NO9iMjrgLtYUf820wAalWh7b2ee5luG/pqaIaQj4wHCASpJ5KkJX0arKd6pW8q+yfGkeipC698mJfYOs6C1NszNoRavMH0PvuvnQAdYi3chp+Qjz8PEhLTJ3xsV9EqhlpRrwbMhzPdx65lEddSaZa9aCAQCsoF1mikqRulNrO9AZ4EWRErBavNLL+POiMyGK+CdUX3nt0BDZQD/naSCLO3NLqXEnc/dVMzvILEcJbZwtL+KjbFeN4LqcD8lgre4SkoPNGZwX3uvWsaQ4EhKMMYSyFz4eBLAkp8eM/hFlMgmudQc2Z/UyEsnqSXVMjVBIE4OW/ylWaumPtrZAwYt6y5p8Hjg7KEDfySOcl+Q0TNm47KSatgengSDaxegEBQujNLZQxw2pXfBRu4qRiIGyc/fU+yei1Rjynjjk6llkePSDEH9Dyh0bF0dq6AiVgBU85dU9cgqAH2iJ4NzvRY1ebFE2go=
X-Forefront-Antispam-Report-Untrusted:
 CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:DU2PR08MB7272.eurprd08.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(376014)(366016)(1800799024)(18002099003)(56012099003)(22082099003)(38070700021);DIR:OUT;SFP:1101;
Content-Type: text/plain; charset="us-ascii"
Content-ID: <FBAA3E282303E54C8223F90B5A943A88@eurprd08.prod.outlook.com>
Content-Transfer-Encoding: quoted-printable
MIME-Version: 1.0
X-Exchange-RoutingPolicyChecked:
 I0a19+tP9RlLYPaejhJULUFtZBhN+3eJ6qpqGh1eC470h2LpEBMNq3k6pkq/hHjiNwNJfuImxHSGOKfg/CzYcPF2M1Fiw7p4E6eHpZ3kXCHiX0WpCZas+UYHyXM3Y89A+mKqtpv4xwKlLXjb4b2MgoZrmHf2/TEkUa5z/sONZOmXwOazxSDFl8ghWexr6Gr4/OHJ3vOAh1vS1pS7fSTZ0YYcSBqXtph3GbzFsO1ls4vXkuY6gJDyVn8zFXivEmtccYLSoVXvaL3JyHdWSdGdkvsDhUU7IO+Ur1ErnXem5Y6JjI2AUHB3V0KBinT8U7mrXZ7n/iGukma3lqg9MmGhOw==
X-MS-Exchange-Transport-CrossTenantHeadersStamped: AS8PR08MB10100
X-EOPAttributedMessage: 0
X-MS-Exchange-Transport-CrossTenantHeadersStripped:
 DU6PEPF00009523.eurprd02.prod.outlook.com
X-MS-PublicTrafficType: Email
X-MS-Office365-Filtering-Correlation-Id-Prvs:
	5b8b6a28-156a-46dd-65d0-08de9b91386f
X-Microsoft-Antispam:
	BCL:0;ARA:13230040|82310400026|35042699022|14060799003|1800799024|376014|36860700016|56012099003|22082099003|18002099003;
X-Microsoft-Antispam-Message-Info:
	zBBTcpBLwSKR2F/x0qsTp0e+j0vjwep+tYRT7fn8/BUi52Hc/qSdhG7vOhl9xo+SMRIBOmc1t5uN6O9NInMbPRiPUMLAHEjYIXHrnecCbqUwm7HmafX7Bplz/dHqobb66bTw6B3JvfFWLQcXU47a7dzj79CVAmo4Twpus+AOvx6E1MpH7DzlSa3+GgFQhwpcjrhNDrKGU+fF5zW7+3K7Susjq/bt4M6qWU2gjaDsVDRwoNzwxqioqO+NrLGksYtHwszb9BdMP4vVnUVArpKGRS81bRUXXwGkRBUcxUaqJuCSybaJnCERy2sMFpBkvc2jrvoOVEpkBT6P69lrlsl4NwGaLhIad83RLgmkFZt1bbz9N7sx2Dflx3VBHUvUUrFUZoUOvGfkDs0Rv3B6qnVWqlNrihGILWMStKV9fUjRGM61DywJiLngYncTb3R3QGHHDkCnKUp3gdJgOwGAPp5zO3LO7JZ+VYZWzW3rFKm4FE9H4YldLiiZTIPHXySjEv4jDI3NLNw4HFf4W2wZV/pZSu2hHBWITiSkQfmQgXsDV3NLhFdt+S2xYnOEd9C/K3GS9hbRZ019e/9DH3i1INvV7lRPBQy4PbvWKLXymNUeyJ7be7um0tCjjsl9Mo7Li/k4vfUv6mBh1q4lYXpac8BK3RiiYI3vUdU0H7DM7pe8OyEyOnph7TWfTHTMBhBKMYMAe0QhcEaF0Pbm6LY5wkz52/ecrs3EOTZrUs43AvRec3nMWfIqV2H9TA/USfGKf0kmV5Sm03FvQWjZwXhrlFSlBg==
X-Forefront-Antispam-Report:
	CIP:4.158.2.129;CTRY:GB;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:outbound-uk1.az.dlp.m.darktrace.com;PTR:InfoDomainNonexistent;CAT:NONE;SFS:(13230040)(82310400026)(35042699022)(14060799003)(1800799024)(376014)(36860700016)(56012099003)(22082099003)(18002099003);DIR:OUT;SFP:1101;
X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1
X-MS-Exchange-AntiSpam-MessageData-0:
	8XijxgAVspez7RIgw+T4LkDnxLqFQcXOHEC+c2yPrhROo0blS6tygElomQVaLvkAoDRLmVti7yohDxiqyi0f2Kh088YJlxQYs5uTP2fxuFz3WOEdCLzMAPnxCrom/GC0U/4UWFWjnORylAN9Coiqaw1f48MWqmSmuasBgfYZKMbeCtKFX7McWmkSmsCtPBh/UD7rC63WqmLiYC6KKnX/OwS56pN3pOpy3Ilqhal7BXLGfwAg4e3wNuWv3q1zBBhUPyXrrzkkiI8U/U2oqKBNdR0rtLHGrjzXEVLN/yJ78/lZLCjViegLIgl19oqmkuhnLyJTdcTKm9ISATWbbY7WQ0xqJacxuTa1v5rSGRvqH4jQerGYd/IG/zWuMp7Ia1wneeKLsrw5LEKWDHzKwgTHRyl4VN2kuU5M3JktIfGdNswAleK+IAyc0hSutjUrXDBt
X-OriginatorOrg: arm.com
X-MS-Exchange-CrossTenant-OriginalArrivalTime: 16 Apr 2026 08:22:57.9303
 (UTC)
X-MS-Exchange-CrossTenant-Network-Message-Id: 5a04a5c4-4d6f-4677-766b-08de9b915dd9
X-MS-Exchange-CrossTenant-Id: f34e5979-57d9-4aaa-ad4d-b122a662184d
X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=f34e5979-57d9-4aaa-ad4d-b122a662184d;Ip=[4.158.2.129];Helo=[outbound-uk1.az.dlp.m.darktrace.com]
X-MS-Exchange-CrossTenant-AuthSource:
	DU6PEPF00009523.eurprd02.prod.outlook.com
X-MS-Exchange-CrossTenant-AuthAs: Anonymous
X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem
X-MS-Exchange-Transport-CrossTenantHeadersStamped: DB9PR08MB6410
X-purgate-ID: tlsNG-33051d/1776327783-2BB6C938-85F40542/0/0
X-purgate-type: clean
X-purgate-size: 3223

>>>=20
>>> diff --git a/xen/common/device-tree/dt-overlay.c b/xen/common/device-tr=
ee/dt-overlay.c
>>> index d3d4669718ac..a0dee7edb7e5 100644
>>> --- a/xen/common/device-tree/dt-overlay.c
>>> +++ b/xen/common/device-tree/dt-overlay.c
>>> @@ -286,6 +286,63 @@ static unsigned int overlay_node_count(const void =
*overlay_fdt)
>>>    return num_overlay_nodes;
>>> }
>>>=20
>>> +/*
>>> + * Resolve the target path for an overlay fragment.
>>> + *
>>> + * This is called before fdt_overlay_apply(), so phandle-based targets
>>> + * (target =3D <&label>) are still unresolved (compiled as 0xffffffff =
by DTC).
>>> + * Handle the two cases that actually occur:
>>> + *  - target-path property: the path string is used directly,
>>> + *  - target =3D <&label>: the label is looked up in the overlay's __f=
ixups__
>>> + *    node, then resolved to a path via the base DTB's __symbols__ nod=
e.
>>> + *
>>> + * Returns a pointer into the FDT on success, NULL on failure.
>>> + */
>>> +static const char *overlay_get_target_path(const void *fdt, const void=
 *fdto,
>>> +                                           int fragment)
>>> +{
>>> +    const char *path, *fragment_name;
>>> +    int fixups_off, symbols_off, property;
>>> +    int fragment_name_len;
>>> +
>>> +    /* Try target-path first (string-based targeting) */
>>> +    path =3D fdt_getprop(fdto, fragment, "target-path", NULL);
>>> +    if ( path )
>>> +        return path;
>>> +
>>> +    /* Phandle-based target: resolve via __fixups__ and __symbols__ */
>>> +    fixups_off =3D fdt_path_offset(fdto, "/__fixups__");
>>> +    if ( fixups_off < 0 )
>>> +        return NULL;
>>> +
>>> +    symbols_off =3D fdt_path_offset(fdt, "/__symbols__");
>>> +    if ( symbols_off < 0 )
>>> +        return NULL;
>>> +
>>> +    fragment_name =3D fdt_get_name(fdto, fragment, &fragment_name_len)=
;
>>> +    if ( !fragment_name )
>>> +        return NULL;
>>> +
>>> +    fdt_for_each_property_offset(property, fdto, fixups_off)
>>> +    {
>>> +        const char *val, *label, *p;
>>> +        int val_len;
>>> +
>>> +        val =3D fdt_getprop_by_offset(fdto, property, &label, &val_len=
);
>>> +        if ( !val )
>>> +            continue;
>>> +
>>> +        /* Match entries of the form "/<fragment_name>:target:0" */
>>> +        for ( p =3D val; p < (val + val_len); p +=3D (strlen(p) + 1) )
>>=20
>> what guarantees us that p will be null terminated, if a malformed overla=
y
>> is passed this strlen can read past the string, we can use strnlen havin=
g as
>> upper bound a counter=3Dval_len? decreasing counter each iteration.
>>=20
>> Or do you think it can never happen?
> In theory it can happen, in practice this is something not usually taken =
into
> account. But we can surely stay on the defensive side and do a single che=
ck
> right after fdt_getprop_by_offset to catch not-NUL terminated stringlist:
> if ( !val || !val_len || val[val_len - 1] !=3D '\0' )

Ok, do we also want to print a warning in case of malformed properties inst=
ead
of ignoring and continue?

>=20
> In case of no other remarks, I'd do that on commit.
>=20
> ~Michal
>=20

Cheers,
Luca



From xen-devel-bounces@lists.xenproject.org Thu Apr 16 08:27:09 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 16 Apr 2026 08:27:09 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1283106.1565396 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wDI40-0000zF-Mu; Thu, 16 Apr 2026 08:27:04 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1283106.1565396; Thu, 16 Apr 2026 08:27: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 1wDI40-0000z8-JL; Thu, 16 Apr 2026 08:27:04 +0000
Received: by outflank-mailman (input) for mailman id 1283106;
 Thu, 16 Apr 2026 08:27:02 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <jbeulich@suse.com>) id 1wDI3y-0000z2-Lr
 for xen-devel@lists.xenproject.org; Thu, 16 Apr 2026 08:27:02 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wDI3x-0005GT-Fn
 for xen-devel@lists.xenproject.org; Thu, 16 Apr 2026 10:27:01 +0200
Received: from [10.42.69.11] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <jbeulich@suse.com>)
 id 69e09d4b-e002-0a2a0a5209dd-0a2a450bdfbc-36
 for <xen-devel@lists.xenproject.org>; Thu, 16 Apr 2026 10:27:01 +0200
Received: from [209.85.221.46] (helo=mail-wr1-f46.google.com)
 by tlsNG-42698a.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.1)
 (envelope-from <jbeulich@suse.com>)
 id 69e09d55-212f-0a2a450b0019-d155dd2ed1db-3
 for <xen-devel@lists.xenproject.org>; Thu, 16 Apr 2026 10:27:01 +0200
Received: by mail-wr1-f46.google.com with SMTP id
 ffacd0b85a97d-43cfde3c3f3so7810373f8f.3
 for <xen-devel@lists.xenproject.org>; Thu, 16 Apr 2026 01:27:01 -0700 (PDT)
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-43ead3553d7sm11551918f8f.9.2026.04.16.01.26.59
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Thu, 16 Apr 2026 01:26:59 -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=google header.d=suse.com header.i="@suse.com" header.h="Content-Transfer-Encoding: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=1776328021; x=1776932821; darn=lists.xenproject.org;
        h=content-transfer-encoding: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;
        bh=ZmVIp6XqRe6y+f5rJqSDXLrfB6PgQu705IW4tDYaN5s=;
        b=bVSQBjf8EmTlvJRsFWBaJ7sN9ClyYMo3HtPFXo2NG7AHE+4gEi44U4EvNjsjtX1Sgj
         kSBZ/LdrQKy3Khs8odQDq1tZuvZi9yCsV5E1bqvvzkw8TWjywRm1UOWmLbWo9SjGICEH
         ACAjbHwJWZayMW1SVFD5k1ogYdJ0RVtmRJxHC3MTK2ELcry5FhvS0wmNQatHvQrwlsQs
         Y7D0DfkXxTdrzlngyn1GU8HAF+bdIhsjBGi7m4kBpiabkEkZeXCqaSjdf+2PC3VEKn/n
         E8hkoLG683PBIIS5ZN+kg7ZjA5TMh37RFwwE9E8aKsM2NnemJmLYF56fdhaZV/FQbS2r
         TXfQ==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20251104; t=1776328021; x=1776932821;
        h=content-transfer-encoding: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;
        bh=ZmVIp6XqRe6y+f5rJqSDXLrfB6PgQu705IW4tDYaN5s=;
        b=WNy9YAnEf/OrhFL9VWjnTYzNbNgr7e7mKMCM/CtF7VGKR9bEhgEw3ERt7REi2wn27a
         9y3K0X/aAJtDVt0NHJJcE/WlGy9vvBPJKJb1Xn+C/6PbA/jJiYlv3Q1YMpU+bOMRurXo
         xROmmsTVCZ+6RNHNZlMcDt6TumtWgvXNos91JW8NZNtB5AA2HCYBK7DIv9phaelsnusp
         W6KkEhjjaWxlTTLD9LeJSetw2IAHhAyW1R4SMVD7gZEGVtsxxZMkFBJrnehHsN+CuNKX
         bRvsw1171J9Xri4XLxx9aSLpyoPdmy/I/iwnW4npeQvD836gU+BexpGib33KxX/fwnic
         2mAw==
X-Forwarded-Encrypted: i=1; AFNElJ/6Juqeqcc7t33CbRTnWkcRcDdDSwkaO7/cj07mUgKMF+yUMLU/JbGNGBcrt7tM1vxVl8Y3mHv/4wU=@lists.xenproject.org
X-Gm-Message-State: AOJu0Yx57F0aBjCZCCx0errXxDUQn28mg9ok9DrLvNcy6BxOV4ekdhOa
	Zld5BYpbjAyXx3PNFGm8vxSGMaA6DtQDEyY5h4jFbq8uTpo2LHn9r0u6hCSqLloAxQ==
X-Gm-Gg: AeBDieuN7FXFZzXtAl9pzucBWjbOfoJV91BPyrst5h3Gp5MRpU+3m1Pu8VA2KEjpS7l
	pm3y5IAkCGp5KkEMcKhIva6cpbjbZeQtC4b5VTkL8atmkD/oeXg8MP6GUIJGueai48lz1VNsTTq
	JVqP7jGs9reEpuI0mg/gFhhvxEPfiso/9VLvfHqsaCKlB7S6LCNI23lIZKYLGO6gTE3gPZiWKoT
	2//ozXs1c8Q3YTnez8IucPAYYdzeE5nU1GPyVxciG9QjCPR97Z81+euNertluftO22nK68CFrcK
	mJSJ6MeKexsTSWovtnJxIpPHc5XKckUdWJ1h0z7muUak7QeSiCZnvnnsr6+rJKqiPxGaGpbgy2j
	m7uSIMhVJZcWDmL8MDP63EMf/otysUKGoTWY/gUSbtfmnuHuFH8V18mU7albLrPmAZortEGh5r3
	MP5ua6bslMFMZvXko2NvLXzyr571rU7Yw28Gz4pnA1422pp8Zt//0PxE9RSP6L55RPVjtCCWSHX
	89/1M1Lih6a0MbdM07/KgLS3A==
X-Received: by 2002:a05:6000:1ac5:b0:43b:3d02:7806 with SMTP id ffacd0b85a97d-43d642c852cmr37530036f8f.28.1776328019996;
        Thu, 16 Apr 2026 01:26:59 -0700 (PDT)
Message-ID: <776afc8f-20ab-4014-97c1-0b9491c29aea@suse.com>
Date: Thu, 16 Apr 2026 10:27:03 +0200
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH v7 5/6] tools: Allow building xen-hptool without
 CONFIG_MIGRATE
To: Mykyta Poturai <Mykyta_Poturai@epam.com>
Cc: Anthony PERARD <anthony.perard@vates.tech>,
 Juergen Gross <jgross@suse.com>,
 "xen-devel@lists.xenproject.org" <xen-devel@lists.xenproject.org>
References: <cover.1774871881.git.mykyta_poturai@epam.com>
 <73db845e6617130966a565cdca6274db4cb46428.1774871881.git.mykyta_poturai@epam.com>
 <58cfab3b-7cf2-4e38-9968-1248e665f985@suse.com>
 <f4a1cfa1-f3ea-4fa0-bffd-1f6346e07d39@epam.com>
 <28900826-5a96-4bf0-8d5b-11fd1be8386a@suse.com>
 <96829f0b-faac-4100-8c30-c93ac9459600@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: <96829f0b-faac-4100-8c30-c93ac9459600@epam.com>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
X-purgate-ID: tlsNG-42698a/1776328021-0576AF3B-5A7CBCDD/0/0
X-purgate-type: clean
X-purgate-size: 3293

On 16.04.2026 10:22, Mykyta Poturai wrote:
> On 4/16/26 09:49, Jan Beulich wrote:
>> On 15.04.2026 16:51, Mykyta Poturai wrote:
>>> On 3/30/26 15:32, Jan Beulich wrote:
>>>> On 30.03.2026 13:59, Mykyta Poturai wrote:
>>>>> 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.
>>>>>
>>>>> Signed-off-by: Mykyta Poturai <mykyta_poturai@epam.com>
>>>>> ---
>>>>> 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/libs/guest/Makefile.common | 2 +-
>>>>>    tools/misc/Makefile              | 2 +-
>>>>>    2 files changed, 2 insertions(+), 2 deletions(-)
>>>>>
>>>>> diff --git a/tools/libs/guest/Makefile.common b/tools/libs/guest/Makefile.common
>>>>> index b928a4a246..03dfcee7fa 100644
>>>>> --- a/tools/libs/guest/Makefile.common
>>>>> +++ b/tools/libs/guest/Makefile.common
>>>>> @@ -7,6 +7,7 @@ OBJS-y += xg_private.o
>>>>>    OBJS-y += xg_domain.o
>>>>>    OBJS-y += xg_suspend.o
>>>>>    OBJS-y += xg_resume.o
>>>>> +OBJS-y += xg_offline_page.o
>>>>>    ifeq ($(CONFIG_MIGRATE),y)
>>>>>    OBJS-y += xg_sr_common.o
>>>>>    OBJS-$(CONFIG_X86) += xg_sr_common_x86.o
>>>>> @@ -17,7 +18,6 @@ OBJS-$(CONFIG_X86) += xg_sr_save_x86_pv.o
>>>>>    OBJS-$(CONFIG_X86) += xg_sr_save_x86_hvm.o
>>>>>    OBJS-y += xg_sr_restore.o
>>>>>    OBJS-y += xg_sr_save.o
>>>>> -OBJS-y += xg_offline_page.o
>>>>>    else
>>>>>    OBJS-y += xg_nomigrate.o
>>>>>    endif
>>>>
>>>> This looks wrong to me. There are x86-specifics in that file, which shouldn't
>>>> be built on Arm. And the name of the file also doesn't indicate any relation
>>>> to CPU management.
>>>
>>> xen-hptool requires xg_offline_page as it has both CPU and memory
>>> hotplug commands. Without building xg_offline_page it fails with
>>>
>>> xen-hptool: symbol lookup error: xen-hptool: undefined symbol:
>>> xc_mark_page_offline, version libxenguest_4.22.0
>>>
>>> when trying to do memory ops.
>>>
>>> Is it an acceptable behavior?
>>
>> I don't think so, no. The tool wouldn't, aiui, load at all then if built with
>> "bindnow" enabled.
>>
>>> If so I guess we can build xg_offline page only on x86.
>>
>> We still need to, imo. But the tool still needs to be usable no matter how
>> specifically it is built. It should avoid referencing xg_offline_page.c
>> functions when built for non-x86.
> 
> As I understand, the usage of arch-specific compile time checks is 
> heavily discouraged in tools. So I don’t think it would be approved by 
> tools maintainers. Do we really need to omit this file if memory ops are 
> already getting blocked by Xen on Arm anyway?

Nothing I can answer in a way that's definitive for your purpose. As you
say, the final word here is with Anthony. I've voiced my opinion.

Jan


From xen-devel-bounces@lists.xenproject.org Thu Apr 16 08:37:16 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 16 Apr 2026 08:37:16 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1283118.1565405 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wDIDl-0002p3-Iv; Thu, 16 Apr 2026 08:37:09 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1283118.1565405; Thu, 16 Apr 2026 08:37: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 1wDIDl-0002ow-F0; Thu, 16 Apr 2026 08:37:09 +0000
Received: by outflank-mailman (input) for mailman id 1283118;
 Thu, 16 Apr 2026 08:37: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 1wDIDk-0002oq-2R
 for xen-devel@lists.xenproject.org; Thu, 16 Apr 2026 08:37:08 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wDIDg-00DGgA-NW
 for xen-devel@lists.xenproject.org; Thu, 16 Apr 2026 10:37:06 +0200
Received: from [10.42.69.7] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <Michal.Orzel@amd.com>)
 id 69e09fae-e002-0a2a0a5209dd-0a2a45078b76-20
 for <xen-devel@lists.xenproject.org>; Thu, 16 Apr 2026 10:37:05 +0200
Received: from [52.101.62.13]
 (helo=DM5PR21CU001.outbound.protection.outlook.com)
 by tlsNG-ef75cf.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.1)
 (envelope-from <Michal.Orzel@amd.com>)
 id 69e09faf-229c-0a2a45070019-34653e0d14a0-4
 for <xen-devel@lists.xenproject.org>; Thu, 16 Apr 2026 10:37:05 +0200
Received: from DM6PR05CA0054.namprd05.prod.outlook.com (2603:10b6:5:335::23)
 by PH7PR12MB7284.namprd12.prod.outlook.com (2603:10b6:510:20b::18) with
 Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9818.20; Thu, 16 Apr
 2026 08:36:59 +0000
Received: from CY4PEPF0000EDD7.namprd03.prod.outlook.com
 (2603:10b6:5:335:cafe::84) by DM6PR05CA0054.outlook.office365.com
 (2603:10b6:5:335::23) with Microsoft SMTP Server (version=TLS1_3,
 cipher=TLS_AES_256_GCM_SHA384) id 15.20.9769.51 via Frontend Transport; Thu,
 16 Apr 2026 08:36:58 +0000
Received: from satlexmb07.amd.com (165.204.84.17) by
 CY4PEPF0000EDD7.mail.protection.outlook.com (10.167.241.203) with Microsoft
 SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id
 15.20.9769.17 via Frontend Transport; Thu, 16 Apr 2026 08:36:58 +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.17; Thu, 16 Apr
 2026 03:36:58 -0500
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.17; Thu, 16 Apr
 2026 03:36:58 -0500
Received: from [10.252.147.171] (10.180.168.240) by satlexmb08.amd.com
 (10.181.42.217) with Microsoft SMTP Server id 15.2.2562.17 via Frontend
 Transport; Thu, 16 Apr 2026 03:36:56 -0500
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@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=l2LPIpibjWeo7+C0hwUXALvLgA3+gKBnN6bvOuEBzgL0F8lxU5d/mDA9qa7OQ0frsV+Xy5nbn4S23SW9kUh52D02QuBFMweIKf1ShB7GaRF57NBCV5H5zEoYnI1AQCmeOUzzIiZ3eVEH9t5X3hqx1HgcFsFtntowWoHICPY+8ZhXE9OUJ6l9f/3RAio7EEOjHsQIg86nzF/SGAa15CiehPkpdzbqVP+kcO+iPpZGPQJDJeMJc5fRte21LXre4JG7jlQMi7DYCtcztbuAJgYJGQw0/m0A5zgx615U5ynoB9zDXsMokhQwhSO6CdqssnkRL2kMqhlm0hdyXhxb+ZK8Uw==
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com;
 s=arcselector10001;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1;
 bh=2MRUbZqKdvZ4HtnafZuZfQfVQ21MvGwlzSggyh3dnjQ=;
 b=dVU1rsL9K96LZBFDMA9HtX9Wbmo7oXf55QzH1iPyiUTRwpK6dmk6/U5AQ7XQh2aXfK/TLEmt4+6hwESkZSItdVBgHSXGFbTVUndhCq8r8hegTJl0ddnPQqK/4CBA0rwwNyaXQ/6qWtIbri6DQDZMwGg5gqjXOLZulyukJh5boynbj7mLXed8a6Qnh3cNeOilUjgm2rquGHtABwCqV0BdGx7l8/ntfv2LZubme2eVxpw741J2RP/wcA+gBDVtOYImX/ieyxbpEy5DgLZj6KdhwsizgG8xhdHqu0X6VN98xvJ34MHoezur2cTb73OJ0VVaaUB6xeS9czZuywmrx49+bg==
ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass (sender ip is
 165.204.84.17) smtp.rcpttodomain=arm.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=2MRUbZqKdvZ4HtnafZuZfQfVQ21MvGwlzSggyh3dnjQ=;
 b=YckIOJIltFbjLYKGfPwGMa5Ia0/5sPiuA6pvqm9uwjqcaU/wej0GKqP1VW5k3xeRGYqc7fBqF/ypS3BWedr9tBsci5MCB8WScnF1U0AjgxpBBx7BsQL6jRCbL2sX+jAoe9H3LMi+qjBdskfbMetR6UzQjVLBpwdjUNcAqXLL3Q8=
X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 165.204.84.17)
 smtp.mailfrom=amd.com; dkim=none (message not signed)
 header.d=none;dmarc=pass action=none header.from=amd.com;
Received-SPF: Pass (protection.outlook.com: domain of amd.com designates
 165.204.84.17 as permitted sender) receiver=protection.outlook.com;
 client-ip=165.204.84.17; helo=satlexmb07.amd.com; pr=C
Message-ID: <de3ed940-c788-480b-8820-66afb3c8dc82@amd.com>
Date: Thu, 16 Apr 2026 10:36:56 +0200
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH 5/6] xen/dt-overlay: support phandle-based targeting in
 overlay_get_nodes_info
To: Luca Fancellu <Luca.Fancellu@arm.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>
References: <20260415113700.107915-1-michal.orzel@amd.com>
 <20260415113700.107915-6-michal.orzel@amd.com>
 <519E2133-12B9-4E51-A7A5-FDBADF82159E@arm.com>
 <1ab0c888-e890-490e-adad-938222f31a62@amd.com>
 <6E811F82-6F9F-4894-B2A3-03AA166E78F4@arm.com>
From: "Orzel, Michal" <michal.orzel@amd.com>
Content-Language: en-US
In-Reply-To: <6E811F82-6F9F-4894-B2A3-03AA166E78F4@arm.com>
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: 7bit
X-EOPAttributedMessage: 0
X-MS-PublicTrafficType: Email
X-MS-TrafficTypeDiagnostic: CY4PEPF0000EDD7:EE_|PH7PR12MB7284:EE_
X-MS-Office365-Filtering-Correlation-Id: d0b97038-3789-49e1-f76d-08de9b9352df
X-MS-Exchange-SenderADCheck: 1
X-MS-Exchange-AntiSpam-Relay: 0
X-Microsoft-Antispam:
	BCL:0;ARA:13230040|1800799024|36860700016|376014|82310400026|56012099003|18002099003|22082099003;
X-Microsoft-Antispam-Message-Info:
	2xiOo8eo3UwcuHhKI+NFYK25gAinl0VNkBtkz5REq7x7BHOJ2QMQDnt7RE9ebD+/01RPOyhOIh1AoyZ78NWE4YsntOueTuN3OJiQViE8xLx+yJWtwfkVGXSm5RtCf+abZX7f/Z45tEc0vWawK84imn/HJZfw38uuupo5VrKyCiXTw55AK3cludhDHUxfNP8BUGYgZzhMRT5z597XlQdthIylKm/y/B/u64OlyytyBzEDDYogl+6KG59g+EnIOokToiQHv/9XsbBpD56S9Uac+XBlggvf8DerZvsJTdEgU7+Y+yjwL3LT5fpiuzynchoziz7Ii3wxgYdWLdf3N+aPI1UmyfSQg1YBTCL/fBCN+e4LRk4w2Z13vipfLbNxH7J16w0ij5zJppRbRc95+DBflEIu8m5sx4uyHjnh+D1DbWqjJuXO4xcoIbWj6zQZ43VMoRi0iKjAm1EXResZ6kT5JLycyS4f3bgfnoyoa6QtxI2rx9Y2Hlv4boBVeJ5stmIhQOQUlJaH6lBIAsqFlNaTMdO66khJZiyERBC6T5Utpn3tQtUIFj1LUZWoIUCw2mJW6GGafzIWWHYf8xBBsH9CIpRSyOxUzkJcVl/A2TyFjKLZZrbtJPn1nPk7qGgK5hgjHSE1egMG5NuNhpxI53XwbVrDeFMUXWkhR9cRG0RU/E8i9k6f3TBq4yVB/cu5FkIaL7g+PGr/c2wxsXqUyPKw99dTUERlHbN8i7Pcdxxv5x3xfMkxsi3aFPiMGUX6TTGNZP4ZzC2F9U5dSaWgkh064Q==
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)(36860700016)(376014)(82310400026)(56012099003)(18002099003)(22082099003);DIR:OUT;SFP:1101;
X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1
X-MS-Exchange-AntiSpam-MessageData-0:
	i9RQCQvfIUnRLFg89tNkaAJDB88wzxga/Syl6zgZQuAVu6LO3OT3GUM9JdInS56YdzI/tuulcdy6C+VIz0wKmc1Ww1bUW4xOUYqmSqyC6PA9uBtXVTZzAJsi1YTJSTJXbmeewWOHoVsDowwWKHzw2mPaFEv9Cn2ZPlyPP3FwkNLTjZ2QSrKj/myuiHBEZZXTfJXDeAdjw21yYTftKgxN9X1pCRaFEIWXvhiqQH21Z69y36jtRjpQaY3nLVLUlglB55G+O8c2fHvILUHbjAAmpQ3PhqHWPxG+BCHp9yc6Ngap1CGP6L9A0MBT2Vd6aL6Uk8ktaOBBv4K0Y3AFe6NM7NUmF0qvawhRONstSBcNRv7YvBVPc9FF+yZD3HgEnCLvYeKYfh/XJH6qHWiY0Jb/vkoiIPJdnt/WQkNPRZtchma0i8LntrygVf0aPInabkEZ
X-OriginatorOrg: amd.com
X-MS-Exchange-CrossTenant-OriginalArrivalTime: 16 Apr 2026 08:36:58.5228
 (UTC)
X-MS-Exchange-CrossTenant-Network-Message-Id: d0b97038-3789-49e1-f76d-08de9b9352df
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:
	CY4PEPF0000EDD7.namprd03.prod.outlook.com
X-MS-Exchange-CrossTenant-AuthAs: Anonymous
X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem
X-MS-Exchange-Transport-CrossTenantHeadersStamped: PH7PR12MB7284
X-purgate-ID: tlsNG-ef75cf/1776328625-AD56BC48-363EA4E8/0/0
X-purgate-type: clean
X-purgate-size: 3257



On 16/04/2026 10:21, Luca Fancellu wrote:
>>>>
>>>> diff --git a/xen/common/device-tree/dt-overlay.c b/xen/common/device-tree/dt-overlay.c
>>>> index d3d4669718ac..a0dee7edb7e5 100644
>>>> --- a/xen/common/device-tree/dt-overlay.c
>>>> +++ b/xen/common/device-tree/dt-overlay.c
>>>> @@ -286,6 +286,63 @@ static unsigned int overlay_node_count(const void *overlay_fdt)
>>>>    return num_overlay_nodes;
>>>> }
>>>>
>>>> +/*
>>>> + * Resolve the target path for an overlay fragment.
>>>> + *
>>>> + * This is called before fdt_overlay_apply(), so phandle-based targets
>>>> + * (target = <&label>) are still unresolved (compiled as 0xffffffff by DTC).
>>>> + * Handle the two cases that actually occur:
>>>> + *  - target-path property: the path string is used directly,
>>>> + *  - target = <&label>: the label is looked up in the overlay's __fixups__
>>>> + *    node, then resolved to a path via the base DTB's __symbols__ node.
>>>> + *
>>>> + * Returns a pointer into the FDT on success, NULL on failure.
>>>> + */
>>>> +static const char *overlay_get_target_path(const void *fdt, const void *fdto,
>>>> +                                           int fragment)
>>>> +{
>>>> +    const char *path, *fragment_name;
>>>> +    int fixups_off, symbols_off, property;
>>>> +    int fragment_name_len;
>>>> +
>>>> +    /* Try target-path first (string-based targeting) */
>>>> +    path = fdt_getprop(fdto, fragment, "target-path", NULL);
>>>> +    if ( path )
>>>> +        return path;
>>>> +
>>>> +    /* Phandle-based target: resolve via __fixups__ and __symbols__ */
>>>> +    fixups_off = fdt_path_offset(fdto, "/__fixups__");
>>>> +    if ( fixups_off < 0 )
>>>> +        return NULL;
>>>> +
>>>> +    symbols_off = fdt_path_offset(fdt, "/__symbols__");
>>>> +    if ( symbols_off < 0 )
>>>> +        return NULL;
>>>> +
>>>> +    fragment_name = fdt_get_name(fdto, fragment, &fragment_name_len);
>>>> +    if ( !fragment_name )
>>>> +        return NULL;
>>>> +
>>>> +    fdt_for_each_property_offset(property, fdto, fixups_off)
>>>> +    {
>>>> +        const char *val, *label, *p;
>>>> +        int val_len;
>>>> +
>>>> +        val = fdt_getprop_by_offset(fdto, property, &label, &val_len);
>>>> +        if ( !val )
>>>> +            continue;
>>>> +
>>>> +        /* Match entries of the form "/<fragment_name>:target:0" */
>>>> +        for ( p = val; p < (val + val_len); p += (strlen(p) + 1) )
>>>
>>> what guarantees us that p will be null terminated, if a malformed overlay
>>> is passed this strlen can read past the string, we can use strnlen having as
>>> upper bound a counter=val_len? decreasing counter each iteration.
>>>
>>> Or do you think it can never happen?
>> In theory it can happen, in practice this is something not usually taken into
>> account. But we can surely stay on the defensive side and do a single check
>> right after fdt_getprop_by_offset to catch not-NUL terminated stringlist:
>> if ( !val || !val_len || val[val_len - 1] != '\0' )
> 
> Ok, do we also want to print a warning in case of malformed properties instead
> of ignoring and continue?
That's really a matter of taste. I would not do it unless you really want to.

~Michal



From xen-devel-bounces@lists.xenproject.org Thu Apr 16 08:38:34 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 16 Apr 2026 08:38:34 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1283128.1565414 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wDIF7-0003bD-Rw; Thu, 16 Apr 2026 08:38:33 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1283128.1565414; Thu, 16 Apr 2026 08: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 1wDIF7-0003b6-Oe; Thu, 16 Apr 2026 08:38:33 +0000
Received: by outflank-mailman (input) for mailman id 1283128;
 Thu, 16 Apr 2026 08:38:33 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <roger.pau@citrix.com>) id 1wDIF6-0003ay-PP
 for xen-devel@lists.xenproject.org; Thu, 16 Apr 2026 08:38:32 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wDIF6-0055Zn-68
 for xen-devel@lists.xenproject.org; Thu, 16 Apr 2026 10:38:32 +0200
Received: from [10.42.69.8] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <roger.pau@citrix.com>)
 id 69e0a002-bab6-0a2a0a5309dd-0a2a4508c5c2-40
 for <xen-devel@lists.xenproject.org>; Thu, 16 Apr 2026 10:38:32 +0200
Received: from [52.101.61.57]
 (helo=DM1PR04CU001.outbound.protection.outlook.com)
 by tlsNG-c1860d.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.1)
 (envelope-from <roger.pau@citrix.com>)
 id 69e0a006-63b5-0a2a45080019-34653d39071a-3
 for <xen-devel@lists.xenproject.org>; Thu, 16 Apr 2026 10:38:31 +0200
Received: from CH7PR03MB7860.namprd03.prod.outlook.com (2603:10b6:610:24e::14)
 by LV9PR03MB8414.namprd03.prod.outlook.com (2603:10b6:408:367::23)
 with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9769.48; Thu, 16 Apr
 2026 08:38:28 +0000
Received: from CH7PR03MB7860.namprd03.prod.outlook.com
 ([fe80::f5ba:35df:1c9f:b343]) by CH7PR03MB7860.namprd03.prod.outlook.com
 ([fe80::f5ba:35df:1c9f:b343%4]) with mapi id 15.20.9818.017; Thu, 16 Apr 2026
 08:38: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=DfFeeNEQmvwIGJmeel1755e+pvqdqs4zLgkkvuVCYrIVqQfQxFfvrqHIMLfzVpKePEyKTnl5MXKOij8Hx9uJbEImMHI225lLuUm45HYOAnRdRzMGWzvlQd/mZYNgAMWee1hBRk3AG+GAUdKuIQWAXD9fpKRs4KmthToly7xpTLKnb+q09wKAfb7moEViojcVdVivpzJASZSW0jUot18nmv0azZUtwWu1O4/XIyRGPYR2HNsGET1DOXTTgdnxcb093+d/+8lF/gPce2Dg53G7x4snM3VZ3P99PJgCucXfeAXJWcxejs5M8ZaqxL+4Q1tWWJBbEU3/3wrxtKjncgWmnQ==
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com;
 s=arcselector10001;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1;
 bh=cQS/bSQTrEiMEaBqkwPnFERmOVSRIH2DGttx4rqn7I8=;
 b=fQ1Ue5vNgi/bRVSvM+d5rRj0ygy1Ese87lD1RguOzgqNV2h1UaT5tPNMD6stg9gwEmHqybOoeOK5LIzjJnvdpiTfN5pL9YY5/2EgSiNnD2Lb7mB+JLyiE+s6gTHXt/ppx1m5nxdLcV/ceXXuhzGZP4iGysisULIgNuMQpDnHSNCQ+2sTixLebKXcjhxZOXgCtQORwMHe++3hcKCOWJOXq5kF1+GZ5gE+x6UgJA57AKcRhPRVVIgcTztiFNbiCmoWWvrw5pWV1TzmXdgCCe1vO20N4JgmEHkM2rIBfgzINFvFeHBu0d2bItXaxS9tG/MohY3uLZ8FoBuN6K2XWKDDcw==
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=cQS/bSQTrEiMEaBqkwPnFERmOVSRIH2DGttx4rqn7I8=;
 b=SC6FkeCaC7W2IW//38mqrDbiMwwtI66dfKJO7t6EOYBaE1+fM3uD89TicmCRCdEbV28bLjEysFjmVI/W7m0gDhHIa/y3IpfT7ahTnrVpUmtup8caUZl3N4dCpHH+wIR9ebQ+HI9ExgJ4H8QX5MvhsP/gV6dMhNygTS8WeZBfpyE=
Authentication-Results: dkim=none (message not signed)
 header.d=none;dmarc=none action=none header.from=citrix.com;
Date: Thu, 16 Apr 2026 10:38:24 +0200
From: Roger Pau =?utf-8?B?TW9ubsOp?= <roger.pau@citrix.com>
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] x86/HPET: channel handling in hpet_broadcast_resume()
Message-ID: <aeCgABa95gZPw___@macbook.local>
References: <a77822d8-08f4-4c4f-b291-cc44a213cf9f@suse.com>
Content-Type: text/plain; charset=utf-8
Content-Disposition: inline
Content-Transfer-Encoding: 8bit
In-Reply-To: <a77822d8-08f4-4c4f-b291-cc44a213cf9f@suse.com>
X-ClientProxiedBy: MR1P264CA0056.FRAP264.PROD.OUTLOOK.COM
 (2603:10a6:501:3e::20) To CH7PR03MB7860.namprd03.prod.outlook.com
 (2603:10b6:610:24e::14)
MIME-Version: 1.0
X-MS-PublicTrafficType: Email
X-MS-TrafficTypeDiagnostic: CH7PR03MB7860:EE_|LV9PR03MB8414:EE_
X-MS-Office365-Filtering-Correlation-Id: d9899a34-24e0-4aa7-4e91-08de9b938873
X-MS-Exchange-SenderADCheck: 1
X-MS-Exchange-AntiSpam-Relay: 0
X-Microsoft-Antispam:
	BCL:0;ARA:13230040|366016|1800799024|376014|18002099003|56012099003|22082099003;
X-Microsoft-Antispam-Message-Info:
	cqQUZXIy8oLVmjdAq/zp1T/u73aAhISHtYcpOkGxC1W+BuCVWyP07g6Tc2EnUKkAByeMG/thHNSWaqZPMqLKlXMsAmxofxvnywebiPsl0sA/fNg169E//OdiCAaam5rn60FiZ4KLmNg1WrdSLYU9gm2C79Xu1cgrrKtu00sDhbkG9978jL77LMe+lHOYK0byKFuN2AG2ObNxk1tu4v1uLavG8DOb14Srqys8GM2OW+1QGGrlQYZBeRUEu+g5x6pV3AKaIhahtBD8b9EJ33hU6MncWCaIRNCuSNMCG+MnfffN2DQ3JapCtMpV1YxRBYfrK9zyOJWUpvLd7IChaPLT1c2nQRA2nEJ9uJ+7IG2sBL50TN7ojVR207xZi7EicGxMXuPGQpZTHV1opbtZkHmKAGgivZiuwm7Y6gOvxxhnobOx+D671qxUrjQOqZ7Jrt9T6XePtPZk8sgNx0ZbPq2AbLwL/uRadotEYdjzVlRoOhr8fQt9vUZe+60nDhPp5gT654RoDWJFSTnu1fbuhL5WTsCFc+6+HZYUoTxHBFu9lvtanWCUMfUFj/P210bJmeVJSUtWkpyR7uiXxl3AmSwPpKA0BR2nw4uN9J1HSbNnDESAhbW8Zp37A7LR7I6v/wf7DjZNF7ps7QgG4PADTXPkenZeSJoUJkVtqyU1UdGAazC8LyBzovAwpL0ytG3pSu+9tXEsqfkOsG8zsO9/fq++p4G7PmbH4rOnerr125cnxts=
X-Forefront-Antispam-Report:
	CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:CH7PR03MB7860.namprd03.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(366016)(1800799024)(376014)(18002099003)(56012099003)(22082099003);DIR:OUT;SFP:1101;
X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1
X-MS-Exchange-AntiSpam-MessageData-0:
	=?utf-8?B?cnVMZ3M2KzkwT25CMjg3bWZPcFFnOUxKRUtxYzNONitxNTc5YVJvbGY5UWZW?=
 =?utf-8?B?aG5uK2FRNGQ4RVNhaFpXYjBXYlNnRENEcGxUT1JrcjMrRENqcWR2NDNRTEc0?=
 =?utf-8?B?bFpBMGNIOERaaXBYZWt1WGJzdkZxSGtnT3dsSTR2OTFVdzArSUl0ZEkzUDA1?=
 =?utf-8?B?TTRyVW1ycW1xLzNGUVFoYmRDNzdMcFE3NUxkWjgwNTcyOGtRVXArYXBDcTVE?=
 =?utf-8?B?OStSTUJCVzBYRnR5MG1oVHIwZmZVZXZmcXdwdS9YOGZWbmNmZkNXb1k0UXpH?=
 =?utf-8?B?c1BpdWdPUmJTZWxxMVk2LzkzSmpJNEplaUZianRhVWM0elRNUGUyMkJJVnVq?=
 =?utf-8?B?YnFBYWNuQXE5eTlpaVlNWUE4N2xiTUt0YVZXYUJiY05vZFh0M1A0ancvZkE1?=
 =?utf-8?B?NUN0WnhaaklIUTRSb2hUTlBYRXFGenJVOTRJNTBZRjNlT0RPbW50TlpEeGky?=
 =?utf-8?B?Rno1WTdiYjUxc3kxbXB2b05YM0ZGUXFoazY1blE3U3QyOFJkWkpMWC9NQ1pE?=
 =?utf-8?B?T3VPcy9Hbkg2RVY3c2FzY3pTTVJEV1NqclM0RGhlaUFHWkVTM0dZb1VubXlq?=
 =?utf-8?B?TWZpaWt6MnUzVWtNR2lZZTZuY2JhYitURW4rcTIvUUhkUkN6S085VStDbFVz?=
 =?utf-8?B?MHpSNTB1dnBCZllRSThONWcvK1VYMTdjbDVmdSs1ZzVBSVNvSjA2LzdJY0Jv?=
 =?utf-8?B?a1VZemJ6d08vZHN4NGErSkpPek11TU5rZHc4dU5Rb3RGemlPdmE3a014UHF0?=
 =?utf-8?B?U3hNL1FXdU5nSkYvUC9LUVV6Unk4NjZIQzFwWmt4MUY0V0hHVDJiT2NCaGdX?=
 =?utf-8?B?enNYVVNnRXlzZ1FobkxVTy9uL2VETXBKTGlvK2ZDeUFjVFZtd1VpUjBsSFd4?=
 =?utf-8?B?QU5XRXJYR251bHpOS1VWbTUwQUJwL0JyVk1sWXgvNTNENDFxRlArVEQvajBI?=
 =?utf-8?B?dHE5TzcxYzkraEhvQWNoS1ZzZUNJTVFCYkcxcGVKWXo4MW9wdmFEOG1CcTdX?=
 =?utf-8?B?UHVBZXhkbko1L2FNZUNBTUNzcmtnM0RzcXl5U2hmMUNQcGpyM0JCeVYwZzdC?=
 =?utf-8?B?Sk5meVptMUtkV3FJUDVOSFJtMjNIVnpJUGlxbnR0aklwL2gzR0FMT2Fpdmdn?=
 =?utf-8?B?MVRtQnBXSVQ2elNmcGhVbVRzb25DNjROSXkvRDF6azFRK2FNWkptczYxdUtU?=
 =?utf-8?B?U3BWU0VZOTJyQmRHKzdVamhTVUhzbnZ5blVpd3NMZFliTWpUNHJmSXVhTFo3?=
 =?utf-8?B?cytEUys1YmVBS09TM3dkb0h3VWpCaVVDMFljTHBJNVVNbUVwNWpwTlk4VE81?=
 =?utf-8?B?MlNnbThGV3d2NkNpaVhBYVU0WURDNU81dUl4MnFVUWI1UW43dEcxVHo2bjJh?=
 =?utf-8?B?S2NIc2VaVjdZeUhidjRuNDlGamdRS01BMnUvSitReGx5ZHBkMEZ1ekxtZTRs?=
 =?utf-8?B?clV4cDBkd25NeWJuSUVpZ3kxZUZ5K1dKamZ4eTZPYUZ3VlRWelY2TFN5amgw?=
 =?utf-8?B?d0RneVZ0Wm5lcFhCQXArRWc5NUliUGVRR0RKSjQ1NTNZZFk3MkhUeUs4djJR?=
 =?utf-8?B?NVZ1WEg1aitZdHdlLytsSlcrcHJ1aUVIRGEva2NOUjdYL3duYnhyRE93OFly?=
 =?utf-8?B?aHpNeDdGdGNUVGxsdHFEYWtWR3Fkcm1LTUFJbEFXQ2lSR3J3cDlQbWFlSXlQ?=
 =?utf-8?B?eUNuTnFiV2VLWGExSEN1dTh3Wm9qSFh2TkFmc0QvejYybS9DOHQ5dVFocnVq?=
 =?utf-8?B?VWttQXRWelY3S2FzQjVFQ0Q1L3h2dHhjMExiYVlMN1d6QzlTMmJhYWQ2SC9D?=
 =?utf-8?B?UFJXSmxyV2tEMzZVQTZVOE9YK1VjTzNnaVBybFFNOWQ5ZVVRU2RMK3VsWlBO?=
 =?utf-8?B?YjgrVk9SLzRYZ0srR2RJaDV6UjhkVWl2WFlzaWxrZ2lXb0JZYyt6amE5ZGtE?=
 =?utf-8?B?d052RC9iWjcwSUp2NkttWE9QRGFmQjhXcEF1SEFRblgwV3ZISlR3SzB2MVVw?=
 =?utf-8?B?cHN3YTRuM2NGOHVySUtaY2VHSWlNMzZmdVZkd1FMSHRaL1pyR3NuaU5OSWhy?=
 =?utf-8?B?WjlDVjBYUkd0M1ptT0xYcUY3WDBkL0czSWlvb2R2YXowZklWRHNmcE1yMEwr?=
 =?utf-8?B?WGpGLzJFUmxSNzZRUXVad29IdDAzV08yejRVMVZoYTN4T3NqU1ptWDlVQ0Fh?=
 =?utf-8?B?S2k1dmlsYXJpUTZMSXJCaWZVa3liTUNNeVFPdkp4OUpsbVJvSUdFaWhmUmE5?=
 =?utf-8?B?K25WUDh5VmVyRG12ZlZ2R2RTdWRJTU1CV3Y4dFY4N084VHIra0ljMUtzd0Qz?=
 =?utf-8?B?WUd0aURVeVhzWWhBR1l2cHU2WkpGcTBueHZ1ekZaZ056R2lJRjNPdz09?=
X-OriginatorOrg: citrix.com
X-MS-Exchange-CrossTenant-Network-Message-Id: d9899a34-24e0-4aa7-4e91-08de9b938873
X-MS-Exchange-CrossTenant-AuthSource: CH7PR03MB7860.namprd03.prod.outlook.com
X-MS-Exchange-CrossTenant-AuthAs: Internal
X-MS-Exchange-CrossTenant-OriginalArrivalTime: 16 Apr 2026 08:38:28.6330
 (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: PbrDpLBRdIbbvZJeUVH1W+dMTWkVpIrFlBPIp2FtEOkz+fP0AtJHOvf8+TeGme2yW9vsTRVcqFpCZEAY6fQQ+g==
X-MS-Exchange-Transport-CrossTenantHeadersStamped: LV9PR03MB8414
X-purgate-ID: tlsNG-c1860d/1776328712-C0159DB1-5E2B8CBA/0/0
X-purgate-type: clean
X-purgate-size: 1055

On Tue, Apr 07, 2026 at 03:33:12PM +0200, Jan Beulich wrote:
> The per-channel ENABLE bit is to solely be driven by hpet_enable_channel()
> and hpet_msi_{,un}mask(). It doesn't need setting immediately. Except for
> the (possible) channel put in legacy mode we don't do so during boot
> either.
> 
> Instead reset ->arch.cpu_mask, to avoid msi_compose_msg() yielding an
> all-zero message (when the passed in CPU mask has no online CPUs). Nothing
> would later call msi_compose_msg() / hpet_msi_write(), and hence nothing
> would later produce a well-formed message template in
> hpet_events[].msi.msg.
> 
> Fixes: 15aa6c67486c ("amd iommu: use base platform MSI implementation")
> Reported-by: Marek Marczykowski-Górecki <marmarek@invisiblethingslab.com>
> Signed-off-by: Jan Beulich <jbeulich@suse.com>
> Tested-by: Marek Marczykowski-Górecki <marmarek@invisiblethingslab.com>

Acked-by: Roger Pau Monné <roger.pau@citrix.com>

I think you can adjust the now redundant irq_to_desc() to use dist as
Teddy noted?

Thanks, Roger.


From xen-devel-bounces@lists.xenproject.org Thu Apr 16 08:43:25 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 16 Apr 2026 08:43:25 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1283139.1565422 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wDIJk-0005C9-GL; Thu, 16 Apr 2026 08:43:20 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1283139.1565422; Thu, 16 Apr 2026 08:43: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 1wDIJk-0005C2-Dk; Thu, 16 Apr 2026 08:43:20 +0000
Received: by outflank-mailman (input) for mailman id 1283139;
 Thu, 16 Apr 2026 08:43:18 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <jbeulich@suse.com>) id 1wDIJi-0005Bw-Kf
 for xen-devel@lists.xenproject.org; Thu, 16 Apr 2026 08:43:18 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wDIJi-00CJFk-1N
 for xen-devel@lists.xenproject.org; Thu, 16 Apr 2026 10:43:18 +0200
Received: from [10.42.69.7] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <jbeulich@suse.com>)
 id 69e0a125-e002-0a2a0a5209dd-0a2a4507d454-2
 for <xen-devel@lists.xenproject.org>; Thu, 16 Apr 2026 10:43:17 +0200
Received: from [209.85.221.49] (helo=mail-wr1-f49.google.com)
 by tlsNG-ef75cf.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.1)
 (envelope-from <jbeulich@suse.com>)
 id 69e0a125-229c-0a2a45070019-d155dd31a4e7-3
 for <xen-devel@lists.xenproject.org>; Thu, 16 Apr 2026 10:43:17 +0200
Received: by mail-wr1-f49.google.com with SMTP id
 ffacd0b85a97d-43d734223e4so253404f8f.0
 for <xen-devel@lists.xenproject.org>; Thu, 16 Apr 2026 01:43:17 -0700 (PDT)
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-43ead3e89ddsm11375423f8f.30.2026.04.16.01.43.16
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Thu, 16 Apr 2026 01:43:16 -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=google header.d=suse.com header.i="@suse.com" header.h="Content-Transfer-Encoding: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=1776328997; x=1776933797; darn=lists.xenproject.org;
        h=content-transfer-encoding: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;
        bh=s7WaZ5S/80xTLepQ4DIerA/mVaoR6XuIgF4YaOUbRFI=;
        b=ISE0uzZ5eGXlgJoXiDqZE8uVLat8Z4ZMp69x5Y+XYOlWOjoG8IG6jw6Ypnj6Na5QsS
         h264h+E+QaoNHa3AadgCexcTN58BpkyzCoYhTCjzUl+jaCjenx2h7nsE7I4JjllL9c2Q
         JbST9ze9tbENhZ1JmhrosZNHrzLv2q+2AsVfsUwi+vLWn32XaEGCGj0XHJgaBfl8TjlC
         gBYhbI85cDf/7BKQLjSVFIN180vxHp24y36Eq1em+z4DBRy0LqD5zJsjLZg2zzrcryCN
         ele2VwOZHbQH59cDTGzuFCHb7Tuq2+bpeOEc8HJ+GR/SjLNyRHRLTn5uskDlASAt/oi7
         VwTg==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20251104; t=1776328997; x=1776933797;
        h=content-transfer-encoding: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;
        bh=s7WaZ5S/80xTLepQ4DIerA/mVaoR6XuIgF4YaOUbRFI=;
        b=q5bHMaL1tN3qngtmfWiPtwddvCzipD3j74CKrndynPa3LycWPo1SNi5Sgk46qlAlu4
         kMvkQwXkkee0p73Ur4epYw9c62q49uKFt9NeH9p4k0TvQG4VZ7rcZU4KvrUgWMHyI+vy
         +WDV8WbF8AjjftT6Kb0Ey/JZCGiAEb5shOxpbgAse5FkW4mfDMzgnWFOujTh5m5saAbj
         DCPTPr9wfdWUlkvoKzltm6xCSv1SYrW9CJap+hzWihU+tauwNBz5ZlTFBkEvE1/7YjVM
         5y+ECnFxdY+QMz4MUh0lHmfRVcu3hiM13EbGepSmIdSTl5OYBWnssJmP1net7lAJk+bg
         XXtQ==
X-Gm-Message-State: AOJu0YxvYCqlNe+msGsFuLETS4FC1fn+Fucx0czCmuZSWhOaos2A/jrM
	1C27YDpvXv2zc11IONtA/w9Fx1a7/BDu8dstkc12nbSYs9ZCoJ0iyTkC7vHzQICTMQ==
X-Gm-Gg: AeBDiet/pSJjtHrFpUkQWDi6a6zJvSJcXPOCs++3bTM9fqEsLvspXEq6sIJqQTazLNm
	Pzj3KqPKsR2fUsVbwJjIG0i7f7d/H4AKGJMSZ8+mq4OW8wk1+VFPmRwC9sdOXt7ZwRQfbsMlydF
	+cWMqlqG+BveW/zqAVxLD/aXHLUIVRW65im44eVC+DKETm800L0Lx+KfxEcAL8ihVTAIolBSC1J
	E2O0coXX2jBIFKXS8wpKud7kI3Sk5QFIxTT94Vfqk0c43Xd7+5ZHEuE/Eona464F6ScZfKONoHD
	rw7URbQcjEw4Vd7cEVDHrwWjgXePOgOiexBgBxlQfyBdI9bl2x1vPkTkSGTnD06u97FbiLUu41u
	zHQcEGRIi0lygkChlFAxFfGV1NcbXl2DkI93W0YTLiCy3x1fXl3sTBK/e8RhLIm69d0ofH/84PB
	h4/A4z3R7XWOjrdbrm59L3xyBdBx0NYLuW23Ld4OsWojD1H3Q73RoOXWpjNO7i/d+Fm5oY+rJj+
	hfb1E8+IOkDW6wRQRd5edO9BA==
X-Received: by 2002:a05:6000:1889:b0:43d:2d34:8963 with SMTP id ffacd0b85a97d-43fdbb4cd6emr1504369f8f.17.1776328996921;
        Thu, 16 Apr 2026 01:43:16 -0700 (PDT)
Message-ID: <89b32645-fd5d-4ebc-a3e3-224cdeab11c2@suse.com>
Date: Thu, 16 Apr 2026 10:43:20 +0200
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH] x86/HPET: channel handling in hpet_broadcast_resume()
To: =?UTF-8?Q?Roger_Pau_Monn=C3=A9?= <roger.pau@citrix.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>
References: <a77822d8-08f4-4c4f-b291-cc44a213cf9f@suse.com>
 <aeCgABa95gZPw___@macbook.local>
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: <aeCgABa95gZPw___@macbook.local>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
X-purgate-ID: tlsNG-ef75cf/1776328997-AD364C48-CACC9A40/0/0
X-purgate-type: clean
X-purgate-size: 1219

On 16.04.2026 10:38, Roger Pau Monné wrote:
> On Tue, Apr 07, 2026 at 03:33:12PM +0200, Jan Beulich wrote:
>> The per-channel ENABLE bit is to solely be driven by hpet_enable_channel()
>> and hpet_msi_{,un}mask(). It doesn't need setting immediately. Except for
>> the (possible) channel put in legacy mode we don't do so during boot
>> either.
>>
>> Instead reset ->arch.cpu_mask, to avoid msi_compose_msg() yielding an
>> all-zero message (when the passed in CPU mask has no online CPUs). Nothing
>> would later call msi_compose_msg() / hpet_msi_write(), and hence nothing
>> would later produce a well-formed message template in
>> hpet_events[].msi.msg.
>>
>> Fixes: 15aa6c67486c ("amd iommu: use base platform MSI implementation")
>> Reported-by: Marek Marczykowski-Górecki <marmarek@invisiblethingslab.com>
>> Signed-off-by: Jan Beulich <jbeulich@suse.com>
>> Tested-by: Marek Marczykowski-Górecki <marmarek@invisiblethingslab.com>
> 
> Acked-by: Roger Pau Monné <roger.pau@citrix.com>

Thanks.

> I think you can adjust the now redundant irq_to_desc() to use dist as
> Teddy noted?

Yes, I've already done so locally. I didn't think I would need to send a
v2 just for this.

Jan


From xen-devel-bounces@lists.xenproject.org Thu Apr 16 09:08:54 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 16 Apr 2026 09:08:54 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1283154.1565432 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wDIiF-0000Fh-DZ; Thu, 16 Apr 2026 09:08:39 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1283154.1565432; Thu, 16 Apr 2026 09: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 1wDIiF-0000FZ-AL; Thu, 16 Apr 2026 09:08:39 +0000
Received: by outflank-mailman (input) for mailman id 1283154;
 Thu, 16 Apr 2026 09:08:37 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <Luca.Fancellu@arm.com>) id 1wDIiD-0000FT-Jy
 for xen-devel@lists.xenproject.org; Thu, 16 Apr 2026 09:08:37 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wDIiA-00DMIq-Tr
 for xen-devel@lists.xenproject.org; Thu, 16 Apr 2026 11:08:36 +0200
Received: from [10.42.69.12] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <Luca.Fancellu@arm.com>)
 id 69e0a708-bab6-0a2a0a5309dd-0a2a450c94e6-44
 for <xen-devel@lists.xenproject.org>; Thu, 16 Apr 2026 11:08:36 +0200
Received: from [52.101.66.42]
 (helo=DUZPR83CU001.outbound.protection.outlook.com)
 by tlsNG-d25034.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.1)
 (envelope-from <Luca.Fancellu@arm.com>)
 id 69e0a713-62f1-0a2a450c0019-3465422acad4-3
 for <xen-devel@lists.xenproject.org>; Thu, 16 Apr 2026 11:08:36 +0200
Received: from DU7P250CA0011.EURP250.PROD.OUTLOOK.COM (2603:10a6:10:54f::26)
 by DBBPR08MB5914.eurprd08.prod.outlook.com (2603:10a6:10:200::8) with
 Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9769.48; Thu, 16 Apr
 2026 09:08:30 +0000
Received: from DB1PEPF0003922F.eurprd03.prod.outlook.com
 (2603:10a6:10:54f:cafe::19) by DU7P250CA0011.outlook.office365.com
 (2603:10a6:10:54f::26) with Microsoft SMTP Server (version=TLS1_3,
 cipher=TLS_AES_256_GCM_SHA384) id 15.20.9769.51 via Frontend Transport; Thu,
 16 Apr 2026 09:08:30 +0000
Received: from outbound-uk1.az.dlp.m.darktrace.com (4.158.2.129) by
 DB1PEPF0003922F.mail.protection.outlook.com (10.167.8.102) with Microsoft
 SMTP Server (version=TLS1_3, cipher=TLS_AES_256_GCM_SHA384) id 15.20.9745.21
 via Frontend Transport; Thu, 16 Apr 2026 09:08:30 +0000
Received: from DU2PR08MB7272.eurprd08.prod.outlook.com (2603:10a6:10:2d7::16)
 by AS4PR08MB7853.eurprd08.prod.outlook.com (2603:10a6:20b:51c::5)
 with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9769.48; Thu, 16 Apr
 2026 09:07:25 +0000
Received: from DU2PR08MB7272.eurprd08.prod.outlook.com
 ([fe80::5d34:206f:373:a323]) by DU2PR08MB7272.eurprd08.prod.outlook.com
 ([fe80::5d34:206f:373:a323%6]) with mapi id 15.20.9769.046; Thu, 16 Apr 2026
 09: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=arm.com header.i="@arm.com" header.h="From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck"; dkim=pass header.s=selector1 header.d=arm.com header.i="@arm.com" header.h="From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck"
ARC-Seal: i=2; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=pass;
 b=MikJ1ZYx8lklMNkZ7Lx/9q21mSty4tX7e1F78s1HpDbZhXKBEqSkNft8Ww8hDmt6xya3zqBR1P0jlHoNwC228v6mFTRIF5nXg+U4Cy3RRfoNJiJvC7iAw6iPkZVcfHSIZ+IcogihlNyciZ9N08jDW6tLOpCo+9Jf/ll/n64gys7cZZU5TEb1EJbddGHbdI1ISMkbsbjZ44+adGwX0BgHCosCEOYW26AAro9dVwYFM3N4aN6ocW9l3sbDqW/FivrpaVTN86NRWu7Opw0g8B2Awa8N04yr97+nT8mZ/BS31kKES+3JN4Jjvg17niTodJUslmoPbASyWEWMklLHS64ScQ==
ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com;
 s=arcselector10001;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1;
 bh=Bm5UJllHbmNZIIv/M7TUu8Wi/T/dV4sYogTv03TP/yk=;
 b=J/FBTAW9cDLE7cvZCW1429c2pq0my7yaE8pEzy51klk2FrnPO2nB6OKiRBhJPAELueYGJCZ8yY8upIxnJJxiW9R94CwMZZ2xA3NEvvz8mHGI1EGP35np1OQkdA0FpmICfJ/hJbg8mV6IvY8JrnSsZap7PpAFfkSpqvn6CWyd9gXHsTcK+tQ5JRkoutktBLnHySYm7h5mRjMeQTtftCZV5uZOq56aaD7VU9NNELeMODs5LnEoOaAm3yKoBzBojqo1RdiwVP3U/6fNoMNh5JjpKGG0Dt89V/+IVFv+IXwfagCCymdwK8AkPa6snbiySHAU6EIQpTZObWjpVxxW19yKxw==
ARC-Authentication-Results: i=2; mx.microsoft.com 1; spf=pass (sender ip is
 4.158.2.129) smtp.rcpttodomain=amd.com smtp.mailfrom=arm.com; dmarc=pass
 (p=none sp=none pct=100) action=none header.from=arm.com; dkim=pass
 (signature was verified) header.d=arm.com; arc=pass (0 oda=1 ltdi=1
 spf=[1,1,smtp.mailfrom=arm.com] dkim=[1,1,header.d=arm.com]
 dmarc=[1,1,header.from=arm.com])
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=arm.com; s=selector1;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck;
 bh=Bm5UJllHbmNZIIv/M7TUu8Wi/T/dV4sYogTv03TP/yk=;
 b=qx3hy+5BO7MEw8FY4Hr9loG5uoqHWiX61KlkkwopSkbl0dIF6OqelHYyF8aui7A3vr4D7nxJb+XHqkJJKI0rHlkx/wUal4F9MqqE6WgEBUmHdhGfSXfLRV1GE9uQm73V10kGE/2WHCBX2CbczSr7QnXImv0fGX/Tjv66vW5kMGc=
X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 4.158.2.129)
 smtp.mailfrom=arm.com; dkim=pass (signature was verified)
 header.d=arm.com;dmarc=pass action=none header.from=arm.com;
Received-SPF: Pass (protection.outlook.com: domain of arm.com designates
 4.158.2.129 as permitted sender) receiver=protection.outlook.com;
 client-ip=4.158.2.129; helo=outbound-uk1.az.dlp.m.darktrace.com; pr=C
ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none;
 b=tqd5Cni1oDVLkxpy93okFBQvBkEydRnSMmMXuD6zP7vUMTFJlOwOZQRDntjkiMtfMWl4IzY6mcLq0Ny2Lg6OOs2kZZ18PSywn0VxqDMyq+Indg6neShURYfQABKUnXriMW3WfS30ft6q5I8wp46HHbeLr0deEIDN0lSonuDelFLWLAF+CZw3SSsfYTeKTMhcAzZ5yIrMjhcMUM641XmyWGhkyjA291x2tG1f1P2/p61qP8POV/FStGiGFmUNQJkkYUSGsViZ4BMCjgcSzIo5VDlK/NNvm99fq93vJNTsIRBD68HWQlvLwYw6r3dqCF+GU57rgl3wJ4HznLrIyJZWhg==
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com;
 s=arcselector10001;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1;
 bh=Bm5UJllHbmNZIIv/M7TUu8Wi/T/dV4sYogTv03TP/yk=;
 b=pxclCoH92GJ1d9vlPnQhlHoNSzwpAVmXJRBI1vDb3+ZFqeM4IcZ0eUvjZuLBP2OmRH5xaiQiEpn4Mw3NFR5z8ONqL7ji5bVNxzH6OE3foZBRS64xZdMdCez2tWjuHtDqAtttG8LdMZwCBSwkhziw/u1bIwAV9l72/srBbS+iV+SqAhbx1lr3NqNinNxKNuf+YUoqnBCi9u7wlORD2PjRMDEhg1KfXcFFxKFXWgwBgJchEMOmvjxkkZZEPh4km0HRaz5VUKgiP4mXvnJYwlXNmxwLWaYZvex5yp0Y8GxuqTCkBfuRlV9IwOLM9Q1ex1CijQZ4+ApnNg1CT9My+8Ydmg==
ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass
 smtp.mailfrom=arm.com; dmarc=pass action=none header.from=arm.com; dkim=pass
 header.d=arm.com; arc=none
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=arm.com; s=selector1;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck;
 bh=Bm5UJllHbmNZIIv/M7TUu8Wi/T/dV4sYogTv03TP/yk=;
 b=qx3hy+5BO7MEw8FY4Hr9loG5uoqHWiX61KlkkwopSkbl0dIF6OqelHYyF8aui7A3vr4D7nxJb+XHqkJJKI0rHlkx/wUal4F9MqqE6WgEBUmHdhGfSXfLRV1GE9uQm73V10kGE/2WHCBX2CbczSr7QnXImv0fGX/Tjv66vW5kMGc=
From: Luca Fancellu <Luca.Fancellu@arm.com>
To: "Orzel, Michal" <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 5/6] xen/dt-overlay: support phandle-based targeting in
 overlay_get_nodes_info
Thread-Topic: [PATCH 5/6] xen/dt-overlay: support phandle-based targeting in
 overlay_get_nodes_info
Thread-Index: AQHczMxJn1pwTu5+sUmN2MgYtFAQK7XgQWaAgAELlQCAAA1zAIAABFcAgAAIYIA=
Date: Thu, 16 Apr 2026 09:07:25 +0000
Message-ID: <2CD46F3B-C978-47F3-ACBC-BF2F39985B42@arm.com>
References: <20260415113700.107915-1-michal.orzel@amd.com>
 <20260415113700.107915-6-michal.orzel@amd.com>
 <519E2133-12B9-4E51-A7A5-FDBADF82159E@arm.com>
 <1ab0c888-e890-490e-adad-938222f31a62@amd.com>
 <6E811F82-6F9F-4894-B2A3-03AA166E78F4@arm.com>
 <de3ed940-c788-480b-8820-66afb3c8dc82@amd.com>
In-Reply-To: <de3ed940-c788-480b-8820-66afb3c8dc82@amd.com>
Accept-Language: en-GB, en-US
Content-Language: en-US
X-MS-Has-Attach:
X-MS-TNEF-Correlator:
x-mailer: Apple Mail (2.3826.700.81.1.6)
Authentication-Results-Original: dkim=none (message not signed)
 header.d=none;dmarc=none action=none header.from=arm.com;
x-ms-traffictypediagnostic:
	DU2PR08MB7272:EE_|AS4PR08MB7853:EE_|DB1PEPF0003922F:EE_|DBBPR08MB5914:EE_
X-MS-Office365-Filtering-Correlation-Id: e350155d-54b4-4ce1-1fb7-08de9b97ba9d
x-checkrecipientrouted: true
nodisclaimer: true
X-MS-Exchange-SenderADCheck: 1
X-MS-Exchange-AntiSpam-Relay: 0
X-Microsoft-Antispam-Untrusted:
 BCL:0;ARA:13230040|376014|366016|1800799024|38070700021|18002099003|56012099003|22082099003;
X-Microsoft-Antispam-Message-Info-Original:
 uu+rB2if8u5nPyfyPuspagONrf9YbgzyigmT+9Igehv9lgT6kGEQG3Qyn5OnDePVbt9+VIlnH7znryZTXn70e4q5tXBxEylKROqfZmezJp7OfavT9A2ASxIY1TsV0NrzfHKPdAR7hKSqrrQqoRvLQyyLBTsBKxr3hvhyNOQmoKw123om/G0dn36oqSQ7uGvQjkGxVLcvbwmLuCOT+r/+j8BoBPLfWE8x81wg70t6Za+YzQdPg05KxGYIL6MY7DkSFc002oS+2MSFw9Ay0E9525CRv6PgUkSM/UNmf0Nt8DtLy4ImTX+ArRd0nEs2dyexFfkmAc30QdVXXKdSt8doOzkhZL7k8TPdPSr8HDBZhqaFJJbaAQtt8AcaVCF3KkRlrwEQbntqX2riJBDhmNiu4L2imZXWn9racboJNcHipXv4jcNl/ekGBDgyCdxMVIYEdu+poVElfG80LilgK7NRC0WqljSRpxyhnXkBFLNzjGy4xI8V0foleSTdWBRA+nUyN2vSh5wOKUQQRvtdoA/r1X3cMEmUF0Z68eEFf2AiZMBpzbZNOPLPXAshksNPlWdACQZieT6IMjNqg+bfEDl28QZhMBj6SCAuTLLUSzxCnEQW/3eK4J2w4QO/SrUJzGufc5PVS9wc188BuqkQ5iGj8aDHFP2pVK4jZ3VYFV0qi3zcurVIxJf91B++oWwNhJkrFo+BEclyzDa/xg8EPaiP4v4snsWS73I9VEf8EO66rOdbCWR9SQL8iyEQVORotH9ngu1gG96PQ9CalF3EcTtdBjjUfzpJ5Djy2CUC39mNQTA=
X-Forefront-Antispam-Report-Untrusted:
 CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:DU2PR08MB7272.eurprd08.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(376014)(366016)(1800799024)(38070700021)(18002099003)(56012099003)(22082099003);DIR:OUT;SFP:1101;
Content-Type: text/plain; charset="utf-8"
Content-ID: <D733387CBCCB5A4EAC3806AF66711F14@eurprd08.prod.outlook.com>
Content-Transfer-Encoding: base64
MIME-Version: 1.0
X-Exchange-RoutingPolicyChecked:
 LzOwr4bgHor6XuLVRJikMkyCzf1HIt+28ei9lF8dF1gtdRzJO+S4fNt/Ti45tr1QF/KzEWitr6DmYEydTneAHy53wxlqRVN4jrEeKF+8agv66nw9iCihmGVijpqNwKSImX1ol0dmoWKOZHV7o3sQ479Q9/1burvdDfKkRViey9UiBw2T1rtxJYAPZUArFSfzsM1EEgE7uwvbT5lrF2dM+TOzo2i7pa8733rMKwn+w51Hstvbu8iTaIm8FwRuChp7VSrT3foB4mlevTUywLIV8NeiOoSWedg249LRG2XudF/Vhw7APvYGEWHfJ3uKz/8/4asaILP4UETvEex/smr3gg==
X-MS-Exchange-Transport-CrossTenantHeadersStamped: AS4PR08MB7853
X-EOPAttributedMessage: 0
X-MS-Exchange-Transport-CrossTenantHeadersStripped:
 DB1PEPF0003922F.eurprd03.prod.outlook.com
X-MS-PublicTrafficType: Email
X-MS-Office365-Filtering-Correlation-Id-Prvs:
	a35adb12-7d19-4bf1-1f29-08de9b9793b2
X-Microsoft-Antispam:
	BCL:0;ARA:13230040|1800799024|82310400026|376014|14060799003|35042699022|36860700016|18002099003|22082099003|56012099003;
X-Microsoft-Antispam-Message-Info:
	UC1FMZAmj18NaY9xFpxjwehq0E0nVUbR0Y7iV1tVLxmGV8stifcYwlrIYcksdHmWQnzJRahtB4/M6NdWLjyeqmB7LZvJjP6u3d5EH1RFuJ+Xgww6TM5Ltoy66Qc2lh7wFCvixeZU7KLteu064n3OK1jsHM++mSi3Nc+5maA3GmTgGNx2yu1e01JUTb+lNG0IV6G+L/cmEnSerPokwVXekItR+xPys3l607R7+CfyWt1wkTEkUodV3jQkFj7mCuJ3wPKmK83tadYPWNLCnN9epbS6hy1uTVs5LYdREvzNFK8hzuWiA3CpWDA5QgJTTM/gmR2zJkQUQBMVr0B70C2S3oHSExzkOQZIqh5akQg2hJ+kqjRVbyRgAQ4s9hriJD9vmaI8SYvSmCVhGWrn60MnRjdl01aa+GjPlAvFL/K/awC+z3/Z+LnofXFCi6eOlVQjHUCLPVcde1NtxLAOzVwWx89MjPAjCDQy+K6/0x/GsH53yG0pb85lXrWKvfOZZ2yho63x0ixlUdlhf0Z6texj8nZlTsROLvXmjYBg2Zzy9TsMgZeAGVhHTsY+xY4jFp5RKI2yKrYvvs7kc3ObvvvtmkRvIpwaynpO7s2N7gwNpiMc1t+DVqdxXsGi8gKKxTU7Me0jGiWbJhYYhOdWVPTDoriHbDggnJPgeWZDy6cGe+mK5MUL4TzKSM8PSGyw45oek0kkY5KoVDiYGqevV+HgS8d9Cgp4DehwX33ka7t4fEuduj7U4uaind1/v0QddgrX7Hvz29JWDIS5D6OnxKAzVA==
X-Forefront-Antispam-Report:
	CIP:4.158.2.129;CTRY:GB;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:outbound-uk1.az.dlp.m.darktrace.com;PTR:InfoDomainNonexistent;CAT:NONE;SFS:(13230040)(1800799024)(82310400026)(376014)(14060799003)(35042699022)(36860700016)(18002099003)(22082099003)(56012099003);DIR:OUT;SFP:1101;
X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1
X-MS-Exchange-AntiSpam-MessageData-0:
	Y+AXG2vxwfmoF1dyM25+nqcM+AdV2SNCOIovJEUyp40GHSF+Kyz7f8dtB99mCa2r2fonXB5aj6eW1lKUgsCYXM0ihV2F4N6Dcx/CqDcOQXGfCJZAGcD1maxsgvYDp97AOWwcBVG8Zoy57GOz0wCwjb3NEoLCmnOXjVBXWXQH8WrSekIWBzFEl64hk14vsGk66vdqsmlsgNCa2Ujgq8AEId6nIMxOn7Ya7PX8Rwx1Ro6WnnZaOHG3vyOKN0oZCOiSq4uzFYMM6AOMPhEkDNkEv2JSUPm/UGE1WqzmOv4xzCfYglhtLu/FqJMKa5arfDZGCEYjvix1GVajlsd6r5odV334I+E4remi498g3otMdC6ZU6uhtOmS+Esu4t8eGPCrGBRZkaUI/6ophS923VFsSeaLMaMk/qA4wpeliEDB+yK3h1kysuQMazr+7zZvLWfY
X-OriginatorOrg: arm.com
X-MS-Exchange-CrossTenant-OriginalArrivalTime: 16 Apr 2026 09:08:30.5218
 (UTC)
X-MS-Exchange-CrossTenant-Network-Message-Id: e350155d-54b4-4ce1-1fb7-08de9b97ba9d
X-MS-Exchange-CrossTenant-Id: f34e5979-57d9-4aaa-ad4d-b122a662184d
X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=f34e5979-57d9-4aaa-ad4d-b122a662184d;Ip=[4.158.2.129];Helo=[outbound-uk1.az.dlp.m.darktrace.com]
X-MS-Exchange-CrossTenant-AuthSource:
	DB1PEPF0003922F.eurprd03.prod.outlook.com
X-MS-Exchange-CrossTenant-AuthAs: Anonymous
X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem
X-MS-Exchange-Transport-CrossTenantHeadersStamped: DBBPR08MB5914
X-purgate-ID: tlsNG-d25034/1776330516-6CD63CF5-DB8B3062/0/0
X-purgate-type: clean
X-purgate-size: 4854

DQoNCj4gT24gMTYgQXByIDIwMjYsIGF0IDA5OjM2LCBPcnplbCwgTWljaGFsIDxNaWNoYWwuT3J6
ZWxAYW1kLmNvbT4gd3JvdGU6DQo+IA0KPiANCj4gDQo+IE9uIDE2LzA0LzIwMjYgMTA6MjEsIEx1
Y2EgRmFuY2VsbHUgd3JvdGU6DQo+Pj4+PiANCj4+Pj4+IGRpZmYgLS1naXQgYS94ZW4vY29tbW9u
L2RldmljZS10cmVlL2R0LW92ZXJsYXkuYyBiL3hlbi9jb21tb24vZGV2aWNlLXRyZWUvZHQtb3Zl
cmxheS5jDQo+Pj4+PiBpbmRleCBkM2Q0NjY5NzE4YWMuLmEwZGVlN2VkYjdlNSAxMDA2NDQNCj4+
Pj4+IC0tLSBhL3hlbi9jb21tb24vZGV2aWNlLXRyZWUvZHQtb3ZlcmxheS5jDQo+Pj4+PiArKysg
Yi94ZW4vY29tbW9uL2RldmljZS10cmVlL2R0LW92ZXJsYXkuYw0KPj4+Pj4gQEAgLTI4Niw2ICsy
ODYsNjMgQEAgc3RhdGljIHVuc2lnbmVkIGludCBvdmVybGF5X25vZGVfY291bnQoY29uc3Qgdm9p
ZCAqb3ZlcmxheV9mZHQpDQo+Pj4+PiAgIHJldHVybiBudW1fb3ZlcmxheV9ub2RlczsNCj4+Pj4+
IH0NCj4+Pj4+IA0KPj4+Pj4gKy8qDQo+Pj4+PiArICogUmVzb2x2ZSB0aGUgdGFyZ2V0IHBhdGgg
Zm9yIGFuIG92ZXJsYXkgZnJhZ21lbnQuDQo+Pj4+PiArICoNCj4+Pj4+ICsgKiBUaGlzIGlzIGNh
bGxlZCBiZWZvcmUgZmR0X292ZXJsYXlfYXBwbHkoKSwgc28gcGhhbmRsZS1iYXNlZCB0YXJnZXRz
DQo+Pj4+PiArICogKHRhcmdldCA9IDwmbGFiZWw+KSBhcmUgc3RpbGwgdW5yZXNvbHZlZCAoY29t
cGlsZWQgYXMgMHhmZmZmZmZmZiBieSBEVEMpLg0KPj4+Pj4gKyAqIEhhbmRsZSB0aGUgdHdvIGNh
c2VzIHRoYXQgYWN0dWFsbHkgb2NjdXI6DQo+Pj4+PiArICogIC0gdGFyZ2V0LXBhdGggcHJvcGVy
dHk6IHRoZSBwYXRoIHN0cmluZyBpcyB1c2VkIGRpcmVjdGx5LA0KPj4+Pj4gKyAqICAtIHRhcmdl
dCA9IDwmbGFiZWw+OiB0aGUgbGFiZWwgaXMgbG9va2VkIHVwIGluIHRoZSBvdmVybGF5J3MgX19m
aXh1cHNfXw0KPj4+Pj4gKyAqICAgIG5vZGUsIHRoZW4gcmVzb2x2ZWQgdG8gYSBwYXRoIHZpYSB0
aGUgYmFzZSBEVEIncyBfX3N5bWJvbHNfXyBub2RlLg0KPj4+Pj4gKyAqDQo+Pj4+PiArICogUmV0
dXJucyBhIHBvaW50ZXIgaW50byB0aGUgRkRUIG9uIHN1Y2Nlc3MsIE5VTEwgb24gZmFpbHVyZS4N
Cj4+Pj4+ICsgKi8NCj4+Pj4+ICtzdGF0aWMgY29uc3QgY2hhciAqb3ZlcmxheV9nZXRfdGFyZ2V0
X3BhdGgoY29uc3Qgdm9pZCAqZmR0LCBjb25zdCB2b2lkICpmZHRvLA0KPj4+Pj4gKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgZnJhZ21lbnQpDQo+Pj4+PiAr
ew0KPj4+Pj4gKyAgICBjb25zdCBjaGFyICpwYXRoLCAqZnJhZ21lbnRfbmFtZTsNCj4+Pj4+ICsg
ICAgaW50IGZpeHVwc19vZmYsIHN5bWJvbHNfb2ZmLCBwcm9wZXJ0eTsNCj4+Pj4+ICsgICAgaW50
IGZyYWdtZW50X25hbWVfbGVuOw0KPj4+Pj4gKw0KPj4+Pj4gKyAgICAvKiBUcnkgdGFyZ2V0LXBh
dGggZmlyc3QgKHN0cmluZy1iYXNlZCB0YXJnZXRpbmcpICovDQo+Pj4+PiArICAgIHBhdGggPSBm
ZHRfZ2V0cHJvcChmZHRvLCBmcmFnbWVudCwgInRhcmdldC1wYXRoIiwgTlVMTCk7DQo+Pj4+PiAr
ICAgIGlmICggcGF0aCApDQo+Pj4+PiArICAgICAgICByZXR1cm4gcGF0aDsNCj4+Pj4+ICsNCj4+
Pj4+ICsgICAgLyogUGhhbmRsZS1iYXNlZCB0YXJnZXQ6IHJlc29sdmUgdmlhIF9fZml4dXBzX18g
YW5kIF9fc3ltYm9sc19fICovDQo+Pj4+PiArICAgIGZpeHVwc19vZmYgPSBmZHRfcGF0aF9vZmZz
ZXQoZmR0bywgIi9fX2ZpeHVwc19fIik7DQo+Pj4+PiArICAgIGlmICggZml4dXBzX29mZiA8IDAg
KQ0KPj4+Pj4gKyAgICAgICAgcmV0dXJuIE5VTEw7DQo+Pj4+PiArDQo+Pj4+PiArICAgIHN5bWJv
bHNfb2ZmID0gZmR0X3BhdGhfb2Zmc2V0KGZkdCwgIi9fX3N5bWJvbHNfXyIpOw0KPj4+Pj4gKyAg
ICBpZiAoIHN5bWJvbHNfb2ZmIDwgMCApDQo+Pj4+PiArICAgICAgICByZXR1cm4gTlVMTDsNCj4+
Pj4+ICsNCj4+Pj4+ICsgICAgZnJhZ21lbnRfbmFtZSA9IGZkdF9nZXRfbmFtZShmZHRvLCBmcmFn
bWVudCwgJmZyYWdtZW50X25hbWVfbGVuKTsNCj4+Pj4+ICsgICAgaWYgKCAhZnJhZ21lbnRfbmFt
ZSApDQo+Pj4+PiArICAgICAgICByZXR1cm4gTlVMTDsNCj4+Pj4+ICsNCj4+Pj4+ICsgICAgZmR0
X2Zvcl9lYWNoX3Byb3BlcnR5X29mZnNldChwcm9wZXJ0eSwgZmR0bywgZml4dXBzX29mZikNCj4+
Pj4+ICsgICAgew0KPj4+Pj4gKyAgICAgICAgY29uc3QgY2hhciAqdmFsLCAqbGFiZWwsICpwOw0K
Pj4+Pj4gKyAgICAgICAgaW50IHZhbF9sZW47DQo+Pj4+PiArDQo+Pj4+PiArICAgICAgICB2YWwg
PSBmZHRfZ2V0cHJvcF9ieV9vZmZzZXQoZmR0bywgcHJvcGVydHksICZsYWJlbCwgJnZhbF9sZW4p
Ow0KPj4+Pj4gKyAgICAgICAgaWYgKCAhdmFsICkNCj4+Pj4+ICsgICAgICAgICAgICBjb250aW51
ZTsNCj4+Pj4+ICsNCj4+Pj4+ICsgICAgICAgIC8qIE1hdGNoIGVudHJpZXMgb2YgdGhlIGZvcm0g
Ii88ZnJhZ21lbnRfbmFtZT46dGFyZ2V0OjAiICovDQo+Pj4+PiArICAgICAgICBmb3IgKCBwID0g
dmFsOyBwIDwgKHZhbCArIHZhbF9sZW4pOyBwICs9IChzdHJsZW4ocCkgKyAxKSApDQo+Pj4+IA0K
Pj4+PiB3aGF0IGd1YXJhbnRlZXMgdXMgdGhhdCBwIHdpbGwgYmUgbnVsbCB0ZXJtaW5hdGVkLCBp
ZiBhIG1hbGZvcm1lZCBvdmVybGF5DQo+Pj4+IGlzIHBhc3NlZCB0aGlzIHN0cmxlbiBjYW4gcmVh
ZCBwYXN0IHRoZSBzdHJpbmcsIHdlIGNhbiB1c2Ugc3RybmxlbiBoYXZpbmcgYXMNCj4+Pj4gdXBw
ZXIgYm91bmQgYSBjb3VudGVyPXZhbF9sZW4/IGRlY3JlYXNpbmcgY291bnRlciBlYWNoIGl0ZXJh
dGlvbi4NCj4+Pj4gDQo+Pj4+IE9yIGRvIHlvdSB0aGluayBpdCBjYW4gbmV2ZXIgaGFwcGVuPw0K
Pj4+IEluIHRoZW9yeSBpdCBjYW4gaGFwcGVuLCBpbiBwcmFjdGljZSB0aGlzIGlzIHNvbWV0aGlu
ZyBub3QgdXN1YWxseSB0YWtlbiBpbnRvDQo+Pj4gYWNjb3VudC4gQnV0IHdlIGNhbiBzdXJlbHkg
c3RheSBvbiB0aGUgZGVmZW5zaXZlIHNpZGUgYW5kIGRvIGEgc2luZ2xlIGNoZWNrDQo+Pj4gcmln
aHQgYWZ0ZXIgZmR0X2dldHByb3BfYnlfb2Zmc2V0IHRvIGNhdGNoIG5vdC1OVUwgdGVybWluYXRl
ZCBzdHJpbmdsaXN0Og0KPj4+IGlmICggIXZhbCB8fCAhdmFsX2xlbiB8fCB2YWxbdmFsX2xlbiAt
IDFdICE9ICdcMCcgKQ0KPj4gDQo+PiBPaywgZG8gd2UgYWxzbyB3YW50IHRvIHByaW50IGEgd2Fy
bmluZyBpbiBjYXNlIG9mIG1hbGZvcm1lZCBwcm9wZXJ0aWVzIGluc3RlYWQNCj4+IG9mIGlnbm9y
aW5nIGFuZCBjb250aW51ZT8NCj4gVGhhdCdzIHJlYWxseSBhIG1hdHRlciBvZiB0YXN0ZS4gSSB3
b3VsZCBub3QgZG8gaXQgdW5sZXNzIHlvdSByZWFsbHkgd2FudCB0by4NCg0KSeKAmWxsIGxlYXZl
IHRoaXMgdG8gdGhlIG90aGVyIG1haW50YWluZXIsIHdpdGggdGhlIGZpeCBhYm92ZToNCg0KUmV2
aWV3ZWQtYnk6IEx1Y2EgRmFuY2VsbHUgPGx1Y2EuZmFuY2VsbHVAYXJtLmNvbT4NCg0KQ2hlZXJz
LA0KTHVjYQ0KDQo=


From xen-devel-bounces@lists.xenproject.org Thu Apr 16 09:15:38 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 16 Apr 2026 09:15:38 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1283162.1565441 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wDIow-0001my-3h; Thu, 16 Apr 2026 09:15:34 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1283162.1565441; Thu, 16 Apr 2026 09:15: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 1wDIow-0001mr-0h; Thu, 16 Apr 2026 09:15:34 +0000
Received: by outflank-mailman (input) for mailman id 1283162;
 Thu, 16 Apr 2026 09:15:32 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <bounce-md_30504962.69e0a8b1.v1-82e43376dfb5406f84713a8671625188@bounce.vates.tech>)
 id 1wDIou-0001mk-7p
 for xen-devel@lists.xenproject.org; Thu, 16 Apr 2026 09:15:32 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wDIot-00Ffgz-HH
 for xen-devel@lists.xenproject.org; Thu, 16 Apr 2026 11:15:31 +0200
Received: from [10.42.69.10] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1) (envelope-from
 <bounce-md_30504962.69e0a8b1.v1-82e43376dfb5406f84713a8671625188@bounce.vates.tech>)
 id 69e0a8ac-5cb7-0a2a0a5109dd-0a2a450a8c64-22
 for <xen-devel@lists.xenproject.org>; Thu, 16 Apr 2026 11:15:31 +0200
Received: from [198.2.186.1] (helo=mail186-1.suw21.mandrillapp.com)
 by tlsNG-4011c0.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.1)
 (envelope-from
 <bounce-md_30504962.69e0a8b1.v1-82e43376dfb5406f84713a8671625188@bounce.vates.tech>)
 id 69e0a8b2-56b3-0a2a450a0019-c602ba01bf5f-3
 for <xen-devel@lists.xenproject.org>; Thu, 16 Apr 2026 11:15:31 +0200
Received: from pmta10.mandrill.prod.suw01.rsglab.com (localhost [127.0.0.1])
 by mail186-1.suw21.mandrillapp.com (Mailchimp) with ESMTP id 4fxC695vYpzBsVSkP
 for <xen-devel@lists.xenproject.org>; Thu, 16 Apr 2026 09:15:29 +0000 (GMT)
Received: from [37.26.189.201] by mandrillapp.com id
 82e43376dfb5406f84713a8671625188; Thu, 16 Apr 2026 09:15: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=mte1 header.d=mandrillapp.com header.i="@mandrillapp.com" header.h="From:Subject:Message-Id:To:Cc:References:In-Reply-To:Feedback-ID:Date:MIME-Version:Content-Type:Content-Transfer-Encoding"; dkim=pass header.s=mte1 header.d=vates.tech header.i="teddy.astie@vates.tech" header.h="From:Subject:Message-Id:To:Cc:References:In-Reply-To:Feedback-ID:Date:MIME-Version:Content-Type:Content-Transfer-Encoding"
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=mandrillapp.com;
	s=mte1; t=1776330929; x=1776600929;
	bh=ohAvvrLm3IUQdyZ7hOrFWGHujWkJJ6+dNNs/tzY22uo=;
	h=From:Subject:Message-Id:To:Cc:References:In-Reply-To:Feedback-ID:
	 Date:MIME-Version:Content-Type:Content-Transfer-Encoding:CC:Date:
	 Subject:From;
	b=SK2HpgGV3cM26uEHZ0CDPchzqH11+gukeoftOSf7yA7rneKiknJALaAlsDLDzj+u6
	 EsJg+YfkaZPJx1ydsEL4i5EKecSGBhZFRX8e/P4SMoiuctAdo7t7FBG1Zu7hAbyUef
	 6wjbHOB9DpSX/2lDx6+ctrmhoF0zLgkCDgKUkVodHpWndUM6zK/KOb6LxP7HUMJnp2
	 xXXgnNdXho/bkrbfYdmhwc33DqnH6Dgt+1Bb9tmVqIsXQZz5JGP5PrRBKat0mpV+hV
	 iszTOTX0MPx0xDFMcA/t+pqX0LMtf7GcziX8ac3WC6Slu8DMr5hG8eB1BiEQNVtqx7
	 RKKIn4D1LWQ+Q==
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=vates.tech; s=mte1;
	t=1776330929; x=1776591429; i=teddy.astie@vates.tech;
	bh=ohAvvrLm3IUQdyZ7hOrFWGHujWkJJ6+dNNs/tzY22uo=;
	h=From:Subject:Message-Id:To:Cc:References:In-Reply-To:Feedback-ID:
	 Date:MIME-Version:Content-Type:Content-Transfer-Encoding:CC:Date:
	 Subject:From;
	b=y6CN+Lr0oFqVaPOBFQnGm6DPeoettk7DJttH910jPZlsqylT+haSa534CXmj8LAyH
	 8RWqjaztWlzD0fj2inTc28WUCWb450FQx0Yn4MB9A/2EfjFrqceGqIqy6PkZ2VPGFp
	 7t0WCsDDGbUj4ms1HiYVWkO9LbU4BwxWnewUVcbne7+XoQow6Ekw6nKKIVk4dOdmRI
	 zS7+jYXrvOEUMOoIql+RuMbaVOibtxA2ka44kJM6kFghIzorcOl8uB9nKDsJwfGkBA
	 +xsvuFitNNibeHpc41haRZwE9h9C3buzKxvwI/JXHwZBwDxV2XBKbff3FoWyNT7vUC
	 RsusymWYW85pQ==
From: "Teddy Astie" <teddy.astie@vates.tech>
Subject: =?utf-8?Q?Re:=20[PATCH=201/2]=20vtd:=20Drop=20dead=20check=20for=20permissions=20in=20lookup=5Fpage?=
X-Bm-Disclaimer: Yes
X-Bm-Milter-Handled: 4ffbd6c1-ee69-4e1b-aabd-f977039bd3e2
X-Bm-Transport-Timestamp: 1776330928805
Message-Id: <70023321-c799-456f-920f-af7a7344de34@vates.tech>
To: "Jan Beulich" <jbeulich@suse.com>
Cc: "Andrew Cooper" <andrew.cooper3@citrix.com>, "=?utf-8?Q?Roger=20Pau=20Monn=C3=A9?=" <roger.pau@citrix.com>, xen-devel@lists.xenproject.org
References: <815edfd0db90859a4ce270d833d9d721ff66e31c.1775814143.git.teddy.astie@vates.tech> <4f9e6615-b9ab-4c2e-9345-100e73eebbb3@suse.com>
In-Reply-To: <4f9e6615-b9ab-4c2e-9345-100e73eebbb3@suse.com>
X-Native-Encoded: 1
X-Report-Abuse: =?UTF-8?Q?Please=20forward=20a=20copy=20of=20this=20message,=20including=20all=20headers,=20to=20abuse@mandrill.com.=20You=20can=20also=20report=20abuse=20here:=20https://mandrillapp.com/contact/abuse=3Fid=3D30504962.82e43376dfb5406f84713a8671625188?=
X-Mandrill-User: md_30504962
Feedback-ID: 30504962:30504962.20260416:md
Date: Thu, 16 Apr 2026 09:15:29 +0000
MIME-Version: 1.0
Content-Type: text/plain; charset=utf-8
Content-Transfer-Encoding: quoted-printable
X-purgate-ID: tlsNG-4011c0/1776330931-469768B7-8E67D747/0/0
X-purgate-type: clean
X-purgate-size: 1144

Le 16/04/2026 =C3=A0 10:23, Jan Beulich a =C3=A9crit=C2=A0:
> On 10.04.2026 12:09, Teddy Astie wrote:
>> `val` comes from `addr_to_dma_page_maddr()` which is a pagetable
>> paddr and doesn't leak the PTE flags in it.
> 
> Did you read the comment ahead of the function, in particular the part ab=
out
> the caller passing 0 for "target"?
> 

Ah ok, the "full PTE contents below PADDR_BITS limit" also includes the 
R/W flags, but only in that case.

While I'm on it, there is a corner case here where "full PTE content" is 
also at the same time a error condition of this function (if PTE mfn =3D=3D=
 
0, we have val < PAGE_SIZE; yet the mapping exists), but that's not the 
problem this patch is fixing.

>> Rather than returning entries without any permissions, assume they
>> are always r/w.
> 
> This wouldn't be any better.
> 

Not having any permission could confuse the caller that there are no 
mappings. But it depends mostly on the callers which don't exist yet.

> Jan
> 

Teddy


--
Teddy Astie | Vates XCP-ng Developer

XCP-ng & Xen Orchestra - Vates solutions

web: https://vates.tech




From xen-devel-bounces@lists.xenproject.org Thu Apr 16 09:57:22 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 16 Apr 2026 09:57:22 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1283177.1565450 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wDJTH-0007Qf-60; Thu, 16 Apr 2026 09:57:15 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1283177.1565450; Thu, 16 Apr 2026 09:57: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 1wDJTH-0007QY-2z; Thu, 16 Apr 2026 09:57:15 +0000
Received: by outflank-mailman (input) for mailman id 1283177;
 Thu, 16 Apr 2026 09:57:14 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <jbeulich@suse.com>) id 1wDJTG-0007QS-0g
 for xen-devel@lists.xenproject.org; Thu, 16 Apr 2026 09:57:14 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wDJTE-005Qct-Lj
 for xen-devel@lists.xenproject.org; Thu, 16 Apr 2026 11:57:12 +0200
Received: from [10.42.69.7] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <jbeulich@suse.com>)
 id 69e0b278-e002-0a2a0a5209dd-0a2a450797b0-2
 for <xen-devel@lists.xenproject.org>; Thu, 16 Apr 2026 11:57:12 +0200
Received: from [209.85.221.49] (helo=mail-wr1-f49.google.com)
 by tlsNG-ef75cf.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.1)
 (envelope-from <jbeulich@suse.com>)
 id 69e0b278-229c-0a2a45070019-d155dd31d8c0-3
 for <xen-devel@lists.xenproject.org>; Thu, 16 Apr 2026 11:57:12 +0200
Received: by mail-wr1-f49.google.com with SMTP id
 ffacd0b85a97d-43cfce3a195so4773139f8f.2
 for <xen-devel@lists.xenproject.org>; Thu, 16 Apr 2026 02:57:12 -0700 (PDT)
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-43ead3d5fd6sm12936089f8f.24.2026.04.16.02.57.11
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Thu, 16 Apr 2026 02:57:11 -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=google header.d=suse.com header.i="@suse.com" header.h="Content-Transfer-Encoding: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=1776333432; x=1776938232; darn=lists.xenproject.org;
        h=content-transfer-encoding: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;
        bh=P1MHw5bnb5+l/wRUhSLooZGFlX+KiX8AA9aEuHgJljo=;
        b=Fr9lS9hlpQ+iUUtFK5r1Hfik4CEaaiqRI1NM/BgM0JP44egJnKsVJzfOnCGaMCmyoR
         LPBDpK28gUtfseUAm7G0sUOYeCjg6CyH4xh8qbjADVNLbvcrWsluop9C+K/+WiHCRTU0
         rlG81xay8IWi3A0aGRmDcNnBk/BbQVgaEPENt7AZHbJsJM10gyxkLo3qQwSskhVrYwzl
         3zY5Fk4JPPfxS0VvP0xUIwxN72LwrG4KPmNn+JVuTeZHJwHdRJqnR1/5r5Nqfd9BdIlZ
         MjNJIdozrq8RJ1hmVOiibqtv5gsDuf7ZSFMGbbhIYmLJeltq1WnqMVZiK4P5Yv5Atm6W
         clDg==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20251104; t=1776333432; x=1776938232;
        h=content-transfer-encoding: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;
        bh=P1MHw5bnb5+l/wRUhSLooZGFlX+KiX8AA9aEuHgJljo=;
        b=SYBYER4BrYheimWrKXbLPt8Wf+PNQ4cC7pzTOiKhUTr8RuSpydY3NB4+//eWRabrro
         oPd0bL6DYHcj3tMc28Gj+BPHO9pg0wHI3+svHygKGJbvq3G8Fs47m5QFJ1sN+Y80EcyC
         WNC8cjEiwehMyB9KY5BpRqF1i3ZQ6dzgtuUIs4Fhx9ivKjpocQMRl1vFw+r7xJQZMkVk
         ExbjaRSLU8L5DZ795pSSjvBK010DcueokRBO9PFSVKbrOUacMJnQpYj3u4csKk5y0JNe
         KCjjBMCjUJ6Gbg8QEK6mgHfsXkav4BpXK9b5QpuvJpEKmQZ/rdjeDXtt0HC4PgBY2bEP
         9ueA==
X-Forwarded-Encrypted: i=1; AFNElJ/249jgSgig79TMJEPoHybo5kX4G6Lbp94meRMtBLwmUs8rmJZCSK71XqBgEmyX6FNX67iMUsd/iA4=@lists.xenproject.org
X-Gm-Message-State: AOJu0YyNT7Cv7QaBiRPYF5CnFc2kFYUjDU6PpRRHrv6jLvyn9tkCAtyV
	AAIGIG14MAsF9wjK7n2h801r+EN63txf0FQYzWQOTw21xc0iVf69yqeEzqbzlCGTQw==
X-Gm-Gg: AeBDietvsk+UAsEFbNJu+hPPhvR6S/0wbTSRMHgc436FXjOK+Nz9HzC8cPdHY/UowHK
	x53EisdvMqdiKZfgB0MSrZp0fPFIUEXZGEsNuhnmAqNHH3eeHNnQt1IZ0QRtz2Q2pLaacgCAWMC
	3a+W8eZ408YJ6MoW1E3o8mHso0uPymmyXf+TNWgsUTYZb2FGEQ9ARGIQ4zT6rU9mmL9lLLg1jx6
	3SR7y17X4Tl47JLtPoGLMubAuPfkzymAW/+xCLaKYAaNNQg1EYTdtIqRDsdUtjRlegGXOF6ij18
	TOkMGkuDQ8/poXxSBkL8ertgrl8FWS/qotDnchmtjjVfb9LegTyIAOwUD/GIGs+aZoCJpt1XEqO
	CoBq1mUELJGHiVavOhMZMKRrWESo+Yq51p7S9xmgoY919UFpbipHebN74CmxfJd53+IskOgSe9V
	cHTW6Keg4vWAWqiH3IIsFoQh8m8RPlflEylG2KAbnhVxteyE83CfmggOfAO/fB+rWzPIim03h0H
	1foODON4gD1IcblM8PZPWRIdQ==
X-Received: by 2002:a05:6000:18a6:b0:43e:a638:250e with SMTP id ffacd0b85a97d-43ea6382616mr16084712f8f.3.1776333431866;
        Thu, 16 Apr 2026 02:57:11 -0700 (PDT)
Message-ID: <344987b1-a293-400d-8c45-af98119f07fe@suse.com>
Date: Thu, 16 Apr 2026 11:57:14 +0200
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH 1/2] vtd: Drop dead check for permissions in lookup_page
To: Teddy Astie <teddy.astie@vates.tech>
Cc: Andrew Cooper <andrew.cooper3@citrix.com>,
 =?UTF-8?Q?Roger_Pau_Monn=C3=A9?= <roger.pau@citrix.com>,
 xen-devel@lists.xenproject.org
References: <815edfd0db90859a4ce270d833d9d721ff66e31c.1775814143.git.teddy.astie@vates.tech>
 <4f9e6615-b9ab-4c2e-9345-100e73eebbb3@suse.com>
 <70023321-c799-456f-920f-af7a7344de34@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: <70023321-c799-456f-920f-af7a7344de34@vates.tech>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
X-purgate-ID: tlsNG-ef75cf/1776333432-15A59C48-634A5507/0/0
X-purgate-type: clean
X-purgate-size: 839

On 16.04.2026 11:15, Teddy Astie wrote:
> Le 16/04/2026 à 10:23, Jan Beulich a écrit :
>> On 10.04.2026 12:09, Teddy Astie wrote:
>>> `val` comes from `addr_to_dma_page_maddr()` which is a pagetable
>>> paddr and doesn't leak the PTE flags in it.
>>
>> Did you read the comment ahead of the function, in particular the part about
>> the caller passing 0 for "target"?
>>
> 
> Ah ok, the "full PTE contents below PADDR_BITS limit" also includes the 
> R/W flags, but only in that case.
> 
> While I'm on it, there is a corner case here where "full PTE content" is 
> also at the same time a error condition of this function (if PTE mfn == 
> 0, we have val < PAGE_SIZE; yet the mapping exists), but that's not the 
> problem this patch is fixing.

Not PTE will have MFN == 0. On x86 at least, MFN 0 is special.

Jan


From xen-devel-bounces@lists.xenproject.org Thu Apr 16 09:57:50 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 16 Apr 2026 09:57:50 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1283185.1565458 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wDJTq-00080g-DU; Thu, 16 Apr 2026 09:57:50 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1283185.1565458; Thu, 16 Apr 2026 09:57: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 1wDJTq-00080Z-AN; Thu, 16 Apr 2026 09:57:50 +0000
Received: by outflank-mailman (input) for mailman id 1283185;
 Thu, 16 Apr 2026 09:57:48 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <Christian.Koenig@amd.com>) id 1wDJTo-00080R-Mg
 for xen-devel@lists.xenproject.org; Thu, 16 Apr 2026 09:57:48 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wDJTn-00DPfk-Vt
 for xen-devel@lists.xenproject.org; Thu, 16 Apr 2026 11:57:48 +0200
Received: from [10.42.69.2] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <Christian.Koenig@amd.com>)
 id 69e0b29b-bab6-0a2a0a5309dd-0a2a4502b608-8
 for <xen-devel@lists.xenproject.org>; Thu, 16 Apr 2026 11:57:47 +0200
Received: from [52.101.85.0]
 (helo=BYAPR05CU005.outbound.protection.outlook.com)
 by tlsNG-720697.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.1)
 (envelope-from <Christian.Koenig@amd.com>)
 id 69e0b299-af86-0a2a45020019-34655500d31b-3
 for <xen-devel@lists.xenproject.org>; Thu, 16 Apr 2026 11:57:47 +0200
Received: from PH7PR12MB5685.namprd12.prod.outlook.com (2603:10b6:510:13c::22)
 by LV5PR12MB9778.namprd12.prod.outlook.com (2603:10b6:408:300::9)
 with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9818.25; Thu, 16 Apr
 2026 09:57:43 +0000
Received: from PH7PR12MB5685.namprd12.prod.outlook.com
 ([fe80::ce69:cfae:774d:a65c]) by PH7PR12MB5685.namprd12.prod.outlook.com
 ([fe80::ce69:cfae:774d:a65c%5]) with mapi id 15.20.9818.017; Thu, 16 Apr 2026
 09:57: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=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=RXXlVG1dQJLXjVrgGeZZq6HbdbICRjcBy69j7Rv1CieE0ppJVrUfy2Tr4T6sGD+LWaapRqDQc4spYq3kDRrb7OtINrXzNiLJQ/h3cPdzYoH9DCtAMU71z99WYgjTIFH56qq+st2RHazWl60PlE4vOsI5CQD7r8V5ojqElnh5P2A6tPJckELRq2jnitewB4KWvznNm6ue32J0prMijXxh4L7btAHV+oy934qN3V8ZAiBh7KfBImdQYdNhkQiqODigBRTWtnwziMLyKszstGUk59gEG1gxb1hGMupibgJq2FjEvb5y8qjP8gWiDtWm5yIZJmnijQq391tbcKucHVa57Q==
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com;
 s=arcselector10001;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1;
 bh=qsN0idFbzoo5Al6u3mb1og5Of2nRQw6pc/2+X8L36XM=;
 b=TUI2cjQOM/gDb7sTRpphCyoJRB0ZXhZYFrBcBg20ZAMZ7rXTmisGmrdK1yMZvz8UXpRE3vKirVSpLpWGRac3AfPYF/ho5D6IQ8DaBe5gLujf51NPJvE1OvCxAAChlKIejJRVnM4UdV2+NXjdtXuxAkkHAB2B/jp6nS/h70Ub1Hc8tJyk/90PwU0akoaVtnl+KidwzD5jS045gIeGANqLsVBYyQkXNYuzHMZKlOwVPrNfV/Fmp9v+dgQa2oggfOjTBw8z29Ne2igMw1xBJ+ICANfBooaL/iLVFsuIEm9a1TRwUueFsuar98eYinFZaWrV2YD48eVPd/R2Y83X2Ol88Q==
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=qsN0idFbzoo5Al6u3mb1og5Of2nRQw6pc/2+X8L36XM=;
 b=CyJJqhpzXmn2+iu5KpqNT3BVjwHOZ6ThAgEuZaUHQlhyHnR4XH223X6/vdB3/l3h1tRc8zCa2Wz99gTvY3jhGEMRupohCIdKHXNifUXF+oijjHwcURfKAekhgZjuUpOxV/O9aR6orUEa5G4NYbDfcL5Asi8/5q+o3BkUrPJR5ZE=
Authentication-Results: dkim=none (message not signed)
 header.d=none;dmarc=none action=none header.from=amd.com;
Message-ID: <b8d04414-18b5-40f7-9ea2-88b30ff5bea0@amd.com>
Date: Thu, 16 Apr 2026 11:57:37 +0200
User-Agent: Mozilla Thunderbird
Subject: Re: Pinned, non-revocable mappings of VRAM: will bad things happen?
To: Demi Marie Obenour <demiobenour@gmail.com>,
 dri-devel@lists.freedesktop.org,
 Xen developer discussion <xen-devel@lists.xenproject.org>,
 linux-media@vger.kernel.org
Cc: Val Packett <val@invisiblethingslab.com>,
 Suwit Semal <sumit.semwal@linaro.org>
References: <a06133f7-3093-4733-9786-bc46c1453e06@gmail.com>
Content-Language: en-US
From: =?UTF-8?Q?Christian_K=C3=B6nig?= <christian.koenig@amd.com>
In-Reply-To: <a06133f7-3093-4733-9786-bc46c1453e06@gmail.com>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 7bit
X-ClientProxiedBy: YT4P288CA0019.CANP288.PROD.OUTLOOK.COM
 (2603:10b6:b01:d4::21) To PH7PR12MB5685.namprd12.prod.outlook.com
 (2603:10b6:510:13c::22)
MIME-Version: 1.0
X-MS-PublicTrafficType: Email
X-MS-TrafficTypeDiagnostic: PH7PR12MB5685:EE_|LV5PR12MB9778:EE_
X-MS-Office365-Filtering-Correlation-Id: c51b83ef-8ffe-43bb-880d-08de9b9e9a68
X-MS-Exchange-SenderADCheck: 1
X-MS-Exchange-AntiSpam-Relay: 0
X-Microsoft-Antispam:
	BCL:0;ARA:13230040|376014|366016|1800799024|18002099003|22082099003|56012099003;
X-Microsoft-Antispam-Message-Info:
	ptIBcFwCh7uxp3YWoK17/bPQie2C69dn4TvYoltDKzWKEoIyDd8AqL8BW58hqMoG8gVr0MEhLZr0gie9rx9Sb2S+1cRY2ZzDijFmxMIVWq2yWrNtDcoV6RmgYN453Q2QpDmMYQJnm/O5N/QhfIV+gZ2waYUJ++lCC2/P6cVqug/7AxMh0hlt5q914MtRaww/We1VIC+qpLVaV+evn+SHAEhM9DAsv4I3fyMHtFeNh7TaFZrblkyn0IOhW8+qZ40Y1aVczI7VWZ1Ck9blxKK0ycVcBMlWSwRQRMoqFnabldpBtaHjZxEDEQLTPA3LlFk4+QTByDkzGi7Qo5kAeNH1TRo0YPfiapxFyLy9bbypb7LnvBfznSP48p+tCcBEBeptKF8XFbCSiVFe2M0wg4uzqEUzD6AdeKbqEmpjgRkPsbYbhXHM5qAVR37AXXWjGKUOP5Yn5y9NEsVIhJZVxYt//mI4Zc+8Gcm1Q4pGhldEAGuSC0MTd3YWhlNij46VCgT2zlMb2h/wT0+rlw1KEh4n9kHMVqlQ8OuYruHXDwWcqb/fukPk2PUg9csUiQbvmacbx+Sk7JSAP+w0r7vVnBhmKAiIMVWybFFZeBgWZF/55s0H+AHz4EVPG7i1uDXRYbgTt/Qj0FBgEVcfFg773uozZ+cY+5ActPYajWkiO2a2cOSDrzRRY9viA62p9HmMfeLmIfD4lGqNyJwjcPqTxePepqSsXdlwZRXJtAVLmUcVU6Y=
X-Forefront-Antispam-Report:
	CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:PH7PR12MB5685.namprd12.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(376014)(366016)(1800799024)(18002099003)(22082099003)(56012099003);DIR:OUT;SFP:1101;
X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1
X-MS-Exchange-AntiSpam-MessageData-0:
	=?utf-8?B?d0NvTi9ON0ZuZTY3aDhTYy8xNHRoVXJCTlpkckJHeFVJYWVDWDVJcG1XU1VK?=
 =?utf-8?B?Y082K1Q5bXpiT3RNVHVUSnJRbWdlYzZlVkV0dXl4VHMyRUJvRmNaelY3ZFpJ?=
 =?utf-8?B?Uk1RQldWTlJmUXhQbGtYUTI5V0lYaWtFNGM3cmEvanFnbWNySGp6Yk5QQmtU?=
 =?utf-8?B?ZXBtc0Fnam5lSVB0RWI2eVJCM3RqSHJ4WDJxRzVNTVczZDFaNGhaWUpkNmFr?=
 =?utf-8?B?Vm9wWnBCYWVTN2l5YjFWUE1iK25RSklCZ1pYb1hjMkxMSk5CcE55eE5GR1E1?=
 =?utf-8?B?QlBSSk5jVHdXMjROaUNrck9iT2xwZ0I5dUZaL1BRd25KSUc4WHp1YlByRGwr?=
 =?utf-8?B?a0pNaXYrUEExcG5XbkJUTHVUV0JzMnNCT2o0U2FHZ3lzZ3BhQWw3dEZnNGZ4?=
 =?utf-8?B?aFVYWWRESFA1a2lSd0t1NURQME40ZGdtQ0Z5a2owRGtKZ3BhZ21KUC9Wekly?=
 =?utf-8?B?UkZrSU5qSWlOUGRBdDdzZXY5aTdoaWx4WGc5ZnUwb3JvcGowa2lNcCtDenFG?=
 =?utf-8?B?MVk0YWFFQjgwWGF0VUJVVlQ5Q2oxTm5ETEpXSkhYZnR6RVdJNjJBaHpQS3Uv?=
 =?utf-8?B?Z0lmYld3V3hZU3RBMXo1bXlUZDZCWnRmV0tXY3ozb3lETmJsOHdpbUF0YXdM?=
 =?utf-8?B?NmN4STE0eFk0M0lCM2JXb1hYL2tDOHZzWVVSbjdDeDR6TmQ5OW5HZzJKa2Nl?=
 =?utf-8?B?UXV6WVpjUDJPcHU1ODRtcTZQRThIa20zZE5jaFdPZG1MK3cxOGtXd2owdjl3?=
 =?utf-8?B?NUtsN24ralFqcU5vQVJFWFZpSW5TdDc4aml6SXR6N1NVNmlqMTZuSFIxQmJi?=
 =?utf-8?B?aEJzQ0NCdXRDOW9mNm1uQjI5M0NXb1lXQmppNldVSEVYdXMxNzlVUjN0NVNM?=
 =?utf-8?B?a2dwL2ZHU1FTYU9NdkVkV0N2Rm9pL0ZUSEJsNVcyeEJTMXdQcEhQK0YzYVlQ?=
 =?utf-8?B?WWV4cVN0bkZQS3hNWnBGeEtsV3BYekd4RG1WMW1GUTJUZmJhZzRlekdjYktX?=
 =?utf-8?B?bDZSTW5KajR3TEJMOVZ1eUVTT3pXRGJRU1FwRSsvMmpMMkI3R1B6R0gzNHVQ?=
 =?utf-8?B?UzhNWUo1aUhGRllya0ZYS3BTQ3FITVQraFdMclZXMFNyUU5VQ2VOTmdVam1k?=
 =?utf-8?B?akhVRHhPcWNoS0hhdklidW44MTdwenBvL3c3ZytmVXozUVRzL1MydHArMFRq?=
 =?utf-8?B?QWxTZXdYWWttS0ZHclFSOTVwYUFITkc3Y1ZCWXA0MjFrNXcxd0RNR0RNQ2lm?=
 =?utf-8?B?ZVdnVDZqZUsxb0xlWWNldkFOVC9CcGFWY0diSUxhejFLayt0dnR2WGY3bzd2?=
 =?utf-8?B?Z0VvSUVQQVdlV3pRR2lZekx0Rm96VW5KWkhwTEUzMlU1UnN4Z3VpT2dpTmpV?=
 =?utf-8?B?emFTbUVzZVZ5b1RDMTlIUFpZeFRlcHNsMFgybG5XZGNwbElnWFp6cHpsbm5U?=
 =?utf-8?B?TktZdnV0VmVmWDhXZE52NkRJNVppdFI4aC85Z2lSQzJSNnpWTllhcGVpejNJ?=
 =?utf-8?B?cmJ2eE1EbEUrM210b291b1Fkak9uS3NtR28xbk1uWjBxRGk2OEVmNnF6Zm5W?=
 =?utf-8?B?MDRNS3Vac1BjYWFkRWQ2S1ltRVhTeHMxSmRYZFcwTG5QaW13SWpkRWZGYzBz?=
 =?utf-8?B?SjAzSEtINmIyUEhwMUVhY3hFeUhNYlJ4d3dtK3Yzd3BRRis1bFcvMFZOOVRk?=
 =?utf-8?B?SThFV3E1SWVFNnBpalVmZDlTOU9RUTBITXVtZUhsVy84d0grUysyZm5TQ3g4?=
 =?utf-8?B?clBjdm1CYXQvOTZRUnVFei9YTi9ZcWRrQmpNVGdDak1zYTc2b3VObytsTXBn?=
 =?utf-8?B?Umo2cGQ3UDVpd1BlQUN4YTdaZUJ4WVNBV2xONEhiUk8vNE1IKzVITGdMNmZB?=
 =?utf-8?B?MmQxd1dJd3FVK3hoSGthTHQrU1VSYVlHV0Z0aHh5UE9mRC9iWUsyZHFnUENa?=
 =?utf-8?B?NDVWNXFvR3dPR2pwMjFxay9ZUGFTdDlZeVBrVXBnOVl2ZXF4cVdGZ1g4Nm93?=
 =?utf-8?B?ei9udmVWYVVuNmQ1YjJJZk9JTDJ0ZUkwTllhOTBsMFJCSDVnMzkzK3cwb2ds?=
 =?utf-8?B?OGYxb2p0NE95c0V2MzZIWTBzR0hISjliaUVVYjUrWXdUcnVpamdrRzdRSFUv?=
 =?utf-8?B?V3czVHZQc3BLMnV6TER6UG1PRW5vUlNJbU0zRjNnSFVBYllKMy9teXR4N0ky?=
 =?utf-8?B?RzM0MnppU1lBVnhCNnVnaDB3ZVpVU21Ob3VGTUdieVp5Wnh6NHUxMlVsVnRo?=
 =?utf-8?B?eExWUkVvVm9sd25kcnByUFBLdE1JOTlQTVJ4eVZpYVQzOWxubXJ5R2NJdkdv?=
 =?utf-8?Q?CVEtoCP9Vo79hTusMh?=
X-OriginatorOrg: amd.com
X-MS-Exchange-CrossTenant-Network-Message-Id: c51b83ef-8ffe-43bb-880d-08de9b9e9a68
X-MS-Exchange-CrossTenant-AuthSource: PH7PR12MB5685.namprd12.prod.outlook.com
X-MS-Exchange-CrossTenant-AuthAs: Internal
X-MS-Exchange-CrossTenant-OriginalArrivalTime: 16 Apr 2026 09:57:43.2392
 (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: cypUYnP/gDSas/DR7hgdKggJ5QncsdlARt5R3FHs4O8mNuvGgY/xETSqkiCuOybC
X-MS-Exchange-Transport-CrossTenantHeadersStamped: LV5PR12MB9778
X-purgate-ID: tlsNG-720697/1776333467-888CB161-4CED2B33/0/0
X-purgate-type: clean
X-purgate-size: 1951

On 4/16/26 01:27, Demi Marie Obenour wrote:
> Is it safe to assume that if a dmabuf exporter cannot handle
> non-revocable, pinned importers, it will fail the import?  Or is
> using dma_buf_pin() unsafe if one does not know the exporter?

Neither.

dma_buf_pin() makes sure that the importer doesn't get any invalidation notifications because the exporter moves the backing store of the buffer around for memory management.

But what is still possible is that the exporter is hot removed, in which case the importer should basically terminate it's DMA operation as soon as possible.

GPU drivers usually reject pin requests to VRAM from DMA-buf importers when that isn't restricted by cgroups for example, because that can otherwise easily result in a deny of service.

Amdgpu only recently started to allow pinning into VRAM to support RDMA without ODP (I think it was ODP, but could be that I mixed up the RDMA three letter code for that feature).

> For context, Xen grant tables do not support revocation.  One can ask
> the guest to unmap the grants, but if the guest doesn't obey the only
> recourse is to ungracefully kill it.  They also do not support page
> faults, so the pages must be pinned.  Right now, grant tables don't
> support PCI BAR mappings, but that's fixable.

That sounds like an use case for the DMA-buf pin interface.

> How badly is this going to break with dGPU VRAM, if at all?  I know
> that AMDGPU has a fallback when the BAR isn't mappable.  What about
> other drivers?  Supporting page faults the way KVM does is going to
> be extremely hard, so pinned mappings and DMA transfers are vastly
> preferable.

Well if you only want to share a fixed amount of VRAM then that is pretty much ok.

But when the client VM can trigger pinning on demand without any limitation you can pretty easily have deny of service against the host. That is usually a rather bad idea.

Regards,
Christian.


From xen-devel-bounces@lists.xenproject.org Thu Apr 16 10:04:36 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 16 Apr 2026 10:04:36 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1283193.1565469 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wDJaF-0001EJ-2O; Thu, 16 Apr 2026 10:04:27 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1283193.1565469; Thu, 16 Apr 2026 10:04: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 1wDJaE-0001EC-V6; Thu, 16 Apr 2026 10:04:26 +0000
Received: by outflank-mailman (input) for mailman id 1283193;
 Thu, 16 Apr 2026 10:04:25 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <bounce-md_30504962.69e0ad9a.v1-d274f2a866104456a30f2c4c29706734@bounce.vates.tech>)
 id 1wDJaD-0001E6-4q
 for xen-devel@lists.xenproject.org; Thu, 16 Apr 2026 10:04:25 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wDJaC-009FEl-AA
 for xen-devel@lists.xenproject.org; Thu, 16 Apr 2026 12:04:24 +0200
Received: from [10.42.69.4] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1) (envelope-from
 <bounce-md_30504962.69e0ad9a.v1-d274f2a866104456a30f2c4c29706734@bounce.vates.tech>)
 id 69e0b423-bab6-0a2a0a5309dd-0a2a4504df9a-46
 for <xen-devel@lists.xenproject.org>; Thu, 16 Apr 2026 12:04:24 +0200
Received: from [198.2.187.1] (helo=mail187-1.suw11.mandrillapp.com)
 by tlsNG-ebf023.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.1)
 (envelope-from
 <bounce-md_30504962.69e0ad9a.v1-d274f2a866104456a30f2c4c29706734@bounce.vates.tech>)
 id 69e0b427-1dec-0a2a45040019-c602bb011ec8-3
 for <xen-devel@lists.xenproject.org>; Thu, 16 Apr 2026 12:04:23 +0200
Received: from pmta09.mandrill.prod.suw01.rsglab.com (localhost [127.0.0.1])
 by mail187-1.suw11.mandrillapp.com (Mailchimp) with ESMTP id 4fxCZL1dGSzBscwFR
 for <xen-devel@lists.xenproject.org>; Thu, 16 Apr 2026 09:36:26 +0000 (GMT)
Received: from [37.26.189.201] by mandrillapp.com id
 d274f2a866104456a30f2c4c29706734; Thu, 16 Apr 2026 09:36: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=mte1 header.d=mandrillapp.com header.i="@mandrillapp.com" header.h="From:Subject:To:Cc:Message-Id:Feedback-ID:Date:MIME-Version:Content-Type:Content-Transfer-Encoding"; dkim=pass header.s=mte1 header.d=vates.tech header.i="teddy.astie@vates.tech" header.h="From:Subject:To:Cc:Message-Id:Feedback-ID:Date:MIME-Version:Content-Type:Content-Transfer-Encoding"
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=mandrillapp.com;
	s=mte1; t=1776332186; x=1776602186;
	bh=XBI41eIb5EU5Imt0X3QJY323Za5K20vqbhiyQsF2MHc=;
	h=From:Subject:To:Cc:Message-Id:Feedback-ID:Date:MIME-Version:
	 Content-Type:Content-Transfer-Encoding:CC:Date:Subject:From;
	b=cRWr7WXnNwYozjPEINg3E5OS0lcDqp7ZeTnf/4ocBGc0Yi3b8oZzDcx4rjO8TEZo6
	 +C8uaSW3RI30R46lLMR+jzOB/VPnlq3oSMeHFky1+3Aj8d+YL0JRgpQ/9QWbHdB6Ya
	 kTlQWg0ENxDDa4dleNr9E5UQ9vMZdwVcxpCi2j87I2gacNsLW3rv/hQTQKUnr8WKql
	 GCjYNW3kcvKwMMpC9EJGC43CJbYBgVH7FBGGrLs1LsVjZq+D+upsFgma7hnKK9S0GA
	 nh54hfQuredN64Z96qMRmKUKyw6OSRTF+F4SllcNbfvx/ah8wv2k4NR9eEU58OQUi8
	 VToQcfL9aZ/EQ==
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=vates.tech; s=mte1;
	t=1776332186; x=1776592686; i=teddy.astie@vates.tech;
	bh=XBI41eIb5EU5Imt0X3QJY323Za5K20vqbhiyQsF2MHc=;
	h=From:Subject:To:Cc:Message-Id:Feedback-ID:Date:MIME-Version:
	 Content-Type:Content-Transfer-Encoding:CC:Date:Subject:From;
	b=T3J/JuBolgwiwvEsS3HqPwR1e5LcLf1C6aW6xneZcUwET+zeTj0wGn6KP85BFc8N1
	 +qOzySUgBnteg7s3Wkpq36afJqbLBWFAURGg1jyBEojVHj2Hme1TjYLNpeLkE6jKcZ
	 S8F7YYCpAM58+09KMChJl9JzGTL9PEL7SZbQab1J8oDHH2+o0C4vQtq+lEVCGV8LKt
	 SQiwG9GI6yLtl8X/qq5ADhFjz1oTi389zzuYzzBT7zAuxE844aQHpU7GamR4xLBYMB
	 2Iu02RszTH39pPpvjMb5Ik2kPhKsqoinqXSABUXw+wdkq45PVJBKUVp3OoTdpwlXZy
	 y8gGpe34lmHcg==
From: "Teddy Astie" <teddy.astie@vates.tech>
Subject: =?utf-8?Q?[PATCH=20v2]=20x86/vmx:=20Avoid=20pausing=20on=20HVM=5FPARAM=5FIDENT=5FPT=20in=20additional=20cases?=
X-Mailer: git-send-email 2.52.0
X-Bm-Disclaimer: Yes
X-Bm-Milter-Handled: 4ffbd6c1-ee69-4e1b-aabd-f977039bd3e2
X-Bm-Transport-Timestamp: 1776332185305
To: xen-devel@lists.xenproject.org
Cc: "Teddy Astie" <teddy.astie@vates.tech>, "Jan Beulich" <jbeulich@suse.com>, "Andrew Cooper" <andrew.cooper3@citrix.com>, "=?utf-8?Q?Roger=20Pau=20Monn=C3=A9?=" <roger.pau@citrix.com>
Message-Id: <10315bf1a012edf4821f7386b3142e56b6c23e34.1776332054.git.teddy.astie@vates.tech>
X-Native-Encoded: 1
X-Report-Abuse: =?UTF-8?Q?Please=20forward=20a=20copy=20of=20this=20message,=20including=20all=20headers,=20to=20abuse@mandrill.com.=20You=20can=20also=20report=20abuse=20here:=20https://mandrillapp.com/contact/abuse=3Fid=3D30504962.d274f2a866104456a30f2c4c29706734?=
X-Mandrill-User: md_30504962
Feedback-ID: 30504962:30504962.20260416:md
Date: Thu, 16 Apr 2026 09:36:26 +0000
MIME-Version: 1.0
Content-Type: text/plain; charset=utf-8
Content-Transfer-Encoding: 7bit
X-purgate-ID: tlsNG-ebf023/1776333864-293773FF-E3D5F8CB/0/0
X-purgate-type: clean
X-purgate-size: 1205

When settings HVM_PARAM_IDENT_PT, skip domain pausing when :
- there is no vcpu
- unrestricted guest capability is used

Signed-off-by: Teddy Astie <teddy.astie@vates.tech>
---
v2:
 - rebased patches with staging

 xen/arch/x86/hvm/hvm.c | 4 +++-
 1 file changed, 3 insertions(+), 1 deletion(-)

diff --git a/xen/arch/x86/hvm/hvm.c b/xen/arch/x86/hvm/hvm.c
index 4a81afce02..61871dbd3e 100644
--- a/xen/arch/x86/hvm/hvm.c
+++ b/xen/arch/x86/hvm/hvm.c
@@ -4237,11 +4237,13 @@ static int hvm_set_param(struct domain *d, uint32_t index, uint64_t value)
             rc = -EINVAL;
         break;
     case HVM_PARAM_IDENT_PT:
+        v = domain_vcpu(d, 0);
+
         /*
          * Only actually required for VT-x lacking unrestricted_guest
          * capabilities.  Short circuit the pause if possible.
          */
-        if ( paging_mode_shadow(d) || !using_vmx() )
+        if ( paging_mode_shadow(d) || !using_vmx() || !v || vmx_unrestricted_guest(v)  )
         {
             d->arch.hvm.params[index] = value;
             break;
-- 
2.52.0



--
Teddy Astie | Vates XCP-ng Developer

XCP-ng & Xen Orchestra - Vates solutions

web: https://vates.tech



From xen-devel-bounces@lists.xenproject.org Thu Apr 16 11:28:23 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 16 Apr 2026 11:28:23 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1283232.1565513 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wDKtH-0003wA-Gs; Thu, 16 Apr 2026 11:28:11 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1283232.1565513; Thu, 16 Apr 2026 11:28: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 1wDKtH-0003w3-DK; Thu, 16 Apr 2026 11:28:11 +0000
Received: by outflank-mailman (input) for mailman id 1283232;
 Thu, 16 Apr 2026 11:28:10 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <jbeulich@suse.com>) id 1wDKtF-0003vx-UW
 for xen-devel@lists.xenproject.org; Thu, 16 Apr 2026 11:28:10 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wDKtF-00GUzC-BR
 for xen-devel@lists.xenproject.org; Thu, 16 Apr 2026 13:28:09 +0200
Received: from [10.42.69.11] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <jbeulich@suse.com>)
 id 69e0c7c6-2eae-0a2a0a5409dd-0a2a450b8dc4-20
 for <xen-devel@lists.xenproject.org>; Thu, 16 Apr 2026 13:28:09 +0200
Received: from [209.85.128.51] (helo=mail-wm1-f51.google.com)
 by tlsNG-42698a.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.1)
 (envelope-from <jbeulich@suse.com>)
 id 69e0c7c9-212f-0a2a450b0019-d1558033f048-3
 for <xen-devel@lists.xenproject.org>; Thu, 16 Apr 2026 13:28:09 +0200
Received: by mail-wm1-f51.google.com with SMTP id
 5b1f17b1804b1-488d2079582so73450555e9.2
 for <xen-devel@lists.xenproject.org>; Thu, 16 Apr 2026 04:28:09 -0700 (PDT)
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-488f0e9a72csm42587255e9.16.2026.04.16.04.28.07
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Thu, 16 Apr 2026 04:28:08 -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=google header.d=suse.com header.i="@suse.com" header.h="Content-Transfer-Encoding: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=1776338889; x=1776943689; darn=lists.xenproject.org;
        h=content-transfer-encoding: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;
        bh=w1dvHbggISbXY1daKgxew8q+wBdaRi4gHqSc4ZF0+Lg=;
        b=A9JDS8p6et+fvDe8DEmwuuWWplPQVn+3fbFmUygTL/HiNgyBHOIEL1drTXhXv+CAij
         lQQ6mL2l0lVLhyPuLUVRAmklqt4aEAPiDp46EVFtQPpyFvQXk8IA1l5QqtsC2nqYRO4Z
         b4Od7p8CfRi6kZNUYE0pWi3joPAxLLeJs2VKo5E1z9CweabgdMuPMoa6K/QzuegcQXrW
         ekvhX0SM8wKINzGGU0AF+yyMv2F2zqZ/snIu6M21aR3k2HJ3Nkt0fUsWuqnuz+EUOjvT
         JsBmNjBot5SjEBv3zB717TfPG/YQUl5eakbULnOGkjIXkZ8fIbCkGT80Qf5lYMuYgrT6
         k7WA==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20251104; t=1776338889; x=1776943689;
        h=content-transfer-encoding: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;
        bh=w1dvHbggISbXY1daKgxew8q+wBdaRi4gHqSc4ZF0+Lg=;
        b=BC9ZHz2srZcq4YtOIvpf6KaYHCOaqxrpnxUjwa900Au3jcHwuLzkTjrbX/wbTboC+A
         qnIgYFEaAa9Bq+Ck/18By3JYc2JhrJEMqva9zyl0IxFccnilDbOZvWMWNN1zmi86ox+u
         ML/aY4VEeCQDoo2/3OQpNb5Zz6rNHjv9wy2//EoKVzGoNJUV2gkzJATvu8Uasf+B+nSm
         qtA4xk08f/T2YToHV/fL6H6tS8NrF8q+4ste38stsSQ8vPFTn4WyaVC3ReHaJhe0B9zl
         lCSfszIpcGvt/4UI9u27v72oCiQvEgK2HpnA7KRwtSByhB8qaSdKINZI6kwPjjE2fQfC
         0zxA==
X-Forwarded-Encrypted: i=1; AFNElJ9QPuzU2IocFuzg/cQOr0TM+kn/nkFrsIRGTTcs5JTecT7iB9MHKj+KLxbcYB6M6CsqQ7XVMDpAlnI=@lists.xenproject.org
X-Gm-Message-State: AOJu0YwxUn6OxuVJB5DMA92RNI32AWZ7x9bDvf/+Cidin+DZCYTtTc+f
	rEoHCQRY4HjJTcDzqR/a5HRNZcPT4A1pqZrmjZzqGglCbJx1z16t2/W2eJddVQL8Eg==
X-Gm-Gg: AeBDieuqd2lWxKQUK4M/pqM/Plg6/iYEn8wT4N5Jg3fXjyrf716svCjX3lM6f5FM+3q
	9yfeok6rbpc1QFR6/mI6w07HxPlmGGZ3i2j4grPPX7OAG445YxiAlCfknCVO3uiWqw6bHwKCEFT
	bsT+/3BE7Eb3JQaSxCRL1yFE+PHQMRhGjlGTQaU3mKZinlCDS1MP+qXZt0Cz56rYkTUA/GPQKNq
	PXPyOXhTYUe7uGbd7csjwYJZrfJCIfngylUVoYVs8faGihvaQDtzG9ehMmBCLH7Z+o90kU0kdJy
	txuftoGd0uNLkyYLVLcygP+tJFVN9owwHhNWhI2HDSFLqkBLmvVIRuuDPWxGdrdnXj7yUPJYtJB
	8srr4nx8QljKcIg3CeflJyrX6KmfLNo3ARlmTM0144Ywx92NwGQYTPzo+c5DEQE3jjJZDG8ix6G
	Jnb0DDn7Z6xq7pILkzC53YT/9Js7XPg14VBe04Q6Fptmyhd90PcrQGkpnXfoQUG44WrKyOgQ6DW
	Q+jX4QZ0uWVduZeSt6ITU65bQ==
X-Received: by 2002:a05:600c:a306:b0:480:20f1:7aa6 with SMTP id 5b1f17b1804b1-488d68607e8mr251217955e9.21.1776338888579;
        Thu, 16 Apr 2026 04:28:08 -0700 (PDT)
Message-ID: <f424bf3a-0113-4c66-b165-8dae82817f24@suse.com>
Date: Thu, 16 Apr 2026 13:28:11 +0200
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH 1/2] x86/time: use native TSC scaling factors when TSC is
 not scaled
To: Roger Pau Monne <roger.pau@citrix.com>
Cc: Andrew Cooper <andrew.cooper3@citrix.com>,
 Teddy Astie <teddy.astie@vates.tech>, xen-devel@lists.xenproject.org
References: <20260414103327.7420-1-roger.pau@citrix.com>
 <20260414103327.7420-2-roger.pau@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: <20260414103327.7420-2-roger.pau@citrix.com>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
X-purgate-ID: tlsNG-42698a/1776338889-7D165F3B-2FF5CC75/0/0
X-purgate-type: clean
X-purgate-size: 3325

On 14.04.2026 12:33, Roger Pau Monne wrote:
> When running HVM guest in native TSC mode avoid using the recalculated vTSC
> scaling factors based on the cpu_khz value.  Using the kHz based frequency
> leads to the TSC scaling values possibly not being the same as the ones
> used by the per CPU cpu_time->tsc_scale field, which introduces skew
> between the guest and Xen's calculations of the system time.
> 
> On a 2gHz system, where the frequency is possibly detected as 1999999999Hz
> (note this is a worse-case scenario), the cpu_khz variable will be set to
> 1999999kHz, and hence 999Hz cycles will be not accounted for per second.
> Over a second (the time synchronization period), this leads to a skew of:
> 
> cycles * 1 / (Hz freq) = 999 / 1999999999 = 499,5ns
> 
> So far this has gone unnoticed because the time synchronization rendezvous
> forces the update of the tsc_timestamp and system_time fields in the vCPU
> time info area, and hence the skew only accumulates up to the rendezvous
> period.  Attempting to remove the rendezvous causes the skew to grow
> unbounded.
> 
> Fix by using the native TSC scaling values (as used by Xen) when the guest
> TSC is not scaled.
> 
> Fixes: eab8a90be723 ("x86/time: scale host TSC in pvclock properly")
> Signed-off-by: Roger Pau Monné <roger.pau@citrix.com>
> ---
> I'm worried about the usage of cpu_khz beyond simple printing it for
> informational purposes.  Overall I think it would be safer to store the
> frequency in Hz, as to avoid losing the least significant digits.
> 
> In any case, that's a different change.

I'm not quite sure - improving accuracy is of course a good thing, but will
we ever be able to do any such calculations error free, when already the
detected frequency isn't exactly precise?

> --- a/xen/arch/x86/time.c
> +++ b/xen/arch/x86/time.c
> @@ -1710,17 +1710,25 @@ static void collect_time_info(const struct vcpu *v,
>      else
>      {
>          if ( is_hvm_domain(d) && hvm_tsc_scaling_supported )
> -        {
>              tsc_stamp            = hvm_scale_tsc(d, t->stamp.local_tsc);

This is a potentially imprecise calculation. How likely is it that its result
will indeed ...

> -            u->tsc_to_system_mul = d->arch.vtsc_to_ns.mul_frac;
> -            u->tsc_shift         = d->arch.vtsc_to_ns.shift;
> -        }
>          else
> -        {
>              tsc_stamp            = t->stamp.local_tsc;
> +
> +        /*
> +         * HVM guests using the native TSC ratio should use the same per-CPU
> +         * scaling factors as Xen.  This ensures time keeping is always in sync
> +         * between Xen and the guest.
> +         */
> +        if ( tsc_stamp == t->stamp.local_tsc )

... exactly match t->stamp.local_tsc? Don't we possibly need a (small) error
margin? (In which case of course the next question would be: How to establish
such a margin?)

Jan

> +        {
>              u->tsc_to_system_mul = t->tsc_scale.mul_frac;
>              u->tsc_shift         = t->tsc_scale.shift;
>          }
> +        else
> +        {
> +            u->tsc_to_system_mul = d->arch.vtsc_to_ns.mul_frac;
> +            u->tsc_shift         = d->arch.vtsc_to_ns.shift;
> +        }
>      }
>  
>      u->tsc_timestamp = tsc_stamp;



From xen-devel-bounces@lists.xenproject.org Thu Apr 16 11:34:55 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 16 Apr 2026 11:34:55 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1283247.1565522 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wDKzg-0005WO-99; Thu, 16 Apr 2026 11:34:48 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1283247.1565522; Thu, 16 Apr 2026 11: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 1wDKzg-0005WH-6F; Thu, 16 Apr 2026 11:34:48 +0000
Received: by outflank-mailman (input) for mailman id 1283247;
 Thu, 16 Apr 2026 11:34:46 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <jbeulich@suse.com>) id 1wDKze-0005WB-8n
 for xen-devel@lists.xenproject.org; Thu, 16 Apr 2026 11:34:46 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wDKzd-009YzA-Lx
 for xen-devel@lists.xenproject.org; Thu, 16 Apr 2026 13:34:45 +0200
Received: from [10.42.69.9] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <jbeulich@suse.com>)
 id 69e0c951-2eae-0a2a0a5409dd-0a2a4509adcc-12
 for <xen-devel@lists.xenproject.org>; Thu, 16 Apr 2026 13:34:45 +0200
Received: from [209.85.128.52] (helo=mail-wm1-f52.google.com)
 by tlsNG-bad1c0.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.1)
 (envelope-from <jbeulich@suse.com>)
 id 69e0c955-2497-0a2a45090019-d1558034dddb-3
 for <xen-devel@lists.xenproject.org>; Thu, 16 Apr 2026 13:34:45 +0200
Received: by mail-wm1-f52.google.com with SMTP id
 5b1f17b1804b1-4887f49ec5aso95174345e9.1
 for <xen-devel@lists.xenproject.org>; Thu, 16 Apr 2026 04:34:45 -0700 (PDT)
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-488f5818e51sm75485165e9.5.2026.04.16.04.34.44
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Thu, 16 Apr 2026 04:34:44 -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=google header.d=suse.com header.i="@suse.com" header.h="Content-Transfer-Encoding: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=1776339285; x=1776944085; darn=lists.xenproject.org;
        h=content-transfer-encoding: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;
        bh=13Wj72+CXNoHN2+XjRIkYIM+IwijmA4CRXlKdh1f6Y0=;
        b=Ag5NXEhyOb0Lj00zf1DxfflMazbAKlTQsl17Haq8rqja1bcY31Yl/mBTSWh1RiGXwB
         QUUzOATTYRDmXttn5oYSYrevD42pNYVMM1DLpxDpKehQ7xMw4pZ8VpZIH/zRUOfxk/31
         HRN0Hui7Kd/36tJmTwPw6atE1K6AOhTi2XSL0le4CKI2FJDHevoyEvb51HrYKPVZA/en
         sJgG59Us1tMILJ+oZk57dA31M2aHpZvOMpbZ714Zzb9ZzqrbVowwU6TfU6zYdiahlX6j
         eYvnLybN6RT9rkauS0my820Cqwy3Wh7oA+/vgpuOBzWy0HQJ+5nO2KAhoKLBjGudK7JL
         2yow==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20251104; t=1776339285; x=1776944085;
        h=content-transfer-encoding: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;
        bh=13Wj72+CXNoHN2+XjRIkYIM+IwijmA4CRXlKdh1f6Y0=;
        b=G/CDtk2v22Xyu+9YQ0q7gsIGKgNTvX6H3kskqaz2Kjs+XNoWM7685NRlAsIV8d+s/J
         0IKdP1Nm53W9IVQDdfqfNHqI68VQvGWZ3+9zBgAQw0CMsNlC8jfvOZMTr82D5fHRHdgB
         TNvaepHN2NrLZG6+1UM60s27H1OZbHMM134F3G7lTpsXLcKwdNX2RrKWjDc8BxR7ZWOK
         AUcsf0r1Q2eIc6b1ZO/Z/qPbZZzpghx2W/8+fbalCn22TUUM5OqOwHdqJRZtyLVIlHAw
         EhmCV1uqF1OYL5uE/DQ+tT8ERVU+i/pYo2QS1pRTi1drv3NDeRlY36Cuwvb67o1nY0ad
         6PQw==
X-Forwarded-Encrypted: i=1; AFNElJ/cj8nez11AasRm5q8Zhw+beAxA4gsAG8FQMeojqFkdJwUg4dhC/WkRNu2DMRz4ue24uZM9gy0nHr4=@lists.xenproject.org
X-Gm-Message-State: AOJu0YwwWCVKHqihbrb6bLjapGoU3irD2EONh34469GbIOXEVPxUlrcA
	6YYWD4rZte/jJEPbJdhrX9c9Z24eR0UDztVQZ2zU1NYB25ugeXUL4eUv2wdkw2LvtQ==
X-Gm-Gg: AeBDies3mYq4NQlXS2KSvsyCsWZwf2om+0um+d5YHySTY2pAp1OKelzek6bLZvfU1uS
	61HASGmBrsYaWZ9QiUIZTtQ+OQxd15Nz550v+VOOpiRwZbbKACAc6DlqOjm/M5ugGvThmWzpky7
	M24HKIramcHQrkLlrU/wvwXtiVUGXAgQ9Ti+MHWO8p+9slCPsbl//LKw7A/rZzBHJkmqNz/SFAm
	p/+Dw9CYciPMXWD3O4/BBHbCn1lc9uSSOz7WpYuF3Wa4zahws8iWx5SNgwhWzqFN2bF0S6w31fg
	4ucKaaS3jyrwYQFGEN/0rc4CVueVezIzYpA4VaPriQ2CibhmP82eqA4BICiZGcwKKdoxQ2+KTXU
	L6lrIc9xTiyofd83IF8iINDm9OVHVT1eUKWVanJ0sGBMSF3tBS8fsfQHjS4RgdvoeE7EBSAZ0tP
	hhw3S9Fh3eyxO5OLu9C7DcW3YD812lmtzwLWHSpG7kXMBlFRyfXiQwhz9cnl7Ycq4qY03bw7+lu
	8pZs/d1vb8vMlYjLO/ezgQz8A==
X-Received: by 2002:a05:600c:1391:b0:487:5c0:671f with SMTP id 5b1f17b1804b1-488d67e6a48mr367159565e9.9.1776339284903;
        Thu, 16 Apr 2026 04:34:44 -0700 (PDT)
Message-ID: <c48562eb-e22c-480d-a736-9037a8c6c2ca@suse.com>
Date: Thu, 16 Apr 2026 13:34:47 +0200
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH] xen/riscv: allow Xen to use SSTC while hiding it from
 guests
To: Oleksii Kurochko <oleksii.kurochko@gmail.com>
Cc: Romain Caritey <Romain.Caritey@microchip.com>,
 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.pau@citrix.com>,
 Stefano Stabellini <sstabellini@kernel.org>, xen-devel@lists.xenproject.org
References: <eba232ac5a338332ddedc2cb084e0c04ee8744c2.1775835741.git.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: <eba232ac5a338332ddedc2cb084e0c04ee8744c2.1775835741.git.oleksii.kurochko@gmail.com>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 7bit
X-purgate-ID: tlsNG-bad1c0/1776339285-9377AA53-4F344BFD/0/0
X-purgate-type: clean
X-purgate-size: 405

On 10.04.2026 17:45, Oleksii Kurochko wrote:
> --- a/xen/arch/riscv/include/asm/riscv_encoding.h
> +++ b/xen/arch/riscv/include/asm/riscv_encoding.h
> @@ -396,6 +396,8 @@
>  #define CSR_VSTVAL			0x243
>  #define CSR_VSIP			0x244
>  #define CSR_VSATP			0x280
> +#define CSR_VSTIMECMP		0x24d
> +#define CSR_VSTIMECMPH		0x25d

This list looks to be sorted numerically, which you now break.

Jan


From xen-devel-bounces@lists.xenproject.org Thu Apr 16 11:43:01 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 16 Apr 2026 11:43:01 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1283256.1565530 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wDL7X-0007Hl-Uv; Thu, 16 Apr 2026 11:42:55 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1283256.1565530; Thu, 16 Apr 2026 11:42: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 1wDL7X-0007He-SJ; Thu, 16 Apr 2026 11:42:55 +0000
Received: by outflank-mailman (input) for mailman id 1283256;
 Thu, 16 Apr 2026 11:42:54 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <jbeulich@suse.com>) id 1wDL7W-0007HY-39
 for xen-devel@lists.xenproject.org; Thu, 16 Apr 2026 11:42:54 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wDL7V-00CywG-8T
 for xen-devel@lists.xenproject.org; Thu, 16 Apr 2026 13:42:53 +0200
Received: from [10.42.69.6] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <jbeulich@suse.com>)
 id 69e0cb27-bab6-0a2a0a5309dd-0a2a45069736-44
 for <xen-devel@lists.xenproject.org>; Thu, 16 Apr 2026 13:42:53 +0200
Received: from [209.85.128.51] (helo=mail-wm1-f51.google.com)
 by tlsNG-16d1c6.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.1)
 (envelope-from <jbeulich@suse.com>)
 id 69e0cb3c-7371-0a2a45060019-d1558033f03c-3
 for <xen-devel@lists.xenproject.org>; Thu, 16 Apr 2026 13:42:53 +0200
Received: by mail-wm1-f51.google.com with SMTP id
 5b1f17b1804b1-488d2079582so73607185e9.2
 for <xen-devel@lists.xenproject.org>; Thu, 16 Apr 2026 04:42:53 -0700 (PDT)
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-488f4d92595sm32097165e9.0.2026.04.16.04.42.51
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Thu, 16 Apr 2026 04:42:52 -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=google header.d=suse.com header.i="@suse.com" header.h="Content-Transfer-Encoding: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=1776339772; x=1776944572; darn=lists.xenproject.org;
        h=content-transfer-encoding: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;
        bh=YYzOnfHsTvz6Oyt/Fh6G2zEZHHKphq4116UI7fduRD8=;
        b=KEwMUWIsEVjWQB0e7elH/h84S3/raMeBSxaqr4UiACvqPc1W3+PQLcfvbVNEwRkxMb
         a1zKQ/4F3dW6hHLaGhdeBvLTCAQL6UuXZXkQp/sk5sjqe2bsoTVFsW3IBnYS6M1/jXGN
         QedJUfrk/ibP4HfYeTlTJoc17RH3AMAZAvMSwAg447I9YM85ED8+rxnoXad150oqBNS/
         /A5K9Rmkcs9nhEHn7kgbbtjVFqdNowbAyU7wXSVpO1PYIPOnptOdVxd7iJ3rwARQ8xBL
         gCYgZQE0yM9qO9xtIpymZbli1/hTiWt9ZJw6BKuh+FM2l9Ux4pzwUIvso43iXKx+gKEs
         g1OA==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20251104; t=1776339772; x=1776944572;
        h=content-transfer-encoding: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;
        bh=YYzOnfHsTvz6Oyt/Fh6G2zEZHHKphq4116UI7fduRD8=;
        b=CL1CtlurgWurJGAlQ7hlSSA2Aul9GY0045/rvOmPL5aIZ8bNWrJYnyhMBmYrnTwkh1
         6SF6dP8Zx2tSkEcitEe0WXoDkfbvh5GNB8PIIg/420MX6PrF6yUtiNV5cxGdsBm6a3Us
         oX/rgOTZL5cQ5OUFcpo16mczEj2ejLIS50YlCPnxnhewtahcurtIcFwHI/vPJrLv7442
         B2at3TZT99aVs06UXnAH2RtrZ4h4GzgvzMWQaH8df3BPdLQoBNnwkiAdRjpKeq2SxUcv
         ZtrMgI8NXWkqc+S08WgitH4FZYO7h+MqpIMjBVSYBNAKgV8TdJhUk8V1zb2EEkhIAidZ
         8kvA==
X-Forwarded-Encrypted: i=1; AFNElJ+EJjNmWb0EWYKKnpJvB1om3bq5E9cGyRxEXAMOXxZLTUNTMOFPd1xww9uQ6Mei/f3LVdXgbKxxxGY=@lists.xenproject.org
X-Gm-Message-State: AOJu0YxN/sIf+BYatdfzIFc68F4vvqGccVxp6nDMLlviBTZ0E/NgVcDx
	t4T3rTPaE0LJRJMgfxzZ0j3Xvs08SESvVFJvMpwmFcoWnRy0Tz7DBvTSrm7BLIML0w==
X-Gm-Gg: AeBDievDH/fXS3RwxnWqWFDyvvERA7gfZE4LwG6MkXTf4d2aD0012de/HTcJf3SOYsW
	eiDAZ3fazOydaiJ9dNQ0JIA0lESiqFepGotUy1LWVHg7zPgB5jb87yuVZO4+QL/pF6/APRyma5R
	JazWPfAjYnnQrfemx0nKFitwftwSUYHaT2n6BuxEhszmWKAPj4mwNya88Gx5V5VD3v2Q4OWV2Pa
	QAuNl4OQs4Gd+ZFO7MMSEMOJ98eR20AJQHyUfDuMDdZB5eiXUPQDT7y/jpAFEjs74nRjFXmV/WA
	wcQv72BESHBPQO6otyYOmlr0cp1k47lqURwLzcpUMZPtk5xQOEIhOMhxQ0FEJcg69NZzW8HDxxL
	3NcnaQgTG62kMcFLVfge5voGxvl742uXG2v2gnuP7Isu7XPCZbifIsvgztYfLXkS+Mrl2HS/lzs
	a2L5CxklOIGBRVTl8lLAFnZJaBorHta7p7q2eOrHjz02pZw+QWk88+9UvM7qXB8kKbFmjxL3gfq
	FKnitfF3WrRMOT9f7if+yd1dg==
X-Received: by 2002:a05:600c:a109:b0:477:76bf:e1fb with SMTP id 5b1f17b1804b1-488d6843245mr261850735e9.16.1776339772521;
        Thu, 16 Apr 2026 04:42:52 -0700 (PDT)
Message-ID: <953a4d7a-95a0-4a11-b236-efdf21eb125c@suse.com>
Date: Thu, 16 Apr 2026 13:42:55 +0200
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH v1 10/27] xen/riscv: generate IMSIC DT node for guest
 domains
To: Oleksii Kurochko <oleksii.kurochko@gmail.com>
Cc: Romain Caritey <Romain.Caritey@microchip.com>,
 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.pau@citrix.com>,
 Stefano Stabellini <sstabellini@kernel.org>, xen-devel@lists.xenproject.org
References: <cover.1773157782.git.oleksii.kurochko@gmail.com>
 <8154eae081d14da89f27bad581270cc5bba6ccfc.1773157782.git.oleksii.kurochko@gmail.com>
 <93e8407e-cff0-42cc-8cfd-2d82f536a886@suse.com>
 <b2c8e859-a91a-469f-b674-0942d240f0d9@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: <b2c8e859-a91a-469f-b674-0942d240f0d9@gmail.com>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 7bit
X-purgate-ID: tlsNG-16d1c6/1776339773-91079D75-497DC4A3/0/0
X-purgate-type: clean
X-purgate-size: 1873

On 10.04.2026 17:40, Oleksii Kurochko wrote:
> On 4/1/26 5:05 PM, Jan Beulich wrote:
>> On 10.03.2026 18:08, Oleksii Kurochko wrote:
>>> Guests using the IMSIC interrupt controller require a corresponding
>>> Device Tree description. Add support for generating an IMSIC node when
>>> building the guest DT.
>>>
>>> Keep a reference to the host IMSIC DT node and reuse its compatible
>>> property while constructing the guest-visible node.
>>
>> Again raises a migration concern. Presumably a guest would then be able
>> to migrate only to other hosts with the same compatible property.
> 
> Right, but I don't think we can do too much and it is the simplest 
> approach just to migrate to hosts with the same compatible property.
> 
> If you concern is about DTS property then for IMSIC it will be always 
> riscv,imsics according to the RISC-V DT spec. (IIRC, the only other 
> option could be qemu,riscv). Actually, I can just hard code 
> "riscv,imsic" explicitly instead of re-using of host name.
> 
> If your concern is that we will migrate to a host which doesn't support 
> IMSIC at all then we should or (a) don't migrate to such host or (b) 
> provide an emulation of IMSIC. And option (b) would be terrible from at 
> least performance point of view.

That would all be only a secondary concern - in an IMSIC is needed right
now, so be it. My primary concern is with inheriting the host IMSIC's
properties.

>>> +static int __init imsic_set_interrupt_extended_prop(struct domain *d,
>>> +                                                    void *fdt)
>>> +{
>>> +    uint32_t len = 0, pos = 0, cpu, phandle;
>>
>> At least pos and cpu should be of fixed width types.
> 
> I thought that uint32_t is fixed width type, isn't it?

Oh, of course. Problem being: I meant "shouldn't". More generally, see
./CODING_STYLE.

Jan


From xen-devel-bounces@lists.xenproject.org Thu Apr 16 11:49:52 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 16 Apr 2026 11:49:52 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1283270.1565552 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wDLEA-00089G-MJ; Thu, 16 Apr 2026 11:49:46 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1283270.1565552; Thu, 16 Apr 2026 11:49: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 1wDLEA-000899-JV; Thu, 16 Apr 2026 11:49:46 +0000
Received: by outflank-mailman (input) for mailman id 1283270;
 Thu, 16 Apr 2026 11:49:45 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <jbeulich@suse.com>) id 1wDLE9-000893-Hk
 for xen-devel@lists.xenproject.org; Thu, 16 Apr 2026 11:49:45 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wDLE8-00D12u-Uf
 for xen-devel@lists.xenproject.org; Thu, 16 Apr 2026 13:49:44 +0200
Received: from [10.42.69.4] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <jbeulich@suse.com>)
 id 69e0ccd7-e002-0a2a0a5209dd-0a2a4504e8f6-4
 for <xen-devel@lists.xenproject.org>; Thu, 16 Apr 2026 13:49:44 +0200
Received: from [209.85.128.49] (helo=mail-wm1-f49.google.com)
 by tlsNG-ebf023.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.1)
 (envelope-from <jbeulich@suse.com>)
 id 69e0ccd8-1dec-0a2a45040019-d1558031b194-3
 for <xen-devel@lists.xenproject.org>; Thu, 16 Apr 2026 13:49:44 +0200
Received: by mail-wm1-f49.google.com with SMTP id
 5b1f17b1804b1-4888375f735so78687545e9.3
 for <xen-devel@lists.xenproject.org>; Thu, 16 Apr 2026 04:49:44 -0700 (PDT)
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-488f5818e51sm77362335e9.5.2026.04.16.04.49.43
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Thu, 16 Apr 2026 04:49:44 -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=google header.d=suse.com header.i="@suse.com" header.h="Content-Transfer-Encoding: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=1776340184; x=1776944984; darn=lists.xenproject.org;
        h=content-transfer-encoding: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;
        bh=QhOHlEhvv4HGcevTaThNTFIjZ2Z6EFJNbc7DpL7Dst8=;
        b=SklnUQZliS70G5Ib4pLcR6cAVTWlgzFWo7DjN4d1Tshmnu/cKkBazbiJO5lLtgveqd
         t2gnlXeaawBsS73T6uocTIwdaUJPojD2A0ukJU1tT3b4rd0JdF1pdtYgOEdBaAJumZQx
         l2yuzNiHGFKe0ocv21htWU9QbsaXYbmApYKELvcBGsbTYEmhVaTsaiAXMp0P+V9FmhR5
         zjk12Me8JQkGiNG8ITQk8XcOu1Ba+UbBafEED0QtZWSY2EtBEOt7ZXEA9yZQquG0281N
         Ty09MXZhFLURYSzE3Dgc3QGYNm7rW9pYt54BUoTGf8bU0w1wVp1bR0FcuxSz/G9DJfr1
         aUlg==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20251104; t=1776340184; x=1776944984;
        h=content-transfer-encoding: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;
        bh=QhOHlEhvv4HGcevTaThNTFIjZ2Z6EFJNbc7DpL7Dst8=;
        b=OjKJ8D9cNwrfzFRqxqNwZFq6hc7YRnm8emakZR/Jk8PSkWYyc1oWVs/vfAn1xTXlCh
         2FTZHWN6krIOZAzdyiVEWfHr4Gey57AMlrYIL3XlgpcNleKJlEICL3fOUeqz2wfMvj+J
         cwbE+O0vI/hQk+wkzoGqh/VQw1mftPm6DevW+LcyUDRyo3y1ZJRvUPsCZ9O5SQNXy1gW
         d4+8daKzZN+bfGo3Vl2KSl2InEXja3swQhOQW8fM73+HkK9hOpQp0UpwAzSI3wkrrqUD
         JBCwpVji7+RSUQdmBCVs0VIdN3FWigXhSisrkegcHuXsmTNpBvcboUeQxwh5X9Pi7JXt
         s3hA==
X-Forwarded-Encrypted: i=1; AFNElJ++tts3kVOTGS6YDc/sfvT6EttcxL6obzYcusSOJUIXiWOh6ioBkvujoqLhe/Iak8/P6CHTMJsuNa0=@lists.xenproject.org
X-Gm-Message-State: AOJu0YxIbTRj4bZJig2ZkPVRapy4qeB66CjfQHU4wJ+NJUwf8ebEK4Bw
	IxFf/Hb/Ai9Sq1L0vZPEa0nqlrz1wqT6Eey8pm37DpfGtontX4PpxETi1+xJFnT71A==
X-Gm-Gg: AeBDiesCIZRTESR1hFyCpQaLIK5V7DzjjWXXdIA7KqTbMtUknpOeJBEuGm3byZr3x5T
	wHfJFVNnqKsm//v6OI0kg9Y6ZU8P8dF4liosBITuOrxW8tbJp6+OV0ok1TKaK0sXCB5f3zrexno
	enZ+ghDydG9vn5MvmdFChPRQjlFkr4EZT96zdoFSR2dD22t+Qc723UaIAj+oF2ZUcEA60kzVdle
	qHYqBculKNXcLurCa+/Fba8PaKKB9sMZWzSYNq5Ib5F1EElnHV9RgOW8VBYG8aef+fFhKc+3+Dv
	CkXAwKgAwc7Yp60OnLtO4oOlEz2h9MnBv8HfkJpqbo5b6llhtVdKz03yZtUGu7GovwBsg6XQa0K
	+O4cGD/sq/Ey5IGhTHMkBF3NyvXm3vNAr+TnmEslS3QewsJtBWxwFSQ/mRM4FQ6BAgHx2+oSqBo
	HfxSX9T/+24/gncGXFwdvHMgFB2Th5KxZ2Ot+BIDij011DGIQrL0dQn+0RL5vnVo7FiEiegJLnb
	JEc89Vej3I6Zdmq3320cUpBMQ==
X-Received: by 2002:a05:600c:64c4:b0:485:39b2:a47c with SMTP id 5b1f17b1804b1-488d686892emr314937105e9.25.1776340184266;
        Thu, 16 Apr 2026 04:49:44 -0700 (PDT)
Message-ID: <7d022fea-0836-43b0-983d-5f7cb26a2e62@suse.com>
Date: Thu, 16 Apr 2026 13:49:47 +0200
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH v1 11/27] xen/riscv: create APLIC DT node for guest
 domains
To: Oleksii Kurochko <oleksii.kurochko@gmail.com>
Cc: Romain Caritey <Romain.Caritey@microchip.com>,
 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.pau@citrix.com>,
 Stefano Stabellini <sstabellini@kernel.org>, xen-devel@lists.xenproject.org
References: <cover.1773157782.git.oleksii.kurochko@gmail.com>
 <462b5f7dbe4e5084a35fb869b59327c6c92d1fbf.1773157782.git.oleksii.kurochko@gmail.com>
 <362d1e3a-409c-40ab-8d2c-36dc30a04b88@suse.com>
 <9fd04b0f-3b04-4f1e-ac63-de0fca57d466@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: <9fd04b0f-3b04-4f1e-ac63-de0fca57d466@gmail.com>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
X-purgate-ID: tlsNG-ebf023/1776340184-2A17E3FF-EF4555FE/0/0
X-purgate-type: clean
X-purgate-size: 2712

On 13.04.2026 10:43, Oleksii Kurochko wrote:
> On 4/1/26 5:16 PM, Jan Beulich wrote:
>> On 10.03.2026 18:08, Oleksii Kurochko wrote:
>>> +    res = fdt_property(fdt, "#interrupt-cells", data, len);
>>> +    if ( res )
>>> +        return res;
>>
>> So host properties are again directly handed through to the guest?
> 
> I am not sure that it can be different from what host has.
> 
>> Shouldn't the number of interrupts (aiui that's the "number of cells"
>> here) a guest gets be independent from the host it runs one?
> 
> The #interrupt-cells property specifies how many 32-bit values (cells) 
> are used to encode a single interrupt specifier when referencing this 
> interrupt controller from another device node.
> In this APLIC schema, it's fixed at const: 2, meaning every interrupt 
> reference requires exactly two cells — typically:
> 
> Cell 1 — the interrupt source number (which of the riscv,num-sources 
> wired inputs)
> Cell 2 — the interrupt type/trigger flags (e.g. edge vs. level, active 
> high/low)

So what if #interrupt-cells is 3 in the DT Xen is handed? If Xen can
cope, should that value really also be handed through to guests?

>>> +    regs = dt_get_property(aplic_node, "reg", &len);
>>> +    if ( !regs )
>>> +    {
>>> +        printk("%s: Can't find 'reg' property\n", aplic_node->full_name);
>>> +        return -FDT_ERR_XEN(ENOENT);
>>> +    }
>>> +
>>> +    res = fdt_property(fdt, "reg", regs, len);
>>> +    if ( res )
>>> +        return res;
>>> +
>>> +    data = dt_get_property(aplic_node, "riscv,num-sources", &len);
>>> +    if ( !data )
>>> +    {
>>> +        printk("%s: Can't find 'riscv,num-sources' property\n",
>>> +                aplic_node->full_name);
>>> +        return -FDT_ERR_XEN(ENOENT);
>>> +    }
>>> +
>>> +    res = fdt_property(fdt, "riscv,num-sources", data, len);
>>> +    if ( res )
>>> +        return res;
>>
>> Or maybe this is the number of interrupts?
> 
> This is the total count of hardware interrupt lines wired into this 
> APLIC domain.
> 
> It could be independent from the host it runs one but looking at the 
> possible range [1,1023] for this property if we will put for a guest 
> lets say 22 but new host support only 20 when we will be in a trouble 
> anyway.

Correct. But if you had some hosts with 1024 and some with 256, how
would you bring up a guest on the former to later be able to migrate
it to one of the latter when guests inherit the count from the host?

> It seems like it is another one thing where it will be needed to check 
> that new host has enough number of interrupts and then just deny 
> migration to such host.

Yes.

Jan


From xen-devel-bounces@lists.xenproject.org Thu Apr 16 12:06:32 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 16 Apr 2026 12:06:32 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1283295.1565570 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wDLUH-0002ib-98; Thu, 16 Apr 2026 12:06:25 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1283295.1565570; Thu, 16 Apr 2026 12:06: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 1wDLUH-0002iU-4t; Thu, 16 Apr 2026 12:06:25 +0000
Received: by outflank-mailman (input) for mailman id 1283295;
 Thu, 16 Apr 2026 12:06:24 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <jbeulich@suse.com>) id 1wDLUG-0002iO-7D
 for xen-devel@lists.xenproject.org; Thu, 16 Apr 2026 12:06:24 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wDLUF-00D5eX-KD
 for xen-devel@lists.xenproject.org; Thu, 16 Apr 2026 14:06:23 +0200
Received: from [10.42.69.6] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <jbeulich@suse.com>)
 id 69e0d0b7-2eae-0a2a0a5409dd-0a2a450684d6-20
 for <xen-devel@lists.xenproject.org>; Thu, 16 Apr 2026 14:06:23 +0200
Received: from [209.85.128.45] (helo=mail-wm1-f45.google.com)
 by tlsNG-16d1c6.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.1)
 (envelope-from <jbeulich@suse.com>)
 id 69e0d0bf-7371-0a2a45060019-d155802de15b-3
 for <xen-devel@lists.xenproject.org>; Thu, 16 Apr 2026 14:06:23 +0200
Received: by mail-wm1-f45.google.com with SMTP id
 5b1f17b1804b1-488a8ca4aadso94447865e9.3
 for <xen-devel@lists.xenproject.org>; Thu, 16 Apr 2026 05:06:23 -0700 (PDT)
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-488f5827da4sm46366075e9.14.2026.04.16.05.06.22
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Thu, 16 Apr 2026 05:06:22 -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=google header.d=suse.com header.i="@suse.com" header.h="Content-Transfer-Encoding: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=1776341183; x=1776945983; darn=lists.xenproject.org;
        h=content-transfer-encoding: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;
        bh=OSD3zUFx/ctCBb2wQKW1zDMHEnHeNUWwFMTWS59r6q0=;
        b=dynS7eHF5do3sI6aJzKwq6QcntWJvvk0njuYa3K1LkG4lLT0H4Fc4sIl2juYm0//9S
         vvm7rGneOwJHf7RLpLMQYAm97kLpQSrZFYzxCv5BwWOBP/AI1WYxoiecL3sF9SPcNZAv
         ZMV+3J8awfntnE4rbNgawMOv3E6EvLVIZSgDnzhmQR7os3XzeCjd4vphBsXI/XIjx08Z
         9MXe7TSzIT+zpTwM9hHQXatFCIN9SpEkFB0JluD44bjTcKaQMkfLIEDxqE5eAQaC7luk
         A2q6ih+tWSQx7KtssBZBAO6xq+jBSp8HWTT6xhSxV7u3uRWrT9EWpQKGZQ3B9gWF9whd
         KtzQ==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20251104; t=1776341183; x=1776945983;
        h=content-transfer-encoding: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;
        bh=OSD3zUFx/ctCBb2wQKW1zDMHEnHeNUWwFMTWS59r6q0=;
        b=reKAl7ckN4obSWiIuwHw4GdX9mUvCmmb6wZqailWAH97GqTQPnERBqt/w2mJ33NMbB
         bVo+s/bFSvpoaBPSQK8gzcVhyVXLyJD7vOv7+m8IOTQSFKvQqzmUO/7T9Vd00MRw7oYb
         2bdlDZoEGH7nq3NkMtCT5klDTKRJUZ9Wz6YEJ/mdQn/aH8uUAXfv+jubxLCgmYgNZbhR
         aHrcDIhc/Ik4gDkvCJWm4m6wHnWNVXUoexp+wD1viMxyWLRJ3k0tmeuNN36yuyawbcSb
         crg274f3bH9xZuw4gAwoTbwwptFpu33GG6heQOR6ChFWAlGD7MN94Av6ecx/rq9bao5u
         LQPw==
X-Forwarded-Encrypted: i=1; AFNElJ+YWZ9fO2ySXzITaAdQJkA7Er+gdEinzWvHlqV9LnyggykFoopCiGkfZchEJmShTaLD9JwgfJPXrrY=@lists.xenproject.org
X-Gm-Message-State: AOJu0YxbLaXG6rd7Fj6enBo/b0kYeQaiLKWDArrCwYgPa7stVt+BtM2f
	BWvU54avsOE3tJtekAa8zzx5LX7sbGSzOvzFH5RdN7HvqlQ0MCHWnsHJ8aPPjitMBw==
X-Gm-Gg: AeBDieux3rptmq/0pUnfvNYw9/EHknOxcyXfd8fJr29nEGVXJfVNnQsY9FIQtQPmWvK
	p7ubaEljg0TVlrmM3eBsweAG/FjBpjvOSfl7gORXLZD9gsM03D/eXh+EPEc7yEYrYpIphzfkEsM
	d+IYwzv0TnBglbrI9B+kSxXdrSzl5P+kSm0xxOCmZgSg02A2Ipu52bbj2dsXFHWv4wDKxUKZHUs
	hUljlwZdVxxSdRN/1+8DUqFLKMAQGb1pUM4lM+fm/7Aob/OCQYM2xch9ipxhxClZyQ+kIKwAMb0
	E9+z46YyThLVv4d5ZmD4jvGKFl2Qn/F6oyvSriKSlUKblAEppW2tc43dm8SaSVR3DiWaGPERpI2
	dGlhzolePTKEtXla2adM1lQCyEuypkeDE07LJxekBuXjbqkkvefnQgOURTgFVGQadPtTrXONroX
	e7HIBGsmfVMG2fkPjLuJGoZRtXYl8F9l7xpiO8fk1r91k15wUPFa2WMWontkXW2HzYUw9AJt3in
	004v817atXAGxn4Q7Q9sCaaTw==
X-Received: by 2002:a05:600c:4504:b0:485:3b9e:caa7 with SMTP id 5b1f17b1804b1-488d6864f6dmr354751795e9.23.1776341182858;
        Thu, 16 Apr 2026 05:06:22 -0700 (PDT)
Message-ID: <5c47f23b-6f51-41e1-b8a4-83f80882d97b@suse.com>
Date: Thu, 16 Apr 2026 14:06:25 +0200
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH v1 12/27] xen/riscv: introduce aia_init() and
 aia_available()
To: Oleksii Kurochko <oleksii.kurochko@gmail.com>
Cc: Romain Caritey <Romain.Caritey@microchip.com>,
 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.pau@citrix.com>,
 Stefano Stabellini <sstabellini@kernel.org>, xen-devel@lists.xenproject.org
References: <cover.1773157782.git.oleksii.kurochko@gmail.com>
 <74f15b1db86139b36b721ef9d12b998fe4f0f348.1773157782.git.oleksii.kurochko@gmail.com>
 <8393b8fe-6ba9-439c-ae15-a84409d0976d@suse.com>
 <e1be0f4d-5090-4f2c-a05b-30b9ed6e1490@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: <e1be0f4d-5090-4f2c-a05b-30b9ed6e1490@gmail.com>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 7bit
X-purgate-ID: tlsNG-16d1c6/1776341183-CFB7DD75-76376763/0/0
X-purgate-type: clean
X-purgate-size: 2345

On 13.04.2026 11:32, Oleksii Kurochko wrote:
> On 4/2/26 11:00 AM, Jan Beulich wrote:
>> On 10.03.2026 18:08, Oleksii Kurochko wrote:
>>> aia_init() is going to contain all the stuff related to AIA initialization.
>>> At the moment, it is just Check if SSAIA extension is available and if yes
>>> set is_aia_available to true.
>>
>> And (future) users of aia_available() can't directly call
>> riscv_isa_extension_available()? Nor can aia_available() be a convenience
>> wrapper around that call? It's only ...
>>
>>> --- /dev/null
>>> +++ b/xen/arch/riscv/aia.c
>>> @@ -0,0 +1,25 @@
>>> +/* SPDX-License-Identifier: GPL-2.0-only */
>>> +
>>> +#include <xen/errno.h>
>>> +#include <xen/init.h>
>>> +#include <xen/sections.h>
>>> +#include <xen/types.h>
>>> +
>>> +#include <asm/cpufeature.h>
>>> +
>>> +static bool __ro_after_init is_aia_available;
>>
>> ... a boolean, yes, but still.
> 
> My purpose was to have a variable which represent that AIA is 
> initialized properly. Maybe, it makes sense to rename this variable to 
> is_aia_inited.

I'm generally having trouble with the non-word "inited". How about
"aia_usable"? Fits ...

> The idea is that in future patches VGEIN will be also initialized in 
> aia_init() and if wasn't initialized properly then just keep 
> is_aia_availabe be set to false and in such case we will have that 
> is_aia_available != riscv_isa_extension_available(NULL, 
> RISCV_ISA_EXT_ssaia).

... this as well. And ...

> Note that regarding VGEIN it is arguable that it should be initialized 
> as generally it could be that there is no VGEIN what means that h/w 
> assisted guest interrupt files aren't available and s/w one should be 
> used. But s/w guest interrupt files aren't supported.
> So I mean that with the current implementation if VGEIN isn't 
> initialized I will tell that AIA isn't available what generally isn't 
> quite true.

... this. Question of course if what aia_usable (or whatever its name)
being set to false means to Xen's own operation. If Xen would still work
okay (without being able to create guests), perhaps the name may want to
be "aia_guest_usable" or some such. I.e. as I said on a number of
occasions: A variable wants to be named to accurately express its
purpose, without the name growing excessively long.

Jan


From xen-devel-bounces@lists.xenproject.org Thu Apr 16 12:21:50 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 16 Apr 2026 12:21:50 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1283311.1565579 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wDLj5-0005eb-G8; Thu, 16 Apr 2026 12:21:43 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1283311.1565579; Thu, 16 Apr 2026 12:21: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 1wDLj5-0005eU-CH; Thu, 16 Apr 2026 12:21:43 +0000
Received: by outflank-mailman (input) for mailman id 1283311;
 Thu, 16 Apr 2026 12:21:41 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <jbeulich@suse.com>) id 1wDLj3-0005eO-KE
 for xen-devel@lists.xenproject.org; Thu, 16 Apr 2026 12:21:41 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wDLj3-00Dsfg-16
 for xen-devel@lists.xenproject.org; Thu, 16 Apr 2026 14:21:41 +0200
Received: from [10.42.69.11] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <jbeulich@suse.com>)
 id 69e0d43e-bab6-0a2a0a5309dd-0a2a450bdada-36
 for <xen-devel@lists.xenproject.org>; Thu, 16 Apr 2026 14:21:40 +0200
Received: from [209.85.221.53] (helo=mail-wr1-f53.google.com)
 by tlsNG-42698a.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.1)
 (envelope-from <jbeulich@suse.com>)
 id 69e0d454-212f-0a2a450b0019-d155dd35b54a-3
 for <xen-devel@lists.xenproject.org>; Thu, 16 Apr 2026 14:21:40 +0200
Received: by mail-wr1-f53.google.com with SMTP id
 ffacd0b85a97d-43d73352cf2so4078066f8f.1
 for <xen-devel@lists.xenproject.org>; Thu, 16 Apr 2026 05:21:40 -0700 (PDT)
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-43ead3d5f11sm14373744f8f.18.2026.04.16.05.21.39
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Thu, 16 Apr 2026 05:21:39 -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=google header.d=suse.com header.i="@suse.com" header.h="Content-Transfer-Encoding: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=1776342100; x=1776946900; darn=lists.xenproject.org;
        h=content-transfer-encoding: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;
        bh=Jzka/KTnQChT2mJEPOM+6py4Rbv17O9g9qM1K9yBQXA=;
        b=E3LPcAKhSTTGFg//wiAGh//XJGcvzu821PvcYVtRMWpwPVjcSWtpW1H3vUavnL7GCf
         Pn/FQl1nTnX20gbCI1Sf7n6pJgEBAtG3TSfD0fbftVUrV+7SsUmPtOMbIM+JbPsXcRHu
         eiSBy4AWm2Tzuw/YTFZ5XQ8maDTFNxuFLbA7i6vW3TVQ/peoabtUoZPDKu/hg+CGbmVM
         0IXU23j4DBNSEttVdCOPEeQvGq1qKeJxdWrpUHCTpyndPAdoVhE5noSz7MiUFhuTstBP
         xvlFO+QDXiWRHO05L07yYwIo/TtbF3RLnrNJSmp6SUpiamk4/bbjwbv8DMuC2DhyPEl7
         6dig==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20251104; t=1776342100; x=1776946900;
        h=content-transfer-encoding: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;
        bh=Jzka/KTnQChT2mJEPOM+6py4Rbv17O9g9qM1K9yBQXA=;
        b=Ia4KhPCTXoSESAVfRFip++jrigjMtqUWtiyMjljTfs6Si/ocol969XR+8OSuv9ebmK
         D2kutZR7TM/VKGlqFHgilWEF27el7vMdutnOAsi/H1zXZ4AlwNdaM1Io+zlPoQJJllVX
         3p0+Cn8TAwisi8Czxm1/p2Md3t4uS7hwG2LDGnfzvBOVodlw/yeXUn7phZ/VLQp2Polt
         Y02TbttllUJflR72zHnwtLObrjj64WMCWqIDVu7vFQkgzIpLQAF6/lsGZSQ7Pp+Hg7xP
         5FsGjBW3uDSMWLrNvdfXjRHOr7TXCnn0k6czNSHuo+49J+1DAy+PBY/xuz+z9Bz4Sluq
         wFyQ==
X-Forwarded-Encrypted: i=1; AFNElJ/PbaTR4zVEVQFnB+gzth/nDCJusWaXRS2FmrIUUZdX+08iY635Z3tkZXpcUjB/dl3mMvEYlcs9Oxk=@lists.xenproject.org
X-Gm-Message-State: AOJu0YyXTrgx7C1rQGePsoxxuLZ/NGMvxkOHrbO/uTL+0jQqFBNAcCLq
	2YXOljENdK5iyER2Leg+KUxXHiL5b+LcWkaEpydWn3ISirnHJXBL6fZvhYEvjODtJA==
X-Gm-Gg: AeBDievXY8i8KFkKhNsVg/VMYme2tEQlsWsfLyIlOQN8H/SlZudr9SQFW/4k1Y1kqXT
	KyAP3n4kltjb9YknEhE33kN54h8dIuIjMHs67oZG4PGt6sBCCflwSUbZo4JuJNbskoNLE9uo459
	vWm6iGm76ZNdfaKjHx+f/xbb/HAONNYg4yi60d42mnd8OlyYKbfsimFhzeZD1SYL27TrU+s5t8D
	/QvX8xfikRW6RF4EWVov2/vM80upz4fqrJ19nEdy+pUx/6tv2bQKN0D12lKYh69T7MGtBO/vkHV
	aXXBquf4b077TIHm0yhSLs4dWNWkhbDBae9VTDyEsLG9obMyeBZSuBjqqQaYXOjAYcia7tIkfMM
	RrnbP9gR4PYqR8ZTKIsBk5UFxUN+aPqJDctO55SpM1W6lxDqznB0YHVUouAVghg6SGGJiS4GaG0
	hA8hyDqmA/LmQObcQNFZUMcg8GaEvxdWgO1c0QMmsntL0tAy0PGp5jgOtlzHXCVftKe/HjZ3xRA
	A5UcB21RNXKM8SrDKtG5QNgUg==
X-Received: by 2002:a05:6000:18a8:b0:43d:71b:204b with SMTP id ffacd0b85a97d-43d642cd3a0mr37033996f8f.39.1776342100111;
        Thu, 16 Apr 2026 05:21:40 -0700 (PDT)
Message-ID: <314c064b-88eb-497a-9022-2013125d63a9@suse.com>
Date: Thu, 16 Apr 2026 14:21:42 +0200
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH v1 13/27] xen/riscv: add basic VGEIN management for AIA
 guests
To: Oleksii Kurochko <oleksii.kurochko@gmail.com>
Cc: Romain Caritey <Romain.Caritey@microchip.com>,
 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.pau@citrix.com>,
 Stefano Stabellini <sstabellini@kernel.org>, xen-devel@lists.xenproject.org
References: <cover.1773157782.git.oleksii.kurochko@gmail.com>
 <f358325514c91c540e0edf992ca51414a1964fe0.1773157782.git.oleksii.kurochko@gmail.com>
 <09fed304-685c-46a9-9159-72baa1721224@suse.com>
 <4b977410-8d24-41c3-9c83-7d95637ddea3@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: <4b977410-8d24-41c3-9c83-7d95637ddea3@gmail.com>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 7bit
X-purgate-ID: tlsNG-42698a/1776342100-07175F3B-2B6E47E3/0/0
X-purgate-type: clean
X-purgate-size: 5759

On 13.04.2026 16:42, Oleksii Kurochko wrote:
> On 4/2/26 12:03 PM, Jan Beulich wrote:
>> On 10.03.2026 18:08, Oleksii Kurochko wrote:
>>> AIA provides a hardware-accelerated mechanism for delivering external
>>> interrupts to domains via "guest interrupt files" located in IMSIC.
>>> A single physical hart can implement multiple such files (up to GEILEN),
>>> allowing several virtual harts to receive interrupts directly from hardware
>>
>> Isn't use of such an optimization coming prematurely? Shouldn't this series
>> focus on getting basic functionality in place?
> 
> At the moment, we don't support only APLIC for guest interrupts as it 
> will require trap-and-emulation approach, so just from the start it was 
> decided to go with APLIC+IMSIC (IMSIC here as it only one interrupt 
> controller which exist and support VGEIN stuff at the momemnt) approach 
> and then when it will be needed back to only the case when APLIC is 
> supported.
> 
> Maybe, it was better to introduce in patch series where a lauching of 
> domain actually happens.
> 
> Considering that you've already made a review, I prefer then to have 
> this patch part of this patch series.

That's okay, but then please take my remark as an indication that once
again the patch description makes implications on what the reader knows
(without it being written down anywhere I'm aware of).

>>> @@ -14,12 +27,109 @@ bool aia_available(void)
>>>       return is_aia_available;
>>>   }
>>>   
>>> +int __init vgein_init(unsigned int cpu)
>>
>> If this needs invoking once per CPU being brought up, it can't be __init.
> 
> Yes, it is going to be called inside the secondary CPU bring-up function.
> 
> __init sections are removed much later, after all CPUs are brought up, 
> so it looks like that at the moment when secondary CPUs are being 
> brought up, __init still exists and can be called.

No. And I said so before. See XEN_SYSCTL_cpu_hotplug (and ignore it having
"hotplug" in the name, but merely consider that you can take CPUs offline
at runtime, and later bring them online again).

>> Also - static?
> 
> It isn't static because it will be called inside the secondary CPU 
> bring-up function.

As it doesn't need calling from the outside for the boot CPU, it's not
obvious why it would need calling from the outside for secondary ones.

>>> +{
>>> +    struct vgein_bmp *vgein = &per_cpu(vgein_bmp, cpu);
>>> +
>>> +    csr_write(CSR_HGEIE, -1UL);
>>> +    vgein->geilen = flsl(csr_read(CSR_HGEIE));
>>> +    csr_write(CSR_HGEIE, 0);
>>> +    if ( vgein->geilen )
>>> +        vgein->geilen--;
>>
>> I don't understand this. The "len" in "geilen" stands for "length", I suppose,
>> i.e. the number of bits. Hmm, the spec itself is inconsistent: "The number of
>> bits implemented in hgeip and hgeie for guest external interrupts is UNSPECIFIED
>> and may be zero. This number is known as GEILEN." This may or may not include
>> bit 0 (which is implemented, but r/o zero). Then saying "Hence, if GEILEN is
>> nonzero, bits GEILEN:1 shall be writable in ..." suggests 0 isn't included, but
>> that's not unambiguous.
> 
> But they explicitly wrote that: The least-significant bits are 
> implemented first, apart from bit 0. So bit 0 is explicitly excluded.

Fine, but not including it in anything named *LEN feels - as said - ambiguous.

>>> +    /*
>>> +     * All vCPU guest interrupt files are used and we don't support a case
>>> +     * when number of vCPU on 1 pCPU is bigger then geilen.
>>> +     */
>>
>> This wants checking in vgein_init() then. CPUs (beyond the boot one)
>> violating this should not be brought online.
> 
> It'll be nice. But we can't know how many vCPUs will be ran on pCPU when 
> vgein_init() is executed.

I don't understand: How does it matter how many vCPU-s will exist later on
(and will run wherever)?

>>> +    ASSERT(vgein_id < vgein_bmp->geilen);
>>
>> What if not bit is available? By asserting, you assume the caller will not
>> call here when no ID is available.
> 
> It is just a temporary ASSERT() (as we don't support software guest 
> interrupt files) because in general it is fine if there is no bit 
> available, it will just mean that that no physical hardware guest 
> interrupt file is assigned to the virtual hart, and software-based 
> emulation (a "software file") must be used to handle guest external 
> interrupts.
> 
> Will it be better to return 0 now here and just don't create a vCPU
> on ...
> 
>   Yet there is no caller of this function,
>> so how can one verify whether this assertion is appropriate?
> 
> ... the caller side when an assignment is expected to be happen?

Yes, you want to return errors for cases you can't handle. You wan to
assert on internal state only, not on anything controlled by a caller
outside of the hypervisor.

>>> +    bitmap_set(bmp, vgein_id, 1);
>>
>> __set_bit()?
> 
> I thought that it will be fine to use for bmp, bitmap_* functions(). 
> __set_bit is what is called inside bitmap_set().

Sure, but why make things look complicated? We use __set_bit() and
friends all over the place on bitmaps. bitmap_*() exist for the less
trivial cases.

>>> +    spin_unlock_irqrestore(&vgein_bmp->lock, flags);
>>> +
>>> +#ifdef VGEIN_DEBUG
>>> +    printk("%s: vgein_id(%u), xen_cpu%d_bmp=%#lx\n",
>>> +           __func__, vgen_id, v->processor, *vgein_bmp->bmp);
>>
>> I can't spot a difference from the message in vgein_assign(). How is one
>> to distinguish the two in a log?
> 
> By function name which is the first argument (__func__).

My general take is that in gprintk() use of __func__ may be okay, but
hardly anywhere else.

Jan


From xen-devel-bounces@lists.xenproject.org Thu Apr 16 12:31:18 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 16 Apr 2026 12:31:18 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1283322.1565586 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wDLsF-0007OI-9t; Thu, 16 Apr 2026 12:31:11 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1283322.1565586; Thu, 16 Apr 2026 12: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 1wDLsF-0007OB-6i; Thu, 16 Apr 2026 12:31:11 +0000
Received: by outflank-mailman (input) for mailman id 1283322;
 Thu, 16 Apr 2026 12:31:09 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <jbeulich@suse.com>) id 1wDLsD-0007Nz-CT
 for xen-devel@lists.xenproject.org; Thu, 16 Apr 2026 12:31:09 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wDLsC-005oDU-M4
 for xen-devel@lists.xenproject.org; Thu, 16 Apr 2026 14:31:08 +0200
Received: from [10.42.69.11] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <jbeulich@suse.com>)
 id 69e0d682-2eae-0a2a0a5409dd-0a2a450b9d60-40
 for <xen-devel@lists.xenproject.org>; Thu, 16 Apr 2026 14:31:08 +0200
Received: from [209.85.128.54] (helo=mail-wm1-f54.google.com)
 by tlsNG-42698a.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.1)
 (envelope-from <jbeulich@suse.com>)
 id 69e0d68c-212f-0a2a450b0019-d1558036d4f5-3
 for <xen-devel@lists.xenproject.org>; Thu, 16 Apr 2026 14:31:08 +0200
Received: by mail-wm1-f54.google.com with SMTP id
 5b1f17b1804b1-4852a9c6309so73374805e9.0
 for <xen-devel@lists.xenproject.org>; Thu, 16 Apr 2026 05:31:08 -0700 (PDT)
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-43ead3d5ea9sm13575920f8f.21.2026.04.16.05.31.07
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Thu, 16 Apr 2026 05:31:07 -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=google header.d=suse.com header.i="@suse.com" header.h="Content-Transfer-Encoding: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=1776342668; x=1776947468; darn=lists.xenproject.org;
        h=content-transfer-encoding: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;
        bh=+z7mr5PegBjzPJmf+gMBWEs27uwRwfeQjYjaEd1CrDc=;
        b=Ta5Ow/EccvmB1/JHgWtO81XuVcX540T22dVaxw3WQbKiZj6go3tF04Igkbx/Y8UwMr
         JkuiVRi9WM9LDRES8VcTv9Sv5AiDn3WOgabJVXRShGknMV3RaFaRM3SDsckqNLqi78vc
         3eTuoaNSzZNqzFvlCPP+uQlaCK8EsJsnyAvmfga5QqFOBfMFgJG3J113SpKcN+dzlbBP
         cxS0I4eF5aeELH/to6UExwmpWpPgqfyOQNhMvwwOWoP6TbVJj/6SxaFJ5PVA7iMGXUZF
         U/o7KTTyW1HcAPcnC60bvzITJIH7p8bOig92wXzM4mxDMpr3l3bGeCss0FK5Udm4kD+V
         E89g==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20251104; t=1776342668; x=1776947468;
        h=content-transfer-encoding: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;
        bh=+z7mr5PegBjzPJmf+gMBWEs27uwRwfeQjYjaEd1CrDc=;
        b=GKmGe87UC7n/EMdwN+0wQQNBnW7FVVieTu5cYUFJgT+aNQXr8CWWsu8WYUfwsTgHpS
         s0niD0BgnncRPMq3TOpgj6hMUlajCC3vjLWcmitBNzlpSTlMhlX0Tsxz1WG488bXkOR2
         Gcg5RaoY82LfpYb6tTg/GnJaL2U650bnP21RfaQMw0dtyY8Lcsu2ygksh6QtSMK5+fdv
         2bin8PiYaT389PkCVWl5sJVhZJzX7ocMAzxH5/Oh2LlMLT+h8lTq4nWNxhVlws/iyrSs
         cXGFRa6zVNmUvaTUXhvUQDsONWXyuBKFrARqDDpZ/QP4lLUvq/6p8Z9FdESFWEdnbAUT
         kzBw==
X-Forwarded-Encrypted: i=1; AFNElJ8Xprd7gM+mV3J73Y4AJyTADD7p7QY/g3UFILi2EJG933w5qFGjRorkwe8BCO5RMPvd56mvU8/Ps4Y=@lists.xenproject.org
X-Gm-Message-State: AOJu0Yy2Hux+hWSr2/pMsZsSrOAbWG3SiS/8b20GKouC/5ibUjC2iPi5
	ZcrYulEstWAMyaD9Mc6LlpTQd9s5CycTW1lpmYj7iFey+kyF6lgKJtGcZngu5Aq+HA==
X-Gm-Gg: AeBDieuKJDvFX0+WbK6/6ZMqPhdUy+P7pUTtIqwIS+OqKc3Ac7uJaiqGsiCLiPcK/6E
	KgDrcv3fiiSbbqjsNUA8GlKPWB1KDgyzhlfCYnLG0a6QkqK2k0M4N5FCzHNtxDVXrOecZRt5OTL
	5Wiy/8tMaFZJ3VDtEw9Ec+JH50lEfk9k5ZrOWlJ2FlIo5LMPrS3ddCH98as0Egdmiej93QuyOJ5
	2nWkQU0519TkHxN2YFKzDypWXwQ/0rNwVms0TenWIoikFbWSXWoAmTjfIQY5CccvTDZKLMrADQ8
	S/yCXx3lNvHSkHR7PrAeMPVLuj0UlMPGI+qTkPEmyOSCMAzHdaFroALf0B1toA5oifdpbpcihiQ
	hjQUIaoz88ddt7aoDhSyssD8CsqFdI9ZiInAIYdHvK6ZvgrE5MLjPdRXFRRh5sjS/1a/owzHpK0
	J8ylDsGTMhqcx/WDxa/ZNyFcTBjpvAGDN6d5Cw6kmz0mP7OVGMI5N8EHqyyOR/WGIWJq1mVcVFE
	XuBCO6hBHYoanMjG8X+vyryzw==
X-Received: by 2002:a05:600d:d:b0:485:ae14:8191 with SMTP id 5b1f17b1804b1-488d67b8da2mr274130685e9.5.1776342667690;
        Thu, 16 Apr 2026 05:31:07 -0700 (PDT)
Message-ID: <e3191a3b-5935-4150-b8fd-d51e7ced9887@suse.com>
Date: Thu, 16 Apr 2026 14:31:10 +0200
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH v1 14/27] xen/riscv: introduce per-vCPU IMSIC state
To: Oleksii Kurochko <oleksii.kurochko@gmail.com>
Cc: Romain Caritey <Romain.Caritey@microchip.com>,
 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.pau@citrix.com>,
 Stefano Stabellini <sstabellini@kernel.org>, xen-devel@lists.xenproject.org
References: <cover.1773157782.git.oleksii.kurochko@gmail.com>
 <8196fa8f000e384af697a44cb3d50ece966e82a7.1773157782.git.oleksii.kurochko@gmail.com>
 <1f5e262d-da1f-49a2-8e89-87fb714e51bf@suse.com>
 <2f555a8b-d058-41ca-80f8-ce3dc08edfbe@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: <2f555a8b-d058-41ca-80f8-ce3dc08edfbe@gmail.com>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 7bit
X-purgate-ID: tlsNG-42698a/1776342668-7E772F3B-9D956A63/0/0
X-purgate-type: clean
X-purgate-size: 3751

On 14.04.2026 11:22, Oleksii Kurochko wrote:
> On 4/2/26 1:31 PM, Jan Beulich wrote:
>> On 10.03.2026 18:08, Oleksii Kurochko wrote:
>>> Each vCPU interacting with the IMSIC requires state to track the
>>> associated guest interrupt file and its backing context.
>>>
>>> Introduce a per-vCPU structure to hold IMSIC-related state, including
>>> the guest interrupt file identifier and the CPU providing the backing
>>> VS-file. Access to the guest file identifier is protected by a lock.
>>>
>>> Initialize this structure during vCPU setup and store it in arch_vcpu.
>>> The initial state marks the VS-file as software-backed until it becomes
>>> associated with a physical CPU.
>>>
>>> Add helpers to retrieve and update the guest interrupt file identifier.
>>
>> Yet again a functions with no callers.
> 
> They will be called in follow-up patches.

In which case please provide some minimal information on the intended use.

>>> --- a/xen/arch/riscv/imsic.c
>>> +++ b/xen/arch/riscv/imsic.c
>>> @@ -59,6 +59,29 @@ do {                            \
>>>       csr_clear(CSR_SIREG, v);    \
>>>   } while (0)
>>>   
>>> +unsigned int vcpu_guest_file_id(const struct vcpu *v)
>>> +{
>>> +    struct imsic_state *imsic_state = v->arch.imsic_state;
>>> +    unsigned long flags;
>>> +    unsigned int vsfile_id;
>>> +
>>> +    read_lock_irqsave(&imsic_state->vsfile_lock, flags);
>>> +    vsfile_id = imsic_state->guest_file_id;
>>> +    read_unlock_irqrestore(&imsic_state->vsfile_lock, flags);
>>
>> What purpose does this locking have? Already ...
>>
>>> +    return vsfile_id;
>>
>> ... here the value can be stale, if indeed there is a chance of races.
>> Did you perhaps mean to use ACCESS_ONCE() here and where the value is
>> set?
> 
> ACCESS_ONCE() isn't guarantee only compiler re-ordering (as basically it 
> is just volatile-related stuff inisde the macros)?
> 
> Generally, I think that that guest_file_id is needed to be updated only 
> during migration of vCPU from one pCPU to another and I expect that 
> during this migration vCPU isn't active, so no one will want to read 
> imsic_state->guest_file_id. But on the other hand, there is:
>    bool imsic_has_interrupt(const struct vcpu *vcpu)
>    {
>    ...
>      /*
>       * The IMSIC SW-file directly injects interrupt via hvip so
>       * only check for interrupt when IMSIC VS-file is being used.
>       */
> 
>      read_lock_irqsave(&imsic_state->vsfile_lock, flags);
>      if ( imsic_state->vsfile_pcpu != NR_CPUS )
>          ret = !!(csr_read(CSR_HGEIP) & BIT(imsic_state->guest_file_id, 
> UL));
>      read_unlock_irqrestore(&imsic_state->vsfile_lock, flags);
>    ...
>    }
> which I think could be called in parallel with with migration, so then 
> still lock are needed.

None of this addresses my pointing out that the returned value will be
stale by the point the caller gets to look at it. Which in turn raises
said question about the use of a lock. If you read
imsic_state->guest_file_id atomically (i.e. excluding tearing of reads),
the value seen / used will be stale as with the lock in use. Unless of
course there's yet another aspect hidden somewhere in what is not being
explained.

>>> @@ -315,6 +338,25 @@ static int imsic_parse_node(const struct dt_device_node *node,
>>>       return 0;
>>>   }
>>>   
>>> +int __init vcpu_imsic_init(struct vcpu *v)
>>
>> __init for a function involved in setting up a vCPU?
> 
> Yes, it will be used during creationg of a vCPU.

And vCPU-s can be created post-boot, can't they? (Outside of dom0less
of course, but imo you really don't want to tie each and every function
to dom0less being the primary goal right now.)

Jan


From xen-devel-bounces@lists.xenproject.org Thu Apr 16 12:31:19 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 16 Apr 2026 12:31:19 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1283323.1565592 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wDLsF-0007Ui-OH; Thu, 16 Apr 2026 12:31:11 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1283323.1565592; Thu, 16 Apr 2026 12: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 1wDLsF-0007Ua-KI; Thu, 16 Apr 2026 12:31:11 +0000
Received: by outflank-mailman (input) for mailman id 1283323;
 Thu, 16 Apr 2026 12:31:10 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <jbeulich@suse.com>) id 1wDLsE-0007O5-OP
 for xen-devel@lists.xenproject.org; Thu, 16 Apr 2026 12:31:10 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wDLsE-00DuOX-5C
 for xen-devel@lists.xenproject.org; Thu, 16 Apr 2026 14:31:10 +0200
Received: from [10.42.69.10] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <jbeulich@suse.com>)
 id 69e0d67d-bab6-0a2a0a5309dd-0a2a450ac818-40
 for <xen-devel@lists.xenproject.org>; Thu, 16 Apr 2026 14:31:10 +0200
Received: from [209.85.218.47] (helo=mail-ej1-f47.google.com)
 by tlsNG-4011c0.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.1)
 (envelope-from <jbeulich@suse.com>)
 id 69e0d68d-56b3-0a2a450a0019-d155da2fe486-3
 for <xen-devel@lists.xenproject.org>; Thu, 16 Apr 2026 14:31:10 +0200
Received: by mail-ej1-f47.google.com with SMTP id
 a640c23a62f3a-b8d7f22d405so1296842066b.0
 for <xen-devel@lists.xenproject.org>; Thu, 16 Apr 2026 05:31:10 -0700 (PDT)
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-43ead3d5ea9sm13575920f8f.21.2026.04.16.05.31.07
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Thu, 16 Apr 2026 05:31:08 -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=google header.d=suse.com header.i="@suse.com" header.h="Content-Transfer-Encoding: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=1776342669; x=1776947469; darn=lists.xenproject.org;
        h=content-transfer-encoding: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;
        bh=+z7mr5PegBjzPJmf+gMBWEs27uwRwfeQjYjaEd1CrDc=;
        b=ckZbMshm5n3OtYDlqqtFAzInedn3+6fULq5DOI4HicyKilvil6ak/cr0D2LokYCQ43
         jbccL1hLwcHJG12v0MMSWe0OrccLSMSvF8xEtUZeQEL6PbCxNtY1VaK2SHA8mmvs4Vh9
         NSwLuWRRL5K57nj2LqpBF3i95p2VBdG9i0EmzwqycyiwAVOumwNPmvQ+74I77cS2fTEu
         bNpS7nhILNXbEANfLhAmJbJs6ND3CuwENCdSw4aKjwCCmK/7VbQQaiKKXeauB48wAZXB
         iTEofTGn/Vsx7KVnlhZa9lESYpRPi9UVOqItkvTFuEY+4A3L2ceNekA9/2yBQklI/v/f
         tpxQ==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20251104; t=1776342669; x=1776947469;
        h=content-transfer-encoding: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;
        bh=+z7mr5PegBjzPJmf+gMBWEs27uwRwfeQjYjaEd1CrDc=;
        b=MQ12pNHkf4KM+H1b8KSQYarShserIRalHjCTqP1BTtsPPwYhRQwAnhqmszzsgM7+ES
         O8CdFh2tnamsVoFiynbf+ZKrtzhT36C+h071dQFgu+75xeQn45Jtjsm6lHTWu6XJJCER
         rHZxC9mnhVQoEQD1q73ng84rhdGUawSqDm1aeYE657aJPO94ANT2RUAHU9OLf6wh74qr
         //xan9RFuaVFYYyqNXFJQ23h4O28241gcvO2n39Xi1J++ggjyBH24vGVcUVWEaYpo8l5
         y16JNfIRsIl/Ghi5yWRP0v3mLKWKD9wNN+fbIbz0Jp1N0Iz9ZkcPc85ZeMLK3rtj5r/N
         Yhsw==
X-Forwarded-Encrypted: i=1; AFNElJ9oyYaN8iGJI626/WmWy6wTW0SMAJJzC+RP6WhQj9JdUKDZ+UdOLiDrlOA5yJZaiB/3luspyIotqGc=@lists.xenproject.org
X-Gm-Message-State: AOJu0Yx16KbZ+b+HUd0PIGIkJOX4cKydRZ3pXfz15UBy6tYonR9dFO2I
	jVxrY85HxmfKC+L8cuR/5ivUG+Flh9XP4ZFBw9ub8kCsmo/l1Q0b5jQy313WxgQ+Qw==
X-Gm-Gg: AeBDiesvkwFmNe6LgMUBxrXY0xAknop5Obk/S0P9tB9lFdz/pCuraxsGOx6qFHSW7Df
	05a2ljAobVcuG7LxjehJWctTXlYk2n2oPmswnN/rKcLO9MJQbf/5ICFXmGcvPPpZXOczSq5dzQr
	nc7tGWExLCDny0wlftv5neJT07EMnK1I50Vh20La5WF4AmBMAq7G9kKXfhFH4K0nFZQUATWoeH5
	Qcz11ALwOct07VHV2AL4NGy+UAfqRYWyHEi4Yh3EH5Yp7yp7YAyV7d8XDITDFX8U+Io+Ttw8bV1
	WRXLRWJEZoFg43WFNmfvY1r91dpYn9m4Pjd2CcvdhxGfaqqS1T7aMRlDM1PQI/bY7Y0dYnczc9j
	R1dBPMd8ZLg94LUztWdoxQsjU9EFurORxDb/bnVHVO8uVr+6zPUfREgmZzK5zwUO0i2Nwy3jknq
	Dv0bM96fQS1dtvQuPAuEk/x4erPtatIiheLLeo5mpnLgGV4FBOAE7KHv5znbiC8cjkss/RhlP6/
	7rtLEd4CgQYpgCs7W64sgQXLQ==
X-Received: by 2002:a17:907:3e88:b0:b97:c684:57db with SMTP id a640c23a62f3a-b9d72792a5dmr1567254566b.12.1776342668917;
        Thu, 16 Apr 2026 05:31:08 -0700 (PDT)
Message-ID: <bd50afd3-6399-4c6b-b05d-d86ee4b8643e@suse.com>
Date: Thu, 16 Apr 2026 14:31:10 +0200
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH v1 14/27] xen/riscv: introduce per-vCPU IMSIC state
To: Oleksii Kurochko <oleksii.kurochko@gmail.com>
Cc: Romain Caritey <Romain.Caritey@microchip.com>,
 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.pau@citrix.com>,
 Stefano Stabellini <sstabellini@kernel.org>, xen-devel@lists.xenproject.org
References: <cover.1773157782.git.oleksii.kurochko@gmail.com>
 <8196fa8f000e384af697a44cb3d50ece966e82a7.1773157782.git.oleksii.kurochko@gmail.com>
 <1f5e262d-da1f-49a2-8e89-87fb714e51bf@suse.com>
 <2f555a8b-d058-41ca-80f8-ce3dc08edfbe@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: <2f555a8b-d058-41ca-80f8-ce3dc08edfbe@gmail.com>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 7bit
X-purgate-ID: tlsNG-4011c0/1776342670-45B6F8B7-D94EC8C3/0/0
X-purgate-type: clean
X-purgate-size: 3751

On 14.04.2026 11:22, Oleksii Kurochko wrote:
> On 4/2/26 1:31 PM, Jan Beulich wrote:
>> On 10.03.2026 18:08, Oleksii Kurochko wrote:
>>> Each vCPU interacting with the IMSIC requires state to track the
>>> associated guest interrupt file and its backing context.
>>>
>>> Introduce a per-vCPU structure to hold IMSIC-related state, including
>>> the guest interrupt file identifier and the CPU providing the backing
>>> VS-file. Access to the guest file identifier is protected by a lock.
>>>
>>> Initialize this structure during vCPU setup and store it in arch_vcpu.
>>> The initial state marks the VS-file as software-backed until it becomes
>>> associated with a physical CPU.
>>>
>>> Add helpers to retrieve and update the guest interrupt file identifier.
>>
>> Yet again a functions with no callers.
> 
> They will be called in follow-up patches.

In which case please provide some minimal information on the intended use.

>>> --- a/xen/arch/riscv/imsic.c
>>> +++ b/xen/arch/riscv/imsic.c
>>> @@ -59,6 +59,29 @@ do {                            \
>>>       csr_clear(CSR_SIREG, v);    \
>>>   } while (0)
>>>   
>>> +unsigned int vcpu_guest_file_id(const struct vcpu *v)
>>> +{
>>> +    struct imsic_state *imsic_state = v->arch.imsic_state;
>>> +    unsigned long flags;
>>> +    unsigned int vsfile_id;
>>> +
>>> +    read_lock_irqsave(&imsic_state->vsfile_lock, flags);
>>> +    vsfile_id = imsic_state->guest_file_id;
>>> +    read_unlock_irqrestore(&imsic_state->vsfile_lock, flags);
>>
>> What purpose does this locking have? Already ...
>>
>>> +    return vsfile_id;
>>
>> ... here the value can be stale, if indeed there is a chance of races.
>> Did you perhaps mean to use ACCESS_ONCE() here and where the value is
>> set?
> 
> ACCESS_ONCE() isn't guarantee only compiler re-ordering (as basically it 
> is just volatile-related stuff inisde the macros)?
> 
> Generally, I think that that guest_file_id is needed to be updated only 
> during migration of vCPU from one pCPU to another and I expect that 
> during this migration vCPU isn't active, so no one will want to read 
> imsic_state->guest_file_id. But on the other hand, there is:
>    bool imsic_has_interrupt(const struct vcpu *vcpu)
>    {
>    ...
>      /*
>       * The IMSIC SW-file directly injects interrupt via hvip so
>       * only check for interrupt when IMSIC VS-file is being used.
>       */
> 
>      read_lock_irqsave(&imsic_state->vsfile_lock, flags);
>      if ( imsic_state->vsfile_pcpu != NR_CPUS )
>          ret = !!(csr_read(CSR_HGEIP) & BIT(imsic_state->guest_file_id, 
> UL));
>      read_unlock_irqrestore(&imsic_state->vsfile_lock, flags);
>    ...
>    }
> which I think could be called in parallel with with migration, so then 
> still lock are needed.

None of this addresses my pointing out that the returned value will be
stale by the point the caller gets to look at it. Which in turn raises
said question about the use of a lock. If you read
imsic_state->guest_file_id atomically (i.e. excluding tearing of reads),
the value seen / used will be stale as with the lock in use. Unless of
course there's yet another aspect hidden somewhere in what is not being
explained.

>>> @@ -315,6 +338,25 @@ static int imsic_parse_node(const struct dt_device_node *node,
>>>       return 0;
>>>   }
>>>   
>>> +int __init vcpu_imsic_init(struct vcpu *v)
>>
>> __init for a function involved in setting up a vCPU?
> 
> Yes, it will be used during creationg of a vCPU.

And vCPU-s can be created post-boot, can't they? (Outside of dom0less
of course, but imo you really don't want to tie each and every function
to dom0less being the primary goal right now.)

Jan


From xen-devel-bounces@lists.xenproject.org Thu Apr 16 12:42:53 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 16 Apr 2026 12:42:53 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1283353.1565604 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wDM3O-0001Pp-OP; Thu, 16 Apr 2026 12:42:42 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1283353.1565604; Thu, 16 Apr 2026 12:42: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 1wDM3O-0001Pi-Lm; Thu, 16 Apr 2026 12:42:42 +0000
Received: by outflank-mailman (input) for mailman id 1283353;
 Thu, 16 Apr 2026 12:42:41 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <jbeulich@suse.com>) id 1wDM3M-0001Pc-Vi
 for xen-devel@lists.xenproject.org; Thu, 16 Apr 2026 12:42:41 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wDM3L-0010mU-Sq
 for xen-devel@lists.xenproject.org; Thu, 16 Apr 2026 14:42:39 +0200
Received: from [10.42.69.10] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <jbeulich@suse.com>)
 id 69e0d930-bab6-0a2a0a5309dd-0a2a450ae2d8-38
 for <xen-devel@lists.xenproject.org>; Thu, 16 Apr 2026 14:42:39 +0200
Received: from [209.85.128.49] (helo=mail-wm1-f49.google.com)
 by tlsNG-4011c0.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.1)
 (envelope-from <jbeulich@suse.com>)
 id 69e0d93f-56b3-0a2a450a0019-d1558031b1f4-3
 for <xen-devel@lists.xenproject.org>; Thu, 16 Apr 2026 14:42:39 +0200
Received: by mail-wm1-f49.google.com with SMTP id
 5b1f17b1804b1-4888375f735so79319245e9.3
 for <xen-devel@lists.xenproject.org>; Thu, 16 Apr 2026 05:42:39 -0700 (PDT)
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-488f5818d70sm85572595e9.4.2026.04.16.05.42.38
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Thu, 16 Apr 2026 05:42:38 -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=google header.d=suse.com header.i="@suse.com" header.h="Content-Transfer-Encoding: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=1776343359; x=1776948159; darn=lists.xenproject.org;
        h=content-transfer-encoding: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;
        bh=USu/+LOPn8sXbq7XMENtWJaw1hDBemDmdviQ/wN4M3g=;
        b=TQCNYStRnk/UEppDapTmP5zO3a2axXYAQH6iUffsHAMNLyUbKwSHnsDNPWN/fD+809
         F8XyYEPF6lOvcYycOn8uAADBcDmpBFBnEa3sasfU2zAmyAYmWtiA01Qpwf7OL33V23m8
         +h+ohwPdgN9Twxe/xDCZRZ6Y+jGiJkZw6TAN/L4aXWfCuJACTIo3wearh2mRf7qcvcb8
         qQpdATQ21x9jXqoxzXam356IWVObLfLZ5YilSgsjuwMiLJF/PxaKkYg2N3fJxw4P0HWR
         NsQekpUWmL8Zq0eAoRRT94CLgzLzC7PLpCRz4R04ACXoT7BO2d2leAh6kIknv1UmZuqd
         BmHQ==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20251104; t=1776343359; x=1776948159;
        h=content-transfer-encoding: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;
        bh=USu/+LOPn8sXbq7XMENtWJaw1hDBemDmdviQ/wN4M3g=;
        b=N9YiAXCXS1vBXrQZOkNiiUpQWFQR8UAqfCP5hnTNPP8Sb5qo+6+BZrkLFbOPfxhIhB
         rkaH/fQfqnLBOltGl95LiFvwu+mCyEsbo8IPTx7ya+LmKJCcN2FaAkNJCDdcwyUFI8jX
         h8WokPgRM8iI4yEPEfZ+lo1063tJzl8Qcz+1/btndoi55MkoTjTbUcJuBHekvCt6VqSl
         r5VwR3CJrU4xfaH11x66NIMDeUC+NyJiZXBZTJCISXq30E67YBImjZF5FxQ91aaR2iVD
         nXnftiu5Y+9gyqDbMwBB4e/UmeFo6+WQW3UP8/2JLG765Tw2VUa87mfw4Ze3zQxieN+f
         QUUQ==
X-Forwarded-Encrypted: i=1; AFNElJ/JYQhHyUAzX71dgH+HTI/ayknytofUfngz40W58aHNwn109YKB0rB71mAHFulzJE8pBj64SGSXi/I=@lists.xenproject.org
X-Gm-Message-State: AOJu0YyOlRKijVpqNoUNbzfdNr0zjjXdxAk/mvC+9irgb4sgpf255c7h
	z4lBgzMrUeThdcM3POm+rrU57+DzUxPUzCifBmBsPC6NuVVvDzgV34Xw3BzU9HLpfw==
X-Gm-Gg: AeBDietcszea2Xjs+Zyedc/O7shig5uF8uqPrK4D771KtXfHhAZoyh0j/thf6E+UGEA
	orEhEdT00CUvJySJ/tp+EOm2ZdW4PZeG4c7DGa7/F52bonJz3nDbg+WEkTUMCEpljwBzKMv3kFR
	1aafFmnRNb6jO2p1NjVzBTyGMNyTqP2z+hE+UjcLetik6xfUAsGWt4vMPtncJkXHiBpwLfRUqPd
	+dbTvRmEPWjhwNgie/imUSPPTAs6tlLpHIcJE7qCra/w9PymdZZHoMCBdaIxX7NC1YUtcvSnv2m
	CnlS2RRFHOejF+xdaY4zYJogeCts188VNUabJZq83gkiL3shzWrwmSVkECh/IsmgC97Z4uI2TQn
	DPHzCILPcMxY0lGkr3sAp6JL1o+owgD+2sD3KetESb0/QzaLoXM+5LBXgSF87Kan6+4onOE71JR
	SJQhBduDyD/xoyfBmDDe2EJYA0SiZav67Vh+FxJcKMScMPSLbiCVSuPIKBqkbNKX1+KRdHy8JnL
	3tz1uFukcpKaUKjHOijdc0gtZhonBXiqZdg
X-Received: by 2002:a05:600c:c08e:b0:480:3ad0:93bf with SMTP id 5b1f17b1804b1-488d6864d41mr250459315e9.24.1776343358940;
        Thu, 16 Apr 2026 05:42:38 -0700 (PDT)
Message-ID: <da07da74-220a-4dbb-84fc-2e7aeb6b19df@suse.com>
Date: Thu, 16 Apr 2026 14:42:41 +0200
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH v1 15/27] xen/riscv: add very early virtual APLIC (vAPLIC)
 initialization support
To: Oleksii Kurochko <oleksii.kurochko@gmail.com>
Cc: Romain Caritey <Romain.Caritey@microchip.com>,
 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.pau@citrix.com>,
 Stefano Stabellini <sstabellini@kernel.org>, xen-devel@lists.xenproject.org
References: <cover.1773157782.git.oleksii.kurochko@gmail.com>
 <e8bcf5618a19fb44d4391410f2f67ffd98a96647.1773157782.git.oleksii.kurochko@gmail.com>
 <44cb3124-8972-4a0c-b785-64f2022f178b@suse.com>
 <a324161d-f8b4-47fe-b5ac-52df6060e45b@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: <a324161d-f8b4-47fe-b5ac-52df6060e45b@gmail.com>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 7bit
X-purgate-ID: tlsNG-4011c0/1776343359-445648B7-8D279A63/0/0
X-purgate-type: clean
X-purgate-size: 4284

On 14.04.2026 12:27, Oleksii Kurochko wrote:
> On 4/2/26 1:58 PM, Jan Beulich wrote:
>> On 10.03.2026 18:08, Oleksii Kurochko wrote:
>>> @@ -47,6 +48,19 @@ struct intc_hw_operations {
>>>                               const struct dt_device_node *intc);
>>>   };
>>> +
>>> +struct vintc {
>>> +    const struct intc_info *info;
>>
>> Isn't this referencing a physical INTC's structure? Why would the virtual
>> one's properties have to match that of the physical one?
> 
> It is because of how vAPLIC emulation load and store is working.

Thank you very much. This fully explains things, the more that of course
emulation of loads and stores comes earlier in this series. Oleksii,
really, please.

>>> +struct vaplic {
>>> +    struct vintc base;
>>
>> How does "base" fit with the type of the field?
> 
> The field name base is a idiom for embedding a "base class" struct as 
> the first member, enabling a form of inheritance.
> 
> Any suggestion how to rename it better?

vintc?

>>> --- /dev/null
>>> +++ b/xen/arch/riscv/vaplic.c
>>> @@ -0,0 +1,74 @@
>>> +/* SPDX-License-Identifier: MIT */
>>> +/*
>>> + * xen/arch/riscv/vaplic.c
>>> + *
>>> + * Virtual RISC-V Advanced Platform-Level Interrupt Controller support
>>> + *
>>> + * Copyright (c) Microchip.
>>> + * Copyright (c) Vates
>>> + */
>>> +
>>> +#include <xen/errno.h>
>>> +#include <xen/sched.h>
>>> +#include <xen/xvmalloc.h>
>>> +
>>> +#include <asm/aia.h>
>>> +#include <asm/imsic.h>
>>> +#include <asm/intc.h>
>>> +#include <asm/vaplic.h>
>>> +
>>> +#include "aplic-priv.h"
>>> +
>>> +static int __init cf_check vcpu_vaplic_init(struct vcpu *v)
>>> +{
>>> +    int rc = 0;
>>> +
>>> +    rc = vcpu_imsic_init(v);
>>> +    if ( rc )
>>> +        return rc;
>>> +
>>> +    imsic_set_guest_file_id(v, vgein_assign(v));
>>
>> And vgein_assign() can't fail? (Rhetorical question - of course it can. That
>> function shouldn't assert that it can fine a valid ID.)
> 
> Technically it can't fail (except some bug of course), this function 
> should in general return 0 (when there aren't left h/w IDs)

Which is "failure".

> or something > 0 (when there are some h/w IDs).

Which is "success".

> ASSERT() inside it was added only 
> because of ...
> 
>> But then - aren't you limiting the number of vCPU-s a host can handle by the
>> number vgein IDs?
> 
> ... At the moment, I am limiting because S/W interrutps guest files 
> (IDs) aren't supported.

As before - return error codes when errors occur.

>>> +static struct vintc * __init vaplic_alloc(void)
>>> +{
>>> +    struct vaplic *v = NULL;
>>
>> Onve again - why the initializer? In fact, ...
>>
>>> +    v = xvzalloc(struct vaplic);
>>
>> ... this could be the initializer.
> 
> Sure, I will use it as initializer.
> 
>>
>>> +    if ( !v )
>>> +        return NULL;
>>> +
>>> +    return &v->base;
>>> +}
>>
>> If you returned and ...
>>
>>> +int __init domain_vaplic_init(struct domain *d)
>>> +{
>>> +    int ret = 0;
>>> +
>>> +    d->arch.vintc = vaplic_alloc();
>>
>> ... stored struct vaplic *, the slightly odd to_vaplic() macro wouldn't
>> be needed.
> 
> vaplic_alloc() return struct vintc *,

Which is what I'm putting under question. Why would a function of this name
return anything else than struct vaplic *?

> which is then used by to_vaplic() 
> to get struct vaplic *.

And which is what I'm saying can be avoided.

>>> +    if ( !d->arch.vintc )
>>> +    {
>>> +        ret = -ENOMEM;
>>> +        goto fail;
>>
>> Nit: goto when simply return could be used.
>>
>>> +    }
>>> +
>>> +    d->arch.vintc->ops = &vaplic_ops;
>>
>> Are other kinds of ops structures going to appear? If not, why the extra
>> indirection?
> 
> At the moment, no I don't see any other kinds of ops struct. It was just 
> convenient way to group them and then easier to initialize them - just 
> one assignment instead of addinng a separate line in domain_vaplic_init().

Maybe I wasn't as clear as I should have been: Why the indirection when it
doesn't abstract anything? I.e. why the "ops" field in the first place,
when everyone could access the global (until such time that abstraction
becomes necessary)?

Jan


From xen-devel-bounces@lists.xenproject.org Thu Apr 16 12:51:40 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 16 Apr 2026 12:51:40 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1283369.1565614 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wDMC0-0003Ev-Jc; Thu, 16 Apr 2026 12:51:36 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1283369.1565614; Thu, 16 Apr 2026 12:51: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 1wDMC0-0003El-Fc; Thu, 16 Apr 2026 12:51:36 +0000
Received: by outflank-mailman (input) for mailman id 1283369;
 Thu, 16 Apr 2026 12:51:35 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <xakep.amatop@gmail.com>) id 1wDMBy-0003Ef-QE
 for xen-devel@lists.xenproject.org; Thu, 16 Apr 2026 12:51:34 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wDMBw-00E95X-L2
 for xen-devel@lists.xenproject.org; Thu, 16 Apr 2026 14:51:34 +0200
Received: from [10.42.69.7] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <xakep.amatop@gmail.com>)
 id 69e0db4a-e002-0a2a0a5209dd-0a2a4507a988-44
 for <xen-devel@lists.xenproject.org>; Thu, 16 Apr 2026 14:51:34 +0200
Received: from [209.85.208.54] (helo=mail-ed1-f54.google.com)
 by tlsNG-ef75cf.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.1)
 (envelope-from <xakep.amatop@gmail.com>)
 id 69e0db55-229c-0a2a45070019-d155d036d155-3
 for <xen-devel@lists.xenproject.org>; Thu, 16 Apr 2026 14:51:34 +0200
Received: by mail-ed1-f54.google.com with SMTP id
 4fb4d7f45d1cf-671ae79e617so5532583a12.3
 for <xen-devel@lists.xenproject.org>; Thu, 16 Apr 2026 05:51:34 -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=20251104 header.d=gmail.com header.i="@gmail.com" header.h="Content-Transfer-Encoding:To:Subject:Message-ID:Date:From:In-Reply-To:References:MIME-Version"
ARC-Seal: i=1; a=rsa-sha256; t=1776343893; cv=none;
        d=google.com; s=arc-20240605;
        b=eKZ1q8EHPRm3Cc8RXay4BVUCGkGYBtSawVd1xz9STYMlQFnU5//hEvZwC3VPw9BB2W
         dErJh64bJmIfm3K3QsfevMjia+zuerxpEl/18PDDwzahCWWL82Kd4jMH+vn45Nc1pdkb
         ILN9TAtzxQhWjb3Wg5jQ+rq5X35E0GCcqnKCIunUHzHwEszXZra9eRruj5RFpeSJQEVO
         9QNO6JAgWgvIGqr4l42rayM3GpK8HJvqfPdumW3P31tUlgbhrpVGxhbowzYbJPJSzpSC
         Jdntrj1uoDseHTrCBO9E15X0i/rWBK6I5O5wRoyRd+/O006NiKb5IlZkDHUum4p6/ia0
         1PCA==
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20240605;
        h=content-transfer-encoding:to:subject:message-id:date:from
         :in-reply-to:references:mime-version:dkim-signature;
        bh=uWWJ9mP4NDk9cmYvS5SgrgvtiEhcfJ12dbTuCvEl8X0=;
        fh=BxAOn7jMslPpxCh+ZwJ42wvijNvg8M+sVi4YM41sbzk=;
        b=hybbjYEtvg66sgGIGilQxPJcBElmsl1ddcxhlZ/djyOxqzUgl3jmsQx57HHcLvpuiJ
         m0okqjwDGGkEYx77Ez7pNp9MoinbmW6t4/0vHfSIvSWCh5iI+BidX2yt00plHXqrmkqD
         Q6S5A+pnu1jfXEOSiEQp9dyW5LeXtjUpULxGgesNwUs3y6Ie14MkipDN8u/ExCzc/I9v
         mfB/x0VvrjLidjYWp4Crb2qkQGq+dBHbcKcwCmUmBq+yp0AEnuXeAoWOjJUcSH2xO/SO
         Kd6S5QwtGD9XdXS134ZD2+QXlocwNlu95UK6NkzAz3w2bKt0ZI1I98eCMnbfH3G5TuUG
         AJlQ==;
        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=20251104; t=1776343893; x=1776948693; darn=lists.xenproject.org;
        h=content-transfer-encoding:to:subject:message-id:date:from
         :in-reply-to:references:mime-version:from:to:cc:subject:date
         :message-id:reply-to;
        bh=uWWJ9mP4NDk9cmYvS5SgrgvtiEhcfJ12dbTuCvEl8X0=;
        b=OdWHYW00cyXXeWa0ca74tlQmnSHKEn6x1Q1uZcUwI1xOc0jHEb5UkU24JCZbVx7nkY
         I3HbdV0xfQZnq8PJb95Fdn1b5DHopsmZd5lGlDcqoVXmfU+x3OZFSKgPdbMY7QfZdKoF
         CXUfVrcSDOo1xKCGQfcHDMS/AmtGI1JRY75B50jAvhnEtSssBFu0bOdKpP3nFMgF+G+M
         cmAAtFssYfqp/ZtsJZdbo3Dhv+lq12CTEhfLTQ/HfAwJbaQPI64xmMc75WUvR3pO42N8
         1JbRbdL+lteDDr9veyVTs6wYei95nO3A84Vm+0RcUtA7Kf+6KTq2gGDjnyIB4w2BZnFB
         zUPw==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20251104; t=1776343893; x=1776948693;
        h=content-transfer-encoding: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;
        bh=uWWJ9mP4NDk9cmYvS5SgrgvtiEhcfJ12dbTuCvEl8X0=;
        b=Ns2hFNJMPFyJBCuWaLPo9X7KyypL9iFCZNmn1ZgErUU5aDjAStflkVleQZTBneK5CO
         4hqNZcz3gRPS9hU0bnV+iJVcj+lkQeDCuSQbDf/BE1buPDDYJEZPS8VEgp3G/1nDCKHE
         HzynGkUYRuQHh5R/inNHwV8gPz0y4X2LYcp+StwgNF0KGh4z7ocpao/HG5fo8KSLHyDG
         T50zghCQ0r5zVG6NIJbyfwksCYcEez6H0wcbgIeCYUizTI8eIPkosPywNInQyDbQboLJ
         usJ3DsZBL3CQ0FsyNncrq/XPqito4XM5LhLRKm7Guq5KRb3ZhAERm9pehjUuALk6z3pF
         iTUQ==
X-Gm-Message-State: AOJu0Yx4FwB8iju2KLqLyntJrmsD5IrsF8V7cVm6CzjwKNsYj4U1nAT6
	Yi0HAIcvWL/IX5DYymLl2QAK+KVsmNoz0xVgT0v0i9FNDue1d/5Rc3l1iT8gaYAKnejeE/bGGj2
	9wGdBVGDkSi2QLgUJu34cweLvc4iAivbJAHC0
X-Gm-Gg: AeBDiesvEC3+tI72qqb0eOwOnnaWMEmv/YhkXfiJ28XvaCcmtzX8bG6Uk4F+8QPGFTg
	mrhaSCpv22AV+4H2XzjqoQzIutBc+JD8aWCNXAigYOZplvDGraRx4qxKDBKYSPcsHi/fd/HF8jg
	SgU6ssVaUwAWdc/unzc9Mg5RvMvIeayidts6afxecIV389vTKr0T5366GNHb5Rmj+4yaZU4zUI2
	9V3OUMVr6So4BxPPF9TAvKIpOknrWPXxymhBdumzshuiXT7Ldp7p94j0909iD8pPGrnhti6MRAk
	YhqJvGcva+n4KXX+Vw==
X-Received: by 2002:a17:907:848:b0:b9d:1670:6794 with SMTP id
 a640c23a62f3a-b9d729bc9d5mr1332158166b.35.1776343892565; Thu, 16 Apr 2026
 05:51:32 -0700 (PDT)
MIME-Version: 1.0
References: <cover.1775125380.git.mykola_kvach@epam.com>
In-Reply-To: <cover.1775125380.git.mykola_kvach@epam.com>
From: Mykola Kvach <xakep.amatop@gmail.com>
Date: Thu, 16 Apr 2026 15:51:19 +0300
X-Gm-Features: AQROBzCXb_sn7BntMTwyQVG-72fbLmBAK4nVwRUIbr_john-FM3-bB9YxeaMzNo
Message-ID: <CAGeoDV-FXvFvrH5sWb=dO9rWrj6H2SA_cWEDB6d+fo9OkiukHg@mail.gmail.com>
Subject: PING: Re: [PATCH v8 00/13] Add initial Xen Suspend-to-RAM support on ARM64
To: Xen-devel <xen-devel@lists.xenproject.org>
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: quoted-printable
X-purgate-ID: tlsNG-ef75cf/1776343894-2BF7EC48-1967113E/0/0
X-purgate-type: clean
X-purgate-size: 5859

Hi all,

A gentle ping on this series. It's been a couple of weeks since v8 was post=
ed.

Please let me know if there are any further comments or if anything else is
needed from my side to move this forward.

Thanks!

Best regards,
Mykola

On Thu, Apr 2, 2026 at 1:47=E2=80=AFPM Mykola Kvach <xakep.amatop@gmail.com=
> wrote:
>
> From: Mykola Kvach <mykola_kvach@epam.com>
>
> This is part 2 of version 8 of the ARM Xen system suspend/resume patch
> series, based on earlier work by Mirela Simonovic and Mykyta Poturai.
>
> The first part is in mainline.
>
> NOTE: Most of the code is guarded by CONFIG_SYSTEM_SUSPEND, which can
> currently only be selected when UNSUPPORTED is set, and thus the
> functionality is neither enabled by default nor even built.
>
> This version is ported to Xen master and includes extensive improvements
> based on reviewer feedback. The patch series restructures code to improve
> robustness, maintainability, and implements system Suspend-to-RAM support
> on ARM64 hardware/control domains.
>
> Key updates in this series:
>  - Introduced architecture-specific suspend/resume infrastructure
>  - Integrated GICv2/GICv3 suspend and resume, including memory-backed con=
text
>    save/restore with error handling
>  - Added time and IRQ suspend/resume hooks, ensuring correct timer/interr=
upt
>    state across suspend cycles
>  - Implemented proper PSCI SYSTEM_SUSPEND invocation and version checks
>  - Improved state management and recovery in error cases during suspend/r=
esume
>  - Added support for IPMMU-VMSA/SMMUv3 context save/restore
>  - Added support for GICv3 eSPI registers context save/restore
>  - Added support for ITS registers context save/restore
> ---
>
> TODOs:
>  - Enable "xl suspend" support on ARM
>  - Add suspend/resume CI test for ARM (QEMU if feasible)
>  - PCI suspend ?
> ---
>
> Detailed changelogs can be found in each patch.
>
> Changes in v8:
> - Rebased to latest master and refreshed the series accordingly.
> - Added a new GICv3 patch to tolerate retained redistributor LPI state
>   across CPU_OFF/CPU_ON.
> - GICv2 suspend now disables the CPU interface and distributor before
>   saving state.
> - GICv3 suspend/resume fixes the redistributor base used for LPI state.
> - ITS and SMMUv3 suspend/resume paths were tightened, with safer
>   restore/rollback handling and stricter fatal-error handling.
> - System suspend now checks that all domains are already in
>   SHUTDOWN_suspend before proceeding, and renames the hardware-domain
>   suspend capability/helper for clearer semantics.
> - Fixed alignment/cleanup issues in the low-level suspend/resume code.
>
> Changes in v7:
> - Timer helper renamed/clarified; virtual/hyper/phys handling documented.
> - GICv2 uses one context block; restore saved CTLR; panic on alloc failur=
e.
> - GICv3/eSPI/ITS always suspend/resume; restore LPI/eSPI; rdist timeout.
> - IPMMU suspend context allocated before PCI setup.
> - System suspend: control domain drives host suspend.
> - Dropped v6 IRQ descriptor restore patches; use setup_irq and re-registe=
r
>   local IRQs on resume instead.
>
> For earlier changelogs, please refer to the previous cover letters.
>
> Mirela Simonovic (6):
>   xen/arm: Add suspend and resume timer helpers
>   xen/arm: gic-v2: Implement GIC suspend/resume functions
>   xen/arm: Resume memory management on Xen resume
>   xen/arm: Save/restore context on suspend/resume
>   xen/arm: Implement PSCI SYSTEM_SUSPEND call (host interface)
>   xen/arm: Add support for system suspend triggered by hardware domain
>
> Mykola Kvach (6):
>   xen/arm: gic-v3: tolerate retained redistributor LPI state across
>     CPU_OFF
>   xen/arm: gic-v3: Implement GICv3 suspend/resume functions
>   xen/arm: gic-v3: add ITS suspend/resume support
>   xen/arm: tee: keep init_tee_secondary() for hotplug and resume
>   xen/arm: ffa: fix notification SRI across CPU hotplug/suspend
>   arm/smmu-v3: add suspend/resume handlers
>
> Oleksandr Tyshchenko (1):
>   iommu/ipmmu-vmsa: Implement suspend/resume callbacks
>
>  xen/arch/arm/Kconfig                     |   2 +
>  xen/arch/arm/Makefile                    |   1 +
>  xen/arch/arm/arm64/head.S                | 112 ++++++++
>  xen/arch/arm/gic-v2.c                    | 132 +++++++++
>  xen/arch/arm/gic-v3-its.c                | 126 +++++++-
>  xen/arch/arm/gic-v3-lpi.c                |  80 +++++-
>  xen/arch/arm/gic-v3.c                    | 349 ++++++++++++++++++++++-
>  xen/arch/arm/gic.c                       |  29 ++
>  xen/arch/arm/include/asm/gic.h           |  12 +
>  xen/arch/arm/include/asm/gic_v3_defs.h   |   1 +
>  xen/arch/arm/include/asm/gic_v3_its.h    |  24 ++
>  xen/arch/arm/include/asm/mm.h            |   2 +
>  xen/arch/arm/include/asm/psci.h          |   1 +
>  xen/arch/arm/include/asm/suspend.h       |  31 ++
>  xen/arch/arm/include/asm/time.h          |   5 +
>  xen/arch/arm/mmu/smpboot.c               |   2 +-
>  xen/arch/arm/psci.c                      |  23 +-
>  xen/arch/arm/suspend.c                   | 195 +++++++++++++
>  xen/arch/arm/tee/ffa_notif.c             |  63 +++-
>  xen/arch/arm/tee/tee.c                   |   2 +-
>  xen/arch/arm/time.c                      |  44 ++-
>  xen/arch/arm/vpsci.c                     |  12 +-
>  xen/common/Kconfig                       |   3 +
>  xen/common/domain.c                      |   7 +-
>  xen/drivers/passthrough/arm/ipmmu-vmsa.c | 305 +++++++++++++++++++-
>  xen/drivers/passthrough/arm/smmu-v3.c    | 172 ++++++++---
>  xen/drivers/passthrough/arm/smmu.c       |  10 +
>  xen/include/xen/list.h                   |  14 +
>  28 files changed, 1670 insertions(+), 89 deletions(-)
>  create mode 100644 xen/arch/arm/suspend.c
>
> --
> 2.43.0


From xen-devel-bounces@lists.xenproject.org Thu Apr 16 12:51:49 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 16 Apr 2026 12:51:49 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1283373.1565624 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wDMCC-0003Wl-Vr; Thu, 16 Apr 2026 12:51:48 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1283373.1565624; Thu, 16 Apr 2026 12:51: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 1wDMCC-0003Wc-Qg; Thu, 16 Apr 2026 12:51:48 +0000
Received: by outflank-mailman (input) for mailman id 1283373;
 Thu, 16 Apr 2026 12:51:47 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <jbeulich@suse.com>) id 1wDMCB-0003Vt-3T
 for xen-devel@lists.xenproject.org; Thu, 16 Apr 2026 12:51:47 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wDMCA-00GoP7-FO
 for xen-devel@lists.xenproject.org; Thu, 16 Apr 2026 14:51:46 +0200
Received: from [10.42.69.1] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <jbeulich@suse.com>)
 id 69e0db60-5cb7-0a2a0a5109dd-0a2a4501e7e4-10
 for <xen-devel@lists.xenproject.org>; Thu, 16 Apr 2026 14:51:46 +0200
Received: from [209.85.128.50] (helo=mail-wm1-f50.google.com)
 by tlsNG-d62444.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.1)
 (envelope-from <jbeulich@suse.com>)
 id 69e0db62-c1f2-0a2a45010019-d1558032c88f-3
 for <xen-devel@lists.xenproject.org>; Thu, 16 Apr 2026 14:51:46 +0200
Received: by mail-wm1-f50.google.com with SMTP id
 5b1f17b1804b1-48897fd88ebso80670755e9.2
 for <xen-devel@lists.xenproject.org>; Thu, 16 Apr 2026 05:51:46 -0700 (PDT)
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-43ead3e00b3sm12535087f8f.27.2026.04.16.05.51.45
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Thu, 16 Apr 2026 05:51:45 -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=google header.d=suse.com header.i="@suse.com" header.h="Content-Transfer-Encoding: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=1776343906; x=1776948706; darn=lists.xenproject.org;
        h=content-transfer-encoding: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;
        bh=Te7eclu3Vfc7uQiDT3eQyqbf+4nTfGvhFkekv7OZ1BI=;
        b=LgnRlycflwh1N/wHGL/o7O36zN+tu2DzTnvrvJebzPkSMEkFunnsUsEgdt3xbAAg1f
         IXk/qQeoeFoJ9RPzEzdQ3WuWvRouS13x2CRNXQSchNjeFnwtM6LqvL3dBVSOPq6JfRM+
         TVhJRwQr0l3lk58Hkkv13COO2bwBLe2ZEQoeAYSxX+lY3+rD7S9X1wwKZHNgzjZKUTT6
         rnVoOomPS5+oBQUm34we4x761nZgL4WYuHj/xZIcDRapOs1MyS8CnTIqUaWBJOYwkxGi
         wfY+9n5YQGrdsiS2UcF791Rwdi9N9Tz/+hPnYR2fpFKZ6iVC8eHasdmJL/m/HaBAQPcV
         VvPA==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20251104; t=1776343906; x=1776948706;
        h=content-transfer-encoding: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;
        bh=Te7eclu3Vfc7uQiDT3eQyqbf+4nTfGvhFkekv7OZ1BI=;
        b=lc1HMAHc6dt2jwoJx5rDjZ/K2RE7Bv6itC7tbWqdfBQoRmMndx4scaAUIaDu8cDDUd
         bQ4OVDO4EwfopXE/Lq+p9uMxLpK9Z1dkttQSPMSuVJ5vvWJnplsoUzw04UDHVXcC9Uu9
         IdmxEVI6wbjIQGA3PCUdCUE0hElVPX8q04bN2/xCw9FGig8bN+PVmuCU8nNJlPDshqfo
         BeG8vGbQrdAkFkjSBvcjNu+r1V3XtTjS9vo7ZAiFwxsT6TFoEHP8cEyMVsJl2SPk1CH7
         Uxv8lgrVQAOxZVpKXk523yqCGfgkQsXRbXrgUyx9TDD6ALlk9CnQ4cTSPD2Q6ZjDPZ26
         Y8yQ==
X-Forwarded-Encrypted: i=1; AFNElJ9+5iJhmj2AzqPiG8hCeGmQ/vVKSvATaASJNlkZfK5cTU4FI33vHs/dXNYklbGcGxFY6PVqOcwVjwA=@lists.xenproject.org
X-Gm-Message-State: AOJu0YyolscPReM1LskjPHbSSK4bMlhtKh3WVpxZIFDRIMWl9UIPu17F
	SFhAym6ydamTqCBFguPtU4x6TIl9T28oWMtn3i8nOkmyeZb7vCPzd+jaOIjzT1N/JLp0+cYWBJB
	cNqxNTQ==
X-Gm-Gg: AeBDiesoCzQoi393Tg/E+ZJSdp7+oAugSsWX12QjDY7iRxwEMxtFGdMe6MnbfPltFAD
	qvt3ZBOpYBh1kf4ff88NUJBLE2nMZ/ILSb0pHTDYG9DuNqWrEXwgXBxTjhnEJY4QeG6qG0IlfaN
	8Up0Mimh4jn4AkgnTg7GXwKoby4qZCnmgMf3YIpD+PSpuL98I5d12kBUH56asGA6Nj/Q1Z93TPO
	FkMNIqSuPrGFmBxJ7OZ/DZeFCkAx+BrB1oLvgcUT8Fyh+WDr1nVWtsbZYsfu05jbI49fbUTjZlS
	EsK2SbyOHX22jJC86S9M0jqAh3qGnqL6m7XJZUWzzKFIU4dB14fxe/lyRyK9hBmcVK+MvUo+fJa
	ZtfoLZzcWic8LzMinJjMhvMQcAOHHUsZP2GY5DYMc4941XErhSABMA8zSk5KqvJWn7yLs0QgmIP
	ATk/ieg8HGa3BbkVEWKhYPMCz6pRMADCTWtGnPWmUhw+RpnNeR8yXGsVGFMy8/l3eA18ER+qWoh
	9fK4Uj2lY/jcC7ydKOvf3pfxNrj4HOr+MEm
X-Received: by 2002:a05:600c:64c4:b0:486:fbd1:9dc0 with SMTP id 5b1f17b1804b1-488d68c2c56mr319036285e9.22.1776343905675;
        Thu, 16 Apr 2026 05:51:45 -0700 (PDT)
Message-ID: <a7a4e8c9-d053-4ca7-ac9c-f43ddccf9151@suse.com>
Date: Thu, 16 Apr 2026 14:51:48 +0200
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH v1 16/27] xen/riscv: implement IRQ mapping for device
 passthrough
To: Oleksii Kurochko <oleksii.kurochko@gmail.com>
Cc: Romain Caritey <Romain.Caritey@microchip.com>,
 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.pau@citrix.com>,
 Stefano Stabellini <sstabellini@kernel.org>, xen-devel@lists.xenproject.org
References: <cover.1773157782.git.oleksii.kurochko@gmail.com>
 <10654a6c38fa929b5fdf6f214badfe4f60fe78d4.1773157782.git.oleksii.kurochko@gmail.com>
 <8a8a2afd-6f53-4f45-b8c8-fb34a6fbb970@suse.com>
 <f099b925-0ea9-43a7-b760-f70f343a4d7c@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: <f099b925-0ea9-43a7-b760-f70f343a4d7c@gmail.com>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 7bit
X-purgate-ID: tlsNG-d62444/1776343906-BDE6BFF4-7F7E20B3/0/0
X-purgate-type: clean
X-purgate-size: 6916

On 14.04.2026 13:29, Oleksii Kurochko wrote:
> On 4/2/26 2:22 PM, Jan Beulich wrote:
>> On 10.03.2026 18:08, Oleksii Kurochko wrote:
>>> --- a/xen/arch/riscv/include/asm/setup.h
>>> +++ b/xen/arch/riscv/include/asm/setup.h
>>> @@ -5,6 +5,10 @@
>>>   
>>>   #include <xen/types.h>
>>>   
>>> +struct domain;
>>> +struct dt_device_node;
>>> +struct rangeset;
>>> +
>>>   #define max_init_domid (0)
>>>   
>>>   void setup_mm(void);
>>> @@ -13,6 +17,19 @@ void copy_from_paddr(void *dst, paddr_t paddr, unsigned long len);
>>>   
>>>   void init_csr_masks(void);
>>>   
>>> +/* TODO: move somewhere to common header? */
>>
>> Counter question: Why ...
>>
>>> +/*
>>> + * Retrieves the interrupts configuration from a device tree node and maps
>>> + * those interrupts to the target domain.
>>> + *
>>> + * Returns:
>>> + *   < 0 error
>>> + *   0   success
>>> + */
>>> +int map_device_irqs_to_domain(struct domain *d, struct dt_device_node *dev,
>>> +                              bool need_mapping,
>>> +                              struct rangeset *irq_ranges);
>>
>> ... is this not an inline function, when ...
>>
>>> --- a/xen/arch/riscv/intc.c
>>> +++ b/xen/arch/riscv/intc.c
>>> @@ -79,3 +79,11 @@ int __init intc_make_domu_dt_node(const struct kernel_info *kinfo)
>>>   
>>>       return -ENOSYS;
>>>   }
>>> +
>>> +int map_device_irqs_to_domain(struct domain *d, struct dt_device_node *dev,
>>> +                              bool need_mapping,
>>> +                              struct rangeset *irq_ranges)
>>> +{
>>> +    return d->arch.vintc->ops->map_device_irqs_to_domain(d, dev, need_mapping,
>>> +                                                         irq_ranges);
>>> +}
>>
>> ... it's merely a wrapper around an indirect function call? And then the
>> function isn't used anywhere anyway.
> 
> It is used by dom0less common code and it is a wrapper because Arm has 
> different implementation and Arm doesn't have 
> map_device_irqs_to_domain() in its virtual interrupt controller operations.

But the question wasn't why this is a wrapper, but why this wrapper isn't an
inline function.

>>> +int vaplic_map_device_irqs_to_domain(struct domain *d,
>>> +                                     struct dt_device_node *dev,
>>> +                                     bool need_mapping,
>>> +                                     struct rangeset *irq_ranges)
>>> +{
>>> +    unsigned int i, nirq;
>>> +    int res, irq;
>>> +    struct dt_raw_irq rirq;
>>> +    uint32_t *auth_irq_bmp = d->arch.vintc->private;
>>> +    unsigned int reg_num;
>>> +
>>> +    nirq = dt_number_of_irq(dev);
>>> +
>>> +    /* Give permission and map IRQs */
>>> +    for ( i = 0; i < nirq; i++ )
>>> +    {
>>> +        res = dt_device_get_raw_irq(dev, i, &rirq);
>>> +        if ( res )
>>> +        {
>>> +            printk(XENLOG_ERR "Unable to retrieve irq %u for %s\n",
>>> +                   i, dt_node_full_name(dev));
>>> +            return res;
>>> +        }
>>> +
>>> +        /*
>>> +         * Don't map IRQ that have no physical meaning
>>> +         * ie: IRQ whose controller is not APLIC/IMSIC/PLIC.
>>> +         */
>>> +        if ( rirq.controller != dt_interrupt_controller )
>>> +        {
>>> +            dt_dprintk("irq %u not connected to primary controller."
>>> +                       "Connected to %s\n", i,
>>> +                       dt_node_full_name(rirq.controller));
>>> +            continue;
>>> +        }
>>> +
>>> +        irq = platform_get_irq(dev, i);
>>> +        if ( irq < 0 )
>>> +        {
>>> +            printk("Unable to get irq %u for %s\n", i, dt_node_full_name(dev));
>>> +            return irq;
>>> +        }
>>> +
>>> +        res = irq_permit_access(d, irq);
>>> +        if ( res )
>>> +        {
>>> +            printk(XENLOG_ERR "Unable to permit to %pd access to IRQ %u\n", d,
>>> +                   irq);
>>
>> This time the other way around: %d please with plain int. (Again at least
>> once further down.)
>>
>>> +            return res;
>>> +        }
>>> +
>>> +        reg_num = irq / APLIC_NUM_REGS;
>>> +
>>> +        if ( is_irq_shared_among_domains(d, irq) )
>>> +        {
>>> +            printk("%s: Shared IRQ isn't supported\n", __func__);
>>> +            return -EINVAL;
>>> +        }
>>> +
>>> +        auth_irq_bmp[reg_num] |= BIT(irq % APLIC_NUM_REGS, U);
>>
>> ... all of this leaves me with the impression that IRQ numbering isn't really
>> virtualized. IRQs are merely split into groups, one group per domain (and
>> maybe some unused). How are you going to fit in truly virtual IRQs?
> 
> What do you mean by truly virtual IRQs?

Ones where no aspects are represented by any piece of hardware.

> I can't totally agree that the current approach isn't use virtual IRQs, 
> yes, they are 1:1 mapped but on the other side Xen is responsible to 
> give an IRQ number for guest's device and Xen is responsible that guest 
> isn't trying to reach IRQ which not belongs to it.

In a non-virtualized environment I expect IRQs are going to be "sparse"
(i.e. with perhaps large blocks of items used elsewhere). If you had
proper translation of IRQ numbers, the same could be true for your
guests.

>>> +        dt_dprintk("  - IRQ: %u\n", irq);
>>> +
>>> +        if ( irq_ranges )
>>> +        {
>>> +            res = rangeset_add_singleton(irq_ranges, irq);
>>> +            if ( res )
>>> +                return res;
>>> +        }
>>
>> What is irq_ranges?
> 
> IIUC based on Arm code irq_ranges is an optional output accumulator, the 
> caller allocates and passes it in when it needs to track which IRQs were 
> mapped (overlay use case), or passes NULL when that tracking is not needed.
> 
> I added here as map_device_irqs_to_domain() is called from the common 
> code and so maybe one day someone will decide to pass irq_ranges to this 
> functions. At the moment, for RISC-V it is the only one user of 
> map_device_irqs_to_domain() and it passes NULL.

Simply assert then that it's NULL?

>>> @@ -34,6 +142,7 @@ static int __init cf_check vcpu_vaplic_init(struct vcpu *v)
>>>   
>>>   static const struct vintc_ops vaplic_ops = {
>>>       .vcpu_init = vcpu_vaplic_init,
>>> +    .map_device_irqs_to_domain = vaplic_map_device_irqs_to_domain,
>>>   };
>>
>> What about the inverse function, needed for domain cleanup?
> 
> I planned to add it when it will be really needed. At the momemnt, I 
> don't have such use cases.

I.e. if any domain needs re-starting, the entire system needs rebooting?
Recall that "dom0less" is slightly misleading a name, as it only allows
there to not be a Dom0. One can be there, and hence re-starting a crashed
domain ought to be possible. For that, you need to correctly clean up
after the crashed one.

Jan


From xen-devel-bounces@lists.xenproject.org Thu Apr 16 12:51:59 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 16 Apr 2026 12:51:59 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1283377.1565631 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wDMCN-0003uQ-5B; Thu, 16 Apr 2026 12:51:59 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1283377.1565631; Thu, 16 Apr 2026 12:51: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 1wDMCN-0003uJ-2H; Thu, 16 Apr 2026 12:51:59 +0000
Received: by outflank-mailman (input) for mailman id 1283377;
 Thu, 16 Apr 2026 12:51:58 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <roger.pau@citrix.com>) id 1wDMCL-0003sK-SZ
 for xen-devel@lists.xenproject.org; Thu, 16 Apr 2026 12:51:58 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wDMCL-00GoSe-9V
 for xen-devel@lists.xenproject.org; Thu, 16 Apr 2026 14:51:57 +0200
Received: from [10.42.69.1] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <roger.pau@citrix.com>)
 id 69e0db60-5cb7-0a2a0a5109dd-0a2a4501e7e4-28
 for <xen-devel@lists.xenproject.org>; Thu, 16 Apr 2026 14:51:57 +0200
Received: from [52.101.57.10]
 (helo=BN8PR05CU002.outbound.protection.outlook.com)
 by tlsNG-d62444.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.1)
 (envelope-from <roger.pau@citrix.com>)
 id 69e0db6b-c1f2-0a2a45010019-3465390a0fed-3
 for <xen-devel@lists.xenproject.org>; Thu, 16 Apr 2026 14:51:56 +0200
Received: from CH7PR03MB7860.namprd03.prod.outlook.com (2603:10b6:610:24e::14)
 by SJ0PR03MB6549.namprd03.prod.outlook.com (2603:10b6:a03:386::19)
 with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9818.25; Thu, 16 Apr
 2026 12:51:53 +0000
Received: from CH7PR03MB7860.namprd03.prod.outlook.com
 ([fe80::f5ba:35df:1c9f:b343]) by CH7PR03MB7860.namprd03.prod.outlook.com
 ([fe80::f5ba:35df:1c9f:b343%4]) with mapi id 15.20.9818.017; Thu, 16 Apr 2026
 12:51: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=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=U+FW5CKMJijW+WuotcCmEUrnlZQrEn2kQXaulZ4AVYqRu+Y1/Vhmy5emmb85iR2Cix8L75OxiPveTaBhEYQnIclbyd3kpaWQJva8VA4IIggDDKSOT9/mH4zy6/xXWtw6020EDfsl2Sy4JjWXeEzTuL7a780mCjJ5dJ/9myRPAxQxbRckPYfqMtAZ9TD33LMbjY1JM+/FoH+r3/6ze5jnypR+meQ+vs5zxLet4mzxziWcOi6ftumTqxAD8eUqaLYbb1KkOy0+JWdfuCwCFmcr//aqW/obronEIDu3NgMq4iO6d4ZcKl1a3Aas05F/I1HlJe3oeE/0eEwF9zwgi0ujUA==
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com;
 s=arcselector10001;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1;
 bh=yvK8tzfFPUqL8DxuGW02odaYKvZIuwiT17LQHLD9LUM=;
 b=CAp9+C8TixUjLLMaTUD9MM4vKCkhD8gHhTn/EaUczc3rgAVWPE8Qe75mT7t8d6ZjXnL7D/FmrHvPJ/3PtV0/ZXZN9Jl3o3mX57XOJc9s9xpaJJKY6Hu3aec0oFPa9K3a1zvuXzyivnuZV/KUckTwvQRXBk5Y3MljIh0ms7RQrgACBrZNVkQGECxPTgB1/DvF23H3MrYOpsnyXKi41BwHg+jpw5m/61Du1rCtA4zSIia90TxBpJUsoATZfTf7v7O8LBoIJ5b4TQbBEcvXgD6Dc/3V7obMizrAGuOUEuT/N/zxfoMaT42Kmzw0kRyE6ToB+J8OQRXukNtR++svA8Y3mg==
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=yvK8tzfFPUqL8DxuGW02odaYKvZIuwiT17LQHLD9LUM=;
 b=hKbnDuUKDVa7anjapp+Fi00qxVNw3vANACGG8uZVsVuNBa2bBFaRlcCCjnBoWE0WLwIgFmvUUhfT1ml4K7oopGoY+YTyiGiaoeugcitwrmI6FI9AQrlX+gC3xH8cUruaTOwXe/3Ok3lVsXDbNEWBXTdivkwhhb9ZLNLov2l5iFc=
Authentication-Results: dkim=none (message not signed)
 header.d=none;dmarc=none action=none header.from=citrix.com;
Date: Thu, 16 Apr 2026 14:51:49 +0200
From: Roger Pau =?utf-8?B?TW9ubsOp?= <roger.pau@citrix.com>
To: Jan Beulich <jbeulich@suse.com>
Cc: Andrew Cooper <andrew.cooper3@citrix.com>,
	Teddy Astie <teddy.astie@vates.tech>,
	xen-devel@lists.xenproject.org
Subject: Re: [PATCH 1/2] x86/time: use native TSC scaling factors when TSC is
 not scaled
Message-ID: <aeDbZZA-asNJ3Gci@macbook.local>
References: <20260414103327.7420-1-roger.pau@citrix.com>
 <20260414103327.7420-2-roger.pau@citrix.com>
 <f424bf3a-0113-4c66-b165-8dae82817f24@suse.com>
Content-Type: text/plain; charset=utf-8
Content-Disposition: inline
Content-Transfer-Encoding: 8bit
In-Reply-To: <f424bf3a-0113-4c66-b165-8dae82817f24@suse.com>
X-ClientProxiedBy: MR1P264CA0094.FRAP264.PROD.OUTLOOK.COM
 (2603:10a6:501:3f::27) To CH7PR03MB7860.namprd03.prod.outlook.com
 (2603:10b6:610:24e::14)
MIME-Version: 1.0
X-MS-PublicTrafficType: Email
X-MS-TrafficTypeDiagnostic: CH7PR03MB7860:EE_|SJ0PR03MB6549:EE_
X-MS-Office365-Filtering-Correlation-Id: 602c10c2-4486-4e08-6386-08de9bb6ef2d
X-MS-Exchange-SenderADCheck: 1
X-MS-Exchange-AntiSpam-Relay: 0
X-Microsoft-Antispam:
	BCL:0;ARA:13230040|366016|1800799024|376014|18002099003|22082099003|56012099003;
X-Microsoft-Antispam-Message-Info:
	TU2RsExEQegfbdcd2nyrmN+78M4dQ3pl2FMFtuI4DaoY+URSlQHeAsMfa7JBZVA98T/M4QcqYY9IyVDdeqnSqfsTrbjoNAkVqIi0ejHOWS7atffqx47svtQqP9H+OhBHVJX3ZsCySU6ia6PvES/yG9vsiCjeyj7WI4aJFQgX1zh0SvDPAZZyTHGqsBDH8UymyXBi8gr9FQXMysdhgC4oUX4hT37U5F9W5YYQBQX4NM3pgJTAHbP33ZlTWhXHc++RUC3T9f4tUvGK068nsitFHP37lhwmWrlxcid6xe5HjMguEEeMF1+Onijb4KJbL73bU5Q37IgltSCc9jMl0BtHSnbgOIqaKf+JInr456sIRIPsSyohtpV8ushaAG7oKgKnuEIJwmzl3ozXPvg0Oqs8gkqjnoBFP9bWou/MB03k8NAklYqDpeqZdbtHQEW6I31EmHccLPuAncMptibB8EUVmMweyEKEP/ZFfdgnvzDQqWv/L7Vha6EE4/OPdzSQeYcAAvMRC1qU9LHmI7SLLWe2ac4AvCvvPtW0Ky6zDUA+kSzAHZaQG+0UxkEIJKHDa7jdtTCestlIpungYbl09O50Azs9+CNBkoi6Gmm9blXhBSVzSke+YoK8xIQOHhKO1hjq3UD73U70XcQF2gDA3vvvguehk/4gr8Wi8jP/PlVVy+KXSwjcXXPFq15bQ/qSx3QVjigR5IrGX1tKkPRAvIBpMWLxPmKjRywTdgWn04dr5sU=
X-Forefront-Antispam-Report:
	CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:CH7PR03MB7860.namprd03.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(366016)(1800799024)(376014)(18002099003)(22082099003)(56012099003);DIR:OUT;SFP:1101;
X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1
X-MS-Exchange-AntiSpam-MessageData-0:
	=?utf-8?B?cGxrYzk2Tjh5Q3NEallXcmUvRGZtUThDeDlkZllKUlRDUHpUZG9GQ1VjOG9Q?=
 =?utf-8?B?bzMxNjFBa2NseXZ0Wld4Z0NwMExsU05iUDVoY2p5QWUyT0hBc3ZuMDc1ZTZL?=
 =?utf-8?B?dXlhYllJUVlGVHhiWjVlR2RpaDkrZGErb2c0bUE2VWNpTVZ1M3YySjZtRVNB?=
 =?utf-8?B?bkwrTWQ3aGZvRGVDWURMdmx4OWhLZzRmcTNXQ3NuWEErUmhlZGljK3NudVlW?=
 =?utf-8?B?dytncUhRS0Z4b0hpOTY1NFZEaVdJZjdaTlgxZS9ZN1Zxa2V5cE1IUXNyMUgz?=
 =?utf-8?B?UHd5K1pCanRxQ09hQXFLYy9leG5wNDY3OTgvYWhqaUZXSVBsU2QxbHpQS2t5?=
 =?utf-8?B?MUQzTExoREs0eFUrL3FCSHdiRVByK2h6cTE1elVyTjVsR0V3clV4VXNLeUQ1?=
 =?utf-8?B?L3hHQ3p6USswU1FHYWs4VS9GZHE5RTE3Z1FUWnhVZk1SUnVMUHhVWXdLcmhI?=
 =?utf-8?B?emtWWlo4S2JaMVVuZG5UY2NsZVU3enFlUHJPNm0rVGgwYW5uOGgxOUpvaDNU?=
 =?utf-8?B?VkJGRGlGM0t2VFhLUTBNdXVrVXJnZXRSaGgyS2hqOUx3ay9nMjhYK3ZWSVpX?=
 =?utf-8?B?VDZoU0JWOWVJdkozQUpRNGN4SUtKVEJLT0tVeGFESG9FdCtMakJaYXpVOXhB?=
 =?utf-8?B?VjQ2dWxVQjQwcEFOUHh2cmxoNElsK0dzTHdLZm1lWWdZck8yREFYRGx6a05i?=
 =?utf-8?B?S2lSeDNDVGJ2bk1KWGZ2VmlVL2J1d2pjNlhLb1FXZ1U5RXYzcnUvdis5cVI3?=
 =?utf-8?B?SlJEbmxTMjg5a2tKSjErSHQxK0pBWUdPWExVSEUvTFpQOVpHdHJyR1VOdlpY?=
 =?utf-8?B?ZUJiSlpTVHFTU2dvTTUyVGtnMHRDSzZlTC9CWTgybjdKaG5KTGsyVFd1UWV3?=
 =?utf-8?B?MG50VUhzbzBFL3c2SUgyanBhVi9yS2NoL3VGRUdST2wvVmJMQW83b1dMRmhh?=
 =?utf-8?B?Z2NqTEVaUjR3Qis0ZUdpd0c0eWFwem9hcWVMTmxJNjd6SFlGeU51ZXRacEZ5?=
 =?utf-8?B?MGc2YWg1aU4rMDc4YktjYXY1ckllbkhCa0JvWXA0b0V2TmZjRjlxY3cvbloz?=
 =?utf-8?B?V2V5aC8xQk0rbU84bmhzY2ZRbFpoZElFeC9uVW80akh0N2UrNkwzaGpUeEVr?=
 =?utf-8?B?dTR4YUoya2xVdDRwblNHL2RreFlGajYzcXlOWGwzVFFPcm5Fc3NCQTVzNitW?=
 =?utf-8?B?d0lqNEIwNWREdk4wSCtCaWxWRklZalQyVkJyNWtiVFp2RUFlOHE4VC9lcTUv?=
 =?utf-8?B?UENBOGxEbHI3VzZZRWlpRDhVRUE4ZHltLzNscXI4VGJoUEtzbWxqQjFETm4w?=
 =?utf-8?B?T2dUVGRvaTJBQ0Jwd09sczRyaFRGWSt4dFVZMzd0TU9yU0JDVStXaThHZnJV?=
 =?utf-8?B?SWZOVVlLWENOcEdsUithNnN4ek5JaDdzaXh6Q3Buc0tEUEliTnZTM1dFdUxj?=
 =?utf-8?B?UURqQkZQMXlyV041SENUc1phZExhMHdmN28yVER5WEVud2QxOWJDb09NeGtm?=
 =?utf-8?B?KzRkRVkrRExTU2ZYTWhyZWlsRjZHWElzbEtrMEVGUzBQU0RjSE5qL0ZFU2Iz?=
 =?utf-8?B?WmRxb3FNQmJmYTZLalViNTF1OVMxQTJTaDJlRi8yZFFqKzJodjE5M3BhZlpH?=
 =?utf-8?B?d2lXRjlSZXFDZlVLaHI5SWZlK24wSW9aMWdWYTZOSlY2RDJjTWNEa3pQM282?=
 =?utf-8?B?aCtvTTlnRUFzTEhiUDZjcVBsVUcwa043UWdEejh3Z1czZTl4Q09KSVlFZmNi?=
 =?utf-8?B?WXlJaU95Rm9tTkpJdHA3NnFYQWVPQVArL1I2RGVHbEFsMzdoeVBpRXhuYUxo?=
 =?utf-8?B?dURqU1JNMlRJWkdqNXpuYWxQNUlnWkNEVklMdUJrZzFSQVV4T2cvMHdrNEtr?=
 =?utf-8?B?RnJUa0ZLWWJtM1FVWkhTTXhGcnpxNVBnakFDeThzSkd6anQ3Y3NSSmFLcVZh?=
 =?utf-8?B?ekJ0L3VnZzZyeTBDWGpZaUNlZzMvMzRBZW9uUVZJVTZrSWNKMWdHNXdrcnYv?=
 =?utf-8?B?UkdTd3RwSmpOcDhqQVk0WWQ0SkViOXVLcHErV0dvZkZPYVYxSnRwajBHZ0V6?=
 =?utf-8?B?eGVUazFBUDdXbFVzaXJLRkdjb0lQRHlmL0FTcHFsdndOalJKcG9GZk1nSzFk?=
 =?utf-8?B?b2szS1Rpelg1aWVaQVZQSEpVamY3MlhkMzhTdHdINUc4ajdyVFE4YW1vZits?=
 =?utf-8?B?ejBHQ054eTNqM1EwbVhpV1NrZU5KdHhYRHpqd1BDMnJrci9UdWxoMWYvdzJW?=
 =?utf-8?B?bk1pdTI4RlBMUjhDeW11aDdCTm12TWgrVXBzTWt6ek5BWkRqVVBXbGIrVC9p?=
 =?utf-8?B?NjdDRjZPY2k4SGNMM0lFVHpXa0YybEErZFdjS0sweEVBS0o0YlptZz09?=
X-OriginatorOrg: citrix.com
X-MS-Exchange-CrossTenant-Network-Message-Id: 602c10c2-4486-4e08-6386-08de9bb6ef2d
X-MS-Exchange-CrossTenant-AuthSource: CH7PR03MB7860.namprd03.prod.outlook.com
X-MS-Exchange-CrossTenant-AuthAs: Internal
X-MS-Exchange-CrossTenant-OriginalArrivalTime: 16 Apr 2026 12:51:53.4754
 (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: Tkxd5fF05kZvqVhF/N6Uj3iTlrLsIIGSncZ6+bVHuSwdljnSz2zTj+jDzfWdESooTlg+Ov9T02vbm0eWidw+Fg==
X-MS-Exchange-Transport-CrossTenantHeadersStamped: SJ0PR03MB6549
X-purgate-ID: tlsNG-d62444/1776343917-BC812FF4-809E1DA8/0/0
X-purgate-type: clean
X-purgate-size: 3367

On Thu, Apr 16, 2026 at 01:28:11PM +0200, Jan Beulich wrote:
> On 14.04.2026 12:33, Roger Pau Monne wrote:
> > When running HVM guest in native TSC mode avoid using the recalculated vTSC
> > scaling factors based on the cpu_khz value.  Using the kHz based frequency
> > leads to the TSC scaling values possibly not being the same as the ones
> > used by the per CPU cpu_time->tsc_scale field, which introduces skew
> > between the guest and Xen's calculations of the system time.
> > 
> > On a 2gHz system, where the frequency is possibly detected as 1999999999Hz
> > (note this is a worse-case scenario), the cpu_khz variable will be set to
> > 1999999kHz, and hence 999Hz cycles will be not accounted for per second.
> > Over a second (the time synchronization period), this leads to a skew of:
> > 
> > cycles * 1 / (Hz freq) = 999 / 1999999999 = 499,5ns
> > 
> > So far this has gone unnoticed because the time synchronization rendezvous
> > forces the update of the tsc_timestamp and system_time fields in the vCPU
> > time info area, and hence the skew only accumulates up to the rendezvous
> > period.  Attempting to remove the rendezvous causes the skew to grow
> > unbounded.
> > 
> > Fix by using the native TSC scaling values (as used by Xen) when the guest
> > TSC is not scaled.
> > 
> > Fixes: eab8a90be723 ("x86/time: scale host TSC in pvclock properly")
> > Signed-off-by: Roger Pau Monné <roger.pau@citrix.com>
> > ---
> > I'm worried about the usage of cpu_khz beyond simple printing it for
> > informational purposes.  Overall I think it would be safer to store the
> > frequency in Hz, as to avoid losing the least significant digits.
> > 
> > In any case, that's a different change.
> 
> I'm not quite sure - improving accuracy is of course a good thing, but will
> we ever be able to do any such calculations error free, when already the
> detected frequency isn't exactly precise?
> 
> > --- a/xen/arch/x86/time.c
> > +++ b/xen/arch/x86/time.c
> > @@ -1710,17 +1710,25 @@ static void collect_time_info(const struct vcpu *v,
> >      else
> >      {
> >          if ( is_hvm_domain(d) && hvm_tsc_scaling_supported )
> > -        {
> >              tsc_stamp            = hvm_scale_tsc(d, t->stamp.local_tsc);
> 
> This is a potentially imprecise calculation. How likely is it that its result
> will indeed ...
> 
> > -            u->tsc_to_system_mul = d->arch.vtsc_to_ns.mul_frac;
> > -            u->tsc_shift         = d->arch.vtsc_to_ns.shift;
> > -        }
> >          else
> > -        {
> >              tsc_stamp            = t->stamp.local_tsc;
> > +
> > +        /*
> > +         * HVM guests using the native TSC ratio should use the same per-CPU
> > +         * scaling factors as Xen.  This ensures time keeping is always in sync
> > +         * between Xen and the guest.
> > +         */
> > +        if ( tsc_stamp == t->stamp.local_tsc )
> 
> ... exactly match t->stamp.local_tsc? Don't we possibly need a (small) error
> margin? (In which case of course the next question would be: How to establish
> such a margin?)

hvm_scale_tsc() has:

    if ( ratio == hvm_default_tsc_scaling_ratio )
        return tsc;

So when using no scaling the input value is the output value, and
hence tsc_stamp will match exactly t->stamp.local_tsc.

Thanks, Roger.


From xen-devel-bounces@lists.xenproject.org Thu Apr 16 12:52:26 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 16 Apr 2026 12:52:26 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1283395.1565641 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wDMCo-0004dw-Cf; Thu, 16 Apr 2026 12:52:26 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1283395.1565641; Thu, 16 Apr 2026 12: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 1wDMCo-0004dp-9v; Thu, 16 Apr 2026 12:52:26 +0000
Received: by outflank-mailman (input) for mailman id 1283395;
 Thu, 16 Apr 2026 12:52:25 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <xakep.amatop@gmail.com>) id 1wDMCn-0004dR-3x
 for xen-devel@lists.xenproject.org; Thu, 16 Apr 2026 12:52:25 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wDMCm-00DzLI-H3
 for xen-devel@lists.xenproject.org; Thu, 16 Apr 2026 14:52:24 +0200
Received: from [10.42.69.3] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <xakep.amatop@gmail.com>)
 id 69e0db77-bab6-0a2a0a5309dd-0a2a4503d362-46
 for <xen-devel@lists.xenproject.org>; Thu, 16 Apr 2026 14:52:24 +0200
Received: from [209.85.218.52] (helo=mail-ej1-f52.google.com)
 by tlsNG-33051d.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.1)
 (envelope-from <xakep.amatop@gmail.com>)
 id 69e0db88-672d-0a2a45030019-d155da34ecc3-3
 for <xen-devel@lists.xenproject.org>; Thu, 16 Apr 2026 14:52:24 +0200
Received: by mail-ej1-f52.google.com with SMTP id
 a640c23a62f3a-ba36357195bso36984866b.0
 for <xen-devel@lists.xenproject.org>; Thu, 16 Apr 2026 05:52:24 -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=20251104 header.d=gmail.com header.i="@gmail.com" header.h="Content-Transfer-Encoding:Cc:To:Subject:Message-ID:Date:From:In-Reply-To:References:MIME-Version"
ARC-Seal: i=1; a=rsa-sha256; t=1776343943; cv=none;
        d=google.com; s=arc-20240605;
        b=UGGQ2R3idi9zBB+6LF/xl4FdYg1krC3JzjE0y4CoHTrso6WPr/pIcoFdS9fB5X7E9R
         AWi8CDPWaZkyprK47cJplQUNjD6tCpgkhUmqfa5ELbeGVF0TSQJdrEXw7GttTcj6sdAL
         LJoXVQVpzcGM973JEIkwI/Gk3Hxht94DtwJElVt0LKbuFAIoBqB25QEDwh9aGbFr2aIa
         e0NBRKj9QqDfbMidmpn6YbEKANNH5fH6U2X1vduJMupk3+D4hv67SNlSlyC0OhcTBo9r
         hn4zfUG1pQfA89lh4faIspe1UNJX6hRDrYVo2KjvF5dBv9pRah1km4twUHoSJqkk1DQT
         mf2g==
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20240605;
        h=content-transfer-encoding:cc:to:subject:message-id:date:from
         :in-reply-to:references:mime-version:dkim-signature;
        bh=uWWJ9mP4NDk9cmYvS5SgrgvtiEhcfJ12dbTuCvEl8X0=;
        fh=dZ9oml7XyeCtxAH+8uRnDuAOsN3Lv1FdXWdZkBigAWY=;
        b=QOREVp+EL19glrBFJR0RsaIubStSa8+S1uZui1nw4+syGdl98eJz1GqDWBi32bfrme
         olIuYUNXEIPdbm6W1wFusq4+ehoJ7TVPpyvOK55A2043sekEgx2SaUNH/Rtf3i/fqHNv
         jvyT7iOCpT+skmEpNQdk18/YJQvs+3Vl8Sex4St+v4eEINPSym7DcQZc9yUbQ+zNGLjB
         VC2zA5/RJYYH0HZneaymYYHUFAV2xf8Twbll8tLv4PazrUmMhPjtNITKB3iUWZP/LumQ
         Tl74sthq8/YBpJcSnyjMGRbZDErmSTxWsCjPFmnF8iY+NnVqY8OtBHyljI0ttv9PQKBK
         /3rg==;
        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=20251104; t=1776343943; x=1776948743; darn=lists.xenproject.org;
        h=content-transfer-encoding:cc:to:subject:message-id:date:from
         :in-reply-to:references:mime-version:from:to:cc:subject:date
         :message-id:reply-to;
        bh=uWWJ9mP4NDk9cmYvS5SgrgvtiEhcfJ12dbTuCvEl8X0=;
        b=NDohTHnLJr+ILyY+26VrQsugWJkmQyT5VmGKpclksopG2t3pt9AMiEiBT2V8yUbWhx
         xrekRJD3Uz5KvLoXFBIFa0jseNpUMLO3bx9ihlvu0B7r9104rc1jlOsBdWhQGWiNLxhK
         k2Iv+bHCteU0jbV0qO8bPlYRuCZnGVMxipuwRmEl7yjpuUH9HV5tJtJSbdzotqwwTr6x
         Ds/DMFxIpAmME6gMX307HVoDQy/2V6S/rppzzmiUZecPwi1QC7ju1LsEvztXQn/1RSDn
         iHefTlOQu83uMhVq40kzN2nEWQqIYkaUws5uP4Aj3SjrRg5Gx61M5Zi6oHlyLLP58eg4
         +k1g==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20251104; t=1776343943; x=1776948743;
        h=content-transfer-encoding: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;
        bh=uWWJ9mP4NDk9cmYvS5SgrgvtiEhcfJ12dbTuCvEl8X0=;
        b=gheKULU/9KczvaiNQygFD8OWNA/WRzn7XucnmIQHCnzHf2wWUGi9yCnO8XkZTNpSGF
         5J8Fvbd9DCexOrvyqHwEs4MPUY8nF12gApg4b4gcdQLZLk7I/kUk7S7P80vyr+sTu3mN
         S6Ow1QzTkAMt3wvCkqQYg+Ts98i0ea+YCzYs1Usz7Lpmd3LdNNeqZjDFMKEb4ebVVH06
         Cvgzu3l6B8hkw+vG9pQJsp6d4QTlgK58Op5hCC1zt0Jbf+j1s+xe8qBK6Snag3mwOTWz
         0cvw/ASYNnLNdfFwqml7DfDFZpM99Mh0RZjryAGkRFC4z4LWZiIdX2z8m8kOViYiIX/Z
         Z08A==
X-Gm-Message-State: AOJu0Yyo7T5YoSrUH167xdOzPYdUk5NShxFApNUw08zkf22WwBdLN+0P
	lwCh5yPDy2Lpatgu3dy/olMwgE7u6VZ9zZKVT8RYRlfKxGpBjdoiBmHn4U3OK3EK8j6EG+aEKA0
	ewX6v7X+iZBkIAAdiO+1L2jw+NDfjWruYVH32AvI=
X-Gm-Gg: AeBDievqI3rL7STiAbMMUtAYRFxxmw9Ycys0zi9UoghP0ootnHcTpaIgKMaBXKuo9BD
	fxXvjaXE3GAlJVEvdvT5jwJhIP/uq5xFNYkTqzGES5xRxr0RAJKzdH+mJKtyo50sCAmDtwIhO9l
	BQQwL4YRZFJZvkzYEuZUK30E2OaeGw1TQjHzLTd6YQvKmB/S3Cuuxl+TzhetbUBz4hmG1T6Apwu
	UrRqZLDQyGXCBFhClkcAYKuokpiuZNz11CaRdxv/POtYdMYzamnJgAwMzKtG7Pzcr2QcvHDw66v
	w8didqYhd2/xR5osdQ==
X-Received: by 2002:a17:907:8b98:b0:b87:d09c:1825 with SMTP id
 a640c23a62f3a-b9d72792c0cmr1375263566b.13.1776343942861; Thu, 16 Apr 2026
 05:52:22 -0700 (PDT)
MIME-Version: 1.0
References: <cover.1775125380.git.mykola_kvach@epam.com>
In-Reply-To: <cover.1775125380.git.mykola_kvach@epam.com>
From: Mykola Kvach <xakep.amatop@gmail.com>
Date: Thu, 16 Apr 2026 15:52:10 +0300
X-Gm-Features: AQROBzDkRt956UJ9HFqIUZus6pPyZV4x_qUHalERlz9C-lnc7Gr6C1oaVR71_7I
Message-ID: <CAGeoDV9NqdcVLBJ7vj8v1HUhfVoyrAssVXTP_sA5=ebXzS7Z0w@mail.gmail.com>
Subject: PING: Re: [PATCH v8 00/13] Add initial Xen Suspend-to-RAM support on ARM64
To: Xen-devel <xen-devel@lists.xenproject.org>
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>, 
	Jan Beulich <jbeulich@suse.com>, =?UTF-8?Q?Roger_Pau_Monn=C3=A9?= <roger.pau@citrix.com>, 
	Jens Wiklander <jens.wiklander@linaro.org>, Rahul Singh <rahul.singh@arm.com>
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: quoted-printable
X-purgate-ID: tlsNG-33051d/1776343944-48FD6938-1C72C8A1/0/0
X-purgate-type: clean
X-purgate-size: 5859

Hi all,

A gentle ping on this series. It's been a couple of weeks since v8 was post=
ed.

Please let me know if there are any further comments or if anything else is
needed from my side to move this forward.

Thanks!

Best regards,
Mykola

On Thu, Apr 2, 2026 at 1:47=E2=80=AFPM Mykola Kvach <xakep.amatop@gmail.com=
> wrote:
>
> From: Mykola Kvach <mykola_kvach@epam.com>
>
> This is part 2 of version 8 of the ARM Xen system suspend/resume patch
> series, based on earlier work by Mirela Simonovic and Mykyta Poturai.
>
> The first part is in mainline.
>
> NOTE: Most of the code is guarded by CONFIG_SYSTEM_SUSPEND, which can
> currently only be selected when UNSUPPORTED is set, and thus the
> functionality is neither enabled by default nor even built.
>
> This version is ported to Xen master and includes extensive improvements
> based on reviewer feedback. The patch series restructures code to improve
> robustness, maintainability, and implements system Suspend-to-RAM support
> on ARM64 hardware/control domains.
>
> Key updates in this series:
>  - Introduced architecture-specific suspend/resume infrastructure
>  - Integrated GICv2/GICv3 suspend and resume, including memory-backed con=
text
>    save/restore with error handling
>  - Added time and IRQ suspend/resume hooks, ensuring correct timer/interr=
upt
>    state across suspend cycles
>  - Implemented proper PSCI SYSTEM_SUSPEND invocation and version checks
>  - Improved state management and recovery in error cases during suspend/r=
esume
>  - Added support for IPMMU-VMSA/SMMUv3 context save/restore
>  - Added support for GICv3 eSPI registers context save/restore
>  - Added support for ITS registers context save/restore
> ---
>
> TODOs:
>  - Enable "xl suspend" support on ARM
>  - Add suspend/resume CI test for ARM (QEMU if feasible)
>  - PCI suspend ?
> ---
>
> Detailed changelogs can be found in each patch.
>
> Changes in v8:
> - Rebased to latest master and refreshed the series accordingly.
> - Added a new GICv3 patch to tolerate retained redistributor LPI state
>   across CPU_OFF/CPU_ON.
> - GICv2 suspend now disables the CPU interface and distributor before
>   saving state.
> - GICv3 suspend/resume fixes the redistributor base used for LPI state.
> - ITS and SMMUv3 suspend/resume paths were tightened, with safer
>   restore/rollback handling and stricter fatal-error handling.
> - System suspend now checks that all domains are already in
>   SHUTDOWN_suspend before proceeding, and renames the hardware-domain
>   suspend capability/helper for clearer semantics.
> - Fixed alignment/cleanup issues in the low-level suspend/resume code.
>
> Changes in v7:
> - Timer helper renamed/clarified; virtual/hyper/phys handling documented.
> - GICv2 uses one context block; restore saved CTLR; panic on alloc failur=
e.
> - GICv3/eSPI/ITS always suspend/resume; restore LPI/eSPI; rdist timeout.
> - IPMMU suspend context allocated before PCI setup.
> - System suspend: control domain drives host suspend.
> - Dropped v6 IRQ descriptor restore patches; use setup_irq and re-registe=
r
>   local IRQs on resume instead.
>
> For earlier changelogs, please refer to the previous cover letters.
>
> Mirela Simonovic (6):
>   xen/arm: Add suspend and resume timer helpers
>   xen/arm: gic-v2: Implement GIC suspend/resume functions
>   xen/arm: Resume memory management on Xen resume
>   xen/arm: Save/restore context on suspend/resume
>   xen/arm: Implement PSCI SYSTEM_SUSPEND call (host interface)
>   xen/arm: Add support for system suspend triggered by hardware domain
>
> Mykola Kvach (6):
>   xen/arm: gic-v3: tolerate retained redistributor LPI state across
>     CPU_OFF
>   xen/arm: gic-v3: Implement GICv3 suspend/resume functions
>   xen/arm: gic-v3: add ITS suspend/resume support
>   xen/arm: tee: keep init_tee_secondary() for hotplug and resume
>   xen/arm: ffa: fix notification SRI across CPU hotplug/suspend
>   arm/smmu-v3: add suspend/resume handlers
>
> Oleksandr Tyshchenko (1):
>   iommu/ipmmu-vmsa: Implement suspend/resume callbacks
>
>  xen/arch/arm/Kconfig                     |   2 +
>  xen/arch/arm/Makefile                    |   1 +
>  xen/arch/arm/arm64/head.S                | 112 ++++++++
>  xen/arch/arm/gic-v2.c                    | 132 +++++++++
>  xen/arch/arm/gic-v3-its.c                | 126 +++++++-
>  xen/arch/arm/gic-v3-lpi.c                |  80 +++++-
>  xen/arch/arm/gic-v3.c                    | 349 ++++++++++++++++++++++-
>  xen/arch/arm/gic.c                       |  29 ++
>  xen/arch/arm/include/asm/gic.h           |  12 +
>  xen/arch/arm/include/asm/gic_v3_defs.h   |   1 +
>  xen/arch/arm/include/asm/gic_v3_its.h    |  24 ++
>  xen/arch/arm/include/asm/mm.h            |   2 +
>  xen/arch/arm/include/asm/psci.h          |   1 +
>  xen/arch/arm/include/asm/suspend.h       |  31 ++
>  xen/arch/arm/include/asm/time.h          |   5 +
>  xen/arch/arm/mmu/smpboot.c               |   2 +-
>  xen/arch/arm/psci.c                      |  23 +-
>  xen/arch/arm/suspend.c                   | 195 +++++++++++++
>  xen/arch/arm/tee/ffa_notif.c             |  63 +++-
>  xen/arch/arm/tee/tee.c                   |   2 +-
>  xen/arch/arm/time.c                      |  44 ++-
>  xen/arch/arm/vpsci.c                     |  12 +-
>  xen/common/Kconfig                       |   3 +
>  xen/common/domain.c                      |   7 +-
>  xen/drivers/passthrough/arm/ipmmu-vmsa.c | 305 +++++++++++++++++++-
>  xen/drivers/passthrough/arm/smmu-v3.c    | 172 ++++++++---
>  xen/drivers/passthrough/arm/smmu.c       |  10 +
>  xen/include/xen/list.h                   |  14 +
>  28 files changed, 1670 insertions(+), 89 deletions(-)
>  create mode 100644 xen/arch/arm/suspend.c
>
> --
> 2.43.0


From xen-devel-bounces@lists.xenproject.org Thu Apr 16 12:57:19 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 16 Apr 2026 12:57:19 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1283415.1565651 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wDMHS-0005Oe-1q; Thu, 16 Apr 2026 12:57:14 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1283415.1565651; Thu, 16 Apr 2026 12:57: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 1wDMHR-0005OW-To; Thu, 16 Apr 2026 12:57:13 +0000
Received: by outflank-mailman (input) for mailman id 1283415;
 Thu, 16 Apr 2026 12:57:12 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <jbeulich@suse.com>) id 1wDMHQ-0005OQ-IX
 for xen-devel@lists.xenproject.org; Thu, 16 Apr 2026 12:57:12 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wDMHP-00629T-VT
 for xen-devel@lists.xenproject.org; Thu, 16 Apr 2026 14:57:11 +0200
Received: from [10.42.69.1] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <jbeulich@suse.com>)
 id 69e0dc9e-2eae-0a2a0a5409dd-0a2a4501d44e-34
 for <xen-devel@lists.xenproject.org>; Thu, 16 Apr 2026 14:57:11 +0200
Received: from [209.85.128.52] (helo=mail-wm1-f52.google.com)
 by tlsNG-d62444.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.1)
 (envelope-from <jbeulich@suse.com>)
 id 69e0dca7-c1f2-0a2a45010019-d1558034d58b-3
 for <xen-devel@lists.xenproject.org>; Thu, 16 Apr 2026 14:57:11 +0200
Received: by mail-wm1-f52.google.com with SMTP id
 5b1f17b1804b1-488ba840146so78836505e9.1
 for <xen-devel@lists.xenproject.org>; Thu, 16 Apr 2026 05:57:11 -0700 (PDT)
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-43ead3d5eb4sm13802027f8f.20.2026.04.16.05.57.10
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Thu, 16 Apr 2026 05:57:10 -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=google header.d=suse.com header.i="@suse.com" header.h="Content-Transfer-Encoding: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=1776344231; x=1776949031; darn=lists.xenproject.org;
        h=content-transfer-encoding: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;
        bh=TDo7cuQygxrsMfzbryWP7R/0NuH1eJzyHF47V5ZWVwo=;
        b=Su7p7JnbLM9c6LIawrrHoGKLqlzjVEgiktOBMClvjdzzHehcyNbk2zTM4jSE+cSfke
         anQZJ3rwhiLSs2k98TbV3PQOrsLUvgAg6lhRAmBRNAVPIe44eLv8ipZ4lbXafQ0lEh+J
         UL+8K4Vf3xPbfS1WMpZ8XlHi6cw25S2oGcLmhMx5Q1Vs+S9oLQ7bpkDsHo9lnVaW26XA
         bOF9ssyStX5Y7VvYerDT+JvZmhvzT73BIeP7CE73mMJnTZzCDhRr00qKT1GatD5HGw6q
         7x1UzZFm5OgpzlW3DabXAa0y9dMF1LptyRkmWZAMiIlOoPiN67MytBkx5qi43WLzoDtd
         m4Hw==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20251104; t=1776344231; x=1776949031;
        h=content-transfer-encoding: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;
        bh=TDo7cuQygxrsMfzbryWP7R/0NuH1eJzyHF47V5ZWVwo=;
        b=eOA1Akj59LTSuA2yodoWOkqfNr9mSszdFJBO2NKqTskvMI/MKUhDGvnWBt5gdSRrg4
         Z1/7DRNT80x9hoAUjTywLqfzUlFY20fX5aTxHhcbYDcApWFLo5KfFSqMuQZJsRnd57MT
         kuSR+931UFr5Lifius3/2xoUf3VZ8Dcne+efX3Aadjj4N2upTLSchQ4WBCktJMkmZiWU
         XBuzENDhUMFf9IlGdyNp6Pt744gpK+SWBn5fJyT7+3kZwd5uIFu4q2ik+rV/ojVo8nEe
         i4cavAgsaXB4qC/lJ61kptC2r6Hb68Idwnhz/FqA8uco1ouYiIebnfZPosU7wWXOHxGN
         k8iw==
X-Forwarded-Encrypted: i=1; AFNElJ9REXZlOk7EIaw6rOMG2rBf/eyKJy9aUt3G6Py8nDcgnyyCUNXS5uX6CHCPzhH31MAq617LHhzLtho=@lists.xenproject.org
X-Gm-Message-State: AOJu0YzvpfyfoeweHdO8NaPPl9j5dJcBKd7w8ZX0QygUrm9Wgui+lMmP
	ERFgI5ZAr1Dql5+HOmbTj9tQRFMSGG4s+FtsH6oqF7i/SnvC32uMtZgigPzxUD3M7w==
X-Gm-Gg: AeBDies8l8Qa+Qi6GhkXkQm50PieJK+2JafhXk9pjHTkbsVrKA8fTY/YpHpmpCQd4gH
	n4UejvO92QwtJfR1lh9EoHAvowmwA4236sJdKV+tmi4UnqOSESeKF70lJVJVNoOLga9PPA81P4D
	kAk9zK4jf9YT3wfKfL9XMAiichoIqAlPj7qGrVsT4kYWdo23alc5aY38jRlRHJR/mAei7RiqI7b
	l9qGuWoe6kethUDDIVkhnu9gwOhx09MwC/mja7Jik6Rn0zwez4Yn5u8Pra0BhEHgWfAlvn7f+1d
	OL1ZzvLPXM4ZeQ3QFpBmoAU1bOKHdx6yXUdorb17LUnju7vkjtwCsCFPMgMgVqcFkXFsiWMC5RE
	ASYGr86WF+jLBE4jStfLrwBleeOI0baQsgBu7JhRHRuragsItcvWtSKvw0d5ILNQB3tHyn55o1H
	fZTY+MJViezyqWq0Qh/0foYw2OjTGC4zhTPeFEcWIPt9S3m5oLIbOqsjwmT4mR6yvAgNYfkMtcj
	BKeM1kK7U+yk1cpjRfNIYUWOQ==
X-Received: by 2002:a05:600c:350c:b0:488:9661:2570 with SMTP id 5b1f17b1804b1-488d67ce8c2mr354093825e9.8.1776344231125;
        Thu, 16 Apr 2026 05:57:11 -0700 (PDT)
Message-ID: <9efe1ae9-8064-4793-90c9-2e16c64f75bd@suse.com>
Date: Thu, 16 Apr 2026 14:57:14 +0200
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH 1/2] x86/time: use native TSC scaling factors when TSC is
 not scaled
To: =?UTF-8?Q?Roger_Pau_Monn=C3=A9?= <roger.pau@citrix.com>
Cc: Andrew Cooper <andrew.cooper3@citrix.com>,
 Teddy Astie <teddy.astie@vates.tech>, xen-devel@lists.xenproject.org
References: <20260414103327.7420-1-roger.pau@citrix.com>
 <20260414103327.7420-2-roger.pau@citrix.com>
 <f424bf3a-0113-4c66-b165-8dae82817f24@suse.com>
 <aeDbZZA-asNJ3Gci@macbook.local>
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: <aeDbZZA-asNJ3Gci@macbook.local>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
X-purgate-ID: tlsNG-d62444/1776344231-BD66FFF4-307BC43C/0/0
X-purgate-type: clean
X-purgate-size: 3685

On 16.04.2026 14:51, Roger Pau Monné wrote:
> On Thu, Apr 16, 2026 at 01:28:11PM +0200, Jan Beulich wrote:
>> On 14.04.2026 12:33, Roger Pau Monne wrote:
>>> When running HVM guest in native TSC mode avoid using the recalculated vTSC
>>> scaling factors based on the cpu_khz value.  Using the kHz based frequency
>>> leads to the TSC scaling values possibly not being the same as the ones
>>> used by the per CPU cpu_time->tsc_scale field, which introduces skew
>>> between the guest and Xen's calculations of the system time.
>>>
>>> On a 2gHz system, where the frequency is possibly detected as 1999999999Hz
>>> (note this is a worse-case scenario), the cpu_khz variable will be set to
>>> 1999999kHz, and hence 999Hz cycles will be not accounted for per second.
>>> Over a second (the time synchronization period), this leads to a skew of:
>>>
>>> cycles * 1 / (Hz freq) = 999 / 1999999999 = 499,5ns
>>>
>>> So far this has gone unnoticed because the time synchronization rendezvous
>>> forces the update of the tsc_timestamp and system_time fields in the vCPU
>>> time info area, and hence the skew only accumulates up to the rendezvous
>>> period.  Attempting to remove the rendezvous causes the skew to grow
>>> unbounded.
>>>
>>> Fix by using the native TSC scaling values (as used by Xen) when the guest
>>> TSC is not scaled.
>>>
>>> Fixes: eab8a90be723 ("x86/time: scale host TSC in pvclock properly")
>>> Signed-off-by: Roger Pau Monné <roger.pau@citrix.com>
>>> ---
>>> I'm worried about the usage of cpu_khz beyond simple printing it for
>>> informational purposes.  Overall I think it would be safer to store the
>>> frequency in Hz, as to avoid losing the least significant digits.
>>>
>>> In any case, that's a different change.
>>
>> I'm not quite sure - improving accuracy is of course a good thing, but will
>> we ever be able to do any such calculations error free, when already the
>> detected frequency isn't exactly precise?
>>
>>> --- a/xen/arch/x86/time.c
>>> +++ b/xen/arch/x86/time.c
>>> @@ -1710,17 +1710,25 @@ static void collect_time_info(const struct vcpu *v,
>>>      else
>>>      {
>>>          if ( is_hvm_domain(d) && hvm_tsc_scaling_supported )
>>> -        {
>>>              tsc_stamp            = hvm_scale_tsc(d, t->stamp.local_tsc);
>>
>> This is a potentially imprecise calculation. How likely is it that its result
>> will indeed ...
>>
>>> -            u->tsc_to_system_mul = d->arch.vtsc_to_ns.mul_frac;
>>> -            u->tsc_shift         = d->arch.vtsc_to_ns.shift;
>>> -        }
>>>          else
>>> -        {
>>>              tsc_stamp            = t->stamp.local_tsc;
>>> +
>>> +        /*
>>> +         * HVM guests using the native TSC ratio should use the same per-CPU
>>> +         * scaling factors as Xen.  This ensures time keeping is always in sync
>>> +         * between Xen and the guest.
>>> +         */
>>> +        if ( tsc_stamp == t->stamp.local_tsc )
>>
>> ... exactly match t->stamp.local_tsc? Don't we possibly need a (small) error
>> margin? (In which case of course the next question would be: How to establish
>> such a margin?)
> 
> hvm_scale_tsc() has:
> 
>     if ( ratio == hvm_default_tsc_scaling_ratio )
>         return tsc;
> 
> So when using no scaling the input value is the output value, and
> hence tsc_stamp will match exactly t->stamp.local_tsc.

Ouch. I did look at the function, but managed to have all my attention drawn
to the asm() there. I'm sorry for the noise. As it's strictly an improvement:
Reviewed-by: Jan Beulich <jbeulich@suse.com>

The other, earlier remark remains applicable, though.

Jan


From xen-devel-bounces@lists.xenproject.org Thu Apr 16 13:01:27 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 16 Apr 2026 13:01:27 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1283428.1565659 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wDMLW-0007JZ-FZ; Thu, 16 Apr 2026 13:01:26 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1283428.1565659; Thu, 16 Apr 2026 13: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 1wDMLW-0007JS-Cg; Thu, 16 Apr 2026 13:01:26 +0000
Received: by outflank-mailman (input) for mailman id 1283428;
 Thu, 16 Apr 2026 13:01:24 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <jbeulich@suse.com>) id 1wDMLU-0007JM-MP
 for xen-devel@lists.xenproject.org; Thu, 16 Apr 2026 13:01:24 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wDMLU-00GVtf-33
 for xen-devel@lists.xenproject.org; Thu, 16 Apr 2026 15:01:24 +0200
Received: from [10.42.69.3] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <jbeulich@suse.com>)
 id 69e0dda3-2eae-0a2a0a5409dd-0a2a4503e926-6
 for <xen-devel@lists.xenproject.org>; Thu, 16 Apr 2026 15:01:23 +0200
Received: from [209.85.128.45] (helo=mail-wm1-f45.google.com)
 by tlsNG-33051d.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.1)
 (envelope-from <jbeulich@suse.com>)
 id 69e0dda3-672d-0a2a45030019-d155802dc16e-3
 for <xen-devel@lists.xenproject.org>; Thu, 16 Apr 2026 15:01:23 +0200
Received: by mail-wm1-f45.google.com with SMTP id
 5b1f17b1804b1-4838c15e3cbso75329655e9.3
 for <xen-devel@lists.xenproject.org>; Thu, 16 Apr 2026 06:01:23 -0700 (PDT)
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-43ead35bf1esm14139499f8f.16.2026.04.16.06.01.22
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Thu, 16 Apr 2026 06:01:22 -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=google header.d=suse.com header.i="@suse.com" header.h="Content-Transfer-Encoding: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=1776344483; x=1776949283; darn=lists.xenproject.org;
        h=content-transfer-encoding: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;
        bh=65ANu0MURn8ab4e3Y3mOo2/bz288YqetAYIt4UinN/s=;
        b=cJuvlNrBMOWUIxTdUMjLjX92Dclj5mDz3HW0oSSF6L8Mng7tLjrSVc6PiEDioKfmvI
         Pqv/ec/hT9Zgikw1fZ0quR0zGZaVoN7jsVq2mncZRpE3CYvvuHlOV4+bA92rbk60Qgoj
         8oOum0C5FwbC4X7gn/f52NZFPFNgK5Ogy/zl7O7fq58uLMwe5de1LJJJBAeYTg2gtr1I
         9ieiftRVZ6v741ivSh32Xt4IWAu7z8VtUFT1hAHRRhz289qMMF+zdFCkHwi0DVp8aYnp
         EMHd/G8OlVXwV8nwnYudjrVW/wz8Q4lLvBQZDqJjwNv+sSuZJx362LFkmRcYlEqUkPHq
         wmQA==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20251104; t=1776344483; x=1776949283;
        h=content-transfer-encoding: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;
        bh=65ANu0MURn8ab4e3Y3mOo2/bz288YqetAYIt4UinN/s=;
        b=ma8RY1MKpycQEhAUB8Mt6h4wQdI1PzNKRsv/YGHFNQa4UYALtSubUD8BfjLaNjO32N
         chjZDo6hJXPS8NS8m8kGcTbI2zxhqvVLDlhrV74EPRVw1wtXqK9lmyld5btGlC1BLk6S
         NJ51ViVGjyC4Alnq+REkBWQcs0uUmEyqX/OyPp4mTZFFbPKmLN2nAn0jiRgHvyaPwtlN
         CGQgcPpuVjv/oqlnF/1UOQF3EcJtB1nuzxxrfBYx9IzbazZtBWgvQa4169Fd6UCG0Ion
         Z2P1gkaAWvYRVQnCDQRsvGVwc+pjgVSfOaOOGqk71wvBg9xD6/Av/C6sD9r/FbeEr0cg
         Rcbw==
X-Forwarded-Encrypted: i=1; AFNElJ/r3G5L3OOQ55drqaPwqVgqAgh+rw8sVSxFCyFnbZlAbMW0/qxLW42C6EdBhDomNWwRd7KEFU1/1uU=@lists.xenproject.org
X-Gm-Message-State: AOJu0YzM9dXTCfQfBVDYjNgOhRQ4um8158TOQ0nvNOyab8eKRy1Dk8g0
	To8oh9sfYb5rWo150OWkqORtgdlPSFAEebInGN0qArm4JdErTDOKqIcw7vQMjCtccA==
X-Gm-Gg: AeBDieuoLPH9dfsfR42TBmnb0BoH9cdAoiKw49juutmkHxNrM15nIT3KTxLReCNHh/e
	lX9j+JhZxo46uy5Lb8qK/cEU+DvogeId5CDrddqXz7SAmI1IoX+LzBSNFUMZZXN2g7h/hUMkMwF
	/3r/wBYks0grRoz++8bLwX+OR1LEBXIlhd+kOUj0AtPLh9VINKB7suBsDR076CoXTjuf5po2FO7
	EyvcS0pGa8Qz7buk8rnuJWphIL7mIywKZozp4+iM6SnjufEGNJoqqyiuzcZL9lohZIPTbCm5Vk2
	c41uPehrgI2EJloRM2iJahYPgHfm/0lTfRDKQcljQvTy8LIqBFIY//HWp5vjMTa7Kk4ConLJMWd
	9spQENIuoCB2ubWuWiZtKnmtSCnxfvb6l42VI17nxo5CsoyZWNndwwX+KryxTkJ/Icd/ChlJA42
	Oneb0OVEpi/C9Ifw/106RYA0T/RyR+hbgOy06dL3atLidOk64/bK0QoehHK5k6zMleW8u294kXR
	lIL0D6cq/QNTSfA0zKBHEcLAsyez9Qr/z7X
X-Received: by 2002:a05:6000:4203:b0:43d:9bb5:bd97 with SMTP id ffacd0b85a97d-43d9bb5bfa7mr18130856f8f.8.1776344483104;
        Thu, 16 Apr 2026 06:01:23 -0700 (PDT)
Message-ID: <e70e141b-fe40-41f2-9101-e65758e7f7b6@suse.com>
Date: Thu, 16 Apr 2026 15:01:25 +0200
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH v1 18/27] xen/riscv: add vaplic access check
To: Oleksii Kurochko <oleksii.kurochko@gmail.com>
Cc: Romain Caritey <Romain.Caritey@microchip.com>,
 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.pau@citrix.com>,
 Stefano Stabellini <sstabellini@kernel.org>, xen-devel@lists.xenproject.org
References: <cover.1773157782.git.oleksii.kurochko@gmail.com>
 <0fc9adf790d4f981e8117bd9759c7e64bb11e439.1773157782.git.oleksii.kurochko@gmail.com>
 <0519fb8a-48e3-4f36-8d6c-a966080ffb55@suse.com>
 <f0503bd6-3ea3-42da-9211-02836addc176@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: <f0503bd6-3ea3-42da-9211-02836addc176@gmail.com>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 7bit
X-purgate-ID: tlsNG-33051d/1776344483-A0975938-154E628A/0/0
X-purgate-type: clean
X-purgate-size: 1901

On 14.04.2026 13:45, Oleksii Kurochko wrote:
> On 4/2/26 3:10 PM, Jan Beulich wrote:
>> On 10.03.2026 18:08, Oleksii Kurochko wrote:
>>> --- a/xen/arch/riscv/aplic.c
>>> +++ b/xen/arch/riscv/aplic.c
>>> @@ -38,6 +38,7 @@ static struct aplic_priv aplic = {
>>>   
>>>   static struct intc_info __ro_after_init aplic_info = {
>>>       .hw_version = INTC_APLIC,
>>> +    .private = &aplic,
>>
>> Isn't this the host instance again? How can you ...
>>
>>> --- a/xen/arch/riscv/vaplic.c
>>> +++ b/xen/arch/riscv/vaplic.c
>>> @@ -127,6 +127,20 @@ int vaplic_map_device_irqs_to_domain(struct domain *d,
>>>       return 0;
>>>   }
>>>   
>>> +static int cf_check vaplic_is_access(const struct vcpu *vcpu,
>>> +                                     const unsigned long addr)
>>> +{
>>> +    const struct vaplic *vaplic = to_vaplic(vcpu->domain->arch.vintc);
>>> +    const struct aplic_priv *priv = vaplic->base.info->private;
>>> +    const paddr_t paddr_end = priv->paddr_start + priv->size;
>>> +
>>> +    /* check if it is an APLIC access */
>>> +    if ( priv->paddr_start <= addr && addr < paddr_end )
>>
>> ... use that here? Or asked differently, again: Where's the virtualization,
>> i.e. the abstraction away from host properties?
> 
> With the current use case it was easier to choose such approach then 
> provide the full abstraction.
> 
>> Furthermore, is it really sufficient to check just the starting address of
>> an access? Shouldn't the last byte accessed also fall into the range in
>> question?
> 
> I think that it is okay, my understanding is that *paddr_end technically 
> is another range.

Of course it is. But a multi-byte access crossing the paddr_end boundary
isn't purely an APLIC one. You can reject such for simplicity, but I'm
unconvinced that you can claim you will be able to correctly handle it
without proper merging.

Jan


From xen-devel-bounces@lists.xenproject.org Thu Apr 16 13:13:58 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 16 Apr 2026 13:13:58 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1283443.1565668 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wDMXX-0000pl-Ft; Thu, 16 Apr 2026 13:13:51 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1283443.1565668; Thu, 16 Apr 2026 13:13: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 1wDMXX-0000pe-D4; Thu, 16 Apr 2026 13:13:51 +0000
Received: by outflank-mailman (input) for mailman id 1283443;
 Thu, 16 Apr 2026 13:13:49 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <roger.pau@citrix.com>) id 1wDMXV-0000pY-Oz
 for xen-devel@lists.xenproject.org; Thu, 16 Apr 2026 13:13:49 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wDMXV-00Gtx2-5F
 for xen-devel@lists.xenproject.org; Thu, 16 Apr 2026 15:13:49 +0200
Received: from [10.42.69.10] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <roger.pau@citrix.com>)
 id 69e0e08a-2eae-0a2a0a5409dd-0a2a450aea64-6
 for <xen-devel@lists.xenproject.org>; Thu, 16 Apr 2026 15:13:49 +0200
Received: from [52.101.52.6]
 (helo=BL2PR02CU003.outbound.protection.outlook.com)
 by tlsNG-4011c0.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.1)
 (envelope-from <roger.pau@citrix.com>)
 id 69e0e08b-56b3-0a2a450a0019-346534065eea-3
 for <xen-devel@lists.xenproject.org>; Thu, 16 Apr 2026 15:13:48 +0200
Received: from CH7PR03MB7860.namprd03.prod.outlook.com (2603:10b6:610:24e::14)
 by LV3PR03MB7454.namprd03.prod.outlook.com (2603:10b6:408:1a4::13)
 with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9818.25; Thu, 16 Apr
 2026 13:13:43 +0000
Received: from CH7PR03MB7860.namprd03.prod.outlook.com
 ([fe80::f5ba:35df:1c9f:b343]) by CH7PR03MB7860.namprd03.prod.outlook.com
 ([fe80::f5ba:35df:1c9f:b343%4]) with mapi id 15.20.9818.017; Thu, 16 Apr 2026
 13: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=lsPaQy2HUGXxu7yWtBdLzNDGiZ08hbu6M4zQdUs4wPPmTzfq2gKsslYo9xT2lPj0kRWYbsu3xeszJ/LXpkKNcBupKGU47KsUTbpjWIxCdLsbSoOxAWd9aUHKUMVN/ipv77uUz8XEaUh6fSBe8V9COgAAfu+DGx1DylXtyuv345sqF7kvtUEolR5oLcphD4w85kVpUFKWjJEmvgXZxNpTcZ0qZXtSuzhi4I8n9iXAJA/VwTv0l+l+M8YYn2VRDh/Yng3RM68LXJoiw5p1Hxu8RCKQjp0ZZVxGv9mvGXUnCSFOA7Tcd+QLZe6KIvHUlONL5UFYQRJBZIb/nVI4k58Gmw==
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com;
 s=arcselector10001;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1;
 bh=S+o9kCYmx18/+SKer5CbgFq9S4TN3A4/wYag7sM2cQY=;
 b=x3rwjQrmrD0l63z3VHIsL57JtbRAa9FPOQ7ZOtP4lPq6pmWJ2mefD33mJc6NFSOg7QR7hv7AcSV+3Eg5JABe9j7xRw+LOcffJlvMw9tX8Wxgni3zWw///NFboDBsFURsZoO41LR0x1n3u/wV3mAkuV+9AEP+YtF3y4F0MLpUMek9iP0WR7EYuBFEqBsjX8pE/6hsjQQmckF27tC/k/xVfXIKfh28fapjWzVmc+zKR58/s5oLOo/qCAxOjazVmcsvFH3BsQ+AdekNdh/ntMLPu2cIhdAJNsPpqJ5vYylaVVQ9AspEC9KjYrfCqGEViQPiKxNj9Ft587xXiYnqTz3s/A==
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=S+o9kCYmx18/+SKer5CbgFq9S4TN3A4/wYag7sM2cQY=;
 b=0W16gXFx+R9G1tRWU1AiiDbBwCOGqxAJNBWkWqtHTVvUkHGzorb2QR25t0QvrxATqdKVD0d4wDNyMx1Fg/OHEIZIhiCWM2QRox7hTv77nlTxgZitVkXfBkTtVJK/JbX6HNnmn2XyecQkH3udg3JdZsLcb5UkgVp4Zt3H0p78Ij4=
Authentication-Results: dkim=none (message not signed)
 header.d=none;dmarc=none action=none header.from=citrix.com;
Date: Thu, 16 Apr 2026 15:13:39 +0200
From: Roger Pau =?utf-8?B?TW9ubsOp?= <roger.pau@citrix.com>
To: Jan Beulich <jbeulich@suse.com>
Cc: Andrew Cooper <andrew.cooper3@citrix.com>,
	Teddy Astie <teddy.astie@vates.tech>,
	xen-devel@lists.xenproject.org
Subject: Re: [PATCH 1/2] x86/time: use native TSC scaling factors when TSC is
 not scaled
Message-ID: <aeDgg2gB09-G2FQD@macbook.local>
References: <20260414103327.7420-1-roger.pau@citrix.com>
 <20260414103327.7420-2-roger.pau@citrix.com>
 <f424bf3a-0113-4c66-b165-8dae82817f24@suse.com>
Content-Type: text/plain; charset=utf-8
Content-Disposition: inline
Content-Transfer-Encoding: 8bit
In-Reply-To: <f424bf3a-0113-4c66-b165-8dae82817f24@suse.com>
X-ClientProxiedBy: MR1P264CA0172.FRAP264.PROD.OUTLOOK.COM
 (2603:10a6:501:55::20) To CH7PR03MB7860.namprd03.prod.outlook.com
 (2603:10b6:610:24e::14)
MIME-Version: 1.0
X-MS-PublicTrafficType: Email
X-MS-TrafficTypeDiagnostic: CH7PR03MB7860:EE_|LV3PR03MB7454:EE_
X-MS-Office365-Filtering-Correlation-Id: 26678cd3-d247-4b46-107d-08de9bb9fbf9
X-MS-Exchange-SenderADCheck: 1
X-MS-Exchange-AntiSpam-Relay: 0
X-Microsoft-Antispam:
	BCL:0;ARA:13230040|366016|376014|1800799024|18002099003|56012099003|22082099003;
X-Microsoft-Antispam-Message-Info:
	DfptKdScLk0MMtx7ZWVX316X7n9borN0OwiVmLZLK0eCWjY1vj6JoLmpzTqu6C7RAl7fljMlg8Hl0oHmO0v7JR+MclzWienujV2lYXXNVin/5nHaT3WFs+3XrDZEVMqZw3Qey2o9hvZCxpP6IEOoSG9Ag+hExDXJHbKqH7zMZW77NdJzcERRVFV2JHEbcVzskNX/U+M+e28KYp1O4ruzesg+3cosyat46ab/c9vk00HMtfSvPX1ySwWTjEshv9sykicfUeY7yXpZwrKa3SWlTjYCWy+5PJ6NKYw6eUJc4uJ+qwFYo8/5VU5nQyXf02cfauBgiGfZZK1okd07yYlhKPfTuHvfxu6NOikNJ3bQLALXLzHHcZTzPQpS8UoljSEvXN3ZdjsX+sC7DZm4QTe/xIBHoNhf57BPrq29yc8ImvaMmlYOC4IGyzLJ1aIHWNqf3MShEbIyDCCr8ztstfaI+teXJ2VijQD7VpgdxP+DO4mpNA1V7B5C2bvGNqTi2gxk7FU/6e0wffTaXzdjUpDW8Dz6jEOAfJgC/OEOtK/v/FLdzrHarttWvI4WZDSiqOFJnsUtzLPQ5C/NRv7VTIRBYhgSz9QetD+DBBIgN0HvKFPslZljQCdga6EOhfAmBJB4FVUWJNPkEIATNA7Uml20AZk2jgnwVlVb5O93AC50mILDvneb4e4/oklK2zNhPr4YgGL7YCaCrjLX0PNMI2aHrnVIXuV0MWv/jrq2K9p7rOg=
X-Forefront-Antispam-Report:
	CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:CH7PR03MB7860.namprd03.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(366016)(376014)(1800799024)(18002099003)(56012099003)(22082099003);DIR:OUT;SFP:1101;
X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1
X-MS-Exchange-AntiSpam-MessageData-0:
	=?utf-8?B?SG9pa1RLSE4yMk5VQWptWTBtckI3bERUcWxqaWpqTVgxYk5rVFJqbXBzbGtj?=
 =?utf-8?B?ZjE5NzdtRE5YVHhhdEdBOEg3ZmJ4QjRwQTVVUFNLeWwvOFhOck9YQUhKdUJX?=
 =?utf-8?B?bDlSdjNwa3BKZmZzajV1dTBzbkFuS1B1UTRUc0ZQWTRHOCthOXhxZTBzTktJ?=
 =?utf-8?B?WWVla25NaEFnMHppR1I1bk1YZkZLc0VoRDgvOG83ZXhyYVpYOXlQZUxKc3JZ?=
 =?utf-8?B?Qk1JZEdXWmgyYWN6ditJdzR1UDhWVlQ1WGZoZlpsRHR5WXJiNjZVWThoVXhw?=
 =?utf-8?B?QVNNMVJQSHJLbUU1UDVNTE5Ic1FLNXNlTnhwTEhPTDdnNktjdE0yckJ6bTdX?=
 =?utf-8?B?WUJUVk9tKy9lUU8vU0F5b3Nqd2hYR0pUQ1lpVjltQTV2d2lWbFpNRlA0VWpV?=
 =?utf-8?B?ZG9pcXA2L2tYaEtpUE01bEtBcXFud3hPamNwN20zWWRSa2xDc3hUZDZ1cURJ?=
 =?utf-8?B?bUhkYndBNUt6aEtrdzdBL0N4TnVzWE5ZRmdoNUpjbDRncFUrZ1VHNGpLRnla?=
 =?utf-8?B?T25WM0tFRWVHaTNvL1U2ZkVuemYwSHRSN1dXMTFyZGtnL1k3YWxJZUk3aXd4?=
 =?utf-8?B?WDZjMWJIMWdXbDF2WU91enczS21jV3R3WFg3aEtSY1Z5bW8xQVlTSGh0S1dO?=
 =?utf-8?B?QmRJeDVyeGhpN2FUN3gwaXpydzcwdlJZVmdzQWJnelNMUTdKT2N0bDgrVzVa?=
 =?utf-8?B?UnhyU1dsOUc0aVl1bEk5WDlKNGRRb2hUSjA3MU1jYzI4dk5MTUMzdGgxRC83?=
 =?utf-8?B?M09MTkRTdVpkekhsVlBIekpFUDZqWElnZU9vdFVsNXJlWE9IdzErdDRST1RB?=
 =?utf-8?B?MkZtd2ppUmJLSzFFejR4OUJLTTlnL3p2OSsyaGFHNGMwdS92Sk14SDJhckV1?=
 =?utf-8?B?N1pmOWJ4anNjUnVYbXU2TUxkWUFLU2k2ZUp4aGJJRnRVa0Q5VytqRFdTOVJx?=
 =?utf-8?B?bVZZN0F1K2NYb3JaZkJPbEQ0N29RZG5PSVVENmpnMFRYaHYwcFRWajNHZEJr?=
 =?utf-8?B?Z0p5QlM5THFvVnZPczRjMTdjR2s3RU5JaEZ1Z2FVaUtJcy85Rm52czJhNjZs?=
 =?utf-8?B?R3lENzlhb2E0UDVRaU5CUlJScVlCSXovVExzcStqdXloZXBuZ0lTc1dqV2xL?=
 =?utf-8?B?Q0hPdTNodjZMM21qYjlNR1U0TExsbmlwOC9JbjhZSDFOSWlWeW5velkzbm55?=
 =?utf-8?B?dktLM1pSQTVETXBPR2RSdHNxV2t4TkRmRzNTUm0yUm1oVVZQNXd4ZzRnUWtF?=
 =?utf-8?B?blpoTVdieGpzRkdZZmZTaVk3UFJFa0xmM08zWUN4U3hpS0VTNGdmZWFEbk5R?=
 =?utf-8?B?c25qNXlyUmg4RnRXSHY1TWRSTjdRcEplOEY3cEcra0tNSko4RUZUM0tMQ2M3?=
 =?utf-8?B?S2dUbFdtbXNwb3liK0xnbTVrbGhZMnZOV1d4VituNkMrV0duOWFoY2xYREkv?=
 =?utf-8?B?SzhHQU5nK3BwT3lWckQ1VGNaYXQxYlUzbnpiM2NYbVZSZW1RcU1hOXpHcGUx?=
 =?utf-8?B?a0owV1QyaDg1aEhaUGppU1J5ck56UFBXa1J3cXFPZjErNmNqbU1ONDZyQjlW?=
 =?utf-8?B?dWc1S1lSRXk5aTJ6REoxR2NsZDJURXhoU2JXcU5oVHhxc0pDNnNNdC9JWXda?=
 =?utf-8?B?QVY3OGxBQUtEQ2NORGhUSEExd3I0THo1SlQrVEZodmFUMlpXTjl5dmRhWi9x?=
 =?utf-8?B?alNUUCs5RWliY2hXdXExSFNMTTh6Vnlrc0g2UGlhNGZtTHIrZktSWmsyWTND?=
 =?utf-8?B?TnliZzl6Q0M5V1VkRDhnUzJJYXhuUGE0M25zMEdiL29wdng3bWp4UXhXbGxw?=
 =?utf-8?B?cjNlVWl6NWR3dm1wS0Vtdk1QVlNiQVJ6cEJYbHB6MFFLYWtnNkZKOFU0eHBj?=
 =?utf-8?B?N04vZG9MTzNZMm4rMEFoS3R3K2pjTk0xQnJ1enRaU1M5SllHcGQyY1JkTHRp?=
 =?utf-8?B?RGlZZkZRT092WEFxVGFJRTlIbjczNjBHYUQ3L1JGcThncnplM1haMDE1SlZo?=
 =?utf-8?B?ejNodDZLdlp1Z1NOd2dPRmlxUWFBYTdjUkRhYnQ0eG5RcHdlaHg3VHBQclRo?=
 =?utf-8?B?czFUWHFLM2pzV1lvWGVyNi83SGsyN09mWmZiWDVWaTRsVDZiOHlUK3hxckZz?=
 =?utf-8?B?ckVzUldCUHRwQXFvaEU1ZHU0SkpSV1N0ZEVnNEFzSy9sQlJpNHFEV2F3STN3?=
 =?utf-8?B?R3JOUjJHaWdhT25sTXdRRVp4c1NMWVIwMGhKQVp2QVUrMkZSRHBRUElYRWhZ?=
 =?utf-8?B?OGVYd1BlYzRjV1MzNWxCS2ZRM3RReE4wWWpYbTVUemxuRHpoaFUyUUtTQlBu?=
 =?utf-8?B?QVpOZ1EzMS9idnVJSXhkYW1UaXEvSHRTR09BUHhZcWxSSnVwdjlsZz09?=
X-OriginatorOrg: citrix.com
X-MS-Exchange-CrossTenant-Network-Message-Id: 26678cd3-d247-4b46-107d-08de9bb9fbf9
X-MS-Exchange-CrossTenant-AuthSource: CH7PR03MB7860.namprd03.prod.outlook.com
X-MS-Exchange-CrossTenant-AuthAs: Internal
X-MS-Exchange-CrossTenant-OriginalArrivalTime: 16 Apr 2026 13:13:43.4472
 (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: gu/cjmHgrWwpwQKmZj2/gGDYxVz2Ly0lj9YSVqtxKUleoMXAdgSpM8B5DEib3X4Br++GqiidauTzqRq73aDrJA==
X-MS-Exchange-Transport-CrossTenantHeadersStamped: LV3PR03MB7454
X-purgate-ID: tlsNG-4011c0/1776345228-CED708B7-5D6051A8/0/0
X-purgate-type: clean
X-purgate-size: 2512

On Thu, Apr 16, 2026 at 01:28:11PM +0200, Jan Beulich wrote:
> On 14.04.2026 12:33, Roger Pau Monne wrote:
> > When running HVM guest in native TSC mode avoid using the recalculated vTSC
> > scaling factors based on the cpu_khz value.  Using the kHz based frequency
> > leads to the TSC scaling values possibly not being the same as the ones
> > used by the per CPU cpu_time->tsc_scale field, which introduces skew
> > between the guest and Xen's calculations of the system time.
> > 
> > On a 2gHz system, where the frequency is possibly detected as 1999999999Hz
> > (note this is a worse-case scenario), the cpu_khz variable will be set to
> > 1999999kHz, and hence 999Hz cycles will be not accounted for per second.
> > Over a second (the time synchronization period), this leads to a skew of:
> > 
> > cycles * 1 / (Hz freq) = 999 / 1999999999 = 499,5ns
> > 
> > So far this has gone unnoticed because the time synchronization rendezvous
> > forces the update of the tsc_timestamp and system_time fields in the vCPU
> > time info area, and hence the skew only accumulates up to the rendezvous
> > period.  Attempting to remove the rendezvous causes the skew to grow
> > unbounded.
> > 
> > Fix by using the native TSC scaling values (as used by Xen) when the guest
> > TSC is not scaled.
> > 
> > Fixes: eab8a90be723 ("x86/time: scale host TSC in pvclock properly")
> > Signed-off-by: Roger Pau Monné <roger.pau@citrix.com>
> > ---
> > I'm worried about the usage of cpu_khz beyond simple printing it for
> > informational purposes.  Overall I think it would be safer to store the
> > frequency in Hz, as to avoid losing the least significant digits.
> > 
> > In any case, that's a different change.
> 
> I'm not quite sure - improving accuracy is of course a good thing, but will
> we ever be able to do any such calculations error free, when already the
> detected frequency isn't exactly precise?

I think getting them fully accurate is not strictly required.  The
specific issue here was that the guest was supposedly running with the
native TSC frequency, but the vCPU time info scaling factors where
(slightly) different from the ones using natively by Xen, hence resulting in a
time skew.

When the guest runs with a different TSC frequency Xen already
accounts for it properly, and hence there's no skew.

However, as noted in the next patch, I don't really see the benefit of
storing the frequency in kHz instead of using plain Hz.

Thanks, Roger.


From xen-devel-bounces@lists.xenproject.org Thu Apr 16 13:19:28 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 16 Apr 2026 13:19:28 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1283457.1565677 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wDMcu-0001la-7e; Thu, 16 Apr 2026 13:19:24 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1283457.1565677; Thu, 16 Apr 2026 13:19: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 1wDMcu-0001lT-4C; Thu, 16 Apr 2026 13:19:24 +0000
Received: by outflank-mailman (input) for mailman id 1283457;
 Thu, 16 Apr 2026 13:19:23 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <jbeulich@suse.com>) id 1wDMct-0001lN-Cb
 for xen-devel@lists.xenproject.org; Thu, 16 Apr 2026 13:19:23 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wDMcs-00GuqK-Lg
 for xen-devel@lists.xenproject.org; Thu, 16 Apr 2026 15:19:22 +0200
Received: from [10.42.69.3] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <jbeulich@suse.com>)
 id 69e0e1d0-5cb7-0a2a0a5109dd-0a2a4503929e-30
 for <xen-devel@lists.xenproject.org>; Thu, 16 Apr 2026 15:19:22 +0200
Received: from [209.85.221.46] (helo=mail-wr1-f46.google.com)
 by tlsNG-33051d.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.1)
 (envelope-from <jbeulich@suse.com>)
 id 69e0e1da-672d-0a2a45030019-d155dd2eb99d-3
 for <xen-devel@lists.xenproject.org>; Thu, 16 Apr 2026 15:19:22 +0200
Received: by mail-wr1-f46.google.com with SMTP id
 ffacd0b85a97d-43d7605ec91so4105872f8f.3
 for <xen-devel@lists.xenproject.org>; Thu, 16 Apr 2026 06:19:22 -0700 (PDT)
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-43ead33d65asm13631868f8f.4.2026.04.16.06.19.21
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Thu, 16 Apr 2026 06:19:21 -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=google header.d=suse.com header.i="@suse.com" header.h="Content-Transfer-Encoding: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=1776345562; x=1776950362; darn=lists.xenproject.org;
        h=content-transfer-encoding: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;
        bh=IxcODoIkQA3TUCT0RAhFK0C7/Zce95cYCusS/fgNfBU=;
        b=Rp9qztql+AzFwMD8fbQrBv+T2Cde0qsuBVxRGAEtWMWfR3rwQc0JhQgPsaETXiShZK
         gqevnGYoTIbXSCrwdPlK8rpYfSpV9zPmzIbe5NYKZ2i2KuZ5kSPhcLDtXq/eA+GMh0Eh
         52/IDJQx24UkCOivLmXVLK2qnD3TCv5Dl9b4+9j0kEMXwqgVnvfU+pXLK6koBJe5nwcl
         P7u7Ru9D77hgVw0JTOx4RSgvrctsy4RGXYomXAs66uuOGU6jx1iFLocopSgxgT/1s4zk
         qNiqJOSk0NPJySdGGRnLUyNv4qYVv84UOI4iYxa7d/87TAF64G11mCFPg7FS+dUl3L2b
         iovw==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20251104; t=1776345562; x=1776950362;
        h=content-transfer-encoding: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;
        bh=IxcODoIkQA3TUCT0RAhFK0C7/Zce95cYCusS/fgNfBU=;
        b=LzC1X0EoNP9u28kDPrTqHSnNxGdAN/Lkv71ehf62jqvROibHum2ggcA3HE3diB//sr
         d00i2hsgF966Cvw1lB7585ZC7CWnqStSvZMuDKApRMVNtizpkOMe1Oxl33xmkOlU11Ee
         EFud7x80X5rATWMRkDNYs/R0dTAJjzxc7SqUEUIEeYua7KneR6eDGALgsmsvDfbiZCKq
         lvWjZ8YGxXQjmipqed4rbmfJvyDR5CuyCtTMah2dC/UFtM1sjQJlMvCQ/TgwZqVFt8is
         sgaCj5Hbxb4mDeD83IjisfEKVmn058GGla4lq+W8dIhrfDQ/bhjAa90cuPNz8tzZrmFS
         UjSQ==
X-Forwarded-Encrypted: i=1; AFNElJ9FUwpBvIvLzBKcfCr3RVz8ovojRhOayXkbHEtjIIAQUscS8g18AqrWxLZ9fkrxqTYfxckpmK/H83E=@lists.xenproject.org
X-Gm-Message-State: AOJu0YzLFdtpuSAGysJlDB56PbnWXN3utvrS4IB0W6sXZLt3YgxLk3lS
	52/hVv1NZ+PBiNfQUY/b84g6GWWMyv/8fvKVP1nEPRajc+FTCPhAoWC4vIPLPgyHzg==
X-Gm-Gg: AeBDievnS0dFlWVqc/8SB5Ml0zPTcFXCIbKBJ5QNUFo5uJtJwkPIhASOOmmnzr2COPd
	e2aitZk64fNVoJuVc6iB56ovy1H/FZSxOYqcB1iwrl4G3LbpTXd1mQ6X0CKxOcNYWC4i4rIbeVF
	IDV7N/68HVNoPwNsrCe/XVBhiVVfo8Q3StdnEmDTX44xPUOyovT2mXKPsK6kkE7Y2f18pHBltxi
	Zdwsb1z9M34FMeVTh/rc2f6mnjAlg4/DD50ERKjlXpTfPZ8WDph9Iz6AKh9ZeBTKgTefgGzqOS5
	Jj5G7PBwnzJEL1Q3L3u0ZyjNkY802S5REqwhOGXZqKb8rK65gZV3gA8eqrlYLCUQXKOxkQg9nuP
	Ieh+eLZA4UIgBK5Pz0Y2VuuhljCYMWTdHrmMgOAy6MpP2qy6nTjuKsRSkBriuNY++BjPs+Ez7Eo
	sjJjDl7CD/u4PPGPfYjiN1Y3qrFcfRXoKRuErf3//NxTF6bMlEkZ3qSK4w+Vdjyp4ctBfU+DFvI
	CH+reqQmutsxbFOs9vEmzhjqQ==
X-Received: by 2002:a5d:5d12:0:b0:439:ae2a:755e with SMTP id ffacd0b85a97d-43d642c4f2dmr41210582f8f.23.1776345561738;
        Thu, 16 Apr 2026 06:19:21 -0700 (PDT)
Message-ID: <910f0720-1e83-4b0d-a1bd-09799d6f8264@suse.com>
Date: Thu, 16 Apr 2026 15:19:24 +0200
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH v1 19/27] xen/riscv: emulate guest writes to virtual APLIC
 MMIO
To: Oleksii Kurochko <oleksii.kurochko@gmail.com>
Cc: Romain Caritey <Romain.Caritey@microchip.com>,
 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.pau@citrix.com>,
 Stefano Stabellini <sstabellini@kernel.org>, xen-devel@lists.xenproject.org
References: <cover.1773157782.git.oleksii.kurochko@gmail.com>
 <e29eace5006929e61da347814b9759896d179e28.1773157782.git.oleksii.kurochko@gmail.com>
 <2bff40f5-2eef-4e72-8191-b3442607e0e4@suse.com>
 <76ea5954-89cd-47a4-872a-239bbc08b785@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: <76ea5954-89cd-47a4-872a-239bbc08b785@gmail.com>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 7bit
X-purgate-ID: tlsNG-33051d/1776345562-28D73938-A21EBDAF/0/0
X-purgate-type: clean
X-purgate-size: 8861

On 14.04.2026 18:04, Oleksii Kurochko wrote:
> On 4/2/26 4:18 PM, Jan Beulich wrote:
>> On 10.03.2026 18:08, Oleksii Kurochko wrote:
>>> @@ -127,6 +137,164 @@ int vaplic_map_device_irqs_to_domain(struct domain *d,
>>>       return 0;
>>>   }
>>>   
>>> +static void vaplic_dm_update_target(const unsigned long hart_id, uint32_t *iprio)
>>> +{
>>> +    *iprio &= APLIC_TARGET_IPRIO_MASK;
>>> +    *iprio |= (hart_id << APLIC_TARGET_HART_IDX_SHIFT);
>>> +}
>>> +
>>> +static void vaplic_update_target(const struct imsic_config *imsic,
>>> +                                 const int guest_id,
>>> +                                 const unsigned long hart_id, uint32_t *value)
>>> +{
>>> +    unsigned long group_index;
>>> +    unsigned int hhxw = imsic->group_index_bits;
>>> +    unsigned int lhxw = imsic->hart_index_bits;
>>> +    unsigned int hhxs = imsic->group_index_shift - IMSIC_MMIO_PAGE_SHIFT * 2;
>>> +    unsigned long base_ppn = imsic->msi[hart_id].base_addr >> IMSIC_MMIO_PAGE_SHIFT;
>>> +
>>> +    group_index = (base_ppn >> (hhxs + 12)) & (BIT(hhxw, UL) - 1);
>>
>> And there's no constant available to make this literal 12 more descriptive?
> 
> As it was used in aplic_set_irq_affinity() - IMSIC_MMIO_PAGE_SHIFT could 
> be used here.
> 
>>
>>> +    *value &= APLIC_TARGET_EIID_MASK;
>>> +    *value |= guest_id << APLIC_TARGET_GUEST_IDX_SHIFT;
>>> +    *value |= hart_id << APLIC_TARGET_HART_IDX_SHIFT;
>>> +    *value |= group_index << (lhxw + APLIC_TARGET_HART_IDX_SHIFT) ;
>>> +}
>>
>> Both functions returning void right now, why would they need to return their
>> result via indirection?
> 
> No specific reason. Do you think it would be better just to return value 
> instead? I am okay to rework that.

Rule of thumb is: Use return value in preference to indirection when the
returned value isn't needed for some other purpose.

>>> +#define CALC_REG_VALUE(base) \
>>> +{ \
>>> +    uint32_t index; \
>>> +    uint32_t tmp_val; \
>>
>> Combine these two, or have the variables have initializers?
>>
>>> +    index = regval_to_irqn(offset - base); \
>>
>> There's no "offset" declared or passed into here, nor ...
>>
>>> +    tmp_val = APLIC_REG_GET(priv->regs, aplic_addr) & ~auth_irq_bmp[index]; \
>>
>> ... "priv", nor ...
>>
>>> +    value &= auth_irq_bmp[index]; \
>>> +    value |= tmp_val; \
>>
>> ... "value". It may remain like this, but then it wants putting inside the
>> sole function that uses it, and be #undef-ed at the end of the function.
>>
>>> +}
>>
>> Please wrap in do/while(0), for use sites to be required to have semicolons
>> (and hence look like normal statements). Or make it a statement expression
>> properly returning the calculated value.
> 
> I will put the following inside the function + undef at the end:
> 
> #define CALC_REG_VALUE(base) do {                               \ 
>                                    \

Nit: Why this extra line?

>>> +static int cf_check vaplic_emulate_store(const struct vcpu *vcpu,
>>> +                                         unsigned long addr, uint32_t value)
>>> +{
>>> +    struct vaplic *vaplic = to_vaplic(vcpu->domain->arch.vintc);
>>> +    struct aplic_priv *priv = vaplic->base.info->private;
>>> +    uint32_t offset = addr & APLIC_REG_OFFSET_MASK;
>>
>> See ./CODING_STYLE as to uses of fixed-width types.
>>
>>> +    unsigned long aplic_addr = addr - priv->paddr_start;
>>> +    const uint32_t *auth_irq_bmp = vcpu->domain->arch.vintc->private;
>>> +
>>> +    switch ( offset )
>>> +    {
>>> +    case APLIC_SETIP_BASE ... APLIC_SETIP_LAST:
>>
>> And (taking this just as example) any misaligned accesses falling in this range
>> are fine?
> 
> Do you mean something like 0x1C02 instead of 0x1C00 or 0x1C04?

Yes.

>>> +        /*
>>> +         * As sourcecfg register starts from 1:
>>> +         *   0x0000 domaincfg
>>> +         *   0x0004 sourcecfg[1]
>>> +         *   0x0008 sourcecfg[2]
>>> +         *    ...
>>> +         *   0x0FFC sourcecfg[1023]
>>> +         * It is necessary to calculate an interrupt number by substracting
>>
>> Nit: subtracting
>>
>>> +         * of APLIC_DOMAINCFG instead of APLIC_SOURCECFG_BASE.
>>> +         */
>>> +        if ( !AUTH_IRQ_BIT(regval_to_irqn(offset - APLIC_DOMAINCFG)) )
>>> +            /* interrupt not enabled, ignore it */
>>
>> Throughout the series: Please adhere to ./CODING_STYLE.
>>
>>> +            return 0;
>>> +
>>> +        break;
>>
>> And any value is okay to write?
> 
> No, it should be in a range 
> [APLIC_SOURCECFG_SM_INACTIVE,APLIC_SOURCECFG_SM_LEVEL_LOW].
> 
> I will add the check before break:
>          if ( value > APLIC_SOURCECFG_SM_LEVEL_LOW )
>          {
>              gdprintk(XENLOG_WARNING,
>                       "value(%u) is incorrect for sourcecfg register\n", 
> value);
>              value = APLIC_SOURCECFG_SM_INACTIVE;
>          }

And why would writing APLIC_SOURCECFG_SM_INACTIVE be any better, when
that's not what the guest wanted? Simply ignore such writes, unless the
spec mandates specific behavior for out-of-range avlues?

>>> +    case APLIC_TARGET_BASE ... APLIC_TARGET_LAST:
>>> +        struct vcpu *target_vcpu = NULL;
>>> +
>>> +        /*
>>> +         * Look at vaplic_emulate_load() for explanation why
>>> +         * APLIC_GENMSI is substracted.
>>> +         */
>>
>> There's no vaplic_emulate_load() - how can I go look there?
> 
> It is introduced in the next patch.

As before - it should be possible to review patch series strictly
sequentially. Further, what if this patch gets committed, and the other
gets delayed by several months?

>>> +        if ( !AUTH_IRQ_BIT(regval_to_irqn(offset - APLIC_GENMSI)) )
>>> +            /* interrupt not enabled, ignore it */
>>> +            return 0;
>>> +
>>> +        for ( int i = 0; i < vcpu->domain->max_vcpus; i++ )
>>
>> unsigned int
>>
>>> +        {
>>> +            struct vcpu *v = vcpu->domain->vcpu[i];
>>> +
>>> +            if ( v->vcpu_id == (value >> APLIC_TARGET_HART_IDX_SHIFT) )
>>> +            {
>>> +                target_vcpu = v;
>>> +                break;
>>> +            }
>>> +        }
>>> +
>>> +        ASSERT(target_vcpu);
>>
>> What guarantees the pointer to be non-NULL? The incoming value can be
>> arbitrary, afaict.
> 
> I didn't understand your point. It is just checking that target_vcpu has 
> been found. If after for() loop the value of target_vcpu is still NULL 
> then something wrong in Xen.

If that's true, then the assertion is fine to have. I can't help the
impression though that a guest could pick a value such that you can't
possibly find the target vCPU. Asserting on guest controlled input is
not okay, as was said several times before.

>>> +        if ( !(vaplic->regs.domaincfg & APLIC_DOMAINCFG_DM) )
>>> +        {
>>> +            vaplic_dm_update_target(cpuid_to_hartid(target_vcpu->processor),
>>> +                                    &value);
>>> +        }
>>> +        else
>>> +            vaplic_update_target(priv->imsic_cfg,
>>> +                                 vcpu_guest_file_id(target_vcpu),
>>> +                                 cpuid_to_hartid(target_vcpu->processor),
>>> +                                 &value);
>>
>> I'm struggling with the naming here: When DM is clear, a function with "dm"
>> in the name is called.
> 
> it means direct (delivery) mode. Maybe it is better to put dm at the end 
> of the function name? Or it is just better to change it to something else?

Without a better understanding of what is wanted, all I can say is that
calling something with "dm" in its name when the condition says it's not
"dm" is confusing.

>>> +    default:
>>> +        panic("%s: unsupported register offset: %#x\n", __func__, offset);
>>
>> Crashing the host for the guest doing something odd? It's odd that the function
>> only ever returns 0 anyway - it could simply return an error here (if the
>> itention is to not ignore such writes).
> 
> But maybe it is a legal offset and we really want to support it?

Still not a reason to crash the entire host?

> Even if I will return just error then a caller site will want to do 
> something with this error -> for example, kill domain or panic() again. 
> Maybe panic is to much and just domain should be crashed here:
> 
> default:
>      gdprintk(XENLOG_WARNING,
>               "Unhandled APLIC write at offset %#x (value %#x)\n",
>               offset, value);
>      domain_crash(vcpu->domain);
>      return 0;
> ?

This would already be better. You shouldn't use gdprintk() with
domain_crash() though. Please take a look at domain_crash()'s
definition - you'll then see what to do, I suppose.

Jan


From xen-devel-bounces@lists.xenproject.org Thu Apr 16 13:21:06 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 16 Apr 2026 13:21:06 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1283467.1565686 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wDMeW-0003EH-Hs; Thu, 16 Apr 2026 13:21:04 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1283467.1565686; Thu, 16 Apr 2026 13:21: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 1wDMeW-0003EA-En; Thu, 16 Apr 2026 13:21:04 +0000
Received: by outflank-mailman (input) for mailman id 1283467;
 Thu, 16 Apr 2026 13:21:03 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <jbeulich@suse.com>) id 1wDMeV-0003E4-GV
 for xen-devel@lists.xenproject.org; Thu, 16 Apr 2026 13:21:03 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wDMeU-00DMYA-TC
 for xen-devel@lists.xenproject.org; Thu, 16 Apr 2026 15:21:02 +0200
Received: from [10.42.69.11] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <jbeulich@suse.com>)
 id 69e0e237-5cb7-0a2a0a5109dd-0a2a450b88c6-34
 for <xen-devel@lists.xenproject.org>; Thu, 16 Apr 2026 15:21:02 +0200
Received: from [209.85.221.45] (helo=mail-wr1-f45.google.com)
 by tlsNG-42698a.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.1)
 (envelope-from <jbeulich@suse.com>)
 id 69e0e23e-212f-0a2a450b0019-d155dd2dc05b-3
 for <xen-devel@lists.xenproject.org>; Thu, 16 Apr 2026 15:21:02 +0200
Received: by mail-wr1-f45.google.com with SMTP id
 ffacd0b85a97d-43d7badbd7dso2246106f8f.2
 for <xen-devel@lists.xenproject.org>; Thu, 16 Apr 2026 06:21:02 -0700 (PDT)
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-43ead3d5fe1sm13738643f8f.22.2026.04.16.06.21.01
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Thu, 16 Apr 2026 06:21:01 -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=google header.d=suse.com header.i="@suse.com" header.h="Content-Transfer-Encoding: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=1776345662; x=1776950462; darn=lists.xenproject.org;
        h=content-transfer-encoding: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;
        bh=38I4je6p1nKTDmZWOKPmUPcjOJSmN3fHIloZh5xQ0bM=;
        b=d1M/EzcHPlGMEXV8voe+nCoMNEzHk2aGm3uC9qBeoOChHQ3paq3ugSzoa/zGC0hmZg
         7TDWldBZ4y4U86HMW7ysa0CCmsqJDJMLGUM4HHKYi9KcsYkkgdCFZTEcOYkCwT2rlK+H
         NOUiShsCUmK42HA9iij0w+OT20CoFrcr8ltc23bPxiIdURTauIkKrmKpVIptelTAK+/s
         sLMqvUW8TEasjIa7U0RCPNE6eaK+MJ6fcPg7/CUdNx3pqjbVuP7jixfdqey0NOZiDdEp
         JhzZJqVQ8fViJt8wRUgaA3CgGYrpkdt4YuUDJqOPOtuFNgInI8ImjiRXFzlUvC6bIdbH
         s0nw==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20251104; t=1776345662; x=1776950462;
        h=content-transfer-encoding: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;
        bh=38I4je6p1nKTDmZWOKPmUPcjOJSmN3fHIloZh5xQ0bM=;
        b=jZzyHxKBPzda2qfPmYAEw/Tv+EGUhyZaRO3OgXs/++91ib+8E7v6J8+A6YJ2HWQTQU
         3SLafBdMjweM7Qz1OSAGtP7ZnuJLrhGviImTGm6mIaUb2L7ul1hFP42WRS/rojdrYEb+
         0Zp8PjADq87Bn7k8/hkxhXfNfpZfruSJl4YXAo5zV9lPSO1IvqmDbOIO9a98nFecrGBG
         4LO2fPRWM8jAITJTtq1inPWsDi29/yvZ7oEtUYf/Qtf5tn+SiQ9bdGv0TrDCCaL/L/em
         VWyTRqfj6T20LGXY+Om8kvpqHP/lq/8lBUuMpTN/P1OTj8eXnSjgrtgtjheEQVDHUBJi
         5qyQ==
X-Forwarded-Encrypted: i=1; AFNElJ9jHDXsYMs2bAoJ3xwYKxD4226OdjMACcC5Ji1HdxjROcQDW/+OcmrFmSRdD3YeoyYz6f2ChBNrzhg=@lists.xenproject.org
X-Gm-Message-State: AOJu0YxVt8iX7YrFZcfwodLmtjablPI/S6114cIR86aYrBoyXBDiotmh
	KFL4/xzPfuhrh5mWUoF3fBHYBE83RPrUmNg15NK92OqMfphPvzDlStnmW9AGbv5jbQ==
X-Gm-Gg: AeBDievmNXbRUCFKR59hWurx5ItEgASkQCZ7nmNMrvu9L8WxFLoThB6/lMIZww/nbN8
	Ubs0xmIjQbdVXa3zsgUs4ofgnegHqu7VUdMJu/V8v3p7C5/qIG+UhyIhwX8p+Nx8lMVa6OdzN4e
	VkMoQn2RvsePzmPWM+pH/JOsWWfI1ys7Fw5yaTwdWCSSLLr4lK3v3g3+UxgxKdyFViZeFPIhvCr
	XGGpK7w/KsoRf5g7BxVbtchge+lRHWtxFUk9wPMaT+xQaYgu6J2rLukeuhw+XlWkr6gYy1/oRIW
	u0PSHyXW0TB7QvXqUMqxpEUBAkcyk++YGgWr3To8bonXbZ6H6Q7SKnLOcTEIUaPlri+eIl7k5+L
	alr1gldgZR1bss+I7stpXjrWy94EtExGhTwA4lml1xyTBaIlEHPmuT+zsiTEVHGAMN5byT2oS/K
	R6Pt05sCNYBzfUVkmrE3BWq1huW5kU6uYJCS2DUBb45tsb+M3OLWHnKq43KgD9SsLrkQZEuzoiq
	e6ogs6iIDXQrPeclqSzyUIFVg==
X-Received: by 2002:a5d:5d83:0:b0:43d:1c4a:37c with SMTP id ffacd0b85a97d-43d64254fb0mr35706576f8f.4.1776345662152;
        Thu, 16 Apr 2026 06:21:02 -0700 (PDT)
Message-ID: <2d8e0307-6885-4be7-b95c-23d5d2ba7b2c@suse.com>
Date: Thu, 16 Apr 2026 15:21:05 +0200
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH 1/2] x86/time: use native TSC scaling factors when TSC is
 not scaled
To: =?UTF-8?Q?Roger_Pau_Monn=C3=A9?= <roger.pau@citrix.com>
Cc: Andrew Cooper <andrew.cooper3@citrix.com>,
 Teddy Astie <teddy.astie@vates.tech>, xen-devel@lists.xenproject.org
References: <20260414103327.7420-1-roger.pau@citrix.com>
 <20260414103327.7420-2-roger.pau@citrix.com>
 <f424bf3a-0113-4c66-b165-8dae82817f24@suse.com>
 <aeDgg2gB09-G2FQD@macbook.local>
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: <aeDgg2gB09-G2FQD@macbook.local>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
X-purgate-ID: tlsNG-42698a/1776345662-7DB68F3B-71A57B2E/0/0
X-purgate-type: clean
X-purgate-size: 2679

On 16.04.2026 15:13, Roger Pau Monné wrote:
> On Thu, Apr 16, 2026 at 01:28:11PM +0200, Jan Beulich wrote:
>> On 14.04.2026 12:33, Roger Pau Monne wrote:
>>> When running HVM guest in native TSC mode avoid using the recalculated vTSC
>>> scaling factors based on the cpu_khz value.  Using the kHz based frequency
>>> leads to the TSC scaling values possibly not being the same as the ones
>>> used by the per CPU cpu_time->tsc_scale field, which introduces skew
>>> between the guest and Xen's calculations of the system time.
>>>
>>> On a 2gHz system, where the frequency is possibly detected as 1999999999Hz
>>> (note this is a worse-case scenario), the cpu_khz variable will be set to
>>> 1999999kHz, and hence 999Hz cycles will be not accounted for per second.
>>> Over a second (the time synchronization period), this leads to a skew of:
>>>
>>> cycles * 1 / (Hz freq) = 999 / 1999999999 = 499,5ns
>>>
>>> So far this has gone unnoticed because the time synchronization rendezvous
>>> forces the update of the tsc_timestamp and system_time fields in the vCPU
>>> time info area, and hence the skew only accumulates up to the rendezvous
>>> period.  Attempting to remove the rendezvous causes the skew to grow
>>> unbounded.
>>>
>>> Fix by using the native TSC scaling values (as used by Xen) when the guest
>>> TSC is not scaled.
>>>
>>> Fixes: eab8a90be723 ("x86/time: scale host TSC in pvclock properly")
>>> Signed-off-by: Roger Pau Monné <roger.pau@citrix.com>
>>> ---
>>> I'm worried about the usage of cpu_khz beyond simple printing it for
>>> informational purposes.  Overall I think it would be safer to store the
>>> frequency in Hz, as to avoid losing the least significant digits.
>>>
>>> In any case, that's a different change.
>>
>> I'm not quite sure - improving accuracy is of course a good thing, but will
>> we ever be able to do any such calculations error free, when already the
>> detected frequency isn't exactly precise?
> 
> I think getting them fully accurate is not strictly required.  The
> specific issue here was that the guest was supposedly running with the
> native TSC frequency, but the vCPU time info scaling factors where
> (slightly) different from the ones using natively by Xen, hence resulting in a
> time skew.
> 
> When the guest runs with a different TSC frequency Xen already
> accounts for it properly, and hence there's no skew.

As "properly" isn't "accurate", I expect there'll still be some skew.

> However, as noted in the next patch, I don't really see the benefit of
> storing the frequency in kHz instead of using plain Hz.

That would reduce the error, yes.

Jan


From xen-devel-bounces@lists.xenproject.org Thu Apr 16 13:23:05 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 16 Apr 2026 13:23:05 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1283476.1565695 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wDMgR-0003li-TC; Thu, 16 Apr 2026 13:23:03 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1283476.1565695; Thu, 16 Apr 2026 13:23: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 1wDMgR-0003la-PS; Thu, 16 Apr 2026 13:23:03 +0000
Received: by outflank-mailman (input) for mailman id 1283476;
 Thu, 16 Apr 2026 13:23:02 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <jbeulich@suse.com>) id 1wDMgQ-0003lU-EY
 for xen-devel@lists.xenproject.org; Thu, 16 Apr 2026 13:23:02 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wDMgP-0068ym-RH
 for xen-devel@lists.xenproject.org; Thu, 16 Apr 2026 15:23:01 +0200
Received: from [10.42.69.4] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <jbeulich@suse.com>)
 id 69e0e2b4-e002-0a2a0a5209dd-0a2a4504c3f2-4
 for <xen-devel@lists.xenproject.org>; Thu, 16 Apr 2026 15:23:01 +0200
Received: from [209.85.221.47] (helo=mail-wr1-f47.google.com)
 by tlsNG-ebf023.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.1)
 (envelope-from <jbeulich@suse.com>)
 id 69e0e2b5-1dec-0a2a45040019-d155dd2fc855-3
 for <xen-devel@lists.xenproject.org>; Thu, 16 Apr 2026 15:23:01 +0200
Received: by mail-wr1-f47.google.com with SMTP id
 ffacd0b85a97d-43d77f6092eso3197659f8f.2
 for <xen-devel@lists.xenproject.org>; Thu, 16 Apr 2026 06:23:01 -0700 (PDT)
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-43ead401ca0sm11926954f8f.36.2026.04.16.06.23.00
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Thu, 16 Apr 2026 06:23:00 -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=google header.d=suse.com header.i="@suse.com" header.h="Content-Transfer-Encoding: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=1776345781; x=1776950581; darn=lists.xenproject.org;
        h=content-transfer-encoding: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;
        bh=6pf3671NTwEiOWiYjLsnWF/6efG9p8gClwjWZsuq4Qo=;
        b=UgPjwFc3p+ot4PSAsUo346TFuuKkjoBus3b6/TpfQrDfKBgRy0Nxiv62mYb0NI+dlG
         Kle0Tw+D2s2N5MAThjZc6e+13a2NlLu8yDxDla4HPIgr9TXOFEIcQdey00GBdh/k5osi
         Mz5o2H8JSFAeGvEDr9AgSjRgGImZrXQ5dE/ydLg0OjqDHJ8GiD2PBuHDl1s7auoOkYvL
         CdhyP+PEpDr8HMe2Ar7Uh/W+FbbivUlwnjIrfq4ktBLKJmU5ohEsQp4JLnJAVJ74dPt+
         RuXhveBsaIhatbB1H7+k2Z6GMTwCLGKEh5LjVmouwLDh+gfJKNGwjIgRsQOCDkT1IGUP
         9oDg==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20251104; t=1776345781; x=1776950581;
        h=content-transfer-encoding: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;
        bh=6pf3671NTwEiOWiYjLsnWF/6efG9p8gClwjWZsuq4Qo=;
        b=ZAsfGI0UmCT27zWvH68cShiqbjNf2ecUE9njUHihpVK/GLd27Thyr+ou3QGqPHD83R
         hWK4Xs5H1rW88NN8u5obQuU+YvO4aCN8XHGQBuHsXyp8knvgPQ/yT78VVhBmNGqas2c/
         nBeCVN7wC9GDbWxqLEBAEBltjt+83rc38f+sYpIeQEtU3XWVs45DabU1y8fE7HHyg4/I
         mf8c/nROoRKZovQfPB+jcWsD/0YkugvRxngpGcYuui79kEmQ+yf6BAW075l/14MRLEh8
         9ShvmYhzJyvcsm7//yCu+fWERYi1xCldMDXEC/ClG3LHXgx1gGErCB7zu1USMdEt4Bgs
         4BJw==
X-Forwarded-Encrypted: i=1; AFNElJ8391NNsVu5VNO6L7xVx0Jyup1xkF5gDkr23xZ3pYXk6QlT25m7gNkTeye3Tv5hdbF4C1pBDLl6E9Q=@lists.xenproject.org
X-Gm-Message-State: AOJu0YzV5entDxPq+ilzqtBoUpocNNO6F5u2uiTmWCULb1jxKlKGslTh
	BSKekzqFHEgSoBpWzivElZuwC16oZKmMmCwaZWiUeuSdTclvVacfl/NAMpt+nfpyWg==
X-Gm-Gg: AeBDiesRfpPC23rCZTTVAg2XpP4YieRzsGwmHPBrqjEYbHwA0ItUS5Q9AVFKEeaa3wo
	hFziIf1KxXSTLVukgqnrmP51ovxDMEETI9Ur7GyJR28z/xNWXCOcJ75rjqDmQdVCjBT3pF4yQ7s
	ObRKfaRqYNfipeMBcUADHRjlw0gLTCl9p1+zkEGiWw4hGyKgcylO/7kfSkauo9tcDAUlNBgwORd
	wDl5Ojon+7DNE6qxQJO27Hks9M6FqKMCU0XVbK/aFmRy/gfWm/ZbCcYJLGl8lQfor/VsF5JtQbP
	iNHZrxmOO8RDgxKurGUApxFRzkK37Vs9nsIb0qJ3vyWi5Thv3j4YTA13dX5hY2x8GkJX61U2pzA
	KP/5hdmYVZNKZG2UCy7EC0XH5YK85d85FqoGN1VduAVUoNqB0s4tXEBA6Bo1+QWMSsdKCWc6CYK
	RastEnYXIp184MCZ8inW5JRV2zmdoVBPsYYWVr9pW2vwVkR09LWCTTfNeC9NVFutGY4TSj2VUFs
	q81JrgXy2r49OlW23r1t9ry2A==
X-Received: by 2002:a05:6000:1ac5:b0:43c:fa96:d939 with SMTP id ffacd0b85a97d-43d6429c737mr39995638f8f.22.1776345781157;
        Thu, 16 Apr 2026 06:23:01 -0700 (PDT)
Message-ID: <db7a0b75-d854-43ed-a345-243603a3631a@suse.com>
Date: Thu, 16 Apr 2026 15:23:03 +0200
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH v1 21/27] xen/riscv: introduce (de)initialization helpers
 for vINTC
To: Oleksii Kurochko <oleksii.kurochko@gmail.com>
Cc: Romain Caritey <Romain.Caritey@microchip.com>,
 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.pau@citrix.com>,
 Stefano Stabellini <sstabellini@kernel.org>, xen-devel@lists.xenproject.org
References: <cover.1773157782.git.oleksii.kurochko@gmail.com>
 <61311834fef7cf8a736a8fa972b6461bbfd46e6d.1773157782.git.oleksii.kurochko@gmail.com>
 <cf20ebc8-ff58-456d-a7f6-c844cb427306@suse.com>
 <6f4b3a0b-8c13-4c54-afa1-2893aa967254@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: <6f4b3a0b-8c13-4c54-afa1-2893aa967254@gmail.com>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 7bit
X-purgate-ID: tlsNG-ebf023/1776345781-291763FF-7BF149C4/0/0
X-purgate-type: clean
X-purgate-size: 872

On 15.04.2026 09:50, Oleksii Kurochko wrote:
> On 4/2/26 4:58 PM, Jan Beulich wrote:
>> On 10.03.2026 18:08, Oleksii Kurochko wrote:
>>> @@ -87,3 +88,42 @@ int map_device_irqs_to_domain(struct domain *d, struct dt_device_node *dev,
>>>       return d->arch.vintc->ops->map_device_irqs_to_domain(d, dev, need_mapping,
>>>                                                            irq_ranges);
>>>   }
>>> +
>>> +int __init domain_vintc_init(struct domain *d)
>>
>> The __init here and below is questionable again.
> 
> This function is called during construction domain only, what happen 
> when __init section exists. So it is okay to have __init here.
> 
> Any use cases where it isn't true?

See my earlier reply. Imo it is wrong for you to tailor the code to 
dom0less-only operation, with no domains ever created (or destroyed)
at runtime.

Jan


From xen-devel-bounces@lists.xenproject.org Thu Apr 16 14:13:22 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 16 Apr 2026 14:13:22 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1283504.1565705 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wDNSu-0002d5-CN; Thu, 16 Apr 2026 14:13:08 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1283504.1565705; Thu, 16 Apr 2026 14:13: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 1wDNSu-0002cy-8g; Thu, 16 Apr 2026 14:13:08 +0000
Received: by outflank-mailman (input) for mailman id 1283504;
 Thu, 16 Apr 2026 14:13:06 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <jbeulich@suse.com>) id 1wDNSs-0002cs-CV
 for xen-devel@lists.xenproject.org; Thu, 16 Apr 2026 14:13:06 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wDNSr-006Jyc-Ov
 for xen-devel@lists.xenproject.org; Thu, 16 Apr 2026 16:13:05 +0200
Received: from [10.42.69.2] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <jbeulich@suse.com>)
 id 69e0ee60-5cb7-0a2a0a5109dd-0a2a4502e9cc-44
 for <xen-devel@lists.xenproject.org>; Thu, 16 Apr 2026 16:13:05 +0200
Received: from [209.85.128.45] (helo=mail-wm1-f45.google.com)
 by tlsNG-720697.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.1)
 (envelope-from <jbeulich@suse.com>)
 id 69e0ee71-af86-0a2a45020019-d155802da5db-3
 for <xen-devel@lists.xenproject.org>; Thu, 16 Apr 2026 16:13:05 +0200
Received: by mail-wm1-f45.google.com with SMTP id
 5b1f17b1804b1-488b8efed61so8047565e9.1
 for <xen-devel@lists.xenproject.org>; Thu, 16 Apr 2026 07:13:05 -0700 (PDT)
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-488f5854097sm70120335e9.12.2026.04.16.07.13.04
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Thu, 16 Apr 2026 07:13:04 -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=google header.d=suse.com header.i="@suse.com" header.h="Content-Transfer-Encoding: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=1776348785; x=1776953585; darn=lists.xenproject.org;
        h=content-transfer-encoding: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;
        bh=ZzUUXXRoDU6tftKcXP8t9hoi8AcEty1Tp+a1C4WlHvI=;
        b=ZHnR7d8KKcRIDy8AR1XmTFYHV995CEoCEAbKZcUGT7+GDr+oEhQgYnYw7+uGQNhGrI
         4Qc49iX4bndjtnQnf9E96V2JPc7hgN/fkcxYz/lFyEcOzCkefey8uWMP0oUhYplgBAXl
         gpn2IxxOmfdKYIIZvZOhGTPB9TprXPeLzo7v8Z3MMn0S1XJ2g6Ca3vUona+v5d6fVUCL
         qS8Xu6Gwdt6cbe1uspBw1pG+5vXyt90cvJAflJFE/fTBDQUVkXQ9q4mwb3UjToRVkrNx
         Qzadn+5zo4RspfFjUvWFnk5ce0hWHp8PG97OjxRd4xJG1EzOy+ht/z93jNrmFfBLotqX
         xhHA==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20251104; t=1776348785; x=1776953585;
        h=content-transfer-encoding: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;
        bh=ZzUUXXRoDU6tftKcXP8t9hoi8AcEty1Tp+a1C4WlHvI=;
        b=h1h6bM7ZKYVD+dGPIpsCEdvq2mk1wb3OaWyAxe087docdCAVDYECXwm6bOO08iiCpQ
         ywweuoX18STGmaEDnTmVT5xpHERpbwwjXHBw/SkMBt9ePZvYAoH0+/jUoEk/Bz/98O/p
         G/FVbKOnK6xGKHR/VUmKEKQPStmjWJyH9OBfl0Cy9rOMkPAjrvO20IhPRc6IbwUoLIn2
         ppsrKJeNlVp34Z1BYw8vzkXiWWiaLxrAJX8eNXgpWzbh209zuKP+W9weOWekPreAETpk
         W0AsS97y8Z66M0nISa47FsW6P3ngmqJePs58JJGTP77wN8KyOS7goYuISLRVBea5Dest
         QVAg==
X-Forwarded-Encrypted: i=1; AFNElJ9xvv3Z1/XjsbpToXRMT0I7JV7R0dK1EkisLA8tYynkqFwSJ5xPwtEa0Uy8pjps3oc35xEj0kf8Hig=@lists.xenproject.org
X-Gm-Message-State: AOJu0Yw2mIHY3LC/qfNu12X+PwcAqq5OqrYJfxLKrIemtuFHs7gTRU/V
	da2V6901W9MLu28HIrXy6lU13wr1Vs7wqRwAvxXlKj4q4QM58ErBvoFmGVodvu/RKw==
X-Gm-Gg: AeBDiet5s8VRmvwGlvcXRdGcM+9zPjmjTM0k3as/+yGYRfqfuCNvhS0pusscsaIkAXw
	SicWKGa1Bar+LJy+kAf8BZTbzLcChrb+bKZmvlPvTRUkQpZFUuK/x9m+tWfSK7DeomzFxGoenRW
	iXAWU13mgGMHJGXI8fpY5sfoaFZbl70uqhmYC6e+CJK+9rQDtltYoQboiUduohR7Eapy278eUvb
	caTfzRmqjOvCG85D144oeeHaQBNZv93FwhoFQa+xGeUsOluAt3vwvbxBv4ElPDxkDZB0HNNq3NK
	K5D08TbYKq/b9Jb42dMm9oRR4m1CTSSI/L/mMhnEe4vyTgN/MTi3qskkKWVfdTCMaCmrLTbEpr0
	0BU4H+oVgaNVGRXE+CxkU107xo1Tampn+Nvf8dau8rtApubA4d5bK2JAz7+huBzvndAtbrOd/aH
	AsoBBhI0ZUBZQXgthFW+BgW0Ii4XXMxGTMQCDhxw/eWE7ukYHeaHlW7u9TVDbRBO40/RCOJxsB/
	nHUIi4jRywClWRKc8Iz/sZPoHm/u5COobGN
X-Received: by 2002:a05:600c:8b84:b0:488:aa33:dc8f with SMTP id 5b1f17b1804b1-488f458cfbbmr54305595e9.0.1776348784899;
        Thu, 16 Apr 2026 07:13:04 -0700 (PDT)
Message-ID: <c2c7bd1c-630f-4fe7-a46a-1976a6f557be@suse.com>
Date: Thu, 16 Apr 2026 16:13:07 +0200
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH v1 27/27] xen/riscv: add initial dom0less infrastructure
 support
To: Oleksii Kurochko <oleksii.kurochko@gmail.com>
Cc: Romain Caritey <Romain.Caritey@microchip.com>,
 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.pau@citrix.com>,
 Stefano Stabellini <sstabellini@kernel.org>, xen-devel@lists.xenproject.org
References: <cover.1773157782.git.oleksii.kurochko@gmail.com>
 <a66c727d0b99b9de41f516e1304b1a70192c9392.1773157782.git.oleksii.kurochko@gmail.com>
 <79c69067-4771-40df-a52b-8b552cd92a00@suse.com>
 <d8c22d64-8b03-4354-bebc-062499ac010a@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: <d8c22d64-8b03-4354-bebc-062499ac010a@gmail.com>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 7bit
X-purgate-ID: tlsNG-720697/1776348785-80979161-D1FD231B/0/0
X-purgate-type: clean
X-purgate-size: 1142

On 15.04.2026 12:00, Oleksii Kurochko wrote:
> On 4/7/26 4:11 PM, Jan Beulich wrote:
>> On 10.03.2026 18:09, Oleksii Kurochko wrote:
>>> ---
>>> Open questions:
>>>   - Shouldn't declaration/defintion of max_init_domid move to common code
>>>     instead of having it for each architecture separately? If yes, then what
>>>     would be the best place.
>>
>> What would you use to decide whether the declaration or #define is
>> needed? (Plausible headers to put it can surely be found: console.h,
>> domain.h, and perhaps more.)
> 
> I thought about to wrap that with CONFIG_DOM0LESS_BOOT as the 
> declaration is needed only for this case, for all other cases it is just 
> #define.
> 
> Or as an option we could always use declaration all the time. It won't 
> increase size of Xen too much or decrease performance because of 
> variable access.

Just to mention - unless coming with very good justification, I for one
am opposed to using variables for compile-time constants. We avoid
doing so in a number of situations, so deliberately introducing a case
to the contrary would at least feel inconsistent.

Jan


From xen-devel-bounces@lists.xenproject.org Thu Apr 16 14:15:22 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 16 Apr 2026 14:15:22 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1283515.1565713 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wDNV3-00038e-Nx; Thu, 16 Apr 2026 14:15:21 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1283515.1565713; Thu, 16 Apr 2026 14:15: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 1wDNV3-00038U-Jk; Thu, 16 Apr 2026 14:15:21 +0000
Received: by outflank-mailman (input) for mailman id 1283515;
 Thu, 16 Apr 2026 14:15:19 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <jbeulich@suse.com>) id 1wDNV1-00038O-OD
 for xen-devel@lists.xenproject.org; Thu, 16 Apr 2026 14:15:19 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wDNV1-00H8OJ-4j
 for xen-devel@lists.xenproject.org; Thu, 16 Apr 2026 16:15:19 +0200
Received: from [10.42.69.12] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <jbeulich@suse.com>)
 id 69e0eef5-bab6-0a2a0a5309dd-0a2a450cb5dc-10
 for <xen-devel@lists.xenproject.org>; Thu, 16 Apr 2026 16:15:19 +0200
Received: from [209.85.221.51] (helo=mail-wr1-f51.google.com)
 by tlsNG-d25034.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.1)
 (envelope-from <jbeulich@suse.com>)
 id 69e0eef6-62f1-0a2a450c0019-d155dd33c862-3
 for <xen-devel@lists.xenproject.org>; Thu, 16 Apr 2026 16:15:19 +0200
Received: by mail-wr1-f51.google.com with SMTP id
 ffacd0b85a97d-43d77f6092eso3236739f8f.2
 for <xen-devel@lists.xenproject.org>; Thu, 16 Apr 2026 07:15:19 -0700 (PDT)
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-43ead3566b7sm14582991f8f.11.2026.04.16.07.15.17
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Thu, 16 Apr 2026 07:15:18 -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=google header.d=suse.com header.i="@suse.com" header.h="Content-Transfer-Encoding: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=1776348918; x=1776953718; darn=lists.xenproject.org;
        h=content-transfer-encoding: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;
        bh=OFnnGdbS5olSi4xPKq3ybk7sImiLJiRWUv2s0W06w6o=;
        b=QVJPIACWIHzd0T/lPkNN6rQVgRymAzqZWgcwJXPM9Yx2tB91X+n6u5sIJ5WbMSSGF9
         zK+pNzxB4+m+2DK0Ybq1DXmvwlLecCdkAkLj3CwjplRxXZfkC0TwWeTYklmnfY0537U3
         SwZxUsXb0/rcfsclhospb3+6z6OlZk3fr1VG4yvhbbgaPsQqozs5uZOGZ06cbE01i4pc
         DP0LFqBk1llx0wXi9HskvcO6C7MDwXbM+GH3TuqDqdhL1kfpcrG4PtvJYDfJDXzS/0nj
         fTSVlaE6yIEoHK6ZexOduy8scuIWjSRmK4uGkRKXvS37aTNTmfd+MuK3kEVXEj4okXnS
         oP5A==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20251104; t=1776348918; x=1776953718;
        h=content-transfer-encoding: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;
        bh=OFnnGdbS5olSi4xPKq3ybk7sImiLJiRWUv2s0W06w6o=;
        b=GIir6DwccGc+0Fy3rjbWZ2y75zJZFjWgGLO+52BdVToIphEqDqdmg4HBfPfoHQ73dF
         VjI1TCp1D4XT92nblHiQFNfNKfWsSXVbpniwrix7/7NH44rVDt16+Ur8ZiHNlueJjzi6
         X1BfOsAEK/+i2KrAFSHzoIK4PU8xpEQeYwHDyMarLrQy5uwV+dFP9zKf8f1BtlPc/UDB
         7oEIdkfB7yLRiMoojohkb4WwLFX4TZT2uTCuZZenZCj/gg/Uia/4FRE7GgHy53E+n54v
         Ah6VAyZWKV/7HqAnDfIMatxTLmyhQPHe8lgLgMw1clJL7Z5NtMn+YZSDm/IdiXFvw/6s
         cRMA==
X-Forwarded-Encrypted: i=1; AFNElJ8MTPhcxvBS/36cnHcaqqDeJNNyxLBC012rvpqzIZsIjQa6pHO1idfVh4B3fo7Fn2QHDw2/g3Xer2A=@lists.xenproject.org
X-Gm-Message-State: AOJu0YzNsC0zwvOPNmeRZst78WwnBbjfguLzmTndrvtOdREGL19DB/Hs
	OAnjNH0eq9Prony/iZf4icdNZl42fCz7m/o0r8WG8/kvUTEfIN9vlEn5IxXHD/rOZw==
X-Gm-Gg: AeBDieumL8HEgDKSUcSFbBkDZx+sQ4XHDRS2NBfuQx38b2+0Db2UqTu/fzJEMuUIOd7
	c34OzG3iAK+kc3mCvT9pbjmxhJ4dc9A5b3AFiWEm5Lh5Lt/WhAbhtooINjDU0gTSsQXhnL+O6aJ
	L68lTT+a6kH7UuZV3vGlAut3CFJYvfa18nwS8gXJIT5YP7uV/Ecs5+hIYUsJY1Yt25TkFkMLBpG
	eMUZMI53yLS9ZI6ucDj2zoHmu2R+oPpkiBeGLAF0sDEkHXcsRKoh4af5uXLySEy7PPVboSqN3nB
	ivoatTfpKoooftG9WIVFm2T4fUvhePRqFVH3kLNcxysx2hD+tg2IUEqScmMXRVQI66onk5g6YYb
	HkFPVhBP5e5GGspDP6ZpfRLC3SE1V0s0nb2RV4qwCLKQOFYJVnAD3Qltjj6eVBbCnBCaXy6H0jy
	ZV5ArDDiAjWfvpA6E14uvPEL9+vowrQ9+w0jqfl9/HA+c/7STr2e8768IaReVap9D34fg72/DAk
	Zb+AFfqvMe3MGYVfCIqI5hZ9gz4Ccgbjy3K
X-Received: by 2002:a5d:5304:0:b0:43d:7783:c67e with SMTP id ffacd0b85a97d-43d7783c7f7mr17590939f8f.36.1776348918446;
        Thu, 16 Apr 2026 07:15:18 -0700 (PDT)
Message-ID: <ed17c1cd-8024-4a04-895b-c9952ff8f3de@suse.com>
Date: Thu, 16 Apr 2026 16:15:21 +0200
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH v1 27/27] xen/riscv: add initial dom0less infrastructure
 support
To: Oleksii Kurochko <oleksii.kurochko@gmail.com>
Cc: Romain Caritey <Romain.Caritey@microchip.com>,
 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.pau@citrix.com>,
 Stefano Stabellini <sstabellini@kernel.org>, xen-devel@lists.xenproject.org
References: <cover.1773157782.git.oleksii.kurochko@gmail.com>
 <a66c727d0b99b9de41f516e1304b1a70192c9392.1773157782.git.oleksii.kurochko@gmail.com>
 <79c69067-4771-40df-a52b-8b552cd92a00@suse.com>
 <7032dd40-f1fe-4d34-b559-6f2eb853bf5b@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: <7032dd40-f1fe-4d34-b559-6f2eb853bf5b@gmail.com>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 7bit
X-purgate-ID: tlsNG-d25034/1776348919-6DB6CCF5-0DE00C2F/0/0
X-purgate-type: clean
X-purgate-size: 788

On 15.04.2026 12:28, Oleksii Kurochko wrote:
> On 4/7/26 4:11 PM, Jan Beulich wrote:
>>> --- a/xen/arch/riscv/setup.c
>>> +++ b/xen/arch/riscv/setup.c
>>> @@ -32,6 +32,8 @@
>>>   #include <asm/traps.h>
>>>   #include <asm/vsbi.h>
>>>   
>>> +domid_t max_init_domid = 0;
>> The initializer isn't of much use, is it? Instead add __read_mostly, like
>> Arm has it?
> 
> Then I expect it will fail to compile as setup.c should contain only 
> __init data.

But that's true no matter whether you have __read_mostly there or no section
placement attribute at all.

> So the we have to remove or __read_mostly or put max_init_domid to 
> different file.

If it can't be __initdata (or alike), any data item needs to live outside of
any file compiled into *.init.o.

Jan


From xen-devel-bounces@lists.xenproject.org Thu Apr 16 14:21:15 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 16 Apr 2026 14:21:15 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1283530.1565740 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wDNak-0005Jw-RQ; Thu, 16 Apr 2026 14:21:14 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1283530.1565740; Thu, 16 Apr 2026 14:21: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 1wDNak-0005Jl-Nv; Thu, 16 Apr 2026 14:21:14 +0000
Received: by outflank-mailman (input) for mailman id 1283530;
 Thu, 16 Apr 2026 14:21:13 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92) id 1wDNaj-00052Y-4L
 for xen-devel@lists.xenproject.org; Thu, 16 Apr 2026 14:21:13 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wDNai-00EKYV-HA
 for xen-devel@lists.xenproject.org; Thu, 16 Apr 2026 16:21:12 +0200
Received: from [10.42.69.9] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <oleksii.kurochko@gmail.com>)
 id 69e0f052-2eae-0a2a0a5409dd-0a2a4509bd4e-30
 for <xen-devel@lists.xenproject.org>; Thu, 16 Apr 2026 16:21:12 +0200
Received: from [209.85.128.44] (helo=mail-wm1-f44.google.com)
 by tlsNG-bad1c0.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.1)
 (envelope-from <oleksii.kurochko@gmail.com>)
 id 69e0f058-2497-0a2a45090019-d155802cb11a-3
 for <xen-devel@lists.xenproject.org>; Thu, 16 Apr 2026 16:21:12 +0200
Received: by mail-wm1-f44.google.com with SMTP id
 5b1f17b1804b1-4888375f735so80629695e9.3
 for <xen-devel@lists.xenproject.org>; Thu, 16 Apr 2026 07:21:12 -0700 (PDT)
Received: from fedora (user-109-243-69-121.play-internet.pl. [109.243.69.121])
 by smtp.gmail.com with ESMTPSA id
 5b1f17b1804b1-488f096d110sm59803515e9.11.2026.04.16.07.21.10
 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
 Thu, 16 Apr 2026 07:21:11 -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=20251104 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=20251104; t=1776349272; x=1776954072; 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;
        bh=s8Y9SzzS4bvv10F/vEf37vbkhG/m9fzH1k9xycRPAmo=;
        b=KsedUVEYmAPLDSnr7VQAL8KARAQobm6zXx+3qL/+1546osO1H1FnX/BUIUgXziBZ6n
         tpSmYL7FE3wa0Er7slIHzZ5TnPp132gAVm/Ko46CWEZdN/0bj+IWI8KurQ5GXWz/p5Lf
         UGmWMdNSWhIVS1HE7mRdjxCpnSAiLMPPx2Hk1ahuYJUf3EhWdbGXm7bde0ts0Z1jOnHR
         KDzh2DeGDw9B3iuyMv8VyVg/uPstdqgkIv4aQDbLgGCXqZMXUHoE50rWPk/k9pFKE9I4
         iNJlG76OdV+bTjRsr9YuoV+lEKoN+uxDQLPHK6PQbCrC5hyew5hYPkmQd6kzb6dYrGe4
         nXwQ==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20251104; t=1776349272; x=1776954072;
        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;
        bh=s8Y9SzzS4bvv10F/vEf37vbkhG/m9fzH1k9xycRPAmo=;
        b=BTItFXrr7mEbAjI6ZteRH0vwJdt3R+FP1B2rab1zhtbxoxCfri2Vu7UWxAlSsOfvSa
         CmZwDXuvOwu6L2Dw1gifqnJomfbl44iIOD4K1ybZbFFtOThwzrQ/b03EVrrpTsw0pNk2
         x+somUiAg2Cj3n5ZObbx1Qp8fyDzJqMPI7lLpeqX2YGdWS1/T0Xlgt/+f2K7YqR1VjPK
         A5xTp1eT5G79qztU02FpmYzZCqtNtOrUsMHX9EZPuY2ayjwrLwxO7iJ2+g0fBuky/Q/8
         93YLPf9f7KRxBGia+cpTdwuIm7wxQMV1H/pVbTAnrIctUq1bIUzSvvr7ZeZd0m7NY9UH
         FPrA==
X-Gm-Message-State: AOJu0YxJtGlx9k0ClEfufeG+Hw4CwLEjRYeV6xL3UD9rIusJwOvCHOkl
	NKMgmzwJZmAWR3AzLu+GDKLGbkFPM6aIU4M4Ooe8ddeIA3piASrvzr1N7SDzIw==
X-Gm-Gg: AeBDiethoCL2ynJxyvFNcQOn5FwFRHcgmjX24BjdaqsJG3MIGZYfcflHKgb5bl43gAq
	/+pikjh8EofX0I3FWUwVyzfpyZoj16qTRABVC/R1JIk1dy8zYJ5465w/DZv7GtLgyjJSarBKcms
	3GoMLsoaV57+ZHvLFC/6CCW/pHdZruOtjeprLORrVSExiQTm9nqE9uCsmc72GM7YC/tdCTkpS1z
	eyErNkc3nsUZIdsobl2p4EkUmOxCsgBi2U9Lv2Nmd3Uuy0ODuko2kru1grfWUkRKiecTr9TowGK
	sAB/pCkNzKKJRgNf1AG79C+WvWqojk81p4hf9GV57TFB0J3zGgRIbPhB+rmE6DzKj8YEkCRVUei
	JJtJRFUnkK9AnXiOvoWjyeWLHI+q6lc3iYsuJwtIsxj/n+JaaHcwLDwAyBYNGeyBfHJWSNhA/lP
	XgjnOeP3hLG1Agm14dBThMK6IEwSdAGS3iACFC/XZr1bk98ekmZCOcIzkWqImaSdjU25x0g2gtW
	RaQ
X-Received: by 2002:a05:600c:c10d:b0:488:ae4e:51a5 with SMTP id 5b1f17b1804b1-488d683d633mr253284465e9.15.1776349271643;
        Thu, 16 Apr 2026 07:21:11 -0700 (PDT)
From: Oleksii Kurochko <oleksii.kurochko@gmail.com>
To: xen-devel@lists.xenproject.org
Cc: Oleksii Kurochko <oleksii.kurochko@gmail.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?q?Roger=20Pau=20Monn=C3=A9?= <roger.pau@citrix.com>
Subject: [PATCH v1 2/3] xen/dom0less: pass kernel_info struct instead of fdt to make_cpus_node()
Date: Thu, 16 Apr 2026 16:20:59 +0200
Message-ID: <a897d880738f5b3be2d6fc5ec2b6cab1fd8b9dc4.1776340422.git.oleksii.kurochko@gmail.com>
X-Mailer: git-send-email 2.53.0
In-Reply-To: <cover.1776340422.git.oleksii.kurochko@gmail.com>
References: <cover.1776340422.git.oleksii.kurochko@gmail.com>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit
X-purgate-ID: tlsNG-bad1c0/1776349272-92573A53-93FA7BC1/10/73395122804
X-purgate-type: spam
X-purgate-size: 2867

There are two reasons of this change:
1. Align prototype with what other make_*_node() are passed.
2. A follow-up RISC-V patch will call get_next_free_phandle() inside
   make_cpus_node(), requiring mutable access to kinfo->free_phandle.

Signed-off-by: Oleksii Kurochko <oleksii.kurochko@gmail.com>
---
 xen/arch/arm/domain_build.c             | 5 +++--
 xen/common/device-tree/dom0less-build.c | 2 +-
 xen/include/xen/fdt-domain-build.h      | 2 +-
 3 files changed, 5 insertions(+), 4 deletions(-)

diff --git a/xen/arch/arm/domain_build.c b/xen/arch/arm/domain_build.c
index 60a7cbf915a5..6740da3d324b 100644
--- a/xen/arch/arm/domain_build.c
+++ b/xen/arch/arm/domain_build.c
@@ -1164,7 +1164,7 @@ int __init make_psci_node(void *fdt)
     return res;
 }
 
-int __init make_cpus_node(const struct domain *d, void *fdt)
+int __init make_cpus_node(const struct domain *d, struct kernel_info *kinfo)
 {
     int res;
     const struct dt_device_node *cpus = dt_find_node_by_path("/cpus");
@@ -1178,6 +1178,7 @@ int __init make_cpus_node(const struct domain *d, void *fdt)
     /* Keep the compiler happy with -Og */
     bool clock_valid = false;
     uint64_t mpidr_aff;
+    void *fdt = kinfo;
 
     dt_dprintk("Create cpus node\n");
 
@@ -1626,7 +1627,7 @@ static int __init handle_node(struct domain *d, struct kernel_info *kinfo,
         if ( res )
             return res;
 
-        res = make_cpus_node(d, kinfo->fdt);
+        res = make_cpus_node(d, kinfo);
         if ( res )
             return res;
 
diff --git a/xen/common/device-tree/dom0less-build.c b/xen/common/device-tree/dom0less-build.c
index 9205f01f0a49..64b12d6aec62 100644
--- a/xen/common/device-tree/dom0less-build.c
+++ b/xen/common/device-tree/dom0less-build.c
@@ -535,7 +535,7 @@ static int __init prepare_dtb_domU(struct domain *d, struct kernel_info *kinfo)
     if ( ret )
         goto err;
 
-    ret = make_cpus_node(d, kinfo->fdt);
+    ret = make_cpus_node(d, kinfo);
     if ( ret )
         goto err;
 
diff --git a/xen/include/xen/fdt-domain-build.h b/xen/include/xen/fdt-domain-build.h
index 220ae46ddbe1..2349baba3427 100644
--- a/xen/include/xen/fdt-domain-build.h
+++ b/xen/include/xen/fdt-domain-build.h
@@ -25,7 +25,7 @@ int construct_domain(struct domain *d, struct kernel_info *kinfo);
 int construct_hwdom(struct kernel_info *kinfo,
                     const struct dt_device_node *node);
 int make_chosen_node(const struct kernel_info *kinfo);
-int make_cpus_node(const struct domain *d, void *fdt);
+int make_cpus_node(const struct domain *d, struct kernel_info *kinfo);
 int make_hypervisor_node(struct domain *d, const struct kernel_info *kinfo,
                          int addrcells, int sizecells);
 int make_memory_node(const struct kernel_info *kinfo, int addrcells,
-- 
2.53.0



From xen-devel-bounces@lists.xenproject.org Thu Apr 16 14:21:16 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 16 Apr 2026 14:21:16 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1283531.1565749 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wDNam-0005YJ-28; Thu, 16 Apr 2026 14:21:16 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1283531.1565749; Thu, 16 Apr 2026 14:21: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 1wDNal-0005Y8-Um; Thu, 16 Apr 2026 14:21:15 +0000
Received: by outflank-mailman (input) for mailman id 1283531;
 Thu, 16 Apr 2026 14:21:14 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92) id 1wDNak-0005Iy-K6
 for xen-devel@lists.xenproject.org; Thu, 16 Apr 2026 14:21:14 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wDNak-00GoVN-0I
 for xen-devel@lists.xenproject.org; Thu, 16 Apr 2026 16:21:14 +0200
Received: from [10.42.69.11] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <oleksii.kurochko@gmail.com>)
 id 69e0f053-bab6-0a2a0a5309dd-0a2a450b9f54-24
 for <xen-devel@lists.xenproject.org>; Thu, 16 Apr 2026 16:21:13 +0200
Received: from [209.85.128.54] (helo=mail-wm1-f54.google.com)
 by tlsNG-42698a.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.1)
 (envelope-from <oleksii.kurochko@gmail.com>)
 id 69e0f059-212f-0a2a450b0019-d1558036e46a-3
 for <xen-devel@lists.xenproject.org>; Thu, 16 Apr 2026 16:21:13 +0200
Received: by mail-wm1-f54.google.com with SMTP id
 5b1f17b1804b1-488ad135063so77998165e9.0
 for <xen-devel@lists.xenproject.org>; Thu, 16 Apr 2026 07:21:13 -0700 (PDT)
Received: from fedora (user-109-243-69-121.play-internet.pl. [109.243.69.121])
 by smtp.gmail.com with ESMTPSA id
 5b1f17b1804b1-488f096d110sm59803515e9.11.2026.04.16.07.21.11
 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
 Thu, 16 Apr 2026 07:21:12 -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=20251104 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=20251104; t=1776349273; x=1776954073; 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;
        bh=OlLqvIvTkFRs8hkQkfaNXDqEZXGwCjef7xkJAk72j/M=;
        b=oETgS9gbScgugEcQwyFfwNnN5WAfaaEyIsu8B+SdEfdI9cuKmqU5P9onAs7alfgQ13
         MPPAdjlZB4JKHct64LQcFkCZjGs00n+HsIHx0gZAdlxLltweVY174lAJB/nbktH0b2H+
         3MPLjMY6FOWv///ky3M+2R5qEN+d860rg+HCBL6yj43Y19kHsO5OgKnaO+n69f+PS2TF
         6GHOdFEpihK63T+jwKSeL+CAMo4hQOQGGtZV2Nx1v5TNRwptMU+9nvWLG/JpllKu4VFS
         AxQbvUARaA73grIagj//7vyBErupjbNSkVkxibbAb4+S3m1n+Yz3LvCVLVhqaQn7LLMa
         tUcA==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20251104; t=1776349273; x=1776954073;
        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;
        bh=OlLqvIvTkFRs8hkQkfaNXDqEZXGwCjef7xkJAk72j/M=;
        b=HZlsEoJjoQagRmbVNuiM6VZzAb4C1q+MvkOacgZz0z9qDq/3xN9g062Wp9Eys9ko4t
         mpOZl/M+6k2tqbsU+lL7EFdAig20ocD7X6+ZqOnXCZfiIs+smKeeB2XjjXKKwsd4xYlS
         BjZ6kmM8dD8ZXtK4TY1RAM2T0Kxg2vF3P7gg5kK7zCk5QF7j9cLuGz5iLI809ZHq8CxD
         +MwY6Q6O9qvloNhKqryjF19j1hfr3JISHzJoGEXZIvEd+MS1YNmNyATUyXAM3jYxbCuA
         BEeJXpoeXmaNjXIQw7BUKXOoTaMLuSIBfWpeSiukReSJnBZnZpuesJW/UngaXW2rd+GB
         nDSw==
X-Gm-Message-State: AOJu0Yya36pDGKnJ1fMoZPVfyOpx65SumsN8gZ+0xDYnyytrmF+vAIJB
	yiBCKBBkBx/t6xcIfcnSua7CXO28VXe9QxuufXRHOPT1l1YBwNYqXPuJb9RHVA==
X-Gm-Gg: AeBDiesU98CBWRI0bJ7JkcxZdgWKcOqzM+yQDHehCqmmQX43e18g8/TzxeLv/weo5/I
	HyplA1oK14Ck3vvLh30LYQSIDTnudI2JZlb3UcIZpRhrCVM99vlwSN7JQbkJoq2pM3ouqcw5xp6
	dvhTH3zjfP5IlcJHOs37eXb8PSiYLBRzyBMp4gFElr+plkgKsn9p2jRbeHu1zE504oGT+P8Lmak
	3al0Oecy/BiAW0WZpAV19bn3Y5tRbqJaeh76kI6wDj3raXw3o3kKJf18OqFdKKz/KNWrjjs+eoQ
	KxPh9ogG+PGdQUNT/6gNH4bg3m6FdKOPm8XM2TKF5CjkIHtDZp9dTsXe63KzLEDhog47GYGyWOl
	DnBQpyptVxxycJFGLaR4S5gYU9qAfFS/vJwZn5MsX0HwqcFcp0peuIMv5avlhGU7GWIFJmbfHKH
	3kHuAjpywB+yjcFnUiODq51UQyr3RLr5TsDNX7HvhAQ3CK9UIL7gkNkCrdn0FQnCAmSKbm/+BL7
	Lqz
X-Received: by 2002:a05:600c:3f0a:b0:488:afb5:6a21 with SMTP id 5b1f17b1804b1-488d68764b0mr362614505e9.15.1776349272848;
        Thu, 16 Apr 2026 07:21:12 -0700 (PDT)
From: Oleksii Kurochko <oleksii.kurochko@gmail.com>
To: xen-devel@lists.xenproject.org
Cc: Oleksii Kurochko <oleksii.kurochko@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.pau@citrix.com>,
	Stefano Stabellini <sstabellini@kernel.org>,
	Bertrand Marquis <bertrand.marquis@arm.com>,
	Volodymyr Babchuk <Volodymyr_Babchuk@epam.com>
Subject: [PATCH v1 3/3] xen: introduce CONFIG_HAS_DOMAIN_TYPE
Date: Thu, 16 Apr 2026 16:21:00 +0200
Message-ID: <e5ffcdecb0ca3c87b46965449601ff20116fecc0.1776340422.git.oleksii.kurochko@gmail.com>
X-Mailer: git-send-email 2.53.0
In-Reply-To: <cover.1776340422.git.oleksii.kurochko@gmail.com>
References: <cover.1776340422.git.oleksii.kurochko@gmail.com>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit
X-purgate-ID: tlsNG-42698a/1776349273-06573F3B-97F78B3A/10/73395122804
X-purgate-type: spam
X-purgate-size: 10470

As domain type is part of common code now there is no any reason
to have architecture-specific set_domain_type() functions so
it is dropped.

The CONFIG_ARM_64 guard in xen/arch/arm/domain_build.c is intentionally
left unchanged: it is ARM-specific code, and ARM_64 selects
HAS_DOMAIN_TYPE, so the semantics are identical.

x86 with CONFIG_64BIT=y shouldn't use is_{32,64}bit_domain() as
x86 doesn't have support of CONFIG_HAS_DOMAIN_TYPE. For x86_32
it is fine to follow generic is_{32,64}_bit_domain() implementations.

Generally it probably would be better to introduce CONFIG_32BIT
and use it to define is_{32,64}bit_domain() as if one day
CONFIG_128BIT will be introduced is_{32,64}bit_domain() will be
defined incorrectly but considering that CONFIG_64BIT is maximum
supported bitness it is fine to define in this way.

Signed-off-by: Oleksii Kurochko <oleksii.kurochko@gmail.com>
---
 xen/arch/Kconfig                        |  3 +++
 xen/arch/arm/Kconfig                    |  1 +
 xen/arch/arm/arm64/domctl.c             |  4 ++--
 xen/arch/arm/dom0less-build.c           | 14 --------------
 xen/arch/arm/domain_build.c             |  8 ++++----
 xen/arch/arm/include/asm/domain.h       | 12 ------------
 xen/arch/arm/include/asm/kernel.h       |  4 ----
 xen/arch/arm/kernel.c                   | 10 +++++-----
 xen/common/device-tree/dom0less-build.c |  5 ++++-
 xen/include/xen/dom0less-build.h        |  2 --
 xen/include/xen/domain.h                | 13 +++++++++++++
 xen/include/xen/fdt-kernel.h            |  5 +++++
 xen/include/xen/sched.h                 |  4 ++++
 13 files changed, 41 insertions(+), 44 deletions(-)

diff --git a/xen/arch/Kconfig b/xen/arch/Kconfig
index f9230bfaf872..6c53149f7ee1 100644
--- a/xen/arch/Kconfig
+++ b/xen/arch/Kconfig
@@ -1,6 +1,9 @@
 config 64BIT
 	bool
 
+config HAS_DOMAIN_TYPE
+	bool
+
 config PHYS_ADDR_T_32
 	bool
 
diff --git a/xen/arch/arm/Kconfig b/xen/arch/arm/Kconfig
index 2f2b501fdac4..79622b46a10d 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_DOMAIN_TYPE
 	select HAS_FAST_MULTIPLY
 	select HAS_VPCI_GUEST_SUPPORT if PCI_PASSTHROUGH
 
diff --git a/xen/arch/arm/arm64/domctl.c b/xen/arch/arm/arm64/domctl.c
index 8720d126c97d..9e9a29eb1e78 100644
--- a/xen/arch/arm/arm64/domctl.c
+++ b/xen/arch/arm/arm64/domctl.c
@@ -21,10 +21,10 @@ static long switch_mode(struct domain *d, enum domain_type type)
         return -EINVAL;
     if ( domain_tot_pages(d) != 0 )
         return -EBUSY;
-    if ( d->arch.type == type )
+    if ( d->type == type )
         return 0;
 
-    d->arch.type = type;
+    d->type = type;
 
     if ( is_64bit_domain(d) )
         for_each_vcpu(d, v)
diff --git a/xen/arch/arm/dom0less-build.c b/xen/arch/arm/dom0less-build.c
index 4181c105389a..6f73c65e5151 100644
--- a/xen/arch/arm/dom0less-build.c
+++ b/xen/arch/arm/dom0less-build.c
@@ -237,20 +237,6 @@ int __init make_arch_nodes(struct kernel_info *kinfo)
     return 0;
 }
 
-/* TODO: make arch.type generic ? */
-#ifdef CONFIG_ARM_64
-void __init set_domain_type(struct domain *d, struct kernel_info *kinfo)
-{
-    /* type must be set before allocate memory */
-    d->arch.type = kinfo->arch.type;
-}
-#else
-void __init set_domain_type(struct domain *d, struct kernel_info *kinfo)
-{
-    /* Nothing to do */
-}
-#endif
-
 int __init init_vuart(struct domain *d, struct kernel_info *kinfo,
                       const struct dt_device_node *node)
 {
diff --git a/xen/arch/arm/domain_build.c b/xen/arch/arm/domain_build.c
index 6740da3d324b..2fd89b3a1345 100644
--- a/xen/arch/arm/domain_build.c
+++ b/xen/arch/arm/domain_build.c
@@ -1178,7 +1178,7 @@ int __init make_cpus_node(const struct domain *d, struct kernel_info *kinfo)
     /* Keep the compiler happy with -Og */
     bool clock_valid = false;
     uint64_t mpidr_aff;
-    void *fdt = kinfo;
+    void *fdt = kinfo->fdt;
 
     dt_dprintk("Create cpus node\n");
 
@@ -1774,13 +1774,13 @@ int __init construct_domain(struct domain *d, struct kernel_info *kinfo)
 
 #ifdef CONFIG_ARM_64
     /* if aarch32 mode is not supported at EL1 do not allow 32-bit domain */
-    if ( !(cpu_has_el1_32) && kinfo->arch.type == DOMAIN_32BIT )
+    if ( !(cpu_has_el1_32) && kinfo->type == DOMAIN_32BIT )
     {
         printk("Platform does not support 32-bit domain\n");
         return -EINVAL;
     }
 
-    if ( is_sve_domain(d) && (kinfo->arch.type == DOMAIN_32BIT) )
+    if ( is_sve_domain(d) && (kinfo->type == DOMAIN_32BIT) )
     {
         printk("SVE is not available for 32-bit domain\n");
         return -EINVAL;
@@ -1896,7 +1896,7 @@ int __init construct_hwdom(struct kernel_info *kinfo,
 
 #ifdef CONFIG_ARM_64
     /* type must be set before allocate_memory */
-    d->arch.type = kinfo->arch.type;
+    d->type = kinfo->type;
 #endif
     find_gnttab_region(d, kinfo);
     if ( is_domain_direct_mapped(d) )
diff --git a/xen/arch/arm/include/asm/domain.h b/xen/arch/arm/include/asm/domain.h
index f95ad1285e6e..2d4c1bdecb66 100644
--- a/xen/arch/arm/include/asm/domain.h
+++ b/xen/arch/arm/include/asm/domain.h
@@ -18,18 +18,6 @@ struct hvm_domain
     uint64_t              params[HVM_NR_PARAMS];
 };
 
-#ifdef CONFIG_ARM_64
-enum domain_type {
-    DOMAIN_32BIT,
-    DOMAIN_64BIT,
-};
-#define is_32bit_domain(d) ((d)->arch.type == DOMAIN_32BIT)
-#define is_64bit_domain(d) ((d)->arch.type == DOMAIN_64BIT)
-#else
-#define is_32bit_domain(d) (1)
-#define is_64bit_domain(d) (0)
-#endif
-
 struct vtimer {
     struct vcpu *v;
     int irq;
diff --git a/xen/arch/arm/include/asm/kernel.h b/xen/arch/arm/include/asm/kernel.h
index 7c3b7fde5b64..21f4273fa1b5 100644
--- a/xen/arch/arm/include/asm/kernel.h
+++ b/xen/arch/arm/include/asm/kernel.h
@@ -10,10 +10,6 @@
 
 struct arch_kernel_info
 {
-#ifdef CONFIG_ARM_64
-    enum domain_type type;
-#endif
-
     /* Enable pl011 emulation */
     bool vpl011;
 };
diff --git a/xen/arch/arm/kernel.c b/xen/arch/arm/kernel.c
index 3c613cdb233f..bc9aad3f5f45 100644
--- a/xen/arch/arm/kernel.c
+++ b/xen/arch/arm/kernel.c
@@ -101,7 +101,7 @@ static paddr_t __init kernel_zimage_place(struct kernel_info *info)
     paddr_t load_addr;
 
 #ifdef CONFIG_ARM_64
-    if ( (info->arch.type == DOMAIN_64BIT) && (info->image.start == 0) )
+    if ( (info->type == DOMAIN_64BIT) && (info->image.start == 0) )
         return mem->bank[0].start + info->image.text_offset;
 #endif
 
@@ -272,10 +272,10 @@ int __init kernel_uimage_probe(struct kernel_info *info,
     switch ( uimage.arch )
     {
     case IH_ARCH_ARM:
-        info->arch.type = DOMAIN_32BIT;
+        info->type = DOMAIN_32BIT;
         break;
     case IH_ARCH_ARM64:
-        info->arch.type = DOMAIN_64BIT;
+        info->type = DOMAIN_64BIT;
         break;
     default:
         printk(XENLOG_ERR "Unsupported uImage arch type %d\n", uimage.arch);
@@ -345,7 +345,7 @@ static int __init kernel_zimage64_probe(struct kernel_info *info,
 
     info->load = kernel_zimage_load;
 
-    info->arch.type = DOMAIN_64BIT;
+    info->type = DOMAIN_64BIT;
 
     return 0;
 }
@@ -397,7 +397,7 @@ static int __init kernel_zimage32_probe(struct kernel_info *info,
     info->load = kernel_zimage_load;
 
 #ifdef CONFIG_ARM_64
-    info->arch.type = DOMAIN_32BIT;
+    info->type = DOMAIN_32BIT;
 #endif
 
     return 0;
diff --git a/xen/common/device-tree/dom0less-build.c b/xen/common/device-tree/dom0less-build.c
index 64b12d6aec62..418282a6a549 100644
--- a/xen/common/device-tree/dom0less-build.c
+++ b/xen/common/device-tree/dom0less-build.c
@@ -809,7 +809,10 @@ static int __init construct_domU(struct kernel_info *kinfo,
     if ( rc < 0 )
         return rc;
 
-    set_domain_type(d, kinfo);
+#ifdef CONFIG_HAS_DOMAIN_TYPE
+    /* type must be set before allocate memory */
+    d->type = kinfo->type;
+#endif
 
     if ( is_hardware_domain(d) )
     {
diff --git a/xen/include/xen/dom0less-build.h b/xen/include/xen/dom0less-build.h
index faaf660424b2..4118dec76c0a 100644
--- a/xen/include/xen/dom0less-build.h
+++ b/xen/include/xen/dom0less-build.h
@@ -57,8 +57,6 @@ int init_vuart(struct domain *d, struct kernel_info *kinfo,
 int make_intc_domU_node(struct kernel_info *kinfo);
 int make_arch_nodes(struct kernel_info *kinfo);
 
-void set_domain_type(struct domain *d, struct kernel_info *kinfo);
-
 int init_intc_phandle(struct kernel_info *kinfo, const char *name,
                       const int node_next, const void *pfdt);
 
diff --git a/xen/include/xen/domain.h b/xen/include/xen/domain.h
index 93c0fd00c1d7..5951e7e6928f 100644
--- a/xen/include/xen/domain.h
+++ b/xen/include/xen/domain.h
@@ -13,6 +13,19 @@ struct guest_area {
     void *map;
 };
 
+#ifdef CONFIG_HAS_DOMAIN_TYPE
+enum domain_type {
+    DOMAIN_32BIT,
+    DOMAIN_64BIT,
+};
+#define is_32bit_domain(d) ((d)->type == DOMAIN_32BIT)
+#define is_64bit_domain(d) ((d)->type == DOMAIN_64BIT)
+#elif !defined(CONFIG_64BIT)
+/* On 32-bit-only platforms all domains are 32-bit. */
+#define is_32bit_domain(d) (true)
+#define is_64bit_domain(d) (false)
+#endif
+
 #include <asm/domain.h>
 
 typedef union {
diff --git a/xen/include/xen/fdt-kernel.h b/xen/include/xen/fdt-kernel.h
index 3527934b2a00..2c9bf4d4ef4f 100644
--- a/xen/include/xen/fdt-kernel.h
+++ b/xen/include/xen/fdt-kernel.h
@@ -9,6 +9,7 @@
 
 #include <xen/bootinfo.h>
 #include <xen/device_tree.h>
+#include <xen/domain.h>
 #include <xen/types.h>
 
 #if __has_include(<asm/kernel.h>)
@@ -69,6 +70,10 @@ struct kernel_info {
         } image;
     };
 
+#ifdef CONFIG_HAS_DOMAIN_TYPE
+    enum domain_type type;
+#endif
+
 #if __has_include(<asm/kernel.h>)
     struct arch_kernel_info arch;
 #endif
diff --git a/xen/include/xen/sched.h b/xen/include/xen/sched.h
index 212c7d765c3e..4314bd195457 100644
--- a/xen/include/xen/sched.h
+++ b/xen/include/xen/sched.h
@@ -668,6 +668,10 @@ struct domain
     struct page_info *pending_scrub;
     unsigned int pending_scrub_order;
     unsigned int pending_scrub_index;
+
+#ifdef CONFIG_HAS_DOMAIN_TYPE
+    enum domain_type type;
+#endif
 } __aligned(PAGE_SIZE);
 
 static inline struct page_list_head *page_to_list(
-- 
2.53.0



From xen-devel-bounces@lists.xenproject.org Thu Apr 16 14:21:16 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 16 Apr 2026 14:21:16 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1283529.1565732 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wDNaj-000564-H3; Thu, 16 Apr 2026 14:21:13 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1283529.1565732; Thu, 16 Apr 2026 14:21: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 1wDNaj-00055x-D5; Thu, 16 Apr 2026 14:21:13 +0000
Received: by outflank-mailman (input) for mailman id 1283529;
 Thu, 16 Apr 2026 14:21:12 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92) id 1wDNai-0004sq-Bm
 for xen-devel@lists.xenproject.org; Thu, 16 Apr 2026 14:21:12 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wDNag-00EUAi-72
 for xen-devel@lists.xenproject.org; Thu, 16 Apr 2026 16:21:11 +0200
Received: from [10.42.69.2] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <oleksii.kurochko@gmail.com>)
 id 69e0f057-e002-0a2a0a5209dd-0a2a4502bd98-0
 for <xen-devel@lists.xenproject.org>; Thu, 16 Apr 2026 16:21:11 +0200
Received: from [209.85.128.42] (helo=mail-wm1-f42.google.com)
 by tlsNG-720697.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.1)
 (envelope-from <oleksii.kurochko@gmail.com>)
 id 69e0f057-af86-0a2a45020019-d155802aec67-3
 for <xen-devel@lists.xenproject.org>; Thu, 16 Apr 2026 16:21:11 +0200
Received: by mail-wm1-f42.google.com with SMTP id
 5b1f17b1804b1-488aa77a06eso131938125e9.0
 for <xen-devel@lists.xenproject.org>; Thu, 16 Apr 2026 07:21:11 -0700 (PDT)
Received: from fedora (user-109-243-69-121.play-internet.pl. [109.243.69.121])
 by smtp.gmail.com with ESMTPSA id
 5b1f17b1804b1-488f096d110sm59803515e9.11.2026.04.16.07.21.09
 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
 Thu, 16 Apr 2026 07:21:09 -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=20251104 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=20251104; t=1776349270; x=1776954070; 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;
        bh=s7asg+oRMzsxXoRo6Oq9BgsaNNgnJ/iGaE08Tfel5jA=;
        b=j3OGgoR1ibG2dCT616OWsU5dHd9vpjBobG8+4C8IoDJyZRi0cCPTBHN9WekvJUT7Pd
         1Q+dLynlmYcQ+WNF5mqiY7t0b+J5UuMXw7+LF4zgm3Kb3cmzq26/FmppczQCjmKDh1x/
         i9aKvQ6nkwq3+h9GrFDOLApEIMccdyIafdzq3A+N+FyC9qr7i4YzeCyJM/t49mDiIahk
         hZyF8GLwPyS72ZQvJ1Ltdb67BrbMWbiY+YJ7lqLb+pHuIHB7Q+uzoPvZ92r4Arq6qrLN
         xnkSZGbdd/kCYfi/YPCl3vRhCkG5a6s7b6DQOMRVjfp/tgeKdiN57Zf89b2TbV4x/eLV
         oqeg==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20251104; t=1776349270; x=1776954070;
        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;
        bh=s7asg+oRMzsxXoRo6Oq9BgsaNNgnJ/iGaE08Tfel5jA=;
        b=Rny+/oqrxxmAUn7ySWJ+WObDiw3bafO7uQ9x9ELGY+CuF1LVb+qYNPMMrO+QMfgpId
         IziYhVw4uW66ubPWITZn2wgIo3ZQ0h9N9w/wTUJvbeCvnSicKCHWC2yGcXJf4Tl7C8Lm
         g57Nh9hkB8zvJd1IIxTKeWsduekO/AZ65oez1T6qpttccXIIXTEWvWjI+yNE2OZ5S+bO
         y47a9ahd3rrJuOJCuXRe/NfPK++/Y0adda+HZ+ia5I/bpeGPXWcy6ScX5SEwVY3yEesW
         itTn/srfarCEd5LFR0aL8Odu8fiGgJKMgpfcZgeiCIYXRThoHbQyW7JnCBBYPP0Y5FK3
         gzXg==
X-Gm-Message-State: AOJu0YwYNg+LDl5tPLmNYiOQeshPb/tyhnMXJgQ3RVncpaDuoL1ZRqPM
	g1wRXq2C293fQccDQVn115bca4fGb+ws1kORWGXhfErz8RL7s+jIIgqWAOuMJQ==
X-Gm-Gg: AeBDieuHwmlM3qSwdrIoemrE7fZ65mMWdb597R2XUjiIoEOdQsNRaTjGCGy0qKl6tz7
	3+39pmulFuY/kUPDuyEBwiZ11gX5MNYK15MZ0eWJUd9Ra7VS7xhQ5vv/AYZuXE+awSAzjVWD0eX
	2W2O7sRiSYxSkIwsvP3xYSek32QIveudbzWqQYHc1Lkgl7KAU9BqIAw7E+A7WaVdI2X/fOYCswD
	Sz8TB92A/Rery5nW2fnKIDS2spKRsPURTTDV8ICO6CeiI/8FlfYRcsftkYb4H4e/JkDjIbuBSg5
	NffgbUZPUO6y9450x/vMhBEcBNycC3pd3nxQbaxKK7gZMjoUxdJMywsXq/55ycIWhbvrbIYF/Nu
	vfN99QXlMR+CkWLBQ+SU39u8GsQiiyXnD38aKEU7K3fJCrVhkT5p2z6Z9605LdL14HHsa5FluYt
	E8htLkBzBuDv3itZVzH3qvl0R2enCzp33oYMxsRLVwNlQtrcedwxQXO6K/kSZNEY0kKaNsLbVhg
	abv
X-Received: by 2002:a05:600c:8b2f:b0:487:1520:d107 with SMTP id 5b1f17b1804b1-488d688da37mr363620945e9.31.1776349270314;
        Thu, 16 Apr 2026 07:21:10 -0700 (PDT)
From: Oleksii Kurochko <oleksii.kurochko@gmail.com>
To: xen-devel@lists.xenproject.org
Cc: Oleksii Kurochko <oleksii.kurochko@gmail.com>,
	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?q?Roger=20Pau=20Monn=C3=A9?= <roger.pau@citrix.com>
Subject: [PATCH v1 1/3] xen/dom0less: introduce free_phandle in struct kernel_info
Date: Thu, 16 Apr 2026 16:20:58 +0200
Message-ID: <58f59a071f6329acac610688a6c25b67b30e5b92.1776340422.git.oleksii.kurochko@gmail.com>
X-Mailer: git-send-email 2.53.0
In-Reply-To: <cover.1776340422.git.oleksii.kurochko@gmail.com>
References: <cover.1776340422.git.oleksii.kurochko@gmail.com>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit
X-purgate-ID: tlsNG-720697/1776349271-B3563161-B83B048D/10/73395122804
X-purgate-type: spam
X-purgate-size: 5091

There are cases where it is necessary to know the next available phandle
number in order to generate phandles for guest device nodes.

When a partial FDT (pfdt) is provided, special care is needed during
initialization of free_phandle, as the pfdt may already contain a dummy
interrupt controller node with a phandle assigned to it.  free_phandle
must therefore be initialized to one past the highest phandle already
present in the pfdt, to avoid collisions.

Since free_phandle may be needed for the very first guest node generated,
domain_handle_dtb_boot_module() is moved earlier in prepare_dtb_domU().
The new call site also aligns better with the existing comment stating
that domain_handle_dtb_boot_module() must be called before the rest of
the device tree is generated.

Introduce get_next_free_phandle() to ensure that phandles allocated for
guest nodes do not overlap the Xen-reserved phandle range.  This helper
will be used by subsequent patches (by RISC-V at the moment).

Signed-off-by: Oleksii Kurochko <oleksii.kurochko@gmail.com>
---
 xen/common/device-tree/dom0less-build.c | 44 ++++++++++++++++++-------
 xen/include/xen/fdt-domain-build.h      |  6 ++++
 xen/include/xen/fdt-kernel.h            |  3 ++
 3 files changed, 41 insertions(+), 12 deletions(-)

diff --git a/xen/common/device-tree/dom0less-build.c b/xen/common/device-tree/dom0less-build.c
index 840d14419da2..9205f01f0a49 100644
--- a/xen/common/device-tree/dom0less-build.c
+++ b/xen/common/device-tree/dom0less-build.c
@@ -389,6 +389,24 @@ static int __init domain_handle_dtb_boot_module(struct domain *d,
     if ( res < 0 )
         goto out;
 
+    /*
+     * Find the highest phandle in the partial FDT so free_phandle starts
+     * above it, avoiding collisions with pfdt's own phandle assignments.
+     */
+    res = fdt_generate_phandle(pfdt, &kinfo->free_phandle);
+    if ( res )
+    {
+        res = (res == -FDT_ERR_NOPHANDLES) ? -EOVERFLOW : -EINVAL;
+        goto out;
+    }
+
+    if ( kinfo->free_phandle >= GUEST_PHANDLE_GIC )
+    {
+        dprintk(XENLOG_ERR, "Phandle allocation overlaps Xen reserved range\n");
+        res = -EOVERFLOW;
+        goto out;
+    }
+
     for ( node_next = fdt_first_subnode(pfdt, 0);
           node_next > 0;
           node_next = fdt_next_subnode(pfdt, node_next) )
@@ -459,6 +477,8 @@ static int __init prepare_dtb_domU(struct domain *d, struct kernel_info *kinfo)
     BUILD_BUG_ON(DOMU_DTB_SIZE > SZ_2M);
 
     kinfo->phandle_intc = GUEST_PHANDLE_GIC;
+    kinfo->free_phandle = 1;
+    BUILD_BUG_ON(GUEST_PHANDLE_GIC == 1);
 
 #ifdef CONFIG_GRANT_TABLE
     kinfo->gnttab_start = GUEST_GNTTAB_BASE;
@@ -499,6 +519,18 @@ static int __init prepare_dtb_domU(struct domain *d, struct kernel_info *kinfo)
     if ( ret )
         goto err;
 
+    /*
+     * domain_handle_dtb_boot_module() must be called before the rest of the
+     * device tree is generated because it sets phandle_intc and free_phandle,
+     * which subsequent node generation depends on.
+     */
+    if ( kinfo->dtb )
+    {
+        ret = domain_handle_dtb_boot_module(d, kinfo);
+        if ( ret )
+            goto err;
+    }
+
     ret = make_chosen_node(kinfo);
     if ( ret )
         goto err;
@@ -516,18 +548,6 @@ static int __init prepare_dtb_domU(struct domain *d, struct kernel_info *kinfo)
     if ( ret )
         goto err;
 
-    /*
-     * domain_handle_dtb_boot_module has to be called before the rest of
-     * the device tree is generated because it depends on the value of
-     * the field phandle_intc.
-     */
-    if ( kinfo->dtb )
-    {
-        ret = domain_handle_dtb_boot_module(d, kinfo);
-        if ( ret )
-            goto err;
-    }
-
     ret = make_intc_domU_node(kinfo);
     if ( ret )
         goto err;
diff --git a/xen/include/xen/fdt-domain-build.h b/xen/include/xen/fdt-domain-build.h
index 1d9e77df0eb3..220ae46ddbe1 100644
--- a/xen/include/xen/fdt-domain-build.h
+++ b/xen/include/xen/fdt-domain-build.h
@@ -63,6 +63,12 @@ int find_unallocated_memory(const struct kernel_info *kinfo,
                                       unsigned long e_gfn,
                                       void *data));
 
+/* Return 0 (invalid phandle) if the Xen-reserved range has been reached */
+static inline uint32_t get_next_free_phandle(struct kernel_info *kinfo)
+{
+    return kinfo->free_phandle >= GUEST_PHANDLE_GIC ? 0 : kinfo->free_phandle++;
+}
+
 #endif /* __XEN_FDT_DOMAIN_BUILD_H__ */
 
 /*
diff --git a/xen/include/xen/fdt-kernel.h b/xen/include/xen/fdt-kernel.h
index aa977a50f4fc..3527934b2a00 100644
--- a/xen/include/xen/fdt-kernel.h
+++ b/xen/include/xen/fdt-kernel.h
@@ -44,6 +44,9 @@ struct kernel_info {
     /* Interrupt controller phandle */
     uint32_t phandle_intc;
 
+    /* Next free phandle available for assigning to guest device nodes */
+    uint32_t free_phandle;
+
     /* loader to use for this kernel */
     void (*load)(struct kernel_info *info);
 
-- 
2.53.0



From xen-devel-bounces@lists.xenproject.org Thu Apr 16 14:21:16 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 16 Apr 2026 14:21:16 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1283528.1565723 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wDNai-0004sy-AP; Thu, 16 Apr 2026 14:21:12 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1283528.1565723; Thu, 16 Apr 2026 14:21: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 1wDNai-0004sr-64; Thu, 16 Apr 2026 14:21:12 +0000
Received: by outflank-mailman (input) for mailman id 1283528;
 Thu, 16 Apr 2026 14:21:11 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92) id 1wDNag-0004sk-RF
 for xen-devel@lists.xenproject.org; Thu, 16 Apr 2026 14:21:11 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wDNag-00EKYV-81
 for xen-devel@lists.xenproject.org; Thu, 16 Apr 2026 16:21:10 +0200
Received: from [10.42.69.9] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <oleksii.kurochko@gmail.com>)
 id 69e0f052-2eae-0a2a0a5409dd-0a2a4509bd4e-18
 for <xen-devel@lists.xenproject.org>; Thu, 16 Apr 2026 16:21:10 +0200
Received: from [209.85.128.44] (helo=mail-wm1-f44.google.com)
 by tlsNG-bad1c0.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.1)
 (envelope-from <oleksii.kurochko@gmail.com>)
 id 69e0f056-2497-0a2a45090019-d155802cb0f6-3
 for <xen-devel@lists.xenproject.org>; Thu, 16 Apr 2026 16:21:10 +0200
Received: by mail-wm1-f44.google.com with SMTP id
 5b1f17b1804b1-483487335c2so88860995e9.2
 for <xen-devel@lists.xenproject.org>; Thu, 16 Apr 2026 07:21:10 -0700 (PDT)
Received: from fedora (user-109-243-69-121.play-internet.pl. [109.243.69.121])
 by smtp.gmail.com with ESMTPSA id
 5b1f17b1804b1-488f096d110sm59803515e9.11.2026.04.16.07.21.08
 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
 Thu, 16 Apr 2026 07:21:08 -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=20251104 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=20251104; t=1776349269; x=1776954069; 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;
        bh=8WDmI4uDUxJdH9DUf7wtpMI5KiM27kuS/AB0o2KQnY0=;
        b=cfyEpxftkkHGYoWYvV2FnztBlT3G2uIBrLiOKnjx9t4SpeJ9uNfCrUohsl+qsMHmIO
         jEmtM01BSfZ6ALk+JwcmLGykokFNGKTAiiV40fNe8UMZDkk90O5w/xKpnPoWPPQCK7/H
         Wrz+v2rnzgJwrTKfsU8kOetG7u73SkZ8LXvyzqjvUcZ3EYQQLRn5taFFMDH7kwrxYm15
         S45kzAxaRaEApLvSkxIBXWGMP8U62fdi9ZkXah3lAoHvGi3KPE2+p9k53pfDnwcabwae
         TOgnfL7c85gjd0IpU8plMv7FMCrdp3foYl6PPj+3L0iSDR8B3bm+InT3UXjR2+SsPiXW
         j/9Q==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20251104; t=1776349269; x=1776954069;
        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;
        bh=8WDmI4uDUxJdH9DUf7wtpMI5KiM27kuS/AB0o2KQnY0=;
        b=bqrkbTNV02WgcDw7/oDgV7GVpebTLCBP9jIWqZPPKazjUR8cfuAs2veBxFv1lJE2Op
         N9/uwO3CeTpB6m2tssFTm5trAsuZfXPK3YjQ5PAUOl6L2MQL/dFiG/a/Gk/5svRglYZY
         Qx//PVKrVlQyt76i63S1PDAsryUrZob6hYU0HYB6aBOpIE+EagoJHXMzZLJcGeLSbUen
         3xjogpUFHDz1h6tReSlkgQ93jS+51Urdnq6ZmvROfnaCANwmfyuOpCPKOu/+PMWQWGYZ
         dY28iHWTYSL+XPuLU1xD8pHpbSz2V+3IhpjW9XOl6lJZOKuQJ3406J6MflS+ZQCORDyQ
         W6Ng==
X-Gm-Message-State: AOJu0YwOiRwWb/r/D2kHIHQcFdSATY+GtIWfyuOLeN9XtPqdDqYe130u
	0CaMxV+vUZ0ldbbw5oniSnUBlfJlyFTASG3s2oyIfZcLxlb8dzvDzO/Q7wAyBQ==
X-Gm-Gg: AeBDieudGWjvHstcltIvOBSdR14Kp+xJG0n4GwH5I+0OwwJoHxzSp/cw2u0rkktjUvE
	ScdlgIS8J1dP7lqR8wgtEzf+1IZXBphw0TxTEWvtJIcKGU6lyM6vCr1LeS2eLNJJ92JVixiyCv7
	nqj8/EEQN3InsyXaPOi4JpnhFBAEpJGnRU9iHIlbmV3dOblD5Va+/Xf4s4nb+Cgl3yFpLOZ1n82
	j+Uh9FPZGSH+WirfdfnXxcLX9WJvWn2QD5iLHFTmEfiOGErl8GSBtjhzjMmPpkU1cXgqFSoiJWD
	FtnhSqU2sV0vNgjUiMR7jUhYO4eHxcbF+4/CXr6PlirUpw9D0nzO/fEvr02UTL+1yu5oB8ucOq9
	+7mw+D0MJ5lLSlf6nY0srU+nfWsAtKkfXXHhVmCJ7Yv/bu3EWxNiJkx3nd6t1CYaQD3TGpfm3ef
	myFw1sk/u62JTwGA4VDkAW0Dd5Vgjf8iT/YWt3hzkh0Kcfc2AINpBK60xHEXAx1AW2S1v4InMjt
	KLw47bQvJeUOcQ=
X-Received: by 2002:a05:600c:8883:b0:488:9e54:94c8 with SMTP id 5b1f17b1804b1-488d689cf93mr278742385e9.31.1776349269213;
        Thu, 16 Apr 2026 07:21:09 -0700 (PDT)
From: Oleksii Kurochko <oleksii.kurochko@gmail.com>
To: xen-devel@lists.xenproject.org
Cc: Oleksii Kurochko <oleksii.kurochko@gmail.com>,
	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?q?Roger=20Pau=20Monn=C3=A9?= <roger.pau@citrix.com>,
	Volodymyr Babchuk <Volodymyr_Babchuk@epam.com>
Subject: [PATCH v1 0/3] dom0less: various updates
Date: Thu, 16 Apr 2026 16:20:57 +0200
Message-ID: <cover.1776340422.git.oleksii.kurochko@gmail.com>
X-Mailer: git-send-email 2.53.0
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit
X-purgate-ID: tlsNG-bad1c0/1776349270-93979A53-23B95089/10/73395122804
X-purgate-type: spam
X-purgate-size: 3822

This patch series introduces a new field to track not-yet-used phandles as there
are some use cases where RISC-V needs to know which phandle number could
be used for generating a device tree node.

For example, on the RISC-V side in make_cpus_node() [1] it is necessary to know
which phandle number is unused to use it for device tree node generation.

Here is an example of generated guest DTB:
    cpus {
    ...
      cpu@0 {
    ...
        interrupt-controller {
          compatible = "riscv,cpu-intc";
          #interrupt-cells = <0x1>;
          interrupt-controller;
          phandle = <0xfdea>;
        };
      };
    };

    /soc/imsics@28000000 {

      interrupts-extended = <0xfdea 0x9 >;

      phandle = <0xfdeb>;
    };

    /soc/aplic@d000000 {
    ...
      msi-parent = <0xfdeb>;
      phandle = <0x1>;
    };

Note that phandles for imsic and riscv,cpu-intc are generated in this example
not by get_next_free_phandle(), that is why they have such big numbers.

For non-RISC-V people, APLIC is an interrupt controller (something like GIC in
Arm), IMSIC is an interrupt controller that provides MSI and connects to
each CPU.

So (based on the DTS above) for APLIC, kinfo->phandle_intc is reused, which
will also be re-used for the device node's interrupt property. For all others, I
just introduced GUEST_PHANDLE_LAST [2] and used it for generation [3]. But I expect
that it could be useful for other architectures too so I just moved it to common
and re-use pfdt to understand what the maximum used phandle is.

[1] https://www.kernel.org/doc/Documentation/devicetree/bindings/interrupt-controller/riscv%2Ccpu-intc.txt
[2] https://lore.kernel.org/xen-devel/ccd6d21b224b478c88ca5f2fdd2d1dd507671510.1773157782.git.oleksii.kurochko@gmail.com/
[3] https://lore.kernel.org/xen-devel/fd64b8526a23e9d7775b9b48c5a933b0673c4fba.1773157782.git.oleksii.kurochko@gmail.com/
           *************************************

Another thing introduced in this patch series is moving domain type to common
code as several architectures (ARM and RISC-V for now) use them and it
looks pretty architecture-independent. Also, is_64bit_domain() is used by
dom0less common code, so I found it useful also to move is_{32,64}bit_domain
macros to common code.

           *************************************

And the last thing is changing the prototype of make_cpus_node() to be aligned
with other make_*_node() and since RISC-V will need access to the free_phandle field
(even if it will be moved to kinfo->arch.free_phandle) and for the reason that
this ->free_phandle is updated in make_*_node(), the kinfo argument is passed as
non-const.

CI tests: https://gitlab.com/xen-project/people/olkur/xen/-/pipelines/2457632124

Oleksii Kurochko (3):
  xen/dom0less: introduce free_phandle in struct kernel_info
  xen/dom0less: pass kernel_info struct instead of fdt to
    make_cpus_node()
  xen: introduce CONFIG_HAS_DOMAIN_TYPE

 xen/arch/Kconfig                        |  3 ++
 xen/arch/arm/Kconfig                    |  1 +
 xen/arch/arm/arm64/domctl.c             |  4 +-
 xen/arch/arm/dom0less-build.c           | 14 -------
 xen/arch/arm/domain_build.c             | 11 +++---
 xen/arch/arm/include/asm/domain.h       | 12 ------
 xen/arch/arm/include/asm/kernel.h       |  4 --
 xen/arch/arm/kernel.c                   | 10 ++---
 xen/common/device-tree/dom0less-build.c | 51 ++++++++++++++++++-------
 xen/include/xen/dom0less-build.h        |  2 -
 xen/include/xen/domain.h                | 13 +++++++
 xen/include/xen/fdt-domain-build.h      |  8 +++-
 xen/include/xen/fdt-kernel.h            |  8 ++++
 xen/include/xen/sched.h                 |  4 ++
 14 files changed, 86 insertions(+), 59 deletions(-)

-- 
2.53.0



From xen-devel-bounces@lists.xenproject.org Thu Apr 16 14:26:08 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 16 Apr 2026 14:26:08 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1283570.1565759 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wDNfS-0006y5-Ie; Thu, 16 Apr 2026 14:26:06 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1283570.1565759; Thu, 16 Apr 2026 14:26: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 1wDNfS-0006xy-Eg; Thu, 16 Apr 2026 14:26:06 +0000
Received: by outflank-mailman (input) for mailman id 1283570;
 Thu, 16 Apr 2026 14:26:04 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <jbeulich@suse.com>) id 1wDNfQ-0006xc-Ef
 for xen-devel@lists.xenproject.org; Thu, 16 Apr 2026 14:26:04 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wDNfO-00EUyY-9o
 for xen-devel@lists.xenproject.org; Thu, 16 Apr 2026 16:26:03 +0200
Received: from [10.42.69.2] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <jbeulich@suse.com>)
 id 69e0f160-bab6-0a2a0a5309dd-0a2a4502b5fc-48
 for <xen-devel@lists.xenproject.org>; Thu, 16 Apr 2026 16:26:03 +0200
Received: from [209.85.221.43] (helo=mail-wr1-f43.google.com)
 by tlsNG-720697.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.1)
 (envelope-from <jbeulich@suse.com>)
 id 69e0f17b-af86-0a2a45020019-d155dd2ba87b-3
 for <xen-devel@lists.xenproject.org>; Thu, 16 Apr 2026 16:26:03 +0200
Received: by mail-wr1-f43.google.com with SMTP id
 ffacd0b85a97d-43d70c30767so436657f8f.0
 for <xen-devel@lists.xenproject.org>; Thu, 16 Apr 2026 07:26:03 -0700 (PDT)
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-43ead3ebaf1sm14379690f8f.33.2026.04.16.07.26.02
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Thu, 16 Apr 2026 07:26:02 -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=google header.d=suse.com header.i="@suse.com" header.h="Content-Transfer-Encoding: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=1776349563; x=1776954363; darn=lists.xenproject.org;
        h=content-transfer-encoding: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;
        bh=y1EiZRrmvmLsUk5kd4nFHM1hnrne3bEEkRcTKkmmAe0=;
        b=JlEjQBOWXov8LBALCVH54o8vOFR8f9xouNxSe+rqX1KxKM6D4tibcwDOpCQhZjAH7X
         Ohk4zcx+VFuceDDqlWWGD+CcQIDTPxKwes0HKy9KmjB/ifcTE0GBb/HhkH71cns3DkDC
         QcgDPUfKWz4RZ90qmJjmRKxncvjNggjQkt5LNB5XeLGeq9xuvT7ecU5Q/RotRvtFAJyc
         /Bpy32ib3nN05zJ58HBxCp145v0xeRMbjhAcMbpcF5zGwoiNio2Gr/gwnq8o8loNO70v
         ccdJW2VPBP0pP8Vh0SiBR0L94NhjOfnvwcBW6zxV8LmiwmR8zG7hyroXFi45cxM+OVOU
         Mbhw==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20251104; t=1776349563; x=1776954363;
        h=content-transfer-encoding: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;
        bh=y1EiZRrmvmLsUk5kd4nFHM1hnrne3bEEkRcTKkmmAe0=;
        b=raHUySO86FwimIs4m/gBYhvzqRQJKkhbz48A22G+akyqm2/IlBt0LEb27xaHJBdFkF
         vuHR82gzI9OLLchAQQxjK1JL+QYHly3Nq//V5rfLUAQg+s1DhkRod7Fr+FaMapw008pJ
         ODDTmGogebspPJKsrYq/AYFLVbPQFZI/mjMN9rLk9qHirxapLRr9uqrEmKcriD4oc3B9
         dTzOurWc49euyJ1ZBTpLGMUtk0j/df1e3x+1jRIuNC8vJQ+NNP4thASELi7UoWlPn1iG
         jdtW8KJ53fYH4nmEb+IsR4+vKp7iAXspcyUGL5AhmVGrC+Rzg3AGj/2Di6dvVgNXDPUf
         80dw==
X-Forwarded-Encrypted: i=1; AFNElJ9JOdwn60WsC22wJhkje78JTzYWCB4GtGaYVk+smkjoszgqB5MUt/ULc3Jm20mgLDmBL6NIchMeY3U=@lists.xenproject.org
X-Gm-Message-State: AOJu0YymP5xrKh9P4xlQC9aLztJJspD3ZeRva5ImImF+hqakJBpXP3eT
	YouGA9T3URHVU8LJ3Vbp0bhxhBMvu3mZ82A2P3/+Gd+libiOHthhHSxWtKHcWsQTfw==
X-Gm-Gg: AeBDiesBj93KQhqLfF5fVgxdobwGNtCV1EEsIhSl4Tj9f7EGrxix3v1glVUj/XPuSsi
	22GJYS+sm/38yHIp3jE9O+Gp6focARPSJuMqZOPckOMeD5IEFkI+tzLpRUCgTEWF3r04h6LHUJe
	97Pbal2lK0Knlxog3Z7dEqDU5x08vf62zbw41DYXRiRcXb/AeXZONv/wAp47wKSk7iM1syXMZS+
	d55PRfVW6o9DQbKv8zQEw9HPZ7oLQp48f7pOnsFYt7cHNK0ViYJ9Zu8E9BFL36dB1vzw2maF3T7
	SLF7smLVXjG5di9DDKhPPWdVE7aNw3qNCzxj1TEEhmLPi0yrRQeMaXEY1rDyL4pvSwrzKZRmgXW
	qy+dWQz1WwO6p8VaRLHkY+4hp1ymfJ4M80WLd2zpq/bTLqDDdFwJXg9MUPOIq2iB3KMrpq5NG9V
	VaSNDc14pnRsp2iMD2gAVpET+xtuv2/8yZUkx7gr+rJt3rs3e9rl+j9X5gb2++XFYbUnZDFs+HC
	61kHClJ1zB8vJrA9Lri6ULu5vaVad4b9uO4
X-Received: by 2002:a05:6000:1865:b0:43e:531f:720c with SMTP id ffacd0b85a97d-43fdbb400a3mr3674655f8f.11.1776349563039;
        Thu, 16 Apr 2026 07:26:03 -0700 (PDT)
Message-ID: <ed24f4f3-935f-4e60-b5ae-f5df49ae06d9@suse.com>
Date: Thu, 16 Apr 2026 16:26:05 +0200
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH v4 1/4] vpci: Use pervcpu ranges for BAR mapping
To: Stewart Hildebrand <stewart.hildebrand@amd.com>,
 Mykyta Poturai <Mykyta_Poturai@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.pau@citrix.com>,
 Stefano Stabellini <sstabellini@kernel.org>, xen-devel@lists.xenproject.org
References: <20260406191203.97662-1-stewart.hildebrand@amd.com>
 <20260406191203.97662-2-stewart.hildebrand@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: <20260406191203.97662-2-stewart.hildebrand@amd.com>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 7bit
X-purgate-ID: tlsNG-720697/1776349563-81772161-99629E44/0/0
X-purgate-type: clean
X-purgate-size: 1823

On 06.04.2026 21:11, Stewart Hildebrand wrote:
> From: Mykyta Poturai <Mykyta_Poturai@epam.com>
> 
> There is no need to store ranges for each PCI device, as they are only
> used during the mapping/unmapping process and can be reused for each
> device. This also allows to avoid the need to allocate and destroy
> rangesets for each device.
> 
> Move the rangesets from struct vpci_bar to struct vpci_vcpu and perform
> (de-)allocation with vcpu (de-)allocation. Introduce RANGESET_DESTROY()
> macro to free a rangeset and set the pointer to NULL.

I'm struggling some with this description. On a typical system I might
expect far more vCPU-s to be there than there are PCI devices. In which
case "There is no need to ..." and "This also allows to avoid ..." feels
like an attempt to mislead readers: We may end up with bigger memory
footprint, when my reading of the description suggests you're trying to
hint at a reduction.

> --- a/xen/common/domain.c
> +++ b/xen/common/domain.c
> @@ -455,6 +455,8 @@ static int vcpu_teardown(struct vcpu *v)
>   */
>  static void vcpu_destroy(struct vcpu *v)
>  {
> +    vpci_vcpu_destroy(v);
> +
>      free_vcpu_struct(v);
>  }

Can't the resources be released much earlier, somewhere during
domain_relinquish_resources()?

> --- a/xen/include/xen/rangeset.h
> +++ b/xen/include/xen/rangeset.h
> @@ -40,6 +40,13 @@ struct rangeset *rangeset_new(
>  void rangeset_destroy(
>      struct rangeset *r);
>  
> +/* Destroy a rangeset, and zero the pointer to it. */
> +#define RANGESET_DESTROY(r)  \
> +    ({                       \
> +        rangeset_destroy(r); \
> +        (r) = NULL;          \
> +    })

Please note the subtle but important difference (in ordering of operations)
from e.g. XFREE() or FREE_XENHEAP_PAGES().

Jan


From xen-devel-bounces@lists.xenproject.org Thu Apr 16 14:32:58 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 16 Apr 2026 14:32:58 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1283584.1565766 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wDNm1-0000ZL-AX; Thu, 16 Apr 2026 14:32:53 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1283584.1565766; Thu, 16 Apr 2026 14:32: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 1wDNm1-0000ZE-7l; Thu, 16 Apr 2026 14:32:53 +0000
Received: by outflank-mailman (input) for mailman id 1283584;
 Thu, 16 Apr 2026 14:32:52 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <jbeulich@suse.com>) id 1wDNm0-0000Z8-RD
 for xen-devel@lists.xenproject.org; Thu, 16 Apr 2026 14:32:52 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wDNm0-001Qpv-7b
 for xen-devel@lists.xenproject.org; Thu, 16 Apr 2026 16:32:52 +0200
Received: from [10.42.69.11] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <jbeulich@suse.com>)
 id 69e0f30f-bab6-0a2a0a5309dd-0a2a450b97be-10
 for <xen-devel@lists.xenproject.org>; Thu, 16 Apr 2026 16:32:52 +0200
Received: from [209.85.128.43] (helo=mail-wm1-f43.google.com)
 by tlsNG-42698a.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.1)
 (envelope-from <jbeulich@suse.com>)
 id 69e0f313-212f-0a2a450b0019-d155802bb8aa-3
 for <xen-devel@lists.xenproject.org>; Thu, 16 Apr 2026 16:32:52 +0200
Received: by mail-wm1-f43.google.com with SMTP id
 5b1f17b1804b1-488a88aeec9so107528435e9.2
 for <xen-devel@lists.xenproject.org>; Thu, 16 Apr 2026 07:32:52 -0700 (PDT)
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-488f5818da1sm54892825e9.6.2026.04.16.07.32.50
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Thu, 16 Apr 2026 07:32:51 -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=google header.d=suse.com header.i="@suse.com" header.h="Content-Transfer-Encoding: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=1776349971; x=1776954771; darn=lists.xenproject.org;
        h=content-transfer-encoding:autocrypt:subject:from:cc:to
         :content-language:user-agent:mime-version:date:message-id:from:to:cc
         :subject:date:message-id:reply-to;
        bh=slDPYrctv6jfSsJ6PkEdWvubNTg8JImdwxpxyEkVm5o=;
        b=XPQJuhcGYVHw3eJMnZVXadtO3sT0l5DGiPt725vW1Or+NobuSPl9iIjWW1prRerUFO
         CFDTtzAKHOuhW7cd8rDogSRSx/I5SUdtusnJ5tbMnl4aZT06txUGxgqmEqISgvfgoA1s
         Bhr0hp1ZV4ZIyY8oGuEakekbyTJt7dWyxzXeQxd6JrkhqtqMDqndQ3CmESy2JqFyMRK+
         YckVHt2XRIShxjX/NV3WuxoxrmeZCrV3iJaQ8X8CLI2aA1rYUJDLIH91CtY3/dWHIuCY
         HHKsxG+qSqJPgXgEpEfr43GLIJvFkW0EZxB6mDN7EdjlrWWvYcPyclzDxB0pt0Inrax9
         1WIw==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20251104; t=1776349971; x=1776954771;
        h=content-transfer-encoding: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;
        bh=slDPYrctv6jfSsJ6PkEdWvubNTg8JImdwxpxyEkVm5o=;
        b=pnZ2d78qt+PBJ8EZwyexgE6EhzsYKhBa2/+ImLjnfsBdMtJe30DkprKbq8xiX5U6Sd
         ITHL/NPYCs69zw9ugfc4YDS9gdOUJM6j+IdTCer5ndblydzR0ARl3gdybFNlT2V1yKzN
         yJ20WVYO2wOUPMlThCPmgLbrHR7XMeeMUrlYd+G+sSzK2B+h+v9+8WTL8fmJgpZ9B/Z1
         t3xwvmOQr71r4hn3EaJCP4Lu0VHi7S5wvoRt0xmoBk4tBdfNH1IjiN6Mbh6lLnnbb9x9
         /vdTAr9yQs8vhfKRFEaM1lBnlz1mwRKOgxUuZZFkLeInnMlsWvjP0LUwZ743P8lPsA3D
         /3wQ==
X-Gm-Message-State: AOJu0Yxgb8ESRGW2VjbxZ0Te2PP76S423rMuGEjtvDs3I2kTi7UKdnFi
	ie+68Uv8EPkcDWc7u56x5PBzZG9T7Z/he5BLxWZAhhsFvzuA6EluHZ978mjMZA7dUW2HROJgo4U
	Fkhz8Iw==
X-Gm-Gg: AeBDietwQY1RZxQHQZ/6j5mtZDeZw8F2AWPBd4jGOtR3fR7pFZYc3YzyuQBan3ukKJv
	dOKNqIz///kZaQ11FajCd1lScxKCMHl24V3Ap3LPfQcQlXdET7E0p7NiejxSgWc9t1f+kaTtqiz
	yKVWYrwJ2gR+pHu9Gi8Xu4w/MjnP8xQoFK/m+NsmTtUDDLtj6Yqw+gT4pTcIiBaQIuMcK+4XyeH
	lRI6P6I5taY7/0Pvkp5FsDOe2IeRnu983Na9Ly98Sk5OScEyAUVxNV4N91GbQK2RD5dG38qbgLG
	2JZ1NnUX0Ou5WOSz2v5u0Q/dJTkhFTBp2biGsy2J1K0NSLfW28AYMJ5hqRLBspGQuQM1wbaz1RM
	aBjqjM93lzGyH0VkKHbBoheVEGG9mBeXE85HFvFjQQex87bFIMyJh7r7/wBGFYRItmuyTjKOTA8
	9BS1z9miWiJ2yMGE8mRN6uX1OtQM14blxFPgEiDnjBei40pKCkklmJFdRri0erYf3Y3VO3Q6rDG
	4aYzkV+n5Y3FDtF0+iFbIEpdA==
X-Received: by 2002:a05:600c:8904:b0:488:c257:a73b with SMTP id 5b1f17b1804b1-488d67effd0mr246519425e9.9.1776349971473;
        Thu, 16 Apr 2026 07:32:51 -0700 (PDT)
Message-ID: <29c2a896-59b4-4804-ade4-362f65ffadfc@suse.com>
Date: Thu, 16 Apr 2026 16:32:54 +0200
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.pau@citrix.com>
From: Jan Beulich <jbeulich@suse.com>
Subject: [PATCH] xvmalloc: adjust XVFREE() ordering
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/1776349972-05D6FF3B-84052021/0/0
X-purgate-type: clean
X-purgate-size: 668

What c4f427ec879e ("xen: Swap order of actions in the FREE*() macros") did
should have been done right away when XVFREE() was introduced.

Amends: 9102fcd9579f ("mm: introduce xvmalloc() et al and use for grant table allocations")
Signed-off-by: Jan Beulich <jbeulich@suse.com>

--- a/xen/include/xen/xvmalloc.h
+++ b/xen/include/xen/xvmalloc.h
@@ -71,8 +71,9 @@ void *_xvrealloc(void *va, size_t size,
 
 /* Free an allocation, and zero the pointer to it. */
 #define XVFREE(p) do { \
-    xvfree(p);         \
+    void *_ptr_ = (p); \
     (p) = NULL;        \
+    xvfree(_ptr_);     \
 } while ( false )
 
 static inline void *_xvmalloc_array(


From xen-devel-bounces@lists.xenproject.org Thu Apr 16 14:40:07 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 16 Apr 2026 14:40:07 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1283598.1565776 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wDNsu-0001TQ-Vd; Thu, 16 Apr 2026 14:40:00 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1283598.1565776; Thu, 16 Apr 2026 14: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 1wDNsu-0001TJ-Sk; Thu, 16 Apr 2026 14:40:00 +0000
Received: by outflank-mailman (input) for mailman id 1283598;
 Thu, 16 Apr 2026 14:39:59 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <roger.pau@citrix.com>) id 1wDNst-0001TD-I6
 for xen-devel@lists.xenproject.org; Thu, 16 Apr 2026 14:39:59 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wDNss-00ENrZ-V6
 for xen-devel@lists.xenproject.org; Thu, 16 Apr 2026 16:39:58 +0200
Received: from [10.42.69.4] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <roger.pau@citrix.com>)
 id 69e0f4bd-bab6-0a2a0a5309dd-0a2a45049916-2
 for <xen-devel@lists.xenproject.org>; Thu, 16 Apr 2026 16:39:58 +0200
Received: from [52.101.57.67]
 (helo=BN8PR05CU002.outbound.protection.outlook.com)
 by tlsNG-ebf023.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.1)
 (envelope-from <roger.pau@citrix.com>)
 id 69e0f4bd-1dec-0a2a45040019-346539431d2c-4
 for <xen-devel@lists.xenproject.org>; Thu, 16 Apr 2026 16:39:58 +0200
Received: from CH7PR03MB7860.namprd03.prod.outlook.com (2603:10b6:610:24e::14)
 by SJ0PR03MB6549.namprd03.prod.outlook.com (2603:10b6:a03:386::19)
 with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9818.25; Thu, 16 Apr
 2026 14:39:53 +0000
Received: from CH7PR03MB7860.namprd03.prod.outlook.com
 ([fe80::f5ba:35df:1c9f:b343]) by CH7PR03MB7860.namprd03.prod.outlook.com
 ([fe80::f5ba:35df:1c9f:b343%4]) with mapi id 15.20.9818.017; Thu, 16 Apr 2026
 14:39: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=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=Dw71vAar2EKnna1hiHQ5DBl9dwllhTpfABD2S6OxxtKJEv4qIyHWvyxqDqPQi9wX1CSq9VjlSBuGvAnW0xGHPVOiq6moTfE63Uq0I0gV8EsyOKWf+x9laff8H6edWWwpHuvQ9YXMuKfk+BnSUqUi4tR1bSOraPDyOAiuxoOEClvt/NCdlQli7E2q5O0C7ZPF4FVHNELkLn7jZ1o4IBEGU7m3Bsmo9KU2Y9Tue2DoKvMHJkFTKepUyjB5ffGquJl4Dld+WO+Ngh9czzGRNfxXocjcFXTms5o2ZlNIJ0EaH/Dzo9s3fLa5aTjI4lF95MFS+1ixDdR5Ya7w5PBn3HzGPw==
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com;
 s=arcselector10001;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1;
 bh=CCexuXcnCPR6FD9OUkYshKxyTvIRaUTsQO9BnYK2Gxw=;
 b=OvyMFWxyWpLrOp9POE8hNN7jyn4hYF8vc6UWgB1BIuw+wQAcdxUgBPOSYJ9gitSHj3AUfW1S9rtBBEGT3lNXS/uP0gHpmomoGhNH68InLmexOnsGZUqt9eDEe7YbTucgL2m5qquyz96PNIoAA2EDgDYEG23Z2QSSeJ0IY/kmWqHxV55viNi9aj0j6Jt4Rjj14QACsaLHhDsWmXwlZCxsI7Y48b2yWJ61xJnJ5ZiXvHhMLZy2YtCBX4IYZ/FbQXmKVj42FK4620G5VZZzJcnYsWKxAitfsAN8s3SnDAH2KRvx4gEVJrlDTDaC8HM44bKnd49WjL7KAFOJ6IqEE+BGHg==
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=CCexuXcnCPR6FD9OUkYshKxyTvIRaUTsQO9BnYK2Gxw=;
 b=fQBC1GMSm0E86+7bLp5JZgtI4iOmlRTpxM3vAsqldD/q/t5hWatEhHc584Vm8ITSfsPMmXJ7f/idWpr5GH2F013g5EEGuuMaO+WG6mFH1NHdCu2nwlBrLd84MJBe+blu7gUwNDhIbQSjZcDUQEkGS3cmP+TCcvI4/WygenMb3Y4=
Authentication-Results: dkim=none (message not signed)
 header.d=none;dmarc=none action=none header.from=citrix.com;
Date: Thu, 16 Apr 2026 16:39:49 +0200
From: Roger Pau =?utf-8?B?TW9ubsOp?= <roger.pau@citrix.com>
To: Jan Beulich <jbeulich@suse.com>
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>
Subject: Re: [PATCH] xvmalloc: adjust XVFREE() ordering
Message-ID: <aeD0tZVMC-LD5FMo@macbook.local>
References: <29c2a896-59b4-4804-ade4-362f65ffadfc@suse.com>
Content-Type: text/plain; charset=utf-8
Content-Disposition: inline
Content-Transfer-Encoding: 8bit
In-Reply-To: <29c2a896-59b4-4804-ade4-362f65ffadfc@suse.com>
X-ClientProxiedBy: MA3P292CA0014.ESPP292.PROD.OUTLOOK.COM
 (2603:10a6:250:2c::15) To CH7PR03MB7860.namprd03.prod.outlook.com
 (2603:10b6:610:24e::14)
MIME-Version: 1.0
X-MS-PublicTrafficType: Email
X-MS-TrafficTypeDiagnostic: CH7PR03MB7860:EE_|SJ0PR03MB6549:EE_
X-MS-Office365-Filtering-Correlation-Id: 6f5bbbff-7e88-452b-f4f4-08de9bc60592
X-MS-Exchange-SenderADCheck: 1
X-MS-Exchange-AntiSpam-Relay: 0
X-Microsoft-Antispam:
	BCL:0;ARA:13230040|366016|1800799024|376014|18002099003|22082099003|56012099003;
X-Microsoft-Antispam-Message-Info:
	zAj/ZNkE8OUy3PNEGKNPb3mC3CPJ4kLPnzs/sEelNcBWz503ekxdiYd7YX12EsB/nJcFjGCWZ/vOBTOs8g1mZZAo6qeqwIjOSFwldNzOxzEegWC+EU5Tl5FvZpOM00tdzA4FX3vVlN0vrcH3FAEUDDLxaIY60gHo2TM7DSCQ1Go1IUYusbZn+cFHN2tsufXiehGU5KNMAow36c+zFs51DIUfg4gkb6pDo3kKOeuUbpQ94dbLXxn5Br2UOhEhMPxNINC4f6lmPEDs15UzIoVOspfTdDoJHW3tyRdO4o6/A7dVFyYBr/zV6BzuoxmGXvR7RY82DNiZGwWPx8Vvt3fj+s3eJDu3LxOItW3Q4HRN0SW+MaLLNZWu0Q1xdOn8FSC7Yb56cdBZyE8npw5tkmrLDgilk5NKwI0qBjy3p53LtgU+et6ynTreneH2I648V1IozioWW5S/6ZR9aaNTEt8qPL9JeRcTqIGSbPzE7L3t401Wgr/bwr8XLwayLpis86yCSUOKhK4qdGI/terI01KVDk4htLmddGwXPuAPkQ4skg3pa2KP6Z4BUOUvxVwLxItT1jbHRfob4k+PG2V3zVGmUeUnAYEw2necgviST/7MoBsWZY/UaB8BOQD7qecMuFNPqKh76QnZ9SU0/JmN0TRZ/QdDwjIc1mB33CWZAUZ5sZdVXN3HwGDj1yhuZTQX3P/JLmirjBOqI86x2OR0xBrH8a5ejCERhb3tNcpsRTZvsEE=
X-Forefront-Antispam-Report:
	CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:CH7PR03MB7860.namprd03.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(366016)(1800799024)(376014)(18002099003)(22082099003)(56012099003);DIR:OUT;SFP:1101;
X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1
X-MS-Exchange-AntiSpam-MessageData-0:
	=?utf-8?B?NWxtSWtFczhpQnMzODY4TDBGeFpZWGNtdjFLWmh4VlhMMi9JMFNsemVacmpS?=
 =?utf-8?B?UHNuSnVQaGl1WDNSREpUbmlNZE9tNHQxYnp3NWZrcWU4VmNhS0hrNnROSlF0?=
 =?utf-8?B?aUVkVk52WUJ5R1BRb2NZdWs0VTN0ODNjdzJMZmV6WUVXYmdSV1BaZmdxb3pt?=
 =?utf-8?B?NFhKeC9rQnduZS9tcjk3VHBFOWNVNXJQNWlQckFmVHpuTmg5Ky85a2F4eXUy?=
 =?utf-8?B?bUZyandpdnM1QlB5TE0ydGlxNllZMWVFQ0RkMW41bDhrS090aXhxRlQ4Mkp3?=
 =?utf-8?B?eFcvenM1MVhYWkpueEkwZW9zSXp6K25VZjBLVUF6aGJZcnNVekIyeHNMbE5N?=
 =?utf-8?B?Mlk0T3MvZFRZbU1mWUFHZXhGYTFKOUlNSXJzUTk2d0dSNUlsSEtyUnJheDVG?=
 =?utf-8?B?QzJNQTBON0wwQkgrTVVwYlRNeC9EWmlyeU5YdHRRU25MQlVjazVkQkgvQzU1?=
 =?utf-8?B?bUFVd0JMcGx5QUZPL0NxSkdwdDk0eURhc2RBWXFJcFpDVzJ6ZTVodFZWVzND?=
 =?utf-8?B?OTkwcno1QWJ1SHAweGs5UDhBSnExMWdYbDB1ZHVpWG92amtpMjZNMDlxNVRr?=
 =?utf-8?B?Umw4amRkYlEyVFhrdVZBMytRT2ZkR2x4RjQ5UDNjRTl6NkZYL0lZRWhOZVVF?=
 =?utf-8?B?b0hnblZZdWM1SnNhbnhWS3JRcTV4bDhlYTlaLzRZS2lwVWQrdWNhVzlyUkdN?=
 =?utf-8?B?ekVlY2U3cmdmQ2dCZDBpNXBuZ3hmZzBTdHZwT2JYUitHbkN1NEU2OXdEdk9x?=
 =?utf-8?B?REZ2KzBPVXpSbXJIQkwzb0VrazVXNEZzemFzNUJmYjV0QTc4QUcwMnpOQVdP?=
 =?utf-8?B?QjdiblAybCtaZk4rNEwwbjU4bXhzekdqM3VHT1FsWUMwSWh0bUFZMG9KT3dz?=
 =?utf-8?B?aUN4MnFhWGk0WTY5ZE15WjBhNnNXN0djaEYyc2VNSDdLbjdGcjZ6TG50cE9I?=
 =?utf-8?B?NVhpNDQ5OGxhMkdyVWxMMVhhaTNSR2VsNm9kYkpTVWgrLzc1SldzWGx2L3dD?=
 =?utf-8?B?N2RQK1lwUVp4TDdmNkNGZVduZXJyZnJyV21wL21TTlJzUXVwS1pCMnBQRVEr?=
 =?utf-8?B?alFGaC9TTFBRbXZZZmVMYUMwRjhoRE1JVWhmV1ZETVZDcDJwR09vQjBKZUFY?=
 =?utf-8?B?Q01KSVNrd0MzZEdPR0VLUG80ZVc3NVcrMDNrN3ZoR1N4a1RLM05sdTBSeXFu?=
 =?utf-8?B?OTFJNlBDOGpLMjJTOWwzVHR4V3hjM1ZNQXBCb05QWC9kSHV2NFZmVXlyR2pZ?=
 =?utf-8?B?QTUvQ0twMzFXZW1tem9ibERBeE1RaXhHM0FCbDFLckQycVErcm5LandDSEUz?=
 =?utf-8?B?SHJYSVl6WkJCd083Ujd6SDlqZitmNjVmYXNKam90QWQ4eDlYcC9KZUNkVGts?=
 =?utf-8?B?TllQNVVVT0RabUdMTHQxczE1eXJ3YjlNazhWdnF2V29hRnpyZUxjV0V5TG84?=
 =?utf-8?B?bkpFYTl4MXFGWDZjRC96em80Q0JzMVRDanc0WVdhdUlNZVBoYjh0MC9MV1FW?=
 =?utf-8?B?RGlIUDY1RmxoVFBxOE9xZ2o3NDlRVjdZSGNZbUVMYU03OUFzcTdQSVVvbVJS?=
 =?utf-8?B?c1ZzVzNHR0d0cVFHZWJvTkkrZ3hGdEFkNit2N0ZsV0RUUXJBTS9jTC9uNFNM?=
 =?utf-8?B?aWtpWUNVZmpvSGZGU1FnTWVjNC96UDBIQStHdFFoNXdma3B4TkFkQUQ3SEpR?=
 =?utf-8?B?NkkxNVdmRTFTakZOdVB1d2QwTG9CVmhDS0o5bE5PMEE1dXlFVi9hWFVxRTMr?=
 =?utf-8?B?ekJtcVVWMENoY2VGUWxnZ252elVXOTVpMWhpOFZZdFBFZGdpeEc1NUl0MFdO?=
 =?utf-8?B?S3VyaDJ3a1hyL05xSU41NHRqU2lvd0MwWUU0UVdYVm5DUk02V3g3QlBDLzdF?=
 =?utf-8?B?UzdCQlVTcGZHcXJZcE1FWWpDdEl1bW9QVTFvTXZWM3NreDhITFd0N2g5dGJi?=
 =?utf-8?B?V3VFZk52ZWtVVlAwS0tVU2V6KzJvVnlQbjQvd2NYNGNNSXFvdFBkanpReWkr?=
 =?utf-8?B?Qk85TW9BcTlCN1V0SnZyQ3MzSTJkR3ErTHkwU1I2YmNRcEhTdEJORHhuZkFK?=
 =?utf-8?B?VisrUFFFQVpKaEdPd2NpWE5nOUVITjcxTENJM3ZhVGJTU3pZbzRCZEFwdjB6?=
 =?utf-8?B?dWE5ak5rMkYwV2QxMFpQbFN1VnlCOHRadElNc1FySlN4MHNWTnh2TEpiQyth?=
 =?utf-8?B?Wm9Md3dZYmF3MTFNaUZhK0lua2hRYVZHbjkrYmZ5SENVVis1WUp6bzVGUWQ2?=
 =?utf-8?B?RGdDa1FLWFpnZk5SeHVqVmdxREgyeWkrZUw3NG5VMjJpeFpJYkpNdldzenQz?=
 =?utf-8?B?b2c5L2JpU045VytOZW9hS01ucENDS2lYMUdqYTJaY3Zhd0I5ZkgwUT09?=
X-OriginatorOrg: citrix.com
X-MS-Exchange-CrossTenant-Network-Message-Id: 6f5bbbff-7e88-452b-f4f4-08de9bc60592
X-MS-Exchange-CrossTenant-AuthSource: CH7PR03MB7860.namprd03.prod.outlook.com
X-MS-Exchange-CrossTenant-AuthAs: Internal
X-MS-Exchange-CrossTenant-OriginalArrivalTime: 16 Apr 2026 14:39:53.3872
 (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: 0bcBEr52G6y4UgWQgZOD8o0s/dSQ13zdGcCIqyvoKkbB82ui8+l2OgWXZkxf39WLRrsoenO/u2gROgXVpNgbKg==
X-MS-Exchange-Transport-CrossTenantHeadersStamped: SJ0PR03MB6549
X-purgate-ID: tlsNG-ebf023/1776350398-2B96A3FF-F0DCF419/0/0
X-purgate-type: clean
X-purgate-size: 568

On Thu, Apr 16, 2026 at 04:32:54PM +0200, Jan Beulich wrote:
> What c4f427ec879e ("xen: Swap order of actions in the FREE*() macros") did
> should have been done right away when XVFREE() was introduced.
> 
> Amends: 9102fcd9579f ("mm: introduce xvmalloc() et al and use for grant table allocations")
> Signed-off-by: Jan Beulich <jbeulich@suse.com>

Acked-by: Roger Pau Monné <roger.pau@citrix.com>

No intention to stir controversy, but I feel like this should better
use the Fixes tag, as it's not an omission or similar, but code fix.

Thanks, Roger.


From xen-devel-bounces@lists.xenproject.org Thu Apr 16 14:50:49 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 16 Apr 2026 14:50:49 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1283611.1565784 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wDO3G-0004Jy-St; Thu, 16 Apr 2026 14:50:42 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1283611.1565784; Thu, 16 Apr 2026 14:50: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 1wDO3G-0004Jr-PK; Thu, 16 Apr 2026 14:50:42 +0000
Received: by outflank-mailman (input) for mailman id 1283611;
 Thu, 16 Apr 2026 14:50:42 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <jbeulich@suse.com>) id 1wDO3G-0004Jl-3O
 for xen-devel@lists.xenproject.org; Thu, 16 Apr 2026 14:50:42 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wDO3F-00HEfU-CT
 for xen-devel@lists.xenproject.org; Thu, 16 Apr 2026 16:50:41 +0200
Received: from [10.42.69.8] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <jbeulich@suse.com>)
 id 69e0f731-bab6-0a2a0a5309dd-0a2a45088fc0-40
 for <xen-devel@lists.xenproject.org>; Thu, 16 Apr 2026 16:50:41 +0200
Received: from [209.85.128.46] (helo=mail-wm1-f46.google.com)
 by tlsNG-c1860d.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.1)
 (envelope-from <jbeulich@suse.com>)
 id 69e0f741-63b5-0a2a45080019-d155802ec8d2-3
 for <xen-devel@lists.xenproject.org>; Thu, 16 Apr 2026 16:50:41 +0200
Received: by mail-wm1-f46.google.com with SMTP id
 5b1f17b1804b1-48897fd88ebso82041685e9.2
 for <xen-devel@lists.xenproject.org>; Thu, 16 Apr 2026 07:50:41 -0700 (PDT)
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-488f581d93bsm59157165e9.8.2026.04.16.07.50.39
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Thu, 16 Apr 2026 07:50:40 -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=google header.d=suse.com header.i="@suse.com" header.h="Content-Transfer-Encoding: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=1776351040; x=1776955840; darn=lists.xenproject.org;
        h=content-transfer-encoding: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;
        bh=XP6qFxUGIohGWvQOJLgxJLyDGnWaSG8PCHN+VV9d/x8=;
        b=Zfl5VhncLrtJU4JaKU7o31y72h8ePRFx2z/oPhtOpAxbXtEIxVnhWtYzpwgKlbei9D
         NhMtatzrDShYb+szyLFDi1VamuPByYMzp2T7y5gcKEH6UvNr1y4zPa87Jmjw0+VH5Hzt
         pq/kdSJou/9Yn5uQ835GRsQE1HuAtYouClypUawblfUTlafRoLDdK7UUXlG+9RpRbiFI
         ea8E45XHulSrEWNE4ynPzo9JLL6FR5f+DQlqvbD0vOVZPI8TCGNsT1ca/D/U7Wnrna37
         Z4d/RpY/HN7D9MS6SqVCq7v8R1wQmT0WqDg3kTnXq64NAu5qqigpMePwTnVS/LCSLHFR
         KV0w==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20251104; t=1776351040; x=1776955840;
        h=content-transfer-encoding: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;
        bh=XP6qFxUGIohGWvQOJLgxJLyDGnWaSG8PCHN+VV9d/x8=;
        b=FwUurQkQxXiP050xzMo6K0Cjsj5ukMB+2qe0qVw9soQvAmV19ZSBTh5wQL++enwraQ
         m8i3Ut1ZNtEZScuQnx16mfM8gzBXOX40XEJkHorIMkifBd93lRe5KCLH2QJxlwtvuQXP
         GaRvuGwpbqWmkyj2iZuXG9zRH/4iTHIgKkTx6ae808uV53lyUaratNoJCSaouToYgOqR
         seov1yHUaSTyyTHOvlahqxLYKw/6mTPmO2hi9FAceRGzVepdZe8NmF0TsatMFJpY6ubi
         WwvCvw4ZgV+ZaZtGJxHUqY68XrsGBVzSJLvKjHwO2KN+aQt+LchQri5Scog6/8pYeZA1
         x8yw==
X-Gm-Message-State: AOJu0YxUDibInamkyyle0htitHkDP0NDSTxciAq5PwFMgL8HanQrpgHB
	gHbDJfDOsgmCRDyqOJPEAvQMzYXeXqfM4nVfUKCtyGV7cZF1CD8d0gRyys+ZS539PA==
X-Gm-Gg: AeBDieugaFnJTNmkZpGWwZHEieyC9RM04TlobeYhVA/kDffpBNOAF6Q/fvHlLkiaOTF
	BuJR3vX9tvaiHYbsKosxrlJfzZCzDTbdTlKvVrsujw7GrhFvS/2mhI5Nw3zwZF+KGt2G3stEGvw
	7bwqiR9WYgmu4DhUcOQ4TyqSKHmRgquedox7Mef1aEnL10pgc5rqRGctqFZDFgHqfFnA54Bs/aP
	tYLEXqJATPWACalUcAlFSWkVP/piYqRgzoTL4X1ryYoevPa7ANcKidWKs9Zz+2Jma8D1veftA+I
	M0+Q0JpGDDAe6Or/vauWY8TZMlqJI8N8eJVIgSZpCDY0xLvYsEIpGnSMVyQO5CVTHZfYcjftOqF
	0K4vUKAxd9ZoV7OwzP8VI7Z+salEIvT62zHYbtYBnRcaR0L2HTJZkZUsr7DiMg5LJJfvZW31815
	1Gf0NFQP5fMWrZ2irB0oh/KxpKHGbKBVtyYSS9Gx+cdBpJCoCctlt4mhmwNhbm+eSGOpjAUmijw
	I8vpZz1xg3OSFTTBa5+Iyj+PKno1pbWbDnf
X-Received: by 2002:a05:600c:64c4:b0:486:fbd1:9dc0 with SMTP id 5b1f17b1804b1-488d68c2c56mr325045925e9.22.1776351040603;
        Thu, 16 Apr 2026 07:50:40 -0700 (PDT)
Message-ID: <58dd3393-02a8-418a-8a8a-7d8f0256fb3c@suse.com>
Date: Thu, 16 Apr 2026 16:50:43 +0200
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH] xvmalloc: adjust XVFREE() ordering
To: =?UTF-8?Q?Roger_Pau_Monn=C3=A9?= <roger.pau@citrix.com>
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>
References: <29c2a896-59b4-4804-ade4-362f65ffadfc@suse.com>
 <aeD0tZVMC-LD5FMo@macbook.local>
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: <aeD0tZVMC-LD5FMo@macbook.local>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
X-purgate-ID: tlsNG-c1860d/1776351041-C2F72DB1-2A5C894C/0/0
X-purgate-type: clean
X-purgate-size: 832

On 16.04.2026 16:39, Roger Pau Monné wrote:
> On Thu, Apr 16, 2026 at 04:32:54PM +0200, Jan Beulich wrote:
>> What c4f427ec879e ("xen: Swap order of actions in the FREE*() macros") did
>> should have been done right away when XVFREE() was introduced.
>>
>> Amends: 9102fcd9579f ("mm: introduce xvmalloc() et al and use for grant table allocations")
>> Signed-off-by: Jan Beulich <jbeulich@suse.com>
> 
> Acked-by: Roger Pau Monné <roger.pau@citrix.com>

Thanks.

> No intention to stir controversy, but I feel like this should better
> use the Fixes tag, as it's not an omission or similar, but code fix.

I would have used Fixes: if I was able to spot a use where the difference
would actually matter in existing code. I can switch, but in the absence
thereof I deemed Amends: (marginally) more precise.

Jan


From xen-devel-bounces@lists.xenproject.org Thu Apr 16 14:54:03 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 16 Apr 2026 14:54:03 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1283621.1565794 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wDO6T-0004rH-Ax; Thu, 16 Apr 2026 14:54:01 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1283621.1565794; Thu, 16 Apr 2026 14:54: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 1wDO6T-0004rA-74; Thu, 16 Apr 2026 14:54:01 +0000
Received: by outflank-mailman (input) for mailman id 1283621;
 Thu, 16 Apr 2026 14:53:59 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <bounce-md_30504962.69e0f804.v1-022c2e7114b44be4b2facfd1241cac04@bounce.vates.tech>)
 id 1wDO6R-0004r4-KE
 for xen-devel@lists.xenproject.org; Thu, 16 Apr 2026 14:53:59 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wDO6R-00Dgea-0w
 for xen-devel@lists.xenproject.org; Thu, 16 Apr 2026 16:53:59 +0200
Received: from [10.42.69.6] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1) (envelope-from
 <bounce-md_30504962.69e0f804.v1-022c2e7114b44be4b2facfd1241cac04@bounce.vates.tech>)
 id 69e0f804-2eae-0a2a0a5409dd-0a2a4506c0c6-20
 for <xen-devel@lists.xenproject.org>; Thu, 16 Apr 2026 16:53:58 +0200
Received: from [198.2.187.30] (helo=mail187-30.suw11.mandrillapp.com)
 by tlsNG-16d1c6.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.1)
 (envelope-from
 <bounce-md_30504962.69e0f804.v1-022c2e7114b44be4b2facfd1241cac04@bounce.vates.tech>)
 id 69e0f805-7371-0a2a45060019-c602bb1e36f7-3
 for <xen-devel@lists.xenproject.org>; Thu, 16 Apr 2026 16:53:58 +0200
Received: from pmta09.mandrill.prod.suw01.rsglab.com (localhost [127.0.0.1])
 by mail187-30.suw11.mandrillapp.com (Mailchimp) with ESMTP id
 4fxLch6PFXzP0JmqM
 for <xen-devel@lists.xenproject.org>; Thu, 16 Apr 2026 14:53:56 +0000 (GMT)
Received: from [37.26.189.201] by mandrillapp.com id
 022c2e7114b44be4b2facfd1241cac04; Thu, 16 Apr 2026 14:53: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=mte1 header.d=mandrillapp.com header.i="@mandrillapp.com" header.h="From:Subject:To:Cc:Message-Id:References:In-Reply-To:Feedback-ID:Date:MIME-Version:Content-Type:Content-Transfer-Encoding"; dkim=pass header.s=mte1 header.d=vates.tech header.i="anthony.perard@vates.tech" header.h="From:Subject:To:Cc:Message-Id:References:In-Reply-To:Feedback-ID:Date:MIME-Version:Content-Type:Content-Transfer-Encoding"
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=mandrillapp.com;
	s=mte1; t=1776351236; x=1776621236;
	bh=gi+t3/ZN5lKqMAmYOjIg5gm8bbk5VIPYRqdumnQ0dMU=;
	h=From:Subject:To:Cc:Message-Id:References:In-Reply-To:Feedback-ID:
	 Date:MIME-Version:Content-Type:Content-Transfer-Encoding:CC:Date:
	 Subject:From;
	b=zj8wrTcNXBtG79F3PWsTVyL+dOv+gcWinQwz6xIeujpU6pj+hyYCYg3RmQMfjpZAg
	 gLr8qCddCyS1znkuncpBBaPgPcJrwNeVmSIzReuTv8J0eAm0WJJ9ejnZcZN2M23tIr
	 5rctCjGFbgtn+8zpCAagO+UcDypGa7cjHz3Gf+gV1+DNWRwOgfdf9dEKE3JoIRmtqL
	 QgcsJxV0hZLImEN2mzd8ZPZkZVIDLzhgRq2Obv/5TWgrX+YQFN0Or8sdsMDEATEiyn
	 ouCKoD9xGnKVVOKohfS1hZOeVQiIEOz50gpIGXubufDh8wl10J1MpJI2OC8v64OU9c
	 0NXTUDAHbSVBQ==
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=vates.tech; s=mte1;
	t=1776351236; x=1776611736; i=anthony.perard@vates.tech;
	bh=gi+t3/ZN5lKqMAmYOjIg5gm8bbk5VIPYRqdumnQ0dMU=;
	h=From:Subject:To:Cc:Message-Id:References:In-Reply-To:Feedback-ID:
	 Date:MIME-Version:Content-Type:Content-Transfer-Encoding:CC:Date:
	 Subject:From;
	b=X2fk5H0iNdeVIsb0mOwEekEtbK2OCSKTXtf3zwobtlNGKqPH/8H1Wv/SG1/EY3vX3
	 wK9KgsPyfTYHU57RCGwTENAT9hVThgxI359ODnYQ0gyrdU1MuGx8ZDRcqTnfCoj6gG
	 2N6uDjbTJpr7FC+chUlm0ET5g20sLOvNCowzslS1KSKexAwhEl6MMHaTireyZRelph
	 E1CyxKUmP81iHKR8X1F2VY1VwZkAhwVX7SwpDSlVcj2Zg30cdLSiwgbT888vyP8o6r
	 STRvn9x9Lem3ml7oxb2gYY7TlaYg1FMZqSyVCTmcSP7DlV+Z1TuqQrldJV2ebSHYjB
	 LByg4GNLbjpPQ==
From: "Anthony PERARD" <anthony.perard@vates.tech>
Subject: =?utf-8?Q?Re:=20[PATCH=20test-artifacts=20v3=2013/13]=20Setup=20ssh=20access=20to=20test=20systems?=
X-Bm-Disclaimer: Yes
X-Bm-Milter-Handled: 4ffbd6c1-ee69-4e1b-aabd-f977039bd3e2
X-Bm-Transport-Timestamp: 1776351235575
To: "=?utf-8?Q?Marek=20Marczykowski-G=C3=B3recki?=" <marmarek@invisiblethingslab.com>
Cc: xen-devel@lists.xenproject.org, "Andrew Cooper" <andrew.cooper3@citrix.com>, "Stefano Stabellini" <sstabellini@kernel.org>, "=?utf-8?Q?Roger=20Pau=20Monn=C3=A9?=" <roger.pau@citrix.com>
Message-Id: <aeD4A2ub4VjbM-z5@l14>
References: <cover.bd2e5bd58e4b316c9c1042b1ca8db51b81fb7ea7.1774999132.git-series.marmarek@invisiblethingslab.com> <c58b23b75f4a65ef7bb70b472466ad3586aab9ee.1774999132.git-series.marmarek@invisiblethingslab.com>
In-Reply-To: <c58b23b75f4a65ef7bb70b472466ad3586aab9ee.1774999132.git-series.marmarek@invisiblethingslab.com>
X-Native-Encoded: 1
X-Report-Abuse: =?UTF-8?Q?Please=20forward=20a=20copy=20of=20this=20message,=20including=20all=20headers,=20to=20abuse@mandrill.com.=20You=20can=20also=20report=20abuse=20here:=20https://mandrillapp.com/contact/abuse=3Fid=3D30504962.022c2e7114b44be4b2facfd1241cac04?=
X-Mandrill-User: md_30504962
Feedback-ID: 30504962:30504962.20260416:md
Date: Thu, 16 Apr 2026 14:53:56 +0000
MIME-Version: 1.0
Content-Type: text/plain; charset=utf-8
Content-Transfer-Encoding: quoted-printable
X-purgate-ID: tlsNG-16d1c6/1776351238-CF77FD75-8A070105/0/0
X-purgate-type: clean
X-purgate-size: 1429

On Wed, Apr 01, 2026 at 01:22:03AM +0200, Marek Marczykowski-G=C3=B3recki w=
rote:
> diff --git a/scripts/alpine-rootfs.sh b/scripts/alpine-rootfs.sh
> index f649550d80ab..0afae48cfa6b 100755
> --- a/scripts/alpine-rootfs.sh
> +++ b/scripts/alpine-rootfs.sh
> @@ -72,6 +74,7 @@ rc-update add loopback sysinit
>  rc-update add bootmisc boot
>  rc-update add devfs sysinit
>  rc-update add dmesg sysinit
> +rc-update add dropbear boot
>  rc-update add hostname boot
>  rc-update add hwclock boot
>  rc-update add hwdrivers sysinit
> @@ -84,7 +87,9 @@ echo "ttyS0" >> /etc/securetty
>  echo "hvc0" >> /etc/securetty
>  echo "ttyS0::respawn:/sbin/getty -L ttyS0 115200 vt100" >> /etc/inittab
>  echo "hvc0::respawn:/sbin/getty -L hvc0 115200 vt100" >> /etc/inittab
> +echo "DROPBEAR_OPTS=3D\"-R\"" >> /etc/conf.d/dropbear

Is this useful somehow? Because the service that start dropbear will
generate the ssh_host keys before starting dropbear.

>  echo "rc_verbose=3Dyes" >> /etc/rc.conf
> +touch /etc/network/interfaces

That the kind of command that I don't understand what it is for on a
first look ...
But looks like it just to allow the "networking" service to start
without error if the test didn't configure networking via this file. A
comment would be nice, here or in the commit message.

Thanks,


--
 | Vates

XCP-ng & Xen Orchestra - Vates solutions

web: https://vates.tech




From xen-devel-bounces@lists.xenproject.org Thu Apr 16 14:59:57 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 16 Apr 2026 14:59:57 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1283636.1565803 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wDOC9-0005lb-25; Thu, 16 Apr 2026 14:59:53 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1283636.1565803; Thu, 16 Apr 2026 14:59: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 1wDOC8-0005lU-VR; Thu, 16 Apr 2026 14:59:52 +0000
Received: by outflank-mailman (input) for mailman id 1283636;
 Thu, 16 Apr 2026 14:59:51 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <jbeulich@suse.com>) id 1wDOC7-0005lO-JQ
 for xen-devel@lists.xenproject.org; Thu, 16 Apr 2026 14:59:51 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wDOC6-00DhQc-Gp
 for xen-devel@lists.xenproject.org; Thu, 16 Apr 2026 16:59:50 +0200
Received: from [10.42.69.10] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <jbeulich@suse.com>)
 id 69e0f94a-2eae-0a2a0a5409dd-0a2a450acf44-40
 for <xen-devel@lists.xenproject.org>; Thu, 16 Apr 2026 16:59:50 +0200
Received: from [209.85.128.49] (helo=mail-wm1-f49.google.com)
 by tlsNG-4011c0.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.1)
 (envelope-from <jbeulich@suse.com>)
 id 69e0f966-56b3-0a2a450a0019-d1558031dc29-3
 for <xen-devel@lists.xenproject.org>; Thu, 16 Apr 2026 16:59:50 +0200
Received: by mail-wm1-f49.google.com with SMTP id
 5b1f17b1804b1-488ba6366a7so97261205e9.0
 for <xen-devel@lists.xenproject.org>; Thu, 16 Apr 2026 07:59:50 -0700 (PDT)
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-488f0e72980sm66716285e9.5.2026.04.16.07.59.49
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Thu, 16 Apr 2026 07:59:49 -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=google header.d=suse.com header.i="@suse.com" header.h="Content-Transfer-Encoding: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=1776351590; x=1776956390; darn=lists.xenproject.org;
        h=content-transfer-encoding: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;
        bh=kWuZs9deFqGhJC2mLEXvW5ndzqhjdRuMgNXB7yQ+2KY=;
        b=auGrutbd28AR2q7Xwecy4WpFxkZMvBSPmKRX0ATE6CNyw5mCEWHYk4hfbsYBqUnIgo
         6CzDBCFNEG7xImIKlwv5KGL12KDYUECszy6mxt/nNYfdIQ6PRMhgu1mHCr+aHMXPCVnk
         +opF1/MXxREN1irijz39MwFdFXsifl96LnshpAqLoxCtOAhPFKepqWAFLrkTUWTcIYgY
         qp6s3n8WFweMGosyB3GmR9D4W3K3JNwJhm6CFZLHfw1K0EjPse9jVFk01yp/P+SCdW8K
         N0RDat9p4qX2QPR6G59tj8TNXDvbF/SMlN/ywg+b6bFqx5R2Q/czznajDqdsHeMiplYV
         6Agw==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20251104; t=1776351590; x=1776956390;
        h=content-transfer-encoding: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;
        bh=kWuZs9deFqGhJC2mLEXvW5ndzqhjdRuMgNXB7yQ+2KY=;
        b=qtdJ2wNvnKbPQj9kh0ol9crsFBqZG2ZFgNxCNV/cL1WALcZJ+j/W0dd0Yy53hSc0Tt
         NPbIz5M0K+eQ+wFfx1TzDZMkL5QvWNsUwpllEIUXkCWh1E/HU1CVwW8+VmTEuTh1H/qr
         XMr/tJ70xnFv0mheZxN5lUj+KKCKzYyQ29TpSto4B4ezsaqE8zbem3itb7tpDxgdjtws
         4LYhqug3TKV/2trWGrNJ6pNQN5w7lxn+tRr0DNJWzhR86afaSSYGeVn7zo5IERReTbYt
         Ppssq6NPdujg6dUdZZVC36fHXNL3GXWfNgLPfGP8DjBhDzR/oP9ULFiu3HfXaMk47uW7
         tSDA==
X-Forwarded-Encrypted: i=1; AFNElJ965IIGEmBwMN3KaZjux22TIxQlJp0CxoxGQ78Of+086gH9wEjavoBBaRGU5/ADPwIxlbt9PvTsNvM=@lists.xenproject.org
X-Gm-Message-State: AOJu0Ywp4HcBKQvBK9M/IUUK6OFpcWdo+hrrr+AX8nLgmpv4b9of9cLr
	fjCfjXVBUUTXYkMPmiFYeifXbfMp/RpYN7yQBHW8U2r8HlczEbZK36u6URMqBHAkfw==
X-Gm-Gg: AeBDies0hr11oGW16EgDqRgy/EgvW9MUejhJExhN3LDY12ZJ7NEGfuzijKMXIAN2fZx
	q2R7wOe8sU63rZC+vVh2hxgnrNDsv3Xujb+P1/YaX2s9cGLLDKW2h90AXKsOpOA8rOLUuWs8FnZ
	msEda9qxVoZ5uBqgzlu0VBIRKqA6KFl9sIqFZ/qlzyfKCR2CnOLIppW4M5KcdwQ7fy8marx1nHg
	bfbQmeLTp+QlIlIJDaLi/G+LVhEiuph2Tb18D3gaf8ZNgE8XSx/MePQc/TaZAvhmfGn1Ggu5k9N
	S22477YNzaK7Iw+8WTyMPSSp+1u/3l0P1NYAwajJ0ZIxoE9AklwQ81V0baM8FJRra5kYLXpnAzr
	XB6U8S+IYMvMpkQNN3h9pk6PQCr7x3wXzqbkBzZ41igE+0V4WJg49tXAXiZLWJVCEoXCIYaNAc0
	BNxwE2CRygW/M97SfNRRGvBaK32aNeZly7va0KpsE0Yc+KCQum5EG6tm7X+4AB9Wz/bkvdk6m/R
	knlUS8uFXeFhBwYp3FrsOFiSw==
X-Received: by 2002:a05:600c:8883:b0:488:a82f:bb95 with SMTP id 5b1f17b1804b1-488d689c18fmr273836605e9.29.1776351589769;
        Thu, 16 Apr 2026 07:59:49 -0700 (PDT)
Message-ID: <efad3732-243a-4cac-8a92-13b8d9169d54@suse.com>
Date: Thu, 16 Apr 2026 16:59:52 +0200
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH v4 2/4] vpci: allow queueing of mapping operations
To: Stewart Hildebrand <stewart.hildebrand@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.pau@citrix.com>,
 Stefano Stabellini <sstabellini@kernel.org>,
 Mykyta Poturai <Mykyta_Poturai@epam.com>, xen-devel@lists.xenproject.org
References: <20260406191203.97662-1-stewart.hildebrand@amd.com>
 <20260406191203.97662-3-stewart.hildebrand@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: <20260406191203.97662-3-stewart.hildebrand@amd.com>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 7bit
X-purgate-ID: tlsNG-4011c0/1776351590-CF3738B7-2D1D27E1/0/0
X-purgate-type: clean
X-purgate-size: 2205

On 06.04.2026 21:11, Stewart Hildebrand wrote:
> Introduce vPCI BAR mapping task queue. Store information needed to
> map/unmap BARs in struct vpci_map_task. Allow queueing of BAR map/unmap
> operations in a list, thus making it possible to perform multiple p2m
> operations associated with single PCI device.
> 
> This is preparatory work for further changes that need to perform
> multiple unmap/map operations before returning to guest.
> 
> At the moment, only a single operation will be queued. However, when
> multiple operations are queued, there is a check in modify_bars() to
> skip BARs already in the requested state that will no longer be
> accurate. Remove this check in preparation of upcoming changes.
> 
> Signed-off-by: Stewart Hildebrand <stewart.hildebrand@amd.com>
> ---
> apply_map() and vpci_process_map_task() are very similar. Should we try
> to combine them into a single function?
> 
> I concede that the dynamic allocation/deallocation of struct
> vpci_map_task is not ideal. However, to support SR-IOV, there will be a
> need to queue many mapping operations (one per VF), and statically
> pre-allocating that much would seem wasteful. Only the hardware and/or
> control domain would need to queue many operations, and only when
> configuring SR-IOV.

The address ranges are pretty regular though across the VFs, so I wonder
whether getting away with less than one instance per VF (perhaps one per
PF) wouldn't be possible by adjusting what data is being put into the
"task" structure.

> --- a/xen/include/xen/vpci.h
> +++ b/xen/include/xen/vpci.h
> @@ -19,8 +19,7 @@
>   */
>  #define VPCI_MAX_VIRT_DEV       (PCI_SLOT(~0) + 1)
>  
> -void vpci_vcpu_destroy(struct vcpu *v);
> -int vpci_vcpu_init(struct vcpu *v);
> +void vpci_vcpu_init(struct vcpu *v);
>  
>  /* Assign vPCI to device by adding handlers. */
>  int __must_check vpci_assign_device(struct pci_dev *pdev);
> @@ -155,14 +154,23 @@ struct vpci {
>  };
>  
>  #ifdef __XEN__
> -struct vpci_vcpu {
> +struct vpci_map_task {
>      /* Per-vcpu structure to store state while {un}mapping of PCI BARs. */

This comment needs adjusting then, too, doesn't it?

Jan


From xen-devel-bounces@lists.xenproject.org Thu Apr 16 15:08:30 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 16 Apr 2026 15:08:30 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1283649.1565812 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wDOKK-0007Sz-Qj; Thu, 16 Apr 2026 15:08:20 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1283649.1565812; Thu, 16 Apr 2026 15:08: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 1wDOKK-0007Ss-NF; Thu, 16 Apr 2026 15:08:20 +0000
Received: by outflank-mailman (input) for mailman id 1283649;
 Thu, 16 Apr 2026 15:08:20 +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 1wDOKJ-0007Sm-ST
 for xen-devel@lists.xenproject.org; Thu, 16 Apr 2026 15:08:19 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wDOKJ-006U4x-92
 for xen-devel@lists.xenproject.org; Thu, 16 Apr 2026 17:08:19 +0200
Received: from [10.42.69.4] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <andrew.cooper@citrix.com>)
 id 69e0fb56-e002-0a2a0a5209dd-0a2a4504974a-46
 for <xen-devel@lists.xenproject.org>; Thu, 16 Apr 2026 17:08:19 +0200
Received: from [52.101.193.7]
 (helo=CH1PR05CU001.outbound.protection.outlook.com)
 by tlsNG-ebf023.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.1)
 (envelope-from <andrew.cooper@citrix.com>)
 id 69e0fb61-1dec-0a2a45040019-3465c1073096-3
 for <xen-devel@lists.xenproject.org>; Thu, 16 Apr 2026 17:08:18 +0200
Received: from CH8PR03MB8275.namprd03.prod.outlook.com (2603:10b6:610:2b9::7)
 by SA2PR03MB5721.namprd03.prod.outlook.com (2603:10b6:806:117::13)
 with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9818.25; Thu, 16 Apr
 2026 15:08:15 +0000
Received: from CH8PR03MB8275.namprd03.prod.outlook.com
 ([fe80::a70d:dc32:bba8:ce37]) by CH8PR03MB8275.namprd03.prod.outlook.com
 ([fe80::a70d:dc32:bba8:ce37%6]) with mapi id 15.20.9818.017; Thu, 16 Apr 2026
 15:08: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=t3SyxKAIrgjxnmd2fOVUDvRx8ADWDWCkpnEwkuJaNQVUj454sHXqkGcR1OmVoPlhYAhvDTM3RTQX4Ude7IvS9KDQGgUZOs7/c+13wUJhFPCS+L3XEODDYdEQxQYj1gSmF7eI3fgFtSBr27x78sa/ztwi7xoQRfPJKasQaA+fnhgoCMAkDirWFLf4a8H6kGQjHgSjBiiunEZBuWzmxn2Yp/WyZdg3rnNuDlDwZy/crMiWxG5lxNQwjuC0Ve2dikXFV7P627CWay7E+X6+ohxRCX2zcQ9lzQyiperX6KFTMFu+WQd45x7jmwBuOtYy1Asqq8LPGK6aNW0ftkBM+ObUkA==
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com;
 s=arcselector10001;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1;
 bh=cmxJGYfV+BK9CeO9I7cbWuf0MRtfPiUFwAsIa90oYSI=;
 b=arAY3LwNymU7r8k0uiD1TCqucOv5MWJoRlQgLSzQKst0vzQgKGrIH60QV4Pu6AGHVXnp7nVTKWnYp54MQlgbKeFrrF8h/cjAt2jCFurSRyt2qxM+eIWx2MJNzOHH4xmimcNd83WKqAorqzZl+u5hGl9eOMcsZgCS4dwn4HtaAZfk/RetlWkc92Fn/jJEOVrtlwRBL7EakVMewWn9xkm7dEoBLMsUKMbsOXC1uu4U+48G/8ZkM2EZ6V+Th3pvUINiQVFhopllKgvblOZyj9iiHM+o2oxtSDYJrLYxZ0DFPSnVH6J5Gen5u6gaIzuTh7feBnXH5OgPpu63r3YwWPvmFQ==
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=cmxJGYfV+BK9CeO9I7cbWuf0MRtfPiUFwAsIa90oYSI=;
 b=fcINLIUKZjKHF9/3CFi9zR9wPkmVX/SRN2jJbGCT/VIAI3v22g3YAJAwagPbclL/6VPSZAUMKMUhIK/jiN9FPn+RYtQWE2AAuMCCUB3BSwIIhMd4gwlu8Y8jLnttYVuHwlwgDB45Gy1OamITOfG6Cv0RvFsR/ahb4GUYWJKjYQo=
Authentication-Results: dkim=none (message not signed)
 header.d=none;dmarc=none action=none header.from=citrix.com;
Message-ID: <5fbe67ec-d96b-413a-b1e5-fcd8f3c6dacb@citrix.com>
Date: Thu, 16 Apr 2026 16:08:11 +0100
User-Agent: Mozilla Thunderbird
Cc: Andrew Cooper <andrew.cooper3@citrix.com>,
 "xen-devel@lists.xenproject.org" <xen-devel@lists.xenproject.org>,
 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] xvmalloc: adjust XVFREE() ordering
To: Jan Beulich <jbeulich@suse.com>, =?UTF-8?Q?Roger_Pau_Monn=C3=A9?=
 <roger.pau@citrix.com>
References: <29c2a896-59b4-4804-ade4-362f65ffadfc@suse.com>
 <aeD0tZVMC-LD5FMo@macbook.local>
 <58dd3393-02a8-418a-8a8a-7d8f0256fb3c@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: <58dd3393-02a8-418a-8a8a-7d8f0256fb3c@suse.com>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
X-ClientProxiedBy: PA7P264CA0090.FRAP264.PROD.OUTLOOK.COM
 (2603:10a6:102:349::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_|SA2PR03MB5721:EE_
X-MS-Office365-Filtering-Correlation-Id: e8e15a5d-3420-47dc-587d-08de9bc9fc34
X-MS-Exchange-SenderADCheck: 1
X-MS-Exchange-AntiSpam-Relay: 0
X-Microsoft-Antispam:
	BCL:0;ARA:13230040|1800799024|366016|376014|56012099003|22082099003|18002099003;
X-Microsoft-Antispam-Message-Info:
	xhXE8fcMtzdU4eQnwtIqk71Crn86xh56TWefEYt3jq2s7wkbuS9K9NI6RRPXvSPdmqpmrYbW+7TgMdzMg+xDzHIrOQKmmvqlKiO1Vc5oGjCnEReLsEBgJHHb+mQiquI8Yy05GXO8PPnaeVTsUFvTJaE34vwJwQrX8o7Xyf2es+EO3xcSJdfJG2YEljsyqKkFPCEnzUt0yHi4P9vF7LGzoITvA3Ikr+XS5ieUyJeoPNkHPnPLMZu2jkdzdhcgInnmGEcD98sY+WX4u2eDl6EuVIPmBvUcLZdxADyTjxlQ2xYiYoY0Hq6ZuDgF0mxuGU2ULjTVqOJyDFlYARdZ+jRzhHwuYtq+SMbLWDzD1SjBq2JoiUOly1Tz7JnTvFfYUEk6GWDXHFZ8hHxfShHBuKDwNikEyazvHnrQ3WgxCr3z+PcGl2/h6FcQ5Rnz3K8SsyvqnBzYRP5j2l6vC3wjoynU+JBrW8S8+2EwGHnGnWwLkspv8AQfq2DOuZhadTBOmC/GCjBLMPRxtLZymkosKouBeUvCvUSuIDfoPvfEvMlV6htQA38INVgvqRMzbjw5LBCjB4+tvrgui2UI3yMmZd0Vz1CdBncyNG59LND7cj+c1RD33tsUVWPtigtSdYQC0Od9G9ELnuUWbVgT+LpBpNQcvm2U1Y7PBHXVPJ262NJhzPRJMR79nITLf0cUhbpcvTotr9j+eW7arv8tn2AawdAYIJ+eIbdWyqE11X2RNFLtPps=
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)(56012099003)(22082099003)(18002099003);DIR:OUT;SFP:1101;
X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1
X-MS-Exchange-AntiSpam-MessageData-0:
	=?utf-8?B?M2pqVndwZEVMZkcxSWxqV0RxYVJvb0pWemdMTVBadzAzN01LM05IeEJHSW5E?=
 =?utf-8?B?ZUpPNVg5bytqbWZQcE54SmgrWWo2MjhKZG03aXVDTk4xSzFuRTZjMW45eVBh?=
 =?utf-8?B?WkFaVkRyb0lrSzhPQUh5dmFvUkpDTDBRaW5wQmd2TGxUVi9KWEI0eXRGWTEz?=
 =?utf-8?B?RjFCVjBWTHB3b3kzZkU5Q1VYb0tLNGprSHJBNG9iUWtqVVdqM3VOSy8rd1c1?=
 =?utf-8?B?cXI4ZFU0cjRqOFN4SWNMK3lMOUpXT3drQjZCbklCNCs1ZWREbk9HeXhLWDlZ?=
 =?utf-8?B?V0xkdVZ5WldyQXVUanhUNDJMZ2ZHVC9wbkZUYmlDNWpvNk1FZ3ROREx3c09S?=
 =?utf-8?B?ZTNlN1BZN0YrS044Vm5VVnAyc25xVk8yc2xnNm9SUlkreENSSjkrbzBFVTZW?=
 =?utf-8?B?QzlEd2hwbW5QQ1dPZkpZVVpRRlgvY1Y5cTVZOUtydXBLT3Avc240dzlOQXdI?=
 =?utf-8?B?cDdHSERsVU5MNG9FOFlCUzVFWERyTGc3RWcwaDBvMkJFYW1wd3NnUWZJaCs1?=
 =?utf-8?B?cVhaT3BGQUt4SVh4TXdSRkRYdHQvenlMbG9DalFKSEVObi8weHhQTGVZT3Vy?=
 =?utf-8?B?VE5rd3NWK0cvNXVVWmVWZkFaYmFsa3dJU3B5VkxhSVd0S3BiZHYrcjVDRGQ3?=
 =?utf-8?B?UkVUV2NmcHZ2MUNzMzZGQVREbUJJd3FOV25SelA5SjJ3T0FWMmN4UmhJR1VL?=
 =?utf-8?B?UFVDWmFtM3czRnNFbE1xYWJseEhrZUx2S1hiUU96eldsRSs4RW1OTy9vbVhQ?=
 =?utf-8?B?OC9QNzhlNXBUaXRPazI1SVpick83Mk04WVRjdUZtVTlFS2RrYUJMWVZiWEp0?=
 =?utf-8?B?ZjlvbE5TWUlTN0cvT1FkZmtiSVFRbkpEUDNTYklpTWo5OEpFaEhnNkZteGx6?=
 =?utf-8?B?Tjl0SHcyQ3FyQUM3aGlVV0ZLVEJZRHMzWnU5QTZTYkcyeWZPWjRFYlJMZ0to?=
 =?utf-8?B?TjdQcm5oMmtIa0M2bzdFeHU4cy9WaWRXZDZKNWlBcHViWkhtOW1tQ1F5ZkEr?=
 =?utf-8?B?VXNRVkE2VTJtdFlnYmpRMTYyVEliSHFMZmljbDl0UGE5SjBOKzNYS3Rwd25w?=
 =?utf-8?B?SitRVDMvYm5TNEJHZzBTLzJMUUJNNkRKelMzOHBnVUo5Y0IxcTVmZThIWW1L?=
 =?utf-8?B?UmN6OGlDMng4UkRFenY5WDMvaHc3UTd2V2t4WGJOUUM1c1lGb2VEaFMyUjd6?=
 =?utf-8?B?ZFZLMXNKQUY1aElGZFQ3c1ZtT2ZzeS9yVk1MKy84dytnc2o5UGZDNWJIOWRZ?=
 =?utf-8?B?TG1MOTNhcGtsUUg1ZEx4MldveGRpSEU0cjZHeVpFMnVsWUttMFRBTDhhRE9n?=
 =?utf-8?B?NkhjVzZDRzhQd1ArYVhXWTlhQ1o0Tmp0VHE1RkxBeDE4SFJQbUtGNnN6eDQz?=
 =?utf-8?B?ZGoyZTJJVmQ2WVVCeHRaMGVPWmxxQ0lyMTJsWjBDTWs4dWNLUCtiWHB1dTFZ?=
 =?utf-8?B?YWNWKzVpYkpTbFNBbVh6Zmp2ZlN1Q0hXOUw1RFdQN1p5cjU4ck95RFJwcTZq?=
 =?utf-8?B?MzRIQnVGN2s0TUdlRjJCRkp6ZEhobnNyRUF6TWV5VlpNVEpKNm1RVTVsVHZY?=
 =?utf-8?B?YUFiSzhCbzk5cyttWXN6L1Z1L3h4cmdMaWp6bDNTQm9XcjdvS0hWRms5ZWJz?=
 =?utf-8?B?REpaVlNtTDNLYXBsdTBxQ2NGRFVuQUgvUDN6NStxTE42Z0NGaVR1S2N5em5M?=
 =?utf-8?B?QkFoL2g5emxod2QyUFhxczl0bW9SUmxvTTgxMk4xMFAraHNVT2tGMnl2RGNm?=
 =?utf-8?B?bnpsMENnTEpPUllLcTQ4alJXRXZsREtwWFhFN2FRd2xnRER2K3FDeUlXTFpp?=
 =?utf-8?B?aXo2RURYZkpVenJyREM5N0crR2pvVW5PMjc4cFRNaW9NL3lOMTE1ekRzeUUy?=
 =?utf-8?B?VFRTdEt3S0VLbS9iazYvcGZIS0Vvc21kRlVpdmlObWx3NHpjQUtncC9Zenli?=
 =?utf-8?B?TUhWdUk0emJ2b01UZ0dXdGZqVHpja3EwT3JFR1VoRERLOE5lY0tGRHh4RERy?=
 =?utf-8?B?UUlkbG1NQ05DTCt2RDN0MzFSZXdvSXJ2SkE4OHVpamtqZUJtWXUwbFZHUkhL?=
 =?utf-8?B?dm9abFZ4dFVlVjNMeVAxSXJ6YXl1N1lWSkpWa0pwT2twc1ArcG56aFQ4UTk1?=
 =?utf-8?B?dXZuZ1BGUXdnNWRiTEFCb1FGZUJSUTJtMk9Zam03R2V5K1lRelEyVm5IVnVO?=
 =?utf-8?B?MmVERG5RVE5nQU9MeC8rci9FcGFycVVFcHJXVVFWVTNJbFNCSU95amVCeVF3?=
 =?utf-8?B?VXREcmxvS0hnMjJrakR5d0RRK3JrWDIrZlBBdG5CZzVxVjdnZ0dOZHkwZWdi?=
 =?utf-8?B?TDlOMmNsSGNZYTduRjlqUDEzempNdngxNmkzeWtyNWloNkY2TGN1QitxL0RC?=
 =?utf-8?Q?EJQwGKjLMeQKOBBM=3D?=
X-OriginatorOrg: citrix.com
X-MS-Exchange-CrossTenant-Network-Message-Id: e8e15a5d-3420-47dc-587d-08de9bc9fc34
X-MS-Exchange-CrossTenant-AuthSource: CH8PR03MB8275.namprd03.prod.outlook.com
X-MS-Exchange-CrossTenant-AuthAs: Internal
X-MS-Exchange-CrossTenant-OriginalArrivalTime: 16 Apr 2026 15:08:15.6192
 (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: 1MfrvzFYkNmHZq4kpfqUNkpywFt8FG/Q9U0avVJxXZXZkxnoiTZF4gIfBRN4zs6Oucd6sXgaAyhbO7Ukvx9moSGyRA3bwAnGXRSJZUlKhLA=
X-MS-Exchange-Transport-CrossTenantHeadersStamped: SA2PR03MB5721
X-purgate-ID: tlsNG-ebf023/1776352099-4BD6C3FF-E8A219F7/0/0
X-purgate-type: clean
X-purgate-size: 1281

On 16/04/2026 3:50 pm, Jan Beulich wrote:
> On 16.04.2026 16:39, Roger Pau Monné wrote:
>> On Thu, Apr 16, 2026 at 04:32:54PM +0200, Jan Beulich wrote:
>>> What c4f427ec879e ("xen: Swap order of actions in the FREE*() macros") did
>>> should have been done right away when XVFREE() was introduced.
>>>
>>> Amends: 9102fcd9579f ("mm: introduce xvmalloc() et al and use for grant table allocations")
>>> Signed-off-by: Jan Beulich <jbeulich@suse.com>
>> Acked-by: Roger Pau Monné <roger.pau@citrix.com>
> Thanks.
>
>> No intention to stir controversy, but I feel like this should better
>> use the Fixes tag, as it's not an omission or similar, but code fix.
> I would have used Fixes: if I was able to spot a use where the difference
> would actually matter in existing code. I can switch, but in the absence
> thereof I deemed Amends: (marginally) more precise.

It's speculative defence in depth.

Zeroing the pointer in memory before freeing the block is strictly
better than the other way around.

For the local CPU it prevents speculative use-after-free (the store
queue is always in program order), and whether it does this for remote
CPUs depends on how strong the platform memory ordering is.

This all came from the Ghostrace paper.

~Andrew


From xen-devel-bounces@lists.xenproject.org Thu Apr 16 15:16:28 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 16 Apr 2026 15:16:28 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1283668.1565829 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wDORy-0000tt-Jk; Thu, 16 Apr 2026 15:16:14 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1283668.1565829; Thu, 16 Apr 2026 15:16: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 1wDORy-0000tm-Gr; Thu, 16 Apr 2026 15:16:14 +0000
Received: by outflank-mailman (input) for mailman id 1283668;
 Thu, 16 Apr 2026 15:16:13 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92) id 1wDORx-0000tg-BC
 for xen-devel@lists.xenproject.org; Thu, 16 Apr 2026 15:16:13 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wDORw-00EVg7-Nj
 for xen-devel@lists.xenproject.org; Thu, 16 Apr 2026 17:16:12 +0200
Received: from [10.42.69.4] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <oleksii.kurochko@gmail.com>)
 id 69e0fd15-5cb7-0a2a0a5109dd-0a2a45048d66-44
 for <xen-devel@lists.xenproject.org>; Thu, 16 Apr 2026 17:16:12 +0200
Received: from [209.85.221.50] (helo=mail-wr1-f50.google.com)
 by tlsNG-ebf023.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.1)
 (envelope-from <oleksii.kurochko@gmail.com>)
 id 69e0fd3c-1dec-0a2a45040019-d155dd32c93e-3
 for <xen-devel@lists.xenproject.org>; Thu, 16 Apr 2026 17:16:12 +0200
Received: by mail-wr1-f50.google.com with SMTP id
 ffacd0b85a97d-43cfd1f9fd1so5210761f8f.3
 for <xen-devel@lists.xenproject.org>; Thu, 16 Apr 2026 08:16:12 -0700 (PDT)
Received: from [192.168.1.6] (user-109-243-69-121.play-internet.pl.
 [109.243.69.121]) by smtp.gmail.com with ESMTPSA id
 ffacd0b85a97d-43ead3ebd38sm15135081f8f.31.2026.04.16.08.16.10
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Thu, 16 Apr 2026 08:16:11 -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=20251104 header.d=gmail.com header.i="@gmail.com" header.h="Content-Transfer-Encoding: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=20251104; t=1776352572; x=1776957372; darn=lists.xenproject.org;
        h=content-transfer-encoding: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;
        bh=lryr14uWjXql+DBUqhr+y/rp93dt2ZB+sZGWum38uxM=;
        b=r0V1fwjNukafO0huUW8bzgcsAVscatDu8CiO3VIWrA9aybxU9YPbtUpFRyoDrG2iHB
         HPBmgmdxYFx6RqXleUVyAi9FMsmvIApmrH0Zly9xbbohuSR+Sp0QlJkty+PicbcxA2jT
         Lp0tSipfUi1707GZeMj4Cg/LOzcTTTvAQ9vk/FMG4V/TrJ8Pm69rH8AzNZdjI3kX6eut
         Y7co65o6/nW+WWDfNCAnix6QFu5HW3riM4uhIjtMOr0Y1spQwV2OtIEfDzBD4wuRJzhe
         ASlX81jDpLMbSj97oXj5nOEGMcXM3Bh8I3T6tFXRYpWY39McA6C5MvAWKtYprXnSgKwk
         sCMg==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20251104; t=1776352572; x=1776957372;
        h=content-transfer-encoding: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;
        bh=lryr14uWjXql+DBUqhr+y/rp93dt2ZB+sZGWum38uxM=;
        b=CMDQz5hViHVVucaVqqseFRTFhVIdxJDIBrYTzFcZYGn8e1JjHoDhg0UerOAj15zt3S
         o7fFbwMQ8srBSCi5BwlEt2eT7ISPBZqj3T0WfYwxW+0lyUFLygYy3bDEm5DBc3eU82xX
         gF6sT/Y/N6cpQ/fZJruDWUIO/K0ZHuNZCnwvmgkF10YObImOl1XsyMBhVPBwyAp6gXtE
         w/MWTrwWAeo1qI6AjsLjmmXQYZNEsWrJDtAEzTL7ayEUSasSD38G9AfPhkbpYgPLe91y
         +U0fGUWzd07obfcXR2GBotrhZdd9DF328mzpL8OaMLELJbs6Kq3hUJJfzW6TlGjpgVxi
         w/yA==
X-Forwarded-Encrypted: i=1; AFNElJ8S88BOj14hQ2fryAuZjRjcJf8NYwZpWV7XQBKpq826sEqCon8OLPqHxxndshoGp65gsgIcVYve+iA=@lists.xenproject.org
X-Gm-Message-State: AOJu0YzvFSeXsFgNZMQ/wSDRpvuk7af0Uk+9OejyQAiTygkMYHQmGj3Q
	GKmU3Bt92LlA1/Lf7pHCgurIf5lNFbDf3azOHJffI6yfOkoZ+qZwF6TZ
X-Gm-Gg: AeBDieuUcbuRSYMI2XmcZDsFUUPLbcGkxXThjVCbzi4c8ODtej2TGKbBfqet7+fHpFj
	MIBfHme3tlaAPs5jgYQ23v2VSnRPWsEZEuMScmVMAnuSmPisnxne3rbdiknpmET5efbkUD006OL
	mTerN65A+WN2VRzYW0TBiyx8VlanH8vof0UEJMD0RU1xKWv/PQJTF1I9FjpTYIHSTtwGQCh0NWv
	0ZQAVjKBpyEa1arAQXAKusWPTYzqmhJScCuZ+IuKBTF+jIEfS4m2ph4qJiDgclgHfvzmZRqL3fR
	CwGq7CWvggfS/J9F5duFeed8NAmMiQ1SPVv1Wx0YGks4vTXzBo08p5Y/F4JCW/41fe9uX5GLm7R
	DeWzh+mg3ta2Bmj2RfyJHvZO/V56EIo6/43GkJjQ49OzZStUp4oSZkY5DvUz4CXJC3szC9Apovv
	ham+tK6TYjKkUFvZgSAVSKa0zUm5zcOWCcdDxiLeGjtRsTR6pQTZLM3tffjFONjrc0xc4fUpPo+
	WPnA6O0CdQjlM2iG41P+698
X-Received: by 2002:a05:6000:2403:b0:43d:4b00:9ee7 with SMTP id ffacd0b85a97d-43d642d1b1cmr39446558f8f.33.1776352571943;
        Thu, 16 Apr 2026 08:16:11 -0700 (PDT)
Message-ID: <f8673ca0-b625-4a7d-9801-48cc5a48bcf1@gmail.com>
Date: Thu, 16 Apr 2026 17:16:10 +0200
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH] xen/riscv: allow Xen to use SSTC while hiding it from
 guests
To: Jan Beulich <jbeulich@suse.com>
Cc: Romain Caritey <Romain.Caritey@microchip.com>,
 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.pau@citrix.com>,
 Stefano Stabellini <sstabellini@kernel.org>, xen-devel@lists.xenproject.org
References: <eba232ac5a338332ddedc2cb084e0c04ee8744c2.1775835741.git.oleksii.kurochko@gmail.com>
 <c48562eb-e22c-480d-a736-9037a8c6c2ca@suse.com>
Content-Language: en-US
From: Oleksii Kurochko <oleksii.kurochko@gmail.com>
In-Reply-To: <c48562eb-e22c-480d-a736-9037a8c6c2ca@suse.com>
Content-Type: text/plain; charset=UTF-8; format=flowed
Content-Transfer-Encoding: 7bit
X-purgate-ID: tlsNG-ebf023/1776352572-4B3673FF-0144E247/10/73395122804
X-purgate-type: spam
X-purgate-size: 504



On 4/16/26 1:34 PM, Jan Beulich wrote:
> On 10.04.2026 17:45, Oleksii Kurochko wrote:
>> --- a/xen/arch/riscv/include/asm/riscv_encoding.h
>> +++ b/xen/arch/riscv/include/asm/riscv_encoding.h
>> @@ -396,6 +396,8 @@
>>   #define CSR_VSTVAL			0x243
>>   #define CSR_VSIP			0x244
>>   #define CSR_VSATP			0x280
>> +#define CSR_VSTIMECMP		0x24d
>> +#define CSR_VSTIMECMPH		0x25d
> 
> This list looks to be sorted numerically, which you now break.

I will sort them.

Thanks.

~ Oleksii


From xen-devel-bounces@lists.xenproject.org Thu Apr 16 15:29:33 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 16 Apr 2026 15:29:33 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1283691.1565838 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wDOek-0003BE-R7; Thu, 16 Apr 2026 15:29:26 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1283691.1565838; Thu, 16 Apr 2026 15:29: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 1wDOek-0003B7-OD; Thu, 16 Apr 2026 15:29:26 +0000
Received: by outflank-mailman (input) for mailman id 1283691;
 Thu, 16 Apr 2026 15:29:25 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <jbeulich@suse.com>) id 1wDOej-0003B1-LT
 for xen-devel@lists.xenproject.org; Thu, 16 Apr 2026 15:29:25 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wDOej-006Y9f-2A
 for xen-devel@lists.xenproject.org; Thu, 16 Apr 2026 17:29:25 +0200
Received: from [10.42.69.3] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <jbeulich@suse.com>)
 id 69e10048-2eae-0a2a0a5409dd-0a2a45038ef4-28
 for <xen-devel@lists.xenproject.org>; Thu, 16 Apr 2026 17:29:24 +0200
Received: from [209.85.128.43] (helo=mail-wm1-f43.google.com)
 by tlsNG-33051d.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.1)
 (envelope-from <jbeulich@suse.com>)
 id 69e10054-672d-0a2a45030019-d155802ba96e-3
 for <xen-devel@lists.xenproject.org>; Thu, 16 Apr 2026 17:29:24 +0200
Received: by mail-wm1-f43.google.com with SMTP id
 5b1f17b1804b1-488b3f8fa2bso7701785e9.1
 for <xen-devel@lists.xenproject.org>; Thu, 16 Apr 2026 08:29:24 -0700 (PDT)
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-488f095e68dsm82230165e9.2.2026.04.16.08.29.23
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Thu, 16 Apr 2026 08:29:23 -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=google header.d=suse.com header.i="@suse.com" header.h="Content-Transfer-Encoding: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=1776353364; x=1776958164; darn=lists.xenproject.org;
        h=content-transfer-encoding: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;
        bh=o22nfqFVQsUXbuBU9HRN8aQ3+e+e/qm+I8FKaMe0zSU=;
        b=T0YR+ekYOoLT0NSvVOKDH5JJ9aNeql/qponHolsS3SOimmFW9NSAsiUI+7z3E5Osxi
         G7+3rE/r8xMBpcJ34B/n9hIj5gb5BoRyuVa7iN7pCiWpnT7OmhKxKNZquLowDqJEhDBU
         wBeQ8NY/4YtCpdWlTD5rz8xY6kPfe5VY5Ca1IMEokh1yCWI29UZzsGKtq0oxgrdGEwf+
         ypVr6+LDFVptGw0EcV9ZVep3Q0SG0hslCXe86ngE4ew1Ym+FkBXkH47wzH+PblVz2MTQ
         fjmteFWVfzLCwq3uT0mPQrY555NQc2EGY5VQQ3HdQR2HnLzdAIejci9InQNcpmiG+1AU
         XclQ==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20251104; t=1776353364; x=1776958164;
        h=content-transfer-encoding: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;
        bh=o22nfqFVQsUXbuBU9HRN8aQ3+e+e/qm+I8FKaMe0zSU=;
        b=C6XMe/rJeBeb5nUjNvjnFxMc/n0qYmQf7EUb0ewV3LdDraswTujGiRkirPVXooerJx
         qWbo/lx8r9neVW+EASIKbdiL9XLq+hV4C/4+qh9CJTzgEqXWBQizL5AtfklYBl6+SIV6
         dcLDleDZeOrBfYePCFH5ZvqzkqAMbuiOQSe3hSul59zEhx5yLAda2yIQMeakPsrF0UIL
         5NUv2rf0+oHYrL4V6/wPir6NfGCwW16V48h1rWTj42FT6BjMmSLXqz7ya3UJ0VsZ1/U+
         xJH6wJC72kF7KSfgz4/5NyuYPWCFZTgl96PD2F6YvNu9AAUBSWbxTqzPhMUlXzt1bjy8
         cfcg==
X-Forwarded-Encrypted: i=1; AFNElJ9voph6J0WWcpgEnK05PoUfOkdVA5rp9m7HRpcC8gz0KDe0skQ669w6P+VHyOLmJgnhDJXi1rSVdGY=@lists.xenproject.org
X-Gm-Message-State: AOJu0YzhDEsVMQTDPcRwElB+qDnZnNhbpDNIntaqTggQUAG1JPWVRDeK
	TbcxgXiyDDpHP7rNxXlPzVi72yW3/pCpE8hj9fgBafiF/ed/BoTIdA36hRHc5smbKw==
X-Gm-Gg: AeBDietkkZrFa4zQfjQNxkCx7Hgo0Iy+AC5r4PYGGcVKsk3WDkZ+CaCFKHeJLpg7bBR
	B7dR+SUheZ5ASyfDq3RzBcD1PtLm4TLEu0oLlGkk5w404fkrj9O/Usv5zSPn9c0pbQzjflrYI/N
	CBriD1PwhzucbTDMAw6COQj9874mcuz3XfeuRBP558uLMvXmcxl2TbsJb0aixW3eCuxtbCUCxed
	QwwH9VIZaLyrbzA5uPALpZIzBqLbhEag5UfhSzzdq/KL88hqot1KNtXgqt8j1iLQsICZtP6VQm3
	orNBGKQoeHBScOUl/3CEmgqZpjOz6YxujmSAp9Aeaj93aZ9YaxYmva4lW8KrlkKuS7dNnZs0Vsy
	MCV5y/OZO7Z1M2eSRUVn78yvBDq+PwJ7VR0uAdJRRYS4hTn3Blckv9lo2h+TKpiluPE01Z4BkTC
	T8z0bsU2XYCEw46n6Toa4FGE560h8UsWexl8S8dlwHxBVrcedPxj2xog/3fRqgrKlHz6HNiN2Pv
	/xenNysJNRIkS0ruly/GR+lz6hPohCU6wO7
X-Received: by 2002:a05:600c:8881:b0:487:22ad:403e with SMTP id 5b1f17b1804b1-488f4826074mr42009095e9.14.1776353364247;
        Thu, 16 Apr 2026 08:29:24 -0700 (PDT)
Message-ID: <90f66a3a-4811-4f83-a4df-204b121118c2@suse.com>
Date: Thu, 16 Apr 2026 17:29:26 +0200
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH v4 1/4] vpci: Use pervcpu ranges for BAR mapping
To: Stewart Hildebrand <stewart.hildebrand@amd.com>,
 Mykyta Poturai <Mykyta_Poturai@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.pau@citrix.com>,
 Stefano Stabellini <sstabellini@kernel.org>, xen-devel@lists.xenproject.org
References: <20260406191203.97662-1-stewart.hildebrand@amd.com>
 <20260406191203.97662-2-stewart.hildebrand@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: <20260406191203.97662-2-stewart.hildebrand@amd.com>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 7bit
X-purgate-ID: tlsNG-33051d/1776353364-A177E938-74D125C5/0/0
X-purgate-type: clean
X-purgate-size: 1944

On 06.04.2026 21:11, Stewart Hildebrand wrote:
> From: Mykyta Poturai <Mykyta_Poturai@epam.com>
> 
> There is no need to store ranges for each PCI device, as they are only
> used during the mapping/unmapping process and can be reused for each
> device. This also allows to avoid the need to allocate and destroy
> rangesets for each device.
> 
> Move the rangesets from struct vpci_bar to struct vpci_vcpu and perform
> (de-)allocation with vcpu (de-)allocation. Introduce RANGESET_DESTROY()
> macro to free a rangeset and set the pointer to NULL.
> 
> Amends: 622bdd962822 ("vpci/header: handle p2m range sets per BAR")
> Signed-off-by: Mykyta Poturai <mykyta_poturai@epam.com>
> Signed-off-by: Stewart Hildebrand <stewart.hildebrand@amd.com>
> ---
> It seems a bit awkward to introduce various vpci vcpu alloc/dealloc
> functions here only to undo most of it in the next patch. Thoughts on
> folding the next patch into this one?
> 
> v3->v4:
> * no change

There are some complexities here due to the patch being part of two series.
Once Mykyta re-submits the SR-IOV series, we'll have two (likely diverging)
v4-s. Already here ...

> v2->v3:
> * new patch in this series, borrowed from [1]
> * add Amends tag
> * remove unused variable i due to rebasing over 998060dd9101 ("vPCI:
>   move vpci_init_capabilities() to a separate file")
> * enclose entire struct vpci_vcpu inside #ifdef __XEN__
> * s/bar_mem/mem/
> * use ARRAY_SIZE
> * put init/destroy in functions
> * only allocate for domains with vPCI and idle domain
> * replace 'if ( !mem ) continue;' with ASSERT

... the v3 there has one more item on this ChangeLog list ("* synced with
BAR write with memory decoding enabled series[1]"), albeit maybe (now that I
read it again) this merely is the counterpart of the first bullet point here.
It would be clearer if there the other series' title was supplied verbatim
and in quotes.

Jan


From xen-devel-bounces@lists.xenproject.org Thu Apr 16 15:37:19 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 16 Apr 2026 15:37:19 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1283704.1565847 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wDOmG-0004iJ-JQ; Thu, 16 Apr 2026 15:37:12 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1283704.1565847; Thu, 16 Apr 2026 15:37: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 1wDOmG-0004iC-Fc; Thu, 16 Apr 2026 15:37:12 +0000
Received: by outflank-mailman (input) for mailman id 1283704;
 Thu, 16 Apr 2026 15:37:11 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92) id 1wDOmF-0004i6-1q
 for xen-devel@lists.xenproject.org; Thu, 16 Apr 2026 15:37:11 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wDOmC-00Ehrf-T1
 for xen-devel@lists.xenproject.org; Thu, 16 Apr 2026 17:37:10 +0200
Received: from [10.42.69.10] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <oleksii.kurochko@gmail.com>)
 id 69e101ff-5cb7-0a2a0a5109dd-0a2a450aa70a-36
 for <xen-devel@lists.xenproject.org>; Thu, 16 Apr 2026 17:37:10 +0200
Received: from [209.85.128.52] (helo=mail-wm1-f52.google.com)
 by tlsNG-4011c0.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.1)
 (envelope-from <oleksii.kurochko@gmail.com>)
 id 69e10226-56b3-0a2a450a0019-d1558034cd45-3
 for <xen-devel@lists.xenproject.org>; Thu, 16 Apr 2026 17:37:10 +0200
Received: by mail-wm1-f52.google.com with SMTP id
 5b1f17b1804b1-48896199cbaso84592285e9.1
 for <xen-devel@lists.xenproject.org>; Thu, 16 Apr 2026 08:37:10 -0700 (PDT)
Received: from [192.168.1.6] (user-109-243-69-121.play-internet.pl.
 [109.243.69.121]) by smtp.gmail.com with ESMTPSA id
 ffacd0b85a97d-43ead3ebaaasm14957474f8f.32.2026.04.16.08.37.08
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Thu, 16 Apr 2026 08:37:09 -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=20251104 header.d=gmail.com header.i="@gmail.com" header.h="Content-Transfer-Encoding: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=20251104; t=1776353830; x=1776958630; darn=lists.xenproject.org;
        h=content-transfer-encoding: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;
        bh=MTgwX3DDhFAwJqj7/tnYaVWnU0P+NsU+BCjKucw75LE=;
        b=G1vNkH/Pc1XcNMEjt3ZmMGCRzsJIxtUn9+7Qk2In7uI6DJuXG3XwueYZ6qRPC2nOEN
         JEUTZB/LqGBg4BJC7dFtkwlW/7K2p4yCXrDkOYjb6rsXx/6e4rIX/mtSe7RgMU9pFk0U
         KwuebaUfq4vDEXtnXTNUJyExyNDlKyyCJA4X0E76zbnyPtEv/fceyT64fXkBu/xKnNTF
         T3fK4KrEbfRJwN2C9rg3iZpCkOs+4/8Zzr9eSnPwEguEQPFHuA+W7EA+DQ9Xr6DtaH70
         7B09OnoUevacy8Nu8byIBz8u4H4SZu5YqcSWvWkX9fBh250pUqhVVGQFly6rqbhoMFwO
         Qtow==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20251104; t=1776353830; x=1776958630;
        h=content-transfer-encoding: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;
        bh=MTgwX3DDhFAwJqj7/tnYaVWnU0P+NsU+BCjKucw75LE=;
        b=f371nTaALDAQU89nAysDfr3pNGSLKuQAAb5zMqcRU+looYaS08YSPaMGPR/H0GmtDY
         /lTgdENRRlojcnNEkRjk2XZDfmxLNuo+pkOSvvwg9GDm/luivKuI9dAMxRiMJKrorDcl
         yRiU9+rBY5cdX2oqrN8DWPSvtESlbrbRyfveX790TRvVZiphGFFZm8iLqoRMIFoEkdVP
         1NLBY89DGqECbxiFy27kstlul1K/Ornx8Ulo5aTc/aUtWt9LxaKD311/TW3nJJHErdtX
         zv0DzP/1maeCB+ikJwnLFlTuG2DFgpQsHkcjUgthdOlcy3hcq3DHYXIPLQGO3hLiurL6
         Co9Q==
X-Forwarded-Encrypted: i=1; AFNElJ9m6oO3xYiXyn+/Uib2i9xU2XN7dnCxICb0b0IMPhSdz7WCWSK+2irZfvbB3k9ve5OtyMiJ60vjMiE=@lists.xenproject.org
X-Gm-Message-State: AOJu0YyPl0WPZ0cAucRn8OpqBAgo4huUxjauLBXCT8d6keElT7jb5iqH
	uplnhVZNIHPQSmNy/qsA4icjDzOffN7NsKndvKv+xS6qt/AgmeYf/kKK
X-Gm-Gg: AeBDiev0egzVrvWiS5/9V9rEiF7FTD1rX9EXaEPK/zOoUnsvMg/ikD8saKaLnH6XHgk
	zI9YL82SNrnitk4TkyCPv4RZSzBfXYSPpLWKG0STCkpDIO6ubV73MSnZHWQ0c5m7zJ1WmjxilRC
	YO0iAfRRRALHmC31tR6r2RPXuqfPq2j0s0WXuz2YPXPbrfVV6UGINehzXJlOWYXFCUzQ+1QjDR5
	QtcpSnsRDj13XuKo7wX0USeLImP7W7hGwBpD37IxHPpvumUFDpGl6AvYUWrYlLgdMJaepqZrVL4
	YLb7H4Lx/0GbVLsaS1ilCLhwjuuCv4jdY/IHijed0XvWw+iSkTM5e8sqV1laYHoUJ8NkQtwqWqn
	KswBtOy1YLlNVN50HSSLJKbWmoPLZr6ZfnFJiQA+2mf4jV962pqcNoDFctwedWohJ1jma5EQ83T
	9b7nEjgNOXrvhcTqUAoa+Z8pQ78faXS1ia5SPjWFBaRpWkc6+U6LpYeXo/PxFlDhsGpTPdwR5Nl
	/sz4WghQhkXbQ==
X-Received: by 2002:a05:600c:8585:b0:488:9bf8:7f17 with SMTP id 5b1f17b1804b1-488d684bcb0mr275613335e9.14.1776353829604;
        Thu, 16 Apr 2026 08:37:09 -0700 (PDT)
Message-ID: <3c8cba0b-8d9c-4656-b70e-f5c65017aecc@gmail.com>
Date: Thu, 16 Apr 2026 17:37:08 +0200
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH] xen/riscv: allow Xen to use SSTC while hiding it from
 guests
To: Jan Beulich <jbeulich@suse.com>, Andrew Cooper <andrew.cooper3@citrix.com>
Cc: Romain Caritey <Romain.Caritey@microchip.com>,
 Alistair Francis <alistair.francis@wdc.com>,
 Connor Davis <connojdavis@gmail.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.pau@citrix.com>,
 Stefano Stabellini <sstabellini@kernel.org>, xen-devel@lists.xenproject.org
References: <eba232ac5a338332ddedc2cb084e0c04ee8744c2.1775835741.git.oleksii.kurochko@gmail.com>
 <9eb6c6d9-8e1c-40f6-a44b-579df213bda0@citrix.com>
 <feee06f0-584a-4b2c-b761-c3b77627c26d@suse.com>
Content-Language: en-US
From: Oleksii Kurochko <oleksii.kurochko@gmail.com>
In-Reply-To: <feee06f0-584a-4b2c-b761-c3b77627c26d@suse.com>
Content-Type: text/plain; charset=UTF-8; format=flowed
Content-Transfer-Encoding: 7bit
X-purgate-ID: tlsNG-4011c0/1776353830-47B7F8B7-7A702960/10/73395122804
X-purgate-type: spam
X-purgate-size: 1943



On 4/16/26 9:50 AM, Jan Beulich wrote:
> On 10.04.2026 19:41, Andrew Cooper wrote:
>> On 10/04/2026 4:45 pm, Oleksii Kurochko wrote:
>>> diff --git a/xen/arch/riscv/time.c b/xen/arch/riscv/time.c
>>> index 7efa76fdbcb1..80f0e9ddae6a 100644
>>> --- a/xen/arch/riscv/time.c
>>> +++ b/xen/arch/riscv/time.c
>>> @@ -91,4 +90,23 @@ void __init preinit_xen_time(void)
>>>           panic("%s: ACPI isn't supported\n", __func__);
>>>   
>>>       boot_clock_cycles = get_cycles();
>>> +
>>> +    /* set_xen_timer must have been set by sbi_init() already */
>>> +    ASSERT(set_xen_timer);
>>> +
>>> +    if ( riscv_isa_extension_available(NULL, RISCV_ISA_EXT_sstc) )
>>> +    {
>>> +        set_xen_timer = sstc_set_xen_timer;
>>> +
>>> +        /*
>>> +         * A VS-timer interrupt becomes pending whenever the value of
>>> +         * (time + htimedelta) is greater than or equal to vstimecmp CSR.
>>> +         * Thereby to avoid spurious VS-timer irqs set vstimecmp CSR to
>>> +         * ULONG_MAX.
>>> +         */
>>> +        csr_write(CSR_VSTIMECMP, ULONG_MAX);
>>> +#ifdef CONFIG_RISCV_32
>>> +        csr_write(CSR_VSTIMECMPH, ULONG_MAX);
>>> +#endif
>>
>> You've got this pattern twice in this patch alone, and these aren't the
>> only CSRs which are formed of pairs to get a 64bit value in 32bit mode.
>>
>> Sadly, the numbering isn't consistent for the high constant, but we can
>> let the compiler do most of the hard work for us.
>>
>> #ifdef CONFIG_RISCV_32
>> # define __csr_write32h(csr, val) csr_write(csr ## H, (val) >> 32)
>> #else
>> # define __csr_write32h(csr, val) (void)(csr, val)
> 
> Just to mention: Since the comma is an operator here (not a lexical element
> separating function arguments), more parenthesization may be needed for
> Misra's sake.

I will define it in the next way:

# define __csr_write32h(csr, val) (void)((csr), (val))

Thanks


~ Oleksii


From xen-devel-bounces@lists.xenproject.org Thu Apr 16 15:45:06 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 16 Apr 2026 15:45:06 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1283716.1565856 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wDOtq-0006YU-AN; Thu, 16 Apr 2026 15:45:02 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1283716.1565856; Thu, 16 Apr 2026 15:45: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 1wDOtq-0006YN-7G; Thu, 16 Apr 2026 15:45:02 +0000
Received: by outflank-mailman (input) for mailman id 1283716;
 Thu, 16 Apr 2026 15:45:00 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <jbeulich@suse.com>) id 1wDOtn-0006YH-VN
 for xen-devel@lists.xenproject.org; Thu, 16 Apr 2026 15:45:00 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wDOtn-00AMxm-CN
 for xen-devel@lists.xenproject.org; Thu, 16 Apr 2026 17:44:59 +0200
Received: from [10.42.69.9] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <jbeulich@suse.com>)
 id 69e103f6-2eae-0a2a0a5409dd-0a2a45099750-8
 for <xen-devel@lists.xenproject.org>; Thu, 16 Apr 2026 17:44:59 +0200
Received: from [209.85.128.51] (helo=mail-wm1-f51.google.com)
 by tlsNG-bad1c0.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.1)
 (envelope-from <jbeulich@suse.com>)
 id 69e103fb-2497-0a2a45090019-d1558033a5d5-3
 for <xen-devel@lists.xenproject.org>; Thu, 16 Apr 2026 17:44:59 +0200
Received: by mail-wm1-f51.google.com with SMTP id
 5b1f17b1804b1-488b8efed61so9204695e9.1
 for <xen-devel@lists.xenproject.org>; Thu, 16 Apr 2026 08:44:59 -0700 (PDT)
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-488f0eb43f6sm49494375e9.25.2026.04.16.08.44.57
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Thu, 16 Apr 2026 08:44:58 -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=google header.d=suse.com header.i="@suse.com" header.h="Content-Transfer-Encoding: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=1776354298; x=1776959098; darn=lists.xenproject.org;
        h=content-transfer-encoding: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;
        bh=KAZrI0N7HZcn1PAYPBVu3LanJPoAKwvXSZ99aFDOlM0=;
        b=J/bVOgBgGLilM/mpdsFKo5Lkued8GXvKJM+bg69Tz6+/C69ptAXvQYnf6OPyGcKUJb
         Qp2Jf3KOIXqbBikivpnN7ELwh/BnFmNn6vTKc64LvBN4wBWjtA/ES9Ix2Hs65L1XFUB7
         nNFKD599B2BzABEwUXIdvI2W86yW/mi6IqZQKxk/ur77b0sdSs38rimJ6poUBRO+wZB3
         19xirDbInCTIyq4w/SXofuaH8o6ucB4K0BaWIKPpPUZYkehVXYWLcc0Eu830hjXB3Ydc
         17YVk+OrJmK5aEXKIL0czexJnXcovBkjy3pN2mVOpF8gzKpxSW/HOTbTEFMIIUMSZ0XC
         Sl8Q==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20251104; t=1776354298; x=1776959098;
        h=content-transfer-encoding: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;
        bh=KAZrI0N7HZcn1PAYPBVu3LanJPoAKwvXSZ99aFDOlM0=;
        b=hSRXN9vU2zefRrptRmqIK5FsC/mrfj1b+asC/sHqR/dNZ1MfWID/717gY3c0aXUwye
         t4MZxlSvTviEMCHsI3bHpZgJLOCPkAvupYIRulI+VkKpWLOXWGpEK7Y8a+RjU5AipAgn
         +ujXwN0fUVxYtMVEcozftAFrrQ+DmAQiql31IZ+Kt9Ii9DTHn7eUCBHkOZ6iBGirlEOe
         fl/cUBrK6YhhtZz84+QXUseJQnUvCGmInyXkOqnQO5y9gAKSSp0LS/Yv9wV2Z/TMn9z0
         9pSw2NTV47kUsQvsJidYYX/Mhcr7ZvxcRWVYhMnBvcn75XQDsU9Bw+SVCC0C7G7qX7fV
         O/pw==
X-Forwarded-Encrypted: i=1; AFNElJ9enXRfZaj19Rdqjh/MXmb0u/9xEGDgnZUAYfUTGZYu//ep7ASc2UyFY2soKxGSozJjkff4A9X7wd8=@lists.xenproject.org
X-Gm-Message-State: AOJu0YwqHweqN/omq6X68Dy3NpcHYhEdYThwkceFy4b+SKwGGPNnftrR
	ATokk7ro/8PLwAxL7WglWfcaPzjnGXcWs91mhhMG5UJM5G5uSiAqVhPXlhmLJfuMTQ==
X-Gm-Gg: AeBDievVhYsR8No8rFHNH0Pmku7X9l2Th9jCWxzuuC/xSlLX26zjfbAXqNBaNGt3YwQ
	tKnkbRSj5rECAFA6vVH41K/CvCtn71O1eg1ny9if6xVQumuxZ7gMos+z7RqE73LeXfprlwMucaN
	0QcNAVQm3JTJNXAs1aGu7RmZBUbwTK1PZcDqocO2E7XDFc9P9nIeSt4rN8AtQ6oC7J/A4NKw0mi
	q7Y1/nPCmH/rwlRqMuhKWvOpPT9dldWFCp39+hlXbat5pUeb+aq0SmutY0PQiqoTW0vLJRYH+kN
	LebBS7DBxkcf+jJFFhY3T6hSYor8AEQqYfHlzuBC006u0nyxHZoXNhGskQwYLmr9gwrxCCiCmLs
	SCqoRxvwEZGr53ChYAJ0uk5AcNgW15Fx9oDcAddQIwSu1n5Lz06++JGB+8dj1mxFB3tWX8FMZ7b
	vcwTSYt7Da/io32UyEeD4jqNq8hws26J9oxOXxT7ga0gLpt0W8KXromAXDya88m899CUXyNCWv1
	dNTI+g2Rzjj4GJ6JETRFZCZxA==
X-Received: by 2002:a05:600c:3e0a:b0:488:c6e9:1e0c with SMTP id 5b1f17b1804b1-488f47c90ddmr55471825e9.5.1776354298598;
        Thu, 16 Apr 2026 08:44:58 -0700 (PDT)
Message-ID: <9579ca3e-e98b-4d76-81bf-0f2e0df5a990@suse.com>
Date: Thu, 16 Apr 2026 17:45:01 +0200
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH] xen/riscv: allow Xen to use SSTC while hiding it from
 guests
To: Oleksii Kurochko <oleksii.kurochko@gmail.com>,
 Andrew Cooper <andrew.cooper3@citrix.com>
Cc: Romain Caritey <Romain.Caritey@microchip.com>,
 Alistair Francis <alistair.francis@wdc.com>,
 Connor Davis <connojdavis@gmail.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.pau@citrix.com>,
 Stefano Stabellini <sstabellini@kernel.org>, xen-devel@lists.xenproject.org
References: <eba232ac5a338332ddedc2cb084e0c04ee8744c2.1775835741.git.oleksii.kurochko@gmail.com>
 <9eb6c6d9-8e1c-40f6-a44b-579df213bda0@citrix.com>
 <feee06f0-584a-4b2c-b761-c3b77627c26d@suse.com>
 <3c8cba0b-8d9c-4656-b70e-f5c65017aecc@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: <3c8cba0b-8d9c-4656-b70e-f5c65017aecc@gmail.com>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 7bit
X-purgate-ID: tlsNG-bad1c0/1776354299-92F76A53-60F5083A/0/0
X-purgate-type: clean
X-purgate-size: 2133

On 16.04.2026 17:37, Oleksii Kurochko wrote:
> 
> 
> On 4/16/26 9:50 AM, Jan Beulich wrote:
>> On 10.04.2026 19:41, Andrew Cooper wrote:
>>> On 10/04/2026 4:45 pm, Oleksii Kurochko wrote:
>>>> diff --git a/xen/arch/riscv/time.c b/xen/arch/riscv/time.c
>>>> index 7efa76fdbcb1..80f0e9ddae6a 100644
>>>> --- a/xen/arch/riscv/time.c
>>>> +++ b/xen/arch/riscv/time.c
>>>> @@ -91,4 +90,23 @@ void __init preinit_xen_time(void)
>>>>           panic("%s: ACPI isn't supported\n", __func__);
>>>>   
>>>>       boot_clock_cycles = get_cycles();
>>>> +
>>>> +    /* set_xen_timer must have been set by sbi_init() already */
>>>> +    ASSERT(set_xen_timer);
>>>> +
>>>> +    if ( riscv_isa_extension_available(NULL, RISCV_ISA_EXT_sstc) )
>>>> +    {
>>>> +        set_xen_timer = sstc_set_xen_timer;
>>>> +
>>>> +        /*
>>>> +         * A VS-timer interrupt becomes pending whenever the value of
>>>> +         * (time + htimedelta) is greater than or equal to vstimecmp CSR.
>>>> +         * Thereby to avoid spurious VS-timer irqs set vstimecmp CSR to
>>>> +         * ULONG_MAX.
>>>> +         */
>>>> +        csr_write(CSR_VSTIMECMP, ULONG_MAX);
>>>> +#ifdef CONFIG_RISCV_32
>>>> +        csr_write(CSR_VSTIMECMPH, ULONG_MAX);
>>>> +#endif
>>>
>>> You've got this pattern twice in this patch alone, and these aren't the
>>> only CSRs which are formed of pairs to get a 64bit value in 32bit mode.
>>>
>>> Sadly, the numbering isn't consistent for the high constant, but we can
>>> let the compiler do most of the hard work for us.
>>>
>>> #ifdef CONFIG_RISCV_32
>>> # define __csr_write32h(csr, val) csr_write(csr ## H, (val) >> 32)
>>> #else
>>> # define __csr_write32h(csr, val) (void)(csr, val)
>>
>> Just to mention: Since the comma is an operator here (not a lexical element
>> separating function arguments), more parenthesization may be needed for
>> Misra's sake.
> 
> I will define it in the next way:
> 
> # define __csr_write32h(csr, val) (void)((csr), (val))

Actually, yet more parentheses are needed:

# define __csr_write32h(csr, val) ((void)((csr), (val)))

Jan


From xen-devel-bounces@lists.xenproject.org Thu Apr 16 15:49:18 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 16 Apr 2026 15:49:18 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1283724.1565866 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wDOxw-0007Qd-Qo; Thu, 16 Apr 2026 15:49:16 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1283724.1565866; Thu, 16 Apr 2026 15:49: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 1wDOxw-0007QW-Mu; Thu, 16 Apr 2026 15:49:16 +0000
Received: by outflank-mailman (input) for mailman id 1283724;
 Thu, 16 Apr 2026 15:49:15 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92) id 1wDOxv-0007QO-Ht
 for xen-devel@lists.xenproject.org; Thu, 16 Apr 2026 15:49:15 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wDOxu-006M3d-RK
 for xen-devel@lists.xenproject.org; Thu, 16 Apr 2026 17:49:14 +0200
Received: from [10.42.69.4] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <oleksii.kurochko@gmail.com>)
 id 69e104ed-e002-0a2a0a5209dd-0a2a4504b378-16
 for <xen-devel@lists.xenproject.org>; Thu, 16 Apr 2026 17:49:14 +0200
Received: from [209.85.128.46] (helo=mail-wm1-f46.google.com)
 by tlsNG-ebf023.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.1)
 (envelope-from <oleksii.kurochko@gmail.com>)
 id 69e104fa-1dec-0a2a45040019-d155802eb03a-3
 for <xen-devel@lists.xenproject.org>; Thu, 16 Apr 2026 17:49:14 +0200
Received: by mail-wm1-f46.google.com with SMTP id
 5b1f17b1804b1-483487335c2so89868805e9.2
 for <xen-devel@lists.xenproject.org>; Thu, 16 Apr 2026 08:49:14 -0700 (PDT)
Received: from [192.168.1.6] (user-109-243-69-121.play-internet.pl.
 [109.243.69.121]) by smtp.gmail.com with ESMTPSA id
 5b1f17b1804b1-488fa6879c4sm5505e9.26.2026.04.16.08.49.13
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Thu, 16 Apr 2026 08:49:13 -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=20251104 header.d=gmail.com header.i="@gmail.com" header.h="Content-Transfer-Encoding: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=20251104; t=1776354554; x=1776959354; darn=lists.xenproject.org;
        h=content-transfer-encoding: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;
        bh=j+YCiCULCXb5S55fi5M74v6vjmP8FtFN2IO158PMUrQ=;
        b=EOrCbiVTjv3JkLFhI8V/GDBztQ3colpS1uqfqJEkumUpRKuM44XfN5Fu68rpXbOtBC
         axnt702Exm+GxA93Yg7UWc5oLsmhJdkkCCk0Qhb7acnvzcNmJdHpoggjlgUZEleuivsE
         2UUf3jlYZGvMMv35fjTpgSJqCgE9PkhNRFxazGf8xTUNLGuQ0zrFkG3XuDr10dYtptaH
         HLrTHgr1jjCX4psJzihvw7e7BXFRWozuzW1odG3kVUCYsfT11UT3HaJbEiM6CiFXv2yy
         ikJcYYlnrT+aoCefygACrCRm12Eg9cIQuR3jr6sddcs2t7z4gvh7LZKVBUe/KlcDVH3M
         XAgw==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20251104; t=1776354554; x=1776959354;
        h=content-transfer-encoding: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;
        bh=j+YCiCULCXb5S55fi5M74v6vjmP8FtFN2IO158PMUrQ=;
        b=NNr2l3rxMZWLIEAMl07mHuovd5QFc2TaiP3eNbkaaGQbmr1TDy7fWCZwR5LRq6/D1P
         cbF3Mp95bDrXhMQgns1p6p1rxLbdKW0a/rEhEWNFjXDj9rN2pxkdxd/tD1xtMm27MiL3
         UN/UmbehB/D0vnVusft6svn3fCYqWxz/7hhiOvnQADsdN5IKWLPHcMtQO/TivqBjZood
         dl4PoM9qRgw6C9FqW+vOx93rpGyY7TGnHwIRsFObQoQaSVqjtHenQaXqJKw95gPDeW3M
         q348kk3qZBQuWYC4U6rCCuGQs/rzBhZRTXBd58x+bTWKQcAa5WXC+wAsiLfyvlv7NR6D
         Wr4Q==
X-Forwarded-Encrypted: i=1; AFNElJ9xGmYiwsTyT+nqf2PznRLdWpZcLxGJ8dOCXOxv90Q5pDN0J4O64awWwJZMLLoe17Ri9ez0Qor61zg=@lists.xenproject.org
X-Gm-Message-State: AOJu0YxyszP7R8YZsy6mSrQ/dklyHWKBfubH7POJgj9zd8wb7+Fzp7NL
	hpOGqmzY6v26qEygGayYcCUkltPLH6ckp2e9Gsym6+8wNvJ2YUyP4PJM
X-Gm-Gg: AeBDieudkgI0qd2ocCNMgFKwaBC96KR7+G0nMLrF01BlMal2dirnRRHqFcGaDHPNLPL
	H1U9vpARSehxswkZ+Ap7xHR4e8zT8MbYuRcD/U6BoB7Z/3KcO3MLYPE6ORfA2y3CDE5YluaeYSU
	qJ/HC0leaj5a1FAq+BWpOD0i38gFA9C5GCIPLq8F24cIXGmUsbykQKCDzodWcxT79r8earv7T0F
	uYZRuAayo5/RMFQNv5FleIdR7V+XWkhlCwJJOXTW/oXGljiMGCZK7BWmxrMr7OuHoAxKAbnbzc6
	xeEORePnQm1s/dgh5T07vbsybc81VvPlc4VqHOfjoDkCEhYCkMxKksxC+KYJudjPcVoQxqToVvl
	SU6TLy5ZRas2m2xZLEasMnTZzOfrG2M+TrEw1pa5RsCl5NQdsEXLeN3DNObrViSIkN3ubg+RGUO
	frYRlghs1tZ/Jd57rtUBIE7RXpuBrs3V9gwEUOp95/sJMvyFc7AtS9ufL/IR88zREMYDgAH58GA
	TAwtps0zF81DhNY4yIJBELE
X-Received: by 2002:a05:600c:c0da:b0:488:936a:6220 with SMTP id 5b1f17b1804b1-488d685b577mr310909935e9.21.1776354554067;
        Thu, 16 Apr 2026 08:49:14 -0700 (PDT)
Message-ID: <5de7ede4-b14f-4a36-b06b-12bf768b52a8@gmail.com>
Date: Thu, 16 Apr 2026 17:49:12 +0200
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH] xen/riscv: allow Xen to use SSTC while hiding it from
 guests
To: Jan Beulich <jbeulich@suse.com>, Andrew Cooper <andrew.cooper3@citrix.com>
Cc: Romain Caritey <Romain.Caritey@microchip.com>,
 Alistair Francis <alistair.francis@wdc.com>,
 Connor Davis <connojdavis@gmail.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.pau@citrix.com>,
 Stefano Stabellini <sstabellini@kernel.org>, xen-devel@lists.xenproject.org
References: <eba232ac5a338332ddedc2cb084e0c04ee8744c2.1775835741.git.oleksii.kurochko@gmail.com>
 <9eb6c6d9-8e1c-40f6-a44b-579df213bda0@citrix.com>
 <feee06f0-584a-4b2c-b761-c3b77627c26d@suse.com>
 <3c8cba0b-8d9c-4656-b70e-f5c65017aecc@gmail.com>
 <9579ca3e-e98b-4d76-81bf-0f2e0df5a990@suse.com>
Content-Language: en-US
From: Oleksii Kurochko <oleksii.kurochko@gmail.com>
In-Reply-To: <9579ca3e-e98b-4d76-81bf-0f2e0df5a990@suse.com>
Content-Type: text/plain; charset=UTF-8; format=flowed
Content-Transfer-Encoding: 7bit
X-purgate-ID: tlsNG-ebf023/1776354554-2A9623FF-00904EBD/10/73395122804
X-purgate-type: spam
X-purgate-size: 2623



On 4/16/26 5:45 PM, Jan Beulich wrote:
> On 16.04.2026 17:37, Oleksii Kurochko wrote:
>>
>>
>> On 4/16/26 9:50 AM, Jan Beulich wrote:
>>> On 10.04.2026 19:41, Andrew Cooper wrote:
>>>> On 10/04/2026 4:45 pm, Oleksii Kurochko wrote:
>>>>> diff --git a/xen/arch/riscv/time.c b/xen/arch/riscv/time.c
>>>>> index 7efa76fdbcb1..80f0e9ddae6a 100644
>>>>> --- a/xen/arch/riscv/time.c
>>>>> +++ b/xen/arch/riscv/time.c
>>>>> @@ -91,4 +90,23 @@ void __init preinit_xen_time(void)
>>>>>            panic("%s: ACPI isn't supported\n", __func__);
>>>>>    
>>>>>        boot_clock_cycles = get_cycles();
>>>>> +
>>>>> +    /* set_xen_timer must have been set by sbi_init() already */
>>>>> +    ASSERT(set_xen_timer);
>>>>> +
>>>>> +    if ( riscv_isa_extension_available(NULL, RISCV_ISA_EXT_sstc) )
>>>>> +    {
>>>>> +        set_xen_timer = sstc_set_xen_timer;
>>>>> +
>>>>> +        /*
>>>>> +         * A VS-timer interrupt becomes pending whenever the value of
>>>>> +         * (time + htimedelta) is greater than or equal to vstimecmp CSR.
>>>>> +         * Thereby to avoid spurious VS-timer irqs set vstimecmp CSR to
>>>>> +         * ULONG_MAX.
>>>>> +         */
>>>>> +        csr_write(CSR_VSTIMECMP, ULONG_MAX);
>>>>> +#ifdef CONFIG_RISCV_32
>>>>> +        csr_write(CSR_VSTIMECMPH, ULONG_MAX);
>>>>> +#endif
>>>>
>>>> You've got this pattern twice in this patch alone, and these aren't the
>>>> only CSRs which are formed of pairs to get a 64bit value in 32bit mode.
>>>>
>>>> Sadly, the numbering isn't consistent for the high constant, but we can
>>>> let the compiler do most of the hard work for us.
>>>>
>>>> #ifdef CONFIG_RISCV_32
>>>> # define __csr_write32h(csr, val) csr_write(csr ## H, (val) >> 32)
>>>> #else
>>>> # define __csr_write32h(csr, val) (void)(csr, val)
>>>
>>> Just to mention: Since the comma is an operator here (not a lexical element
>>> separating function arguments), more parenthesization may be needed for
>>> Misra's sake.
>>
>> I will define it in the next way:
>>
>> # define __csr_write32h(csr, val) (void)((csr), (val))
> 
> Actually, yet more parentheses are needed:
> 
> # define __csr_write32h(csr, val) ((void)((csr), (val)))

It seems like (void) should be for (csr) and (val), so it should be:

# define __csr_write32h(csr, val) ((void)(csr), (void)(val))

Otherwise the following compilation error occurs.

./arch/riscv/include/asm/csr.h:38:48: error: left-hand operand of comma 
expression has no effect [-Werror=unused-value]
    38 | # define __csr_write32h(csr, val) ((void)((csr), (val)))

~ Oleksii


From xen-devel-bounces@lists.xenproject.org Thu Apr 16 15:50:25 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 16 Apr 2026 15:50:25 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1283737.1565873 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wDOyz-0000VA-4v; Thu, 16 Apr 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 1283737.1565873; Thu, 16 Apr 2026 15:50: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 1wDOyz-0000V2-2P; Thu, 16 Apr 2026 15:50:21 +0000
Received: by outflank-mailman (input) for mailman id 1283737;
 Thu, 16 Apr 2026 15:50:20 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <bounce-md_30504962.69e10539.v1-85e8c2739d4043d4abe69bf7fc95e86c@bounce.vates.tech>)
 id 1wDOyy-0000Uu-3g
 for xen-devel@lists.xenproject.org; Thu, 16 Apr 2026 15:50:20 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wDOyx-006MIj-GT
 for xen-devel@lists.xenproject.org; Thu, 16 Apr 2026 17:50:19 +0200
Received: from [10.42.69.11] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1) (envelope-from
 <bounce-md_30504962.69e10539.v1-85e8c2739d4043d4abe69bf7fc95e86c@bounce.vates.tech>)
 id 69e1052c-e002-0a2a0a5209dd-0a2a450baad6-42
 for <xen-devel@lists.xenproject.org>; Thu, 16 Apr 2026 17:50:19 +0200
Received: from [198.2.137.11] (helo=mail137-11.atl71.mandrillapp.com)
 by tlsNG-42698a.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.1)
 (envelope-from
 <bounce-md_30504962.69e10539.v1-85e8c2739d4043d4abe69bf7fc95e86c@bounce.vates.tech>)
 id 69e10539-212f-0a2a450b0019-c602890b188d-3
 for <xen-devel@lists.xenproject.org>; Thu, 16 Apr 2026 17:50:19 +0200
Received: from mta004-md-usw2.delv.a.intuit.com (localhost [127.0.0.1])
 by mail137-11.atl71.mandrillapp.com (Mailchimp) with ESMTP id
 4fxMsj33pYzDRSZM5
 for <xen-devel@lists.xenproject.org>; Thu, 16 Apr 2026 15:50:17 +0000 (UTC)
Received: from [37.26.189.201] by mandrillapp.com id
 85e8c2739d4043d4abe69bf7fc95e86c; Thu, 16 Apr 2026 15:50: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=mte1 header.d=mandrillapp.com header.i="@mandrillapp.com" header.h="From:Subject:To:Cc:Message-Id:References:In-Reply-To:Feedback-ID:Date:MIME-Version:Content-Type:Content-Transfer-Encoding"; dkim=pass header.s=mte1 header.d=vates.tech header.i="anthony.perard@vates.tech" header.h="From:Subject:To:Cc:Message-Id:References:In-Reply-To:Feedback-ID:Date:MIME-Version:Content-Type:Content-Transfer-Encoding"
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=mandrillapp.com;
	s=mte1; t=1776354617; x=1776624617;
	bh=yNzeAHDQtjP0qF/KOsIk4v0+tmx3LTDv5o5PUVahFG0=;
	h=From:Subject:To:Cc:Message-Id:References:In-Reply-To:Feedback-ID:
	 Date:MIME-Version:Content-Type:Content-Transfer-Encoding:CC:Date:
	 Subject:From;
	b=FUTGnUmBPYcKl5Px7q4IhntcTTtjufZebQ6/9HQtLVUBr6ZDDA5IzmKaamV5gt7Ja
	 ye55VABhdeeMvMfpPTVo72Lpfkn6rWlNYyK2OoqCn6O2K4g0MBvYdnd1DbFlkA/pfL
	 MFGQfdOD82vTmKG3vvab1pYRYNvTZ6ohScmVk+nmfYqDAG/fsum+4lWMSNgxi1tG5Q
	 Je2HuEYelnByLJJjoNuGfmLb0q857+d/gYafn3A9pbhnbzJh5FvlMfnpVIamoK2BSz
	 cvmzBACY7nmg+A4m4TU2kc6tcb75CiBus7P3gIULSI8SL1/G92WsQu6Xy2RNiUyAlG
	 BGE0nr0v18r3g==
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=vates.tech; s=mte1;
	t=1776354617; x=1776615117; i=anthony.perard@vates.tech;
	bh=yNzeAHDQtjP0qF/KOsIk4v0+tmx3LTDv5o5PUVahFG0=;
	h=From:Subject:To:Cc:Message-Id:References:In-Reply-To:Feedback-ID:
	 Date:MIME-Version:Content-Type:Content-Transfer-Encoding:CC:Date:
	 Subject:From;
	b=rCys1Hynnj3LhLzcld0X09/s3muRPSwaXn5abbiUrm70ZwywiSeY0+RYH1GOeLEps
	 pDInwFMdv9fqmLdCgA5sJyFjrekQGsa7gTmTLX/PrJIqgoXH6O6l5E9soGr1qNPasP
	 0t6Ftq0X2zkMZDtj4vMpEPxaxhVNkF7npS0iMbk99FbaihCzYrwoyLciCegW0XKJj2
	 rV/R7vrxCAE+CWzhAhuFWyGfU8sABFgeXfwe6u+A9zecBN21AF2qV6gQI+LI+NxX5D
	 ffnS1vm+TbYYo6j+tm+7E5WrAyveH9Gd3jLwBN9KnVyRp5fhjhSRTyCNwhYBTurfdK
	 4EUcVI1hY9vlw==
From: "Anthony PERARD" <anthony.perard@vates.tech>
Subject: =?utf-8?Q?Re:=20[PATCH=20v2=202/6]=20CI:=20make=20test-artifacts=20repo/branch/job=20customizable?=
X-Bm-Disclaimer: Yes
X-Bm-Milter-Handled: 4ffbd6c1-ee69-4e1b-aabd-f977039bd3e2
X-Bm-Transport-Timestamp: 1776354616209
To: "=?utf-8?Q?Marek=20Marczykowski-G=C3=B3recki?=" <marmarek@invisiblethingslab.com>
Cc: xen-devel@lists.xenproject.org, "Stefano Stabellini" <sstabellini@kernel.org>, "Andrew Cooper" <andrew.cooper3@citrix.com>, "Doug Goldstein" <cardoe@cardoe.com>
Message-Id: <aeEFNz_yebXqgyoi@l14>
References: <cover.ca38f9571ab23e254a985ecfd4715235675aa06e.1774999414.git-series.marmarek@invisiblethingslab.com> <2d5d25d864058dcd9d139fd2115b88f82ba12424.1774999414.git-series.marmarek@invisiblethingslab.com>
In-Reply-To: <2d5d25d864058dcd9d139fd2115b88f82ba12424.1774999414.git-series.marmarek@invisiblethingslab.com>
X-Native-Encoded: 1
X-Report-Abuse: =?UTF-8?Q?Please=20forward=20a=20copy=20of=20this=20message,=20including=20all=20headers,=20to=20abuse@mandrill.com.=20You=20can=20also=20report=20abuse=20here:=20https://mandrillapp.com/contact/abuse=3Fid=3D30504962.85e8c2739d4043d4abe69bf7fc95e86c?=
X-Mandrill-User: md_30504962
Feedback-ID: 30504962:30504962.20260416:md
Date: Thu, 16 Apr 2026 15:50:17 +0000
MIME-Version: 1.0
Content-Type: text/plain; charset=utf-8
Content-Transfer-Encoding: quoted-printable
X-purgate-ID: tlsNG-42698a/1776354619-7D56BF3B-926FE146/0/0
X-purgate-type: clean
X-purgate-size: 940

On Wed, Apr 01, 2026 at 01:24:51AM +0200, Marek Marczykowski-G=C3=B3recki w=
rote:
> Allow choosing which artifacts branch and job to use for Linux. This
> allows running the same tests for different Linux versions, without
> duplicating a lot of yaml sections.
> 
> Similarly, make the repo path itself configurable too. The main purpose
> is to ensure the test pipeline triggered from any repo will fetch linux
> artifact from the right repo. But with a minor change of using that
> variable for rootfs and microcode artifacts too, it allows testing
> test-artifacts repo changes without needing to modify gitlab-ci.yml in
> xen.git at all.
> 
> Signed-off-by: Marek Marczykowski-G=C3=B3recki <marmarek@invisiblethingsl=
ab.com>

Reviewed-by: Anthony PERARD <anthony.perard@vates.tech>

Thanks,


--
Anthony Perard | Vates XCP-ng Developer

XCP-ng & Xen Orchestra - Vates solutions

web: https://vates.tech




From xen-devel-bounces@lists.xenproject.org Thu Apr 16 16:08:00 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 16 Apr 2026 16:08:00 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1283752.1565882 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wDPFt-0003Sa-Ev; Thu, 16 Apr 2026 16:07:49 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1283752.1565882; Thu, 16 Apr 2026 16: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 1wDPFt-0003ST-CO; Thu, 16 Apr 2026 16:07:49 +0000
Received: by outflank-mailman (input) for mailman id 1283752;
 Thu, 16 Apr 2026 16:07:47 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <jbeulich@suse.com>) id 1wDPFr-0003SN-J9
 for xen-devel@lists.xenproject.org; Thu, 16 Apr 2026 16:07:47 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wDPFq-006PCN-WD
 for xen-devel@lists.xenproject.org; Thu, 16 Apr 2026 18:07:47 +0200
Received: from [10.42.69.8] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <jbeulich@suse.com>)
 id 69e10952-bab6-0a2a0a5309dd-0a2a450880d4-0
 for <xen-devel@lists.xenproject.org>; Thu, 16 Apr 2026 18:07:46 +0200
Received: from [209.85.221.47] (helo=mail-wr1-f47.google.com)
 by tlsNG-c1860d.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.1)
 (envelope-from <jbeulich@suse.com>)
 id 69e10951-63b5-0a2a45080019-d155dd2fb96f-3
 for <xen-devel@lists.xenproject.org>; Thu, 16 Apr 2026 18:07:46 +0200
Received: by mail-wr1-f47.google.com with SMTP id
 ffacd0b85a97d-43d7605ec91so4275500f8f.3
 for <xen-devel@lists.xenproject.org>; Thu, 16 Apr 2026 09:07:46 -0700 (PDT)
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-43ead3e0091sm13053393f8f.25.2026.04.16.09.07.44
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Thu, 16 Apr 2026 09:07:44 -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=google header.d=suse.com header.i="@suse.com" header.h="Content-Transfer-Encoding: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=1776355665; x=1776960465; darn=lists.xenproject.org;
        h=content-transfer-encoding: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;
        bh=e4BQBx+DaWtbT41YsnRyMGUotDt4LSV4mJa7mxqcA4Y=;
        b=c8tbxVbPE6Xy7lylRUsgK22LeruiaLEdykWaV6kAYbarWdrc1oJIzZZk8SlUh5NCkk
         kMODh2PXKPcfHL/Mf/DezPMpzvC8uRbhfF8hF4MSgDYcZLDM7f7V6efnDv/TOyBQ83Il
         5yERjlgB/ii/XtoCU3DLm6iei+Br3VWUWpE9gJwIbilufIFEfhr1czCfypHWR+yLFxhw
         Jk7+FO71UoloSZP05uEkJHMdDGHhv/pizFvXtwcZEA8Gut5Xx1xXNANnBiL0fulgRewD
         TWUvJZrl89MBjAurnLl6LncHrWiTKV8DDfXI8PrXZTWO31nr8yQ7gcH0u2rmj7rmzcQo
         uXcw==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20251104; t=1776355665; x=1776960465;
        h=content-transfer-encoding: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;
        bh=e4BQBx+DaWtbT41YsnRyMGUotDt4LSV4mJa7mxqcA4Y=;
        b=InLSd4Tg1zW2HfoNvpWetbXiOyl/9Jm0e4Qp354dMJqLfodOjoRjV/h3pHWXTNu/pg
         JaQO3fdeodTtht/k3USJDysFJTiJSBp0SY7J9ve6e0Ynj0QlQocpn3kxtU6XcvDzBWyh
         IPAqpqPsqud1/vtzNdMai6B81eF/BAMxYer1ao3ITid+jDDSvOxk5Fp/9+zus+Fo3EKA
         UUbJTFgz9i+avaKr6Sr2JN+wGFCZpGa6ODA5sCe1LBgXfc6cZdzF0u1J8fz32SrZ4vdH
         tJ7OXcvUJgWJG00k+f2EKFAl0N1ZnUqtlb7b7//y9TBjUihZ8UPIji5SaeG86KPFWNqz
         HjUQ==
X-Forwarded-Encrypted: i=1; AFNElJ+ye9Udsulcm21P0Sc2tOmDx4fpIFfHcqm3nmtIxNpcMLAXS2qBEdcWke8eGkj9WjHHOtLRrm6VD18=@lists.xenproject.org
X-Gm-Message-State: AOJu0YyHTdH/2eUJjPUQ8s9Ss/FQNZX/uM9ruyyE9+g1Bt+oswBoTEN0
	C4vyCxMEumv3yy50zoK18GMPlCVm53dNpd+UHtHgh5+XUQUVgURkPsKy2ZX7AhX/vA==
X-Gm-Gg: AeBDiestou5gUu/GkTnufbQxYVG4I7RswmJgmhO1xtt1mZSCY0jfs+8C8aHAek/q2ue
	2fh/bMY9/RR+32ftKu7kQkSO37cia/bgyZWBHMvgP7IKiKfZGwPbMqSK1sCfeP+MCqKXghM3cFR
	7gdpllLfm+oNgLcYH469n4xPxjqW8F53KPqYh5sVO1MTHPKxjnIEq0pyDIVGgmSz7kl+cdBFZzx
	ei5JW/he0dtpELa1PSADgij6tKBMbyoqFj4nYvRZLaUTDvod39LE5DXqthK/CKnYmT8+s3RRxYk
	ml5Z8NPRqIOgjBrvb1ksVF7TiPUdPUJGTI1QER1RegKsOdy+nvQeKyAk9ghRAItNIvijtCYs7cE
	yBw4K2mb36rlVjDcscWq6Z83GrZGl/H6uKESJJR2ftXm/Tzc47k1zIuspPpDJEvlg7GeymRBQNR
	jgsc5xpHSyTz9T1mwlAp1ZVeUEAwmMah7emTgxWvZJwEGoPK0nULnDtKsA8v1aulz+65TaRKwdv
	bqUh5Y4vbFE7gk/Xt3P7fqMfA==
X-Received: by 2002:a05:6000:1866:b0:43b:498f:dceb with SMTP id ffacd0b85a97d-43fe0404166mr134340f8f.9.1776355665416;
        Thu, 16 Apr 2026 09:07:45 -0700 (PDT)
Message-ID: <4f18e2dd-911c-4794-af71-9c8b2b760d62@suse.com>
Date: Thu, 16 Apr 2026 18:07:47 +0200
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH] xen/riscv: allow Xen to use SSTC while hiding it from
 guests
To: Oleksii Kurochko <oleksii.kurochko@gmail.com>
Cc: Romain Caritey <Romain.Caritey@microchip.com>,
 Alistair Francis <alistair.francis@wdc.com>,
 Connor Davis <connojdavis@gmail.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.pau@citrix.com>,
 Stefano Stabellini <sstabellini@kernel.org>, xen-devel@lists.xenproject.org,
 Andrew Cooper <andrew.cooper3@citrix.com>
References: <eba232ac5a338332ddedc2cb084e0c04ee8744c2.1775835741.git.oleksii.kurochko@gmail.com>
 <9eb6c6d9-8e1c-40f6-a44b-579df213bda0@citrix.com>
 <feee06f0-584a-4b2c-b761-c3b77627c26d@suse.com>
 <3c8cba0b-8d9c-4656-b70e-f5c65017aecc@gmail.com>
 <9579ca3e-e98b-4d76-81bf-0f2e0df5a990@suse.com>
 <5de7ede4-b14f-4a36-b06b-12bf768b52a8@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: <5de7ede4-b14f-4a36-b06b-12bf768b52a8@gmail.com>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 7bit
X-purgate-ID: tlsNG-c1860d/1776355666-38766DB1-8608CF0D/0/0
X-purgate-type: clean
X-purgate-size: 2879

On 16.04.2026 17:49, Oleksii Kurochko wrote:
> 
> 
> On 4/16/26 5:45 PM, Jan Beulich wrote:
>> On 16.04.2026 17:37, Oleksii Kurochko wrote:
>>>
>>>
>>> On 4/16/26 9:50 AM, Jan Beulich wrote:
>>>> On 10.04.2026 19:41, Andrew Cooper wrote:
>>>>> On 10/04/2026 4:45 pm, Oleksii Kurochko wrote:
>>>>>> diff --git a/xen/arch/riscv/time.c b/xen/arch/riscv/time.c
>>>>>> index 7efa76fdbcb1..80f0e9ddae6a 100644
>>>>>> --- a/xen/arch/riscv/time.c
>>>>>> +++ b/xen/arch/riscv/time.c
>>>>>> @@ -91,4 +90,23 @@ void __init preinit_xen_time(void)
>>>>>>            panic("%s: ACPI isn't supported\n", __func__);
>>>>>>    
>>>>>>        boot_clock_cycles = get_cycles();
>>>>>> +
>>>>>> +    /* set_xen_timer must have been set by sbi_init() already */
>>>>>> +    ASSERT(set_xen_timer);
>>>>>> +
>>>>>> +    if ( riscv_isa_extension_available(NULL, RISCV_ISA_EXT_sstc) )
>>>>>> +    {
>>>>>> +        set_xen_timer = sstc_set_xen_timer;
>>>>>> +
>>>>>> +        /*
>>>>>> +         * A VS-timer interrupt becomes pending whenever the value of
>>>>>> +         * (time + htimedelta) is greater than or equal to vstimecmp CSR.
>>>>>> +         * Thereby to avoid spurious VS-timer irqs set vstimecmp CSR to
>>>>>> +         * ULONG_MAX.
>>>>>> +         */
>>>>>> +        csr_write(CSR_VSTIMECMP, ULONG_MAX);
>>>>>> +#ifdef CONFIG_RISCV_32
>>>>>> +        csr_write(CSR_VSTIMECMPH, ULONG_MAX);
>>>>>> +#endif
>>>>>
>>>>> You've got this pattern twice in this patch alone, and these aren't the
>>>>> only CSRs which are formed of pairs to get a 64bit value in 32bit mode.
>>>>>
>>>>> Sadly, the numbering isn't consistent for the high constant, but we can
>>>>> let the compiler do most of the hard work for us.
>>>>>
>>>>> #ifdef CONFIG_RISCV_32
>>>>> # define __csr_write32h(csr, val) csr_write(csr ## H, (val) >> 32)
>>>>> #else
>>>>> # define __csr_write32h(csr, val) (void)(csr, val)
>>>>
>>>> Just to mention: Since the comma is an operator here (not a lexical element
>>>> separating function arguments), more parenthesization may be needed for
>>>> Misra's sake.
>>>
>>> I will define it in the next way:
>>>
>>> # define __csr_write32h(csr, val) (void)((csr), (val))
>>
>> Actually, yet more parentheses are needed:
>>
>> # define __csr_write32h(csr, val) ((void)((csr), (val)))
> 
> It seems like (void) should be for (csr) and (val), so it should be:
> 
> # define __csr_write32h(csr, val) ((void)(csr), (void)(val))
> 
> Otherwise the following compilation error occurs.
> 
> ./arch/riscv/include/asm/csr.h:38:48: error: left-hand operand of comma 
> expression has no effect [-Werror=unused-value]
>     38 | # define __csr_write32h(csr, val) ((void)((csr), (val)))

I was indeed wondering, but I did assume Andrew had checked his suggestion.
Then again maybe it was only meant as an outline anyway.

Jan


From xen-devel-bounces@lists.xenproject.org Thu Apr 16 16:10:10 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 16 Apr 2026 16:10:10 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1283760.1565891 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wDPI8-00054M-RL; Thu, 16 Apr 2026 16:10:08 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1283760.1565891; Thu, 16 Apr 2026 16:10: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 1wDPI8-00054F-Op; Thu, 16 Apr 2026 16:10:08 +0000
Received: by outflank-mailman (input) for mailman id 1283760;
 Thu, 16 Apr 2026 16:10:07 +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 1wDPI7-00050N-Al
 for xen-devel@lists.xenproject.org; Thu, 16 Apr 2026 16:10:07 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wDPI6-00Dtx3-K9
 for xen-devel@lists.xenproject.org; Thu, 16 Apr 2026 18:10:06 +0200
Received: from [10.42.69.7] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <andrew.cooper@citrix.com>)
 id 69e109cb-e002-0a2a0a5209dd-0a2a45079154-28
 for <xen-devel@lists.xenproject.org>; Thu, 16 Apr 2026 18:10:06 +0200
Received: from [52.101.62.57]
 (helo=DM5PR21CU001.outbound.protection.outlook.com)
 by tlsNG-ef75cf.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.1)
 (envelope-from <andrew.cooper@citrix.com>)
 id 69e109dc-229c-0a2a45070019-34653e3932c2-3
 for <xen-devel@lists.xenproject.org>; Thu, 16 Apr 2026 18:10:06 +0200
Received: from CH8PR03MB8275.namprd03.prod.outlook.com (2603:10b6:610:2b9::7)
 by BY5PR03MB4933.namprd03.prod.outlook.com (2603:10b6:a03:1ef::19)
 with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9769.46; Thu, 16 Apr
 2026 16:10: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%6]) with mapi id 15.20.9818.017; Thu, 16 Apr 2026
 16:10: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=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=VjX9KAkXoOaKrzbkxKC14lyKnodBUofaAr9bBxSI8naWlaouIXneTlW7yyjDzuz5+bk1bV4ZnxJqwo6dfymsgpieWrMpgvmEDggsux7+NcSFH+9qHSs2ZfEoeQfhnpdpScRYgkydjvtN5qf/L13fAyLMI2j4uLNvR3gSRi1pSQ2u7dy1PnFAlf2A25qF5ozp3vCKcuPP/SRB+KbjWi+MbdWLeJogxVoUi/lTxKS26uFkmLmQv8kdD6d3aBF8Cq4G5QwYfBbWy9nj2XnaMs/xt+jU2K5Wjo6WHgNDSeW5+f2tbxlLUQyMZL2N8djb15itSt92XbMBsvBKHuspJhtRCA==
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com;
 s=arcselector10001;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1;
 bh=gZAYh1M3kg71Mx1ghEtuB23cZ1yAuSu+vuHpMzOZjeM=;
 b=FXtj40FeOenNGIccmAVLXWlR2Ngw+wrEAm0YO8eES16i0lWZx585k/Oa2YGC9071RYrlMqBmxPwnsq718SsEN9S1pKnqQahFfCDdebESdO0nVVhzTwxD8XA8hlBFXpj+nCo7o7Uw5qgJMv4JNiS7p1oFXlRU5TaJie3CaU850WjJNfNS4O7qn6bPSlZX4Y25aAfUB5wbn1j23uA2A+wxLAAYGenqX2rw3BA4xhoFQg8Gz8anZx+WkHL7rucqIOkiftZxyk9LAA0gKIU7JaJZAtvyE621Ix6+guQt8agtUNIswkIC9PRu60Vnge4hTomO6CVZOVYvVvQ5sB+WeuBYqA==
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=gZAYh1M3kg71Mx1ghEtuB23cZ1yAuSu+vuHpMzOZjeM=;
 b=KlzIFQ3sHPcp7wPmXzBPHM8+o13exUdwvc5sYrxgeWI5mn/9BNL97VhFP8AARxPBKumyO0ZIYYoxcDvuo65MUPV5ENSBCckKJ/FLbR3OABRIFrdfERdCrerG4wbnOYK4CKt2T/HkG+jKDqg4+sqyVnyBXaLnkc0P4Ae3ypInJOM=
Authentication-Results: dkim=none (message not signed)
 header.d=none;dmarc=none action=none header.from=citrix.com;
Message-ID: <b4449bb0-f14b-41a4-959d-6c9517aff47d@citrix.com>
Date: Thu, 16 Apr 2026 17:09:57 +0100
User-Agent: Mozilla Thunderbird
Cc: Andrew Cooper <andrew.cooper3@citrix.com>,
 Romain Caritey <Romain.Caritey@microchip.com>,
 Alistair Francis <alistair.francis@wdc.com>,
 Connor Davis <connojdavis@gmail.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.pau@citrix.com>,
 Stefano Stabellini <sstabellini@kernel.org>, xen-devel@lists.xenproject.org
Subject: Re: [PATCH] xen/riscv: allow Xen to use SSTC while hiding it from
 guests
To: Jan Beulich <jbeulich@suse.com>,
 Oleksii Kurochko <oleksii.kurochko@gmail.com>
References: <eba232ac5a338332ddedc2cb084e0c04ee8744c2.1775835741.git.oleksii.kurochko@gmail.com>
 <9eb6c6d9-8e1c-40f6-a44b-579df213bda0@citrix.com>
 <feee06f0-584a-4b2c-b761-c3b77627c26d@suse.com>
 <3c8cba0b-8d9c-4656-b70e-f5c65017aecc@gmail.com>
 <9579ca3e-e98b-4d76-81bf-0f2e0df5a990@suse.com>
 <5de7ede4-b14f-4a36-b06b-12bf768b52a8@gmail.com>
 <4f18e2dd-911c-4794-af71-9c8b2b760d62@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: <4f18e2dd-911c-4794-af71-9c8b2b760d62@suse.com>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
X-ClientProxiedBy: LO4P123CA0603.GBRP123.PROD.OUTLOOK.COM
 (2603:10a6:600:295::19) To CH8PR03MB8275.namprd03.prod.outlook.com
 (2603:10b6:610:2b9::7)
MIME-Version: 1.0
X-MS-PublicTrafficType: Email
X-MS-TrafficTypeDiagnostic: CH8PR03MB8275:EE_|BY5PR03MB4933:EE_
X-MS-Office365-Filtering-Correlation-Id: 7fe7e627-fbd7-4f2b-236e-08de9bd29d5d
X-MS-Exchange-SenderADCheck: 1
X-MS-Exchange-AntiSpam-Relay: 0
X-Microsoft-Antispam:
	BCL:0;ARA:13230040|376014|7416014|366016|1800799024|22082099003|18002099003|56012099003;
X-Microsoft-Antispam-Message-Info:
	lFwP9ksjR9vtNY56xR/N6mXvX6MDNGhbSzV5o4iDuio8nGaAPFUgXvVwMPXj0JAZU5/2M5uXKaFYk2SVS8CHp91GmwN0cCyY+WKb6+4Pdm5kw3ehc1Ql4vZK7P3Tkb8LLYa0bZ7BEl2JESE4tMc67NizXa2fnb68WA3rHUWaB5aqaSZAeQ7+FIa8BDM+e46vbwrVcwCg8sAI1C2+Pr/p7MriTXbaZsksiwVrFcpo28wXDC9Oi07tEviQZ/+8/25kqladxMOh/Tj7XSyT1TRsrMkC7nx9CnsDeKbzZ+IIPEM8RsgmLtotaQZHnTZ4Vf+f7lW5A5NlXQXdHkF28mwl5gVXgyeCOPP057nAAlNafWIyHJC9lTgasE1UzCRsk0FpZNIFCMSqUpBKdh3uOHCaeV/u/nsh20FDy8Sod7EI5tLnMWIozKZhOdWvWOSp1FAEzsYg4kVynrgHFJi1w2kmo+ITNRW26u1gb2icjx+RP64FEzgA7cUpstQC1LYrrdX6t7J6r0Qfet7jV5judPg2aQQtEpSze7Aea37Bqwj4nxm+/ehrOKWtuCwAB1/d9mrmJWWqsYsrILhzpK05kYf3etNqukltYC3EYHmnuOq4O6RjJdQUi/irRMW5Pc+ZXzwgrU6gaFyChBm86AudyWjLChZuBxzsRFleR/7ONGWeZE7EUFinvHYR7OHdvydCpyBx15mMh4MxGJ6u/RylOD02C4rKihWp/F/CZngRwQWUxa4=
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)(7416014)(366016)(1800799024)(22082099003)(18002099003)(56012099003);DIR:OUT;SFP:1101;
X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1
X-MS-Exchange-AntiSpam-MessageData-0:
	=?utf-8?B?eU0wdEJYNTFVR2F0ZTk5QzlJYk5ZdS9jQ2trR2tBSW42K2VNYS9rTXRId3o3?=
 =?utf-8?B?WkpBSHVUNnZZWE4rUnR2VGNWMFVFR2hBU0VjMEI2K3ZmOFA0bUtKa21wSjVP?=
 =?utf-8?B?cG5aZjh0ZXpQRUlYQW14ckMzOUhPbXc1bmpZa2hmTmJvQWkwZlNqY0Zkc1Vz?=
 =?utf-8?B?bmNjWmhRaVZaQXJtTUdCTjBrVHZDNGt1YmVJYmlWM1dXTGg4K2xnTDUycXlK?=
 =?utf-8?B?eldoR0EzYlo3UHdFcjhmSnZBRjBRd0p0RlNkeTNGeUNMTzB4cFBIVW9HeUc4?=
 =?utf-8?B?NjlUNkFhd2ZZYnp0b2Z6NkFPa3F3ek9NOEg5K3lqenFEQmNRbllVZVFMTm41?=
 =?utf-8?B?ZUFiN21lMlgySFdWUTRSY2dIeXNobVdETVFRZmVSZm9PTGRGd0cxdDUva0FL?=
 =?utf-8?B?VmlJbXhYMGRXQWpXWWtBOXppMzJHYk84YUJab29rLzQvZHhtb3dDT2dwQ3lR?=
 =?utf-8?B?S0JldGdNUklJampTMERSZ3Y5OGJWQlk1R3BmS1gzY1JwVWN4ZndFeTE4K29z?=
 =?utf-8?B?ZUFja3NlcUt0TjhlRTlvQ2pZczNURDYrMG02dEIrcmcvQ09qcUJ2ZHlDVkdi?=
 =?utf-8?B?ZkU0VzBSMStFTERiZURMWTBlZ1o4OWFjMGVXYXFQc3pUaDZya2JPNC8zcEFQ?=
 =?utf-8?B?N3FnN1Y3SzZlelFZTEFuRVRxV0ViM3MyUzduLy93TUNoOWRueXFDZ0JLUDAr?=
 =?utf-8?B?c1RNSEZvczVBNEFpWk9hb1d4bDYxelEyaGdUMnR3RmxHcnNoMGRDQ2t3a1pH?=
 =?utf-8?B?STBDeHB2aTlZWlVwdFNiajc5V3hlTGVXU3ZNamxyK2lWTjFkY1hjVk1HV1Vo?=
 =?utf-8?B?UDA5NHBieUFGMHpBRTMrVzh6Qm9kUWhWOXoyc2w4TnBOek4yR2JiQjQvV1E1?=
 =?utf-8?B?M2hXNXBEOGlROFpjem9nWG5qdmhvUHV6RnFHd2c0OE9MUE03TWJCZkhLWWRS?=
 =?utf-8?B?MHRoc2FVRXhKY2w0UzFmMmUxdkcyYWxRWnRhbDMvWGdwTFZ5ekF2cXFxaEVx?=
 =?utf-8?B?T2NBd3lFaG5hY0VaQ0UvdTd5Ty9zbEMrNkNCc0QxS2tWTkxGVll0WktKL2pu?=
 =?utf-8?B?OHU3Vlo1UVd1WERNL01xb0NuNDZ4NkxFODZpL3BEQVdHanR3N2RnY05FMHZR?=
 =?utf-8?B?NFArT0tralJHRFo0dDkxRkZnQzRiNlFOZlk1SzFCZ0xpZVQ0Rm02RVdmZ2w4?=
 =?utf-8?B?UlFPY3hlQXNGejNJTUt5NzRCZXVVVWhDanRWMWM0eUFuUFFScTdQeUxBNzJq?=
 =?utf-8?B?aDRBc21BdGw0TW1vdW5qTG1FZGRoM0liZk1qcDVQczNwWHU2dnJvSUcvaFJT?=
 =?utf-8?B?RkFLSHlhZ1dsc1Rhd0hPUldZbzBmb2hXQkEwTnVtVFlEKzZGOE1rQ3ZOM1kr?=
 =?utf-8?B?aGQwenJzZlluUmZJeFFMZ2NTYW16RkNWOG1sczVVei9VOWJZWUxtaC83RG5U?=
 =?utf-8?B?NmN6VW5GMlJ4MWF1VGpZSXBjZWVoeEFEUm5ZeDVlT3pvMEpxbVZQQ21BWkVm?=
 =?utf-8?B?cXBWa3l0ZHZNL3p6SWlyMHQ2c05WMFJnbU9HMnczN3lLYTFyR3VnYjBXQW9Q?=
 =?utf-8?B?L3puT0hUa0x6azFSTTJVWTFLNXgrc3JqZW9jNVd4UFBzS0VwOE5tYSsrN2o3?=
 =?utf-8?B?eHk2YUM0TmF0NDlvbVRidU5RNHNDYU52d3ZtUE4rY2FIeVRuSzY4aXJpRFZL?=
 =?utf-8?B?WGFCc09qMzA2OFdlYTZ4YXhOeHlrQlBwdW9tdnV3WFdYREFkUEV0Yjhsd1d3?=
 =?utf-8?B?cnJuTVNHb3B6dHliVllkYXdsbytaM1VIL2dNaUFXOW9yTEdNa0dxZjNDSXBJ?=
 =?utf-8?B?Vk12VFJjNHdmUWxFREd4bzNNRmx0bDRWYVRGVnFmdGdaRmQvamxVR3I5T2JM?=
 =?utf-8?B?T0srTmRLM2pBdUNmWTRlbGFjK1RIZHZqc3lTdmttUXJHREVONURNWFhPM0s0?=
 =?utf-8?B?SGx1Z2xVSWU4czJmWXVTOFVpYnU5cm9Fek9NblVzRFl4c2dWaHVPb2JIVTkw?=
 =?utf-8?B?NFlqbWdPeDdva1lHSjJlcGcyd2pqVlhuNlNDYmFkV3VYVXUzcnVUYlcrQTdZ?=
 =?utf-8?B?T2gySGJjenRQMURNbmtEMm45M1NQNFhBVkJRRnEvMWYvZzNYc1dMZXdRemxK?=
 =?utf-8?B?VTFaSTlybkJMU3VqUlFMTUF4NzVDc1lYZTRCb0dTVXNuMUFkMnpDZ2dUQnBG?=
 =?utf-8?B?L1U3MHM1SXZOZ1BlRUs0N2wydUMwRkFLajdNQnVhbjBHMXZ5QXVJOXp4QmNC?=
 =?utf-8?B?N2Q5Sll5cWExYU90ejcrUmwvTE5uQ1pFYzBZdkZrVnVNNFYzbzkxbUZTM3A3?=
 =?utf-8?B?VWR0VWh4MkxEdGs5TWZpTmFrWHZFUEg5TTAyOXlEU3VSZ2s3RDR4eTBVdVhT?=
 =?utf-8?Q?991ePo0nrYzx0wNo=3D?=
X-OriginatorOrg: citrix.com
X-MS-Exchange-CrossTenant-Network-Message-Id: 7fe7e627-fbd7-4f2b-236e-08de9bd29d5d
X-MS-Exchange-CrossTenant-AuthSource: CH8PR03MB8275.namprd03.prod.outlook.com
X-MS-Exchange-CrossTenant-AuthAs: Internal
X-MS-Exchange-CrossTenant-OriginalArrivalTime: 16 Apr 2026 16:10:01.9817
 (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: zQ+8V785/GTnpZ6gB0yTHeHdaemmAa0zmtEolxT0jJ8n+Ni8n5BlurhNwWWjEyeus4YPEi6THLyMsxrujUmof6e9UvLSd6f/ojGvJ4P/wnY=
X-MS-Exchange-Transport-CrossTenantHeadersStamped: BY5PR03MB4933
X-purgate-ID: tlsNG-ef75cf/1776355806-AFF7EC48-A8A71C49/0/0
X-purgate-type: clean
X-purgate-size: 3026

On 16/04/2026 5:07 pm, Jan Beulich wrote:
> On 16.04.2026 17:49, Oleksii Kurochko wrote:
>>
>> On 4/16/26 5:45 PM, Jan Beulich wrote:
>>> On 16.04.2026 17:37, Oleksii Kurochko wrote:
>>>>
>>>> On 4/16/26 9:50 AM, Jan Beulich wrote:
>>>>> On 10.04.2026 19:41, Andrew Cooper wrote:
>>>>>> On 10/04/2026 4:45 pm, Oleksii Kurochko wrote:
>>>>>>> diff --git a/xen/arch/riscv/time.c b/xen/arch/riscv/time.c
>>>>>>> index 7efa76fdbcb1..80f0e9ddae6a 100644
>>>>>>> --- a/xen/arch/riscv/time.c
>>>>>>> +++ b/xen/arch/riscv/time.c
>>>>>>> @@ -91,4 +90,23 @@ void __init preinit_xen_time(void)
>>>>>>>            panic("%s: ACPI isn't supported\n", __func__);
>>>>>>>    
>>>>>>>        boot_clock_cycles = get_cycles();
>>>>>>> +
>>>>>>> +    /* set_xen_timer must have been set by sbi_init() already */
>>>>>>> +    ASSERT(set_xen_timer);
>>>>>>> +
>>>>>>> +    if ( riscv_isa_extension_available(NULL, RISCV_ISA_EXT_sstc) )
>>>>>>> +    {
>>>>>>> +        set_xen_timer = sstc_set_xen_timer;
>>>>>>> +
>>>>>>> +        /*
>>>>>>> +         * A VS-timer interrupt becomes pending whenever the value of
>>>>>>> +         * (time + htimedelta) is greater than or equal to vstimecmp CSR.
>>>>>>> +         * Thereby to avoid spurious VS-timer irqs set vstimecmp CSR to
>>>>>>> +         * ULONG_MAX.
>>>>>>> +         */
>>>>>>> +        csr_write(CSR_VSTIMECMP, ULONG_MAX);
>>>>>>> +#ifdef CONFIG_RISCV_32
>>>>>>> +        csr_write(CSR_VSTIMECMPH, ULONG_MAX);
>>>>>>> +#endif
>>>>>> You've got this pattern twice in this patch alone, and these aren't the
>>>>>> only CSRs which are formed of pairs to get a 64bit value in 32bit mode.
>>>>>>
>>>>>> Sadly, the numbering isn't consistent for the high constant, but we can
>>>>>> let the compiler do most of the hard work for us.
>>>>>>
>>>>>> #ifdef CONFIG_RISCV_32
>>>>>> # define __csr_write32h(csr, val) csr_write(csr ## H, (val) >> 32)
>>>>>> #else
>>>>>> # define __csr_write32h(csr, val) (void)(csr, val)
>>>>> Just to mention: Since the comma is an operator here (not a lexical element
>>>>> separating function arguments), more parenthesization may be needed for
>>>>> Misra's sake.
>>>> I will define it in the next way:
>>>>
>>>> # define __csr_write32h(csr, val) (void)((csr), (val))
>>> Actually, yet more parentheses are needed:
>>>
>>> # define __csr_write32h(csr, val) ((void)((csr), (val)))
>> It seems like (void) should be for (csr) and (val), so it should be:
>>
>> # define __csr_write32h(csr, val) ((void)(csr), (void)(val))
>>
>> Otherwise the following compilation error occurs.
>>
>> ./arch/riscv/include/asm/csr.h:38:48: error: left-hand operand of comma 
>> expression has no effect [-Werror=unused-value]
>>     38 | # define __csr_write32h(csr, val) ((void)((csr), (val)))
> I was indeed wondering, but I did assume Andrew had checked his suggestion.
> Then again maybe it was only meant as an outline anyway.

Sorry, I was writing in a hurry.  My suggestion wasn't even compiled.

~Andrew


From xen-devel-bounces@lists.xenproject.org Thu Apr 16 16:12:15 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 16 Apr 2026 16:12:15 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1283778.1565909 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wDPKA-0005hq-DI; Thu, 16 Apr 2026 16:12:14 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1283778.1565909; Thu, 16 Apr 2026 16:12: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 1wDPKA-0005hj-9r; Thu, 16 Apr 2026 16:12:14 +0000
Received: by outflank-mailman (input) for mailman id 1283778;
 Thu, 16 Apr 2026 16:12:14 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <bounce-md_30504962.69e10a5a.v1-29f48fc9630b48479eb5a8e27dd77473@bounce.vates.tech>)
 id 1wDPK9-0005hd-Ke
 for xen-devel@lists.xenproject.org; Thu, 16 Apr 2026 16:12:13 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wDPK9-001gvg-11
 for xen-devel@lists.xenproject.org; Thu, 16 Apr 2026 18:12:13 +0200
Received: from [10.42.69.5] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1) (envelope-from
 <bounce-md_30504962.69e10a5a.v1-29f48fc9630b48479eb5a8e27dd77473@bounce.vates.tech>)
 id 69e10a5a-5cb7-0a2a0a5109dd-0a2a4505ad1a-8
 for <xen-devel@lists.xenproject.org>; Thu, 16 Apr 2026 18:12:12 +0200
Received: from [198.2.137.11] (helo=mail137-11.atl71.mandrillapp.com)
 by tlsNG-c201ff.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.1)
 (envelope-from
 <bounce-md_30504962.69e10a5a.v1-29f48fc9630b48479eb5a8e27dd77473@bounce.vates.tech>)
 id 69e10a5b-aaa8-0a2a45050019-c602890b0dcd-3
 for <xen-devel@lists.xenproject.org>; Thu, 16 Apr 2026 18:12:12 +0200
Received: from mta004-md-usw2.delv.a.intuit.com (localhost [127.0.0.1])
 by mail137-11.atl71.mandrillapp.com (Mailchimp) with ESMTP id
 4fxNLy6fNZzDRdWn3
 for <xen-devel@lists.xenproject.org>; Thu, 16 Apr 2026 16:12:10 +0000 (UTC)
Received: from [37.26.189.201] by mandrillapp.com id
 29f48fc9630b48479eb5a8e27dd77473; Thu, 16 Apr 2026 16:12: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=mte1 header.d=mandrillapp.com header.i="@mandrillapp.com" header.h="From:Subject:To:Cc:Message-Id:References:In-Reply-To:Feedback-ID:Date:MIME-Version:Content-Type:Content-Transfer-Encoding"; dkim=pass header.s=mte1 header.d=vates.tech header.i="anthony.perard@vates.tech" header.h="From:Subject:To:Cc:Message-Id:References:In-Reply-To:Feedback-ID:Date:MIME-Version:Content-Type:Content-Transfer-Encoding"
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=mandrillapp.com;
	s=mte1; t=1776355930; x=1776625930;
	bh=9i1GohdlhXVzP2qyrLIucgM92vxUqV6Buaznl+/iM9s=;
	h=From:Subject:To:Cc:Message-Id:References:In-Reply-To:Feedback-ID:
	 Date:MIME-Version:Content-Type:Content-Transfer-Encoding:CC:Date:
	 Subject:From;
	b=lcoaFPZ3bBVHTyQ0+HUak4HRfq8HYs2+BI5Mhwcexal/L+KDoA/rwvYDXqa31elHm
	 XroyReZvfzMYhnZuy2vFgAkeFgeAHvGWKxRw981XmyQqWkJy+8bjM1U/LSlDqoe3oW
	 L205EjAXeQEfub9Q+Ssx9eIZnjnyo/upIwvI0VSh79t+uknQ7xRuEeRpBXL/MVhswN
	 lR9DEEW8uUrOEzjA6y7sMK3IfG3MQWoaFuY9G4LyMLaplamsdaBB1OvKTC5x/BAeUP
	 Q954WR5yIbHqqfS3S+Vo0ILxxxGFzMyDhyFBg8HAmI+zk5J3xcWihDrR3wxVZ7cZW8
	 Zd76vlDixhdFQ==
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=vates.tech; s=mte1;
	t=1776355930; x=1776616430; i=anthony.perard@vates.tech;
	bh=9i1GohdlhXVzP2qyrLIucgM92vxUqV6Buaznl+/iM9s=;
	h=From:Subject:To:Cc:Message-Id:References:In-Reply-To:Feedback-ID:
	 Date:MIME-Version:Content-Type:Content-Transfer-Encoding:CC:Date:
	 Subject:From;
	b=qpyRH+0a+Jzkq7oM6jRogxtuKK2HdV2betC73tmdPqxXALoqEmHjM0G+BxZo/fI6D
	 prbdZGaHdtQvcTAqqH4TMkwB2IwWiI+jExl2kvwRWfh6KhmLRTP4yHxJOa8iggnFur
	 mKXq1RS/5BJbFJDEDNz5P20LiUb8NnpISToBMWoPgqFNXI2zqZ1OlREtiG/JlV1P57
	 ON3rnKVBnhHWAYGAJ9G7HIvd5fI1XSYMYMcQ8sNkD6peVB1WiL8+Ml5hvdWY7P7r3/
	 D4xMFPuseJeMl1JMMMvyS6vS+g/8C8KBzIvJXiKMY2ZbLzLo9tKbNGcbt5cK+WTeG+
	 9Tp7bV5gq+XWA==
From: "Anthony PERARD" <anthony.perard@vates.tech>
Subject: =?utf-8?Q?Re:=20[PATCH=20v2=203/6]=20ci:=20introduce=20BUILD=5FFOR=5FTESTS=5FONLY?=
X-Bm-Disclaimer: Yes
X-Bm-Milter-Handled: 4ffbd6c1-ee69-4e1b-aabd-f977039bd3e2
X-Bm-Transport-Timestamp: 1776355929690
To: "=?utf-8?Q?Marek=20Marczykowski-G=C3=B3recki?=" <marmarek@invisiblethingslab.com>
Cc: xen-devel@lists.xenproject.org, "Stefano Stabellini" <sstabellini@kernel.org>, "Andrew Cooper" <andrew.cooper3@citrix.com>, "Doug Goldstein" <cardoe@cardoe.com>
Message-Id: <aeEKWZ0AqETJFJOl@l14>
References: <cover.ca38f9571ab23e254a985ecfd4715235675aa06e.1774999414.git-series.marmarek@invisiblethingslab.com> <c5247e0a41dc49bd18cca23864f9adaf86bb2147.1774999414.git-series.marmarek@invisiblethingslab.com>
In-Reply-To: <c5247e0a41dc49bd18cca23864f9adaf86bb2147.1774999414.git-series.marmarek@invisiblethingslab.com>
X-Native-Encoded: 1
X-Report-Abuse: =?UTF-8?Q?Please=20forward=20a=20copy=20of=20this=20message,=20including=20all=20headers,=20to=20abuse@mandrill.com.=20You=20can=20also=20report=20abuse=20here:=20https://mandrillapp.com/contact/abuse=3Fid=3D30504962.29f48fc9630b48479eb5a8e27dd77473?=
X-Mandrill-User: md_30504962
Feedback-ID: 30504962:30504962.20260416:md
Date: Thu, 16 Apr 2026 16:12:10 +0000
MIME-Version: 1.0
Content-Type: text/plain; charset=utf-8
Content-Transfer-Encoding: quoted-printable
X-purgate-ID: tlsNG-c201ff/1776355932-E13A0443-09EAAD9B/0/0
X-purgate-type: clean
X-purgate-size: 845

On Wed, Apr 01, 2026 at 01:24:52AM +0200, Marek Marczykowski-G=C3=B3recki w=
rote:
> diff --git a/automation/gitlab-ci/build.yaml b/automation/gitlab-ci/build=
.yaml
> index b69bad9202c2..f4e277780311 100644
> --- a/automation/gitlab-ci/build.yaml
> +++ b/automation/gitlab-ci/build.yaml
> @@ -496,6 +520,7 @@ debian-bookworm-gcc-cppcheck:
>  
>  debian-bookworm-gcc-arm32-cppcheck:
>    extends: .gcc-arm32-cross-build
> +  <<: *build-test

This jobs doesn't looks like it's used by any tests. The other looks
probables, and I could start a pipeline, so no tests are missing the new
rule.

This chunck could be removed on commit, so:
Reviewed-by: Anthony PERARD <anthony.perard@vates.tech>

Thanks,


--
Anthony Perard | Vates XCP-ng Developer

XCP-ng & Xen Orchestra - Vates solutions

web: https://vates.tech




From xen-devel-bounces@lists.xenproject.org Thu Apr 16 16:14:05 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 16 Apr 2026 16:14:05 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1283787.1565918 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wDPLs-0006EJ-Nd; Thu, 16 Apr 2026 16:14:00 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1283787.1565918; Thu, 16 Apr 2026 16:14: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 1wDPLs-0006EC-Kf; Thu, 16 Apr 2026 16:14:00 +0000
Received: by outflank-mailman (input) for mailman id 1283787;
 Thu, 16 Apr 2026 16:13:59 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <demiobenour@gmail.com>) id 1wDPLr-0006E6-LC
 for xen-devel@lists.xenproject.org; Thu, 16 Apr 2026 16:13:59 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wDPLr-00EfF2-1k
 for xen-devel@lists.xenproject.org; Thu, 16 Apr 2026 18:13:59 +0200
Received: from [10.42.69.10] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <demiobenour@gmail.com>)
 id 69e10abe-bab6-0a2a0a5309dd-0a2a450a9232-6
 for <xen-devel@lists.xenproject.org>; Thu, 16 Apr 2026 18:13:59 +0200
Received: from [209.85.128.173] (helo=mail-yw1-f173.google.com)
 by tlsNG-4011c0.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.1)
 (envelope-from <demiobenour@gmail.com>)
 id 69e10ac5-56b3-0a2a450a0019-d15580ade419-3
 for <xen-devel@lists.xenproject.org>; Thu, 16 Apr 2026 18:13:58 +0200
Received: by mail-yw1-f173.google.com with SMTP id
 00721157ae682-7991db3dc98so97786607b3.0
 for <xen-devel@lists.xenproject.org>; Thu, 16 Apr 2026 09:13:58 -0700 (PDT)
Received: from [10.138.34.110]
 (h96-60-57-129.cncrtn.broadband.dynamic.tds.net. [96.60.57.129])
 by smtp.gmail.com with ESMTPSA id
 00721157ae682-7b766216908sm26399407b3.8.2026.04.16.09.13.54
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Thu, 16 Apr 2026 09:13:56 -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=20251104 header.d=gmail.com header.i="@gmail.com" header.h="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=gmail.com; s=20251104; t=1776356037; x=1776960837; darn=lists.xenproject.org;
        h=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;
        bh=aKeq+ClKB8J3uZixIAuda8HLzZ03MqGpWTD3Q1TgjH8=;
        b=DJmoJC8ApA+UoWfyHO0GrirOzvoQI4Ol89cjYy4zI1+XuRzZ9yeyhI0nJ4KYkNGIbX
         uotmO20GFQlgHfYLbxHbNuvyrOvlUppb83n59uzSyDkFV6L+Rwee9WNB71pOXpB2EqZN
         LQnv0ewrXMHlvZ2f/Len7qzhuh3YwnUIzqGhJoiVOkcFPI8OfyugzLEAVOWO/vPVytrM
         59cBa+ofspmOnxDlclqZF50h2gDaZrgM9tK8LNOpGoAgqPEAL8FTjju/btlmu56SawIS
         y4Figce6yV7qhRv3HrMXDkWi+/gdPt43nuJYp2cH8JbbNTKgLBkfj7T1T9yilVxca4uD
         3/pg==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20251104; t=1776356037; x=1776960837;
        h=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;
        bh=aKeq+ClKB8J3uZixIAuda8HLzZ03MqGpWTD3Q1TgjH8=;
        b=gvxdiQgMHyXmdLNt2gVo1ccK9bAMYJvgVwHERSwSsXlpT5HIYWXSd7Jet3yr2dNcS1
         A57WFe9fnf2m+262Xpbjqxd9d5YOOVufESezyYLGHBJsSqY+Omy/eTs84bK6c73M8xG7
         uGTsGtK9qTqLvX3Z285Toa9YVoJTAseeqnOioGAzOgZSqDaivqURxQRRRIy0UqHZ9bJD
         59rc0o3hYuf8ER0+wWyehVplUQ5PDdSk+SZVvjrMfgfzGoXVOQq+cgbpyIb+rVRFidhj
         LaWPLeEMiAqdFeWqE7sXOSmqwb5LcVL/J96Sq3Gzv/T+kkUs1hSZ2xLUJxHUXdTBem8M
         96Bg==
X-Forwarded-Encrypted: i=1; AFNElJ8H5hveaJULL9WqObBsiO6v6W9mU3qoFj42XSOa/7zyE6SGT8CSrb4m47WEYPlp7Ta6XEMFUQsZfTs=@lists.xenproject.org
X-Gm-Message-State: AOJu0Yxtx0ZOqggbIRZ+tOdtF3GU35RSxIkkXLA8QFbcPvIICDcZ5lM4
	h8d81nUorbS9t/nH3VmqkhfcwSIoY0LLl3Xf0pd1rBGgjNI9BbMG6LL6
X-Gm-Gg: AeBDieuqgxQ0WPf3VeLOjuDR+PvsKsJlFNw5Io/LsRT5Wu5Fh7kv9/4BTI5kdJt1bCT
	ohG851cRxGodiL9CHw0xKsbh4oSkdG7q8BY7Xnr7dWQNmvy8tJ8/11K9U7WYziyVAuFV1j4HjU4
	uDYDLXDJX7PAKZ/DCt0pQ7877nfVcqSeR1w0mbEinI1Fl0ggzlRLgLpxY6Ox+GujJiMXjnwjcCS
	INDEeLgAJwx7iXUWSSWww2Afu+ko1UX4eRt6vpV0B164mXnsVaSNA9RNvRaIVZerInFWF+kEjNX
	rrcnPjDWvf8wrfnu3kViNKyrHQFyt0lQtN5wjtZ8ORjzDKr4ytpGfTpWda9BTcrhvfd0kFJ3WtJ
	SJjwvvO69JH/JDcZWzMlUoGdPJ1Rvb15BbwO51U48KsUZ77cPyJlL0ZTPUtd58ONI7GzErLkcLy
	kPUmLOJ3v2Lh04IMu4AsEndlhUNGDQSRF4M6UwHA5a14c5HSKQ5zCr5vUrqQX/DcJRaeh56iTy+
	IFBUAs/TuNxeXysNDzxpmimfESpHp40icqZxkqygwxd21o=
X-Received: by 2002:a05:690c:ec5:b0:7b1:d1af:4b95 with SMTP id 00721157ae682-7b1d1af5e2amr226110517b3.45.1776356036969;
        Thu, 16 Apr 2026 09:13:56 -0700 (PDT)
Message-ID: <c7865b27-6bf1-4df1-9520-c9ef6b3ef368@gmail.com>
Date: Thu, 16 Apr 2026 12:13:34 -0400
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: Pinned, non-revocable mappings of VRAM: will bad things happen?
To: =?UTF-8?Q?Christian_K=C3=B6nig?= <christian.koenig@amd.com>,
 dri-devel@lists.freedesktop.org,
 Xen developer discussion <xen-devel@lists.xenproject.org>,
 linux-media@vger.kernel.org
Cc: Val Packett <val@invisiblethingslab.com>,
 Suwit Semal <sumit.semwal@linaro.org>
References: <a06133f7-3093-4733-9786-bc46c1453e06@gmail.com>
 <b8d04414-18b5-40f7-9ea2-88b30ff5bea0@amd.com>
Content-Language: en-US
From: Demi Marie Obenour <demiobenour@gmail.com>
Autocrypt: addr=demiobenour@gmail.com; keydata=
 xsFNBFp+A0oBEADffj6anl9/BHhUSxGTICeVl2tob7hPDdhHNgPR4C8xlYt5q49yB+l2nipd
 aq+4Gk6FZfqC825TKl7eRpUjMriwle4r3R0ydSIGcy4M6eb0IcxmuPYfbWpr/si88QKgyGSV
 Z7GeNW1UnzTdhYHuFlk8dBSmB1fzhEYEk0RcJqg4AKoq6/3/UorR+FaSuVwT7rqzGrTlscnT
 DlPWgRzrQ3jssesI7sZLm82E3pJSgaUoCdCOlL7MMPCJwI8JpPlBedRpe9tfVyfu3euTPLPx
 wcV3L/cfWPGSL4PofBtB8NUU6QwYiQ9Hzx4xOyn67zW73/G0Q2vPPRst8LBDqlxLjbtx/WLR
 6h3nBc3eyuZ+q62HS1pJ5EvUT1vjyJ1ySrqtUXWQ4XlZyoEFUfpJxJoN0A9HCxmHGVckzTRl
 5FMWo8TCniHynNXsBtDQbabt7aNEOaAJdE7to0AH3T/Bvwzcp0ZJtBk0EM6YeMLtotUut7h2
 Bkg1b//r6bTBswMBXVJ5H44Qf0+eKeUg7whSC9qpYOzzrm7+0r9F5u3qF8ZTx55TJc2g656C
 9a1P1MYVysLvkLvS4H+crmxA/i08Tc1h+x9RRvqba4lSzZ6/Tmt60DPM5Sc4R0nSm9BBff0N
 m0bSNRS8InXdO1Aq3362QKX2NOwcL5YaStwODNyZUqF7izjK4QARAQABzTxEZW1pIE1hcmll
 IE9iZW5vdXIgKGxvdmVyIG9mIGNvZGluZykgPGRlbWlvYmVub3VyQGdtYWlsLmNvbT7CwXgE
 EwECACIFAlp+A0oCGwMGCwkIBwMCBhUIAgkKCwQWAgMBAh4BAheAAAoJELKItV//nCLBhr8Q
 AK/xrb4wyi71xII2hkFBpT59ObLN+32FQT7R3lbZRjVFjc6yMUjOb1H/hJVxx+yo5gsSj5LS
 9AwggioUSrcUKldfA/PKKai2mzTlUDxTcF3vKx6iMXKA6AqwAw4B57ZEJoMM6egm57TV19kz
 PMc879NV2nc6+elaKl+/kbVeD3qvBuEwsTe2Do3HAAdrfUG/j9erwIk6gha/Hp9yZlCnPTX+
 VK+xifQqt8RtMqS5R/S8z0msJMI/ajNU03kFjOpqrYziv6OZLJ5cuKb3bZU5aoaRQRDzkFIR
 6aqtFLTohTo20QywXwRa39uFaOT/0YMpNyel0kdOszFOykTEGI2u+kja35g9TkH90kkBTG+a
 EWttIht0Hy6YFmwjcAxisSakBuHnHuMSOiyRQLu43ej2+mDWgItLZ48Mu0C3IG1seeQDjEYP
 tqvyZ6bGkf2Vj+L6wLoLLIhRZxQOedqArIk/Sb2SzQYuxN44IDRt+3ZcDqsPppoKcxSyd1Ny
 2tpvjYJXlfKmOYLhTWs8nwlAlSHX/c/jz/ywwf7eSvGknToo1Y0VpRtoxMaKW1nvH0OeCSVJ
 itfRP7YbiRVc2aNqWPCSgtqHAuVraBRbAFLKh9d2rKFB3BmynTUpc1BQLJP8+D5oNyb8Ts4x
 Xd3iV/uD8JLGJfYZIR7oGWFLP4uZ3tkneDfYzsFNBFp+A0oBEAC9ynZI9LU+uJkMeEJeJyQ/
 8VFkCJQPQZEsIGzOTlPnwvVna0AS86n2Z+rK7R/usYs5iJCZ55/JISWd8xD57ue0eB47bcJv
 VqGlObI2DEG8TwaW0O0duRhDgzMEL4t1KdRAepIESBEA/iPpI4gfUbVEIEQuqdqQyO4GAe+M
 kD0Hy5JH/0qgFmbaSegNTdQg5iqYjRZ3ttiswalql1/iSyv1WYeC1OAs+2BLOAT2NEggSiVO
 txEfgewsQtCWi8H1SoirakIfo45Hz0tk/Ad9ZWh2PvOGt97Ka85o4TLJxgJJqGEnqcFUZnJJ
 riwoaRIS8N2C8/nEM53jb1sH0gYddMU3QxY7dYNLIUrRKQeNkF30dK7V6JRH7pleRlf+wQcN
 fRAIUrNlatj9TxwivQrKnC9aIFFHEy/0mAgtrQShcMRmMgVlRoOA5B8RTulRLCmkafvwuhs6
 dCxN0GNAORIVVFxjx9Vn7OqYPgwiofZ6SbEl0hgPyWBQvE85klFLZLoj7p+joDY1XNQztmfA
 rnJ9x+YV4igjWImINAZSlmEcYtd+xy3Li/8oeYDAqrsnrOjb+WvGhCykJk4urBog2LNtcyCj
 kTs7F+WeXGUo0NDhbd3Z6AyFfqeF7uJ3D5hlpX2nI9no/ugPrrTVoVZAgrrnNz0iZG2DVx46
 x913pVKHl5mlYQARAQABwsFfBBgBAgAJBQJafgNKAhsMAAoJELKItV//nCLBwNIP/AiIHE8b
 oIqReFQyaMzxq6lE4YZCZNj65B/nkDOvodSiwfwjjVVE2V3iEzxMHbgyTCGA67+Bo/d5aQGj
 gn0TPtsGzelyQHipaUzEyrsceUGWYoKXYyVWKEfyh0cDfnd9diAm3VeNqchtcMpoehETH8fr
 RHnJdBcjf112PzQSdKC6kqU0Q196c4Vp5HDOQfNiDnTf7gZSj0BraHOByy9LEDCLhQiCmr+2
 E0rW4tBtDAn2HkT9uf32ZGqJCn1O+2uVfFhGu6vPE5qkqrbSE8TG+03H8ecU2q50zgHWPdHM
 OBvy3EhzfAh2VmOSTcRK+tSUe/u3wdLRDPwv/DTzGI36Kgky9MsDC5gpIwNbOJP2G/q1wT1o
 Gkw4IXfWv2ufWiXqJ+k7HEi2N1sree7Dy9KBCqb+ca1vFhYPDJfhP75I/VnzHVssZ/rYZ9+5
 1yDoUABoNdJNSGUYl+Yh9Pw9pE3Kt4EFzUlFZWbE4xKL/NPno+z4J9aWemLLszcYz/u3XnbO
 vUSQHSrmfOzX3cV4yfmjM5lewgSstoxGyTx2M8enslgdXhPthZlDnTnOT+C+OTsh8+m5tos8
 HQjaPM01MKBiAqdPgksm1wu2DrrwUi6ChRVTUBcj6+/9IJ81H2P2gJk3Ls3AVIxIffLoY34E
 +MYSfkEjBz0E8CLOcAw7JIwAaeBT
In-Reply-To: <b8d04414-18b5-40f7-9ea2-88b30ff5bea0@amd.com>
Content-Type: multipart/signed; micalg=pgp-sha256;
 protocol="application/pgp-signature";
 boundary="------------fKtr6APMKplfqUUUg4ENHwUG"
X-purgate-ID: tlsNG-4011c0/1776356039-46B778B7-9E7EA6AD/0/0
X-purgate-type: clean
X-purgate-size: 15541

This is an OpenPGP/MIME signed message (RFC 4880 and 3156)
--------------fKtr6APMKplfqUUUg4ENHwUG
Content-Type: multipart/mixed; boundary="------------FoCuIYfAKM7AmMdOnB0smfE5";
 protected-headers="v1"
Message-ID: <c7865b27-6bf1-4df1-9520-c9ef6b3ef368@gmail.com>
Date: Thu, 16 Apr 2026 12:13:34 -0400
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: Pinned, non-revocable mappings of VRAM: will bad things happen?
To: =?UTF-8?Q?Christian_K=C3=B6nig?= <christian.koenig@amd.com>,
 dri-devel@lists.freedesktop.org,
 Xen developer discussion <xen-devel@lists.xenproject.org>,
 linux-media@vger.kernel.org
Cc: Val Packett <val@invisiblethingslab.com>,
 Suwit Semal <sumit.semwal@linaro.org>
References: <a06133f7-3093-4733-9786-bc46c1453e06@gmail.com>
 <b8d04414-18b5-40f7-9ea2-88b30ff5bea0@amd.com>
Content-Language: en-US
From: Demi Marie Obenour <demiobenour@gmail.com>
Autocrypt: addr=demiobenour@gmail.com; keydata=
 xsFNBFp+A0oBEADffj6anl9/BHhUSxGTICeVl2tob7hPDdhHNgPR4C8xlYt5q49yB+l2nipd
 aq+4Gk6FZfqC825TKl7eRpUjMriwle4r3R0ydSIGcy4M6eb0IcxmuPYfbWpr/si88QKgyGSV
 Z7GeNW1UnzTdhYHuFlk8dBSmB1fzhEYEk0RcJqg4AKoq6/3/UorR+FaSuVwT7rqzGrTlscnT
 DlPWgRzrQ3jssesI7sZLm82E3pJSgaUoCdCOlL7MMPCJwI8JpPlBedRpe9tfVyfu3euTPLPx
 wcV3L/cfWPGSL4PofBtB8NUU6QwYiQ9Hzx4xOyn67zW73/G0Q2vPPRst8LBDqlxLjbtx/WLR
 6h3nBc3eyuZ+q62HS1pJ5EvUT1vjyJ1ySrqtUXWQ4XlZyoEFUfpJxJoN0A9HCxmHGVckzTRl
 5FMWo8TCniHynNXsBtDQbabt7aNEOaAJdE7to0AH3T/Bvwzcp0ZJtBk0EM6YeMLtotUut7h2
 Bkg1b//r6bTBswMBXVJ5H44Qf0+eKeUg7whSC9qpYOzzrm7+0r9F5u3qF8ZTx55TJc2g656C
 9a1P1MYVysLvkLvS4H+crmxA/i08Tc1h+x9RRvqba4lSzZ6/Tmt60DPM5Sc4R0nSm9BBff0N
 m0bSNRS8InXdO1Aq3362QKX2NOwcL5YaStwODNyZUqF7izjK4QARAQABzTxEZW1pIE1hcmll
 IE9iZW5vdXIgKGxvdmVyIG9mIGNvZGluZykgPGRlbWlvYmVub3VyQGdtYWlsLmNvbT7CwXgE
 EwECACIFAlp+A0oCGwMGCwkIBwMCBhUIAgkKCwQWAgMBAh4BAheAAAoJELKItV//nCLBhr8Q
 AK/xrb4wyi71xII2hkFBpT59ObLN+32FQT7R3lbZRjVFjc6yMUjOb1H/hJVxx+yo5gsSj5LS
 9AwggioUSrcUKldfA/PKKai2mzTlUDxTcF3vKx6iMXKA6AqwAw4B57ZEJoMM6egm57TV19kz
 PMc879NV2nc6+elaKl+/kbVeD3qvBuEwsTe2Do3HAAdrfUG/j9erwIk6gha/Hp9yZlCnPTX+
 VK+xifQqt8RtMqS5R/S8z0msJMI/ajNU03kFjOpqrYziv6OZLJ5cuKb3bZU5aoaRQRDzkFIR
 6aqtFLTohTo20QywXwRa39uFaOT/0YMpNyel0kdOszFOykTEGI2u+kja35g9TkH90kkBTG+a
 EWttIht0Hy6YFmwjcAxisSakBuHnHuMSOiyRQLu43ej2+mDWgItLZ48Mu0C3IG1seeQDjEYP
 tqvyZ6bGkf2Vj+L6wLoLLIhRZxQOedqArIk/Sb2SzQYuxN44IDRt+3ZcDqsPppoKcxSyd1Ny
 2tpvjYJXlfKmOYLhTWs8nwlAlSHX/c/jz/ywwf7eSvGknToo1Y0VpRtoxMaKW1nvH0OeCSVJ
 itfRP7YbiRVc2aNqWPCSgtqHAuVraBRbAFLKh9d2rKFB3BmynTUpc1BQLJP8+D5oNyb8Ts4x
 Xd3iV/uD8JLGJfYZIR7oGWFLP4uZ3tkneDfYzsFNBFp+A0oBEAC9ynZI9LU+uJkMeEJeJyQ/
 8VFkCJQPQZEsIGzOTlPnwvVna0AS86n2Z+rK7R/usYs5iJCZ55/JISWd8xD57ue0eB47bcJv
 VqGlObI2DEG8TwaW0O0duRhDgzMEL4t1KdRAepIESBEA/iPpI4gfUbVEIEQuqdqQyO4GAe+M
 kD0Hy5JH/0qgFmbaSegNTdQg5iqYjRZ3ttiswalql1/iSyv1WYeC1OAs+2BLOAT2NEggSiVO
 txEfgewsQtCWi8H1SoirakIfo45Hz0tk/Ad9ZWh2PvOGt97Ka85o4TLJxgJJqGEnqcFUZnJJ
 riwoaRIS8N2C8/nEM53jb1sH0gYddMU3QxY7dYNLIUrRKQeNkF30dK7V6JRH7pleRlf+wQcN
 fRAIUrNlatj9TxwivQrKnC9aIFFHEy/0mAgtrQShcMRmMgVlRoOA5B8RTulRLCmkafvwuhs6
 dCxN0GNAORIVVFxjx9Vn7OqYPgwiofZ6SbEl0hgPyWBQvE85klFLZLoj7p+joDY1XNQztmfA
 rnJ9x+YV4igjWImINAZSlmEcYtd+xy3Li/8oeYDAqrsnrOjb+WvGhCykJk4urBog2LNtcyCj
 kTs7F+WeXGUo0NDhbd3Z6AyFfqeF7uJ3D5hlpX2nI9no/ugPrrTVoVZAgrrnNz0iZG2DVx46
 x913pVKHl5mlYQARAQABwsFfBBgBAgAJBQJafgNKAhsMAAoJELKItV//nCLBwNIP/AiIHE8b
 oIqReFQyaMzxq6lE4YZCZNj65B/nkDOvodSiwfwjjVVE2V3iEzxMHbgyTCGA67+Bo/d5aQGj
 gn0TPtsGzelyQHipaUzEyrsceUGWYoKXYyVWKEfyh0cDfnd9diAm3VeNqchtcMpoehETH8fr
 RHnJdBcjf112PzQSdKC6kqU0Q196c4Vp5HDOQfNiDnTf7gZSj0BraHOByy9LEDCLhQiCmr+2
 E0rW4tBtDAn2HkT9uf32ZGqJCn1O+2uVfFhGu6vPE5qkqrbSE8TG+03H8ecU2q50zgHWPdHM
 OBvy3EhzfAh2VmOSTcRK+tSUe/u3wdLRDPwv/DTzGI36Kgky9MsDC5gpIwNbOJP2G/q1wT1o
 Gkw4IXfWv2ufWiXqJ+k7HEi2N1sree7Dy9KBCqb+ca1vFhYPDJfhP75I/VnzHVssZ/rYZ9+5
 1yDoUABoNdJNSGUYl+Yh9Pw9pE3Kt4EFzUlFZWbE4xKL/NPno+z4J9aWemLLszcYz/u3XnbO
 vUSQHSrmfOzX3cV4yfmjM5lewgSstoxGyTx2M8enslgdXhPthZlDnTnOT+C+OTsh8+m5tos8
 HQjaPM01MKBiAqdPgksm1wu2DrrwUi6ChRVTUBcj6+/9IJ81H2P2gJk3Ls3AVIxIffLoY34E
 +MYSfkEjBz0E8CLOcAw7JIwAaeBT
In-Reply-To: <b8d04414-18b5-40f7-9ea2-88b30ff5bea0@amd.com>

--------------FoCuIYfAKM7AmMdOnB0smfE5
Content-Type: multipart/mixed; boundary="------------OSrLV2efYOWdGoySTNAye0Q0"

--------------OSrLV2efYOWdGoySTNAye0Q0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: quoted-printable

On 4/16/26 05:57, Christian K=C3=B6nig wrote:
> On 4/16/26 01:27, Demi Marie Obenour wrote:
>> Is it safe to assume that if a dmabuf exporter cannot handle
>> non-revocable, pinned importers, it will fail the import?  Or is
>> using dma_buf_pin() unsafe if one does not know the exporter?
>=20
> Neither.
>=20
> dma_buf_pin() makes sure that the importer doesn't get any invalidation=
 notifications because the exporter moves the backing store of the buffer=
 around for memory management.
>=20
> But what is still possible is that the exporter is hot removed, in whic=
h case the importer should basically terminate it's DMA operation as soon=
 as possible.
>=20
> GPU drivers usually reject pin requests to VRAM from DMA-buf importers =
when that isn't restricted by cgroups for example, because that can other=
wise easily result in a deny of service.
>=20
> Amdgpu only recently started to allow pinning into VRAM to support RDMA=
 without ODP (I think it was ODP, but could be that I mixed up the RDMA t=
hree letter code for that feature).
>=20
>> For context, Xen grant tables do not support revocation.  One can ask
>> the guest to unmap the grants, but if the guest doesn't obey the only
>> recourse is to ungracefully kill it.  They also do not support page
>> faults, so the pages must be pinned.  Right now, grant tables don't
>> support PCI BAR mappings, but that's fixable.
>=20
> That sounds like an use case for the DMA-buf pin interface.
>=20
>> How badly is this going to break with dGPU VRAM, if at all?  I know
>> that AMDGPU has a fallback when the BAR isn't mappable.  What about
>> other drivers?  Supporting page faults the way KVM does is going to
>> be extremely hard, so pinned mappings and DMA transfers are vastly
>> preferable.
>=20
> Well if you only want to share a fixed amount of VRAM then that is pret=
ty much ok.
>=20
> But when the client VM can trigger pinning on demand without any limita=
tion you can pretty easily have deny of service against the host. That is=
 usually a rather bad idea.

Is there a reasonable way to choose such an amount?  Unless I am
mistaken, client workloads are highly non-uniform: a single game or
compute job might well use more VRAM than every other program on the
system combined.  Are these workloads impossible to make work well
with pinning?
--=20
Sincerely,
Demi Marie Obenour (she/her/hers)
--------------OSrLV2efYOWdGoySTNAye0Q0
Content-Type: application/pgp-keys; name="OpenPGP_0xB288B55FFF9C22C1.asc"
Content-Disposition: attachment; filename="OpenPGP_0xB288B55FFF9C22C1.asc"
Content-Description: OpenPGP public key
Content-Transfer-Encoding: quoted-printable

-----BEGIN PGP PUBLIC KEY BLOCK-----

xsFNBFp+A0oBEADffj6anl9/BHhUSxGTICeVl2tob7hPDdhHNgPR4C8xlYt5q49y
B+l2nipdaq+4Gk6FZfqC825TKl7eRpUjMriwle4r3R0ydSIGcy4M6eb0IcxmuPYf
bWpr/si88QKgyGSVZ7GeNW1UnzTdhYHuFlk8dBSmB1fzhEYEk0RcJqg4AKoq6/3/
UorR+FaSuVwT7rqzGrTlscnTDlPWgRzrQ3jssesI7sZLm82E3pJSgaUoCdCOlL7M
MPCJwI8JpPlBedRpe9tfVyfu3euTPLPxwcV3L/cfWPGSL4PofBtB8NUU6QwYiQ9H
zx4xOyn67zW73/G0Q2vPPRst8LBDqlxLjbtx/WLR6h3nBc3eyuZ+q62HS1pJ5EvU
T1vjyJ1ySrqtUXWQ4XlZyoEFUfpJxJoN0A9HCxmHGVckzTRl5FMWo8TCniHynNXs
BtDQbabt7aNEOaAJdE7to0AH3T/Bvwzcp0ZJtBk0EM6YeMLtotUut7h2Bkg1b//r
6bTBswMBXVJ5H44Qf0+eKeUg7whSC9qpYOzzrm7+0r9F5u3qF8ZTx55TJc2g656C
9a1P1MYVysLvkLvS4H+crmxA/i08Tc1h+x9RRvqba4lSzZ6/Tmt60DPM5Sc4R0nS
m9BBff0Nm0bSNRS8InXdO1Aq3362QKX2NOwcL5YaStwODNyZUqF7izjK4QARAQAB
zTxEZW1pIE9iZW5vdXIgKElUTCBFbWFpbCBLZXkpIDxhdGhlbmFAaW52aXNpYmxl
dGhpbmdzbGFiLmNvbT7CwY4EEwEIADgWIQR2h02fEza6IlkHHHGyiLVf/5wiwQUC
X6YJvQIbAwULCQgHAgYVCgkICwIEFgIDAQIeAQIXgAAKCRCyiLVf/5wiwWRhD/0Y
R+YYC5Kduv/2LBgQJIygMsFiRHbR4+tWXuTFqgrxxFSlMktZ6gQrQCWe38WnOXkB
oY6n/5lSJdfnuGd2UagZ/9dkaGMUkqt+5WshLFly4BnP7pSsWReKgMP7etRTwn3S
zk1OwFx2lzY1EnnconPLfPBc6rWG2moA6l0WX+3WNR1B1ndqpl2hPSjT2jUCBWDV
rGOUSX7r5f1WgtBeNYnEXPBCUUM51pFGESmfHIXQrqFDA7nBNiIVFDJTmQzuEqIy
Jl67pKNgooij5mKzRhFKHfjLRAH4mmWZlB9UjDStAfFBAoDFHwd1HL5VQCNQdqEc
/9lZDApqWuCPadZN+pGouqLysesIYsNxUhJ7dtWOWHl0vs7/3qkWmWun/2uOJMQh
ra2u8nA9g91FbOobWqjrDd6x3ZJoGQf4zLqjmn/P514gb697788e573WN/MpQ5XI
Fl7aM2d6/GJiq6LC9T2gSUW4rbPBiqOCeiUx7Kd/sVm41p9TOA7fEG4bYddCfDsN
xaQJH6VRK3NOuBUGeL+iQEVF5Xs6Yp+U+jwvv2M5Lel3EqAYo5xXTx4ls0xaxDCu
fudcAh8CMMqx3fguSb7Mi31WlnZpk0fDuWQVNKyDP7lYpwc4nCCGNKCj622ZSocH
AcQmX28L8pJdLYacv9pU3jPy4fHcQYvmTavTqowGnM08RGVtaSBNYXJpZSBPYmVu
b3VyIChsb3ZlciBvZiBjb2RpbmcpIDxkZW1pb2Jlbm91ckBnbWFpbC5jb20+wsF4
BBMBAgAiBQJafgNKAhsDBgsJCAcDAgYVCAIJCgsEFgIDAQIeAQIXgAAKCRCyiLVf
/5wiwYa/EACv8a2+MMou9cSCNoZBQaU+fTmyzft9hUE+0d5W2UY1RY3OsjFIzm9R
/4SVccfsqOYLEo+S0vQMIIIqFEq3FCpXXwPzyimotps05VA8U3Bd7yseojFygOgK
sAMOAee2RCaDDOnoJue01dfZMzzHPO/TVdp3OvnpWipfv5G1Xg96rwbhMLE3tg6N
xwAHa31Bv4/Xq8CJOoIWvx6fcmZQpz01/lSvsYn0KrfEbTKkuUf0vM9JrCTCP2oz
VNN5BYzqaq2M4r+jmSyeXLim922VOWqGkUEQ85BSEemqrRS06IU6NtEMsF8EWt/b
hWjk/9GDKTcnpdJHTrMxTspExBiNrvpI2t+YPU5B/dJJAUxvmhFrbSIbdB8umBZs
I3AMYrEmpAbh5x7jEjoskUC7uN3o9vpg1oCLS2ePDLtAtyBtbHnkA4xGD7ar8mem
xpH9lY/i+sC6CyyIUWcUDnnagKyJP0m9ks0GLsTeOCA0bft2XA6rD6aaCnMUsndT
ctrab42CV5XypjmC4U1rPJ8JQJUh1/3P48/8sMH+3krxpJ06KNWNFaUbaMTGiltZ
7x9DngklSYrX0T+2G4kVXNmjaljwkoLahwLla2gUWwBSyofXdqyhQdwZsp01KXNQ
UCyT/Pg+aDcm/E7OMV3d4lf7g/CSxiX2GSEe6BlhSz+Lmd7ZJ3g32M1ARGVtaSBN
YXJpZSBPYmVub3VyIChJVEwgRW1haWwgS2V5KSA8ZGVtaUBpbnZpc2libGV0aGlu
Z3NsYWIuY29tPsLBjgQTAQgAOBYhBHaHTZ8TNroiWQcccbKItV//nCLBBQJgOEV+
AhsDBQsJCAcCBhUKCQgLAgQWAgMBAh4BAheAAAoJELKItV//nCLBKwoP/1WSnFdv
SAD0g7fD0WlF+oi7ISFT7oqJnchFLOwVHK4Jg0e4hGn1ekWsF3Ha5tFLh4V/7UUu
obYJpTfBAA2CckspYBqLtKGjFxcaqjjpO1I2W/jeNELVtSYuCOZICjdNGw2Hl9yH
KRZiBkqc9u8lQcHDZKq4LIpVJj6ZQV/nxttDX90ax2No1nLLQXFbr5wb465LAPpU
lXwunYDij7xJGye+VUASQh9datye6orZYuJvNo8Tr3mAQxxkfR46LzWgxFCPEAZJ
5P56Nc0IMHdJZj0Uc9+1jxERhOGppp5jlLgYGK7faGB/jTV6LaRQ4Ad+xiqokDWp
mUOZsmA+bMbtPfYjDZBz5mlyHcIRKIFpE1l3Y8F7PhJuzzMUKkJi90CYakCV4x/a
Zs4pzk5E96c2VQx01RIEJ7fzHF7lwFdtfTS4YsLtAbQFsKayqwkGcVv2B1AHeqdo
TMX+cgDvjd1ZganGlWA8Sv9RkNSMchn1hMuTwERTyFTr2dKPnQdA1F480+jUap41
ClXgn227WkCIMrNhQGNyJsnwyzi5wS8rBVRQ3BOTMyvGM07j3axUOYaejEpg7wKi
wTPZGLGH1sz5GljD/916v5+v2xLbOo5606j9dWf5/tAhbPuqrQgWv41wuKDi+dDD
EKkODF7DHes8No+QcHTDyETMn1RYm7t0RKR4zsFNBFp+A0oBEAC9ynZI9LU+uJkM
eEJeJyQ/8VFkCJQPQZEsIGzOTlPnwvVna0AS86n2Z+rK7R/usYs5iJCZ55/JISWd
8xD57ue0eB47bcJvVqGlObI2DEG8TwaW0O0duRhDgzMEL4t1KdRAepIESBEA/iPp
I4gfUbVEIEQuqdqQyO4GAe+MkD0Hy5JH/0qgFmbaSegNTdQg5iqYjRZ3ttiswalq
l1/iSyv1WYeC1OAs+2BLOAT2NEggSiVOtxEfgewsQtCWi8H1SoirakIfo45Hz0tk
/Ad9ZWh2PvOGt97Ka85o4TLJxgJJqGEnqcFUZnJJriwoaRIS8N2C8/nEM53jb1sH
0gYddMU3QxY7dYNLIUrRKQeNkF30dK7V6JRH7pleRlf+wQcNfRAIUrNlatj9Txwi
vQrKnC9aIFFHEy/0mAgtrQShcMRmMgVlRoOA5B8RTulRLCmkafvwuhs6dCxN0GNA
ORIVVFxjx9Vn7OqYPgwiofZ6SbEl0hgPyWBQvE85klFLZLoj7p+joDY1XNQztmfA
rnJ9x+YV4igjWImINAZSlmEcYtd+xy3Li/8oeYDAqrsnrOjb+WvGhCykJk4urBog
2LNtcyCjkTs7F+WeXGUo0NDhbd3Z6AyFfqeF7uJ3D5hlpX2nI9no/ugPrrTVoVZA
grrnNz0iZG2DVx46x913pVKHl5mlYQARAQABwsFfBBgBAgAJBQJafgNKAhsMAAoJ
ELKItV//nCLBwNIP/AiIHE8boIqReFQyaMzxq6lE4YZCZNj65B/nkDOvodSiwfwj
jVVE2V3iEzxMHbgyTCGA67+Bo/d5aQGjgn0TPtsGzelyQHipaUzEyrsceUGWYoKX
YyVWKEfyh0cDfnd9diAm3VeNqchtcMpoehETH8frRHnJdBcjf112PzQSdKC6kqU0
Q196c4Vp5HDOQfNiDnTf7gZSj0BraHOByy9LEDCLhQiCmr+2E0rW4tBtDAn2HkT9
uf32ZGqJCn1O+2uVfFhGu6vPE5qkqrbSE8TG+03H8ecU2q50zgHWPdHMOBvy3Ehz
fAh2VmOSTcRK+tSUe/u3wdLRDPwv/DTzGI36Kgky9MsDC5gpIwNbOJP2G/q1wT1o
Gkw4IXfWv2ufWiXqJ+k7HEi2N1sree7Dy9KBCqb+ca1vFhYPDJfhP75I/VnzHVss
Z/rYZ9+51yDoUABoNdJNSGUYl+Yh9Pw9pE3Kt4EFzUlFZWbE4xKL/NPno+z4J9aW
emLLszcYz/u3XnbOvUSQHSrmfOzX3cV4yfmjM5lewgSstoxGyTx2M8enslgdXhPt
hZlDnTnOT+C+OTsh8+m5tos8HQjaPM01MKBiAqdPgksm1wu2DrrwUi6ChRVTUBcj
6+/9IJ81H2P2gJk3Ls3AVIxIffLoY34E+MYSfkEjBz0E8CLOcAw7JIwAaeBTzsFN
BGbyLVgBEACqClxh50hmBepTSVlan6EBq3OAoxhrAhWZYEwN78k+ENhK68KhqC5R
IsHzlL7QHW1gmfVBQZ63GnWiraM6wOJqFTL4ZWvRslga9u28FJ5XyK860mZLgYhK
9BzoUk4s+dat9jVUbq6LpQ1Ot5I9vrdzo2p1jtQ8h9WCIiFxSYy8s8pZ3hHh5T64
GIj1m/kY7lG3VIdUgoNiREGf/iOMjUFjwwE9ZoJ26j9p7p1U+TkKeF6wgswEB1T3
J8KCAtvmRtqJDq558IU5jhg5fgN+xHB8cgvUWulgK9FIF9oFxcuxtaf/juhHWKMO
RtL0bHfNdXoBdpUDZE+mLBUAxF6KSsRrvx6AQyJs7VjgXJDtQVWvH0PUmTrEswgb
49nNU+dLLZQAZagxqnZ9Dp5l6GqaGZCHERJcLmdY/EmMzSf5YazJ6c0vO8rdW27M
kn73qcWAplQn5mOXaqbfzWkAUPyUXppuRHfrjxTDz3GyJJVOeMmMrTxH4uCaGpOX
Z8tN6829J1roGw4oKDRUQsaBAeEDqizXMPRc+6U9vI5FXzbAsb+8lKW65G7JWHym
YPOGUt2hK4DdTA1PmVo0DxH00eWWeKxqvmGyX+Dhcg+5e191rPsMRGsDlH6KihI6
+3JIuc0y6ngdjcp6aalbuvPIGFrCRx3tnRtNc7He6cBWQoH9RPwluwARAQABwsOs
BBgBCgAgFiEEdodNnxM2uiJZBxxxsoi1X/+cIsEFAmbyLVgCGwICQAkQsoi1X/+c
IsHBdCAEGQEKAB0WIQSilC2pUlbVp66j3+yzNoc6synyUwUCZvItWAAKCRCzNoc6
synyU85gD/0T1QDtPhovkGwoqv4jUbEMMvpeYQf+oWgm/TjWPeLwdjl7AtY0G9Ml
ZoyGniYkoHi37Gnn/ShLT3B5vtyI58ap2+SSa8SnGftdAKRLiWFWCiAEklm9FRk8
N3hwxhmSFF1KR/AIDS4g+HIsZn7YEMubBSgLlZZ9zHl4O4vwuXlREBEW97iL/FSt
VownU2V39t7PtFvGZNk+DJH7eLO3jmNRYB0PL4JOyyda3NH/J92iwrFmjFWWmmWb
/Xz8l9DIs+Z59pRCVTTwbBEZhcUc7rVMCcIYL+q1WxBG2e6lMn15OQJ5WfiE6E0I
sGirAEDnXWx92JNGx5l+mMpdpsWhBZ5iGTtttZesibNkQfd48/eCgFi4cxJUC4PT
UQwfD9AMgzwSTGJrkI5XGy+XqxwOjL8UA0iIrtTpMh49zw46uV6kwFQCgkf32jZM
OLwLTNSzclbnA7GRd8tKwezQ/XqeK3dal2n+cOr+o+Eka7yGmGWNUqFbIe8cjj9T
JeF3mgOCmZOwMI+wIcQYRSf+e5VTMO6TNWH5BI3vqeHSt7HkYuPlHT0pGum88d4a
pWqhulH4rUhEMtirX1hYx8Q4HlUOQqLtxzmwOYWkhl1C+yPObAvUDNiHCLf9w28n
uihgEkzHt9J4VKYulyJM9fe3ENcyU6rpXD7iANQqcr87ogKXFxknZ97uEACvSucc
RbnnAgRqZ7GDzgoBerJ2zrmhLkeREZ08iz1zze1JgyW3HEwdr2UbyAuqvSADCSUU
GN0vtQHsPzWl8onRc7lOPqPDF8OO+UfN9NAfA4wl3QyChD1GXl9rwKQOkbvdlYFV
UFx9u86LNi4ssTmU8p9NtHIGpz1SYMVYNoYy9NU7EVqypGMguDCL7gJt6GUmA0sw
p+YCroXiwL2BJ7RwRqTpgQuFL1gShkA17D5jK4mDPEetq1d8kz9rQYvAR/sTKBsR
ImC3xSfn8zpWoNTTB6lnwyP5Ng1bu6esS7+SpYprFTe7ZqGZF6xhvBPf1Ldi9UAm
U2xPN1/eeWxEa2kusidmFKPmN8lcT4miiAvwGxEnY7Oww9CgZlUB+LP4dl5VPjEt
sFeAhrgxLdpVTjPRRwTd9VQF3/XYl83j5wySIQKIPXgT3sG3ngAhDhC8I8GpM36r
8WJJ3x2yVzyJUbBPO0GBhWE2xPNIfhxVoU4cGGhpFqz7dPKSTRDGq++MrFgKKGpI
ZwT3CPTSSKc7ySndEXWkOYArDIdtyxdE1p5/c3aoz4utzUU7NDHQ+vVIwlnZSMiZ
jek2IJP3SZ+COOIHCVxpUaZ4lnzWT4eDqABhMLpIzw6NmGfg+kLBJhouqz81WITr
EtJuZYM5blWncBOJCoWMnBEcTEo/viU3GgcVRw=3D=3D
=3Dx94R
-----END PGP PUBLIC KEY BLOCK-----

--------------OSrLV2efYOWdGoySTNAye0Q0--

--------------FoCuIYfAKM7AmMdOnB0smfE5--

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

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

iQIzBAEBCgAdFiEEopQtqVJW1aeuo9/sszaHOrMp8lMFAmnhCrwACgkQszaHOrMp
8lOFbw//fphFbdgO6aTfImk7b9BpxgwIl2B7NcoyXrF7iPDp4cwDc7IOOFFeZ5NM
WrR10hFLcxNtDjM3zhNnWbf/N5wwmgM8wiyWADAAJdnKcOxyqP6SK5Rdhl1Ckvoz
lgsHw+5SAyRhXLaHnkGKZfcjo6jHjgim3EmltybwyVzdLvgmNRvHbn6AxC4uMR1y
pVD+jxs4lCb2zBOEkhIBC3cIQ/wfUBRhsufqy29zwmP0S2bmkKWehYVhWWDm4Lyh
d6bzXSbzZXo7keLVblci0N5r6B34XC4wbroghZAzjJk55OGgRFhWMXmPxg8tm7FR
9lMDE9+/pe2r8/kIkhvxHC6zf5kHO+4LxhshXFmRzQ6RwU9iqGVohJQsuUMy+uze
pNi2l9PqSTroleiQmsKVG1donp1rTjNQe6TS0BSHX2Cg6Q3Bjuyg6xvYq+U1rIud
8Ufc4TJsiNYig8oJdhnnwM5zsCqtUjLyKGASRXe14glxB374xIC3oZWOJFb7uhzq
WuKXUCcu31wnc1hGbdpAL1kJzHV3RCTDZrPWX6MPAca2dNFig6NXEIINy1aN55cl
pFwDtWDiPmeJxCWQXo1RuV6dgA6hNvW8477KUlutS5DO5pMu1nW/sXE6Qwgo7bEI
o7kcj9LlEkwLYf3/rUJk+P+rHax1BfrPjZX4DBmGjdFmV2CihsI=
=Mx8Q
-----END PGP SIGNATURE-----

--------------fKtr6APMKplfqUUUg4ENHwUG--


From xen-devel-bounces@lists.xenproject.org Thu Apr 16 23:49:02 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 16 Apr 2026 23:49:02 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1283910.1565927 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wDWRx-0000nL-Q3; Thu, 16 Apr 2026 23:48:45 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1283910.1565927; Thu, 16 Apr 2026 23:48: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 1wDWRx-0000n1-K5; Thu, 16 Apr 2026 23:48:45 +0000
Received: by outflank-mailman (input) for mailman id 1283910;
 Thu, 16 Apr 2026 23:48:44 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <bernhard.kaindl@citrix.com>) id 1wDWRw-0000mv-7f
 for xen-devel@lists.xenproject.org; Thu, 16 Apr 2026 23:48:44 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wDWRv-007Hvt-KZ
 for xen-devel@lists.xenproject.org; Fri, 17 Apr 2026 01:48:43 +0200
Received: from [10.42.69.11] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <bernhard.kaindl@citrix.com>)
 id 69e1752a-bab6-0a2a0a5309dd-0a2a450bbc34-36
 for <xen-devel@lists.xenproject.org>; Fri, 17 Apr 2026 01:48:43 +0200
Received: from [52.101.43.67]
 (helo=SJ2PR03CU001.outbound.protection.outlook.com)
 by tlsNG-42698a.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.1)
 (envelope-from <bernhard.kaindl@citrix.com>)
 id 69e17559-212f-0a2a450b0019-34652b43700f-3
 for <xen-devel@lists.xenproject.org>; Fri, 17 Apr 2026 01:48:43 +0200
Received: from LV3PR03MB7707.namprd03.prod.outlook.com (2603:10b6:408:28b::21)
 by SA0PR03MB5658.namprd03.prod.outlook.com (2603:10b6:806:c0::5) with
 Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9769.44; Thu, 16 Apr
 2026 23:48:39 +0000
Received: from LV3PR03MB7707.namprd03.prod.outlook.com
 ([fe80::97e8:ef9c:9031:e2bf]) by LV3PR03MB7707.namprd03.prod.outlook.com
 ([fe80::97e8:ef9c:9031:e2bf%6]) with mapi id 15.20.9818.023; Thu, 16 Apr 2026
 23:48: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=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=o1Ztp8WSKDUK9XnxzC/YNJlTEccLtorgKqh3sRBiO3NHk3G69xG7gWvRxwnIp1oPpobCjIxKtFjUG4g77ngLUrFnY05mgNKDBuh1fbhKF0KVbUwOtJamnkgZNAKGahvSEJfpdiUCnEQjFBmmeE7F7b2mlSrcKf6xolUpauyR6WQI5+Yuvf/9pgGhfBkiP9C6qvBRQA+mMPBT240s9anbQK1PHZFNACxThPcUsSAjN+qsaMxyUES5RNFTKbRXb5FHW3VmUDOjoD74dUiMkZEJJAOEf5isuqctgEGThaFJgQe4fbi283//Hdy2WpYdG/ZaI4dOrakcJvSHZabmne4sWw==
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com;
 s=arcselector10001;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1;
 bh=BV97ZyoIliXkR1/EiuiCiASjWioXeXJYUap5tXGwMPA=;
 b=JTHRw3ERPPx0JQOWmexxePDDZsjR/DXhzDOH9h2udR7srAtgDDcXOGnNgBoxmTrftrNTlGBxoA+hFG3Q1qMzwfzajH8Sn3ZsZaNiTDstX5oJ6vBjN6lPZo4bI/El+XRO2TSsBnJcdskYNQsxXiZ/hXhMpC+2R2qMaMGlj1u6/B9CIZHYdH2Js0d0P29MflaL6H0VO3lWEmujyJJSsFAUf9BsUR8u5Ghz6JnbUd0v+ChLEXLIEqV7vKLubYVAJGVb8QX+ecM7fbVtij1DrqvDvztrglgDDHqtcjKHqglAzwN7+jIhfawPpR8fS0wmzD7vtjz0j0iiuJj8KRpv72fcZw==
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=BV97ZyoIliXkR1/EiuiCiASjWioXeXJYUap5tXGwMPA=;
 b=q7x3MBEeLgB4idXmwKhX6zaCXMr1sFS+7CT2mqgNdHRRXin4gRJO05bjd+g6oRKwbFMizUmwKbcLTnXToAxPweqjjBbs03iD2S/utBUteX6zBWt35zA2hmbSqDpri0nzdXyo2NC4Y4vzIejDE0HXKB2pxu5a4QfN7Iz/Wxqyy9k=
From: Bernhard Kaindl <bernhard.kaindl@citrix.com>
To: Jan Beulich <jbeulich@suse.com>
CC: Andrew Cooper <andrew.cooper@citrix.com>, Anthony PERARD
	<anthony.perard@vates.tech>, Michal Orzel <michal.orzel@amd.com>, Julien
 Grall <julien@xen.org>, Roger Pau Monne <roger.pau@citrix.com>, 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 05/10] xen/domain: Add DOMCTL handler for claiming
 memory with NUMA awareness
Thread-Topic: [PATCH v4 05/10] xen/domain: Add DOMCTL handler for claiming
 memory with NUMA awareness
Thread-Index: AQHcpy8NKyz6wh/Wrk6CsdW/rK3ShrWf2LiAgAAdICCAQZUugIABBMnw
Date: Thu, 16 Apr 2026 23:48:38 +0000
Message-ID:
 <LV3PR03MB7707EA3CB86C2D3D16D001CF87232@LV3PR03MB7707.namprd03.prod.outlook.com>
References: <cover.1772098423.git.bernhard.kaindl@citrix.com>
 <b2c94f0c3b41976b2691ce15b9f9a2589370e65a.1772098423.git.bernhard.kaindl@citrix.com>
 <7d439bb1-7381-4fa4-af79-423e8c7fafb1@suse.com>
 <LV3PR03MB7707A579E5CBD292B127995C87252@LV3PR03MB7707.namprd03.prod.outlook.com>
 <589b36fe-946d-4a34-8227-a4dc558db304@suse.com>
In-Reply-To: <589b36fe-946d-4a34-8227-a4dc558db304@suse.com>
Accept-Language: en-GB, en-US
Content-Language: en-GB
X-MS-Has-Attach:
X-MS-TNEF-Correlator:
authentication-results: dkim=none (message not signed)
 header.d=none;dmarc=none action=none header.from=citrix.com;
x-ms-publictraffictype: Email
x-ms-traffictypediagnostic: LV3PR03MB7707:EE_|SA0PR03MB5658:EE_
x-ms-office365-filtering-correlation-id: 5c07b66d-2220-4ba5-a77a-08de9c12aec0
x-ms-exchange-senderadcheck: 1
x-ms-exchange-antispam-relay: 0
x-microsoft-antispam:
 BCL:0;ARA:13230040|366016|1800799024|376014|22082099003|38070700021|56012099003|18002099003;
x-microsoft-antispam-message-info:
 ZG31PbO6Aqzd183mXDZNPNkuCD3Xvi29QD7dcLea3zir1xzzJIzjOvq3fUbykdvB56wXJEC+Nk4ZRI/GHAuNiicSV9PvvF2GhP0eSrtengMqnDKjhBUxr/Nu7VLOd60dfQQJ9RbZ622N7pMGKYKpQzlmUvE0CllhjAO3N09UTbwY8U7rop3GBFXifTJ41KGHPBAGdMIdT8ZRTz3KP631opMrz/npw3EAi2wKPQtRfpwNVJBLWNf+WUbcAAC6cl8k/tRlcg0EwfUydZg35XyheXeUZBEXbAnQh9TZ+Yf06w4vwnVc6ce5srhHOyh2y9uZ4nTrr3nbNI/k54T52sIAl+LO755OraU7mT1isV+EsfK1QHw3DSRwxzPyjox7Y9Z8tI2S3r0Aee38vYjlktkNgbbACeRzqQQkmb8g95kBBh3ps+q5F4nJ2lSAratoUE63IMPhSkZyzbrrF2Y2c627zIhzPiirABjvZuSQTphF9qShLTjAFnmuPC5+1F3CdlRdrpWr7FtbZ73rfDnza6a54LmRjvoPq6Ry2Ehh0Fla7PquuEay+sVgrTKwJO/vu0dJSfSGxOa54P305gzFBaPiz7jiO26SF/wz1og3+Kww3xBwF2FmREcnmQ4W1AK6z1Wf8gWapoRSqfRTo0kLz614HTKjt59QnHF0PqnZ9KQ43HI7q146KGESndJg0/4MmBkEJ1OEijyXQOjVRhKXr9yi9eFXoTOfXgRtjkQXtcyb/6ul3PpnlMLkXoB8l2TpVjhd
x-forefront-antispam-report:
 CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:LV3PR03MB7707.namprd03.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(366016)(1800799024)(376014)(22082099003)(38070700021)(56012099003)(18002099003);DIR:OUT;SFP:1101;
x-ms-exchange-antispam-messagedata-chunkcount: 1
x-ms-exchange-antispam-messagedata-0:
 =?utf-8?B?bkNweFM3Q0MzU2YraDA0bExIQmpvUlk3aEgxV3JkR0JNVmpEOE40Y0tUR01t?=
 =?utf-8?B?RVBxV1pRN0xxcGg0VG1rcFh6Y0VrVnUwNERGbXFORGxHZUJaTG5CRWZtcGVO?=
 =?utf-8?B?cXJYUXpNNmNaYjFkbFdzN3V0Q1dUUnpDZmczSWt4WnhKYUtpS01ySlFQSjBr?=
 =?utf-8?B?aVI3YjhaYUlZSEgrRmRDVjg1eW5TV1BCSExxZUcxZkFGN0FQc0VuRFVpS3FY?=
 =?utf-8?B?RUd6S0ordVF0T1gwdk8zV3dnRHB5NEdOY200VzEyRXBJbW1MeUI3MnNaTU1P?=
 =?utf-8?B?aFJIRU9LMVVIRndtOTlaOHJBYjZBSkI2RXBYUStCamV4OXJtVVM0d2xCdEUw?=
 =?utf-8?B?YldHRCtaeUx3UUxjWDQ3aHNId0FFS1FsclptTW5rQ3F5RTRLUmcrSmdjNlJa?=
 =?utf-8?B?ZmJJemRJdTU2TnExZ2QvQXEyR2Q3YlNyRjNWQzNpVEtSTzdDbWxNZU1EUTNZ?=
 =?utf-8?B?STdSUVI4Zk43K0VCVWx6WURKOE5vZlVRaUJHSE5lZGRhQzRZR29Kaks3L0pF?=
 =?utf-8?B?OVcza0hPMjlSTUVlRU8rV3FEMnE4U1Zvb3RncnhHZ0tVRVN2anM3RG4ySTBM?=
 =?utf-8?B?dmJEbUpyZTExZUM5cHEwRWRGN2N5b1N4STVMem5NMGtaVU9GWW9ZWldVNFlp?=
 =?utf-8?B?UWEvbzU5ZFJnZFJYditlbGFaTVVTRHp4STl1QmthY1JqMVBWakxHeEk4VnRm?=
 =?utf-8?B?RDNNVDMrQnZFb2MxL2dOMWIvYnliOUNDRzRQamlZbGJzSVZFTkpqcjArTWRJ?=
 =?utf-8?B?dlJkQmV3bzZoL0cxTVJuYzVWa3BDZFdlanlPZHRyQ1FEWmxkWXc3d1E4NTF4?=
 =?utf-8?B?K1g0QlFUaG96d3haSGQyNmZOVjJVWktxcUxTWU01dmQ4ZkFZdjVaTjBnZVdv?=
 =?utf-8?B?bHNpN1krTXZKbFNDRE5PTGlxb3d6dDFxOW1VT1lOQ09mREQzcDEwZjNsVDk0?=
 =?utf-8?B?bkgwY0NUbXBaTmo5ZzJYZzZ3UlA4UEdQNzQrUCtlVXpJbFViOWVJVGwrMWdv?=
 =?utf-8?B?T3lhdUxidS9TWHdjdnEwMkNiS0dRMjV5SmVEOERRSE93SGlWR3I5UTdjbFky?=
 =?utf-8?B?WWl3WEJvcTlrMDY2MElSZWh0ZXdlT3E5cFA3R3hiY0Q4Sm5XL29TRlRMazkw?=
 =?utf-8?B?LzVvUmRjaVdHMVMyS3Y4UlVpK0tLVnJvOTllOEVmR0xFdmZaSGtGSU1iVURS?=
 =?utf-8?B?SWpWOWx3a2RCZE5hUE94MFhoN1JtekFSNnFTend1Rk1YYVJLV0h5RlYzRTYx?=
 =?utf-8?B?WVdzbjdQakQwTlpIUXN4Zml0SVBQV2JoU0EzSGhtVVFhZjVWZlBseFp3Lyta?=
 =?utf-8?B?dzN2L3IyMzgzbFdMUDJHYm5KSWZ4bHZ1OThxamZhVkNSL09aZ0JwRTNaN21n?=
 =?utf-8?B?TU13dTFuTEI3NkF1SWRsZmp0Y20xK3lPdXpwY29UVkhETCt4SUpxS3FLdnEv?=
 =?utf-8?B?YkxoVG5KV1lSVzVMUllsZUREZ1A4anhrR2Z3a25hUktMTU5WZUpOTjEwYkZw?=
 =?utf-8?B?bGsrUndJejZuK3EyZjM3dDY1Vms1TU0wQm9YRU5ZTkZTamEzQ1hFZ0UwM2xz?=
 =?utf-8?B?M0VtcDUya3pucWVCeUl4bW00VTN6RGFzdEF5ejNHcUhTUlBtdVBDNHVocVhs?=
 =?utf-8?B?aFN2VWR1YzM0SWZCL0hkQ3FGd09LQ2dNVTgyUzNhZ2dWeDViMnAyRFAyN09H?=
 =?utf-8?B?WDc3R2VYTUlNUm1BdERqajFSL3BtanloWVp5cXg2bzdzSXR0emw1RDhPVlJJ?=
 =?utf-8?B?MXRVWEtFeExHU1FBQ1FCb3JLMmZhR0s3VXlZQjcrbmVLaC9GbFA4RjRUSm5X?=
 =?utf-8?B?RVNIZ2xHdSs0S1pZeG9tbGpYS2VkZXRZQTBuNnZ3MlZVRnpJR3k2L0pVKytz?=
 =?utf-8?B?M2RpUExxWXgzYWsrRWlXWmRLTmRRZ3lFNzhtekN1eUlnLzFFcjVIOE1ibktD?=
 =?utf-8?B?UktvQXhMcG0yc1AwdU1YdGl1K0JvNS84ekpvL0xoN0RBdEd4QnJYRnZmV2Rh?=
 =?utf-8?B?RlRRb3Flc1p5UGlpVWVTd2I5OEEyeTAzelRKc1RsVFJEMTQzYjU5VzgranJl?=
 =?utf-8?B?ZDJvNGJleE5peUtzWTVnaFJEVDhqWkNwS0hyNGl4S2FYa0FpUUVqZ0twbXE1?=
 =?utf-8?B?V2pMY05BaGQyT0tBR1hORVZ5Mm5BRGpNYW9aOXgwSXkrWUlSOEdzSXRGYVM1?=
 =?utf-8?B?RjVmNllGMEpwQys5SG5nSG04QlgySlRIZmdTaFhvbTVtZkttRTBRZFNLeXF5?=
 =?utf-8?B?TWpUSHdmTWR4SmN5Ni9aZTk5VmlVRTJZM2dvcHBlb09lOER2QTF5M1NHV2VI?=
 =?utf-8?B?UzlLU3RUdEphTWJZVllBSG1RZDNYSDJRc1JzOGFQdy9ueU9naG9KUT09?=
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: LV3PR03MB7707.namprd03.prod.outlook.com
X-MS-Exchange-CrossTenant-Network-Message-Id: 5c07b66d-2220-4ba5-a77a-08de9c12aec0
X-MS-Exchange-CrossTenant-originalarrivaltime: 16 Apr 2026 23:48:38.7874
 (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: 8ei8VQYkgQXcrg8WcMGkCY6IFq1o6j2jCf1vy8fxCq8Nu40zQvy7ZXsphssuVPUEq6ip1ckuHssiPATyroC59TYrC4i4bVh3CIOzePlPGdw=
X-MS-Exchange-Transport-CrossTenantHeadersStamped: SA0PR03MB5658
X-purgate-ID: tlsNG-42698a/1776383323-240B6F3B-DECF847D/0/0
X-purgate-type: clean
X-purgate-size: 2866

SGVsbG8gSmFuLA0KDQpJIG9ubHkgcmVwbHkgaGVyZSB0byBhY2tub3dsZWRnZSB5b3VyIGNvbW1l
bnQuIFRoaXMgY29kZSBpcyBvYnNvbGV0ZSBub3c6DQoNCkl0IGlzIGhpc3RvcmljYWwgd2l0aCB2
NiBub3csIHdoZXJlIHdlIGhhdmUgbmV3IGNvZGUgYW5kIGRpZmZlcmVudCBjb25zaWRlcmF0aW9u
cw0KdGhhdCB3b3VsZCBiZSBvZmYgdG9waWMgZm9yIHRoaXMgZGlzY3Vzc2lvbiBvbiB0aGUgb2Jz
b2xldGUgdjQgc2VyaWVzICh0aGUgc2luZ2xlLQ0Kbm9kZSBpbnRlcmZhY2UgZG9lc24ndCBleGlz
dCBpbiB2NiwgdGhlIG5ldyBpbXBsZW1lbnRhdGlvbiBpcyBtdWx0aS1ub2RlKQ0KDQo+ID4+ICsg
ICAgaWYgKCBjbGFpbS5ub2RlID09IFhFTl9ET01DVExfQ0xBSU1fTUVNT1JZX05PX05PREUgKQ0K
PiA+Pj4gKyAgICAgICAgY2xhaW0ubm9kZSA9IE5VTUFfTk9fTk9ERTsNCj4gPj4NCj4gPj4gV2hh
dCBhYm91dCB0aGUgaW5jb21pbmcgY2xhaW0ubm9kZSBiZWluZyBOVU1BX05PX05PREU/IEltbyB0
aGUgcmFuZ2UgY2hlY2tpbmcNCj4gPj4gdGhlIHByZXZpb3VzIHBhdGNoIGFkZHMgdG8gZG9tYWlu
X3NldF9vdXRzdGFuZGluZ19wYWdlcygpIHdhbnRzIHRvIG1vdmUgaGVyZSwNCj4gPj4gYXQgd2hp
Y2ggcG9pbnQgdGhlIGZ1bmN0aW9uJ3MgbmV3IHBhcmFtZXRlciBjb3VsZCBiZSBwcm9wZXJseSBu
b2RlaWRfdC4NCj4gPg0KPiA+IG5vZGVpZF90IGFuZCBOVU1BX05PX05PREUgaGF2ZSAoanVkZ2lu
ZyBieSB0aGUgZXhpc3RpbmcgaW1wbGVtZW50YXRpb24pIGFyZSBub3QNCj4gPiBleHBvc2VkIGlu
IHRoZSBwdWJsaWMgQVBJIHRvIHRoZSBjb250cm9sIGRvbWFpbi4NCj4gPg0KPiA+IFRoaXMgc2Vw
YXJhdGlvbiBpcyBwcm9iYWJseSBhIGdvb2QgdGhpbmcgYmVjYXVzZSBpdCBhbGxvd3MgdG8gY2hh
bmdlIFhlbiBpbnRlcm5hbHMNCj4gPiBsaWtlIG5vZGVpdF90IGFuZCBOVU1BX05PX05PREUgaWYg
c28gZGVzaXJlZCB3aXRob3V0IGNoYW5naW5nIHRoZSBwdWJsaWMgQVBJLg0KPiA+DQo+ID4gTlVN
QV9OT19OT0RFIGlzIGRlZmluZWQgYXMgMHhGRiBhbmQgbm9kZWlkX3QgaXMgdTguIEJ1dCB0aGF0
IGlzIGp1c3QgYW4NCj4gPiBpbXBsZW1lbnRhdGlvbiBkZXRhaWwgb2YgdGhlIEh5cGVydmlzb3Ig
aXRzZWxmLiBJZiBuZWVkZWQsIHdlIGNvdWxkIGNoYW5nZQ0KPiA+IHRoZSBpbXBsZW1lbnRhdGlv
biBsaWtlIHRoaXMgc2VyaWVzIGNvdWxkIGRvLCBpZiB3YW50ZWQuDQo+IA0KPiBZb3Ugc3BlbGwg
aXQgYWxsIG91dCBoZXJlLCBidXQgdGhlbiB5b3UgZG9uJ3QgZHJhdyB0aGUgY29uY2x1c2lvbiB0
aGF0IEkgd2FzIGFpbWluZw0KPiBhdDogSWYgc29tZW9uZSBwYXNzZXMgaW4gMHhmZiwgdGhhdCBf
c2hvdWxkIG5vdF8gYmUgbWlzdGFrZW4gZm9yIE5VTUFfTk9fTk9ERS4gSGVuY2UNCj4gZm9yIHRo
ZSB0aW1lIGJlaW5nIHlvdSBzaW1wbHkgbmVlZCB0byByZWplY3QgMHhmZiBpZiB5b3UgZG9uJ3Qg
d2FudCB0byBleHBvc2UgIm5vDQo+IHNwZWNpZmljIG5vZGUiIGV4YWN0bHkgdGhhdCB3YXkgaW4g
dGhlIEFCSS4gQW5kIGluZGVlZCAuLi4NCg0KQWgsIEkgbWlzdW5kZXJzdG9vZCB5b3VyIGNvbW1l
bnQsIGFja25vd2xlZGdlZC4NCg0KRWFybGllciByZXZpZXdzIGFza2VkIGZvciBub2RlIGNoZWNr
aW5nIGluIGRvbWFpbl9zZXRfb3V0c3RhbmRpbmdfcGFnZXMoKSwgd2hpY2gNCnNob3VsZCwgYXMg
eW91IHN1Z2dlc3RlZCBoYXZlIGJlZW4gbW92ZWQgdGhlcmUuIEJ1dCB0aGF0J3MgaGlzdG9yaWNh
bCB3aXRoIHY2IG5vdywNCndoZXJlIHdlIGhhdmUgbmV3IGNvZGUgYW5kIGRpZmZlcmVudCBjb25z
aWRlcmF0aW9ucy4NCg0KICAgIGN1LCBCZXJuaGFyZA0KDQpQUzogSSBzdWJtaXR0ZWQgdGhlIGN1
cnJlbnQgZGVzaWduIGRvY3VtZW50IHRvIHJlYXNvbiB0aGUgZGVzaWduLCBhbmQgdjYgaXRzZWxm
Og0KaHR0cHM6Ly9iZXJuaGFyZC14ZW4ucmVhZHRoZWRvY3MuaW8vZW4vY2xhaW0tc2V0cy12Mi1k
ZXNpZ24vZGVzaWducy9jbGFpbXMNCmh0dHBzOi8vbGlzdHMueGVucHJvamVjdC5vcmcvYXJjaGl2
ZXMvaHRtbC94ZW4tZGV2ZWwvMjAyNi0wNC9tc2cwMDU4Ny5odG1sDQo=


From xen-devel-bounces@lists.xenproject.org Fri Apr 17 07:24:52 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Fri, 17 Apr 2026 07:24:52 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1283976.1565940 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wDdZ8-0002Ha-SB; Fri, 17 Apr 2026 07:24:38 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1283976.1565940; Fri, 17 Apr 2026 07:24: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 1wDdZ8-0002HT-OG; Fri, 17 Apr 2026 07:24:38 +0000
Received: by outflank-mailman (input) for mailman id 1283976;
 Fri, 17 Apr 2026 07:24:37 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92) id 1wDdZ7-0002HN-B5
 for xen-devel@lists.xenproject.org; Fri, 17 Apr 2026 07:24:37 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wDdZ6-00GTA6-O0
 for xen-devel@lists.xenproject.org; Fri, 17 Apr 2026 09:24:36 +0200
Received: from [10.42.69.9] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <oleksii.kurochko@gmail.com>)
 id 69e1e02b-2eae-0a2a0a5409dd-0a2a4509a54c-38
 for <xen-devel@lists.xenproject.org>; Fri, 17 Apr 2026 09:24:36 +0200
Received: from [209.85.128.54] (helo=mail-wm1-f54.google.com)
 by tlsNG-bad1c0.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.1)
 (envelope-from <oleksii.kurochko@gmail.com>)
 id 69e1e034-2497-0a2a45090019-d1558036bdbf-3
 for <xen-devel@lists.xenproject.org>; Fri, 17 Apr 2026 09:24:36 +0200
Received: by mail-wm1-f54.google.com with SMTP id
 5b1f17b1804b1-488b0046078so3128595e9.1
 for <xen-devel@lists.xenproject.org>; Fri, 17 Apr 2026 00:24:36 -0700 (PDT)
Received: from fedora (user-109-243-69-121.play-internet.pl. [109.243.69.121])
 by smtp.gmail.com with ESMTPSA id
 5b1f17b1804b1-488fb6e16b3sm14578345e9.0.2026.04.17.00.24.34
 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
 Fri, 17 Apr 2026 00:24:34 -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=20251104 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=20251104; t=1776410676; x=1777015476; 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;
        bh=g2D/0gDX5iLGL2+CnfFG8EhHTMrOO2S+Kr3prVGAwic=;
        b=EWegANMuLgHZV5O8e0zlpWF28wXmzK3/RaZvu0WiRsSBmjtokJO/OZrsjTb6uoG3YD
         ScjAfsCki45PD/8QPF6oVieEDn7zcEATGQWqkG7t00g9cWbk4roYUwMlR+E0BZOdafuC
         /p05OZxFnaYZVAM00TOrX+dKBYQ56hoKL7GFTJmef8Xf/SZNck+fEeFj8jg4CclovJbO
         A0B9xLqVdevWLHNyw2+5TZSztcSlNMNMFxDCrp3IGkvSSGnvW6VFuUtqEfHMs0EXlb1W
         E5wdcF/q/uavhUBHL+RE6HzAzOZTKZTPjuQSBd4Jnqy9HD7ynv8GqAS4iv1nWQlaLuSx
         UJHA==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20251104; t=1776410676; x=1777015476;
        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;
        bh=g2D/0gDX5iLGL2+CnfFG8EhHTMrOO2S+Kr3prVGAwic=;
        b=QVPWTxB3Uv7VjCkzXh5rXpqEVGuLhHHl4g+s27MhVF8wbLJFm47vZW7P8S2zab4WJO
         WHsbQZ2FaVdOvAy/CV3LGpaK6e66n2Guhuor24B3sh7DPWlXDNxNJ1Vwsy/D/gbqdchk
         EoCxHeZAf2+YaC8tq5mJAMt+HMZM/O0h6QGfYVPJXR3Ng9Xe90ta27k2g2U3XFT+6NJI
         w/8wpNVX+yHHglzFLrNGyAXI5ttP8DYyAsfZz3DYKlgfhJF+HpsDmsuqcNds+MZPnh9Q
         rfb/ZuNqR5FTxLk8iWOi1hxvXEH3MWK4PFE/1pp+pHHAmlavNe5CQr4TDfPTJiPYycWW
         CWrg==
X-Gm-Message-State: AOJu0YyFaTw+e7tq2VlJw7gcoZhR/WOwAJPmmX1n/BpAbJP5mQPVKUHO
	4AYO62bDOruOhjmZMJGnIXKNXcNwpcBMsy2yuKVXEzJ6NQkFOFMWZfF7JqYFNA==
X-Gm-Gg: AeBDiesbmvV7n8oblEVbdjg6dlOUten3U7ZH79tzSJdYbsk7H7n2ZPBZpAdtF3rBl6f
	hAVk+qJ5G4Aaori8BiQszfR7aj3aGT483TD51i3iNt9OzrKhImoVUU5Oiaq2ngckCGx1aB7YPNL
	RBH93EkTdwLfKlKWZe2zjQ7ujSjBzhJnEtDpBxE93c9sfoHUILUBIOZ4Q29szkjKhZOygE9ZKt9
	S1ecC6Y1uNi4LBvpEn68YjExrrLQBALe/2csGAU7o88LiW0Zs1qjfnBC/VvkF9WD+2P3AE6WkrY
	9XUAXUqrXy35Qn98ygBjelmnHzwoWYkA5E+r12Qxh6yAQcVt0OQhiX9WQMxhywJBL2l00f1DvTn
	SAjhS3PMXdvl7t/DBYK/sEd7mKhrrMnl6oOJIBzsSM7O01IjuLD+wZAfzQ1Zv6ywlIY+l6LFRiO
	uWwnl5GW3fLOrvaPfs+T4RwOEQ/enfCMH2kVxYeVdD7TnqhATF4dj0NU5C3pXMp/syyLrMLljxj
	T7whYj7g5kIX5M=
X-Received: by 2002:a05:600c:5246:b0:487:219e:42d with SMTP id 5b1f17b1804b1-488fb750a1dmr22851325e9.11.1776410675594;
        Fri, 17 Apr 2026 00:24:35 -0700 (PDT)
From: Oleksii Kurochko <oleksii.kurochko@gmail.com>
To: xen-devel@lists.xenproject.org
Cc: Romain Caritey <Romain.Caritey@microchip.com>,
	Oleksii Kurochko <oleksii.kurochko@gmail.com>,
	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=20Pau=20Monn=C3=A9?= <roger.pau@citrix.com>,
	Stefano Stabellini <sstabellini@kernel.org>
Subject: [PATCH v4] xen/riscv: allow Xen to use SSTC while hiding it from guests
Date: Fri, 17 Apr 2026 09:24:26 +0200
Message-ID: <5285075f24cd2a2c5566b2a7724198d34aab51c5.1776354739.git.oleksii.kurochko@gmail.com>
X-Mailer: git-send-email 2.53.0
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit
X-purgate-ID: tlsNG-bad1c0/1776410676-42B70A53-66B3954F/10/73395122804
X-purgate-type: spam
X-purgate-size: 13888

OpenSBI currently does not advertise the SSTC extension via the device
tree, so if SSTC support is detected by Xen the riscv_isa bitmap is updated
manually. Furthermore, removing the "sstc" string from riscv,isa is not
a reliable way to disable SSTC, because OpenSBI probes support by
attempting to access CSR_STIMECMP.

Introduce a runtime probe in Xen to determine whether SSTC is available.
The probe attempts to read CSR_STIMECMP using csr_read_safe(). If the
access succeeds, SSTC is considered available; if a trap occurs, it is
treated as unsupported.

When SSTC is detected, Xen may use it internally to program timers.
However, the extension is not exposed to guests because the required
context switch handling for the SSTC CSRs is not yet implemented.

Note: clearing RISCV_ISA_EXT_sstc from the DTS riscv,isa property is
deferred to a follow-up patch. Also, the corresponding HENVCFG bit is
not set so guests fall back to the SBI timer interface. Timer requests
are then handled by Xen via the usual SBI interception path.

Introduce set_xen_timer() to abstract how the timer is programmed,
either via the SSTC extension or an SBI call.

Drop sbi_set_timer() as it is more than enough to have only introduced
set_xen_timer().

Drop "SBI v0.2 TIME extension detected" message to avoid confusion
which set timer function is really used.

Signed-off-by: Oleksii Kurochko <oleksii.kurochko@gmail.com>
----
Changes in v4:
 - Introduce csr_write64() and __csr_write32h().
 - Sort numericaly definitions of CSR_VSTIMECMP{H}.
---
Changes in v3:
 - Reword print message when SSTC extension is detected.
 - s/__clear_bit/__set_bit() for the case when SSTC is detected in
   riscv_fill_hwcap().
   Update also the comment above __set_bit().
 - Drop BUG_ON()s in vtimer.c.
 - s/printk/dprintk for the message: SSTC detected...
 - Drop sbi_set_timer global variable, it is enough just to have set_xen_timer.
 - As we set bit in riscv_isa bitmap there is no need to use csr_read_safe(CSR_STIMECMP) second time.
 - Move init of CSR_VSTIMECMP in preinit_xen_time as it looks more correct place.
 - Update the commit message.
---
Changes in v2:
 - Minor style fixes.
 - Drop from vcpu_csr_init() setting of SSTC bit in HENVCFG register. Add it
   back when SSTC for guests will be available.
 - Add static to set_xen_timer function pointer.
 - Refactor sstc_set_xen_timer().
 - s/csr_allowed_read/csr_read_safe()
---
 xen/arch/riscv/cpufeature.c                 | 18 +++++++++
 xen/arch/riscv/include/asm/cpufeature.h     |  1 +
 xen/arch/riscv/include/asm/csr.h            | 14 +++++++
 xen/arch/riscv/include/asm/riscv_encoding.h |  2 +
 xen/arch/riscv/include/asm/sbi.h            | 18 ---------
 xen/arch/riscv/include/asm/time.h           |  3 ++
 xen/arch/riscv/sbi.c                        | 29 +++++++++++---
 xen/arch/riscv/time.c                       | 42 +++++++++++++--------
 xen/arch/riscv/vtimer.c                     |  1 +
 9 files changed, 89 insertions(+), 39 deletions(-)

diff --git a/xen/arch/riscv/cpufeature.c b/xen/arch/riscv/cpufeature.c
index 03e27b037be0..92235fdfd5ab 100644
--- a/xen/arch/riscv/cpufeature.c
+++ b/xen/arch/riscv/cpufeature.c
@@ -17,6 +17,7 @@
 #include <xen/sections.h>
 
 #include <asm/cpufeature.h>
+#include <asm/csr.h>
 
 #ifdef CONFIG_ACPI
 # error "cpufeature.c functions should be updated to support ACPI"
@@ -139,6 +140,7 @@ const struct riscv_isa_ext_data __initconst riscv_isa_ext[] = {
     RISCV_ISA_EXT_DATA(smaia),
     RISCV_ISA_EXT_DATA(smstateen),
     RISCV_ISA_EXT_DATA(ssaia),
+    RISCV_ISA_EXT_DATA(sstc),
     RISCV_ISA_EXT_DATA(svade),
     RISCV_ISA_EXT_DATA(svpbmt),
 };
@@ -483,6 +485,7 @@ void __init riscv_fill_hwcap(void)
     unsigned int i;
     const size_t req_extns_amount = ARRAY_SIZE(required_extensions);
     bool all_extns_available = true;
+    unsigned long tmp;
 
     riscv_fill_hwcap_from_isa_string();
 
@@ -495,6 +498,21 @@ void __init riscv_fill_hwcap(void)
         panic("HW capabilities parsing failed: %s\n", failure_msg);
     }
 
+    if ( csr_read_safe(CSR_STIMECMP, &tmp) )
+    {
+        dprintk(XENLOG_DEBUG,
+                "SSTC detected; supported for Xen use, but not for guests\n");
+
+        /*
+         * As there is no any guarantee that SSTC will be added to riscv,isa
+         * property by OpenSBI(it doesn't add it now) or whatever ran before
+         * Xen, it is needed to set this bit manually.
+         *
+         * Guest isolation is maintained by not setting ENVCFG_STCE in henvcfg.
+         */
+        __set_bit(RISCV_ISA_EXT_sstc, riscv_isa);
+    }
+
     for ( i = 0; i < req_extns_amount; i++ )
     {
         const struct riscv_isa_ext_data ext = required_extensions[i];
diff --git a/xen/arch/riscv/include/asm/cpufeature.h b/xen/arch/riscv/include/asm/cpufeature.h
index ef02a3e26d2c..0c48d57a03bb 100644
--- a/xen/arch/riscv/include/asm/cpufeature.h
+++ b/xen/arch/riscv/include/asm/cpufeature.h
@@ -38,6 +38,7 @@ enum riscv_isa_ext_id {
     RISCV_ISA_EXT_smaia,
     RISCV_ISA_EXT_smstateen,
     RISCV_ISA_EXT_ssaia,
+    RISCV_ISA_EXT_sstc,
     RISCV_ISA_EXT_svade,
     RISCV_ISA_EXT_svpbmt,
     RISCV_ISA_EXT_MAX
diff --git a/xen/arch/riscv/include/asm/csr.h b/xen/arch/riscv/include/asm/csr.h
index 27d4b7942f6b..9dc5f8767508 100644
--- a/xen/arch/riscv/include/asm/csr.h
+++ b/xen/arch/riscv/include/asm/csr.h
@@ -32,6 +32,20 @@
                            : "memory" );                        \
 })
 
+#ifdef CONFIG_RISCV_32
+# define __csr_write32h(csr, val) csr_write(csr ## H, (val) >> 32)
+#else
+# define __csr_write32h(csr, val) ((void)(csr), (void)(val))
+#endif
+
+#define csr_write64(csr, val)   \
+({                              \
+    uint64_t _v = (val);        \
+                                \
+    csr_write(csr, _v);         \
+    __csr_write32h(csr, _v);    \
+})
+
 #define csr_swap(csr, val)                                      \
 ({                                                              \
     unsigned long __v = (unsigned long)(val);                   \
diff --git a/xen/arch/riscv/include/asm/riscv_encoding.h b/xen/arch/riscv/include/asm/riscv_encoding.h
index dd15731a86fa..03e186bcdb8c 100644
--- a/xen/arch/riscv/include/asm/riscv_encoding.h
+++ b/xen/arch/riscv/include/asm/riscv_encoding.h
@@ -395,6 +395,8 @@
 #define CSR_VSCAUSE			0x242
 #define CSR_VSTVAL			0x243
 #define CSR_VSIP			0x244
+#define CSR_VSTIMECMP		0x24d
+#define CSR_VSTIMECMPH		0x25d
 #define CSR_VSATP			0x280
 
 /* Virtual Interrupts and Interrupt Priorities (H-extension with AIA) */
diff --git a/xen/arch/riscv/include/asm/sbi.h b/xen/arch/riscv/include/asm/sbi.h
index ed7af200288f..1952868e963c 100644
--- a/xen/arch/riscv/include/asm/sbi.h
+++ b/xen/arch/riscv/include/asm/sbi.h
@@ -13,7 +13,6 @@
 #define ASM__RISCV__SBI_H
 
 #include <xen/cpumask.h>
-#include <xen/sections.h>
 
 /* SBI-defined implementation ID */
 #define SBI_XEN_IMPID 7
@@ -139,23 +138,6 @@ int sbi_remote_hfence_gvma(const cpumask_t *cpu_mask, vaddr_t start,
 int sbi_remote_hfence_gvma_vmid(const cpumask_t *cpu_mask, vaddr_t start,
                                 size_t size, unsigned long vmid);
 
-/*
- * Programs the clock for next event at (or after) stime_value. stime_value is
- * in absolute time. This function must clear the pending timer interrupt bit
- * as well.
- *
- * If the supervisor wishes to clear the timer interrupt without scheduling the
- * next timer event, it can either request a timer interrupt infinitely far
- * into the future (i.e., (uint64_t)-1), or it can instead mask the timer
- * interrupt by clearing sie.STIE CSR bit.
- *
- * The stime_value parameter represents absolute time measured in ticks.
- *
- * This SBI call returns 0 upon success or an implementation specific negative
- * error code.
- */
-extern int (* __ro_after_init sbi_set_timer)(uint64_t stime_value);
-
 /*
  * Initialize SBI library
  *
diff --git a/xen/arch/riscv/include/asm/time.h b/xen/arch/riscv/include/asm/time.h
index be3875b9984e..4d68900151a7 100644
--- a/xen/arch/riscv/include/asm/time.h
+++ b/xen/arch/riscv/include/asm/time.h
@@ -4,6 +4,7 @@
 
 #include <xen/bug.h>
 #include <xen/muldiv64.h>
+#include <xen/sections.h>
 
 #include <asm/csr.h>
 
@@ -26,6 +27,8 @@ static inline cycles_t get_cycles(void)
 
 void preinit_xen_time(void);
 
+extern int (* __ro_after_init set_xen_timer)(uint64_t deadline);
+
 #endif /* ASM__RISCV__TIME_H */
 
 /*
diff --git a/xen/arch/riscv/sbi.c b/xen/arch/riscv/sbi.c
index b4a7ae6940c1..3576e26033a5 100644
--- a/xen/arch/riscv/sbi.c
+++ b/xen/arch/riscv/sbi.c
@@ -22,6 +22,7 @@
 
 #include <asm/processor.h>
 #include <asm/sbi.h>
+#include <asm/time.h>
 
 static unsigned long __ro_after_init sbi_spec_version = SBI_SPEC_VERSION_DEFAULT;
 
@@ -249,6 +250,21 @@ static int (* __ro_after_init sbi_rfence)(unsigned long fid,
                                           unsigned long arg4,
                                           unsigned long arg5);
 
+/*
+ * Programs the clock for next event at (or after) stime_value. stime_value is
+ * in absolute time. This function must clear the pending timer interrupt bit
+ * as well.
+ *
+ * If the supervisor wishes to clear the timer interrupt without scheduling the
+ * next timer event, it can either request a timer interrupt infinitely far
+ * into the future (i.e., (uint64_t)-1), or it can instead mask the timer
+ * interrupt by clearing sie.STIE CSR bit.
+ *
+ * The stime_value parameter represents absolute time measured in ticks.
+ *
+ * This SBI call returns 0 upon success or an implementation specific negative
+ * error code.
+ */
 static int cf_check sbi_set_timer_v02(uint64_t stime_value)
 {
     struct sbiret ret;
@@ -264,6 +280,10 @@ static int cf_check sbi_set_timer_v02(uint64_t stime_value)
     return sbi_err_map_xen_errno(ret.error);
 }
 
+/*
+ * Legacy SBI v0.1 SET_TIMER; functionally equivalent to sbi_set_timer_v02
+ * from Xen's perspective.
+ */
 static int cf_check sbi_set_timer_v01(uint64_t stime_value)
 {
     struct sbiret ret;
@@ -279,8 +299,6 @@ static int cf_check sbi_set_timer_v01(uint64_t stime_value)
     return sbi_err_map_xen_errno(ret.error);
 }
 
-int (* __ro_after_init sbi_set_timer)(uint64_t stime_value) = sbi_set_timer_v01;
-
 int sbi_remote_sfence_vma(const cpumask_t *cpu_mask, vaddr_t start,
                           size_t size)
 {
@@ -360,10 +378,9 @@ int __init sbi_init(void)
         }
 
         if ( sbi_probe_extension(SBI_EXT_TIME) > 0 )
-        {
-            sbi_set_timer = sbi_set_timer_v02;
-            dprintk(XENLOG_INFO, "SBI v0.2 TIME extension detected\n");
-        }
+            set_xen_timer = sbi_set_timer_v02;
+        else
+            set_xen_timer = sbi_set_timer_v01;
     }
     else
         panic("Ooops. SBI spec version 0.1 detected. Need to add support");
diff --git a/xen/arch/riscv/time.c b/xen/arch/riscv/time.c
index 698ab49d1292..8769709e5227 100644
--- a/xen/arch/riscv/time.c
+++ b/xen/arch/riscv/time.c
@@ -7,12 +7,21 @@
 #include <xen/time.h>
 #include <xen/types.h>
 
+#include <asm/cpufeature.h>
 #include <asm/csr.h>
-#include <asm/sbi.h>
 
 unsigned long __ro_after_init cpu_khz; /* CPU clock frequency in kHz. */
 uint64_t __ro_after_init boot_clock_cycles;
 
+static int cf_check sstc_set_xen_timer(uint64_t deadline)
+{
+    csr_write64(CSR_STIMECMP, deadline);
+
+    return 0;
+}
+
+int (* __ro_after_init set_xen_timer)(uint64_t deadline);
+
 s_time_t get_s_time(void)
 {
     uint64_t ticks = get_cycles() - boot_clock_cycles;
@@ -61,20 +70,7 @@ int reprogram_timer(s_time_t timeout)
     if ( deadline <= now )
         return 0;
 
-    /*
-     * TODO: When the SSTC extension is supported, it would be preferable to
-     *       use the supervisor timer registers directly here for better
-     *       performance, since an SBI call and mode switch would no longer
-     *       be required.
-     *
-     *       This would also reduce reliance on a specific SBI implementation.
-     *       For example, it is not ideal to panic() if sbi_set_timer() returns
-     *       a non-zero value. Currently it can return 0 or -ENOSUPP, and
-     *       without SSTC we still need an implementation because only the
-     *       M-mode timer is available, and it can only be programmed in
-     *       M-mode.
-     */
-    if ( (rc = sbi_set_timer(deadline)) )
+    if ( (rc = set_xen_timer(deadline)) )
         panic("%s: timer wasn't set because: %d\n", __func__, rc);
 
     /* Enable timer interrupt */
@@ -91,4 +87,20 @@ void __init preinit_xen_time(void)
         panic("%s: ACPI isn't supported\n", __func__);
 
     boot_clock_cycles = get_cycles();
+
+    /* set_xen_timer must have been set by sbi_init() already */
+    ASSERT(set_xen_timer);
+
+    if ( riscv_isa_extension_available(NULL, RISCV_ISA_EXT_sstc) )
+    {
+        set_xen_timer = sstc_set_xen_timer;
+
+        /*
+         * A VS-timer interrupt becomes pending whenever the value of
+         * (time + htimedelta) is greater than or equal to vstimecmp CSR.
+         * Thereby to avoid spurious VS-timer irqs set vstimecmp CSR to
+         * ULONG_MAX.
+         */
+        csr_write64(CSR_STIMECMP, ULONG_MAX);
+    }
 }
diff --git a/xen/arch/riscv/vtimer.c b/xen/arch/riscv/vtimer.c
index afd8a53a7387..d5a8dfcb2edb 100644
--- a/xen/arch/riscv/vtimer.c
+++ b/xen/arch/riscv/vtimer.c
@@ -4,6 +4,7 @@
 #include <xen/sched.h>
 #include <xen/timer.h>
 
+#include <asm/cpufeature.h>
 #include <asm/vtimer.h>
 
 static void vtimer_expired(void *data)
-- 
2.53.0



From xen-devel-bounces@lists.xenproject.org Fri Apr 17 07:54:12 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Fri, 17 Apr 2026 07:54:12 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1283992.1565948 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wDe1e-0006FA-0m; Fri, 17 Apr 2026 07:54:06 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1283992.1565948; Fri, 17 Apr 2026 07:54: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 1wDe1d-0006F3-UM; Fri, 17 Apr 2026 07:54:05 +0000
Received: by outflank-mailman (input) for mailman id 1283992;
 Fri, 17 Apr 2026 07:54:05 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <Christian.Koenig@amd.com>) id 1wDe1c-0006Ex-ON
 for xen-devel@lists.xenproject.org; Fri, 17 Apr 2026 07:54:05 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wDe1b-001VUU-Ty
 for xen-devel@lists.xenproject.org; Fri, 17 Apr 2026 09:54:04 +0200
Received: from [10.42.69.12] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <Christian.Koenig@amd.com>)
 id 69e1e711-e002-0a2a0a5209dd-0a2a450cd25a-40
 for <xen-devel@lists.xenproject.org>; Fri, 17 Apr 2026 09:54:03 +0200
Received: from [52.101.193.20]
 (helo=CH1PR05CU001.outbound.protection.outlook.com)
 by tlsNG-d25034.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.1)
 (envelope-from <Christian.Koenig@amd.com>)
 id 69e1e719-62f1-0a2a450c0019-3465c11421f8-4
 for <xen-devel@lists.xenproject.org>; Fri, 17 Apr 2026 09:54:02 +0200
Received: from PH7PR12MB5685.namprd12.prod.outlook.com (2603:10b6:510:13c::22)
 by DS0PR12MB7828.namprd12.prod.outlook.com (2603:10b6:8:14b::12) with
 Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9791.35; Fri, 17 Apr
 2026 07:53:57 +0000
Received: from PH7PR12MB5685.namprd12.prod.outlook.com
 ([fe80::ce69:cfae:774d:a65c]) by PH7PR12MB5685.namprd12.prod.outlook.com
 ([fe80::ce69:cfae:774d:a65c%5]) with mapi id 15.20.9818.017; Fri, 17 Apr 2026
 07:53: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=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=iwwfUQNOsZyMgVOxTdoZhcOP+NTpog2V3nabtDcbgvjR/HltgFj/lTD8pUia4edheIbLi+1dofd5zQSF5v+lNS7d6/L/XWRvi/qleQc8k/ciH4suXj5/hVtvuHgMdvCZ0o3EqciSgCsfQTdq19uwy2Gp/VDNLjIu3B5ZuWTFpMKnbA42284Yv885dyPUaMNNONnGwQAHWMKH936gvcxKKA/eeNprOncE1sb6obQUE/9IetbA7NrxcJaF48uQKLcsQGYSk2JOfV1QU7rBKDUMXTVlR28ShbKAJwPkN8n64c/6VYhq2rePysadV9pbPUQH0svq2mmmy7KLjeh8AImVLg==
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com;
 s=arcselector10001;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1;
 bh=xI41eCdxT3vHHUSP6mcueoyvicczs1k4tmRDnqD8o30=;
 b=ESRXJ3T8IjwDYBQuza0F+Nc8luOf83vdiANBkzFC3o8SSnV91/QeGW1EizU2HPAZqV7HSQ/6jGyA6ijNeXZG+Az2XpcFVMlLbLrsK3LhRbeEc6wXsJszFIt8yQxQykl6TSwpl66E7OiynWKKAbEsHJAu9fWH03vA0CNLAmGKRPjEa3TMNRb1sW9tDJTm3AHQV9KpjhII4nh6U6mhdqqTAOpfzgCbakR/qxJINPSfvTZpV9ITQOCxW4NlgP1LHIDpra3+j4VwsKw74PgilGTZ6omsxWLmn6otqIKXt4S0HZVq2sRrQu0TR/CzPUFy4Ua7XVeA07yn+p3KLJ/KZLY2XQ==
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=xI41eCdxT3vHHUSP6mcueoyvicczs1k4tmRDnqD8o30=;
 b=3PzlDWYGm7TSFEYUyYlkIXM+nkedqQ13z/8sgOLxHx/L3mgXKai8u9s7NysYBTfShb1xGQjwQQrLqudd0AsULLW0o/v06PiRtCEf0IcqYrB97SxHyp13yIlbWXB28I8wR31T1j25i5HI6k5CVtqI6XhF6UiTis9bH8g4lGz7Vr4=
Authentication-Results: dkim=none (message not signed)
 header.d=none;dmarc=none action=none header.from=amd.com;
Message-ID: <4751cf03-d3c1-4d5d-af8e-39ad7c8ffb84@amd.com>
Date: Fri, 17 Apr 2026 09:53:52 +0200
User-Agent: Mozilla Thunderbird
Subject: Re: Pinned, non-revocable mappings of VRAM: will bad things happen?
To: Demi Marie Obenour <demiobenour@gmail.com>,
 dri-devel@lists.freedesktop.org,
 Xen developer discussion <xen-devel@lists.xenproject.org>,
 linux-media@vger.kernel.org
Cc: Val Packett <val@invisiblethingslab.com>,
 Suwit Semal <sumit.semwal@linaro.org>
References: <a06133f7-3093-4733-9786-bc46c1453e06@gmail.com>
 <b8d04414-18b5-40f7-9ea2-88b30ff5bea0@amd.com>
 <c7865b27-6bf1-4df1-9520-c9ef6b3ef368@gmail.com>
Content-Language: en-US
From: =?UTF-8?Q?Christian_K=C3=B6nig?= <christian.koenig@amd.com>
In-Reply-To: <c7865b27-6bf1-4df1-9520-c9ef6b3ef368@gmail.com>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
X-ClientProxiedBy: YT4PR01CA0278.CANPRD01.PROD.OUTLOOK.COM
 (2603:10b6:b01:109::19) To PH7PR12MB5685.namprd12.prod.outlook.com
 (2603:10b6:510:13c::22)
MIME-Version: 1.0
X-MS-PublicTrafficType: Email
X-MS-TrafficTypeDiagnostic: PH7PR12MB5685:EE_|DS0PR12MB7828:EE_
X-MS-Office365-Filtering-Correlation-Id: f35a9599-72f5-410d-f3b8-08de9c567a9c
X-MS-Exchange-SenderADCheck: 1
X-MS-Exchange-AntiSpam-Relay: 0
X-Microsoft-Antispam:
	BCL:0;ARA:13230040|366016|1800799024|376014|56012099003|18002099003|22082099003;
X-Microsoft-Antispam-Message-Info:
	nFBNT3vY5ZJiYdKs5fpP3kdfuCuiAHbWxymth6xkdMN5vZ41HlTeRTBF9J02Z/4WMfM2j/za6pRzpVGRcVuxMwjG5yMpHkiE6t1jjjyN8dq0Y+GPgd+Ai3K4wT1QRLJMgMmzTm/g6UGHwdDA3UwZYeyDFhG6EuDGAlmaUoMevriyYIeg07AaEmhWjQzhYubf/mlMRw0ph2plzWSHNYy/asCmsfGvu3lnt2GSIyzpgTGzbzsapaHCmMjJebNeNBWVYa+CPnwWvJx3PsguvYNFpQGM6Ce+ubodJjURmBACNGdJRzXIgcObmtcri/MIpqv6OVWl30Zj+OIsi0fdAWJTTcFu+o9SUJIXbICJtst4T1KekWAP0+d3QVvzhSVEMz2uRubhqkfi+GkZxXjEZT4nx0bXbO1HYWIImPoeDZmqINzIHi0cPXbYIK/R9QBrtMhs3ab6HKtrFagRS4IJrTs7++n8BSmqCurNF8qB4YoDxAyzlB4ihPB94CiCz29XR+/htP6h8UIAuZ1Ym3mxEozg8IEBkx7isVysDYyENXYdJ1I0cRO7FG/9B+zoZQCeUsILIiwDNvh/xZmg2OOBDCCFkDAxSULahFdlDlVCNKX0xHZnBQIh2m2uR9M2HJcz/ltHb7b6Kz0+gEVjeLcyf0lNd+UfiBc8k4ALTJGC9Wqi/DPVJTxENZxTem7Db5PR1adLcRKp18k8g6YYE17MaPfA37tJdsoBjX631mu96YgYS+A=
X-Forefront-Antispam-Report:
	CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:PH7PR12MB5685.namprd12.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(366016)(1800799024)(376014)(56012099003)(18002099003)(22082099003);DIR:OUT;SFP:1101;
X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1
X-MS-Exchange-AntiSpam-MessageData-0:
	=?utf-8?B?WEtjWC8vRzcvK1ArNGk2SUZ0OUgyVE5lbFBDSkgxZFZFYzFNWFE4WHl1c3Q2?=
 =?utf-8?B?K3g1OHk4VlJ2U0g1bklnL0xVMTdqOFFUY25DSm11a08zUGVjWUZMaG5ORmNF?=
 =?utf-8?B?N0lDU050TU94K3lMS3QrVHBLdlhKVmZiM2RWOGR4cUJ2T1pqa3IwbWN1Q1lu?=
 =?utf-8?B?ZmRDS2hObGdKa09zSEx6cU9waG0wU09Oc00xSDhSZm4yWGkxdGptaHYvMEV6?=
 =?utf-8?B?M2czQ3A1Z0Vya0xTNGJra2JPT3BJNzFVOEFEUEpyTjA1S3Z6cFFLVEozcjdr?=
 =?utf-8?B?dzJWdXhIMVV4d2h2KzMweHZDNVdTNTdCeS9FaUtEdi9SS09sbXpuTHN1YTdv?=
 =?utf-8?B?WUlGSGVaQmo3NDdiZkNLM0FCRDkrTzlkMDlOTTZaZysyNmRWOEkzM1kwZzFE?=
 =?utf-8?B?Rk1XMityaFNEbStValY5dHRYTmdzWml5SWkwcExsZjQ5VklYd2orbEVWOWNp?=
 =?utf-8?B?MGdLUHFSRmFzU0xjdkZDN21TMm1pTEFPc2VjQzlxZWh6cmEzUkZtdWorcm54?=
 =?utf-8?B?b1pXNEVnWXlHY0lrUzkvRDNtY2VSYVpKZ05NM2luRDNLc0hYWFRpN053aGc1?=
 =?utf-8?B?T3ByV0t2OWoyNFFjYkZRZWVuOFpXaEI1RFpkMjlDMmUxbVN4SlFFWlhaazFB?=
 =?utf-8?B?cHczK1Rhc0J4UDBhVXA0WGg1Nmg1WjhTSXJCMW45S1VlKzNZcWc5NVNPY0Fi?=
 =?utf-8?B?R1NMMStPVU9TMmRMU2tseHRpMjdDNWgzQU9xTkVhb3JjeHRiRllvTUlmR2ds?=
 =?utf-8?B?NmgwQ0ZUOU9uRGx2YWNUR0pPUEEzcG1pVDlXeU9DbXU1aGgxdG02N1RKdUdr?=
 =?utf-8?B?OXRUSE9IbllZUk8xbWdZc2JJMFNDNmZTaTk3emRibWJGYjNORnJNYkJsUkJ0?=
 =?utf-8?B?bWJQNGVPK2h5bHBvajIwTHh0ZTV6aDVYRUZYeE05WjdZTUoxbFlRbnZQalZD?=
 =?utf-8?B?QktMWWZENUNXRDVoVU10NGtuVEtZNFhqM20wTkpKaW5ZNEtEOVlHb1QxaWtQ?=
 =?utf-8?B?alFldVg4bjNWcW5MYUZnVTd5NXlPdTJBRW1DZ2VIYkhXci8vYlAyQU9jU0hj?=
 =?utf-8?B?VGtVSFdTUUFsTUpRc3hMMlM1YVp1UmpuRCs5QXRMcndJcWljV2xDdm01bmZI?=
 =?utf-8?B?NUNSKzVnMm5HeWxOOXJOVStUVEQ4OW15ZUJBdkg4M25RSVZNaS8ralQxdEFa?=
 =?utf-8?B?QWNGS1ZvandTRlhGQUV3aExOeWhONzEvM0QwMUNCVEJnYWlmR1hQY0ovZkZO?=
 =?utf-8?B?eURkYllBNEI1cko5bk1HNUUreXEyQnpYSzNMd2tGRnk1SnhlbE9CU3B5d0Rl?=
 =?utf-8?B?RWxHRCtkRUgvTm5KSDBZb0dmeG9HUCsvemowbFQ5aVdjeDZEZm5wS0ViK2V0?=
 =?utf-8?B?UkdnVzhiNlhna3ExN1BDQ1ZvTzdhOFVHaWQxRWRIVEVSVHlYRHd5MlVacGpD?=
 =?utf-8?B?cmdqVmZuVEk0ZFZDOENaRk5PRU5pbWRiMGU3T2h3VS9IUUdnRFJlbkFSRWN4?=
 =?utf-8?B?WTgxWlRybGVrUXEzL1d0MG1mbHdLKzR4SFFScHlhd29DVWlubjJ5WXhDS1gv?=
 =?utf-8?B?MUNkV3duWGpJdHBHTVZ1SldIU0ZKc0VLMHcvbFNyV3NiOHlac05wVkN6aFJX?=
 =?utf-8?B?WmxRc1hJNS91QVY3MmZCUDdQZjRzNFhFY0xxdGlwTjd3ekRwZW1PRXdmN2ZF?=
 =?utf-8?B?ZWJJTTRrN284V1VzWnEyUlpERGZ6YVNCK25NNjF6RDNMVno5a0xFODF6THRx?=
 =?utf-8?B?TThNczc2eldpOWtVYkxzeHh4YmdiVWt1cjE0TTNBSUJ0N3BGYWVOQ0VocFQ1?=
 =?utf-8?B?QXhJZWpRZnRDZVlCdmIrUTlneVdsZ2xHdGxGTXNHb2VGOWFLUkQxZmRBVHNu?=
 =?utf-8?B?SUFsb0xHbjZRTlAveDBXMDZ2VW0zRURpUmRLeUpQcXZvVkE0WjQ5amVoZm1W?=
 =?utf-8?B?aHNjTVh5Z2VpcTRpOUdpVFlhSXJ0OU56eWlsdHd5eDdrOEpJaGxqYjlZVDRB?=
 =?utf-8?B?ODdCV1lXNkoxUlBrcm45M2JoMmNidElrSm9mQmg5cUZsWXBpSWFiZVdBUXha?=
 =?utf-8?B?a245dFhkc0txRHR1QzdSRlQyWkhGbkdmU3VBaEh0ZERiOC9jeXFNQkxBeDNL?=
 =?utf-8?B?dm1CdlpGUy83bCtDV2ZnQ2NVTzR5ZkJkb01abGZ3czlXT2M3T3c3UG5EVCtV?=
 =?utf-8?B?WEg0NzNkNUdCZEVCZzdsQWR3VVUrRndyWitjc0tLME81MnFYRmx0RnFKRkJk?=
 =?utf-8?B?czZqazBCM05LMzhpRDc0UVBxKzYvVmdsUUw1SXh2eVBMUVdNT3hQTGNaWk1C?=
 =?utf-8?B?U0RLSlBsd215THFqb2t2alhrZTdlTFZRRTJFNlRVYWFzZk11WGZFdz09?=
X-OriginatorOrg: amd.com
X-MS-Exchange-CrossTenant-Network-Message-Id: f35a9599-72f5-410d-f3b8-08de9c567a9c
X-MS-Exchange-CrossTenant-AuthSource: PH7PR12MB5685.namprd12.prod.outlook.com
X-MS-Exchange-CrossTenant-AuthAs: Internal
X-MS-Exchange-CrossTenant-OriginalArrivalTime: 17 Apr 2026 07:53:57.3314
 (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: N+xG0bwEoNMrEr1vVN2SdFt23CoUIzKqbpZpvITcdQhTGf1XG31042aZyKufwVoo
X-MS-Exchange-Transport-CrossTenantHeadersStamped: DS0PR12MB7828
X-purgate-ID: tlsNG-d25034/1776412443-F660ACF5-450249DA/0/0
X-purgate-type: clean
X-purgate-size: 2757

On 4/16/26 18:13, Demi Marie Obenour wrote:
> On 4/16/26 05:57, Christian König wrote:
>> On 4/16/26 01:27, Demi Marie Obenour wrote:
>>> Is it safe to assume that if a dmabuf exporter cannot handle
>>> non-revocable, pinned importers, it will fail the import?  Or is
>>> using dma_buf_pin() unsafe if one does not know the exporter?
>>
>> Neither.
>>
>> dma_buf_pin() makes sure that the importer doesn't get any invalidation notifications because the exporter moves the backing store of the buffer around for memory management.
>>
>> But what is still possible is that the exporter is hot removed, in which case the importer should basically terminate it's DMA operation as soon as possible.
>>
>> GPU drivers usually reject pin requests to VRAM from DMA-buf importers when that isn't restricted by cgroups for example, because that can otherwise easily result in a deny of service.
>>
>> Amdgpu only recently started to allow pinning into VRAM to support RDMA without ODP (I think it was ODP, but could be that I mixed up the RDMA three letter code for that feature).
>>
>>> For context, Xen grant tables do not support revocation.  One can ask
>>> the guest to unmap the grants, but if the guest doesn't obey the only
>>> recourse is to ungracefully kill it.  They also do not support page
>>> faults, so the pages must be pinned.  Right now, grant tables don't
>>> support PCI BAR mappings, but that's fixable.
>>
>> That sounds like an use case for the DMA-buf pin interface.
>>
>>> How badly is this going to break with dGPU VRAM, if at all?  I know
>>> that AMDGPU has a fallback when the BAR isn't mappable.  What about
>>> other drivers?  Supporting page faults the way KVM does is going to
>>> be extremely hard, so pinned mappings and DMA transfers are vastly
>>> preferable.
>>
>> Well if you only want to share a fixed amount of VRAM then that is pretty much ok.
>>
>> But when the client VM can trigger pinning on demand without any limitation you can pretty easily have deny of service against the host. That is usually a rather bad idea.
> 
> Is there a reasonable way to choose such an amount?

Not really.

> Unless I am
> mistaken, client workloads are highly non-uniform: a single game or
> compute job might well use more VRAM than every other program on the
> system combined.

Yeah, perfectly correct.

> Are these workloads impossible to make work well with pinning?

No, as long as you don't know the workload beforehand, e.g. when you define the limit.

I mean that's why basically everybody avoids pinning and assigning fixed amounts of resources.

Even if you can make it work technically pinning usually results in a rather bad end user experience.

Regards,
Christian.


From xen-devel-bounces@lists.xenproject.org Fri Apr 17 08:11:00 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Fri, 17 Apr 2026 08:11:00 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1284018.1565958 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wDeHp-0001Cx-Ri; Fri, 17 Apr 2026 08:10:49 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1284018.1565958; Fri, 17 Apr 2026 08:10: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 1wDeHp-0001Cq-OX; Fri, 17 Apr 2026 08:10:49 +0000
Received: by outflank-mailman (input) for mailman id 1284018;
 Fri, 17 Apr 2026 08:10:48 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92) id 1wDeHo-0001Ck-L7
 for xen-devel@lists.xenproject.org; Fri, 17 Apr 2026 08:10:48 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wDeHn-003lTk-Ak
 for xen-devel@lists.xenproject.org; Fri, 17 Apr 2026 10:10:47 +0200
Received: from [10.42.69.1] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <oleksii.kurochko@gmail.com>)
 id 69e1eafd-bab6-0a2a0a5309dd-0a2a45018e9c-24
 for <xen-devel@lists.xenproject.org>; Fri, 17 Apr 2026 10:10:47 +0200
Received: from [209.85.128.43] (helo=mail-wm1-f43.google.com)
 by tlsNG-d62444.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.1)
 (envelope-from <oleksii.kurochko@gmail.com>)
 id 69e1eb07-c1f2-0a2a45010019-d155802bcc01-3
 for <xen-devel@lists.xenproject.org>; Fri, 17 Apr 2026 10:10:47 +0200
Received: by mail-wm1-f43.google.com with SMTP id
 5b1f17b1804b1-488971db0fdso4266725e9.0
 for <xen-devel@lists.xenproject.org>; Fri, 17 Apr 2026 01:10:47 -0700 (PDT)
Received: from [192.168.1.6] (user-109-243-69-121.play-internet.pl.
 [109.243.69.121]) by smtp.gmail.com with ESMTPSA id
 5b1f17b1804b1-488fc1c01cfsm26569925e9.10.2026.04.17.01.10.45
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Fri, 17 Apr 2026 01:10:46 -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=20251104 header.d=gmail.com header.i="@gmail.com" header.h="Content-Transfer-Encoding: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=20251104; t=1776413447; x=1777018247; darn=lists.xenproject.org;
        h=content-transfer-encoding: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;
        bh=EQNaVOTpeCicYGJpF1kHlv2eAUBaL3KLjz9ACLSqR8U=;
        b=FLjbQECel6AXRP9lMlq6tHmvTCTBpvMWHPRaiX1Vq0YaVqWqFB2xHUNROt/RZVXEvU
         JLivBLH9uRHGr/ciQa7jvMQCYt+sj2jebiISPIfiEpH7aswBzF/djfweSaLOWswOeKEx
         ySg8ZwByxjIvzFA1iDJfEm/G6yGcULFKpZZpuEJ8PTmeM4/hlz8w9thXSeag+r/Q1wSb
         fJmWnTF2atMEUUt+gMwQT6D5u2eIi/uxFKtILZ2fS9va1NCsl6xdQJZCn1CQ3X+V2zhz
         gzvJeVOBGyXxvDwU10XGy7jSorQ99KsUygA9U/08bocaQw0Zh//04OGoSbYY8+ECANeS
         XUTA==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20251104; t=1776413447; x=1777018247;
        h=content-transfer-encoding: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;
        bh=EQNaVOTpeCicYGJpF1kHlv2eAUBaL3KLjz9ACLSqR8U=;
        b=gRH/8mT4wmxofxKe4gY77RmgrEBDfvm1TzEAiRAQkauoyfE7WTi7zYXiUZiYhz6fx3
         qzyhYtw3Vacl97rVMFL6Gh3lJitIqO30gfT27ZpodaVFMkcxdYjXWqVgdoA4mrdSE3j7
         tYvM4EnjYVOQqCt7Wx/8DFNB1JtHQ89vFaYbziBgOqj4UmIeeUt+cEwN62jJ7mChkI+C
         nG6MkZJSBpnEtgP5rTCNQp0X6A+FL7IjyE8bgGihsbF1pYtTNn66BL2BEPLelxtBjyiq
         s4NXcMO+2Lp3bfOIrEN8ONWkTY4rO1O42P6u3dOZH681duQsU2bvUqSTvQNJ4yT9TT9N
         7ZnA==
X-Forwarded-Encrypted: i=1; AFNElJ8nVqnAQOBx/CA4CWgfHsoFLlypwtEvJLYMVMi2cHNC9PYwwn8neUPx5hTWyl9uUQliueagls5gxv4=@lists.xenproject.org
X-Gm-Message-State: AOJu0YyMfFwSZXfSOMY9M4+6GVe+5r6+ECyhhj3c/4+7y4MTpbHvYgM9
	nMFVT/MX4/9opSwl3a3JcnWoBOZwfo1TZEjAXYOKJsyyJOix4eLIQNyn
X-Gm-Gg: AeBDiesgx+tBC0GL4zOgWnxb9i0DdbW6g5SktETDvzlHjMfPZcmMS0T3rKb0bLDCLny
	I103l+AAlSNbjCK9Bw3vQzKSUxVbxke1kSdqgDg7kreWLBdk6ga8jsqQHNUZ6w4kdsYGDcu6Hhg
	Y3jzj1K9JLa0Qns5+lEfmNuXxxtEJbCtPr3YUvokt7wJIpyKzUioG2c+oVlyg+SYbF2p2ZWA9rk
	7Y1wclX1iJgOgu8nc2gAt4273xG+hi8ZVoxBHGOLK+hpzfpcHpO6CaSwOajVYytlkx2gkKE+WiL
	SGDmcUtcuksCKs1zRpXLX870+x4ztS03YWXjMKnIeuLCjy5wFg0gG6oA4+L07vtMl0z96rFyqlW
	NvZjvrFi/hACK90EscIcDXSz45s+gnFtYrljP+WnbLHGEkSzM+9IA11qYg+FwkZk4FNpL4cDjw9
	y+vD2GZl7V09uaS3rmvVSjTn8wcNi2RHCYoV1/FBmXHOyDFikxBkbuzoPDJOmKWEAvrdaDWZLNO
	ZcRqLMAirSUmg==
X-Received: by 2002:a05:600d:1c:b0:488:ba5f:984f with SMTP id 5b1f17b1804b1-488fb746d8amr19136085e9.6.1776413446606;
        Fri, 17 Apr 2026 01:10:46 -0700 (PDT)
Message-ID: <ca52ad3b-d14d-478b-bf6d-2835f79fa257@gmail.com>
Date: Fri, 17 Apr 2026 10:10:45 +0200
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH v1 10/27] xen/riscv: generate IMSIC DT node for guest
 domains
To: Jan Beulich <jbeulich@suse.com>
Cc: Romain Caritey <Romain.Caritey@microchip.com>,
 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.pau@citrix.com>,
 Stefano Stabellini <sstabellini@kernel.org>, xen-devel@lists.xenproject.org
References: <cover.1773157782.git.oleksii.kurochko@gmail.com>
 <8154eae081d14da89f27bad581270cc5bba6ccfc.1773157782.git.oleksii.kurochko@gmail.com>
 <93e8407e-cff0-42cc-8cfd-2d82f536a886@suse.com>
 <b2c8e859-a91a-469f-b674-0942d240f0d9@gmail.com>
 <953a4d7a-95a0-4a11-b236-efdf21eb125c@suse.com>
Content-Language: en-US
From: Oleksii Kurochko <oleksii.kurochko@gmail.com>
In-Reply-To: <953a4d7a-95a0-4a11-b236-efdf21eb125c@suse.com>
Content-Type: text/plain; charset=UTF-8; format=flowed
Content-Transfer-Encoding: 7bit
X-purgate-ID: tlsNG-d62444/1776413447-BDC64FF4-2791083B/10/73395122804
X-purgate-type: spam
X-purgate-size: 3269



On 4/16/26 1:42 PM, Jan Beulich wrote:
> On 10.04.2026 17:40, Oleksii Kurochko wrote:
>> On 4/1/26 5:05 PM, Jan Beulich wrote:
>>> On 10.03.2026 18:08, Oleksii Kurochko wrote:
>>>> Guests using the IMSIC interrupt controller require a corresponding
>>>> Device Tree description. Add support for generating an IMSIC node when
>>>> building the guest DT.
>>>>
>>>> Keep a reference to the host IMSIC DT node and reuse its compatible
>>>> property while constructing the guest-visible node.
>>>
>>> Again raises a migration concern. Presumably a guest would then be able
>>> to migrate only to other hosts with the same compatible property.
>>
>> Right, but I don't think we can do too much and it is the simplest
>> approach just to migrate to hosts with the same compatible property.
>>
>> If you concern is about DTS property then for IMSIC it will be always
>> riscv,imsics according to the RISC-V DT spec. (IIRC, the only other
>> option could be qemu,riscv). Actually, I can just hard code
>> "riscv,imsic" explicitly instead of re-using of host name.
>>
>> If your concern is that we will migrate to a host which doesn't support
>> IMSIC at all then we should or (a) don't migrate to such host or (b)
>> provide an emulation of IMSIC. And option (b) would be terrible from at
>> least performance point of view.
> 
> That would all be only a secondary concern - in an IMSIC is needed right
> now, so be it. My primary concern is with inheriting the host IMSIC's
> properties.
Could we do really something better?

At the moment, the following properties are inhereted:
node name -> not an issue at all, it is just a name of the node and 
generally doesn't matter what it is in the matter of DTB generation as 
phandle number of this node will be used as pointer to this node, not 
the name. If it would be better I can hard code just "imsic".

compatible -> also, not a big issue. According to current DT RISC-V 
bindings it could be just "riscv,imsic". But then I have the question 
what if one day someone will come up with own implementation of IMSIC 
then "riscv,own-imsic" will be in host DTB and so I expect that guest 
DTB should have it as this h/w expects to use specifically OWN-IMSIC 
driver. So it seems okay to copy compatible from host DTB. Yes, if 
migration will happen where just "riscv,imsic" is supported then it 
can't be easily migrated to such h/w and its okay. But generally I 
expect that compatible will always riscv,imsic.

riscv,num-ids -> generally, it could be any number from [63, 2047], but 
it seems like there is no any sense if put a value bigger then 
guest-num-ids=min(riscv,num-ids, riscv,num-guest-ids) for guest as h/w 
can't support more then that. At the same time I don't see too much 
sense to tell a guest that it supports less then guest-num-ids. What is 
the problem to give a guest a maximum that IMSIC could provide? With 
migration, of course, it will be an issue if new host will support 
different number of riscv,num-ids but I don't know what we can do better 
then just avoid migration to such hosts if old-num-ids > new-num-ids 
without significant performance drop.

As an summary it is okay IMO to re-use these host properties.

~ Oleksii




From xen-devel-bounces@lists.xenproject.org Fri Apr 17 08:27:44 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Fri, 17 Apr 2026 08:27:44 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1284033.1565971 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wDeY1-00033D-7L; Fri, 17 Apr 2026 08:27:33 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1284033.1565971; Fri, 17 Apr 2026 08:27: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 1wDeY1-000336-4O; Fri, 17 Apr 2026 08:27:33 +0000
Received: by outflank-mailman (input) for mailman id 1284033;
 Fri, 17 Apr 2026 08:27:31 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <bounce-md_30504962.69e1eef1.v1-d79241642dce4e9989a7f4075f540953@bounce.vates.tech>)
 id 1wDeXz-000330-Qs
 for xen-devel@lists.xenproject.org; Fri, 17 Apr 2026 08:27:31 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wDeXz-001e7M-70
 for xen-devel@lists.xenproject.org; Fri, 17 Apr 2026 10:27:31 +0200
Received: from [10.42.69.3] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1) (envelope-from
 <bounce-md_30504962.69e1eef1.v1-d79241642dce4e9989a7f4075f540953@bounce.vates.tech>)
 id 69e1eef0-5cb7-0a2a0a5109dd-0a2a450392b8-4
 for <xen-devel@lists.xenproject.org>; Fri, 17 Apr 2026 10:27:31 +0200
Received: from [198.2.187.30] (helo=mail187-30.suw11.mandrillapp.com)
 by tlsNG-33051d.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.1)
 (envelope-from
 <bounce-md_30504962.69e1eef1.v1-d79241642dce4e9989a7f4075f540953@bounce.vates.tech>)
 id 69e1eef1-672d-0a2a45030019-c602bb1e841a-3
 for <xen-devel@lists.xenproject.org>; Fri, 17 Apr 2026 10:27:30 +0200
Received: from pmta09.mandrill.prod.suw01.rsglab.com (localhost [127.0.0.1])
 by mail187-30.suw11.mandrillapp.com (Mailchimp) with ESMTP id
 4fxp0K45NQzP0Jmqd
 for <xen-devel@lists.xenproject.org>; Fri, 17 Apr 2026 08:27:29 +0000 (GMT)
Received: from [37.26.189.201] by mandrillapp.com id
 d79241642dce4e9989a7f4075f540953; Fri, 17 Apr 2026 08:27: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=mte1 header.d=mandrillapp.com header.i="@mandrillapp.com" header.h="From:Subject:To:Cc:Message-Id:References:In-Reply-To:Feedback-ID:Date:MIME-Version:Content-Type:Content-Transfer-Encoding"; dkim=pass header.s=mte1 header.d=vates.tech header.i="anthony.perard@vates.tech" header.h="From:Subject:To:Cc:Message-Id:References:In-Reply-To:Feedback-ID:Date:MIME-Version:Content-Type:Content-Transfer-Encoding"
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=mandrillapp.com;
	s=mte1; t=1776414449; x=1776684449;
	bh=p3fjiuwfEK2kqAivumZFHwViDj4gbcyHBsUQ9+3dGDE=;
	h=From:Subject:To:Cc:Message-Id:References:In-Reply-To:Feedback-ID:
	 Date:MIME-Version:Content-Type:Content-Transfer-Encoding:CC:Date:
	 Subject:From;
	b=OilPVXUa+qoG5253jXpeN4VbE22ZGxpqK1do9w75brvI5ASSokIy60DwPcvy7IGlj
	 cKopAJg0h0pNEASS2rHkUBhi6C8WV4yJ4ldLAyzqmozXmvhM6MB4ktBqr3il2ak0EO
	 dBW1PPFr3LRwRSjH6WYyU+sogU3O3SrBbD31uywKuk/REMNvTMvKBzZw9qb7z7Yit/
	 XIKDY4SQ5WauvbMJUv/r8NiV2dCeQaX3Z3+Cv5D60vCMk3NJCmv1X/gSnEgO/RUQhw
	 FBCIFl+jNa6yaC7YW8HD/sOltEHRyK4eEdN1jwxmU25HU3Eh0kSdfyjunz/oJKiTtQ
	 V1zlUjkl+e0vQ==
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=vates.tech; s=mte1;
	t=1776414449; x=1776674949; i=anthony.perard@vates.tech;
	bh=p3fjiuwfEK2kqAivumZFHwViDj4gbcyHBsUQ9+3dGDE=;
	h=From:Subject:To:Cc:Message-Id:References:In-Reply-To:Feedback-ID:
	 Date:MIME-Version:Content-Type:Content-Transfer-Encoding:CC:Date:
	 Subject:From;
	b=grGijPalEVVQxzdMg/cygjHALXHktuZCyhczeyuf2UxHNbm7twhF2DFJ5DcMW/7DU
	 Jz2EdMUXbDIKBshw4SEPfW+cB6uCraDECTWTzT+ycOxzK0rH8SQ06zYx4O6tSOorxZ
	 t8K21fL0M1bbzWfk85HItnDXPHXKuGDayvA4pPTbOqk1ZVeSE05GmDoAOahzlyfuYr
	 FEs4BRoD+qr4oE7BeN7Y3sc6NVAUzCSI1RXznNd5vRzMGo4YC01BSYsxaOxWcsE9lN
	 XnNxJhHHZbHeZ4rT/dExzU3YrOOX9YWges8Dbpa90dz/cgMUOuv9/w4Abyhqll/U+V
	 rrLP/7Vf9exPQ==
From: "Anthony PERARD" <anthony.perard@vates.tech>
Subject: =?utf-8?Q?Re:=20[PATCH=20v7]=20xen/domain:=20introduce=20DOMID=5FANY?=
X-Bm-Disclaimer: Yes
X-Bm-Milter-Handled: 4ffbd6c1-ee69-4e1b-aabd-f977039bd3e2
X-Bm-Transport-Timestamp: 1776414444332
To: dmukhin@ford.com
Cc: xen-devel@lists.xenproject.org, andrew.cooper3@citrix.com, jbeulich@suse.com, julien@xen.org, michal.orzel@amd.com, roger.pau@citrix.com, sstabellini@kernel.org
Message-Id: <aeHu69fCYs_2NFR4@l14>
References: <20260408234046.1314021-1-dmukhin@ford.com>
In-Reply-To: <20260408234046.1314021-1-dmukhin@ford.com>
X-Native-Encoded: 1
X-Report-Abuse: =?UTF-8?Q?Please=20forward=20a=20copy=20of=20this=20message,=20including=20all=20headers,=20to=20abuse@mandrill.com.=20You=20can=20also=20report=20abuse=20here:=20https://mandrillapp.com/contact/abuse=3Fid=3D30504962.d79241642dce4e9989a7f4075f540953?=
X-Mandrill-User: md_30504962
Feedback-ID: 30504962:30504962.20260417:md
Date: Fri, 17 Apr 2026 08:27:29 +0000
MIME-Version: 1.0
Content-Type: text/plain; charset=utf-8
Content-Transfer-Encoding: 7bit
X-purgate-ID: tlsNG-33051d/1776414451-29D7B938-2A7DF26C/0/0
X-purgate-type: clean
X-purgate-size: 788

On Wed, Apr 08, 2026 at 04:40:46PM -0700, dmukhin@ford.com wrote:
> From: Denis Mukhin <dmukhin@ford.com> 
> 
> Add a new symbol DOMID_ANY to improve the readability of the code.
> 
> Update all relevant domid_alloc() call sites and harden the domid_alloc()
> input value check.
> 
> Also, fix problem with passing invalid domain IDs in
> XEN_DOMCTL_createdomain: turns out libxl__domain_make() (toolstack)
> uses 0xffff as domain ID.
> 
> Amends: 2d5065060710 ("xen/domain: unify domain ID allocation")
> Signed-off-by: Denis Mukhin <dmukhin@ford.com>

Reviewed-by: Anthony PERARD <anthony.perard@vates.tech>

And I believe stefano's review would still apply, right?

Thanks,


--
 | Vates

XCP-ng & Xen Orchestra - Vates solutions

web: https://vates.tech



From xen-devel-bounces@lists.xenproject.org Fri Apr 17 08:57:47 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Fri, 17 Apr 2026 08:57:47 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1284050.1565980 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wDf1B-0006vY-D1; Fri, 17 Apr 2026 08:57:41 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1284050.1565980; Fri, 17 Apr 2026 08:57: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 1wDf1B-0006vR-AC; Fri, 17 Apr 2026 08:57:41 +0000
Received: by outflank-mailman (input) for mailman id 1284050;
 Fri, 17 Apr 2026 08:57:40 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <bounce-md_30504962.69e1f601.v1-5bc42f588c204b238698d215908a218c@bounce.vates.tech>)
 id 1wDf1A-0006vL-0n
 for xen-devel@lists.xenproject.org; Fri, 17 Apr 2026 08:57:40 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wDf19-00G32z-86
 for xen-devel@lists.xenproject.org; Fri, 17 Apr 2026 10:57:39 +0200
Received: from [10.42.69.2] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1) (envelope-from
 <bounce-md_30504962.69e1f601.v1-5bc42f588c204b238698d215908a218c@bounce.vates.tech>)
 id 69e1f5f7-e002-0a2a0a5209dd-0a2a4502db6c-36
 for <xen-devel@lists.xenproject.org>; Fri, 17 Apr 2026 10:57:39 +0200
Received: from [198.2.137.11] (helo=mail137-11.atl71.mandrillapp.com)
 by tlsNG-720697.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.1)
 (envelope-from
 <bounce-md_30504962.69e1f601.v1-5bc42f588c204b238698d215908a218c@bounce.vates.tech>)
 id 69e1f601-af86-0a2a45020019-c602890b55f9-3
 for <xen-devel@lists.xenproject.org>; Fri, 17 Apr 2026 10:57:38 +0200
Received: from mta004-md-usw2.delv.a.intuit.com (localhost [127.0.0.1])
 by mail137-11.atl71.mandrillapp.com (Mailchimp) with ESMTP id
 4fxpg50Zn1zDRZ7PB
 for <xen-devel@lists.xenproject.org>; Fri, 17 Apr 2026 08:57:37 +0000 (UTC)
Received: from [37.26.189.201] by mandrillapp.com id
 5bc42f588c204b238698d215908a218c; Fri, 17 Apr 2026 08:57: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=mte1 header.d=mandrillapp.com header.i="@mandrillapp.com" header.h="From:Subject:To:Cc:Message-Id:References:In-Reply-To:Feedback-ID:Date:MIME-Version:Content-Type:Content-Transfer-Encoding"; dkim=pass header.s=mte1 header.d=vates.tech header.i="anthony.perard@vates.tech" header.h="From:Subject:To:Cc:Message-Id:References:In-Reply-To:Feedback-ID:Date:MIME-Version:Content-Type:Content-Transfer-Encoding"
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=mandrillapp.com;
	s=mte1; t=1776416257; x=1776686257;
	bh=DW2l/jc+ZEcxNJuiNNbXqKEtvirgVWtkF8VjCPX3hh4=;
	h=From:Subject:To:Cc:Message-Id:References:In-Reply-To:Feedback-ID:
	 Date:MIME-Version:Content-Type:Content-Transfer-Encoding:CC:Date:
	 Subject:From;
	b=zYyjDc/3zFNXCrXm7VHZe7ylB4ai+L0Br+8/PG2vPyMor6V/MQQ14Nud2ofmm3w6D
	 MkCFL0rZC+S4014Wap5zCH2vgORObnE/X11men32PKDOgtUHON7oC94/bAk2/bGjEu
	 cPae1qwzid9wVKPbSjZnViGpBWKdf0dEB5Vail8C7HEC7lUdsoIMH6U9EL+Qui2oTK
	 Eu+idol4i/g3Rs9jdLua5PRTgMZWR/aEWBxsshrvs6gNlb32aYbrxyWp8b+udvXQCF
	 SO25K72mQgWOfbDJKGBDVAmBi2KTyjBnax+VW87PYg77vKVwKyd1+azxVxC31sprXn
	 VgZXL4PB4YrPQ==
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=vates.tech; s=mte1;
	t=1776416257; x=1776676757; i=anthony.perard@vates.tech;
	bh=DW2l/jc+ZEcxNJuiNNbXqKEtvirgVWtkF8VjCPX3hh4=;
	h=From:Subject:To:Cc:Message-Id:References:In-Reply-To:Feedback-ID:
	 Date:MIME-Version:Content-Type:Content-Transfer-Encoding:CC:Date:
	 Subject:From;
	b=Gp5wfOtHgiSAk3yA568oHC1o4YiofkHKaBTYC4a8Fm4bZOdaCqjYbvLwARcHVIfWO
	 EHlEJ/siS/wDnIZfF5N+SNEJnJYI0kyC7y7eyQztz1yA96LQOcDaXzV1EJPkNZ7lMe
	 4+LJxrOWz0fO6Rvj5hmIozJuiXdezTbVnEGLxtnnZHrLT4CTeJeVsLmYi0O8du8JB/
	 P4mCSbhZncXC7F/AHeXqAS2oAjmucE3g56K5CR7bg+tkHjk7Hozotws+Ldz4C4JRW4
	 P8OUnZwU5vJp9DPPyd02pQFpqY4M1dk+yEpCsiMhiJ38AFxAr6Hvi7fBaj1HkaGmKY
	 k+eDKFZeJ4twA==
From: "Anthony PERARD" <anthony.perard@vates.tech>
Subject: =?utf-8?Q?Re:=20[PATCH=20v10]=20xenpm:=20Add=20get-core-temp=20subcommand?=
X-Bm-Disclaimer: Yes
X-Bm-Milter-Handled: 4ffbd6c1-ee69-4e1b-aabd-f977039bd3e2
X-Bm-Transport-Timestamp: 1776416256345
To: "Teddy Astie" <teddy.astie@vates.tech>
Cc: xen-devel@lists.xenproject.org, "Oleksii Kurochko" <oleksii.kurochko@gmail.com>, "Community Manager" <community.manager@xenproject.org>
Message-Id: <aeH1_5V71IQCbgCI@l14>
References: <22bcde2914c0303b2c594485542af19d2952e782.1775570823.git.teddy.astie@vates.tech>
In-Reply-To: <22bcde2914c0303b2c594485542af19d2952e782.1775570823.git.teddy.astie@vates.tech>
X-Native-Encoded: 1
X-Report-Abuse: =?UTF-8?Q?Please=20forward=20a=20copy=20of=20this=20message,=20including=20all=20headers,=20to=20abuse@mandrill.com.=20You=20can=20also=20report=20abuse=20here:=20https://mandrillapp.com/contact/abuse=3Fid=3D30504962.5bc42f588c204b238698d215908a218c?=
X-Mandrill-User: md_30504962
Feedback-ID: 30504962:30504962.20260417:md
Date: Fri, 17 Apr 2026 08:57:37 +0000
MIME-Version: 1.0
Content-Type: text/plain; charset=utf-8
Content-Transfer-Encoding: quoted-printable
X-purgate-ID: tlsNG-720697/1776416259-B3762161-4279913A/0/0
X-purgate-type: clean
X-purgate-size: 774

On Tue, Apr 07, 2026 at 02:10:37PM +0000, Teddy Astie wrote:
> +    for ( cpu =3D 0; cpu < max_cpu_nr; cpu +=3D physinfo.threads_per_cor=
e )
> +    {
> +        if ( fetch_dts_temp(xc_handle, cpu, false, &temp) )
> +        {
> +            fprintf(stderr, "[CPU%d] Unable to fetch temperature (%d - %=
s)\n",
> +                    cpu, errno, strerror(errno));
> +            continue;
> +        }
> +

A trailing whitespace was introduced here since v9.

> +        has_data =3D true;
> +        printf("CPU%d: %d=C2=B0C\n", cpu, temp);
> +    }

Beside that, patch looks good to me now:
Reviewed-by: Anthony PERARD <anthony.perard@vates.tech>

Thanks,


--
 | Vates

XCP-ng & Xen Orchestra - Vates solutions

web: https://vates.tech




From xen-devel-bounces@lists.xenproject.org Fri Apr 17 09:01:45 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Fri, 17 Apr 2026 09:01:45 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1284062.1565988 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wDf53-0008SO-Vz; Fri, 17 Apr 2026 09:01:41 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1284062.1565988; Fri, 17 Apr 2026 09: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 1wDf53-0008SH-Sr; Fri, 17 Apr 2026 09:01:41 +0000
Received: by outflank-mailman (input) for mailman id 1284062;
 Fri, 17 Apr 2026 09:01:40 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92) id 1wDf52-0008SB-7U
 for xen-devel@lists.xenproject.org; Fri, 17 Apr 2026 09:01:40 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wDf51-00GqDg-K7
 for xen-devel@lists.xenproject.org; Fri, 17 Apr 2026 11:01:39 +0200
Received: from [10.42.69.2] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <oleksii.kurochko@gmail.com>)
 id 69e1f6f2-bab6-0a2a0a5309dd-0a2a4502b6f2-6
 for <xen-devel@lists.xenproject.org>; Fri, 17 Apr 2026 11:01:39 +0200
Received: from [209.85.208.175] (helo=mail-lj1-f175.google.com)
 by tlsNG-720697.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.1)
 (envelope-from <oleksii.kurochko@gmail.com>)
 id 69e1f6f3-af86-0a2a45020019-d155d0afc420-3
 for <xen-devel@lists.xenproject.org>; Fri, 17 Apr 2026 11:01:39 +0200
Received: by mail-lj1-f175.google.com with SMTP id
 38308e7fff4ca-38e8292423fso3590111fa.0
 for <xen-devel@lists.xenproject.org>; Fri, 17 Apr 2026 02:01:39 -0700 (PDT)
Received: from [192.168.1.6] (user-109-243-69-121.play-internet.pl.
 [109.243.69.121]) by smtp.gmail.com with ESMTPSA id
 2adb3069b0e04-5a4185ad0e7sm222358e87.12.2026.04.17.02.01.37
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Fri, 17 Apr 2026 02:01:37 -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=20251104 header.d=gmail.com header.i="@gmail.com" header.h="Content-Transfer-Encoding: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=20251104; t=1776416499; x=1777021299; darn=lists.xenproject.org;
        h=content-transfer-encoding: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;
        bh=yyDOfGAP1XApDMdmzMdhEjnwoVw9GsVz1oYxoOc7im4=;
        b=KgN42AxeL0hQ+MVPY5bmZhJivIB/pFt3ha4oCbgJKBZI4M64c/+5SmAErVL84Naybz
         XxiDk97jHadeq314WeV7vQNH8iWvGPMDymvJbzrI96cUPym51gzj6k7Jw6RHvkAgiWJj
         lqu1esGuYLSsnSzmW+vMZExWfJRteV8xljdm+hjlfuXZLY1wPEjZbCPDHIftljh2xa6O
         heBWIxXS1RHDD/Imn5wLlCdDRa93VxUgIPx4hsLebkTUYaqHdlFQwe1Sjq2CHeoPZF3d
         0xOW4MMSmtRe6xyse5UOXg2MkmZaXrnq6i+gKQWy6bJ5Z7WVtLhY90kYiu0CCqhoMOYW
         ee0A==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20251104; t=1776416499; x=1777021299;
        h=content-transfer-encoding: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;
        bh=yyDOfGAP1XApDMdmzMdhEjnwoVw9GsVz1oYxoOc7im4=;
        b=g23ji8D54jKdk4VuXHFgdxcOU5AJQNaZQ0k6dwdR5IAHG8uvjrAG/eSL2GzXdXjZtq
         hTBG7tqWLENBKPj67Rqd5GM3WhBebSB/foxgEGaU5zMJ4kWfrRKbF3ZrC5HHGcSm/FEO
         qIBc5F+oUdSQ7B/stBN8TEb+gb6AOaLmRb6YZJJ1yUdLzrFvGGMQg+Yk/dCfqijGiw6Y
         PRIU3h7+CaBvD3mTey0VzEvy+jx90vB9lmEQu0lQ4d4K9RSTRubQInMSzcZ1eTPdT11z
         wF5qjBEXsMoP810IP74dDoRq4DpT9rVGOp2tayWLUhH1/DIMbzuw6Rc9l+3buJbk8JzE
         SVbg==
X-Forwarded-Encrypted: i=1; AFNElJ9vAlx6+WZh7Z1fRa5OaHOm6iyE0G4vRqTSDjX8DiMYgRurqcFn0Azo/Bz/yK8frOZ66CGZs7p0QCc=@lists.xenproject.org
X-Gm-Message-State: AOJu0YzUSPFLL45pMMaHM1Dj79FqZL23HB4l0iF+9j2PrpeLWmEImxVX
	v2zSsQHt8WT7Un3HMmu1SrujnthwzkSa7jKwBt3KxYLiQwXmlLnpvZ6q
X-Gm-Gg: AeBDievv759hpdsXbzvKFh+TH4bKxU+RjCNEkp0/vk0oBiLy1HiALT33iJz9c7Sq5El
	MrIkemDEXEhNgMCD92BTlC2j7gCotg2aQgMMa4JMKP9D1hCaWcTnIVRXBjOZbnBnwlWAYFF7Bb0
	bdN3Cu6b7o8igCWP+yiqC7e54CXnVznsQxo/LBEqzW+GPCKVZHCRppxBS0Z6tojMHZPqc173OmY
	Yn2ep8WYxwYVtoK164TFLeeJHYxRGDMQ9xGH40XdpSC8t5KekAZQQdWs99HMMWufnpNJIhQcf/o
	2q/PGyqTOiunl8HeHiZNFfsLvKrubtyxn0KUcSaitHOb7RrgB4sWRBRbgHZP0gJVv7PgKrNDMww
	FL75hM1Fcut0aarRxFS6sKzIh4YO81L/0teT6rCqvwNFs3OQEfrTKuEPzdCGwmCFkp5Ln4wJ+Cd
	8jTpWgSQJdOFAspMRcO/kl9oC6r0qCpIgK9OFr+khM74ZUqYnNAEvB5P6jrEYW6s2veME9mo9HM
	TUeH3NIDyr35z9QLzkg+a0F
X-Received: by 2002:a05:6512:64ca:b0:5a4:176c:99ab with SMTP id 2adb3069b0e04-5a4176c99f7mr402192e87.4.1776416498271;
        Fri, 17 Apr 2026 02:01:38 -0700 (PDT)
Message-ID: <ac19fdeb-90fa-42bd-9041-7c2aaa5346d4@gmail.com>
Date: Fri, 17 Apr 2026 11:01:36 +0200
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH v1 11/27] xen/riscv: create APLIC DT node for guest
 domains
To: Jan Beulich <jbeulich@suse.com>
Cc: Romain Caritey <Romain.Caritey@microchip.com>,
 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.pau@citrix.com>,
 Stefano Stabellini <sstabellini@kernel.org>, xen-devel@lists.xenproject.org
References: <cover.1773157782.git.oleksii.kurochko@gmail.com>
 <462b5f7dbe4e5084a35fb869b59327c6c92d1fbf.1773157782.git.oleksii.kurochko@gmail.com>
 <362d1e3a-409c-40ab-8d2c-36dc30a04b88@suse.com>
 <9fd04b0f-3b04-4f1e-ac63-de0fca57d466@gmail.com>
 <7d022fea-0836-43b0-983d-5f7cb26a2e62@suse.com>
Content-Language: en-US
From: Oleksii Kurochko <oleksii.kurochko@gmail.com>
In-Reply-To: <7d022fea-0836-43b0-983d-5f7cb26a2e62@suse.com>
Content-Type: text/plain; charset=UTF-8; format=flowed
Content-Transfer-Encoding: 8bit
X-purgate-ID: tlsNG-720697/1776416499-8276A161-C00FA824/10/73395122804
X-purgate-type: spam
X-purgate-size: 3473



On 4/16/26 1:49 PM, Jan Beulich wrote:
> On 13.04.2026 10:43, Oleksii Kurochko wrote:
>> On 4/1/26 5:16 PM, Jan Beulich wrote:
>>> On 10.03.2026 18:08, Oleksii Kurochko wrote:
>>>> +    res = fdt_property(fdt, "#interrupt-cells", data, len);
>>>> +    if ( res )
>>>> +        return res;
>>>
>>> So host properties are again directly handed through to the guest?
>>
>> I am not sure that it can be different from what host has.
>>
>>> Shouldn't the number of interrupts (aiui that's the "number of cells"
>>> here) a guest gets be independent from the host it runs one?
>>
>> The #interrupt-cells property specifies how many 32-bit values (cells)
>> are used to encode a single interrupt specifier when referencing this
>> interrupt controller from another device node.
>> In this APLIC schema, it's fixed at const: 2, meaning every interrupt
>> reference requires exactly two cells — typically:
>>
>> Cell 1 — the interrupt source number (which of the riscv,num-sources
>> wired inputs)
>> Cell 2 — the interrupt type/trigger flags (e.g. edge vs. level, active
>> high/low)
> 
> So what if #interrupt-cells is 3 in the DT Xen is handed? If Xen can
> cope, should that value really also be handed through to guests?

I would say that it depends on what cell 3 will represent. But likely it 
will be needed to hand it to the guest.

> 
>>>> +    regs = dt_get_property(aplic_node, "reg", &len);
>>>> +    if ( !regs )
>>>> +    {
>>>> +        printk("%s: Can't find 'reg' property\n", aplic_node->full_name);
>>>> +        return -FDT_ERR_XEN(ENOENT);
>>>> +    }
>>>> +
>>>> +    res = fdt_property(fdt, "reg", regs, len);
>>>> +    if ( res )
>>>> +        return res;
>>>> +
>>>> +    data = dt_get_property(aplic_node, "riscv,num-sources", &len);
>>>> +    if ( !data )
>>>> +    {
>>>> +        printk("%s: Can't find 'riscv,num-sources' property\n",
>>>> +                aplic_node->full_name);
>>>> +        return -FDT_ERR_XEN(ENOENT);
>>>> +    }
>>>> +
>>>> +    res = fdt_property(fdt, "riscv,num-sources", data, len);
>>>> +    if ( res )
>>>> +        return res;
>>>
>>> Or maybe this is the number of interrupts?
>>
>> This is the total count of hardware interrupt lines wired into this
>> APLIC domain.
>>
>> It could be independent from the host it runs one but looking at the
>> possible range [1,1023] for this property if we will put for a guest
>> lets say 22 but new host support only 20 when we will be in a trouble
>> anyway.
> 
> Correct. But if you had some hosts with 1024 and some with 256, how
> would you bring up a guest on the former to later be able to migrate
> it to one of the latter when guests inherit the count from the host?

It will be impossible to do that without emulation, so I expect it will 
be easier to simply forbid migration to such a host.

Basically, it is just a game of numbers. We could try to estimate how 
many interrupts are needed for the guest, or for simplicity use some 
hard-coded number (say 128 or 256, something “pretty small”). Will it 
resolve the migration issue? Partially yes, but not fully, as there 
could always be cases where the new host’s number of sources is lower 
than our hard-coded “small guest value.” So having a smaller value will 
likely help on average and will allow to support more h/w migration to 
which could happen, but the migration issue will still be present.

~ Oleksii


From xen-devel-bounces@lists.xenproject.org Fri Apr 17 09:11:47 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Fri, 17 Apr 2026 09:11:47 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1284076.1565998 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wDfEi-0001qy-0G; Fri, 17 Apr 2026 09:11:40 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1284076.1565998; Fri, 17 Apr 2026 09:11: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 1wDfEh-0001qr-TQ; Fri, 17 Apr 2026 09:11:39 +0000
Received: by outflank-mailman (input) for mailman id 1284076;
 Fri, 17 Apr 2026 09:11:39 +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 1wDfEh-0001ql-Av
 for xen-devel@lists.xenproject.org; Fri, 17 Apr 2026 09:11:39 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wDfEg-008YgU-Nm
 for xen-devel@lists.xenproject.org; Fri, 17 Apr 2026 11:11:38 +0200
Received: from [10.42.69.6] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <Michal.Orzel@amd.com>)
 id 69e1f94a-2eae-0a2a0a5409dd-0a2a45069c6a-0
 for <xen-devel@lists.xenproject.org>; Fri, 17 Apr 2026 11:11:38 +0200
Received: from [52.101.43.7]
 (helo=SJ2PR03CU001.outbound.protection.outlook.com)
 by tlsNG-16d1c6.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.1)
 (envelope-from <Michal.Orzel@amd.com>)
 id 69e1f947-7371-0a2a45060019-34652b079f3f-4
 for <xen-devel@lists.xenproject.org>; Fri, 17 Apr 2026 11:11:37 +0200
Received: from MN2PR14CA0016.namprd14.prod.outlook.com (2603:10b6:208:23e::21)
 by LV5PR12MB9802.namprd12.prod.outlook.com (2603:10b6:408:2f8::19)
 with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9818.25; Fri, 17 Apr
 2026 09:11:31 +0000
Received: from BL6PEPF0002256E.namprd02.prod.outlook.com
 (2603:10b6:208:23e::4) by MN2PR14CA0016.outlook.office365.com
 (2603:10b6:208:23e::21) with Microsoft SMTP Server (version=TLS1_3,
 cipher=TLS_AES_256_GCM_SHA384) id 15.20.9769.52 via Frontend Transport; Fri,
 17 Apr 2026 09:11:31 +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.20.9769.17 via Frontend Transport; Fri, 17 Apr 2026 09:11:31 +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.17; Fri, 17 Apr
 2026 04:11:30 -0500
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.17; Fri, 17 Apr
 2026 04:11:30 -0500
Received: from XIR-MICHALO-L1.xilinx.com (10.180.168.240) by
 satlexmb07.amd.com (10.181.42.216) with Microsoft SMTP Server id 15.2.2562.17
 via Frontend Transport; Fri, 17 Apr 2026 04:11:29 -0500
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@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=HRPEn3d5ayI0BjsbzZkEOxc084lvabMGENemJg4jCEtFaojF6aAyqfJheyuNgK75Fel9oySFz7xVevWaHne//WJqci+ExxgBCSc4xVyJfNJYIQ3ox/U2fkzy0vcO9IIMjRAZyWRdTjVoT2SqB+FXrp7aWZ5z+LXD75hMZQspdMLhY2jsDLGDiPlZDeuKSR5COYqeqNQYQ/47o2BirUhhWCIAhDMOzGQTdzu3bH4Llop4KsYmCcfeBQqW7u3o/bbFAWKPU3L9IcX6q0FHPHqIPNCLloi7H8W93bmRUVPHjdIClRf6TsufkDH8ZEYPAtvSHaYYr8iPoy4REg20FP9TLA==
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com;
 s=arcselector10001;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1;
 bh=dGc9GNkzYOS/7hCAiOqhZl9P60tqMRQR33zQMxicpOA=;
 b=kOAOeLp0SzCui9RG5kgEREvz259dzRJ456venuG/trTBhYyOt0U4Qv6nyIDk57/PVf7JwvHZrUnQsvJ17DZQ+CgZTM35uqf/Qf+65WA5tHqfVxyrcqUyN4h1m5PeKzJWBbG2b61+Rhk01CPjEAHPSQip8p2EPmYtDVpUvihACih4knlqXqUCTAkFnmYGg4yPZWrZLdx6Qr1nyPP0uKXzV8KoJfqWJz9rMGOT4yI2RfxNUb0+YMLxv6qQfkI6wb6knIIwzoiZHD8BcEUfUXgVULjcC0+fxVrRj1Qky/OWIVe6XGMHYglYr5Jje/HoKO8aCJMkzUQjVI6qNGnt7jmA1g==
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=dGc9GNkzYOS/7hCAiOqhZl9P60tqMRQR33zQMxicpOA=;
 b=NjTc8nV+53AxHQOO6h9Pus9UKQQzSuwjCoJP1JeZahhZ3zOBaEYscTB3zqQEWgKY30pw3LbCOFW4opMn1YLMwD5nQKedCtc09mf0CCOi+u1l6hBItbvpXDHAXYZ4UPPeMT1Ket8Z3tJ9Cf503waL3Hfj3LqOVx7T3bSestNCXpY=
X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 165.204.84.17)
 smtp.mailfrom=amd.com; dkim=none (message not signed)
 header.d=none;dmarc=pass action=none header.from=amd.com;
Received-SPF: Pass (protection.outlook.com: domain of amd.com designates
 165.204.84.17 as permitted sender) receiver=protection.outlook.com;
 client-ip=165.204.84.17; helo=satlexmb07.amd.com; pr=C
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>,
	Luca Fancellu <Luca.Fancellu@arm.com>
Subject: [PATCH] xen/arm: skip holes in physical address space when setting up frametable
Date: Fri, 17 Apr 2026 11:11:24 +0200
Message-ID: <20260417091124.39552-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: BL6PEPF0002256E:EE_|LV5PR12MB9802:EE_
X-MS-Office365-Filtering-Correlation-Id: 665f9581-10c9-4707-1bd9-08de9c6150a4
X-MS-Exchange-SenderADCheck: 1
X-MS-Exchange-AntiSpam-Relay: 0
X-Microsoft-Antispam:
	BCL:0;ARA:13230040|36860700016|1800799024|376014|82310400026|56012099003|18096099003|18002099003;
X-Microsoft-Antispam-Message-Info:
	AIq9Lr8i+r10IGU992LSTRwTZTrXhtXvjHBq8MXqyH9qPkVYOzK+eb8W8VqoowYrSlzTNvKOPfxeB4pWkdE7JfrJVnukYEaQaGzM4laTLapyh6K8BsBd9D76br80qCt1PdX+4DYpDfZK+W8NUbKNQ0XbYQcaj9IkBBOCGezkIAtkeJhr4S/ttLFoM6t3eeGrbEoMwjwhKcgo2ldSddph0ZWGe5jsFEukr0S1xgmlo/sSyMXpxl28aQYCU67p3mukQ5HJzgTVEeazWbZ3sIUlkGMo96BJ3+C2qcc9iT+j3NXvzETwUD9mHeJMErrqQRLwUdKb5ImcZXDUeNJlvhEXN+qrd6XX7esVm1UuOUnvSsbI7C2U/5FIP7/av2qn4jm/pj3OW281ScJ/7BfL0YlehWnZnKyFKEXHUvJDMDqxRCg+Ja+gSF8pYqDyWDQVWnRk30CXL3fn5C7PiK90BebF78ZMLukqPQAWiIPF08WAXa7l7wWTJajfriTQKsJN3K2M5UFxHdpYPitYE238cDcGtD75zLjce2pLOcw9EU+HNYm/98SgIm3VoSsSAfeqSEGsiFQo5EAVGaiPJvj02qKtttu+g6qYha9yUghmt7SukgOEd9Q5kCnhYS+iX/2hQ8If5SHvqq5zBSmUm+FT4/BsA6GskmeAKtQ3DGAeDYfjwaOmrQzzicAm11ybl5w3suV7CVP+j/rptterk78TI3fI2Ft6i7So1EnbGu7wdhQMvhE45Tjv/cHPPcbnzDNcSL8XwMXPD1TbmOXqjx48+NCvVg==
X-Forefront-Antispam-Report:
	CIP:165.204.84.17;CTRY:US;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:satlexmb07.amd.com;PTR:InfoDomainNonexistent;CAT:NONE;SFS:(13230040)(36860700016)(1800799024)(376014)(82310400026)(56012099003)(18096099003)(18002099003);DIR:OUT;SFP:1101;
X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1
X-MS-Exchange-AntiSpam-MessageData-0:
	YyzHTxFnjxjJN0nWg+DGsr86lgb1ay66CJY/qx6Sc5/jagFxYibOmqtOYtR8n5ERyLmULrW+7sCC5u1mojpe0QVWnzo/ZtPNtOxC7fl3f097glCkX/XCwHGUXaFS9q+ny93UUA94s2N2QDZEfhICjuGgiywKJEWxK+bKxjfI7vF88DRTP2dxU23vynHNHxF/kNOyD+nnYWOjE5PUgj7vixiBwmyLCuzjCes+KDeg8d88WjPmULZQ4X56p66diLyiwUwc1VZMm2zwv4gSfMOjbtAYAojTQqPiyreUjgMkrOpbFuHaaneGAqM984GEOLqApOK7RK2ANJR728x1C3PtHBft+qP27bGfbLJn0MmgzmRo9BxI16cOvA2XpIfx2s4R6ds1ns3cj9fY05eokWaQiaZa8KsVzRL7BOEQWQf2GclhFHRyFYE4vmFWkEEVDUUv
X-OriginatorOrg: amd.com
X-MS-Exchange-CrossTenant-OriginalArrivalTime: 17 Apr 2026 09:11:31.1443
 (UTC)
X-MS-Exchange-CrossTenant-Network-Message-Id: 665f9581-10c9-4707-1bd9-08de9c6150a4
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: LV5PR12MB9802
X-purgate-ID: tlsNG-16d1c6/1776417098-50158D75-DFCA6778/0/0
X-purgate-type: clean
X-purgate-size: 9600

Refactor setup_frametable_mappings() into init_frametable(), modeled
after x86's implementation. Instead of mapping one contiguous frametable
covering ram_start to ram_end (including holes), iterate the
pdx_group_valid bitmap to allocate and map frametable memory only for
valid PDX groups, skipping gaps in the physical address space. At the
moment we don't really take into account pdx_group_valid bitmap.

This reduces memory consumption on systems with sparse RAM layouts by
not allocating frametable entries for non-existent memory regions.

A file-local pdx_to_page() override is needed because the generic macro
in xen/include/xen/pdx.h does not account for ARM's non-zero
frametable_base_pdx.

Update the MPU implementation to match the new init_frametable()
signature. Since MPU has no virtual address translation (ma == va),
hole-skipping is not possible and the frametable remains a single
contiguous allocation.

Signed-off-by: Michal Orzel <michal.orzel@amd.com>
---
We've been using this approach at AMD for a while now. Without this we would not
be able to boot some of our boards that have huge holes in the PA space, so I
consider this patch a great improvement.

Two things to consider as a follow-up in the future:
 - change generic pdx_to_page, page_to_pdx to take into account offset that
   on x86 is zero but on other arches it is not. The page list code is
   for now unaffected because the offset cancels out,
 - use the same on RISCV.
---
 xen/arch/arm/arm32/mmu/mm.c   |  3 +-
 xen/arch/arm/include/asm/mm.h |  4 +-
 xen/arch/arm/mm.c             |  2 +-
 xen/arch/arm/mmu/mm.c         | 77 ++++++++++++++++++++++++-----------
 xen/arch/arm/mpu/mm.c         | 23 ++++++-----
 5 files changed, 70 insertions(+), 39 deletions(-)

diff --git a/xen/arch/arm/arm32/mmu/mm.c b/xen/arch/arm/arm32/mmu/mm.c
index 5e4766ddcf65..0b595baa11b3 100644
--- a/xen/arch/arm/arm32/mmu/mm.c
+++ b/xen/arch/arm/arm32/mmu/mm.c
@@ -178,8 +178,7 @@ void __init setup_mm(void)
 
     setup_directmap_mappings(mfn_x(directmap_mfn_start), xenheap_pages);
 
-    /* Frame table covers all of RAM region, including holes */
-    setup_frametable_mappings(ram_start, ram_end);
+    init_frametable(ram_start);
 
     /*
      * The allocators may need to use map_domain_page() (such as for
diff --git a/xen/arch/arm/include/asm/mm.h b/xen/arch/arm/include/asm/mm.h
index 72a692862420..2eb8465aa904 100644
--- a/xen/arch/arm/include/asm/mm.h
+++ b/xen/arch/arm/include/asm/mm.h
@@ -196,8 +196,8 @@ extern void *early_fdt_map(paddr_t fdt_paddr);
 extern void remove_early_mappings(void);
 /* Prepare the memory subystem to bring-up the given secondary CPU */
 extern int prepare_secondary_mm(int cpu);
-/* Map a frame table to cover physical addresses ps through pe */
-extern void setup_frametable_mappings(paddr_t ps, paddr_t pe);
+/* Map a frame table */
+void init_frametable(paddr_t ram_start);
 /* Helper function to setup memory management */
 void setup_mm_helper(void);
 /* map a physical range in virtual memory */
diff --git a/xen/arch/arm/mm.c b/xen/arch/arm/mm.c
index 6df8b616e464..e6b651956927 100644
--- a/xen/arch/arm/mm.c
+++ b/xen/arch/arm/mm.c
@@ -62,7 +62,7 @@ void __init setup_mm(void)
 
     setup_mm_helper();
 
-    setup_frametable_mappings(ram_start, ram_end);
+    init_frametable(ram_start);
 
     init_staticmem_pages();
     init_sharedmem_pages();
diff --git a/xen/arch/arm/mmu/mm.c b/xen/arch/arm/mmu/mm.c
index 6604f3bf4e6a..4b4da349c16c 100644
--- a/xen/arch/arm/mmu/mm.c
+++ b/xen/arch/arm/mmu/mm.c
@@ -8,16 +8,37 @@
 #include <xen/pdx.h>
 #include <xen/string.h>
 
-/* Map a frame table to cover physical addresses ps through pe */
-void __init setup_frametable_mappings(paddr_t ps, paddr_t pe)
+#undef pdx_to_page
+#define pdx_to_page(pdx) gcc11_wrap(frame_table + ((pdx) - frametable_base_pdx))
+
+static void __init
+init_frametable_chunk(unsigned long pdx_s, unsigned long pdx_e)
 {
-    unsigned long nr_pdxs = mfn_to_pdx(mfn_add(maddr_to_mfn(pe), -1)) -
-                            mfn_to_pdx(maddr_to_mfn(ps)) + 1;
-    unsigned long frametable_size = nr_pdxs * sizeof(struct page_info);
-    mfn_t base_mfn;
-    const unsigned long mapping_size = frametable_size < MB(32) ? MB(2)
-                                                                : MB(32);
+    unsigned long nr_pdxs = pdx_e - pdx_s;
+    unsigned long chunk_size = nr_pdxs * sizeof(struct page_info);
+    const unsigned long mapping_size = chunk_size < MB(32) ? MB(2) : MB(32);
+    unsigned long virt;
     int rc;
+    mfn_t base_mfn;
+
+    /* Round up to 2M or 32M boundary, as appropriate. */
+    chunk_size = ROUNDUP(chunk_size, mapping_size);
+    base_mfn = alloc_boot_pages(chunk_size >> PAGE_SHIFT, 32 << (20 - 12));
+
+    virt = (unsigned long)pdx_to_page(pdx_s);
+    rc = map_pages_to_xen(virt, base_mfn, chunk_size >> PAGE_SHIFT,
+                          PAGE_HYPERVISOR_RW | _PAGE_BLOCK);
+    if ( rc )
+        panic("Unable to setup the frametable mappings\n");
+
+    memset(pdx_to_page(pdx_s), 0, nr_pdxs * sizeof(struct page_info));
+    memset(pdx_to_page(pdx_e), -1,
+           chunk_size - nr_pdxs * sizeof(struct page_info));
+}
+
+void __init init_frametable(paddr_t ram_start)
+{
+    unsigned int sidx, nidx, max_idx;
 
     /*
      * The size of paddr_t should be sufficient for the complete range of
@@ -26,24 +47,34 @@ void __init setup_frametable_mappings(paddr_t ps, paddr_t pe)
     BUILD_BUG_ON((sizeof(paddr_t) * BITS_PER_BYTE) < PADDR_BITS);
     BUILD_BUG_ON(sizeof(struct page_info) != PAGE_INFO_SIZE);
 
-    if ( frametable_size > FRAMETABLE_SIZE )
-        panic("The frametable cannot cover the physical region %#"PRIpaddr" - %#"PRIpaddr"\n",
-              ps, pe);
+    max_idx = DIV_ROUND_UP(max_pdx, PDX_GROUP_COUNT);
+    frametable_base_pdx = mfn_to_pdx(maddr_to_mfn(ram_start));
 
-    frametable_base_pdx = mfn_to_pdx(maddr_to_mfn(ps));
-    /* Round up to 2M or 32M boundary, as appropriate. */
-    frametable_size = ROUNDUP(frametable_size, mapping_size);
-    base_mfn = alloc_boot_pages(frametable_size >> PAGE_SHIFT, 32<<(20-12));
+    /*
+     * pdx_to_page(pdx_s) in init_frametable_chunk must be page-aligned
+     * for map_pages_to_xen(). Aligning to PDX_GROUP_COUNT guarantees this
+     * because PDX_GROUP_COUNT * sizeof(page_info) is always a multiple of
+     * PAGE_SIZE by construction.
+     */
+    frametable_base_pdx = ROUNDDOWN(frametable_base_pdx, PDX_GROUP_COUNT);
 
-    rc = map_pages_to_xen(FRAMETABLE_VIRT_START, base_mfn,
-                          frametable_size >> PAGE_SHIFT,
-                          PAGE_HYPERVISOR_RW | _PAGE_BLOCK);
-    if ( rc )
-        panic("Unable to setup the frametable mappings.\n");
+    if ( (max_pdx - frametable_base_pdx) > FRAMETABLE_NR )
+        panic("Frametable too small\n");
+
+    for ( sidx = (frametable_base_pdx / PDX_GROUP_COUNT); ; sidx = nidx )
+    {
+        unsigned int eidx;
+
+        eidx = find_next_zero_bit(pdx_group_valid, max_idx, sidx);
+        nidx = find_next_bit(pdx_group_valid, max_idx, eidx);
+
+        if ( nidx >= max_idx )
+            break;
+
+        init_frametable_chunk(sidx * PDX_GROUP_COUNT, eidx * PDX_GROUP_COUNT);
+    }
 
-    memset(&frame_table[0], 0, nr_pdxs * sizeof(struct page_info));
-    memset(&frame_table[nr_pdxs], -1,
-           frametable_size - (nr_pdxs * sizeof(struct page_info)));
+    init_frametable_chunk(sidx * PDX_GROUP_COUNT, max_pdx);
 }
 
 /*
diff --git a/xen/arch/arm/mpu/mm.c b/xen/arch/arm/mpu/mm.c
index aff88bd3a9c1..9c568831c128 100644
--- a/xen/arch/arm/mpu/mm.c
+++ b/xen/arch/arm/mpu/mm.c
@@ -186,16 +186,15 @@ static int is_mm_attr_match(pr_t *region, unsigned int attributes)
     return 0;
 }
 
-/* Map a frame table to cover physical addresses ps through pe */
-void __init setup_frametable_mappings(paddr_t ps, paddr_t pe)
+/*
+ * Allocate a contiguous frame table covering ram_start through max_pdx.
+ * Unlike the MMU version, MPU cannot skip holes because there is no virtual
+ * address translation (ma == va).
+ */
+void __init init_frametable(paddr_t ram_start)
 {
+    unsigned long nr_pdxs, frametable_size;
     mfn_t base_mfn;
-    paddr_t aligned_ps = ROUNDUP(ps, PAGE_SIZE);
-    paddr_t aligned_pe = ROUNDDOWN(pe, PAGE_SIZE);
-
-    unsigned long nr_pdxs = mfn_to_pdx(mfn_add(maddr_to_mfn(aligned_pe), -1)) -
-                            mfn_to_pdx(maddr_to_mfn(aligned_ps)) + 1;
-    unsigned long frametable_size = nr_pdxs * sizeof(struct page_info);
 
     /*
      * The size of paddr_t should be sufficient for the complete range of
@@ -204,11 +203,13 @@ void __init setup_frametable_mappings(paddr_t ps, paddr_t pe)
     BUILD_BUG_ON((sizeof(paddr_t) * BITS_PER_BYTE) < PADDR_BITS);
     BUILD_BUG_ON(sizeof(struct page_info) != PAGE_INFO_SIZE);
 
+    frametable_base_pdx = mfn_to_pdx(maddr_to_mfn(ram_start));
+    nr_pdxs = max_pdx - frametable_base_pdx;
+    frametable_size = nr_pdxs * sizeof(struct page_info);
+
     if ( frametable_size > FRAMETABLE_SIZE )
-        panic("The frametable cannot cover the physical region %#"PRIpaddr" - %#"PRIpaddr"\n",
-              ps, pe);
+        panic("Frametable too small\n");
 
-    frametable_base_pdx = paddr_to_pdx(aligned_ps);
     frametable_size = ROUNDUP(frametable_size, PAGE_SIZE);
 
     base_mfn = alloc_boot_pages(frametable_size >> PAGE_SHIFT, 1);
-- 
2.43.0



From xen-devel-bounces@lists.xenproject.org Fri Apr 17 09:12:18 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Fri, 17 Apr 2026 09:12:18 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1284085.1566006 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wDfFK-0002Kr-92; Fri, 17 Apr 2026 09:12:18 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1284085.1566006; Fri, 17 Apr 2026 09:12: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 1wDfFK-0002Kk-65; Fri, 17 Apr 2026 09:12:18 +0000
Received: by outflank-mailman (input) for mailman id 1284085;
 Fri, 17 Apr 2026 09:12:17 +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 1wDfFI-0002K8-U9
 for xen-devel@lists.xenproject.org; Fri, 17 Apr 2026 09:12:17 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wDfFI-001vR5-Aj
 for xen-devel@lists.xenproject.org; Fri, 17 Apr 2026 11:12:16 +0200
Received: from [10.42.69.9] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <Michal.Orzel@amd.com>)
 id 69e1f963-2eae-0a2a0a5409dd-0a2a4509e898-46
 for <xen-devel@lists.xenproject.org>; Fri, 17 Apr 2026 11:12:15 +0200
Received: from [40.107.200.50]
 (helo=CH5PR02CU005.outbound.protection.outlook.com)
 by tlsNG-bad1c0.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.1)
 (envelope-from <Michal.Orzel@amd.com>)
 id 69e1f96d-2497-0a2a45090019-286bc832562c-4
 for <xen-devel@lists.xenproject.org>; Fri, 17 Apr 2026 11:12:15 +0200
Received: from PH8PR07CA0025.namprd07.prod.outlook.com (2603:10b6:510:2cf::13)
 by BL3PR12MB6572.namprd12.prod.outlook.com (2603:10b6:208:38f::13)
 with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9769.17; Fri, 17 Apr
 2026 09:12:10 +0000
Received: from CY4PEPF0000EE38.namprd03.prod.outlook.com
 (2603:10b6:510:2cf:cafe::c9) by PH8PR07CA0025.outlook.office365.com
 (2603:10b6:510:2cf::13) with Microsoft SMTP Server (version=TLS1_3,
 cipher=TLS_AES_256_GCM_SHA384) id 15.20.9769.52 via Frontend Transport; Fri,
 17 Apr 2026 09:12:09 +0000
Received: from satlexmb08.amd.com (165.204.84.17) by
 CY4PEPF0000EE38.mail.protection.outlook.com (10.167.242.10) with Microsoft
 SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id
 15.20.9769.17 via Frontend Transport; Fri, 17 Apr 2026 09:12: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.17; Fri, 17 Apr
 2026 04:12:08 -0500
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.17; Fri, 17 Apr
 2026 04:12:07 -0500
Received: from XIR-MICHALO-L1.xilinx.com (10.180.168.240) by
 satlexmb07.amd.com (10.181.42.216) with Microsoft SMTP Server id 15.2.2562.17
 via Frontend Transport; Fri, 17 Apr 2026 04:12:06 -0500
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@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=MXDR21u60QeodK9WNj/nNdtfelVg9cFppiISN1qAguet13ArU/YWJmosop8RsMgmWIXumzz70Kd9nTBbomTitq6jwj2ZPiCpn26Dz8WrwUbGmuAFjdSKChKUu6azk35rbOKNkv0aSOGKjVGVLP4e6dv2+N0uwMSKhSlBcGMPWac8YXQYQ2hDNroLuD+5H9lk2mKP6/v3eRIRowKQTs4sTv2Y8v7BgrW/cSKTN6gwuE4EvHOGDpJfSb5DRHBFmHQ/168/ayOujqcyyqkcBNZATXqh0nNOtoNHTZ9LDg/VM84nwLwI0zgZROZaQOqdqCI8YE1I68cKUpxRp2drn8VLyQ==
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com;
 s=arcselector10001;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1;
 bh=JKn5zKUavkcvPog4fXZ4j4u8fjK1wj6lwUSHN1kEG7o=;
 b=AK0azPIPXnmx3eTDejwZLqZF1k7cGq6WLQ5lsQZjCjYHz/gjaK+HD30cXn8rzquPJPnKCHO5iFwN//VqD+XQfytN/VsdZZTOe33RPQ7pcbCCepzmEqVAKpP71LyoEkFLEeAT2KZ74Re7xeyI8HkRvAvgEohN/C53Xm4pSlmaeZASD+6X+kV54q0pcll3trLu27XERU+czZFO+7PZpXTw89CkLekJxysYFBrUYXTIr39c7+Z7zR3AVrJIsaCUhK1mFjSJouTEnahsLOCJ3WNKjLv41wlABFQikpgSj7xzFjU0/nc71meXClQaREvLLZ6p6/lGui3BeCOpQlr8ypUTnw==
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=JKn5zKUavkcvPog4fXZ4j4u8fjK1wj6lwUSHN1kEG7o=;
 b=x7zoMbOiSy/s8sOyOEnBbxGkHhaNIckztd8+riCHY0od9b3u5vnnMxm/iY5bUGnLO2vvTYDgaPP6Vs9A+1IAEgJRLIXF7laPKBA12GkEJ8n1j8dG8eNSOfWiMSheQplamzEfXQeVG4kqAgNQj5phcZdRpqVq9+zXyE2CbVB7Uoo=
X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 165.204.84.17)
 smtp.mailfrom=amd.com; dkim=none (message not signed)
 header.d=none;dmarc=pass action=none header.from=amd.com;
Received-SPF: Pass (protection.outlook.com: domain of amd.com designates
 165.204.84.17 as permitted sender) receiver=protection.outlook.com;
 client-ip=165.204.84.17; helo=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>, Luca Fancellu <Luca.Fancellu@arm.com>
Subject: [PATCH] device-tree: Improve hwdom memory allocation for DMA
Date: Fri, 17 Apr 2026 11:11:55 +0200
Message-ID: <20260417091155.39653-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: CY4PEPF0000EE38:EE_|BL3PR12MB6572:EE_
X-MS-Office365-Filtering-Correlation-Id: afb89aad-3684-4fff-6c01-08de9c6166f5
X-MS-Exchange-SenderADCheck: 1
X-MS-Exchange-AntiSpam-Relay: 0
X-Microsoft-Antispam:
	BCL:0;ARA:13230040|82310400026|376014|36860700016|1800799024|18002099003|56012099003;
X-Microsoft-Antispam-Message-Info:
	FDjdiMBzpJuv3LAF2f3WMi1e+LE42zrgYf8RDJP9oK7voHOrV8dNnV1aV3cn5qseI+YhpbA+0Xuq1IkD1eAUhy9pVlJxg/o3O4x0Ink+ArxrfVHver4wuwH6DME4MyWc1vkcs1/NDhll9frYvgsFdoQLdBbUGn3Dd0lD7obm2A4L5c51l4kGkUDkehPN1XHe587yVbpfRNU4e/kX/IAklOI+ZHV8CBXEly5fJVloPTId45df2nKQkMj+XVw5RA6QZBNiMu0+6MNmjcCiEi9RbIRFWRsP4tpRWx0wgbNFkg+NJ2y4qCl0OjNNVawBzQciWoC14eBw5zJsPGoO7q7fBLm/ZgZ1/3obn6Xp4a2hBd+SMfnf9CRWHqb2BHjrSk11Hz9ykbWJT+lYsF9MEyUyiJiVsZNIv9Kxgq8nJDesyN5RUZG7XVIBMK8+AooHWIEdvnhfG3LdFk0HEk4VGWc4bHbSz6H7AuA8M9PnS3tojSi1o3q1REeECANYEuzVbVrSUhzffSmoHlyyu6IH3KS/UKCPFhLOiUz0v3mocJVsS9ee21/mTlUc48vCE0HYEpuud4YLUc45XhWmW7uuQgnbUUnRBNSq8zpqN35IahhPTpKhpFKxFU4R+pY8H0FvlzrwR86kGAeM3yMVb76aQ4AwzsWUgoFVTTZFzKBY91kd/9Yb/fMSj2Zww7bsyFch5TUS+dJ/7Espw17fXVmOz3/pE0VEXEtUNbrqJzkiQZ/lkSlke7FDvzYs2Z80e7bIcvU9s+9n9+AJj2wnNDJSceEXRQ==
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)(376014)(36860700016)(1800799024)(18002099003)(56012099003);DIR:OUT;SFP:1101;
X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1
X-MS-Exchange-AntiSpam-MessageData-0:
	JWi/9SJymGEG7Szla+KuBQldHp1MTH2Mwb1jo7hS9+PDLNFhPjPshKjMNWnbdjBKeNDDyWPmNtTmb6OoKvFXsLwAwZ8TPJKeNvXD/++l5dDaEn70kyFCLumCcCh8x43BXjBixGQcngsHvHUwZMGLhVDar6O2QlGYM7+N4OSAzglEXl1bLcvwBN6BbDFQb2Y2MFsuxxEa8fRdSOMbHG9ZPtzxDplcQywa90bHaQr9DMntDt1IJFpMxMdPNzblpkv8g5xQ7W1savhwtUrgYH12GxQmmS+O7gGzMf98348lGleF2pjHWkWqnYMyZgBZ2kPI4NTEnjXagUX0pLhp94nsrLGYykTL4HYdtNbUdRBq1Uczj1RAtin62eFxJKUjxxhC8hXDBxA1dQQ5Siyo8m1EGVR7MlJ/8u6s/sAU2k9ZcLApUT2WMLjwWhVANZ3cLz79
X-OriginatorOrg: amd.com
X-MS-Exchange-CrossTenant-OriginalArrivalTime: 17 Apr 2026 09:12:08.5413
 (UTC)
X-MS-Exchange-CrossTenant-Network-Message-Id: afb89aad-3684-4fff-6c01-08de9c6166f5
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:
	CY4PEPF0000EE38.namprd03.prod.outlook.com
X-MS-Exchange-CrossTenant-AuthAs: Anonymous
X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem
X-MS-Exchange-Transport-CrossTenantHeadersStamped: BL3PR12MB6572
X-purgate-ID: tlsNG-bad1c0/1776417135-496B0A53-8E953B89/0/0
X-purgate-type: clean
X-purgate-size: 8074

When LLC coloring is enabled, the hardware domain gets memory from
host free regions rather than the fixed guest RAM banks.  The previous
code sorted these regions by descending size, which usually causes
high-address memory to be allocated first.

All allocated memory could reside above 4 GB leaving DMA non-functional
for devices with limited addressing capabilities.

Improve the handling as follows:
- Sort free regions by ascending address instead of descending size,
  so low-memory banks are allocated first,
- Skip banks smaller than 128 MB (or the total remaining allocation,
  whichever is less) until the first bank is placed, ensuring
  place_modules() has enough contiguous space,
- Extract the hardware domain allocation path into its own function
  (allocate_hwdom_memory) for clarity.

Signed-off-by: Michal Orzel <michal.orzel@amd.com>
---
 xen/common/device-tree/domain-build.c | 152 ++++++++++++++++----------
 1 file changed, 96 insertions(+), 56 deletions(-)

diff --git a/xen/common/device-tree/domain-build.c b/xen/common/device-tree/domain-build.c
index 540627b74e96..c51520ebadf9 100644
--- a/xen/common/device-tree/domain-build.c
+++ b/xen/common/device-tree/domain-build.c
@@ -133,9 +133,9 @@ static int __init add_hwdom_free_regions(unsigned long s_gfn,
     e += 1;
     size = (e - start) & ~(SZ_2M - 1);
 
-    /* Find the insert position (descending order). */
-    for ( i = 0; i < free_regions->nr_banks ; i++ )
-        if ( size > free_regions->bank[i].size )
+    /* Find the insert position (ascending address order). */
+    for ( i = 0; i < free_regions->nr_banks; i++ )
+        if ( start < free_regions->bank[i].start )
             break;
 
     /* Move the other banks to make space. */
@@ -234,82 +234,123 @@ out:
     return res;
 }
 
-void __init allocate_memory(struct domain *d, struct kernel_info *kinfo)
+/*
+ * Allocate memory for the hardware domain using the host memory layout, when
+ * the domain is not direct mapped. The only case for this is when LLC coloring
+ * is enabled.
+ *
+ * Banks are sorted by ascending address from add_hwdom_free_regions(), so
+ * low memory banks are naturally allocated first (if any). This allows the
+ * hardware domain to have memory reachable by devices with limited DMA address
+ * capabilities (e.g. 32-bit DMA).
+ *
+ * The first bank allocated must be large enough for place_modules() to fit
+ * the kernel, DTB and initrd.
+ */
+static bool __init allocate_hwdom_memory(struct kernel_info *kinfo)
 {
+    const paddr_t min_bank_size =
+        min_t(paddr_t, kinfo->unassigned_mem, MB(128));
     struct membanks *mem = kernel_info_get_mem(kinfo);
-    unsigned int i, nr_banks = GUEST_RAM_BANKS;
-    struct membanks *hwdom_free_mem = NULL;
-
-    printk(XENLOG_INFO "Allocating mappings totalling %ldMB for %pd:\n",
-           /* Don't want format this as PRIpaddr (16 digit hex) */
-           (unsigned long)(kinfo->unassigned_mem >> 20), d);
+    unsigned int i, nr_banks;
+    struct membanks *hwdom_free_mem;
+    struct membanks *gnttab =
+        IS_ENABLED(CONFIG_GRANT_TABLE)
+        ? membanks_xzalloc(1, MEMORY)
+        : NULL;
 
-    mem->nr_banks = 0;
     /*
-     * Use host memory layout for hwdom. Only case for this is when LLC coloring
-     * is enabled.
+     * Exclude the following regions:
+     * 1) Remove reserved memory
+     * 2) Grant table assigned to hwdom
      */
-    if ( is_hardware_domain(d) )
-    {
-        struct membanks *gnttab =
-            IS_ENABLED(CONFIG_GRANT_TABLE)
-            ? membanks_xzalloc(1, MEMORY)
-            : NULL;
-        /*
-         * Exclude the following regions:
-         * 1) Remove reserved memory
-         * 2) Grant table assigned to hwdom
-         */
-        const struct membanks *mem_banks[] = {
-            bootinfo_get_reserved_mem(),
-            gnttab,
-        };
+    const struct membanks *mem_banks[] = {
+        bootinfo_get_reserved_mem(),
+        gnttab,
+    };
 
 #ifdef CONFIG_GRANT_TABLE
-        if ( !gnttab )
-            goto fail;
+    if ( !gnttab )
+        return false;
 
-        gnttab->nr_banks = 1;
-        gnttab->bank[0].start = kinfo->gnttab_start;
-        gnttab->bank[0].size = kinfo->gnttab_size;
+    gnttab->nr_banks = 1;
+    gnttab->bank[0].start = kinfo->gnttab_start;
+    gnttab->bank[0].size = kinfo->gnttab_size;
 #endif
 
-        hwdom_free_mem = membanks_xzalloc(NR_MEM_BANKS, MEMORY);
-        if ( !hwdom_free_mem )
-            goto fail;
-
-        if ( find_unallocated_memory(kinfo, mem_banks, ARRAY_SIZE(mem_banks),
-                                     hwdom_free_mem, add_hwdom_free_regions) )
-            goto fail;
+    hwdom_free_mem = membanks_xzalloc(NR_MEM_BANKS, MEMORY);
+    if ( !hwdom_free_mem )
+    {
+        xfree(gnttab);
+        return false;
+    }
 
-        nr_banks = hwdom_free_mem->nr_banks;
+    if ( find_unallocated_memory(kinfo, mem_banks, ARRAY_SIZE(mem_banks),
+                                 hwdom_free_mem, add_hwdom_free_regions) )
+    {
         xfree(gnttab);
+        xfree(hwdom_free_mem);
+        return false;
     }
 
-    for ( i = 0; kinfo->unassigned_mem > 0 && nr_banks > 0; i++, nr_banks-- )
+    xfree(gnttab);
+    nr_banks = hwdom_free_mem->nr_banks;
+
+    for ( i = 0; (kinfo->unassigned_mem > 0) && (i < nr_banks); i++ )
     {
-        paddr_t bank_start, bank_size;
+        paddr_t bank_size;
+
+        /*
+         * The first bank must be large enough for place_modules() to
+         * fit the kernel, DTB and initrd.  Skip small regions to avoid
+         * ending up with a tiny first bank.
+         */
+        if ( !mem->nr_banks && (hwdom_free_mem->bank[i].size < min_bank_size) )
+            continue;
 
-        if ( is_hardware_domain(d) )
+        bank_size = MIN(hwdom_free_mem->bank[i].size, kinfo->unassigned_mem);
+        if ( !allocate_bank_memory(kinfo,
+                                   gaddr_to_gfn(hwdom_free_mem->bank[i].start),
+                                   bank_size) )
         {
-            bank_start = hwdom_free_mem->bank[i].start;
-            bank_size = hwdom_free_mem->bank[i].size;
+            xfree(hwdom_free_mem);
+            return false;
         }
-        else
+    }
+
+    xfree(hwdom_free_mem);
+    return true;
+}
+
+void __init allocate_memory(struct domain *d, struct kernel_info *kinfo)
+{
+    struct membanks *mem = kernel_info_get_mem(kinfo);
+    unsigned int i;
+
+    printk(XENLOG_INFO "Allocating mappings totalling %ldMB for %pd:\n",
+           /* Don't want format this as PRIpaddr (16 digit hex) */
+           (unsigned long)(kinfo->unassigned_mem >> 20), d);
+
+    mem->nr_banks = 0;
+
+    if ( is_hardware_domain(d) )
+    {
+        if ( !allocate_hwdom_memory(kinfo) )
+            goto fail;
+    }
+    else
+    {
+        for ( i = 0; kinfo->unassigned_mem > 0 && i < GUEST_RAM_BANKS; i++ )
         {
             const uint64_t bankbase[] = GUEST_RAM_BANK_BASES;
             const uint64_t banksize[] = GUEST_RAM_BANK_SIZES;
+            paddr_t bank_size;
 
-            if ( i >= GUEST_RAM_BANKS )
+            bank_size = MIN(banksize[i], kinfo->unassigned_mem);
+            if ( !allocate_bank_memory(kinfo, gaddr_to_gfn(bankbase[i]),
+                                       bank_size) )
                 goto fail;
-
-            bank_start = bankbase[i];
-            bank_size = banksize[i];
         }
-
-        bank_size = MIN(bank_size, kinfo->unassigned_mem);
-        if ( !allocate_bank_memory(kinfo, gaddr_to_gfn(bank_start), bank_size) )
-            goto fail;
     }
 
     if ( kinfo->unassigned_mem )
@@ -326,7 +367,6 @@ void __init allocate_memory(struct domain *d, struct kernel_info *kinfo)
                (unsigned long)(mem->bank[i].size >> 20));
     }
 
-    xfree(hwdom_free_mem);
     return;
 
   fail:
-- 
2.43.0



From xen-devel-bounces@lists.xenproject.org Fri Apr 17 09:38:13 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Fri, 17 Apr 2026 09:38:13 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1284113.1566017 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wDfeD-0005WW-9r; Fri, 17 Apr 2026 09:38:01 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1284113.1566017; Fri, 17 Apr 2026 09:38: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 1wDfeD-0005WP-6I; Fri, 17 Apr 2026 09:38:01 +0000
Received: by outflank-mailman (input) for mailman id 1284113;
 Fri, 17 Apr 2026 09:37:59 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92) id 1wDfeB-0005WJ-Ss
 for xen-devel@lists.xenproject.org; Fri, 17 Apr 2026 09:37:59 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wDfeB-008dQl-9K
 for xen-devel@lists.xenproject.org; Fri, 17 Apr 2026 11:37:59 +0200
Received: from [10.42.69.4] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <oleksii.kurochko@gmail.com>)
 id 69e1ff6d-2eae-0a2a0a5409dd-0a2a4504a354-34
 for <xen-devel@lists.xenproject.org>; Fri, 17 Apr 2026 11:37:59 +0200
Received: from [209.85.221.43] (helo=mail-wr1-f43.google.com)
 by tlsNG-ebf023.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.1)
 (envelope-from <oleksii.kurochko@gmail.com>)
 id 69e1ff77-1dec-0a2a45040019-d155dd2ba5aa-3
 for <xen-devel@lists.xenproject.org>; Fri, 17 Apr 2026 11:37:59 +0200
Received: by mail-wr1-f43.google.com with SMTP id
 ffacd0b85a97d-43d7a5e77b1so329061f8f.1
 for <xen-devel@lists.xenproject.org>; Fri, 17 Apr 2026 02:37:59 -0700 (PDT)
Received: from [192.168.1.6] (user-109-243-69-121.play-internet.pl.
 [109.243.69.121]) by smtp.gmail.com with ESMTPSA id
 ffacd0b85a97d-43fe4cc375dsm2922700f8f.14.2026.04.17.02.37.57
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Fri, 17 Apr 2026 02:37:57 -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=20251104 header.d=gmail.com header.i="@gmail.com" header.h="Content-Transfer-Encoding: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=20251104; t=1776418679; x=1777023479; darn=lists.xenproject.org;
        h=content-transfer-encoding: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;
        bh=32a4vcSAxYl5lrfQpnuVVJuIBeF4Rh7aLydhWtC+Ve8=;
        b=G3fJUj+svFL+i60/+J5xg//82R1v+DPD+2loFLKceSlfCCd9TCJyUD+jHs2Reuh9Mu
         8xfke1Pk8EhDy+jYnAmU+Tjc5ZIXksssdtJP/cgH4K5YQJvtddT59hcDLLd9YM41OBfF
         /euRWupvI0PsMGFHpjhuV2BhVEdfEnOisygNWX1T7SFFXRPiMbtGNgX6e6pp2CTb/a6h
         Hn/2GrYr9oAf8wHKcerSNm7P8OXmUdxEuCHJAnICNQcFZjbctkX5vhrpbs4t+ZK1r5TQ
         kvugAj1x6u/+2MKB1ydUQLzaw3dj2amK3K/cWO9UHu9VwbyOviY1DiNIGU82yEhfqCZG
         /d4A==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20251104; t=1776418679; x=1777023479;
        h=content-transfer-encoding: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;
        bh=32a4vcSAxYl5lrfQpnuVVJuIBeF4Rh7aLydhWtC+Ve8=;
        b=duTVDVPlQyZ2K1/UfHzmY4AV7S3KRbbDIZDcjmuR5g7U+SZLds7LVmGMdYwyKnWi5M
         lQUb77+FnWwZOM62UsQdRkFdzXsuaryKHOqc6LixwWbxn+LO4fs5dvfJb7mkg/qBoS6H
         Okibl7zLYkV3HU9CxNOO5QSFGH3Or7r6SiqRjpp0RPFjb6FtTDiI3ZVAbXNuCc//620+
         06KoJ08YrfO6JydRPksVFr8AEulikyF+J0tlCv+HNvOwcz2On9WDxx7Q4YX/eg/aWsx9
         tW4EFupb0knbgUzy0lpoVEYzoqoV6DE4Lxv5eu6KhsA1XNxSMt6sNgjI5a4EntVvwSoF
         WGFw==
X-Forwarded-Encrypted: i=1; AFNElJ/JoW2F0ZUGFhhpdl9xGEXF5W1bEyzNma3ap2r6rcKEP5E8LQ5oIeLXEADh0CNzz09LszZDqMAwqgg=@lists.xenproject.org
X-Gm-Message-State: AOJu0Yw9B0+1S6DZA4t1wiu7Qa+D1Vi+v9Qenh559gwZ6ZYC2/mba5kI
	7vtm3hwmTINM61x5LnULKjYHX63w31dljUkXx/TXrfT6fOcq+0YSXj4U
X-Gm-Gg: AeBDievR9imkAWPnGZ71NJfvqce2M6RvBn9zR6OpZBQpbsvy+2pda6xkwlDEDZ+/bxS
	04wE5X5H1g05nWBTElMLVz5cKmsLukZkC9CHDkZ02upPTzKx2M3VkqrndxVieoiTqi+x9j+T82l
	uG2QpLBs9FFw9PXWSshHv/nNSDcg15J+SS7b/bYwlyPD3fAj/hHvR6EfkOHZ1YPUBruO12nDngb
	A3MJXnop853i+VELaKTisV9nUV6AzUkMWTXPoHBW95hb5Jb4KFhI5DEOQbqATRnLx3UKTyCaPZC
	6fgJmVQhctjvEdnuyFsm9/FiKgqdoVNBVyADSrQSx6vB78j1B+n2EpKeL7UFss6Pohc2ib9X3qR
	MVk96pp1xRRB4TmmmyHuPao5jp/XQV/6thOBwYsJChgkvXgjTSmk2StBCFx2uNRJKNRMlE6gQj5
	J8qad9aH0Q5klCrmNo4vzglkpCdLaELMImuc+Poj402cB4HZw3Wbe7piYXyh8bvowjUjraevLhu
	ETPwq7o3aoXjA==
X-Received: by 2002:a05:6000:290c:b0:43d:772d:2b61 with SMTP id ffacd0b85a97d-43fe4073831mr2838295f8f.15.1776418678327;
        Fri, 17 Apr 2026 02:37:58 -0700 (PDT)
Message-ID: <e25edd0c-5ea5-4b0d-9d6d-a137fdd2b6f8@gmail.com>
Date: Fri, 17 Apr 2026 11:37:56 +0200
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH v1 12/27] xen/riscv: introduce aia_init() and
 aia_available()
To: Jan Beulich <jbeulich@suse.com>
Cc: Romain Caritey <Romain.Caritey@microchip.com>,
 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.pau@citrix.com>,
 Stefano Stabellini <sstabellini@kernel.org>, xen-devel@lists.xenproject.org
References: <cover.1773157782.git.oleksii.kurochko@gmail.com>
 <74f15b1db86139b36b721ef9d12b998fe4f0f348.1773157782.git.oleksii.kurochko@gmail.com>
 <8393b8fe-6ba9-439c-ae15-a84409d0976d@suse.com>
 <e1be0f4d-5090-4f2c-a05b-30b9ed6e1490@gmail.com>
 <5c47f23b-6f51-41e1-b8a4-83f80882d97b@suse.com>
Content-Language: en-US
From: Oleksii Kurochko <oleksii.kurochko@gmail.com>
In-Reply-To: <5c47f23b-6f51-41e1-b8a4-83f80882d97b@suse.com>
Content-Type: text/plain; charset=UTF-8; format=flowed
Content-Transfer-Encoding: 7bit
X-purgate-ID: tlsNG-ebf023/1776418679-3224E3FF-587D6248/10/73395122804
X-purgate-type: spam
X-purgate-size: 2620



On 4/16/26 2:06 PM, Jan Beulich wrote:
> On 13.04.2026 11:32, Oleksii Kurochko wrote:
>> On 4/2/26 11:00 AM, Jan Beulich wrote:
>>> On 10.03.2026 18:08, Oleksii Kurochko wrote:
>>>> aia_init() is going to contain all the stuff related to AIA initialization.
>>>> At the moment, it is just Check if SSAIA extension is available and if yes
>>>> set is_aia_available to true.
>>>
>>> And (future) users of aia_available() can't directly call
>>> riscv_isa_extension_available()? Nor can aia_available() be a convenience
>>> wrapper around that call? It's only ...
>>>
>>>> --- /dev/null
>>>> +++ b/xen/arch/riscv/aia.c
>>>> @@ -0,0 +1,25 @@
>>>> +/* SPDX-License-Identifier: GPL-2.0-only */
>>>> +
>>>> +#include <xen/errno.h>
>>>> +#include <xen/init.h>
>>>> +#include <xen/sections.h>
>>>> +#include <xen/types.h>
>>>> +
>>>> +#include <asm/cpufeature.h>
>>>> +
>>>> +static bool __ro_after_init is_aia_available;
>>>
>>> ... a boolean, yes, but still.
>>
>> My purpose was to have a variable which represent that AIA is
>> initialized properly. Maybe, it makes sense to rename this variable to
>> is_aia_inited.
> 
> I'm generally having trouble with the non-word "inited". How about
> "aia_usable"? Fits ...
> 
>> The idea is that in future patches VGEIN will be also initialized in
>> aia_init() and if wasn't initialized properly then just keep
>> is_aia_availabe be set to false and in such case we will have that
>> is_aia_available != riscv_isa_extension_available(NULL,
>> RISCV_ISA_EXT_ssaia).
> 
> ... this as well. And ...
> 
>> Note that regarding VGEIN it is arguable that it should be initialized
>> as generally it could be that there is no VGEIN what means that h/w
>> assisted guest interrupt files aren't available and s/w one should be
>> used. But s/w guest interrupt files aren't supported.
>> So I mean that with the current implementation if VGEIN isn't
>> initialized I will tell that AIA isn't available what generally isn't
>> quite true.
> 
> ... this. Question of course if what aia_usable (or whatever its name)
> being set to false means to Xen's own operation. If Xen would still work
> okay (without being able to create guests), perhaps the name may want to
> be "aia_guest_usable" or some such. I.e. as I said on a number of
> occasions: A variable wants to be named to accurately express its
> purpose, without the name growing excessively long.

aia_usable sounds good to me.

It covers also the case if AIA isn't expected to be used as h/w uses 
non-AIA-compliant interrupt controller, for example, PLIC.

~ Oleksii


From xen-devel-bounces@lists.xenproject.org Fri Apr 17 10:55:18 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Fri, 17 Apr 2026 10:55:18 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1284140.1566029 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wDgqi-0006g2-Kk; Fri, 17 Apr 2026 10:55:00 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1284140.1566029; Fri, 17 Apr 2026 10:55: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 1wDgqi-0006fv-HE; Fri, 17 Apr 2026 10:55:00 +0000
Received: by outflank-mailman (input) for mailman id 1284140;
 Fri, 17 Apr 2026 10:54:59 +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 1wDgqh-0006fp-6c
 for xen-devel@lists.xenproject.org; Fri, 17 Apr 2026 10:54:59 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wDgqg-00HEuZ-Jg
 for xen-devel@lists.xenproject.org; Fri, 17 Apr 2026 12:54:58 +0200
Received: from [10.42.69.10] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <ross.lagerwall@citrix.com>)
 id 69e21178-e002-0a2a0a5209dd-0a2a450ac75c-18
 for <xen-devel@lists.xenproject.org>; Fri, 17 Apr 2026 12:54:58 +0200
Received: from [52.101.43.36]
 (helo=SJ2PR03CU001.outbound.protection.outlook.com)
 by tlsNG-4011c0.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.1)
 (envelope-from <ross.lagerwall@citrix.com>)
 id 69e21180-56b3-0a2a450a0019-34652b24c999-3
 for <xen-devel@lists.xenproject.org>; Fri, 17 Apr 2026 12:54:57 +0200
Received: from CH8PR03MB8274.namprd03.prod.outlook.com (2603:10b6:610:2ba::5)
 by BN8PR03MB4977.namprd03.prod.outlook.com (2603:10b6:408:de::11)
 with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9818.25; Fri, 17 Apr
 2026 10:54:52 +0000
Received: from CH8PR03MB8274.namprd03.prod.outlook.com
 ([fe80::ebe2:32c1:d2be:a096]) by CH8PR03MB8274.namprd03.prod.outlook.com
 ([fe80::ebe2:32c1:d2be:a096%7]) with mapi id 15.20.9818.023; Fri, 17 Apr 2026
 10:54: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=QW33sK7jeTkZPUcfIerziAeFNX7W59m55/JQ4hrA38FvEHMHxr8JH1zF8cX6WykxYvQVWeZePbhi7V5O4xyuVk7nyniJ076lsnv7vU3IyEFAZqixBZtydZaR0EXPlnFIlpHe/Y3H5oVzLNAH02lH5mlYUaFIeItY6pE6fh0sNqRcVJVClkSbA34sCEfq/JqIECAUUqMy39yNBxdJCCS1noOveh5L1rqouAp8dCHqi0pLFPmoSzhl3P2zKsrMtQDlNIK8Lnu9+iyeU1rm/30upmUCfnIQMNDoVDxSqNEPM01dSBtaAtZLWstwpjLuDNSomxKAPKnKuit0sZVtZmZTFA==
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com;
 s=arcselector10001;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1;
 bh=Qbv598KG+/Z+nmSjFRqOtp2uxNwXfJQuKAFY7O9Q7pg=;
 b=RyRw7l+I1TckJu52HF1HCaRHD73FVYUfb/KYjpHJ+St5594v6TwpZz3DONIqbMKSkMuhrXsho2bc5k98WVYoNN9G91EDRVXWxD1nYkt47x3hEMZda6gKhpGn4cBtYs/0ruG0BOJ9F5oaem7h/bs9PO87Llw+gK8jYJMzNASUyQNFmRYMlrN13gR+loMLkKX/NKto+0+RxSOsCmg1uQXq2cl5Bqzo6L25VUmg5C5/wnFehWtQg8NPvzzUUWn0Cnr+iENHSZt6ZAyjX/qveH12vxYxUqQdrzRT8qg1fiCrHJTa6x3RkyBMvnqdsCZkWgKwC7rJfCRU0sDda24Z8ZuOag==
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=Qbv598KG+/Z+nmSjFRqOtp2uxNwXfJQuKAFY7O9Q7pg=;
 b=Ak3cFohB/eaJ14HUFoPgJjuw3TUdoBKhhVmwsqz7IrNkWPdnjt1bIy8x6QLyZUbjne+aD6Cgm0x/yPgpskWnOypVepPAOxJMc8cpIeeLWnIHnO9omknsrIdI8ed60kxGXMoNUukii2RhJ+UswuG4VOx+KHwWgs5pCZMxnx+NPeE=
Authentication-Results: dkim=none (message not signed)
 header.d=none;dmarc=none action=none header.from=citrix.com;
From: Ross Lagerwall <ross.lagerwall@citrix.com>
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.pau@citrix.com>,
	Teddy Astie <teddy.astie@vates.tech>
Subject: [PATCH] x86/mkelf32: Actually pad load segment to 2 MiB boundary
Date: Fri, 17 Apr 2026 11:54:24 +0100
Message-ID: <20260417105425.1184232-1-ross.lagerwall@citrix.com>
X-Mailer: git-send-email 2.53.0
Content-Transfer-Encoding: 8bit
Content-Type: text/plain
X-ClientProxiedBy: AS4P189CA0006.EURP189.PROD.OUTLOOK.COM
 (2603:10a6:20b:5d7::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_|BN8PR03MB4977:EE_
X-MS-Office365-Filtering-Correlation-Id: 4d5272aa-f442-4096-96bb-08de9c6fc0ec
X-MS-Exchange-SenderADCheck: 1
X-MS-Exchange-AntiSpam-Relay: 0
X-Microsoft-Antispam:
	BCL:0;ARA:13230040|366016|1800799024|376014|56012099003|18002099003;
X-Microsoft-Antispam-Message-Info:
	1k6N74Xk3YdAhwlLxL4TLX2wkr1CQOFkUrT+wdzqB+sO5BFgJffTRIC4VYCnMKBPvqOXqG+c021CqNXgM0sv1H+Bwryts9j33jdMfUdUJFFsF3nSkjIeH5wS1tUuX174s9drbmOax9NSmvKGNQdWJxaVrqgZtT1Q4BtD0Th5Folb/G39rYZC2J1QMDVy2keKASkV34NSabQt4L+rTnUwPogtaFs9KycsZLJxQ8lsdbLXNij6M6AMLHYu3RmmjbZ8C7EGo7MA76htNb9kCCsRWapx9hOA9PUrWEwlRU0IkukZLTky0+ZaDhuG9YLuUQa4ktBQADz8/FsJyisENwPMHOrLWGvPPmASi1Ort7mjV3Ajg4adhhuuZrjmW3OGGVBwovGehD/Riqa7K3pF3g42Uv+Vh9ca2cNQbGOcFzyNZmvrf0mmyiYRL9833/jtMwOMfNXYrN5mhqfXFOfxQSw+l8kmxQk0Iq11M3XZltZ+lgwjtOOq+M+CyAw/c0LVhZpg6sC8gsA43l65t8gEoEQTzPsIJwqY7ev8evyIQ8Soekcy44tUAtnAXLbyR4hfiR5OxILOw7Lw5H1X3aTN+ba39ANBIM4o1t+Q+4U4MKTqvNHN9RH0H+ZutoPUiWk6kb6ag59HjZMSuVYfQBkSgrfS4NOdjtyLPRVzPESi8L+OunFJla+GGuRG5YQSbgf27ngyyo8gEQKozrmUcoN6ordx3FK6nZYeHDFa2uaFwENwRnI=
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)(56012099003)(18002099003);DIR:OUT;SFP:1101;
X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1
X-MS-Exchange-AntiSpam-MessageData-0:
	=?us-ascii?Q?9hYsL+cTHDR5vIdcUA7356X3rLa9oJeF9LN0vWAYWqVoZjeJLh9tT3eD9wkY?=
 =?us-ascii?Q?XNcRZQUwBlpdTBUHs32Aj9PjWo0rs1AunT51Vc0vph94ltsS3z8yykG8iJiN?=
 =?us-ascii?Q?VGgVZyRRPy59A1Vly8R/J+7w1n4ZgkjozpOPJaiIpd3kqrvXGrUKS/grg+hf?=
 =?us-ascii?Q?jsGy4u8NrRhjtVkncI/SytENJ6tckOQyexp0EmP2Q5QhJ/02UJwA042D3xmV?=
 =?us-ascii?Q?jVOOvb+CCd5EQGhDOODfg8bgYjAjgYieCP+upQ3zEasrBEU700Ml2fDqARuN?=
 =?us-ascii?Q?SExuLm/5KbMXBAtn1/c3+oJM/2TPKcLwl8u46mhZ3jG6QW0PWP0VXMi9FI6E?=
 =?us-ascii?Q?hbncsC9E0JPUjuXdEIUb2wRLWNnCisU9WlBfVMvAwlrxw8muw1mlfjnGdU5Y?=
 =?us-ascii?Q?5OCYCV3oIpxW2m/BznSRTgzOJJuZ/F04bTt3D9CSOpYEKX+VyzK734T8nPHv?=
 =?us-ascii?Q?2vqhV/WJsGC7CGrqVRCVCyM1qVypwWo0+5hDHRTnWI6ocsBPy2COysaBFheK?=
 =?us-ascii?Q?Q4dugBf8NE54qCvpozhXl3hGVhBcNzt963IbvmPcqnjd6uVfRfWYFJiyKvMA?=
 =?us-ascii?Q?DyMvDNJJL2+SA6W1fRCWQdhcM3lx53+ZD43olqkBawRf647n1o5Saqq/r7Ks?=
 =?us-ascii?Q?Q1CCLRajVd17hvt8fl4tVUtuSuiX1dV8NS99WrdS46BIHwrNV3TVZ9wBBDQC?=
 =?us-ascii?Q?3XTi9xb6mukQCYF1VREs2mGqZb39HxiN6NvcwJXzYYOE6HmnuuZ3ghX/kSds?=
 =?us-ascii?Q?rcaRKqDOsz0Qr3A3MF9d6ICXGv0ZJvdNgJlSY+jYnFPTgHG9J2OguKlLunzh?=
 =?us-ascii?Q?bLP5db+PwNHBsPkGTUsesPpivvnWiiRCYyDRnrDdxm+Cdahk/DS6N/ONp2Fw?=
 =?us-ascii?Q?WN/qjoV/cNfh+vgIqPXm4sgpzdclinbulsYOLDkpkUROUkloCF71wzk0nKk8?=
 =?us-ascii?Q?dY9LcZ2dkNSycZ/PtZlucZP3nLizui+hOkS7p4K2+Zp0PkSuSyaZ2UNYJtE4?=
 =?us-ascii?Q?Ndv43OPbBj2EYwpDhMT0GP7c+IpQTXkW2aLawC8VFmdL1H3S7TvyAdE6uPa/?=
 =?us-ascii?Q?YuaxwoW+/dptCXtpFJEQ79O5i+O7y6tWLNanu+0Vog3dg8+zxRH3CEWY7UDT?=
 =?us-ascii?Q?eCJEJpFlaV0PWJK1rB8N7xB8LH4bzC2pqoAFhPxknIk5I0uaSGziTvS4TgTo?=
 =?us-ascii?Q?hMoPdtdezfElZlxPICHz4A3A4bxaa85+99R2+6bXl0WJBsyIMgvazwt+okI4?=
 =?us-ascii?Q?rly1nUZjnR9F3EPvUtVG6k0Wy61PmDs4/7R8wMVvdODOB7p5ZdPj1n91cME4?=
 =?us-ascii?Q?o7bTpH6URAhRykicltKMgCDMMRfRQPWJq5e8xrC0whC3EqQilgPgLM4WaV5s?=
 =?us-ascii?Q?x0l+GFFjvGZKN3hAYVEVSEeZp5bn5jR6LEkL0q2lcxOr6NLFijBQwPJs+7gD?=
 =?us-ascii?Q?dDm9TurnDBaOTdO2sTPoqFOEqeBNJvSYZh1RqajrWLr0PETsZol1KiZxFX8p?=
 =?us-ascii?Q?9kzaePUlabBTjdyPpXSZ7Uk+UqbkQ1Joi2AohWyzlw/mD4G91A/UYFUi3Szw?=
 =?us-ascii?Q?iXqNc/4nbgxTuyNFREG0ZI8HARjMzDgDc6B1rx0BnuhcnGj1ll5TYntBB0wh?=
 =?us-ascii?Q?brfwJcCb+pI5zmClKg3WnYLU2cSogiI6Z3HkWg5NYazZ+x5dxPwBXRcllxMZ?=
 =?us-ascii?Q?4IgQPXFJ/C0KcKTat1EZhxKY9zU5Bcoe95qkcA3ycynrv/k3hUWTcu3VHAJF?=
 =?us-ascii?Q?51wN0S0cDYqcA2omg3zyJ6FvpAwiTqk=3D?=
X-OriginatorOrg: citrix.com
X-MS-Exchange-CrossTenant-Network-Message-Id: 4d5272aa-f442-4096-96bb-08de9c6fc0ec
X-MS-Exchange-CrossTenant-AuthSource: CH8PR03MB8274.namprd03.prod.outlook.com
X-MS-Exchange-CrossTenant-AuthAs: Internal
X-MS-Exchange-CrossTenant-OriginalArrivalTime: 17 Apr 2026 10:54:52.6326
 (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: 5NVOplePFl8zhh5AZozwacrLnkZ93R/SVeP/GKMrkU16DhYcF70sldadcbams5nK2bQLcQkz+6024jtYZqIPMH4j5LtihLuB5dRDkYj4L74=
X-MS-Exchange-Transport-CrossTenantHeadersStamped: BN8PR03MB4977
X-purgate-ID: tlsNG-4011c0/1776423298-471728B7-B6EBD3F6/0/0
X-purgate-type: clean
X-purgate-size: 1211

Fix the code which tries to pad the load segment to 2 MiB but only pads
it to a 1 MiB boundary.

This manifested itself as a page fault while scrubbing RAM during boot.
Xen failed to mark its location as reserved in the E820 because the last
2 MiB superpage overlapped a reserved region which meant the memory was
given to the allocator despite being RO.

Fixes: 4fb075201f54 ("x86/mkelf32: pad load segment to 2Mb boundary")
Signed-off-by: Ross Lagerwall <ross.lagerwall@citrix.com>
---
 xen/arch/x86/boot/mkelf32.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/xen/arch/x86/boot/mkelf32.c b/xen/arch/x86/boot/mkelf32.c
index 373ba4ddd593..469d1ba0af41 100644
--- a/xen/arch/x86/boot/mkelf32.c
+++ b/xen/arch/x86/boot/mkelf32.c
@@ -345,7 +345,7 @@ int main(int argc, char **argv)
      * the Xen image using 2M pages.  To avoid running into adjacent non-RAM
      * regions, pad the segment to the next 2M boundary.
      */
-    mem_siz = ((uint32_t)in64_phdr.p_memsz + (1U << 20) - 1) & (-1U << 20);
+    mem_siz = ((uint32_t)in64_phdr.p_memsz + (1U << 21) - 1) & (-1U << 21);
 
     note_sz = note_base = offset = 0;
     if ( num_phdrs > 1 )
-- 
2.53.0



From xen-devel-bounces@lists.xenproject.org Fri Apr 17 11:03:16 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Fri, 17 Apr 2026 11:03:16 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1284148.1566038 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wDgye-0008JH-EW; Fri, 17 Apr 2026 11:03:12 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1284148.1566038; Fri, 17 Apr 2026 11:03: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 1wDgye-0008JA-B8; Fri, 17 Apr 2026 11:03:12 +0000
Received: by outflank-mailman (input) for mailman id 1284148;
 Fri, 17 Apr 2026 11:03:10 +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 1wDgyc-0008J1-7n
 for xen-devel@lists.xenproject.org; Fri, 17 Apr 2026 11:03:10 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wDgya-00GVVK-SP
 for xen-devel@lists.xenproject.org; Fri, 17 Apr 2026 13:03:08 +0200
Received: from [10.42.69.9] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <andrew.cooper@citrix.com>)
 id 69e21363-bab6-0a2a0a5309dd-0a2a45099c7c-38
 for <xen-devel@lists.xenproject.org>; Fri, 17 Apr 2026 13:03:08 +0200
Received: from [40.93.196.16]
 (helo=SA9PR02CU001.outbound.protection.outlook.com)
 by tlsNG-bad1c0.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.1)
 (envelope-from <andrew.cooper@citrix.com>)
 id 69e2136b-2497-0a2a45090019-285dc410a61b-3
 for <xen-devel@lists.xenproject.org>; Fri, 17 Apr 2026 13:03:08 +0200
Received: from CH8PR03MB8275.namprd03.prod.outlook.com (2603:10b6:610:2b9::7)
 by SA1PR03MB6593.namprd03.prod.outlook.com (2603:10b6:806:1c8::5)
 with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9818.25; Fri, 17 Apr
 2026 11:03:04 +0000
Received: from CH8PR03MB8275.namprd03.prod.outlook.com
 ([fe80::a70d:dc32:bba8:ce37]) by CH8PR03MB8275.namprd03.prod.outlook.com
 ([fe80::a70d:dc32:bba8:ce37%6]) with mapi id 15.20.9818.023; Fri, 17 Apr 2026
 11:03:03 +0000
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@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=UqCpAzScKlKPgxlsFF8bB2DNqa7wTY9mry/y1jtwVfMfmkK5I1tV/2MW8e4qWZauWX2oRzYASXKa7oEFXqfT734e3BftmHXzgMfXHbfnz8rxLeAR1fw+g6GnQher7XGQ3iQIUiEeKX/tHxnpjX5TcKel7vuW7nMANRjXv/eoJxvPOUhOUWqxVyqJh0C7kWzECa4xMUX8eHPSX41bkKXSNNAeOLHmuDGd5rRAYL20e36EhP5tK1AsXmi0Tu/o3lR9+OpvnD9sesEPGQcbGk/JX7OZCLg4mU0OxbCtKApXACwE/A0vzEdzhQHPdhH2l/TMC0kc0vJSJ653i9ljxBYmzQ==
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com;
 s=arcselector10001;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1;
 bh=UXFFW5cCNEJImpfMu8JNAqwenfdf+U33IxhgXjoAFSI=;
 b=kj8jZpHVyZQSzHqV8k8RhOurFE143io4V/5imBG1RwQ+GHHOv0TzKuXSAXrfWa1zz0OPlqR42UQ1Zhr3gyEGcWX3xRmzG2usaANN5B6GbJNl1pjEh6y9FU/dZDteureP5Jbowlw2b5ysIrZYGBX59DUXZLNfKdEvPCIEtIUQ9+LZcjEbPLruiTTLdEqoqQ5lpHZRuUbIFmcbsjJlHLAYIiiVQqvOrFSh/ilhN/p65LAizGgI3nohTaYehwu28vaZxIGRgv/GmWB6up0IFVS2jmWkSiXqjdmK1IqXBSXNADK/br/J0xC+j9brQR1VHXRzvTKeAG7kLxOh+O0QtpctYQ==
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=UXFFW5cCNEJImpfMu8JNAqwenfdf+U33IxhgXjoAFSI=;
 b=XyevdfQ5btUfGkCG8GiFtmcWv8/pw+8eVm9MGiIy7zsmdJuC8ecnI/Maga5IloWDCGMI68XvuOyhmoVQlpxU9v0pKJIFHC/QnfKX4si/8EE2qgtS1FrMU4bMc/wvvK8435lRMK4sYwSAP1pDqpER0Qt3zzF+NsWsKhEKrS5/HGw=
Authentication-Results: dkim=none (message not signed)
 header.d=none;dmarc=none action=none header.from=citrix.com;
Message-ID: <a6b71c55-fce7-4995-b38b-83133d702bd5@citrix.com>
Date: Fri, 17 Apr 2026 12:03:00 +0100
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.pau@citrix.com>, Teddy Astie <teddy.astie@vates.tech>
Subject: Re: [PATCH] x86/mkelf32: Actually pad load segment to 2 MiB boundary
To: Ross Lagerwall <ross.lagerwall@citrix.com>, xen-devel@lists.xenproject.org
References: <20260417105425.1184232-1-ross.lagerwall@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: <20260417105425.1184232-1-ross.lagerwall@citrix.com>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
X-ClientProxiedBy: PR3PR09CA0021.eurprd09.prod.outlook.com
 (2603:10a6:102:b7::26) To CH8PR03MB8275.namprd03.prod.outlook.com
 (2603:10b6:610:2b9::7)
MIME-Version: 1.0
X-MS-PublicTrafficType: Email
X-MS-TrafficTypeDiagnostic: CH8PR03MB8275:EE_|SA1PR03MB6593:EE_
X-MS-Office365-Filtering-Correlation-Id: 3bcb582f-3a8a-48f6-cae9-08de9c70e5ae
X-MS-Exchange-SenderADCheck: 1
X-MS-Exchange-AntiSpam-Relay: 0
X-Microsoft-Antispam:
	BCL:0;ARA:13230040|366016|376014|1800799024|56012099003|22082099003|18002099003;
X-Microsoft-Antispam-Message-Info:
	E71QjShRyuxGK8NpDEh9ZxskBGeN8lPDcw8BcYb0jC4WFY3t8Ewu0PQ12CTVPvVNH2PoYQ3aqp4xmyMkjR9D5hdVedh3bwyqP99cdswUBfzdlKyfF9FIeynZbrkvh6DvxVr2AUHkeObu3r8faEkYgdqi1X7z3wa1gSoq24cunDsG09v62ta055LecXxvm6FTPmTaJqGI4MKuvL4/DLsQZpvtC8pg3wgnw402JE0p+Po0eno04lfFMxtZJjRXGJ4hiF8CkrgDutIj1bjudwA/hza2oA8/YcLosC/yZNIZvKRVbrDS/lo/dILgNNHFojeCLnFsM0qvbGiBB47d6p7ZKti68kgupAzKCm9NlKuwzmhA3vQBwv3R02R4cSqzryYV2VC0ioIM9ceYlZz6tM08fol/9nPTEllN6upUnJIWRfiQHxp+y0OV0bjA6Ue93Q1F1ByOX5CnjRFxe4sCa3qLTHSDwz4/01QN66s1BS0AVtd93NvPi5+GeePPr7NLn7XQV+4n6uECrdI6oNdwkgbQmwnAvMmWAoWDK7WMKLgusL1646rsU3gWN0B7LButd/cpHY/naRXLyVX5LGZXkFoBFXmhXPTw8m/dA5Kun1XygAs/1PTv/nZrQNPY8Em7hl0UkOhGn8RZruJkZd7pvUKJysznmL8g3Y5Ept5yOaRYRrMsTQadXRlkGbRvu1dl6VRjxPNN7VKNAC3qJ056hDGaUIdXAQeLT9+rhYUOD8wStjs=
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)(1800799024)(56012099003)(22082099003)(18002099003);DIR:OUT;SFP:1101;
X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1
X-MS-Exchange-AntiSpam-MessageData-0:
	=?utf-8?B?Rk80Q0tlZDYvcHpvVWlXOG5TR28wU2hhRmdpNWFBOG54aCttbzZ0VUdvYU1I?=
 =?utf-8?B?d0llcERzcFpDWlV3WGZzSTUzZDZvVk1zKytHdE9rL1c1YjJuZXR1MFFENGtv?=
 =?utf-8?B?bVNKNkRWRElzdnc3bHhOd1lNSGdGRFFhMVJxRGthT1o2WHZReG1VU041bkZL?=
 =?utf-8?B?TVNrQ3dvTXVrQ1B6Q29WU05Vd081YXpRR0xuRk16aGFaeTZLbnpqNUZiWjNn?=
 =?utf-8?B?UURhU0VxK0pGenZveFpkdkxvUlJVWVhtZExwb09rWlBsay90ams4RHA1cGdU?=
 =?utf-8?B?c05rTlpTYW85RlQ4bjYvenVoVWdqNkRVRkI0c1lLdWkzQjdiVWdVYmpsS3Qx?=
 =?utf-8?B?R1UrbVVhQVhUOXpZYTNIOGZhS3k0Vkh4Q1lHbFRDTGE5UlpoQzZyajZyY2Y1?=
 =?utf-8?B?K1ZCK3F6ZlAyNGxGTk1BakFISllKSFJnMWZUa3M0YkE5cFpMeFVWRy9oRUxk?=
 =?utf-8?B?L0R5WHpsTkJaa0VWRzBCTkRJZW5FMlNYUGZwRVdQVzNlei9IbkpwajVGV1BX?=
 =?utf-8?B?c2VKaEh4Wm9aMTIyZnFFZ2pIbEdGUXhtVlZBazdvbVlXeDVUWlJGV3ZFRlM3?=
 =?utf-8?B?MSs1Z3B5bGZBTTg2a2V2VGxHNTUwbmJBR2trcXp0K1lNVy9vb0ZrZjA1UGJh?=
 =?utf-8?B?WWl3TStNaisvQSsrVjczR1V4azBwRUtKUitiZTVuNHAxMVp3YlRaR3Nud2Ja?=
 =?utf-8?B?Z1ViWVpJOEZHQWdzeHYyK0Q1WW52WDBEUkVxZU5uaUtGelBRTzFUcXo0UDh0?=
 =?utf-8?B?VEROQ0gyR0JQMitJYzBEUmgxd2lmVHhvWGxXSUVTVkhKV2V0Y3VuQk5WTFB6?=
 =?utf-8?B?MXVuVUlrQldhTDh1QjNoTVlRZjVnZ0VvVldMWlNocFl0T2ZlNHNnbi96aUlF?=
 =?utf-8?B?ZzdlNzQwaDJwUy9tODFKSzlzU0loemtMM0VzQVBOaXEvZGcrMlZhSUNEM1NB?=
 =?utf-8?B?TGJjRUllV2tHdE9BcTNHcFhFWXRlQWNxSVhHS29md3JwV0VwaDd4NldnS25T?=
 =?utf-8?B?bmxodHF1WTVEQnVaWkcvd09wS0N4WGl5dHI0ODUwM2xabmtPWkUwZm13NWdR?=
 =?utf-8?B?eXJqTTVFYmlWaE1jUTk0Q1RkelIzZGNNZVBnY2dGdDFwbUE0YjhlczhBcGQz?=
 =?utf-8?B?SXBzaWszYkFxSWswWFlYYnpzNGo5L255ZVl2dEFoNElxUG83ZjBvdHhOZlh4?=
 =?utf-8?B?SEcreU1BMlBVdkhOS3FlSlBLdVFFaGpaaGUxMnJXNEVhc1pJN0l2aDZIc3Rh?=
 =?utf-8?B?WHZxbUF3NEFsbmtTTTZvanlqQStDL2ZUTmNXMUk4dkFUZ3VkLzVFMlV0M1dh?=
 =?utf-8?B?eldyUE5obUtjNmZhTjYwOWl6b2FCcWVxbW9hUk41QWlRY3hzaE1mK3pEaVVX?=
 =?utf-8?B?cEdEdGpkczRZVHpST1R2OXhYS1FMdmtIZ1ZJNHFnUU5MQVlMYVZQQWkzSkFr?=
 =?utf-8?B?ZUUrYUxoTzRSbklmaFI2amxleTNaUnlydmJ5VWhvOElQM2ZKNjJBc2ltZTh4?=
 =?utf-8?B?VEFWUGRKb0ppdDZYa2dsTnM0M2pVYnU3V29QMUhyYXVMcWhBZU4ycUQ0YUli?=
 =?utf-8?B?dCsvZGJ0dEpyNkhaUTFLWnBIL2ZFM042aEMraEVHYmx0TUZhclZGemViMTFV?=
 =?utf-8?B?eTliSkxISHJxZS9GVVJTNVJza0hPWDdIVkVKcGR1a3gwK0tUNjhoQlZDMjBQ?=
 =?utf-8?B?Vzl4N1FEWWZHcW9OQSswODF0RmF6aWVOUkNBWlNCS0VHbHBYeFNXZnB2aTlW?=
 =?utf-8?B?M0JTcVhueTFPcTcrTjR4VytRTEhVNXZhdkJCSDM3OFRrN3lIU0U5bFdINVlH?=
 =?utf-8?B?Y3VQdzN6bzNtcXBac2pZd2M0Q2FFUUhrdUJ4V3Rzd1J5NnQwZnc4VU1DSHpR?=
 =?utf-8?B?ZTZiZmh2WVYyQ0JOdlN3bm4rMjZUZlltelJGVDNtaGpzdDBVdExaMnZ1S1FM?=
 =?utf-8?B?WVVmelNnZVBpYldidzE2RmpQQ1Awa0FabENFV1cxRmFsdHJQaGk5aklmdkZa?=
 =?utf-8?B?cWtBQWpncDh4T1pOMnJsSXkyaGRobktEN2JwZEhpWUlnK3BUQmR2cnF1R1dP?=
 =?utf-8?B?cENtTFg3d3R1TmpCQ1JIQnF6NGlkOXNkSTZvUklIT3ZIZUx1UjNIUTNKU1VU?=
 =?utf-8?B?c0R2ajhRUkFTdk93aHZzcEdQUENqallKSGdneU1OWlFjT3VQRVNtTFMvRWtU?=
 =?utf-8?B?bkRMWWUxSmxGQ3ZrZEk4cTVrQUdOaDVSaG5rRDBwQWl6Wm56emhCZDNyWUxw?=
 =?utf-8?B?NTV0THBxNXBWTTk3L0JHaVNRTnJJcldEb1NDYTFwTVh0WVFEWjVZcUtnYmhM?=
 =?utf-8?B?VHdHWVVEdkV4Q0VxQURPRXVrekJ4RmhjSExJYWhBcC9zRWttVFJVTk5Mb0dv?=
 =?utf-8?Q?xgsivhkc2r+DsUxA=3D?=
X-OriginatorOrg: citrix.com
X-MS-Exchange-CrossTenant-Network-Message-Id: 3bcb582f-3a8a-48f6-cae9-08de9c70e5ae
X-MS-Exchange-CrossTenant-AuthSource: CH8PR03MB8275.namprd03.prod.outlook.com
X-MS-Exchange-CrossTenant-AuthAs: Internal
X-MS-Exchange-CrossTenant-OriginalArrivalTime: 17 Apr 2026 11:03:03.7990
 (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: wTauemr7bEF8oFAdq1ROy/mgldTW19SU++3DLoIgOcfFkLORaPyG9VNVnZ6naUJDyJi0j2dGTOvKHmddPe5tcL7AYLD5q1TLkWi/zs+R8I4=
X-MS-Exchange-Transport-CrossTenantHeadersStamped: SA1PR03MB6593
X-purgate-ID: tlsNG-bad1c0/1776423788-92573A53-9C15D7BA/0/0
X-purgate-type: clean
X-purgate-size: 1046

On 17/04/2026 11:54 am, Ross Lagerwall wrote:
> Fix the code which tries to pad the load segment to 2 MiB but only pads
> it to a 1 MiB boundary.
>
> This manifested itself as a page fault while scrubbing RAM during boot.
> Xen failed to mark its location as reserved in the E820 because the last
> 2 MiB superpage overlapped a reserved region which meant the memory was
> given to the allocator despite being RO.

Do you have the relevant snippet of the E820?

AIUI, you're saying that Xen was placed immediately below an E820
reserved region (a valid layout at 1M alignment), where said region was
inside the 2M-aligned boundary that Xen was expecting.

But I don't quite follow what happened next.  Where does read-only-ness
come into it?

>
> Fixes: 4fb075201f54 ("x86/mkelf32: pad load segment to 2Mb boundary")
> Signed-off-by: Ross Lagerwall <ross.lagerwall@citrix.com>

For the patch itself,

Reviewed-by: Andrew Cooper <andrew.cooper3@citrix.com>

but likely to want a tweak to the commit message.

~Andrew


From xen-devel-bounces@lists.xenproject.org Fri Apr 17 11:34:56 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Fri, 17 Apr 2026 11:34:56 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1284178.1566047 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wDhTE-0003ql-Tj; Fri, 17 Apr 2026 11:34:48 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1284178.1566047; Fri, 17 Apr 2026 11: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 1wDhTE-0003qe-R2; Fri, 17 Apr 2026 11:34:48 +0000
Received: by outflank-mailman (input) for mailman id 1284178;
 Fri, 17 Apr 2026 11:34:47 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92) id 1wDhTD-0003qY-Ea
 for xen-devel@lists.xenproject.org; Fri, 17 Apr 2026 11:34:47 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wDhTC-0091Be-Ro
 for xen-devel@lists.xenproject.org; Fri, 17 Apr 2026 13:34:46 +0200
Received: from [10.42.69.9] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <oleksii.kurochko@gmail.com>)
 id 69e21ad1-e002-0a2a0a5209dd-0a2a4509c1de-20
 for <xen-devel@lists.xenproject.org>; Fri, 17 Apr 2026 13:34:46 +0200
Received: from [209.85.167.54] (helo=mail-lf1-f54.google.com)
 by tlsNG-bad1c0.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.1)
 (envelope-from <oleksii.kurochko@gmail.com>)
 id 69e21ad6-2497-0a2a45090019-d155a736b9cd-3
 for <xen-devel@lists.xenproject.org>; Fri, 17 Apr 2026 13:34:46 +0200
Received: by mail-lf1-f54.google.com with SMTP id
 2adb3069b0e04-5a3cee3a271so654970e87.3
 for <xen-devel@lists.xenproject.org>; Fri, 17 Apr 2026 04:34:46 -0700 (PDT)
Received: from [192.168.1.6] (user-109-243-69-121.play-internet.pl.
 [109.243.69.121]) by smtp.gmail.com with ESMTPSA id
 2adb3069b0e04-5a4187e1131sm327914e87.42.2026.04.17.04.34.44
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Fri, 17 Apr 2026 04:34:45 -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=20251104 header.d=gmail.com header.i="@gmail.com" header.h="Content-Transfer-Encoding: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=20251104; t=1776425686; x=1777030486; darn=lists.xenproject.org;
        h=content-transfer-encoding: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;
        bh=W0L0pHouCfjSuixj3LzgkUEOzA6V3wwKqkKyFey/VzY=;
        b=CafhZpIplua9WR5atex+ee6xbih6KAysqXxnPiF/O/ymTLIb/RXY7Am4LgXsmLOWWO
         Wb+VkVaPGGMLtgIUwZpT1LLhsPYYpnthQbMgKwwJY2T7Cz8UP1N9mPMLcSor7gjh45QP
         3Gh3XbZfLTLrkIG4T+nJGnQk68F1xzDTeOWcOOTGnidDFZo7Z+bia6RMKJeyie8XAoXg
         To2ArQxPFYBZAJfSV7bbMQQGa53ybecmXMHM23qcadW3eRQaGQl9nFoC6rg0VkdPn9/j
         Dk0hKka5EuBATCA6nk6ePAqk3t5q0xiAWJJHmHfvHFIL0rGkD4IOJoEhYyTcoR8U6yXV
         Ho5A==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20251104; t=1776425686; x=1777030486;
        h=content-transfer-encoding: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;
        bh=W0L0pHouCfjSuixj3LzgkUEOzA6V3wwKqkKyFey/VzY=;
        b=bqWXTZ7QU6wsMw7GnFjx154v6h4mImidaWcaMbUaskPc2ygPF2oNNF7H2HJiEhx3BJ
         cc1mAd0xnQPyG2ixOE0xbwUA5QHUiFp5EGZ03y4M4fuRraKRcf+T1eWyWJyQMRzMzDyF
         vt4KexmnGNb6baXMq3NUnwORv2jRGmF/Ox0fT0hhIR6Hc3nubfTjQGzGKcL7z4n54XlW
         ZLowyATyVbfIud6xUr89BC79wLKvjQG2i8XqEdgKvw2f2faXi0UquEf0SiFLUN16bwBO
         ZwHSIPeeG1OzyuNTJhyFVh/Jd/FVsc2vMOuZem4yp94YROB2XGH6jJhzuG6b69i9l3Aj
         Fn0g==
X-Forwarded-Encrypted: i=1; AFNElJ8Q3k/7FgaNGLvLzbibtidU6cREEiB0zig9y/+dRWPXWE3o+TiCNHjX8Wme7/+33kSZXAD9zocDBhs=@lists.xenproject.org
X-Gm-Message-State: AOJu0Yx7TFE7DvgKAoS39PqNw9hvTohqlNNAN1pgtI6exuV5kQ53XeX8
	7CzJIa6Jv2R8g+rhEOrBo94bsaki4O53AdnSSUXrtPLJqQy5Q6aAKfho2vc55A==
X-Gm-Gg: AeBDietNrKDGgeTCJZxPF8zFc6nmLynd/HcxGcBgwsvZ7RtjHD1oyxyMJ3wNXNKfjDA
	pNExyGz09Qd5V3ZEA1RsTiG5JCwWmmhz8ijw6DWr2QZTFzafl7//8dWsniwLCfy2rauIja7gy4E
	tlwRC6qlyO+ujwLOBr1z3W40eT1Howe1/fl1bBda8pzoU/nlml38M+wltZUr2xgyRrBvHfxuQRL
	dN8Z0yBgpg8CR3bmnVMHZKpLbYptHv/tOuvVAk56ndN8ur//T5JLLKRfuNalFymDBZ5UvEbm/qI
	qSVbritVJYVXPVK6KQnpUukRCbOtPUVCYIOlhOnMeZT/HfHH0SwQrH1v28LVLKAJh6h6GBbzsOg
	LIcg/fgReaV2GKtiKORC/ClIEJBoyzCVSiQtiYddfZoQyb03a4KjNYaQNqn3yYZDbYlb4TRss6i
	TNQ53nfKfey8Ymejz3OoYt4TS65tfV84cqVhwT7260avz8UC2iLKGBGqZDzYAxJbIRei1lAZhxn
	g04XK82d/pcSA==
X-Received: by 2002:a05:6512:158c:b0:5a4:4ea:9982 with SMTP id 2adb3069b0e04-5a4172bcc5cmr649760e87.8.1776425685607;
        Fri, 17 Apr 2026 04:34:45 -0700 (PDT)
Message-ID: <a0fe3904-7fb9-474c-9a97-6aca2c2dc50b@gmail.com>
Date: Fri, 17 Apr 2026 13:34:43 +0200
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH v1 13/27] xen/riscv: add basic VGEIN management for AIA
 guests
To: Jan Beulich <jbeulich@suse.com>
Cc: Romain Caritey <Romain.Caritey@microchip.com>,
 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.pau@citrix.com>,
 Stefano Stabellini <sstabellini@kernel.org>, xen-devel@lists.xenproject.org
References: <cover.1773157782.git.oleksii.kurochko@gmail.com>
 <f358325514c91c540e0edf992ca51414a1964fe0.1773157782.git.oleksii.kurochko@gmail.com>
 <09fed304-685c-46a9-9159-72baa1721224@suse.com>
 <4b977410-8d24-41c3-9c83-7d95637ddea3@gmail.com>
 <314c064b-88eb-497a-9022-2013125d63a9@suse.com>
Content-Language: en-US
From: Oleksii Kurochko <oleksii.kurochko@gmail.com>
In-Reply-To: <314c064b-88eb-497a-9022-2013125d63a9@suse.com>
Content-Type: text/plain; charset=UTF-8; format=flowed
Content-Transfer-Encoding: 7bit
X-purgate-ID: tlsNG-bad1c0/1776425686-41D6FA53-3548148B/10/73395122804
X-purgate-type: spam
X-purgate-size: 5071



On 4/16/26 2:21 PM, Jan Beulich wrote:
> On 13.04.2026 16:42, Oleksii Kurochko wrote:
>> On 4/2/26 12:03 PM, Jan Beulich wrote:
>>> On 10.03.2026 18:08, Oleksii Kurochko wrote:
>>>> @@ -14,12 +27,109 @@ bool aia_available(void)
>>>>        return is_aia_available;
>>>>    }
>>>>    
>>>> +int __init vgein_init(unsigned int cpu)
>>>
>>> If this needs invoking once per CPU being brought up, it can't be __init.
>>
>> Yes, it is going to be called inside the secondary CPU bring-up function.
>>
>> __init sections are removed much later, after all CPUs are brought up,
>> so it looks like that at the moment when secondary CPUs are being
>> brought up, __init still exists and can be called.
> 
> No. And I said so before. See XEN_SYSCTL_cpu_hotplug (and ignore it having
> "hotplug" in the name, but merely consider that you can take CPUs offline
> at runtime, and later bring them online again).

Thanks, now it makes sense to drop __init.

> 
>>> Also - static?
>>
>> It isn't static because it will be called inside the secondary CPU
>> bring-up function.
> 
> As it doesn't need calling from the outside for the boot CPU, it's not
> obvious why it would need calling from the outside for secondary ones.

I think I am confused here by what do you mean by "calling from the 
outside".

It should be called during boot or secondary CPU initialization (if AIA 
is used), right?
Then considering that VGEIN-related stuff is connected to AIA then 
vgein_init() is expected to live in aia.c and considering that it wants 
to be called by secondary CPU boot code it can't be static.

I have a feeling that I misunderstood your statement...

> 
>>>> +{
>>>> +    struct vgein_bmp *vgein = &per_cpu(vgein_bmp, cpu);
>>>> +
>>>> +    csr_write(CSR_HGEIE, -1UL);
>>>> +    vgein->geilen = flsl(csr_read(CSR_HGEIE));
>>>> +    csr_write(CSR_HGEIE, 0);
>>>> +    if ( vgein->geilen )
>>>> +        vgein->geilen--;
>>>
>>> I don't understand this. The "len" in "geilen" stands for "length", I suppose,
>>> i.e. the number of bits. Hmm, the spec itself is inconsistent: "The number of
>>> bits implemented in hgeip and hgeie for guest external interrupts is UNSPECIFIED
>>> and may be zero. This number is known as GEILEN." This may or may not include
>>> bit 0 (which is implemented, but r/o zero). Then saying "Hence, if GEILEN is
>>> nonzero, bits GEILEN:1 shall be writable in ..." suggests 0 isn't included, but
>>> that's not unambiguous.
>>
>> But they explicitly wrote that: The least-significant bits are
>> implemented first, apart from bit 0. So bit 0 is explicitly excluded.
> 
> Fine, but not including it in anything named *LEN feels - as said - ambiguous.

Agree, it is. I just tried to follow the spec naming here. But I am okay 
to rename it to max_gein, for example.

> 
>>>> +    /*
>>>> +     * All vCPU guest interrupt files are used and we don't support a case
>>>> +     * when number of vCPU on 1 pCPU is bigger then geilen.
>>>> +     */
>>>
>>> This wants checking in vgein_init() then. CPUs (beyond the boot one)
>>> violating this should not be brought online.
>>
>> It'll be nice. But we can't know how many vCPUs will be ran on pCPU when
>> vgein_init() is executed.
> 
> I don't understand: How does it matter how many vCPU-s will exist later on
> (and will run wherever)?

IIUC, you want to check what is mentioned in the comment in vcpu_init(). 
The comment says that it is checking that number of vCPU on one pCPU 
isn't bigger then geilen. To check that we have to know an amount of 
vCPU potentially will be ran on pCPU.

For me it is enough to have that vgein->geilen isn't 0 as this case 
isn't supported now.

> 
>>>> +    ASSERT(vgein_id < vgein_bmp->geilen);
>>>
>>> What if not bit is available? By asserting, you assume the caller will not
>>> call here when no ID is available.
>>
>> It is just a temporary ASSERT() (as we don't support software guest
>> interrupt files) because in general it is fine if there is no bit
>> available, it will just mean that that no physical hardware guest
>> interrupt file is assigned to the virtual hart, and software-based
>> emulation (a "software file") must be used to handle guest external
>> interrupts.
>>
>> Will it be better to return 0 now here and just don't create a vCPU
>> on ...
>>
>>    Yet there is no caller of this function,
>>> so how can one verify whether this assertion is appropriate?
>>
>> ... the caller side when an assignment is expected to be happen?
> 
> Yes, you want to return errors for cases you can't handle. You wan to
> assert on internal state only, not on anything controlled by a caller
> outside of the hypervisor.

I will return then just vgein_id = 0 (as it is what should be returned 
when s/w guest interrupt files are supported) and handle that on the 
caller side.

And symmetrically I will add 'if ( !vgein_id ) return' to 
vgein_release() as nothing should be done in vgein bitmap in this case.

~ Oleksii


~ Oleksii


From xen-devel-bounces@lists.xenproject.org Fri Apr 17 11:56:54 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Fri, 17 Apr 2026 11:56:54 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1284195.1566057 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wDhoK-0006eh-K7; Fri, 17 Apr 2026 11:56:36 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1284195.1566057; Fri, 17 Apr 2026 11:56: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 1wDhoK-0006eY-F6; Fri, 17 Apr 2026 11:56:36 +0000
Received: by outflank-mailman (input) for mailman id 1284195;
 Fri, 17 Apr 2026 11:56:35 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <Luca.Fancellu@arm.com>) id 1wDhoI-0006eS-Mm
 for xen-devel@lists.xenproject.org; Fri, 17 Apr 2026 11:56:35 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wDhoH-00HSOq-Mj
 for xen-devel@lists.xenproject.org; Fri, 17 Apr 2026 13:56:34 +0200
Received: from [10.42.69.4] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <Luca.Fancellu@arm.com>)
 id 69e21fe7-2eae-0a2a0a5409dd-0a2a4504a4e2-36
 for <xen-devel@lists.xenproject.org>; Fri, 17 Apr 2026 13:56:33 +0200
Received: from [52.101.70.44]
 (helo=AS8PR04CU009.outbound.protection.outlook.com)
 by tlsNG-ebf023.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.1)
 (envelope-from <Luca.Fancellu@arm.com>)
 id 69e21ff0-1dec-0a2a45040019-3465462c2681-3
 for <xen-devel@lists.xenproject.org>; Fri, 17 Apr 2026 13:56:33 +0200
Received: from AS9PR04CA0179.eurprd04.prod.outlook.com (2603:10a6:20b:530::21)
 by PAWPR08MB10898.eurprd08.prod.outlook.com (2603:10a6:102:46f::12)
 with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9818.25; Fri, 17 Apr
 2026 11:56:26 +0000
Received: from AMS0EPF00000197.eurprd05.prod.outlook.com
 (2603:10a6:20b:530:cafe::45) by AS9PR04CA0179.outlook.office365.com
 (2603:10a6:20b:530::21) with Microsoft SMTP Server (version=TLS1_3,
 cipher=TLS_AES_256_GCM_SHA384) id 15.20.9769.52 via Frontend Transport; Fri,
 17 Apr 2026 11:56:26 +0000
Received: from outbound-uk1.az.dlp.m.darktrace.com (4.158.2.129) by
 AMS0EPF00000197.mail.protection.outlook.com (10.167.16.219) with Microsoft
 SMTP Server (version=TLS1_3, cipher=TLS_AES_256_GCM_SHA384) id 15.20.9769.17
 via Frontend Transport; Fri, 17 Apr 2026 11:56:26 +0000
Received: from DU2PR08MB7272.eurprd08.prod.outlook.com (2603:10a6:10:2d7::16)
 by DU4PR08MB11575.eurprd08.prod.outlook.com (2603:10a6:10:61f::11)
 with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9818.25; Fri, 17 Apr
 2026 11:55:22 +0000
Received: from DU2PR08MB7272.eurprd08.prod.outlook.com
 ([fe80::5d34:206f:373:a323]) by DU2PR08MB7272.eurprd08.prod.outlook.com
 ([fe80::5d34:206f:373:a323%6]) with mapi id 15.20.9818.023; Fri, 17 Apr 2026
 11:55: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=arm.com header.i="@arm.com" header.h="From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck"; dkim=pass header.s=selector1 header.d=arm.com header.i="@arm.com" header.h="From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck"
ARC-Seal: i=2; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=pass;
 b=zDWU/K5C1An2wjctgfujg6OqnlbUUOnPRWCRsPctFIkXoC/fX+Z15yTv2pyKVdnkUCWG4JOPkkQBRbprkFom0Qdkauq6DsG5tN+ifh+0qE8lQt5Vj3yCz8B+ShnjuatAmA/kZ9bLaFKwCEeEEzT7DE7BMLXhw7fwbjV6lKhKY+vdfi1gwpE7XJtVTJMk6OuPPeFvEI9SNmoW8HdYG+L8jpWDnjqqsfOtzq51rleJtKLv6p0BCQdvn0q8Jxw5T+Wf5FlA+pU/NNdXyxbAi6pfwzsl9yfp/O4LINPNGEmaQXGK7pzgV9ZYRlcAlHiN8tLvR8KnHcpmK4eGJbtZLSiP/A==
ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com;
 s=arcselector10001;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1;
 bh=6wuiRfqQ1aXL2n5kYPkCePV2+WdRyQfsmU2KIWQBVf0=;
 b=FnsqHHYfQkLa7kX3sle3sohMxYSStvy331KitDYNYIO+IMQxXyns0avV7qIB3SMmOLtfjULkH+xNPn/ZCONotY/K1SYM9rFbbCCAPtCLfyTeFi04v+9YQSXxoKp9hPaP5RN6TwTIgn9AnUWgQUEhnDw7CMohysvpMpAPp3c3b50uojUmE+F3qf6TWI4rXGlia3bIrTSV+V+6e+eRkuGAuIwNalskrYiaYb172+6Sp66pT0B5WRWuZZeryCO8TYJvyPLqSkglywq4P/gu3hkcrO1Dvkju8pKqpa8kgChhmkso1lUpYG9N0n1C6hX4h0e9wCrzgifIYDMNnqzhLD/Vhg==
ARC-Authentication-Results: i=2; mx.microsoft.com 1; spf=pass (sender ip is
 4.158.2.129) smtp.rcpttodomain=amd.com smtp.mailfrom=arm.com; dmarc=pass
 (p=none sp=none pct=100) action=none header.from=arm.com; dkim=pass
 (signature was verified) header.d=arm.com; arc=pass (0 oda=1 ltdi=1
 spf=[1,1,smtp.mailfrom=arm.com] dkim=[1,1,header.d=arm.com]
 dmarc=[1,1,header.from=arm.com])
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=arm.com; s=selector1;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck;
 bh=6wuiRfqQ1aXL2n5kYPkCePV2+WdRyQfsmU2KIWQBVf0=;
 b=Bl0Jf9ScV+MW9gj86nDHAV3YLItqhkHwLou6zwY4tFCE9Q1Vxda5klOfdMlK0e0m0ZGb2L76QpaCnTmUlvCETIzifb5RzuZ2xpIIeFlSaaKBrfNlAMEcQPuws3w0WHM9EkAgGJLmuxjBKVHz9Ub0VrnNGT36So3Tk8llkReBOL4=
X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 4.158.2.129)
 smtp.mailfrom=arm.com; dkim=pass (signature was verified)
 header.d=arm.com;dmarc=pass action=none header.from=arm.com;
Received-SPF: Pass (protection.outlook.com: domain of arm.com designates
 4.158.2.129 as permitted sender) receiver=protection.outlook.com;
 client-ip=4.158.2.129; helo=outbound-uk1.az.dlp.m.darktrace.com; pr=C
ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none;
 b=HF28EOF8ozUgsn29i0tLJ3VC9JB1whpplsxGJVqbuNKY0m1gbYNTxVtVZSkNPdtr7jPkMsAoTEKPY72GsjEW9kr1bo/ULQHQC5BKHwh7BhC34LOpH6VZPUk0MM+mao4mgh3lhrmuRu073OOgzkJyTTyei+jmqEQhPHgbfLK3S+ZzCjo7C927JuKE9VMdUmyPbcmMTOhn7dNXPRHYaaMDxpQgAqk2UXkf2sQjIHOWbTi87INRYG+vs7+erIgHSOQuFVlRU6B583lc7Y44+Blbdclzycp8jlCtUU1N7zKrdmMCB5ZAeRThcxyhjsmsPVwAnW5HsEKR/mqiw2SH8L6Ijg==
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com;
 s=arcselector10001;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1;
 bh=6wuiRfqQ1aXL2n5kYPkCePV2+WdRyQfsmU2KIWQBVf0=;
 b=frhguPguJUCygNtRbKsv0+Am3VV5SoQHRuFJFxFN1C1jFRoPZjNsikhTHbDFxpf0mQ8tpP4i4kz+zAQ9A7W2/846PalsOwdlukSIZ51nleGxfk7AsefC31crVzipuQ1r5uwqU5YnaSs1EDXKfngDfDFa1oPzUbnC5PR6hZq9qhTL/UpANmArHLvIjGig8mdKNtY95dhK3KNl0VI9fPnU0XHjSFSkmuyamRhNH3CW+ESQOz/7SxGd8sJ9suvNlflUD1e6HRVME7fG9Nu5CzBkop8rw89VdWj4Aiu1k4lkq66OjDjICkIHSRmAlDd5GVthz9iybkbhxCcAYP7/rpFCCA==
ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass
 smtp.mailfrom=arm.com; dmarc=pass action=none header.from=arm.com; dkim=pass
 header.d=arm.com; arc=none
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=arm.com; s=selector1;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck;
 bh=6wuiRfqQ1aXL2n5kYPkCePV2+WdRyQfsmU2KIWQBVf0=;
 b=Bl0Jf9ScV+MW9gj86nDHAV3YLItqhkHwLou6zwY4tFCE9Q1Vxda5klOfdMlK0e0m0ZGb2L76QpaCnTmUlvCETIzifb5RzuZ2xpIIeFlSaaKBrfNlAMEcQPuws3w0WHM9EkAgGJLmuxjBKVHz9Ub0VrnNGT36So3Tk8llkReBOL4=
From: Luca Fancellu <Luca.Fancellu@arm.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>, Volodymyr Babchuk
	<Volodymyr_Babchuk@epam.com>
Subject: Re: [PATCH] xen/arm: skip holes in physical address space when
 setting up frametable
Thread-Topic: [PATCH] xen/arm: skip holes in physical address space when
 setting up frametable
Thread-Index: AQHczko4909b0LdR6E6hEGKgM2/tzrXjJWsA
Date: Fri, 17 Apr 2026 11:55:22 +0000
Message-ID: <DB4CBEA0-B901-466E-80AE-483FE00A1282@arm.com>
References: <20260417091124.39552-1-michal.orzel@amd.com>
In-Reply-To: <20260417091124.39552-1-michal.orzel@amd.com>
Accept-Language: en-GB, en-US
Content-Language: en-US
X-MS-Has-Attach:
X-MS-TNEF-Correlator:
x-mailer: Apple Mail (2.3826.700.81.1.6)
Authentication-Results-Original: dkim=none (message not signed)
 header.d=none;dmarc=none action=none header.from=arm.com;
x-ms-traffictypediagnostic:
	DU2PR08MB7272:EE_|DU4PR08MB11575:EE_|AMS0EPF00000197:EE_|PAWPR08MB10898:EE_
X-MS-Office365-Filtering-Correlation-Id: 56309858-cc2b-49c0-93d6-08de9c785aa7
x-checkrecipientrouted: true
nodisclaimer: true
X-MS-Exchange-SenderADCheck: 1
X-MS-Exchange-AntiSpam-Relay: 0
X-Microsoft-Antispam-Untrusted:
 BCL:0;ARA:13230040|376014|1800799024|366016|18002099003|18096099003|22082099003|56012099003|38070700021;
X-Microsoft-Antispam-Message-Info-Original:
 KpixDX2nCVeMn0IiKOsao00qNswRZqVJmVtn6VFNCfHAkOW8VSg/68m8YMdEc+dfcCSIv/YVJYxnErElhw3buNfPKzZkn53lFnasprv2ir4Y2OddazlSf0JddbYs5xre4ahYkj5Hn6h6xO5VA7NyksGqlOXgTusr0MUx+0qF1endZVCDCNj0IEa78fydwIK2G8iaK6ZhUQwWA+wFmVSFlS8K+TJ/d8HOZjtFyptQogJhs8zJsWrLaaR6LXGKolzZ+qAPHhdxnJ9uR7mkrapTP7FvaSxA7+2CPkUrzVq+Ifa44NvvzM3U/8Z0jYzYRSKN2dzDLopZP40sCFtbLho4JV40uTOO2NiYtf9PvOdcjfEc79yCLPl2M+dNj+ka8MM2qHzBsxRq9FaIatTj3uSpVwSxJDX08uWORj+pVn//vwZsQYvDpi3Ha5c0C1h8gphvcxCb3DOaeFQze9FMRPcNYIf2etYtuyP+7b4X0WZosoKnCqU0kFjJPIyqjL0Xd4908T8U+n6o8/IouvVLQqIlnJMc5DXnsLClTXraoQJRw7DM5BSTN0L0X+GFHQXDTz66MCTyOXDQGx1wwcVGmBomJP235aVxYPfHwrY8NorPR7XdS3UZyFBxuSjOYtUcqSA236usHNmG7q9kVNS3N6U7KXVFlR0bzaFC6vintP367nuHVDTTCUCcPeB7ETl+ysGg/J6vbEMV0GjL04d1I+KxRrt3nFC8wD5opx/3CJBomK7b3pV+HKS+eJUhAsN2isAYxESjWrskyi4y2xHgc9pYF6CFQo+s9UYndz43w0aEzxI=
X-Forefront-Antispam-Report-Untrusted:
 CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:DU2PR08MB7272.eurprd08.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(376014)(1800799024)(366016)(18002099003)(18096099003)(22082099003)(56012099003)(38070700021);DIR:OUT;SFP:1101;
Content-Type: text/plain; charset="us-ascii"
Content-ID: <F96CC863FCA9DD47B4316FCCDDBF011A@eurprd08.prod.outlook.com>
Content-Transfer-Encoding: quoted-printable
MIME-Version: 1.0
X-Exchange-RoutingPolicyChecked:
 ts2rQvHgSiAgbsSLePehzs2C2Y5fHmdfBctJHLazlsL6cF8YhywwGgwYmNzc7R8vW9jGIIxt+NTDeDYeQbizHnndihzOlKf5t6zLD+3f8TiwqQ97jqSib2A21D7VvQr0k6PZFCHhNthfaKUMTadVZ4xbgHMd+g2di+/IOet03cvk6XVCIh2CfQB6Ykbqc6UA7sSkT6doIzxsF5/5+KK8mxkaOQbjiVx8IQ8eDp0ZXaUVJna+r3OtFdkID8O6OgncE3CIRkfl7rNM67tz+/hNDqDK3P1JwOmlZ3TlWcex7PeVwWvstQ3VE5hGcBO9nAZye3S1V7ErmLpRwhs8xaL3XQ==
X-MS-Exchange-Transport-CrossTenantHeadersStamped: DU4PR08MB11575
X-EOPAttributedMessage: 0
X-MS-Exchange-Transport-CrossTenantHeadersStripped:
 AMS0EPF00000197.eurprd05.prod.outlook.com
X-MS-PublicTrafficType: Email
X-MS-Office365-Filtering-Correlation-Id-Prvs:
	45eea7b3-7469-48b9-59d6-08de9c7834b3
X-Microsoft-Antispam:
	BCL:0;ARA:13230040|376014|1800799024|35042699022|82310400026|14060799003|36860700016|56012099003|18002099003|18096099003|22082099003;
X-Microsoft-Antispam-Message-Info:
	y9RaDFUvm0Mjt1cuJlX1JYm81GFxari4eJ9Rz1i86BcZ8/N3mVfwffc5nUePthR+MOn8vCAZ02RcZ0WO7UhVBZTbXny+Ka2XbEDYoge4gT+YwH7A3Ohr/J/qkLQ+MH95etaiStz3vP/1VSR8TRx63naY2V0z3kF+G+AVZAOeBEseVAv/yjowLxP0G6sWpdiTuHB+GmYCtSSioK5ZMZrKqfpnDzfKUAb4ibs79GjEfTdygvrf+6v9DBeDp9YJdi2hdPJzFBLZe++cOGe9HMwbq6yZD0ZE/B0p4flvIAb887/fLzKGCpp8/YLPV1uYCxLgBIQ1zZrKmujsoHvE8fdO18cZTWJ7glKHX9j9acNHLIlnhJBJdbpKat1kynl5Dd6Y6EvuetwY3i5NPi1WzzIraIY/wFR6SMhsjGnVL7tgIVxbqOomD8R2Zos2jNnj2b95fWm3AnLgtqa1Fv7SkLKK55dq1m8SSwSovRDg4ZKHL3QWc6Amg8EkJMFYUJQeSqxwOoIEZYd3XMoF8TEHB/oz+vh105UPFEaEYUD/6w9xXry2EX0EiJiFMmFYFsQyJWbrY+ZEwF9n3Zr0/r2csVBUy0wYxAD5vbWckCWugIYVv374eCi1t5MROfGFl1cc9kw+5pT70GubnrH+yqMeR1uSPRcmmKYwZS8NbA4z5uekpz4XevKJRiXja71KCiNeQIWoEy23gGCs6TXTUMe3ZmsVdDGFobEmYhdae8i4cVHBr2n53BejnHghC5FzXKd8pq3LPkLxxz/NunldpTt4E7YUBA==
X-Forefront-Antispam-Report:
	CIP:4.158.2.129;CTRY:GB;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:outbound-uk1.az.dlp.m.darktrace.com;PTR:InfoDomainNonexistent;CAT:NONE;SFS:(13230040)(376014)(1800799024)(35042699022)(82310400026)(14060799003)(36860700016)(56012099003)(18002099003)(18096099003)(22082099003);DIR:OUT;SFP:1101;
X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1
X-MS-Exchange-AntiSpam-MessageData-0:
	fmJHCDHuj0I2EK+QF9HWE3ksnDBgpclet8sc0zuFsMINNI+UEjlmmMuzA8Dr+r8qq4SNQUQUuVlP4X1R1Hqibe2LGbrTIxdfqORdaVEXUPan6rLXwojcDll+6uQ6mTK4H7X0m0G9j05ijNWudk9IrrqQ8e9tOb0uZGxQ85GYXsE9boyCKF+iN41ChvV1vtDWG9NxbCzo2WPajAgm5H2ZRUFlD7iJoILOQjHtaw2A9+CDi7Ombc34gHv2WU8ZMRnqHFIuvL5siwzw8cXWBexC43OsPWPzI6xyJ7sDqXs8HZ5BsQQUwuQbk6Nl4m1Y+KrD7XsD3WAAAgdzYWkJSA0vMmk6kRpgsInKAobJzgb8pHjONssQVYLEWhGkgqq7XBgvWE/Dd8/WB1rWrgkW2gCdtVVssnZHLUxYJpSwzOSxAVxu26EoHUBtlVLp/J9OqjeE
X-OriginatorOrg: arm.com
X-MS-Exchange-CrossTenant-OriginalArrivalTime: 17 Apr 2026 11:56:26.3064
 (UTC)
X-MS-Exchange-CrossTenant-Network-Message-Id: 56309858-cc2b-49c0-93d6-08de9c785aa7
X-MS-Exchange-CrossTenant-Id: f34e5979-57d9-4aaa-ad4d-b122a662184d
X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=f34e5979-57d9-4aaa-ad4d-b122a662184d;Ip=[4.158.2.129];Helo=[outbound-uk1.az.dlp.m.darktrace.com]
X-MS-Exchange-CrossTenant-AuthSource:
	AMS0EPF00000197.eurprd05.prod.outlook.com
X-MS-Exchange-CrossTenant-AuthAs: Anonymous
X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem
X-MS-Exchange-Transport-CrossTenantHeadersStamped: PAWPR08MB10898
X-purgate-ID: tlsNG-ebf023/1776426993-30E443FF-9A178883/0/0
X-purgate-type: clean
X-purgate-size: 10780

HI Michal,

> On 17 Apr 2026, at 10:11, Michal Orzel <michal.orzel@amd.com> wrote:
>=20
> Refactor setup_frametable_mappings() into init_frametable(), modeled
> after x86's implementation. Instead of mapping one contiguous frametable
> covering ram_start to ram_end (including holes), iterate the
> pdx_group_valid bitmap to allocate and map frametable memory only for
> valid PDX groups, skipping gaps in the physical address space. At the
> moment we don't really take into account pdx_group_valid bitmap.
>=20
> This reduces memory consumption on systems with sparse RAM layouts by
> not allocating frametable entries for non-existent memory regions.
>=20
> A file-local pdx_to_page() override is needed because the generic macro
> in xen/include/xen/pdx.h does not account for ARM's non-zero
> frametable_base_pdx.
>=20
> Update the MPU implementation to match the new init_frametable()
> signature. Since MPU has no virtual address translation (ma =3D=3D va),
> hole-skipping is not possible and the frametable remains a single
> contiguous allocation.
>=20
> Signed-off-by: Michal Orzel <michal.orzel@amd.com>
> ---
> We've been using this approach at AMD for a while now. Without this we wo=
uld not
> be able to boot some of our boards that have huge holes in the PA space, =
so I
> consider this patch a great improvement.
>=20
> Two things to consider as a follow-up in the future:
> - change generic pdx_to_page, page_to_pdx to take into account offset tha=
t
>   on x86 is zero but on other arches it is not. The page list code is
>   for now unaffected because the offset cancels out,
> - use the same on RISCV.
> ---
> xen/arch/arm/arm32/mmu/mm.c   |  3 +-
> xen/arch/arm/include/asm/mm.h |  4 +-
> xen/arch/arm/mm.c             |  2 +-
> xen/arch/arm/mmu/mm.c         | 77 ++++++++++++++++++++++++-----------
> xen/arch/arm/mpu/mm.c         | 23 ++++++-----
> 5 files changed, 70 insertions(+), 39 deletions(-)
>=20
> diff --git a/xen/arch/arm/arm32/mmu/mm.c b/xen/arch/arm/arm32/mmu/mm.c
> index 5e4766ddcf65..0b595baa11b3 100644
> --- a/xen/arch/arm/arm32/mmu/mm.c
> +++ b/xen/arch/arm/arm32/mmu/mm.c
> @@ -178,8 +178,7 @@ void __init setup_mm(void)
>=20
>     setup_directmap_mappings(mfn_x(directmap_mfn_start), xenheap_pages);
>=20
> -    /* Frame table covers all of RAM region, including holes */
> -    setup_frametable_mappings(ram_start, ram_end);
> +    init_frametable(ram_start);
>=20
>     /*
>      * The allocators may need to use map_domain_page() (such as for
> diff --git a/xen/arch/arm/include/asm/mm.h b/xen/arch/arm/include/asm/mm.=
h
> index 72a692862420..2eb8465aa904 100644
> --- a/xen/arch/arm/include/asm/mm.h
> +++ b/xen/arch/arm/include/asm/mm.h
> @@ -196,8 +196,8 @@ extern void *early_fdt_map(paddr_t fdt_paddr);
> extern void remove_early_mappings(void);
> /* Prepare the memory subystem to bring-up the given secondary CPU */
> extern int prepare_secondary_mm(int cpu);
> -/* Map a frame table to cover physical addresses ps through pe */
> -extern void setup_frametable_mappings(paddr_t ps, paddr_t pe);
> +/* Map a frame table */

NIT: Would /* Initialize the frame table */ fit better the new helper descr=
iption?

> +void init_frametable(paddr_t ram_start);
> /* Helper function to setup memory management */
> void setup_mm_helper(void);
> /* map a physical range in virtual memory */
> diff --git a/xen/arch/arm/mm.c b/xen/arch/arm/mm.c
> index 6df8b616e464..e6b651956927 100644
> --- a/xen/arch/arm/mm.c
> +++ b/xen/arch/arm/mm.c
> @@ -62,7 +62,7 @@ void __init setup_mm(void)
>=20
>     setup_mm_helper();
>=20
> -    setup_frametable_mappings(ram_start, ram_end);
> +    init_frametable(ram_start);
>=20
>     init_staticmem_pages();
>     init_sharedmem_pages();
> diff --git a/xen/arch/arm/mmu/mm.c b/xen/arch/arm/mmu/mm.c
> index 6604f3bf4e6a..4b4da349c16c 100644
> --- a/xen/arch/arm/mmu/mm.c
> +++ b/xen/arch/arm/mmu/mm.c
> @@ -8,16 +8,37 @@
> #include <xen/pdx.h>
> #include <xen/string.h>
>=20
> -/* Map a frame table to cover physical addresses ps through pe */
> -void __init setup_frametable_mappings(paddr_t ps, paddr_t pe)
> +#undef pdx_to_page
> +#define pdx_to_page(pdx) gcc11_wrap(frame_table + ((pdx) - frametable_ba=
se_pdx))
> +
> +static void __init
> +init_frametable_chunk(unsigned long pdx_s, unsigned long pdx_e)
> {
> -    unsigned long nr_pdxs =3D mfn_to_pdx(mfn_add(maddr_to_mfn(pe), -1)) =
-
> -                            mfn_to_pdx(maddr_to_mfn(ps)) + 1;
> -    unsigned long frametable_size =3D nr_pdxs * sizeof(struct page_info)=
;
> -    mfn_t base_mfn;
> -    const unsigned long mapping_size =3D frametable_size < MB(32) ? MB(2=
)
> -                                                                : MB(32)=
;
> +    unsigned long nr_pdxs =3D pdx_e - pdx_s;
> +    unsigned long chunk_size =3D nr_pdxs * sizeof(struct page_info);
> +    const unsigned long mapping_size =3D chunk_size < MB(32) ? MB(2) : M=
B(32);
> +    unsigned long virt;
>     int rc;
> +    mfn_t base_mfn;
> +
> +    /* Round up to 2M or 32M boundary, as appropriate. */
> +    chunk_size =3D ROUNDUP(chunk_size, mapping_size);
> +    base_mfn =3D alloc_boot_pages(chunk_size >> PAGE_SHIFT, 32 << (20 - =
12));
> +
> +    virt =3D (unsigned long)pdx_to_page(pdx_s);
> +    rc =3D map_pages_to_xen(virt, base_mfn, chunk_size >> PAGE_SHIFT,
> +                          PAGE_HYPERVISOR_RW | _PAGE_BLOCK);
> +    if ( rc )
> +        panic("Unable to setup the frametable mappings\n");
> +
> +    memset(pdx_to_page(pdx_s), 0, nr_pdxs * sizeof(struct page_info));
> +    memset(pdx_to_page(pdx_e), -1,
> +           chunk_size - nr_pdxs * sizeof(struct page_info));
> +}
> +
> +void __init init_frametable(paddr_t ram_start)
> +{
> +    unsigned int sidx, nidx, max_idx;
>=20
>     /*
>      * The size of paddr_t should be sufficient for the complete range of
> @@ -26,24 +47,34 @@ void __init setup_frametable_mappings(paddr_t ps, pad=
dr_t pe)
>     BUILD_BUG_ON((sizeof(paddr_t) * BITS_PER_BYTE) < PADDR_BITS);
>     BUILD_BUG_ON(sizeof(struct page_info) !=3D PAGE_INFO_SIZE);
>=20
> -    if ( frametable_size > FRAMETABLE_SIZE )
> -        panic("The frametable cannot cover the physical region %#"PRIpad=
dr" - %#"PRIpaddr"\n",
> -              ps, pe);
> +    max_idx =3D DIV_ROUND_UP(max_pdx, PDX_GROUP_COUNT);
> +    frametable_base_pdx =3D mfn_to_pdx(maddr_to_mfn(ram_start));
>=20
> -    frametable_base_pdx =3D mfn_to_pdx(maddr_to_mfn(ps));
> -    /* Round up to 2M or 32M boundary, as appropriate. */
> -    frametable_size =3D ROUNDUP(frametable_size, mapping_size);
> -    base_mfn =3D alloc_boot_pages(frametable_size >> PAGE_SHIFT, 32<<(20=
-12));
> +    /*
> +     * pdx_to_page(pdx_s) in init_frametable_chunk must be page-aligned
> +     * for map_pages_to_xen(). Aligning to PDX_GROUP_COUNT guarantees th=
is
> +     * because PDX_GROUP_COUNT * sizeof(page_info) is always a multiple =
of
> +     * PAGE_SIZE by construction.
> +     */
> +    frametable_base_pdx =3D ROUNDDOWN(frametable_base_pdx, PDX_GROUP_COU=
NT);

We are now rounding down frametable_base_pdx which before this patch it was=
 the start of the ram,
but in xen/xen/arch/arm/include/asm/mm.h, mfn_valid(mfn) is using frametabl=
e_base_pdx to check for
mfn validity, this means that we could pass an mfn before the start of the =
ram and if __mfn_valid is happy,
we are getting a regression.

Can this happen or am I missing something?

>=20
> -    rc =3D map_pages_to_xen(FRAMETABLE_VIRT_START, base_mfn,
> -                          frametable_size >> PAGE_SHIFT,
> -                          PAGE_HYPERVISOR_RW | _PAGE_BLOCK);
> -    if ( rc )
> -        panic("Unable to setup the frametable mappings.\n");
> +    if ( (max_pdx - frametable_base_pdx) > FRAMETABLE_NR )
> +        panic("Frametable too small\n");
> +
> +    for ( sidx =3D (frametable_base_pdx / PDX_GROUP_COUNT); ; sidx =3D n=
idx )
> +    {
> +        unsigned int eidx;
> +
> +        eidx =3D find_next_zero_bit(pdx_group_valid, max_idx, sidx);
> +        nidx =3D find_next_bit(pdx_group_valid, max_idx, eidx);
> +
> +        if ( nidx >=3D max_idx )
> +            break;
> +
> +        init_frametable_chunk(sidx * PDX_GROUP_COUNT, eidx * PDX_GROUP_C=
OUNT);
> +    }
>=20
> -    memset(&frame_table[0], 0, nr_pdxs * sizeof(struct page_info));
> -    memset(&frame_table[nr_pdxs], -1,
> -           frametable_size - (nr_pdxs * sizeof(struct page_info)));
> +    init_frametable_chunk(sidx * PDX_GROUP_COUNT, max_pdx);
> }
>=20
> /*
> diff --git a/xen/arch/arm/mpu/mm.c b/xen/arch/arm/mpu/mm.c
> index aff88bd3a9c1..9c568831c128 100644
> --- a/xen/arch/arm/mpu/mm.c
> +++ b/xen/arch/arm/mpu/mm.c
> @@ -186,16 +186,15 @@ static int is_mm_attr_match(pr_t *region, unsigned =
int attributes)
>     return 0;
> }
>=20
> -/* Map a frame table to cover physical addresses ps through pe */
> -void __init setup_frametable_mappings(paddr_t ps, paddr_t pe)
> +/*
> + * Allocate a contiguous frame table covering ram_start through max_pdx.
> + * Unlike the MMU version, MPU cannot skip holes because there is no vir=
tual
> + * address translation (ma =3D=3D va).
> + */
> +void __init init_frametable(paddr_t ram_start)
> {
> +    unsigned long nr_pdxs, frametable_size;
>     mfn_t base_mfn;
> -    paddr_t aligned_ps =3D ROUNDUP(ps, PAGE_SIZE);
> -    paddr_t aligned_pe =3D ROUNDDOWN(pe, PAGE_SIZE);
> -
> -    unsigned long nr_pdxs =3D mfn_to_pdx(mfn_add(maddr_to_mfn(aligned_pe=
), -1)) -
> -                            mfn_to_pdx(maddr_to_mfn(aligned_ps)) + 1;
> -    unsigned long frametable_size =3D nr_pdxs * sizeof(struct page_info)=
;
>=20
>     /*
>      * The size of paddr_t should be sufficient for the complete range of
> @@ -204,11 +203,13 @@ void __init setup_frametable_mappings(paddr_t ps, p=
addr_t pe)
>     BUILD_BUG_ON((sizeof(paddr_t) * BITS_PER_BYTE) < PADDR_BITS);
>     BUILD_BUG_ON(sizeof(struct page_info) !=3D PAGE_INFO_SIZE);
>=20
> +    frametable_base_pdx =3D mfn_to_pdx(maddr_to_mfn(ram_start));
> +    nr_pdxs =3D max_pdx - frametable_base_pdx;
> +    frametable_size =3D nr_pdxs * sizeof(struct page_info);
> +
>     if ( frametable_size > FRAMETABLE_SIZE )
> -        panic("The frametable cannot cover the physical region %#"PRIpad=
dr" - %#"PRIpaddr"\n",
> -              ps, pe);
> +        panic("Frametable too small\n");
>=20
> -    frametable_base_pdx =3D paddr_to_pdx(aligned_ps);
>     frametable_size =3D ROUNDUP(frametable_size, PAGE_SIZE);
>=20
>     base_mfn =3D alloc_boot_pages(frametable_size >> PAGE_SHIFT, 1);
> --=20
> 2.43.0
>=20



From xen-devel-bounces@lists.xenproject.org Fri Apr 17 11:57:04 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Fri, 17 Apr 2026 11:57:04 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1284202.1566066 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wDhol-00072N-VW; Fri, 17 Apr 2026 11:57:03 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1284202.1566066; Fri, 17 Apr 2026 11:57: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 1wDhol-00072G-Rn; Fri, 17 Apr 2026 11:57:03 +0000
Received: by outflank-mailman (input) for mailman id 1284202;
 Fri, 17 Apr 2026 11:57:02 +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 1wDhok-00071h-15
 for xen-devel@lists.xenproject.org; Fri, 17 Apr 2026 11:57:02 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wDhoj-002VRs-Bg
 for xen-devel@lists.xenproject.org; Fri, 17 Apr 2026 13:57:01 +0200
Received: from [10.42.69.6] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <andrew.cooper@citrix.com>)
 id 69e22003-bab6-0a2a0a5309dd-0a2a450691ce-46
 for <xen-devel@lists.xenproject.org>; Fri, 17 Apr 2026 13:57:01 +0200
Received: from [40.107.208.42]
 (helo=PH0PR06CU001.outbound.protection.outlook.com)
 by tlsNG-16d1c6.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.1)
 (envelope-from <andrew.cooper@citrix.com>)
 id 69e2200b-7371-0a2a45060019-286bd02a9aa3-3
 for <xen-devel@lists.xenproject.org>; Fri, 17 Apr 2026 13:57:00 +0200
Received: from CH8PR03MB8275.namprd03.prod.outlook.com (2603:10b6:610:2b9::7)
 by CO1PR03MB5778.namprd03.prod.outlook.com (2603:10b6:303:6e::22)
 with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9818.25; Fri, 17 Apr
 2026 11:56:56 +0000
Received: from CH8PR03MB8275.namprd03.prod.outlook.com
 ([fe80::a70d:dc32:bba8:ce37]) by CH8PR03MB8275.namprd03.prod.outlook.com
 ([fe80::a70d:dc32:bba8:ce37%6]) with mapi id 15.20.9818.023; Fri, 17 Apr 2026
 11:56: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=uU2num00x53P2j7E13LEVly/pm5XFfOkNVxls7s/zAOzdAaDIhOCPIDa6Og3C4wzQNixNAO2tJbT5ZMpsrUHGe/JH2PhpszgtbftK5pMtKVZg4nCWAU383jThj5f+ih5ZELrK3SRqoz4OnKIm8r3I9cEPANWcmmuhnmIMrJdiZ56SVvhTZjXixPga5cGmZfcepz6XrRC6BDqDhae2/Wp3S8N6864IKvyoYOX5bavSka/vfRhTOZcpyeV2Ek5l4GLx+gsmsfmnrA0jDYSJx+VQItp4n5lKUWqGWX5qI/nekFgur8Kc1lzC1Y+aYYhYZzbwpSIKLgB47RHhfa/Y0LPWg==
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com;
 s=arcselector10001;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1;
 bh=gugI186i9jfrpmlhISLAKwWbgzF2emXM81g8BgE7ZIM=;
 b=ChB1n0waVWbwbYqImrSzXCE+ZtXd1oDLAv7A5hOWxSsK0/GZnVKc8uZyv64fRKMtPjVkbsIzHYmY37kZaKJPbHiGCd3lrecvwj4kHoiDMyVJwd6bPlA3Ysc2uQqjt5Z+WDOjiSW2pmrt8hnYsyw2KTMbSUNoWPBIu9LYCSDQAnrwLx7F0mwILg1iRhN8CBzL0wX6yg8t/NCNg9wTDTTQ6qhGsCNqaiMctXl6HiC6sezoSTldAy+pWTHOakv1lyNc1zE2SM+mN1kBfEA7IGcuVJ8F/eCTY2LcwPVth6OH4Sf4dttmIA076bA8G5GxMoXd/Zd37HgtLNp/rRseKvoOow==
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=gugI186i9jfrpmlhISLAKwWbgzF2emXM81g8BgE7ZIM=;
 b=lOwgCJVXaE40jv6OBxoJo+CVLWnCoGNqumbkYW3U3P8LnIioP0cFxOmiDPdKdkPKj/ciJ2KCgYrrVITJ5UD9OF/z1C8XfkZQ6R49L+HmqEY+T0xRTAbsK8fTGRwtyOQbasLV7yg29BKv+uci5OkyrhiyuI04BAxZYNT/2dDRGX8=
Authentication-Results: dkim=none (message not signed)
 header.d=none;dmarc=none action=none header.from=citrix.com;
Message-ID: <30270183-7e11-4512-b8cb-8d11191094ca@citrix.com>
Date: Fri, 17 Apr 2026 12:56:52 +0100
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>,
 Volodymyr Babchuk <Volodymyr_Babchuk@epam.com>,
 Luca Fancellu <Luca.Fancellu@arm.com>
Subject: Re: [PATCH] xen/arm: skip holes in physical address space when
 setting up frametable
To: Michal Orzel <michal.orzel@amd.com>, xen-devel@lists.xenproject.org
References: <20260417091124.39552-1-michal.orzel@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: <20260417091124.39552-1-michal.orzel@amd.com>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
X-ClientProxiedBy: LO2P123CA0103.GBRP123.PROD.OUTLOOK.COM
 (2603:10a6:600:139::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_|CO1PR03MB5778:EE_
X-MS-Office365-Filtering-Correlation-Id: 1fbbdf0a-6706-4ed0-7017-08de9c786c58
X-MS-Exchange-SenderADCheck: 1
X-MS-Exchange-AntiSpam-Relay: 0
X-Microsoft-Antispam:
	BCL:0;ARA:13230040|366016|1800799024|376014|18002099003|22082099003|56012099003;
X-Microsoft-Antispam-Message-Info:
	zw1BsO4qrLrVsq3Wu5T7nbQqDxWQPNsgMRipAxFo4KrhtWA5uCJtejIHkPy0INKYNF11M3XhlV9/vEYBS/GBOfVUJNknZ+YhAvbZoxN+bEtPDGq648supujca+2NTNfXP9Y55AavIBpjukL6XM90Mpa8SA1yK9tHPig/VCcZsGsvOVqrSrZlG88NGX56rJHxP/JEjIQj5lOGHm76HPGiLb2GP9vMPUVwGYWp8m4vLIH/vXxVy/jlzIwQLa3WWdlNCJyTlkMqqRUbja9BSjgi3e1RoxsZTYQDu8bfjHWxNETqfmJkhhtCXCbNmob4wWYUc6sjkFpq2/zC+0LYooZHtFxVAlF7VzgnYgo4mcw5YYO1mNpnaV2UsZwuinzBXEuE/fT/iBq1Sm0IEQ8/Wa/x7YFX2CY+a6b1ynB796ctnUCXG4xlF88Fezm8QFSvYZaQVi/JqXgI1jLArWu1N8ONdnBa/ergMTWoyPf3QZ9MHNaU0GOY8IJVa97VezkQcwQwLiPzfOyZuMZTf+6teulvgwdO6Aoe5gDn5fQRdFB2MfUBBnkgRqQbgYntZufkS/52s4PuESXeAdAiuWBapF1gw+/tTRdWyEi+SmABvxMpQ69UJ/aGSoZvAIC3M5bZNwlaMPPmNaIk9j63JqKKOiffLcGcivgRLM7KNkP3Y0OVGPelvnMJ7sUq16mXeBSU8DOtQe1XZOsCNbq7tD67ReI887CJIkbt2OqenXE2tk5D6lk=
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)(18002099003)(22082099003)(56012099003);DIR:OUT;SFP:1101;
X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1
X-MS-Exchange-AntiSpam-MessageData-0:
	=?utf-8?B?RVFkV3RLanFiWU5XZUlNenI3ZnZzTzVBcitTaU5LS0o2eldXM3BibzZYWm9T?=
 =?utf-8?B?aDBXczFMaThCTjhUWXNhU3REMjNKTVRpTmtabEVlYzdlVUM3TDBhdmo1NUVU?=
 =?utf-8?B?aE9mUHhEbUZGNXFNSDlYWjVkcThla3gyc0ZIa29ZL3gzNTZ6elNDeU1WOEF2?=
 =?utf-8?B?cFN1SncxekFsbVUwNElRUUNvMHorRjFVS3E2WnQ4cG1hUUp3eHNRcHNNMzlx?=
 =?utf-8?B?Z24xYlBGZmltY1h1N0lBMFViTVVzb214Vnd5Zy8rTmVpd0EyVFBqUkVtTGNp?=
 =?utf-8?B?VVZMTEdQaW1QVU92ajUrdW9VVU5aaGJHK0NPbDdNRzZoZDlvbjFVYWRRS21J?=
 =?utf-8?B?c1VHKzRjVE9Ha0JUVCtrMXEwbDJhTXJ6SFg3KzllNTFLdFg4eldCWmRBVHVJ?=
 =?utf-8?B?UFpNemdhOTBvUlBpcGJjeXVBZGI5VTQwZDUyTTdVZE5EdmFwTWQ1SDJIWmxV?=
 =?utf-8?B?eHI3TkF6bjlMZERHbHpRUFVNc3FIc28wUDN4TFZlRyt3akNFWWZ5TnRVZVkz?=
 =?utf-8?B?Mno1M2Fla0NQT2lnMUthWEp2SEgrekg4My9RQXhuLzhyckJQdmtac3JoZWhV?=
 =?utf-8?B?TUo5Z1RIemJ2b3VKdzVuT2h2aG9mWmJDelRseHo5Y1MycHZzcGNWU2pUZlQ2?=
 =?utf-8?B?R2RQeWVNaXVranQxeGdMY01QUUtzNDFuOG8rN2xJSk5SL2FXVE1JTEt2ZUM0?=
 =?utf-8?B?OVlzVmlLUGdvRlBSQjhySWhDSDB3MHJ2dFZERVgvWld1d0hyalU3UXY3WlZs?=
 =?utf-8?B?UGhhR3gvMFJYeXI2Z0RwWlRpMUpGT3F0SE9vZlJtR3hDbVMrQnVpQnIvU21n?=
 =?utf-8?B?d09OakQ2UHlCQnV6STlHclNaL3VyVHNjTGtZK1gvWkc1aWZrYnMzT3RyaWpw?=
 =?utf-8?B?TUU5aHJCLzM5WlhkVnJVaWFTS1pRUTkycmpwQWZ5SDM5NWlodFV2VTFUVGxL?=
 =?utf-8?B?UGMwUlJZK1gwMmFYKzNLaW16WDlTNVV6Mm1yODM5R1lSejc0OFl0UC9nbEQ2?=
 =?utf-8?B?a0MyYWlIM2ZmbTdmdXBjbHEyS1BRc2JrRmlMbzYvd01NN04rR29VaGFWVXgr?=
 =?utf-8?B?SnVTSEQ3SmlqTG1qd1NiMlBaL0ZWUUxuZU1BNnRKUE91UHB3blg3dml6SmRo?=
 =?utf-8?B?c080Z3FmK2duT2FWMWFnTU1kMWd2VitNM2tLVGk0YzdkNlg4YjZkQXExYWNj?=
 =?utf-8?B?bnhkUEtyZ1hlTFlLaC9UaHp1TlZDZkRmSW9lN3FoSFIwOCtuWFVHaW1QVGdU?=
 =?utf-8?B?UWMwWktNUjR4QzhtQ2w5cnhjRkRWN2QxUEkyL3Z3WExtZGVMR2dsWVRlSGdX?=
 =?utf-8?B?NEcvZERrRUc2NG5SdVN4UEluQS9WbVpkNkxtR290ZEpEL1F5b2o0N0gvWjN3?=
 =?utf-8?B?SUwybFlDSXd5Z0EwdHZWMEtTdytwcWV2OFFGVjgxTWhkUlBWL2N3WWNiQkx1?=
 =?utf-8?B?RFFsNWJjREUzRHlzNTFIemMvdGt6czF4K2p2WmFSenh0ZDBKd3JzbVcwNzdo?=
 =?utf-8?B?b0NlQUJLK0hRcUNSZVQ4Y2gyNWNyeHNMMWRzOW80SFNvMno1bnFCMUh1TTMr?=
 =?utf-8?B?SERoRDRHM05OWGs4MndFUXlBM0llS0NFTGhpU1NjbnVYVzFWMTJVajJmZXVm?=
 =?utf-8?B?M2xUWjdTcy9DRjh4cXZFbzZxYkVQanFvM3Q3alVHam1FT1kvR0VSbTlPSFcz?=
 =?utf-8?B?THd5V1U0SXBHZEJVS3Q5VDFTTTZaZTF4aWQ5T3JoNk9ac2pFUmZsZ2t0WUxW?=
 =?utf-8?B?WlNWeUJiU2x4K29Dd2dCUWhFaVpHb28vMXV5L1U2b0h5TlBhTmc3emhwNyts?=
 =?utf-8?B?Ujk4Y2pSd0RqMDBMN2FpQ0JJMXBUNHdwd3djWGpWbjVleXJRNEtoOFQ2a1dR?=
 =?utf-8?B?UmJzRmVuMklhSUF5UHR3WlUxZmEyWUhFcXdkVzRNN1A5OHlkMkhqN3Njd3lj?=
 =?utf-8?B?MEYzaEVaVDRoRkM3L0hDRnYvSmdpejI4eHEwQ0NsbkdTWC8vWlhKYzNwaGVr?=
 =?utf-8?B?UTNwREFrVEFnam9BZ2xueXNCdzk0VWRHUTBhMDc2NVRZRFFMWWRlRVd0NWky?=
 =?utf-8?B?aG1XRmttcHV5Y1Bhd3A4Qmg2ZDlMWGg2aWROOFFCK1JQUmUzU1NoRTBJcjd4?=
 =?utf-8?B?Q1FXbWdzVnZBTGxZQklaWm5OQUhKOFFLYXFCMUdxV1Nka1c3UDZwN2xreG55?=
 =?utf-8?B?KzNCT3NGeVZYNWNTOW9iaFJSczNYR1hXZXJSYUQ1NFBGNkwxdXQ3VTZ3OG5j?=
 =?utf-8?B?aGFmbERmSUVJVnZKRThWMXZTTkdWZDg3OW9tUCt2QXB1NTRhU21CejlXN3BM?=
 =?utf-8?B?OUsrVk9CckxDU2RnQXZhamZQOGh4MkM4R3FNZjAwYStaV1pwQ0s2TS9raXA4?=
 =?utf-8?Q?4mXK+0UzzqS1VfaE=3D?=
X-OriginatorOrg: citrix.com
X-MS-Exchange-CrossTenant-Network-Message-Id: 1fbbdf0a-6706-4ed0-7017-08de9c786c58
X-MS-Exchange-CrossTenant-AuthSource: CH8PR03MB8275.namprd03.prod.outlook.com
X-MS-Exchange-CrossTenant-AuthAs: Internal
X-MS-Exchange-CrossTenant-OriginalArrivalTime: 17 Apr 2026 11:56:56.2006
 (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: O15qdUJ3wprCvkBh5t6Dc+Ry3tITJDenlDIyFoJ8Tf3OoD9nWFcmMy2Dc9IiQizHgHI7zhLprGOMHepc50naiNVHq4tShGs704WDHkD5hRk=
X-MS-Exchange-Transport-CrossTenantHeadersStamped: CO1PR03MB5778
X-purgate-ID: tlsNG-16d1c6/1776427021-50767D75-D93FB8D2/0/0
X-purgate-type: clean
X-purgate-size: 2174

On 17/04/2026 10:11 am, Michal Orzel wrote:
> Refactor setup_frametable_mappings() into init_frametable(), modeled
> after x86's implementation. Instead of mapping one contiguous frametable
> covering ram_start to ram_end (including holes), iterate the
> pdx_group_valid bitmap to allocate and map frametable memory only for
> valid PDX groups, skipping gaps in the physical address space. At the
> moment we don't really take into account pdx_group_valid bitmap.
>
> This reduces memory consumption on systems with sparse RAM layouts by
> not allocating frametable entries for non-existent memory regions.
>
> A file-local pdx_to_page() override is needed because the generic macro
> in xen/include/xen/pdx.h does not account for ARM's non-zero
> frametable_base_pdx.
>
> Update the MPU implementation to match the new init_frametable()
> signature. Since MPU has no virtual address translation (ma == va),
> hole-skipping is not possible and the frametable remains a single
> contiguous allocation.
>
> Signed-off-by: Michal Orzel <michal.orzel@amd.com>
> ---
> We've been using this approach at AMD for a while now. Without this we would not
> be able to boot some of our boards that have huge holes in the PA space, so I
> consider this patch a great improvement.
>
> Two things to consider as a follow-up in the future:
>  - change generic pdx_to_page, page_to_pdx to take into account offset that
>    on x86 is zero but on other arches it is not. The page list code is
>    for now unaffected because the offset cancels out,
>  - use the same on RISCV.

PPC also has frametable_base_pdx and a TODO saying "make this work". 
The header file however is horribly tangled and needs some work.

What I think we want is to include <asm/pdx.h> early (if it exists), and
allow it the option to define frametable_base_pdx, but with a common
fallback making it 0.

I think we also want to split out xen/pdx-{mask,offset}.h each taking
their respective chunk of the giant comment.  Possibly pdx-none.h too. 
This separates the unrelated algorithms, and puts their definitions next
to the comment explaining how it works.

~Andrew


From xen-devel-bounces@lists.xenproject.org Fri Apr 17 13:00:48 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Fri, 17 Apr 2026 13:00:48 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1284247.1566079 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wDioC-0007X6-KC; Fri, 17 Apr 2026 13:00:32 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1284247.1566079; Fri, 17 Apr 2026 13:00: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 1wDioC-0007Wz-Fn; Fri, 17 Apr 2026 13:00:32 +0000
Received: by outflank-mailman (input) for mailman id 1284247;
 Fri, 17 Apr 2026 13:00: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 1wDioA-0007Wt-Tu
 for xen-devel@lists.xenproject.org; Fri, 17 Apr 2026 13:00:31 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wDioA-0004OW-Ag
 for xen-devel@lists.xenproject.org; Fri, 17 Apr 2026 15:00:30 +0200
Received: from [10.42.69.6] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <Michal.Orzel@amd.com>)
 id 69e22ee9-5cb7-0a2a0a5109dd-0a2a4506bafe-30
 for <xen-devel@lists.xenproject.org>; Fri, 17 Apr 2026 15:00:29 +0200
Received: from [40.93.194.22]
 (helo=SN4PR0501CU005.outbound.protection.outlook.com)
 by tlsNG-16d1c6.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.1)
 (envelope-from <Michal.Orzel@amd.com>)
 id 69e22eec-7371-0a2a45060019-285dc21612f9-3
 for <xen-devel@lists.xenproject.org>; Fri, 17 Apr 2026 15:00:29 +0200
Received: from BN9PR03CA0565.namprd03.prod.outlook.com (2603:10b6:408:138::30)
 by SA3PR12MB7859.namprd12.prod.outlook.com (2603:10b6:806:305::7)
 with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9818.25; Fri, 17 Apr
 2026 13:00:22 +0000
Received: from BN1PEPF00004684.namprd03.prod.outlook.com
 (2603:10b6:408:138:cafe::eb) by BN9PR03CA0565.outlook.office365.com
 (2603:10b6:408:138::30) with Microsoft SMTP Server (version=TLS1_3,
 cipher=TLS_AES_256_GCM_SHA384) id 15.20.9769.52 via Frontend Transport; Fri,
 17 Apr 2026 13:00:22 +0000
Received: from satlexmb08.amd.com (165.204.84.17) by
 BN1PEPF00004684.mail.protection.outlook.com (10.167.243.90) with Microsoft
 SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id
 15.20.9769.17 via Frontend Transport; Fri, 17 Apr 2026 13:00: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.17; Fri, 17 Apr
 2026 08:00:22 -0500
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.17; Fri, 17 Apr
 2026 08:00:21 -0500
Received: from [10.252.147.171] (10.180.168.240) by satlexmb07.amd.com
 (10.181.42.216) with Microsoft SMTP Server id 15.2.2562.17 via Frontend
 Transport; Fri, 17 Apr 2026 08:00:20 -0500
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@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=u/QTFZurobU2adsVIwHsPfdltGUrv3Lw1Uua0Wn7DypL3DHWrzqcfvrC9VJ7E2qArhJQoKXHRA0bk/3oBWnpQH54aWO98qH1Z4BaYvdhvQFX4DsuJZUdeDpU3z8UbWntvRC3i5Ca8x58F39ERTAMOcgH3Fe5V0X3mxFrIu2eXkqMZOzN+ZkIlHZg5RnnMv7UIPzMzA9BN6D2odlU0kqNZIJm1cRSWTESMSoOntL2b4uhJ7+/uo3U4HBA8PXrPDbED6jnWwfjFt9qbH0vTcbdW8f3Nx1ERZBralRd/UsbESkFFXBD82vrJjF2apV0JHM4oSEhCunKQ9tFIUNWTRZVrQ==
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com;
 s=arcselector10001;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1;
 bh=vGBCUoFvBoLY1l8zK2g1yAcOw/qCn1Vfog7D6mHfJGc=;
 b=Y+DHJhlB+xvTfpCuwx7iP/LcmycmBuV1lKwOYs5AHzjvppfZr9BaavgHrlsbvyCkWkbzFT4ST8moByaZhpruYdmsw/6tIAqsOxYvLu3SpwbIV586/rgnOdPM94dVycSoZ+oJXnoFiYXI/e2E4Mdf/R17ZmnjzoWIMVAtrifgExRAQR+xw8KJkB8xTOF1aanlkzMTYZnzCpGrGsDQimTHRMXiV6Pc0F/YwFOUtNHKav5MQ/21BJvKtF22yegtYgeKNPZFQkSufSxlw4YRCPMws8qAh7KuxrD69zucwy6KVmV+I/JvoeDNuzPQRmyKuNCfyAEbppE4Sq7CZlhR0rNZ3w==
ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass (sender ip is
 165.204.84.17) smtp.rcpttodomain=arm.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=vGBCUoFvBoLY1l8zK2g1yAcOw/qCn1Vfog7D6mHfJGc=;
 b=Vm8zYNlgldPgjoEXg+KClQYt3Ami/nANNmlP453vxxgRqz1huIZxpGeW4CxjcwSHjEXBILAD4N7kbrnQISXJRrB3VJi3+mgl1MK50lk2lmyYT84QcCZdjLUiLnU3ibVBgWb7frAeMJ7Vx5GBkHn8KCb+30H/er4RuiElY5qLyKU=
X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 165.204.84.17)
 smtp.mailfrom=amd.com; dkim=none (message not signed)
 header.d=none;dmarc=pass action=none header.from=amd.com;
Received-SPF: Pass (protection.outlook.com: domain of amd.com designates
 165.204.84.17 as permitted sender) receiver=protection.outlook.com;
 client-ip=165.204.84.17; helo=satlexmb08.amd.com; pr=C
Message-ID: <10ef543f-ec21-47ae-aeb2-f569f8d48e27@amd.com>
Date: Fri, 17 Apr 2026 15:00:19 +0200
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH] xen/arm: skip holes in physical address space when
 setting up frametable
To: Luca Fancellu <Luca.Fancellu@arm.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>, Volodymyr Babchuk
	<Volodymyr_Babchuk@epam.com>
References: <20260417091124.39552-1-michal.orzel@amd.com>
 <DB4CBEA0-B901-466E-80AE-483FE00A1282@arm.com>
From: "Orzel, Michal" <michal.orzel@amd.com>
Content-Language: en-US
In-Reply-To: <DB4CBEA0-B901-466E-80AE-483FE00A1282@arm.com>
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: 8bit
X-EOPAttributedMessage: 0
X-MS-PublicTrafficType: Email
X-MS-TrafficTypeDiagnostic: BN1PEPF00004684:EE_|SA3PR12MB7859:EE_
X-MS-Office365-Filtering-Correlation-Id: d0ba5cc8-05a6-4f5e-af4d-08de9c8148f3
X-MS-Exchange-SenderADCheck: 1
X-MS-Exchange-AntiSpam-Relay: 0
X-Microsoft-Antispam:
	BCL:0;ARA:13230040|36860700016|82310400026|376014|1800799024|18096099003|18002099003|22082099003|56012099003;
X-Microsoft-Antispam-Message-Info:
	Q3QC4sYB1shys1ji2SStLTIAPOA99ayClXvZmeZv+zZl79AGk+Wp/J8mUXNqXt00pOoofIwdBWHgKq/Oxwea5lwpDypqkLuV0YnklJry0q3EI+qbYRS7pbYXVPneHUMvIpLRarRcmvLeD6w3eYxbPNFfRPXpiRr6TsWOp6ifGKYXCB1Nx1EfGCfYAP6WvtlgdpSng2lQ+CUNoH8H1b9tMFtj/HF9lwLWaAZ3m+Rz5wmgCd2uAOOCyKvBBI+XLr/NnjmdHBp+XtXMfDqNubMc3kTroDc7ISlwG3eeclRVVMynzBR5w9WJ63qjBDFky/DfgU0oMuRt9yued+d5RqGy7GMxjbaJYjBgnNVhbf4ikf8FyR/0WvhnzyoFteXvAxtqoyv4II6ro+ElqQMwoGHKgx8BV88R31qGXlTRmlIO6fb2r/4I8v5VsLIXO/isMvOqq0Q39Yg5HNlzeO2HLGICa6lV5w1tzpFKSM2VATo/kigA8u123U5U1TZNAbdBDZhKfl19goPV1VzD489gr3ZQekzCRMfxg0aZceQ9wd1NmoXhrFmET74rIQOcuX4WW8ZmFEJSrKsBsCHEJVhV6BBp2iuAJoy74JHaNzUXX1DT2+7YFPYQVTS9wogBqg3u1zORctVNBrDKBPvSS1eUmfGn2dHR9GFRtDzRFa2iKepgfT/vv5/VN/pqAMhHbHG1VWsF9SgNg1ce8N2UEo+soFmVJemFzN7X/4EbPoKQrqeyNMy2ylfAoX1tzFCiiPDD3giaGHGo2y1YoUEN4+JWhlaULQ==
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)(1800799024)(18096099003)(18002099003)(22082099003)(56012099003);DIR:OUT;SFP:1101;
X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1
X-MS-Exchange-AntiSpam-MessageData-0:
	5Q1fkmpiTnC2OAcVts4qa7+3EC553sFxD++5VROxj4it8HNZro1+uZRB9gPsLcaAYiIdcD3fqv4dKXLSwwZbOEZCmKHIdRtZl6wSYAmk1NVa6+KIt2OLoQg08FjYeRnr2IoU6l3i8Ln0mYchdO6FkUJ3gE6GLlHKQsyB6HOU9xpfpOzId2jxvuKQIPNvYrAgaUUMTo7AA0SC930mXUKV2nxeGNU2UrkS6bT0ggv5W2wuzeLmIPUPyUkcp//i6bNQyhsyyZBL8HGgSvOSINhBBntQEuYQ1A1iqVzocC+OW56033yIPnALDaN67iZbMej+hlPx7ALeCQtNEbzgQoxsnSqx8B7Qkq0HIH/yrlOyxmrefrQjqqJMTJyP8yf77a+UNqYjzYean3WVaaIq+7F3/8qr3HklAAr285HLJFlVKet94esCzSQM8nguVKpjGBWh
X-OriginatorOrg: amd.com
X-MS-Exchange-CrossTenant-OriginalArrivalTime: 17 Apr 2026 13:00:22.1435
 (UTC)
X-MS-Exchange-CrossTenant-Network-Message-Id: d0ba5cc8-05a6-4f5e-af4d-08de9c8148f3
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:
	BN1PEPF00004684.namprd03.prod.outlook.com
X-MS-Exchange-CrossTenant-AuthAs: Anonymous
X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem
X-MS-Exchange-Transport-CrossTenantHeadersStamped: SA3PR12MB7859
X-purgate-ID: tlsNG-16d1c6/1776430829-90E7CD75-ABF76D70/0/0
X-purgate-type: clean
X-purgate-size: 11206



On 17/04/2026 13:55, Luca Fancellu wrote:
> HI Michal,
> 
>> On 17 Apr 2026, at 10:11, Michal Orzel <michal.orzel@amd.com> wrote:
>>
>> Refactor setup_frametable_mappings() into init_frametable(), modeled
>> after x86's implementation. Instead of mapping one contiguous frametable
>> covering ram_start to ram_end (including holes), iterate the
>> pdx_group_valid bitmap to allocate and map frametable memory only for
>> valid PDX groups, skipping gaps in the physical address space. At the
>> moment we don't really take into account pdx_group_valid bitmap.
>>
>> This reduces memory consumption on systems with sparse RAM layouts by
>> not allocating frametable entries for non-existent memory regions.
>>
>> A file-local pdx_to_page() override is needed because the generic macro
>> in xen/include/xen/pdx.h does not account for ARM's non-zero
>> frametable_base_pdx.
>>
>> Update the MPU implementation to match the new init_frametable()
>> signature. Since MPU has no virtual address translation (ma == va),
>> hole-skipping is not possible and the frametable remains a single
>> contiguous allocation.
>>
>> Signed-off-by: Michal Orzel <michal.orzel@amd.com>
>> ---
>> We've been using this approach at AMD for a while now. Without this we would not
>> be able to boot some of our boards that have huge holes in the PA space, so I
>> consider this patch a great improvement.
>>
>> Two things to consider as a follow-up in the future:
>> - change generic pdx_to_page, page_to_pdx to take into account offset that
>>   on x86 is zero but on other arches it is not. The page list code is
>>   for now unaffected because the offset cancels out,
>> - use the same on RISCV.
>> ---
>> xen/arch/arm/arm32/mmu/mm.c   |  3 +-
>> xen/arch/arm/include/asm/mm.h |  4 +-
>> xen/arch/arm/mm.c             |  2 +-
>> xen/arch/arm/mmu/mm.c         | 77 ++++++++++++++++++++++++-----------
>> xen/arch/arm/mpu/mm.c         | 23 ++++++-----
>> 5 files changed, 70 insertions(+), 39 deletions(-)
>>
>> diff --git a/xen/arch/arm/arm32/mmu/mm.c b/xen/arch/arm/arm32/mmu/mm.c
>> index 5e4766ddcf65..0b595baa11b3 100644
>> --- a/xen/arch/arm/arm32/mmu/mm.c
>> +++ b/xen/arch/arm/arm32/mmu/mm.c
>> @@ -178,8 +178,7 @@ void __init setup_mm(void)
>>
>>     setup_directmap_mappings(mfn_x(directmap_mfn_start), xenheap_pages);
>>
>> -    /* Frame table covers all of RAM region, including holes */
>> -    setup_frametable_mappings(ram_start, ram_end);
>> +    init_frametable(ram_start);
>>
>>     /*
>>      * The allocators may need to use map_domain_page() (such as for
>> diff --git a/xen/arch/arm/include/asm/mm.h b/xen/arch/arm/include/asm/mm.h
>> index 72a692862420..2eb8465aa904 100644
>> --- a/xen/arch/arm/include/asm/mm.h
>> +++ b/xen/arch/arm/include/asm/mm.h
>> @@ -196,8 +196,8 @@ extern void *early_fdt_map(paddr_t fdt_paddr);
>> extern void remove_early_mappings(void);
>> /* Prepare the memory subystem to bring-up the given secondary CPU */
>> extern int prepare_secondary_mm(int cpu);
>> -/* Map a frame table to cover physical addresses ps through pe */
>> -extern void setup_frametable_mappings(paddr_t ps, paddr_t pe);
>> +/* Map a frame table */
> 
> NIT: Would /* Initialize the frame table */ fit better the new helper description?
> 
>> +void init_frametable(paddr_t ram_start);
>> /* Helper function to setup memory management */
>> void setup_mm_helper(void);
>> /* map a physical range in virtual memory */
>> diff --git a/xen/arch/arm/mm.c b/xen/arch/arm/mm.c
>> index 6df8b616e464..e6b651956927 100644
>> --- a/xen/arch/arm/mm.c
>> +++ b/xen/arch/arm/mm.c
>> @@ -62,7 +62,7 @@ void __init setup_mm(void)
>>
>>     setup_mm_helper();
>>
>> -    setup_frametable_mappings(ram_start, ram_end);
>> +    init_frametable(ram_start);
>>
>>     init_staticmem_pages();
>>     init_sharedmem_pages();
>> diff --git a/xen/arch/arm/mmu/mm.c b/xen/arch/arm/mmu/mm.c
>> index 6604f3bf4e6a..4b4da349c16c 100644
>> --- a/xen/arch/arm/mmu/mm.c
>> +++ b/xen/arch/arm/mmu/mm.c
>> @@ -8,16 +8,37 @@
>> #include <xen/pdx.h>
>> #include <xen/string.h>
>>
>> -/* Map a frame table to cover physical addresses ps through pe */
>> -void __init setup_frametable_mappings(paddr_t ps, paddr_t pe)
>> +#undef pdx_to_page
>> +#define pdx_to_page(pdx) gcc11_wrap(frame_table + ((pdx) - frametable_base_pdx))
>> +
>> +static void __init
>> +init_frametable_chunk(unsigned long pdx_s, unsigned long pdx_e)
>> {
>> -    unsigned long nr_pdxs = mfn_to_pdx(mfn_add(maddr_to_mfn(pe), -1)) -
>> -                            mfn_to_pdx(maddr_to_mfn(ps)) + 1;
>> -    unsigned long frametable_size = nr_pdxs * sizeof(struct page_info);
>> -    mfn_t base_mfn;
>> -    const unsigned long mapping_size = frametable_size < MB(32) ? MB(2)
>> -                                                                : MB(32);
>> +    unsigned long nr_pdxs = pdx_e - pdx_s;
>> +    unsigned long chunk_size = nr_pdxs * sizeof(struct page_info);
>> +    const unsigned long mapping_size = chunk_size < MB(32) ? MB(2) : MB(32);
>> +    unsigned long virt;
>>     int rc;
>> +    mfn_t base_mfn;
>> +
>> +    /* Round up to 2M or 32M boundary, as appropriate. */
>> +    chunk_size = ROUNDUP(chunk_size, mapping_size);
>> +    base_mfn = alloc_boot_pages(chunk_size >> PAGE_SHIFT, 32 << (20 - 12));
>> +
>> +    virt = (unsigned long)pdx_to_page(pdx_s);
>> +    rc = map_pages_to_xen(virt, base_mfn, chunk_size >> PAGE_SHIFT,
>> +                          PAGE_HYPERVISOR_RW | _PAGE_BLOCK);
>> +    if ( rc )
>> +        panic("Unable to setup the frametable mappings\n");
>> +
>> +    memset(pdx_to_page(pdx_s), 0, nr_pdxs * sizeof(struct page_info));
>> +    memset(pdx_to_page(pdx_e), -1,
>> +           chunk_size - nr_pdxs * sizeof(struct page_info));
>> +}
>> +
>> +void __init init_frametable(paddr_t ram_start)
>> +{
>> +    unsigned int sidx, nidx, max_idx;
>>
>>     /*
>>      * The size of paddr_t should be sufficient for the complete range of
>> @@ -26,24 +47,34 @@ void __init setup_frametable_mappings(paddr_t ps, paddr_t pe)
>>     BUILD_BUG_ON((sizeof(paddr_t) * BITS_PER_BYTE) < PADDR_BITS);
>>     BUILD_BUG_ON(sizeof(struct page_info) != PAGE_INFO_SIZE);
>>
>> -    if ( frametable_size > FRAMETABLE_SIZE )
>> -        panic("The frametable cannot cover the physical region %#"PRIpaddr" - %#"PRIpaddr"\n",
>> -              ps, pe);
>> +    max_idx = DIV_ROUND_UP(max_pdx, PDX_GROUP_COUNT);
>> +    frametable_base_pdx = mfn_to_pdx(maddr_to_mfn(ram_start));
>>
>> -    frametable_base_pdx = mfn_to_pdx(maddr_to_mfn(ps));
>> -    /* Round up to 2M or 32M boundary, as appropriate. */
>> -    frametable_size = ROUNDUP(frametable_size, mapping_size);
>> -    base_mfn = alloc_boot_pages(frametable_size >> PAGE_SHIFT, 32<<(20-12));
>> +    /*
>> +     * pdx_to_page(pdx_s) in init_frametable_chunk must be page-aligned
>> +     * for map_pages_to_xen(). Aligning to PDX_GROUP_COUNT guarantees this
>> +     * because PDX_GROUP_COUNT * sizeof(page_info) is always a multiple of
>> +     * PAGE_SIZE by construction.
>> +     */
>> +    frametable_base_pdx = ROUNDDOWN(frametable_base_pdx, PDX_GROUP_COUNT);
> 
> We are now rounding down frametable_base_pdx which before this patch it was the start of the ram,
> but in xen/xen/arch/arm/include/asm/mm.h, mfn_valid(mfn) is using frametable_base_pdx to check for
> mfn validity, this means that we could pass an mfn before the start of the ram and if __mfn_valid is happy,
> we are getting a regression.
> 
> Can this happen or am I missing something?
mfn_valid() can indeed return true for an MFN below ram_start that falls
in the same PDX group, but this is safe. init_frametable_chunk() maps
and zeroes the frametable for that range, so mfn_to_page() won't fault.
The zeroed page_info has count_info == 0 and no owner, so any get_page()
call on it will fail — the page is effectively inert.

~Michal

> 
>>
>> -    rc = map_pages_to_xen(FRAMETABLE_VIRT_START, base_mfn,
>> -                          frametable_size >> PAGE_SHIFT,
>> -                          PAGE_HYPERVISOR_RW | _PAGE_BLOCK);
>> -    if ( rc )
>> -        panic("Unable to setup the frametable mappings.\n");
>> +    if ( (max_pdx - frametable_base_pdx) > FRAMETABLE_NR )
>> +        panic("Frametable too small\n");
>> +
>> +    for ( sidx = (frametable_base_pdx / PDX_GROUP_COUNT); ; sidx = nidx )
>> +    {
>> +        unsigned int eidx;
>> +
>> +        eidx = find_next_zero_bit(pdx_group_valid, max_idx, sidx);
>> +        nidx = find_next_bit(pdx_group_valid, max_idx, eidx);
>> +
>> +        if ( nidx >= max_idx )
>> +            break;
>> +
>> +        init_frametable_chunk(sidx * PDX_GROUP_COUNT, eidx * PDX_GROUP_COUNT);
>> +    }
>>
>> -    memset(&frame_table[0], 0, nr_pdxs * sizeof(struct page_info));
>> -    memset(&frame_table[nr_pdxs], -1,
>> -           frametable_size - (nr_pdxs * sizeof(struct page_info)));
>> +    init_frametable_chunk(sidx * PDX_GROUP_COUNT, max_pdx);
>> }
>>
>> /*
>> diff --git a/xen/arch/arm/mpu/mm.c b/xen/arch/arm/mpu/mm.c
>> index aff88bd3a9c1..9c568831c128 100644
>> --- a/xen/arch/arm/mpu/mm.c
>> +++ b/xen/arch/arm/mpu/mm.c
>> @@ -186,16 +186,15 @@ static int is_mm_attr_match(pr_t *region, unsigned int attributes)
>>     return 0;
>> }
>>
>> -/* Map a frame table to cover physical addresses ps through pe */
>> -void __init setup_frametable_mappings(paddr_t ps, paddr_t pe)
>> +/*
>> + * Allocate a contiguous frame table covering ram_start through max_pdx.
>> + * Unlike the MMU version, MPU cannot skip holes because there is no virtual
>> + * address translation (ma == va).
>> + */
>> +void __init init_frametable(paddr_t ram_start)
>> {
>> +    unsigned long nr_pdxs, frametable_size;
>>     mfn_t base_mfn;
>> -    paddr_t aligned_ps = ROUNDUP(ps, PAGE_SIZE);
>> -    paddr_t aligned_pe = ROUNDDOWN(pe, PAGE_SIZE);
>> -
>> -    unsigned long nr_pdxs = mfn_to_pdx(mfn_add(maddr_to_mfn(aligned_pe), -1)) -
>> -                            mfn_to_pdx(maddr_to_mfn(aligned_ps)) + 1;
>> -    unsigned long frametable_size = nr_pdxs * sizeof(struct page_info);
>>
>>     /*
>>      * The size of paddr_t should be sufficient for the complete range of
>> @@ -204,11 +203,13 @@ void __init setup_frametable_mappings(paddr_t ps, paddr_t pe)
>>     BUILD_BUG_ON((sizeof(paddr_t) * BITS_PER_BYTE) < PADDR_BITS);
>>     BUILD_BUG_ON(sizeof(struct page_info) != PAGE_INFO_SIZE);
>>
>> +    frametable_base_pdx = mfn_to_pdx(maddr_to_mfn(ram_start));
>> +    nr_pdxs = max_pdx - frametable_base_pdx;
>> +    frametable_size = nr_pdxs * sizeof(struct page_info);
>> +
>>     if ( frametable_size > FRAMETABLE_SIZE )
>> -        panic("The frametable cannot cover the physical region %#"PRIpaddr" - %#"PRIpaddr"\n",
>> -              ps, pe);
>> +        panic("Frametable too small\n");
>>
>> -    frametable_base_pdx = paddr_to_pdx(aligned_ps);
>>     frametable_size = ROUNDUP(frametable_size, PAGE_SIZE);
>>
>>     base_mfn = alloc_boot_pages(frametable_size >> PAGE_SHIFT, 1);
>> -- 
>> 2.43.0
>>
> 



From xen-devel-bounces@lists.xenproject.org Fri Apr 17 13:25:24 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Fri, 17 Apr 2026 13:25:24 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1284265.1566092 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wDjCB-0001vB-I7; Fri, 17 Apr 2026 13:25:19 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1284265.1566092; Fri, 17 Apr 2026 13:25: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 1wDjCB-0001v4-DZ; Fri, 17 Apr 2026 13:25:19 +0000
Received: by outflank-mailman (input) for mailman id 1284265;
 Fri, 17 Apr 2026 13:25:18 +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 1wDjCA-0001uy-JQ
 for xen-devel@lists.xenproject.org; Fri, 17 Apr 2026 13:25:18 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wDjCA-002ngC-07
 for xen-devel@lists.xenproject.org; Fri, 17 Apr 2026 15:25:18 +0200
Received: from [10.42.69.4] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <ross.lagerwall@citrix.com>)
 id 69e234bc-2eae-0a2a0a5409dd-0a2a4504ab28-4
 for <xen-devel@lists.xenproject.org>; Fri, 17 Apr 2026 15:25:17 +0200
Received: from [52.101.201.56]
 (helo=PH7PR06CU001.outbound.protection.outlook.com)
 by tlsNG-ebf023.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.1)
 (envelope-from <ross.lagerwall@citrix.com>)
 id 69e234bc-1dec-0a2a45040019-3465c9387359-3
 for <xen-devel@lists.xenproject.org>; Fri, 17 Apr 2026 15:25:17 +0200
Received: from CH8PR03MB8274.namprd03.prod.outlook.com (2603:10b6:610:2ba::5)
 by SJ2PR03MB7401.namprd03.prod.outlook.com (2603:10b6:a03:55b::11)
 with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9818.25; Fri, 17 Apr
 2026 13:25:13 +0000
Received: from CH8PR03MB8274.namprd03.prod.outlook.com
 ([fe80::ebe2:32c1:d2be:a096]) by CH8PR03MB8274.namprd03.prod.outlook.com
 ([fe80::ebe2:32c1:d2be:a096%7]) with mapi id 15.20.9818.023; Fri, 17 Apr 2026
 13:25: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=lJe6oDeOnpDPjnnpT2XBRS8JIa8J/Y63CBKWCe6jpCNjKJk+J6img6PZQ8aHoJPswSX3o+Y5RPhc/+pNv4oQ9/Nji8bnNXnrli2BT4gh3TMsszZQZ2i8Kuz1D/95rjjnXsonGbSwawNX/1ZUBP3p4rlXR3bVILZloOc4B51JlD8WFHabbP3sPe7a7T0cUOAag86BYPOnLTuZf7Bom3KwWpPO7ojxn3SIGXGtRSObjYIaelNr2S4M/45evDCFMmF+1Oc+58m/nBrw82lEvqOWBccLBM5uYBoqI3j6BuzH9a/Dk8eZ0xRWaMu5d272iW3Tt0yyZR3Ep4fD/7lFiNkntQ==
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com;
 s=arcselector10001;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1;
 bh=FZwTqLwYgsPiQT5hyq8qk8hP1MeT0nr7EqwOqBnQKM4=;
 b=Z0uugDK/GoIU8RLTcQTMwYV+VWl2Q48wUQDjUSiehVlaepnpsWrziPj95PtYV9+zTiYJoG9DbIK02PImQO4AVOHt4iK64JHBZOpwM56+njHFnuWQIeaaeGmtklD4T2NGVlfbA9tfGPvWQFMLTUfGULrvZX7o+jhuiWynRCM/1NOdsx1VEeAqBGFb4xQgqD7fDCE0Bwiii7xq1hY9yMJYb4cEfGh3sJhADn+5vrtk6TMtBNH+2MoGTuC+Rdwr0qXv2sQWn7343ii3eAfCX0YOtJxr/OvlX6L6wbrnm6RtQpc2PGDdVUkYTpOthOezkLRrRGNp8aQbGSqe0veBTEpRdA==
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=FZwTqLwYgsPiQT5hyq8qk8hP1MeT0nr7EqwOqBnQKM4=;
 b=ejCkL0uOLN1cg3Smc1j0MJH+QUXL3RrWacaAtL1Im1Z9JETtQ99PXggazYZ1czb8mU20bNUlGwfq1hL4I4zvkwjRadsfRRMsHzV1hteIzYZLmCw2qgQQney2xSCmBP7D8KOrxi9PdsSYSmwI0CrNg87SCiiKnswoUfKkoLb5SKM=
Authentication-Results: dkim=none (message not signed)
 header.d=none;dmarc=none action=none header.from=citrix.com;
Message-ID: <e12a3f73-6121-4152-8f54-5bed0f36d087@citrix.com>
Date: Fri, 17 Apr 2026 14:25:08 +0100
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH] x86/mkelf32: Actually pad load segment to 2 MiB boundary
To: Andrew Cooper <andrew.cooper3@citrix.com>, xen-devel@lists.xenproject.org
Cc: Jan Beulich <jbeulich@suse.com>, =?UTF-8?Q?Roger_Pau_Monn=C3=A9?=
 <roger.pau@citrix.com>, Teddy Astie <teddy.astie@vates.tech>
References: <20260417105425.1184232-1-ross.lagerwall@citrix.com>
 <a6b71c55-fce7-4995-b38b-83133d702bd5@citrix.com>
Content-Language: en-US
From: Ross Lagerwall <ross.lagerwall@citrix.com>
In-Reply-To: <a6b71c55-fce7-4995-b38b-83133d702bd5@citrix.com>
Content-Type: text/plain; charset=UTF-8; format=flowed
Content-Transfer-Encoding: 7bit
X-ClientProxiedBy: LO4P123CA0164.GBRP123.PROD.OUTLOOK.COM
 (2603:10a6:600:18a::7) To CH8PR03MB8274.namprd03.prod.outlook.com
 (2603:10b6:610:2ba::5)
MIME-Version: 1.0
X-MS-PublicTrafficType: Email
X-MS-TrafficTypeDiagnostic: CH8PR03MB8274:EE_|SJ2PR03MB7401:EE_
X-MS-Office365-Filtering-Correlation-Id: 70d9150d-caeb-4a60-d694-08de9c84c1eb
X-MS-Exchange-SenderADCheck: 1
X-MS-Exchange-AntiSpam-Relay: 0
X-Microsoft-Antispam:
	BCL:0;ARA:13230040|366016|376014|1800799024|56012099003|22082099003|18002099003;
X-Microsoft-Antispam-Message-Info:
	l4yfbwj20h/X4FhVHbohF292j95Dk/5Rgge55Y5Egj+NQ754IrL1bAjvG3aDHySRVOvijjytktw6xdX0+1rgBk/ufFVCTfoP7aDBhsp8mxgCwN0xcfdxZSc50MbjdxZY0NksPYKTcNTOoDCi0UcM8joAo0h22yB65ehyuB9zdxavuaYIom7tssRvMfaw1/ja9bbPc4SRDvmcf3ah1wUYaTBcM4NiR1Wgs/yOkFiVNf+r3kvJSHLPCyO+s9/w2O2RiuLVfe7Xxry8rAtjJvuykzmmrVfYK3aKZvADHZW39i5xTpD8bD5IVdgbImb8Lu173YYYYgZfPFapbbksY/J59XR7mY6DDAnNPib4nXh+TulLH01uPbkCnJOeaGZGx601GuOslFf+FoYpv3Pw6OZhz47yLGNyyRCWfCKJVI9ZgXAusjemHn/AT28N9GhAhDWu6d4bPwmRtgwIjMfWlLUv7p23FqU1no8wStZi2cPoQX1I5fxBe0mo1+sAFGtUrLHR66R+y5/Z+kvn0b4Awo0dT4UR4SyMuzBXb6gMq+CIZINmLnUQIM7h6eBOPYlOJQF6Qx8gXQusWq/GArC/E6h2czUIcwYPtaZ370ACxh5RjTZPAOpM3av2KEmbwqm26wB+0PMgyRIbgNbV8E59+V1BggEhVkc9f1kpgpy7DQeBE6W7CC/qr1lSgpJk+rWklpYH8KiicuDCYOzJHaaBwZ8KuMy51PERChjDs2n873sPEto=
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)(376014)(1800799024)(56012099003)(22082099003)(18002099003);DIR:OUT;SFP:1101;
X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1
X-MS-Exchange-AntiSpam-MessageData-0:
	=?utf-8?B?c2N1VjZSMjlqT0lQYkhoazFlUDVrT1htZURvM2svaUdUQUNWcXJHL3JWbVMv?=
 =?utf-8?B?V0FpMGdIN3hHbVB5T3pGSm5jSnMyQmpxbkF0bFNKNWFSK0pkWHZzRlZBQWY5?=
 =?utf-8?B?VFN0S3laenZ3QUdJTDBxNDJRWWdMQk1VVUxzWEM2K2JZOXdLZUNMYllYZmlm?=
 =?utf-8?B?MnJBcmd3a2tkcXVKaGVGWlZQeTBtNEtCWTcvYU9DRlh6Q1VRdkJPbXBHbkpC?=
 =?utf-8?B?di9acVJXbXdRWkN6Z0YydnpKMGhmUlorUUE1QzJHbU1rbm9YK0I1NmNPNmtU?=
 =?utf-8?B?N1ViUC9IY2JLTERCSzJIUnZtVFk2cWg3MVM4OGNLR1IzSitqK0x4ZjRXSWJM?=
 =?utf-8?B?TTZSeERZY2o2K0lpMzNDUzk3ekVTYjJjdEJCUUJncnlCY1ZsSEh5VVVkaXF6?=
 =?utf-8?B?d1l2QzVtOURpVFpRMzhkdGZCR04vQ1VxczJFL1lETTg2ZjFUWHBYTmdaS09G?=
 =?utf-8?B?N2dBd0Zubmc3azBxYTZmRzZUWFFRbWdkTm5ZbUkxUytxak5hR2RNWURTNTEr?=
 =?utf-8?B?ZkRlY0FFR1Q4bklteTlZOG03SjFRRDlMSzc5RTAwWVVQaXpnVFE2YUQyZEJF?=
 =?utf-8?B?QW5GVzluZWYzOXM4c3FhektZaTJnbklwYitkbVcvaFhSbUwwTzBLeE43TGFK?=
 =?utf-8?B?bFlNb09wL1RvSmZ4cUpJY2dKVUU3RmtNaWVhdDY2ZCtiRW5PWEQ0WVVzbm5Y?=
 =?utf-8?B?MUtGbGoyczB0bm5qUDBpTVdXRnZ4SllLWnFVeEE0RUxoU0xoTjk1MG5DdWta?=
 =?utf-8?B?NG5NUlZnQnV3Y1hmb1hSeGZORFlDN1pVN1F3U3ZDeXFiSFBqTHVpcmZkSzdO?=
 =?utf-8?B?ZklLR1RqcDZOQm80ZDQrNUVSQW40dlN2ZkNvOWJ3SmZldmZ2V3p3bi82TGlq?=
 =?utf-8?B?Q0NqbnVHV20wZGFtSEhseTNaYUhKak5zV3hjeGovYkN5Z2NDekJiK1oyMElL?=
 =?utf-8?B?Q2xOV3BTa0hoQlMzMlowMmFpVE4wbElpMndTdWd1N1MzaU1XanhDOWdkOWh4?=
 =?utf-8?B?NER4cWVNM2RPai9oNVZuUmpsTW54V1h6QXZhcGdYbDZ6YUF0WThtTVdvQUVR?=
 =?utf-8?B?OVFmU3BnQ2g1dktYYlQ4RHdHYzdHdDErcUd1Z3FFVFFXNkF0VmFmaXV3Y1Rj?=
 =?utf-8?B?cWNDelhuM1RET091ak4vKzA2d0pSZ3RvVXBUR0Q5N3dNYnBYRis5bTI1ZjA1?=
 =?utf-8?B?c2N4cEZKVHJkOHQ1MW5MR2tyVkJ1RDcxdWQ2SmxJdXBlTHgzTGhGS05qdkFl?=
 =?utf-8?B?T1o2OXJjRVZiN1BINWwyNy9vUVlyRFFlbnJ0U0V5ejZ6RWNXZ0JJSkVkdGhk?=
 =?utf-8?B?ZUdzYm13V21ZalRwWGN6UnZ2VVg0dDBIbmNVY28yNXdEVlNLUnQ0VHRtUVZX?=
 =?utf-8?B?cVFITUdmUXZ0cTJ2L2hiTHU5aE9mZlN1aTU0N2VVNUR2TWtMZDhGTmkxSjhH?=
 =?utf-8?B?Rzk3anFuVjBrL0R3UFFiTE9QRmRQR3d4RU1DU05NcENuMUMya0FkaG80Ym53?=
 =?utf-8?B?eDNRU25WcVJ5Q0FsQks0UFhtK0hrSUNDQUtwT1RlNm9ib2FYVzI0T0xOK3V0?=
 =?utf-8?B?RVFzRCt3bzg1YldZNjRhQ2tKZHNBWG11V1VYRVd4bi93eDFFOVFtclVzb1JP?=
 =?utf-8?B?ZHdSTzJHYjJkT3g5UlVyWXlDRUhQemY1SzNvWTFhbGFzRTJDcFFCeHNPSXlm?=
 =?utf-8?B?SVJiRXZYOFZub0M4VUZuaCs1SkdPcG1DYURXTTQwckdBajNwYkVJWTcyVXNp?=
 =?utf-8?B?bW1KdEE4NWhiSHZNMFY4Nk5qZmcvU1p0NWVZeDhHZ3N2YWNhalVIRDlVMnQy?=
 =?utf-8?B?YmY2Y08zeEZvRkdKQncyelJ4VzZXRG4vQmRRK1Rxa3Nielc1UWIzQnBzSHNR?=
 =?utf-8?B?a0pKeEtjNWZTRkZTSG1EMVdtUlVNaUZXVStncWorTXIrRldLM1RjcFNLVGRS?=
 =?utf-8?B?V0dpaWpTcUV2Vk85dGhKSnVYTjE4SGNXbXZwYXZRb09oTjdGSTlEdW1sRlZ4?=
 =?utf-8?B?UW93Sys1YzllQXRZc1dTL0x6dzFONHJ0TmFWeVhLNG5sOHNJM0JlYkRweEZH?=
 =?utf-8?B?endYMnV6TFBwRVpTNFh6M1JYT05UNVVvUkRsUFphcXYyUGlwTExLQzhZeWRa?=
 =?utf-8?B?cWtyVlMxTVJ6Z0R3SCs4M01ra2lMRHNBMjRuS1J0L1pGbW1CNDYzdjVUM0V6?=
 =?utf-8?B?WVUvZlFTeVBWSG80UHpud2FDZWtIcjFzUytvQnBzSjN3RW9nNnBjeTB5ak1s?=
 =?utf-8?B?L2xNc0E3a2ZTSVBTaTdaSUFnZ09Ga2QvTG9tOGVlM0RHcEhyQzVTdWFOTWJV?=
 =?utf-8?B?aEdPNzN1VUROR3ltWjdxV2xibUErTVZhdDN2TVowazBScWxYZkx1REREQmJ3?=
 =?utf-8?Q?ddt9j2N555h+Bja8=3D?=
X-OriginatorOrg: citrix.com
X-MS-Exchange-CrossTenant-Network-Message-Id: 70d9150d-caeb-4a60-d694-08de9c84c1eb
X-MS-Exchange-CrossTenant-AuthSource: CH8PR03MB8274.namprd03.prod.outlook.com
X-MS-Exchange-CrossTenant-AuthAs: Internal
X-MS-Exchange-CrossTenant-OriginalArrivalTime: 17 Apr 2026 13:25:13.8036
 (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: SsLo+oYI2V6Fjj1kcQNasNYPubplLiI1nOAwoSq714zul8AYuDwojrSOWyr4yz680FtltnvzKVLwyMc+BP1Bv0NPfQ5imYoQl0+0PQnXifI=
X-MS-Exchange-Transport-CrossTenantHeadersStamped: SJ2PR03MB7401
X-purgate-ID: tlsNG-ebf023/1776432317-3144B3FF-3846FB6C/0/0
X-purgate-type: clean
X-purgate-size: 1942

On 4/17/26 12:03 PM, Andrew Cooper wrote:
> On 17/04/2026 11:54 am, Ross Lagerwall wrote:
>> Fix the code which tries to pad the load segment to 2 MiB but only pads
>> it to a 1 MiB boundary.
>>
>> This manifested itself as a page fault while scrubbing RAM during boot.
>> Xen failed to mark its location as reserved in the E820 because the last
>> 2 MiB superpage overlapped a reserved region which meant the memory was
>> given to the allocator despite being RO.
> 
> Do you have the relevant snippet of the E820?
> 
> AIUI, you're saying that Xen was placed immediately below an E820
> reserved region (a valid layout at 1M alignment), where said region was
> inside the 2M-aligned boundary that Xen was expecting.
> 
> But I don't quite follow what happened next.  Where does read-only-ness
> come into it?
> 

Relevant E820:

(XEN) [00000063469ff02c]  [000000003f2df000, 000000003f31efff] (ACPI NVS)
(XEN) [00000063519dc9f2]  [000000003f31f000, 000000004cfebfff] (usable)
(XEN) [000000635c504aff]  [000000004cfec000, 000000004d07bfff] (ACPI data)
(XEN) [00000063677372dc]  [000000004d07c000, 000000004d09bfff] (ACPI NVS)

With a load size of 0x900000 (padded to a 1 MiB boundary), Xen was placed at
4c600000-4cefffff.

In __start_xen(), there is a call...

reserve_e820_ram(&boot_e820, __pa(_stext), __pa(__2M_rwdata_end));

... which tries to reserve the region 4c600000-4cffffff (size 0x1000000),
padded to a 2 MiB boundary since it is using superpages.

reserve_e820_ram() doesn't reserve anything because the request doesn't fall
within a single RAM region. Therefore, the pages get treated as normal RAM and
will get scrubbed later. However, __start_xen() also calls
modify_xen_mappings() to mark all of .text and .rodata as RO in the direct map
so when it actually tries to scrub it it gets a page fault instead (which is I
suppose slightly better than just zeroing Xen's .text).

Ross


From xen-devel-bounces@lists.xenproject.org Fri Apr 17 13:26:07 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Fri, 17 Apr 2026 13:26:07 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1284277.1566100 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wDjCx-0002Qu-U7; Fri, 17 Apr 2026 13:26:07 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1284277.1566100; Fri, 17 Apr 2026 13:26: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 1wDjCx-0002Qn-QH; Fri, 17 Apr 2026 13:26:07 +0000
Received: by outflank-mailman (input) for mailman id 1284277;
 Fri, 17 Apr 2026 13:26:06 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <bounce-md_30504962.69e234ec.v1-13888a4284754813a4320b3d89ce7d09@bounce.vates.tech>)
 id 1wDjCw-0002Qe-QQ
 for xen-devel@lists.xenproject.org; Fri, 17 Apr 2026 13:26:06 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wDjCw-00H0yR-7H
 for xen-devel@lists.xenproject.org; Fri, 17 Apr 2026 15:26:06 +0200
Received: from [10.42.69.9] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1) (envelope-from
 <bounce-md_30504962.69e234ec.v1-13888a4284754813a4320b3d89ce7d09@bounce.vates.tech>)
 id 69e234e0-bab6-0a2a0a5309dd-0a2a4509c7d8-44
 for <xen-devel@lists.xenproject.org>; Fri, 17 Apr 2026 15:26:06 +0200
Received: from [198.2.137.11] (helo=mail137-11.atl71.mandrillapp.com)
 by tlsNG-bad1c0.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.1)
 (envelope-from
 <bounce-md_30504962.69e234ec.v1-13888a4284754813a4320b3d89ce7d09@bounce.vates.tech>)
 id 69e234ec-2497-0a2a45090019-c602890b9f39-3
 for <xen-devel@lists.xenproject.org>; Fri, 17 Apr 2026 15:26:05 +0200
Received: from mta004-md-usw2.delv.a.intuit.com (localhost [127.0.0.1])
 by mail137-11.atl71.mandrillapp.com (Mailchimp) with ESMTP id
 4fxwcr1B8zzDRXtxP
 for <xen-devel@lists.xenproject.org>; Fri, 17 Apr 2026 13:26:04 +0000 (UTC)
Received: from [37.26.189.201] by mandrillapp.com id
 13888a4284754813a4320b3d89ce7d09; Fri, 17 Apr 2026 13:26: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=mte1 header.d=mandrillapp.com header.i="@mandrillapp.com" header.h="From:Subject:To:Cc:Message-Id:References:In-Reply-To:Feedback-ID:Date:MIME-Version:Content-Type:Content-Transfer-Encoding"; dkim=pass header.s=mte1 header.d=vates.tech header.i="anthony.perard@vates.tech" header.h="From:Subject:To:Cc:Message-Id:References:In-Reply-To:Feedback-ID:Date:MIME-Version:Content-Type:Content-Transfer-Encoding"
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=mandrillapp.com;
	s=mte1; t=1776432364; x=1776702364;
	bh=yOS4SBQdL2rVMR1pZqlGorF4AN8726MhdosMKOtMbH0=;
	h=From:Subject:To:Cc:Message-Id:References:In-Reply-To:Feedback-ID:
	 Date:MIME-Version:Content-Type:Content-Transfer-Encoding:CC:Date:
	 Subject:From;
	b=vL7sjw+VBliuRum8dfcGnkuLQ4Rn4eqTIGWfDkdtzV9P2ZFYbyajvKFKwo94ciW3a
	 KUjvlZzTEGo7f+zmpnYXOvkaOHqHgkxaxBuVcnUJ247XisuQVpTDctxkS22PRWrpY2
	 tQYvWKmvqNkMVlwfS7W9dR+/+K3M/V0b/CVlnU9gYg7r9DqkX3wgKtPoibytctJ1dW
	 2dWDWKNQfa7jKHPjqZsZDiTM5Q/wqQQ3PD4LUZdmGQr68bAVwxOE6u70ioj4lu1Go+
	 JfLdjY4S1NXaDUCEJolFYHaJSOmAPYsZ5+HHBgryINckWvATFoaKrxagR9+5Sd+ZTS
	 dUcVBYm+HH8mg==
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=vates.tech; s=mte1;
	t=1776432364; x=1776692864; i=anthony.perard@vates.tech;
	bh=yOS4SBQdL2rVMR1pZqlGorF4AN8726MhdosMKOtMbH0=;
	h=From:Subject:To:Cc:Message-Id:References:In-Reply-To:Feedback-ID:
	 Date:MIME-Version:Content-Type:Content-Transfer-Encoding:CC:Date:
	 Subject:From;
	b=ECA3TNpbYK+4N/9untMWWtu71c5vGpcavM2ExBtT8HY1ze5Y1bVGB/wFnQxmwRzy+
	 iVYyuASm48va9HtubGrLetJmcm+kDViwMYdHeLkRn4rFrrh9ELaZgBc9E5B0LmL0FW
	 Xxtp9zmN7TtZnCPvad++KaQw+dRg/DpABYCiZLlRzJbeR25sHSBnPcz+0KghOmD595
	 MNe8JG/oVICwVOJW22dm6fSYjPvCka5eoZCowv2aclCgaJtrc/Q01mli0O5Wt5hv4+
	 x/QV3erV9fEndKIOFS9jGeChyB+hud63Pb+XnoMp5Cd/gPLp3uxITPll5G1T9bLIkO
	 IUxmAEroNEYaQ==
From: "Anthony PERARD" <anthony.perard@vates.tech>
Subject: =?utf-8?Q?Re:=20[PATCH=20v2=205/6]=20CI:=20setup=20SSH=20key?=
X-Bm-Disclaimer: Yes
X-Bm-Milter-Handled: 4ffbd6c1-ee69-4e1b-aabd-f977039bd3e2
X-Bm-Transport-Timestamp: 1776432357951
To: "=?utf-8?Q?Marek=20Marczykowski-G=C3=B3recki?=" <marmarek@invisiblethingslab.com>
Cc: xen-devel@lists.xenproject.org, "Stefano Stabellini" <sstabellini@kernel.org>, "Andrew Cooper" <andrew.cooper3@citrix.com>, "Doug Goldstein" <cardoe@cardoe.com>
Message-Id: <aeI05YM_NkyGj4Q6@l14>
References: <cover.ca38f9571ab23e254a985ecfd4715235675aa06e.1774999414.git-series.marmarek@invisiblethingslab.com> <5d11a521db04134f8917c990a494ba8ce44548b9.1774999414.git-series.marmarek@invisiblethingslab.com>
In-Reply-To: <5d11a521db04134f8917c990a494ba8ce44548b9.1774999414.git-series.marmarek@invisiblethingslab.com>
X-Native-Encoded: 1
X-Report-Abuse: =?UTF-8?Q?Please=20forward=20a=20copy=20of=20this=20message,=20including=20all=20headers,=20to=20abuse@mandrill.com.=20You=20can=20also=20report=20abuse=20here:=20https://mandrillapp.com/contact/abuse=3Fid=3D30504962.13888a4284754813a4320b3d89ce7d09?=
X-Mandrill-User: md_30504962
Feedback-ID: 30504962:30504962.20260417:md
Date: Fri, 17 Apr 2026 13:26:04 +0000
MIME-Version: 1.0
Content-Type: text/plain; charset=utf-8
Content-Transfer-Encoding: quoted-printable
X-purgate-ID: tlsNG-bad1c0/1776432366-48AAEA53-A369B1EC/0/0
X-purgate-type: clean
X-purgate-size: 506

On Wed, Apr 01, 2026 at 01:24:54AM +0200, Marek Marczykowski-G=C3=B3recki w=
rote:
> Generate fresh key for a job, and add its public part to dom0's
> authorized_keys file.
> This allows the test controller to use SSH without any password prompt.
> 
> Signed-off-by: Marek Marczykowski-G=C3=B3recki <marmarek@invisiblethingsl=
ab.com>

Reviewed-by: Anthony PERARD <anthony.perard@vates.tech>

Thanks,


--
 | Vates

XCP-ng & Xen Orchestra - Vates solutions

web: https://vates.tech




From xen-devel-bounces@lists.xenproject.org Fri Apr 17 13:41:25 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Fri, 17 Apr 2026 13:41:25 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1284299.1566113 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wDjRf-0005Hh-8t; Fri, 17 Apr 2026 13:41:19 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1284299.1566113; Fri, 17 Apr 2026 13:41: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 1wDjRf-0005Ha-4O; Fri, 17 Apr 2026 13:41:19 +0000
Received: by outflank-mailman (input) for mailman id 1284299;
 Fri, 17 Apr 2026 13:41:17 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <bertrand.marquis@arm.com>) id 1wDjRd-0005HU-JA
 for xen-devel@lists.xenproject.org; Fri, 17 Apr 2026 13:41:17 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wDjRb-000EA5-ES
 for xen-devel@lists.xenproject.org; Fri, 17 Apr 2026 15:41:17 +0200
Received: from [10.42.69.8] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <bertrand.marquis@arm.com>)
 id 69e2386d-bab6-0a2a0a5309dd-0a2a4508a240-30
 for <xen-devel@lists.xenproject.org>; Fri, 17 Apr 2026 15:41:16 +0200
Received: from [217.140.110.172] (helo=foss.arm.com)
 by tlsNG-c1860d.mxtls.expurgate.net with ESMTP (eXpurgate 4.56.1)
 (envelope-from <bertrand.marquis@arm.com>)
 id 69e2387b-63b5-0a2a45080019-d98c6eac9954-1
 for <xen-devel@lists.xenproject.org>; Fri, 17 Apr 2026 15:41:16 +0200
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 CC87F1E5E;
 Fri, 17 Apr 2026 06:41:09 -0700 (PDT)
Received: from C3HXLD123V.arm.com (unknown [10.57.89.170])
 by usa-sjc-imap-foss1.foss.arm.com (Postfix) with ESMTPSA id 243C43F7D8;
 Fri, 17 Apr 2026 06:41:13 -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=foss header.d=arm.com header.i="@arm.com" header.h="From:To:Cc:Subject:Date"
DKIM-Signature: v=1; a=rsa-sha256; c=simple/simple; d=arm.com; s=foss;
	t=1776433275; bh=RHC4oaKNm/5AmZippxNTl48kACDWHDvNsCq3bToP1H4=;
	h=From:To:Cc:Subject:Date:From;
	b=ZKVfybHq2pOH0Lh5Fam0EdXoo48OCe1c3z1MOY7QWGLCd8CmyVnz99owK7B27BdZd
	 F9F/wlpLjWUmHssZXp3DX8NERyzG2lM3ImQFuw1uMsIa/V1KA2afJAxsyagrBWMf86
	 QwDZ8lOjkMi354eJAlLrBi1UvIEDXCH9K0RNNonI=
From: Bertrand Marquis <bertrand.marquis@arm.com>
To: xen-devel@lists.xenproject.org
Cc: Volodymyr Babchuk <volodymyr_babchuk@epam.com>,
	Jens Wiklander <jens.wiklander@linaro.org>,
	Stefano Stabellini <sstabellini@kernel.org>,
	Julien Grall <julien@xen.org>,
	Michal Orzel <michal.orzel@amd.com>
Subject: [PATCH 0/6] xen/arm: ffa: Harden notifications and enable VM-to-VM delivery
Date: Fri, 17 Apr 2026 15:40:48 +0200
Message-ID: <cover.1776266307.git.bertrand.marquis@arm.com>
X-Mailer: git-send-email 2.53.0
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit
X-purgate-ID: tlsNG-c1860d/1776433276-C2368DB1-4A54B146/0/0
X-purgate-type: clean
X-purgate-size: 2387

This series hardens FF-A notification handling in the Arm FF-A mediator
and completes local delivery for non-secure VM-to-VM notifications.

Hardening and state handling (Patches 1-4):
1) Fix notification pending interrupt delivery when vcpu0 is offline by
   reusing a common global NPI injection helper.
2) Replace the single hypervisor notification boolean with a protected
   HYP bitmap and keep bitmap lifecycle tied to the cached endpoint ID.
3) Tighten notification parameter validation so malformed BIND, UNBIND,
   GET, and SET requests are rejected consistently before reaching
   cached state or the SPMC.
4) Preserve the secure pending indication until secure notifications are
   retrieved, protect the secure pending latch with notif_lock,
   serialize SPMC INFO_GET polling, and keep INFO_GET return width
   consistent with the caller.

Local VM notification delivery (Patches 5-6):
1) Track non-secure VM notification bindings locally, promote pending
   state to a per-bit bitmap, and validate BIND/UNBIND requests
   against that state.
2) Deliver non-secure VM-to-VM notifications locally, track whether a
   local NPI is already armed, and only advertise notification support
   when firmware capabilities or CONFIG_FFA_VM_TO_VM actually provide
   it.

Backward compatibility: v1.0/v1.1 guests remain compatible. Valid
guest-visible notification behavior is preserved; the series only
tightens malformed-request handling and enables local non-secure
VM-to-VM delivery when CONFIG_FFA_VM_TO_VM is enabled.

Gitlab branch with patches:
https://gitlab.com/xen-project/people/bmarquis/xen-ffa/-/tree/vm-notif/v1?ref_type=heads
CI pass result:
https://gitlab.com/xen-project/people/bmarquis/xen-ffa/-/pipelines/2460589353

Bertrand Marquis (6):
  xen/arm: ffa: Fix NPI injection when vcpu0 is offline
  xen/arm: ffa: Track hypervisor notifications in a bitmap
  xen/arm: ffa: Tighten notification parameter validation
  xen/arm: ffa: Preserve secure notification state when polling SPMC
  xen/arm: ffa: Track VM notification bindings locally
  xen/arm: ffa: Deliver VM-to-VM notifications locally

 xen/arch/arm/tee/ffa.c         |  24 +-
 xen/arch/arm/tee/ffa_notif.c   | 407 +++++++++++++++++++++++++++------
 xen/arch/arm/tee/ffa_private.h |  29 ++-
 3 files changed, 385 insertions(+), 75 deletions(-)

-- 
2.53.0



From xen-devel-bounces@lists.xenproject.org Fri Apr 17 13:41:31 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Fri, 17 Apr 2026 13:41:31 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1284300.1566123 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wDjRr-0005Xi-G5; Fri, 17 Apr 2026 13:41:31 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1284300.1566123; Fri, 17 Apr 2026 13:41: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 1wDjRr-0005Xb-C4; Fri, 17 Apr 2026 13:41:31 +0000
Received: by outflank-mailman (input) for mailman id 1284300;
 Fri, 17 Apr 2026 13:41:30 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <bertrand.marquis@arm.com>) id 1wDjRq-0005XG-DB
 for xen-devel@lists.xenproject.org; Fri, 17 Apr 2026 13:41:30 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wDjRp-000Ejb-QG
 for xen-devel@lists.xenproject.org; Fri, 17 Apr 2026 15:41:29 +0200
Received: from [10.42.69.6] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <bertrand.marquis@arm.com>)
 id 69e23869-5cb7-0a2a0a5109dd-0a2a450688f0-46
 for <xen-devel@lists.xenproject.org>; Fri, 17 Apr 2026 15:41:29 +0200
Received: from [217.140.110.172] (helo=foss.arm.com)
 by tlsNG-16d1c6.mxtls.expurgate.net with ESMTP (eXpurgate 4.56.1)
 (envelope-from <bertrand.marquis@arm.com>)
 id 69e23888-7371-0a2a45060019-d98c6eacc488-1
 for <xen-devel@lists.xenproject.org>; Fri, 17 Apr 2026 15:41:29 +0200
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 BFB2E1E5E;
 Fri, 17 Apr 2026 06:41:22 -0700 (PDT)
Received: from C3HXLD123V.arm.com (unknown [10.57.89.170])
 by usa-sjc-imap-foss1.foss.arm.com (Postfix) with ESMTPSA id 164583F7D8;
 Fri, 17 Apr 2026 06:41:26 -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=foss header.d=arm.com header.i="@arm.com" header.h="From:To:Cc:Subject:Date:In-Reply-To:References"
DKIM-Signature: v=1; a=rsa-sha256; c=simple/simple; d=arm.com; s=foss;
	t=1776433288; bh=2EBHRYe3a9Iu2Tcg1hgwEsSiL6lkKJcFnxNSP9Ue5No=;
	h=From:To:Cc:Subject:Date:In-Reply-To:References:From;
	b=VdYJxFcLI4jsdEtYZSOcScludKGT5YwwMuMO0TwaaXWi1Hgkxt892Fotc+CN25Arq
	 uRpUQYMjXbKpDSE5fOBcWIAD9XE8w9J02CloxF0T26Qh7gFylIzux2q+Ro2n5PIvfA
	 P811XWtiGYC16BhHODf+4AbWTwWhWzSMWGbofGO0=
From: Bertrand Marquis <bertrand.marquis@arm.com>
To: xen-devel@lists.xenproject.org
Cc: Volodymyr Babchuk <volodymyr_babchuk@epam.com>,
	Jens Wiklander <jens.wiklander@linaro.org>,
	Stefano Stabellini <sstabellini@kernel.org>,
	Julien Grall <julien@xen.org>,
	Michal Orzel <michal.orzel@amd.com>
Subject: [PATCH 1/6] xen/arm: ffa: Fix NPI injection when vcpu0 is offline
Date: Fri, 17 Apr 2026 15:40:49 +0200
Message-ID: <a755456257eff6e4c5bd042ce4b0edff8f6630c1.1776266307.git.bertrand.marquis@arm.com>
X-Mailer: git-send-email 2.53.0
In-Reply-To: <cover.1776266307.git.bertrand.marquis@arm.com>
References: <cover.1776266307.git.bertrand.marquis@arm.com>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit
X-purgate-ID: tlsNG-16d1c6/1776433289-52369D75-B7400893/0/0
X-purgate-type: clean
X-purgate-size: 3302

RX-buffer-full notifications currently inject the notification pending
interrupt through vcpu0 only. Secure notification delivery already walks
the domain's online vCPUs, but the RX-buffer-full path does not. When
vcpu0 is offline, the notification remains pending and the guest never
receives it.

Extract the common notification injection path and reuse it from
ffa_raise_rx_buffer_full(). The shared helper delivers the global
notification to the first online vCPU and keeps the existing ratelimited
debug message when none are online.

Functional impact: RX-buffer-full notifications are delivered even when
vcpu0 is offline.

Fixes: 3935c705688e ("xen/arm: ffa: Add buffer full notification support")

Signed-off-by: Bertrand Marquis <bertrand.marquis@arm.com>
---
 xen/arch/arm/tee/ffa_notif.c | 45 ++++++++++++++++++++----------------
 1 file changed, 25 insertions(+), 20 deletions(-)

diff --git a/xen/arch/arm/tee/ffa_notif.c b/xen/arch/arm/tee/ffa_notif.c
index 186e72641237..07bc5cb3a430 100644
--- a/xen/arch/arm/tee/ffa_notif.c
+++ b/xen/arch/arm/tee/ffa_notif.c
@@ -19,6 +19,29 @@
 static bool __ro_after_init fw_notif_enabled;
 static unsigned int __ro_after_init notif_sri_irq;
 
+static void inject_notif_pending(struct domain *d)
+{
+    struct vcpu *v;
+
+    /*
+     * Since we're only delivering global notification, always
+     * deliver to the first online vCPU. It doesn't matter
+     * which we chose, as long as it's available.
+     */
+    for_each_vcpu(d, v)
+    {
+        if ( is_vcpu_online(v) )
+        {
+            vgic_inject_irq(d, v, GUEST_FFA_NOTIF_PEND_INTR_ID, true);
+            return;
+        }
+    }
+
+    if ( printk_ratelimit() )
+        printk(XENLOG_G_DEBUG "%pd: ffa: can't inject NPI, all vCPUs offline\n",
+               d);
+}
+
 int32_t ffa_handle_notification_bind(struct cpu_user_regs *regs)
 {
     struct domain *d = current->domain;
@@ -190,7 +213,7 @@ void ffa_raise_rx_buffer_full(struct domain *d)
 
     ACCESS_ONCE(ctx->notif.buff_full_pending) = true;
     if ( !test_and_set_bool(ctx->notif.vm_pending) )
-        vgic_inject_irq(d, d->vcpu[0], GUEST_FFA_NOTIF_PEND_INTR_ID, true);
+        inject_notif_pending(d);
 }
 #endif
 
@@ -238,7 +261,6 @@ static void notif_vm_pend_intr(uint16_t vm_id)
 {
     struct ffa_ctx *ctx;
     struct domain *d;
-    struct vcpu *v;
 
     /*
      * vm_id == 0 means a notifications pending for Xen itself, but
@@ -277,24 +299,7 @@ static void notif_vm_pend_intr(uint16_t vm_id)
      * it.
      */
     ACCESS_ONCE(ctx->notif.secure_pending) = true;
-
-    /*
-     * Since we're only delivering global notification, always
-     * deliver to the first online vCPU. It doesn't matter
-     * which we chose, as long as it's available.
-     */
-    for_each_vcpu(d, v)
-    {
-        if ( is_vcpu_online(v) )
-        {
-            vgic_inject_irq(d, v, GUEST_FFA_NOTIF_PEND_INTR_ID,
-                            true);
-            break;
-        }
-    }
-    if ( !v && printk_ratelimit() )
-        printk(XENLOG_G_DEBUG "%pd: ffa: can't inject NPI, all vCPUs offline\n",
-               d);
+    inject_notif_pending(d);
 
 out_unlock:
     rcu_unlock_domain(d);
-- 
2.53.0



From xen-devel-bounces@lists.xenproject.org Fri Apr 17 13:41:32 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Fri, 17 Apr 2026 13:41:32 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1284302.1566131 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wDjRs-0005lk-Lj; Fri, 17 Apr 2026 13:41:32 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1284302.1566131; Fri, 17 Apr 2026 13:41: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 1wDjRs-0005ld-J0; Fri, 17 Apr 2026 13:41:32 +0000
Received: by outflank-mailman (input) for mailman id 1284302;
 Fri, 17 Apr 2026 13:41:31 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <bertrand.marquis@arm.com>) id 1wDjRr-0005cp-T0
 for xen-devel@lists.xenproject.org; Fri, 17 Apr 2026 13:41:31 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wDjRr-000Ejb-9z
 for xen-devel@lists.xenproject.org; Fri, 17 Apr 2026 15:41:31 +0200
Received: from [10.42.69.10] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <bertrand.marquis@arm.com>)
 id 69e23878-5cb7-0a2a0a5109dd-0a2a450a8746-26
 for <xen-devel@lists.xenproject.org>; Fri, 17 Apr 2026 15:41:31 +0200
Received: from [217.140.110.172] (helo=foss.arm.com)
 by tlsNG-4011c0.mxtls.expurgate.net with ESMTP (eXpurgate 4.56.1)
 (envelope-from <bertrand.marquis@arm.com>)
 id 69e2388a-56b3-0a2a450a0019-d98c6eacc2a8-1
 for <xen-devel@lists.xenproject.org>; Fri, 17 Apr 2026 15:41:31 +0200
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 845031516;
 Fri, 17 Apr 2026 06:41:24 -0700 (PDT)
Received: from C3HXLD123V.arm.com (unknown [10.57.89.170])
 by usa-sjc-imap-foss1.foss.arm.com (Postfix) with ESMTPSA id D5E8A3F7D8;
 Fri, 17 Apr 2026 06:41:28 -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=foss header.d=arm.com header.i="@arm.com" header.h="From:To:Cc:Subject:Date:In-Reply-To:References"
DKIM-Signature: v=1; a=rsa-sha256; c=simple/simple; d=arm.com; s=foss;
	t=1776433290; bh=caqGVxvnjz0bVK6Ez9rNrj5k4WIzyoABx5lWZ62MqVc=;
	h=From:To:Cc:Subject:Date:In-Reply-To:References:From;
	b=F/9rK41YnPUbCvUBHCt5U0B3AIRzfayyu4D5MvWYWuc5xGXma+MxvpDDLffQHSAt1
	 B7Bg4iM3FAywj4XwhUbq14JxtRUZZPfPf8yYJSbdp5KP+U5YjXRuj29S8szj7wmgER
	 JoceslpxERiNOPD+UNgMD4dmFI7ngoNnufOaX6AY=
From: Bertrand Marquis <bertrand.marquis@arm.com>
To: xen-devel@lists.xenproject.org
Cc: Volodymyr Babchuk <volodymyr_babchuk@epam.com>,
	Jens Wiklander <jens.wiklander@linaro.org>,
	Stefano Stabellini <sstabellini@kernel.org>,
	Julien Grall <julien@xen.org>,
	Michal Orzel <michal.orzel@amd.com>
Subject: [PATCH 2/6] xen/arm: ffa: Track hypervisor notifications in a bitmap
Date: Fri, 17 Apr 2026 15:40:50 +0200
Message-ID: <7053b8c14bbe50cc855dad0a82cde2bb10153d2b.1776266307.git.bertrand.marquis@arm.com>
X-Mailer: git-send-email 2.53.0
In-Reply-To: <cover.1776266307.git.bertrand.marquis@arm.com>
References: <cover.1776266307.git.bertrand.marquis@arm.com>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit
X-purgate-ID: tlsNG-4011c0/1776433291-CEB778B7-F8329588/0/0
X-purgate-type: clean
X-purgate-size: 4902

Hypervisor notifications are currently tracked with a dedicated
buff_full_pending boolean. That state only represents a single HYP
notification bit and keeps HYP bitmap handling tied to single-purpose
bookkeeping.

Replace the boolean with a hypervisor notification bitmap protected by
notif_lock. INFO_GET reports pending when the bitmap is non-zero, GET
returns and clears the HYP bitmap under the lock, and RX-buffer-full
sets FFA_NOTIF_RX_BUFFER_FULL in the bitmap instead of updating
separate state.

Initialize and clear the bitmap during domain lifecycle handling, and
use ctx->ffa_id for bitmap create and destroy so the notification state
stays tied to the cached FF-A endpoint ID.

No functional changes.

Signed-off-by: Bertrand Marquis <bertrand.marquis@arm.com>
---
 xen/arch/arm/tee/ffa_notif.c   | 46 ++++++++++++++++++++++++++--------
 xen/arch/arm/tee/ffa_private.h |  9 +++++--
 2 files changed, 43 insertions(+), 12 deletions(-)

diff --git a/xen/arch/arm/tee/ffa_notif.c b/xen/arch/arm/tee/ffa_notif.c
index 07bc5cb3a430..d15119409a25 100644
--- a/xen/arch/arm/tee/ffa_notif.c
+++ b/xen/arch/arm/tee/ffa_notif.c
@@ -94,8 +94,15 @@ void ffa_handle_notification_info_get(struct cpu_user_regs *regs)
 
     notif_pending = test_and_clear_bool(ctx->notif.secure_pending);
     if ( IS_ENABLED(CONFIG_FFA_VM_TO_VM) )
+    {
         notif_pending |= test_and_clear_bool(ctx->notif.vm_pending);
 
+        spin_lock(&ctx->notif.notif_lock);
+        if ( ctx->notif.hyp_pending )
+            notif_pending = true;
+        spin_unlock(&ctx->notif.notif_lock);
+    }
+
     if ( notif_pending )
     {
         /* A pending global notification for the guest */
@@ -174,12 +181,17 @@ void ffa_handle_notification_get(struct cpu_user_regs *regs)
             w6 = resp.a6;
     }
 
-    if ( IS_ENABLED(CONFIG_FFA_VM_TO_VM) &&
-          flags & FFA_NOTIF_FLAG_BITMAP_HYP &&
-          test_and_clear_bool(ctx->notif.buff_full_pending) )
+    if ( IS_ENABLED(CONFIG_FFA_VM_TO_VM) )
     {
-        ACCESS_ONCE(ctx->notif.vm_pending) = false;
-        w7 = FFA_NOTIF_RX_BUFFER_FULL;
+        spin_lock(&ctx->notif.notif_lock);
+
+        if ( (flags & FFA_NOTIF_FLAG_BITMAP_HYP) && ctx->notif.hyp_pending )
+        {
+            w7 = ctx->notif.hyp_pending;
+            ctx->notif.hyp_pending = 0;
+        }
+
+        spin_unlock(&ctx->notif.notif_lock);
     }
 
     ffa_set_regs(regs, FFA_SUCCESS_32, 0, w2, w3, w4, w5, w6, w7);
@@ -207,12 +219,17 @@ int32_t ffa_handle_notification_set(struct cpu_user_regs *regs)
 void ffa_raise_rx_buffer_full(struct domain *d)
 {
     struct ffa_ctx *ctx = d->arch.tee;
+    uint32_t prev_bitmap;
 
     if ( !ctx )
         return;
 
-    ACCESS_ONCE(ctx->notif.buff_full_pending) = true;
-    if ( !test_and_set_bool(ctx->notif.vm_pending) )
+    spin_lock(&ctx->notif.notif_lock);
+    prev_bitmap = ctx->notif.hyp_pending;
+    ctx->notif.hyp_pending |= FFA_NOTIF_RX_BUFFER_FULL;
+    spin_unlock(&ctx->notif.notif_lock);
+
+    if ( !(prev_bitmap & FFA_NOTIF_RX_BUFFER_FULL) )
         inject_notif_pending(d);
 }
 #endif
@@ -426,12 +443,15 @@ void ffa_notif_init(void)
 
 int ffa_notif_domain_init(struct domain *d)
 {
+    struct ffa_ctx *ctx = d->arch.tee;
     int32_t res;
 
+    spin_lock_init(&ctx->notif.notif_lock);
+    ctx->notif.hyp_pending = 0;
+
     if ( fw_notif_enabled )
     {
-
-        res = ffa_notification_bitmap_create(ffa_get_vm_id(d), d->max_vcpus);
+        res = ffa_notification_bitmap_create(ctx->ffa_id, d->max_vcpus);
         if ( res )
             return -ENOMEM;
     }
@@ -441,10 +461,16 @@ int ffa_notif_domain_init(struct domain *d)
 
 void ffa_notif_domain_destroy(struct domain *d)
 {
+    struct ffa_ctx *ctx = d->arch.tee;
+
+    spin_lock(&ctx->notif.notif_lock);
+    ctx->notif.hyp_pending = 0;
+    spin_unlock(&ctx->notif.notif_lock);
+
     /*
      * Call bitmap_destroy even if bitmap create failed as the SPMC will
      * return a DENIED error that we will ignore.
      */
     if ( fw_notif_enabled )
-        ffa_notification_bitmap_destroy(ffa_get_vm_id(d));
+        ffa_notification_bitmap_destroy(ctx->ffa_id);
 }
diff --git a/xen/arch/arm/tee/ffa_private.h b/xen/arch/arm/tee/ffa_private.h
index c291f32b56ff..5693772481ed 100644
--- a/xen/arch/arm/tee/ffa_private.h
+++ b/xen/arch/arm/tee/ffa_private.h
@@ -340,9 +340,14 @@ struct ffa_ctx_notif {
     bool vm_pending;
 
     /*
-     * True if domain has buffer full notification pending
+     * Lock protecting the hypervisor-managed notification state.
      */
-    bool buff_full_pending;
+    spinlock_t notif_lock;
+
+    /*
+     * Bitmap of pending hypervisor notifications (for HYP bitmap queries).
+     */
+    uint32_t hyp_pending;
 };
 
 struct ffa_ctx {
-- 
2.53.0



From xen-devel-bounces@lists.xenproject.org Fri Apr 17 13:41:36 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Fri, 17 Apr 2026 13:41:36 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1284305.1566140 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wDjRv-00062z-Uu; Fri, 17 Apr 2026 13:41:35 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1284305.1566140; Fri, 17 Apr 2026 13:41: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 1wDjRv-00062s-R5; Fri, 17 Apr 2026 13:41:35 +0000
Received: by outflank-mailman (input) for mailman id 1284305;
 Fri, 17 Apr 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 <bertrand.marquis@arm.com>) id 1wDjRu-0005zq-6m
 for xen-devel@lists.xenproject.org; Fri, 17 Apr 2026 13:41:34 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wDjRt-009kb3-Jo
 for xen-devel@lists.xenproject.org; Fri, 17 Apr 2026 15:41:33 +0200
Received: from [10.42.69.4] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <bertrand.marquis@arm.com>)
 id 69e23874-e002-0a2a0a5209dd-0a2a4504d544-46
 for <xen-devel@lists.xenproject.org>; Fri, 17 Apr 2026 15:41:33 +0200
Received: from [217.140.110.172] (helo=foss.arm.com)
 by tlsNG-ebf023.mxtls.expurgate.net with ESMTP (eXpurgate 4.56.1)
 (envelope-from <bertrand.marquis@arm.com>)
 id 69e2388c-1dec-0a2a45040019-d98c6eacd9ca-1
 for <xen-devel@lists.xenproject.org>; Fri, 17 Apr 2026 15:41:32 +0200
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 47521152B;
 Fri, 17 Apr 2026 06:41:26 -0700 (PDT)
Received: from C3HXLD123V.arm.com (unknown [10.57.89.170])
 by usa-sjc-imap-foss1.foss.arm.com (Postfix) with ESMTPSA id 9D90C3F7D8;
 Fri, 17 Apr 2026 06:41:30 -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=foss header.d=arm.com header.i="@arm.com" header.h="From:To:Cc:Subject:Date:In-Reply-To:References"
DKIM-Signature: v=1; a=rsa-sha256; c=simple/simple; d=arm.com; s=foss;
	t=1776433292; bh=GpMN53OmsGMUNWxbJRMSEFaE53+mcg2MmZqtr/Lo+zY=;
	h=From:To:Cc:Subject:Date:In-Reply-To:References:From;
	b=ucGQGoVsedG3vqsRL/HuomCA0Jz5/3TnwHbqBxEWVCowvK4bG1Xo/y+ovBDsdFWfW
	 rBTnupjUo8k5NpYtaJM/9xf8eDMCYTsLR9ajQX7S2poaQAWt+gaNSbPsLuTeYulTVW
	 SRcArxibT/wa8kwDgYF7hKelE08jkMfcUyucIY9o=
From: Bertrand Marquis <bertrand.marquis@arm.com>
To: xen-devel@lists.xenproject.org
Cc: Volodymyr Babchuk <volodymyr_babchuk@epam.com>,
	Jens Wiklander <jens.wiklander@linaro.org>,
	Stefano Stabellini <sstabellini@kernel.org>,
	Julien Grall <julien@xen.org>,
	Michal Orzel <michal.orzel@amd.com>
Subject: [PATCH 3/6] xen/arm: ffa: Tighten notification parameter validation
Date: Fri, 17 Apr 2026 15:40:51 +0200
Message-ID: <1036add9199c6304eb649854024c74dd0f0192cc.1776266307.git.bertrand.marquis@arm.com>
X-Mailer: git-send-email 2.53.0
In-Reply-To: <cover.1776266307.git.bertrand.marquis@arm.com>
References: <cover.1776266307.git.bertrand.marquis@arm.com>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit
X-purgate-ID: tlsNG-ebf023/1776433293-300413FF-D93CA36A/0/0
X-purgate-type: clean
X-purgate-size: 5853

The notification handlers still validate overlapping subsets of their
inputs. BIND, UNBIND, and SET each decode caller and destination IDs
locally, GET still accepts a non-zero receiver vCPU ID and reserved flag
bits, and SET still accepts non-zero NS-virtual flags. BIND also treats
unsupported non-zero flag encodings as a supported-feature failure
instead of as malformed input.

Add ffa_notif_parse_params() and use it to centralize the common
caller/destination and non-zero bitmap checks for BIND, UNBIND, and SET.
Also reject malformed GET and SET requests locally before touching
cached state or forwarding anything to the SPMC. Keep BIND limited to
global notifications and reject unsupported non-zero flag encodings with
INVALID_PARAMETERS.

- add a shared parameter parser for notification caller/destination
  validation
- wire BIND and UNBIND through the shared parser and reject unsupported
  bind flag encodings with INVALID_PARAMETERS
- reject non-zero receiver vCPU and reserved flag bits in
  FFA_NOTIFICATION_GET
- reject non-zero flags in the NS-virtual FFA_NOTIFICATION_SET path

Functional impact: malformed notification requests are rejected
consistently earlier in the mediator.

Signed-off-by: Bertrand Marquis <bertrand.marquis@arm.com>
---
 xen/arch/arm/tee/ffa_notif.c | 61 +++++++++++++++++++++++++++++-------
 1 file changed, 50 insertions(+), 11 deletions(-)

diff --git a/xen/arch/arm/tee/ffa_notif.c b/xen/arch/arm/tee/ffa_notif.c
index d15119409a25..491db3b04df5 100644
--- a/xen/arch/arm/tee/ffa_notif.c
+++ b/xen/arch/arm/tee/ffa_notif.c
@@ -42,21 +42,40 @@ static void inject_notif_pending(struct domain *d)
                d);
 }
 
+static int32_t ffa_notif_parse_params(uint16_t dom_id, uint16_t caller_id,
+                                      uint16_t dest_id, uint32_t bitmap_lo,
+                                      uint32_t bitmap_hi)
+{
+    if ( caller_id != dom_id || dest_id == dom_id || !dest_id )
+        return FFA_RET_INVALID_PARAMETERS;
+
+    if ( !bitmap_lo && !bitmap_hi )
+        return FFA_RET_INVALID_PARAMETERS;
+
+    return FFA_RET_OK;
+}
+
 int32_t ffa_handle_notification_bind(struct cpu_user_regs *regs)
 {
     struct domain *d = current->domain;
+    struct ffa_ctx *ctx = d->arch.tee;
+    int32_t ret;
     uint32_t src_dst = get_user_reg(regs, 1);
     uint32_t flags = get_user_reg(regs, 2);
     uint32_t bitmap_lo = get_user_reg(regs, 3);
     uint32_t bitmap_hi = get_user_reg(regs, 4);
+    uint16_t caller_id = src_dst & GENMASK(15, 0);
+    uint16_t dest_id = src_dst >> 16;
 
-    if ( (src_dst & GENMASK(15, 0)) != ffa_get_vm_id(d) )
+    if ( flags )    /* Only global notifications are supported */
         return FFA_RET_INVALID_PARAMETERS;
 
-    if ( flags )    /* Only global notifications are supported */
-        return FFA_RET_DENIED;
+    ret = ffa_notif_parse_params(ctx->ffa_id, caller_id, dest_id, bitmap_lo,
+                                 bitmap_hi);
+    if ( ret )
+        return ret;
 
-    if ( FFA_ID_IS_SECURE(src_dst >> 16) && fw_notif_enabled )
+    if ( FFA_ID_IS_SECURE(dest_id) && fw_notif_enabled )
         return ffa_simple_call(FFA_NOTIFICATION_BIND, src_dst, flags,
                                bitmap_lo, bitmap_hi);
 
@@ -66,16 +85,22 @@ int32_t ffa_handle_notification_bind(struct cpu_user_regs *regs)
 int32_t ffa_handle_notification_unbind(struct cpu_user_regs *regs)
 {
     struct domain *d = current->domain;
+    struct ffa_ctx *ctx = d->arch.tee;
+    int32_t ret;
     uint32_t src_dst = get_user_reg(regs, 1);
     uint32_t bitmap_lo = get_user_reg(regs, 3);
     uint32_t bitmap_hi = get_user_reg(regs, 4);
+    uint16_t caller_id = src_dst & GENMASK(15, 0);
+    uint16_t dest_id = src_dst >> 16;
 
-    if ( (src_dst & GENMASK(15, 0)) != ffa_get_vm_id(d) )
-        return FFA_RET_INVALID_PARAMETERS;
+    ret = ffa_notif_parse_params(ctx->ffa_id, caller_id, dest_id, bitmap_lo,
+                                 bitmap_hi);
+    if ( ret )
+        return ret;
 
-    if ( FFA_ID_IS_SECURE(src_dst >> 16) && fw_notif_enabled )
-        return  ffa_simple_call(FFA_NOTIFICATION_UNBIND, src_dst, 0, bitmap_lo,
-                                bitmap_hi);
+    if ( FFA_ID_IS_SECURE(dest_id) && fw_notif_enabled )
+        return ffa_simple_call(FFA_NOTIFICATION_UNBIND, src_dst, 0, bitmap_lo,
+                               bitmap_hi);
 
     return FFA_RET_NOT_SUPPORTED;
 }
@@ -142,6 +167,12 @@ void ffa_handle_notification_get(struct cpu_user_regs *regs)
         return;
     }
 
+    if ( recv >> 16 || (flags & GENMASK(31, 4)) )
+    {
+        ffa_set_regs_error(regs, FFA_RET_INVALID_PARAMETERS);
+        return;
+    }
+
     if ( fw_notif_enabled && (flags & ( FFA_NOTIF_FLAG_BITMAP_SP |
                                         FFA_NOTIF_FLAG_BITMAP_SPM )) )
     {
@@ -204,11 +235,19 @@ int32_t ffa_handle_notification_set(struct cpu_user_regs *regs)
     uint32_t flags = get_user_reg(regs, 2);
     uint32_t bitmap_lo = get_user_reg(regs, 3);
     uint32_t bitmap_hi = get_user_reg(regs, 4);
+    uint16_t caller_id = src_dst >> 16;
+    uint16_t dest_id = src_dst & GENMASK(15, 0);
+    int32_t ret;
+
+    ret = ffa_notif_parse_params(ffa_get_vm_id(d), caller_id, dest_id,
+                                 bitmap_lo, bitmap_hi);
+    if ( ret )
+        return ret;
 
-    if ( (src_dst >> 16) != ffa_get_vm_id(d) )
+    if ( flags )
         return FFA_RET_INVALID_PARAMETERS;
 
-    if ( FFA_ID_IS_SECURE(src_dst & GENMASK(15, 0)) && fw_notif_enabled )
+    if ( FFA_ID_IS_SECURE(dest_id) && fw_notif_enabled )
         return ffa_simple_call(FFA_NOTIFICATION_SET, src_dst, flags, bitmap_lo,
                                bitmap_hi);
 
-- 
2.53.0



From xen-devel-bounces@lists.xenproject.org Fri Apr 17 13:41:37 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Fri, 17 Apr 2026 13:41:37 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1284306.1566149 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wDjRx-0006I3-9Y; Fri, 17 Apr 2026 13:41:37 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1284306.1566149; Fri, 17 Apr 2026 13: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 1wDjRx-0006Hw-5i; Fri, 17 Apr 2026 13:41:37 +0000
Received: by outflank-mailman (input) for mailman id 1284306;
 Fri, 17 Apr 2026 13:41:35 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <bertrand.marquis@arm.com>) id 1wDjRv-000617-Dt
 for xen-devel@lists.xenproject.org; Fri, 17 Apr 2026 13:41:35 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wDjRu-009kb3-Qj
 for xen-devel@lists.xenproject.org; Fri, 17 Apr 2026 15:41:34 +0200
Received: from [10.42.69.1] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <bertrand.marquis@arm.com>)
 id 69e2387d-e002-0a2a0a5209dd-0a2a4501dbf6-44
 for <xen-devel@lists.xenproject.org>; Fri, 17 Apr 2026 15:41:34 +0200
Received: from [217.140.110.172] (helo=foss.arm.com)
 by tlsNG-d62444.mxtls.expurgate.net with ESMTP (eXpurgate 4.56.1)
 (envelope-from <bertrand.marquis@arm.com>)
 id 69e2388e-c1f2-0a2a45010019-d98c6eacc4ba-1
 for <xen-devel@lists.xenproject.org>; Fri, 17 Apr 2026 15:41:34 +0200
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 0B3C01516;
 Fri, 17 Apr 2026 06:41:28 -0700 (PDT)
Received: from C3HXLD123V.arm.com (unknown [10.57.89.170])
 by usa-sjc-imap-foss1.foss.arm.com (Postfix) with ESMTPSA id 5D90F3F7D8;
 Fri, 17 Apr 2026 06:41:32 -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=foss header.d=arm.com header.i="@arm.com" header.h="From:To:Cc:Subject:Date:In-Reply-To:References"
DKIM-Signature: v=1; a=rsa-sha256; c=simple/simple; d=arm.com; s=foss;
	t=1776433293; bh=muz5M8Iqgy9eYpjCmc9pZ8VEHmiBcMu4FfUho63d0M0=;
	h=From:To:Cc:Subject:Date:In-Reply-To:References:From;
	b=iZTB9GDnC8dlk4AuK5JEPg+WSaTmt+qDuvHT6F6NOx2Z/7Af49FmybLRpf2vLCeJ+
	 ZfyhuzZXZe5xRicWkcQ64iNe5zjxp0Y/XgX38wJJYkQm1RyTIJpE5/nSVgBcMVQzfH
	 99YaNfJX4D5swFgq217QsO69bfIdG3TBCLtW+vmU=
From: Bertrand Marquis <bertrand.marquis@arm.com>
To: xen-devel@lists.xenproject.org
Cc: Volodymyr Babchuk <volodymyr_babchuk@epam.com>,
	Jens Wiklander <jens.wiklander@linaro.org>,
	Stefano Stabellini <sstabellini@kernel.org>,
	Julien Grall <julien@xen.org>,
	Michal Orzel <michal.orzel@amd.com>
Subject: [PATCH 4/6] xen/arm: ffa: Preserve secure notification state when polling SPMC
Date: Fri, 17 Apr 2026 15:40:52 +0200
Message-ID: <5b9ce4a4a3927ce2287ec4db7f864174f53b8f17.1776266307.git.bertrand.marquis@arm.com>
X-Mailer: git-send-email 2.53.0
In-Reply-To: <cover.1776266307.git.bertrand.marquis@arm.com>
References: <cover.1776266307.git.bertrand.marquis@arm.com>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit
X-purgate-ID: tlsNG-d62444/1776433294-B5468FF4-67EDDF68/0/0
X-purgate-type: clean
X-purgate-size: 7136

Secure pending state is latched when the SPMC raises the schedule
receiver interrupt, but Xen currently clears that latch too aggressively.
Guest FFA_NOTIFICATION_INFO_GET consumes secure_pending even though it
only reports pending state, and secure FFA_NOTIFICATION_GET only clears
the latch when both SP and SPM bitmaps are requested together. This can
drop a pending indication before the receiver retrieves secure
notifications, or keep INFO_GET reporting stale secure pending state
after a successful GET.

Keep secure_pending as a latched indication until secure notifications
are actually retrieved. Guest FFA_NOTIFICATION_INFO_GET now reports the
latched state without clearing it, while a successful secure
FFA_NOTIFICATION_GET clears the latch regardless of which secure bitmap
flags were requested. Also protect secure_pending with notif_lock,
serialize SPMC INFO_GET polling behind notif_info_lock, and preserve the
caller-visible INFO_GET success width.

Functional impact: guest INFO_GET preserves the secure pending
indication until secure notifications are retrieved, and successful
secure GET clears the guest-visible pending latch.

Signed-off-by: Bertrand Marquis <bertrand.marquis@arm.com>
---
 xen/arch/arm/tee/ffa_notif.c | 54 +++++++++++++++++++++++-------------
 1 file changed, 35 insertions(+), 19 deletions(-)

diff --git a/xen/arch/arm/tee/ffa_notif.c b/xen/arch/arm/tee/ffa_notif.c
index 491db3b04df5..fff00ca2baec 100644
--- a/xen/arch/arm/tee/ffa_notif.c
+++ b/xen/arch/arm/tee/ffa_notif.c
@@ -18,6 +18,7 @@
 
 static bool __ro_after_init fw_notif_enabled;
 static unsigned int __ro_after_init notif_sri_irq;
+static DEFINE_SPINLOCK(notif_info_lock);
 
 static void inject_notif_pending(struct domain *d)
 {
@@ -109,6 +110,7 @@ void ffa_handle_notification_info_get(struct cpu_user_regs *regs)
 {
     struct domain *d = current->domain;
     struct ffa_ctx *ctx = d->arch.tee;
+    uint32_t fid = get_user_reg(regs, 0);
     bool notif_pending;
 
     if ( !IS_ENABLED(CONFIG_FFA_VM_TO_VM) && !fw_notif_enabled )
@@ -117,7 +119,10 @@ void ffa_handle_notification_info_get(struct cpu_user_regs *regs)
         return;
     }
 
-    notif_pending = test_and_clear_bool(ctx->notif.secure_pending);
+    spin_lock(&ctx->notif.notif_lock);
+    notif_pending = ctx->notif.secure_pending;
+    spin_unlock(&ctx->notif.notif_lock);
+
     if ( IS_ENABLED(CONFIG_FFA_VM_TO_VM) )
     {
         notif_pending |= test_and_clear_bool(ctx->notif.vm_pending);
@@ -131,7 +136,9 @@ void ffa_handle_notification_info_get(struct cpu_user_regs *regs)
     if ( notif_pending )
     {
         /* A pending global notification for the guest */
-        ffa_set_regs(regs, FFA_SUCCESS_64, 0,
+        ffa_set_regs(regs,
+                     smccc_is_conv_64(fid) ? FFA_SUCCESS_64 : FFA_SUCCESS_32,
+                     0,
                      1U << FFA_NOTIF_INFO_GET_ID_COUNT_SHIFT, ffa_get_vm_id(d),
                      0, 0, 0, 0);
     }
@@ -154,6 +161,8 @@ void ffa_handle_notification_get(struct cpu_user_regs *regs)
     uint32_t w5 = 0;
     uint32_t w6 = 0;
     uint32_t w7 = 0;
+    uint32_t secure_flags = flags & ( FFA_NOTIF_FLAG_BITMAP_SP |
+                                      FFA_NOTIF_FLAG_BITMAP_SPM );
 
     if ( !IS_ENABLED(CONFIG_FFA_VM_TO_VM) && !fw_notif_enabled )
     {
@@ -173,27 +182,16 @@ void ffa_handle_notification_get(struct cpu_user_regs *regs)
         return;
     }
 
-    if ( fw_notif_enabled && (flags & ( FFA_NOTIF_FLAG_BITMAP_SP |
-                                        FFA_NOTIF_FLAG_BITMAP_SPM )) )
+    if ( fw_notif_enabled && secure_flags )
     {
         struct arm_smccc_1_2_regs arg = {
             .a0 = FFA_NOTIFICATION_GET,
             .a1 = recv,
-            .a2 = flags & ( FFA_NOTIF_FLAG_BITMAP_SP |
-                            FFA_NOTIF_FLAG_BITMAP_SPM ),
+            .a2 = secure_flags,
         };
         struct arm_smccc_1_2_regs resp;
         int32_t e;
 
-        /*
-         * Clear secure pending if both FFA_NOTIF_FLAG_BITMAP_SP and
-         * FFA_NOTIF_FLAG_BITMAP_SPM are set since secure world can't have
-         * any more pending notifications.
-         */
-        if ( ( flags  & FFA_NOTIF_FLAG_BITMAP_SP ) &&
-             ( flags & FFA_NOTIF_FLAG_BITMAP_SPM ) )
-            ACCESS_ONCE(ctx->notif.secure_pending) = false;
-
         arm_smccc_1_2_smc(&arg, &resp);
         e = ffa_get_ret_code(&resp);
         if ( e )
@@ -210,6 +208,10 @@ void ffa_handle_notification_get(struct cpu_user_regs *regs)
 
         if ( flags & FFA_NOTIF_FLAG_BITMAP_SPM )
             w6 = resp.a6;
+
+        spin_lock(&ctx->notif.notif_lock);
+        ctx->notif.secure_pending = false;
+        spin_unlock(&ctx->notif.notif_lock);
     }
 
     if ( IS_ENABLED(CONFIG_FFA_VM_TO_VM) )
@@ -354,7 +356,10 @@ static void notif_vm_pend_intr(uint16_t vm_id)
      * guarantees that the data structure isn't freed while we're accessing
      * it.
      */
-    ACCESS_ONCE(ctx->notif.secure_pending) = true;
+    spin_lock(&ctx->notif.notif_lock);
+    ctx->notif.secure_pending = true;
+    spin_unlock(&ctx->notif.notif_lock);
+
     inject_notif_pending(d);
 
 out_unlock:
@@ -373,11 +378,18 @@ static void notif_sri_action(void *unused)
     unsigned int n;
     int32_t res;
 
-    do {
+    if ( !fw_notif_enabled )
+        return;
+
+    spin_lock(&notif_info_lock);
+
+    do
+    {
         arm_smccc_1_2_smc(&arg, &resp);
         res = ffa_get_ret_code(&resp);
         if ( res )
         {
+            spin_unlock(&notif_info_lock);
             if ( res != FFA_RET_NO_DATA && printk_ratelimit() )
                 printk(XENLOG_WARNING
                        "ffa: notification info get failed: error %d\n", res);
@@ -391,7 +403,7 @@ static void notif_sri_action(void *unused)
         id_pos = 0;
         for ( n = 0; n < list_count; n++ )
         {
-            unsigned int count = ((ids_count >> 2 * n) & 0x3) + 1;
+            unsigned int count = ((ids_count >> (2 * n)) & 0x3) + 1;
             uint16_t vm_id = get_id_from_resp(&resp, id_pos);
 
             notif_vm_pend_intr(vm_id);
@@ -399,7 +411,9 @@ static void notif_sri_action(void *unused)
             id_pos += count;
         }
 
-    } while (resp.a2 & FFA_NOTIF_INFO_GET_MORE_FLAG);
+    } while ( resp.a2 & FFA_NOTIF_INFO_GET_MORE_FLAG );
+
+    spin_unlock(&notif_info_lock);
 }
 
 static DECLARE_TASKLET(notif_sri_tasklet, notif_sri_action, NULL);
@@ -486,6 +500,7 @@ int ffa_notif_domain_init(struct domain *d)
     int32_t res;
 
     spin_lock_init(&ctx->notif.notif_lock);
+    ctx->notif.secure_pending = false;
     ctx->notif.hyp_pending = 0;
 
     if ( fw_notif_enabled )
@@ -503,6 +518,7 @@ void ffa_notif_domain_destroy(struct domain *d)
     struct ffa_ctx *ctx = d->arch.tee;
 
     spin_lock(&ctx->notif.notif_lock);
+    ctx->notif.secure_pending = false;
     ctx->notif.hyp_pending = 0;
     spin_unlock(&ctx->notif.notif_lock);
 
-- 
2.53.0



From xen-devel-bounces@lists.xenproject.org Fri Apr 17 13:41:39 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Fri, 17 Apr 2026 13:41:39 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1284307.1566158 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wDjRz-0006ZC-I0; Fri, 17 Apr 2026 13:41:39 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1284307.1566158; Fri, 17 Apr 2026 13:41: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 1wDjRz-0006Yt-DK; Fri, 17 Apr 2026 13:41:39 +0000
Received: by outflank-mailman (input) for mailman id 1284307;
 Fri, 17 Apr 2026 13:41:37 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <bertrand.marquis@arm.com>) id 1wDjRx-0006Hl-97
 for xen-devel@lists.xenproject.org; Fri, 17 Apr 2026 13:41:37 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wDjRw-009kb3-MC
 for xen-devel@lists.xenproject.org; Fri, 17 Apr 2026 15:41:36 +0200
Received: from [10.42.69.12] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <bertrand.marquis@arm.com>)
 id 69e23890-e002-0a2a0a5209dd-0a2a450ce252-2
 for <xen-devel@lists.xenproject.org>; Fri, 17 Apr 2026 15:41:36 +0200
Received: from [217.140.110.172] (helo=foss.arm.com)
 by tlsNG-d25034.mxtls.expurgate.net with ESMTP (eXpurgate 4.56.1)
 (envelope-from <bertrand.marquis@arm.com>)
 id 69e2388f-62f1-0a2a450c0019-d98c6eacc2d0-1
 for <xen-devel@lists.xenproject.org>; Fri, 17 Apr 2026 15:41:36 +0200
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 BE7E3152B;
 Fri, 17 Apr 2026 06:41:29 -0700 (PDT)
Received: from C3HXLD123V.arm.com (unknown [10.57.89.170])
 by usa-sjc-imap-foss1.foss.arm.com (Postfix) with ESMTPSA id 23F323F7D8;
 Fri, 17 Apr 2026 06:41:33 -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=foss header.d=arm.com header.i="@arm.com" header.h="From:To:Cc:Subject:Date:In-Reply-To:References"
DKIM-Signature: v=1; a=rsa-sha256; c=simple/simple; d=arm.com; s=foss;
	t=1776433295; bh=K0L3j6rOuFbocNT0G1KNMjoLTTA4P4wveYKXWHNkbsg=;
	h=From:To:Cc:Subject:Date:In-Reply-To:References:From;
	b=B/bQ7sOWm1dxec2RmlYkfebzmi/bx9ZcepiAYslRbJWBW4zioVi1baQfMBdZdGO9e
	 iOsX8RZScJAHJVd/WiJyZMZhoIsRS3//jupKt4dEtgK+DTvoPK9HMnh1zAV9Ezl8AA
	 M3k7OdCTx034h/uFsaB+kER/aYVcEChWw2C1lEcU=
From: Bertrand Marquis <bertrand.marquis@arm.com>
To: xen-devel@lists.xenproject.org
Cc: Volodymyr Babchuk <volodymyr_babchuk@epam.com>,
	Jens Wiklander <jens.wiklander@linaro.org>,
	Stefano Stabellini <sstabellini@kernel.org>,
	Julien Grall <julien@xen.org>,
	Michal Orzel <michal.orzel@amd.com>
Subject: [PATCH 5/6] xen/arm: ffa: Track VM notification bindings locally
Date: Fri, 17 Apr 2026 15:40:53 +0200
Message-ID: <a3e689abc6695c0adbe294ebce7ee0a77bd4b7bf.1776266307.git.bertrand.marquis@arm.com>
X-Mailer: git-send-email 2.53.0
In-Reply-To: <cover.1776266307.git.bertrand.marquis@arm.com>
References: <cover.1776266307.git.bertrand.marquis@arm.com>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit
X-purgate-ID: tlsNG-d25034/1776433296-F620CCF5-86443AD2/0/0
X-purgate-type: clean
X-purgate-size: 7406

VM-to-VM notifications need receiver-side bind state so Xen can validate
which sender owns each notification bit. Non-secure BIND and UNBIND
requests currently have no local state and cannot enforce that contract.

Add per-bit VM notification binding state to struct ffa_ctx_notif and
use it to handle non-secure BIND and UNBIND requests when
CONFIG_FFA_VM_TO_VM is enabled. The update helper validates the whole
request under notif_lock before mutating anything, denies bind or
unbind when a bit is pending, rejects rebinding to a different sender,
and keeps rebinding to the same sender idempotent.

Promote vm_pending to a bitmap so the bind logic can reason per
notification ID, use that bitmap directly when reporting pending state,
and initialize and clear the new VM notification state during domain
init and teardown.

Functional impact: when CONFIG_FFA_VM_TO_VM is enabled, Xen tracks VM
notification bindings locally and validates non-secure bind and unbind
requests against that state.

Signed-off-by: Bertrand Marquis <bertrand.marquis@arm.com>
---
 xen/arch/arm/tee/ffa_notif.c   | 97 ++++++++++++++++++++++++++++++----
 xen/arch/arm/tee/ffa_private.h | 15 ++++--
 2 files changed, 99 insertions(+), 13 deletions(-)

diff --git a/xen/arch/arm/tee/ffa_notif.c b/xen/arch/arm/tee/ffa_notif.c
index fff00ca2baec..4def701f0130 100644
--- a/xen/arch/arm/tee/ffa_notif.c
+++ b/xen/arch/arm/tee/ffa_notif.c
@@ -56,6 +56,54 @@ static int32_t ffa_notif_parse_params(uint16_t dom_id, uint16_t caller_id,
     return FFA_RET_OK;
 }
 
+static int32_t ffa_notif_update_vm_binding(struct ffa_ctx *ctx,
+                                           uint16_t dest_id, uint64_t bitmap,
+                                           bool bind)
+{
+    unsigned int id;
+    int32_t ret = FFA_RET_OK;
+
+    spin_lock(&ctx->notif.notif_lock);
+
+    for ( id = 0; id < FFA_NUM_VM_NOTIF; id++ )
+    {
+        if ( !(bitmap & BIT(id, ULL)) )
+            continue;
+
+        if ( ctx->notif.vm_pending & BIT(id, ULL) )
+        {
+            ret = FFA_RET_DENIED;
+            goto out_unlock;
+        }
+
+        if ( bind )
+        {
+            if ( ctx->notif.vm_bind[id] != 0 &&
+                 ctx->notif.vm_bind[id] != dest_id )
+            {
+                ret = FFA_RET_DENIED;
+                goto out_unlock;
+            }
+        }
+        else if ( ctx->notif.vm_bind[id] != dest_id )
+        {
+            ret = FFA_RET_DENIED;
+            goto out_unlock;
+        }
+    }
+
+    for ( id = 0; id < FFA_NUM_VM_NOTIF; id++ )
+    {
+        if ( bitmap & BIT(id, ULL) )
+            ctx->notif.vm_bind[id] = bind ? dest_id : 0;
+    }
+
+out_unlock:
+    spin_unlock(&ctx->notif.notif_lock);
+
+    return ret;
+}
+
 int32_t ffa_handle_notification_bind(struct cpu_user_regs *regs)
 {
     struct domain *d = current->domain;
@@ -76,11 +124,21 @@ int32_t ffa_handle_notification_bind(struct cpu_user_regs *regs)
     if ( ret )
         return ret;
 
-    if ( FFA_ID_IS_SECURE(dest_id) && fw_notif_enabled )
-        return ffa_simple_call(FFA_NOTIFICATION_BIND, src_dst, flags,
-                               bitmap_lo, bitmap_hi);
+    if ( FFA_ID_IS_SECURE(dest_id) )
+    {
+        if ( fw_notif_enabled )
+            return ffa_simple_call(FFA_NOTIFICATION_BIND, src_dst, flags,
+                                   bitmap_lo, bitmap_hi);
 
-    return FFA_RET_NOT_SUPPORTED;
+        return FFA_RET_NOT_SUPPORTED;
+    }
+
+    if ( !IS_ENABLED(CONFIG_FFA_VM_TO_VM) )
+        return FFA_RET_NOT_SUPPORTED;
+
+    return ffa_notif_update_vm_binding(ctx, dest_id,
+                                       ((uint64_t)bitmap_hi << 32) | bitmap_lo,
+                                       true);
 }
 
 int32_t ffa_handle_notification_unbind(struct cpu_user_regs *regs)
@@ -99,11 +157,21 @@ int32_t ffa_handle_notification_unbind(struct cpu_user_regs *regs)
     if ( ret )
         return ret;
 
-    if ( FFA_ID_IS_SECURE(dest_id) && fw_notif_enabled )
-        return ffa_simple_call(FFA_NOTIFICATION_UNBIND, src_dst, 0, bitmap_lo,
-                               bitmap_hi);
+    if ( FFA_ID_IS_SECURE(dest_id) )
+    {
+        if ( fw_notif_enabled )
+            return ffa_simple_call(FFA_NOTIFICATION_UNBIND, src_dst, 0,
+                                   bitmap_lo, bitmap_hi);
 
-    return FFA_RET_NOT_SUPPORTED;
+        return FFA_RET_NOT_SUPPORTED;
+    }
+
+    if ( !IS_ENABLED(CONFIG_FFA_VM_TO_VM) )
+        return FFA_RET_NOT_SUPPORTED;
+
+    return ffa_notif_update_vm_binding(ctx, dest_id,
+                                       ((uint64_t)bitmap_hi << 32) | bitmap_lo,
+                                       false);
 }
 
 void ffa_handle_notification_info_get(struct cpu_user_regs *regs)
@@ -125,9 +193,10 @@ void ffa_handle_notification_info_get(struct cpu_user_regs *regs)
 
     if ( IS_ENABLED(CONFIG_FFA_VM_TO_VM) )
     {
-        notif_pending |= test_and_clear_bool(ctx->notif.vm_pending);
-
         spin_lock(&ctx->notif.notif_lock);
+        if ( ctx->notif.vm_pending )
+            notif_pending = true;
+
         if ( ctx->notif.hyp_pending )
             notif_pending = true;
         spin_unlock(&ctx->notif.notif_lock);
@@ -497,10 +566,14 @@ void ffa_notif_init(void)
 int ffa_notif_domain_init(struct domain *d)
 {
     struct ffa_ctx *ctx = d->arch.tee;
+    unsigned int i;
     int32_t res;
 
     spin_lock_init(&ctx->notif.notif_lock);
     ctx->notif.secure_pending = false;
+    ctx->notif.vm_pending = 0;
+    for ( i = 0; i < FFA_NUM_VM_NOTIF; i++ )
+        ctx->notif.vm_bind[i] = 0;
     ctx->notif.hyp_pending = 0;
 
     if ( fw_notif_enabled )
@@ -516,9 +589,13 @@ int ffa_notif_domain_init(struct domain *d)
 void ffa_notif_domain_destroy(struct domain *d)
 {
     struct ffa_ctx *ctx = d->arch.tee;
+    unsigned int i;
 
     spin_lock(&ctx->notif.notif_lock);
     ctx->notif.secure_pending = false;
+    ctx->notif.vm_pending = 0;
+    for ( i = 0; i < FFA_NUM_VM_NOTIF; i++ )
+        ctx->notif.vm_bind[i] = 0;
     ctx->notif.hyp_pending = 0;
     spin_unlock(&ctx->notif.notif_lock);
 
diff --git a/xen/arch/arm/tee/ffa_private.h b/xen/arch/arm/tee/ffa_private.h
index 5693772481ed..6d83afb3d00a 100644
--- a/xen/arch/arm/tee/ffa_private.h
+++ b/xen/arch/arm/tee/ffa_private.h
@@ -236,6 +236,11 @@
 #define FFA_NOTIF_INFO_GET_ID_COUNT_MASK    0x1F
 
 #define FFA_NOTIF_RX_BUFFER_FULL        BIT(0, U)
+#define FFA_NUM_VM_NOTIF                64U
+
+#if FFA_NUM_VM_NOTIF > 64
+#error "FFA_NUM_VM_NOTIF must be <= 64"
+#endif
 
 /* Feature IDs used with FFA_FEATURES */
 #define FFA_FEATURE_NOTIF_PEND_INTR     0x1U
@@ -334,10 +339,14 @@ struct ffa_ctx_notif {
     bool secure_pending;
 
     /*
-     * True if domain is reported by FFA_NOTIFICATION_INFO_GET to have
-     * pending notifications from VMs (including framework ones).
+     * Bitmap of pending notifications from VMs (including framework ones).
+     */
+    uint64_t vm_pending;
+
+    /*
+     * Source endpoint bound to each VM notification ID (0 means unbound).
      */
-    bool vm_pending;
+    uint16_t vm_bind[FFA_NUM_VM_NOTIF];
 
     /*
      * Lock protecting the hypervisor-managed notification state.
-- 
2.53.0



From xen-devel-bounces@lists.xenproject.org Fri Apr 17 13:41:39 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Fri, 17 Apr 2026 13:41:39 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1284310.1566162 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wDjRz-0006cF-Rn; Fri, 17 Apr 2026 13:41:39 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1284310.1566162; Fri, 17 Apr 2026 13:41: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 1wDjRz-0006b5-Lc; Fri, 17 Apr 2026 13:41:39 +0000
Received: by outflank-mailman (input) for mailman id 1284310;
 Fri, 17 Apr 2026 13:41:39 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <bertrand.marquis@arm.com>) id 1wDjRy-0006Xe-SW
 for xen-devel@lists.xenproject.org; Fri, 17 Apr 2026 13:41:38 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wDjRw-000EHD-Ne
 for xen-devel@lists.xenproject.org; Fri, 17 Apr 2026 15:41:38 +0200
Received: from [10.42.69.3] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <bertrand.marquis@arm.com>)
 id 69e2388e-bab6-0a2a0a5309dd-0a2a4503ed30-10
 for <xen-devel@lists.xenproject.org>; Fri, 17 Apr 2026 15:41:38 +0200
Received: from [217.140.110.172] (helo=foss.arm.com)
 by tlsNG-33051d.mxtls.expurgate.net with ESMTP (eXpurgate 4.56.1)
 (envelope-from <bertrand.marquis@arm.com>)
 id 69e23891-672d-0a2a45030019-d98c6eacd12a-1
 for <xen-devel@lists.xenproject.org>; Fri, 17 Apr 2026 15:41:37 +0200
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 529231516;
 Fri, 17 Apr 2026 06:41:31 -0700 (PDT)
Received: from C3HXLD123V.arm.com (unknown [10.57.89.170])
 by usa-sjc-imap-foss1.foss.arm.com (Postfix) with ESMTPSA id D6D373F7D8;
 Fri, 17 Apr 2026 06:41:35 -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=foss header.d=arm.com header.i="@arm.com" header.h="From:To:Cc:Subject:Date:In-Reply-To:References"
DKIM-Signature: v=1; a=rsa-sha256; c=simple/simple; d=arm.com; s=foss;
	t=1776433297; bh=cZZGPI6vYtUzakFAvu0YBSmNdIu2H7Rzaign3ej2VlA=;
	h=From:To:Cc:Subject:Date:In-Reply-To:References:From;
	b=Y1XalVlal1hWmaJVNRfQYNZEX63Jd6p5Jf9DVO7ivurdKHvPxODE93GmrQBpPyrXJ
	 OjFOR1PtxYL6A0kjZi4T+J7W8qdXR8ejrNDRuD3yPJcJiPxo/NdQw8yIZ1tM/sLTsI
	 bzCi6GUXv+iF0ls9DWhFLcmdMLQFkRYjyYCyo+jY=
From: Bertrand Marquis <bertrand.marquis@arm.com>
To: xen-devel@lists.xenproject.org
Cc: Volodymyr Babchuk <volodymyr_babchuk@epam.com>,
	Jens Wiklander <jens.wiklander@linaro.org>,
	Stefano Stabellini <sstabellini@kernel.org>,
	Julien Grall <julien@xen.org>,
	Michal Orzel <michal.orzel@amd.com>
Subject: [PATCH 6/6] xen/arm: ffa: Deliver VM-to-VM notifications locally
Date: Fri, 17 Apr 2026 15:40:54 +0200
Message-ID: <e85d0ef9733f091e09f520c2e0598f13cb7af06a.1776266307.git.bertrand.marquis@arm.com>
X-Mailer: git-send-email 2.53.0
In-Reply-To: <cover.1776266307.git.bertrand.marquis@arm.com>
References: <cover.1776266307.git.bertrand.marquis@arm.com>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit
X-purgate-ID: tlsNG-33051d/1776433298-2BB6C938-83D67431/0/0
X-purgate-type: clean
X-purgate-size: 12215

VM notification binding and pending tracking exist for non-secure
endpoints, but FFA_NOTIFICATION_SET still only forwards secure
destinations to the SPMC. Non-secure VMs therefore cannot receive
notifications from other VMs. Local NPI delivery also needs explicit
re-arm tracking so repeated raises are not lost while the interrupt is
already pending.

Add a local VM notification delivery path for non-secure destinations.
notification_set_vm() resolves the destination endpoint, verifies that
every requested bit is bound to the sender, sets the receiver's
vm_pending bitmap under notif_lock, and raises an NPI only when the
receiver transitions from no local pending notifications to some.

Track whether a local NPI is already armed with notif_irq_raised, clear
that state once both VM and hypervisor pending bitmaps are drained, and
roll back newly-added VM pending bits if no destination vCPU is online.
Also expose firmware notification availability so FFA_FEATURES only
advertises notification support when it is actually provided by the
firmware or by CONFIG_FFA_VM_TO_VM.

Functional impact: when CONFIG_FFA_VM_TO_VM is enabled, non-secure
FFA_NOTIFICATION_SET delivers VM-to-VM notifications locally and keeps
NPI delivery reliable across repeated raises.

Signed-off-by: Bertrand Marquis <bertrand.marquis@arm.com>
---
 xen/arch/arm/tee/ffa.c         |  24 +++++--
 xen/arch/arm/tee/ffa_notif.c   | 126 +++++++++++++++++++++++++++++++--
 xen/arch/arm/tee/ffa_private.h |  11 ++-
 3 files changed, 147 insertions(+), 14 deletions(-)

diff --git a/xen/arch/arm/tee/ffa.c b/xen/arch/arm/tee/ffa.c
index 1fe33f26454a..7fe021049cba 100644
--- a/xen/arch/arm/tee/ffa.c
+++ b/xen/arch/arm/tee/ffa.c
@@ -39,8 +39,13 @@
  * o FFA_MSG_SEND_DIRECT_REQ:
  *   - only supported from a VM to an SP
  * o FFA_NOTIFICATION_*:
+ *   - only supported when firmware notifications are enabled or VM-to-VM
+ *     support is built in
  *   - only supports global notifications, that is, per vCPU notifications
- *     are not supported
+ *     are not supported and secure per-vCPU notification information is
+ *     not forwarded
+ *   - the source endpoint ID reported for a notification may no longer
+ *     exist by the time the receiver consumes it
  *   - doesn't support signalling the secondary scheduler of pending
  *     notification for secure partitions
  *   - doesn't support notifications for Xen itself
@@ -245,6 +250,8 @@ static void handle_features(struct cpu_user_regs *regs)
     uint32_t a1 = get_user_reg(regs, 1);
     struct domain *d = current->domain;
     struct ffa_ctx *ctx = d->arch.tee;
+    bool notif_supported = IS_ENABLED(CONFIG_FFA_VM_TO_VM) ||
+                           ffa_notif_fw_enabled();
 
     /*
      * FFA_FEATURES defines w2 as input properties only for specific
@@ -343,10 +350,16 @@ static void handle_features(struct cpu_user_regs *regs)
 
         break;
     case FFA_FEATURE_NOTIF_PEND_INTR:
-        ffa_set_regs_success(regs, GUEST_FFA_NOTIF_PEND_INTR_ID, 0);
+        if ( notif_supported )
+            ffa_set_regs_success(regs, GUEST_FFA_NOTIF_PEND_INTR_ID, 0);
+        else
+            ffa_set_regs_error(regs, FFA_RET_NOT_SUPPORTED);
         break;
     case FFA_FEATURE_SCHEDULE_RECV_INTR:
-        ffa_set_regs_success(regs, GUEST_FFA_SCHEDULE_RECV_INTR_ID, 0);
+        if ( notif_supported )
+            ffa_set_regs_success(regs, GUEST_FFA_SCHEDULE_RECV_INTR_ID, 0);
+        else
+            ffa_set_regs_error(regs, FFA_RET_NOT_SUPPORTED);
         break;
     case FFA_PARTITION_INFO_GET_REGS:
         if ( ACCESS_ONCE(ctx->guest_vers) >= FFA_VERSION_1_2 )
@@ -361,7 +374,10 @@ static void handle_features(struct cpu_user_regs *regs)
     case FFA_NOTIFICATION_SET:
     case FFA_NOTIFICATION_INFO_GET_32:
     case FFA_NOTIFICATION_INFO_GET_64:
-        ffa_set_regs_success(regs, 0, 0);
+        if ( notif_supported )
+            ffa_set_regs_success(regs, 0, 0);
+        else
+            ffa_set_regs_error(regs, FFA_RET_NOT_SUPPORTED);
         break;
     default:
         ffa_set_regs_error(regs, FFA_RET_NOT_SUPPORTED);
diff --git a/xen/arch/arm/tee/ffa_notif.c b/xen/arch/arm/tee/ffa_notif.c
index 4def701f0130..e77321244926 100644
--- a/xen/arch/arm/tee/ffa_notif.c
+++ b/xen/arch/arm/tee/ffa_notif.c
@@ -20,7 +20,12 @@ static bool __ro_after_init fw_notif_enabled;
 static unsigned int __ro_after_init notif_sri_irq;
 static DEFINE_SPINLOCK(notif_info_lock);
 
-static void inject_notif_pending(struct domain *d)
+bool ffa_notif_fw_enabled(void)
+{
+    return fw_notif_enabled;
+}
+
+static bool inject_notif_pending(struct domain *d)
 {
     struct vcpu *v;
 
@@ -34,13 +39,15 @@ static void inject_notif_pending(struct domain *d)
         if ( is_vcpu_online(v) )
         {
             vgic_inject_irq(d, v, GUEST_FFA_NOTIF_PEND_INTR_ID, true);
-            return;
+            return true;
         }
     }
 
     if ( printk_ratelimit() )
         printk(XENLOG_G_DEBUG "%pd: ffa: can't inject NPI, all vCPUs offline\n",
                d);
+
+    return false;
 }
 
 static int32_t ffa_notif_parse_params(uint16_t dom_id, uint16_t caller_id,
@@ -104,6 +111,73 @@ out_unlock:
     return ret;
 }
 
+/*
+ * Deliver a VM-to-VM notification. ctx->notif.notif_lock protects
+ * vm_bind/vm_pending so callers must not hold it already.
+ */
+static int32_t notification_set_vm(uint16_t dst_id, uint16_t src_id,
+                                   uint32_t flags, uint64_t bitmap)
+{
+    struct domain *dst_d;
+    struct ffa_ctx *dst_ctx;
+    unsigned int id;
+    int32_t ret;
+    uint64_t prev_bitmap = 0;
+    uint64_t new_bitmap;
+    bool inject = false;
+
+    if ( flags )
+        return FFA_RET_INVALID_PARAMETERS;
+
+    ret = ffa_endpoint_domain_lookup(dst_id, &dst_d, &dst_ctx);
+    if ( ret )
+        return ret;
+
+    ret = FFA_RET_OK;
+
+    spin_lock(&dst_ctx->notif.notif_lock);
+
+    for ( id = 0; id < FFA_NUM_VM_NOTIF; id++ )
+    {
+        if ( !(bitmap & BIT(id, ULL)) )
+            continue;
+
+        if ( dst_ctx->notif.vm_bind[id] != src_id )
+        {
+            ret = FFA_RET_DENIED;
+            goto out_unlock;
+        }
+    }
+
+    prev_bitmap = dst_ctx->notif.vm_pending;
+    dst_ctx->notif.vm_pending |= bitmap;
+    if ( !dst_ctx->notif.notif_irq_raised &&
+         (dst_ctx->notif.vm_pending || dst_ctx->notif.hyp_pending) )
+    {
+        dst_ctx->notif.notif_irq_raised = true;
+        inject = true;
+    }
+
+out_unlock:
+    spin_unlock(&dst_ctx->notif.notif_lock);
+
+    new_bitmap = bitmap & ~prev_bitmap;
+    if ( ret == FFA_RET_OK && inject && new_bitmap &&
+         !inject_notif_pending(dst_d) )
+    {
+        spin_lock(&dst_ctx->notif.notif_lock);
+        dst_ctx->notif.vm_pending &= ~new_bitmap;
+        if ( !(dst_ctx->notif.vm_pending || dst_ctx->notif.hyp_pending) )
+            dst_ctx->notif.notif_irq_raised = false;
+        spin_unlock(&dst_ctx->notif.notif_lock);
+        ret = FFA_RET_DENIED;
+    }
+
+    rcu_unlock_domain(dst_d);
+
+    return ret;
+}
+
 int32_t ffa_handle_notification_bind(struct cpu_user_regs *regs)
 {
     struct domain *d = current->domain;
@@ -285,6 +359,8 @@ void ffa_handle_notification_get(struct cpu_user_regs *regs)
 
     if ( IS_ENABLED(CONFIG_FFA_VM_TO_VM) )
     {
+        bool pending;
+
         spin_lock(&ctx->notif.notif_lock);
 
         if ( (flags & FFA_NOTIF_FLAG_BITMAP_HYP) && ctx->notif.hyp_pending )
@@ -293,6 +369,18 @@ void ffa_handle_notification_get(struct cpu_user_regs *regs)
             ctx->notif.hyp_pending = 0;
         }
 
+        if ( (flags & FFA_NOTIF_FLAG_BITMAP_VM) && ctx->notif.vm_pending )
+        {
+            w4 = (uint32_t)(ctx->notif.vm_pending & GENMASK(31, 0));
+            w5 = (uint32_t)((ctx->notif.vm_pending >> 32) & GENMASK(31, 0));
+            ctx->notif.vm_pending = 0;
+        }
+
+        pending = (ctx->notif.hyp_pending != 0) ||
+                  (ctx->notif.vm_pending != 0);
+        if ( !pending )
+            ctx->notif.notif_irq_raised = false;
+
         spin_unlock(&ctx->notif.notif_lock);
     }
 
@@ -318,9 +406,17 @@ int32_t ffa_handle_notification_set(struct cpu_user_regs *regs)
     if ( flags )
         return FFA_RET_INVALID_PARAMETERS;
 
-    if ( FFA_ID_IS_SECURE(dest_id) && fw_notif_enabled )
-        return ffa_simple_call(FFA_NOTIFICATION_SET, src_dst, flags, bitmap_lo,
-                               bitmap_hi);
+    if ( FFA_ID_IS_SECURE(dest_id) )
+    {
+        if ( fw_notif_enabled )
+            return ffa_simple_call(FFA_NOTIFICATION_SET, src_dst, flags,
+                                   bitmap_lo, bitmap_hi);
+    }
+    else if ( IS_ENABLED(CONFIG_FFA_VM_TO_VM) )
+    {
+        return notification_set_vm(dest_id, caller_id, flags,
+                                   ((uint64_t)bitmap_hi << 32) | bitmap_lo);
+    }
 
     return FFA_RET_NOT_SUPPORTED;
 }
@@ -330,6 +426,7 @@ void ffa_raise_rx_buffer_full(struct domain *d)
 {
     struct ffa_ctx *ctx = d->arch.tee;
     uint32_t prev_bitmap;
+    bool inject = false;
 
     if ( !ctx )
         return;
@@ -337,10 +434,23 @@ void ffa_raise_rx_buffer_full(struct domain *d)
     spin_lock(&ctx->notif.notif_lock);
     prev_bitmap = ctx->notif.hyp_pending;
     ctx->notif.hyp_pending |= FFA_NOTIF_RX_BUFFER_FULL;
+    if ( !ctx->notif.notif_irq_raised &&
+         (ctx->notif.vm_pending || ctx->notif.hyp_pending) )
+    {
+        ctx->notif.notif_irq_raised = true;
+        inject = true;
+    }
     spin_unlock(&ctx->notif.notif_lock);
 
-    if ( !(prev_bitmap & FFA_NOTIF_RX_BUFFER_FULL) )
-        inject_notif_pending(d);
+    if ( inject && !(prev_bitmap & FFA_NOTIF_RX_BUFFER_FULL) &&
+         !inject_notif_pending(d) )
+    {
+        spin_lock(&ctx->notif.notif_lock);
+        ctx->notif.hyp_pending &= ~FFA_NOTIF_RX_BUFFER_FULL;
+        if ( !(ctx->notif.vm_pending || ctx->notif.hyp_pending) )
+            ctx->notif.notif_irq_raised = false;
+        spin_unlock(&ctx->notif.notif_lock);
+    }
 }
 #endif
 
@@ -572,6 +682,7 @@ int ffa_notif_domain_init(struct domain *d)
     spin_lock_init(&ctx->notif.notif_lock);
     ctx->notif.secure_pending = false;
     ctx->notif.vm_pending = 0;
+    ctx->notif.notif_irq_raised = false;
     for ( i = 0; i < FFA_NUM_VM_NOTIF; i++ )
         ctx->notif.vm_bind[i] = 0;
     ctx->notif.hyp_pending = 0;
@@ -594,6 +705,7 @@ void ffa_notif_domain_destroy(struct domain *d)
     spin_lock(&ctx->notif.notif_lock);
     ctx->notif.secure_pending = false;
     ctx->notif.vm_pending = 0;
+    ctx->notif.notif_irq_raised = false;
     for ( i = 0; i < FFA_NUM_VM_NOTIF; i++ )
         ctx->notif.vm_bind[i] = 0;
     ctx->notif.hyp_pending = 0;
diff --git a/xen/arch/arm/tee/ffa_private.h b/xen/arch/arm/tee/ffa_private.h
index 6d83afb3d00a..5bb19bd11dd0 100644
--- a/xen/arch/arm/tee/ffa_private.h
+++ b/xen/arch/arm/tee/ffa_private.h
@@ -344,13 +344,17 @@ struct ffa_ctx_notif {
     uint64_t vm_pending;
 
     /*
-     * Source endpoint bound to each VM notification ID (0 means unbound).
+     * Tracks whether an NPI has been raised for local pending notifications.
+     * Protected by notif_lock.
      */
-    uint16_t vm_bind[FFA_NUM_VM_NOTIF];
+    bool notif_irq_raised;
 
     /*
-     * Lock protecting the hypervisor-managed notification state.
+     * Source endpoint bound to each VM notification ID (0 means unbound).
      */
+    uint16_t vm_bind[FFA_NUM_VM_NOTIF];
+
+    /* Lock protecting local notification state. */
     spinlock_t notif_lock;
 
     /*
@@ -493,6 +497,7 @@ void ffa_notif_init(void);
 void ffa_notif_init_interrupt(void);
 int ffa_notif_domain_init(struct domain *d);
 void ffa_notif_domain_destroy(struct domain *d);
+bool ffa_notif_fw_enabled(void);
 
 int32_t ffa_handle_notification_bind(struct cpu_user_regs *regs);
 int32_t ffa_handle_notification_unbind(struct cpu_user_regs *regs);
-- 
2.53.0



From xen-devel-bounces@lists.xenproject.org Fri Apr 17 13:48:07 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Fri, 17 Apr 2026 13:48:07 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1284370.1566176 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wDjYA-0000jx-Qg; Fri, 17 Apr 2026 13:48:02 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1284370.1566176; Fri, 17 Apr 2026 13: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 1wDjYA-0000jq-Mk; Fri, 17 Apr 2026 13:48:02 +0000
Received: by outflank-mailman (input) for mailman id 1284370;
 Fri, 17 Apr 2026 13:48:01 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92) id 1wDjY9-0000jk-FW
 for xen-devel@lists.xenproject.org; Fri, 17 Apr 2026 13:48:01 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wDjY8-0051Ce-G4
 for xen-devel@lists.xenproject.org; Fri, 17 Apr 2026 15:48:00 +0200
Received: from [10.42.69.7] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <oleksii.kurochko@gmail.com>)
 id 69e239ef-e002-0a2a0a5209dd-0a2a4507a2a0-46
 for <xen-devel@lists.xenproject.org>; Fri, 17 Apr 2026 15:48:00 +0200
Received: from [209.85.128.46] (helo=mail-wm1-f46.google.com)
 by tlsNG-ef75cf.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.1)
 (envelope-from <oleksii.kurochko@gmail.com>)
 id 69e23a10-229c-0a2a45070019-d155802ec95c-3
 for <xen-devel@lists.xenproject.org>; Fri, 17 Apr 2026 15:48:00 +0200
Received: by mail-wm1-f46.google.com with SMTP id
 5b1f17b1804b1-488b8bc6bc9so5022825e9.3
 for <xen-devel@lists.xenproject.org>; Fri, 17 Apr 2026 06:48:00 -0700 (PDT)
Received: from [192.168.1.6] (user-109-243-69-121.play-internet.pl.
 [109.243.69.121]) by smtp.gmail.com with ESMTPSA id
 5b1f17b1804b1-488fbc92a9dsm26669985e9.1.2026.04.17.06.47.58
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Fri, 17 Apr 2026 06:47:59 -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=20251104 header.d=gmail.com header.i="@gmail.com" header.h="Content-Transfer-Encoding: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=20251104; t=1776433680; x=1777038480; darn=lists.xenproject.org;
        h=content-transfer-encoding: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;
        bh=Aa1LWwdxzqYrVnza1lGExQ9a9dICBpPyuXLYZjCE2U4=;
        b=SESmSKgUWmB/Lz+hC8QXxqI+WTJvcqJk3hNmpa+6iHOMBxbH8bcvo7ox237N4PMMuq
         RAedebUDyyhgdYDYPlOKZ3aOlkEFTVG4pUDltH6a+OAFRdMLf816VfoooU96IAk/yYZs
         Lbv6Iyl4OAy/Z2beILrgPoNaD+rKia3MlOqpZP7F50iObUw1arnx8/SbaVn1kK7bDRnB
         x+O1HSAiMJinx5imZl+UvGpm5OY22Mm3uELOQGiUo+cENIWge8MMUm9i2IAAnrlHssHD
         E5q87ZtZqwCedJOCkuPE+azpKoro7IzzNgTgNLTntHEa0xtZIM3P90wCPTBYH8jxMN/w
         ERhg==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20251104; t=1776433680; x=1777038480;
        h=content-transfer-encoding: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;
        bh=Aa1LWwdxzqYrVnza1lGExQ9a9dICBpPyuXLYZjCE2U4=;
        b=QrPn5AW2ib2Ag06bBlIpAqq/8nkeO+lvxHftFe1jZG/PSyfTnbG9sp/Iw86IAMWbPA
         4rgU3VDOln6zb6stuChrtW7Z6DBYLmJhh6oJpy7SJkp2XkXaZftmwUNqFwmPjikVo9Ug
         E6NSD+lzBX6MouxBFjcoRUBhdWjFEFCIKx1mDQvGvjyrP2OwZ4LmbADWsMCRDPGWGnDE
         052+5KHrjZDLi2Zh6ZXB4f5g9xUYvRbkomywZVJ+A7iQaQxRaWGoBGuy6hmddZYvA8F/
         o2O2kKe6tOwZ5kpgueU4w9nYK6lA6ITIKjtiqRjfagMhrTLheHTDJRrgPI+DfYpvn8F9
         orqg==
X-Forwarded-Encrypted: i=1; AFNElJ+/o02V9+E46F51gyaycFC69NcMaNDX05vVALLSwq62Ww4JBgdRbeMdmMW7D4gKKnMSF0//oH/qLjU=@lists.xenproject.org
X-Gm-Message-State: AOJu0YxGiIsNu2V+3xztqtnNZfWRXodK1XDfpTGlwV0OBJI7OxY69zlR
	hDROivAHaABeIw8Kf8w4RfyKJIkkg14POo+zssIjKn7tJM8N27BCYwGn
X-Gm-Gg: AeBDies1eHSExaTH11gZQKxqgiCZz34TfT622OgChugzpM3j8LOJrNxidQeFa7jjjiS
	G9Q1hhEgXsFkH+66ImRXYfmSoGVi00T4X9sbAX0WLjRmHnB9IAysBEvTRftIE7yScqUxiTmqmCz
	ojpevuFj8Nj1/ZzO2wx+KAMg/uzzhhdygdc/6ayZRd2bTCT8gackWUi4bKcK1up6KA4H2ifgBfE
	FYZ3zOFwf7Ks7vwUMWNVWs56uBTvJYvm2/VR+145bnxh2BGGnC+jkCaAFNJklAyiwjTaN4yS4ts
	BUlnk0CW/ETpjKomYLc1NUfi85S/eZ0MCUFZnbrwfTtVulaz9vynW5W0iTbVV1VpJpyahgjIMZc
	kU/nnOTiFldgYuv4ECaNDQHiGsgKRBV+fLf8wSvCEn+C9Q0GYo+w6FwgE/RkP9SLsL6u1powzsQ
	k2njNpR4pGezCoysBwiIFCnTpXFRyW7sL8CSTxdfbYd0V2lJ74YoNE4fa0Jx/a6PQNK905ZekFG
	j0sfjLdY/u5TO5bjfC5uNgi
X-Received: by 2002:a05:600c:4ecf:b0:488:caed:5cc7 with SMTP id 5b1f17b1804b1-488fb76fddcmr42514015e9.15.1776433679570;
        Fri, 17 Apr 2026 06:47:59 -0700 (PDT)
Message-ID: <9bee01f5-8275-4d8e-b217-1b2d2f8fa2e8@gmail.com>
Date: Fri, 17 Apr 2026 15:47:58 +0200
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH v1 14/27] xen/riscv: introduce per-vCPU IMSIC state
To: Jan Beulich <jbeulich@suse.com>
Cc: Romain Caritey <Romain.Caritey@microchip.com>,
 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.pau@citrix.com>,
 Stefano Stabellini <sstabellini@kernel.org>, xen-devel@lists.xenproject.org
References: <cover.1773157782.git.oleksii.kurochko@gmail.com>
 <8196fa8f000e384af697a44cb3d50ece966e82a7.1773157782.git.oleksii.kurochko@gmail.com>
 <1f5e262d-da1f-49a2-8e89-87fb714e51bf@suse.com>
 <2f555a8b-d058-41ca-80f8-ce3dc08edfbe@gmail.com>
 <bd50afd3-6399-4c6b-b05d-d86ee4b8643e@suse.com>
Content-Language: en-US
From: Oleksii Kurochko <oleksii.kurochko@gmail.com>
In-Reply-To: <bd50afd3-6399-4c6b-b05d-d86ee4b8643e@suse.com>
Content-Type: text/plain; charset=UTF-8; format=flowed
Content-Transfer-Encoding: 7bit
X-purgate-ID: tlsNG-ef75cf/1776433680-1585EC48-A9AFF383/10/73395122804
X-purgate-type: spam
X-purgate-size: 3202



On 4/16/26 2:31 PM, Jan Beulich wrote:
> On 14.04.2026 11:22, Oleksii Kurochko wrote:
>> On 4/2/26 1:31 PM, Jan Beulich wrote:
>>> On 10.03.2026 18:08, Oleksii Kurochko wrote:
>>>> --- a/xen/arch/riscv/imsic.c
>>>> +++ b/xen/arch/riscv/imsic.c
>>>> @@ -59,6 +59,29 @@ do {                            \
>>>>        csr_clear(CSR_SIREG, v);    \
>>>>    } while (0)
>>>>    
>>>> +unsigned int vcpu_guest_file_id(const struct vcpu *v)
>>>> +{
>>>> +    struct imsic_state *imsic_state = v->arch.imsic_state;
>>>> +    unsigned long flags;
>>>> +    unsigned int vsfile_id;
>>>> +
>>>> +    read_lock_irqsave(&imsic_state->vsfile_lock, flags);
>>>> +    vsfile_id = imsic_state->guest_file_id;
>>>> +    read_unlock_irqrestore(&imsic_state->vsfile_lock, flags);
>>>
>>> What purpose does this locking have? Already ...
>>>
>>>> +    return vsfile_id;
>>>
>>> ... here the value can be stale, if indeed there is a chance of races.
>>> Did you perhaps mean to use ACCESS_ONCE() here and where the value is
>>> set?
>>
>> ACCESS_ONCE() isn't guarantee only compiler re-ordering (as basically it
>> is just volatile-related stuff inisde the macros)?
>>
>> Generally, I think that that guest_file_id is needed to be updated only
>> during migration of vCPU from one pCPU to another and I expect that
>> during this migration vCPU isn't active, so no one will want to read
>> imsic_state->guest_file_id. But on the other hand, there is:
>>     bool imsic_has_interrupt(const struct vcpu *vcpu)
>>     {
>>     ...
>>       /*
>>        * The IMSIC SW-file directly injects interrupt via hvip so
>>        * only check for interrupt when IMSIC VS-file is being used.
>>        */
>>
>>       read_lock_irqsave(&imsic_state->vsfile_lock, flags);
>>       if ( imsic_state->vsfile_pcpu != NR_CPUS )
>>           ret = !!(csr_read(CSR_HGEIP) & BIT(imsic_state->guest_file_id,
>> UL));
>>       read_unlock_irqrestore(&imsic_state->vsfile_lock, flags);
>>     ...
>>     }
>> which I think could be called in parallel with with migration, so then
>> still lock are needed.
> 
> None of this addresses my pointing out that the returned value will be
> stale by the point the caller gets to look at it.

Yes, I agree that lock in vcpu_guest_file_id() is useless and it should 
be on the caller side and used for the whole IMSIC state access. But ...

> Which in turn raises
> said question about the use of a lock. If you read
> imsic_state->guest_file_id atomically (i.e. excluding tearing of reads),
> the value seen / used will be stale as with the lock in use. Unless of
> course there's yet another aspect hidden somewhere in what is not being
> explained.

... I am not sure that I get this part.

If I am somewhere in migration code where I took write lock to update 
imsic state (and of course ->guest_file_id as part of it) then if 
someone else in parallel calls imsic_has_interrupt() then it won't enter 
critical section where ->guest_file_id is trying to be read so no stale 
->guest_file_id will be read.

Then does it make sense to use ACCESS_ONCE() during read and write of
->guest_file_id in such use cases?

~ Oleksii


From xen-devel-bounces@lists.xenproject.org Fri Apr 17 13:50:50 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Fri, 17 Apr 2026 13:50:50 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1284384.1566185 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wDjaq-0002E7-6Y; Fri, 17 Apr 2026 13:50:48 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1284384.1566185; Fri, 17 Apr 2026 13:50: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 1wDjaq-0002E0-2q; Fri, 17 Apr 2026 13:50:48 +0000
Received: by outflank-mailman (input) for mailman id 1284384;
 Fri, 17 Apr 2026 13:50:46 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <jbeulich@suse.com>) id 1wDjao-0002Dr-Hk
 for xen-devel@lists.xenproject.org; Fri, 17 Apr 2026 13:50:46 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wDjan-0051ot-R4
 for xen-devel@lists.xenproject.org; Fri, 17 Apr 2026 15:50:45 +0200
Received: from [10.42.69.9] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <jbeulich@suse.com>)
 id 69e23a9d-5cb7-0a2a0a5109dd-0a2a450998da-46
 for <xen-devel@lists.xenproject.org>; Fri, 17 Apr 2026 15:50:45 +0200
Received: from [209.85.128.47] (helo=mail-wm1-f47.google.com)
 by tlsNG-bad1c0.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.1)
 (envelope-from <jbeulich@suse.com>)
 id 69e23ab5-2497-0a2a45090019-d155802fd0ff-3
 for <xen-devel@lists.xenproject.org>; Fri, 17 Apr 2026 15:50:45 +0200
Received: by mail-wm1-f47.google.com with SMTP id
 5b1f17b1804b1-488e1a8ac40so9890065e9.2
 for <xen-devel@lists.xenproject.org>; Fri, 17 Apr 2026 06:50:45 -0700 (PDT)
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-488fb7bd700sm17248485e9.31.2026.04.17.06.50.43
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Fri, 17 Apr 2026 06:50:44 -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=google header.d=suse.com header.i="@suse.com" header.h="Content-Transfer-Encoding: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=1776433845; x=1777038645; darn=lists.xenproject.org;
        h=content-transfer-encoding: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;
        bh=e7lK50eLkJkI4ytS7fXX1Y1dsUCtNwWnA1AZZjLuanQ=;
        b=FpkLlrfpNpkFco6hnov243zY7cNgnr8KI3fWKCgGPGqiBHbMueHo4MrMfoGrtlyS7f
         eoEmOXgP+C0sa5GbAqcR/bhCkFJPmytX2ljdjQnWxcRviBWolJ4OfCOpwV+M/x+HjEDl
         ZwRqdhCrKwbHUurR03PCX44Ke/1BTkooHyCibXQbsBOSPs0nvIo2wXbJIVigQtzu8og4
         eNvKC7ZY7xZDSpYwnOyXN6hi2/hxo56hL18rZwBUi27lVGt2fHdBFSB4+hPvcY72alaI
         vAe/pcxWal04VkvY1HH28hejgfPVPwzkFxwZ37D7f52hCHNnH+ZKrOKCI81AgNnP73fJ
         Op0w==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20251104; t=1776433845; x=1777038645;
        h=content-transfer-encoding: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;
        bh=e7lK50eLkJkI4ytS7fXX1Y1dsUCtNwWnA1AZZjLuanQ=;
        b=ogFvVW7FKCy6fosEWDyPyG9TsI/0EJRHKcD8YVQ1XJyklqfEGkUiQ8oITd6hglvrj2
         Yk5D6gEwc2dUJJ1NlcU+SSaRs/8EcYAkjZuoj3qDr/5BPGeLuxiaF9BV2p9tcCgx9B2Y
         TU6JJM2VOVPILSDSN9gvBilqsw8f9cGkCO0mP9xyU5ha7cfnPw4/sZSbBWDCtMMnsnnT
         SHGOJtlZC4ddKagRUkNu4ghNJUgattmgC5GhA6yMKnjCWrkGLF6eEMr0Lxp/Nzd9KMHy
         GcAv/uEWf/q1fkJQWho4Fa+J4qoRW4IoW7LLTDHCdT8QOEa0FRGA/hUjxQtImwSTOMwB
         o7Dg==
X-Forwarded-Encrypted: i=1; AFNElJ+DtX8lgs7zE6o93LIUmaQYg2JCo80t7ZIhlYS7ZF0RAshNXOnHZwfg7xJyxkXY7b44sZulbv1/Xc0=@lists.xenproject.org
X-Gm-Message-State: AOJu0YyQBRjmMa2gGh0xPCZyscNHlfE+AqnfgkzdPu9A0R01MMQzOQIi
	onYfe4ZQKukSPlM6H5HST18hs0kNWYm08ziLNI0kt42ioSasSVI6vc2MZPxTV9DHhQ==
X-Gm-Gg: AeBDievpKtEw03X4Dtxy7jZwFK7OEvLZUXDGS4nFoOhO3vVXlRkQW4U/RAJbvy4fVt7
	pDI2nmL7dr7XiVKOjH71laqmefPxj8uPTjUAytdh+JxSrOUPgw2cghG1RDAT2Rvq0Jc2oZjNVSO
	6EyyBJhvRnRFYtg4/wt+vneclYZ0qhyRXZV4wWy4f9v5LeBGK41ssyypZExUwMIC87torO6SmjL
	tD/N0ZR0MFBaUmjVUlRFl5LU0gT3NgpZYmBkZfvdWlx9RsTc/UeWT79Vm3LSpQbRleyQLDHugWO
	72tbGAwmXg+MnFFY55r0l303xcR12OFxZ8kJHzZRmwF/GEmUfoFBZM2xgdXPsG5HgjdTVOFUn2z
	WXwu3PDnmsXPVK0QPImr9i/N2+SzevM3gcJEYrfVCHOX7sLFeYNJmw9h1Wk7XOx+0X0vMsmnUx2
	L85n0l6T72/f+iNFtHygoAzUOAjzpdARHBxQyGPJrL5Hswt+egEWAc8nZuS5C/CsfD192wWOmmW
	9gmg++Lv3W73NCvZCg5z3Vm/K+5qk3NasPT
X-Received: by 2002:a05:600c:458c:b0:488:bf0c:a372 with SMTP id 5b1f17b1804b1-488fb79330emr38726845e9.31.1776433845035;
        Fri, 17 Apr 2026 06:50:45 -0700 (PDT)
Message-ID: <747744f8-44e8-4d87-871f-1c2f49a0fcc0@suse.com>
Date: Fri, 17 Apr 2026 15:50:42 +0200
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH v1 10/27] xen/riscv: generate IMSIC DT node for guest
 domains
To: Oleksii Kurochko <oleksii.kurochko@gmail.com>
Cc: Romain Caritey <Romain.Caritey@microchip.com>,
 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.pau@citrix.com>,
 Stefano Stabellini <sstabellini@kernel.org>, xen-devel@lists.xenproject.org
References: <cover.1773157782.git.oleksii.kurochko@gmail.com>
 <8154eae081d14da89f27bad581270cc5bba6ccfc.1773157782.git.oleksii.kurochko@gmail.com>
 <93e8407e-cff0-42cc-8cfd-2d82f536a886@suse.com>
 <b2c8e859-a91a-469f-b674-0942d240f0d9@gmail.com>
 <953a4d7a-95a0-4a11-b236-efdf21eb125c@suse.com>
 <ca52ad3b-d14d-478b-bf6d-2835f79fa257@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: <ca52ad3b-d14d-478b-bf6d-2835f79fa257@gmail.com>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 7bit
X-purgate-ID: tlsNG-bad1c0/1776433845-410B3A53-9299B9C3/0/0
X-purgate-type: clean
X-purgate-size: 3405

On 17.04.2026 10:10, Oleksii Kurochko wrote:
> On 4/16/26 1:42 PM, Jan Beulich wrote:
>> On 10.04.2026 17:40, Oleksii Kurochko wrote:
>>> On 4/1/26 5:05 PM, Jan Beulich wrote:
>>>> On 10.03.2026 18:08, Oleksii Kurochko wrote:
>>>>> Guests using the IMSIC interrupt controller require a corresponding
>>>>> Device Tree description. Add support for generating an IMSIC node when
>>>>> building the guest DT.
>>>>>
>>>>> Keep a reference to the host IMSIC DT node and reuse its compatible
>>>>> property while constructing the guest-visible node.
>>>>
>>>> Again raises a migration concern. Presumably a guest would then be able
>>>> to migrate only to other hosts with the same compatible property.
>>>
>>> Right, but I don't think we can do too much and it is the simplest
>>> approach just to migrate to hosts with the same compatible property.
>>>
>>> If you concern is about DTS property then for IMSIC it will be always
>>> riscv,imsics according to the RISC-V DT spec. (IIRC, the only other
>>> option could be qemu,riscv). Actually, I can just hard code
>>> "riscv,imsic" explicitly instead of re-using of host name.
>>>
>>> If your concern is that we will migrate to a host which doesn't support
>>> IMSIC at all then we should or (a) don't migrate to such host or (b)
>>> provide an emulation of IMSIC. And option (b) would be terrible from at
>>> least performance point of view.
>>
>> That would all be only a secondary concern - in an IMSIC is needed right
>> now, so be it. My primary concern is with inheriting the host IMSIC's
>> properties.
> Could we do really something better?
> 
> At the moment, the following properties are inhereted:
> node name -> not an issue at all, it is just a name of the node and 
> generally doesn't matter what it is in the matter of DTB generation as 
> phandle number of this node will be used as pointer to this node, not 
> the name. If it would be better I can hard code just "imsic".
> 
> compatible -> also, not a big issue. According to current DT RISC-V 
> bindings it could be just "riscv,imsic". But then I have the question 
> what if one day someone will come up with own implementation of IMSIC 
> then "riscv,own-imsic" will be in host DTB and so I expect that guest 
> DTB should have it as this h/w expects to use specifically OWN-IMSIC 
> driver. So it seems okay to copy compatible from host DTB. Yes, if 
> migration will happen where just "riscv,imsic" is supported then it 
> can't be easily migrated to such h/w and its okay. But generally I 
> expect that compatible will always riscv,imsic.
> 
> riscv,num-ids -> generally, it could be any number from [63, 2047], but 
> it seems like there is no any sense if put a value bigger then 
> guest-num-ids=min(riscv,num-ids, riscv,num-guest-ids) for guest as h/w 
> can't support more then that. At the same time I don't see too much 
> sense to tell a guest that it supports less then guest-num-ids. What is 
> the problem to give a guest a maximum that IMSIC could provide? With 
> migration, of course, it will be an issue if new host will support 
> different number of riscv,num-ids but I don't know what we can do better 
> then just avoid migration to such hosts if old-num-ids > new-num-ids 
> without significant performance drop.

This is exactly why an admin may want to limit what a guest gets to
see / use.

Jan


From xen-devel-bounces@lists.xenproject.org Fri Apr 17 13:53:54 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Fri, 17 Apr 2026 13:53:54 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1284395.1566194 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wDjdl-0002mK-Jb; Fri, 17 Apr 2026 13:53:49 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1284395.1566194; Fri, 17 Apr 2026 13:53: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 1wDjdl-0002mD-Gc; Fri, 17 Apr 2026 13:53:49 +0000
Received: by outflank-mailman (input) for mailman id 1284395;
 Fri, 17 Apr 2026 13:53:48 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <jbeulich@suse.com>) id 1wDjdk-0002m7-Nr
 for xen-devel@lists.xenproject.org; Fri, 17 Apr 2026 13:53:48 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wDjdk-002jIQ-4l
 for xen-devel@lists.xenproject.org; Fri, 17 Apr 2026 15:53:48 +0200
Received: from [10.42.69.10] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <jbeulich@suse.com>)
 id 69e23b54-5cb7-0a2a0a5109dd-0a2a450ac424-20
 for <xen-devel@lists.xenproject.org>; Fri, 17 Apr 2026 15:53:48 +0200
Received: from [209.85.128.45] (helo=mail-wm1-f45.google.com)
 by tlsNG-4011c0.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.1)
 (envelope-from <jbeulich@suse.com>)
 id 69e23b6b-56b3-0a2a450a0019-d155802daca6-3
 for <xen-devel@lists.xenproject.org>; Fri, 17 Apr 2026 15:53:48 +0200
Received: by mail-wm1-f45.google.com with SMTP id
 5b1f17b1804b1-488a14c31eeso5296605e9.0
 for <xen-devel@lists.xenproject.org>; Fri, 17 Apr 2026 06:53:48 -0700 (PDT)
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-488fc1393f5sm43910975e9.9.2026.04.17.06.53.46
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Fri, 17 Apr 2026 06:53:46 -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=google header.d=suse.com header.i="@suse.com" header.h="Content-Transfer-Encoding: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=1776434027; x=1777038827; darn=lists.xenproject.org;
        h=content-transfer-encoding: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;
        bh=ayn6K7XeJTYv393CVAVoJQuCEE6s0mu1/Q+1Y2TyLQY=;
        b=ayOd1KWjB6C+L3I+5SiqegrvVwE0M+2XpXX7XYcKTbu4WiOZgK8RUtX7RFT1JKjU5T
         mcEc8jiqNAg7LXgb7r6oPzw8jG0oFPlOETPtCIMzBtmcIeXEQBw6JCuoGAE2pVWYWiDs
         Lg4pXFHiNBbroov30FlEgFt1acmJaxEeS7g4I42gdY0Dz+TIHaOUWVoIdR2mdzSop3sj
         a6WyQXhQWjtO9eCnVotqjnxvzg+CbcMRhD7vG+aQOFP4js5vCU8HfnzXCHM1kn6cAOPY
         R0T7EKeXxSE59Vq/CcHtRfzr0/3rMIqMeDBdfvOhhnyAE3N3254/AYensI12QCV0ZdO5
         Vp2g==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20251104; t=1776434027; x=1777038827;
        h=content-transfer-encoding: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;
        bh=ayn6K7XeJTYv393CVAVoJQuCEE6s0mu1/Q+1Y2TyLQY=;
        b=Sa3X+KCw3EnbafLlCHQlUqQcS7xZteEIj9NUv1UfeEPwOeoMTlXx5Ps++aJOvPYhtF
         +IiIsYsz+k3/G5MEW/jpJCq4K0kHrN80t8Jw4E1Kas2b2V1jT4gv6/HctPux868A8TSb
         0ne0cHKZu68oHFV7ieOukfYymlaCrhmV1ogjBkqNdtGyN8VOLL0JvQOIeSMGqYHDXN+Q
         6T+h1gws/ayEO76Vxjr4XB9XINV31kmhixTnbM6zyMmd58FFfxdOJhuPPqmid95X7apI
         AP+6DBCa/5sqhjQ6he8KEsWhK8IDQ4RyY6gR1mos5HGc5uwdmPx+NLYLI1B99RaS9rnC
         VBDg==
X-Forwarded-Encrypted: i=1; AFNElJ+cMSbx4PmCNWfimnDkHb2K4nRwTiJpv9JE2K6GLKQqvPQXs7rKBgvVLOJgzgaHMnH4ZKLR7sasCP0=@lists.xenproject.org
X-Gm-Message-State: AOJu0YygeL419dT6abIT06DbAwOL1dPMkN3abLMfnLaRBvH/fnHAK9ww
	FtjQjvRdJt32+v89IhwEGlIP1YweBUJYCIQHLFj760+EYZsLTUVL3ZRf4MMaSAYG1w==
X-Gm-Gg: AeBDiettSWvYJ/ndKnCu2Q1TF4iYLsjsIWPki8DTZCb82AmzGqqhGRDJtKT2ED/rOde
	/MCt2OywXpYn33RWgCnuTGs/psIM0XSp0Eqobs+1ynuGitjv7pszdOfe4OW1/14gaMIzyDQyPXj
	J4w9QldzYUvRQi2vzHlZLAvy0saQlPQztdlMHDr/GKPU6V83bd8GsN85nEgkaXF4FHNXY6EJ2x/
	V7441chkX9k64BpGs4AWMvdqfqkJVdqWIA8rzajN94UvAylniSYR7eX6TV18rX6k3tQFBPbEmfJ
	+5CxvIVMuyYm1z1Ot2gu8vkYxLCQkwZ36oYZXHoizTmvTcz2u1u5t9nw0KO6/6MC3XYw7HUR0r/
	XPwcJe101PVl+/Gie6VsTjppHAvWApBn+4UEWBQwdwVYg6dNlO75N0eHq/5/Qb4rCjNNGO0bHoe
	8Y5lCsYhvZzvDvniASoQ0x4tfJd+t7NzdTa/BRR43w+ugo7VXwZYsBibRh16pXem3HcYGePNMcn
	DWRM9LQnQnlG8yKU3fcnhRNFQ==
X-Received: by 2002:a05:600d:b:b0:485:2a85:e5ec with SMTP id 5b1f17b1804b1-488fb73b424mr36706855e9.2.1776434027535;
        Fri, 17 Apr 2026 06:53:47 -0700 (PDT)
Message-ID: <a578a32e-4cf3-4c61-b834-da2831c9a9bd@suse.com>
Date: Fri, 17 Apr 2026 15:53:45 +0200
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH v1 11/27] xen/riscv: create APLIC DT node for guest
 domains
To: Oleksii Kurochko <oleksii.kurochko@gmail.com>
Cc: Romain Caritey <Romain.Caritey@microchip.com>,
 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.pau@citrix.com>,
 Stefano Stabellini <sstabellini@kernel.org>, xen-devel@lists.xenproject.org
References: <cover.1773157782.git.oleksii.kurochko@gmail.com>
 <462b5f7dbe4e5084a35fb869b59327c6c92d1fbf.1773157782.git.oleksii.kurochko@gmail.com>
 <362d1e3a-409c-40ab-8d2c-36dc30a04b88@suse.com>
 <9fd04b0f-3b04-4f1e-ac63-de0fca57d466@gmail.com>
 <7d022fea-0836-43b0-983d-5f7cb26a2e62@suse.com>
 <ac19fdeb-90fa-42bd-9041-7c2aaa5346d4@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: <ac19fdeb-90fa-42bd-9041-7c2aaa5346d4@gmail.com>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
X-purgate-ID: tlsNG-4011c0/1776434028-815848B7-CE70404B/0/0
X-purgate-type: clean
X-purgate-size: 3812

On 17.04.2026 11:01, Oleksii Kurochko wrote:
> 
> 
> On 4/16/26 1:49 PM, Jan Beulich wrote:
>> On 13.04.2026 10:43, Oleksii Kurochko wrote:
>>> On 4/1/26 5:16 PM, Jan Beulich wrote:
>>>> On 10.03.2026 18:08, Oleksii Kurochko wrote:
>>>>> +    res = fdt_property(fdt, "#interrupt-cells", data, len);
>>>>> +    if ( res )
>>>>> +        return res;
>>>>
>>>> So host properties are again directly handed through to the guest?
>>>
>>> I am not sure that it can be different from what host has.
>>>
>>>> Shouldn't the number of interrupts (aiui that's the "number of cells"
>>>> here) a guest gets be independent from the host it runs one?
>>>
>>> The #interrupt-cells property specifies how many 32-bit values (cells)
>>> are used to encode a single interrupt specifier when referencing this
>>> interrupt controller from another device node.
>>> In this APLIC schema, it's fixed at const: 2, meaning every interrupt
>>> reference requires exactly two cells — typically:
>>>
>>> Cell 1 — the interrupt source number (which of the riscv,num-sources
>>> wired inputs)
>>> Cell 2 — the interrupt type/trigger flags (e.g. edge vs. level, active
>>> high/low)
>>
>> So what if #interrupt-cells is 3 in the DT Xen is handed? If Xen can
>> cope, should that value really also be handed through to guests?
> 
> I would say that it depends on what cell 3 will represent. But likely it 
> will be needed to hand it to the guest.
> 
>>
>>>>> +    regs = dt_get_property(aplic_node, "reg", &len);
>>>>> +    if ( !regs )
>>>>> +    {
>>>>> +        printk("%s: Can't find 'reg' property\n", aplic_node->full_name);
>>>>> +        return -FDT_ERR_XEN(ENOENT);
>>>>> +    }
>>>>> +
>>>>> +    res = fdt_property(fdt, "reg", regs, len);
>>>>> +    if ( res )
>>>>> +        return res;
>>>>> +
>>>>> +    data = dt_get_property(aplic_node, "riscv,num-sources", &len);
>>>>> +    if ( !data )
>>>>> +    {
>>>>> +        printk("%s: Can't find 'riscv,num-sources' property\n",
>>>>> +                aplic_node->full_name);
>>>>> +        return -FDT_ERR_XEN(ENOENT);
>>>>> +    }
>>>>> +
>>>>> +    res = fdt_property(fdt, "riscv,num-sources", data, len);
>>>>> +    if ( res )
>>>>> +        return res;
>>>>
>>>> Or maybe this is the number of interrupts?
>>>
>>> This is the total count of hardware interrupt lines wired into this
>>> APLIC domain.
>>>
>>> It could be independent from the host it runs one but looking at the
>>> possible range [1,1023] for this property if we will put for a guest
>>> lets say 22 but new host support only 20 when we will be in a trouble
>>> anyway.
>>
>> Correct. But if you had some hosts with 1024 and some with 256, how
>> would you bring up a guest on the former to later be able to migrate
>> it to one of the latter when guests inherit the count from the host?
> 
> It will be impossible to do that without emulation,

It's not quite clear to me why this would be.

> so I expect it will 
> be easier to simply forbid migration to such a host.
> 
> Basically, it is just a game of numbers. We could try to estimate how 
> many interrupts are needed for the guest, or for simplicity use some 
> hard-coded number (say 128 or 256, something “pretty small”). Will it 
> resolve the migration issue? Partially yes, but not fully, as there 
> could always be cases where the new host’s number of sources is lower 
> than our hard-coded “small guest value.” So having a smaller value will 
> likely help on average and will allow to support more h/w migration to 
> which could happen, but the migration issue will still be present.

An admin, knowing the capabilities of all hosts in a pool, can suitably
limit guests intended to move among hosts. No migration issue at all.

Jan


From xen-devel-bounces@lists.xenproject.org Fri Apr 17 14:02:02 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Fri, 17 Apr 2026 14:02:02 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1284407.1566202 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wDjlS-0004nl-Ce; Fri, 17 Apr 2026 14:01:46 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1284407.1566202; Fri, 17 Apr 2026 14: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 1wDjlS-0004ne-A3; Fri, 17 Apr 2026 14:01:46 +0000
Received: by outflank-mailman (input) for mailman id 1284407;
 Fri, 17 Apr 2026 14:01:45 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92) id 1wDjlR-0004nY-EX
 for xen-devel@lists.xenproject.org; Fri, 17 Apr 2026 14:01:45 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wDjlN-0053g5-O5
 for xen-devel@lists.xenproject.org; Fri, 17 Apr 2026 16:01:41 +0200
Received: from [10.42.69.10] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <oleksii.kurochko@gmail.com>)
 id 69e23d42-5cb7-0a2a0a5109dd-0a2a450ae8d2-8
 for <xen-devel@lists.xenproject.org>; Fri, 17 Apr 2026 16:01:41 +0200
Received: from [209.85.208.182] (helo=mail-lj1-f182.google.com)
 by tlsNG-4011c0.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.1)
 (envelope-from <oleksii.kurochko@gmail.com>)
 id 69e23d45-56b3-0a2a450a0019-d155d0b6c85e-3
 for <xen-devel@lists.xenproject.org>; Fri, 17 Apr 2026 16:01:41 +0200
Received: by mail-lj1-f182.google.com with SMTP id
 38308e7fff4ca-38e936caafeso7222371fa.2
 for <xen-devel@lists.xenproject.org>; Fri, 17 Apr 2026 07:01:41 -0700 (PDT)
Received: from [192.168.1.6] (user-109-243-69-121.play-internet.pl.
 [109.243.69.121]) by smtp.gmail.com with ESMTPSA id
 2adb3069b0e04-5a4185ad0fdsm429034e87.13.2026.04.17.07.01.38
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Fri, 17 Apr 2026 07:01:39 -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=20251104 header.d=gmail.com header.i="@gmail.com" header.h="Content-Transfer-Encoding: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=20251104; t=1776434501; x=1777039301; darn=lists.xenproject.org;
        h=content-transfer-encoding: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;
        bh=DkB1ZnGOLjWczTds94+U6czeecT8tjbLUdOEwf1nF+I=;
        b=VnMVFSioCVD2l9wHFD648zdH2ASszqjvCv+g9VzW6WA/CZmDWoUtAVfkcIvBcvxbYQ
         s1j+LBx6ufEaUWBtU10cM8AyiJNAOMXsZxWkKKMBSfP7+mHWCzQvu3CWkhtLOq3JTzW6
         sWCs/jtigqU53QhYhE7Vb5oNOKgs2K6l6ikA20UoCxnoYe9K+ELXleW1cvsrNqDCiq/W
         yhlWgnA2ERUs8avYnWlzohO8ri69S1QfCo12Po1KQ23/zP2oOXun6MgrxkMNa9rYoCJM
         6xr147x+sQUo4gWZhZkMfgNugCaebG59n8Ng/vi2GMt13HrMcLCbZf67jm+6ICqnhAWd
         NFvA==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20251104; t=1776434501; x=1777039301;
        h=content-transfer-encoding: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;
        bh=DkB1ZnGOLjWczTds94+U6czeecT8tjbLUdOEwf1nF+I=;
        b=fscUa50KGQFgWRI5dQQGzTJZ+fQQRA6oowM5QxTkajDmjF5RfZTJFQpecyVr4a/w4l
         JzJxuqvYBDw/X2Oz2laIXFSD0tyGqFr9YLj2HM2SimLMcgzUwrWu1+kaHzbOEM37mRtJ
         FoQua0jspucZ/Nqk8qs2Uu3O3az3yYJQPY5dhR2pVo05Pexd0vxBPgt4iIBJxh1fo/l/
         ovlhoHPLgGCtpC07/ci8d/IE0Ok+B4gwdSti436kf9v5EcKcHmNFWAsLgSFDiEVlr1ll
         3mL9+U/MhwvqTm9S8MYmIz8ypxPh3HJZYh2zNLZK1r6Hz7jFb2cfWnlM+rO9+rcWGeT4
         VnDA==
X-Forwarded-Encrypted: i=1; AFNElJ9mgx3FrLbCrjclvFC9OUKMYLaybqxoDwC0EGzvYcn293kdE3L03MFgU+1+7ECgnpxu/cbYQL8AxSM=@lists.xenproject.org
X-Gm-Message-State: AOJu0YxfianL4IavsTGHwJhmyaYduVhgcb9Nu5C5jbuIM6d/XWGADfOO
	YEz+iQcE5RTKnStV8P+83bZHwksk571eieqCf/wRIX3bjoA9iefPIb/Y
X-Gm-Gg: AeBDieu0DYXXjWuGM23gUrP2hUjPVu1lYTBgofdCqz2E/4lzd9OyMy0cK367ABI5e8N
	q3WXFwO6ylhP+pj4kDZndsLhYiCcy5rUv+eNC+8dhG3CHNapeVB+Q9STty5LSVSwyuUvQzCWVt/
	fem23TbsLqbV8wJ7GH0H3xlS8pIkDVDIi/H42GsUhlZkE2d15KnpZlwbDcLO16bYBfHjZoj0Hhf
	1yXSBijStWttQtul3cJcKPvXRN0PzLYdtb/U5oCo2ufvrbmjfdd1tIQdjt3peLSBFpua9XYFCfm
	v8TGA9Nvj/AG0GcnDK60V74jnFW2CVBeZQgQ1DKNUNwZZjaypb//MjOMhjMShHIgJ/geUJ4Rbkb
	mvregK2rFJZIt5y2fWKcwC4MfQswuggRL6ATsh+PWhL+WJbmDzeAOujVWDdQONiLXQmPYbchvch
	DJN6s8DRBysn9DGVTdl4O1Fs10oykyjP0ZVyeqEktsS+sFVg+NZ94EIGfpvLARwCBbD6yN0pepP
	Noz0xsvFNSkERQSX5AjjMfl
X-Received: by 2002:a05:6512:1592:b0:5a4:4cc:7a52 with SMTP id 2adb3069b0e04-5a4172ca4ddmr1085423e87.17.1776434499926;
        Fri, 17 Apr 2026 07:01:39 -0700 (PDT)
Message-ID: <a46589de-e2d8-42bc-bdf9-8ac4fcbdcd7b@gmail.com>
Date: Fri, 17 Apr 2026 16:01:38 +0200
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH v1 10/27] xen/riscv: generate IMSIC DT node for guest
 domains
To: Jan Beulich <jbeulich@suse.com>
Cc: Romain Caritey <Romain.Caritey@microchip.com>,
 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.pau@citrix.com>,
 Stefano Stabellini <sstabellini@kernel.org>, xen-devel@lists.xenproject.org
References: <cover.1773157782.git.oleksii.kurochko@gmail.com>
 <8154eae081d14da89f27bad581270cc5bba6ccfc.1773157782.git.oleksii.kurochko@gmail.com>
 <93e8407e-cff0-42cc-8cfd-2d82f536a886@suse.com>
 <b2c8e859-a91a-469f-b674-0942d240f0d9@gmail.com>
 <953a4d7a-95a0-4a11-b236-efdf21eb125c@suse.com>
 <ca52ad3b-d14d-478b-bf6d-2835f79fa257@gmail.com>
 <747744f8-44e8-4d87-871f-1c2f49a0fcc0@suse.com>
Content-Language: en-US
From: Oleksii Kurochko <oleksii.kurochko@gmail.com>
In-Reply-To: <747744f8-44e8-4d87-871f-1c2f49a0fcc0@suse.com>
Content-Type: text/plain; charset=UTF-8; format=flowed
Content-Transfer-Encoding: 7bit
X-purgate-ID: tlsNG-4011c0/1776434501-47F798B7-5B5101C8/10/73395122804
X-purgate-type: spam
X-purgate-size: 4234



On 4/17/26 3:50 PM, Jan Beulich wrote:
> On 17.04.2026 10:10, Oleksii Kurochko wrote:
>> On 4/16/26 1:42 PM, Jan Beulich wrote:
>>> On 10.04.2026 17:40, Oleksii Kurochko wrote:
>>>> On 4/1/26 5:05 PM, Jan Beulich wrote:
>>>>> On 10.03.2026 18:08, Oleksii Kurochko wrote:
>>>>>> Guests using the IMSIC interrupt controller require a corresponding
>>>>>> Device Tree description. Add support for generating an IMSIC node when
>>>>>> building the guest DT.
>>>>>>
>>>>>> Keep a reference to the host IMSIC DT node and reuse its compatible
>>>>>> property while constructing the guest-visible node.
>>>>>
>>>>> Again raises a migration concern. Presumably a guest would then be able
>>>>> to migrate only to other hosts with the same compatible property.
>>>>
>>>> Right, but I don't think we can do too much and it is the simplest
>>>> approach just to migrate to hosts with the same compatible property.
>>>>
>>>> If you concern is about DTS property then for IMSIC it will be always
>>>> riscv,imsics according to the RISC-V DT spec. (IIRC, the only other
>>>> option could be qemu,riscv). Actually, I can just hard code
>>>> "riscv,imsic" explicitly instead of re-using of host name.
>>>>
>>>> If your concern is that we will migrate to a host which doesn't support
>>>> IMSIC at all then we should or (a) don't migrate to such host or (b)
>>>> provide an emulation of IMSIC. And option (b) would be terrible from at
>>>> least performance point of view.
>>>
>>> That would all be only a secondary concern - in an IMSIC is needed right
>>> now, so be it. My primary concern is with inheriting the host IMSIC's
>>> properties.
>> Could we do really something better?
>>
>> At the moment, the following properties are inhereted:
>> node name -> not an issue at all, it is just a name of the node and
>> generally doesn't matter what it is in the matter of DTB generation as
>> phandle number of this node will be used as pointer to this node, not
>> the name. If it would be better I can hard code just "imsic".
>>
>> compatible -> also, not a big issue. According to current DT RISC-V
>> bindings it could be just "riscv,imsic". But then I have the question
>> what if one day someone will come up with own implementation of IMSIC
>> then "riscv,own-imsic" will be in host DTB and so I expect that guest
>> DTB should have it as this h/w expects to use specifically OWN-IMSIC
>> driver. So it seems okay to copy compatible from host DTB. Yes, if
>> migration will happen where just "riscv,imsic" is supported then it
>> can't be easily migrated to such h/w and its okay. But generally I
>> expect that compatible will always riscv,imsic.
>>
>> riscv,num-ids -> generally, it could be any number from [63, 2047], but
>> it seems like there is no any sense if put a value bigger then
>> guest-num-ids=min(riscv,num-ids, riscv,num-guest-ids) for guest as h/w
>> can't support more then that. At the same time I don't see too much
>> sense to tell a guest that it supports less then guest-num-ids. What is
>> the problem to give a guest a maximum that IMSIC could provide? With
>> migration, of course, it will be an issue if new host will support
>> different number of riscv,num-ids but I don't know what we can do better
>> then just avoid migration to such hosts if old-num-ids > new-num-ids
>> without significant performance drop.
> 
> This is exactly why an admin may want to limit what a guest gets to
> see / use.

Would it be better then provide a separate define for riscv, num-ids and 
use it here? Maybe here it makes sense to re-use already provided by DT 
binding property:
   riscv,num-guest-ids:
     $ref: /schemas/types.yaml#/definitions/uint32
     minimum: 63
     maximum: 2047
     description:
       Number of interrupt identities are supported by IMSIC guest 
interrupt
       file. When not specified it is assumed to be same as specified by the
       riscv,num-ids property.
And if riscv,num-guest-ids the use some predefined in define value?

Does it make sense then provide the similar defines for compatible and 
node name or for that properties it would be okay to re-use what host 
DTB IMSIC node provides?

~ Oleksii


From xen-devel-bounces@lists.xenproject.org Fri Apr 17 14:07:22 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Fri, 17 Apr 2026 14:07:22 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1284419.1566213 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wDjqn-0005OV-0I; Fri, 17 Apr 2026 14:07:17 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1284419.1566213; Fri, 17 Apr 2026 14:07: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 1wDjqm-0005OO-S0; Fri, 17 Apr 2026 14:07:16 +0000
Received: by outflank-mailman (input) for mailman id 1284419;
 Fri, 17 Apr 2026 14:07:15 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <jbeulich@suse.com>) id 1wDjql-0005NW-Nx
 for xen-devel@lists.xenproject.org; Fri, 17 Apr 2026 14:07:15 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wDjql-00DUuq-07
 for xen-devel@lists.xenproject.org; Fri, 17 Apr 2026 16:07:15 +0200
Received: from [10.42.69.3] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <jbeulich@suse.com>)
 id 69e23e8f-bab6-0a2a0a5309dd-0a2a4503da90-30
 for <xen-devel@lists.xenproject.org>; Fri, 17 Apr 2026 16:07:14 +0200
Received: from [209.85.221.45] (helo=mail-wr1-f45.google.com)
 by tlsNG-33051d.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.1)
 (envelope-from <jbeulich@suse.com>)
 id 69e23e92-672d-0a2a45030019-d155dd2db8a2-3
 for <xen-devel@lists.xenproject.org>; Fri, 17 Apr 2026 16:07:14 +0200
Received: by mail-wr1-f45.google.com with SMTP id
 ffacd0b85a97d-43d76dd4ee8so636988f8f.2
 for <xen-devel@lists.xenproject.org>; Fri, 17 Apr 2026 07:07:14 -0700 (PDT)
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-43fe4e3a7b4sm4684437f8f.22.2026.04.17.07.07.11
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Fri, 17 Apr 2026 07:07:13 -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=google header.d=suse.com header.i="@suse.com" header.h="Content-Transfer-Encoding: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=1776434834; x=1777039634; darn=lists.xenproject.org;
        h=content-transfer-encoding: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;
        bh=o62sIjnurrZPZ1zQSnb1b5ri/ZMZKs88sNx5pHNIScQ=;
        b=gaEjTFGk4WeNVeZchaSMuL8yzABkBYamssptTLSKHAlQIAfRS/YF9uzlqhqsm84+rj
         wpJ3Nfba75MSjt7bmKlhQ8mtVZ7OKhTCmNKcfIgbPOE70zbse+M1SecOJYvfqQ2rkRoK
         4fMNUiuVdpCDhxyeKBIddYExd5gbX+KHAzw5zVK7GFSy4AnHI7UhvfJ/rKA2IjtTOVHP
         6xxBQBBzfhLkcY+JvLoLpbNFAMy7+krBl3rlpT7AwYf/aEYFAHLB/4Dli7frgjm4Emu4
         u9B3mzNfTsheIdwDYh5/yl5n2xI7kVHPz4Xko3EPtqcBTFrTv2aFnCVPRs/nOjNaJoqH
         339Q==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20251104; t=1776434834; x=1777039634;
        h=content-transfer-encoding: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;
        bh=o62sIjnurrZPZ1zQSnb1b5ri/ZMZKs88sNx5pHNIScQ=;
        b=mlU1QIXkQ99x/myuxUgbTpFIgJof17/zgPTaUeGcxQOvxNxhw7q29TdNHveZ+ovaC4
         Nhimr+sTXSFvUofU5wOgx4Fjs2Bu2fiiYerGIeDygMb38eL82D1dv/gjLPh3F3d84FtI
         KHFZ3RqZ0KFWRUaZERkhq+SlLBVPwqlV+szTNrp6oWiN7GbUrMO9W1uL/dVxBgfeZID3
         SK4EaPwo45ItDtz9UQem9WRXnpPYLaXf5TfF0wAxSFXVyEQkXCxgA9bWu/TI4WGePHaD
         xKWtPkOLN2emuPVdr4GeDBqDWoFXRkEVcEYGrE7auganL+ucS0f/5AD9W720veL3EkPS
         ZITA==
X-Forwarded-Encrypted: i=1; AFNElJ+0oQx/amTr6o2zV85/pFrDoLM8DS1q8GVnx4C2bNbfYj6FOYl/NqIQSQZ+dT2/Hwbo8zUFuabHEDQ=@lists.xenproject.org
X-Gm-Message-State: AOJu0YwB2akb5+DtngQsvLid6qHfpHWlTSMA0o48b6ZcEQZvQY50gGAV
	wSosyczMxzEI0yxznhDxBuUVxwsyv7dA8WviIqMT5UIuW20BWNwoIQn+phqt1Fqtpw==
X-Gm-Gg: AeBDies2NtH10ceqiscJjSgdKZVU8D/t2Z9O3QWaNYS2pXZhL0RmjTs3r9i6GT+8hl0
	b8gyi6pGeu33GxrEgaTIsp/MB/3j3RwaAZzPVM4Fq7AqOE72SHxfmNHckRpDc8nHtbs0n9suPyL
	faETacub35CV5Vhr9pxeEC59dOYuQEUkt7BFwg+ss/cYZ0M/7reii6y7yTPVGFaMKZb2pEHG9x+
	aOonynKWskDqTGKtyM7yDHQW1dNfiUNvqsht1Caiypa1JMsZfN+2gU68nmQb9R/uFhBL4OC5ygo
	EFoD3x9mhrFrodNHm+FNMuqMEmvyaUInWovlirSjfPQ7QUA6VIppJY55OIxbjk4KAVhcFl8se0z
	/rgeIk/fzfdo/3FkbvDiC5fLDI3MhtgzwLdzroTGoOsrdkv7oRk0HAFcHLio3QJ/NrR0QrfwSwW
	gKe0Vu8idpxgnI0CK8Bjaptkz1NN1pX+BejEZft4gDH2750pBbTnNoEW1PgLBUG3+orbBOcM74T
	btvv82eGIdknGyfYscNmzAWFA==
X-Received: by 2002:a05:6000:2508:b0:43d:7e6f:3816 with SMTP id ffacd0b85a97d-43fe3e14ecbmr4536636f8f.40.1776434834081;
        Fri, 17 Apr 2026 07:07:14 -0700 (PDT)
Message-ID: <718fe598-884c-4723-938f-7f783445771f@suse.com>
Date: Fri, 17 Apr 2026 16:07:10 +0200
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH v1 13/27] xen/riscv: add basic VGEIN management for AIA
 guests
To: Oleksii Kurochko <oleksii.kurochko@gmail.com>
Cc: Romain Caritey <Romain.Caritey@microchip.com>,
 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.pau@citrix.com>,
 Stefano Stabellini <sstabellini@kernel.org>, xen-devel@lists.xenproject.org
References: <cover.1773157782.git.oleksii.kurochko@gmail.com>
 <f358325514c91c540e0edf992ca51414a1964fe0.1773157782.git.oleksii.kurochko@gmail.com>
 <09fed304-685c-46a9-9159-72baa1721224@suse.com>
 <4b977410-8d24-41c3-9c83-7d95637ddea3@gmail.com>
 <314c064b-88eb-497a-9022-2013125d63a9@suse.com>
 <a0fe3904-7fb9-474c-9a97-6aca2c2dc50b@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: <a0fe3904-7fb9-474c-9a97-6aca2c2dc50b@gmail.com>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 7bit
X-purgate-ID: tlsNG-33051d/1776434834-2BF6A938-EBD60914/0/0
X-purgate-type: clean
X-purgate-size: 4282

On 17.04.2026 13:34, Oleksii Kurochko wrote:
> On 4/16/26 2:21 PM, Jan Beulich wrote:
>> On 13.04.2026 16:42, Oleksii Kurochko wrote:
>>> On 4/2/26 12:03 PM, Jan Beulich wrote:
>>>> On 10.03.2026 18:08, Oleksii Kurochko wrote:
>>>>> @@ -14,12 +27,109 @@ bool aia_available(void)
>>>>>        return is_aia_available;
>>>>>    }
>>>>>    
>>>>> +int __init vgein_init(unsigned int cpu)
>>>>
>>>> If this needs invoking once per CPU being brought up, it can't be __init.
>>>
>>> Yes, it is going to be called inside the secondary CPU bring-up function.
>>>
>>> __init sections are removed much later, after all CPUs are brought up,
>>> so it looks like that at the moment when secondary CPUs are being
>>> brought up, __init still exists and can be called.
>>
>> No. And I said so before. See XEN_SYSCTL_cpu_hotplug (and ignore it having
>> "hotplug" in the name, but merely consider that you can take CPUs offline
>> at runtime, and later bring them online again).
> 
> Thanks, now it makes sense to drop __init.
> 
>>>> Also - static?
>>>
>>> It isn't static because it will be called inside the secondary CPU
>>> bring-up function.
>>
>> As it doesn't need calling from the outside for the boot CPU, it's not
>> obvious why it would need calling from the outside for secondary ones.
> 
> I think I am confused here by what do you mean by "calling from the 
> outside".

As in "from another translation unit".

> It should be called during boot or secondary CPU initialization (if AIA 
> is used), right?
> Then considering that VGEIN-related stuff is connected to AIA then 
> vgein_init() is expected to live in aia.c and considering that it wants 
> to be called by secondary CPU boot code it can't be static.

Putting my question differently: Why is there a difference here between
boot CPU and secondary CPUs. My (general) expectation would be that either
the function wants calling from outside of aia.c in all cases, or it could
be static (now and later).

>>>>> +{
>>>>> +    struct vgein_bmp *vgein = &per_cpu(vgein_bmp, cpu);
>>>>> +
>>>>> +    csr_write(CSR_HGEIE, -1UL);
>>>>> +    vgein->geilen = flsl(csr_read(CSR_HGEIE));
>>>>> +    csr_write(CSR_HGEIE, 0);
>>>>> +    if ( vgein->geilen )
>>>>> +        vgein->geilen--;
>>>>
>>>> I don't understand this. The "len" in "geilen" stands for "length", I suppose,
>>>> i.e. the number of bits. Hmm, the spec itself is inconsistent: "The number of
>>>> bits implemented in hgeip and hgeie for guest external interrupts is UNSPECIFIED
>>>> and may be zero. This number is known as GEILEN." This may or may not include
>>>> bit 0 (which is implemented, but r/o zero). Then saying "Hence, if GEILEN is
>>>> nonzero, bits GEILEN:1 shall be writable in ..." suggests 0 isn't included, but
>>>> that's not unambiguous.
>>>
>>> But they explicitly wrote that: The least-significant bits are
>>> implemented first, apart from bit 0. So bit 0 is explicitly excluded.
>>
>> Fine, but not including it in anything named *LEN feels - as said - ambiguous.
> 
> Agree, it is. I just tried to follow the spec naming here. But I am okay 
> to rename it to max_gein, for example.

Perhaps better stick to spec naming, but consider adding a clarifying comment.

>>>>> +    /*
>>>>> +     * All vCPU guest interrupt files are used and we don't support a case
>>>>> +     * when number of vCPU on 1 pCPU is bigger then geilen.
>>>>> +     */
>>>>
>>>> This wants checking in vgein_init() then. CPUs (beyond the boot one)
>>>> violating this should not be brought online.
>>>
>>> It'll be nice. But we can't know how many vCPUs will be ran on pCPU when
>>> vgein_init() is executed.
>>
>> I don't understand: How does it matter how many vCPU-s will exist later on
>> (and will run wherever)?
> 
> IIUC, you want to check what is mentioned in the comment in vcpu_init(). 
> The comment says that it is checking that number of vCPU on one pCPU 
> isn't bigger then geilen. To check that we have to know an amount of 
> vCPU potentially will be ran on pCPU.

Well, not quite. I don't understand at all why the number of vCPU-s in
a system would be limited by any pCPU property. I don't think we have
any such constraint on x86, for example.

Jan


From xen-devel-bounces@lists.xenproject.org Fri Apr 17 14:12:26 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Fri, 17 Apr 2026 14:12:26 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1284430.1566220 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wDjvi-0007BJ-Gi; Fri, 17 Apr 2026 14:12:22 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1284430.1566220; Fri, 17 Apr 2026 14:12: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 1wDjvi-0007BC-E5; Fri, 17 Apr 2026 14:12:22 +0000
Received: by outflank-mailman (input) for mailman id 1284430;
 Fri, 17 Apr 2026 14:12:21 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <jbeulich@suse.com>) id 1wDjvh-0007Al-2z
 for xen-devel@lists.xenproject.org; Fri, 17 Apr 2026 14:12:21 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wDjvg-009qSb-CV
 for xen-devel@lists.xenproject.org; Fri, 17 Apr 2026 16:12:20 +0200
Received: from [10.42.69.4] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <jbeulich@suse.com>)
 id 69e23fbb-2eae-0a2a0a5409dd-0a2a4504e340-18
 for <xen-devel@lists.xenproject.org>; Fri, 17 Apr 2026 16:12:20 +0200
Received: from [209.85.221.45] (helo=mail-wr1-f45.google.com)
 by tlsNG-ebf023.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.1)
 (envelope-from <jbeulich@suse.com>)
 id 69e23f4b-1dec-0a2a45040019-d155dd2dec04-3
 for <xen-devel@lists.xenproject.org>; Fri, 17 Apr 2026 16:10:20 +0200
Received: by mail-wr1-f45.google.com with SMTP id
 ffacd0b85a97d-43d74086e5bso668191f8f.0
 for <xen-devel@lists.xenproject.org>; Fri, 17 Apr 2026 07:10:20 -0700 (PDT)
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-43fe4cc09b1sm5078025f8f.9.2026.04.17.07.10.18
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Fri, 17 Apr 2026 07:10:18 -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=google header.d=suse.com header.i="@suse.com" header.h="Content-Transfer-Encoding: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=1776435019; x=1777039819; darn=lists.xenproject.org;
        h=content-transfer-encoding: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;
        bh=MFFEGI8VYCxnUE2yW/8395iN1Ft1KukcQx5aYWm+TK8=;
        b=YktmXzGzbtTjH83oelz+l2X3N05SY7S/r5ne7wsySrMkVxHU0yfiCLHE4yzAHv9YxB
         OZNdEWBdKHbhhQAENlGSzC4m2c/fEzOym9HbmUTi44mDHxXrJev2WjIEfPCG8epBh0Do
         vaKMOWHMS+gBkYJ341YXSsNj42mtpD9tbFusBFTyyY8HGJBvGdpdqBtPpAibYDiteh6Z
         e6qJ70Eilzc+gZoBMR3VBE10rxOWCjk3Y3hxf84PfjForKe1mA2Q4JXErbxOouSJBP8Y
         5pYB6ITNqyl4SSp/CngtHCkV1uLtJVwseEvYVs7lKmoJLTuydqIittfW2ppdTY+ALSFo
         /nMA==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20251104; t=1776435019; x=1777039819;
        h=content-transfer-encoding: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;
        bh=MFFEGI8VYCxnUE2yW/8395iN1Ft1KukcQx5aYWm+TK8=;
        b=r72JrlDXwhK0SQgog80SL6Rs4P05NHKiRsdl3v/AM3aKlORbBhoKmtotUzkq2iq5pZ
         vJQfcxbaBP0jkvaNhFtFCo3OuST5a7kWfe2IdkVwU80kW0mSB0+Z0qQcr14V+0NAS03o
         bqUCO1t6J+yG3FipEHEY4ugQttVffFnzWCSa3I7MJSK260BUmFStVpjhLa8/56sT8APt
         stMxmJaEvxzr1nnpJ3pqL1BGprLtF6rXnTgn64tGz07+xboWkl14L4OgZ/IXQFwPr07Z
         k09GdgOb8kS2aoEnYHWiw9bpbtNZnFkH56EJ3MGWI3UV+RJRTJ75yf/w3k8nrENsW/Lk
         aVjA==
X-Forwarded-Encrypted: i=1; AFNElJ/RFg0ayCmbw6zbmvUYNdywnotQbucqtJvatYTdspQUw+TRcsDTtzatUG+JcohHnlkPjU2/R3zAaAw=@lists.xenproject.org
X-Gm-Message-State: AOJu0YwUh3PzDJMDELAp3LvtfRKTnyZ1uqfzDjxIJrnQ8/sDxai8t32w
	miRHxL2VceMWjFLFBDA95lwkNrKzAo8MvPSU75SunTHJZY8GuRapmKlgMrF0ueAp+g==
X-Gm-Gg: AeBDieuyQiaNHik58rwVP88MQhuFwD346B6N2AuiY7C4kn7tHt5lcn/4Bc0/9a48tZl
	w44XCXWoDOhuSEtUfxpsWSqPUmADZUEukGyLyuBt+Kvpje8vLAGn6Jx2iLHNlumSBxLv06mz1lj
	MQD7BbAr8RtlnVzD3RjYox2fIFgVxXJJAVSPNm4IMUf3tpVaO711kxOVP5mbsoAmbc7dI8CrWKe
	KNrt7ImOTC249vLfHZ/d0j2+ZuhEoYOLc7BYsIPJU1ZKmDphaY9pOLwrmNWuVqyrHsRCCYbN1Tl
	MOe/B0zrpoPZWK77I+LuVj7NUxhTSxYmi0o20SaSDLDzeR2EvWR2e2na3OVWMcaCO7mDsD7Efsp
	4jkW1kRztYMAOlWCWh2BO0Hp2DEmV3gmOvVUGLaGtpELFLsVwfSrzJcOfqTEQVXDwuEkSp+rPqG
	aOiW4MTHHAooC/kHiCp1RCmuOnx1gLZAmlTS7c4CiNoTpcQCquF9hdzlDxsZX1iZm5WfdmWqUSO
	AIdr3zad9W9Sej7b+POvwTPsVBgsbQQpfcy
X-Received: by 2002:a5d:5f82:0:b0:437:711c:8754 with SMTP id ffacd0b85a97d-43fe3dc842bmr4559607f8f.7.1776435019415;
        Fri, 17 Apr 2026 07:10:19 -0700 (PDT)
Message-ID: <e8cc0135-2f34-44bd-94d1-63ad5dd40592@suse.com>
Date: Fri, 17 Apr 2026 16:10:17 +0200
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH v1 10/27] xen/riscv: generate IMSIC DT node for guest
 domains
To: Oleksii Kurochko <oleksii.kurochko@gmail.com>
Cc: Romain Caritey <Romain.Caritey@microchip.com>,
 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.pau@citrix.com>,
 Stefano Stabellini <sstabellini@kernel.org>, xen-devel@lists.xenproject.org
References: <cover.1773157782.git.oleksii.kurochko@gmail.com>
 <8154eae081d14da89f27bad581270cc5bba6ccfc.1773157782.git.oleksii.kurochko@gmail.com>
 <93e8407e-cff0-42cc-8cfd-2d82f536a886@suse.com>
 <b2c8e859-a91a-469f-b674-0942d240f0d9@gmail.com>
 <953a4d7a-95a0-4a11-b236-efdf21eb125c@suse.com>
 <ca52ad3b-d14d-478b-bf6d-2835f79fa257@gmail.com>
 <747744f8-44e8-4d87-871f-1c2f49a0fcc0@suse.com>
 <a46589de-e2d8-42bc-bdf9-8ac4fcbdcd7b@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: <a46589de-e2d8-42bc-bdf9-8ac4fcbdcd7b@gmail.com>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 7bit
X-purgate-ID: tlsNG-ebf023/1776435020-2997A3FF-ED467573/0/0
X-purgate-type: clean
X-purgate-size: 4600

On 17.04.2026 16:01, Oleksii Kurochko wrote:
> 
> 
> On 4/17/26 3:50 PM, Jan Beulich wrote:
>> On 17.04.2026 10:10, Oleksii Kurochko wrote:
>>> On 4/16/26 1:42 PM, Jan Beulich wrote:
>>>> On 10.04.2026 17:40, Oleksii Kurochko wrote:
>>>>> On 4/1/26 5:05 PM, Jan Beulich wrote:
>>>>>> On 10.03.2026 18:08, Oleksii Kurochko wrote:
>>>>>>> Guests using the IMSIC interrupt controller require a corresponding
>>>>>>> Device Tree description. Add support for generating an IMSIC node when
>>>>>>> building the guest DT.
>>>>>>>
>>>>>>> Keep a reference to the host IMSIC DT node and reuse its compatible
>>>>>>> property while constructing the guest-visible node.
>>>>>>
>>>>>> Again raises a migration concern. Presumably a guest would then be able
>>>>>> to migrate only to other hosts with the same compatible property.
>>>>>
>>>>> Right, but I don't think we can do too much and it is the simplest
>>>>> approach just to migrate to hosts with the same compatible property.
>>>>>
>>>>> If you concern is about DTS property then for IMSIC it will be always
>>>>> riscv,imsics according to the RISC-V DT spec. (IIRC, the only other
>>>>> option could be qemu,riscv). Actually, I can just hard code
>>>>> "riscv,imsic" explicitly instead of re-using of host name.
>>>>>
>>>>> If your concern is that we will migrate to a host which doesn't support
>>>>> IMSIC at all then we should or (a) don't migrate to such host or (b)
>>>>> provide an emulation of IMSIC. And option (b) would be terrible from at
>>>>> least performance point of view.
>>>>
>>>> That would all be only a secondary concern - in an IMSIC is needed right
>>>> now, so be it. My primary concern is with inheriting the host IMSIC's
>>>> properties.
>>> Could we do really something better?
>>>
>>> At the moment, the following properties are inhereted:
>>> node name -> not an issue at all, it is just a name of the node and
>>> generally doesn't matter what it is in the matter of DTB generation as
>>> phandle number of this node will be used as pointer to this node, not
>>> the name. If it would be better I can hard code just "imsic".
>>>
>>> compatible -> also, not a big issue. According to current DT RISC-V
>>> bindings it could be just "riscv,imsic". But then I have the question
>>> what if one day someone will come up with own implementation of IMSIC
>>> then "riscv,own-imsic" will be in host DTB and so I expect that guest
>>> DTB should have it as this h/w expects to use specifically OWN-IMSIC
>>> driver. So it seems okay to copy compatible from host DTB. Yes, if
>>> migration will happen where just "riscv,imsic" is supported then it
>>> can't be easily migrated to such h/w and its okay. But generally I
>>> expect that compatible will always riscv,imsic.
>>>
>>> riscv,num-ids -> generally, it could be any number from [63, 2047], but
>>> it seems like there is no any sense if put a value bigger then
>>> guest-num-ids=min(riscv,num-ids, riscv,num-guest-ids) for guest as h/w
>>> can't support more then that. At the same time I don't see too much
>>> sense to tell a guest that it supports less then guest-num-ids. What is
>>> the problem to give a guest a maximum that IMSIC could provide? With
>>> migration, of course, it will be an issue if new host will support
>>> different number of riscv,num-ids but I don't know what we can do better
>>> then just avoid migration to such hosts if old-num-ids > new-num-ids
>>> without significant performance drop.
>>
>> This is exactly why an admin may want to limit what a guest gets to
>> see / use.
> 
> Would it be better then provide a separate define for riscv, num-ids and 
> use it here? Maybe here it makes sense to re-use already provided by DT 
> binding property:
>    riscv,num-guest-ids:
>      $ref: /schemas/types.yaml#/definitions/uint32
>      minimum: 63
>      maximum: 2047
>      description:
>        Number of interrupt identities are supported by IMSIC guest 
> interrupt
>        file. When not specified it is assumed to be same as specified by the
>        riscv,num-ids property.
> And if riscv,num-guest-ids the use some predefined in define value?
> 
> Does it make sense then provide the similar defines for compatible and 
> node name or for that properties it would be okay to re-use what host 
> DTB IMSIC node provides?

I fear I can't answer this. I'm not knowledgeable enough on DT. To me,
guest properties are (originally) specified by a guest config file.
How that maps to DT (in particular in the dom0less case) I don't really
know.

Jan


From xen-devel-bounces@lists.xenproject.org Fri Apr 17 14:27:26 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Fri, 17 Apr 2026 14:27:26 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1284446.1566229 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wDkAA-0000j6-QB; Fri, 17 Apr 2026 14:27:18 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1284446.1566229; Fri, 17 Apr 2026 14:27: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 1wDkAA-0000iz-NV; Fri, 17 Apr 2026 14:27:18 +0000
Received: by outflank-mailman (input) for mailman id 1284446;
 Fri, 17 Apr 2026 14:27:16 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92) id 1wDkA8-0000it-Nq
 for xen-devel@lists.xenproject.org; Fri, 17 Apr 2026 14:27:16 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wDkA8-0057ZA-4a
 for xen-devel@lists.xenproject.org; Fri, 17 Apr 2026 16:27:16 +0200
Received: from [10.42.69.2] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <oleksii.kurochko@gmail.com>)
 id 69e2433c-5cb7-0a2a0a5109dd-0a2a4502a9d0-4
 for <xen-devel@lists.xenproject.org>; Fri, 17 Apr 2026 16:27:16 +0200
Received: from [209.85.167.50] (helo=mail-lf1-f50.google.com)
 by tlsNG-720697.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.1)
 (envelope-from <oleksii.kurochko@gmail.com>)
 id 69e24343-af86-0a2a45020019-d155a732cc4c-3
 for <xen-devel@lists.xenproject.org>; Fri, 17 Apr 2026 16:27:16 +0200
Received: by mail-lf1-f50.google.com with SMTP id
 2adb3069b0e04-59dea72099eso724393e87.0
 for <xen-devel@lists.xenproject.org>; Fri, 17 Apr 2026 07:27:15 -0700 (PDT)
Received: from [192.168.1.6] (user-109-243-69-121.play-internet.pl.
 [109.243.69.121]) by smtp.gmail.com with ESMTPSA id
 2adb3069b0e04-5a4187e1131sm447699e87.42.2026.04.17.07.27.13
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Fri, 17 Apr 2026 07:27:14 -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=20251104 header.d=gmail.com header.i="@gmail.com" header.h="Content-Transfer-Encoding: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=20251104; t=1776436035; x=1777040835; darn=lists.xenproject.org;
        h=content-transfer-encoding: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;
        bh=TBJo4n/ahWECnPclffoqwrKpqNOobUosJR4S0ORDXvI=;
        b=fGX2APZ7w6ZBoxGMWH4v7xdla4Kz4lz8TkF7OcA9Xbi/H+4312BlKjsRKgvUxgLh5k
         MkUiK5+RGpCotBWjY5PjRDpTQq8YCqn7wWGmbzbuIdz3peB4UAtUDpopLVlnQUlORRcG
         dQuler0cIrCO36ZYWxSpsnMgzsjhJlyJWmoDejJuJKLiu/x4cBajB48ETGFv+OdVOaoh
         OqbW5842APCrPzBRKrBGso6DR8desZLqvStb8XA92p7ZAWBx9w7VHM9qW61lNOlrAouI
         vC7nMguaPIqh3HD8nFiyH9OmyK+XOtinlq1y3YbLTSX/VJDc0w2ycGCzH2JhAuhDoRru
         m2GQ==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20251104; t=1776436035; x=1777040835;
        h=content-transfer-encoding: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;
        bh=TBJo4n/ahWECnPclffoqwrKpqNOobUosJR4S0ORDXvI=;
        b=LhdIa8kKg5Yzc7x8rJFju6Dfw6Cwe8YlCsWFjKp2U2t0rOH/osoV/SFvgimKynPvur
         yrYdf2zamSBf26Uu2bcKQvKIjA5tSx/GDTNHAI4CDXl3B98FTmEgFZm3TtbynYlgJego
         JRZjwUHE27A9ZIgUn0clya/Wubow56AQXtNBrUP1DEMfgSD85I3OmgIgQNBSWwpMZdgg
         jvrLD4HdF9C5in9HXo2fTOO/fTxawBb5/W2BB49nXFRAyvYMASRGYvyoHmwDFsJJQ1dK
         2UnN4Kh2LhEKsJdp2AHPP9Sc9A6omaMy9PU+iwpsVcZzJU4X0WDtQaCc8l6nVcAYP5uL
         tgNA==
X-Forwarded-Encrypted: i=1; AFNElJ8/Sq+1bDCnPsYAjtDsl81jU/Hd5hE8fRqPxSa/UeXYuZ/vR9bXPMvAZQuRHKpxMjZfLBjNeXlRC4M=@lists.xenproject.org
X-Gm-Message-State: AOJu0YwTZ1/7qzXBJ1dO7XiA4zyJT52WThHyd2inPM4dE8EMGiq1klWL
	HmhNQJWeMdSh8Uf8BvfVsJbvdZTpgEw4RVwXdqZ0C1GOcXHak0EZcJFA
X-Gm-Gg: AeBDievjXMkUUZB+lEDOiVsSpVKBVzOliTeim9xEKbjAo5zLrs1Mmhawc7uyL/4mR3w
	tGFPLOTuJuzOgdlTk5SoFtE8JRMhDKOWV7z8HOIKUieagBaL1W0h8KDmJ+JHlubLg+0ZOaAnYaM
	60stkhEjV2a9UqaDfsfonK2ds6Njqh3KbSqPNLRQ/ARs1naEKwzWvfLbNEkEp1VArPzGTamwQ8b
	0rOeNIHsPwurbAAJSSJfKFUDyVkoeX/vnTHRP56bXWalLebKslZ5L//srKp4Yc9vE0PxDghwSkC
	TtGDFSZ/aR5/8XYgLXVDHWitTVHrCjI7Xn1fGk0IcFF089xjSBICG00Z4cB40Npx5YgGbZ6W/nE
	iDT5ScR7j+pvcgOXHBFwW577g9Uzk6aB3uZKoyL0bJOeXDQa+kjdt6khrOUc2yFQ4oVfJiS6Cl8
	9NjxFn5hF3OmI9YadmdSGLRvH83n3sqRkgCOrvz36FpyHK1dR8oqxov9JF/ierMipn83svmUUgw
	Yv7nd5Crvt5dQ==
X-Received: by 2002:a05:6512:12c2:b0:5a2:836a:ca47 with SMTP id 2adb3069b0e04-5a4172daaf5mr1118176e87.20.1776436034911;
        Fri, 17 Apr 2026 07:27:14 -0700 (PDT)
Message-ID: <4dfb488c-38cf-40b6-9d3b-85f2e9f90c42@gmail.com>
Date: Fri, 17 Apr 2026 16:27:13 +0200
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH v1 11/27] xen/riscv: create APLIC DT node for guest
 domains
To: Jan Beulich <jbeulich@suse.com>
Cc: Romain Caritey <Romain.Caritey@microchip.com>,
 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.pau@citrix.com>,
 Stefano Stabellini <sstabellini@kernel.org>, xen-devel@lists.xenproject.org
References: <cover.1773157782.git.oleksii.kurochko@gmail.com>
 <462b5f7dbe4e5084a35fb869b59327c6c92d1fbf.1773157782.git.oleksii.kurochko@gmail.com>
 <362d1e3a-409c-40ab-8d2c-36dc30a04b88@suse.com>
 <9fd04b0f-3b04-4f1e-ac63-de0fca57d466@gmail.com>
 <7d022fea-0836-43b0-983d-5f7cb26a2e62@suse.com>
 <ac19fdeb-90fa-42bd-9041-7c2aaa5346d4@gmail.com>
 <a578a32e-4cf3-4c61-b834-da2831c9a9bd@suse.com>
Content-Language: en-US
From: Oleksii Kurochko <oleksii.kurochko@gmail.com>
In-Reply-To: <a578a32e-4cf3-4c61-b834-da2831c9a9bd@suse.com>
Content-Type: text/plain; charset=UTF-8; format=flowed
Content-Transfer-Encoding: 8bit
X-purgate-ID: tlsNG-720697/1776436036-82374161-4E8DAE3B/10/73395122804
X-purgate-type: spam
X-purgate-size: 4504



On 4/17/26 3:53 PM, Jan Beulich wrote:
> On 17.04.2026 11:01, Oleksii Kurochko wrote:
>>
>>
>> On 4/16/26 1:49 PM, Jan Beulich wrote:
>>> On 13.04.2026 10:43, Oleksii Kurochko wrote:
>>>> On 4/1/26 5:16 PM, Jan Beulich wrote:
>>>>> On 10.03.2026 18:08, Oleksii Kurochko wrote:
>>>>>> +    res = fdt_property(fdt, "#interrupt-cells", data, len);
>>>>>> +    if ( res )
>>>>>> +        return res;
>>>>>
>>>>> So host properties are again directly handed through to the guest?
>>>>
>>>> I am not sure that it can be different from what host has.
>>>>
>>>>> Shouldn't the number of interrupts (aiui that's the "number of cells"
>>>>> here) a guest gets be independent from the host it runs one?
>>>>
>>>> The #interrupt-cells property specifies how many 32-bit values (cells)
>>>> are used to encode a single interrupt specifier when referencing this
>>>> interrupt controller from another device node.
>>>> In this APLIC schema, it's fixed at const: 2, meaning every interrupt
>>>> reference requires exactly two cells — typically:
>>>>
>>>> Cell 1 — the interrupt source number (which of the riscv,num-sources
>>>> wired inputs)
>>>> Cell 2 — the interrupt type/trigger flags (e.g. edge vs. level, active
>>>> high/low)
>>>
>>> So what if #interrupt-cells is 3 in the DT Xen is handed? If Xen can
>>> cope, should that value really also be handed through to guests?
>>
>> I would say that it depends on what cell 3 will represent. But likely it
>> will be needed to hand it to the guest.
>>
>>>
>>>>>> +    regs = dt_get_property(aplic_node, "reg", &len);
>>>>>> +    if ( !regs )
>>>>>> +    {
>>>>>> +        printk("%s: Can't find 'reg' property\n", aplic_node->full_name);
>>>>>> +        return -FDT_ERR_XEN(ENOENT);
>>>>>> +    }
>>>>>> +
>>>>>> +    res = fdt_property(fdt, "reg", regs, len);
>>>>>> +    if ( res )
>>>>>> +        return res;
>>>>>> +
>>>>>> +    data = dt_get_property(aplic_node, "riscv,num-sources", &len);
>>>>>> +    if ( !data )
>>>>>> +    {
>>>>>> +        printk("%s: Can't find 'riscv,num-sources' property\n",
>>>>>> +                aplic_node->full_name);
>>>>>> +        return -FDT_ERR_XEN(ENOENT);
>>>>>> +    }
>>>>>> +
>>>>>> +    res = fdt_property(fdt, "riscv,num-sources", data, len);
>>>>>> +    if ( res )
>>>>>> +        return res;
>>>>>
>>>>> Or maybe this is the number of interrupts?
>>>>
>>>> This is the total count of hardware interrupt lines wired into this
>>>> APLIC domain.
>>>>
>>>> It could be independent from the host it runs one but looking at the
>>>> possible range [1,1023] for this property if we will put for a guest
>>>> lets say 22 but new host support only 20 when we will be in a trouble
>>>> anyway.
>>>
>>> Correct. But if you had some hosts with 1024 and some with 256, how
>>> would you bring up a guest on the former to later be able to migrate
>>> it to one of the latter when guests inherit the count from the host?
>>
>> It will be impossible to do that without emulation,
> 
> It's not quite clear to me why this would be.

if migration happens from the host with 256 to the host with 1024 the 
some interrupt remapping/multiplixing might be needed. But I am not 
consider this as a good option...

> 
>> so I expect it will
>> be easier to simply forbid migration to such a host.
>>
>> Basically, it is just a game of numbers. We could try to estimate how
>> many interrupts are needed for the guest, or for simplicity use some
>> hard-coded number (say 128 or 256, something “pretty small”). Will it
>> resolve the migration issue? Partially yes, but not fully, as there
>> could always be cases where the new host’s number of sources is lower
>> than our hard-coded “small guest value.” So having a smaller value will
>> likely help on average and will allow to support more h/w migration to
>> which could happen, but the migration issue will still be present.
> 
> An admin, knowing the capabilities of all hosts in a pool, can suitably
> limit guests intended to move among hosts. No migration issue at all.

... this one option is much better. I will introduce define for now in 
vaplic.h header or maybe just inside this function to hard-code this 
amount of interrupts supported by guest vAPLIC for now.

But in future it make sense to introduce property in host APLIC node 
something like riscv,num-guest-sources as IMSIC has for interrupt 
identites (riscv,num-guest-ids).

~ Oleksii


From xen-devel-bounces@lists.xenproject.org Fri Apr 17 14:36:16 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Fri, 17 Apr 2026 14:36:16 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1284460.1566238 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wDkIl-0002R8-KV; Fri, 17 Apr 2026 14:36:11 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1284460.1566238; Fri, 17 Apr 2026 14:36: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 1wDkIl-0002R1-Hw; Fri, 17 Apr 2026 14:36:11 +0000
Received: by outflank-mailman (input) for mailman id 1284460;
 Fri, 17 Apr 2026 14:36:10 +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 1wDkIk-0002Qv-6Q
 for xen-devel@lists.xenproject.org; Fri, 17 Apr 2026 14:36:10 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wDkIj-00HCIv-JM
 for xen-devel@lists.xenproject.org; Fri, 17 Apr 2026 16:36:09 +0200
Received: from [10.42.69.6] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <andrew.cooper@citrix.com>)
 id 69e2454c-e002-0a2a0a5209dd-0a2a4506ddf0-34
 for <xen-devel@lists.xenproject.org>; Fri, 17 Apr 2026 16:36:09 +0200
Received: from [40.93.195.61]
 (helo=SN4PR2101CU001.outbound.protection.outlook.com)
 by tlsNG-16d1c6.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.1)
 (envelope-from <andrew.cooper@citrix.com>)
 id 69e24557-7371-0a2a45060019-285dc33da1dc-3
 for <xen-devel@lists.xenproject.org>; Fri, 17 Apr 2026 16:36:09 +0200
Received: from CH8PR03MB8275.namprd03.prod.outlook.com (2603:10b6:610:2b9::7)
 by CO1PR03MB5699.namprd03.prod.outlook.com (2603:10b6:303:95::6) with
 Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9769.48; Fri, 17 Apr
 2026 14:36:04 +0000
Received: from CH8PR03MB8275.namprd03.prod.outlook.com
 ([fe80::a70d:dc32:bba8:ce37]) by CH8PR03MB8275.namprd03.prod.outlook.com
 ([fe80::a70d:dc32:bba8:ce37%6]) with mapi id 15.20.9818.023; Fri, 17 Apr 2026
 14:36:03 +0000
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@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=EcgasZFgNDRVXKF9G9I9i8k/ZWOYY0bYyUm3RKFjHh2yKtQlwUxfBUpsrE85FlD+NC7htETrNN3Ch6u3z+GVL/cWvy2QsG3e8HtyCUVPXlHdZUxitO+geHFvw8bYraHLMpM6RZRfUJ/Z8yS2GS/YGcR+3tDc0lGOd6UJb214tRPXYLwv3T2ZrM4BgbkF35bpGwDd/UhvYd3OHuZ83mi3eIPChNVU1QXdQwaliTlmM4QsrNqLgQfss6LjrLTVpxVmSFxU4jO7EUn7qybQJrGVhlAsvzzemiET32nH7g36m5K8efd0ZVz52UgXxzWUcx21NlgHCTiyul7SrjmFo2KxkQ==
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com;
 s=arcselector10001;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1;
 bh=SuJ4yHKeiOH+p8jGYtrbIAYmZekD/qNwRcomsQOQy00=;
 b=UgNB2Ts0xLi7XOsED+ZgpFYxWlOvXod8XCu6NwTI7a00oq+vDLQoh/EqQFSJgOUVZBQd+ud4MIhGcsjgQoCtl8vKNJd6pAW8sQ/dZqrjh9mFl46+1VmO9nGkE+BX3Cf6rGi3YBFSIaOXBkmf1QPXl+3ioyM8sads3hglkWmqa3B8XuZ7Otcji39h5PjS5hkSTpdTluC0irl5bdj6UM9RLSf2kZFdbq9JulW2/mB4HLV0N7jGaz5xQ97+atXuV6SAFu3uFzHMe5/Yj1G4qMsi8LlVO/KRlKbzwvhyVzWOlrEh43psoD301ZenP3MnUJRQb/QoPWGevreG/oWIcYccew==
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=SuJ4yHKeiOH+p8jGYtrbIAYmZekD/qNwRcomsQOQy00=;
 b=qvvplLwmfPh1emeObPebisgnNp+U28qaZQj0ci8/eITRj/Tgsx965Rx7lO4OJWDTdorANsCxA7sqYc2hydn2lTLfVu1WuTF7SrD2G1yOMX+fwUUZsZsZlAr8yL8HeYUfrYUNs4pRxfEEbcZ6znHauY2Hgln9S8Ao6wC8ODR9ijg=
Authentication-Results: dkim=none (message not signed)
 header.d=none;dmarc=none action=none header.from=citrix.com;
Message-ID: <f385a4cc-f6c9-427a-97a7-f0cb72e5ea07@citrix.com>
Date: Fri, 17 Apr 2026 15:35:59 +0100
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.pau@citrix.com>, Teddy Astie <teddy.astie@vates.tech>
Subject: Re: [PATCH] x86/mkelf32: Actually pad load segment to 2 MiB boundary
To: Ross Lagerwall <ross.lagerwall@citrix.com>, xen-devel@lists.xenproject.org
References: <20260417105425.1184232-1-ross.lagerwall@citrix.com>
 <a6b71c55-fce7-4995-b38b-83133d702bd5@citrix.com>
 <e12a3f73-6121-4152-8f54-5bed0f36d087@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: <e12a3f73-6121-4152-8f54-5bed0f36d087@citrix.com>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
X-ClientProxiedBy: LO4P123CA0106.GBRP123.PROD.OUTLOOK.COM
 (2603:10a6:600:191::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_|CO1PR03MB5699:EE_
X-MS-Office365-Filtering-Correlation-Id: 2067b450-23a0-4ff5-d034-08de9c8ea6ca
X-MS-Exchange-SenderADCheck: 1
X-MS-Exchange-AntiSpam-Relay: 0
X-Microsoft-Antispam:
	BCL:0;ARA:13230040|1800799024|376014|366016|56012099003|18002099003|22082099003;
X-Microsoft-Antispam-Message-Info:
	WJN8IAylozcjFZB8AZperBJTXMrrIXLCbub9DhrXRS4W8cmRNv7I0ovutFWdhsQWSqc/GeECruBLAN3LBP2ke7i0+DY8U/VUV10+jhyIoRJ38ROLk3LJgLwLfcbhNEZn5NBBvt7c6cP9ezoTmORmTcNPaoUc4k6TgWmrRsvx9knz0cSXXOVIFQPt0RhagxOurHZurFJvA7xWoBCzlL9jcUwq/8OuuHHXYRcdLQHIb0M9i+Zh6/OJPh3ntaSTdAGeKcj7mQKSk0VR0o/+1fo9lSTLdVzO4cxUvi0yZs/edFceglRmiWw21Fcsb80aKpIp0/oLiubWAA7jYozkU9ImyzECEmKSuhsx345dFRHXIGnjclO4Ryk5JhaDjsMR4iWwvGYho0+ebfJsnUlZpNZBphmWrA+gf0j5S1EXr6YBuhZixuBV/qtRUSLrSQGtflXlQflmPAx7sv1A6Ct4y6t9Tfd3JfYIMwGrl+MErd0iSsk+MhEsLDHBsvONfZlMWNnd43XxKZZBYZt8oWLUBGZylmfFHbUPa9hSWArswhuV5XWEn3H7KVE5rChav26xCq/m7fwGJTzVRB7somKaAVn0Q8t7vccUGOiyxZKyH4SIFS4o6baEfxSYwXNSvcF9pEpVK/BnfBzI9ehBOypKh9DMDHRo4hdTD3i5I+zjkTLDlUD1x7iEvqx3zUjDRpTR8+069WHXeK2DWtz1a2Hj3sbIy7IofxeAMjkAf7DECnIEhvI=
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)(376014)(366016)(56012099003)(18002099003)(22082099003);DIR:OUT;SFP:1101;
X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1
X-MS-Exchange-AntiSpam-MessageData-0:
	=?utf-8?B?cVZneWszTHRmMXM1QmgyS1I4c3BScFRqWGxudmNQTVd6MEtQU1l3dnhQQUR3?=
 =?utf-8?B?OTRhcTh0UXJWbnhDOWVsbXdhNitYR29oQ0gwcmFHQ2ZVSjBiUkErZDFFWnRx?=
 =?utf-8?B?cS8rWGZ2WjkxUXNYUEVIZ0tOSVRRMU9VK2psaDdHdmt1b2FZQ2tmTi9EMFQ4?=
 =?utf-8?B?dWdVdExRYjRHQk1COEtsd2VEWmtSeXZ5L1RnU1AzNFNtaFJGeU9oSU1talBo?=
 =?utf-8?B?bHJhTGRPRXI1emp3a3VDUDRibXJadFlGNHZxQWdPMzBDTGl3bDMySlFIMU9h?=
 =?utf-8?B?U1krOVN1dk83ejIyVkoyTEo4dVVBRVpoRkkrY1g4SFhGR2o4OFk2L1MwUkQ0?=
 =?utf-8?B?WlArbVFVUW00RSszTzZkUVFLd1FZUjlQYU9DU1BnYk5uZEh0bjJtbWtrVzNl?=
 =?utf-8?B?R0lBdiszMmxlUWdPWmV3a2RpdUpXc2ZGOUE1UEk3ZjBMR0RudkRIMTlYbk1N?=
 =?utf-8?B?NGxTVDM3bmliTC9XbWpGTmRyYlhLYytBN0hXUFBkWGxqSGxrU2tSRWpUTmhE?=
 =?utf-8?B?S1Y5VktzK1NkU0FhVDJESE02Y2pFbTYwMUptZE9ZV2lzV0VIR24yUWN2TFd6?=
 =?utf-8?B?ZGRDSGxNblNxckFJbWRycWZ0TWtDUUFKbmVsek5aUGJ2NW5DamJCVVgrRm9t?=
 =?utf-8?B?TE85U1J1eUZvalVGaHg0Z0xzT1p3NjBUei9sVVYvYXRBbEpjMGkySHc1d0Q4?=
 =?utf-8?B?RjZNTURqcnhmVDZtUEdqdUluTGluZHRQc1UrZ25EM2tPRkNqYjBVdFNPb083?=
 =?utf-8?B?UHpTUUFXenZzQWZBZk9HU29oUnpCSWlyNUdza1lhWVRZaXo0eFRycG9UaE9K?=
 =?utf-8?B?ZVBQVWsrcEhNaVVVUGlXSkJYWEI5R2pKV2tiN1dGWTJPNEs1STVxRnQ0bHha?=
 =?utf-8?B?U2h5cEdiT1VVbVpKT1lYaVd4L3dDTUlGSmRNaDVDZG5QL3gvbTNLVCtXYTRJ?=
 =?utf-8?B?a2QzTC9zRkhZRi91QTcyaktWempheWk1R1NBdnVGZzBVRGR3eUVhTDRSTzVu?=
 =?utf-8?B?K1lyT0lxQlB1dWFyWnVXTGxDeVZZZWNRZUI1UkJwODM5eWJoV0tSZUVhYlFB?=
 =?utf-8?B?MHJYekJzUXFBWlNEZjJza1VoUUtJaHRwbHV5RXhrb3E5THlObHVWVG9JUW1W?=
 =?utf-8?B?MzZKYjkrUERnSFFwMFYvNDZSS2tLUU9FdllyS3RmZVZabGpvK2t2eVY5dWJS?=
 =?utf-8?B?aUQzY3JQTFFCNVV5L2dqbm1PeU9JTW8xaUtJa0tsZUkzcDZkWE1MUWVLMGh2?=
 =?utf-8?B?UWVhbnZDQmlaZGh4U0RBMy9FNWRGbXJBOUp5VW9tM1k3aTNGN1huRHp1NGtR?=
 =?utf-8?B?OHFzc1RKSzZDZ1ZxTjZ4QnNZcS9lRm0yYnE1dzRzZU5xU2E1TDlZdHptNnA4?=
 =?utf-8?B?RmtTcjFqU0JUR1Zmbm9ZaFhyUk9YeXpJcVFTMjlhd3dISDNRTzJVODJmM1k4?=
 =?utf-8?B?MGppdzJHbnlkQ1E2QUtPem01MUN6UHlXWGJaZjdGNWRnUDZ4ZVp2dkJpTU5x?=
 =?utf-8?B?aHRiQzBsWGZKOTZMYTBKcnkyeXpSVjJSNzZ3K0piWXBWeWxkUmtyV1pVQnJG?=
 =?utf-8?B?WCt6cVAzdnA1RzBadlNVWW5UdW9BNW14bHZKTEFzbWJJdnFVcDJIZmMycFVB?=
 =?utf-8?B?NVN6b3F6bHNpbnBUVm9mSkYyZXZNamtEQW1LWW5KSTQ2aVFYT2FJZ0RrNUU1?=
 =?utf-8?B?NEZmeDhEanBqSUxJMUNVeks5L2UvWWtXZlZmNlBHaGRubGRkUWwzakp2UHV2?=
 =?utf-8?B?V0pUQlVrNjVVSG4xVGY3dEM0S1RBMXBiSklSSnl4UUlmK3hRSGMzNUFpLzBY?=
 =?utf-8?B?d3c5T1cwWG9BS0NSZEtoNWpnbTBLWkNsOEQ4NW1aUVQxQWJualRrb04vV0RU?=
 =?utf-8?B?UHJmQUMrKzJybmFQdEVwaG9rS3ZYWkR2Rlhad3VOMGZMUE4xQU9BK25zbnJo?=
 =?utf-8?B?MkFvb0F3aHdJcXB6VS92ZU5OQThZdDZhMFJoQTN6R0EyY0FZR0hLRTFOMERl?=
 =?utf-8?B?di9nUm5qUXBZNUE4c09XRjdPY0FOSDBvYXZnRzYxNTZSTEhTT0pTWjErQSs5?=
 =?utf-8?B?U1p5UFJsSnk1RFVZMGIremFJVVZ0Z1J4UmpWYkg0Q1Qzc0xMUjVxS29BMFFI?=
 =?utf-8?B?cnA0OERWQ0toUmNrN3VOR0J5ZUVLdE12b05VU1JVWCtCYnRaZFVCL2lrSEE2?=
 =?utf-8?B?TnVQOFdmWGUxTFhNNjR6ZHJ3V3l3cVZnUXhpTjNsS0VtQkRMRUVkNG9IRCtC?=
 =?utf-8?B?ZHpSN05hcDg4SG94N2hJREhPRkNiVXNHUHpxUDFTWlFQT1hicFJwSFRsdFJs?=
 =?utf-8?B?SlBvQ3lFNzlYaHVIcFJQR0pnY0d0cGxzL1pPbFRSMHJ3b3BKOVBkbk1NYTh2?=
 =?utf-8?Q?WXJ85qEMBBCQMEwA=3D?=
X-OriginatorOrg: citrix.com
X-MS-Exchange-CrossTenant-Network-Message-Id: 2067b450-23a0-4ff5-d034-08de9c8ea6ca
X-MS-Exchange-CrossTenant-AuthSource: CH8PR03MB8275.namprd03.prod.outlook.com
X-MS-Exchange-CrossTenant-AuthAs: Internal
X-MS-Exchange-CrossTenant-OriginalArrivalTime: 17 Apr 2026 14:36:03.2345
 (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: XCwsYolyjoukCDnKFbDuy61vINPm8fDWjJT/V30bUXNNQEqccc5sVFfKckNi7VLkumFGTQ30Kmq7oktVsvBkO9BMb1OwyBAWmC9CBH6Wzjk=
X-MS-Exchange-Transport-CrossTenantHeadersStamped: CO1PR03MB5699
X-purgate-ID: tlsNG-16d1c6/1776436569-9087DD75-2E9D85A1/0/0
X-purgate-type: clean
X-purgate-size: 2779

On 17/04/2026 2:25 pm, Ross Lagerwall wrote:
> On 4/17/26 12:03 PM, Andrew Cooper wrote:
>> On 17/04/2026 11:54 am, Ross Lagerwall wrote:
>>> Fix the code which tries to pad the load segment to 2 MiB but only pads
>>> it to a 1 MiB boundary.
>>>
>>> This manifested itself as a page fault while scrubbing RAM during boot.
>>> Xen failed to mark its location as reserved in the E820 because the
>>> last
>>> 2 MiB superpage overlapped a reserved region which meant the memory was
>>> given to the allocator despite being RO.
>>
>> Do you have the relevant snippet of the E820?
>>
>> AIUI, you're saying that Xen was placed immediately below an E820
>> reserved region (a valid layout at 1M alignment), where said region was
>> inside the 2M-aligned boundary that Xen was expecting.
>>
>> But I don't quite follow what happened next.  Where does read-only-ness
>> come into it?
>>
>
> Relevant E820:
>
> (XEN) [00000063469ff02c]  [000000003f2df000, 000000003f31efff] (ACPI NVS)
> (XEN) [00000063519dc9f2]  [000000003f31f000, 000000004cfebfff] (usable)
> (XEN) [000000635c504aff]  [000000004cfec000, 000000004d07bfff] (ACPI
> data)
> (XEN) [00000063677372dc]  [000000004d07c000, 000000004d09bfff] (ACPI NVS)
>
> With a load size of 0x900000 (padded to a 1 MiB boundary), Xen was
> placed at
> 4c600000-4cefffff.
>
> In __start_xen(), there is a call...
>
> reserve_e820_ram(&boot_e820, __pa(_stext), __pa(__2M_rwdata_end));
>
> ... which tries to reserve the region 4c600000-4cffffff (size 0x1000000),
> padded to a 2 MiB boundary since it is using superpages.
>
> reserve_e820_ram() doesn't reserve anything because the request
> doesn't fall
> within a single RAM region. Therefore, the pages get treated as normal
> RAM and
> will get scrubbed later. However, __start_xen() also calls
> modify_xen_mappings() to mark all of .text and .rodata as RO in the
> direct map
> so when it actually tries to scrub it it gets a page fault instead
> (which is I
> suppose slightly better than just zeroing Xen's .text).

Oh, well I'm glad that I fought to adjust the directmap perms.  This is
exactly the kind of thing I was looking to catch.

reserve_e820_ram() failing here is also catastrophic; the bootscrub can
be bypassed with a cmdline parameter.

Either way, can I suggest the following adjustment to the commit message:

This manifested itself as a page fault while scrubbing RAM during boot. 
Xen failed to mark itself as reserved in the E820 (due to spanning
multiple regions), but did restrict the permissions in the directmap. 
All of Xen is then handed to physical memory manager as available for
use, and scrubbing hit the directmap protections.

?

I can fix on commit if you're happy.

~Andrew


From xen-devel-bounces@lists.xenproject.org Fri Apr 17 16:08:49 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Fri, 17 Apr 2026 16:08:49 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1284524.1566248 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wDlkA-0005Qg-UQ; Fri, 17 Apr 2026 16:08:34 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1284524.1566248; Fri, 17 Apr 2026 16: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 1wDlkA-0005QY-Ov; Fri, 17 Apr 2026 16:08:34 +0000
Received: by outflank-mailman (input) for mailman id 1284524;
 Fri, 17 Apr 2026 16:08:34 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <andrew.cooper3@citrix.com>) id 1wDlk9-0005QS-U2
 for xen-devel@lists.xenproject.org; Fri, 17 Apr 2026 16:08:34 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wDlk8-005LZt-FB
 for xen-devel@lists.xenproject.org; Fri, 17 Apr 2026 18:08:32 +0200
Received: from [10.42.69.6] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <andrew.cooper3@citrix.com>)
 id 69e25afb-e002-0a2a0a5209dd-0a2a4506ca6c-14
 for <xen-devel@lists.xenproject.org>; Fri, 17 Apr 2026 18:08:32 +0200
Received: from [209.85.221.53] (helo=mail-wr1-f53.google.com)
 by tlsNG-16d1c6.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.1)
 (envelope-from <andrew.cooper3@citrix.com>)
 id 69e25b00-7371-0a2a45060019-d155dd35ac33-3
 for <xen-devel@lists.xenproject.org>; Fri, 17 Apr 2026 18:08:32 +0200
Received: by mail-wr1-f53.google.com with SMTP id
 ffacd0b85a97d-43d70b3e159so437036f8f.0
 for <xen-devel@lists.xenproject.org>; Fri, 17 Apr 2026 09:08:32 -0700 (PDT)
Received: from localhost.localdomain (host-78-146-242-105.as13285.net.
 [78.146.242.105]) by smtp.gmail.com with ESMTPSA id
 ffacd0b85a97d-43fe4cb1176sm6088485f8f.3.2026.04.17.09.08.30
 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
 Fri, 17 Apr 2026 09:08:30 -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=google header.d=citrix.com header.i="@citrix.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=citrix.com; s=google; t=1776442111; x=1777046911; 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;
        bh=f5xH1RkeuahuDZVxF9D4w7AKkT9fwbSs/UOLRMa4N9s=;
        b=Z4aj56QgCVar9GZNu7tOqQQnkGwTzjM41+iWlegpM4sl72SCAQtXpa9Fd5xvuDzJnH
         AGdYS3f75kyD/V7wGkquKBCma+m9zvG5Yjkf6SCk5BeY7/9olswZ6UIHFwjUul8mv2Ii
         T9YimTaRIqMBtltaCY5qc4qXsU36f/mo54I38=
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20251104; t=1776442111; x=1777046911;
        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;
        bh=f5xH1RkeuahuDZVxF9D4w7AKkT9fwbSs/UOLRMa4N9s=;
        b=CrZYNPhehiP92+si/BtPqzL45IOix1wNyzo0aSFjQbbLbUB15H1N2XWQQ9lv7XCxY5
         JmD2rp5MSpG7LMyh5rC+FvvCYJLEd0zrEupYsP03uawasxtZM/9g84ibEGZ4RB0kTlos
         f1mt2rhLi+7gxz/qR/rrnQCw54MopEaIAS42rUeUjJMHMpyjvrXfVtDB6mly6LEEhB17
         bPCCv7a65T/B0bN9azOqSm+T/fU2rdBs7M005WiV6hFqJMhDOpLPk2XHkeWSt8aM/lN6
         OdLAQhcYt9XCkyCjTnaluTS/QwUeYqtZ2MLC8NCUgVuxjD7AfKnb6d2JVokjkcNbauFA
         6gCQ==
X-Gm-Message-State: AOJu0Yy/JSK2gEoYcj6gdsAG+8tfRxaciA/k/sWUSqTWA29CWgiVdKnB
	7uEtZ6NMH0ziBC5Td0g29Yw+8MEcJVsEPNoM5vyzMkRiuOS186LlGpHZPKABOb0D014xs+koFy9
	gd4SopRc+Kg==
X-Gm-Gg: AeBDieuUx89Ng4rOfxczYELKJ4FkFx2JnbnLJMxwIrXbro69D6NyNNe9H4T8hRMtJt8
	WBdis6JZRyku/Ul0CyKO+mVN3zhJDECTTMH0tjj7oQ7IXgq4Ydh+kUd0U5nQ5npDoYNQ44dP2mw
	oVQ2O1J72s0LgYIV80nvjXnLpE50rebIFE8CqPIWHn23clCYmcZVAeW7VlLPVK6eDqjyDVRU2qD
	FCP9mqVllE3YLYHiRWBYo4b/yzRsILkwJMtkfGUo6YkemKB7JLFgSbTOrpnFz7MK7S94OkWiWlU
	46PxS0f1Z211XU2U3HShqyzntCra/ls1+zwrNNwK1y2W7IznbCVJbmW43UzV4cpluwRqhlndVUy
	pZ3WSo4gylDy6aCCsSPwkl8Dp4OP/CQ21ZTOgoPlI+g7OqjMp82liY5U8qYCr4AU1W0TG47xD7L
	4yh0OBWklnydsgr1Z7+cNbM9jALOcfdPOLAf6gN5nu0Y9wZMm+HhkqNvpomqS9rUGvtmDlDUpbB
	yhUV1rmU0GgES4=
X-Received: by 2002:a05:6000:2f8a:b0:43d:9bb5:bda5 with SMTP id ffacd0b85a97d-43fe3e0ae25mr5397155f8f.40.1776442111193;
        Fri, 17 Apr 2026 09:08:31 -0700 (PDT)
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>,
	Jan Beulich <jbeulich@suse.com>,
	=?UTF-8?q?Roger=20Pau=20Monn=C3=A9?= <roger.pau@citrix.com>,
	Teddy Astie <teddy.astie@vates.tech>
Subject: [PATCH] x86/boot: Force error checking for reserve_e820_ram()
Date: Fri, 17 Apr 2026 17:08:28 +0100
Message-Id: <20260417160828.526063-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/1776442112-53B7DD75-4F7A7549/0/0
X-purgate-type: clean
X-purgate-size: 3917

Failing to mark Xen as Reserved in the E820 is catastrophic; RAM regions get
handed to the physical memory allocator for general use.  Similarly, failure
to mark the boot modules as reserved is not going to result in a working
system.

Mark reserve_e820_ram() as __must_check, and panic() on failure.  To avoid
opencoding the range in every caller, print a general failure message in
reserve_e820_ram().

Reported-by: Ross Lagerwall <ross.lagerwall@citrix.com>
Signed-off-by: Andrew Cooper <andrew.cooper3@citrix.com>
---
CC: Jan Beulich <jbeulich@suse.com>
CC: Roger Pau Monné <roger.pau@citrix.com>
CC: Teddy Astie <teddy.astie@vates.tech>

Slightly RFC; only compile tested so far.

There's no obvious fixes tag.  This has been many variations of broken since
forever.
---
 xen/arch/x86/e820.c             |  8 +++++++-
 xen/arch/x86/include/asm/e820.h |  2 +-
 xen/arch/x86/setup.c            | 11 +++++++----
 3 files changed, 15 insertions(+), 6 deletions(-)

diff --git a/xen/arch/x86/e820.c b/xen/arch/x86/e820.c
index 872208ab3722..f09a01f0c50a 100644
--- a/xen/arch/x86/e820.c
+++ b/xen/arch/x86/e820.c
@@ -670,7 +670,13 @@ int __init e820_change_range_type(
 /* Set E820_RAM area (@s,@e) as RESERVED in specified e820 map. */
 int __init reserve_e820_ram(struct e820map *map, uint64_t s, uint64_t e)
 {
-    return e820_change_range_type(map, s, e, E820_RAM, E820_RESERVED);
+    int res = e820_change_range_type(map, s, e, E820_RAM, E820_RESERVED);
+
+    if ( !res )
+        printk("Failed to convert E820 RAM %"PRIx64"-%"PRIx64" to RESERVED\n",
+               s, e);
+
+    return res;
 }
 
 unsigned long __init init_e820(const char *str, struct e820map *raw)
diff --git a/xen/arch/x86/include/asm/e820.h b/xen/arch/x86/include/asm/e820.h
index 8e7644f8870b..a86d60ce3e77 100644
--- a/xen/arch/x86/include/asm/e820.h
+++ b/xen/arch/x86/include/asm/e820.h
@@ -25,7 +25,7 @@ struct e820map {
 
 extern int sanitize_e820_map(struct e820entry *biosmap, unsigned int *pnr_map);
 extern int e820_all_mapped(u64 start, u64 end, unsigned type);
-extern int reserve_e820_ram(struct e820map *map, uint64_t s, uint64_t e);
+extern int __must_check reserve_e820_ram(struct e820map *map, uint64_t s, uint64_t e);
 extern int e820_change_range_type(
     struct e820map *map, uint64_t s, uint64_t e,
     uint32_t orig_type, uint32_t new_type);
diff --git a/xen/arch/x86/setup.c b/xen/arch/x86/setup.c
index d041cbd5f6f1..9c1f1eafa0d7 100644
--- a/xen/arch/x86/setup.c
+++ b/xen/arch/x86/setup.c
@@ -1639,7 +1639,8 @@ void asmlinkage __init noreturn __start_xen(void)
     {
         uint64_t s = bi->mods[i].start, l = bi->mods[i].size;
 
-        reserve_e820_ram(&boot_e820, s, s + PAGE_ALIGN(l));
+        if ( !reserve_e820_ram(&boot_e820, s, s + PAGE_ALIGN(l)) )
+            panic("Failed to reserve boot module %u in E820\n", i);
     }
 
     if ( !xen_phys_start )
@@ -1652,11 +1653,13 @@ void asmlinkage __init noreturn __start_xen(void)
     /* This needs to remain in sync with remove_xen_ranges(). */
     if ( efi_boot_mem_unused(&eb_start, &eb_end) )
     {
-        reserve_e820_ram(&boot_e820, __pa(_stext), __pa(eb_start));
-        reserve_e820_ram(&boot_e820, __pa(eb_end), __pa(__2M_rwdata_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
-        reserve_e820_ram(&boot_e820, __pa(_stext), __pa(__2M_rwdata_end));
+        if ( reserve_e820_ram(&boot_e820, __pa(_stext), __pa(__2M_rwdata_end)) )
+            panic("Failed to reserve Xen in E820\n");
 
     /* Late kexec reservation (dynamic start address). */
     kexec_reserve_area();

base-commit: 986707b461eb56d75f55581dd1c8e2633f814795
-- 
2.39.5



From xen-devel-bounces@lists.xenproject.org Fri Apr 17 16:26:16 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Fri, 17 Apr 2026 16:26:16 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1284544.1566257 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wDm1A-00089p-Bx; Fri, 17 Apr 2026 16:26:08 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1284544.1566257; Fri, 17 Apr 2026 16:26: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 1wDm1A-00089i-8r; Fri, 17 Apr 2026 16:26:08 +0000
Received: by outflank-mailman (input) for mailman id 1284544;
 Fri, 17 Apr 2026 16:26:07 +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 1wDm19-00089c-A8
 for xen-devel@lists.xenproject.org; Fri, 17 Apr 2026 16:26:07 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wDm18-005O5B-LE
 for xen-devel@lists.xenproject.org; Fri, 17 Apr 2026 18:26:06 +0200
Received: from [10.42.69.1] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <ross.lagerwall@citrix.com>)
 id 69e25eff-5cb7-0a2a0a5109dd-0a2a4501eb10-26
 for <xen-devel@lists.xenproject.org>; Fri, 17 Apr 2026 18:26:06 +0200
Received: from [40.93.198.13]
 (helo=CY7PR03CU001.outbound.protection.outlook.com)
 by tlsNG-d62444.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.1)
 (envelope-from <ross.lagerwall@citrix.com>)
 id 69e25f1c-c1f2-0a2a45010019-285dc60dc119-3
 for <xen-devel@lists.xenproject.org>; Fri, 17 Apr 2026 18:26:05 +0200
Received: from CH8PR03MB8274.namprd03.prod.outlook.com (2603:10b6:610:2ba::5)
 by LV4PR03MB8281.namprd03.prod.outlook.com (2603:10b6:408:2dc::12)
 with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9818.25; Fri, 17 Apr
 2026 16:26:03 +0000
Received: from CH8PR03MB8274.namprd03.prod.outlook.com
 ([fe80::ebe2:32c1:d2be:a096]) by CH8PR03MB8274.namprd03.prod.outlook.com
 ([fe80::ebe2:32c1:d2be:a096%7]) with mapi id 15.20.9818.023; Fri, 17 Apr 2026
 16:26: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=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=i6a8/BnbzilodaS6IKAVSw7BprbMX9V1v3O1thcCjG5J7gg0P00ikilfvHJExMMabGjMveiXoeGLEyA37hqL46CBrGXh15tlvLZxjtSE1O4IL+rbsTLU2XywdWaXNa3vJZlMGVGtsMt4uyCDgW+XNIONid5OjRewNiDTB+BcMGWtbk3IjGKJdPNto+2anqjjdLdCGpRGzll09vgg5zPLc6bUK6H4InFr2jJKnv7oxSGgZHXI9F/U5k64LFXCFoGy4QyO6kk85tcT0OVaWaS1oVmkK0JJ2+xAyOxHxYnTBSGQf1+ABVS/kvD6tc4RtXpuSByQDy5buQGjDXvLK8rw6A==
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com;
 s=arcselector10001;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1;
 bh=P1UJAZlAegyWWl7YRVVhNpvALJclXHdj7A9lG3tmNDY=;
 b=yoy+fGG7fxUE8thzWcS857VRtCHgui8b08F4Vw3FEhpd+4Ba7KlCanHJ2jslUz49aYpQvpC6bLHOAxwYHEmJ/b3fdYC8Hm0Piw71Y/pyIBCq5vGqi5NdrRGDDvlvOB+0Q9RQDTb/ZHpwsEfLvu9lFsVRJ/SJBSwPpsH4VD44n4e/5fYGDw16q1jnsTfJqtkdCjQqZ7SrnCgyWZU1JuFL/zHvpYxxUfIu6dm9hDEy6f6k6O2sd+Dy1z0bruUoQJ41bHJ80SdH1SZVDIKUM/XRDU9tbAxgiADY2dmg91CA0NN1yfzWGmDMA9ICtazm4Hnn10kaHf1mu3Bx/FxE2fWipQ==
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=P1UJAZlAegyWWl7YRVVhNpvALJclXHdj7A9lG3tmNDY=;
 b=J6tHPnwUutv4xc+lAYyTULKP6t293hpeQtoh2Dpkl02aSELpD0xKfENAObqMAvYPIJIjy14/iFXp7fSxEjoCakmcwKVnT3mlZUmb7ZaIXH/8asbEwdsZsC2+GBHxAT3DsuW0Fh5YzEKn/dC4wZo8XNEQWVFweiPPuLskmXbIKZc=
Authentication-Results: dkim=none (message not signed)
 header.d=none;dmarc=none action=none header.from=citrix.com;
Message-ID: <475d51ad-86a9-4328-812d-c273f602d20f@citrix.com>
Date: Fri, 17 Apr 2026 17:25:57 +0100
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH] x86/mkelf32: Actually pad load segment to 2 MiB boundary
To: Andrew Cooper <andrew.cooper3@citrix.com>, xen-devel@lists.xenproject.org
Cc: Jan Beulich <jbeulich@suse.com>, =?UTF-8?Q?Roger_Pau_Monn=C3=A9?=
 <roger.pau@citrix.com>, Teddy Astie <teddy.astie@vates.tech>
References: <20260417105425.1184232-1-ross.lagerwall@citrix.com>
 <a6b71c55-fce7-4995-b38b-83133d702bd5@citrix.com>
 <e12a3f73-6121-4152-8f54-5bed0f36d087@citrix.com>
 <f385a4cc-f6c9-427a-97a7-f0cb72e5ea07@citrix.com>
Content-Language: en-US
From: Ross Lagerwall <ross.lagerwall@citrix.com>
In-Reply-To: <f385a4cc-f6c9-427a-97a7-f0cb72e5ea07@citrix.com>
Content-Type: text/plain; charset=UTF-8; format=flowed
Content-Transfer-Encoding: 8bit
X-ClientProxiedBy: AM0PR10CA0006.EURPRD10.PROD.OUTLOOK.COM
 (2603:10a6:208:17c::16) To CH8PR03MB8274.namprd03.prod.outlook.com
 (2603:10b6:610:2ba::5)
MIME-Version: 1.0
X-MS-PublicTrafficType: Email
X-MS-TrafficTypeDiagnostic: CH8PR03MB8274:EE_|LV4PR03MB8281:EE_
X-MS-Office365-Filtering-Correlation-Id: 4e5fca16-56c7-44e1-ed31-08de9c9e046d
X-MS-Exchange-SenderADCheck: 1
X-MS-Exchange-AntiSpam-Relay: 0
X-Microsoft-Antispam:
	BCL:0;ARA:13230040|1800799024|366016|376014|56012099003|22082099003|18002099003;
X-Microsoft-Antispam-Message-Info:
	BoR4uQNgy8d0BMiRHNlES0lSymxuu0iw1d1g5dm0e7I+6rfPiKmstWRdOxoo/qnqv5Ofp5gnmXTbFyiYunZGOJvsf+EcsC/wR1+uUacxPWxo6yaK2Sk66SfG12VEs5+3ruDODlIHzGMD9l1jHjMBCliZ8AyEWFbGAhlBbv4Zaukiwq0NqbNXJFWPB2jUSHNGE/xtRyBFlXMeay6UuNeMNmSxplAokaIMppc2EomtiYNpIfVYsZCAQEtliqq+lXEy7GE32jOoIY76gh73LE9XhlkpfDaj5AK2AXhI/pV/BkaqoH+cGSbVLtI45ZPEXigkxzRQc4TCM1pSeDvR3Ns9e7/eX48pNwypwP/UtfAdwMz512oFiH3EZlRVwTvv9gdI2Hzcyen2l9zh1MD0O7WCcPyMJGW+sfhUVeSDjoMFgLTrtzhrKFYBFwOyNNY6tbJYHUhRxaI6P/V8m7QtKt3W+XMSFYGPVrlnJwAnEhoy8/kLcrg/RV4XwJJWSFTO8G8maoiQkmViMBdWKZm0Y7rBesCaj0B23pbWAWxwR1zHNHXpYloyGfcVvybnxVotxG4Pp4BhFogfPGfvL98KFHKn1VBcbL7byEnmecVkAfNGUEb+aTQeEMcr21TP2ZgAMHKcr3RnXDRFA2SHj9ARXvLlLJu2JHw7jcTnK/Gg/xAwtNX8nIUEU8fvU5JcSTnkoIe2+0+6h3wolGletKlt4wyLP24hri+mqOjKxkaKJmr5oKg=
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)(1800799024)(366016)(376014)(56012099003)(22082099003)(18002099003);DIR:OUT;SFP:1101;
X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1
X-MS-Exchange-AntiSpam-MessageData-0:
	=?utf-8?B?WUQwSnQwcCtXMHBxbDIyTXM2SGo2RnNvU0J2ekM3T1o0cUVUUkN5eHAwUS9Q?=
 =?utf-8?B?MEJoQXdrR3JUaHRBbmVaYktaNG5YR1NOYS9zakNpWTFhT3hEazFQTWo4cmFp?=
 =?utf-8?B?aXo2ckI5cE0ydk5rWEJBbkxWTGdwekhnQnRaSU1vRUJVdlBUbUsvMjNuWDZa?=
 =?utf-8?B?MkhmVG1PeGlFaEtHbmg0WkZNbnVYWFc4MlVEQ3Bqd3Jwa2FEYXZ0cE9rMk1G?=
 =?utf-8?B?MjBHa3ZHd1hPYk5XR3BFdEhhejUwQzJxaHlRZTdpSWFCVGVIQzFLK1ZjTFRK?=
 =?utf-8?B?blFWVGZiMFBWOXRybzFaK1VqaXdiMkczUmRGV1dxaVdDRVFXenpGNk5qaWF2?=
 =?utf-8?B?d1VCaG1KNXQraUt2UXhXQTQvdmZrZmxuL0dVdE5uaFN0QW9HcmtVK1BWV2o2?=
 =?utf-8?B?U08rUUZnNUhQc0x4MlZKSHI1Y0UrVWpHVFlRT1NTVEl6VG4va0RmeXV3d011?=
 =?utf-8?B?ZVN1dFBLU2xydTFtaXNUT01pYkk0UDk5VmJCT3JCQUUzZEM2SmozeGRFbkl0?=
 =?utf-8?B?ZXErNTFNcklqMHRJV1FIcjJMZTVaY3IwYnhHVDBiOFd6VDNGVTVDUjNELzRE?=
 =?utf-8?B?L0ZRQjdKMndDZzNQbHEzQ3FWbUduTERKN2Z3dUxXNVZTdEFsRERuT0c5b1FJ?=
 =?utf-8?B?MmVSQXRKU2tYbXV3SmFuNitRaVF2TjZiYjhDUXA3L01jakdlVHgzdEpxMlFp?=
 =?utf-8?B?VzZka0p3MDNWRkkwVitzZnRnQ2t4Q1ZQVGoxeTEyK2tWNUNKRWUxNG1ucVI5?=
 =?utf-8?B?T0o0UExjcTBobmtwQ1ZEL1A2dS9IKy9uaHFtZGJsbXRibllvT3NwQnlMWlFB?=
 =?utf-8?B?R1JHQUZSWll1KzhXaU9KdWphRlNzaEl2cnlQa25ySGdwSUtlSmdKdTczS1ZR?=
 =?utf-8?B?RDBoSG1Bc2hIVEIyT0tzcGIxNmVyYmpPdzUxUDU1UHVyUHdMSitiQ0pSc3FN?=
 =?utf-8?B?aHFtWDFGRUJ5VklzTC9EWDN3TDRxN0VmbFR1bVRyaVZUM1B1MUt6eXkrbk4y?=
 =?utf-8?B?STdtTGlQdzdycUhrUStBOWpHcTI3ZkVMUFBRLzduWDlrNGg4eGl5OVFiUGlt?=
 =?utf-8?B?Zld5UHRXTm4rcllGSnFxaDVIL0h5N25xZCt4Q29mWWJ4ajZDVmFUM1VaT2hr?=
 =?utf-8?B?Y2hIZFFZaGNJaU9yWWFKbHhqQnNIY0JDNGd3R2pUTy9KRWIvcFppc3k2eExZ?=
 =?utf-8?B?UDZHa3l3V0ZqSWZ3NTR2aTFtcEQ0SzFDRTdCUnpkbnJ2MitnOUpSdEI1Z1Z3?=
 =?utf-8?B?VFVXSFdMMUdWMXdyT1F4dVFhREJYSjQ4eUE3NWNOejRkODRXTGpQdDlhMHhD?=
 =?utf-8?B?aHM5MkZ3REEvaHErcFJCSHBqRkp2T3E0VS80VGFIMktSRCtua1FENUdHR2xi?=
 =?utf-8?B?VjFPYWgwdXBZcmRtYXA1U3V3MmQvNTV1RExhcUJ4d1lmcjdVQldPNDZpMDFW?=
 =?utf-8?B?M0RlYllXNVY1MzZZeFM1ak1ab3hlTTFNK00yTlZvbzJMQnFZeVFGNzJzbTZk?=
 =?utf-8?B?WnVNUTZsa05NV1Qra3F4QVE3VHlkNGF6Tk5DYi9YbE9QYzFxSlVoY1lWRzJ4?=
 =?utf-8?B?aEYzRnRHTzhUOGlmUkptRXdRV0g2S3JZbkZPVEE1VFcrYTQvdDJhSHVpWVEw?=
 =?utf-8?B?S2IzNGZZR0ZwYzlaQnlKd2hMSlVYdmFYM1pSQVpsT1lXd1hpK1FvMXM1YTVx?=
 =?utf-8?B?V0JFTWtTc01TMFpKUnFQN3Zzak9hZkc3eDhWMkVHaUp3R3hiYmVmYmRlL1g5?=
 =?utf-8?B?MGJmdzZBcWcwY1dtSVNZRjJWRDZTSXlENE9tTENMMDFGNnRMa1hNWFJuaGMz?=
 =?utf-8?B?TkVEYy9ZL1RCUkZhbSsxbHZ5bkJ3djFpRXlyZlpSZ29VZFUwYVZ2VlhpUnNj?=
 =?utf-8?B?Wmw5Ri91d2w3K3RtdE45SXZjeFgyMXVERU9oYWp3MytlV0ZSek1qanR2bEFU?=
 =?utf-8?B?NEh2Um9IclFqd0JJS1pFYUp0b0s1UXEyY2toYkF4V0Z1ZjNsVXhLMG5waVc4?=
 =?utf-8?B?VFRPKzRPN3U5bWIwaUI3VXg3d09KMjRPUEdzd2lXVlN5VFZTMVFsazAxZExK?=
 =?utf-8?B?YUVHQzhRTTNsT1d3a285akNTMGN6eUcxM2JhWVJuWmtWQWErVEJhdTE3K2dm?=
 =?utf-8?B?aVA3RHVBYzVOaTh4akZPYlRENmdnWk9IckwzcW96SW9rOEpmNXY5Mk1HZnVN?=
 =?utf-8?B?cW9taWllTmk4blRRaWhlYk9BVVR2UHVwblhpUmZXVCticTlNOU1aeElkK3ZW?=
 =?utf-8?B?Rk9POGRZeWkzcnI4MmFSUzNOVWVEL08wRXZEMWNibHI5cGRNUVlXOER0TUpU?=
 =?utf-8?B?TGZpZWlTQUJoaFYzaElvNGNoZDBTL1NRVmVCdTdLN1pIcjB5clNBU3NVQU5q?=
 =?utf-8?Q?qs1cIIPn0Mg0EDbw=3D?=
X-OriginatorOrg: citrix.com
X-MS-Exchange-CrossTenant-Network-Message-Id: 4e5fca16-56c7-44e1-ed31-08de9c9e046d
X-MS-Exchange-CrossTenant-AuthSource: CH8PR03MB8274.namprd03.prod.outlook.com
X-MS-Exchange-CrossTenant-AuthAs: Internal
X-MS-Exchange-CrossTenant-OriginalArrivalTime: 17 Apr 2026 16:26:02.7946
 (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: AZIY6s0Q9CFOCEb//Eq02MOzjgUKgt8BIJ2HD/HAhdYjNLcCOAVjRV3M0Uv1G1X1CEYISPT0D6xIdf6NVn9oXn2UaZFEvm2ksYFJgQGUsM0=
X-MS-Exchange-Transport-CrossTenantHeadersStamped: LV4PR03MB8281
X-purgate-ID: tlsNG-d62444/1776443166-B5A69FF4-CEE15A28/0/0
X-purgate-type: clean
X-purgate-size: 2894



On 4/17/26 3:35 PM, Andrew Cooper wrote:
> On 17/04/2026 2:25 pm, Ross Lagerwall wrote:
>> On 4/17/26 12:03 PM, Andrew Cooper wrote:
>>> On 17/04/2026 11:54 am, Ross Lagerwall wrote:
>>>> Fix the code which tries to pad the load segment to 2 MiB but only pads
>>>> it to a 1 MiB boundary.
>>>>
>>>> This manifested itself as a page fault while scrubbing RAM during boot.
>>>> Xen failed to mark its location as reserved in the E820 because the
>>>> last
>>>> 2 MiB superpage overlapped a reserved region which meant the memory was
>>>> given to the allocator despite being RO.
>>>
>>> Do you have the relevant snippet of the E820?
>>>
>>> AIUI, you're saying that Xen was placed immediately below an E820
>>> reserved region (a valid layout at 1M alignment), where said region was
>>> inside the 2M-aligned boundary that Xen was expecting.
>>>
>>> But I don't quite follow what happened next.  Where does read-only-ness
>>> come into it?
>>>
>>
>> Relevant E820:
>>
>> (XEN) [00000063469ff02c]  [000000003f2df000, 000000003f31efff] (ACPI NVS)
>> (XEN) [00000063519dc9f2]  [000000003f31f000, 000000004cfebfff] (usable)
>> (XEN) [000000635c504aff]  [000000004cfec000, 000000004d07bfff] (ACPI
>> data)
>> (XEN) [00000063677372dc]  [000000004d07c000, 000000004d09bfff] (ACPI NVS)
>>
>> With a load size of 0x900000 (padded to a 1 MiB boundary), Xen was
>> placed at
>> 4c600000-4cefffff.
>>
>> In __start_xen(), there is a call...
>>
>> reserve_e820_ram(&boot_e820, __pa(_stext), __pa(__2M_rwdata_end));
>>
>> ... which tries to reserve the region 4c600000-4cffffff (size 0x1000000),
>> padded to a 2 MiB boundary since it is using superpages.
>>
>> reserve_e820_ram() doesn't reserve anything because the request
>> doesn't fall
>> within a single RAM region. Therefore, the pages get treated as normal
>> RAM and
>> will get scrubbed later. However, __start_xen() also calls
>> modify_xen_mappings() to mark all of .text and .rodata as RO in the
>> direct map
>> so when it actually tries to scrub it it gets a page fault instead
>> (which is I
>> suppose slightly better than just zeroing Xen's .text).
> 
> Oh, well I'm glad that I fought to adjust the directmap perms.  This is
> exactly the kind of thing I was looking to catch.
> 
> reserve_e820_ram() failing here is also catastrophic; the bootscrub can
> be bypassed with a cmdline parameter.
> 
> Either way, can I suggest the following adjustment to the commit message:
> 
> This manifested itself as a page fault while scrubbing RAM during boot.
> Xen failed to mark itself as reserved in the E820 (due to spanning
> multiple regions), but did restrict the permissions in the directmap.
> All of Xen is then handed to physical memory manager as available for
> use, and scrubbing hit the directmap protections.
> 
> ?

Sure, fine with me.

Thanks,
Ross


From xen-devel-bounces@lists.xenproject.org Fri Apr 17 16:27:57 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Fri, 17 Apr 2026 16:27:57 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1284554.1566266 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wDm2u-0000J3-Li; Fri, 17 Apr 2026 16:27:56 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1284554.1566266; Fri, 17 Apr 2026 16:27: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 1wDm2u-0000Iw-J6; Fri, 17 Apr 2026 16:27:56 +0000
Received: by outflank-mailman (input) for mailman id 1284554;
 Fri, 17 Apr 2026 16:27:55 +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 1wDm2t-0000Iq-A7
 for xen-devel@lists.xenproject.org; Fri, 17 Apr 2026 16:27:55 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wDm2s-00ABQP-JM
 for xen-devel@lists.xenproject.org; Fri, 17 Apr 2026 18:27:54 +0200
Received: from [10.42.69.3] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <ross.lagerwall@citrix.com>)
 id 69e25f8a-e002-0a2a0a5209dd-0a2a4503900c-0
 for <xen-devel@lists.xenproject.org>; Fri, 17 Apr 2026 18:27:54 +0200
Received: from [40.107.209.10]
 (helo=PH8PR06CU001.outbound.protection.outlook.com)
 by tlsNG-33051d.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.1)
 (envelope-from <ross.lagerwall@citrix.com>)
 id 69e25f88-672d-0a2a45030019-286bd10af93a-3
 for <xen-devel@lists.xenproject.org>; Fri, 17 Apr 2026 18:27:54 +0200
Received: from CH8PR03MB8274.namprd03.prod.outlook.com (2603:10b6:610:2ba::5)
 by LV4PR03MB8281.namprd03.prod.outlook.com (2603:10b6:408:2dc::12)
 with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9818.25; Fri, 17 Apr
 2026 16:27: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%7]) with mapi id 15.20.9818.023; Fri, 17 Apr 2026
 16:27: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=XwffeYE4MaMbHKnEgNrLcSUd0tjLHmkhgc7phfPReejsK/zGzc7SWxvhKFmt+SVlhE0hc9j9LydTuLeuoHk5JEiWiQBu8STt27FvcjBeCvOJ/IfrIBD9OOrKYDTgO7/4SCiHPbswzWZHBHX9WtTnKK/qZin7TzlWmWhk76b+TgFhHfYkrCMqDSuRIm2V1FrWZD00VDfO1XJC1E5VjBKW6owfFUgvrVscJL/ydXPGtaPAl9w5E9qy8f1e9d73D+V/zOP7rOqtvdayHeWooF5vsN7mXo31g2XzGsbtAQcTmfouYg+r4HnxbEIltNNyNaCrFzS3P29KHgAy1d/s9BSBww==
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com;
 s=arcselector10001;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1;
 bh=CtLvE4RacGmVpg8gOvDV8JUO4ULJRNtAd5z6yJb/2p0=;
 b=vT1I7RrpBY6G1W6TzPvoO1SeMEm7ELpW3UphUDtHo2Jnwb+/RYotk8nUbTgDZXs6OuLZO9k2sFQ86BBfVL4r2RM7mvRTRTUC1ethoLwRHS7YbR8KbQCxVPmGlwkrkJuvCF6KsPvvcbl+nheb1JMhtf461xaJEOEOeC5M5syXWQ/FSKtbsErD4ig9wkiFSK+dQJSy69zGQeh8e7vRQG90pR538ovNFMXxdhhACd3VRR41Gucl8bZIVj0vxUfBntjxjl2JoSfmDwsAASw14LUykIV3nR22uNEPbc/SvsJVpFOF2X0HoRqEHeibdYRI061z/G/Y4S5cf1JlDuU1lpcYRw==
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=CtLvE4RacGmVpg8gOvDV8JUO4ULJRNtAd5z6yJb/2p0=;
 b=fZ/cBloBanlYNb/cgzYe2u/sjmFw+reMDWjijvW87EQ5J0tEVj7TfuusJDyLMUbDTVXOHoW2twJzsFi4LNAyaJg3242zOC6AjAlUpi9kzJigwKmu9vYEFaqL1EWTdObX+RkMWABjowWYusCnkIS60XO0QDEHG1JAWcR4vsMD6xU=
Authentication-Results: dkim=none (message not signed)
 header.d=none;dmarc=none action=none header.from=citrix.com;
Message-ID: <85625a6f-8d04-4863-8f74-461c9a85464f@citrix.com>
Date: Fri, 17 Apr 2026 17:27:46 +0100
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH] x86/boot: Force error checking for reserve_e820_ram()
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.pau@citrix.com>, Teddy Astie <teddy.astie@vates.tech>
References: <20260417160828.526063-1-andrew.cooper3@citrix.com>
Content-Language: en-US
From: Ross Lagerwall <ross.lagerwall@citrix.com>
In-Reply-To: <20260417160828.526063-1-andrew.cooper3@citrix.com>
Content-Type: text/plain; charset=UTF-8; format=flowed
Content-Transfer-Encoding: 8bit
X-ClientProxiedBy: LO3P265CA0005.GBRP265.PROD.OUTLOOK.COM
 (2603:10a6:600:bb::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_|LV4PR03MB8281:EE_
X-MS-Office365-Filtering-Correlation-Id: 10e83167-2c25-4468-2580-08de9c9e44eb
X-MS-Exchange-SenderADCheck: 1
X-MS-Exchange-AntiSpam-Relay: 0
X-Microsoft-Antispam:
	BCL:0;ARA:13230040|1800799024|366016|376014|56012099003|22082099003|18002099003;
X-Microsoft-Antispam-Message-Info:
	ayEo75/jVyZBlXyAXk0XV5YIrY+5JOTAKkYFQ1aWyNlUByHKTqtZYKhIzG2mez8xz6lvS8p5DYuxGs1khi2i+sXmdYlZeEbaP7Y+sQozsrRhKuHGooqvKHVf3FmQVOb3rdX7RaoB3uitxroDKXhb5ra4bI0PZXQABompPj+fJSPbv9ZH2wUMQwIhtPI5RtnBVSVzfr4AmVHZWDAvOl6AdyMQIPMCzuht84NhQlzwKd9Ntr7QNH37kL523rOGcSd1i8zssvK+/JBoyI9H+8V/M0UXM2r9C2VfY9E4kBONRjB8/PIupb1HTNQoLZ1hCNLs2iVsRH5EVi7SP6trjjWFXkUp4ANqRzjbo7ISbK133UcumpkvdWDhQS36SwFXAtC5FA41XNAU2oJ1FDm7Vx/dLDPKv4jgtEzR7Iw2jVsydKNMZzn7dZOnlcL8U2lpQwAzHly2DhWtDncvmYtb+rImYHBCz5xo6VoqiUS3lIFEHwBbQzWSKYTWrtIO2BN49hXJjgBSURGGPvMAc/1J2PdN5oVHJs5mtfgTcyA6rjAHKw6aUXOdsyNRo1KPkoRhiA1tOt9aBczHWI02w4a7Y9Xdh1k4rCqx5x+4uBoc+NXTNZJQIq8WGg/LeYlB+9XDo80pOCCmsu4M0RfF807z0RkubAp8hnG5PcS9S8Wcmwd+4NVx3EtWS+C1pR8jPd27nZ6huOB19YgwzAJZKyErx8ArwE6U58qOdFihkPqbfhvr8bw=
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)(1800799024)(366016)(376014)(56012099003)(22082099003)(18002099003);DIR:OUT;SFP:1101;
X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1
X-MS-Exchange-AntiSpam-MessageData-0:
	=?utf-8?B?bHYwNFk2b2hYMTZ4U3NsWjZQeTc5U3AwRWVTeWN1QmRDT3FsTXNtWFJ5VExh?=
 =?utf-8?B?QkdNRG5uREh6SmJ2QytiQTlpV203Q1paMkU5WWpqK3lKRWt3VDk1aTM2L0xS?=
 =?utf-8?B?d1djbHZaenRtaWRZMUJxb0VHMDBEdTAzRWlnTWxHWVJWV2RtdGZ2SFcyVDZC?=
 =?utf-8?B?L3JaSHRmRm4xVldwYnI1VEhudXNXRTY2SzQzNFM4YzZTa0pXYjdxUUhucGFP?=
 =?utf-8?B?ZVZPNnBiTDV1aFpLVzJ4NUdsTmhmUkxIZUNOT1hpeURPdnFTbk5rN253eUwx?=
 =?utf-8?B?M0NhblMzUW9GMHRTaDBRbm9XbFA5YVh2S0t5K0ZmTDQ5bC9XY003RDNIbWZJ?=
 =?utf-8?B?K3NFVHVmcHJKSHJaVUZnT1Z2S1JsQlN5V1RaeXkxaWNZanZPNG5LRG15YmpS?=
 =?utf-8?B?ckpjWEZDSHRsbnZDOGJJZytxMzI4ZzluMUxsbFJ0UHFlYWJuQzFDSVhUck1p?=
 =?utf-8?B?N1ZNYldMT3FOMXp0QmZiTW53bkwrR2k1NUhCcGY5SGZXc3IwSWpVRjFIMGtT?=
 =?utf-8?B?c2sxeFdYa0dxMmxmKzBldCs3ZHN6eUxGZ2xwNERENFZRY3NjNWRhdXo1WTdF?=
 =?utf-8?B?OWl1bzh1Y280MUhadkVmak1KY3ZXT3hDaFBhdWhBSjkyRzhFWUVqanRkeWZi?=
 =?utf-8?B?ckxsL0hMNE5hT2M0L2VJNndoWkJNbENvdmwrUkFHUHFIOGhwbkJsdUhvU09t?=
 =?utf-8?B?TVJuUUwyTXZLZUJ0SVFqaHJ1THZrZXZTM21FOVpTWlZudHNBNktsbW45Y1NL?=
 =?utf-8?B?N2k0UTM2blh5RmxCUy9MeHBUVzR1RU1kWitVaDN5cG1WMXdnK3hhMjZUUUZt?=
 =?utf-8?B?RWdtbFJoci84MUFySjM0TDBOYXNIWjJKaGlwVkJ6dndRd01TNERkbWd2eDA4?=
 =?utf-8?B?OTg4NDBRNXFRUmJUZ1VoZHcySzFvMk54YXNlRnppSzd5Y1AramNlTFRMSVNZ?=
 =?utf-8?B?eXJnQzhWSDd0VzZXYldWd1BBV0h5UWtFaDVWcUdNQm8zWDR3aFk5M0I5V3Rs?=
 =?utf-8?B?REsvV3FodkZSd1p0SzJrUDNyVU13emhnUjlqT0E5QVVhMXg2anJLOGZlS2Jy?=
 =?utf-8?B?U2I0R2pRNEQwWjZUclpDVklFZWwxSkxRT2RlMnpCK3lSV3EvU2RkbnJpU1Bv?=
 =?utf-8?B?YUplWmQ4Rzd6Q3hFYkZPTU5lbWNOWW1JK3BqQVF0NHNWOW5rMWs2ZytYWm10?=
 =?utf-8?B?b1YrZzFzZzJXSjBjdStZWXNQV2NsZVlxSmxyMm5NSE9yeTdKRGhBenpPZ1Za?=
 =?utf-8?B?UWZWM3ZiYS9jQ3FURCtTY3ZPVG5sOXVuSXE3UnNhbHFmd2UyanNMTkpuVDli?=
 =?utf-8?B?KzFOekRuY21pa09yaC9tVkNYM0VFcHdGellFcGV1bm0wZkNKaWxDb2dmYmdh?=
 =?utf-8?B?UmJCRkI3b211NlRCeXdnN3c5VjR1V0VsdGhaRVVNL2FHdmNEN3pDR2ZTWVll?=
 =?utf-8?B?Qy9rREdQZlk2R2tkTmtCRmJ1UGdlU0UyMXNadFg2a1o2U1RCLythWm5xejZ6?=
 =?utf-8?B?Q0QxNEw4RlhBdEVwenBwY292aHlVaG0zY01xb1hqbTBrTXcxWGVGMlJNV25O?=
 =?utf-8?B?YkRGS2tkd2pPdVgxS1o2RUR4czVMSjJSWnNYYU9RRHROdGd4YkZYaXV1SHh0?=
 =?utf-8?B?MUpuVHM5eERZRVR6dXYremtHMERvVEFIRUxBaE5KeHlwNFBmcnFMRWhWRFlZ?=
 =?utf-8?B?amVQNERUTXJyVFJGdWxibzN2a1VsNUpsTFJ5SWZyVG5qc2hLSmZ6MU8xY3N5?=
 =?utf-8?B?WDFrWHZGcjQrK3FINlVncmx0bnpWQmpmckRqelMvVCtudTMxNjNKU2lLdlRw?=
 =?utf-8?B?bXg1YlJ4REZaS3JjMjV6dFhjb1lFakhjVWJ3UWpXQ0RrblVScW15ZlFkNitC?=
 =?utf-8?B?cVhFcWNZd2lsRUFUQytndE1XTjQ5UHBZMzhxcjdoZUhMSGIwYXBDcDJpMjhG?=
 =?utf-8?B?NFlQY2NmQ1U1RGw4dVJXWksrekZ4ZGpZdTZmKzFtS1g2cFc4YzJTeGF3Ui9W?=
 =?utf-8?B?dHU3MXBQZkM1bk51c09GaUVGTDB0cmlXaEVqY1haRGw0T0J4R1RZTk1ibFEw?=
 =?utf-8?B?UGpSYVhBWkVqYm0zYkhraEJINDN0eWZYVDRGcGVDNi93aWJxbEltdHd0ZUpy?=
 =?utf-8?B?NjcvbzZQN2orSHVWRHN3dWNiV1hHWkVRdFNGbWlLZy9pdEwyQ1ZNS3htbjZP?=
 =?utf-8?B?U2phNW9CQjZNV2EwTDJTbzhqd0FZQ2piZGJpZmtoT0dtZjJJQjQ4R0p2OFkr?=
 =?utf-8?B?eU9aMWdKUTVWNG9OZmpWeUpwV3ZnVEk3TzdLMXpCZ3A0VGt3NUZhalMwalJL?=
 =?utf-8?B?SDVXQzh2MHNheHBLSXRRYmZSYWgxOEUyT2JVU2ErNVhScTRhck9UeEt0bXYz?=
 =?utf-8?Q?JY9JF+yoCg+MnRg4=3D?=
X-OriginatorOrg: citrix.com
X-MS-Exchange-CrossTenant-Network-Message-Id: 10e83167-2c25-4468-2580-08de9c9e44eb
X-MS-Exchange-CrossTenant-AuthSource: CH8PR03MB8274.namprd03.prod.outlook.com
X-MS-Exchange-CrossTenant-AuthAs: Internal
X-MS-Exchange-CrossTenant-OriginalArrivalTime: 17 Apr 2026 16:27:50.9981
 (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: bFZOrA8S9A8Z9nkIL3gCbk3Cesfb4y7UnvAt3+A0/e5LouvHwO+Ofx4Ts1kPGvOSjqfQQP+Ot817Vmj/kQNGJdrmGbrVGLgiXtFlLA84UHI=
X-MS-Exchange-Transport-CrossTenantHeadersStamped: LV4PR03MB8281
X-purgate-ID: tlsNG-33051d/1776443274-2B56F938-9F749A29/0/0
X-purgate-type: clean
X-purgate-size: 4086

On 4/17/26 5:08 PM, Andrew Cooper wrote:
> Failing to mark Xen as Reserved in the E820 is catastrophic; RAM regions get
> handed to the physical memory allocator for general use.  Similarly, failure
> to mark the boot modules as reserved is not going to result in a working
> system.
> 
> Mark reserve_e820_ram() as __must_check, and panic() on failure.  To avoid
> opencoding the range in every caller, print a general failure message in
> reserve_e820_ram().
> 
> Reported-by: Ross Lagerwall <ross.lagerwall@citrix.com>
> Signed-off-by: Andrew Cooper <andrew.cooper3@citrix.com>
> ---
> CC: Jan Beulich <jbeulich@suse.com>
> CC: Roger Pau Monné <roger.pau@citrix.com>
> CC: Teddy Astie <teddy.astie@vates.tech>
> 
> Slightly RFC; only compile tested so far.
> 
> There's no obvious fixes tag.  This has been many variations of broken since
> forever.
> ---
>   xen/arch/x86/e820.c             |  8 +++++++-
>   xen/arch/x86/include/asm/e820.h |  2 +-
>   xen/arch/x86/setup.c            | 11 +++++++----
>   3 files changed, 15 insertions(+), 6 deletions(-)
> 
> diff --git a/xen/arch/x86/e820.c b/xen/arch/x86/e820.c
> index 872208ab3722..f09a01f0c50a 100644
> --- a/xen/arch/x86/e820.c
> +++ b/xen/arch/x86/e820.c
> @@ -670,7 +670,13 @@ int __init e820_change_range_type(
>   /* Set E820_RAM area (@s,@e) as RESERVED in specified e820 map. */
>   int __init reserve_e820_ram(struct e820map *map, uint64_t s, uint64_t e)
>   {
> -    return e820_change_range_type(map, s, e, E820_RAM, E820_RESERVED);
> +    int res = e820_change_range_type(map, s, e, E820_RAM, E820_RESERVED);
> +
> +    if ( !res )
> +        printk("Failed to convert E820 RAM %"PRIx64"-%"PRIx64" to RESERVED\n",
> +               s, e);
> +
> +    return res;
>   }
>   
>   unsigned long __init init_e820(const char *str, struct e820map *raw)
> diff --git a/xen/arch/x86/include/asm/e820.h b/xen/arch/x86/include/asm/e820.h
> index 8e7644f8870b..a86d60ce3e77 100644
> --- a/xen/arch/x86/include/asm/e820.h
> +++ b/xen/arch/x86/include/asm/e820.h
> @@ -25,7 +25,7 @@ struct e820map {
>   
>   extern int sanitize_e820_map(struct e820entry *biosmap, unsigned int *pnr_map);
>   extern int e820_all_mapped(u64 start, u64 end, unsigned type);
> -extern int reserve_e820_ram(struct e820map *map, uint64_t s, uint64_t e);
> +extern int __must_check reserve_e820_ram(struct e820map *map, uint64_t s, uint64_t e);
>   extern int e820_change_range_type(
>       struct e820map *map, uint64_t s, uint64_t e,
>       uint32_t orig_type, uint32_t new_type);
> diff --git a/xen/arch/x86/setup.c b/xen/arch/x86/setup.c
> index d041cbd5f6f1..9c1f1eafa0d7 100644
> --- a/xen/arch/x86/setup.c
> +++ b/xen/arch/x86/setup.c
> @@ -1639,7 +1639,8 @@ void asmlinkage __init noreturn __start_xen(void)
>       {
>           uint64_t s = bi->mods[i].start, l = bi->mods[i].size;
>   
> -        reserve_e820_ram(&boot_e820, s, s + PAGE_ALIGN(l));
> +        if ( !reserve_e820_ram(&boot_e820, s, s + PAGE_ALIGN(l)) )
> +            panic("Failed to reserve boot module %u in E820\n", i);
>       }
>   
>       if ( !xen_phys_start )
> @@ -1652,11 +1653,13 @@ void asmlinkage __init noreturn __start_xen(void)
>       /* This needs to remain in sync with remove_xen_ranges(). */
>       if ( efi_boot_mem_unused(&eb_start, &eb_end) )
>       {
> -        reserve_e820_ram(&boot_e820, __pa(_stext), __pa(eb_start));
> -        reserve_e820_ram(&boot_e820, __pa(eb_end), __pa(__2M_rwdata_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
> -        reserve_e820_ram(&boot_e820, __pa(_stext), __pa(__2M_rwdata_end));
> +        if ( reserve_e820_ram(&boot_e820, __pa(_stext), __pa(__2M_rwdata_end)) )
> +            panic("Failed to reserve Xen in E820\n");
>   

This condition is inverted.
Otherwise this looks like a sensible change.

Ross


From xen-devel-bounces@lists.xenproject.org Fri Apr 17 17:02:30 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Fri, 17 Apr 2026 17:02:30 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1284580.1566281 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wDmaE-0005Nt-IL; Fri, 17 Apr 2026 17:02:22 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1284580.1566281; Fri, 17 Apr 2026 17:02: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 1wDmaE-0005Ne-B4; Fri, 17 Apr 2026 17:02:22 +0000
Received: by outflank-mailman (input) for mailman id 1284580;
 Fri, 17 Apr 2026 17:02:20 +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 1wDmaC-0005Jz-9o; Fri, 17 Apr 2026 17:02:20 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wDmaB-000jIW-MX; Fri, 17 Apr 2026 19:02:19 +0200
Received: from [10.42.69.9] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <andrewcoop@xenbits.xen.org>)
 id 69e2678f-bab6-0a2a0a5309dd-0a2a4509cc8a-30
 for <multiple-recipients>; Fri, 17 Apr 2026 19:02:19 +0200
Received: from [104.130.215.37] (helo=mail.xenproject.org)
 by tlsNG-bad1c0.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.1)
 (envelope-from <andrewcoop@xenbits.xen.org>)
 id 69e2679a-2497-0a2a45090019-6882d725c690-3
 for <multiple-recipients>; Fri, 17 Apr 2026 19:02:19 +0200
Received: from xenbits.xenproject.org ([104.239.192.120])
 by mail.xenproject.org with esmtp (Exim 4.96)
 (envelope-from <andrewcoop@xenbits.xen.org>) id 1wDma4-006TOt-20;
 Fri, 17 Apr 2026 17:02:12 +0000
Received: from andrewcoop by xenbits.xenproject.org with local (Exim 4.96)
 (envelope-from <andrewcoop@xenbits.xen.org>) id 1wDma4-007har-1n;
 Fri, 17 Apr 2026 17: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; none
Content-Type: multipart/mixed; boundary="=separator"; charset="utf-8"
Content-Transfer-Encoding: binary
MIME-Version: 1.0
X-Mailer: MIME-tools 5.510 (Entity 5.510)
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 488 v1 - x86: Floating Point Divider State
 Sampling
Message-Id: <E1wDma4-007har-1n@xenbits.xenproject.org>
Date: Fri, 17 Apr 2026 17:02:12 +0000
X-purgate-ID: tlsNG-bad1c0/1776445339-93979A53-BBDDC461/0/0
X-purgate-type: clean
X-purgate-size: 17345

--=separator
Content-Type: text/plain; charset="utf-8"
Content-Disposition: inline
Content-Transfer-Encoding: 7bit

-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA256

                    Xen Security Advisory XSA-488

              x86: Floating Point Divider State Sampling

ISSUE DESCRIPTION
=================

Researchers from the CISPA Helmholtz Center for Information Security have
discovered Floating Point Divider State Sampling.  It is detailed in a paper
titled "TREVEX: A Black-Box Detection Framework For Data-Flow Transient
Execution Vulnerabilities"

For more information, see:
  https://www.amd.com/en/resources/product-security/bulletin/amd-sb-7053.html
  https://roots.ec/blog/fpdss/

IMPACT
======

An attacker might be able to infer data belonging to other contexts,
including data belonging to other guests.

VULNERABLE SYSTEMS
==================

Systems running all versions of Xen are affected.

Only AMD Fam17h CPUs (Zen1 microarchitecture) are believed to be
vulnerable.  Other AMD CPUs and CPUs from other manufacturers are not
known to be affected.

MITIGATION
==========

There are no mitigations.

RESOLUTION
==========

Applying the appropriate 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.

xsa488.patch           xen-unstable - Xen 4.21.x
xsa488-4.20.patch      Xen 4.20.x - Xen 4.19.x
xsa488-4.18.patch      Xen 4.18.x
xsa488-4.17.patch      Xen 4.17.x

$ sha256sum xsa488*
3dde61413eb75cb65fbd20b58165f673f9f4610804ec532ff0bf3c3f469454c1  xsa488.patch
7822abb0ed5a5f8e2b8697db41d46e030fd69bf8ca8cb965022484b287d9ea26  xsa488-4.17.patch
6668f9d1433863522b8554dc324f57efcfcf3e00c9261c0ee5c2db17f63bccd6  xsa488-4.18.patch
275c35d05951c4583056904869183972b9699549f0ec59f946faa92d5cef4b21  xsa488-4.20.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/4UyVfoK9kFAmnhBsUMHHBncEB4ZW4u
b3JnAAoJEIP+FMlX6CvZR90IAJ4bu4Ig/J4NOiTOPysLApkrzjyqrrDFqVvsUJe7
UDyll64Yuj4ljj25nDewGDG14EgdMJwqsWqM9gKl07eTzKnOxzzlsymyvX8BxiMt
F7hlcsc2WW96jE2FMNpNUjoBTORQ6u+rYsG1J7Kv85PdM4KHivrXzXRswTQlGWBU
d3VFnyQYE6jIGNGz1WXgA0/CxkdkTUAC0iN0NB6PSlurfkGCDqJEE3/LrTGWUEhI
T30jEc4cCjfukI4YtrCiecCKtSUvzdiRZ+5ZLYrzOYePBOmGOXrxlFfHt4zE6mK0
J9IzVS5BJJVhXjQWZyoZdDgFKMlk6rTQy73hWyPNFyBUiY4=
=xsxg
-----END PGP SIGNATURE-----

--=separator
Content-Type: application/octet-stream; name="xsa488.patch"
Content-Disposition: attachment; filename="xsa488.patch"
Content-Transfer-Encoding: base64

RnJvbTogQW5kcmV3IENvb3BlciA8YW5kcmV3LmNvb3BlcjNAY2l0cml4LmNv
bT4KU3ViamVjdDogeDg2L2FtZDogTWl0aWdhdGUgQU1ELVNOLTcwNTMgLyBG
UC1EU1MKClRoaXMgaXMgWFNBLTQ4OCAvIENWRS0yMDI1LTU0NTA1CgpTaWdu
ZWQtb2ZmLWJ5OiBBbmRyZXcgQ29vcGVyIDxhbmRyZXcuY29vcGVyM0BjaXRy
aXguY29tPgpSZXZpZXdlZC1ieTogUm9nZXIgUGF1IE1vbm7DqSA8cm9nZXIu
cGF1QGNpdHJpeC5jb20+CgpkaWZmIC0tZ2l0IGEveGVuL2FyY2gveDg2L2Nw
dS9hbWQuYyBiL3hlbi9hcmNoL3g4Ni9jcHUvYW1kLmMKaW5kZXggNDViNTVi
N2E4Y2Y5Li43MTI3MzRhNmU3MjMgMTAwNjQ0Ci0tLSBhL3hlbi9hcmNoL3g4
Ni9jcHUvYW1kLmMKKysrIGIveGVuL2FyY2gveDg2L2NwdS9hbWQuYwpAQCAt
OTQ3LDYgKzk0Nyw0MiBAQCB2b2lkIGFtZF9pbml0X2RlX2NmZyhjb25zdCBz
dHJ1Y3QgY3B1aW5mb194ODYgKmMpCiAgICAgd3Jtc3IoTVNSX0FNRDY0X0RF
X0NGRywgdmFsIHwgbmV3KTsKIH0KIAorc3RhdGljIHZvaWQgYW1kX2luaXRf
ZnBfY2ZnKGNvbnN0IHN0cnVjdCBjcHVpbmZvX3g4NiAqYykKK3sKKyAgICB1
aW50NjRfdCB2YWwsIG5ldyA9IDA7CisKKyAgICAvKiBJZiB2aXJ0dWFsaXNl
ZCwgd2Ugd29uJ3QgaGF2ZSBtdXRhYmxlIGFjY2VzcyBldmVuIGlmIHdlIGNh
biByZWFkIGl0LiAqLworICAgIGlmICggY3B1X2hhc19oeXBlcnZpc29yICkK
KyAgICAgICAgcmV0dXJuOworCisgICAgLyoKKyAgICAgKiBPbiBaZW4xLCBt
aXRpZ2F0ZSBTQi03MDUzIC8gRlAtRFNTIEZsb2F0aW5nIFBvaW50IERpdmlk
ZXIgU3RhdGUKKyAgICAgKiBTYW1wbGluZyBieSBzZXR0aW5nIGJpdCA5IGFz
IGluc3RydWN0ZWQuCisgICAgICovCisgICAgaWYgKCBjLT5mYW1pbHkgPT0g
MHgxNyAmJiBpc196ZW4xX3VhcmNoKCkgKQorICAgICAgICBuZXcgfD0gMSA8
PCA5OworCisgICAgLyoKKyAgICAgKiBBdm9pZCByZWFkaW5nIEZQX0NGRyBp
ZiB3ZSBkb24ndCBpbnRlbmQgdG8gY2hhbmdlIGFueXRoaW5nLiAgVGhlCisg
ICAgICogcmVnaXN0ZXIgZG9lc24ndCBleGlzdCBvbiBhbGwgZmFtaWxpZXMu
CisgICAgICovCisgICAgaWYgKCAhbmV3ICkKKyAgICAgICAgcmV0dXJuOwor
CisgICAgdmFsID0gcmRtc3IoTVNSX0FNRDY0X0ZQX0NGRyk7CisKKyAgICBp
ZiAoICh2YWwgJiBuZXcpID09IG5ldyApCisgICAgICAgIHJldHVybjsKKwor
ICAgIC8qCisgICAgICogRlBfQ0ZHIGlzIGEgQ29yZS1zY29wZWQgTVNSLCBh
bmQgdGhpcyB3cml0ZSBpcyByYWN5LiAgSG93ZXZlciwgYm90aAorICAgICAq
IHRocmVhZHMgY2FsY3VsYXRlIHRoZSBuZXcgdmFsdWUgZnJvbSBzdGF0ZSB3
aGljaCBleHBlY3RlZCB0byBiZQorICAgICAqIGNvbnNpc3RlbnQgYWNyb3Nz
IENQVXMgYW5kIHVucmVsYXRlZCB0byB0aGUgb2xkIHZhbHVlLCBzbyB0aGUg
cmVzdWx0CisgICAgICogc2hvdWxkIGJlIGNvbnNpc3RlbnQuCisgICAgICov
CisgICAgd3Jtc3IoTVNSX0FNRDY0X0ZQX0NGRywgdmFsIHwgbmV3KTsKK30K
Kwogdm9pZCBfX2luaXQgYW1kX2luaXRfbGZlbmNlX2Rpc3BhdGNoKHZvaWQp
CiB7CiAgICAgc3RydWN0IGNwdWluZm9feDg2ICpjID0gJmJvb3RfY3B1X2Rh
dGE7CkBAIC0xMDE5LDYgKzEwNTUsNyBAQCBzdGF0aWMgdm9pZCBjZl9jaGVj
ayBpbml0X2FtZChzdHJ1Y3QgY3B1aW5mb194ODYgKmMpCiAJdWludDY0X3Qg
dmFsdWU7CiAKIAlhbWRfaW5pdF9kZV9jZmcoYyk7CisJYW1kX2luaXRfZnBf
Y2ZnKGMpOwogCiAJaWYgKGMgPT0gJmJvb3RfY3B1X2RhdGEpCiAJCWFtZF9p
bml0X2xmZW5jZV9kaXNwYXRjaCgpOyAvKiBOZWVkcyBhbWRfaW5pdF9kZV9j
ZmcoKSAqLwpkaWZmIC0tZ2l0IGEveGVuL2FyY2gveDg2L2luY2x1ZGUvYXNt
L21zci1pbmRleC5oIGIveGVuL2FyY2gveDg2L2luY2x1ZGUvYXNtL21zci1p
bmRleC5oCmluZGV4IGI5MmEyNzg2MTFjYi4uYWQxYzZjOTdmOGY3IDEwMDY0
NAotLS0gYS94ZW4vYXJjaC94ODYvaW5jbHVkZS9hc20vbXNyLWluZGV4LmgK
KysrIGIveGVuL2FyY2gveDg2L2luY2x1ZGUvYXNtL21zci1pbmRleC5oCkBA
IC00MzEsNiArNDMxLDcgQEAKICNkZWZpbmUgTVNSX0FNRDY0X0xTX0NGRwkJ
MHhjMDAxMTAyMFUKICNkZWZpbmUgTVNSX0FNRDY0X0lDX0NGRwkJMHhjMDAx
MTAyMVUKICNkZWZpbmUgTVNSX0FNRDY0X0RDX0NGRwkJMHhjMDAxMTAyMlUK
KyNkZWZpbmUgTVNSX0FNRDY0X0ZQX0NGRwkJMHhjMDAxMTAyOFUKICNkZWZp
bmUgTVNSX0FNRDY0X0RFX0NGRwkJMHhjMDAxMTAyOVUKICNkZWZpbmUgQU1E
NjRfREVfQ0ZHX0xGRU5DRV9TRVJJQUxJU0UJKF9BQygxLCBVTEwpIDw8IDEp
CiAjZGVmaW5lIE1TUl9BTUQ2NF9FWF9DRkcJCTB4YzAwMTEwMmNVCg==

--=separator
Content-Type: application/octet-stream; name="xsa488-4.17.patch"
Content-Disposition: attachment; filename="xsa488-4.17.patch"
Content-Transfer-Encoding: base64

RnJvbTogQW5kcmV3IENvb3BlciA8YW5kcmV3LmNvb3BlcjNAY2l0cml4LmNv
bT4KU3ViamVjdDogeDg2L2FtZDogTWl0aWdhdGUgQU1ELVNOLTcwNTMgLyBG
UC1EU1MKClRoaXMgaXMgWFNBLTQ4OCAvIENWRS0yMDI1LTU0NTA1CgpTaWdu
ZWQtb2ZmLWJ5OiBBbmRyZXcgQ29vcGVyIDxhbmRyZXcuY29vcGVyM0BjaXRy
aXguY29tPgpSZXZpZXdlZC1ieTogUm9nZXIgUGF1IE1vbm7DqSA8cm9nZXIu
cGF1QGNpdHJpeC5jb20+CgpkaWZmIC0tZ2l0IGEveGVuL2FyY2gveDg2L2Nw
dS9hbWQuYyBiL3hlbi9hcmNoL3g4Ni9jcHUvYW1kLmMKaW5kZXggMjgzODcy
NWJhYjk4Li4zMzEyZDg5NmRkOTAgMTAwNjQ0Ci0tLSBhL3hlbi9hcmNoL3g4
Ni9jcHUvYW1kLmMKKysrIGIveGVuL2FyY2gveDg2L2NwdS9hbWQuYwpAQCAt
OTgyLDYgKzk4Miw0MiBAQCBzdGF0aWMgdm9pZCBjZl9jaGVjayBmYW0xN19k
aXNhYmxlX2M2KHZvaWQgKmFyZykKIAl3cm1zcmwoTVNSX0FNRF9DU1RBVEVf
Q0ZHLCB2YWwgJiBtYXNrKTsKIH0KIAorc3RhdGljIHZvaWQgYW1kX2luaXRf
ZnBfY2ZnKGNvbnN0IHN0cnVjdCBjcHVpbmZvX3g4NiAqYykKK3sKKyAgICB1
aW50NjRfdCB2YWwsIG5ldyA9IDA7CisKKyAgICAvKiBJZiB2aXJ0dWFsaXNl
ZCwgd2Ugd29uJ3QgaGF2ZSBtdXRhYmxlIGFjY2VzcyBldmVuIGlmIHdlIGNh
biByZWFkIGl0LiAqLworICAgIGlmICggY3B1X2hhc19oeXBlcnZpc29yICkK
KyAgICAgICAgcmV0dXJuOworCisgICAgLyoKKyAgICAgKiBPbiBaZW4xLCBt
aXRpZ2F0ZSBTQi03MDUzIC8gRlAtRFNTIEZsb2F0aW5nIFBvaW50IERpdmlk
ZXIgU3RhdGUKKyAgICAgKiBTYW1wbGluZyBieSBzZXR0aW5nIGJpdCA5IGFz
IGluc3RydWN0ZWQuCisgICAgICovCisgICAgaWYgKCBjLT54ODYgPT0gMHgx
NyAmJiBpc196ZW4xX3VhcmNoKCkgKQorICAgICAgICBuZXcgfD0gMSA8PCA5
OworCisgICAgLyoKKyAgICAgKiBBdm9pZCByZWFkaW5nIEZQX0NGRyBpZiB3
ZSBkb24ndCBpbnRlbmQgdG8gY2hhbmdlIGFueXRoaW5nLiAgVGhlCisgICAg
ICogcmVnaXN0ZXIgZG9lc24ndCBleGlzdCBvbiBhbGwgZmFtaWxpZXMuCisg
ICAgICovCisgICAgaWYgKCAhbmV3ICkKKyAgICAgICAgcmV0dXJuOworCisg
ICAgcmRtc3JsKE1TUl9BTUQ2NF9GUF9DRkcsIHZhbCk7CisKKyAgICBpZiAo
ICh2YWwgJiBuZXcpID09IG5ldyApCisgICAgICAgIHJldHVybjsKKworICAg
IC8qCisgICAgICogRlBfQ0ZHIGlzIGEgQ29yZS1zY29wZWQgTVNSLCBhbmQg
dGhpcyB3cml0ZSBpcyByYWN5LiAgSG93ZXZlciwgYm90aAorICAgICAqIHRo
cmVhZHMgY2FsY3VsYXRlIHRoZSBuZXcgdmFsdWUgZnJvbSBzdGF0ZSB3aGlj
aCBleHBlY3RlZCB0byBiZQorICAgICAqIGNvbnNpc3RlbnQgYWNyb3NzIENQ
VXMgYW5kIHVucmVsYXRlZCB0byB0aGUgb2xkIHZhbHVlLCBzbyB0aGUgcmVz
dWx0CisgICAgICogc2hvdWxkIGJlIGNvbnNpc3RlbnQuCisgICAgICovCisg
ICAgd3Jtc3JsKE1TUl9BTUQ2NF9GUF9DRkcsIHZhbCB8IG5ldyk7Cit9CisK
IHN0YXRpYyB2b2lkIGFtZF9jaGVja19lcnJhdHVtXzE0ODUodm9pZCkKIHsK
IAl1aW50NjRfdCB2YWwsIGNoaWNrZW5iaXQgPSAoMSA8PCA1KTsKQEAgLTEw
MDksNiArMTA0NSw4IEBAIHN0YXRpYyB2b2lkIGNmX2NoZWNrIGluaXRfYW1k
KHN0cnVjdCBjcHVpbmZvX3g4NiAqYykKIAogCXVuc2lnbmVkIGxvbmcgbG9u
ZyB2YWx1ZTsKIAorCWFtZF9pbml0X2ZwX2NmZyhjKTsKKwogCS8qIERpc2Fi
bGUgVExCIGZsdXNoIGZpbHRlciBieSBzZXR0aW5nIEhXQ1IuRkZESVMgb24g
SzgKIAkgKiBiaXQgNiBvZiBtc3IgQzAwMV8wMDE1CiAJICoKZGlmZiAtLWdp
dCBhL3hlbi9hcmNoL3g4Ni9pbmNsdWRlL2FzbS9tc3ItaW5kZXguaCBiL3hl
bi9hcmNoL3g4Ni9pbmNsdWRlL2FzbS9tc3ItaW5kZXguaAppbmRleCA1MjEw
NzkxOTFhZjcuLmJlZDBhYjdiMjEzYyAxMDA2NDQKLS0tIGEveGVuL2FyY2gv
eDg2L2luY2x1ZGUvYXNtL21zci1pbmRleC5oCisrKyBiL3hlbi9hcmNoL3g4
Ni9pbmNsdWRlL2FzbS9tc3ItaW5kZXguaApAQCAtMzg2LDYgKzM4Niw3IEBA
CiAjZGVmaW5lIE1TUl9BTUQ2NF9MU19DRkcJCTB4YzAwMTEwMjAKICNkZWZp
bmUgTVNSX0FNRDY0X0lDX0NGRwkJMHhjMDAxMTAyMQogI2RlZmluZSBNU1Jf
QU1ENjRfRENfQ0ZHCQkweGMwMDExMDIyCisjZGVmaW5lIE1TUl9BTUQ2NF9G
UF9DRkcJCTB4YzAwMTEwMjgKICNkZWZpbmUgTVNSX0FNRDY0X0RFX0NGRwkJ
MHhjMDAxMTAyOQogI2RlZmluZSBBTUQ2NF9ERV9DRkdfTEZFTkNFX1NFUklB
TElTRQkoX0FDKDEsIFVMTCkgPDwgMSkKICNkZWZpbmUgTVNSX0FNRDY0X0VY
X0NGRwkJMHhjMDAxMTAyYwo=

--=separator
Content-Type: application/octet-stream; name="xsa488-4.18.patch"
Content-Disposition: attachment; filename="xsa488-4.18.patch"
Content-Transfer-Encoding: base64

RnJvbTogQW5kcmV3IENvb3BlciA8YW5kcmV3LmNvb3BlcjNAY2l0cml4LmNv
bT4KU3ViamVjdDogeDg2L2FtZDogTWl0aWdhdGUgQU1ELVNOLTcwNTMgLyBG
UC1EU1MKClRoaXMgaXMgWFNBLTQ4OCAvIENWRS0yMDI1LTU0NTA1CgpTaWdu
ZWQtb2ZmLWJ5OiBBbmRyZXcgQ29vcGVyIDxhbmRyZXcuY29vcGVyM0BjaXRy
aXguY29tPgpSZXZpZXdlZC1ieTogUm9nZXIgUGF1IE1vbm7DqSA8cm9nZXIu
cGF1QGNpdHJpeC5jb20+CgpkaWZmIC0tZ2l0IGEveGVuL2FyY2gveDg2L2Nw
dS9hbWQuYyBiL3hlbi9hcmNoL3g4Ni9jcHUvYW1kLmMKaW5kZXggYzQ0ODk5
N2JlNTUxLi40M2NkM2FlOWJhNGQgMTAwNjQ0Ci0tLSBhL3hlbi9hcmNoL3g4
Ni9jcHUvYW1kLmMKKysrIGIveGVuL2FyY2gveDg2L2NwdS9hbWQuYwpAQCAt
MTAwOSw2ICsxMDA5LDQyIEBAIHN0YXRpYyB2b2lkIGNmX2NoZWNrIGZhbTE3
X2Rpc2FibGVfYzYodm9pZCAqYXJnKQogCXdybXNybChNU1JfQU1EX0NTVEFU
RV9DRkcsIHZhbCAmIG1hc2spOwogfQogCitzdGF0aWMgdm9pZCBhbWRfaW5p
dF9mcF9jZmcoY29uc3Qgc3RydWN0IGNwdWluZm9feDg2ICpjKQoreworICAg
IHVpbnQ2NF90IHZhbCwgbmV3ID0gMDsKKworICAgIC8qIElmIHZpcnR1YWxp
c2VkLCB3ZSB3b24ndCBoYXZlIG11dGFibGUgYWNjZXNzIGV2ZW4gaWYgd2Ug
Y2FuIHJlYWQgaXQuICovCisgICAgaWYgKCBjcHVfaGFzX2h5cGVydmlzb3Ig
KQorICAgICAgICByZXR1cm47CisKKyAgICAvKgorICAgICAqIE9uIFplbjEs
IG1pdGlnYXRlIFNCLTcwNTMgLyBGUC1EU1MgRmxvYXRpbmcgUG9pbnQgRGl2
aWRlciBTdGF0ZQorICAgICAqIFNhbXBsaW5nIGJ5IHNldHRpbmcgYml0IDkg
YXMgaW5zdHJ1Y3RlZC4KKyAgICAgKi8KKyAgICBpZiAoIGMtPng4NiA9PSAw
eDE3ICYmIGlzX3plbjFfdWFyY2goKSApCisgICAgICAgIG5ldyB8PSAxIDw8
IDk7CisKKyAgICAvKgorICAgICAqIEF2b2lkIHJlYWRpbmcgRlBfQ0ZHIGlm
IHdlIGRvbid0IGludGVuZCB0byBjaGFuZ2UgYW55dGhpbmcuICBUaGUKKyAg
ICAgKiByZWdpc3RlciBkb2Vzbid0IGV4aXN0IG9uIGFsbCBmYW1pbGllcy4K
KyAgICAgKi8KKyAgICBpZiAoICFuZXcgKQorICAgICAgICByZXR1cm47CisK
KyAgICByZG1zcmwoTVNSX0FNRDY0X0ZQX0NGRywgdmFsKTsKKworICAgIGlm
ICggKHZhbCAmIG5ldykgPT0gbmV3ICkKKyAgICAgICAgcmV0dXJuOworCisg
ICAgLyoKKyAgICAgKiBGUF9DRkcgaXMgYSBDb3JlLXNjb3BlZCBNU1IsIGFu
ZCB0aGlzIHdyaXRlIGlzIHJhY3kuICBIb3dldmVyLCBib3RoCisgICAgICog
dGhyZWFkcyBjYWxjdWxhdGUgdGhlIG5ldyB2YWx1ZSBmcm9tIHN0YXRlIHdo
aWNoIGV4cGVjdGVkIHRvIGJlCisgICAgICogY29uc2lzdGVudCBhY3Jvc3Mg
Q1BVcyBhbmQgdW5yZWxhdGVkIHRvIHRoZSBvbGQgdmFsdWUsIHNvIHRoZSBy
ZXN1bHQKKyAgICAgKiBzaG91bGQgYmUgY29uc2lzdGVudC4KKyAgICAgKi8K
KyAgICB3cm1zcmwoTVNSX0FNRDY0X0ZQX0NGRywgdmFsIHwgbmV3KTsKK30K
Kwogc3RhdGljIHZvaWQgYW1kX2NoZWNrX2JwX2NmZyh2b2lkKQogewogCXVp
bnQ2NF90IHZhbCwgbmV3ID0gMDsKQEAgLTEwNTMsNiArMTA4OSw4IEBAIHN0
YXRpYyB2b2lkIGNmX2NoZWNrIGluaXRfYW1kKHN0cnVjdCBjcHVpbmZvX3g4
NiAqYykKIAogCXVuc2lnbmVkIGxvbmcgbG9uZyB2YWx1ZTsKIAorCWFtZF9p
bml0X2ZwX2NmZyhjKTsKKwogCS8qIERpc2FibGUgVExCIGZsdXNoIGZpbHRl
ciBieSBzZXR0aW5nIEhXQ1IuRkZESVMgb24gSzgKIAkgKiBiaXQgNiBvZiBt
c3IgQzAwMV8wMDE1CiAJICoKZGlmZiAtLWdpdCBhL3hlbi9hcmNoL3g4Ni9p
bmNsdWRlL2FzbS9tc3ItaW5kZXguaCBiL3hlbi9hcmNoL3g4Ni9pbmNsdWRl
L2FzbS9tc3ItaW5kZXguaAppbmRleCBjOWY5ODBjZDU3N2YuLjUxNmVlMjZk
NzA3OSAxMDA2NDQKLS0tIGEveGVuL2FyY2gveDg2L2luY2x1ZGUvYXNtL21z
ci1pbmRleC5oCisrKyBiL3hlbi9hcmNoL3g4Ni9pbmNsdWRlL2FzbS9tc3It
aW5kZXguaApAQCAtNDExLDYgKzQxMSw3IEBACiAjZGVmaW5lIE1TUl9BTUQ2
NF9MU19DRkcJCTB4YzAwMTEwMjAKICNkZWZpbmUgTVNSX0FNRDY0X0lDX0NG
RwkJMHhjMDAxMTAyMQogI2RlZmluZSBNU1JfQU1ENjRfRENfQ0ZHCQkweGMw
MDExMDIyCisjZGVmaW5lIE1TUl9BTUQ2NF9GUF9DRkcJCTB4YzAwMTEwMjgK
ICNkZWZpbmUgTVNSX0FNRDY0X0RFX0NGRwkJMHhjMDAxMTAyOQogI2RlZmlu
ZSBBTUQ2NF9ERV9DRkdfTEZFTkNFX1NFUklBTElTRQkoX0FDKDEsIFVMTCkg
PDwgMSkKICNkZWZpbmUgTVNSX0FNRDY0X0VYX0NGRwkJMHhjMDAxMTAyYwo=

--=separator
Content-Type: application/octet-stream; name="xsa488-4.20.patch"
Content-Disposition: attachment; filename="xsa488-4.20.patch"
Content-Transfer-Encoding: base64

RnJvbTogQW5kcmV3IENvb3BlciA8YW5kcmV3LmNvb3BlcjNAY2l0cml4LmNv
bT4KU3ViamVjdDogeDg2L2FtZDogTWl0aWdhdGUgQU1ELVNOLTcwNTMgLyBG
UC1EU1MKClRoaXMgaXMgWFNBLTQ4OCAvIENWRS0yMDI1LTU0NTA1CgpTaWdu
ZWQtb2ZmLWJ5OiBBbmRyZXcgQ29vcGVyIDxhbmRyZXcuY29vcGVyM0BjaXRy
aXguY29tPgpSZXZpZXdlZC1ieTogUm9nZXIgUGF1IE1vbm7DqSA8cm9nZXIu
cGF1QGNpdHJpeC5jb20+CgpkaWZmIC0tZ2l0IGEveGVuL2FyY2gveDg2L2Nw
dS9hbWQuYyBiL3hlbi9hcmNoL3g4Ni9jcHUvYW1kLmMKaW5kZXggZDUwNjlh
N2VjMThlLi40Mzg4M2UwNGRiYjkgMTAwNjQ0Ci0tLSBhL3hlbi9hcmNoL3g4
Ni9jcHUvYW1kLmMKKysrIGIveGVuL2FyY2gveDg2L2NwdS9hbWQuYwpAQCAt
OTgyLDYgKzk4Miw0MiBAQCB2b2lkIGFtZF9pbml0X2RlX2NmZyhjb25zdCBz
dHJ1Y3QgY3B1aW5mb194ODYgKmMpCiAgICAgd3Jtc3JsKE1TUl9BTUQ2NF9E
RV9DRkcsIHZhbCB8IG5ldyk7CiB9CiAKK3N0YXRpYyB2b2lkIGFtZF9pbml0
X2ZwX2NmZyhjb25zdCBzdHJ1Y3QgY3B1aW5mb194ODYgKmMpCit7CisgICAg
dWludDY0X3QgdmFsLCBuZXcgPSAwOworCisgICAgLyogSWYgdmlydHVhbGlz
ZWQsIHdlIHdvbid0IGhhdmUgbXV0YWJsZSBhY2Nlc3MgZXZlbiBpZiB3ZSBj
YW4gcmVhZCBpdC4gKi8KKyAgICBpZiAoIGNwdV9oYXNfaHlwZXJ2aXNvciAp
CisgICAgICAgIHJldHVybjsKKworICAgIC8qCisgICAgICogT24gWmVuMSwg
bWl0aWdhdGUgU0ItNzA1MyAvIEZQLURTUyBGbG9hdGluZyBQb2ludCBEaXZp
ZGVyIFN0YXRlCisgICAgICogU2FtcGxpbmcgYnkgc2V0dGluZyBiaXQgOSBh
cyBpbnN0cnVjdGVkLgorICAgICAqLworICAgIGlmICggYy0+eDg2ID09IDB4
MTcgJiYgaXNfemVuMV91YXJjaCgpICkKKyAgICAgICAgbmV3IHw9IDEgPDwg
OTsKKworICAgIC8qCisgICAgICogQXZvaWQgcmVhZGluZyBGUF9DRkcgaWYg
d2UgZG9uJ3QgaW50ZW5kIHRvIGNoYW5nZSBhbnl0aGluZy4gIFRoZQorICAg
ICAqIHJlZ2lzdGVyIGRvZXNuJ3QgZXhpc3Qgb24gYWxsIGZhbWlsaWVzLgor
ICAgICAqLworICAgIGlmICggIW5ldyApCisgICAgICAgIHJldHVybjsKKwor
ICAgIHJkbXNybChNU1JfQU1ENjRfRlBfQ0ZHLCB2YWwpOworCisgICAgaWYg
KCAodmFsICYgbmV3KSA9PSBuZXcgKQorICAgICAgICByZXR1cm47CisKKyAg
ICAvKgorICAgICAqIEZQX0NGRyBpcyBhIENvcmUtc2NvcGVkIE1TUiwgYW5k
IHRoaXMgd3JpdGUgaXMgcmFjeS4gIEhvd2V2ZXIsIGJvdGgKKyAgICAgKiB0
aHJlYWRzIGNhbGN1bGF0ZSB0aGUgbmV3IHZhbHVlIGZyb20gc3RhdGUgd2hp
Y2ggZXhwZWN0ZWQgdG8gYmUKKyAgICAgKiBjb25zaXN0ZW50IGFjcm9zcyBD
UFVzIGFuZCB1bnJlbGF0ZWQgdG8gdGhlIG9sZCB2YWx1ZSwgc28gdGhlIHJl
c3VsdAorICAgICAqIHNob3VsZCBiZSBjb25zaXN0ZW50LgorICAgICAqLwor
ICAgIHdybXNybChNU1JfQU1ENjRfRlBfQ0ZHLCB2YWwgfCBuZXcpOworfQor
CiB2b2lkIF9faW5pdCBhbWRfaW5pdF9sZmVuY2VfZGlzcGF0Y2godm9pZCkK
IHsKICAgICBzdHJ1Y3QgY3B1aW5mb194ODYgKmMgPSAmYm9vdF9jcHVfZGF0
YTsKQEAgLTEwNTUsNiArMTA5MSw3IEBAIHN0YXRpYyB2b2lkIGNmX2NoZWNr
IGluaXRfYW1kKHN0cnVjdCBjcHVpbmZvX3g4NiAqYykKIAl1bnNpZ25lZCBs
b25nIGxvbmcgdmFsdWU7CiAKIAlhbWRfaW5pdF9kZV9jZmcoYyk7CisJYW1k
X2luaXRfZnBfY2ZnKGMpOwogCiAJaWYgKGMgPT0gJmJvb3RfY3B1X2RhdGEp
CiAJCWFtZF9pbml0X2xmZW5jZV9kaXNwYXRjaCgpOyAvKiBOZWVkcyBhbWRf
aW5pdF9kZV9jZmcoKSAqLwpkaWZmIC0tZ2l0IGEveGVuL2FyY2gveDg2L2lu
Y2x1ZGUvYXNtL21zci1pbmRleC5oIGIveGVuL2FyY2gveDg2L2luY2x1ZGUv
YXNtL21zci1pbmRleC5oCmluZGV4IDZmMmMzMTQ3ZTM0My4uNzBlNWYwOWEy
ZGU0IDEwMDY0NAotLS0gYS94ZW4vYXJjaC94ODYvaW5jbHVkZS9hc20vbXNy
LWluZGV4LmgKKysrIGIveGVuL2FyY2gveDg2L2luY2x1ZGUvYXNtL21zci1p
bmRleC5oCkBAIC00MTEsNiArNDExLDcgQEAKICNkZWZpbmUgTVNSX0FNRDY0
X0xTX0NGRwkJMHhjMDAxMTAyMFUKICNkZWZpbmUgTVNSX0FNRDY0X0lDX0NG
RwkJMHhjMDAxMTAyMVUKICNkZWZpbmUgTVNSX0FNRDY0X0RDX0NGRwkJMHhj
MDAxMTAyMlUKKyNkZWZpbmUgTVNSX0FNRDY0X0ZQX0NGRwkJMHhjMDAxMTAy
OFUKICNkZWZpbmUgTVNSX0FNRDY0X0RFX0NGRwkJMHhjMDAxMTAyOVUKICNk
ZWZpbmUgQU1ENjRfREVfQ0ZHX0xGRU5DRV9TRVJJQUxJU0UJKF9BQygxLCBV
TEwpIDw8IDEpCiAjZGVmaW5lIE1TUl9BTUQ2NF9FWF9DRkcJCTB4YzAwMTEw
MmNVCg==

--=separator--


From xen-devel-bounces@lists.xenproject.org Fri Apr 17 17:09:31 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Fri, 17 Apr 2026 17:09:31 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1284651.1566314 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wDmgt-0007lG-J9; Fri, 17 Apr 2026 17:09:15 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1284651.1566314; Fri, 17 Apr 2026 17: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 1wDmgt-0007l9-GG; Fri, 17 Apr 2026 17:09:15 +0000
Received: by outflank-mailman (input) for mailman id 1284651;
 Fri, 17 Apr 2026 17:09:14 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92) id 1wDmgr-0007kp-Pc
 for xen-devel@lists.xenproject.org; Fri, 17 Apr 2026 17:09:14 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wDmgr-005Sgd-6L
 for xen-devel@lists.xenproject.org; Fri, 17 Apr 2026 19:09:13 +0200
Received: from [10.42.69.12] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <andrew.cooper@citrix.com>)
 id 69e26912-bab6-0a2a0a5309dd-0a2a450ce9ea-22
 for <xen-devel@lists.xenproject.org>; Fri, 17 Apr 2026 19:09:13 +0200
Received: from [40.107.209.65]
 (helo=PH8PR06CU001.outbound.protection.outlook.com)
 by tlsNG-d25034.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.1)
 (envelope-from <andrew.cooper@citrix.com>)
 id 69e26846-62f1-0a2a450c0019-286bd141bbda-3
 for <xen-devel@lists.xenproject.org>; Fri, 17 Apr 2026 19:05:12 +0200
Received: from CH8PR03MB8275.namprd03.prod.outlook.com (2603:10b6:610:2b9::7)
 by CH4PR03MB8017.namprd03.prod.outlook.com (2603:10b6:610:239::20)
 with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9818.25; Fri, 17 Apr
 2026 17:05:04 +0000
Received: from CH8PR03MB8275.namprd03.prod.outlook.com
 ([fe80::a70d:dc32:bba8:ce37]) by CH8PR03MB8275.namprd03.prod.outlook.com
 ([fe80::a70d:dc32:bba8:ce37%6]) with mapi id 15.20.9818.023; Fri, 17 Apr 2026
 17:05: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=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=KJBzCh57uYLzsZ7NX1qdzaace6I69RFK1wR51SIG60LNZWdt3q5qATJ2Gl9hUBjb+V8+dQ9XsGseIDzm+3/7QCiZ1IPmnZMbOfvGKynuITaEYUjJ/pe8PqD1OiDSQFtCi5fZEwm0lYDz9FHI3Z/sQHlO1N7LYJ1qD7e6+3N6OZ8JLgW1yofEO+qul7xOdH8KlGu1Z7yGuj19DVy4HyeSb5ehUiPH1/fUq5/fsKmc30jSWrz0C9+DFvN0Ka9RRY9qy8VB74n3rgRNoeDu9kdDEFvJGghVEpUtFWk/AdngC6F457jagHkgacCxVTDQM/cqjoHw/ymt0ww9LUPsM/4Ukg==
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com;
 s=arcselector10001;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1;
 bh=GfnXQOZbuWlbAbpL0KR1LXfz9Q/M5071JFAcXbAQcXo=;
 b=ka8Tfmp0YMw/p/aMzrr4UJ3x6Zj1AhbvWsKVd79gMJwlK6sBDWcCkONXg9tBQ+YyVkrCL0LkWc2OG4w2EyuFXTh/rhrdQui8I3/uCaPRl0GLoyJPE94RSilsk6bppTe7MNJSbLDEIWYGVY2L8BozZJgSoTfVcNfghDQwoBJOYaLWTA3iTeYro2P/ck7F4pNNAuWJ8dSZJ5L8EKrsWwnpEl9T4bVTOHo8w/ua24wX1IeXZCcEtYfo6XlgsdjfsL0ere6GECpMQAWJNJe2dxj787GBuVAvi01JxmVxnL1gKfHNbz+wkPgnMo7+Ov4zR1d4f91000z5Z9g/iwxlyIVV/A==
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=GfnXQOZbuWlbAbpL0KR1LXfz9Q/M5071JFAcXbAQcXo=;
 b=GKpjLY32/SUWE99LFAgP4HvUnUM3yzNciVeSYzXGnBMw9FGNaTnMnoFjZtICVm7kVKVkgpH8X5bm/vxs4SIrQ5GbsxShElfGJxqpMahjB7Enlfkab+kCe8N7hEqA5lSlTitE5SdMa+bme5A7zINclruD1KpqC4Mo8ExD7B+hxpQ=
Authentication-Results: dkim=none (message not signed)
 header.d=none;dmarc=none action=none header.from=citrix.com;
Message-ID: <2688ce14-9d25-4374-83a7-dea3ee508f71@citrix.com>
Date: Fri, 17 Apr 2026 18:05:00 +0100
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.pau@citrix.com>, Teddy Astie <teddy.astie@vates.tech>
Subject: Re: [PATCH] x86/boot: Force error checking for reserve_e820_ram()
To: Ross Lagerwall <ross.lagerwall@citrix.com>,
 Xen-devel <xen-devel@lists.xenproject.org>
References: <20260417160828.526063-1-andrew.cooper3@citrix.com>
 <85625a6f-8d04-4863-8f74-461c9a85464f@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: <85625a6f-8d04-4863-8f74-461c9a85464f@citrix.com>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
X-ClientProxiedBy: PA7P264CA0457.FRAP264.PROD.OUTLOOK.COM
 (2603:10a6:102:398::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_|CH4PR03MB8017:EE_
X-MS-Office365-Filtering-Correlation-Id: 2c6edd5d-4b63-4aa9-f80b-08de9ca37824
X-MS-Exchange-SenderADCheck: 1
X-MS-Exchange-AntiSpam-Relay: 0
X-Microsoft-Antispam:
	BCL:0;ARA:13230040|366016|376014|1800799024|22082099003|18002099003|56012099003;
X-Microsoft-Antispam-Message-Info:
	NhUYMPJtpAyZAvXBFt5ihm5DvWsQdsCFkd3UbBm/J7hOG4QHYDmxaU63dsQpcNU9jB3Wz8aGNVtQZOQwXdWZoJbOH6IpEFMqC1/122Yy1utql2nkpa/a2zzFeOVORAKZ5JltaEY1XzwNdhnhR3/br7nPUfcvnInWTt3wudXX4+6fr/vHlPoxWJDO85kYiTVkbxOmmec+GP21UKd1BnYsQfYY9gSeg9O7SFb0MzQQxSWEeBvyxL5aN+9rOjk/eiqdwrRzFA2DkY8YS0uRqRAzlycR0DkCGUkml0leJDVPzSSP48ep0Ta0tOTo2rnu+bTsggy7JiTKwwjyHvDlg/DjVHNuqArhvCFY4ZlKCFubLGn6iCYbIGq3wjcJ5FseuYxLa4d7WO5/dExobN19ZDe30Y6G0cPNRi04xABK73Q2RRJ9XcsL5AZrXkGq2O2GqNBCAR7JwXyf0i10z7QU+QJ65ZvFM5wXezVv3V3jeA6TQ8MRrKrMTbdAM7GOLTFzThx89Z55Tp5oitIArGP6TRgVQQMGNMrzjnnOrU+4+AJduhFOw/V2FCAxRCQfZrvo/K6CiQ81TqLu1akjnwKfoBxp4NS1Xgeg3f2iT35ar46Kbko04iqpuUN0Hbu9YkRyQIHC//DSxII4ekxiaIip3A61TzFPuVmipUDD+e4d1jPjGVU3eKP4SLJaChwNd2tJfQWAlShvF17jRNu12ohZjZbAiTcL6tuRHBZ0UzGxpTXDX0U=
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)(1800799024)(22082099003)(18002099003)(56012099003);DIR:OUT;SFP:1101;
X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1
X-MS-Exchange-AntiSpam-MessageData-0:
	=?utf-8?B?a0VWbkQzTkpwUWE1YXRiUlFPc3lTK3ZVSFlLTlpGQUNhMGNEQUxwS081MGt1?=
 =?utf-8?B?WkZ3TEdneEFOY290QnYzOGttRHd2ZHlQYUVJU2dJa0g5d1lNaUxHeU4zTjVq?=
 =?utf-8?B?WXpOaUw1YlVWb3NWazMrZTFGQmgzdjFQS0RSU2FwUjZNN1lZYmFuckJhQVkv?=
 =?utf-8?B?eVQxNFMyZWxzR1YvNVowUXF6T1QwcWJxNE9ZN1pPaE9VTkZueWFFKzlBZmZm?=
 =?utf-8?B?NTN2V1p6czNLNldnejN3SDFVUmRqUGhXdFFUU2FRSkV6NmwxN1pGNVBqMHVa?=
 =?utf-8?B?UEwyWVNXZXRtUGJkYnlBdWtSVmZ3ZVliTVlhUWZqcmVsUlZnMnRjbnFkVkVj?=
 =?utf-8?B?Wi9rT2xUdDRyVlBCYWxncEM1bUtiTDFTNzE5Mlg4K09OczZQWlpWb01XemZ3?=
 =?utf-8?B?ZVI1bCtkUUhCcGFxSWN0cWpDdTJuV1owdHpUWU5wZ1E3M3lIVGhNUEZlN3VQ?=
 =?utf-8?B?RjJTdnpzRVFuVXFpVVRRcWNNeWNzamZpSHIrK0VkUWpKN1JoQ0FIMlorcFdI?=
 =?utf-8?B?ay9OL1RFYVc2dVZNSkEvUnppUFV6aDd3ajVyaHN6dFFIVnBJckRqRzU2Z1N4?=
 =?utf-8?B?Tk1HbzZkMGhiNVAzc2NlSFZNUzl1UkJQbVdoakVLT2w2eWtldE1YbTNDQ3lr?=
 =?utf-8?B?UVozdysvZmpvQnFXMW9tcDJxZnFlYWxiOFZpeksvRTVGQzl3TXJMWXhzOUFk?=
 =?utf-8?B?R3dEanZFTXVPVms5NFFBY3JsMTRNSDhrbkFwMy9FOFNOczdIZEpvbm80RFJo?=
 =?utf-8?B?ZXp5ZG9xVUkzdkEzWkxneGlFYk9XNGhEZFBGVzBuMElXSFlDY2VqdUZ1VGdZ?=
 =?utf-8?B?RkJxSGxIdnJ6YVdxcHZzOHR3ejdmSlpaTjRaT0d4N0ZuM2ErN2lCdnV4TWFQ?=
 =?utf-8?B?ZW9JOUJkZlorcWVLQ243QkhsOG5RcnNnWkhWdk85bVVRUklEUC9QWU1JZVph?=
 =?utf-8?B?ZWNFVU5RU3dUdzlYdnZreXFqVU1QMnV3amUwY3F6c2ZIN21jcURhdnhoMGFy?=
 =?utf-8?B?MG1PNno2MUxjbFlyb1hVWFY1T1I5Wm9PTENkZGRtTW5LOFZNcUo0UldleDRB?=
 =?utf-8?B?Z2xqdURKbXZud2NBSFZmbkM2VjdKRUlJZzNCZ2ZOdnh4WTE0MFVBbVd3L09h?=
 =?utf-8?B?YnVtdXFlT2NXZ09jRGRvTWJTcktYVTcwTHBtbEUyRlRmN1hnbU5HbFdXRDh0?=
 =?utf-8?B?azFnRkpwL2xWUEdPQVluZmlKTCtlRTAxdktySkhDNVZvcDBqSUtpazZCczZT?=
 =?utf-8?B?TWJqdWJTM3R0UXBWbklvdndkc0sxMDdVK3Z1Rmp3VVYxSzdmSGJSUnhLK0xo?=
 =?utf-8?B?bVlzMDVGeVJlMno3WnQzMVgxQjRRNWxNVUFBR2lmOEFMNWl0ZGhESnZVcnMx?=
 =?utf-8?B?SnZRaGpmb2hESlZzeTRtU1pqZC9BaW9sQ2VuN2p1YWFRbEpvUktuWTJMTkgx?=
 =?utf-8?B?eFlYTTczdjFIcmpBVmVMcVBXYzhKUEo3R0hKYjVVa3ZWcllVUk5tcS95M0JC?=
 =?utf-8?B?VDZjUWs4VUNZdDhDU000bWdwS04rQ0VOcndobUV1ZytKWW84RHlsbmNXd2cx?=
 =?utf-8?B?Zk1HTG1RaWRiQU1ubEZUZFFiN2REK2xkOURBclFzQW40WUN4bjBENnVMTlJa?=
 =?utf-8?B?L0hjY3RFWjhBVGt2VFErcjV3eXprVmFCTzVRRDNuT0JwT0x2dmt3dXd5WWRI?=
 =?utf-8?B?ekRDRnhPbTFuYW8zQjBSdm90MUZCNXNRazZJWnBEOE0zejc3dk8zVlFacjNi?=
 =?utf-8?B?UjJCVkNoRzBGUWZHODFzK3NmSm5KMm83OXlQUHVFTkJVdVR2S1M4a3hOa01Y?=
 =?utf-8?B?cS8zQTh1ZmpOVkZZN3ZGMmt4RFZYa0hiMjNvdlJERUN6bkJzMnZjYklTRzl4?=
 =?utf-8?B?alFqclgwUEN5NHJJSlNqS2tEOGZFMy83UHFneDJ2VlA5Zyt0b1F6REQ0V1pj?=
 =?utf-8?B?WHJSQ3FNMHRUbWhXbVFubExUMTJKTWlRWkpXTldaR3MvUVI5cGQ3RVhSWkNt?=
 =?utf-8?B?UmxHSDd2bUZ0TktFcVRsajZkMGxaOVZhS2tCVHkwUjBlWjhGU2NQYXV6YnNt?=
 =?utf-8?B?clhWaUgwVmJjdzZQZWdKd1VlTDJYTzQ5a0FzdUNiZWJ6TXZ2R0VBRzRaY0tY?=
 =?utf-8?B?ODY3c2pmc3Vkb29pWENtem51eGJkMnp3dHVUK0lvYUJMQStSZFpVdkF1SmFk?=
 =?utf-8?B?WVRndG9ycnFDa1ZyUWFBVzZBc04rMVpjY1RoYjA3Rll1K0lYb0ZoSUhOKzc2?=
 =?utf-8?B?d05EMkxaeW83ZlJaaDE5WSszaU9pSE9FSmp0STNHSEFHeUVHRUFsWnhNVXYr?=
 =?utf-8?B?MjRSWm8yNmRpbVErQ2Zvb2hDUW0zTmI0TlF6cHJXcnRxSW5RKzdGV05JVWtu?=
 =?utf-8?Q?Fz7E6K2rxdAllKhA=3D?=
X-OriginatorOrg: citrix.com
X-MS-Exchange-CrossTenant-Network-Message-Id: 2c6edd5d-4b63-4aa9-f80b-08de9ca37824
X-MS-Exchange-CrossTenant-AuthSource: CH8PR03MB8275.namprd03.prod.outlook.com
X-MS-Exchange-CrossTenant-AuthAs: Internal
X-MS-Exchange-CrossTenant-OriginalArrivalTime: 17 Apr 2026 17:05:04.3317
 (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: 84IycofJRCecBD0jQn6nQZNGryNPxGR5bBe1dv4G7LbcXCTSXBexoTfGrTkUEaFrZueKwMqlcQbbtSoLV/4eCbkH8L8VBug/FnzRbQSf4l8=
X-MS-Exchange-Transport-CrossTenantHeadersStamped: CH4PR03MB8017
X-purgate-ID: tlsNG-d25034/1776445512-F7811CF5-61FD4742/13/0
X-purgate-type: clean.bounce
X-purgate-size: 4678

On 17/04/2026 5:27 pm, Ross Lagerwall wrote:
> On 4/17/26 5:08 PM, Andrew Cooper wrote:
>> Failing to mark Xen as Reserved in the E820 is catastrophic; RAM
>> regions get
>> handed to the physical memory allocator for general use.  Similarly,
>> failure
>> to mark the boot modules as reserved is not going to result in a working
>> system.
>>
>> Mark reserve_e820_ram() as __must_check, and panic() on failure.  To
>> avoid
>> opencoding the range in every caller, print a general failure message in
>> reserve_e820_ram().
>>
>> Reported-by: Ross Lagerwall <ross.lagerwall@citrix.com>
>> Signed-off-by: Andrew Cooper <andrew.cooper3@citrix.com>
>> ---
>> CC: Jan Beulich <jbeulich@suse.com>
>> CC: Roger Pau Monné <roger.pau@citrix.com>
>> CC: Teddy Astie <teddy.astie@vates.tech>
>>
>> Slightly RFC; only compile tested so far.
>>
>> There's no obvious fixes tag.  This has been many variations of
>> broken since
>> forever.
>> ---
>>   xen/arch/x86/e820.c             |  8 +++++++-
>>   xen/arch/x86/include/asm/e820.h |  2 +-
>>   xen/arch/x86/setup.c            | 11 +++++++----
>>   3 files changed, 15 insertions(+), 6 deletions(-)
>>
>> diff --git a/xen/arch/x86/e820.c b/xen/arch/x86/e820.c
>> index 872208ab3722..f09a01f0c50a 100644
>> --- a/xen/arch/x86/e820.c
>> +++ b/xen/arch/x86/e820.c
>> @@ -670,7 +670,13 @@ int __init e820_change_range_type(
>>   /* Set E820_RAM area (@s,@e) as RESERVED in specified e820 map. */
>>   int __init reserve_e820_ram(struct e820map *map, uint64_t s,
>> uint64_t e)
>>   {
>> -    return e820_change_range_type(map, s, e, E820_RAM, E820_RESERVED);
>> +    int res = e820_change_range_type(map, s, e, E820_RAM,
>> E820_RESERVED);
>> +
>> +    if ( !res )
>> +        printk("Failed to convert E820 RAM %"PRIx64"-%"PRIx64" to
>> RESERVED\n",
>> +               s, e);
>> +
>> +    return res;
>>   }
>>     unsigned long __init init_e820(const char *str, struct e820map *raw)
>> diff --git a/xen/arch/x86/include/asm/e820.h
>> b/xen/arch/x86/include/asm/e820.h
>> index 8e7644f8870b..a86d60ce3e77 100644
>> --- a/xen/arch/x86/include/asm/e820.h
>> +++ b/xen/arch/x86/include/asm/e820.h
>> @@ -25,7 +25,7 @@ struct e820map {
>>     extern int sanitize_e820_map(struct e820entry *biosmap, unsigned
>> int *pnr_map);
>>   extern int e820_all_mapped(u64 start, u64 end, unsigned type);
>> -extern int reserve_e820_ram(struct e820map *map, uint64_t s,
>> uint64_t e);
>> +extern int __must_check reserve_e820_ram(struct e820map *map,
>> uint64_t s, uint64_t e);
>>   extern int e820_change_range_type(
>>       struct e820map *map, uint64_t s, uint64_t e,
>>       uint32_t orig_type, uint32_t new_type);
>> diff --git a/xen/arch/x86/setup.c b/xen/arch/x86/setup.c
>> index d041cbd5f6f1..9c1f1eafa0d7 100644
>> --- a/xen/arch/x86/setup.c
>> +++ b/xen/arch/x86/setup.c
>> @@ -1639,7 +1639,8 @@ void asmlinkage __init noreturn __start_xen(void)
>>       {
>>           uint64_t s = bi->mods[i].start, l = bi->mods[i].size;
>>   -        reserve_e820_ram(&boot_e820, s, s + PAGE_ALIGN(l));
>> +        if ( !reserve_e820_ram(&boot_e820, s, s + PAGE_ALIGN(l)) )
>> +            panic("Failed to reserve boot module %u in E820\n", i);
>>       }
>>         if ( !xen_phys_start )
>> @@ -1652,11 +1653,13 @@ void asmlinkage __init noreturn
>> __start_xen(void)
>>       /* This needs to remain in sync with remove_xen_ranges(). */
>>       if ( efi_boot_mem_unused(&eb_start, &eb_end) )
>>       {
>> -        reserve_e820_ram(&boot_e820, __pa(_stext), __pa(eb_start));
>> -        reserve_e820_ram(&boot_e820, __pa(eb_end),
>> __pa(__2M_rwdata_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
>> -        reserve_e820_ram(&boot_e820, __pa(_stext),
>> __pa(__2M_rwdata_end));
>> +        if ( reserve_e820_ram(&boot_e820, __pa(_stext),
>> __pa(__2M_rwdata_end)) )
>> +            panic("Failed to reserve Xen in E820\n");
>>   
>
> This condition is inverted.
> Otherwise this looks like a sensible change.

Oops, yes.  Fixed.

This is a horrible function of type int but returning a boolean
success.  Still, I'm not altering the error scheme in the same patch as
this fix.

~Andrew


From xen-devel-bounces@lists.xenproject.org Fri Apr 17 19:36:21 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Fri, 17 Apr 2026 19:36:21 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1284744.1566364 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wDoz4-0000FV-Qp; Fri, 17 Apr 2026 19:36:10 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1284744.1566364; Fri, 17 Apr 2026 19:36: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 1wDoz4-0000FO-NJ; Fri, 17 Apr 2026 19:36:10 +0000
Received: by outflank-mailman (input) for mailman id 1284744;
 Fri, 17 Apr 2026 19:36:10 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <demiobenour@gmail.com>) id 1wDoz4-0000FI-2M
 for xen-devel@lists.xenproject.org; Fri, 17 Apr 2026 19:36:10 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wDoz3-00ED1J-1G
 for xen-devel@lists.xenproject.org; Fri, 17 Apr 2026 21:36:09 +0200
Received: from [10.42.69.7] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <demiobenour@gmail.com>)
 id 69e28b84-bab6-0a2a0a5309dd-0a2a4507e504-28
 for <xen-devel@lists.xenproject.org>; Fri, 17 Apr 2026 21:36:08 +0200
Received: from [74.125.224.53] (helo=mail-yx1-f53.google.com)
 by tlsNG-ef75cf.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.1)
 (envelope-from <demiobenour@gmail.com>)
 id 69e28ba7-229c-0a2a45070019-4a7de035b0a7-3
 for <xen-devel@lists.xenproject.org>; Fri, 17 Apr 2026 21:36:08 +0200
Received: by mail-yx1-f53.google.com with SMTP id
 956f58d0204a3-650775f427eso1231578d50.2
 for <xen-devel@lists.xenproject.org>; Fri, 17 Apr 2026 12:36:08 -0700 (PDT)
Received: from [10.138.34.110]
 (h69-131-150-119.cncrtn.broadband.dynamic.tds.net. [69.131.150.119])
 by smtp.gmail.com with ESMTPSA id
 956f58d0204a3-65314e8138esm1178414d50.15.2026.04.17.12.36.05
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Fri, 17 Apr 2026 12:36:05 -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=20251104 header.d=gmail.com header.i="@gmail.com" header.h="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=gmail.com; s=20251104; t=1776454567; x=1777059367; darn=lists.xenproject.org;
        h=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;
        bh=BCXPLDe5cmq6zT80MPy68xG/a1XFCVkyCMGdF4CicSI=;
        b=NlwvlvovJjSDjkPBvGWaOehRQnVZx9Z9FgsBn7iRXB5XLszo3OTUvANE5Fc9gBuuIA
         szfwGoOWR0si/7q46j/S4g0Xl6maypIVxMH9HLUZzkretvLjN5s0q06eMboZO03HqkDa
         /l4HnbvorZtvYCsZ58J8Wg2K8GFVhwWOdRpyJeX1Jujom8MIRN7LhXczfzX9lFEt2VcZ
         8LAefBZTWy8Fi1d5tvjTLhDWWdMRMyZWmAtvWMv6NidlhlQXrCxhTXEBeHcbvQWMVKLk
         MSPpoJsDd+lQRPqrXgVkyVZrJ14jp/t7T1ibDZPnYm5/lCLxvxU8ljvROM4CON+1WTPY
         p5SA==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20251104; t=1776454567; x=1777059367;
        h=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;
        bh=BCXPLDe5cmq6zT80MPy68xG/a1XFCVkyCMGdF4CicSI=;
        b=EBgc9BMk6I7gcZliI+5YYWp2whoRS/7bOennDITqJzfrgURV49XRbIEeZiAHPMU27g
         45MCFEq1b0P97/N6u1RM/SXOOcskyXWIhZ1kCQuvUn5Ml5kaftGgZiPZYMijeS9RSMyx
         ZcXStWvwPcpe+absBjENVqIHp8W40tKtQ7XIQD3olLekYyOtW1Uy0T3QShR6MBU9WftN
         QUr3dWJdXdBC10kSp9bJhaA74fF78rCd3XG4Fb7m5ReXceUKTDJK/dIH82MhkZXhBXD9
         VR3G4BI/KVFuZo8sSj05XwQBQVxOLeEkTHlMiiCpzlE04z0Z8ir/87Aw5x9vc7zZ9iyi
         lcJw==
X-Forwarded-Encrypted: i=1; AFNElJ+zrsrQJKo9mKtKP+1eDtmzqr5+KVb+XYtZpoOoSw3Ty2YXqikD8X4MFrIxkoC4sbQVCnObuqxHrcc=@lists.xenproject.org
X-Gm-Message-State: AOJu0YzrjDrpi5f8uJS7r/mdnfd+xins5ASI1ope0iy54Z6tak6zCsFZ
	yAfmdNNXMz0y3LAQAgeX3xKXDs5ge4R5TWVlcgbrOaZqE7HTWK7hs+Ep
X-Gm-Gg: AeBDietfL0x1GCKpzR0DJckxQwgbCH8kVfGXit8EGFFODup2SDFs9SMH1hqU4nhdvQT
	rhCqywdiTY1Jf5gYrAcuQEHGAhRsawjnUty3lGI69mlTGxqtTBD2l6sSDPz6w+dyui2jaDy5YZr
	35XDEBcz7m5G3i7ICSXcUvq0Tomq7jXJSOix4XAjBPZJZDY7jXgA0OxI6KRDkCyvnnxRmyyFENa
	oO2+45ZFSZjqMSDE3BL/EuEYenm41NO3tLTJ08zmBrDzgV5FB6hv1mFU3uTN+p5BfeBGeWn2o+A
	Dg51Nsvp2/aNLxAkNgzsDR0oAD+zU7r86MarR3CTyqo4df6mfA70zOm40l5m0YVfsolB32wAGXC
	+vgMBnW5ubm+AK72bb2gdIankX7j0Ss0OcT28dwxDBwk37Bi1gTF18ZIbgGF1DJr9M6HyRjW6mm
	He6s8gAscGw/IHjTQnM9s17S8PoaG9s8qDpnNFQmsiqM3N9AvgEHO4aHNe6HNwyfgA4hHvaYjVZ
	2K2nAH14zo3XQa1sMzCOuDAvJFzDWH2Fvr1d+m1KBdc0lCLTJHHuSdFdCVDuGc=
X-Received: by 2002:a05:690e:4281:10b0:64e:de26:976b with SMTP id 956f58d0204a3-653108b83fcmr3222644d50.25.1776454566918;
        Fri, 17 Apr 2026 12:36:06 -0700 (PDT)
Message-ID: <7472bfcf-8c22-4ac7-b903-a883cdb8f1c6@gmail.com>
Date: Fri, 17 Apr 2026 15:35:51 -0400
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: Pinned, non-revocable mappings of VRAM: will bad things happen?
To: =?UTF-8?Q?Christian_K=C3=B6nig?= <christian.koenig@amd.com>,
 dri-devel@lists.freedesktop.org,
 Xen developer discussion <xen-devel@lists.xenproject.org>,
 linux-media@vger.kernel.org
Cc: Val Packett <val@invisiblethingslab.com>,
 Suwit Semal <sumit.semwal@linaro.org>
References: <a06133f7-3093-4733-9786-bc46c1453e06@gmail.com>
 <b8d04414-18b5-40f7-9ea2-88b30ff5bea0@amd.com>
 <c7865b27-6bf1-4df1-9520-c9ef6b3ef368@gmail.com>
 <4751cf03-d3c1-4d5d-af8e-39ad7c8ffb84@amd.com>
Content-Language: en-US
From: Demi Marie Obenour <demiobenour@gmail.com>
Autocrypt: addr=demiobenour@gmail.com; keydata=
 xsFNBFp+A0oBEADffj6anl9/BHhUSxGTICeVl2tob7hPDdhHNgPR4C8xlYt5q49yB+l2nipd
 aq+4Gk6FZfqC825TKl7eRpUjMriwle4r3R0ydSIGcy4M6eb0IcxmuPYfbWpr/si88QKgyGSV
 Z7GeNW1UnzTdhYHuFlk8dBSmB1fzhEYEk0RcJqg4AKoq6/3/UorR+FaSuVwT7rqzGrTlscnT
 DlPWgRzrQ3jssesI7sZLm82E3pJSgaUoCdCOlL7MMPCJwI8JpPlBedRpe9tfVyfu3euTPLPx
 wcV3L/cfWPGSL4PofBtB8NUU6QwYiQ9Hzx4xOyn67zW73/G0Q2vPPRst8LBDqlxLjbtx/WLR
 6h3nBc3eyuZ+q62HS1pJ5EvUT1vjyJ1ySrqtUXWQ4XlZyoEFUfpJxJoN0A9HCxmHGVckzTRl
 5FMWo8TCniHynNXsBtDQbabt7aNEOaAJdE7to0AH3T/Bvwzcp0ZJtBk0EM6YeMLtotUut7h2
 Bkg1b//r6bTBswMBXVJ5H44Qf0+eKeUg7whSC9qpYOzzrm7+0r9F5u3qF8ZTx55TJc2g656C
 9a1P1MYVysLvkLvS4H+crmxA/i08Tc1h+x9RRvqba4lSzZ6/Tmt60DPM5Sc4R0nSm9BBff0N
 m0bSNRS8InXdO1Aq3362QKX2NOwcL5YaStwODNyZUqF7izjK4QARAQABzTxEZW1pIE1hcmll
 IE9iZW5vdXIgKGxvdmVyIG9mIGNvZGluZykgPGRlbWlvYmVub3VyQGdtYWlsLmNvbT7CwXgE
 EwECACIFAlp+A0oCGwMGCwkIBwMCBhUIAgkKCwQWAgMBAh4BAheAAAoJELKItV//nCLBhr8Q
 AK/xrb4wyi71xII2hkFBpT59ObLN+32FQT7R3lbZRjVFjc6yMUjOb1H/hJVxx+yo5gsSj5LS
 9AwggioUSrcUKldfA/PKKai2mzTlUDxTcF3vKx6iMXKA6AqwAw4B57ZEJoMM6egm57TV19kz
 PMc879NV2nc6+elaKl+/kbVeD3qvBuEwsTe2Do3HAAdrfUG/j9erwIk6gha/Hp9yZlCnPTX+
 VK+xifQqt8RtMqS5R/S8z0msJMI/ajNU03kFjOpqrYziv6OZLJ5cuKb3bZU5aoaRQRDzkFIR
 6aqtFLTohTo20QywXwRa39uFaOT/0YMpNyel0kdOszFOykTEGI2u+kja35g9TkH90kkBTG+a
 EWttIht0Hy6YFmwjcAxisSakBuHnHuMSOiyRQLu43ej2+mDWgItLZ48Mu0C3IG1seeQDjEYP
 tqvyZ6bGkf2Vj+L6wLoLLIhRZxQOedqArIk/Sb2SzQYuxN44IDRt+3ZcDqsPppoKcxSyd1Ny
 2tpvjYJXlfKmOYLhTWs8nwlAlSHX/c/jz/ywwf7eSvGknToo1Y0VpRtoxMaKW1nvH0OeCSVJ
 itfRP7YbiRVc2aNqWPCSgtqHAuVraBRbAFLKh9d2rKFB3BmynTUpc1BQLJP8+D5oNyb8Ts4x
 Xd3iV/uD8JLGJfYZIR7oGWFLP4uZ3tkneDfYzsFNBFp+A0oBEAC9ynZI9LU+uJkMeEJeJyQ/
 8VFkCJQPQZEsIGzOTlPnwvVna0AS86n2Z+rK7R/usYs5iJCZ55/JISWd8xD57ue0eB47bcJv
 VqGlObI2DEG8TwaW0O0duRhDgzMEL4t1KdRAepIESBEA/iPpI4gfUbVEIEQuqdqQyO4GAe+M
 kD0Hy5JH/0qgFmbaSegNTdQg5iqYjRZ3ttiswalql1/iSyv1WYeC1OAs+2BLOAT2NEggSiVO
 txEfgewsQtCWi8H1SoirakIfo45Hz0tk/Ad9ZWh2PvOGt97Ka85o4TLJxgJJqGEnqcFUZnJJ
 riwoaRIS8N2C8/nEM53jb1sH0gYddMU3QxY7dYNLIUrRKQeNkF30dK7V6JRH7pleRlf+wQcN
 fRAIUrNlatj9TxwivQrKnC9aIFFHEy/0mAgtrQShcMRmMgVlRoOA5B8RTulRLCmkafvwuhs6
 dCxN0GNAORIVVFxjx9Vn7OqYPgwiofZ6SbEl0hgPyWBQvE85klFLZLoj7p+joDY1XNQztmfA
 rnJ9x+YV4igjWImINAZSlmEcYtd+xy3Li/8oeYDAqrsnrOjb+WvGhCykJk4urBog2LNtcyCj
 kTs7F+WeXGUo0NDhbd3Z6AyFfqeF7uJ3D5hlpX2nI9no/ugPrrTVoVZAgrrnNz0iZG2DVx46
 x913pVKHl5mlYQARAQABwsFfBBgBAgAJBQJafgNKAhsMAAoJELKItV//nCLBwNIP/AiIHE8b
 oIqReFQyaMzxq6lE4YZCZNj65B/nkDOvodSiwfwjjVVE2V3iEzxMHbgyTCGA67+Bo/d5aQGj
 gn0TPtsGzelyQHipaUzEyrsceUGWYoKXYyVWKEfyh0cDfnd9diAm3VeNqchtcMpoehETH8fr
 RHnJdBcjf112PzQSdKC6kqU0Q196c4Vp5HDOQfNiDnTf7gZSj0BraHOByy9LEDCLhQiCmr+2
 E0rW4tBtDAn2HkT9uf32ZGqJCn1O+2uVfFhGu6vPE5qkqrbSE8TG+03H8ecU2q50zgHWPdHM
 OBvy3EhzfAh2VmOSTcRK+tSUe/u3wdLRDPwv/DTzGI36Kgky9MsDC5gpIwNbOJP2G/q1wT1o
 Gkw4IXfWv2ufWiXqJ+k7HEi2N1sree7Dy9KBCqb+ca1vFhYPDJfhP75I/VnzHVssZ/rYZ9+5
 1yDoUABoNdJNSGUYl+Yh9Pw9pE3Kt4EFzUlFZWbE4xKL/NPno+z4J9aWemLLszcYz/u3XnbO
 vUSQHSrmfOzX3cV4yfmjM5lewgSstoxGyTx2M8enslgdXhPthZlDnTnOT+C+OTsh8+m5tos8
 HQjaPM01MKBiAqdPgksm1wu2DrrwUi6ChRVTUBcj6+/9IJ81H2P2gJk3Ls3AVIxIffLoY34E
 +MYSfkEjBz0E8CLOcAw7JIwAaeBT
In-Reply-To: <4751cf03-d3c1-4d5d-af8e-39ad7c8ffb84@amd.com>
Content-Type: multipart/signed; micalg=pgp-sha256;
 protocol="application/pgp-signature";
 boundary="------------bs68b4yFFH9Al3ffdKH6its7"
X-purgate-ID: tlsNG-ef75cf/1776454568-16062C48-1020CBC4/0/0
X-purgate-type: clean
X-purgate-size: 17112

This is an OpenPGP/MIME signed message (RFC 4880 and 3156)
--------------bs68b4yFFH9Al3ffdKH6its7
Content-Type: multipart/mixed; boundary="------------QazVX00TBm0dCevWLQ1sUV0h";
 protected-headers="v1"
Message-ID: <7472bfcf-8c22-4ac7-b903-a883cdb8f1c6@gmail.com>
Date: Fri, 17 Apr 2026 15:35:51 -0400
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: Pinned, non-revocable mappings of VRAM: will bad things happen?
To: =?UTF-8?Q?Christian_K=C3=B6nig?= <christian.koenig@amd.com>,
 dri-devel@lists.freedesktop.org,
 Xen developer discussion <xen-devel@lists.xenproject.org>,
 linux-media@vger.kernel.org
Cc: Val Packett <val@invisiblethingslab.com>,
 Suwit Semal <sumit.semwal@linaro.org>
References: <a06133f7-3093-4733-9786-bc46c1453e06@gmail.com>
 <b8d04414-18b5-40f7-9ea2-88b30ff5bea0@amd.com>
 <c7865b27-6bf1-4df1-9520-c9ef6b3ef368@gmail.com>
 <4751cf03-d3c1-4d5d-af8e-39ad7c8ffb84@amd.com>
Content-Language: en-US
From: Demi Marie Obenour <demiobenour@gmail.com>
Autocrypt: addr=demiobenour@gmail.com; keydata=
 xsFNBFp+A0oBEADffj6anl9/BHhUSxGTICeVl2tob7hPDdhHNgPR4C8xlYt5q49yB+l2nipd
 aq+4Gk6FZfqC825TKl7eRpUjMriwle4r3R0ydSIGcy4M6eb0IcxmuPYfbWpr/si88QKgyGSV
 Z7GeNW1UnzTdhYHuFlk8dBSmB1fzhEYEk0RcJqg4AKoq6/3/UorR+FaSuVwT7rqzGrTlscnT
 DlPWgRzrQ3jssesI7sZLm82E3pJSgaUoCdCOlL7MMPCJwI8JpPlBedRpe9tfVyfu3euTPLPx
 wcV3L/cfWPGSL4PofBtB8NUU6QwYiQ9Hzx4xOyn67zW73/G0Q2vPPRst8LBDqlxLjbtx/WLR
 6h3nBc3eyuZ+q62HS1pJ5EvUT1vjyJ1ySrqtUXWQ4XlZyoEFUfpJxJoN0A9HCxmHGVckzTRl
 5FMWo8TCniHynNXsBtDQbabt7aNEOaAJdE7to0AH3T/Bvwzcp0ZJtBk0EM6YeMLtotUut7h2
 Bkg1b//r6bTBswMBXVJ5H44Qf0+eKeUg7whSC9qpYOzzrm7+0r9F5u3qF8ZTx55TJc2g656C
 9a1P1MYVysLvkLvS4H+crmxA/i08Tc1h+x9RRvqba4lSzZ6/Tmt60DPM5Sc4R0nSm9BBff0N
 m0bSNRS8InXdO1Aq3362QKX2NOwcL5YaStwODNyZUqF7izjK4QARAQABzTxEZW1pIE1hcmll
 IE9iZW5vdXIgKGxvdmVyIG9mIGNvZGluZykgPGRlbWlvYmVub3VyQGdtYWlsLmNvbT7CwXgE
 EwECACIFAlp+A0oCGwMGCwkIBwMCBhUIAgkKCwQWAgMBAh4BAheAAAoJELKItV//nCLBhr8Q
 AK/xrb4wyi71xII2hkFBpT59ObLN+32FQT7R3lbZRjVFjc6yMUjOb1H/hJVxx+yo5gsSj5LS
 9AwggioUSrcUKldfA/PKKai2mzTlUDxTcF3vKx6iMXKA6AqwAw4B57ZEJoMM6egm57TV19kz
 PMc879NV2nc6+elaKl+/kbVeD3qvBuEwsTe2Do3HAAdrfUG/j9erwIk6gha/Hp9yZlCnPTX+
 VK+xifQqt8RtMqS5R/S8z0msJMI/ajNU03kFjOpqrYziv6OZLJ5cuKb3bZU5aoaRQRDzkFIR
 6aqtFLTohTo20QywXwRa39uFaOT/0YMpNyel0kdOszFOykTEGI2u+kja35g9TkH90kkBTG+a
 EWttIht0Hy6YFmwjcAxisSakBuHnHuMSOiyRQLu43ej2+mDWgItLZ48Mu0C3IG1seeQDjEYP
 tqvyZ6bGkf2Vj+L6wLoLLIhRZxQOedqArIk/Sb2SzQYuxN44IDRt+3ZcDqsPppoKcxSyd1Ny
 2tpvjYJXlfKmOYLhTWs8nwlAlSHX/c/jz/ywwf7eSvGknToo1Y0VpRtoxMaKW1nvH0OeCSVJ
 itfRP7YbiRVc2aNqWPCSgtqHAuVraBRbAFLKh9d2rKFB3BmynTUpc1BQLJP8+D5oNyb8Ts4x
 Xd3iV/uD8JLGJfYZIR7oGWFLP4uZ3tkneDfYzsFNBFp+A0oBEAC9ynZI9LU+uJkMeEJeJyQ/
 8VFkCJQPQZEsIGzOTlPnwvVna0AS86n2Z+rK7R/usYs5iJCZ55/JISWd8xD57ue0eB47bcJv
 VqGlObI2DEG8TwaW0O0duRhDgzMEL4t1KdRAepIESBEA/iPpI4gfUbVEIEQuqdqQyO4GAe+M
 kD0Hy5JH/0qgFmbaSegNTdQg5iqYjRZ3ttiswalql1/iSyv1WYeC1OAs+2BLOAT2NEggSiVO
 txEfgewsQtCWi8H1SoirakIfo45Hz0tk/Ad9ZWh2PvOGt97Ka85o4TLJxgJJqGEnqcFUZnJJ
 riwoaRIS8N2C8/nEM53jb1sH0gYddMU3QxY7dYNLIUrRKQeNkF30dK7V6JRH7pleRlf+wQcN
 fRAIUrNlatj9TxwivQrKnC9aIFFHEy/0mAgtrQShcMRmMgVlRoOA5B8RTulRLCmkafvwuhs6
 dCxN0GNAORIVVFxjx9Vn7OqYPgwiofZ6SbEl0hgPyWBQvE85klFLZLoj7p+joDY1XNQztmfA
 rnJ9x+YV4igjWImINAZSlmEcYtd+xy3Li/8oeYDAqrsnrOjb+WvGhCykJk4urBog2LNtcyCj
 kTs7F+WeXGUo0NDhbd3Z6AyFfqeF7uJ3D5hlpX2nI9no/ugPrrTVoVZAgrrnNz0iZG2DVx46
 x913pVKHl5mlYQARAQABwsFfBBgBAgAJBQJafgNKAhsMAAoJELKItV//nCLBwNIP/AiIHE8b
 oIqReFQyaMzxq6lE4YZCZNj65B/nkDOvodSiwfwjjVVE2V3iEzxMHbgyTCGA67+Bo/d5aQGj
 gn0TPtsGzelyQHipaUzEyrsceUGWYoKXYyVWKEfyh0cDfnd9diAm3VeNqchtcMpoehETH8fr
 RHnJdBcjf112PzQSdKC6kqU0Q196c4Vp5HDOQfNiDnTf7gZSj0BraHOByy9LEDCLhQiCmr+2
 E0rW4tBtDAn2HkT9uf32ZGqJCn1O+2uVfFhGu6vPE5qkqrbSE8TG+03H8ecU2q50zgHWPdHM
 OBvy3EhzfAh2VmOSTcRK+tSUe/u3wdLRDPwv/DTzGI36Kgky9MsDC5gpIwNbOJP2G/q1wT1o
 Gkw4IXfWv2ufWiXqJ+k7HEi2N1sree7Dy9KBCqb+ca1vFhYPDJfhP75I/VnzHVssZ/rYZ9+5
 1yDoUABoNdJNSGUYl+Yh9Pw9pE3Kt4EFzUlFZWbE4xKL/NPno+z4J9aWemLLszcYz/u3XnbO
 vUSQHSrmfOzX3cV4yfmjM5lewgSstoxGyTx2M8enslgdXhPthZlDnTnOT+C+OTsh8+m5tos8
 HQjaPM01MKBiAqdPgksm1wu2DrrwUi6ChRVTUBcj6+/9IJ81H2P2gJk3Ls3AVIxIffLoY34E
 +MYSfkEjBz0E8CLOcAw7JIwAaeBT
In-Reply-To: <4751cf03-d3c1-4d5d-af8e-39ad7c8ffb84@amd.com>

--------------QazVX00TBm0dCevWLQ1sUV0h
Content-Type: multipart/mixed; boundary="------------D7OcFUkheM5tnXkSpl0qNROw"

--------------D7OcFUkheM5tnXkSpl0qNROw
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: quoted-printable

On 4/17/26 03:53, Christian K=C3=B6nig wrote:
> On 4/16/26 18:13, Demi Marie Obenour wrote:
>> On 4/16/26 05:57, Christian K=C3=B6nig wrote:
>>> On 4/16/26 01:27, Demi Marie Obenour wrote:
>>>> Is it safe to assume that if a dmabuf exporter cannot handle
>>>> non-revocable, pinned importers, it will fail the import?  Or is
>>>> using dma_buf_pin() unsafe if one does not know the exporter?
>>>
>>> Neither.
>>>
>>> dma_buf_pin() makes sure that the importer doesn't get any invalidati=
on notifications because the exporter moves the backing store of the buff=
er around for memory management.
>>>
>>> But what is still possible is that the exporter is hot removed, in wh=
ich case the importer should basically terminate it's DMA operation as so=
on as possible.
>>>
>>> GPU drivers usually reject pin requests to VRAM from DMA-buf importer=
s when that isn't restricted by cgroups for example, because that can oth=
erwise easily result in a deny of service.
>>>
>>> Amdgpu only recently started to allow pinning into VRAM to support RD=
MA without ODP (I think it was ODP, but could be that I mixed up the RDMA=
 three letter code for that feature).
>>>
>>>> For context, Xen grant tables do not support revocation.  One can as=
k
>>>> the guest to unmap the grants, but if the guest doesn't obey the onl=
y
>>>> recourse is to ungracefully kill it.  They also do not support page
>>>> faults, so the pages must be pinned.  Right now, grant tables don't
>>>> support PCI BAR mappings, but that's fixable.
>>>
>>> That sounds like an use case for the DMA-buf pin interface.
>>>
>>>> How badly is this going to break with dGPU VRAM, if at all?  I know
>>>> that AMDGPU has a fallback when the BAR isn't mappable.  What about
>>>> other drivers?  Supporting page faults the way KVM does is going to
>>>> be extremely hard, so pinned mappings and DMA transfers are vastly
>>>> preferable.
>>>
>>> Well if you only want to share a fixed amount of VRAM then that is pr=
etty much ok.
>>>
>>> But when the client VM can trigger pinning on demand without any limi=
tation you can pretty easily have deny of service against the host. That =
is usually a rather bad idea.
>>
>> Is there a reasonable way to choose such an amount?
>=20
> Not really.
>=20
>> Unless I am
>> mistaken, client workloads are highly non-uniform: a single game or
>> compute job might well use more VRAM than every other program on the
>> system combined.
>=20
> Yeah, perfectly correct.
>=20
>> Are these workloads impossible to make work well with pinning?
>=20
> No, as long as you don't know the workload beforehand, e.g. when you de=
fine the limit.
>=20
> I mean that's why basically everybody avoids pinning and assigning fixe=
d amounts of resources.
>=20
> Even if you can make it work technically pinning usually results in a r=
ather bad end user experience.
>=20
> Regards,
> Christian.

Do drivers and programs assume that they can access VRAM from the CPU?

Are any of the following reasonable options?

1. Change the guest kernel to only map (and thus pin) a small subset
   of VRAM at any given time.  If unmapped VRAM is accessed the guest
   traps the page fault, evicts an old VRAM mapping, and creates a
   new one.
  =20
2. Pretend that resizable BAR is not enabled, so the guest doesn't
   think it can map much of VRAM at once.  If resizable BAR is enabled
   on the host, it might be possible to split the large BAR mapping
   in a lot of ways.

Or does Xen really need to allow the host to handle guest page faults?
That adds a huge amount of complexity to trusted and security-critical
parts of the system, so it really is a last resort.  Putting the
complexity in to the guest virtio-GPU driver is vastly preferable if
it can be made to work well.
--=20
Sincerely,
Demi Marie Obenour (she/her/hers)
--------------D7OcFUkheM5tnXkSpl0qNROw
Content-Type: application/pgp-keys; name="OpenPGP_0xB288B55FFF9C22C1.asc"
Content-Disposition: attachment; filename="OpenPGP_0xB288B55FFF9C22C1.asc"
Content-Description: OpenPGP public key
Content-Transfer-Encoding: quoted-printable

-----BEGIN PGP PUBLIC KEY BLOCK-----

xsFNBFp+A0oBEADffj6anl9/BHhUSxGTICeVl2tob7hPDdhHNgPR4C8xlYt5q49y
B+l2nipdaq+4Gk6FZfqC825TKl7eRpUjMriwle4r3R0ydSIGcy4M6eb0IcxmuPYf
bWpr/si88QKgyGSVZ7GeNW1UnzTdhYHuFlk8dBSmB1fzhEYEk0RcJqg4AKoq6/3/
UorR+FaSuVwT7rqzGrTlscnTDlPWgRzrQ3jssesI7sZLm82E3pJSgaUoCdCOlL7M
MPCJwI8JpPlBedRpe9tfVyfu3euTPLPxwcV3L/cfWPGSL4PofBtB8NUU6QwYiQ9H
zx4xOyn67zW73/G0Q2vPPRst8LBDqlxLjbtx/WLR6h3nBc3eyuZ+q62HS1pJ5EvU
T1vjyJ1ySrqtUXWQ4XlZyoEFUfpJxJoN0A9HCxmHGVckzTRl5FMWo8TCniHynNXs
BtDQbabt7aNEOaAJdE7to0AH3T/Bvwzcp0ZJtBk0EM6YeMLtotUut7h2Bkg1b//r
6bTBswMBXVJ5H44Qf0+eKeUg7whSC9qpYOzzrm7+0r9F5u3qF8ZTx55TJc2g656C
9a1P1MYVysLvkLvS4H+crmxA/i08Tc1h+x9RRvqba4lSzZ6/Tmt60DPM5Sc4R0nS
m9BBff0Nm0bSNRS8InXdO1Aq3362QKX2NOwcL5YaStwODNyZUqF7izjK4QARAQAB
zTxEZW1pIE9iZW5vdXIgKElUTCBFbWFpbCBLZXkpIDxhdGhlbmFAaW52aXNpYmxl
dGhpbmdzbGFiLmNvbT7CwY4EEwEIADgWIQR2h02fEza6IlkHHHGyiLVf/5wiwQUC
X6YJvQIbAwULCQgHAgYVCgkICwIEFgIDAQIeAQIXgAAKCRCyiLVf/5wiwWRhD/0Y
R+YYC5Kduv/2LBgQJIygMsFiRHbR4+tWXuTFqgrxxFSlMktZ6gQrQCWe38WnOXkB
oY6n/5lSJdfnuGd2UagZ/9dkaGMUkqt+5WshLFly4BnP7pSsWReKgMP7etRTwn3S
zk1OwFx2lzY1EnnconPLfPBc6rWG2moA6l0WX+3WNR1B1ndqpl2hPSjT2jUCBWDV
rGOUSX7r5f1WgtBeNYnEXPBCUUM51pFGESmfHIXQrqFDA7nBNiIVFDJTmQzuEqIy
Jl67pKNgooij5mKzRhFKHfjLRAH4mmWZlB9UjDStAfFBAoDFHwd1HL5VQCNQdqEc
/9lZDApqWuCPadZN+pGouqLysesIYsNxUhJ7dtWOWHl0vs7/3qkWmWun/2uOJMQh
ra2u8nA9g91FbOobWqjrDd6x3ZJoGQf4zLqjmn/P514gb697788e573WN/MpQ5XI
Fl7aM2d6/GJiq6LC9T2gSUW4rbPBiqOCeiUx7Kd/sVm41p9TOA7fEG4bYddCfDsN
xaQJH6VRK3NOuBUGeL+iQEVF5Xs6Yp+U+jwvv2M5Lel3EqAYo5xXTx4ls0xaxDCu
fudcAh8CMMqx3fguSb7Mi31WlnZpk0fDuWQVNKyDP7lYpwc4nCCGNKCj622ZSocH
AcQmX28L8pJdLYacv9pU3jPy4fHcQYvmTavTqowGnM08RGVtaSBNYXJpZSBPYmVu
b3VyIChsb3ZlciBvZiBjb2RpbmcpIDxkZW1pb2Jlbm91ckBnbWFpbC5jb20+wsF4
BBMBAgAiBQJafgNKAhsDBgsJCAcDAgYVCAIJCgsEFgIDAQIeAQIXgAAKCRCyiLVf
/5wiwYa/EACv8a2+MMou9cSCNoZBQaU+fTmyzft9hUE+0d5W2UY1RY3OsjFIzm9R
/4SVccfsqOYLEo+S0vQMIIIqFEq3FCpXXwPzyimotps05VA8U3Bd7yseojFygOgK
sAMOAee2RCaDDOnoJue01dfZMzzHPO/TVdp3OvnpWipfv5G1Xg96rwbhMLE3tg6N
xwAHa31Bv4/Xq8CJOoIWvx6fcmZQpz01/lSvsYn0KrfEbTKkuUf0vM9JrCTCP2oz
VNN5BYzqaq2M4r+jmSyeXLim922VOWqGkUEQ85BSEemqrRS06IU6NtEMsF8EWt/b
hWjk/9GDKTcnpdJHTrMxTspExBiNrvpI2t+YPU5B/dJJAUxvmhFrbSIbdB8umBZs
I3AMYrEmpAbh5x7jEjoskUC7uN3o9vpg1oCLS2ePDLtAtyBtbHnkA4xGD7ar8mem
xpH9lY/i+sC6CyyIUWcUDnnagKyJP0m9ks0GLsTeOCA0bft2XA6rD6aaCnMUsndT
ctrab42CV5XypjmC4U1rPJ8JQJUh1/3P48/8sMH+3krxpJ06KNWNFaUbaMTGiltZ
7x9DngklSYrX0T+2G4kVXNmjaljwkoLahwLla2gUWwBSyofXdqyhQdwZsp01KXNQ
UCyT/Pg+aDcm/E7OMV3d4lf7g/CSxiX2GSEe6BlhSz+Lmd7ZJ3g32M1ARGVtaSBN
YXJpZSBPYmVub3VyIChJVEwgRW1haWwgS2V5KSA8ZGVtaUBpbnZpc2libGV0aGlu
Z3NsYWIuY29tPsLBjgQTAQgAOBYhBHaHTZ8TNroiWQcccbKItV//nCLBBQJgOEV+
AhsDBQsJCAcCBhUKCQgLAgQWAgMBAh4BAheAAAoJELKItV//nCLBKwoP/1WSnFdv
SAD0g7fD0WlF+oi7ISFT7oqJnchFLOwVHK4Jg0e4hGn1ekWsF3Ha5tFLh4V/7UUu
obYJpTfBAA2CckspYBqLtKGjFxcaqjjpO1I2W/jeNELVtSYuCOZICjdNGw2Hl9yH
KRZiBkqc9u8lQcHDZKq4LIpVJj6ZQV/nxttDX90ax2No1nLLQXFbr5wb465LAPpU
lXwunYDij7xJGye+VUASQh9datye6orZYuJvNo8Tr3mAQxxkfR46LzWgxFCPEAZJ
5P56Nc0IMHdJZj0Uc9+1jxERhOGppp5jlLgYGK7faGB/jTV6LaRQ4Ad+xiqokDWp
mUOZsmA+bMbtPfYjDZBz5mlyHcIRKIFpE1l3Y8F7PhJuzzMUKkJi90CYakCV4x/a
Zs4pzk5E96c2VQx01RIEJ7fzHF7lwFdtfTS4YsLtAbQFsKayqwkGcVv2B1AHeqdo
TMX+cgDvjd1ZganGlWA8Sv9RkNSMchn1hMuTwERTyFTr2dKPnQdA1F480+jUap41
ClXgn227WkCIMrNhQGNyJsnwyzi5wS8rBVRQ3BOTMyvGM07j3axUOYaejEpg7wKi
wTPZGLGH1sz5GljD/916v5+v2xLbOo5606j9dWf5/tAhbPuqrQgWv41wuKDi+dDD
EKkODF7DHes8No+QcHTDyETMn1RYm7t0RKR4zsFNBFp+A0oBEAC9ynZI9LU+uJkM
eEJeJyQ/8VFkCJQPQZEsIGzOTlPnwvVna0AS86n2Z+rK7R/usYs5iJCZ55/JISWd
8xD57ue0eB47bcJvVqGlObI2DEG8TwaW0O0duRhDgzMEL4t1KdRAepIESBEA/iPp
I4gfUbVEIEQuqdqQyO4GAe+MkD0Hy5JH/0qgFmbaSegNTdQg5iqYjRZ3ttiswalq
l1/iSyv1WYeC1OAs+2BLOAT2NEggSiVOtxEfgewsQtCWi8H1SoirakIfo45Hz0tk
/Ad9ZWh2PvOGt97Ka85o4TLJxgJJqGEnqcFUZnJJriwoaRIS8N2C8/nEM53jb1sH
0gYddMU3QxY7dYNLIUrRKQeNkF30dK7V6JRH7pleRlf+wQcNfRAIUrNlatj9Txwi
vQrKnC9aIFFHEy/0mAgtrQShcMRmMgVlRoOA5B8RTulRLCmkafvwuhs6dCxN0GNA
ORIVVFxjx9Vn7OqYPgwiofZ6SbEl0hgPyWBQvE85klFLZLoj7p+joDY1XNQztmfA
rnJ9x+YV4igjWImINAZSlmEcYtd+xy3Li/8oeYDAqrsnrOjb+WvGhCykJk4urBog
2LNtcyCjkTs7F+WeXGUo0NDhbd3Z6AyFfqeF7uJ3D5hlpX2nI9no/ugPrrTVoVZA
grrnNz0iZG2DVx46x913pVKHl5mlYQARAQABwsFfBBgBAgAJBQJafgNKAhsMAAoJ
ELKItV//nCLBwNIP/AiIHE8boIqReFQyaMzxq6lE4YZCZNj65B/nkDOvodSiwfwj
jVVE2V3iEzxMHbgyTCGA67+Bo/d5aQGjgn0TPtsGzelyQHipaUzEyrsceUGWYoKX
YyVWKEfyh0cDfnd9diAm3VeNqchtcMpoehETH8frRHnJdBcjf112PzQSdKC6kqU0
Q196c4Vp5HDOQfNiDnTf7gZSj0BraHOByy9LEDCLhQiCmr+2E0rW4tBtDAn2HkT9
uf32ZGqJCn1O+2uVfFhGu6vPE5qkqrbSE8TG+03H8ecU2q50zgHWPdHMOBvy3Ehz
fAh2VmOSTcRK+tSUe/u3wdLRDPwv/DTzGI36Kgky9MsDC5gpIwNbOJP2G/q1wT1o
Gkw4IXfWv2ufWiXqJ+k7HEi2N1sree7Dy9KBCqb+ca1vFhYPDJfhP75I/VnzHVss
Z/rYZ9+51yDoUABoNdJNSGUYl+Yh9Pw9pE3Kt4EFzUlFZWbE4xKL/NPno+z4J9aW
emLLszcYz/u3XnbOvUSQHSrmfOzX3cV4yfmjM5lewgSstoxGyTx2M8enslgdXhPt
hZlDnTnOT+C+OTsh8+m5tos8HQjaPM01MKBiAqdPgksm1wu2DrrwUi6ChRVTUBcj
6+/9IJ81H2P2gJk3Ls3AVIxIffLoY34E+MYSfkEjBz0E8CLOcAw7JIwAaeBTzsFN
BGbyLVgBEACqClxh50hmBepTSVlan6EBq3OAoxhrAhWZYEwN78k+ENhK68KhqC5R
IsHzlL7QHW1gmfVBQZ63GnWiraM6wOJqFTL4ZWvRslga9u28FJ5XyK860mZLgYhK
9BzoUk4s+dat9jVUbq6LpQ1Ot5I9vrdzo2p1jtQ8h9WCIiFxSYy8s8pZ3hHh5T64
GIj1m/kY7lG3VIdUgoNiREGf/iOMjUFjwwE9ZoJ26j9p7p1U+TkKeF6wgswEB1T3
J8KCAtvmRtqJDq558IU5jhg5fgN+xHB8cgvUWulgK9FIF9oFxcuxtaf/juhHWKMO
RtL0bHfNdXoBdpUDZE+mLBUAxF6KSsRrvx6AQyJs7VjgXJDtQVWvH0PUmTrEswgb
49nNU+dLLZQAZagxqnZ9Dp5l6GqaGZCHERJcLmdY/EmMzSf5YazJ6c0vO8rdW27M
kn73qcWAplQn5mOXaqbfzWkAUPyUXppuRHfrjxTDz3GyJJVOeMmMrTxH4uCaGpOX
Z8tN6829J1roGw4oKDRUQsaBAeEDqizXMPRc+6U9vI5FXzbAsb+8lKW65G7JWHym
YPOGUt2hK4DdTA1PmVo0DxH00eWWeKxqvmGyX+Dhcg+5e191rPsMRGsDlH6KihI6
+3JIuc0y6ngdjcp6aalbuvPIGFrCRx3tnRtNc7He6cBWQoH9RPwluwARAQABwsOs
BBgBCgAgFiEEdodNnxM2uiJZBxxxsoi1X/+cIsEFAmbyLVgCGwICQAkQsoi1X/+c
IsHBdCAEGQEKAB0WIQSilC2pUlbVp66j3+yzNoc6synyUwUCZvItWAAKCRCzNoc6
synyU85gD/0T1QDtPhovkGwoqv4jUbEMMvpeYQf+oWgm/TjWPeLwdjl7AtY0G9Ml
ZoyGniYkoHi37Gnn/ShLT3B5vtyI58ap2+SSa8SnGftdAKRLiWFWCiAEklm9FRk8
N3hwxhmSFF1KR/AIDS4g+HIsZn7YEMubBSgLlZZ9zHl4O4vwuXlREBEW97iL/FSt
VownU2V39t7PtFvGZNk+DJH7eLO3jmNRYB0PL4JOyyda3NH/J92iwrFmjFWWmmWb
/Xz8l9DIs+Z59pRCVTTwbBEZhcUc7rVMCcIYL+q1WxBG2e6lMn15OQJ5WfiE6E0I
sGirAEDnXWx92JNGx5l+mMpdpsWhBZ5iGTtttZesibNkQfd48/eCgFi4cxJUC4PT
UQwfD9AMgzwSTGJrkI5XGy+XqxwOjL8UA0iIrtTpMh49zw46uV6kwFQCgkf32jZM
OLwLTNSzclbnA7GRd8tKwezQ/XqeK3dal2n+cOr+o+Eka7yGmGWNUqFbIe8cjj9T
JeF3mgOCmZOwMI+wIcQYRSf+e5VTMO6TNWH5BI3vqeHSt7HkYuPlHT0pGum88d4a
pWqhulH4rUhEMtirX1hYx8Q4HlUOQqLtxzmwOYWkhl1C+yPObAvUDNiHCLf9w28n
uihgEkzHt9J4VKYulyJM9fe3ENcyU6rpXD7iANQqcr87ogKXFxknZ97uEACvSucc
RbnnAgRqZ7GDzgoBerJ2zrmhLkeREZ08iz1zze1JgyW3HEwdr2UbyAuqvSADCSUU
GN0vtQHsPzWl8onRc7lOPqPDF8OO+UfN9NAfA4wl3QyChD1GXl9rwKQOkbvdlYFV
UFx9u86LNi4ssTmU8p9NtHIGpz1SYMVYNoYy9NU7EVqypGMguDCL7gJt6GUmA0sw
p+YCroXiwL2BJ7RwRqTpgQuFL1gShkA17D5jK4mDPEetq1d8kz9rQYvAR/sTKBsR
ImC3xSfn8zpWoNTTB6lnwyP5Ng1bu6esS7+SpYprFTe7ZqGZF6xhvBPf1Ldi9UAm
U2xPN1/eeWxEa2kusidmFKPmN8lcT4miiAvwGxEnY7Oww9CgZlUB+LP4dl5VPjEt
sFeAhrgxLdpVTjPRRwTd9VQF3/XYl83j5wySIQKIPXgT3sG3ngAhDhC8I8GpM36r
8WJJ3x2yVzyJUbBPO0GBhWE2xPNIfhxVoU4cGGhpFqz7dPKSTRDGq++MrFgKKGpI
ZwT3CPTSSKc7ySndEXWkOYArDIdtyxdE1p5/c3aoz4utzUU7NDHQ+vVIwlnZSMiZ
jek2IJP3SZ+COOIHCVxpUaZ4lnzWT4eDqABhMLpIzw6NmGfg+kLBJhouqz81WITr
EtJuZYM5blWncBOJCoWMnBEcTEo/viU3GgcVRw=3D=3D
=3Dx94R
-----END PGP PUBLIC KEY BLOCK-----

--------------D7OcFUkheM5tnXkSpl0qNROw--

--------------QazVX00TBm0dCevWLQ1sUV0h--

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

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

iQIzBAEBCgAdFiEEopQtqVJW1aeuo9/sszaHOrMp8lMFAmnii6EACgkQszaHOrMp
8lOTEg/8DL29ClU4ouyNlEjeZamONbl87JTiSDAc3TZ/NN8ggFL6xmkJviO3985p
2Pk+GD5k3kyTbpnDxAuMKKDqdBttOpR6qzZ/oZkAHm1T8jLDA3j2Rx5JTqMtZCBl
Lik41hTlEKK6BZNXpQWaDTtGhwEj736RXMhM9sBKojyfkAZhz5w3BoJusvtictww
cSVQULrJGdz3JfiHlujdG9eKeeBO9LB2FL6xLW21T62UFVK+TxY2d2q/8CupqdZ3
5O+8HVmVy7gGjsQ5Vozvwwp1NQfAU0Tk///q403BpVgz1gBpP0A31IwWvD1Cbm+O
spmzxuZqgqZhaWQBRT3lxOQsx/L/un08TeumWEJPW+Ao1QHVQiuK5zuQGiz+H3aO
AJ8/aQic1Rf9c/7YO/jD0HM19GpJwY2mjpMtFoMg7xYRgDH5JpcKS8r9/A4ZlItn
C8G13IHeP5yRkERIUuYYspHycXo6LwDWBYp9EaRFmkKOwUOikfGqNcjiP1h5YWjD
8yLevu+lH3gHKoVNiy45OrtaHvB7Dta3lCW5SUkzO/Ubm7oKOp4Xm0JhnaXJtzZ+
raRaQWadaYY0pjIEduCq8TuEtrw+kSdcEzW65Kk6kvPT5qCR5ejSJpwITTTIWxaG
LUZ1zp2byNBrLm7paNNDSrw4dS2lpX8ujFCCkkS4P4jumliJLTQ=
=Ugtr
-----END PGP SIGNATURE-----

--------------bs68b4yFFH9Al3ffdKH6its7--


From xen-devel-bounces@lists.xenproject.org Sat Apr 18 07:07:04 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Sat, 18 Apr 2026 07:07:04 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1284826.1566373 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wDzlP-000329-5M; Sat, 18 Apr 2026 07:06:47 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1284826.1566373; Sat, 18 Apr 2026 07:06: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 1wDzlP-000322-2b; Sat, 18 Apr 2026 07:06:47 +0000
Received: by outflank-mailman (input) for mailman id 1284826;
 Sat, 18 Apr 2026 07:06:46 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <ayan.kumar.halder@amd.com>) id 1wDzlO-00031u-6M
 for xen-devel@lists.xenproject.org; Sat, 18 Apr 2026 07:06:46 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wDzlN-004g26-4i
 for xen-devel@lists.xenproject.org; Sat, 18 Apr 2026 09:06:45 +0200
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 69e32d14-e002-0a2a0a5209dd-0a2a4506d17c-20
 for <xen-devel@lists.xenproject.org>; Sat, 18 Apr 2026 09:06:44 +0200
Received: from [52.101.85.4]
 (helo=BYAPR05CU005.outbound.protection.outlook.com)
 by tlsNG-16d1c6.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.1)
 (envelope-from <ayan.kumar.halder@amd.com>)
 id 69e32d82-7371-0a2a45060019-34655504bd11-3
 for <xen-devel@lists.xenproject.org>; Sat, 18 Apr 2026 09:06:44 +0200
Received: from DM6PR11CA0047.namprd11.prod.outlook.com (2603:10b6:5:14c::24)
 by SA0PR12MB4413.namprd12.prod.outlook.com (2603:10b6:806:9e::9) with
 Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9818.25; Sat, 18 Apr
 2026 07:06:38 +0000
Received: from CH3PEPF00000018.namprd21.prod.outlook.com
 (2603:10b6:5:14c:cafe::dc) by DM6PR11CA0047.outlook.office365.com
 (2603:10b6:5:14c::24) with Microsoft SMTP Server (version=TLS1_3,
 cipher=TLS_AES_256_GCM_SHA384) id 15.20.9769.55 via Frontend Transport; Sat,
 18 Apr 2026 07:06:38 +0000
Received: from satlexmb07.amd.com (165.204.84.17) by
 CH3PEPF00000018.mail.protection.outlook.com (10.167.244.123) with Microsoft
 SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id
 15.20.9818.0 via Frontend Transport; Sat, 18 Apr 2026 07:06:38 +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.17; Sat, 18 Apr
 2026 02:06:38 -0500
Received: from [10.252.194.40] (10.180.168.240) by satlexmb07.amd.com
 (10.181.42.216) with Microsoft SMTP Server id 15.2.2562.17 via Frontend
 Transport; Sat, 18 Apr 2026 02:06:28 -0500
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@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=ruHmtH+EIshMz/slhPM5tmpo+T1wcugUjPwyvsXhD8FFhcqZHBR2c8HVGxy61Fqse+Ur0mnCsVI5QuK5HPyBFsSa0+Ng8gv4UbLmYrruh++YNomInwnaHQJY53C+/pklhhxPvmAV/oABp76sxT69yaSSVxZDzEWRjV4qN0zf/dz/lsdBLDwxEZBtfPjpP3xbviOMSwXfpCsQKaotQPElYSTSJXg2kTyTkOWFruQB/xBxCVAyM1PJh2YCljwqEkKYAW8t8sjacVwoWkyKepuqkzkXIl2KVyJZTzy9zw5paHcXAJ0t9tldJZlPI+kSnT0QF+nHN4WMESByhnVk6oJSVA==
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com;
 s=arcselector10001;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1;
 bh=BClIecVJmvCejMpgiswZKy4WjjMP+uudCrG7lM21Kco=;
 b=QjGUvzpXJD6TmnI2ijw85PvkPJ37vZOsCEw6VOMDlzEZXwrEptSyXDXv7xtjcVf1/q9ufZQWn3lQ5iwd49f6aGQF7TOUk1PQ0J51WeSwXy+OwGU8Y0XTiKS6ASXjwmImN69BKcn6Nz+aIa6JwnGTrgMQsy+544wygH935hZuDuSU2DhRPHQPhr5XBc/LBYmyDVQ7wnffKrRZ/7WceJ18JwJG7jBYkCb8WRdLa0lPHUauJDk57SU7/ami6SM3PeEc1a/RtqTcFdPXF1An8uWdHImepaQePTYzvTzuR2Uo+mUYHQFI1M+9VlcEjqKUVMh2ha7LmncAkvgUiYor3fCVJA==
ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass (sender ip is
 165.204.84.17) smtp.rcpttodomain=arm.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=BClIecVJmvCejMpgiswZKy4WjjMP+uudCrG7lM21Kco=;
 b=NaNWOCmYbunqQojNrgvrdBKuL1aI7Yroc7BB8+NHKe96QBYTO/DmVNllGywRaAK4azrt1068YsYOYERxcKv69TGnxiqtRLHy4XW5he/kV3IV97tInGm7N1+goI8g9kdji/6yJW8tEu4uVLRFuuZCmMJlSJmtGx0TfrRUISZ+zsg=
X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 165.204.84.17)
 smtp.mailfrom=amd.com; dkim=none (message not signed)
 header.d=none;dmarc=pass action=none header.from=amd.com;
Received-SPF: Pass (protection.outlook.com: domain of amd.com designates
 165.204.84.17 as permitted sender) receiver=protection.outlook.com;
 client-ip=165.204.84.17; helo=satlexmb07.amd.com; pr=C
Message-ID: <a3a2b36e-9362-49d5-8b71-9f6fc667c366@amd.com>
Date: Sat, 18 Apr 2026 08:06:27 +0100
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH v2] xen: gic-v3: Introduce CONFIG_GICV3_NR_LRS
To: Luca Fancellu <Luca.Fancellu@arm.com>, Ayan Kumar Halder
	<ayan.kumar.halder@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>, Michal Orzel
	<michal.orzel@amd.com>, Volodymyr Babchuk <Volodymyr_Babchuk@epam.com>
References: <20260318140900.3795710-1-ayan.kumar.halder@amd.com>
 <D28202A5-EA01-4AE7-816C-FE3B703605F6@arm.com>
Content-Language: en-US
From: "Halder, Ayan Kumar" <ayankuma@amd.com>
In-Reply-To: <D28202A5-EA01-4AE7-816C-FE3B703605F6@arm.com>
Content-Type: text/plain; charset="UTF-8"; format=flowed
Content-Transfer-Encoding: 7bit
X-EOPAttributedMessage: 0
X-MS-PublicTrafficType: Email
X-MS-TrafficTypeDiagnostic: CH3PEPF00000018:EE_|SA0PR12MB4413:EE_
X-MS-Office365-Filtering-Correlation-Id: 8b826b96-e9d0-441a-22ae-08de9d190919
X-MS-Exchange-SenderADCheck: 1
X-MS-Exchange-AntiSpam-Relay: 0
X-Microsoft-Antispam:
	BCL:0;ARA:13230040|1800799024|376014|36860700016|82310400026|56012099003|18002099003|22082099003;
X-Microsoft-Antispam-Message-Info:
	s0B4PWpPHoDYGokk98xapvwfPY040iSv3TCGPTn0CdukIm8/iP7TC3cSFeb4jIkgxOTyi1h9QtanB+yxHM+1biSPzMVxsJM0SQPms/8DpoWS1mJWCRtxDGk62hHP7KcUu2UCO2thX++kCCoRqF9O1+OGe/gG/AngVBe4/1lMG6pBFPjMt+FLAP3N7U7BCeg+JpGYEVlgr1W5ONjr/zNlG+extbFp9Ly8YkEtS5iX3HKb81iTMyQTGS+fera95p8g8HHQ8wrVRuDMUryPBl5zXbqb+JJS871+WteNdNYk6kpZAikzSyNPSrAUQ/BTDS7qCBgk3Q8D3UJcCxgtizGpYqT7z0DKucxUwIiaAvaRbLs7xiv0b+pouY3k3IzMKbhEjegk2NBWMlOTbJTJCjtOYb17B1tsoR0QFV5ozVTDQgdFlu0S1mze4agUc8265oHrNFOuzD6KRvtKmai6TD/4Lvwegulc/wXo44Ru8EIk8utkypp9lGx0fyDYTQ5VoD4Fyiz3riv7OjmQ18GqaZp6vcodlueq3FbRAwk3ns3t/MjD58baeV+48z46cwHmTxMmP91WFKjIxB5cuHYWwH9Jnsw20ld7Cfl785hkGJJN6WrzGO+uBwHeiWdYiVBmxI4xVE58kLAxhiwf80Qu9rdmEyX9LtlvLlCmbWygZbTwAmG2x66RfGyL2u/jawy2UGFK/7urcZzOlJjnSBjmDnNqVAol6oonlTMPtKaieFQRT/JmkF2ABf5RikWyT/B5UGOJEyBkSIQAf5ODB+ziw9QpfCWrI2KbTuz5Xp36j5XVLGs=
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)(36860700016)(82310400026)(56012099003)(18002099003)(22082099003);DIR:OUT;SFP:1101;
X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1
X-MS-Exchange-AntiSpam-MessageData-0:
	oFs7CYHSCcAJSZghCkOGs16KWeK3oiXxZEjLwjMkXxtwESgusFDnznyTn0CI68zeP5BjzIyrp2wg7CNtsMJgjYbfs8arD3OWoawbA/+SJl9TwqwwHM0STNGoXoxbYeuRrISzCge20oV5D/0zCHNG+/WH73xIEqiDt9P+5ytZksHcwvvYlbjjWmcrG+Kx0swHonZIirg+6/WUhhlkr3hkyudnpTYpDutgcrdkk+/B4jG6BYw1WzOLLV66T+QA63LHj6vgzamGsdqZ12pyg/PQipsjKIqFsgO/wm5Wijf0iAjGzDOpc0f4UxtGnjuNSDIHh2QqzNo/hT7mQ83w0lXhgmg1NCJXwNxQJkcT8LQGwvywXdPdO7x6e+mJAa+ZzoSHto2FD9U4pIcCi2kjCxTiIukmrwIUx20vzJ6ZB4genjZtKIV2J5wUhKobocKm4tF/
X-OriginatorOrg: amd.com
X-MS-Exchange-CrossTenant-OriginalArrivalTime: 18 Apr 2026 07:06:38.5029
 (UTC)
X-MS-Exchange-CrossTenant-Network-Message-Id: 8b826b96-e9d0-441a-22ae-08de9d190919
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:
	CH3PEPF00000018.namprd21.prod.outlook.com
X-MS-Exchange-CrossTenant-AuthAs: Anonymous
X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem
X-MS-Exchange-Transport-CrossTenantHeadersStamped: SA0PR12MB4413
X-purgate-ID: tlsNG-16d1c6/1776496004-CF57ED75-522C5CFB/0/0
X-purgate-type: clean
X-purgate-size: 6048


On 08/04/2026 15:24, Luca Fancellu wrote:
> Hi Ayan,
Hi Luca,
>
>> On 18 Mar 2026, at 14:09, Ayan Kumar Halder <ayan.kumar.halder@amd.com> wrote:
>>
>> One key requirement of Xen functional safety is to reduce the number
>> of lines of code to be safety certified. Besides, a safety certified
>> Xen requires a static hardware configuration to be defined. This static
>> hardware configuration is described as per the test hardware/emulator
>> hardware configuration against which Xen is verified.
>>
>> Introduce GICV3_NR_LRS with the two aims in mind:
>> 1. User should set the number of GICV3 list registers as per the test
>> hardware so that the unwanted code can be removed using GCC's dead
>> code elimination or preprocessor's config.
>> 2. By doing #1, one can ensure that there is no untested code due to
>> unsupported hardware platform and thus there is no safety impact due
>> to untested code.
>>
>> However if the user does not set GICV3_NR_LRS, then it is set to 0.
>> Thus Xen will fallback to the default scenario (i.e. read the hardware
>> register to determine the number of LRS).
>>
>> 1. In gicv3_save_lrs()/gicv3_restore_lrs(), use the number of list
>> registers from GICV3_NR_LRS (if defined) instead of gicv3_info.nr_lrs.
>> This ensures that if the hardware does not support more than 4 LRs
>> (for example), the code accessing LR 4-15 is never reached. The
>> compiler can eliminate the unsupported cases as the switch case uses a
>> constant conditional.
>>
>> 2. RAZ/WI for the unsupported LRs.
>>
>> Signed-off-by: Ayan Kumar Halder <ayan.kumar.halder@amd.com>
>> Signed-off-by: Michal Orzel <michal.orzel@amd.com>
>> ---
>> Changelog:
>>
>> v1 - 1. s/lrs/LRS
>> 2. Implement RAZ/WI instead of panic
>>
>> Few comments which were not addressed
>> 1. Do "gicv3_info.nr_lrs to LRS" in gicv3_hyp_init() and keep the code
>> unchanged in gicv3_save_lrs()/gicv3_restore_lrs() -- This prevents the
>> compiler from doing dead code elimination as the switch condition cannot
>> be evaluated at compile time.
>> I am not sure how to get around this issue.
>>
>> xen/arch/arm/Kconfig  |  9 +++++++++
>> xen/arch/arm/gic-v3.c | 14 ++++++++++++--
>> 2 files changed, 21 insertions(+), 2 deletions(-)
>>
>> diff --git a/xen/arch/arm/Kconfig b/xen/arch/arm/Kconfig
>> index 2f2b501fda..6540013f97 100644
>> --- a/xen/arch/arm/Kconfig
>> +++ b/xen/arch/arm/Kconfig
>> @@ -276,6 +276,15 @@ config PCI_PASSTHROUGH
>>
>> endmenu
>>
>> +config GICV3_NR_LRS
>> + int "Number of GICv3 Link Registers supported" if EXPERT
>> + depends on GICV3
>> + range 0 16
> 16 is the maximum supported since ICH_VTR_EL2.ListRegs is 4 bits [1],
> however how are we handling the case when GICV3_NR_LRS is greater
> than the supported number of LR registers?
>
> Shall we check that in gicv3_hyp_init()?

My intention is that when user sets GICV3_NR_LRS , it overwrites the 
value obtained from reading the hardware. IOW, I was thinking of 
something like

gicv3_info.nr_lrs = GICV3_NR_LRS

But you have a valid point that what will happen if the user sets 
GICV3_NR_LRS to value greater than that supported by the hardware. I 
think we should print a warning in that case. This was suggested by 
Julien in v1, but I missed that.

>
>> + default 0
>> + help
>> +  Controls the number of Link registers to be accessed.
>> +  Keep it set to 0 to use a value obtained from a hardware register.
>> +
>> menu "ARM errata workaround via the alternative framework"
>> depends on HAS_ALTERNATIVE
>>
>> diff --git a/xen/arch/arm/gic-v3.c b/xen/arch/arm/gic-v3.c
>> index bc07f97c16..eaae95eb4d 100644
>> --- a/xen/arch/arm/gic-v3.c
>> +++ b/xen/arch/arm/gic-v3.c
>> @@ -51,6 +51,8 @@ static DEFINE_PER_CPU(void __iomem*, rbase);
>> #define GICD                   (gicv3.map_dbase)
>> #define GICD_RDIST_BASE        (this_cpu(rbase))
>> #define GICD_RDIST_SGI_BASE    (GICD_RDIST_BASE + SZ_64K)
>> +#define LRS                    (CONFIG_GICV3_NR_LRS ?: \
>> +                                gicv3_info.nr_lrs)
>>
>> /*
>>   * Saves all 16(Max) LR registers. Though number of LRs implemented
>> @@ -59,7 +61,7 @@ static DEFINE_PER_CPU(void __iomem*, rbase);
>> static inline void gicv3_save_lrs(struct vcpu *v)
>> {
>>      /* Fall through for all the cases */
>> -    switch ( gicv3_info.nr_lrs )
>> +    switch ( LRS )
>>      {
>>      case 16:
>>          v->arch.gic.v3.lr[15] = READ_SYSREG_LR(15);
>> @@ -121,7 +123,7 @@ static inline void gicv3_save_lrs(struct vcpu *v)
>> static inline void gicv3_restore_lrs(const struct vcpu *v)
>> {
>>      /* Fall through for all the cases */
>> -    switch ( gicv3_info.nr_lrs )
>> +    switch ( LRS )
>>      {
>>      case 16:
>>          WRITE_SYSREG_LR(v->arch.gic.v3.lr[15], 15);
>> @@ -178,6 +180,10 @@ static inline void gicv3_restore_lrs(const struct vcpu *v)
>>
>> static uint64_t gicv3_ich_read_lr(int lr)
>> {
>> +    /* RAZ for unsupported LR */
>> +    if ( lr >= LRS )
>> +        return 0;
>> +
>>      switch ( lr )
>>      {
>>      case 0: return READ_SYSREG_LR(0);
>> @@ -203,6 +209,10 @@ static uint64_t gicv3_ich_read_lr(int lr)
>>
>> static void gicv3_ich_write_lr(int lr, uint64_t val)
>> {
>> +    /* WI for unsupported LR */
>> +    if ( lr >= LRS )
>> +        return;
>> +
>>      switch ( lr )
>>      {
>>      case 0:
> Now, since we are using CONFIG_GICV3_NR_LRS or gicv3_info.nr_lrs in gicv3_save_lrs/gicv3_restore_lrs,
> there are other part of the codebase using nr_lrs (gic_get_nr_lrs() is one of them), but all the callers of that
> function will use the HW nr_lrs and not the CONFIG_GICV3_NR_LRS, so I think some work needs to be done
> to align them or there will be mismatches at runtime with possible loss of information.

I will fix that.

- Ayan

>
>
> [1] https://developer.arm.com/documentation/111179/2025-09_ASL1/AArch64-Registers/ICH-VTR-EL2--Interrupt-Controller-VGIC-Type-Register
>
> Cheers,
> Luca
>
>


From xen-devel-bounces@lists.xenproject.org Sat Apr 18 07:13:33 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Sat, 18 Apr 2026 07:13:33 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1284834.1566381 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wDzrt-0004bj-Rp; Sat, 18 Apr 2026 07:13:29 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1284834.1566381; Sat, 18 Apr 2026 07:13: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 1wDzrt-0004bc-P0; Sat, 18 Apr 2026 07:13:29 +0000
Received: by outflank-mailman (input) for mailman id 1284834;
 Sat, 18 Apr 2026 07:13:29 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <ayan.kumar.halder@amd.com>) id 1wDzrs-0004bW-Tu
 for xen-devel@lists.xenproject.org; Sat, 18 Apr 2026 07:13:29 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wDzrs-00FFpP-7D
 for xen-devel@lists.xenproject.org; Sat, 18 Apr 2026 09:13:28 +0200
Received: from [10.42.69.10] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <ayan.kumar.halder@amd.com>)
 id 69e32ef1-5cb7-0a2a0a5109dd-0a2a450ade42-18
 for <xen-devel@lists.xenproject.org>; Sat, 18 Apr 2026 09:13:27 +0200
Received: from [52.101.52.39]
 (helo=BL2PR02CU003.outbound.protection.outlook.com)
 by tlsNG-4011c0.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.1)
 (envelope-from <ayan.kumar.halder@amd.com>)
 id 69e32f16-56b3-0a2a450a0019-34653427dd6a-3
 for <xen-devel@lists.xenproject.org>; Sat, 18 Apr 2026 09:13:27 +0200
Received: from SA1P222CA0138.NAMP222.PROD.OUTLOOK.COM (2603:10b6:806:3c2::27)
 by LV2PR12MB5944.namprd12.prod.outlook.com (2603:10b6:408:14f::12)
 with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9818.20; Sat, 18 Apr
 2026 07:13:23 +0000
Received: from SA2PEPF00001507.namprd04.prod.outlook.com
 (2603:10b6:806:3c2:cafe::4d) by SA1P222CA0138.outlook.office365.com
 (2603:10b6:806:3c2::27) with Microsoft SMTP Server (version=TLS1_3,
 cipher=TLS_AES_256_GCM_SHA384) id 15.20.9769.55 via Frontend Transport; Sat,
 18 Apr 2026 07:13:22 +0000
Received: from satlexmb07.amd.com (165.204.84.17) by
 SA2PEPF00001507.mail.protection.outlook.com (10.167.242.39) with Microsoft
 SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id
 15.20.9791.48 via Frontend Transport; Sat, 18 Apr 2026 07:13: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.17; Sat, 18 Apr
 2026 02:13:22 -0500
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.17; Sat, 18 Apr
 2026 02:13:21 -0500
Received: from [10.252.194.40] (10.180.168.240) by satlexmb07.amd.com
 (10.181.42.216) with Microsoft SMTP Server id 15.2.2562.17 via Frontend
 Transport; Sat, 18 Apr 2026 02:13:14 -0500
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@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=yRRgQLRJqskRP9cv4dGaQK1TQLmDlqgQs7TDe75fX2neJE+29bs2+E+hXKMuDRCXK+wy2PjiM6q7ALye7Dqyps9Xz7NbFLd+90gbodY2h2/Em3bTHSA/9QWLAt1b0UTxDjqbvOB2lhg+9QW1AW9/qJv35LlnmmNfbiCVa128Qi2V5pTlqxt81XyQFvcjXzP9dJSU6zSZrsO1dAFU1uHBORtcQKzlIyhxQr+0zpcBFyIqNYOB4atACUlUvpDhM44Z7/pVwxFI5m7UqJUV2vdSZLxvH1Ua0H3sPzh683xj3lYo5VKQqchFywIoVIT/SD3ea3sgxUCcFMRHH1F9w0N1nw==
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com;
 s=arcselector10001;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1;
 bh=THLwUhVuLXf0NKR0jU1AkBr69GtDTI4t2rIMBmNEEmI=;
 b=XCAahBd42h8rsFabIDTjOEfMJLnyZk318nE5onbXTTv7ztaLttChYWN3Q7NRXJ/t/r0zpyDRLvbeOxoxc+lP3nhz+FLfyA/0ieISzA1tchLZOG5k2hLIAfm5xLhLg+BxvG/sM/kBL3jCMViV1c4lOihJMaICiNeYB3QpWA6yVrXhBgt+89gc7PlaQKy0kJFkaG1By0AG7t0zZg3wCuEAnYl5xMOSzywWNdAob/kuVRXJeJGkfUmEzmI2n0VT0hdFWHXSBC6Dx46AOzmaYVqTxZYIB9V+STKiou53ea4ewyCRtUW9Pwbsnl0dbHU/0l8CzkQVMDWwZRhfGRSF4RldvQ==
ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass (sender ip is
 165.204.84.17) smtp.rcpttodomain=xen.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=THLwUhVuLXf0NKR0jU1AkBr69GtDTI4t2rIMBmNEEmI=;
 b=qlO8Sm4ZEPzFvhG/DSocI9UgqTMcqlejR8k5LjBCVnpYiw0htQaonBxqa/2mBRN5bXBpKJTjC8VVdSTHx/Aqc7/hdg++8Xa70bxUdIuohSbkD7qG6fWxRmUABX16Tto0RDsTLk7SITMTGgYeDAb80LXS0u8wlCkCNEjGFM3ARfM=
X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 165.204.84.17)
 smtp.mailfrom=amd.com; dkim=none (message not signed)
 header.d=none;dmarc=pass action=none header.from=amd.com;
Received-SPF: Pass (protection.outlook.com: domain of amd.com designates
 165.204.84.17 as permitted sender) receiver=protection.outlook.com;
 client-ip=165.204.84.17; helo=satlexmb07.amd.com; pr=C
Message-ID: <360f731d-5902-4578-b6cd-7cc438b1d998@amd.com>
Date: Sat, 18 Apr 2026 08:13:13 +0100
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH v2] xen: gic-v3: Introduce CONFIG_GICV3_NR_LRS
To: Julien Grall <julien@xen.org>, Luca Fancellu <Luca.Fancellu@arm.com>, Ayan
 Kumar Halder <ayan.kumar.halder@amd.com>, Ayan Kumar Halder
	<ayan.kumar.halder@amd.com>
CC: "xen-devel@lists.xenproject.org" <xen-devel@lists.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>
References: <20260318140900.3795710-1-ayan.kumar.halder@amd.com>
 <D28202A5-EA01-4AE7-816C-FE3B703605F6@arm.com>
 <56478969-509d-4527-b136-4498840606e2@xen.org>
Content-Language: en-US
From: "Halder, Ayan Kumar" <ayankuma@amd.com>
In-Reply-To: <56478969-509d-4527-b136-4498840606e2@xen.org>
Content-Type: text/plain; charset="UTF-8"; format=flowed
Content-Transfer-Encoding: 8bit
X-EOPAttributedMessage: 0
X-MS-PublicTrafficType: Email
X-MS-TrafficTypeDiagnostic: SA2PEPF00001507:EE_|LV2PR12MB5944:EE_
X-MS-Office365-Filtering-Correlation-Id: cd6f4f51-ccff-495c-57cb-08de9d19f9d0
X-MS-Exchange-SenderADCheck: 1
X-MS-Exchange-AntiSpam-Relay: 0
X-Microsoft-Antispam:
	BCL:0;ARA:13230040|376014|1800799024|82310400026|36860700016|18002099003|56012099003|22082099003;
X-Microsoft-Antispam-Message-Info:
	ErDqgRir+6PI6prQzfXWDXHZ7gtOjO6bXjFpFm+3alEExHJZ6uZTFpXvRevw2+Chk5C3EfyEXGKBuRXKJNOmFPlQZl8WNHlb7hyaj7Vi0y9F6dFVaB+3oOaEwmisW+Yd4BIWIYH4ltVpML/TVMvjakVlv6W37KvId9Az1dT2yjRuncDk1gMZBA6CeHf8Enqv3038ALgwHKHhkaREfx2Ez0gkUvGSpEOYKEf8i4SfwEEBeHR4wT/ddLw2d7MVkfYAU9EtCTw1ra16XD1OHv6jqNyEgJlAcxHTC7y0s9LeHHod5t4R1uxSGDQj6bVEhiIZX8sTrqqYQXH5qf7eZFjH4bNt3fGRrOrE9aqkLgV7MEBoWT2JkjWH1VxfxYsae2xKCAbX48f7G0jCE2q1d7+ELcTkRBqmkIsSmzWmkEH8tzAmUeyagqY0o6Lx+AmtlsIvoi8UUc41U9Ga4f4DsPYKqu1H/8qczT/BWRM4D+70iiud3w/v4HkYmcXNIQiRZ6k/2eYq7OdpYQRzqvo2xxqLls73cpP1+zMO/S71UyiP2O/7HDVfKTWESUa3HGRa5424k/bGpq32bmlQiYEW+qG/BZKkU7VU2a1O4Z45ZDhP86WA739AWt185GU5z7Jtj8Fllrsss7VdeTpl43zrj/c08XH/XuV3SZog6K/UkFfD9bnknwniQXm+Q29RhyX85gaBLY3XxflcOKRH8CoV3yAQj/5NxB1IChaGN5udlhS+3rToT+ow47mQHfSastfQUCWxQqB3j1j5r0gomTsIdYJiuA==
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)(82310400026)(36860700016)(18002099003)(56012099003)(22082099003);DIR:OUT;SFP:1101;
X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1
X-MS-Exchange-AntiSpam-MessageData-0:
	hwC6Sip7xxN4zXKRqh9Y53wacGyBttqVW8Ik9SNoU69LYbZvnqNyX6YLygIj4aqdh7fMXM8+BjHcWSqRBdPsD2eL0saqNFcvIn5IU4ilTdf3RNbFsEpK0lgHT1RiCGti2TBMUk7JiJjXhkAX7iJDc/DS6rLI6WS23PoSMnyGHQ6qrbbboJZp1pu5nVoD3qNHtBoeRYuIejz4F0u7n8Kz1grb/odn42LD8P2vAwIwNQ04Id053SD8NvycdLF5g8+D2fHTaxOTbQLnBT5kuFtessMQTg11RvbFXqlahp2lqWf+Y3uLOVxiL+ptUu1QS3JRnEIezR8VulbvMRN/bUc0pXxtZUcZJkTFNuNO6tZHRnjjKk8B6LchhC+DcHPQ9yWOrxSuk+IkGdZplTZYw8Iob6+RVLAW/SbtDAdhYYP+e5RbiuYnlWsdSP101V8GOLde
X-OriginatorOrg: amd.com
X-MS-Exchange-CrossTenant-OriginalArrivalTime: 18 Apr 2026 07:13:22.3760
 (UTC)
X-MS-Exchange-CrossTenant-Network-Message-Id: cd6f4f51-ccff-495c-57cb-08de9d19f9d0
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:
	SA2PEPF00001507.namprd04.prod.outlook.com
X-MS-Exchange-CrossTenant-AuthAs: Anonymous
X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem
X-MS-Exchange-Transport-CrossTenantHeadersStamped: LV2PR12MB5944
X-purgate-ID: tlsNG-4011c0/1776496407-47B7F8B7-F21EC398/0/0
X-purgate-type: clean
X-purgate-size: 1622


On 14/04/2026 03:10, Julien Grall wrote:
> Hi,
Hi Julien,
>
> On 08/04/2026 23:24, Luca Fancellu wrote:
>>> @@ -203,6 +209,10 @@ static uint64_t gicv3_ich_read_lr(int lr)
>>>
>>> static void gicv3_ich_write_lr(int lr, uint64_t val)
>>> {
>>> +    /* WI for unsupported LR */
>>> +    if ( lr >= LRS )
>>> +        return;
>>> +
>>>      switch ( lr )
>>>      {
>>>      case 0:
>>
>> Now, since we are using CONFIG_GICV3_NR_LRS or gicv3_info.nr_lrs in 
>> gicv3_save_lrs/gicv3_restore_lrs,
>> there are other part of the codebase using nr_lrs (gic_get_nr_lrs() 
>> is one of them), but all the callers of that
>> function will use the HW nr_lrs and not the CONFIG_GICV3_NR_LRS, so I 
>> think some work needs to be done
>> to align them or there will be mismatches at runtime with possible 
>> loss of information.
>
> +1. We need a consistent view for the number of LRs. I could also see 
> a use case where the integrator wants to support less LRs than what 
> the HW supports (this doesn't seem to be prevented with this patch).

This scenario is ok. In this case, we should use the value provided by 
the GICV3_NR_LRS. I don't think this should be something we want to 
prevent. Or I might be missing something ?

The issue is with the opposite situation. If GICV3_NR_LRS is greater 
than what the hardware supports, we should print a warning. And let Xen 
use the value GICV3_NR_LRS.

>
> Note, during Xen boot, we may need to zero the LRs which are unused as 
> they may potentially contain active interrupts.

Ack.

- Ayan

>
> Cheers,
>


From xen-devel-bounces@lists.xenproject.org Sat Apr 18 07:28:55 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Sat, 18 Apr 2026 07:28:55 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1284842.1566391 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wE06j-0006Ml-3k; Sat, 18 Apr 2026 07:28:49 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1284842.1566391; Sat, 18 Apr 2026 07: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 1wE06j-0006Me-0m; Sat, 18 Apr 2026 07:28:49 +0000
Received: by outflank-mailman (input) for mailman id 1284842;
 Sat, 18 Apr 2026 07:28:48 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <ayan.kumar.halder@amd.com>) id 1wE06i-0006MY-0L
 for xen-devel@lists.xenproject.org; Sat, 18 Apr 2026 07:28:48 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wE06g-00BkpQ-Rz
 for xen-devel@lists.xenproject.org; Sat, 18 Apr 2026 09:28:46 +0200
Received: from [10.42.69.9] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <ayan.kumar.halder@amd.com>)
 id 69e3325e-bab6-0a2a0a5309dd-0a2a450990aa-40
 for <xen-devel@lists.xenproject.org>; Sat, 18 Apr 2026 09:28:46 +0200
Received: from [40.107.201.29]
 (helo=CH4PR04CU002.outbound.protection.outlook.com)
 by tlsNG-bad1c0.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.1)
 (envelope-from <ayan.kumar.halder@amd.com>)
 id 69e332ad-2497-0a2a45090019-286bc91d372b-3
 for <xen-devel@lists.xenproject.org>; Sat, 18 Apr 2026 09:28:46 +0200
Received: from BY5PR04CA0004.namprd04.prod.outlook.com (2603:10b6:a03:1d0::14)
 by DM4PR12MB6182.namprd12.prod.outlook.com (2603:10b6:8:a8::15) with
 Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9818.21; Sat, 18 Apr
 2026 07:28:41 +0000
Received: from SJ1PEPF000023CC.namprd02.prod.outlook.com
 (2603:10b6:a03:1d0:cafe::e1) by BY5PR04CA0004.outlook.office365.com
 (2603:10b6:a03:1d0::14) with Microsoft SMTP Server (version=TLS1_3,
 cipher=TLS_AES_256_GCM_SHA384) id 15.20.9769.52 via Frontend Transport; Sat,
 18 Apr 2026 07:28:41 +0000
Received: from satlexmb07.amd.com (165.204.84.17) by
 SJ1PEPF000023CC.mail.protection.outlook.com (10.167.244.6) with Microsoft
 SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id
 15.20.9769.17 via Frontend Transport; Sat, 18 Apr 2026 07:28:40 +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.17; Sat, 18 Apr
 2026 02:28:39 -0500
Received: from [10.252.194.40] (10.180.168.240) by satlexmb07.amd.com
 (10.181.42.216) with Microsoft SMTP Server id 15.2.2562.17 via Frontend
 Transport; Sat, 18 Apr 2026 02:28:24 -0500
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@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=ZU4TI3Ix3u7+Gp2N7ionZBPyyE0XJDfOMVw8U/nkKGy8sSYXR4pMM1sCcVSDdFsabcO0SKHLZGHXGNv8m6SVXUBN+NpHbUrD37PJZN35LK0cgc0oqrCD5HOlroP/51dNnruMzFyU3jK7R08bAi2rrXiN6fByghSvo9O8bv464q6X2zIGBq0lFksgomT5eidNUsRbklUHGGnPwFG+pX7YniZza4GMYGS4tu+MXVpIDZ7cGmz1zGsOAgvuVKftcWW5I8nHk8Gw0BQLzUhnlhds6JlSRy0X7/+u44gKThGf5b3KwrHHCdhBap7ReZX5ugsf6O2FfX2zfgiXLI2SeQztJg==
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com;
 s=arcselector10001;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1;
 bh=SVU1EW8nR4fo4UYfWYf3iKbf5HlwfDbGYK0qu8l56GI=;
 b=SkR/CqSVsiVjnA9TeDHRr9qFgS+B7qBT8OIqZLIJmrVf8IIvvJt0f309QqDo2/2TSU/I8E+QIt7Ac41GykyZ5EbxUzudA+1sb+iJxfguV3UfZVMTImCZoaYXFAi5dsK6HekC0gkDCo6jyqFjmzoR+ccHjYcmz+iQT+PgRbeprXtVEidvpO/McO3SXemEEfRbN/va1TiROFWNO159XjTdmnItwCsyLeeVrjc7pEdNHm7yfGAgRKQr08gcHeF8P7XdyUg9x8owwNcOmXnFAzvo7MRxd6y6BgVFlvGWDIRi+KLuJxXzJX3LHq2cZGyKbe1aIyAztML2nWklzH7wY4jLlQ==
ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass (sender ip is
 165.204.84.17) smtp.rcpttodomain=xen.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=SVU1EW8nR4fo4UYfWYf3iKbf5HlwfDbGYK0qu8l56GI=;
 b=iHyISO3IJaOSXK/rmBXB1Ey/rqyGXlgBaMjgg8nakeysX68dOeEhM1Sgsp4IME54mMVuaSOqNUVvrxe86tICLsqqoVekggsCQA0yC0+5TR50Q4o0LWbslhwLe1W+e0mb+DmMZsxl9NWxvnrS1Y3tiUm0AGjp7H5wvgecflw3enA=
X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 165.204.84.17)
 smtp.mailfrom=amd.com; dkim=none (message not signed)
 header.d=none;dmarc=pass action=none header.from=amd.com;
Received-SPF: Pass (protection.outlook.com: domain of amd.com designates
 165.204.84.17 as permitted sender) receiver=protection.outlook.com;
 client-ip=165.204.84.17; helo=satlexmb07.amd.com; pr=C
Message-ID: <f834927b-a5a7-4b83-8e0a-d24263554e26@amd.com>
Date: Sat, 18 Apr 2026 08:28:23 +0100
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH v2] xen: gic-v3: Introduce CONFIG_GICV3_NR_LRS
To: Julien Grall <julien@xen.org>, 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>, Michal Orzel <michal.orzel@amd.com>, "Volodymyr
 Babchuk" <Volodymyr_Babchuk@epam.com>
References: <20260318140900.3795710-1-ayan.kumar.halder@amd.com>
 <83786d8b-d57a-4c79-8e8b-7115d4276568@xen.org>
Content-Language: en-US
From: "Halder, Ayan Kumar" <ayankuma@amd.com>
In-Reply-To: <83786d8b-d57a-4c79-8e8b-7115d4276568@xen.org>
Content-Type: text/plain; charset="UTF-8"; format=flowed
Content-Transfer-Encoding: 8bit
X-EOPAttributedMessage: 0
X-MS-PublicTrafficType: Email
X-MS-TrafficTypeDiagnostic: SJ1PEPF000023CC:EE_|DM4PR12MB6182:EE_
X-MS-Office365-Filtering-Correlation-Id: ae28e254-f83c-4825-c84e-08de9d1c1cea
X-MS-Exchange-SenderADCheck: 1
X-MS-Exchange-AntiSpam-Relay: 0
X-Microsoft-Antispam:
	BCL:0;ARA:13230040|1800799024|82310400026|376014|36860700016|56012099003|22082099003|18002099003;
X-Microsoft-Antispam-Message-Info:
	Ad0P3/IGZesYojPP1NZWa0YcxcYzkX5mIoUDGDdCxBvmIOnG4vsUdp+8lPv9Cj+ggBCkuwlkAm4TttU/8OctpV4pikajbUEzOVTMk60NScSsA2ya3vUXjtVH/2zxAEuCxe+A9jkUDYr7uLLne53jlfbYw+qMJBalDO1+hpILoM00hvPKw/KybQ6X906gEAWqFhAhDVJyu0YVHs3Tqqc/jzTz03CiIgUvrF+jc7vsMOB3HBd3OL4pHbuLJSORnXa+0etW4wg4F/Hmz50jNwzMiqtM19+JaHJHiaXUEgnd3mSEjtdS6llmB/xrnRhq6ZJo2UCI08cs8lgqeimKIR0JPM9VWu2jU18iSMFv/M/JT2/Sff0JV6MIKtl0x3Rtbkx9aHFGkJgzyyU9VZghX1APhha/tWGZUWUPSzSJY3FZ6+bb9ZXXt08xFnbMHDieTqcHqvA/oqks23twy6K8Ro+NgdEO2KXJ/ll4z26Rubuu2W3KfIIbdDhujkW2oNY9K44NPzur8pKvyHhenT25M2bIbsWu/U3pEvSRnyV1oJnxnl+3YLUA36C11ATdFngnfaafG6gw/TMkd3HJPZ5ueOAer7IIAouJqh0WG06DNDk/A7rmweZO14Di4SA7QWHgkwjOoYVjs5wbmGcdsDoKQRMF7gKWT+5Rum/F1MEooHcoJYGlzyMbKPXQ1bcTQBF4JxgkM7zknbBPt5/L0VKlK1ekKc5/pvER0Apk49etw+tzNbbH0+VhN5+RfyRPrpI/+txEx6QEv5IlJuJ89ZIn7LkRjw==
X-Forefront-Antispam-Report:
	CIP:165.204.84.17;CTRY:US;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:satlexmb07.amd.com;PTR:InfoDomainNonexistent;CAT:NONE;SFS:(13230040)(1800799024)(82310400026)(376014)(36860700016)(56012099003)(22082099003)(18002099003);DIR:OUT;SFP:1101;
X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1
X-MS-Exchange-AntiSpam-MessageData-0:
	RuV1bVi4lqXlFMQ+uYGOyhCpR+K4n2bgN32lkSZ5vGiQv6czBLxXxLPaHv0HwELxNHZB/orB+mMMT/5aavIxnjJIHPXlFJk9WdHUlgXvw85/46FB+BJglIjHrYbBMWA0NTFE98WbdtI0TipzLNODqGa8vumTn874/9SiY0QsdJg8udHmXbKR1HyZsGFUoWlGwpART0/oVcj6HkNSQk62DFBXmkqMC+LyBQe0dgmBajTm1qLt93g6exntfV5BicOXWE+H9b9xWul5kZTZ4vzFU0zAP7HSLL355WwvvUrvMVb/NtN0S/iYnAi4sF2SHfch5wSI3r+2WIxhhVMtG9qhv85yvaO24jrEymzQ3npQ0uyo//Nhm7IFOKaDOgasvKhfA/zGMMUOKxLCGJpVm5yo4Q9P6yrcCNeJf78djHbuguE/ee8Sezub39Op/I0kU34u
X-OriginatorOrg: amd.com
X-MS-Exchange-CrossTenant-OriginalArrivalTime: 18 Apr 2026 07:28:40.2151
 (UTC)
X-MS-Exchange-CrossTenant-Network-Message-Id: ae28e254-f83c-4825-c84e-08de9d1c1cea
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:
	SJ1PEPF000023CC.namprd02.prod.outlook.com
X-MS-Exchange-CrossTenant-AuthAs: Anonymous
X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem
X-MS-Exchange-Transport-CrossTenantHeadersStamped: DM4PR12MB6182
X-purgate-ID: tlsNG-bad1c0/1776497326-484A9A53-1DDB3538/0/0
X-purgate-type: clean
X-purgate-size: 7195


On 14/04/2026 03:06, Julien Grall wrote:
> Hi Ayan,
Hi Julien,
>
> On 18/03/2026 23:09, Ayan Kumar Halder wrote:
>> One key requirement of Xen functional safety is to reduce the number
>> of lines of code to be safety certified. Besides, a safety certified
>> Xen requires a static hardware configuration to be defined. This static
>> hardware configuration is described as per the test hardware/emulator
>> hardware configuration against which Xen is verified.
>>
>> Introduce GICV3_NR_LRS with the two aims in mind:
>
> Out of interest, why is this limited to GICv3?

This was just my starting point of investigation. My intention is to 
have as much as a static defined hardware configuration, so that the 
code that cannot be tested on the hardware can be eliminated by one of 
the many ways (DCE, Kconfig or actual code removal).

The advantage of having a static defined configuration is that the 
system integrator will have the full control on how to configure Xen for 
a specific hardware platform. And we try to reduce as much as possible 
any code that cannot be used due to hardware limitations.

>
>> 1. User should set the number of GICV3 list registers as per the test
>> hardware so that the unwanted code can be removed using GCC's dead
>> code elimination or preprocessor's config.
>
> We discussed this offline, I am not fully convinced you can rely on 
> dead code elimination to always remove the BUG() in 
> gicv3_ich_read_lr(). If you want to rely on dead code eliminitation, 
> then you will want to call a function which have a prototype defined 
> but not implemented (similar to what we do for bitops with 
> __bad_atomic_read()) which would fail a link time if the compiler 
> didn't remove the code.

If you are ok, we can break this into 2 patches

1. Introduce GICV3_NR_LRS and make sure it is used consistently in the 
code. IOW, it should address the comments that Luca and you provided.

2. Implement a way for compiler to do DCE based on GICV3_NR_LRS.

>
>> 2. By doing #1, one can ensure that there is no untested code due to
>> unsupported hardware platform and thus there is no safety impact due
>> to untested code.
>>
>> However if the user does not set GICV3_NR_LRS, then it is set to 0.
>> Thus Xen will fallback to the default scenario (i.e. read the hardware
>> register to determine the number of LRS).
>>
>> 1. In gicv3_save_lrs()/gicv3_restore_lrs(), use the number of list
>> registers from GICV3_NR_LRS (if defined) instead of gicv3_info.nr_lrs.
>> This ensures that if the hardware does not support more than 4 LRs
>> (for example), the code accessing LR 4-15 is never reached. The
>> compiler can eliminate the unsupported cases as the switch case uses a
>> constant conditional.
>>
>> 2. RAZ/WI for the unsupported LRs.
>>
>> Signed-off-by: Ayan Kumar Halder <ayan.kumar.halder@amd.com>
>> Signed-off-by: Michal Orzel <michal.orzel@amd.com>
>> ---
>> Changelog:
>>
>> v1 - 1. s/lrs/LRS
>> 2. Implement RAZ/WI instead of panic
>>
>> Few comments which were not addressed
>> 1. Do "gicv3_info.nr_lrs to LRS" in gicv3_hyp_init() and keep the code
>> unchanged in gicv3_save_lrs()/gicv3_restore_lrs() -- This prevents the
>> compiler from doing dead code elimination as the switch condition cannot
>> be evaluated at compile time.
>> I am not sure how to get around this issue.
>>
>>   xen/arch/arm/Kconfig  |  9 +++++++++
>>   xen/arch/arm/gic-v3.c | 14 ++++++++++++--
>>   2 files changed, 21 insertions(+), 2 deletions(-)
>>
>> diff --git a/xen/arch/arm/Kconfig b/xen/arch/arm/Kconfig
>> index 2f2b501fda..6540013f97 100644
>> --- a/xen/arch/arm/Kconfig
>> +++ b/xen/arch/arm/Kconfig
>> @@ -276,6 +276,15 @@ config PCI_PASSTHROUGH
>>     endmenu
>>   +config GICV3_NR_LRS
>> +    int "Number of GICv3 Link Registers supported" if EXPERT
>
> Supported by who? The hardware? Xen? Asking, because I could forsee an 
> integrator wanted to limit the number of LRs to something smaller than 
> what the HW supports (in a lot of cases, 2 LRs is sufficient).

Ack

  ... "Number of GICv3 Link Registers used" if EXPERT

So it implies a decision to be taken by the system integrator. Does it 
sound ok ?

>
>> +    depends on GICV3
>> +    range 0 16
>> +    default 0
>> +    help
>> +      Controls the number of Link registers to be accessed.
>> +      Keep it set to 0 to use a value obtained from a hardware 
>> register.
>
> I still strongly think that if GICV3_NR_LRS is set, then it needs to 
> be checked against the value read by the hardware
Ack.
>
>> +
>>   menu "ARM errata workaround via the alternative framework"
>>       depends on HAS_ALTERNATIVE
>>   diff --git a/xen/arch/arm/gic-v3.c b/xen/arch/arm/gic-v3.c
>> index bc07f97c16..eaae95eb4d 100644
>> --- a/xen/arch/arm/gic-v3.c
>> +++ b/xen/arch/arm/gic-v3.c
>> @@ -51,6 +51,8 @@ static DEFINE_PER_CPU(void __iomem*, rbase);
>>   #define GICD                   (gicv3.map_dbase)
>>   #define GICD_RDIST_BASE        (this_cpu(rbase))
>>   #define GICD_RDIST_SGI_BASE    (GICD_RDIST_BASE + SZ_64K)
>> +#define LRS                    (CONFIG_GICV3_NR_LRS ?: \
>> +                                gicv3_info.nr_lrs)
>
> IMHO, LRS is a little bit vague. What about MAX_LRS? Or maybe NR_LRS?
NR_LRS .
>
>>     /*
>>    * Saves all 16(Max) LR registers. Though number of LRs implemented
>> @@ -59,7 +61,7 @@ static DEFINE_PER_CPU(void __iomem*, rbase);
>>   static inline void gicv3_save_lrs(struct vcpu *v)
>>   {
>>       /* Fall through for all the cases */
>> -    switch ( gicv3_info.nr_lrs )
>> +    switch ( LRS )
>>       {
>>       case 16:
>>           v->arch.gic.v3.lr[15] = READ_SYSREG_LR(15);
>> @@ -121,7 +123,7 @@ static inline void gicv3_save_lrs(struct vcpu *v)
>>   static inline void gicv3_restore_lrs(const struct vcpu *v)
>>   {
>>       /* Fall through for all the cases */
>> -    switch ( gicv3_info.nr_lrs )
>> +    switch ( LRS )
>>       {
>>       case 16:
>>           WRITE_SYSREG_LR(v->arch.gic.v3.lr[15], 15);
>> @@ -178,6 +180,10 @@ static inline void gicv3_restore_lrs(const 
>> struct vcpu *v)
>>     static uint64_t gicv3_ich_read_lr(int lr)
>>   {
>> +    /* RAZ for unsupported LR */
>> +    if ( lr >= LRS )
>> +        return 0;
>> +
>>       switch ( lr )
>>       {
>>       case 0: return READ_SYSREG_LR(0);
>> @@ -203,6 +209,10 @@ static uint64_t gicv3_ich_read_lr(int lr)
>>     static void gicv3_ich_write_lr(int lr, uint64_t val)
>>   {
>> +    /* WI for unsupported LR */
>
> AFAIU, this path is really not meant to happen. So I don't think we 
> want to silently ignore the write as it would mean an interrupt is 
> missing. I think in debug build, we probably want to use 
> ASSERT_UNREACHABLE(). If we want something for production as well, 
> then we could instead use WARN().

Ack. I will use WARN().

- Ayan

>
> Cheers,
>


From xen-devel-bounces@lists.xenproject.org Sat Apr 18 17:11:41 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Sat, 18 Apr 2026 17:11:41 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1285096.1566400 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wE9CT-00029F-Nz; Sat, 18 Apr 2026 17:11:21 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1285096.1566400; Sat, 18 Apr 2026 17: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 1wE9CT-000296-IW; Sat, 18 Apr 2026 17:11:21 +0000
Received: by outflank-mailman (input) for mailman id 1285096;
 Sat, 18 Apr 2026 17:11:20 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <bernhard.kaindl@citrix.com>) id 1wE9CR-000290-Sb
 for xen-devel@lists.xenproject.org; Sat, 18 Apr 2026 17:11:20 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wE9CR-007yPY-9U
 for xen-devel@lists.xenproject.org; Sat, 18 Apr 2026 19:11:19 +0200
Received: from [10.42.69.4] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <bernhard.kaindl@citrix.com>)
 id 69e3ba27-2eae-0a2a0a5409dd-0a2a4504e012-46
 for <xen-devel@lists.xenproject.org>; Sat, 18 Apr 2026 19:11:19 +0200
Received: from [52.101.85.65]
 (helo=BYAPR05CU005.outbound.protection.outlook.com)
 by tlsNG-ebf023.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.1)
 (envelope-from <bernhard.kaindl@citrix.com>)
 id 69e3bb35-1dec-0a2a45040019-3465554174b3-3
 for <xen-devel@lists.xenproject.org>; Sat, 18 Apr 2026 19:11:18 +0200
Received: from LV3PR03MB7707.namprd03.prod.outlook.com (2603:10b6:408:28b::21)
 by DS0PR03MB8247.namprd03.prod.outlook.com (2603:10b6:8:28f::21) with
 Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9818.30; Sat, 18 Apr
 2026 17:11:15 +0000
Received: from LV3PR03MB7707.namprd03.prod.outlook.com
 ([fe80::97e8:ef9c:9031:e2bf]) by LV3PR03MB7707.namprd03.prod.outlook.com
 ([fe80::97e8:ef9c:9031:e2bf%6]) with mapi id 15.20.9818.028; Sat, 18 Apr 2026
 17:11: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=reIPMoSYwyR+vXWlGX0tm7dhgeuq8VsMWYsTrAx4GDGuXVINYYII3taYA5vEmFXkx6v+skVRmZgRzrM77sNqmL/NzaU+qaDfoRwa0wHW7210tJZwkiOAKCRJSDxoaiRuLnjFlfJ3uCpWVLrylyOCAN1TBBzK247+rAXVEspc/tpj2n+RxEI/LcRFFFOGZ6x0yrQmwoo8tiRongZzWoxWMEBYgTx8C95ADcUnrx6XWZdVLnw5H6XTuEKa91IPhLTvjdBG3Vn7ZjUJ9QUDUnsJ5mePDLwz4mzhAVOuPqtybYOjI8/nQFy9/gTESl5QMp9fXPsHwCPoAeygRHnZX2L41g==
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com;
 s=arcselector10001;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1;
 bh=Afwbcq+12hEaHn7NZlYlJDax7EJaA6PgpiZ9Oh2qgg8=;
 b=Da459KAnRztAzEzQazvQBYyX2D5VnGI0UgVdmKGFBqf0bbbwMsr8Pz2d5/8BIQKmeEzViln0H9+XNoYI2bLBYnTp6nvR0l+Vcrx9qEPcB5xpTeWzTQWatsb1hyNySz/HSl8j9SYAeJJ0knW6w2osWaPnWWkVjml6zPvkMd5rMWhK8KXZvM0282Qa86408L4XePA14SZt7tl+SGh1hC/xjcI26390tUdLeFtzWMainLhMPxJWtgH6Y0eDA+vK34j4xTeTV+yyIQXqguqP5J1qwW7VXvtO32j6edKktfRB2Rbl3uz/FLj3JL7in0g9gBpe7/K9+4y4wa6iVevyBpBDQw==
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=Afwbcq+12hEaHn7NZlYlJDax7EJaA6PgpiZ9Oh2qgg8=;
 b=aWHtF+wn/2Vt5qIINQ5xYGStXGb7DlQ5ijVgN8iHDdJMOgiI2WrfHD6/IshWg7zDyYr5rYuJd1avdtzf2CRDl5hZik6Nv2M07b+3vYpANk6f46GRndyM956SpjZdK9lttYlnP6Lgr9XLktF0Hji8WLj0Ld8Ke73jRk10V3vrqZw=
From: Bernhard Kaindl <bernhard.kaindl@citrix.com>
To: Jan Beulich <jbeulich@suse.com>
CC: Anthony PERARD <anthony.perard@vates.tech>,
	"xen-devel@lists.xenproject.org" <xen-devel@lists.xenproject.org>
Subject: RE: [PATCH 1/4] tools/tests/alloc: Unit and Integration Test
 Framework for page_alloc.c
Thread-Topic: [PATCH 1/4] tools/tests/alloc: Unit and Integration Test
 Framework for page_alloc.c
Thread-Index: AQHczP/wsJouZWgAtUaG6dmfkksoe7XhTlkAgAO9yqA=
Date: Sat, 18 Apr 2026 17:11:15 +0000
Message-ID:
 <LV3PR03MB770785652CEB68F3B52C01C287212@LV3PR03MB7707.namprd03.prod.outlook.com>
References: <cover.1776273656.git.bernhard.kaindl@citrix.com>
 <bbd242400a624465bebae0fa2b7591acd37c7236.1776273656.git.bernhard.kaindl@citrix.com>
 <15fa364f-03b1-433b-b759-9f87da338cac@suse.com>
In-Reply-To: <15fa364f-03b1-433b-b759-9f87da338cac@suse.com>
Accept-Language: en-GB, en-US
Content-Language: en-GB
X-MS-Has-Attach:
X-MS-TNEF-Correlator:
authentication-results: dkim=none (message not signed)
 header.d=none;dmarc=none action=none header.from=citrix.com;
x-ms-publictraffictype: Email
x-ms-traffictypediagnostic: LV3PR03MB7707:EE_|DS0PR03MB8247:EE_
x-ms-office365-filtering-correlation-id: c5c572e7-9ef1-4547-0860-08de9d6d7fcd
x-ms-exchange-senderadcheck: 1
x-ms-exchange-antispam-relay: 0
x-microsoft-antispam:
 BCL:0;ARA:13230040|366016|1800799024|376014|10070799003|38070700021|56012099003|18002099003|22082099003;
x-microsoft-antispam-message-info:
 l+43AwnFSdZe91aRmDagSlrBgOfgicr/Sy5mKh6QmyvKND3k8gzYyv/1RoQ0DsyGTnRhNoXIXIicp3+UQjNqnSC7g9b1D9t3Hc6LPrYud6WTFFbxoYZS7G9zxpB3ui7kL6du3Wc5d5B1gOxxCFBkOzzK979YIBi4rn36bBIle8s86UtrGOGeLrj9VcOvJY1WLX4bErWpZDnhqiGbKMdBS/duFWtc1w4wCAWR1JAT932Bu1uji0R2++2A+2tMIhaREZCnPflAA3AIWJRKBeYK0Cz6cnmeQpdsNjyyek5R4FFFSBXBpGtQdT+Ovqi0Y6NkmRGTtGWLYJceCPerI85j21mYbO5aN/BXTwP2Pln8zQIfmcm24nZx1/ginQNnxnyuUpBSNykAeLB8fKgSwHdNZkm7MAVpgBaBnUI/2AnlVt/7nitFT2E3QgbSs+gicjrbDfNU8OlDqUxuuA3NIYKkxG/PvfWM7YQKvGuRbpIcTIDfA6a4GW4hzWO2UtnpHpK6xvi6k5asHx7CHpfw7G/K7yag1h3IUEOUqf3edLD+fJnM50s1WwVl4blAmO1eToUMPFfryffdke3ZUCLHJ47Th6oc/Jz1OwA0xuCN1rNk4iZoyYsrgMg/pRuoSMRnu7koMgGuvZ87Zxf5xSRXBa+xSG/8+nrFGp4LCGzPN+zYs2y/Wx1NkDhGigUNSfwk3hsXjOiIN6Z7Uofez+mQoM+0ClJgGgqgUBCSZSIDr5Y3wYYs8ZAqEj7/jFxcm7qgisEK7Qqeag03Eni1Gk5hF5a/9EV/MJG5JC5KmhTCzNKwmJk=
x-forefront-antispam-report:
 CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:LV3PR03MB7707.namprd03.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(366016)(1800799024)(376014)(10070799003)(38070700021)(56012099003)(18002099003)(22082099003);DIR:OUT;SFP:1101;
x-ms-exchange-antispam-messagedata-chunkcount: 2
x-ms-exchange-antispam-messagedata-0:
 =?utf-8?B?Tm5QRTZyWU1wS1JiaGJwUHZoV2pGZ1B2cnE3ZG4rL1Rwdjl5UXZMMWc0YU5q?=
 =?utf-8?B?YS9vTkIrdmtFb0Q1cW5qMEdHWU1Vc0pQcVM3bHVHYVhnMy80SHM3UDA2WUVB?=
 =?utf-8?B?ZUZpaWRiY0g5bytHMTR6c1g3NWFyS0Q0dGhCelpWVjlqZEwvdHlUV2QvMGcz?=
 =?utf-8?B?d0hnbFhsNDFML0ZxSlo2dDVEak90WmRRK0hnaWMraE9Oc2l0a3BDbEF2c1lr?=
 =?utf-8?B?bUFNMzRmRDM2elZ0MWlCMVQrcmpWcjVxWk03SDBHa0JkTDF1UzFqbWVkdjY3?=
 =?utf-8?B?ekdmUmFVaEpPRlQ2QkpDYmR3Z2xLaVVpM1VkSGN2ZHlwRlBiMFY3SFJwMXJ5?=
 =?utf-8?B?eDIxbEU0cldOK3hJR1dnUTVQeU9FVmVTM0N0a1IvY2x4SEtXYyt0THNzajlU?=
 =?utf-8?B?N2FKUnUrbVRobGhMVXRzSnZvay9RTFVZanBBY2RGdmswa0hSUDkzYzdJamJr?=
 =?utf-8?B?a2lTQzBJTm5HZmo4Vm9hMnVvTWNNODRoU0o3aHh4ZWVGeHNieWdVVzNvQkI5?=
 =?utf-8?B?cGJJazhtejhGWnFWeFUxeTdaYmtpV0Zyc1hsZ1JiQno1QjU0ZEdOaWZ0STJ6?=
 =?utf-8?B?dHdzYWdpZGRJSlcxSklrTG90MXF4VFo1WTgzTjVIWXlWN2lKTENqVEZIU05t?=
 =?utf-8?B?SFlGSjQ0emQyWUVxZVBtWjNzaUx3Uk9xZHhHRXNXTVJtby9ocWF3UUNZbWtj?=
 =?utf-8?B?Y3V6WXFBY09vcGg1V0tENWk4Q215QlBTb0pQUmgzQlZtbERVdTlLN2Y3dHIy?=
 =?utf-8?B?V0RTMHFHbWswZExCbHNKWFpaQUsxc1d1SjBvRkhRQXFEZGJaTll3SWpOQmZ5?=
 =?utf-8?B?MVhhTzZpeXFwY2lldm5rTXZLMjBRdmg4SDlhVlFVbm40YWZyTUtnQlJFdzQ2?=
 =?utf-8?B?TWc2WCs3dE05UWR5LzVhaDN0UUtqNEgwVDFaVzUzVFJIOFVjaFNjR3g5OGla?=
 =?utf-8?B?Q3RJTmhPeHNOV2N3eWhjSWl1U1ltK1hzOFNLQ2I2SS9COEZtQS8wSGRtdEdz?=
 =?utf-8?B?SjlhTXJ0OUZGUUI0MVZNdHUydWs5UjMrL0M1UzVlQVY0Zk5KZWdxak9YTDBD?=
 =?utf-8?B?cGNqV1VQZno1N243aWc2d2Q0NXI5RlFOUitkWHBpdGhSL1ZuRDVoYTVKaHZa?=
 =?utf-8?B?WGdtTVFaa2R3TFl0YkJUbHFMT0NtRXhpcEFmakE1Q1lPMUpMMDBjd0cxVi9N?=
 =?utf-8?B?UHZnWjFkcHA2ZitpSkZkNSsvdGQ4WjdsREozUWU1dG15cGlyeEFaTDJFZ2da?=
 =?utf-8?B?cGgzU3krNVFYVDc2SjdtY0QzWEk3UktUaGNsQ1BWbWs5TGJ0Zk5Vd0pKZjVu?=
 =?utf-8?B?cmRURlZSS0lPQ2VxUnYzYmIvZGNmZ0VMd2R4bWtVbGhQMlV3N1pmT2d4b0xr?=
 =?utf-8?B?WXA2dFlkUVNUMUduMW5LZmdwMzF2clR6UW0vZFVEdGdxbXpOUEROQ2JlYURV?=
 =?utf-8?B?SW03amFoNFVXckltMUM2RzdOS0hDaFU1Nnh6TzNKUnVoc0xYaFRCU2FhYkdN?=
 =?utf-8?B?b3M1a09GZEZTbG5xdG9mc0pXKzdEYkh2ODFTVmIrb3dmTmM3RjV0WUVDd1VC?=
 =?utf-8?B?cWdtNXplN05QVW5menY5ZVVyVnlZTC83SXY1N2tDMGR5Mmg2OVlXcDg2ZzFX?=
 =?utf-8?B?SDhxM0Fpd056cUVZOFp0WmRUSGlPSytMTE42eEFpYkRVOXEwNkRDaTZmSVgz?=
 =?utf-8?B?eXcySzduRFlIN3drYi9abVJaM2dTN29LY1NnTXpIcC9XbkQvZm1odzREa055?=
 =?utf-8?B?U1Y3UEJNa2FoWEo0WkZaQ1ZDN3VKeGs3ZUhlZ0N1UU1FRmVpU1l6alJuTHhE?=
 =?utf-8?B?MkdCaEZYbW53US9DM1VnOTdMRkJtWnFYMGNtdjN5UmdyUzJYUE14L1d4Uk41?=
 =?utf-8?B?akwzVVVYSzU3dVFLTmZLUi8vd1kxZHZVbWhqdlZFcUJsRmtIeTU0cDZsUjNl?=
 =?utf-8?B?OEVaNU9KdnpucnI5QWlrK1dGTHg1YnR2MUdoOUVGSDBtSlg2VlAxMk5TOHRy?=
 =?utf-8?B?SkFqLzVDN2NUK3ZYKzIwcit3dTVaemJPNmxqU0kwOHgrNzRqR01ReVF1SWhm?=
 =?utf-8?B?aDBIUGZzUW9iM0w1SlBreXNLTEh2TWpJUHNvNVA0cjd1c0JKUHZGN3JtQmxx?=
 =?utf-8?B?YkMvTDBpYkN1ZjBLVkVsdjBydHUzTnRuNnF2aytQVDFRYXN1Q1V6dHY5alVD?=
 =?utf-8?B?L1prUWhmbFRFVmVidk1JVTlLMFU3Z09OYndoWmE5ZEp4REZPUDVDZTdpWE5X?=
 =?utf-8?B?K1NxUlFsdzR4aGdrQ29EWUtJbEt3Q0daRTFCUzNEUnR1M2pEWklQQzUwQU5X?=
 =?utf-8?B?VmRzVW5DTERPR2dSODBxbk5BV0N6WGdLbmZnelpzYWpkb1RlNVlib3JHUkhP?=
 =?utf-8?Q?5mnDQvdhmIjUQPY4iKOyh2yj6sNig9oscGkJxHvPNl/Xu?=
x-ms-exchange-antispam-messagedata-1: TYJZ4O/g1W8BkA==
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: LV3PR03MB7707.namprd03.prod.outlook.com
X-MS-Exchange-CrossTenant-Network-Message-Id: c5c572e7-9ef1-4547-0860-08de9d6d7fcd
X-MS-Exchange-CrossTenant-originalarrivaltime: 18 Apr 2026 17:11:15.4097
 (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: 7DTNdYcrZaziOGf5KEKf4TZtu2VQ/U+HbBcez9a2mmQJUUzPr9iirkTKgkzsOv35FUJJsPIujq7lytaF/AVbOQ8I/sx48dBx8CzHa5o3z1U=
X-MS-Exchange-Transport-CrossTenantHeadersStamped: DS0PR03MB8247
X-purgate-ID: tlsNG-ebf023/1776532279-324733FF-4A380A2B/0/0
X-purgate-type: clean
X-purgate-size: 1400

DQo+ID4gQWRkIGEgdGVzdCBmcmFtZWZvcmsgZm9yIHVuaXQgYW5kIGludGVncmF0aW9uIHRlc3Qg
c3VpdGVzIHRlc3RpbmcNCj4gPiB0aGUgWGVuIHBhZ2UgYWxsb2NhdG9yIG1vZHVsZSB4ZW4vY29t
bW9uL3BhZ2VfYWxsb2MuYyBpbiBpc29sYXRpb24uDQo+IEp1c3QgdHdvIHJlbWFya3MgKG5pdHM/
KSBmb3Igbm93Og0KWy4uLl0NCj4gPiAgdG9vbHMvdGVzdHMvYWxsb2MvaHlwZXJ2aXNvci1tYWNy
b3MuaCAgfCAxMDEgKysrKysrDQo+ID4gIHRvb2xzL3Rlc3RzL2FsbG9jL2xpYnRlc3QtcGFnZV9h
bGxvYy5oIHwgMzU2ICsrKysrKysrKysrKysrKysrKysNCj4gPiAgdG9vbHMvdGVzdHMvYWxsb2Mv
bW9jay1wYWdlX2xpc3QuaCAgICAgfCAzMDcgKysrKysrKysrKysrKysrKw0KPiA+ICB0b29scy90
ZXN0cy9hbGxvYy9wYWdlX2FsbG9jLXdyYXBwZXIuaCB8IDQ2NSArKysrKysrKysrKysrKysrKysr
KysrKysrDQo+ID4gIHRvb2xzL3Rlc3RzL2FsbG9jL3BhZ2VfYWxsb2Nfc2hpbS5oICAgIHwgNDMz
ICsrKysrKysrKysrKysrKysrKysrKysrDQo+ID4gIDExIGZpbGVzIGNoYW5nZWQsIDIyNTcgaW5z
ZXJ0aW9ucygrKQ0KPiANCj4gVGhpcyBpcyBhIGxvdCBvZiBuZXcgY29kZS4NCg0KQWNrLCBpbXBy
b3ZlZCBmb3IgdjIuIEl0IHdpbGwgYmUgcmVkdWNlZCB0byAxNDExIGxpbmVzLCA2MCUgc21hbGxl
ci4NCg0KQ2hhbmdlcyBmb3IgdjI6DQoNCjEuIFJlZmFjdG9yIHRoZSB0ZXN0IGVudmlyb25tZW50
IGZvciBtaW5pbWFsaXNtOg0KICAgLSBJbXByb3ZlIHNlcGFyYXRpb24gb2YgY29uY2VybnMuDQog
ICAtIE1vdmUgZXh0ZW5zaW9ucyB0byBsYXRlciBwYXRjaCBzZXJpZXMuDQogICAtIFNpbXBsaWZ5
IGNvZGUgd2l0aCB0YXJnZXRlZCBhc3NlcnRpb25zIGFuZCBjb25jaXNlIGNvbW1lbnRzLg0KMi4g
Rml4IGZpbGUgbmFtZXMgdG8gYXZvaWQgdW5kZXJzY29yZXMuDQozLiBVcGRhdGUgdGhlIGluY2x1
ZGUgZ3VhcmRzIHRvIGNvbXBseSB3aXRoIENPRElOR19TVFlMRS4NCg0KQmVybmhhcmQNCg==


From xen-devel-bounces@lists.xenproject.org Sun Apr 19 17:30:29 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Sun, 19 Apr 2026 17:30:29 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1285335.1566409 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wEVyB-00089M-4d; Sun, 19 Apr 2026 17:30:07 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1285335.1566409; Sun, 19 Apr 2026 17:30: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 1wEVyA-000889-VF; Sun, 19 Apr 2026 17:30:06 +0000
Received: by outflank-mailman (input) for mailman id 1285335;
 Sun, 19 Apr 2026 17:30:05 +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 1wEVy9-0007uB-Ga
 for xen-devel@lists.xenproject.org; Sun, 19 Apr 2026 17:30:05 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wEVy8-005XQL-L6
 for xen-devel@lists.xenproject.org; Sun, 19 Apr 2026 19:30:04 +0200
Received: from [10.42.69.5] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <milan_djokic@epam.com>)
 id 69e5111c-2eae-0a2a0a5409dd-0a2a4505ddf2-0
 for <xen-devel@lists.xenproject.org>; Sun, 19 Apr 2026 19:30:04 +0200
Received: from [52.101.84.79]
 (helo=DB3PR0202CU003.outbound.protection.outlook.com)
 by tlsNG-c201ff.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.1)
 (envelope-from <milan_djokic@epam.com>)
 id 69e5111c-aaa8-0a2a45050019-3465544fd213-3
 for <xen-devel@lists.xenproject.org>; Sun, 19 Apr 2026 19:30:04 +0200
Received: from AS2PR03MB9587.eurprd03.prod.outlook.com (2603:10a6:20b:595::7)
 by DB4PR03MB9433.eurprd03.prod.outlook.com (2603:10a6:10:3fa::17)
 with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9818.32; Sun, 19 Apr
 2026 17:30:01 +0000
Received: from AS2PR03MB9587.eurprd03.prod.outlook.com
 ([fe80::daa7:3b97:acb3:67d5]) by AS2PR03MB9587.eurprd03.prod.outlook.com
 ([fe80::daa7:3b97:acb3:67d5%6]) with mapi id 15.20.9818.032; Sun, 19 Apr 2026
 17:30: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=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=fEOIXXZZcIgqM2hbT4eETdSPwfs3MbBET2sMGCiygZoxxXWT9Z9mYyKgNDRypkeBzfweMgN0pjDrmpwxEKORnl4jkyV04aQz3ytqNE7vhTYyhGGUx1zbDE9zbpRG0uyn1zgfE9gT3VIbYMieb2MryCZnFZyG6ohxVeteUoke4WXuS2uPJaK/7Lap3pf+Wn/N5OBk26OZFJQmDoMLDrAHq1F+HT90GOkM396rPdC2q/iNJfcDnOJCicjPdFCzKUxejNWDlQLi52J3yxSDJ+POrznuPdEnvlA1D9B2NdO6MvAkMTTxfg05xdc/vCcQvdsX4qSvtXLOk4rxuTqilVJ8+w==
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com;
 s=arcselector10001;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1;
 bh=BtTykqEOeQLfkooX46gCFuKoex9ftn19RXS6tLDgz/o=;
 b=oVwesZyK0rNjoKvOij9TL1vodpW9ulZfSE/UXz/5uRy85yDvKa07qPJGNC124K1WmKy5hIRFPGeADXeTrBt6DgnJQl3SaVQjITmEZm8f9Ll71cN6n4QGOv0g2oT1Pq7hjjb9HDBd0MYXOO1+dqdCki3dVXxbUOPKC7wHVOX6GTHV+XggSp8OqNNlIcJfHcZq8Hdk4zOzmPsUXPPCGevOJukU52CG2w4opEjej4t0CLA5zOwKpzgu/9lo/VJOOAKFu0fdwx3GFaC59ZNB87rbwzRK+4HEpgareWBTzbMFNI1JBcIVbhNd2p5fz5+b/wVmNNC8iNm3QNvkFNnj64CBTQ==
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=BtTykqEOeQLfkooX46gCFuKoex9ftn19RXS6tLDgz/o=;
 b=Y+igc3sih0h0qa9HqZfj+85tnX2ZEwVVpXD/GwGedsejBND/6FYtcNKZfsOgZ+nsg7yx4amheEMlpZ8QzFAAz6465a5xGHAT7Zx3iDD0afhbepu3Xgxi2ZyVQENGjVOZJVeF1wlYT/KA6hfZsFMWvf5HcYmbdbuwOoL/TTb4/AqaFv3EI2iLTcQCtcNdntcY/ga6vDKqSUrpLvAI7JNP90GnZYm+jntuITWDVfK7Cw13FSAq1Z28pj0o9F9N5TXF1GDNQEnbTfvtHtjepw+cGTfcKZQlZp3ogXD9uN4M03jyx9it1I/jNZUiTrMaaEVo20Hbqvl5VpcxWc07yelFxA==
Authentication-Results: dkim=none (message not signed)
 header.d=none;dmarc=none action=none header.from=epam.com;
Message-ID: <09ffd0b5-4124-4333-873a-d3c356a83085@epam.com>
Date: Sun, 19 Apr 2026 19:29:59 +0200
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH v3 01/23] xen/arm: smmuv3: Maintain a SID->device
 structure
To: Luca Fancellu <Luca.Fancellu@arm.com>
Cc: "xen-devel@lists.xenproject.org" <xen-devel@lists.xenproject.org>,
 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>,
 Jonathan Cameron <Jonathan.Cameron@huawei.com>,
 Eric Auger <eric.auger@redhat.com>, Keqian Zhu <zhukeqian1@huawei.com>,
 Will Deacon <will@kernel.org>, Joerg Roedel <jroedel@suse.de>
References: <cover.1774918270.git.milan_djokic@epam.com>
 <4fd154cc1d76972d85df6c426320555d6894adfb.1774918270.git.milan_djokic@epam.com>
 <54FF0879-2DDE-4BE1-9BFB-363AFEBBB294@arm.com>
Content-Language: en-US
From: Milan Djokic <milan_djokic@epam.com>
In-Reply-To: <54FF0879-2DDE-4BE1-9BFB-363AFEBBB294@arm.com>
Content-Type: text/plain; charset=UTF-8; format=flowed
Content-Transfer-Encoding: 8bit
X-ClientProxiedBy: FR0P281CA0159.DEUP281.PROD.OUTLOOK.COM
 (2603:10a6:d10:b3::15) To AS2PR03MB9587.eurprd03.prod.outlook.com
 (2603:10a6:20b:595::7)
MIME-Version: 1.0
X-MS-PublicTrafficType: Email
X-MS-TrafficTypeDiagnostic: AS2PR03MB9587:EE_|DB4PR03MB9433:EE_
X-MS-Office365-Filtering-Correlation-Id: 85e595c4-0523-47ae-263e-08de9e394934
X-MS-Exchange-SenderADCheck: 1
X-MS-Exchange-AntiSpam-Relay: 0
X-Microsoft-Antispam:
	BCL:0;ARA:13230040|1800799024|366016|7416014|376014|56012099003|22082099003|18002099003;
X-Microsoft-Antispam-Message-Info:
	v8uGABPKss6SLYGze7sl7snWI4sd1vpr+NN2WjmEWWKPP120ucnDebUis3mbMazyJJFz+9lTvopialJzcrpiJzreyRMTE9Zr/5069fH9ZysHG2kGHz+tEQG53B7vRPYtPfBKr4o+221QRqb9kc+Iv4hczJEWLiwckWZKpKtz9SBYuEzYermpsTOLP1TZXTTwk/12T10+nhl+dFF+YZmsZAk0uUxOnjxl5Ukq0fw5sXLeIksqzKBc8Ip9+VPo/G6kLW8JVORlF9ZPUHKUragWXTwhAwjJHZpK1W6KTgJaZjtU+EXDUUhEmcH5wDM+CRZskHzhQsSBqLAuLFkQV/hkMbIFJorw66Yilrjf4osQpGX3dEDA23WV+fD1dsLwRwzotIE+ZEmrup8v5vBU98jSC4J6F6gFK3dGf2PO2ev24phkKvDpSlw8uMGrOrUz8qURHvgoGvQJh98UrIqXxRtZvA3TQWojIpdcwMbRKMXmt1UVXEj6WBE41Id27oxVxtC3l7dTEDf+eEwEfK7zHdvkt17l5du5zpqGQRuBUv8j2mIPGdmwZdLcfMYH/RCjE53t+pYwwtEKidwL95qSkVgsNlHDqrFLmYY/dASB+jOGwhJXHQoNXfgSzei9nxIn0hwylfT19ixo09uVwUae11zd0K/oNOG+04jCI4TAcs3kQZcWHo17GNz50sHv7zoh7Uz8jrAYEo6FBUAU+Lqq69Jw0pNrw12EoPMxUdjqT2EWvQA=
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)(1800799024)(366016)(7416014)(376014)(56012099003)(22082099003)(18002099003);DIR:OUT;SFP:1102;
X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1
X-MS-Exchange-AntiSpam-MessageData-0:
	=?utf-8?B?akg1Q0ZLUEVvajlZRnlTYmg1SWZvcVl6UTg0VW96ODVNanhucWI2SVdUS2Zp?=
 =?utf-8?B?YXlJL2JsRk1kZVBYVjlZNE93YVh0RVFTTlBudTJVZGZNclIzZUtzK2dPSXdF?=
 =?utf-8?B?aklkdjBYTWU0ckdEVG9WZ0hCOUc4cll6RFU1RGh3YkNkZ3MraG8zVkQ1ZnlP?=
 =?utf-8?B?R09LckhaZjk3UUwvNTEyT2lQc3AwbG1pbTFvTnJsVEl5Q3dNbk9DN0ZJZURz?=
 =?utf-8?B?NXhjOHpIQjhYRnVXMTBKNHRZREw0alpqZ1JpRnhxM1FreTVUamF4K3JKUXFo?=
 =?utf-8?B?MEdvaEJjZjI2SGFYY1VDWHpEQ3RpVkZQQTZZdlpiWW92STNERVRXMm84SUlh?=
 =?utf-8?B?Y0Z4N0pYdnlIdGtBZ0FmQUo3SlVTc3k1TitndVlaczZjUGJUN1Q1QVdOQ2hY?=
 =?utf-8?B?ak1XQjlPZzlOMTdvL21xYmJqWDVSNS9CdVJteWdqbUlIcS81R1JGOVhaK2x5?=
 =?utf-8?B?SncyNzlnSG5KOTNweHRpSnM4NVF3S1M0RmJIbHBhTWQ5SlhtRHRLZU1wam9C?=
 =?utf-8?B?c1BYMmxGMXpmR0xtVUsveDlNSjU4eDhBa3I3YTZhcWxTUm1TNFo3cGJEbVBS?=
 =?utf-8?B?bk12VHNZTlJJdkVCczIrWHBBYTJxcCtpRUZBc3pIL2p1Z2hBaWYyb0tUV0Zp?=
 =?utf-8?B?TUhSWDVhV05kUkIvMUx1N28vNjRjTjNndGlKd0NnLzNqNHRCcTRtSktIMUEr?=
 =?utf-8?B?b3ZrY1oreDYxb3V5VUthWWR3ZkN0T3kzY21GUVB2UXBpLzVaWVpEOUx5aEFq?=
 =?utf-8?B?eUhVbUpRczd4SzBhem5Ca2t2WjRDa3oyZEtlZEFsMi9vMW9HZXRjL3BuZklZ?=
 =?utf-8?B?UmxIMy9XSmZaejdZQ0N3endHNUJIR2t4bEZBaVlLTEJJdXNZa2x5aEpNaHpx?=
 =?utf-8?B?KzZoZkJYRjdkRHpCR3Vjb1I5a1JvS3luSnB6djdyeHIzSmc0ZE5LSERTcVdp?=
 =?utf-8?B?ajZ3UER2aExZd0FFN3ltbDFvSi9HcFZ1bWhHcUwrVWQ5Y2E3cmw0emY2d2VX?=
 =?utf-8?B?L0pVZ3IvVHQ5L1pKQ0lGeWpsYXF0OURsZU9DdHpTUlVyZHoxWVhzMENYNFhI?=
 =?utf-8?B?R1B2b0QvZnV1ZytoblAzakNRNFh5ZW44TW5tdDgycWczc1BBUkNNUUVzT0V4?=
 =?utf-8?B?aDdwdU12ZWJPV2g0OU56c2xvMkhDeGhRaUgwZ0pJQjU0VEJJdUFSTVZyamwx?=
 =?utf-8?B?SHBna05oYTFnM1MyVzN2eHRoVHdhVUFNUFlaR0x6N3VsQ2c5UUJtc0pyL1lP?=
 =?utf-8?B?WGU3NUdvYW10NWUyZldGR3FpTFpZTnR2L2pQaWRIQ0NFMDFSdVpCbDVHTzc5?=
 =?utf-8?B?bm8xMTFsVnZta29vcHBtUTdrb0RpWGhZZE9ULzBzY1doYWFhSlR6NU9raEk0?=
 =?utf-8?B?eUJ5cklwUnF2VmR5R2VjbHc0eWo5SmJRdVFtUjYwNkc3bHJmV1hYa1hPUGxG?=
 =?utf-8?B?SDdzemRsUVg5bXMyZXhrMGJpak9JZ294RzlURlREY29oY3hkait1cm1yTElj?=
 =?utf-8?B?YVlIekluMzJtQ09rKzFsOHV2UUpkL09FN0VDSzdrTW5hU2tsd1U3UmZsUmlL?=
 =?utf-8?B?dGthVW1za2haK0h0ZDhIMTZjUEtyM1E2ZDdBWkJLVHozdzhIaDJWZHpuMm5l?=
 =?utf-8?B?NXA1a25GK3ErNy9xcEcxNlJja0RFNHRkd1E4eXFVTWQ0ZVp0bnlpTE1PcUJm?=
 =?utf-8?B?TW5FZ3RETVZGb0RPVGY1QlY4cHpzRGEzYmlqNjBldFI4bytEekxLV0swajQy?=
 =?utf-8?B?Z1NFU2JXRVVrSmc4N3ZOTXN0MkdjOTB5cUplMURhODZvOG5lVU44ZXNBbm56?=
 =?utf-8?B?Yml0ZzIzZlJlbnFRVlJOdStQZHFnMjVTdzFKVmZkNk80Z0RRRjRlV2Y4SGhI?=
 =?utf-8?B?elVhd3BzazJKY0VQVjRzenJYTkM4V2hrNVRFbkFOUEloR2tuUjZManRUbnBG?=
 =?utf-8?B?RFFIczZxMnQzRUkycUY1ckR0bGkzSWRmWXE3cTRlVnpUSUZrZnBVMHB4Njlw?=
 =?utf-8?B?K01LRVVEM0V5L0hKZmx5SVhtaEdoL2FobmlBb1VuWHJ0WWsxcWJKV05BaHRM?=
 =?utf-8?B?ZlI1RjdPK1BjaFNDbUE5OEdPSG5iQjlTcnVMQzk5U1JTY2NnekRoUldHcmhR?=
 =?utf-8?B?NCtHZ3VXcy9zYVhnTkNCM05XMzRMM2tyajd0bjBsS3JmYkdpQ0w0Qk50UzNr?=
 =?utf-8?B?enZCTjRkWDQwK25CN2RKL0QyT3diTFR0RHVoQWpkUlJvYm11S0pGUGdrT2I2?=
 =?utf-8?B?TEdMVExZVEJLNHk4eXoyR09WcVdqTy9jMU1wN1haMzZ0VXhEbXB5VjM4WE56?=
 =?utf-8?B?UVdBc01DTk5qR3NvUHgrcEQ1MmhUYnU2WTNEUVVseHlmODFweGFTdz09?=
X-OriginatorOrg: epam.com
X-MS-Exchange-CrossTenant-Network-Message-Id: 85e595c4-0523-47ae-263e-08de9e394934
X-MS-Exchange-CrossTenant-AuthSource: AS2PR03MB9587.eurprd03.prod.outlook.com
X-MS-Exchange-CrossTenant-AuthAs: Internal
X-MS-Exchange-CrossTenant-OriginalArrivalTime: 19 Apr 2026 17:30:01.3962
 (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: ixUtmoMfdYfatwBGLP6hVnLA5O1hNb3ABfYFDe+HFBvjUjLn/arOi/w3MXN+YMWbeGcpMGKM3hMO+ttm852ZHA==
X-MS-Exchange-Transport-CrossTenantHeadersStamped: DB4PR03MB9433
X-purgate-ID: tlsNG-c201ff/1776619804-2A374443-1EB74818/0/0
X-purgate-type: clean
X-purgate-size: 1758

Hi Luca,

On 4/9/26 16:59, Luca Fancellu wrote:
> Hi Milan,
> 
>> On 31 Mar 2026, at 02:51, Milan Djokic <milan_djokic@epam.com> wrote:
>>
>> From: Jean-Philippe Brucker <jean-philippe@linaro.org>
>>
>> Backport Linux commit cdf315f907d4. This is the clean backport without
>> any changes.
>>
>> When handling faults from the event or PRI queue, we need to find the
>> struct device associated with a SID. Add a rb_tree to keep track of
>> SIDs.
>>
>> Acked-by: Jonathan Cameron <Jonathan.Cameron@huawei.com>
>> Reviewed-by: Eric Auger <eric.auger@redhat.com>
>> Reviewed-by: Keqian Zhu <zhukeqian1@huawei.com>
>> Signed-off-by: Jean-Philippe Brucker <jean-philippe@linaro.org>
>> Acked-by: Will Deacon <will@kernel.org>
>> Link: https://lore.kernel.org/r/20210401154718.307519-8-jean-philippe@linaro.org
>> Signed-off-by: Joerg Roedel <jroedel@suse.de>
>> Origin: git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git cdf315f907d4
>> Signed-off-by: Rahul Singh <rahul.singh@arm.com>
>> Signed-off-by: Milan Djokic <milan_djokic@epam.com>
>> ---
> 
> I think that by only backporting this one we are introducing a regression for which
> we don’t allow anymore duplicated stream id, have a look on this linux commit
> that is fixing it: b00d24997a11c10d3e420614f0873b83ce358a34.
> 

I will backport the logic from this commit also

> P.s. I was able to apply only until patch 3, I think this serie needs a rebase, do you have
> an updated branch or can you point me to the staging SHA to build it? (hope it’s not too far
> from now)
> 

Yes, sorry for that, it's conflicting with the couple of recently merged 
commits, rebased for the new version.

> Cheers,
> Luca
> 
> 

Best regards,
Milan


From xen-devel-bounces@lists.xenproject.org Sun Apr 19 17:35:09 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Sun, 19 Apr 2026 17:35:09 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1285344.1566418 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wEW31-0000Nq-Jw; Sun, 19 Apr 2026 17:35:07 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1285344.1566418; Sun, 19 Apr 2026 17: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 1wEW31-0000Nj-GU; Sun, 19 Apr 2026 17:35:07 +0000
Received: by outflank-mailman (input) for mailman id 1285344;
 Sun, 19 Apr 2026 17:35:07 +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 1wEW30-0000Nd-OB
 for xen-devel@lists.xenproject.org; Sun, 19 Apr 2026 17:35:06 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wEW30-005Y9A-1J
 for xen-devel@lists.xenproject.org; Sun, 19 Apr 2026 19:35:06 +0200
Received: from [10.42.69.10] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <milan_djokic@epam.com>)
 id 69e51245-bab6-0a2a0a5309dd-0a2a450ababc-2
 for <xen-devel@lists.xenproject.org>; Sun, 19 Apr 2026 19:35:05 +0200
Received: from [52.101.83.117]
 (helo=GVXPR05CU001.outbound.protection.outlook.com)
 by tlsNG-4011c0.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.1)
 (envelope-from <milan_djokic@epam.com>)
 id 69e51249-56b3-0a2a450a0019-346553753a97-3
 for <xen-devel@lists.xenproject.org>; Sun, 19 Apr 2026 19:35:05 +0200
Received: from AS2PR03MB9587.eurprd03.prod.outlook.com (2603:10a6:20b:595::7)
 by DB4PR03MB9433.eurprd03.prod.outlook.com (2603:10a6:10:3fa::17)
 with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9818.32; Sun, 19 Apr
 2026 17:35:01 +0000
Received: from AS2PR03MB9587.eurprd03.prod.outlook.com
 ([fe80::daa7:3b97:acb3:67d5]) by AS2PR03MB9587.eurprd03.prod.outlook.com
 ([fe80::daa7:3b97:acb3:67d5%6]) with mapi id 15.20.9818.032; Sun, 19 Apr 2026
 17:35: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=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=U0Iz++GLre/IE6ITK3MZeY/sfXuNHIE/cBCix/ZVhpvaNPXzSfyloX/BYHtYPr6+DkCus85xUzSf/9R+5Xj2N3/Sw+b6UTU36/u+yYNGEIzrWIdBRKZ52n2LYnMFBKzM2sEAUrMc17UtVSnU5bT9YXjGbdJ5YbCeI08nvmdGVZBU6KdrpOUdyTli2ygVw9s/3gcgnGuJ/mbzOuM1gc7o6ktPcNty8PaNQrYl8rkRqzmdJ8HGRtKVItnHmPqT4KPhgdabfPrE/qstdr/qlzwwxi1rXDRiZnfaKo8wqoOY5B8JZ+zQ0IeLQD5WY+PtJSZG+X4FlAKbDjJMRKvHQc/HDA==
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com;
 s=arcselector10001;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1;
 bh=H1iNbuWJhTBeTFknRK2AabvGtZuQPfXsn/35Pau2dkM=;
 b=URIIFAx+eqE8T4ZV29K8lC8kK+3+2p4NECxE/EFATJKAcCq/rPP09YeW6KzMJG/j5B53IR20sjjVLH+wfXYBvku5QK/n7+yE/q9QrG3SJ75Xb3cYM4eyw69TATTfggQs/eY6S6bMOjx9pIYk1bWaEph7dmA7A6cQfXEM3eT53DtyHn+qSz8BpvlSVjwYyjqSISDC8d/40yYB4DWwEnzxSc7clL7cT1EWbmpyJap1cW66sQprPflpZjv24eg8+Hqd4O3HcguKETrj2sBqkg7Rzz9s3QRduZbaiuwyTuZnhKV9BIP6UK71x9e7wTjzHkQBam4eXdRLDqNVFVr/jC4Dog==
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=H1iNbuWJhTBeTFknRK2AabvGtZuQPfXsn/35Pau2dkM=;
 b=mPynpdsXNtFH6HiLeLluF5uKtYEtCclG6xq2clI+Y7kRBxHlCz1sHlwGDBz5TeuBqybKH98TScRszRF2biG8MNxClEE++I4YOzK6cs7LBJbFDt+veSw4cS1ITxW2TaTEEmDMGR5sp9fLM7qUDWlkdv82DWd3+hQYNyixl7rl/6JKPt7BloyHNf9ZEj9NrgfQlxJQXHymahjCSo0RUN3QHkoQgQP9zBDZwxy+2qJB1TcmgN1GWak7CHnq+k7a9YU5v/BKZyaqRk7uzyJ/XR9asnwkTQS4ugGj2UOE0wxwqUKdkgnEWtsEtgj/1aCMJWSE3GVa2pTwS5k2DHSmwfbZiQ==
Authentication-Results: dkim=none (message not signed)
 header.d=none;dmarc=none action=none header.from=epam.com;
Message-ID: <87a04781-5765-43b6-8b21-cb993609bd91@epam.com>
Date: Sun, 19 Apr 2026 19:34:59 +0200
User-Agent: Mozilla Thunderbird
From: Milan Djokic <milan_djokic@epam.com>
Subject: Re: [PATCH v2 02/23] xen/arm: smmuv3: Add support for stage-1 and
 nested stage translation
To: Julien Grall <julien@xen.org>,
 "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>,
 Michal Orzel <michal.orzel@amd.com>,
 Volodymyr Babchuk <Volodymyr_Babchuk@epam.com>
References: <cover.1774305918.git.milan_djokic@epam.com>
 <cb8a2cb5df50128f4c49d34a7ab8faa4e73f83c6.1774305918.git.milan_djokic@epam.com>
 <56a7c116-4ecb-4dfc-a7dd-774d53041fe9@xen.org>
Content-Language: en-US
In-Reply-To: <56a7c116-4ecb-4dfc-a7dd-774d53041fe9@xen.org>
Content-Type: text/plain; charset=UTF-8; format=flowed
Content-Transfer-Encoding: 7bit
X-ClientProxiedBy: VI1P190CA0050.EURP190.PROD.OUTLOOK.COM
 (2603:10a6:800:1bb::15) To AS2PR03MB9587.eurprd03.prod.outlook.com
 (2603:10a6:20b:595::7)
MIME-Version: 1.0
X-MS-PublicTrafficType: Email
X-MS-TrafficTypeDiagnostic: AS2PR03MB9587:EE_|DB4PR03MB9433:EE_
X-MS-Office365-Filtering-Correlation-Id: 13be872a-5731-4bcd-aaec-08de9e39fbeb
X-MS-Exchange-SenderADCheck: 1
X-MS-Exchange-AntiSpam-Relay: 0
X-Microsoft-Antispam:
	BCL:0;ARA:13230040|1800799024|366016|376014|56012099003|22082099003|18002099003;
X-Microsoft-Antispam-Message-Info:
	+0YQ/nu2QiQINgwr+ByE6TcJjg2S/YgIUJFqGRB4HsMLF8lQ1+bZ/OR5gN6Zf4rWAXI21vq/twc97DTw+adGfmVzG4MWFP+UnSgfLa8sLXlQIVgRfRMSniijhln59jL8tTg5i6Jl2beUOxbP60RMfROIV1fxgpKvjf/GBqKq6S565bYZv0i3yxziUggErHpNaq2rOB+HuFUmSTzbV073aSeI2hDw92hORSk2LFfAFYFJaSF4Gj7xMCuuTxVPSKtycf79nDIIK5QAonYOvtJYLWm7RYGLPvHlcqDVL1mTLA5jddzHRrEsRuZHlUEZuZ54d12mViXmah/SDPs9w2gDtqKfhJsRoJrIKS7J0FhR4vF3YKBQIPVD9e5jB6h9k7el0SjWwqz9d6oYWLDFcqTuys6vjnEnXG5qntEs0Flm1H1KXNwz79iNmcElWpQr05xi/yuK8kppNq0SpqtNuOpx4GfkJDwZL35fyEH0fn+WS9n4QQzGx+cEN8Zx36R6OB4O48YBJt9X1t4N/ES5Gj74stfrxDn0DIhwIUlD7NDXI7HhLW3lW/f3sQQBALwhRfIb9zKoBTOU/a8yO0ozTKqoA84vAWnS6eb3QC/qxCy9ztL456AkyYAZeQI7zgoqcoelyUSEmWXsHkPtUtLZSWVtVr63SrqOC233t2dIq3zP1O0zzjhucIFuPWkCgnUaMlX+2ELcY6TOekf3hd718oQ/J2v2pWYz69l1Rc1mXShtN8s=
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)(1800799024)(366016)(376014)(56012099003)(22082099003)(18002099003);DIR:OUT;SFP:1102;
X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1
X-MS-Exchange-AntiSpam-MessageData-0:
	=?utf-8?B?VHZZVGowVXpVYkt0bWpjTmVvVFlhaEFmWjZMRFpaaWEweVFveUdPTHhieDJR?=
 =?utf-8?B?SUE2bi9UblRra1VBcHNSNkx4MnJzOTNhWnlPclVvZXRVNEpycS9OdTBtZWlj?=
 =?utf-8?B?cHVtOXArcWprQVdqOEw0QnpxbThtMENaL2R3dSthZzhKdFNrU1NteGJER0xV?=
 =?utf-8?B?UVVxZER2amtoOWNSWEt0ZkFkbTJQbEsxS0RackhrdCtPQzE3d0R3SUpVNE1w?=
 =?utf-8?B?bXU4cnhPNHlnaVR0MUdGVHRjRWh1eEZYQk5UR3EwQnZUaHAzYy8ybWkxUXQ3?=
 =?utf-8?B?eWdxb2lGMFdPbFY3TkJjUGo3ZmlXM0N6YWJkOW1JbG8vRDNQcUhxbkZIQldi?=
 =?utf-8?B?aVRwWUY3d2U5Zms5OW4wOTVLbzUrK2w4d2J4MUFlVFJWQTBUUTZ3VHIzWEM3?=
 =?utf-8?B?WTRCZHVKdFZxaWVoUVRaT1RtQ2JTZGdmdUJoN3Y3cjBqajZEYzhRM2hYS2lm?=
 =?utf-8?B?VEI1MjQ5Y0ZqVzNnQXVSM2x0K1RJZG5vdXJtUHNHalpFK0xEK0daSm1rdXRP?=
 =?utf-8?B?T3QzNGUreFVLeWJ2RDY3cDVvbno2S3BqR2VYRE5MR0RkYWpsV2dmU2ovalF2?=
 =?utf-8?B?aDMrcEhVejNNOEVHZFdWQ2k2Y21NQlllSkVDQVlOQ3laSE4rRURnWEpUUVhj?=
 =?utf-8?B?c283UnNTY29zNHpXWnJwT3ZtRmlNYndNRk8zeWFtdXViUU9kbjVGclhqY1Jp?=
 =?utf-8?B?U2pKcXVybk4vOTltOENZZmpKOC93RjVpbCtzU0ttZG1rRVV4Mlg3NEM2RDZm?=
 =?utf-8?B?SFY4d3VxUE15VW54MlNTRXhQbWdOVWpqaXFKdDJVZC9rKzNsdUFJeUY5dXQy?=
 =?utf-8?B?eFlSSkdoc0NwRHlTTWd3bC95cGdpWTRJMEQrd0VKWTJPRHlLaU5zVitEQlFt?=
 =?utf-8?B?UFFHbTMrb3JSVCtNQi9PTGZ0bkdEbzhXZ0FuOGtTbFN3WFBPQXY5VnErN2FI?=
 =?utf-8?B?aTRiQkpOSGtESDRRYzQwZHNyMTNsSTRkSTdwNUk5Yk04Z09nc1o3ZDgxNHFm?=
 =?utf-8?B?ZVJYazdFMEU1dzRpVEdOUkVFWkFvQy91NFdJVGl4TTVBaEtpZE8xZEx6SmxY?=
 =?utf-8?B?dDlONjBUclpPL2hiZXUxenRkVVdsZHNEZ3RwdDMwQ2ZWZU4za1ljbXJVK1lD?=
 =?utf-8?B?bUVpaXN3dmJlMjF0TnVrRVFiTXhObEE1QStUUGxxV245Y3VRSXJTUHZ5ZEts?=
 =?utf-8?B?TjZxcm9BdFRXSWZEckVkVk0ySjA4VHRGNHdGbjVNTDRLUm96YzBaNExndlA4?=
 =?utf-8?B?Y05ueXZ6QnpDby94RE90eXlXQmN1cURnaGViUlA1TFFMTWhQZE1CbExxV2tQ?=
 =?utf-8?B?YW5YYW1XbWpWSGt5RWx5Uyt4Y0JwZEVIQTV6c2doMjlOa3lyTXdubFNrT01h?=
 =?utf-8?B?UEFGWXNVSXhDYXJERmxqRjdDcHhQMmhPSDhxeGo3M3J1TGt6TnFYZFhRR2Vm?=
 =?utf-8?B?aytaMUdscEdqSFh5R1ROOFJVQXpQOEtkZ25qeTJDWHkxT0FnVEZXelY4TmN1?=
 =?utf-8?B?SzNBS05UQ1JXR1cwbUVLSURFdXdZdnp6TURTZlJSa1JCVzlFc1dvTzg3aGFV?=
 =?utf-8?B?K2NPalJWd2ludHZEa0VwSFQxR0ZXMStJcjVsb2JNSlJONnRpY1dqTnRKdjNt?=
 =?utf-8?B?dFdkeG1LL0diemhMMHE3WFFKZGtGQmhsazQyYXNVcWU0cU81Z05LL25wS09z?=
 =?utf-8?B?OWk5T1F2R2trY29lYU1oeDVla1YyWHZuRTMzZmpSUnc3M08wNmQzazF5dFBY?=
 =?utf-8?B?QWpDREZOR3dtSzhOUE8veWpPcjhFUGVhTTllQXJPK1JxT3lpY1pkYUd0WFJv?=
 =?utf-8?B?bU1Ca3NZZlN3bnNmNnJtRkdDWHJIZk5lOXJWc0NKZ2doVHR6cXFjTGZxeEx6?=
 =?utf-8?B?TkZqUXByaG9ZeHRvWmZIUlI1QVpxZm9TeENJVG83d2llNDI2WlJjMGhmanhr?=
 =?utf-8?B?ZldpNDRQRVRoODZIdVVMZzdLK2gzRHRhM2NGY2M2d2tVWmpOb0o1dDE1YUhh?=
 =?utf-8?B?SzROSXRGY0laSEorZy82V0hoby9WTk5Tc3prbGdzMzE5S2wrN1hEekdZbzFr?=
 =?utf-8?B?ZjNUajdQbVZ0ZzV4NVRZaHZQUG53YVlpUWtkc1BPdkIwWnBBY25YNmxtbEdN?=
 =?utf-8?B?eE16dmwyTnI3QnBnZmtCNlF4a2lFUThZQUJqVEplTGRoMWlwcWx3OWYxOFJU?=
 =?utf-8?B?TzNaQzJLQStXTkVjcjNHK0xMTDNhR1RBOVhHYWw3REdpdCtaT3d2YXRXZUVm?=
 =?utf-8?B?a2V6MXFzZjBMQW9wWlYvK0Y1K3BvMU1ScEh1dmtObVV5cU5hNXB0cHo3NlZu?=
 =?utf-8?B?ZERMUTVPbGtwdE91STFLVTQ2QUVlL05pVUNXRjQ2RkhlM1BpcElDZz09?=
X-OriginatorOrg: epam.com
X-MS-Exchange-CrossTenant-Network-Message-Id: 13be872a-5731-4bcd-aaec-08de9e39fbeb
X-MS-Exchange-CrossTenant-AuthSource: AS2PR03MB9587.eurprd03.prod.outlook.com
X-MS-Exchange-CrossTenant-AuthAs: Internal
X-MS-Exchange-CrossTenant-OriginalArrivalTime: 19 Apr 2026 17:35:01.1357
 (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: cfn/QIlrC7kvSFoB3+oBwAJaVohwv7lK9a2w9DFsqEPwxkh4f2trbyTqCZ+QohVNuiQCqGp5t1qIDHP56JbeWg==
X-MS-Exchange-Transport-CrossTenantHeadersStamped: DB4PR03MB9433
X-purgate-ID: tlsNG-4011c0/1776620105-CF57C8B7-5DFB33A9/0/0
X-purgate-type: clean
X-purgate-size: 9242

Hi Julien,

On 4/14/26 04:17, Julien Grall wrote:
> Hi Milan,
> 
> On 24/03/2026 07:51, Milan Djokic wrote:
>> 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 | 93 +++++++++++++++++++++++----
>>    xen/drivers/passthrough/arm/smmu-v3.h |  9 +++
>>    2 files changed, 91 insertions(+), 11 deletions(-)
>>
>> diff --git a/xen/drivers/passthrough/arm/smmu-v3.c b/xen/drivers/passthrough/arm/smmu-v3.c
>> index 73cc4ef08f..f9c6837919 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 = le64_to_cpu(dst[0]);
>> -	bool ste_live = false;
>> +	bool s1_live = false, s2_live = false, ste_live = false;
>> +	bool abort, translate = false;
>>    	struct arm_smmu_device *smmu = NULL;
>> +	struct arm_smmu_s1_cfg *s1_cfg = NULL;
>>    	struct arm_smmu_s2_cfg *s2_cfg = NULL;
>>    	struct arm_smmu_domain *smmu_domain = NULL;
>>    	struct arm_smmu_cmdq_ent prefetch_cmd = {
>> @@ -699,30 +701,54 @@ static void arm_smmu_write_strtab_ent(struct arm_smmu_master *master, u32 sid,
>>    		smmu = master->smmu;
>>    	}
>>    
>> -	if (smmu_domain)
>> -		s2_cfg = &smmu_domain->s2_cfg;
>> +	if (smmu_domain) {
>> +		switch (smmu_domain->stage) {
>> +		case ARM_SMMU_DOMAIN_NESTED:
>> +			s1_cfg = &smmu_domain->s1_cfg;
>> +			fallthrough;
>> +		case ARM_SMMU_DOMAIN_S2:
>> +			s2_cfg = &smmu_domain->s2_cfg;
>> +			break;
>> +		default:
>> +			break;
>> +		}
>> +		translate = !!s1_cfg || !!s2_cfg;
> 
> NIT: translate is a bool. So do you actually need the !!?
> 

No, !! is not necessary here, will fix this.

>> +	}
>>    
>>    	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 = true;
>> +			break;
>>    		case STRTAB_STE_0_CFG_S2_TRANS:
>> -			ste_live = true;
>> +			s2_live = true;
>> +			break;
>> +		case STRTAB_STE_0_CFG_NESTED:
>> +			s1_live = true;
>> +			s2_live = true;
>>    			break;
>>    		case STRTAB_STE_0_CFG_ABORT:
>> -			BUG_ON(!disable_bypass);
> 
> I am not sure I understand why this was removed. Can you clarify?
> 

Yes. With the stage-1 support, abort is controlled per guest smmu 
configuration, so abort state is valid and not controlled by the global
disable_bypass, but with per-config smmu_domain->abort field instead.


>>    			break;
>>    		default:
>>    			BUG(); /* STE corruption */
>>    		}
>>    	}
>>    
>> +	ste_live = s1_live || s2_live;
>> +
>>    	/* Nuke the existing STE_0 value, as we're going to rewrite it */
>>    	val = STRTAB_STE_0_V;
>>    
>>    	/* Bypass/fault */
>> -	if (!smmu_domain || !(s2_cfg)) {
>> -		if (!smmu_domain && disable_bypass)
>> +	if (!smmu_domain)
>> +		abort = disable_bypass;
>> +	else
>> +		abort = smmu_domain->abort;
>> +
>> +	if (abort || !translate) {
>> +		if (abort)
>>    			val |= FIELD_PREP(STRTAB_STE_0_CFG, STRTAB_STE_0_CFG_ABORT);
>>    		else
>>    			val |= FIELD_PREP(STRTAB_STE_0_CFG, STRTAB_STE_0_CFG_BYPASS);
>> @@ -740,7 +766,33 @@ static void arm_smmu_write_strtab_ent(struct arm_smmu_master *master, u32 sid,
>>    		return;
>>    	}
>>    
>> +	if (ste_live) {
>> +		/* First invalidate the live STE */
>> +		dst[0] = cpu_to_le64(STRTAB_STE_0_CFG_ABORT);
>> +		arm_smmu_sync_ste_for_sid(smmu, sid);
>> +	}
>> +
>> +	if (s1_cfg) {
>> +		BUG_ON(s1_live);
>> +		dst[1] = 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] |= cpu_to_le64(STRTAB_STE_1_S1STALLD);
>> +
>> +		val |= (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 = s2_cfg->vttbr & STRTAB_STE_3_S2TTB_MASK;
>>    		u64 strtab =
>>    			 FIELD_PREP(STRTAB_STE_2_S2VMID, s2_cfg->vmid) |
>>    			 FIELD_PREP(STRTAB_STE_2_VTCR, s2_cfg->vtcr) |
>> @@ -750,12 +802,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;
>>    
>> -		BUG_ON(ste_live);
>> +		if (s2_live) {
>> +			u64 s2ttb = le64_to_cpu(dst[3]) & STRTAB_STE_3_S2TTB_MASK;
>> +			BUG_ON(s2ttb != vttbr);
>> +		}
>> +
>>    		dst[2] = cpu_to_le64(strtab);
>>    
>> -		dst[3] = cpu_to_le64(s2_cfg->vttbr & STRTAB_STE_3_S2TTB_MASK);
>> +		dst[3] = cpu_to_le64(vttbr);
>>    
>>    		val |= FIELD_PREP(STRTAB_STE_0_CFG, STRTAB_STE_0_CFG_S2_TRANS);
>> +	} else {
>> +		dst[2] = 0;
>> +		dst[3] = 0;
>>    	}
>>    
>>    	if (master->ats_enabled)
>> @@ -1254,6 +1313,15 @@ static int arm_smmu_domain_finalise(struct iommu_domain *domain,
>>    {
>>    	int ret;
>>    	struct arm_smmu_domain *smmu_domain = to_smmu_domain(domain);
>> +	struct arm_smmu_device *smmu = smmu_domain->smmu;
>> +
>> +	if (smmu_domain->stage == ARM_SMMU_DOMAIN_NESTED &&
>> +		(!(smmu->features & ARM_SMMU_FEAT_TRANS_S1) ||
>> +		 !(smmu->features & ARM_SMMU_FEAT_TRANS_S2))) {
>> +			dev_info(smmu_domain->smmu->dev,
>> +					"does not implement two stages\n");
>> +			return -EINVAL;
>> +	}
>>    
>>    	/* Restrict the stage to what we can actually support */
>>    	smmu_domain->stage = ARM_SMMU_DOMAIN_S2;
>> @@ -2353,11 +2421,14 @@ static int arm_smmu_device_hw_probe(struct arm_smmu_device *smmu)
>>    		break;
>>    	}
>>    
>> +	if (reg & IDR0_S1P)
>> +		smmu->features |= ARM_SMMU_FEAT_TRANS_S1;
>> +
>>    	if (reg & IDR0_S2P)
>>    		smmu->features |= ARM_SMMU_FEAT_TRANS_S2;
>>    
>> -	if (!(reg & IDR0_S2P)) {
>> -		dev_err(smmu->dev, "no stage-2 translation support!\n");
>> +	if (!(reg & (IDR0_S1P | IDR0_S2P))) {
> 
> I believe the behavior is now slightly different. This would not print
> anything if the SMMU support stage-1 but not stage-2. However, Xen at
> least need the latter.
> 

The original idea was to also allow stage-1-only support. But I'm not 
sure if stage-1-only usecase is useful or even valid for Xen.. I will 
update the patch series with the missing parts for stage-1-only support, 
pointed out by Luca, but the question remains if this is needed at all. 
If not, I can revert to original state where stage-2 was always required.

>> +		dev_err(smmu->dev, "no translation support!\n");
>>    		return -ENXIO;
>>    	}
>>    
>> diff --git a/xen/drivers/passthrough/arm/smmu-v3.h b/xen/drivers/passthrough/arm/smmu-v3.h
>> index ab1f29f6c7..3fb13b7e21 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
>>    
>>    #define STRTAB_STE_0_S1FMT		GENMASK_ULL(5, 4)
>>    #define STRTAB_STE_0_S1FMT_LINEAR	0
>> @@ -549,6 +550,12 @@ struct arm_smmu_strtab_l1_desc {
>>    	dma_addr_t			l2ptr_dma;
>>    };
>>    
>> +struct arm_smmu_s1_cfg {
>> +	u64				s1ctxptr;
>> +	u8				s1fmt;
>> +	u8				s1cdmax;
>> +};
>> +
>>    struct arm_smmu_s2_cfg {
>>    	u16				vmid;
>>    	u64				vttbr;
>> @@ -669,7 +676,9 @@ struct arm_smmu_domain {
>>    	atomic_t			nr_ats_masters;
>>    
>>    	enum arm_smmu_domain_stage	stage;
>> +	struct arm_smmu_s1_cfg	s1_cfg;
>>    	struct arm_smmu_s2_cfg	s2_cfg;
>> +	bool			abort;
> 
> I think there might be some padding before s1_cfg. So I wonder whether
> this would be better be moved before to reduce the size of the structure.
> 

Will do so.

>>    
>>    	/* Xen domain associated with this SMMU domain */
>>    	struct domain		*d;
> 
> Cheers,
> 

Best regards,
Milan



From xen-devel-bounces@lists.xenproject.org Sun Apr 19 17:55:47 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Sun, 19 Apr 2026 17:55:47 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1285362.1566427 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wEWMt-0003Tr-8h; Sun, 19 Apr 2026 17:55:39 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1285362.1566427; Sun, 19 Apr 2026 17: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 1wEWMt-0003Tk-5z; Sun, 19 Apr 2026 17:55:39 +0000
Received: by outflank-mailman (input) for mailman id 1285362;
 Sun, 19 Apr 2026 17:55:38 +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 1wEWMr-0003Te-SW
 for xen-devel@lists.xenproject.org; Sun, 19 Apr 2026 17:55:38 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wEWMq-005aNF-V2
 for xen-devel@lists.xenproject.org; Sun, 19 Apr 2026 19:55:36 +0200
Received: from [10.42.69.3] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <milan_djokic@epam.com>)
 id 69e516fa-5cb7-0a2a0a5109dd-0a2a4503d3e8-14
 for <xen-devel@lists.xenproject.org>; Sun, 19 Apr 2026 19:55:36 +0200
Received: from [40.107.162.99]
 (helo=PA4PR04CU001.outbound.protection.outlook.com)
 by tlsNG-33051d.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.1)
 (envelope-from <milan_djokic@epam.com>)
 id 69e51718-672d-0a2a45030019-286ba2637562-3
 for <xen-devel@lists.xenproject.org>; Sun, 19 Apr 2026 19:55:36 +0200
Received: from AS2PR03MB9587.eurprd03.prod.outlook.com (2603:10a6:20b:595::7)
 by GV1PR03MB8359.eurprd03.prod.outlook.com (2603:10a6:150:52::7) with
 Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9818.32; Sun, 19 Apr
 2026 17:55: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%6]) with mapi id 15.20.9818.032; Sun, 19 Apr 2026
 17:55: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=cgXRwfjKcpRsYb+pHjaTFoKCvnmM4e4BGtXSQ8EmGamzHFTZM9dU2Sh1TsgR4gXMYVpV7JB9qBuAvjwgw8D4aEzZFVQIR3DTntWd707yIdXj+F69QTDh8RV82Qkmd4DazuwfC6UNSebBX0U24czzRIh1kr8ZD42KW8ePoUFjUnQysq/b6/TTExwjzuIxysoZeQppBuA4yEtm+Ji5FyYHqism/MtwcwZfu/h137YsD1k1S3xEwN4/PK7BMv5fzKd3F1AVLWk7XS6EKP+khAXm3WwtkbZwZD7StKUXSmJ6ZeRQL7wAnbYKC32ec46HlPGpfiy/5DbHOrYLnOFEh0+0lw==
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com;
 s=arcselector10001;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1;
 bh=pM3WTToRusV2pmI4GGzV0KEF95zi9vOjmYJaQMVxYpM=;
 b=LaHZcV8L3FdfMZlotvLrd6GUSqPSDI1ugXXnha2r7k2NgQuQJViYx0Xjhu84LHW2mcS9hLQ+1szqDGIwlxK5cv6iRdoJIeuvskQ+kRsbeP/Xop/JBMj3zqYf9fPEj8ULKTES/tFV2tNWMKY3t7KcTmqJUDl2l7bd7FzMaHtM8LkBjjsRb4ak0SsQZGoSv2QOGqdzhnGVBm9PZhOUcVWUR3uPA7l94X6o7kzmNU7iIIHfQKC+7qHacH+MVql+wvqVVWgXfxyGDVJy3VxJXv2x9t98fvXytIZgEf5hAWiy2f4PcYkOHXKd+VABkWWPSTkIATg0rlaHgjtVuY1J61UtGw==
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=pM3WTToRusV2pmI4GGzV0KEF95zi9vOjmYJaQMVxYpM=;
 b=HucGnEaRq0QWUun1xkuwwTUjooxXHcTElVExkBuqQCWOiEoVdk+lhj0tHGGTvDoYxVx4W2IiDHMzNaWYVADm3cb/dU2ZonG9souuw7C2E3qxOAk9szIA6bBWR5eHOXCKA4SwP5lyyqt7yUZPvOkR0EbQudj9abyxEIdavwRy7dJ9B3kriZ5ZxwHBhcLQm28lClKaA0E6KcGlJztFwqE6hIbyy97p1ILSAABdqdq0Wn4KL2KsBSrdL1J7znIs4dYUtTujDZJHd/GAjElmFO+Q152FY9ex2x0qaYwV1QvBsmNWcQUb1/opWJYQlM8EuoDRr7QlXIJmlf2B9Z57ieaD1w==
Authentication-Results: dkim=none (message not signed)
 header.d=none;dmarc=none action=none header.from=epam.com;
Message-ID: <9221c2d2-0d0c-4db7-b796-3bc54dc6d6b6@epam.com>
Date: Sun, 19 Apr 2026 19:55:31 +0200
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH v3 02/23] xen/arm: smmuv3: Add support for stage-1 and
 nested stage translation
To: Luca Fancellu <Luca.Fancellu@arm.com>
Cc: "xen-devel@lists.xenproject.org" <xen-devel@lists.xenproject.org>,
 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.1774918270.git.milan_djokic@epam.com>
 <baa5aa0db3d8d2cbc5f46a60241330c4c7055d11.1774918270.git.milan_djokic@epam.com>
 <D20F71C9-C43A-4F22-9B44-84C0105914B6@arm.com>
Content-Language: en-US
From: Milan Djokic <milan_djokic@epam.com>
In-Reply-To: <D20F71C9-C43A-4F22-9B44-84C0105914B6@arm.com>
Content-Type: text/plain; charset=UTF-8; format=flowed
Content-Transfer-Encoding: 8bit
X-ClientProxiedBy: VI4PEPF00000156.AUTP296.PROD.OUTLOOK.COM
 (2603:10a6:808:1::877) To AS2PR03MB9587.eurprd03.prod.outlook.com
 (2603:10a6:20b:595::7)
MIME-Version: 1.0
X-MS-PublicTrafficType: Email
X-MS-TrafficTypeDiagnostic: AS2PR03MB9587:EE_|GV1PR03MB8359:EE_
X-MS-Office365-Filtering-Correlation-Id: 4dea987f-62b4-49d4-6353-08de9e3cd9dc
X-MS-Exchange-SenderADCheck: 1
X-MS-Exchange-AntiSpam-Relay: 0
X-Microsoft-Antispam:
	BCL:0;ARA:13230040|376014|366016|1800799024|18002099003|22082099003|56012099003;
X-Microsoft-Antispam-Message-Info:
	tiJvs1MmB1TCznmGhVd9VXynl/V1wdj86ZgqWNYKFuvi3LLZyYvv/nrR0LVABXbe7dI2Yx/mv7nYlNy1m5qQgwkV6za21xTEF2Gc5LYY9tFXkppPrJO7YKLBX5IOeTv+9q4vhoDa14qkrRGEkhK3e2DvjZcE5rMCr1OgCrUPJ2furwukfMr7q9cp8ft+imr6k5JEM/QBIQ9At3BvcJ6ibldQD0I4v2YjIpihMSkn9LfoZGJetlzDa6/9gO99OG83W10hzq2dGHQVipz6ERFNMKR4VZ3q9iVvMFzkoj33Vc8UdTxHCt5XCBRzHlAFWt9zo6UnXsqflhHk56erPqf703nriog4fzvCn6MwwBuGZsoaE2WfwabSxrHu09wxm4EplQBOcRjSc+aoR0YZnKh8WPGRdTD5oU3y1h3f6e8s7//q2Dfc9kn1+10GgvkCRmhLm/UDHxk0up/StC9XVl6CZC+MyWmGZ3Umew+SRliCgaLR54gnLJvW+2Hg/Sha8uSDcJxIuNGd2DO2dglstaYMTvxAozLEPepTJfnn+0LyHdY7x1vB2TWtb1BR4eJsEd0gfbX/pzdB3FaEWtIEvgYNAPjHtMlpiEvoQwOA5OP1VeHxI9//rIJhYwfy8+pw70owAaYSHRWs1CTxxbEYn61aqR7o2HInldGEmF2qX8chRei+lc14NLMSl52D/MVZ6o9PYyAK7PYM8bZLQmWLdSru7VsnK/pEm7ieSNC4OYLxduk=
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)(1800799024)(18002099003)(22082099003)(56012099003);DIR:OUT;SFP:1102;
X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1
X-MS-Exchange-AntiSpam-MessageData-0:
	=?utf-8?B?elhHTjU2SVZ2dGR4MGVxY3U5cHc0a3grMUdzOElpOGp3L2pLMTVQZU4zRFA0?=
 =?utf-8?B?cnRlRis5M3ExS3JQZjlvWitVNVh6TTZHTzVWSG5LRkJoTWdYUjJOeGVHZTk4?=
 =?utf-8?B?YkNvQ1Q0cCt2dHZ0bCtYcStLUTh1bUdLWjdzdk14dmlSQmNLVzVhTFRGczRE?=
 =?utf-8?B?eTI4ZU5SdTZQcmtvS1VWZERMdDBxMGpGQjNpa1hZL2VxMXVCUEYwQmhWZmNR?=
 =?utf-8?B?eklEWDNkTGgzY04yZTBXS0pXa0tNelYrQmJNeUcxUmQyTnFCd01uME82UnlE?=
 =?utf-8?B?MG81eEpMRjgyUVlZd1RodlJpdzRuTTFhRFZGNzdDV1FOd3N1RUI1bnU5c3dP?=
 =?utf-8?B?ajVDUk5Zcjc1bEQzMkF0ZWpqbDh5c0N2U1RSNStKY043V2FjWlZ6VEd6RFFi?=
 =?utf-8?B?a29oNzB1V3Y5Njh3cnpMZ0dtTzdyVjg4NUZHbmdCZzFKUENvN1lpQVg4dito?=
 =?utf-8?B?b1JWaVRid21peXFZK1YzUEM0a1ZiQlhkWFVPQjR3MlZqa3RZdlE4eW1mdHlm?=
 =?utf-8?B?dWcyNGpXZWVmZHhsc3Q2T3VSSXZwc0k3SjBWK3FJS2RxN29lbDNXQmduSnFF?=
 =?utf-8?B?ZTJabWFFTE5YekhHdEI2ZEh5ckttOEhuMGo0aTFaUmFiUUc0MGlxNHk4aTNa?=
 =?utf-8?B?cjI1Q24xaHBwcy8wZDNQMGJwQStESzlYNnVLazc1WDBrYWpVQ3E0UUZYQStv?=
 =?utf-8?B?bFpVUjZvSFdURmZTTE9hUGllYk1UZkpEcHd2Q1A5TFdTZzdOVVh4NTdRUTR3?=
 =?utf-8?B?ZkdaSVNnYTEwWC9ZYS96VlE3b1VRVFcrYjRveXZNT2swQmsxNTk1YmpUSmZJ?=
 =?utf-8?B?SDNoc2NHdXB6ajVtY083TVJFUTBZZzgwQlZzaTRtNm9MdTU1amF4enc1c0xI?=
 =?utf-8?B?MytHTVQ3cUdDd0JhQlRNTjhUaEN1WlJmRlVoL1pTMW1aMHZ1RTFScm15bEJp?=
 =?utf-8?B?QnhuSENuVE5RbzdiSk04cGtISjFGeTNBbyt1VFB3NkRqYzdZSnhXR3RzR2NY?=
 =?utf-8?B?L3BQcGp4TkRmY3R4TTlYeThLNlZZY2VNdTJMeGxPM2F5eG8wdXpIWWlHdjd1?=
 =?utf-8?B?SzR3aDdidTIraHQwYXBHTk5WcFM1eFFjQzU0NmQwREl3V3UzNThSQjYzL2tT?=
 =?utf-8?B?WWpEektGMERPR3BEYjVZRXVRSVR0LzBuM25oejFYNzNrcEp5Tm9KdDdxVVh2?=
 =?utf-8?B?R0RuREVLTzNHdjk3MXR1Sys1bmFVZ0tkVjNnekJpblBSMXBqWnRKZmlLM0Ra?=
 =?utf-8?B?Z09pWkM5Ui8weUxXdEltSHlwa1prRnJWa21rZnJ3VTRmMjBBSjlaN2Vwam1a?=
 =?utf-8?B?ZXB2Y1VGVEFxeWdMb2tHNzlkbVI1Qm90Um1QRlpHcmp0cVlBdVFxU3k3MEIx?=
 =?utf-8?B?RE1MdXQzcVFOd2tvVFhMY2N5NEdkU0hWZkpORW52K2xUd0VSREhxRHlpQ2tS?=
 =?utf-8?B?dkh0OWV5NGlQaG1DVUVsdzZuOHkyVXMxU0NONjBwRmlmU0lNNmo1VHd1OTMz?=
 =?utf-8?B?YlZHTXpGdU16ZEd0UjVLQXdMeWhKSnVVbXZ3alFNWTU1QWRGREVobldZYjQr?=
 =?utf-8?B?NTJubWxnODlhbmF6dnN5VXdqUUcwZnkyY0ExMTNOOG5FM0dpYitNcnFtTjh6?=
 =?utf-8?B?YXhkZ1k0d0hlaUNleDN3d1JxL2M4VUYxUjlEM09pOHV3Z0tlL3B4UDJyTFRm?=
 =?utf-8?B?RTI3L2o0YXN0cUVobEMrSUs4OWhpVHNwQmhKVkVXSEUxOERmUlBGa3VEYmll?=
 =?utf-8?B?K2NscW5nWlFBcDhyYng3VEIwN3k1ZnZBS3F0ckVsSHRZOEwrcVlNSHF4RHdV?=
 =?utf-8?B?WFRxellwWDBMT3pySU5WdWtqUFgrTTcrSktqVFZiKzZxb3Y3aWJ1MEJDV0ha?=
 =?utf-8?B?QjlnNnYvWjlSc2gyQkNXdkFHRThSaWVZK3oxcnpnUGtwNytoU3pOeThQQWlG?=
 =?utf-8?B?elpmK0p4ODI2d09IM0xrQU4vNDM1NVIvT3VLK3QzWndwME42dkNjeXFJVVd2?=
 =?utf-8?B?WkNrSjhIaisyODEwYXpIS0EwRHFyc0t5bDJXSnhaa0E2UVdWUjdZbHUzV09L?=
 =?utf-8?B?eDVHZkErWjVlZU96cmtUSzlQSFhzSUYxWDVtSDgza280TnNSVVFKZDd1cVA4?=
 =?utf-8?B?K09SeGdtUWNzNHhTOXZ6eGVFcU5XQzFoK1h4MkR6NG40dXdWOUNEL2NvTFly?=
 =?utf-8?B?QTdpa0E3U3Vpd1hmUko1ejg1Vk1XcGIxNXByWTlWanN4ZzFHN0FTRUFXRm5B?=
 =?utf-8?B?ckkwU3lORWFXdzVtM0xmNEJ0dHFXZHQwblJoUjR3cFNLcnIxQjI5ejF0Vjdq?=
 =?utf-8?B?ZEhaZVgrVHdpR3g2WEVlc3ZaSWpsRXB4YllxRVlkRW1qS1FibHhUdz09?=
X-OriginatorOrg: epam.com
X-MS-Exchange-CrossTenant-Network-Message-Id: 4dea987f-62b4-49d4-6353-08de9e3cd9dc
X-MS-Exchange-CrossTenant-AuthSource: AS2PR03MB9587.eurprd03.prod.outlook.com
X-MS-Exchange-CrossTenant-AuthAs: Internal
X-MS-Exchange-CrossTenant-OriginalArrivalTime: 19 Apr 2026 17:55:32.4827
 (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: tUAyYVpJj2j6z2kc4/FeD8XWx9xVWUaQc8l2MYQpFyTaZB6Nhlidqvm+IaMi3RzJZtsB0hzpnSz5Kc/VW4/kzQ==
X-MS-Exchange-Transport-CrossTenantHeadersStamped: GV1PR03MB8359
X-purgate-ID: tlsNG-33051d/1776621336-A1F7A938-498FEC95/0/0
X-purgate-type: clean
X-purgate-size: 4004

Hi Luca,

On 4/10/26 11:49, Luca Fancellu wrote:
> Hi Milan,
> 
>> @@ -740,7 +766,33 @@ static void arm_smmu_write_strtab_ent(struct arm_smmu_master *master, u32 sid,
>> return;
>> }
>>
>> + if (ste_live) {
>> + /* First invalidate the live STE */
>> + dst[0] = cpu_to_le64(STRTAB_STE_0_CFG_ABORT);
>> + arm_smmu_sync_ste_for_sid(smmu, sid);
>> + }
>> +
>> + if (s1_cfg) {
>> + BUG_ON(s1_live);
> 
> I think this is wrong, if a guest issues another s1 update on the same sid, this will crash Xen, I think
> that we’ve already invalidated the live status so this one should be removed
> 

Yes, this is a leftover. I will remove this assertion.

>> + dst[1] = 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] |= cpu_to_le64(STRTAB_STE_1_S1STALLD);
>> +
>> + val |= (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 = s2_cfg->vttbr & STRTAB_STE_3_S2TTB_MASK;
>> u64 strtab =
>> FIELD_PREP(STRTAB_STE_2_S2VMID, s2_cfg->vmid) |
>> FIELD_PREP(STRTAB_STE_2_VTCR, s2_cfg->vtcr) |
>> @@ -750,12 +802,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;
>>
>> - BUG_ON(ste_live);
>> + if (s2_live) {
>> + u64 s2ttb = le64_to_cpu(dst[3]) & STRTAB_STE_3_S2TTB_MASK;
>> + BUG_ON(s2ttb != vttbr);
>> + }
>> +
>> dst[2] = cpu_to_le64(strtab);
>>
>> - dst[3] = cpu_to_le64(s2_cfg->vttbr & STRTAB_STE_3_S2TTB_MASK);
>> + dst[3] = cpu_to_le64(vttbr);
>>
>> val |= FIELD_PREP(STRTAB_STE_0_CFG, STRTAB_STE_0_CFG_S2_TRANS);
>> + } else {
>> + dst[2] = 0;
>> + dst[3] = 0;
>> }
>>
>> if (master->ats_enabled)
>> @@ -1254,6 +1313,15 @@ static int arm_smmu_domain_finalise(struct iommu_domain *domain,
>> {
>> int ret;
>> struct arm_smmu_domain *smmu_domain = to_smmu_domain(domain);
>> + struct arm_smmu_device *smmu = smmu_domain->smmu;
>> +
>> + if (smmu_domain->stage == ARM_SMMU_DOMAIN_NESTED &&
>> + (!(smmu->features & ARM_SMMU_FEAT_TRANS_S1) ||
>> + !(smmu->features & ARM_SMMU_FEAT_TRANS_S2))) {
>> + dev_info(smmu_domain->smmu->dev,
>> + "does not implement two stages\n");
>> + return -EINVAL;
>> + }
>>
>> /* Restrict the stage to what we can actually support */
>> smmu_domain->stage = ARM_SMMU_DOMAIN_S2;
> 
> Here we set stage 2 as default, but in arm_smmu_device_hw_probe() we’ve
> deleted the check for S2 required, so if we have an HW with only S1 the probe will
> succeed but we will wrongly set here S2, so I would keep ...
> 

Yes, handling of stage-1-only scenario is not correct, missing in ste 
and guest config handling also. I will update this in the new version.
Following comments from Julien on the same topic, I'm wondering if it's 
valid to provide stage-1-only support in Xen?

>> @@ -2353,11 +2421,14 @@ static int arm_smmu_device_hw_probe(struct arm_smmu_device *smmu)
>> break;
>> }
>>
>> + if (reg & IDR0_S1P)
>> + smmu->features |= ARM_SMMU_FEAT_TRANS_S1;
>> +
>> if (reg & IDR0_S2P)
>> smmu->features |= ARM_SMMU_FEAT_TRANS_S2;
>>
>> - if (!(reg & IDR0_S2P)) {
>> - dev_err(smmu->dev, "no stage-2 translation support!\n");
> 
> this change, rearranged in the way that is sensible with the new logic.
> 
>> + if (!(reg & (IDR0_S1P | IDR0_S2P))) {
>> + dev_err(smmu->dev, "no translation support!\n");
>> return -ENXIO;
>> }
>>
> 

Best regards,
Milan



From xen-devel-bounces@lists.xenproject.org Mon Apr 20 07:26:50 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 20 Apr 2026 07:26:50 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1285417.1566452 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wEj1e-00051Y-7D; Mon, 20 Apr 2026 07:26:34 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1285417.1566452; Mon, 20 Apr 2026 07:26: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 1wEj1e-00051R-4G; Mon, 20 Apr 2026 07:26:34 +0000
Received: by outflank-mailman (input) for mailman id 1285417;
 Mon, 20 Apr 2026 07:26:32 +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 1wEj1b-00051L-UK
 for xen-devel@lists.xenproject.org; Mon, 20 Apr 2026 07:26:32 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wEj1b-002bLx-76
 for xen-devel@lists.xenproject.org; Mon, 20 Apr 2026 09:26:31 +0200
Received: from [10.42.69.2] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <Michal.Orzel@amd.com>)
 id 69e5d51e-e002-0a2a0a5209dd-0a2a4502db92-42
 for <xen-devel@lists.xenproject.org>; Mon, 20 Apr 2026 09:26:30 +0200
Received: from [52.101.62.61]
 (helo=DM5PR21CU001.outbound.protection.outlook.com)
 by tlsNG-720697.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.1)
 (envelope-from <Michal.Orzel@amd.com>)
 id 69e5d524-af86-0a2a45020019-34653e3dc652-3
 for <xen-devel@lists.xenproject.org>; Mon, 20 Apr 2026 09:26:29 +0200
Received: from PH8PR07CA0019.namprd07.prod.outlook.com (2603:10b6:510:2cd::18)
 by SA1PR12MB999086.namprd12.prod.outlook.com (2603:10b6:806:49f::5)
 with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9818.20; Mon, 20 Apr
 2026 07:26:26 +0000
Received: from SN1PEPF00036F3D.namprd05.prod.outlook.com
 (2603:10b6:510:2cd:cafe::11) by PH8PR07CA0019.outlook.office365.com
 (2603:10b6:510:2cd::18) with Microsoft SMTP Server (version=TLS1_3,
 cipher=TLS_AES_256_GCM_SHA384) id 15.20.9791.48 via Frontend Transport; Mon,
 20 Apr 2026 07:26:25 +0000
Received: from satlexmb07.amd.com (165.204.84.17) by
 SN1PEPF00036F3D.mail.protection.outlook.com (10.167.248.21) with Microsoft
 SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id
 15.20.9791.48 via Frontend Transport; Mon, 20 Apr 2026 07:26:25 +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.17; Mon, 20 Apr
 2026 02:26:25 -0500
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.17; Mon, 20 Apr
 2026 00:26:25 -0700
Received: from [10.71.194.215] (10.180.168.240) by satlexmb08.amd.com
 (10.181.42.217) with Microsoft SMTP Server id 15.2.2562.17 via Frontend
 Transport; Mon, 20 Apr 2026 02:26:23 -0500
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@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=Tik8JBeUG8YbQS/ClNrKXNYYrp+nV4hSFmO5qm70FctqPryP7CRnhXCsrc0p9Y2GD3JTpbh3Ju9iedvrkgyMLIFx50fmL8L3NYFRwbK6vLeak94TIKjCuk4zuEkVJIyn/J6EyI8UCQ9XHV20rhTYFB2ru4stIQMJVhBf99TbuvGb9acA33B0OEwHtQNhcxTZasiOVKPFwbDQA9aM0isDQ6AeA4/Awga8L4F3v7lg3C8rfqOexFF4Qwnjl5dhdIFizqiCxXL56w/+Op2d4Mha8SnSbNV08L63of5dbSnoZe3MkmGkb+lu7oahPRPWE4XvpF4ODVq2SNC3+nrZvxdqXw==
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com;
 s=arcselector10001;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1;
 bh=uB6k0kOtErN3VP+hR2720UAh2VmSDTlX3y1KH48oS/8=;
 b=fDkZkH+7HQiChxe7yGEmD52YQlTLH6iyIhRs/nzRcvYCGKaQP9QEQA+nhxh/OLLofzuj/KjpLnyhYGzJQk71whwXNTPqz3rUZRsR8M5xb4qMo5urpNWj4EMv0AzDHOax4bdUhs4Lb5e7OWj0EEtpN+2VkiQ3QL4btJcO3CNXYbuRuebUkQ/7GS21mEfFmmn3ufBZQleDkF+ju5vIRO7Z7iqVuz94VSyie46HjcOatfuw0PfRrR3mtk35mfzC1lKEdeqqBHMKMi/IU3mg0TOLG2xjaDlNaNfQeWLCbvhy3dp1EzS6pdTTRHom0xUOi8cPNONv6bbd0eaLqhRhCSqB7w==
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=uB6k0kOtErN3VP+hR2720UAh2VmSDTlX3y1KH48oS/8=;
 b=VtdM4A8sGo+0TW5J98po2Ld8wQ0IxhESd9FBpfgzZGPHn7Ji67JgmKGNYnpnnR4R/0cggLynAEkm7X412+cs1YUo74jcVMSTCaAqgKG/A1Zlqnx5EHtQtL2aVoeYHB2W3wfZ12/djsuhxtyjLpgw9SC9ZvzPvuL3VnyQWU5AJMM=
X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 165.204.84.17)
 smtp.mailfrom=amd.com; dkim=none (message not signed)
 header.d=none;dmarc=pass action=none header.from=amd.com;
Received-SPF: Pass (protection.outlook.com: domain of amd.com designates
 165.204.84.17 as permitted sender) receiver=protection.outlook.com;
 client-ip=165.204.84.17; helo=satlexmb07.amd.com; pr=C
Message-ID: <6188df37-47f1-4b46-8b4a-56316221b86c@amd.com>
Date: Mon, 20 Apr 2026 09:26:23 +0200
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH v1 1/3] xen/dom0less: introduce free_phandle in struct
 kernel_info
To: Oleksii Kurochko <oleksii.kurochko@gmail.com>,
	<xen-devel@lists.xenproject.org>
CC: Stefano Stabellini <sstabellini@kernel.org>, Julien Grall
	<julien@xen.org>, Bertrand Marquis <bertrand.marquis@arm.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.pau@citrix.com>
References: <cover.1776340422.git.oleksii.kurochko@gmail.com>
 <58f59a071f6329acac610688a6c25b67b30e5b92.1776340422.git.oleksii.kurochko@gmail.com>
From: "Orzel, Michal" <michal.orzel@amd.com>
Content-Language: en-US
In-Reply-To: <58f59a071f6329acac610688a6c25b67b30e5b92.1776340422.git.oleksii.kurochko@gmail.com>
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: 7bit
X-EOPAttributedMessage: 0
X-MS-PublicTrafficType: Email
X-MS-TrafficTypeDiagnostic: SN1PEPF00036F3D:EE_|SA1PR12MB999086:EE_
X-MS-Office365-Filtering-Correlation-Id: 872c1d12-84d8-4cf1-9f02-08de9eae21a5
X-MS-Exchange-SenderADCheck: 1
X-MS-Exchange-AntiSpam-Relay: 0
X-Microsoft-Antispam:
	BCL:0;ARA:13230040|36860700016|376014|82310400026|1800799024|18002099003|56012099003|22082099003;
X-Microsoft-Antispam-Message-Info:
	vWrSEU3j4uijyKIwU/yxkEzAsrVIZdasKikpq57DtPa9596QTw7zzycAUJxJwdvre6ein57ditRmmofvpXUjQgyKfQFUTRgt7Ar5oCmXK9IsM5FHPyWC+09snz7pyUgwMCTzd2FL4ea3HX3wGhRLiSqF8KDFzPt/Sft1kdfrNmzYvEKQrUQpDg4A83zKs0f75e4iEsn7TDXBB8nYSaJjS4ZR93bxJJZg1FVa71siF6zG0keJE4ifT6whDI3fZ7QHHHqZrIQ3tlRBMukQ14NDmY58nT5hOqN8hKoyw2IefP8otYlHU+ts6mDV90M1Q6eI343oR7TlQSL8yAR+PmM61iwf+looiF8vOnUkuo5wZPPFud4RzOSX9e80zptyzt+jhSkqchTcUFO2Q/OGi7z5ZFdJvjuF8PGGcOxj02YsZELT7EU4jB6ztKrFp1JYbNqtX//MnPqVRSck66GIhj5J84lds0/mgvgLHFFvU4K/TT/ijLRgOvLtziXOJcQ7Vz6A5cEq4ypT7V+fofa8/5zMHmHo1KM/N9kNTXMut3lTznuOVuDK0YiO/c6PG2RKlLBSILlEt7UN9WPPiUP9eLdYmA6g40wwSvSRX0rMM3cBlbeYtxPLS4gu7F6FVm9Q0Co0O+x7kK14T9dDpBbI3xDN2INtr9YQqI9VW3idR0pl0NjswthdkhLvrRY8+96+v18EgGmUto79efqBsnRZYAwM+Yfnygm+RSY8hCnajWge+nKCjBPuU78gxHDELS3KxWoIeEyzMbo4lfhsFnwppixBdQ==
X-Forefront-Antispam-Report:
	CIP:165.204.84.17;CTRY:US;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:satlexmb07.amd.com;PTR:InfoDomainNonexistent;CAT:NONE;SFS:(13230040)(36860700016)(376014)(82310400026)(1800799024)(18002099003)(56012099003)(22082099003);DIR:OUT;SFP:1101;
X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1
X-MS-Exchange-AntiSpam-MessageData-0:
	4SGbQQfUlrx86HlcGTKQmrQ1huBt5CPltNXYCP3HOdKqqWin0zLB9spXWSoNcAWygACiUkxi5PTaQg4zMQ/AqxrKBYSz1Y2zstR0/m9Rz34UBbZjcKPtLjIlm9gdSEM4j1o3lhUzGtbosDgMScIoEe2z0/BtTS8kq7nkqB8acMQ7vST/IjbVpL2+fl9mo1ZmeOnfQCPzUKt9L9f0jLfDjcUZenSaHdCyRVmxj7ei8fxhT7ktyKQNt0uzse3quHCjqBRNiR/J8sBS0MxiLA3YFxfG06tnMtJsEpTKjb956BAg4fgDVylDIvRoHytwa3BDi+qBl82gkJhMqNYCYQHyZKcAwlTprZ3Dz46SXNSRSxuzIr9rX6z7wwI5HmKSSgrgvB4htAAHlZ9ibYH7vl5A1zPYocPcbz04WiX2Vl+dynVp0OOD7CChjJTSW5pJcY+A
X-OriginatorOrg: amd.com
X-MS-Exchange-CrossTenant-OriginalArrivalTime: 20 Apr 2026 07:26:25.8592
 (UTC)
X-MS-Exchange-CrossTenant-Network-Message-Id: 872c1d12-84d8-4cf1-9f02-08de9eae21a5
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:
	SN1PEPF00036F3D.namprd05.prod.outlook.com
X-MS-Exchange-CrossTenant-AuthAs: Anonymous
X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem
X-MS-Exchange-Transport-CrossTenantHeadersStamped: SA1PR12MB999086
X-purgate-ID: tlsNG-720697/1776669990-880D7161-8A467684/0/0
X-purgate-type: clean
X-purgate-size: 1440



On 16/04/2026 16:20, Oleksii Kurochko wrote:
> There are cases where it is necessary to know the next available phandle
> number in order to generate phandles for guest device nodes.
> 
> When a partial FDT (pfdt) is provided, special care is needed during
> initialization of free_phandle, as the pfdt may already contain a dummy
> interrupt controller node with a phandle assigned to it.  free_phandle
> must therefore be initialized to one past the highest phandle already
> present in the pfdt, to avoid collisions.
> 
> Since free_phandle may be needed for the very first guest node generated,
I would prefer next_phandle rather than free_phandle given that it always holds
the *next* phandle to be allocated. Free is implied.

> domain_handle_dtb_boot_module() is moved earlier in prepare_dtb_domU().
> The new call site also aligns better with the existing comment stating
> that domain_handle_dtb_boot_module() must be called before the rest of
> the device tree is generated.
> 
> Introduce get_next_free_phandle() to ensure that phandles allocated for
The name is a bit confusing. It reads as "get the next one after the current
free phandle" but it actually returns the current value of free_phandle and post
increments it. Let's call it alloc_phandle(). This will also make it clear to
use the return value of this function instead of directly kinfo value.

Other than that, all good.

~Michal



From xen-devel-bounces@lists.xenproject.org Mon Apr 20 07:29:54 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 20 Apr 2026 07:29:54 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1285428.1566461 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wEj4q-0005YK-Ku; Mon, 20 Apr 2026 07:29:52 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1285428.1566461; Mon, 20 Apr 2026 07: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 1wEj4q-0005YD-Hh; Mon, 20 Apr 2026 07:29:52 +0000
Received: by outflank-mailman (input) for mailman id 1285428;
 Mon, 20 Apr 2026 07:29:51 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92) id 1wEj4p-0005Y7-Pc
 for xen-devel@lists.xenproject.org; Mon, 20 Apr 2026 07:29:51 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wEj4o-00GP9O-Rp
 for xen-devel@lists.xenproject.org; Mon, 20 Apr 2026 09:29:50 +0200
Received: from [10.42.69.10] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <Michal.Orzel@amd.com>)
 id 69e5d5ee-2eae-0a2a0a5409dd-0a2a450ac0c2-0
 for <xen-devel@lists.xenproject.org>; Mon, 20 Apr 2026 09:29:50 +0200
Received: from [40.93.201.60]
 (helo=CY3PR05CU001.outbound.protection.outlook.com)
 by tlsNG-4011c0.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.1)
 (envelope-from <Michal.Orzel@amd.com>)
 id 69e5d5ed-56b3-0a2a450a0019-285dc93ce221-3
 for <xen-devel@lists.xenproject.org>; Mon, 20 Apr 2026 09:29:50 +0200
Received: from BN9PR03CA0118.namprd03.prod.outlook.com (2603:10b6:408:fd::33)
 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.20.9846.15; Mon, 20 Apr 2026 07:29:44 +0000
Received: from BN1PEPF00006001.namprd05.prod.outlook.com
 (2603:10b6:408:fd:cafe::d9) by BN9PR03CA0118.outlook.office365.com
 (2603:10b6:408:fd::33) with Microsoft SMTP Server (version=TLS1_3,
 cipher=TLS_AES_256_GCM_SHA384) id 15.20.9791.48 via Frontend Transport; Mon,
 20 Apr 2026 07:29:44 +0000
Received: from satlexmb08.amd.com (165.204.84.17) by
 BN1PEPF00006001.mail.protection.outlook.com (10.167.243.233) with Microsoft
 SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id
 15.20.9791.48 via Frontend Transport; Mon, 20 Apr 2026 07:29:44 +0000
Received: from SATLEXMB04.amd.com (10.181.40.145) by satlexmb08.amd.com
 (10.181.42.217) with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.2.2562.17; Mon, 20 Apr
 2026 02:29:44 -0500
Received: from satlexmb08.amd.com (10.181.42.217) by SATLEXMB04.amd.com
 (10.181.40.145) with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2507.39; Mon, 20 Apr
 2026 02:29:43 -0500
Received: from [10.71.194.215] (10.180.168.240) by satlexmb08.amd.com
 (10.181.42.217) with Microsoft SMTP Server id 15.2.2562.17 via Frontend
 Transport; Mon, 20 Apr 2026 02:29:42 -0500
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@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=E56Vt33SnUFM8KCgyHA1/0pLTE4a3SPRaGataScMOTUsY2CFUK7NTXr6LV2t3nInXhLPNdKf87XUQNbFyg3g5y4Is2RMBYbHd2vaU+3N9eRcOjRXhjcDN1Yde51mfbW8ZrraMZjZTZJjPE7b4ewpt5bOPogR+O6BTHtheUBfvkNNYviG9Pwz85DTDSkdZUT/y1OKyQuClGUCCGZUfHz2ZZRwdJd35SjhXWQiXuuDml688a/8qCnGrOAoGbzzA+8R6c+uErxQ0gxjM+PS+DgyVDmoe/hJIlMghy48kdbUCpay/dByS8JNwd6HQ2ayvlAs39mx7RQA/2n34PJ0f1yXEw==
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com;
 s=arcselector10001;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1;
 bh=oEGRxzNeGZqB8YZt0n2/T7bjh3hrYyF/Nm/QHv0KEOE=;
 b=d5MKmtiWslx23YHFZPwapGYdcGmT2ijkGvpjRO9vbcRVaJ7H93dOzvVMvk8OK5Q/PzsmSm6tezBuKiZzuhC+l7NLs9TI3r8COBdOkdB+Tcyfv5TsOoADRyNIJ7s+/92ufZPExIER5heYnk35qFCQJg3vw4XYNiciILnVzcDoXSy3SllYCeJcx49iQ2XkoflZqJKahigQ4YJ+aTbNtC6rwzJchNC/lxtqqw/pNkHzVmAoRyBefkHq3tKlCdL6HY+FtCfxt69NqmldrQ2ju6vAeAc6UQVIAYHV/akUcCC626Kvfi/cDrTxKtIbpbBimDnxS0Jl6F5MHGS93M+uWnnaeg==
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=oEGRxzNeGZqB8YZt0n2/T7bjh3hrYyF/Nm/QHv0KEOE=;
 b=vCw4nFK+j4L4XpPYZ+qIOmrrfat51uPdwH1PqJ4clqfPbdgv3eUG6889RaaV2UrKhLALeBzdV4ks7RTnDpIo/fMiuYsFY/7YZbvFh48FclmETvID/WL5BD/fKDLyw/GHgKLx/3dJQFiloRJ3xdT+tqo0rKRJdxytP6yr9OZaSEA=
X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 165.204.84.17)
 smtp.mailfrom=amd.com; dkim=none (message not signed)
 header.d=none;dmarc=pass action=none header.from=amd.com;
Received-SPF: Pass (protection.outlook.com: domain of amd.com designates
 165.204.84.17 as permitted sender) receiver=protection.outlook.com;
 client-ip=165.204.84.17; helo=satlexmb08.amd.com; pr=C
Message-ID: <b97cbb48-5bd9-4887-bb1e-24b7f001e5a5@amd.com>
Date: Mon, 20 Apr 2026 09:29:41 +0200
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH v1 2/3] xen/dom0less: pass kernel_info struct instead of
 fdt to make_cpus_node()
To: Oleksii Kurochko <oleksii.kurochko@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>, 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.pau@citrix.com>
References: <cover.1776340422.git.oleksii.kurochko@gmail.com>
 <a897d880738f5b3be2d6fc5ec2b6cab1fd8b9dc4.1776340422.git.oleksii.kurochko@gmail.com>
From: "Orzel, Michal" <michal.orzel@amd.com>
Content-Language: en-US
In-Reply-To: <a897d880738f5b3be2d6fc5ec2b6cab1fd8b9dc4.1776340422.git.oleksii.kurochko@gmail.com>
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: 7bit
Received-SPF: None (SATLEXMB04.amd.com: michal.orzel@amd.com does not
 designate permitted sender hosts)
X-EOPAttributedMessage: 0
X-MS-PublicTrafficType: Email
X-MS-TrafficTypeDiagnostic: BN1PEPF00006001:EE_|DM3PR12MB9416:EE_
X-MS-Office365-Filtering-Correlation-Id: 24bc89bd-01e6-4bb4-36a6-08de9eae97f4
X-MS-Exchange-SenderADCheck: 1
X-MS-Exchange-AntiSpam-Relay: 0
X-Microsoft-Antispam:
	BCL:0;ARA:13230040|1800799024|82310400026|36860700016|7416014|376014|56012099003|22082099003|18002099003;
X-Microsoft-Antispam-Message-Info:
	2q9Hggy6ssTC/4mDNkNtcsAHSxCDEJ0U5gjOSA9ic6v3SfqRhrEr6L4eq5aEPvt6PUjvJYq+UnPlWHCKvaKJ+bvSp43n7ldQ1UEu0wawssquB2J2wKH5lJ5Z1sU5k0aTxa3DxsRonFfyJXMIyhKTm/3avGiUfKjABPZ3weK4t9F3Ybprgs5EpyC5roNZlCyqXS1A3CJBZsWX7o90FVCkTUN2Ehuh5tDr7+1GGxD0EuaVmPpVAi+ddTzFGubwH/Kw721YIlEd++KGZBnSR3Y7RIBv4/rM0GK1P8kVYIu5ovul9NZ/1y8jZk4udUwBpT63vTHh+V7arvYlNzqDRLt+cI/yyldA3+7N3rOGqVjmkG8wNXKkntELDdRtl+/BOWE/93bk1KveVofg1M9xH2j+Rz5Or4Yq3uXqvEiIPKquL/PlKDsrvAL2y2scA2XlsC0iKJX8JRWSiGvlWg8x7JfZMgduxU4Am+rj6UukBgCst/2C5wcMNW3Bm1vpqHmH0cQP1Nr/TDctu416FpCd18MYFZBpCWes+geXLH++sitJavApIqYFNoskPAkq/jprYLyQZ195odptZFPcNhYo8Sj7JwxrZlJPTp1SEqWrKOAt6NmiL/dsYFwypzD8CUlyddckkdgTs1isOJA5hkbGeBfcxBoZUNx/IALQH6NKNIF5WeDlFJR3jNiQplP0TblRxat7qKctXxpfkA8dvpvxCnTzfwV7CtAL38ZoM4KPT1TXtADnZDbmSEh3fx5Tni+6ssiHkrEXk+lURRiZF7dDToWavQ==
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)(36860700016)(7416014)(376014)(56012099003)(22082099003)(18002099003);DIR:OUT;SFP:1101;
X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1
X-MS-Exchange-AntiSpam-MessageData-0:
	PBO32GGPdqKiYc16vhuXRMRCkIl0R2LTqnCjG7yvd4tf/ZZkWBHJXTMqyxD4JKKyr41y1qlSXeL9AycDStMgoGU8Kp0fNWSlKh8wNQDy0ISR5Ojqpwcgld++TK9y2RtxzAOad/cuPhbOlE+naaojlEqfe4eZFyA9EnCznywU8b1wilOmDioi50alr9DgbIQ8LTLD2i/YnwO5Xu2j80q7nSSQApROpL0ojdMlbjrfVdsn43aWqiulxkw8pBIRQCrM98jI2UJFGBZRMl0c6Yj52iojGNw3fdqac+bRIfw7JwCAbUW1u0egcuK7S1PyY5op9dxSj4NJFqkknp0RLy0oxjWGj/WJCejXyFaOE1V+QJoA4yMA64dr9nCfLVJudy80AjgLsGI1kLikU7X3w3lmtu+IV4baqldCwU4YOMgifzybOFlI9HE7m4PXS2iwW1tN
X-OriginatorOrg: amd.com
X-MS-Exchange-CrossTenant-OriginalArrivalTime: 20 Apr 2026 07:29:44.3658
 (UTC)
X-MS-Exchange-CrossTenant-Network-Message-Id: 24bc89bd-01e6-4bb4-36a6-08de9eae97f4
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:
	BN1PEPF00006001.namprd05.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-4011c0/1776670190-4596E8B7-C1DE077D/10/73395122804
X-purgate-type: spam
X-purgate-size: 1455



On 16/04/2026 16:20, Oleksii Kurochko wrote:
> There are two reasons of this change:
> 1. Align prototype with what other make_*_node() are passed.
> 2. A follow-up RISC-V patch will call get_next_free_phandle() inside
>    make_cpus_node(), requiring mutable access to kinfo->free_phandle.
> 
> Signed-off-by: Oleksii Kurochko <oleksii.kurochko@gmail.com>
> ---
>  xen/arch/arm/domain_build.c             | 5 +++--
>  xen/common/device-tree/dom0less-build.c | 2 +-
>  xen/include/xen/fdt-domain-build.h      | 2 +-
>  3 files changed, 5 insertions(+), 4 deletions(-)
> 
> diff --git a/xen/arch/arm/domain_build.c b/xen/arch/arm/domain_build.c
> index 60a7cbf915a5..6740da3d324b 100644
> --- a/xen/arch/arm/domain_build.c
> +++ b/xen/arch/arm/domain_build.c
> @@ -1164,7 +1164,7 @@ int __init make_psci_node(void *fdt)
>      return res;
>  }
>  
> -int __init make_cpus_node(const struct domain *d, void *fdt)
> +int __init make_cpus_node(const struct domain *d, struct kernel_info *kinfo)
>  {
>      int res;
>      const struct dt_device_node *cpus = dt_find_node_by_path("/cpus");
> @@ -1178,6 +1178,7 @@ int __init make_cpus_node(const struct domain *d, void *fdt)
>      /* Keep the compiler happy with -Og */
>      bool clock_valid = false;
>      uint64_t mpidr_aff;
> +    void *fdt = kinfo;
You're assigning kinfo to fdt pointer which is a bug.
Instead, you should do:
void *fdt = kinfo->fdt

~Michal



From xen-devel-bounces@lists.xenproject.org Mon Apr 20 07:52:40 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 20 Apr 2026 07:52:40 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1285442.1566469 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wEjQm-0000yE-Ew; Mon, 20 Apr 2026 07:52:32 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1285442.1566469; Mon, 20 Apr 2026 07:52: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 1wEjQm-0000y7-CE; Mon, 20 Apr 2026 07:52:32 +0000
Received: by outflank-mailman (input) for mailman id 1285442;
 Mon, 20 Apr 2026 07:52:31 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92) id 1wEjQl-0000y1-EJ
 for xen-devel@lists.xenproject.org; Mon, 20 Apr 2026 07:52:31 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wEjQk-002hnS-Ns
 for xen-devel@lists.xenproject.org; Mon, 20 Apr 2026 09:52:30 +0200
Received: from [10.42.69.3] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <oleksii.kurochko@gmail.com>)
 id 69e5db3e-5cb7-0a2a0a5109dd-0a2a45038604-0
 for <xen-devel@lists.xenproject.org>; Mon, 20 Apr 2026 09:52:30 +0200
Received: from [209.85.208.175] (helo=mail-lj1-f175.google.com)
 by tlsNG-33051d.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.1)
 (envelope-from <oleksii.kurochko@gmail.com>)
 id 69e5db3e-672d-0a2a45030019-d155d0afa877-3
 for <xen-devel@lists.xenproject.org>; Mon, 20 Apr 2026 09:52:30 +0200
Received: by mail-lj1-f175.google.com with SMTP id
 38308e7fff4ca-38dd9f0fdc6so39349401fa.0
 for <xen-devel@lists.xenproject.org>; Mon, 20 Apr 2026 00:52:30 -0700 (PDT)
Received: from [192.168.1.6] (user-109-243-69-121.play-internet.pl.
 [109.243.69.121]) by smtp.gmail.com with ESMTPSA id
 2adb3069b0e04-5a4187e7ca0sm2768205e87.65.2026.04.20.00.52.28
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Mon, 20 Apr 2026 00:52:28 -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=20251104 header.d=gmail.com header.i="@gmail.com" header.h="Content-Transfer-Encoding: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=20251104; t=1776671550; x=1777276350; darn=lists.xenproject.org;
        h=content-transfer-encoding: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;
        bh=TZ3eAnmcgaN5QC6piSgGEAj99CsjVfekQR5lOPQICjA=;
        b=i+Lm+tsyahg6V9w9Q1327V3Y+MKA7VYX5/PRrpFglNHbBS0H0dKblc8wucmHPeiIz9
         wUuEuJoIBqQQChyhE5CPWxrL4K641teSyp8kKnRSipDH6TdCqZjJOiJCETHpgZK4N0yO
         jCcthvqrpj7sbZDLwo2xxDX8qhahvTvv0sp8IcV/KNYr990CBiv8VUhZjTD6qhdTwQf2
         JjWJUNl2ttdv/71obQ3sI3oYHbiFjuiKYKMduOeL3KlkI6dM3wq92HZ6D53XY7UnbYXf
         hyXB/HHPoLFJcVCVevCrO1zxi2GLHVSNBp4M+RGV3O9nWn2rdpITOU36fDxW1aFs7iAx
         d34Q==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20251104; t=1776671550; x=1777276350;
        h=content-transfer-encoding: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;
        bh=TZ3eAnmcgaN5QC6piSgGEAj99CsjVfekQR5lOPQICjA=;
        b=aDDXOiaYtz/aueiguS/SPNm9JqOafHc4uCqmc3J1nXdUAPD+50kvCEHNChkYjlpmr5
         dKE4Fo9YG4ohXOI8oTws5VtI+PFoMi8+Onq8I5w7IE3xAqmlqoAzneS+1K3ee6fgN82d
         Ery2S0N/vP1PXFiLvA0dVOktVMp59xUgOWTufKO0ijx5BQvsMWpk9/h5FOD4wxKhNI25
         sB5QsfMF6TQ3jBST0LmqI5riO7scw49iWtJKobJpHN5kOwVOkjpHQ90HFs/N99R95axL
         DUGhmr7wFoEiZoLYerd9j8xaMiREVw1MKzeORdG6lEeetQg+8O8qzH6k7olHgr+aKjwS
         byQQ==
X-Forwarded-Encrypted: i=1; AFNElJ8z8FhXvYvC5ul26Ts2D3NvkouEMTsgf7GqZfc8ktr3LTgylNrc1XqmSMr49zNaplGeYBeJUk+EimA=@lists.xenproject.org
X-Gm-Message-State: AOJu0YykkM7XkqqEDyg2E/JFcjp45Y5ZN+pyu1VzCUb+HpDWEtAYYYZO
	NhSNQLMcju5/8h4pnXKXx8KVNXL+Rm37I6RtLILVqu5DwYbU0P0IojMF
X-Gm-Gg: AeBDievc2HDhEMc+vXzMu6XD+5iVRIK4z2ypcR6C0noMt00/K0g6rwEKRRB34NyngpC
	998joZTOfCXIGnAf+QHSiLmYBgdDMrV9KVOaK4kc/XAo+Q0gZ+UstJu72dlbPaT9GKWN3wp7FAg
	xjoavdLt/bIztLySXR1aPfLDt7f4IBO+gKp0OTfO2WB1Hol8cK7ZxLLC3358DxI61DwdTqLQi2t
	tVeHNIcixJuf/+RKSb9IdFcQxrxi/OgxBHQ+g8DKSt7J5Ji9mT736iQE+9c9b7mc+CLZyghu6zP
	u1bvqow8YltPKJVZyttUa+MXEOp+8uysp42Fb4ZsTAWoTPx7oFV1jrS4JyKdwVxgrn8XQccAMIc
	2BoSCJT1WOH5Gz21WuQUSg0TG9tGrQBVmAfIrNK+1Y58c6k+heZF3G+ulf1V0RLTTJ7AsFVNLkO
	NXvbx4hvcU1TqcTil+VigZb7zsRoTE/KPB1L6AleLfLQ3vzRWSaBXn31YJ2UtuY33RGnS5LYCpj
	+Lubbh+DldH7g==
X-Received: by 2002:a05:6512:3095:b0:5a3:4692:61ce with SMTP id 2adb3069b0e04-5a41716dad3mr3796433e87.1.1776671549287;
        Mon, 20 Apr 2026 00:52:29 -0700 (PDT)
Message-ID: <b00858a5-c989-482a-bce0-af82eca17e31@gmail.com>
Date: Mon, 20 Apr 2026 09:52:27 +0200
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH v1 13/27] xen/riscv: add basic VGEIN management for AIA
 guests
To: Jan Beulich <jbeulich@suse.com>
Cc: Romain Caritey <Romain.Caritey@microchip.com>,
 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.pau@citrix.com>,
 Stefano Stabellini <sstabellini@kernel.org>, xen-devel@lists.xenproject.org
References: <cover.1773157782.git.oleksii.kurochko@gmail.com>
 <f358325514c91c540e0edf992ca51414a1964fe0.1773157782.git.oleksii.kurochko@gmail.com>
 <09fed304-685c-46a9-9159-72baa1721224@suse.com>
 <4b977410-8d24-41c3-9c83-7d95637ddea3@gmail.com>
 <314c064b-88eb-497a-9022-2013125d63a9@suse.com>
 <a0fe3904-7fb9-474c-9a97-6aca2c2dc50b@gmail.com>
 <718fe598-884c-4723-938f-7f783445771f@suse.com>
Content-Language: en-US
From: Oleksii Kurochko <oleksii.kurochko@gmail.com>
In-Reply-To: <718fe598-884c-4723-938f-7f783445771f@suse.com>
Content-Type: text/plain; charset=UTF-8; format=flowed
Content-Transfer-Encoding: 7bit
X-purgate-ID: tlsNG-33051d/1776671550-2957F938-0BCC316F/10/73395122804
X-purgate-type: spam
X-purgate-size: 5831



On 4/17/26 4:07 PM, Jan Beulich wrote:
> On 17.04.2026 13:34, Oleksii Kurochko wrote:
>> On 4/16/26 2:21 PM, Jan Beulich wrote:
>>> On 13.04.2026 16:42, Oleksii Kurochko wrote:
>>>> On 4/2/26 12:03 PM, Jan Beulich wrote:
>>>>> On 10.03.2026 18:08, Oleksii Kurochko wrote:
>>>>>> @@ -14,12 +27,109 @@ bool aia_available(void)
>>>>>>         return is_aia_available;
>>>>>>     }
>>>>>>     
>>>>>> +int __init vgein_init(unsigned int cpu)
>>>>>
>>>>> If this needs invoking once per CPU being brought up, it can't be __init.
>>>>
>>>> Yes, it is going to be called inside the secondary CPU bring-up function.
>>>>
>>>> __init sections are removed much later, after all CPUs are brought up,
>>>> so it looks like that at the moment when secondary CPUs are being
>>>> brought up, __init still exists and can be called.
>>>
>>> No. And I said so before. See XEN_SYSCTL_cpu_hotplug (and ignore it having
>>> "hotplug" in the name, but merely consider that you can take CPUs offline
>>> at runtime, and later bring them online again).
>>
>> Thanks, now it makes sense to drop __init.
>>
>>>>> Also - static?
>>>>
>>>> It isn't static because it will be called inside the secondary CPU
>>>> bring-up function.
>>>
>>> As it doesn't need calling from the outside for the boot CPU, it's not
>>> obvious why it would need calling from the outside for secondary ones.
>>
>> I think I am confused here by what do you mean by "calling from the
>> outside".
> 
> As in "from another translation unit".
> 
>> It should be called during boot or secondary CPU initialization (if AIA
>> is used), right?
>> Then considering that VGEIN-related stuff is connected to AIA then
>> vgein_init() is expected to live in aia.c and considering that it wants
>> to be called by secondary CPU boot code it can't be static.
> 
> Putting my question differently: Why is there a difference here between
> boot CPU and secondary CPUs. My (general) expectation would be that either
> the function wants calling from outside of aia.c in all cases, or it could
> be static (now and later).

Generally, if update prototype of aia_init() to receive cpuid argument 
then it will be enough to make vgein_init() static and then all others 
will call aia_init(). The only reason why I tried to have vgein_init() 
non-static is that in the case of secondary CPU there is no need to call 
second time anything (at least, now) from aia_init() or re-init 
is_aia_usable variable.

But I can agree that probably it would be better to make vgein_init() 
static now and then use aia_init() everywhere it is needed just for the 
case that if something new will be added what should be called for boot 
and secondary CPU won't be missed to call properly. And I think it is 
fine just re-init is_aia_usable without any additional synchronization.
As an option I could check at the start if is_aia_usable is initialized 
by checking if it is true and if it is then just call vgein_init() for 
that cpuid.
Would it be better?

> 
>>>>>> +{
>>>>>> +    struct vgein_bmp *vgein = &per_cpu(vgein_bmp, cpu);
>>>>>> +
>>>>>> +    csr_write(CSR_HGEIE, -1UL);
>>>>>> +    vgein->geilen = flsl(csr_read(CSR_HGEIE));
>>>>>> +    csr_write(CSR_HGEIE, 0);
>>>>>> +    if ( vgein->geilen )
>>>>>> +        vgein->geilen--;
>>>>>
>>>>> I don't understand this. The "len" in "geilen" stands for "length", I suppose,
>>>>> i.e. the number of bits. Hmm, the spec itself is inconsistent: "The number of
>>>>> bits implemented in hgeip and hgeie for guest external interrupts is UNSPECIFIED
>>>>> and may be zero. This number is known as GEILEN." This may or may not include
>>>>> bit 0 (which is implemented, but r/o zero). Then saying "Hence, if GEILEN is
>>>>> nonzero, bits GEILEN:1 shall be writable in ..." suggests 0 isn't included, but
>>>>> that's not unambiguous.
>>>>
>>>> But they explicitly wrote that: The least-significant bits are
>>>> implemented first, apart from bit 0. So bit 0 is explicitly excluded.
>>>
>>> Fine, but not including it in anything named *LEN feels - as said - ambiguous.
>>
>> Agree, it is. I just tried to follow the spec naming here. But I am okay
>> to rename it to max_gein, for example.
> 
> Perhaps better stick to spec naming, but consider adding a clarifying comment.

I will add then above geilen field in vgein_bmp struct the comment:
  The least-significant bits are implemented first, apart from bit 0

> 
>>>>>> +    /*
>>>>>> +     * All vCPU guest interrupt files are used and we don't support a case
>>>>>> +     * when number of vCPU on 1 pCPU is bigger then geilen.
>>>>>> +     */
>>>>>
>>>>> This wants checking in vgein_init() then. CPUs (beyond the boot one)
>>>>> violating this should not be brought online.
>>>>
>>>> It'll be nice. But we can't know how many vCPUs will be ran on pCPU when
>>>> vgein_init() is executed.
>>>
>>> I don't understand: How does it matter how many vCPU-s will exist later on
>>> (and will run wherever)?
>>
>> IIUC, you want to check what is mentioned in the comment in vcpu_init().
>> The comment says that it is checking that number of vCPU on one pCPU
>> isn't bigger then geilen. To check that we have to know an amount of
>> vCPU potentially will be ran on pCPU.
> 
> Well, not quite. I don't understand at all why the number of vCPU-s in
> a system would be limited by any pCPU property. I don't think we have
> any such constraint on x86, for example.

Then I will just drop this comment and correspondent ASSERT() and just 
return vgein_id in the case when there is no available h/w VGEINs to 
mark that h/w should use s/w guest interrupt files:

     if ( vgein_id > vgein->geilen )
         vgein_id = 0;
     else
         __set_bit(vgein_id, bmp);

~ Oleksii




From xen-devel-bounces@lists.xenproject.org Mon Apr 20 07:57:00 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 20 Apr 2026 07:57:00 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1285453.1566478 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wEjV3-0001Ul-VQ; Mon, 20 Apr 2026 07:56:57 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1285453.1566478; Mon, 20 Apr 2026 07:56: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 1wEjV3-0001Ue-Sf; Mon, 20 Apr 2026 07:56:57 +0000
Received: by outflank-mailman (input) for mailman id 1285453;
 Mon, 20 Apr 2026 07:56:56 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <jbeulich@suse.com>) id 1wEjV2-0001UY-6g
 for xen-devel@lists.xenproject.org; Mon, 20 Apr 2026 07:56:56 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wEjV1-00GVMR-J5
 for xen-devel@lists.xenproject.org; Mon, 20 Apr 2026 09:56:55 +0200
Received: from [10.42.69.11] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <jbeulich@suse.com>)
 id 69e5dc2f-e002-0a2a0a5209dd-0a2a450b9c36-46
 for <xen-devel@lists.xenproject.org>; Mon, 20 Apr 2026 09:56:55 +0200
Received: from [209.85.128.42] (helo=mail-wm1-f42.google.com)
 by tlsNG-42698a.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.1)
 (envelope-from <jbeulich@suse.com>)
 id 69e5dc47-212f-0a2a450b0019-d155802ad96b-3
 for <xen-devel@lists.xenproject.org>; Mon, 20 Apr 2026 09:56:55 +0200
Received: by mail-wm1-f42.google.com with SMTP id
 5b1f17b1804b1-4852b81c73aso23034965e9.3
 for <xen-devel@lists.xenproject.org>; Mon, 20 Apr 2026 00:56:55 -0700 (PDT)
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-488fc14a61asm249323485e9.15.2026.04.20.00.56.54
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Mon, 20 Apr 2026 00:56:54 -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=google header.d=suse.com header.i="@suse.com" header.h="Content-Transfer-Encoding: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=1776671815; x=1777276615; darn=lists.xenproject.org;
        h=content-transfer-encoding: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;
        bh=t+goIEjmfAfsZC41olSoOfXjLRzesyfBIZZI2N84MUc=;
        b=GvoJqwoP8ZW7OO78tEGN7eI+S/2F8Ai9XtmLWSWmiKR9qoBn+Nd0a/xKrVfHjazKGn
         pDeXuAIPwrGiz8LmsSVxTruXg8iqNbpwFiiHBEm/UhyhU63uU34/XDbiedE4TFPVYnuB
         n5lqgE+4WfecoTq3V4hvfCTCzDTzRTtxiJsM6FWqDscJ6xGm2HoNHdVOi3tVdBfTPmAM
         eh8jDTYPjGk5F4T4L4yAkjuPrf2fheXhNIWKZ14CXQymWqmP+xAQz94PMP7CvIzC2wvv
         y6Ha6ow4sEUtQtZQy4z1ZO4fRhjZ7EtQk9EA84jMLe7D/wdSPxH+zUFLOB4+g6jK60G0
         f2xA==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20251104; t=1776671815; x=1777276615;
        h=content-transfer-encoding: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;
        bh=t+goIEjmfAfsZC41olSoOfXjLRzesyfBIZZI2N84MUc=;
        b=QSEr+1gW1DJ7YB9AthKXVMUMfoC8XMxkGepZC6JyJ5+dckVMBGWBR4OmKehPSiBDXG
         0AsCrcwFhMxiTn+yVbaHBtYAKtnJ5hXT1MxgEgE4rsdMINArK/5/3uBhD7kmQ79jKkA9
         hfGDAEfwtGwk5GnshKoI6f+5mJR2MkqoVNTo/grKirO65waKhJQ/36i6Z4XAaSBW84Wk
         uuipl+CI1kVaxR3AA49L2kM9INFOQhp1Naz69JQwORQEfF2DAVWbJdmttRzCuJ5hecsL
         t5cCrW4tyXsn+wY+9B7/kprBIrV28J1GahBlXA8es9Zv54dkCOSpMdSbHT2qKEMO7+tm
         N9HA==
X-Forwarded-Encrypted: i=1; AFNElJ/dTg64utHjFcv9V3lbN0JziChG6kN/xXCH5TppuLAl+G5fVUzqG+LM9mhNtTg4jg4EVuEDhCXuSGQ=@lists.xenproject.org
X-Gm-Message-State: AOJu0YxTpalmD6fH9SuzAttyBv8xiK2C68H6DFa9FcZoFOK0GmcgtP4F
	++3cVx37pC8ye8Ib+hi1rOgKAUM5PAMhVVxtnlxpg0U+Rp4f3FeohNKkm8NPcK74qQ==
X-Gm-Gg: AeBDietLSIxbuisvXHVH6fAWJ61Pfwi+et0MdfEwTljtD6aQf6kxk8IChqiGMMoWKfA
	7MHPyl0TWcHmqm6li4h+dU7vrJ2I1V1eaQvAurHNlnBKzYT37WHCDah/XrJpsm+NR4PmoeTJGtn
	uICtdoq3QC8mbBHeYQf73o6r0/4oPqisaSAmXv07GC+FAZWZZjYvnyDXgJjNwe7suJFT7bktJkA
	hQ1xMVXz/ozuqjskhMAYdF4RBAMcp3OYAuF1urXodxx3+hwpDsCX7um/MHTpdZswzEEx1/PxlYm
	vxTgI2fiDX5e8FjheovLdeowmgbTXw1kc4cGF1R6fh7pbDz/o6uY/x2dxr8Q7dIIVpyxMPjFM9i
	vD9qpOmnSPKYAKWVCrj+F9ZyiVVLweA0r3YvX4kWzLuDmI/EyrXou2cOig0vDPTiHltPoAxxRY7
	vry93fyDm0c5gsSN9CXKhdoMxVBQmz9dbqk3rRsu2ohNOUTNtVu3jlLCo2WZa6lOV8qWRd5Yq3P
	zdpkrz/CCXEIz1TMoanpEWmlw==
X-Received: by 2002:a05:600c:4707:b0:488:bfc3:efc with SMTP id 5b1f17b1804b1-488fb6e8eb5mr174782245e9.0.1776671814787;
        Mon, 20 Apr 2026 00:56:54 -0700 (PDT)
Message-ID: <405b5653-4df9-4ee0-b6e2-ba7c4a5efbba@suse.com>
Date: Mon, 20 Apr 2026 09:56:56 +0200
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH v4] xen/riscv: allow Xen to use SSTC while hiding it from
 guests
To: Oleksii Kurochko <oleksii.kurochko@gmail.com>
Cc: Romain Caritey <Romain.Caritey@microchip.com>,
 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.pau@citrix.com>,
 Stefano Stabellini <sstabellini@kernel.org>, xen-devel@lists.xenproject.org
References: <5285075f24cd2a2c5566b2a7724198d34aab51c5.1776354739.git.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: <5285075f24cd2a2c5566b2a7724198d34aab51c5.1776354739.git.oleksii.kurochko@gmail.com>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 7bit
X-purgate-ID: tlsNG-42698a/1776671815-252B9F3B-5157A77A/0/0
X-purgate-type: clean
X-purgate-size: 2022

On 17.04.2026 09:24, Oleksii Kurochko wrote:
> --- a/xen/arch/riscv/include/asm/csr.h
> +++ b/xen/arch/riscv/include/asm/csr.h
> @@ -32,6 +32,20 @@
>                             : "memory" );                        \
>  })
>  
> +#ifdef CONFIG_RISCV_32
> +# define __csr_write32h(csr, val) csr_write(csr ## H, (val) >> 32)
> +#else
> +# define __csr_write32h(csr, val) ((void)(csr), (void)(val))

In order to be able to spot issues in 64-bit builds, how about

# define __csr_write32h(csr, val) ((void)csr ## H, (void)(val))

?

Apart from this, no matter that it was Andrew to suggest this, I'd like to
(once again) point out that identifiers starting with two underscores are
reserved. I don't see why a single underscore wouldn't do here. Or
alternatively csr__write32h().

> @@ -279,8 +299,6 @@ static int cf_check sbi_set_timer_v01(uint64_t stime_value)
>      return sbi_err_map_xen_errno(ret.error);
>  }
>  
> -int (* __ro_after_init sbi_set_timer)(uint64_t stime_value) = sbi_set_timer_v01;
> -
>  int sbi_remote_sfence_vma(const cpumask_t *cpu_mask, vaddr_t start,
>                            size_t size)
>  {
> @@ -360,10 +378,9 @@ int __init sbi_init(void)
>          }
>  
>          if ( sbi_probe_extension(SBI_EXT_TIME) > 0 )
> -        {
> -            sbi_set_timer = sbi_set_timer_v02;
> -            dprintk(XENLOG_INFO, "SBI v0.2 TIME extension detected\n");
> -        }
> +            set_xen_timer = sbi_set_timer_v02;
> +        else
> +            set_xen_timer = sbi_set_timer_v01;
>      }

Sadly this isn't quite equivalent to sbi_set_timer having had an initializer.
I would have wanted to suggest to use a constructor function, but we call
init_constructors() even later than do_initcalls() on both Arm and x86 (we
don't call the latter at all on RISC-V so far). Might it be necessary to
introduce sbi_early_init(), called very early during boot? Else how do you
guarantee no accidental use of the variable before it is first set?

Jan


From xen-devel-bounces@lists.xenproject.org Mon Apr 20 07:57:32 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 20 Apr 2026 07:57:32 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1285462.1566489 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wEjVc-00020u-7t; Mon, 20 Apr 2026 07:57:32 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1285462.1566489; Mon, 20 Apr 2026 07:57: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 1wEjVc-00020n-3b; Mon, 20 Apr 2026 07:57:32 +0000
Received: by outflank-mailman (input) for mailman id 1285462;
 Mon, 20 Apr 2026 07:57:30 +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 1wEjVa-00020f-BO
 for xen-devel@lists.xenproject.org; Mon, 20 Apr 2026 07:57:30 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wEjVZ-006KBn-Np
 for xen-devel@lists.xenproject.org; Mon, 20 Apr 2026 09:57:29 +0200
Received: from [10.42.69.11] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <ross.lagerwall@citrix.com>)
 id 69e5dc58-5cb7-0a2a0a5109dd-0a2a450bcc7e-30
 for <xen-devel@lists.xenproject.org>; Mon, 20 Apr 2026 09:57:29 +0200
Received: from [40.107.209.47]
 (helo=PH8PR06CU001.outbound.protection.outlook.com)
 by tlsNG-42698a.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.1)
 (envelope-from <ross.lagerwall@citrix.com>)
 id 69e5dc67-212f-0a2a450b0019-286bd12fa6f8-3
 for <xen-devel@lists.xenproject.org>; Mon, 20 Apr 2026 09:57:28 +0200
Received: from CH8PR03MB8274.namprd03.prod.outlook.com (2603:10b6:610:2ba::5)
 by LV3PR03MB7504.namprd03.prod.outlook.com (2603:10b6:408:19a::7)
 with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9818.32; Mon, 20 Apr
 2026 07:57:25 +0000
Received: from CH8PR03MB8274.namprd03.prod.outlook.com
 ([fe80::ebe2:32c1:d2be:a096]) by CH8PR03MB8274.namprd03.prod.outlook.com
 ([fe80::ebe2:32c1:d2be:a096%7]) with mapi id 15.20.9818.032; Mon, 20 Apr 2026
 07:57: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=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=l9t4++CW42blXUCmvYluEzOxzBNvApAg/9+vTg4O5HmquPbJ952jnAnf6qKFqEksUMyuwMqL4JiF/cRoxDE8fD2usr15gp7BrLffMTOnzqCBUoX3Td8p1sVOMGIIevCkdb7b5bwGpHtq659YZ4BOW6X2PDE1eDrsNLm8EIxqcvvVD6wG7SigLbocnxvcfyNluwn1H5Vf8J3VJ1VOzpq6n28aZPyFyl10LTyPuQZEney0U0TU0SCUnVAkc1n2yS/R6I+QPZOEN5FJIi5Dl+JFYqNXUg1DOi8Rijd6m31ne1qkMLJQ7S0rpPkuNNYDmWcg2ojhTBBJaLeI92OFjNhWGA==
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com;
 s=arcselector10001;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1;
 bh=1U3C+MeKhh6Xwgw3INE79vNzEqtjx6GNUx+rMjSJ9DY=;
 b=Yhmj/208JT7VYDvIL08Cv+bAkHfQZ2UaO7136mHQWG7U3Pxn4lOG1DoyuT80eR/SymmamG71dueqANS90h+l+Z/SgbsIoyJ8pJlNC8OXfOijmna71Qy/wXV8e0epBSsEfpg6JeZjOtewTygrki5pSPl9TSnGy5kI12Dy4opg903PTPY6NGv5CXz5wEk9s8ad+uHUSvc6sS4/duhPg8NKMqc0/KamGzZQTQj0pg2sqjg8B/RopCU0kHVHeb0rdY+3seHYNTHoviDWdFT7/Gt0vOEtAG4I7KlMc3fV+LOWrkg/WUm7bhjXrlhZ/k1NA7aS4y7CcLe0eXKqJvTzormE5g==
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=1U3C+MeKhh6Xwgw3INE79vNzEqtjx6GNUx+rMjSJ9DY=;
 b=qBE45lIGwg+E034Nzb+MbVIEPJ0swKuRjGXozKQHBSKh+evxUg4nbRprsb0MOWktbmfmaUTbknEC+HlG6UfHXocE0Gv5oC37JuyJGliHqUsxshVcbsYmuKI6y3ZHFfVxCcNMjzCxGMi9Avgtw/WZX+rTJsCqX0rNYCb/lheDYf8=
Authentication-Results: dkim=none (message not signed)
 header.d=none;dmarc=none action=none header.from=citrix.com;
Message-ID: <139eedf5-b30a-4978-bbab-9d400e7ff9cc@citrix.com>
Date: Mon, 20 Apr 2026 08:57:20 +0100
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH] x86/boot: Force error checking for reserve_e820_ram()
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.pau@citrix.com>, Teddy Astie <teddy.astie@vates.tech>
References: <20260417160828.526063-1-andrew.cooper3@citrix.com>
 <85625a6f-8d04-4863-8f74-461c9a85464f@citrix.com>
 <2688ce14-9d25-4374-83a7-dea3ee508f71@citrix.com>
Content-Language: en-US
From: Ross Lagerwall <ross.lagerwall@citrix.com>
In-Reply-To: <2688ce14-9d25-4374-83a7-dea3ee508f71@citrix.com>
Content-Type: text/plain; charset=UTF-8; format=flowed
Content-Transfer-Encoding: 8bit
X-ClientProxiedBy: LO4P302CA0040.GBRP302.PROD.OUTLOOK.COM
 (2603:10a6:600:317::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_|LV3PR03MB7504:EE_
X-MS-Office365-Filtering-Correlation-Id: d9e44330-a661-4fd9-a10f-08de9eb27566
X-MS-Exchange-SenderADCheck: 1
X-MS-Exchange-AntiSpam-Relay: 0
X-Microsoft-Antispam:
	BCL:0;ARA:13230040|1800799024|376014|366016|56012099003|18002099003|22082099003;
X-Microsoft-Antispam-Message-Info:
	mhjVIxdgAz5IDC2RgtdGGAld1yZ6vjDUH9m32ZmBg9UmoPw6B06KdGd7dNuRyKsko3CbBZxASgZDN3ZV43G5j9f+2PmUloclGHEnQgQlWegM58gRLiKahUr88XviQf7TaQwAoPK2Go91pLDux066sDRgcq7uN1Bt0wHjuLIN/a3GA7PN3uJqskobWbNr+M/balOTbc2j7UxgSQbTU4vx2EiLfEMGuZDh1gQx9HyU/jt4f+78UXdWnsz6dwRngcC7YEvHAEVTb6r7PWO8MwDzo2DoiLO7lpCoF9ijDNFGxOPR4veFavAFai8iUqpDagxjgsF+Tz3f88Tv0uomEqdYlitX9zVBrWuAe1wi3PtyAbOyNDoxRaFaxfg6e/KXGxkyzHBPc6kiwGDW5Emp1VJXkUTaVnVcWbmDdv6S9TYJdqW4nzGICyMQNtc/iQXGD5qA2oDTw5MdOxrQVsrPMAJOjn2IvXPHC0g8fQ3Ml5T8NLrhEQJ75bHTIMK83ppN+Zox/AjRYyPDhYonLYbEeq8y/UckGkgaqZEewX5kcY4Jqo/kfjxv9MQgOqMrNMELFLxL25o1XQSoKjeUpZhcFxMEHEfysXzno5BgBtMPltH5xlqyul7vkuQjJLpVFLF5YvJ643isBSFqMenC7aHIWxvlulnUePS5PIrKM090b7YEEQN3+4BQIp9NmaTTxpSDrjc8eYg709PCREkSbughD+k4/c7PcLoAS2+atUk4uFB/ihM=
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)(1800799024)(376014)(366016)(56012099003)(18002099003)(22082099003);DIR:OUT;SFP:1101;
X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1
X-MS-Exchange-AntiSpam-MessageData-0:
	=?utf-8?B?WEk4VjNkUUtwNHZsazl2WW1acGNGRENvdzEzcmM5NlVVbnJXSW81NE5tVDZq?=
 =?utf-8?B?MDZ5TlhwU1lKa0gxQ3JEY3NMZWJMMHVINE40TFBjdDducG1RNDZYKzlDc2xF?=
 =?utf-8?B?N0JhS0c4cVVyM0VBQUhxSjFlVVpTd3VYTVl3ZEc1WU52WnBDRlRHMWxsL1lC?=
 =?utf-8?B?SDR5S2pNK2VSZjBSWkR2ckZ5VFVyQW94bHZPY2Z0V1FHRTdjUlNuZ3JJSDFj?=
 =?utf-8?B?ZlU4aDdlb05FdmQ2Q3pCL1RLa0dqdmxTU3NyOFAvaWlJL05PMkJUZHJ1b200?=
 =?utf-8?B?Q2NNN1RmSTdjYlhVQkxhZ2tZWFhTNkRHTkFvVEtBN1NkdUt1RHRTNUlJYkt1?=
 =?utf-8?B?WFY2TXBJV095N1lQSy9KNVAxQWdoWTR2STZaalI3WmQxYU9ncTNwRC9Xd25t?=
 =?utf-8?B?cXhhK3FYSHNEVWxwZjc0N1hIWElSeDZQcWNlRTNPdFpJQWcyTzlWR1N1VHZI?=
 =?utf-8?B?Lzl1VGFadFg1azlpWitmODZER3h3UW5CbTFyWEJzUHFWU05qcHFLNUlJVGUz?=
 =?utf-8?B?M3ZhQWFaZnNSQjRVMGF2aXNtSm80Vm1qclgyb2J5N0VacjV5ZFVXTEZjazZI?=
 =?utf-8?B?VmR2OWFPTGNXWm5ML0tOenpqOXhXbzJQYVV3Uk1NNTI5U3NuaGdzcmM1dGNw?=
 =?utf-8?B?cWtQOWNPZHJjKy9lekpLTnpjR2JvZk5QWFFqbTlGRFdyRFdSbndkUzZGS3Yv?=
 =?utf-8?B?dERzOUtOWFNXdmFvaWRNb2VXQ3RNZGZ6ZG1lZUFSZkxZdXczQWo5VUQxRVN5?=
 =?utf-8?B?cEpVVUk4cytiOFV0RmNpM1FxR2R0aEZXV3JMaTNBTjNDa3RFT1dYUWVVSVV1?=
 =?utf-8?B?QjlRRGs2dDZPQ3Y1SE8wUXlkTkRzM0IwVDI1cEZGbGt0NjRrajc3N2FwRE5s?=
 =?utf-8?B?Q1B6bXJxdGw3dUJ2UklZaHo3T3FQSi9DN1VzZS9vR0lJUzNtdEhUYVFFZHVZ?=
 =?utf-8?B?aTljWkkvSmNsT1dGWmREakxKaHpESitWVjc5bHhlWVczNFhnRTQ5bTZhMTBi?=
 =?utf-8?B?S2JaekQvSFkzeWFvRVVMcm56VDFBK2RXYm1vc0tCWDlCc01iNVVGWjFQMUY5?=
 =?utf-8?B?SnhjQWlieUNDTVJ4ZmNkUFVXWXVLVGdIN25xZTVlcDNTSlg5THlDc21pWGox?=
 =?utf-8?B?QmdtK3lyTFpjZitlZy80T0FMR2FZSy9vTDkxMGgrY3lkUUVvK2NkaGp4cFNH?=
 =?utf-8?B?NFg0YWJYOUxuUnlJd0lmbVdBVlNqVVl6K0ZKQUxqN2M2TzJFTTBGbEc1U2U2?=
 =?utf-8?B?RE1GazlSR3k0Vk1nTUJMVU1MYVRCUFZIaVV2MnlSRmw5aGdkbHMyNWoySkJu?=
 =?utf-8?B?dkJtc0pMZmRPcVpoVjgxTGZzR2JHMHFDZkE1cElacmJ1TzJaVTBwenZVNVZ5?=
 =?utf-8?B?ZkdoanZneEFERCsyeWd3MTBUSlRXc3NMQ293TXNmcmgyQmkzaGV5NXlabDFU?=
 =?utf-8?B?SWR2MG5SVHg2VEkwemUvZnN3K0syblJkZjNxd05vTjZETVBuMzNBaGFYNm8x?=
 =?utf-8?B?UzVGeGtJcmlIY3J4ZW5RSkRBZGlFRGVJVmtTaCtzSXd4aFhYTzkrL08rdWRl?=
 =?utf-8?B?SVhNN2MwUGZjNVdMaUVFNUswTTV0K1lUbGMvay9lVGwzbytuRU5mQmFkU1dr?=
 =?utf-8?B?Qm5uZVBkSjArUmMwdlVUdEwreUJJWm5QN25JTGxkSCtFdEtaLzRZWVpSZCs2?=
 =?utf-8?B?bkcwS01ZRlAyc2g1eVA1Snpnd0xjZEpzWHlTV1ZLaWxrM01tQ3pFU3VhcHhy?=
 =?utf-8?B?NTZpR2NaNWNYemMwbkt4YXgrRTlNVkxQRFFpYzd2YS9yM0Z3N09HSzhJZ3J6?=
 =?utf-8?B?NzJraVZTL0poa0phVUVNcVJTZWNwamZIdWJxMzVWM3h0SjZqQ3Z3MHBzdEc5?=
 =?utf-8?B?ZkMrazdrQzgvdVRIQy94eU5FSThKY0lzbTVYam9hcUVqQWxReS92RWg3bXN5?=
 =?utf-8?B?ekpnYThOY0dydFV6QXloU3ptbzc4UlhIOEZqQUNIamdaeHZCV3RVTDAyZnEw?=
 =?utf-8?B?U2xKMktKUWJROHBHVFcvOFdTQVAyRnBhcE52d2NFZHNWZmtNU0hwZnZVY3R1?=
 =?utf-8?B?Z0tIWnNkLzE3QjBiWmZZSjBWRVFGcEpMZ05qRGdQMUJZa0UzOTIxRmN3VHhv?=
 =?utf-8?B?OHhadXpxYS9EUUMrOFljSHh1aGhtdmZYMzhGaWMrSGJ2aU9RRDFibEJGM3Nk?=
 =?utf-8?B?VnhlUjZwL0VDWUNkL0FsUml5U1NvcXNjd0t5K1dpank2WWt4SGwxbFYwVHhT?=
 =?utf-8?B?M1lwcy9WTm4vcWx5K21jQ002eHJKU04xMEg4SWV5d0YxY2VjODR2UlhmTmo2?=
 =?utf-8?B?UzFtODE0UTRnVXFWTWpOQjB3enJJM01sdm81UVg3KzArdXJDTnJqSGFPaGVl?=
 =?utf-8?Q?7wkjgJyzpF1EzJ/4=3D?=
X-OriginatorOrg: citrix.com
X-MS-Exchange-CrossTenant-Network-Message-Id: d9e44330-a661-4fd9-a10f-08de9eb27566
X-MS-Exchange-CrossTenant-AuthSource: CH8PR03MB8274.namprd03.prod.outlook.com
X-MS-Exchange-CrossTenant-AuthAs: Internal
X-MS-Exchange-CrossTenant-OriginalArrivalTime: 20 Apr 2026 07:57:24.6287
 (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: D96sQvBnZR4h3wo2muAtH4HJ/5UM4BvcTuqb2e+2nfxJxG/8QUXfa00fw98JvLI33SFQFQ5KxG63dLLYoHPXahTCCKWZlf1TSlgOtBcCz3U=
X-MS-Exchange-Transport-CrossTenantHeadersStamped: LV3PR03MB7504
X-purgate-ID: tlsNG-42698a/1776671849-7D165F3B-DCBE7D72/0/0
X-purgate-type: clean
X-purgate-size: 4580

On 4/17/26 6:05 PM, Andrew Cooper wrote:
> On 17/04/2026 5:27 pm, Ross Lagerwall wrote:
>> On 4/17/26 5:08 PM, Andrew Cooper wrote:
>>> Failing to mark Xen as Reserved in the E820 is catastrophic; RAM
>>> regions get
>>> handed to the physical memory allocator for general use.  Similarly,
>>> failure
>>> to mark the boot modules as reserved is not going to result in a working
>>> system.
>>>
>>> Mark reserve_e820_ram() as __must_check, and panic() on failure.  To
>>> avoid
>>> opencoding the range in every caller, print a general failure message in
>>> reserve_e820_ram().
>>>
>>> Reported-by: Ross Lagerwall <ross.lagerwall@citrix.com>
>>> Signed-off-by: Andrew Cooper <andrew.cooper3@citrix.com>
>>> ---
>>> CC: Jan Beulich <jbeulich@suse.com>
>>> CC: Roger Pau Monné <roger.pau@citrix.com>
>>> CC: Teddy Astie <teddy.astie@vates.tech>
>>>
>>> Slightly RFC; only compile tested so far.
>>>
>>> There's no obvious fixes tag.  This has been many variations of
>>> broken since
>>> forever.
>>> ---
>>>    xen/arch/x86/e820.c             |  8 +++++++-
>>>    xen/arch/x86/include/asm/e820.h |  2 +-
>>>    xen/arch/x86/setup.c            | 11 +++++++----
>>>    3 files changed, 15 insertions(+), 6 deletions(-)
>>>
>>> diff --git a/xen/arch/x86/e820.c b/xen/arch/x86/e820.c
>>> index 872208ab3722..f09a01f0c50a 100644
>>> --- a/xen/arch/x86/e820.c
>>> +++ b/xen/arch/x86/e820.c
>>> @@ -670,7 +670,13 @@ int __init e820_change_range_type(
>>>    /* Set E820_RAM area (@s,@e) as RESERVED in specified e820 map. */
>>>    int __init reserve_e820_ram(struct e820map *map, uint64_t s,
>>> uint64_t e)
>>>    {
>>> -    return e820_change_range_type(map, s, e, E820_RAM, E820_RESERVED);
>>> +    int res = e820_change_range_type(map, s, e, E820_RAM,
>>> E820_RESERVED);
>>> +
>>> +    if ( !res )
>>> +        printk("Failed to convert E820 RAM %"PRIx64"-%"PRIx64" to
>>> RESERVED\n",
>>> +               s, e);
>>> +
>>> +    return res;
>>>    }
>>>      unsigned long __init init_e820(const char *str, struct e820map *raw)
>>> diff --git a/xen/arch/x86/include/asm/e820.h
>>> b/xen/arch/x86/include/asm/e820.h
>>> index 8e7644f8870b..a86d60ce3e77 100644
>>> --- a/xen/arch/x86/include/asm/e820.h
>>> +++ b/xen/arch/x86/include/asm/e820.h
>>> @@ -25,7 +25,7 @@ struct e820map {
>>>      extern int sanitize_e820_map(struct e820entry *biosmap, unsigned
>>> int *pnr_map);
>>>    extern int e820_all_mapped(u64 start, u64 end, unsigned type);
>>> -extern int reserve_e820_ram(struct e820map *map, uint64_t s,
>>> uint64_t e);
>>> +extern int __must_check reserve_e820_ram(struct e820map *map,
>>> uint64_t s, uint64_t e);
>>>    extern int e820_change_range_type(
>>>        struct e820map *map, uint64_t s, uint64_t e,
>>>        uint32_t orig_type, uint32_t new_type);
>>> diff --git a/xen/arch/x86/setup.c b/xen/arch/x86/setup.c
>>> index d041cbd5f6f1..9c1f1eafa0d7 100644
>>> --- a/xen/arch/x86/setup.c
>>> +++ b/xen/arch/x86/setup.c
>>> @@ -1639,7 +1639,8 @@ void asmlinkage __init noreturn __start_xen(void)
>>>        {
>>>            uint64_t s = bi->mods[i].start, l = bi->mods[i].size;
>>>    -        reserve_e820_ram(&boot_e820, s, s + PAGE_ALIGN(l));
>>> +        if ( !reserve_e820_ram(&boot_e820, s, s + PAGE_ALIGN(l)) )
>>> +            panic("Failed to reserve boot module %u in E820\n", i);

i is an int, so it should be %d.

>>>        }
>>>          if ( !xen_phys_start )
>>> @@ -1652,11 +1653,13 @@ void asmlinkage __init noreturn
>>> __start_xen(void)
>>>        /* This needs to remain in sync with remove_xen_ranges(). */
>>>        if ( efi_boot_mem_unused(&eb_start, &eb_end) )
>>>        {
>>> -        reserve_e820_ram(&boot_e820, __pa(_stext), __pa(eb_start));
>>> -        reserve_e820_ram(&boot_e820, __pa(eb_end),
>>> __pa(__2M_rwdata_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
>>> -        reserve_e820_ram(&boot_e820, __pa(_stext),
>>> __pa(__2M_rwdata_end));
>>> +        if ( reserve_e820_ram(&boot_e820, __pa(_stext),
>>> __pa(__2M_rwdata_end)) )
>>> +            panic("Failed to reserve Xen in E820\n");
>>>    
>>
>> This condition is inverted.
>> Otherwise this looks like a sensible change.
> 
> Oops, yes.  Fixed.

With those changes,

Reviewed-by: Ross Lagerwall <ross.lagerwall@citrix.com>


From xen-devel-bounces@lists.xenproject.org Mon Apr 20 08:03:53 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 20 Apr 2026 08:03:53 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1285487.1566498 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wEjbg-0004JB-C6; Mon, 20 Apr 2026 08:03:48 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1285487.1566498; Mon, 20 Apr 2026 08:03: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 1wEjbg-0004J4-70; Mon, 20 Apr 2026 08:03:48 +0000
Received: by outflank-mailman (input) for mailman id 1285487;
 Mon, 20 Apr 2026 08:03:47 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92) id 1wEjbf-0004Iy-Cm
 for xen-devel@lists.xenproject.org; Mon, 20 Apr 2026 08:03:47 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wEjbd-0076Et-36
 for xen-devel@lists.xenproject.org; Mon, 20 Apr 2026 10:03:46 +0200
Received: from [10.42.69.12] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <Michal.Orzel@amd.com>)
 id 69e5ddd8-5cb7-0a2a0a5109dd-0a2a450ca966-30
 for <xen-devel@lists.xenproject.org>; Mon, 20 Apr 2026 10:03:46 +0200
Received: from [52.101.53.17]
 (helo=BL0PR03CU003.outbound.protection.outlook.com)
 by tlsNG-d25034.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.1)
 (envelope-from <Michal.Orzel@amd.com>)
 id 69e5dde1-62f1-0a2a450c0019-346535116b68-3
 for <xen-devel@lists.xenproject.org>; Mon, 20 Apr 2026 10:03:46 +0200
Received: from CH0P223CA0013.NAMP223.PROD.OUTLOOK.COM (2603:10b6:610:116::30)
 by MN2PR12MB4373.namprd12.prod.outlook.com (2603:10b6:208:261::8)
 with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9846.16; Mon, 20 Apr
 2026 08:03:40 +0000
Received: from CH2PEPF0000013C.namprd02.prod.outlook.com
 (2603:10b6:610:116:cafe::b5) by CH0P223CA0013.outlook.office365.com
 (2603:10b6:610:116::30) with Microsoft SMTP Server (version=TLS1_3,
 cipher=TLS_AES_256_GCM_SHA384) id 15.20.9791.48 via Frontend Transport; Mon,
 20 Apr 2026 08:03:33 +0000
Received: from satlexmb08.amd.com (165.204.84.17) by
 CH2PEPF0000013C.mail.protection.outlook.com (10.167.244.73) with Microsoft
 SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id
 15.20.9791.48 via Frontend Transport; Mon, 20 Apr 2026 08:03: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.17; Mon, 20 Apr
 2026 03:03:33 -0500
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.17; Mon, 20 Apr
 2026 01:03:33 -0700
Received: from [10.71.194.215] (10.180.168.240) by satlexmb07.amd.com
 (10.181.42.216) with Microsoft SMTP Server id 15.2.2562.17 via Frontend
 Transport; Mon, 20 Apr 2026 03:03:31 -0500
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@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=OocauKv/iPxHzbRdC6BWGcvf4UtgayRi+fw/Cs7/DG+G3fX61ZFPU9ePXTpU/LLLCx0BC2hqb+h1b9NllU59wzGTSE80C9waCbQpMj/8zHbOoSzxeRWqu80DnxpZrmSY8JoOxCVk0hc+7WkfiX/69JMyJ8L2//KRH69RI1EW70d/FURIMHHU32G6t04GcwxiMiWU+cQ/jmEpYLFXnfWiJCI/w4yDEZHzof1EdOTM106fy7Zls+olJNaeg7eLIi5w/rur9K5YTbN6vQRzHo38z7mLPOr3Hyi604LeB8E+pn1l/hlsBm8Dgjp+pe9BpsBZTbdxgBu0yacURqLiLsJ48A==
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com;
 s=arcselector10001;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1;
 bh=UWvzZOX0hDO+ITJIMv2XGIAaFknfMcrBwxN2uVX5dy0=;
 b=mrfNtEViCDJ1EaSlnnK3V8lyBSdTq2VJkGT2RscPUMjOKL6Rr067wQdN7Zj7/MzV3LTkBUY0gLux3c+pGkv/mYrUY1ENvlT7VIg+ldUnyRZ57Ty0LMWAQ+MB7bUO4AoaULuA9jFoWsmdLRJnn6XvK2YS/22SEMVIrHfm8//xEPCYo0+0rxA/Ee4dc1Hons5fBuGc6dmQBwKgFPuHrK1D0Q+GVIsySx/y9AqXqYj1cgT39zffX9L0mEtt3RF+wqocZH3iDI2EBOPnO3wxJiPTkvtN+o64gtHTlXNsLwaL50hmQNnRXX233gnhYXqztm/I7x29vZvV6lgjVEYUe7P6Lg==
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=UWvzZOX0hDO+ITJIMv2XGIAaFknfMcrBwxN2uVX5dy0=;
 b=5JEu8I/BzTubSfWtKluNU/Q3MwNsI8rBSRGUSYaGDZWhBxNMd/R5UFNT2W8MBlmCdVatYv2SfGl+A4SjFx5WlAwtLd2Eqg7AC2IyYHWhpys8bh6VKPKIXxDUoNuxb3+7FyvlXMTupI21rXM/Px592G1S6SQ7gnAeX9H1IctELkY=
X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 165.204.84.17)
 smtp.mailfrom=amd.com; dkim=none (message not signed)
 header.d=none;dmarc=pass action=none header.from=amd.com;
Received-SPF: Pass (protection.outlook.com: domain of amd.com designates
 165.204.84.17 as permitted sender) receiver=protection.outlook.com;
 client-ip=165.204.84.17; helo=satlexmb08.amd.com; pr=C
Message-ID: <c5003b0c-04e1-4081-b931-bfcb9ab1b739@amd.com>
Date: Mon, 20 Apr 2026 10:03:31 +0200
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH v1 3/3] xen: introduce CONFIG_HAS_DOMAIN_TYPE
To: Oleksii Kurochko <oleksii.kurochko@gmail.com>,
	<xen-devel@lists.xenproject.org>
CC: Andrew Cooper <andrew.cooper3@citrix.com>, Anthony PERARD
	<anthony.perard@vates.tech>, 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>, Bertrand Marquis
	<bertrand.marquis@arm.com>, Volodymyr Babchuk <Volodymyr_Babchuk@epam.com>
References: <cover.1776340422.git.oleksii.kurochko@gmail.com>
 <e5ffcdecb0ca3c87b46965449601ff20116fecc0.1776340422.git.oleksii.kurochko@gmail.com>
From: "Orzel, Michal" <michal.orzel@amd.com>
Content-Language: en-US
In-Reply-To: <e5ffcdecb0ca3c87b46965449601ff20116fecc0.1776340422.git.oleksii.kurochko@gmail.com>
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: 7bit
X-EOPAttributedMessage: 0
X-MS-PublicTrafficType: Email
X-MS-TrafficTypeDiagnostic: CH2PEPF0000013C:EE_|MN2PR12MB4373:EE_
X-MS-Office365-Filtering-Correlation-Id: f1d14d4b-91f7-4e0c-e619-08de9eb351aa
X-MS-Exchange-SenderADCheck: 1
X-MS-Exchange-AntiSpam-Relay: 0
X-Microsoft-Antispam:
	BCL:0;ARA:13230040|36860700016|1800799024|376014|7416014|82310400026|18002099003|22082099003|56012099003;
X-Microsoft-Antispam-Message-Info:
	IQnBV7ABC6c9rdhJJGhVmAMoeX0Ra1iqEp/bawHvRtSW8xoZIJae9rZiqesCyfGSNj07jq2H+2GFzVM1EWi92hBPL3Ia5sQ6zZa0ui1HImTifIsHmYcWran+S49aOFKOeWaiDiiLEPVUNAQlgZVbtmPxtQ7nCMTAVEN5Zcv83lBYZlC+gPVnfAnb95oGQoJKqe5GtMxnyDzBFPLIEph5YVvm2Ar/I+kussna0bOUek1GOi3frISwTYPJjFranbml45PYAGknvAAPgqSfyDj4BBMuL5HNPlVnv4Aj0FYhT+T9dxoF6kDOTDBB7Stv1vft1DPIUGYR6OIQUQjEYlLGLzKNgDDR3uT+n1aPxWNu/B0wYlwkReL2vQ7Uj4w1S6RfGaZtUdPKV6YGbU17kxZGlDDRUbFPwsXAUAhWkRMB7Zgs+wsJUEC7zq93ft0cyAjxFMuymYi9cKKx12gGEHVEy0FrIlNX9uiqgaLxJ/W6Ohj9PBTbO2u7w02SdSnPLhrEWa6dGW7ZRHcgCy1eUAnIoiNtsYp9hwfDd3PC/OVCdKYXAr4qShCb626a+nzWaDrNvV5jChG3zkzNbCGiT2Ped2p7VgN56vpg2zTnbArFN1oYeE9Av81vmzQ/VPP4+WbBtIy1nzxTBBnhG8nSrpyFQ3vqP2mmNrn1Lp+eMY6pMnARyw6sygAagI7B6i6bslE4jD9AkhBmQBNMPzDNYuimTHZjx1UQHGeqIDXoH3YyBjxvYr9D2YfbWsTgsdc/L5HUUVwcpakICyAQeR6yXhZHfA==
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)(1800799024)(376014)(7416014)(82310400026)(18002099003)(22082099003)(56012099003);DIR:OUT;SFP:1101;
X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1
X-MS-Exchange-AntiSpam-MessageData-0:
	Lde9OLG+sI3dwkXERktZb775qX2h0x/fojbvNbfFMbBko9ZL1Nxm+/2AqNJRLor9W8rH2ngE9Hh69mDE3NA3jIAafzxxSlRQjYKnQVsSWr1uRmDUwcSLiDD4qE8c4PvyN1UMGA4Ibi/iPKDZlsCWmKbu850MvQo0hJG32gDmPHEOe3vYeV6XgTPnIvsXhx/HsQItfTCe1aa+zMdqNRD4orrF8WZSLyeoQvOz2gonfM89z2AufXX/qZkL/1JBL2ZUN+fgA5ecISKwmVCPo8T5quvW08bVBaPldhXTL/kkUwPzI7kP/2z2iak8KsR2GMbfI2mrvNJefaM0SnPlbnVWQW8+TjZzOk/ZwjRbsJFGxZ+NYICtvsx6O2k4esLvr2xSO9u+stlls+DKqB01bm9x+fVgXq2pCR6AKUoZJrck/dDNdUH4wB7MtJecGcL7haMj
X-OriginatorOrg: amd.com
X-MS-Exchange-CrossTenant-OriginalArrivalTime: 20 Apr 2026 08:03:33.9149
 (UTC)
X-MS-Exchange-CrossTenant-Network-Message-Id: f1d14d4b-91f7-4e0c-e619-08de9eb351aa
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:
	CH2PEPF0000013C.namprd02.prod.outlook.com
X-MS-Exchange-CrossTenant-AuthAs: Anonymous
X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem
X-MS-Exchange-Transport-CrossTenantHeadersStamped: MN2PR12MB4373
X-purgate-ID: tlsNG-d25034/1776672226-6E776CF5-E6B9C4FC/10/73395122804
X-purgate-type: spam
X-purgate-size: 4711



On 16/04/2026 16:21, Oleksii Kurochko wrote:
> As domain type is part of common code now there is no any reason
> to have architecture-specific set_domain_type() functions so
> it is dropped.
> 
> The CONFIG_ARM_64 guard in xen/arch/arm/domain_build.c is intentionally
> left unchanged: it is ARM-specific code, and ARM_64 selects
> HAS_DOMAIN_TYPE, so the semantics are identical.
> 
> x86 with CONFIG_64BIT=y shouldn't use is_{32,64}bit_domain() as
> x86 doesn't have support of CONFIG_HAS_DOMAIN_TYPE. For x86_32
> it is fine to follow generic is_{32,64}_bit_domain() implementations.
I thought x86_32 Xen no longer builds. This means the fallback is only for arm32.

> 
> Generally it probably would be better to introduce CONFIG_32BIT
> and use it to define is_{32,64}bit_domain() as if one day
> CONFIG_128BIT will be introduced is_{32,64}bit_domain() will be
> defined incorrectly but considering that CONFIG_64BIT is maximum
> supported bitness it is fine to define in this way.
> 
> Signed-off-by: Oleksii Kurochko <oleksii.kurochko@gmail.com>
> ---
>  xen/arch/Kconfig                        |  3 +++
>  xen/arch/arm/Kconfig                    |  1 +
>  xen/arch/arm/arm64/domctl.c             |  4 ++--
>  xen/arch/arm/dom0less-build.c           | 14 --------------
>  xen/arch/arm/domain_build.c             |  8 ++++----
>  xen/arch/arm/include/asm/domain.h       | 12 ------------
>  xen/arch/arm/include/asm/kernel.h       |  4 ----
>  xen/arch/arm/kernel.c                   | 10 +++++-----
>  xen/common/device-tree/dom0less-build.c |  5 ++++-
>  xen/include/xen/dom0less-build.h        |  2 --
>  xen/include/xen/domain.h                | 13 +++++++++++++
>  xen/include/xen/fdt-kernel.h            |  5 +++++
>  xen/include/xen/sched.h                 |  4 ++++
>  13 files changed, 41 insertions(+), 44 deletions(-)
> 
> diff --git a/xen/arch/Kconfig b/xen/arch/Kconfig
> index f9230bfaf872..6c53149f7ee1 100644
> --- a/xen/arch/Kconfig
> +++ b/xen/arch/Kconfig
> @@ -1,6 +1,9 @@
>  config 64BIT
>  	bool
>  
> +config HAS_DOMAIN_TYPE
> +	bool
> +
>  config PHYS_ADDR_T_32
>  	bool
>  
> diff --git a/xen/arch/arm/Kconfig b/xen/arch/arm/Kconfig
> index 2f2b501fdac4..79622b46a10d 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_DOMAIN_TYPE
>  	select HAS_FAST_MULTIPLY
>  	select HAS_VPCI_GUEST_SUPPORT if PCI_PASSTHROUGH
>  
> diff --git a/xen/arch/arm/arm64/domctl.c b/xen/arch/arm/arm64/domctl.c
> index 8720d126c97d..9e9a29eb1e78 100644
> --- a/xen/arch/arm/arm64/domctl.c
> +++ b/xen/arch/arm/arm64/domctl.c
> @@ -21,10 +21,10 @@ static long switch_mode(struct domain *d, enum domain_type type)
>          return -EINVAL;
>      if ( domain_tot_pages(d) != 0 )
>          return -EBUSY;
> -    if ( d->arch.type == type )
> +    if ( d->type == type )
>          return 0;
>  
> -    d->arch.type = type;
> +    d->type = type;
>  
>      if ( is_64bit_domain(d) )
>          for_each_vcpu(d, v)
> diff --git a/xen/arch/arm/dom0less-build.c b/xen/arch/arm/dom0less-build.c
> index 4181c105389a..6f73c65e5151 100644
> --- a/xen/arch/arm/dom0less-build.c
> +++ b/xen/arch/arm/dom0less-build.c
> @@ -237,20 +237,6 @@ int __init make_arch_nodes(struct kernel_info *kinfo)
>      return 0;
>  }
>  
> -/* TODO: make arch.type generic ? */
> -#ifdef CONFIG_ARM_64
> -void __init set_domain_type(struct domain *d, struct kernel_info *kinfo)
> -{
> -    /* type must be set before allocate memory */
> -    d->arch.type = kinfo->arch.type;
> -}
> -#else
> -void __init set_domain_type(struct domain *d, struct kernel_info *kinfo)
> -{
> -    /* Nothing to do */
> -}
> -#endif
> -
>  int __init init_vuart(struct domain *d, struct kernel_info *kinfo,
>                        const struct dt_device_node *node)
>  {
> diff --git a/xen/arch/arm/domain_build.c b/xen/arch/arm/domain_build.c
> index 6740da3d324b..2fd89b3a1345 100644
> --- a/xen/arch/arm/domain_build.c
> +++ b/xen/arch/arm/domain_build.c
> @@ -1178,7 +1178,7 @@ int __init make_cpus_node(const struct domain *d, struct kernel_info *kinfo)
>      /* Keep the compiler happy with -Og */
>      bool clock_valid = false;
>      uint64_t mpidr_aff;
> -    void *fdt = kinfo;
> +    void *fdt = kinfo->fdt;
Here you are fixing a regression introduced in patch 2/3.

I'm ok with this patch. but since you touch common code too you need to wait for
other's opinion. For now, provided you fix the commit msg and regression remark:
Reviewed-by: Michal Orzel <michal.orzel@amd.com>

~Michal



From xen-devel-bounces@lists.xenproject.org Mon Apr 20 08:22:20 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 20 Apr 2026 08:22:20 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1285499.1566506 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wEjtV-0007Bp-CX; Mon, 20 Apr 2026 08:22:13 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1285499.1566506; Mon, 20 Apr 2026 08:22: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 1wEjtV-0007Bi-8u; Mon, 20 Apr 2026 08:22:13 +0000
Received: by outflank-mailman (input) for mailman id 1285499;
 Mon, 20 Apr 2026 08:22:12 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <jbeulich@suse.com>) id 1wEjtU-0007Bc-36
 for xen-devel@lists.xenproject.org; Mon, 20 Apr 2026 08:22:12 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wEjtT-009ubX-G0
 for xen-devel@lists.xenproject.org; Mon, 20 Apr 2026 10:22:11 +0200
Received: from [10.42.69.1] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <jbeulich@suse.com>)
 id 69e5e230-e002-0a2a0a5209dd-0a2a45019e0c-20
 for <xen-devel@lists.xenproject.org>; Mon, 20 Apr 2026 10:22:11 +0200
Received: from [209.85.128.47] (helo=mail-wm1-f47.google.com)
 by tlsNG-d62444.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.1)
 (envelope-from <jbeulich@suse.com>)
 id 69e5e233-c1f2-0a2a45010019-d155802fe5ac-3
 for <xen-devel@lists.xenproject.org>; Mon, 20 Apr 2026 10:22:11 +0200
Received: by mail-wm1-f47.google.com with SMTP id
 5b1f17b1804b1-48334ee0aeaso26705885e9.1
 for <xen-devel@lists.xenproject.org>; Mon, 20 Apr 2026 01:22:11 -0700 (PDT)
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-43fe4e4d6casm25576821f8f.32.2026.04.20.01.22.09
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Mon, 20 Apr 2026 01:22:10 -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=google header.d=suse.com header.i="@suse.com" header.h="Content-Transfer-Encoding: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=1776673331; x=1777278131; darn=lists.xenproject.org;
        h=content-transfer-encoding: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;
        bh=c2iK3XQ83lX4GmyPOCBsLmeGDadhSHHxA+sAAHUVHqQ=;
        b=aWgELGGDi1CrtNiOjgZwzQ5qbGrCU6XXFAs4jlqD+Wa6KxewbwfJWHt8DOKW6aN0g1
         ZOKZczS7OjFa023EuBsO7ne/B4KgXspUqVYp5ixVoQXC51QtY0T2C49yY5D7p4uQQGDj
         TjVAm7DY79YW15cGLE72woJqqTrmcmJLziGVQ56orlftNQxdAe76aj1NglmJ8SyMfe0c
         3sbmcTqWAf0QE85Lrr42Ucdsw5VvjK0X4izFaIbMYrgX6gRyhRT8Hc+lpRE1QMypc6RO
         Ze0NW3CudVZ8fwrbWr2lKufJzbYJrrBk8I5fy8NwDBVvGW37f0n33mfQtTFUd7pqBxCs
         cPCw==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20251104; t=1776673331; x=1777278131;
        h=content-transfer-encoding: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;
        bh=c2iK3XQ83lX4GmyPOCBsLmeGDadhSHHxA+sAAHUVHqQ=;
        b=j8kCN2uY4j5RP4NNWN9DF1NpxEhQNeVv4kdvjBNqLwUxKTiLXQMomln2q+i3cI44O1
         xe5ekQYWHSxZMZgB1GVEph5392OCH/WrIv/yhXiO2v/WZW6Z6AVMr3Fl+INfEmjLYBcA
         RgJHH5V5/xzpCGFDm2/Ew7DT8MIFG4+x5/dmna6RdaXl02ZMjZMnbpjp6VGhEVekN5HU
         oudF8UejGRcG5fQ9/aRoDGoPq0bRa+ffwS/sGoV3Hf9ARsWF8Rce/UFJouYUqBVS7k1V
         LyFP38uQ2iC2CfoGL1nERYBCmq24qRjd3c05fjUb7oKtNG3jM0eDXNdFeBLqhyPujYj2
         kghw==
X-Forwarded-Encrypted: i=1; AFNElJ9dycGzWkEeCU4nWgUSam8sW8u1fgqIyZKTVemNEP0FQti2vLbW59P7EikwLsx1l6cz0FuY6LsjiuE=@lists.xenproject.org
X-Gm-Message-State: AOJu0YzUaeNwwS01OMmkOSled3/NVMl+DOHbp499CMDcQxXIOlo+4KPm
	hALM0G33Icq8JIOccQyHMbO/c6FWySC7Q7Ez3QQx5mTxzQNmh6HJ5x1/yIzUpPAYMA==
X-Gm-Gg: AeBDievH85Rpnsl2bPWjrZkzPGH/fX+/f5dSkuJrYMbdwnhFFndhupP3NYIkRarWUM9
	LHHcBM16Vie3KgtzK4LZH+IiCk0FWPERaDKbLU9+mFFVOXHYlLXr3J6keTylSNbM34xvjdjGwhL
	vIIVWH3joPT5BYXPE9PaQWXiDcfkirU6HWz5ILkP7l8eHfC0zXqQZ9dY9l+MqU77tSVb3AwQg1W
	//kwRAWE+D+0cGcBVT/7JBOKgXUtebH9VOpNfLKznG2UlIqiyI6mfh6yutB/rKOIXoaweCnDXwu
	RSHJhFNztypYRJ1KKQ21UR7FJLAhVQbhWBZIbIcAfMMqkv8wq5T4Fw7yn4HHN3Q1Hq/u8+9Ux04
	ReMYxubwAe8GzS36S0DfXi/xuxTMeLSXkVqbsUdpOErRW1KvuYU0aZS2tEWUnGoNX6/eFNoy8o0
	T8ypUXw4DqdEw+WXCXKnlXcY0sNzSiI9U2ssAQt6w/s9vwk3ZOSF2G5NUMWvkb43xpc837aSWzt
	P4JRH3PPC+3rDH2lEJHgkeHNg==
X-Received: by 2002:a05:600c:46cb:b0:488:ac01:72de with SMTP id 5b1f17b1804b1-488fb7451e4mr174026345e9.5.1776673330582;
        Mon, 20 Apr 2026 01:22:10 -0700 (PDT)
Message-ID: <f5c7006d-a6ed-4c92-962b-d5f4b27a5c6d@suse.com>
Date: Mon, 20 Apr 2026 10:22:11 +0200
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH v1 3/3] xen: introduce CONFIG_HAS_DOMAIN_TYPE
To: Oleksii Kurochko <oleksii.kurochko@gmail.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.pau@citrix.com>,
 Stefano Stabellini <sstabellini@kernel.org>,
 Bertrand Marquis <bertrand.marquis@arm.com>,
 Volodymyr Babchuk <Volodymyr_Babchuk@epam.com>,
 xen-devel@lists.xenproject.org
References: <cover.1776340422.git.oleksii.kurochko@gmail.com>
 <e5ffcdecb0ca3c87b46965449601ff20116fecc0.1776340422.git.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: <e5ffcdecb0ca3c87b46965449601ff20116fecc0.1776340422.git.oleksii.kurochko@gmail.com>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 7bit
X-purgate-ID: tlsNG-d62444/1776673331-BE066FF4-DF5F8203/0/0
X-purgate-type: clean
X-purgate-size: 4504

On 16.04.2026 16:21, Oleksii Kurochko wrote:
> As domain type is part of common code now there is no any reason
> to have architecture-specific set_domain_type() functions so
> it is dropped.
> 
> The CONFIG_ARM_64 guard in xen/arch/arm/domain_build.c is intentionally
> left unchanged: it is ARM-specific code, and ARM_64 selects
> HAS_DOMAIN_TYPE, so the semantics are identical.

Still I think it would better be updated, for consistency's sake.

> x86 with CONFIG_64BIT=y shouldn't use is_{32,64}bit_domain() as
> x86 doesn't have support of CONFIG_HAS_DOMAIN_TYPE. For x86_32
> it is fine to follow generic is_{32,64}_bit_domain() implementations.

As Michal has also alluded to, the use of x86_32 here needs some further
qualification, as Xen hasn't been possible to be built for that target
for many years. Quite possibly you mean guest type there, but then it's
unclear why you would restrict the explanation to 32-bit guests.

> Generally it probably would be better to introduce CONFIG_32BIT
> and use it to define is_{32,64}bit_domain() as if one day
> CONFIG_128BIT will be introduced is_{32,64}bit_domain() will be
> defined incorrectly but considering that CONFIG_64BIT is maximum
> supported bitness it is fine to define in this way.

Many things will need adjustment for a future CONFIG_128BIT. Imo this
kind of statement doesn't belong in a patch description; it could be a
post-commit-message remark.

> --- a/xen/arch/Kconfig
> +++ b/xen/arch/Kconfig
> @@ -1,6 +1,9 @@
>  config 64BIT
>  	bool
>  
> +config HAS_DOMAIN_TYPE
> +	bool
> +
>  config PHYS_ADDR_T_32
>  	bool

Why here rather than where the bulk of the other HAS_* are?

> --- a/xen/arch/arm/domain_build.c
> +++ b/xen/arch/arm/domain_build.c
> @@ -1178,7 +1178,7 @@ int __init make_cpus_node(const struct domain *d, struct kernel_info *kinfo)
>      /* Keep the compiler happy with -Og */
>      bool clock_valid = false;
>      uint64_t mpidr_aff;
> -    void *fdt = kinfo;
> +    void *fdt = kinfo->fdt;
>  
>      dt_dprintk("Create cpus node\n");
>  
> @@ -1774,13 +1774,13 @@ int __init construct_domain(struct domain *d, struct kernel_info *kinfo)
>  
>  #ifdef CONFIG_ARM_64
>      /* if aarch32 mode is not supported at EL1 do not allow 32-bit domain */
> -    if ( !(cpu_has_el1_32) && kinfo->arch.type == DOMAIN_32BIT )
> +    if ( !(cpu_has_el1_32) && kinfo->type == DOMAIN_32BIT )

I'm not an Arm maintainer; if I was, I'd ask for the stray parentheses to be
dropped on this occasion.

> @@ -1896,7 +1896,7 @@ int __init construct_hwdom(struct kernel_info *kinfo,
>  
>  #ifdef CONFIG_ARM_64
>      /* type must be set before allocate_memory */
> -    d->arch.type = kinfo->arch.type;
> +    d->type = kinfo->type;
>  #endif

I wonder why this doesn't use set_domain_type() (see also below).

> --- a/xen/common/device-tree/dom0less-build.c
> +++ b/xen/common/device-tree/dom0less-build.c
> @@ -809,7 +809,10 @@ static int __init construct_domU(struct kernel_info *kinfo,
>      if ( rc < 0 )
>          return rc;
>  
> -    set_domain_type(d, kinfo);
> +#ifdef CONFIG_HAS_DOMAIN_TYPE
> +    /* type must be set before allocate memory */

Nit: Comment style.

> +    d->type = kinfo->type;
> +#endif

Imo it would be preferable to retain set_domain_type(), to avoid #ifdef-ary
here and in construct_hwdom(). Of course its implementation would need to
move. Couldn't it be ...

> --- a/xen/include/xen/dom0less-build.h
> +++ b/xen/include/xen/dom0less-build.h
> @@ -57,8 +57,6 @@ int init_vuart(struct domain *d, struct kernel_info *kinfo,
>  int make_intc_domU_node(struct kernel_info *kinfo);
>  int make_arch_nodes(struct kernel_info *kinfo);
>  
> -void set_domain_type(struct domain *d, struct kernel_info *kinfo);

... an inline function here?

> --- a/xen/include/xen/sched.h
> +++ b/xen/include/xen/sched.h
> @@ -668,6 +668,10 @@ struct domain
>      struct page_info *pending_scrub;
>      unsigned int pending_scrub_order;
>      unsigned int pending_scrub_index;
> +
> +#ifdef CONFIG_HAS_DOMAIN_TYPE
> +    enum domain_type type;
> +#endif
>  } __aligned(PAGE_SIZE);

I'm not quite happy with all new fields getting put at the bottom, when
better options may exist. If the enum was a packed one, it could go next
to domain_id (where 16 bits of padding presently exist). The five *_pages
fields also have a padding field following them (unless MEM_SHARING !=
MEM_PAGING).

Jan


From xen-devel-bounces@lists.xenproject.org Mon Apr 20 08:29:44 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 20 Apr 2026 08:29:44 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1285509.1566514 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wEk0c-0007oV-2V; Mon, 20 Apr 2026 08:29:34 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1285509.1566514; Mon, 20 Apr 2026 08:29: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 1wEk0b-0007oO-Vz; Mon, 20 Apr 2026 08:29:33 +0000
Received: by outflank-mailman (input) for mailman id 1285509;
 Mon, 20 Apr 2026 08:29:32 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <jbeulich@suse.com>) id 1wEk0a-0007oI-N4
 for xen-devel@lists.xenproject.org; Mon, 20 Apr 2026 08:29:32 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wEk0Z-00CLEI-LQ
 for xen-devel@lists.xenproject.org; Mon, 20 Apr 2026 10:29:31 +0200
Received: from [10.42.69.9] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <jbeulich@suse.com>)
 id 69e5e3df-bab6-0a2a0a5309dd-0a2a4509bd9e-34
 for <xen-devel@lists.xenproject.org>; Mon, 20 Apr 2026 10:29:31 +0200
Received: from [209.85.128.48] (helo=mail-wm1-f48.google.com)
 by tlsNG-bad1c0.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.1)
 (envelope-from <jbeulich@suse.com>)
 id 69e5e3eb-2497-0a2a45090019-d1558030d4fa-3
 for <xen-devel@lists.xenproject.org>; Mon, 20 Apr 2026 10:29:31 +0200
Received: by mail-wm1-f48.google.com with SMTP id
 5b1f17b1804b1-4852a9c6309so23586705e9.0
 for <xen-devel@lists.xenproject.org>; Mon, 20 Apr 2026 01:29:31 -0700 (PDT)
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-488fc1c01cfsm279130295e9.10.2026.04.20.01.29.29
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Mon, 20 Apr 2026 01:29:29 -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=google header.d=suse.com header.i="@suse.com" header.h="Content-Transfer-Encoding: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=1776673771; x=1777278571; darn=lists.xenproject.org;
        h=content-transfer-encoding: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;
        bh=QWTXAfMVrrFKv6Z3Kx/OO9RQJRVpKh/l9TdFSZILbWc=;
        b=SYruRo2OZ7H56s0zoWBDNlbAE80Xtq7H4FIOyS15EBJA1sL1+myZSEpdODM3joFATB
         l7RnZJC2g0SiqDazILbZ3a2/piENm+sWLE9Y3bP4h8dSVPrJ5hwuJj7lpFkRc+sX1fOn
         eTKmhGveEkKFeSsbk7vqZ+JYI6UUP5pdCEc8xJoJnzR0i3e2dC7Wy7iGud3uZ+mguZug
         cFHm3TMtDozEirqtlECOy3H1AZ+U/NauTY+O76PYcQ2MBnvqBwcF9KhA4FXHEjVdDyvo
         TK0nIGUiGNP+gXg3rBhiOdrFn4fCZRstfGTVqhdkoM0DDQTLvZ0B5SGPWj35+ELX5mtt
         R0nw==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20251104; t=1776673771; x=1777278571;
        h=content-transfer-encoding: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;
        bh=QWTXAfMVrrFKv6Z3Kx/OO9RQJRVpKh/l9TdFSZILbWc=;
        b=mfw/qO7Ycgst6TRk7lB4xUvQyEJtrJTa2hlg6NThdtCqyjV2B7Jx+SO3onZTr4XxvR
         w+7VTW6ZfOvNqRQWnYe/ROahspKcoISzc6lpAH0NaaDMURT59Ivw4KCMMJRCK5VONxwF
         vOd/cHp+aYRYSQ+Ya994zK07fGVJnjKZGtZQAtcV4n7AyiyWdf7SFhw6xpBkcWgnV82v
         e6+jmERdNiPUWOBlg3Ra8fEtIg0XqrKYbTXb9gbWi7X5g1+LC1KWfYMrxLDGKCsZY5LI
         KoA74UXz+1jF3mkHEegN1k3ak8lTnuRm4YXSLqXeO2+uFV+jPlVlso6bviaGajBc09gp
         OSmA==
X-Forwarded-Encrypted: i=1; AFNElJ9LrtqhFomrDmdRklglqn7AlKWFxY97OEsmbP8gR4ob2pFAA5Uf+ibyFQBceMZy7IqhQKQ741KtSEI=@lists.xenproject.org
X-Gm-Message-State: AOJu0YzXZIcb5HOVr0xJSVYwSwoVUqOecNsv2/BkblDR4TnVni5L14S4
	G098rbGVR4nJTER0YS+4hvAa/H3AGxo+67QPFnKCHngFSFslPNhMaaNpdJHMcy17mA==
X-Gm-Gg: AeBDievEIDjXVYXG4XPx+YQIfa2kc19i4cp149xuaT2by/1Xz+F7hu5cgqu+fmD/BUY
	udEjCtOuPrFk27pQb0VjDI+BLOH/31JY3e4WIg9bdLW48va3DoIVC5uY2e60DRUIz4RwbprzUKy
	hIr5QCoCDliYWfEuCOdgckaFIKp0bs5RCA5SBsRUBvRKCPV+KcbpCdsUJgmsiUSIqLZzf1oEKqT
	WZvFCNZjbdiVgo2INo7CEZ6rJvoqefvAZ9jAOPvGrGAb3uNXgV4nWMCiZQ49RdMtoo6Vsl761ai
	SuSCvQjrbtcjDkD97VSlWNC/AcUd1KGvFCAoVRSo9OdJv5EeThhA2Hsa9/Z8z44mY08p6QpzTgy
	WbKszSC6OEGGQ4Q8QhdNLCkYW2yx0o3F4x1GGiamBsx01Rzl2ZVnJngpswUze3rRlr2mDQKflqz
	8AbSN7TLMl0D0fUub0NOGejilMPh6mFlnbc1YmVydLzdC83fL8xHN9/1bwONlRSSfnQDSr0ECyg
	Phlda5bh9lTZvOwttmYWgtbvA==
X-Received: by 2002:a05:600c:4707:b0:488:bfc3:efc with SMTP id 5b1f17b1804b1-488fb6e8eb5mr176572895e9.0.1776673769942;
        Mon, 20 Apr 2026 01:29:29 -0700 (PDT)
Message-ID: <f4022635-ffd6-40c0-a537-9bc9dc4e0f2b@suse.com>
Date: Mon, 20 Apr 2026 10:29:31 +0200
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH v1 14/27] xen/riscv: introduce per-vCPU IMSIC state
To: Oleksii Kurochko <oleksii.kurochko@gmail.com>
Cc: Romain Caritey <Romain.Caritey@microchip.com>,
 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.pau@citrix.com>,
 Stefano Stabellini <sstabellini@kernel.org>, xen-devel@lists.xenproject.org
References: <cover.1773157782.git.oleksii.kurochko@gmail.com>
 <8196fa8f000e384af697a44cb3d50ece966e82a7.1773157782.git.oleksii.kurochko@gmail.com>
 <1f5e262d-da1f-49a2-8e89-87fb714e51bf@suse.com>
 <2f555a8b-d058-41ca-80f8-ce3dc08edfbe@gmail.com>
 <bd50afd3-6399-4c6b-b05d-d86ee4b8643e@suse.com>
 <9bee01f5-8275-4d8e-b217-1b2d2f8fa2e8@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: <9bee01f5-8275-4d8e-b217-1b2d2f8fa2e8@gmail.com>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 7bit
X-purgate-ID: tlsNG-bad1c0/1776673771-49AB6A53-A2047AD8/0/0
X-purgate-type: clean
X-purgate-size: 3587

On 17.04.2026 15:47, Oleksii Kurochko wrote:
> On 4/16/26 2:31 PM, Jan Beulich wrote:
>> On 14.04.2026 11:22, Oleksii Kurochko wrote:
>>> On 4/2/26 1:31 PM, Jan Beulich wrote:
>>>> On 10.03.2026 18:08, Oleksii Kurochko wrote:
>>>>> --- a/xen/arch/riscv/imsic.c
>>>>> +++ b/xen/arch/riscv/imsic.c
>>>>> @@ -59,6 +59,29 @@ do {                            \
>>>>>        csr_clear(CSR_SIREG, v);    \
>>>>>    } while (0)
>>>>>    
>>>>> +unsigned int vcpu_guest_file_id(const struct vcpu *v)
>>>>> +{
>>>>> +    struct imsic_state *imsic_state = v->arch.imsic_state;
>>>>> +    unsigned long flags;
>>>>> +    unsigned int vsfile_id;
>>>>> +
>>>>> +    read_lock_irqsave(&imsic_state->vsfile_lock, flags);
>>>>> +    vsfile_id = imsic_state->guest_file_id;
>>>>> +    read_unlock_irqrestore(&imsic_state->vsfile_lock, flags);
>>>>
>>>> What purpose does this locking have? Already ...
>>>>
>>>>> +    return vsfile_id;
>>>>
>>>> ... here the value can be stale, if indeed there is a chance of races.
>>>> Did you perhaps mean to use ACCESS_ONCE() here and where the value is
>>>> set?
>>>
>>> ACCESS_ONCE() isn't guarantee only compiler re-ordering (as basically it
>>> is just volatile-related stuff inisde the macros)?
>>>
>>> Generally, I think that that guest_file_id is needed to be updated only
>>> during migration of vCPU from one pCPU to another and I expect that
>>> during this migration vCPU isn't active, so no one will want to read
>>> imsic_state->guest_file_id. But on the other hand, there is:
>>>     bool imsic_has_interrupt(const struct vcpu *vcpu)
>>>     {
>>>     ...
>>>       /*
>>>        * The IMSIC SW-file directly injects interrupt via hvip so
>>>        * only check for interrupt when IMSIC VS-file is being used.
>>>        */
>>>
>>>       read_lock_irqsave(&imsic_state->vsfile_lock, flags);
>>>       if ( imsic_state->vsfile_pcpu != NR_CPUS )
>>>           ret = !!(csr_read(CSR_HGEIP) & BIT(imsic_state->guest_file_id,
>>> UL));
>>>       read_unlock_irqrestore(&imsic_state->vsfile_lock, flags);
>>>     ...
>>>     }
>>> which I think could be called in parallel with with migration, so then
>>> still lock are needed.
>>
>> None of this addresses my pointing out that the returned value will be
>> stale by the point the caller gets to look at it.
> 
> Yes, I agree that lock in vcpu_guest_file_id() is useless and it should 
> be on the caller side and used for the whole IMSIC state access. But ...
> 
>> Which in turn raises
>> said question about the use of a lock. If you read
>> imsic_state->guest_file_id atomically (i.e. excluding tearing of reads),
>> the value seen / used will be stale as with the lock in use. Unless of
>> course there's yet another aspect hidden somewhere in what is not being
>> explained.
> 
> ... I am not sure that I get this part.
> 
> If I am somewhere in migration code where I took write lock to update 
> imsic state (and of course ->guest_file_id as part of it) then if 
> someone else in parallel calls imsic_has_interrupt() then it won't enter 
> critical section where ->guest_file_id is trying to be read so no stale 
> ->guest_file_id will be read.

Well, hence why I said "Unless of course there's yet another aspect hidden
somewhere in what is not being explained." If I don't know the full
picture, I can't very well judge whether a lock is needed, or whether ...

> Then does it make sense to use ACCESS_ONCE() during read and write of
> ->guest_file_id in such use cases?

... ACCESS_ONCE() would be enough.

Jan


From xen-devel-bounces@lists.xenproject.org Mon Apr 20 08:34:40 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 20 Apr 2026 08:34:40 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1285521.1566524 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wEk5U-000124-MV; Mon, 20 Apr 2026 08:34:36 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1285521.1566524; Mon, 20 Apr 2026 08:34: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 1wEk5U-00011x-Jh; Mon, 20 Apr 2026 08:34:36 +0000
Received: by outflank-mailman (input) for mailman id 1285521;
 Mon, 20 Apr 2026 08:34:35 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <jbeulich@suse.com>) id 1wEk5T-00011r-CS
 for xen-devel@lists.xenproject.org; Mon, 20 Apr 2026 08:34:35 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wEk5S-00CMgu-L5
 for xen-devel@lists.xenproject.org; Mon, 20 Apr 2026 10:34:34 +0200
Received: from [10.42.69.1] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <jbeulich@suse.com>)
 id 69e5e518-2eae-0a2a0a5409dd-0a2a45019586-8
 for <xen-devel@lists.xenproject.org>; Mon, 20 Apr 2026 10:34:34 +0200
Received: from [209.85.128.50] (helo=mail-wm1-f50.google.com)
 by tlsNG-d62444.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.1)
 (envelope-from <jbeulich@suse.com>)
 id 69e5e51a-c1f2-0a2a45010019-d1558032cd3f-3
 for <xen-devel@lists.xenproject.org>; Mon, 20 Apr 2026 10:34:34 +0200
Received: by mail-wm1-f50.google.com with SMTP id
 5b1f17b1804b1-48896199cbaso29369925e9.1
 for <xen-devel@lists.xenproject.org>; Mon, 20 Apr 2026 01:34:34 -0700 (PDT)
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-488fc0f82bbsm439133405e9.3.2026.04.20.01.34.33
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Mon, 20 Apr 2026 01:34:33 -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=google header.d=suse.com header.i="@suse.com" header.h="Content-Transfer-Encoding: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=1776674074; x=1777278874; darn=lists.xenproject.org;
        h=content-transfer-encoding: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;
        bh=xFJ3uqps6uq7tfvbkd5g4KC06QaWSPLaScIgAffoNoI=;
        b=SXDuHkoohGhvwCuLf2+Ak36BMHRqh9I/B1Hl0jCaw0Gw17N9NVH6vVGNDkzjSK+zSi
         G4l2U8kuSqFsJHsqL9l059tbT8ndP9aXEG8w7D3rADNiMwxvBLXNGtnvbxquplEvi2Rw
         Zgpib77BZbnQp2j0KJcAjtmrnS5fINlnStEL+aVWiMxzOGQuUuG/DJEx6oNMm38nVKtK
         AROiMu1EPUPcD0wqCBGwiILNIJg+I7rIZgT5qgjng2t+QOdeyBJcFiFtVYFjEUiS72nk
         hMevH4qGdzDfHzz6AbadJo38DS4LikSAWiLi0AP4VAJ7TyyxrmIM/ElWtHIiOItF1Ege
         5TDQ==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20251104; t=1776674074; x=1777278874;
        h=content-transfer-encoding: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;
        bh=xFJ3uqps6uq7tfvbkd5g4KC06QaWSPLaScIgAffoNoI=;
        b=AF2AQmA+P/CG+GBVQhM5q37ySjDdHQMaln8Y6voZ0tAw5Cekhmi7T1dITR4pduttBc
         BlLvn6cqgaRroKZY5yz6GxFHYXTwVlY7gGBnEUjFWbxUKxuIgiD8Wlb7LbUbne29JWTr
         VESWAMVZt2xjohycxjOOcjjLQvfg88EOdL1sIJMsBq0XNC+QbWgSdDCSTmt5SC3B6rmr
         K5VUWQICY1fpO73+yoD/8Z9kAlAmW9IfgodTM/7MTWhBflb4VRLgH+KOPSiCZCLaTneR
         8yF4RC6VaLKPusDa7EkvZqhXzjIRLfKJTcYu+1wjc+P2BD9reqqDQ9H7MlxQIkiwHzfu
         QS9A==
X-Forwarded-Encrypted: i=1; AFNElJ/qeA99wh52e6hPg8Oj3nGucQqtQXaVEG/TySK2jcpc1HHp2I54nyeUQyiPw3IwSOLCo5QUlwUUCsk=@lists.xenproject.org
X-Gm-Message-State: AOJu0YzS/Z8zsUieg8WOpOhZdBudZFReqACSefUeg7GDI5JKAKdv41Um
	cC3T08a+GBm1o1OH9Rhy2PLG9v5wOwXxlKc6tr+U1r6dMBzD6S9iYx4BjpZTaIIyuMtOxzs+Ypt
	/PZtjgQ==
X-Gm-Gg: AeBDievy3EccG/oWRR8WhV/ceG7WTQsM275MxO45DBP9aXDZZ9bkByO2AJt+uNLLDhf
	2kQOwQyOmxCO7CiXjWIdJy5wwg3XXhufBeLPM6wcQiZLfoXJ1wqniJOKRZlpCwO3av79jBLYq9I
	lTaY9yfCS4E/ktY9SxKpKyQbsTB6wJUZcH0bYkk0cDBoMymDeRxkWWn6q7yQNRNHUXIiqFnVB9L
	eodyyd622wLkz3bWEQZji9azGrnz9G8Rxe/aB/OJinfsKjtsNOr8TsFX+ovF6/LUacGXBfs+xl4
	ZaG+VrYbIP7bmgmU/s7Hc+dAue7AlTDVac+CRWcR8LlVTPHP9DHiR2KZROJ3mJjlRPIsng6Rr15
	jsB7AWyRN0/dw5CDJYc7X7tymUhmJX+qKbYy4SuOoHd8DKB0nK2Q2SZ20tEHTIf6CpQctfxNwLM
	9PGct3J6NkVHgnGj+5VB6hc7ON3fiv+3zEerkBsT/MDeszd3C3+aTFZtw65KJqKogeax5z6ZF3u
	FWi5pktsPVA+i6iyr99a87ypw==
X-Received: by 2002:a05:600c:a416:b0:488:e7e4:8425 with SMTP id 5b1f17b1804b1-488fb787674mr141488105e9.23.1776674073920;
        Mon, 20 Apr 2026 01:34:33 -0700 (PDT)
Message-ID: <4d58f375-b422-4c2c-8416-1eba3725a776@suse.com>
Date: Mon, 20 Apr 2026 10:34:35 +0200
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH] x86/boot: Force error checking for reserve_e820_ram()
To: Andrew Cooper <andrew.cooper3@citrix.com>
Cc: Ross Lagerwall <ross.lagerwall@citrix.com>,
 =?UTF-8?Q?Roger_Pau_Monn=C3=A9?= <roger.pau@citrix.com>,
 Teddy Astie <teddy.astie@vates.tech>,
 Xen-devel <xen-devel@lists.xenproject.org>
References: <20260417160828.526063-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: <20260417160828.526063-1-andrew.cooper3@citrix.com>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 7bit
X-purgate-ID: tlsNG-d62444/1776674074-BDC64FF4-DDF4E661/0/0
X-purgate-type: clean
X-purgate-size: 634

On 17.04.2026 18:08, Andrew Cooper wrote:
> --- a/xen/arch/x86/include/asm/e820.h
> +++ b/xen/arch/x86/include/asm/e820.h
> @@ -25,7 +25,7 @@ struct e820map {
>  
>  extern int sanitize_e820_map(struct e820entry *biosmap, unsigned int *pnr_map);
>  extern int e820_all_mapped(u64 start, u64 end, unsigned type);
> -extern int reserve_e820_ram(struct e820map *map, uint64_t s, uint64_t e);
> +extern int __must_check reserve_e820_ram(struct e820map *map, uint64_t s, uint64_t e);

Nit: This line has grown too long now. With this and the adjustments Ross
has asked for:
Reviewed-by: Jan Beulich <jbeulich@suse.com>

Jan


From xen-devel-bounces@lists.xenproject.org Mon Apr 20 08:38:32 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 20 Apr 2026 08:38:32 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1285529.1566532 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wEk9C-0001jh-4D; Mon, 20 Apr 2026 08:38:26 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1285529.1566532; Mon, 20 Apr 2026 08:38: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 1wEk9C-0001ja-1K; Mon, 20 Apr 2026 08:38:26 +0000
Received: by outflank-mailman (input) for mailman id 1285529;
 Mon, 20 Apr 2026 08:38:24 +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 1wEk9A-0001jU-Fz
 for xen-devel@lists.xenproject.org; Mon, 20 Apr 2026 08:38:24 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wEk99-00CO6y-SM
 for xen-devel@lists.xenproject.org; Mon, 20 Apr 2026 10:38:23 +0200
Received: from [10.42.69.12] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <Michal.Orzel@amd.com>)
 id 69e5e5ff-5cb7-0a2a0a5109dd-0a2a450cd236-0
 for <xen-devel@lists.xenproject.org>; Mon, 20 Apr 2026 10:38:23 +0200
Received: from [52.101.62.3]
 (helo=DM5PR21CU001.outbound.protection.outlook.com)
 by tlsNG-d25034.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.1)
 (envelope-from <Michal.Orzel@amd.com>)
 id 69e5e5fd-62f1-0a2a450c0019-34653e032ae4-4
 for <xen-devel@lists.xenproject.org>; Mon, 20 Apr 2026 10:38:23 +0200
Received: from BL1PR13CA0061.namprd13.prod.outlook.com (2603:10b6:208:2b8::6)
 by MW4PR12MB7264.namprd12.prod.outlook.com (2603:10b6:303:22e::13)
 with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9846.15; Mon, 20 Apr
 2026 08:38:18 +0000
Received: from BL02EPF00021F6A.namprd02.prod.outlook.com
 (2603:10b6:208:2b8:cafe::88) by BL1PR13CA0061.outlook.office365.com
 (2603:10b6:208:2b8::6) with Microsoft SMTP Server (version=TLS1_3,
 cipher=TLS_AES_256_GCM_SHA384) id 15.20.9791.48 via Frontend Transport; Mon,
 20 Apr 2026 08:38:18 +0000
Received: from satlexmb08.amd.com (165.204.84.17) by
 BL02EPF00021F6A.mail.protection.outlook.com (10.167.249.6) with Microsoft
 SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id
 15.20.9791.48 via Frontend Transport; Mon, 20 Apr 2026 08:38:18 +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.17; Mon, 20 Apr
 2026 03:38:17 -0500
Received: from [10.71.194.215] (10.180.168.240) by satlexmb07.amd.com
 (10.181.42.216) with Microsoft SMTP Server id 15.2.2562.17 via Frontend
 Transport; Mon, 20 Apr 2026 03:38:16 -0500
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@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=RDiRExe6KOIVQPzeiPjuVqZaMqjMZaSx4BquvTp07X5tD3PA8A5nZHbow0Y2vz7ttpDCRTEaTY9dfnizRgnEyXgvrC6YuqldkAOUN2BS8BZK32bwqbrHIr7cXnnp8+Qj+3K+KquPtTwHC9lRmdr1RYogaUhq6GEZPzdf6oSnpJumE1K8q4olj7TbTXF//YwLfmuB0hQwdRm9Nd8zW0UXcbLsyvQXNZDVDEfvIVPepaRSLj9zTzyILrPbRqtKt+v3X/INXKDqpAuNEk8+05RNbm/0ReDgbO2LaPf38c7HaqblCtU7itjH8g6FJaYAuKf5Xm/7ZXFwEkiNDklASOZQ5Q==
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com;
 s=arcselector10001;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1;
 bh=WTfvdDCuCL1Q5XMGpRUHxrM/YnMeI6OVKCctNVHcjf8=;
 b=FVbiN0ODmeHdY2PMMHOuqQZy7XMQVorCZwHSMhYBKdWY9mNIfRPeb2iTPdegZB6MQcHsyRRpVSf1QMesnhV7wqcNIKJkXLKtqAqhe79dMh3PQ0uUcTVhb30dAJlWHCJH18Bj3Np8IDeui8woNmsZ8vWHbIhL4q+epcdq/eGFUHJWrrI/1HP6yBVREe9ppB/GM4Fqq6KBo1PLUTrsVR1kVfHk18VcKod9vx1AYNLnkhVU7bFPIii2Jd4RsSZDWL4hK7R5ixGN3uACuQDmzU10lNMdtSGJIUoyrTlV0rINR7QbXaZm8Zrlen6yCfBEvarQiYE0XD61Euk9rkvneU2BdA==
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=WTfvdDCuCL1Q5XMGpRUHxrM/YnMeI6OVKCctNVHcjf8=;
 b=rBbTa7S2a9vYAmp5WCmv7mus/SS0kGxhuZryjxaeObyf40j16ju/18DkwtdhjbPm6t+7z0WisI8y7JOZPWcKTs1r9tA7hSWrq7J2hdzWUeGrW1rtftFTVt3W1YP1C7KnyORqEnScPjPgI2oUQ/RDkaAYc7CKfb/ypTxp6o+1VTU=
X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 165.204.84.17)
 smtp.mailfrom=amd.com; dkim=none (message not signed)
 header.d=none;dmarc=pass action=none header.from=amd.com;
Received-SPF: Pass (protection.outlook.com: domain of amd.com designates
 165.204.84.17 as permitted sender) receiver=protection.outlook.com;
 client-ip=165.204.84.17; helo=satlexmb08.amd.com; pr=C
Message-ID: <c30e0162-aea4-41fe-a077-cb7c6e6b4d33@amd.com>
Date: Mon, 20 Apr 2026 10:38:11 +0200
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH] xen/arm: gic-v2: disable interrupt bypass on CPU shutdown
To: Mykola Kvach <xakep.amatop@gmail.com>, <xen-devel@lists.xenproject.org>
CC: Mykola Kvach <mykola_kvach@epam.com>, Stefano Stabellini
	<sstabellini@kernel.org>, Julien Grall <julien@xen.org>, Bertrand Marquis
	<bertrand.marquis@arm.com>, Volodymyr Babchuk <Volodymyr_Babchuk@epam.com>
References: <459cf46204e86ed3a2ffd79ae649b1a2051f5204.1775812563.git.mykola_kvach@epam.com>
From: "Orzel, Michal" <michal.orzel@amd.com>
Content-Language: en-US
In-Reply-To: <459cf46204e86ed3a2ffd79ae649b1a2051f5204.1775812563.git.mykola_kvach@epam.com>
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: 7bit
X-EOPAttributedMessage: 0
X-MS-PublicTrafficType: Email
X-MS-TrafficTypeDiagnostic: BL02EPF00021F6A:EE_|MW4PR12MB7264:EE_
X-MS-Office365-Filtering-Correlation-Id: 1beb2688-3f32-4537-3918-08de9eb82be0
X-MS-Exchange-SenderADCheck: 1
X-MS-Exchange-AntiSpam-Relay: 0
X-Microsoft-Antispam:
	BCL:0;ARA:13230040|36860700016|376014|1800799024|82310400026|56012099003|22082099003|18002099003;
X-Microsoft-Antispam-Message-Info:
	U7+4oM2FxHntrTOTJUu9FSyeS0rWeGhfay1SMOFUpYJC3HgUhlSwV2BX4bRybnLClu6LSCV5Lo2pJp4QDgrS0xJo6lkXc1KZ6+L0QiAYwdUXORlCuJOM2i6B6sX/XRqwR2TEEIXNiUMYUzZxmfZOul0Ocjv84PDDLO6pDj5Z4WIJ3piIUn6DCewUcZ+gOq3PPoeIMcRn20xT55J/3d24gaymZ9s42F5pSWSfa47oxJlrRw+QeOpzPdYIgJRQRsdvpJoonZqPXPhwaKxR2L4XKC8jDR/vCXL+QZ4IZWKXVeG+/xiZ9FFE8DIM710CVVgpJE+IV4OgQKGHNZbaocFeYl6NvehVA/QkJ8grIn4+MLNnOTtUC/P+1vYM4rvVFyY/pWqWLc2IixSLmVj7y7Yh36CjmXjdCZh5G2sw5ywVhPTrS+xdy8zMcKMjxZzgsJ44Cm/tt8qp1XWHH5q5h7Rhj4Cj9ggWLNQOJx5duMa+qwd2C0hfVz1IdI8BS252BQ8dtHar2edYNrEWTKMHpCFZ8RF/xcFEPW+v3eN/0na92LqhKCATulnRT2X/+aBhWowBmAy43VCWsn4saFf1QtbsHukVwWSi2qH1PoH0mmjMlGjxcD9qQiHUzHhtaM0MzV84xop4pKU67GWEEAPHz+1RbT2oX6xBn1QKbDyEXfVqpzfipxrIEtxoqQ30vv5D5v+2CtHbxgH9+0MdrrOISEqpRglznkMgd+EjAYPgkjjIDBAtYF/GseYZFEvE6AJWohYj5a5oV/g2ayPIom8kmETbLQ==
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)(376014)(1800799024)(82310400026)(56012099003)(22082099003)(18002099003);DIR:OUT;SFP:1101;
X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1
X-MS-Exchange-AntiSpam-MessageData-0:
	90ZKEa/NJh+CM33XnE66POzD1uha+Qhq+LPvOfn7cu/q7erccb1VYmCEm6EAD/Bu7RWGaVZ+1ggPb8rI6rMc/YaI5yfYLQR0ItZnhpybkYn3EXTBD6upaeWJtW5CWrPC3FLUB1tW4wCYDULpIk1scCRLirW3HmoNxMN8HrQ++HJsJd2JkFclPBtdyLYLD7q9O0goDivJ6vVp+3zbFTxcKLt9jBD5wyvSioK5UI3z2WmRDX0wCtXeafT7i/g87upwR7Dou2LV02VE/9sy7vS5HD0v8GiqPwt0ujWTRZ//+ykkZKnIC3Dy4/ZE4Dw4ofjLLBWlwMNHJtNnOxiZoNUVa2LkLu+i+qmYA1qPXF6V70m5jn7XGErZdgc7XenZVGgyNPtlo/Na5NuGWXs42LHxPTWH8eF2vLs2CmU8SkTYr58wuDbjVM2sYLVr6ghjehRn
X-OriginatorOrg: amd.com
X-MS-Exchange-CrossTenant-OriginalArrivalTime: 20 Apr 2026 08:38:18.0118
 (UTC)
X-MS-Exchange-CrossTenant-Network-Message-Id: 1beb2688-3f32-4537-3918-08de9eb82be0
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:
	BL02EPF00021F6A.namprd02.prod.outlook.com
X-MS-Exchange-CrossTenant-AuthAs: Anonymous
X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem
X-MS-Exchange-Transport-CrossTenantHeadersStamped: MW4PR12MB7264
X-purgate-ID: tlsNG-d25034/1776674303-6D161CF5-3CC8634D/0/0
X-purgate-type: clean
X-purgate-size: 1429

Hmm, this landed in my junk folder.

On 10/04/2026 11:36, Mykola Kvach wrote:
> From: Mykola Kvach <mykola_kvach@epam.com>
> 
> The GICv2 CPU shutdown path currently writes 0 to GICC_CTLR.
> 
> Per IHI0048B.b section 2.3.1, clearing IRQBypDisGrp{0,1} and
> FIQBypDisGrp{0,1} selects bypass rather than deasserted interrupt
> outputs when the CPU interface stops driving them. Tables 2-2 and 2-3
> show that a zeroed GICC_CTLR can fall back to the legacy IRQ/FIQ inputs
> instead of fully disabling the interface.
> 
> Fix this by reading GICC_CTLR, setting the bypass-disable bits, and
> clearing both group-enable bits before writing the value back. Keep the
> existing GICC_CTL_ENABLE definition for the init path and use a separate
> mask for the shutdown-side group-enable handling.
IIUC we don't need to worry about not setting the bypass-disable bits in cpu
init (we only set group 0 and EOI) because they are relevant only when the bit 0
is disabled i.e. the path this patch changes?

> 
> Section 2.3.2 also states that wakeup event signals remain available
> even when both GIC interrupt signaling and interrupt bypass are
> disabled, so disabling bypass does not break the power-management use
> case, i.e. suspend modes.
> 
> Fixes: 5e40a1b4351e ("arm: SMP CPU shutdown")
> Signed-off-by: Mykola Kvach <mykola_kvach@epam.com>
Reviewed-by: Michal Orzel <michal.orzel@amd.com>

~Michal



From xen-devel-bounces@lists.xenproject.org Mon Apr 20 08:49:50 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 20 Apr 2026 08:49:50 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1285539.1566541 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wEkK9-0003VN-1U; Mon, 20 Apr 2026 08:49:45 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1285539.1566541; Mon, 20 Apr 2026 08: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 1wEkK8-0003VG-V7; Mon, 20 Apr 2026 08:49:44 +0000
Received: by outflank-mailman (input) for mailman id 1285539;
 Mon, 20 Apr 2026 08:49:43 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <Christian.Koenig@amd.com>) id 1wEkK7-0003VA-Cj
 for xen-devel@lists.xenproject.org; Mon, 20 Apr 2026 08:49:43 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wEkK5-00H5QS-9t
 for xen-devel@lists.xenproject.org; Mon, 20 Apr 2026 10:49:41 +0200
Received: from [10.42.69.5] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <Christian.Koenig@amd.com>)
 id 69e5e896-e002-0a2a0a5209dd-0a2a450584b2-44
 for <xen-devel@lists.xenproject.org>; Mon, 20 Apr 2026 10:49:40 +0200
Received: from [52.101.43.20]
 (helo=SJ2PR03CU001.outbound.protection.outlook.com)
 by tlsNG-c201ff.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.1)
 (envelope-from <Christian.Koenig@amd.com>)
 id 69e5e8a2-aaa8-0a2a45050019-34652b14676e-4
 for <xen-devel@lists.xenproject.org>; Mon, 20 Apr 2026 10:49:40 +0200
Received: from SJ0PR12MB5673.namprd12.prod.outlook.com (2603:10b6:a03:42b::13)
 by CH1PPF6D0742E7B.namprd12.prod.outlook.com
 (2603:10b6:61f:fc00::613) with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9846.8; Mon, 20 Apr
 2026 08:49:34 +0000
Received: from SJ0PR12MB5673.namprd12.prod.outlook.com
 ([fe80::c3e5:48f8:beb6:ea68]) by SJ0PR12MB5673.namprd12.prod.outlook.com
 ([fe80::c3e5:48f8:beb6:ea68%5]) with mapi id 15.20.9846.014; Mon, 20 Apr 2026
 08:49: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=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=Jh46c+snIxoX4nH777OfacfINYs2xznCoEmG0piKlnrcFvUC/GIjEdAMvBiZ0I3IfqbA2rdmCozR+gDtG7nwtU7xoMN4tvC6UQViNa2l8HsuTh58S4RRXpZ6PgtL2s5+h322+9y967+9lfGyquJg7i/gHcJrHZbaZMSVkur6ipsWwOZ08ltPP6apEGXwHY2EYrZ6nwwZsJCuI5DLggjUTqskh+huBgjvjDD53sB9dOazGE4s3fyFWLGNbrlSBeeUUC38WXp0sHrZCSXLSe4l27OFeKklmiO9PJkpUPYoGPh28GShXP14UG20TEBKGaJvptfqbilbGprlP5lrYC5M9w==
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com;
 s=arcselector10001;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1;
 bh=zsDrcaNrUkCXNMufmLhSGq4a1iTV4V5vsYmPV2fsJR8=;
 b=oGLQD/7sBNo4UBN0tTrM1QHAcUetvekOTmbcKStsATy9XwmXA0sXCgD5ayE4Apom4xFOImwIXLeUR8bzDqFyMcjvLJnKVLBOvyaBCbMaDA1kHiHsCDgODFYzre16AOWbAqMD+sSVBlpZOZcts3UZn0+QQ53btO7VGhZ1OjXWvdfvIg7uYAMV+FLmQwyXbbJ9+OGnzZTDFULF8ofCs6WDickLVmvUth+8B31NOK0UKmyiVFJAP8Fm5Na6tqi8sgwc2YF85w6Nx1l/wN9PO2ki0t0wTnUhFS9Oqeh8AkeMG9YQuSYt4n4wyn0yfH1mIQ20g5RdJbW4Rv/8Voocxqbdpg==
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=zsDrcaNrUkCXNMufmLhSGq4a1iTV4V5vsYmPV2fsJR8=;
 b=t4FdsTlWK6acs+uLIEv84DvBMpmRRPGGYpIyb2q7tIm2VPWzcr/QbgLbbNEwjFfbi1DdI95N4vvc07OKXvEvZRxnOXBcxq4TekxDNjhZsm2cS0vvc81VULsvB9KKTD7KCaSbMQ+2Qa+YyINI4LGu+k2dMM0fCKOavvM9pr4o3/g=
Authentication-Results: dkim=none (message not signed)
 header.d=none;dmarc=none action=none header.from=amd.com;
Message-ID: <8fe8b78b-5294-4319-af92-a4fb00527417@amd.com>
Date: Mon, 20 Apr 2026 10:49:19 +0200
User-Agent: Mozilla Thunderbird
Subject: Re: Pinned, non-revocable mappings of VRAM: will bad things happen?
To: Demi Marie Obenour <demiobenour@gmail.com>,
 dri-devel@lists.freedesktop.org,
 Xen developer discussion <xen-devel@lists.xenproject.org>,
 linux-media@vger.kernel.org
Cc: Val Packett <val@invisiblethingslab.com>,
 Suwit Semal <sumit.semwal@linaro.org>
References: <a06133f7-3093-4733-9786-bc46c1453e06@gmail.com>
 <b8d04414-18b5-40f7-9ea2-88b30ff5bea0@amd.com>
 <c7865b27-6bf1-4df1-9520-c9ef6b3ef368@gmail.com>
 <4751cf03-d3c1-4d5d-af8e-39ad7c8ffb84@amd.com>
 <7472bfcf-8c22-4ac7-b903-a883cdb8f1c6@gmail.com>
Content-Language: en-US
From: =?UTF-8?Q?Christian_K=C3=B6nig?= <christian.koenig@amd.com>
In-Reply-To: <7472bfcf-8c22-4ac7-b903-a883cdb8f1c6@gmail.com>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
X-ClientProxiedBy: MN0PR02CA0016.namprd02.prod.outlook.com
 (2603:10b6:208:530::14) To SJ0PR12MB5673.namprd12.prod.outlook.com
 (2603:10b6:a03:42b::13)
MIME-Version: 1.0
X-MS-PublicTrafficType: Email
X-MS-TrafficTypeDiagnostic: SJ0PR12MB5673:EE_|CH1PPF6D0742E7B:EE_
X-MS-Office365-Filtering-Correlation-Id: 98689cc9-59bd-445d-e193-08de9eb9be74
X-MS-Exchange-SenderADCheck: 1
X-MS-Exchange-AntiSpam-Relay: 0
X-Microsoft-Antispam:
	BCL:0;ARA:13230040|376014|366016|1800799024|56012099003|22082099003|18002099003;
X-Microsoft-Antispam-Message-Info:
	+XAwL9tin4y75mfpeY78I1nRzW8iBdYspBxw9Pxhl8JrFjDKFS13+gUHoMi8CVYheJxcu53js2XRK0sOlhRywmo7TGlEOs7J8QGlMz26a1djMb4yhD8IF0fe6fipq7edwi0E0aYHzdJF4JYuvB0Y13kY/WREKNXX9kckXNrskc1wAlEyLthOwVwVzkH6bIeyv+H3EbCesHyovZEGiWsz2WBn0rVEzZaiqneiVEpfVKHcfxRe5vkYg+JsDriwypqkshYJysMr/M82x0KDlORYc701byk/wNYESFsEr4jFybig4UH7NunZ+4Kkvs+0TUjhRlxDt/Ek05ad1eMY+aPtdNCQa9rVf6Truq8E0PrYA2aFim4XIAHO3YVdv2M6SQ8vz0bdvb3Ulq4lUSr2J914VzDdTbLc/6tR+8PHiRx/wAxmP9F0nlzNJcgeWBdv+mm/tL/OZ4CgSbhdB2+aTCjWy5xm6YUzeYkN4i7c9ySqE1uHZgENDN/rjhLc6QUeIi4r02u5oRDyZWxpMw1PPo3zaF19kau0oKDkvB5k+c73+4dClsb628YMU2EdQ65ZTOLUgR/Fe9ZHsYrcCSor2OwabGvmkP8uLgeFyWbeVCDEok+xGydMQr2SKgADo7Ef95iH26DArplVb5cUMa+qf1uJy8m8IFwQ7AdInyj/Npj912LiktYqKNmKpUXNGlvo8p+c31GADPkU0G9t7uZs/58D9eClrZswlBi3hlR7f9ydv3s=
X-Forefront-Antispam-Report:
	CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:SJ0PR12MB5673.namprd12.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(376014)(366016)(1800799024)(56012099003)(22082099003)(18002099003);DIR:OUT;SFP:1101;
X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1
X-MS-Exchange-AntiSpam-MessageData-0:
	=?utf-8?B?bWlvSFpLUmNpZGhWb0lZSWg2ZEN5VXBITDZUa3hTRTE4WllTdzJWTFM1NVRY?=
 =?utf-8?B?cmE3UXRRNDFpdFBUbUY1QkE3QUJUWmxaSnJDaU9HaEVMYmN5MTQ5YnFTK1VL?=
 =?utf-8?B?RnNITlFFdEU2SkNsbG5FUHA3Ukd1eDVHdDJDN2NNTU5Wa3B2RWp3NE9jcVND?=
 =?utf-8?B?RElCcnpGNkZ6U3ZnZkFXR3pKaVcweERTbEFQUzRNMjN3NElUNU16YVdPbWdP?=
 =?utf-8?B?and6K1FjbmdRdGFtemk4L2dCRkl6OGxaUWl2SGdTcVBySC9nSVJCTSt6c0JD?=
 =?utf-8?B?UEpOeTRGbVFoVU1WSmxpeDVET1RGQ2FpR2xjK2g3SlFDNWJZSjZadGJ1ZWZt?=
 =?utf-8?B?M3htM3NmQk9mQWlYemtJVW1zNVpiVWVqYzVVU0VpRXVlQjZpU1NkMEgzM2Zi?=
 =?utf-8?B?YUxJK2p4NWRzUzRFMVVMMDAxamlHSmtWdXF3NmZJV3dLZmhjMGYrU0F3Yytp?=
 =?utf-8?B?REFISmMrazBIbUFHSkJ3QkV0UVd2a3IxR28wNFFmUXJHODRRV2JTMWxWNjhS?=
 =?utf-8?B?c2dTbCtMZXNqcjV0VzhzbWNKMVNSbFB1WjI5Z3orbjROTVFLTTZVNVUxMUo5?=
 =?utf-8?B?OFAyUjUzdEI5ZjBRUllDTllYWkxZSC9ud3FCRXptT0FuR0o1aWtOa1ZlbFF0?=
 =?utf-8?B?WTV4VDRheE03QkNESWRRWHBOS2pQQTN0emlxYUdxL1VHTy9EVmh6bGpKcmFW?=
 =?utf-8?B?VTNYYTFMMWo0bG1LMngvMi9GdU53UW5WVWNHSjZVUWowR2M1MU5saVRwSlBF?=
 =?utf-8?B?ekxkQU0wOXBaekNNdm1EaytZNW1qWUx1UWl3V2NRcTFEUGpyQXk5dXA0dmdE?=
 =?utf-8?B?cE5lMldNV0VQUmJ2S2h4dmZDdnA1QmdtL2h1anRUSGxnZFBKZEdvdHE0OEt0?=
 =?utf-8?B?cHBPZUorVkUyamsvcFgzWUROZXRzMVJYNE8zYWM2a3d2NzhxR0I1RGo0WUN5?=
 =?utf-8?B?Q1RNSnl1emxLOUtCcktNTktnSWRwOWxwL3ZTZjBXMkZwNkovSjM4SDRKZGdn?=
 =?utf-8?B?bm05dm1ueTAvSklKSEd5QUE4WTArdis4M1JhcXpZNXhHSTF2TVdHcjBTQzYz?=
 =?utf-8?B?ZnJDd0xDZDJMVWdkcWpEaG81ekdEbk1La0xJTDhCYStEZmVwamtLVEZyZzR3?=
 =?utf-8?B?R00rUlZPTmJNZU1UeWlsQmxUUWl3S2lYL2gveGdaZGd6cVB2WkpRUUhQT0Vw?=
 =?utf-8?B?emNvUTFUZStDa0lrUExOeDJqSEg0Ylg5YlhZWTVEMGxkUlhpUCtsNHp0azV0?=
 =?utf-8?B?SjhTekVya1JxM2JGaTNyakliUFJiZFlDbERIWXJIRkJncWQzZTZSZktrQ2c2?=
 =?utf-8?B?RFlNdFRTejlwQS9hY1QwMGxjME1IbHRoZ2RURmtlendiMER0K2V5TUhwRGto?=
 =?utf-8?B?RjJqN080czlHV2FScVp2T0Nxb2cyVXZCSU4rVHR0bmF4TldqVzgzemQvcVUv?=
 =?utf-8?B?bXlNRU8wS202YnhQRE1jSFpjNklLdFlXZVJtbElUZVJUSW1yK1NDcklJMEcw?=
 =?utf-8?B?cjFoc3A4Y0I4bGdzNVVHVU11WmQzOTVXbmNkVEtWdWFvRzBpR1QwRmsrd0Va?=
 =?utf-8?B?bitlQVJXRFBrRGVUZ0hBQU1hSU12cU01dUtaWjVVaVQzem9GK1JTRFVsb1Ri?=
 =?utf-8?B?MVoxY0Z1enFtYjlPSFRwTWJKbHlGaHJWU0RKclk3b1Z3UENRQlVLWFdzUzVN?=
 =?utf-8?B?bDlvRlFtcGdhVEFBT0N0aWVGaDVheFAvbDgvWllYekVXcGU5WHFBMXg4Vm14?=
 =?utf-8?B?YUtvbXY0UzhpWE5RNTkxSWk5TmVvckZZR2dDdi9MSUUzQ2NPUkh3RmFMNlhh?=
 =?utf-8?B?RGQyeEVPR1NFNTV1ZXhvcWFOK3hWOXdkLzZDYlZuYXVCcEtaRHlhdlVETUVJ?=
 =?utf-8?B?Ty8rNXVYNWRyNFo4aSt4WGgveWxVVEc3TFczUjdLaWF4bDZ3RHUrekpRZFFK?=
 =?utf-8?B?SnBoWTZ1aVRSTXp4Umc5VHoyTjRtZGpQd282VXM1REFsVklZTS9uRnAzRHNa?=
 =?utf-8?B?UTVURUlpaDlMR3JobkYxUjZVRkNNZXVUTmJEYURTdmhIamJ4ajBYRmRoYUd3?=
 =?utf-8?B?YXFmNjR0QjJwSGhsUnRONktHRzFVbHd3SzAyTVQ2TFNsRFhqS01uRENGSm01?=
 =?utf-8?B?S3dxOEFSckh2YjJXRXhtUnptVlVKOUY5aE1HYXprWGt1TXYzVE90enBRcGU0?=
 =?utf-8?B?U3ovYmNVRlNGaDlTUDFpK1pvWG5QVDdqT1J0OWdDVGRwVTJ1dURnZ09mREJG?=
 =?utf-8?B?MGdQTkFRalpTZW9UTDZKYUpPb1hnQ0p5UG5hblFrZHkxRlBGTU90WEhTVzY3?=
 =?utf-8?Q?37HLKVtdCnOfqq24jU?=
X-OriginatorOrg: amd.com
X-MS-Exchange-CrossTenant-Network-Message-Id: 98689cc9-59bd-445d-e193-08de9eb9be74
X-MS-Exchange-CrossTenant-AuthSource: SJ0PR12MB5673.namprd12.prod.outlook.com
X-MS-Exchange-CrossTenant-AuthAs: Internal
X-MS-Exchange-CrossTenant-OriginalArrivalTime: 20 Apr 2026 08:49:33.8690
 (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: L4AOF/wSRw0kWpgFsMG7PMglELLckluyinfWDWX3HxcHZmptE+iGzvQbn09MZPy9
X-MS-Exchange-Transport-CrossTenantHeadersStamped: CH1PPF6D0742E7B
X-purgate-ID: tlsNG-c201ff/1776674980-E99A5443-07E0206A/0/0
X-purgate-type: clean
X-purgate-size: 3532

On 4/17/26 21:35, Demi Marie Obenour wrote:
> On 4/17/26 03:53, Christian König wrote:
>> On 4/16/26 18:13, Demi Marie Obenour wrote:
>>> On 4/16/26 05:57, Christian König wrote:
...
>>> Unless I am
>>> mistaken, client workloads are highly non-uniform: a single game or
>>> compute job might well use more VRAM than every other program on the
>>> system combined.
>>
>> Yeah, perfectly correct.
>>
>>> Are these workloads impossible to make work well with pinning?
>>
>> No, as long as you don't know the workload beforehand, e.g. when you define the limit.
>>
>> I mean that's why basically everybody avoids pinning and assigning fixed amounts of resources.
>>
>> Even if you can make it work technically pinning usually results in a rather bad end user experience.
>>
>> Regards,
>> Christian.
> 
> Do drivers and programs assume that they can access VRAM from the CPU?

Yes, and that is actually really important for performance.

That's why Alex and I came up with the idea of using the resize able BAR feature to access all of VRAM on modern GPUs.

There are a couple of hacks which have been implemented over the years for exotic platforms were MMIO/VRAM access was problematic. For example on a page fault you use a GPU DMA engine to copy the VRAM buffer into system memory, make the CPU memory access and then copy it back again on demand at the next command submission.

But all of those hacks are basically just prove of concepts and result in completely unusable performance.

> Are any of the following reasonable options?
> 
> 1. Change the guest kernel to only map (and thus pin) a small subset
>    of VRAM at any given time.  If unmapped VRAM is accessed the guest
>    traps the page fault, evicts an old VRAM mapping, and creates a
>    new one.

Yeah, that could potentially work.

This is basically what we do on the host kernel driver when we can't resize the BAR for some reason. In that use case VRAM buffers are shuffled in and out of the CPU accessible window of VRAM on demand.

> 2. Pretend that resizable BAR is not enabled, so the guest doesn't
>    think it can map much of VRAM at once.  If resizable BAR is enabled
>    on the host, it might be possible to split the large BAR mapping
>    in a lot of ways.

That won't work. The userspace parts of the driver stack don't care how large the BAR to access VRAM with the CPU is.

The expectation is that the kernel driver makes thing CPU accessible as needed in the page fault handler.

It is still a good idea for your solution #1 to give the amount of "pin-able" VRAM to the userspace stack as CPU visible VRAM limit so that test cases and applications try to lower their usage of VRAM, e.g. use system memory bounce buffers when possible.

> Or does Xen really need to allow the host to handle guest page faults?
> That adds a huge amount of complexity to trusted and security-critical
> parts of the system, so it really is a last resort.  Putting the
> complexity in to the guest virtio-GPU driver is vastly preferable if
> it can be made to work well.

Well the nested page fault handling KVM offers has proven to be extremely useful. So when XEN can't do this it is clearly lacking an important feature.

But I have one question: When XEN has a problem handling faults from the guest on the host then how does that work for system memory mappings?

There is really no difference between VRAM and system memory in the handling for the GPU driver stack.

Regards,
Christian.


From xen-devel-bounces@lists.xenproject.org Mon Apr 20 09:38:44 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 20 Apr 2026 09:38:44 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1285558.1566550 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wEl5N-0001Dt-ID; Mon, 20 Apr 2026 09:38:33 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1285558.1566550; Mon, 20 Apr 2026 09: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 1wEl5N-0001Dm-Fc; Mon, 20 Apr 2026 09:38:33 +0000
Received: by outflank-mailman (input) for mailman id 1285558;
 Mon, 20 Apr 2026 09:38:32 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <bounce-md_30504962.69e5f415.v1-2562406edfd4437cb382af627caa7011@bounce.vates.tech>)
 id 1wEl5M-0001Dg-He
 for xen-devel@lists.xenproject.org; Mon, 20 Apr 2026 09:38:32 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wEl5L-00AEIs-QA
 for xen-devel@lists.xenproject.org; Mon, 20 Apr 2026 11:38:31 +0200
Received: from [10.42.69.10] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1) (envelope-from
 <bounce-md_30504962.69e5f415.v1-2562406edfd4437cb382af627caa7011@bounce.vates.tech>)
 id 69e5f412-5cb7-0a2a0a5109dd-0a2a450a9e6c-20
 for <xen-devel@lists.xenproject.org>; Mon, 20 Apr 2026 11:38:31 +0200
Received: from [198.2.137.11] (helo=mail137-11.atl71.mandrillapp.com)
 by tlsNG-4011c0.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.1)
 (envelope-from
 <bounce-md_30504962.69e5f415.v1-2562406edfd4437cb382af627caa7011@bounce.vates.tech>)
 id 69e5f415-56b3-0a2a450a0019-c602890b5271-3
 for <xen-devel@lists.xenproject.org>; Mon, 20 Apr 2026 11:38:31 +0200
Received: from mta004-md-usw2.delv.a.intuit.com (localhost [127.0.0.1])
 by mail137-11.atl71.mandrillapp.com (Mailchimp) with ESMTP id
 4fzgQs3lJ1zDRT5HY
 for <xen-devel@lists.xenproject.org>; Mon, 20 Apr 2026 09:38:29 +0000 (UTC)
Received: from [37.26.189.201] by mandrillapp.com id
 2562406edfd4437cb382af627caa7011; Mon, 20 Apr 2026 09: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=mte1 header.d=mandrillapp.com header.i="@mandrillapp.com" header.h="From:Subject:To:Cc:Message-Id:Feedback-ID:Date:MIME-Version:Content-Type:Content-Transfer-Encoding"; dkim=pass header.s=mte1 header.d=vates.tech header.i="julian.vetter@vates.tech" header.h="From:Subject:To:Cc:Message-Id:Feedback-ID:Date:MIME-Version:Content-Type:Content-Transfer-Encoding"
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=mandrillapp.com;
	s=mte1; t=1776677909; x=1776947909;
	bh=QE5mUC97O9np+hjQ/d+sTOK0LSQ1Hp/wQ2SjgL069Qk=;
	h=From:Subject:To:Cc:Message-Id:Feedback-ID:Date:MIME-Version:
	 Content-Type:Content-Transfer-Encoding:CC:Date:Subject:From;
	b=XZRGFnAI38bN9P5WCnMjJrELG/LITRa12DYRre5vuTGYsXct7o7JOGe6EoFPB8US6
	 +C2Mfc89xXZXZ+bdVR3IYX985NL/MSLnGW54+9kcd17hAc7aeCY1Q45+WGbjOVO7ux
	 RyjdVYgPLBHxUfgkifIWgTPRUCUc1rE1dXyKlVzwcV0Paudu6tE3EEQa7xAqEBDowd
	 5utMCQkJtRRcHWFuUAd0XSIt3NHtaOJHrcCv/ijgfmrWo2ZdNG3qWMMVUqYk6gk4mH
	 Vhqt/FjWQvjLdyjt8m5dSrLDHw89IcZYF7JlFowMDTUXXS+L+I4WaD4r+i5KnIYaJe
	 iyC6+zWapJQVQ==
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=vates.tech; s=mte1;
	t=1776677909; x=1776938409; i=julian.vetter@vates.tech;
	bh=QE5mUC97O9np+hjQ/d+sTOK0LSQ1Hp/wQ2SjgL069Qk=;
	h=From:Subject:To:Cc:Message-Id:Feedback-ID:Date:MIME-Version:
	 Content-Type:Content-Transfer-Encoding:CC:Date:Subject:From;
	b=MuNphuZzYgliH+3rPVvCBNynLpLIH9FzUO0S2pkiQEn1iHVNuI/AFsVUpk/iQxn2e
	 LfSIJnCnxuh+6VQAiWfVRhoOTEHCTaXYzEJRGM+ORNa0N6HmiIRE6ayXImrq5r7fxc
	 r6G+wuoDxftfM7faO3qklULSN8d7NQoUrtTO5Hn6LTVbLxxX1HkAjEie4lqWzs740m
	 tX3rDWgCh57uVQL4mJi2SWEael0DHeiw1PpeUXwOSBfLrFgUs5HAHgkDOffgfJrGv8
	 ne1BgGZ672vcPiqKiDrI4SpIDH7Vp1q/TGrhCdMdfCXIvOTkl9TUyzkloEk3x2G3MS
	 d4o1Cs4Vz20jg==
From: "Julian Vetter" <julian.vetter@vates.tech>
Subject: =?utf-8?Q?[PATCH=20v6=200/3]=20Support=20multiple=20ioreq=20pages?=
X-Mailer: git-send-email 2.53.0
X-Bm-Disclaimer: Yes
X-Bm-Milter-Handled: 4ffbd6c1-ee69-4e1b-aabd-f977039bd3e2
X-Bm-Transport-Timestamp: 1776677908510
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.pau@citrix.com>, "Anthony PERARD" <anthony.perard@vates.tech>, "Michal Orzel" <michal.orzel@amd.com>, "Julien Grall" <julien@xen.org>, "Stefano Stabellini" <sstabellini@kernel.org>, "Julian Vetter" <julian.vetter@vates.tech>
Message-Id: <20260420093820.825969-1-julian.vetter@vates.tech>
X-Native-Encoded: 1
X-Report-Abuse: =?UTF-8?Q?Please=20forward=20a=20copy=20of=20this=20message,=20including=20all=20headers,=20to=20abuse@mandrill.com.=20You=20can=20also=20report=20abuse=20here:=20https://mandrillapp.com/contact/abuse=3Fid=3D30504962.2562406edfd4437cb382af627caa7011?=
X-Mandrill-User: md_30504962
Feedback-ID: 30504962:30504962.20260420:md
Date: Mon, 20 Apr 2026 09:38:29 +0000
MIME-Version: 1.0
Content-Type: text/plain; charset=utf-8
Content-Transfer-Encoding: 7bit
X-purgate-ID: tlsNG-4011c0/1776677911-80C788B7-73BFD4C6/0/0
X-purgate-type: clean
X-purgate-size: 1241

Hello Jan,
thank you again for your thorough feedback. I have addressed your
comments. I just have one remaining issue. For the temporary MFNs array
I now use a static array, i.e., mfns[IOREQ_NR_PAGES_MAX], with a
IOREQ_NR_PAGES_MAX = DIV_ROUND_UP(HVM_MAX_VCPUS, PAGE_SIZE / sizeof(ioreq_t)).
Is this appropriate? Or should I leave the HVM_MAX_VCPUS out of this and
instead use a fixed constant value? Also for now I haven't taken the
path to permanently store the MFNs as you suggested. I'm not sure, but I
don't think it's really necessary. Since this array will rarely exceed
the size of 2 or 3.

Signed-off-by: Julian Vetter <julian.vetter@vates.tech>
---
Julian Vetter (3):
  ioreq: switch ioreq page allocation to vmap
  ioreq: Indent ioreq_server_alloc_mfn() body one level deeper
  x86/ioreq: Extend ioreq server to support multiple ioreq pages

 xen/arch/x86/hvm/ioreq.c |  63 ++++++++++++++++---
 xen/common/ioreq.c       | 127 ++++++++++++++++++++++++++-------------
 xen/include/xen/ioreq.h  |  13 +++-
 3 files changed, 151 insertions(+), 52 deletions(-)

-- 
2.53.0



--
Julian Vetter | Vates Hypervisor & Kernel Developer

XCP-ng & Xen Orchestra - Vates solutions

web: https://vates.tech



From xen-devel-bounces@lists.xenproject.org Mon Apr 20 09:38:44 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 20 Apr 2026 09:38:44 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1285559.1566561 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wEl5P-0001Qy-PL; Mon, 20 Apr 2026 09:38:35 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1285559.1566561; Mon, 20 Apr 2026 09:38: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 1wEl5P-0001Qr-Ld; Mon, 20 Apr 2026 09:38:35 +0000
Received: by outflank-mailman (input) for mailman id 1285559;
 Mon, 20 Apr 2026 09:38:34 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <bounce-md_30504962.69e5f417.v1-52cc267a23d34b12b2a72cd81a0c3c36@bounce.vates.tech>)
 id 1wEl5O-0001Lg-7E
 for xen-devel@lists.xenproject.org; Mon, 20 Apr 2026 09:38:34 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wEl5M-007TdJ-2M
 for xen-devel@lists.xenproject.org; Mon, 20 Apr 2026 11:38:33 +0200
Received: from [10.42.69.5] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1) (envelope-from
 <bounce-md_30504962.69e5f417.v1-52cc267a23d34b12b2a72cd81a0c3c36@bounce.vates.tech>)
 id 69e5f419-2eae-0a2a0a5409dd-0a2a4505e70c-0
 for <xen-devel@lists.xenproject.org>; Mon, 20 Apr 2026 11:38:33 +0200
Received: from [198.2.137.11] (helo=mail137-11.atl71.mandrillapp.com)
 by tlsNG-c201ff.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.1)
 (envelope-from
 <bounce-md_30504962.69e5f417.v1-52cc267a23d34b12b2a72cd81a0c3c36@bounce.vates.tech>)
 id 69e5f417-aaa8-0a2a45050019-c602890bad21-3
 for <xen-devel@lists.xenproject.org>; Mon, 20 Apr 2026 11:38:33 +0200
Received: from mta004-md-usw2.delv.a.intuit.com (localhost [127.0.0.1])
 by mail137-11.atl71.mandrillapp.com (Mailchimp) with ESMTP id
 4fzgQv3Wr5zDRT7yQ
 for <xen-devel@lists.xenproject.org>; Mon, 20 Apr 2026 09:38:31 +0000 (UTC)
Received: from [37.26.189.201] by mandrillapp.com id
 52cc267a23d34b12b2a72cd81a0c3c36; Mon, 20 Apr 2026 09: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=mte1 header.d=mandrillapp.com header.i="@mandrillapp.com" header.h="From:Subject:To:Cc:Message-Id:In-Reply-To:References:Feedback-ID:Date:MIME-Version:Content-Type:Content-Transfer-Encoding"; dkim=pass header.s=mte1 header.d=vates.tech header.i="julian.vetter@vates.tech" header.h="From:Subject:To:Cc:Message-Id:In-Reply-To:References:Feedback-ID:Date:MIME-Version:Content-Type:Content-Transfer-Encoding"
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=mandrillapp.com;
	s=mte1; t=1776677911; x=1776947911;
	bh=gSN+dG6DEEzuWv6g//ewPcup5z/eGaDyrl5RwIr2Dy4=;
	h=From:Subject:To:Cc:Message-Id:In-Reply-To:References:Feedback-ID:
	 Date:MIME-Version:Content-Type:Content-Transfer-Encoding:CC:Date:
	 Subject:From;
	b=BQ+eryZrCpEcJoM3E9l+lkBeQzs8Xp8zfqBe/TEfywfJFmnMU95BYvr44mIIb4ajO
	 YR3ONlllI3vTjxGUmCB5lHiVUyaG68fQvZKEOtAam//COjgAZcm8btxHVapng8Iktq
	 pWhT/IxNGiFMLuBNNP7eKPZBRp9HuacLGiCLAKCYsFY0MtNFeH0Q2wFy+I5j1B4ZuL
	 2gGIp18EG+HeQ9BY3yVzaoXVIZbDEB1IuMc+ZOcJp54qW6Dk6MOsqVI2/E9aVqzBUn
	 UKh2kvA9CINu/PvyTLsqcLExVECbDj4E3vcIOszjs6OSgxm0/iRb7qGe34Wx/ZC5aS
	 rsLct+WyO3TWw==
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=vates.tech; s=mte1;
	t=1776677911; x=1776938411; i=julian.vetter@vates.tech;
	bh=gSN+dG6DEEzuWv6g//ewPcup5z/eGaDyrl5RwIr2Dy4=;
	h=From:Subject:To:Cc:Message-Id:In-Reply-To:References:Feedback-ID:
	 Date:MIME-Version:Content-Type:Content-Transfer-Encoding:CC:Date:
	 Subject:From;
	b=Pd8dOW1Xn9C5vBAXW2NBwKw9bIiJU3AMDc80V2pFkPxST9r+Bwh4Kzdv/oeWPgGx6
	 8te7ePDA0cD7EQpk8zg5/J+fVvkje9l5KiGqoUQNwFI+zv4Tgiu9sXyqdSoR8QVdar
	 MMeZMrvUhXe4dHsWicCuNZvPOlhkwu1kUOKO0P2di4qUJuJYFfIBq7eMeGfJ+3C+y9
	 inJRBV2TwURIbm7tRfK9UV2K1E+NBl8GjJ+IAiDFSjobxjQGGJVuT15yq7bX+dnlcx
	 jEOMmJhiCDGybPk/VYSDb4jghGJeIgggiKDFTUBtaB2bcvp77QC77oOhONbsh5MErG
	 jkA8MHCLIM4MA==
From: "Julian Vetter" <julian.vetter@vates.tech>
Subject: =?utf-8?Q?[PATCH=20v6=201/3]=20ioreq:=20switch=20ioreq=20page=20allocation=20to=20vmap?=
X-Mailer: git-send-email 2.53.0
X-Bm-Disclaimer: Yes
X-Bm-Milter-Handled: 4ffbd6c1-ee69-4e1b-aabd-f977039bd3e2
X-Bm-Transport-Timestamp: 1776677910519
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.pau@citrix.com>, "Anthony PERARD" <anthony.perard@vates.tech>, "Michal Orzel" <michal.orzel@amd.com>, "Julien Grall" <julien@xen.org>, "Stefano Stabellini" <sstabellini@kernel.org>, "Julian Vetter" <julian.vetter@vates.tech>
Message-Id: <20260420093820.825969-2-julian.vetter@vates.tech>
In-Reply-To: <20260420093820.825969-1-julian.vetter@vates.tech>
References: <20260420093820.825969-1-julian.vetter@vates.tech>
X-Native-Encoded: 1
X-Report-Abuse: =?UTF-8?Q?Please=20forward=20a=20copy=20of=20this=20message,=20including=20all=20headers,=20to=20abuse@mandrill.com.=20You=20can=20also=20report=20abuse=20here:=20https://mandrillapp.com/contact/abuse=3Fid=3D30504962.52cc267a23d34b12b2a72cd81a0c3c36?=
X-Mandrill-User: md_30504962
Feedback-ID: 30504962:30504962.20260420:md
Date: Mon, 20 Apr 2026 09:38:31 +0000
MIME-Version: 1.0
Content-Type: text/plain; charset=utf-8
Content-Transfer-Encoding: 7bit
X-purgate-ID: tlsNG-c201ff/1776677913-E1FDA443-9C96E951/0/0
X-purgate-type: clean
X-purgate-size: 8541

Switch the Xen-side ioreq page mapping from prepare_ring_for_helper() /
map_domain_page_global() to explicit vmap(), to ensure vmap_to_page()
can recover the struct page_info * uniformly during teardown.

This is a prerequisite for multi-page ioreq support: the non-buf ioreq
region will need to span multiple pages for domains with more vCPUs than
fit in a single page, and vmap() is the natural interface for contiguous
multi-page Xen VA mappings.

In non-debug builds map_domain_page_global() uses the directmap for low
MFNs rather than vmap(), so this change has a small overhead in the
common case. Debug builds already used vmap() indirectly.

With both paths using vmap(), vmap_to_page() can recover the struct
page_info * uniformly, so drop the 'page' field from struct ioreq_page
and update all callers accordingly.

Signed-off-by: Julian Vetter <julian.vetter@vates.tech>
---
Changes in v6:
- Updated commit message to clearly specify why these changes are made
- Added comment to say that this is {prepare,destroy}_ring_for_helper()
  just using vmap_to_page() + v{map,unmap}()
- Kept proper ordering in ioreq_server_free_mfn(), first clearing the va
  pointer before unmapping
---
 xen/arch/x86/hvm/ioreq.c | 55 +++++++++++++++++++++++++++++++++-------
 xen/common/ioreq.c       | 34 +++++++++++++------------
 xen/include/xen/ioreq.h  |  1 -
 3 files changed, 64 insertions(+), 26 deletions(-)

diff --git a/xen/arch/x86/hvm/ioreq.c b/xen/arch/x86/hvm/ioreq.c
index a5fa97e149..3cabec141c 100644
--- a/xen/arch/x86/hvm/ioreq.c
+++ b/xen/arch/x86/hvm/ioreq.c
@@ -15,6 +15,7 @@
 #include <xen/sched.h>
 #include <xen/softirq.h>
 #include <xen/trace.h>
+#include <xen/vmap.h>
 #include <xen/vpci.h>
 
 #include <asm/hvm/emulate.h>
@@ -128,8 +129,13 @@ static void hvm_unmap_ioreq_gfn(struct ioreq_server *s, bool buf)
     if ( gfn_eq(iorp->gfn, INVALID_GFN) )
         return;
 
-    destroy_ring_for_helper(&iorp->va, iorp->page);
-    iorp->page = NULL;
+    /* Equivalent to destroy_ring_for_helper(), using vmap_to_page(). */
+    if ( iorp->va )
+    {
+        put_page_and_type(vmap_to_page(iorp->va));
+        vunmap(iorp->va);
+        iorp->va = NULL;
+    }
 
     hvm_free_ioreq_gfn(s, iorp->gfn);
     iorp->gfn = INVALID_GFN;
@@ -139,9 +145,12 @@ static int hvm_map_ioreq_gfn(struct ioreq_server *s, bool buf)
 {
     struct domain *d = s->target;
     struct ioreq_page *iorp = buf ? &s->bufioreq : &s->ioreq;
+    struct page_info *page;
+    p2m_type_t p2mt;
+    mfn_t mfn;
     int rc;
 
-    if ( iorp->page )
+    if ( iorp->va )
     {
         /*
          * If a page has already been allocated (which will happen on
@@ -162,12 +171,40 @@ static int hvm_map_ioreq_gfn(struct ioreq_server *s, bool buf)
     if ( gfn_eq(iorp->gfn, INVALID_GFN) )
         return -ENOMEM;
 
-    rc = prepare_ring_for_helper(d, gfn_x(iorp->gfn), &iorp->page,
-                                 &iorp->va);
-
+    /*
+     * Equivalent to prepare_ring_for_helper() using vmap(). Using vmap()
+     * rather than map_domain_page_global() ensures vmap_to_page() can
+     * recover the struct page_info * uniformly at teardown, which is
+     * needed to support multi-page ioreq mappings (see nr_ioreq_pages()).
+     */
+    rc = check_get_page_from_gfn(d, iorp->gfn, false, &p2mt, &page);
     if ( rc )
-        hvm_unmap_ioreq_gfn(s, buf);
+    {
+        if ( rc == -EAGAIN )
+            rc = -ENOENT;
+        goto fail;
+    }
+
+    if ( !get_page_type(page, PGT_writable_page) )
+    {
+        put_page(page);
+        rc = -EINVAL;
+        goto fail;
+    }
+
+    mfn = page_to_mfn(page);
+    iorp->va = vmap(&mfn, 1);
+    if ( !iorp->va )
+    {
+        put_page_and_type(page);
+        rc = -ENOMEM;
+        goto fail;
+    }
+
+    return 0;
 
+ fail:
+    hvm_unmap_ioreq_gfn(s, buf);
     return rc;
 }
 
@@ -179,7 +216,7 @@ static void hvm_remove_ioreq_gfn(struct ioreq_server *s, bool buf)
     if ( gfn_eq(iorp->gfn, INVALID_GFN) )
         return;
 
-    if ( p2m_remove_page(d, iorp->gfn, page_to_mfn(iorp->page), 0) )
+    if ( p2m_remove_page(d, iorp->gfn, vmap_to_mfn(iorp->va), 0) )
         domain_crash(d);
     clear_page(iorp->va);
 }
@@ -195,7 +232,7 @@ static int hvm_add_ioreq_gfn(struct ioreq_server *s, bool buf)
 
     clear_page(iorp->va);
 
-    rc = p2m_add_page(d, iorp->gfn, page_to_mfn(iorp->page), 0, p2m_ram_rw);
+    rc = p2m_add_page(d, iorp->gfn, vmap_to_mfn(iorp->va), 0, p2m_ram_rw);
     if ( rc == 0 )
         paging_mark_pfn_dirty(d, _pfn(gfn_x(iorp->gfn)));
 
diff --git a/xen/common/ioreq.c b/xen/common/ioreq.c
index f5fd30ce12..d8d02167b4 100644
--- a/xen/common/ioreq.c
+++ b/xen/common/ioreq.c
@@ -17,11 +17,11 @@
  */
 
 #include <xen/domain.h>
-#include <xen/domain_page.h>
 #include <xen/event.h>
 #include <xen/init.h>
 #include <xen/ioreq.h>
 #include <xen/irq.h>
+#include <xen/vmap.h>
 #include <xen/lib.h>
 #include <xen/paging.h>
 #include <xen/sched.h>
@@ -262,8 +262,9 @@ static int ioreq_server_alloc_mfn(struct ioreq_server *s, bool buf)
 {
     struct ioreq_page *iorp = buf ? &s->bufioreq : &s->ioreq;
     struct page_info *page;
+    mfn_t mfn;
 
-    if ( iorp->page )
+    if ( iorp->va )
     {
         /*
          * If a guest frame has already been mapped (which may happen
@@ -291,11 +292,11 @@ static int ioreq_server_alloc_mfn(struct ioreq_server *s, bool buf)
         return -ENODATA;
     }
 
-    iorp->va = __map_domain_page_global(page);
+    mfn = page_to_mfn(page);
+    iorp->va = vmap(&mfn, 1);
     if ( !iorp->va )
         goto fail;
 
-    iorp->page = page;
     clear_page(iorp->va);
     return 0;
 
@@ -309,15 +310,16 @@ static int ioreq_server_alloc_mfn(struct ioreq_server *s, bool buf)
 static void ioreq_server_free_mfn(struct ioreq_server *s, bool buf)
 {
     struct ioreq_page *iorp = buf ? &s->bufioreq : &s->ioreq;
-    struct page_info *page = iorp->page;
+    struct page_info *page;
+    void *va;
 
-    if ( !page )
+    if ( !iorp->va )
         return;
 
-    iorp->page = NULL;
-
-    unmap_domain_page_global(iorp->va);
+    va = iorp->va;
+    page = vmap_to_page(va);
     iorp->va = NULL;
+    vunmap(va);
 
     put_page_alloc_ref(page);
     put_page_and_type(page);
@@ -333,7 +335,8 @@ bool is_ioreq_server_page(struct domain *d, const struct page_info *page)
 
     FOR_EACH_IOREQ_SERVER(d, id, s)
     {
-        if ( (s->ioreq.page == page) || (s->bufioreq.page == page) )
+        if ( (s->ioreq.va && vmap_to_page(s->ioreq.va) == page) ||
+             (s->bufioreq.va && vmap_to_page(s->bufioreq.va) == page) )
         {
             found = true;
             break;
@@ -627,10 +630,9 @@ static void ioreq_server_deinit(struct ioreq_server *s)
      * NOTE: It is safe to call both arch_ioreq_server_unmap_pages() and
      *       ioreq_server_free_pages() in that order.
      *       This is because the former will do nothing if the pages
-     *       are not mapped, leaving the page to be freed by the latter.
-     *       However if the pages are mapped then the former will set
-     *       the page_info pointer to NULL, meaning the latter will do
-     *       nothing.
+     *       are not mapped, leaving the pages to be freed by the latter.
+     *       However if the pages are mapped then the former will clear
+     *       iorp->va, meaning the latter will do nothing.
      */
     arch_ioreq_server_unmap_pages(s);
     ioreq_server_free_pages(s);
@@ -819,12 +821,12 @@ int ioreq_server_get_frame(struct domain *d, ioservid_t id,
         if ( !HANDLE_BUFIOREQ(s) )
             goto out;
 
-        *mfn = page_to_mfn(s->bufioreq.page);
+        *mfn = vmap_to_mfn(s->bufioreq.va);
         rc = 0;
         break;
 
     case XENMEM_resource_ioreq_server_frame_ioreq(0):
-        *mfn = page_to_mfn(s->ioreq.page);
+        *mfn = vmap_to_mfn(s->ioreq.va);
         rc = 0;
         break;
 
diff --git a/xen/include/xen/ioreq.h b/xen/include/xen/ioreq.h
index e86f0869fa..d63fa4729e 100644
--- a/xen/include/xen/ioreq.h
+++ b/xen/include/xen/ioreq.h
@@ -25,7 +25,6 @@
 
 struct ioreq_page {
     gfn_t gfn;
-    struct page_info *page;
     void *va;
 };
 
-- 
2.53.0



--
Julian Vetter | Vates Hypervisor & Kernel Developer

XCP-ng & Xen Orchestra - Vates solutions

web: https://vates.tech



From xen-devel-bounces@lists.xenproject.org Mon Apr 20 09:38:44 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 20 Apr 2026 09:38:44 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1285561.1566578 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wEl5S-0001re-71; Mon, 20 Apr 2026 09:38:38 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1285561.1566578; Mon, 20 Apr 2026 09:38: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 1wEl5S-0001rU-3N; Mon, 20 Apr 2026 09:38:38 +0000
Received: by outflank-mailman (input) for mailman id 1285561;
 Mon, 20 Apr 2026 09:38:36 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <bounce-md_30504962.69e5f418.v1-638eba881eec477b9b9f3a94f3b2a7b1@bounce.vates.tech>)
 id 1wEl5Q-0001iT-OQ
 for xen-devel@lists.xenproject.org; Mon, 20 Apr 2026 09:38:36 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wEl5O-007TdJ-JO
 for xen-devel@lists.xenproject.org; Mon, 20 Apr 2026 11:38:36 +0200
Received: from [10.42.69.5] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1) (envelope-from
 <bounce-md_30504962.69e5f418.v1-638eba881eec477b9b9f3a94f3b2a7b1@bounce.vates.tech>)
 id 69e5f419-2eae-0a2a0a5409dd-0a2a4505e70c-30
 for <xen-devel@lists.xenproject.org>; Mon, 20 Apr 2026 11:38:36 +0200
Received: from [198.2.137.11] (helo=mail137-11.atl71.mandrillapp.com)
 by tlsNG-c201ff.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.1)
 (envelope-from
 <bounce-md_30504962.69e5f418.v1-638eba881eec477b9b9f3a94f3b2a7b1@bounce.vates.tech>)
 id 69e5f419-aaa8-0a2a45050019-c602890be989-3
 for <xen-devel@lists.xenproject.org>; Mon, 20 Apr 2026 11:38:35 +0200
Received: from mta004-md-usw2.delv.a.intuit.com (localhost [127.0.0.1])
 by mail137-11.atl71.mandrillapp.com (Mailchimp) with ESMTP id
 4fzgQw0tbyzDRT7yr
 for <xen-devel@lists.xenproject.org>; Mon, 20 Apr 2026 09:38:32 +0000 (UTC)
Received: from [37.26.189.201] by mandrillapp.com id
 638eba881eec477b9b9f3a94f3b2a7b1; Mon, 20 Apr 2026 09:38: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=mte1 header.d=mandrillapp.com header.i="@mandrillapp.com" header.h="From:Subject:To:Cc:Message-Id:In-Reply-To:References:Feedback-ID:Date:MIME-Version:Content-Type:Content-Transfer-Encoding"; dkim=pass header.s=mte1 header.d=vates.tech header.i="julian.vetter@vates.tech" header.h="From:Subject:To:Cc:Message-Id:In-Reply-To:References:Feedback-ID:Date:MIME-Version:Content-Type:Content-Transfer-Encoding"
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=mandrillapp.com;
	s=mte1; t=1776677912; x=1776947912;
	bh=DH2Rgk3UV3w32Q7m6Ik6auoISiJxaMmJr2fSdyVJpEU=;
	h=From:Subject:To:Cc:Message-Id:In-Reply-To:References:Feedback-ID:
	 Date:MIME-Version:Content-Type:Content-Transfer-Encoding:CC:Date:
	 Subject:From;
	b=Ed2ftxkXhN64xYbsJd+PwScEOEw2zeuk/dOLhV7fe1ZNmwIVnT9EF+R4dcdGAXDX7
	 fzeogMH7hxYSJGYyOs8H6U4QeGTtdDw9F22j4Dk3XegB/i1tFi9BOCfewy7EwTix9i
	 qATeicBQTUhvsYyQBU5QbmJ9GcaWlByeDk2Be2bsIKvSAMFo84bkfoqZFETvKf9N4n
	 bxcwhXNb287bNQUCUDg/BCCNDiCqgZPPTR3YeJfHcMjwCfqsw/3Fd493TheEJ24FID
	 PiLHDWJHX4m19knP6WlyOioLbYWLibRVajQP3tICxyZ3qbB7Hex7L9w87SbZPS8iMZ
	 cJ6MoQMPk0kDQ==
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=vates.tech; s=mte1;
	t=1776677912; x=1776938412; i=julian.vetter@vates.tech;
	bh=DH2Rgk3UV3w32Q7m6Ik6auoISiJxaMmJr2fSdyVJpEU=;
	h=From:Subject:To:Cc:Message-Id:In-Reply-To:References:Feedback-ID:
	 Date:MIME-Version:Content-Type:Content-Transfer-Encoding:CC:Date:
	 Subject:From;
	b=VpAhtjFnsEXe2d0hFm7nzdC098AexlXl2cXGfDV9piBTNpb+Ybb9ZE7wITOkILo4x
	 qfrGsd6jpVbF8U8HwJ8a58xM6nHSdFHyyilCtL5VRmvQHQ+w7zTSnDDYtbEtoCLfMT
	 Lf6o0cWN1iezd5M7PckORfhl1WS2zAwq/kB2QNY9asKQDbw2yQvcbmxilzu63HualS
	 juy9nRU0q6sUcy60/Y2DmnvXguKEg7rg34P7ndYH7BkTscYbCrr2RoXIGMtzdo7QxC
	 cOuf5aY0+zvrjHTdgg9uoHixcUgplnKmRpjhvpdH4N2ztgPr+wXPn3ftDI00wpEKtK
	 cgxXsrS+Zdgxg==
From: "Julian Vetter" <julian.vetter@vates.tech>
Subject: =?utf-8?Q?[PATCH=20v6=203/3]=20x86/ioreq:=20Extend=20ioreq=20server=20to=20support=20multiple=20ioreq=20pages?=
X-Mailer: git-send-email 2.53.0
X-Bm-Disclaimer: Yes
X-Bm-Milter-Handled: 4ffbd6c1-ee69-4e1b-aabd-f977039bd3e2
X-Bm-Transport-Timestamp: 1776677911153
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.pau@citrix.com>, "Anthony PERARD" <anthony.perard@vates.tech>, "Michal Orzel" <michal.orzel@amd.com>, "Julien Grall" <julien@xen.org>, "Stefano Stabellini" <sstabellini@kernel.org>, "Julian Vetter" <julian.vetter@vates.tech>
Message-Id: <20260420093820.825969-4-julian.vetter@vates.tech>
In-Reply-To: <20260420093820.825969-1-julian.vetter@vates.tech>
References: <20260420093820.825969-1-julian.vetter@vates.tech>
X-Native-Encoded: 1
X-Report-Abuse: =?UTF-8?Q?Please=20forward=20a=20copy=20of=20this=20message,=20including=20all=20headers,=20to=20abuse@mandrill.com.=20You=20can=20also=20report=20abuse=20here:=20https://mandrillapp.com/contact/abuse=3Fid=3D30504962.638eba881eec477b9b9f3a94f3b2a7b1?=
X-Mandrill-User: md_30504962
Feedback-ID: 30504962:30504962.20260420:md
Date: Mon, 20 Apr 2026 09:38:32 +0000
MIME-Version: 1.0
Content-Type: text/plain; charset=utf-8
Content-Transfer-Encoding: 7bit
X-purgate-ID: tlsNG-c201ff/1776677915-E97A6443-096F3498/0/0
X-purgate-type: clean
X-purgate-size: 8014

As the number of vCPUs grows, a single ioreq page of 128 slots may not
be sufficient. Add support for allocating and mapping multiple ioreq
pages so that the ioreq region can scale with d->max_vcpus.

Introduce nr_ioreq_pages() to compute the number of pages required for
a given domain, and IOREQ_NR_PAGES_MAX as a compile-time upper bound
(based on HVM_MAX_VCPUS).

ioreq_server_alloc_mfn() is updated to allocate nr_ioreq_pages() pages
and map them contiguously via vmap().

is_ioreq_server_page() iterates over all ioreq pages when checking
page ownership. ioreq_server_get_frame() allows callers to retrieve any
ioreq page by index via the XENMEM_acquire_resource interface.

On x86, the legacy GFN mapping path (hvm_map_ioreq_gfn) is limited to
a single ioreq page; device models requiring more ioreq slots must use
the resource mapping interface (XENMEM_acquire_resource).

Signed-off-by: Julian Vetter <julian.vetter@vates.tech>
---
Changes in v6:
- Adapted the comment to not mention the guest, but the device model
- Replaced the dynamic allocation for the mfns array by a static array
- Fixed error handling in ioreq_server_alloc_mfn, using an extra
  nr_alloc variable to track the already allocated pages
- Dropped unnecessary void casts
---
 xen/arch/x86/hvm/ioreq.c |  8 ++++
 xen/common/ioreq.c       | 93 ++++++++++++++++++++++++++++------------
 xen/include/xen/ioreq.h  | 12 ++++++
 3 files changed, 86 insertions(+), 27 deletions(-)

diff --git a/xen/arch/x86/hvm/ioreq.c b/xen/arch/x86/hvm/ioreq.c
index 3cabec141c..ee679bdf5a 100644
--- a/xen/arch/x86/hvm/ioreq.c
+++ b/xen/arch/x86/hvm/ioreq.c
@@ -166,6 +166,14 @@ static int hvm_map_ioreq_gfn(struct ioreq_server *s, bool buf)
     if ( d->is_dying )
         return -EINVAL;
 
+    /*
+     * The legacy GFN path supports only a single ioreq page. Device models
+     * requiring more ioreq slots must use the resource mapping interface
+     * (XENMEM_acquire_resource).
+     */
+    if ( !buf && nr_ioreq_pages(d) > 1 )
+        return -EOPNOTSUPP;
+
     iorp->gfn = hvm_alloc_ioreq_gfn(s);
 
     if ( gfn_eq(iorp->gfn, INVALID_GFN) )
diff --git a/xen/common/ioreq.c b/xen/common/ioreq.c
index bae9b99c99..3a08e77597 100644
--- a/xen/common/ioreq.c
+++ b/xen/common/ioreq.c
@@ -261,8 +261,11 @@ bool vcpu_ioreq_handle_completion(struct vcpu *v)
 static int ioreq_server_alloc_mfn(struct ioreq_server *s, bool buf)
 {
     struct ioreq_page *iorp = buf ? &s->bufioreq : &s->ioreq;
-    struct page_info *page;
-    mfn_t mfn;
+    unsigned int i, nr_alloc = 0, nr_pages = buf ? 1 : nr_ioreq_pages(s->target);
+    mfn_t mfns[IOREQ_NR_PAGES_MAX] = {};
+    int rc;
+
+    ASSERT(nr_pages <= IOREQ_NR_PAGES_MAX);
 
     if ( iorp->va )
     {
@@ -277,11 +280,16 @@ static int ioreq_server_alloc_mfn(struct ioreq_server *s, bool buf)
         return 0;
     }
 
+    for ( i = 0; i < nr_pages; i++ )
     {
-        page = alloc_domheap_page(s->target, MEMF_no_refcount);
+        struct page_info *page = alloc_domheap_page(s->target,
+                                                    MEMF_no_refcount);
 
         if ( !page )
-            return -ENOMEM;
+        {
+            rc = -ENOMEM;
+            goto fail;
+        }
 
         if ( !get_page_and_type(page, s->target, PGT_writable_page) )
         {
@@ -290,41 +298,59 @@ static int ioreq_server_alloc_mfn(struct ioreq_server *s, bool buf)
              * here is a clear indication of something fishy going on.
              */
             domain_crash(s->emulator);
-            return -ENODATA;
+            rc = -ENODATA;
+            goto fail;
         }
 
-        mfn = page_to_mfn(page);
+        mfns[nr_alloc++] = page_to_mfn(page);
     }
-    iorp->va = vmap(&mfn, 1);
+
+    iorp->va = vmap(mfns, nr_pages);
     if ( !iorp->va )
+    {
+        rc = -ENOMEM;
         goto fail;
+    }
 
-    clear_page(iorp->va);
+    memset(iorp->va, 0, nr_pages * PAGE_SIZE);
     return 0;
 
  fail:
-    put_page_alloc_ref(page);
-    put_page_and_type(page);
+    while ( nr_alloc-- )
+    {
+        struct page_info *page = mfn_to_page(mfns[nr_alloc]);
+
+        put_page_alloc_ref(page);
+        put_page_and_type(page);
+    }
 
-    return -ENOMEM;
+    return rc;
 }
 
 static void ioreq_server_free_mfn(struct ioreq_server *s, bool buf)
 {
     struct ioreq_page *iorp = buf ? &s->bufioreq : &s->ioreq;
-    struct page_info *page;
+    unsigned int i, nr_pages = buf ? 1 : nr_ioreq_pages(s->target);
+    struct page_info *pages[IOREQ_NR_PAGES_MAX];
     void *va;
 
     if ( !iorp->va )
         return;
 
+    ASSERT(nr_pages <= IOREQ_NR_PAGES_MAX);
+
+    for ( i = 0; i < nr_pages; i++ )
+        pages[i] = vmap_to_page(iorp->va + i * PAGE_SIZE);
+
     va = iorp->va;
-    page = vmap_to_page(va);
     iorp->va = NULL;
     vunmap(va);
 
-    put_page_alloc_ref(page);
-    put_page_and_type(page);
+    for ( i = 0; i < nr_pages; i++ )
+    {
+        put_page_alloc_ref(pages[i]);
+        put_page_and_type(pages[i]);
+    }
 }
 
 bool is_ioreq_server_page(struct domain *d, const struct page_info *page)
@@ -337,12 +363,25 @@ bool is_ioreq_server_page(struct domain *d, const struct page_info *page)
 
     FOR_EACH_IOREQ_SERVER(d, id, s)
     {
-        if ( (s->ioreq.va && vmap_to_page(s->ioreq.va) == page) ||
-             (s->bufioreq.va && vmap_to_page(s->bufioreq.va) == page) )
+        unsigned int i;
+
+        if ( s->bufioreq.va && vmap_to_page(s->bufioreq.va) == page )
         {
             found = true;
             break;
         }
+
+        for ( i = 0; i < nr_ioreq_pages(d) && s->ioreq.va; i++ )
+        {
+            if ( vmap_to_page(s->ioreq.va + i * PAGE_SIZE) == page )
+            {
+                found = true;
+                break;
+            }
+        }
+
+        if ( found )
+            break;
     }
 
     rspin_unlock(&d->ioreq_server.lock);
@@ -816,26 +855,26 @@ int ioreq_server_get_frame(struct domain *d, ioservid_t id,
     if ( rc )
         goto out;
 
-    switch ( idx )
+    if ( idx == XENMEM_resource_ioreq_server_frame_bufioreq )
     {
-    case XENMEM_resource_ioreq_server_frame_bufioreq:
         rc = -ENOENT;
         if ( !HANDLE_BUFIOREQ(s) )
             goto out;
 
         *mfn = vmap_to_mfn(s->bufioreq.va);
         rc = 0;
-        break;
+    }
+    else if ( idx >= XENMEM_resource_ioreq_server_frame_ioreq(0) &&
+              idx < XENMEM_resource_ioreq_server_frame_ioreq(nr_ioreq_pages(d)) )
+    {
+        unsigned int page_idx = idx - XENMEM_resource_ioreq_server_frame_ioreq(0);
 
-    case XENMEM_resource_ioreq_server_frame_ioreq(0):
-        *mfn = vmap_to_mfn(s->ioreq.va);
+        ASSERT(page_idx < nr_ioreq_pages(d));
+        *mfn = vmap_to_mfn(s->ioreq.va + page_idx * PAGE_SIZE);
         rc = 0;
-        break;
-
-    default:
-        rc = -EINVAL;
-        break;
     }
+    else
+        rc = -EINVAL;
 
  out:
     rspin_unlock(&d->ioreq_server.lock);
diff --git a/xen/include/xen/ioreq.h b/xen/include/xen/ioreq.h
index d63fa4729e..d2a08c2371 100644
--- a/xen/include/xen/ioreq.h
+++ b/xen/include/xen/ioreq.h
@@ -35,6 +35,18 @@ struct ioreq_vcpu {
     bool             pending;
 };
 
+/*
+ * Maximum number of ioreq pages, based on the maximum number
+ * of vCPUs and the number of ioreq slots per page.
+ */
+#define IOREQ_NR_PAGES_MAX \
+    DIV_ROUND_UP(HVM_MAX_VCPUS, PAGE_SIZE / sizeof(ioreq_t))
+
+static inline unsigned int nr_ioreq_pages(const struct domain *d)
+{
+    return DIV_ROUND_UP(d->max_vcpus, PAGE_SIZE / sizeof(ioreq_t));
+}
+
 #define NR_IO_RANGE_TYPES (XEN_DMOP_IO_RANGE_PCI + 1)
 #define MAX_NR_IO_RANGES  256
 
-- 
2.53.0



--
Julian Vetter | Vates Hypervisor & Kernel Developer

XCP-ng & Xen Orchestra - Vates solutions

web: https://vates.tech



From xen-devel-bounces@lists.xenproject.org Mon Apr 20 09:38:44 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 20 Apr 2026 09:38:44 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1285560.1566566 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wEl5Q-0001U4-2X; Mon, 20 Apr 2026 09:38:36 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1285560.1566566; Mon, 20 Apr 2026 09: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 1wEl5P-0001TK-Rt; Mon, 20 Apr 2026 09:38:35 +0000
Received: by outflank-mailman (input) for mailman id 1285560;
 Mon, 20 Apr 2026 09:38:34 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <bounce-md_30504962.69e5f417.v1-2e3c03ff03de4943839f2f7b526ff987@bounce.vates.tech>)
 id 1wEl5O-0001OQ-Dy
 for xen-devel@lists.xenproject.org; Mon, 20 Apr 2026 09:38:34 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wEl5N-00AEIs-Qt
 for xen-devel@lists.xenproject.org; Mon, 20 Apr 2026 11:38:33 +0200
Received: from [10.42.69.10] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1) (envelope-from
 <bounce-md_30504962.69e5f417.v1-2e3c03ff03de4943839f2f7b526ff987@bounce.vates.tech>)
 id 69e5f412-5cb7-0a2a0a5109dd-0a2a450a9e6c-30
 for <xen-devel@lists.xenproject.org>; Mon, 20 Apr 2026 11:38:33 +0200
Received: from [198.2.137.11] (helo=mail137-11.atl71.mandrillapp.com)
 by tlsNG-4011c0.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.1)
 (envelope-from
 <bounce-md_30504962.69e5f417.v1-2e3c03ff03de4943839f2f7b526ff987@bounce.vates.tech>)
 id 69e5f418-56b3-0a2a450a0019-c602890b16cf-3
 for <xen-devel@lists.xenproject.org>; Mon, 20 Apr 2026 11:38:33 +0200
Received: from mta004-md-usw2.delv.a.intuit.com (localhost [127.0.0.1])
 by mail137-11.atl71.mandrillapp.com (Mailchimp) with ESMTP id
 4fzgQv5M7HzDRSrSC
 for <xen-devel@lists.xenproject.org>; Mon, 20 Apr 2026 09:38:31 +0000 (UTC)
Received: from [37.26.189.201] by mandrillapp.com id
 2e3c03ff03de4943839f2f7b526ff987; Mon, 20 Apr 2026 09: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=mte1 header.d=mandrillapp.com header.i="@mandrillapp.com" header.h="From:Subject:To:Cc:Message-Id:In-Reply-To:References:Feedback-ID:Date:MIME-Version:Content-Type:Content-Transfer-Encoding"; dkim=pass header.s=mte1 header.d=vates.tech header.i="julian.vetter@vates.tech" header.h="From:Subject:To:Cc:Message-Id:In-Reply-To:References:Feedback-ID:Date:MIME-Version:Content-Type:Content-Transfer-Encoding"
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=mandrillapp.com;
	s=mte1; t=1776677911; x=1776947911;
	bh=p8k8y/LVlfkSFjIR489TVlpP2VQjBt8UHcDivsfmOkw=;
	h=From:Subject:To:Cc:Message-Id:In-Reply-To:References:Feedback-ID:
	 Date:MIME-Version:Content-Type:Content-Transfer-Encoding:CC:Date:
	 Subject:From;
	b=isQPJtNjOMy94YA7LfNFY7LxB6CX445WWOjhrUskqM5oMumyGu+c0kkntG/xeqOIJ
	 hNUH7xPK2UJEjMDstv1LANozaumzRI7ML7OiqN8jzJ39M7tH9sK8146UszwxLVmlCS
	 o6GgyVPD10/hzl0F6QNP9LaZCCHZeIX4Rxazdtl73r83fnAqAPn0Z5DEyD/B6z5OlD
	 LQ5u+9OUmpQ6sXj+A9sVPvYqYqtghkztCrj+yZ9QLfgVMP3u8/tJAIJdaf1n0d0j03
	 zsFZdHcrLTO3s0l5K0SIdZQ2BSifbwFzRLRrsEr58B+VlbZPMy+In2tZJySlUuRKy0
	 WpwE40SUJckEA==
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=vates.tech; s=mte1;
	t=1776677911; x=1776938411; i=julian.vetter@vates.tech;
	bh=p8k8y/LVlfkSFjIR489TVlpP2VQjBt8UHcDivsfmOkw=;
	h=From:Subject:To:Cc:Message-Id:In-Reply-To:References:Feedback-ID:
	 Date:MIME-Version:Content-Type:Content-Transfer-Encoding:CC:Date:
	 Subject:From;
	b=LSrYyx9lvLEY21z6LWF+iTyIQN0zpSkPpNPVmTxU1nNGiEms/5FndmcrIPjEInsZf
	 y64yshv2KBL3VP7Vx3WI1S+LY/DPxO6aDd82a0IOHMJmpvT1wqaK2vuf3fZ0DfWgLt
	 TgEnR0K2hKHNE5jVooEnj5pf0lpgff9nGiMeE2KeZgmULK0kC/sGLtWmPZ8eq74UPX
	 K2Lq4H2wGpIgTe6/GIf19lJrMZNIB0pMQtfhzJuI0RRwR6rim5C1yTTgGip39EiyEM
	 k2rJzBVzJb034p09dzd0TVYmIC5D5qXZ0ZxoYp8zTaiSB+KF43qOW5nbg6mlPSTZkA
	 85/8OCBHdKTIg==
From: "Julian Vetter" <julian.vetter@vates.tech>
Subject: =?utf-8?Q?[PATCH=20v6=202/3]=20ioreq:=20Indent=20ioreq=5Fserver=5Falloc=5Fmfn()=20body=20one=20level=20deeper?=
X-Mailer: git-send-email 2.53.0
X-Bm-Disclaimer: Yes
X-Bm-Milter-Handled: 4ffbd6c1-ee69-4e1b-aabd-f977039bd3e2
X-Bm-Transport-Timestamp: 1776677910895
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.pau@citrix.com>, "Anthony PERARD" <anthony.perard@vates.tech>, "Michal Orzel" <michal.orzel@amd.com>, "Julien Grall" <julien@xen.org>, "Stefano Stabellini" <sstabellini@kernel.org>, "Julian Vetter" <julian.vetter@vates.tech>
Message-Id: <20260420093820.825969-3-julian.vetter@vates.tech>
In-Reply-To: <20260420093820.825969-1-julian.vetter@vates.tech>
References: <20260420093820.825969-1-julian.vetter@vates.tech>
X-Native-Encoded: 1
X-Report-Abuse: =?UTF-8?Q?Please=20forward=20a=20copy=20of=20this=20message,=20including=20all=20headers,=20to=20abuse@mandrill.com.=20You=20can=20also=20report=20abuse=20here:=20https://mandrillapp.com/contact/abuse=3Fid=3D30504962.2e3c03ff03de4943839f2f7b526ff987?=
X-Mandrill-User: md_30504962
Feedback-ID: 30504962:30504962.20260420:md
Date: Mon, 20 Apr 2026 09:38:31 +0000
MIME-Version: 1.0
Content-Type: text/plain; charset=utf-8
Content-Transfer-Encoding: 7bit
X-purgate-ID: tlsNG-4011c0/1776677913-471728B7-98452ACF/0/0
X-purgate-type: clean
X-purgate-size: 1965

No functional change. It adds a wrapping block to prepare for the loop
that the subsequent patch introduces to handle multiple ioreq pages.

Signed-off-by: Julian Vetter <julian.vetter@vates.tech>
---
Changes in v6:
- Dropped the indentation change for ioreq_server_free_mfn, because the
  modifications in the next patch don't really merit the change anymore
---
 xen/common/ioreq.c | 28 +++++++++++++++-------------
 1 file changed, 15 insertions(+), 13 deletions(-)

diff --git a/xen/common/ioreq.c b/xen/common/ioreq.c
index d8d02167b4..bae9b99c99 100644
--- a/xen/common/ioreq.c
+++ b/xen/common/ioreq.c
@@ -277,22 +277,24 @@ static int ioreq_server_alloc_mfn(struct ioreq_server *s, bool buf)
         return 0;
     }
 
-    page = alloc_domheap_page(s->target, MEMF_no_refcount);
+    {
+        page = alloc_domheap_page(s->target, MEMF_no_refcount);
 
-    if ( !page )
-        return -ENOMEM;
+        if ( !page )
+            return -ENOMEM;
 
-    if ( !get_page_and_type(page, s->target, PGT_writable_page) )
-    {
-        /*
-         * The domain can't possibly know about this page yet, so failure
-         * here is a clear indication of something fishy going on.
-         */
-        domain_crash(s->emulator);
-        return -ENODATA;
-    }
+        if ( !get_page_and_type(page, s->target, PGT_writable_page) )
+        {
+            /*
+             * The domain can't possibly know about this page yet, so failure
+             * here is a clear indication of something fishy going on.
+             */
+            domain_crash(s->emulator);
+            return -ENODATA;
+        }
 
-    mfn = page_to_mfn(page);
+        mfn = page_to_mfn(page);
+    }
     iorp->va = vmap(&mfn, 1);
     if ( !iorp->va )
         goto fail;
-- 
2.53.0



--
Julian Vetter | Vates Hypervisor & Kernel Developer

XCP-ng & Xen Orchestra - Vates solutions

web: https://vates.tech



From xen-devel-bounces@lists.xenproject.org Mon Apr 20 10:05:53 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 20 Apr 2026 10:05:53 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1285602.1566592 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wElVg-0006px-Fp; Mon, 20 Apr 2026 10:05:44 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1285602.1566592; Mon, 20 Apr 2026 10:05: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 1wElVg-0006pq-CA; Mon, 20 Apr 2026 10:05:44 +0000
Received: by outflank-mailman (input) for mailman id 1285602;
 Mon, 20 Apr 2026 10:05:43 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <jbeulich@suse.com>) id 1wElVf-0006pk-F6
 for xen-devel@lists.xenproject.org; Mon, 20 Apr 2026 10:05:43 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wElVe-003FMC-Ns
 for xen-devel@lists.xenproject.org; Mon, 20 Apr 2026 12:05:42 +0200
Received: from [10.42.69.6] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <jbeulich@suse.com>)
 id 69e5fa71-bab6-0a2a0a5309dd-0a2a4506a47c-26
 for <xen-devel@lists.xenproject.org>; Mon, 20 Apr 2026 12:05:42 +0200
Received: from [209.85.128.51] (helo=mail-wm1-f51.google.com)
 by tlsNG-16d1c6.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.1)
 (envelope-from <jbeulich@suse.com>)
 id 69e5fa76-7371-0a2a45060019-d1558033d801-3
 for <xen-devel@lists.xenproject.org>; Mon, 20 Apr 2026 12:05:42 +0200
Received: by mail-wm1-f51.google.com with SMTP id
 5b1f17b1804b1-4891c00e7aeso6796945e9.2
 for <xen-devel@lists.xenproject.org>; Mon, 20 Apr 2026 03:05:42 -0700 (PDT)
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-488fc1c01cfsm284534505e9.10.2026.04.20.03.05.41
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Mon, 20 Apr 2026 03:05:41 -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=google header.d=suse.com header.i="@suse.com" header.h="Content-Transfer-Encoding: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=1776679542; x=1777284342; darn=lists.xenproject.org;
        h=content-transfer-encoding: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;
        bh=gLanjUjHV3ThrtMCQIjBhFVG8lrvikrTuJvZy0AtwPI=;
        b=aW9OL1CYsPDU+KMdHr3lPoF+S11aDaRIvr89zwK774v+HZPybD4WoLvjyS/RmJVmSb
         yU36GfJoBd5/vU8Uv7bwmi+NiKFFIu19OP+qV/mkcM7jFCKUd77zJX3+vp8NieOOhz59
         yQ1FH6BzPQvs7lcHT7aIxEnigTLvUD+xqdLc5/HBpDTWk7z+bh/6LNckZYY0mNcH3vgX
         7UaMIn98sHeQQa2gtatjllQ00NvyfR9/CiLkmEuiJLx7S1SzOBRCnKlUbq1yLY7ISkP0
         rbPZE+3hpP/4Bh+9hb6ABwMw0fMPbAAKaYj7Xge42xClR3lLcveWPGS2RURa+3dsmuVM
         pnsQ==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20251104; t=1776679542; x=1777284342;
        h=content-transfer-encoding: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;
        bh=gLanjUjHV3ThrtMCQIjBhFVG8lrvikrTuJvZy0AtwPI=;
        b=H5uL4mEd0FjyTTs5WLZIQCYHybgcunsWf0FzzhjN9+eYpZ2z80ut8Ds97xubU/jAZc
         msOVDnmbdq80QaGm0UbIwpYaNWSnlMe8cT4IdQJRybhQ29EvDY2lKEWkEGcrD5tGfXwo
         3PEWaMB2IJS51QTlBU4qrz3QDyJhDrBPxpcq3hd1D1/UkpkPr4FLnmCl3E86YeeXRTDF
         LHUqbNADWyMkMKjNynuyEhQ3r1e3YLEWSCdMpTiUrV4unLWv3i3opyYTUPj0jKLMXXmi
         gTL3sF5FMBuQW9M9T4VrLUEDDvejWGZc9KRktiZBZSPT7kD4krtePKuX4MdK92ET+soK
         DS3A==
X-Forwarded-Encrypted: i=1; AFNElJ9Hmfqw1o7pa/+/Kw2UmHWrnaVq0Dxs7R7Qtr2tOv5AUwZVQ4eF0PAbscvGamNRovtS+WU+nUvgOzg=@lists.xenproject.org
X-Gm-Message-State: AOJu0YyDH5GmTl6OgVC/tHw6Uq9WpjLJo7tZuBHIvcszy27Wmsrxe6NJ
	kFGdsUd4LaT7pmtXoxdrhNMGLs2gZcn/S7S/A3a5o6N5r3IgXDsPQn8Tb74RKhbw+A==
X-Gm-Gg: AeBDieubjvmqogytKhglb/5F/dqaXDa1tD/N5nkgNFxy2cgh/wNx45jJSoR15Lv2s/7
	zis5gOktksD6efDyZ8QhecSpKQIw9SBibrx/A3AiRpXTo7TYVehRhd/Z6V85zLSoxQEpo+oD5AY
	vFC8qSXr7YyDPKlSXoPu8La6kIps17L9QvHUJ7jnG9VPr5yr/37ZBcbWWjv0cVM96uk2WLkSPuA
	K36fKSFs6V4oXghxBB8Q+r+DVSYvx1OIz8ekfqzCgIYy1LVcy375GR8N/DAf9h5w9Jvem5O/+mn
	OyJIZgPkLGxVDs2iB+WZbw7aAHT9etoV0VQsHIx0CdCafhC+0rEl05+1t/XPhVHUzdCQd1bjoYD
	JODlV86GU6JKVokUqaZGHn+c6dgiVW3AbXuBsWfjY1MiIYy6SGoqE7eIHAPcdYYzqef22yqVJi5
	ZTujdKHRvRXs65EzVDqJlFIJwB/8MtMUQ61zWeenb3ow2hRliK4UvWIIq48aPb/pcwF5NpgjxIy
	8XgDFJ46WOtekkS6hDtiJA5Yg==
X-Received: by 2002:a05:600c:a31a:b0:488:b241:2c5f with SMTP id 5b1f17b1804b1-488fb785b7emr126008305e9.26.1776679541896;
        Mon, 20 Apr 2026 03:05:41 -0700 (PDT)
Message-ID: <5e60e29e-70c5-448c-b300-0ceb5e92962c@suse.com>
Date: Mon, 20 Apr 2026 12:05:43 +0200
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH v6 0/3] Support multiple ioreq pages
To: Julian Vetter <julian.vetter@vates.tech>
Cc: Andrew Cooper <andrew.cooper3@citrix.com>,
 =?UTF-8?Q?Roger_Pau_Monn=C3=A9?= <roger.pau@citrix.com>,
 Anthony PERARD <anthony.perard@vates.tech>,
 Michal Orzel <michal.orzel@amd.com>, Julien Grall <julien@xen.org>,
 Stefano Stabellini <sstabellini@kernel.org>, xen-devel@lists.xenproject.org
References: <20260420093820.825969-1-julian.vetter@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: <20260420093820.825969-1-julian.vetter@vates.tech>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 7bit
X-purgate-ID: tlsNG-16d1c6/1776679542-91985D75-A50AC07D/0/0
X-purgate-type: clean
X-purgate-size: 1113

On 20.04.2026 11:38, Julian Vetter wrote:
> Hello Jan,
> thank you again for your thorough feedback. I have addressed your
> comments. I just have one remaining issue. For the temporary MFNs array
> I now use a static array, i.e., mfns[IOREQ_NR_PAGES_MAX], with a
> IOREQ_NR_PAGES_MAX = DIV_ROUND_UP(HVM_MAX_VCPUS, PAGE_SIZE / sizeof(ioreq_t)).
> Is this appropriate?

Whether using a static array is appropriate I can't tell after merely
having read this cover letter.

> Or should I leave the HVM_MAX_VCPUS out of this and
> instead use a fixed constant value? Also for now I haven't taken the
> path to permanently store the MFNs as you suggested. I'm not sure, but I
> don't think it's really necessary. Since this array will rarely exceed
> the size of 2 or 3.

How do you know? The array will need to be large enough to cope with
anything the hypervisor was configured for.

Until we actually raise the vCPU-s limit, using HVM_MAX_VCPUS for the
size calculation looks okay to me. All uses of that constant will need
looking at / adjusting anyway during that subsequent effort.

Jan


From xen-devel-bounces@lists.xenproject.org Mon Apr 20 10:25:20 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 20 Apr 2026 10:25:20 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1285612.1566599 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wEloY-0001Cf-Td; Mon, 20 Apr 2026 10:25:14 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1285612.1566599; Mon, 20 Apr 2026 10:25: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 1wEloY-0001CY-R7; Mon, 20 Apr 2026 10:25:14 +0000
Received: by outflank-mailman (input) for mailman id 1285612;
 Mon, 20 Apr 2026 10:25:14 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92) id 1wEloX-0001CS-Sx
 for xen-devel@lists.xenproject.org; Mon, 20 Apr 2026 10:25:14 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wEloW-007tTu-MI
 for xen-devel@lists.xenproject.org; Mon, 20 Apr 2026 12:25:12 +0200
Received: from [10.42.69.6] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <oleksii.kurochko@gmail.com>)
 id 69e5ff06-e002-0a2a0a5209dd-0a2a4506ac7c-24
 for <xen-devel@lists.xenproject.org>; Mon, 20 Apr 2026 12:25:12 +0200
Received: from [209.85.167.47] (helo=mail-lf1-f47.google.com)
 by tlsNG-16d1c6.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.1)
 (envelope-from <oleksii.kurochko@gmail.com>)
 id 69e5ff08-7371-0a2a45060019-d155a72fd143-3
 for <xen-devel@lists.xenproject.org>; Mon, 20 Apr 2026 12:25:12 +0200
Received: by mail-lf1-f47.google.com with SMTP id
 2adb3069b0e04-5a283c44478so4906742e87.3
 for <xen-devel@lists.xenproject.org>; Mon, 20 Apr 2026 03:25:12 -0700 (PDT)
Received: from [192.168.1.6] (user-109-243-69-121.play-internet.pl.
 [109.243.69.121]) by smtp.gmail.com with ESMTPSA id
 2adb3069b0e04-5a4187e7ddbsm2867306e87.63.2026.04.20.03.25.10
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Mon, 20 Apr 2026 03:25:11 -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=20251104 header.d=gmail.com header.i="@gmail.com" header.h="Content-Transfer-Encoding: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=20251104; t=1776680712; x=1777285512; darn=lists.xenproject.org;
        h=content-transfer-encoding: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;
        bh=HunJ0W3Im8CxuSLAh4+aI4mvFMRRwa8Rq0IicFhGMUM=;
        b=ALYZV+A9+dbhHKVQDaRWqB+YGfTwLmfXgMqaJSfSQHRJJBwOnXg7JainA+e/ghFlHm
         x/Jx+7XCkk3vADXcsOIXQ2HPS5aqW7+mbw8pMd4PIh1gMHiNyoQgel/EDiBB40xKAX3W
         fPBq+RekgyRB+3qhytN83/lvAQvOcdrYCDp6DIdPdxiW6zDTs3nrJQxaB58xtzMjW0TZ
         y1kz6b+kweDOK5jS8ypPARRGeSuYr+1PYRITydPd9nVVqDZo5Ply5SiY1vqx/Qk7qEiI
         tXJVFpM/DYvjkbtNyZ2f/n1p3kzwyGAteSQB3XKNnPAB2j6RY2DEnQxOSs5VcMqIdIL5
         dI1w==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20251104; t=1776680712; x=1777285512;
        h=content-transfer-encoding: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;
        bh=HunJ0W3Im8CxuSLAh4+aI4mvFMRRwa8Rq0IicFhGMUM=;
        b=in6pd5Mhgwz43msdDaHlMwL2j74ZFhI80WmWTT30YsNrek7uSO1MWUsILirMHpPfTg
         XtU+epLSkHRvb3uWCCbG/XpDr53HQ//jL9K9sBxh8xH4+McRiRLZbsh3pr40xYDfYiBg
         rOypx61+ZB5omHqDzw2d1y4S+P8BKp/z0d/ONgms1nC+bsSlbEARGOMZnUrLa1m6ia1Z
         vTm3EDwivKlfxwCKyGXJlM9iQmIzijryO//YjEKUHBk71IhEUXm8aMpvi76mjcHRAcrC
         wg9pKO5x2ozT/FNExFWjCgsgZEX5WHfnNRuosW1tSq3F5AAwwOoDOWaGo+Y5A3AF0ryJ
         2b7Q==
X-Forwarded-Encrypted: i=1; AFNElJ8533+8J2gM2sl8xFaHw6+tKaZwDpw7EjZje4UgAMLiERbtMrGen92g/CEO85abG07lPiQeNGRTvf8=@lists.xenproject.org
X-Gm-Message-State: AOJu0YzQ4bzPLsMEnGqZ3Q8eQ4gU5YZeWAD0JNp9j62g4olE4+D/gvMq
	uPnN22ZK4LnA57aRm35dhk9xvvGnzJ8WcR1RpR7AAxYDHjxZaHz9f0Xh
X-Gm-Gg: AeBDievgJkDrGvHCdHwTHT/89oDoe4kClEE0XxDOllMw85X+OBGuOkA9C29IE/PlYEB
	8lKR5dTFJdsTMWzyVUBjaEh0hQRbAPnfd32dUKlS7t2ytvoCVstmf0dOvxwvmhIe7mTo+5AzkHX
	0ExILNfeX6GlDyUcUZD6vx3cKHHTcd1utxCMfzjG8T+nEZZlWJwaSqgISJP0V9XltrD/+Cg8UXm
	AfAy1nDjIaYhKL5byi0TQ+lenI74TrkdsIEQ1u3L12f2vAYByGh8ZDE365UgyNx6KlBJhLTkoC7
	MvowHhQKhMmoZOvNXSSCbQDQ0P4pr3O3P3149svogCTaCk+P5hUVQ/cnnodPCGqDNJcBvIqhXPU
	9KAPFpzbplqOUZWm+n3p0qbnDvGf37u4VZEVK1SQ9SlWy4OxEu+uAI976ZVraWlu8upp+vAqi4G
	g7lWYbP7tdKfdSwOMBhcppctLllkj2wiymIfPH3GqUN/YX26Jxa+YxVlu9zi2FxdllD44DJvTlu
	+cJFZdsLCJx4A==
X-Received: by 2002:a05:6512:230b:b0:5a4:301:b92 with SMTP id 2adb3069b0e04-5a4172de459mr4693311e87.33.1776680711361;
        Mon, 20 Apr 2026 03:25:11 -0700 (PDT)
Message-ID: <c6bef180-5d54-4527-94ca-20ed9729d475@gmail.com>
Date: Mon, 20 Apr 2026 12:25:10 +0200
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH v1 15/27] xen/riscv: add very early virtual APLIC (vAPLIC)
 initialization support
To: Jan Beulich <jbeulich@suse.com>
Cc: Romain Caritey <Romain.Caritey@microchip.com>,
 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.pau@citrix.com>,
 Stefano Stabellini <sstabellini@kernel.org>, xen-devel@lists.xenproject.org
References: <cover.1773157782.git.oleksii.kurochko@gmail.com>
 <e8bcf5618a19fb44d4391410f2f67ffd98a96647.1773157782.git.oleksii.kurochko@gmail.com>
 <44cb3124-8972-4a0c-b785-64f2022f178b@suse.com>
 <a324161d-f8b4-47fe-b5ac-52df6060e45b@gmail.com>
 <da07da74-220a-4dbb-84fc-2e7aeb6b19df@suse.com>
Content-Language: en-US
From: Oleksii Kurochko <oleksii.kurochko@gmail.com>
In-Reply-To: <da07da74-220a-4dbb-84fc-2e7aeb6b19df@suse.com>
Content-Type: text/plain; charset=UTF-8; format=flowed
Content-Transfer-Encoding: 7bit
X-purgate-ID: tlsNG-16d1c6/1776680712-52974D75-E698A01C/10/73395122804
X-purgate-type: spam
X-purgate-size: 6069



On 4/16/26 2:42 PM, Jan Beulich wrote:
> On 14.04.2026 12:27, Oleksii Kurochko wrote:
>> On 4/2/26 1:58 PM, Jan Beulich wrote:
>>> On 10.03.2026 18:08, Oleksii Kurochko wrote:
>>>> @@ -47,6 +48,19 @@ struct intc_hw_operations {
>>>>                                const struct dt_device_node *intc);
>>>>    };
>>>> +
>>>> +struct vintc {
>>>> +    const struct intc_info *info;
>>>
>>> Isn't this referencing a physical INTC's structure? Why would the virtual
>>> one's properties have to match that of the physical one?
>>
>> It is because of how vAPLIC emulation load and store is working.
> 
> Thank you very much. This fully explains things, the more that of course
> emulation of loads and stores comes earlier in this series. Oleksii,
> really, please.

Sorry for that. Let me add some extra details where I think that pointer 
to physical APLIC regs are needed.

When APLIC tries to access TARGET register it is necessary to update 
real APLIC as inside this register it is coded information about Hart 
index, Guest Index (guest interrupt file id) and EIID (External 
Interrupt Identity). So to do that vintc should have access to physical 
APLIC registers.

The similar things I expected to be with some of other register, for 
example, that one which are stands for turning on/of interrupts (SETIE, 
CLRIE). If vAPLIC is requesting an enablement of an interrupt then I 
expect that correspondent physical APLIC register should be updated too 
as otherwise how then device interrupt will start to occur. So again it
is needed a pointer to physical APLIC to access these registers.

Does it make sense at least a little bit now?

> 
>>>> --- /dev/null
>>>> +++ b/xen/arch/riscv/vaplic.c
>>>> @@ -0,0 +1,74 @@
>>>> +/* SPDX-License-Identifier: MIT */
>>>> +/*
>>>> + * xen/arch/riscv/vaplic.c
>>>> + *
>>>> + * Virtual RISC-V Advanced Platform-Level Interrupt Controller support
>>>> + *
>>>> + * Copyright (c) Microchip.
>>>> + * Copyright (c) Vates
>>>> + */
>>>> +
>>>> +#include <xen/errno.h>
>>>> +#include <xen/sched.h>
>>>> +#include <xen/xvmalloc.h>
>>>> +
>>>> +#include <asm/aia.h>
>>>> +#include <asm/imsic.h>
>>>> +#include <asm/intc.h>
>>>> +#include <asm/vaplic.h>
>>>> +
>>>> +#include "aplic-priv.h"
>>>> +
>>>> +static int __init cf_check vcpu_vaplic_init(struct vcpu *v)
>>>> +{
>>>> +    int rc = 0;
>>>> +
>>>> +    rc = vcpu_imsic_init(v);
>>>> +    if ( rc )
>>>> +        return rc;
>>>> +
>>>> +    imsic_set_guest_file_id(v, vgein_assign(v));
>>>
>>> And vgein_assign() can't fail? (Rhetorical question - of course it can. That
>>> function shouldn't assert that it can fine a valid ID.)
>>
>> Technically it can't fail (except some bug of course), this function
>> should in general return 0 (when there aren't left h/w IDs)
> 
> Which is "failure".
> 
>> or something > 0 (when there are some h/w IDs).
> 
> Which is "success".
> 
>> ASSERT() inside it was added only
>> because of ...
>>
>>> But then - aren't you limiting the number of vCPU-s a host can handle by the
>>> number vgein IDs?
>>
>> ... At the moment, I am limiting because S/W interrutps guest files
>> (IDs) aren't supported.
> 
> As before - return error codes when errors occur.

I will return error code on the caller side of vgein_assign() if it 
returns 0.


> 
>>>> +static struct vintc * __init vaplic_alloc(void)
>>>> +{
>>>> +    struct vaplic *v = NULL;
>>>
>>> Onve again - why the initializer? In fact, ...
>>>
>>>> +    v = xvzalloc(struct vaplic);
>>>
>>> ... this could be the initializer.
>>
>> Sure, I will use it as initializer.
>>
>>>
>>>> +    if ( !v )
>>>> +        return NULL;
>>>> +
>>>> +    return &v->base;
>>>> +}
>>>
>>> If you returned and ...
>>>
>>>> +int __init domain_vaplic_init(struct domain *d)
>>>> +{
>>>> +    int ret = 0;
>>>> +
>>>> +    d->arch.vintc = vaplic_alloc();
>>>
>>> ... stored struct vaplic *, the slightly odd to_vaplic() macro wouldn't
>>> be needed.
>>
>> vaplic_alloc() return struct vintc *,
> 
> Which is what I'm putting under question. Why would a function of this name
> return anything else than struct vaplic *?

Agree, this function could return struct vaplic *. I will do that.

> 
>> which is then used by to_vaplic()
>> to get struct vaplic *.
> 
> And which is what I'm saying can be avoided.

'struct vintc *vintc;' is still needed in arch_domain struct as it is 
needed to call vintc->ops->... in the case like during vCPU creation:
     if ( (rc = v->domain->arch.vintc->ops->vcpu_init(v)) )
         goto fail;

And then if 'struct vintc *vintc;' is still present in arch_domain 
struct to_vaplic() is still needed in domain_vaplic_deinit(struct domain 
*d) function
to get struct vaplic *. (All it is true for other vAPLIC functions which 
take as an argument struct domain).

> 
>>>> +    if ( !d->arch.vintc )
>>>> +    {
>>>> +        ret = -ENOMEM;
>>>> +        goto fail;
>>>
>>> Nit: goto when simply return could be used.
>>>
>>>> +    }
>>>> +
>>>> +    d->arch.vintc->ops = &vaplic_ops;
>>>
>>> Are other kinds of ops structures going to appear? If not, why the extra
>>> indirection?
>>
>> At the moment, no I don't see any other kinds of ops struct. It was just
>> convenient way to group them and then easier to initialize them - just
>> one assignment instead of addinng a separate line in domain_vaplic_init().
> 
> Maybe I wasn't as clear as I should have been: Why the indirection when it
> doesn't abstract anything? I.e. why the "ops" field in the first place,
> when everyone could access the global (until such time that abstraction
> becomes necessary)?

It isn't really needed now. I can just embed ops into vintc explicitly 
without grouping them into structure.

Except the case if we want to have 'vintc_ops *ops;' field in 
arch_domain structure and separately 'void *vintc;' (which futhure could 
be casted to struct vaplic *) to drop fully to_vaplic() macros.

~ Oleksii


From xen-devel-bounces@lists.xenproject.org Mon Apr 20 10:47:57 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 20 Apr 2026 10:47:57 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1285667.1566785 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wEmAN-0005bj-D0; Mon, 20 Apr 2026 10:47:47 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1285667.1566785; Mon, 20 Apr 2026 10:47: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 1wEmAN-0005bc-AA; Mon, 20 Apr 2026 10:47:47 +0000
Received: by outflank-mailman (input) for mailman id 1285667;
 Mon, 20 Apr 2026 10:47:45 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <jbeulich@suse.com>) id 1wEmAL-0005bV-Hs
 for xen-devel@lists.xenproject.org; Mon, 20 Apr 2026 10:47:45 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wEmAK-00HXRL-Fp
 for xen-devel@lists.xenproject.org; Mon, 20 Apr 2026 12:47:44 +0200
Received: from [10.42.69.6] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <jbeulich@suse.com>)
 id 69e60446-e002-0a2a0a5209dd-0a2a4506cea2-48
 for <xen-devel@lists.xenproject.org>; Mon, 20 Apr 2026 12:47:44 +0200
Received: from [209.85.128.53] (helo=mail-wm1-f53.google.com)
 by tlsNG-16d1c6.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.1)
 (envelope-from <jbeulich@suse.com>)
 id 69e60450-7371-0a2a45060019-d1558035cd91-3
 for <xen-devel@lists.xenproject.org>; Mon, 20 Apr 2026 12:47:44 +0200
Received: by mail-wm1-f53.google.com with SMTP id
 5b1f17b1804b1-48896199cbaso30702775e9.1
 for <xen-devel@lists.xenproject.org>; Mon, 20 Apr 2026 03:47:44 -0700 (PDT)
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-488fb7b2803sm87799535e9.27.2026.04.20.03.47.42
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Mon, 20 Apr 2026 03:47:43 -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=google header.d=suse.com header.i="@suse.com" header.h="Content-Transfer-Encoding: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=1776682064; x=1777286864; darn=lists.xenproject.org;
        h=content-transfer-encoding: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;
        bh=eBk6RUWWRHLEWMddUcOKpPdnDrjhxsPfqVLTl6Z4wQg=;
        b=T6RS56E49oclLH3GcD2mhI27NwfqbQwVvGnTVWGTjk3k94mBk7haYm8v8WwJx3GKy9
         jrRFDe162bBIg3BlERUsBQctPuDbO3kdOzb/L3OYsyi5y91usvvwMZNlnti2vC6Mu1uU
         C4mPTu25h1zNxyGnPbJkR0Lw7kh1+CzpJ8gcOdlgkVA3HGWD0wO2sYYljaJMl9iYytkp
         H7VvDwNF+GTfNFF85f7UXFbY6O8BXHrFKpGwRLD/wUa4jBxazSFR4hHviNOZNaDq+Ncv
         Ti2613azSjVq7AWcjxbfqsBo0JhjhH1RgtX/rERuXoLtvW+RJP4GhWSTKAE8zV/QasWB
         u0mg==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20251104; t=1776682064; x=1777286864;
        h=content-transfer-encoding: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;
        bh=eBk6RUWWRHLEWMddUcOKpPdnDrjhxsPfqVLTl6Z4wQg=;
        b=G7mgOG1p4k1s3mVjFMTCnIJuZK41lb7CX3GYVZ3IH5P9bispebK0ITvYmriKqsSo9E
         jl1X6H7BGIfeY62ugBuagAZmgLmAudth3waBUnW4xQnyvVBMINJkuD1C4db7HGIILwDd
         dR6cMCWi71OI1Zasv0uFaklVwlSunnbizkJMugEY7ZLquFZHV50VxgAEQyI56GQysapw
         LZQKofCzTPEttis8Tw/hjF0hW5BPDmz6+lyB9mIu9x9dtLvTVpgHon5zOY0ZEmGq0gPa
         kCf1st4RGDDce3zPFTs+hIHOFqdKycxQ7fyo69s71W8EeJIlxVtB9pziR6V0be86OstH
         7Iog==
X-Forwarded-Encrypted: i=1; AFNElJ8ue3esRzhZywha5XMes9eFFGYS02pOMa4lUxIIXE9Ro/19skz9KEYUD9Pi3Tik9locxTGEOD3YW8Q=@lists.xenproject.org
X-Gm-Message-State: AOJu0Yzi4LoY+sg4yrOQcJfAzJ7WYfwi08zqq5XWgLVP9AtraaSErHX4
	jhvgI7sgwxyP1vEhhg3Yp1u41Ar46QQ3nnFPYdk4OdQK/wp3supfmvOngxFiav/k9w==
X-Gm-Gg: AeBDievMwCGnqT6uVJn2fuoAYfhxzVzfGkZtFCosCY+4qUlObGD5jCl0h2nYl3FAYTJ
	MkwxBOR9sBgmxi/ha4UqdRt2P/FiN/3Ledf0VtJbm8UFUNq5Bwf5Q0peDtrhknknQ/uP4HY7JRP
	N2K2W+SLv9/QlIrcqtIG5COkcW8DazdY3uTOlv1K3wOXlcWLp8x1dqKzxQ1M87tk90qriqse/Nf
	F2WeXtKDx2nSXXWFm5RQ2Pu+61ULuvgOMRhSsdpkynMWWrdBFXAAnURiPQ85o4eO1gYyl80AwtP
	KJbGj+7FFAWwa3OOogAEIXKiGmOffKgvzxdaYXtIOK6sc67OyAsEZRe1Eo6Q2zH+w+QBwEo52gW
	X+m6dcq+LaDWQr0K2fFbygVH/nwRQrX2rT+pQuAV89Y0pKNXu4C+4KeI5+6F9abTEPKRT8x9oE5
	bsR2TPJf/hAz5SJZcyJPOiE9EkBsrlpiM/lXJAKULVRrkW7/J/6e0AqLSLxzeeq0lEBB2v6Okt/
	aMLhdwSxNSvdggSg9GHnY3gtMVYEbQWQ4on
X-Received: by 2002:a05:600c:5246:b0:488:a639:b787 with SMTP id 5b1f17b1804b1-488fb74fc0dmr191835225e9.11.1776682063502;
        Mon, 20 Apr 2026 03:47:43 -0700 (PDT)
Message-ID: <285f231b-a16f-4eb3-9c84-cbdfc336eab6@suse.com>
Date: Mon, 20 Apr 2026 12:47:44 +0200
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH v1 15/27] xen/riscv: add very early virtual APLIC (vAPLIC)
 initialization support
To: Oleksii Kurochko <oleksii.kurochko@gmail.com>
Cc: Romain Caritey <Romain.Caritey@microchip.com>,
 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.pau@citrix.com>,
 Stefano Stabellini <sstabellini@kernel.org>, xen-devel@lists.xenproject.org
References: <cover.1773157782.git.oleksii.kurochko@gmail.com>
 <e8bcf5618a19fb44d4391410f2f67ffd98a96647.1773157782.git.oleksii.kurochko@gmail.com>
 <44cb3124-8972-4a0c-b785-64f2022f178b@suse.com>
 <a324161d-f8b4-47fe-b5ac-52df6060e45b@gmail.com>
 <da07da74-220a-4dbb-84fc-2e7aeb6b19df@suse.com>
 <c6bef180-5d54-4527-94ca-20ed9729d475@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: <c6bef180-5d54-4527-94ca-20ed9729d475@gmail.com>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 7bit
X-purgate-ID: tlsNG-16d1c6/1776682064-91985D75-80A83D7F/0/0
X-purgate-type: clean
X-purgate-size: 1966

On 20.04.2026 12:25, Oleksii Kurochko wrote:
> On 4/16/26 2:42 PM, Jan Beulich wrote:
>> On 14.04.2026 12:27, Oleksii Kurochko wrote:
>>> On 4/2/26 1:58 PM, Jan Beulich wrote:
>>>> On 10.03.2026 18:08, Oleksii Kurochko wrote:
>>>>> @@ -47,6 +48,19 @@ struct intc_hw_operations {
>>>>>                                const struct dt_device_node *intc);
>>>>>    };
>>>>> +
>>>>> +struct vintc {
>>>>> +    const struct intc_info *info;
>>>>
>>>> Isn't this referencing a physical INTC's structure? Why would the virtual
>>>> one's properties have to match that of the physical one?
>>>
>>> It is because of how vAPLIC emulation load and store is working.
>>
>> Thank you very much. This fully explains things, the more that of course
>> emulation of loads and stores comes earlier in this series. Oleksii,
>> really, please.
> 
> Sorry for that. Let me add some extra details where I think that pointer 
> to physical APLIC regs are needed.
> 
> When APLIC tries to access TARGET register it is necessary to update 
> real APLIC as inside this register it is coded information about Hart 
> index, Guest Index (guest interrupt file id) and EIID (External 
> Interrupt Identity). So to do that vintc should have access to physical 
> APLIC registers.
> 
> The similar things I expected to be with some of other register, for 
> example, that one which are stands for turning on/of interrupts (SETIE, 
> CLRIE). If vAPLIC is requesting an enablement of an interrupt then I 
> expect that correspondent physical APLIC register should be updated too 
> as otherwise how then device interrupt will start to occur. So again it
> is needed a pointer to physical APLIC to access these registers.
> 
> Does it make sense at least a little bit now?

Yes. Just that there's a "but": I can't spot any use of the field in this
patch. Hence I still can't say whether I actually agree. Introduce the
field when it's actually needed?

Jan


From xen-devel-bounces@lists.xenproject.org Mon Apr 20 11:39:27 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 20 Apr 2026 11:39:27 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1285679.1566794 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wEmyG-0003DU-1p; Mon, 20 Apr 2026 11:39:20 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1285679.1566794; Mon, 20 Apr 2026 11:39: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 1wEmyF-0003DN-Uo; Mon, 20 Apr 2026 11:39:19 +0000
Received: by outflank-mailman (input) for mailman id 1285679;
 Mon, 20 Apr 2026 11:39:18 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92) id 1wEmyD-0003DH-SE
 for xen-devel@lists.xenproject.org; Mon, 20 Apr 2026 11:39:18 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wEmyC-008Anl-PA
 for xen-devel@lists.xenproject.org; Mon, 20 Apr 2026 13:39:16 +0200
Received: from [10.42.69.4] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <oleksii.kurochko@gmail.com>)
 id 69e61064-5cb7-0a2a0a5109dd-0a2a4504a77e-0
 for <xen-devel@lists.xenproject.org>; Mon, 20 Apr 2026 13:39:16 +0200
Received: from [209.85.167.42] (helo=mail-lf1-f42.google.com)
 by tlsNG-ebf023.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.1)
 (envelope-from <oleksii.kurochko@gmail.com>)
 id 69e61064-1dec-0a2a45040019-d155a72aec71-3
 for <xen-devel@lists.xenproject.org>; Mon, 20 Apr 2026 13:39:16 +0200
Received: by mail-lf1-f42.google.com with SMTP id
 2adb3069b0e04-5a3d1561e38so2480556e87.0
 for <xen-devel@lists.xenproject.org>; Mon, 20 Apr 2026 04:39:16 -0700 (PDT)
Received: from [192.168.1.6] (user-109-243-69-121.play-internet.pl.
 [109.243.69.121]) by smtp.gmail.com with ESMTPSA id
 2adb3069b0e04-5a41abceab0sm2582324e87.61.2026.04.20.04.39.14
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Mon, 20 Apr 2026 04:39:15 -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=20251104 header.d=gmail.com header.i="@gmail.com" header.h="Content-Transfer-Encoding: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=20251104; t=1776685156; x=1777289956; darn=lists.xenproject.org;
        h=content-transfer-encoding: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;
        bh=C7WH5RB37VbaOAQsw1+nhyAoELWOLdDaJV5kjaGDq/s=;
        b=PaF/nUVqmovTlPcHW82rHfF8YF3/ODVF4EVIbgJQPQe8wYj4oEYVaYF92Gg7GHguis
         MKD1RkX/o963JLuUDzAhGkXBuBfMBYS9CozVmr39DxmVqioNeD1YFDGwVFP3FZ4ki0ui
         44tfZVskRVysOjkYWr2eZDSJImb3C+5Mg11vXLpMDEj6NjWmZmiAC6e+oknzkEPEy1vl
         QgnrEE1Qe5228Erj43zLdL0ZMTaRjX1mHjnaBK5kP6CHC8G5LAWkePR8Kd5CtQ7ZDkT1
         ScHXO1ucTqG9uZyw2GhicKLfB85+MEZq5sBVkuTH0WWIACZ41pRPJ6aaAOfRb9cbMBj2
         7LNQ==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20251104; t=1776685156; x=1777289956;
        h=content-transfer-encoding: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;
        bh=C7WH5RB37VbaOAQsw1+nhyAoELWOLdDaJV5kjaGDq/s=;
        b=Bjoi7Qjc7NI1LywP2bkpdEZJlZJ3TJQFdKa5FtpWpxebY7cdQe6XbayO/RujOevJbZ
         UyJYNnAf7GwEggNBl3eLY2IFA1LpzMIZRvUc5tTZGg84OzH/cyZgyGB38qpw24tRQydk
         BQktnhgAm169LcoOx5KMnHYIOTqApeRiDTLYgcsoZNZ9uICcQwSbv4MUjygK5ptafhMI
         pUM8XQQWFOmeO/oLNbj/gU/hRImEyRj6nfSN6Beq06RNOroY33e1OO/Ndymng9KmczrE
         ncDWeKYp608oFn82jq/SPKE9oltZSLEheTZTVYnvoj6IpFQEPOZgCDfd0sRpTtCyQThR
         djMw==
X-Forwarded-Encrypted: i=1; AFNElJ+xs0uJ4EuWSSPzjpZbGkiSRSw1gr9Cu5ynfBsNTd08aXPw6MgHzhC9wXCfciGOVgj1LPiWX3v9pTs=@lists.xenproject.org
X-Gm-Message-State: AOJu0YynHa/MSN+jzs9y63jBFN45hxijmBvXMTJELS9w0YmPk+DiQ11e
	SXTilMQ4QzoMe4DpXePdr2p3mX3P6h6HAA3zCELXXxm0cIyxfdMaXsyf
X-Gm-Gg: AeBDietkX2j37JGYsbgJTxSLtDBESl8WbvuuZxGr+SJj/eDa6ySxJ4jR5hsfUuwwD4D
	8R1b7Z2KT9peH9yy4fI6H3Jqxltz+cC6583VFMS7B9idejzWLtW+rm1tRk76pNNejJeS/wdx+35
	MPi7AKmJDzxhqPJqejXrihRzjiltcRn9oGsfwOZ1VhywnnBT78peaeiBUa3xvVvkySAAx6pSiB7
	wLNZXo3JipmkgOdI4YRCDTl0DH7dYM9aUupaPWEaT6EpSZUEG7Xb8tP7RFcEVwQWIGpCfw0+Hsv
	Ksact+C7vuyM3mv5astQ3Gw2/rQZ5yG+UTA7ulwguOYNH8vw0NF2BLFRbYxdg6ZK5XtKFYvDo6E
	cS+2AQlWvd35yunn+QGgubyIWuiOBwePJsiuzAB7xCoUk6bV+LBjOt+vYpdtSt5bpzhy4SE+aBq
	/PgZ7f+m0kvMu0PfExRri87qSkQ9yfRAR4ZLCcU3SGSm8od0GkPEx3aZ/qDDhgxpQgMQ390qUWU
	psBNdcgcUmSbQ==
X-Received: by 2002:a05:6512:ace:b0:5a2:c914:8af7 with SMTP id 2adb3069b0e04-5a4172bb914mr3998047e87.5.1776685155446;
        Mon, 20 Apr 2026 04:39:15 -0700 (PDT)
Message-ID: <00fa439d-0327-4c0c-960d-a810820a6e83@gmail.com>
Date: Mon, 20 Apr 2026 13:39:13 +0200
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH v1 16/27] xen/riscv: implement IRQ mapping for device
 passthrough
To: Jan Beulich <jbeulich@suse.com>
Cc: Romain Caritey <Romain.Caritey@microchip.com>,
 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.pau@citrix.com>,
 Stefano Stabellini <sstabellini@kernel.org>, xen-devel@lists.xenproject.org
References: <cover.1773157782.git.oleksii.kurochko@gmail.com>
 <10654a6c38fa929b5fdf6f214badfe4f60fe78d4.1773157782.git.oleksii.kurochko@gmail.com>
 <8a8a2afd-6f53-4f45-b8c8-fb34a6fbb970@suse.com>
 <f099b925-0ea9-43a7-b760-f70f343a4d7c@gmail.com>
 <a7a4e8c9-d053-4ca7-ac9c-f43ddccf9151@suse.com>
Content-Language: en-US
From: Oleksii Kurochko <oleksii.kurochko@gmail.com>
In-Reply-To: <a7a4e8c9-d053-4ca7-ac9c-f43ddccf9151@suse.com>
Content-Type: text/plain; charset=UTF-8; format=flowed
Content-Transfer-Encoding: 8bit
X-purgate-ID: tlsNG-ebf023/1776685156-30C473FF-7E1304AF/10/73395122804
X-purgate-type: spam
X-purgate-size: 9356



On 4/16/26 2:51 PM, Jan Beulich wrote:
> On 14.04.2026 13:29, Oleksii Kurochko wrote:
>> On 4/2/26 2:22 PM, Jan Beulich wrote:
>>> On 10.03.2026 18:08, Oleksii Kurochko wrote:
>>>> --- a/xen/arch/riscv/include/asm/setup.h
>>>> +++ b/xen/arch/riscv/include/asm/setup.h
>>>> @@ -5,6 +5,10 @@
>>>>    
>>>>    #include <xen/types.h>
>>>>    
>>>> +struct domain;
>>>> +struct dt_device_node;
>>>> +struct rangeset;
>>>> +
>>>>    #define max_init_domid (0)
>>>>    
>>>>    void setup_mm(void);
>>>> @@ -13,6 +17,19 @@ void copy_from_paddr(void *dst, paddr_t paddr, unsigned long len);
>>>>    
>>>>    void init_csr_masks(void);
>>>>    
>>>> +/* TODO: move somewhere to common header? */
>>>
>>> Counter question: Why ...
>>>
>>>> +/*
>>>> + * Retrieves the interrupts configuration from a device tree node and maps
>>>> + * those interrupts to the target domain.
>>>> + *
>>>> + * Returns:
>>>> + *   < 0 error
>>>> + *   0   success
>>>> + */
>>>> +int map_device_irqs_to_domain(struct domain *d, struct dt_device_node *dev,
>>>> +                              bool need_mapping,
>>>> +                              struct rangeset *irq_ranges);
>>>
>>> ... is this not an inline function, when ...
>>>
>>>> --- a/xen/arch/riscv/intc.c
>>>> +++ b/xen/arch/riscv/intc.c
>>>> @@ -79,3 +79,11 @@ int __init intc_make_domu_dt_node(const struct kernel_info *kinfo)
>>>>    
>>>>        return -ENOSYS;
>>>>    }
>>>> +
>>>> +int map_device_irqs_to_domain(struct domain *d, struct dt_device_node *dev,
>>>> +                              bool need_mapping,
>>>> +                              struct rangeset *irq_ranges)
>>>> +{
>>>> +    return d->arch.vintc->ops->map_device_irqs_to_domain(d, dev, need_mapping,
>>>> +                                                         irq_ranges);
>>>> +}
>>>
>>> ... it's merely a wrapper around an indirect function call? And then the
>>> function isn't used anywhere anyway.
>>
>> It is used by dom0less common code and it is a wrapper because Arm has
>> different implementation and Arm doesn't have
>> map_device_irqs_to_domain() in its virtual interrupt controller operations.
> 
> But the question wasn't why this is a wrapper, but why this wrapper isn't an
> inline function.

Got you, it could be really inline.

> 
>>>> +int vaplic_map_device_irqs_to_domain(struct domain *d,
>>>> +                                     struct dt_device_node *dev,
>>>> +                                     bool need_mapping,
>>>> +                                     struct rangeset *irq_ranges)
>>>> +{
>>>> +    unsigned int i, nirq;
>>>> +    int res, irq;
>>>> +    struct dt_raw_irq rirq;
>>>> +    uint32_t *auth_irq_bmp = d->arch.vintc->private;
>>>> +    unsigned int reg_num;
>>>> +
>>>> +    nirq = dt_number_of_irq(dev);
>>>> +
>>>> +    /* Give permission and map IRQs */
>>>> +    for ( i = 0; i < nirq; i++ )
>>>> +    {
>>>> +        res = dt_device_get_raw_irq(dev, i, &rirq);
>>>> +        if ( res )
>>>> +        {
>>>> +            printk(XENLOG_ERR "Unable to retrieve irq %u for %s\n",
>>>> +                   i, dt_node_full_name(dev));
>>>> +            return res;
>>>> +        }
>>>> +
>>>> +        /*
>>>> +         * Don't map IRQ that have no physical meaning
>>>> +         * ie: IRQ whose controller is not APLIC/IMSIC/PLIC.
>>>> +         */
>>>> +        if ( rirq.controller != dt_interrupt_controller )
>>>> +        {
>>>> +            dt_dprintk("irq %u not connected to primary controller."
>>>> +                       "Connected to %s\n", i,
>>>> +                       dt_node_full_name(rirq.controller));
>>>> +            continue;
>>>> +        }
>>>> +
>>>> +        irq = platform_get_irq(dev, i);
>>>> +        if ( irq < 0 )
>>>> +        {
>>>> +            printk("Unable to get irq %u for %s\n", i, dt_node_full_name(dev));
>>>> +            return irq;
>>>> +        }
>>>> +
>>>> +        res = irq_permit_access(d, irq);
>>>> +        if ( res )
>>>> +        {
>>>> +            printk(XENLOG_ERR "Unable to permit to %pd access to IRQ %u\n", d,
>>>> +                   irq);
>>>
>>> This time the other way around: %d please with plain int. (Again at least
>>> once further down.)
>>>
>>>> +            return res;
>>>> +        }
>>>> +
>>>> +        reg_num = irq / APLIC_NUM_REGS;
>>>> +
>>>> +        if ( is_irq_shared_among_domains(d, irq) )
>>>> +        {
>>>> +            printk("%s: Shared IRQ isn't supported\n", __func__);
>>>> +            return -EINVAL;
>>>> +        }
>>>> +
>>>> +        auth_irq_bmp[reg_num] |= BIT(irq % APLIC_NUM_REGS, U);
>>>
>>> ... all of this leaves me with the impression that IRQ numbering isn't really
>>> virtualized. IRQs are merely split into groups, one group per domain (and
>>> maybe some unused). How are you going to fit in truly virtual IRQs?
>>
>> What do you mean by truly virtual IRQs?
> 
> Ones where no aspects are represented by any piece of hardware.
> 
>> I can't totally agree that the current approach isn't use virtual IRQs,
>> yes, they are 1:1 mapped but on the other side Xen is responsible to
>> give an IRQ number for guest's device and Xen is responsible that guest
>> isn't trying to reach IRQ which not belongs to it.
> 
> In a non-virtualized environment I expect IRQs are going to be "sparse"
> (i.e. with perhaps large blocks of items used elsewhere). If you had
> proper translation of IRQ numbers, the same could be true for your
> guests.

Partial FDT, which is used to tell which device be passthroughed to 
guest, is using physical IRQ number (which I am just considering for 
simplicity to be 1:1 mapped to virtual IRQ number). So if we have the 
following configuration:
   Physical (bare-metal) IRQ layout is sparse:
     IRQ 5  → UART -> domU0
     IRQ 23 → Ethernet -> domU1
     IRQ 47 → PCIe -> domU0
     IRQ 100 → Storage -> domU1
(gaps everywhere, driven by hardware wiring)

For such configuration we will have for each domain auth_irq_bmp[] which 
contains:
  IRQ 5 and IRQ47 for domU0
and
  IRQ 23 and IRQ 100 for domU1

And here vIRQ5 = pIRQ5, vIRQ47 = pIRQ47 and so on. auth_irq_bmp just 
transform xIRQ number to bit position which it will have in real APLIC 
register. Just as an example, lets take vIRQ5 and vIRQ47.

As reading or writing register setie[k] reads or potentially modifies 
the enable bits for interrupt sources k × 32 through k × 32 + 31. For an 
implemented interrupt source i within that range, the enable bit for 
source i corresponds with register bit (i mod 32).
So for:
  - vIRQ5 == pIRQ5 we have to set bit 5 in setie[0]
  - vIRQ47 == pIRQ47 we have to set bit 15 in setie[1]

Probably it was not the best idea to declare auth_irq_bmp as it will 
look in h/w and maybe just 'bool auth_irq_bmp[1024]' would be more clearer.

So irqs number are still stay "sparsed" in guest.

> 
>>>> +        dt_dprintk("  - IRQ: %u\n", irq);
>>>> +
>>>> +        if ( irq_ranges )
>>>> +        {
>>>> +            res = rangeset_add_singleton(irq_ranges, irq);
>>>> +            if ( res )
>>>> +                return res;
>>>> +        }
>>>
>>> What is irq_ranges?
>>
>> IIUC based on Arm code irq_ranges is an optional output accumulator, the
>> caller allocates and passes it in when it needs to track which IRQs were
>> mapped (overlay use case), or passes NULL when that tracking is not needed.
>>
>> I added here as map_device_irqs_to_domain() is called from the common
>> code and so maybe one day someone will decide to pass irq_ranges to this
>> functions. At the moment, for RISC-V it is the only one user of
>> map_device_irqs_to_domain() and it passes NULL.
> 
> Simply assert then that it's NULL?

Won't BUG_ON() be better here as it BUG_ON() macros is always defined 
and doesn't matter if release or debug build are used.

Or maybe you meant:
  if ( irq_ranges )
      assert_failed("irq_ranges arg isn't supported\n");

> 
>>>> @@ -34,6 +142,7 @@ static int __init cf_check vcpu_vaplic_init(struct vcpu *v)
>>>>    
>>>>    static const struct vintc_ops vaplic_ops = {
>>>>        .vcpu_init = vcpu_vaplic_init,
>>>> +    .map_device_irqs_to_domain = vaplic_map_device_irqs_to_domain,
>>>>    };
>>>
>>> What about the inverse function, needed for domain cleanup?
>>
>> I planned to add it when it will be really needed. At the momemnt, I
>> don't have such use cases.
> 
> I.e. if any domain needs re-starting, the entire system needs rebooting?
> Recall that "dom0less" is slightly misleading a name, as it only allows
> there to not be a Dom0. One can be there, and hence re-starting a crashed
> domain ought to be possible. For that, you need to correctly clean up
> after the crashed one.

I haven't investigated yet what will be code path to do a reboot or 
re-start crashed domain but based on an implementation of 
vaplic_map_device_irqs_to_domain() as nothing is allocated there and 
filling of auth_irq_bmp[] is happening there which will stay the same 
after reboot if it is just re-used or it will be allocated new one if 
crashed domain will just recreate this domain from scratch. So it seems 
like it is enough to have only map_device_irqs_to_domain().

~ Oleksii



From xen-devel-bounces@lists.xenproject.org Mon Apr 20 11:42:33 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 20 Apr 2026 11:42:33 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1285690.1566802 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wEn1L-0004mc-HV; Mon, 20 Apr 2026 11:42:31 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1285690.1566802; Mon, 20 Apr 2026 11:42: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 1wEn1L-0004mV-Er; Mon, 20 Apr 2026 11:42:31 +0000
Received: by outflank-mailman (input) for mailman id 1285690;
 Mon, 20 Apr 2026 11:42:30 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <Luca.Fancellu@arm.com>) id 1wEn1K-0004mP-Iw
 for xen-devel@lists.xenproject.org; Mon, 20 Apr 2026 11:42:30 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wEn1J-00AhSH-Vm
 for xen-devel@lists.xenproject.org; Mon, 20 Apr 2026 13:42:30 +0200
Received: from [10.42.69.1] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <Luca.Fancellu@arm.com>)
 id 69e6111b-bab6-0a2a0a5309dd-0a2a4501eaa0-20
 for <xen-devel@lists.xenproject.org>; Mon, 20 Apr 2026 13:42:29 +0200
Received: from [52.101.84.58]
 (helo=DB3PR0202CU003.outbound.protection.outlook.com)
 by tlsNG-d62444.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.1)
 (envelope-from <Luca.Fancellu@arm.com>)
 id 69e61124-c1f2-0a2a45010019-3465543a8d08-3
 for <xen-devel@lists.xenproject.org>; Mon, 20 Apr 2026 13:42:28 +0200
Received: from DU2PR04CA0191.eurprd04.prod.outlook.com (2603:10a6:10:28d::16)
 by PR3PR08MB5820.eurprd08.prod.outlook.com (2603:10a6:102:90::6) with
 Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9818.32; Mon, 20 Apr
 2026 11:42:25 +0000
Received: from DB1PEPF000509E4.eurprd03.prod.outlook.com
 (2603:10a6:10:28d:cafe::a4) by DU2PR04CA0191.outlook.office365.com
 (2603:10a6:10:28d::16) with Microsoft SMTP Server (version=TLS1_3,
 cipher=TLS_AES_256_GCM_SHA384) id 15.20.9791.48 via Frontend Transport; Mon,
 20 Apr 2026 11:42:25 +0000
Received: from outbound-uk1.az.dlp.m.darktrace.com (4.158.2.129) by
 DB1PEPF000509E4.mail.protection.outlook.com (10.167.242.54) with Microsoft
 SMTP Server (version=TLS1_3, cipher=TLS_AES_256_GCM_SHA384) id 15.20.9791.48
 via Frontend Transport; Mon, 20 Apr 2026 11:42:25 +0000
Received: from DU2PR08MB7272.eurprd08.prod.outlook.com (2603:10a6:10:2d7::16)
 by DU0PR08MB9847.eurprd08.prod.outlook.com (2603:10a6:10:444::19)
 with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9818.32; Mon, 20 Apr
 2026 11:41:21 +0000
Received: from DU2PR08MB7272.eurprd08.prod.outlook.com
 ([fe80::5d34:206f:373:a323]) by DU2PR08MB7272.eurprd08.prod.outlook.com
 ([fe80::5d34:206f:373:a323%6]) with mapi id 15.20.9818.032; Mon, 20 Apr 2026
 11:41: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=arm.com header.i="@arm.com" header.h="From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck"; dkim=pass header.s=selector1 header.d=arm.com header.i="@arm.com" header.h="From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck"
ARC-Seal: i=2; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=pass;
 b=y0WCZwIjDzOJCvLPW8GoXR9fIbSi7eyqGNEbIdS9en6CdyHQIGbh1UQMO94U+MEl2C5+IdbLbLD3gdKY+aI7c/MA/9oCr8mLiP+Lwx8j1HzTEeOIP6nI2nqPOzUdUxQwGcsPfxXChlEvyGrKZyujIW6wPk/D+aJFGx94SCFrAh5BuoPefplaHwSaa4V36tQH61O3NK1wlzUFOAq8jgUWLgaFeZko9kNDJSpzeaC5FnDpnQImexoYcIS6bEwLDfqKpcaZMP0k/5Aat5XCfa4bjpSLeiAEYJbuoZJqUm11Yx4azl5hIQ6reVShlhva+ItcZUohktfRZFHpZlA6Uj61aQ==
ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com;
 s=arcselector10001;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1;
 bh=GivgOMtdmsOupdEf24L90Bwdbr214++lde9BKw9Fngs=;
 b=MOZmQhb3RmJep4wACttOXrf6i88lf1mw9dcvIGYjwCdWGks8+doH3TSZwvoJidJq44MhfE19UptHuxQgeFL8JWgNZIGdrVWfRor6wlIxwMn+lAS/Dac0bAM9bd7hp2H5OpBH0HOrBWN7fuZ3TKfLYtk1C/ig1lKj/T+N7XAyfwbSXHTTWBBoh729vQGXSmItwlMWuQo92FBjT/ranei0vsmqRfCD8BPG0ecO/w6ygTTF80dWiVlZIXb/pe4Jntr/kg2OmduY6de3iyHqn2ldFGv79DoLcu0Fei0ARdrHl3izCRJQx++ksp/jKO7x4DxfGotagl5aPFMQRQH9bT1c8g==
ARC-Authentication-Results: i=2; mx.microsoft.com 1; spf=pass (sender ip is
 4.158.2.129) smtp.rcpttodomain=gmail.com smtp.mailfrom=arm.com; dmarc=pass
 (p=none sp=none pct=100) action=none header.from=arm.com; dkim=pass
 (signature was verified) header.d=arm.com; arc=pass (0 oda=1 ltdi=1
 spf=[1,1,smtp.mailfrom=arm.com] dkim=[1,1,header.d=arm.com]
 dmarc=[1,1,header.from=arm.com])
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=arm.com; s=selector1;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck;
 bh=GivgOMtdmsOupdEf24L90Bwdbr214++lde9BKw9Fngs=;
 b=Ojqw1LWieqy58xuspFmR2OJhm/2q8/t5r10j9+hdTWd/1Q9s5xrTOpCV+CrUKEp1rQKTmojwjtXFU5rhq/+lZeDVUcB/dJEKykjy8P8u9vcLF3xKRWHwtDFrWp1CPgmYt++sm/XwdutV2+U2fCChUyplhDSkDKZa4xolANLO/2k=
X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 4.158.2.129)
 smtp.mailfrom=arm.com; dkim=pass (signature was verified)
 header.d=arm.com;dmarc=pass action=none header.from=arm.com;
Received-SPF: Pass (protection.outlook.com: domain of arm.com designates
 4.158.2.129 as permitted sender) receiver=protection.outlook.com;
 client-ip=4.158.2.129; helo=outbound-uk1.az.dlp.m.darktrace.com; pr=C
ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none;
 b=YVuQwUkipVfHPn4PXeVqZBGOOR24c+IuHMkYlYzti6Us6gOQFNr8xi3JOq4s30anz1jGZu6QRaVhvLP7GSTMtI6z1zjPq0OJAkvnwcIJdNsB1Ky3TTL41eaDxdEgnUGR9W3Ja8FtZXHhG7arJZ6g2Wmj1Oxfpm/1qZHqXV4c87dcgH64FKtcvL9Ku93awpD47G4iZCasSJV40Ow8VzTLwjt6QpH1GZurXehAE/51f9szbmKDNmncb2mH5YI7GxsjeQ7W5UuadhPKQEw4Q89scs12KZflTrTDTqnu0Q1USKMuHmmys0ORnPljt0/M3OpcoKiAAhr97Btcx8dzwcKBlA==
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com;
 s=arcselector10001;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1;
 bh=GivgOMtdmsOupdEf24L90Bwdbr214++lde9BKw9Fngs=;
 b=mTNzHrAm7F3ak6t8iLDCtL6KoiM/dzXiJCva11hgui3zEU2Hk7r8gehemviJcmJRQa/cGraa38sCCc/vt0meESz31QvdlZ4dzTaij1W6BWbVrA9B/fXgyReBJoKwT3ohB0i8IW95M14yiEpbsIa6matdAVl1ztjjuacaex4dkP3KZCJedhfaeIl7MpN80AKzXAUFyDK5bbyh69WvPu/9MYe0MFHIHieAjEBn2e+HoLgMxVQUZSbUUX5yY5vLIsM0rQr2IYGuaWbl1tig9Yl2EFeWvIloX0B1+lcuT1nrtlJUFJvkFhcaxEtb+KQ+KK59Edzy+g7ST14XBS8PLzFmSA==
ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass
 smtp.mailfrom=arm.com; dmarc=pass action=none header.from=arm.com; dkim=pass
 header.d=arm.com; arc=none
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=arm.com; s=selector1;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck;
 bh=GivgOMtdmsOupdEf24L90Bwdbr214++lde9BKw9Fngs=;
 b=Ojqw1LWieqy58xuspFmR2OJhm/2q8/t5r10j9+hdTWd/1Q9s5xrTOpCV+CrUKEp1rQKTmojwjtXFU5rhq/+lZeDVUcB/dJEKykjy8P8u9vcLF3xKRWHwtDFrWp1CPgmYt++sm/XwdutV2+U2fCChUyplhDSkDKZa4xolANLO/2k=
From: Luca Fancellu <Luca.Fancellu@arm.com>
To: Mykola Kvach <xakep.amatop@gmail.com>
CC: "xen-devel@lists.xenproject.org" <xen-devel@lists.xenproject.org>, 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>
Subject: Re: [PATCH] xen/arm: gic-v2: disable interrupt bypass on CPU shutdown
Thread-Topic: [PATCH] xen/arm: gic-v2: disable interrupt bypass on CPU
 shutdown
Thread-Index: AQHcyM3ZwfiMQ0fViEyMjacB3wgBCLXn43iA
Date: Mon, 20 Apr 2026 11:41:21 +0000
Message-ID: <1E7985CB-EE4C-4769-B23C-EDEF2E75EF08@arm.com>
References:
 <459cf46204e86ed3a2ffd79ae649b1a2051f5204.1775812563.git.mykola_kvach@epam.com>
In-Reply-To:
 <459cf46204e86ed3a2ffd79ae649b1a2051f5204.1775812563.git.mykola_kvach@epam.com>
Accept-Language: en-GB, en-US
Content-Language: en-US
X-MS-Has-Attach:
X-MS-TNEF-Correlator:
x-mailer: Apple Mail (2.3826.700.81.1.6)
Authentication-Results-Original: dkim=none (message not signed)
 header.d=none;dmarc=none action=none header.from=arm.com;
x-ms-traffictypediagnostic:
	DU2PR08MB7272:EE_|DU0PR08MB9847:EE_|DB1PEPF000509E4:EE_|PR3PR08MB5820:EE_
X-MS-Office365-Filtering-Correlation-Id: 8e58886c-1b13-420e-a8ad-08de9ed1e47f
x-checkrecipientrouted: true
nodisclaimer: true
X-MS-Exchange-SenderADCheck: 1
X-MS-Exchange-AntiSpam-Relay: 0
X-Microsoft-Antispam-Untrusted:
 BCL:0;ARA:13230040|366016|376014|1800799024|38070700021|56012099003|18002099003|22082099003;
X-Microsoft-Antispam-Message-Info-Original:
 D4EK043H8NsbFOn8IHr5ln9hdhX4Fgd5xpRrXfBXmrd6oJemj6P4pxGqi9lyNOR7jrI17p14PlVzi3RfADfIU9I/KYgBljcnPSfzK6jDtYTikgFYrsn5LEtebQLiN0I/gw9SqQLfZH9js+mK0yuRlwRTh/7atR6vtN7ECtnrL6deCZPEdkj+89bx/QscA8NSXaQG1C94qwU+VKo8S1p3Q0h0gisFZM6TqvTXhi/dJU9C4/xquihnfdfM4vSWBYb9wKFSvqgGrwBrDPL9iDICRglNC0ClVNdiNKiymxGp7G1PA7yZair99B03pM6Bs4WIdG0TlGwQb0vrplRjUE2uy+jTd0E0B7hYThH1wLqbckQC6Fs+I0aJ6PPeVi2opj8P7dvr89ZsGg8aSlbnV8z9nlPDhH7fCSFRIDjlJFrlrgDsa5WFhwR4t2TqogR60unQsfKbRU0uTJpTmB6S+Vq5C3aAAu4KNFON5pY1GTahOK//kC/MnSpZWpN6GIDWf/gJc/2ChWdH0oUWB0rwZoPRr3hRkDOZ0REBPTNyufWed6ZHM2rnLZqxdVulWXjceuPSX4Q7oGHxSKQX3tBlYyTHS91UVvgV1m8SqWltAkfB+aYzyX2fhb0+cJoPasQSBGrkg8Tp1q0l1ZjyqngCqWo9vuCAEViHJLPfQEgc5mekLmE7haCUh/l7tAEu5Vms87OcRs4cpdqTTnXNn3OexnT1bKsT2vDltdJe8wv9HxjRiF0PmFbOw4gjrm6RAVDmqX7wToMJoaIQpJBXn+pOiEJAKbKQsN3pdHEOXUV0BKteoWA=
X-Forefront-Antispam-Report-Untrusted:
 CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:DU2PR08MB7272.eurprd08.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(366016)(376014)(1800799024)(38070700021)(56012099003)(18002099003)(22082099003);DIR:OUT;SFP:1101;
Content-Type: text/plain; charset="us-ascii"
Content-ID: <4EF891A8CA7AAE4F9F08AE4EEFA530EB@eurprd08.prod.outlook.com>
Content-Transfer-Encoding: quoted-printable
MIME-Version: 1.0
X-Exchange-RoutingPolicyChecked:
 uu/44UGnvrO6mZ/xyPB8uRjQQj09s5O1ljb5/FncsJBEj6VY4FK0WmvVfg6KpyyO1zM+p1f/SYfxPt8jjygDsaFeLfQWKgA+lu60yOt41yYXrFCd3Jvsy8YPl9fPsBXdFFrKT4d1lJPWWwI5ETyKlc+RbrtDaNHV5bgKKWWaVg7W1Z2j5P3QINhLmqHRbQ9MwQ1ZyvIIPB1z6SXdgmU7WBX2C7oootJrUBWRpNP8kFq/ubMIHFefXXOrzN8J/2ngTL14gbEhcTCHI/qIF57Raj9t0UK8j6WJ/P7W347hFj++ggkAM17/tUsrOU5WTioWCq9TxdCzrlREbIYdHUHZeg==
X-MS-Exchange-Transport-CrossTenantHeadersStamped: DU0PR08MB9847
X-EOPAttributedMessage: 0
X-MS-Exchange-Transport-CrossTenantHeadersStripped:
 DB1PEPF000509E4.eurprd03.prod.outlook.com
X-MS-PublicTrafficType: Email
X-MS-Office365-Filtering-Correlation-Id-Prvs:
	33d8b3d9-6db3-43de-ff66-08de9ed1be6d
X-Microsoft-Antispam:
	BCL:0;ARA:13230040|36860700016|1800799024|376014|14060799003|35042699022|82310400026|56012099003|22082099003|18002099003;
X-Microsoft-Antispam-Message-Info:
	kYwQmP24E5+zHZLCwK+RHdecQgWmXHp82PWThB24aCRHdxXpM25jxFqzifmIZQiOJSSIYupPKdI+R/a0/IByjcT0YCZF2NEe/yHLurxXXoeVBqm7h2e2UXUNsD3j9atMFmYOL7/HMSyQlBLkcb99KsxAu3qHjUCX83v/eoFpMz4NRvnYq/W0iAUzV69oYblU2HMg5cLDesW2Uh91cH0B4NztJE1DbmLHHSMir5vZZafZqyJ8S0SJgiDR0GcPvQj/jFLW5O1I36sFI0J/8m6WM424O4lwZEiB96Kd2vegVuCwC3ABx55lNcyQYXKeSJYBh3fXHVxdmEu7CEFiAybh5FgIevVp1a6O7lBdBHMFAgyzOe5OeFgO546XZwHKeJoThKJjHY0WZX8jVONmwkMT/T2F3VAyxiCw3lRrHKRfvKKPPDaOa2mbXocHgVn0TwIyrgXJGxuVu7y83ePgJgB4A4quIUf3HQCxLWB6lmOI4oioTAWlw9tsmTWscoF9iW4OQqSJjWgc11RGylNs6a4uCN2pMN3blnnOKjIHocjeSgnpKCzVdPqziPLY0+2jQyCpzQr/Rnf+6Hj6R4RtEiPw6cPv8GoYziybCXiFWpWDzD0e31l/tc1/z4+XHxy2uGJLHsCAiAMNZ0MFsYXf55I2L73+4mF0Ex1YcFQyqwY6uuRK91TOEC6pg0om/YEXiYzSGwUejFKt2arEZrxkim93G6AH7ar3813GVhC+HKRRVs4pUvCGhBuHEjihSjtp+fQ49EK1qWr+wOxZQhK9lhVYzw==
X-Forefront-Antispam-Report:
	CIP:4.158.2.129;CTRY:GB;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:outbound-uk1.az.dlp.m.darktrace.com;PTR:InfoDomainNonexistent;CAT:NONE;SFS:(13230040)(36860700016)(1800799024)(376014)(14060799003)(35042699022)(82310400026)(56012099003)(22082099003)(18002099003);DIR:OUT;SFP:1101;
X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1
X-MS-Exchange-AntiSpam-MessageData-0:
	aDP/8KXiK6xoPbSBCmUXBY1HcKCiWJTbA0b7kJeItmMG8PWKO/oXltgLD/Cm0yqdedatLHYGgkzij3SSzdmzrLhJSKtDsbZACl/BEcAB4poxPKDfNgEceR7oeDNgIdtAlrog2UK4S1oEfFFu2oF4X0Hya/9Pr/2i/JvngnvNuOn87qiBl3MVmK+oAmxmOft8lUejH7Sgdru1rc+znsZzL4/4qJ5+YbR1m8ao7fEXYlWXvL+/bsUBarzOzHzn1OLT9utpQZEFPANydvG13qZBOlVO/Bvs9vb6PSAm3GRgJVMVxNy95Oi8EeOEQi8I754EQN4R26ZuziVtGpym09QIndbwkD7VfA8g/AOo9WxvkbNM5Bnr9TzhGX4e+bEBq9FE81XuZiODvYSmc7X/jck4guZ1UoP78fqvJa/HwsceFr/4KXNJbOFSstbcF8Vfjhwf
X-OriginatorOrg: arm.com
X-MS-Exchange-CrossTenant-OriginalArrivalTime: 20 Apr 2026 11:42:25.0950
 (UTC)
X-MS-Exchange-CrossTenant-Network-Message-Id: 8e58886c-1b13-420e-a8ad-08de9ed1e47f
X-MS-Exchange-CrossTenant-Id: f34e5979-57d9-4aaa-ad4d-b122a662184d
X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=f34e5979-57d9-4aaa-ad4d-b122a662184d;Ip=[4.158.2.129];Helo=[outbound-uk1.az.dlp.m.darktrace.com]
X-MS-Exchange-CrossTenant-AuthSource:
	DB1PEPF000509E4.eurprd03.prod.outlook.com
X-MS-Exchange-CrossTenant-AuthAs: Anonymous
X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem
X-MS-Exchange-Transport-CrossTenantHeadersStamped: PR3PR08MB5820
X-purgate-ID: tlsNG-d62444/1776685349-B5A69FF4-924316F3/0/0
X-purgate-type: clean
X-purgate-size: 1916

Hi Mykola,

> On 10 Apr 2026, at 10:36, Mykola Kvach <xakep.amatop@gmail.com> wrote:
>=20
> From: Mykola Kvach <mykola_kvach@epam.com>
>=20
> The GICv2 CPU shutdown path currently writes 0 to GICC_CTLR.
>=20
> Per IHI0048B.b section 2.3.1, clearing IRQBypDisGrp{0,1} and
> FIQBypDisGrp{0,1} selects bypass rather than deasserted interrupt
> outputs when the CPU interface stops driving them. Tables 2-2 and 2-3
> show that a zeroed GICC_CTLR can fall back to the legacy IRQ/FIQ inputs
> instead of fully disabling the interface.
>=20
> Fix this by reading GICC_CTLR, setting the bypass-disable bits, and
> clearing both group-enable bits before writing the value back. Keep the
> existing GICC_CTL_ENABLE definition for the init path and use a separate
> mask for the shutdown-side group-enable handling.
>=20
> Section 2.3.2 also states that wakeup event signals remain available
> even when both GIC interrupt signaling and interrupt bypass are
> disabled, so disabling bypass does not break the power-management use
> case, i.e. suspend modes.
>=20
> Fixes: 5e40a1b4351e ("arm: SMP CPU shutdown")
> Signed-off-by: Mykola Kvach <mykola_kvach@epam.com>
> ---
> xen/arch/arm/gic-v2.c          |  7 ++++++-
> xen/arch/arm/include/asm/gic.h | 21 +++++++++++++++++++--
> 2 files changed, 25 insertions(+), 3 deletions(-)
>=20
> diff --git a/xen/arch/arm/gic-v2.c b/xen/arch/arm/gic-v2.c
> index b23e72a3d0..22aa25bad0 100644
> --- a/xen/arch/arm/gic-v2.c
> +++ b/xen/arch/arm/gic-v2.c
> @@ -408,7 +408,12 @@ static void gicv2_cpu_init(void)
>=20
> static void gicv2_cpu_disable(void)
> {
> -    writel_gicc(0x0, GICC_CTLR);
> +    uint32_t ctlr =3D readl_gicc(GICC_CTLR);
> +
> +    ctlr |=3D GICC_CTL_BYP_DIS_MASK;

If the GIC v2 implementation includes the Security Extensions, the bit 7-8
are reserved, but now we are unconditionally writing on them.

Cheers,
Luca



From xen-devel-bounces@lists.xenproject.org Mon Apr 20 11:53:32 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 20 Apr 2026 11:53:32 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1285720.1566900 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wEnBr-0007C6-BE; Mon, 20 Apr 2026 11:53:23 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1285720.1566900; Mon, 20 Apr 2026 11: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 1wEnBr-0007Bz-7w; Mon, 20 Apr 2026 11:53:23 +0000
Received: by outflank-mailman (input) for mailman id 1285720;
 Mon, 20 Apr 2026 11:53:22 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92) id 1wEnBq-0007Br-Ps
 for xen-devel@lists.xenproject.org; Mon, 20 Apr 2026 11:53:22 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wEnBp-00D9Ea-N3
 for xen-devel@lists.xenproject.org; Mon, 20 Apr 2026 13:53:21 +0200
Received: from [10.42.69.10] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <oleksii.kurochko@gmail.com>)
 id 69e613a8-5cb7-0a2a0a5109dd-0a2a450ab26a-8
 for <xen-devel@lists.xenproject.org>; Mon, 20 Apr 2026 13:53:21 +0200
Received: from [209.85.167.45] (helo=mail-lf1-f45.google.com)
 by tlsNG-4011c0.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.1)
 (envelope-from <oleksii.kurochko@gmail.com>)
 id 69e613b1-56b3-0a2a450a0019-d155a72da9b0-3
 for <xen-devel@lists.xenproject.org>; Mon, 20 Apr 2026 13:53:21 +0200
Received: by mail-lf1-f45.google.com with SMTP id
 2adb3069b0e04-5a413f83226so3500098e87.1
 for <xen-devel@lists.xenproject.org>; Mon, 20 Apr 2026 04:53:21 -0700 (PDT)
Received: from [192.168.1.6] (user-109-243-69-121.play-internet.pl.
 [109.243.69.121]) by smtp.gmail.com with ESMTPSA id
 2adb3069b0e04-5a4187e1131sm2966774e87.42.2026.04.20.04.53.19
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Mon, 20 Apr 2026 04:53:20 -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=20251104 header.d=gmail.com header.i="@gmail.com" header.h="Content-Transfer-Encoding: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=20251104; t=1776686001; x=1777290801; darn=lists.xenproject.org;
        h=content-transfer-encoding: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;
        bh=F6H3LGVDr8D8S8rCAGyuzjagZqrXLNiPcD99pdHmT1M=;
        b=LFsYp6bCrZjmVuGal3FVIrpfv59fgFAg9TUOz9N3W+GCGJkaQj0oqRztoLGA38VYs9
         ugkaFS3QRLmhjuOkXgJfRA8l2NkMVCYuCNaqXTTebzjW5TMPk4/FtPc0BIlPZddZAISH
         ywAmcEVcGVyY7AQRubtctwPdpeUwZxne0SGvCShgWS8F2mJ3pOL9YXcF9ImIZSOc29zl
         1SwYyDfku4eiFjNpNWjAdK/f1pxKK/Y/Nfdbn9Q1ryCZ92Fifx0rk1eYX7pEgSRRU341
         vgs5CgktuFGV6SrLqN0jqQqxACv75AHT3+OpRlrXtkYc/XWI53ce7upLNEkLcAVucIWf
         e4Dw==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20251104; t=1776686001; x=1777290801;
        h=content-transfer-encoding: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;
        bh=F6H3LGVDr8D8S8rCAGyuzjagZqrXLNiPcD99pdHmT1M=;
        b=HzbyeeojogUwC5Lu5zjJ1ZjEpvMh8GYgaO7LErfSW47yiSVD4O+fyd0Pb8DXT/8M9M
         YnDs415whKoZRqAQGntSSA4Cn58z+sC9mLa61VzB1ksozD/sMiJDpMGsldBvj55psFtP
         JfncfT6UVAe+Uh9Mc5qP50oXbhVFOZOHbjd2NiXFNigftdRKPiecf2OQ5+z6cPvfOeEj
         H6LzonWJ6QseTJIwwLxo8AgwmIRbDo6tfMfQ7W8xyHgp70Nu+HyZnLOQCrY1cDfT7gW0
         QJ1UJIfLP+qbfzvS2j8AASMAycIeWND3nJBz3rpuzsCEq568eSxDJe0m50nFh20h/Iv9
         rvDQ==
X-Forwarded-Encrypted: i=1; AFNElJ94lNX2t+/AjV7R778CxSWQRA7MlyQe3NpPLJWsoc6PQGwAu1W1+bz+fXJ6KQnZ0Pyu9LB2piWOqm8=@lists.xenproject.org
X-Gm-Message-State: AOJu0YwYTJuw//0GOk0BvfB9Qw35ZvpDAcWQOxMEcIIH6WP4nKq/sOcG
	Hd2LuhQTrebRv/Xy+PP75LrOLIRJm7oa8DNgnJ8IPI0V12vdRcEafsd7
X-Gm-Gg: AeBDiethsPFX6/mD2Oj7VhUGgG01Xd6tOvkZwX7ytj5QSo5tBSBNdc7xIlUTFgmgjaD
	8y7xuAnANpEL3FU6ldXEgteVeTPchFwb8RjfqY5vkSUDQ1mmqf5vuQYNl2OGH99CQzR0lVr8Wk5
	BNxdfI7/H3iGcx/qXAaUZ/HMxbAkFfP0fR6TDOjGW2XGv9WsqmN8DnqsepVUdNyLfX/q00vcWq1
	y31BEIkImuL4uz8PaO/0gEMuojJ/Gn1yxNVhjhyoxiH9BsHGC/T+1maw/98m/BJxLknzf/uIbNy
	Wst3Q4VHpV9+bu7ykWYSZHb9TdYAAHh1y6CXoubBYAcD2o909upEaR3XmvXqqavGJoiZFvavTKr
	5xHAvPVlBETO0WtB2YVyhJ7wyvVMMG3Y+hNcOrIb2oecpj0KTtY7fCxrySdz3GNOJUECyMsqdTa
	16SuE/4ZscJ1mscIBGqM7I9dzE4EoVyzNR757oKmzpl+U1rhu5328ASya0ON6/PzpHG1QVMrDfv
	WkHJkV85Bvj5w==
X-Received: by 2002:a05:6512:1113:b0:5a3:ff:cf83 with SMTP id 2adb3069b0e04-5a41717478fmr3367428e87.7.1776686000498;
        Mon, 20 Apr 2026 04:53:20 -0700 (PDT)
Message-ID: <d08317b4-b5a7-4d14-8e63-a2b0111c65c3@gmail.com>
Date: Mon, 20 Apr 2026 13:53:19 +0200
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH v1 18/27] xen/riscv: add vaplic access check
To: Jan Beulich <jbeulich@suse.com>
Cc: Romain Caritey <Romain.Caritey@microchip.com>,
 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.pau@citrix.com>,
 Stefano Stabellini <sstabellini@kernel.org>, xen-devel@lists.xenproject.org
References: <cover.1773157782.git.oleksii.kurochko@gmail.com>
 <0fc9adf790d4f981e8117bd9759c7e64bb11e439.1773157782.git.oleksii.kurochko@gmail.com>
 <0519fb8a-48e3-4f36-8d6c-a966080ffb55@suse.com>
 <f0503bd6-3ea3-42da-9211-02836addc176@gmail.com>
 <e70e141b-fe40-41f2-9101-e65758e7f7b6@suse.com>
Content-Language: en-US
From: Oleksii Kurochko <oleksii.kurochko@gmail.com>
In-Reply-To: <e70e141b-fe40-41f2-9101-e65758e7f7b6@suse.com>
Content-Type: text/plain; charset=UTF-8; format=flowed
Content-Transfer-Encoding: 7bit
X-purgate-ID: tlsNG-4011c0/1776686001-CE5748B7-93F3E1E2/10/73395122804
X-purgate-type: spam
X-purgate-size: 3099



On 4/16/26 3:01 PM, Jan Beulich wrote:
> On 14.04.2026 13:45, Oleksii Kurochko wrote:
>> On 4/2/26 3:10 PM, Jan Beulich wrote:
>>> On 10.03.2026 18:08, Oleksii Kurochko wrote:
>>>> --- a/xen/arch/riscv/aplic.c
>>>> +++ b/xen/arch/riscv/aplic.c
>>>> @@ -38,6 +38,7 @@ static struct aplic_priv aplic = {
>>>>    
>>>>    static struct intc_info __ro_after_init aplic_info = {
>>>>        .hw_version = INTC_APLIC,
>>>> +    .private = &aplic,
>>>
>>> Isn't this the host instance again? How can you ...
>>>
>>>> --- a/xen/arch/riscv/vaplic.c
>>>> +++ b/xen/arch/riscv/vaplic.c
>>>> @@ -127,6 +127,20 @@ int vaplic_map_device_irqs_to_domain(struct domain *d,
>>>>        return 0;
>>>>    }
>>>>    
>>>> +static int cf_check vaplic_is_access(const struct vcpu *vcpu,
>>>> +                                     const unsigned long addr)
>>>> +{
>>>> +    const struct vaplic *vaplic = to_vaplic(vcpu->domain->arch.vintc);
>>>> +    const struct aplic_priv *priv = vaplic->base.info->private;
>>>> +    const paddr_t paddr_end = priv->paddr_start + priv->size;
>>>> +
>>>> +    /* check if it is an APLIC access */
>>>> +    if ( priv->paddr_start <= addr && addr < paddr_end )
>>>
>>> ... use that here? Or asked differently, again: Where's the virtualization,
>>> i.e. the abstraction away from host properties?
>>
>> With the current use case it was easier to choose such approach then
>> provide the full abstraction.
>>
>>> Furthermore, is it really sufficient to check just the starting address of
>>> an access? Shouldn't the last byte accessed also fall into the range in
>>> question?
>>
>> I think that it is okay, my understanding is that *paddr_end technically
>> is another range.
> 
> Of course it is. But a multi-byte access crossing the paddr_end boundary
> isn't purely an APLIC one. You can reject such for simplicity, but I'm
> unconvinced that you can claim you will be able to correctly handle it
> without proper merging.

Lets say guest has the following description of vAPLIC in its DTB:
  aplic@d000000 {
    phandle = <0x06>;
    riscv,num-sources = <0x60>;
    reg = <0x00 0xd000000 0x00 0x8000>;
    ...
  }
What means vAPLIC's MMIO range is [0xd000000, 0xD007FFF]. If some is 
trying to access 0xd008000 it is not an MMIO address which belongs to 
vAPLIC so vaplic_is_access() should return 0.

IIUC, you concern is that if someone will try to access 0xD007FFF which 
from this function point of view is legal. I think it is okay to return 
here 1 what tells that this address is from our vAPLIC range as it will 
be rejected that on vaplic_emulate_{load,store}() side as addr (more 
accurate offset got from addr) should be properly aligned:
     const unsigned int offset = addr & APLIC_REG_OFFSET_MASK;
     ...
     if ( offset & 3 )
     {
         gdprintk(XENLOG_WARNING, "Misaligned APLIC access at offset %#x\n",
                  offset);
         return -EINVAL;
     }

Is it okay? Actually I think we could add ( addr & 3 ) check in 
vaplic_is_access() function too...

~ Oleksii


From xen-devel-bounces@lists.xenproject.org Mon Apr 20 12:04:02 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 20 Apr 2026 12:04:02 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1285734.1566908 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wEnM4-0000ZV-DA; Mon, 20 Apr 2026 12:03:56 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1285734.1566908; Mon, 20 Apr 2026 12:03: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 1wEnM4-0000ZO-9r; Mon, 20 Apr 2026 12:03:56 +0000
Received: by outflank-mailman (input) for mailman id 1285734;
 Mon, 20 Apr 2026 12:03:55 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <jbeulich@suse.com>) id 1wEnM3-0000ZI-Ev
 for xen-devel@lists.xenproject.org; Mon, 20 Apr 2026 12:03:55 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wEnM2-008GoQ-7I
 for xen-devel@lists.xenproject.org; Mon, 20 Apr 2026 14:03:54 +0200
Received: from [10.42.69.1] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <jbeulich@suse.com>)
 id 69e61623-2eae-0a2a0a5409dd-0a2a4501d6f4-18
 for <xen-devel@lists.xenproject.org>; Mon, 20 Apr 2026 14:03:54 +0200
Received: from [209.85.221.45] (helo=mail-wr1-f45.google.com)
 by tlsNG-d62444.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.1)
 (envelope-from <jbeulich@suse.com>)
 id 69e61629-c1f2-0a2a45010019-d155dd2dad8e-3
 for <xen-devel@lists.xenproject.org>; Mon, 20 Apr 2026 14:03:53 +0200
Received: by mail-wr1-f45.google.com with SMTP id
 ffacd0b85a97d-43cfd832155so2132498f8f.1
 for <xen-devel@lists.xenproject.org>; Mon, 20 Apr 2026 05:03:53 -0700 (PDT)
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-43fe4cc0d51sm28244813f8f.10.2026.04.20.05.03.52
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Mon, 20 Apr 2026 05:03:52 -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=google header.d=suse.com header.i="@suse.com" header.h="Content-Transfer-Encoding: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=1776686633; x=1777291433; darn=lists.xenproject.org;
        h=content-transfer-encoding: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;
        bh=FHQyH0ChRMEy7TyYaNhEhuy9y8erwRbfu73qi33Badc=;
        b=g9vIvkcSo+7OOdrNhFnVV3EpjWKKL+giycoUdkRmsllTYJ45HsNzt0GBVNDl70MYhX
         wdkKUITe6v3VoPvgeHtDBKp7lv7GuctcI6BszrsGebtH+WxQBlDZ3+QheI0HbkInkuD1
         YIwqfidh+aKXe5r7XTrNRxr/a5iFQBHuwJ9u0FvuDYAGH5QFMIY8Qnp3BxmNzldR6vyQ
         ru7RrijphACQOw0kZwY2O+ve7r/vpGFrEjVZA4kR41xA3UsShO6isVlmKblQuNJINY/P
         bJ7lh0i2gYIspXAuBt6b1/Un3AWUSF4s8BB1nY0wKjFVvmMFrjoGWaiATIxfXqS7Ayb5
         SHSg==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20251104; t=1776686633; x=1777291433;
        h=content-transfer-encoding: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;
        bh=FHQyH0ChRMEy7TyYaNhEhuy9y8erwRbfu73qi33Badc=;
        b=N/fhNLLc1Ezo6dTn0Cya1aHEPOmLrc/3qlHV5bHCldDOnfeUtIEedr1VkWdkln0Ip0
         C/9SyGhd724B5EC3zKFd3GZATUiKyfMzt8vjoh4OrdxB5dak8cQ88jahznSEIGIGa023
         io6jiQxKVvXk/P5fOwLyHxwHhEPQ8QFfm6qCtToTcCR/3Iqfd75lJrruV+c4ubMQqp+h
         hSlEWqnSwRpFCoHTH+DYowJkCCpbXdgObqCuaFT4iTZH1uHHHn2h4No1XiEFyGFdUPcl
         B9/gs+lEYB+1s8HqM+althwgIKBtPT2E4aaCNP6wLJ6x67PJiOa+3+JQvhqxXDMH8Xa8
         taEg==
X-Forwarded-Encrypted: i=1; AFNElJ+CyRd9+efOtYIVSmthCz04Vi2gw8lDhpvE7ZW9ro51K1iaWYkVgkCNayV7V8XRWV2aOWoVYd2jf7M=@lists.xenproject.org
X-Gm-Message-State: AOJu0YyvpXdcUp3nt7mb0DbipeRuTPD8O2sPQJVii/8S8oGgjcBoND7O
	ADk2tpzbWSUaoDxqO+L09GhEF1VSrkf9aq3Uu+3LKKJFQ4gaH68M9O6wohWKazCACg==
X-Gm-Gg: AeBDietWUXQXRg7bOIqp5KdqW9YO1/IZZz3Z7oqwE6dOI7kMgwpppQQskrCDdnTPNnA
	9oew6+rNCZIlZSvwtqOBYThkJRajZU/I/OlTFGbssFNFH4Da7dVaGTze5WQzge8uyFD3rHvQ3zb
	ofH6RpjksXJ3xm+S86J7GXbCfaekzluGhYJRh0VHWXgF5hp06Wjw6B/8agLHW7aJ89SQ5QZzmxl
	p2WZKjKR+MM7Fz930cuQkN/O+IYHR5enuE3OtGnfpYuZyYg4h6VtSgWxKOAEn1nlGjwShosQuD8
	YdWE0A+Wo6QvSETvxhLl/+kT+bQ0wMTN3VDHpIf8fDqnepPF+ckTGw3j9+TnQDWLMmGyZxLUolR
	X+nysIvo0AdoEw/NLoqOIYJbkrw6Xd7pEYXd9mFiW3QXqe5JqSL+2MZ2mQ09kC1W2OwbzcYiDBk
	3JQ5dApmCVeWNBKrs9MMPB5J386zfDjofOBx9omH0UzWjOsmp2pmBPZDhdRYHxt4gFHqy965lqJ
	AGygFfxSDlaq7fK1+/kOn1LcQ==
X-Received: by 2002:a05:6000:2389:b0:43d:7ea8:62e6 with SMTP id ffacd0b85a97d-43fe3e12691mr22200467f8f.46.1776686633264;
        Mon, 20 Apr 2026 05:03:53 -0700 (PDT)
Message-ID: <a19a535d-dc48-4aa4-97e4-429491bc3feb@suse.com>
Date: Mon, 20 Apr 2026 14:03:54 +0200
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH v1 18/27] xen/riscv: add vaplic access check
To: Oleksii Kurochko <oleksii.kurochko@gmail.com>
Cc: Romain Caritey <Romain.Caritey@microchip.com>,
 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.pau@citrix.com>,
 Stefano Stabellini <sstabellini@kernel.org>, xen-devel@lists.xenproject.org
References: <cover.1773157782.git.oleksii.kurochko@gmail.com>
 <0fc9adf790d4f981e8117bd9759c7e64bb11e439.1773157782.git.oleksii.kurochko@gmail.com>
 <0519fb8a-48e3-4f36-8d6c-a966080ffb55@suse.com>
 <f0503bd6-3ea3-42da-9211-02836addc176@gmail.com>
 <e70e141b-fe40-41f2-9101-e65758e7f7b6@suse.com>
 <d08317b4-b5a7-4d14-8e63-a2b0111c65c3@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: <d08317b4-b5a7-4d14-8e63-a2b0111c65c3@gmail.com>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 7bit
X-purgate-ID: tlsNG-d62444/1776686633-B7A79FF4-04704912/0/0
X-purgate-type: clean
X-purgate-size: 3328

On 20.04.2026 13:53, Oleksii Kurochko wrote:
> 
> 
> On 4/16/26 3:01 PM, Jan Beulich wrote:
>> On 14.04.2026 13:45, Oleksii Kurochko wrote:
>>> On 4/2/26 3:10 PM, Jan Beulich wrote:
>>>> On 10.03.2026 18:08, Oleksii Kurochko wrote:
>>>>> --- a/xen/arch/riscv/aplic.c
>>>>> +++ b/xen/arch/riscv/aplic.c
>>>>> @@ -38,6 +38,7 @@ static struct aplic_priv aplic = {
>>>>>    
>>>>>    static struct intc_info __ro_after_init aplic_info = {
>>>>>        .hw_version = INTC_APLIC,
>>>>> +    .private = &aplic,
>>>>
>>>> Isn't this the host instance again? How can you ...
>>>>
>>>>> --- a/xen/arch/riscv/vaplic.c
>>>>> +++ b/xen/arch/riscv/vaplic.c
>>>>> @@ -127,6 +127,20 @@ int vaplic_map_device_irqs_to_domain(struct domain *d,
>>>>>        return 0;
>>>>>    }
>>>>>    
>>>>> +static int cf_check vaplic_is_access(const struct vcpu *vcpu,
>>>>> +                                     const unsigned long addr)
>>>>> +{
>>>>> +    const struct vaplic *vaplic = to_vaplic(vcpu->domain->arch.vintc);
>>>>> +    const struct aplic_priv *priv = vaplic->base.info->private;
>>>>> +    const paddr_t paddr_end = priv->paddr_start + priv->size;
>>>>> +
>>>>> +    /* check if it is an APLIC access */
>>>>> +    if ( priv->paddr_start <= addr && addr < paddr_end )
>>>>
>>>> ... use that here? Or asked differently, again: Where's the virtualization,
>>>> i.e. the abstraction away from host properties?
>>>
>>> With the current use case it was easier to choose such approach then
>>> provide the full abstraction.
>>>
>>>> Furthermore, is it really sufficient to check just the starting address of
>>>> an access? Shouldn't the last byte accessed also fall into the range in
>>>> question?
>>>
>>> I think that it is okay, my understanding is that *paddr_end technically
>>> is another range.
>>
>> Of course it is. But a multi-byte access crossing the paddr_end boundary
>> isn't purely an APLIC one. You can reject such for simplicity, but I'm
>> unconvinced that you can claim you will be able to correctly handle it
>> without proper merging.
> 
> Lets say guest has the following description of vAPLIC in its DTB:
>   aplic@d000000 {
>     phandle = <0x06>;
>     riscv,num-sources = <0x60>;
>     reg = <0x00 0xd000000 0x00 0x8000>;
>     ...
>   }
> What means vAPLIC's MMIO range is [0xd000000, 0xD007FFF]. If some is 
> trying to access 0xd008000 it is not an MMIO address which belongs to 
> vAPLIC so vaplic_is_access() should return 0.
> 
> IIUC, you concern is that if someone will try to access 0xD007FFF which 
> from this function point of view is legal. I think it is okay to return 
> here 1 what tells that this address is from our vAPLIC range as it will 
> be rejected that on vaplic_emulate_{load,store}() side as addr (more 
> accurate offset got from addr) should be properly aligned:
>      const unsigned int offset = addr & APLIC_REG_OFFSET_MASK;
>      ...
>      if ( offset & 3 )
>      {
>          gdprintk(XENLOG_WARNING, "Misaligned APLIC access at offset %#x\n",
>                   offset);
>          return -EINVAL;
>      }
> 
> Is it okay? Actually I think we could add ( addr & 3 ) check in 
> vaplic_is_access() function too...

Perhaps best. The load/store functions could then simply assert that property.

Jan


From xen-devel-bounces@lists.xenproject.org Mon Apr 20 12:19:46 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 20 Apr 2026 12:19:46 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1285765.1567006 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wEnbH-0003Ac-CQ; Mon, 20 Apr 2026 12:19:39 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1285765.1567006; Mon, 20 Apr 2026 12:19: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 1wEnbH-0003AV-94; Mon, 20 Apr 2026 12:19:39 +0000
Received: by outflank-mailman (input) for mailman id 1285765;
 Mon, 20 Apr 2026 12:19:37 +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 1wEnbF-0003AP-Ag
 for xen-devel@lists.xenproject.org; Mon, 20 Apr 2026 12:19:37 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wEnbE-008Kpx-Ng
 for xen-devel@lists.xenproject.org; Mon, 20 Apr 2026 14:19:36 +0200
Received: from [10.42.69.7] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <jgross@suse.com>)
 id 69e619cb-e002-0a2a0a5209dd-0a2a45078092-36
 for <xen-devel@lists.xenproject.org>; Mon, 20 Apr 2026 14:19:36 +0200
Received: from [209.85.208.47] (helo=mail-ed1-f47.google.com)
 by tlsNG-ef75cf.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.1)
 (envelope-from <jgross@suse.com>)
 id 69e619d8-229c-0a2a45070019-d155d02fe17e-3
 for <xen-devel@lists.xenproject.org>; Mon, 20 Apr 2026 14:19:36 +0200
Received: by mail-ed1-f47.google.com with SMTP id
 4fb4d7f45d1cf-6746d0b2b4aso2335510a12.3
 for <xen-devel@lists.xenproject.org>; Mon, 20 Apr 2026 05:19:36 -0700 (PDT)
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
 4fb4d7f45d1cf-672c4d5babcsm2026949a12.23.2026.04.20.05.19.35
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Mon, 20 Apr 2026 05:19:35 -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=google header.d=suse.com header.i="@suse.com" header.h="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=1776687576; x=1777292376; darn=lists.xenproject.org;
        h=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;
        bh=MHRIw34ZrmzU/Sj1GJ2quPOQCirKAg0tT1ITdGCo6pY=;
        b=C9RKSFcw+9VKP62MGkvE3MxJOarxo/DptP8CiC5gOPV+WhVpdfSJoKffUx/66qdvlT
         LKagjMjMo4PdeJjsEWNqPHZbR/wyxxrgN91yIkm6HnVKmSu/rPQVVgI0a4moE5e5E4PB
         SibPF9KwGDgk5IGHa2T+1cFYlq9fuulm1UUQ+152fTbY0h0Jy02SRfRVpX26KYidOLeK
         vDsLpeGh8/fIBBz5/L65u9J5txTg+ozQ1qpZwXA/CA2gdK5DLYnF6h+lpn0gR41hLf5X
         SFELh7tWLpAR4D/tLk00gFH7nbziKDsu75ha5xUfG6OCPeZbJsdMtF8QLMmhajCloAOn
         jo+Q==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20251104; t=1776687576; x=1777292376;
        h=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;
        bh=MHRIw34ZrmzU/Sj1GJ2quPOQCirKAg0tT1ITdGCo6pY=;
        b=MBXlBBMCOGbR7jOJO1qA91HWFCL/6PwXz1Tw7F6ln/6nuTnGzwkiMKYINZBraH7se5
         Brg/AW1vxsYSIxvCGRhFlmcqOoRJsw4GyiB/Z55hzt8ACWcCdHMwNSKp2EJayeKJPSE5
         F5luOzeoLLpusWZENtjDvfTC5N28lvZlk+vpp+H9d27qUy0mGsFxP/s1wvk+/aUquKLh
         sqSuS25KTuYnWHoFUFc4CFmcH40vkGD3ZdWQ3Kwsik7gIF1YUkm+8AV30Laka3G4BMMN
         oh6TKTdDv+s2UfAXlmWOifkC5Ux/DAEHxUiqGd9kDb4htz988sJoOtfuYNLjGqIWy8za
         BKiw==
X-Gm-Message-State: AOJu0Yxiu6Z3/l2hhRUWmZzDKsbg1EoUIDYAvOTlWG406iVOocc9RE6q
	aOQpIbGRyKLtnC4tVbWcu7V2lV0AQCu+fZoCyBNzP07Yfe2EmN1EBIugTvIg6rS2u1I=
X-Gm-Gg: AeBDiesdgwV2efo9vU1FY73UMV3DaGveLS+7h/+/3D6WsXhnNr2vVnHUsi3xvix3cyS
	6uAY9aQFMe7yxjuIMQ1xbaLXhmbBlb6pxWYTC7PD6TNGjRv0RzwEhz3E3+Y71Y2JSxpEK748qqA
	HDkQTE0N281S9hTH5IpYYq2Q2Tl13Bi0O0Vne/dYTT1QEM15+pZouOLuU90w0snh/FVpr0uLzI2
	qHPZ5ISYJYA1SrTcXHmNDYDkPyLFpc+bm25ieT9VmSGOZU95SR4HenrbrYc/iiaJZVUob8nMeXX
	bEVEga9LS2GOvvNWJD4qKRJvTJQ2uAO3XmC+Qf07BN+OPTzPpKL7ycw+G1wQGVYUCKjelwCx2G8
	EaDiYNtLo2MnUb6DWrYzKHmUrnJT1nVv3uWfxgYoda6OZ1K2J3Y/jJEuU3PK67bcc70PmqeWspD
	OOv/HM6I7Ymi4ZpTfzjoL8SFcY8okWnllV2cxT+5k5UADD3ZEtPcCx4Rza5qF2SoSKG3e4B5Tte
	DhZBBoZHEOm46n/ZEluY17t4tVeBLr1uYG2AnBpG2fOUpm04NCh96xzTdIV5+HC
X-Received: by 2002:a05:6402:24a2:b0:670:8d90:e861 with SMTP id 4fb4d7f45d1cf-672bfd82177mr5622166a12.6.1776687575858;
        Mon, 20 Apr 2026 05:19:35 -0700 (PDT)
Message-ID: <f6cf1d46-9d2e-4b52-a6b9-fb45d01b874f@suse.com>
Date: Mon, 20 Apr 2026 14:19:34 +0200
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH RFC] xen/swiotlb: avoid arch_sync_dma_* on per-device DMA
 memory
To: "Peng Fan (OSS)" <peng.fan@oss.nxp.com>,
 Stefano Stabellini <sstabellini@kernel.org>,
 Oleksandr Tyshchenko <oleksandr_tyshchenko@epam.com>
Cc: xen-devel@lists.xenproject.org, iommu@lists.linux.dev,
 linux-kernel@vger.kernel.org, Peng Fan <peng.fan@nxp.com>
References: <20260415-xen-swiotlb-v1-1-de24eda3c0fd@nxp.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: <20260415-xen-swiotlb-v1-1-de24eda3c0fd@nxp.com>
Content-Type: multipart/signed; micalg=pgp-sha256;
 protocol="application/pgp-signature";
 boundary="------------034tgJUdS8obTrCAMQuKOO5H"
X-purgate-ID: tlsNG-ef75cf/1776687576-1585EC48-5F5CF2C9/0/0
X-purgate-type: clean
X-purgate-size: 8412

This is an OpenPGP/MIME signed message (RFC 4880 and 3156)
--------------034tgJUdS8obTrCAMQuKOO5H
Content-Type: multipart/mixed; boundary="------------xAm466dmUFDzKs0FzPVhHxO0";
 protected-headers="v1"
From: =?UTF-8?B?SsO8cmdlbiBHcm/Dnw==?= <jgross@suse.com>
To: "Peng Fan (OSS)" <peng.fan@oss.nxp.com>,
 Stefano Stabellini <sstabellini@kernel.org>,
 Oleksandr Tyshchenko <oleksandr_tyshchenko@epam.com>
Cc: xen-devel@lists.xenproject.org, iommu@lists.linux.dev,
 linux-kernel@vger.kernel.org, Peng Fan <peng.fan@nxp.com>
Message-ID: <f6cf1d46-9d2e-4b52-a6b9-fb45d01b874f@suse.com>
Subject: Re: [PATCH RFC] xen/swiotlb: avoid arch_sync_dma_* on per-device DMA
 memory
References: <20260415-xen-swiotlb-v1-1-de24eda3c0fd@nxp.com>
In-Reply-To: <20260415-xen-swiotlb-v1-1-de24eda3c0fd@nxp.com>

--------------xAm466dmUFDzKs0FzPVhHxO0
Content-Type: multipart/mixed; boundary="------------y5RAGzWBaBlt2a08ULXbC0V9"

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

T24gMTUuMDQuMjYgMTc6MDgsIFBlbmcgRmFuIChPU1MpIHdyb3RlOg0KPiBGcm9tOiBQZW5n
IEZhbiA8cGVuZy5mYW5AbnhwLmNvbT4NCj4gDQo+IE9uIEFSTTY0LCBhcmNoX3N5bmNfZG1h
X2Zvcl97Y3B1LGRldmljZX0oKSBhc3N1bWVzIHRoYXQgdGhlDQo+IHBoeXNpY2FsIGFkZHJl
c3MgcGFzc2VkIGluIHJlZmVycyB0byBub3JtYWwgUkFNIHRoYXQgaXMgcGFydCBvZiB0aGUN
Cj4ga2VybmVsIGxpbmVhcihkaXJlY3QpIG1hcHBpbmcsIGFzIGl0IHVuY29uZGl0aW9uYWxs
eSBkZXJpdmVzIGEgQ1BVDQo+IHZpcnR1YWwgYWRkcmVzcyB2aWEgcGh5c190b192aXJ0KCku
DQo+IA0KPiBXaXRoIFhlbiBzd2lvdGxiLCBkZXZpY2VzIG1heSB1c2UgcGVyLWRldmljZSBj
b2hlcmVudCBETUEgbWVtb3J5LA0KPiBzdWNoIGFzIHJlc2VydmVkLW1lbW9yeSByZWdpb25z
IGRlc2NyaWJlZCBieSAnc2hhcmVkLWRtYS1wb29sJywNCj4gd2hpY2ggYXJlIGFzc2lnbmVk
IHRvIGRldi0+ZG1hX21lbS4gVGhlc2UgcmVnaW9ucyBtYXkgYmUgbWFya2VkDQo+IG5vLW1h
cCBpbiBEVCBhbmQgdGhlcmVmb3JlIGFyZSBub3QgcGFydCBvZiB0aGUga2VybmVsIGxpbmVh
ciBtYXAuDQo+IEluIHN1Y2ggY2FzZXMsIHBmbl92YWxpZCgpIHN0aWxsIHJldHVybnMgdHJ1
ZSwgYnV0IHBoeXNfdG9fdmlydCgpDQo+IGlzIG5vdCB2YWxpZCBhbmQgY2FjaGUgbWFpbnRl
bmFuY2UgdmlhIGFyY2hfc3luY19kbWFfKiB3aWxsIGZhdWx0Lg0KPiANCj4gUHJldmVudCB0
aGlzIGJ5IGV4Y2x1ZGluZyBkZXZpY2VzIHdpdGggYSBwcml2YXRlIERNQSBtZW1vcnkgcG9v
bA0KPiAoZGV2LT5kbWFfbWVtKSBmcm9tIHRoZSBhcmNoX3N5bmNfZG1hXyogZmFzdCBwYXRo
LCBhbmQgYWx3YXlzDQo+IGZhbGwgYmFjayB0byB4ZW5fZG1hX3N5bmNfKiBmb3IgdGhvc2Ug
ZGV2aWNlcyB0byBhdm9pZCBpbnZhbGlkDQo+IHBoeXNfdG9fdmlydCgpIGNvbnZlcnNpb25z
IGZvciBuby1tYXAgRE1BIG1lbW9yeSB3aGlsZSBwcmVzZXJ2aW5nIHRoZQ0KPiBleGlzdGlu
ZyBmYXN0IHBhdGggZm9yIG5vcm1hbCwgbGluZWFyLW1hcHBlZCBSQU0uDQo+IA0KPiBTaWdu
ZWQtb2ZmLWJ5OiBQZW5nIEZhbiA8cGVuZy5mYW5AbnhwLmNvbT4NCj4gLS0tDQo+ICAgZHJp
dmVycy94ZW4vc3dpb3RsYi14ZW4uYyB8IDE3ICsrKysrKysrKysrKystLS0tDQo+ICAgMSBm
aWxlIGNoYW5nZWQsIDEzIGluc2VydGlvbnMoKyksIDQgZGVsZXRpb25zKC0pDQo+IA0KPiBk
aWZmIC0tZ2l0IGEvZHJpdmVycy94ZW4vc3dpb3RsYi14ZW4uYyBiL2RyaXZlcnMveGVuL3N3
aW90bGIteGVuLmMNCj4gaW5kZXggMmNiZjJiNTg4ZjViMjBjZmJmOWU4M2E4MzM5ZGMyMjA5
MmM5NTU5YS4uYjE0NDVkZjk5ZDlhOGYxZDE4YTgzYjhjNDEzYmFkYTZlNTU3OTIwOSAxMDA2
NDQNCj4gLS0tIGEvZHJpdmVycy94ZW4vc3dpb3RsYi14ZW4uYw0KPiArKysgYi9kcml2ZXJz
L3hlbi9zd2lvdGxiLXhlbi5jDQo+IEBAIC0xOTUsNiArMTk1LDExIEBAIHhlbl9zd2lvdGxi
X2ZyZWVfY29oZXJlbnQoc3RydWN0IGRldmljZSAqZGV2LCBzaXplX3Qgc2l6ZSwgdm9pZCAq
dmFkZHIsDQo+ICAgfQ0KPiAgICNlbmRpZiAvKiBDT05GSUdfWDg2ICovDQo+ICAgDQo+ICtz
dGF0aWMgaW5saW5lIGJvb2wgZGV2X2hhc19wcml2YXRlX2RtYV9wb29sKHN0cnVjdCBkZXZp
Y2UgKmRldikNCj4gK3sNCj4gKwlyZXR1cm4gZGV2ICYmIGRldi0+ZG1hX21lbTsNCj4gK30N
Cj4gKw0KDQpJIGRvbid0IHRoaW5rIHRoaXMgd2lsbCBjb21waWxlIG9uIHg4Ni4NCg0KDQpK
dWVyZ2VuDQo=
--------------y5RAGzWBaBlt2a08ULXbC0V9
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-----

--------------y5RAGzWBaBlt2a08ULXbC0V9--

--------------xAm466dmUFDzKs0FzPVhHxO0--

--------------034tgJUdS8obTrCAMQuKOO5H
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/Ey8FAmnmGdYFAwAAAAAACgkQsN6d1ii/Ey/8
Agf/YSSbznJg1CLAGP+RXd36++PsFDci/UUxCHrYwPyRzg9pDXHXnJ2KRuxP9wsrQdywHFkHNY7j
DU7Z6yVyIfrJHr6jnWVHi0IgJ4GReVR7BsRVoRKjFq+CkF7kEUceeuWMp0lFAaAtu5avoVAEXApN
l06NqUBNO1GWqeBt6NYDKUvW6dmEotsuXghWtc8u+YVcr1n8ZbmWRP+kyZyqLDu7pWHOdH1qYjro
SkU+aznBm1eVntwX2skc5Z9sjr71hdYYNRLyis9B1X+TIy57Z+R5TOG1dPH7oRUpq7tQ464KZHkC
92FKMGAK3twb5YcG0ENBxOlUAQKsOB7mt6hXrhi5Ww==
=UOv5
-----END PGP SIGNATURE-----

--------------034tgJUdS8obTrCAMQuKOO5H--


From xen-devel-bounces@lists.xenproject.org Mon Apr 20 12:28:27 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 20 Apr 2026 12:28:27 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1285774.1567014 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wEnji-0004nz-3Y; Mon, 20 Apr 2026 12:28:22 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1285774.1567014; Mon, 20 Apr 2026 12:28: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 1wEnji-0004ns-11; Mon, 20 Apr 2026 12:28:22 +0000
Received: by outflank-mailman (input) for mailman id 1285774;
 Mon, 20 Apr 2026 12:28:21 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <jbeulich@suse.com>) id 1wEnjh-0004nk-CL
 for xen-devel@lists.xenproject.org; Mon, 20 Apr 2026 12:28:21 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wEnjg-000Hjp-ER
 for xen-devel@lists.xenproject.org; Mon, 20 Apr 2026 14:28:20 +0200
Received: from [10.42.69.4] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <jbeulich@suse.com>)
 id 69e61be4-bab6-0a2a0a5309dd-0a2a45048326-4
 for <xen-devel@lists.xenproject.org>; Mon, 20 Apr 2026 14:28:20 +0200
Received: from [209.85.128.46] (helo=mail-wm1-f46.google.com)
 by tlsNG-ebf023.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.1)
 (envelope-from <jbeulich@suse.com>)
 id 69e61be4-1dec-0a2a45040019-d155802eb53a-3
 for <xen-devel@lists.xenproject.org>; Mon, 20 Apr 2026 14:28:20 +0200
Received: by mail-wm1-f46.google.com with SMTP id
 5b1f17b1804b1-488b150559bso22925645e9.1
 for <xen-devel@lists.xenproject.org>; Mon, 20 Apr 2026 05:28:20 -0700 (PDT)
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-488fb78becdsm130262635e9.5.2026.04.20.05.28.19
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Mon, 20 Apr 2026 05:28:19 -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=google header.d=suse.com header.i="@suse.com" header.h="Content-Transfer-Encoding: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=1776688100; x=1777292900; darn=lists.xenproject.org;
        h=content-transfer-encoding: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;
        bh=0d//JYtNktUN440nEjo/g7SWFPBqv6FcWXq+gb4h1zY=;
        b=NPNPIFQa7KnKHq6yekHmu3qHS1LJYtX9d7QwjO4uHA4D4vQjF1K1rIL1+tJVvMdXaV
         7hMqlF9C6YPWqa0VfoIE9sTFQj5aggFyDJJ3UQnMROcB8p+Idm9ftAgRi13tLzcaHUEY
         0It89YO8vgC1nBhHKH1OqG2nVzBn6Rsh6giGb8iPCdeS5JEeON3hrQcEh9C9WdzhCcHV
         EMKQo/stA3NmHk+t0DB8yAJSdeREZNOmxd+6bWmIfpPucI3b7wt4Ml4GbASgE5gVk6qM
         vJILVTmpeM8RdaNR9gxukA+VEo41BEe/qTC3wLqCiyeIu7mY7d072krJqbdgIIgPo0A7
         D1Ww==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20251104; t=1776688100; x=1777292900;
        h=content-transfer-encoding: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;
        bh=0d//JYtNktUN440nEjo/g7SWFPBqv6FcWXq+gb4h1zY=;
        b=A7m+WbE1Uk3AMOT6IJ/hcWsSgQiU5aGulCM6l9yKy8zuA6mDAi85Zwau2e15/eN3RE
         j+ZfW6ZDezF//VsYyJgLRqe5P5SVZVCoDJyDt9phR2lJnp6tRoHPJDe+0jVWIZgDyi8A
         F1BxnOsuJVkmruLh7evOJHhNLm92/+drZIS7w172sFNo6eTi5XaDCrukYC5XqLo4AwQ+
         yeGdm40HvKT412cGnLw4LBmpze/t74021je8XPIw2HHZNkm2rDDjkF+w8Ivx+xiD11b4
         O1vcF48Hcf5wBvW5dCqRanOZduyS0qJBqDqn3SslL7eqg7pTjuv1N8mhGwGWChqmi20p
         hNCA==
X-Forwarded-Encrypted: i=1; AFNElJ/PmZM6YZncaeUV+U/MhSYm467ebkOMH6a6Z8u27qTKKqzcpPz2J50+Rn9DERB9wR2DzGO+BN+o+9k=@lists.xenproject.org
X-Gm-Message-State: AOJu0Yz+BpTfO5qUBgNvpTKjXcYhRNX/RoZGcCD5ww7f3HUix9TLRq4/
	ANTxfXIomFAR+RigZIaItLpzoQMg+/3ZBv7rrJN5Vw4pnvKTpCT5hS6ySI/1/33dQw==
X-Gm-Gg: AeBDietE6N/SIa4i7IQ2ryPesaMUSDQuXoRgyAuJL0SbKitlfgPMQZTOjV34KMM2amq
	PUqqyGT/tTnZ6jORFMr4EL6Ni+laYKxoX/jMI3Sr34CCXBzA46jnWh5rnkX2PYoqgcwLTWvC8j5
	48R4rVwVpHzrXXzqxDYICp71d2CQcyWzkGyYezipSUWIPwiz7gs8A4kdUHu0DGZ+SlMzJwMaI7H
	Oubu/f38YbpKr8l6e/7Ioea1tX7O2M7XNK43YMdr7L0SWGgzLS69T5KkHJ9R4Uf7onx5hblh+eY
	fA8Cd8+GOIgJMcE+00rj0jO9SMVEvJwyJ7qgO+FfZHrGkVl3HP1TrFfqY9sbBtwKhddJbq+2Ag/
	hOw713QSm7JrynxNCiGlHNLxpRSCu8QbtsVwxxmSl4a2ShjZzZEnBxbbewrHwBpOHUec3HWYume
	yBu3Rea8Pc3FS/Ip94ef+LEWgs9RbNmaAmQrKRHoVzdS5uJL8b8a9i0CQ4qi5QZW441F2H0ZIgW
	yQ4jKMs11pgNGHYzo2YR5e4Bg==
X-Received: by 2002:a05:600c:4c08:b0:489:1c1f:35f1 with SMTP id 5b1f17b1804b1-4891c1f3850mr30176225e9.4.1776688099722;
        Mon, 20 Apr 2026 05:28:19 -0700 (PDT)
Message-ID: <ef1e2846-2f75-4358-a6ed-a7d45e617fea@suse.com>
Date: Mon, 20 Apr 2026 14:28:20 +0200
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH v3] arinc653: don't assume Dom0 is the control domain
To: Stewart Hildebrand <stewart.hildebrand@amd.com>
Cc: Nathan Studer <nathan.studer@dornerworks.com>,
 Stewart Hildebrand <stewart@stew.dk>,
 "xen-devel@lists.xenproject.org" <xen-devel@lists.xenproject.org>,
 =?UTF-8?B?SsO8cmdlbiBHcm/Dnw==?= <jgross@suse.com>
References: <89d17a24-0a1f-4f3f-ac2f-f3701a8d78dd@suse.com>
 <4a4c011e-9666-4416-be1b-33d1dcad5afe@suse.com>
 <73e51afc-ae7c-4d08-9054-75dab660bf42@suse.com>
 <ca934061-f3e2-4511-bdad-465c4f2d0de1@suse.com>
 <fa04f9e1-bc9e-4b34-84f4-dc7ca8999eb3@amd.com>
 <4dfd48a9-37c1-4f28-87f3-19646a339b08@suse.com>
 <7ea3a5d8-f9ff-4296-9b3e-07b9ba184e6f@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: <7ea3a5d8-f9ff-4296-9b3e-07b9ba184e6f@amd.com>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 7bit
X-purgate-ID: tlsNG-ebf023/1776688100-2AB633FF-CE5717FF/0/0
X-purgate-type: clean
X-purgate-size: 253

On 07.04.2026 13:27, Stewart Hildebrand wrote:
> I think the patch is good as is, but I just want to give it a few more days to
> give Nate or others a chance to chime in. I'll follow up next week if there's no
> further discussion.

Ping.

Jan


From xen-devel-bounces@lists.xenproject.org Mon Apr 20 12:50:07 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 20 Apr 2026 12:50:07 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1285784.1567024 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wEo4b-0007hC-SL; Mon, 20 Apr 2026 12:49:57 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1285784.1567024; Mon, 20 Apr 2026 12: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 1wEo4b-0007h5-Ou; Mon, 20 Apr 2026 12:49:57 +0000
Received: by outflank-mailman (input) for mailman id 1285784;
 Mon, 20 Apr 2026 12:49:56 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <bounce-md_30504962.69e620f1.v1-884f9eb010b443899f2b5441430958da@bounce.vates.tech>)
 id 1wEo4a-0007gz-Fi
 for xen-devel@lists.xenproject.org; Mon, 20 Apr 2026 12:49:56 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wEo4Z-0004Q8-CA
 for xen-devel@lists.xenproject.org; Mon, 20 Apr 2026 14:49:55 +0200
Received: from [10.42.69.5] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1) (envelope-from
 <bounce-md_30504962.69e620f1.v1-884f9eb010b443899f2b5441430958da@bounce.vates.tech>)
 id 69e620ea-2eae-0a2a0a5409dd-0a2a4505ec4a-44
 for <xen-devel@lists.xenproject.org>; Mon, 20 Apr 2026 14:49:55 +0200
Received: from [198.2.137.11] (helo=mail137-11.atl71.mandrillapp.com)
 by tlsNG-c201ff.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.1)
 (envelope-from
 <bounce-md_30504962.69e620f1.v1-884f9eb010b443899f2b5441430958da@bounce.vates.tech>)
 id 69e620f1-aaa8-0a2a45050019-c602890b6efd-3
 for <xen-devel@lists.xenproject.org>; Mon, 20 Apr 2026 14:49:54 +0200
Received: from mta004-md-usw2.delv.a.intuit.com (localhost [127.0.0.1])
 by mail137-11.atl71.mandrillapp.com (Mailchimp) with ESMTP id
 4fzlgj0s5lzDRSmvw
 for <xen-devel@lists.xenproject.org>; Mon, 20 Apr 2026 12:49:53 +0000 (UTC)
Received: from [37.26.189.201] by mandrillapp.com id
 884f9eb010b443899f2b5441430958da; Mon, 20 Apr 2026 12:49: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=mte1 header.d=mandrillapp.com header.i="@mandrillapp.com" header.h="From:Subject:Message-Id:To:Cc:References:In-Reply-To:Feedback-ID:Date:MIME-Version:Content-Type:Content-Transfer-Encoding"; dkim=pass header.s=mte1 header.d=vates.tech header.i="teddy.astie@vates.tech" header.h="From:Subject:Message-Id:To:Cc:References:In-Reply-To:Feedback-ID:Date:MIME-Version:Content-Type:Content-Transfer-Encoding"
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=mandrillapp.com;
	s=mte1; t=1776689393; x=1776959393;
	bh=c8iYYSuvv2dPJJ3UYz3BOeX/wQvSA1vuYJkQLpFfBZI=;
	h=From:Subject:Message-Id:To:Cc:References:In-Reply-To:Feedback-ID:
	 Date:MIME-Version:Content-Type:Content-Transfer-Encoding:CC:Date:
	 Subject:From;
	b=aE+rCooCHezqAMIS1CJIiW4LdvGSEAHAStYY7neoVNYWbUUXsRacXZIwEv4kGet9C
	 Mabn0NEI+oqzHZf3zy+EN2iDxxHGDYuVOuiP5eU1qZanWo+b9GkUT5auIYjwvIfKWa
	 fHljvypRrZvxDerFeq8CCjKfJGCI7osPQODlfy8+Azd3LPk0aA4zWNkcrDAbcd86rZ
	 DeIJ0u/sNdTISgBMD0dNYloGJWqs+BMtWEv8lsFKwZOrmYdIaVr7P9jNAHkGgEY69Y
	 UxkqsewML4RGCfwDrTHypqGtq3ZdFqGUUmmsJnS4UzAV22oKTsBeO9m/CkoEoz9OqJ
	 GzbDs48GZR2aQ==
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=vates.tech; s=mte1;
	t=1776689393; x=1776949893; i=teddy.astie@vates.tech;
	bh=c8iYYSuvv2dPJJ3UYz3BOeX/wQvSA1vuYJkQLpFfBZI=;
	h=From:Subject:Message-Id:To:Cc:References:In-Reply-To:Feedback-ID:
	 Date:MIME-Version:Content-Type:Content-Transfer-Encoding:CC:Date:
	 Subject:From;
	b=B2VYh0i+Oe9aaektlvVKuKNuqY8aBEW5vr0aFzbMDqo9mBBMH1LqPK7kM8SoXRHDW
	 uxN1D8SPBEmGznr6L21nglt3rePbMo43YcscjwXZMd2FtNt3T003HF+Ya4f8hXu2Fh
	 L46SaqQV6lsrMHYor8KWQ0QztnDWlqXoIrXnL24JtgTG3+NnCPaI8m/T05Vol3LIHG
	 r/yM/JLGbdOdjeackJ4ok+CxKEIIMTsbUXw2ABq/opa+FrRIGo+8GLUBKZYwOKqH2k
	 EMOEPKIC0JZVLgXUCQ7O2VlQFHw3xH4+H1raQwJZ2bc9L4pc0hq3VYy74kznl4d7Fk
	 LkwGqxOPFAdow==
From: "Teddy Astie" <teddy.astie@vates.tech>
Subject: =?utf-8?Q?Re:=20[PATCH=20v6=203/3]=20x86/ioreq:=20Extend=20ioreq=20server=20to=20support=20multiple=20ioreq=20pages?=
X-Bm-Disclaimer: Yes
X-Bm-Milter-Handled: 4ffbd6c1-ee69-4e1b-aabd-f977039bd3e2
X-Bm-Transport-Timestamp: 1776689391815
Message-Id: <cd9b42bf-5399-471e-9b86-dcf13eaad9e6@vates.tech>
To: "Julian Vetter" <julian.vetter@vates.tech>, 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.pau@citrix.com>, "Anthony PERARD" <anthony.perard@vates.tech>, "Michal Orzel" <michal.orzel@amd.com>, "Julien Grall" <julien@xen.org>, "Stefano Stabellini" <sstabellini@kernel.org>
References: <20260420093820.825969-1-julian.vetter@vates.tech> <20260420093820.825969-4-julian.vetter@vates.tech>
In-Reply-To: <20260420093820.825969-4-julian.vetter@vates.tech>
X-Native-Encoded: 1
X-Report-Abuse: =?UTF-8?Q?Please=20forward=20a=20copy=20of=20this=20message,=20including=20all=20headers,=20to=20abuse@mandrill.com.=20You=20can=20also=20report=20abuse=20here:=20https://mandrillapp.com/contact/abuse=3Fid=3D30504962.884f9eb010b443899f2b5441430958da?=
X-Mandrill-User: md_30504962
Feedback-ID: 30504962:30504962.20260420:md
Date: Mon, 20 Apr 2026 12:49:53 +0000
MIME-Version: 1.0
Content-Type: text/plain; charset=utf-8
Content-Transfer-Encoding: quoted-printable
X-purgate-ID: tlsNG-c201ff/1776689395-2A175443-44D4807A/0/0
X-purgate-type: clean
X-purgate-size: 9306

Le 20/04/2026 =C3=A0 11:41, Julian Vetter a =C3=A9crit=C2=A0:
> As the number of vCPUs grows, a single ioreq page of 128 slots may not
> be sufficient. Add support for allocating and mapping multiple ioreq
> pages so that the ioreq region can scale with d->max_vcpus.
> 
> Introduce nr_ioreq_pages() to compute the number of pages required for
> a given domain, and IOREQ_NR_PAGES_MAX as a compile-time upper bound
> (based on HVM_MAX_VCPUS).
> 
> ioreq_server_alloc_mfn() is updated to allocate nr_ioreq_pages() pages
> and map them contiguously via vmap().
> 
> is_ioreq_server_page() iterates over all ioreq pages when checking
> page ownership. ioreq_server_get_frame() allows callers to retrieve any
> ioreq page by index via the XENMEM_acquire_resource interface.
> 
> On x86, the legacy GFN mapping path (hvm_map_ioreq_gfn) is limited to
> a single ioreq page; device models requiring more ioreq slots must use
> the resource mapping interface (XENMEM_acquire_resource).
> 
> Signed-off-by: Julian Vetter <julian.vetter@vates.tech>
> ---
> Changes in v6:
> - Adapted the comment to not mention the guest, but the device model
> - Replaced the dynamic allocation for the mfns array by a static array
> - Fixed error handling in ioreq_server_alloc_mfn, using an extra
>    nr_alloc variable to track the already allocated pages
> - Dropped unnecessary void casts
> ---
>   xen/arch/x86/hvm/ioreq.c |  8 ++++
>   xen/common/ioreq.c       | 93 ++++++++++++++++++++++++++++------------
>   xen/include/xen/ioreq.h  | 12 ++++++
>   3 files changed, 86 insertions(+), 27 deletions(-)
> 
> diff --git a/xen/arch/x86/hvm/ioreq.c b/xen/arch/x86/hvm/ioreq.c
> index 3cabec141c..ee679bdf5a 100644
> --- a/xen/arch/x86/hvm/ioreq.c
> +++ b/xen/arch/x86/hvm/ioreq.c
> @@ -166,6 +166,14 @@ static int hvm_map_ioreq_gfn(struct ioreq_server *s,=
 bool buf)
>       if ( d->is_dying )
>           return -EINVAL;
>   
> +    /*
> +     * The legacy GFN path supports only a single ioreq page. Device mod=
els
> +     * requiring more ioreq slots must use the resource mapping interfac=
e
> +     * (XENMEM_acquire_resource).
> +     */
> +    if ( !buf && nr_ioreq_pages(d) > 1 )
> +        return -EOPNOTSUPP;
> +
>       iorp->gfn =3D hvm_alloc_ioreq_gfn(s);
>   
>       if ( gfn_eq(iorp->gfn, INVALID_GFN) )
> diff --git a/xen/common/ioreq.c b/xen/common/ioreq.c
> index bae9b99c99..3a08e77597 100644
> --- a/xen/common/ioreq.c
> +++ b/xen/common/ioreq.c
> @@ -261,8 +261,11 @@ bool vcpu_ioreq_handle_completion(struct vcpu *v)
>   static int ioreq_server_alloc_mfn(struct ioreq_server *s, bool buf)
>   {
>       struct ioreq_page *iorp =3D buf ? &s->bufioreq : &s->ioreq;
> -    struct page_info *page;
> -    mfn_t mfn;
> +    unsigned int i, nr_alloc =3D 0, nr_pages =3D buf ? 1 : nr_ioreq_page=
s(s->target);
> +    mfn_t mfns[IOREQ_NR_PAGES_MAX] =3D {};
> +    int rc;
> +
> +    ASSERT(nr_pages <=3D IOREQ_NR_PAGES_MAX);
>   
>       if ( iorp->va )
>       {
> @@ -277,11 +280,16 @@ static int ioreq_server_alloc_mfn(struct ioreq_serv=
er *s, bool buf)
>           return 0;
>       }
>   
> +    for ( i =3D 0; i < nr_pages; i++ )
>       {
> -        page =3D alloc_domheap_page(s->target, MEMF_no_refcount);
> +        struct page_info *page =3D alloc_domheap_page(s->target,
> +                                                    MEMF_no_refcount);
>   
>           if ( !page )
> -            return -ENOMEM;
> +        {
> +            rc =3D -ENOMEM;
> +            goto fail;
> +        }
>   
>           if ( !get_page_and_type(page, s->target, PGT_writable_page) )
>           {
> @@ -290,41 +298,59 @@ static int ioreq_server_alloc_mfn(struct ioreq_serv=
er *s, bool buf)
>                * here is a clear indication of something fishy going on.
>                */
>               domain_crash(s->emulator);
> -            return -ENODATA;
> +            rc =3D -ENODATA;
> +            goto fail;
>           }
>   
> -        mfn =3D page_to_mfn(page);
> +        mfns[nr_alloc++] =3D page_to_mfn(page);
>       }
> -    iorp->va =3D vmap(&mfn, 1);
> +
> +    iorp->va =3D vmap(mfns, nr_pages);
>       if ( !iorp->va )
> +    {
> +        rc =3D -ENOMEM;
>           goto fail;
> +    }
>   
> -    clear_page(iorp->va);
> +    memset(iorp->va, 0, nr_pages * PAGE_SIZE);
>       return 0;
>   
>    fail:
> -    put_page_alloc_ref(page);
> -    put_page_and_type(page);
> +    while ( nr_alloc-- )
> +    {
> +        struct page_info *page =3D mfn_to_page(mfns[nr_alloc]);
> +
> +        put_page_alloc_ref(page);
> +        put_page_and_type(page);
> +    }
>   
> -    return -ENOMEM;
> +    return rc;
>   }
>   
>   static void ioreq_server_free_mfn(struct ioreq_server *s, bool buf)
>   {
>       struct ioreq_page *iorp =3D buf ? &s->bufioreq : &s->ioreq;
> -    struct page_info *page;
> +    unsigned int i, nr_pages =3D buf ? 1 : nr_ioreq_pages(s->target);
> +    struct page_info *pages[IOREQ_NR_PAGES_MAX];
>       void *va;
>   
>       if ( !iorp->va )
>           return;
>   
> +    ASSERT(nr_pages <=3D IOREQ_NR_PAGES_MAX);
> +
> +    for ( i =3D 0; i < nr_pages; i++ )
> +        pages[i] =3D vmap_to_page(iorp->va + i * PAGE_SIZE);
> +
>       va =3D iorp->va;
> -    page =3D vmap_to_page(va);
>       iorp->va =3D NULL;
>       vunmap(va);
>   
> -    put_page_alloc_ref(page);
> -    put_page_and_type(page);
> +    for ( i =3D 0; i < nr_pages; i++ )
> +    {
> +        put_page_alloc_ref(pages[i]);
> +        put_page_and_type(pages[i]);
> +    }
>   }
>   
>   bool is_ioreq_server_page(struct domain *d, const struct page_info *pag=
e)
> @@ -337,12 +363,25 @@ bool is_ioreq_server_page(struct domain *d, const s=
truct page_info *page)
>   
>       FOR_EACH_IOREQ_SERVER(d, id, s)
>       {
> -        if ( (s->ioreq.va && vmap_to_page(s->ioreq.va) =3D=3D page) ||
> -             (s->bufioreq.va && vmap_to_page(s->bufioreq.va) =3D=3D page=
) )
> +        unsigned int i;
> +
> +        if ( s->bufioreq.va && vmap_to_page(s->bufioreq.va) =3D=3D page =
)
>           {
>               found =3D true;
>               break;
>           }
> +
> +        for ( i =3D 0; i < nr_ioreq_pages(d) && s->ioreq.va; i++ )
> +        {
> +            if ( vmap_to_page(s->ioreq.va + i * PAGE_SIZE) =3D=3D page )
> +            {
> +                found =3D true;
> +                break;
> +            }
> +        }
> +
> +        if ( found )
> +            break;
>       }
>   
>       rspin_unlock(&d->ioreq_server.lock);
> @@ -816,26 +855,26 @@ int ioreq_server_get_frame(struct domain *d, ioserv=
id_t id,
>       if ( rc )
>           goto out;
>   
> -    switch ( idx )
> +    if ( idx =3D=3D XENMEM_resource_ioreq_server_frame_bufioreq )
>       {
> -    case XENMEM_resource_ioreq_server_frame_bufioreq:
>           rc =3D -ENOENT;
>           if ( !HANDLE_BUFIOREQ(s) )
>               goto out;
>   
>           *mfn =3D vmap_to_mfn(s->bufioreq.va);
>           rc =3D 0;
> -        break;
> +    }
> +    else if ( idx >=3D XENMEM_resource_ioreq_server_frame_ioreq(0) &&
> +              idx < XENMEM_resource_ioreq_server_frame_ioreq(nr_ioreq_pa=
ges(d)) )
> +    {
> +        unsigned int page_idx =3D idx - XENMEM_resource_ioreq_server_fra=
me_ioreq(0);
>   
> -    case XENMEM_resource_ioreq_server_frame_ioreq(0):
> -        *mfn =3D vmap_to_mfn(s->ioreq.va);
> +        ASSERT(page_idx < nr_ioreq_pages(d));
> +        *mfn =3D vmap_to_mfn(s->ioreq.va + page_idx * PAGE_SIZE);
>           rc =3D 0;
> -        break;
> -
> -    default:
> -        rc =3D -EINVAL;
> -        break;
>       }
> +    else
> +        rc =3D -EINVAL;
>   
>    out:
>       rspin_unlock(&d->ioreq_server.lock);
> diff --git a/xen/include/xen/ioreq.h b/xen/include/xen/ioreq.h
> index d63fa4729e..d2a08c2371 100644
> --- a/xen/include/xen/ioreq.h
> +++ b/xen/include/xen/ioreq.h
> @@ -35,6 +35,18 @@ struct ioreq_vcpu {
>       bool             pending;
>   };
>   
> +/*
> + * Maximum number of ioreq pages, based on the maximum number
> + * of vCPUs and the number of ioreq slots per page.
> + */
> +#define IOREQ_NR_PAGES_MAX \
> +    DIV_ROUND_UP(HVM_MAX_VCPUS, PAGE_SIZE / sizeof(ioreq_t))
> +
> +static inline unsigned int nr_ioreq_pages(const struct domain *d)
> +{
> +    return DIV_ROUND_UP(d->max_vcpus, PAGE_SIZE / sizeof(ioreq_t));
> +}
> +
>   #define NR_IO_RANGE_TYPES (XEN_DMOP_IO_RANGE_PCI + 1)
>   #define MAX_NR_IO_RANGES  256
>   

Is there anything that would prevent the use of alloc_domheap_pages() to 
allocate a configuous set of pages at once; and vmap_contig() to map it 
in one go.
That also prevents the ioreq pages from being scattered around.

We would lose a few pages by aligning the size into a order, but that 
probably better than the alternatives.

That way, we would only have to keep the base gfn (or first page_info) 
and size of the allocation, and don't have to use a array of mfn nor 
have to reverse the vmap to track it.

Teddy


--
Teddy Astie | Vates XCP-ng Developer

XCP-ng & Xen Orchestra - Vates solutions

web: https://vates.tech




From xen-devel-bounces@lists.xenproject.org Mon Apr 20 13:21:29 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 20 Apr 2026 13:21:29 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1285794.1567033 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wEoYw-00049a-4Z; Mon, 20 Apr 2026 13:21:18 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1285794.1567033; Mon, 20 Apr 2026 13:21: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 1wEoYw-00049T-1H; Mon, 20 Apr 2026 13:21:18 +0000
Received: by outflank-mailman (input) for mailman id 1285794;
 Mon, 20 Apr 2026 13:21:16 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <Stewart.Hildebrand@amd.com>) id 1wEoYt-00049N-VY
 for xen-devel@lists.xenproject.org; Mon, 20 Apr 2026 13:21:16 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wEoYs-008aU7-QI
 for xen-devel@lists.xenproject.org; Mon, 20 Apr 2026 15:21:14 +0200
Received: from [10.42.69.12] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <Stewart.Hildebrand@amd.com>)
 id 69e62846-5cb7-0a2a0a5109dd-0a2a450cc074-10
 for <xen-devel@lists.xenproject.org>; Mon, 20 Apr 2026 15:21:14 +0200
Received: from [52.101.52.18]
 (helo=BL2PR02CU003.outbound.protection.outlook.com)
 by tlsNG-d25034.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.1)
 (envelope-from <Stewart.Hildebrand@amd.com>)
 id 69e62848-62f1-0a2a450c0019-3465341299a3-3
 for <xen-devel@lists.xenproject.org>; Mon, 20 Apr 2026 15:21:14 +0200
Received: from MN2PR18CA0027.namprd18.prod.outlook.com (2603:10b6:208:23c::32)
 by SN7PR12MB6960.namprd12.prod.outlook.com (2603:10b6:806:260::18)
 with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9818.20; Mon, 20 Apr
 2026 13:21:07 +0000
Received: from BN2PEPF000055DB.namprd21.prod.outlook.com
 (2603:10b6:208:23c:cafe::5c) by MN2PR18CA0027.outlook.office365.com
 (2603:10b6:208:23c::32) with Microsoft SMTP Server (version=TLS1_3,
 cipher=TLS_AES_256_GCM_SHA384) id 15.20.9791.48 via Frontend Transport; Mon,
 20 Apr 2026 13:21:07 +0000
Received: from satlexmb08.amd.com (165.204.84.17) by
 BN2PEPF000055DB.mail.protection.outlook.com (10.167.245.5) with Microsoft
 SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id
 15.20.9870.4 via Frontend Transport; Mon, 20 Apr 2026 13:21:07 +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.17; Mon, 20 Apr
 2026 08:21:05 -0500
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.17; Mon, 20 Apr
 2026 08:21:05 -0500
Received: from [172.26.2.83] (10.180.168.240) by satlexmb08.amd.com
 (10.181.42.217) with Microsoft SMTP Server id 15.2.2562.17 via Frontend
 Transport; Mon, 20 Apr 2026 08:21:04 -0500
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@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=crj+gKooDR868SYz/S1oCTzLnhBRpO2qmwCDbS3MqHFwZg7RyqICkPUwhvzt7FuANN/w71+mXRaSc1Yk2QnqF0CPzLxCShnibJFqyueqUg38soH/ReWODqoJ6nY1wI7yiZU5udkUhqhm4h2odYnFZaaFaSqDdZeVIOGeJDMBsMIs8HCYEYYjm8ITn3uLmiVk19vGx79QUoAyN7XRtuqVJefutIi8NL3HzrMfFBNsaVX4w1QxMvUpnEuXX7+G/RV8WV6J5T3slezacxH5z2JOYs0tFnd3OgSkW+1kVS+mPl1VyssDluMW9/gg0Ot6gPafskcDGzhnzhA/DUdLgPGvhg==
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com;
 s=arcselector10001;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1;
 bh=0DT3efmmIrSseZIrFeBGpFfMlgM2s0QUseUAc5mkpCM=;
 b=WPwIZAms2sN9cJcUHZKDvMnSQcEGnqcffpQPcfZ2AuVkNS+L8EgDoSrIGjhvrmE7eACqn75XyBgOrNdXTlZwyKcah3Sqma3QgzsjDjYcoimnKIt8EK2EraXJGP5W+PVqnY+3LdLCZwqttfrvaKBxe2AIKvk2Vv7+CB+CrNXuj514KsMo9xPe+tY192fAMXebl6Rljlhx00RxP6meG059SBbQs173WrMGMTSkFDC3PbpBxj6rVQI9SzBQkietvzw8n596YnP+deVfn0JGNrOPX/7dzlSCojm5rEF4DFm+5xaxtS1gZsJHvqZuqsPjJre/LuLZiPPN69q0IdIcR5qM3w==
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=0DT3efmmIrSseZIrFeBGpFfMlgM2s0QUseUAc5mkpCM=;
 b=JMED3bl2VSRWwDzxIq9CAGtOASzV6WBrLam5ZhcwAHDgfnhp7SNx6inyVcBtjqUafuv2cl6amaCfbbc2RFCnihHM9+9jQTgc1Qda0NJDVC6DSmRj4upduKa5lSJCruGm0YyqTjCZL7KBAqJ8D8yDY0W5Mu5cM1b3n5KsQbfMPkM=
X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 165.204.84.17)
 smtp.mailfrom=amd.com; dkim=none (message not signed)
 header.d=none;dmarc=pass action=none header.from=amd.com;
Received-SPF: Pass (protection.outlook.com: domain of amd.com designates
 165.204.84.17 as permitted sender) receiver=protection.outlook.com;
 client-ip=165.204.84.17; helo=satlexmb08.amd.com; pr=C
Message-ID: <8ae3567b-712f-4f0e-9d5c-82a949651b74@amd.com>
Date: Mon, 20 Apr 2026 09:21:04 -0400
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH v3] arinc653: don't assume Dom0 is the control domain
To: Jan Beulich <jbeulich@suse.com>
CC: Nathan Studer <nathan.studer@dornerworks.com>, Stewart Hildebrand
	<stewart@stew.dk>, "xen-devel@lists.xenproject.org"
	<xen-devel@lists.xenproject.org>, =?UTF-8?B?SsO8cmdlbiBHcm/Dnw==?=
	<jgross@suse.com>
References: <89d17a24-0a1f-4f3f-ac2f-f3701a8d78dd@suse.com>
 <4a4c011e-9666-4416-be1b-33d1dcad5afe@suse.com>
 <73e51afc-ae7c-4d08-9054-75dab660bf42@suse.com>
 <ca934061-f3e2-4511-bdad-465c4f2d0de1@suse.com>
 <fa04f9e1-bc9e-4b34-84f4-dc7ca8999eb3@amd.com>
 <4dfd48a9-37c1-4f28-87f3-19646a339b08@suse.com>
 <7ea3a5d8-f9ff-4296-9b3e-07b9ba184e6f@amd.com>
 <ef1e2846-2f75-4358-a6ed-a7d45e617fea@suse.com>
Content-Language: en-US
From: Stewart Hildebrand <stewart.hildebrand@amd.com>
In-Reply-To: <ef1e2846-2f75-4358-a6ed-a7d45e617fea@suse.com>
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: 7bit
X-EOPAttributedMessage: 0
X-MS-PublicTrafficType: Email
X-MS-TrafficTypeDiagnostic: BN2PEPF000055DB:EE_|SN7PR12MB6960:EE_
X-MS-Office365-Filtering-Correlation-Id: a31a10ab-5449-4a3e-edff-08de9edfae4c
X-MS-Exchange-SenderADCheck: 1
X-MS-Exchange-AntiSpam-Relay: 0
X-Microsoft-Antispam:
	BCL:0;ARA:13230040|82310400026|36860700016|376014|30052699003|1800799024|22082099003|56012099003|18002099003;
X-Microsoft-Antispam-Message-Info:
	UJQ0KszG44o7CTvkGJkpZyuABt5mgmxqJc/nNEkubELfABTWwN2dh1AIpgY7Hhl+d1owi4bG8njaMWGPdUg4yf3S8Pfj7GI21fwRMGpqaYc9nfgf/Dz6Cs8F2oMCr0sxWiOy9NeoawJgpZF8eyghP2jgzXMnaKJENCdrbz4vrW3hr+Ix3R7QnYe49ZSoffHlErzmT5emRtYHc0Grk+eR9kWrp+2PoI5195GCxkKOKyQ3WZgjMVTA5i08K3mQh+/m8l8UtEnqaRNHgnF6SK6zENlYokuCWHArbsoC6IuYnvZ02hzoVYKyjVIEIzwSECquqtFvfXni/VfA7bVxQsynTRIcHXI+Fy7GDHq9rqe8HgfF0cYN6E3BLXEuI9seMp4WGioVSU/PM9KRc175kceDpdd6Q9paR8PSFEYAuZGLdSMXSA47GQf0mFur7gQ74p5cz791gjnDPfw1/A0FwGXiqUghCibwFrEp5Hgg1coI3jQWrwVv0VoCCtYeGwlg3dPBDyNoUpjrVc4KIJd6EV3vQh2PC0Bi08ypg8oXPJpmCjqkBPc0JyjTJthrcmLNJeLntIax/sw2t1eyBnQF5Aq3WFL9/BuVfdwkX7JSxwRHw/iv/go9fvu11O2J5ZrjMWjXSzq+obyRPi/BLLHWsDNJ17Tvq5/HR7qQS2EX2j2RV3gv+2UQ7UXdQXyL3VAW29mlv2LPTkYgn0rbMO8vTPAkrw6hcnYDvoE8NQwr4k2TFG1m+gPEFSSxHob3g55mvc1OS/xOFnymTwzlLP6wCkcf7g==
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)(376014)(30052699003)(1800799024)(22082099003)(56012099003)(18002099003);DIR:OUT;SFP:1101;
X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1
X-MS-Exchange-AntiSpam-MessageData-0:
	0P0OfftKNXzcyB8koImd72FNLc/NL52a3QCanlakIPJm5dr5hfk4oMyUbbG+zmWzaIFeJ5R17vOPY+kSUB7aFywrvcnHc6+wSe6c07DlZ1gh4iYcExtd5157F3nRGCjmtO/87TGGVnzxRXUj1yM+/PoiM0PO+liS6KKmBIBkSSiOZn+YLSIeNNp35Lnioy+tNQyzx6/mL3LVS1LZKYLRzZEyLFO5Hx3olmJRg/zQWBEoTHf9EbhdZMThTyfEqpel8/WGu7dAqPxXhbKNacZkMUigf3JpCK3iVONZvkkVAGhduBo2Eu9hrWqlQvF99cMhPlAn0ehswCgtmfcGSwTv/iw5z8SCQs0qppzXEdy3trAngsaZQG+ikz+A7Uvumo6oigxg/VRMG08LAmNrXy5jtVoq97WapHtCJm4XdCyYOnaO6bomcCrZokFE4Gs8msiK
X-OriginatorOrg: amd.com
X-MS-Exchange-CrossTenant-OriginalArrivalTime: 20 Apr 2026 13:21:07.1903
 (UTC)
X-MS-Exchange-CrossTenant-Network-Message-Id: a31a10ab-5449-4a3e-edff-08de9edfae4c
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:
	BN2PEPF000055DB.namprd21.prod.outlook.com
X-MS-Exchange-CrossTenant-AuthAs: Anonymous
X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem
X-MS-Exchange-Transport-CrossTenantHeadersStamped: SN7PR12MB6960
X-purgate-ID: tlsNG-d25034/1776691274-6CD63CF5-7AAFDEE1/0/0
X-purgate-type: clean
X-purgate-size: 407

On 4/20/26 08:28, Jan Beulich wrote:
> On 07.04.2026 13:27, Stewart Hildebrand wrote:
>> I think the patch is good as is, but I just want to give it a few more days to
>> give Nate or others a chance to chime in. I'll follow up next week if there's no
>> further discussion.
> 
> Ping.

Thanks.

With the patch in its current form:

Reviewed-by: Stewart Hildebrand <stewart.hildebrand@amd.com>


From xen-devel-bounces@lists.xenproject.org Mon Apr 20 13:23:08 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 20 Apr 2026 13:23:08 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1285803.1567041 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wEoag-0004ek-FR; Mon, 20 Apr 2026 13:23:06 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1285803.1567041; Mon, 20 Apr 2026 13:23: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 1wEoag-0004ed-Ci; Mon, 20 Apr 2026 13:23:06 +0000
Received: by outflank-mailman (input) for mailman id 1285803;
 Mon, 20 Apr 2026 13:23:05 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <bernhard.kaindl@citrix.com>) id 1wEoaf-0004eV-BD
 for xen-devel@lists.xenproject.org; Mon, 20 Apr 2026 13:23:05 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wEoae-003vBn-OK
 for xen-devel@lists.xenproject.org; Mon, 20 Apr 2026 15:23:04 +0200
Received: from [10.42.69.1] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <bernhard.kaindl@citrix.com>)
 id 69e628af-2eae-0a2a0a5409dd-0a2a45018ff6-30
 for <xen-devel@lists.xenproject.org>; Mon, 20 Apr 2026 15:23:04 +0200
Received: from [160.101.131.8] (helo=na1pdmzitismtp01.tibco.com)
 by tlsNG-d62444.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.1)
 (envelope-from <bernhard.kaindl@citrix.com>)
 id 69e628b7-c1f2-0a2a45010019-a0658308e3ec-3
 for <xen-devel@lists.xenproject.org>; Mon, 20 Apr 2026 15:23:04 +0200
Received: from debian.eng.citrite.net (unknown [10.113.40.46])
 by na1pdmzitismtp01.tibco.com (Postfix) with ESMTP id CD100420CEC8;
 Mon, 20 Apr 2026 09:22:17 -0400 (EDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-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: Bernhard Kaindl <bernhard.kaindl@citrix.com>
To: xen-devel@lists.xenproject.org
Cc: Bernhard Kaindl <bernhard.kaindl@citrix.com>,
	Anthony PERARD <anthony.perard@vates.tech>,
	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=20Pau=20Monn=C3=A9?= <roger.pau@citrix.com>,
	Stefano Stabellini <sstabellini@kernel.org>
Subject: [PATCH v2 0/4] xen/mm: Host-side integration test environment for page_alloc.c
Date: Mon, 20 Apr 2026 14:19:40 +0100
Message-Id: <cover.1776690702.git.bernhard.kaindl@citrix.com>
X-Mailer: git-send-email 2.39.5
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit
X-purgate-ID: tlsNG-d62444/1776691384-BF67FFF4-E02B6EA0/0/0
X-purgate-type: clean
X-purgate-size: 4369

Hi all,

This patch series introduces a host-side integration test environment
for Xen's page allocator in xen/common/page_alloc.c, reduced in size
by 60% from 2257 to 1411 new lines with v2.

Using this environment, it also introduces integration tests for claims,
including NUMA-aware claim sets, complementing the functional system tests
submitted as part of the NUMA-aware claims v6 series.

The claim tests verify the page allocator's behaviour with multi-node
claim sets in scenarios that are easier to isolate and validate using a
synthetic Xen heap and domain state, offering full control and visibility
into claim states as claims are made and redeemed during heap allocation.

For these tests, this series depends on the NUMA claims v6 series,
which introduced NUMA-aware claim sets:

[PATCH v6 0/7] xen/mm: Introduce NUMA-aware claim sets for domains
https://lists.xen.org/archives/html/xen-devel/2026-04/msg00587.html
https://patchwork.kernel.org/project/xen-devel/list/?series=1081139

Its design is described in this document:

[PATCH v2] docs: Draft Design Document for NUMA-aware claim sets
https://lists.xen.org/archives/html/xen-devel/2026-04/msg00569.html
https://patchwork.kernel.org/project/xen-devel/list/?series=1081047

Patch summary:

1. tools/tests/alloc: Add a test environment for the page allocator
2. tools/tests/alloc: Add integration tests for claims and claim sets
3. tools/tests/alloc: Add tests for offlining with claims present
4. xen/mm: Recall claims when offlining pages if needed

Thanks,

  Bernhard Kaindl

---
Changes since v1:
1. Refactored the test environment for minimalism:
   - Improved separation of concerns.
   - Moved extensions to later patch series.
   - Simplified code with targeted assertions and concise comments.
2. Fixed file names to avoid underscores.
3. Updated include guards to comply with CODING_STYLE.

---
PS: The bug fixed in the last commit also affects the global claims
in Xen master when offlining pages.

While offlining has known limitations, the bug fixed in this series also
affects global claims in Xen master when pages are offlined. I will submit
a follow-up series to address offlining itself. In the meantime, this test
framework enables targeted testing on a synthetic Xen heap and simplifies
validation by letting the tests observe heap-state changes during offlining.

Bernhard Kaindl (4):
  tools/tests/alloc: Add Page Allocator Test Environment
  tools/tests/alloc: Add integration test suite to for NUMA memory
    claims
  tools/tests/alloc: Add tests for offlining with claims present
  xen/mm: Recall claims when offlining pages if needed

 tools/tests/Makefile                        |   1 +
 tools/tests/alloc/.gitignore                |   7 +
 tools/tests/alloc/Makefile                  | 141 +++++++
 tools/tests/alloc/README.rst                |  98 +++++
 tools/tests/alloc/check-asserts.h           | 225 +++++++++++
 tools/tests/alloc/harness.h                 |  57 +++
 tools/tests/alloc/hypervisor-macros.h       |  95 +++++
 tools/tests/alloc/libtest-page-alloc.h      | 145 +++++++
 tools/tests/alloc/mock-page-list.h          | 167 ++++++++
 tools/tests/alloc/page-alloc-shim.h         | 411 ++++++++++++++++++++
 tools/tests/alloc/page-alloc-wrapper.h      |  64 +++
 tools/tests/alloc/test-claims-basic.c       | 108 +++++
 tools/tests/alloc/test-claims-numa-redeem.c | 172 ++++++++
 tools/tests/alloc/test-offlining-claims.c   |  71 ++++
 xen/common/page_alloc.c                     |  42 ++
 15 files changed, 1804 insertions(+)
 create mode 100644 tools/tests/alloc/.gitignore
 create mode 100644 tools/tests/alloc/Makefile
 create mode 100644 tools/tests/alloc/README.rst
 create mode 100644 tools/tests/alloc/check-asserts.h
 create mode 100644 tools/tests/alloc/harness.h
 create mode 100644 tools/tests/alloc/hypervisor-macros.h
 create mode 100644 tools/tests/alloc/libtest-page-alloc.h
 create mode 100644 tools/tests/alloc/mock-page-list.h
 create mode 100644 tools/tests/alloc/page-alloc-shim.h
 create mode 100644 tools/tests/alloc/page-alloc-wrapper.h
 create mode 100644 tools/tests/alloc/test-claims-basic.c
 create mode 100644 tools/tests/alloc/test-claims-numa-redeem.c
 create mode 100644 tools/tests/alloc/test-offlining-claims.c

-- 
2.39.5



From xen-devel-bounces@lists.xenproject.org Mon Apr 20 13:24:01 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 20 Apr 2026 13:24:01 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1285823.1567051 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wEobZ-0005EJ-TN; Mon, 20 Apr 2026 13:24:01 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1285823.1567051; Mon, 20 Apr 2026 13:24: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 1wEobZ-0005EC-PN; Mon, 20 Apr 2026 13:24:01 +0000
Received: by outflank-mailman (input) for mailman id 1285823;
 Mon, 20 Apr 2026 13:24:01 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <bernhard.kaindl@citrix.com>) id 1wEobY-0005E4-Sq
 for xen-devel@lists.xenproject.org; Mon, 20 Apr 2026 13:24:01 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wEobW-008KMW-OI
 for xen-devel@lists.xenproject.org; Mon, 20 Apr 2026 15:24:00 +0200
Received: from [10.42.69.11] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <bernhard.kaindl@citrix.com>)
 id 69e628ee-2eae-0a2a0a5409dd-0a2a450b988e-2
 for <xen-devel@lists.xenproject.org>; Mon, 20 Apr 2026 15:24:00 +0200
Received: from [160.101.131.9] (helo=na1pdmzitismtp02.tibco.com)
 by tlsNG-42698a.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.1)
 (envelope-from <bernhard.kaindl@citrix.com>)
 id 69e628ef-212f-0a2a450b0019-a0658309e0a6-3
 for <xen-devel@lists.xenproject.org>; Mon, 20 Apr 2026 15:23:59 +0200
Received: from debian.eng.citrite.net (unknown [10.113.40.46])
 by na1pdmzitismtp02.tibco.com (Postfix) with ESMTP id 0F5B78185701;
 Mon, 20 Apr 2026 09:23:02 -0400 (EDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-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: Bernhard Kaindl <bernhard.kaindl@citrix.com>
To: xen-devel@lists.xenproject.org
Cc: Bernhard Kaindl <bernhard.kaindl@citrix.com>,
	Anthony PERARD <anthony.perard@vates.tech>
Subject: [PATCH v2 1/4] tools/tests/alloc: Add Page Allocator Test Environment
Date: Mon, 20 Apr 2026 14:19:41 +0100
Message-Id: <3c17deb670d5471f2a5df04084e2a88e62502343.1776690702.git.bernhard.kaindl@citrix.com>
X-Mailer: git-send-email 2.39.5
In-Reply-To: <cover.1776690702.git.bernhard.kaindl@citrix.com>
References: <cover.1776690702.git.bernhard.kaindl@citrix.com>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit
X-purgate-ID: tlsNG-42698a/1776691440-246B7F3B-55BC0E22/0/0
X-purgate-type: clean
X-purgate-size: 56028

Provide a small, self-contained test environment for Xen's page allocator.

Instead of reimplementing allocator logic in a model, these tests compile
the real allocator code into ordinary host executables and exercise it in a
controlled environment with a synthetic Xen heap and domain state. This
gives direct visibility into allocator state while keeping the test harness
self-contained.

This is intended for scenarios that are difficult to cover with system-level
testing alone, such as:

* inspecting NUMA claims in response to allocator operations
* rebuilding buddies after offlining subpages
* reproducing edge cases while inspecting heap state during allocation and
  free operations

Signed-off-by: Bernhard Kaindl <bernhard.kaindl@citrix.com>
---
 tools/tests/Makefile                   |   1 +
 tools/tests/alloc/.gitignore           |   7 +
 tools/tests/alloc/Makefile             | 141 +++++++++
 tools/tests/alloc/README.rst           |  98 ++++++
 tools/tests/alloc/check-asserts.h      | 225 ++++++++++++++
 tools/tests/alloc/harness.h            |  57 ++++
 tools/tests/alloc/hypervisor-macros.h  |  95 ++++++
 tools/tests/alloc/libtest-page-alloc.h | 145 +++++++++
 tools/tests/alloc/mock-page-list.h     | 167 ++++++++++
 tools/tests/alloc/page-alloc-shim.h    | 411 +++++++++++++++++++++++++
 tools/tests/alloc/page-alloc-wrapper.h |  64 ++++
 11 files changed, 1411 insertions(+)
 create mode 100644 tools/tests/alloc/.gitignore
 create mode 100644 tools/tests/alloc/Makefile
 create mode 100644 tools/tests/alloc/README.rst
 create mode 100644 tools/tests/alloc/check-asserts.h
 create mode 100644 tools/tests/alloc/harness.h
 create mode 100644 tools/tests/alloc/hypervisor-macros.h
 create mode 100644 tools/tests/alloc/libtest-page-alloc.h
 create mode 100644 tools/tests/alloc/mock-page-list.h
 create mode 100644 tools/tests/alloc/page-alloc-shim.h
 create mode 100644 tools/tests/alloc/page-alloc-wrapper.h

diff --git a/tools/tests/Makefile b/tools/tests/Makefile
index 6477a4386dda..ca3de4c7b54a 100644
--- a/tools/tests/Makefile
+++ b/tools/tests/Makefile
@@ -2,6 +2,7 @@ XEN_ROOT = $(CURDIR)/../..
 include $(XEN_ROOT)/tools/Rules.mk
 
 SUBDIRS-y :=
+SUBDIRS-y += alloc
 SUBDIRS-y += domid
 SUBDIRS-y += mem-claim
 SUBDIRS-y += paging-mempool
diff --git a/tools/tests/alloc/.gitignore b/tools/tests/alloc/.gitignore
new file mode 100644
index 000000000000..b0597936e234
--- /dev/null
+++ b/tools/tests/alloc/.gitignore
@@ -0,0 +1,7 @@
+/test-claims-basic
+/test-claims-numa-install
+/test-claims-numa-redeem
+/test-online-page
+/test-offlining-claims
+/test-reserve-offline-page
+/test-unaligned-buddies
diff --git a/tools/tests/alloc/Makefile b/tools/tests/alloc/Makefile
new file mode 100644
index 000000000000..f5724aa3f699
--- /dev/null
+++ b/tools/tests/alloc/Makefile
@@ -0,0 +1,141 @@
+# SPDX-License-Identifier: GPL-2.0-only
+# Makefile for tools/tests/alloc
+
+XEN_ROOT := $(abspath $(CURDIR)/../../..)
+include $(XEN_ROOT)/tools/Rules.mk
+RELDIR := $(subst $(XEN_ROOT)/,,$(CURDIR))
+
+TEST_SOURCES := $(notdir $(wildcard test-*.c))
+TARGETS := $(TEST_SOURCES:.c=)
+
+.PHONY: all
+all: $(TARGETS)
+
+define RUN_TESTS
+	@echo "Build configuration:"
+	@echo "CC=$(CC)"
+	@echo "CFLAGS='$(CFLAGS)'"
+	@for test in $? ; do \
+		echo;echo "$(RELDIR): RUN_TESTS: $$test...";echo; \
+		./$$test ; EXIT_CODE=$$? ; \
+		if [ $$EXIT_CODE -ne 0 ]; then \
+			echo "Test $$test failed with exit code $$EXIT_CODE"; \
+			exit 1; \
+		fi; \
+	done
+	@echo
+	@echo "Tests executed successfully:"
+	@for test in $? ; do \
+		echo "  - $$test"; \
+	done
+endef
+
+# Run the tests if possible, otherwise print a warning and skip them.
+.PHONY: run
+# Determine if the tests can be run on the build host. If CC and HOSTCC
+# are the same, we can run the tests directly. If they differ, we check
+# if binfmt-support and qemu-binfmt are available to run the tests under
+# using binfmt-misc using qemu-user-static.
+ifeq ($(CC),$(HOSTCC))
+    TESTS_RUNNABLE=yes
+else
+    BINFMT_SUPP := $(if $(wildcard /etc/init.d/binfmt-support),1,0)
+    QEMU_BINFMT := $(if $(wildcard /usr/libexec/qemu-binfmt),1,0)
+    ifeq ($(BINFMT_SUPP)$(QEMU_BINFMT),11)
+        # Running static binaries doesn't need extra setup besides qemu-binfmt
+        CFLAGS += -static
+        TESTS_RUNNABLE=yes
+    else
+        TESTS_RUNNABLE=no
+    endif
+endif
+
+run: $(TARGETS)
+ifeq ($(TESTS_RUNNABLE),yes)
+	$(RUN_TESTS)
+else
+	$(warning HOSTCC != CC, and qemu-binfmt not detected, skipping alloc tests)
+endif
+
+# Run the tests  binfmt-misc set up
+BINFMT_SUPP := $(if $(wildcard /etc/init.d/binfmt-support),1,0)
+QEMU_BINFMT := $(if $(wildcard /usr/libexec/qemu-binfmt),1,0)
+.PHONY: run-tests
+run-tests: $(TARGETS)
+ifeq ($(CC),$(HOSTCC))
+	$(RUN_TESTS)
+else ifeq ($(BINFMT_SUPP)$(QEMU_BINFMT),11)
+	$(RUN_TESTS)
+else
+	$(warning Note: binfmt-support or qemu-user not found, skipping run-tests)
+endif
+
+#
+# Build and run the tests for multiple architectures,
+# skipping if the appropriate cross-compiler is not found.
+# The default XEN_TARGET_ARCH is always built and tested as well.
+# This is gcc-specific, but can be adapted for other toolchains.
+#
+ARCHS := arm64-aarch64-linux-gnu arm32-arm-linux-gnueabihf
+ARCHS += x86_32-i686-linux-gnu x86_64-x86_64-linux-gnu
+ARCHS += ppc64-powerpc64le-linux-gnu riscv64-riscv64-linux-gnu
+.PHONY: run-archs
+run-archs: $(TARGETS)
+ifneq ($(CC),gcc)
+	$(warning run-archs target is only supported with CC=gcc for now, skipping)
+else
+	@set -e;PASSES=;SKIPPED_ARCHS=; \
+	MAKEFLAGS="$$MAKEFLAGS --no-print-directory"; \
+
+	for t in $(ARCHS); do \
+		A=$${t%%-*}; C=$${t#*-}; \
+	    [ $$A != $(XEN_TARGET_ARCH) ] || continue; \
+		if ! type "$${C}-gcc" >/dev/null 2>&1; then \
+	        echo " $${C}-gcc not found, skipping $${A}"; \
+			SKIPPED_ARCHS="$${SKIPPED_ARCHS} $${A}"; continue; \
+	    fi; \
+		if [ $${A} = $(XEN_TARGET_ARCH) ]; then C=$(CROSS_COMPILE); fi; \
+		make XEN_TARGET_ARCH="$${A}" CROSS_COMPILE=$$C- clean run-tests; \
+		PASSES="$${PASSES} $${A}"; \
+	done;\
+	echo "$@ successful for:$${PASSES} $(XEN_TARGET_ARCH)";\
+	[ -z "$${SKIPPED_ARCHS}" ] || echo "Skipped architectures:$${SKIPPED_ARCHS}"
+endif
+
+.PHONY: clean
+.NOTPARALLEL: clean
+clean:
+	$(RM) -- *.o $(TARGETS) $(DEPS_RM)
+
+.PHONY: distclean
+distclean: clean
+	$(RM) -- *~
+
+.PHONY: install
+install: all
+	$(INSTALL_DIR) $(DESTDIR)$(LIBEXEC)/tests
+	$(INSTALL_PROG) $(TARGETS) $(DESTDIR)$(LIBEXEC)/tests
+
+.PHONY: uninstall
+uninstall:
+	$(RM) -- $(patsubst %,$(DESTDIR)$(LIBEXEC)/tests/%,$(TARGETS))
+
+# CFLAGS for building the tests
+XEN_INCLUDE_ARCH := $(subst x86_64,x86,$(XEN_COMPILE_ARCH))
+CFLAGS += -D__XEN_TOOLS__
+CFLAGS += $(APPEND_CFLAGS)
+CFLAGS += -I$(XEN_ROOT)/xen/include
+CFLAGS += -I$(XEN_ROOT)/xen/arch/$(XEN_INCLUDE_ARCH)/include
+CFLAGS += $(CFLAGS_xeninclude)
+
+# Enable sanitizers to catch memory errors and undefined behavior in the code
+# for x86_64. Other architectures do not support -fstatic with it.
+ifeq ($(XEN_TARGET_ARCH),x86_64)
+CFLAGS += -fsanitize=address -fsanitize=undefined -fno-common
+endif
+
+# Build rules for the tests
+$(TARGETS): %: %.o $(LIB_OBJ)
+	$(CC) -o $@ $^ $(LDFLAGS) $(CPPFLAGS) $(CFLAGS) $(APPEND_CFLAGS)
+
+-include $(DEPS_INCLUDE)
diff --git a/tools/tests/alloc/README.rst b/tools/tests/alloc/README.rst
new file mode 100644
index 000000000000..f91587d7f4b2
--- /dev/null
+++ b/tools/tests/alloc/README.rst
@@ -0,0 +1,98 @@
+.. SPDX-License-Identifier: CC-BY-4.0
+
+Page Allocator Test Environment
+===============================
+
+The files in ``tools/tests/alloc`` provide a small, self-contained test
+environment for Xen's page allocator in ``xen/common/page_alloc.c``.
+
+Instead of reimplementing allocator logic in a model, the tests compile
+the real allocator code into ordinary host executables and exercise it
+inside a controlled environment with a synthetic Xen heap and domain
+state and direct visibility into the allocator's internal state.
+
+This approach is intended for test scenarios that are difficult to cover
+through system-level testing alone, such as:
+
+* rebuilding buddies after offlining subpages,
+* checking page-list and zone accounting after allocator operations,
+* verifying NUMA-aware allocator behaviour in synthetic topologies, and
+* reproducing edge cases with precise control over ``struct page_info``
+    state.
+
+What The Environment Provides
+-----------------------------
+
+The test environment is assembled from a few small components:
+
+* ``harness.h`` defines the common test harness, assertion helpers, and a
+    minimal set of Xen-compatible types and macros used by the allocator.
+
+* ``mock-page-list.h`` provides a lightweight page-list implementation
+    and the ``struct page_info`` layout needed by ``page_alloc.c``.
+
+* ``page-alloc-shim.h`` supplies the Xen definitions, stubs, and mock state
+    that the allocator expects when built inside the test environment.
+
+* ``page-alloc-wrapper.h`` includes the real ``xen/common/page_alloc.c``
+    directly, wraps selected allocator entry points, and adds logging that
+    makes allocator state transitions easier to follow.
+
+* ``libtest-page-alloc.h`` ties the pieces together and adds helpers for
+    common setup tasks such as resetting allocator state, preparing NUMA
+    nodes, creating synthetic buddies, and checking resulting heap state.
+
+The result is a test binary that executes real allocator code while keeping
+the surrounding test environment small, explicit, and easy to inspect.
+
+How Tests Work
+--------------
+
+Each test case starts from a clean allocator state. The library code resets
+the imported allocator globals, initialises the synthetic frame table,
+prepares the free lists and accounting state, and creates a minimal domain
+and NUMA configuration for the scenario.
+
+Tests then construct the required allocator state directly by manipulating
+``struct page_info`` entries in the synthetic frame table and by using the
+same allocator helpers that Xen uses at runtime, such as
+``free_heap_pages()``. This keeps test setup aligned with allocator
+behaviour instead of relying on an idealised model.
+
+After invoking the allocator operation under test, each test scenario checks
+the resulting state through assertion helpers. Typical checks include:
+
+* the content and order of free lists,
+* the contents of the offlined-page and broken-page lists,
+* per-zone and per-node accounting,
+* buddy order and alignment invariants, and
+* page-local state such as ``count_info`` and ``first_dirty``.
+
+Because the wrapper logs important allocator actions, test failures are
+usually accompanied by enough context to show which allocator transition
+broke.
+
+Running The Tests
+-----------------
+
+The ``Makefile`` automatically discovers all ``test-*.c`` files in this
+directory and builds one executable per source file.
+
+To build and run all allocator tests:
+
+.. code:: shell
+
+        make -C tools/tests/alloc clean all run
+
+To build and run a single test binary:
+
+.. code:: shell
+
+        make -C tools/tests/alloc clean all run TARGETS=test-reserve-offline-page
+
+The ``run`` target executes the built tests when they are runnable on the
+build host. If ``CC`` and ``HOSTCC`` differ, it will only attempt execution
+when ``binfmt`` support for the target architecture is available.
+
+For broader coverage, the ``run-archs`` target builds and runs the tests for
+multiple Xen target architectures when suitable cross-compilers are installed.
diff --git a/tools/tests/alloc/check-asserts.h b/tools/tests/alloc/check-asserts.h
new file mode 100644
index 000000000000..fe26de909683
--- /dev/null
+++ b/tools/tests/alloc/check-asserts.h
@@ -0,0 +1,225 @@
+/* SPDX-License-Identifier: GPL-2.0-only */
+/*
+ * Helpers for assertions used by unit tests.
+ * Copyright (C) 2026 Cloud Software Group
+ */
+
+#ifndef TOOLS_TESTS_ALLOC_CHECK_ASSERTS_H
+#define TOOLS_TESTS_ALLOC_CHECK_ASSERTS_H
+
+#include <stdarg.h>
+#include <stdbool.h>
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+#include <sys/utsname.h>
+
+static bool testcase_assert_expected_to_fail = false;
+static bool testcase_assert_verbose_assertions = true;
+static const char *testcase_assert_current_func = NULL;
+static int testcase_assert_verbose_indent_level = 0;
+static int testcase_assert_expected_failures = 0;
+static int testcase_assert_expected_failures_total = 0;
+static int testcase_assert_successful_assert_total = 0;
+static void (*testcase_init_func)(int);
+#define __used __attribute__((__used__))
+#define assert_failed_str "Assertion failed: "
+#define CHECK(condition, fmt, ...)                                    \
+        testcase_assert(condition, __FILE__, __LINE__, __func__, fmt, \
+                        ##__VA_ARGS__)
+#define ASSERT(x) \
+        testcase_assert(x, __FILE__, __LINE__, __func__, assert_failed_str #x)
+#define BUG_ON(x) \
+        testcase_assert(!(x), __FILE__, __LINE__, __func__, "BUG_ON: " #x)
+#define ASSERT_UNREACHABLE() assert(false)
+#define EXPECTED_TO_FAIL_BEGIN() (testcase_assert_expected_to_fail = true)
+#define EXPECTED_TO_FAIL_END(c) testcase_assert_check_expected_failures(c)
+
+static void __used testcase_assert_check_expected_failures(int expected)
+{
+    if ( testcase_assert_expected_failures != expected )
+    {
+        fprintf(stderr, "Expected %d assertion failures, got %d\n",
+                expected, testcase_assert_expected_failures);
+        abort();
+    }
+    testcase_assert_expected_to_fail = false;
+    testcase_assert_expected_failures = 0;
+    testcase_assert_expected_failures_total += expected;
+}
+
+static void __used setup_testcase_init_func(void (*init_fn)(int))
+{
+    testcase_init_func = init_fn;
+}
+
+__attribute__((format(printf, 5, 6)))
+static void testcase_assert(bool condition, const char *file, int line,
+                            const char *func, const char *fmt, ...)
+{
+    va_list ap;
+    const char *relpath = file;
+
+    while ( (file = strstr(relpath, "../")) )
+        relpath += 3;
+
+    va_start(ap, fmt);
+    if ( testcase_assert_expected_to_fail )
+    {
+        fprintf(stderr, "\n- Test assertion %s at %s:%d:\n  ",
+                condition ? "unexpectedly passed" : "failed as expected",
+                relpath, line);
+        vfprintf(stderr, fmt, ap);
+        fprintf(stderr, "\n");
+
+        if ( condition )
+            abort(); /* Unexpected pass, treat as test failure */
+        else
+            testcase_assert_expected_failures++; /* Count for the report. */
+        goto out;
+    }
+    if ( !condition )
+    {
+        fprintf(stderr, "Test assertion failed at %s:%d: ", relpath, line);
+        vfprintf(stderr, fmt, ap);
+        fprintf(stderr, "\n");
+        abort();
+    }
+    testcase_assert_successful_assert_total++;
+    if ( testcase_assert_verbose_assertions )
+    {
+        if ( strncmp(fmt, assert_failed_str, strlen(assert_failed_str)) == 0 )
+            fmt += strlen(assert_failed_str);
+
+        if ( strcmp(fmt, "ret == 0") == 0 )
+            goto out;
+
+        for ( int i = 0; i < testcase_assert_verbose_indent_level; i++ )
+            printf("  ");
+
+        printf("%s:%d: ", relpath, line);
+        if ( (testcase_assert_current_func == NULL ||
+              strcmp(testcase_assert_current_func, func)) &&
+             (strncmp(relpath, "test-", strlen("test-")) &&
+              strncmp(func, "test_", strlen("test_"))) )
+            printf("%s(): ", func);
+
+        if ( strncmp(fmt, "BUG_ON:", 7) )
+            printf("ASSERT(");
+
+        vprintf(fmt, ap);
+
+        if ( strncmp(fmt, "BUG_ON:", 7) )
+            printf(")");
+
+        printf("\n");
+    }
+out:
+    va_end(ap);
+}
+
+struct testcase {
+    const char *name;              /* test case name */
+    const char *tid;               /* Test ID */
+    int         intarg;            /* passed to the test case */
+    void        (*func)(int);      /* Test case function */
+    int         passed_asserts;    /* Number of ASSERTS that passed. */
+    int         expected_failures; /* Number of XFAILs */
+} testcases[40];
+struct testcase *current_testcase = testcases;
+
+static void print_testcase_report(struct testcase *tc)
+{
+    printf("- %-5s %-34s %2d: %3d assertions passed", tc->tid, tc->name,
+           tc->intarg, tc->passed_asserts);
+    if ( tc->expected_failures )
+        printf(" (%2d XFAIL)", tc->expected_failures);
+    printf("\n");
+}
+
+static void run_testcase(void (*case_func)(int), int int_arg, const char *tid,
+                         const char *case_name)
+{
+    printf("\nTest Case: %s...\n", case_name);
+    current_testcase->name = case_name;
+    current_testcase->func = case_func;
+    current_testcase->intarg = int_arg;
+    current_testcase->tid = tid;
+    current_testcase->passed_asserts = 0;
+    current_testcase->expected_failures = 0;
+
+    if ( testcase_init_func && int_arg >= 0 )
+        testcase_init_func(int_arg);
+
+    case_func(int_arg);
+
+    current_testcase->passed_asserts = testcase_assert_successful_assert_total;
+    current_testcase->expected_failures =
+        testcase_assert_expected_failures_total;
+
+    testcase_assert_successful_assert_total = 0;
+    testcase_assert_expected_failures_total = 0;
+
+    printf("\nResults:\n");
+    print_testcase_report(current_testcase);
+    current_testcase++;
+}
+#define RUN_TESTCASE(tid, func, arg) run_testcase(func, arg, #tid, #func)
+
+static int testcase_print_summary(const char *argv0)
+{
+    struct utsname uts;
+    int total_asserts = 0, expected_failures = 0;
+
+    fprintf(stderr, "\nTest Report:\n");
+
+    current_testcase = testcases;
+    for ( size_t i = 0; i < ARRAY_SIZE(testcases) && current_testcase->func;
+          i++ )
+    {
+        print_testcase_report(current_testcase);
+        total_asserts += current_testcase->passed_asserts;
+        expected_failures += current_testcase->expected_failures;
+        current_testcase++;
+    }
+    current_testcase->tid = "Total";
+    current_testcase->name = "";
+    current_testcase->passed_asserts = total_asserts;
+    current_testcase->expected_failures = expected_failures;
+    current_testcase->intarg = current_testcase - testcases;
+    print_testcase_report(current_testcase);
+
+    uname(&uts);
+    printf("\nTest suite %s for %s completed.\n", argv0, uts.machine);
+    return 0;
+}
+
+static const char *parse_args(int argc, char *argv[], const char *topic)
+{
+    const char *program_name = argv[0];
+    struct utsname uts;
+
+    if ( argc != 1 )
+    {
+        fprintf(stderr, "Usage: %s\n", argv[0]);
+        return NULL;
+    }
+    program_name = strrchr(program_name, '/');
+    if ( program_name )
+        program_name++;
+    else
+        program_name = argv[0];
+
+    uname(&uts);
+    printf("Suite : %s\n", program_name);
+    printf("Topic : %s\n", topic);
+    printf("Config: CONFIG_NUMA %s\n",
+           config_enabled(CONFIG_NUMA) ? "enabled" : "disabled");
+#ifndef __clang__
+    printf("Target: gcc %s/%s\n", __VERSION__, uts.machine);
+#else
+    printf("Target: %s/%s\n", __VERSION__, uts.machine);
+#endif
+    return program_name;
+}
+#endif
diff --git a/tools/tests/alloc/harness.h b/tools/tests/alloc/harness.h
new file mode 100644
index 000000000000..e5880cef25cc
--- /dev/null
+++ b/tools/tests/alloc/harness.h
@@ -0,0 +1,57 @@
+/* SPDX-License-Identifier: GPL-2.0-only */
+/*
+ * Common test harness for page allocation unit tests.
+ *
+ * Copyright (C) 2026 Cloud Software Group
+ */
+
+#ifndef TOOLS_TESTS_ALLOC_HARNESS_H
+#define TOOLS_TESTS_ALLOC_HARNESS_H
+
+#include <assert.h>
+#include <errno.h>
+#include <limits.h>
+#include <stdint.h>
+#include <stdio.h>
+
+/* Enable additional debug checks. */
+#define CONFIG_DEBUG
+
+/* Common macros compatible with the test environment. */
+#include "hypervisor-macros.h"
+
+/* Assertion helpers shared by the tests. */
+#include "check-asserts.h"
+
+/* Common Xen types used by the test environment. */
+typedef uint8_t u8;
+typedef uint64_t paddr_t;
+typedef unsigned long cpumask_t;
+typedef long long s_time_t;
+typedef bool spinlock_t;
+
+/*
+ * The original reserve_offlined_page() implementation triggers an
+ * AddressSanitizer (ASAN) stack-buffer-overflow report in both GCC and
+ * Clang when test_merge_tail_pair runs with ASAN enabled and verifies
+ * the heap free-list state.
+ *
+ * ASAN reports several list-pointer errors in the heap state, and one of
+ * them appears to trigger the stack-buffer-overflow detection on x86_64.
+ *
+ * As a temporary workaround, detect whether ASAN is enabled so the test
+ * can skip the ASSERT_LIST_EQUAL verification that triggers the report,
+ * while still running the rest of the case under ASAN.
+ */
+#if defined(__has_feature)
+/* Clang uses __has_feature to detect AddressSanitizer */
+# if __has_feature(address_sanitizer)
+#  define ASAN_ENABLED 1
+# endif
+/* GCC uses __SANITIZE_ADDRESS__ to detect AddressSanitizer */
+#elif defined(__SANITIZE_ADDRESS__)
+# define ASAN_ENABLED 1
+#else
+# define ASAN_ENABLED 0
+#endif
+#endif
diff --git a/tools/tests/alloc/hypervisor-macros.h b/tools/tests/alloc/hypervisor-macros.h
new file mode 100644
index 000000000000..be59d6dd7df5
--- /dev/null
+++ b/tools/tests/alloc/hypervisor-macros.h
@@ -0,0 +1,95 @@
+/* SPDX-License-Identifier: GPL-2.0-only */
+/*
+ * Common macros and definitions for building host-side unit tests
+ * for the Xen hypervisor.
+ *
+ * Copyright (C) 2026 Cloud Software Group
+ */
+
+#ifndef TOOLS_TESTS_ALLOC_HYPERVISOR_MACROS_H
+#define TOOLS_TESTS_ALLOC_HYPERVISOR_MACROS_H
+
+#include <stdarg.h>
+#include <stdbool.h>
+#include <stdio.h>
+#include <string.h>
+
+/*
+ * In Xen, STATIC_IF(x) and config_enabled(x) are defined in kconfig.h,
+ * which cannot be included here. Define the required subset locally.
+ */
+#define STATIC_IF(option)        static_if(option)
+#define static_if(value)         _static_if(__ARG_PLACEHOLDER_##value)
+#define _static_if(arg1_or_junk) ___config_enabled(arg1_or_junk static, )
+#define __ARG_PLACEHOLDER_1      0,
+#define config_enabled(cfg)      _config_enabled(cfg)
+#define _config_enabled(value)   __config_enabled(__ARG_PLACEHOLDER_##value)
+
+#define __config_enabled(arg1_or_junk) ___config_enabled(arg1_or_junk 1, 0)
+
+#define ___config_enabled(__ignored, val, ...) val
+
+/*
+ * Reuse the Xen-tools macros from common-macros.h. They are not
+ * necessarily identical to the hypervisor variants, but they are close
+ * enough for this test environment.
+ */
+#include <xen-tools/common-macros.h>
+
+/*
+ * Predefine the include guards for Xen headers whose hypervisor
+ * variants would otherwise conflict with definitions from
+ * common-macros.h and bitops.h.
+ */
+#define __XEN_CONST_H__
+#define __MACROS_H__
+
+/*
+ * Provide Xen hypervisor macros used by xen/common/page_alloc.c that
+ * common-macros.h does not supply, or redefine them where the test
+ * build must match hypervisor behavior.
+ */
+#define IS_ALIGNED(x, a) (!((x) & ((a) - 1)))
+
+/*
+ * Reuse the Xen-tools bit operations from bitops.h. They are not
+ * necessarily identical to the hypervisor versions, but they are close
+ * enough for this test environment.
+ */
+#include <xen-tools/bitops.h>
+
+/*
+ * After including Xen-tools bitops.h, redefine ffsl and flsl to match
+ * Xen hypervisor behavior. Here they return unsigned int, which matters
+ * for signed/unsigned conversion checks and type expectations. Also
+ * undefine conflicting macros from the Xen-tools headers.
+ */
+#undef BITS_PER_LONG
+#undef __LITTLE_ENDIAN
+#undef __BIG_ENDIAN
+#undef ffsl
+#define ffsl(x) ((unsigned int)__builtin_ffsl(x))
+#define flsl(x) ((unsigned int)((x) ? BITS_PER_LONG - __builtin_clzl(x) : 0))
+
+static bool testcase_assert_expected_to_fail;
+__attribute__((format(printf, 5, 6)))
+static void testcase_assert(bool condition, const char *file, int line,
+                            const char *func, const char *fmt, ...);
+#define BUG()                     assert(false)
+#define domain_crash(d)           ((void)(d))
+#define PRI_mfn                   "lu"
+#define PRI_stime                 "lld"
+#define printk                    printf
+#define dprintk(level, fmt, ...)  printk(fmt, ##__VA_ARGS__)
+#define gdprintk(level, fmt, ...) printk(fmt, ##__VA_ARGS__)
+#define gprintk(level, fmt, ...)  printk(fmt, ##__VA_ARGS__)
+#define panic(fmt, ...)                          \
+        do                                       \
+        {                                        \
+            fprintf(stderr, fmt, ##__VA_ARGS__); \
+            abort();                             \
+        } while ( 0 )
+#define __initdata
+#define __init        __used
+#define __initcall(f) static int __used (*f##_ptr)(void) = (f)
+#endif
diff --git a/tools/tests/alloc/libtest-page-alloc.h b/tools/tests/alloc/libtest-page-alloc.h
new file mode 100644
index 000000000000..2644c87e9c8e
--- /dev/null
+++ b/tools/tests/alloc/libtest-page-alloc.h
@@ -0,0 +1,145 @@
+/* SPDX-License-Identifier: GPL-2.0-only */
+/*
+ * Test framework for xen/common/page_alloc.c.
+ * Copyright (C) 2026 Cloud Software Group
+ */
+#ifndef TOOLS_TESTS_ALLOC_LIBTEST_PAGE_ALLOC_H
+#define TOOLS_TESTS_ALLOC_LIBTEST_PAGE_ALLOC_H
+
+#pragma GCC diagnostic error "-Wextra"
+#include "page-alloc-wrapper.h"
+static const unsigned int node = 0;
+static const unsigned int node0 = 0;
+static const unsigned int node1 = 1;
+static const unsigned int order0 = 0;
+static const unsigned int order1 = 1;
+static const unsigned int order2 = 2;
+
+static heap_by_zone_and_order_t test_heap_storage[MAX_NUMNODES];
+static unsigned long test_avail_storage[MAX_NUMNODES][NR_ZONES];
+struct domain *domain_list;
+
+static void init_numa_node_data(unsigned int start_mfn)
+{
+    (void)start_mfn;
+#ifdef CONFIG_NUMA
+    for ( unsigned int i = 0; i < NR_CPUS; i++ )
+        cpu_to_node[i] = i;
+
+    for ( unsigned int i = 0; i < MAX_NUMNODES; i++ )
+        node_to_cpumask[i] = (1UL << i);
+
+    for ( unsigned int i = 0; i < MAX_NUMNODES; i++ )
+    {
+        node_data[i].node_start_pfn = start_mfn + (i * 8);
+        node_data[i].node_present_pages = 8UL;
+        node_data[i].node_spanned_pages = 8UL;
+    }
+    memnode_shift = 3;
+    for ( unsigned int i = 0; i < 64; i++ )
+        memnodemap[i] = (nodeid_t)i;
+#endif
+}
+
+static void init_dummy_domains(void)
+{
+    nodemask_t dom_node_affinity;
+    struct domain *dom;
+    int dom_id = 1;
+
+    nodes_clear(dom_node_affinity);
+    node_set(node0, dom_node_affinity);
+    node_set(node1, dom_node_affinity);
+    test_current_vcpu.domain = &test_dummy_domain1;
+    domain_list = &test_dummy_domain1;
+    test_dummy_domain1.next_in_list = &test_dummy_domain2;
+
+    for_each_domain ( dom )
+    {
+        dom->node_affinity = dom_node_affinity;
+        dom->max_pages = MAX_PAGES;
+        dom->domain_id = dom_id++;
+    }
+}
+
+static void reset_page_alloc_state(int start_mfn)
+{
+    unsigned int zone;
+    unsigned int order;
+
+    memset(frame_table, 0, sizeof(frame_table));
+    memset(test_heap_storage, 0, sizeof(test_heap_storage));
+    memset(test_avail_storage, 0, sizeof(test_avail_storage));
+    memset(&test_dummy_domain1, 0, sizeof(test_dummy_domain1));
+    memset(&test_dummy_domain2, 0, sizeof(test_dummy_domain2));
+    memset(&test_current_vcpu, 0, sizeof(test_current_vcpu));
+    INIT_PAGE_LIST_HEAD(&page_offlined_list);
+    INIT_PAGE_LIST_HEAD(&page_broken_list);
+    INIT_PAGE_LIST_HEAD(&test_page_list);
+
+    init_numa_node_data(start_mfn);
+    for ( nodeid_t node = 0; node < MAX_NUMNODES; node++ )
+    {
+        _heap[node] = &test_heap_storage[node];
+        avail[node] = test_avail_storage[node];
+        node_avail_pages[node] = 0;
+        for ( zone = 0; zone < NR_ZONES; zone++ )
+            for ( order = 0; order <= MAX_ORDER; order++ )
+                INIT_PAGE_LIST_HEAD(&heap(node, zone, order));
+    }
+    total_avail_pages = 0;
+    outstanding_claims = 0;
+    first_valid_mfn = start_mfn;
+    max_page = sizeof(frame_table) / sizeof(frame_table[0]);
+    assert(first_valid_mfn < max_page);
+    init_dummy_domains();
+}
+
+static void __used init_page_alloc_tests(void)
+{
+    setup_testcase_init_func(reset_page_alloc_state);
+}
+
+static void init_test_page(struct page_info *page, unsigned int order,
+                           unsigned long state)
+{
+    mfn_t mfn = page_to_mfn(page);
+
+    if ( mfn < first_valid_mfn && mfn > 0 && mfn < max_page )
+        first_valid_mfn = mfn;
+
+    if ( mfn >= max_page && mfn < ARRAY_SIZE(frame_table) )
+        max_page = mfn + 1;
+
+    memset(page, 0, sizeof(*page));
+    page->v.free.order = order;
+    page->u.free.first_dirty = INVALID_DIRTY_IDX;
+    page->u.free.scrub_state = BUDDY_NOT_SCRUBBING;
+    page->count_info = state;
+}
+
+static size_t __used page_list_add_buddy(struct page_info *pages,
+                                         unsigned int order,
+                                         const char *caller_file,
+                                         const char *caller_func,
+                                         int caller_line)
+{
+    size_t i, num_pages = 1U << order;
+
+    init_test_page(&pages[0], order, PGC_state_inuse);
+    for ( i = 1; i < num_pages; i++ )
+        init_test_page(&pages[i], order0, PGC_state_inuse);
+    free_heap_pages(&pages[0], order, false);
+
+    if ( page_to_zone(&pages[0]) != page_to_zone(&pages[num_pages - 1]) )
+        testcase_assert(false, caller_file, caller_line, caller_func,
+                        "Buddy of order %u at MFN %lu crosses zones: "
+                        "start zone %u, end zone %u", order,
+                        page_to_mfn(&pages[0]),
+                        page_to_zone(&pages[0]),
+                        page_to_zone(&pages[num_pages - 1]));
+    return page_to_zone(&pages[0]);
+}
+#define test_page_list_add_buddy(pages, order) \
+        page_list_add_buddy(pages, order, __FILE__, __func__, __LINE__)
+#endif
diff --git a/tools/tests/alloc/mock-page-list.h b/tools/tests/alloc/mock-page-list.h
new file mode 100644
index 000000000000..d49f43f60933
--- /dev/null
+++ b/tools/tests/alloc/mock-page-list.h
@@ -0,0 +1,167 @@
+/* SPDX-License-Identifier: GPL-2.0-only */
+/*
+ * Mock page-list implementation for page allocator tests.
+ * Copyright (C) 2026 Cloud Software Group
+ */
+#ifndef TOOLS_TESTS_ALLOC_MOCK_PAGE_LIST_H
+#define TOOLS_TESTS_ALLOC_MOCK_PAGE_LIST_H
+
+#include <stdbool.h>
+#include <stddef.h>
+#include <stdint.h>
+
+#include "harness.h"
+
+#define __XEN_KCONFIG_H
+#undef __nonnull
+#undef offsetof
+#include <xen/config.h>
+#undef cf_check
+#define cf_check __used
+
+#define MAX_ORDER 20
+
+struct page_info {
+    unsigned long count_info;
+    union {
+        struct {
+            unsigned long type_info;
+        } inuse;
+        union {
+            struct {
+                unsigned int  first_dirty : MAX_ORDER + 1;
+#define INVALID_DIRTY_IDX ((1UL << (MAX_ORDER + 1)) - 1)
+                bool          need_tlbflush : 1;
+                unsigned long scrub_state : 2;
+#define BUDDY_NOT_SCRUBBING 0
+#define BUDDY_SCRUBBING     1
+#define BUDDY_SCRUB_ABORT   2
+            };
+            unsigned long val;
+        } free;
+    } u;
+    union {
+        struct {
+            unsigned int order;
+#define PFN_ORDER(pg) ((pg)->v.free.order)
+        } free;
+        unsigned long type_info;
+    } v;
+    uint32_t          tlbflush_timestamp;
+    struct domain    *owner;
+    struct page_info *list_next;
+    struct page_info *list_prev;
+};
+
+struct page_list_head {
+    struct page_info *head;
+    struct page_info *tail;
+    unsigned int      count;
+};
+static struct page_list_head test_page_list;
+typedef unsigned long mfn_t;
+
+#define PAGE_LIST_HEAD(name) struct page_list_head name = {NULL, NULL, 0}
+
+extern struct page_info frame_table[];
+#define page_to_mfn(pg)   ((mfn_t)((pg) - &frame_table[0]))
+#define mfn_to_page(mfn)  (&frame_table[(mfn)])
+#define mfn_valid(mfn)    (mfn >= first_valid_mfn && mfn < max_page)
+#define maddr_to_page(pa) (CHECK(false, "Not implemented"))
+
+static void test_page_list_init(struct page_list_head *list)
+{
+    list->head = NULL;
+    list->tail = NULL;
+    list->count = 0;
+}
+#define INIT_PAGE_LIST_HEAD(l)       test_page_list_init(l)
+#define page_list_empty(list)        ((list)->head == NULL)
+#define page_list_first(list)        ((list)->head)
+#define page_list_last(list)         ((list)->tail)
+#define page_list_remove_head(list)  test_page_list_del((list)->head, (list))
+#define page_to_list(d, pg)          (&test_page_list)
+#define page_list_add(pg, list)      test_page_list_add(pg, list)
+#define page_list_add_tail(pg, list) test_page_list_add_tail(pg, list)
+#define page_list_del(pg, list)      test_page_list_del(pg, list);
+#define page_list_for_each_safe(pos, tmp, list)        \
+        for ( (pos) = page_list_first(list),           \
+              (tmp) = (pos) ? (pos)->list_next : NULL; \
+              (pos) != NULL;                           \
+              (pos) = (tmp), (tmp) = (pos) ? (pos)->list_next : NULL )
+
+static void test_page_list_add_common(struct page_info *pg,
+                                      struct page_list_head *list,
+                                      bool at_tail)
+{
+    pg->list_next = NULL;
+    pg->list_prev = NULL;
+
+    if ( list->head == NULL )
+    {
+        list->head = pg;
+        list->tail = pg;
+    }
+    else if ( at_tail )
+    {
+        pg->list_prev = list->tail;
+        list->tail->list_next = pg;
+        list->tail = pg;
+    }
+    else
+    {
+        pg->list_next = list->head;
+        list->head->list_prev = pg;
+        list->head = pg;
+    }
+    list->count++;
+}
+
+#define test_page_list_add(pg, list) test_page_list_add_common(pg, list, false)
+#define test_page_list_add_tail(pg, list) \
+        test_page_list_add_common(pg, list, true)
+
+static struct page_info *test_page_list_del(struct page_info *pg,
+                                            struct page_list_head *list)
+{
+    if ( !pg )
+        return NULL;
+    if ( pg->list_prev )
+        pg->list_prev->list_next = pg->list_next;
+    else
+        list->head = pg->list_next;
+
+    if ( pg->list_next )
+        pg->list_next->list_prev = pg->list_prev;
+    else
+        list->tail = pg->list_prev;
+
+    pg->list_next = NULL;
+    pg->list_prev = NULL;
+
+    ASSERT(list->count > 0);
+    list->count--;
+    return pg;
+}
+
+#define PG_shift(idx)         (BITS_PER_LONG - (idx))
+#define PG_mask(x, idx)       (x##UL << PG_shift(idx))
+#define PGT_count_width       PG_shift(2)
+#define PGT_count_mask        ((1UL << PGT_count_width) - 1)
+#define PGC_allocated         PG_mask(1, 1)
+#define PGC_xen_heap          PG_mask(1, 2)
+#define _PGC_need_scrub       PG_shift(4)
+#define PGC_need_scrub        PG_mask(1, 4)
+#define _PGC_broken           PG_shift(7)
+#define PGC_broken            PG_mask(1, 7)
+#define PGC_state             PG_mask(3, 9)
+#define PGC_state_inuse       PG_mask(0, 9)
+#define PGC_state_offlining   PG_mask(1, 9)
+#define PGC_state_offlined    PG_mask(2, 9)
+#define PGC_state_free        PG_mask(3, 9)
+#define page_state_is(pg, st) (((pg)->count_info & PGC_state) == PGC_state_##st)
+#define PGC_count_width       PG_shift(9)
+#define PGC_count_mask        ((1UL << PGC_count_width) - 1)
+#define _PGC_extra            PG_shift(10)
+#define PGC_extra             PG_mask(1, 10)
+#endif
diff --git a/tools/tests/alloc/page-alloc-shim.h b/tools/tests/alloc/page-alloc-shim.h
new file mode 100644
index 000000000000..0e682327fe07
--- /dev/null
+++ b/tools/tests/alloc/page-alloc-shim.h
@@ -0,0 +1,411 @@
+/* SPDX-License-Identifier: GPL-2.0-only */
+/*
+ * Page allocator shim for xen/common/page_alloc.c.
+ *
+ * This shim provides the minimal Xen definitions that page_alloc.c needs
+ * in the unit-test environment.  It models a minimal subset of the Xen
+ * environment, such as domain and NUMA node management, that page_alloc.c
+ * interacts with, so that the allocator logic so the allocator behaves
+ * as it does in the hypervisor while giving direct visibility into the
+ * allocator state for verification in the tests.
+ *
+ * Copyright (C) 2026 Cloud Software Group
+ */
+#ifndef _TEST_ALLOC_PAGE_ALLOC_SHIM_
+#define _TEST_ALLOC_PAGE_ALLOC_SHIM_
+
+/*
+ * Guard against language servers and linters picking up this header in
+ * the wrong context.
+ *
+ * This header is only intended to be used in the test program for unit
+ * testing functions in xen/common/page_alloc.c, and test programs define
+ * TEST_USES_PAGE_ALLOC_SHIM to enable the definitions in this header.
+ */
+#ifndef TEST_USES_PAGE_ALLOC_SHIM
+#warning "This header is only for use in page_alloc.c unit tests."
+#else
+/*
+ * Inside the intended test context, provide mocks and stub definitions.
+ */
+
+/* Configure the included headers for the test context */
+#ifndef CONFIG_NR_CPUS
+#define CONFIG_NR_CPUS 64
+#endif
+
+#if defined(CONFIG_NUMA) && !defined(CONFIG_NR_NUMA_NODES)
+#define CONFIG_NR_NUMA_NODES 64
+#endif
+
+#define CONFIG_SCRUB_DEBUG
+
+/* Provide struct page_info and related Xen definitions */
+#include "mock-page-list.h"
+
+/* Include the common check_asserts library for test assertions */
+#include "check-asserts.h"
+
+/*
+ * We add the Xen headers to the include path so page_alloc.c can
+ * resolve its #include directives without having to replicate all
+ * headers as actual files in the test tree:
+ *
+ * We define the header guards of those files to prevent unwanted
+ * definitions from those headers that conflict with the test harness.
+ */
+#define XEN_SOFTIRQ_H
+#define XEN__XVMALLOC_H
+#define _LINUX_INIT_H
+#define _XEN_PARAM_H
+#define __LIB_H__ /* C runtime library, only for the hypervisor */
+#define __LINUX_NODEMASK_H
+#define __FLUSHTLB_H__
+#define __SCHED_H__
+#define __SPINLOCK_H__
+#define __TYPES_H__ /* Conflicts with the compiler-provided types */
+#define __VM_EVENT_H__
+#define __X86_PAGE_H__
+#define __XEN_CPUMASK_H
+#define __XEN_EVENT_H__
+#define __XEN_FRAME_NUM_H__
+#define __XEN_IRQ_H__
+#define __XEN_MM_H__
+#define __XEN_PDX_H__
+
+#include <xen/keyhandler.h>
+#include <xen/page-size.h>
+#include <public/xen.h>
+
+/* Include xen/numa.h with stubs and unused parameter warnings disabled */
+#define cpumask_clear_cpu(cpu, mask) ((void)(cpu), (void)(mask))
+#define mfn_to_pdx(mfn)              ((unsigned long)(mfn))
+#pragma GCC diagnostic push
+#ifndef CONFIG_NUMA
+#pragma GCC diagnostic ignored "-Wunused-parameter"
+#endif
+#include <xen/numa.h>
+#pragma GCC diagnostic pop
+
+/* Flexible definition to support 32- and 64-bit architectures */
+#undef PADDR_BITS
+#define PADDR_BITS              (BITS_PER_LONG - PAGE_SHIFT)
+#define pfn_to_paddr(pfn)       ((paddr_t)(pfn) << PAGE_SHIFT)
+#define paddr_to_pfn(pa)        ((unsigned long)((pa) >> PAGE_SHIFT))
+#define INVALID_MFN_INITIALIZER (~0UL)
+
+typedef unsigned long nodemask_t;
+
+/* struct domain for testing domain-specific page allocation and claims */
+struct domain {
+    spinlock_t     page_alloc_lock;
+    nodemask_t     node_affinity;
+    nodeid_t       last_alloc_node;
+    domid_t        domain_id;
+    unsigned int   tot_pages;
+    unsigned int   max_pages;
+    unsigned int   extra_pages;
+    unsigned int   global_claims;
+    unsigned int   node_claims;
+    unsigned int   claims[MAX_NUMNODES];
+    unsigned int   xenheap_pages;
+    bool           is_dying;
+    struct domain *next_in_list;
+};
+extern struct domain *domain_list;
+
+struct vcpu {
+    struct domain *domain;
+};
+
+/*
+ * Provide two domains for the test context, so that test helpers can call
+ * allocator functions that require domain context and verify behavior that
+ * depends on domain state, such as claims accounting and page allocation
+ * for specific domains.
+ */
+static struct domain test_dummy_domain1;
+static struct domain test_dummy_domain2;
+static struct domain __used *dom1 = &test_dummy_domain1;
+static struct domain __used *dom2 = &test_dummy_domain2;
+
+/* To provide a current vcpu/domain pair for code paths that inspect it. */
+static unsigned char test_dummy_storage[PAGE_SIZE];
+static struct vcpu test_current_vcpu;
+static struct vcpu *current = &test_current_vcpu;
+static cpumask_t cpu_online_map = ~0UL;
+
+#define for_each_domain(_d) \
+        for ( (_d) = domain_list; (_d) != NULL; (_d) = (_d)->next_in_list )
+#define for_each_online_node(i) for ( (i) = 0; (i) < MAX_NUMNODES; ++(i) )
+#define for_each_cpu(i, mask)   for ( (i) = 0; (i) < 1; ++(i) )
+
+/* dom_cow is a domain pointer used by the memory sharing code */
+#ifdef CONFIG_MEM_SHARING
+static struct domain *dom_cow;
+#else
+#define dom_cow NULL
+#endif
+
+/*
+ * Logging spinlock for the test context
+ */
+static spinlock_t *heap_lock_ptr;
+
+/* Helper function to track spinlock actions for additional context */
+static void print_spinlock(const char *action, spinlock_t *lock,
+                           const char *file, int line, const char *func)
+{
+    const char *relpath = file;
+
+    if ( !testcase_assert_verbose_assertions )
+        return;
+
+    while ( (file = strstr(relpath, "../")) )
+        relpath += 3;
+
+    for ( int i = 0; i < testcase_assert_verbose_indent_level; i++ )
+        printf("  ");
+
+    /* Print the path first:*/
+    if ( testcase_assert_current_func == NULL ||
+         strcmp(testcase_assert_current_func, func) != 0 )
+        printf("%s:%d: %s(): ", relpath, line, func);
+    else
+        printf("%s:%d: ", relpath, line);
+
+    if ( lock == heap_lock_ptr )
+        printf("heap_lock %s\n", action);
+    else if ( domain_list && lock == &test_dummy_domain1.page_alloc_lock )
+        printf("dom1->page_alloc_lock %s\n", action);
+    else if ( domain_list && lock == &test_dummy_domain2.page_alloc_lock )
+        printf("dom2->page_alloc_lock %s\n", action);
+    else
+        printf("unknown lock %p %s\n", (void *)lock, action);
+}
+
+/*
+ * If testcase_assert_verbose_assertions is enabled, the spinlock
+ * functions print the spinlock being acquired or released along with
+ * the file and line number of the assertion that triggered it.
+ * This can be helpful for debugging test failures and understanding
+ * the sequence of events leading up to the failure.
+ */
+#define spin_lock(l) \
+        (print_spinlock("acquired", l, __FILE__, __LINE__, __func__), (void)(l))
+#define spin_unlock(l) \
+        (print_spinlock("released", l, __FILE__, __LINE__, __func__), (void)(l))
+#define spin_lock_cb(l, cb, data) spin_lock(l)
+#define spin_lock_kick()          ((void)0)
+#define nrspin_lock(l)            spin_lock(l)
+#define nrspin_unlock(l)          spin_unlock(l)
+#define rspin_lock(l)             spin_lock(l)
+#define rspin_unlock(l)           spin_unlock(l)
+#define DEFINE_SPINLOCK(l)        spinlock_t l
+/*
+ * For the test context, we assume all locks are always held to avoid having
+ * to manage lock state in the test helpers.  This allows the test helpers
+ * to call allocator functions that require locks to be held without needing
+ * to acquire those locks, which simplifies the test code and focuses on
+ * exercising the allocator logic under test.
+ *
+ * Invariants that would normally be protected by locks must still be upheld
+ * by the test helpers, but the test helpers can assume they have exclusive
+ * access to the allocator state and do not need to worry about concurrency.
+ */
+#define spin_is_locked(l)         true
+#define rspin_is_locked(l)        true
+
+/* memflags: */
+#define _MEMF_no_refcount         0
+#define MEMF_no_refcount          (1U << _MEMF_no_refcount)
+#define _MEMF_populate_on_demand  1
+#define MEMF_populate_on_demand   (1U << _MEMF_populate_on_demand)
+#define _MEMF_keep_scrub          2
+#define MEMF_keep_scrub           (1U << _MEMF_keep_scrub)
+#define _MEMF_no_dma              3
+#define MEMF_no_dma               (1U << _MEMF_no_dma)
+#define _MEMF_exact_node          4
+#define MEMF_exact_node           (1U << _MEMF_exact_node)
+#define _MEMF_no_owner            5
+#define MEMF_no_owner             (1U << _MEMF_no_owner)
+#define _MEMF_no_tlbflush         6
+#define MEMF_no_tlbflush          (1U << _MEMF_no_tlbflush)
+#define _MEMF_no_icache_flush     7
+#define MEMF_no_icache_flush      (1U << _MEMF_no_icache_flush)
+#define _MEMF_no_scrub            8
+#define MEMF_no_scrub             (1U << _MEMF_no_scrub)
+#define _MEMF_node                16
+#define MEMF_node_mask            ((1U << (8 * sizeof(nodeid_t))) - 1)
+#define MEMF_node(n)              ((((n) + 1)&MEMF_node_mask) << _MEMF_node)
+#define MEMF_get_node(f)          ((((f) >> _MEMF_node) - 1)&MEMF_node_mask)
+#define _MEMF_bits                24
+#define MEMF_bits(n)              ((n) << _MEMF_bits)
+
+#define string_param(name, var)
+#define custom_param(name, fn)
+#define size_param(name, var)
+#define boolean_param(name, func)
+#define integer_param(name, var)
+#define ACCESS_ONCE(x) (x)
+#define cmpxchg(ptr, oldv, newv) \
+        ({                       \
+             *(ptr) = (newv);    \
+             (oldv);             \
+         })
+
+#define is_xen_heap_page(pg)          false
+#define page_to_virt(pg)              ((void *)(pg))
+#define virt_to_page(v)               ((struct page_info *)(v))
+#define mfn_to_virt(mfn)              ((void *)&test_dummy_storage)
+#define __mfn_to_virt(mfn)            mfn_to_virt(mfn)
+#define _mfn(x)                       ((mfn_t)(x))
+#define mfn_x(x)                      ((unsigned long)(x))
+#define mfn_add(mfn, nr)              ((mfn) + (nr))
+#define mfn_min(a, b)                 ((a) < (b) ? (a) : (b))
+
+/*
+ * NUMA stubs for unit testing NUMA-aware page allocator logic.
+ *
+ * nodemask_test() and node_set() implement real bit operations so that
+ * domain_install_claim_set() can correctly detect duplicate node entries
+ * in a claim set. mfn_to_pdx() is defined before xen/numa.h is included.
+ */
+
+static nodemask_t node_online_map = ~0UL;
+#define num_online_nodes()            MAX_NUMNODES
+#define node_online(node)             ((node) < MAX_NUMNODES)
+#define nodes_intersects(a, b)        ((a) & (b))
+#define nodes_and(dst, a, b)          ((dst) = (a) & (b))
+#define nodes_andnot(dst, a, b)       ((dst) = (a) & ~(b))
+#define nodes_clear(dst)              ((dst) = 0)
+#define nodemask_test(node, mask)     ((*(mask) >> (node)) & 1UL)
+#define node_set(node, mask)          ((mask) |= (1UL << (node)))
+#define node_clear(node, mask)        ((void)(mask))
+#define node_test_and_set(node, mask) false
+#define first_node(mask)              0U
+#define next_node(node, mask)         MAX_NUMNODES
+#define cycle_node(node, mask)        0U
+
+#ifdef CONFIG_NUMA
+#define __node_distance(a, b) 0
+nodeid_t cpu_to_node[NR_CPUS];
+cpumask_t node_to_cpumask[MAX_NUMNODES];
+struct node_data node_data[MAX_NUMNODES];
+unsigned int memnode_shift;
+
+static typeof(*memnodemap) _memnodemap[64];
+nodeid_t *memnodemap = _memnodemap;
+unsigned long memnodemapsize = sizeof(_memnodemap);
+#endif /* CONFIG_NUMA */
+
+/*
+ * Stub definitions for Xen functions and macros used by page_alloc.c,
+ * sufficient to support the test scenarios in tools/tests/alloc.
+ *
+ * These are not intended to be complete or accurate for general use
+ * in other test contexts or as a general-purpose shim for page_alloc.c.
+ */
+#define rcu_lock_domain(id)               (&test_dummy_domain1)
+#define rcu_lock_domain_by_any_id(id)     (&test_dummy_domain1)
+#define NOW()                             0LL
+#define SYS_STATE_active                  1
+#define system_state                      0
+#define cpu_online(cpu)                   ((cpu) == 0)
+#define smp_processor_id()                0U
+#define smp_wmb()                         ((void)0)
+#define cpumask_empty(mask)               true
+#define cpumask_clear(mask)               ((void)(mask))
+#define cpumask_and(dst, a, b)            ((void)(dst), (void)(a), (void)(b))
+#define cpumask_or(dst, a, b)             ((void)(dst), (void)(a), (void)(b))
+#define cpumask_copy(dst, src)            ((void)(dst), (void)(src))
+#define cpumask_first(mask)               0U
+#define cpumask_intersects(a, b)          false
+#define cpumask_weight(mask)              1
+#define __cpumask_set_cpu(cpu, mask)      ((void)(cpu), (void)(mask))
+#define page_get_owner(pg)                ((pg)->owner)
+#define page_set_owner(pg, d)             ((pg)->owner = (d))
+#define page_get_owner_and_reference(pg)  ((pg)->owner)
+#define page_set_tlbflush_timestamp(pg)   ((pg)->tlbflush_timestamp = 0)
+#define set_gpfn_from_mfn(mfn, gpfn)      ((void)0)
+#define page_is_offlinable(mfn)           true
+#define is_xen_fixed_mfn(mfn)             false
+#define filtered_flush_tlb_mask(ts)       ((void)(ts))
+#define accumulate_tlbflush(need, pg, ts) ((void)(need), (void)(pg), (void)(ts))
+#define flush_page_to_ram(mfn, icache)    ((void)(mfn), (void)(icache))
+#define scrub_page_hot(ptr)               clear_page_hot(ptr)
+#define scrub_page_cold(ptr)              clear_page_cold(ptr)
+#define send_global_virq(virq)            ((void)(virq))
+#define softirq_pending(cpu)              false
+#define process_pending_softirqs()        ((void)0)
+#define on_selected_cpus(msk, f, data, w) ((void)0)
+#define cpu_relax()                       ((void)0)
+#define xmalloc(type)                     calloc(1, sizeof(type))
+#define xmalloc_array(type, nr)           calloc((nr), sizeof(type))
+#define xvzalloc_array(type, nr)          calloc((nr), sizeof(type))
+#define xvmalloc_array(type, nr)          calloc((nr), sizeof(type))
+#define get_order_from_pages(nr)          0U
+#define get_order_from_bytes(bytes)       0U
+#define arch_mfns_in_directmap(mfn, nr)   true
+#define maddr_to_mfn(pa)                  ((mfn_t)paddr_to_pfn(pa))
+
+#define ASSERT_ALLOC_CONTEXT()              ((void)0)
+#define arch_free_heap_page(d, pg)          ((void)(d), (void)(pg))
+#define get_knownalive_domain(d)            ((void)(d))
+#define domain_clamp_alloc_bitsize(d, bits) (bits)
+#define mem_paging_enabled(d)               false
+#define put_domain(d)                       ((void)(d))
+#define clear_page_hot(ptr)                 memset((ptr), 0, PAGE_SIZE)
+#define clear_page_cold(ptr)                memset((ptr), 0, PAGE_SIZE)
+#define unmap_domain_page(ptr)              ((void)(ptr))
+#define put_page(pg)                        ((void)(pg))
+
+void *alloc_xenheap_pages(unsigned int order, unsigned int memflags);
+void  init_domheap_pages(paddr_t ps, paddr_t pe);
+struct page_info *alloc_domheap_pages(struct domain *d, unsigned int order,
+                                      unsigned int memflags);
+
+/* Additional stubs for test support */
+
+unsigned int arch_get_dma_bitsize(void)
+{
+    return 32U;
+}
+
+/* Return number of pages currently posessed by the domain */
+static unsigned int domain_tot_pages(const struct domain *d)
+{
+    assert(d->extra_pages <= d->tot_pages);
+    return d->tot_pages - d->extra_pages;
+}
+
+/* LLC (Last Level Cache) coloring support stubs */
+#define llc_coloring_enabled false
+unsigned int get_max_nr_llc_colors(void)
+{
+    return 1U;
+}
+unsigned int page_to_llc_color(const struct page_info *pg)
+{
+    (void)pg;
+    return 0U;
+}
+
+#define parse_bool(s, e) (-1) /* Not parsed, use the default */
+
+void __init register_keyhandler(unsigned char key, keyhandler_fn_t *fn,
+                                const char *desc, bool diagnostic)
+{
+    (void)key;
+    (void)fn;
+    (void)desc;
+    (void)diagnostic;
+}
+
+unsigned long simple_strtoul(const char *cp, const char **endp,
+                             unsigned int base)
+{
+    return strtoul(cp, (char **)endp, base);
+}
+#endif
+#endif
diff --git a/tools/tests/alloc/page-alloc-wrapper.h b/tools/tests/alloc/page-alloc-wrapper.h
new file mode 100644
index 000000000000..5f595656f099
--- /dev/null
+++ b/tools/tests/alloc/page-alloc-wrapper.h
@@ -0,0 +1,64 @@
+/* SPDX-License-Identifier: GPL-2.0-only */
+/*
+ * Wrapper around xen/common/page_alloc.c for the allocator test framework.
+ *
+ * The test framework includes the real page_alloc.c directly in its
+ * translation unit, together with mocks for the Xen types and functions it
+ * uses and helper code for NUMA heap initialisation and heap-state checks.
+ *
+ * This file provides the definitions needed for that setup. It also wraps
+ * selected page_alloc.c entry points, such as mark_page_offline() and
+ * offline_page(), so test scenarios can log allocator actions and resulting
+ * state during execution.
+ *
+ * Copyright (C) 2026 Cloud Software Group
+ */
+#ifndef TOOLS_TESTS_ALLOC_PAGE_ALLOC_WRAPPER_H
+#define TOOLS_TESTS_ALLOC_PAGE_ALLOC_WRAPPER_H
+
+#define TEST_USES_PAGE_ALLOC_SHIM
+#include "page-alloc-shim.h"
+
+/* Include the real page_alloc.c for testing */
+
+#pragma GCC diagnostic push
+/* TODO: We should fix the remaining sign-compare warnings in page_alloc.c */
+#pragma GCC diagnostic ignored "-Wsign-compare"
+#pragma GCC diagnostic ignored "-Wunused-parameter"
+/*
+ * Instrumenting the BUG() macro asserting to hit it means it is no longer
+ * noreturn, and a function expects it to be noreturn, so disable this warning
+ */
+#pragma GCC diagnostic ignored "-Wreturn-type"
+#include "../../xen/common/page_alloc.c"
+#pragma GCC diagnostic pop
+
+/* Allow the logging spinlock mocks to identify the allocator heap lock. */
+static spinlock_t *heap_lock_ptr = &heap_lock;
+
+/* Backing storage for the synthetic allocator state used by the tests. */
+#ifndef PAGES_PER_ZONE
+#define PAGES_PER_ZONE 8
+#endif
+
+#ifndef MAX_PAGES
+#define MAX_PAGES (MAX_NUMNODES * NR_ZONES * PAGES_PER_ZONE)
+#endif
+
+/*
+ * The synthetic frame table backs the page_info entries used by the tests.
+ * It is indexed by MFN so helper code and the imported allocator can
+ * translate directly between MFNs and page_info pointers.
+ */
+struct page_info frame_table[MAX_PAGES];
+
+/* Convenience pointer used by test scenarios. */
+static struct page_info *test_pages = frame_table;
+
+#define TOTAL_CLAIMS ((unsigned long)outstanding_claims)
+#define FREE_PAGES \
+        avail_heap_pages(MEMZONE_XEN + 1, NR_ZONES - 1, -1)
+
+#define DOM_GLOBAL_CLAIMS(d)  ((d)->global_claims)
+#define DOM_NODE_CLAIMS(d, n) ((d)->claims[n])
+#endif
-- 
2.39.5



From xen-devel-bounces@lists.xenproject.org Mon Apr 20 13:24:58 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 20 Apr 2026 13:24:58 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1285848.1567059 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wEocT-0005nl-87; Mon, 20 Apr 2026 13:24:57 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1285848.1567059; Mon, 20 Apr 2026 13: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 1wEocT-0005ne-5K; Mon, 20 Apr 2026 13:24:57 +0000
Received: by outflank-mailman (input) for mailman id 1285848;
 Mon, 20 Apr 2026 13:24:56 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <sashal@kernel.org>) id 1wEocS-0005nP-Cq
 for xen-devel@lists.xenproject.org; Mon, 20 Apr 2026 13:24:56 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wEocQ-008KcT-83
 for xen-devel@lists.xenproject.org; Mon, 20 Apr 2026 15:24:55 +0200
Received: from [10.42.69.11] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <sashal@kernel.org>)
 id 69e6291e-2eae-0a2a0a5409dd-0a2a450b8198-30
 for <xen-devel@lists.xenproject.org>; Mon, 20 Apr 2026 15:24:55 +0200
Received: from [172.234.252.31] (helo=sea.source.kernel.org)
 by tlsNG-42698a.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.1)
 (envelope-from <sashal@kernel.org>)
 id 69e62926-212f-0a2a450b0019-aceafc1f890c-3
 for <xen-devel@lists.xenproject.org>; Mon, 20 Apr 2026 15:24:55 +0200
Received: from smtp.kernel.org (transwarp.subspace.kernel.org [100.75.92.58])
 by sea.source.kernel.org (Postfix) with ESMTP id 4E84D43DDE;
 Mon, 20 Apr 2026 13:24:53 +0000 (UTC)
Received: by smtp.kernel.org (Postfix) with ESMTPSA id 25315C19425;
 Mon, 20 Apr 2026 13:24: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=k20201202 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/simple; d=kernel.org;
	s=k20201202; t=1776691493;
	bh=lk6iIm7LzLgEvSiocn/nJudNBxNOAcXBoMivMYFfH/Y=;
	h=From:To:Cc:Subject:Date:In-Reply-To:References:From;
	b=udSRzyKvaZpUpHacO3h3I+I8NDvZ5eQUUQOl9Rcl+PACvuF6XhJ+9SOkqn2+FNs35
	 Wmk95v1kWD5ZqVgIOg9X0Pv5nw6GkKpREKNnT68WFd8SVelwC+Pvi5W+NcdpQlCzah
	 SgD4IwB5Ow4qnMbnb49wRiESSvhSfXjfQxSu50i1IjglijpGuUQkI/G7doikM7YzE8
	 ZnboB6kzFbKVk4zswFSnoRT/xtT42G7NSsWn/Vb5PrEEqezjh5dpkEBNPi9wbvliCs
	 QuwJ24v0wIq64TC6tx6WIqHjjrxBvU0BgXYrBrzqoBz6xTCJZC8T6iMtbRKMwL1KGl
	 158HyljEVEvGA==
From: Sasha Levin <sashal@kernel.org>
To: patches@lists.linux.dev,
	stable@vger.kernel.org
Cc: Pengpeng Hou <pengpeng@iscas.ac.cn>,
	Stefano Stabellini <sstabellini@kernel.org>,
	Juergen Gross <jgross@suse.com>,
	Sasha Levin <sashal@kernel.org>,
	linux@armlinux.org.uk,
	xen-devel@lists.xenproject.org,
	linux-arm-kernel@lists.infradead.org,
	linux-kernel@vger.kernel.org
Subject: [PATCH AUTOSEL 7.0-5.10] ARM: xen: validate hypervisor compatible before parsing its version
Date: Mon, 20 Apr 2026 09:17:36 -0400
Message-ID: <20260420132314.1023554-62-sashal@kernel.org>
X-Mailer: git-send-email 2.53.0
In-Reply-To: <20260420132314.1023554-1-sashal@kernel.org>
References: <20260420132314.1023554-1-sashal@kernel.org>
MIME-Version: 1.0
X-stable: review
X-Patchwork-Hint: Ignore
X-stable-base: Linux 7.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
X-purgate-ID: tlsNG-42698a/1776691495-7F979F3B-C1AEF78A/0/0
X-purgate-type: clean
X-purgate-size: 14062

From: Pengpeng Hou <pengpeng@iscas.ac.cn>

[ Upstream commit f45ab27774aadeee28f093a9f074892e9bebb586 ]

fdt_find_hyper_node() reads the raw compatible property and then derives
hyper_node.version from a prefix match before later printing it with %s.
Flat DT properties are external boot input, and this path does not prove
that the first compatible entry is NUL-terminated within the returned
property length.

Keep the existing flat-DT lookup path, but verify that the first
compatible entry terminates within the returned property length before
deriving the version suffix from it.

Signed-off-by: Pengpeng Hou <pengpeng@iscas.ac.cn>
Reviewed-by: Stefano Stabellini <sstabellini@kernel.org>
Signed-off-by: Juergen Gross <jgross@suse.com>
Message-ID: <20260405094005.5-arm-xen-v2-pengpeng@iscas.ac.cn>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---

LLM Generated explanations, may be completely bogus:

Now I have all the information needed. Here is my complete analysis:

---

## PHASE 1: COMMIT MESSAGE FORENSICS

### Step 1.1: Subject Line
- **Subsystem:** ARM: xen
- **Action verb:** "validate" — implies adding missing input validation,
  strongly suggestive of a bug fix
- **Summary:** Validate the hypervisor compatible string before parsing
  the version suffix from it

### Step 1.2: Tags
- **Signed-off-by:** Pengpeng Hou (author), Juergen Gross (XEN
  HYPERVISOR INTERFACE maintainer — committer)
- **Reviewed-by:** Stefano Stabellini (XEN HYPERVISOR ARM maintainer)
- **Message-ID:** 20260405094005.5-arm-xen-v2-pengpeng@iscas.ac.cn
  (indicates v2 of patch)
- No Fixes: tag (expected for review candidates). No Cc: stable. No
  Reported-by.
- **Notable:** Both Xen ARM and Xen Interface maintainers endorsed this
  patch.

### Step 1.3: Commit Body
The commit explains:
- `fdt_find_hyper_node()` reads a raw `compatible` property from the
  flat device tree
- It derives `hyper_node.version` via a prefix match
- The version is later printed with `%s`
- FDT properties are **external boot input** — the code doesn't verify
  that the first compatible entry is NUL-terminated within the returned
  property length
- The fix adds validation of NUL-termination before deriving the version
  suffix

**Bug:** Potential buffer over-read and NULL pointer dereference from
unvalidated external input.
**Symptom:** Out-of-bounds read when printing version string, or crash
if property is absent.

### Step 1.4: Hidden Bug Fix Detection
This is explicitly framed as input validation hardening. "Validate"
clearly indicates fixing a missing safety check. This is a real bug fix.

---

## PHASE 2: DIFF ANALYSIS

### Step 2.1: Inventory
- **File:** `arch/arm/xen/enlighten.c` — single file
- **Function:** `fdt_find_hyper_node()` — single function
- **Changes:** ~6 lines modified (net: +4/-2 meaningful lines)
- **Scope:** Single-file surgical fix

### Step 2.2: Code Flow Change
**Before:**
```c
const void *s = NULL;
int len;
// ...
s = of_get_flat_dt_prop(node, "compatible", &len);
if (strlen(hyper_node.prefix) + 3  < len &&
    !strncmp(hyper_node.prefix, s, strlen(hyper_node.prefix)))
    hyper_node.version = s + strlen(hyper_node.prefix);
```

**After:**
```c
const char *s = NULL;
int len;
size_t prefix_len = strlen(hyper_node.prefix);
// ...
s = of_get_flat_dt_prop(node, "compatible", &len);
if (s && len > 0 && strnlen(s, len) < len &&
    len > prefix_len + 3 &&
    !strncmp(hyper_node.prefix, s, prefix_len))
    hyper_node.version = s + prefix_len;
```

### Step 2.3: Bug Mechanism
Two bugs fixed:

**Bug 1 — NULL pointer dereference:** If `of_get_flat_dt_prop()` returns
NULL (property absent), `len` is set to a negative error code. The old
comparison `strlen(hyper_node.prefix) + 3 < len` compares `size_t`
(unsigned) with `int`. Due to C implicit conversion, the negative `len`
becomes a huge unsigned value, making the condition TRUE. Then
`strncmp(hyper_node.prefix, NULL, ...)` is called → undefined behavior /
crash.

**Bug 2 — Buffer over-read:** If the compatible property exists but its
first string entry lacks NUL-termination within the property length,
`hyper_node.version` points into unterminated data. Later, `pr_info("Xen
%s support found\n", hyper_node.version)` at line 268 reads beyond
property bounds → information leak or crash.

The fix adds: (1) NULL check `s &&`, (2) positive length check `len >
0`, (3) NUL-termination check `strnlen(s, len) < len`, and (4) proper
size comparison `len > prefix_len + 3` with correct types.

### Step 2.4: Fix Quality
- Obviously correct: adds standard defensive checks
- Minimal/surgical: only touches the parsing condition
- No regression risk: only adds validation; the happy path is identical
- Clean type change from `const void *` to `const char *` is appropriate

---

## PHASE 3: GIT HISTORY

### Step 3.1: Blame
The buggy code was introduced in commit `9b08aaa3199a4d` ("ARM: XEN:
Move xen_early_init() before efi_init()") by Shannon Zhao, first
appearing in **v4.8-rc1** (2016). This code has been present in the
kernel for ~10 years and exists in ALL current stable trees.

### Step 3.2: Fixes Tag
No Fixes: tag present (expected). The correct Fixes target would be
`9b08aaa3199a4d`.

### Step 3.3: File History
The `fdt_find_hyper_node()` function has not been modified since its
introduction in 2016. Only unrelated parts of `enlighten.c` changed
(treewide cleanups, etc.). No prerequisite commits needed.

### Step 3.4: Author
Pengpeng Hou appears to contribute security/validation fixes across
multiple subsystems (nfc, net, tracing, bluetooth). The patch was
reviewed by the subsystem maintainer (Stefano Stabellini) and committed
by the Xen interface maintainer (Juergen Gross).

### Step 3.5: Dependencies
None. The fix is entirely self-contained. The code structure in stable
trees is identical to mainline for this function.

---

## PHASE 4: MAILING LIST

Lore was blocked by anti-bot measures. However, the Message-ID indicates
this is v2 of the patch, suggesting it went through at least one round
of review. The Reviewed-by from the ARM Xen maintainer and SOB from the
Xen interface maintainer confirm it was properly reviewed through the
standard process.

---

## PHASE 5: CODE SEMANTIC ANALYSIS

### Step 5.1: Functions Modified
Only `fdt_find_hyper_node()` is modified.

### Step 5.2: Callers
`fdt_find_hyper_node()` is called from `xen_early_init()` (line 257) via
`of_scan_flat_dt()`. This is an `__init` function called very early
during boot on ARM Xen guests. After the function runs,
`hyper_node.version` is used in `pr_info()` at line 268.

### Step 5.3/5.4: Call Chain
Boot path: `xen_early_init()` → `of_scan_flat_dt(fdt_find_hyper_node,
NULL)` → flat DT scan callback invoked for each node. The data source is
the FDT blob — external boot input provided by the
hypervisor/bootloader.

### Step 5.5: Similar Patterns
`of_get_flat_dt_prop()` is used throughout `drivers/of/fdt.c`. Other
callers typically handle the NULL case (e.g., `if (p != NULL && l > 0)`
at line 1115). The buggy Xen code was an outlier that skipped this
validation.

---

## PHASE 6: STABLE TREE ANALYSIS

### Step 6.1: Buggy Code in Stable
The buggy code was introduced in v4.8 and has NOT been modified since.
It exists in all active stable trees (5.10.y, 5.15.y, 6.1.y, 6.6.y,
6.12.y). Only tree-wide mechanical changes (kmalloc_obj, sys-off
handler) touched this file, none affecting the `fdt_find_hyper_node()`
function.

### Step 6.2: Backport Complications
The patch should apply cleanly to all stable trees. The function has
been untouched since 2016.

### Step 6.3: Related Fixes
No other fix for this specific issue exists in any stable tree.

---

## PHASE 7: SUBSYSTEM AND MAINTAINER CONTEXT

- **Subsystem:** arch/arm/xen — ARM Xen hypervisor support
- **Criticality:** IMPORTANT — affects all ARM systems running as Xen
  guests
- **Maintainer endorsement:** Both the ARM Xen maintainer (Stefano
  Stabellini, Reviewed-by) and Xen Interface maintainer (Juergen Gross,
  committed) approved this fix

---

## PHASE 8: IMPACT AND RISK ASSESSMENT

### Step 8.1: Affected Users
ARM Xen guest users. While not universal, this is a well-defined and
active user population (cloud VMs, embedded Xen deployments).

### Step 8.2: Trigger Conditions
- Bug 1 (NULL deref): hypervisor DT node exists but lacks "compatible"
  property — unusual but possible with malformed DT
- Bug 2 (over-read): hypervisor DT compatible property not NUL-
  terminated — possible with malicious/corrupt FDT
- Trigger is boot-time only, from external input

### Step 8.3: Failure Severity
- NULL pointer dereference → kernel crash during early boot → CRITICAL
- Buffer over-read → information leak or crash → HIGH (potential
  security issue)

### Step 8.4: Risk-Benefit
- **Benefit:** HIGH — prevents potential crash or info leak from
  external input during boot on ARM Xen guests
- **Risk:** VERY LOW — 4-5 lines of pure input validation added to a
  single condition; happy path unchanged
- **Ratio:** Strongly favorable

---

## PHASE 9: FINAL SYNTHESIS

### Step 9.1: Evidence Summary
**FOR backporting:**
- Fixes two real bugs: NULL pointer dereference and buffer over-read
  from external input
- Surgical fix: ~5 lines in one function, one file
- Reviewed and committed by both Xen subsystem maintainers
- Buggy code present since v4.8 (2016) — affects all stable trees
- Zero regression risk — only adds validation, happy path unchanged
- Will apply cleanly to all stable trees
- External input validation is security-relevant

**AGAINST backporting:**
- No user report or syzbot trigger (hardening/proactive fix)
- Boot-time only, ARM Xen specific (narrower impact than core kernel)

### Step 9.2: Stable Rules Checklist
1. Obviously correct and tested? **YES** — standard NULL/bounds/NUL
   checks, reviewed by maintainer
2. Fixes a real bug? **YES** — NULL deref and buffer over-read from
   external input
3. Important issue? **YES** — potential crash (NULL deref) and info leak
   (over-read)
4. Small and contained? **YES** — ~5 lines in one function
5. No new features or APIs? **YES** — pure validation
6. Can apply to stable? **YES** — function unchanged since v4.8

### Step 9.3: Exception Categories
Not applicable (not a device ID, quirk, or DT addition — this is a
standard bug fix).

### Step 9.4: Decision
The fix prevents both a NULL pointer dereference and a buffer over-read
on external boot input in ARM Xen guests. It is minimal, obviously
correct, endorsed by both relevant subsystem maintainers, and applies
cleanly to all stable trees. The benefit clearly outweighs the near-zero
risk.

---

## Verification

- [Phase 1] Parsed tags: Reviewed-by from Stefano Stabellini (ARM Xen
  maintainer), SOB from Juergen Gross (Xen Interface maintainer)
- [Phase 2] Diff analysis: ~5 lines changed in single condition in
  `fdt_find_hyper_node()`, adds NULL check, len > 0 check, strnlen NUL-
  termination check
- [Phase 2] Verified `of_get_flat_dt_prop()` returns `const void *` and
  can return NULL (confirmed in `include/linux/of_fdt.h` line 56 and
  `drivers/of/fdt.c` line 622-626)
- [Phase 2] Verified type promotion bug: `strlen()` returns `size_t`
  (unsigned), `len` is `int` — negative len promotes to huge unsigned,
  making condition TRUE with NULL `s`
- [Phase 2] Verified `hyper_node.version` used with `%s` at line 268 in
  `pr_info()` — confirms over-read risk
- [Phase 3] git blame: buggy code introduced in commit `9b08aaa3199a4d`
  (Shannon Zhao, 2016), first in v4.8-rc1
- [Phase 3] git describe: confirmed `9b08aaa3199a4d` is in
  v4.8-rc1~141^2~36
- [Phase 3] git log v5.10.. / v6.1.. / v6.6..: confirmed function
  unchanged in all stable trees (only tree-wide mechanical changes to
  file)
- [Phase 5] Traced caller: `xen_early_init()` →
  `of_scan_flat_dt(fdt_find_hyper_node)` — boot-time path
- [Phase 5] Verified other callers of `of_get_flat_dt_prop` typically
  check for NULL (e.g., fdt.c line 1114-1115)
- [Phase 6] Code exists in all active stable trees (5.10+), function
  unchanged
- [Phase 7] MAINTAINERS confirms Stefano Stabellini maintains
  arch/arm/xen/ and Juergen Gross maintains Xen interface
- [Phase 8] Failure mode: NULL deref → crash at boot; over-read → info
  leak/crash. Severity: CRITICAL/HIGH
- UNVERIFIED: Could not access lore.kernel.org discussion due to anti-
  bot protection. Does not affect decision since maintainer review is
  confirmed via tags.

**YES**

 arch/arm/xen/enlighten.c | 10 ++++++----
 1 file changed, 6 insertions(+), 4 deletions(-)

diff --git a/arch/arm/xen/enlighten.c b/arch/arm/xen/enlighten.c
index 4feed2c2498dd..25a0ce3b4584a 100644
--- a/arch/arm/xen/enlighten.c
+++ b/arch/arm/xen/enlighten.c
@@ -218,8 +218,9 @@ static __initdata struct {
 static int __init fdt_find_hyper_node(unsigned long node, const char *uname,
 				      int depth, void *data)
 {
-	const void *s = NULL;
+	const char *s = NULL;
 	int len;
+	size_t prefix_len = strlen(hyper_node.prefix);
 
 	if (depth != 1 || strcmp(uname, "hypervisor") != 0)
 		return 0;
@@ -228,9 +229,10 @@ static int __init fdt_find_hyper_node(unsigned long node, const char *uname,
 		hyper_node.found = true;
 
 	s = of_get_flat_dt_prop(node, "compatible", &len);
-	if (strlen(hyper_node.prefix) + 3  < len &&
-	    !strncmp(hyper_node.prefix, s, strlen(hyper_node.prefix)))
-		hyper_node.version = s + strlen(hyper_node.prefix);
+	if (s && len > 0 && strnlen(s, len) < len &&
+	    len > prefix_len + 3 &&
+	    !strncmp(hyper_node.prefix, s, prefix_len))
+		hyper_node.version = s + prefix_len;
 
 	/*
 	 * Check if Xen supports EFI by checking whether there is the
-- 
2.53.0



From xen-devel-bounces@lists.xenproject.org Mon Apr 20 13:25:06 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 20 Apr 2026 13:25:06 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1285852.1567069 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wEocc-00064v-EW; Mon, 20 Apr 2026 13:25:06 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1285852.1567069; Mon, 20 Apr 2026 13:25: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 1wEocc-00064o-BQ; Mon, 20 Apr 2026 13:25:06 +0000
Received: by outflank-mailman (input) for mailman id 1285852;
 Mon, 20 Apr 2026 13:25:05 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <bernhard.kaindl@citrix.com>) id 1wEocb-00064F-Eh
 for xen-devel@lists.xenproject.org; Mon, 20 Apr 2026 13:25:05 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wEocZ-008Kfe-A0
 for xen-devel@lists.xenproject.org; Mon, 20 Apr 2026 15:25:04 +0200
Received: from [10.42.69.12] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <bernhard.kaindl@citrix.com>)
 id 69e62930-5cb7-0a2a0a5109dd-0a2a450cc1ba-2
 for <xen-devel@lists.xenproject.org>; Mon, 20 Apr 2026 15:25:04 +0200
Received: from [160.101.131.9] (helo=na1pdmzitismtp02.tibco.com)
 by tlsNG-d25034.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.1)
 (envelope-from <bernhard.kaindl@citrix.com>)
 id 69e6292f-62f1-0a2a450c0019-a0658309874a-3
 for <xen-devel@lists.xenproject.org>; Mon, 20 Apr 2026 15:25:04 +0200
Received: from debian.eng.citrite.net (unknown [10.113.40.46])
 by na1pdmzitismtp02.tibco.com (Postfix) with ESMTP id 7C0E68185110;
 Mon, 20 Apr 2026 09:24:07 -0400 (EDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-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: Bernhard Kaindl <bernhard.kaindl@citrix.com>
To: xen-devel@lists.xenproject.org
Cc: Bernhard Kaindl <bernhard.kaindl@citrix.com>,
	Anthony PERARD <anthony.perard@vates.tech>
Subject: [PATCH v2 2/4] tools/tests/alloc: Add integration test suite to for NUMA memory claims
Date: Mon, 20 Apr 2026 14:19:42 +0100
Message-Id: <079417bb90481b5212b8c7081d0e32f90d0df127.1776690702.git.bernhard.kaindl@citrix.com>
X-Mailer: git-send-email 2.39.5
In-Reply-To: <cover.1776690702.git.bernhard.kaindl@citrix.com>
References: <cover.1776690702.git.bernhard.kaindl@citrix.com>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit
X-purgate-ID: tlsNG-d25034/1776691504-F5E0ECF5-7EBEBB8D/0/0
X-purgate-type: clean
X-purgate-size: 12487

Test claims behaviour of the page allocator with global claims using
domain_set_outstanding_pages() and the new API and test multi-node claims.

Signed-off-by: Bernhard Kaindl <bernhard.kaindl@citrix.com>
---
 tools/tests/alloc/test-claims-basic.c       | 108 ++++++++++++
 tools/tests/alloc/test-claims-numa-redeem.c | 172 ++++++++++++++++++++
 2 files changed, 280 insertions(+)
 create mode 100644 tools/tests/alloc/test-claims-basic.c
 create mode 100644 tools/tests/alloc/test-claims-numa-redeem.c

diff --git a/tools/tests/alloc/test-claims-basic.c b/tools/tests/alloc/test-claims-basic.c
new file mode 100644
index 000000000000..ef02ca449023
--- /dev/null
+++ b/tools/tests/alloc/test-claims-basic.c
@@ -0,0 +1,108 @@
+/* SPDX-License-Identifier: GPL-2.0-only */
+/*
+ * Copyright (C) 2026 Cloud Software Group
+ */
+#include "libtest-page-alloc.h"
+
+int test_set_global_claims(struct domain *d, unsigned long pages)
+{
+    memory_claim_t claim_set[] = {
+        {.target = XEN_DOMCTL_CLAIM_MEMORY_GLOBAL, .pages = pages},
+    };
+
+    return domain_install_claim_set(d, ARRAY_SIZE(claim_set), claim_set);
+}
+typedef int (*set_global_claims)(struct domain *d, unsigned long pages);
+
+set_global_claims install_global_claims = test_set_global_claims;
+
+static void test_alloc_domheap_redeems_claims(int start_mfn)
+{
+    int ret;
+    struct page_info *pages = test_pages + start_mfn, *pg;
+
+    test_page_list_add_buddy(pages, order2);
+    ASSERT(!test_set_global_claims(dom1, 3));
+    ASSERT(alloc_domheap_pages(dom1, order1, 0) == pages + 2);
+    ASSERT(alloc_domheap_pages(dom1, order0, 0) == pages + 1);
+    CHECK(TOTAL_CLAIMS == 0, "Expect all claims consumed after allocations");
+    CHECK(FREE_PAGES == 1, "Expect one free page after allocations");
+
+    ASSERT(!test_set_global_claims(dom2, FREE_PAGES));
+
+    /* Claim more than dom1 already has fails with ENOMEM (claimed by dom2) */
+    ret = test_set_global_claims(dom1, domain_tot_pages(dom1) + 1);
+    CHECK(ret == -ENOMEM, "dom 1 claim +1 fails due to insufficient pages");
+
+    /* Claim more than dom1's d->max_pages fails with EINVAL */
+    ret = test_set_global_claims(dom1, dom1->max_pages + 1);
+    CHECK(ret == -EINVAL, "dom 1 claim fails due to exceeding max_pages");
+
+    /* Attempt to allocate an order-0 page with a foreign claim present */
+    pg = alloc_domheap_pages(dom1, order0, 0);
+    CHECK(pg == NULL, "dom 1 allocation fails because of domain 2's claim");
+    CHECK(TOTAL_CLAIMS == 1, "Expect domain 2's claim to be still present");
+    CHECK(FREE_PAGES == 1, "Expect one free page after failed alloc");
+}
+
+/*
+ * Test that memory claims are consumed correctly during allocations.
+ */
+static void test_cancel_claims(int start_mfn)
+{
+    struct page_info *page = test_pages + start_mfn;
+    unsigned long claims;
+
+    /* Create a buddy of order 2 (4 pages) and add it to the heap. */
+    test_page_list_add_buddy(page, order2);
+    claims = FREE_PAGES / 2;
+
+    /* Claim half of the free pages for dom1 */
+    ASSERT(test_set_global_claims(dom1, claims) == 0);
+    ASSERT(TOTAL_CLAIMS == claims);
+
+    /* Act + Assert 2: Claim all free pages for dom2, should fail */
+    ASSERT(test_set_global_claims(dom2, FREE_PAGES) == -ENOMEM);
+    ASSERT(TOTAL_CLAIMS == claims);
+
+    /* Act + Assert 1: Cancel all claims for dom1 */
+    ASSERT(test_set_global_claims(dom1, 0) == 0);
+    ASSERT(TOTAL_CLAIMS == 0);
+
+    /* Act + Assert 2: Claim all free pages for dom2, should work */
+    ASSERT(test_set_global_claims(dom2, FREE_PAGES) == 0);
+    ASSERT(TOTAL_CLAIMS == FREE_PAGES);
+}
+
+int main(int argc, char *argv[])
+{
+    const char *topic = "Test global claims with old and new interfaces";
+    const char *program_name = parse_args(argc, argv, topic);
+
+    if ( !program_name )
+        return EXIT_FAILURE;
+
+    init_page_alloc_tests();
+
+    RUN_TESTCASE(TCCL, test_cancel_claims, 4);
+
+    /* Confirm the baseline of using domain_set_outstanding_pages() */
+    install_global_claims = domain_set_outstanding_pages;
+    RUN_TESTCASE(ADCL, test_alloc_domheap_redeems_claims, 4);
+
+    /* Repeat the same test case using test_set_global_claims() */
+    install_global_claims = test_set_global_claims;
+    RUN_TESTCASE(ADCG, test_alloc_domheap_redeems_claims, 4);
+
+    testcase_print_summary(program_name);
+    return 0;
+}
+
+/*
+ * Local variables:
+ * mode: C
+ * c-file-style: "BSD"
+ * c-basic-offset: 4
+ * indent-tabs-mode: nil
+ * End:
+ */
diff --git a/tools/tests/alloc/test-claims-numa-redeem.c b/tools/tests/alloc/test-claims-numa-redeem.c
new file mode 100644
index 000000000000..aaa1a5b6af5c
--- /dev/null
+++ b/tools/tests/alloc/test-claims-numa-redeem.c
@@ -0,0 +1,172 @@
+/* SPDX-License-Identifier: GPL-2.0-only */
+/*
+ * Integration tests for redeeming NUMA memory claim set as implemented
+ * in xen/common/page_alloc.c's redeem_claims_for_allocation() and
+ * related functions.
+ *
+ * redeem_claims_for_allocation() is exercised indirectly through
+ * alloc_domheap_pages() which is the primary interface for allocating
+ * pages from a domain's heap.
+ *
+ * By means of domain_install_claim_set(), a claim set with global and
+ * per-NUMA-node claims is installed for a dummy domain, and then
+ * allocations with NUMA node affinity are performed to verify that the
+ * appropriate claims are redeemed (same-node first, global fallback next,
+ * then other nodes to not exceed page limits). The test also verifies that
+ * aggregate counters are updated correctly after each allocation.
+ *
+ * The test verifies that when a domain has a claim set installed with
+ * global and per-NUMA-node claims, allocations that specify NUMA node
+ * affinity will redeem the appropriate claims (same-node first, global
+ * fallback claim next, then other nodes to not exceed page limits).
+ * It also verifies that the aggregate claim counters are updated
+ * correctly after each allocation.
+ *
+ * Copyright (C) 2026 Cloud Software Group
+ */
+
+#define CONFIG_NUMA   1
+#define CONFIG_SYSCTL 1
+#include "libtest-page-alloc.h"
+
+/*
+ * Test redeeming NUMA memory claims in exchange for allocations,
+ * and the redeemed claims are correctly reflected in the domain's
+ * claim state and the aggregate claim counters.
+ */
+static void test_claims_numa_install(int start_mfn)
+{
+    int zone, ret;
+    struct page_info *pages = test_pages + start_mfn, *allocated;
+
+    /*
+     * PREPARE
+     */
+
+    /*
+     * Node 1's pages start at the pfn set by init_numa_node_data():
+     * node_data[node1].node_start_pfn = start_mfn + 8 (8 MFNs per node with
+     * memnode_shift=3). The order-2 buddy (4 pages) placed there satisfies
+     * the 2-page node1 claim and provides enough total pages for the
+     * 2 global + 2 node0 + 2 node1 = 6-page claim set (2 + 4 = 6 total).
+     */
+    struct page_info *pages_node1 =
+        test_pages + node_data[node1].node_start_pfn;
+
+    /* Create an order-1 buddy (2 pages) for node 0 and add it to the heap. */
+    zone = test_page_list_add_buddy(pages, order1);
+
+    /* Create an order-2 buddy (4 pages) for node 1 and add it to the heap. */
+    test_page_list_add_buddy(pages_node1, order2);
+
+    /* Install a claim set with global + per-NUMA-node claims. */
+    memory_claim_t claim_set[] = {
+        {.target = XEN_DOMCTL_CLAIM_MEMORY_GLOBAL, .pages = 2},
+        {.target = node0,                          .pages = 2},
+        {.target = node1,                          .pages = 2},
+    };
+    ret = domain_install_claim_set(dom1, ARRAY_SIZE(claim_set), claim_set);
+    CHECK(ret == 0, "domain_install_claim_set should succeed: %d", ret);
+
+    /* Assert dom1's claims */
+    CHECK(TOTAL_CLAIMS == 6, "Expect 6 total claims after installation");
+    CHECK(DOM_GLOBAL_CLAIMS(dom1) == 2,
+          "Expect dom1 having 2 global claims after installation");
+    CHECK(DOM_NODE_CLAIMS(dom1, node0) == 2,
+          "Expect dom1 having 2 claims for node0 after installation");
+    CHECK(DOM_NODE_CLAIMS(dom1, node1) == 2,
+          "Expect dom1 having 2 claims for node1 after installation");
+
+    /* Allocate an order-0 page from node 0 for the dummy domain. */
+    allocated = alloc_domheap_pages(dom1, order0, MEMF_node(node0));
+    CHECK(allocated != NULL, "alloc_domheap_pages should succeed");
+
+    /* Verify the state of the aggregate counters after allocation. */
+    CHECK(TOTAL_CLAIMS == 5, "Expect 5 total claims left after allocation");
+    CHECK(FREE_PAGES == 5, "Expect 5 free pages left after allocation");
+
+    /* Assert dom1's claims after the allocation from node0 */
+    CHECK(DOM_GLOBAL_CLAIMS(dom1) == 2,
+          "Expect dom1 still having 2 global claims after allocation");
+    CHECK(DOM_NODE_CLAIMS(dom1, node0) == 1,
+          "Expect dom1 having 1 claim for node0 after allocation");
+    CHECK(DOM_NODE_CLAIMS(dom1, node1) == 2,
+          "Expect dom1 still having 2 claims for node1 after allocation");
+
+    /* Allocate an order-0 page from node 1 for the dummy domain. */
+    allocated = alloc_domheap_pages(dom1, order0, MEMF_node(node1));
+    CHECK(allocated != NULL, "order-0 alloc from node1");
+
+    /* Assert dom1's claims after the allocation from node1 */
+    CHECK(DOM_GLOBAL_CLAIMS(dom1) == 2,
+          "Expect dom1 still having 2 global claims after allocation");
+    CHECK(DOM_NODE_CLAIMS(dom1, node0) == 1,
+          "Expect dom1 having 1 claim for node0 after allocation");
+    CHECK(DOM_NODE_CLAIMS(dom1, node1) == 1,
+          "Expect dom1 having 1 claim for node1 after allocation");
+
+    /* Allocate an order-1 page from node 1 for the dummy domain. */
+    allocated = alloc_domheap_pages(dom1, order1, MEMF_node(node1));
+    CHECK(allocated != NULL, "order-1 alloc from node1");
+
+    /* Assert dom1's claims after the allocation from node1 */
+    CHECK(DOM_GLOBAL_CLAIMS(dom1) == 1,
+          "Expect dom1 having redeemed one global claim after allocation");
+    CHECK(DOM_NODE_CLAIMS(dom1, node0) == 1,
+          "Expect dom1 having 1 claim for node0 after allocation");
+    CHECK(DOM_NODE_CLAIMS(dom1, node1) == 0,
+          "Expect dom1 having 0 claims for node1 after allocation");
+
+    /* Allocate an order-0 page from node 1 for the dummy domain. */
+    allocated = alloc_domheap_pages(dom1, order0, MEMF_node(node1));
+    CHECK(allocated != NULL, "order-0 alloc from node1");
+
+    /* Assert dom1's claims after the allocation from node1 */
+    CHECK(DOM_GLOBAL_CLAIMS(dom1) == 0,
+          "Expect dom1 having redeemed one global claim after allocation");
+    CHECK(DOM_NODE_CLAIMS(dom1, node0) == 1,
+          "Expect dom1 having 1 claim for node0 after allocation");
+    CHECK(DOM_NODE_CLAIMS(dom1, node1) == 0,
+          "Expect dom1 having 0 claims for node1 after allocation");
+
+    /* Allocate an order-0 page from node 1 for the dummy domain. */
+    allocated = alloc_domheap_pages(dom1, order0, MEMF_node(node1));
+    CHECK(allocated != NULL, "order-0 alloc from node1");
+
+    /* Assert dom1's claims after the allocation from node1 */
+    CHECK(DOM_GLOBAL_CLAIMS(dom1) == 0,
+          "Expect dom1 having redeemed one global claim after allocation");
+    CHECK(DOM_NODE_CLAIMS(dom1, node0) == 0,
+          "Expect dom1 having 0 claims for node0 after allocation");
+    CHECK(DOM_NODE_CLAIMS(dom1, node1) == 0,
+          "Expect dom1 having 0 claims for node1 after allocation");
+}
+
+int main(int argc, char *argv[])
+{
+    const char *topic = "Test legacy claims with allocation from the heap";
+    const char *program_name = parse_args(argc, argv, topic);
+
+    if ( !program_name )
+        return EXIT_FAILURE;
+
+    init_page_alloc_tests();
+    /*
+     * Use test_set_global_claims() which is a wrapper around
+     * domain_install_claim_set() to check ensure consistent
+     * behavior with domain_set_outstanding_pages().
+     */
+    RUN_TESTCASE(CNI0, test_claims_numa_install, 0);
+
+    testcase_print_summary(program_name);
+    return 0;
+}
+
+/*
+ * Local variables:
+ * mode: C
+ * c-file-style: "BSD"
+ * c-basic-offset: 4
+ * indent-tabs-mode: nil
+ * End:
+ */
-- 
2.39.5



From xen-devel-bounces@lists.xenproject.org Mon Apr 20 13:25:36 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 20 Apr 2026 13:25:36 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1285886.1567078 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wEod6-0006oI-QR; Mon, 20 Apr 2026 13:25:36 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1285886.1567078; Mon, 20 Apr 2026 13:25: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 1wEod6-0006o9-Mw; Mon, 20 Apr 2026 13:25:36 +0000
Received: by outflank-mailman (input) for mailman id 1285886;
 Mon, 20 Apr 2026 13:25:35 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <bernhard.kaindl@citrix.com>) id 1wEod5-0006lc-En
 for xen-devel@lists.xenproject.org; Mon, 20 Apr 2026 13:25:35 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wEod4-008bFS-Ro
 for xen-devel@lists.xenproject.org; Mon, 20 Apr 2026 15:25:34 +0200
Received: from [10.42.69.5] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <bernhard.kaindl@citrix.com>)
 id 69e6294d-bab6-0a2a0a5309dd-0a2a4505d5e6-2
 for <xen-devel@lists.xenproject.org>; Mon, 20 Apr 2026 15:25:34 +0200
Received: from [160.101.131.8] (helo=na1pdmzitismtp01.tibco.com)
 by tlsNG-c201ff.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.1)
 (envelope-from <bernhard.kaindl@citrix.com>)
 id 69e6294d-aaa8-0a2a45050019-a06583088c08-3
 for <xen-devel@lists.xenproject.org>; Mon, 20 Apr 2026 15:25:34 +0200
Received: from debian.eng.citrite.net (unknown [10.113.40.46])
 by na1pdmzitismtp01.tibco.com (Postfix) with ESMTP id 87EFF420DB75;
 Mon, 20 Apr 2026 09:24:48 -0400 (EDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-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: Bernhard Kaindl <bernhard.kaindl@citrix.com>
To: xen-devel@lists.xenproject.org
Cc: Bernhard Kaindl <bernhard.kaindl@citrix.com>,
	Anthony PERARD <anthony.perard@vates.tech>
Subject: [PATCH v2 3/4] tools/tests/alloc: Add tests for offlining with claims present
Date: Mon, 20 Apr 2026 14:19:43 +0100
Message-Id: <fd6d35c7997bf87c6a30d0a319f96327b4805d06.1776690702.git.bernhard.kaindl@citrix.com>
X-Mailer: git-send-email 2.39.5
In-Reply-To: <cover.1776690702.git.bernhard.kaindl@citrix.com>
References: <cover.1776690702.git.bernhard.kaindl@citrix.com>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit
X-purgate-ID: tlsNG-c201ff/1776691534-E256B443-EEB0D6C7/0/0
X-purgate-type: clean
X-purgate-size: 3590

Add an integration test for offlining pages with outstanding claims.
The test offlines two pages, with the second offline operation
recalling one claim to prevent over-claiming beyond the available
memory. Due to missing checks in the offlining code, there are
expected failures which will be fixed in a test-driven manner.

Run this test with both global claims and node-local claims.

Signed-off-by: Bernhard Kaindl <bernhard.kaindl@citrix.com>
---
 tools/tests/alloc/test-offlining-claims.c | 75 +++++++++++++++++++++++
 1 file changed, 75 insertions(+)
 create mode 100644 tools/tests/alloc/test-offlining-claims.c

diff --git a/tools/tests/alloc/test-offlining-claims.c b/tools/tests/alloc/test-offlining-claims.c
new file mode 100644
index 000000000000..a0580af82ef5
--- /dev/null
+++ b/tools/tests/alloc/test-offlining-claims.c
@@ -0,0 +1,75 @@
+/* SPDX-License-Identifier: GPL-2.0-only */
+/*
+ * Copyright (C) 2026 Cloud Software Group
+ */
+#include "libtest-page-alloc.h"
+
+static void test_offlining_with_global_claims(int mfn)
+{
+    struct page_info *page = test_pages + mfn;
+    uint32_t status = 0;
+    memory_claim_t claims[1] = {
+        {.pages = 3, .target = XEN_DOMCTL_CLAIM_MEMORY_GLOBAL}
+    };
+
+    test_page_list_add_buddy(page, order2); /* Add a buddy with 4 free pages*/
+    ASSERT(domain_install_claim_set(dom1, ARRAY_SIZE(claims), claims) == 0);
+
+    offline_page(mfn + 3, 0, &status); /* Offline the 1st page */
+    ASSERT(status & PG_OFFLINE_OFFLINED);
+    CHECK(TOTAL_CLAIMS == 3, "Still 3 claims before offlining the 2nd page");
+
+    offline_page(mfn + 1, 0, &status); /* Offline the 2nd page */
+    ASSERT(status & PG_OFFLINE_OFFLINED);
+
+    CHECK(FREE_PAGES == 2, "Expect 2 free pages after offlining two pages");
+    EXPECTED_TO_FAIL_BEGIN();
+    CHECK(TOTAL_CLAIMS == 2, "Expect 2 claims after offlining two pages");
+    EXPECTED_TO_FAIL_END(1);
+}
+
+
+/*
+ * Claim 3 of 4 pages on node0, offline two pages, and the 2nd offline should
+ * recall one claim to prevent over-claiming beyond the available memory.
+ *
+ * As part of offline_page(), reserve_offlined_page() should recall the
+ * needed claims to not exceed the number of pages that are are remaining.
+ */
+static void test_offlining_with_node_claims(int mfn)
+{
+    struct page_info *page = test_pages + mfn;
+    uint32_t status = 0;
+    memory_claim_t claims[1] = { {.pages = 3, .target = node0} };
+
+    test_page_list_add_buddy(page, order2);
+    ASSERT(domain_install_claim_set(dom1, ARRAY_SIZE(claims), claims) == 0);
+
+    ASSERT(offline_page(mfn + 3, 0, &status) == 0);
+    ASSERT(status & PG_OFFLINE_OFFLINED);
+    CHECK(TOTAL_CLAIMS == 3, "Still 3 claims before offlining the 2nd page");
+
+    ASSERT(offline_page(mfn + 1, 0, &status) == 0);
+    ASSERT(status & PG_OFFLINE_OFFLINED);
+
+    CHECK(FREE_PAGES == 2, "Expect 2 free pages after offlining two pages");
+    EXPECTED_TO_FAIL_BEGIN();
+    CHECK(TOTAL_CLAIMS == 2, "Expect 2 claims after offlining two pages");
+    EXPECTED_TO_FAIL_END(1);
+}
+
+int main(int argc, char *argv[])
+{
+    const char *topic = "Test offlining with memory claims";
+    const char *program_name = parse_args(argc, argv, topic);
+
+    if ( !program_name )
+        return EXIT_FAILURE;
+
+    init_page_alloc_tests();
+
+    RUN_TESTCASE(OWGC, test_offlining_with_global_claims, 4);
+    RUN_TESTCASE(OWNC, test_offlining_with_node_claims, 4);
+
+    return testcase_print_summary(program_name);
+}
-- 
2.39.5



From xen-devel-bounces@lists.xenproject.org Mon Apr 20 13:26:22 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 20 Apr 2026 13:26:22 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1285909.1567088 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wEodo-0007MZ-3L; Mon, 20 Apr 2026 13:26:20 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1285909.1567088; Mon, 20 Apr 2026 13:26: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 1wEodn-0007MS-Ux; Mon, 20 Apr 2026 13:26:19 +0000
Received: by outflank-mailman (input) for mailman id 1285909;
 Mon, 20 Apr 2026 13:26:18 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <bernhard.kaindl@citrix.com>) id 1wEodm-0007M4-LO
 for xen-devel@lists.xenproject.org; Mon, 20 Apr 2026 13:26:18 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wEodm-00B2Mn-29
 for xen-devel@lists.xenproject.org; Mon, 20 Apr 2026 15:26:18 +0200
Received: from [10.42.69.6] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <bernhard.kaindl@citrix.com>)
 id 69e62968-e002-0a2a0a5209dd-0a2a4506b792-36
 for <xen-devel@lists.xenproject.org>; Mon, 20 Apr 2026 15:26:18 +0200
Received: from [160.101.131.8] (helo=na1pdmzitismtp01.tibco.com)
 by tlsNG-16d1c6.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.1)
 (envelope-from <bernhard.kaindl@citrix.com>)
 id 69e62977-7371-0a2a45060019-a0658308d85c-3
 for <xen-devel@lists.xenproject.org>; Mon, 20 Apr 2026 15:26:16 +0200
Received: from debian.eng.citrite.net (unknown [10.113.40.46])
 by na1pdmzitismtp01.tibco.com (Postfix) with ESMTP id DFFED420DE01;
 Mon, 20 Apr 2026 09:25:29 -0400 (EDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-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: Bernhard Kaindl <bernhard.kaindl@citrix.com>
To: xen-devel@lists.xenproject.org
Cc: Bernhard Kaindl <bernhard.kaindl@citrix.com>,
	Anthony PERARD <anthony.perard@vates.tech>,
	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=20Pau=20Monn=C3=A9?= <roger.pau@citrix.com>,
	Stefano Stabellini <sstabellini@kernel.org>
Subject: [PATCH v2 4/4] xen/mm: Recall claims when offlining pages if needed
Date: Mon, 20 Apr 2026 14:19:44 +0100
Message-Id: <ebc02ab7b6fe81946ccf5833a44d57fb4a3239a4.1776690702.git.bernhard.kaindl@citrix.com>
X-Mailer: git-send-email 2.39.5
In-Reply-To: <cover.1776690702.git.bernhard.kaindl@citrix.com>
References: <cover.1776690702.git.bernhard.kaindl@citrix.com>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit
X-purgate-ID: tlsNG-16d1c6/1776691576-51361D75-B170C3DC/0/0
X-purgate-type: clean
X-purgate-size: 3980

Fix a bug where offlining pages could cause an unsigned underflow
in total_avail_pages - outstanding_claims, leading to incorrect
claim behavior.

This issue arises when outstanding claims are close to the total
available pages. It occurse when domain_set_outstanding_claims()
and domain_install_claim_set effectively do this:

 unsigned long avail_pages = total_avail_pages - outstanding_claims;

When this unsigned subtraction underflows, staking claims can succeed
even when there is insufficient unclaimed memory for the new claim.
This leads to a state where claims always succeed, regardless of
actual memory availability.

To prevent this, recall claims when offlining pages if needed to maintain
equilibrium between `total_avail_pages` and outstanding claims for global
and for per-NUMA-node claims.

Signed-off-by: Bernhard Kaindl <bernhard.kaindl@citrix.com>
---
 tools/tests/alloc/test-offlining-claims.c |  4 ---
 xen/common/page_alloc.c                   | 42 +++++++++++++++++++++++
 2 files changed, 42 insertions(+), 4 deletions(-)

diff --git a/tools/tests/alloc/test-offlining-claims.c b/tools/tests/alloc/test-offlining-claims.c
index a0580af82ef5..69a3e8f82e6b 100644
--- a/tools/tests/alloc/test-offlining-claims.c
+++ b/tools/tests/alloc/test-offlining-claims.c
@@ -23,9 +23,7 @@ static void test_offlining_with_global_claims(int mfn)
     ASSERT(status & PG_OFFLINE_OFFLINED);
 
     CHECK(FREE_PAGES == 2, "Expect 2 free pages after offlining two pages");
-    EXPECTED_TO_FAIL_BEGIN();
     CHECK(TOTAL_CLAIMS == 2, "Expect 2 claims after offlining two pages");
-    EXPECTED_TO_FAIL_END(1);
 }
 
 
@@ -53,9 +51,7 @@ static void test_offlining_with_node_claims(int mfn)
     ASSERT(status & PG_OFFLINE_OFFLINED);
 
     CHECK(FREE_PAGES == 2, "Expect 2 free pages after offlining two pages");
-    EXPECTED_TO_FAIL_BEGIN();
     CHECK(TOTAL_CLAIMS == 2, "Expect 2 claims after offlining two pages");
-    EXPECTED_TO_FAIL_END(1);
 }
 
 int main(int argc, char *argv[])
diff --git a/xen/common/page_alloc.c b/xen/common/page_alloc.c
index 6101bd6be9a9..adedf6fae590 100644
--- a/xen/common/page_alloc.c
+++ b/xen/common/page_alloc.c
@@ -1575,6 +1575,48 @@ static int reserve_offlined_page(struct page_info *head)
         count++;
     }
 
+    if ( count )
+    {
+        long recall_pages;
+        struct domain *d;
+
+        /* Ensure that claims on the node are in line with its free memory. */
+        recall_pages = node_outstanding_claims[node] - node_avail_pages[node];
+        if ( recall_pages > 0 )
+            /*
+             * node_avail_pages slipped below node_outstanding_claims.
+             * We need to recall claimed pages until the amount of claimed
+             * memory is in line with the amount of available memory again.
+             */
+            for_each_domain ( d )
+            {
+                if ( d->claims[node] )
+                {
+                    recall_pages -= deduct_node_claims(d, node, recall_pages);
+                    if ( recall_pages <= 0 )
+                        break;
+                }
+            }
+
+        /* Ensure that outstanding claims are in line with available memory. */
+        recall_pages = outstanding_claims - total_avail_pages;
+        if ( recall_pages > 0 )
+            /*
+             * total_avail_pages slipped below outstanding_claims.
+             * We need to recall claimed pages until the amount of claimed
+             * memory is in line with the amount of available memory again.
+             */
+            for_each_domain ( d )
+            {
+                if ( d->global_claims )
+                {
+                    recall_pages -= deduct_global_claims(d, recall_pages);
+                    if ( recall_pages <= 0 )
+                        break;
+                }
+            }
+    }
+
     return count;
 }
 
-- 
2.39.5



From xen-devel-bounces@lists.xenproject.org Mon Apr 20 13:38:36 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 20 Apr 2026 13:38:36 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1285955.1567096 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wEopZ-0000qK-3J; Mon, 20 Apr 2026 13:38:29 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1285955.1567096; Mon, 20 Apr 2026 13:38: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 1wEopY-0000qD-Vh; Mon, 20 Apr 2026 13:38:28 +0000
Received: by outflank-mailman (input) for mailman id 1285955;
 Mon, 20 Apr 2026 13:38:27 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <jbeulich@suse.com>) id 1wEopX-0000q7-L7
 for xen-devel@lists.xenproject.org; Mon, 20 Apr 2026 13:38:27 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wEopX-00DYNK-1h
 for xen-devel@lists.xenproject.org; Mon, 20 Apr 2026 15:38:27 +0200
Received: from [10.42.69.2] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <jbeulich@suse.com>)
 id 69e62c50-5cb7-0a2a0a5109dd-0a2a4502a32e-12
 for <xen-devel@lists.xenproject.org>; Mon, 20 Apr 2026 15:38:26 +0200
Received: from [209.85.221.48] (helo=mail-wr1-f48.google.com)
 by tlsNG-720697.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.1)
 (envelope-from <jbeulich@suse.com>)
 id 69e62c52-af86-0a2a45020019-d155dd30dc98-3
 for <xen-devel@lists.xenproject.org>; Mon, 20 Apr 2026 15:38:26 +0200
Received: by mail-wr1-f48.google.com with SMTP id
 ffacd0b85a97d-43fde5b81a1so2247468f8f.0
 for <xen-devel@lists.xenproject.org>; Mon, 20 Apr 2026 06:38:26 -0700 (PDT)
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-43fe4e59f97sm32582720f8f.37.2026.04.20.06.38.25
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Mon, 20 Apr 2026 06:38:25 -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=google header.d=suse.com header.i="@suse.com" header.h="Content-Transfer-Encoding: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=1776692306; x=1777297106; darn=lists.xenproject.org;
        h=content-transfer-encoding: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;
        bh=wTvE3zsOSz8T+uOBTZ/XAGfk/EzcI8LfSRnRscNugZU=;
        b=Y/ywFqJpKPk8svUzm7XNCmXabE5xjYUIB1aEikLpPJ20KHCuoKf2X7cnOMkYjYtl74
         L39evY+GDB2ezWW+cBPuqHhC8zJFb3l2V0g12Ag9LDW4dvEm2ipceD3BENOPZSBeNO0Z
         +HoQ0JX4a6YgYTZaMKkOJFRmXKUDDGUMIRd76Q3C8LFXi5+39wjfihJufABZ6kKniVtZ
         HhzYYOjYNUVcfr56cv0Siy2LQwo+U/2/3zDdWpyXV3CVtk4LZY33PfHrulu87B3g/xkJ
         RN57pOYXg/yefdlLRLS9jb1/XfCkRCgcca3gbtHm+Weg0g7cBJR1wkNfPGNhB0sX8ovA
         z+cw==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20251104; t=1776692306; x=1777297106;
        h=content-transfer-encoding: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;
        bh=wTvE3zsOSz8T+uOBTZ/XAGfk/EzcI8LfSRnRscNugZU=;
        b=eZht0TukdqzTds7OlspOFmmlSgSa8jV9VfKzrbKZzgmw34hyVWRAWTGmaSQNAn5YwZ
         uEcVjFd/Q83WmHQtyddDwbHaRsaW9TMk6rFEiVMHDeOAlDoXij5kZrTzHwbbag8iDrnK
         aLcXC6DxkcIDAPZQsFFk/Ch8dyxzLmAd/gSqfP6gDBQG18HLNxng50mjEaAck+zwdWdW
         L0ZjARFFwd+qQRlOLpur0U1E5SgcXst+tjpWI9FSIAxC2jyPqBFcO7drIg5MDQBug5SY
         7FYIjbs5+m9pBqQd61PA7nmyN21Et/ZKGb/APG4FggJ9ihW5HSEqGY4FIDaE6a37JHHz
         b/aw==
X-Forwarded-Encrypted: i=1; AFNElJ9N+YtXBPONPA5uNKLTocwAvVXTlMxaY0ixPCzmTizlUnzNz+sDEoP7wXu+D89Hj6oE1kAixQa8T70=@lists.xenproject.org
X-Gm-Message-State: AOJu0Yya196cX3vtcg4rX2Fd2HaYzJk5tvW+0XyWoXmsISRECMnbbgVS
	5sTYhvlKZy8zNgAchVo8AunrqJwNBsamHXr5BiRFXEAkXTHlT/Mg4T1bgSMLBlXwXA==
X-Gm-Gg: AeBDieuwp2kKHXmDhWMA3ce3oZyU3WlfzvkF0biFNV+TJuJMJdDa80FCy7ZrNviBqeb
	Vu3WLbvYigoSRYDtDlsO5jGLJONY0VFypHdLjGZOQu0M4NRutkljCnXSFSL1nMyhU3l1TJx2ohk
	LXZtVmdgzMkECwf7Ry9s3HZ0QsZ9RyU0TRH/B+WBiUlPtxPzWo2gfSSFhyEWUiFTMH/8qoS+Lvt
	k7MMhWF1RWwUilo5Zq0YxOxcioKn4gcZKy52mYYXom1Hix/dvB4y+ojE/ixDlvJ1an7zvTwEYPR
	68bMOxIWsutfk3ySYdjsbMoJRuu75Cfcg3xId4AB1ckutSKK8FyAxAU2Z7+FUv0m+t1hUWYH9l8
	giyiYtQQ/MsEYj0Hbqom3k4574AvJvoL/prvslQlz5H0NDQVhHTvNZGR3TKz5pUQus02hwCLP93
	mEUj4VRgw5UoYuqUh906mEsnRW1arHbzIP+7h3kzOpmciyK5YF+EvyJXyzAuCB9gqa7kPBnlgHk
	Z+t4pSZJZek8fmRqYLW7rb9fw==
X-Received: by 2002:a05:6000:2312:b0:43e:aa88:f1a6 with SMTP id ffacd0b85a97d-43fe3e12c58mr21097403f8f.45.1776692306181;
        Mon, 20 Apr 2026 06:38:26 -0700 (PDT)
Message-ID: <692cc080-ac6b-442d-b694-8e50e482856a@suse.com>
Date: Mon, 20 Apr 2026 15:38:26 +0200
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH v6 3/3] x86/ioreq: Extend ioreq server to support multiple
 ioreq pages
To: Teddy Astie <teddy.astie@vates.tech>
Cc: Andrew Cooper <andrew.cooper3@citrix.com>,
 =?UTF-8?Q?Roger_Pau_Monn=C3=A9?= <roger.pau@citrix.com>,
 Anthony PERARD <anthony.perard@vates.tech>,
 Michal Orzel <michal.orzel@amd.com>, Julien Grall <julien@xen.org>,
 Stefano Stabellini <sstabellini@kernel.org>,
 Julian Vetter <julian.vetter@vates.tech>, xen-devel@lists.xenproject.org
References: <20260420093820.825969-1-julian.vetter@vates.tech>
 <20260420093820.825969-4-julian.vetter@vates.tech>
 <cd9b42bf-5399-471e-9b86-dcf13eaad9e6@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: <cd9b42bf-5399-471e-9b86-dcf13eaad9e6@vates.tech>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 7bit
X-purgate-ID: tlsNG-720697/1776692306-8A4C5161-DC114E90/0/0
X-purgate-type: clean
X-purgate-size: 802

On 20.04.2026 14:49, Teddy Astie wrote:
> Is there anything that would prevent the use of alloc_domheap_pages() to 
> allocate a configuous set of pages at once; and vmap_contig() to map it 
> in one go.
> That also prevents the ioreq pages from being scattered around.
> 
> We would lose a few pages by aligning the size into a order, but that 
> probably better than the alternatives.
> 
> That way, we would only have to keep the base gfn (or first page_info) 
> and size of the allocation, and don't have to use a array of mfn nor 
> have to reverse the vmap to track it.

Well, higher-order allocations can easily fail when there's ample memory
available. Hence why a goal ought to be to avoid such allocations at
runtime. That's why we (now) have vmalloc() and xvmalloc().

Jan


From xen-devel-bounces@lists.xenproject.org Mon Apr 20 13:46:06 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 20 Apr 2026 13:46:06 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1285978.1567105 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wEowr-0002OH-PR; Mon, 20 Apr 2026 13:46:01 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1285978.1567105; Mon, 20 Apr 2026 13:46: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 1wEowr-0002OA-MW; Mon, 20 Apr 2026 13:46:01 +0000
Received: by outflank-mailman (input) for mailman id 1285978;
 Mon, 20 Apr 2026 13:46:00 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <jbeulich@suse.com>) id 1wEowq-0002O4-2B
 for xen-devel@lists.xenproject.org; Mon, 20 Apr 2026 13:46:00 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wEowp-00DaBs-FH
 for xen-devel@lists.xenproject.org; Mon, 20 Apr 2026 15:45:59 +0200
Received: from [10.42.69.10] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <jbeulich@suse.com>)
 id 69e62e14-e002-0a2a0a5209dd-0a2a450a98be-6
 for <xen-devel@lists.xenproject.org>; Mon, 20 Apr 2026 15:45:59 +0200
Received: from [209.85.128.52] (helo=mail-wm1-f52.google.com)
 by tlsNG-4011c0.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.1)
 (envelope-from <jbeulich@suse.com>)
 id 69e62e17-56b3-0a2a450a0019-d1558034cdc3-3
 for <xen-devel@lists.xenproject.org>; Mon, 20 Apr 2026 15:45:59 +0200
Received: by mail-wm1-f52.google.com with SMTP id
 5b1f17b1804b1-48896199cbaso32569025e9.1
 for <xen-devel@lists.xenproject.org>; Mon, 20 Apr 2026 06:45:59 -0700 (PDT)
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-488ffc5e3f4sm125633015e9.2.2026.04.20.06.45.57
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Mon, 20 Apr 2026 06:45:58 -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=google header.d=suse.com header.i="@suse.com" header.h="Content-Transfer-Encoding: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=1776692759; x=1777297559; darn=lists.xenproject.org;
        h=content-transfer-encoding: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;
        bh=ZTTnzvyU8PLfPdh75XRcNkDGJ3pyY3Z7kiTT8cTCans=;
        b=EPLuBcJPi+TArttzY/oVpRmRzSXLZ2WmoaCoBwy0La8o0m3pchIX4zhTdjvon1FBuI
         1gJZKGEFUmjljxdh5m49X/8mpqb+6AbV/8Gsc2J7bzdl/G3aAj7tDSIQbdUfr/I2OGvN
         xWdugUg4qi0fGCxq66bqWlbjxG0iqOXfjVhbwTqa2tr2Z6YAbly/oEhag8PDb4tErW07
         tLSloTxIV/nr6SjLvfbt8rSB5WpGZeszEjvMew6P5RPkB+FDRbOzrRPPN3e/JQM7JPtK
         KJOJAYr02mgs7LF1TvvSr+Gt/wqu3HSPVuUJ7MEqzwCKEfDgSzzCHsuFppyr/LHw5Rei
         iYkg==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20251104; t=1776692759; x=1777297559;
        h=content-transfer-encoding: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;
        bh=ZTTnzvyU8PLfPdh75XRcNkDGJ3pyY3Z7kiTT8cTCans=;
        b=kfwvkgd0a5OBN8DP3zs56TLQNi/RBDzwd1Ury2A/nh49i8EOeMokPGoLblb1BqkzsH
         giDWALIPB8EDfuGMeGU4scVro5JSQmgVlTaYrGucxW088wq72DB/bhN555RR6G2o70yy
         f0MVgxLAiTEV730BurZyiEkXFVWHN77aQcGOcEJhee2TslGk+SIeE3J9CiDOyJYyHWVL
         NcfsAHrOq9W9n2L7wVAEyXCNN+KI61R0C/fLdCJhjKp9QM5Aroo4kP/9Xn6aOkMuGcyM
         oqKKdGzmq5gt3FC/jqOsGo2hLYGvVdap7vvngo6YUlmhpjuZg1i3xL5UutZFxcEw2s9C
         AJVQ==
X-Forwarded-Encrypted: i=1; AFNElJ85prQxoHyuV7z62LToWM/7s3WUi2Ayf647CR6YA6JLvv6DGv6pi7xoxc1XsuTd/UXoqqrdudYnK60=@lists.xenproject.org
X-Gm-Message-State: AOJu0YyrKEGtHjVZufQgzZ9Jh4xX3gu1+MvVJ8Weik/eHxfT4REOjRRc
	4IGrGCFcnhGS2Py8Ht4R2QMzfNlLaoZRMk12KNkd2Ptm884QdXPOhdJ9Acctz6TU2Q==
X-Gm-Gg: AeBDievqKnMKYWNiWLDNgW64vIJncth9Ti2t/0/fYxOse0ZZ/PVuyJbwQVP4FZDZwvM
	QaR2+9tZ5blRyOek+9gh+TBB9KPmeN9gjRzcRTf3Ve8gXi2vgzFtn7bOSTm/OqJ+yGyA8wB3vSa
	pZg9ZC5Ek5+zr5drvoPoOsyxNB6SRTxuA0ru3bLeYFxUaxOoAzCBXOtQgCgljpqAxgxnJeDDJZ8
	4/DnY5VvHGuoTnja00Rv8h5xBizPXZgT3Xqvht7YSQHoVYRRFr6io0vq5u0g219R4F/ubEr5h50
	QChgwh3URFwQ1V4hf4PNIUy/zVXgW0tVurvqinj4FoAYJfMZhoC7LHw+ALe26Nz7Rdjf0XGKRMk
	19f3tt0eMWotagWqa7SJS+IXCSb4wRwYTWtMlBfALUUONYpzsh6d6os1hOo98YCqkDbrg8ONVBt
	UALzZM/xAo16YXrWy6JfYmyTO2YMTv4OezTtgm3YfSMGYUIlZW1+G1NLM+Ve9CPrfdiAEb6JMAo
	RKuw8To/4yGFTi4ZwyMlU/7xw==
X-Received: by 2002:a05:600c:899:b0:489:1a63:509c with SMTP id 5b1f17b1804b1-4891a635125mr43161795e9.0.1776692758631;
        Mon, 20 Apr 2026 06:45:58 -0700 (PDT)
Message-ID: <09a260ca-5a98-461d-9f57-d298a483d3d6@suse.com>
Date: Mon, 20 Apr 2026 15:45:59 +0200
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH v1 16/27] xen/riscv: implement IRQ mapping for device
 passthrough
To: Oleksii Kurochko <oleksii.kurochko@gmail.com>
Cc: Romain Caritey <Romain.Caritey@microchip.com>,
 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.pau@citrix.com>,
 Stefano Stabellini <sstabellini@kernel.org>, xen-devel@lists.xenproject.org
References: <cover.1773157782.git.oleksii.kurochko@gmail.com>
 <10654a6c38fa929b5fdf6f214badfe4f60fe78d4.1773157782.git.oleksii.kurochko@gmail.com>
 <8a8a2afd-6f53-4f45-b8c8-fb34a6fbb970@suse.com>
 <f099b925-0ea9-43a7-b760-f70f343a4d7c@gmail.com>
 <a7a4e8c9-d053-4ca7-ac9c-f43ddccf9151@suse.com>
 <00fa439d-0327-4c0c-960d-a810820a6e83@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: <00fa439d-0327-4c0c-960d-a810820a6e83@gmail.com>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
X-purgate-ID: tlsNG-4011c0/1776692759-80A7F8B7-0493567D/0/0
X-purgate-type: clean
X-purgate-size: 6380

On 20.04.2026 13:39, Oleksii Kurochko wrote:
> On 4/16/26 2:51 PM, Jan Beulich wrote:
>> On 14.04.2026 13:29, Oleksii Kurochko wrote:
>>> On 4/2/26 2:22 PM, Jan Beulich wrote:
>>>> On 10.03.2026 18:08, Oleksii Kurochko wrote:
>>>>> +int vaplic_map_device_irqs_to_domain(struct domain *d,
>>>>> +                                     struct dt_device_node *dev,
>>>>> +                                     bool need_mapping,
>>>>> +                                     struct rangeset *irq_ranges)
>>>>> +{
>>>>> +    unsigned int i, nirq;
>>>>> +    int res, irq;
>>>>> +    struct dt_raw_irq rirq;
>>>>> +    uint32_t *auth_irq_bmp = d->arch.vintc->private;
>>>>> +    unsigned int reg_num;
>>>>> +
>>>>> +    nirq = dt_number_of_irq(dev);
>>>>> +
>>>>> +    /* Give permission and map IRQs */
>>>>> +    for ( i = 0; i < nirq; i++ )
>>>>> +    {
>>>>> +        res = dt_device_get_raw_irq(dev, i, &rirq);
>>>>> +        if ( res )
>>>>> +        {
>>>>> +            printk(XENLOG_ERR "Unable to retrieve irq %u for %s\n",
>>>>> +                   i, dt_node_full_name(dev));
>>>>> +            return res;
>>>>> +        }
>>>>> +
>>>>> +        /*
>>>>> +         * Don't map IRQ that have no physical meaning
>>>>> +         * ie: IRQ whose controller is not APLIC/IMSIC/PLIC.
>>>>> +         */
>>>>> +        if ( rirq.controller != dt_interrupt_controller )
>>>>> +        {
>>>>> +            dt_dprintk("irq %u not connected to primary controller."
>>>>> +                       "Connected to %s\n", i,
>>>>> +                       dt_node_full_name(rirq.controller));
>>>>> +            continue;
>>>>> +        }
>>>>> +
>>>>> +        irq = platform_get_irq(dev, i);
>>>>> +        if ( irq < 0 )
>>>>> +        {
>>>>> +            printk("Unable to get irq %u for %s\n", i, dt_node_full_name(dev));
>>>>> +            return irq;
>>>>> +        }
>>>>> +
>>>>> +        res = irq_permit_access(d, irq);
>>>>> +        if ( res )
>>>>> +        {
>>>>> +            printk(XENLOG_ERR "Unable to permit to %pd access to IRQ %u\n", d,
>>>>> +                   irq);
>>>>
>>>> This time the other way around: %d please with plain int. (Again at least
>>>> once further down.)
>>>>
>>>>> +            return res;
>>>>> +        }
>>>>> +
>>>>> +        reg_num = irq / APLIC_NUM_REGS;
>>>>> +
>>>>> +        if ( is_irq_shared_among_domains(d, irq) )
>>>>> +        {
>>>>> +            printk("%s: Shared IRQ isn't supported\n", __func__);
>>>>> +            return -EINVAL;
>>>>> +        }
>>>>> +
>>>>> +        auth_irq_bmp[reg_num] |= BIT(irq % APLIC_NUM_REGS, U);
>>>>
>>>> ... all of this leaves me with the impression that IRQ numbering isn't really
>>>> virtualized. IRQs are merely split into groups, one group per domain (and
>>>> maybe some unused). How are you going to fit in truly virtual IRQs?
>>>
>>> What do you mean by truly virtual IRQs?
>>
>> Ones where no aspects are represented by any piece of hardware.
>>
>>> I can't totally agree that the current approach isn't use virtual IRQs,
>>> yes, they are 1:1 mapped but on the other side Xen is responsible to
>>> give an IRQ number for guest's device and Xen is responsible that guest
>>> isn't trying to reach IRQ which not belongs to it.
>>
>> In a non-virtualized environment I expect IRQs are going to be "sparse"
>> (i.e. with perhaps large blocks of items used elsewhere). If you had
>> proper translation of IRQ numbers, the same could be true for your
>> guests.
> 
> Partial FDT, which is used to tell which device be passthroughed to 
> guest, is using physical IRQ number (which I am just considering for 
> simplicity to be 1:1 mapped to virtual IRQ number). So if we have the 
> following configuration:
>    Physical (bare-metal) IRQ layout is sparse:
>      IRQ 5  → UART -> domU0
>      IRQ 23 → Ethernet -> domU1
>      IRQ 47 → PCIe -> domU0
>      IRQ 100 → Storage -> domU1
> (gaps everywhere, driven by hardware wiring)
> 
> For such configuration we will have for each domain auth_irq_bmp[] which 
> contains:
>   IRQ 5 and IRQ47 for domU0
> and
>   IRQ 23 and IRQ 100 for domU1
> 
> And here vIRQ5 = pIRQ5, vIRQ47 = pIRQ47 and so on. auth_irq_bmp just 
> transform xIRQ number to bit position which it will have in real APLIC 
> register. Just as an example, lets take vIRQ5 and vIRQ47.
> 
> As reading or writing register setie[k] reads or potentially modifies 
> the enable bits for interrupt sources k × 32 through k × 32 + 31. For an 
> implemented interrupt source i within that range, the enable bit for 
> source i corresponds with register bit (i mod 32).
> So for:
>   - vIRQ5 == pIRQ5 we have to set bit 5 in setie[0]
>   - vIRQ47 == pIRQ47 we have to set bit 15 in setie[1]
> 
> Probably it was not the best idea to declare auth_irq_bmp as it will 
> look in h/w and maybe just 'bool auth_irq_bmp[1024]' would be more clearer.
> 
> So irqs number are still stay "sparsed" in guest.

Well, twice (or more) as sparse in the example you give, compared to the
host.

>>>>> +        dt_dprintk("  - IRQ: %u\n", irq);
>>>>> +
>>>>> +        if ( irq_ranges )
>>>>> +        {
>>>>> +            res = rangeset_add_singleton(irq_ranges, irq);
>>>>> +            if ( res )
>>>>> +                return res;
>>>>> +        }
>>>>
>>>> What is irq_ranges?
>>>
>>> IIUC based on Arm code irq_ranges is an optional output accumulator, the
>>> caller allocates and passes it in when it needs to track which IRQs were
>>> mapped (overlay use case), or passes NULL when that tracking is not needed.
>>>
>>> I added here as map_device_irqs_to_domain() is called from the common
>>> code and so maybe one day someone will decide to pass irq_ranges to this
>>> functions. At the moment, for RISC-V it is the only one user of
>>> map_device_irqs_to_domain() and it passes NULL.
>>
>> Simply assert then that it's NULL?
> 
> Won't BUG_ON() be better here as it BUG_ON() macros is always defined 
> and doesn't matter if release or debug build are used.

Depends on the context, really.

> Or maybe you meant:
>   if ( irq_ranges )
>       assert_failed("irq_ranges arg isn't supported\n");

Definitely not. assert_failed() shouldn't be called directly, as I had
told you on at least one earlier occasion.

Jan


From xen-devel-bounces@lists.xenproject.org Mon Apr 20 13:53:06 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 20 Apr 2026 13:53:06 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1285989.1567113 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wEp3W-00048B-HF; Mon, 20 Apr 2026 13:52:54 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1285989.1567113; Mon, 20 Apr 2026 13:52: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 1wEp3W-000484-EY; Mon, 20 Apr 2026 13:52:54 +0000
Received: by outflank-mailman (input) for mailman id 1285989;
 Mon, 20 Apr 2026 13:52:52 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <jbeulich@suse.com>) id 1wEp3U-00047y-Mo
 for xen-devel@lists.xenproject.org; Mon, 20 Apr 2026 13:52:52 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wEp3U-008gkT-00
 for xen-devel@lists.xenproject.org; Mon, 20 Apr 2026 15:52:52 +0200
Received: from [10.42.69.8] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <jbeulich@suse.com>)
 id 69e62fa6-5cb7-0a2a0a5109dd-0a2a450889e8-48
 for <xen-devel@lists.xenproject.org>; Mon, 20 Apr 2026 15:52:51 +0200
Received: from [209.85.128.45] (helo=mail-wm1-f45.google.com)
 by tlsNG-c1860d.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.1)
 (envelope-from <jbeulich@suse.com>)
 id 69e62fb3-63b5-0a2a45080019-d155802db42a-3
 for <xen-devel@lists.xenproject.org>; Mon, 20 Apr 2026 15:52:51 +0200
Received: by mail-wm1-f45.google.com with SMTP id
 5b1f17b1804b1-488af96f6b2so39946735e9.0
 for <xen-devel@lists.xenproject.org>; Mon, 20 Apr 2026 06:52:51 -0700 (PDT)
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-488ffad20f2sm108961675e9.0.2026.04.20.06.52.50
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Mon, 20 Apr 2026 06:52:50 -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=google header.d=suse.com header.i="@suse.com" header.h="Content-Transfer-Encoding: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=1776693171; x=1777297971; darn=lists.xenproject.org;
        h=content-transfer-encoding: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;
        bh=yG3hxO9BPXWbU5J2ydmObugAefwJYm3R6/DkISkqRYw=;
        b=L7vbsvjgCqWPeQF/TT1xD5e+WawzlpS6KIonG9xQYxKY2cIP9EyZXqbv3BRRjmxalh
         TNfQQZnNGUxpG8EQrEal8omdUtO7T/uWwhb6XQlHfsfQ0f8KdV9U1rPF45BvBKI8nUTJ
         5Q0Pxx2RZowpyyLx6HwqpGKPEYiIlRrypxXBjuJ7V41VKpFHn8sW8XOoforWXUm8ke7a
         ravIsw7aM5151uEUbDmjRmKo+SStMfSbxyN08pV243WZ8b/LsFQo4X7kz2jRNOeNZwNj
         iQP0OG5kbFStZ5w6f1AKn6I5D5w3ZpoRNl8jmr08rqGdAvDilqcXm1W2i+L2UjyhTUbC
         hRog==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20251104; t=1776693171; x=1777297971;
        h=content-transfer-encoding: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;
        bh=yG3hxO9BPXWbU5J2ydmObugAefwJYm3R6/DkISkqRYw=;
        b=T3Uuj+i1tSHH8HXIXljEhWLEozfEqgMn/tB1wgGylv/dIBX+Bk3nwuqkZ0Vyv0pR8l
         ocE47uustRdPRHQ0tgRyJkeMTK4TbvAORHQoEZMfA1Px3mBtaYJNfggXYlt+QTAjOeRc
         wMlVsE8hxIvVXWmZgOMjXNUH/GPHAFImFFUSiMey2FrXSgriOyK+lI8smMy/6Fd4PNSj
         tTwUTnLPF6cmNHLmUSrSn65UfgKd1NTqW0ArQPnxMpNaopAvrYRdKXxiKYQnGGJO+T68
         cRjcpOPcqiG9bItJru7jMhvB5mIVDFFL0a4Qp36lXPkSehJwiZlsPr4cmCL/I1rTK4f5
         OOeg==
X-Forwarded-Encrypted: i=1; AFNElJ+SyETDBS5a9x9eTfEpz+BZ5me9g6oWOpkHbxR5X7k9QItQsE8noO7Tpq1YIO+qTiiSYA/UvQZU/QA=@lists.xenproject.org
X-Gm-Message-State: AOJu0Yw6YsgGjUFDEysJ0FKAqgs90IRYXL+TCqovFHCzGycGQUiFnwzw
	5wBUkQOGR4AJLbLNW3KfT3No+dhBjlFrYctWfLh6/KA7rcp6rRUzHN4kjwO2NHcWlg==
X-Gm-Gg: AeBDiet5TvtfakbwZrlVhlirp+ZPxmhOgRe+JlxgHaxYhvOyHTNaJHM1fMoA0CMCt3X
	d6x7Js2Chy6IeCvQxpVP+xGz2bEX1ci1lJ/7YP3yInxabnCJ5ykhcDpEsE2oZUYaZW+KuvIIzvZ
	Da866MYXHGVxcMrGm1ZXg+QXLBDf6MNG60qOHoe19gi77KAS3BenWRAF4rD00WN6YZUEp/Xq1tZ
	nQnWBy7258LDByby/ZuzzpBQbQ/vWucS5WVwHQg8dtdB+T3eC0S5PzRYWiFZKu7fQOM6yorussK
	Lxfzu/eDhhHvWdVaLdQ6bX/GQK8EZqCgZEwKuoB0UjbE0WhDDAjzvzaq9KAbNkm17iiWQKiJMCR
	zFaKLY8n2JVFNQ96yPuS5tD0v9R9DL8Vs8jMv261kFT+a+9/AoHFK3wg9owbUYJOUH03l3A1SeV
	kptlVpHrtTgDHULRSufYxuf/t01ICsm15s+o09a/KpFIonMm7loRLXsrzcpqIdTuOmSl+MnrrQU
	gF2V53tpkCOIrctmtONlnTDPg==
X-Received: by 2002:a05:600c:4818:b0:489:1c5f:3a9e with SMTP id 5b1f17b1804b1-4891c5f3cc1mr34688065e9.13.1776693171238;
        Mon, 20 Apr 2026 06:52:51 -0700 (PDT)
Message-ID: <ec24d32d-9378-4a07-b84d-aaebfd46f517@suse.com>
Date: Mon, 20 Apr 2026 15:52:52 +0200
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [RFC PATCH 2/2] vtd: Replace macros with bitfield
To: Teddy Astie <teddy.astie@vates.tech>
Cc: Andrew Cooper <andrew.cooper3@citrix.com>,
 =?UTF-8?Q?Roger_Pau_Monn=C3=A9?= <roger.pau@citrix.com>,
 xen-devel@lists.xenproject.org
References: <815edfd0db90859a4ce270d833d9d721ff66e31c.1775814143.git.teddy.astie@vates.tech>
 <3182da144d0cb998c9ae897b55285b7e408cd972.1775814143.git.teddy.astie@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: <3182da144d0cb998c9ae897b55285b7e408cd972.1775814143.git.teddy.astie@vates.tech>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 7bit
X-purgate-ID: tlsNG-c1860d/1776693171-39D6BDB1-B820A29F/0/0
X-purgate-type: clean
X-purgate-size: 2260

On 10.04.2026 12:09, Teddy Astie wrote:
> Replace macros with bitfield to allow simplyfing the code and be
> less error prone when manipulating PTEs.
> 
> It also has the effect of directly exposing the mfn in the pte struct
> instead of derivating it from the raw pte value using dma_pte_addr().
> 
> Signed-off-by: Teddy Astie <teddy.astie@vates.tech>
> ---
> It allows nicer constructs like
> 
>   new.snp = iommu_snoop;
> 
> instead of
> 
>   if ( iommu_snoop )
>     dma_set_pte_snp(new);
> 
> A lot of simplifications could be done afterward when switching the
> logic from maddrs to mfns i.e remove many maddr-mfn conversions.

There's no real open question here, so it's not quite clear why this is
marked RFC. We did do the same on the AMD side a while back, at least
partly (I don't think we got all of it converted yet), so doing the
conversion here surely is a good thing. The slightly larger ...

> bloat-o-meter (along with the previous change)
> 
> add/remove: 0/0 grow/shrink: 7/3 up/down: 227/-45 (182)
> Function                                     old     new   delta
> addr_to_dma_page_maddr                       949    1058    +109
> vtd_dump_page_table_level                    197     233     +36
> fill_qpt                                    1151    1178     +27
> print_vtd_entries                            486     504     +18
> domain_context_mapping_one                  2098    2114     +16
> intel_iommu_map_page                         909     921     +12
> intel_iommu_unmap_page                       731     740      +9
> intel_iommu_lookup_page                      185     176      -9
> queue_free_pt                                442     425     -17
> vtd_dump_page_table_level.cold                86      67     -19
> Total: Before=18446744073715636162, After=18446744073715636344, chg +0.00%

... code size shouldn't be much of a concern, albeit you may want to at
least mention the (presumed) reason for some of the bigger increases,
after comparing the generated code.

(As an aside, the two values after Total: look entirely bogus.)

> I guess using mfns 'everywhere' would improve the bloat-o-meter picture.

It's not quite clear to me what you mean here.

Jan


From xen-devel-bounces@lists.xenproject.org Mon Apr 20 14:04:10 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 20 Apr 2026 14:04:10 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1286002.1567124 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wEpEK-0005wI-GP; Mon, 20 Apr 2026 14:04:04 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1286002.1567124; Mon, 20 Apr 2026 14:04: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 1wEpEK-0005wB-CV; Mon, 20 Apr 2026 14:04:04 +0000
Received: by outflank-mailman (input) for mailman id 1286002;
 Mon, 20 Apr 2026 14:04:03 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <jbeulich@suse.com>) id 1wEpEJ-0005w5-5Q
 for xen-devel@lists.xenproject.org; Mon, 20 Apr 2026 14:04:03 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wEpEI-008jqn-IJ
 for xen-devel@lists.xenproject.org; Mon, 20 Apr 2026 16:04:02 +0200
Received: from [10.42.69.12] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <jbeulich@suse.com>)
 id 69e63247-5cb7-0a2a0a5109dd-0a2a450ca7f4-30
 for <xen-devel@lists.xenproject.org>; Mon, 20 Apr 2026 16:04:02 +0200
Received: from [209.85.128.51] (helo=mail-wm1-f51.google.com)
 by tlsNG-d25034.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.1)
 (envelope-from <jbeulich@suse.com>)
 id 69e63252-62f1-0a2a450c0019-d1558033bcfe-3
 for <xen-devel@lists.xenproject.org>; Mon, 20 Apr 2026 16:04:02 +0200
Received: by mail-wm1-f51.google.com with SMTP id
 5b1f17b1804b1-4896c22fcbaso6459585e9.0
 for <xen-devel@lists.xenproject.org>; Mon, 20 Apr 2026 07:04:02 -0700 (PDT)
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-4891c08faffsm156295305e9.1.2026.04.20.07.04.00
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Mon, 20 Apr 2026 07:04:01 -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=google header.d=suse.com header.i="@suse.com" header.h="Content-Transfer-Encoding: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=1776693842; x=1777298642; darn=lists.xenproject.org;
        h=content-transfer-encoding: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;
        bh=Zz2b3aedKjdY9PGqKELdtxVqQ+BX3mNG+YwacUxTB5s=;
        b=EWnd7q2NCsLUJ9o6Vo9ZIf0R3MyiP6TIYbVBse0lO8RReQ/UcMQfhfXQtp5Q6XrNI0
         ycfGzK46urA8VjbOU/cbp0P1zO5BQrF9wbvJrd3cE49Lv1uTVZB9RbKTi5o7YKbJC8x0
         TKTZM686VJ+FXZta57mYRfY86riAw1ULmx1yNDSGdxj/urGNEGydxB2xy6jfJpgg0mif
         l140cc4l1+zBQjJRJ7jP1el8hWb0P/DIiTXTLEozbo/5nYGvF9vmcx2fWZVJwZ+8tYtC
         Qv3Pnkyx3fT+DDPNhUhyPrxDBepH0E7VVDFVTspDZIkdXLZxx0nHGnje8tlkv9K9nsGJ
         AOiA==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20251104; t=1776693842; x=1777298642;
        h=content-transfer-encoding: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;
        bh=Zz2b3aedKjdY9PGqKELdtxVqQ+BX3mNG+YwacUxTB5s=;
        b=jI5hJvCkR1BrSXs4S0ljQiWG8XjuumbgoRdKzS874ujXanuzPnPhAGDuy13kU87Cry
         kh9x690HkPK5+S5JxWCBwTbr+1tbZzK5v7iYunRIdZtw8gwiJ/au4lnptgz5fQT+uEOs
         M44lp6Duf/qXvOmXkyIGazu064qpAapueT+kOs5uP/ckynlD6PtRj/xz9pY1UqV/KwAL
         /9W3PdTu0IMXqzEcMn7PJChuPKIhw4jgPFQXVCK+afNjgGYkD0RPW/8lmKvehQRBUfru
         BPGonxX0IjWDA8+MppniuFn8IL/csRuLsXzAOugq2UaM/yV6BWy5c30fmrdz5W8o8sby
         IuLA==
X-Forwarded-Encrypted: i=1; AFNElJ/Apgky5aamY4pLahaOQwlPlEhLkxLksYPZ7yNiFGuNF/dtCtNS3vIpbndSmJYI5AoLKabAnT5giw8=@lists.xenproject.org
X-Gm-Message-State: AOJu0YxVHISbfIayojDI2ddn2QkIUdtrMSjZSEPkrmLIuV9/MKu4wttp
	j2OmZIAX5Xow1CXxF01QCRF6RBeGOiQP9dm8vA0Zr15nfytQEdo9glTGBnC0ibCpRg==
X-Gm-Gg: AeBDieu/89G/xNf5mEsPn4tbz9CiQzQkB3YfQAA0Twc+xQOmR8bJ/kUgLLnFozQCuC1
	tQDJe98y1jSke9ElFFNEoD/PjjLj8UQb2B3IiKiob/p3yG7EsuzXYfAq56rwI6TGyCfpBKnTAFx
	EFi5nI3r7LMvNvgka1sgpm+7JyV23dTqRPA+O75COs+AdTK9lhYchpAW0NwMHHW0to8cCc73Cgr
	OCc/YMMaxnnOM6a20Tfa0WxAKR/5ZYxK6faHYJGhLFWrJoifChDpHEiy9nTaS8sSD7pqjOpg6Ze
	XtERonzzUA6oFdfARNnptTBnrL9eEvyrFiYDmgEs1keglWYmm48tdCJwnFm3Wypm1FvyYKbgwT7
	52vc79mYq2o/vByHbcEjFSzl0Ru+T2ZrlmUoS5Qg8AKupe90WC9/hbg3nq+1v2cYTIf8RB87KvK
	OxNVwOAgO9K2Gn68Mm/SeKj4vrRw00HIH4wYnXHyR9kDwm5Cd1DKbrDqzAM8wEvtu9izFIzyid8
	1FFzq+TpluEw6hAyjk4H9paMQ==
X-Received: by 2002:a05:600c:8b8a:b0:489:149a:f9e7 with SMTP id 5b1f17b1804b1-489149afa2bmr88286285e9.27.1776693841647;
        Mon, 20 Apr 2026 07:04:01 -0700 (PDT)
Message-ID: <8f6ac421-8b6e-4655-bff2-bc733da52995@suse.com>
Date: Mon, 20 Apr 2026 16:04:02 +0200
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH v1 3/3] x86/smp: Rewrite TLB flush using
 on_selected_cpus()
To: Ross Lagerwall <ross.lagerwall@citrix.com>
Cc: Anthony PERARD <anthony.perard@vates.tech>,
 Andrew Cooper <andrew.cooper3@citrix.com>,
 =?UTF-8?Q?Roger_Pau_Monn=C3=A9?= <roger.pau@citrix.com>,
 xen-devel@lists.xenproject.org
References: <20260401163521.3603665-1-ross.lagerwall@citrix.com>
 <20260401163521.3603665-4-ross.lagerwall@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: <20260401163521.3603665-4-ross.lagerwall@citrix.com>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 7bit
X-purgate-ID: tlsNG-d25034/1776693842-6EB74CF5-EDE52468/0/0
X-purgate-type: clean
X-purgate-size: 596

On 01.04.2026 18:35, Ross Lagerwall wrote:
> @@ -275,21 +274,18 @@ void flush_area_mask(const cpumask_t *mask, const void *va, unsigned int flags)
>      if ( (flags & ~FLUSH_ORDER_MASK) &&
>           !cpumask_subset(mask, cpumask_of(cpu)) )
>      {
> +        cpumask_t flush_cpumask;

I think we want to avoid introduction of a new on-stack variable of this
type. For large NR_CPUS they consume excessively much stack space; it
wasn't that long ago that (iirc) in HPET code we successfully eliminated
one.

Instead a per-CPU variable of type cpumask_var_t may want using.

Jan


From xen-devel-bounces@lists.xenproject.org Mon Apr 20 14:07:40 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 20 Apr 2026 14:07:40 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1286012.1567131 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wEpHm-0006Wq-UG; Mon, 20 Apr 2026 14:07:38 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1286012.1567131; Mon, 20 Apr 2026 14:07: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 1wEpHm-0006Wj-Re; Mon, 20 Apr 2026 14:07:38 +0000
Received: by outflank-mailman (input) for mailman id 1286012;
 Mon, 20 Apr 2026 14:07:38 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <jbeulich@suse.com>) id 1wEpHl-0006Wd-SD
 for xen-devel@lists.xenproject.org; Mon, 20 Apr 2026 14:07:37 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wEpHl-007ksc-5Y
 for xen-devel@lists.xenproject.org; Mon, 20 Apr 2026 16:07:37 +0200
Received: from [10.42.69.5] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <jbeulich@suse.com>)
 id 69e63320-2eae-0a2a0a5409dd-0a2a4505aa98-18
 for <xen-devel@lists.xenproject.org>; Mon, 20 Apr 2026 16:07:37 +0200
Received: from [209.85.128.43] (helo=mail-wm1-f43.google.com)
 by tlsNG-c201ff.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.1)
 (envelope-from <jbeulich@suse.com>)
 id 69e63327-aaa8-0a2a45050019-d155802be50f-3
 for <xen-devel@lists.xenproject.org>; Mon, 20 Apr 2026 16:07:36 +0200
Received: by mail-wm1-f43.google.com with SMTP id
 5b1f17b1804b1-48334ee0aeaso31416285e9.1
 for <xen-devel@lists.xenproject.org>; Mon, 20 Apr 2026 07:07:36 -0700 (PDT)
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-4891c318636sm85644935e9.7.2026.04.20.07.07.34
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Mon, 20 Apr 2026 07:07:34 -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=google header.d=suse.com header.i="@suse.com" header.h="Content-Transfer-Encoding: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=1776694055; x=1777298855; darn=lists.xenproject.org;
        h=content-transfer-encoding:autocrypt:content-language:cc:to:subject
         :from:user-agent:mime-version:date:message-id:from:to:cc:subject
         :date:message-id:reply-to;
        bh=MmTtX6h/IB0UlseOWqSe2tCLnZGFk18XI7fIyrBVkyQ=;
        b=QM9VEzeJYW3bqxBrn2tZNkHkFtd+LNDQFzy8OCf3Y9AgCcvX+HJkQ3jQqV8g26w5yE
         W2laiIyLVa+zMHgOfY6xaT6xRhUB9CivONC9N5S1iMnzzfdhV0hft/A0bGjaw4TtDCUu
         wJJx1G0eH0/4HTmSVyapZssDoDVSRRnrxnke16iIB2EdBGqfV0bQYk+n8VD7agyR6tKI
         gnpHh4i8qUMrjHZFHtasr0Dih4CHwtS0ezWAHN24P9myDVzz4ODUFtSqls07wHAJb1HR
         4ju4aKBqtUq2FJkiorzOij4yAo7Kh0CzK8Y0K/OhvavmFMkfIl35S8yJRbSsH3uqz573
         u4eQ==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20251104; t=1776694055; x=1777298855;
        h=content-transfer-encoding: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;
        bh=MmTtX6h/IB0UlseOWqSe2tCLnZGFk18XI7fIyrBVkyQ=;
        b=Vu3PwFXt6xIRAtlrUXL1afwR0vS3uh46eaRKeRw7rPVxV1N22TpW7Pweul+a1Iodh1
         cc0RnE4n7dJUCh4rJs3bolkz7Nsot9hhnmrrL+/GWs7fsNbMl9LTPLz+dVzrB7LjiBfY
         VkBR/9QelNZb/OTzAd/dYWJMmv6b23xReqaT/JsotxDqc2VCdvRHWQVtsTF2MD/sytuS
         LJoC5DfklFpztbxOL9Mi3eBYTYQT0m6AquZOfWdwg5McMsAYYa8/PtTCv3YEJJ7Zp1SA
         jjQR9ACsdd4/pIhirZ/ZX2HJ0oAngoNSmnWvwKoVAUOU0oOlgoR2eVyAd+XaedsL25sg
         bdfQ==
X-Gm-Message-State: AOJu0YyLMgqgp6vAaqEr2eVyZ9O1ShWBunbMI71GbF7+hxGyCrhxL+dU
	7b+hfk7w4Oe5qvJV+Zg00lMMgNdlqdhbBkkq0WRefufI8/ySP7Rt+esVhQr8kcvOyst3VyLuTvQ
	Oh0qsOw==
X-Gm-Gg: AeBDievJrf7cltpKcLK5Pe8WXTjLUvzi2Ekd8f/7cbj4tb4vfl16eC7svQy62iIQQ8f
	xUAnLvL4wjCR3HjwcZGsmAH8cM/38fAn6qAZ7jXdviiicb/cHFHKjBcLfpnba5Bdfoi+NI9xflG
	GkLZ3qNr1+LjGiee026z9Oqq5KUwuN7z5MT289Myrf4o6d5sIlVwIUBaPCkcJVy01LF3p/gh7K4
	xzUKqYhg2ntChORDzfOgtkDDG/ZPc5W1qhCab8COSsp6W5HA+sfpHAXMZW7dP0W43gEy4p8RkJC
	RVuhGH/WuQpviSXD1ZE4fXublfDygdTBplB0I5RAo2sGzk1tAxPdLyZRy8JLQydLmFlupwQYMib
	UVriTXDmauwlSizIXDbyjlyHeZxfJp91E2yGJa87BXvInbLppukZ2ZiELQExFP7E2aiEDo9EfoH
	OIDxkFMPtS89jstQD8UqQUJqWKlqAgX31r52YsSRemwc3y6dzgmvRGsHBEjxa1z/6jR4q0YjwQ9
	qehq4DBB0oBztPiFfhzxlQCWA==
X-Received: by 2002:a05:600c:c082:b0:488:b043:5efd with SMTP id 5b1f17b1804b1-488fb75f7a6mr149815695e9.13.1776694055206;
        Mon, 20 Apr 2026 07:07:35 -0700 (PDT)
Message-ID: <0099bc30-ce07-496a-b9b2-6d7ca400737b@suse.com>
Date: Mon, 20 Apr 2026 16:07:36 +0200
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
From: Jan Beulich <jbeulich@suse.com>
Subject: [PATCH v11] x86emul: support LKGS
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.pau@citrix.com>,
 Teddy Astie <teddy.astie@vates.tech>
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/1776694056-E95A7443-B5C3CEFD/0/0
X-purgate-type: clean
X-purgate-size: 9468

Provide support for this insn, which is a prereq to FRED. CPUID-wise,
while its and FRED's enumerators were already introduced, their dependency
still needs adding.

While adding a testcase, also add a SWAPGS one. In order to not affect
the behavior of pre-existing tests, install write_{segment,msr} hooks
only transiently.

Signed-off-by: Jan Beulich <jbeulich@suse.com>
---
For PV save_segments() would need adjustment, but the insn being
restricted to ring 0 means PV guests can't use it anyway (unless we
wanted to emulate it as another privileged insn).

I've also dropped the test harness read_segment() change. It generally
would be correct to have, but isn't needed anymore with neither SWAPGS
nor LKGS handling using the hook.
---
v11: Comment adjustments (to Andrew's liking).
v10: Drop FRED dependency on LKGS. Replace "best effort unwind". Avoid
     ->read_segment(). Re-base.
v9: Re-base.
v8: Re-base.
v6: Use MSR constants in test harness. S->s in cpufeatureset.h. Add
    NMI_SRC feature bits. Re-base.
v5: Re-base.
v3: Add dependency on LM. Re-base.
v2: Use X86_EXC_*. Add comments.

--- a/tools/tests/x86_emulator/predicates.c
+++ b/tools/tests/x86_emulator/predicates.c
@@ -326,6 +326,7 @@ static const struct {
     { { 0x00, 0x18 }, { 2, 2 }, T, R }, /* ltr */
     { { 0x00, 0x20 }, { 2, 2 }, T, R }, /* verr */
     { { 0x00, 0x28 }, { 2, 2 }, T, R }, /* verw */
+    { { 0x00, 0x30 }, { 0, 2 }, T, R, pfx_f2 }, /* lkgs */
     { { 0x01, 0x00 }, { 2, 2 }, F, W }, /* sgdt */
     { { 0x01, 0x08 }, { 2, 2 }, F, W }, /* sidt */
     { { 0x01, 0x10 }, { 2, 2 }, F, R }, /* lgdt */
--- a/tools/tests/x86_emulator/test_x86_emulator.c
+++ b/tools/tests/x86_emulator/test_x86_emulator.c
@@ -673,6 +673,10 @@ static int blk(
     return x86_emul_blk((void *)offset, p_data, bytes, eflags, state, ctxt);
 }
 
+#ifdef __x86_64__
+static unsigned long gs_base, gs_base_shadow;
+#endif
+
 static int read_segment(
     enum x86_segment seg,
     struct segment_register *reg,
@@ -682,8 +686,25 @@ static int read_segment(
         return X86EMUL_UNHANDLEABLE;
     memset(reg, 0, sizeof(*reg));
     reg->p = 1;
+
+    return X86EMUL_OKAY;
+}
+
+#ifdef __x86_64__
+static int write_segment(
+    enum x86_segment seg,
+    const struct segment_register *reg,
+    struct x86_emulate_ctxt *ctxt)
+{
+    if ( !is_x86_user_segment(seg) )
+        return X86EMUL_UNHANDLEABLE;
+
+    if ( seg == x86_seg_gs )
+        gs_base = reg->base;
+
     return X86EMUL_OKAY;
 }
+#endif
 
 static int read_msr(
     unsigned int reg,
@@ -696,6 +717,20 @@ static int read_msr(
         *val = ctxt->addr_size > 32 ? EFER_LME | EFER_LMA : 0;
         return X86EMUL_OKAY;
 
+#ifdef __x86_64__
+    case MSR_GS_BASE:
+        if ( ctxt->addr_size < 64 )
+            break;
+        *val = gs_base;
+        return X86EMUL_OKAY;
+
+    case MSR_SHADOW_GS_BASE:
+        if ( ctxt->addr_size < 64 )
+            break;
+        *val = gs_base_shadow;
+        return X86EMUL_OKAY;
+#endif
+
     case MSR_TSC_AUX:
 #define TSC_AUX_VALUE 0xCACACACA
         *val = TSC_AUX_VALUE;
@@ -705,6 +740,32 @@ static int read_msr(
     return X86EMUL_UNHANDLEABLE;
 }
 
+#ifdef __x86_64__
+static int write_msr(
+    unsigned int reg,
+    uint64_t val,
+    struct x86_emulate_ctxt *ctxt,
+    bool explicit)
+{
+    switch ( reg )
+    {
+    case MSR_GS_BASE:
+        if ( ctxt->addr_size < 64 || !is_canonical_address(val) )
+            break;
+        gs_base = val;
+        return X86EMUL_OKAY;
+
+    case MSR_SHADOW_GS_BASE:
+        if ( ctxt->addr_size < 64 || !is_canonical_address(val) )
+            break;
+        gs_base_shadow = val;
+        return X86EMUL_OKAY;
+    }
+
+    return X86EMUL_UNHANDLEABLE;
+}
+#endif
+
 #define INVPCID_ADDR 0x12345678
 #define INVPCID_PCID 0x123
 
@@ -1339,6 +1400,41 @@ int main(int argc, char **argv)
         printf("%u bytes read - ", bytes_read);
         goto fail;
     }
+    printf("okay\n");
+
+    emulops.write_segment = write_segment;
+    emulops.write_msr     = write_msr;
+
+    printf("%-40s", "Testing swapgs...");
+    instr[0] = 0x0f; instr[1] = 0x01; instr[2] = 0xf8;
+    regs.eip = (unsigned long)&instr[0];
+    gs_base = 0xffffeeeecccc8888UL;
+    gs_base_shadow = 0x0000111122224444UL;
+    rc = x86_emulate(&ctxt, &emulops);
+    if ( (rc != X86EMUL_OKAY) ||
+         (regs.eip != (unsigned long)&instr[3]) ||
+         (gs_base != 0x0000111122224444UL) ||
+         (gs_base_shadow != 0xffffeeeecccc8888UL) )
+        goto fail;
+    printf("okay\n");
+
+    printf("%-40s", "Testing lkgs 2(%rdx)...");
+    instr[0] = 0xf2; instr[1] = 0x0f; instr[2] = 0x00; instr[3] = 0x72; instr[4] = 0x02;
+    regs.eip = (unsigned long)&instr[0];
+    regs.edx = (unsigned long)res;
+    res[0]   = 0x00004444;
+    res[1]   = 0x8888cccc;
+    i = cpu_policy.extd.nscb; cpu_policy.extd.nscb = true; /* for AMD */
+    rc = x86_emulate(&ctxt, &emulops);
+    if ( (rc != X86EMUL_OKAY) ||
+         (regs.eip != (unsigned long)&instr[5]) ||
+         (gs_base != 0x0000111122224444UL) ||
+         gs_base_shadow )
+        goto fail;
+
+    cpu_policy.extd.nscb = i;
+    emulops.write_segment = NULL;
+    emulops.write_msr     = NULL;
 #endif
     printf("okay\n");
 
--- a/tools/tests/x86_emulator/x86-emulate.c
+++ b/tools/tests/x86_emulator/x86-emulate.c
@@ -85,6 +85,7 @@ bool emul_test_init(void)
     cpu_policy.feat.invpcid = true;
     cpu_policy.feat.adx = true;
     cpu_policy.feat.rdpid = true;
+    cpu_policy.feat.lkgs = true;
     cpu_policy.feat.wrmsrns = true;
     cpu_policy.extd.clzero = true;
 
--- a/xen/arch/x86/x86_emulate/decode.c
+++ b/xen/arch/x86/x86_emulate/decode.c
@@ -745,8 +745,12 @@ decode_twobyte(struct x86_emulate_state
         case 0:
             s->desc |= DstMem | SrcImplicit | Mov;
             break;
+        case 6:
+            if ( !(s->modrm_reg & 1) && mode_64bit() )
+            {
         case 2: case 4:
-            s->desc |= SrcMem16;
+                s->desc |= SrcMem16;
+            }
             break;
         }
         break;
--- a/xen/arch/x86/x86_emulate/private.h
+++ b/xen/arch/x86/x86_emulate/private.h
@@ -609,6 +609,7 @@ amd_like(const struct x86_emulate_ctxt *
 #define vcpu_has_avx_vnni()    (ctxt->cpuid->feat.avx_vnni)
 #define vcpu_has_avx512_bf16() (ctxt->cpuid->feat.avx512_bf16)
 #define vcpu_has_cmpccxadd()   (ctxt->cpuid->feat.cmpccxadd)
+#define vcpu_has_lkgs()        (ctxt->cpuid->feat.lkgs)
 #define vcpu_has_wrmsrns()     (ctxt->cpuid->feat.wrmsrns)
 #define vcpu_has_avx_ifma()    (ctxt->cpuid->feat.avx_ifma)
 #define vcpu_has_avx_vnni_int8() (ctxt->cpuid->feat.avx_vnni_int8)
--- a/xen/arch/x86/x86_emulate/x86_emulate.c
+++ b/xen/arch/x86/x86_emulate/x86_emulate.c
@@ -2899,8 +2899,37 @@ x86_emulate(
                 break;
             }
             break;
-        default:
-            generate_exception_if(true, X86_EXC_UD);
+
+        case 6: /* lkgs */
+            generate_exception_if((modrm_reg & 1) || vex.pfx != vex_f2,
+                                  X86_EXC_UD);
+            generate_exception_if(!mode_64bit() || !mode_ring0(), X86_EXC_UD);
+            vcpu_must_have(lkgs);
+            fail_if(!ops->read_msr || !ops->write_segment || !ops->write_msr);
+            if ( (rc = ops->read_msr(MSR_SHADOW_GS_BASE, &msr_val,
+                                     ctxt)) != X86EMUL_OKAY ||
+                 (rc = ops->read_msr(MSR_GS_BASE, &sreg.base,
+                                         ctxt)) != X86EMUL_OKAY )
+                goto done;
+            dst.orig_val = sreg.base; /* Preserve current GS Base. */
+            if ( (rc = protmode_load_seg(x86_seg_gs, src.val, false, &sreg,
+                                         ctxt, ops)) != X86EMUL_OKAY )
+                goto done;
+            /* Write new base into SHADOW_GS, zero extended from GDT/LDT. */
+            if ( (rc = ops->write_msr(MSR_SHADOW_GS_BASE, sreg.base,
+                                      ctxt, false)) != X86EMUL_OKAY ||
+                 (sreg.base = dst.orig_val, /* Reinstate original GS Base. */
+                  (rc = ops->write_segment(x86_seg_gs, &sreg,
+                                           ctxt)) != X86EMUL_OKAY) )
+            {
+                /*
+                 * In real hardware, access to the registers cannot fail.  It
+                 * is an error in Xen if the writes fail.
+                 */
+                ASSERT_UNREACHABLE();
+                x86_emul_reset_event(ctxt);
+                generate_exception(X86_EXC_DF, 0);
+            }
             break;
         }
         break;
--- a/xen/tools/gen-cpuid.py
+++ b/xen/tools/gen-cpuid.py
@@ -282,7 +282,8 @@ def crunch_numbers(state):
         # superpages, PCID and PKU are only available in 4 level paging.
         # NO_LMSL indicates the absense of Long Mode Segment Limits, which
         # have been dropped in hardware.
-        LM: [CX16, PCID, LAHF_LM, PAGE1GB, PKU, NO_LMSL, AMX_TILE, CMPCCXADD],
+        LM: [CX16, PCID, LAHF_LM, PAGE1GB, PKU, NO_LMSL, AMX_TILE, CMPCCXADD,
+             LKGS],
 
         # AMD K6-2+ and K6-III processors shipped with 3DNow+, beyond the
         # standard 3DNow in the earlier K6 processors.


From xen-devel-bounces@lists.xenproject.org Mon Apr 20 14:08:12 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 20 Apr 2026 14:08:12 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1286019.1567141 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wEpIK-000727-8X; Mon, 20 Apr 2026 14:08:12 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1286019.1567141; Mon, 20 Apr 2026 14:08: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 1wEpIK-000720-5g; Mon, 20 Apr 2026 14:08:12 +0000
Received: by outflank-mailman (input) for mailman id 1286019;
 Mon, 20 Apr 2026 14:08:11 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <Luca.Fancellu@arm.com>) id 1wEpII-00070V-Qx
 for xen-devel@lists.xenproject.org; Mon, 20 Apr 2026 14:08:11 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wEpII-0045lI-7o
 for xen-devel@lists.xenproject.org; Mon, 20 Apr 2026 16:08:10 +0200
Received: from [10.42.69.6] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <Luca.Fancellu@arm.com>)
 id 69e63347-bab6-0a2a0a5309dd-0a2a4506c4c4-4
 for <xen-devel@lists.xenproject.org>; Mon, 20 Apr 2026 16:08:09 +0200
Received: from [52.101.72.63]
 (helo=AM0PR02CU008.outbound.protection.outlook.com)
 by tlsNG-16d1c6.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.1)
 (envelope-from <Luca.Fancellu@arm.com>)
 id 69e63348-7371-0a2a45060019-3465483f7159-3
 for <xen-devel@lists.xenproject.org>; Mon, 20 Apr 2026 16:08:08 +0200
Received: from DUZPR01CA0014.eurprd01.prod.exchangelabs.com
 (2603:10a6:10:3c3::7) by DU0PR08MB9227.eurprd08.prod.outlook.com
 (2603:10a6:10:41a::12) with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9818.25; Mon, 20 Apr
 2026 14:08:04 +0000
Received: from DU6PEPF00009523.eurprd02.prod.outlook.com
 (2603:10a6:10:3c3:cafe::54) by DUZPR01CA0014.outlook.office365.com
 (2603:10a6:10:3c3::7) with Microsoft SMTP Server (version=TLS1_3,
 cipher=TLS_AES_256_GCM_SHA384) id 15.20.9791.48 via Frontend Transport; Mon,
 20 Apr 2026 14:08:04 +0000
Received: from outbound-uk1.az.dlp.m.darktrace.com (4.158.2.129) by
 DU6PEPF00009523.mail.protection.outlook.com (10.167.8.4) with Microsoft SMTP
 Server (version=TLS1_3, cipher=TLS_AES_256_GCM_SHA384) id 15.20.9791.48 via
 Frontend Transport; Mon, 20 Apr 2026 14:08:04 +0000
Received: from DU2PR08MB7272.eurprd08.prod.outlook.com (2603:10a6:10:2d7::16)
 by GV1PR08MB7754.eurprd08.prod.outlook.com (2603:10a6:150:55::5) with
 Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9818.32; Mon, 20 Apr
 2026 14:07:00 +0000
Received: from DU2PR08MB7272.eurprd08.prod.outlook.com
 ([fe80::5d34:206f:373:a323]) by DU2PR08MB7272.eurprd08.prod.outlook.com
 ([fe80::5d34:206f:373:a323%6]) with mapi id 15.20.9818.032; Mon, 20 Apr 2026
 14:07: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=arm.com header.i="@arm.com" header.h="From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck"; dkim=pass header.s=selector1 header.d=arm.com header.i="@arm.com" header.h="From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck"
ARC-Seal: i=2; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=pass;
 b=gOyRjI3oZU/5nbEHMdplSsoqE1oCLN2nVQDgXJcp5IviiZKMSgEBLAGu5R9BnV/BJYjT/LrHS23POeVmTi2Xqv5X1jAQyB7/XvHguFb2pZpc4QTbmd7v9QwuCHIgVgBWOSGh2sE8bx1wJ7rVV46LEwquxFwnzn9lhqRrwmapEU2sYWenBpoJ0z4cqMqjd02AHNr8c5XpR7E+uSc6CBArW5mFW12RTvJbqD5PofwOTHpWNwctDLieC0jQfipZg6QimoOuCMCZ4OPebltN7bs4+aoUllHDDiaocYUAuU7nvWvZoNZbKRvvie5ggFVRKXi/UBsiKoZDKmIHpY2Z2ii89A==
ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com;
 s=arcselector10001;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1;
 bh=c3RbtOAMMkQ+oLoWdnf0f1Y7EtnKscpNvF1OZ1CLJj8=;
 b=pH+OzRXTieQEvsLGJe7AHwVT97iw7bnmjBJyisCuYrOBxxYqrUbSNbZuCaJ2D3kwBUKWIbvAF1cpznurw/NbaK9s9FJTLtK3pb3UuOvYlOcrlClADOCHU6ij4nngixd7VdqmgbyIudnHMKECG0WsbtH15B6K0I9Mo4IGAgZDOpRQCrfNb52YqF4NdsXe/e95wWwgaVNS3ODdoDlTlUzn49KNvcaUIEhVZa4QRfh9sqAuOO+lc8ljTwopcRL9rP3ZvgQCuJQjTlhfI2rF14FMUI/OVXEx8Kz00YsHff70nd29HgHlTvGCGi8BoXQmbdDD8ZiIlNqo5QgBdY28gpKyDg==
ARC-Authentication-Results: i=2; mx.microsoft.com 1; spf=pass (sender ip is
 4.158.2.129) smtp.rcpttodomain=amd.com smtp.mailfrom=arm.com; dmarc=pass
 (p=none sp=none pct=100) action=none header.from=arm.com; dkim=pass
 (signature was verified) header.d=arm.com; arc=pass (0 oda=1 ltdi=1
 spf=[1,1,smtp.mailfrom=arm.com] dkim=[1,1,header.d=arm.com]
 dmarc=[1,1,header.from=arm.com])
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=arm.com; s=selector1;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck;
 bh=c3RbtOAMMkQ+oLoWdnf0f1Y7EtnKscpNvF1OZ1CLJj8=;
 b=VCYJI8a90Pt6O+yvqb11LbVlD+I9VYj0MbNei3wXV8k5CYmgQsRQoVcyQGHgycWnLKKek8Qzv3i+n2f1Mkd6prN4/fdKLT8DP6YdM642tfgpejbXhIhlIhsHHBGfdUL40Bs93c3RVsrfrsIRuJvLvynb+8SJO2CLv+kLinYCrW4=
X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 4.158.2.129)
 smtp.mailfrom=arm.com; dkim=pass (signature was verified)
 header.d=arm.com;dmarc=pass action=none header.from=arm.com;
Received-SPF: Pass (protection.outlook.com: domain of arm.com designates
 4.158.2.129 as permitted sender) receiver=protection.outlook.com;
 client-ip=4.158.2.129; helo=outbound-uk1.az.dlp.m.darktrace.com; pr=C
ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none;
 b=FU4+mLGHUBL0q8QV7CPFQR0mfPeQlbXYHwHUn2p3LSugnEk7kg8Rlj+pGpgzQ4DYnLmKQOq7btk1oHuTtdgrMi6HCC2HytwKvs2jznyscQy2VdIAbP6Mk6VlMqwfpgbTGrdCBTswYSp2yj1BJxXQzpXpm/uimWzAA3wnkARnmAOW7idqBa1rvArldvUaCXj4dxl18tlFxhtT1nSQ63TFhfDh+o8ic71xfaKCMiaVQfpnG78aECWhY9xHjfcB3G6yOVPV6RJ7Xj8uFR+mAQbofK/pboIW1+BtK5U1Y7XeCIpaEo3Wfu1Y8miAgJk203Tn6Db1syCGdSCEZaaCRdCmCQ==
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com;
 s=arcselector10001;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1;
 bh=c3RbtOAMMkQ+oLoWdnf0f1Y7EtnKscpNvF1OZ1CLJj8=;
 b=at/h3N4e3QHdEZF1xV7jVoB9uZLxn/WzXMN8VyLWXwAIO74EnxmhbcPhWPUr9+vv8uotSa3YQ7z2P49fXP8Ikj8wL6ihyQpgGuGce2fhytiZxFuSl2En7DGPAq5RixEViWsWMNUGBxWGj5cp/LDvoyd9gJMQ5TKX2SsAi1yTLm3/K5s9mrNGbKNsn7phV374B6+LvdtJnYc+MZ9mreeLouKh4vLDVKYdOPXksvWq4MzpIDg8IxV+5EsshOXKPIzfrR3IHEu1H2K0b0Cx7mco0xMSyxP4Cnx+tbJmc8uIoA0SqwVJ2uNaA+js+FaDJkh3LapTHhWCUrdSQQ2a18Vlqw==
ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass
 smtp.mailfrom=arm.com; dmarc=pass action=none header.from=arm.com; dkim=pass
 header.d=arm.com; arc=none
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=arm.com; s=selector1;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck;
 bh=c3RbtOAMMkQ+oLoWdnf0f1Y7EtnKscpNvF1OZ1CLJj8=;
 b=VCYJI8a90Pt6O+yvqb11LbVlD+I9VYj0MbNei3wXV8k5CYmgQsRQoVcyQGHgycWnLKKek8Qzv3i+n2f1Mkd6prN4/fdKLT8DP6YdM642tfgpejbXhIhlIhsHHBGfdUL40Bs93c3RVsrfrsIRuJvLvynb+8SJO2CLv+kLinYCrW4=
From: Luca Fancellu <Luca.Fancellu@arm.com>
To: "Orzel, Michal" <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>, Volodymyr Babchuk
	<Volodymyr_Babchuk@epam.com>
Subject: Re: [PATCH] xen/arm: skip holes in physical address space when
 setting up frametable
Thread-Topic: [PATCH] xen/arm: skip holes in physical address space when
 setting up frametable
Thread-Index: AQHczko4909b0LdR6E6hEGKgM2/tzrXjJWsAgAASSYCABMl7gA==
Date: Mon, 20 Apr 2026 14:06:59 +0000
Message-ID: <F79D2A76-9FD3-4E6F-A26F-286B57E87BD8@arm.com>
References: <20260417091124.39552-1-michal.orzel@amd.com>
 <DB4CBEA0-B901-466E-80AE-483FE00A1282@arm.com>
 <10ef543f-ec21-47ae-aeb2-f569f8d48e27@amd.com>
In-Reply-To: <10ef543f-ec21-47ae-aeb2-f569f8d48e27@amd.com>
Accept-Language: en-GB, en-US
Content-Language: en-US
X-MS-Has-Attach:
X-MS-TNEF-Correlator:
x-mailer: Apple Mail (2.3826.700.81.1.6)
Authentication-Results-Original: dkim=none (message not signed)
 header.d=none;dmarc=none action=none header.from=arm.com;
x-ms-traffictypediagnostic:
	DU2PR08MB7272:EE_|GV1PR08MB7754:EE_|DU6PEPF00009523:EE_|DU0PR08MB9227:EE_
X-MS-Office365-Filtering-Correlation-Id: 1b1bf034-3c67-44e9-a4f4-08de9ee63d6a
x-checkrecipientrouted: true
nodisclaimer: true
X-MS-Exchange-SenderADCheck: 1
X-MS-Exchange-AntiSpam-Relay: 0
X-Microsoft-Antispam-Untrusted:
 BCL:0;ARA:13230040|366016|1800799024|376014|38070700021|18096099003|56012099003|22082099003|18002099003;
X-Microsoft-Antispam-Message-Info-Original:
 s5SSsxLmF6r2SNlBYz4QwmhJknJ+ZiRAb6NDg0yXin9K9TQVVQdXwVf/CU/KuwcqntCRK0nN4QdLLD/VsBdIgeNdS/UXL6W26xkA3pZfoRxigmoDqe+8BDdPU0VF5U/jTFVI34lgKSAA9U+lFtKF2Y54gHM+wcTJH6vIyr6kT9hOjX5RW0KL5Ma0ae2noHmijSIS/LFOmPW9fIqC1eaFQozJmLfK5MYfKwOQDidiiGeFh+d2O+hL80thY8+OjieV+bzT9QSuEnVO7fkCc+Qk6e7j0YaAp44WLSPWu+UaNEa7j6hNggvPgYKyYFwDAEpk1RNOCxjrsTVqIQ6HK0zkiv5ygAb1Pwp/1Tk7a5vuXHIWnhnWO4hOCqjCX2dfXUdVsK03oTT3v+23npYCzqQQVAVagtGAMew3hsBdDIhwfG7nhaD65IR5STyE4L3dnUvwmetzgjK/DcuhN+Ofum/xrbIq9qBXcWy7q40C4u6Dv8tZCXQCpQUO4wCoiEN8S3KIvIntEhXYXGbZQQgjb3y77diTLcV4XzEtRvSTF0LR3tuFoPjmDygEdahlBCv8ORcjeD31HOq3xaezzcVJCJZFEbS/cueJYB4x+hHwoUTSaBL3DjbI04KfkjiC3YjHoKKP9DP43E/OhPFbljF3NmdFVTJbVegltaUDoBBw51PNlOXcBZelDWDCjzqMm42oG0NX0nUX8WtSm02HKZGmGdhMFNEoJ4sOcNkMEHuZaovE7zpU57tT678lewpZUIKnHJPVqnC8vvD8MXQjQGWvnboIXu6SETxPOaqJ4NUwGR5NhD0=
X-Forefront-Antispam-Report-Untrusted:
 CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:DU2PR08MB7272.eurprd08.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(366016)(1800799024)(376014)(38070700021)(18096099003)(56012099003)(22082099003)(18002099003);DIR:OUT;SFP:1101;
Content-Type: text/plain; charset="utf-8"
Content-ID: <A8C50F7F0541C044B9500362F4E3119F@eurprd08.prod.outlook.com>
Content-Transfer-Encoding: base64
MIME-Version: 1.0
X-Exchange-RoutingPolicyChecked:
 KbUiUOGExCkajYwT90qj+PnIrQfyP++DPj5OLZuLPEUYsGMMnCaQLHLkKahiwG62PY0psyRm7m0iBpmDzFWDrxpDMbrMaa7CYVo74vqhhv5aXNpoOHWsl2By2H8GA/6Y6nwr2u9aThWBE5lvcto0vwcNgQDNCzcXogobmhWpljfTeuRsyAIeoeQLK6tvizrtpfTcFE+ugUeC4hVcF+qRX96Z7S/mRuM5hwfwLtj1+XREwETMpWJcruOW4tQu6svsSz0fahcRcY9NXE1Mvjy2gtmcDm04yNLHFj4ZzD9wnbU3FLHLywsP/yNoKHJlkzhVULl/Kq4HIbrFv3J0DRMo+A==
X-MS-Exchange-Transport-CrossTenantHeadersStamped: GV1PR08MB7754
X-EOPAttributedMessage: 0
X-MS-Exchange-Transport-CrossTenantHeadersStripped:
 DU6PEPF00009523.eurprd02.prod.outlook.com
X-MS-PublicTrafficType: Email
X-MS-Office365-Filtering-Correlation-Id-Prvs:
	f5376d82-7c96-4995-2018-08de9ee61715
X-Microsoft-Antispam:
	BCL:0;ARA:13230040|82310400026|14060799003|35042699022|36860700016|376014|1800799024|22082099003|18002099003|18096099003|56012099003;
X-Microsoft-Antispam-Message-Info:
	LfEmI2mjXkyRwPz+oaxat913cV/TLxovJKyYKFt3RxS+PBiiglKi5psS92rwtXVH2vKFw66m+7CygTVV3y/x2W9sEKH3OSehEb09bHxzOhzEiOj45l6BoyRIqJ32lEa9U8/Iu9uTqI48hEaKM3Q5KUyL3jc+4k2qYK5mQ8LwOovJ+qJGlm9WqckOwrQL9tb6mbPRVT/2wvo0c5myAcISoaXGGp4ZbWfUnbTvLXRAyphnHD4DjVfAIFt66kdRvyHvOC/T4anC5w8LU2ZLtlZyzbmGE2nZNMcVpi/cEtuUTzdM7M7QcrWSZnAls/3+FrHCs60nvctppVUBrB4ryhjKHzNXd8EYszkZ4BVx2fa/1zvW8u5GpUClFE2ysOgKMQUdB/JzfMJoBlr+Wm4nxQGvJ6l3g2vamZjeCo++vBoIPxANn+bDr8Dw9RjsBCLmZ7l12bAiogKF4UDg8aqJRDLT1BQRxXITjt0vYaVb+Aco3wSQHPGZzlLfl4pcqph51u+72/QOhaW6ZFRDgY1KXIACGnNkMcfk+f70OgUsAFvKDgvuW7sHqBHmQJht61ekxXoC2Wjy3NOqIfjgFcfh3QtsQOax51T+jrHG6CtisYMG0cFQR5maLKbGEtBWsJLkiryXP8HTWvvhsM3IRrLP9QVfV4QLZVKSPboEDiMgh3vQdtKAMdvRlUp5bWxt5+bQKSI4dwq2VuTOBGYWU6S6L9B3CnbIQJjMQiKBNzgDVGbLstuqsd0LzZsHgDmFS0/7wvSZK0O4rwk9FE0F91bK/HBy4w==
X-Forefront-Antispam-Report:
	CIP:4.158.2.129;CTRY:GB;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:outbound-uk1.az.dlp.m.darktrace.com;PTR:InfoDomainNonexistent;CAT:NONE;SFS:(13230040)(82310400026)(14060799003)(35042699022)(36860700016)(376014)(1800799024)(22082099003)(18002099003)(18096099003)(56012099003);DIR:OUT;SFP:1101;
X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1
X-MS-Exchange-AntiSpam-MessageData-0:
	/9c6jn+E47YcPEHDJj/pW2NRkTmuxoWYysrw56rW75bNO+tCoLQH9ezgsTF882z6iJMfoCEbET1/blEks3bmZu2H9DSAnNlj0bD/cttUmko27ZzDD1T5B15tHnaYRYFDn/HELnocuig5zhZN9/CVnQYyinsROpnd2lAeKtD5I0W6Zdef81vfX13Y475ieFFfZe/ksGKhhn3Mneyq6mePjjkCsK7pckdlLwy1iC1oEQrTnKWlLjDuNHufPKIrZmR6lkESFXsl6IHA0vHh/rwYbzab1p6JsAUEU6iECDLM3YZh713XKAntJag2HdIriMYCA//Jw24sW/7qDSU7zftP7v+9EhdeR6FZPobKymC7yeK6wXMtYtE1BBvy5DwSL7/BwtLsu/KrP1cxiocDhe/M8g1gkq99PZPf/Qya06R41aqqKkvJNRxOqC2VCwy+gGG5
X-OriginatorOrg: arm.com
X-MS-Exchange-CrossTenant-OriginalArrivalTime: 20 Apr 2026 14:08:04.2106
 (UTC)
X-MS-Exchange-CrossTenant-Network-Message-Id: 1b1bf034-3c67-44e9-a4f4-08de9ee63d6a
X-MS-Exchange-CrossTenant-Id: f34e5979-57d9-4aaa-ad4d-b122a662184d
X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=f34e5979-57d9-4aaa-ad4d-b122a662184d;Ip=[4.158.2.129];Helo=[outbound-uk1.az.dlp.m.darktrace.com]
X-MS-Exchange-CrossTenant-AuthSource:
	DU6PEPF00009523.eurprd02.prod.outlook.com
X-MS-Exchange-CrossTenant-AuthAs: Anonymous
X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem
X-MS-Exchange-Transport-CrossTenantHeadersStamped: DU0PR08MB9227
X-purgate-ID: tlsNG-16d1c6/1776694089-CDF6BD75-5EDF456E/0/0
X-purgate-type: clean
X-purgate-size: 9304

SEkgTWljaGFsLA0KDQo+Pj4gK3ZvaWQgX19pbml0IGluaXRfZnJhbWV0YWJsZShwYWRkcl90IHJh
bV9zdGFydCkNCj4+PiArew0KPj4+ICsgICAgdW5zaWduZWQgaW50IHNpZHgsIG5pZHgsIG1heF9p
ZHg7DQo+Pj4gDQo+Pj4gICAgLyoNCj4+PiAgICAgKiBUaGUgc2l6ZSBvZiBwYWRkcl90IHNob3Vs
ZCBiZSBzdWZmaWNpZW50IGZvciB0aGUgY29tcGxldGUgcmFuZ2Ugb2YNCj4+PiBAQCAtMjYsMjQg
KzQ3LDM0IEBAIHZvaWQgX19pbml0IHNldHVwX2ZyYW1ldGFibGVfbWFwcGluZ3MocGFkZHJfdCBw
cywgcGFkZHJfdCBwZSkNCj4+PiAgICBCVUlMRF9CVUdfT04oKHNpemVvZihwYWRkcl90KSAqIEJJ
VFNfUEVSX0JZVEUpIDwgUEFERFJfQklUUyk7DQo+Pj4gICAgQlVJTERfQlVHX09OKHNpemVvZihz
dHJ1Y3QgcGFnZV9pbmZvKSAhPSBQQUdFX0lORk9fU0laRSk7DQo+Pj4gDQo+Pj4gLSAgICBpZiAo
IGZyYW1ldGFibGVfc2l6ZSA+IEZSQU1FVEFCTEVfU0laRSApDQo+Pj4gLSAgICAgICAgcGFuaWMo
IlRoZSBmcmFtZXRhYmxlIGNhbm5vdCBjb3ZlciB0aGUgcGh5c2ljYWwgcmVnaW9uICUjIlBSSXBh
ZGRyIiAtICUjIlBSSXBhZGRyIlxuIiwNCj4+PiAtICAgICAgICAgICAgICBwcywgcGUpOw0KPj4+
ICsgICAgbWF4X2lkeCA9IERJVl9ST1VORF9VUChtYXhfcGR4LCBQRFhfR1JPVVBfQ09VTlQpOw0K
Pj4+ICsgICAgZnJhbWV0YWJsZV9iYXNlX3BkeCA9IG1mbl90b19wZHgobWFkZHJfdG9fbWZuKHJh
bV9zdGFydCkpOw0KPj4+IA0KPj4+IC0gICAgZnJhbWV0YWJsZV9iYXNlX3BkeCA9IG1mbl90b19w
ZHgobWFkZHJfdG9fbWZuKHBzKSk7DQo+Pj4gLSAgICAvKiBSb3VuZCB1cCB0byAyTSBvciAzMk0g
Ym91bmRhcnksIGFzIGFwcHJvcHJpYXRlLiAqLw0KPj4+IC0gICAgZnJhbWV0YWJsZV9zaXplID0g
Uk9VTkRVUChmcmFtZXRhYmxlX3NpemUsIG1hcHBpbmdfc2l6ZSk7DQo+Pj4gLSAgICBiYXNlX21m
biA9IGFsbG9jX2Jvb3RfcGFnZXMoZnJhbWV0YWJsZV9zaXplID4+IFBBR0VfU0hJRlQsIDMyPDwo
MjAtMTIpKTsNCj4+PiArICAgIC8qDQo+Pj4gKyAgICAgKiBwZHhfdG9fcGFnZShwZHhfcykgaW4g
aW5pdF9mcmFtZXRhYmxlX2NodW5rIG11c3QgYmUgcGFnZS1hbGlnbmVkDQo+Pj4gKyAgICAgKiBm
b3IgbWFwX3BhZ2VzX3RvX3hlbigpLiBBbGlnbmluZyB0byBQRFhfR1JPVVBfQ09VTlQgZ3VhcmFu
dGVlcyB0aGlzDQo+Pj4gKyAgICAgKiBiZWNhdXNlIFBEWF9HUk9VUF9DT1VOVCAqIHNpemVvZihw
YWdlX2luZm8pIGlzIGFsd2F5cyBhIG11bHRpcGxlIG9mDQo+Pj4gKyAgICAgKiBQQUdFX1NJWkUg
YnkgY29uc3RydWN0aW9uLg0KPj4+ICsgICAgICovDQo+Pj4gKyAgICBmcmFtZXRhYmxlX2Jhc2Vf
cGR4ID0gUk9VTkRET1dOKGZyYW1ldGFibGVfYmFzZV9wZHgsIFBEWF9HUk9VUF9DT1VOVCk7DQo+
PiANCj4+IFdlIGFyZSBub3cgcm91bmRpbmcgZG93biBmcmFtZXRhYmxlX2Jhc2VfcGR4IHdoaWNo
IGJlZm9yZSB0aGlzIHBhdGNoIGl0IHdhcyB0aGUgc3RhcnQgb2YgdGhlIHJhbSwNCj4+IGJ1dCBp
biB4ZW4veGVuL2FyY2gvYXJtL2luY2x1ZGUvYXNtL21tLmgsIG1mbl92YWxpZChtZm4pIGlzIHVz
aW5nIGZyYW1ldGFibGVfYmFzZV9wZHggdG8gY2hlY2sgZm9yDQo+PiBtZm4gdmFsaWRpdHksIHRo
aXMgbWVhbnMgdGhhdCB3ZSBjb3VsZCBwYXNzIGFuIG1mbiBiZWZvcmUgdGhlIHN0YXJ0IG9mIHRo
ZSByYW0gYW5kIGlmIF9fbWZuX3ZhbGlkIGlzIGhhcHB5LA0KPj4gd2UgYXJlIGdldHRpbmcgYSBy
ZWdyZXNzaW9uLg0KPj4gDQo+PiBDYW4gdGhpcyBoYXBwZW4gb3IgYW0gSSBtaXNzaW5nIHNvbWV0
aGluZz8NCj4gbWZuX3ZhbGlkKCkgY2FuIGluZGVlZCByZXR1cm4gdHJ1ZSBmb3IgYW4gTUZOIGJl
bG93IHJhbV9zdGFydCB0aGF0IGZhbGxzDQo+IGluIHRoZSBzYW1lIFBEWCBncm91cCwgYnV0IHRo
aXMgaXMgc2FmZS4gaW5pdF9mcmFtZXRhYmxlX2NodW5rKCkgbWFwcw0KPiBhbmQgemVyb2VzIHRo
ZSBmcmFtZXRhYmxlIGZvciB0aGF0IHJhbmdlLCBzbyBtZm5fdG9fcGFnZSgpIHdvbid0IGZhdWx0
Lg0KPiBUaGUgemVyb2VkIHBhZ2VfaW5mbyBoYXMgY291bnRfaW5mbyA9PSAwIGFuZCBubyBvd25l
ciwgc28gYW55IGdldF9wYWdlKCkNCj4gY2FsbCBvbiBpdCB3aWxsIGZhaWwg4oCUIHRoZSBwYWdl
IGlzIGVmZmVjdGl2ZWx5IGluZXJ0Lg0KDQpZZXMsIEnigJl2ZSBjaGVja2VkIGFuZCBtYW55IHBh
dGggcmVseWluZyBvbiBtZm5fdmFsaWQoKSBnbyBhbHNvIHRocm91Z2ggbWZuX3RvX3BhZ2UoKQ0K
YW5kL29yIGdldF9wYWdlKCksIHRoZXJlIGlzIG9ubHkgb25lIGluIHByb2Nlc3Nfc2htKCkgdGhh
dCBwb3RlbnRpYWxseSBjb3VsZCBhZGQgYSBzaGFyZWQgbWVtb3J5IHBhZ2UNCmdpdmVuIHRoYXQg
d2UgYXJlIHJlbGF4aW5nIG1mbl92YWxpZCBub3cuDQoNCknigJltIHRyeWluZyBhbHNvIHRvIGZv
bGxvdyBpc19pb21lbV9wYWdlKCksIHRvIGNoZWNrIGlmIHN1YnNlcXVlbnQgbWZuX3RvX3BhZ2Uo
KSBmYWlsIHNhZmVseSwgYnV0IEkgdGhpbmsgdGhhdCBkZXBlbmRpbmcNCm9uIHRoYXQgKG1mbl92
YWxpZCkgdGhlIHBhZ2Ugd2lsbCBiZSBvbmx5IHRyZWF0ZWQgZGlmZmVyZW50bHksIG5vdCBzdXJl
IGlmIGl04oCZcyBhIGxhdGVudCBidWcgdG8gbGVhdmUgbWZuX3ZhbGlkKCkgYXMgaXQgaXMuDQoN
CldvdWxkIGl0IGJlIHZhbGlkIHRvIGhhdmUgc29tZXRoaW5nIGxpa2UgbWZuX3RvX3BhZ2UoKSAh
PSAwIHRvIGJlIHBhcnQgb2YgbWZuX3ZhbGlkKCkgdG8gZW5zdXJlIGl04oCZcyBhIHJlYWwgaG9z
dCByYW0gcGFnZT8NCknigJltIHRydWx5IGFza2luZyBoZXJlIGJlY2F1c2UgSSBkaWRu4oCZdCBj
aGVjayBpZiBpdOKAmXMgZG9hYmxlLg0KDQpPdGhlcndpc2Ugd2UgY291bGQgc3BsaXQgdGhlIHJv
dW5kIGRvd24gYW5kIHRoZSBmcmFtZXRhYmxlX2Jhc2VfcGR4IGluIHRoaXMgd2F5IG1heWJlPw0K
DQpkaWZmIC0tZ2l0IGEveGVuL2FyY2gvYXJtL2luY2x1ZGUvYXNtL21tLmggYi94ZW4vYXJjaC9h
cm0vaW5jbHVkZS9hc20vbW0uaA0KaW5kZXggNjA1ZWMxYmNkMTA4Li5hNjgwMmQzMzExNzggMTAw
NjQ0DQotLS0gYS94ZW4vYXJjaC9hcm0vaW5jbHVkZS9hc20vbW0uaA0KKysrIGIveGVuL2FyY2gv
YXJtL2luY2x1ZGUvYXNtL21tLmgNCkBAIC0xODMsNiArMTgzLDcgQEAgc3RydWN0IHBhZ2VfaW5m
bw0KIA0KIC8qIFBEWCBvZiB0aGUgZmlyc3QgcGFnZSBpbiB0aGUgZnJhbWUgdGFibGUuICovDQog
ZXh0ZXJuIHVuc2lnbmVkIGxvbmcgZnJhbWV0YWJsZV9iYXNlX3BkeDsNCitleHRlcm4gdW5zaWdu
ZWQgbG9uZyBmcmFtZXRhYmxlX2Jhc2VfZ3JwOw0KIA0KICNkZWZpbmUgUERYX0dST1VQX1NISUZU
IFNFQ09ORF9TSElGVA0KIA0KQEAgLTIyOCw5ICsyMjksOSBAQCBzdGF0aWMgaW5saW5lIHZvaWQg
X19pb21lbSAqaW9yZW1hcF93YyhwYWRkcl90IHN0YXJ0LCBzaXplX3QgbGVuKQ0KIA0KIC8qIENv
bnZlcnQgYmV0d2VlbiBtYWNoaW5lIGZyYW1lIG51bWJlcnMgYW5kIHBhZ2UtaW5mbyBzdHJ1Y3R1
cmVzLiAqLw0KICNkZWZpbmUgbWZuX3RvX3BhZ2UobWZuKSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgXA0KLSAgICAoZnJhbWVfdGFibGUgKyAobWZuX3RvX3BkeCht
Zm4pIC0gZnJhbWV0YWJsZV9iYXNlX3BkeCkpDQorICAgIChmcmFtZV90YWJsZSArIChtZm5fdG9f
cGR4KG1mbikgLSBmcmFtZXRhYmxlX2Jhc2VfZ3JwKSkNCiAjZGVmaW5lIHBhZ2VfdG9fbWZuKHBn
KSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwNCi0gICAgcGR4
X3RvX21mbigodW5zaWduZWQgbG9uZykoKHBnKSAtIGZyYW1lX3RhYmxlKSArIGZyYW1ldGFibGVf
YmFzZV9wZHgpDQorICAgIHBkeF90b19tZm4oKHVuc2lnbmVkIGxvbmcpKChwZykgLSBmcmFtZV90
YWJsZSkgKyBmcmFtZXRhYmxlX2Jhc2VfZ3JwKQ0KIA0KIC8qIENvbnZlcnQgYmV0d2VlbiBtYWNo
aW5lIGFkZHJlc3NlcyBhbmQgcGFnZS1pbmZvIHN0cnVjdHVyZXMuICovDQogI2RlZmluZSBtYWRk
cl90b19wYWdlKG1hKSBtZm5fdG9fcGFnZShtYWRkcl90b19tZm4obWEpKQ0KZGlmZiAtLWdpdCBh
L3hlbi9hcmNoL2FybS9pbmNsdWRlL2FzbS9tbXUvbW0uaCBiL3hlbi9hcmNoL2FybS9pbmNsdWRl
L2FzbS9tbXUvbW0uaA0KaW5kZXggN2Y0ZDU5MTM3ZDBkLi40OGEwZTM0MjMwN2IgMTAwNjQ0DQot
LS0gYS94ZW4vYXJjaC9hcm0vaW5jbHVkZS9hc20vbW11L21tLmgNCisrKyBiL3hlbi9hcmNoL2Fy
bS9pbmNsdWRlL2FzbS9tbXUvbW0uaA0KQEAgLTg4LDcgKzg4LDcgQEAgc3RhdGljIGlubGluZSBz
dHJ1Y3QgcGFnZV9pbmZvICp2aXJ0X3RvX3BhZ2UoY29uc3Qgdm9pZCAqdikNCiANCiAgICAgcGR4
ID0gKHZhIC0gWEVOSEVBUF9WSVJUX1NUQVJUKSA+PiBQQUdFX1NISUZUOw0KICAgICBwZHggKz0g
bWZuX3RvX3BkeChkaXJlY3RtYXBfbWZuX3N0YXJ0KTsNCi0gICAgcmV0dXJuIGZyYW1lX3RhYmxl
ICsgcGR4IC0gZnJhbWV0YWJsZV9iYXNlX3BkeDsNCisgICAgcmV0dXJuIGZyYW1lX3RhYmxlICsg
cGR4IC0gZnJhbWV0YWJsZV9iYXNlX2dycDsNCiB9DQogDQogLyoNCmRpZmYgLS1naXQgYS94ZW4v
YXJjaC9hcm0vbW0uYyBiL3hlbi9hcmNoL2FybS9tbS5jDQppbmRleCBlNmI2NTE5NTY5MjcuLjc2
NTg5NmVjMmMzMiAxMDA2NDQNCi0tLSBhL3hlbi9hcmNoL2FybS9tbS5jDQorKysgYi94ZW4vYXJj
aC9hcm0vbW0uYw0KQEAgLTI4LDYgKzI4LDggQEANCiANCiB1bnNpZ25lZCBsb25nIGZyYW1ldGFi
bGVfYmFzZV9wZHggX19yZWFkX21vc3RseTsNCiANCit1bnNpZ25lZCBsb25nIGZyYW1ldGFibGVf
YmFzZV9ncnAgX19yZWFkX21vc3RseTsNCisNCiAjaWYgZGVmaW5lZChDT05GSUdfQVJNXzY0KSB8
fCBkZWZpbmVkKENPTkZJR19NUFUpDQogdm9pZCBfX2luaXQgc2V0dXBfbW0odm9pZCkNCiB7DQpk
aWZmIC0tZ2l0IGEveGVuL2FyY2gvYXJtL21tdS9tbS5jIGIveGVuL2FyY2gvYXJtL21tdS9tbS5j
DQppbmRleCA0YjRkYTM0OWMxNmMuLjExYzQ3YzJkMGUyNSAxMDA2NDQNCi0tLSBhL3hlbi9hcmNo
L2FybS9tbXUvbW0uYw0KKysrIGIveGVuL2FyY2gvYXJtL21tdS9tbS5jDQpAQCAtOSw3ICs5LDcg
QEANCiAjaW5jbHVkZSA8eGVuL3N0cmluZy5oPg0KIA0KICN1bmRlZiBwZHhfdG9fcGFnZQ0KLSNk
ZWZpbmUgcGR4X3RvX3BhZ2UocGR4KSBnY2MxMV93cmFwKGZyYW1lX3RhYmxlICsgKChwZHgpIC0g
ZnJhbWV0YWJsZV9iYXNlX3BkeCkpDQorI2RlZmluZSBwZHhfdG9fcGFnZShwZHgpIGdjYzExX3dy
YXAoZnJhbWVfdGFibGUgKyAoKHBkeCkgLSBmcmFtZXRhYmxlX2Jhc2VfZ3JwKSkNCiANCiBzdGF0
aWMgdm9pZCBfX2luaXQNCiBpbml0X2ZyYW1ldGFibGVfY2h1bmsodW5zaWduZWQgbG9uZyBwZHhf
cywgdW5zaWduZWQgbG9uZyBwZHhfZSkNCkBAIC01NiwxMiArNTYsMTIgQEAgdm9pZCBfX2luaXQg
aW5pdF9mcmFtZXRhYmxlKHBhZGRyX3QgcmFtX3N0YXJ0KQ0KICAgICAgKiBiZWNhdXNlIFBEWF9H
Uk9VUF9DT1VOVCAqIHNpemVvZihwYWdlX2luZm8pIGlzIGFsd2F5cyBhIG11bHRpcGxlIG9mDQog
ICAgICAqIFBBR0VfU0laRSBieSBjb25zdHJ1Y3Rpb24uDQogICAgICAqLw0KLSAgICBmcmFtZXRh
YmxlX2Jhc2VfcGR4ID0gUk9VTkRET1dOKGZyYW1ldGFibGVfYmFzZV9wZHgsIFBEWF9HUk9VUF9D
T1VOVCk7DQorICAgIGZyYW1ldGFibGVfYmFzZV9ncnAgPSBST1VORERPV04oZnJhbWV0YWJsZV9i
YXNlX3BkeCwgUERYX0dST1VQX0NPVU5UKTsNCiANCi0gICAgaWYgKCAobWF4X3BkeCAtIGZyYW1l
dGFibGVfYmFzZV9wZHgpID4gRlJBTUVUQUJMRV9OUiApDQorICAgIGlmICggKG1heF9wZHggLSBm
cmFtZXRhYmxlX2Jhc2VfZ3JwKSA+IEZSQU1FVEFCTEVfTlIgKQ0KICAgICAgICAgcGFuaWMoIkZy
YW1ldGFibGUgdG9vIHNtYWxsXG4iKTsNCiANCi0gICAgZm9yICggc2lkeCA9IChmcmFtZXRhYmxl
X2Jhc2VfcGR4IC8gUERYX0dST1VQX0NPVU5UKTsgOyBzaWR4ID0gbmlkeCApDQorICAgIGZvciAo
IHNpZHggPSAoZnJhbWV0YWJsZV9iYXNlX2dycCAvIFBEWF9HUk9VUF9DT1VOVCk7IDsgc2lkeCA9
IG5pZHggKQ0KICAgICB7DQogICAgICAgICB1bnNpZ25lZCBpbnQgZWlkeDsNCiANCmRpZmYgLS1n
aXQgYS94ZW4vYXJjaC9hcm0vbXB1L21tLmMgYi94ZW4vYXJjaC9hcm0vbXB1L21tLmMNCmluZGV4
IGJkN2IwMmZkMzNiNS4uODcwYmZkMmJlNWU3IDEwMDY0NA0KLS0tIGEveGVuL2FyY2gvYXJtL21w
dS9tbS5jDQorKysgYi94ZW4vYXJjaC9hcm0vbXB1L21tLmMNCkBAIC0yMDcsNiArMjA3LDcgQEAg
dm9pZCBfX2luaXQgaW5pdF9mcmFtZXRhYmxlKHBhZGRyX3QgcmFtX3N0YXJ0KQ0KICAgICBCVUlM
RF9CVUdfT04oc2l6ZW9mKHN0cnVjdCBwYWdlX2luZm8pICE9IFBBR0VfSU5GT19TSVpFKTsNCiAN
CiAgICAgZnJhbWV0YWJsZV9iYXNlX3BkeCA9IG1mbl90b19wZHgobWFkZHJfdG9fbWZuKHJhbV9z
dGFydCkpOw0KKyAgICBmcmFtZXRhYmxlX2Jhc2VfZ3JwID0gZnJhbWV0YWJsZV9iYXNlX3BkeDsN
CiAgICAgbnJfcGR4cyA9IG1heF9wZHggLSBmcmFtZXRhYmxlX2Jhc2VfcGR4Ow0KICAgICBmcmFt
ZXRhYmxlX3NpemUgPSBucl9wZHhzICogc2l6ZW9mKHN0cnVjdCBwYWdlX2luZm8pOw0KIA0KDQpO
b3Qgc3VyZSEgTWF5YmUgYW5vdGhlciBtYWludGFpbmVyIGNhbiBnaXZlIGFub3RoZXIgb3Bpbmlv
biBpZiBJ4oCZbSBvdmVydGhpbmtpbmcgdG9vIG11Y2ggb24gbWZuX3ZhbGlkKCkNCg0KQ2hlZXJz
LA0KTHVjYQ0KDQoNCg0K


From xen-devel-bounces@lists.xenproject.org Mon Apr 20 14:17:30 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 20 Apr 2026 14:17:30 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1286033.1567150 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wEpRF-0000MY-2t; Mon, 20 Apr 2026 14:17:25 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1286033.1567150; Mon, 20 Apr 2026 14:17: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 1wEpRE-0000MR-WB; Mon, 20 Apr 2026 14:17:24 +0000
Received: by outflank-mailman (input) for mailman id 1286033;
 Mon, 20 Apr 2026 14:17:24 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92) id 1wEpRE-0000ML-32
 for xen-devel@lists.xenproject.org; Mon, 20 Apr 2026 14:17:24 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wEpRC-0047OK-FE
 for xen-devel@lists.xenproject.org; Mon, 20 Apr 2026 16:17:22 +0200
Received: from [10.42.69.10] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <jbeulich@suse.com>)
 id 69e6355a-bab6-0a2a0a5309dd-0a2a450aa6c4-32
 for <xen-devel@lists.xenproject.org>; Mon, 20 Apr 2026 16:17:22 +0200
Received: from [209.85.128.48] (helo=mail-wm1-f48.google.com)
 by tlsNG-4011c0.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.1)
 (envelope-from <jbeulich@suse.com>)
 id 69e63572-56b3-0a2a450a0019-d1558030a5e7-3
 for <xen-devel@lists.xenproject.org>; Mon, 20 Apr 2026 16:17:22 +0200
Received: by mail-wm1-f48.google.com with SMTP id
 5b1f17b1804b1-48a3e9862f0so4131355e9.1
 for <xen-devel@lists.xenproject.org>; Mon, 20 Apr 2026 07:17:22 -0700 (PDT)
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-43fe4e4d112sm33017573f8f.29.2026.04.20.07.17.20
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Mon, 20 Apr 2026 07:17:21 -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=google header.d=suse.com header.i="@suse.com" header.h="Content-Transfer-Encoding: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=1776694642; x=1777299442; darn=lists.xenproject.org;
        h=content-transfer-encoding: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;
        bh=wg5SNyawniDLyLPrqcYAyIPgt3DlZagpj1lREfaB3qw=;
        b=FI+pb3otTrtWMiFcUDR730IpcXvDtiTcZ0rdY2pZCFKr0+44e6Ep9whF4ZOLxX0mmx
         cqGSAzbXytwAatQ9L9EE8vXwLnwr67q45mLijyLpIq3fPSUzv0quQ0NC501R0znjHc8D
         YE/PQThlAnbs5fEX/SsOCn40j6T3fsbsYEOxgQGSTbHeQJWOGPfEu/bIJ1bQOr6MPgZp
         SQNXOUGa0MYYZ4hM8N76+K5jbVz5T/OZ8kNrnBlsPG1zsBVkjw2AeLib4g2q2foYb0Ez
         ronuhSeHHzOLfNfsDuIqSXpT7VEcqjV1swF9XfAAo9vRxtn3kmj+5fcUPODkhEUcrKCA
         ONkg==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20251104; t=1776694642; x=1777299442;
        h=content-transfer-encoding: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;
        bh=wg5SNyawniDLyLPrqcYAyIPgt3DlZagpj1lREfaB3qw=;
        b=I5F+RKDzVpgVtsnr2wODQma7h8PWBg+BFHrpGR9cm/9XZ/GOxgRoiwtV/rlpOvSaIf
         f6QYMtvJnTuGeiWipJ1kM6ez0szEZfWuA9I0+HNX4qqtw7rcYtPLbX8ffuYHcn5sR7WQ
         pklaspygFYcY1jbko6LT8YNSbMC/Xtv52ZsD75KaIlUxsh3lXVgBajZJzknBh8Hu2X13
         GjEiy1UpwK4hwMYvuJ+Nfm8GX7gRmmC3pnmvPPRunHFhQj4Ol082l1gpnkT/w9hAa1NV
         Dz6uxeTeZ4YpZeCSNmNmrrQtctf6rtSGe02nkJIEE+KkYpRfPdda9Ccd4F3IeaZVUD6J
         PFwA==
X-Forwarded-Encrypted: i=1; AFNElJ9m2h9DV1p+hv7hr+9djf3ecw6tqwJD5ZKDB8T5gQ4+AIxTNBFk5vFukD+FUDLfVATO9BNWPnMK6Uw=@lists.xenproject.org
X-Gm-Message-State: AOJu0YyRyrQiyiYs+UFupYcS9sWjeqpTrpm+0JkN53Shy8QlTerE3zIy
	hnWhrHSp2WDsMnz9i4HnJY40MRLW3lbg/TFbh0a1xkygIUvkCSCoDYU+MmqAMHcWKg==
X-Gm-Gg: AeBDietZUP4fGY/ptM58q9E66AWR6+QadqJ1MCc5DsXkFe/Bca5mEHmiguZ38XE0yhN
	wyA+Gk5rlIyU3u2L64Mu/7PcdOrjBzTouxjFwPME+eEYHrVpJdt7nZGJoli5Kbzsl4tqH90Nke2
	n/SAw71jolWY/PA6o67Y3DOEFPePtEqQfwyRY2yypEpq/YaBMkCnYzjA0FEwFZwJ9GCq8cNtiYI
	3cL9eh+Nyrissr/m2nv7owrHnJ+886/JAAu1RRn4zkwC1uaDxM6sWngEdZUrTlTY2UHhReuQIUg
	ueBGzcNQEgJzkCaAbbg6x2JaYGKHq9VI94VUw4LH0SOflQOnBgyUxsCKhWbxPQG/lDG1bYPxbBQ
	By9lc5ARsBWM45WZr9wBUf9JDJIEjA/Wz/u/yCiLzeKjWbySikAj43oQAhUUUa9A7Tu9w9gdpHF
	sLoQzVztq9H3yVtrz5iuqRNYLRcWj6eajDW1LD5f2rK4nhldw9oN9wQYglRdOGRZO/3dSi/AJ3d
	S7pekb1CIBWCatrTHQEVKinEg==
X-Received: by 2002:a05:600c:8b6b:b0:485:3c2e:60d5 with SMTP id 5b1f17b1804b1-488fb8859ddmr185446655e9.2.1776694641669;
        Mon, 20 Apr 2026 07:17:21 -0700 (PDT)
Message-ID: <a065f80f-0de5-4bfc-974c-31727dfa91ea@suse.com>
Date: Mon, 20 Apr 2026 16:17:22 +0200
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH v3 01/12] xen/riscv: implement get_page_from_gfn()
To: Oleksii Kurochko <oleksii.kurochko@gmail.com>
Cc: Romain Caritey <Romain.Caritey@microchip.com>,
 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.pau@citrix.com>,
 Stefano Stabellini <sstabellini@kernel.org>, xen-devel@lists.xenproject.org
References: <cover.1775836193.git.oleksii.kurochko@gmail.com>
 <e32db25650546146594635821441494ee86648e9.1775836193.git.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: <e32db25650546146594635821441494ee86648e9.1775836193.git.oleksii.kurochko@gmail.com>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 7bit
X-purgate-ID: tlsNG-4011c0/1776694642-465748B7-649D5572/10/73395122804
X-purgate-type: spam
X-purgate-size: 2066

On 10.04.2026 17:54, Oleksii Kurochko wrote:
> The function is implemented out-of-line rather than as a static inline,
> to avoid header ordering issues where struct domain is incomplete when
> asm/p2m.h is included, leading to build failures:
>   In file included from ./arch/riscv/include/asm/domain.h:10,
>                    from ./include/xen/domain.h:16,
>                    from ./include/xen/sched.h:11,
>                    from ./include/xen/event.h:12,
>                    from common/cpu.c:3:
>   ./arch/riscv/include/asm/p2m.h: In function 'get_page_from_gfn':
>   ./arch/riscv/include/asm/p2m.h:50:33: error: invalid use of undefined type 'struct domain'
>      50 | #define p2m_get_hostp2m(d) (&(d)->arch.p2m)
>         |                                 ^~
>   ./arch/riscv/include/asm/p2m.h:180:38: note: in expansion of macro 'p2m_get_hostp2m'
>     180 |         return p2m_get_page_from_gfn(p2m_get_hostp2m(d), _gfn(gfn), t);
>         |                                      ^~~~~~~~~~~~~~~
>   make[2]: *** [Rules.mk:253: common/cpu.o] Error 1
>   make[1]: *** [build.mk:72: common] Error 2
>   make: *** [Makefile:623: xen] Error 2

I still think this can and preferably would be sorted, but for now this is
good enough.

> Signed-off-by: Oleksii Kurochko <oleksii.kurochko@gmail.com>

Acked-by: Jan Beulich <jbeulich@suse.com>
with a comment adjustment:

> --- a/xen/arch/riscv/p2m.c
> +++ b/xen/arch/riscv/p2m.c
> @@ -1534,3 +1534,16 @@ void p2m_handle_vmenter(void)
>       * won't be reused until need_flush is set to true.
>       */
>  }
> +
> +struct page_info *get_page_from_gfn(struct domain *d, unsigned long gfn,
> +                                    p2m_type_t *t, p2m_query_t q)
> +{
> +    /*
> +     * system domains are domains which doesn't have p2m translation tables,
> +     * so they can't use p2m_get_page_from_gfn() and extra care should be
> +     * done for them.
> +     */

This violates style and has two grammar issues. I'll take care of this
when committing.

Jan


From xen-devel-bounces@lists.xenproject.org Mon Apr 20 14:22:57 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 20 Apr 2026 14:22:57 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1286048.1567177 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wEpWX-0002Xa-2q; Mon, 20 Apr 2026 14:22:53 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1286048.1567177; Mon, 20 Apr 2026 14:22: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 1wEpWX-0002XT-0F; Mon, 20 Apr 2026 14:22:53 +0000
Received: by outflank-mailman (input) for mailman id 1286048;
 Mon, 20 Apr 2026 14:22:52 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <luca.fancellu@arm.com>) id 1wEpWW-0002Oa-9c
 for xen-devel@lists.xenproject.org; Mon, 20 Apr 2026 14:22:52 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wEpWV-000Q5n-Mh
 for xen-devel@lists.xenproject.org; Mon, 20 Apr 2026 16:22:51 +0200
Received: from [10.42.69.11] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <luca.fancellu@arm.com>)
 id 69e636b5-e002-0a2a0a5209dd-0a2a450bd802-14
 for <xen-devel@lists.xenproject.org>; Mon, 20 Apr 2026 16:22:51 +0200
Received: from [217.140.110.172] (helo=foss.arm.com)
 by tlsNG-42698a.mxtls.expurgate.net with ESMTP (eXpurgate 4.56.1)
 (envelope-from <luca.fancellu@arm.com>)
 id 69e636ba-212f-0a2a450b0019-d98c6eacb892-1
 for <xen-devel@lists.xenproject.org>; Mon, 20 Apr 2026 16:22:51 +0200
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 9B8A516F3;
 Mon, 20 Apr 2026 07:22:44 -0700 (PDT)
Received: from e125770.cambridge.arm.com (e125770.arm.com [10.1.199.43])
 by usa-sjc-imap-foss1.foss.arm.com (Postfix) with ESMTPSA id B51A73F7B4;
 Mon, 20 Apr 2026 07:22:48 -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=foss header.d=arm.com header.i="@arm.com" header.h="From:To:Cc:Subject:Date:In-Reply-To:References"
DKIM-Signature: v=1; a=rsa-sha256; c=simple/simple; d=arm.com; s=foss;
	t=1776694970; bh=+vsui9ontMRbImpr24T712HFqgwztKghYeAs6axxQu4=;
	h=From:To:Cc:Subject:Date:In-Reply-To:References:From;
	b=m38uLElW2SN88vFJmSSpwqVV8dKLr9Lbp4AxlgCsc1zUQDEzF+Umb/3wGlILHWY/I
	 M09xu8MndOKOFF44+ps7FUj+5dISiq8ySeIgEdEqeghFnWq0JjNtUUnlyDnCZxzKo2
	 G7i66FNS51Vz5RLkuDkyLKNckEVha/8ScqSngKfE=
From: Luca Fancellu <luca.fancellu@arm.com>
To: xen-devel@lists.xenproject.org
Cc: Harry Ramsey <harry.ramsey@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>,
	=?UTF-8?q?Roger=20Pau=20Monn=C3=A9?= <roger.pau@citrix.com>
Subject: [PATCH v4 2/3] arm/mpu: Introduce `v8r_el1_msa` device tree property for domains
Date: Mon, 20 Apr 2026 15:22:23 +0100
Message-Id: <20260420142224.1802911-3-luca.fancellu@arm.com>
X-Mailer: git-send-email 2.34.1
In-Reply-To: <20260420142224.1802911-1-luca.fancellu@arm.com>
References: <20260420142224.1802911-1-luca.fancellu@arm.com>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit
X-purgate-ID: tlsNG-42698a/1776694971-0636CF3B-4468D4B2/0/0
X-purgate-type: clean
X-purgate-size: 13636

From: Harry Ramsey <harry.ramsey@arm.com>

Add a new device tree property `v8r_el1_msa` to select the MSA (memory
system architecture) at EL1 for Armv8-R architecture: MPU or MMU, the
former is the default if the property is not passed.

The check and setting of this new input parameter for the guest
configuration is performed in arch_domain_create() instead of the more
usual arch_sanitise_domain_config() because the former has access to the
Xen internal guest creation flags which are required to ensure PMSA can
work (domain requires static allocation and direct mapping).

The property is valid only when used on MPU systems and will result in
a panic on MMU ones.

Bumped XEN_DOMCTL_INTERFACE_VERSION because of the new domctl input
parameter.

Signed-off-by: Harry Ramsey <harry.ramsey@arm.com>
Signed-off-by: Luca Fancellu <luca.fancellu@arm.com>
---
v4:
- Rework the patch to have the v8r_el1_msa input parameter more
  enclosed in the Armv8-A (mmu)/Armv8-R (mpu) space.
v3:
- Improve commit message and device tree property description
- Remove macro protection
- Remove unused function is_mpu_domain
- Code formatting
---
 docs/misc/arm/device-tree/booting.txt       | 14 ++++
 xen/arch/arm/dom0less-build.c               |  3 +
 xen/arch/arm/domain.c                       |  4 ++
 xen/arch/arm/include/asm/domain.h           |  4 ++
 xen/arch/arm/include/asm/domain_build.h     |  8 +++
 xen/arch/arm/include/asm/mmu/domain-build.h | 46 +++++++++++++
 xen/arch/arm/include/asm/mpu.h              |  5 ++
 xen/arch/arm/include/asm/mpu/domain-build.h | 27 ++++++++
 xen/arch/arm/mpu/Makefile                   |  1 +
 xen/arch/arm/mpu/arm32/mm.c                 |  5 ++
 xen/arch/arm/mpu/arm64/mm.c                 |  5 ++
 xen/arch/arm/mpu/domain-build.c             | 76 +++++++++++++++++++++
 xen/include/public/arch-arm.h               |  7 ++
 xen/include/public/domctl.h                 |  4 +-
 14 files changed, 207 insertions(+), 2 deletions(-)
 create mode 100644 xen/arch/arm/include/asm/mmu/domain-build.h
 create mode 100644 xen/arch/arm/include/asm/mpu/domain-build.h
 create mode 100644 xen/arch/arm/mpu/domain-build.c

diff --git a/docs/misc/arm/device-tree/booting.txt b/docs/misc/arm/device-tree/booting.txt
index 977b4286082f..c3f484a3b01a 100644
--- a/docs/misc/arm/device-tree/booting.txt
+++ b/docs/misc/arm/device-tree/booting.txt
@@ -322,6 +322,20 @@ with the following properties:
     Should be used together with scmi-smc-passthrough Xen command line
     option.
 
+- v8r_el1_msa
+
+    A string property specifying whether, on Armv8-R systems, a domain
+    should use PMSAv8 (MPU) at EL1 or VMSAv8 (MMU) at EL1.
+
+    - "mmu"
+    Enables VMSAv8 at EL1. This requires hardware support and is only
+    optionally available on AArch64.
+
+    - "mpu"
+    Enables PMSAv8 at EL1. This is the default behaviour when the property is
+    not passed. This configuration requires static allocation (xen,static-mem)
+    and direct mapping (direct-map).
+
 Under the "xen,domain" compatible node, one or more sub-nodes are present
 for the DomU kernel and ramdisk.
 
diff --git a/xen/arch/arm/dom0less-build.c b/xen/arch/arm/dom0less-build.c
index 4181c105389a..6f0256f9d825 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/grant_table.h>
+#include <asm/mpu.h>
 #include <asm/setup.h>
 
 #ifdef CONFIG_VGICV2
@@ -322,6 +323,8 @@ int __init arch_parse_dom0less_node(struct dt_device_node *node,
     if ( domu_dt_sci_parse(node, d_cfg) )
         panic("Error getting SCI configuration\n");
 
+    arch_dt_v8r_el1_msa_parse(node, d_cfg);
+
     if ( !dt_property_read_u32(node, "nr_spis", &d_cfg->arch.nr_spis) )
     {
         int vpl011_virq = GUEST_VPL011_SPI;
diff --git a/xen/arch/arm/domain.c b/xen/arch/arm/domain.c
index 26380a807cad..dfa7ace1141b 100644
--- a/xen/arch/arm/domain.c
+++ b/xen/arch/arm/domain.c
@@ -18,6 +18,7 @@
 #include <asm/cpuerrata.h>
 #include <asm/cpufeature.h>
 #include <asm/current.h>
+#include <asm/domain_build.h>
 #include <asm/event.h>
 #include <asm/gic.h>
 #include <asm/guest_atomics.h>
@@ -725,6 +726,9 @@ int arch_domain_create(struct domain *d,
     if ( (rc = sci_domain_init(d, config)) != 0 )
         goto fail;
 
+    if ( (rc = arch_set_v8r_el1_msa(d, config, flags)) != 0 )
+        goto fail;
+
     return 0;
 
 fail:
diff --git a/xen/arch/arm/include/asm/domain.h b/xen/arch/arm/include/asm/domain.h
index ffe5d0d9f0a6..4a3fb825962b 100644
--- a/xen/arch/arm/include/asm/domain.h
+++ b/xen/arch/arm/include/asm/domain.h
@@ -128,6 +128,10 @@ struct arch_domain
 #endif
 
     struct resume_info resume_ctx;
+
+#ifdef CONFIG_MPU
+    uint8_t v8r_el1_msa;
+#endif
 }  __cacheline_aligned;
 
 struct arch_vcpu
diff --git a/xen/arch/arm/include/asm/domain_build.h b/xen/arch/arm/include/asm/domain_build.h
index 6674dac5e2f8..921d6f98f4f4 100644
--- a/xen/arch/arm/include/asm/domain_build.h
+++ b/xen/arch/arm/include/asm/domain_build.h
@@ -4,6 +4,14 @@
 #include <xen/fdt-kernel.h>
 #include <xen/sched.h>
 
+#if defined(CONFIG_MMU)
+#include <asm/mmu/domain-build.h>
+#elif defined(CONFIG_MPU)
+#include <asm/mpu/domain-build.h>
+#else
+# error "Unknown memory management layout"
+#endif
+
 typedef __be32 gic_interrupt_t[3];
 int make_psci_node(void *fdt);
 void evtchn_allocate(struct domain *d);
diff --git a/xen/arch/arm/include/asm/mmu/domain-build.h b/xen/arch/arm/include/asm/mmu/domain-build.h
new file mode 100644
index 000000000000..3e0d9a6a2a08
--- /dev/null
+++ b/xen/arch/arm/include/asm/mmu/domain-build.h
@@ -0,0 +1,46 @@
+/* SPDX-License-Identifier: GPL-2.0-only */
+
+#ifndef __ARM_MMU_DOMAIN_BUILD_H__
+#define __ARM_MMU_DOMAIN_BUILD_H__
+
+#include <xen/device_tree.h>
+#include <xen/errno.h>
+#include <xen/sched.h>
+#include <xen/types.h>
+#include <public/domctl.h>
+
+static inline
+void arch_dt_v8r_el1_msa_parse(struct dt_device_node *node,
+                               struct xen_domctl_createdomain *d_cfg)
+{
+    const char *v8r_el1_msa;
+
+    if ( !dt_property_read_string(node, "v8r_el1_msa", &v8r_el1_msa) )
+        panic("'v8r_el1_msa' property found, but CONFIG_MPU not selected\n");
+}
+
+static inline
+int arch_set_v8r_el1_msa(struct domain *d,
+                         const struct xen_domctl_createdomain *config,
+                         unsigned int flags)
+{
+    if ( config->arch.v8r_el1_msa )
+    {
+        dprintk(XENLOG_INFO,
+                "arch.v8r_el1_msa set, but CONFIG_MPU not selected\n");
+        return -EINVAL;
+    }
+
+    return 0;
+}
+
+#endif /* __ARM_MMU_DOMAIN_BUILD_H__ */
+
+/*
+ * Local variables:
+ * mode: C
+ * c-file-style: "BSD"
+ * c-basic-offset: 4
+ * indent-tabs-mode: nil
+ * End:
+ */
diff --git a/xen/arch/arm/include/asm/mpu.h b/xen/arch/arm/include/asm/mpu.h
index 72fa5b00b861..8a8c01086206 100644
--- a/xen/arch/arm/include/asm/mpu.h
+++ b/xen/arch/arm/include/asm/mpu.h
@@ -27,6 +27,11 @@
 
 #ifndef __ASSEMBLER__
 
+/*
+ * Utility function to determine if an Armv8-R processor supports VMSA.
+ */
+bool has_v8r_vmsa_support(void);
+
 /*
  * Set base address of MPU protection region.
  *
diff --git a/xen/arch/arm/include/asm/mpu/domain-build.h b/xen/arch/arm/include/asm/mpu/domain-build.h
new file mode 100644
index 000000000000..463cd85b5b7e
--- /dev/null
+++ b/xen/arch/arm/include/asm/mpu/domain-build.h
@@ -0,0 +1,27 @@
+/* SPDX-License-Identifier: GPL-2.0-only */
+
+#ifndef __ARM_MPU_DOMAIN_BUILD_H__
+#define __ARM_MPU_DOMAIN_BUILD_H__
+
+#include <xen/device_tree.h>
+#include <xen/sched.h>
+#include <xen/types.h>
+#include <public/domctl.h>
+
+void arch_dt_v8r_el1_msa_parse(struct dt_device_node *node,
+                               struct xen_domctl_createdomain *d_cfg);
+
+int arch_set_v8r_el1_msa(struct domain *d,
+                         const struct xen_domctl_createdomain *config,
+                         unsigned int flags);
+
+#endif /* __ARM_MPU_DOMAIN_BUILD_H__ */
+
+/*
+ * Local variables:
+ * mode: C
+ * c-file-style: "BSD"
+ * c-basic-offset: 4
+ * indent-tabs-mode: nil
+ * End:
+ */
diff --git a/xen/arch/arm/mpu/Makefile b/xen/arch/arm/mpu/Makefile
index 3327fadd5d0e..e3997e41b81b 100644
--- a/xen/arch/arm/mpu/Makefile
+++ b/xen/arch/arm/mpu/Makefile
@@ -1,5 +1,6 @@
 obj-$(CONFIG_ARM_32) += arm32/
 obj-$(CONFIG_ARM_64) += arm64/
+obj-y += domain-build.o
 obj-y += domain-page.o
 obj-y += mm.o
 obj-y += p2m.o
diff --git a/xen/arch/arm/mpu/arm32/mm.c b/xen/arch/arm/mpu/arm32/mm.c
index a4673c351141..5eaeb3400e6c 100644
--- a/xen/arch/arm/mpu/arm32/mm.c
+++ b/xen/arch/arm/mpu/arm32/mm.c
@@ -38,6 +38,11 @@
         break;                                            \
     }
 
+bool has_v8r_vmsa_support(void)
+{
+    return false;
+}
+
 /*
  * Armv8-R supports direct access and indirect access to the MPU regions through
  * registers:
diff --git a/xen/arch/arm/mpu/arm64/mm.c b/xen/arch/arm/mpu/arm64/mm.c
index ed643cad4073..b07e729a7d05 100644
--- a/xen/arch/arm/mpu/arm64/mm.c
+++ b/xen/arch/arm/mpu/arm64/mm.c
@@ -32,6 +32,11 @@
         break;                                                  \
     }
 
+bool has_v8r_vmsa_support(void)
+{
+    return system_cpuinfo.mm64.msa_frac == MM64_MSA_FRAC_VMSA_SUPPORT;
+}
+
 /*
  * Armv8-R supports direct access and indirect access to the MPU regions through
  * registers:
diff --git a/xen/arch/arm/mpu/domain-build.c b/xen/arch/arm/mpu/domain-build.c
new file mode 100644
index 000000000000..1bdd0ffedebb
--- /dev/null
+++ b/xen/arch/arm/mpu/domain-build.c
@@ -0,0 +1,76 @@
+/* SPDX-License-Identifier: GPL-2.0-only */
+
+#include <xen/device_tree.h>
+#include <xen/domain.h>
+#include <xen/errno.h>
+#include <xen/init.h>
+#include <xen/types.h>
+#include <xen/sched.h>
+#include <asm/mpu.h>
+#include <asm/mpu/domain-build.h>
+#include <public/arch-arm.h>
+#include <public/domctl.h>
+
+void __init arch_dt_v8r_el1_msa_parse(struct dt_device_node *node,
+                                      struct xen_domctl_createdomain *d_cfg)
+{
+    const char *v8r_el1_msa;
+
+    d_cfg->arch.v8r_el1_msa = XEN_DOMCTL_CONFIG_ARM_V8R_EL1_MSA_NONE;
+
+    if ( !dt_property_read_string(node, "v8r_el1_msa", &v8r_el1_msa) )
+    {
+        if ( !strcmp(v8r_el1_msa, "mmu") )
+            d_cfg->arch.v8r_el1_msa = XEN_DOMCTL_CONFIG_ARM_V8R_EL1_MSA_VMSA;
+        else if ( !strcmp(v8r_el1_msa, "mpu") )
+            d_cfg->arch.v8r_el1_msa = XEN_DOMCTL_CONFIG_ARM_V8R_EL1_MSA_PMSA;
+        else
+            panic("Invalid device tree option for v8r_el1_msa\n");
+    }
+}
+
+int arch_set_v8r_el1_msa(struct domain *d,
+                         const struct xen_domctl_createdomain *config,
+                         unsigned int flags)
+{
+    switch ( config->arch.v8r_el1_msa )
+    {
+    case XEN_DOMCTL_CONFIG_ARM_V8R_EL1_MSA_NONE:
+        fallthrough;
+    case XEN_DOMCTL_CONFIG_ARM_V8R_EL1_MSA_PMSA:
+        if ( !(flags & CDF_staticmem) || !(flags & CDF_directmap) )
+        {
+            dprintk(XENLOG_INFO,
+                    "PMSA is not valid for domain without static allocation and direct map (v8r_el1_msa)\n");
+            return -EINVAL;
+        }
+        break;
+
+    case XEN_DOMCTL_CONFIG_ARM_V8R_EL1_MSA_VMSA:
+        if ( !has_v8r_vmsa_support() )
+        {
+            dprintk(XENLOG_INFO,
+                    "Platform does not support VMSA at EL1 (v8r_el1_msa)\n");
+            return -EINVAL;
+        }
+        break;
+
+    default:
+        dprintk(XENLOG_INFO, "Unsupported arch.v8r_el1_msa value (%u)\n",
+                config->arch.v8r_el1_msa);
+        return -EINVAL;
+    }
+
+    d->arch.v8r_el1_msa = config->arch.v8r_el1_msa;
+
+    return 0;
+}
+
+/*
+ * 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 cd563cf70684..7d6f87e8b2b1 100644
--- a/xen/include/public/arch-arm.h
+++ b/xen/include/public/arch-arm.h
@@ -330,6 +330,10 @@ DEFINE_XEN_GUEST_HANDLE(vcpu_guest_context_t);
 #define XEN_DOMCTL_CONFIG_ARM_SCI_NONE      0
 #define XEN_DOMCTL_CONFIG_ARM_SCI_SCMI_SMC  1
 
+#define XEN_DOMCTL_CONFIG_ARM_V8R_EL1_MSA_NONE    0
+#define XEN_DOMCTL_CONFIG_ARM_V8R_EL1_MSA_PMSA    1
+#define XEN_DOMCTL_CONFIG_ARM_V8R_EL1_MSA_VMSA    2
+
 struct xen_arch_domainconfig {
     /* IN/OUT */
     uint8_t gic_version;
@@ -355,6 +359,9 @@ struct xen_arch_domainconfig {
     uint32_t clock_frequency;
     /* IN */
     uint8_t arm_sci_type;
+    /* IN */
+    uint8_t v8r_el1_msa;
+    uint16_t pad;
 };
 #endif /* __XEN__ || __XEN_TOOLS__ */
 
diff --git a/xen/include/public/domctl.h b/xen/include/public/domctl.h
index 8f6708c0a7cd..23124547f347 100644
--- a/xen/include/public/domctl.h
+++ b/xen/include/public/domctl.h
@@ -30,9 +30,9 @@
  * fields) don't require a change of the version.
  * Stable ops are NOT covered by XEN_DOMCTL_INTERFACE_VERSION!
  *
- * Last version bump: Xen 4.19
+ * Last version bump: Xen 4.22
  */
-#define XEN_DOMCTL_INTERFACE_VERSION 0x00000017
+#define XEN_DOMCTL_INTERFACE_VERSION 0x00000018
 
 /*
  * NB. xen_domctl.domain is an IN/OUT parameter for this operation.
-- 
2.34.1



From xen-devel-bounces@lists.xenproject.org Mon Apr 20 14:22:57 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 20 Apr 2026 14:22:57 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1286046.1567169 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wEpWV-0002KP-UB; Mon, 20 Apr 2026 14:22:51 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1286046.1567169; Mon, 20 Apr 2026 14:22: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 1wEpWV-0002KI-QI; Mon, 20 Apr 2026 14:22:51 +0000
Received: by outflank-mailman (input) for mailman id 1286046;
 Mon, 20 Apr 2026 14:22:50 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <luca.fancellu@arm.com>) id 1wEpWU-000279-BE
 for xen-devel@lists.xenproject.org; Mon, 20 Apr 2026 14:22:50 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wEpWT-00BEkZ-O9
 for xen-devel@lists.xenproject.org; Mon, 20 Apr 2026 16:22:49 +0200
Received: from [10.42.69.8] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <luca.fancellu@arm.com>)
 id 69e636b7-2eae-0a2a0a5409dd-0a2a4508c8cc-8
 for <xen-devel@lists.xenproject.org>; Mon, 20 Apr 2026 16:22:49 +0200
Received: from [217.140.110.172] (helo=foss.arm.com)
 by tlsNG-c1860d.mxtls.expurgate.net with ESMTP (eXpurgate 4.56.1)
 (envelope-from <luca.fancellu@arm.com>)
 id 69e636b8-63b5-0a2a45080019-d98c6eacb7ce-1
 for <xen-devel@lists.xenproject.org>; Mon, 20 Apr 2026 16:22:49 +0200
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 DDC8916F2;
 Mon, 20 Apr 2026 07:22:42 -0700 (PDT)
Received: from e125770.cambridge.arm.com (e125770.arm.com [10.1.199.43])
 by usa-sjc-imap-foss1.foss.arm.com (Postfix) with ESMTPSA id 195AE3F7B4;
 Mon, 20 Apr 2026 07:22:46 -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=foss header.d=arm.com header.i="@arm.com" header.h="From:To:Cc:Subject:Date:In-Reply-To:References"
DKIM-Signature: v=1; a=rsa-sha256; c=simple/simple; d=arm.com; s=foss;
	t=1776694968; bh=qYmTbaJ+SsNtBEDJGVlBV6iD643KjLqETko4igFDlkY=;
	h=From:To:Cc:Subject:Date:In-Reply-To:References:From;
	b=AHi1STTNBpVKXfpv079dXbuoiWoVd8MqQlYxAzKxc3yXlPOdOgL0bBhpEDROFCA7g
	 Um92Yg56HabhO1ka3LIKtPEWWz4oJELcwCNPjzr4NFgXX5WYX5FtDf7ZZ+KVRUd+dn
	 tdnq/F12nPXai/UNox5EUWwbYyUIoSsqHS8tPnIY=
From: Luca Fancellu <luca.fancellu@arm.com>
To: xen-devel@lists.xenproject.org
Cc: Penny Zheng <Penny.Zheng@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>,
	Penny Zheng <penny.zheng@arm.com>,
	Wei Chen <wei.chen@arm.com>,
	Hari Limaye <hari.limaye@arm.com>,
	Harry Ramsey <harry.ramsey@arm.com>
Subject: [PATCH v4 1/3] arm/mpu: implement setup_virt_paging for MPU systems
Date: Mon, 20 Apr 2026 15:22:22 +0100
Message-Id: <20260420142224.1802911-2-luca.fancellu@arm.com>
X-Mailer: git-send-email 2.34.1
In-Reply-To: <20260420142224.1802911-1-luca.fancellu@arm.com>
References: <20260420142224.1802911-1-luca.fancellu@arm.com>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit
X-purgate-ID: tlsNG-c1860d/1776694969-C0965DB1-E750CBF4/0/0
X-purgate-type: clean
X-purgate-size: 7646

From: Penny Zheng <Penny.Zheng@arm.com>

Implement setup_virt_paging for AArch64 MPU systems, taking care of
stage 2 address translation regime, IPA bits, supported VMID length
configuration and VTCR_EL2/VSTCR_EL2 register programming.

Implement also the Armv8-R specific changes to ID_AA64MMFR0_EL1,
related to the supported memory system architecture (PMSA/VMSA)
and check that when MPU is built, the underlying HW is compatible
with PMSA. By default MPU at EL2 and EL1 is required.

Signed-off-by: Penny Zheng <penny.zheng@arm.com>
Signed-off-by: Wei Chen <wei.chen@arm.com>
Signed-off-by: Luca Fancellu <luca.fancellu@arm.com>
Signed-off-by: Hari Limaye <hari.limaye@arm.com>
Signed-off-by: Harry Ramsey <harry.ramsey@arm.com>
---
v4:
- Fixed typo in the comments
- Fixed typo in the commit title and message
- moved p2m_vmid_allocator_init() after write of
  VTCR_EL2
- Fixed printf format specifier %d -> %u
v3:
- Refactor unused code to more relevant commits.
- Add P2M print information
- Formatting issues
- Update commit message
v2:
- Separate commit into multiple commits
---
 xen/arch/arm/arm64/mpu/p2m.c             | 80 +++++++++++++++++++++++-
 xen/arch/arm/include/asm/arm64/sysregs.h |  4 ++
 xen/arch/arm/include/asm/cpufeature.h    | 13 +++-
 xen/arch/arm/include/asm/processor.h     |  8 +++
 4 files changed, 101 insertions(+), 4 deletions(-)

diff --git a/xen/arch/arm/arm64/mpu/p2m.c b/xen/arch/arm/arm64/mpu/p2m.c
index b6d8b2777b58..a39a1fc38946 100644
--- a/xen/arch/arm/arm64/mpu/p2m.c
+++ b/xen/arch/arm/arm64/mpu/p2m.c
@@ -2,11 +2,89 @@
 
 #include <xen/bug.h>
 #include <xen/init.h>
+#include <xen/lib.h>
 #include <asm/p2m.h>
 
 void __init setup_virt_paging(void)
 {
-    BUG_ON("unimplemented");
+    register_t vtcr_el2 = READ_SYSREG(VTCR_EL2);
+    register_t vstcr_el2 = READ_SYSREG(VSTCR_EL2);
+
+    /* PA size */
+    const unsigned int pa_range_info[] = {32, 36, 40, 42, 44, 48, 52, 0,
+                                          /* Invalid */};
+
+    /*
+     * Restrict "p2m_ipa_bits" if needed. As P2M table is always configured
+     * with IPA bits == PA bits, compare against PA size.
+     */
+    if ( pa_range_info[system_cpuinfo.mm64.pa_range] < p2m_ipa_bits )
+        p2m_ipa_bits = pa_range_info[system_cpuinfo.mm64.pa_range];
+
+    /*
+     * The MSA and MSA_frac fields in the ID_AA64MMFR0_EL1 register identify the
+     * memory system configurations supported. In Armv8-R AArch64, the
+     * only permitted value for ID_AA64MMFR0_EL1.MSA is 0b1111.
+     */
+    if ( system_cpuinfo.mm64.msa != MM64_MSA_PMSA_SUPPORT )
+        goto fault;
+
+    /* Permitted values for ID_AA64MMFR0_EL1.MSA_frac are 0b0001 and 0b0010. */
+    if ( (system_cpuinfo.mm64.msa_frac != MM64_MSA_FRAC_PMSA_SUPPORT) &&
+         (system_cpuinfo.mm64.msa_frac != MM64_MSA_FRAC_VMSA_SUPPORT) )
+        goto fault;
+
+    /* Stage 1 EL1&0 translation regime uses PMSAv8 by default */
+    vtcr_el2 &= ~VTCR_MSA;
+
+    /*
+     * Clear VTCR_EL2.NSA bit to configure non-secure stage 2 translation output
+     * address space to access the Secure PA space as Armv8-R only implements
+     * secure state.
+     */
+    vtcr_el2 &= ~VTCR_NSA;
+
+    /*
+     * cpuinfo sanitization makes sure we support 16-bits VMID only if all cores
+     * are supporting it.
+     *
+     * Set the VS bit only if 16 bit VMID is supported.
+     */
+    if ( system_cpuinfo.mm64.vmid_bits == MM64_VMID_16_BITS_SUPPORT )
+    {
+        vtcr_el2 |= VTCR_VS;
+        max_vmid = MAX_VMID_16_BIT;
+    }
+    else
+        vtcr_el2 &= ~VTCR_VS;
+
+    WRITE_SYSREG(vtcr_el2, VTCR_EL2);
+
+    p2m_vmid_allocator_init();
+
+    /*
+     * VSTCR_EL2.SA defines secure stage 2 translation output address space.
+     * To make sure that all stage 2 translations for the Secure PA space access
+     * the Secure PA space, we keep SA bit as 0.
+     *
+     * VSTCR_EL2.SC is NS check enable bit. To make sure that Stage 2 NS
+     * configuration is checked against stage 1 NS configuration in EL1&0
+     * translation regime for the given address, and generates a fault if they
+     * are different, we set SC bit 1.
+     */
+    vstcr_el2 &= ~VSTCR_EL2_SA;
+    vstcr_el2 |= VSTCR_EL2_SC;
+    WRITE_SYSREG(vstcr_el2, VSTCR_EL2);
+
+    printk("P2M: %u-bit IPA with %u-bit PA and %u-bit VMID\n",
+           p2m_ipa_bits,
+           pa_range_info[system_cpuinfo.mm64.pa_range],
+           ( MAX_VMID == MAX_VMID_16_BIT ) ? 16 : 8);
+
+    return;
+
+ fault:
+    panic("Hardware with no PMSAv8-64 support in any translation regime\n");
 }
 
 /*
diff --git a/xen/arch/arm/include/asm/arm64/sysregs.h b/xen/arch/arm/include/asm/arm64/sysregs.h
index 19d409d3eb5a..f3c11d871e86 100644
--- a/xen/arch/arm/include/asm/arm64/sysregs.h
+++ b/xen/arch/arm/include/asm/arm64/sysregs.h
@@ -462,6 +462,10 @@
 #define ZCR_ELx_LEN_SIZE             9
 #define ZCR_ELx_LEN_MASK             0x1ff
 
+/* Virtualization Secure Translation Control Register */
+#define VSTCR_EL2_SA                 (_AC(0x1,U) << 30)
+#define VSTCR_EL2_SC                 (_AC(0x1,U) << 20)
+
 #ifdef CONFIG_MPU
 /*
  * The Armv8-R AArch64 architecture always executes code in Secure
diff --git a/xen/arch/arm/include/asm/cpufeature.h b/xen/arch/arm/include/asm/cpufeature.h
index 13353c8e1ad1..bf902a397068 100644
--- a/xen/arch/arm/include/asm/cpufeature.h
+++ b/xen/arch/arm/include/asm/cpufeature.h
@@ -248,6 +248,12 @@ struct cpuinfo_arm {
             unsigned long tgranule_16K:4;
             unsigned long tgranule_64K:4;
             unsigned long tgranule_4K:4;
+#ifdef CONFIG_MPU
+            unsigned long __res0:16;
+            unsigned long msa:4;
+            unsigned long msa_frac:4;
+            unsigned long __res1:8;
+#else
             unsigned long tgranule_16k_2:4;
             unsigned long tgranule_64k_2:4;
             unsigned long tgranule_4k_2:4;
@@ -255,6 +261,7 @@ struct cpuinfo_arm {
             unsigned long __res0:8;
             unsigned long fgt:4;
             unsigned long ecv:4;
+#endif
 
             /* MMFR1 */
             unsigned long hafdbs:4;
@@ -267,13 +274,13 @@ struct cpuinfo_arm {
             unsigned long xnx:4;
             unsigned long twed:4;
             unsigned long ets:4;
-            unsigned long __res1:4;
+            unsigned long __res2:4;
             unsigned long afp:4;
-            unsigned long __res2:12;
+            unsigned long __res3:12;
             unsigned long ecbhb:4;
 
             /* MMFR2 */
-            unsigned long __res3:64;
+            unsigned long __res4:64;
         };
     } mm64;
 
diff --git a/xen/arch/arm/include/asm/processor.h b/xen/arch/arm/include/asm/processor.h
index 1a48c9ff3b39..895d7cd50244 100644
--- a/xen/arch/arm/include/asm/processor.h
+++ b/xen/arch/arm/include/asm/processor.h
@@ -403,6 +403,9 @@
 
 #define VTCR_RES1       (_AC(1,UL)<<31)
 
+#define VTCR_MSA        (_AC(0x1,UL)<<31)
+#define VTCR_NSA        (_AC(0x1,UL)<<30)
+
 /* HCPTR Hyp. Coprocessor Trap Register */
 #define HCPTR_TAM       ((_AC(1,U)<<30))
 #define HCPTR_TTA       ((_AC(1,U)<<20))        /* Trap trace registers */
@@ -464,6 +467,11 @@
 #define MM64_VMID_16_BITS_SUPPORT   0x2
 #endif
 
+#define MM64_MSA_PMSA_SUPPORT       0xf
+#define MM64_MSA_FRAC_NONE_SUPPORT  0x0
+#define MM64_MSA_FRAC_PMSA_SUPPORT  0x1
+#define MM64_MSA_FRAC_VMSA_SUPPORT  0x2
+
 #ifndef __ASSEMBLER__
 
 extern register_t __cpu_logical_map[];
-- 
2.34.1



From xen-devel-bounces@lists.xenproject.org Mon Apr 20 14:22:57 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 20 Apr 2026 14:22:57 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1286049.1567186 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wEpWY-0002nC-Ew; Mon, 20 Apr 2026 14:22:54 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1286049.1567186; Mon, 20 Apr 2026 14:22: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 1wEpWY-0002mz-9p; Mon, 20 Apr 2026 14:22:54 +0000
Received: by outflank-mailman (input) for mailman id 1286049;
 Mon, 20 Apr 2026 14:22:53 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <luca.fancellu@arm.com>) id 1wEpWX-0002XS-5V
 for xen-devel@lists.xenproject.org; Mon, 20 Apr 2026 14:22:53 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wEpWW-000Q5n-IQ
 for xen-devel@lists.xenproject.org; Mon, 20 Apr 2026 16:22:52 +0200
Received: from [10.42.69.4] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <luca.fancellu@arm.com>)
 id 69e636ba-e002-0a2a0a5209dd-0a2a4504b0be-2
 for <xen-devel@lists.xenproject.org>; Mon, 20 Apr 2026 16:22:52 +0200
Received: from [217.140.110.172] (helo=foss.arm.com)
 by tlsNG-ebf023.mxtls.expurgate.net with ESMTP (eXpurgate 4.56.1)
 (envelope-from <luca.fancellu@arm.com>)
 id 69e636bb-1dec-0a2a45040019-d98c6eaccfd2-1
 for <xen-devel@lists.xenproject.org>; Mon, 20 Apr 2026 16:22:52 +0200
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 CDFB31516;
 Mon, 20 Apr 2026 07:22:45 -0700 (PDT)
Received: from e125770.cambridge.arm.com (e125770.arm.com [10.1.199.43])
 by usa-sjc-imap-foss1.foss.arm.com (Postfix) with ESMTPSA id 748B73F7B4;
 Mon, 20 Apr 2026 07:22:50 -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=foss header.d=arm.com header.i="@arm.com" header.h="From:To:Cc:Subject:Date:In-Reply-To:References"
DKIM-Signature: v=1; a=rsa-sha256; c=simple/simple; d=arm.com; s=foss;
	t=1776694971; bh=2jwMTZ96/fznHmHt78iGUnOWdXQ8B7ZjteeUmUTDvnA=;
	h=From:To:Cc:Subject:Date:In-Reply-To:References:From;
	b=RNnZtM1TxQlcuIC9URWpVNKgROgJki95Skz6ZfJudAVau0lSSZCsDUBXG3viAE0bz
	 GiPdbBTqkaJJ7FbK0onORaAiUtN8OyBrqA8dLXm46qjknqkEqeYdW3Hz8qVvu0j1/4
	 /bIBrdlcYro1k2NkiruLZiJA3/hny4T7qG4Rlezo=
From: Luca Fancellu <luca.fancellu@arm.com>
To: xen-devel@lists.xenproject.org
Cc: Harry Ramsey <harry.ramsey@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>
Subject: [PATCH v4 3/3] arm/mpu: Implement p2m tables
Date: Mon, 20 Apr 2026 15:22:24 +0100
Message-Id: <20260420142224.1802911-4-luca.fancellu@arm.com>
X-Mailer: git-send-email 2.34.1
In-Reply-To: <20260420142224.1802911-1-luca.fancellu@arm.com>
References: <20260420142224.1802911-1-luca.fancellu@arm.com>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit
X-purgate-ID: tlsNG-ebf023/1776694972-4B96A3FF-F69A46E1/0/0
X-purgate-type: clean
X-purgate-size: 5745

From: Harry Ramsey <harry.ramsey@arm.com>

Implement `p2m_alloc_table`, `p2m_init` and `p2m_final_teardown` for MPU
systems.

Signed-off-by: Harry Ramsey <harry.ramsey@arm.com>
Signed-off-by: Luca Fancellu <luca.fancellu@arm.com>
---
v4:
 - no changes
v3:
- Check for alloc_xenheap_pages allocation
- Clear additional page allocated for ARM64
- Add check for INVALID_VCPU_ID
- Remove unnecessary function generate_vsctlr
- Code formatting fixes
---
 xen/arch/arm/include/asm/arm32/mpu.h |  2 +
 xen/arch/arm/include/asm/arm64/mpu.h |  2 +
 xen/arch/arm/include/asm/mpu/p2m.h   | 12 +++++
 xen/arch/arm/include/asm/p2m.h       |  5 ++
 xen/arch/arm/mpu/p2m.c               | 78 ++++++++++++++++++++++++++--
 5 files changed, 96 insertions(+), 3 deletions(-)

diff --git a/xen/arch/arm/include/asm/arm32/mpu.h b/xen/arch/arm/include/asm/arm32/mpu.h
index 2cf0f8cbacae..d565230f84ee 100644
--- a/xen/arch/arm/include/asm/arm32/mpu.h
+++ b/xen/arch/arm/include/asm/arm32/mpu.h
@@ -11,6 +11,8 @@
  */
 #define MPU_REGION_RES0       0x0
 
+#define VSCTLR_VMID_SHIFT     16
+
 /* Hypervisor Protection Region Base Address Register */
 typedef union {
     struct {
diff --git a/xen/arch/arm/include/asm/arm64/mpu.h b/xen/arch/arm/include/asm/arm64/mpu.h
index 4f694190a8a3..8b86a03fee44 100644
--- a/xen/arch/arm/include/asm/arm64/mpu.h
+++ b/xen/arch/arm/include/asm/arm64/mpu.h
@@ -7,6 +7,8 @@
 
 #define MPU_REGION_RES0        (0xFFFFULL << 48)
 
+#define VSCTLR_VMID_SHIFT      48
+
 /* Protection Region Base Address Register */
 typedef union {
     struct __packed {
diff --git a/xen/arch/arm/include/asm/mpu/p2m.h b/xen/arch/arm/include/asm/mpu/p2m.h
index e46d9e757a1d..39fc0c944916 100644
--- a/xen/arch/arm/include/asm/mpu/p2m.h
+++ b/xen/arch/arm/include/asm/mpu/p2m.h
@@ -3,8 +3,20 @@
 #ifndef __ARM_MPU_P2M_H__
 #define __ARM_MPU_P2M_H__
 
+#include <xen/bitops.h>
+#include <xen/macros.h>
+#include <xen/page-size.h>
+
 struct p2m_domain;
 
+/*
+ * The architecture allows at most 255 EL2 MPU memory regions. The size of the
+ * MPU structure entry (pr_t) is 32 Bytes on AArch64 (requiring two 4KB pages)
+ * and 16 bytes on AArch32 (requiring one 4KB page).
+ */
+#define P2M_ROOT_PAGES DIV_ROUND_UP(255 * sizeof(pr_t), PAGE_SIZE)
+#define P2M_ROOT_ORDER get_count_order(P2M_ROOT_PAGES)
+
 static inline void p2m_clear_root_pages(struct p2m_domain *p2m) {}
 
 static inline void p2m_tlb_flush_sync(struct p2m_domain *p2m) {}
diff --git a/xen/arch/arm/include/asm/p2m.h b/xen/arch/arm/include/asm/p2m.h
index 010ce8c9ebbd..ed1b6dd40f40 100644
--- a/xen/arch/arm/include/asm/p2m.h
+++ b/xen/arch/arm/include/asm/p2m.h
@@ -48,8 +48,13 @@ struct p2m_domain {
     /* Current VMID in use */
     uint16_t vmid;
 
+#ifdef CONFIG_MMU
     /* Current Translation Table Base Register for the p2m */
     uint64_t vttbr;
+#else
+    /* Current Virtualization System Control Register for the p2m */
+    register_t vsctlr;
+#endif
 
     /* Highest guest frame that's ever been mapped in the p2m */
     gfn_t max_mapped_gfn;
diff --git a/xen/arch/arm/mpu/p2m.c b/xen/arch/arm/mpu/p2m.c
index f7fb58ab6aa8..ec8f630acd90 100644
--- a/xen/arch/arm/mpu/p2m.c
+++ b/xen/arch/arm/mpu/p2m.c
@@ -28,10 +28,69 @@ void p2m_dump_info(struct domain *d)
     BUG_ON("unimplemented");
 }
 
+static int p2m_alloc_table(struct domain *d)
+{
+    struct p2m_domain *p2m = p2m_get_hostp2m(d);
+    void *table = alloc_xenheap_pages(P2M_ROOT_ORDER, 0);
+
+    if ( !table )
+    {
+        printk(XENLOG_G_ERR "%pd: p2m: unable to allocate P2M MPU mapping table\n",
+               d);
+        return -ENOMEM;
+    }
+
+    p2m->root = virt_to_page(table);
+
+    for (int i = 0; i < P2M_ROOT_PAGES; i++)
+        clear_page(page_to_virt(p2m->root + i));
+
+    return 0;
+}
+
 int p2m_init(struct domain *d)
 {
-    BUG_ON("unimplemented");
-    return -EINVAL;
+    struct p2m_domain *p2m = p2m_get_hostp2m(d);
+    int rc = 0;
+    unsigned int cpu;
+
+    rwlock_init(&p2m->lock);
+
+    p2m->vmid = INVALID_VMID;
+    p2m->max_mapped_gfn = _gfn(0);
+    p2m->lowest_mapped_gfn = _gfn(ULONG_MAX);
+
+    p2m->default_access = p2m_access_rwx;
+    /* mem_access is NOT supported in MPU system. */
+    p2m->mem_access_enabled = false;
+
+    /* Ensure that the type chosen is large enough for MAX_VIRT_CPUS. */
+    BUILD_BUG_ON((1 << (sizeof(p2m->last_vcpu_ran[0]) * 8)) < MAX_VIRT_CPUS);
+    BUILD_BUG_ON((1 << (sizeof(p2m->last_vcpu_ran[0]) * 8)) < INVALID_VCPU_ID);
+
+    for_each_possible_cpu(cpu)
+        p2m->last_vcpu_ran[cpu] = INVALID_VCPU_ID;
+
+    /*
+     * "Trivial" initialization is now complete. Set the backpointer so that
+     * p2m_teardown() and related functions know to do something.
+     */
+    p2m->domain = d;
+
+    rc = p2m_alloc_vmid(d);
+    if ( rc )
+        return rc;
+
+    p2m->vsctlr = ((register_t)p2m->vmid << VSCTLR_VMID_SHIFT);
+
+    rc = p2m_alloc_table(d);
+    if ( rc )
+    {
+        p2m_free_vmid(d);
+        return rc;
+    }
+
+    return 0;
 }
 
 void p2m_save_state(struct vcpu *p)
@@ -46,7 +105,20 @@ void p2m_restore_state(struct vcpu *n)
 
 void p2m_final_teardown(struct domain *d)
 {
-    BUG_ON("unimplemented");
+    struct p2m_domain *p2m = p2m_get_hostp2m(d);
+
+    /* p2m not actually initialized */
+    if ( !p2m->domain )
+        return;
+
+    if ( p2m->root )
+        free_xenheap_pages(page_to_virt(p2m->root), P2M_ROOT_ORDER);
+
+    p2m->root = NULL;
+
+    p2m_free_vmid(d);
+
+    p2m->domain = NULL;
 }
 
 bool p2m_resolve_translation_fault(struct domain *d, gfn_t gfn)
-- 
2.34.1



From xen-devel-bounces@lists.xenproject.org Mon Apr 20 14:22:57 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 20 Apr 2026 14:22:57 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1286045.1567159 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wEpWU-00027P-Ma; Mon, 20 Apr 2026 14:22:50 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1286045.1567159; Mon, 20 Apr 2026 14:22: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 1wEpWU-00027I-K5; Mon, 20 Apr 2026 14:22:50 +0000
Received: by outflank-mailman (input) for mailman id 1286045;
 Mon, 20 Apr 2026 14:22:49 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <luca.fancellu@arm.com>) id 1wEpWT-000273-28
 for xen-devel@lists.xenproject.org; Mon, 20 Apr 2026 14:22:49 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wEpWS-007nwH-BQ
 for xen-devel@lists.xenproject.org; Mon, 20 Apr 2026 16:22:48 +0200
Received: from [10.42.69.3] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <luca.fancellu@arm.com>)
 id 69e636a9-5cb7-0a2a0a5109dd-0a2a4503ade2-42
 for <xen-devel@lists.xenproject.org>; Mon, 20 Apr 2026 16:22:48 +0200
Received: from [217.140.110.172] (helo=foss.arm.com)
 by tlsNG-33051d.mxtls.expurgate.net with ESMTP (eXpurgate 4.56.1)
 (envelope-from <luca.fancellu@arm.com>)
 id 69e636b7-672d-0a2a45030019-d98c6eacb866-1
 for <xen-devel@lists.xenproject.org>; Mon, 20 Apr 2026 16:22:47 +0200
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 3FED51516;
 Mon, 20 Apr 2026 07:22:41 -0700 (PDT)
Received: from e125770.cambridge.arm.com (e125770.arm.com [10.1.199.43])
 by usa-sjc-imap-foss1.foss.arm.com (Postfix) with ESMTPSA id 71F023F7B4;
 Mon, 20 Apr 2026 07:22:45 -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=foss header.d=arm.com header.i="@arm.com" header.h="From:To:Cc:Subject:Date"
DKIM-Signature: v=1; a=rsa-sha256; c=simple/simple; d=arm.com; s=foss;
	t=1776694966; bh=uEiDQ0S/JRioWm+0hL1oiuLwlrOvukDwyNsY0rQwBYU=;
	h=From:To:Cc:Subject:Date:From;
	b=RBeHS28SayxivulRAXgeGaN2phri66YlWOlzJzxr548TvJOXY6beXc8qTibRzPuJS
	 K39hakzurB8mK3AVy0PxuPKQDKzVbf2FR1g7AiH8RmMBFff1bjIgcwytQE8zIZMLNZ
	 NqSY/ppo3SYR969pRrBCN5fXLSXlGKgoSpGpneg0=
From: Luca Fancellu <luca.fancellu@arm.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>,
	Andrew Cooper <andrew.cooper3@citrix.com>,
	Anthony PERARD <anthony.perard@vates.tech>,
	Jan Beulich <jbeulich@suse.com>,
	=?UTF-8?q?Roger=20Pau=20Monn=C3=A9?= <roger.pau@citrix.com>,
	"Oleksii Kurochko" <oleksii.kurochko@gmail.com>
Subject: [PATCH v4 0/3] Fifth MPU Series
Date: Mon, 20 Apr 2026 15:22:21 +0100
Message-Id: <20260420142224.1802911-1-luca.fancellu@arm.com>
X-Mailer: git-send-email 2.34.1
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit
X-purgate-ID: tlsNG-33051d/1776694968-2AF62938-73E8B252/0/0
X-purgate-type: clean
X-purgate-size: 2019

This series continues to further the ongoing work to introduce support
for MPU systems in Xen.

The patches in this series aim to implement MPU specific p2m functions.

This serie is based on staging 99912d346009fda1e7fb1510c9501fbab17e92a0.

Harry Ramsey (2):
  arm/mpu: Introduce `v8r_el1_msa` device tree property for domains
  arm/mpu: Implement p2m tables

Penny Zheng (1):
  arm/mpu: implement setup_virt_paging for MPU systems

 docs/misc/arm/device-tree/booting.txt       | 14 ++++
 xen/arch/arm/arm64/mpu/p2m.c                | 80 ++++++++++++++++++++-
 xen/arch/arm/dom0less-build.c               |  3 +
 xen/arch/arm/domain.c                       |  4 ++
 xen/arch/arm/include/asm/arm32/mpu.h        |  2 +
 xen/arch/arm/include/asm/arm64/mpu.h        |  2 +
 xen/arch/arm/include/asm/arm64/sysregs.h    |  4 ++
 xen/arch/arm/include/asm/cpufeature.h       | 13 +++-
 xen/arch/arm/include/asm/domain.h           |  4 ++
 xen/arch/arm/include/asm/domain_build.h     |  8 +++
 xen/arch/arm/include/asm/mmu/domain-build.h | 46 ++++++++++++
 xen/arch/arm/include/asm/mpu.h              |  5 ++
 xen/arch/arm/include/asm/mpu/domain-build.h | 27 +++++++
 xen/arch/arm/include/asm/mpu/p2m.h          | 12 ++++
 xen/arch/arm/include/asm/p2m.h              |  5 ++
 xen/arch/arm/include/asm/processor.h        |  8 +++
 xen/arch/arm/mpu/Makefile                   |  1 +
 xen/arch/arm/mpu/arm32/mm.c                 |  5 ++
 xen/arch/arm/mpu/arm64/mm.c                 |  5 ++
 xen/arch/arm/mpu/domain-build.c             | 76 ++++++++++++++++++++
 xen/arch/arm/mpu/p2m.c                      | 78 +++++++++++++++++++-
 xen/include/public/arch-arm.h               |  7 ++
 xen/include/public/domctl.h                 |  4 +-
 23 files changed, 404 insertions(+), 9 deletions(-)
 create mode 100644 xen/arch/arm/include/asm/mmu/domain-build.h
 create mode 100644 xen/arch/arm/include/asm/mpu/domain-build.h
 create mode 100644 xen/arch/arm/mpu/domain-build.c

-- 
2.34.1



From xen-devel-bounces@lists.xenproject.org Mon Apr 20 14:25:37 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 20 Apr 2026 14:25:37 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1286085.1567195 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wEpZ9-0004DV-Qw; Mon, 20 Apr 2026 14:25:35 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1286085.1567195; Mon, 20 Apr 2026 14:25: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 1wEpZ9-0004DN-O0; Mon, 20 Apr 2026 14:25:35 +0000
Received: by outflank-mailman (input) for mailman id 1286085;
 Mon, 20 Apr 2026 14:25:34 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <luca.fancellu@arm.com>) id 1wEpZ8-0004DG-5Y
 for xen-devel@lists.xenproject.org; Mon, 20 Apr 2026 14:25:34 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wEpZ7-0049I1-Id
 for xen-devel@lists.xenproject.org; Mon, 20 Apr 2026 16:25:33 +0200
Received: from [10.42.69.4] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <luca.fancellu@arm.com>)
 id 69e6375a-e002-0a2a0a5209dd-0a2a450481ee-10
 for <xen-devel@lists.xenproject.org>; Mon, 20 Apr 2026 16:25:33 +0200
Received: from [217.140.110.172] (helo=foss.arm.com)
 by tlsNG-ebf023.mxtls.expurgate.net with ESMTP (eXpurgate 4.56.1)
 (envelope-from <luca.fancellu@arm.com>)
 id 69e6375c-1dec-0a2a45040019-d98c6eacb83e-1
 for <xen-devel@lists.xenproject.org>; Mon, 20 Apr 2026 16:25:33 +0200
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 9E7D61516;
 Mon, 20 Apr 2026 07:25:26 -0700 (PDT)
Received: from e125770.cambridge.arm.com (e125770.arm.com [10.1.199.43])
 by usa-sjc-imap-foss1.foss.arm.com (Postfix) with ESMTPSA id 423B13F7B4;
 Mon, 20 Apr 2026 07:25:31 -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=foss header.d=arm.com header.i="@arm.com" header.h="From:To:Cc:Subject:Date"
DKIM-Signature: v=1; a=rsa-sha256; c=simple/simple; d=arm.com; s=foss;
	t=1776695132; bh=msE5zKqdYroR2i7+BMMRv2AgU+EIZ5jE7RxEL1s5uwo=;
	h=From:To:Cc:Subject:Date:From;
	b=M0lqefgAbq4Tm7Sx10KJ8putI+ayHK52E6dS8/S7b0fHKcukS5YSj1VONT4hcFn5s
	 qEvOiBh+R1yDiUCrd+pyyuGNyXRE4qUtI7bNdjwrM1/NP0XL49iBWRL7z4ip17KNoj
	 +wDoVXoDcc16yXwCKndkwp11DWDZAwUHbz2pdc4M=
From: Luca Fancellu <luca.fancellu@arm.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>,
	"Oleksii Kurochko" <oleksii.kurochko@gmail.com>
Subject: [PATCH 0/8] Armv8-R AArch64 MPU support (single core)
Date: Mon, 20 Apr 2026 15:25:16 +0100
Message-Id: <20260420142524.1804073-1-luca.fancellu@arm.com>
X-Mailer: git-send-email 2.34.1
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit
X-purgate-ID: tlsNG-ebf023/1776695133-324733FF-C652B545/0/0
X-purgate-type: clean
X-purgate-size: 2291

Hi,

this serie complete the support for Armv8-R AArch64 MPU support for dom0less
DomU boot on single core, it also build for Armv8-R AArch32 but the support is
not complete.

The serie is based on another serie in the mailing list: "Fifth MPU Series".

I've spoken with Oleksii and the Arm maintainer to have the possibilty to have
this on the Xen release, of course provided that maintainers have enough
bandwidth and depending on the priority of the series to be in.

Asking for Oleksii Ack for the release, the changes in this serie are mostly
related to MPU apart from few patches that touches common Arm code.

Luca Fancellu (2):
  arm/mpu: Save/restore guest EL1 MPU-related context
  arm/mpu: Save/restore VTCR_EL2 on vCPU context switch

Penny Zheng (6):
  xen/arm: Implement p2m_set_entry for MPU systems
  xen/arm: Implement p2m_get_entry for MPU systems
  xen/mpu: enable device passthrough in MPU system
  arm/mpu: Support vCPU context switch on MPU systems
  xen/arm: enable MMIO region trap in MPU system
  xen/arm: dump debug message in MPU system

 xen/arch/arm/arm64/mpu/p2m.c                |  17 ++
 xen/arch/arm/domain.c                       |  51 +++-
 xen/arch/arm/include/asm/arm32/mpu.h        |   3 +-
 xen/arch/arm/include/asm/arm64/mpu.h        |   3 +-
 xen/arch/arm/include/asm/domain.h           |  10 +
 xen/arch/arm/include/asm/mm.h               |   3 +
 xen/arch/arm/include/asm/mmu/domain-build.h |   2 +
 xen/arch/arm/include/asm/mmu/mm.h           |  12 +
 xen/arch/arm/include/asm/mpu.h              |   3 +
 xen/arch/arm/include/asm/mpu/cpregs.h       |   7 +
 xen/arch/arm/include/asm/mpu/domain-build.h |   6 +
 xen/arch/arm/include/asm/mpu/mm.h           |  13 +-
 xen/arch/arm/include/asm/mpu/p2m.h          |  25 ++
 xen/arch/arm/include/asm/p2m.h              |   3 +
 xen/arch/arm/mpu/arm32/mm.c                 |  10 +
 xen/arch/arm/mpu/arm64/mm.c                 | 136 +++++++++
 xen/arch/arm/mpu/domain-build.c             |  17 ++
 xen/arch/arm/mpu/mm.c                       | 101 +++++--
 xen/arch/arm/mpu/p2m.c                      | 295 +++++++++++++++++++-
 xen/arch/arm/traps.c                        |  91 ++++--
 20 files changed, 739 insertions(+), 69 deletions(-)

-- 
2.34.1



From xen-devel-bounces@lists.xenproject.org Mon Apr 20 14:25:38 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 20 Apr 2026 14:25:38 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1286086.1567203 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wEpZC-0004RK-0C; Mon, 20 Apr 2026 14:25:38 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1286086.1567203; Mon, 20 Apr 2026 14: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 1wEpZB-0004RD-TT; Mon, 20 Apr 2026 14:25:37 +0000
Received: by outflank-mailman (input) for mailman id 1286086;
 Mon, 20 Apr 2026 14:25:36 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <luca.fancellu@arm.com>) id 1wEpZ9-0004DT-V4
 for xen-devel@lists.xenproject.org; Mon, 20 Apr 2026 14:25:36 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wEpZ9-00DjKj-BW
 for xen-devel@lists.xenproject.org; Mon, 20 Apr 2026 16:25:35 +0200
Received: from [10.42.69.10] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <luca.fancellu@arm.com>)
 id 69e63750-bab6-0a2a0a5309dd-0a2a450a9acc-16
 for <xen-devel@lists.xenproject.org>; Mon, 20 Apr 2026 16:25:35 +0200
Received: from [217.140.110.172] (helo=foss.arm.com)
 by tlsNG-4011c0.mxtls.expurgate.net with ESMTP (eXpurgate 4.56.1)
 (envelope-from <luca.fancellu@arm.com>)
 id 69e6375e-56b3-0a2a450a0019-d98c6eaccd08-1
 for <xen-devel@lists.xenproject.org>; Mon, 20 Apr 2026 16:25:35 +0200
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 5E7A316F2;
 Mon, 20 Apr 2026 07:25:28 -0700 (PDT)
Received: from e125770.cambridge.arm.com (e125770.arm.com [10.1.199.43])
 by usa-sjc-imap-foss1.foss.arm.com (Postfix) with ESMTPSA id 769003F7B4;
 Mon, 20 Apr 2026 07:25:32 -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=foss header.d=arm.com header.i="@arm.com" header.h="From:To:Cc:Subject:Date:In-Reply-To:References"
DKIM-Signature: v=1; a=rsa-sha256; c=simple/simple; d=arm.com; s=foss;
	t=1776695133; bh=J3CyMkSY0KMV9Fw732pi6w6qLPzHaJTo8ZwxErzPiWc=;
	h=From:To:Cc:Subject:Date:In-Reply-To:References:From;
	b=e9xVvGHL8pn8PbTX3/4XMRA1Ddaaa52XlXWInaCUNZoMlcG0PmKjboXUKjXZsIevC
	 ktjQHQGMMSq7GJgB5qJXYwJN0p+niIbVJn8mqTLdQM2aa5NLKSekU6SmyqZY3f0fXQ
	 bGDcDjkoQtI2ahVJuxUKu1KR2fvLaAYUgAlQ0Ni4=
From: Luca Fancellu <luca.fancellu@arm.com>
To: xen-devel@lists.xenproject.org
Cc: Penny Zheng <Penny.Zheng@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>,
	Penny Zheng <penny.zheng@arm.com>,
	Wei Chen <wei.chen@arm.com>,
	Hari Limaye <hari.limaye@arm.com>,
	Harry Ramsey <harry.ramsey@arm.com>
Subject: [PATCH 1/8] xen/arm: Implement p2m_set_entry for MPU systems
Date: Mon, 20 Apr 2026 15:25:17 +0100
Message-Id: <20260420142524.1804073-2-luca.fancellu@arm.com>
X-Mailer: git-send-email 2.34.1
In-Reply-To: <20260420142524.1804073-1-luca.fancellu@arm.com>
References: <20260420142524.1804073-1-luca.fancellu@arm.com>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit
X-purgate-ID: tlsNG-4011c0/1776695135-CE36B8B7-645A68D7/0/0
X-purgate-type: clean
X-purgate-size: 12640

From: Penny Zheng <Penny.Zheng@arm.com>

Implement the function `p2m_set_entry`, which is responsible for
inserting a new entry into the p2m tables, for MPU systems.

Signed-off-by: Penny Zheng <penny.zheng@arm.com>
Signed-off-by: Wei Chen <wei.chen@arm.com>
Signed-off-by: Luca Fancellu <luca.fancellu@arm.com>
Signed-off-by: Hari Limaye <hari.limaye@arm.com>
Signed-off-by: Harry Ramsey <harry.ramsey@arm.com>
---
 xen/arch/arm/include/asm/arm32/mpu.h |   3 +-
 xen/arch/arm/include/asm/arm64/mpu.h |   3 +-
 xen/arch/arm/include/asm/mpu/mm.h    |   3 +-
 xen/arch/arm/include/asm/mpu/p2m.h   |  10 +++
 xen/arch/arm/include/asm/p2m.h       |   3 +
 xen/arch/arm/mpu/mm.c                |  43 ++++++----
 xen/arch/arm/mpu/p2m.c               | 123 ++++++++++++++++++++++++++-
 7 files changed, 167 insertions(+), 21 deletions(-)

diff --git a/xen/arch/arm/include/asm/arm32/mpu.h b/xen/arch/arm/include/asm/arm32/mpu.h
index d565230f84ee..ab58df079920 100644
--- a/xen/arch/arm/include/asm/arm32/mpu.h
+++ b/xen/arch/arm/include/asm/arm32/mpu.h
@@ -42,7 +42,8 @@ typedef struct {
     prbar_t prbar;
     prlar_t prlar;
     uint8_t refcount;
-    uint8_t pad[7];     /* Pad structure to 16 Bytes */
+    uint8_t p2m_type;
+    uint8_t pad[6];     /* Pad structure to 16 Bytes */
 } pr_t;
 
 #endif /* __ASSEMBLER__ */
diff --git a/xen/arch/arm/include/asm/arm64/mpu.h b/xen/arch/arm/include/asm/arm64/mpu.h
index 8b86a03fee44..c82624f0f2cf 100644
--- a/xen/arch/arm/include/asm/arm64/mpu.h
+++ b/xen/arch/arm/include/asm/arm64/mpu.h
@@ -41,7 +41,8 @@ typedef struct {
     prbar_t prbar;
     prlar_t prlar;
     uint8_t refcount;
-    uint8_t pad[15];    /* Pad structure to 32 Bytes */
+    uint8_t p2m_type;
+    uint8_t pad[14];    /* Pad structure to 32 Bytes */
 } pr_t;
 
 #endif /* __ASSEMBLER__ */
diff --git a/xen/arch/arm/include/asm/mpu/mm.h b/xen/arch/arm/include/asm/mpu/mm.h
index 1b5ffa5b644d..24bffdee4fb6 100644
--- a/xen/arch/arm/include/asm/mpu/mm.h
+++ b/xen/arch/arm/include/asm/mpu/mm.h
@@ -75,9 +75,10 @@ void write_protection_region(const pr_t *pr_write, uint8_t sel);
  * @param base      Base address of the range to map (inclusive).
  * @param limit     Limit address of the range to map (exclusive).
  * @param flags     Flags for the memory range to map.
+ * @param p2m       True for a stage 2 mapping, otherwise False.
  * @return          0 on success, negative on error.
  */
-int xen_mpumap_update(paddr_t base, paddr_t limit, unsigned int flags);
+int xen_mpumap_update(paddr_t base, paddr_t limit, unsigned int flags, bool p2m);
 
 /*
  * Creates a pr_t structure describing a protection region.
diff --git a/xen/arch/arm/include/asm/mpu/p2m.h b/xen/arch/arm/include/asm/mpu/p2m.h
index 39fc0c944916..b9c7be2d9dcc 100644
--- a/xen/arch/arm/include/asm/mpu/p2m.h
+++ b/xen/arch/arm/include/asm/mpu/p2m.h
@@ -21,6 +21,16 @@ static inline void p2m_clear_root_pages(struct p2m_domain *p2m) {}
 
 static inline void p2m_tlb_flush_sync(struct p2m_domain *p2m) {}
 
+static inline void region_set_p2m(pr_t *pr, p2m_type_t p2m_type)
+{
+    pr->p2m_type = p2m_type;
+}
+
+static inline p2m_type_t region_get_p2m(pr_t *pr)
+{
+    return pr->p2m_type;
+}
+
 #endif /* __ARM_MPU_P2M_H__ */
 
 /*
diff --git a/xen/arch/arm/include/asm/p2m.h b/xen/arch/arm/include/asm/p2m.h
index ed1b6dd40f40..43b383885da0 100644
--- a/xen/arch/arm/include/asm/p2m.h
+++ b/xen/arch/arm/include/asm/p2m.h
@@ -54,6 +54,9 @@ struct p2m_domain {
 #else
     /* Current Virtualization System Control Register for the p2m */
     register_t vsctlr;
+
+    /* Number of MPU memory regions in P2M MPU memory mapping table. */
+    uint8_t nr_regions;
 #endif
 
     /* Highest guest frame that's ever been mapped in the p2m */
diff --git a/xen/arch/arm/mpu/mm.c b/xen/arch/arm/mpu/mm.c
index aff88bd3a9c1..4ee58ded5ad6 100644
--- a/xen/arch/arm/mpu/mm.c
+++ b/xen/arch/arm/mpu/mm.c
@@ -317,13 +317,14 @@ static int xen_mpumap_free_entry(uint8_t idx, int region_found_type)
  * Update the entry in the MPU memory region mapping table (xen_mpumap) for the
  * given memory range and flags, creating one if none exists.
  *
- * @param base  Base address (inclusive).
- * @param limit Limit address (exclusive).
- * @param flags Region attributes (a combination of PAGE_HYPERVISOR_XXX)
+ * @param base      Base address (inclusive).
+ * @param limit     Limit address (exclusive).
+ * @param flags     Region attributes (a combination of PAGE_HYPERVISOR_XXX)
+ * @param p2m       True for a stage 2 mapping, otherwise False.
  * @return      0 on success, otherwise negative on error.
  */
 static int xen_mpumap_update_entry(paddr_t base, paddr_t limit,
-                                   unsigned int flags)
+                                   unsigned int flags, bool p2m)
 {
     bool flags_has_page_present;
     uint8_t idx;
@@ -399,6 +400,8 @@ static int xen_mpumap_update_entry(paddr_t base, paddr_t limit,
             return -ENOENT;
 
         xen_mpumap[idx] = pr_of_addr(base, limit, flags);
+        /* AP[0] always 1 for stage 2 */
+        xen_mpumap[idx].prbar.reg.ap_0 = (p2m ? 1 : 0);
 
         write_protection_region(&xen_mpumap[idx], idx);
     }
@@ -418,33 +421,41 @@ static int xen_mpumap_update_entry(paddr_t base, paddr_t limit,
     return 0;
 }
 
-int xen_mpumap_update(paddr_t base, paddr_t limit, unsigned int flags)
+int check_mpu_mapping(paddr_t base, paddr_t limit, unsigned int flags)
 {
-    int rc;
-
     if ( flags_has_rwx(flags) )
     {
         printk("Mappings should not be both Writeable and Executable\n");
-        return -EINVAL;
+        return false;
     }
 
     if ( base >= limit )
     {
         printk("Base address %#"PRIpaddr" must be smaller than limit address %#"PRIpaddr"\n",
                base, limit);
-        return -EINVAL;
+        return false;
     }
 
     if ( !IS_ALIGNED(base, PAGE_SIZE) || !IS_ALIGNED(limit, PAGE_SIZE) )
     {
         printk("base address %#"PRIpaddr", or limit address %#"PRIpaddr" is not page aligned\n",
                base, limit);
-        return -EINVAL;
+        return false;
     }
 
+    return true;
+}
+
+int xen_mpumap_update(paddr_t base, paddr_t limit, unsigned int flags, bool p2m)
+{
+    int rc;
+
+    if ( !check_mpu_mapping(base, limit, flags) )
+        return -EINVAL;
+
     spin_lock(&xen_mpumap_lock);
 
-    rc = xen_mpumap_update_entry(base, limit, flags);
+    rc = xen_mpumap_update_entry(base, limit, flags, p2m);
     if ( !rc )
         context_sync_mpu();
 
@@ -459,7 +470,7 @@ int destroy_xen_mappings(unsigned long s, unsigned long e)
     ASSERT(IS_ALIGNED(e, PAGE_SIZE));
     ASSERT(s < e);
 
-    return xen_mpumap_update(s, e, 0);
+    return xen_mpumap_update(s, e, 0, false);
 }
 
 int destroy_xen_mapping_containing(paddr_t s)
@@ -499,7 +510,7 @@ int map_pages_to_xen(unsigned long virt, mfn_t mfn, unsigned long nr_mfns,
                      unsigned int flags)
 {
     /* MPU systems have no translation, ma == va, so pass virt directly */
-    return xen_mpumap_update(virt, mfn_to_maddr(mfn_add(mfn, nr_mfns)), flags);
+    return xen_mpumap_update(virt, mfn_to_maddr(mfn_add(mfn, nr_mfns)), flags, false);
 }
 
 /*
@@ -520,7 +531,7 @@ void __init setup_mm_helper(void)
             paddr_t bank_end = bank_start + bank_size;
 
             /* Map static heap with one MPU protection region */
-            if ( xen_mpumap_update(bank_start, bank_end, PAGE_HYPERVISOR) )
+            if ( xen_mpumap_update(bank_start, bank_end, PAGE_HYPERVISOR, false) )
                 panic("Failed to map static heap\n");
 
             break;
@@ -533,7 +544,7 @@ void __init setup_mm_helper(void)
 
 int modify_xen_mappings(unsigned long s, unsigned long e, unsigned int nf)
 {
-    return xen_mpumap_update(s, e, nf);
+    return xen_mpumap_update(s, e, nf, false);
 }
 
 void dump_hyp_walk(vaddr_t addr)
@@ -598,7 +609,7 @@ void __iomem *ioremap_attr(paddr_t start, size_t len, unsigned int flags)
     paddr_t start_pg = round_pgdown(start);
     paddr_t end_pg = round_pgup(start + len);
 
-    if ( xen_mpumap_update(start_pg, end_pg, flags) )
+    if ( xen_mpumap_update(start_pg, end_pg, flags, false) )
         return NULL;
 
     /* Mapped or already mapped */
diff --git a/xen/arch/arm/mpu/p2m.c b/xen/arch/arm/mpu/p2m.c
index ec8f630acd90..4a8595b1b25e 100644
--- a/xen/arch/arm/mpu/p2m.c
+++ b/xen/arch/arm/mpu/p2m.c
@@ -8,12 +8,131 @@
 #include <xen/sched.h>
 #include <xen/types.h>
 #include <asm/p2m.h>
+#include <asm/mpu.h>
+
+static inline unsigned int build_p2m_flags(p2m_type_t t)
+{
+    unsigned int flags = 0;
+
+    BUILD_BUG_ON(p2m_max_real_type > (1 << 4));
+
+    switch ( t )
+    {
+    case p2m_ram_rw:
+        /* Nothing to do, XN=0, RO=0 */
+        break;
+
+    case p2m_ram_ro:
+        flags |= _PAGE_RO;
+        break;
+
+    case p2m_invalid:
+        flags |= _PAGE_XN | _PAGE_RO;
+        break;
+
+    case p2m_max_real_type:
+        BUG();
+        break;
+
+    case p2m_mmio_direct_dev:
+    case p2m_mmio_direct_nc:
+    case p2m_mmio_direct_c:
+    case p2m_iommu_map_ro:
+    case p2m_iommu_map_rw:
+    case p2m_map_foreign_ro:
+    case p2m_map_foreign_rw:
+    case p2m_grant_map_ro:
+    case p2m_grant_map_rw:
+        panic(XENLOG_G_ERR "p2m: UNIMPLEMENTED p2m permission in MPU system\n");
+        break;
+    }
+
+    flags |= MT_NORMAL;
+
+    return flags;
+}
+
+/*
+ * Check whether guest memory region [`sgfn`, `sgfn` + `nr_gfns`) is mapped in
+ * mpumap `table`.
+ *
+ * If the memory region is mapped, `idx` is set to the index of the associated
+ * MPU memory region and 0 is returned.
+ * If the memory region is not mapped, -ENOENT is returned.
+ */
+static int is_gfns_mapped(pr_t *table, uint8_t nr_regions, gfn_t sgfn,
+                          unsigned long nr_gfns, uint8_t *idx)
+{
+    paddr_t gbase = gfn_to_gaddr(sgfn);
+    paddr_t glimit = gfn_to_gaddr(gfn_add(sgfn, nr_gfns));
+    int rc;
+
+    rc = mpumap_contains_region(table, nr_regions, gbase, glimit, idx);
+    if ( MPUMAP_REGION_OVERLAP == rc )
+        return -EINVAL;
+
+    if ( MPUMAP_REGION_NOTFOUND == rc )
+        return -ENOENT;
+
+    return 0;
+}
+
+static int __p2m_set_entry(struct p2m_domain *p2m, gfn_t sgfn, unsigned int nr,
+                    mfn_t smfn, p2m_type_t t, p2m_access_t a)
+{
+    pr_t *table;
+    mfn_t emfn = mfn_add(smfn, nr);
+    unsigned int flags;
+    uint8_t idx = INVALID_REGION_IDX;
+
+    /*
+     * In all cases other than when removing a mapping (mfn == MFN_INVALID),
+     * gfn == mfn on MPU systems.
+     */
+    if ( !mfn_eq(smfn, INVALID_MFN) && gfn_x(sgfn) != mfn_x(smfn) )
+    {
+        printk(XENLOG_G_ERR "Unable to map MFN %#"PRI_mfn" at %#"PRI_mfn"\n",
+               mfn_x(smfn), gfn_x(sgfn));
+        return -EINVAL;
+    }
+
+    table = (pr_t *)page_to_virt(p2m->root);
+    if ( !table )
+        return -EINVAL;
+
+    /* Already mapped */
+    if ( is_gfns_mapped(table, p2m->nr_regions, sgfn, nr, &idx) != -ENOENT )
+    {
+        printk(XENLOG_G_ERR "Unable to insert P2M MPU memory region %#"PRIpaddr"-%#"PRIpaddr"\n",
+               gfn_to_gaddr(sgfn), gfn_to_gaddr(gfn_add(sgfn, nr)));
+        return -EINVAL;
+    }
+
+    flags = build_p2m_flags(t);
+    table[p2m->nr_regions] = pr_of_addr(mfn_to_maddr(smfn),
+                                        mfn_to_maddr(mfn_add(smfn, nr)), flags);
+    region_set_p2m(&table[p2m->nr_regions], t);
+    p2m->nr_regions++;
+
+    p2m->max_mapped_gfn = gfn_max(p2m->max_mapped_gfn, _gfn(mfn_x(emfn)));
+    p2m->lowest_mapped_gfn = gfn_min(p2m->lowest_mapped_gfn, _gfn(mfn_x(smfn)));
+
+    return 0;
+}
 
 int p2m_set_entry(struct p2m_domain *p2m, gfn_t sgfn, unsigned long nr,
                   mfn_t smfn, p2m_type_t t, p2m_access_t a)
 {
-    BUG_ON("unimplemented");
-    return -EINVAL;
+    /*
+     * Any reference taken by the P2M mappings (e.g. foreign mapping) will
+     * be dropped in relinquish_p2m_mapping(). As the P2M will still
+     * be accessible after, we need to prevent mapping to be added when the
+     * domain is dying.
+     */
+    if ( unlikely(p2m->domain->is_dying) )
+        return -ENOMEM;
+
+    return __p2m_set_entry(p2m, sgfn, nr, smfn, t, a);
 }
 
 mfn_t p2m_get_entry(struct p2m_domain *p2m, gfn_t gfn, p2m_type_t *t,
-- 
2.34.1



From xen-devel-bounces@lists.xenproject.org Mon Apr 20 14:25:39 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 20 Apr 2026 14:25:39 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1286087.1567212 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wEpZD-0004fK-6Q; Mon, 20 Apr 2026 14:25:39 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1286087.1567212; Mon, 20 Apr 2026 14:25: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 1wEpZD-0004fB-3n; Mon, 20 Apr 2026 14:25:39 +0000
Received: by outflank-mailman (input) for mailman id 1286087;
 Mon, 20 Apr 2026 14:25:37 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <luca.fancellu@arm.com>) id 1wEpZB-0004QW-9t
 for xen-devel@lists.xenproject.org; Mon, 20 Apr 2026 14:25:37 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wEpZA-00DjKj-Mp
 for xen-devel@lists.xenproject.org; Mon, 20 Apr 2026 16:25:36 +0200
Received: from [10.42.69.3] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <luca.fancellu@arm.com>)
 id 69e6375d-bab6-0a2a0a5309dd-0a2a45039354-10
 for <xen-devel@lists.xenproject.org>; Mon, 20 Apr 2026 16:25:36 +0200
Received: from [217.140.110.172] (helo=foss.arm.com)
 by tlsNG-33051d.mxtls.expurgate.net with ESMTP (eXpurgate 4.56.1)
 (envelope-from <luca.fancellu@arm.com>)
 id 69e6375f-672d-0a2a45030019-d98c6eac8c36-1
 for <xen-devel@lists.xenproject.org>; Mon, 20 Apr 2026 16:25:36 +0200
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 E2A321516;
 Mon, 20 Apr 2026 07:25:29 -0700 (PDT)
Received: from e125770.cambridge.arm.com (e125770.arm.com [10.1.199.43])
 by usa-sjc-imap-foss1.foss.arm.com (Postfix) with ESMTPSA id 373183F7B4;
 Mon, 20 Apr 2026 07:25:34 -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=foss header.d=arm.com header.i="@arm.com" header.h="From:To:Cc:Subject:Date:In-Reply-To:References"
DKIM-Signature: v=1; a=rsa-sha256; c=simple/simple; d=arm.com; s=foss;
	t=1776695135; bh=iv//vNmwKiPVjQpsnbCcSAu2c4KT7uRXnN6HNwH7kRM=;
	h=From:To:Cc:Subject:Date:In-Reply-To:References:From;
	b=C60P+blvO8zZ4OFaL3RS+PmAMBSRQ+8U/4URgbc7Ivw8aJfCG320v+cCN1h5wellN
	 WH7EO3gbwuZ+/QAQRjQHbjkbxWgtfOdVToEJ5q+WlVQ09epfIhQTsnDiIT/hA9rTqi
	 lS7LsTqjA7xVIZfOOQtxPtfidMEcipMIaXbeHYUE=
From: Luca Fancellu <luca.fancellu@arm.com>
To: xen-devel@lists.xenproject.org
Cc: Penny Zheng <Penny.Zheng@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>,
	Penny Zheng <penny.zheng@arm.com>,
	Wei Chen <wei.chen@arm.com>,
	Hari Limaye <hari.limaye@arm.com>
Subject: [PATCH 2/8] xen/arm: Implement p2m_get_entry for MPU systems
Date: Mon, 20 Apr 2026 15:25:18 +0100
Message-Id: <20260420142524.1804073-3-luca.fancellu@arm.com>
X-Mailer: git-send-email 2.34.1
In-Reply-To: <20260420142524.1804073-1-luca.fancellu@arm.com>
References: <20260420142524.1804073-1-luca.fancellu@arm.com>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit
X-purgate-ID: tlsNG-33051d/1776695136-485AB938-8FD3651C/0/0
X-purgate-type: clean
X-purgate-size: 3903

From: Penny Zheng <Penny.Zheng@arm.com>

Implement the function p2m_get_entry for MPU systems, which is
responsible for looking up an entry in the p2m table.

Signed-off-by: Penny Zheng <penny.zheng@arm.com>
Signed-off-by: Wei Chen <wei.chen@arm.com>
Signed-off-by: Luca Fancellu <luca.fancellu@arm.com>
Signed-off-by: Hari Limaye <hari.limaye@arm.com>
---
 xen/arch/arm/include/asm/mpu/p2m.h |  5 ++
 xen/arch/arm/mpu/p2m.c             | 76 ++++++++++++++++++++++++++++--
 2 files changed, 77 insertions(+), 4 deletions(-)

diff --git a/xen/arch/arm/include/asm/mpu/p2m.h b/xen/arch/arm/include/asm/mpu/p2m.h
index b9c7be2d9dcc..d0ec8a77a15a 100644
--- a/xen/arch/arm/include/asm/mpu/p2m.h
+++ b/xen/arch/arm/include/asm/mpu/p2m.h
@@ -31,6 +31,11 @@ static inline p2m_type_t region_get_p2m(pr_t *pr)
     return pr->p2m_type;
 }
 
+static inline bool region_is_p2m_valid(pr_t *pr)
+{
+    return (pr->p2m_type != p2m_invalid);
+}
+
 #endif /* __ARM_MPU_P2M_H__ */
 
 /*
diff --git a/xen/arch/arm/mpu/p2m.c b/xen/arch/arm/mpu/p2m.c
index 4a8595b1b25e..681717eacf37 100644
--- a/xen/arch/arm/mpu/p2m.c
+++ b/xen/arch/arm/mpu/p2m.c
@@ -135,11 +135,79 @@ int p2m_set_entry(struct p2m_domain *p2m, gfn_t sgfn, unsigned long nr,
     return __p2m_set_entry(p2m, sgfn, nr, smfn, t, a);
 }
 
-mfn_t p2m_get_entry(struct p2m_domain *p2m, gfn_t gfn, p2m_type_t *t,
-                    p2m_access_t *a, unsigned int *page_order, bool *valid)
+/*
+ * Get the details of guest MPU memory region [gfn, gfn + nr_gfns).
+ *
+ * If the region is mapped, `t` is set to the p2m_type of the region and the
+ * starting MFN is returned.
+ * If the region is not mapped, INVALID_MFN is returned.
+ */
+static mfn_t p2m_get_mpu_region(struct p2m_domain *p2m, gfn_t gfn,
+                                unsigned long nr_gfns, p2m_type_t *type,
+                                bool *valid)
 {
-    BUG_ON("unimplemented");
-    return INVALID_MFN;
+    pr_t *table = NULL;
+    pr_t *region = NULL;
+    uint8_t idx = INVALID_REGION_IDX;
+    gfn_t egfn = gfn_add(gfn, nr_gfns);
+    p2m_type_t optional_type = p2m_invalid;
+    bool optional_valid = false;
+    mfn_t ret = INVALID_MFN;
+
+    ASSERT(p2m_is_locked(p2m));
+
+    /*
+     * Check if the ending gfn is higher than the highest the p2m map
+     * currently holds, or the starting gfn lower than the lowest it holds.
+     */
+    if ( (gfn_x(egfn) > gfn_x(p2m->max_mapped_gfn)) ||
+         (gfn_x(gfn) < gfn_x(p2m->lowest_mapped_gfn)) )
+        goto out;
+
+    table = (pr_t *)page_to_virt(p2m->root);
+    /* The table should always be non-NULL and is always present. */
+    if ( !table )
+        ASSERT_UNREACHABLE();
+
+    if ( is_gfns_mapped(table, p2m->nr_regions, gfn, nr_gfns, &idx) )
+        goto out;
+
+    region = &table[idx];
+    if ( region_is_p2m_valid(region) )
+    {
+        optional_type = region_get_p2m(region);
+        optional_valid = region_is_valid(region);
+    }
+
+    /* Always GFN == MFN on MPU systems. */
+    ret = _mfn(gfn_x(gfn));
+
+out:
+    if ( type )
+        *type = optional_type;
+
+    if ( valid )
+        *valid = optional_valid;
+
+    return ret;
+}
+
+/*
+ * Get the details of a given gfn.
+ *
+ * If the entry is present, the associated MFN will be returned and the
+ * p2m type gets filled up.
+ * If the entry is not present, INVALID_MFN will be returned
+ *
+ * The page_order is meaningless in MPU system, and we keep it here
+ * to be compatible with MMU system.
+ */
+mfn_t p2m_get_entry(struct p2m_domain *p2m, gfn_t gfn,
+                    p2m_type_t *t, p2m_access_t *a,
+                    unsigned int *page_order,
+                    bool *valid)
+{
+    return p2m_get_mpu_region(p2m, gfn, 1, t, valid);
 }
 
 void p2m_dump_info(struct domain *d)
-- 
2.34.1



From xen-devel-bounces@lists.xenproject.org Mon Apr 20 14:25:39 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 20 Apr 2026 14:25:39 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1286088.1567218 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wEpZD-0004kf-IJ; Mon, 20 Apr 2026 14:25:39 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1286088.1567218; Mon, 20 Apr 2026 14:25: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 1wEpZD-0004jM-ES; Mon, 20 Apr 2026 14:25:39 +0000
Received: by outflank-mailman (input) for mailman id 1286088;
 Mon, 20 Apr 2026 14:25:38 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <luca.fancellu@arm.com>) id 1wEpZC-0004bZ-Td
 for xen-devel@lists.xenproject.org; Mon, 20 Apr 2026 14:25:38 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wEpZC-00BFc6-9u
 for xen-devel@lists.xenproject.org; Mon, 20 Apr 2026 16:25:38 +0200
Received: from [10.42.69.8] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <luca.fancellu@arm.com>)
 id 69e63760-2eae-0a2a0a5409dd-0a2a450882fc-8
 for <xen-devel@lists.xenproject.org>; Mon, 20 Apr 2026 16:25:37 +0200
Received: from [217.140.110.172] (helo=foss.arm.com)
 by tlsNG-c1860d.mxtls.expurgate.net with ESMTP (eXpurgate 4.56.1)
 (envelope-from <luca.fancellu@arm.com>)
 id 69e63761-63b5-0a2a45080019-d98c6eac96be-1
 for <xen-devel@lists.xenproject.org>; Mon, 20 Apr 2026 16:25:37 +0200
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 5300916F2;
 Mon, 20 Apr 2026 07:25:31 -0700 (PDT)
Received: from e125770.cambridge.arm.com (e125770.arm.com [10.1.199.43])
 by usa-sjc-imap-foss1.foss.arm.com (Postfix) with ESMTPSA id B9A5C3F7B4;
 Mon, 20 Apr 2026 07:25:35 -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=foss header.d=arm.com header.i="@arm.com" header.h="From:To:Cc:Subject:Date:In-Reply-To:References"
DKIM-Signature: v=1; a=rsa-sha256; c=simple/simple; d=arm.com; s=foss;
	t=1776695136; bh=zydSLBd6tN5qexvU/dn56PdspdQkRiPjvNZz/rLJDIo=;
	h=From:To:Cc:Subject:Date:In-Reply-To:References:From;
	b=S8XRPHeMliAOMeBJjotCrRwclZtbZiPa/8onyrk1Y/8K4Rnnxfk2/nqWtrOyPljAD
	 cAREu9wb91FmJFuKP8XtSqPxOMMvHdzI6CtOGP6jhbEBE3qfyF7GB45Vra1iAz3sG4
	 jdd8cmIyTM/X1GqKEe6Q95TxRQ3zw1665byMvIoA=
From: Luca Fancellu <luca.fancellu@arm.com>
To: xen-devel@lists.xenproject.org
Cc: Penny Zheng <Penny.Zheng@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>,
	Penny Zheng <penny.zheng@arm.com>,
	Wei Chen <wei.chen@arm.com>
Subject: [PATCH 3/8] xen/mpu: enable device passthrough in MPU system
Date: Mon, 20 Apr 2026 15:25:19 +0100
Message-Id: <20260420142524.1804073-4-luca.fancellu@arm.com>
X-Mailer: git-send-email 2.34.1
In-Reply-To: <20260420142524.1804073-1-luca.fancellu@arm.com>
References: <20260420142524.1804073-1-luca.fancellu@arm.com>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit
X-purgate-ID: tlsNG-c1860d/1776695137-C1F6ADB1-76E20B7C/0/0
X-purgate-type: clean
X-purgate-size: 1422

From: Penny Zheng <Penny.Zheng@arm.com>

In order to enable device passthrough in MPU system, we only need to
provide p2m_mmio_direct_dev permission set up.

Signed-off-by: Penny Zheng <penny.zheng@arm.com>
Signed-off-by: Wei Chen <wei.chen@arm.com>
Signed-off-by: Luca Fancellu <luca.fancellu@arm.com>
---
 xen/arch/arm/mpu/p2m.c | 9 +++++++--
 1 file changed, 7 insertions(+), 2 deletions(-)

diff --git a/xen/arch/arm/mpu/p2m.c b/xen/arch/arm/mpu/p2m.c
index 681717eacf37..f2482237412b 100644
--- a/xen/arch/arm/mpu/p2m.c
+++ b/xen/arch/arm/mpu/p2m.c
@@ -13,6 +13,7 @@
 static inline unsigned int build_p2m_flags(p2m_type_t t)
 {
     unsigned int flags = 0;
+    unsigned int attr_idx = MT_NORMAL;
 
     BUILD_BUG_ON(p2m_max_real_type > (1 << 4));
 
@@ -30,11 +31,15 @@ static inline unsigned int build_p2m_flags(p2m_type_t t)
         flags |= _PAGE_XN | _PAGE_RO;
         break;
 
+    case p2m_mmio_direct_dev:
+        flags |= _PAGE_XN;
+        attr_idx = MT_DEVICE_nGnRE;
+        break;
+
     case p2m_max_real_type:
         BUG();
         break;
 
-    case p2m_mmio_direct_dev:
     case p2m_mmio_direct_nc:
     case p2m_mmio_direct_c:
     case p2m_iommu_map_ro:
@@ -47,7 +52,7 @@ static inline unsigned int build_p2m_flags(p2m_type_t t)
         break;
     }
 
-    flags |= MT_NORMAL;
+    flags |= attr_idx;
 
     return flags;
 }
-- 
2.34.1



From xen-devel-bounces@lists.xenproject.org Mon Apr 20 14:25:42 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 20 Apr 2026 14:25:42 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1286089.1567231 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wEpZF-0005Aa-Tb; Mon, 20 Apr 2026 14:25:41 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1286089.1567231; Mon, 20 Apr 2026 14:25: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 1wEpZF-0005AN-PF; Mon, 20 Apr 2026 14:25:41 +0000
Received: by outflank-mailman (input) for mailman id 1286089;
 Mon, 20 Apr 2026 14:25:40 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <luca.fancellu@arm.com>) id 1wEpZE-00050r-Ee
 for xen-devel@lists.xenproject.org; Mon, 20 Apr 2026 14:25:40 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wEpZD-00DjKj-RW
 for xen-devel@lists.xenproject.org; Mon, 20 Apr 2026 16:25:39 +0200
Received: from [10.42.69.3] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <luca.fancellu@arm.com>)
 id 69e6375d-bab6-0a2a0a5309dd-0a2a45039354-22
 for <xen-devel@lists.xenproject.org>; Mon, 20 Apr 2026 16:25:39 +0200
Received: from [217.140.110.172] (helo=foss.arm.com)
 by tlsNG-33051d.mxtls.expurgate.net with ESMTP (eXpurgate 4.56.1)
 (envelope-from <luca.fancellu@arm.com>)
 id 69e63762-672d-0a2a45030019-d98c6eacb926-1
 for <xen-devel@lists.xenproject.org>; Mon, 20 Apr 2026 16:25:39 +0200
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 EE7721758;
 Mon, 20 Apr 2026 07:25:32 -0700 (PDT)
Received: from e125770.cambridge.arm.com (e125770.arm.com [10.1.199.43])
 by usa-sjc-imap-foss1.foss.arm.com (Postfix) with ESMTPSA id 2C8DB3F7B4;
 Mon, 20 Apr 2026 07:25:37 -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=foss header.d=arm.com header.i="@arm.com" header.h="From:To:Cc:Subject:Date:In-Reply-To:References"
DKIM-Signature: v=1; a=rsa-sha256; c=simple/simple; d=arm.com; s=foss;
	t=1776695138; bh=qbZ9gSgQc0geGpYjPZJQGW1qcpmolTJxT0noQsC0zDg=;
	h=From:To:Cc:Subject:Date:In-Reply-To:References:From;
	b=A1kcUv112S14tZVWxdUhhSO4oRu3GAcs+kbCy1eOQNVfFvzWDYuiJ8OsPJHqMoWTY
	 Qo+c22nZFCkqQ1EuoRA2VDf2weuePmyPvw1Z/Cee4sYHMbfqN1i1L+fM+Uk2JVgmjZ
	 2txr7iS7VplQUEYS5PD2NC86sqk6OIbs41R6HeOQ=
From: Luca Fancellu <luca.fancellu@arm.com>
To: xen-devel@lists.xenproject.org
Cc: Penny Zheng <Penny.Zheng@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>,
	Penny Zheng <penny.zheng@arm.com>,
	Wei Chen <wei.chen@arm.com>,
	Hari Limaye <hari.limaye@arm.com>,
	Harry Ramsey <harry.ramsey@arm.com>
Subject: [PATCH 4/8] arm/mpu: Support vCPU context switch on MPU systems
Date: Mon, 20 Apr 2026 15:25:20 +0100
Message-Id: <20260420142524.1804073-5-luca.fancellu@arm.com>
X-Mailer: git-send-email 2.34.1
In-Reply-To: <20260420142524.1804073-1-luca.fancellu@arm.com>
References: <20260420142524.1804073-1-luca.fancellu@arm.com>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit
X-purgate-ID: tlsNG-33051d/1776695139-29D7B938-47532FEC/0/0
X-purgate-type: clean
X-purgate-size: 4660

From: Penny Zheng <Penny.Zheng@arm.com>

Implement the functions p2m_save_state and p2m_restore_state for MPU
systems. Unlike on MMU systems, where we simply update VTTBR_EL2 with
the incoming guest's p2m table on context switch, we have to disable the
outgoing guest's p2m memory regions and enable the incoming guest's p2m
memory regions.

Signed-off-by: Penny Zheng <penny.zheng@arm.com>
Signed-off-by: Wei Chen <wei.chen@arm.com>
Signed-off-by: Luca Fancellu <luca.fancellu@arm.com>
Signed-off-by: Hari Limaye <hari.limaye@arm.com>
Signed-off-by: Harry Ramsey <harry.ramsey@arm.com>
---
 xen/arch/arm/include/asm/mpu/cpregs.h |  4 +++
 xen/arch/arm/mpu/mm.c                 | 11 +++++--
 xen/arch/arm/mpu/p2m.c                | 47 +++++++++++++++++++++++++--
 3 files changed, 57 insertions(+), 5 deletions(-)

diff --git a/xen/arch/arm/include/asm/mpu/cpregs.h b/xen/arch/arm/include/asm/mpu/cpregs.h
index 9f3b32acd79f..5a3d92cf5389 100644
--- a/xen/arch/arm/include/asm/mpu/cpregs.h
+++ b/xen/arch/arm/include/asm/mpu/cpregs.h
@@ -6,6 +6,9 @@
 /* CP15 CR0: MPU Type Register */
 #define HMPUIR          p15,4,c0,c0,4
 
+/* CP15 CR2: Virtualization System Control register */
+#define VSCTLR          p15,4,c2,c0,1
+
 /* CP15 CR6: Protection Region Enable Register */
 #define HPRENR          p15,4,c6,c1,1
 
@@ -88,6 +91,7 @@
 #define PRENR_EL2       HPRENR
 #define PRLAR_EL2       HPRLAR
 #define PRSELR_EL2      HPRSELR
+#define VSCTLR_EL2      VSCTLR
 #endif /* CONFIG_ARM_32 */
 
 #endif /* __ARM_MPU_CPREGS_H */
diff --git a/xen/arch/arm/mpu/mm.c b/xen/arch/arm/mpu/mm.c
index 4ee58ded5ad6..5ed77355a5f9 100644
--- a/xen/arch/arm/mpu/mm.c
+++ b/xen/arch/arm/mpu/mm.c
@@ -421,9 +421,14 @@ static int xen_mpumap_update_entry(paddr_t base, paddr_t limit,
     return 0;
 }
 
-int check_mpu_mapping(paddr_t base, paddr_t limit, unsigned int flags)
+static bool check_mpu_mapping(paddr_t base, paddr_t limit, unsigned int flags,
+                              bool p2m)
 {
-    if ( flags_has_rwx(flags) )
+    /*
+     * Mappings should not be both Writeable and Executable, unless
+     * it is for guest P2M mapping.
+     */
+    if ( flags_has_rwx(flags) && !p2m )
     {
         printk("Mappings should not be both Writeable and Executable\n");
         return false;
@@ -450,7 +455,7 @@ int xen_mpumap_update(paddr_t base, paddr_t limit, unsigned int flags, bool p2m)
 {
     int rc;
 
-    if ( !check_mpu_mapping(base, limit, flags) )
+    if ( !check_mpu_mapping(base, limit, flags, p2m) )
         return -EINVAL;
 
     spin_lock(&xen_mpumap_lock);
diff --git a/xen/arch/arm/mpu/p2m.c b/xen/arch/arm/mpu/p2m.c
index f2482237412b..bf87c65c106c 100644
--- a/xen/arch/arm/mpu/p2m.c
+++ b/xen/arch/arm/mpu/p2m.c
@@ -285,14 +285,57 @@ int p2m_init(struct domain *d)
     return 0;
 }
 
+static int p2m_xenmpu_update(struct p2m_domain *p2m, bool online)
+{
+    pr_t *p2m_table;
+    unsigned int flags = online ? _PAGE_PRESENT : 0;
+
+    p2m_table = (pr_t *)page_to_virt(p2m->root);
+    if ( !p2m_table )
+        return -EINVAL;
+
+    for ( unsigned int i = 0; i < p2m->nr_regions; i++ )
+    {
+        paddr_t base = pr_get_base(&p2m_table[i]);
+        paddr_t limit = pr_get_limit(&p2m_table[i]) + 1;
+        unsigned int region_flags;
+
+        region_flags = build_p2m_flags(region_get_p2m(&p2m_table[i])) | flags;
+        if ( xen_mpumap_update(base, limit, region_flags, true) )
+        {
+            printk(XENLOG_G_ERR "Unable to update MPU memory mapping with P2M region %#"PRIpaddr"-%#"PRIpaddr"\n",
+                   base, limit);
+            return -EINVAL;
+        }
+    }
+
+    return 0;
+}
+
+/* p2m_save_state and p2m_restore_state work in pair. */
 void p2m_save_state(struct vcpu *p)
 {
-    BUG_ON("unimplemented");
+    struct p2m_domain *p2m = p2m_get_hostp2m(p->domain);
+
+    p->arch.sctlr = READ_SYSREG(SCTLR_EL1);
+
+    if ( p2m_xenmpu_update(p2m, false) )
+        panic("Failed to offline P2M MPU memory mapping\n");
 }
 
 void p2m_restore_state(struct vcpu *n)
 {
-    BUG_ON("unimplemented");
+    struct p2m_domain *p2m = p2m_get_hostp2m(n->domain);
+    uint8_t *last_vcpu_ran = &p2m->last_vcpu_ran[smp_processor_id()];
+
+    WRITE_SYSREG(n->arch.sctlr, SCTLR_EL1);
+    WRITE_SYSREG(n->arch.hcr_el2, HCR_EL2);
+
+    WRITE_SYSREG(p2m->vsctlr, VSCTLR_EL2);
+    if ( p2m_xenmpu_update(p2m, true) )
+        panic("Failed to online P2M MPU memory mapping\n");
+
+    *last_vcpu_ran = n->vcpu_id;
 }
 
 void p2m_final_teardown(struct domain *d)
-- 
2.34.1



From xen-devel-bounces@lists.xenproject.org Mon Apr 20 14:25:43 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 20 Apr 2026 14:25:43 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1286091.1567240 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wEpZH-0005Q6-6O; Mon, 20 Apr 2026 14:25:43 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1286091.1567240; Mon, 20 Apr 2026 14:25: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 1wEpZH-0005Px-27; Mon, 20 Apr 2026 14:25:43 +0000
Received: by outflank-mailman (input) for mailman id 1286091;
 Mon, 20 Apr 2026 14:25:41 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <luca.fancellu@arm.com>) id 1wEpZF-0005A0-PH
 for xen-devel@lists.xenproject.org; Mon, 20 Apr 2026 14:25:41 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wEpZF-00BFc6-3z
 for xen-devel@lists.xenproject.org; Mon, 20 Apr 2026 16:25:41 +0200
Received: from [10.42.69.6] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <luca.fancellu@arm.com>)
 id 69e63753-2eae-0a2a0a5409dd-0a2a4506d4a6-46
 for <xen-devel@lists.xenproject.org>; Mon, 20 Apr 2026 16:25:41 +0200
Received: from [217.140.110.172] (helo=foss.arm.com)
 by tlsNG-16d1c6.mxtls.expurgate.net with ESMTP (eXpurgate 4.56.1)
 (envelope-from <luca.fancellu@arm.com>)
 id 69e63764-7371-0a2a45060019-d98c6eacd072-1
 for <xen-devel@lists.xenproject.org>; Mon, 20 Apr 2026 16:25:40 +0200
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 5E45E16F2;
 Mon, 20 Apr 2026 07:25:34 -0700 (PDT)
Received: from e125770.cambridge.arm.com (e125770.arm.com [10.1.199.43])
 by usa-sjc-imap-foss1.foss.arm.com (Postfix) with ESMTPSA id C672D3F7B4;
 Mon, 20 Apr 2026 07:25:38 -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=foss header.d=arm.com header.i="@arm.com" header.h="From:To:Cc:Subject:Date:In-Reply-To:References"
DKIM-Signature: v=1; a=rsa-sha256; c=simple/simple; d=arm.com; s=foss;
	t=1776695139; bh=7NVH7QgOJjbAjD26LtB1wsu/7pirLzYhzd1KxWkCV3U=;
	h=From:To:Cc:Subject:Date:In-Reply-To:References:From;
	b=uvOv0+BNiAmystHk22rMykjakgdlygV7SrTPltD8ab7waAmmUa31WhoZzlpJdGt7F
	 I8PWWqtYNrHctgT7lPpZHHx7UG+2XfDVBJIeUy70KVcrhA/I/BTbpGJ8gIj67YRj4a
	 b3CJU/1qMHWc1ZUjO2n+mciwDDplK3Y1c3rX3Rwo=
From: Luca Fancellu <luca.fancellu@arm.com>
To: xen-devel@lists.xenproject.org
Cc: Penny Zheng <Penny.Zheng@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>,
	Penny Zheng <penny.zheng@arm.com>,
	Wei Chen <wei.chen@arm.com>
Subject: [PATCH 5/8] xen/arm: enable MMIO region trap in MPU system
Date: Mon, 20 Apr 2026 15:25:21 +0100
Message-Id: <20260420142524.1804073-6-luca.fancellu@arm.com>
X-Mailer: git-send-email 2.34.1
In-Reply-To: <20260420142524.1804073-1-luca.fancellu@arm.com>
References: <20260420142524.1804073-1-luca.fancellu@arm.com>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit
X-purgate-ID: tlsNG-16d1c6/1776695141-91985D75-F6D49A57/0/0
X-purgate-type: clean
X-purgate-size: 5352

From: Penny Zheng <Penny.Zheng@arm.com>

MMIO region traps, generating from insufficient access permissions,
will lead to data abort with Permission Fault in MPU system.
It is different with MMU system, which generates Translation Fault
instead.

We extract common codes for dealing with MMIO trap into a new helper
do_mmio_trap_stage2_abort_guest().

Signed-off-by: Penny Zheng <penny.zheng@arm.com>
Signed-off-by: Wei Chen <wei.chen@arm.com>
Signed-off-by: Luca Fancellu <luca.fancellu@arm.com>
---
 xen/arch/arm/traps.c | 83 ++++++++++++++++++++++++++++++--------------
 1 file changed, 56 insertions(+), 27 deletions(-)

diff --git a/xen/arch/arm/traps.c b/xen/arch/arm/traps.c
index 0c01f37ad6b4..081bd2e51979 100644
--- a/xen/arch/arm/traps.c
+++ b/xen/arch/arm/traps.c
@@ -1815,6 +1815,47 @@ static inline bool check_p2m(bool is_data, paddr_t gpa)
     return false;
 }
 
+static int do_mmio_trap_stage2_abort_guest(struct cpu_user_regs *regs,
+                                           const union hsr hsr,
+                                           mmio_info_t *info,
+                                           vaddr_t gva, paddr_t gpa)
+{
+    enum io_state state;
+
+    state = try_handle_mmio(regs, info);
+
+    switch ( state )
+    {
+        case IO_ABORT:
+            gdprintk(XENLOG_DEBUG,
+                    "HSR=%#"PRIregister" pc=%#"PRIregister" gva=%#"PRIvaddr" gpa=%#"PRIpaddr"\n",
+                    hsr.bits, regs->pc, gva, gpa);
+            inject_dabt_exception(regs, gva);
+            break;
+        case IO_HANDLED:
+            /*
+             * If the instruction was decoded and has executed successfully
+             * on the MMIO region, then Xen should execute the next part of
+             * the instruction. (for eg increment the rn if it is a
+             * post-indexing instruction.
+             */
+            finalize_instr_emulation(&info->dabt_instr);
+            advance_pc(regs, hsr);
+            break;
+        case IO_RETRY:
+            /* finish later */
+            break;
+        case IO_UNHANDLED:
+            /* IO unhandled, try another way to handle it. */
+            return -EFAULT;
+        default:
+            ASSERT_UNREACHABLE();
+            return -EFAULT;
+    }
+
+    return 0;
+}
+
 static void do_trap_stage2_abort_guest(struct cpu_user_regs *regs,
                                        const union hsr hsr)
 {
@@ -1829,7 +1870,6 @@ static void do_trap_stage2_abort_guest(struct cpu_user_regs *regs,
     uint8_t fsc = xabt.fsc & ~FSC_LL_MASK;
     bool is_data = (hsr.ec == HSR_EC_DATA_ABORT_LOWER_EL);
     mmio_info_t info;
-    enum io_state state;
 
     /*
      * If this bit has been set, it means that this stage-2 abort is caused
@@ -1863,6 +1903,8 @@ static void do_trap_stage2_abort_guest(struct cpu_user_regs *regs,
             return; /* Try again */
     }
 
+    info.gpa = gpa;
+    info.dabt = hsr.dabt;
     switch ( fsc )
     {
     case FSC_FLT_PERM:
@@ -1876,6 +1918,17 @@ static void do_trap_stage2_abort_guest(struct cpu_user_regs *regs,
         };
 
         p2m_mem_access_check(gpa, gva, npfec);
+
+#if !defined(CONFIG_MMU)
+        /*
+         * MMIO region traps, generating from insufficient access permissions,
+         * will lead to data abort with Permission fault.
+         */
+        if ( is_data && (do_mmio_trap_stage2_abort_guest(regs, hsr, &info, gva,
+                                                         gpa) == 0) )
+            return;
+#endif
+
         /*
          * The only way to get here right now is because of mem_access,
          * thus reinjecting the exception to the guest is never required.
@@ -1884,9 +1937,6 @@ static void do_trap_stage2_abort_guest(struct cpu_user_regs *regs,
     }
     case FSC_FLT_TRANS:
     {
-        info.gpa = gpa;
-        info.dabt = hsr.dabt;
-
         /*
          * Assumption :- Most of the times when we get a data abort and the ISS
          * is invalid or an instruction abort, the underlying cause is that the
@@ -1923,29 +1973,8 @@ static void do_trap_stage2_abort_guest(struct cpu_user_regs *regs,
         if ( (info.dabt_instr.state == INSTR_VALID) && check_p2m(is_data, gpa) )
             return;
 
-        state = try_handle_mmio(regs, &info);
-
-        switch ( state )
-        {
-            case IO_ABORT:
-                goto inject_abt;
-            case IO_HANDLED:
-                /*
-                 * If the instruction was decoded and has executed successfully
-                 * on the MMIO region, then Xen should execute the next part of
-                 * the instruction. (for eg increment the rn if it is a
-                 * post-indexing instruction.
-                 */
-                finalize_instr_emulation(&info.dabt_instr);
-                advance_pc(regs, hsr);
-                return;
-            case IO_RETRY:
-                /* finish later */
-                return;
-            case IO_UNHANDLED:
-                /* IO unhandled, try another way to handle it. */
-                break;
-        }
+        if ( do_mmio_trap_stage2_abort_guest(regs, hsr, &info, gva, gpa) == 0 )
+            return;
 
         break;
     }
-- 
2.34.1



From xen-devel-bounces@lists.xenproject.org Mon Apr 20 14:25:45 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 20 Apr 2026 14:25:45 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1286092.1567249 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wEpZJ-0005ic-Hu; Mon, 20 Apr 2026 14:25:45 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1286092.1567249; Mon, 20 Apr 2026 14:25: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 1wEpZJ-0005iF-AZ; Mon, 20 Apr 2026 14:25:45 +0000
Received: by outflank-mailman (input) for mailman id 1286092;
 Mon, 20 Apr 2026 14:25:43 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <luca.fancellu@arm.com>) id 1wEpZH-0005QG-Bq
 for xen-devel@lists.xenproject.org; Mon, 20 Apr 2026 14:25:43 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wEpZG-007oXE-P0
 for xen-devel@lists.xenproject.org; Mon, 20 Apr 2026 16:25:42 +0200
Received: from [10.42.69.12] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <luca.fancellu@arm.com>)
 id 69e63758-5cb7-0a2a0a5109dd-0a2a450cba0e-44
 for <xen-devel@lists.xenproject.org>; Mon, 20 Apr 2026 16:25:42 +0200
Received: from [217.140.110.172] (helo=foss.arm.com)
 by tlsNG-d25034.mxtls.expurgate.net with ESMTP (eXpurgate 4.56.1)
 (envelope-from <luca.fancellu@arm.com>)
 id 69e63765-62f1-0a2a450c0019-d98c6eacb948-1
 for <xen-devel@lists.xenproject.org>; Mon, 20 Apr 2026 16:25:42 +0200
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 C8F921516;
 Mon, 20 Apr 2026 07:25:35 -0700 (PDT)
Received: from e125770.cambridge.arm.com (e125770.arm.com [10.1.199.43])
 by usa-sjc-imap-foss1.foss.arm.com (Postfix) with ESMTPSA id 38E6D3F7B4;
 Mon, 20 Apr 2026 07:25:40 -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=foss header.d=arm.com header.i="@arm.com" header.h="From:To:Cc:Subject:Date:In-Reply-To:References"
DKIM-Signature: v=1; a=rsa-sha256; c=simple/simple; d=arm.com; s=foss;
	t=1776695141; bh=Al7AOCud4lNxulX4r/nJBRzdtBBDHwwUvlyzIFQQIKY=;
	h=From:To:Cc:Subject:Date:In-Reply-To:References:From;
	b=X9UfO1TxDU5WDQ4XOfEZVuqUA7Cxo97hg/3n6y2wcT9I8yPJMNwz+5dgCMK66TUJZ
	 rkc2y93ONuRunueaVzcWPnz0v1koP+p3ws8Dlg86Oe79Nld4MwWdwHx0SLcvf1121n
	 yBzfkKc94C+c3O/uRbURDIbCVDXr65wqAelBMRSo=
From: Luca Fancellu <luca.fancellu@arm.com>
To: xen-devel@lists.xenproject.org
Cc: Penny Zheng <Penny.Zheng@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>,
	Penny Zheng <penny.zheng@arm.com>,
	Wei Chen <wei.chen@arm.com>
Subject: [PATCH 6/8] xen/arm: dump debug message in MPU system
Date: Mon, 20 Apr 2026 15:25:22 +0100
Message-Id: <20260420142524.1804073-7-luca.fancellu@arm.com>
X-Mailer: git-send-email 2.34.1
In-Reply-To: <20260420142524.1804073-1-luca.fancellu@arm.com>
References: <20260420142524.1804073-1-luca.fancellu@arm.com>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit
X-purgate-ID: tlsNG-d25034/1776695142-F4C07CF5-F184B584/0/0
X-purgate-type: clean
X-purgate-size: 4208

From: Penny Zheng <Penny.Zheng@arm.com>

A set of helpers dump_xxx and show_registers are responsible for
dumping memory mapping info and register info when debugging.
In this commit, we implement them all in MPU system too.

Signed-off-by: Penny Zheng <penny.zheng@arm.com>
Signed-off-by: Wei Chen <wei.chen@arm.com>
Signed-off-by: Luca Fancellu <luca.fancellu@arm.com>
---
 xen/arch/arm/mpu/mm.c  | 12 +++++++++++-
 xen/arch/arm/mpu/p2m.c | 40 +++++++++++++++++++++++++++++++++++++++-
 xen/arch/arm/traps.c   |  8 ++++++++
 3 files changed, 58 insertions(+), 2 deletions(-)

diff --git a/xen/arch/arm/mpu/mm.c b/xen/arch/arm/mpu/mm.c
index 5ed77355a5f9..459fb952d125 100644
--- a/xen/arch/arm/mpu/mm.c
+++ b/xen/arch/arm/mpu/mm.c
@@ -554,7 +554,17 @@ int modify_xen_mappings(unsigned long s, unsigned long e, unsigned int nf)
 
 void dump_hyp_walk(vaddr_t addr)
 {
-    BUG_ON("unimplemented");
+    uint8_t i = 0;
+    pr_t region;
+
+    for ( i = 0; i < max_mpu_regions; i++ )
+    {
+        read_protection_region(&region, i);
+        if ( region_is_valid(&region) )
+            printk(XENLOG_INFO
+                   "Walking hypervisor MPU memory region [%u]: 0x%"PRIpaddr"-0x%"PRIpaddr"\n",
+                   i, pr_get_base(&region), pr_get_limit(&region));
+    }
 }
 
 /* Release all __init and __initdata ranges to be reused */
diff --git a/xen/arch/arm/mpu/p2m.c b/xen/arch/arm/mpu/p2m.c
index bf87c65c106c..06c92a3ef41b 100644
--- a/xen/arch/arm/mpu/p2m.c
+++ b/xen/arch/arm/mpu/p2m.c
@@ -215,9 +215,47 @@ mfn_t p2m_get_entry(struct p2m_domain *p2m, gfn_t gfn,
     return p2m_get_mpu_region(p2m, gfn, 1, t, valid);
 }
 
+static void dump_mpu_walk(pr_t *table, uint8_t nr_regions)
+{
+    uint8_t i = 0;
+
+    for ( ; i < nr_regions; i++ )
+    {
+        paddr_t base, limit;
+
+        if ( region_is_valid(&table[i]) )
+        {
+            base = pr_get_base(&table[i]);
+            limit = pr_get_limit(&table[i]);
+
+            printk(XENLOG_INFO
+                   "Walking MPU memory mapping table: Region[%u]: 0x%"PRIpaddr"-0x%"PRIpaddr"\n",
+                   i, base, limit);
+        }
+    }
+}
+
+void dump_p2m_lookup(struct domain *d, paddr_t addr)
+{
+    struct p2m_domain *p2m = p2m_get_hostp2m(d);
+
+    printk("dom%d IPA 0x%"PRIpaddr"\n", d->domain_id, addr);
+
+    printk("P2M @ %p mfn:%#"PRI_mfn"\n",
+           p2m->root, mfn_x(page_to_mfn(p2m->root)));
+
+    dump_mpu_walk((pr_t *)page_to_virt(p2m->root), p2m->nr_regions);
+}
+
 void p2m_dump_info(struct domain *d)
 {
-    BUG_ON("unimplemented");
+    struct p2m_domain *p2m = p2m_get_hostp2m(d);
+
+    p2m_read_lock(p2m);
+    printk("p2m mappings for domain %d (vmid %d):\n",
+           d->domain_id, p2m->vmid);
+    printk("  Number of P2M Memory Region: %u \n", p2m->nr_regions);
+    p2m_read_unlock(p2m);
 }
 
 static int p2m_alloc_table(struct domain *d)
diff --git a/xen/arch/arm/traps.c b/xen/arch/arm/traps.c
index 081bd2e51979..fba7d6c00e37 100644
--- a/xen/arch/arm/traps.c
+++ b/xen/arch/arm/traps.c
@@ -718,6 +718,8 @@ struct reg_ctxt {
 #ifdef CONFIG_MMU
     /* Hypervisor-side state */
     uint64_t vttbr_el2;
+#else
+    uint64_t vsctlr_el2;
 #endif
 };
 
@@ -918,6 +920,8 @@ static void _show_registers(const struct cpu_user_regs *regs,
     printk("  VTCR_EL2: %"PRIregister"\n", READ_SYSREG(VTCR_EL2));
 #ifdef CONFIG_MMU
     printk(" VTTBR_EL2: %016"PRIx64"\n", ctxt->vttbr_el2);
+#else
+    printk(" VSCTLR_EL2: %016"PRIx64"\n", ctxt->vsctlr_el2);
 #endif
     printk("\n");
 
@@ -959,6 +963,8 @@ void show_registers(const struct cpu_user_regs *regs)
 #endif
 #ifdef CONFIG_MMU
     ctxt.vttbr_el2 = READ_SYSREG64(VTTBR_EL2);
+#else
+    ctxt.vsctlr_el2 = READ_SYSREG(VSCTLR_EL2);
 #endif
 
     _show_registers(regs, &ctxt, guest_mode(regs), current);
@@ -985,6 +991,8 @@ void vcpu_show_registers(struct vcpu *v)
 
 #ifdef CONFIG_MMU
     ctxt.vttbr_el2 = v->domain->arch.p2m.vttbr;
+#else
+    ctxt.vsctlr_el2 = v->domain->arch.p2m.vsctlr;
 #endif
 
     _show_registers(&v->arch.cpu_info->guest_cpu_user_regs, &ctxt, 1, v);
-- 
2.34.1



From xen-devel-bounces@lists.xenproject.org Mon Apr 20 14:25:46 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 20 Apr 2026 14:25:46 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1286094.1567254 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wEpZK-0005lI-9c; Mon, 20 Apr 2026 14:25:46 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1286094.1567254; Mon, 20 Apr 2026 14:25: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 1wEpZJ-0005kb-OQ; Mon, 20 Apr 2026 14:25:45 +0000
Received: by outflank-mailman (input) for mailman id 1286094;
 Mon, 20 Apr 2026 14:25:44 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <luca.fancellu@arm.com>) id 1wEpZI-0005fl-FR
 for xen-devel@lists.xenproject.org; Mon, 20 Apr 2026 14:25:44 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wEpZH-00BFc6-Ru
 for xen-devel@lists.xenproject.org; Mon, 20 Apr 2026 16:25:43 +0200
Received: from [10.42.69.8] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <luca.fancellu@arm.com>)
 id 69e63760-2eae-0a2a0a5409dd-0a2a450882fc-36
 for <xen-devel@lists.xenproject.org>; Mon, 20 Apr 2026 16:25:43 +0200
Received: from [217.140.110.172] (helo=foss.arm.com)
 by tlsNG-c1860d.mxtls.expurgate.net with ESMTP (eXpurgate 4.56.1)
 (envelope-from <luca.fancellu@arm.com>)
 id 69e63767-63b5-0a2a45080019-d98c6eacb956-1
 for <xen-devel@lists.xenproject.org>; Mon, 20 Apr 2026 16:25:43 +0200
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 05BCE1758;
 Mon, 20 Apr 2026 07:25:37 -0700 (PDT)
Received: from e125770.cambridge.arm.com (e125770.arm.com [10.1.199.43])
 by usa-sjc-imap-foss1.foss.arm.com (Postfix) with ESMTPSA id 9F9473F7B4;
 Mon, 20 Apr 2026 07:25:41 -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=foss header.d=arm.com header.i="@arm.com" header.h="From:To:Cc:Subject:Date:In-Reply-To:References"
DKIM-Signature: v=1; a=rsa-sha256; c=simple/simple; d=arm.com; s=foss;
	t=1776695142; bh=POwMy0a+mxqsay/MzYgDqyjsTTEYght2gW9VVJxJBz4=;
	h=From:To:Cc:Subject:Date:In-Reply-To:References:From;
	b=iFLQu4L1MjrxmtfYHsLxLuv0UPDZvOLH4psmVR7VcRh6has4yzl+fjB3TwnUR1kUs
	 Wn8C0hKN1198xG8cQSM59wpSjmtbDzp1I1Zh2I1oxOXVjR4jSMTc+41zZRkclWcLuD
	 VrrXQVwZBJ1vM6AH9BCHpMyjFQEPmDHTLgkuk+Ko=
From: Luca Fancellu <luca.fancellu@arm.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>
Subject: [PATCH 7/8] arm/mpu: Save/restore guest EL1 MPU-related context
Date: Mon, 20 Apr 2026 15:25:23 +0100
Message-Id: <20260420142524.1804073-8-luca.fancellu@arm.com>
X-Mailer: git-send-email 2.34.1
In-Reply-To: <20260420142524.1804073-1-luca.fancellu@arm.com>
References: <20260420142524.1804073-1-luca.fancellu@arm.com>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit
X-purgate-ID: tlsNG-c1860d/1776695143-3AD73DB1-0CCEDBC0/0/0
X-purgate-type: clean
X-purgate-size: 18418

Implement save/restore of guest MPU-related context, as all MPU memory
regions must be saved/restored on vCPU context switch when domain is
using PMSAv8-64 translation regime.

Introduce is_mpu_domain() helper function that is always false on MMU
and it checks if PMSA is selected at EL1 for MPU domains.

Split the save/restore functions into MPU arm64 and arm32, the latter
is currently not implemented, the former is fully implemented and
uses the PR{B,L}AR<n>_EL1 register access in order to issue the
minimum amount of ISB as possible while changing the selector and
writing/reading the registers.

struct arch_vcpu now includes a pointer to the allocated storage for
the additional MPU regions to be saved on context switch.

Signed-off-by: Luca Fancellu <luca.fancellu@arm.com>
---
 xen/arch/arm/arm64/mpu/p2m.c          |   2 +
 xen/arch/arm/domain.c                 |  49 +++++++---
 xen/arch/arm/include/asm/domain.h     |   5 +
 xen/arch/arm/include/asm/mm.h         |   3 +
 xen/arch/arm/include/asm/mmu/mm.h     |  12 +++
 xen/arch/arm/include/asm/mpu.h        |   3 +
 xen/arch/arm/include/asm/mpu/cpregs.h |   3 +
 xen/arch/arm/include/asm/mpu/mm.h     |  10 ++
 xen/arch/arm/mpu/arm32/mm.c           |  10 ++
 xen/arch/arm/mpu/arm64/mm.c           | 136 ++++++++++++++++++++++++++
 xen/arch/arm/mpu/mm.c                 |  39 ++++++++
 11 files changed, 260 insertions(+), 12 deletions(-)

diff --git a/xen/arch/arm/arm64/mpu/p2m.c b/xen/arch/arm/arm64/mpu/p2m.c
index a39a1fc38946..a1ec9fcd6195 100644
--- a/xen/arch/arm/arm64/mpu/p2m.c
+++ b/xen/arch/arm/arm64/mpu/p2m.c
@@ -62,6 +62,8 @@ void __init setup_virt_paging(void)
 
     p2m_vmid_allocator_init();
 
+    load_nr_mpu_regions_el1();
+
     /*
      * VSTCR_EL2.SA defines secure stage 2 translation output address space.
      * To make sure that all stage 2 translations for the Secure PA space access
diff --git a/xen/arch/arm/domain.c b/xen/arch/arm/domain.c
index dfa7ace1141b..221b1f8a7f9d 100644
--- a/xen/arch/arm/domain.c
+++ b/xen/arch/arm/domain.c
@@ -123,11 +123,23 @@ static void ctxt_switch_from(struct vcpu *p)
 
     isb();
 
-    /* MMU */
+    /* MMU/MPU */
+    if ( is_mpu_domain(p->domain) )
+    {
+        /*
+         * Domain is using PMSAv8-64 translation regime at EL1, so we need to
+         * save EL1 MPU memory regions.
+         */
+        save_el1_mpu_regions(p);
+    }
+    else
+    {
+        /* Domain is using VMSAv8-64 translation regime via MMU. */
+        p->arch.ttbcr = READ_SYSREG(TCR_EL1);
+        p->arch.ttbr0 = READ_SYSREG64(TTBR0_EL1);
+        p->arch.ttbr1 = READ_SYSREG64(TTBR1_EL1);
+    }
     p->arch.vbar = READ_SYSREG(VBAR_EL1);
-    p->arch.ttbcr = READ_SYSREG(TCR_EL1);
-    p->arch.ttbr0 = READ_SYSREG64(TTBR0_EL1);
-    p->arch.ttbr1 = READ_SYSREG64(TTBR1_EL1);
     if ( is_32bit_domain(p->domain) )
         p->arch.dacr = READ_SYSREG(DACR32_EL2);
     p->arch.par = read_sysreg_par();
@@ -156,8 +168,6 @@ static void ctxt_switch_from(struct vcpu *p)
     p->arch.afsr0 = READ_SYSREG(AFSR0_EL1);
     p->arch.afsr1 = READ_SYSREG(AFSR1_EL1);
 
-    /* XXX MPU */
-
     /* VGIC */
     gic_save_state(p);
 
@@ -181,8 +191,6 @@ static void ctxt_switch_to(struct vcpu *n)
     /* VGIC */
     gic_restore_state(n);
 
-    /* XXX MPU */
-
     /* Fault Status */
 #if defined(CONFIG_ARM_32)
     WRITE_CP32(n->arch.dfar, DFAR);
@@ -198,11 +206,23 @@ static void ctxt_switch_to(struct vcpu *n)
     WRITE_SYSREG(n->arch.afsr0, AFSR0_EL1);
     WRITE_SYSREG(n->arch.afsr1, AFSR1_EL1);
 
-    /* MMU */
+    /* MMU/MPU */
+    if ( is_mpu_domain(n->domain) )
+    {
+        /*
+         * Domain is using PMSAv8-64 translation regime at EL1, so we need to
+         * restore EL1 MPU memory regions.
+         */
+        restore_el1_mpu_regions(n);
+    }
+    else
+    {
+        /* Domain is using VMSAv8-64 translation regime via MMU. */
+        WRITE_SYSREG(n->arch.ttbcr, TCR_EL1);
+        WRITE_SYSREG64(n->arch.ttbr0, TTBR0_EL1);
+        WRITE_SYSREG64(n->arch.ttbr1, TTBR1_EL1);
+    }
     WRITE_SYSREG(n->arch.vbar, VBAR_EL1);
-    WRITE_SYSREG(n->arch.ttbcr, TCR_EL1);
-    WRITE_SYSREG64(n->arch.ttbr0, TTBR0_EL1);
-    WRITE_SYSREG64(n->arch.ttbr1, TTBR1_EL1);
 
     /*
      * Erratum #852523 (Cortex-A57) or erratum #853709 (Cortex-A72):
@@ -518,6 +538,9 @@ int arch_vcpu_create(struct vcpu *v)
     if ( get_ssbd_state() == ARM_SSBD_RUNTIME )
         v->arch.cpu_info->flags |= CPUINFO_WORKAROUND_2_FLAG;
 
+    if ( is_mpu_domain(v->domain) )
+        allocate_el1_mpu_regions(v);
+
     return rc;
 
 fail:
@@ -532,6 +555,8 @@ void arch_vcpu_destroy(struct vcpu *v)
     vcpu_timer_destroy(v);
     vcpu_vgic_free(v);
     free_xenheap_pages(v->arch.stack, STACK_ORDER);
+    if ( is_mpu_domain(v->domain) )
+        free_el1_mpu_regions(v);
 }
 
 void vcpu_switch_to_aarch64_mode(struct vcpu *v)
diff --git a/xen/arch/arm/include/asm/domain.h b/xen/arch/arm/include/asm/domain.h
index 4a3fb825962b..44c304ef8aa9 100644
--- a/xen/arch/arm/include/asm/domain.h
+++ b/xen/arch/arm/include/asm/domain.h
@@ -202,6 +202,11 @@ struct arch_vcpu
     register_t actlr;
     uint32_t cpacr;
 
+#ifdef CONFIG_MPU
+    /* EL1 MPU memory regions */
+    pr_t *mpu_regions;
+#endif
+
     uint32_t contextidr;
     register_t tpidr_el0;
     register_t tpidr_el1;
diff --git a/xen/arch/arm/include/asm/mm.h b/xen/arch/arm/include/asm/mm.h
index 72a692862420..9e35800aba5e 100644
--- a/xen/arch/arm/include/asm/mm.h
+++ b/xen/arch/arm/include/asm/mm.h
@@ -202,6 +202,9 @@ extern void setup_frametable_mappings(paddr_t ps, paddr_t pe);
 void setup_mm_helper(void);
 /* map a physical range in virtual memory */
 void __iomem *ioremap_attr(paddr_t start, size_t len, unsigned int attributes);
+/* Allocate space for EL1 MPU region info */
+void allocate_el1_mpu_regions(struct vcpu *v);
+void free_el1_mpu_regions(struct vcpu *v);
 
 static inline void __iomem *ioremap_nocache(paddr_t start, size_t len)
 {
diff --git a/xen/arch/arm/include/asm/mmu/mm.h b/xen/arch/arm/include/asm/mmu/mm.h
index 7f4d59137d0d..c441af50c3a9 100644
--- a/xen/arch/arm/include/asm/mmu/mm.h
+++ b/xen/arch/arm/include/asm/mmu/mm.h
@@ -9,6 +9,8 @@
 #include <asm/mmu/layout.h>
 #include <asm/page.h>
 
+struct domain;
+
 /* Non-boot CPUs use this to find the correct pagetables. */
 extern uint64_t init_ttbr;
 
@@ -91,6 +93,16 @@ static inline struct page_info *virt_to_page(const void *v)
     return frame_table + pdx - frametable_base_pdx;
 }
 
+/* If this domain should use PMSAv8-64 translation regime (MPU) at EL1. */
+static inline bool is_mpu_domain(struct domain *d)
+{
+    return false;
+}
+
+/* Stub for MPU EL1 region save/restore */
+static inline void save_el1_mpu_regions(struct vcpu *p) { }
+static inline void restore_el1_mpu_regions(struct vcpu *n) { }
+
 /*
  * Print a walk of a page table or p2m
  *
diff --git a/xen/arch/arm/include/asm/mpu.h b/xen/arch/arm/include/asm/mpu.h
index 8a8c01086206..525944987713 100644
--- a/xen/arch/arm/include/asm/mpu.h
+++ b/xen/arch/arm/include/asm/mpu.h
@@ -27,6 +27,9 @@
 
 #ifndef __ASSEMBLER__
 
+/* Load the number of regions supported by the EL1 MPU from MPUIR_EL1. */
+void load_nr_mpu_regions_el1(void);
+
 /*
  * Utility function to determine if an Armv8-R processor supports VMSA.
  */
diff --git a/xen/arch/arm/include/asm/mpu/cpregs.h b/xen/arch/arm/include/asm/mpu/cpregs.h
index 5a3d92cf5389..f6fb3c93c032 100644
--- a/xen/arch/arm/include/asm/mpu/cpregs.h
+++ b/xen/arch/arm/include/asm/mpu/cpregs.h
@@ -5,6 +5,7 @@
 
 /* CP15 CR0: MPU Type Register */
 #define HMPUIR          p15,4,c0,c0,4
+#define MPUIR           p15,0,c0,c0,4
 
 /* CP15 CR2: Virtualization System Control register */
 #define VSCTLR          p15,4,c2,c0,1
@@ -16,6 +17,7 @@
 #define HPRSELR         p15,4,c6,c2,1
 #define HPRBAR          p15,4,c6,c3,0
 #define HPRLAR          p15,4,c6,c3,1
+#define PRSELR          p15,0,c6,c2,1
 
 /* CP15 CR6: MPU Protection Region Base/Limit Address Register */
 #define HPRBAR0         p15,4,c6,c8,0
@@ -86,6 +88,7 @@
 /* Aliases of AArch64 names for use in common code */
 #ifdef CONFIG_ARM_32
 /* Alphabetically... */
+#define MPUIR_EL1       MPUIR
 #define MPUIR_EL2       HMPUIR
 #define PRBAR_EL2       HPRBAR
 #define PRENR_EL2       HPRENR
diff --git a/xen/arch/arm/include/asm/mpu/mm.h b/xen/arch/arm/include/asm/mpu/mm.h
index 24bffdee4fb6..a536ec4431df 100644
--- a/xen/arch/arm/include/asm/mpu/mm.h
+++ b/xen/arch/arm/include/asm/mpu/mm.h
@@ -20,6 +20,7 @@
 extern struct page_info *frame_table;
 
 extern uint8_t max_mpu_regions;
+extern uint8_t max_mpu_regions_el1;
 
 extern DECLARE_BITMAP(xen_mpumap_mask, MAX_MPU_REGION_NR);
 
@@ -55,6 +56,15 @@ static inline void context_sync_mpu(void)
     isb();
 }
 
+/* If this domain should use PMSAv8-64 translation regime (MPU) at EL1. */
+bool is_mpu_domain(struct domain *d);
+
+/* Save EL1 MPU base and limit registers. */
+void save_el1_mpu_regions(struct vcpu *p);
+
+/* Restore EL1 MPU base and limit registers. */
+void restore_el1_mpu_regions(struct vcpu *n);
+
 /*
  * The following API requires context_sync_mpu() after being used to modify MPU
  * regions:
diff --git a/xen/arch/arm/mpu/arm32/mm.c b/xen/arch/arm/mpu/arm32/mm.c
index 5eaeb3400e6c..3dd71228b4ed 100644
--- a/xen/arch/arm/mpu/arm32/mm.c
+++ b/xen/arch/arm/mpu/arm32/mm.c
@@ -159,6 +159,16 @@ void write_protection_region(const pr_t *pr_write, uint8_t sel)
     }
 }
 
+void save_el1_mpu_regions(struct vcpu *p)
+{
+    BUG_ON("unimplemented");
+}
+
+void restore_el1_mpu_regions(struct vcpu *n)
+{
+    BUG_ON("unimplemented");
+}
+
 /*
  * Local variables:
  * mode: C
diff --git a/xen/arch/arm/mpu/arm64/mm.c b/xen/arch/arm/mpu/arm64/mm.c
index b07e729a7d05..ce9947851173 100644
--- a/xen/arch/arm/mpu/arm64/mm.c
+++ b/xen/arch/arm/mpu/arm64/mm.c
@@ -1,8 +1,10 @@
 /* SPDX-License-Identifier: GPL-2.0-only */
 
 #include <xen/bug.h>
+#include <xen/sched.h>
 #include <xen/types.h>
 #include <asm/mpu.h>
+#include <asm/mpu/mm.h>
 #include <asm/sysregs.h>
 #include <asm/system.h>
 
@@ -10,9 +12,13 @@
  * The following are needed for the cases: GENERATE_WRITE_PR_REG_CASE
  * and GENERATE_READ_PR_REG_CASE with num==0
  */
+#define PRBAR0_EL1 PRBAR_EL1
+#define PRLAR0_EL1 PRLAR_EL1
 #define PRBAR0_EL2 PRBAR_EL2
 #define PRLAR0_EL2 PRLAR_EL2
 
+#define PRBAR_EL1_(n)   PRBAR##n##_EL1
+#define PRLAR_EL1_(n)   PRLAR##n##_EL1
 #define PRBAR_EL2_(n)   PRBAR##n##_EL2
 #define PRLAR_EL2_(n)   PRLAR##n##_EL2
 
@@ -32,6 +38,22 @@
         break;                                                  \
     }
 
+#define GENERATE_SAVE_EL1_PR_REG_CASE(num, pr, sel)             \
+    case num:                                                   \
+    {                                                           \
+        pr->prbar.bits = READ_SYSREG(PRBAR_EL1_(num));          \
+        pr->prlar.bits = READ_SYSREG(PRLAR_EL1_(num));          \
+        sel--;                                                  \
+    }
+
+#define GENERATE_RESTORE_EL1_PR_REG_CASE(num, pr, sel)                      \
+    case num:                                                               \
+    {                                                                       \
+        WRITE_SYSREG(pr->prbar.bits & ~MPU_REGION_RES0, PRBAR_EL1_(num));   \
+        WRITE_SYSREG(pr->prlar.bits & ~MPU_REGION_RES0, PRLAR_EL1_(num));   \
+        sel--;                                                              \
+    }
+
 bool has_v8r_vmsa_support(void)
 {
     return system_cpuinfo.mm64.msa_frac == MM64_MSA_FRAC_VMSA_SUPPORT;
@@ -125,6 +147,120 @@ void write_protection_region(const pr_t *pr_write, uint8_t sel)
     }
 }
 
+void save_el1_mpu_regions(struct vcpu *p)
+{
+    int sel = max_mpu_regions_el1 - 1;
+    pr_t *table;
+
+    if ( max_mpu_regions_el1 == 0 )
+        return;
+
+    if ( p->arch.mpu_regions == NULL )
+        return;
+    table = p->arch.mpu_regions;
+
+    while ( sel >= 0 )
+    {
+        WRITE_SYSREG( (sel & 0xF0), PRSELR_EL1);
+        isb();
+        switch ( sel & 0xF ) {
+            GENERATE_SAVE_EL1_PR_REG_CASE(15, (&table[sel]), sel);
+            fallthrough;
+            GENERATE_SAVE_EL1_PR_REG_CASE(14, (&table[sel]), sel);
+            fallthrough;
+            GENERATE_SAVE_EL1_PR_REG_CASE(13, (&table[sel]), sel);
+            fallthrough;
+            GENERATE_SAVE_EL1_PR_REG_CASE(12, (&table[sel]), sel);
+            fallthrough;
+            GENERATE_SAVE_EL1_PR_REG_CASE(11, (&table[sel]), sel);
+            fallthrough;
+            GENERATE_SAVE_EL1_PR_REG_CASE(10, (&table[sel]), sel);
+            fallthrough;
+            GENERATE_SAVE_EL1_PR_REG_CASE(9, (&table[sel]), sel);
+            fallthrough;
+            GENERATE_SAVE_EL1_PR_REG_CASE(8, (&table[sel]), sel);
+            fallthrough;
+            GENERATE_SAVE_EL1_PR_REG_CASE(7, (&table[sel]), sel);
+            fallthrough;
+            GENERATE_SAVE_EL1_PR_REG_CASE(6, (&table[sel]), sel);
+            fallthrough;
+            GENERATE_SAVE_EL1_PR_REG_CASE(5, (&table[sel]), sel);
+            fallthrough;
+            GENERATE_SAVE_EL1_PR_REG_CASE(4, (&table[sel]), sel);
+            fallthrough;
+            GENERATE_SAVE_EL1_PR_REG_CASE(3, (&table[sel]), sel);
+            fallthrough;
+            GENERATE_SAVE_EL1_PR_REG_CASE(2, (&table[sel]), sel);
+            fallthrough;
+            GENERATE_SAVE_EL1_PR_REG_CASE(1, (&table[sel]), sel);
+            fallthrough;
+            GENERATE_SAVE_EL1_PR_REG_CASE(0, (&table[sel]), sel);
+            break;
+            default:
+                BUG(); /* Can't happen */
+                break;
+        }
+    }
+}
+
+void restore_el1_mpu_regions(struct vcpu *n)
+{
+    int sel = max_mpu_regions_el1 - 1;
+    pr_t *table;
+
+    if ( max_mpu_regions_el1 == 0 )
+        return;
+
+    if ( !n->arch.mpu_regions )
+        return;
+    table = n->arch.mpu_regions;
+
+    while ( sel >= 0 )
+    {
+        WRITE_SYSREG( (sel & 0xF0), PRSELR_EL1);
+        isb();
+        switch ( sel & 0xF ) {
+            GENERATE_RESTORE_EL1_PR_REG_CASE(15, (&table[sel]), sel);
+            fallthrough;
+            GENERATE_RESTORE_EL1_PR_REG_CASE(14, (&table[sel]), sel);
+            fallthrough;
+            GENERATE_RESTORE_EL1_PR_REG_CASE(13, (&table[sel]), sel);
+            fallthrough;
+            GENERATE_RESTORE_EL1_PR_REG_CASE(12, (&table[sel]), sel);
+            fallthrough;
+            GENERATE_RESTORE_EL1_PR_REG_CASE(11, (&table[sel]), sel);
+            fallthrough;
+            GENERATE_RESTORE_EL1_PR_REG_CASE(10, (&table[sel]), sel);
+            fallthrough;
+            GENERATE_RESTORE_EL1_PR_REG_CASE(9, (&table[sel]), sel);
+            fallthrough;
+            GENERATE_RESTORE_EL1_PR_REG_CASE(8, (&table[sel]), sel);
+            fallthrough;
+            GENERATE_RESTORE_EL1_PR_REG_CASE(7, (&table[sel]), sel);
+            fallthrough;
+            GENERATE_RESTORE_EL1_PR_REG_CASE(6, (&table[sel]), sel);
+            fallthrough;
+            GENERATE_RESTORE_EL1_PR_REG_CASE(5, (&table[sel]), sel);
+            fallthrough;
+            GENERATE_RESTORE_EL1_PR_REG_CASE(4, (&table[sel]), sel);
+            fallthrough;
+            GENERATE_RESTORE_EL1_PR_REG_CASE(3, (&table[sel]), sel);
+            fallthrough;
+            GENERATE_RESTORE_EL1_PR_REG_CASE(2, (&table[sel]), sel);
+            fallthrough;
+            GENERATE_RESTORE_EL1_PR_REG_CASE(1, (&table[sel]), sel);
+            fallthrough;
+            GENERATE_RESTORE_EL1_PR_REG_CASE(0, (&table[sel]), sel);
+            break;
+            default:
+                BUG(); /* Can't happen */
+                break;
+        }
+    }
+
+    context_sync_mpu();
+}
+
 /*
  * Local variables:
  * mode: C
diff --git a/xen/arch/arm/mpu/mm.c b/xen/arch/arm/mpu/mm.c
index 459fb952d125..d6703bf0c005 100644
--- a/xen/arch/arm/mpu/mm.c
+++ b/xen/arch/arm/mpu/mm.c
@@ -7,6 +7,7 @@
 #include <xen/mm.h>
 #include <xen/pfn.h>
 #include <xen/sizes.h>
+#include <xen/sched.h>
 #include <xen/spinlock.h>
 #include <xen/types.h>
 #include <asm/mpu.h>
@@ -14,6 +15,7 @@
 #include <asm/page.h>
 #include <asm/setup.h>
 #include <asm/sysregs.h>
+#include <public/arch-arm.h>
 
 #define MPU_ATTR_XN_RO_MISMATCH     -1
 #define MPU_ATTR_AI_MISMATCH        -2
@@ -23,6 +25,9 @@ struct page_info *frame_table;
 /* Maximum number of supported MPU memory regions by the EL2 MPU. */
 uint8_t __ro_after_init max_mpu_regions;
 
+/* Maximum number of supported MPU memory regions by the EL1 MPU. */
+uint8_t __read_mostly max_mpu_regions_el1;
+
 /*
  * Bitmap xen_mpumap_mask is to record the usage of EL2 MPU memory regions.
  * Bit 0 represents MPU memory region 0, bit 1 represents MPU memory
@@ -631,6 +636,40 @@ void __iomem *ioremap_attr(paddr_t start, size_t len, unsigned int flags)
     return maddr_to_virt(start);
 }
 
+bool is_mpu_domain(struct domain *d)
+{
+    return (d->arch.v8r_el1_msa == XEN_DOMCTL_CONFIG_ARM_V8R_EL1_MSA_NONE) ||
+           (d->arch.v8r_el1_msa == XEN_DOMCTL_CONFIG_ARM_V8R_EL1_MSA_PMSA);
+}
+
+void load_nr_mpu_regions_el1(void)
+{
+    max_mpu_regions_el1 = (uint8_t)(READ_SYSREG(MPUIR_EL1) &
+                                    NUM_MPU_REGIONS_MASK);
+}
+
+void allocate_el1_mpu_regions(struct vcpu *v)
+{
+    if ( max_mpu_regions_el1 == 0 )
+        return;
+
+    if ( v->arch.mpu_regions )
+        return;
+
+    v->arch.mpu_regions = (pr_t *)_xzalloc(sizeof(pr_t) * max_mpu_regions_el1,
+                                           SMP_CACHE_BYTES);
+    if ( !v->arch.mpu_regions )
+        panic("DOM%pd: mpu: no memory to store EL1 MPU memory region info\n",
+              v->domain);
+    memset(v->arch.mpu_regions, 0, sizeof(pr_t) * max_mpu_regions_el1);
+}
+
+void free_el1_mpu_regions(struct vcpu *v)
+{
+    if ( v->arch.mpu_regions )
+        xfree(v->arch.mpu_regions);
+}
+
 /*
  * Local variables:
  * mode: C
-- 
2.34.1



From xen-devel-bounces@lists.xenproject.org Mon Apr 20 14:25:47 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 20 Apr 2026 14:25:47 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1286099.1567266 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wEpZL-0006Dj-P8; Mon, 20 Apr 2026 14:25:47 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1286099.1567266; Mon, 20 Apr 2026 14:25: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 1wEpZL-0006CB-Gj; Mon, 20 Apr 2026 14:25:47 +0000
Received: by outflank-mailman (input) for mailman id 1286099;
 Mon, 20 Apr 2026 14:25:45 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <luca.fancellu@arm.com>) id 1wEpZJ-0005ik-Ko
 for xen-devel@lists.xenproject.org; Mon, 20 Apr 2026 14:25:45 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wEpZJ-00BFc6-0S
 for xen-devel@lists.xenproject.org; Mon, 20 Apr 2026 16:25:45 +0200
Received: from [10.42.69.11] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <luca.fancellu@arm.com>)
 id 69e63765-2eae-0a2a0a5409dd-0a2a450bd768-6
 for <xen-devel@lists.xenproject.org>; Mon, 20 Apr 2026 16:25:44 +0200
Received: from [217.140.110.172] (helo=foss.arm.com)
 by tlsNG-42698a.mxtls.expurgate.net with ESMTP (eXpurgate 4.56.1)
 (envelope-from <luca.fancellu@arm.com>)
 id 69e63768-212f-0a2a450b0019-d98c6eac8d8e-1
 for <xen-devel@lists.xenproject.org>; Mon, 20 Apr 2026 16:25:44 +0200
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 201F516F2;
 Mon, 20 Apr 2026 07:25:38 -0700 (PDT)
Received: from e125770.cambridge.arm.com (e125770.arm.com [10.1.199.43])
 by usa-sjc-imap-foss1.foss.arm.com (Postfix) with ESMTPSA id D29A03F7B4;
 Mon, 20 Apr 2026 07:25:42 -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=foss header.d=arm.com header.i="@arm.com" header.h="From:To:Cc:Subject:Date:In-Reply-To:References"
DKIM-Signature: v=1; a=rsa-sha256; c=simple/simple; d=arm.com; s=foss;
	t=1776695143; bh=DZDq1tuHld+v7+buygc/it5ATvErstw+AN1u/SO6z5U=;
	h=From:To:Cc:Subject:Date:In-Reply-To:References:From;
	b=cql5dYQz5MqXn40DAJLyQby//2LqjdikrSawBIJejgCAbGxmXoVzAGseR2UGeHvbm
	 gOtdH0DPaOpL14OXm1RP8KkKqSOHumxoIkkiYgzykkflW4Uzrj5x+AWc/OP7I1HTLB
	 IVlR7QhPN849+MJ1RVjZ+lbPaK7UdkKLaE78rBgo=
From: Luca Fancellu <luca.fancellu@arm.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>
Subject: [PATCH 8/8] arm/mpu: Save/restore VTCR_EL2 on vCPU context switch
Date: Mon, 20 Apr 2026 15:25:24 +0100
Message-Id: <20260420142524.1804073-9-luca.fancellu@arm.com>
X-Mailer: git-send-email 2.34.1
In-Reply-To: <20260420142524.1804073-1-luca.fancellu@arm.com>
References: <20260420142524.1804073-1-luca.fancellu@arm.com>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit
X-purgate-ID: tlsNG-42698a/1776695144-05969F3B-B9F5DBF5/0/0
X-purgate-type: clean
X-purgate-size: 6845

On AArch64 MPU systems, the VTCR register contains the MSA bit that determines
if the guest is using MPU or MMU at EL1, which is required to be
saved/restored on vCPU context switch.

On AArch64 MPU systems the VTCR_EL2 register configuration will be saved
during setup_virt_paging and will be placed in a new member of
'struct arch_vcpu' named vtcr_el2, to be retrieved by context switch.

AArch32 MPU systems and MMU systems don't need to save/restore this
register because they don't have any MSA bit and related functionality,
so for these architecture a stub is provided.

Signed-off-by: Luca Fancellu <luca.fancellu@arm.com>
---
 xen/arch/arm/arm64/mpu/p2m.c                | 15 +++++++++++++++
 xen/arch/arm/domain.c                       |  2 ++
 xen/arch/arm/include/asm/domain.h           |  5 +++++
 xen/arch/arm/include/asm/mmu/domain-build.h |  2 ++
 xen/arch/arm/include/asm/mpu/domain-build.h |  6 ++++++
 xen/arch/arm/include/asm/mpu/p2m.h          | 10 ++++++++++
 xen/arch/arm/mpu/domain-build.c             | 17 +++++++++++++++++
 xen/arch/arm/mpu/p2m.c                      |  4 ++++
 8 files changed, 61 insertions(+)

diff --git a/xen/arch/arm/arm64/mpu/p2m.c b/xen/arch/arm/arm64/mpu/p2m.c
index a1ec9fcd6195..350cbd7ae94c 100644
--- a/xen/arch/arm/arm64/mpu/p2m.c
+++ b/xen/arch/arm/arm64/mpu/p2m.c
@@ -3,8 +3,12 @@
 #include <xen/bug.h>
 #include <xen/init.h>
 #include <xen/lib.h>
+#include <xen/sched.h>
 #include <asm/p2m.h>
 
+/* VTCR_EL2 value to be configured for the boot CPU. */
+register_t __read_mostly vtcr;
+
 void __init setup_virt_paging(void)
 {
     register_t vtcr_el2 = READ_SYSREG(VTCR_EL2);
@@ -58,6 +62,7 @@ void __init setup_virt_paging(void)
     else
         vtcr_el2 &= ~VTCR_VS;
 
+    vtcr = vtcr_el2;
     WRITE_SYSREG(vtcr_el2, VTCR_EL2);
 
     p2m_vmid_allocator_init();
@@ -89,6 +94,16 @@ void __init setup_virt_paging(void)
     panic("Hardware with no PMSAv8-64 support in any translation regime\n");
 }
 
+void p2m_save_vtcr(struct vcpu *p)
+{
+    p->arch.vtcr_el2 = READ_SYSREG(VTCR_EL2);
+}
+
+void p2m_restore_vtcr(struct vcpu *n)
+{
+    WRITE_SYSREG(n->arch.vtcr_el2, VTCR_EL2);
+}
+
 /*
  * Local variables:
  * mode: C
diff --git a/xen/arch/arm/domain.c b/xen/arch/arm/domain.c
index 221b1f8a7f9d..e928301d7cb0 100644
--- a/xen/arch/arm/domain.c
+++ b/xen/arch/arm/domain.c
@@ -538,6 +538,8 @@ int arch_vcpu_create(struct vcpu *v)
     if ( get_ssbd_state() == ARM_SSBD_RUNTIME )
         v->arch.cpu_info->flags |= CPUINFO_WORKAROUND_2_FLAG;
 
+    arch_set_vtcr_msa(v);
+
     if ( is_mpu_domain(v->domain) )
         allocate_el1_mpu_regions(v);
 
diff --git a/xen/arch/arm/include/asm/domain.h b/xen/arch/arm/include/asm/domain.h
index 44c304ef8aa9..3ab004518427 100644
--- a/xen/arch/arm/include/asm/domain.h
+++ b/xen/arch/arm/include/asm/domain.h
@@ -203,6 +203,11 @@ struct arch_vcpu
     uint32_t cpacr;
 
 #ifdef CONFIG_MPU
+#ifdef CONFIG_ARM_64
+    /* Virtualization Translation Control Register */
+    uint64_t vtcr_el2;
+#endif
+
     /* EL1 MPU memory regions */
     pr_t *mpu_regions;
 #endif
diff --git a/xen/arch/arm/include/asm/mmu/domain-build.h b/xen/arch/arm/include/asm/mmu/domain-build.h
index 3e0d9a6a2a08..0919c0097da9 100644
--- a/xen/arch/arm/include/asm/mmu/domain-build.h
+++ b/xen/arch/arm/include/asm/mmu/domain-build.h
@@ -34,6 +34,8 @@ int arch_set_v8r_el1_msa(struct domain *d,
     return 0;
 }
 
+static inline void arch_set_vtcr_msa(struct vcpu *v) {}
+
 #endif /* __ARM_MMU_DOMAIN_BUILD_H__ */
 
 /*
diff --git a/xen/arch/arm/include/asm/mpu/domain-build.h b/xen/arch/arm/include/asm/mpu/domain-build.h
index 463cd85b5b7e..8d3a743219ce 100644
--- a/xen/arch/arm/include/asm/mpu/domain-build.h
+++ b/xen/arch/arm/include/asm/mpu/domain-build.h
@@ -15,6 +15,12 @@ int arch_set_v8r_el1_msa(struct domain *d,
                          const struct xen_domctl_createdomain *config,
                          unsigned int flags);
 
+#ifdef CONFIG_ARM_64
+void arch_set_vtcr_msa(struct vcpu *v);
+#else
+static inline void arch_set_vtcr_msa(struct vcpu *v) {}
+#endif
+
 #endif /* __ARM_MPU_DOMAIN_BUILD_H__ */
 
 /*
diff --git a/xen/arch/arm/include/asm/mpu/p2m.h b/xen/arch/arm/include/asm/mpu/p2m.h
index d0ec8a77a15a..1628148ba578 100644
--- a/xen/arch/arm/include/asm/mpu/p2m.h
+++ b/xen/arch/arm/include/asm/mpu/p2m.h
@@ -9,6 +9,8 @@
 
 struct p2m_domain;
 
+extern register_t vtcr;
+
 /*
  * The architecture allows at most 255 EL2 MPU memory regions. The size of the
  * MPU structure entry (pr_t) is 32 Bytes on AArch64 (requiring two 4KB pages)
@@ -36,6 +38,14 @@ static inline bool region_is_p2m_valid(pr_t *pr)
     return (pr->p2m_type != p2m_invalid);
 }
 
+#ifdef CONFIG_ARM_64
+void p2m_save_vtcr(struct vcpu *p);
+void p2m_restore_vtcr(struct vcpu *n);
+#else
+static inline void p2m_save_vtcr(struct vcpu *p) {}
+static inline void p2m_restore_vtcr(struct vcpu *n) {}
+#endif
+
 #endif /* __ARM_MPU_P2M_H__ */
 
 /*
diff --git a/xen/arch/arm/mpu/domain-build.c b/xen/arch/arm/mpu/domain-build.c
index 1bdd0ffedebb..19e504f7149e 100644
--- a/xen/arch/arm/mpu/domain-build.c
+++ b/xen/arch/arm/mpu/domain-build.c
@@ -8,6 +8,7 @@
 #include <xen/sched.h>
 #include <asm/mpu.h>
 #include <asm/mpu/domain-build.h>
+#include <asm/mpu/p2m.h>
 #include <public/arch-arm.h>
 #include <public/domctl.h>
 
@@ -66,6 +67,22 @@ int arch_set_v8r_el1_msa(struct domain *d,
     return 0;
 }
 
+#ifdef CONFIG_ARM_64
+void arch_set_vtcr_msa(struct vcpu *v)
+{
+    /*
+     * When ID_AA64MMFR0_EL1.MSA_frac is 0b0010 (MM64_MSA_FRAC_VMSA_SUPPORT),
+     * then VTCR_EL2.MSA determines the memory system architecture enabled
+     * at stage 1 of the Secure EL1&0 translation regime.
+     */
+    v->arch.vtcr_el2 = vtcr;
+    if ( is_mpu_domain(v->domain) )
+        v->arch.vtcr_el2 &= ~VTCR_MSA;
+    else
+        v->arch.vtcr_el2 |= VTCR_MSA;
+}
+#endif
+
 /*
  * Local variables:
  * mode: C
diff --git a/xen/arch/arm/mpu/p2m.c b/xen/arch/arm/mpu/p2m.c
index 06c92a3ef41b..b41abd8f2d37 100644
--- a/xen/arch/arm/mpu/p2m.c
+++ b/xen/arch/arm/mpu/p2m.c
@@ -357,6 +357,8 @@ void p2m_save_state(struct vcpu *p)
 
     p->arch.sctlr = READ_SYSREG(SCTLR_EL1);
 
+    p2m_save_vtcr(p);
+
     if ( p2m_xenmpu_update(p2m, false) )
         panic("Failed to offline P2M MPU memory mapping\n");
 }
@@ -369,6 +371,8 @@ void p2m_restore_state(struct vcpu *n)
     WRITE_SYSREG(n->arch.sctlr, SCTLR_EL1);
     WRITE_SYSREG(n->arch.hcr_el2, HCR_EL2);
 
+    p2m_restore_vtcr(n);
+
     WRITE_SYSREG(p2m->vsctlr, VSCTLR_EL2);
     if ( p2m_xenmpu_update(p2m, true) )
         panic("Failed to online P2M MPU memory mapping\n");
-- 
2.34.1



From xen-devel-bounces@lists.xenproject.org Mon Apr 20 14:35:01 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 20 Apr 2026 14:35:01 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1286170.1567276 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wEpiB-00025A-Gv; Mon, 20 Apr 2026 14:34:55 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1286170.1567276; Mon, 20 Apr 2026 14: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 1wEpiB-000253-D8; Mon, 20 Apr 2026 14:34:55 +0000
Received: by outflank-mailman (input) for mailman id 1286170;
 Mon, 20 Apr 2026 14:34:54 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92) id 1wEpiA-00024x-Ft
 for xen-devel@lists.xenproject.org; Mon, 20 Apr 2026 14:34:54 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wEpi9-000SbR-Dr
 for xen-devel@lists.xenproject.org; Mon, 20 Apr 2026 16:34:53 +0200
Received: from [10.42.69.12] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <oleksii.kurochko@gmail.com>)
 id 69e63987-bab6-0a2a0a5309dd-0a2a450ccf6c-20
 for <xen-devel@lists.xenproject.org>; Mon, 20 Apr 2026 16:34:53 +0200
Received: from [209.85.208.170] (helo=mail-lj1-f170.google.com)
 by tlsNG-d25034.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.1)
 (envelope-from <oleksii.kurochko@gmail.com>)
 id 69e6398d-62f1-0a2a450c0019-d155d0aac876-3
 for <xen-devel@lists.xenproject.org>; Mon, 20 Apr 2026 16:34:53 +0200
Received: by mail-lj1-f170.google.com with SMTP id
 38308e7fff4ca-38e936caafeso31291361fa.2
 for <xen-devel@lists.xenproject.org>; Mon, 20 Apr 2026 07:34:53 -0700 (PDT)
Received: from [192.168.1.6] (user-109-243-69-121.play-internet.pl.
 [109.243.69.121]) by smtp.gmail.com with ESMTPSA id
 38308e7fff4ca-38ecb6f0b4csm24136611fa.25.2026.04.20.07.34.51
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Mon, 20 Apr 2026 07:34:51 -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=20251104 header.d=gmail.com header.i="@gmail.com" header.h="Content-Transfer-Encoding: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=20251104; t=1776695692; x=1777300492; darn=lists.xenproject.org;
        h=content-transfer-encoding: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;
        bh=yGerrtdiKfKE1Lf1Wj24fpjgZCYfn5lyPyZwqwWoSbU=;
        b=K6VI0/UixtQlQhdvIUxe7fECVVMw/6fSv6JaA5SaOQSD2buXStoVE6J0J1+nJbTVB1
         Jvb8jDSc2CfDXymYkc88GfUDRv2Z8iHekIDUhy1MMOuNnQq1nwkODNN4XtYRij+vJLMR
         GXPh6FEUCAuQ98gnwEU/PO6HUXmJ34NDYuRklbYoZRgaIJkEVIhT/5hmIudw58d+qCE9
         RzFpcuaLnQNsdby6UFh2cDhgyraoaHdr7Lit+PRy3NXyVqnYToSBfuUxO4vEVPQxPQ40
         miQHGJff7LtgemjdOa3rmvR/j9NevJ/Sw9obLyNP8nKOl0hDHtyR39rXtayqBHjpDRfM
         PV8A==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20251104; t=1776695692; x=1777300492;
        h=content-transfer-encoding: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;
        bh=yGerrtdiKfKE1Lf1Wj24fpjgZCYfn5lyPyZwqwWoSbU=;
        b=NmlwThb5ahXg+GhDG6280M4qMMlytfMeg04kZ02JbZWNiJlvmvYFQOrjlZ8mHLsthY
         yKOQwUZZ9Z1Yo2wBhmR2BU+AHMHROFv1LKp0X7WCH3eLJlwANc1VNVnjIEljs6FcmsgH
         zdtomniElGW2xEMCNbOKNi3Gx7pMGcPOw0Mm2Tbox0cUgwnGicIIGVRTbM4YjIa7VPht
         6xLE9GR0/tyILKWzMCfs41xbLq2LKt9S8VCpUvm2ndtj6Loibcpb5Y6aGTsnoPX5LYju
         06plsfSbOSm8+N0vJ4YPRxJhZz31/Hs0InHH3BP3i6yo1An8Qv5sNfCsq6CZRXV5JhpG
         h+qA==
X-Forwarded-Encrypted: i=1; AFNElJ8NUWbBQLkrvPGLhG0M0jdjAfokwIlsrQrECPQMYOSskwazOC1T0wY629IGuqHvj0Z3U4LRiy5Qh+8=@lists.xenproject.org
X-Gm-Message-State: AOJu0YxFPSI2CVrIAErn6d/jcO+zilLy5/my5pKmIY0rHwvVqtbqafY+
	dtwU4W4G+DUJofRXgfN2Mx4CUXhQN15tds/DIPJa9LDrIm2DTxacFRGU
X-Gm-Gg: AeBDievy3NZFbdcl79Ll6oTTUSElcpA439fNB1hAxVdmvEG9P0LW2rVCRio1eHETgIv
	SNpVPtUgDhTFlyMmMEM3IisjR1Ew4Vg7jZQPle9O8kwA/bT3C65E0x0J7i5/k72ctIDZJ0KPjf/
	dyToQprVb4t71rwuIjhhIlFnt4dFx/pGjBPd6BTmC8uKhVobWjgdxlhujEJ6jZ2o6+Ijv9ht5zM
	g8pM5h0Ax1z7XXOTWFJepoc+JtTvmLDELbbzIwZfEtu0VJ171JaXts3vowIPfNIeObWzwqN13Tc
	2oFhCwbGNlLDARFuy43z+836r9ta2KvFnbAkxTrgSnTW+mGkOkYrZJRHq15ElCIvLUT65hZQQCe
	ZKKW5yMOB8VncPXMYD35XB44BQ1LuW2JWpE/axKIROMvxrnAST83IZGJw80TaP4hvYACOw8CFW7
	dcWQGyu2tuIaZjVOxcufME6JGDcYpRIm2XrAmxornVUou7E5jgTitKZvhDtFPsA4+MKSbJGEUo9
	PBr3KXb95WhgA==
X-Received: by 2002:a05:651c:b27:b0:38e:ac6:a50f with SMTP id 38308e7fff4ca-38ec7830e46mr46683641fa.10.1776695692202;
        Mon, 20 Apr 2026 07:34:52 -0700 (PDT)
Message-ID: <7c059a67-3f3f-4633-aebb-939aa9ac7955@gmail.com>
Date: Mon, 20 Apr 2026 16:34:50 +0200
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH v1 16/27] xen/riscv: implement IRQ mapping for device
 passthrough
To: Jan Beulich <jbeulich@suse.com>
Cc: Romain Caritey <Romain.Caritey@microchip.com>,
 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.pau@citrix.com>,
 Stefano Stabellini <sstabellini@kernel.org>, xen-devel@lists.xenproject.org
References: <cover.1773157782.git.oleksii.kurochko@gmail.com>
 <10654a6c38fa929b5fdf6f214badfe4f60fe78d4.1773157782.git.oleksii.kurochko@gmail.com>
 <8a8a2afd-6f53-4f45-b8c8-fb34a6fbb970@suse.com>
 <f099b925-0ea9-43a7-b760-f70f343a4d7c@gmail.com>
 <a7a4e8c9-d053-4ca7-ac9c-f43ddccf9151@suse.com>
 <00fa439d-0327-4c0c-960d-a810820a6e83@gmail.com>
 <09a260ca-5a98-461d-9f57-d298a483d3d6@suse.com>
Content-Language: en-US
From: Oleksii Kurochko <oleksii.kurochko@gmail.com>
In-Reply-To: <09a260ca-5a98-461d-9f57-d298a483d3d6@suse.com>
Content-Type: text/plain; charset=UTF-8; format=flowed
Content-Transfer-Encoding: 8bit
X-purgate-ID: tlsNG-d25034/1776695693-6F370CF5-EC2E2962/10/73395122804
X-purgate-type: spam
X-purgate-size: 5993



On 4/20/26 3:45 PM, Jan Beulich wrote:
> On 20.04.2026 13:39, Oleksii Kurochko wrote:
>> On 4/16/26 2:51 PM, Jan Beulich wrote:
>>> On 14.04.2026 13:29, Oleksii Kurochko wrote:
>>>> On 4/2/26 2:22 PM, Jan Beulich wrote:
>>>>> On 10.03.2026 18:08, Oleksii Kurochko wrote:
>>>>>> +int vaplic_map_device_irqs_to_domain(struct domain *d,
>>>>>> +                                     struct dt_device_node *dev,
>>>>>> +                                     bool need_mapping,
>>>>>> +                                     struct rangeset *irq_ranges)
>>>>>> +{
>>>>>> +    unsigned int i, nirq;
>>>>>> +    int res, irq;
>>>>>> +    struct dt_raw_irq rirq;
>>>>>> +    uint32_t *auth_irq_bmp = d->arch.vintc->private;
>>>>>> +    unsigned int reg_num;
>>>>>> +
>>>>>> +    nirq = dt_number_of_irq(dev);
>>>>>> +
>>>>>> +    /* Give permission and map IRQs */
>>>>>> +    for ( i = 0; i < nirq; i++ )
>>>>>> +    {
>>>>>> +        res = dt_device_get_raw_irq(dev, i, &rirq);
>>>>>> +        if ( res )
>>>>>> +        {
>>>>>> +            printk(XENLOG_ERR "Unable to retrieve irq %u for %s\n",
>>>>>> +                   i, dt_node_full_name(dev));
>>>>>> +            return res;
>>>>>> +        }
>>>>>> +
>>>>>> +        /*
>>>>>> +         * Don't map IRQ that have no physical meaning
>>>>>> +         * ie: IRQ whose controller is not APLIC/IMSIC/PLIC.
>>>>>> +         */
>>>>>> +        if ( rirq.controller != dt_interrupt_controller )
>>>>>> +        {
>>>>>> +            dt_dprintk("irq %u not connected to primary controller."
>>>>>> +                       "Connected to %s\n", i,
>>>>>> +                       dt_node_full_name(rirq.controller));
>>>>>> +            continue;
>>>>>> +        }
>>>>>> +
>>>>>> +        irq = platform_get_irq(dev, i);
>>>>>> +        if ( irq < 0 )
>>>>>> +        {
>>>>>> +            printk("Unable to get irq %u for %s\n", i, dt_node_full_name(dev));
>>>>>> +            return irq;
>>>>>> +        }
>>>>>> +
>>>>>> +        res = irq_permit_access(d, irq);
>>>>>> +        if ( res )
>>>>>> +        {
>>>>>> +            printk(XENLOG_ERR "Unable to permit to %pd access to IRQ %u\n", d,
>>>>>> +                   irq);
>>>>> This time the other way around: %d please with plain int. (Again at least
>>>>> once further down.)
>>>>>
>>>>>> +            return res;
>>>>>> +        }
>>>>>> +
>>>>>> +        reg_num = irq / APLIC_NUM_REGS;
>>>>>> +
>>>>>> +        if ( is_irq_shared_among_domains(d, irq) )
>>>>>> +        {
>>>>>> +            printk("%s: Shared IRQ isn't supported\n", __func__);
>>>>>> +            return -EINVAL;
>>>>>> +        }
>>>>>> +
>>>>>> +        auth_irq_bmp[reg_num] |= BIT(irq % APLIC_NUM_REGS, U);
>>>>> ... all of this leaves me with the impression that IRQ numbering isn't really
>>>>> virtualized. IRQs are merely split into groups, one group per domain (and
>>>>> maybe some unused). How are you going to fit in truly virtual IRQs?
>>>> What do you mean by truly virtual IRQs?
>>> Ones where no aspects are represented by any piece of hardware.
>>>
>>>> I can't totally agree that the current approach isn't use virtual IRQs,
>>>> yes, they are 1:1 mapped but on the other side Xen is responsible to
>>>> give an IRQ number for guest's device and Xen is responsible that guest
>>>> isn't trying to reach IRQ which not belongs to it.
>>> In a non-virtualized environment I expect IRQs are going to be "sparse"
>>> (i.e. with perhaps large blocks of items used elsewhere). If you had
>>> proper translation of IRQ numbers, the same could be true for your
>>> guests.
>> Partial FDT, which is used to tell which device be passthroughed to
>> guest, is using physical IRQ number (which I am just considering for
>> simplicity to be 1:1 mapped to virtual IRQ number). So if we have the
>> following configuration:
>>     Physical (bare-metal) IRQ layout is sparse:
>>       IRQ 5  → UART -> domU0
>>       IRQ 23 → Ethernet -> domU1
>>       IRQ 47 → PCIe -> domU0
>>       IRQ 100 → Storage -> domU1
>> (gaps everywhere, driven by hardware wiring)
>>
>> For such configuration we will have for each domain auth_irq_bmp[] which
>> contains:
>>    IRQ 5 and IRQ47 for domU0
>> and
>>    IRQ 23 and IRQ 100 for domU1
>>
>> And here vIRQ5 = pIRQ5, vIRQ47 = pIRQ47 and so on. auth_irq_bmp just
>> transform xIRQ number to bit position which it will have in real APLIC
>> register. Just as an example, lets take vIRQ5 and vIRQ47.
>>
>> As reading or writing register setie[k] reads or potentially modifies
>> the enable bits for interrupt sources k × 32 through k × 32 + 31. For an
>> implemented interrupt source i within that range, the enable bit for
>> source i corresponds with register bit (i mod 32).
>> So for:
>>    - vIRQ5 == pIRQ5 we have to set bit 5 in setie[0]
>>    - vIRQ47 == pIRQ47 we have to set bit 15 in setie[1]
>>
>> Probably it was not the best idea to declare auth_irq_bmp as it will
>> look in h/w and maybe just 'bool auth_irq_bmp[1024]' would be more clearer.
>>
>> So irqs number are still stay "sparsed" in guest.
> Well, twice (or more) as sparse in the example you give, compared to the
> host.

Just to be sure that I fully understand your concern here.

The difference between xIRQ5 and xIRQ47 is 42 bits (if for 1 irq we are 
using 1 bit) which leads to that we have somewhere allocated 48 bit 
bitmap where only two bits will be set, all others will be zero.
Instead it would be better to have to do mapping: pIRQ5 -> vIRQ1, pIRQ47 
->vIRQ2, right?
If yes, won't we still store somewhere this mapping? it seems like 
having 'unsigned int auth_irq_bmp[1024]' is a good option where index 
will be vIRQ number and 'unsigned int' will be pIRQ number. But at the 
moment I think that we could go with 1:1 IRQ number mapping and then 
have 'bool auth_irq_bmp[1024]' will be more then enough and will safe 
some memory.

~ Oleksii



From xen-devel-bounces@lists.xenproject.org Mon Apr 20 14:56:17 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 20 Apr 2026 14:56:17 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1286182.1567284 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wEq2h-0005ma-2h; Mon, 20 Apr 2026 14:56:07 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1286182.1567284; Mon, 20 Apr 2026 14:56: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 1wEq2h-0005mT-0A; Mon, 20 Apr 2026 14:56:07 +0000
Received: by outflank-mailman (input) for mailman id 1286182;
 Mon, 20 Apr 2026 14:56:06 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <Luca.Fancellu@arm.com>) id 1wEq2f-0005mN-SB
 for xen-devel@lists.xenproject.org; Mon, 20 Apr 2026 14:56:05 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wEq2d-008c5j-Bb
 for xen-devel@lists.xenproject.org; Mon, 20 Apr 2026 16:56:04 +0200
Received: from [10.42.69.9] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <Luca.Fancellu@arm.com>)
 id 69e63e7a-2eae-0a2a0a5409dd-0a2a4509e2e0-16
 for <xen-devel@lists.xenproject.org>; Mon, 20 Apr 2026 16:56:04 +0200
Received: from [52.101.69.50]
 (helo=AM0PR83CU005.outbound.protection.outlook.com)
 by tlsNG-bad1c0.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.1)
 (envelope-from <Luca.Fancellu@arm.com>)
 id 69e63e83-2497-0a2a45090019-346545329da9-3
 for <xen-devel@lists.xenproject.org>; Mon, 20 Apr 2026 16:56:04 +0200
Received: from DU2P250CA0022.EURP250.PROD.OUTLOOK.COM (2603:10a6:10:231::27)
 by VI1PR08MB10146.eurprd08.prod.outlook.com (2603:10a6:800:1cf::11) with
 Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9818.32; Mon, 20 Apr
 2026 14:55:59 +0000
Received: from DB1PEPF000509FD.eurprd03.prod.outlook.com
 (2603:10a6:10:231:cafe::4) by DU2P250CA0022.outlook.office365.com
 (2603:10a6:10:231::27) with Microsoft SMTP Server (version=TLS1_3,
 cipher=TLS_AES_256_GCM_SHA384) id 15.20.9791.48 via Frontend Transport; Mon,
 20 Apr 2026 14:55:59 +0000
Received: from outbound-uk1.az.dlp.m.darktrace.com (4.158.2.129) by
 DB1PEPF000509FD.mail.protection.outlook.com (10.167.242.39) with Microsoft
 SMTP Server (version=TLS1_3, cipher=TLS_AES_256_GCM_SHA384) id 15.20.9791.48
 via Frontend Transport; Mon, 20 Apr 2026 14:55:59 +0000
Received: from DU2PR08MB7272.eurprd08.prod.outlook.com (2603:10a6:10:2d7::16)
 by PAWPR08MB10995.eurprd08.prod.outlook.com (2603:10a6:102:46f::9)
 with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9818.32; Mon, 20 Apr
 2026 14:54:56 +0000
Received: from DU2PR08MB7272.eurprd08.prod.outlook.com
 ([fe80::5d34:206f:373:a323]) by DU2PR08MB7272.eurprd08.prod.outlook.com
 ([fe80::5d34:206f:373:a323%6]) with mapi id 15.20.9818.032; Mon, 20 Apr 2026
 14:54: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=arm.com header.i="@arm.com" header.h="From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck"; dkim=pass header.s=selector1 header.d=arm.com header.i="@arm.com" header.h="From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck"
ARC-Seal: i=2; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=pass;
 b=fSLzaywK1OCM3uxx2F+Zbk9hl1EQHRWSGt4iVUhjROR/oKPfGdBmpJcngHIaXelGP/zKJTyiU17VEKvJHCzX01FtX6jJf8kD+nFeUOE9aJMbrUZbcvjpnU6MmEYv4R6JV3G9yUvKzvnLd8B/YZnYvIbxDGiE4uYWMeN7yiq/BDaWCl2de3Y7Kln5TwI1fcrBJcYm0IdzGyq5QJ6ipydxYcyhA9jL1dRzIhJicwpxfiLAwlC+LZd1yQs0Bq7snxPjWwELhxL0abBD7snWxMmM8bpQFhQYzae/izHRDYDHwLGtfBdlAGOUDJwLeifzroLX87Px1JjmE/eMwCkmoEYL7g==
ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com;
 s=arcselector10001;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1;
 bh=kWpjB2JvLWoy1kis/0rOO/HjxxEQBOIOH8FqHFE9iio=;
 b=jyhwVRLglBy6Llw6nV7lNps6JAK37I5xz6FFdjLGdOZz8G47a1ewUALdq6znd24vpud5cIIaDbvnmGtdoN93OSbJnKWn14ktCLhi7nvmaC4V9Sc925CqC0hHdN1IXllOxjKFEynf3JCcwev3z9t3hb1ebpnpVcvK+/hdCg57vCDvOdaaUTHaKlG5SCyK56nI68ew7RDCN+yWbyA21WmxKsDpaC3dfY+qRApoW6egpv59kHwt92xKjgU7sUxAxcMfoEPLmxuga24MFOexXBBKPlnL6lavK8SY0yXgyONbK7yxpu0q2Fbmlc6RqkSBNM6YMUgEN3RsikGUxll3jeEVvA==
ARC-Authentication-Results: i=2; mx.microsoft.com 1; spf=pass (sender ip is
 4.158.2.129) smtp.rcpttodomain=amd.com smtp.mailfrom=arm.com; dmarc=pass
 (p=none sp=none pct=100) action=none header.from=arm.com; dkim=pass
 (signature was verified) header.d=arm.com; arc=pass (0 oda=1 ltdi=1
 spf=[1,1,smtp.mailfrom=arm.com] dkim=[1,1,header.d=arm.com]
 dmarc=[1,1,header.from=arm.com])
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=arm.com; s=selector1;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck;
 bh=kWpjB2JvLWoy1kis/0rOO/HjxxEQBOIOH8FqHFE9iio=;
 b=eWh6c90aFFqTAJDCA81cu3HwtX7E3j1y3jlCEkEKLaq1M/Ijtxp3/gfaRpAqlK3CZCi8AJEUzS/NgTLfE/SXOTaIZx7+E8lRwm51UsP4w0Rxg1Us/GfnQC2xMtdUTvAh0YmE1JxGBYL6AkKf4lecTeTrFgK9dCSczRi83SPHriQ=
X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 4.158.2.129)
 smtp.mailfrom=arm.com; dkim=pass (signature was verified)
 header.d=arm.com;dmarc=pass action=none header.from=arm.com;
Received-SPF: Pass (protection.outlook.com: domain of arm.com designates
 4.158.2.129 as permitted sender) receiver=protection.outlook.com;
 client-ip=4.158.2.129; helo=outbound-uk1.az.dlp.m.darktrace.com; pr=C
ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none;
 b=X7Md+201UA3xKsPClInKmfICDOV+gq8obrVqQ20PzmziXbm09rIrXV3GFH41kLUPL1VLY0+nzONKkIQxmvAOrzES8ddaLjJe2JtWMBA4t6475ivkq1bpw99g0UO5hrrSE/YzWxrP9XhSpRmqHABMJYNsP9Il9YeLFs1qVSY17XSCHt0kNPvDwdRE9C6IzX1M6bHOz0fR6qOOaidRyAiBj5zMJxaf/m7pVfICOM/n8DXGU1i4nUxPjDj+goM7TPeL8lTT6VBTig2LzJeNd35x0dj27qFjcPW8K0kT1W3mBBKJiO9n8Kbhqo5vFkbTWg0Y54JBQZ8hlL3eXDFsJ+Cqdw==
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com;
 s=arcselector10001;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1;
 bh=kWpjB2JvLWoy1kis/0rOO/HjxxEQBOIOH8FqHFE9iio=;
 b=PJZ7bamJhElGlkqKl3oQ0VMgChZM9VZoHzzqh4UKHdemdsqeEhYE2UkaLL/Gj58eahkyHudgypaHvi7M64EvT+/mpoYz/caxYNsI60JG4bmv9/Jx/yqIiNBeAaIoFtKqGtlmNWsm52mzqDSjtyZX0WaHLvoVh+xqfVx04E7j1Enrrzrzs5Ppk0ByRBkZPSfxWgByFUuZvNwNjZnHzpVKPEJH8aT1VH4qB8uKCH7qFJAA3TMYGm7WcJfKY0JRbRPiZ/ja33cYmLiNsz6qOiFCWqbZYF0JDs//bzBnU03p8gM29g+2SokkHlXZRkAtNk6Od9ZL/IbtGZOShgm32tdXGw==
ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass
 smtp.mailfrom=arm.com; dmarc=pass action=none header.from=arm.com; dkim=pass
 header.d=arm.com; arc=none
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=arm.com; s=selector1;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck;
 bh=kWpjB2JvLWoy1kis/0rOO/HjxxEQBOIOH8FqHFE9iio=;
 b=eWh6c90aFFqTAJDCA81cu3HwtX7E3j1y3jlCEkEKLaq1M/Ijtxp3/gfaRpAqlK3CZCi8AJEUzS/NgTLfE/SXOTaIZx7+E8lRwm51UsP4w0Rxg1Us/GfnQC2xMtdUTvAh0YmE1JxGBYL6AkKf4lecTeTrFgK9dCSczRi83SPHriQ=
From: Luca Fancellu <Luca.Fancellu@arm.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] device-tree: Improve hwdom memory allocation for DMA
Thread-Topic: [PATCH] device-tree: Improve hwdom memory allocation for DMA
Thread-Index: AQHczkpLp1xSo4q8Z0ODZraWVEzberXoDpSA
Date: Mon, 20 Apr 2026 14:54:56 +0000
Message-ID: <412A9DF8-6F5C-402D-AEBD-88E6DE139E07@arm.com>
References: <20260417091155.39653-1-michal.orzel@amd.com>
In-Reply-To: <20260417091155.39653-1-michal.orzel@amd.com>
Accept-Language: en-GB, en-US
Content-Language: en-US
X-MS-Has-Attach:
X-MS-TNEF-Correlator:
x-mailer: Apple Mail (2.3826.700.81.1.6)
Authentication-Results-Original: dkim=none (message not signed)
 header.d=none;dmarc=none action=none header.from=arm.com;
x-ms-traffictypediagnostic:
	DU2PR08MB7272:EE_|PAWPR08MB10995:EE_|DB1PEPF000509FD:EE_|VI1PR08MB10146:EE_
X-MS-Office365-Filtering-Correlation-Id: 42ffecaa-2026-409e-b16f-08de9eecef49
x-checkrecipientrouted: true
nodisclaimer: true
X-MS-Exchange-SenderADCheck: 1
X-MS-Exchange-AntiSpam-Relay: 0
X-Microsoft-Antispam-Untrusted:
 BCL:0;ARA:13230040|366016|1800799024|376014|38070700021|56012099003|22082099003|18002099003;
X-Microsoft-Antispam-Message-Info-Original:
 u4tYGPZFF5S1TkUnQ2jPn0xHWT9Q8QpuUzG10RowWVt7TuONVETVRM1/JpDDKclI+iHJrPqluzWBp3BJXDjdHcnQ1+J8eWG/binZLazX+AfEKkfQFPv8Cizu5Blqf2KOr3pA7lur2MvlKHrtUj1p/awWl6Ju+xlrY2g2OWTm7HajFmz5ZdX0E6afcliyMeMcWAa2ZKvx7eSv07tLZCZRF1gpKbrqWqksanKM4OC+5ScV9G04wqWAfajTjeiog8yvv9sBxA/w76GPhRRdZoBKRpjr8Z2A2/LZXoeKrVdPpnhyua+vuQP1tapp2BMNJY7wzqjs/e1JIX4ndkKdmmwgFr8wBx6wzQayNpuMQIdvTILAizXEXBU+fPdbDpbG1V6xUOT1tcd6Uz10qbJNhC+BgeMdDq2CsMcfyvywJauF+caAXJYrwqK20U0Q5u2TI8/b7Kv7CzRNnBIJOKw+KVeucmDqsY+km6pRasvIeR9EfCzw8Ynd8nYyk8jVz0R/JMw4sqaAMtpZmCfLB7HCfTDzIR8xfzB6x07T2Fb+G9+2+Szon9QSErULflL5SHC6OD2ylEEf+ef/9dor5t9Y7YQTpn3JndTBc16pJ0zZTgbucMApRYsxdWWA6PSXgpcQWxdJCDi/Yzzv23SEdDwX3hfqAcIEAXqawc+GPJ9sS3FOa3vOC3NAqWsROPK1hmIhq5lh4ciyLFqQ+pmWsteHJKVWW688WdHEpzTNYCqXLgccSQ3QBjRYCSJBggH2C8klSpXIKkv1NsgaReiitoTQYyYX5arFrrT+wjsmCVfIe/nCdS8=
X-Forefront-Antispam-Report-Untrusted:
 CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:DU2PR08MB7272.eurprd08.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(366016)(1800799024)(376014)(38070700021)(56012099003)(22082099003)(18002099003);DIR:OUT;SFP:1101;
Content-Type: text/plain; charset="utf-8"
Content-ID: <48BA730DDB9B3849A88E3A2172684771@eurprd08.prod.outlook.com>
Content-Transfer-Encoding: base64
MIME-Version: 1.0
X-Exchange-RoutingPolicyChecked:
 d5X8x2czH8N18o3XIBEBG47X8WcuspaEU7K0ofW0Iopvp6yVXPzA+40VY+vs/UNriDGLZ9+rGmeTGm8sL8S1pfsUJHu4JsFWA45Vi/WzI7hxpiM5MQ0DOSpNfXgKmtQGvMae2Ua/5YeNio3ddzb45lzoTYpU7cJStKh1oBhUxQurR+AdyGRT+Ydu9mM48utIVZHm0TXhBbzJ8Z5sLZq/5IPuwkszT64acXSxpwjTXKFqhqr7RY4oW+PT6kP2D3kLAqRkajYg/jFpZ9/IdXzSD2sAIYM5joWM/TNZtEKJm5hKZhKxpSLczoi23dBAX53wu0FmbfVAKxUCFWWRs1vVuw==
X-MS-Exchange-Transport-CrossTenantHeadersStamped: PAWPR08MB10995
X-EOPAttributedMessage: 0
X-MS-Exchange-Transport-CrossTenantHeadersStripped:
 DB1PEPF000509FD.eurprd03.prod.outlook.com
X-MS-PublicTrafficType: Email
X-MS-Office365-Filtering-Correlation-Id-Prvs:
	82ea2d55-03d4-4fc6-8540-08de9eecc96d
X-Microsoft-Antispam:
	BCL:0;ARA:13230040|82310400026|14060799003|35042699022|36860700016|376014|1800799024|56012099003|18002099003|22082099003;
X-Microsoft-Antispam-Message-Info:
	+HeV3eStzz8Enlz4XGr52bS6YG+HeteZTlp2HyrDtPbeDT6vhVDlZ6BHdDEeZOmOGmKAzIp4fExvH2OAuw2kx/Lj8Pt2MPTxxkLzMpHV3a5JNBtTan58TMcPQUQH4dp2n2TcvYYcmLV0PQ0AdEo/gEztTf+SpK26AM57b4sRktbxl9ohlri1PzX6ePhbdeH4Vy+M/2bp9Hl6AP+kyrchqmuarqCaz/EEIMKTgZfmm/FtGTbqHGGsyov/DVCyoI1OsHtJB4ArpYNNTvAfV1ww1psWD51RIqt7MzrsfWDkeGFUIwD0eJ5fNPleWIMCU/ra6K8AiJWuaENGrMptBq4FmpleHzhr9jIcDzk5FiNGVPShZQNeKWaUuXFulUZPSYUkakcqOjNo34O4BT60X73vgZJDc8E6icr3tvxBU2VVg7kUJ83QpcUKtj7W9uxg7/l+pZf0ZBop5/JCzR07e4L2bWHkj927sJdBjIPxqbrQhM0WlAsPlaXdDiTOKBwlqnh4ee+TV2YACXZH8dTmxI0nnUhsqqowT5KaaaLaKaK+N8++UbKjHi19FfVp9Ey5BgrCqlBuV2exGI7L0ApKvbxNuAf2ri3ry/HjkmZX5lhianX2DUyDBjo6tgpYN/zEFMPm6iOv1f+YS14MRCqML4gf+w9nVYGERSepYT0wNs9zTKTRmAlDAZuIuFlUEJKOwmsbXVf9VIlob79DVbDWIIAzFMusE/QLcC0yjgbrNYfBpAjkSDUiuVWXMPjwUYjrj/upiwAi8w+UgYlQViYTKftx5w==
X-Forefront-Antispam-Report:
	CIP:4.158.2.129;CTRY:GB;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:outbound-uk1.az.dlp.m.darktrace.com;PTR:InfoDomainNonexistent;CAT:NONE;SFS:(13230040)(82310400026)(14060799003)(35042699022)(36860700016)(376014)(1800799024)(56012099003)(18002099003)(22082099003);DIR:OUT;SFP:1101;
X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1
X-MS-Exchange-AntiSpam-MessageData-0:
	EwlHVHLdPT+edc/kmrie9zzpuMaFcdZjEZG1pgR4fTQ1Ku/6zk4POqfz0jn6NIoyn1EAp0ba+Dl3PglEym1bVtqIC9aBMpvymsaeQTsr7GzEVw5g4xssS/moStxgtPCd208D0MLfPq3+D1OL+tjXrzNR+lgVBKIwHuGz9lxuPoiJ7L3da2xSzDNGX3X6eZP91lFQZI3GZp9sNjZDRAShom1gbkLjur3HYU9IYaeM16XUzQIjh0m8HxtuwHSyKqBiTskmHSDJX9Iiy1gPKuBJjj3EtdJT1Zl6NTWeok23B67DJT+pWwN6h1Xydaiw69egdZqD0TbrwZD/MEBnbZ4Q0dTNjvKwnX9Rh/Ee63xsc8hZx9Tm2cdPLbhH+pRqPBSKy6cV8OS9MhjCU0PknCBNfti0DJnGMPblBVw9rDISABBFgH+hVAs6yfLhL2kHjk5R
X-OriginatorOrg: arm.com
X-MS-Exchange-CrossTenant-OriginalArrivalTime: 20 Apr 2026 14:55:59.6200
 (UTC)
X-MS-Exchange-CrossTenant-Network-Message-Id: 42ffecaa-2026-409e-b16f-08de9eecef49
X-MS-Exchange-CrossTenant-Id: f34e5979-57d9-4aaa-ad4d-b122a662184d
X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=f34e5979-57d9-4aaa-ad4d-b122a662184d;Ip=[4.158.2.129];Helo=[outbound-uk1.az.dlp.m.darktrace.com]
X-MS-Exchange-CrossTenant-AuthSource:
	DB1PEPF000509FD.eurprd03.prod.outlook.com
X-MS-Exchange-CrossTenant-AuthAs: Anonymous
X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem
X-MS-Exchange-Transport-CrossTenantHeadersStamped: VI1PR08MB10146
X-purgate-ID: tlsNG-bad1c0/1776696964-42F76A53-E805EB1A/0/0
X-purgate-type: clean
X-purgate-size: 2004

SGkgTWljaGFsLA0KDQo+IE9uIDE3IEFwciAyMDI2LCBhdCAxMDoxMSwgTWljaGFsIE9yemVsIDxt
aWNoYWwub3J6ZWxAYW1kLmNvbT4gd3JvdGU6DQo+IA0KPiBXaGVuIExMQyBjb2xvcmluZyBpcyBl
bmFibGVkLCB0aGUgaGFyZHdhcmUgZG9tYWluIGdldHMgbWVtb3J5IGZyb20NCj4gaG9zdCBmcmVl
IHJlZ2lvbnMgcmF0aGVyIHRoYW4gdGhlIGZpeGVkIGd1ZXN0IFJBTSBiYW5rcy4gIFRoZSBwcmV2
aW91cw0KPiBjb2RlIHNvcnRlZCB0aGVzZSByZWdpb25zIGJ5IGRlc2NlbmRpbmcgc2l6ZSwgd2hp
Y2ggdXN1YWxseSBjYXVzZXMNCj4gaGlnaC1hZGRyZXNzIG1lbW9yeSB0byBiZSBhbGxvY2F0ZWQg
Zmlyc3QuDQo+IA0KPiBBbGwgYWxsb2NhdGVkIG1lbW9yeSBjb3VsZCByZXNpZGUgYWJvdmUgNCBH
QiBsZWF2aW5nIERNQSBub24tZnVuY3Rpb25hbA0KPiBmb3IgZGV2aWNlcyB3aXRoIGxpbWl0ZWQg
YWRkcmVzc2luZyBjYXBhYmlsaXRpZXMuDQo+IA0KPiBJbXByb3ZlIHRoZSBoYW5kbGluZyBhcyBm
b2xsb3dzOg0KPiAtIFNvcnQgZnJlZSByZWdpb25zIGJ5IGFzY2VuZGluZyBhZGRyZXNzIGluc3Rl
YWQgb2YgZGVzY2VuZGluZyBzaXplLA0KPiAgc28gbG93LW1lbW9yeSBiYW5rcyBhcmUgYWxsb2Nh
dGVkIGZpcnN0LA0KPiAtIFNraXAgYmFua3Mgc21hbGxlciB0aGFuIDEyOCBNQiAob3IgdGhlIHRv
dGFsIHJlbWFpbmluZyBhbGxvY2F0aW9uLA0KPiAgd2hpY2hldmVyIGlzIGxlc3MpIHVudGlsIHRo
ZSBmaXJzdCBiYW5rIGlzIHBsYWNlZCwgZW5zdXJpbmcNCj4gIHBsYWNlX21vZHVsZXMoKSBoYXMg
ZW5vdWdoIGNvbnRpZ3VvdXMgc3BhY2UsDQo+IC0gRXh0cmFjdCB0aGUgaGFyZHdhcmUgZG9tYWlu
IGFsbG9jYXRpb24gcGF0aCBpbnRvIGl0cyBvd24gZnVuY3Rpb24NCj4gIChhbGxvY2F0ZV9od2Rv
bV9tZW1vcnkpIGZvciBjbGFyaXR5Lg0KPiANCj4gU2lnbmVkLW9mZi1ieTogTWljaGFsIE9yemVs
IDxtaWNoYWwub3J6ZWxAYW1kLmNvbT4NCj4gLS0tDQo+IHhlbi9jb21tb24vZGV2aWNlLXRyZWUv
ZG9tYWluLWJ1aWxkLmMgfCAxNTIgKysrKysrKysrKysrKysrKy0tLS0tLS0tLS0NCj4gMSBmaWxl
IGNoYW5nZWQsIDk2IGluc2VydGlvbnMoKyksIDU2IGRlbGV0aW9ucygtKQ0KDQpJdCBsb29rcyBv
ayB0byBtZSwgdGhlIG9ubHkgdGhpbmcgaXMgdGhhdCBpZiB3ZSBoYXZlIG1hbnkgc21hbGxlciBi
YW5rcyA8IDEyOCBNYiBiZWZvcmUgcmVhY2hpbmcNCm9uZSB0aGF0IGlzIGF0IGxlYXN0IDEyOCBN
Yiwgd2Ugd29u4oCZdCBhbGxvY2F0ZSB0aGVtIGFuZCBsb29zZSB0aGVtIGZvcmV2ZXIuDQoNCkl0
IGZlZWxzIG9ubHkgYSBjb3JuZXIgY2FzZSBzbyBmb3IgbWUgaXTigJlzIG9rDQoNClJldmlld2Vk
LWJ5OiBMdWNhIEZhbmNlbGx1IDxsdWNhLmZhbmNlbGx1QGFybS5jb20gPG1haWx0bzpsdWNhLmZh
bmNlbGx1QGFybS5jb20+Pg0KDQpDaGVlcnMsDQpMdWNhDQoNCg0K


From xen-devel-bounces@lists.xenproject.org Mon Apr 20 15:02:27 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 20 Apr 2026 15:02:27 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1286192.1567293 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wEq8l-0007j9-QF; Mon, 20 Apr 2026 15:02:23 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1286192.1567293; Mon, 20 Apr 2026 15:02: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 1wEq8l-0007j2-Ne; Mon, 20 Apr 2026 15:02:23 +0000
Received: by outflank-mailman (input) for mailman id 1286192;
 Mon, 20 Apr 2026 15:02:21 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92) id 1wEq8j-0007it-Pt
 for xen-devel@lists.xenproject.org; Mon, 20 Apr 2026 15:02:21 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wEq8j-004GeX-2f
 for xen-devel@lists.xenproject.org; Mon, 20 Apr 2026 17:02:21 +0200
Received: from [10.42.69.9] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <oleksii.kurochko@gmail.com>)
 id 69e63ffb-bab6-0a2a0a5309dd-0a2a4509a048-16
 for <xen-devel@lists.xenproject.org>; Mon, 20 Apr 2026 17:02:20 +0200
Received: from [209.85.208.182] (helo=mail-lj1-f182.google.com)
 by tlsNG-bad1c0.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.1)
 (envelope-from <oleksii.kurochko@gmail.com>)
 id 69e63ffc-2497-0a2a45090019-d155d0b6a9e5-3
 for <xen-devel@lists.xenproject.org>; Mon, 20 Apr 2026 17:02:20 +0200
Received: by mail-lj1-f182.google.com with SMTP id
 38308e7fff4ca-38dd575bca3so40155251fa.1
 for <xen-devel@lists.xenproject.org>; Mon, 20 Apr 2026 08:02:20 -0700 (PDT)
Received: from [192.168.1.6] (user-109-243-69-121.play-internet.pl.
 [109.243.69.121]) by smtp.gmail.com with ESMTPSA id
 2adb3069b0e04-5a4187e7a62sm2971869e87.56.2026.04.20.08.02.14
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Mon, 20 Apr 2026 08:02:15 -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=20251104 header.d=gmail.com header.i="@gmail.com" header.h="Content-Transfer-Encoding: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=20251104; t=1776697340; x=1777302140; darn=lists.xenproject.org;
        h=content-transfer-encoding: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;
        bh=9pHylE/WjW6XUQ0m8ic5aY3Qs3biYzaa9JkC4on7POw=;
        b=apvWCjkwE9jbp91JZl3HQMo4AqZCNK/Sales5jjQQBJDAJQ3N2qkIz0QUkyEP+B480
         I1PMlTfV09+BO3EWd56ls6LfnaOV+k42Xkb7fYTYFRLjPRWcA6AeENe1mVFRlGR6eEgt
         OOc4PTSHqNYzNLXch6Dx8bvGbGs3OTw2bEq5mHi0nbOcr7xxs1eMeBAMbtY6q08Ka1ys
         nQdA7fnxYlC7xb81Oh+Ubk1ekXLoySm9VNtUqA+W5kh7nxpQg/JslM1kErg8SK9JgSRK
         TfuKnxYKXRv8YLNNIWus39nDPvDvFXHV6PBf+fD+979kekpN3zlJvyPmiC8z6VdcAqXX
         IALA==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20251104; t=1776697340; x=1777302140;
        h=content-transfer-encoding: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;
        bh=9pHylE/WjW6XUQ0m8ic5aY3Qs3biYzaa9JkC4on7POw=;
        b=ldu8dth95pdtHtB5x/4cQX+hDhrrhCpsVhDOannUW46b7Evs/9hGRZTumU6TObb7H9
         930uxU33cv2kVISI6WWsqy8Ad+ZPNSu1pEzmn03x8Z//S2XC/2ZUXmAce8XaLmGfzU2/
         vRbaS5FyX5LAJ6hSUEiNnB+8wPyH3QjohB4iJu7hbd4ujinGwsapRBzB9uaiZ717jxCI
         uZduWIuy5FDQ/lc2wmi5V6kX35icKrUz+fo7ocrgIQAkfEuXZE6vlt420NRUxpb3xPLx
         AtYnkQnJyyWeRJTsc26a0hTU1FVqzssCE/HsHt78A3I363cm/TEonsHE2C1c/osJhuw8
         jSvQ==
X-Forwarded-Encrypted: i=1; AFNElJ9lpZRysqU7+TO3kg/OJg6iOW8QCfZnBoTB5tGOu7Fm3On423frALcQwztbJjUEhgaBonxNMPpgnHk=@lists.xenproject.org
X-Gm-Message-State: AOJu0YwPK/s3+nA8/EOPsh/vlHOLcMRtSlYhbArC9YWc5mU+B8R4pbCi
	PZdsod7BhFirw11eQ6253t8N6QG+3QpJUgjf1nPqK9Nl0SD/RdPqnfm5
X-Gm-Gg: AeBDietNKeChb5VdR2FmFZ3GXOPXDfKdIYrj3q3GX3Cdc4IbNc+ZQxyrbq0BE2tI9Qo
	5jBE7JB3QOS5M5ebx8+3M0o+rHbScMCXtc/B4VQ8G6Zkm2Tj6dWJNZ2GZTLGcR3Mp8z3GX+D58j
	YNupDe6bx2Q05ku8E5+uLXkHBCDI/BruM/+8LALmroFHmsjBUYr3Um/UfpUni+wUkcdxWqK+Eg7
	+4azhtDenCDqLGSvkZFbWRdLi7Qk9qfn1QjXFf777nxd1peB774CMzcNEbQvUIJh0pxuZ1XTv0Z
	daZaLJooPgZIHB+5F8FTmH9mjB73Qn+H0NAnun2nqoxW5Y9crLCeKMNJYtMR2vdAsLlNzn9MDL3
	h5RrG6+93cntrkDx6TIyDDxOGzh2X07lHpJpGoZDNr5ToQ3uZfRYCU9CzhJlAC2Z7epI68YfOVz
	kiHX3Bh2taqxqA2CnFBHsZGSglJtpMfNY0AfTAE/WKzhmxmWLIfBim25ZPHIX92aXTCnU/vBK4Z
	NSl7MTbGHQpmA==
X-Received: by 2002:a05:6512:3c91:b0:5a2:b514:4fbb with SMTP id 2adb3069b0e04-5a4172999c9mr4096567e87.11.1776697337906;
        Mon, 20 Apr 2026 08:02:17 -0700 (PDT)
Message-ID: <276c68cb-51c0-4775-8b70-3af80d0d0f27@gmail.com>
Date: Mon, 20 Apr 2026 17:02:13 +0200
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH v1 19/27] xen/riscv: emulate guest writes to virtual APLIC
 MMIO
To: Jan Beulich <jbeulich@suse.com>
Cc: Romain Caritey <Romain.Caritey@microchip.com>,
 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.pau@citrix.com>,
 Stefano Stabellini <sstabellini@kernel.org>, xen-devel@lists.xenproject.org
References: <cover.1773157782.git.oleksii.kurochko@gmail.com>
 <e29eace5006929e61da347814b9759896d179e28.1773157782.git.oleksii.kurochko@gmail.com>
 <2bff40f5-2eef-4e72-8191-b3442607e0e4@suse.com>
 <76ea5954-89cd-47a4-872a-239bbc08b785@gmail.com>
 <910f0720-1e83-4b0d-a1bd-09799d6f8264@suse.com>
Content-Language: en-US
From: Oleksii Kurochko <oleksii.kurochko@gmail.com>
In-Reply-To: <910f0720-1e83-4b0d-a1bd-09799d6f8264@suse.com>
Content-Type: text/plain; charset=UTF-8; format=flowed
Content-Transfer-Encoding: 7bit
X-purgate-ID: tlsNG-bad1c0/1776697340-4216DA53-B1A4962F/10/73395122804
X-purgate-type: spam
X-purgate-size: 6531



On 4/16/26 3:19 PM, Jan Beulich wrote:
> On 14.04.2026 18:04, Oleksii Kurochko wrote:
>> On 4/2/26 4:18 PM, Jan Beulich wrote:
>>> On 10.03.2026 18:08, Oleksii Kurochko wrote:
>>>> +static int cf_check vaplic_emulate_store(const struct vcpu *vcpu,
>>>> +                                         unsigned long addr, uint32_t value)
>>>> +{
>>>> +    struct vaplic *vaplic = to_vaplic(vcpu->domain->arch.vintc);
>>>> +    struct aplic_priv *priv = vaplic->base.info->private;
>>>> +    uint32_t offset = addr & APLIC_REG_OFFSET_MASK;
>>>
>>> See ./CODING_STYLE as to uses of fixed-width types.
>>>
>>>> +    unsigned long aplic_addr = addr - priv->paddr_start;
>>>> +    const uint32_t *auth_irq_bmp = vcpu->domain->arch.vintc->private;
>>>> +
>>>> +    switch ( offset )
>>>> +    {
>>>> +    case APLIC_SETIP_BASE ... APLIC_SETIP_LAST:
>>>
>>> And (taking this just as example) any misaligned accesses falling in this range
>>> are fine?
>>
>> Do you mean something like 0x1C02 instead of 0x1C00 or 0x1C04?
> 
> Yes.
> 
>>>> +        /*
>>>> +         * As sourcecfg register starts from 1:
>>>> +         *   0x0000 domaincfg
>>>> +         *   0x0004 sourcecfg[1]
>>>> +         *   0x0008 sourcecfg[2]
>>>> +         *    ...
>>>> +         *   0x0FFC sourcecfg[1023]
>>>> +         * It is necessary to calculate an interrupt number by substracting
>>>
>>> Nit: subtracting
>>>
>>>> +         * of APLIC_DOMAINCFG instead of APLIC_SOURCECFG_BASE.
>>>> +         */
>>>> +        if ( !AUTH_IRQ_BIT(regval_to_irqn(offset - APLIC_DOMAINCFG)) )
>>>> +            /* interrupt not enabled, ignore it */
>>>
>>> Throughout the series: Please adhere to ./CODING_STYLE.
>>>
>>>> +            return 0;
>>>> +
>>>> +        break;
>>>
>>> And any value is okay to write?
>>
>> No, it should be in a range
>> [APLIC_SOURCECFG_SM_INACTIVE,APLIC_SOURCECFG_SM_LEVEL_LOW].
>>
>> I will add the check before break:
>>           if ( value > APLIC_SOURCECFG_SM_LEVEL_LOW )
>>           {
>>               gdprintk(XENLOG_WARNING,
>>                        "value(%u) is incorrect for sourcecfg register\n",
>> value);
>>               value = APLIC_SOURCECFG_SM_INACTIVE;
>>           }
> 
> And why would writing APLIC_SOURCECFG_SM_INACTIVE be any better, when
> that's not what the guest wanted? Simply ignore such writes, unless the
> spec mandates specific behavior for out-of-range avlues?

The spec doesn't mandate specific behavior for out-of-range values but I 
thought it would be better to make irq inactive instead of just ignoring 
so it won't affect somehow potential occurrence of this interrupt.

> 
>>>> +    case APLIC_TARGET_BASE ... APLIC_TARGET_LAST:
>>>> +        struct vcpu *target_vcpu = NULL;
>>>> +
>>>> +        /*
>>>> +         * Look at vaplic_emulate_load() for explanation why
>>>> +         * APLIC_GENMSI is substracted.
>>>> +         */
>>>
>>> There's no vaplic_emulate_load() - how can I go look there?
>>
>> It is introduced in the next patch.
> 
> As before - it should be possible to review patch series strictly
> sequentially. Further, what if this patch gets committed, and the other
> gets delayed by several months?

Got you, I will re-order patches.

> 
>>>> +        if ( !AUTH_IRQ_BIT(regval_to_irqn(offset - APLIC_GENMSI)) )
>>>> +            /* interrupt not enabled, ignore it */
>>>> +            return 0;
>>>> +
>>>> +        for ( int i = 0; i < vcpu->domain->max_vcpus; i++ )
>>>
>>> unsigned int
>>>
>>>> +        {
>>>> +            struct vcpu *v = vcpu->domain->vcpu[i];
>>>> +
>>>> +            if ( v->vcpu_id == (value >> APLIC_TARGET_HART_IDX_SHIFT) )
>>>> +            {
>>>> +                target_vcpu = v;
>>>> +                break;
>>>> +            }
>>>> +        }
>>>> +
>>>> +        ASSERT(target_vcpu);
>>>
>>> What guarantees the pointer to be non-NULL? The incoming value can be
>>> arbitrary, afaict.
>>
>> I didn't understand your point. It is just checking that target_vcpu has
>> been found. If after for() loop the value of target_vcpu is still NULL
>> then something wrong in Xen.
> 
> If that's true, then the assertion is fine to have. I can't help the
> impression though that a guest could pick a value such that you can't
> possibly find the target vCPU. Asserting on guest controlled input is
> not okay, as was said several times before.

I will then do domain_crash() that as a value is incorrect in case if 
target_vcpu is NULL, I missed that guest could put wrong value.

> 
>>>> +        if ( !(vaplic->regs.domaincfg & APLIC_DOMAINCFG_DM) )
>>>> +        {
>>>> +            vaplic_dm_update_target(cpuid_to_hartid(target_vcpu->processor),
>>>> +                                    &value);
>>>> +        }
>>>> +        else
>>>> +            vaplic_update_target(priv->imsic_cfg,
>>>> +                                 vcpu_guest_file_id(target_vcpu),
>>>> +                                 cpuid_to_hartid(target_vcpu->processor),
>>>> +                                 &value);
>>>
>>> I'm struggling with the naming here: When DM is clear, a function with "dm"
>>> in the name is called.
>>
>> it means direct (delivery) mode. Maybe it is better to put dm at the end
>> of the function name? Or it is just better to change it to something else?
> 
> Without a better understanding of what is wanted, all I can say is that
> calling something with "dm" in its name when the condition says it's not
> "dm" is confusing.

Basically it should be the following. If domaincfg.DM (here dm is 
delivery mode according to spec) is 0 then it means that APLIC works in 
direct delivery mode, if DM bit is 1 then MSI delivery mode is used.

So just for clarity I will rename:
- vaplic_dm_update_target -> vaplic_ddm_update_target
- vaplic_update_target -> vaplic_mdm_update_target

Or maybe just s/ddm/direct and s/mdm/msi will be just better in the 
function names.

> 
>>>> +    default:
>>>> +        panic("%s: unsupported register offset: %#x\n", __func__, offset);
>>>
>>> Crashing the host for the guest doing something odd? It's odd that the function
>>> only ever returns 0 anyway - it could simply return an error here (if the
>>> itention is to not ignore such writes).
>>
>> But maybe it is a legal offset and we really want to support it?
> 
> Still not a reason to crash the entire host?

Agree, domain crash will be more then enough.

Thanks.

~ Oleksii


From xen-devel-bounces@lists.xenproject.org Mon Apr 20 15:22:04 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 20 Apr 2026 15:22:04 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1286202.1567302 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wEqRi-0002HV-A1; Mon, 20 Apr 2026 15:21:58 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1286202.1567302; Mon, 20 Apr 2026 15:21: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 1wEqRi-0002HO-7E; Mon, 20 Apr 2026 15:21:58 +0000
Received: by outflank-mailman (input) for mailman id 1286202;
 Mon, 20 Apr 2026 15:21:57 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <jbeulich@suse.com>) id 1wEqRh-0002HI-1M
 for xen-devel@lists.xenproject.org; Mon, 20 Apr 2026 15:21:57 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wEqRf-00BPgs-3q
 for xen-devel@lists.xenproject.org; Mon, 20 Apr 2026 17:21:55 +0200
Received: from [10.42.69.2] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <jbeulich@suse.com>)
 id 69e64490-bab6-0a2a0a5309dd-0a2a4502bd6c-10
 for <xen-devel@lists.xenproject.org>; Mon, 20 Apr 2026 17:21:55 +0200
Received: from [209.85.128.44] (helo=mail-wm1-f44.google.com)
 by tlsNG-720697.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.1)
 (envelope-from <jbeulich@suse.com>)
 id 69e64492-af86-0a2a45020019-d155802cad5a-3
 for <xen-devel@lists.xenproject.org>; Mon, 20 Apr 2026 17:21:55 +0200
Received: by mail-wm1-f44.google.com with SMTP id
 5b1f17b1804b1-4891c0620bcso9270655e9.1
 for <xen-devel@lists.xenproject.org>; Mon, 20 Apr 2026 08:21:54 -0700 (PDT)
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-488fb74eed9sm129276795e9.1.2026.04.20.08.21.53
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Mon, 20 Apr 2026 08:21:53 -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=google header.d=suse.com header.i="@suse.com" header.h="Content-Transfer-Encoding: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=1776698514; x=1777303314; darn=lists.xenproject.org;
        h=content-transfer-encoding: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;
        bh=qQ3gGohfaef4cQN+FiRgbIUV8k8h5Qo7CKVXFQnA5+A=;
        b=R7Alj1/BmUasWCekXa143sQiCQhjTOQZZfWCa46SnAhmwDe1IA+jGfHoAy41KGDewH
         gqb4WpqroDlGoLcEWrQ6y3Iakt80yeFi2mP8eUiN72RZDeFDWNLenCk/KZGGgZZxkJZs
         pJW1XTPSBjykvmDbBFvR6DOi6OjUfwLCvHPPxmYkzS/M5075ovZ22rxl1LTyBLRuQ/E1
         I3XghmPumFigbgWBJRAWekpY1JdlQA9TMGsGaX9y+PsPwA0CuJ4CVrWX5vQinHPFgkBV
         91IyZPqEmy6raoc6FYfOXK0w8kf48reoXPsRXl8LfVtH0jRmlBBVLyGohhEsqXPcDc5H
         8yYQ==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20251104; t=1776698514; x=1777303314;
        h=content-transfer-encoding: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;
        bh=qQ3gGohfaef4cQN+FiRgbIUV8k8h5Qo7CKVXFQnA5+A=;
        b=kQybM3ZETX97H6m89xEggPHlAwE1uq5rxSOD4xi56YDGU6KLajbLxr7CFNR1gWs4EE
         1olmAoGZHReEpwXYcudRTqwRRhFfcvQ3s4inEltT9JYHdX2Id0wyoW8/4MmcbWK3g0lo
         3V8dS0Wd3Hf9aNy2Jyw+Cm+scMeBaY+f7u/gEhczCYyvDkeoGfNciVfG3etXre2Cz1DW
         AQglNXHNLRgcmBp86rjGjDg+7Jb8YXqScVXdsOezMx5LPF/GDY5ePOAlF5UnDSrUmb1A
         hqAHT9/fxziGSMQalxVlUYI2Pb+3W8ffgV9Uxje8iUC+l/b7JceUlCg9AFrWv1YfwIvS
         2Afw==
X-Forwarded-Encrypted: i=1; AFNElJ/IWLxvhinwdTXsj5FZbnMQwiRswW6iylHStJlpsPhOgEScV1pQOcmTROhdk3zUMDPaZXXEu1L01NY=@lists.xenproject.org
X-Gm-Message-State: AOJu0Ywei6IFiO02Qv1tbP22ZBY6TK87k71tl02SAXNwVcsvCgsgA0Nr
	3Hyeuc6Oth8jk/6y+7+adFjqQP993rurPZroD2usUkuv8DEkMoBWZ5C6LvXpM8aQVA==
X-Gm-Gg: AeBDietEN4hPIWMfSyZTl5UpeXoTtta/17nYdJwYmr7hmzmbT4VDxoQjXtBlBP0+wBJ
	HStIVJjbemOeh6OtvNxEM3vNgxRZQCwDBra9hFKs8tjXNJoTk5nuitrDhF55gWStQDZmhcqNjn0
	apEyuNL0LAj17MMwDw4Cetze8sr4fxzRJNAXaGuHVnbABA/WusSUg84ZLrmzHBh2IyiAbMQCJV6
	c6ApTYmKXWAQvawZ6gr9lAIMauSTWbzNJvaWR4b3w5V/SiYPrHSA0DQfCmTGm189QAte6F9430q
	Lej3aESrLLWO0kSpn5PPmk2W9/ZrCjQggegJXM8pnm6iHk7afjkQlT+k4LypkGHjVbfZ3X4rGQW
	f/ycANOc+QvHZ2TJF3PsGFHcPbkQ0B1xmDZQ2z+h2h5c17y25+ckZPiFddxAd6ngGhj8lb13dO5
	tp5YgWfCIFz1di2oXasRGUOpF9xyWT/dxKVYZ9qnARKDVkLkG64Yzjt7AAL3ubWbihcm5XOFTq6
	U+keq/QB3MeNT3cjMEUXJH9yA==
X-Received: by 2002:a05:600c:c0db:b0:485:3eba:ab96 with SMTP id 5b1f17b1804b1-488fb73b259mr147601145e9.3.1776698514310;
        Mon, 20 Apr 2026 08:21:54 -0700 (PDT)
Message-ID: <0ccf093f-cc2a-4729-bf8f-b39bf73fd202@suse.com>
Date: Mon, 20 Apr 2026 17:21:54 +0200
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH v1 16/27] xen/riscv: implement IRQ mapping for device
 passthrough
To: Oleksii Kurochko <oleksii.kurochko@gmail.com>
Cc: Romain Caritey <Romain.Caritey@microchip.com>,
 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.pau@citrix.com>,
 Stefano Stabellini <sstabellini@kernel.org>, xen-devel@lists.xenproject.org
References: <cover.1773157782.git.oleksii.kurochko@gmail.com>
 <10654a6c38fa929b5fdf6f214badfe4f60fe78d4.1773157782.git.oleksii.kurochko@gmail.com>
 <8a8a2afd-6f53-4f45-b8c8-fb34a6fbb970@suse.com>
 <f099b925-0ea9-43a7-b760-f70f343a4d7c@gmail.com>
 <a7a4e8c9-d053-4ca7-ac9c-f43ddccf9151@suse.com>
 <00fa439d-0327-4c0c-960d-a810820a6e83@gmail.com>
 <09a260ca-5a98-461d-9f57-d298a483d3d6@suse.com>
 <7c059a67-3f3f-4633-aebb-939aa9ac7955@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: <7c059a67-3f3f-4633-aebb-939aa9ac7955@gmail.com>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
X-purgate-ID: tlsNG-720697/1776698515-B3961161-1E8FF53C/0/0
X-purgate-type: clean
X-purgate-size: 6758

On 20.04.2026 16:34, Oleksii Kurochko wrote:
> 
> 
> On 4/20/26 3:45 PM, Jan Beulich wrote:
>> On 20.04.2026 13:39, Oleksii Kurochko wrote:
>>> On 4/16/26 2:51 PM, Jan Beulich wrote:
>>>> On 14.04.2026 13:29, Oleksii Kurochko wrote:
>>>>> On 4/2/26 2:22 PM, Jan Beulich wrote:
>>>>>> On 10.03.2026 18:08, Oleksii Kurochko wrote:
>>>>>>> +int vaplic_map_device_irqs_to_domain(struct domain *d,
>>>>>>> +                                     struct dt_device_node *dev,
>>>>>>> +                                     bool need_mapping,
>>>>>>> +                                     struct rangeset *irq_ranges)
>>>>>>> +{
>>>>>>> +    unsigned int i, nirq;
>>>>>>> +    int res, irq;
>>>>>>> +    struct dt_raw_irq rirq;
>>>>>>> +    uint32_t *auth_irq_bmp = d->arch.vintc->private;
>>>>>>> +    unsigned int reg_num;
>>>>>>> +
>>>>>>> +    nirq = dt_number_of_irq(dev);
>>>>>>> +
>>>>>>> +    /* Give permission and map IRQs */
>>>>>>> +    for ( i = 0; i < nirq; i++ )
>>>>>>> +    {
>>>>>>> +        res = dt_device_get_raw_irq(dev, i, &rirq);
>>>>>>> +        if ( res )
>>>>>>> +        {
>>>>>>> +            printk(XENLOG_ERR "Unable to retrieve irq %u for %s\n",
>>>>>>> +                   i, dt_node_full_name(dev));
>>>>>>> +            return res;
>>>>>>> +        }
>>>>>>> +
>>>>>>> +        /*
>>>>>>> +         * Don't map IRQ that have no physical meaning
>>>>>>> +         * ie: IRQ whose controller is not APLIC/IMSIC/PLIC.
>>>>>>> +         */
>>>>>>> +        if ( rirq.controller != dt_interrupt_controller )
>>>>>>> +        {
>>>>>>> +            dt_dprintk("irq %u not connected to primary controller."
>>>>>>> +                       "Connected to %s\n", i,
>>>>>>> +                       dt_node_full_name(rirq.controller));
>>>>>>> +            continue;
>>>>>>> +        }
>>>>>>> +
>>>>>>> +        irq = platform_get_irq(dev, i);
>>>>>>> +        if ( irq < 0 )
>>>>>>> +        {
>>>>>>> +            printk("Unable to get irq %u for %s\n", i, dt_node_full_name(dev));
>>>>>>> +            return irq;
>>>>>>> +        }
>>>>>>> +
>>>>>>> +        res = irq_permit_access(d, irq);
>>>>>>> +        if ( res )
>>>>>>> +        {
>>>>>>> +            printk(XENLOG_ERR "Unable to permit to %pd access to IRQ %u\n", d,
>>>>>>> +                   irq);
>>>>>> This time the other way around: %d please with plain int. (Again at least
>>>>>> once further down.)
>>>>>>
>>>>>>> +            return res;
>>>>>>> +        }
>>>>>>> +
>>>>>>> +        reg_num = irq / APLIC_NUM_REGS;
>>>>>>> +
>>>>>>> +        if ( is_irq_shared_among_domains(d, irq) )
>>>>>>> +        {
>>>>>>> +            printk("%s: Shared IRQ isn't supported\n", __func__);
>>>>>>> +            return -EINVAL;
>>>>>>> +        }
>>>>>>> +
>>>>>>> +        auth_irq_bmp[reg_num] |= BIT(irq % APLIC_NUM_REGS, U);
>>>>>> ... all of this leaves me with the impression that IRQ numbering isn't really
>>>>>> virtualized. IRQs are merely split into groups, one group per domain (and
>>>>>> maybe some unused). How are you going to fit in truly virtual IRQs?
>>>>> What do you mean by truly virtual IRQs?
>>>> Ones where no aspects are represented by any piece of hardware.
>>>>
>>>>> I can't totally agree that the current approach isn't use virtual IRQs,
>>>>> yes, they are 1:1 mapped but on the other side Xen is responsible to
>>>>> give an IRQ number for guest's device and Xen is responsible that guest
>>>>> isn't trying to reach IRQ which not belongs to it.
>>>> In a non-virtualized environment I expect IRQs are going to be "sparse"
>>>> (i.e. with perhaps large blocks of items used elsewhere). If you had
>>>> proper translation of IRQ numbers, the same could be true for your
>>>> guests.
>>> Partial FDT, which is used to tell which device be passthroughed to
>>> guest, is using physical IRQ number (which I am just considering for
>>> simplicity to be 1:1 mapped to virtual IRQ number). So if we have the
>>> following configuration:
>>>     Physical (bare-metal) IRQ layout is sparse:
>>>       IRQ 5  → UART -> domU0
>>>       IRQ 23 → Ethernet -> domU1
>>>       IRQ 47 → PCIe -> domU0
>>>       IRQ 100 → Storage -> domU1
>>> (gaps everywhere, driven by hardware wiring)
>>>
>>> For such configuration we will have for each domain auth_irq_bmp[] which
>>> contains:
>>>    IRQ 5 and IRQ47 for domU0
>>> and
>>>    IRQ 23 and IRQ 100 for domU1
>>>
>>> And here vIRQ5 = pIRQ5, vIRQ47 = pIRQ47 and so on. auth_irq_bmp just
>>> transform xIRQ number to bit position which it will have in real APLIC
>>> register. Just as an example, lets take vIRQ5 and vIRQ47.
>>>
>>> As reading or writing register setie[k] reads or potentially modifies
>>> the enable bits for interrupt sources k × 32 through k × 32 + 31. For an
>>> implemented interrupt source i within that range, the enable bit for
>>> source i corresponds with register bit (i mod 32).
>>> So for:
>>>    - vIRQ5 == pIRQ5 we have to set bit 5 in setie[0]
>>>    - vIRQ47 == pIRQ47 we have to set bit 15 in setie[1]
>>>
>>> Probably it was not the best idea to declare auth_irq_bmp as it will
>>> look in h/w and maybe just 'bool auth_irq_bmp[1024]' would be more clearer.
>>>
>>> So irqs number are still stay "sparsed" in guest.
>> Well, twice (or more) as sparse in the example you give, compared to the
>> host.
> 
> Just to be sure that I fully understand your concern here.
> 
> The difference between xIRQ5 and xIRQ47 is 42 bits (if for 1 irq we are 
> using 1 bit) which leads to that we have somewhere allocated 48 bit 
> bitmap where only two bits will be set, all others will be zero.

Why 48-bit bitmap? As you inherit the property from the host, it'll be e.g.
1024 bits. Compared to the host, each guest will have yet fewer bits set in
there.

> Instead it would be better to have to do mapping: pIRQ5 -> vIRQ1, pIRQ47 
> ->vIRQ2, right?

Which specific mapping I don't care very much. There may also be conventions
to adhere to (on x86 for example there are).

> If yes, won't we still store somewhere this mapping? it seems like 
> having 'unsigned int auth_irq_bmp[1024]' is a good option where index 
> will be vIRQ number and 'unsigned int' will be pIRQ number. But at the 
> moment I think that we could go with 1:1 IRQ number mapping and then 
> have 'bool auth_irq_bmp[1024]' will be more then enough and will safe 
> some memory.

Well, if using 1:1 mapping was clearly identified as "for the time being",
then that might be acceptable (for the time being).

As to you (again) suggesting "bool auth_irq_bmp[1024]" - why would you use
an array of bool-s when a bitmap can do the same in 1/8th of the space?

Jan


From xen-devel-bounces@lists.xenproject.org Mon Apr 20 15:23:42 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 20 Apr 2026 15:23:42 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1286209.1567313 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wEqTI-0002nI-MC; Mon, 20 Apr 2026 15:23:36 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1286209.1567313; Mon, 20 Apr 2026 15:23: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 1wEqTI-0002nB-I0; Mon, 20 Apr 2026 15:23:36 +0000
Received: by outflank-mailman (input) for mailman id 1286209;
 Mon, 20 Apr 2026 15:23:36 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <bounce-md_30504962.69e644f5.v1-e475ba9a7f064d5c8fc1508f57e39563@bounce.vates.tech>)
 id 1wEqTH-0002n5-SD
 for xen-devel@lists.xenproject.org; Mon, 20 Apr 2026 15:23:36 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wEqTH-007yMB-7O
 for xen-devel@lists.xenproject.org; Mon, 20 Apr 2026 17:23:35 +0200
Received: from [10.42.69.9] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1) (envelope-from
 <bounce-md_30504962.69e644f5.v1-e475ba9a7f064d5c8fc1508f57e39563@bounce.vates.tech>)
 id 69e644e1-bab6-0a2a0a5309dd-0a2a4509e296-18
 for <xen-devel@lists.xenproject.org>; Mon, 20 Apr 2026 17:23:35 +0200
Received: from [198.2.187.30] (helo=mail187-30.suw11.mandrillapp.com)
 by tlsNG-bad1c0.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.1)
 (envelope-from
 <bounce-md_30504962.69e644f5.v1-e475ba9a7f064d5c8fc1508f57e39563@bounce.vates.tech>)
 id 69e644f5-2497-0a2a45090019-c602bb1e3ea3-3
 for <xen-devel@lists.xenproject.org>; Mon, 20 Apr 2026 17:23:34 +0200
Received: from pmta09.mandrill.prod.suw01.rsglab.com (localhost [127.0.0.1])
 by mail187-30.suw11.mandrillapp.com (Mailchimp) with ESMTP id
 4fzq513gLRzP0Jn38
 for <xen-devel@lists.xenproject.org>; Mon, 20 Apr 2026 15:23:33 +0000 (GMT)
Received: from [37.26.189.201] by mandrillapp.com id
 e475ba9a7f064d5c8fc1508f57e39563; Mon, 20 Apr 2026 15:23: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=mte1 header.d=mandrillapp.com header.i="@mandrillapp.com" header.h="From:Subject:Message-Id:To:Cc:References:In-Reply-To:Feedback-ID:Date:MIME-Version:Content-Type:Content-Transfer-Encoding"; dkim=pass header.s=mte1 header.d=vates.tech header.i="yann.sionneau@vates.tech" header.h="From:Subject:Message-Id:To:Cc:References:In-Reply-To:Feedback-ID:Date:MIME-Version:Content-Type:Content-Transfer-Encoding"
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=mandrillapp.com;
	s=mte1; t=1776698613; x=1776968613;
	bh=kV4yzsjM74GryFLO6SljU6Vf0ow1kzlEiGIXTjrRB0g=;
	h=From:Subject:Message-Id:To:Cc:References:In-Reply-To:Feedback-ID:
	 Date:MIME-Version:Content-Type:Content-Transfer-Encoding:CC:Date:
	 Subject:From;
	b=DmTwpQ/n2A8Y56w1O50Q7ku7QY8CkbYePus1hR3X9zLhIrn8lJ+UZoPrNPBf7SV2h
	 /R/abtyzVNMLxLikz2ME0VQgmDVxt2hLIfsICDChPfcRIvT/ndu+ESWeg02F005MPY
	 b+HIvbda2b808Qq+hp1tKom5J8PRDthkn/wNruNKS9uvzZMW70JFfjMYEKixhBCHp4
	 Wnc7wZwtIS2RuTJ+gxG0vifN815UUCTjnsASoD1faRuljAUYBkrQW6lNaPDCCuFTpy
	 U5M8IqTaRz2CJd+g2/BQ1GVZ4aq7ivXrx/14vO3B3GfsvbQaI9og3nyyvM+eRUwmVM
	 jr7/yoXmIPjAQ==
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=vates.tech; s=mte1;
	t=1776698613; x=1776959113; i=yann.sionneau@vates.tech;
	bh=kV4yzsjM74GryFLO6SljU6Vf0ow1kzlEiGIXTjrRB0g=;
	h=From:Subject:Message-Id:To:Cc:References:In-Reply-To:Feedback-ID:
	 Date:MIME-Version:Content-Type:Content-Transfer-Encoding:CC:Date:
	 Subject:From;
	b=EGX8373pITeAtc5uWisrGxDmYto5IT9qWsWZKScOHyxQ/juvrcvslvQm8mAnc2wDA
	 b0ntm1R7Emt5Rx5MwIDTg4qtpwF6MYk662/Rrp8Sum+LxjvruGYnsERWLaxhdUKvPc
	 AAo1aHThYaPnTfTXM801omoVeZuDobT87WnC9+HhHegk/yeqXE3NqTIynlVZXm3kJA
	 ETtacMx3QYvJsnKH8WWu5wmcB6l93yNbByRPuqrR8Snxu1zi+fEu2sozfUcNeh7Vic
	 wxYbjfcRClpYclsJ/KIn+zrt1m3wMKQ5hchRhoy2vhh4/4RRD0U9Sc79lAXqvL6fpb
	 30jjCSvV/eVUA==
From: "Yann Sionneau" <yann.sionneau@vates.tech>
Subject: =?utf-8?Q?Re:=20[PATCH=201/8]=20xen/arm:=20Implement=20p2m=5Fset=5Fentry=20for=20MPU=20systems?=
X-Bm-Disclaimer: Yes
X-Bm-Milter-Handled: 4ffbd6c1-ee69-4e1b-aabd-f977039bd3e2
X-Bm-Transport-Timestamp: 1776698611667
Message-Id: <758d9182-aa50-4c60-9834-bf8136c4ef3d@vates.tech>
To: "Luca Fancellu" <luca.fancellu@arm.com>, xen-devel@lists.xenproject.org
Cc: "Penny Zheng" <Penny.Zheng@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>, "Wei Chen" <wei.chen@arm.com>, "Hari Limaye" <hari.limaye@arm.com>, "Harry Ramsey" <harry.ramsey@arm.com>
References: <20260420142524.1804073-1-luca.fancellu@arm.com> <20260420142524.1804073-2-luca.fancellu@arm.com>
In-Reply-To: <20260420142524.1804073-2-luca.fancellu@arm.com>
X-Native-Encoded: 1
X-Report-Abuse: =?UTF-8?Q?Please=20forward=20a=20copy=20of=20this=20message,=20including=20all=20headers,=20to=20abuse@mandrill.com.=20You=20can=20also=20report=20abuse=20here:=20https://mandrillapp.com/contact/abuse=3Fid=3D30504962.e475ba9a7f064d5c8fc1508f57e39563?=
X-Mandrill-User: md_30504962
Feedback-ID: 30504962:30504962.20260420:md
Date: Mon, 20 Apr 2026 15:23:33 +0000
MIME-Version: 1.0
Content-Type: text/plain; charset=utf-8
Content-Transfer-Encoding: 7bit
X-purgate-ID: tlsNG-bad1c0/1776698614-42971A53-00DBC4D8/0/0
X-purgate-type: clean
X-purgate-size: 444

On 4/20/26 16:27, Luca Fancellu wrote:
> From: Penny Zheng <Penny.Zheng@arm.com>
> 
> Implement the function `p2m_set_entry`, which is responsible for
> inserting a new entry into the p2m tables, for MPU systems.
> 
Hello Luca,

It seems this patch does not apply on master if I'm not mistaken.
Regards,

-- 


--
Yann Sionneau | Vates XCP-ng Developer

XCP-ng & Xen Orchestra - Vates solutions

web: https://vates.tech




From xen-devel-bounces@lists.xenproject.org Mon Apr 20 15:23:49 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 20 Apr 2026 15:23:49 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1286211.1567321 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wEqTV-000358-1C; Mon, 20 Apr 2026 15:23:49 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1286211.1567321; Mon, 20 Apr 2026 15:23: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 1wEqTU-00034z-T4; Mon, 20 Apr 2026 15:23:48 +0000
Received: by outflank-mailman (input) for mailman id 1286211;
 Mon, 20 Apr 2026 15:23:47 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <Luca.Fancellu@arm.com>) id 1wEqTT-00034F-AW
 for xen-devel@lists.xenproject.org; Mon, 20 Apr 2026 15:23:47 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wEqTS-000dZD-NF
 for xen-devel@lists.xenproject.org; Mon, 20 Apr 2026 17:23:46 +0200
Received: from [10.42.69.4] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <Luca.Fancellu@arm.com>)
 id 69e644f3-5cb7-0a2a0a5109dd-0a2a4504cb72-32
 for <xen-devel@lists.xenproject.org>; Mon, 20 Apr 2026 17:23:46 +0200
Received: from [40.107.162.21]
 (helo=PA4PR04CU001.outbound.protection.outlook.com)
 by tlsNG-ebf023.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.1)
 (envelope-from <Luca.Fancellu@arm.com>)
 id 69e64501-1dec-0a2a45040019-286ba215b3ba-3
 for <xen-devel@lists.xenproject.org>; Mon, 20 Apr 2026 17:23:45 +0200
Received: from AS4P190CA0036.EURP190.PROD.OUTLOOK.COM (2603:10a6:20b:5d1::7)
 by AS2PR08MB9548.eurprd08.prod.outlook.com (2603:10a6:20b:60b::13) with
 Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9818.32; Mon, 20 Apr
 2026 15:23:41 +0000
Received: from AMS1EPF00000094.eurprd05.prod.outlook.com
 (2603:10a6:20b:5d1:cafe::68) by AS4P190CA0036.outlook.office365.com
 (2603:10a6:20b:5d1::7) with Microsoft SMTP Server (version=TLS1_3,
 cipher=TLS_AES_256_GCM_SHA384) id 15.20.9791.48 via Frontend Transport; Mon,
 20 Apr 2026 15:23:41 +0000
Received: from outbound-uk1.az.dlp.m.darktrace.com (4.158.2.129) by
 AMS1EPF00000094.mail.protection.outlook.com (10.167.242.91) with Microsoft
 SMTP Server (version=TLS1_3, cipher=TLS_AES_256_GCM_SHA384) id 15.20.9791.48
 via Frontend Transport; Mon, 20 Apr 2026 15:23:41 +0000
Received: from DU2PR08MB7272.eurprd08.prod.outlook.com (2603:10a6:10:2d7::16)
 by AS4PR08MB7855.eurprd08.prod.outlook.com (2603:10a6:20b:51e::18)
 with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9818.25; Mon, 20 Apr
 2026 15:22:38 +0000
Received: from DU2PR08MB7272.eurprd08.prod.outlook.com
 ([fe80::5d34:206f:373:a323]) by DU2PR08MB7272.eurprd08.prod.outlook.com
 ([fe80::5d34:206f:373:a323%6]) with mapi id 15.20.9818.032; Mon, 20 Apr 2026
 15:22: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=selector1 header.d=arm.com header.i="@arm.com" header.h="From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck"; dkim=pass header.s=selector1 header.d=arm.com header.i="@arm.com" header.h="From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck"
ARC-Seal: i=2; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=pass;
 b=nl0Wp89vzEFJkBYYGwZl4LGqa82g8tILUWv4gra5qwzW/Jv6zwBAwcPpWuuGCbzdaSUyQWJPY7ovor5vfCkaSxXNTorvd/rHnqvprrqitjHcBpMjAIy/KpKtSgURH39D1u72svZZAs1awkJ38WWHkO1vLCM79pIGJNiYXRlOtQksqei4/v69tzQb9UvN98c+tJphNsstYF3nXMx0ygr72lPU2dHg4n2bZ0fyxq0WNLUSuoV7GiA/03amIMAlg/XGbZSeSMpIU2oxhXd7tgvgK9zrkuCdzJo7RsT/IdTuKOi29zRWLDw9WNfZeq/rejLNwgbsoYqSFVOjamH13EYksQ==
ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com;
 s=arcselector10001;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1;
 bh=J7X01osOk7vgacygI5pbFYogajfSTTELKFBntgHZvOA=;
 b=XiGzHPaMVVEqfmeMv3snAQBTS0U6A5j62xPsDgJLLxjoQztuEGQ3qb8KTt2vNy9uLsPgP7r8PohwOD6LC3hL/W323K5Pz4Drzt35hmKsDrFSeB63eLFVk2D2XsyT85O9By86oE/WxfaX71jkQOwRi0y0iETxdOm7iQISBNuzMO4OUPGc8ore7d6HlyY8VHkRdItBeLuJFR5DeItkrT9ZRGKk2PhJTJLWoCWg5Ds/6sEwD+JvyLX1gXPNlZ4Uw7x0V0zj6b9ROdLJ6m4FS2tJN1rVE/V3laAZd/p1jrw1EME+uPaEKUeEalUW0kNMFXuM5xBmJWc9eecPA8ubtdP9cg==
ARC-Authentication-Results: i=2; mx.microsoft.com 1; spf=pass (sender ip is
 4.158.2.129) smtp.rcpttodomain=gmail.com smtp.mailfrom=arm.com; dmarc=pass
 (p=none sp=none pct=100) action=none header.from=arm.com; dkim=pass
 (signature was verified) header.d=arm.com; arc=pass (0 oda=1 ltdi=1
 spf=[1,1,smtp.mailfrom=arm.com] dkim=[1,1,header.d=arm.com]
 dmarc=[1,1,header.from=arm.com])
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=arm.com; s=selector1;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck;
 bh=J7X01osOk7vgacygI5pbFYogajfSTTELKFBntgHZvOA=;
 b=U7zYKaBZJZBTGwXwtgbbI7TyyGKdAHVNPZYkhlgsBwbRWOzZKKkxtzK/I9E43w3As7LHZRnw5qBKlduNDuCDa4Og0hg84C2Zd9/2ttNO6Nmp1Ox7zsfoDNRdW7pz6YjMeZjlhnvc5cF5Y6ilG6xosRjf0rgUN1GJ+WW5LTG8XyY=
X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 4.158.2.129)
 smtp.mailfrom=arm.com; dkim=pass (signature was verified)
 header.d=arm.com;dmarc=pass action=none header.from=arm.com;
Received-SPF: Pass (protection.outlook.com: domain of arm.com designates
 4.158.2.129 as permitted sender) receiver=protection.outlook.com;
 client-ip=4.158.2.129; helo=outbound-uk1.az.dlp.m.darktrace.com; pr=C
ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none;
 b=xeRmUS9TbOlGyVR9eE0YuCnW2zbEV/ADZsSpTKNOpmXQqO5pA8wFSWBal+uFSYG/vJiD4y9RWsJitLQ1s//5A3Ud2iXrgRjc76EkTlQBzYSJGy+KrBox67W+f3gNpbFUJ5ofpBo1R8I2TGKTFgYyeNlkGiX5mh3mqI0ybmLG2xDpWhK7hlySRSzDThxaESchTR4d5FtfzgmUdnE8xdQYkzEfOmQU0O4jCgYOpaRjMBUS7d9PQZTShBxlKkZ5Had8cN2aV6AN1/Qk9Ew7OBXiOmH/a0ZCTgBV6yutIVA6wkPi1hYAUNzxPP/m7z5FD9Ej1D39qNMvX1ksOyfFCpCLbA==
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com;
 s=arcselector10001;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1;
 bh=J7X01osOk7vgacygI5pbFYogajfSTTELKFBntgHZvOA=;
 b=ZDiyCYZ4v7yOjqIFXn96fmKd0AvJ/VA0j9xV+v2WxexJ+smn2xk9ffvfiKeEnTiH0c1G08xQ2g8IBViQpdS5u0CEcDw/fTXaRzxv7/QwxK6kZf7CzB5FvLX6EgcBTi9nPklzCQ0wf4SNw9dyNd1MbZRq1OEZbaSGHHyHJOfrbVeNEmXY9vN3pljWX5wQti+1NqAlTkvp/tP5mC3MzL6jYbDe59kUZefYwhKrE5QTPvTx4QZ9td4jMLfwFQL8Q7afe/UoV7cxxJc5+Swn9FY/xws2bGh8vDvhwvO4drMVjUREeExw1+OXnlFUIgfMR1xXE/1gq2DO+B1EHlvMHKzfhQ==
ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass
 smtp.mailfrom=arm.com; dmarc=pass action=none header.from=arm.com; dkim=pass
 header.d=arm.com; arc=none
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=arm.com; s=selector1;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck;
 bh=J7X01osOk7vgacygI5pbFYogajfSTTELKFBntgHZvOA=;
 b=U7zYKaBZJZBTGwXwtgbbI7TyyGKdAHVNPZYkhlgsBwbRWOzZKKkxtzK/I9E43w3As7LHZRnw5qBKlduNDuCDa4Og0hg84C2Zd9/2ttNO6Nmp1Ox7zsfoDNRdW7pz6YjMeZjlhnvc5cF5Y6ilG6xosRjf0rgUN1GJ+WW5LTG8XyY=
From: Luca Fancellu <Luca.Fancellu@arm.com>
To: Mykola Kvach <xakep.amatop@gmail.com>
CC: "xen-devel@lists.xenproject.org" <xen-devel@lists.xenproject.org>, 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>, Julien Grall <jgrall@amazon.com>
Subject: Re: [PATCH v8 01/13] xen/arm: Add suspend and resume timer helpers
Thread-Topic: [PATCH v8 01/13] xen/arm: Add suspend and resume timer helpers
Thread-Index: AQHc0NmFet8mB9OE3kGEFwtr0PnQig==
Date: Mon, 20 Apr 2026 15:22:38 +0000
Message-ID: <88040551-4952-41DF-8F34-13C9D15C368E@arm.com>
References: <cover.1775125380.git.mykola_kvach@epam.com>
 <9b5e454f55d20d3e81771da53ae06fb511bd198e.1775125380.git.mykola_kvach@epam.com>
In-Reply-To:
 <9b5e454f55d20d3e81771da53ae06fb511bd198e.1775125380.git.mykola_kvach@epam.com>
Accept-Language: en-GB, en-US
Content-Language: en-US
X-MS-Has-Attach:
X-MS-TNEF-Correlator:
x-mailer: Apple Mail (2.3826.700.81.1.6)
Authentication-Results-Original: dkim=none (message not signed)
 header.d=none;dmarc=none action=none header.from=arm.com;
x-ms-traffictypediagnostic:
	DU2PR08MB7272:EE_|AS4PR08MB7855:EE_|AMS1EPF00000094:EE_|AS2PR08MB9548:EE_
X-MS-Office365-Filtering-Correlation-Id: a7951f75-516c-48c1-3896-08de9ef0cda9
x-checkrecipientrouted: true
nodisclaimer: true
X-MS-Exchange-SenderADCheck: 1
X-MS-Exchange-AntiSpam-Relay: 0
X-Microsoft-Antispam-Untrusted:
 BCL:0;ARA:13230040|376014|1800799024|366016|38070700021|18002099003|56012099003|22082099003;
X-Microsoft-Antispam-Message-Info-Original:
 7Z253nrP9FKVdg5zYp7eQX6BP0JCE0fN/1t1R9uIY+sUUGPTgfoj7TC1stbVTEDyaMeQa/02l1YZQPp50vLf9rouKul74Cy5usXxHczoLignRSbz3x8qGBRvBxdt+pZClVJJqFd8DXnqhB9sqrS+9OMUFBQturyfHQrwUs9dOeLRD0mbrWdsCwCPpVTJgi+GA/iJM4F5izvt6e+sMPfQOeZ/thYnFBo8HDKMGHnBI44PNKaPPde26E+WwhYcI2EvZ6ZE9wyMhF3n+4bDUuhXhqPdbNqVooRA4oBIfjGE8JjW13oLRs7d3gEwqojK9hf1cBRjKT7FK2wGswKiqivOZod3ARZ5Fag9liiNA6z+K//h41VjJbNwXt+vPb//hWC/KiY7sgX/glBXk98uwEdQooUfy0nJkXftOo9CnkbN8FB6tVW426rTWajk4niI/vbQuWCOBq6cR3PEnjgEQ1pzdvWc1JKrTp97c8WPVQS6zIY2yma1g0YUCZk/h28/BmaAAdFGTk8DJmYFpbeNin/JBMo7hBsEhhm+pwP41/LGStC1zNbxjh7H8LfCfNNc/0irv8Q8DINiqfYrNl3eRX3GzMwQ8pcghojbYgrykMRxaUOdsmCiVKotHMTM0VW4KjvLFVSFNPlioK3mM+ic7rEHUnahWvKT/ynkgICMqxIKmjZekoIO/OtdAIUe09Q+WsGcUj+IF8q0M60NO86bjuZGdO7gE+sP1zrcfhtJxBwaiMMP1ecAU1eUqbn7wJgqmc0oYkus9u0pjHU0YAyzIrQtdTpLWe/wA+4Gnp8BRDBMxA0=
X-Forefront-Antispam-Report-Untrusted:
 CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:DU2PR08MB7272.eurprd08.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(376014)(1800799024)(366016)(38070700021)(18002099003)(56012099003)(22082099003);DIR:OUT;SFP:1101;
Content-Type: text/plain; charset="us-ascii"
Content-ID: <4BA5FE54FB71684983E4FC9E9FEF1E30@eurprd08.prod.outlook.com>
Content-Transfer-Encoding: quoted-printable
MIME-Version: 1.0
X-Exchange-RoutingPolicyChecked:
 jwLi+iTRIrcoCxuCkiUx4+pMlW+TSYFwal1cWI5TReqTzPN8ZcPBG0eLDE+wF0iBC4YWA8tTObdOhehJbasA4vb6DN6+V4SkQdTJfLNgAsnnIWhBuM2gRMKy7hl9Vie1HLJ1q2sElcJKOncbjkbBfrKZVsRjrPFZWiL3Ag63sVLfQY0l0KWz1X2DLeIG3nZgBSoBHXds8nPWWQqJRBUQFU6qb1Xx/ToNNa3tmrbNmrWscSwNS/X70cnxUygtgGMJ8k/VbNkUO3zGDcSiOwEEfvnOOTe7s2O07dzw4IY3CZfj6Fn2/iouAz81jTgjJksy2z5GFvnK2rGBv3nmIwdo8A==
X-MS-Exchange-Transport-CrossTenantHeadersStamped: AS4PR08MB7855
X-EOPAttributedMessage: 0
X-MS-Exchange-Transport-CrossTenantHeadersStripped:
 AMS1EPF00000094.eurprd05.prod.outlook.com
X-MS-PublicTrafficType: Email
X-MS-Office365-Filtering-Correlation-Id-Prvs:
	fc8908fc-65b8-4f10-79d8-08de9ef0a80e
X-Microsoft-Antispam:
	BCL:0;ARA:13230040|1800799024|14060799003|82310400026|35042699022|376014|36860700016|56012099003|22082099003|18002099003;
X-Microsoft-Antispam-Message-Info:
	OqQzPHe0EU/I525PhwvRkwnPfP3pvJ9DSLFsXr5oNMAJJlHi67UMIBIx8KiEXqksZpySGsiDZnlFOge+eoZ8fSHqUeE3JmPTgI9BA+2KbzQ1NGc0mq8PU+aEzfvGQTxGqA4/ANwHrjuJty8tmIP2GR/lUsyXZSrjP6PFi7m/BJvKaqG2Z3x7Lx30lqz7dmK5CU+wYw5ElmRtyTqTt6ZUGbZnZDIjAAylSSSMKTH5P88MS9ZZJbX+wtp8T12ItFr2C6IgjzF+EpAvTiKjYx5pBPkb+b5K+hJDSnIP9n1wkuHe5cm3IXkNc8qyKbeL2JVxFe6rCKf8/+72ibgbFHlWzKWYafPMdgK8N8kY7nXoTu6Hwlra6SSsdaQvq+c3pm05/0Om0tWdiUA3thEd7qXMAo9cuaGrsrmo9lCXMyh2JjgAX+AZhJ0oumk7SRMyv8GHEc+AIgceBiqEj9Gq2IcJ95JU+NJ1gnA/nG8DHpfZhI1dOsEmxHzlJ6c6i5z6UFa9YNDlYxuT9voU9XmeymhHaFab75dHM2i2JI4c9c5oaAlyrqUGKn+RNRNYaecwHgVfuDi6xGM0Ir4/yd0BkSf0gftjpzZpawjYYpY6r93DGq0QX5TG2+9qOG/43H37D9DG7rb4uI/IipE+s3Xlyi0UX1bYTBONWvtpaBLioG69ltlYaa+2YzCy69yyFbWntWREs3ubtteJus30WTzzLPtXrY3yLj/p/k43XeKxYEuXgCtOcnRfQ/AbbVshawyq3P7lv/cmpUc2oj9X6yniv/3IZQ==
X-Forefront-Antispam-Report:
	CIP:4.158.2.129;CTRY:GB;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:outbound-uk1.az.dlp.m.darktrace.com;PTR:InfoDomainNonexistent;CAT:NONE;SFS:(13230040)(1800799024)(14060799003)(82310400026)(35042699022)(376014)(36860700016)(56012099003)(22082099003)(18002099003);DIR:OUT;SFP:1101;
X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1
X-MS-Exchange-AntiSpam-MessageData-0:
	viS8hH7JOx8kQG6k67LkzxPK5J3QVzDw7sCOt7FULkez3z1/ygcpn4iV/Evozct7fvWU8BxlTmROkRq5jufnxOBw3mzuOyoxJEK8DWCrFQLW6nbfE+VFnDfu5Jy5RHH7sERbO+RmaEA7Vj3/OgtVgRT3V+TOkHwSkYFezkjoUmBp6HeDizcr+RMXHVEv0Qkvp+EZk3x16pYhaDIjIOJ2RA2MuvEJk004DvUmBEMWRjs2ZLOl/P4qmkGqe0nG/wfVQiAVbGtIfywrF6BCLhSePQyHQWu9daJruWJRzp1EGePxypaKLBnWXVr57Wj9tLrEYs60AKzKOc2w6Q+q6u0NTusRZfKmgTW/u2D6J5rcrCZgmaAS3uj/X2ohsHxvZLXTxmbLgFwxbY7rvJuAhUhXFTDy/cgMk07KtL7caP8AfLCS7eI0e8mKqeV0gg4v91b1
X-OriginatorOrg: arm.com
X-MS-Exchange-CrossTenant-OriginalArrivalTime: 20 Apr 2026 15:23:41.2021
 (UTC)
X-MS-Exchange-CrossTenant-Network-Message-Id: a7951f75-516c-48c1-3896-08de9ef0cda9
X-MS-Exchange-CrossTenant-Id: f34e5979-57d9-4aaa-ad4d-b122a662184d
X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=f34e5979-57d9-4aaa-ad4d-b122a662184d;Ip=[4.158.2.129];Helo=[outbound-uk1.az.dlp.m.darktrace.com]
X-MS-Exchange-CrossTenant-AuthSource:
	AMS1EPF00000094.eurprd05.prod.outlook.com
X-MS-Exchange-CrossTenant-AuthAs: Anonymous
X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem
X-MS-Exchange-Transport-CrossTenantHeadersStamped: AS2PR08MB9548
X-purgate-ID: tlsNG-ebf023/1776698625-4BB6B3FF-45C80D12/0/0
X-purgate-type: clean
X-purgate-size: 1286

Hi Mykola,

> On 2 Apr 2026, at 11:45, Mykola Kvach <xakep.amatop@gmail.com> wrote:
>=20
> From: Mirela Simonovic <mirela.simonovic@aggios.com>
>=20
> Timer interrupts must be disabled while the system is suspended to preven=
t
> spurious wake-ups. Suspending timers in Xen consists of disabling the
> physical timer and the hypervisor timer on the current CPU. The virtual
> timer does not need explicit handling here, as it is already disabled on
> vCPU context switch and its state is restored per-vCPU on the next contex=
t
> restore.
>=20
> Resuming consists of raising TIMER_SOFTIRQ, which prompts the generic
> timer code to reprogram the hypervisor timer with the correct timeout.
>=20
> Xen does not use or expose the physical timer, so it remains disabled
> across suspend/resume.
>=20
> Introduce a new helper, disable_phys_hyp_timers(), to encapsulate disabli=
ng
> of the physical and hypervisor timers.
>=20
> Signed-off-by: Mirela Simonovic <mirela.simonovic@aggios.com>
> Signed-off-by: Saeed Nowshadi <saeed.nowshadi@xilinx.com>
> Signed-off-by: Mykola Kvach <mykola_kvach@epam.com>
> Acked-by: Julien Grall <jgrall@amazon.com>
> ---
>=20

Changes looks ok to me

Reviewed-by: Luca Fancellu <luca.fancellu@arm.com>

Cheers,
Luca



From xen-devel-bounces@lists.xenproject.org Mon Apr 20 15:27:34 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 20 Apr 2026 15:27:34 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1286227.1567331 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wEqX2-0003tI-Fh; Mon, 20 Apr 2026 15:27:28 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1286227.1567331; Mon, 20 Apr 2026 15:27: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 1wEqX2-0003tA-Bk; Mon, 20 Apr 2026 15:27:28 +0000
Received: by outflank-mailman (input) for mailman id 1286227;
 Mon, 20 Apr 2026 15:27:27 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <jbeulich@suse.com>) id 1wEqX1-0003t4-6m
 for xen-devel@lists.xenproject.org; Mon, 20 Apr 2026 15:27:27 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wEqX0-000eNK-G4
 for xen-devel@lists.xenproject.org; Mon, 20 Apr 2026 17:27:26 +0200
Received: from [10.42.69.6] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <jbeulich@suse.com>)
 id 69e645d0-bab6-0a2a0a5309dd-0a2a4506a18c-12
 for <xen-devel@lists.xenproject.org>; Mon, 20 Apr 2026 17:27:26 +0200
Received: from [209.85.128.52] (helo=mail-wm1-f52.google.com)
 by tlsNG-16d1c6.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.1)
 (envelope-from <jbeulich@suse.com>)
 id 69e645de-7371-0a2a45060019-d1558034ed53-3
 for <xen-devel@lists.xenproject.org>; Mon, 20 Apr 2026 17:27:26 +0200
Received: by mail-wm1-f52.google.com with SMTP id
 5b1f17b1804b1-4891e86fabeso12810805e9.1
 for <xen-devel@lists.xenproject.org>; Mon, 20 Apr 2026 08:27:26 -0700 (PDT)
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-488fb75ab25sm93382755e9.11.2026.04.20.08.27.24
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Mon, 20 Apr 2026 08:27:24 -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=google header.d=suse.com header.i="@suse.com" header.h="Content-Transfer-Encoding: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=1776698846; x=1777303646; darn=lists.xenproject.org;
        h=content-transfer-encoding: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;
        bh=Qu0IAZu3imPxO7D2SONGZN+hcdY2ISFg0XgvbiJ22Lo=;
        b=fV28mN1+PIm/eCNQhku4Dq3nhkIDeI0A6f2bLI8+E2qrl70fpax5L+DtDmQaTUxYB1
         wQv4YTimoj0R+yBMXvlXsCNisJgPUwpxjCBr22zHUcZuyb5FxVGn0yoElAy1O6n/Opb0
         pC43tezyXXVmtO4gdrK2+UZds5e8qeF87FUbNvD2gZ+b6W0wyZSsOF+7uayJsc7dCkvi
         Fr8iYphWT1Yr4GOFA/gOX5zDOeVc9hLDpQt8gY6KmcKVnb76YA3GriOjIoDEfS+dNg2Z
         1FCL/Uz7OlP8TBa0UTe808i8psRT7aljDECa4mhwRhudpLe0l2ebzu3X/DiBYoxVt2Ik
         wbaA==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20251104; t=1776698846; x=1777303646;
        h=content-transfer-encoding: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;
        bh=Qu0IAZu3imPxO7D2SONGZN+hcdY2ISFg0XgvbiJ22Lo=;
        b=V01J5nRdOvSTYpjsTmDtRX2JvUTP+7Z3yXI+YCPHNiJcQTqKSSd//9B++wgvtjBMhX
         /i0J9DgutqgLI3VjtCpF0BnRV4wvohLQCrK3eS2AnsKjWd/EPcdWyiO7h9qQK0NouoJ/
         w3f6Jp/JoC9gdQxBVphQq++ub3Ggyst6Sbg3+JqqwLXEozYpXAVupqpA/dlSAgykcbLm
         +3r26+PSTuicyrM4gtdYoCfpEXMRv8usEiW36LS3W6SjILDcbHsS0iP3+906z/eUHEfw
         jsveDCQDziu6SzuLpLE3xDASbuECkSBi64W3vPPfD6rEAY7GJWjB5zO19a2KKStSbNz6
         aSuw==
X-Forwarded-Encrypted: i=1; AFNElJ/ja//HVNWdPpZ0UEkuqMDL2RPj8yHCgZ8TnqST5tt43g/rkCI7Zi9MdpgUFtmnFrAdsjQ3wnSbqWQ=@lists.xenproject.org
X-Gm-Message-State: AOJu0YyXix7qIeLXy8Wv5ELJGwN7s1WYX9WMLXZN7bCUWhTELDzYVCuk
	M8oycmBs6vHJLy2lEGP2YsjvuYyc/WNYD/FzM0uuIRU1NxubZ95QP3I1e6+KrpE2Qw==
X-Gm-Gg: AeBDieuiHUr8S4bG8QIzo+/hgbLH25sG0ATNV1Ks+oDSPuAUJB4bQL03HcYUJqLcRWv
	D4q+09j6rAqX0Msg2wJ0AiSmdheBKgtEx8Nwfog+q1zKxAqBaq1BH1i39+ADGqHgnpslejNjyE0
	aC1XkC/tabFW3dQIDwGeVYxeSuDemxf4h19QU0c38fZtZW68fYsVLPX1h83LaU1XE36D5ui5ss2
	2DQ3TK8H37RQeLZefdDibapn9xV+CGrnZuB+aT8uw8Mi2xZHtTG/EVDJqTFzWUgo4pyMO2VJDEv
	ygRjrVBp8uStwX6L0aY3/gVJY3XlXbchv32gYNSzyvE+vHRm2mzAqVi9rg0B6vwsbCSB6Yde7fj
	jr8a+MbG7ymAP3ObHfqoQlKojJig8Pd4Co8N6x6I9CRjKK9sH6tWWdJPWRCF76Hx3mhFLnwtNlv
	NDI/qFODCOGiuen4T+45alFA6hJxeeaKraZCseAe7vB9OoGSNq7ZGdxPzNxV3I9VfrNE3FiZX3S
	funFBfoh8TxpL1686Z5EeNzLA==
X-Received: by 2002:a05:600c:444a:b0:487:1520:d107 with SMTP id 5b1f17b1804b1-488fb793580mr180065915e9.31.1776698845648;
        Mon, 20 Apr 2026 08:27:25 -0700 (PDT)
Message-ID: <d33708ed-f364-4567-a4d7-117e820f936a@suse.com>
Date: Mon, 20 Apr 2026 17:27:26 +0200
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH v1 19/27] xen/riscv: emulate guest writes to virtual APLIC
 MMIO
To: Oleksii Kurochko <oleksii.kurochko@gmail.com>
Cc: Romain Caritey <Romain.Caritey@microchip.com>,
 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.pau@citrix.com>,
 Stefano Stabellini <sstabellini@kernel.org>, xen-devel@lists.xenproject.org
References: <cover.1773157782.git.oleksii.kurochko@gmail.com>
 <e29eace5006929e61da347814b9759896d179e28.1773157782.git.oleksii.kurochko@gmail.com>
 <2bff40f5-2eef-4e72-8191-b3442607e0e4@suse.com>
 <76ea5954-89cd-47a4-872a-239bbc08b785@gmail.com>
 <910f0720-1e83-4b0d-a1bd-09799d6f8264@suse.com>
 <276c68cb-51c0-4775-8b70-3af80d0d0f27@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: <276c68cb-51c0-4775-8b70-3af80d0d0f27@gmail.com>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 7bit
X-purgate-ID: tlsNG-16d1c6/1776698846-51D6AD75-A2455228/0/0
X-purgate-type: clean
X-purgate-size: 6505

On 20.04.2026 17:02, Oleksii Kurochko wrote:
> On 4/16/26 3:19 PM, Jan Beulich wrote:
>> On 14.04.2026 18:04, Oleksii Kurochko wrote:
>>> On 4/2/26 4:18 PM, Jan Beulich wrote:
>>>> On 10.03.2026 18:08, Oleksii Kurochko wrote:
>>>>> +static int cf_check vaplic_emulate_store(const struct vcpu *vcpu,
>>>>> +                                         unsigned long addr, uint32_t value)
>>>>> +{
>>>>> +    struct vaplic *vaplic = to_vaplic(vcpu->domain->arch.vintc);
>>>>> +    struct aplic_priv *priv = vaplic->base.info->private;
>>>>> +    uint32_t offset = addr & APLIC_REG_OFFSET_MASK;
>>>>
>>>> See ./CODING_STYLE as to uses of fixed-width types.
>>>>
>>>>> +    unsigned long aplic_addr = addr - priv->paddr_start;
>>>>> +    const uint32_t *auth_irq_bmp = vcpu->domain->arch.vintc->private;
>>>>> +
>>>>> +    switch ( offset )
>>>>> +    {
>>>>> +    case APLIC_SETIP_BASE ... APLIC_SETIP_LAST:
>>>>
>>>> And (taking this just as example) any misaligned accesses falling in this range
>>>> are fine?
>>>
>>> Do you mean something like 0x1C02 instead of 0x1C00 or 0x1C04?
>>
>> Yes.
>>
>>>>> +        /*
>>>>> +         * As sourcecfg register starts from 1:
>>>>> +         *   0x0000 domaincfg
>>>>> +         *   0x0004 sourcecfg[1]
>>>>> +         *   0x0008 sourcecfg[2]
>>>>> +         *    ...
>>>>> +         *   0x0FFC sourcecfg[1023]
>>>>> +         * It is necessary to calculate an interrupt number by substracting
>>>>
>>>> Nit: subtracting
>>>>
>>>>> +         * of APLIC_DOMAINCFG instead of APLIC_SOURCECFG_BASE.
>>>>> +         */
>>>>> +        if ( !AUTH_IRQ_BIT(regval_to_irqn(offset - APLIC_DOMAINCFG)) )
>>>>> +            /* interrupt not enabled, ignore it */
>>>>
>>>> Throughout the series: Please adhere to ./CODING_STYLE.
>>>>
>>>>> +            return 0;
>>>>> +
>>>>> +        break;
>>>>
>>>> And any value is okay to write?
>>>
>>> No, it should be in a range
>>> [APLIC_SOURCECFG_SM_INACTIVE,APLIC_SOURCECFG_SM_LEVEL_LOW].
>>>
>>> I will add the check before break:
>>>           if ( value > APLIC_SOURCECFG_SM_LEVEL_LOW )
>>>           {
>>>               gdprintk(XENLOG_WARNING,
>>>                        "value(%u) is incorrect for sourcecfg register\n",
>>> value);
>>>               value = APLIC_SOURCECFG_SM_INACTIVE;
>>>           }
>>
>> And why would writing APLIC_SOURCECFG_SM_INACTIVE be any better, when
>> that's not what the guest wanted? Simply ignore such writes, unless the
>> spec mandates specific behavior for out-of-range avlues?
> 
> The spec doesn't mandate specific behavior for out-of-range values but I 
> thought it would be better to make irq inactive instead of just ignoring 
> so it won't affect somehow potential occurrence of this interrupt.

I'd find it concerning if we did anything not mandated by the spec. Just
doing nothing is imo still the best course of action.

>>>>> +        if ( !AUTH_IRQ_BIT(regval_to_irqn(offset - APLIC_GENMSI)) )
>>>>> +            /* interrupt not enabled, ignore it */
>>>>> +            return 0;
>>>>> +
>>>>> +        for ( int i = 0; i < vcpu->domain->max_vcpus; i++ )
>>>>
>>>> unsigned int
>>>>
>>>>> +        {
>>>>> +            struct vcpu *v = vcpu->domain->vcpu[i];
>>>>> +
>>>>> +            if ( v->vcpu_id == (value >> APLIC_TARGET_HART_IDX_SHIFT) )
>>>>> +            {
>>>>> +                target_vcpu = v;
>>>>> +                break;
>>>>> +            }
>>>>> +        }
>>>>> +
>>>>> +        ASSERT(target_vcpu);
>>>>
>>>> What guarantees the pointer to be non-NULL? The incoming value can be
>>>> arbitrary, afaict.
>>>
>>> I didn't understand your point. It is just checking that target_vcpu has
>>> been found. If after for() loop the value of target_vcpu is still NULL
>>> then something wrong in Xen.
>>
>> If that's true, then the assertion is fine to have. I can't help the
>> impression though that a guest could pick a value such that you can't
>> possibly find the target vCPU. Asserting on guest controlled input is
>> not okay, as was said several times before.
> 
> I will then do domain_crash() that as a value is incorrect in case if 
> target_vcpu is NULL, I missed that guest could put wrong value.

Would domain_crash() come close to anything real hardware would do? I
doubt it. Doing nothing (besides perhaps logging a debug message) may
once again the best we can do.

>>>>> +        if ( !(vaplic->regs.domaincfg & APLIC_DOMAINCFG_DM) )
>>>>> +        {
>>>>> +            vaplic_dm_update_target(cpuid_to_hartid(target_vcpu->processor),
>>>>> +                                    &value);
>>>>> +        }
>>>>> +        else
>>>>> +            vaplic_update_target(priv->imsic_cfg,
>>>>> +                                 vcpu_guest_file_id(target_vcpu),
>>>>> +                                 cpuid_to_hartid(target_vcpu->processor),
>>>>> +                                 &value);
>>>>
>>>> I'm struggling with the naming here: When DM is clear, a function with "dm"
>>>> in the name is called.
>>>
>>> it means direct (delivery) mode. Maybe it is better to put dm at the end
>>> of the function name? Or it is just better to change it to something else?
>>
>> Without a better understanding of what is wanted, all I can say is that
>> calling something with "dm" in its name when the condition says it's not
>> "dm" is confusing.
> 
> Basically it should be the following. If domaincfg.DM (here dm is 
> delivery mode according to spec) is 0 then it means that APLIC works in 
> direct delivery mode, if DM bit is 1 then MSI delivery mode is used.
> 
> So just for clarity I will rename:
> - vaplic_dm_update_target -> vaplic_ddm_update_target
> - vaplic_update_target -> vaplic_mdm_update_target
> 
> Or maybe just s/ddm/direct and s/mdm/msi will be just better in the 
> function names.

Afaic - yes to these latter two names.

>>>>> +    default:
>>>>> +        panic("%s: unsupported register offset: %#x\n", __func__, offset);
>>>>
>>>> Crashing the host for the guest doing something odd? It's odd that the function
>>>> only ever returns 0 anyway - it could simply return an error here (if the
>>>> itention is to not ignore such writes).
>>>
>>> But maybe it is a legal offset and we really want to support it?
>>
>> Still not a reason to crash the entire host?
> 
> Agree, domain crash will be more then enough.

See above as to even that possibly being too harsh.

Jan


From xen-devel-bounces@lists.xenproject.org Mon Apr 20 15:28:10 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 20 Apr 2026 15:28:10 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1286233.1567339 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wEqXi-0004Jf-Ob; Mon, 20 Apr 2026 15:28:10 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1286233.1567339; Mon, 20 Apr 2026 15:28: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 1wEqXi-0004JY-Jg; Mon, 20 Apr 2026 15:28:10 +0000
Received: by outflank-mailman (input) for mailman id 1286233;
 Mon, 20 Apr 2026 15:28:09 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <Luca.Fancellu@arm.com>) id 1wEqXh-0004JM-9w
 for xen-devel@lists.xenproject.org; Mon, 20 Apr 2026 15:28:09 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wEqXg-008zaY-Mj
 for xen-devel@lists.xenproject.org; Mon, 20 Apr 2026 17:28:08 +0200
Received: from [10.42.69.11] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <Luca.Fancellu@arm.com>)
 id 69e645f3-e002-0a2a0a5209dd-0a2a450bb430-42
 for <xen-devel@lists.xenproject.org>; Mon, 20 Apr 2026 17:28:08 +0200
Received: from [40.107.162.9]
 (helo=PA4PR04CU001.outbound.protection.outlook.com)
 by tlsNG-42698a.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.1)
 (envelope-from <Luca.Fancellu@arm.com>)
 id 69e64608-212f-0a2a450b0019-286ba209af14-3
 for <xen-devel@lists.xenproject.org>; Mon, 20 Apr 2026 17:28:08 +0200
Received: from DUZP191CA0012.EURP191.PROD.OUTLOOK.COM (2603:10a6:10:4f9::6) by
 AS2PR08MB9152.eurprd08.prod.outlook.com (2603:10a6:20b:578::6) with
 Microsoft
 SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id
 15.20.9818.32; Mon, 20 Apr 2026 15:28:05 +0000
Received: from DB3PEPF0000885E.eurprd02.prod.outlook.com
 (2603:10a6:10:4f9:cafe::5a) by DUZP191CA0012.outlook.office365.com
 (2603:10a6:10:4f9::6) with Microsoft SMTP Server (version=TLS1_3,
 cipher=TLS_AES_256_GCM_SHA384) id 15.20.9791.48 via Frontend Transport; Mon,
 20 Apr 2026 15:28:05 +0000
Received: from outbound-uk1.az.dlp.m.darktrace.com (4.158.2.129) by
 DB3PEPF0000885E.mail.protection.outlook.com (10.167.242.9) with Microsoft
 SMTP Server (version=TLS1_3, cipher=TLS_AES_256_GCM_SHA384) id 15.20.9791.48
 via Frontend Transport; Mon, 20 Apr 2026 15:28:05 +0000
Received: from DU2PR08MB7272.eurprd08.prod.outlook.com (2603:10a6:10:2d7::16)
 by AS2PR08MB9761.eurprd08.prod.outlook.com (2603:10a6:20b:606::11)
 with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9818.32; Mon, 20 Apr
 2026 15:27:00 +0000
Received: from DU2PR08MB7272.eurprd08.prod.outlook.com
 ([fe80::5d34:206f:373:a323]) by DU2PR08MB7272.eurprd08.prod.outlook.com
 ([fe80::5d34:206f:373:a323%6]) with mapi id 15.20.9818.032; Mon, 20 Apr 2026
 15:27: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=arm.com header.i="@arm.com" header.h="From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck"; dkim=pass header.s=selector1 header.d=arm.com header.i="@arm.com" header.h="From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck"
ARC-Seal: i=2; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=pass;
 b=fpxFAVUznBpebz756pT/PySIo+Rxhxcjk2Gvs+eIaWIdYmAIk4LQ8rZu8z2OcMoU/FiVp17dYtpJ2+//NF+kLfFYnWsPC9LulFf+zb2jx0nvuOKt6oEkNUbtqwOmPdFWv7QWqvwjDP3cULIG+OcBR2gct3riBaBotr4JynmsTIJQXWta6pEUOw14WTRSmSimZc1vplwRbTtdMuxo0MP2H2Nq1f6UfjxHIXHZO3hMKwSA0Hd0aCZ13Zlyc+FAkp3LcLZY2ZdbXzpr2DJoB4K29HuTNUlgxCieSeIrpWqy917ZF/P8HJTaKstxcO6yQgI+VATwRu7WBiioBdv8qDaC0w==
ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com;
 s=arcselector10001;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1;
 bh=ZSCDnZyrFgAUNIywPQiELxv9+3IMXVr0iZg/F3/mV/M=;
 b=v0Q3FiPFY4vyVZcgEVrfPSYAqBzIhvax60bQ2yuixlFWhPeHj3xRM8/jFCC+gllrmhoab4Fy/YJP+E0glgYpS5IZ1BbQJHL9ZoJAHFpWe5ToIdMmI9V1i7tn6lBCOJNEVDCSunDiOeR/riWdYkLmqRpCh4EnEeLl9pAwWpVwuHSoTNjgR6SJL/KhWEAWYo+BBexEwJp4RtvLYQSxVl/LR3RVVrwemmY+3mstnQ3TzzZy64mISQ67Uo8Tle2+bp5HNxXBLZzc3FqvEmBErBQVFF8POvMl73AdFC6BrojbgDhygc3HBVWjK+x4EjpqcgNG37JgaftqVL4mFMxN32Z4Cw==
ARC-Authentication-Results: i=2; mx.microsoft.com 1; spf=pass (sender ip is
 4.158.2.129) smtp.rcpttodomain=vates.tech smtp.mailfrom=arm.com; dmarc=pass
 (p=none sp=none pct=100) action=none header.from=arm.com; dkim=pass
 (signature was verified) header.d=arm.com; arc=pass (0 oda=1 ltdi=1
 spf=[1,1,smtp.mailfrom=arm.com] dkim=[1,1,header.d=arm.com]
 dmarc=[1,1,header.from=arm.com])
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=arm.com; s=selector1;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck;
 bh=ZSCDnZyrFgAUNIywPQiELxv9+3IMXVr0iZg/F3/mV/M=;
 b=WxIM5QaV7CxwuykKzANZrcGeGgwjGvxRHdsAIPPrrCe+lifdVrIiFhOl2vmTwKxslkBXPIIrkY+fFIsTKohrgo58tBvmY6Em+2iXwnE4gzJqxyFjhnaUrPw1cVI6lyUmf5fVgiCcUoKywg4T1hyxVMOBuHsZe63ipr8baIuLQlU=
X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 4.158.2.129)
 smtp.mailfrom=arm.com; dkim=pass (signature was verified)
 header.d=arm.com;dmarc=pass action=none header.from=arm.com;
Received-SPF: Pass (protection.outlook.com: domain of arm.com designates
 4.158.2.129 as permitted sender) receiver=protection.outlook.com;
 client-ip=4.158.2.129; helo=outbound-uk1.az.dlp.m.darktrace.com; pr=C
ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none;
 b=HrKN5hCpPNOCGArclOpevfHEQ+BKWLGciePRHikXukFhUblSaTf0QRcFLit0g32i5VO0VifAN0bFvyukqIubYz35KunbWyMM8OiomBPi/jZFDxQxyijBkY3A177u9xtrhnWcMe/Q7jtqnwwEWqsfxy5BcSxAOG2voSZgbn6gZQUy3QwFM0ueEc/eV+TWYetSFpm3AatLvbWCMOnNxVg9lMNirLIG7AoBS6NMEwYweIJ8JTqoZxmGsRu00bYUIBeGdxN1RAsf454fBcJg4Xdl2MZAz628cfSNUZ+u1LtRwi98UeL96KaHlVUGDW1U5vhjuj/K75HlhBmsoYOB/cBUVg==
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com;
 s=arcselector10001;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1;
 bh=ZSCDnZyrFgAUNIywPQiELxv9+3IMXVr0iZg/F3/mV/M=;
 b=x8NQsTLugvGhkRct0KsaLmVvpxEU2lWHx+hPrkBacGiCESkTnWU/04CVToF+xF2ILNWrlPqHotPk3Scy3g2R/AU3wRHaAev8CnzoeQqutcPsqJfO7mn88lxQPWyUpoljwGtVrUuFHr4DLu1QKgd83uWT9TMq7Jiwsgk/0fmIP0ZQ2KuerH+ny7wwJ9JFZu+sxU4kj5zTmXRq16egWzSGYe90oLKllj+0/k5xO+wstSdg19cup3eFMRWikrbOU1xM187qtAzi7A5Nk1HUj0nbgmwd7eTRjHdKrFHQShOSt3ouv83v1y+lPw0ZdrIMd8Fy9vQSWBRAVtzvZdlcxjMC9w==
ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass
 smtp.mailfrom=arm.com; dmarc=pass action=none header.from=arm.com; dkim=pass
 header.d=arm.com; arc=none
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=arm.com; s=selector1;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck;
 bh=ZSCDnZyrFgAUNIywPQiELxv9+3IMXVr0iZg/F3/mV/M=;
 b=WxIM5QaV7CxwuykKzANZrcGeGgwjGvxRHdsAIPPrrCe+lifdVrIiFhOl2vmTwKxslkBXPIIrkY+fFIsTKohrgo58tBvmY6Em+2iXwnE4gzJqxyFjhnaUrPw1cVI6lyUmf5fVgiCcUoKywg4T1hyxVMOBuHsZe63ipr8baIuLQlU=
From: Luca Fancellu <Luca.Fancellu@arm.com>
To: Yann Sionneau <yann.sionneau@vates.tech>
CC: "xen-devel@lists.xenproject.org" <xen-devel@lists.xenproject.org>, Penny
 Zheng <Penny.Zheng@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>, Wei Chen <Wei.Chen@arm.com>, Hari Limaye
	<Hari.Limaye@arm.com>, Harry Ramsey <Harry.Ramsey@arm.com>
Subject: Re: [PATCH 1/8] xen/arm: Implement p2m_set_entry for MPU systems
Thread-Topic: [PATCH 1/8] xen/arm: Implement p2m_set_entry for MPU systems
Thread-Index: AQHc0NGaAJmAtEy3fU6jl6CvofRliLXoEamAgAAA0wA=
Date: Mon, 20 Apr 2026 15:27:00 +0000
Message-ID: <9D8E2C9A-FAA4-49C4-BABB-968B61314B90@arm.com>
References: <20260420142524.1804073-1-luca.fancellu@arm.com>
 <20260420142524.1804073-2-luca.fancellu@arm.com>
 <758d9182-aa50-4c60-9834-bf8136c4ef3d@vates.tech>
In-Reply-To: <758d9182-aa50-4c60-9834-bf8136c4ef3d@vates.tech>
Accept-Language: en-GB, en-US
Content-Language: en-US
X-MS-Has-Attach:
X-MS-TNEF-Correlator:
x-mailer: Apple Mail (2.3826.700.81.1.6)
Authentication-Results-Original: dkim=none (message not signed)
 header.d=none;dmarc=none action=none header.from=arm.com;
x-ms-traffictypediagnostic:
	DU2PR08MB7272:EE_|AS2PR08MB9761:EE_|DB3PEPF0000885E:EE_|AS2PR08MB9152:EE_
X-MS-Office365-Filtering-Correlation-Id: ccb032b9-1e63-4a86-1af5-08de9ef16b48
x-checkrecipientrouted: true
nodisclaimer: true
X-MS-Exchange-SenderADCheck: 1
X-MS-Exchange-AntiSpam-Relay: 0
X-Microsoft-Antispam-Untrusted:
 BCL:0;ARA:13230040|366016|1800799024|376014|38070700021|56012099003|18002099003|22082099003;
X-Microsoft-Antispam-Message-Info-Original:
 kP1dIy5HGiHwM5jQHwcOgBZ+NBC88rrNPH2pKa1yV2UXHhMZ8CWIXRgvhgzo3cFm9a/z9b0wV2qAXMLiHa8hIHN8tvinHfdDN02PQSCgC2/9CRbfB2meTHm+iZyY1vIUbJjUs/V5AfpT915DZUxYCbFeTfHR9efsW/gN/VPNX6dWcL1lWzQ/ch312hHpuVbOZckMgoa/Ey0WXPHc9ulADeziluwb20gTEzBvlacyzvO8Z3bm1/QyfRhkL7mcYJmEXW4dj5Xm9Rf4VWbYC5yAy6UHeDKaerPbXw2M8q9xX0zk6IbuweGwwvmL/0s5i6WuwER863pUDlalkq0boOybIhFjM3wfHc+OhHzCDZDPyCG1g8tlN0FvcIe3gjqwWjp0zk3xjZxAMYRknxYjYM2dtaA9HyU2LrdakysYmPH3dM4dT/dOLZxGGPt28bFoqkBAZrpDpoNv8t8TQIKvgfLGX2IiqkK7xSd9HVjkww2I7awoARoZ9+r7G9kO8X/gvmRy8wodV1gg1OETLy/WC1IdSkx4AhPRf/fM997ALXMi+5JaKgCXYnTVfsGA39X7K3twMddQDu0yZPWy8uzes6euwqDLlRJevpdKcz5GebgJBfIbiVyMuJqyuev5AUtYCveF9CIJkbw94OT3z95+4dHyIwaiznKP77CupITnmjihFkcz8YGEGeW16GSSicmvfKUJz8+EjNH79UFwvUHwfhD8mCDfq3fnU9ZH66ibDE7BWYf0LvL7yHPaieNR6zXRKoDcco1H79Fl0xAmn5XAAdkJwt4r52IGKTVpT3uTBMt1Vck=
X-Forefront-Antispam-Report-Untrusted:
 CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:DU2PR08MB7272.eurprd08.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(366016)(1800799024)(376014)(38070700021)(56012099003)(18002099003)(22082099003);DIR:OUT;SFP:1101;
Content-Type: text/plain; charset="utf-8"
Content-ID: <030426270C759A46A77FC461B444590B@eurprd08.prod.outlook.com>
Content-Transfer-Encoding: base64
MIME-Version: 1.0
X-Exchange-RoutingPolicyChecked:
 vti2SLKO5qG8fA1EoHiCK+ANRrJAryufnLOmyg1vIaM+x63LkMvdyopFNhfX9e2JtT2yWaLGv37oFb5/6oiEiQ480qhuWJGl5BD1j8RyGkB4Z+Jw30efK9fQU32HR/GdVbWHpZdouatMP6giPP7HrxGEPyarzs6uJ4iDOT83j/8HhHlN53Mo0ZBpHtqgJPff0qX2pwucZ5sMuamtB3QRp/46yElHmbr+WjM3KbrZxKFKDAa9rQyL0+T2RH7mB/fERC8Duhsg73UevSXK5XJ3JvbVKEvItADUBgG1nunYiYazdvglZpKxizwK5OLlDA9Stz0ZO6r/HpxczYdFBS1U0g==
X-MS-Exchange-Transport-CrossTenantHeadersStamped: AS2PR08MB9761
X-EOPAttributedMessage: 0
X-MS-Exchange-Transport-CrossTenantHeadersStripped:
 DB3PEPF0000885E.eurprd02.prod.outlook.com
X-MS-PublicTrafficType: Email
X-MS-Office365-Filtering-Correlation-Id-Prvs:
	9994dbd2-fca1-4464-24f2-08de9ef14477
X-Microsoft-Antispam:
	BCL:0;ARA:13230040|36860700016|1800799024|376014|14060799003|35042699022|82310400026|13003099007|56012099003|22082099003|18002099003;
X-Microsoft-Antispam-Message-Info:
	qjzy3PUH6+yl5WPcIuhgjd2CvoUIj13KMSTrT8WaVpRjHMBoyS3Fbq15WxFjDDtZSCtIWB0elvjmK0R8zloA6z98R4zwM8YSgdttIBa3K5S2/urJEf/ZWopVjPZQOKdvl0vC377uRWndCrtofdNskNZMx3BlJmOg/UruO5qgZZeaP0Mixy8Ad9meJqiw+53G4NbiAiK/yuk2qU5PhpOrbME+zNx3SGr9maIdCXPIxKAljoAaNLNpokRSSXINbNZWabH4oFUxBubacwe9CvTWfyhUpZAQ+OwX5Yv5OqoDnNEncjAmgeY0b2POqEtl9WgyEjZ0UdegV02yviTSsSv6gG67ON6+/xS42u6sN8qOlsoU+jzlKphJxQGv5ZfJ6EbWM/irfZGQtGa/R4IJwDsxBoBouLwDgoy9FYQHa3dXQFF6NLbV6gpM4SVrQZ1eEtcbIWClCDxlGCj2gOI1Zh8UV1cd+qZxgfeW/qjZK9nr3jt8+DIMdALmePRXREXgiPjaXrRqDAhcB3yeLR197Po8xXKPoPyiNE6cDNA0JyqQYGLKZO6/qx2mZ/4pLqcY5RdVHiLfBeV6HDP/H97qohrAVksgbllaaZdDp+5p7HGRGAau90Oum6GAdDnfSnKTTQcwnvvcSOrqfDkOAuOasWZXn/E0ixa4qhGx8e+VPrSM7gXJZOHzZWJH0qNz05IM8LViRQkE0y6eu/XU/2MRIdWsIOkJsBX7Cw83jN2PShH1NO/kAmf4BN8ImWlR+d6iwga84M4ax41RFqUtrvjjjqos/A==
X-Forefront-Antispam-Report:
	CIP:4.158.2.129;CTRY:GB;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:outbound-uk1.az.dlp.m.darktrace.com;PTR:InfoDomainNonexistent;CAT:NONE;SFS:(13230040)(36860700016)(1800799024)(376014)(14060799003)(35042699022)(82310400026)(13003099007)(56012099003)(22082099003)(18002099003);DIR:OUT;SFP:1101;
X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1
X-MS-Exchange-AntiSpam-MessageData-0:
	rxtvl3x++PpgU3eTheYpVzr2xHBHlCBGLM5l12SGp5v4XCva9CK4cEKJqQuclMzjkU6Ct0eKKyOrafkGPNLqn2R2TYQgkHcv3K8SHnulDblMWr5W/HFjKMcXTxoEJawWVKWXRqKIS+YMJWKetm2KAszLNfQd1De8AiLukaA7x5XJW1A/bJz3rzVOxL6Yu9a8RmXTV56X4RuoYGxiJHTRpDNHMxR0hdgJDNMw7ayevmNXeCf/3MGEDVoiztJRL2tX47fqQbHO1RkC0Ae8vghEL9E5cOzXfAsSEwkakameh7z4AfnwOM/BsD6uyAgb5raamfHDURFFuTx+XooDZfznYGxCZME7P3CIXmncLLvueu0ToZgCVdQORj1k/qk/Xeeqfer+sp1ys5U3RLtKFbSK/rdFyxtdpTvQYsujRWU9OdQvwh6nuAsKMJRKnxxgq9hV
X-OriginatorOrg: arm.com
X-MS-Exchange-CrossTenant-OriginalArrivalTime: 20 Apr 2026 15:28:05.6311
 (UTC)
X-MS-Exchange-CrossTenant-Network-Message-Id: ccb032b9-1e63-4a86-1af5-08de9ef16b48
X-MS-Exchange-CrossTenant-Id: f34e5979-57d9-4aaa-ad4d-b122a662184d
X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=f34e5979-57d9-4aaa-ad4d-b122a662184d;Ip=[4.158.2.129];Helo=[outbound-uk1.az.dlp.m.darktrace.com]
X-MS-Exchange-CrossTenant-AuthSource:
	DB3PEPF0000885E.eurprd02.prod.outlook.com
X-MS-Exchange-CrossTenant-AuthAs: Anonymous
X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem
X-MS-Exchange-Transport-CrossTenantHeadersStamped: AS2PR08MB9152
X-purgate-ID: tlsNG-42698a/1776698888-7D969F3B-17539C11/0/0
X-purgate-type: clean
X-purgate-size: 936

SGkgWWFubiwNCg0KPiBPbiAyMCBBcHIgMjAyNiwgYXQgMTY6MjMsIFlhbm4gU2lvbm5lYXUgPHlh
bm4uc2lvbm5lYXVAdmF0ZXMudGVjaD4gd3JvdGU6DQo+IA0KPiBPbiA0LzIwLzI2IDE2OjI3LCBM
dWNhIEZhbmNlbGx1IHdyb3RlOg0KPj4gRnJvbTogUGVubnkgWmhlbmcgPFBlbm55LlpoZW5nQGFy
bS5jb20+DQo+PiANCj4+IEltcGxlbWVudCB0aGUgZnVuY3Rpb24gYHAybV9zZXRfZW50cnlgLCB3
aGljaCBpcyByZXNwb25zaWJsZSBmb3INCj4+IGluc2VydGluZyBhIG5ldyBlbnRyeSBpbnRvIHRo
ZSBwMm0gdGFibGVzLCBmb3IgTVBVIHN5c3RlbXMuDQo+PiANCj4gSGVsbG8gTHVjYSwNCj4gDQo+
IEl0IHNlZW1zIHRoaXMgcGF0Y2ggZG9lcyBub3QgYXBwbHkgb24gbWFzdGVyIGlmIEknbSBub3Qg
bWlzdGFrZW4uDQoNClRoaXMgc2VyaWUgYXBwbGllcyBvbiB0b3Agb2YgdGhlc2UgcGF0Y2hlczoN
Cmh0dHBzOi8vcGF0Y2h3b3JrLmtlcm5lbC5vcmcvcHJvamVjdC94ZW4tZGV2ZWwvbGlzdC8/c2Vy
aWVzPTEwODMzNzENCg0KSW4gdGhlIGNvdmVyIGxldHRlciBJIHdyb3RlOiANCg0KYGBgDQpb4oCm
XQ0KVGhlIHNlcmllIGlzIGJhc2VkIG9uIGFub3RoZXIgc2VyaWUgaW4gdGhlIG1haWxpbmcgbGlz
dDogIkZpZnRoIE1QVSBTZXJpZXMiLg0KW+KApl0NCmBgYA0KDQpDaGVlcnMsDQpMdWNhDQoNCg0K


From xen-devel-bounces@lists.xenproject.org Mon Apr 20 15:29:19 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 20 Apr 2026 15:29:19 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1286246.1567349 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wEqYo-0004sz-4l; Mon, 20 Apr 2026 15:29:18 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1286246.1567349; Mon, 20 Apr 2026 15:29: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 1wEqYo-0004ss-0N; Mon, 20 Apr 2026 15:29:18 +0000
Received: by outflank-mailman (input) for mailman id 1286246;
 Mon, 20 Apr 2026 15:29:16 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <bounce-md_30504962.69e6464a.v1-2d3ff4bb5334467fb90e2e3739eaca1c@bounce.vates.tech>)
 id 1wEqYm-0004sm-Nj
 for xen-devel@lists.xenproject.org; Mon, 20 Apr 2026 15:29:16 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wEqYm-00BQx7-4m
 for xen-devel@lists.xenproject.org; Mon, 20 Apr 2026 17:29:16 +0200
Received: from [10.42.69.8] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1) (envelope-from
 <bounce-md_30504962.69e6464a.v1-2d3ff4bb5334467fb90e2e3739eaca1c@bounce.vates.tech>)
 id 69e64643-2eae-0a2a0a5409dd-0a2a4508acb2-12
 for <xen-devel@lists.xenproject.org>; Mon, 20 Apr 2026 17:29:16 +0200
Received: from [198.2.187.30] (helo=mail187-30.suw11.mandrillapp.com)
 by tlsNG-c1860d.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.1)
 (envelope-from
 <bounce-md_30504962.69e6464a.v1-2d3ff4bb5334467fb90e2e3739eaca1c@bounce.vates.tech>)
 id 69e6464a-63b5-0a2a45080019-c602bb1e1bfd-3
 for <xen-devel@lists.xenproject.org>; Mon, 20 Apr 2026 17:29:15 +0200
Received: from pmta09.mandrill.prod.suw01.rsglab.com (localhost [127.0.0.1])
 by mail187-30.suw11.mandrillapp.com (Mailchimp) with ESMTP id
 4fzqCZ3szMzP0Jn2l
 for <xen-devel@lists.xenproject.org>; Mon, 20 Apr 2026 15:29:14 +0000 (GMT)
Received: from [37.26.189.201] by mandrillapp.com id
 2d3ff4bb5334467fb90e2e3739eaca1c; Mon, 20 Apr 2026 15:29: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=mte1 header.d=mandrillapp.com header.i="@mandrillapp.com" header.h="From:Subject:Message-Id:To:Cc:References:In-Reply-To:Feedback-ID:Date:MIME-Version:Content-Type:Content-Transfer-Encoding"; dkim=pass header.s=mte1 header.d=vates.tech header.i="yann.sionneau@vates.tech" header.h="From:Subject:Message-Id:To:Cc:References:In-Reply-To:Feedback-ID:Date:MIME-Version:Content-Type:Content-Transfer-Encoding"
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=mandrillapp.com;
	s=mte1; t=1776698954; x=1776968954;
	bh=zrDGop4vqMVPetlkme5uH9vCu0jZJzVmxo6QNeagp3c=;
	h=From:Subject:Message-Id:To:Cc:References:In-Reply-To:Feedback-ID:
	 Date:MIME-Version:Content-Type:Content-Transfer-Encoding:CC:Date:
	 Subject:From;
	b=sfJVELw4+A8zgB5OB6zjspix4q4Bp5XVqxcMCVxFbnKDkp7uTjCxlyJoT3qGP0ovG
	 9IsAdtypw/w0f1lNQWSENnarRo63ytJvqlSpYntMQuDEBi0HVxKPijawBTiNKzVKuG
	 Wxrr5bwxcL8GKSAoqml3vELO/IsR20U3HwLybhidJ/eRpsUFdfGybIr4qarQ1nZfYJ
	 hsxFZleCEjAnCtjpqN8WuMpzayxpoeOtskRG+EqimulGh+SHivHz7JoH9RAn+im1JQ
	 ZvAEyq8n3jriLHaQzA+nI6XJiV3dY2SfiJXDM7bhzZvKqKERxb6Hg8yJIh7KS3wHXe
	 DgRkcZO0zxCCw==
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=vates.tech; s=mte1;
	t=1776698954; x=1776959454; i=yann.sionneau@vates.tech;
	bh=zrDGop4vqMVPetlkme5uH9vCu0jZJzVmxo6QNeagp3c=;
	h=From:Subject:Message-Id:To:Cc:References:In-Reply-To:Feedback-ID:
	 Date:MIME-Version:Content-Type:Content-Transfer-Encoding:CC:Date:
	 Subject:From;
	b=CnD9fh5WTIOMfkyn2yuq0Muyz145oTN8KsOsxJE4QZANwt/Fae/R68zIOI6O2QXu4
	 K2cuR2pI8I6QxTSpZrqMbgeL2vtSsih6vASAz85BnWIk8GRrxQsMmQLizamigxoS1x
	 n1OX5OCULTZREpZxWYxGmBBmXTLPaMq5JyOlQ2Sm5eMfR1dH/hxRJCElfioFklLq1e
	 TyzLQabmP6Qo3uavO7igzXMooQSqka6rFW7eOK6YAUQAj8Voigl36ajIKK3TWHTkK3
	 Oig3IGPI9i/558cSSLNQUe4PLYU0kTEwPhfQ4HE+ct7TEBwwl0loIQ937V61u+sxIT
	 V1XyGwf1BoqGA==
From: "Yann Sionneau" <yann.sionneau@vates.tech>
Subject: =?utf-8?Q?Re:=20[PATCH=201/8]=20xen/arm:=20Implement=20p2m=5Fset=5Fentry=20for=20MPU=20systems?=
X-Bm-Disclaimer: Yes
X-Bm-Milter-Handled: 4ffbd6c1-ee69-4e1b-aabd-f977039bd3e2
X-Bm-Transport-Timestamp: 1776698952944
Message-Id: <6cb62e24-54e2-4ae8-823f-8cc37af9c224@vates.tech>
To: "Luca Fancellu" <Luca.Fancellu@arm.com>
Cc: xen-devel@lists.xenproject.org, "Penny Zheng" <Penny.Zheng@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>, "Wei Chen" <Wei.Chen@arm.com>, "Hari Limaye" <Hari.Limaye@arm.com>, "Harry Ramsey" <Harry.Ramsey@arm.com>
References: <20260420142524.1804073-1-luca.fancellu@arm.com> <20260420142524.1804073-2-luca.fancellu@arm.com> <758d9182-aa50-4c60-9834-bf8136c4ef3d@vates.tech> <9D8E2C9A-FAA4-49C4-BABB-968B61314B90@arm.com>
In-Reply-To: <9D8E2C9A-FAA4-49C4-BABB-968B61314B90@arm.com>
X-Native-Encoded: 1
X-Report-Abuse: =?UTF-8?Q?Please=20forward=20a=20copy=20of=20this=20message,=20including=20all=20headers,=20to=20abuse@mandrill.com.=20You=20can=20also=20report=20abuse=20here:=20https://mandrillapp.com/contact/abuse=3Fid=3D30504962.2d3ff4bb5334467fb90e2e3739eaca1c?=
X-Mandrill-User: md_30504962
Feedback-ID: 30504962:30504962.20260420:md
Date: Mon, 20 Apr 2026 15:29:14 +0000
MIME-Version: 1.0
Content-Type: text/plain; charset=utf-8
Content-Transfer-Encoding: quoted-printable
X-purgate-ID: tlsNG-c1860d/1776698956-C1161DB1-A9DBF543/0/0
X-purgate-type: clean
X-purgate-size: 1042

On 4/20/26 17:28, Luca Fancellu wrote:
> Hi Yann,
> 
>> On 20 Apr 2026, at 16:23, Yann Sionneau <yann.sionneau@vates.tech> wrote=
:
>>
>> On 4/20/26 16:27, Luca Fancellu wrote:
>>> From: Penny Zheng <Penny.Zheng@arm.com>
>>>
>>> Implement the function `p2m_set_entry`, which is responsible for
>>> inserting a new entry into the p2m tables, for MPU systems.
>>>
>> Hello Luca,
>>
>> It seems this patch does not apply on master if I'm not mistaken.
> 
> This serie applies on top of these patches:
> https://patchwork.kernel.org/project/xen-devel/list/?series=3D1083371
> 
> In the cover letter I wrote:
> 
> ```
> [=E2=80=A6]
> The serie is based on another serie in the mailing list: "Fifth MPU Serie=
s".
> [=E2=80=A6]
> ```
> 
> Cheers,
> Luca
> 
> 

Oopsy, sorry for the noise, I checked but ... it seems I did not read 
the cover letter carefully enough :)

Regards,

-- 


--
Yann Sionneau | Vates XCP-ng Developer

XCP-ng & Xen Orchestra - Vates solutions

web: https://vates.tech





From xen-devel-bounces@lists.xenproject.org Mon Apr 20 15:31:28 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 20 Apr 2026 15:31:28 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1286257.1567357 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wEqat-0006Jq-Fy; Mon, 20 Apr 2026 15:31:27 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1286257.1567357; Mon, 20 Apr 2026 15:31: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 1wEqat-0006Jj-CD; Mon, 20 Apr 2026 15:31:27 +0000
Received: by outflank-mailman (input) for mailman id 1286257;
 Mon, 20 Apr 2026 15:31:26 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92) id 1wEqas-0006Jd-FY
 for xen-devel@lists.xenproject.org; Mon, 20 Apr 2026 15:31:26 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wEqar-004Loq-SS
 for xen-devel@lists.xenproject.org; Mon, 20 Apr 2026 17:31:25 +0200
Received: from [10.42.69.11] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <oleksii.kurochko@gmail.com>)
 id 69e646bc-5cb7-0a2a0a5109dd-0a2a450b804c-28
 for <xen-devel@lists.xenproject.org>; Mon, 20 Apr 2026 17:31:25 +0200
Received: from [209.85.167.45] (helo=mail-lf1-f45.google.com)
 by tlsNG-42698a.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.1)
 (envelope-from <oleksii.kurochko@gmail.com>)
 id 69e646cc-212f-0a2a450b0019-d155a72db453-3
 for <xen-devel@lists.xenproject.org>; Mon, 20 Apr 2026 17:31:24 +0200
Received: by mail-lf1-f45.google.com with SMTP id
 2adb3069b0e04-5a2c9c5ff87so3911448e87.0
 for <xen-devel@lists.xenproject.org>; Mon, 20 Apr 2026 08:31:24 -0700 (PDT)
Received: from [192.168.1.6] (user-109-243-69-121.play-internet.pl.
 [109.243.69.121]) by smtp.gmail.com with ESMTPSA id
 2adb3069b0e04-5a4185bc361sm3017934e87.32.2026.04.20.08.31.22
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Mon, 20 Apr 2026 08:31:23 -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=20251104 header.d=gmail.com header.i="@gmail.com" header.h="Content-Transfer-Encoding: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=20251104; t=1776699084; x=1777303884; darn=lists.xenproject.org;
        h=content-transfer-encoding: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;
        bh=1gsn2fGUbxj/GyR8As0n22UpdKesWNO+TEi8vIw1i5s=;
        b=hWOgxveAvx5pIYzqKDC1UAfe1z69X6xU7PGeOMRnGfP68soPr7YajJ3yd0NNSPSyHY
         /u6x+LkENXXffIa/vRRo/b9UuR+F4Qk1YQbmDu87Dv8DLnz16RMd0FnJ2V2/u34q0T62
         +ncYg3cIqDnGLsKLMUdTdaozhZG9A88TmNA+T+PqkX5FSiMhA9JVBOSGGX3rIfMWrBsq
         vLmx4/FWIWkS7pPjayilJNIrJ6CzeWgXDpe+VEKsQh7CoYRZ6IWuUE7vnM/m809QzjOj
         4aMuUaqo2eTOtYMlb64nNIJMEQQJqZaZ3qGPxmMmS54u3esMoiwSNONLcEE0vO810hjU
         PE8A==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20251104; t=1776699084; x=1777303884;
        h=content-transfer-encoding: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;
        bh=1gsn2fGUbxj/GyR8As0n22UpdKesWNO+TEi8vIw1i5s=;
        b=EWPHujPU9daAUoSf5nPENgPFRoTaZQxaJ08jdVm3UXq2MRP6xjjpY3GK/2YOZrXaN/
         SxPe94BFPSvUGYRpVZu+5KBo9NZatBs9lN2H7WKoRdGHD9nZQ+k4ln/h1vSpwW8bro0G
         YiBgu/aoCQzXvzP7q90jj6V0RcYWhCKexBkP8QiUcupHqjTa1aBFSCr8H2CRBZcvHZep
         +RqX+d0ygZw3XQKjTrlbA6cKkzXxD0ECxzLI5ay1FAOVWP5C8ZXsmpqkftAnTH90nH1x
         vTxF+Fs6UVT19v1teBThtUFg8cFT7IrqEMK6fQ0myHqJbXPPwgmWziQeMig02va9tO3N
         LGxg==
X-Forwarded-Encrypted: i=1; AFNElJ8Z7t/AqnXufse9+H+cDyLx3eKXTysSNiwzKQMoWtCVgLi3wBqBAmwIRc4JKqkRHnlpIefBr2QmfVo=@lists.xenproject.org
X-Gm-Message-State: AOJu0YyHNPohB67h0NnVc5IIBE705HtEK4npBQeIxAs9eZUj0iCls6m+
	lyistn3EHlmR20AqOuvdinf0Ntc3OrSqQJbW6rPIOYVf0VGn1R0Qe+D0
X-Gm-Gg: AeBDievIygYzXQ+oMKC4Bb2cIWZc7dWvcTIIBjmm12jnnzDCNqANKh1x4bIzq0QtSxC
	IUNG0zZWkpZ2KMEms1WcX09H0Wk9Eik8XUPf1iybLpdyjF5C9hC7i7LowTiPTaWljBraweDf/mR
	PKQW5gD9SIrLxgOJoxQ0TYHxDo069ViNC7b8eD2WNwuIcTyXUTIoskHjDGrvopwVXT0YlbMfWsb
	uyAkb14bgA6MkdcfVgKMBhqCt6m0if/BH1ZFs2KaIBGZCkPXPahxLRWTnyUGcJfrUvWOm0+b4YQ
	H+NVluREQndeDDWW1aJhVCexregwD8y55ONkL/45hooQLjJf6POf8aG3gSuOmgGJMajtatKYvPP
	9E5hzjpB7kgC/EpWRLCY5oce08yegnW9gHpDJbH2AUmqQLLm6L+hm0Z13ARg+x4gWYOm5QL/jS4
	1Me942+f2irJAbALSwMYLTCH24FrVk1RQxEmKGJOeGVcrp7/QgqewkqU6MYgBCAxAvhgxPLAvqQ
	p5Uh+4tuA5oAg==
X-Received: by 2002:a05:6512:3b91:b0:5a4:9a7:7e66 with SMTP id 2adb3069b0e04-5a4172faa04mr5449547e87.45.1776699083601;
        Mon, 20 Apr 2026 08:31:23 -0700 (PDT)
Message-ID: <6042263f-49e5-4139-978f-38cb10769c0e@gmail.com>
Date: Mon, 20 Apr 2026 17:31:22 +0200
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH v1 16/27] xen/riscv: implement IRQ mapping for device
 passthrough
To: Jan Beulich <jbeulich@suse.com>
Cc: Romain Caritey <Romain.Caritey@microchip.com>,
 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.pau@citrix.com>,
 Stefano Stabellini <sstabellini@kernel.org>, xen-devel@lists.xenproject.org
References: <cover.1773157782.git.oleksii.kurochko@gmail.com>
 <10654a6c38fa929b5fdf6f214badfe4f60fe78d4.1773157782.git.oleksii.kurochko@gmail.com>
 <8a8a2afd-6f53-4f45-b8c8-fb34a6fbb970@suse.com>
 <f099b925-0ea9-43a7-b760-f70f343a4d7c@gmail.com>
 <a7a4e8c9-d053-4ca7-ac9c-f43ddccf9151@suse.com>
 <00fa439d-0327-4c0c-960d-a810820a6e83@gmail.com>
 <09a260ca-5a98-461d-9f57-d298a483d3d6@suse.com>
 <7c059a67-3f3f-4633-aebb-939aa9ac7955@gmail.com>
 <0ccf093f-cc2a-4729-bf8f-b39bf73fd202@suse.com>
Content-Language: en-US
From: Oleksii Kurochko <oleksii.kurochko@gmail.com>
In-Reply-To: <0ccf093f-cc2a-4729-bf8f-b39bf73fd202@suse.com>
Content-Type: text/plain; charset=UTF-8; format=flowed
Content-Transfer-Encoding: 8bit
X-purgate-ID: tlsNG-42698a/1776699084-7D76AF3B-389658C6/10/73395122804
X-purgate-type: spam
X-purgate-size: 7430



On 4/20/26 5:21 PM, Jan Beulich wrote:
> On 20.04.2026 16:34, Oleksii Kurochko wrote:
>>
>>
>> On 4/20/26 3:45 PM, Jan Beulich wrote:
>>> On 20.04.2026 13:39, Oleksii Kurochko wrote:
>>>> On 4/16/26 2:51 PM, Jan Beulich wrote:
>>>>> On 14.04.2026 13:29, Oleksii Kurochko wrote:
>>>>>> On 4/2/26 2:22 PM, Jan Beulich wrote:
>>>>>>> On 10.03.2026 18:08, Oleksii Kurochko wrote:
>>>>>>>> +int vaplic_map_device_irqs_to_domain(struct domain *d,
>>>>>>>> +                                     struct dt_device_node *dev,
>>>>>>>> +                                     bool need_mapping,
>>>>>>>> +                                     struct rangeset *irq_ranges)
>>>>>>>> +{
>>>>>>>> +    unsigned int i, nirq;
>>>>>>>> +    int res, irq;
>>>>>>>> +    struct dt_raw_irq rirq;
>>>>>>>> +    uint32_t *auth_irq_bmp = d->arch.vintc->private;
>>>>>>>> +    unsigned int reg_num;
>>>>>>>> +
>>>>>>>> +    nirq = dt_number_of_irq(dev);
>>>>>>>> +
>>>>>>>> +    /* Give permission and map IRQs */
>>>>>>>> +    for ( i = 0; i < nirq; i++ )
>>>>>>>> +    {
>>>>>>>> +        res = dt_device_get_raw_irq(dev, i, &rirq);
>>>>>>>> +        if ( res )
>>>>>>>> +        {
>>>>>>>> +            printk(XENLOG_ERR "Unable to retrieve irq %u for %s\n",
>>>>>>>> +                   i, dt_node_full_name(dev));
>>>>>>>> +            return res;
>>>>>>>> +        }
>>>>>>>> +
>>>>>>>> +        /*
>>>>>>>> +         * Don't map IRQ that have no physical meaning
>>>>>>>> +         * ie: IRQ whose controller is not APLIC/IMSIC/PLIC.
>>>>>>>> +         */
>>>>>>>> +        if ( rirq.controller != dt_interrupt_controller )
>>>>>>>> +        {
>>>>>>>> +            dt_dprintk("irq %u not connected to primary controller."
>>>>>>>> +                       "Connected to %s\n", i,
>>>>>>>> +                       dt_node_full_name(rirq.controller));
>>>>>>>> +            continue;
>>>>>>>> +        }
>>>>>>>> +
>>>>>>>> +        irq = platform_get_irq(dev, i);
>>>>>>>> +        if ( irq < 0 )
>>>>>>>> +        {
>>>>>>>> +            printk("Unable to get irq %u for %s\n", i, dt_node_full_name(dev));
>>>>>>>> +            return irq;
>>>>>>>> +        }
>>>>>>>> +
>>>>>>>> +        res = irq_permit_access(d, irq);
>>>>>>>> +        if ( res )
>>>>>>>> +        {
>>>>>>>> +            printk(XENLOG_ERR "Unable to permit to %pd access to IRQ %u\n", d,
>>>>>>>> +                   irq);
>>>>>>> This time the other way around: %d please with plain int. (Again at least
>>>>>>> once further down.)
>>>>>>>
>>>>>>>> +            return res;
>>>>>>>> +        }
>>>>>>>> +
>>>>>>>> +        reg_num = irq / APLIC_NUM_REGS;
>>>>>>>> +
>>>>>>>> +        if ( is_irq_shared_among_domains(d, irq) )
>>>>>>>> +        {
>>>>>>>> +            printk("%s: Shared IRQ isn't supported\n", __func__);
>>>>>>>> +            return -EINVAL;
>>>>>>>> +        }
>>>>>>>> +
>>>>>>>> +        auth_irq_bmp[reg_num] |= BIT(irq % APLIC_NUM_REGS, U);
>>>>>>> ... all of this leaves me with the impression that IRQ numbering isn't really
>>>>>>> virtualized. IRQs are merely split into groups, one group per domain (and
>>>>>>> maybe some unused). How are you going to fit in truly virtual IRQs?
>>>>>> What do you mean by truly virtual IRQs?
>>>>> Ones where no aspects are represented by any piece of hardware.
>>>>>
>>>>>> I can't totally agree that the current approach isn't use virtual IRQs,
>>>>>> yes, they are 1:1 mapped but on the other side Xen is responsible to
>>>>>> give an IRQ number for guest's device and Xen is responsible that guest
>>>>>> isn't trying to reach IRQ which not belongs to it.
>>>>> In a non-virtualized environment I expect IRQs are going to be "sparse"
>>>>> (i.e. with perhaps large blocks of items used elsewhere). If you had
>>>>> proper translation of IRQ numbers, the same could be true for your
>>>>> guests.
>>>> Partial FDT, which is used to tell which device be passthroughed to
>>>> guest, is using physical IRQ number (which I am just considering for
>>>> simplicity to be 1:1 mapped to virtual IRQ number). So if we have the
>>>> following configuration:
>>>>      Physical (bare-metal) IRQ layout is sparse:
>>>>        IRQ 5  → UART -> domU0
>>>>        IRQ 23 → Ethernet -> domU1
>>>>        IRQ 47 → PCIe -> domU0
>>>>        IRQ 100 → Storage -> domU1
>>>> (gaps everywhere, driven by hardware wiring)
>>>>
>>>> For such configuration we will have for each domain auth_irq_bmp[] which
>>>> contains:
>>>>     IRQ 5 and IRQ47 for domU0
>>>> and
>>>>     IRQ 23 and IRQ 100 for domU1
>>>>
>>>> And here vIRQ5 = pIRQ5, vIRQ47 = pIRQ47 and so on. auth_irq_bmp just
>>>> transform xIRQ number to bit position which it will have in real APLIC
>>>> register. Just as an example, lets take vIRQ5 and vIRQ47.
>>>>
>>>> As reading or writing register setie[k] reads or potentially modifies
>>>> the enable bits for interrupt sources k × 32 through k × 32 + 31. For an
>>>> implemented interrupt source i within that range, the enable bit for
>>>> source i corresponds with register bit (i mod 32).
>>>> So for:
>>>>     - vIRQ5 == pIRQ5 we have to set bit 5 in setie[0]
>>>>     - vIRQ47 == pIRQ47 we have to set bit 15 in setie[1]
>>>>
>>>> Probably it was not the best idea to declare auth_irq_bmp as it will
>>>> look in h/w and maybe just 'bool auth_irq_bmp[1024]' would be more clearer.
>>>>
>>>> So irqs number are still stay "sparsed" in guest.
>>> Well, twice (or more) as sparse in the example you give, compared to the
>>> host.
>>
>> Just to be sure that I fully understand your concern here.
>>
>> The difference between xIRQ5 and xIRQ47 is 42 bits (if for 1 irq we are
>> using 1 bit) which leads to that we have somewhere allocated 48 bit
>> bitmap where only two bits will be set, all others will be zero.
> 
> Why 48-bit bitmap? As you inherit the property from the host, it'll be e.g.
> 1024 bits. Compared to the host, each guest will have yet fewer bits set in
> there.

48-bit bitmap specifically in this example because IRQ47 is the highest 
mentioned here, so if we won't compress zeros between IRQ0-4 and IRQ6-46 
it will be needed 48-bit to cover IRQs from IRQ0 to IRQ47. I thought 
about that as it seems like I misunderstood what you mean by "sparsed in 
guest" and the way how I have to deal with that.

> 
>> Instead it would be better to have to do mapping: pIRQ5 -> vIRQ1, pIRQ47
>> ->vIRQ2, right?
> 
> Which specific mapping I don't care very much. There may also be conventions
> to adhere to (on x86 for example there are).

If just bitmap is okay here ... then I am okay with using it.

> 
>> If yes, won't we still store somewhere this mapping? it seems like
>> having 'unsigned int auth_irq_bmp[1024]' is a good option where index
>> will be vIRQ number and 'unsigned int' will be pIRQ number. But at the
>> moment I think that we could go with 1:1 IRQ number mapping and then
>> have 'bool auth_irq_bmp[1024]' will be more then enough and will safe
>> some memory.
> 
> Well, if using 1:1 mapping was clearly identified as "for the time being",
> then that might be acceptable (for the time being).
> 
> As to you (again) suggesting "bool auth_irq_bmp[1024]" - why would you use
> an array of bool-s when a bitmap can do the same in 1/8th of the space?

... just bitmap will better.

Thanks.

~ Oleksii


From xen-devel-bounces@lists.xenproject.org Mon Apr 20 15:43:20 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 20 Apr 2026 15:43:20 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1286271.1567367 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wEqmI-0000BG-GJ; Mon, 20 Apr 2026 15:43:14 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1286271.1567367; Mon, 20 Apr 2026 15:43: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 1wEqmI-0000B8-Cj; Mon, 20 Apr 2026 15:43:14 +0000
Received: by outflank-mailman (input) for mailman id 1286271;
 Mon, 20 Apr 2026 15:43:13 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92) id 1wEqmH-0000B1-6P
 for xen-devel@lists.xenproject.org; Mon, 20 Apr 2026 15:43:13 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wEqmG-00Dxww-Ja
 for xen-devel@lists.xenproject.org; Mon, 20 Apr 2026 17:43:12 +0200
Received: from [10.42.69.3] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <oleksii.kurochko@gmail.com>)
 id 69e64961-5cb7-0a2a0a5109dd-0a2a4503bb5a-44
 for <xen-devel@lists.xenproject.org>; Mon, 20 Apr 2026 17:43:12 +0200
Received: from [209.85.208.181] (helo=mail-lj1-f181.google.com)
 by tlsNG-33051d.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.1)
 (envelope-from <oleksii.kurochko@gmail.com>)
 id 69e64990-672d-0a2a45030019-d155d0b5e841-3
 for <xen-devel@lists.xenproject.org>; Mon, 20 Apr 2026 17:43:12 +0200
Received: by mail-lj1-f181.google.com with SMTP id
 38308e7fff4ca-38e7d983f91so35157511fa.2
 for <xen-devel@lists.xenproject.org>; Mon, 20 Apr 2026 08:43:12 -0700 (PDT)
Received: from [192.168.1.6] (user-109-243-69-121.play-internet.pl.
 [109.243.69.121]) by smtp.gmail.com with ESMTPSA id
 2adb3069b0e04-5a4187e1116sm3057809e87.54.2026.04.20.08.43.10
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Mon, 20 Apr 2026 08:43:10 -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=20251104 header.d=gmail.com header.i="@gmail.com" header.h="Content-Transfer-Encoding:Subject:From:Cc:To:Content-Language:User-Agent:MIME-Version:Date:Message-ID"
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=gmail.com; s=20251104; t=1776699791; x=1777304591; darn=lists.xenproject.org;
        h=content-transfer-encoding:subject:from:cc:to:content-language
         :user-agent:mime-version:date:message-id:from:to:cc:subject:date
         :message-id:reply-to;
        bh=jo3SSlagsygm7+QLvQ0Jkrr9R/z1fIVartmTOXPMR14=;
        b=MkkcTRDjezX3j8xgi/aUUo0AQsQ5QZPeOavsPw3gKWYfz3fFbZ3cNH+IBpfSVE2+91
         GI1qhn2/iEp4Z3Msbqft9MIHROOQlwl4GaQvZwzJUU/94UDHx5XUfnXo6SlWRfG5m4s6
         eg5HnXET41MkvdJnfKteSDadZhAsB2r1enPuF/lMmknrkpUGL4OIV+H1tg61GalsEauW
         1287We0kclX3yfGN37vNfE94MOmKIqh5WRRu24D6JCoWuXbbp6SqBffr0nHPro6u2EJY
         +Bc30zFzPopv3h0gu3bJBQZ5JabEy3KCUg3/CDsFbE/eui7f8SgbPlMxTBPb1F19hCz9
         cbsg==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20251104; t=1776699791; x=1777304591;
        h=content-transfer-encoding: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;
        bh=jo3SSlagsygm7+QLvQ0Jkrr9R/z1fIVartmTOXPMR14=;
        b=jdaEBQUuGQp1yNZns+RaOxfvapQhIx+GZtdhXq+OUImbevBuv7wvvi5ErMcxk+aOMe
         j91tgaJgbTmyZrKfJFNet9W4uk7M0HXlXJYuku3WmjzTJDMErlVzTZ870RVX1Syg1jqs
         puhST5/eczxHo0cZOg07He+bTrPk3ivtPvwoRLm2sbedHjDKtFucHJZMJH5JN5Sci62U
         2WRS6GewE6Nvl4j7/1VBvbE2LLrt1o2MhSTemrsL+zgBHRf6d8Gg+feypQiMZER2HpfU
         mSuPNDqjIYqC3u+dvXSgzGaexSzGtqL/ikZtbBIugEpJeDmaaajLNTZkRVIVHWbObzoz
         3QeA==
X-Gm-Message-State: AOJu0YxceNR/ajiBp50Ff44f10dysxrDjKlemd+I3wFgzd2z4Jqt5rzO
	4jkUkJigvs/S8y3c3uWzI+gVW4XcgrtVI/4RY7OHGbPm3fUcx3QoxmW8K2YUfA==
X-Gm-Gg: AeBDiesi2IXVaa0vbAA6jkrYo83Eaz1UoDUb+m6+H18ShTGvBydOPMfM9FCYa+f3Ct1
	SI/TzpBfXQ2X5rTmHMtakllbFyE/P9CBLIbiHZRejpw9N2wEK6snlIFORUW/dzdLbtue+h7DtL6
	Y4GrSL8XrEGaDLGWpoQH4ABv/3Qe9hJMlnc1SS/hl165pScjsxBGdX+o59YK4Wgbt5txo6I+rCO
	+8GLuVdibvf4LNt79VVR/gg8DfRv4vbpOLLhKaRa+odmqp5iODx/RVd1P+veydSfQT+clta4HPZ
	jCRdFLVidB6VKyteYWvsh/rPZQ9asLnZAD69V1DuEqygy8A9d+HA9aEbq5VW8JrN6QxidXumxI1
	JpiPiSfBvPeox7khqJU6GgRrxLXIrCYM22X26RD3YQTI7FwWMingJ7uSkTYKkRUCGL7iBKy/cyR
	dIpIe+cuHhqIPgYKse3g9SMDawKM+iV2SuWfUjx+oqAaDVGHqhk26Uj1qW/njvNWN23U8EmX8is
	48AXn7NMf+86A==
X-Received: by 2002:a05:6512:1295:b0:5a1:3d7f:8f99 with SMTP id 2adb3069b0e04-5a4172e310emr4540745e87.33.1776699791169;
        Mon, 20 Apr 2026 08:43:11 -0700 (PDT)
Message-ID: <832ac76c-12da-415d-b598-7865ae0133ad@gmail.com>
Date: Mon, 20 Apr 2026 17:43:09 +0200
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Content-Language: en-US
To: Xen-devel <xen-devel@lists.xenproject.org>
Cc: Community Manager <community.manager@xenproject.org>,
 "committers@xenproject.org" <committers@xenproject.org>
From: Oleksii Kurochko <oleksii.kurochko@gmail.com>
Subject: Feature freeze date for Xen 4.22 is Fri May 08, 2026
Content-Type: text/plain; charset=UTF-8; format=flowed
Content-Transfer-Encoding: 7bit
X-purgate-ID: tlsNG-33051d/1776699792-28B74938-007F27E7/10/73395122804
X-purgate-type: spam
X-purgate-size: 452

Hello everyone,

The feature freeze date for Xen 4.22 is Fri May 08, 2026

Patches adding new features must be committed by this date.

Straightforward bug fixes may continue to be accepted by maintainers
beyond this point. They could go without R-Acked.

If you would like your features included in this release, please ensure
they are committed by the deadline.

Thank you in advance, and have a great week!

Best regards,
   Oleksii


From xen-devel-bounces@lists.xenproject.org Mon Apr 20 15:43:23 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 20 Apr 2026 15:43:23 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1286273.1567374 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wEqmR-0000R3-M8; Mon, 20 Apr 2026 15:43:23 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1286273.1567374; Mon, 20 Apr 2026 15:43: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 1wEqmR-0000Qw-Ir; Mon, 20 Apr 2026 15:43:23 +0000
Received: by outflank-mailman (input) for mailman id 1286273;
 Mon, 20 Apr 2026 15:43:22 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92) id 1wEqmP-0000Q2-VJ
 for xen-devel@lists.xenproject.org; Mon, 20 Apr 2026 15:43:22 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wEqmP-00BTxY-Bq
 for xen-devel@lists.xenproject.org; Mon, 20 Apr 2026 17:43:21 +0200
Received: from [10.42.69.1] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <jbeulich@suse.com>)
 id 69e64985-bab6-0a2a0a5309dd-0a2a450191e4-24
 for <xen-devel@lists.xenproject.org>; Mon, 20 Apr 2026 17:43:21 +0200
Received: from [209.85.128.43] (helo=mail-wm1-f43.google.com)
 by tlsNG-d62444.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.1)
 (envelope-from <jbeulich@suse.com>)
 id 69e64999-c1f2-0a2a45010019-d155802bb5d9-3
 for <xen-devel@lists.xenproject.org>; Mon, 20 Apr 2026 17:43:21 +0200
Received: by mail-wm1-f43.google.com with SMTP id
 5b1f17b1804b1-488b150559bso24874805e9.1
 for <xen-devel@lists.xenproject.org>; Mon, 20 Apr 2026 08:43:21 -0700 (PDT)
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-48a52583fe7sm29335045e9.13.2026.04.20.08.43.19
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Mon, 20 Apr 2026 08:43:20 -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=google header.d=suse.com header.i="@suse.com" header.h="Content-Transfer-Encoding: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=1776699801; x=1777304601; darn=lists.xenproject.org;
        h=content-transfer-encoding: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;
        bh=yengZ7hhRPyDJ8cmzPowC1Z+H6tZSiWNJjKoi8LZG1I=;
        b=XTrdSlPs8JFcwiokCyT7zxCQuuaBj3Xg9rIZo84ZAvC4Q/bCQZ3DA2PoiC3IqC5nGa
         5+/tO2fDQDWALte4dY+nXW7aZwmWZW2FgGbLiDxr7FKPB2w/aVZXCFtPmPJUHsLaw52M
         C5SEqHSNOjaOx8f5i/huwmhzH6ucHGZnHr9GbTdtrzxzMw3OCCijFGRg9AIdlqJtCzXU
         Xlu/0z666PZRaDPnvghdJ5vwaCP5Wj4BOnp0yP1KroKC8lgAeliCm5OJk7TDop+uObaj
         nBuIhWzzI9StlzhCbu3zskHNCu6jt43ADI3MLXJ+opNmiV/ZnpnUxCbgFmA9AE1pRo2F
         eyhA==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20251104; t=1776699801; x=1777304601;
        h=content-transfer-encoding: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;
        bh=yengZ7hhRPyDJ8cmzPowC1Z+H6tZSiWNJjKoi8LZG1I=;
        b=TDxqczz6nCX3KDiQoIpPAp6SF5SLXN2E1OjNfqjrb2rRrAFYsCeh5pIqZ68K4E+ZUq
         quaEntDs3UXJRRCx9Fk/tcOGqiJQYPA1hCGYiwtOgFTBD+1BkrRJyt1Y9pVdGUXm8rxB
         JMylDyTRCHsqO2KmlFAP31/8Pnar2T9laZ3dTZj18X0/qmBR118ImKhHbFNRlnuugrFG
         u6HXrgvaxn8cukCpCHbCUy/se4N+FguteY/E030eSMxSQcrhJkfjzxK/8ku3pyteW7Zd
         QTOWHPyIwpF24WGYjEPp+YxwZ+G+wfZzUld2+1AUJJIeFC6il4nMLFxu8lGr64S1rOpi
         GuOw==
X-Forwarded-Encrypted: i=1; AFNElJ9kksNjO5QmdxI3P7bHIMAcsMDh0rszn+EY1IhqJ7/PyGyRXZSkPGAjOTf/0R6uoHhk27ninz59dW4=@lists.xenproject.org
X-Gm-Message-State: AOJu0YwydrKQ34tZSiVuUHCjbN6E6M9IKJn+1CO+wM4mhQfgK73uSAHd
	o+ryuSAQ9MGB554hgd6tvl3Qv1Yfngwt5Um6tYAsvxnEaVEYuv670zisnc96Q6n5Gg==
X-Gm-Gg: AeBDievFadRT44gPHlrFbFWjKau/+SuyYZq32MOp8JVL76L12UFkS2nhIp+5BmtKUX9
	Agqp1GkHuLd/VoW7eYmHUnvKCMDHKVd9YdPNvpL43azbcS0e0SdbvJlephcncrvMwHkebQSPhun
	LRvNNBJ5LKiawW1VePC7DQwj36iZSh3k0z4o0yyfq7ZRVh6Qzn585GWrZZ0Jbaxcg0P4DyZ3QTe
	B1l6TndqbYaT4yiTwLSV4NMzrEECxG9RUAGQDIhC3htbRDLL1JXZh2BcuyGn2ka0qlO04Hd9WUp
	iyle6nplRzKd5VHEt84XAxHQbn2MXrlaENIXmWlF6NcHYN21cnIG4YXs/5HNagY4S515tTQODYB
	gdEODHQAUeoLTnAWr+YR9E9+LgF/EGAUmr8uWeXkPeJaCPKykY8zHStfs1eNBpNrtygS0lP/oNE
	ki5Er8/HJbvSI6MgEKgFQ3tjYJHPLvMZzGrWD8qH49cp+CpRsBvXhfsFKEbKy884+kpqYV7bxkD
	n7Ph1Wl9QEzVrZzwp9Aa+Saag==
X-Received: by 2002:a05:600c:348b:b0:489:5022:39a4 with SMTP id 5b1f17b1804b1-4895040c025mr43975565e9.9.1776699800496;
        Mon, 20 Apr 2026 08:43:20 -0700 (PDT)
Message-ID: <82c7f0f8-4ea7-449b-ac7c-2a044f83028c@suse.com>
Date: Mon, 20 Apr 2026 17:43:21 +0200
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH v3 02/12] xen: fix len type for guest copy functions
To: Oleksii Kurochko <oleksii.kurochko@gmail.com>
Cc: Romain Caritey <Romain.Caritey@microchip.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.pau@citrix.com>,
 xen-devel@lists.xenproject.org
References: <cover.1775836193.git.oleksii.kurochko@gmail.com>
 <9154aea41a11bc0ba95ad15c217db79d029dd119.1775836193.git.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: <9154aea41a11bc0ba95ad15c217db79d029dd119.1775836193.git.oleksii.kurochko@gmail.com>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 7bit
X-purgate-ID: tlsNG-d62444/1776699801-BC617FF4-BD82409F/10/73395122804
X-purgate-type: spam
X-purgate-size: 2241

On 10.04.2026 17:54, Oleksii Kurochko wrote:
> Widen the len argument of copy_to_guest_phys_flush_dcache() and the
> copy_to_guest_phys_cb typedef from unsigned int to unsigned long, as
> the function can be used to copy large blobs such as the initrd which
> may exceed 4GB. Update the internal copy_guest() len argument to
> unsigned long accordingly.
> 
> Change the type for local variable size in copy_guest() to avoid
> compilation error because of type mismatch.
> 
> raw_* wrappers above copy_guest() keep returning unsigned long to
> avoid type narrowing; it is not an issue for raw_*'s len argument
> to remain 'unsigned int' since the assignment to copy_guest()'s wider
> unsigned long parameter is safe and there is no raw_* users who
> are using a value bigger than what can fit into 'unsigned int'.
> 
> Reported-by: Jan Beulich <jbeulich@suse.com>
> Signed-off-by: Oleksii Kurochko <oleksii.kurochko@gmail.com>

Reviewed-by: Jan Beulich <jbeulich@suse.com>
With two suggestions: For one, the patch subject prefix may want to be (or
include) "arm:", to draw Arm maintainers' attention. And then ...

> --- a/xen/arch/arm/guestcopy.c
> +++ b/xen/arch/arm/guestcopy.c
> @@ -53,7 +53,7 @@ static struct page_info *translate_get_page(copy_info_t info, uint64_t addr,
>      return page;
>  }
>  
> -static unsigned long copy_guest(void *buf, uint64_t addr, unsigned int len,
> +static unsigned long copy_guest(void *buf, uint64_t addr, unsigned long len,
>                                  copy_info_t info, unsigned int flags)
>  {
>      /* XXX needs to handle faults */
> @@ -65,7 +65,7 @@ static unsigned long copy_guest(void *buf, uint64_t addr, unsigned int len,
>      while ( len )
>      {
>          void *p;
> -        unsigned int size = min(len, (unsigned int)PAGE_SIZE - offset);
> +        unsigned long size = min_t(unsigned long, len, PAGE_SIZE - offset);

... I think we'd be better off avoiding min_t() whenever possible, i.e.
when min() can sensibly be used (preferably, unlike originally here, also
without a cast). PAGE_SIZE being of type long, "PAGE_SIZE + 0UL - offset"
would look to be an option. Yet of course Arm maintainers may dislike
that form ...

Jan


From xen-devel-bounces@lists.xenproject.org Mon Apr 20 15:44:39 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 20 Apr 2026 15:44:39 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1286294.1567389 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wEqne-0001GK-79; Mon, 20 Apr 2026 15:44:38 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1286294.1567389; Mon, 20 Apr 2026 15: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 1wEqne-0001GD-2v; Mon, 20 Apr 2026 15:44:38 +0000
Received: by outflank-mailman (input) for mailman id 1286294;
 Mon, 20 Apr 2026 15:44:36 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92) id 1wEqnc-0001G0-6v
 for xen-devel@lists.xenproject.org; Mon, 20 Apr 2026 15:44:36 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wEqnb-004NqN-Jn
 for xen-devel@lists.xenproject.org; Mon, 20 Apr 2026 17:44:35 +0200
Received: from [10.42.69.2] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <jbeulich@suse.com>)
 id 69e649e3-2eae-0a2a0a5409dd-0a2a4502c78e-2
 for <xen-devel@lists.xenproject.org>; Mon, 20 Apr 2026 17:44:35 +0200
Received: from [209.85.128.50] (helo=mail-wm1-f50.google.com)
 by tlsNG-720697.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.1)
 (envelope-from <jbeulich@suse.com>)
 id 69e649e3-af86-0a2a45020019-d1558032a8eb-3
 for <xen-devel@lists.xenproject.org>; Mon, 20 Apr 2026 17:44:35 +0200
Received: by mail-wm1-f50.google.com with SMTP id
 5b1f17b1804b1-4890d945eb4so10042645e9.0
 for <xen-devel@lists.xenproject.org>; Mon, 20 Apr 2026 08:44:35 -0700 (PDT)
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-488fb75ab25sm93713115e9.11.2026.04.20.08.44.32
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Mon, 20 Apr 2026 08:44:33 -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=google header.d=suse.com header.i="@suse.com" header.h="Content-Transfer-Encoding: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=1776699875; x=1777304675; darn=lists.xenproject.org;
        h=content-transfer-encoding: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;
        bh=/leg5zPIHXcYJT9pnVBCSrFES28ADZ8CQyyvDb61MzA=;
        b=HaUTGeNzkIMyzTu4M0dOH6mR99k+QVvh3AiOGZ4pc4CmIUZEakz8ABLxbiRdJN687R
         2KSqNoyF5y/ZUgwWkixnOb2DyVRo/Ysz8o8F/6V8woJrRu3PBCQp6c1ZitFhZm3XaGwS
         ujxXjyaQBybh2VtCsSvovLHU7smYjEw3y5WvL8xyBZC3mwf/8REZM2BDOGBqStf8Izbz
         KVpuW7EMP4iBI6klLAB2YJl5vKLyfq8EDtS2RNIVhkBHvQJ1o8MJ1xHB6mZCL82mN63A
         jhkmD1KZrzBfYZ8+B/Cs8KSv6Pob0ydBwLhkzA2jXJ3pCGrGu1lIYh+v8R8vfhvRvNGj
         VZ1Q==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20251104; t=1776699875; x=1777304675;
        h=content-transfer-encoding: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;
        bh=/leg5zPIHXcYJT9pnVBCSrFES28ADZ8CQyyvDb61MzA=;
        b=DfTrrUs1OwrH+WrwxqVnLCKpC48cCPvVec2WFBIWVFcFPUsBqDHo5X/o7bNm+1+alh
         2KlNxUvST+nqpCHEZMzlwE4wb2lPMX66WuupQWGFMAIww3OKWl8bgZam3jiHrhOiLJHL
         g+N117YWz0duJzLzfdArXkoR36vYo2gj4pTHm6kj9aqRLEHpSm8swTgAxEVt8j+Y0XWL
         Tb5l9geWWScPKXHGYJifNVWi31T2DZiroUnCjx4x8+CTb1XjMCu3NxFp50f9q2dXdNZ8
         ugzwnea6QqMyZalwuZpKnVG3k4soU7KthjcsogYBZqi2zp77q7nK/AFXVKjyy/JaHWfn
         SCNw==
X-Forwarded-Encrypted: i=1; AFNElJ9pA+EROlEMLMYp13VMuXUR17vK0jf//G9HoyjuADweTnXCqMjZp+5DSO9FOwb7ndC+DvViwfCik0c=@lists.xenproject.org
X-Gm-Message-State: AOJu0YxRgyYLneF6IJm0FoGvaZ3/1z7QLhp2FdQs+WdwrsmCmG2Tz+NA
	b3KQYKChCNQATuPUOsbbjmIr3sDhF257ZL00NmUoSuaDtDkzrrsQ6CaBe9zybTKMMBTcsi0NK1H
	seZtsbg==
X-Gm-Gg: AeBDiesUloYcFEQL+fd/xuznNFnjfZ8AfYEDlS9V4KM/mxIdP/2Wan7NnLIMRovWgkI
	dY32+W2HF5Uf440UeTMh9s4O2zO0S5TnivHWgEECE6lFv9bQWV8Lu/OvXwNeFXTKHE19/cafSeh
	NuXAJvp2aeX7bL2NuCHkzWs6TyoieChoMaUZT5PfCRrQ0Pgu6s/aoKTHZoVSY0/5ydWADRLGgv4
	a+9lNgbbFnV4cIq//UDMdM75nDd0ohFL4GyPcaHo5IRnL6P1zig+h0VtR6jzf4/Wz0QmD75yuaq
	vaC91YxewGUDO1kypMi3+CslS7rs4maTqTjAPdbk49lYhdaDc7WSxoNiqM+nVWRZrgyA33kJLm8
	GmCGVEv3E0SiCxvYdmo+Ekwo1CetVzWFDmGW7zfIX1cH91sfNSo6fzbwhyZmeVDxo+G1f/0KhSj
	7SsaZWzxOk9F/NafTEsyXSJ7D5s8K5Fyng7o365R/MkEYyIEZnl98BEMqEg2v5QvZgkDBtq6PUr
	RBXRav7aS/JZL9VW/KehIOh+g==
X-Received: by 2002:a05:600c:c167:b0:485:3428:774c with SMTP id 5b1f17b1804b1-488fb889336mr190069235e9.4.1776699874874;
        Mon, 20 Apr 2026 08:44:34 -0700 (PDT)
Message-ID: <d942bf90-6f8d-4389-90e6-a486ac510e1b@suse.com>
Date: Mon, 20 Apr 2026 17:44:34 +0200
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH v3 02/12] xen: fix len type for guest copy functions
To: Oleksii Kurochko <oleksii.kurochko@gmail.com>
Cc: Romain Caritey <Romain.Caritey@microchip.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.pau@citrix.com>,
 xen-devel@lists.xenproject.org
References: <cover.1775836193.git.oleksii.kurochko@gmail.com>
 <9154aea41a11bc0ba95ad15c217db79d029dd119.1775836193.git.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: <9154aea41a11bc0ba95ad15c217db79d029dd119.1775836193.git.oleksii.kurochko@gmail.com>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 7bit
X-purgate-ID: tlsNG-720697/1776699875-886D4161-9CCD578C/10/73395122804
X-purgate-type: spam
X-purgate-size: 1044

On 10.04.2026 17:54, Oleksii Kurochko wrote:
> Widen the len argument of copy_to_guest_phys_flush_dcache() and the
> copy_to_guest_phys_cb typedef from unsigned int to unsigned long, as
> the function can be used to copy large blobs such as the initrd which
> may exceed 4GB. Update the internal copy_guest() len argument to
> unsigned long accordingly.
> 
> Change the type for local variable size in copy_guest() to avoid
> compilation error because of type mismatch.
> 
> raw_* wrappers above copy_guest() keep returning unsigned long to
> avoid type narrowing; it is not an issue for raw_*'s len argument
> to remain 'unsigned int' since the assignment to copy_guest()'s wider
> unsigned long parameter is safe and there is no raw_* users who
> are using a value bigger than what can fit into 'unsigned int'.
> 
> Reported-by: Jan Beulich <jbeulich@suse.com>
> Signed-off-by: Oleksii Kurochko <oleksii.kurochko@gmail.com>

Actually: You say "fix" in the subject. How about sorting out a correct
Fixes: tag then?

Jan


From xen-devel-bounces@lists.xenproject.org Mon Apr 20 15:47:00 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 20 Apr 2026 15:47:00 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1286304.1567397 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wEqpv-0001nC-IF; Mon, 20 Apr 2026 15:46:59 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1286304.1567397; Mon, 20 Apr 2026 15:46: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 1wEqpv-0001n5-Ee; Mon, 20 Apr 2026 15:46:59 +0000
Received: by outflank-mailman (input) for mailman id 1286304;
 Mon, 20 Apr 2026 15:46:58 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92) id 1wEqpu-0001mz-J8
 for xen-devel@lists.xenproject.org; Mon, 20 Apr 2026 15:46:58 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wEqpt-0092gc-Le
 for xen-devel@lists.xenproject.org; Mon, 20 Apr 2026 17:46:57 +0200
Received: from [10.42.69.7] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <jbeulich@suse.com>)
 id 69e64a68-5cb7-0a2a0a5109dd-0a2a45079ae8-16
 for <xen-devel@lists.xenproject.org>; Mon, 20 Apr 2026 17:46:57 +0200
Received: from [209.85.128.49] (helo=mail-wm1-f49.google.com)
 by tlsNG-ef75cf.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.1)
 (envelope-from <jbeulich@suse.com>)
 id 69e64a71-229c-0a2a45070019-d1558031bcfe-3
 for <xen-devel@lists.xenproject.org>; Mon, 20 Apr 2026 17:46:57 +0200
Received: by mail-wm1-f49.google.com with SMTP id
 5b1f17b1804b1-4896c22fcbaso7689745e9.0
 for <xen-devel@lists.xenproject.org>; Mon, 20 Apr 2026 08:46:57 -0700 (PDT)
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-488ffc558f2sm170314415e9.1.2026.04.20.08.46.56
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Mon, 20 Apr 2026 08:46:56 -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=google header.d=suse.com header.i="@suse.com" header.h="Content-Transfer-Encoding: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=1776700017; x=1777304817; darn=lists.xenproject.org;
        h=content-transfer-encoding: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;
        bh=Z+DK9r27z8FkDNPpAXB5qEP7dssxbh520W9qiu1OJko=;
        b=PoCEBd7Ylot4wh8xOnsoka5P51QgRUEOShUgvcOo66KICwcZPcv2K644pt8aWXzFTx
         fVkSImpc9oXGNVD/KZBX5iC4FFFhzN18EgGufl46MO3apZAFss3mCUFethnnW76lBhuA
         7cq8Vjb/4r1b5/P61fOjtqtE0a4hCsR4Xr5W6teY5qAbh6Z/3pO/qJzOggARd0VQF7SW
         sNPLnqyuUvbSrVoQOp8cw2HUtqdzOU7cOxBpDaQq3AdAWZ63U8B/4K0J2r5Z3l4ixIYI
         bgVZ4pv4g8yD/x7gw8eVccjehk2oi0VKL8W77TCOJ4J38dOHfZH5nbS8KqpRT9vyb3XE
         Rjbw==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20251104; t=1776700017; x=1777304817;
        h=content-transfer-encoding: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;
        bh=Z+DK9r27z8FkDNPpAXB5qEP7dssxbh520W9qiu1OJko=;
        b=IUHNsSBiaB7dNNJhRUEmhqEVBCoqag8P6oHiBfrHwTU+NEVOXCWpGsjZ5N0g4XHO9h
         R2/nKcDo1ExmsZWH24dLkLxIwD5SKiQFh+KpEiKa0o9UC2qPWyn/obZjufPxwTrGpECF
         erN4ngULg0bscsNz6XMQJ85qqT75afeqH++DJF4Wjr00ogrLCLDr2X7xCR0ErQlmnAq3
         japeGiGjLTKUoAPJjUKJtxbowtHw/QKEADm89RlDlQ3wE/KEuPH4iuLOJ01G1RsIS3fZ
         +4/CEkkkNynXOySCxUcBTwV949qx7J3qWL1vwA5+JMousomZxO52llZ84qxeT5Z3WE47
         YsWg==
X-Forwarded-Encrypted: i=1; AFNElJ/7ur+FKU8xZDzFutPkMDaUHIQ0MTLUGw+PMIDOYzjbN7T1qWjn8qBk7D250c5WFothviPUS/ZZE0w=@lists.xenproject.org
X-Gm-Message-State: AOJu0Ywys5sSDOusfaS7cOcjQudthPaxw9Cpc6cq6xMU/E3/E0zMngRd
	9crGU129R8X/HK3y4PpDu6elJyNNbWP5SuKRGqjUZgbfcu2zXlBT2OyiSWszlbxnqw==
X-Gm-Gg: AeBDietqoI7oaRPjqmdqFFJzKBLiZwKUheEcqPVmOwfWwSDzPcT1jREPKwrfqgqaDGJ
	o4xLYYMDVF7vMpLQE7AuB+yWMmQkhAuKto0PkU1a10T/wQz2avQe0JxOTGqBm0YOLzsLUw0nQya
	DhrDLuK4Hkw4IwcO/BgcXKNhNqttmDSABe+30LXZUay5cLYFdMr/KyGP0NHl90B5aRnGcegxXDi
	w16SlSmwJi7oqQR52Z6n+irM5XeG2FvVHAxyZkeDz2KIcLfP5tuVB1YO4dP+UnDFzSp7Us6iqtR
	GnW+O/PzsMXDX4cRwKguXUZGr/pEllWCDo22sDn03Twkb5QujFVG94UFzZe/M7KHp9nSn3ApGjZ
	FETzB3FUeoDd0Iiuec3WGYvG1wuo7Db6B5W4QYsgE/ub+INndg8bdWYhpGKIChQwZipTbBUlRVm
	14vFzuIIoMKT5Y0lZ5pm61pPKrv/jcwUySTTsJ/hreQE6b3/ebj95S2txkyW8iW6JF52vVT1ASH
	qelePo03s09tom8qBC3jt5gxQ==
X-Received: by 2002:a05:600d:8449:b0:485:445a:87d1 with SMTP id 5b1f17b1804b1-488fb74a66cmr174513515e9.8.1776700016965;
        Mon, 20 Apr 2026 08:46:56 -0700 (PDT)
Message-ID: <f166ad21-08c6-41fd-8c27-e43f87a5f249@suse.com>
Date: Mon, 20 Apr 2026 17:46:57 +0200
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH v3 03/12] xen/riscv: implement copy_to_guest_phys()
To: Oleksii Kurochko <oleksii.kurochko@gmail.com>
Cc: Romain Caritey <Romain.Caritey@microchip.com>,
 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.pau@citrix.com>,
 Stefano Stabellini <sstabellini@kernel.org>, xen-devel@lists.xenproject.org
References: <cover.1775836193.git.oleksii.kurochko@gmail.com>
 <265d9fe7c0ff46c1c969156c889e133593d57fff.1775836193.git.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: <265d9fe7c0ff46c1c969156c889e133593d57fff.1775836193.git.oleksii.kurochko@gmail.com>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 7bit
X-purgate-ID: tlsNG-ef75cf/1776700017-AF57BC48-A4402F70/10/73395122804
X-purgate-type: spam
X-purgate-size: 2918

On 10.04.2026 17:54, Oleksii Kurochko wrote:
> Introduce copy_to_guest_phys() for RISC-V, based on the Arm implementation.
> 
> Add a generic copy_guest() helper for copying to and from guest physical
> (and potentially virtual addresses in the future), and implement
> translate_get_page() to translate a guest physical address into a struct
> page_info via the domain p2m.
> 
> Compared to the Arm code:
> - Drop COPY_flush_dcache(), as no such use cases exist on RISC-V.
> - Do not implement the linear mapping case, which is currently unused.
> - Use PAGE_OFFSET() to initialize the local offset variable in copy_guest().
> 
> Signed-off-by: Oleksii Kurochko <oleksii.kurochko@gmail.com>

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

> --- /dev/null
> +++ b/xen/arch/riscv/guestcopy.c
> @@ -0,0 +1,116 @@
> +/* SPDX-License-Identifier: GPL-2.0-only */
> +
> +#include <xen/domain_page.h>
> +#include <xen/page-size.h>
> +#include <xen/sched.h>
> +#include <xen/string.h>
> +
> +#include <asm/guest_access.h>
> +
> +#define COPY_from_guest     0U
> +#define COPY_to_guest       BIT(0, U)
> +#define COPY_gpa            0U
> +#define COPY_gva            BIT(1, U)
> +
> +typedef union
> +{
> +    struct
> +    {
> +        struct vcpu *v;
> +    } gva;
> +
> +    struct
> +    {
> +        struct domain *d;
> +    } gpa;
> +} copy_info_t;
> +
> +#define GVA_INFO(vcpu) ((copy_info_t) { .gva = { vcpu } })
> +#define GPA_INFO(domain) ((copy_info_t) { .gpa = { domain } })
> +
> +static struct page_info *translate_get_page(copy_info_t info, uint64_t addr,
> +                                            bool gva, bool write)
> +{
> +    p2m_type_t p2mt;
> +    struct page_info *page;
> +
> +    /*
> +     * Not implemented yet.
> +     *
> +     * If gva == true, the operation will likely require a struct vcpu
> +     * rather than just a struct domain. For this reason copy_info_t is
> +     * already passed here instead of only struct domain.
> +     */
> +    BUG_ON(gva);
> +
> +    page = get_page_from_gfn(info.gpa.d, paddr_to_pfn(addr), &p2mt, P2M_ALLOC);
> +
> +    if ( !page )
> +        return NULL;
> +
> +    if ( write ? p2mt != p2m_ram_rw : !p2m_is_ram(p2mt) )
> +    {
> +        put_page(page);
> +        return NULL;
> +    }
> +
> +    return page;
> +}
> +
> +static unsigned long copy_guest(void *buf, uint64_t addr, unsigned long len,
> +                                copy_info_t info, unsigned int flags)
> +{
> +    unsigned int offset = PAGE_OFFSET(addr);
> +
> +    BUILD_BUG_ON((sizeof(addr)) < sizeof(vaddr_t));
> +    BUILD_BUG_ON((sizeof(addr)) < sizeof(paddr_t));
> +
> +    while ( len )
> +    {
> +        void *p;
> +        unsigned long size = min_t(unsigned long, len, PAGE_SIZE - offset);

... this adjusted to whatever the final shape is going to be on Arm.

Jan


From xen-devel-bounces@lists.xenproject.org Mon Apr 20 15:49:27 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 20 Apr 2026 15:49:27 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1286312.1567406 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wEqsE-0002kS-Te; Mon, 20 Apr 2026 15:49:22 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1286312.1567406; Mon, 20 Apr 2026 15:49: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 1wEqsE-0002kL-QQ; Mon, 20 Apr 2026 15:49:22 +0000
Received: by outflank-mailman (input) for mailman id 1286312;
 Mon, 20 Apr 2026 15:49:22 +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 1wEqsE-0002kF-0Z
 for xen-devel@lists.xenproject.org; Mon, 20 Apr 2026 15:49:22 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wEqsD-000hJL-9p
 for xen-devel@lists.xenproject.org; Mon, 20 Apr 2026 17:49:21 +0200
Received: from [10.42.69.6] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <jgross@suse.com>)
 id 69e64aee-2eae-0a2a0a5409dd-0a2a4506e6a6-32
 for <xen-devel@lists.xenproject.org>; Mon, 20 Apr 2026 17:49:21 +0200
Received: from [209.85.218.42] (helo=mail-ej1-f42.google.com)
 by tlsNG-16d1c6.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.1)
 (envelope-from <jgross@suse.com>)
 id 69e64b01-7371-0a2a45060019-d155da2aecfc-3
 for <xen-devel@lists.xenproject.org>; Mon, 20 Apr 2026 17:49:21 +0200
Received: by mail-ej1-f42.google.com with SMTP id
 a640c23a62f3a-ba36357195bso364461266b.0
 for <xen-devel@lists.xenproject.org>; Mon, 20 Apr 2026 08:49:21 -0700 (PDT)
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
 a640c23a62f3a-ba4520c93c7sm351216266b.27.2026.04.20.08.49.19
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Mon, 20 Apr 2026 08:49:20 -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=google header.d=suse.com header.i="@suse.com" header.h="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=1776700161; x=1777304961; darn=lists.xenproject.org;
        h=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;
        bh=soswTpUtlOs4Dq6pQv7tpnsqR85T4CN1dI5wudXZ8Ek=;
        b=CL2O9ycuuHb+nzB+yDRU+MHrtQLuj+Ww5j0tVlxtG/kyCfhcytv8AqqCUFnjuGVuTB
         ht5M8QChjJDfmjHtfEh4X3p7q0iMb9E4fyzmaEFtLdQ5XaaIBSxB42ujWY0EpbzBmjfd
         9ZR6uofAJlUaDb352u1eENk8t/Ydb4G5U1S63bqVigNOXZmbjIs8oO/HtLQD89g9a8y8
         rClp7I0z4F9wcSOHB/J0nu977IpQP+5Cn2O1UAQi+uj3kq5mo8ew4CgkNERhZPD6N4xo
         wC4GzkwGnWyh/q2GPqJh0jV0P4aGSOMCUlmWerfVxJOfxHAysUUJjuKfPSuqeYzXndnX
         VIzw==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20251104; t=1776700161; x=1777304961;
        h=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;
        bh=soswTpUtlOs4Dq6pQv7tpnsqR85T4CN1dI5wudXZ8Ek=;
        b=rVWSkD77yFuKMPuN9eOn7onKBVGHTWI6dOTk5YnBdOyo2dnJDCPA7pbk7Y/hdA2TJr
         AzpviKzgM/d2TZC0e679rVePCNu71DoAGv3gRlRwrdpeE2AkEiS6pPyDB3DJrIy/Xvx8
         k5qucdS/0t1pMMDwWqeZDmDP/rcF1lRfo3kcnZDn2sAI7tmm0cOfJ5tPlONGbXBPar9Q
         n6BjYbI1sx48yjVhqJuTd3yQ7X7m9ZosCkXgKNTM+EI9pUHrxdCDdwHrRp+Iu+6+xI0w
         fRNQyqyaU6JPUP+k6Vrv+OfX+BSRGJXS/alSi2rc9Dhbv5v4KDkEhHTosNjqjgCRuP3o
         +12g==
X-Gm-Message-State: AOJu0YxIHitLkUzts7UnF+c5/ZGI74OlP9JHH+dJy6Uy00jkAgJ3mUgu
	C239I6fVtnu0FBl4KUNoENZKGKaQFl1eA5idsF5aEODKBuZa92Gqs8rom59XmYJ1qXvFXD5Kd7P
	UuIgmzyg=
X-Gm-Gg: AeBDievGb2fdItkr6GeaiEOm99THIqCgafZRLJZzZnqm1VQ7wbiAuEMTXriETAwKrmT
	XKI9v0VAng6zTG/KXDbEqSPeDz59v9Rxt+GagqUinDBsB9ssbHFZNtYupkp7FoIgkY7OjwjfDBD
	qb/n62xV4EqaGBLa9e/J/+RT32QOBlw5D41qxO280ogVUC8JqKCgrHMo0+XqQCcRPzpVkCZvHkm
	qNVjhfO8SZKRxu6Q0XXvBTZzdoPXxgknQsIjTBpKPmc48K9MXN98Dexu+y7LWftrCGDAlmylRpV
	VpZCBHEq03ZivfFNPo+WdLOtcC/xcpIwVbMXwZZe9B5CNPNTNgriqov48KYgHAccK3gb0mZ2fkX
	XFAB/jgMv8ZoYVveo9PBu+ywyG/4NlA6jQQLVWFF8V4wdRFxw93GhVPjfYmjZhDPE8w80RLMZzL
	c3T83900QlvQE5fFTb39rF46oowcWuO9kwynWg9R8oIE9/l5LpCAUZ13IfhgQrPU6mFSwy1nJmA
	cOmPofcqXMLvt+ZD6FfRCDWaKeeIo2JRr80K0bKKw0XBArI+JKXFX8CLMvmoFtN
X-Received: by 2002:a17:907:3fa2:b0:ba7:5c47:7b1c with SMTP id a640c23a62f3a-ba75c478746mr282870966b.8.1776700160388;
        Mon, 20 Apr 2026 08:49:20 -0700 (PDT)
Message-ID: <5752e2b2-9d5d-4bd0-b645-0f4d06035be0@suse.com>
Date: Mon, 20 Apr 2026 17:49:19 +0200
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH 0/8] tools/xenstored: add support for watch depth feature
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_Pau_Monn=C3=A9?=
 <roger.pau@citrix.com>, Stefano Stabellini <sstabellini@kernel.org>
References: <20260313074751.2904215-1-jgross@suse.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: <20260313074751.2904215-1-jgross@suse.com>
Content-Type: multipart/signed; micalg=pgp-sha256;
 protocol="application/pgp-signature";
 boundary="------------K0et2j3EZuDg5QB8H8WWtxpi"
X-purgate-ID: tlsNG-16d1c6/1776700161-51F6BD75-EBFAFC66/0/0
X-purgate-type: clean
X-purgate-size: 11508

This is an OpenPGP/MIME signed message (RFC 4880 and 3156)
--------------K0et2j3EZuDg5QB8H8WWtxpi
Content-Type: multipart/mixed; boundary="------------kOYSd3m3MjnfZUdUIOIM0Pjp";
 protected-headers="v1"
From: Juergen Gross <jgross@suse.com>
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_Pau_Monn=C3=A9?=
 <roger.pau@citrix.com>, Stefano Stabellini <sstabellini@kernel.org>
Message-ID: <5752e2b2-9d5d-4bd0-b645-0f4d06035be0@suse.com>
Subject: Re: [PATCH 0/8] tools/xenstored: add support for watch depth feature
References: <20260313074751.2904215-1-jgross@suse.com>
In-Reply-To: <20260313074751.2904215-1-jgross@suse.com>
Autocrypt-Gossip: 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
 Y2ggPGpiZXVsaWNoQHN1c2UuY29tPsJ3BBMRAgAgBQJZN5xEAhsDBgsJCAcDAgQVAggDBBYC
 AwECHgECF4AAIQkQoDSui/t3IH4WIQQ+pJkfkcoLMCa4X6CgNK6L+3cgfgn7AJ9DmMd0SMJE
 ePbc7/m22D2v04iu7ACffXTdZQhNl557tJuDXZSBxDmW/tLOwU0EWTecRBAIAIK5OMKMU5R2
 Lk2bbjgX7vyQuCFFyKf9rC/4itNwhYWFSlKzVj3WJBDsoi2KvPm7AI+XB6NIkNAkshL5C0kd
 pcNd5Xo0jRR5/WE/bT7LyrJ0OJWS/qUit5eNNvsO+SxGAk28KRa1ieVLeZi9D03NL0+HIAtZ
 tecfqwgl3Y72UpLUyt+r7LQhcI/XR5IUUaD4C/chB4Vq2QkDKO7Q8+2HJOrFIjiVli4lU+Sf
 OBp64m//Y1xys++Z4ODoKh7tkh5DxiO3QBHG7bHK0CSQsJ6XUvPVYubAuy1XfSDzSeSBl//C
 v78Fclb+gi9GWidSTG/4hsEzd1fY5XwCZG/XJJY9M/sAAwUH/09Ar9W2U1Qm+DwZeP2ii3Ou
 14Z9VlVVPhcEmR/AFykL9dw/OV2O/7cdi52+l00reUu6Nd4Dl8s4f5n8b1YFzmkVVIyhwjvU
 jxtPyUgDOt6DRa+RaDlXZZmxQyWcMv2anAgYWGVszeB8Myzsw8y7xhBEVV1S+1KloCzw4V8Z
 DSJrcsZlyMDoiTb7FyqxwQnM0f6qHxWbmOOnbzJmBqpNpFuDcz/4xNsymJylm6oXiucHQBAP
 Xb/cE1YNHpuaH4SRhIxwQilCYEznWowQphNAbJtEKOmcocY7EbSt8VjXTzmYENkIfkrHRyXQ
 dUm5AoL51XZljkCqNwrADGkTvkwsWSvCSQQYEQIACQUCWTecRAIbDAAKCRCgNK6L+3cgfuef
 AJ9wlZQNQUp0KwEf8Tl37RmcxCL4bQCcC5alCSMzUBJ5DBIcR4BY+CyQFAs=

--------------kOYSd3m3MjnfZUdUIOIM0Pjp
Content-Type: multipart/mixed; boundary="------------FLIlGHUv4fAcZ2aEAzsJuxec"

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

UmVnYXJkaW5nIHRoZSB1cGNvbWluZyBmZWF0dXJlIGZyZWV6ZSwgd291bGQgaXQgYmUgcG9z
c2libGUgdG8gZ2V0IHNvbWUNCmZlZWRiYWNrIG9uIHRoaXMgc2VyaWVzPw0KDQpJIHdvdWxk
IHJlYWxseSBhcHByZWNpYXRlIGlmIGF0IGxlYXN0IHRoZSBmaXJzdCAzIHBhdGNoZXMgY291
bGQgbWFrZSBpdA0KaW50byA0LjIyLCBhcyB0aGlzIHdpbGwgYXZvaWQgdGhlIG5lZWQgdG8g
YnVtcCB0aGUgbGlieGVuc3RvcmUgbWlub3INCnZlcnNpb24gaW4gNC4yMyBhZ2Fpbi4NCg0K
DQpKdWVyZ2VuDQoNCk9uIDEzLjAzLjI2IDA4OjQ3LCBKdWVyZ2VuIEdyb3NzIHdyb3RlOg0K
PiBJbiBvcmRlciB0byByZWR1Y2UgZXhjZXNzaXZlIG51bWJlciBvZiB3YXRjaCBldmVudHMg
dGhlIHdhdGNoIGRlcHRoDQo+IGZlYXR1cmUgaGFzIGJlZW4gZGVmaW5lZCwgYWxsb3dpbmcg
dGhlIHVzZXIgdG8gbGltaXQgdGhlIG51bWJlciBvZg0KPiBub2RlIGxldmVscyBiZWxvdyB0
aGUgd2F0Y2hlZCBub2RlIHRvIGNhdXNlIGV2ZW50cy4NCj4gDQo+IFRoaXMgc2VyaWVzIGlz
IGltcGxlbWVudGluZyB0aGlzIGZlYXR1cmUgZm9yIHhlbnN0b3JlZCAoaW5jbHVkaW5nIHRo
ZQ0KPiBQViBhbmQgUFZIIHN0dWJkb20gdmFyaWFudHMpLg0KPiANCj4gUG9zc2libGUgdXNl
cnMgYXJlOg0KPiANCj4gLSB4bC9saWJ4bDogdXNlIGRvbWlkIGluZm9ybWF0aW9uIGZvciB0
aGUgc3BlY2lhbCBAaW50cm9kdWNlRG9tYWluIGFuZA0KPiAgICBAcmVsZWFzZURvbWFpbiB3
YXRjaGVzLCB3aGljaCB3aWxsIGJlIGF2YWlsYWJsZSB3aGVuIHVzaW5nIGRlcHRoID0gMQ0K
PiANCj4gLSB4ZW5jb25zb2xlZCwgbGlrZSB4bC9saWJ4bA0KPiANCj4gLSBhbnkgUFYtZGV2
aWNlIGJhY2tlbmRzIHdhdGNoaW5nIGRpcmVjdG9yaWVzIGZvciBhZGRlZCBkZXZpY2VzIChu
bw0KPiAgICB3YXRjaCBldmVudHMgd2hlbiBhbnkgZGV2aWNlIHNwZWNpZmljIG5vZGUgaXMg
bW9kaWZpZWQpDQo+IA0KPiAtIGFueSBQVi1kZXZpY2UgZnJvbnRlbmQgYW5kIGJhY2tlbmQg
d2F0Y2hpbmcgdGhlICJzdGF0ZSIgbm9kZSBvZiB0aGUNCj4gICAgb3RoZXIgc2lkZSwgaW4g
Y2FzZSB0aGUgb3RoZXIgc2lkZSBwbGF5cyBkaXJ0eSBnYW1lcyBieSBidWlsZGluZw0KPiAg
ICBsYXJnZSBzdWItdHJlZXMgYmVuZWF0aCB0aGUgInN0YXRlIiBub2RlDQo+IA0KPiBUaGlz
IHNlcmllcyBoYXMgYmVlbiB0ZXN0ZWQgd2l0aCBhIG1vZGlmaWVkIHhlbnN0b3JlLXdhdGNo
IGNsaWVudC4NCj4gVGhlIG1vZGlmaWNhdGlvbiB3aWxsIGJlIHNlbnQgYXMgc29vbiBhcyB0
aGUgcGVuZGluZyBzZXJpZXMgb2YgdGhlDQo+IHhzLWNsaWVudHMgaGFzIGJlZW4gYXBwbGll
ZC4NCj4gDQo+IE5vdGUgdGhhdCB0aGUgd2F0Y2ggZGVwdGggc2VyaWVzIGRlcGVuZHMgb24g
dGhlIHN0aWxsIHBlbmRpbmcgc2VyaWVzDQo+ICJ0b29sczogYWRkIHN1cHBvcnQgZm9yIHBl
ci1kb21haW4geGVuc3RvcmUgcXVvdGEiLg0KPiANCj4gSnVlcmdlbiBHcm9zcyAoOCk6DQo+
ICAgIHRvb2xzL3hlbnN0b3JlZDogYWxsb3cgZG9tVSB0byBnZXQgb3duIGZlYXR1cmVzDQo+
ICAgIGRvY3M6IGNsYXJpZnkgWGVuc3RvcmUgd2F0Y2ggZGVwdGggZmVhdHVyZQ0KPiAgICB0
b29scy9saWJzL3N0b3JlOiBhZGQgc3VwcG9ydCB0byB1c2Ugd2F0Y2hlcyB3aXRoIGEgZGVw
dGggcGFyYW1ldGVyDQo+ICAgIHRvb2xzL3hlbnN0b3JlZDogYWRkIGRlcHRoIGluZm9ybWF0
aW9uIHRvIHdhdGNoZXMNCj4gICAgdG9vbHMveGVuc3RvcmVkOiBhZGQgZGVwdGggaGFuZGxp
bmcgdG8gWFNfV0FUQ0gNCj4gICAgdG9vbHMveGVuc3RvcmVkOiByZXBsYWNlIHRoZSBmaXJl
X3dhdGNoZXMoKSBleGFjdCBwYXJhbWV0ZXINCj4gICAgdG9vbHMveGVuc3RvcmVkOiBleHBh
bmQgc3BlY2lhbCB3YXRjaCBoYW5kbGluZyB3aXRoIGRlcHRoIGZlYXR1cmUNCj4gICAgdG9v
bHMveGVuc3RvcmVkOiBtYWtlIFhFTlNUT1JFX1NFUlZFUl9GRUFUVVJFX1dBVENIREVQVEgg
YXZhaWxhYmxlDQo+IA0KPiAgIGRvY3MvbWFuL3hsLmNmZy41LnBvZC5pbiAgICAgICAgIHwg
ICA2ICsrDQo+ICAgZG9jcy9taXNjL3hlbnN0b3JlLnR4dCAgICAgICAgICAgfCAgMTQgKyst
DQo+ICAgdG9vbHMvaW5jbHVkZS94ZW5zdG9yZS5oICAgICAgICAgfCAgMTYgKysrDQo+ICAg
dG9vbHMvbGlicy9zdG9yZS9saWJ4ZW5zdG9yZS5tYXAgfCAgIDIgKw0KPiAgIHRvb2xzL2xp
YnMvc3RvcmUveHMuYyAgICAgICAgICAgIHwgMTE2ICsrKysrKysrKysrKysrKysrKy0tLS0N
Cj4gICB0b29scy94ZW5zdG9yZWQvY29yZS5jICAgICAgICAgICB8ICAxNSArKy0NCj4gICB0
b29scy94ZW5zdG9yZWQvZG9tYWluLmMgICAgICAgICB8ICA2NCArKysrKysrKystLS0NCj4g
ICB0b29scy94ZW5zdG9yZWQvZG9tYWluLmggICAgICAgICB8ICAgMiArDQo+ICAgdG9vbHMv
eGVuc3RvcmVkL2x1LmMgICAgICAgICAgICAgfCAgIDMgKw0KPiAgIHRvb2xzL3hlbnN0b3Jl
ZC90cmFuc2FjdGlvbi5jICAgIHwgIDE0ICstLQ0KPiAgIHRvb2xzL3hlbnN0b3JlZC90cmFu
c2FjdGlvbi5oICAgIHwgICA0ICstDQo+ICAgdG9vbHMveGVuc3RvcmVkL3dhdGNoLmMgICAg
ICAgICAgfCAxNjEgKysrKysrKysrKysrKysrKysrKysrKy0tLS0tLS0tLQ0KPiAgIHRvb2xz
L3hlbnN0b3JlZC93YXRjaC5oICAgICAgICAgIHwgIDEwICstDQo+ICAgeGVuL2luY2x1ZGUv
cHVibGljL2lvL3hzX3dpcmUuaCAgfCAgIDIgKw0KPiAgIDE0IGZpbGVzIGNoYW5nZWQsIDMy
OCBpbnNlcnRpb25zKCspLCAxMDEgZGVsZXRpb25zKC0pDQo+IA0KDQo=
--------------FLIlGHUv4fAcZ2aEAzsJuxec
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-----

--------------FLIlGHUv4fAcZ2aEAzsJuxec--

--------------kOYSd3m3MjnfZUdUIOIM0Pjp--

--------------K0et2j3EZuDg5QB8H8WWtxpi
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/Ey8FAmnmSv8FAwAAAAAACgkQsN6d1ii/Ey+0
qgf/Z+g7e9GmVzIfFyzWKjBLroIMMhYzPJZz0TH8vnZKuMtN8eIyLqY1fm4viM5SrvG3UyJfdMlz
DnGoyHfn1zWCtYaZr0pDOiFk/6oivc0mTFuIHzTWknkJRzEb+GTwkCV783ZsOv1/1OOsJNZWTp/1
S4nNBc+J+jztCLL8LOzK9xa5sDMBJpUnEPoTpjaykGeG7WiNHw4KuzfNMBsUr0LulMEUVOJuXMI4
lAtya1fSDnau1RK/w1zrp/M8Y8p0ImdfMbrz7G5n3JGxhPnOPmdJYM16yt34DcH2AZFVzjbf2dCx
2j3rULmLKGeKZroJdOu4b9oUSidQghemaRmAQYDO6g==
=tutt
-----END PGP SIGNATURE-----

--------------K0et2j3EZuDg5QB8H8WWtxpi--


From xen-devel-bounces@lists.xenproject.org Mon Apr 20 15:50:41 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 20 Apr 2026 15:50:41 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1286324.1567415 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wEqtT-0004Fc-9A; Mon, 20 Apr 2026 15:50:39 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1286324.1567415; Mon, 20 Apr 2026 15:50: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 1wEqtT-0004FV-6K; Mon, 20 Apr 2026 15:50:39 +0000
Received: by outflank-mailman (input) for mailman id 1286324;
 Mon, 20 Apr 2026 15:50:37 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <jbeulich@suse.com>) id 1wEqtR-0004FN-Oc
 for xen-devel@lists.xenproject.org; Mon, 20 Apr 2026 15:50:37 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wEqtR-0082Rl-5Q
 for xen-devel@lists.xenproject.org; Mon, 20 Apr 2026 17:50:37 +0200
Received: from [10.42.69.2] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <jbeulich@suse.com>)
 id 69e64b49-5cb7-0a2a0a5109dd-0a2a45029b36-18
 for <xen-devel@lists.xenproject.org>; Mon, 20 Apr 2026 17:50:37 +0200
Received: from [209.85.221.45] (helo=mail-wr1-f45.google.com)
 by tlsNG-720697.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.1)
 (envelope-from <jbeulich@suse.com>)
 id 69e64b4c-af86-0a2a45020019-d155dd2dcc66-3
 for <xen-devel@lists.xenproject.org>; Mon, 20 Apr 2026 17:50:37 +0200
Received: by mail-wr1-f45.google.com with SMTP id
 ffacd0b85a97d-43cf8d550bdso2912938f8f.0
 for <xen-devel@lists.xenproject.org>; Mon, 20 Apr 2026 08:50:37 -0700 (PDT)
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-43fe4e3a381sm32869395f8f.21.2026.04.20.08.50.35
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Mon, 20 Apr 2026 08:50: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=google header.d=suse.com header.i="@suse.com" header.h="Content-Transfer-Encoding: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=1776700236; x=1777305036; darn=lists.xenproject.org;
        h=content-transfer-encoding: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;
        bh=GewcUYWf61DPS06PE+C8EkQ53WngNiW6KstzIESIQrQ=;
        b=KEOgDLPHz6puPGFaHrHXOQoXXcL3VO/pcU2JLOY/rMGzh7utUw8dm9SuiO8sOcOJUn
         UGKUW/RChWCEwLnCgbwpCZY7Zc7KnVI2WcbZWfUbgJHZ/qAE5K3bk/nowPw54Di12Vru
         u2LboiahOrF5MaK+p4JB7wnqOBttVvqxdz+y6B5N2GtdEYKHVHSXrF4srqo0rNBVQ7es
         lYZBYgaQXNa6O7eqZ4kqUE14SZNFc8SeiKANvis/mx40GdBYvAWnm5kQMejtJTOa2DAI
         Q7sU3RIVwaoiGqQeQya9h9543V0E5kwl1MXVJpe7iX3sodGYM3+WtXMjA2cTp5OYmlhF
         yaLg==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20251104; t=1776700236; x=1777305036;
        h=content-transfer-encoding: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;
        bh=GewcUYWf61DPS06PE+C8EkQ53WngNiW6KstzIESIQrQ=;
        b=HrfGxUzIpgJLIyxCU6YQVM9uqPk+XbWY19OUzHzBAi6GERgZi7dCWtMet2EyYszKU3
         ySEiH8eyYiF0zdvy2ZgNSlMCux7RiBl9MXet+1sBvbse+7PqMQ7t67Myra23m7AbqNpU
         O7OW3vC9ECu4bKyQOILBUmCRc41iku2v+yR1S3bYgwt4wtbFfYIZ3UabUpI/8zTaKSov
         VvWzWfMB2OZ4jN1BL56hd86Je9WYn82qfD1TlLxsDdX3oR8SYUG8xhbv0o5BHulN+m0u
         HUma4m3+BEJG3ossuCgRVVMB+WYK/gQBQd0FRvZ08Tr8/d2Tgxydi8vrXouktmZ2WYe9
         eC6g==
X-Forwarded-Encrypted: i=1; AFNElJ+7vmstR6YrkpmzBNSKzQ2UWgG4/L1Nv6E+TaRnJNK/5x3LVQkE4zBZoo72RQTNHovE3dvCgVbS1Y0=@lists.xenproject.org
X-Gm-Message-State: AOJu0Yxa0/cg/hrs4WQP3/hpVxFLQ5ZrJDdyBcbpuJtPFh0mIIXLA++J
	mjdw5b6uPlegM1uOlGQKkoYaw3eG8nT54Pe5+CV6EYd2NzRM1ucdD2WY2/IPh9LVmA==
X-Gm-Gg: AeBDiesej0fA0omMG8AxD3+/yc0o6lMmQm6Cshkied5rC9I/XpOjzMbaQcajl9K4Uyc
	blaXSxAEW7pRcyknVSorC0C6spyAt0LmCm8uOtuiFAJcGrT5sVyvT1lrKIxbzvg2BZmXxIQHAno
	uPySQ7AhKrg3k8y59uZqIj88hn1Vkpkwv/FKdgxE3Ppi1+kZX8jir2pQuzeBO06fW0DjCOFuDX0
	8t9DkSZVJaA6J9x8GGy8yUDoj+baSHSfaxotz7OnYcsoBmYcTr/9GWlwVrQYxrrRfFtCqCs599J
	IbwDW0S6r2DN4YWMAxRxeS5aZ7AOPBFxsn5pGckM1ZN58ca5WF8G3lMTwj2d4Un6mXrSj9DOd1f
	kQ6xzVxbkcsvydRHNOkrAMcI2117OAaIvaNicOhYzcBEfdtVIkCPATDUB9MTxEqYW9vWimisEx4
	NG8eKccaak3LBoz8HrAXMOR1ZGT6F5B+4CaUCI7X+0MDLuPJUaNRDbs/hSWXJxuzsPaTvdyA93G
	MNFm1HC91i+u7asYSEcCUW6gA==
X-Received: by 2002:a05:6000:2c0c:b0:43f:e22e:e8da with SMTP id ffacd0b85a97d-43fe3dc5b0bmr21635119f8f.5.1776700236485;
        Mon, 20 Apr 2026 08:50:36 -0700 (PDT)
Message-ID: <d4e65920-aa03-4fed-9277-fbb7d295fcb1@suse.com>
Date: Mon, 20 Apr 2026 17:50:37 +0200
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: Feature freeze date for Xen 4.22 is Fri May 08, 2026
To: Oleksii Kurochko <oleksii.kurochko@gmail.com>
Cc: Community Manager <community.manager@xenproject.org>,
 "committers@xenproject.org" <committers@xenproject.org>,
 Xen-devel <xen-devel@lists.xenproject.org>
References: <832ac76c-12da-415d-b598-7865ae0133ad@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: <832ac76c-12da-415d-b598-7865ae0133ad@gmail.com>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 7bit
X-purgate-ID: tlsNG-720697/1776700237-8A0C7161-5CB4D230/0/0
X-purgate-type: clean
X-purgate-size: 550

On 20.04.2026 17:43, Oleksii Kurochko wrote:
> The feature freeze date for Xen 4.22 is Fri May 08, 2026
> 
> Patches adding new features must be committed by this date.
> 
> Straightforward bug fixes may continue to be accepted by maintainers
> beyond this point. They could go without R-Acked.
> 
> If you would like your features included in this release, please ensure
> they are committed by the deadline.

Among the large amount of stuff which is in flight, have we settled on a
subset which we want to see make the release?

Jan


From xen-devel-bounces@lists.xenproject.org Mon Apr 20 16:00:37 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 20 Apr 2026 16:00:37 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1286332.1567424 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wEr2t-0006Po-1g; Mon, 20 Apr 2026 16:00:23 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1286332.1567424; Mon, 20 Apr 2026 16:00: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 1wEr2s-0006Ph-Uw; Mon, 20 Apr 2026 16:00:22 +0000
Received: by outflank-mailman (input) for mailman id 1286332;
 Mon, 20 Apr 2026 16:00:21 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92) id 1wEr2r-0006Pb-87
 for xen-devel@lists.xenproject.org; Mon, 20 Apr 2026 16:00:21 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wEr2q-000jXH-6z
 for xen-devel@lists.xenproject.org; Mon, 20 Apr 2026 18:00:20 +0200
Received: from [10.42.69.2] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <oleksii.kurochko@gmail.com>)
 id 69e64d8f-2eae-0a2a0a5409dd-0a2a450281e0-22
 for <xen-devel@lists.xenproject.org>; Mon, 20 Apr 2026 18:00:20 +0200
Received: from [209.85.167.46] (helo=mail-lf1-f46.google.com)
 by tlsNG-720697.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.1)
 (envelope-from <oleksii.kurochko@gmail.com>)
 id 69e64d93-af86-0a2a45020019-d155a72ed18d-3
 for <xen-devel@lists.xenproject.org>; Mon, 20 Apr 2026 18:00:20 +0200
Received: by mail-lf1-f46.google.com with SMTP id
 2adb3069b0e04-5a283c44478so5611125e87.3
 for <xen-devel@lists.xenproject.org>; Mon, 20 Apr 2026 09:00:20 -0700 (PDT)
Received: from [192.168.1.6] (user-109-243-69-121.play-internet.pl.
 [109.243.69.121]) by smtp.gmail.com with ESMTPSA id
 2adb3069b0e04-5a4187e12ebsm3002971e87.50.2026.04.20.09.00.18
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Mon, 20 Apr 2026 09:00:18 -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=20251104 header.d=gmail.com header.i="@gmail.com" header.h="Content-Transfer-Encoding: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=20251104; t=1776700819; x=1777305619; darn=lists.xenproject.org;
        h=content-transfer-encoding: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;
        bh=VA4mtl8GQEP0wBcjI1x/F+/1MqBMKLX7znPGb2tiMbA=;
        b=otpd6BARvFIzlzHIReRCQw9xWnx7S0fBng3pBIwjpp2dV9dumsSGyBVO+g4ycBLw+R
         z5kDbmxHPbAJpQgVtelyUL4w7SlBPhHN18pALlypyHFiWdVaLN2uztufwX+6bdWeREAI
         tJditeIzaF7N95wU9puh3O6tGYxVS1NKboksCtx6AVr8cksmiIWBZMebSVrcaVCCGmlR
         Ar131COzb0Yu++hwGPCOy2rXrOZ8H78ZRWA0HaxwXXhZiLeTuYHmiTyzsLkSareuZTKP
         KgkyB8/JhzLHAHJgMsiorKMAw7Pmx5kVEoObj9jc2FAvmLdUj2fiH4RL3+sCrf1NcdFm
         RsUA==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20251104; t=1776700819; x=1777305619;
        h=content-transfer-encoding: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;
        bh=VA4mtl8GQEP0wBcjI1x/F+/1MqBMKLX7znPGb2tiMbA=;
        b=SlF6ScuQOwdA8YWC+qh+VXwrQcHJ0bqwBVBUdtOdkAXCY0heV0jmUon2wMDPjM7bKD
         33wQ8fPKG+swLLXXO+XxtRcAn7suoC6ty6LJnDp/3bQiB9jGiY6Sphbhmrh5WvQXLwkj
         l15LL+oIaaSFvaqfHP7J3aTFXkSJiKm16/V+3ebfcvx5GKh8cHWj7P4AWxGQcuJHYB9F
         Grc4kfl8zTupZIhn3UnIIhT7MPD3a6N7+bpWPikQxF62FOtMYb/l9AE4glg86KGpjkl+
         IevA/rJgWpnLUcq1gE60z6UpeMANlXhLOZ2BPvVMnV08TjoNOWfEMIfgznGjsVeugJnh
         GXtw==
X-Forwarded-Encrypted: i=1; AFNElJ8MIM0d5uSE8j05B8WUipUfvRPtmgQ/FDRxbezExiKuJQtHEjqfz5GjRDpdlOfcezu9OPrEN4WTVEw=@lists.xenproject.org
X-Gm-Message-State: AOJu0YymfT3CKdbihYmIEpmZwdPHAyFQTAXIUiXVyb7RPABHw4/5aQTH
	7JNJbJnftt7ii/GO4AvthyDYStaS89HQJENWOokrz8Db25YT1E/Hf7j58phfcA==
X-Gm-Gg: AeBDies+Nsu2WUzYGjS6rOtyeTU/pmXMJrIr9JXwq8ZLSKqPcabc/huU07jXtAWfcEO
	qxGg76Wi2WfWyMOXSbYLtm7ATBAoyOBxmBkhvfzWL+HrRWBL5cvFM7P/GdMG9GBPk2eIIIvzB12
	0fWUp5bAPKBCo+rJn8SaTNVlVxNGlxM9w0CPOd3/1eJy+3zEpmh7509a+Yv0zyaCFyAbRVgcgLn
	0SbHooM4wboa8eaFxZUom54pFKg7HU6gqZQgeukNr6lSBV6zX2z4dMyQbGLsptM+5bCt8BYcegz
	95VfhhtEMBFEp40MI7tGQyWfQQuAiPjjWlfc0Ijt726M6hTTZuyPvfH9nuAVCnwu3qp5+eir9QX
	O4oo+Iw27BHmJiWBJ2291TZLffrzgwZlsqrGRuqlpLk4e2ge/cn9HHRrC4shwnKcpzhF/CIL0uv
	PfIOUSSkca4sD9rQAbrbb7p7rra/7eCVr7UO58G4WEBJ5kCoich2bh5oGfZqHbzPWkp1cZrApQV
	NP+H605EeDgog==
X-Received: by 2002:a05:6512:21e6:b0:5a2:ca1d:8ea8 with SMTP id 2adb3069b0e04-5a4172daa15mr3426935e87.25.1776700818974;
        Mon, 20 Apr 2026 09:00:18 -0700 (PDT)
Message-ID: <0ef43bb8-8f0f-4cc8-ba03-c09ae4d88be1@gmail.com>
Date: Mon, 20 Apr 2026 18:00:17 +0200
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: Feature freeze date for Xen 4.22 is Fri May 08, 2026
To: Jan Beulich <jbeulich@suse.com>
Cc: Community Manager <community.manager@xenproject.org>,
 "committers@xenproject.org" <committers@xenproject.org>,
 Xen-devel <xen-devel@lists.xenproject.org>
References: <832ac76c-12da-415d-b598-7865ae0133ad@gmail.com>
 <d4e65920-aa03-4fed-9277-fbb7d295fcb1@suse.com>
Content-Language: en-US
From: Oleksii Kurochko <oleksii.kurochko@gmail.com>
In-Reply-To: <d4e65920-aa03-4fed-9277-fbb7d295fcb1@suse.com>
Content-Type: text/plain; charset=UTF-8; format=flowed
Content-Transfer-Encoding: 8bit
X-purgate-ID: tlsNG-720697/1776700820-83961161-6A30189E/10/73395122804
X-purgate-type: spam
X-purgate-size: 868



On 4/20/26 5:50 PM, Jan Beulich wrote:
> On 20.04.2026 17:43, Oleksii Kurochko wrote:
>> The feature freeze date for Xen 4.22 is Fri May 08, 2026
>>
>> Patches adding new features must be committed by this date.
>>
>> Straightforward bug fixes may continue to be accepted by maintainers
>> beyond this point. They could go without R-Acked.
>>
>> If you would like your features included in this release, please ensure
>> they are committed by the deadline.
> 
> Among the large amount of stuff which is in flight, have we settled on a
> subset which we want to see make the release?

Not yet.

I think we should either address this during the committers’ and 
maintainers’ call, or we can list the items here and discuss them.

If anyone has items in mind that they would like included in the 
release, please add them here.

~ Oleksii


From xen-devel-bounces@lists.xenproject.org Mon Apr 20 16:14:35 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 20 Apr 2026 16:14:35 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1286347.1567435 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wErGX-0000LH-T8; Mon, 20 Apr 2026 16:14:29 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1286347.1567435; Mon, 20 Apr 2026 16:14: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 1wErGX-0000LA-QQ; Mon, 20 Apr 2026 16:14:29 +0000
Received: by outflank-mailman (input) for mailman id 1286347;
 Mon, 20 Apr 2026 16:14:28 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <roger.pau@citrix.com>) id 1wErGW-0000L4-CS
 for xen-devel@lists.xenproject.org; Mon, 20 Apr 2026 16:14:28 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wErGV-008659-BD
 for xen-devel@lists.xenproject.org; Mon, 20 Apr 2026 18:14:27 +0200
Received: from [10.42.69.2] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <roger.pau@citrix.com>)
 id 69e650e3-bab6-0a2a0a5309dd-0a2a4502e75a-0
 for <xen-devel@lists.xenproject.org>; Mon, 20 Apr 2026 18:14:27 +0200
Received: from [52.101.193.61]
 (helo=CH1PR05CU001.outbound.protection.outlook.com)
 by tlsNG-720697.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.1)
 (envelope-from <roger.pau@citrix.com>)
 id 69e650e1-af86-0a2a45020019-3465c13d7a53-3
 for <xen-devel@lists.xenproject.org>; Mon, 20 Apr 2026 18:14:26 +0200
Received: from CH7PR03MB7860.namprd03.prod.outlook.com (2603:10b6:610:24e::14)
 by CH0PR03MB6162.namprd03.prod.outlook.com (2603:10b6:610:d1::13)
 with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9769.48; Mon, 20 Apr
 2026 16:14:23 +0000
Received: from CH7PR03MB7860.namprd03.prod.outlook.com
 ([fe80::f5ba:35df:1c9f:b343]) by CH7PR03MB7860.namprd03.prod.outlook.com
 ([fe80::f5ba:35df:1c9f:b343%4]) with mapi id 15.20.9818.033; Mon, 20 Apr 2026
 16:14: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=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=XNPEvAT85W49KhV9ycoAZjXXoN4vsefdF3ZBrbu8aCuqd7oIqngJY/b0HdQIKPaFNIROsAAaKK2rgymKfYu8qYCP1AO35aT5tZFhbKMOUxPee7sgjV0FzMnQiQ/1WzfWBEuWjpvON4OYGA5sQpTvh3MVHc1V+Sx+gBN9bhtoPIJuYpSfR49+UIwlRyFAyi4UgYr7tWWXhaRXEa2yqzGEdiA3MUzWcgepNNlTX4eyPkmNfKdSupoNiME+6k954qOA2XKdNfIZii8XJNsfxQyxQhrslpLbz5O1BGEJ7jRiR6TGTpbTkCaD8kqRiEyiaFktnUwUOHlx5sDBY4K+EA2Wow==
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com;
 s=arcselector10001;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1;
 bh=V96pWWCUkchYywXY2ng+krZjeuzCTGROfoobKErAJ+0=;
 b=B1zJcSyfcRwOzf7Z4MLaW7MTMyD4SWu2a6LtBOhKxQXbxi3j0+IMcXBSQ9XiGX52zTyTHFz6GjXPI1dWLidgFXl1WXQOjBmRMhWvRU/mCEzEnmmmbc8ifY98CPH3epaehHfq7qkHEly7HqBizYcrGbKfm+om95Y7jVtM82ewiaRCKm3CZOK0J5qeX7Qrum8K7xwErgtNhxaJlG1eCsf6Xizx+6kYfTvmpYAgf+Ys+dK/S2gsFfJ60uTLvWkK4XehzGX4nPUg1Z7bb4bdDesUwSPgXgV4a516wjaLh/aPl6EHn5O5gWwHlV9lHGsTE7YBfndyPQ3yW/OCOZpLzvUdhA==
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=V96pWWCUkchYywXY2ng+krZjeuzCTGROfoobKErAJ+0=;
 b=e9AdXREHN+yUcBqYJqb6uwbV89oan+bbVJ/ebIIJ03Tv75zy0HMyeTYjmR2JIUYwfBLHBA/hcXCu8xLmUDQIMrunVKGoSHQad/JQLfiYSxP/NW9JT/RNP/AeS+y2Oiy1KuxIBSU/9k1z7Wzyizyye1ABVmq3lkk8Badx9Uocots=
Authentication-Results: dkim=none (message not signed)
 header.d=none;dmarc=none action=none header.from=citrix.com;
Date: Mon, 20 Apr 2026 18:14:20 +0200
From: Roger Pau =?utf-8?B?TW9ubsOp?= <roger.pau@citrix.com>
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] x86/cpuidle: split the max_cstate variable
Message-ID: <aeZQ3FcNl_EsPTdE@macbook.local>
References: <4b89f640-046a-49c1-95f1-947d98135e5b@suse.com>
Content-Type: text/plain; charset=utf-8
Content-Disposition: inline
In-Reply-To: <4b89f640-046a-49c1-95f1-947d98135e5b@suse.com>
X-ClientProxiedBy: MA3P292CA0071.ESPP292.PROD.OUTLOOK.COM
 (2603:10a6:250:49::12) To CH7PR03MB7860.namprd03.prod.outlook.com
 (2603:10b6:610:24e::14)
MIME-Version: 1.0
X-MS-PublicTrafficType: Email
X-MS-TrafficTypeDiagnostic: CH7PR03MB7860:EE_|CH0PR03MB6162:EE_
X-MS-Office365-Filtering-Correlation-Id: f7fe3565-2c10-444b-2a6f-08de9ef7e2c6
X-MS-Exchange-SenderADCheck: 1
X-MS-Exchange-AntiSpam-Relay: 0
X-Microsoft-Antispam:
	BCL:0;ARA:13230040|366016|376014|1800799024|56012099003|18002099003|22082099003;
X-Microsoft-Antispam-Message-Info:
	wIcq5DZuhd7qAbYYFX6eQQXiMS3rusp3uuqEaPrZf2KC3mSGwZwMXkR+noQ11cUViw9K5Oy5IediOtC4fKG9KFReII59LBrRg/JsKQhhKX2oBgD/XinQEnyEw0Mkuy4oSziOGa+UyRvPvTogB9T9GxFPo78AK2yYZnaeMaktxftejyDb39G5cGUc+1acNWfFNhDWMsrjwQKPXKd880jisWdlazC0A2Q6r9ABiF+BXl/BoAmrtcXZAYWIKAiyX7YsoZ8zcy0lSX8YnJHTlmxNm5OPwEAQI8HMKbHerXH2IQcFyI3IP1vVYU9PfLAjIT4g9Iei72/kJqysmlXbSRGAq8q9nrnjVLC4s2btQQH1rNP57mqfoo3L/YfOmlpNHW0Grfio3xdtDMreZeleYkoTrNCnAB+twK9ra6p2Upq9m0+5qjo3TV5sUj+n+JXGSypmdiFlUFZllXxgRxp2Ac9EEl9jtGMDtM8LkTrVtPbJvp2tAmtsagp3q2suzcY+9s7CzGgX1FxuCnEy4W5CzQ+ZSNoBQBSr/fuTDZ+KaEhSXkKCxRcqpVabtwgU6pxWALGLK5fpZtx3pZ1qIt/b8q7Os/KuK1jGHn39zw/DHfEcv/C1VgenK+7XwuNJszIDVWzNFa5HzSJsrcYQkNTc2dTOyWqxHKtvSJz98osyYSimRko0XSOLkigw194XmdY+0iJEzVbRfnUu0t29BiWXq20179GOBCoWpcEUpq80OPdzxDk=
X-Forefront-Antispam-Report:
	CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:CH7PR03MB7860.namprd03.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(366016)(376014)(1800799024)(56012099003)(18002099003)(22082099003);DIR:OUT;SFP:1101;
X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1
X-MS-Exchange-AntiSpam-MessageData-0:
	=?utf-8?B?R0UzTVNNbWJBQ2FLREtzZm5kaDU5dVFoeVZlcWtZQXJYQnRxRjVYTmRRR2tH?=
 =?utf-8?B?Y2Z2Vmk4WVhRdmpVWUh4bmhMVVBRZkRlL3UyYTRuejdCeVFUd3NuL2lQTUNu?=
 =?utf-8?B?cXU3S1UvMHRzU0xLQXFHWHJNaWtGenBBNS9sVUZDdC9qZXBGclNNRk91YjVp?=
 =?utf-8?B?RmwwUFl1U01FRTJDeDZMeGJ0bk5OcmdPdzhnUTBYRHlHWXd0d25QNytlTnNN?=
 =?utf-8?B?R3V4TDJKdHpoaHN4ajgxazlIQ0F0RnRjWERaWkhBRWMxcVMwZlV1akpBQ0Zo?=
 =?utf-8?B?am00SnE3VmpJM2dYS3Ira2EwRkZHTnNXazZGK1gzUmdQYjRDSUdsRDN2NXY1?=
 =?utf-8?B?THIrUGcwazl5TmRPbzY3VjVJdlNxaXpyWU1mY29LaUFrYkhrcFQ0bXhqK2Nr?=
 =?utf-8?B?aTdmd3pmb01vSXFJc2pYNE5UclBRRmxvcXE2OUdFeENzMXRROGhyMHZjbHkx?=
 =?utf-8?B?dFBWRXpScWt1UmREVjVNWm45eWhTMzJBTC9NdFY0aHk4SHVYVkVVWUZDYmlq?=
 =?utf-8?B?UWp1VEpTNnBKbExUaTAwZksxOHF2cnI4SXNtWjFkbVBwZFE5SU83azlsSGph?=
 =?utf-8?B?ZkZzWVRBRG9XV1hlTVF4eWJhQi91eXJmd21hR3RVNDVRZEQzTFgrbDl0bXZy?=
 =?utf-8?B?QWNCSSsrdHFwdmRZVG5RV1VkSTNGemdwdkk2WTNNOE9pVUpDK2hpVmVWNEh6?=
 =?utf-8?B?QXV1ZlRrMmNaRk4xOE45UGRIdHlCZEV3UzFuUUZuM2FDVkxrRDR1SnptQnFH?=
 =?utf-8?B?WXY4V1pteUpCU1hSN0lVdS9MN2R6cWV6d2lUdnpqK0M5QkVxUm5pM2ZxWG0v?=
 =?utf-8?B?bEFrbHlLY3FURzMwVFppWDlxYkZZdkM5RVlaSnU1THhzYnNTYldhVDh1ekQw?=
 =?utf-8?B?OFJNbVpJc25ERnJSZlZoL2tDTVB5Rm1lVS84N3ZIRnFEZmN6UHd3ZVp6Z3lN?=
 =?utf-8?B?MUt0bXBWUjdOV1hIT295Uml0SnNBNkx3UHVKei84VHVmMGJTWUtNZ2IrV1JT?=
 =?utf-8?B?WEdKTUlrOUNuRHFWWU9jRjVTV3BkRms1SG1LdzJhbklPOWx4aDlGSE1tUjZF?=
 =?utf-8?B?UjR5eEJHem9KOW84NUovd09rdnpHWExNVXNqdUhLM21kRlRpK0IyZ3pWVGNy?=
 =?utf-8?B?R3ZVTVNyNG0reVBjTmNYK3BXL3EwWVN6TU4xdkJvT2pxTUc0Q3NsaitKWkMr?=
 =?utf-8?B?UkdCZjZNVzBIaFdKOUN6Z0NCK0FwYzkwb3RET1h1QVEzSWViT0Q1SGtIK20z?=
 =?utf-8?B?RkVPYStwaHBpK1RWR3F3c1lmb0hMN1p2T21SeCtMeEsrN3lIWXFyZGdXdVc0?=
 =?utf-8?B?TVR1RUJpMXhLVVMxWURrVWtzdHNja3AvUjRURTZLaU8zcDk5K3VVZVJuU0Rr?=
 =?utf-8?B?b2w2eHF5N2hFU3YwUzZwYldlWHBwTnBIV1I5dXNiZGR3Mk95SU50d1VocW1h?=
 =?utf-8?B?YW10Q3AvbkI3Q2o5NDg1WEtUWkIwVjFyQjM1K0pUWHljYmxaUmVESk5odUIv?=
 =?utf-8?B?ZWh2ZnpnNzBoMzRpZVJCMkhFU3JwSnNHZW81aG9ic1YybFJ6dXQ0eE03cFQ0?=
 =?utf-8?B?YWNJR1FVSUxFOHhQd2l3bkpkbktJeVlWd0dxV3NnZDZoazAyUmZ5WklieTBV?=
 =?utf-8?B?b0V4eE1zc29wSGZYZm9IcVFOc0RCVXNMMmZYQlVUbENQSUZ3RjBSbXp2VE04?=
 =?utf-8?B?Q1k0MUZudlI5QUtOY3ZYUmVPVUxmL05TalB2TjVHVWpsMlV1d21nSUlyNTcr?=
 =?utf-8?B?c1BRUTlpWWZ4NVQxVmtMOFp1RnNSbHI2SGpQckZiZnhHd09JNzU5bHMzYXpQ?=
 =?utf-8?B?OXg3WHJMdjgvWkVYZVRnUm5hWFdwS2NBaXdwN25PS0k2WXhDYkNuY1hJVVlU?=
 =?utf-8?B?SFQyZFBBSUh2L1haeGhYbnVaL0VlSVl1R1B4YlJSdmxrY2phNjNNcldyMkJO?=
 =?utf-8?B?bmU1THJCZ2lZRU5FYnZnL1VjODdjNVZ1VFVKdkt0OUdIY002d1h4T3UvZTJa?=
 =?utf-8?B?ZWtXbzJWMTVyajF0S2VPanFDeGlnRi9LSmxQa014NXpsOW1Ra25BRXhWUUpq?=
 =?utf-8?B?QWZhUWJlK0xnTG9waFdEWjJVVmJFenQ3WVJaMzZtWUY1Q3JtdFA3S3IzMkRJ?=
 =?utf-8?B?aFlUeHJBbFd1REc1QmxicmdEWER3V3ozRFRYZDhBeXBqOE1wTERmdTF1dWFi?=
 =?utf-8?B?cHpHUHBwU2JoYzcrbElOTDVLVmdQS1J0T2J1SUI2UmwyUWdYZlpqSTZaeFRm?=
 =?utf-8?B?RDFzcTA1bVVXNmtqNGJCSGVJOFIzUlAzcENxWjZCYjgwd0I4clFERWhFdmo0?=
 =?utf-8?B?ZDIxdlZaN2k1TWlaeW52eVNLeSt5OHJtemh5NVZOWlNaa01nVjFIdz09?=
X-OriginatorOrg: citrix.com
X-MS-Exchange-CrossTenant-Network-Message-Id: f7fe3565-2c10-444b-2a6f-08de9ef7e2c6
X-MS-Exchange-CrossTenant-AuthSource: CH7PR03MB7860.namprd03.prod.outlook.com
X-MS-Exchange-CrossTenant-AuthAs: Internal
X-MS-Exchange-CrossTenant-OriginalArrivalTime: 20 Apr 2026 16:14:23.3314
 (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: 3dp50rANtjFxGdVlwloDElRzeOh+ztAYAMGLkX5NuN7TPRK1YyZFdlXMnwJQYO/5QOBQJeesxF/ocmDd2G4GWw==
X-MS-Exchange-Transport-CrossTenantHeadersStamped: CH0PR03MB6162
X-purgate-ID: tlsNG-720697/1776701667-80F7E161-B386D7FA/0/0
X-purgate-type: clean
X-purgate-size: 13848

On Wed, Apr 08, 2026 at 01:34:43PM +0200, Jan Beulich wrote:
> The admin can control the upper bound wanted not only via command line
> option, but also via XEN_SYSCTL_pm_op_set_max_cstate. While decisions how
> to set up the system are okay this way as long as we deem the command line
> option a strict upper bound, what to do during S3 resume should not be
> based on that potentially varying value. Decisions there need to use
> solely the strict upper bound we may have enforced ourselves (or which was
> forced onto us via command line option).
> 
> Rather than altering pit_broadcast_is_available(), drop the function
> altogether. It's pretty odd for acpi/cpu_idle.c to call into time.c, just
> for that to call into acpi/cpu_idle.c again.
> 
> Fixes: 8d24303023ec ("x86: don't write_tsc() non-zero values on CPUs updating only the lower 32 bits")
> Signed-off-by: Jan Beulich <jbeulich@suse.com>
> ---
> cpuidle_disable_deep_cstate(), when called from handle_rtc_once(), is
> still somewhat of a problem: Boot time and resume time runs of
> _disable_pit_irq() may still behave differently because of that.
> 
> If we wanted the sysctl to possibly move the maximum C-state beyond what
> was given on the command line, things would get yet more complicated, as
> we'd then need to re-configure the driver that's in use.
> 
> I wonder how useful the ACPI_STATE_C<n> #define-s really are. Plain 1 is
> used in e.g. probe_c3_errata(), and the plain 7 doesn't even have a
> respective constant (nor would that be suitable, as that's not really an
> ACPI state).
> 
> --- a/xen/arch/x86/acpi/cpu_idle.c
> +++ b/xen/arch/x86/acpi/cpu_idle.c
> @@ -119,7 +119,7 @@ bool lapic_timer_init(void)
>          lapic_timer_off = hpet_broadcast_enter;
>          lapic_timer_on = hpet_broadcast_exit;
>      }
> -    else if ( pit_broadcast_is_available() )
> +    else if ( cpuidle_usable_deep_cstate() )
>      {
>          lapic_timer_off = pit_broadcast_enter;
>          lapic_timer_on = pit_broadcast_exit;
> @@ -131,12 +131,15 @@ bool lapic_timer_init(void)
>  }
>  
>  void (*__read_mostly pm_idle_save)(void);
> -unsigned int max_cstate __read_mostly = UINT_MAX;
> +
> +unsigned int max_usable_cstate __read_mostly = UINT_MAX;
> +unsigned int max_allowed_cstate __read_mostly = UINT_MAX;
>  unsigned int max_csubstate __read_mostly = UINT_MAX;
>  
>  static int __init cf_check parse_cstate(const char *s)
>  {
> -    max_cstate = simple_strtoul(s, &s, 0);
> +    max_allowed_cstate = simple_strtoul(s, &s, 0);
> +    max_usable_cstate = max_allowed_cstate;
>      if ( *s == ',' )
>          max_csubstate = simple_strtoul(s + 1, NULL, 0);
>      return 0;
> @@ -413,10 +416,11 @@ static void cf_check dump_cx(unsigned ch
>      unsigned int cpu;
>  
>      printk("'%c' pressed -> printing ACPI Cx structures\n", key);
> -    if ( max_cstate < UINT_MAX )
> +    if ( max_cstate() < UINT_MAX )
>      {
> -        printk("max state: C%u\n", max_cstate);
> -        if ( max_csubstate < UINT_MAX )
> +        printk("max state: C%u\n", max_cstate());
> +        if ( max_allowed_cstate <= max_usable_cstate &&
> +             max_csubstate < UINT_MAX )
>              printk("max sub-state: %u\n", max_csubstate);
>          else
>              printk("max sub-state: unlimited\n");
> @@ -690,18 +694,18 @@ static void cf_check acpi_processor_idle
>      u32 exp = 0, pred = 0;
>      u32 irq_traced[4] = { 0 };
>  
> -    if ( max_cstate > 0 && power &&
> +    if ( max_cstate() > 0 && power &&
>           (next_state = cpuidle_current_governor->select(power)) > 0 )
>      {
>          unsigned int max_state = sched_has_urgent_vcpu() ? ACPI_STATE_C1
> -                                                         : max_cstate;
> +                                                         : max_cstate();
>  
>          do {
>              cx = &power->states[next_state];
>          } while ( (cx->type > max_state ||
>                     cx->entry_method == ACPI_CSTATE_EM_NONE ||
>                     (cx->entry_method == ACPI_CSTATE_EM_FFH &&
> -                    cx->type == max_cstate &&
> +                    cx->type == max_allowed_cstate &&

I'm afraid I'm missing why this uses max_allowed_cstate instead of
max_state.

>                      (cx->address & MWAIT_SUBSTATE_MASK) > max_csubstate)) &&
>                    --next_state );
>          if ( next_state )
> @@ -1448,7 +1452,7 @@ static void amd_cpuidle_init(struct acpi
>  
>      for ( i = 0; i < nr; ++i )
>      {
> -        if ( cx[i].type > max_cstate )
> +        if ( cx[i].type > max_cstate() )
>              break;
>          power->states[i + 1] = cx[i];
>          power->states[i + 1].idx = i + 1;
> @@ -1611,21 +1615,22 @@ int pmstat_reset_cx_stat(unsigned int cp
>  
>  void cpuidle_disable_deep_cstate(void)
>  {
> -    if ( max_cstate > ACPI_STATE_C1 )
> +    if ( max_usable_cstate > ACPI_STATE_C1 )
>      {
>          if ( local_apic_timer_c2_ok )
> -            max_cstate = ACPI_STATE_C2;
> +            max_usable_cstate = ACPI_STATE_C2;
>          else
> -            max_cstate = ACPI_STATE_C1;
> +            max_usable_cstate = ACPI_STATE_C1;
>      }
>  
>      hpet_disable_legacy_broadcast();
>  }
>  
> -bool cpuidle_using_deep_cstate(void)
> +bool cpuidle_usable_deep_cstate(void)
>  {
> -    return xen_cpuidle && max_cstate > (local_apic_timer_c2_ok ? ACPI_STATE_C2
> -                                                               : ACPI_STATE_C1);
> +    return xen_cpuidle &&
> +           max_usable_cstate > (local_apic_timer_c2_ok ? ACPI_STATE_C2
> +                                                       : ACPI_STATE_C1);
>  }
>  
>  static int cf_check cpu_callback(
> --- a/xen/arch/x86/cpu/intel.c
> +++ b/xen/arch/x86/cpu/intel.c
> @@ -384,12 +384,12 @@ static void probe_c3_errata(const struct
>      };
>  
>      /* Serialized by the AP bringup code. */
> -    if ( max_cstate > 1 && (c->apicid & (c->x86_num_siblings - 1)) &&
> +    if ( max_usable_cstate > 1 && (c->apicid & (c->x86_num_siblings - 1)) &&
>           x86_match_cpu(models) )
>      {
>          printk(XENLOG_WARNING
>  	       "Disabling C-states C3 and C6 due to CPU errata\n");
> -        max_cstate = 1;
> +        max_usable_cstate = 1;
>      }
>  }
>  
> --- a/xen/arch/x86/cpu/mwait-idle.c
> +++ b/xen/arch/x86/cpu/mwait-idle.c
> @@ -1045,15 +1045,16 @@ static void cf_check mwait_idle(void)
>  	u64 before, after;
>  	u32 exp = 0, pred = 0, irq_traced[4] = { 0 };
>  
> -	if (max_cstate > 0 && power &&
> +	if (max_cstate() > 0 && power &&
>  	    (next_state = cpuidle_current_governor->select(power)) > 0) {
>  		unsigned int max_state = sched_has_urgent_vcpu() ? ACPI_STATE_C1
> -								 : max_cstate;
> +								 : max_cstate();
>  
>  		do {
>  			cx = &power->states[next_state];
> -		} while ((cx->type > max_state || (cx->type == max_cstate &&
> -			  MWAIT_HINT2SUBSTATE(cx->address) > max_csubstate)) &&
> +		} while ((cx->type > max_state ||
> +                          (cx->type == max_allowed_cstate &&

Indentation is weird for the above line IMO, you should use hard 3
tabs plus spaces afterwards, like the surrounding indentation?

> +			   MWAIT_HINT2SUBSTATE(cx->address) > max_csubstate)) &&
>  			 --next_state);
>  		if (!next_state)
>  			cx = NULL;

Seeing max_cstate() is used in multiple places here, you might want to
introduce a local max_cstate variable?

> @@ -1458,7 +1459,7 @@ static void __init sklh_idle_state_table
>  	u64 msr;
>  
>  	/* if PC10 disabled via cmdline max_cstate=7 or shallower */
> -	if (max_cstate <= 7)
> +	if (max_cstate() <= 7)
>  		return;
>  
>  	/* if PC10 not present in CPUID.MWAIT.EDX */
> @@ -1623,7 +1624,7 @@ static int __init mwait_idle_probe(void)
>  	    !mwait_substates)
>  		return -ENODEV;
>  
> -	if (!max_cstate || !opt_mwait_idle) {
> +	if (!max_cstate() || !opt_mwait_idle) {
>  		pr_debug(PREFIX "disabled\n");
>  		return -EPERM;
>  	}
> @@ -1714,8 +1715,8 @@ static int cf_check mwait_idle_cpu_init(
>  		hint = flg2MWAIT(cpuidle_state_table[cstate].flags);
>  		state = MWAIT_HINT2CSTATE(hint) + 1;
>  
> -		if (state > max_cstate) {
> -			printk(PREFIX "max C-state %u reached\n", max_cstate);
> +		if (state > max_cstate()) {
> +			printk(PREFIX "max C-state %u reached\n", max_cstate());
>  			break;
>  		}
>  
> --- a/xen/arch/x86/include/asm/time.h
> +++ b/xen/arch/x86/include/asm/time.h
> @@ -31,7 +31,6 @@ int cpu_frequency_change(u64 freq);
>  
>  void cf_check pit_broadcast_enter(void);
>  void cf_check pit_broadcast_exit(void);
> -int pit_broadcast_is_available(void);
>  
>  uint64_t cf_check acpi_pm_tick_to_ns(uint64_t ticks);
>  
> --- a/xen/arch/x86/time.c
> +++ b/xen/arch/x86/time.c
> @@ -517,7 +517,7 @@ static int64_t __init cf_check init_hpet
>      bool disable_hpet = false;
>  
>      if ( hpet_address && strcmp(opt_clocksource, pts->id) &&
> -         cpuidle_using_deep_cstate() )
> +         cpuidle_usable_deep_cstate() )
>      {
>          if ( pci_conf_read16(PCI_SBDF(0, 0, 0x1f, 0),
>                               PCI_VENDOR_ID) == PCI_VENDOR_ID_INTEL )
> @@ -2655,7 +2655,7 @@ static int _disable_pit_irq(bool init)
>       * XXX dom0 may rely on RTC interrupt delivery, so only enable
>       * hpet_broadcast if FSB mode available or if force_hpet_broadcast.
>       */
> -    if ( cpuidle_using_deep_cstate() && !boot_cpu_has(X86_FEATURE_XEN_ARAT) )
> +    if ( cpuidle_usable_deep_cstate() && !boot_cpu_has(X86_FEATURE_XEN_ARAT) )
>      {
>          init ? hpet_broadcast_init() : hpet_broadcast_resume();
>          if ( !hpet_broadcast_is_available() )
> @@ -2707,11 +2707,6 @@ void cf_check pit_broadcast_exit(void)
>          reprogram_timer(this_cpu(timer_deadline));
>  }
>  
> -int pit_broadcast_is_available(void)
> -{
> -    return cpuidle_using_deep_cstate();
> -}
> -
>  void send_timer_event(struct vcpu *v)
>  {
>      send_guest_vcpu_virq(v, VIRQ_TIMER);
> @@ -2999,7 +2994,7 @@ static void cf_check dump_softtsc(unsign
>      else if ( boot_cpu_has(X86_FEATURE_CONSTANT_TSC ) )
>      {
>          printk("TSC has constant rate, ");
> -        if ( max_cstate <= ACPI_STATE_C2 && tsc_max_warp == 0 )
> +        if ( max_usable_cstate <= ACPI_STATE_C2 && tsc_max_warp == 0 )
>              printk("no deep Cstates, passed warp test, deemed reliable, ");
>          else
>              printk("deep Cstates possible, so not reliable, ");
> --- a/xen/include/xen/acpi.h
> +++ b/xen/include/xen/acpi.h
> @@ -142,30 +142,33 @@ int acpi_gsi_to_irq (u32 gsi, unsigned i
>  
>  #ifdef	CONFIG_ACPI_CSTATE
>  /*
> - * max_cstate sets the highest legal C-state.
> - * max_cstate = 0: C0 okay, but not C1
> - * max_cstate = 1: C1 okay, but not C2
> - * max_cstate = 2: C2 okay, but not C3 etc.
> -
> - * max_csubstate sets the highest legal C-state sub-state. Only applies to the
> - * highest legal C-state.
> - * max_cstate = 1, max_csubstate = 0 ==> C0, C1 okay, but not C1E
> - * max_cstate = 1, max_csubstate = 1 ==> C0, C1 and C1E okay, but not C2
> - * max_cstate = 2, max_csubstate = 0 ==> C0, C1, C1E, C2 okay, but not C3
> - * max_cstate = 2, max_csubstate = 1 ==> C0, C1, C1E, C2 okay, but not C3
> + * max_{allowed,usable}_cstate sets the highest allowed / usable C-state, where
> + * "allowed" is command line / sysctl based.

Hm, this is a bit misleading, because max_usable_cstate is also
command line based (plus system errata).  What about:

"max_{allowed,usable}_cstate sets the highest allowed / usable C-state.
max_usable_cstate can only be set from the command line, while
max_allowed_cstate can be set from both command line and systcl."

> + * max_*_cstate = 0: C0 okay, but not C1
> + * max_*_cstate = 1: C1 okay, but not C2
> + * max_*_cstate = 2: C2 okay, but not C3 etc.
> + *
> + * max_csubstate sets the highest allowed C-state sub-state. Only applies to
> + * the highest allowed C-state.
> + * max_allowed_cstate = 1, max_csubstate = 0 ==> C0, C1 okay, but not C1E
> + * max_allowed_cstate = 1, max_csubstate = 1 ==> C0, C1 and C1E okay, but not C2
> + * max_allowed_cstate = 2, max_csubstate = 0 ==> C0, C1, C1E, C2 okay, but not C3
> + * max_allowed_cstate = 2, max_csubstate = 1 ==> C0, C1, C1E, C2 okay, but not C3
>   */
>  
> -extern unsigned int max_cstate;
> +extern unsigned int max_usable_cstate;
> +extern unsigned int max_allowed_cstate;
>  extern unsigned int max_csubstate;
>  
> +#define max_cstate() min(max_usable_cstate, max_allowed_cstate)

I would be tempted to drop the ending parenthesis so that you don't
need to adjust callers, but that's likely misleading, as then it would
need to be uppercase MAX_CSTATE.

> +
>  static inline unsigned int acpi_get_cstate_limit(void)
>  {
> -	return max_cstate;
> +	return max_allowed_cstate;
>  }
>  static inline void acpi_set_cstate_limit(unsigned int new_limit)
>  {
> -	max_cstate = new_limit;
> -	return;
> +	max_allowed_cstate = new_limit;

Do we want to check the new limit doesn't exceed max_usable_cstate and
return -ERANGE or similar on failure?

After this change it's a bit weird to silently ignore invalid values
IMO.

>  }
>  
>  static inline unsigned int acpi_get_csubstate_limit(void)
> --- a/xen/include/xen/cpuidle.h
> +++ b/xen/include/xen/cpuidle.h
> @@ -89,7 +89,7 @@ struct cpuidle_governor
>  extern int8_t xen_cpuidle;
>  extern struct cpuidle_governor *cpuidle_current_governor;
>  
> -bool cpuidle_using_deep_cstate(void);
> +bool cpuidle_usable_deep_cstate(void);
>  void cpuidle_disable_deep_cstate(void);
>  
>  #define CPUIDLE_DRIVER_STATE_START  1


From xen-devel-bounces@lists.xenproject.org Mon Apr 20 16:14:37 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 20 Apr 2026 16:14:37 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1286349.1567445 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wErGf-0000ao-93; Mon, 20 Apr 2026 16:14:37 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1286349.1567445; Mon, 20 Apr 2026 16:14: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 1wErGf-0000ah-5E; Mon, 20 Apr 2026 16:14:37 +0000
Received: by outflank-mailman (input) for mailman id 1286349;
 Mon, 20 Apr 2026 16:14:36 +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 1wErGe-0000aO-Cs
 for xen-devel@lists.xenproject.org; Mon, 20 Apr 2026 16:14:36 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wErGd-00BZ3a-Ps
 for xen-devel@lists.xenproject.org; Mon, 20 Apr 2026 18:14:35 +0200
Received: from [10.42.69.8] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <jgross@suse.com>)
 id 69e650d0-e002-0a2a0a5209dd-0a2a4508df38-40
 for <xen-devel@lists.xenproject.org>; Mon, 20 Apr 2026 18:14:35 +0200
Received: from [209.85.218.42] (helo=mail-ej1-f42.google.com)
 by tlsNG-c1860d.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.1)
 (envelope-from <jgross@suse.com>)
 id 69e650eb-63b5-0a2a45080019-d155da2acc72-3
 for <xen-devel@lists.xenproject.org>; Mon, 20 Apr 2026 18:14:35 +0200
Received: by mail-ej1-f42.google.com with SMTP id
 a640c23a62f3a-ba25fd27571so465799566b.0
 for <xen-devel@lists.xenproject.org>; Mon, 20 Apr 2026 09:14:35 -0700 (PDT)
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
 a640c23a62f3a-ba4512113a3sm372544466b.4.2026.04.20.09.14.34
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Mon, 20 Apr 2026 09:14:34 -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=google header.d=suse.com header.i="@suse.com" header.h="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=1776701675; x=1777306475; darn=lists.xenproject.org;
        h=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;
        bh=vsNYXrjZrh2+X9aexF7kXgvMYlIRsKLSo1SgkG2xAwY=;
        b=ZuA3GA+/KdB4P/Q08hl1u6q72JDc3iNhS9/6Atxnf/tpWg5SQvDYVo0eFgBg4u4/M9
         JePffTqp/XWEy+bVKGTzqvuhWAtmsqEGX/gMkdUxnVTncco6vsqnnRLWVxMPs5kENXA4
         dp98QKmNGnd9B+/73/48TD7ncPPY3dKyRGAV0V8LzzfakW3LT+IFyuOZVu5ECsa8F/Dy
         PXRBfr1aOoT06C8UwSo2Wa7QMMms2mm3YISqwXCnEObDpqeWXu0JJRHTAsL43X0uzk6M
         Z3Uml+ibe0Ea33Team6iIqbQIFV4Oqk3WlPYWqbN9GYPPpeXDxbvBpYomskHEIeF0g8M
         1PVA==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20251104; t=1776701675; x=1777306475;
        h=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;
        bh=vsNYXrjZrh2+X9aexF7kXgvMYlIRsKLSo1SgkG2xAwY=;
        b=sNXevNh/sukrhaOzQa1MbeLOcBGHf8I83NjpZyDQv6eGqt0Api10h+GGAQxPSt0RLT
         tOy3QmxthX3da97q6vl/wCAQa2bJ4tiVPOYSVmi9zFYa892gZygs9PjtAN7denYlCtoS
         T0hr7iHvItJsqJHvFxzORu5tpjpgcXegt/2IRSUYtHrBg+bLruN/J8qYhyBOlHkJxz1j
         ppU3xWSmbW4mj+d4T7SinK1yg8B61R9yUiVDY4ZIhOp+7PRU8tRTIaOQUJ5vDmmuJ2rB
         touEHRCp3kdPyMZtKu1c8U33KzzTOzVKWEL4DzUMRX9IRvBDO8bM7bBkU57dt3bG79YL
         po0Q==
X-Forwarded-Encrypted: i=1; AFNElJ9GRCX8wexr4a3eePw+hA7Eoku2gtjB4FpmM/SrDPSuSsOswXyZ1FATcF/VkYMeg2XlrTh1JD0SR8o=@lists.xenproject.org
X-Gm-Message-State: AOJu0YzUGaLePQwowimrMcA3qJn8Fy4GkJSprYeisibHnDRLxBgMzFjY
	sSs9BjTlTAYtcUXO1Kg//OQGDTIPrfPj4Llbjg4145Q8ofK1lJHJC6dgW92KMYMJyGA=
X-Gm-Gg: AeBDiesifm4fBQCnUZ+BZ6LUhUph21+rT0Y/PbmCepA59mGLiRIcm7bskM2nObEAjoo
	l3O7Zl5O3gnIPEJZ6sF/PdcRPf3HWChnHojJG5DyCs/WfYFycnSWJHYdi9RUo9YjBF5sww/+jXh
	yJWPfkKaCg3x2/1x5c5E4LuA1aTHwEyspq4UZuR+hzNJCFdfRKAuK9FMzmSRjqENEWaWa3cSwQD
	YVnvNzuqt/96GCpHRlCjgA8rtRYcZPK0LbmcJadvFdo8jro358IyU0MCXvUZOhkB0gx8F5pMpjM
	DsbvI54x1U4szyeKQF0DG61icwdd4NVouiW3Y0Yg9Ltzlqnf+jN85xxpZiuPhf8Z6vPCf8jRrhN
	eUsvmWsh2ysovXZaP1eebbNEg6TS7z+gUbtO0uMAgYGL66enbfeyDhAnHEaRb4o+VXvy5ATLvuD
	B3wHN/9yJC6nwqlmtSTpCUl+Tdt/GrDG8bVxIrfqrgCMqEKvso69awFzApLYSxZrfFKkucf7Pjw
	hzeonj42vMhKri0/Y6zuizj5AH2IhCRazAz8iUJ5AY/e8t6P1xds2kmU5t6PylcUVYhx5Xqa7k=
X-Received: by 2002:a17:907:72c6:b0:ba6:1412:9339 with SMTP id a640c23a62f3a-ba6141295bfmr369019366b.20.1776701674801;
        Mon, 20 Apr 2026 09:14:34 -0700 (PDT)
Message-ID: <a827f748-86c9-4866-977e-b90dd413091f@suse.com>
Date: Mon, 20 Apr 2026 18:14:33 +0200
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: Feature freeze date for Xen 4.22 is Fri May 08, 2026
To: Oleksii Kurochko <oleksii.kurochko@gmail.com>
Cc: Community Manager <community.manager@xenproject.org>,
 "committers@xenproject.org" <committers@xenproject.org>,
 Xen-devel <xen-devel@lists.xenproject.org>
References: <832ac76c-12da-415d-b598-7865ae0133ad@gmail.com>
 <d4e65920-aa03-4fed-9277-fbb7d295fcb1@suse.com>
 <0ef43bb8-8f0f-4cc8-ba03-c09ae4d88be1@gmail.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: <0ef43bb8-8f0f-4cc8-ba03-c09ae4d88be1@gmail.com>
Content-Type: multipart/signed; micalg=pgp-sha256;
 protocol="application/pgp-signature";
 boundary="------------aqGf4ELZISJyc8q7cPAa0xho"
X-purgate-ID: tlsNG-c1860d/1776701675-3976EDB1-9D89B033/0/0
X-purgate-type: clean
X-purgate-size: 7750

This is an OpenPGP/MIME signed message (RFC 4880 and 3156)
--------------aqGf4ELZISJyc8q7cPAa0xho
Content-Type: multipart/mixed; boundary="------------ykO0WSpR3IHon807UIH3U4dT";
 protected-headers="v1"
From: =?UTF-8?B?SsO8cmdlbiBHcm/Dnw==?= <jgross@suse.com>
To: Oleksii Kurochko <oleksii.kurochko@gmail.com>
Cc: Community Manager <community.manager@xenproject.org>,
 "committers@xenproject.org" <committers@xenproject.org>,
 Xen-devel <xen-devel@lists.xenproject.org>
Message-ID: <a827f748-86c9-4866-977e-b90dd413091f@suse.com>
Subject: Re: Feature freeze date for Xen 4.22 is Fri May 08, 2026
References: <832ac76c-12da-415d-b598-7865ae0133ad@gmail.com>
 <d4e65920-aa03-4fed-9277-fbb7d295fcb1@suse.com>
 <0ef43bb8-8f0f-4cc8-ba03-c09ae4d88be1@gmail.com>
In-Reply-To: <0ef43bb8-8f0f-4cc8-ba03-c09ae4d88be1@gmail.com>

--------------ykO0WSpR3IHon807UIH3U4dT
Content-Type: multipart/mixed; boundary="------------lXpMgxcYzFOuoyOWvXZL66xr"

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

T24gMjAuMDQuMjYgMTg6MDAsIE9sZWtzaWkgS3Vyb2Noa28gd3JvdGU6DQo+IA0KPiANCj4g
T24gNC8yMC8yNiA1OjUwIFBNLCBKYW4gQmV1bGljaCB3cm90ZToNCj4+IE9uIDIwLjA0LjIw
MjYgMTc6NDMsIE9sZWtzaWkgS3Vyb2Noa28gd3JvdGU6DQo+Pj4gVGhlIGZlYXR1cmUgZnJl
ZXplIGRhdGUgZm9yIFhlbiA0LjIyIGlzIEZyaSBNYXkgMDgsIDIwMjYNCj4+Pg0KPj4+IFBh
dGNoZXMgYWRkaW5nIG5ldyBmZWF0dXJlcyBtdXN0IGJlIGNvbW1pdHRlZCBieSB0aGlzIGRh
dGUuDQo+Pj4NCj4+PiBTdHJhaWdodGZvcndhcmQgYnVnIGZpeGVzIG1heSBjb250aW51ZSB0
byBiZSBhY2NlcHRlZCBieSBtYWludGFpbmVycw0KPj4+IGJleW9uZCB0aGlzIHBvaW50LiBU
aGV5IGNvdWxkIGdvIHdpdGhvdXQgUi1BY2tlZC4NCj4+Pg0KPj4+IElmIHlvdSB3b3VsZCBs
aWtlIHlvdXIgZmVhdHVyZXMgaW5jbHVkZWQgaW4gdGhpcyByZWxlYXNlLCBwbGVhc2UgZW5z
dXJlDQo+Pj4gdGhleSBhcmUgY29tbWl0dGVkIGJ5IHRoZSBkZWFkbGluZS4NCj4+DQo+PiBB
bW9uZyB0aGUgbGFyZ2UgYW1vdW50IG9mIHN0dWZmIHdoaWNoIGlzIGluIGZsaWdodCwgaGF2
ZSB3ZSBzZXR0bGVkIG9uIGENCj4+IHN1YnNldCB3aGljaCB3ZSB3YW50IHRvIHNlZSBtYWtl
IHRoZSByZWxlYXNlPw0KPiANCj4gTm90IHlldC4NCj4gDQo+IEkgdGhpbmsgd2Ugc2hvdWxk
IGVpdGhlciBhZGRyZXNzIHRoaXMgZHVyaW5nIHRoZSBjb21taXR0ZXJz4oCZIGFuZCBtYWlu
dGFpbmVyc+KAmSANCj4gY2FsbCwgb3Igd2UgY2FuIGxpc3QgdGhlIGl0ZW1zIGhlcmUgYW5k
IGRpc2N1c3MgdGhlbS4NCj4gDQo+IElmIGFueW9uZSBoYXMgaXRlbXMgaW4gbWluZCB0aGF0
IHRoZXkgd291bGQgbGlrZSBpbmNsdWRlZCBpbiB0aGUgcmVsZWFzZSwgcGxlYXNlIA0KPiBh
ZGQgdGhlbSBoZXJlLg0KDQpJJ2QgbGlrZSB0byBzZWUgbXkgc2VyaWVzICJ0b29scy94ZW5z
dG9yZWQ6IGFkZCBzdXBwb3J0IGZvciB3YXRjaCBkZXB0aCBmZWF0dXJlIg0KaW4gNC4yMiAo
bWluaW11bTogZmlyc3QgMyBwYXRjaGVzKS4NCg0KVGhpcyBzZXJpZXMgaXMgdGhlIGJhc2Ug
Zm9yIGZ1cnRoZXIgaW1wbGVtZW50YXRpb25zIGluIHRoZSBMaW51eCBrZXJuZWwsIHRyeWlu
Zw0KdG8gcmVkdWNlIHRoZSBudW1iZXIgb2YgWGVuc3RvcmUgd2F0Y2ggZXZlbnRzIGZvciBr
ZXJuZWwgc2lkZSBiYWNrZW5kcyBhbmQNCmZyb250ZW5kcyBvZiBQVi1kZXZpY2VzIGR1cmlu
ZyBkb21haW4gY3JlYXRpb24gYW5kIGRlbGV0aW9uLg0KDQoNCkp1ZXJnZW4NCg==
--------------lXpMgxcYzFOuoyOWvXZL66xr
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-----

--------------lXpMgxcYzFOuoyOWvXZL66xr--

--------------ykO0WSpR3IHon807UIH3U4dT--

--------------aqGf4ELZISJyc8q7cPAa0xho
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/Ey8FAmnmUOoFAwAAAAAACgkQsN6d1ii/Ey+a
8AgAmGVweEo5CX2qrgzz3d0brhOY7+O7I6TRGD8UAp+FFsXiTssBQpq1E62Us2T6zztX9vVLQmeA
gS11fGFaQsT1XJ7mO1ZJje1VQRSAfH6nCOz6Cy4liWoxa6XMIxYLGq+mqqKBCluC+r2CKHamcW2r
9/7aBB6YIlCrVZ5xKJ4jSlH+lhx7vt/W0eq0rQahslfo938TYTwuKLrq6o0YAEEIw+Pe7s7uX3H7
1sE8gt72V2nmPyXiJoEEqNs1Pjg98HkXJ4cTmIpUWtAAmG+0dyGRJNX6RhoSzeUjEfRVcndWGmT1
KtHCQpLSLu9p5ZtQwZ4xIz1Ba4cX15usNM71/sLL3A==
=u4ia
-----END PGP SIGNATURE-----

--------------aqGf4ELZISJyc8q7cPAa0xho--


From xen-devel-bounces@lists.xenproject.org Mon Apr 20 17:04:12 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 20 Apr 2026 17:04:12 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1286371.1567454 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wEs2P-0007gd-OM; Mon, 20 Apr 2026 17:03:57 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1286371.1567454; Mon, 20 Apr 2026 17:03: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 1wEs2P-0007gW-Lo; Mon, 20 Apr 2026 17:03:57 +0000
Received: by outflank-mailman (input) for mailman id 1286371;
 Mon, 20 Apr 2026 17:03:56 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <demiobenour@gmail.com>) id 1wEs2O-0007gQ-7L
 for xen-devel@lists.xenproject.org; Mon, 20 Apr 2026 17:03:56 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wEs2N-00E9kp-CT
 for xen-devel@lists.xenproject.org; Mon, 20 Apr 2026 19:03:55 +0200
Received: from [10.42.69.12] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <demiobenour@gmail.com>)
 id 69e65c5a-2eae-0a2a0a5409dd-0a2a450ce970-42
 for <xen-devel@lists.xenproject.org>; Mon, 20 Apr 2026 19:03:55 +0200
Received: from [209.85.128.180] (helo=mail-yw1-f180.google.com)
 by tlsNG-d25034.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.1)
 (envelope-from <demiobenour@gmail.com>)
 id 69e65c7a-62f1-0a2a450c0019-d15580b4d13a-3
 for <xen-devel@lists.xenproject.org>; Mon, 20 Apr 2026 19:03:55 +0200
Received: by mail-yw1-f180.google.com with SMTP id
 00721157ae682-797ab169454so45000467b3.3
 for <xen-devel@lists.xenproject.org>; Mon, 20 Apr 2026 10:03:54 -0700 (PDT)
Received: from [10.138.34.110]
 (h69-131-150-190.cncrtn.broadband.dynamic.tds.net. [69.131.150.190])
 by smtp.gmail.com with ESMTPSA id
 00721157ae682-7b9ee9ccdc4sm45545407b3.43.2026.04.20.10.03.51
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Mon, 20 Apr 2026 10:03:51 -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=20251104 header.d=gmail.com header.i="@gmail.com" header.h="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=gmail.com; s=20251104; t=1776704633; x=1777309433; darn=lists.xenproject.org;
        h=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;
        bh=IaJDt99qGaEHweujK0P2fSLtGhl4JK9+LtY2W+b0zqk=;
        b=Vr/rEFD7tPurKoD28auQQAnRcELif4fQfvL1+/TfbtoVqpWAxD3HcqI21OauST+nHG
         uaRke8PFHdRxp7TEAn9yhsOFlto87zoPhwCDjDYOnWOAlOQLpugKXCQ5x5ahI4P0wUPT
         PmzG2Rl/EIG0HVCmexio0UaennE4j3l/d1lbmuRh/rJmaVlHCsBMSz6Do6S98+dKogN3
         4oYLUjXi20Dgu1SJ0u/lSL59dDxAK/ZCswl7onfhu/I3q7pQ97haGJ3OkwLGdoHVq3p6
         C8eM6VyC1xoZHZE0IQ+tgtXWL+gGHx+cEIAe8XsBZhlH+jGnf3aEeSAvZbFSE1Ly9b5d
         k+aw==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20251104; t=1776704633; x=1777309433;
        h=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;
        bh=IaJDt99qGaEHweujK0P2fSLtGhl4JK9+LtY2W+b0zqk=;
        b=p38rwJ7o1pTVoZo5M6F7pw89vZIlyvzXoxrbINxzr+7uDz3MXFAjM/H3kMrT+vQqeg
         Hg8XjXgd/GS2WtmftQs4qujnfdH8QhpnVblBOd2E01ASWsCJDiJZEXFf8wBFrxpFx84C
         3u2mC29k9ibmL8BT5cOjCZWI6UqN06cRpkqPbJsKaNYkcDjOiV5Ii+u6fuQ+Ma1SgHrY
         1xx7puJ7LTILTHs4YhZOshn6kNbzbL0HuOtZ5XHsBFC34jVN2f5kEqFIwk6Y96v5KnYO
         F24Yu547ZLBnUaTzMDBybinTKHx2susa7L8aAif3Es57AaoDn1X8LqJ166MmB0vmh+tU
         jNHA==
X-Forwarded-Encrypted: i=1; AFNElJ8q3djYQXW9avkd+0XTIN5ifrp/LYcqPRIGnLWjiUWjv5Mcmjd/zSR+Bql9dMj6zwK6utyIAs5PCxg=@lists.xenproject.org
X-Gm-Message-State: AOJu0YzgymGRCtmBvIeNBWSPvNO4qgNgqZVDRD58teLkIDcHGgHhXdWm
	hxOFlo5H6yEshb+mPiFPCSOtUFI2XtjS3oyOJhMVgvgTT86ihYPPIg1G
X-Gm-Gg: AeBDiev/yQJzJWs83ttK/gwamSTNH631++uTKFyN3Rm1Gexeja0gEe0X88F68VMbW+8
	wpFJLkAZtI+qiMvk9FCJEiuSwTXRbobEyHz5VRz4h+r3h3acZCBogxgRgGKm4t5WGdkfX+XtHx/
	tAxDiwwZ0dlvwFOE0fndXbOdoEFVsH722HPgSQWkqeHm1PTB4L7ZUpgT9aWnf0dgv/FJyRzAIYA
	1ZqaqqJP5G9ypYpmK/r5nhHh7UJdQqb67RX6Vab2xAzl2//Kp+JeqIKOla/PXDF9eHpne7WMzoL
	Krf24hXDVP7KU04Nx318Z0+5zpvea9/tU9TPWAEP/9BHGawfCo7yYVELOB7q2WJFXqtGevcWnXg
	JIVfTa1bxLlRsLZEAnfixx9xTYczfz1lE0rm4l03GA5ey9xPcmTeVFO03FD/ZMrNeJyPbFH8pAB
	xhK5UZMKLuU1zbw08k6h/blJCTJ60vhuw//ixxD55/uyQVuCSEIWb2NtSoFGhQxDzOJ27Myka9u
	rkYmL+IHbTQ9bNsK/HBFVQm/taZw4R8duRaC692MK5XnyZ62gak
X-Received: by 2002:a05:690c:ed5:b0:7b8:7855:4d37 with SMTP id 00721157ae682-7b9ecebda98mr144671307b3.13.1776704633317;
        Mon, 20 Apr 2026 10:03:53 -0700 (PDT)
Message-ID: <8846bac5-77ff-4439-ac5c-c33cdb4a94e3@gmail.com>
Date: Mon, 20 Apr 2026 13:03:45 -0400
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: Pinned, non-revocable mappings of VRAM: will bad things happen?
To: =?UTF-8?Q?Christian_K=C3=B6nig?= <christian.koenig@amd.com>,
 dri-devel@lists.freedesktop.org,
 Xen developer discussion <xen-devel@lists.xenproject.org>,
 linux-media@vger.kernel.org
Cc: Val Packett <val@invisiblethingslab.com>,
 Suwit Semal <sumit.semwal@linaro.org>
References: <a06133f7-3093-4733-9786-bc46c1453e06@gmail.com>
 <b8d04414-18b5-40f7-9ea2-88b30ff5bea0@amd.com>
 <c7865b27-6bf1-4df1-9520-c9ef6b3ef368@gmail.com>
 <4751cf03-d3c1-4d5d-af8e-39ad7c8ffb84@amd.com>
 <7472bfcf-8c22-4ac7-b903-a883cdb8f1c6@gmail.com>
 <8fe8b78b-5294-4319-af92-a4fb00527417@amd.com>
Content-Language: en-US
From: Demi Marie Obenour <demiobenour@gmail.com>
Autocrypt: addr=demiobenour@gmail.com; keydata=
 xsFNBFp+A0oBEADffj6anl9/BHhUSxGTICeVl2tob7hPDdhHNgPR4C8xlYt5q49yB+l2nipd
 aq+4Gk6FZfqC825TKl7eRpUjMriwle4r3R0ydSIGcy4M6eb0IcxmuPYfbWpr/si88QKgyGSV
 Z7GeNW1UnzTdhYHuFlk8dBSmB1fzhEYEk0RcJqg4AKoq6/3/UorR+FaSuVwT7rqzGrTlscnT
 DlPWgRzrQ3jssesI7sZLm82E3pJSgaUoCdCOlL7MMPCJwI8JpPlBedRpe9tfVyfu3euTPLPx
 wcV3L/cfWPGSL4PofBtB8NUU6QwYiQ9Hzx4xOyn67zW73/G0Q2vPPRst8LBDqlxLjbtx/WLR
 6h3nBc3eyuZ+q62HS1pJ5EvUT1vjyJ1ySrqtUXWQ4XlZyoEFUfpJxJoN0A9HCxmHGVckzTRl
 5FMWo8TCniHynNXsBtDQbabt7aNEOaAJdE7to0AH3T/Bvwzcp0ZJtBk0EM6YeMLtotUut7h2
 Bkg1b//r6bTBswMBXVJ5H44Qf0+eKeUg7whSC9qpYOzzrm7+0r9F5u3qF8ZTx55TJc2g656C
 9a1P1MYVysLvkLvS4H+crmxA/i08Tc1h+x9RRvqba4lSzZ6/Tmt60DPM5Sc4R0nSm9BBff0N
 m0bSNRS8InXdO1Aq3362QKX2NOwcL5YaStwODNyZUqF7izjK4QARAQABzTxEZW1pIE1hcmll
 IE9iZW5vdXIgKGxvdmVyIG9mIGNvZGluZykgPGRlbWlvYmVub3VyQGdtYWlsLmNvbT7CwXgE
 EwECACIFAlp+A0oCGwMGCwkIBwMCBhUIAgkKCwQWAgMBAh4BAheAAAoJELKItV//nCLBhr8Q
 AK/xrb4wyi71xII2hkFBpT59ObLN+32FQT7R3lbZRjVFjc6yMUjOb1H/hJVxx+yo5gsSj5LS
 9AwggioUSrcUKldfA/PKKai2mzTlUDxTcF3vKx6iMXKA6AqwAw4B57ZEJoMM6egm57TV19kz
 PMc879NV2nc6+elaKl+/kbVeD3qvBuEwsTe2Do3HAAdrfUG/j9erwIk6gha/Hp9yZlCnPTX+
 VK+xifQqt8RtMqS5R/S8z0msJMI/ajNU03kFjOpqrYziv6OZLJ5cuKb3bZU5aoaRQRDzkFIR
 6aqtFLTohTo20QywXwRa39uFaOT/0YMpNyel0kdOszFOykTEGI2u+kja35g9TkH90kkBTG+a
 EWttIht0Hy6YFmwjcAxisSakBuHnHuMSOiyRQLu43ej2+mDWgItLZ48Mu0C3IG1seeQDjEYP
 tqvyZ6bGkf2Vj+L6wLoLLIhRZxQOedqArIk/Sb2SzQYuxN44IDRt+3ZcDqsPppoKcxSyd1Ny
 2tpvjYJXlfKmOYLhTWs8nwlAlSHX/c/jz/ywwf7eSvGknToo1Y0VpRtoxMaKW1nvH0OeCSVJ
 itfRP7YbiRVc2aNqWPCSgtqHAuVraBRbAFLKh9d2rKFB3BmynTUpc1BQLJP8+D5oNyb8Ts4x
 Xd3iV/uD8JLGJfYZIR7oGWFLP4uZ3tkneDfYzsFNBFp+A0oBEAC9ynZI9LU+uJkMeEJeJyQ/
 8VFkCJQPQZEsIGzOTlPnwvVna0AS86n2Z+rK7R/usYs5iJCZ55/JISWd8xD57ue0eB47bcJv
 VqGlObI2DEG8TwaW0O0duRhDgzMEL4t1KdRAepIESBEA/iPpI4gfUbVEIEQuqdqQyO4GAe+M
 kD0Hy5JH/0qgFmbaSegNTdQg5iqYjRZ3ttiswalql1/iSyv1WYeC1OAs+2BLOAT2NEggSiVO
 txEfgewsQtCWi8H1SoirakIfo45Hz0tk/Ad9ZWh2PvOGt97Ka85o4TLJxgJJqGEnqcFUZnJJ
 riwoaRIS8N2C8/nEM53jb1sH0gYddMU3QxY7dYNLIUrRKQeNkF30dK7V6JRH7pleRlf+wQcN
 fRAIUrNlatj9TxwivQrKnC9aIFFHEy/0mAgtrQShcMRmMgVlRoOA5B8RTulRLCmkafvwuhs6
 dCxN0GNAORIVVFxjx9Vn7OqYPgwiofZ6SbEl0hgPyWBQvE85klFLZLoj7p+joDY1XNQztmfA
 rnJ9x+YV4igjWImINAZSlmEcYtd+xy3Li/8oeYDAqrsnrOjb+WvGhCykJk4urBog2LNtcyCj
 kTs7F+WeXGUo0NDhbd3Z6AyFfqeF7uJ3D5hlpX2nI9no/ugPrrTVoVZAgrrnNz0iZG2DVx46
 x913pVKHl5mlYQARAQABwsFfBBgBAgAJBQJafgNKAhsMAAoJELKItV//nCLBwNIP/AiIHE8b
 oIqReFQyaMzxq6lE4YZCZNj65B/nkDOvodSiwfwjjVVE2V3iEzxMHbgyTCGA67+Bo/d5aQGj
 gn0TPtsGzelyQHipaUzEyrsceUGWYoKXYyVWKEfyh0cDfnd9diAm3VeNqchtcMpoehETH8fr
 RHnJdBcjf112PzQSdKC6kqU0Q196c4Vp5HDOQfNiDnTf7gZSj0BraHOByy9LEDCLhQiCmr+2
 E0rW4tBtDAn2HkT9uf32ZGqJCn1O+2uVfFhGu6vPE5qkqrbSE8TG+03H8ecU2q50zgHWPdHM
 OBvy3EhzfAh2VmOSTcRK+tSUe/u3wdLRDPwv/DTzGI36Kgky9MsDC5gpIwNbOJP2G/q1wT1o
 Gkw4IXfWv2ufWiXqJ+k7HEi2N1sree7Dy9KBCqb+ca1vFhYPDJfhP75I/VnzHVssZ/rYZ9+5
 1yDoUABoNdJNSGUYl+Yh9Pw9pE3Kt4EFzUlFZWbE4xKL/NPno+z4J9aWemLLszcYz/u3XnbO
 vUSQHSrmfOzX3cV4yfmjM5lewgSstoxGyTx2M8enslgdXhPthZlDnTnOT+C+OTsh8+m5tos8
 HQjaPM01MKBiAqdPgksm1wu2DrrwUi6ChRVTUBcj6+/9IJ81H2P2gJk3Ls3AVIxIffLoY34E
 +MYSfkEjBz0E8CLOcAw7JIwAaeBT
In-Reply-To: <8fe8b78b-5294-4319-af92-a4fb00527417@amd.com>
Content-Type: multipart/signed; micalg=pgp-sha256;
 protocol="application/pgp-signature";
 boundary="------------k6tjV2iCtnYnEvXZeEhxMv7R"
X-purgate-ID: tlsNG-d25034/1776704635-6F77ECF5-FFF41692/0/0
X-purgate-type: clean
X-purgate-size: 18454

This is an OpenPGP/MIME signed message (RFC 4880 and 3156)
--------------k6tjV2iCtnYnEvXZeEhxMv7R
Content-Type: multipart/mixed; boundary="------------XzUtzQuDURgw8Shm50KGUc7R";
 protected-headers="v1"
Message-ID: <8846bac5-77ff-4439-ac5c-c33cdb4a94e3@gmail.com>
Date: Mon, 20 Apr 2026 13:03:45 -0400
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: Pinned, non-revocable mappings of VRAM: will bad things happen?
To: =?UTF-8?Q?Christian_K=C3=B6nig?= <christian.koenig@amd.com>,
 dri-devel@lists.freedesktop.org,
 Xen developer discussion <xen-devel@lists.xenproject.org>,
 linux-media@vger.kernel.org
Cc: Val Packett <val@invisiblethingslab.com>,
 Suwit Semal <sumit.semwal@linaro.org>
References: <a06133f7-3093-4733-9786-bc46c1453e06@gmail.com>
 <b8d04414-18b5-40f7-9ea2-88b30ff5bea0@amd.com>
 <c7865b27-6bf1-4df1-9520-c9ef6b3ef368@gmail.com>
 <4751cf03-d3c1-4d5d-af8e-39ad7c8ffb84@amd.com>
 <7472bfcf-8c22-4ac7-b903-a883cdb8f1c6@gmail.com>
 <8fe8b78b-5294-4319-af92-a4fb00527417@amd.com>
Content-Language: en-US
From: Demi Marie Obenour <demiobenour@gmail.com>
Autocrypt: addr=demiobenour@gmail.com; keydata=
 xsFNBFp+A0oBEADffj6anl9/BHhUSxGTICeVl2tob7hPDdhHNgPR4C8xlYt5q49yB+l2nipd
 aq+4Gk6FZfqC825TKl7eRpUjMriwle4r3R0ydSIGcy4M6eb0IcxmuPYfbWpr/si88QKgyGSV
 Z7GeNW1UnzTdhYHuFlk8dBSmB1fzhEYEk0RcJqg4AKoq6/3/UorR+FaSuVwT7rqzGrTlscnT
 DlPWgRzrQ3jssesI7sZLm82E3pJSgaUoCdCOlL7MMPCJwI8JpPlBedRpe9tfVyfu3euTPLPx
 wcV3L/cfWPGSL4PofBtB8NUU6QwYiQ9Hzx4xOyn67zW73/G0Q2vPPRst8LBDqlxLjbtx/WLR
 6h3nBc3eyuZ+q62HS1pJ5EvUT1vjyJ1ySrqtUXWQ4XlZyoEFUfpJxJoN0A9HCxmHGVckzTRl
 5FMWo8TCniHynNXsBtDQbabt7aNEOaAJdE7to0AH3T/Bvwzcp0ZJtBk0EM6YeMLtotUut7h2
 Bkg1b//r6bTBswMBXVJ5H44Qf0+eKeUg7whSC9qpYOzzrm7+0r9F5u3qF8ZTx55TJc2g656C
 9a1P1MYVysLvkLvS4H+crmxA/i08Tc1h+x9RRvqba4lSzZ6/Tmt60DPM5Sc4R0nSm9BBff0N
 m0bSNRS8InXdO1Aq3362QKX2NOwcL5YaStwODNyZUqF7izjK4QARAQABzTxEZW1pIE1hcmll
 IE9iZW5vdXIgKGxvdmVyIG9mIGNvZGluZykgPGRlbWlvYmVub3VyQGdtYWlsLmNvbT7CwXgE
 EwECACIFAlp+A0oCGwMGCwkIBwMCBhUIAgkKCwQWAgMBAh4BAheAAAoJELKItV//nCLBhr8Q
 AK/xrb4wyi71xII2hkFBpT59ObLN+32FQT7R3lbZRjVFjc6yMUjOb1H/hJVxx+yo5gsSj5LS
 9AwggioUSrcUKldfA/PKKai2mzTlUDxTcF3vKx6iMXKA6AqwAw4B57ZEJoMM6egm57TV19kz
 PMc879NV2nc6+elaKl+/kbVeD3qvBuEwsTe2Do3HAAdrfUG/j9erwIk6gha/Hp9yZlCnPTX+
 VK+xifQqt8RtMqS5R/S8z0msJMI/ajNU03kFjOpqrYziv6OZLJ5cuKb3bZU5aoaRQRDzkFIR
 6aqtFLTohTo20QywXwRa39uFaOT/0YMpNyel0kdOszFOykTEGI2u+kja35g9TkH90kkBTG+a
 EWttIht0Hy6YFmwjcAxisSakBuHnHuMSOiyRQLu43ej2+mDWgItLZ48Mu0C3IG1seeQDjEYP
 tqvyZ6bGkf2Vj+L6wLoLLIhRZxQOedqArIk/Sb2SzQYuxN44IDRt+3ZcDqsPppoKcxSyd1Ny
 2tpvjYJXlfKmOYLhTWs8nwlAlSHX/c/jz/ywwf7eSvGknToo1Y0VpRtoxMaKW1nvH0OeCSVJ
 itfRP7YbiRVc2aNqWPCSgtqHAuVraBRbAFLKh9d2rKFB3BmynTUpc1BQLJP8+D5oNyb8Ts4x
 Xd3iV/uD8JLGJfYZIR7oGWFLP4uZ3tkneDfYzsFNBFp+A0oBEAC9ynZI9LU+uJkMeEJeJyQ/
 8VFkCJQPQZEsIGzOTlPnwvVna0AS86n2Z+rK7R/usYs5iJCZ55/JISWd8xD57ue0eB47bcJv
 VqGlObI2DEG8TwaW0O0duRhDgzMEL4t1KdRAepIESBEA/iPpI4gfUbVEIEQuqdqQyO4GAe+M
 kD0Hy5JH/0qgFmbaSegNTdQg5iqYjRZ3ttiswalql1/iSyv1WYeC1OAs+2BLOAT2NEggSiVO
 txEfgewsQtCWi8H1SoirakIfo45Hz0tk/Ad9ZWh2PvOGt97Ka85o4TLJxgJJqGEnqcFUZnJJ
 riwoaRIS8N2C8/nEM53jb1sH0gYddMU3QxY7dYNLIUrRKQeNkF30dK7V6JRH7pleRlf+wQcN
 fRAIUrNlatj9TxwivQrKnC9aIFFHEy/0mAgtrQShcMRmMgVlRoOA5B8RTulRLCmkafvwuhs6
 dCxN0GNAORIVVFxjx9Vn7OqYPgwiofZ6SbEl0hgPyWBQvE85klFLZLoj7p+joDY1XNQztmfA
 rnJ9x+YV4igjWImINAZSlmEcYtd+xy3Li/8oeYDAqrsnrOjb+WvGhCykJk4urBog2LNtcyCj
 kTs7F+WeXGUo0NDhbd3Z6AyFfqeF7uJ3D5hlpX2nI9no/ugPrrTVoVZAgrrnNz0iZG2DVx46
 x913pVKHl5mlYQARAQABwsFfBBgBAgAJBQJafgNKAhsMAAoJELKItV//nCLBwNIP/AiIHE8b
 oIqReFQyaMzxq6lE4YZCZNj65B/nkDOvodSiwfwjjVVE2V3iEzxMHbgyTCGA67+Bo/d5aQGj
 gn0TPtsGzelyQHipaUzEyrsceUGWYoKXYyVWKEfyh0cDfnd9diAm3VeNqchtcMpoehETH8fr
 RHnJdBcjf112PzQSdKC6kqU0Q196c4Vp5HDOQfNiDnTf7gZSj0BraHOByy9LEDCLhQiCmr+2
 E0rW4tBtDAn2HkT9uf32ZGqJCn1O+2uVfFhGu6vPE5qkqrbSE8TG+03H8ecU2q50zgHWPdHM
 OBvy3EhzfAh2VmOSTcRK+tSUe/u3wdLRDPwv/DTzGI36Kgky9MsDC5gpIwNbOJP2G/q1wT1o
 Gkw4IXfWv2ufWiXqJ+k7HEi2N1sree7Dy9KBCqb+ca1vFhYPDJfhP75I/VnzHVssZ/rYZ9+5
 1yDoUABoNdJNSGUYl+Yh9Pw9pE3Kt4EFzUlFZWbE4xKL/NPno+z4J9aWemLLszcYz/u3XnbO
 vUSQHSrmfOzX3cV4yfmjM5lewgSstoxGyTx2M8enslgdXhPthZlDnTnOT+C+OTsh8+m5tos8
 HQjaPM01MKBiAqdPgksm1wu2DrrwUi6ChRVTUBcj6+/9IJ81H2P2gJk3Ls3AVIxIffLoY34E
 +MYSfkEjBz0E8CLOcAw7JIwAaeBT
In-Reply-To: <8fe8b78b-5294-4319-af92-a4fb00527417@amd.com>

--------------XzUtzQuDURgw8Shm50KGUc7R
Content-Type: multipart/mixed; boundary="------------10JM7oBQQbSgbPWSKCMrkIaC"

--------------10JM7oBQQbSgbPWSKCMrkIaC
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: quoted-printable

On 4/20/26 04:49, Christian K=C3=B6nig wrote:
> On 4/17/26 21:35, Demi Marie Obenour wrote:
>> On 4/17/26 03:53, Christian K=C3=B6nig wrote:
>>> On 4/16/26 18:13, Demi Marie Obenour wrote:
>>>> On 4/16/26 05:57, Christian K=C3=B6nig wrote:
> ...
>>>> Unless I am
>>>> mistaken, client workloads are highly non-uniform: a single game or
>>>> compute job might well use more VRAM than every other program on the=

>>>> system combined.
>>>
>>> Yeah, perfectly correct.
>>>
>>>> Are these workloads impossible to make work well with pinning?
>>>
>>> No, as long as you don't know the workload beforehand, e.g. when you =
define the limit.
>>>
>>> I mean that's why basically everybody avoids pinning and assigning fi=
xed amounts of resources.
>>>
>>> Even if you can make it work technically pinning usually results in a=
 rather bad end user experience.
>>>
>>> Regards,
>>> Christian.
>>
>> Do drivers and programs assume that they can access VRAM from the CPU?=

>=20
> Yes, and that is actually really important for performance.
>=20
> That's why Alex and I came up with the idea of using the resize able BA=
R feature to access all of VRAM on modern GPUs.
>=20
> There are a couple of hacks which have been implemented over the years =
for exotic platforms were MMIO/VRAM access was problematic. For example o=
n a page fault you use a GPU DMA engine to copy the VRAM buffer into syst=
em memory, make the CPU memory access and then copy it back again on dema=
nd at the next command submission.
>=20
> But all of those hacks are basically just prove of concepts and result =
in completely unusable performance.

I'm reminded of Asahi considering emulating unaligned accesses to
PCI BARs in a fault handler.

>> Are any of the following reasonable options?
>>
>> 1. Change the guest kernel to only map (and thus pin) a small subset
>>    of VRAM at any given time.  If unmapped VRAM is accessed the guest
>>    traps the page fault, evicts an old VRAM mapping, and creates a
>>    new one.
>=20
> Yeah, that could potentially work.
>=20
> This is basically what we do on the host kernel driver when we can't re=
size the BAR for some reason. In that use case VRAM buffers are shuffled =
in and out of the CPU accessible window of VRAM on demand.

How much is this going to hurt performance?
=20
>> 2. Pretend that resizable BAR is not enabled, so the guest doesn't
>>    think it can map much of VRAM at once.  If resizable BAR is enabled=

>>    on the host, it might be possible to split the large BAR mapping
>>    in a lot of ways.
>=20
> That won't work. The userspace parts of the driver stack don't care how=
 large the BAR to access VRAM with the CPU is.
>=20
> The expectation is that the kernel driver makes thing CPU accessible as=
 needed in the page fault handler.
>=20
> It is still a good idea for your solution #1 to give the amount of "pin=
-able" VRAM to the userspace stack as CPU visible VRAM limit so that test=
 cases and applications try to lower their usage of VRAM, e.g. use system=
 memory bounce buffers when possible.

That makes sense.

>> Or does Xen really need to allow the host to handle guest page faults?=

>> That adds a huge amount of complexity to trusted and security-critical=

>> parts of the system, so it really is a last resort.  Putting the
>> complexity in to the guest virtio-GPU driver is vastly preferable if
>> it can be made to work well.
>=20
> Well the nested page fault handling KVM offers has proven to be extreme=
ly useful. So when XEN can't do this it is clearly lacking an important f=
eature.

I agree. However, it is a lot of work to implement, which is why I'm
looking for alternatives if possible.

KVM is part of the Linux kernel, so it can just call the Linux kernel
functions used to handle userspace page faults.  Xen is separate from
Linux, so it can't do that.  Instead, it will need to:

1. Determine that the fault needs to be handled by another VM, and
   the ID of the VM that needs to handle the fault.
2. Send a message to the VM asking it to handle the fault.
3. Block the vCPU until it gets a response.

Then the VM owning the memory will need to call the page fault handler
and provide the memory to Xen.  Xen then needs to:

4. Map the memory into the nested page tables of the VM that faulted.
5. Resume the vCPU.

> But I have one question: When XEN has a problem handling faults from th=
e guest on the host then how does that work for system memory mappings?
>=20
> There is really no difference between VRAM and system memory in the han=
dling for the GPU driver stack.
>=20
> Regards,
> Christian.

Generally, Xen makes the frontend (usually an unprivileged VM)
responsible for providing mappings to the backend (usually the host).
That is possible with system RAM but not with VRAM, because Xen has
no awareness of VRAM.  To Xen, VRAM is just a PCI BAR.

KVM runs in the same kernel as the GPU driver.  Xen doesn't, and that
is the source of the extra complexity.
--=20
Sincerely,
Demi Marie Obenour (she/her/hers)
--------------10JM7oBQQbSgbPWSKCMrkIaC
Content-Type: application/pgp-keys; name="OpenPGP_0xB288B55FFF9C22C1.asc"
Content-Disposition: attachment; filename="OpenPGP_0xB288B55FFF9C22C1.asc"
Content-Description: OpenPGP public key
Content-Transfer-Encoding: quoted-printable

-----BEGIN PGP PUBLIC KEY BLOCK-----

xsFNBFp+A0oBEADffj6anl9/BHhUSxGTICeVl2tob7hPDdhHNgPR4C8xlYt5q49y
B+l2nipdaq+4Gk6FZfqC825TKl7eRpUjMriwle4r3R0ydSIGcy4M6eb0IcxmuPYf
bWpr/si88QKgyGSVZ7GeNW1UnzTdhYHuFlk8dBSmB1fzhEYEk0RcJqg4AKoq6/3/
UorR+FaSuVwT7rqzGrTlscnTDlPWgRzrQ3jssesI7sZLm82E3pJSgaUoCdCOlL7M
MPCJwI8JpPlBedRpe9tfVyfu3euTPLPxwcV3L/cfWPGSL4PofBtB8NUU6QwYiQ9H
zx4xOyn67zW73/G0Q2vPPRst8LBDqlxLjbtx/WLR6h3nBc3eyuZ+q62HS1pJ5EvU
T1vjyJ1ySrqtUXWQ4XlZyoEFUfpJxJoN0A9HCxmHGVckzTRl5FMWo8TCniHynNXs
BtDQbabt7aNEOaAJdE7to0AH3T/Bvwzcp0ZJtBk0EM6YeMLtotUut7h2Bkg1b//r
6bTBswMBXVJ5H44Qf0+eKeUg7whSC9qpYOzzrm7+0r9F5u3qF8ZTx55TJc2g656C
9a1P1MYVysLvkLvS4H+crmxA/i08Tc1h+x9RRvqba4lSzZ6/Tmt60DPM5Sc4R0nS
m9BBff0Nm0bSNRS8InXdO1Aq3362QKX2NOwcL5YaStwODNyZUqF7izjK4QARAQAB
zTxEZW1pIE9iZW5vdXIgKElUTCBFbWFpbCBLZXkpIDxhdGhlbmFAaW52aXNpYmxl
dGhpbmdzbGFiLmNvbT7CwY4EEwEIADgWIQR2h02fEza6IlkHHHGyiLVf/5wiwQUC
X6YJvQIbAwULCQgHAgYVCgkICwIEFgIDAQIeAQIXgAAKCRCyiLVf/5wiwWRhD/0Y
R+YYC5Kduv/2LBgQJIygMsFiRHbR4+tWXuTFqgrxxFSlMktZ6gQrQCWe38WnOXkB
oY6n/5lSJdfnuGd2UagZ/9dkaGMUkqt+5WshLFly4BnP7pSsWReKgMP7etRTwn3S
zk1OwFx2lzY1EnnconPLfPBc6rWG2moA6l0WX+3WNR1B1ndqpl2hPSjT2jUCBWDV
rGOUSX7r5f1WgtBeNYnEXPBCUUM51pFGESmfHIXQrqFDA7nBNiIVFDJTmQzuEqIy
Jl67pKNgooij5mKzRhFKHfjLRAH4mmWZlB9UjDStAfFBAoDFHwd1HL5VQCNQdqEc
/9lZDApqWuCPadZN+pGouqLysesIYsNxUhJ7dtWOWHl0vs7/3qkWmWun/2uOJMQh
ra2u8nA9g91FbOobWqjrDd6x3ZJoGQf4zLqjmn/P514gb697788e573WN/MpQ5XI
Fl7aM2d6/GJiq6LC9T2gSUW4rbPBiqOCeiUx7Kd/sVm41p9TOA7fEG4bYddCfDsN
xaQJH6VRK3NOuBUGeL+iQEVF5Xs6Yp+U+jwvv2M5Lel3EqAYo5xXTx4ls0xaxDCu
fudcAh8CMMqx3fguSb7Mi31WlnZpk0fDuWQVNKyDP7lYpwc4nCCGNKCj622ZSocH
AcQmX28L8pJdLYacv9pU3jPy4fHcQYvmTavTqowGnM08RGVtaSBNYXJpZSBPYmVu
b3VyIChsb3ZlciBvZiBjb2RpbmcpIDxkZW1pb2Jlbm91ckBnbWFpbC5jb20+wsF4
BBMBAgAiBQJafgNKAhsDBgsJCAcDAgYVCAIJCgsEFgIDAQIeAQIXgAAKCRCyiLVf
/5wiwYa/EACv8a2+MMou9cSCNoZBQaU+fTmyzft9hUE+0d5W2UY1RY3OsjFIzm9R
/4SVccfsqOYLEo+S0vQMIIIqFEq3FCpXXwPzyimotps05VA8U3Bd7yseojFygOgK
sAMOAee2RCaDDOnoJue01dfZMzzHPO/TVdp3OvnpWipfv5G1Xg96rwbhMLE3tg6N
xwAHa31Bv4/Xq8CJOoIWvx6fcmZQpz01/lSvsYn0KrfEbTKkuUf0vM9JrCTCP2oz
VNN5BYzqaq2M4r+jmSyeXLim922VOWqGkUEQ85BSEemqrRS06IU6NtEMsF8EWt/b
hWjk/9GDKTcnpdJHTrMxTspExBiNrvpI2t+YPU5B/dJJAUxvmhFrbSIbdB8umBZs
I3AMYrEmpAbh5x7jEjoskUC7uN3o9vpg1oCLS2ePDLtAtyBtbHnkA4xGD7ar8mem
xpH9lY/i+sC6CyyIUWcUDnnagKyJP0m9ks0GLsTeOCA0bft2XA6rD6aaCnMUsndT
ctrab42CV5XypjmC4U1rPJ8JQJUh1/3P48/8sMH+3krxpJ06KNWNFaUbaMTGiltZ
7x9DngklSYrX0T+2G4kVXNmjaljwkoLahwLla2gUWwBSyofXdqyhQdwZsp01KXNQ
UCyT/Pg+aDcm/E7OMV3d4lf7g/CSxiX2GSEe6BlhSz+Lmd7ZJ3g32M1ARGVtaSBN
YXJpZSBPYmVub3VyIChJVEwgRW1haWwgS2V5KSA8ZGVtaUBpbnZpc2libGV0aGlu
Z3NsYWIuY29tPsLBjgQTAQgAOBYhBHaHTZ8TNroiWQcccbKItV//nCLBBQJgOEV+
AhsDBQsJCAcCBhUKCQgLAgQWAgMBAh4BAheAAAoJELKItV//nCLBKwoP/1WSnFdv
SAD0g7fD0WlF+oi7ISFT7oqJnchFLOwVHK4Jg0e4hGn1ekWsF3Ha5tFLh4V/7UUu
obYJpTfBAA2CckspYBqLtKGjFxcaqjjpO1I2W/jeNELVtSYuCOZICjdNGw2Hl9yH
KRZiBkqc9u8lQcHDZKq4LIpVJj6ZQV/nxttDX90ax2No1nLLQXFbr5wb465LAPpU
lXwunYDij7xJGye+VUASQh9datye6orZYuJvNo8Tr3mAQxxkfR46LzWgxFCPEAZJ
5P56Nc0IMHdJZj0Uc9+1jxERhOGppp5jlLgYGK7faGB/jTV6LaRQ4Ad+xiqokDWp
mUOZsmA+bMbtPfYjDZBz5mlyHcIRKIFpE1l3Y8F7PhJuzzMUKkJi90CYakCV4x/a
Zs4pzk5E96c2VQx01RIEJ7fzHF7lwFdtfTS4YsLtAbQFsKayqwkGcVv2B1AHeqdo
TMX+cgDvjd1ZganGlWA8Sv9RkNSMchn1hMuTwERTyFTr2dKPnQdA1F480+jUap41
ClXgn227WkCIMrNhQGNyJsnwyzi5wS8rBVRQ3BOTMyvGM07j3axUOYaejEpg7wKi
wTPZGLGH1sz5GljD/916v5+v2xLbOo5606j9dWf5/tAhbPuqrQgWv41wuKDi+dDD
EKkODF7DHes8No+QcHTDyETMn1RYm7t0RKR4zsFNBFp+A0oBEAC9ynZI9LU+uJkM
eEJeJyQ/8VFkCJQPQZEsIGzOTlPnwvVna0AS86n2Z+rK7R/usYs5iJCZ55/JISWd
8xD57ue0eB47bcJvVqGlObI2DEG8TwaW0O0duRhDgzMEL4t1KdRAepIESBEA/iPp
I4gfUbVEIEQuqdqQyO4GAe+MkD0Hy5JH/0qgFmbaSegNTdQg5iqYjRZ3ttiswalq
l1/iSyv1WYeC1OAs+2BLOAT2NEggSiVOtxEfgewsQtCWi8H1SoirakIfo45Hz0tk
/Ad9ZWh2PvOGt97Ka85o4TLJxgJJqGEnqcFUZnJJriwoaRIS8N2C8/nEM53jb1sH
0gYddMU3QxY7dYNLIUrRKQeNkF30dK7V6JRH7pleRlf+wQcNfRAIUrNlatj9Txwi
vQrKnC9aIFFHEy/0mAgtrQShcMRmMgVlRoOA5B8RTulRLCmkafvwuhs6dCxN0GNA
ORIVVFxjx9Vn7OqYPgwiofZ6SbEl0hgPyWBQvE85klFLZLoj7p+joDY1XNQztmfA
rnJ9x+YV4igjWImINAZSlmEcYtd+xy3Li/8oeYDAqrsnrOjb+WvGhCykJk4urBog
2LNtcyCjkTs7F+WeXGUo0NDhbd3Z6AyFfqeF7uJ3D5hlpX2nI9no/ugPrrTVoVZA
grrnNz0iZG2DVx46x913pVKHl5mlYQARAQABwsFfBBgBAgAJBQJafgNKAhsMAAoJ
ELKItV//nCLBwNIP/AiIHE8boIqReFQyaMzxq6lE4YZCZNj65B/nkDOvodSiwfwj
jVVE2V3iEzxMHbgyTCGA67+Bo/d5aQGjgn0TPtsGzelyQHipaUzEyrsceUGWYoKX
YyVWKEfyh0cDfnd9diAm3VeNqchtcMpoehETH8frRHnJdBcjf112PzQSdKC6kqU0
Q196c4Vp5HDOQfNiDnTf7gZSj0BraHOByy9LEDCLhQiCmr+2E0rW4tBtDAn2HkT9
uf32ZGqJCn1O+2uVfFhGu6vPE5qkqrbSE8TG+03H8ecU2q50zgHWPdHMOBvy3Ehz
fAh2VmOSTcRK+tSUe/u3wdLRDPwv/DTzGI36Kgky9MsDC5gpIwNbOJP2G/q1wT1o
Gkw4IXfWv2ufWiXqJ+k7HEi2N1sree7Dy9KBCqb+ca1vFhYPDJfhP75I/VnzHVss
Z/rYZ9+51yDoUABoNdJNSGUYl+Yh9Pw9pE3Kt4EFzUlFZWbE4xKL/NPno+z4J9aW
emLLszcYz/u3XnbOvUSQHSrmfOzX3cV4yfmjM5lewgSstoxGyTx2M8enslgdXhPt
hZlDnTnOT+C+OTsh8+m5tos8HQjaPM01MKBiAqdPgksm1wu2DrrwUi6ChRVTUBcj
6+/9IJ81H2P2gJk3Ls3AVIxIffLoY34E+MYSfkEjBz0E8CLOcAw7JIwAaeBTzsFN
BGbyLVgBEACqClxh50hmBepTSVlan6EBq3OAoxhrAhWZYEwN78k+ENhK68KhqC5R
IsHzlL7QHW1gmfVBQZ63GnWiraM6wOJqFTL4ZWvRslga9u28FJ5XyK860mZLgYhK
9BzoUk4s+dat9jVUbq6LpQ1Ot5I9vrdzo2p1jtQ8h9WCIiFxSYy8s8pZ3hHh5T64
GIj1m/kY7lG3VIdUgoNiREGf/iOMjUFjwwE9ZoJ26j9p7p1U+TkKeF6wgswEB1T3
J8KCAtvmRtqJDq558IU5jhg5fgN+xHB8cgvUWulgK9FIF9oFxcuxtaf/juhHWKMO
RtL0bHfNdXoBdpUDZE+mLBUAxF6KSsRrvx6AQyJs7VjgXJDtQVWvH0PUmTrEswgb
49nNU+dLLZQAZagxqnZ9Dp5l6GqaGZCHERJcLmdY/EmMzSf5YazJ6c0vO8rdW27M
kn73qcWAplQn5mOXaqbfzWkAUPyUXppuRHfrjxTDz3GyJJVOeMmMrTxH4uCaGpOX
Z8tN6829J1roGw4oKDRUQsaBAeEDqizXMPRc+6U9vI5FXzbAsb+8lKW65G7JWHym
YPOGUt2hK4DdTA1PmVo0DxH00eWWeKxqvmGyX+Dhcg+5e191rPsMRGsDlH6KihI6
+3JIuc0y6ngdjcp6aalbuvPIGFrCRx3tnRtNc7He6cBWQoH9RPwluwARAQABwsOs
BBgBCgAgFiEEdodNnxM2uiJZBxxxsoi1X/+cIsEFAmbyLVgCGwICQAkQsoi1X/+c
IsHBdCAEGQEKAB0WIQSilC2pUlbVp66j3+yzNoc6synyUwUCZvItWAAKCRCzNoc6
synyU85gD/0T1QDtPhovkGwoqv4jUbEMMvpeYQf+oWgm/TjWPeLwdjl7AtY0G9Ml
ZoyGniYkoHi37Gnn/ShLT3B5vtyI58ap2+SSa8SnGftdAKRLiWFWCiAEklm9FRk8
N3hwxhmSFF1KR/AIDS4g+HIsZn7YEMubBSgLlZZ9zHl4O4vwuXlREBEW97iL/FSt
VownU2V39t7PtFvGZNk+DJH7eLO3jmNRYB0PL4JOyyda3NH/J92iwrFmjFWWmmWb
/Xz8l9DIs+Z59pRCVTTwbBEZhcUc7rVMCcIYL+q1WxBG2e6lMn15OQJ5WfiE6E0I
sGirAEDnXWx92JNGx5l+mMpdpsWhBZ5iGTtttZesibNkQfd48/eCgFi4cxJUC4PT
UQwfD9AMgzwSTGJrkI5XGy+XqxwOjL8UA0iIrtTpMh49zw46uV6kwFQCgkf32jZM
OLwLTNSzclbnA7GRd8tKwezQ/XqeK3dal2n+cOr+o+Eka7yGmGWNUqFbIe8cjj9T
JeF3mgOCmZOwMI+wIcQYRSf+e5VTMO6TNWH5BI3vqeHSt7HkYuPlHT0pGum88d4a
pWqhulH4rUhEMtirX1hYx8Q4HlUOQqLtxzmwOYWkhl1C+yPObAvUDNiHCLf9w28n
uihgEkzHt9J4VKYulyJM9fe3ENcyU6rpXD7iANQqcr87ogKXFxknZ97uEACvSucc
RbnnAgRqZ7GDzgoBerJ2zrmhLkeREZ08iz1zze1JgyW3HEwdr2UbyAuqvSADCSUU
GN0vtQHsPzWl8onRc7lOPqPDF8OO+UfN9NAfA4wl3QyChD1GXl9rwKQOkbvdlYFV
UFx9u86LNi4ssTmU8p9NtHIGpz1SYMVYNoYy9NU7EVqypGMguDCL7gJt6GUmA0sw
p+YCroXiwL2BJ7RwRqTpgQuFL1gShkA17D5jK4mDPEetq1d8kz9rQYvAR/sTKBsR
ImC3xSfn8zpWoNTTB6lnwyP5Ng1bu6esS7+SpYprFTe7ZqGZF6xhvBPf1Ldi9UAm
U2xPN1/eeWxEa2kusidmFKPmN8lcT4miiAvwGxEnY7Oww9CgZlUB+LP4dl5VPjEt
sFeAhrgxLdpVTjPRRwTd9VQF3/XYl83j5wySIQKIPXgT3sG3ngAhDhC8I8GpM36r
8WJJ3x2yVzyJUbBPO0GBhWE2xPNIfhxVoU4cGGhpFqz7dPKSTRDGq++MrFgKKGpI
ZwT3CPTSSKc7ySndEXWkOYArDIdtyxdE1p5/c3aoz4utzUU7NDHQ+vVIwlnZSMiZ
jek2IJP3SZ+COOIHCVxpUaZ4lnzWT4eDqABhMLpIzw6NmGfg+kLBJhouqz81WITr
EtJuZYM5blWncBOJCoWMnBEcTEo/viU3GgcVRw=3D=3D
=3Dx94R
-----END PGP PUBLIC KEY BLOCK-----

--------------10JM7oBQQbSgbPWSKCMrkIaC--

--------------XzUtzQuDURgw8Shm50KGUc7R--

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

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

iQIzBAEBCgAdFiEEopQtqVJW1aeuo9/sszaHOrMp8lMFAmnmXHIACgkQszaHOrMp
8lMP3w//SsouQ8thLGc1ReZwoowZ1fk+M3//KApSho08BStSJqKiteNY9YjJS3rQ
F3B7a/BZSkTL+KpbsYbDRiTAE2utqIhc1+6f7CN2teQU7BkwwRQMJU699UAGv6QR
xPQCXJAmUKnh6V1alqGMNuXw5sRCmhlmQUsMIS53nExLLHAQe6sC7qc7EOENepV5
6rq7NO6yfrycgacveaGg1VHUVtY/4PU0UPz4QLbdD3oyLr1HFSh7BWzD884+j/cX
mo6Ts5cc8luBIt9IgZgCD+WkmZ1mRJx83x/Fcaef6AUsWoyWOaKw9cLCFXCIzZMw
FMQjq1/Pe9/U3WnVOiHkCqDJ+E1QbnygSoU0fEHYUPElhAbxEPz8kk2T2tOSyOCP
AB9FK/T4jkcye/U0VTLCeC0mAqZyNoHj+weFcU/hx5TxRYAwJcFKJhUcgKtQ4X4B
4uORbJfSUBIvgfwJBlT8G0akpWiroxGKAVDVFc+tb6jgCK+3D2Ln2bZ53Oli7X68
2xoyvZXeIjqvrIVZCWZE0jjtaO0JcCzaYNeGxV9WCgcUgXPP5PqamNyveumSeFLF
7D5zF9oT9YnXmO9nfsc4Y1hwfsGYantaM58Q9l5SsM2chrxnewznOj8rRcmkRXGE
MxXExMqMg3VuCwBeyHn27wJi/Wbd30JDDia/NnZA6MckHACT8FY=
=yWZM
-----END PGP SIGNATURE-----

--------------k6tjV2iCtnYnEvXZeEhxMv7R--


From xen-devel-bounces@lists.xenproject.org Mon Apr 20 17:46:25 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 20 Apr 2026 17:46:25 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1286391.1567463 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wEshH-0004ed-Nj; Mon, 20 Apr 2026 17:46:11 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1286391.1567463; Mon, 20 Apr 2026 17:46: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 1wEshH-0004eW-KM; Mon, 20 Apr 2026 17:46:11 +0000
Received: by outflank-mailman (input) for mailman id 1286391;
 Mon, 20 Apr 2026 17:46:10 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <andrew.cooper3@citrix.com>) id 1wEshG-0004e7-6x
 for xen-devel@lists.xenproject.org; Mon, 20 Apr 2026 17:46:10 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wEshD-0090Zo-Ba
 for xen-devel@lists.xenproject.org; Mon, 20 Apr 2026 19:46:08 +0200
Received: from [10.42.69.1] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <andrew.cooper3@citrix.com>)
 id 69e6663b-e002-0a2a0a5209dd-0a2a4501cb2a-24
 for <xen-devel@lists.xenproject.org>; Mon, 20 Apr 2026 19:46:08 +0200
Received: from [209.85.128.45] (helo=mail-wm1-f45.google.com)
 by tlsNG-d62444.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.1)
 (envelope-from <andrew.cooper3@citrix.com>)
 id 69e66660-c1f2-0a2a45010019-d155802de4ea-3
 for <xen-devel@lists.xenproject.org>; Mon, 20 Apr 2026 19:46:08 +0200
Received: by mail-wm1-f45.google.com with SMTP id
 5b1f17b1804b1-488ad135063so26926565e9.0
 for <xen-devel@lists.xenproject.org>; Mon, 20 Apr 2026 10:46:08 -0700 (PDT)
Received: from localhost.localdomain (host-78-146-242-105.as13285.net.
 [78.146.242.105]) by smtp.gmail.com with ESMTPSA id
 5b1f17b1804b1-488fb7a0c13sm96463505e9.21.2026.04.20.10.46.06
 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
 Mon, 20 Apr 2026 10:46:07 -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=google header.d=citrix.com header.i="@citrix.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=citrix.com; s=google; t=1776707168; x=1777311968; 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;
        bh=nQ1dtS+UVA2Zj6+lVhX2vjjkpgXkpEEgSIyaxC0p6Kw=;
        b=nn0C7kY6Z+YdJS3Zo7Z1bmD/LMbrbmEdSjQK6jYSHTih26fbtrt/hSlvComNGKjRHC
         ++nz2fkge93vpdrn5ZzZOFiUEPoZZlZCfpdQ3NgdUkx/pODAhazAoXQ2wKMHcFU3AW7T
         pzVQ8fHmQGJE2Z/EdyH3U9Ho7wmMWil5Su5Q4=
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20251104; t=1776707168; x=1777311968;
        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;
        bh=nQ1dtS+UVA2Zj6+lVhX2vjjkpgXkpEEgSIyaxC0p6Kw=;
        b=S+DieXm7aC19VK5KQxBzpNkeblyOKYIP2gwDCsF/r61DmjCZgA4R5n2TFLOkS7a7KE
         MR4i6wJDNhDRfbl/gb1Ne6sZZSJjXBhi8RPzLpIhBUrE8I185VoONty/Dl9caSVjajC6
         jE8dx4IOg/bwi4ipJjL2RsfTiOLdmyJldupCLCt0hWXNn6rER1JIKa5LGQ7zKtIBXB75
         1xXIYyWIFh2SuDsfb/35SDZomcNwTpL7B1ddWxwMY9VHkFsXPWOhe0FF2xhKv4KSknQP
         XAOGKRuf+rIqrJIbTK0TMIX56DAFSM1HwAnVe5y9DQOQo0QhKbXYFb32MenN0t4RrWN/
         aD1A==
X-Gm-Message-State: AOJu0YwxZq9VnRbYZAlpYAOmetI2zoYMjOsKIMQWsjn1iqbW0C4fnQbp
	q7T5bLJktPHdT+Pwfg51jNRVbGRdJNFQ/6W2HuLZ3qZmgPq2HwT2WnmMCsVXFIUHBGCtEuxVSc2
	c2b18pL4Z9g==
X-Gm-Gg: AeBDiesoSx6CWUcGE++IpQOz9M2G75uTumbIx85FFOi8EBnN2bpj60gwx+zt5ZayThB
	fQn1DXeJ0p8bAdNUoVMNAkvdOG7JZxmpfcJyXXkB1H+28EnnqAMT+vQUmtHeu0W/hKhMthNYUzZ
	YvaqpIL5QiNwoOvcgtTi0+3XsnhUN6a8yfN7kUxFZY/bECiME7VOR/0vXt7yCr1SnZvH8l6m1Ya
	PKyROhGzk46pJQnfHcCrBeI1VrgXnBkX/6Va2i6qH1MId76ycZn8DHmOK631C+YbcuNSSlFCjVA
	HdYbZDRn3A6zZVGjSrezpRhqAKb3X1uUmDxsfDram2BMGLIlTBFG68IOj/UdJtUhZAiLQPApJtI
	yHaFPPWtSgBIGV2aSDBjxqqM69yrs4veUdsg0A9U208n9KOnNee1n6JQcLTSGv5tmbYHk8wGrhC
	ubH1W2bFKLF1A2IsK4yEXFHN41DXGvFdBZI0O6dyhBcqmwsOVKWbenAQgTtvaEG34kaL4AqvA6l
	sKxIS/MRAon1jpwSwqekCaJHA==
X-Received: by 2002:a05:600c:8909:b0:489:1b10:d896 with SMTP id 5b1f17b1804b1-4891b10dd45mr72830655e9.0.1776707167691;
        Mon, 20 Apr 2026 10:46:07 -0700 (PDT)
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.pau@citrix.com>,
	Teddy Astie <teddy.astie@vates.tech>
Subject: [PATCH Xen 4.20] x86/apic: Fix asm() constraints in TMICT calculation
Date: Mon, 20 Apr 2026 18:46:05 +0100
Message-Id: <20260420174605.706329-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/1776707168-B6862FF4-1804EAD3/0/0
X-purgate-type: clean
X-purgate-size: 1925

The encoded MUL is 64 bits, so writes %rdx too.  At a minimum, this needs
expressing as a clobber.

Also fix a logical disconnect between 'overflow' being the carry flag not the
overflow flag.  CF and OF are always the same for MUL instructions, so use the
flag which matches the variable name.

Fixes: d5c70a51bfbe ("x86/APIC: handle overflow in TMICT calculation")
Signed-off-by: Andrew Cooper <andrew.cooper3@citrix.com>
---
CC: Jan Beulich <jbeulich@suse.com>
CC: Roger Pau Monné <roger.pau@citrix.com>
CC: Teddy Astie <teddy.astie@vates.tech>

Only affects 4.20 (and earlier) where __builtin_umull_overflow() can't be
used.

I've kept this form because it produces best code generation for GCCs which
support flag outputs.

An alternative would be to capture product_hi and check the nonzero-ness, as
that's how OF/CF are produced in hardware, which would be better code
generation on very old GCCs.
---
 xen/arch/x86/apic.c | 7 ++++---
 1 file changed, 4 insertions(+), 3 deletions(-)

diff --git a/xen/arch/x86/apic.c b/xen/arch/x86/apic.c
index daf597ed44b7..764ee1e98f77 100644
--- a/xen/arch/x86/apic.c
+++ b/xen/arch/x86/apic.c
@@ -1317,9 +1317,10 @@ int reprogram_timer(s_time_t timeout)
 
         apic_tmict = UINT32_MAX;
         asm ( "mul %[expire]\n\t"
-              ASM_FLAG_OUT(, "setc %[cf]")
-              : "=a" (product), [cf] ASM_FLAG_OUT("=@ccc", "=qm") (overflow)
-              : "0" ((unsigned long)bus_scale), [expire] "r" (expire) );
+              ASM_FLAG_OUT(, "seto %[of]")
+              : "=a" (product), [of] ASM_FLAG_OUT("=@cco", "=qm") (overflow)
+              : "0" ((unsigned long)bus_scale), [expire] "r" (expire)
+              : "rdx" );
         if ( !overflow &&
              (product >>= BUS_SCALE_SHIFT) < apic_tmict )
             apic_tmict = product;

base-commit: 5f7054258c6937b74aee411f16db5eb54ce9fda1
-- 
2.39.5



From xen-devel-bounces@lists.xenproject.org Mon Apr 20 17:59:02 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 20 Apr 2026 17:59:02 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1286406.1567471 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wEstc-0006T8-P9; Mon, 20 Apr 2026 17:58:56 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1286406.1567471; Mon, 20 Apr 2026 17:58: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 1wEstc-0006T1-MJ; Mon, 20 Apr 2026 17:58:56 +0000
Received: by outflank-mailman (input) for mailman id 1286406;
 Mon, 20 Apr 2026 17:58:54 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <Christian.Koenig@amd.com>) id 1wEsta-0006St-N6
 for xen-devel@lists.xenproject.org; Mon, 20 Apr 2026 17:58:54 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wEstY-00929j-Eo
 for xen-devel@lists.xenproject.org; Mon, 20 Apr 2026 19:58:54 +0200
Received: from [10.42.69.4] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <Christian.Koenig@amd.com>)
 id 69e66952-bab6-0a2a0a5309dd-0a2a45048bfc-4
 for <xen-devel@lists.xenproject.org>; Mon, 20 Apr 2026 19:58:53 +0200
Received: from [52.101.193.71]
 (helo=CH1PR05CU001.outbound.protection.outlook.com)
 by tlsNG-ebf023.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.1)
 (envelope-from <Christian.Koenig@amd.com>)
 id 69e6695b-1dec-0a2a45040019-3465c1477a79-3
 for <xen-devel@lists.xenproject.org>; Mon, 20 Apr 2026 19:58:53 +0200
Received: from SJ0PR12MB5673.namprd12.prod.outlook.com (2603:10b6:a03:42b::13)
 by SJ1PR12MB6314.namprd12.prod.outlook.com (2603:10b6:a03:457::9)
 with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9846.15; Mon, 20 Apr
 2026 17:58:46 +0000
Received: from SJ0PR12MB5673.namprd12.prod.outlook.com
 ([fe80::c3e5:48f8:beb6:ea68]) by SJ0PR12MB5673.namprd12.prod.outlook.com
 ([fe80::c3e5:48f8:beb6:ea68%5]) with mapi id 15.20.9846.014; Mon, 20 Apr 2026
 17:58: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=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=edQAgWRZbROMMROzRfF3x/nT/ta4xrLcZJ1D2CeJZ/1LP8Fmtiv6ROEiPH1BpSzdeyZXe1lKvrx8Pp6ScFAdNRNQcceLn/8+drV5zbkAGmZ3+Ho251/fEaA0XDX+DaGpgu1LlYwl79EUyZz8/84cwiVUvuQRzIybvlnwcwSNaQAprllu4AZnEQ4g8GoeD2XNV1yAwOTOaGthlKQIydKIdyhhlUDPJAMBkU8xOpGndTf1/pCec609w+sKwNk4auGZMw21sUs58duRT808e62vdBQrRCtEzv8c8TsRqiHBvRX1LaG/VXZhShxmTh8wfpwVyiA8dbB+zO5/cG14o6Ptrw==
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com;
 s=arcselector10001;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1;
 bh=ABIJ7tmj+LPKbyCca4GcZ4wgsHCa5XzmVwLgBnt1wHM=;
 b=jdd81WtBI9t8UzCfBcznmLGX015dSPCE/I4cvY2tcIHVJ+7X1je2P/+KTpd8zeqT8jHGvE1dopCnNT02Bo27LnB46lfVzld2fzYvmgxNbXNLhrekegTtcfsfzkri2x5v6fV930GGu78j54Pd7EvpYqXBF4Cnab5hshopm2bmYlaGigUX4gJ6MKFHT371GYJzW1FU6/sO/Xrd+qJVo+PabCBbjjfKQ6nHVTMZUyKQGfepqLh1U7LYvh6hRjlAqBes/P2hO+HOvEy8IKkD+7GWnN3zh0PuclkGeQsEVyXkMxz52B2tcTb2h4be5KdY9Im/Ut7rgcvG37Gx4oDopViQAA==
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=ABIJ7tmj+LPKbyCca4GcZ4wgsHCa5XzmVwLgBnt1wHM=;
 b=u3Ks1zM1Qp5vskOjspqZ8pfHInkNDNCMqMbi9OqgZ+E+tpE4xaWIIQx6u5pswNtCfScEzsGpADlJN+LoE0TnFYVXoj3yoQwdg1B5G65A8vCryfgiWySYdiYOaLDSKD5n0R8sy0F0AawjU4+9tvPwnk0wPHopNQzXBMWPeeP2ONk=
Authentication-Results: dkim=none (message not signed)
 header.d=none;dmarc=none action=none header.from=amd.com;
Message-ID: <964c3670-fad3-44ce-bd93-2057bca2dcb8@amd.com>
Date: Mon, 20 Apr 2026 19:58:40 +0200
User-Agent: Mozilla Thunderbird
Subject: Re: Pinned, non-revocable mappings of VRAM: will bad things happen?
To: Demi Marie Obenour <demiobenour@gmail.com>,
 dri-devel@lists.freedesktop.org,
 Xen developer discussion <xen-devel@lists.xenproject.org>,
 linux-media@vger.kernel.org
Cc: Val Packett <val@invisiblethingslab.com>,
 Suwit Semal <sumit.semwal@linaro.org>
References: <a06133f7-3093-4733-9786-bc46c1453e06@gmail.com>
 <b8d04414-18b5-40f7-9ea2-88b30ff5bea0@amd.com>
 <c7865b27-6bf1-4df1-9520-c9ef6b3ef368@gmail.com>
 <4751cf03-d3c1-4d5d-af8e-39ad7c8ffb84@amd.com>
 <7472bfcf-8c22-4ac7-b903-a883cdb8f1c6@gmail.com>
 <8fe8b78b-5294-4319-af92-a4fb00527417@amd.com>
 <8846bac5-77ff-4439-ac5c-c33cdb4a94e3@gmail.com>
Content-Language: en-US
From: =?UTF-8?Q?Christian_K=C3=B6nig?= <christian.koenig@amd.com>
In-Reply-To: <8846bac5-77ff-4439-ac5c-c33cdb4a94e3@gmail.com>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
X-ClientProxiedBy: BLAPR03CA0088.namprd03.prod.outlook.com
 (2603:10b6:208:329::33) To SJ0PR12MB5673.namprd12.prod.outlook.com
 (2603:10b6:a03:42b::13)
MIME-Version: 1.0
X-MS-PublicTrafficType: Email
X-MS-TrafficTypeDiagnostic: SJ0PR12MB5673:EE_|SJ1PR12MB6314:EE_
X-MS-Office365-Filtering-Correlation-Id: 576e2a51-f05b-4551-1f50-08de9f067803
X-MS-Exchange-SenderADCheck: 1
X-MS-Exchange-AntiSpam-Relay: 0
X-Microsoft-Antispam:
	BCL:0;ARA:13230040|366016|1800799024|376014|56012099003|22082099003|18002099003;
X-Microsoft-Antispam-Message-Info:
	97tp2xvaYUXGl4+h6PUxugV3ssQM/LnbnFywL6LWGTxm8mdZYrrcBos+Kvu99LvQgDHfmZThXe5YLkVGE3kmeqSkH4vFnCrEbd6OU6z+PXJo+o24sD0Hdyelh5de8kcxQCmRmfmgsofmnUDcjQwBgCjskvDsebZRswCj3v2lPhiNYwQKct4FIYTdD4YeNH34Tom9td4AI/6SGD0DIIgM6ABnATvuL1U14PXYUrpC7IR6ghK/zSnzXS6nTk0I07GRkXRjgD4Z2+zs1VPJdl5sqL8zlnHFSELBnNZxkQ+dPYi3/HCET5we9Z3M0fTuCRIEZA0iHtEfPOlCxKmvLiz46VUN8dUJ0ImGQCFj9GdpbxjKeTnwBzxaWOoSitp/nI+89CCDn6TqcUfksVUhc5dFpGNjC8MJuGU0InStrPKJeXV92ePLpNtgxbzbR5jcdiWvZZ8vmFkFwLtPDHp/uJZBptwRCiARaXOVlvg2qP9rT3AUsnIn6YJA/jmFI1RoEYSfyQ4t4hgf6YA6YetPSJYexjSh8FGbEXuiG76RYMkvO2Wogcaubow8yR7j26eVe70PybR9inkmQhLT9Sslxv+N1+mXgLtEGe3+DcvOMaPT8XDFpYrK02t1LAWlyOoV4KykIqs3WXo7+1Iv4jSRribQNW3gLXPC+EPnrcHEqsJpmiOJzsr5UeMSAN6kmGP1sojnV97HthyZuVFrQRwOLXpXJixOq/aW/Y44lU21hsWGXrs=
X-Forefront-Antispam-Report:
	CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:SJ0PR12MB5673.namprd12.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(366016)(1800799024)(376014)(56012099003)(22082099003)(18002099003);DIR:OUT;SFP:1101;
X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1
X-MS-Exchange-AntiSpam-MessageData-0:
	=?utf-8?B?ajUyQ1lmQWdZdDdwbWxGVTByWk9FT0RacFUvOHFzRGhFZzdhUnpwMCs0MjY1?=
 =?utf-8?B?MGwxMndIckxleDl5NmxYRWZWSllZclBlTktVdHpKMXFEK2dEVFRMR3RlVHYz?=
 =?utf-8?B?cDc0WjZycWZuVnBEQkFScFNGajROVGNlTFYra3J6eXJpN3RPN3hIVkZnYWxr?=
 =?utf-8?B?VWFUMlcxcm1zeHlJVk90TlJTUDV0Y3ovZExxK28zV2hjV2xXcTNVWG04K3pD?=
 =?utf-8?B?M2RueWk5dm0vbmFIQkZ1c1ZiOUpGcmVNUVBicnR5dWhubHBZbDQrTmpzaFB2?=
 =?utf-8?B?ZnhTRHVXazJoYnBQd0prMDdyMTFIUmdyc0xQa3JaZTg0Tit1Y043SmNRQUFS?=
 =?utf-8?B?aEFrSy9tZ1c5WlNQZDFVVHZodjNTVnhZcHJUOWdjOUF3NWxsMDNpaklHKzR4?=
 =?utf-8?B?aWJqejdWTlgwaUZWaFdzMlp5bVRLM1ZhVi9rQUhjUmlBTGJpQ3poZm5PcWtI?=
 =?utf-8?B?LzdOc3B4bExwa1ZtSm5NSTQ2NHh5VHBVbm5uSm5IdjRBOTgvb09EdmpNOWdU?=
 =?utf-8?B?RHQvWkR2MVNBTStqVUJrQytHTkluTUxoVVlVZW5sRm9TZm84SG5MOU9jdDFJ?=
 =?utf-8?B?bElTUVpkTUF5dFovekZZaTZkc25raDhja0s5dTk1dmNNTlU3QWxLUUpxV1BF?=
 =?utf-8?B?eUgveTBGVGluZWNLWHlNRk1LYkpvN1owQ2s0Y0Q5YTkyZGZLd0xPNGlqbXJN?=
 =?utf-8?B?U05wcVhDOUIxOG5ycXY4Z1l1bnRCSmdySXhxKzh5YmNheEcyUmZTNUs0MW1K?=
 =?utf-8?B?akE2VU1RQWdKZG9QeDhyd0Z2RUYvL2orbTVLbVhNNWJuaGZrMU50RDRIMTBi?=
 =?utf-8?B?d0FWdFpOM3orNnZKOEQwb0t2WFpBUlRZUC9nK1lTODBjNGlVd3VVdXpjRXZL?=
 =?utf-8?B?aHl3Y3g1SklEdk1WRVpUbXEzekxLV1h4d054aEhKVzRVZG1QZDRPbGFZeHA2?=
 =?utf-8?B?cmdNVm81bXJER2cwN3pkczdPSjJ1L21DSnBuVWJNNkxuNTQyMDBvS1owTkJY?=
 =?utf-8?B?c0RGODhEWWpVbk9HcXdQaU1LMDRyVVVlN1hVbWRtNzZESHFVNWJnSXdRZity?=
 =?utf-8?B?YkswSlg5SnpqdWNqVG1NRm5YV1ZnYnNJM1E3UnFhZURsTHRid3psQmJuM1hV?=
 =?utf-8?B?aHhMWTdoSitYVTVYSksyTG95SGcxVTZaYis5bmxLcHJPNFliK3M2aW1MZmw4?=
 =?utf-8?B?TGIyY2gwY2dXQXVuSTZLMUFBY2IvM1JaMnl6eVFDRlRoVlhIdHQvTU9BQ1JL?=
 =?utf-8?B?a0VpY1QrcXlMaVpmdVlaOGlNRGppeXBYVXFjQkFCU3FEQkNOaW1PVzFKQkMv?=
 =?utf-8?B?QXdmUTlpSEJSblYwNHJhbEZQWlVVVlBvK3hzWXFNelByMVY2T2kyblJHQjRx?=
 =?utf-8?B?N0VwRW5HT0NIdFZQdllySUwyZkIvRGd6M05jdUlSMGE2ZXJFYjZadWs3L2pZ?=
 =?utf-8?B?Z1ZUNWs4d3FRN1hGZFFNQTVYSkJhQkMweGhncHphMDJxbzZBam5yRDN6OW9Q?=
 =?utf-8?B?MUxVM2lzeXFDRTRzS2JwYm9PZkhLVmFWMlJuaG43STZSY0R3ejVtb1dQTnZB?=
 =?utf-8?B?cWM2dmkyM1FEU3p6NlJxL0xVckdJMWFweHR0RHhzOFRKMFdFSStITkRDZVQ0?=
 =?utf-8?B?WFhUYzhONHkyMU5vVytUb2RRd0h0cXRjOGR3ak1aSU5jTnkwaWhIYllKalZN?=
 =?utf-8?B?VzRNckhRVUZCZlN1RjUrYlQ4dUlnZnFmQ2kwSXRSQVY1Z0lJUm5PRUI3WUEr?=
 =?utf-8?B?VFRyaGkxMGRCWkhGK0pLbWFoUWtuNVJtb2ZDZXZwNEVsWGdlNjZ6eUJmZEts?=
 =?utf-8?B?UWw3Y0YzSFZrWmViZytaRENQVmxVZXkvYzNETS9ZZVFWTXlMNW1wTDVXTytM?=
 =?utf-8?B?S2o5UkM4S0N4Q2plL090aHVuTDdubFN6REY5TWdyby9oY052UUdNMmdVN1B2?=
 =?utf-8?B?enpJWmxOcHRDdzdCWnlVdzlmTTkwZHR2Q1dVWmdtM3hEYTNFeVBPR1hFS1p4?=
 =?utf-8?B?UmwvODNjUDExYW5vMVpzcXRsQVRLSnRmZllLUEJleDlJTjYyTmFhbVpvTFk5?=
 =?utf-8?B?dFZGQ3NuN3c1N3FkUHhMcWR6ek8vQjJMQkRKMDViYWVySk94WW1sSlIvZjYz?=
 =?utf-8?B?b0hWRVpHeFlwc2hlUm12ZEk3MG1sNGlhUUdvZGdnenBFck4zZlphd3kwSWdw?=
 =?utf-8?B?aEVEU1ZTbmV0bTB1RXZSZ2VEWEhQSFd1VVdJN0RSUFhOUFRhcDdSN2RPSEI3?=
 =?utf-8?B?VC9SYkV4cnRFYklnSlVzdjFVRDJyK2FSMGptSkViNzdoQUFDbG9mUTg4LzE5?=
 =?utf-8?Q?yLs+QZgbvLbNY4MVyc?=
X-OriginatorOrg: amd.com
X-MS-Exchange-CrossTenant-Network-Message-Id: 576e2a51-f05b-4551-1f50-08de9f067803
X-MS-Exchange-CrossTenant-AuthSource: SJ0PR12MB5673.namprd12.prod.outlook.com
X-MS-Exchange-CrossTenant-AuthAs: Internal
X-MS-Exchange-CrossTenant-OriginalArrivalTime: 20 Apr 2026 17:58:46.6981
 (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: Qg576XjRLwFScbq0nT3V1CzFQKOLkLJSdyKw7nNBOfjivsqkUJwbMhvAnXUHZHsR
X-MS-Exchange-Transport-CrossTenantHeadersStamped: SJ1PR12MB6314
X-purgate-ID: tlsNG-ebf023/1776707933-2B7693FF-FD4F1067/0/0
X-purgate-type: clean
X-purgate-size: 4438

On 4/20/26 19:03, Demi Marie Obenour wrote:
> On 4/20/26 04:49, Christian König wrote:
>> On 4/17/26 21:35, Demi Marie Obenour wrote:
...
>>> Are any of the following reasonable options?
>>>
>>> 1. Change the guest kernel to only map (and thus pin) a small subset
>>>    of VRAM at any given time.  If unmapped VRAM is accessed the guest
>>>    traps the page fault, evicts an old VRAM mapping, and creates a
>>>    new one.
>>
>> Yeah, that could potentially work.
>>
>> This is basically what we do on the host kernel driver when we can't resize the BAR for some reason. In that use case VRAM buffers are shuffled in and out of the CPU accessible window of VRAM on demand.
> 
> How much is this going to hurt performance?

Hard to say, resizing the BAR can easily give you 10-15% more performance on some use cases.

But that involves physically transferring the data using a DMA. For this solution we basically only have to we basically only have to transfer a few messages between host and guest.

No idea how performant that is.

>>> 2. Pretend that resizable BAR is not enabled, so the guest doesn't
>>>    think it can map much of VRAM at once.  If resizable BAR is enabled
>>>    on the host, it might be possible to split the large BAR mapping
>>>    in a lot of ways.
>>
>> That won't work. The userspace parts of the driver stack don't care how large the BAR to access VRAM with the CPU is.
>>
>> The expectation is that the kernel driver makes thing CPU accessible as needed in the page fault handler.
>>
>> It is still a good idea for your solution #1 to give the amount of "pin-able" VRAM to the userspace stack as CPU visible VRAM limit so that test cases and applications try to lower their usage of VRAM, e.g. use system memory bounce buffers when possible.
> 
> That makes sense.
> 
>>> Or does Xen really need to allow the host to handle guest page faults?
>>> That adds a huge amount of complexity to trusted and security-critical
>>> parts of the system, so it really is a last resort.  Putting the
>>> complexity in to the guest virtio-GPU driver is vastly preferable if
>>> it can be made to work well.
>>
>> Well the nested page fault handling KVM offers has proven to be extremely useful. So when XEN can't do this it is clearly lacking an important feature.
> 
> I agree. However, it is a lot of work to implement, which is why I'm
> looking for alternatives if possible.
> 
> KVM is part of the Linux kernel, so it can just call the Linux kernel
> functions used to handle userspace page faults.  Xen is separate from
> Linux, so it can't do that.  Instead, it will need to:
> 
> 1. Determine that the fault needs to be handled by another VM, and
>    the ID of the VM that needs to handle the fault.
> 2. Send a message to the VM asking it to handle the fault.
> 3. Block the vCPU until it gets a response.
> 
> Then the VM owning the memory will need to call the page fault handler
> and provide the memory to Xen.  Xen then needs to:
> 
> 4. Map the memory into the nested page tables of the VM that faulted.
> 5. Resume the vCPU.
> 
>> But I have one question: When XEN has a problem handling faults from the guest on the host then how does that work for system memory mappings?
>>
>> There is really no difference between VRAM and system memory in the handling for the GPU driver stack.
>>
>> Regards,
>> Christian.
> 
> Generally, Xen makes the frontend (usually an unprivileged VM)
> responsible for providing mappings to the backend (usually the host).
> That is possible with system RAM but not with VRAM, because Xen has
> no awareness of VRAM.  To Xen, VRAM is just a PCI BAR.

No, that doesn't work with system memory allocations of GPU drivers either.

We already had it multiple times that people tried to be clever and incremented the page reference counter on driver allocated system memory and were totally surprised that this can result in security issues and data corruption.

I seriously hope that this isn't the case here again. As far as I know XEN already has support for accessing VMAs with VM_PFN or otherwise I don't know how driver allocated system memory access could potentially work.

Accessing VRAM is pretty much the same use case as far as I can see.

Regards,
Christian.


> KVM runs in the same kernel as the GPU driver.  Xen doesn't, and that
> is the source of the extra complexity.



From xen-devel-bounces@lists.xenproject.org Mon Apr 20 18:46:41 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 20 Apr 2026 18:46:41 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1286419.1567481 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wEtdZ-0004X6-4i; Mon, 20 Apr 2026 18:46:25 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1286419.1567481; Mon, 20 Apr 2026 18:46: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 1wEtdZ-0004Wz-1f; Mon, 20 Apr 2026 18:46:25 +0000
Received: by outflank-mailman (input) for mailman id 1286419;
 Mon, 20 Apr 2026 18:46:23 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <demiobenour@gmail.com>) id 1wEtdX-0004Wt-BD
 for xen-devel@lists.xenproject.org; Mon, 20 Apr 2026 18:46:23 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wEtdU-0097cw-Vs
 for xen-devel@lists.xenproject.org; Mon, 20 Apr 2026 20:46:22 +0200
Received: from [10.42.69.9] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <demiobenour@gmail.com>)
 id 69e6745c-5cb7-0a2a0a5109dd-0a2a4509a332-46
 for <xen-devel@lists.xenproject.org>; Mon, 20 Apr 2026 20:46:22 +0200
Received: from [209.85.128.174] (helo=mail-yw1-f174.google.com)
 by tlsNG-bad1c0.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.1)
 (envelope-from <demiobenour@gmail.com>)
 id 69e6747d-2497-0a2a45090019-d15580aee1ef-3
 for <xen-devel@lists.xenproject.org>; Mon, 20 Apr 2026 20:46:22 +0200
Received: by mail-yw1-f174.google.com with SMTP id
 00721157ae682-79ab3e26cceso29155097b3.3
 for <xen-devel@lists.xenproject.org>; Mon, 20 Apr 2026 11:46:21 -0700 (PDT)
Received: from [10.138.34.110]
 (h69-131-150-190.cncrtn.broadband.dynamic.tds.net. [69.131.150.190])
 by smtp.gmail.com with ESMTPSA id
 00721157ae682-7b9ee99b672sm48367907b3.29.2026.04.20.11.46.19
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Mon, 20 Apr 2026 11:46:19 -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=20251104 header.d=gmail.com header.i="@gmail.com" header.h="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=gmail.com; s=20251104; t=1776710781; x=1777315581; darn=lists.xenproject.org;
        h=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;
        bh=yrHLHm9lgxlkhHpe/U0CHmnYQFGpnB/pegfui8m1bwU=;
        b=mIcJBow/v2vFj9uFm8Nc+E7y5L20NDsu3d1LKflyqqk0giptNrBuW7DMS3Tflij/UJ
         NOql20+Xq+/gTw1hEkV5EiWCmgoAdpxpe340DaoHJrJ0JZTosHUoi5IFuzMV9JSo00MB
         pXPExYhe2TkqgjCvZLzhy5ZyVyJZbYE7YC9TfVAO+Et5UvIreASw1wQ6bCNAH7eabdp3
         K1v7dJGj9ERQvkf+nTB+q6qIWsumdYWiCXgx5//Kx8gjQRADR7PtMbTFFI3hNt8axjYZ
         So4a1kfHKywqNHsaaulMcN02phbqK5AGpHyZhU7UE2KQwgMZkIZC69QhiRy3c9uLsfIU
         EN8A==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20251104; t=1776710781; x=1777315581;
        h=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;
        bh=yrHLHm9lgxlkhHpe/U0CHmnYQFGpnB/pegfui8m1bwU=;
        b=XKiZSplM8qIhJiZFLnBEKoucnfNTQjbg/rdJ+u2cnVCTRkRzyzrmRGVHgYG3onEb73
         yBLAxRW5kGEKTsadNvYOUYKupExGkGDjBa9ojlofAXaJMcZNGgCeqlbTzaaEP1TzosoU
         UzsRe1gLuZT84PshVB744+rfKjqq+V3zkFbg79TESghbWfeaLi6DUFk8JSB9qIta4kh1
         A5yTm2wd+DQ0+B8cZEH0/ksM2da0g/FoSHgsanD/Ex9Mkkg4TP+SuBXjR18NvIMbGpZE
         BpHuOYo+GS5iiWj/cux6rYDXLTm6GCWCIroV1wxOKGG3BLJvb2AW4RpXk/2XeDbCkgXN
         f2jA==
X-Forwarded-Encrypted: i=1; AFNElJ8hy8Di2F9dc1RnctHFR5dOrK+1jHU5zwzDveg7kPQd5/v3RW6/7RoV+1SlWBNT5Cr/6ijnjSs31ew=@lists.xenproject.org
X-Gm-Message-State: AOJu0YzIR9nVlJoK+U7+jfFp7oc5zbMlmDSO1wOTe5sCQggtkjTnVkup
	BPWQhcVTLqlO7eru3w6AjsSRBKJdzmcIJgVA4/3YAadZCzUbpJPyewAxSx3lJw==
X-Gm-Gg: AeBDieu4E9JM0rUpBSRgj8/xYqB3sSY+KrNkx0x15moP3O306scodrJGAMhaBuuaWdf
	XX6v/HtrEk12qR/xNVsnVRBwemN7873xeD2wnMAdKzOF5hU4wqyCcNck7sVK1vIz/YXu0q7FsBk
	Aki5YfbK2HDMt6FnHskZRbfoESUqoSnqETXSSW2SRAGG75ADl/xdC0Z6XAmiOpF0KtP5DgWDyJm
	RmLOyLrG7X3MLr296Ch9l7KqcKZn5lvl8YpnzeWuJ0r7wKZG3I4OcnuOVRvJTWwoAJegke7G+Hb
	LDKQRNP9WzUUCMKogWyQDUR/KiroZHvU9DuoR6mybMtsdGIWaQxD7im6kOQ32e4GqoU+lz3Nan6
	MFYRhL/FdO/4GONUavc0we9T9dlsYOOjBFS5oWX4ZbXx00NXhALPJlcJqkGp8nOvbGjF/7cxA6x
	QLTfSOhXYA5QLD1H5mKgVfraYtDWZu2EQQbOfqB3RbCVGEC0VmRNltSr6aEwDwlDLJ2dPddKu/S
	4l2K32ID0jxnJBXi7pm9JfD7YDCojEEo6pD9Xnx7hfGFK2lGySe
X-Received: by 2002:a05:690c:3511:b0:7b2:6177:2acc with SMTP id 00721157ae682-7b9ed0202a7mr146971387b3.46.1776710780388;
        Mon, 20 Apr 2026 11:46:20 -0700 (PDT)
Message-ID: <08ad2301-3163-4497-8869-fa4cea30b384@gmail.com>
Date: Mon, 20 Apr 2026 14:46:15 -0400
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: Pinned, non-revocable mappings of VRAM: will bad things happen?
To: =?UTF-8?Q?Christian_K=C3=B6nig?= <christian.koenig@amd.com>,
 dri-devel@lists.freedesktop.org,
 Xen developer discussion <xen-devel@lists.xenproject.org>,
 linux-media@vger.kernel.org
Cc: Val Packett <val@invisiblethingslab.com>,
 Suwit Semal <sumit.semwal@linaro.org>
References: <a06133f7-3093-4733-9786-bc46c1453e06@gmail.com>
 <b8d04414-18b5-40f7-9ea2-88b30ff5bea0@amd.com>
 <c7865b27-6bf1-4df1-9520-c9ef6b3ef368@gmail.com>
 <4751cf03-d3c1-4d5d-af8e-39ad7c8ffb84@amd.com>
 <7472bfcf-8c22-4ac7-b903-a883cdb8f1c6@gmail.com>
 <8fe8b78b-5294-4319-af92-a4fb00527417@amd.com>
 <8846bac5-77ff-4439-ac5c-c33cdb4a94e3@gmail.com>
 <964c3670-fad3-44ce-bd93-2057bca2dcb8@amd.com>
Content-Language: en-US
From: Demi Marie Obenour <demiobenour@gmail.com>
Autocrypt: addr=demiobenour@gmail.com; keydata=
 xsFNBFp+A0oBEADffj6anl9/BHhUSxGTICeVl2tob7hPDdhHNgPR4C8xlYt5q49yB+l2nipd
 aq+4Gk6FZfqC825TKl7eRpUjMriwle4r3R0ydSIGcy4M6eb0IcxmuPYfbWpr/si88QKgyGSV
 Z7GeNW1UnzTdhYHuFlk8dBSmB1fzhEYEk0RcJqg4AKoq6/3/UorR+FaSuVwT7rqzGrTlscnT
 DlPWgRzrQ3jssesI7sZLm82E3pJSgaUoCdCOlL7MMPCJwI8JpPlBedRpe9tfVyfu3euTPLPx
 wcV3L/cfWPGSL4PofBtB8NUU6QwYiQ9Hzx4xOyn67zW73/G0Q2vPPRst8LBDqlxLjbtx/WLR
 6h3nBc3eyuZ+q62HS1pJ5EvUT1vjyJ1ySrqtUXWQ4XlZyoEFUfpJxJoN0A9HCxmHGVckzTRl
 5FMWo8TCniHynNXsBtDQbabt7aNEOaAJdE7to0AH3T/Bvwzcp0ZJtBk0EM6YeMLtotUut7h2
 Bkg1b//r6bTBswMBXVJ5H44Qf0+eKeUg7whSC9qpYOzzrm7+0r9F5u3qF8ZTx55TJc2g656C
 9a1P1MYVysLvkLvS4H+crmxA/i08Tc1h+x9RRvqba4lSzZ6/Tmt60DPM5Sc4R0nSm9BBff0N
 m0bSNRS8InXdO1Aq3362QKX2NOwcL5YaStwODNyZUqF7izjK4QARAQABzTxEZW1pIE1hcmll
 IE9iZW5vdXIgKGxvdmVyIG9mIGNvZGluZykgPGRlbWlvYmVub3VyQGdtYWlsLmNvbT7CwXgE
 EwECACIFAlp+A0oCGwMGCwkIBwMCBhUIAgkKCwQWAgMBAh4BAheAAAoJELKItV//nCLBhr8Q
 AK/xrb4wyi71xII2hkFBpT59ObLN+32FQT7R3lbZRjVFjc6yMUjOb1H/hJVxx+yo5gsSj5LS
 9AwggioUSrcUKldfA/PKKai2mzTlUDxTcF3vKx6iMXKA6AqwAw4B57ZEJoMM6egm57TV19kz
 PMc879NV2nc6+elaKl+/kbVeD3qvBuEwsTe2Do3HAAdrfUG/j9erwIk6gha/Hp9yZlCnPTX+
 VK+xifQqt8RtMqS5R/S8z0msJMI/ajNU03kFjOpqrYziv6OZLJ5cuKb3bZU5aoaRQRDzkFIR
 6aqtFLTohTo20QywXwRa39uFaOT/0YMpNyel0kdOszFOykTEGI2u+kja35g9TkH90kkBTG+a
 EWttIht0Hy6YFmwjcAxisSakBuHnHuMSOiyRQLu43ej2+mDWgItLZ48Mu0C3IG1seeQDjEYP
 tqvyZ6bGkf2Vj+L6wLoLLIhRZxQOedqArIk/Sb2SzQYuxN44IDRt+3ZcDqsPppoKcxSyd1Ny
 2tpvjYJXlfKmOYLhTWs8nwlAlSHX/c/jz/ywwf7eSvGknToo1Y0VpRtoxMaKW1nvH0OeCSVJ
 itfRP7YbiRVc2aNqWPCSgtqHAuVraBRbAFLKh9d2rKFB3BmynTUpc1BQLJP8+D5oNyb8Ts4x
 Xd3iV/uD8JLGJfYZIR7oGWFLP4uZ3tkneDfYzsFNBFp+A0oBEAC9ynZI9LU+uJkMeEJeJyQ/
 8VFkCJQPQZEsIGzOTlPnwvVna0AS86n2Z+rK7R/usYs5iJCZ55/JISWd8xD57ue0eB47bcJv
 VqGlObI2DEG8TwaW0O0duRhDgzMEL4t1KdRAepIESBEA/iPpI4gfUbVEIEQuqdqQyO4GAe+M
 kD0Hy5JH/0qgFmbaSegNTdQg5iqYjRZ3ttiswalql1/iSyv1WYeC1OAs+2BLOAT2NEggSiVO
 txEfgewsQtCWi8H1SoirakIfo45Hz0tk/Ad9ZWh2PvOGt97Ka85o4TLJxgJJqGEnqcFUZnJJ
 riwoaRIS8N2C8/nEM53jb1sH0gYddMU3QxY7dYNLIUrRKQeNkF30dK7V6JRH7pleRlf+wQcN
 fRAIUrNlatj9TxwivQrKnC9aIFFHEy/0mAgtrQShcMRmMgVlRoOA5B8RTulRLCmkafvwuhs6
 dCxN0GNAORIVVFxjx9Vn7OqYPgwiofZ6SbEl0hgPyWBQvE85klFLZLoj7p+joDY1XNQztmfA
 rnJ9x+YV4igjWImINAZSlmEcYtd+xy3Li/8oeYDAqrsnrOjb+WvGhCykJk4urBog2LNtcyCj
 kTs7F+WeXGUo0NDhbd3Z6AyFfqeF7uJ3D5hlpX2nI9no/ugPrrTVoVZAgrrnNz0iZG2DVx46
 x913pVKHl5mlYQARAQABwsFfBBgBAgAJBQJafgNKAhsMAAoJELKItV//nCLBwNIP/AiIHE8b
 oIqReFQyaMzxq6lE4YZCZNj65B/nkDOvodSiwfwjjVVE2V3iEzxMHbgyTCGA67+Bo/d5aQGj
 gn0TPtsGzelyQHipaUzEyrsceUGWYoKXYyVWKEfyh0cDfnd9diAm3VeNqchtcMpoehETH8fr
 RHnJdBcjf112PzQSdKC6kqU0Q196c4Vp5HDOQfNiDnTf7gZSj0BraHOByy9LEDCLhQiCmr+2
 E0rW4tBtDAn2HkT9uf32ZGqJCn1O+2uVfFhGu6vPE5qkqrbSE8TG+03H8ecU2q50zgHWPdHM
 OBvy3EhzfAh2VmOSTcRK+tSUe/u3wdLRDPwv/DTzGI36Kgky9MsDC5gpIwNbOJP2G/q1wT1o
 Gkw4IXfWv2ufWiXqJ+k7HEi2N1sree7Dy9KBCqb+ca1vFhYPDJfhP75I/VnzHVssZ/rYZ9+5
 1yDoUABoNdJNSGUYl+Yh9Pw9pE3Kt4EFzUlFZWbE4xKL/NPno+z4J9aWemLLszcYz/u3XnbO
 vUSQHSrmfOzX3cV4yfmjM5lewgSstoxGyTx2M8enslgdXhPthZlDnTnOT+C+OTsh8+m5tos8
 HQjaPM01MKBiAqdPgksm1wu2DrrwUi6ChRVTUBcj6+/9IJ81H2P2gJk3Ls3AVIxIffLoY34E
 +MYSfkEjBz0E8CLOcAw7JIwAaeBT
In-Reply-To: <964c3670-fad3-44ce-bd93-2057bca2dcb8@amd.com>
Content-Type: multipart/signed; micalg=pgp-sha256;
 protocol="application/pgp-signature";
 boundary="------------UO7W0PHisfTunOflIlWzKcyO"
X-purgate-ID: tlsNG-bad1c0/1776710782-49AB6A53-59D2A063/0/0
X-purgate-type: clean
X-purgate-size: 19031

This is an OpenPGP/MIME signed message (RFC 4880 and 3156)
--------------UO7W0PHisfTunOflIlWzKcyO
Content-Type: multipart/mixed; boundary="------------J0Ikx2XPeEGPGmR0bq5owBjA";
 protected-headers="v1"
Message-ID: <08ad2301-3163-4497-8869-fa4cea30b384@gmail.com>
Date: Mon, 20 Apr 2026 14:46:15 -0400
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: Pinned, non-revocable mappings of VRAM: will bad things happen?
To: =?UTF-8?Q?Christian_K=C3=B6nig?= <christian.koenig@amd.com>,
 dri-devel@lists.freedesktop.org,
 Xen developer discussion <xen-devel@lists.xenproject.org>,
 linux-media@vger.kernel.org
Cc: Val Packett <val@invisiblethingslab.com>,
 Suwit Semal <sumit.semwal@linaro.org>
References: <a06133f7-3093-4733-9786-bc46c1453e06@gmail.com>
 <b8d04414-18b5-40f7-9ea2-88b30ff5bea0@amd.com>
 <c7865b27-6bf1-4df1-9520-c9ef6b3ef368@gmail.com>
 <4751cf03-d3c1-4d5d-af8e-39ad7c8ffb84@amd.com>
 <7472bfcf-8c22-4ac7-b903-a883cdb8f1c6@gmail.com>
 <8fe8b78b-5294-4319-af92-a4fb00527417@amd.com>
 <8846bac5-77ff-4439-ac5c-c33cdb4a94e3@gmail.com>
 <964c3670-fad3-44ce-bd93-2057bca2dcb8@amd.com>
Content-Language: en-US
From: Demi Marie Obenour <demiobenour@gmail.com>
Autocrypt: addr=demiobenour@gmail.com; keydata=
 xsFNBFp+A0oBEADffj6anl9/BHhUSxGTICeVl2tob7hPDdhHNgPR4C8xlYt5q49yB+l2nipd
 aq+4Gk6FZfqC825TKl7eRpUjMriwle4r3R0ydSIGcy4M6eb0IcxmuPYfbWpr/si88QKgyGSV
 Z7GeNW1UnzTdhYHuFlk8dBSmB1fzhEYEk0RcJqg4AKoq6/3/UorR+FaSuVwT7rqzGrTlscnT
 DlPWgRzrQ3jssesI7sZLm82E3pJSgaUoCdCOlL7MMPCJwI8JpPlBedRpe9tfVyfu3euTPLPx
 wcV3L/cfWPGSL4PofBtB8NUU6QwYiQ9Hzx4xOyn67zW73/G0Q2vPPRst8LBDqlxLjbtx/WLR
 6h3nBc3eyuZ+q62HS1pJ5EvUT1vjyJ1ySrqtUXWQ4XlZyoEFUfpJxJoN0A9HCxmHGVckzTRl
 5FMWo8TCniHynNXsBtDQbabt7aNEOaAJdE7to0AH3T/Bvwzcp0ZJtBk0EM6YeMLtotUut7h2
 Bkg1b//r6bTBswMBXVJ5H44Qf0+eKeUg7whSC9qpYOzzrm7+0r9F5u3qF8ZTx55TJc2g656C
 9a1P1MYVysLvkLvS4H+crmxA/i08Tc1h+x9RRvqba4lSzZ6/Tmt60DPM5Sc4R0nSm9BBff0N
 m0bSNRS8InXdO1Aq3362QKX2NOwcL5YaStwODNyZUqF7izjK4QARAQABzTxEZW1pIE1hcmll
 IE9iZW5vdXIgKGxvdmVyIG9mIGNvZGluZykgPGRlbWlvYmVub3VyQGdtYWlsLmNvbT7CwXgE
 EwECACIFAlp+A0oCGwMGCwkIBwMCBhUIAgkKCwQWAgMBAh4BAheAAAoJELKItV//nCLBhr8Q
 AK/xrb4wyi71xII2hkFBpT59ObLN+32FQT7R3lbZRjVFjc6yMUjOb1H/hJVxx+yo5gsSj5LS
 9AwggioUSrcUKldfA/PKKai2mzTlUDxTcF3vKx6iMXKA6AqwAw4B57ZEJoMM6egm57TV19kz
 PMc879NV2nc6+elaKl+/kbVeD3qvBuEwsTe2Do3HAAdrfUG/j9erwIk6gha/Hp9yZlCnPTX+
 VK+xifQqt8RtMqS5R/S8z0msJMI/ajNU03kFjOpqrYziv6OZLJ5cuKb3bZU5aoaRQRDzkFIR
 6aqtFLTohTo20QywXwRa39uFaOT/0YMpNyel0kdOszFOykTEGI2u+kja35g9TkH90kkBTG+a
 EWttIht0Hy6YFmwjcAxisSakBuHnHuMSOiyRQLu43ej2+mDWgItLZ48Mu0C3IG1seeQDjEYP
 tqvyZ6bGkf2Vj+L6wLoLLIhRZxQOedqArIk/Sb2SzQYuxN44IDRt+3ZcDqsPppoKcxSyd1Ny
 2tpvjYJXlfKmOYLhTWs8nwlAlSHX/c/jz/ywwf7eSvGknToo1Y0VpRtoxMaKW1nvH0OeCSVJ
 itfRP7YbiRVc2aNqWPCSgtqHAuVraBRbAFLKh9d2rKFB3BmynTUpc1BQLJP8+D5oNyb8Ts4x
 Xd3iV/uD8JLGJfYZIR7oGWFLP4uZ3tkneDfYzsFNBFp+A0oBEAC9ynZI9LU+uJkMeEJeJyQ/
 8VFkCJQPQZEsIGzOTlPnwvVna0AS86n2Z+rK7R/usYs5iJCZ55/JISWd8xD57ue0eB47bcJv
 VqGlObI2DEG8TwaW0O0duRhDgzMEL4t1KdRAepIESBEA/iPpI4gfUbVEIEQuqdqQyO4GAe+M
 kD0Hy5JH/0qgFmbaSegNTdQg5iqYjRZ3ttiswalql1/iSyv1WYeC1OAs+2BLOAT2NEggSiVO
 txEfgewsQtCWi8H1SoirakIfo45Hz0tk/Ad9ZWh2PvOGt97Ka85o4TLJxgJJqGEnqcFUZnJJ
 riwoaRIS8N2C8/nEM53jb1sH0gYddMU3QxY7dYNLIUrRKQeNkF30dK7V6JRH7pleRlf+wQcN
 fRAIUrNlatj9TxwivQrKnC9aIFFHEy/0mAgtrQShcMRmMgVlRoOA5B8RTulRLCmkafvwuhs6
 dCxN0GNAORIVVFxjx9Vn7OqYPgwiofZ6SbEl0hgPyWBQvE85klFLZLoj7p+joDY1XNQztmfA
 rnJ9x+YV4igjWImINAZSlmEcYtd+xy3Li/8oeYDAqrsnrOjb+WvGhCykJk4urBog2LNtcyCj
 kTs7F+WeXGUo0NDhbd3Z6AyFfqeF7uJ3D5hlpX2nI9no/ugPrrTVoVZAgrrnNz0iZG2DVx46
 x913pVKHl5mlYQARAQABwsFfBBgBAgAJBQJafgNKAhsMAAoJELKItV//nCLBwNIP/AiIHE8b
 oIqReFQyaMzxq6lE4YZCZNj65B/nkDOvodSiwfwjjVVE2V3iEzxMHbgyTCGA67+Bo/d5aQGj
 gn0TPtsGzelyQHipaUzEyrsceUGWYoKXYyVWKEfyh0cDfnd9diAm3VeNqchtcMpoehETH8fr
 RHnJdBcjf112PzQSdKC6kqU0Q196c4Vp5HDOQfNiDnTf7gZSj0BraHOByy9LEDCLhQiCmr+2
 E0rW4tBtDAn2HkT9uf32ZGqJCn1O+2uVfFhGu6vPE5qkqrbSE8TG+03H8ecU2q50zgHWPdHM
 OBvy3EhzfAh2VmOSTcRK+tSUe/u3wdLRDPwv/DTzGI36Kgky9MsDC5gpIwNbOJP2G/q1wT1o
 Gkw4IXfWv2ufWiXqJ+k7HEi2N1sree7Dy9KBCqb+ca1vFhYPDJfhP75I/VnzHVssZ/rYZ9+5
 1yDoUABoNdJNSGUYl+Yh9Pw9pE3Kt4EFzUlFZWbE4xKL/NPno+z4J9aWemLLszcYz/u3XnbO
 vUSQHSrmfOzX3cV4yfmjM5lewgSstoxGyTx2M8enslgdXhPthZlDnTnOT+C+OTsh8+m5tos8
 HQjaPM01MKBiAqdPgksm1wu2DrrwUi6ChRVTUBcj6+/9IJ81H2P2gJk3Ls3AVIxIffLoY34E
 +MYSfkEjBz0E8CLOcAw7JIwAaeBT
In-Reply-To: <964c3670-fad3-44ce-bd93-2057bca2dcb8@amd.com>

--------------J0Ikx2XPeEGPGmR0bq5owBjA
Content-Type: multipart/mixed; boundary="------------DQrFbbCzHC2DaqSP7y0lzlLn"

--------------DQrFbbCzHC2DaqSP7y0lzlLn
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: quoted-printable

On 4/20/26 13:58, Christian K=C3=B6nig wrote:
> On 4/20/26 19:03, Demi Marie Obenour wrote:
>> On 4/20/26 04:49, Christian K=C3=B6nig wrote:
>>> On 4/17/26 21:35, Demi Marie Obenour wrote:
> ...
>>>> Are any of the following reasonable options?
>>>>
>>>> 1. Change the guest kernel to only map (and thus pin) a small subset=

>>>>    of VRAM at any given time.  If unmapped VRAM is accessed the gues=
t
>>>>    traps the page fault, evicts an old VRAM mapping, and creates a
>>>>    new one.
>>>
>>> Yeah, that could potentially work.
>>>
>>> This is basically what we do on the host kernel driver when we can't =
resize the BAR for some reason. In that use case VRAM buffers are shuffle=
d in and out of the CPU accessible window of VRAM on demand.
>>
>> How much is this going to hurt performance?
>=20
> Hard to say, resizing the BAR can easily give you 10-15% more performan=
ce on some use cases.
>=20
> But that involves physically transferring the data using a DMA. For thi=
s solution we basically only have to we basically only have to transfer a=
 few messages between host and guest.
>=20
> No idea how performant that is.

In this use-case, 20-30% performance penalties are likely to be
"business as usual".  Close to native performance would be ideal, but
to be useful it just needs to beat software rendering by a wide margin,
and not cause data corruption or vulnerabilities.

>>>> 2. Pretend that resizable BAR is not enabled, so the guest doesn't
>>>>    think it can map much of VRAM at once.  If resizable BAR is enabl=
ed
>>>>    on the host, it might be possible to split the large BAR mapping
>>>>    in a lot of ways.
>>>
>>> That won't work. The userspace parts of the driver stack don't care h=
ow large the BAR to access VRAM with the CPU is.
>>>
>>> The expectation is that the kernel driver makes thing CPU accessible =
as needed in the page fault handler.
>>>
>>> It is still a good idea for your solution #1 to give the amount of "p=
in-able" VRAM to the userspace stack as CPU visible VRAM limit so that te=
st cases and applications try to lower their usage of VRAM, e.g. use syst=
em memory bounce buffers when possible.
>>
>> That makes sense.
>>
>>>> Or does Xen really need to allow the host to handle guest page fault=
s?
>>>> That adds a huge amount of complexity to trusted and security-critic=
al
>>>> parts of the system, so it really is a last resort.  Putting the
>>>> complexity in to the guest virtio-GPU driver is vastly preferable if=

>>>> it can be made to work well.
>>>
>>> Well the nested page fault handling KVM offers has proven to be extre=
mely useful. So when XEN can't do this it is clearly lacking an important=
 feature.
>>
>> I agree. However, it is a lot of work to implement, which is why I'm
>> looking for alternatives if possible.
>>
>> KVM is part of the Linux kernel, so it can just call the Linux kernel
>> functions used to handle userspace page faults.  Xen is separate from
>> Linux, so it can't do that.  Instead, it will need to:
>>
>> 1. Determine that the fault needs to be handled by another VM, and
>>    the ID of the VM that needs to handle the fault.
>> 2. Send a message to the VM asking it to handle the fault.
>> 3. Block the vCPU until it gets a response.
>>
>> Then the VM owning the memory will need to call the page fault handler=

>> and provide the memory to Xen.  Xen then needs to:
>>
>> 4. Map the memory into the nested page tables of the VM that faulted.
>> 5. Resume the vCPU.
>>
>>> But I have one question: When XEN has a problem handling faults from =
the guest on the host then how does that work for system memory mappings?=

>>>
>>> There is really no difference between VRAM and system memory in the h=
andling for the GPU driver stack.
>>>
>>> Regards,
>>> Christian.
>>
>> Generally, Xen makes the frontend (usually an unprivileged VM)
>> responsible for providing mappings to the backend (usually the host).
>> That is possible with system RAM but not with VRAM, because Xen has
>> no awareness of VRAM.  To Xen, VRAM is just a PCI BAR.
>=20
> No, that doesn't work with system memory allocations of GPU drivers eit=
her.
>=20
> We already had it multiple times that people tried to be clever and inc=
remented the page reference counter on driver allocated system memory and=
 were totally surprised that this can result in security issues and data =
corruption.
>=20
> I seriously hope that this isn't the case here again. As far as I know =
XEN already has support for accessing VMAs with VM_PFN or otherwise I don=
't know how driver allocated system memory access could potentially work.=

>=20
> Accessing VRAM is pretty much the same use case as far as I can see.
>=20
> Regards,
> Christian.

The Xen-native approach would be for system memory allocations to
be made using the Xen driver and then imported into the virtio-GPU
driver via dmabuf.  Is there any chance this could be made to happen?

If it's a lost cause, then how much is the memory overhead of pinning
everything ever used in a dmabuf?  It should be possible to account
pinned host memory against a guest's quota, but if that leads to an
unusable system it isn't going to be good.

Is supporting page faults in Xen the only solution that will be viable
long-term, considering the tolerance for very substantial performance
overheads compared to native?  AAA gaming isn't the initial goal here.
Qubes OS already supports PCI passthrough for that.
--=20
Sincerely,
Demi Marie Obenour (she/her/hers)
--------------DQrFbbCzHC2DaqSP7y0lzlLn
Content-Type: application/pgp-keys; name="OpenPGP_0xB288B55FFF9C22C1.asc"
Content-Disposition: attachment; filename="OpenPGP_0xB288B55FFF9C22C1.asc"
Content-Description: OpenPGP public key
Content-Transfer-Encoding: quoted-printable

-----BEGIN PGP PUBLIC KEY BLOCK-----

xsFNBFp+A0oBEADffj6anl9/BHhUSxGTICeVl2tob7hPDdhHNgPR4C8xlYt5q49y
B+l2nipdaq+4Gk6FZfqC825TKl7eRpUjMriwle4r3R0ydSIGcy4M6eb0IcxmuPYf
bWpr/si88QKgyGSVZ7GeNW1UnzTdhYHuFlk8dBSmB1fzhEYEk0RcJqg4AKoq6/3/
UorR+FaSuVwT7rqzGrTlscnTDlPWgRzrQ3jssesI7sZLm82E3pJSgaUoCdCOlL7M
MPCJwI8JpPlBedRpe9tfVyfu3euTPLPxwcV3L/cfWPGSL4PofBtB8NUU6QwYiQ9H
zx4xOyn67zW73/G0Q2vPPRst8LBDqlxLjbtx/WLR6h3nBc3eyuZ+q62HS1pJ5EvU
T1vjyJ1ySrqtUXWQ4XlZyoEFUfpJxJoN0A9HCxmHGVckzTRl5FMWo8TCniHynNXs
BtDQbabt7aNEOaAJdE7to0AH3T/Bvwzcp0ZJtBk0EM6YeMLtotUut7h2Bkg1b//r
6bTBswMBXVJ5H44Qf0+eKeUg7whSC9qpYOzzrm7+0r9F5u3qF8ZTx55TJc2g656C
9a1P1MYVysLvkLvS4H+crmxA/i08Tc1h+x9RRvqba4lSzZ6/Tmt60DPM5Sc4R0nS
m9BBff0Nm0bSNRS8InXdO1Aq3362QKX2NOwcL5YaStwODNyZUqF7izjK4QARAQAB
zTxEZW1pIE9iZW5vdXIgKElUTCBFbWFpbCBLZXkpIDxhdGhlbmFAaW52aXNpYmxl
dGhpbmdzbGFiLmNvbT7CwY4EEwEIADgWIQR2h02fEza6IlkHHHGyiLVf/5wiwQUC
X6YJvQIbAwULCQgHAgYVCgkICwIEFgIDAQIeAQIXgAAKCRCyiLVf/5wiwWRhD/0Y
R+YYC5Kduv/2LBgQJIygMsFiRHbR4+tWXuTFqgrxxFSlMktZ6gQrQCWe38WnOXkB
oY6n/5lSJdfnuGd2UagZ/9dkaGMUkqt+5WshLFly4BnP7pSsWReKgMP7etRTwn3S
zk1OwFx2lzY1EnnconPLfPBc6rWG2moA6l0WX+3WNR1B1ndqpl2hPSjT2jUCBWDV
rGOUSX7r5f1WgtBeNYnEXPBCUUM51pFGESmfHIXQrqFDA7nBNiIVFDJTmQzuEqIy
Jl67pKNgooij5mKzRhFKHfjLRAH4mmWZlB9UjDStAfFBAoDFHwd1HL5VQCNQdqEc
/9lZDApqWuCPadZN+pGouqLysesIYsNxUhJ7dtWOWHl0vs7/3qkWmWun/2uOJMQh
ra2u8nA9g91FbOobWqjrDd6x3ZJoGQf4zLqjmn/P514gb697788e573WN/MpQ5XI
Fl7aM2d6/GJiq6LC9T2gSUW4rbPBiqOCeiUx7Kd/sVm41p9TOA7fEG4bYddCfDsN
xaQJH6VRK3NOuBUGeL+iQEVF5Xs6Yp+U+jwvv2M5Lel3EqAYo5xXTx4ls0xaxDCu
fudcAh8CMMqx3fguSb7Mi31WlnZpk0fDuWQVNKyDP7lYpwc4nCCGNKCj622ZSocH
AcQmX28L8pJdLYacv9pU3jPy4fHcQYvmTavTqowGnM08RGVtaSBNYXJpZSBPYmVu
b3VyIChsb3ZlciBvZiBjb2RpbmcpIDxkZW1pb2Jlbm91ckBnbWFpbC5jb20+wsF4
BBMBAgAiBQJafgNKAhsDBgsJCAcDAgYVCAIJCgsEFgIDAQIeAQIXgAAKCRCyiLVf
/5wiwYa/EACv8a2+MMou9cSCNoZBQaU+fTmyzft9hUE+0d5W2UY1RY3OsjFIzm9R
/4SVccfsqOYLEo+S0vQMIIIqFEq3FCpXXwPzyimotps05VA8U3Bd7yseojFygOgK
sAMOAee2RCaDDOnoJue01dfZMzzHPO/TVdp3OvnpWipfv5G1Xg96rwbhMLE3tg6N
xwAHa31Bv4/Xq8CJOoIWvx6fcmZQpz01/lSvsYn0KrfEbTKkuUf0vM9JrCTCP2oz
VNN5BYzqaq2M4r+jmSyeXLim922VOWqGkUEQ85BSEemqrRS06IU6NtEMsF8EWt/b
hWjk/9GDKTcnpdJHTrMxTspExBiNrvpI2t+YPU5B/dJJAUxvmhFrbSIbdB8umBZs
I3AMYrEmpAbh5x7jEjoskUC7uN3o9vpg1oCLS2ePDLtAtyBtbHnkA4xGD7ar8mem
xpH9lY/i+sC6CyyIUWcUDnnagKyJP0m9ks0GLsTeOCA0bft2XA6rD6aaCnMUsndT
ctrab42CV5XypjmC4U1rPJ8JQJUh1/3P48/8sMH+3krxpJ06KNWNFaUbaMTGiltZ
7x9DngklSYrX0T+2G4kVXNmjaljwkoLahwLla2gUWwBSyofXdqyhQdwZsp01KXNQ
UCyT/Pg+aDcm/E7OMV3d4lf7g/CSxiX2GSEe6BlhSz+Lmd7ZJ3g32M1ARGVtaSBN
YXJpZSBPYmVub3VyIChJVEwgRW1haWwgS2V5KSA8ZGVtaUBpbnZpc2libGV0aGlu
Z3NsYWIuY29tPsLBjgQTAQgAOBYhBHaHTZ8TNroiWQcccbKItV//nCLBBQJgOEV+
AhsDBQsJCAcCBhUKCQgLAgQWAgMBAh4BAheAAAoJELKItV//nCLBKwoP/1WSnFdv
SAD0g7fD0WlF+oi7ISFT7oqJnchFLOwVHK4Jg0e4hGn1ekWsF3Ha5tFLh4V/7UUu
obYJpTfBAA2CckspYBqLtKGjFxcaqjjpO1I2W/jeNELVtSYuCOZICjdNGw2Hl9yH
KRZiBkqc9u8lQcHDZKq4LIpVJj6ZQV/nxttDX90ax2No1nLLQXFbr5wb465LAPpU
lXwunYDij7xJGye+VUASQh9datye6orZYuJvNo8Tr3mAQxxkfR46LzWgxFCPEAZJ
5P56Nc0IMHdJZj0Uc9+1jxERhOGppp5jlLgYGK7faGB/jTV6LaRQ4Ad+xiqokDWp
mUOZsmA+bMbtPfYjDZBz5mlyHcIRKIFpE1l3Y8F7PhJuzzMUKkJi90CYakCV4x/a
Zs4pzk5E96c2VQx01RIEJ7fzHF7lwFdtfTS4YsLtAbQFsKayqwkGcVv2B1AHeqdo
TMX+cgDvjd1ZganGlWA8Sv9RkNSMchn1hMuTwERTyFTr2dKPnQdA1F480+jUap41
ClXgn227WkCIMrNhQGNyJsnwyzi5wS8rBVRQ3BOTMyvGM07j3axUOYaejEpg7wKi
wTPZGLGH1sz5GljD/916v5+v2xLbOo5606j9dWf5/tAhbPuqrQgWv41wuKDi+dDD
EKkODF7DHes8No+QcHTDyETMn1RYm7t0RKR4zsFNBFp+A0oBEAC9ynZI9LU+uJkM
eEJeJyQ/8VFkCJQPQZEsIGzOTlPnwvVna0AS86n2Z+rK7R/usYs5iJCZ55/JISWd
8xD57ue0eB47bcJvVqGlObI2DEG8TwaW0O0duRhDgzMEL4t1KdRAepIESBEA/iPp
I4gfUbVEIEQuqdqQyO4GAe+MkD0Hy5JH/0qgFmbaSegNTdQg5iqYjRZ3ttiswalq
l1/iSyv1WYeC1OAs+2BLOAT2NEggSiVOtxEfgewsQtCWi8H1SoirakIfo45Hz0tk
/Ad9ZWh2PvOGt97Ka85o4TLJxgJJqGEnqcFUZnJJriwoaRIS8N2C8/nEM53jb1sH
0gYddMU3QxY7dYNLIUrRKQeNkF30dK7V6JRH7pleRlf+wQcNfRAIUrNlatj9Txwi
vQrKnC9aIFFHEy/0mAgtrQShcMRmMgVlRoOA5B8RTulRLCmkafvwuhs6dCxN0GNA
ORIVVFxjx9Vn7OqYPgwiofZ6SbEl0hgPyWBQvE85klFLZLoj7p+joDY1XNQztmfA
rnJ9x+YV4igjWImINAZSlmEcYtd+xy3Li/8oeYDAqrsnrOjb+WvGhCykJk4urBog
2LNtcyCjkTs7F+WeXGUo0NDhbd3Z6AyFfqeF7uJ3D5hlpX2nI9no/ugPrrTVoVZA
grrnNz0iZG2DVx46x913pVKHl5mlYQARAQABwsFfBBgBAgAJBQJafgNKAhsMAAoJ
ELKItV//nCLBwNIP/AiIHE8boIqReFQyaMzxq6lE4YZCZNj65B/nkDOvodSiwfwj
jVVE2V3iEzxMHbgyTCGA67+Bo/d5aQGjgn0TPtsGzelyQHipaUzEyrsceUGWYoKX
YyVWKEfyh0cDfnd9diAm3VeNqchtcMpoehETH8frRHnJdBcjf112PzQSdKC6kqU0
Q196c4Vp5HDOQfNiDnTf7gZSj0BraHOByy9LEDCLhQiCmr+2E0rW4tBtDAn2HkT9
uf32ZGqJCn1O+2uVfFhGu6vPE5qkqrbSE8TG+03H8ecU2q50zgHWPdHMOBvy3Ehz
fAh2VmOSTcRK+tSUe/u3wdLRDPwv/DTzGI36Kgky9MsDC5gpIwNbOJP2G/q1wT1o
Gkw4IXfWv2ufWiXqJ+k7HEi2N1sree7Dy9KBCqb+ca1vFhYPDJfhP75I/VnzHVss
Z/rYZ9+51yDoUABoNdJNSGUYl+Yh9Pw9pE3Kt4EFzUlFZWbE4xKL/NPno+z4J9aW
emLLszcYz/u3XnbOvUSQHSrmfOzX3cV4yfmjM5lewgSstoxGyTx2M8enslgdXhPt
hZlDnTnOT+C+OTsh8+m5tos8HQjaPM01MKBiAqdPgksm1wu2DrrwUi6ChRVTUBcj
6+/9IJ81H2P2gJk3Ls3AVIxIffLoY34E+MYSfkEjBz0E8CLOcAw7JIwAaeBTzsFN
BGbyLVgBEACqClxh50hmBepTSVlan6EBq3OAoxhrAhWZYEwN78k+ENhK68KhqC5R
IsHzlL7QHW1gmfVBQZ63GnWiraM6wOJqFTL4ZWvRslga9u28FJ5XyK860mZLgYhK
9BzoUk4s+dat9jVUbq6LpQ1Ot5I9vrdzo2p1jtQ8h9WCIiFxSYy8s8pZ3hHh5T64
GIj1m/kY7lG3VIdUgoNiREGf/iOMjUFjwwE9ZoJ26j9p7p1U+TkKeF6wgswEB1T3
J8KCAtvmRtqJDq558IU5jhg5fgN+xHB8cgvUWulgK9FIF9oFxcuxtaf/juhHWKMO
RtL0bHfNdXoBdpUDZE+mLBUAxF6KSsRrvx6AQyJs7VjgXJDtQVWvH0PUmTrEswgb
49nNU+dLLZQAZagxqnZ9Dp5l6GqaGZCHERJcLmdY/EmMzSf5YazJ6c0vO8rdW27M
kn73qcWAplQn5mOXaqbfzWkAUPyUXppuRHfrjxTDz3GyJJVOeMmMrTxH4uCaGpOX
Z8tN6829J1roGw4oKDRUQsaBAeEDqizXMPRc+6U9vI5FXzbAsb+8lKW65G7JWHym
YPOGUt2hK4DdTA1PmVo0DxH00eWWeKxqvmGyX+Dhcg+5e191rPsMRGsDlH6KihI6
+3JIuc0y6ngdjcp6aalbuvPIGFrCRx3tnRtNc7He6cBWQoH9RPwluwARAQABwsOs
BBgBCgAgFiEEdodNnxM2uiJZBxxxsoi1X/+cIsEFAmbyLVgCGwICQAkQsoi1X/+c
IsHBdCAEGQEKAB0WIQSilC2pUlbVp66j3+yzNoc6synyUwUCZvItWAAKCRCzNoc6
synyU85gD/0T1QDtPhovkGwoqv4jUbEMMvpeYQf+oWgm/TjWPeLwdjl7AtY0G9Ml
ZoyGniYkoHi37Gnn/ShLT3B5vtyI58ap2+SSa8SnGftdAKRLiWFWCiAEklm9FRk8
N3hwxhmSFF1KR/AIDS4g+HIsZn7YEMubBSgLlZZ9zHl4O4vwuXlREBEW97iL/FSt
VownU2V39t7PtFvGZNk+DJH7eLO3jmNRYB0PL4JOyyda3NH/J92iwrFmjFWWmmWb
/Xz8l9DIs+Z59pRCVTTwbBEZhcUc7rVMCcIYL+q1WxBG2e6lMn15OQJ5WfiE6E0I
sGirAEDnXWx92JNGx5l+mMpdpsWhBZ5iGTtttZesibNkQfd48/eCgFi4cxJUC4PT
UQwfD9AMgzwSTGJrkI5XGy+XqxwOjL8UA0iIrtTpMh49zw46uV6kwFQCgkf32jZM
OLwLTNSzclbnA7GRd8tKwezQ/XqeK3dal2n+cOr+o+Eka7yGmGWNUqFbIe8cjj9T
JeF3mgOCmZOwMI+wIcQYRSf+e5VTMO6TNWH5BI3vqeHSt7HkYuPlHT0pGum88d4a
pWqhulH4rUhEMtirX1hYx8Q4HlUOQqLtxzmwOYWkhl1C+yPObAvUDNiHCLf9w28n
uihgEkzHt9J4VKYulyJM9fe3ENcyU6rpXD7iANQqcr87ogKXFxknZ97uEACvSucc
RbnnAgRqZ7GDzgoBerJ2zrmhLkeREZ08iz1zze1JgyW3HEwdr2UbyAuqvSADCSUU
GN0vtQHsPzWl8onRc7lOPqPDF8OO+UfN9NAfA4wl3QyChD1GXl9rwKQOkbvdlYFV
UFx9u86LNi4ssTmU8p9NtHIGpz1SYMVYNoYy9NU7EVqypGMguDCL7gJt6GUmA0sw
p+YCroXiwL2BJ7RwRqTpgQuFL1gShkA17D5jK4mDPEetq1d8kz9rQYvAR/sTKBsR
ImC3xSfn8zpWoNTTB6lnwyP5Ng1bu6esS7+SpYprFTe7ZqGZF6xhvBPf1Ldi9UAm
U2xPN1/eeWxEa2kusidmFKPmN8lcT4miiAvwGxEnY7Oww9CgZlUB+LP4dl5VPjEt
sFeAhrgxLdpVTjPRRwTd9VQF3/XYl83j5wySIQKIPXgT3sG3ngAhDhC8I8GpM36r
8WJJ3x2yVzyJUbBPO0GBhWE2xPNIfhxVoU4cGGhpFqz7dPKSTRDGq++MrFgKKGpI
ZwT3CPTSSKc7ySndEXWkOYArDIdtyxdE1p5/c3aoz4utzUU7NDHQ+vVIwlnZSMiZ
jek2IJP3SZ+COOIHCVxpUaZ4lnzWT4eDqABhMLpIzw6NmGfg+kLBJhouqz81WITr
EtJuZYM5blWncBOJCoWMnBEcTEo/viU3GgcVRw=3D=3D
=3Dx94R
-----END PGP PUBLIC KEY BLOCK-----

--------------DQrFbbCzHC2DaqSP7y0lzlLn--

--------------J0Ikx2XPeEGPGmR0bq5owBjA--

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

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

iQIzBAEBCgAdFiEEopQtqVJW1aeuo9/sszaHOrMp8lMFAmnmdHcACgkQszaHOrMp
8lMvCBAAiEpdcmZepZcksF1OYgnp7QuUn/aJGxwxt9Ioti8YOzvBGPNUuAGiqSj6
tylnRMxnDo74nCvIGjRRAX8oQ6JVAMHuf+GguCWqsb5alDnP3G3GpSTSeaUg+cc9
OFK7KEzuOHHz1Nawu315h8otumTxQKwR0TiwO2tqb8jYYWxgVuU/zExXF70uU1ju
OP1TUbVWegATUpRJuX05pQoGcy6Go/4zfFGj/ipLug0IRW0X3scAFjOpeTYGPlcW
8doVY/lLQQ3ORE2D3XVW638W7YMQsD3ahOh2rPu9/Jj8FOYcWQXNy1KfEW5l1AYF
tuDU9UraCuZCat5Q+Pv1l7fLCQrwqyOqHsq9gIKo/G84RGeixO9QAHQojRpr7C+n
lq/pL7psahiVHfH3N7auAd8a0OBqYbdjmxlOPBJWlOiWPlcWtcUH4S3z8JoMBM7t
AQR6QQfuzSF4fK6XyW/F9nm4Fd50Pnt2odQt/jDEhEyxLys76PkXNQUuA0Jr6rCT
+KsqEr3lFaNX2QWPKdY5p0cyTjdQspMrrhnHCOLygt1xdmqXqH6+P72qW0wIZkFw
98K7aolksqQ0Rzh2TclUJyFTrUSYdNKlmebZZ5e9TvUO72JturfYKlbRnxgSm5Mk
rV44denq+79l0+sOY8PjqCLS/Fnsmr5qeD/nydHS+esGhReGKwM=
=0mmn
-----END PGP SIGNATURE-----

--------------UO7W0PHisfTunOflIlWzKcyO--


From xen-devel-bounces@lists.xenproject.org Mon Apr 20 18:53:55 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 20 Apr 2026 18:53:55 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1286434.1567491 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wEtkl-0006Il-0t; Mon, 20 Apr 2026 18:53:51 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1286434.1567491; Mon, 20 Apr 2026 18:53: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 1wEtkk-0006Ie-SF; Mon, 20 Apr 2026 18:53:50 +0000
Received: by outflank-mailman (input) for mailman id 1286434;
 Mon, 20 Apr 2026 18:53:49 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <Christian.Koenig@amd.com>) id 1wEtkj-0006IY-GS
 for xen-devel@lists.xenproject.org; Mon, 20 Apr 2026 18:53:49 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wEtkg-0017XN-SK
 for xen-devel@lists.xenproject.org; Mon, 20 Apr 2026 20:53:46 +0200
Received: from [10.42.69.12] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <Christian.Koenig@amd.com>)
 id 69e67610-2eae-0a2a0a5409dd-0a2a450ce528-36
 for <xen-devel@lists.xenproject.org>; Mon, 20 Apr 2026 20:53:46 +0200
Received: from [40.93.194.32]
 (helo=SN4PR0501CU005.outbound.protection.outlook.com)
 by tlsNG-d25034.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.1)
 (envelope-from <Christian.Koenig@amd.com>)
 id 69e67638-62f1-0a2a450c0019-285dc220e6fb-3
 for <xen-devel@lists.xenproject.org>; Mon, 20 Apr 2026 20:53:45 +0200
Received: from SJ0PR12MB5673.namprd12.prod.outlook.com (2603:10b6:a03:42b::13)
 by MW4PR12MB6777.namprd12.prod.outlook.com (2603:10b6:303:1e9::17)
 with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9846.15; Mon, 20 Apr
 2026 18:53:40 +0000
Received: from SJ0PR12MB5673.namprd12.prod.outlook.com
 ([fe80::c3e5:48f8:beb6:ea68]) by SJ0PR12MB5673.namprd12.prod.outlook.com
 ([fe80::c3e5:48f8:beb6:ea68%5]) with mapi id 15.20.9846.014; Mon, 20 Apr 2026
 18:53: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=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=MJhv2c/kpKmOF0+njUgCWBAI+gfK9e1/f6+53pSQqEJRYeLR7pC8f+qbJWiZfGQLVODp0Y2DTIWJHhJMzNhoseW1c1ZSG2+odjrfHuCwu4I7tYPxAxZDuFzQAYHQ5PaoJKBcf61h4uYZCS4ZyEmj8YGa6B168KC1hzYSw0IHbtJ4veG3QGOQ2/QY8B6x9mlz9wSQtF/x6YKIfsRrPM16znF4ljdB9N9Rj3P+Ei7uh4fOcXihyAElPp9adek/xok0ppN44U6H2hoeAxtqsGHc0nrl1OBJlIJkRCm5uW0uAVgcglxkQNiBfVJfWU+nOgQCjtLnGEq9Y9e2NLFvMMtFOQ==
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com;
 s=arcselector10001;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1;
 bh=X/E1rN6FBTu1IPtIqp6jH0ZVrrJjFMJ6WstAbl3f5GI=;
 b=g0oz8vXuZ483TIsEKt2uJK0c+bUde6v0EjjRT5vF5cl6v1GTWFWgjaiklODA9NLj3oV0PHPtE1iQtia+n+fmA949hX4CmVVtcgg0IemO6PrT5yCr8ZDii2wXLJ5N+Uy3Ceuoq2Kcm7oehxjZuMpv607Rhvm9gUq5YOzGKRL7UH7eHCbtpx7TaeBE5/OssjODKiDGxELn/c7nsPkP2rSlRYbDftFe8KD79ZT3xwLriO5BoXwDaVhivSU7Q4C0NlBu9Bf7cZoGqkTUQ1K7qsM+Y5OKyinZ/Ltu14SoRKfb82JCgPmxVl5BD/bz13H725tdLsxBgF0ZQ7VO9U5s1F595w==
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=X/E1rN6FBTu1IPtIqp6jH0ZVrrJjFMJ6WstAbl3f5GI=;
 b=p+FqZcemmkvQOGndJtiywYTGT1BTap/M4GexZ/fh/PuThjG07Y2hHntu4gmn7JCU7pSGNM++hhQSrONiBb8BNcbay1wnuuFQ9m5PCenPWXyGixZuYfQz819gHCzNtIbWrOQ28DB10+uvzDrzBAVbiTSoDrtodqrisBsbz0sambc=
Authentication-Results: dkim=none (message not signed)
 header.d=none;dmarc=none action=none header.from=amd.com;
Message-ID: <e5c00f2c-0819-48b4-b66e-71b9a40a7235@amd.com>
Date: Mon, 20 Apr 2026 20:53:35 +0200
User-Agent: Mozilla Thunderbird
Subject: Re: Pinned, non-revocable mappings of VRAM: will bad things happen?
To: Demi Marie Obenour <demiobenour@gmail.com>,
 dri-devel@lists.freedesktop.org,
 Xen developer discussion <xen-devel@lists.xenproject.org>,
 linux-media@vger.kernel.org
Cc: Val Packett <val@invisiblethingslab.com>,
 Suwit Semal <sumit.semwal@linaro.org>,
 "Pelloux-Prayer, Pierre-Eric" <Pierre-eric.Pelloux-prayer@amd.com>
References: <a06133f7-3093-4733-9786-bc46c1453e06@gmail.com>
 <b8d04414-18b5-40f7-9ea2-88b30ff5bea0@amd.com>
 <c7865b27-6bf1-4df1-9520-c9ef6b3ef368@gmail.com>
 <4751cf03-d3c1-4d5d-af8e-39ad7c8ffb84@amd.com>
 <7472bfcf-8c22-4ac7-b903-a883cdb8f1c6@gmail.com>
 <8fe8b78b-5294-4319-af92-a4fb00527417@amd.com>
 <8846bac5-77ff-4439-ac5c-c33cdb4a94e3@gmail.com>
 <964c3670-fad3-44ce-bd93-2057bca2dcb8@amd.com>
 <08ad2301-3163-4497-8869-fa4cea30b384@gmail.com>
Content-Language: en-US
From: =?UTF-8?Q?Christian_K=C3=B6nig?= <christian.koenig@amd.com>
In-Reply-To: <08ad2301-3163-4497-8869-fa4cea30b384@gmail.com>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
X-ClientProxiedBy: BL1PR13CA0382.namprd13.prod.outlook.com
 (2603:10b6:208:2c0::27) To SJ0PR12MB5673.namprd12.prod.outlook.com
 (2603:10b6:a03:42b::13)
MIME-Version: 1.0
X-MS-PublicTrafficType: Email
X-MS-TrafficTypeDiagnostic: SJ0PR12MB5673:EE_|MW4PR12MB6777:EE_
X-MS-Office365-Filtering-Correlation-Id: 922fa92f-3899-47ed-2dd5-08de9f0e231d
X-MS-Exchange-SenderADCheck: 1
X-MS-Exchange-AntiSpam-Relay: 0
X-Microsoft-Antispam:
	BCL:0;ARA:13230040|1800799024|366016|376014|56012099003|18096099003|22082099003|18002099003;
X-Microsoft-Antispam-Message-Info:
	Q1WPCjxdZ8D7V6kNZHOELY16u2dYFaJNaA2VOODgCAyN75bK/0Y9fE5mqwGIr3+vi/OfP3OsKXLpgRqZtxre/mX/lTu5Ar68suxa6fsjICSziUoMLPbHKjH1X0kiqQ9Bte48V2p0wPV1DzjSFq65yN7gdxlzOMRHBfNeMvMHhu9eO2Q9QmDL+VZ56IN400ejzShZESP4gzrP5+dAFFCR2sd6T7NyR/2ZEkfcsQGiphv7IYR98vIqmmxT60Ka7BiIIqnNbVI2HtCZzvdS9BRnVRQ2TokeG/o8sKweZkaB74lRZ9sFo09sENEe6gteJ2jtXuWnBChoRPkmdK7q3DBLt8K7JWZxCU3hFgQO/48rU6iPLwBZsjMP8MUJCYlYeCSnx+zDcFWZogAIgAqFCuzm1SWepRtbdGYpJgIG8oLY3/MF/OrIcnNu7HQDsxaYslglAPpbPhNvfwSdWHwtQb1TNa2lS1DOK5nWyRehlQgvAcPHDrHHHZXGaLUdN3FVenW6CPO5yvlb14sJKUFC03pA6Y2hjoONB9HuQvDerhDcUM2Go5TqqlxHwkRg3pXssPrl+LvL7XfyWRtbbHGu+Sl5B7eStNilDKSKIpwJXfGaqNuUvA75z1JqVyCqLSQVa4i54corij3vx57TbR80E3vTb8CveDI+ri+zKbN22XWueP6dNiI3z+Jy6Ng5Jy6Y8TUQ2IKYoivv0P6QH73NsnE1WRb3PAZBdmQhH6zBnu6SzWE=
X-Forefront-Antispam-Report:
	CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:SJ0PR12MB5673.namprd12.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(1800799024)(366016)(376014)(56012099003)(18096099003)(22082099003)(18002099003);DIR:OUT;SFP:1101;
X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1
X-MS-Exchange-AntiSpam-MessageData-0:
	=?utf-8?B?WDU5bnJLRHNvODg4bk1OTUhDa2NBV1B2UGFyczJwdjRhc3A4a1krbnFUOU15?=
 =?utf-8?B?bkdla1g4ekw4VGxDcXgraHVqZ1U1alBCRHVWYlgwOFp4L1NodER1cGpGTys1?=
 =?utf-8?B?bDVYdG9zbXdMMVMvVEYrVDlpV1FvMFRVcU1pYU9BcXpDd1o1RWN0RCtsS2E4?=
 =?utf-8?B?USt2ekxtTGdnRVBOSksrdVdrYkRmdTZvZGlOcktpd2NBS0tEb1M5elNCdFAx?=
 =?utf-8?B?MjVEa1RPZzZSWTNtcXd5elR3SWJyUmwvUjd1V2dFR1ovWnhxY0RJWHErZlVN?=
 =?utf-8?B?STAxVFRaSHpRa2cwTnpJOEVkSkNCRnE4SHYrSFVnSStTZUlGQUQwT0ZNM0ht?=
 =?utf-8?B?d0pWMnNoWDM5MHZSUm5LUmVqcEdFV1J6UFU0Z1FrV2JBbjlMUXRmZEFvZ2VL?=
 =?utf-8?B?TGIwYno5TkxvS3hkS0o3R1BvS0R2eFlvd2pLMk1FellYOWpvUTBWb1ROQUhu?=
 =?utf-8?B?cGdlcXJiWmlWZjBMZDJHR0Q2cks2cUhuR0l0UkU2cEMvdnpXaTMvSWJUTERz?=
 =?utf-8?B?Y3Z1S0hnVTN4YXM1NmhKMG40Y0w3cm5wMjZLWi85dEpnZG5vWG8xbnpMMGlE?=
 =?utf-8?B?NjRINWpIWkJqVlp3MkhFTml1NFFEL2VqRXhPaGh0YkVueTRDVWhsa1p0elY0?=
 =?utf-8?B?UFF6ckpkdWFmV3JEbWtjNVRqdStuVW8weHBhSWJnQWNPK0hZSVo5cGoyb3pr?=
 =?utf-8?B?TjdFVEFzdEk1bWVqQVlJc2YyOHZaQktkL2lVM2I2NGcxTDZWNCtCL1k4bzJo?=
 =?utf-8?B?Mys4dFJ2c2FKTGtNMkRyeW9RQTYwaDBETTNTdG1TQlhaam9ZNXJ3NlpPb09N?=
 =?utf-8?B?QUwyWjZyc0diVFJhbjJ1ZCtnZCs2WFlPMDZDVmN0VFljQ2NVaHYvMWFqQUdT?=
 =?utf-8?B?NVhGNnlPN3g0RDhrKzZwamZ0VVNNaHVIeWhZTnI1YmZnampUSDFSbW5zU0Jj?=
 =?utf-8?B?MnBxb0lJYTVDQlhMbDJybk80bFN0TWMyRnhBVVBzUHdaMEtBWDJLcVc2bzRr?=
 =?utf-8?B?MzRYMnhLeklrTExNZEoxb0IwaWNKVGJQbkpLOEF3eHlUYVY3U0JoVUE5MDJE?=
 =?utf-8?B?aG1ZbTV3Y2NCR0pIUExiQzJYRHJaUTlhMHJLWGJQMVZhSjQzNk9zbzRvTUxS?=
 =?utf-8?B?bXltdjlVaEMvVlUvSFZNK3FqSjBDdjBvVnZyQ0o3NExPRTAreWdrSTZhZDhr?=
 =?utf-8?B?SG8wbnRIMTJFSDRFVy9aejJpQ0hhOXhlNjlCa0ROVWRtcDZpeFE2RjUrRzh3?=
 =?utf-8?B?ODBFenN1b3ZCR0Nzc0ZGaTIzNGNXUmxtenBVV3JmZTQxT1pQSzV5NTRHcVJS?=
 =?utf-8?B?SEkxZXgzK0IyTm9MdGlCY093WGpEaTB0eEx0aVJrSDJ4akZiZlIxQWE1TlJY?=
 =?utf-8?B?NUVWa3l3RUE5VjhvTjdTNGdxclpMZDVlQW5Kb3p6cUJZMXRmWm5zV2tqTUhZ?=
 =?utf-8?B?RCs5ZlUyVllKRjlOdk5GN0Q4ZlN4QjU4ejVyUkIzOVNjdGczNkdyZGtlVHBr?=
 =?utf-8?B?RUduQVJrNm9EU2s1djlNN2ZCZ1NsRStRM3VITUw4ZTZDMFQ0dldWQk9nS3I5?=
 =?utf-8?B?c3JkWFo4YW5yVDY5a05jMVZ3Mi9samhRSEFQM0U2Si9wejExZTliN0RNVUIv?=
 =?utf-8?B?ZUJQeTY0VHFFMkdPOEVUVThyaVlrR084enFobmFlRTFPZTY3cG1xZlcrZWw3?=
 =?utf-8?B?eXJKejByT0xUSUNXRm5NN245TStDNjR6MzBCVDRZOFZEb1NrVkdSaG96L2Jm?=
 =?utf-8?B?NVphNVd6cS8rUVFpeEZ4a09pYjJOYXZEWW9ibU83bHRnbWtvd3B6bEcwWHJk?=
 =?utf-8?B?V1FmbnVSekhITDY5Zm1mVEFtYk9aN2JqdlhIVTNlUXZTMm43WmdZL2hxa0l5?=
 =?utf-8?B?Y3g2MVJDZjErc0RWTUcyRjVZRFVQWjZDR0NtQi9CZTh2Syt0MlE2Q1RyeWtt?=
 =?utf-8?B?L2Z5MGIwZWc3UU9zWEo2SzBjNHo5UGh1V0hLZmhMUXVjS0RWcC9RdEkrS1NF?=
 =?utf-8?B?R0ZyUVFNeHdrbWxQOFJJQlkwU2pMcmtWemZFUEpyclJibkF0bG1xa3JPRDNj?=
 =?utf-8?B?QlpLYUhWck5UUk8rSnJ2VkY0aG8vU0hvNHZvZ2ZyeUVJNGtPNHJ4VXBZRVkw?=
 =?utf-8?B?M0FLZ3IwVlIyV3lQQ09hZndMNjExUnFNTjhjajRNdUZCZW5wUVNVMFdPUmNO?=
 =?utf-8?B?ZEl6eFh5NU8rcWVZYXFaOXJnZ21Ta0tnTklONWt4YmNlRW41YzBPWVhNVWtz?=
 =?utf-8?B?eEpYMGE2aVYzWDNxc2ZQQ25tb3lHVURUT1BLWERqRlFVdCtoYUVSNEQ2U295?=
 =?utf-8?Q?0Buo6JuN30zntctF3X?=
X-OriginatorOrg: amd.com
X-MS-Exchange-CrossTenant-Network-Message-Id: 922fa92f-3899-47ed-2dd5-08de9f0e231d
X-MS-Exchange-CrossTenant-AuthSource: SJ0PR12MB5673.namprd12.prod.outlook.com
X-MS-Exchange-CrossTenant-AuthAs: Internal
X-MS-Exchange-CrossTenant-OriginalArrivalTime: 20 Apr 2026 18:53:40.3580
 (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: +di6Bn9I6UXD0kCiHLOPtysKfD2cfSwDHnB+offhKO/XSRWJcJxPY9AUbSCR+lA0
X-MS-Exchange-Transport-CrossTenantHeadersStamped: MW4PR12MB6777
X-purgate-ID: tlsNG-d25034/1776711226-F6809CF5-04E2B309/0/0
X-purgate-type: clean
X-purgate-size: 4130

On 4/20/26 20:46, Demi Marie Obenour wrote:
> On 4/20/26 13:58, Christian König wrote:
>> On 4/20/26 19:03, Demi Marie Obenour wrote:
>>> On 4/20/26 04:49, Christian König wrote:
>>>> On 4/17/26 21:35, Demi Marie Obenour wrote:
>> ...
>>>>> Are any of the following reasonable options?
>>>>>
>>>>> 1. Change the guest kernel to only map (and thus pin) a small subset
>>>>>    of VRAM at any given time.  If unmapped VRAM is accessed the guest
>>>>>    traps the page fault, evicts an old VRAM mapping, and creates a
>>>>>    new one.
>>>>
>>>> Yeah, that could potentially work.
>>>>
>>>> This is basically what we do on the host kernel driver when we can't resize the BAR for some reason. In that use case VRAM buffers are shuffled in and out of the CPU accessible window of VRAM on demand.
>>>
>>> How much is this going to hurt performance?
>>
>> Hard to say, resizing the BAR can easily give you 10-15% more performance on some use cases.
>>
>> But that involves physically transferring the data using a DMA. For this solution we basically only have to we basically only have to transfer a few messages between host and guest.
>>
>> No idea how performant that is.
> 
> In this use-case, 20-30% performance penalties are likely to be
> "business as usual".

Well that is quite a bit.

> Close to native performance would be ideal, but
> to be useful it just needs to beat software rendering by a wide margin,
> and not cause data corruption or vulnerabilities.

That should still easily be the case, even trivial use cases are multiple magnitudes faster on GPUs compared to software rendering.

>>>
>>>> But I have one question: When XEN has a problem handling faults from the guest on the host then how does that work for system memory mappings?
>>>>
>>>> There is really no difference between VRAM and system memory in the handling for the GPU driver stack.
>>>>
>>>> Regards,
>>>> Christian.
>>>
>>> Generally, Xen makes the frontend (usually an unprivileged VM)
>>> responsible for providing mappings to the backend (usually the host).
>>> That is possible with system RAM but not with VRAM, because Xen has
>>> no awareness of VRAM.  To Xen, VRAM is just a PCI BAR.
>>
>> No, that doesn't work with system memory allocations of GPU drivers either.
>>
>> We already had it multiple times that people tried to be clever and incremented the page reference counter on driver allocated system memory and were totally surprised that this can result in security issues and data corruption.
>>
>> I seriously hope that this isn't the case here again. As far as I know XEN already has support for accessing VMAs with VM_PFN or otherwise I don't know how driver allocated system memory access could potentially work.
>>
>> Accessing VRAM is pretty much the same use case as far as I can see.
>>
>> Regards,
>> Christian.
> 
> The Xen-native approach would be for system memory allocations to
> be made using the Xen driver and then imported into the virtio-GPU
> driver via dmabuf.  Is there any chance this could be made to happen?

That could be. Adding Pierre-Eric to comment since he knows that use much better than I do.

> If it's a lost cause, then how much is the memory overhead of pinning
> everything ever used in a dmabuf?  It should be possible to account
> pinned host memory against a guest's quota, but if that leads to an
> unusable system it isn't going to be good.

That won't work at all.

We have use cases where you *must* migrate a DMA-buf to VRAM or otherwise the GPU can't use it.

A simple scanout to a monitor is such an use case for example, that is usually not possible from system memory.

> Is supporting page faults in Xen the only solution that will be viable
> long-term, considering the tolerance for very substantial performance
> overheads compared to native?  AAA gaming isn't the initial goal here.
> Qubes OS already supports PCI passthrough for that.

We have AAA gaming working on XEN through native context working for quite a while.

Pierre-Eric can tell you more about that.

Regards,
Christian.


From xen-devel-bounces@lists.xenproject.org Mon Apr 20 19:12:41 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 20 Apr 2026 19:12:41 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1286449.1567503 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wEu2t-0000rv-Fk; Mon, 20 Apr 2026 19:12:35 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1286449.1567503; Mon, 20 Apr 2026 19:12: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 1wEu2t-0000ro-CC; Mon, 20 Apr 2026 19:12:35 +0000
Received: by outflank-mailman (input) for mailman id 1286449;
 Mon, 20 Apr 2026 19:12:33 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <demiobenour@gmail.com>) id 1wEu2r-0000ri-Mf
 for xen-devel@lists.xenproject.org; Mon, 20 Apr 2026 19:12:33 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wEu2r-001Ap2-35
 for xen-devel@lists.xenproject.org; Mon, 20 Apr 2026 21:12:33 +0200
Received: from [10.42.69.11] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <demiobenour@gmail.com>)
 id 69e67aa0-2eae-0a2a0a5409dd-0a2a450b9cf4-2
 for <xen-devel@lists.xenproject.org>; Mon, 20 Apr 2026 21:12:33 +0200
Received: from [74.125.224.50] (helo=mail-yx1-f50.google.com)
 by tlsNG-42698a.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.1)
 (envelope-from <demiobenour@gmail.com>)
 id 69e67a9f-212f-0a2a450b0019-4a7de032dc68-3
 for <xen-devel@lists.xenproject.org>; Mon, 20 Apr 2026 21:12:32 +0200
Received: by mail-yx1-f50.google.com with SMTP id
 956f58d0204a3-64e87a81639so3242441d50.0
 for <xen-devel@lists.xenproject.org>; Mon, 20 Apr 2026 12:12:32 -0700 (PDT)
Received: from [10.138.34.110]
 (h69-131-150-190.cncrtn.broadband.dynamic.tds.net. [69.131.150.190])
 by smtp.gmail.com with ESMTPSA id
 956f58d0204a3-65314b2845asm5687206d50.3.2026.04.20.12.12.29
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Mon, 20 Apr 2026 12:12:29 -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=20251104 header.d=gmail.com header.i="@gmail.com" header.h="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=gmail.com; s=20251104; t=1776712351; x=1777317151; darn=lists.xenproject.org;
        h=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;
        bh=i0EsJZGMPne+sMdcR+JHl5GPTURQ6p8nqWb6f0HDnjU=;
        b=pcZOqJDkP/MipmXN4oZo7wmq//GTo/mJ/4/knNsNuBnDOkHbmxDR2IyHVc9v9wO07q
         Pl+dUHOpQWnFxEdQxzHYIzrfTE3yms2+M9AjgPlyQP5YUH2+9qNRFwpz/ZrmAZS6Ndw5
         KnEqz2+P2GBJS8Uv8Muw5bNiJCjSDMWzkGqVLNgT8YhXJXHYhalrs2ftIiRRStUkGoRz
         3eulVSK0+99uO/64SonmKOJ7Qo6JIYvJ+btx5+rYukW6LZ8UQ+XUmoRBZ3ianlHjICRR
         xgnhqRS6lbPHyx4SRK5x75RV0/+vDa/Xr4xpo9x6b06PP69q4kSapLqQp7t3oPeSgue5
         pqxQ==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20251104; t=1776712351; x=1777317151;
        h=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;
        bh=i0EsJZGMPne+sMdcR+JHl5GPTURQ6p8nqWb6f0HDnjU=;
        b=MDSa6guLOoSKMrn3arfnFDg9oLsBiaNhDumMqEwv2qT+qcvchPUFICtLYy+SMsaC/C
         T1ttb71BXz8P7BhYwTdBn4sHc3uppHnFKZG0k97seaqFE71oOottQIT+lNMusZCp4dRi
         CIuwXGBZBEMCq1qGkakyHfZ4vDp01htf5R4oowlzCLc2NkqlhIyXKsN2MPMT2uWnqKLR
         hyZokrzu1FxMkMZ8gKxQkIuRkbINm2CrRFStSVeMTlj/RlDkjpvfHxzf1fe33Rs/0LX8
         J2EmNzufyvNUyCfGwMdpzkxGAOuPuLSoY7P4yTjAX9d6FFEvbJAnzoKmkA4hmKHTO0e/
         iDhA==
X-Forwarded-Encrypted: i=1; AFNElJ/2xMbsfGOodDz1fGKwF0tO2/50C375MBUCg38WtU0ItUatWb1ToRZz2QjZ3QeOtEWr+N9jE47C2iI=@lists.xenproject.org
X-Gm-Message-State: AOJu0Yy7XbYT4f9z2vjKoWU/BBnmij+WGt/E+ucrNkw9P+tGkHnZAu/B
	11qmJGHCpYRj58ytho74XlLtjahTzFkTLOW1toWkCKlbMTh6tjM2rTRh
X-Gm-Gg: AeBDietIcLAh0XjBYEqK1RKKyWK307SXVUvcvZtQDzgcbhxwO4wx+az0J8i9OuKDHxF
	ctxILZz0rtNJAX7tD0BjhH5ImNe1tDSAJ8YiLb//FnauKpcHJN47ShqKuHLsMt+dNtiVH4JgaeX
	RqIidi7V7rfyBGfBg/rkJ2gePGZY6ighlyhY/WWO3nwx7CGD33u0iJO4C6FL4pw5EPLMjmuJS+f
	9wlgk8j4o09WF3/YjBOSbn1ueUs7/LTcLrw6gw0HXi7uPlIskpXQsD2kCnU/X1RpWIr9hV8cr3b
	ZkDfEmlmSS/pN9s3qJavpSxFkozdJMGkNZBVWTagEcBiY0f3uJ/WtWW75g7GgvkfmBsoEhheCDM
	+wwk0qsVWrYZ/eR3mc/4WJXFTYwG/tiE30/JkhmYK9Kk874aMs0VWp2IAKkO3CiJNoI2x31d1nm
	6Yfb2HCx3PBGaHpZQMjfJg20Od9dpbHzeAAhcGCy1hteuFvJai5uj8LFbN95BQQzAwo3zAJTFHS
	AI1+Mr9lBPNX5LBjk2ZdBSAxEflG//qFHxm2LaDfDDbFoaup6Ek
X-Received: by 2002:a05:690e:43ce:b0:651:bd21:e272 with SMTP id 956f58d0204a3-65310866564mr9809176d50.22.1776712350997;
        Mon, 20 Apr 2026 12:12:30 -0700 (PDT)
Message-ID: <686713fc-c762-4b1b-88b2-d486d4f38ac6@gmail.com>
Date: Mon, 20 Apr 2026 15:12:25 -0400
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: Pinned, non-revocable mappings of VRAM: will bad things happen?
To: =?UTF-8?Q?Christian_K=C3=B6nig?= <christian.koenig@amd.com>,
 dri-devel@lists.freedesktop.org,
 Xen developer discussion <xen-devel@lists.xenproject.org>,
 linux-media@vger.kernel.org
Cc: Val Packett <val@invisiblethingslab.com>,
 Suwit Semal <sumit.semwal@linaro.org>,
 "Pelloux-Prayer, Pierre-Eric" <Pierre-eric.Pelloux-prayer@amd.com>
References: <a06133f7-3093-4733-9786-bc46c1453e06@gmail.com>
 <b8d04414-18b5-40f7-9ea2-88b30ff5bea0@amd.com>
 <c7865b27-6bf1-4df1-9520-c9ef6b3ef368@gmail.com>
 <4751cf03-d3c1-4d5d-af8e-39ad7c8ffb84@amd.com>
 <7472bfcf-8c22-4ac7-b903-a883cdb8f1c6@gmail.com>
 <8fe8b78b-5294-4319-af92-a4fb00527417@amd.com>
 <8846bac5-77ff-4439-ac5c-c33cdb4a94e3@gmail.com>
 <964c3670-fad3-44ce-bd93-2057bca2dcb8@amd.com>
 <08ad2301-3163-4497-8869-fa4cea30b384@gmail.com>
 <e5c00f2c-0819-48b4-b66e-71b9a40a7235@amd.com>
Content-Language: en-US
From: Demi Marie Obenour <demiobenour@gmail.com>
Autocrypt: addr=demiobenour@gmail.com; keydata=
 xsFNBFp+A0oBEADffj6anl9/BHhUSxGTICeVl2tob7hPDdhHNgPR4C8xlYt5q49yB+l2nipd
 aq+4Gk6FZfqC825TKl7eRpUjMriwle4r3R0ydSIGcy4M6eb0IcxmuPYfbWpr/si88QKgyGSV
 Z7GeNW1UnzTdhYHuFlk8dBSmB1fzhEYEk0RcJqg4AKoq6/3/UorR+FaSuVwT7rqzGrTlscnT
 DlPWgRzrQ3jssesI7sZLm82E3pJSgaUoCdCOlL7MMPCJwI8JpPlBedRpe9tfVyfu3euTPLPx
 wcV3L/cfWPGSL4PofBtB8NUU6QwYiQ9Hzx4xOyn67zW73/G0Q2vPPRst8LBDqlxLjbtx/WLR
 6h3nBc3eyuZ+q62HS1pJ5EvUT1vjyJ1ySrqtUXWQ4XlZyoEFUfpJxJoN0A9HCxmHGVckzTRl
 5FMWo8TCniHynNXsBtDQbabt7aNEOaAJdE7to0AH3T/Bvwzcp0ZJtBk0EM6YeMLtotUut7h2
 Bkg1b//r6bTBswMBXVJ5H44Qf0+eKeUg7whSC9qpYOzzrm7+0r9F5u3qF8ZTx55TJc2g656C
 9a1P1MYVysLvkLvS4H+crmxA/i08Tc1h+x9RRvqba4lSzZ6/Tmt60DPM5Sc4R0nSm9BBff0N
 m0bSNRS8InXdO1Aq3362QKX2NOwcL5YaStwODNyZUqF7izjK4QARAQABzTxEZW1pIE1hcmll
 IE9iZW5vdXIgKGxvdmVyIG9mIGNvZGluZykgPGRlbWlvYmVub3VyQGdtYWlsLmNvbT7CwXgE
 EwECACIFAlp+A0oCGwMGCwkIBwMCBhUIAgkKCwQWAgMBAh4BAheAAAoJELKItV//nCLBhr8Q
 AK/xrb4wyi71xII2hkFBpT59ObLN+32FQT7R3lbZRjVFjc6yMUjOb1H/hJVxx+yo5gsSj5LS
 9AwggioUSrcUKldfA/PKKai2mzTlUDxTcF3vKx6iMXKA6AqwAw4B57ZEJoMM6egm57TV19kz
 PMc879NV2nc6+elaKl+/kbVeD3qvBuEwsTe2Do3HAAdrfUG/j9erwIk6gha/Hp9yZlCnPTX+
 VK+xifQqt8RtMqS5R/S8z0msJMI/ajNU03kFjOpqrYziv6OZLJ5cuKb3bZU5aoaRQRDzkFIR
 6aqtFLTohTo20QywXwRa39uFaOT/0YMpNyel0kdOszFOykTEGI2u+kja35g9TkH90kkBTG+a
 EWttIht0Hy6YFmwjcAxisSakBuHnHuMSOiyRQLu43ej2+mDWgItLZ48Mu0C3IG1seeQDjEYP
 tqvyZ6bGkf2Vj+L6wLoLLIhRZxQOedqArIk/Sb2SzQYuxN44IDRt+3ZcDqsPppoKcxSyd1Ny
 2tpvjYJXlfKmOYLhTWs8nwlAlSHX/c/jz/ywwf7eSvGknToo1Y0VpRtoxMaKW1nvH0OeCSVJ
 itfRP7YbiRVc2aNqWPCSgtqHAuVraBRbAFLKh9d2rKFB3BmynTUpc1BQLJP8+D5oNyb8Ts4x
 Xd3iV/uD8JLGJfYZIR7oGWFLP4uZ3tkneDfYzsFNBFp+A0oBEAC9ynZI9LU+uJkMeEJeJyQ/
 8VFkCJQPQZEsIGzOTlPnwvVna0AS86n2Z+rK7R/usYs5iJCZ55/JISWd8xD57ue0eB47bcJv
 VqGlObI2DEG8TwaW0O0duRhDgzMEL4t1KdRAepIESBEA/iPpI4gfUbVEIEQuqdqQyO4GAe+M
 kD0Hy5JH/0qgFmbaSegNTdQg5iqYjRZ3ttiswalql1/iSyv1WYeC1OAs+2BLOAT2NEggSiVO
 txEfgewsQtCWi8H1SoirakIfo45Hz0tk/Ad9ZWh2PvOGt97Ka85o4TLJxgJJqGEnqcFUZnJJ
 riwoaRIS8N2C8/nEM53jb1sH0gYddMU3QxY7dYNLIUrRKQeNkF30dK7V6JRH7pleRlf+wQcN
 fRAIUrNlatj9TxwivQrKnC9aIFFHEy/0mAgtrQShcMRmMgVlRoOA5B8RTulRLCmkafvwuhs6
 dCxN0GNAORIVVFxjx9Vn7OqYPgwiofZ6SbEl0hgPyWBQvE85klFLZLoj7p+joDY1XNQztmfA
 rnJ9x+YV4igjWImINAZSlmEcYtd+xy3Li/8oeYDAqrsnrOjb+WvGhCykJk4urBog2LNtcyCj
 kTs7F+WeXGUo0NDhbd3Z6AyFfqeF7uJ3D5hlpX2nI9no/ugPrrTVoVZAgrrnNz0iZG2DVx46
 x913pVKHl5mlYQARAQABwsFfBBgBAgAJBQJafgNKAhsMAAoJELKItV//nCLBwNIP/AiIHE8b
 oIqReFQyaMzxq6lE4YZCZNj65B/nkDOvodSiwfwjjVVE2V3iEzxMHbgyTCGA67+Bo/d5aQGj
 gn0TPtsGzelyQHipaUzEyrsceUGWYoKXYyVWKEfyh0cDfnd9diAm3VeNqchtcMpoehETH8fr
 RHnJdBcjf112PzQSdKC6kqU0Q196c4Vp5HDOQfNiDnTf7gZSj0BraHOByy9LEDCLhQiCmr+2
 E0rW4tBtDAn2HkT9uf32ZGqJCn1O+2uVfFhGu6vPE5qkqrbSE8TG+03H8ecU2q50zgHWPdHM
 OBvy3EhzfAh2VmOSTcRK+tSUe/u3wdLRDPwv/DTzGI36Kgky9MsDC5gpIwNbOJP2G/q1wT1o
 Gkw4IXfWv2ufWiXqJ+k7HEi2N1sree7Dy9KBCqb+ca1vFhYPDJfhP75I/VnzHVssZ/rYZ9+5
 1yDoUABoNdJNSGUYl+Yh9Pw9pE3Kt4EFzUlFZWbE4xKL/NPno+z4J9aWemLLszcYz/u3XnbO
 vUSQHSrmfOzX3cV4yfmjM5lewgSstoxGyTx2M8enslgdXhPthZlDnTnOT+C+OTsh8+m5tos8
 HQjaPM01MKBiAqdPgksm1wu2DrrwUi6ChRVTUBcj6+/9IJ81H2P2gJk3Ls3AVIxIffLoY34E
 +MYSfkEjBz0E8CLOcAw7JIwAaeBT
In-Reply-To: <e5c00f2c-0819-48b4-b66e-71b9a40a7235@amd.com>
Content-Type: multipart/signed; micalg=pgp-sha256;
 protocol="application/pgp-signature";
 boundary="------------oLcefsVzkSfrb6uaB7hzzgLl"
X-purgate-ID: tlsNG-42698a/1776712353-0415DF3B-5760599E/0/0
X-purgate-type: clean
X-purgate-size: 18599

This is an OpenPGP/MIME signed message (RFC 4880 and 3156)
--------------oLcefsVzkSfrb6uaB7hzzgLl
Content-Type: multipart/mixed; boundary="------------h9T0I0ygGOGJXLDPzJnCSWj0";
 protected-headers="v1"
Message-ID: <686713fc-c762-4b1b-88b2-d486d4f38ac6@gmail.com>
Date: Mon, 20 Apr 2026 15:12:25 -0400
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: Pinned, non-revocable mappings of VRAM: will bad things happen?
To: =?UTF-8?Q?Christian_K=C3=B6nig?= <christian.koenig@amd.com>,
 dri-devel@lists.freedesktop.org,
 Xen developer discussion <xen-devel@lists.xenproject.org>,
 linux-media@vger.kernel.org
Cc: Val Packett <val@invisiblethingslab.com>,
 Suwit Semal <sumit.semwal@linaro.org>,
 "Pelloux-Prayer, Pierre-Eric" <Pierre-eric.Pelloux-prayer@amd.com>
References: <a06133f7-3093-4733-9786-bc46c1453e06@gmail.com>
 <b8d04414-18b5-40f7-9ea2-88b30ff5bea0@amd.com>
 <c7865b27-6bf1-4df1-9520-c9ef6b3ef368@gmail.com>
 <4751cf03-d3c1-4d5d-af8e-39ad7c8ffb84@amd.com>
 <7472bfcf-8c22-4ac7-b903-a883cdb8f1c6@gmail.com>
 <8fe8b78b-5294-4319-af92-a4fb00527417@amd.com>
 <8846bac5-77ff-4439-ac5c-c33cdb4a94e3@gmail.com>
 <964c3670-fad3-44ce-bd93-2057bca2dcb8@amd.com>
 <08ad2301-3163-4497-8869-fa4cea30b384@gmail.com>
 <e5c00f2c-0819-48b4-b66e-71b9a40a7235@amd.com>
Content-Language: en-US
From: Demi Marie Obenour <demiobenour@gmail.com>
Autocrypt: addr=demiobenour@gmail.com; keydata=
 xsFNBFp+A0oBEADffj6anl9/BHhUSxGTICeVl2tob7hPDdhHNgPR4C8xlYt5q49yB+l2nipd
 aq+4Gk6FZfqC825TKl7eRpUjMriwle4r3R0ydSIGcy4M6eb0IcxmuPYfbWpr/si88QKgyGSV
 Z7GeNW1UnzTdhYHuFlk8dBSmB1fzhEYEk0RcJqg4AKoq6/3/UorR+FaSuVwT7rqzGrTlscnT
 DlPWgRzrQ3jssesI7sZLm82E3pJSgaUoCdCOlL7MMPCJwI8JpPlBedRpe9tfVyfu3euTPLPx
 wcV3L/cfWPGSL4PofBtB8NUU6QwYiQ9Hzx4xOyn67zW73/G0Q2vPPRst8LBDqlxLjbtx/WLR
 6h3nBc3eyuZ+q62HS1pJ5EvUT1vjyJ1ySrqtUXWQ4XlZyoEFUfpJxJoN0A9HCxmHGVckzTRl
 5FMWo8TCniHynNXsBtDQbabt7aNEOaAJdE7to0AH3T/Bvwzcp0ZJtBk0EM6YeMLtotUut7h2
 Bkg1b//r6bTBswMBXVJ5H44Qf0+eKeUg7whSC9qpYOzzrm7+0r9F5u3qF8ZTx55TJc2g656C
 9a1P1MYVysLvkLvS4H+crmxA/i08Tc1h+x9RRvqba4lSzZ6/Tmt60DPM5Sc4R0nSm9BBff0N
 m0bSNRS8InXdO1Aq3362QKX2NOwcL5YaStwODNyZUqF7izjK4QARAQABzTxEZW1pIE1hcmll
 IE9iZW5vdXIgKGxvdmVyIG9mIGNvZGluZykgPGRlbWlvYmVub3VyQGdtYWlsLmNvbT7CwXgE
 EwECACIFAlp+A0oCGwMGCwkIBwMCBhUIAgkKCwQWAgMBAh4BAheAAAoJELKItV//nCLBhr8Q
 AK/xrb4wyi71xII2hkFBpT59ObLN+32FQT7R3lbZRjVFjc6yMUjOb1H/hJVxx+yo5gsSj5LS
 9AwggioUSrcUKldfA/PKKai2mzTlUDxTcF3vKx6iMXKA6AqwAw4B57ZEJoMM6egm57TV19kz
 PMc879NV2nc6+elaKl+/kbVeD3qvBuEwsTe2Do3HAAdrfUG/j9erwIk6gha/Hp9yZlCnPTX+
 VK+xifQqt8RtMqS5R/S8z0msJMI/ajNU03kFjOpqrYziv6OZLJ5cuKb3bZU5aoaRQRDzkFIR
 6aqtFLTohTo20QywXwRa39uFaOT/0YMpNyel0kdOszFOykTEGI2u+kja35g9TkH90kkBTG+a
 EWttIht0Hy6YFmwjcAxisSakBuHnHuMSOiyRQLu43ej2+mDWgItLZ48Mu0C3IG1seeQDjEYP
 tqvyZ6bGkf2Vj+L6wLoLLIhRZxQOedqArIk/Sb2SzQYuxN44IDRt+3ZcDqsPppoKcxSyd1Ny
 2tpvjYJXlfKmOYLhTWs8nwlAlSHX/c/jz/ywwf7eSvGknToo1Y0VpRtoxMaKW1nvH0OeCSVJ
 itfRP7YbiRVc2aNqWPCSgtqHAuVraBRbAFLKh9d2rKFB3BmynTUpc1BQLJP8+D5oNyb8Ts4x
 Xd3iV/uD8JLGJfYZIR7oGWFLP4uZ3tkneDfYzsFNBFp+A0oBEAC9ynZI9LU+uJkMeEJeJyQ/
 8VFkCJQPQZEsIGzOTlPnwvVna0AS86n2Z+rK7R/usYs5iJCZ55/JISWd8xD57ue0eB47bcJv
 VqGlObI2DEG8TwaW0O0duRhDgzMEL4t1KdRAepIESBEA/iPpI4gfUbVEIEQuqdqQyO4GAe+M
 kD0Hy5JH/0qgFmbaSegNTdQg5iqYjRZ3ttiswalql1/iSyv1WYeC1OAs+2BLOAT2NEggSiVO
 txEfgewsQtCWi8H1SoirakIfo45Hz0tk/Ad9ZWh2PvOGt97Ka85o4TLJxgJJqGEnqcFUZnJJ
 riwoaRIS8N2C8/nEM53jb1sH0gYddMU3QxY7dYNLIUrRKQeNkF30dK7V6JRH7pleRlf+wQcN
 fRAIUrNlatj9TxwivQrKnC9aIFFHEy/0mAgtrQShcMRmMgVlRoOA5B8RTulRLCmkafvwuhs6
 dCxN0GNAORIVVFxjx9Vn7OqYPgwiofZ6SbEl0hgPyWBQvE85klFLZLoj7p+joDY1XNQztmfA
 rnJ9x+YV4igjWImINAZSlmEcYtd+xy3Li/8oeYDAqrsnrOjb+WvGhCykJk4urBog2LNtcyCj
 kTs7F+WeXGUo0NDhbd3Z6AyFfqeF7uJ3D5hlpX2nI9no/ugPrrTVoVZAgrrnNz0iZG2DVx46
 x913pVKHl5mlYQARAQABwsFfBBgBAgAJBQJafgNKAhsMAAoJELKItV//nCLBwNIP/AiIHE8b
 oIqReFQyaMzxq6lE4YZCZNj65B/nkDOvodSiwfwjjVVE2V3iEzxMHbgyTCGA67+Bo/d5aQGj
 gn0TPtsGzelyQHipaUzEyrsceUGWYoKXYyVWKEfyh0cDfnd9diAm3VeNqchtcMpoehETH8fr
 RHnJdBcjf112PzQSdKC6kqU0Q196c4Vp5HDOQfNiDnTf7gZSj0BraHOByy9LEDCLhQiCmr+2
 E0rW4tBtDAn2HkT9uf32ZGqJCn1O+2uVfFhGu6vPE5qkqrbSE8TG+03H8ecU2q50zgHWPdHM
 OBvy3EhzfAh2VmOSTcRK+tSUe/u3wdLRDPwv/DTzGI36Kgky9MsDC5gpIwNbOJP2G/q1wT1o
 Gkw4IXfWv2ufWiXqJ+k7HEi2N1sree7Dy9KBCqb+ca1vFhYPDJfhP75I/VnzHVssZ/rYZ9+5
 1yDoUABoNdJNSGUYl+Yh9Pw9pE3Kt4EFzUlFZWbE4xKL/NPno+z4J9aWemLLszcYz/u3XnbO
 vUSQHSrmfOzX3cV4yfmjM5lewgSstoxGyTx2M8enslgdXhPthZlDnTnOT+C+OTsh8+m5tos8
 HQjaPM01MKBiAqdPgksm1wu2DrrwUi6ChRVTUBcj6+/9IJ81H2P2gJk3Ls3AVIxIffLoY34E
 +MYSfkEjBz0E8CLOcAw7JIwAaeBT
In-Reply-To: <e5c00f2c-0819-48b4-b66e-71b9a40a7235@amd.com>

--------------h9T0I0ygGOGJXLDPzJnCSWj0
Content-Type: multipart/mixed; boundary="------------tPVaFr0yvTUet01h9p9LgABE"

--------------tPVaFr0yvTUet01h9p9LgABE
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: quoted-printable

On 4/20/26 14:53, Christian K=C3=B6nig wrote:
> On 4/20/26 20:46, Demi Marie Obenour wrote:
>> On 4/20/26 13:58, Christian K=C3=B6nig wrote:
>>> On 4/20/26 19:03, Demi Marie Obenour wrote:
>>>> On 4/20/26 04:49, Christian K=C3=B6nig wrote:
>>>>> On 4/17/26 21:35, Demi Marie Obenour wrote:
>>> ...
>>>>>> Are any of the following reasonable options?
>>>>>>
>>>>>> 1. Change the guest kernel to only map (and thus pin) a small subs=
et
>>>>>>    of VRAM at any given time.  If unmapped VRAM is accessed the gu=
est
>>>>>>    traps the page fault, evicts an old VRAM mapping, and creates a=

>>>>>>    new one.
>>>>>
>>>>> Yeah, that could potentially work.
>>>>>
>>>>> This is basically what we do on the host kernel driver when we can'=
t resize the BAR for some reason. In that use case VRAM buffers are shuff=
led in and out of the CPU accessible window of VRAM on demand.
>>>>
>>>> How much is this going to hurt performance?
>>>
>>> Hard to say, resizing the BAR can easily give you 10-15% more perform=
ance on some use cases.
>>>
>>> But that involves physically transferring the data using a DMA. For t=
his solution we basically only have to we basically only have to transfer=
 a few messages between host and guest.
>>>
>>> No idea how performant that is.
>>
>> In this use-case, 20-30% performance penalties are likely to be
>> "business as usual".
>=20
> Well that is quite a bit.
>=20
>> Close to native performance would be ideal, but
>> to be useful it just needs to beat software rendering by a wide margin=
,
>> and not cause data corruption or vulnerabilities.
>=20
> That should still easily be the case, even trivial use cases are multip=
le magnitudes faster on GPUs compared to software rendering.

Makes sense.  If only GPUs supported easy and flexible virtualization the=
 way CPUs do :(.

>>>>
>>>>> But I have one question: When XEN has a problem handling faults fro=
m the guest on the host then how does that work for system memory mapping=
s?
>>>>>
>>>>> There is really no difference between VRAM and system memory in the=
 handling for the GPU driver stack.
>>>>>
>>>>> Regards,
>>>>> Christian.
>>>>
>>>> Generally, Xen makes the frontend (usually an unprivileged VM)
>>>> responsible for providing mappings to the backend (usually the host)=
=2E
>>>> That is possible with system RAM but not with VRAM, because Xen has
>>>> no awareness of VRAM.  To Xen, VRAM is just a PCI BAR.
>>>
>>> No, that doesn't work with system memory allocations of GPU drivers e=
ither.
>>>
>>> We already had it multiple times that people tried to be clever and i=
ncremented the page reference counter on driver allocated system memory a=
nd were totally surprised that this can result in security issues and dat=
a corruption.
>>>
>>> I seriously hope that this isn't the case here again. As far as I kno=
w XEN already has support for accessing VMAs with VM_PFN or otherwise I d=
on't know how driver allocated system memory access could potentially wor=
k.
>>>
>>> Accessing VRAM is pretty much the same use case as far as I can see.
>>>
>>> Regards,
>>> Christian.
>>
>> The Xen-native approach would be for system memory allocations to
>> be made using the Xen driver and then imported into the virtio-GPU
>> driver via dmabuf.  Is there any chance this could be made to happen?
>=20
> That could be. Adding Pierre-Eric to comment since he knows that use mu=
ch better than I do.
>=20
>> If it's a lost cause, then how much is the memory overhead of pinning
>> everything ever used in a dmabuf?  It should be possible to account
>> pinned host memory against a guest's quota, but if that leads to an
>> unusable system it isn't going to be good.
>=20
> That won't work at all.
>=20
> We have use cases where you *must* migrate a DMA-buf to VRAM or otherwi=
se the GPU can't use it.
>=20
> A simple scanout to a monitor is such an use case for example, that is =
usually not possible from system memory.

Direct scanout isn't a concern here.

>> Is supporting page faults in Xen the only solution that will be viable=

>> long-term, considering the tolerance for very substantial performance
>> overheads compared to native?  AAA gaming isn't the initial goal here.=

>> Qubes OS already supports PCI passthrough for that.
>=20
> We have AAA gaming working on XEN through native context working for qu=
ite a while.
>=20
> Pierre-Eric can tell you more about that.
>=20
> Regards,
> Christian.

I've heard of that, but last I checked it required downstream patches
to Xen, Linux, and QEMU.  I don't know if any of those have been
upstreamed since, but I believe that upstreaming the Xen and Linux
patches (or rewriting them and upstreaming the rewritten version) would
be necessary.  Qubes OS (which I don't work for anymore but still want
to help with this) almost certainly won't be using QEMU for GPU stuff.
--=20
Sincerely,
Demi Marie Obenour (she/her/hers)
--------------tPVaFr0yvTUet01h9p9LgABE
Content-Type: application/pgp-keys; name="OpenPGP_0xB288B55FFF9C22C1.asc"
Content-Disposition: attachment; filename="OpenPGP_0xB288B55FFF9C22C1.asc"
Content-Description: OpenPGP public key
Content-Transfer-Encoding: quoted-printable

-----BEGIN PGP PUBLIC KEY BLOCK-----

xsFNBFp+A0oBEADffj6anl9/BHhUSxGTICeVl2tob7hPDdhHNgPR4C8xlYt5q49y
B+l2nipdaq+4Gk6FZfqC825TKl7eRpUjMriwle4r3R0ydSIGcy4M6eb0IcxmuPYf
bWpr/si88QKgyGSVZ7GeNW1UnzTdhYHuFlk8dBSmB1fzhEYEk0RcJqg4AKoq6/3/
UorR+FaSuVwT7rqzGrTlscnTDlPWgRzrQ3jssesI7sZLm82E3pJSgaUoCdCOlL7M
MPCJwI8JpPlBedRpe9tfVyfu3euTPLPxwcV3L/cfWPGSL4PofBtB8NUU6QwYiQ9H
zx4xOyn67zW73/G0Q2vPPRst8LBDqlxLjbtx/WLR6h3nBc3eyuZ+q62HS1pJ5EvU
T1vjyJ1ySrqtUXWQ4XlZyoEFUfpJxJoN0A9HCxmHGVckzTRl5FMWo8TCniHynNXs
BtDQbabt7aNEOaAJdE7to0AH3T/Bvwzcp0ZJtBk0EM6YeMLtotUut7h2Bkg1b//r
6bTBswMBXVJ5H44Qf0+eKeUg7whSC9qpYOzzrm7+0r9F5u3qF8ZTx55TJc2g656C
9a1P1MYVysLvkLvS4H+crmxA/i08Tc1h+x9RRvqba4lSzZ6/Tmt60DPM5Sc4R0nS
m9BBff0Nm0bSNRS8InXdO1Aq3362QKX2NOwcL5YaStwODNyZUqF7izjK4QARAQAB
zTxEZW1pIE9iZW5vdXIgKElUTCBFbWFpbCBLZXkpIDxhdGhlbmFAaW52aXNpYmxl
dGhpbmdzbGFiLmNvbT7CwY4EEwEIADgWIQR2h02fEza6IlkHHHGyiLVf/5wiwQUC
X6YJvQIbAwULCQgHAgYVCgkICwIEFgIDAQIeAQIXgAAKCRCyiLVf/5wiwWRhD/0Y
R+YYC5Kduv/2LBgQJIygMsFiRHbR4+tWXuTFqgrxxFSlMktZ6gQrQCWe38WnOXkB
oY6n/5lSJdfnuGd2UagZ/9dkaGMUkqt+5WshLFly4BnP7pSsWReKgMP7etRTwn3S
zk1OwFx2lzY1EnnconPLfPBc6rWG2moA6l0WX+3WNR1B1ndqpl2hPSjT2jUCBWDV
rGOUSX7r5f1WgtBeNYnEXPBCUUM51pFGESmfHIXQrqFDA7nBNiIVFDJTmQzuEqIy
Jl67pKNgooij5mKzRhFKHfjLRAH4mmWZlB9UjDStAfFBAoDFHwd1HL5VQCNQdqEc
/9lZDApqWuCPadZN+pGouqLysesIYsNxUhJ7dtWOWHl0vs7/3qkWmWun/2uOJMQh
ra2u8nA9g91FbOobWqjrDd6x3ZJoGQf4zLqjmn/P514gb697788e573WN/MpQ5XI
Fl7aM2d6/GJiq6LC9T2gSUW4rbPBiqOCeiUx7Kd/sVm41p9TOA7fEG4bYddCfDsN
xaQJH6VRK3NOuBUGeL+iQEVF5Xs6Yp+U+jwvv2M5Lel3EqAYo5xXTx4ls0xaxDCu
fudcAh8CMMqx3fguSb7Mi31WlnZpk0fDuWQVNKyDP7lYpwc4nCCGNKCj622ZSocH
AcQmX28L8pJdLYacv9pU3jPy4fHcQYvmTavTqowGnM08RGVtaSBNYXJpZSBPYmVu
b3VyIChsb3ZlciBvZiBjb2RpbmcpIDxkZW1pb2Jlbm91ckBnbWFpbC5jb20+wsF4
BBMBAgAiBQJafgNKAhsDBgsJCAcDAgYVCAIJCgsEFgIDAQIeAQIXgAAKCRCyiLVf
/5wiwYa/EACv8a2+MMou9cSCNoZBQaU+fTmyzft9hUE+0d5W2UY1RY3OsjFIzm9R
/4SVccfsqOYLEo+S0vQMIIIqFEq3FCpXXwPzyimotps05VA8U3Bd7yseojFygOgK
sAMOAee2RCaDDOnoJue01dfZMzzHPO/TVdp3OvnpWipfv5G1Xg96rwbhMLE3tg6N
xwAHa31Bv4/Xq8CJOoIWvx6fcmZQpz01/lSvsYn0KrfEbTKkuUf0vM9JrCTCP2oz
VNN5BYzqaq2M4r+jmSyeXLim922VOWqGkUEQ85BSEemqrRS06IU6NtEMsF8EWt/b
hWjk/9GDKTcnpdJHTrMxTspExBiNrvpI2t+YPU5B/dJJAUxvmhFrbSIbdB8umBZs
I3AMYrEmpAbh5x7jEjoskUC7uN3o9vpg1oCLS2ePDLtAtyBtbHnkA4xGD7ar8mem
xpH9lY/i+sC6CyyIUWcUDnnagKyJP0m9ks0GLsTeOCA0bft2XA6rD6aaCnMUsndT
ctrab42CV5XypjmC4U1rPJ8JQJUh1/3P48/8sMH+3krxpJ06KNWNFaUbaMTGiltZ
7x9DngklSYrX0T+2G4kVXNmjaljwkoLahwLla2gUWwBSyofXdqyhQdwZsp01KXNQ
UCyT/Pg+aDcm/E7OMV3d4lf7g/CSxiX2GSEe6BlhSz+Lmd7ZJ3g32M1ARGVtaSBN
YXJpZSBPYmVub3VyIChJVEwgRW1haWwgS2V5KSA8ZGVtaUBpbnZpc2libGV0aGlu
Z3NsYWIuY29tPsLBjgQTAQgAOBYhBHaHTZ8TNroiWQcccbKItV//nCLBBQJgOEV+
AhsDBQsJCAcCBhUKCQgLAgQWAgMBAh4BAheAAAoJELKItV//nCLBKwoP/1WSnFdv
SAD0g7fD0WlF+oi7ISFT7oqJnchFLOwVHK4Jg0e4hGn1ekWsF3Ha5tFLh4V/7UUu
obYJpTfBAA2CckspYBqLtKGjFxcaqjjpO1I2W/jeNELVtSYuCOZICjdNGw2Hl9yH
KRZiBkqc9u8lQcHDZKq4LIpVJj6ZQV/nxttDX90ax2No1nLLQXFbr5wb465LAPpU
lXwunYDij7xJGye+VUASQh9datye6orZYuJvNo8Tr3mAQxxkfR46LzWgxFCPEAZJ
5P56Nc0IMHdJZj0Uc9+1jxERhOGppp5jlLgYGK7faGB/jTV6LaRQ4Ad+xiqokDWp
mUOZsmA+bMbtPfYjDZBz5mlyHcIRKIFpE1l3Y8F7PhJuzzMUKkJi90CYakCV4x/a
Zs4pzk5E96c2VQx01RIEJ7fzHF7lwFdtfTS4YsLtAbQFsKayqwkGcVv2B1AHeqdo
TMX+cgDvjd1ZganGlWA8Sv9RkNSMchn1hMuTwERTyFTr2dKPnQdA1F480+jUap41
ClXgn227WkCIMrNhQGNyJsnwyzi5wS8rBVRQ3BOTMyvGM07j3axUOYaejEpg7wKi
wTPZGLGH1sz5GljD/916v5+v2xLbOo5606j9dWf5/tAhbPuqrQgWv41wuKDi+dDD
EKkODF7DHes8No+QcHTDyETMn1RYm7t0RKR4zsFNBFp+A0oBEAC9ynZI9LU+uJkM
eEJeJyQ/8VFkCJQPQZEsIGzOTlPnwvVna0AS86n2Z+rK7R/usYs5iJCZ55/JISWd
8xD57ue0eB47bcJvVqGlObI2DEG8TwaW0O0duRhDgzMEL4t1KdRAepIESBEA/iPp
I4gfUbVEIEQuqdqQyO4GAe+MkD0Hy5JH/0qgFmbaSegNTdQg5iqYjRZ3ttiswalq
l1/iSyv1WYeC1OAs+2BLOAT2NEggSiVOtxEfgewsQtCWi8H1SoirakIfo45Hz0tk
/Ad9ZWh2PvOGt97Ka85o4TLJxgJJqGEnqcFUZnJJriwoaRIS8N2C8/nEM53jb1sH
0gYddMU3QxY7dYNLIUrRKQeNkF30dK7V6JRH7pleRlf+wQcNfRAIUrNlatj9Txwi
vQrKnC9aIFFHEy/0mAgtrQShcMRmMgVlRoOA5B8RTulRLCmkafvwuhs6dCxN0GNA
ORIVVFxjx9Vn7OqYPgwiofZ6SbEl0hgPyWBQvE85klFLZLoj7p+joDY1XNQztmfA
rnJ9x+YV4igjWImINAZSlmEcYtd+xy3Li/8oeYDAqrsnrOjb+WvGhCykJk4urBog
2LNtcyCjkTs7F+WeXGUo0NDhbd3Z6AyFfqeF7uJ3D5hlpX2nI9no/ugPrrTVoVZA
grrnNz0iZG2DVx46x913pVKHl5mlYQARAQABwsFfBBgBAgAJBQJafgNKAhsMAAoJ
ELKItV//nCLBwNIP/AiIHE8boIqReFQyaMzxq6lE4YZCZNj65B/nkDOvodSiwfwj
jVVE2V3iEzxMHbgyTCGA67+Bo/d5aQGjgn0TPtsGzelyQHipaUzEyrsceUGWYoKX
YyVWKEfyh0cDfnd9diAm3VeNqchtcMpoehETH8frRHnJdBcjf112PzQSdKC6kqU0
Q196c4Vp5HDOQfNiDnTf7gZSj0BraHOByy9LEDCLhQiCmr+2E0rW4tBtDAn2HkT9
uf32ZGqJCn1O+2uVfFhGu6vPE5qkqrbSE8TG+03H8ecU2q50zgHWPdHMOBvy3Ehz
fAh2VmOSTcRK+tSUe/u3wdLRDPwv/DTzGI36Kgky9MsDC5gpIwNbOJP2G/q1wT1o
Gkw4IXfWv2ufWiXqJ+k7HEi2N1sree7Dy9KBCqb+ca1vFhYPDJfhP75I/VnzHVss
Z/rYZ9+51yDoUABoNdJNSGUYl+Yh9Pw9pE3Kt4EFzUlFZWbE4xKL/NPno+z4J9aW
emLLszcYz/u3XnbOvUSQHSrmfOzX3cV4yfmjM5lewgSstoxGyTx2M8enslgdXhPt
hZlDnTnOT+C+OTsh8+m5tos8HQjaPM01MKBiAqdPgksm1wu2DrrwUi6ChRVTUBcj
6+/9IJ81H2P2gJk3Ls3AVIxIffLoY34E+MYSfkEjBz0E8CLOcAw7JIwAaeBTzsFN
BGbyLVgBEACqClxh50hmBepTSVlan6EBq3OAoxhrAhWZYEwN78k+ENhK68KhqC5R
IsHzlL7QHW1gmfVBQZ63GnWiraM6wOJqFTL4ZWvRslga9u28FJ5XyK860mZLgYhK
9BzoUk4s+dat9jVUbq6LpQ1Ot5I9vrdzo2p1jtQ8h9WCIiFxSYy8s8pZ3hHh5T64
GIj1m/kY7lG3VIdUgoNiREGf/iOMjUFjwwE9ZoJ26j9p7p1U+TkKeF6wgswEB1T3
J8KCAtvmRtqJDq558IU5jhg5fgN+xHB8cgvUWulgK9FIF9oFxcuxtaf/juhHWKMO
RtL0bHfNdXoBdpUDZE+mLBUAxF6KSsRrvx6AQyJs7VjgXJDtQVWvH0PUmTrEswgb
49nNU+dLLZQAZagxqnZ9Dp5l6GqaGZCHERJcLmdY/EmMzSf5YazJ6c0vO8rdW27M
kn73qcWAplQn5mOXaqbfzWkAUPyUXppuRHfrjxTDz3GyJJVOeMmMrTxH4uCaGpOX
Z8tN6829J1roGw4oKDRUQsaBAeEDqizXMPRc+6U9vI5FXzbAsb+8lKW65G7JWHym
YPOGUt2hK4DdTA1PmVo0DxH00eWWeKxqvmGyX+Dhcg+5e191rPsMRGsDlH6KihI6
+3JIuc0y6ngdjcp6aalbuvPIGFrCRx3tnRtNc7He6cBWQoH9RPwluwARAQABwsOs
BBgBCgAgFiEEdodNnxM2uiJZBxxxsoi1X/+cIsEFAmbyLVgCGwICQAkQsoi1X/+c
IsHBdCAEGQEKAB0WIQSilC2pUlbVp66j3+yzNoc6synyUwUCZvItWAAKCRCzNoc6
synyU85gD/0T1QDtPhovkGwoqv4jUbEMMvpeYQf+oWgm/TjWPeLwdjl7AtY0G9Ml
ZoyGniYkoHi37Gnn/ShLT3B5vtyI58ap2+SSa8SnGftdAKRLiWFWCiAEklm9FRk8
N3hwxhmSFF1KR/AIDS4g+HIsZn7YEMubBSgLlZZ9zHl4O4vwuXlREBEW97iL/FSt
VownU2V39t7PtFvGZNk+DJH7eLO3jmNRYB0PL4JOyyda3NH/J92iwrFmjFWWmmWb
/Xz8l9DIs+Z59pRCVTTwbBEZhcUc7rVMCcIYL+q1WxBG2e6lMn15OQJ5WfiE6E0I
sGirAEDnXWx92JNGx5l+mMpdpsWhBZ5iGTtttZesibNkQfd48/eCgFi4cxJUC4PT
UQwfD9AMgzwSTGJrkI5XGy+XqxwOjL8UA0iIrtTpMh49zw46uV6kwFQCgkf32jZM
OLwLTNSzclbnA7GRd8tKwezQ/XqeK3dal2n+cOr+o+Eka7yGmGWNUqFbIe8cjj9T
JeF3mgOCmZOwMI+wIcQYRSf+e5VTMO6TNWH5BI3vqeHSt7HkYuPlHT0pGum88d4a
pWqhulH4rUhEMtirX1hYx8Q4HlUOQqLtxzmwOYWkhl1C+yPObAvUDNiHCLf9w28n
uihgEkzHt9J4VKYulyJM9fe3ENcyU6rpXD7iANQqcr87ogKXFxknZ97uEACvSucc
RbnnAgRqZ7GDzgoBerJ2zrmhLkeREZ08iz1zze1JgyW3HEwdr2UbyAuqvSADCSUU
GN0vtQHsPzWl8onRc7lOPqPDF8OO+UfN9NAfA4wl3QyChD1GXl9rwKQOkbvdlYFV
UFx9u86LNi4ssTmU8p9NtHIGpz1SYMVYNoYy9NU7EVqypGMguDCL7gJt6GUmA0sw
p+YCroXiwL2BJ7RwRqTpgQuFL1gShkA17D5jK4mDPEetq1d8kz9rQYvAR/sTKBsR
ImC3xSfn8zpWoNTTB6lnwyP5Ng1bu6esS7+SpYprFTe7ZqGZF6xhvBPf1Ldi9UAm
U2xPN1/eeWxEa2kusidmFKPmN8lcT4miiAvwGxEnY7Oww9CgZlUB+LP4dl5VPjEt
sFeAhrgxLdpVTjPRRwTd9VQF3/XYl83j5wySIQKIPXgT3sG3ngAhDhC8I8GpM36r
8WJJ3x2yVzyJUbBPO0GBhWE2xPNIfhxVoU4cGGhpFqz7dPKSTRDGq++MrFgKKGpI
ZwT3CPTSSKc7ySndEXWkOYArDIdtyxdE1p5/c3aoz4utzUU7NDHQ+vVIwlnZSMiZ
jek2IJP3SZ+COOIHCVxpUaZ4lnzWT4eDqABhMLpIzw6NmGfg+kLBJhouqz81WITr
EtJuZYM5blWncBOJCoWMnBEcTEo/viU3GgcVRw=3D=3D
=3Dx94R
-----END PGP PUBLIC KEY BLOCK-----

--------------tPVaFr0yvTUet01h9p9LgABE--

--------------h9T0I0ygGOGJXLDPzJnCSWj0--

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

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

iQIzBAEBCgAdFiEEopQtqVJW1aeuo9/sszaHOrMp8lMFAmnmepoACgkQszaHOrMp
8lOe5w/+KjpGlyI9G3fHlW7AUGjL8ojXIHalSkjbdJ1ErYaySIUYiJ7iBnotUcW+
nOdIAZv6EoqBQrrieYY88OhX2t5Aqu8b00Fviwb/nWFklsbEMRTIahvWNJJokeV/
poveO3O2A7dnwtoyZiLXXpDzQ2aPBX9GFOcamqnO2chA3AjftpJtjrfZJYPmJImE
8/SVjJAKuCTM0/Mh9cxBgwYrjVvXs0rfWG1ZzOD1FAVWd/tlDnMwmvC9/EFSCXh2
AXCjM+YJEscggLsV2mXlZ3oLaUShUqkmLCMNSvdEzCDPFdYU7O3d5axcuP19g6VD
BirBlfddKETzxiuxv15v5jxC7vuVSlMRBDdFkA8s8/GAvQ2ZPo+3FHOVlCZ+rKUR
bHLLaxGmXTGG7JGQe33SgaHA11yP2aHkEhMVyqQ0CmbhgE/In1XDh1D27TcsB+Zs
fsEU2dmdafcHRkbTY8LHBLyYjvFt4Q87ml0C5JIzJmZitDo0CoeR5I9mQjjRqzgV
fpappRRkPuGZN33R2pD51ZmbfXHeefWxtaEBb+M7lvXEje2I0huUxUn7L2huDWjQ
KEnHt4qqS1kRzqhSgQJC56a5MjtjnS0cOVYgzvQtxLUFMh1IAwtefJ2h9LuQKbWl
F+tpIy9kl2RI4YA4oJ+MUZDdsrNiyLM+M6FD3XeHpRn6HTO/FQI=
=Uhuz
-----END PGP SIGNATURE-----

--------------oLcefsVzkSfrb6uaB7hzzgLl--


From xen-devel-bounces@lists.xenproject.org Mon Apr 20 20:25:29 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 20 Apr 2026 20:25:29 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1286482.1567595 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wEvBM-0003TB-JP; Mon, 20 Apr 2026 20:25:24 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1286482.1567595; Mon, 20 Apr 2026 20:25: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 1wEvBM-0003OF-7l; Mon, 20 Apr 2026 20:25:24 +0000
Received: by outflank-mailman (input) for mailman id 1286482;
 Mon, 20 Apr 2026 19:50:58 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <Rose.Spangler@purelymail.com>) id 1wEue2-0006It-4i
 for xen-devel@lists.xenproject.org; Mon, 20 Apr 2026 19:50:58 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wEue1-00EWC2-Hl
 for xen-devel@lists.xenproject.org; Mon, 20 Apr 2026 21:50:57 +0200
Received: from [10.42.69.8] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <Rose.Spangler@purelymail.com>)
 id 69e6835b-5cb7-0a2a0a5109dd-0a2a4508c320-32
 for <xen-devel@lists.xenproject.org>; Mon, 20 Apr 2026 21:50:57 +0200
Received: from [34.202.193.197] (helo=sendmail.purelymail.com)
 by tlsNG-c1860d.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.1)
 (envelope-from <Rose.Spangler@purelymail.com>)
 id 69e683a0-63b5-0a2a45080019-22cac1c5ec94-3
 for <xen-devel@lists.xenproject.org>; Mon, 20 Apr 2026 21:50:57 +0200
Received: by smtp.purelymail.com (Purelymail SMTP) with ESMTPSA id -306608446; 
 (version=TLSv1.3 cipher=TLS_AES_256_GCM_SHA384);
 Mon, 20 Apr 2026 19:50: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=purelymail1 header.d=purelymail.com header.i="@purelymail.com" header.h="Feedback-ID:Received:From:To:Subject:Date"
DKIM-Signature: a=rsa-sha256; b=PJC6vAx39QYhhYufZEnwEGLPQM6gOCrIWNOV40YBgzgMKXw1ddLQv7aEQcW4Br8sfz1QckVvYSqBT3BbimUkqExezwv7bX14ArzGrsqSzX+CoJpzXkPgUaRHWKLw2YGj+lC/mZtYBkRwezUkaBlyCrSVdoIO5pkVDSvkRFDAEcCQwfWdePjGKfbx907cDTrT6zzhc3KClP6QIwudqs5rLF5+kdfrR+UDmwV7s1AwBdUVAm0sP3CRoOdyh9w9Tcik5i2pmr41aPooN7/HL1uDJ52ABCrMCY4IDtyBMDULt/Vd+1QxNTvCRmGjLOqr/LoKmRKzjEEBlbJvvgDUEQn8bA==; s=purelymail1; d=purelymail.com; v=1; bh=BL+nVHDN3Ay2hLoHiDXEh2wB+DvkjUQnXBWbZIQGO7E=; h=Feedback-ID:Received:From:To:Subject:Date;
Feedback-ID: 685805:22403:null:purelymail
X-Pm-Original-To: xen-devel@lists.xenproject.org
From: Rose.Spangler@purelymail.com
To: xen-devel@lists.xenproject.org
Cc: Rose Spangler <Rose.Spangler@elektrobit.com>,
	Jan Beulich <jbeulich@suse.com>,
	Andrew Cooper <andrew.cooper3@citrix.com>,
	=?UTF-8?q?Roger=20Pau=20Monn=C3=A9?= <roger.pau@citrix.com>,
	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: [RFC PATCH v6 14/43] altp2m: Move altp2m_{init,teardown} to common code
Date: Mon, 20 Apr 2026 15:50:13 -0400
Message-Id: <20260420195042.207624-15-Rose.Spangler@purelymail.com>
X-Mailer: git-send-email 2.34.1
In-Reply-To: <20260420195042.207624-1-Rose.Spangler@purelymail.com>
References: <20260420195042.207624-1-Rose.Spangler@purelymail.com>
MIME-Version: 1.0
Content-Transfer-Encoding: quoted-printable
X-MIME-Autoconverted: from 8bit to quoted-printable by Purelymail
Content-Type: text/plain; charset=UTF-8
X-purgate-ID: tlsNG-c1860d/1776714657-C3D7BDB1-695BFE6A/0/0
X-purgate-type: clean
X-purgate-size: 6140

From: Rose Spangler <Rose.Spangler@elektrobit.com>

This commit moves the init and teardown routines into common code. The
functions are gated by CONFIG_X86, so there is effectively no difference
despite common code normally being compiled for ARM.

This commit contains only renames/code movement, and no functional change i=
s intended.

This is commit 3/12 of the altp2m_init/altp2m_teardown routines phase.

Signed-off-by: Rose Spangler <Rose.Spangler@elektrobit.com>
---
v6: Introduced this patch.
---
 xen/arch/x86/include/asm/altp2m.h |  8 -----
 xen/arch/x86/mm/altp2m.c          | 45 ----------------------------
 xen/arch/x86/mm/p2m-basic.c       |  1 +
 xen/common/altp2m.c               | 49 +++++++++++++++++++++++++++++++
 xen/include/xen/altp2m.h          | 13 ++++++++
 5 files changed, 63 insertions(+), 53 deletions(-)

diff --git a/xen/arch/x86/include/asm/altp2m.h b/xen/arch/x86/include/asm/a=
ltp2m.h
index 7cff40beb7c6..13017525a62f 100644
--- a/xen/arch/x86/include/asm/altp2m.h
+++ b/xen/arch/x86/include/asm/altp2m.h
@@ -97,12 +97,6 @@ static inline bool altp2m_set_altp2m(struct vcpu *v, uns=
igned int idx)
     return true;
 }
=20
-/* Initialize altp2m views */
-int altp2m_init(struct domain *d);
-
-/* Free altp2m views */
-void altp2m_teardown(struct domain *d);
-
 /* Switch alternate p2m for a single vcpu */
 bool altp2m_switch_vcpu_by_id(struct vcpu *v, unsigned int idx);
=20
@@ -184,8 +178,6 @@ static inline int _altp2m_get_effective_entry(struct p2=
m_domain *ap2m,
         _altp2m_get_effective_entry(ap2m, gfn, mfn, t, a)
=20
 /* Only declaration is needed. DCE will optimise it out when linking. */
-int altp2m_init(struct domain *d);
-void altp2m_teardown(struct domain *d);
 struct p2m_domain *altp2m_get_altp2m(struct vcpu *v);
 bool altp2m_set_altp2m(struct vcpu *v, unsigned int idx);
 uint16_t altp2m_vcpu_idx(const struct vcpu *v);
diff --git a/xen/arch/x86/mm/altp2m.c b/xen/arch/x86/mm/altp2m.c
index 371bf3f0b8d4..46374373848d 100644
--- a/xen/arch/x86/mm/altp2m.c
+++ b/xen/arch/x86/mm/altp2m.c
@@ -123,51 +123,6 @@ void altp2m_vcpu_disable_ve(struct vcpu *v)
     }
 }
=20
-int altp2m_init(struct domain *d)
-{
-    unsigned int i;
-    struct p2m_domain *p2m;
-    struct p2m_domain *hostp2m =3D p2m_get_hostp2m(d);
-
-    altp2m_lock_init(d);
-    d->altp2m_p2m =3D xvzalloc_array(struct p2m_domain *, d->nr_altp2m);
-
-    if ( !d->altp2m_p2m )
-        return -ENOMEM;
-
-    for ( i =3D 0; i < d->nr_altp2m; i++ )
-    {
-        d->altp2m_p2m[i] =3D p2m =3D p2m_init_one(d);
-        if ( p2m =3D=3D NULL )
-        {
-            altp2m_teardown(d);
-            return -ENOMEM;
-        }
-        p2m->p2m_class =3D p2m_alternate;
-        p2m->access_required =3D hostp2m->access_required;
-        _atomic_set(&p2m->active_vcpus, 0);
-    }
-
-    return 0;
-}
-
-void altp2m_teardown(struct domain *d)
-{
-    unsigned int i;
-    struct p2m_domain *p2m;
-
-    for ( i =3D 0; i < d->nr_altp2m; i++ )
-    {
-        if ( !d->altp2m_p2m[i] )
-            continue;
-        p2m =3D d->altp2m_p2m[i];
-        d->altp2m_p2m[i] =3D NULL;
-        p2m_free_one(p2m);
-    }
-
-    XVFREE(d->altp2m_p2m);
-}
-
 int altp2m_get_effective_entry(struct p2m_domain *ap2m, gfn_t gfn, mfn_t *=
mfn,
                                p2m_type_t *t, p2m_access_t *a,
                                bool prepopulate)
diff --git a/xen/arch/x86/mm/p2m-basic.c b/xen/arch/x86/mm/p2m-basic.c
index 433e7d08b78f..67cef5d2b6ef 100644
--- a/xen/arch/x86/mm/p2m-basic.c
+++ b/xen/arch/x86/mm/p2m-basic.c
@@ -11,6 +11,7 @@
  * Parts based on earlier work by Michael A Fetterman, Ian Pratt et al.
  */
=20
+#include <xen/altp2m.h>
 #include <xen/event.h>
 #include <xen/types.h>
 #include <asm/altp2m.h>
diff --git a/xen/common/altp2m.c b/xen/common/altp2m.c
index 3a3283f0860a..cda653b713f0 100644
--- a/xen/common/altp2m.c
+++ b/xen/common/altp2m.c
@@ -2,8 +2,10 @@
 #include <xen/altp2m.h>
 #include <xen/guest_access.h>
 #include <xen/vm_event.h>
+#include <xen/xvmalloc.h>
=20
 #include <asm/altp2m.h>
+#include <asm/p2m.h>
=20
 #include <public/hvm/params.h>
=20
@@ -13,6 +15,53 @@
 #include <asm/hvm/nestedhvm.h>
 #endif
=20
+#if CONFIG_X86
+int altp2m_init(struct domain *d)
+{
+    unsigned int i;
+    struct p2m_domain *p2m;
+    struct p2m_domain *hostp2m =3D p2m_get_hostp2m(d);
+
+    altp2m_lock_init(d);
+    d->altp2m_p2m =3D xvzalloc_array(struct p2m_domain *, d->nr_altp2m);
+
+    if ( !d->altp2m_p2m )
+        return -ENOMEM;
+
+    for ( i =3D 0; i < d->nr_altp2m; i++ )
+    {
+        d->altp2m_p2m[i] =3D p2m =3D p2m_init_one(d);
+        if ( p2m =3D=3D NULL )
+        {
+            altp2m_teardown(d);
+            return -ENOMEM;
+        }
+        p2m->p2m_class =3D p2m_alternate;
+        p2m->access_required =3D hostp2m->access_required;
+        _atomic_set(&p2m->active_vcpus, 0);
+    }
+
+    return 0;
+}
+
+void altp2m_teardown(struct domain *d)
+{
+    unsigned int i;
+    struct p2m_domain *p2m;
+
+    for ( i =3D 0; i < d->nr_altp2m; i++ )
+    {
+        if ( !d->altp2m_p2m[i] )
+            continue;
+        p2m =3D d->altp2m_p2m[i];
+        d->altp2m_p2m[i] =3D NULL;
+        p2m_free_one(p2m);
+    }
+
+    XVFREE(d->altp2m_p2m);
+}
+#endif /* CONFIG_X86 */
+
 /*
  * altp2m operations are envisioned as being used in several different
  * modes:
diff --git a/xen/include/xen/altp2m.h b/xen/include/xen/altp2m.h
index be627152668a..85ef22c2b29e 100644
--- a/xen/include/xen/altp2m.h
+++ b/xen/include/xen/altp2m.h
@@ -8,6 +8,19 @@
=20
 #include <public/hvm/hvm_op.h>
=20
+/*
+ * Common alternate p2m declarations that need to be visible
+ * regardless of CONFIG_ALTP2M
+ */
+
+#ifdef CONFIG_X86
+/* Initialize altp2m views */
+int altp2m_init(struct domain *d);
+
+/* Free altp2m views */
+void altp2m_teardown(struct domain *d);
+#endif
+
 #ifdef CONFIG_ALTP2M
=20
 /* Alternate p2m HVM on/off per domain */
--=20
2.34.1



From xen-devel-bounces@lists.xenproject.org Mon Apr 20 20:25:29 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 20 Apr 2026 20:25:29 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1286484.1567616 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wEvBO-0003uH-0f; Mon, 20 Apr 2026 20:25:26 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1286484.1567616; Mon, 20 Apr 2026 20:25: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 1wEvBN-0003nl-Ep; Mon, 20 Apr 2026 20:25:25 +0000
Received: by outflank-mailman (input) for mailman id 1286484;
 Mon, 20 Apr 2026 19:50:58 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <Rose.Spangler@purelymail.com>) id 1wEue2-0006Iu-5y
 for xen-devel@lists.xenproject.org; Mon, 20 Apr 2026 19:50:58 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wEue1-00C1UM-J9
 for xen-devel@lists.xenproject.org; Mon, 20 Apr 2026 21:50:57 +0200
Received: from [10.42.69.4] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <Rose.Spangler@purelymail.com>)
 id 69e6836e-e002-0a2a0a5209dd-0a2a45049232-14
 for <xen-devel@lists.xenproject.org>; Mon, 20 Apr 2026 21:50:57 +0200
Received: from [34.202.193.197] (helo=sendmail.purelymail.com)
 by tlsNG-ebf023.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.1)
 (envelope-from <Rose.Spangler@purelymail.com>)
 id 69e683a0-1dec-0a2a45040019-22cac1c5d21a-3
 for <xen-devel@lists.xenproject.org>; Mon, 20 Apr 2026 21:50:57 +0200
Received: by smtp.purelymail.com (Purelymail SMTP) with ESMTPSA id -306608446; 
 (version=TLSv1.3 cipher=TLS_AES_256_GCM_SHA384);
 Mon, 20 Apr 2026 19:50: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=purelymail1 header.d=purelymail.com header.i="@purelymail.com" header.h="Feedback-ID:Received:From:To:Subject:Date"
DKIM-Signature: a=rsa-sha256; b=nh/3b739kWlXbEwQ2vP9czBWHaEbT/ciL86qmTDx6PuvJ+UpniIuY8UJrFKr2PwwUhUiPGSSEczTs41M23Zlfs4niXXVQbror/q+RTI2hk/T2WOqGQmNYOyRzx460DUaErPhDvSeTwD43H62YE9iDKbdPE1iQ1eUGlPgne5bznGbcaUlOw0kezmUZ0odpV5RwLDCTktOx7pXJUacyjq1o5Tj4ssUrap4R9ALb/QUn4U0S4XcU/+xtwc+wsI4Fig2YZN930DTmWfr7zNNe4AyZkexb0DW7KjSjoFoLmR5APvSldDgzZVH6FMzHiuP559t41sK5tUViqDbh7Am/1EkaQ==; s=purelymail1; d=purelymail.com; v=1; bh=2CcuIQJepfXS1zs62wK057xIURAv8ZCI9/irpntDfIw=; h=Feedback-ID:Received:From:To:Subject:Date;
Feedback-ID: 685805:22403:null:purelymail
X-Pm-Original-To: xen-devel@lists.xenproject.org
From: Rose.Spangler@purelymail.com
To: xen-devel@lists.xenproject.org
Cc: Rose Spangler <Rose.Spangler@elektrobit.com>,
	Jan Beulich <jbeulich@suse.com>,
	Andrew Cooper <andrew.cooper3@citrix.com>,
	=?UTF-8?q?Roger=20Pau=20Monn=C3=A9?= <roger.pau@citrix.com>,
	Teddy Astie <teddy.astie@vates.tech>
Subject: [RFC PATCH v6 13/43] x86/altp2m: Add lock functions accessible from common code
Date: Mon, 20 Apr 2026 15:50:12 -0400
Message-Id: <20260420195042.207624-14-Rose.Spangler@purelymail.com>
X-Mailer: git-send-email 2.34.1
In-Reply-To: <20260420195042.207624-1-Rose.Spangler@purelymail.com>
References: <20260420195042.207624-1-Rose.Spangler@purelymail.com>
MIME-Version: 1.0
Content-Transfer-Encoding: quoted-printable
X-MIME-Autoconverted: from 8bit to quoted-printable by Purelymail
Content-Type: text/plain; charset=UTF-8
X-purgate-ID: tlsNG-ebf023/1776714657-2A7613FF-26D3FBF8/0/0
X-purgate-type: clean
X-purgate-size: 6637

From: Rose Spangler <Rose.Spangler@elektrobit.com>

This commit adds three altp2m_lock functions which wrap the corresponding
altp2m_list_lock functions present in "mm-locks.h". The "mm-locks.h" file
is only accessible in x86 code. In order to make altp2m common across
architectures, it must be possible to acquire the altp2m lock without
including an x86-specific header file.

These functions cannot be static inline like their "mm-locks.h"
counterparts, since "mm-locks.h" is only included in source files, not
header files. Therefore, these functions might introduce a slight function
call overhead over their "mm-locks.h" counterparts. However, the altp2m
lock is mostly used in init/teardown routines and HVMOP implementations.
For these cases, the altp2m_list_lock functions have been switched out for
the altp2m_lock functions so they can be later migrated to common code. The
only other function using the altp2m lock is altp2m_get_or_propagate, which
is in the hot path of the page fault handler, so the altp2m_list_lock calls
have not been replaced for that function.

This is commit 2/12 of the altp2m_init/altp2m_teardown routines phase.

Signed-off-by: Rose Spangler <Rose.Spangler@elektrobit.com>
---
v6: Introduced this patch.

    This seems like the solution which makes the most sense here, but it
    would be nicer if it could be static inline. I'm also not sure if the
    "mm-locks.h" functions are really supposed to be exposed outside of
    their translation unit like this, so feedback on this is appreciated.
---
 xen/arch/x86/include/asm/altp2m.h |  4 +++
 xen/arch/x86/mm/altp2m.c          | 42 ++++++++++++++++++++-----------
 2 files changed, 31 insertions(+), 15 deletions(-)

diff --git a/xen/arch/x86/include/asm/altp2m.h b/xen/arch/x86/include/asm/a=
ltp2m.h
index 9c58a396448d..7cff40beb7c6 100644
--- a/xen/arch/x86/include/asm/altp2m.h
+++ b/xen/arch/x86/include/asm/altp2m.h
@@ -156,6 +156,10 @@ int p2m_set_suppress_ve_multi(struct domain *d,
 int p2m_get_suppress_ve(struct domain *d, gfn_t gfn, bool *suppress_ve,
                         unsigned int altp2m_idx);
=20
+void altp2m_lock_init(struct domain *d);
+void altp2m_lock(struct domain *d);
+void altp2m_unlock(struct domain *d);
+
 #else
=20
 static inline bool altp2m_is_eptp_valid(const struct domain *d,
diff --git a/xen/arch/x86/mm/altp2m.c b/xen/arch/x86/mm/altp2m.c
index 2dc84b76b8c1..371bf3f0b8d4 100644
--- a/xen/arch/x86/mm/altp2m.c
+++ b/xen/arch/x86/mm/altp2m.c
@@ -129,7 +129,7 @@ int altp2m_init(struct domain *d)
     struct p2m_domain *p2m;
     struct p2m_domain *hostp2m =3D p2m_get_hostp2m(d);
=20
-    mm_lock_init(&d->arch.altp2m_list_lock);
+    altp2m_lock_init(d);
     d->altp2m_p2m =3D xvzalloc_array(struct p2m_domain *, d->nr_altp2m);
=20
     if ( !d->altp2m_p2m )
@@ -221,7 +221,7 @@ bool altp2m_switch_vcpu_by_id(struct vcpu *v, unsigned =
int idx)
     if ( idx >=3D d->nr_altp2m )
         return rc;
=20
-    altp2m_list_lock(d);
+    altp2m_lock(d);
=20
     if ( d->arch.altp2m_eptp[idx] !=3D mfn_x(INVALID_MFN) )
     {
@@ -230,7 +230,7 @@ bool altp2m_switch_vcpu_by_id(struct vcpu *v, unsigned =
int idx)
         rc =3D 1;
     }
=20
-    altp2m_list_unlock(d);
+    altp2m_unlock(d);
     return rc;
 }
=20
@@ -348,7 +348,7 @@ void altp2m_flush(struct domain *d)
 {
     unsigned int i;
=20
-    altp2m_list_lock(d);
+    altp2m_lock(d);
=20
     for ( i =3D 0; i < d->nr_altp2m; i++ )
     {
@@ -357,7 +357,7 @@ void altp2m_flush(struct domain *d)
         d->arch.altp2m_visible_eptp[i] =3D mfn_x(INVALID_MFN);
     }
=20
-    altp2m_list_unlock(d);
+    altp2m_unlock(d);
 }
=20
 static int altp2m_activate_altp2m(struct domain *d, unsigned int idx,
@@ -409,13 +409,13 @@ int altp2m_init_by_id(struct domain *d, unsigned int =
idx)
     if ( idx >=3D d->nr_altp2m )
         return rc;
=20
-    altp2m_list_lock(d);
+    altp2m_lock(d);
=20
     if ( d->arch.altp2m_eptp[array_index_nospec(idx, MAX_EPTP)] =3D=3D
          mfn_x(INVALID_MFN) )
         rc =3D altp2m_activate_altp2m(d, idx, hostp2m->default_access);
=20
-    altp2m_list_unlock(d);
+    altp2m_unlock(d);
     return rc;
 }
=20
@@ -431,7 +431,7 @@ int altp2m_init_next_available(struct domain *d, uint16=
_t *idx,
          !xenmem_access_to_p2m_access(hostp2m, hvmmem_default_access, &a) =
)
         return rc;
=20
-    altp2m_list_lock(d);
+    altp2m_lock(d);
=20
     for ( i =3D 0; i < d->nr_altp2m; i++ )
     {
@@ -446,7 +446,7 @@ int altp2m_init_next_available(struct domain *d, uint16=
_t *idx,
         break;
     }
=20
-    altp2m_list_unlock(d);
+    altp2m_unlock(d);
     return rc;
 }
=20
@@ -463,7 +463,7 @@ int altp2m_destroy_by_id(struct domain *d, unsigned int=
 idx)
         return rc;
=20
     rc =3D -EBUSY;
-    altp2m_list_lock(d);
+    altp2m_lock(d);
=20
     if ( d->arch.altp2m_eptp[array_index_nospec(idx, MAX_EPTP)] !=3D
          mfn_x(INVALID_MFN) )
@@ -481,7 +481,7 @@ int altp2m_destroy_by_id(struct domain *d, unsigned int=
 idx)
         }
     }
=20
-    altp2m_list_unlock(d);
+    altp2m_unlock(d);
=20
     domain_unpause_except_self(d);
=20
@@ -501,7 +501,7 @@ int altp2m_switch_domain_altp2m_by_id(struct domain *d,=
 unsigned int idx)
         return rc;
=20
     rc =3D -EINVAL;
-    altp2m_list_lock(d);
+    altp2m_lock(d);
=20
     if ( d->arch.altp2m_visible_eptp[idx] !=3D mfn_x(INVALID_MFN) )
     {
@@ -512,7 +512,7 @@ int altp2m_switch_domain_altp2m_by_id(struct domain *d,=
 unsigned int idx)
         rc =3D 0;
     }
=20
-    altp2m_list_unlock(d);
+    altp2m_unlock(d);
=20
     domain_unpause_except_self(d);
=20
@@ -773,7 +773,7 @@ int altp2m_set_view_visibility(struct domain *d, unsign=
ed int altp2m_idx,
 {
     int rc =3D 0;
=20
-    altp2m_list_lock(d);
+    altp2m_lock(d);
=20
     if ( !altp2m_is_eptp_valid(d, altp2m_idx) )
         rc =3D -EINVAL;
@@ -784,11 +784,23 @@ int altp2m_set_view_visibility(struct domain *d, unsi=
gned int altp2m_idx,
         d->arch.altp2m_visible_eptp[array_index_nospec(altp2m_idx, MAX_EPT=
P)] =3D
             mfn_x(INVALID_MFN);
=20
-    altp2m_list_unlock(d);
+    altp2m_unlock(d);
=20
     return rc;
 }
=20
+void altp2m_lock_init(struct domain *d) {
+    mm_lock_init(&d->arch.altp2m_list_lock);
+}
+
+void altp2m_lock(struct domain *d) {
+    altp2m_list_lock(d);
+}
+
+void altp2m_unlock(struct domain *d) {
+    altp2m_list_unlock(d);
+}
+
 /*
  * Local variables:
  * mode: C
--=20
2.34.1



From xen-devel-bounces@lists.xenproject.org Mon Apr 20 20:25:29 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 20 Apr 2026 20:25:29 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1286481.1567589 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wEvBM-0003DE-0J; Mon, 20 Apr 2026 20:25:24 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1286481.1567589; Mon, 20 Apr 2026 20: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 1wEvBL-000395-Iv; Mon, 20 Apr 2026 20:25:23 +0000
Received: by outflank-mailman (input) for mailman id 1286481;
 Mon, 20 Apr 2026 19:50:58 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <Rose.Spangler@purelymail.com>) id 1wEue2-0006Io-1u
 for xen-devel@lists.xenproject.org; Mon, 20 Apr 2026 19:50:58 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wEue1-009YnP-El
 for xen-devel@lists.xenproject.org; Mon, 20 Apr 2026 21:50:57 +0200
Received: from [10.42.69.12] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <Rose.Spangler@purelymail.com>)
 id 69e68397-bab6-0a2a0a5309dd-0a2a450c91e4-10
 for <xen-devel@lists.xenproject.org>; Mon, 20 Apr 2026 21:50:57 +0200
Received: from [34.202.193.197] (helo=sendmail.purelymail.com)
 by tlsNG-d25034.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.1)
 (envelope-from <Rose.Spangler@purelymail.com>)
 id 69e683a0-62f1-0a2a450c0019-22cac1c58764-3
 for <xen-devel@lists.xenproject.org>; Mon, 20 Apr 2026 21:50:57 +0200
Received: by smtp.purelymail.com (Purelymail SMTP) with ESMTPSA id -306608446; 
 (version=TLSv1.3 cipher=TLS_AES_256_GCM_SHA384);
 Mon, 20 Apr 2026 19:50:51 +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=purelymail1 header.d=purelymail.com header.i="@purelymail.com" header.h="Feedback-ID:Received:From:To:Subject:Date"
DKIM-Signature: a=rsa-sha256; b=hLkAmez4qADkQgPiLxVKCyXQHyZXHCXUDQuAtPsEcn5oyyyULtkq23OwHCcGeenyubTn+eD+u8YaFbQcZzR2Op52LtyFZVSLGazBkvPj/t4WhHJ4A7j25n82nN5uAT2hRG56/sZMvRJmjIgFkXZKt7iZ89fQhiLbzI4lW0MU2aev83BQ4cyZ5vvKxXKJm+S41L3wNlj6lVB0pPvMXp23xjH52MXcQQky5zIjIeDGI1QZecNLywtfbkcWe4FjDhyte6PSNIsTftOQONAdu1T9E9V6RB2oS1vO5tGNK6GIQMmvQ1Ine5iS/K6LiIKmBx4WS8zxewRRE09TbK2GuJTW/Q==; s=purelymail1; d=purelymail.com; v=1; bh=v+7IFQCHZ3Oct1VjiErGm8hGsBkg24/rQNxOY8ewkgI=; h=Feedback-ID:Received:From:To:Subject:Date;
Feedback-ID: 685805:22403:null:purelymail
X-Pm-Original-To: xen-devel@lists.xenproject.org
From: Rose.Spangler@purelymail.com
To: xen-devel@lists.xenproject.org
Cc: Rose Spangler <Rose.Spangler@elektrobit.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?q?Roger=20Pau=20Monn=C3=A9?= <roger.pau@citrix.com>,
	Sergej Proskurin <proskurin@sec.in.tum.de>
Subject: [RFC PATCH v6 10/43] altp2m: Add ARM support to do_altp2m_op
Date: Mon, 20 Apr 2026 15:50:09 -0400
Message-Id: <20260420195042.207624-11-Rose.Spangler@purelymail.com>
X-Mailer: git-send-email 2.34.1
In-Reply-To: <20260420195042.207624-1-Rose.Spangler@purelymail.com>
References: <20260420195042.207624-1-Rose.Spangler@purelymail.com>
MIME-Version: 1.0
Content-Transfer-Encoding: quoted-printable
X-MIME-Autoconverted: from 8bit to quoted-printable by Purelymail
Content-Type: text/plain; charset=UTF-8
X-purgate-ID: tlsNG-d25034/1776714657-6D161CF5-C07D9204/0/0
X-purgate-type: clean
X-purgate-size: 4553

From: Rose Spangler <Rose.Spangler@elektrobit.com>

This commit makes the minimum required changes necessary for do_altp2m_op
to compile on ARM. All altp2m commands in the switch statement are gated by
CONFIG_X86, with a default case of returning EOPNOTSUPP. This allows future
commits to move the #ifdef CONFIG_X86 down as support for ARM is added.

Additionally, a call to do_altp2m_op is added in the ARM HVMOP code.

This is commit 2/2 of the common do_altp2m_op phase.

Signed-off-by: Rose Spangler <Rose.Spangler@elektrobit.com>
Signed-off-by: Sergej Proskurin <proskurin@sec.in.tum.de>
---
v6: Replaced patches 2 and 3 from v4/v5 patch set with this patch.

    Made HVM_PARAM_ALTP2M read-only, following the change to the x86
    implementation in commit 0291089f6ea8. The DOMCTL to enable altp2m on
    ARM is implemented in a later commit in this patch series.
---
 xen/arch/arm/hvm.c  |  9 +++++++++
 xen/common/altp2m.c | 29 ++++++++++++++---------------
 2 files changed, 23 insertions(+), 15 deletions(-)

diff --git a/xen/arch/arm/hvm.c b/xen/arch/arm/hvm.c
index 86e49bf47403..7c778795a280 100644
--- a/xen/arch/arm/hvm.c
+++ b/xen/arch/arm/hvm.c
@@ -5,6 +5,7 @@
  * Arch-specific hardware virtual machine abstractions.
  */
=20
+#include <xen/altp2m.h>
 #include <xen/init.h>
 #include <xen/lib.h>
 #include <xen/errno.h>
@@ -23,6 +24,10 @@ static int hvm_allow_set_param(const struct domain *d, u=
nsigned int param)
 {
     switch ( param )
     {
+        /* The following parameters are read-only. */
+    case HVM_PARAM_ALTP2M:
+        return -EEXIST;
+
         /*
          * The following parameters are intended for toolstack usage only.
          * They may not be set by the domain.
@@ -123,6 +128,10 @@ long do_hvm_op(unsigned long op, XEN_GUEST_HANDLE_PARA=
M(void) arg)
             rc =3D -EINVAL;
         break;
=20
+    case HVMOP_altp2m:
+        rc =3D do_altp2m_op(arg);
+        break;
+
     default:
     {
         gdprintk(XENLOG_DEBUG, "HVMOP op=3D%lu: not implemented\n", op);
diff --git a/xen/common/altp2m.c b/xen/common/altp2m.c
index a43b3a3e34b3..6481fae1ed12 100644
--- a/xen/common/altp2m.c
+++ b/xen/common/altp2m.c
@@ -9,8 +9,10 @@
=20
 #include <xsm/xsm.h>
=20
-#ifdef CONFIG_X86
+#if defined(CONFIG_X86) && defined(CONFIG_HVM)
 #include <asm/hvm/nestedhvm.h>
+#endif
+
 /*
  * altp2m operations are envisioned as being used in several different
  * modes:
@@ -18,13 +20,13 @@
  * - external: All control and decisions are made by an external agent
  *   running domain 0.
  *
- * - internal: altp2m operations are used exclusively by an in-guest
- *   agent to protect itself from the guest kernel and in-guest
- *   attackers.
+ * - internal (x86 only): altp2m operations are used exclusively by an
+ *   in-guest agent to protect itself from the guest kernel and
+ *   in-guest attackers.
  *
- * - coordinated: An in-guest agent handles #VE and VMFUNCs locally,
- *   but makes requests of an agent running outside the domain for
- *   bigger changes (such as modifying altp2m entires).
+ * - coordinated (x86 only): An in-guest agent handles #VE and VMFUNCs
+ *   locally, but makes requests of an agent running outside the
+ *   domain for bigger changes (such as modifying altp2m entires).
  *
  * This corresponds to the three values for HVM_PARAM_ALTP2M
  * (external, mixed, limited). All three models have advantages and
@@ -97,7 +99,7 @@ int do_altp2m_op(
=20
     if ( (a.cmd !=3D HVMOP_altp2m_get_domain_state) &&
          (a.cmd !=3D HVMOP_altp2m_set_domain_state) &&
-         !d->altp2m_active )
+         !altp2m_active(d) )
     {
         rc =3D -EOPNOTSUPP;
         goto out;
@@ -122,6 +124,7 @@ int do_altp2m_op(
=20
     switch ( a.cmd )
     {
+#ifdef CONFIG_X86
     case HVMOP_altp2m_get_domain_state:
         a.u.domain_state.state =3D altp2m_active(d);
         rc =3D __copy_to_guest(arg, &a, 1) ? -EFAULT : 0;
@@ -394,9 +397,12 @@ int do_altp2m_op(
             rc =3D altp2m_set_view_visibility(d, idx, a.u.set_visibility.v=
isible);
         break;
     }
+#endif /* CONFIG_X86 */
=20
     default:
+#ifdef CONFIG_X86
         ASSERT_UNREACHABLE();
+#endif
         rc =3D -EOPNOTSUPP;
         break;
     }
@@ -406,13 +412,6 @@ int do_altp2m_op(
=20
     return rc;
 }
-#else
-int do_altp2m_op(
-    XEN_GUEST_HANDLE_PARAM(void) arg)
-{
-    return -EOPNOTSUPP;
-}
-#endif
=20
 /*
  * Local variables:
--=20
2.34.1



From xen-devel-bounces@lists.xenproject.org Mon Apr 20 20:25:29 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 20 Apr 2026 20:25:29 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1286465.1567516 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wEvBH-0001oA-So; Mon, 20 Apr 2026 20:25:19 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1286465.1567516; Mon, 20 Apr 2026 20:25: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 1wEvBH-0001nb-Nz; Mon, 20 Apr 2026 20:25:19 +0000
Received: by outflank-mailman (input) for mailman id 1286465;
 Mon, 20 Apr 2026 19:50:49 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <Rose.Spangler@purelymail.com>) id 1wEudt-0006FK-Mp
 for xen-devel@lists.xenproject.org; Mon, 20 Apr 2026 19:50:49 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wEuds-004tZC-Kz
 for xen-devel@lists.xenproject.org; Mon, 20 Apr 2026 21:50:48 +0200
Received: from [10.42.69.1] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <Rose.Spangler@purelymail.com>)
 id 69e68380-2eae-0a2a0a5409dd-0a2a4501a5ac-36
 for <xen-devel@lists.xenproject.org>; Mon, 20 Apr 2026 21:50:48 +0200
Received: from [34.202.193.197] (helo=sendmail.purelymail.com)
 by tlsNG-d62444.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.1)
 (envelope-from <Rose.Spangler@purelymail.com>)
 id 69e68397-c1f2-0a2a45010019-22cac1c584b0-3
 for <xen-devel@lists.xenproject.org>; Mon, 20 Apr 2026 21:50:48 +0200
Received: by smtp.purelymail.com (Purelymail SMTP) with ESMTPSA id -306608446; 
 (version=TLSv1.3 cipher=TLS_AES_256_GCM_SHA384);
 Mon, 20 Apr 2026 19:50: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=purelymail1 header.d=purelymail.com header.i="@purelymail.com" header.h="Feedback-ID:Received:From:To:Subject:Date"
DKIM-Signature: a=rsa-sha256; b=cQ3Kj18vTq+h+BnFJ531gezYODBGfokD+/LNu0kYWa16sn1xWZcfla/MM9fmKszMJiIqmmNTOzuqiSf4XwexfKtk19lamJ0H5B5JSrmrBux+Lxw9SqbJjry0lKcQWvCibE4GMH3pUvKUcN6Hi2qEfq/eNE5uAaGQvKeYGAWk9/OqbJIDMfNwjUIF3WGAhvNVsp8eeLUPo3GHb+3JjX7/Blug9TsSkxaI5s97x1To5/i+f/PpcCI1pA8ijcGMm8xAMcLSRXTpVvpiiMpj2rfwJjY37i/fci4qkiul5oB8iYiYPUBpi6IZF1E0PQPqDrsxD0YgNkfn/EgAVa4sqDjJug==; s=purelymail1; d=purelymail.com; v=1; bh=lNTQ4fq1EGY2M7SJPoOmAlK5TMMs/JCORxDPd0QwIXw=; h=Feedback-ID:Received:From:To:Subject:Date;
Feedback-ID: 685805:22403:null:purelymail
X-Pm-Original-To: xen-devel@lists.xenproject.org
From: Rose.Spangler@purelymail.com
To: xen-devel@lists.xenproject.org
Cc: Rose Spangler <Rose.Spangler@elektrobit.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.pau@citrix.com>,
	Stefano Stabellini <sstabellini@kernel.org>,
	Teddy Astie <teddy.astie@vates.tech>,
	Tamas K Lengyel <tamas@tklengyel.com>,
	Bertrand Marquis <bertrand.marquis@arm.com>,
	Volodymyr Babchuk <Volodymyr_Babchuk@epam.com>,
	"Daniel P. Smith" <dpsmith@apertussolutions.com>,
	Rahul Singh <rahul.singh@arm.com>,
	Julien Grall <julien.grall@arm.com>
Subject: [RFC PATCH v6 00/43] altp2m: Move altp2m routines to common code and add ARM support
Date: Mon, 20 Apr 2026 15:49:59 -0400
Message-Id: <20260420195042.207624-1-Rose.Spangler@purelymail.com>
X-Mailer: git-send-email 2.34.1
MIME-Version: 1.0
Content-Transfer-Encoding: quoted-printable
X-MIME-Autoconverted: from 8bit to quoted-printable by Purelymail
Content-Type: text/plain; charset=UTF-8
X-purgate-ID: tlsNG-d62444/1776714648-B6A61FF4-907AD702/0/0
X-purgate-type: clean
X-purgate-size: 9570

From: Rose Spangler <Rose.Spangler@elektrobit.com>

Hi all,

For the past few months, myself and Aqib Javid have been working to port
altp2m to ARM with support from Stewart Hildebrand and Stefano Stabellini.
At the recent Spring Xen Summit, Aqib and Stewart gave a presentation which
discussed the motivation behind this, along with an overview of the
rebasing and testing process. While this effort started as a rebase[1] of
the v5 patch series[2] by Sergej Proskurin and Tamas Lengyel, I have been
reworking the branch to make most of the altp2m code common between x86 and
ARM. This should address the major concerns that came up during review of
the original patch series. For a quick overview of altp2m functionality and
scope of the patch series, here's an excerpt from Sergej's cover letter:

> In this patch series, we provide an implementation of the altp2m
> subsystem for ARM. Our implementation is based on the altp2m subsystem fo=
r
> x86, providing additional --alternate-- views on the guest's physical
> memory by means of the ARM 2nd stage translation mechanism. The patches
> introduce new HVMOPs and extend the p2m subsystem. [...] To be more
> precise, altp2m allows to create and switch to additional p2m views (i.e.
> gfn to mfn mappings). These views can be manipulated and activated as wil=
l
> through the provided HVMOPs. In this way, the active guest instance in
> question can seamlessly proceed execution without noticing that anything
> has changed.

As of right now, I've reworked patch series up through the
HVMOP_altp2m_set_domain_state command and plan to continue implementing the
remaining altp2m features. I've continued the patch series versioning by
labeling my notes as v6, and the patch notes from v1-v5 have been preserved
where applicable. I am hoping for some feedback on the general approach
I've taken with this patch series, and I can incorporate any changes
requested into the actual patch series submission.

This is a pretty big patch series, so I've tried to make it as easy as
possible to follow. I've tried to minimize the number of changes in each
patch; there are quite a lot of patches so if it would be preferred to
combine some patches I can do so. Here is the general approach I used
throughout the patch series to turn x86 altp2m code into common altp2m
code with ARM support:

- Move function(s) from arch/x86/mm/altp2m.c to common/altp2m.c, gating
  declarations/definitions with #ifdef CONFIG_X86
- Add any additional features to ARM code needed to implement these
  functions
- Make any changes necessary to functions to support ARM, and remove #ifdef
  CONFIG_X86

This approach makes it possible to separate out code movement patches from
the actual changes needed to support ARM. Furthermore, each patch in the
patch series still compiles for both x86 and ARM.

Additionally, I've split the patch series into a number of "phases" to make
it easier to understand the context of each patch. Each patch description
indicates which phase it's a part of.
- Preparation (8 commits)
- Common do_altp2m_op (2 commits)
- get_domain_state (1 commit)
- altp2m_{init,teardown} routines (12 commits)
- altp2m_{get,set}_altp2m (4 commits)
  - Needed for altp2m_vcpu_{initialise,destroy}
- altp2m_vcpu_{initialise,destroy} (2 commits)
  - Needed for HVMOP_set_domain_state
- altp2m view visibility (5 commits)
  - Needed for altp2m_init_by_id, altp2m_flush
- altp2m_activate_altp2m (2 commits)
  - Needed for altp2m_init_by_id
- altp2m_init_by_id (2 commits)
  - Needed for HVMOP_altp2m_set_domain_state
- altp2m_reset_altp2m (2 commits)
  - Needed for altp2m_flush
- altp2m_flush (2 commits)
  - Needed for HVMOP_altp2m_set_domain_state
- set_domain_state (1 commit)

The code for this patch series can also be found on GitLab:
https://gitlab.com/xen-project/people/elektrobit/xen/-/tree/altp2m-arm-rewo=
rk-rfc

Best,
Rose Spangler

[1] Rebase of original patch series:
https://gitlab.com/xen-project/people/elektrobit/xen/-/commits/altp2m-arm-r=
ebase

[2] Original patch series:
v1: https://lore.kernel.org/xen-devel/20160704114605.10086-1-proskurin@sec.=
in.tum.de/
v2: https://lore.kernel.org/xen-devel/20160801171028.11615-1-proskurin@sec.=
in.tum.de/
v3: https://lore.kernel.org/xen-devel/20160816221714.22041-1-proskurin@sec.=
in.tum.de/
v4: https://lore.kernel.org/xen-devel/20170830183258.14612-1-proskurin@sec.=
in.tum.de/
v5 was never submitted to mailing list, but is available on GitHub:
https://github.com/sergej-proskurin/xen/tree/arm-altp2m-v5


Rose Spangler (38):
  altp2m: Add template common altp2m.c/altp2m.h
  altp2m: Move altp2m_active to common domain struct
  altp2m: Move altp2m_p2m to common domain struct
  x86/altp2m: Rename hvm_altp2m_supported to altp2m_supported
  altp2m: Move altp2m_supported to arch header
  arm/altp2m: Add template arch-specific altp2m.c/altp2m.h
  arm/altp2m: Introduce CONFIG_ALTP2M Kconfig option
  altp2m: Rename p2m_*_altp2m functions and move declarations out of
    p2m.h
  altp2m: Move do_altp2m_op to common code
  altp2m: Add ARM support to do_altp2m_op
  arm/altp2m: Add support for HVMOP_altp2m_get_domain_state
  x86/p2m: Move p2m_{init,free}_one declarations to arch header
  x86/altp2m: Add lock functions accessible from common code
  altp2m: Move altp2m_{init,teardown} to common code
  arm/p2m: Allocate hostp2m with xzalloc
  arm/p2m: Move hostp2m init/teardown to individual functions
  arm/p2m: Invalidate root page table entries and flush TLB in
    p2m_flush_table
  arm/altp2m: Add support for altp2m init/teardown routines
  altp2m: Move altp2m_{get,set}_altp2m to common code
  arm/altp2m: Add altp2m index to arch_vcpu
  altp2m: Add altp2m_set_vcpu_idx
  arm/altp2m: Add support for altp2m_{get,set}_altp2m
  altp2m: Move altp2m_vcpu_{initialise,destroy} to common code
  arm/altp2m: Add support for altp2m_vcpu_{initialise,destroy}
  arm/altp2m: Add altp2m view validity/visibility indicator
  altp2m: Add altp2m_view_is_{valid,visible}
  x86/altp2m: Add altp2m_set_view_visibility_locked
  arm/altp2m: Add altp2m_set_view_visibility{,_locked} support
  arm/altp2m: Add support for HVMOP_altp2m_set_visibility
  x86/altp2m: Add altp2m_activate_altp2m declaration to arch header
  arm/altp2m: Add support for altp2m_activate_altp2m
  altp2m: Move altp2m_init_by_id to common code
  arm/altp2m: Add support for altp2m_init_by_id
  x86/altp2m: Add altp2m_reset_altp2m declaration to arch header
  arm/altp2m: Add altp2m_reset_altp2m routine
  altp2m: Move altp2m_flush to common code
  arm/altp2m: Add support for altp2m_flush
  arm/p2m: Add support for HVMOP_altp2m_set_domain_state

Sergej Proskurin (5):
  arm/p2m: Cosmetic fix - substitute _gfn(ULONG_MAX) for INVALID_GFN
  arm/p2m: Change function prototype of p2m_alloc_table
  arm/p2m: Rename parameter in p2m_alloc_vmid
  arm/p2m: Change func prototype and impl of p2m_{alloc,free}_vmid
  arm/p2m: Introduce p2m_is_{hostp2m,altp2m}

 xen/arch/arm/Kconfig                     |  11 +
 xen/arch/arm/Makefile                    |   1 +
 xen/arch/arm/altp2m.c                    | 122 +++++
 xen/arch/arm/domain.c                    |   2 +-
 xen/arch/arm/hvm.c                       |   9 +
 xen/arch/arm/include/asm/Makefile        |   1 -
 xen/arch/arm/include/asm/altp2m.h        |  84 ++++
 xen/arch/arm/include/asm/domain.h        |  19 +-
 xen/arch/arm/include/asm/p2m.h           |  41 +-
 xen/arch/arm/mm.c                        |   2 +-
 xen/arch/arm/mmu/p2m.c                   | 162 ++++++-
 xen/arch/arm/p2m.c                       |  31 +-
 xen/arch/arm/traps.c                     |   2 +-
 xen/arch/x86/domain.c                    |   3 +-
 xen/arch/x86/hvm/emulate.c               |   1 +
 xen/arch/x86/hvm/hvm.c                   | 413 +----------------
 xen/arch/x86/hvm/monitor.c               |   3 +-
 xen/arch/x86/hvm/vmx/vmx.c               |   9 +-
 xen/arch/x86/include/asm/altp2m.h        | 115 ++++-
 xen/arch/x86/include/asm/domain.h        |   5 -
 xen/arch/x86/include/asm/hvm/hvm.h       |  11 -
 xen/arch/x86/include/asm/p2m.h           | 112 +----
 xen/arch/x86/mm/altp2m.c                 | 242 +++-------
 xen/arch/x86/mm/hap/hap.c                |  17 +-
 xen/arch/x86/mm/mem_access.c             |  22 +-
 xen/arch/x86/mm/mem_sharing.c            |   3 +-
 xen/arch/x86/mm/p2m-basic.c              |   7 +-
 xen/arch/x86/mm/p2m-ept.c                |  13 +-
 xen/arch/x86/mm/p2m-pt.c                 |   1 +
 xen/arch/x86/mm/p2m.c                    |   9 +-
 xen/arch/x86/mm/p2m.h                    |   6 -
 xen/common/Makefile                      |   1 +
 xen/common/altp2m.c                      | 551 +++++++++++++++++++++++
 xen/common/monitor.c                     |   1 +
 xen/common/vm_event.c                    |   2 +-
 xen/drivers/passthrough/arm/ipmmu-vmsa.c |   2 +-
 xen/drivers/passthrough/arm/smmu-v3.c    |   2 +-
 xen/drivers/passthrough/arm/smmu.c       |   2 +-
 xen/include/asm-generic/altp2m.h         |   5 +-
 xen/include/xen/altp2m.h                 |  98 ++++
 xen/include/xen/p2m-common.h             |   2 +-
 xen/include/xen/sched.h                  |   3 +
 42 files changed, 1330 insertions(+), 818 deletions(-)
 create mode 100644 xen/arch/arm/altp2m.c
 create mode 100644 xen/arch/arm/include/asm/altp2m.h
 create mode 100644 xen/common/altp2m.c
 create mode 100644 xen/include/xen/altp2m.h

--=20
2.34.1



From xen-devel-bounces@lists.xenproject.org Mon Apr 20 20:25:29 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 20 Apr 2026 20:25:29 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1286476.1567549 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wEvBJ-0002Ki-LF; Mon, 20 Apr 2026 20:25:21 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1286476.1567549; Mon, 20 Apr 2026 20:25: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 1wEvBJ-0002Hk-8I; Mon, 20 Apr 2026 20:25:21 +0000
Received: by outflank-mailman (input) for mailman id 1286476;
 Mon, 20 Apr 2026 19:50:56 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <Rose.Spangler@purelymail.com>) id 1wEue0-0006IO-Ce
 for xen-devel@lists.xenproject.org; Mon, 20 Apr 2026 19:50:56 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wEudz-004tZC-Pj
 for xen-devel@lists.xenproject.org; Mon, 20 Apr 2026 21:50:55 +0200
Received: from [10.42.69.3] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <Rose.Spangler@purelymail.com>)
 id 69e6836c-2eae-0a2a0a5409dd-0a2a4503b316-32
 for <xen-devel@lists.xenproject.org>; Mon, 20 Apr 2026 21:50:55 +0200
Received: from [34.202.193.197] (helo=sendmail.purelymail.com)
 by tlsNG-33051d.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.1)
 (envelope-from <Rose.Spangler@purelymail.com>)
 id 69e6839e-672d-0a2a45030019-22cac1c5a53a-3
 for <xen-devel@lists.xenproject.org>; Mon, 20 Apr 2026 21:50:55 +0200
Received: by smtp.purelymail.com (Purelymail SMTP) with ESMTPSA id -306608446; 
 (version=TLSv1.3 cipher=TLS_AES_256_GCM_SHA384);
 Mon, 20 Apr 2026 19:50: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=purelymail1 header.d=purelymail.com header.i="@purelymail.com" header.h="Feedback-ID:Received:From:To:Subject:Date"
DKIM-Signature: a=rsa-sha256; b=T0h1p+KPW6xskaiN1TF/GqkmjkwnuwDjImGiUUhasrOTP48+CrkHmkHwqcexT9o7AkpH4PMPACLL8fu8UVo/ZDALP3IAyZ4mlaqOguHhZmM2tgKBzT6D64HnmGHfF/2al5LFIjaJHKkSUOsl0RhB9svFbQ5JKHHgcVmFSt3M/KPV1bH330irr3D/NiOASgijgnExV9lN9Rplc8V29HtGUNj6QiNZ+XylNy15VkThWPCMSd9SroGaGUpQKVXV/Z9lcnoag3C9Y+8LaTeAG+v+4AWlt7sJbmcTdM6DqaNj2WG1bKKo2bbGcSdBzkD/qdFEN9QbRyvHsT+1QFICIvgLEA==; s=purelymail1; d=purelymail.com; v=1; bh=MOrqrKIcHuJwSbppidFvZIeRSx3vTlSfdSMUlXig51U=; h=Feedback-ID:Received:From:To:Subject:Date;
Feedback-ID: 685805:22403:null:purelymail
X-Pm-Original-To: xen-devel@lists.xenproject.org
From: Rose.Spangler@purelymail.com
To: xen-devel@lists.xenproject.org
Cc: Rose Spangler <Rose.Spangler@elektrobit.com>,
	Jan Beulich <jbeulich@suse.com>,
	Andrew Cooper <andrew.cooper3@citrix.com>,
	=?UTF-8?q?Roger=20Pau=20Monn=C3=A9?= <roger.pau@citrix.com>,
	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: [RFC PATCH v6 05/43] altp2m: Move altp2m_supported to arch header
Date: Mon, 20 Apr 2026 15:50:04 -0400
Message-Id: <20260420195042.207624-6-Rose.Spangler@purelymail.com>
X-Mailer: git-send-email 2.34.1
In-Reply-To: <20260420195042.207624-1-Rose.Spangler@purelymail.com>
References: <20260420195042.207624-1-Rose.Spangler@purelymail.com>
MIME-Version: 1.0
Content-Transfer-Encoding: quoted-printable
X-MIME-Autoconverted: from 8bit to quoted-printable by Purelymail
Content-Type: text/plain; charset=UTF-8
X-purgate-ID: tlsNG-33051d/1776714655-A2F62938-A23BEFAB/0/0
X-purgate-type: clean
X-purgate-size: 3291

From: Rose Spangler <Rose.Spangler@elektrobit.com>

Following from the previous commit, this commit makes altp2m_supported
available through the asm/altp2m.h header.

This is commit 5/8 of the preparation phase.

Signed-off-by: Rose Spangler <Rose.Spangler@elektrobit.com>
---
v6: Introduced this patch.
---
 xen/arch/x86/domain.c              |  1 +
 xen/arch/x86/include/asm/altp2m.h  | 11 +++++++++++
 xen/arch/x86/include/asm/hvm/hvm.h | 11 -----------
 xen/include/asm-generic/altp2m.h   |  7 +++++++
 4 files changed, 19 insertions(+), 11 deletions(-)

diff --git a/xen/arch/x86/domain.c b/xen/arch/x86/domain.c
index 512b18d4010f..e4f1cbf3b51e 100644
--- a/xen/arch/x86/domain.c
+++ b/xen/arch/x86/domain.c
@@ -39,6 +39,7 @@
 #include <xen/softirq.h>
 #include <xen/wait.h>
=20
+#include <asm/altp2m.h>
 #include <asm/amd.h>
 #include <asm/cpu-policy.h>
 #include <asm/cpuidle.h>
diff --git a/xen/arch/x86/include/asm/altp2m.h b/xen/arch/x86/include/asm/a=
ltp2m.h
index ad5ded833a75..07e760f60659 100644
--- a/xen/arch/x86/include/asm/altp2m.h
+++ b/xen/arch/x86/include/asm/altp2m.h
@@ -28,6 +28,12 @@ static inline bool altp2m_is_eptp_valid(const struct dom=
ain *d,
         mfn_x(INVALID_MFN);
 }
=20
+/* returns true if hardware supports alternate p2m's */
+static inline bool altp2m_supported(void)
+{
+    return hvm_funcs.caps.altp2m;
+}
+
 static inline uint16_t altp2m_vcpu_idx(const struct vcpu *v)
 {
     return vcpu_altp2m(v).p2midx;
@@ -58,6 +64,11 @@ static inline bool altp2m_is_eptp_valid(const struct dom=
ain *d,
     return false;
 }
=20
+static inline bool altp2m_supported(void)
+{
+    return false;
+}
+
 /* Only declaration is needed. DCE will optimise it out when linking. */
 uint16_t altp2m_vcpu_idx(const struct vcpu *v);
 void altp2m_vcpu_initialise(struct vcpu *v);
diff --git a/xen/arch/x86/include/asm/hvm/hvm.h b/xen/arch/x86/include/asm/=
hvm/hvm.h
index 6406bb687718..e6d8042831dc 100644
--- a/xen/arch/x86/include/asm/hvm/hvm.h
+++ b/xen/arch/x86/include/asm/hvm/hvm.h
@@ -701,12 +701,6 @@ static inline bool hvm_hap_supported(void)
     return hvm_funcs.caps.hap;
 }
=20
-/* returns true if hardware supports alternate p2m's */
-static inline bool altp2m_supported(void)
-{
-    return IS_ENABLED(CONFIG_ALTP2M) && hvm_funcs.caps.altp2m;
-}
-
 /* Returns true if we have the minimum hardware requirements for nested vi=
rt */
 static inline bool hvm_nested_virt_supported(void)
 {
@@ -876,11 +870,6 @@ static inline bool hvm_hap_supported(void)
     return false;
 }
=20
-static inline bool altp2m_supported(void)
-{
-    return false;
-}
-
 static inline bool hvm_nested_virt_supported(void)
 {
     return false;
diff --git a/xen/include/asm-generic/altp2m.h b/xen/include/asm-generic/alt=
p2m.h
index ecee6942f4e8..a3cdbdae9953 100644
--- a/xen/include/asm-generic/altp2m.h
+++ b/xen/include/asm-generic/altp2m.h
@@ -6,6 +6,13 @@
=20
 struct vcpu;
=20
+/* returns true if hardware supports alternate p2m's */
+static inline bool altp2m_supported(void)
+{
+    /* Not implemented on GENERIC. */
+    return false;
+}
+
 /* Alternate p2m VCPU */
 static inline unsigned int altp2m_vcpu_idx(const struct vcpu *v)
 {
--=20
2.34.1



From xen-devel-bounces@lists.xenproject.org Mon Apr 20 20:25:29 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 20 Apr 2026 20:25:29 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1286469.1567524 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wEvBI-0001ut-Bf; Mon, 20 Apr 2026 20:25:20 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1286469.1567524; Mon, 20 Apr 2026 20:25: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 1wEvBI-0001t0-8J; Mon, 20 Apr 2026 20:25:20 +0000
Received: by outflank-mailman (input) for mailman id 1286469;
 Mon, 20 Apr 2026 19:50:51 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <Rose.Spangler@purelymail.com>) id 1wEudv-0006Fj-3I
 for xen-devel@lists.xenproject.org; Mon, 20 Apr 2026 19:50:51 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wEudu-00EW0U-GQ
 for xen-devel@lists.xenproject.org; Mon, 20 Apr 2026 21:50:50 +0200
Received: from [10.42.69.7] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <Rose.Spangler@purelymail.com>)
 id 69e68383-e002-0a2a0a5209dd-0a2a4507b9fc-10
 for <xen-devel@lists.xenproject.org>; Mon, 20 Apr 2026 21:50:50 +0200
Received: from [34.202.193.197] (helo=sendmail.purelymail.com)
 by tlsNG-ef75cf.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.1)
 (envelope-from <Rose.Spangler@purelymail.com>)
 id 69e68399-229c-0a2a45070019-22cac1c5e3b8-3
 for <xen-devel@lists.xenproject.org>; Mon, 20 Apr 2026 21:50:50 +0200
Received: by smtp.purelymail.com (Purelymail SMTP) with ESMTPSA id -306608446; 
 (version=TLSv1.3 cipher=TLS_AES_256_GCM_SHA384);
 Mon, 20 Apr 2026 19:50: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=purelymail1 header.d=purelymail.com header.i="@purelymail.com" header.h="Feedback-ID:Received:From:To:Subject:Date"
DKIM-Signature: a=rsa-sha256; b=koFa8R/DHakel9IV2KMPTxKRTbJ8TfNcl12DPKFVH1JiI3rspzg7HxrI0ViHsIbPHKOV/va3+idkiG3djIbuLqCLH44qjR9PXnY/PUwfOlLpdVnR4SeptBj/TiYbiZUlGgkz/4zT6VEAmmj71cMmLwAG9biIq28DQtFoRzJwKlM8E9aJ9UNx1p5lkCh+Lhy9sfGrDiUY5NywRhITlhjceEIXvpDcHxJtHFM1Qxnq9QFMCOwEcIew8vidxDoYtOvlE3xtTIsKx36WGVHt4LUDZIUmI+T6O7ovfzWDCdqVyatlu97iL7hF913AYHrjZMwQ+iOMCwIuC22SAcBvjydp9Q==; s=purelymail1; d=purelymail.com; v=1; bh=sFa1ro+z9ghGaluSF0Kirw4YvSvCfXXzB9G9AfNaXqg=; h=Feedback-ID:Received:From:To:Subject:Date;
Feedback-ID: 685805:22403:null:purelymail
X-Pm-Original-To: xen-devel@lists.xenproject.org
From: Rose.Spangler@purelymail.com
To: xen-devel@lists.xenproject.org
Cc: Rose Spangler <Rose.Spangler@elektrobit.com>,
	Jan Beulich <jbeulich@suse.com>,
	Andrew Cooper <andrew.cooper3@citrix.com>,
	=?UTF-8?q?Roger=20Pau=20Monn=C3=A9?= <roger.pau@citrix.com>,
	Teddy Astie <teddy.astie@vates.tech>
Subject: [RFC PATCH v6 04/43] x86/altp2m: Rename hvm_altp2m_supported to altp2m_supported
Date: Mon, 20 Apr 2026 15:50:03 -0400
Message-Id: <20260420195042.207624-5-Rose.Spangler@purelymail.com>
X-Mailer: git-send-email 2.34.1
In-Reply-To: <20260420195042.207624-1-Rose.Spangler@purelymail.com>
References: <20260420195042.207624-1-Rose.Spangler@purelymail.com>
MIME-Version: 1.0
Content-Transfer-Encoding: quoted-printable
X-MIME-Autoconverted: from 8bit to quoted-printable by Purelymail
Content-Type: text/plain; charset=UTF-8
X-purgate-ID: tlsNG-ef75cf/1776714650-AF374C48-8025B929/0/0
X-purgate-type: clean
X-purgate-size: 5531

From: Rose Spangler <Rose.Spangler@elektrobit.com>

Using a generic name for altp2m_supported makes it possible to indicate
whether altp2m is supported on other architectures as well. Even if other
architectures always support altp2m at a hardware level (like ARM), altp2m
might not be supported due to CONFIG_ALTP2M being disabled. Therefore, the
altp2m_supported function can be implemented on all architectures to
indicate if the hardware supports altp2m *and* if CONFIG_ALTP2M is enabled.

This is commit 4/8 of the preparation phase.

Signed-off-by: Rose Spangler <Rose.Spangler@elektrobit.com>
---
v6: Introduced this patch.
---
 xen/arch/x86/domain.c              | 2 +-
 xen/arch/x86/hvm/hvm.c             | 6 +++---
 xen/arch/x86/include/asm/hvm/hvm.h | 4 ++--
 xen/arch/x86/mm/hap/hap.c          | 6 +++---
 xen/arch/x86/mm/p2m-basic.c        | 4 ++--
 xen/arch/x86/mm/p2m-ept.c          | 2 +-
 6 files changed, 12 insertions(+), 12 deletions(-)

diff --git a/xen/arch/x86/domain.c b/xen/arch/x86/domain.c
index 1d458f1372e5..512b18d4010f 100644
--- a/xen/arch/x86/domain.c
+++ b/xen/arch/x86/domain.c
@@ -698,7 +698,7 @@ int arch_sanitise_domain_config(struct xen_domctl_creat=
edomain *config)
=20
     if ( altp2m_mode )
     {
-        if ( !hvm_altp2m_supported() )
+        if ( !altp2m_supported() )
         {
             dprintk(XENLOG_INFO, "altp2m is not supported\n");
             return -EINVAL;
diff --git a/xen/arch/x86/hvm/hvm.c b/xen/arch/x86/hvm/hvm.c
index 86c12c0d1ef4..bc35efdf2c02 100644
--- a/xen/arch/x86/hvm/hvm.c
+++ b/xen/arch/x86/hvm/hvm.c
@@ -1692,7 +1692,7 @@ void hvm_vcpu_destroy(struct vcpu *v)
=20
     ioreq_server_remove_vcpu_all(v->domain, v);
=20
-    if ( hvm_altp2m_supported() )
+    if ( altp2m_supported() )
         altp2m_vcpu_destroy(v);
=20
     nestedhvm_vcpu_destroy(v);
@@ -4566,7 +4566,7 @@ static int do_altp2m_op(
     int rc =3D 0;
     uint64_t mode;
=20
-    if ( !hvm_altp2m_supported() )
+    if ( !altp2m_supported() )
         return -EOPNOTSUPP;
=20
     if ( copy_from_guest(&a, arg, 1) )
@@ -4965,7 +4965,7 @@ static int compat_altp2m_op(
         struct xen_hvm_altp2m_op *altp2m_op;
     } nat;
=20
-    if ( !hvm_altp2m_supported() )
+    if ( !altp2m_supported() )
         return -EOPNOTSUPP;
=20
     if ( copy_from_guest(&a, arg, 1) )
diff --git a/xen/arch/x86/include/asm/hvm/hvm.h b/xen/arch/x86/include/asm/=
hvm/hvm.h
index e7c1364802f8..6406bb687718 100644
--- a/xen/arch/x86/include/asm/hvm/hvm.h
+++ b/xen/arch/x86/include/asm/hvm/hvm.h
@@ -702,7 +702,7 @@ static inline bool hvm_hap_supported(void)
 }
=20
 /* returns true if hardware supports alternate p2m's */
-static inline bool hvm_altp2m_supported(void)
+static inline bool altp2m_supported(void)
 {
     return IS_ENABLED(CONFIG_ALTP2M) && hvm_funcs.caps.altp2m;
 }
@@ -876,7 +876,7 @@ static inline bool hvm_hap_supported(void)
     return false;
 }
=20
-static inline bool hvm_altp2m_supported(void)
+static inline bool altp2m_supported(void)
 {
     return false;
 }
diff --git a/xen/arch/x86/mm/hap/hap.c b/xen/arch/x86/mm/hap/hap.c
index 6918a00a2a25..563eba3c0d36 100644
--- a/xen/arch/x86/mm/hap/hap.c
+++ b/xen/arch/x86/mm/hap/hap.c
@@ -501,7 +501,7 @@ int hap_enable(struct domain *d, u32 mode)
     }
=20
 #ifdef CONFIG_ALTP2M
-    if ( hvm_altp2m_supported() )
+    if ( altp2m_supported() )
     {
         /* Init alternate p2m data */
         if ( (d->arch.altp2m_eptp =3D alloc_xenheap_page()) =3D=3D NULL )
@@ -546,7 +546,7 @@ void hap_final_teardown(struct domain *d)
     unsigned int i;
=20
 #ifdef CONFIG_ALTP2M
-    if ( hvm_altp2m_supported() )
+    if ( altp2m_supported() )
         for ( i =3D 0; i < d->nr_altp2m; i++ )
             p2m_teardown(d->altp2m_p2m[i], true, NULL);
 #endif
@@ -590,7 +590,7 @@ void hap_teardown(struct domain *d, bool *preempted)
=20
 #ifdef CONFIG_ALTP2M
     /* Leave the root pt in case we get further attempts to modify the p2m=
. */
-    if ( hvm_altp2m_supported() )
+    if ( altp2m_supported() )
     {
         if ( altp2m_active(d) )
             for_each_vcpu ( d, v )
diff --git a/xen/arch/x86/mm/p2m-basic.c b/xen/arch/x86/mm/p2m-basic.c
index e126fda26760..ce14066fedaf 100644
--- a/xen/arch/x86/mm/p2m-basic.c
+++ b/xen/arch/x86/mm/p2m-basic.c
@@ -128,7 +128,7 @@ int p2m_init(struct domain *d)
         return rc;
     }
=20
-    rc =3D hvm_altp2m_supported() ? p2m_init_altp2m(d) : 0;
+    rc =3D altp2m_supported() ? p2m_init_altp2m(d) : 0;
     if ( rc )
     {
         p2m_teardown_hostp2m(d);
@@ -197,7 +197,7 @@ void p2m_final_teardown(struct domain *d)
 {
     if ( is_hvm_domain(d) )
     {
-        if ( hvm_altp2m_supported() )
+        if ( altp2m_supported() )
             p2m_teardown_altp2m(d);
         /*
          * We must tear down nestedp2m unconditionally because
diff --git a/xen/arch/x86/mm/p2m-ept.c b/xen/arch/x86/mm/p2m-ept.c
index ddb4c7606be1..84159198f3a0 100644
--- a/xen/arch/x86/mm/p2m-ept.c
+++ b/xen/arch/x86/mm/p2m-ept.c
@@ -995,7 +995,7 @@ out:
     if ( is_epte_present(&old_entry) )
         ept_free_entry(p2m, &old_entry, target);
=20
-    if ( hvm_altp2m_supported() && entry_written && p2m_is_hostp2m(p2m) )
+    if ( altp2m_supported() && entry_written && p2m_is_hostp2m(p2m) )
     {
         ret =3D p2m_altp2m_propagate_change(d, _gfn(gfn), mfn, order, p2mt=
, p2ma);
         if ( !rc )
--=20
2.34.1



From xen-devel-bounces@lists.xenproject.org Mon Apr 20 20:25:29 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 20 Apr 2026 20:25:29 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1286485.1567621 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wEvBO-00044q-Hx; Mon, 20 Apr 2026 20:25:26 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1286485.1567621; Mon, 20 Apr 2026 20:25: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 1wEvBO-00042q-6g; Mon, 20 Apr 2026 20:25:26 +0000
Received: by outflank-mailman (input) for mailman id 1286485;
 Mon, 20 Apr 2026 19:50:58 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <Rose.Spangler@purelymail.com>) id 1wEue2-0006J2-EH
 for xen-devel@lists.xenproject.org; Mon, 20 Apr 2026 19:50:58 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wEue1-004tZC-RT
 for xen-devel@lists.xenproject.org; Mon, 20 Apr 2026 21:50:57 +0200
Received: from [10.42.69.6] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <Rose.Spangler@purelymail.com>)
 id 69e68399-2eae-0a2a0a5409dd-0a2a45069f96-6
 for <xen-devel@lists.xenproject.org>; Mon, 20 Apr 2026 21:50:57 +0200
Received: from [34.202.193.197] (helo=sendmail.purelymail.com)
 by tlsNG-16d1c6.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.1)
 (envelope-from <Rose.Spangler@purelymail.com>)
 id 69e683a0-7371-0a2a45060019-22cac1c5ec9e-3
 for <xen-devel@lists.xenproject.org>; Mon, 20 Apr 2026 21:50:57 +0200
Received: by smtp.purelymail.com (Purelymail SMTP) with ESMTPSA id -306608446; 
 (version=TLSv1.3 cipher=TLS_AES_256_GCM_SHA384);
 Mon, 20 Apr 2026 19:50: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=purelymail1 header.d=purelymail.com header.i="@purelymail.com" header.h="Feedback-ID:Received:From:To:Subject:Date"
DKIM-Signature: a=rsa-sha256; b=muZEtg+9hqCE9Xngud7IsV5yfOov+EcqU29MXHjlBiJJoKKLeG17AyyQMjEuJBE/lFBATMhGh02nsfzoCW0kOcJYx4T8+yqBGXvyEk5Ey53qfQKH3sAP73dkuPX4IQVhqdIwtgpQIgKU9ZEF0yKvA4B6GzMb71LDcckniZKrGw2/flY09Lvmeu6k6yk1p7PN96bBRoHjo/T/N+q6lhxYElm/6ev09NHw/ljoB1mXg9dvx+kS4BuKOUxrOPep8YyYpTyTJ6AHq3c7542Cf7hn2LpF7LQariPVlDYdngpsytm2thifqeygcRnA1Y2m69+/MM7ApUfUNzKmfM7fjWP6RQ==; s=purelymail1; d=purelymail.com; v=1; bh=hBUDJnrzrDzoRhr8LXgAIgyY4sGh7Kuf0/4gA394m2s=; h=Feedback-ID:Received:From:To:Subject:Date;
Feedback-ID: 685805:22403:null:purelymail
X-Pm-Original-To: xen-devel@lists.xenproject.org
From: Rose.Spangler@purelymail.com
To: xen-devel@lists.xenproject.org
Cc: Rose Spangler <Rose.Spangler@elektrobit.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>
Subject: [RFC PATCH v6 15/43] arm/p2m: Allocate hostp2m with xzalloc
Date: Mon, 20 Apr 2026 15:50:14 -0400
Message-Id: <20260420195042.207624-16-Rose.Spangler@purelymail.com>
X-Mailer: git-send-email 2.34.1
In-Reply-To: <20260420195042.207624-1-Rose.Spangler@purelymail.com>
References: <20260420195042.207624-1-Rose.Spangler@purelymail.com>
MIME-Version: 1.0
Content-Transfer-Encoding: quoted-printable
X-MIME-Autoconverted: from 8bit to quoted-printable by Purelymail
Content-Type: text/plain; charset=UTF-8
X-purgate-ID: tlsNG-16d1c6/1776714657-CE974D75-ECB1B77F/0/0
X-purgate-type: clean
X-purgate-size: 7464

From: Rose Spangler <Rose.Spangler@elektrobit.com>

This commit replaces the concrete p2m_domain member in arch_domain with a
pointer to p2m_domain, which is allocated with xzalloc during p2m
initialization.

In the following commits, the altp2m_init and altp2m_teardown routines from
x86 are be moved to common code. These routines (respectively) allocate and
free the p2m_domain structs for altp2m views.

While it would be possible to have special code paths for
allocating/freeing altp2m views while keeping the hostp2m as an concrete
member, this results in code duplication and increases complexity without
any clear benefit. Therefore, switching the hostp2m to be allocated
separately from arch_domain (similarly to x86) makes it possible to use the
same functions for both allocation/teardown/freeing of the hostp2m and
altp2m views.

This is commit 4/12 of the altp2m_init/altp2m_teardown routines phase.

Signed-off-by: Rose Spangler <Rose.Spangler@elektrobit.com>
---
v6: Introduced this patch.
---
 xen/arch/arm/domain.c                    |  2 +-
 xen/arch/arm/include/asm/domain.h        |  2 +-
 xen/arch/arm/include/asm/p2m.h           |  2 +-
 xen/arch/arm/mm.c                        |  2 +-
 xen/arch/arm/mmu/p2m.c                   | 27 +++++++++++++++++++++---
 xen/arch/arm/traps.c                     |  2 +-
 xen/drivers/passthrough/arm/ipmmu-vmsa.c |  2 +-
 xen/drivers/passthrough/arm/smmu-v3.c    |  2 +-
 xen/drivers/passthrough/arm/smmu.c       |  2 +-
 9 files changed, 32 insertions(+), 11 deletions(-)

diff --git a/xen/arch/arm/domain.c b/xen/arch/arm/domain.c
index 26380a807cad..be824a5ba18d 100644
--- a/xen/arch/arm/domain.c
+++ b/xen/arch/arm/domain.c
@@ -1099,7 +1099,7 @@ int domain_relinquish_resources(struct domain *d)
          * We are about to free the intermediate page-tables, so clear the
          * root to prevent any walk to use them.
          */
-        p2m_clear_root_pages(&d->arch.p2m);
+        p2m_clear_root_pages(d->arch.p2m);
=20
     PROGRESS(p2m):
         ret =3D p2m_teardown(d);
diff --git a/xen/arch/arm/include/asm/domain.h b/xen/arch/arm/include/asm/d=
omain.h
index ffe5d0d9f0a6..576dbdec20af 100644
--- a/xen/arch/arm/include/asm/domain.h
+++ b/xen/arch/arm/include/asm/domain.h
@@ -72,7 +72,7 @@ struct arch_domain
 #endif
=20
     /* Virtual MMU */
-    struct p2m_domain p2m;
+    struct p2m_domain *p2m;
=20
     struct hvm_domain hvm;
=20
diff --git a/xen/arch/arm/include/asm/p2m.h b/xen/arch/arm/include/asm/p2m.=
h
index 010ce8c9ebbd..23df91ea13e9 100644
--- a/xen/arch/arm/include/asm/p2m.h
+++ b/xen/arch/arm/include/asm/p2m.h
@@ -410,7 +410,7 @@ static inline int get_page_and_type(struct page_info *p=
age,
 }
=20
 /* get host p2m table */
-#define p2m_get_hostp2m(d) (&(d)->arch.p2m)
+#define p2m_get_hostp2m(d) ((d)->arch.p2m)
=20
 static inline bool p2m_vm_event_sanity_check(struct domain *d)
 {
diff --git a/xen/arch/arm/mm.c b/xen/arch/arm/mm.c
index 6df8b616e464..46f9363ea851 100644
--- a/xen/arch/arm/mm.c
+++ b/xen/arch/arm/mm.c
@@ -116,7 +116,7 @@ bool page_is_offlinable(mfn_t mfn)
=20
 unsigned long domain_get_maximum_gpfn(struct domain *d)
 {
-    return gfn_x(d->arch.p2m.max_mapped_gfn);
+    return gfn_x(d->arch.p2m->max_mapped_gfn);
 }
=20
 void share_xen_page_with_guest(struct page_info *page, struct domain *d,
diff --git a/xen/arch/arm/mmu/p2m.c b/xen/arch/arm/mmu/p2m.c
index 51abf3504fcf..3ecb969a0369 100644
--- a/xen/arch/arm/mmu/p2m.c
+++ b/xen/arch/arm/mmu/p2m.c
@@ -5,6 +5,7 @@
 #include <xen/lib.h>
 #include <xen/sched.h>
 #include <xen/softirq.h>
+#include <xen/xmalloc.h>
=20
 #include <asm/alternative.h>
 #include <asm/event.h>
@@ -1475,7 +1476,7 @@ void p2m_final_teardown(struct domain *d)
=20
     /* p2m not actually initialized */
     if ( !p2m->domain )
-        return;
+        goto free_p2m;
=20
     /*
      * No need to call relinquish_p2m_mapping() here because
@@ -1499,11 +1500,13 @@ void p2m_final_teardown(struct domain *d)
     radix_tree_destroy(&p2m->mem_access_settings, NULL);
=20
     p2m->domain =3D NULL;
+
+free_p2m:
+    xfree(p2m);
 }
=20
-int p2m_init(struct domain *d)
+static int p2m_initialise(struct domain *d, struct p2m_domain *p2m)
 {
-    struct p2m_domain *p2m =3D p2m_get_hostp2m(d);
     int rc;
     unsigned int cpu;
=20
@@ -1556,6 +1559,24 @@ int p2m_init(struct domain *d)
     return 0;
 }
=20
+int p2m_init(struct domain *d)
+{
+    struct p2m_domain *p2m =3D xzalloc(struct p2m_domain);
+    int rc;
+
+    if ( !p2m )
+        return -ENOMEM;
+
+    rc =3D p2m_initialise(d, p2m);
+
+    if ( !rc )
+        d->arch.p2m =3D p2m;
+    else
+        xfree(p2m);
+
+    return rc;
+}
+
 /*
  * The function will go through the p2m and remove page reference when it
  * is required. The mapping will be removed from the p2m.
diff --git a/xen/arch/arm/traps.c b/xen/arch/arm/traps.c
index 0c01f37ad6b4..637d27659b20 100644
--- a/xen/arch/arm/traps.c
+++ b/xen/arch/arm/traps.c
@@ -984,7 +984,7 @@ void vcpu_show_registers(struct vcpu *v)
 #endif
=20
 #ifdef CONFIG_MMU
-    ctxt.vttbr_el2 =3D v->domain->arch.p2m.vttbr;
+    ctxt.vttbr_el2 =3D v->domain->arch.p2m->vttbr;
 #endif
=20
     _show_registers(&v->arch.cpu_info->guest_cpu_user_regs, &ctxt, 1, v);
diff --git a/xen/drivers/passthrough/arm/ipmmu-vmsa.c b/xen/drivers/passthr=
ough/arm/ipmmu-vmsa.c
index fa9ab9cb1330..d246c5e59005 100644
--- a/xen/drivers/passthrough/arm/ipmmu-vmsa.c
+++ b/xen/drivers/passthrough/arm/ipmmu-vmsa.c
@@ -565,7 +565,7 @@ static int ipmmu_domain_init_context(struct ipmmu_vmsa_=
domain *domain)
      * Use P2M table for this Xen domain.
      */
     ASSERT(domain->d !=3D NULL);
-    ttbr =3D page_to_maddr(domain->d->arch.p2m.root);
+    ttbr =3D page_to_maddr(domain->d->arch.p2m->root);
=20
     dev_info(domain->mmu->root->dev, "%pd: Set IPMMU context %u (pgd 0x%"P=
RIx64")\n",
              domain->d, domain->context_id, ttbr);
diff --git a/xen/drivers/passthrough/arm/smmu-v3.c b/xen/drivers/passthroug=
h/arm/smmu-v3.c
index bf153227dbd9..a7fbe58cba77 100644
--- a/xen/drivers/passthrough/arm/smmu-v3.c
+++ b/xen/drivers/passthrough/arm/smmu-v3.c
@@ -1205,7 +1205,7 @@ static int arm_smmu_domain_finalise_s2(struct arm_smm=
u_domain *smmu_domain,
 =09vtcr->tsz =3D 64 - p2m_ipa_bits;
 =09vtcr->sl =3D 2 - P2M_ROOT_LEVEL;
=20
-=09arm_lpae_s2_cfg.vttbr  =3D page_to_maddr(smmu_domain->d->arch.p2m.root)=
;
+=09arm_lpae_s2_cfg.vttbr  =3D page_to_maddr(smmu_domain->d->arch.p2m->root=
);
=20
 =09vmid =3D arm_smmu_bitmap_alloc(smmu->vmid_map, smmu->vmid_bits);
 =09if (vmid < 0)
diff --git a/xen/drivers/passthrough/arm/smmu.c b/xen/drivers/passthrough/a=
rm/smmu.c
index d63c9015510e..0975be2562bb 100644
--- a/xen/drivers/passthrough/arm/smmu.c
+++ b/xen/drivers/passthrough/arm/smmu.c
@@ -1247,7 +1247,7 @@ static void arm_smmu_init_context_bank(struct arm_smm=
u_domain *smmu_domain)
 =09/* TTBR0 */
 =09/* Xen: The page table is shared with the P2M code */
 =09ASSERT(smmu_domain->cfg.domain !=3D NULL);
-=09p2maddr =3D page_to_maddr(smmu_domain->cfg.domain->arch.p2m.root);
+=09p2maddr =3D page_to_maddr(smmu_domain->cfg.domain->arch.p2m->root);
=20
 =09dev_notice(smmu->dev, "d%u: p2maddr 0x%"PRIpaddr"\n",
 =09=09   smmu_domain->cfg.domain->domain_id, p2maddr);
--=20
2.34.1



From xen-devel-bounces@lists.xenproject.org Mon Apr 20 20:25:29 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 20 Apr 2026 20:25:29 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1286478.1567560 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wEvBK-0002da-BA; Mon, 20 Apr 2026 20:25:22 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1286478.1567560; Mon, 20 Apr 2026 20:25: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 1wEvBK-0002bc-2G; Mon, 20 Apr 2026 20:25:22 +0000
Received: by outflank-mailman (input) for mailman id 1286478;
 Mon, 20 Apr 2026 19:50:56 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <Rose.Spangler@purelymail.com>) id 1wEue0-0006IQ-Im
 for xen-devel@lists.xenproject.org; Mon, 20 Apr 2026 19:50:56 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wEudz-004tZC-Vu
 for xen-devel@lists.xenproject.org; Mon, 20 Apr 2026 21:50:56 +0200
Received: from [10.42.69.1] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <Rose.Spangler@purelymail.com>)
 id 69e68380-2eae-0a2a0a5409dd-0a2a4501a5ac-44
 for <xen-devel@lists.xenproject.org>; Mon, 20 Apr 2026 21:50:55 +0200
Received: from [34.202.193.197] (helo=sendmail.purelymail.com)
 by tlsNG-d62444.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.1)
 (envelope-from <Rose.Spangler@purelymail.com>)
 id 69e6839e-c1f2-0a2a45010019-22cac1c59c96-3
 for <xen-devel@lists.xenproject.org>; Mon, 20 Apr 2026 21:50:55 +0200
Received: by smtp.purelymail.com (Purelymail SMTP) with ESMTPSA id -306608446; 
 (version=TLSv1.3 cipher=TLS_AES_256_GCM_SHA384);
 Mon, 20 Apr 2026 19:50: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=purelymail1 header.d=purelymail.com header.i="@purelymail.com" header.h="Feedback-ID:Received:From:To:Subject:Date"
DKIM-Signature: a=rsa-sha256; b=cpY2maM903g/OQMRmoi/K3FI7pEjR3/A+YruwAnmtiRHf9omKMSl8nfgytOWe/2WJ4y6LMidModJRjxD3299SATM+cYIt1FE6PyfCf+NvghidAp+e73oESRZl4qyDsToAEBWqb9ecanlP/9uCoEgFY+9DDGun6z7hikU3gjJjTSoZJGCyLMN1c8mSrQ8FWwSVogH7Oledm2jlUlKTlogTaryjXH0+3UUdp+qwKD3IuM02wlQwy4h5plrt78CVSM0w41v4T3zrYJX80nJcAuK9h6tqFQY4vkJamCeSbdBo2SdeDkT/ucR69l+T3dYf3ruc2KR9LSiZ19JHnrg2pmrkQ==; s=purelymail1; d=purelymail.com; v=1; bh=3vj2WBNpAfn2BAOUgjc4RDRuR1cwEZPmFeAg8+48xGU=; h=Feedback-ID:Received:From:To:Subject:Date;
Feedback-ID: 685805:22403:null:purelymail
X-Pm-Original-To: xen-devel@lists.xenproject.org
From: Rose.Spangler@purelymail.com
To: xen-devel@lists.xenproject.org
Cc: Rose Spangler <Rose.Spangler@elektrobit.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?q?Roger=20Pau=20Monn=C3=A9?= <roger.pau@citrix.com>,
	Teddy Astie <teddy.astie@vates.tech>,
	Tamas K Lengyel <tamas@tklengyel.com>
Subject: [RFC PATCH v6 08/43] altp2m: Rename p2m_*_altp2m functions and move declarations out of p2m.h
Date: Mon, 20 Apr 2026 15:50:07 -0400
Message-Id: <20260420195042.207624-9-Rose.Spangler@purelymail.com>
X-Mailer: git-send-email 2.34.1
In-Reply-To: <20260420195042.207624-1-Rose.Spangler@purelymail.com>
References: <20260420195042.207624-1-Rose.Spangler@purelymail.com>
MIME-Version: 1.0
Content-Transfer-Encoding: quoted-printable
X-MIME-Autoconverted: from 8bit to quoted-printable by Purelymail
Content-Type: text/plain; charset=UTF-8
X-purgate-ID: tlsNG-d62444/1776714655-B7C74FF4-1611EB2B/0/0
X-purgate-type: clean
X-purgate-size: 32837

From: Rose Spangler <Rose.Spangler@elektrobit.com>

This commit renames altp2m functions with a p2m prefix. These functions
were originally defined in p2m.c, hence the p2m prefix. When they were
moved to altp2m.c in commit ae7584f63678, the function names were kept and
the declarations remained in p2m.h. This commit finishes that move by
renaming these functions to have an altp2m prefix and moving the
declarations to altp2m.h.

Since these functions will either be moved to the common altp2m.c, or
implemented separately for ARM, it doesn't seem to make sense to continue
with this naming convention. Therefore, this commit preemptively renames
the x86 implementations of these functions so they can later be implemented
with altp2m function name prefixes in common code or for ARM.

For convenience, here is the full list of renames:
- p2m_init_altp2m -> altp2m_init
- p2m_teardown_altp2m -> altp2m_teardown
- p2m_flush_altp2m -> altp2m_flush
- p2m_altp2m_get_or_propagate -> altp2m_get_or_propagate
- p2m_altp2m_propagate_change -> altp2m_propagate_change
- p2m_get_altp2m -> altp2m_get_altp2m
- p2m_set_altp2m -> altp2m_set_altp2m
- p2m_reset_altp2m -> altp2m_reset_altp2m
- p2m_activate_altp2m -> altp2m_activate_altp2m
- p2m_init_altp2m_by_id -> altp2m_init_by_id
- p2m_init_next_altp2m -> altp2m_init_next_available
- p2m_destroy_altp2m_by_id -> altp2m_destroy_by_id
- p2m_switch_domain_altp2m_by_id -> altp2m_switch_domain_altp2m_by_id
- p2m_change_altp2m_gfn -> altp2m_change_gfn
- p2m_set_altp2m_view_visibility -> altp2m_set_view_visibility

This commit contains only function renames and code movement, and no
functional change is intended.

This is commit 8/8 of the preparation phase.

Signed-off-by: Rose Spangler <Rose.Spangler@elektrobit.com>
---
v6: Introduced this patch.
---
 xen/arch/arm/altp2m.c             |   2 +-
 xen/arch/x86/hvm/hvm.c            |  30 ++++----
 xen/arch/x86/hvm/monitor.c        |   2 +-
 xen/arch/x86/hvm/vmx/vmx.c        |   6 +-
 xen/arch/x86/include/asm/altp2m.h | 116 +++++++++++++++++++++++++++++-
 xen/arch/x86/include/asm/p2m.h    | 109 ----------------------------
 xen/arch/x86/mm/altp2m.c          |  76 ++++++++++----------
 xen/arch/x86/mm/mem_access.c      |  13 ++--
 xen/arch/x86/mm/p2m-basic.c       |   4 +-
 xen/arch/x86/mm/p2m-ept.c         |   4 +-
 xen/arch/x86/mm/p2m.h             |   3 -
 xen/common/vm_event.c             |   2 +-
 xen/include/xen/p2m-common.h      |   2 +-
 13 files changed, 186 insertions(+), 183 deletions(-)

diff --git a/xen/arch/arm/altp2m.c b/xen/arch/arm/altp2m.c
index 8bd174ea8f37..339f82835caf 100644
--- a/xen/arch/arm/altp2m.c
+++ b/xen/arch/arm/altp2m.c
@@ -8,7 +8,7 @@
 #include <asm/p2m.h>
=20
 /* Check to see if vcpu should be switched to a different p2m. */
-void p2m_altp2m_check(struct vcpu *v, uint16_t idx)
+void altp2m_check(struct vcpu *v, uint16_t idx)
 {
     /* Not yet implemented */
     BUG();
diff --git a/xen/arch/x86/hvm/hvm.c b/xen/arch/x86/hvm/hvm.c
index bc35efdf2c02..5b6e91adce17 100644
--- a/xen/arch/x86/hvm/hvm.c
+++ b/xen/arch/x86/hvm/hvm.c
@@ -1885,15 +1885,15 @@ int hvm_hap_nested_page_fault(paddr_t gpa, unsigned=
 long gla,
=20
     if ( altp2m_active(currd) )
     {
-        p2m =3D p2m_get_altp2m(curr);
+        p2m =3D altp2m_get_altp2m(curr);
=20
         /*
          * Get the altp2m entry if present; or if not, propagate from
          * the host p2m.  NB that this returns with gfn locked in the
          * altp2m.
          */
-        if ( p2m_altp2m_get_or_propagate(p2m, gfn, &mfn, &p2mt,
-                                         &p2ma, &page_order) )
+        if ( altp2m_get_or_propagate(p2m, gfn, &mfn, &p2mt, &p2ma,
+                                     &page_order) )
         {
             /* Entry was copied from host -- retry fault */
             rc =3D 1;
@@ -2036,7 +2036,7 @@ int hvm_hap_nested_page_fault(paddr_t gpa, unsigned l=
ong gla,
             paging_mark_pfn_dirty(currd, _pfn(gfn));
             /*
              * If p2m is really an altp2m, unlock it before changing the t=
ype,
-             * as p2m_altp2m_propagate_change() needs to acquire the
+             * as altp2m_propagate_change() needs to acquire the
              * altp2m_list lock.
              */
             if ( p2m !=3D hostp2m )
@@ -4663,7 +4663,7 @@ static int do_altp2m_op(
=20
         /* If the alternate p2m state has changed, handle appropriately */
         if ( d->altp2m_active !=3D ostate &&
-             (ostate || !(rc =3D p2m_init_altp2m_by_id(d, 0))) )
+             (ostate || !(rc =3D altp2m_init_by_id(d, 0))) )
         {
             for_each_vcpu( d, v )
             {
@@ -4674,7 +4674,7 @@ static int do_altp2m_op(
             }
=20
             if ( ostate )
-                p2m_flush_altp2m(d);
+                altp2m_flush(d);
         }
         else if ( rc )
             d->altp2m_active =3D false;
@@ -4729,17 +4729,18 @@ static int do_altp2m_op(
     }
=20
     case HVMOP_altp2m_create_p2m:
-        if ( !(rc =3D p2m_init_next_altp2m(d, &a.u.view.view,
-                                         a.u.view.hvmmem_default_access)) =
)
+        rc =3D altp2m_init_next_available(d, &a.u.view.view,
+                                        a.u.view.hvmmem_default_access);
+        if ( !rc )
             rc =3D __copy_to_guest(arg, &a, 1) ? -EFAULT : 0;
         break;
=20
     case HVMOP_altp2m_destroy_p2m:
-        rc =3D p2m_destroy_altp2m_by_id(d, a.u.view.view);
+        rc =3D altp2m_destroy_by_id(d, a.u.view.view);
         break;
=20
     case HVMOP_altp2m_switch_p2m:
-        rc =3D p2m_switch_domain_altp2m_by_id(d, a.u.view.view);
+        rc =3D altp2m_switch_domain_altp2m_by_id(d, a.u.view.view);
         break;
=20
     case HVMOP_altp2m_set_suppress_ve:
@@ -4871,9 +4872,9 @@ static int do_altp2m_op(
         if ( a.u.change_gfn.pad1 || a.u.change_gfn.pad2 )
             rc =3D -EINVAL;
         else
-            rc =3D p2m_change_altp2m_gfn(d, a.u.change_gfn.view,
-                    _gfn(a.u.change_gfn.old_gfn),
-                    _gfn(a.u.change_gfn.new_gfn));
+            rc =3D altp2m_change_gfn(d, a.u.change_gfn.view,
+                                   _gfn(a.u.change_gfn.old_gfn),
+                                   _gfn(a.u.change_gfn.new_gfn));
         break;
=20
     case HVMOP_altp2m_get_p2m_idx:
@@ -4906,8 +4907,7 @@ static int do_altp2m_op(
         else if ( !altp2m_active(d) )
             rc =3D -EOPNOTSUPP;
         else
-            rc =3D p2m_set_altp2m_view_visibility(d, idx,
-                                                a.u.set_visibility.visible=
);
+            rc =3D altp2m_set_view_visibility(d, idx, a.u.set_visibility.v=
isible);
         break;
     }
=20
diff --git a/xen/arch/x86/hvm/monitor.c b/xen/arch/x86/hvm/monitor.c
index 84c1c2234ca9..78137220b22a 100644
--- a/xen/arch/x86/hvm/monitor.c
+++ b/xen/arch/x86/hvm/monitor.c
@@ -182,7 +182,7 @@ int hvm_monitor_debug(unsigned long rip, enum hvm_monit=
or_debug_type type,
 #ifdef CONFIG_ALTP2M
         if ( curr->arch.hvm.fast_single_step.enabled )
         {
-            p2m_altp2m_check(curr, curr->arch.hvm.fast_single_step.p2midx)=
;
+            altp2m_check(curr, curr->arch.hvm.fast_single_step.p2midx);
             curr->arch.hvm.single_step =3D false;
             curr->arch.hvm.fast_single_step.enabled =3D false;
             curr->arch.hvm.fast_single_step.p2midx =3D 0;
diff --git a/xen/arch/x86/hvm/vmx/vmx.c b/xen/arch/x86/hvm/vmx/vmx.c
index 0909929c00e0..f2cf95ee500e 100644
--- a/xen/arch/x86/hvm/vmx/vmx.c
+++ b/xen/arch/x86/hvm/vmx/vmx.c
@@ -2452,7 +2452,7 @@ static void cf_check vmx_vcpu_update_eptp(struct vcpu=
 *v)
     struct ept_data *ept;
=20
     if ( altp2m_active(d) )
-        p2m =3D p2m_get_altp2m(v);
+        p2m =3D altp2m_get_altp2m(v);
     if ( !p2m )
         p2m =3D p2m_get_hostp2m(d);
=20
@@ -2521,7 +2521,7 @@ static int cf_check vmx_vcpu_emulate_vmfunc(const str=
uct cpu_user_regs *regs)
=20
     if ( !cpu_has_vmx_vmfunc && altp2m_active(curr->domain) &&
          regs->eax =3D=3D 0 &&
-         p2m_switch_vcpu_altp2m_by_id(curr, regs->ecx) )
+         altp2m_switch_vcpu_by_id(curr, regs->ecx) )
         rc =3D X86EMUL_OKAY;
=20
     return rc;
@@ -4277,7 +4277,7 @@ void asmlinkage vmx_vmexit_handler(struct cpu_user_re=
gs *regs)
             }
         }
=20
-        p2m_set_altp2m(v, idx);
+        altp2m_set_altp2m(v, idx);
     }
=20
     if ( vm_event_is_enabled(v) &&
diff --git a/xen/arch/x86/include/asm/altp2m.h b/xen/arch/x86/include/asm/a=
ltp2m.h
index 07e760f60659..9c58a396448d 100644
--- a/xen/arch/x86/include/asm/altp2m.h
+++ b/xen/arch/x86/include/asm/altp2m.h
@@ -7,12 +7,33 @@
 #ifndef __ASM_X86_ALTP2M_H
 #define __ASM_X86_ALTP2M_H
=20
-#ifdef CONFIG_ALTP2M
=20
 #include <xen/types.h>
 #include <xen/sched.h>         /* for struct vcpu, struct domain */
+
+#include <asm/p2m.h>
 #include <asm/hvm/vcpu.h>      /* for vcpu_altp2m */
=20
+/*
+ * Common alternate p2m declarations that need to be visible
+ * regardless of CONFIG_ALTP2M
+ */
+
+/* Alternate p2m paging */
+bool altp2m_get_or_propagate(struct p2m_domain *ap2m, unsigned long gfn_l,
+                             mfn_t *mfn, p2m_type_t *p2mt, p2m_access_t *p=
2ma,
+                             unsigned int *page_order);
+
+/* Propagate a host p2m change to all alternate p2m's */
+int altp2m_propagate_change(struct domain *d, gfn_t gfn, mfn_t mfn,
+                            unsigned int page_order, p2m_type_t p2mt,
+                            p2m_access_t p2ma);
+
+#ifdef CONFIG_ALTP2M
+
+#define AP2MGET_prepopulate true
+#define AP2MGET_query false
+
 static inline bool altp2m_is_eptp_valid(const struct domain *d,
                                         unsigned int idx)
 {
@@ -39,6 +60,85 @@ static inline uint16_t altp2m_vcpu_idx(const struct vcpu=
 *v)
     return vcpu_altp2m(v).p2midx;
 }
=20
+/*
+ * Alternate p2m: shadow p2m tables used for alternate memory views
+ */
+
+/* get current alternate p2m table */
+static inline struct p2m_domain *altp2m_get_altp2m(struct vcpu *v)
+{
+    unsigned int index =3D vcpu_altp2m(v).p2midx;
+
+    if ( index =3D=3D INVALID_ALTP2M )
+        return NULL;
+
+    BUG_ON(index >=3D v->domain->nr_altp2m);
+
+    return v->domain->altp2m_p2m[index];
+}
+
+/* set current alternate p2m table */
+static inline bool altp2m_set_altp2m(struct vcpu *v, unsigned int idx)
+{
+    struct p2m_domain *orig;
+
+    BUG_ON(idx >=3D v->domain->nr_altp2m);
+
+    if ( idx =3D=3D vcpu_altp2m(v).p2midx )
+        return false;
+
+    orig =3D altp2m_get_altp2m(v);
+    BUG_ON(!orig);
+    atomic_dec(&orig->active_vcpus);
+
+    vcpu_altp2m(v).p2midx =3D idx;
+    atomic_inc(&v->domain->altp2m_p2m[idx]->active_vcpus);
+
+    return true;
+}
+
+/* Initialize altp2m views */
+int altp2m_init(struct domain *d);
+
+/* Free altp2m views */
+void altp2m_teardown(struct domain *d);
+
+/* Switch alternate p2m for a single vcpu */
+bool altp2m_switch_vcpu_by_id(struct vcpu *v, unsigned int idx);
+
+/* Flush all the alternate p2m's for a domain */
+void altp2m_flush(struct domain *d);
+
+/* Make a specific alternate p2m valid */
+int altp2m_init_by_id(struct domain *d, unsigned int idx);
+
+/* Find an available alternate p2m and make it valid */
+int altp2m_init_next_available(struct domain *d, uint16_t *idx,
+                               xenmem_access_t hvmmem_default_access);
+
+/* Make a specific alternate p2m invalid */
+int altp2m_destroy_by_id(struct domain *d, unsigned int idx);
+
+/* Switch alternate p2m for entire domain */
+int altp2m_switch_domain_altp2m_by_id(struct domain *d, unsigned int idx);
+
+/* Change a gfn->mfn mapping */
+int altp2m_change_gfn(struct domain *d, unsigned int idx, gfn_t old_gfn,
+                      gfn_t new_gfn);
+
+/* Set a specific p2m view visibility */
+int altp2m_set_view_visibility(struct domain *d, unsigned int altp2m_idx,
+                               uint8_t visible);
+
+/*
+ * Looks up altp2m entry. If the entry is not found it looks up the entry =
in
+ * hostp2m.
+ * The prepopulate param is used to set the found entry in altp2m.
+ */
+int altp2m_get_effective_entry(struct p2m_domain *ap2m, gfn_t gfn, mfn_t *=
mfn,
+                               p2m_type_t *t, p2m_access_t *a,
+                               bool prepopulate);
+
 /* Alternate p2m VCPU */
 void altp2m_vcpu_initialise(struct vcpu *v);
 void altp2m_vcpu_destroy(struct vcpu *v);
@@ -69,7 +169,21 @@ static inline bool altp2m_supported(void)
     return false;
 }
=20
+static inline int _altp2m_get_effective_entry(struct p2m_domain *ap2m,
+                                             gfn_t gfn, mfn_t *mfn,
+                                             p2m_type_t *t, p2m_access_t *=
a)
+{
+    ASSERT_UNREACHABLE();
+    return -EOPNOTSUPP;
+}
+#define altp2m_get_effective_entry(ap2m, gfn, mfn, t, a, prepopulate) \
+        _altp2m_get_effective_entry(ap2m, gfn, mfn, t, a)
+
 /* Only declaration is needed. DCE will optimise it out when linking. */
+int altp2m_init(struct domain *d);
+void altp2m_teardown(struct domain *d);
+struct p2m_domain *altp2m_get_altp2m(struct vcpu *v);
+bool altp2m_set_altp2m(struct vcpu *v, unsigned int idx);
 uint16_t altp2m_vcpu_idx(const struct vcpu *v);
 void altp2m_vcpu_initialise(struct vcpu *v);
 void altp2m_vcpu_destroy(struct vcpu *v);
diff --git a/xen/arch/x86/include/asm/p2m.h b/xen/arch/x86/include/asm/p2m.=
h
index ec871717a9e4..5110b3e77807 100644
--- a/xen/arch/x86/include/asm/p2m.h
+++ b/xen/arch/x86/include/asm/p2m.h
@@ -582,30 +582,6 @@ static inline gfn_t mfn_to_gfn(const struct domain *d,=
 mfn_t mfn)
         return _gfn(mfn_x(mfn));
 }
=20
-#ifdef CONFIG_ALTP2M
-#define AP2MGET_prepopulate true
-#define AP2MGET_query false
-
-/*
- * Looks up altp2m entry. If the entry is not found it looks up the entry =
in
- * hostp2m.
- * The prepopulate param is used to set the found entry in altp2m.
- */
-int altp2m_get_effective_entry(struct p2m_domain *ap2m, gfn_t gfn, mfn_t *=
mfn,
-                               p2m_type_t *t, p2m_access_t *a,
-                               bool prepopulate);
-#else
-static inline int _altp2m_get_effective_entry(struct p2m_domain *ap2m,
-                                             gfn_t gfn, mfn_t *mfn,
-                                             p2m_type_t *t, p2m_access_t *=
a)
-{
-    ASSERT_UNREACHABLE();
-    return -EOPNOTSUPP;
-}
-#define altp2m_get_effective_entry(ap2m, gfn, mfn, t, a, prepopulate) \
-        _altp2m_get_effective_entry(ap2m, gfn, mfn, t, a)
-#endif
-
 /* Init the datastructures for later use by the p2m code */
 int p2m_init(struct domain *d);
=20
@@ -885,91 +861,6 @@ void shadow_p2m_init(struct p2m_domain *p2m);
 void cf_check nestedp2m_write_p2m_entry_post(
     struct p2m_domain *p2m, unsigned int oflags);
=20
-#ifdef CONFIG_ALTP2M
-
-/*
- * Alternate p2m: shadow p2m tables used for alternate memory views
- */
-
-/* get current alternate p2m table */
-static inline struct p2m_domain *p2m_get_altp2m(struct vcpu *v)
-{
-    unsigned int index =3D vcpu_altp2m(v).p2midx;
-
-    if ( index =3D=3D INVALID_ALTP2M )
-        return NULL;
-
-    BUG_ON(index >=3D v->domain->nr_altp2m);
-
-    return v->domain->altp2m_p2m[index];
-}
-
-/* set current alternate p2m table */
-static inline bool p2m_set_altp2m(struct vcpu *v, unsigned int idx)
-{
-    struct p2m_domain *orig;
-
-    BUG_ON(idx >=3D v->domain->nr_altp2m);
-
-    if ( idx =3D=3D vcpu_altp2m(v).p2midx )
-        return false;
-
-    orig =3D p2m_get_altp2m(v);
-    BUG_ON(!orig);
-    atomic_dec(&orig->active_vcpus);
-
-    vcpu_altp2m(v).p2midx =3D idx;
-    atomic_inc(&v->domain->altp2m_p2m[idx]->active_vcpus);
-
-    return true;
-}
-
-/* Switch alternate p2m for a single vcpu */
-bool p2m_switch_vcpu_altp2m_by_id(struct vcpu *v, unsigned int idx);
-
-/* Flush all the alternate p2m's for a domain */
-void p2m_flush_altp2m(struct domain *d);
-
-/* Make a specific alternate p2m valid */
-int p2m_init_altp2m_by_id(struct domain *d, unsigned int idx);
-
-/* Find an available alternate p2m and make it valid */
-int p2m_init_next_altp2m(struct domain *d, uint16_t *idx,
-                         xenmem_access_t hvmmem_default_access);
-
-/* Make a specific alternate p2m invalid */
-int p2m_destroy_altp2m_by_id(struct domain *d, unsigned int idx);
-
-/* Switch alternate p2m for entire domain */
-int p2m_switch_domain_altp2m_by_id(struct domain *d, unsigned int idx);
-
-/* Change a gfn->mfn mapping */
-int p2m_change_altp2m_gfn(struct domain *d, unsigned int idx,
-                          gfn_t old_gfn, gfn_t new_gfn);
-
-/* Set a specific p2m view visibility */
-int p2m_set_altp2m_view_visibility(struct domain *d, unsigned int altp2m_i=
dx,
-                                   uint8_t visible);
-
-#else /* !CONFIG_ALTP2M */
-struct p2m_domain *p2m_get_altp2m(struct vcpu *v);
-bool p2m_set_altp2m(struct vcpu *v, unsigned int idx);
-#endif /* CONFIG_ALTP2M */
-
-/*
- * Common alternate p2m declarations that need to be visible
- * regardless of CONFIG_ALTP2M
- */
-
-/* Alternate p2m paging */
-bool p2m_altp2m_get_or_propagate(struct p2m_domain *ap2m, unsigned long gf=
n_l,
-                                 mfn_t *mfn, p2m_type_t *p2mt,
-                                 p2m_access_t *p2ma, unsigned int *page_or=
der);
-                                =20
-/* Propagate a host p2m change to all alternate p2m's */
-int p2m_altp2m_propagate_change(struct domain *d, gfn_t gfn,
-                                mfn_t mfn, unsigned int page_order,
-                                p2m_type_t p2mt, p2m_access_t p2ma);
 #endif /* CONFIG_HVM */
=20
 /* p2m access to IOMMU flags */
diff --git a/xen/arch/x86/mm/altp2m.c b/xen/arch/x86/mm/altp2m.c
index 8dd3c0f96be0..2dc84b76b8c1 100644
--- a/xen/arch/x86/mm/altp2m.c
+++ b/xen/arch/x86/mm/altp2m.c
@@ -24,7 +24,7 @@ altp2m_vcpu_initialise(struct vcpu *v)
         vcpu_pause(v);
=20
     vcpu_altp2m(v).p2midx =3D 0;
-    atomic_inc(&p2m_get_altp2m(v)->active_vcpus);
+    atomic_inc(&altp2m_get_altp2m(v)->active_vcpus);
=20
     altp2m_vcpu_update_p2m(v);
=20
@@ -43,7 +43,7 @@ altp2m_vcpu_destroy(struct vcpu *v)
     if ( v !=3D current )
         vcpu_pause(v);
=20
-    if ( (p2m =3D p2m_get_altp2m(v)) )
+    if ( (p2m =3D altp2m_get_altp2m(v)) )
         atomic_dec(&p2m->active_vcpus);
=20
     altp2m_vcpu_disable_ve(v);
@@ -123,7 +123,7 @@ void altp2m_vcpu_disable_ve(struct vcpu *v)
     }
 }
=20
-int p2m_init_altp2m(struct domain *d)
+int altp2m_init(struct domain *d)
 {
     unsigned int i;
     struct p2m_domain *p2m;
@@ -140,7 +140,7 @@ int p2m_init_altp2m(struct domain *d)
         d->altp2m_p2m[i] =3D p2m =3D p2m_init_one(d);
         if ( p2m =3D=3D NULL )
         {
-            p2m_teardown_altp2m(d);
+            altp2m_teardown(d);
             return -ENOMEM;
         }
         p2m->p2m_class =3D p2m_alternate;
@@ -151,7 +151,7 @@ int p2m_init_altp2m(struct domain *d)
     return 0;
 }
=20
-void p2m_teardown_altp2m(struct domain *d)
+void altp2m_teardown(struct domain *d)
 {
     unsigned int i;
     struct p2m_domain *p2m;
@@ -207,13 +207,13 @@ int altp2m_get_effective_entry(struct p2m_domain *ap2=
m, gfn_t gfn, mfn_t *mfn,
     return 0;
 }
=20
-void p2m_altp2m_check(struct vcpu *v, uint16_t idx)
+void altp2m_check(struct vcpu *v, uint16_t idx)
 {
     if ( altp2m_active(v->domain) )
-        p2m_switch_vcpu_altp2m_by_id(v, idx);
+        altp2m_switch_vcpu_by_id(v, idx);
 }
=20
-bool p2m_switch_vcpu_altp2m_by_id(struct vcpu *v, unsigned int idx)
+bool altp2m_switch_vcpu_by_id(struct vcpu *v, unsigned int idx)
 {
     struct domain *d =3D v->domain;
     bool rc =3D false;
@@ -225,7 +225,7 @@ bool p2m_switch_vcpu_altp2m_by_id(struct vcpu *v, unsig=
ned int idx)
=20
     if ( d->arch.altp2m_eptp[idx] !=3D mfn_x(INVALID_MFN) )
     {
-        if ( p2m_set_altp2m(v, idx) )
+        if ( altp2m_set_altp2m(v, idx) )
             altp2m_vcpu_update_p2m(v);
         rc =3D 1;
     }
@@ -246,9 +246,9 @@ bool p2m_switch_vcpu_altp2m_by_id(struct vcpu *v, unsig=
ned int idx)
  * the host's entry to the altp2m (retaining page order), and indicate
  * that the caller should re-try the faulting instruction.
  */
-bool p2m_altp2m_get_or_propagate(struct p2m_domain *ap2m, unsigned long gf=
n_l,
-                                 mfn_t *mfn, p2m_type_t *p2mt,
-                                 p2m_access_t *p2ma, unsigned int *page_or=
der)
+bool altp2m_get_or_propagate(struct p2m_domain *ap2m, unsigned long gfn_l,
+                             mfn_t *mfn, p2m_type_t *p2mt, p2m_access_t *p=
2ma,
+                             unsigned int *page_order)
 {
     p2m_type_t ap2mt;
     p2m_access_t ap2ma;
@@ -319,8 +319,8 @@ enum altp2m_reset_type {
     ALTP2M_DEACTIVATE
 };
=20
-static void p2m_reset_altp2m(struct domain *d, unsigned int idx,
-                             enum altp2m_reset_type reset_type)
+static void altp2m_reset_altp2m(struct domain *d, unsigned int idx,
+                                enum altp2m_reset_type reset_type)
 {
     struct p2m_domain *p2m;
=20
@@ -344,7 +344,7 @@ static void p2m_reset_altp2m(struct domain *d, unsigned=
 int idx,
     p2m_unlock(p2m);
 }
=20
-void p2m_flush_altp2m(struct domain *d)
+void altp2m_flush(struct domain *d)
 {
     unsigned int i;
=20
@@ -352,7 +352,7 @@ void p2m_flush_altp2m(struct domain *d)
=20
     for ( i =3D 0; i < d->nr_altp2m; i++ )
     {
-        p2m_reset_altp2m(d, i, ALTP2M_DEACTIVATE);
+        altp2m_reset_altp2m(d, i, ALTP2M_DEACTIVATE);
         d->arch.altp2m_eptp[i] =3D mfn_x(INVALID_MFN);
         d->arch.altp2m_visible_eptp[i] =3D mfn_x(INVALID_MFN);
     }
@@ -360,8 +360,8 @@ void p2m_flush_altp2m(struct domain *d)
     altp2m_list_unlock(d);
 }
=20
-static int p2m_activate_altp2m(struct domain *d, unsigned int idx,
-                               p2m_access_t hvmmem_default_access)
+static int altp2m_activate_altp2m(struct domain *d, unsigned int idx,
+                                  p2m_access_t hvmmem_default_access)
 {
     struct p2m_domain *hostp2m, *p2m;
     int rc;
@@ -399,9 +399,9 @@ static int p2m_activate_altp2m(struct domain *d, unsign=
ed int idx,
     p2m_unlock(p2m);
=20
     return rc;
-}
+ }
=20
-int p2m_init_altp2m_by_id(struct domain *d, unsigned int idx)
+int altp2m_init_by_id(struct domain *d, unsigned int idx)
 {
     int rc =3D -EINVAL;
     struct p2m_domain *hostp2m =3D p2m_get_hostp2m(d);
@@ -413,14 +413,14 @@ int p2m_init_altp2m_by_id(struct domain *d, unsigned =
int idx)
=20
     if ( d->arch.altp2m_eptp[array_index_nospec(idx, MAX_EPTP)] =3D=3D
          mfn_x(INVALID_MFN) )
-        rc =3D p2m_activate_altp2m(d, idx, hostp2m->default_access);
+        rc =3D altp2m_activate_altp2m(d, idx, hostp2m->default_access);
=20
     altp2m_list_unlock(d);
     return rc;
 }
=20
-int p2m_init_next_altp2m(struct domain *d, uint16_t *idx,
-                         xenmem_access_t hvmmem_default_access)
+int altp2m_init_next_available(struct domain *d, uint16_t *idx,
+                               xenmem_access_t hvmmem_default_access)
 {
     int rc =3D -EINVAL;
     unsigned int i;
@@ -438,7 +438,7 @@ int p2m_init_next_altp2m(struct domain *d, uint16_t *id=
x,
         if ( d->arch.altp2m_eptp[i] !=3D mfn_x(INVALID_MFN) )
             continue;
=20
-        rc =3D p2m_activate_altp2m(d, i, a);
+        rc =3D altp2m_activate_altp2m(d, i, a);
=20
         if ( !rc )
             *idx =3D i;
@@ -450,7 +450,7 @@ int p2m_init_next_altp2m(struct domain *d, uint16_t *id=
x,
     return rc;
 }
=20
-int p2m_destroy_altp2m_by_id(struct domain *d, unsigned int idx)
+int altp2m_destroy_by_id(struct domain *d, unsigned int idx)
 {
     struct p2m_domain *p2m;
     int rc =3D -EBUSY;
@@ -472,7 +472,7 @@ int p2m_destroy_altp2m_by_id(struct domain *d, unsigned=
 int idx)
=20
         if ( !_atomic_read(p2m->active_vcpus) )
         {
-            p2m_reset_altp2m(d, idx, ALTP2M_DEACTIVATE);
+            altp2m_reset_altp2m(d, idx, ALTP2M_DEACTIVATE);
             d->arch.altp2m_eptp[array_index_nospec(idx, MAX_EPTP)] =3D
                 mfn_x(INVALID_MFN);
             d->arch.altp2m_visible_eptp[array_index_nospec(idx, MAX_EPTP)]=
 =3D
@@ -488,7 +488,7 @@ int p2m_destroy_altp2m_by_id(struct domain *d, unsigned=
 int idx)
     return rc;
 }
=20
-int p2m_switch_domain_altp2m_by_id(struct domain *d, unsigned int idx)
+int altp2m_switch_domain_altp2m_by_id(struct domain *d, unsigned int idx)
 {
     struct vcpu *v;
     int rc =3D -EINVAL;
@@ -506,7 +506,7 @@ int p2m_switch_domain_altp2m_by_id(struct domain *d, un=
signed int idx)
     if ( d->arch.altp2m_visible_eptp[idx] !=3D mfn_x(INVALID_MFN) )
     {
         for_each_vcpu( d, v )
-            if ( p2m_set_altp2m(v, idx) )
+            if ( altp2m_set_altp2m(v, idx) )
                 altp2m_vcpu_update_p2m(v);
=20
         rc =3D 0;
@@ -519,8 +519,8 @@ int p2m_switch_domain_altp2m_by_id(struct domain *d, un=
signed int idx)
     return rc;
 }
=20
-int p2m_change_altp2m_gfn(struct domain *d, unsigned int idx,
-                          gfn_t old_gfn, gfn_t new_gfn)
+int altp2m_change_gfn(struct domain *d, unsigned int idx, gfn_t old_gfn,
+                      gfn_t new_gfn)
 {
     struct p2m_domain *hp2m, *ap2m;
     p2m_access_t a;
@@ -571,11 +571,11 @@ int p2m_change_altp2m_gfn(struct domain *d, unsigned =
int idx,
     p2m_unlock(ap2m);
     p2m_unlock(hp2m);
     return rc;
-}
+ }
=20
-int p2m_altp2m_propagate_change(struct domain *d, gfn_t gfn,
-                                mfn_t mfn, unsigned int page_order,
-                                p2m_type_t p2mt, p2m_access_t p2ma)
+int altp2m_propagate_change(struct domain *d, gfn_t gfn, mfn_t mfn,
+                            unsigned int page_order, p2m_type_t p2mt,
+                            p2m_access_t p2ma)
 {
     struct p2m_domain *p2m;
     unsigned int i;
@@ -605,7 +605,7 @@ int p2m_altp2m_propagate_change(struct domain *d, gfn_t=
 gfn,
         {
             if ( !reset_count++ )
             {
-                p2m_reset_altp2m(d, i, ALTP2M_RESET);
+                altp2m_reset_altp2m(d, i, ALTP2M_RESET);
                 last_reset_idx =3D i;
             }
             else
@@ -617,7 +617,7 @@ int p2m_altp2m_propagate_change(struct domain *d, gfn_t=
 gfn,
                          d->arch.altp2m_eptp[i] =3D=3D mfn_x(INVALID_MFN) =
)
                         continue;
=20
-                    p2m_reset_altp2m(d, i, ALTP2M_RESET);
+                    altp2m_reset_altp2m(d, i, ALTP2M_RESET);
                 }
=20
                 ret =3D 0;
@@ -768,8 +768,8 @@ int p2m_get_suppress_ve(struct domain *d, gfn_t gfn, bo=
ol *suppress_ve,
     return rc;
 }
=20
-int p2m_set_altp2m_view_visibility(struct domain *d, unsigned int altp2m_i=
dx,
-                                   uint8_t visible)
+int altp2m_set_view_visibility(struct domain *d, unsigned int altp2m_idx,
+                               uint8_t visible)
 {
     int rc =3D 0;
=20
diff --git a/xen/arch/x86/mm/mem_access.c b/xen/arch/x86/mm/mem_access.c
index e5548e64d8d0..0492356d99ad 100644
--- a/xen/arch/x86/mm/mem_access.c
+++ b/xen/arch/x86/mm/mem_access.c
@@ -81,7 +81,7 @@ bool p2m_mem_access_emulate_check(struct vcpu *v,
     struct p2m_domain *p2m =3D NULL;
=20
     if ( altp2m_active(d) )
-        p2m =3D p2m_get_altp2m(v);
+        p2m =3D altp2m_get_altp2m(v);
     if ( !p2m )
         p2m =3D p2m_get_hostp2m(d);
=20
@@ -145,7 +145,7 @@ bool p2m_mem_access_check(paddr_t gpa, unsigned long gl=
a,
     int rc;
=20
     if ( altp2m_active(d) )
-        p2m =3D p2m_get_altp2m(v);
+        p2m =3D altp2m_get_altp2m(v);
     if ( !p2m )
         p2m =3D p2m_get_hostp2m(d);
=20
@@ -252,9 +252,10 @@ bool p2m_mem_access_check(paddr_t gpa, unsigned long g=
la,
     return (p2ma !=3D p2m_access_n2rwx);
 }
=20
-static int p2m_set_altp2m_mem_access(struct domain *d, struct p2m_domain *=
hp2m,
-                                     struct p2m_domain *ap2m, p2m_access_t=
 a,
-                                     gfn_t gfn)
+static int altp2m_set_altp2m_mem_access(struct domain *d,
+                                        struct p2m_domain *hp2m,
+                                        struct p2m_domain *ap2m, p2m_acces=
s_t a,
+                                        gfn_t gfn)
 {
     mfn_t mfn;
     p2m_type_t t;
@@ -281,7 +282,7 @@ static int set_mem_access(struct domain *d, struct p2m_=
domain *p2m,
=20
     if ( ap2m )
     {
-        rc =3D p2m_set_altp2m_mem_access(d, p2m, ap2m, a, gfn);
+        rc =3D altp2m_set_altp2m_mem_access(d, p2m, ap2m, a, gfn);
         /* If the corresponding mfn is invalid we will want to just skip i=
t */
         if ( rc =3D=3D -ESRCH )
             rc =3D 0;
diff --git a/xen/arch/x86/mm/p2m-basic.c b/xen/arch/x86/mm/p2m-basic.c
index ce14066fedaf..433e7d08b78f 100644
--- a/xen/arch/x86/mm/p2m-basic.c
+++ b/xen/arch/x86/mm/p2m-basic.c
@@ -128,7 +128,7 @@ int p2m_init(struct domain *d)
         return rc;
     }
=20
-    rc =3D altp2m_supported() ? p2m_init_altp2m(d) : 0;
+    rc =3D altp2m_supported() ? altp2m_init(d) : 0;
     if ( rc )
     {
         p2m_teardown_hostp2m(d);
@@ -198,7 +198,7 @@ void p2m_final_teardown(struct domain *d)
     if ( is_hvm_domain(d) )
     {
         if ( altp2m_supported() )
-            p2m_teardown_altp2m(d);
+            altp2m_teardown(d);
         /*
          * We must tear down nestedp2m unconditionally because
          * we initialise it unconditionally.
diff --git a/xen/arch/x86/mm/p2m-ept.c b/xen/arch/x86/mm/p2m-ept.c
index 84159198f3a0..a6f61a9dd3d7 100644
--- a/xen/arch/x86/mm/p2m-ept.c
+++ b/xen/arch/x86/mm/p2m-ept.c
@@ -773,7 +773,7 @@ bool ept_handle_misconfig(uint64_t gpa)
     int rc;
=20
     if ( altp2m_active(curr->domain) )
-        p2m =3D p2m_get_altp2m(curr);
+        p2m =3D altp2m_get_altp2m(curr);
=20
     p2m_lock(p2m);
=20
@@ -997,7 +997,7 @@ out:
=20
     if ( altp2m_supported() && entry_written && p2m_is_hostp2m(p2m) )
     {
-        ret =3D p2m_altp2m_propagate_change(d, _gfn(gfn), mfn, order, p2mt=
, p2ma);
+        ret =3D altp2m_propagate_change(d, _gfn(gfn), mfn, order, p2mt, p2=
ma);
         if ( !rc )
             rc =3D ret;
     }
diff --git a/xen/arch/x86/mm/p2m.h b/xen/arch/x86/mm/p2m.h
index 635f5a7f45cd..64218878067e 100644
--- a/xen/arch/x86/mm/p2m.h
+++ b/xen/arch/x86/mm/p2m.h
@@ -19,9 +19,6 @@ static inline int p2m_init_logdirty(struct p2m_domain *p2=
m) { return 0; }
 static inline void p2m_free_logdirty(struct p2m_domain *p2m) {}
 #endif
=20
-int p2m_init_altp2m(struct domain *d);
-void p2m_teardown_altp2m(struct domain *d);
-
 void p2m_flush_table_locked(struct p2m_domain *p2m);
 int __must_check p2m_remove_entry(struct p2m_domain *p2m, gfn_t gfn, mfn_t=
 mfn,
                                   unsigned int page_order);
diff --git a/xen/common/vm_event.c b/xen/common/vm_event.c
index cf0258223f50..77e0c8a0b240 100644
--- a/xen/common/vm_event.c
+++ b/xen/common/vm_event.c
@@ -433,7 +433,7 @@ static int vm_event_resume(struct domain *d, struct vm_=
event_domain *ved)
             /* Check for altp2m switch */
             if ( IS_ENABLED(CONFIG_ALTP2M) &&
                  rsp.flags & VM_EVENT_FLAG_ALTERNATE_P2M )
-                p2m_altp2m_check(v, rsp.altp2m_idx);
+                altp2m_check(v, rsp.altp2m_idx);
=20
             if ( rsp.flags & VM_EVENT_FLAG_SET_REGISTERS )
                 vm_event_set_registers(v, &rsp);
diff --git a/xen/include/xen/p2m-common.h b/xen/include/xen/p2m-common.h
index f0bd9a6b9896..6da330acca1f 100644
--- a/xen/include/xen/p2m-common.h
+++ b/xen/include/xen/p2m-common.h
@@ -25,7 +25,7 @@ int unmap_mmio_regions(struct domain *d,
                        mfn_t mfn);
=20
 /* Check to see if vcpu should be switched to a different p2m. */
-void p2m_altp2m_check(struct vcpu *v, uint16_t idx);
+void altp2m_check(struct vcpu *v, uint16_t idx);
=20
 /*
  * Populate-on-Demand
--=20
2.34.1



From xen-devel-bounces@lists.xenproject.org Mon Apr 20 20:25:29 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 20 Apr 2026 20:25:29 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1286490.1567639 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wEvBQ-0004kJ-Tp; Mon, 20 Apr 2026 20:25:28 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1286490.1567639; Mon, 20 Apr 2026 20:25: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 1wEvBQ-0004hL-83; Mon, 20 Apr 2026 20:25:28 +0000
Received: by outflank-mailman (input) for mailman id 1286490;
 Mon, 20 Apr 2026 19:50:59 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <Rose.Spangler@purelymail.com>) id 1wEue3-0006Jl-AX
 for xen-devel@lists.xenproject.org; Mon, 20 Apr 2026 19:50:59 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wEue2-00C1UM-Np
 for xen-devel@lists.xenproject.org; Mon, 20 Apr 2026 21:50:58 +0200
Received: from [10.42.69.9] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <Rose.Spangler@purelymail.com>)
 id 69e6835b-e002-0a2a0a5209dd-0a2a45099984-32
 for <xen-devel@lists.xenproject.org>; Mon, 20 Apr 2026 21:50:58 +0200
Received: from [34.202.193.197] (helo=sendmail.purelymail.com)
 by tlsNG-bad1c0.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.1)
 (envelope-from <Rose.Spangler@purelymail.com>)
 id 69e683a1-2497-0a2a45090019-22cac1c59ac8-3
 for <xen-devel@lists.xenproject.org>; Mon, 20 Apr 2026 21:50:58 +0200
Received: by smtp.purelymail.com (Purelymail SMTP) with ESMTPSA id -306608446; 
 (version=TLSv1.3 cipher=TLS_AES_256_GCM_SHA384);
 Mon, 20 Apr 2026 19:50:54 +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=purelymail1 header.d=purelymail.com header.i="@purelymail.com" header.h="Feedback-ID:Received:From:To:Subject:Date"
DKIM-Signature: a=rsa-sha256; b=K8cAlPAo34D/KbfIAwlhMVleLBpBa7d3aFRxOMyHsW+Ig5Gt7WdPk1bTdYrOA48ZusRfG9g5Pqe9Cw5rCefSUaFKusogC6b7fvdnFQhkTxV2nk5jlXSd2O6G33vUBx2waQk/nvWrUhkTq2/lpgHT6Sh5vvaHUheA474xC0VKdse5tMKfOWQrVJOW3WOxCzmD3rJ304Hj53FG2cfC5wQCsu6/WiYBwtE7kMn+pGgcW0TQ0h23QI/SLqFk7LPIttxLw51f+GoVF9onqXxT0vXy+4j0TGfDzeoSUQ+06sqKdUMkMaCqhu7Dj1QPJwIZ7jfNGPErlOnvHVcceu4eJX8rag==; s=purelymail1; d=purelymail.com; v=1; bh=5qX8VqlfLuFzhxCaItkjpTl/pD3HY4nQgg/454o6cjs=; h=Feedback-ID:Received:From:To:Subject:Date;
Feedback-ID: 685805:22403:null:purelymail
X-Pm-Original-To: xen-devel@lists.xenproject.org
From: Rose.Spangler@purelymail.com
To: xen-devel@lists.xenproject.org
Cc: Rose Spangler <Rose.Spangler@elektrobit.com>,
	Julien Grall <julien@xen.org>,
	Bertrand Marquis <bertrand.marquis@arm.com>,
	Michal Orzel <michal.orzel@amd.com>,
	Volodymyr Babchuk <Volodymyr_Babchuk@epam.com>,
	Sergej Proskurin <proskurin@sec.in.tum.de>,
	Stefano Stabellini <sstabellini@kernel.org>,
	Julien Grall <julien.grall@arm.com>
Subject: [RFC PATCH v6 17/43] arm/p2m: Move hostp2m init/teardown to individual functions
Date: Mon, 20 Apr 2026 15:50:16 -0400
Message-Id: <20260420195042.207624-18-Rose.Spangler@purelymail.com>
X-Mailer: git-send-email 2.34.1
In-Reply-To: <20260420195042.207624-1-Rose.Spangler@purelymail.com>
References: <20260420195042.207624-1-Rose.Spangler@purelymail.com>
MIME-Version: 1.0
Content-Transfer-Encoding: quoted-printable
X-MIME-Autoconverted: from 8bit to quoted-printable by Purelymail
Content-Type: text/plain; charset=UTF-8
X-purgate-ID: tlsNG-bad1c0/1776714658-486A8A53-5272C0EC/0/0
X-purgate-type: clean
X-purgate-size: 10277

From: Rose Spangler <Rose.Spangler@elektrobit.com>

This commit pulls out generic init/teardown functionality out of "p2m_init"
and "p2m_teardown" into "p2m_init_one", "p2m_teardown_one", "p2m_free_one",
and "p2m_flush_table" functions. This allows our future implementation to
reuse existing code for the initialization/teardown of altp2m views.

On failure, the p2m_init_one function returns a null pointer. This means
p2m_init_one doesn't return an error code, which prevents it from
propagating the exact error from p2m_initialise (specifically, ENOMEM if
allocation fails and EBUSY if the VMID pool is exhausted). However,
returning a p2m_domain pointer simplifies usage for callers of
p2m_init_one, as they can receive an allocated and initialized p2m_domain
without needing to handle allocation separately. Therefore, the main
p2m_init function will now return ENOMEM instead of EBUSY when the VMID
pool is exhausted.

This is commit 6/12 of the altp2m_init/altp2m_teardown routines phase.

Signed-off-by: Rose Spangler <Rose.Spangler@elektrobit.com>
Signed-off-by: Sergej Proskurin <proskurin@sec.in.tum.de>
---
Cc: Stefano Stabellini <sstabellini@kernel.org>
Cc: Julien Grall <julien.grall@arm.com>
---
v2: Added the function p2m_flush_table to the previous version.

v3: Removed struct vttbr.

    Moved define INVALID_VTTBR to p2m.h.

    Exported function prototypes of "p2m_flush_table", "p2m_init_one",
    and "p2m_teardown_one" in p2m.h.

    Extended the function "p2m_flush_table" by additionally resetting
    the fields lowest_mapped_gfn and max_mapped_gfn.

    Added a "p2m_flush_tlb" call in "p2m_flush_table". On altp2m reset
    in function "altp2m_reset", it is important to flush the TLBs after
    clearing the root table pages and before clearing the intermediate
    altp2m page tables to prevent illegal access to stalled TLB entries
    on currently active VCPUs.

    Added a check checking whether p2m->root is NULL in p2m_flush_table.

    Renamed the function "p2m_free_one" to "p2m_teardown_one".

    Removed resetting p2m->vttbr in "p2m_teardown_one", as it the p2m
    will be destroyed afterwards.

    Moved call to "p2m_alloc_table" back to "p2m_init_one".

    Moved the introduction of the type p2m_class_t out of this patch.

    Moved the backpointer to the struct domain out of the struct
    p2m_domain.

v4: Replaced the former use of clear_and_clean_page in p2m_flush_table
    by a routine that invalidates every p2m entry atomically. This
    avoids inconsistencies on CPUs that continue to use the views that
    are to be flushed (e.g., see altp2m_reset).

    Removed unnecessary initializations in the functions "p2m_init_one"
    and "p2m_teardown_one".

    Removed the define INVALID_VTTBR as it is not used any more.

    Cosmetic fixes.

v6: Reworked to accommodate the hostp2m being allocated separately from
    arch_domain.

    Split p2m_teardown_one into p2m_teardown_one and p2m_free_one, with
    both having the same semantics as their x86 counterparts.

    The previous version of this patch also added code to p2m_flush_table.
    This has been split out into a separate commit to minimize the number
    of actual changes in this commit.

    Updated to account for the introduction of p2m_final_teardown.  The
    code which previously was used to reclaim resources from the hostp2m
    during p2m_final_teardown was extracted into p2m_free_one. Now,
    p2m_final_teardown will call p2m_free_one on the hostp2m instead. The
    check for whether the p2m was actually initialized was moved into
    p2m_free_one. This means there is a slight behavior change where
    p2m_teardown_allocation will always be called, even if the p2m_domain
    was never initialized. I'm not sure if this is really a big deal (it
    does require the lock to be obtained, but this shouldn't be an issue at
    final teardown?), but if it is then I can duplicate the check from
    p2m_free_one to the top of p2m_final_teardown, which would replicate
    the previous behavior.

    For the sake of making the p2m_init_one function simple to use (and
    match the x86 function prototype), it returns a null pointer on error
    rather than an error code. While on x86 an error from p2m_init_one is
    always due to an ENOMEM return code (from xzalloc, zalloc_cpumask_var),
    on ARM p2m_initialise (called by p2m_init_one) can actually return
    EBUSY if the VMID pool is exhausted. Therefore, in this error case the
    null pointer return value of p2m_init_one obscures the true error code
    (EBUSY). Callers of p2m_init_one always return ENOMEM when p2m_init_one
    returns a null pointer, so this error will be propagated up as ENOMEM
    rather than EBUSY. The alternative to this would be to have callers
    pass a null **p2m_domain to p2m_init_one while still returning an
    integer return code. In order to preserve a common altp2m_init routine,
    this change would also have to be made on x86 (where there wouldn't be
    any real benefit, the return code is truly only ever ENOMEM).
    Therefore, it seems like an acceptable tradeoff to me to obscure the
    error in this case, but if other folks think we should handle this
    differently than I can revisit this.

    The p2m_teardown_allocation call and p2m_init_one return code changes
    mentioned above should be the only actual behavior changes in this
    patch, otherwise it should be just code movement.
---
 xen/arch/arm/include/asm/p2m.h | 12 ++++++
 xen/arch/arm/mmu/p2m.c         | 77 +++++++++++++++++++++++-----------
 2 files changed, 65 insertions(+), 24 deletions(-)

diff --git a/xen/arch/arm/include/asm/p2m.h b/xen/arch/arm/include/asm/p2m.=
h
index 23df91ea13e9..5c6dfe4a9789 100644
--- a/xen/arch/arm/include/asm/p2m.h
+++ b/xen/arch/arm/include/asm/p2m.h
@@ -216,6 +216,18 @@ int p2m_init(struct domain *d);
 int p2m_teardown(struct domain *d);
 void p2m_final_teardown(struct domain *d);
=20
+/* Flushes the page table held by the p2m. */
+int p2m_flush_table(struct p2m_domain *p2m);
+
+/* Initialize the p2m structure. */
+struct p2m_domain *p2m_init_one(struct domain *d);
+
+/* Release resources held by the p2m structure. */
+int p2m_teardown_one(struct p2m_domain *p2m);
+
+/* Free the p2m structure allocation. */
+void p2m_free_one(struct p2m_domain *p2m);
+
 /*
  * Remove mapping refcount on each mapping page in the p2m
  *
diff --git a/xen/arch/arm/mmu/p2m.c b/xen/arch/arm/mmu/p2m.c
index 1009f10e5db4..1d598c66450b 100644
--- a/xen/arch/arm/mmu/p2m.c
+++ b/xen/arch/arm/mmu/p2m.c
@@ -1444,14 +1444,10 @@ static int p2m_alloc_table(struct domain *d)
     return 0;
 }
=20
-int p2m_teardown(struct domain *d)
+int p2m_flush_table(struct p2m_domain *p2m)
 {
-    struct p2m_domain *p2m =3D p2m_get_hostp2m(d);
     unsigned long count =3D 0;
     struct page_info *pg;
-    int rc =3D 0;
-
-    p2m_write_lock(p2m);
=20
     while ( (pg =3D page_list_remove_head(&p2m->pages)) )
     {
@@ -1460,23 +1456,34 @@ int p2m_teardown(struct domain *d)
         /* Arbitrarily preempt every 512 iterations */
         if ( !(count % 512) && hypercall_preempt_check() )
         {
-            rc =3D -ERESTART;
-            break;
+            return -ERESTART;
         }
     }
=20
+    return 0;
+}
+
+int p2m_teardown_one(struct p2m_domain *p2m)
+{
+    int rc;
+
+    p2m_write_lock(p2m);
+    rc =3D p2m_flush_table(p2m);
     p2m_write_unlock(p2m);
=20
     return rc;
 }
=20
-void p2m_final_teardown(struct domain *d)
+int p2m_teardown(struct domain *d)
 {
     struct p2m_domain *p2m =3D p2m_get_hostp2m(d);
=20
-    /* p2m not actually initialized */
-    if ( !p2m->domain )
-        goto free_p2m;
+    return p2m_teardown_one(p2m);
+}
+
+void p2m_final_teardown(struct domain *d)
+{
+    struct p2m_domain *p2m =3D p2m_get_hostp2m(d);
=20
     /*
      * No need to call relinquish_p2m_mapping() here because
@@ -1484,18 +1491,27 @@ void p2m_final_teardown(struct domain *d)
      * where relinquish_p2m_mapping() has been called.
      */
=20
-    ASSERT(page_list_empty(&p2m->pages));
-
     while ( p2m_teardown_allocation(d) =3D=3D -ERESTART )
         continue; /* No preemption support here */
     ASSERT(page_list_empty(&d->arch.paging.p2m_freelist));
=20
+    p2m_free_one(p2m);
+}
+
+void p2m_free_one(struct p2m_domain *p2m)
+{
+    /* p2m not actually initialized */
+    if ( !p2m->domain )
+        goto free_p2m;
+
+    ASSERT(page_list_empty(&p2m->pages));
+
     if ( p2m->root )
         free_domheap_pages(p2m->root, P2M_ROOT_ORDER);
=20
     p2m->root =3D NULL;
=20
-    p2m_free_vmid(d);
+    p2m_free_vmid(p2m->domain);
=20
     radix_tree_destroy(&p2m->mem_access_settings, NULL);
=20
@@ -1511,9 +1527,7 @@ static int p2m_initialise(struct domain *d, struct p2=
m_domain *p2m)
     unsigned int cpu;
=20
     rwlock_init(&p2m->lock);
-    spin_lock_init(&d->arch.paging.lock);
     INIT_PAGE_LIST_HEAD(&p2m->pages);
-    INIT_PAGE_LIST_HEAD(&d->arch.paging.p2m_freelist);
=20
     p2m->vmid =3D INVALID_VMID;
     p2m->max_mapped_gfn =3D _gfn(0);
@@ -1559,22 +1573,37 @@ static int p2m_initialise(struct domain *d, struct =
p2m_domain *p2m)
     return 0;
 }
=20
-int p2m_init(struct domain *d)
+struct p2m_domain *p2m_init_one(struct domain *d)
 {
     struct p2m_domain *p2m =3D xzalloc(struct p2m_domain);
-    int rc;
+
+    if ( !p2m )
+        return NULL;
+
+    if ( !p2m_initialise(d, p2m) )
+        return p2m;
+
+    xfree(p2m);
+    return NULL;
+}
+
+static int p2m_init_hostp2m(struct domain *d)
+{
+    struct p2m_domain *p2m =3D p2m_init_one(d);
=20
     if ( !p2m )
         return -ENOMEM;
=20
-    rc =3D p2m_initialise(d, p2m);
+    d->arch.p2m =3D p2m;
+    return 0;
+}
=20
-    if ( !rc )
-        d->arch.p2m =3D p2m;
-    else
-        xfree(p2m);
+int p2m_init(struct domain *d)
+{
+    spin_lock_init(&d->arch.paging.lock);
+    INIT_PAGE_LIST_HEAD(&d->arch.paging.p2m_freelist);
=20
-    return rc;
+    return p2m_init_hostp2m(d);
 }
=20
 /*
--=20
2.34.1



From xen-devel-bounces@lists.xenproject.org Mon Apr 20 20:25:29 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 20 Apr 2026 20:25:29 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1286480.1567579 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wEvBL-00033E-CV; Mon, 20 Apr 2026 20:25:23 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1286480.1567579; Mon, 20 Apr 2026 20: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 1wEvBK-00030H-W7; Mon, 20 Apr 2026 20:25:22 +0000
Received: by outflank-mailman (input) for mailman id 1286480;
 Mon, 20 Apr 2026 19:50:57 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <Rose.Spangler@purelymail.com>) id 1wEue1-0006In-TJ
 for xen-devel@lists.xenproject.org; Mon, 20 Apr 2026 19:50:57 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wEue1-00C1UM-AE
 for xen-devel@lists.xenproject.org; Mon, 20 Apr 2026 21:50:57 +0200
Received: from [10.42.69.9] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <Rose.Spangler@purelymail.com>)
 id 69e6835b-e002-0a2a0a5209dd-0a2a45099984-28
 for <xen-devel@lists.xenproject.org>; Mon, 20 Apr 2026 21:50:57 +0200
Received: from [34.202.193.197] (helo=sendmail.purelymail.com)
 by tlsNG-bad1c0.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.1)
 (envelope-from <Rose.Spangler@purelymail.com>)
 id 69e683a0-2497-0a2a45090019-22cac1c5875a-3
 for <xen-devel@lists.xenproject.org>; Mon, 20 Apr 2026 21:50:57 +0200
Received: by smtp.purelymail.com (Purelymail SMTP) with ESMTPSA id -306608446; 
 (version=TLSv1.3 cipher=TLS_AES_256_GCM_SHA384);
 Mon, 20 Apr 2026 19:50: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=purelymail1 header.d=purelymail.com header.i="@purelymail.com" header.h="Feedback-ID:Received:From:To:Subject:Date"
DKIM-Signature: a=rsa-sha256; b=ZfRbcmN7j4RW4dTVDZPstZ52p5xuNQyJkowqmjLG7VTyYNxugUPBUj9yDrvIw3BvahQvlL5kQiYvvoSdtFJ17E8ieLE5kq7TScI7xLkqhaDMBxqNcWZp5Lxy92eUjsEqhFo/FyAxraBJCTEU/cxuBMNilRtxcVdl34nMXxSoth0iTmLUhc7D3CH6ToSlNOixxVVwieKzhvtrsiBadPVjeKyr2qeurljwDM/KuRZKwS0KxJSEMNDR/oJ07sTg1FX6yyzMapY+gbj5hYtTdTzTZqWEGUUsZHitUSQ8NILccgAWE9sGK59VBypDy4L/ZWqXbh9hcT9rZmUp/NePUMgUjw==; s=purelymail1; d=purelymail.com; v=1; bh=Hus8g9FcCxBCtWlrCzMkC4ORYsW88lGiIhFMrIDvnqs=; h=Feedback-ID:Received:From:To:Subject:Date;
Feedback-ID: 685805:22403:null:purelymail
X-Pm-Original-To: xen-devel@lists.xenproject.org
From: Rose.Spangler@purelymail.com
To: xen-devel@lists.xenproject.org
Cc: Rose Spangler <Rose.Spangler@elektrobit.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.pau@citrix.com>,
	Stefano Stabellini <sstabellini@kernel.org>
Subject: [RFC PATCH v6 11/43] arm/altp2m: Add support for HVMOP_altp2m_get_domain_state
Date: Mon, 20 Apr 2026 15:50:10 -0400
Message-Id: <20260420195042.207624-12-Rose.Spangler@purelymail.com>
X-Mailer: git-send-email 2.34.1
In-Reply-To: <20260420195042.207624-1-Rose.Spangler@purelymail.com>
References: <20260420195042.207624-1-Rose.Spangler@purelymail.com>
MIME-Version: 1.0
Content-Transfer-Encoding: quoted-printable
X-MIME-Autoconverted: from 8bit to quoted-printable by Purelymail
Content-Type: text/plain; charset=UTF-8
X-purgate-ID: tlsNG-bad1c0/1776714657-8BF7EA53-C04C92A3/0/0
X-purgate-type: clean
X-purgate-size: 1279

From: Rose Spangler <Rose.Spangler@elektrobit.com>

This commit adds support for the altp2m_get_domain_state HVMOP on ARM. All
code used in the command implementation already works on ARM, so no further
changes beyond moving the #ifdef are necessary.

This is commit 1/1 of the get_domain_state phase.

Signed-off-by: Rose Spangler <Rose.Spangler@elektrobit.com>
---
v6: Introduced this patch.

    This commit can be squashed into the previous commit for the actual
    submission if that would be preferred, but I thought it might be easier
    to understand the command #ifdef gate approach by splitting this into a
    separate patch.
---
 xen/common/altp2m.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/xen/common/altp2m.c b/xen/common/altp2m.c
index 6481fae1ed12..3a3283f0860a 100644
--- a/xen/common/altp2m.c
+++ b/xen/common/altp2m.c
@@ -124,12 +124,12 @@ int do_altp2m_op(
=20
     switch ( a.cmd )
     {
-#ifdef CONFIG_X86
     case HVMOP_altp2m_get_domain_state:
         a.u.domain_state.state =3D altp2m_active(d);
         rc =3D __copy_to_guest(arg, &a, 1) ? -EFAULT : 0;
         break;
=20
+#ifdef CONFIG_X86
     case HVMOP_altp2m_set_domain_state:
     {
         struct vcpu *v;
--=20
2.34.1



From xen-devel-bounces@lists.xenproject.org Mon Apr 20 20:25:29 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 20 Apr 2026 20:25:29 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1286479.1567568 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wEvBK-0002me-Lp; Mon, 20 Apr 2026 20:25:22 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1286479.1567568; Mon, 20 Apr 2026 20:25: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 1wEvBK-0002kN-F8; Mon, 20 Apr 2026 20:25:22 +0000
Received: by outflank-mailman (input) for mailman id 1286479;
 Mon, 20 Apr 2026 19:50:56 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <Rose.Spangler@purelymail.com>) id 1wEue0-0006IW-LG
 for xen-devel@lists.xenproject.org; Mon, 20 Apr 2026 19:50:56 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wEue0-00EWC2-1x
 for xen-devel@lists.xenproject.org; Mon, 20 Apr 2026 21:50:56 +0200
Received: from [10.42.69.8] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <Rose.Spangler@purelymail.com>)
 id 69e6835b-5cb7-0a2a0a5109dd-0a2a4508c320-28
 for <xen-devel@lists.xenproject.org>; Mon, 20 Apr 2026 21:50:56 +0200
Received: from [34.202.193.197] (helo=sendmail.purelymail.com)
 by tlsNG-c1860d.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.1)
 (envelope-from <Rose.Spangler@purelymail.com>)
 id 69e6839e-63b5-0a2a45080019-22cac1c59c98-3
 for <xen-devel@lists.xenproject.org>; Mon, 20 Apr 2026 21:50:55 +0200
Received: by smtp.purelymail.com (Purelymail SMTP) with ESMTPSA id -306608446; 
 (version=TLSv1.3 cipher=TLS_AES_256_GCM_SHA384);
 Mon, 20 Apr 2026 19:50: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=purelymail1 header.d=purelymail.com header.i="@purelymail.com" header.h="Feedback-ID:Received:From:To:Subject:Date"
DKIM-Signature: a=rsa-sha256; b=QHeYVgAjoAe2aeyzRnA9SjAaQGGMS5KFcHverUnPbaE0xdYsYbbfpAzsen8s6X4NnAaGSLFaihsmFazNvfG5+s0lGodMF99KDWyzJUYWXu603latBFwPdEsMHQ44Am9HyLoilxqvTfwGda4pPSyr/FFYsYURtvjALB1FDXc6I7k+ckcIvX+UL52Wqnw2aTUxfSWabc15IHghbn94xmnUOKcTC0AW4fABs+QBOPfxNBmEmtgn52UaA45d9qXuW0qFCm9lzjoLKUrwtlhE6OHuKE+VfTudwjpkxBj7IK5loLZ5DPsHtrVW8kQviM9JkE3FKtq0NIHIOvVeteyX7vZDKA==; s=purelymail1; d=purelymail.com; v=1; bh=SVKLQ6kcKUAU2bennXpDwH0c/FyTIXAe5xYEJVfFFsY=; h=Feedback-ID:Received:From:To:Subject:Date;
Feedback-ID: 685805:22403:null:purelymail
X-Pm-Original-To: xen-devel@lists.xenproject.org
From: Rose.Spangler@purelymail.com
To: xen-devel@lists.xenproject.org
Cc: Rose Spangler <Rose.Spangler@elektrobit.com>,
	Jan Beulich <jbeulich@suse.com>,
	Andrew Cooper <andrew.cooper3@citrix.com>,
	=?UTF-8?q?Roger=20Pau=20Monn=C3=A9?= <roger.pau@citrix.com>,
	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>,
	"Daniel P. Smith" <dpsmith@apertussolutions.com>,
	Aqib Javaid <Aqib.Javaid@elektrobit.com>
Subject: [RFC PATCH v6 09/43] altp2m: Move do_altp2m_op to common code
Date: Mon, 20 Apr 2026 15:50:08 -0400
Message-Id: <20260420195042.207624-10-Rose.Spangler@purelymail.com>
X-Mailer: git-send-email 2.34.1
In-Reply-To: <20260420195042.207624-1-Rose.Spangler@purelymail.com>
References: <20260420195042.207624-1-Rose.Spangler@purelymail.com>
MIME-Version: 1.0
Content-Transfer-Encoding: quoted-printable
X-MIME-Autoconverted: from 8bit to quoted-printable by Purelymail
Content-Type: text/plain; charset=UTF-8
X-purgate-ID: tlsNG-c1860d/1776714656-C2B74DB1-90B90380/0/0
X-purgate-type: clean
X-purgate-size: 26850

From: Rose Spangler <Rose.Spangler@elektrobit.com>

This commit moves the altp2m HVMOP implementation to common code, making it
possible to re-use it across architectures. In this commit, the entire
implementation is gated behind CONFIG_X86, with no changes to the body of
do_altp2m_op. A stub implementation is added for ARM, which will be removed
once do_altp2m_op has been modified to add ARM support.

This commit contains only code movement, and no change in functionality is
intended.

This is commit 1/2 of the common do_altp2m_op phase.

Signed-off-by: Rose Spangler <Rose.Spangler@elektrobit.com>
Signed-off-by: Aqib Javaid <Aqib.Javaid@elektrobit.com>
---
v6: Introduced this patch.
---
 xen/arch/x86/hvm/hvm.c   | 400 -------------------------------------
 xen/common/altp2m.c      | 413 +++++++++++++++++++++++++++++++++++++++
 xen/include/xen/altp2m.h |  11 ++
 3 files changed, 424 insertions(+), 400 deletions(-)

diff --git a/xen/arch/x86/hvm/hvm.c b/xen/arch/x86/hvm/hvm.c
index 5b6e91adce17..4adcc3c49d95 100644
--- a/xen/arch/x86/hvm/hvm.c
+++ b/xen/arch/x86/hvm/hvm.c
@@ -4526,406 +4526,6 @@ static int hvmop_get_param(
     return rc;
 }
=20
-/*
- * altp2m operations are envisioned as being used in several different
- * modes:
- *
- * - external: All control and decisions are made by an external agent
- *   running domain 0.
- *
- * - internal: altp2m operations are used exclusively by an in-guest
- *   agent to protect itself from the guest kernel and in-guest
- *   attackers.
- *
- * - coordinated: An in-guest agent handles #VE and VMFUNCs locally,
- *   but makes requests of an agent running outside the domain for
- *   bigger changes (such as modifying altp2m entires).
- *
- * This corresponds to the three values for HVM_PARAM_ALTP2M
- * (external, mixed, limited). All three models have advantages and
- * disadvantages.
- *
- * Normally hypercalls made by a program in domain 0 in order to
- * control a guest would be DOMCTLs rather than HVMOPs.  But in order
- * to properly enable the 'internal' use case, as well as to avoid
- * fragmentation, all altp2m subops should come under this single
- * HVMOP.
- *
- * Note that 'internal' mode (HVM_PARAM_ALTP2M =3D=3D XEN_ALTP2M_mixed)
- * has not been evaluated for safety from a security perspective.
- * Before using this mode in a security-critical environment, each
- * subop should be evaluated for safety, with unsafe subops
- * blacklisted in xsm_hvm_altp2mhvm_op().
- */
-static int do_altp2m_op(
-    XEN_GUEST_HANDLE_PARAM(void) arg)
-{
-#ifdef CONFIG_ALTP2M
-    struct xen_hvm_altp2m_op a;
-    struct domain *d =3D NULL;
-    int rc =3D 0;
-    uint64_t mode;
-
-    if ( !altp2m_supported() )
-        return -EOPNOTSUPP;
-
-    if ( copy_from_guest(&a, arg, 1) )
-        return -EFAULT;
-
-    if ( a.pad1 || a.pad2 ||
-         (a.version !=3D HVMOP_ALTP2M_INTERFACE_VERSION) )
-        return -EINVAL;
-
-    switch ( a.cmd )
-    {
-    case HVMOP_altp2m_get_domain_state:
-    case HVMOP_altp2m_set_domain_state:
-    case HVMOP_altp2m_vcpu_enable_notify:
-    case HVMOP_altp2m_vcpu_disable_notify:
-    case HVMOP_altp2m_create_p2m:
-    case HVMOP_altp2m_destroy_p2m:
-    case HVMOP_altp2m_switch_p2m:
-    case HVMOP_altp2m_set_suppress_ve:
-    case HVMOP_altp2m_set_suppress_ve_multi:
-    case HVMOP_altp2m_get_suppress_ve:
-    case HVMOP_altp2m_set_mem_access:
-    case HVMOP_altp2m_set_mem_access_multi:
-    case HVMOP_altp2m_get_mem_access:
-    case HVMOP_altp2m_change_gfn:
-    case HVMOP_altp2m_get_p2m_idx:
-    case HVMOP_altp2m_set_visibility:
-        break;
-
-    default:
-        return -EOPNOTSUPP;
-    }
-
-    d =3D rcu_lock_domain_by_any_id(a.domain);
-
-    if ( d =3D=3D NULL )
-        return -ESRCH;
-
-    if ( !is_hvm_domain(d) )
-    {
-        rc =3D -EOPNOTSUPP;
-        goto out;
-    }
-
-    if ( (a.cmd !=3D HVMOP_altp2m_get_domain_state) &&
-         (a.cmd !=3D HVMOP_altp2m_set_domain_state) &&
-         !d->altp2m_active )
-    {
-        rc =3D -EOPNOTSUPP;
-        goto out;
-    }
-
-    mode =3D d->arch.hvm.params[HVM_PARAM_ALTP2M];
-
-    if ( XEN_ALTP2M_disabled =3D=3D mode )
-    {
-        rc =3D -EINVAL;
-        goto out;
-    }
-
-    if ( d->nr_altp2m =3D=3D 0 )
-    {
-        rc =3D -EOPNOTSUPP;
-        goto out;
-    }
-
-    if ( (rc =3D xsm_hvm_altp2mhvm_op(XSM_OTHER, d, mode, a.cmd)) )
-        goto out;
-
-    switch ( a.cmd )
-    {
-    case HVMOP_altp2m_get_domain_state:
-        a.u.domain_state.state =3D altp2m_active(d);
-        rc =3D __copy_to_guest(arg, &a, 1) ? -EFAULT : 0;
-        break;
-
-    case HVMOP_altp2m_set_domain_state:
-    {
-        struct vcpu *v;
-        bool ostate;
-
-        if ( nestedhvm_enabled(d) )
-        {
-            rc =3D -EINVAL;
-            break;
-        }
-
-        rc =3D domain_pause_except_self(d);
-        if ( rc )
-            break;
-
-        ostate =3D d->altp2m_active;
-        d->altp2m_active =3D !!a.u.domain_state.state;
-
-        /* If the alternate p2m state has changed, handle appropriately */
-        if ( d->altp2m_active !=3D ostate &&
-             (ostate || !(rc =3D altp2m_init_by_id(d, 0))) )
-        {
-            for_each_vcpu( d, v )
-            {
-                if ( !ostate )
-                    altp2m_vcpu_initialise(v);
-                else
-                    altp2m_vcpu_destroy(v);
-            }
-
-            if ( ostate )
-                altp2m_flush(d);
-        }
-        else if ( rc )
-            d->altp2m_active =3D false;
-
-        domain_unpause_except_self(d);
-        break;
-    }
-
-    case HVMOP_altp2m_vcpu_enable_notify:
-    {
-        struct vcpu *v;
-
-        if ( a.u.enable_notify.pad ||
-             a.u.enable_notify.vcpu_id >=3D d->max_vcpus )
-        {
-            rc =3D -EINVAL;
-            break;
-        }
-
-        if ( !cpu_has_vmx_virt_exceptions )
-        {
-            rc =3D -EOPNOTSUPP;
-            break;
-        }
-
-        v =3D d->vcpu[a.u.enable_notify.vcpu_id];
-
-        rc =3D altp2m_vcpu_enable_ve(v, _gfn(a.u.enable_notify.gfn));
-        break;
-    }
-
-    case HVMOP_altp2m_vcpu_disable_notify:
-    {
-        struct vcpu *v;
-
-        if ( a.u.disable_notify.vcpu_id >=3D d->max_vcpus )
-        {
-            rc =3D -EINVAL;
-            break;
-        }
-
-        if ( !cpu_has_vmx_virt_exceptions )
-        {
-            rc =3D -EOPNOTSUPP;
-            break;
-        }
-
-        v =3D d->vcpu[a.u.enable_notify.vcpu_id];
-
-        altp2m_vcpu_disable_ve(v);
-        break;
-    }
-
-    case HVMOP_altp2m_create_p2m:
-        rc =3D altp2m_init_next_available(d, &a.u.view.view,
-                                        a.u.view.hvmmem_default_access);
-        if ( !rc )
-            rc =3D __copy_to_guest(arg, &a, 1) ? -EFAULT : 0;
-        break;
-
-    case HVMOP_altp2m_destroy_p2m:
-        rc =3D altp2m_destroy_by_id(d, a.u.view.view);
-        break;
-
-    case HVMOP_altp2m_switch_p2m:
-        rc =3D altp2m_switch_domain_altp2m_by_id(d, a.u.view.view);
-        break;
-
-    case HVMOP_altp2m_set_suppress_ve:
-        if ( a.u.suppress_ve.pad1 || a.u.suppress_ve.pad2 )
-            rc =3D -EINVAL;
-        else
-        {
-            gfn_t gfn =3D _gfn(a.u.suppress_ve.gfn);
-            unsigned int altp2m_idx =3D a.u.suppress_ve.view;
-            bool suppress_ve =3D a.u.suppress_ve.suppress_ve;
-
-            rc =3D p2m_set_suppress_ve(d, gfn, suppress_ve, altp2m_idx);
-        }
-        break;
-
-    case HVMOP_altp2m_set_suppress_ve_multi:
-    {
-        uint64_t max_phys_addr =3D (1UL << d->arch.cpuid->extd.maxphysaddr=
) - 1;
-
-        a.u.suppress_ve_multi.last_gfn =3D min(a.u.suppress_ve_multi.last_=
gfn,
-                                             max_phys_addr);
-
-        if ( a.u.suppress_ve_multi.pad1 ||
-             a.u.suppress_ve_multi.first_gfn > a.u.suppress_ve_multi.last_=
gfn )
-            rc =3D -EINVAL;
-        else
-        {
-            rc =3D p2m_set_suppress_ve_multi(d, &a.u.suppress_ve_multi);
-            if ( (!rc || rc =3D=3D -ERESTART) && __copy_to_guest(arg, &a, =
1) )
-                rc =3D -EFAULT;
-        }
-        break;
-    }
-
-    case HVMOP_altp2m_get_suppress_ve:
-        if ( a.u.suppress_ve.pad1 || a.u.suppress_ve.pad2 )
-            rc =3D -EINVAL;
-        else
-        {
-            gfn_t gfn =3D _gfn(a.u.suppress_ve.gfn);
-            unsigned int altp2m_idx =3D a.u.suppress_ve.view;
-            bool suppress_ve;
-
-            rc =3D p2m_get_suppress_ve(d, gfn, &suppress_ve, altp2m_idx);
-            if ( !rc )
-            {
-                a.u.suppress_ve.suppress_ve =3D suppress_ve;
-                rc =3D __copy_to_guest(arg, &a, 1) ? -EFAULT : 0;
-            }
-        }
-        break;
-
-    case HVMOP_altp2m_set_mem_access:
-        if ( !vm_event_is_enabled(current) )
-        {
-            rc =3D -EOPNOTSUPP;
-            break;
-        }
-
-        if ( a.u.mem_access.pad )
-            rc =3D -EINVAL;
-        else
-            rc =3D p2m_set_mem_access(d, _gfn(a.u.mem_access.gfn), 1, 0, 0=
,
-                                    a.u.mem_access.access,
-                                    a.u.mem_access.view);
-        break;
-
-    case HVMOP_altp2m_set_mem_access_multi:
-        if ( !vm_event_is_enabled(current) )
-        {
-            rc =3D -EOPNOTSUPP;
-            break;
-        }
-
-        if ( a.u.set_mem_access_multi.pad ||
-             a.u.set_mem_access_multi.opaque > a.u.set_mem_access_multi.nr=
 )
-        {
-            rc =3D -EINVAL;
-            break;
-        }
-
-        /*
-         * Unlike XENMEM_access_op_set_access_multi, we don't need any bit=
s of
-         * the 'continuation' counter to be zero (to stash a command in).
-         * However, 0x40 is a good 'stride' to make sure that we make
-         * a reasonable amount of forward progress before yielding,
-         * so use a mask of 0x3F here.
-         */
-        rc =3D p2m_set_mem_access_multi(d, a.u.set_mem_access_multi.pfn_li=
st,
-                                      a.u.set_mem_access_multi.access_list=
,
-                                      a.u.set_mem_access_multi.nr,
-                                      a.u.set_mem_access_multi.opaque,
-                                      0x3F,
-                                      a.u.set_mem_access_multi.view);
-        if ( rc > 0 )
-        {
-            a.u.set_mem_access_multi.opaque =3D rc;
-            rc =3D -ERESTART;
-            if ( __copy_field_to_guest(guest_handle_cast(arg, xen_hvm_altp=
2m_op_t),
-                                       &a, u.set_mem_access_multi.opaque) =
)
-                rc =3D -EFAULT;
-        }
-        break;
-
-    case HVMOP_altp2m_get_mem_access:
-        if ( !vm_event_is_enabled(current) )
-        {
-            rc =3D -EOPNOTSUPP;
-            break;
-        }
-
-        if ( a.u.mem_access.pad )
-            rc =3D -EINVAL;
-        else
-        {
-            xenmem_access_t access;
-
-            rc =3D p2m_get_mem_access(d, _gfn(a.u.mem_access.gfn), &access=
,
-                                    a.u.mem_access.view);
-            if ( !rc )
-            {
-                a.u.mem_access.access =3D access;
-                rc =3D __copy_to_guest(arg, &a, 1) ? -EFAULT : 0;
-            }
-        }
-        break;
-
-    case HVMOP_altp2m_change_gfn:
-        if ( a.u.change_gfn.pad1 || a.u.change_gfn.pad2 )
-            rc =3D -EINVAL;
-        else
-            rc =3D altp2m_change_gfn(d, a.u.change_gfn.view,
-                                   _gfn(a.u.change_gfn.old_gfn),
-                                   _gfn(a.u.change_gfn.new_gfn));
-        break;
-
-    case HVMOP_altp2m_get_p2m_idx:
-    {
-        struct vcpu *v;
-
-        if ( !altp2m_active(d) )
-        {
-            rc =3D -EOPNOTSUPP;
-            break;
-        }
-
-        if ( (v =3D domain_vcpu(d, a.u.get_vcpu_p2m_idx.vcpu_id)) =3D=3D N=
ULL )
-        {
-            rc =3D -EINVAL;
-            break;
-        }
-
-        a.u.get_vcpu_p2m_idx.altp2m_idx =3D altp2m_vcpu_idx(v);
-        rc =3D __copy_to_guest(arg, &a, 1) ? -EFAULT : 0;
-        break;
-    }
-
-    case HVMOP_altp2m_set_visibility:
-    {
-        unsigned int idx =3D a.u.set_visibility.altp2m_idx;
-
-        if ( a.u.set_visibility.pad )
-            rc =3D -EINVAL;
-        else if ( !altp2m_active(d) )
-            rc =3D -EOPNOTSUPP;
-        else
-            rc =3D altp2m_set_view_visibility(d, idx, a.u.set_visibility.v=
isible);
-        break;
-    }
-
-    default:
-        ASSERT_UNREACHABLE();
-        rc =3D -EOPNOTSUPP;
-        break;
-    }
-
- out:
-    rcu_unlock_domain(d);
-
-    return rc;
-#else /* !CONFIG_ALTP2M */
-    return -EOPNOTSUPP;
-#endif /* CONFIG_ALTP2M */
-}
-
 DEFINE_XEN_GUEST_HANDLE(compat_hvm_altp2m_op_t);
=20
 /*
diff --git a/xen/common/altp2m.c b/xen/common/altp2m.c
index 1a4e102324d4..a43b3a3e34b3 100644
--- a/xen/common/altp2m.c
+++ b/xen/common/altp2m.c
@@ -1,5 +1,418 @@
 /* SPDX-License-Identifier: GPL-2.0-only */
 #include <xen/altp2m.h>
+#include <xen/guest_access.h>
+#include <xen/vm_event.h>
+
+#include <asm/altp2m.h>
+
+#include <public/hvm/params.h>
+
+#include <xsm/xsm.h>
+
+#ifdef CONFIG_X86
+#include <asm/hvm/nestedhvm.h>
+/*
+ * altp2m operations are envisioned as being used in several different
+ * modes:
+ *
+ * - external: All control and decisions are made by an external agent
+ *   running domain 0.
+ *
+ * - internal: altp2m operations are used exclusively by an in-guest
+ *   agent to protect itself from the guest kernel and in-guest
+ *   attackers.
+ *
+ * - coordinated: An in-guest agent handles #VE and VMFUNCs locally,
+ *   but makes requests of an agent running outside the domain for
+ *   bigger changes (such as modifying altp2m entires).
+ *
+ * This corresponds to the three values for HVM_PARAM_ALTP2M
+ * (external, mixed, limited). All three models have advantages and
+ * disadvantages.
+ *
+ * Normally hypercalls made by a program in domain 0 in order to
+ * control a guest would be DOMCTLs rather than HVMOPs.  But in order
+ * to properly enable the 'internal' use case, as well as to avoid
+ * fragmentation, all altp2m subops should come under this single
+ * HVMOP.
+ *
+ * Note that 'internal' mode (HVM_PARAM_ALTP2M =3D=3D XEN_ALTP2M_mixed)
+ * has not been evaluated for safety from a security perspective.
+ * Before using this mode in a security-critical environment, each
+ * subop should be evaluated for safety, with unsafe subops
+ * blacklisted in xsm_hvm_altp2mhvm_op().
+ */
+int do_altp2m_op(
+    XEN_GUEST_HANDLE_PARAM(void) arg)
+{
+    struct xen_hvm_altp2m_op a;
+    struct domain *d =3D NULL;
+    int rc =3D 0;
+    uint64_t mode;
+
+    if ( !altp2m_supported() )
+        return -EOPNOTSUPP;
+
+    if ( copy_from_guest(&a, arg, 1) )
+        return -EFAULT;
+
+    if ( a.pad1 || a.pad2 ||
+         (a.version !=3D HVMOP_ALTP2M_INTERFACE_VERSION) )
+        return -EINVAL;
+
+    switch ( a.cmd )
+    {
+    case HVMOP_altp2m_get_domain_state:
+    case HVMOP_altp2m_set_domain_state:
+    case HVMOP_altp2m_vcpu_enable_notify:
+    case HVMOP_altp2m_vcpu_disable_notify:
+    case HVMOP_altp2m_create_p2m:
+    case HVMOP_altp2m_destroy_p2m:
+    case HVMOP_altp2m_switch_p2m:
+    case HVMOP_altp2m_set_suppress_ve:
+    case HVMOP_altp2m_set_suppress_ve_multi:
+    case HVMOP_altp2m_get_suppress_ve:
+    case HVMOP_altp2m_set_mem_access:
+    case HVMOP_altp2m_set_mem_access_multi:
+    case HVMOP_altp2m_get_mem_access:
+    case HVMOP_altp2m_change_gfn:
+    case HVMOP_altp2m_get_p2m_idx:
+    case HVMOP_altp2m_set_visibility:
+        break;
+
+    default:
+        return -EOPNOTSUPP;
+    }
+
+    d =3D rcu_lock_domain_by_any_id(a.domain);
+
+    if ( d =3D=3D NULL )
+        return -ESRCH;
+
+    if ( !is_hvm_domain(d) )
+    {
+        rc =3D -EOPNOTSUPP;
+        goto out;
+    }
+
+    if ( (a.cmd !=3D HVMOP_altp2m_get_domain_state) &&
+         (a.cmd !=3D HVMOP_altp2m_set_domain_state) &&
+         !d->altp2m_active )
+    {
+        rc =3D -EOPNOTSUPP;
+        goto out;
+    }
+
+    mode =3D d->arch.hvm.params[HVM_PARAM_ALTP2M];
+
+    if ( XEN_ALTP2M_disabled =3D=3D mode )
+    {
+        rc =3D -EINVAL;
+        goto out;
+    }
+
+    if ( d->nr_altp2m =3D=3D 0 )
+    {
+        rc =3D -EOPNOTSUPP;
+        goto out;
+    }
+
+    if ( (rc =3D xsm_hvm_altp2mhvm_op(XSM_OTHER, d, mode, a.cmd)) )
+        goto out;
+
+    switch ( a.cmd )
+    {
+    case HVMOP_altp2m_get_domain_state:
+        a.u.domain_state.state =3D altp2m_active(d);
+        rc =3D __copy_to_guest(arg, &a, 1) ? -EFAULT : 0;
+        break;
+
+    case HVMOP_altp2m_set_domain_state:
+    {
+        struct vcpu *v;
+        bool ostate;
+
+        if ( nestedhvm_enabled(d) )
+        {
+            rc =3D -EINVAL;
+            break;
+        }
+
+        rc =3D domain_pause_except_self(d);
+        if ( rc )
+            break;
+
+        ostate =3D d->altp2m_active;
+        d->altp2m_active =3D !!a.u.domain_state.state;
+
+        /* If the alternate p2m state has changed, handle appropriately */
+        if ( d->altp2m_active !=3D ostate &&
+             (ostate || !(rc =3D altp2m_init_by_id(d, 0))) )
+        {
+            for_each_vcpu( d, v )
+            {
+                if ( !ostate )
+                    altp2m_vcpu_initialise(v);
+                else
+                    altp2m_vcpu_destroy(v);
+            }
+
+            if ( ostate )
+                altp2m_flush(d);
+        }
+        else if ( rc )
+            d->altp2m_active =3D false;
+
+        domain_unpause_except_self(d);
+        break;
+    }
+
+    case HVMOP_altp2m_vcpu_enable_notify:
+    {
+        struct vcpu *v;
+
+        if ( a.u.enable_notify.pad ||
+             a.u.enable_notify.vcpu_id >=3D d->max_vcpus )
+        {
+            rc =3D -EINVAL;
+            break;
+        }
+
+        if ( !cpu_has_vmx_virt_exceptions )
+        {
+            rc =3D -EOPNOTSUPP;
+            break;
+        }
+
+        v =3D d->vcpu[a.u.enable_notify.vcpu_id];
+
+        rc =3D altp2m_vcpu_enable_ve(v, _gfn(a.u.enable_notify.gfn));
+        break;
+    }
+
+    case HVMOP_altp2m_vcpu_disable_notify:
+    {
+        struct vcpu *v;
+
+        if ( a.u.disable_notify.vcpu_id >=3D d->max_vcpus )
+        {
+            rc =3D -EINVAL;
+            break;
+        }
+
+        if ( !cpu_has_vmx_virt_exceptions )
+        {
+            rc =3D -EOPNOTSUPP;
+            break;
+        }
+
+        v =3D d->vcpu[a.u.enable_notify.vcpu_id];
+
+        altp2m_vcpu_disable_ve(v);
+        break;
+    }
+
+    case HVMOP_altp2m_create_p2m:
+        rc =3D altp2m_init_next_available(d, &a.u.view.view,
+                                        a.u.view.hvmmem_default_access);
+        if ( !rc )
+            rc =3D __copy_to_guest(arg, &a, 1) ? -EFAULT : 0;
+        break;
+
+    case HVMOP_altp2m_destroy_p2m:
+        rc =3D altp2m_destroy_by_id(d, a.u.view.view);
+        break;
+
+    case HVMOP_altp2m_switch_p2m:
+        rc =3D altp2m_switch_domain_altp2m_by_id(d, a.u.view.view);
+        break;
+
+    case HVMOP_altp2m_set_suppress_ve:
+        if ( a.u.suppress_ve.pad1 || a.u.suppress_ve.pad2 )
+            rc =3D -EINVAL;
+        else
+        {
+            gfn_t gfn =3D _gfn(a.u.suppress_ve.gfn);
+            unsigned int altp2m_idx =3D a.u.suppress_ve.view;
+            bool suppress_ve =3D a.u.suppress_ve.suppress_ve;
+
+            rc =3D p2m_set_suppress_ve(d, gfn, suppress_ve, altp2m_idx);
+        }
+        break;
+
+    case HVMOP_altp2m_set_suppress_ve_multi:
+    {
+        uint64_t max_phys_addr =3D (1UL << d->arch.cpuid->extd.maxphysaddr=
) - 1;
+
+        a.u.suppress_ve_multi.last_gfn =3D min(a.u.suppress_ve_multi.last_=
gfn,
+                                             max_phys_addr);
+
+        if ( a.u.suppress_ve_multi.pad1 ||
+             a.u.suppress_ve_multi.first_gfn > a.u.suppress_ve_multi.last_=
gfn )
+            rc =3D -EINVAL;
+        else
+        {
+            rc =3D p2m_set_suppress_ve_multi(d, &a.u.suppress_ve_multi);
+            if ( (!rc || rc =3D=3D -ERESTART) && __copy_to_guest(arg, &a, =
1) )
+                rc =3D -EFAULT;
+        }
+        break;
+    }
+
+    case HVMOP_altp2m_get_suppress_ve:
+        if ( a.u.suppress_ve.pad1 || a.u.suppress_ve.pad2 )
+            rc =3D -EINVAL;
+        else
+        {
+            gfn_t gfn =3D _gfn(a.u.suppress_ve.gfn);
+            unsigned int altp2m_idx =3D a.u.suppress_ve.view;
+            bool suppress_ve;
+
+            rc =3D p2m_get_suppress_ve(d, gfn, &suppress_ve, altp2m_idx);
+            if ( !rc )
+            {
+                a.u.suppress_ve.suppress_ve =3D suppress_ve;
+                rc =3D __copy_to_guest(arg, &a, 1) ? -EFAULT : 0;
+            }
+        }
+        break;
+
+    case HVMOP_altp2m_set_mem_access:
+        if ( !vm_event_is_enabled(current) )
+        {
+            rc =3D -EOPNOTSUPP;
+            break;
+        }
+
+        if ( a.u.mem_access.pad )
+            rc =3D -EINVAL;
+        else
+            rc =3D p2m_set_mem_access(d, _gfn(a.u.mem_access.gfn), 1, 0, 0=
,
+                                    a.u.mem_access.access,
+                                    a.u.mem_access.view);
+        break;
+
+    case HVMOP_altp2m_set_mem_access_multi:
+        if ( !vm_event_is_enabled(current) )
+        {
+            rc =3D -EOPNOTSUPP;
+            break;
+        }
+
+        if ( a.u.set_mem_access_multi.pad ||
+             a.u.set_mem_access_multi.opaque > a.u.set_mem_access_multi.nr=
 )
+        {
+            rc =3D -EINVAL;
+            break;
+        }
+
+        /*
+         * Unlike XENMEM_access_op_set_access_multi, we don't need any bit=
s of
+         * the 'continuation' counter to be zero (to stash a command in).
+         * However, 0x40 is a good 'stride' to make sure that we make
+         * a reasonable amount of forward progress before yielding,
+         * so use a mask of 0x3F here.
+         */
+        rc =3D p2m_set_mem_access_multi(d, a.u.set_mem_access_multi.pfn_li=
st,
+                                      a.u.set_mem_access_multi.access_list=
,
+                                      a.u.set_mem_access_multi.nr,
+                                      a.u.set_mem_access_multi.opaque,
+                                      0x3F,
+                                      a.u.set_mem_access_multi.view);
+        if ( rc > 0 )
+        {
+            a.u.set_mem_access_multi.opaque =3D rc;
+            rc =3D -ERESTART;
+            if ( __copy_field_to_guest(guest_handle_cast(arg, xen_hvm_altp=
2m_op_t),
+                                       &a, u.set_mem_access_multi.opaque) =
)
+                rc =3D -EFAULT;
+        }
+        break;
+
+    case HVMOP_altp2m_get_mem_access:
+        if ( !vm_event_is_enabled(current) )
+        {
+            rc =3D -EOPNOTSUPP;
+            break;
+        }
+
+        if ( a.u.mem_access.pad )
+            rc =3D -EINVAL;
+        else
+        {
+            xenmem_access_t access;
+
+            rc =3D p2m_get_mem_access(d, _gfn(a.u.mem_access.gfn), &access=
,
+                                    a.u.mem_access.view);
+            if ( !rc )
+            {
+                a.u.mem_access.access =3D access;
+                rc =3D __copy_to_guest(arg, &a, 1) ? -EFAULT : 0;
+            }
+        }
+        break;
+
+    case HVMOP_altp2m_change_gfn:
+        if ( a.u.change_gfn.pad1 || a.u.change_gfn.pad2 )
+            rc =3D -EINVAL;
+        else
+            rc =3D altp2m_change_gfn(d, a.u.change_gfn.view,
+                                   _gfn(a.u.change_gfn.old_gfn),
+                                   _gfn(a.u.change_gfn.new_gfn));
+        break;
+
+    case HVMOP_altp2m_get_p2m_idx:
+    {
+        struct vcpu *v;
+
+        if ( !altp2m_active(d) )
+        {
+            rc =3D -EOPNOTSUPP;
+            break;
+        }
+
+        if ( (v =3D domain_vcpu(d, a.u.get_vcpu_p2m_idx.vcpu_id)) =3D=3D N=
ULL )
+        {
+            rc =3D -EINVAL;
+            break;
+        }
+
+        a.u.get_vcpu_p2m_idx.altp2m_idx =3D altp2m_vcpu_idx(v);
+        rc =3D __copy_to_guest(arg, &a, 1) ? -EFAULT : 0;
+        break;
+    }
+
+    case HVMOP_altp2m_set_visibility:
+    {
+        unsigned int idx =3D a.u.set_visibility.altp2m_idx;
+
+        if ( a.u.set_visibility.pad )
+            rc =3D -EINVAL;
+        else if ( !altp2m_active(d) )
+            rc =3D -EOPNOTSUPP;
+        else
+            rc =3D altp2m_set_view_visibility(d, idx, a.u.set_visibility.v=
isible);
+        break;
+    }
+
+    default:
+        ASSERT_UNREACHABLE();
+        rc =3D -EOPNOTSUPP;
+        break;
+    }
+
+ out:
+    rcu_unlock_domain(d);
+
+    return rc;
+}
+#else
+int do_altp2m_op(
+    XEN_GUEST_HANDLE_PARAM(void) arg)
+{
+    return -EOPNOTSUPP;
+}
+#endif
=20
 /*
  * Local variables:
diff --git a/xen/include/xen/altp2m.h b/xen/include/xen/altp2m.h
index b3b21124dd7e..be627152668a 100644
--- a/xen/include/xen/altp2m.h
+++ b/xen/include/xen/altp2m.h
@@ -2,8 +2,12 @@
 #ifndef __XEN_ALTP2M_H__
 #define __XEN_ALTP2M_H__
=20
+#include <xen/errno.h>
+#include <xen/param.h>
 #include <xen/sched.h>
=20
+#include <public/hvm/hvm_op.h>
+
 #ifdef CONFIG_ALTP2M
=20
 /* Alternate p2m HVM on/off per domain */
@@ -12,6 +16,8 @@ static inline bool altp2m_active(const struct domain *d)
     return d->altp2m_active;
 }
=20
+int do_altp2m_op(XEN_GUEST_HANDLE_PARAM(void) arg);
+
 #else /* CONFIG_ALTP2M */
=20
 static inline bool altp2m_active(const struct domain *d)
@@ -19,6 +25,11 @@ static inline bool altp2m_active(const struct domain *d)
     return false;
 }
=20
+static inline int do_altp2m_op(XEN_GUEST_HANDLE_PARAM(void) arg)
+{
+    return -EOPNOTSUPP;
+}
+
 #endif /* CONFIG_ALTP2M */
=20
 #endif /* __XEN_ALTP2M_H__ */
--=20
2.34.1



From xen-devel-bounces@lists.xenproject.org Mon Apr 20 20:25:29 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 20 Apr 2026 20:25:29 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1286464.1567511 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wEvBH-0001l3-Kj; Mon, 20 Apr 2026 20:25:19 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1286464.1567511; Mon, 20 Apr 2026 20:25: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 1wEvBH-0001kw-Hm; Mon, 20 Apr 2026 20:25:19 +0000
Received: by outflank-mailman (input) for mailman id 1286464;
 Mon, 20 Apr 2026 19:50:49 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <Rose.Spangler@purelymail.com>) id 1wEudt-0006FL-Mq
 for xen-devel@lists.xenproject.org; Mon, 20 Apr 2026 19:50:49 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wEuds-00C1KL-LV
 for xen-devel@lists.xenproject.org; Mon, 20 Apr 2026 21:50:48 +0200
Received: from [10.42.69.2] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <Rose.Spangler@purelymail.com>)
 id 69e68373-5cb7-0a2a0a5109dd-0a2a4502cd0c-12
 for <xen-devel@lists.xenproject.org>; Mon, 20 Apr 2026 21:50:48 +0200
Received: from [34.202.193.197] (helo=sendmail.purelymail.com)
 by tlsNG-720697.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.1)
 (envelope-from <Rose.Spangler@purelymail.com>)
 id 69e68397-af86-0a2a45020019-22cac1c584b6-3
 for <xen-devel@lists.xenproject.org>; Mon, 20 Apr 2026 21:50:48 +0200
Received: by smtp.purelymail.com (Purelymail SMTP) with ESMTPSA id -306608446; 
 (version=TLSv1.3 cipher=TLS_AES_256_GCM_SHA384);
 Mon, 20 Apr 2026 19:50: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=purelymail1 header.d=purelymail.com header.i="@purelymail.com" header.h="Feedback-ID:Received:From:To:Subject:Date"
DKIM-Signature: a=rsa-sha256; b=U7Aj0TmlQMo2OaiARr833Wx8B5UJDkYDILENNQJui75UvlKQU6oEmzSiJ0BjFolip1mlZN84vjT4JUXT3hFYofgGxRdHZabD55DYLpNNaU9qn5va7KJ+gXZsQ5CkYM12zHkn7pmU/DGMCJzbP71DPD1zU7eZqQfq7fJvjOow0VI1ZdT3MKcEpN25tTXVyL2jeLQSxEgcj/27rVu3kmzo8J2dIfDBguYa37GP47bnO4Q6u7aKJX6gJq7ycGXlBbp33jEEjrHIbSvVsKjKwyJTwkSmYl0/ACeYhXiZpjdBeUIEc0N7J0pYgJLC6a6le5OeDibjUnB2qPRAgvdpvuCgGQ==; s=purelymail1; d=purelymail.com; v=1; bh=F9DP5LK5B/VL9yfk52EOu4d/RW0pXvXOczcYQ78lIz8=; h=Feedback-ID:Received:From:To:Subject:Date;
Feedback-ID: 685805:22403:null:purelymail
X-Pm-Original-To: xen-devel@lists.xenproject.org
From: Rose.Spangler@purelymail.com
To: xen-devel@lists.xenproject.org
Cc: Rose Spangler <Rose.Spangler@elektrobit.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.pau@citrix.com>,
	Stefano Stabellini <sstabellini@kernel.org>
Subject: [RFC PATCH v6 01/43] altp2m: Add template common altp2m.c/altp2m.h
Date: Mon, 20 Apr 2026 15:50:00 -0400
Message-Id: <20260420195042.207624-2-Rose.Spangler@purelymail.com>
X-Mailer: git-send-email 2.34.1
In-Reply-To: <20260420195042.207624-1-Rose.Spangler@purelymail.com>
References: <20260420195042.207624-1-Rose.Spangler@purelymail.com>
MIME-Version: 1.0
Content-Transfer-Encoding: quoted-printable
X-MIME-Autoconverted: from 8bit to quoted-printable by Purelymail
Content-Type: text/plain; charset=UTF-8
X-purgate-ID: tlsNG-720697/1776714648-81971161-87202937/0/0
X-purgate-type: clean
X-purgate-size: 1865

From: Rose Spangler <Rose.Spangler@elektrobit.com>

This commit adds an empty common altp2m.c and altp2m.h file to be added to
in later commits. Creating a commit with just the empty file additions
makes it easier to reorder later commits which add to these files.

This commit can be squashed into the first commit which actually adds
something to altp2m.c/altp2m.h for the actual submission if that would be
preferred.

This is commit 1/8 of the preparation phase.

Signed-off-by: Rose Spangler <Rose.Spangler@elektrobit.com>
---
v6: Introduced this patch.
---
 xen/common/Makefile      |  1 +
 xen/common/altp2m.c      | 12 ++++++++++++
 xen/include/xen/altp2m.h |  5 +++++
 3 files changed, 18 insertions(+)
 create mode 100644 xen/common/altp2m.c
 create mode 100644 xen/include/xen/altp2m.h

diff --git a/xen/common/Makefile b/xen/common/Makefile
index 6018e256147f..dbe0094006df 100644
--- a/xen/common/Makefile
+++ b/xen/common/Makefile
@@ -1,3 +1,4 @@
+obj-$(CONFIG_ALTP2M) +=3D altp2m.o
 obj-$(CONFIG_ARGO) +=3D argo.o
 obj-y +=3D bitmap.o
 obj-bin-$(CONFIG_SELF_TESTS) +=3D bitops.init.o
diff --git a/xen/common/altp2m.c b/xen/common/altp2m.c
new file mode 100644
index 000000000000..1a4e102324d4
--- /dev/null
+++ b/xen/common/altp2m.c
@@ -0,0 +1,12 @@
+/* SPDX-License-Identifier: GPL-2.0-only */
+#include <xen/altp2m.h>
+
+/*
+ * Local variables:
+ * mode: C
+ * c-file-style: "BSD"
+ * c-basic-offset: 4
+ * tab-width: 4
+ * indent-tabs-mode: nil
+ * End:
+ */
diff --git a/xen/include/xen/altp2m.h b/xen/include/xen/altp2m.h
new file mode 100644
index 000000000000..520328fd3fa8
--- /dev/null
+++ b/xen/include/xen/altp2m.h
@@ -0,0 +1,5 @@
+/* SPDX-License-Identifier: GPL-2.0-only */
+#ifndef __XEN_ALTP2M_H__
+#define __XEN_ALTP2M_H__
+
+#endif /* __XEN_ALTP2M_H__ */
--=20
2.34.1



From xen-devel-bounces@lists.xenproject.org Mon Apr 20 20:25:29 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 20 Apr 2026 20:25:29 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1286468.1567521 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wEvBI-0001qJ-6U; Mon, 20 Apr 2026 20:25:20 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1286468.1567521; Mon, 20 Apr 2026 20:25: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 1wEvBH-0001pT-UP; Mon, 20 Apr 2026 20:25:19 +0000
Received: by outflank-mailman (input) for mailman id 1286468;
 Mon, 20 Apr 2026 19:50:51 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <Rose.Spangler@purelymail.com>) id 1wEudv-0006Fi-1P
 for xen-devel@lists.xenproject.org; Mon, 20 Apr 2026 19:50:51 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wEudu-004tZC-ET
 for xen-devel@lists.xenproject.org; Mon, 20 Apr 2026 21:50:50 +0200
Received: from [10.42.69.3] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <Rose.Spangler@purelymail.com>)
 id 69e6836c-2eae-0a2a0a5409dd-0a2a4503b316-20
 for <xen-devel@lists.xenproject.org>; Mon, 20 Apr 2026 21:50:50 +0200
Received: from [34.202.193.197] (helo=sendmail.purelymail.com)
 by tlsNG-33051d.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.1)
 (envelope-from <Rose.Spangler@purelymail.com>)
 id 69e68399-672d-0a2a45030019-22cac1c5e3bc-3
 for <xen-devel@lists.xenproject.org>; Mon, 20 Apr 2026 21:50:50 +0200
Received: by smtp.purelymail.com (Purelymail SMTP) with ESMTPSA id -306608446; 
 (version=TLSv1.3 cipher=TLS_AES_256_GCM_SHA384);
 Mon, 20 Apr 2026 19:50:47 +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=purelymail1 header.d=purelymail.com header.i="@purelymail.com" header.h="Feedback-ID:Received:From:To:Subject:Date"
DKIM-Signature: a=rsa-sha256; b=MmOQ5QAe41G+mdw+wA2MuMRrWAiWf7RNONJMHOx4I3iOvgsHJSBFN2fUuAoO9ibEODwfLeXYVGNQ1bvKt88DLz3cGN1qn6xc/h1RnWIUeTJS9DnkKxWWxxOW3B3bZdMF1bGVWReGOm+pesXQvbrD3JF3hBWz7HNM1KkvTnAVVGLVPod8A5/NquOFR38ciqu9o+0qc7LPqUNNm82mtfFbczL/d8eaJDLTe65v4uLO8I0Zqqi9XygoJxzjruV4PsBOy9WjeQRlD8n5THzERfkW8wIyWM0F7N3D8BlJ4rb+gyL7OnmFbGs7RBw40q7fzjITNVbwY8WxCv/aQgykXcBPNA==; s=purelymail1; d=purelymail.com; v=1; bh=2PvdWtImHt0iTtxQjPZi9MEx0U+dnWA9pNgCxK8uhgE=; h=Feedback-ID:Received:From:To:Subject:Date;
Feedback-ID: 685805:22403:null:purelymail
X-Pm-Original-To: xen-devel@lists.xenproject.org
From: Rose.Spangler@purelymail.com
To: xen-devel@lists.xenproject.org
Cc: Rose Spangler <Rose.Spangler@elektrobit.com>,
	Jan Beulich <jbeulich@suse.com>,
	Andrew Cooper <andrew.cooper3@citrix.com>,
	=?UTF-8?q?Roger=20Pau=20Monn=C3=A9?= <roger.pau@citrix.com>,
	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>,
	Tamas K Lengyel <tamas@tklengyel.com>
Subject: [RFC PATCH v6 02/43] altp2m: Move altp2m_active to common domain struct
Date: Mon, 20 Apr 2026 15:50:01 -0400
Message-Id: <20260420195042.207624-3-Rose.Spangler@purelymail.com>
X-Mailer: git-send-email 2.34.1
In-Reply-To: <20260420195042.207624-1-Rose.Spangler@purelymail.com>
References: <20260420195042.207624-1-Rose.Spangler@purelymail.com>
MIME-Version: 1.0
Content-Transfer-Encoding: quoted-printable
X-MIME-Autoconverted: from 8bit to quoted-printable by Purelymail
Content-Type: text/plain; charset=UTF-8
X-purgate-ID: tlsNG-33051d/1776714650-A0975938-808CC524/0/0
X-purgate-type: clean
X-purgate-size: 10782

From: Rose Spangler <Rose.Spangler@elektrobit.com>

This commit moves altp2m_active from arch_domain on x86 to the common
domain struct. Similarly to nr_altp2m, this is not an arch-specific value.
Moving it to common code allows the common altp2m routines introduced later
in this patch series to operate on altp2m_active without needing an
altp2m_active member on arch_domain for each architecture supporting
altp2m.

This is commit 2/8 of the preparation phase.

This commit is a refactor, and no change in functionality is intended.

Signed-off-by: Rose Spangler <Rose.Spangler@elektrobit.com>
---
v6: Introduced this patch.
---
 xen/arch/x86/hvm/emulate.c        |  1 +
 xen/arch/x86/hvm/hvm.c            | 11 ++++++-----
 xen/arch/x86/hvm/monitor.c        |  1 +
 xen/arch/x86/hvm/vmx/vmx.c        |  1 +
 xen/arch/x86/include/asm/altp2m.h | 11 -----------
 xen/arch/x86/include/asm/domain.h |  2 --
 xen/arch/x86/mm/altp2m.c          |  1 +
 xen/arch/x86/mm/hap/hap.c         |  5 +++--
 xen/arch/x86/mm/mem_access.c      |  1 +
 xen/arch/x86/mm/mem_sharing.c     |  1 +
 xen/arch/x86/mm/p2m-ept.c         |  1 +
 xen/arch/x86/mm/p2m-pt.c          |  1 +
 xen/arch/x86/mm/p2m.c             |  1 +
 xen/common/monitor.c              |  1 +
 xen/include/asm-generic/altp2m.h  |  8 --------
 xen/include/xen/altp2m.h          | 19 +++++++++++++++++++
 xen/include/xen/sched.h           |  2 ++
 17 files changed, 40 insertions(+), 28 deletions(-)

diff --git a/xen/arch/x86/hvm/emulate.c b/xen/arch/x86/hvm/emulate.c
index f3aae158e9f8..9a9b89a232e6 100644
--- a/xen/arch/x86/hvm/emulate.c
+++ b/xen/arch/x86/hvm/emulate.c
@@ -9,6 +9,7 @@
  *    Keir Fraser <keir@xen.org>
  */
=20
+#include <xen/altp2m.h>
 #include <xen/init.h>
 #include <xen/iocap.h>
 #include <xen/ioreq.h>
diff --git a/xen/arch/x86/hvm/hvm.c b/xen/arch/x86/hvm/hvm.c
index 4a81afce02e7..86c12c0d1ef4 100644
--- a/xen/arch/x86/hvm/hvm.c
+++ b/xen/arch/x86/hvm/hvm.c
@@ -7,6 +7,7 @@
  * Copyright (c) 2008, Citrix Systems, Inc.
  */
=20
+#include <xen/altp2m.h>
 #include <xen/console.h>
 #include <xen/cpu.h>
 #include <xen/domain.h>
@@ -4612,7 +4613,7 @@ static int do_altp2m_op(
=20
     if ( (a.cmd !=3D HVMOP_altp2m_get_domain_state) &&
          (a.cmd !=3D HVMOP_altp2m_set_domain_state) &&
-         !d->arch.altp2m_active )
+         !d->altp2m_active )
     {
         rc =3D -EOPNOTSUPP;
         goto out;
@@ -4657,11 +4658,11 @@ static int do_altp2m_op(
         if ( rc )
             break;
=20
-        ostate =3D d->arch.altp2m_active;
-        d->arch.altp2m_active =3D !!a.u.domain_state.state;
+        ostate =3D d->altp2m_active;
+        d->altp2m_active =3D !!a.u.domain_state.state;
=20
         /* If the alternate p2m state has changed, handle appropriately */
-        if ( d->arch.altp2m_active !=3D ostate &&
+        if ( d->altp2m_active !=3D ostate &&
              (ostate || !(rc =3D p2m_init_altp2m_by_id(d, 0))) )
         {
             for_each_vcpu( d, v )
@@ -4676,7 +4677,7 @@ static int do_altp2m_op(
                 p2m_flush_altp2m(d);
         }
         else if ( rc )
-            d->arch.altp2m_active =3D false;
+            d->altp2m_active =3D false;
=20
         domain_unpause_except_self(d);
         break;
diff --git a/xen/arch/x86/hvm/monitor.c b/xen/arch/x86/hvm/monitor.c
index d22a2e464460..84c1c2234ca9 100644
--- a/xen/arch/x86/hvm/monitor.c
+++ b/xen/arch/x86/hvm/monitor.c
@@ -22,6 +22,7 @@
  * this program; If not, see <http://www.gnu.org/licenses/>.
  */
=20
+#include <xen/altp2m.h>
 #include <xen/vm_event.h>
 #include <xen/mem_access.h>
 #include <xen/monitor.h>
diff --git a/xen/arch/x86/hvm/vmx/vmx.c b/xen/arch/x86/hvm/vmx/vmx.c
index 269ca5643346..ff895f7f9437 100644
--- a/xen/arch/x86/hvm/vmx/vmx.c
+++ b/xen/arch/x86/hvm/vmx/vmx.c
@@ -4,6 +4,7 @@
  * Copyright (c) 2004, Intel Corporation.
  */
=20
+#include <xen/altp2m.h>
 #include <xen/domain_page.h>
 #include <xen/guest_access.h>
 #include <xen/hypercall.h>
diff --git a/xen/arch/x86/include/asm/altp2m.h b/xen/arch/x86/include/asm/a=
ltp2m.h
index 9c1ac3cc2676..ad5ded833a75 100644
--- a/xen/arch/x86/include/asm/altp2m.h
+++ b/xen/arch/x86/include/asm/altp2m.h
@@ -28,12 +28,6 @@ static inline bool altp2m_is_eptp_valid(const struct dom=
ain *d,
         mfn_x(INVALID_MFN);
 }
=20
-/* Alternate p2m HVM on/off per domain */
-static inline bool altp2m_active(const struct domain *d)
-{
-    return d->arch.altp2m_active;
-}
-
 static inline uint16_t altp2m_vcpu_idx(const struct vcpu *v)
 {
     return vcpu_altp2m(v).p2midx;
@@ -64,11 +58,6 @@ static inline bool altp2m_is_eptp_valid(const struct dom=
ain *d,
     return false;
 }
=20
-static inline bool altp2m_active(const struct domain *d)
-{
-    return false;
-}
-
 /* Only declaration is needed. DCE will optimise it out when linking. */
 uint16_t altp2m_vcpu_idx(const struct vcpu *v);
 void altp2m_vcpu_initialise(struct vcpu *v);
diff --git a/xen/arch/x86/include/asm/domain.h b/xen/arch/x86/include/asm/d=
omain.h
index 385a6666dafa..0cf0c0d92087 100644
--- a/xen/arch/x86/include/asm/domain.h
+++ b/xen/arch/x86/include/asm/domain.h
@@ -368,8 +368,6 @@ struct arch_domain
     mm_lock_t nested_p2m_lock;
=20
 #ifdef CONFIG_ALTP2M
-    /* altp2m: allow multiple copies of host p2m */
-    bool altp2m_active;
     struct p2m_domain **altp2m_p2m;
     mm_lock_t altp2m_list_lock;
     uint64_t *altp2m_eptp;
diff --git a/xen/arch/x86/mm/altp2m.c b/xen/arch/x86/mm/altp2m.c
index 0bc9b9ad2f52..08db8f37c1b1 100644
--- a/xen/arch/x86/mm/altp2m.c
+++ b/xen/arch/x86/mm/altp2m.c
@@ -8,6 +8,7 @@
 #include <asm/p2m.h>
 #include <asm/altp2m.h>
 #include <public/hvm/hvm_op.h>
+#include <xen/altp2m.h>
 #include <xen/event.h>
 #include <xen/xvmalloc.h>
 #include "mm-locks.h"
diff --git a/xen/arch/x86/mm/hap/hap.c b/xen/arch/x86/mm/hap/hap.c
index 5ccb80bda5d3..3d563b3bc2d1 100644
--- a/xen/arch/x86/mm/hap/hap.c
+++ b/xen/arch/x86/mm/hap/hap.c
@@ -7,6 +7,7 @@
  * Parts of this code are Copyright (c) 2007 by XenSource Inc.
  */
=20
+#include <xen/altp2m.h>
 #include <xen/types.h>
 #include <xen/mm.h>
 #include <xen/trace.h>
@@ -528,7 +529,7 @@ int hap_enable(struct domain *d, u32 mode)
                goto out;
         }
=20
-        d->arch.altp2m_active =3D false;
+        d->altp2m_active =3D false;
     }
 #endif /* CONFIG_ALTP2M */
=20
@@ -595,7 +596,7 @@ void hap_teardown(struct domain *d, bool *preempted)
             for_each_vcpu ( d, v )
                 altp2m_vcpu_disable_ve(v);
=20
-        d->arch.altp2m_active =3D false;
+        d->altp2m_active =3D false;
=20
         FREE_XENHEAP_PAGE(d->arch.altp2m_eptp);
         FREE_XENHEAP_PAGE(d->arch.altp2m_visible_eptp);
diff --git a/xen/arch/x86/mm/mem_access.c b/xen/arch/x86/mm/mem_access.c
index e55e53f44c78..a9d6b081a523 100644
--- a/xen/arch/x86/mm/mem_access.c
+++ b/xen/arch/x86/mm/mem_access.c
@@ -9,6 +9,7 @@
  * Parts based on earlier work by Michael A Fetterman, Ian Pratt et al.
  */
=20
+#include <xen/altp2m.h>
 #include <xen/guest_access.h> /* copy_from_guest() */
 #include <xen/mem_access.h>
 #include <xen/nospec.h>
diff --git a/xen/arch/x86/mm/mem_sharing.c b/xen/arch/x86/mm/mem_sharing.c
index 5c7a0ff30e8b..8319733b1bb6 100644
--- a/xen/arch/x86/mm/mem_sharing.c
+++ b/xen/arch/x86/mm/mem_sharing.c
@@ -8,6 +8,7 @@
  * Copyright (c) 2009 Citrix Systems, Inc. (Grzegorz Milos)
  */
=20
+#include <xen/altp2m.h>
 #include <xen/types.h>
 #include <xen/domain_page.h>
 #include <xen/event.h>
diff --git a/xen/arch/x86/mm/p2m-ept.c b/xen/arch/x86/mm/p2m-ept.c
index dfdbfa0afec8..ed850723f5fd 100644
--- a/xen/arch/x86/mm/p2m-ept.c
+++ b/xen/arch/x86/mm/p2m-ept.c
@@ -4,6 +4,7 @@
  * Copyright (c) 2007, Intel Corporation.
  */
=20
+#include <xen/altp2m.h>
 #include <xen/domain_page.h>
 #include <xen/sched.h>
 #include <public/hvm/dm_op.h>
diff --git a/xen/arch/x86/mm/p2m-pt.c b/xen/arch/x86/mm/p2m-pt.c
index 5a6ce2f8bc2e..17f38aac14d5 100644
--- a/xen/arch/x86/mm/p2m-pt.c
+++ b/xen/arch/x86/mm/p2m-pt.c
@@ -12,6 +12,7 @@
  * Parts based on earlier work by Michael A Fetterman, Ian Pratt et al.
  */
=20
+#include <xen/altp2m.h>
 #include <xen/vm_event.h>
 #include <xen/event.h>
 #include <xen/trace.h>
diff --git a/xen/arch/x86/mm/p2m.c b/xen/arch/x86/mm/p2m.c
index fddecdf978ec..41517765c5ec 100644
--- a/xen/arch/x86/mm/p2m.c
+++ b/xen/arch/x86/mm/p2m.c
@@ -11,6 +11,7 @@
  * Parts based on earlier work by Michael A Fetterman, Ian Pratt et al.
  */
=20
+#include <xen/altp2m.h>
 #include <xen/iommu.h>
 #include <xen/mem_access.h>
 #include <xen/vm_event.h>
diff --git a/xen/common/monitor.c b/xen/common/monitor.c
index d5c9ff1cbf8c..e758a3fea9f1 100644
--- a/xen/common/monitor.c
+++ b/xen/common/monitor.c
@@ -19,6 +19,7 @@
  * License along with this program; If not, see <http://www.gnu.org/licens=
es/>.
  */
=20
+#include <xen/altp2m.h>
 #include <xen/event.h>
 #include <xen/monitor.h>
 #include <xen/sched.h>
diff --git a/xen/include/asm-generic/altp2m.h b/xen/include/asm-generic/alt=
p2m.h
index 39865a842ab3..ecee6942f4e8 100644
--- a/xen/include/asm-generic/altp2m.h
+++ b/xen/include/asm-generic/altp2m.h
@@ -4,16 +4,8 @@
=20
 #include <xen/bug.h>
=20
-struct domain;
 struct vcpu;
=20
-/* Alternate p2m on/off per domain */
-static inline bool altp2m_active(const struct domain *d)
-{
-    /* Not implemented on GENERIC. */
-    return false;
-}
-
 /* Alternate p2m VCPU */
 static inline unsigned int altp2m_vcpu_idx(const struct vcpu *v)
 {
diff --git a/xen/include/xen/altp2m.h b/xen/include/xen/altp2m.h
index 520328fd3fa8..b3b21124dd7e 100644
--- a/xen/include/xen/altp2m.h
+++ b/xen/include/xen/altp2m.h
@@ -2,4 +2,23 @@
 #ifndef __XEN_ALTP2M_H__
 #define __XEN_ALTP2M_H__
=20
+#include <xen/sched.h>
+
+#ifdef CONFIG_ALTP2M
+
+/* Alternate p2m HVM on/off per domain */
+static inline bool altp2m_active(const struct domain *d)
+{
+    return d->altp2m_active;
+}
+
+#else /* CONFIG_ALTP2M */
+
+static inline bool altp2m_active(const struct domain *d)
+{
+    return false;
+}
+
+#endif /* CONFIG_ALTP2M */
+
 #endif /* __XEN_ALTP2M_H__ */
diff --git a/xen/include/xen/sched.h b/xen/include/xen/sched.h
index 212c7d765c3e..458f2f260dd7 100644
--- a/xen/include/xen/sched.h
+++ b/xen/include/xen/sched.h
@@ -623,6 +623,8 @@ struct domain
     } monitor;
=20
 #ifdef CONFIG_ALTP2M
+    /* altp2m: allow multiple copies of host p2m */
+    bool altp2m_active;
     unsigned int nr_altp2m;    /* Number of altp2m tables. */
 #endif
=20
--=20
2.34.1



From xen-devel-bounces@lists.xenproject.org Mon Apr 20 20:25:29 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 20 Apr 2026 20:25:29 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1286471.1567539 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wEvBJ-0002B1-77; Mon, 20 Apr 2026 20:25:21 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1286471.1567539; Mon, 20 Apr 2026 20:25: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 1wEvBI-00027C-Tq; Mon, 20 Apr 2026 20:25:20 +0000
Received: by outflank-mailman (input) for mailman id 1286471;
 Mon, 20 Apr 2026 19:50:52 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <Rose.Spangler@purelymail.com>) id 1wEudv-0006GP-RZ
 for xen-devel@lists.xenproject.org; Mon, 20 Apr 2026 19:50:51 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wEudv-004tZC-8U
 for xen-devel@lists.xenproject.org; Mon, 20 Apr 2026 21:50:51 +0200
Received: from [10.42.69.6] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <Rose.Spangler@purelymail.com>)
 id 69e68399-2eae-0a2a0a5409dd-0a2a45069f96-2
 for <xen-devel@lists.xenproject.org>; Mon, 20 Apr 2026 21:50:51 +0200
Received: from [34.202.193.197] (helo=sendmail.purelymail.com)
 by tlsNG-16d1c6.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.1)
 (envelope-from <Rose.Spangler@purelymail.com>)
 id 69e6839a-7371-0a2a45060019-22cac1c5af48-3
 for <xen-devel@lists.xenproject.org>; Mon, 20 Apr 2026 21:50:51 +0200
Received: by smtp.purelymail.com (Purelymail SMTP) with ESMTPSA id -306608446; 
 (version=TLSv1.3 cipher=TLS_AES_256_GCM_SHA384);
 Mon, 20 Apr 2026 19:50:47 +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=purelymail1 header.d=purelymail.com header.i="@purelymail.com" header.h="Feedback-ID:Received:From:To:Subject:Date"
DKIM-Signature: a=rsa-sha256; b=B+nYO9KEh9q0WYoB0d58RVBlQDqbuZ0LyKTA/IITuj2TR7ZhTS0wwg5scl5p9rvXSzxa9QEYQD3jbf9n6ecs0f8J5nBFDBkNq8/8U/8356GgJuD5U4N8/8EetghCFWCETsI2KOo+YgBwGMVUTOY+xBdu/p88u7/U3jYkpirPGNwULO8o1nU5YgKPdbkKfU4VxswtMItj5Bna6L3ePWAvUpOTpPvT0hJ14HL0bqUMDdSCfHup+/ZEqPMQxpigOyxTXzqDmQygBpDX1DQQtlwKiREzqKwR8A/QXUHswtjLepy6ymEDw+NesNGQGNq1F8iPAxknJGZ+LvbbBqMkTPmSTw==; s=purelymail1; d=purelymail.com; v=1; bh=6QrBhjpqDTM5a7ZOSMJOwL5c5AsZbPxqt9UWvAKgsrc=; h=Feedback-ID:Received:From:To:Subject:Date;
Feedback-ID: 685805:22403:null:purelymail
X-Pm-Original-To: xen-devel@lists.xenproject.org
From: Rose.Spangler@purelymail.com
To: xen-devel@lists.xenproject.org
Cc: Rose Spangler <Rose.Spangler@elektrobit.com>,
	Jan Beulich <jbeulich@suse.com>,
	Andrew Cooper <andrew.cooper3@citrix.com>,
	=?UTF-8?q?Roger=20Pau=20Monn=C3=A9?= <roger.pau@citrix.com>,
	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>,
	Tamas K Lengyel <tamas@tklengyel.com>
Subject: [RFC PATCH v6 03/43] altp2m: Move altp2m_p2m to common domain struct
Date: Mon, 20 Apr 2026 15:50:02 -0400
Message-Id: <20260420195042.207624-4-Rose.Spangler@purelymail.com>
X-Mailer: git-send-email 2.34.1
In-Reply-To: <20260420195042.207624-1-Rose.Spangler@purelymail.com>
References: <20260420195042.207624-1-Rose.Spangler@purelymail.com>
MIME-Version: 1.0
Content-Transfer-Encoding: quoted-printable
X-MIME-Autoconverted: from 8bit to quoted-printable by Purelymail
Content-Type: text/plain; charset=UTF-8
X-purgate-ID: tlsNG-16d1c6/1776714651-52B75D75-EC441CBA/0/0
X-purgate-type: clean
X-purgate-size: 13719

From: Rose Spangler <Rose.Spangler@elektrobit.com>

Similarly to the previous commit, this commit moves altp2m_p2m to the
common domain struct. The representation of altp2m views as an array of
p2m_domain pointers is the same on x86 and ARM, and it seems that this
would be the case for other architectures as well.

This commit is a refactor, and no change in functionality is intended.

This is commit 3/8 of the preparation phase.

Signed-off-by: Rose Spangler <Rose.Spangler@elektrobit.com>
---
v6: Introduced this patch.
---
 xen/arch/x86/hvm/vmx/vmx.c        |  2 +-
 xen/arch/x86/include/asm/domain.h |  1 -
 xen/arch/x86/include/asm/p2m.h    |  4 ++--
 xen/arch/x86/mm/altp2m.c          | 28 ++++++++++++++--------------
 xen/arch/x86/mm/hap/hap.c         |  6 +++---
 xen/arch/x86/mm/mem_access.c      |  8 ++++----
 xen/arch/x86/mm/mem_sharing.c     |  2 +-
 xen/arch/x86/mm/p2m-ept.c         |  6 +++---
 xen/arch/x86/mm/p2m.c             |  8 ++++----
 xen/include/xen/sched.h           |  1 +
 10 files changed, 33 insertions(+), 33 deletions(-)

diff --git a/xen/arch/x86/hvm/vmx/vmx.c b/xen/arch/x86/hvm/vmx/vmx.c
index ff895f7f9437..0909929c00e0 100644
--- a/xen/arch/x86/hvm/vmx/vmx.c
+++ b/xen/arch/x86/hvm/vmx/vmx.c
@@ -5004,7 +5004,7 @@ bool asmlinkage vmx_vmenter_helper(const struct cpu_u=
ser_regs *regs)
                 if ( currd->arch.altp2m_eptp[i] =3D=3D mfn_x(INVALID_MFN) =
)
                     continue;
=20
-                ept =3D &currd->arch.altp2m_p2m[i]->ept;
+                ept =3D &currd->altp2m_p2m[i]->ept;
                 if ( cpumask_test_cpu(cpu, ept->invalidate) )
                 {
                     cpumask_clear_cpu(cpu, ept->invalidate);
diff --git a/xen/arch/x86/include/asm/domain.h b/xen/arch/x86/include/asm/d=
omain.h
index 0cf0c0d92087..f8038087e612 100644
--- a/xen/arch/x86/include/asm/domain.h
+++ b/xen/arch/x86/include/asm/domain.h
@@ -368,7 +368,6 @@ struct arch_domain
     mm_lock_t nested_p2m_lock;
=20
 #ifdef CONFIG_ALTP2M
-    struct p2m_domain **altp2m_p2m;
     mm_lock_t altp2m_list_lock;
     uint64_t *altp2m_eptp;
     uint64_t *altp2m_visible_eptp;
diff --git a/xen/arch/x86/include/asm/p2m.h b/xen/arch/x86/include/asm/p2m.=
h
index 3a5a5fd43c2a..ec871717a9e4 100644
--- a/xen/arch/x86/include/asm/p2m.h
+++ b/xen/arch/x86/include/asm/p2m.h
@@ -901,7 +901,7 @@ static inline struct p2m_domain *p2m_get_altp2m(struct =
vcpu *v)
=20
     BUG_ON(index >=3D v->domain->nr_altp2m);
=20
-    return v->domain->arch.altp2m_p2m[index];
+    return v->domain->altp2m_p2m[index];
 }
=20
 /* set current alternate p2m table */
@@ -919,7 +919,7 @@ static inline bool p2m_set_altp2m(struct vcpu *v, unsig=
ned int idx)
     atomic_dec(&orig->active_vcpus);
=20
     vcpu_altp2m(v).p2midx =3D idx;
-    atomic_inc(&v->domain->arch.altp2m_p2m[idx]->active_vcpus);
+    atomic_inc(&v->domain->altp2m_p2m[idx]->active_vcpus);
=20
     return true;
 }
diff --git a/xen/arch/x86/mm/altp2m.c b/xen/arch/x86/mm/altp2m.c
index 08db8f37c1b1..8dd3c0f96be0 100644
--- a/xen/arch/x86/mm/altp2m.c
+++ b/xen/arch/x86/mm/altp2m.c
@@ -130,14 +130,14 @@ int p2m_init_altp2m(struct domain *d)
     struct p2m_domain *hostp2m =3D p2m_get_hostp2m(d);
=20
     mm_lock_init(&d->arch.altp2m_list_lock);
-    d->arch.altp2m_p2m =3D xvzalloc_array(struct p2m_domain *, d->nr_altp2=
m);
+    d->altp2m_p2m =3D xvzalloc_array(struct p2m_domain *, d->nr_altp2m);
=20
-    if ( !d->arch.altp2m_p2m )
+    if ( !d->altp2m_p2m )
         return -ENOMEM;
=20
     for ( i =3D 0; i < d->nr_altp2m; i++ )
     {
-        d->arch.altp2m_p2m[i] =3D p2m =3D p2m_init_one(d);
+        d->altp2m_p2m[i] =3D p2m =3D p2m_init_one(d);
         if ( p2m =3D=3D NULL )
         {
             p2m_teardown_altp2m(d);
@@ -158,14 +158,14 @@ void p2m_teardown_altp2m(struct domain *d)
=20
     for ( i =3D 0; i < d->nr_altp2m; i++ )
     {
-        if ( !d->arch.altp2m_p2m[i] )
+        if ( !d->altp2m_p2m[i] )
             continue;
-        p2m =3D d->arch.altp2m_p2m[i];
-        d->arch.altp2m_p2m[i] =3D NULL;
+        p2m =3D d->altp2m_p2m[i];
+        d->altp2m_p2m[i] =3D NULL;
         p2m_free_one(p2m);
     }
=20
-    XVFREE(d->arch.altp2m_p2m);
+    XVFREE(d->altp2m_p2m);
 }
=20
 int altp2m_get_effective_entry(struct p2m_domain *ap2m, gfn_t gfn, mfn_t *=
mfn,
@@ -325,7 +325,7 @@ static void p2m_reset_altp2m(struct domain *d, unsigned=
 int idx,
     struct p2m_domain *p2m;
=20
     ASSERT(idx < d->nr_altp2m);
-    p2m =3D d->arch.altp2m_p2m[array_index_nospec(idx, d->nr_altp2m)];
+    p2m =3D d->altp2m_p2m[array_index_nospec(idx, d->nr_altp2m)];
=20
     p2m_lock(p2m);
=20
@@ -368,7 +368,7 @@ static int p2m_activate_altp2m(struct domain *d, unsign=
ed int idx,
=20
     ASSERT(idx < d->nr_altp2m);
=20
-    p2m =3D d->arch.altp2m_p2m[array_index_nospec(idx, d->nr_altp2m)];
+    p2m =3D d->altp2m_p2m[array_index_nospec(idx, d->nr_altp2m)];
     hostp2m =3D p2m_get_hostp2m(d);
=20
     p2m_lock(p2m);
@@ -468,7 +468,7 @@ int p2m_destroy_altp2m_by_id(struct domain *d, unsigned=
 int idx)
     if ( d->arch.altp2m_eptp[array_index_nospec(idx, MAX_EPTP)] !=3D
          mfn_x(INVALID_MFN) )
     {
-        p2m =3D d->arch.altp2m_p2m[array_index_nospec(idx, d->nr_altp2m)];
+        p2m =3D d->altp2m_p2m[array_index_nospec(idx, d->nr_altp2m)];
=20
         if ( !_atomic_read(p2m->active_vcpus) )
         {
@@ -532,7 +532,7 @@ int p2m_change_altp2m_gfn(struct domain *d, unsigned in=
t idx,
         return rc;
=20
     hp2m =3D p2m_get_hostp2m(d);
-    ap2m =3D d->arch.altp2m_p2m[array_index_nospec(idx, d->nr_altp2m)];
+    ap2m =3D d->altp2m_p2m[array_index_nospec(idx, d->nr_altp2m)];
=20
     p2m_lock(hp2m);
     p2m_lock(ap2m);
@@ -596,7 +596,7 @@ int p2m_altp2m_propagate_change(struct domain *d, gfn_t=
 gfn,
         if ( d->arch.altp2m_eptp[i] =3D=3D mfn_x(INVALID_MFN) )
             continue;
=20
-        p2m =3D d->arch.altp2m_p2m[i];
+        p2m =3D d->altp2m_p2m[i];
=20
         /* Check for a dropped page that may impact this altp2m */
         if ( mfn_eq(mfn, INVALID_MFN) &&
@@ -679,7 +679,7 @@ int p2m_set_suppress_ve_multi(struct domain *d,
             return -EINVAL;
=20
         p2m =3D ap2m =3D
-            d->arch.altp2m_p2m[array_index_nospec(sve->view, d->nr_altp2m)=
];
+            d->altp2m_p2m[array_index_nospec(sve->view, d->nr_altp2m)];
     }
=20
     p2m_lock(host_p2m);
@@ -746,7 +746,7 @@ int p2m_get_suppress_ve(struct domain *d, gfn_t gfn, bo=
ol *suppress_ve,
             return -EINVAL;
=20
         p2m =3D ap2m =3D
-            d->arch.altp2m_p2m[array_index_nospec(altp2m_idx, d->nr_altp2m=
)];
+            d->altp2m_p2m[array_index_nospec(altp2m_idx, d->nr_altp2m)];
     }
     else
         p2m =3D host_p2m;
diff --git a/xen/arch/x86/mm/hap/hap.c b/xen/arch/x86/mm/hap/hap.c
index 3d563b3bc2d1..6918a00a2a25 100644
--- a/xen/arch/x86/mm/hap/hap.c
+++ b/xen/arch/x86/mm/hap/hap.c
@@ -524,7 +524,7 @@ int hap_enable(struct domain *d, u32 mode)
=20
         for ( i =3D 0; i < d->nr_altp2m; i++ )
         {
-            rv =3D p2m_alloc_table(d->arch.altp2m_p2m[i]);
+            rv =3D p2m_alloc_table(d->altp2m_p2m[i]);
             if ( rv !=3D 0 )
                goto out;
         }
@@ -548,7 +548,7 @@ void hap_final_teardown(struct domain *d)
 #ifdef CONFIG_ALTP2M
     if ( hvm_altp2m_supported() )
         for ( i =3D 0; i < d->nr_altp2m; i++ )
-            p2m_teardown(d->arch.altp2m_p2m[i], true, NULL);
+            p2m_teardown(d->altp2m_p2m[i], true, NULL);
 #endif
=20
     /* Destroy nestedp2m's first */
@@ -603,7 +603,7 @@ void hap_teardown(struct domain *d, bool *preempted)
=20
         for ( i =3D 0; i < d->nr_altp2m; i++ )
         {
-            p2m_teardown(d->arch.altp2m_p2m[i], false, preempted);
+            p2m_teardown(d->altp2m_p2m[i], false, preempted);
             if ( preempted && *preempted )
                 return;
         }
diff --git a/xen/arch/x86/mm/mem_access.c b/xen/arch/x86/mm/mem_access.c
index a9d6b081a523..e5548e64d8d0 100644
--- a/xen/arch/x86/mm/mem_access.c
+++ b/xen/arch/x86/mm/mem_access.c
@@ -319,7 +319,7 @@ long p2m_set_mem_access(struct domain *d, gfn_t gfn, ui=
nt32_t nr,
         if ( !altp2m_is_eptp_valid(d, altp2m_idx) )
             return -EINVAL;
=20
-        ap2m =3D d->arch.altp2m_p2m[array_index_nospec(altp2m_idx, d->nr_a=
ltp2m)];
+        ap2m =3D d->altp2m_p2m[array_index_nospec(altp2m_idx, d->nr_altp2m=
)];
     }
 #endif
=20
@@ -375,7 +375,7 @@ long p2m_set_mem_access_multi(struct domain *d,
         if ( !altp2m_is_eptp_valid(d, altp2m_idx) )
             return -EINVAL;
=20
-        ap2m =3D d->arch.altp2m_p2m[array_index_nospec(altp2m_idx, d->nr_a=
ltp2m)];
+        ap2m =3D d->altp2m_p2m[array_index_nospec(altp2m_idx, d->nr_altp2m=
)];
     }
 #endif
=20
@@ -438,7 +438,7 @@ int p2m_get_mem_access(struct domain *d, gfn_t gfn, xen=
mem_access_t *access,
         if ( !altp2m_is_eptp_valid(d, altp2m_idx) )
             return -EINVAL;
=20
-        p2m =3D d->arch.altp2m_p2m[array_index_nospec(altp2m_idx, d->nr_al=
tp2m)];
+        p2m =3D d->altp2m_p2m[array_index_nospec(altp2m_idx, d->nr_altp2m)=
];
     }
 #endif
=20
@@ -457,7 +457,7 @@ void arch_p2m_set_access_required(struct domain *d, boo=
l access_required)
         unsigned int i;
         for ( i =3D 0; i < d->nr_altp2m; i++ )
         {
-            struct p2m_domain *p2m =3D d->arch.altp2m_p2m[i];
+            struct p2m_domain *p2m =3D d->altp2m_p2m[i];
=20
             if ( p2m )
                 p2m->access_required =3D access_required;
diff --git a/xen/arch/x86/mm/mem_sharing.c b/xen/arch/x86/mm/mem_sharing.c
index 8319733b1bb6..b7d8fb9ad1aa 100644
--- a/xen/arch/x86/mm/mem_sharing.c
+++ b/xen/arch/x86/mm/mem_sharing.c
@@ -919,7 +919,7 @@ static int nominate_page(struct domain *d, gfn_t gfn,
=20
         for ( i =3D 0; i < d->nr_altp2m; i++ )
         {
-            ap2m =3D d->arch.altp2m_p2m[i];
+            ap2m =3D d->altp2m_p2m[i];
             if ( !ap2m )
                 continue;
=20
diff --git a/xen/arch/x86/mm/p2m-ept.c b/xen/arch/x86/mm/p2m-ept.c
index ed850723f5fd..ddb4c7606be1 100644
--- a/xen/arch/x86/mm/p2m-ept.c
+++ b/xen/arch/x86/mm/p2m-ept.c
@@ -1311,7 +1311,7 @@ static void ept_set_ad_sync(struct domain *d, bool va=
lue)
             if ( d->arch.altp2m_eptp[i] =3D=3D mfn_x(INVALID_MFN) )
                 continue;
=20
-            p2m =3D d->arch.altp2m_p2m[i];
+            p2m =3D d->altp2m_p2m[i];
=20
             p2m_lock(p2m);
             p2m->ept.ad =3D value;
@@ -1579,7 +1579,7 @@ void __init setup_ept_dump(void)
 void p2m_init_altp2m_ept(struct domain *d, unsigned int i)
 {
     struct p2m_domain *p2m =3D
-        d->arch.altp2m_p2m[array_index_nospec(i, d->nr_altp2m)];
+        d->altp2m_p2m[array_index_nospec(i, d->nr_altp2m)];
     struct p2m_domain *hostp2m =3D p2m_get_hostp2m(d);
     struct ept_data *ept;
=20
@@ -1603,7 +1603,7 @@ unsigned int p2m_find_altp2m_by_eptp(struct domain *d=
, uint64_t eptp)
         if ( d->arch.altp2m_eptp[i] =3D=3D mfn_x(INVALID_MFN) )
             continue;
=20
-        p2m =3D d->arch.altp2m_p2m[i];
+        p2m =3D d->altp2m_p2m[i];
         ept =3D &p2m->ept;
=20
         if ( eptp =3D=3D ept->eptp )
diff --git a/xen/arch/x86/mm/p2m.c b/xen/arch/x86/mm/p2m.c
index 41517765c5ec..5bd426296f20 100644
--- a/xen/arch/x86/mm/p2m.c
+++ b/xen/arch/x86/mm/p2m.c
@@ -111,7 +111,7 @@ void p2m_change_entry_type_global(struct domain *d,
         {
             if ( d->arch.altp2m_eptp[i] !=3D mfn_x(INVALID_MFN) )
             {
-                struct p2m_domain *altp2m =3D d->arch.altp2m_p2m[i];
+                struct p2m_domain *altp2m =3D d->altp2m_p2m[i];
=20
                 p2m_lock(altp2m);
                 change_entry_type_global(altp2m, ot, nt);
@@ -157,7 +157,7 @@ bool p2m_memory_type_changed(struct domain *d)
         {
             if ( d->arch.altp2m_eptp[i] !=3D mfn_x(INVALID_MFN) )
             {
-                struct p2m_domain *altp2m =3D d->arch.altp2m_p2m[i];
+                struct p2m_domain *altp2m =3D d->altp2m_p2m[i];
=20
                 p2m_lock(altp2m);
                 _memory_type_changed(altp2m);
@@ -955,7 +955,7 @@ void p2m_change_type_range(struct domain *d,
         {
             if ( d->arch.altp2m_eptp[i] !=3D mfn_x(INVALID_MFN) )
             {
-                struct p2m_domain *altp2m =3D d->arch.altp2m_p2m[i];
+                struct p2m_domain *altp2m =3D d->altp2m_p2m[i];
=20
                 p2m_lock(altp2m);
                 change_type_range(altp2m, start, end, ot, nt);
@@ -1031,7 +1031,7 @@ int p2m_finish_type_change(struct domain *d,
         {
             if ( d->arch.altp2m_eptp[i] !=3D mfn_x(INVALID_MFN) )
             {
-                struct p2m_domain *altp2m =3D d->arch.altp2m_p2m[i];
+                struct p2m_domain *altp2m =3D d->altp2m_p2m[i];
=20
                 p2m_lock(altp2m);
                 rc =3D finish_type_change(altp2m, first_gfn, max_nr);
diff --git a/xen/include/xen/sched.h b/xen/include/xen/sched.h
index 458f2f260dd7..5d8ba2d2ab19 100644
--- a/xen/include/xen/sched.h
+++ b/xen/include/xen/sched.h
@@ -626,6 +626,7 @@ struct domain
     /* altp2m: allow multiple copies of host p2m */
     bool altp2m_active;
     unsigned int nr_altp2m;    /* Number of altp2m tables. */
+    struct p2m_domain **altp2m_p2m;
 #endif
=20
 #ifdef CONFIG_VMTRACE
--=20
2.34.1



From xen-devel-bounces@lists.xenproject.org Mon Apr 20 20:25:29 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 20 Apr 2026 20:25:29 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1286483.1567608 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wEvBN-0003fY-9p; Mon, 20 Apr 2026 20:25:25 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1286483.1567608; Mon, 20 Apr 2026 20:25: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 1wEvBM-0003bJ-QU; Mon, 20 Apr 2026 20:25:24 +0000
Received: by outflank-mailman (input) for mailman id 1286483;
 Mon, 20 Apr 2026 19:50:58 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <Rose.Spangler@purelymail.com>) id 1wEue2-0006Iv-8S
 for xen-devel@lists.xenproject.org; Mon, 20 Apr 2026 19:50:58 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wEue1-009YnP-LX
 for xen-devel@lists.xenproject.org; Mon, 20 Apr 2026 21:50:57 +0200
Received: from [10.42.69.10] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <Rose.Spangler@purelymail.com>)
 id 69e68374-bab6-0a2a0a5309dd-0a2a450ab436-24
 for <xen-devel@lists.xenproject.org>; Mon, 20 Apr 2026 21:50:57 +0200
Received: from [34.202.193.197] (helo=sendmail.purelymail.com)
 by tlsNG-4011c0.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.1)
 (envelope-from <Rose.Spangler@purelymail.com>)
 id 69e683a0-56b3-0a2a450a0019-22cac1c5d228-3
 for <xen-devel@lists.xenproject.org>; Mon, 20 Apr 2026 21:50:57 +0200
Received: by smtp.purelymail.com (Purelymail SMTP) with ESMTPSA id -306608446; 
 (version=TLSv1.3 cipher=TLS_AES_256_GCM_SHA384);
 Mon, 20 Apr 2026 19:50: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=purelymail1 header.d=purelymail.com header.i="@purelymail.com" header.h="Feedback-ID:Received:From:To:Subject:Date"
DKIM-Signature: a=rsa-sha256; b=L+19iyv+EUeaGWGFsg/BWJiBVxeE/no+P5K1P6qeD1YfVN0hoZLm9oaLIw6VWXRXAUpq/+f4X1tX/9pPrs/LCvAUWLJuWJpuofTpMMIi2KWtHiEIbwiYy618cbKCfOeMiNBqbOqmV433K3tYmJWbz4SrMySSCYWLfIuOMMgZxx752i4ZdVSJYfbUg47mkpzSXf9MyXxp13UwHeBMgqX4SuuBoLcWvi/Lkf0R8q9R2YzRvM+T6wLpmvCv3IjHXGidnHQgYJx83PsQxhjadG0baQ0Hw0UonKx/H7Fxo+Z4ABSs4r9bY+xpYAgOWWoRGPflw+8rsvXOnBqHM9R30lo8IA==; s=purelymail1; d=purelymail.com; v=1; bh=UaefyhWKaHg0ZXhca3L3b/zEeIpQmNz0OQTE/cAPZp8=; h=Feedback-ID:Received:From:To:Subject:Date;
Feedback-ID: 685805:22403:null:purelymail
X-Pm-Original-To: xen-devel@lists.xenproject.org
From: Rose.Spangler@purelymail.com
To: xen-devel@lists.xenproject.org
Cc: Rose Spangler <Rose.Spangler@elektrobit.com>,
	Jan Beulich <jbeulich@suse.com>,
	Andrew Cooper <andrew.cooper3@citrix.com>,
	=?UTF-8?q?Roger=20Pau=20Monn=C3=A9?= <roger.pau@citrix.com>,
	Teddy Astie <teddy.astie@vates.tech>
Subject: [RFC PATCH v6 12/43] x86/p2m: Move p2m_{init,free}_one declarations to arch header
Date: Mon, 20 Apr 2026 15:50:11 -0400
Message-Id: <20260420195042.207624-13-Rose.Spangler@purelymail.com>
X-Mailer: git-send-email 2.34.1
In-Reply-To: <20260420195042.207624-1-Rose.Spangler@purelymail.com>
References: <20260420195042.207624-1-Rose.Spangler@purelymail.com>
MIME-Version: 1.0
Content-Transfer-Encoding: quoted-printable
X-MIME-Autoconverted: from 8bit to quoted-printable by Purelymail
Content-Type: text/plain; charset=UTF-8
X-purgate-ID: tlsNG-4011c0/1776714657-CF3738B7-D404BC4A/0/0
X-purgate-type: clean
X-purgate-size: 1681

From: Rose Spangler <Rose.Spangler@elektrobit.com>

This commit moves the p2m_init_one and p2m_free_one declarations from the
x86-only p2m.h header file to the asm/p2m.h header. This makes it possible
to use these functions in the common altp2m init/teardown routines.

This is commit 1/12 of the altp2m_init/altp2m_teardown routines phase.

Signed-off-by: Rose Spangler <Rose.Spangler@elektrobit.com>
---
v6: Introduced this patch.
---
 xen/arch/x86/include/asm/p2m.h | 3 +++
 xen/arch/x86/mm/p2m.h          | 3 ---
 2 files changed, 3 insertions(+), 3 deletions(-)

diff --git a/xen/arch/x86/include/asm/p2m.h b/xen/arch/x86/include/asm/p2m.=
h
index 5110b3e77807..ce8eeb751ee9 100644
--- a/xen/arch/x86/include/asm/p2m.h
+++ b/xen/arch/x86/include/asm/p2m.h
@@ -592,6 +592,9 @@ int p2m_alloc_table(struct p2m_domain *p2m);
 void p2m_teardown(struct p2m_domain *p2m, bool remove_root, bool *preempte=
d);
 void p2m_final_teardown(struct domain *d);
=20
+struct p2m_domain *p2m_init_one(struct domain *d);
+void p2m_free_one(struct p2m_domain *p2m);
+
 /* Add/remove a page to/from a domain's p2m table. */
 int p2m_add_page(struct domain *d, gfn_t gfn, mfn_t mfn,
                  unsigned int page_order, p2m_type_t t);
diff --git a/xen/arch/x86/mm/p2m.h b/xen/arch/x86/mm/p2m.h
index 64218878067e..be8ed85c2aba 100644
--- a/xen/arch/x86/mm/p2m.h
+++ b/xen/arch/x86/mm/p2m.h
@@ -6,9 +6,6 @@
 #ifndef __ARCH_MM_P2M_H__
 #define __ARCH_MM_P2M_H__
=20
-struct p2m_domain *p2m_init_one(struct domain *d);
-void p2m_free_one(struct p2m_domain *p2m);
-
 void p2m_pod_init(struct p2m_domain *p2m);
=20
 #ifdef CONFIG_HVM
--=20
2.34.1



From xen-devel-bounces@lists.xenproject.org Mon Apr 20 20:25:29 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 20 Apr 2026 20:25:29 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1286470.1567535 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wEvBI-00023m-Sy; Mon, 20 Apr 2026 20:25:20 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1286470.1567535; Mon, 20 Apr 2026 20:25: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 1wEvBI-00022Z-Kk; Mon, 20 Apr 2026 20:25:20 +0000
Received: by outflank-mailman (input) for mailman id 1286470;
 Mon, 20 Apr 2026 19:50:51 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <Rose.Spangler@purelymail.com>) id 1wEudv-0006GM-Os
 for xen-devel@lists.xenproject.org; Mon, 20 Apr 2026 19:50:51 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wEudv-00EW0U-5e
 for xen-devel@lists.xenproject.org; Mon, 20 Apr 2026 21:50:51 +0200
Received: from [10.42.69.9] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <Rose.Spangler@purelymail.com>)
 id 69e6835b-e002-0a2a0a5209dd-0a2a45099984-24
 for <xen-devel@lists.xenproject.org>; Mon, 20 Apr 2026 21:50:51 +0200
Received: from [34.202.193.197] (helo=sendmail.purelymail.com)
 by tlsNG-bad1c0.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.1)
 (envelope-from <Rose.Spangler@purelymail.com>)
 id 69e6839a-2497-0a2a45090019-22cac1c5af54-3
 for <xen-devel@lists.xenproject.org>; Mon, 20 Apr 2026 21:50:51 +0200
Received: by smtp.purelymail.com (Purelymail SMTP) with ESMTPSA id -306608446; 
 (version=TLSv1.3 cipher=TLS_AES_256_GCM_SHA384);
 Mon, 20 Apr 2026 19:50: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=purelymail1 header.d=purelymail.com header.i="@purelymail.com" header.h="Feedback-ID:Received:From:To:Subject:Date"
DKIM-Signature: a=rsa-sha256; b=BUWViz1HX1BBqALyZx+7NkZJniZ89w3OKNPE8ISNw+sIMhTi8LW/OkdsUfen+redgW4BaE1sPJPuSclmSl14wSKVVqUPCUU8AI9UN4wKdJmWsXT7h5W/Aq7reLYLxdlotCQ3QmdRxskqppq7/q718B6v/7s/9SeMOo9J3H7FiiBzbdfdz9rTdqCzzEeTnAiCMzRtJiqk5/m7Yrv6+JlVCa924NwRw93Gq2JLW1eYSaXViKJC17bZtup4P/Yjd1ZslZL5RItn3ekihAk6LiqCIQmQu91pUyOcs/ht6PgYL3m3VECQ2ttJlLQLGsW4uYodXPAuEfG31iik4cC3EqnN/Q==; s=purelymail1; d=purelymail.com; v=1; bh=FUGBLopHINZhG1l1iHXBX4rky0Br+fp5HvqRUDdfpzM=; h=Feedback-ID:Received:From:To:Subject:Date;
Feedback-ID: 685805:22403:null:purelymail
X-Pm-Original-To: xen-devel@lists.xenproject.org
From: Rose.Spangler@purelymail.com
To: xen-devel@lists.xenproject.org
Cc: Rose Spangler <Rose.Spangler@elektrobit.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>,
	Aqib Javaid <Aqib.Javaid@elektrobit.com>
Subject: [RFC PATCH v6 06/43] arm/altp2m: Add template arch-specific altp2m.c/altp2m.h
Date: Mon, 20 Apr 2026 15:50:05 -0400
Message-Id: <20260420195042.207624-7-Rose.Spangler@purelymail.com>
X-Mailer: git-send-email 2.34.1
In-Reply-To: <20260420195042.207624-1-Rose.Spangler@purelymail.com>
References: <20260420195042.207624-1-Rose.Spangler@purelymail.com>
MIME-Version: 1.0
Content-Transfer-Encoding: quoted-printable
X-MIME-Autoconverted: from 8bit to quoted-printable by Purelymail
Content-Type: text/plain; charset=UTF-8
X-purgate-ID: tlsNG-bad1c0/1776714651-92D77A53-40B251C1/0/0
X-purgate-type: clean
X-purgate-size: 3304

From: Rose Spangler <Rose.Spangler@elektrobit.com>

Similarly to the earlier common altp2m.c/altp2m.h commit, this commit adds
a template altp2m.c and altp2m.h file for ARM to be added to in later
commits.  Creating a commit with just the template file additions makes it
easier to reorder later commits which add to these files.

This commit can be squashed into the first commit which actually adds
something to altp2m.c/altp2m.h for the actual submission if that would be
preferred.

This is commit 6/8 of the preparation phase.

Signed-off-by: Rose Spangler <Rose.Spangler@elektrobit.com>
Signed-off-by: Aqib Javaid <Aqib.Javaid@elektrobit.com>
---
v6: Introduced this patch.
---
 xen/arch/arm/Makefile             |  1 +
 xen/arch/arm/altp2m.c             | 16 +++++++++++++
 xen/arch/arm/include/asm/Makefile |  1 -
 xen/arch/arm/include/asm/altp2m.h | 37 +++++++++++++++++++++++++++++++
 4 files changed, 54 insertions(+), 1 deletion(-)
 create mode 100644 xen/arch/arm/altp2m.c
 create mode 100644 xen/arch/arm/include/asm/altp2m.h

diff --git a/xen/arch/arm/Makefile b/xen/arch/arm/Makefile
index 69200b27280d..d995d4ff7aa1 100644
--- a/xen/arch/arm/Makefile
+++ b/xen/arch/arm/Makefile
@@ -12,6 +12,7 @@ obj-$(CONFIG_TEE) +=3D tee/
 obj-$(CONFIG_HAS_VPCI) +=3D vpci.o
=20
 obj-$(CONFIG_HAS_ALTERNATIVE) +=3D alternative.o
+obj-$(CONFIG_ALTP2M) +=3D altp2m.o
 obj-y +=3D cpuerrata.o
 obj-y +=3D cpufeature.o
 obj-y +=3D decode.o
diff --git a/xen/arch/arm/altp2m.c b/xen/arch/arm/altp2m.c
new file mode 100644
index 000000000000..2bd1ff4df223
--- /dev/null
+++ b/xen/arch/arm/altp2m.c
@@ -0,0 +1,16 @@
+/* SPDX-License-Identifier: GPL-2.0-only */
+/*
+ * altp2m.c: Alternate p2m
+ *
+ * Copyright (c) 2016 Sergej Proskurin <proskurin@sec.in.tum.de>
+ */
+
+/*
+ * 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/arm/include/asm/Makefile b/xen/arch/arm/include/asm/M=
akefile
index 4565baca6a4d..fef4dd42b6cb 100644
--- a/xen/arch/arm/include/asm/Makefile
+++ b/xen/arch/arm/include/asm/Makefile
@@ -1,5 +1,4 @@
 # SPDX-License-Identifier: GPL-2.0-only
-generic-y +=3D altp2m.h
 generic-y +=3D device.h
 generic-y +=3D hardirq.h
 generic-y +=3D iocap.h
diff --git a/xen/arch/arm/include/asm/altp2m.h b/xen/arch/arm/include/asm/a=
ltp2m.h
new file mode 100644
index 000000000000..ca836bae7330
--- /dev/null
+++ b/xen/arch/arm/include/asm/altp2m.h
@@ -0,0 +1,37 @@
+/* SPDX-License-Identifier: GPL-2.0-only */
+/*
+ * altp2m.h: Alternate p2m
+ *
+ * Copyright (c) 2014, Intel Corporation.
+ * Copyright (c) 2016, Sergej Proskurin <proskurin@sec.in.tum.de>.
+ */
+
+#ifndef __ASM_ARM_ALTP2M_H
+#define __ASM_ARM_ALTP2M_H
+
+#include <xen/sched.h>
+
+static inline bool altp2m_supported(void)
+{
+    /* Not implemented yet */
+    return false;
+}
+
+/* Alternate p2m VCPU */
+static inline uint16_t altp2m_vcpu_idx(const struct vcpu *v)
+{
+    /* Not implemented yet */
+    BUG();
+    return 0;
+}
+
+#endif /* __ASM_ARM_ALTP2M_H */
+
+/*
+ * Local variables:
+ * mode: C
+ * c-file-style: "BSD"
+ * c-basic-offset: 4
+ * indent-tabs-mode: nil
+ * End:
+ */
--=20
2.34.1



From xen-devel-bounces@lists.xenproject.org Mon Apr 20 20:25:29 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 20 Apr 2026 20:25:29 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1286477.1567554 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wEvBJ-0002PY-W3; Mon, 20 Apr 2026 20:25:21 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1286477.1567554; Mon, 20 Apr 2026 20:25: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 1wEvBJ-0002NW-Js; Mon, 20 Apr 2026 20:25:21 +0000
Received: by outflank-mailman (input) for mailman id 1286477;
 Mon, 20 Apr 2026 19:50:56 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <Rose.Spangler@purelymail.com>) id 1wEue0-0006IR-Iw
 for xen-devel@lists.xenproject.org; Mon, 20 Apr 2026 19:50:56 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wEudz-00C1UM-WC
 for xen-devel@lists.xenproject.org; Mon, 20 Apr 2026 21:50:56 +0200
Received: from [10.42.69.9] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <Rose.Spangler@purelymail.com>)
 id 69e6835b-e002-0a2a0a5209dd-0a2a45099984-26
 for <xen-devel@lists.xenproject.org>; Mon, 20 Apr 2026 21:50:55 +0200
Received: from [34.202.193.197] (helo=sendmail.purelymail.com)
 by tlsNG-bad1c0.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.1)
 (envelope-from <Rose.Spangler@purelymail.com>)
 id 69e6839e-2497-0a2a45090019-22cac1c5a53c-3
 for <xen-devel@lists.xenproject.org>; Mon, 20 Apr 2026 21:50:55 +0200
Received: by smtp.purelymail.com (Purelymail SMTP) with ESMTPSA id -306608446; 
 (version=TLSv1.3 cipher=TLS_AES_256_GCM_SHA384);
 Mon, 20 Apr 2026 19:50: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=purelymail1 header.d=purelymail.com header.i="@purelymail.com" header.h="Feedback-ID:Received:From:To:Subject:Date"
DKIM-Signature: a=rsa-sha256; b=g/JAHQ7kBhs1cznfKmmQoGJSwQ+O+Z+ko9/sZQMOX01CiHHoKmq27efb1LqUeOh67MvVC81LUX9JgAKdkUbaEnnipLj4HP+dyztEbXtp7nVSMduBpgZc6GHl2vBBFioyn+IQhUJlnbwmmfOSSvWiOmcmy8JOzvQsTkkxrGbKlStDAcoCGLpaKQgR26+3CmoYrAMXJPBlMIED+8/MLH0KNsVID47FKhf1UeFlMHow2TabnXCDmRfU1p2C264Nr/ozZxC0Vew9JOFvvjdCXXk6bP4+QwxEZ8JeAOXBeDK5PJsiJtJyGLcD0vvm8J/InI92Om0+AzFnY8qd5vhCpm1f6Q==; s=purelymail1; d=purelymail.com; v=1; bh=JwDnFKgkTFmQKUka/cnSo5jC+ufs1/9GTGeUNuUNyrI=; h=Feedback-ID:Received:From:To:Subject:Date;
Feedback-ID: 685805:22403:null:purelymail
X-Pm-Original-To: xen-devel@lists.xenproject.org
From: Rose.Spangler@purelymail.com
To: xen-devel@lists.xenproject.org
Cc: Rose Spangler <Rose.Spangler@elektrobit.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>,
	Aqib Javaid <Aqib.Javaid@elektrobit.com>
Subject: [RFC PATCH v6 07/43] arm/altp2m: Introduce CONFIG_ALTP2M Kconfig option
Date: Mon, 20 Apr 2026 15:50:06 -0400
Message-Id: <20260420195042.207624-8-Rose.Spangler@purelymail.com>
X-Mailer: git-send-email 2.34.1
In-Reply-To: <20260420195042.207624-1-Rose.Spangler@purelymail.com>
References: <20260420195042.207624-1-Rose.Spangler@purelymail.com>
MIME-Version: 1.0
Content-Transfer-Encoding: quoted-printable
X-MIME-Autoconverted: from 8bit to quoted-printable by Purelymail
Content-Type: text/plain; charset=UTF-8
X-purgate-ID: tlsNG-bad1c0/1776714655-93374A53-B98F9258/0/0
X-purgate-type: clean
X-purgate-size: 2913

From: Rose Spangler <Rose.Spangler@elektrobit.com>

Following the x86 implementation in commit e96831ece819, this commit adds
the CONFIG_ALTP2M Kconfig option for ARM. This makes it possible to build
Xen without building altp2m code.

This commit also implements a stub for p2m_altp2m_check, as some
implementation is needed when CONFIG_ALTP2M is enabled. This is due to a
call to p2m_altp2m_check in vm_event.c which is gated by CONFIG_ALTP2M.

This is commit 7/8 of the preparation phase.

Signed-off-by: Rose Spangler <Rose.Spangler@elektrobit.com>
Signed-off-by: Aqib Javaid <Aqib.Javaid@elektrobit.com>
---
v6: Introduced this patch.
---
 xen/arch/arm/Kconfig              | 11 +++++++++++
 xen/arch/arm/altp2m.c             |  9 +++++++++
 xen/arch/arm/include/asm/altp2m.h | 18 ++++++++++++++++--
 3 files changed, 36 insertions(+), 2 deletions(-)

diff --git a/xen/arch/arm/Kconfig b/xen/arch/arm/Kconfig
index 2f2b501fdac4..fdf0721c3c03 100644
--- a/xen/arch/arm/Kconfig
+++ b/xen/arch/arm/Kconfig
@@ -98,6 +98,17 @@ config MPU
 =09  systems supporting EL2. (UNSUPPORTED)
 endchoice
=20
+config ALTP2M
+=09bool "Alternate P2M support" if EXPERT
+=09depends on MMU
+=09default y
+=09help
+=09  Alternate-p2m allows a guest to manage multiple p2m guest physical
+=09  "memory views" (as opposed to a single p2m).
+=09  Useful for memory introspection.
+
+=09  If unsure, stay with defaults.
+
 source "arch/Kconfig"
=20
 config ACPI
diff --git a/xen/arch/arm/altp2m.c b/xen/arch/arm/altp2m.c
index 2bd1ff4df223..8bd174ea8f37 100644
--- a/xen/arch/arm/altp2m.c
+++ b/xen/arch/arm/altp2m.c
@@ -5,6 +5,15 @@
  * Copyright (c) 2016 Sergej Proskurin <proskurin@sec.in.tum.de>
  */
=20
+#include <asm/p2m.h>
+
+/* Check to see if vcpu should be switched to a different p2m. */
+void p2m_altp2m_check(struct vcpu *v, uint16_t idx)
+{
+    /* Not yet implemented */
+    BUG();
+}
+
 /*
  * Local variables:
  * mode: C
diff --git a/xen/arch/arm/include/asm/altp2m.h b/xen/arch/arm/include/asm/a=
ltp2m.h
index ca836bae7330..698c35427e75 100644
--- a/xen/arch/arm/include/asm/altp2m.h
+++ b/xen/arch/arm/include/asm/altp2m.h
@@ -11,10 +11,12 @@
=20
 #include <xen/sched.h>
=20
+#ifdef CONFIG_ALTP2M
+
+/* Hardware always supports altp2m on ARM */
 static inline bool altp2m_supported(void)
 {
-    /* Not implemented yet */
-    return false;
+    return true;
 }
=20
 /* Alternate p2m VCPU */
@@ -25,6 +27,18 @@ static inline uint16_t altp2m_vcpu_idx(const struct vcpu=
 *v)
     return 0;
 }
=20
+#else /* CONFIG_ALTP2M */
+
+static inline bool altp2m_supported(void)
+{
+    return false;
+}
+
+/* Only declaration is needed. DCE will optimise it out when linking. */
+uint16_t altp2m_vcpu_idx(const struct vcpu *v);
+
+#endif /* CONFIG_ALTP2M */
+
 #endif /* __ASM_ARM_ALTP2M_H */
=20
 /*
--=20
2.34.1



From xen-devel-bounces@lists.xenproject.org Mon Apr 20 20:25:31 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 20 Apr 2026 20:25:31 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1286498.1567648 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wEvBS-0004vD-JK; Mon, 20 Apr 2026 20:25:30 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1286498.1567648; Mon, 20 Apr 2026 20:25: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 1wEvBQ-0004rZ-Uh; Mon, 20 Apr 2026 20:25:28 +0000
Received: by outflank-mailman (input) for mailman id 1286498;
 Mon, 20 Apr 2026 19:54:14 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <Rose.Spangler@purelymail.com>) id 1wEuhC-0006RK-5O
 for xen-devel@lists.xenproject.org; Mon, 20 Apr 2026 19:54:14 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wEuhB-008XBJ-IS
 for xen-devel@lists.xenproject.org; Mon, 20 Apr 2026 21:54:13 +0200
Received: from [10.42.69.1] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <Rose.Spangler@purelymail.com>)
 id 69e6842b-bab6-0a2a0a5309dd-0a2a4501dfd2-48
 for <xen-devel@lists.xenproject.org>; Mon, 20 Apr 2026 21:54:13 +0200
Received: from [34.202.193.197] (helo=sendmail.purelymail.com)
 by tlsNG-d62444.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.1)
 (envelope-from <Rose.Spangler@purelymail.com>)
 id 69e683b0-c1f2-0a2a45010019-22cac1c5ed76-3
 for <xen-devel@lists.xenproject.org>; Mon, 20 Apr 2026 21:51:13 +0200
Received: by smtp.purelymail.com (Purelymail SMTP) with ESMTPSA id -306608446; 
 (version=TLSv1.3 cipher=TLS_AES_256_GCM_SHA384);
 Mon, 20 Apr 2026 19:50:58 +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=purelymail1 header.d=purelymail.com header.i="@purelymail.com" header.h="Feedback-ID:Received:From:To:Subject:Date"
DKIM-Signature: a=rsa-sha256; b=ckCzk1RLU5H7o8z98jVbNDtfQVfZx3Dgw741GYACJI5hgysSvN+Ozn9xSf0uu4iuwrQwTm3N6RmSleU2HQTtR0TDOAK2uI2ywKgBYLOA9nMN0bn8GSpOaKFgs5cDw8y/PGLJvnaMLR+pNzODuL8ep5d6RJu2L5wj4YppD1uk1gNKUQKbHobOUaebMEwE07nLyR5RAO0KM1dWc9LoO41CpL2+q5LSzoeeLurU6d44lXjJ8AcocwNoasw3nL0Lue0VE9e8xOPvvO2Dw8sCsB4DZJfzgsOIQJfa455onP1lGj0Cpp1Qau9P/AsKRQK946Kx2Gr1A1bsZVEE/q24lS696A==; s=purelymail1; d=purelymail.com; v=1; bh=sJtt5sv+KSdQzbFQSigMs7fjAJ9VYApzYG1/06R78L4=; h=Feedback-ID:Received:From:To:Subject:Date;
Feedback-ID: 685805:22403:null:purelymail
X-Pm-Original-To: xen-devel@lists.xenproject.org
From: Rose.Spangler@purelymail.com
To: xen-devel@lists.xenproject.org
Cc: Rose Spangler <Rose.Spangler@elektrobit.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>,
	Sergej Proskurin <proskurin@sec.in.tum.de>
Subject: [RFC PATCH v6 25/43] arm/altp2m: Add altp2m index to arch_vcpu
Date: Mon, 20 Apr 2026 15:50:24 -0400
Message-Id: <20260420195042.207624-26-Rose.Spangler@purelymail.com>
X-Mailer: git-send-email 2.34.1
In-Reply-To: <20260420195042.207624-1-Rose.Spangler@purelymail.com>
References: <20260420195042.207624-1-Rose.Spangler@purelymail.com>
MIME-Version: 1.0
Content-Transfer-Encoding: quoted-printable
X-MIME-Autoconverted: from 8bit to quoted-printable by Purelymail
Content-Type: text/plain; charset=UTF-8
X-purgate-ID: tlsNG-d62444/1776714673-BEA61FF4-CC81A8CE/0/0
X-purgate-type: clean
X-purgate-size: 1940

From: Rose Spangler <Rose.Spangler@elektrobit.com>

This commit adds ap2m_idx to the VCPU struct on ARM. This makes it possible
to track the current altp2m view being used by a VCPU.

This is commit 2/4 of the altp2m_{get,set}_altp2m phase.

Signed-off-by: Rose Spangler <Rose.Spangler@elektrobit.com>
Signed-off-by: Sergej Proskurin <proskurin@sec.in.tum.de>
---
v6: This patch was originally part of the "arm/p2m: Add
    HVMOP_altp2m_set_domain_state" patch from the v4/v5 patch series.
    It has been extracted into its own commit to make the patch series
    easier to follow. If it would be preferred, this commit can be squashed
    into another commit.

    Added support for the CONFIG_ALTP2M option.
---
 xen/arch/arm/include/asm/altp2m.h | 4 +---
 xen/arch/arm/include/asm/domain.h | 5 +++++
 2 files changed, 6 insertions(+), 3 deletions(-)

diff --git a/xen/arch/arm/include/asm/altp2m.h b/xen/arch/arm/include/asm/a=
ltp2m.h
index 5a217f48b103..bc695018e62c 100644
--- a/xen/arch/arm/include/asm/altp2m.h
+++ b/xen/arch/arm/include/asm/altp2m.h
@@ -26,9 +26,7 @@ static inline bool altp2m_supported(void)
 /* Alternate p2m VCPU */
 static inline uint16_t altp2m_vcpu_idx(const struct vcpu *v)
 {
-    /* Not implemented yet */
-    BUG();
-    return 0;
+    return v->arch.ap2m_idx;
 }
=20
 #else /* CONFIG_ALTP2M */
diff --git a/xen/arch/arm/include/asm/domain.h b/xen/arch/arm/include/asm/d=
omain.h
index 9e69d62086cd..4d497a21b648 100644
--- a/xen/arch/arm/include/asm/domain.h
+++ b/xen/arch/arm/include/asm/domain.h
@@ -249,6 +249,11 @@ struct arch_vcpu
     struct vtimer virt_timer;
     bool   vtimer_initialized;
=20
+#if CONFIG_ALTP2M
+    /* Alternate p2m index */
+    uint16_t ap2m_idx;
+#endif
+
     /*
      * The full P2M may require some cleaning (e.g when emulation
      * set/way). As the action can take a long time, it requires
--=20
2.34.1



From xen-devel-bounces@lists.xenproject.org Mon Apr 20 20:25:32 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 20 Apr 2026 20:25:32 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1286499.1567654 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wEvBT-00057N-PY; Mon, 20 Apr 2026 20:25:31 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1286499.1567654; Mon, 20 Apr 2026 20:25: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 1wEvBS-000529-9D; Mon, 20 Apr 2026 20:25:30 +0000
Received: by outflank-mailman (input) for mailman id 1286499;
 Mon, 20 Apr 2026 19:54:14 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <Rose.Spangler@purelymail.com>) id 1wEuhC-0006RL-7I
 for xen-devel@lists.xenproject.org; Mon, 20 Apr 2026 19:54:14 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wEuhB-001Dle-KN
 for xen-devel@lists.xenproject.org; Mon, 20 Apr 2026 21:54:13 +0200
Received: from [10.42.69.3] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <Rose.Spangler@purelymail.com>)
 id 69e68454-5cb7-0a2a0a5109dd-0a2a4503cb20-14
 for <xen-devel@lists.xenproject.org>; Mon, 20 Apr 2026 21:54:13 +0200
Received: from [34.202.193.197] (helo=sendmail.purelymail.com)
 by tlsNG-33051d.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.1)
 (envelope-from <Rose.Spangler@purelymail.com>)
 id 69e683b0-672d-0a2a45030019-22cac1c5ed78-3
 for <xen-devel@lists.xenproject.org>; Mon, 20 Apr 2026 21:51:13 +0200
Received: by smtp.purelymail.com (Purelymail SMTP) with ESMTPSA id -306608446; 
 (version=TLSv1.3 cipher=TLS_AES_256_GCM_SHA384);
 Mon, 20 Apr 2026 19:50:59 +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=purelymail1 header.d=purelymail.com header.i="@purelymail.com" header.h="Feedback-ID:Received:From:To:Subject:Date"
DKIM-Signature: a=rsa-sha256; b=jyLGAcgSR6t3hWjZwx7uMdSZpDIEbDwOYrxRjZ+6+Pmnt+aGAD6SoaShwQ8Bh72FF/ZmLSkOEyMUmN8BRirbhRoeBFIfazMHKmCrxMjAFwx/yzGpaQ0mbb9RrWlmOJQHkxIkN4PqwHUIzB3jOzUL0msJjzV83RZa6Esbjl/YL0mdEQrBS3anCTZ7e7D46NS1gTT9ystRQGXHfAJAPzOw8Mko+V5/qI3nx8GFJ3WjNwvQhX3f/YjOSq34iw99Gn92mGx2e3Q6K+wn+C6fhdCHMWLQ66/A9JrUy27mm5LmMkMMa4+iNTBTsjChRchweB+RANnfHW9RjIdbu4el42TwBA==; s=purelymail1; d=purelymail.com; v=1; bh=REsQIKHl7J7AKoiHPZNWVFk+81JDE53ulC3Q/fRj3U0=; h=Feedback-ID:Received:From:To:Subject:Date;
Feedback-ID: 685805:22403:null:purelymail
X-Pm-Original-To: xen-devel@lists.xenproject.org
From: Rose.Spangler@purelymail.com
To: xen-devel@lists.xenproject.org
Cc: Rose Spangler <Rose.Spangler@elektrobit.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>,
	=?UTF-8?q?Roger=20Pau=20Monn=C3=A9?= <roger.pau@citrix.com>,
	Teddy Astie <teddy.astie@vates.tech>
Subject: [RFC PATCH v6 26/43] altp2m: Add altp2m_set_vcpu_idx
Date: Mon, 20 Apr 2026 15:50:25 -0400
Message-Id: <20260420195042.207624-27-Rose.Spangler@purelymail.com>
X-Mailer: git-send-email 2.34.1
In-Reply-To: <20260420195042.207624-1-Rose.Spangler@purelymail.com>
References: <20260420195042.207624-1-Rose.Spangler@purelymail.com>
MIME-Version: 1.0
Content-Transfer-Encoding: quoted-printable
X-MIME-Autoconverted: from 8bit to quoted-printable by Purelymail
Content-Type: text/plain; charset=UTF-8
X-purgate-ID: tlsNG-33051d/1776714673-48FD6938-BEA2AA01/0/0
X-purgate-type: clean
X-purgate-size: 1731

From: Rose Spangler <Rose.Spangler@elektrobit.com>

This commit adds the altp2m_set_vcpu_idx function for both x86 and ARM.
Since the altp2m VCPU index is stored differently depending on which
architecture is used, the altp2m_set_vcpu_idx function makes it possible to
set this value in an architecture independent way for common code routines.

This is commit 3/4 of the altp2m_{get,set}_altp2m phase.

Signed-off-by: Rose Spangler <Rose.Spangler@elektrobit.com>
---
v6: Introduced this patch.
---
 xen/arch/arm/include/asm/altp2m.h | 5 +++++
 xen/arch/x86/include/asm/altp2m.h | 5 +++++
 2 files changed, 10 insertions(+)

diff --git a/xen/arch/arm/include/asm/altp2m.h b/xen/arch/arm/include/asm/a=
ltp2m.h
index bc695018e62c..f001e022a213 100644
--- a/xen/arch/arm/include/asm/altp2m.h
+++ b/xen/arch/arm/include/asm/altp2m.h
@@ -29,6 +29,11 @@ static inline uint16_t altp2m_vcpu_idx(const struct vcpu=
 *v)
     return v->arch.ap2m_idx;
 }
=20
+static inline void altp2m_set_vcpu_idx(struct vcpu *v, unsigned int idx)
+{
+    v->arch.ap2m_idx =3D idx;
+}
+
 #else /* CONFIG_ALTP2M */
=20
 static inline bool altp2m_supported(void)
diff --git a/xen/arch/x86/include/asm/altp2m.h b/xen/arch/x86/include/asm/a=
ltp2m.h
index a1b078783b3e..b3d348386a00 100644
--- a/xen/arch/x86/include/asm/altp2m.h
+++ b/xen/arch/x86/include/asm/altp2m.h
@@ -60,6 +60,11 @@ static inline uint16_t altp2m_vcpu_idx(const struct vcpu=
 *v)
     return vcpu_altp2m(v).p2midx;
 }
=20
+static inline void altp2m_set_vcpu_idx(struct vcpu *v, unsigned int idx)
+{
+    vcpu_altp2m(v).p2midx =3D idx;
+}
+
 /*
  * Alternate p2m: shadow p2m tables used for alternate memory views
  */
--=20
2.34.1



From xen-devel-bounces@lists.xenproject.org Mon Apr 20 20:25:37 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 20 Apr 2026 20:25:37 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1286502.1567661 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wEvBW-0005Mp-4S; Mon, 20 Apr 2026 20:25:34 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1286502.1567661; Mon, 20 Apr 2026 20:25: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 1wEvBT-0005Ic-M7; Mon, 20 Apr 2026 20:25:31 +0000
Received: by outflank-mailman (input) for mailman id 1286502;
 Mon, 20 Apr 2026 19:54:58 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <Rose.Spangler@purelymail.com>) id 1wEuhu-0006SQ-JZ
 for xen-devel@lists.xenproject.org; Mon, 20 Apr 2026 19:54:58 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wEuhu-008XH6-0R
 for xen-devel@lists.xenproject.org; Mon, 20 Apr 2026 21:54:58 +0200
Received: from [10.42.69.7] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <Rose.Spangler@purelymail.com>)
 id 69e68454-bab6-0a2a0a5309dd-0a2a45079f0a-38
 for <xen-devel@lists.xenproject.org>; Mon, 20 Apr 2026 21:54:57 +0200
Received: from [34.202.193.197] (helo=sendmail.purelymail.com)
 by tlsNG-ef75cf.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.1)
 (envelope-from <Rose.Spangler@purelymail.com>)
 id 69e683a0-229c-0a2a45070019-22cac1c59abe-3
 for <xen-devel@lists.xenproject.org>; Mon, 20 Apr 2026 21:50:57 +0200
Received: by smtp.purelymail.com (Purelymail SMTP) with ESMTPSA id -306608446; 
 (version=TLSv1.3 cipher=TLS_AES_256_GCM_SHA384);
 Mon, 20 Apr 2026 19:50:54 +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=purelymail1 header.d=purelymail.com header.i="@purelymail.com" header.h="Feedback-ID:Received:From:To:Subject:Date"
DKIM-Signature: a=rsa-sha256; b=F9MbV6ACJ4uu8xz4nBiYL+aJEaI7vNYgek40kUHpvesIb6Iaboxo61gh+uvAXEzLMJLkNoVW4PQhgcq/Nf3Gpvq4bPtaOW5TmF/HnTF4goJZnO44JqyaTHYLQJpz6b5CUpSz/1JOBSamtbwsGKYfY0pmkmxSKpfYWmH+WWw1cOqnapmEzR0OyBRIrAd8NEnivQuoKbwEjUIi879wTLBDus0BvqoiV76eZCkCuLyAevRI+ixmQ3kla0ordVy/vImR8d0vgS6YP8f9vvoKMxGaSfdxQsZY8Jwh4ElMQurIU3Zo7XU4m/Mh4xy9IIVhyfVRc7qrCyKkZ0AIoefoYzQMhA==; s=purelymail1; d=purelymail.com; v=1; bh=J3+KXe+q3SuG3x2Q+RtXcVoXETWE7y6frhf/lsuIM/c=; h=Feedback-ID:Received:From:To:Subject:Date;
Feedback-ID: 685805:22403:null:purelymail
X-Pm-Original-To: xen-devel@lists.xenproject.org
From: Rose.Spangler@purelymail.com
To: xen-devel@lists.xenproject.org
Cc: Sergej Proskurin <proskurin@sec.in.tum.de>,
	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: [RFC PATCH v6 16/43] arm/p2m: Cosmetic fix - substitute _gfn(ULONG_MAX) for INVALID_GFN
Date: Mon, 20 Apr 2026 15:50:15 -0400
Message-Id: <20260420195042.207624-17-Rose.Spangler@purelymail.com>
X-Mailer: git-send-email 2.34.1
In-Reply-To: <20260420195042.207624-1-Rose.Spangler@purelymail.com>
References: <20260420195042.207624-1-Rose.Spangler@purelymail.com>
MIME-Version: 1.0
Content-Transfer-Encoding: quoted-printable
X-MIME-Autoconverted: from 8bit to quoted-printable by Purelymail
Content-Type: text/plain; charset=UTF-8
X-purgate-ID: tlsNG-ef75cf/1776714657-ADB68C48-575F2930/0/0
X-purgate-type: clean
X-purgate-size: 1020

From: Sergej Proskurin <proskurin@sec.in.tum.de>

In ./xen/arch/arm/p2m.c, we compare the gfn's with INVALID_GFN
throughout the code. Thus it makes sense to use the macro INVALID_GFN
instead of a hard coded value to initialize "p2m->lowest_mapped_gfn".

This is commit 5/12 of the altp2m_init/altp2m_teardown routines phase.

Signed-off-by: Sergej Proskurin <proskurin@sec.in.tum.de>
---
 xen/arch/arm/mmu/p2m.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/xen/arch/arm/mmu/p2m.c b/xen/arch/arm/mmu/p2m.c
index 3ecb969a0369..1009f10e5db4 100644
--- a/xen/arch/arm/mmu/p2m.c
+++ b/xen/arch/arm/mmu/p2m.c
@@ -1517,7 +1517,7 @@ static int p2m_initialise(struct domain *d, struct p2=
m_domain *p2m)
=20
     p2m->vmid =3D INVALID_VMID;
     p2m->max_mapped_gfn =3D _gfn(0);
-    p2m->lowest_mapped_gfn =3D _gfn(ULONG_MAX);
+    p2m->lowest_mapped_gfn =3D INVALID_GFN;
=20
     p2m->default_access =3D p2m_access_rwx;
     p2m->mem_access_enabled =3D false;
--=20
2.34.1



From xen-devel-bounces@lists.xenproject.org Mon Apr 20 20:25:40 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 20 Apr 2026 20:25:40 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1286503.1567665 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wEvBY-0005kf-Py; Mon, 20 Apr 2026 20:25:36 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1286503.1567665; Mon, 20 Apr 2026 20:25: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 1wEvBV-0005bS-RB; Mon, 20 Apr 2026 20:25:33 +0000
Received: by outflank-mailman (input) for mailman id 1286503;
 Mon, 20 Apr 2026 19:54:59 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <Rose.Spangler@purelymail.com>) id 1wEuhv-0006SW-0I
 for xen-devel@lists.xenproject.org; Mon, 20 Apr 2026 19:54:59 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wEuhu-008XH6-Da
 for xen-devel@lists.xenproject.org; Mon, 20 Apr 2026 21:54:58 +0200
Received: from [10.42.69.5] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <Rose.Spangler@purelymail.com>)
 id 69e6843f-bab6-0a2a0a5309dd-0a2a4505bfc4-34
 for <xen-devel@lists.xenproject.org>; Mon, 20 Apr 2026 21:54:58 +0200
Received: from [34.202.193.197] (helo=sendmail.purelymail.com)
 by tlsNG-c201ff.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.1)
 (envelope-from <Rose.Spangler@purelymail.com>)
 id 69e683a0-aaa8-0a2a45050019-22cac1c59978-3
 for <xen-devel@lists.xenproject.org>; Mon, 20 Apr 2026 21:50:57 +0200
Received: by smtp.purelymail.com (Purelymail SMTP) with ESMTPSA id -306608446; 
 (version=TLSv1.3 cipher=TLS_AES_256_GCM_SHA384);
 Mon, 20 Apr 2026 19:50: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=purelymail1 header.d=purelymail.com header.i="@purelymail.com" header.h="Feedback-ID:Received:From:To:Subject:Date"
DKIM-Signature: a=rsa-sha256; b=Y1Z3a/0ZFeJbvvg34y5PogXq5DFlqhRhk10bT3/xkvHbswu1iULGf3KAjonxOYEKvO1wMItuikExB7MFJfMSHf08RSO7Nr0Kg1DijZTk9EWJbCXzTMbd2KHBIgPGiwXrzqjquOt0hDOXliLdjxvYCaVMIvqX54IroAh4XTPrvPS4UtzOsddwHbW7TkvSTPYcvwUjl9cOE28D/JBfTh0OFzYRXEpRRGdODGSk6Hr4k+Hk5hS/SzpkChktk0bNKfTSpFE6nepCNNLSNaCd2+3e2H1ld14+r/yTY1xVp/hNFfedRpr2E3+MtZcbbdBS7tCeS1x3RYw6NL11YvDLwKC+Ug==; s=purelymail1; d=purelymail.com; v=1; bh=e683LwwNMa3+lnrdWdK52Gu9IfTTlss7Pk0lZ8mbuPc=; h=Feedback-ID:Received:From:To:Subject:Date;
Feedback-ID: 685805:22403:null:purelymail
X-Pm-Original-To: xen-devel@lists.xenproject.org
From: Rose.Spangler@purelymail.com
To: xen-devel@lists.xenproject.org
Cc: Rose Spangler <Rose.Spangler@elektrobit.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>,
	Sergej Proskurin <proskurin@sec.in.tum.de>
Subject: [RFC PATCH v6 18/43] arm/p2m: Invalidate root page table entries and flush TLB in p2m_flush_table
Date: Mon, 20 Apr 2026 15:50:17 -0400
Message-Id: <20260420195042.207624-19-Rose.Spangler@purelymail.com>
X-Mailer: git-send-email 2.34.1
In-Reply-To: <20260420195042.207624-1-Rose.Spangler@purelymail.com>
References: <20260420195042.207624-1-Rose.Spangler@purelymail.com>
MIME-Version: 1.0
Content-Transfer-Encoding: quoted-printable
X-MIME-Autoconverted: from 8bit to quoted-printable by Purelymail
Content-Type: text/plain; charset=UTF-8
X-purgate-ID: tlsNG-c201ff/1776714657-2B762443-8C89B9DA/0/0
X-purgate-type: clean
X-purgate-size: 4946

From: Rose Spangler <Rose.Spangler@elektrobit.com>

This commit invalidates the root page table entries and flushes the TLB
when the table is flushed. The TLB is flushed to ensure that altp2m views
after being reset or torn down. Previously, the code in p2m_flush_table was
only used to free p2m pages during domain teardown. This function will
later be used to teardown/reset altp2m views of a still-running domain, so
the page table entries must be properly invalidated.

Additionally, the p2m_invalidate_root function is split into
p2m_invalidate_root and p2m_invalidate_root_locked. The p2m_flush_table
function already holds the lock, so it calls p2m_invalidate_root_locked
directly, as opposed to the existing callers which don't already hold the
lock.

This is commit 7/12 of the altp2m_init/altp2m_teardown routines phase.

Signed-off-by: Rose Spangler <Rose.Spangler@elektrobit.com>
Signed-off-by: Sergej Proskurin <proskurin@sec.in.tum.de>
---
v3: Added a "p2m_flush_tlb" call in "p2m_flush_table". On altp2m reset
    in function "altp2m_reset", it is important to flush the TLBs after
    clearing the root table pages and before clearing the intermediate
    altp2m page tables to prevent illegal access to stalled TLB entries on
    currently active VCPUs.

v4: Replaced the former use of clear_and_clean_page in p2m_flush_table
    by a routine that invalidates every p2m entry atomically. This
    avoids inconsistencies on CPUs that continue to use the views that
    are to be flushed (e.g., see altp2m_reset).

v6: Introduced this patch. While the code in this patch is mostly new, it
    is the same in spirit as the p2m_flush_table additions in the original
    patch series, so the relevant comments have been reproduced above.

    In the v4/v5 versions of this patch series, this patch was a part of
    the previous patch. It has been split out to minimize the number of
    functionality changes in the previous patch.

    Additionally, the original patch series used a routine here which was
    nearly identical to p2m_invalidate_root, which was implemented a few
    years after the patch series. Therefore, the existing
    p2m_invalidate_root implementation is used here instead.

    Also, since the original patch series p2m_teardown (and by extension
    p2m_flush_table, as it was extracted from p2m_teardown) was made
    preemptible. As a consequence of this, introducing a call to
    p2m_invalidate_root here also means that p2m_invalidate_root and
    p2m_tlb_flush_sync is called each time p2m_flush_table is called, even
    if a previous call to p2m_flush_table was preempted. This might cause
    some additional overhead, as p2m_flush_table will iterate over the root
    page tables and flush the TLB before it can return to freeing p2m
    pages. I'm not sure if there's a better way of handling this, or if
    the overhead here is negligible/acceptable.

    I'm not sure how IOMMU interacts with altp2m here. I haven't looked
    into it extensively, so I would appreciate some feedback here. I've
    just copied over the iommu_use_hap_pt conditional from
    p2m_domain_creation_finished, but this is probably not the right
    behavior since we probably still need to invalidate the altp2m view
    page tables on flush somehow. Is the issue with invalidating root page
    tables when using IOMMU only relevant for the hostp2m, or is it also
    relevant for the altp2m views?
---
 xen/arch/arm/mmu/p2m.c | 16 +++++++++++++---
 1 file changed, 13 insertions(+), 3 deletions(-)

diff --git a/xen/arch/arm/mmu/p2m.c b/xen/arch/arm/mmu/p2m.c
index 1d598c66450b..51753bb2c34d 100644
--- a/xen/arch/arm/mmu/p2m.c
+++ b/xen/arch/arm/mmu/p2m.c
@@ -1271,17 +1271,20 @@ void p2m_clear_root_pages(struct p2m_domain *p2m)
  * p2m_invalid_root() should not be called when the P2M is shared with
  * the IOMMU because it will cause IOMMU fault.
  */
-static void p2m_invalidate_root(struct p2m_domain *p2m)
+static void p2m_invalidate_root_locked(struct p2m_domain *p2m)
 {
     unsigned int i;
=20
     ASSERT(!iommu_use_hap_pt(p2m->domain));
=20
-    p2m_write_lock(p2m);
-
     for ( i =3D 0; i < P2M_ROOT_PAGES; i++ )
         p2m_invalidate_table(p2m, page_to_mfn(p2m->root + i));
+}
=20
+static void p2m_invalidate_root(struct p2m_domain *p2m)
+{
+    p2m_write_lock(p2m);
+    p2m_invalidate_root_locked(p2m);
     p2m_write_unlock(p2m);
 }
=20
@@ -1449,6 +1452,13 @@ int p2m_flush_table(struct p2m_domain *p2m)
     unsigned long count =3D 0;
     struct page_info *pg;
=20
+    /* TODO: How does IOMMU interact with altp2m? */
+    if ( !iommu_use_hap_pt(p2m->domain) )
+    {
+        p2m_invalidate_root_locked(p2m);
+        p2m_tlb_flush_sync(p2m);
+    }
+
     while ( (pg =3D page_list_remove_head(&p2m->pages)) )
     {
         p2m_free_page(p2m->domain, pg);
--=20
2.34.1



From xen-devel-bounces@lists.xenproject.org Mon Apr 20 20:25:41 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 20 Apr 2026 20:25:41 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1286506.1567675 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wEvBc-000690-HJ; Mon, 20 Apr 2026 20:25:40 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1286506.1567675; Mon, 20 Apr 2026 20:25: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 1wEvBZ-00060B-2i; Mon, 20 Apr 2026 20:25:37 +0000
Received: by outflank-mailman (input) for mailman id 1286506;
 Mon, 20 Apr 2026 19:55:03 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <Rose.Spangler@purelymail.com>) id 1wEuhz-0006TW-GR
 for xen-devel@lists.xenproject.org; Mon, 20 Apr 2026 19:55:03 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wEuhy-001DqV-S8
 for xen-devel@lists.xenproject.org; Mon, 20 Apr 2026 21:55:02 +0200
Received: from [10.42.69.10] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <Rose.Spangler@purelymail.com>)
 id 69e6844b-e002-0a2a0a5209dd-0a2a450aa842-44
 for <xen-devel@lists.xenproject.org>; Mon, 20 Apr 2026 21:55:02 +0200
Received: from [34.202.193.197] (helo=sendmail.purelymail.com)
 by tlsNG-4011c0.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.1)
 (envelope-from <Rose.Spangler@purelymail.com>)
 id 69e683a5-56b3-0a2a450a0019-22cac1c59618-3
 for <xen-devel@lists.xenproject.org>; Mon, 20 Apr 2026 21:51:02 +0200
Received: by smtp.purelymail.com (Purelymail SMTP) with ESMTPSA id -306608446; 
 (version=TLSv1.3 cipher=TLS_AES_256_GCM_SHA384);
 Mon, 20 Apr 2026 19:50: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=purelymail1 header.d=purelymail.com header.i="@purelymail.com" header.h="Feedback-ID:Received:From:To:Subject:Date"
DKIM-Signature: a=rsa-sha256; b=Lxhym/cOQ4qYy9GgreYlWhVreh6oiF53H10JumcP6H06uRDLwJLk0s0KpRoWZzOZPdbu8PQ7CxqFX4QZIRnnEjDpywuAMg9skBImiwABLsR+7E/dGlMayS/taxre2B9cuk35ujy4yQGDrQA5uNm7JAHTIc27AVOd1JMjTameBBl24iYZfrf4f0u8erjx5niUBScDxGd0Dp+923XIIPP6ogUenTrTJzT8pI8A8H8LE6gqyyAZXFav6mkhwKVN3UKvPXKY1PN3nA2Idj67nv7nqLlu0ZdH82vuz92hAwfdr72zYN2Wn6Y/23b1zFNcum5SIC/1ZPIx16OFtivSBPysAg==; s=purelymail1; d=purelymail.com; v=1; bh=wx+7amyQeojfvKKlVkM7oqIEEdzw0LZWV6YBeYQcTbg=; h=Feedback-ID:Received:From:To:Subject:Date;
Feedback-ID: 685805:22403:null:purelymail
X-Pm-Original-To: xen-devel@lists.xenproject.org
From: Rose.Spangler@purelymail.com
To: xen-devel@lists.xenproject.org
Cc: Sergej Proskurin <proskurin@sec.in.tum.de>,
	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>,
	Julien Grall <julien.grall@arm.com>
Subject: [RFC PATCH v6 19/43] arm/p2m: Change function prototype of p2m_alloc_table
Date: Mon, 20 Apr 2026 15:50:18 -0400
Message-Id: <20260420195042.207624-20-Rose.Spangler@purelymail.com>
X-Mailer: git-send-email 2.34.1
In-Reply-To: <20260420195042.207624-1-Rose.Spangler@purelymail.com>
References: <20260420195042.207624-1-Rose.Spangler@purelymail.com>
MIME-Version: 1.0
Content-Transfer-Encoding: quoted-printable
X-MIME-Autoconverted: from 8bit to quoted-printable by Purelymail
Content-Type: text/plain; charset=UTF-8
X-purgate-ID: tlsNG-4011c0/1776714662-8087E8B7-C9B41944/0/0
X-purgate-type: clean
X-purgate-size: 1608

From: Sergej Proskurin <proskurin@sec.in.tum.de>

The function "p2m_alloc_table" should be able to allocate 2nd stage
translation tables not only for the host's p2m but also for alternate
p2m's.

This commit is a refactor and contains no functional changes.

This is commit 8/12 of the altp2m_init/altp2m_teardown routines phase.

Signed-off-by: Sergej Proskurin <proskurin@sec.in.tum.de>
Acked-by: Julien Grall <julien.grall@arm.com>
---
v2: Removed altp2m table initialization from "p2m_table_init".

v3: Removed initialization of the field d->arch.altp2m_active in
    "p2m_table_init" to avoid altp2m initialization throughout different
    files.

    Merged the function "p2m_alloc_table" and "p2m_table_init".
---
 xen/arch/arm/mmu/p2m.c | 6 ++----
 1 file changed, 2 insertions(+), 4 deletions(-)

diff --git a/xen/arch/arm/mmu/p2m.c b/xen/arch/arm/mmu/p2m.c
index 51753bb2c34d..f546f63f2489 100644
--- a/xen/arch/arm/mmu/p2m.c
+++ b/xen/arch/arm/mmu/p2m.c
@@ -1426,10 +1426,8 @@ static struct page_info *p2m_allocate_root(void)
     return page;
 }
=20
-static int p2m_alloc_table(struct domain *d)
+static int p2m_alloc_table(struct p2m_domain *p2m)
 {
-    struct p2m_domain *p2m =3D p2m_get_hostp2m(d);
-
     p2m->root =3D p2m_allocate_root();
     if ( !p2m->root )
         return -ENOMEM;
@@ -1576,7 +1574,7 @@ static int p2m_initialise(struct domain *d, struct p2=
m_domain *p2m)
     if ( rc )
         return rc;
=20
-    rc =3D p2m_alloc_table(d);
+    rc =3D p2m_alloc_table(p2m);
     if ( rc )
         return rc;
=20
--=20
2.34.1



From xen-devel-bounces@lists.xenproject.org Mon Apr 20 20:25:44 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 20 Apr 2026 20:25:44 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1286507.1567683 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wEvBf-0006hp-Hr; Mon, 20 Apr 2026 20:25:43 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1286507.1567683; Mon, 20 Apr 2026 20:25: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 1wEvBd-0006Yt-1O; Mon, 20 Apr 2026 20:25:41 +0000
Received: by outflank-mailman (input) for mailman id 1286507;
 Mon, 20 Apr 2026 19:55:03 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <Rose.Spangler@purelymail.com>) id 1wEuhz-0006Tc-SM
 for xen-devel@lists.xenproject.org; Mon, 20 Apr 2026 19:55:03 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wEuhz-008XH6-9A
 for xen-devel@lists.xenproject.org; Mon, 20 Apr 2026 21:55:03 +0200
Received: from [10.42.69.5] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <Rose.Spangler@purelymail.com>)
 id 69e6843f-bab6-0a2a0a5309dd-0a2a4505bfc4-40
 for <xen-devel@lists.xenproject.org>; Mon, 20 Apr 2026 21:55:03 +0200
Received: from [34.202.193.197] (helo=sendmail.purelymail.com)
 by tlsNG-c201ff.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.1)
 (envelope-from <Rose.Spangler@purelymail.com>)
 id 69e683a5-aaa8-0a2a45050019-22cac1c5d9aa-3
 for <xen-devel@lists.xenproject.org>; Mon, 20 Apr 2026 21:51:02 +0200
Received: by smtp.purelymail.com (Purelymail SMTP) with ESMTPSA id -306608446; 
 (version=TLSv1.3 cipher=TLS_AES_256_GCM_SHA384);
 Mon, 20 Apr 2026 19:50:56 +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=purelymail1 header.d=purelymail.com header.i="@purelymail.com" header.h="Feedback-ID:Received:From:To:Subject:Date"
DKIM-Signature: a=rsa-sha256; b=KyDwv5OmmuLRC4ucXPhbnuUebxNOworiZxGrTOcDB/S/5+jSU3Rp2Xdd6LkMkjMjOO893MIVid+zQoa6y9sVfNfInJ2c/ETVwILYzoJEnK+mIVzoWTaQu5a9HBwNLjoJYrex+1u1WXH5Zt0r4Vslw1Q1z8aCV63rUPopyZ2HYzIJq9xcKNFfPTdAVAqgFYJxb/TeXix8zeqsW7VQkDRRrEmkMeFboDanjkijyZqz0Fn32sSrh2zY4O9G4jwTX/EFhXXVkOWKGT8OBd5ednQa2PbTbtZdCLvdlxdQN+Lisy7I70nZNa1KgTtQgpMOaoN3ykGfP5gA33hvL5m6JN8dxA==; s=purelymail1; d=purelymail.com; v=1; bh=rEbX4y8NSItxI+ya2K695AgqL2qzX4yowYtNn0i53K0=; h=Feedback-ID:Received:From:To:Subject:Date;
Feedback-ID: 685805:22403:null:purelymail
X-Pm-Original-To: xen-devel@lists.xenproject.org
From: Rose.Spangler@purelymail.com
To: xen-devel@lists.xenproject.org
Cc: Sergej Proskurin <proskurin@sec.in.tum.de>,
	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: [RFC PATCH v6 20/43] arm/p2m: Rename parameter in p2m_alloc_vmid
Date: Mon, 20 Apr 2026 15:50:19 -0400
Message-Id: <20260420195042.207624-21-Rose.Spangler@purelymail.com>
X-Mailer: git-send-email 2.34.1
In-Reply-To: <20260420195042.207624-1-Rose.Spangler@purelymail.com>
References: <20260420195042.207624-1-Rose.Spangler@purelymail.com>
MIME-Version: 1.0
Content-Transfer-Encoding: quoted-printable
X-MIME-Autoconverted: from 8bit to quoted-printable by Purelymail
Content-Type: text/plain; charset=UTF-8
X-purgate-ID: tlsNG-c201ff/1776714662-2A56B443-0C4D73E0/0/0
X-purgate-type: clean
X-purgate-size: 1390

From: Sergej Proskurin <proskurin@sec.in.tum.de>

This commit does not change or introduce any additional functionality
but rather is a part of the following commit that alters the
functionality of the function "p2m_alloc_vmid".

This is commit 9/12 of the altp2m_init/altp2m_teardown routines phase.

Signed-off-by: Sergej Proskurin <proskurin@sec.in.tum.de>
---
 xen/arch/arm/p2m.c | 12 ++++++------
 1 file changed, 6 insertions(+), 6 deletions(-)

diff --git a/xen/arch/arm/p2m.c b/xen/arch/arm/p2m.c
index fb03978a19af..2c43b6033360 100644
--- a/xen/arch/arm/p2m.c
+++ b/xen/arch/arm/p2m.c
@@ -286,24 +286,24 @@ int p2m_alloc_vmid(struct domain *d)
 {
     struct p2m_domain *p2m =3D p2m_get_hostp2m(d);
=20
-    int rc, nr;
+    int rc, vmid;
=20
     spin_lock(&vmid_alloc_lock);
=20
-    nr =3D find_first_zero_bit(vmid_mask, MAX_VMID);
+    vmid =3D find_first_zero_bit(vmid_mask, MAX_VMID);
=20
-    ASSERT(nr !=3D INVALID_VMID);
+    ASSERT(vmid !=3D INVALID_VMID);
=20
-    if ( nr =3D=3D MAX_VMID )
+    if ( vmid =3D=3D MAX_VMID )
     {
         rc =3D -EBUSY;
         printk(XENLOG_ERR "p2m.c: dom%d: VMID pool exhausted\n", d->domain=
_id);
         goto out;
     }
=20
-    set_bit(nr, vmid_mask);
+    set_bit(vmid, vmid_mask);
=20
-    p2m->vmid =3D nr;
+    p2m->vmid =3D vmid;
=20
     rc =3D 0;
=20
--=20
2.34.1



From xen-devel-bounces@lists.xenproject.org Mon Apr 20 20:25:46 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 20 Apr 2026 20:25:46 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1286508.1567688 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wEvBh-0007DF-7B; Mon, 20 Apr 2026 20:25:45 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1286508.1567688; Mon, 20 Apr 2026 20:25: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 1wEvBf-0006y2-40; Mon, 20 Apr 2026 20:25:43 +0000
Received: by outflank-mailman (input) for mailman id 1286508;
 Mon, 20 Apr 2026 19:55:04 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <Rose.Spangler@purelymail.com>) id 1wEui0-0006Ti-LD
 for xen-devel@lists.xenproject.org; Mon, 20 Apr 2026 19:55:04 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wEui0-00C0mN-1r
 for xen-devel@lists.xenproject.org; Mon, 20 Apr 2026 21:55:04 +0200
Received: from [10.42.69.1] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <Rose.Spangler@purelymail.com>)
 id 69e68466-5cb7-0a2a0a5109dd-0a2a4501c7ca-34
 for <xen-devel@lists.xenproject.org>; Mon, 20 Apr 2026 21:55:04 +0200
Received: from [34.202.193.197] (helo=sendmail.purelymail.com)
 by tlsNG-d62444.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.1)
 (envelope-from <Rose.Spangler@purelymail.com>)
 id 69e683a6-c1f2-0a2a45010019-22cac1c5e34a-3
 for <xen-devel@lists.xenproject.org>; Mon, 20 Apr 2026 21:51:03 +0200
Received: by smtp.purelymail.com (Purelymail SMTP) with ESMTPSA id -306608446; 
 (version=TLSv1.3 cipher=TLS_AES_256_GCM_SHA384);
 Mon, 20 Apr 2026 19:50:56 +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=purelymail1 header.d=purelymail.com header.i="@purelymail.com" header.h="Feedback-ID:Received:From:To:Subject:Date"
DKIM-Signature: a=rsa-sha256; b=ka8fHWy78Y8Am3DZ+DOWFlUlI8NsfFGLMVGXLLSLHp2kp/XVRQX7fNlA+vH3ochrPLpSUxQZQMkngqzd2KIegerlEJVr1lhhPC2zCn61k32n5TlmqEJ19sEnjfbfaiSmJ7DXGwgBY5IDthd7HS/LJH/NV1/IwUDH0HDAv4cllxy/i3NXNq+6Xir2EXYAjjjNrKB1XR6lQ6ErVqgNbugrOrKfBaRXinGyJocEuMzu0mzsqZ2wkyDcH2K62tG41gscBoD5MEGOfIQCj7mRcX5BXWNvtkVkYW5vcx1ENTKBBnD0rKxNJfVOMPBtg1lFw20RfjrMDOMAUVWO5OmqLtabUw==; s=purelymail1; d=purelymail.com; v=1; bh=jide0Bu43AqjkQJCMlxee9HKevJGR4BOO3MM8yiGrIs=; h=Feedback-ID:Received:From:To:Subject:Date;
Feedback-ID: 685805:22403:null:purelymail
X-Pm-Original-To: xen-devel@lists.xenproject.org
From: Rose.Spangler@purelymail.com
To: xen-devel@lists.xenproject.org
Cc: Sergej Proskurin <proskurin@sec.in.tum.de>,
	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: [RFC PATCH v6 21/43] arm/p2m: Change func prototype and impl of p2m_{alloc,free}_vmid
Date: Mon, 20 Apr 2026 15:50:20 -0400
Message-Id: <20260420195042.207624-22-Rose.Spangler@purelymail.com>
X-Mailer: git-send-email 2.34.1
In-Reply-To: <20260420195042.207624-1-Rose.Spangler@purelymail.com>
References: <20260420195042.207624-1-Rose.Spangler@purelymail.com>
MIME-Version: 1.0
Content-Transfer-Encoding: quoted-printable
X-MIME-Autoconverted: from 8bit to quoted-printable by Purelymail
Content-Type: text/plain; charset=UTF-8
X-purgate-ID: tlsNG-d62444/1776714663-B6460FF4-34C17615/0/0
X-purgate-type: clean
X-purgate-size: 4021

From: Sergej Proskurin <proskurin@sec.in.tum.de>

This commit changes the prototype and implementation of the functions
"p2m_alloc_vmid" and "p2m_free_vmid". The function "p2m_alloc_vmid" does
not expect the struct domain as argument anymore and returns an
allocated vmid. The function "p2m_free_vmid" takes only the vmid that is
to be freed as argument.

This is commit 10/12 of the altp2m_init/altp2m_teardown routines phase.

Signed-off-by: Sergej Proskurin <proskurin@sec.in.tum.de>
---
v3: Changed function prototypes and implementation of the functions
    "p2m_alloc_vmid" and "p2m_free_vmid".

    Changes in "p2m_alloc_vmid":
    This function does not expect any arguments. Also, in this commit,
    the function "p2m_alloc_vmid" returns either the successfully
    allocated vmid or the value INVALID_VMID. Thus, it is now the
    responsibility of the caller to set the returned vmid in the
    associated fields.

    Changes in "p2m_free_vmid":
    This function expects now only the vmid of type uint8_t.
---
 xen/arch/arm/include/asm/p2m.h |  4 ++--
 xen/arch/arm/mmu/p2m.c         |  8 ++++----
 xen/arch/arm/p2m.c             | 23 ++++++++---------------
 3 files changed, 14 insertions(+), 21 deletions(-)

diff --git a/xen/arch/arm/include/asm/p2m.h b/xen/arch/arm/include/asm/p2m.=
h
index 5c6dfe4a9789..62261d41e780 100644
--- a/xen/arch/arm/include/asm/p2m.h
+++ b/xen/arch/arm/include/asm/p2m.h
@@ -195,8 +195,8 @@ static inline bool arch_acquire_resource_check(struct d=
omain *d)
 void p2m_restrict_ipa_bits(unsigned int ipa_bits);
=20
 void p2m_vmid_allocator_init(void);
-int p2m_alloc_vmid(struct domain *d);
-void p2m_free_vmid(struct domain *d);
+uint8_t p2m_alloc_vmid(void);
+void p2m_free_vmid(uint8_t vmid);
=20
 /* Second stage paging setup, to be called on all CPUs */
 void setup_virt_paging(void);
diff --git a/xen/arch/arm/mmu/p2m.c b/xen/arch/arm/mmu/p2m.c
index f546f63f2489..0d37760ef5d5 100644
--- a/xen/arch/arm/mmu/p2m.c
+++ b/xen/arch/arm/mmu/p2m.c
@@ -1519,7 +1519,7 @@ void p2m_free_one(struct p2m_domain *p2m)
=20
     p2m->root =3D NULL;
=20
-    p2m_free_vmid(p2m->domain);
+    p2m_free_vmid(p2m->vmid);
=20
     radix_tree_destroy(&p2m->mem_access_settings, NULL);
=20
@@ -1570,9 +1570,9 @@ static int p2m_initialise(struct domain *d, struct p2=
m_domain *p2m)
      */
     p2m->domain =3D d;
=20
-    rc =3D p2m_alloc_vmid(d);
-    if ( rc )
-        return rc;
+    p2m->vmid =3D p2m_alloc_vmid();
+    if ( p2m->vmid =3D=3D INVALID_VMID )
+        return -EBUSY;
=20
     rc =3D p2m_alloc_table(p2m);
     if ( rc )
diff --git a/xen/arch/arm/p2m.c b/xen/arch/arm/p2m.c
index 2c43b6033360..3342fafcc8a7 100644
--- a/xen/arch/arm/p2m.c
+++ b/xen/arch/arm/p2m.c
@@ -282,11 +282,9 @@ void p2m_vmid_allocator_init(void)
     set_bit(INVALID_VMID, vmid_mask);
 }
=20
-int p2m_alloc_vmid(struct domain *d)
+uint8_t p2m_alloc_vmid(void)
 {
-    struct p2m_domain *p2m =3D p2m_get_hostp2m(d);
-
-    int rc, vmid;
+    uint8_t vmid;
=20
     spin_lock(&vmid_alloc_lock);
=20
@@ -296,28 +294,23 @@ int p2m_alloc_vmid(struct domain *d)
=20
     if ( vmid =3D=3D MAX_VMID )
     {
-        rc =3D -EBUSY;
-        printk(XENLOG_ERR "p2m.c: dom%d: VMID pool exhausted\n", d->domain=
_id);
+        vmid =3D INVALID_VMID;
+        printk(XENLOG_ERR "p2m.c: VMID pool exhausted\n");
         goto out;
     }
=20
     set_bit(vmid, vmid_mask);
=20
-    p2m->vmid =3D vmid;
-
-    rc =3D 0;
-
 out:
     spin_unlock(&vmid_alloc_lock);
-    return rc;
+    return vmid;
 }
=20
-void p2m_free_vmid(struct domain *d)
+void p2m_free_vmid(uint8_t vmid)
 {
-    struct p2m_domain *p2m =3D p2m_get_hostp2m(d);
     spin_lock(&vmid_alloc_lock);
-    if ( p2m->vmid !=3D INVALID_VMID )
-        clear_bit(p2m->vmid, vmid_mask);
+    if ( vmid !=3D INVALID_VMID )
+        clear_bit(vmid, vmid_mask);
=20
     spin_unlock(&vmid_alloc_lock);
 }
--=20
2.34.1



From xen-devel-bounces@lists.xenproject.org Mon Apr 20 20:25:49 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 20 Apr 2026 20:25:49 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1286512.1567697 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wEvBj-0007lN-Hr; Mon, 20 Apr 2026 20:25:47 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1286512.1567697; Mon, 20 Apr 2026 20:25: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 1wEvBh-0007cK-Al; Mon, 20 Apr 2026 20:25:45 +0000
Received: by outflank-mailman (input) for mailman id 1286512;
 Mon, 20 Apr 2026 19:55:08 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <Rose.Spangler@purelymail.com>) id 1wEui4-0006Ux-SH
 for xen-devel@lists.xenproject.org; Mon, 20 Apr 2026 19:55:08 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wEui2-009FYh-NH
 for xen-devel@lists.xenproject.org; Mon, 20 Apr 2026 21:55:08 +0200
Received: from [10.42.69.3] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <Rose.Spangler@purelymail.com>)
 id 69e68476-2eae-0a2a0a5409dd-0a2a4503a5da-36
 for <xen-devel@lists.xenproject.org>; Mon, 20 Apr 2026 21:55:08 +0200
Received: from [34.202.193.197] (helo=sendmail.purelymail.com)
 by tlsNG-33051d.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.1)
 (envelope-from <Rose.Spangler@purelymail.com>)
 id 69e683aa-672d-0a2a45030019-22cac1c5d9d8-3
 for <xen-devel@lists.xenproject.org>; Mon, 20 Apr 2026 21:51:07 +0200
Received: by smtp.purelymail.com (Purelymail SMTP) with ESMTPSA id -306608446; 
 (version=TLSv1.3 cipher=TLS_AES_256_GCM_SHA384);
 Mon, 20 Apr 2026 19:50:56 +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=purelymail1 header.d=purelymail.com header.i="@purelymail.com" header.h="Feedback-ID:Received:From:To:Subject:Date"
DKIM-Signature: a=rsa-sha256; b=JWYWRquuSTuhciHLqgYeswBxBv5VcCkgO9tLKcp9bU685iDQuLM/Vwga9hxf0HtCz1rnGyPnhqI2ROb2eGvcedsGtHDyiOcoqU5Yh/ueglfvyLjOG8n6WydAhTsfcrJloa5EWmFwwCKztE28l7gLqAyVn/baLQY3GzTiqqoUPR5JApcTV7kRZxz44xltCmE/ohAVlrCFdWo3aEh6QBEvw1ZMp25JFSS40fBahPK7+R7DYy9qs4Zb6yoYfHbrnvAmjDakXOPGBUv75Hxhbm7TZW1SAzRrxemzqUnpyih6f/YFfNi6ckXP16Ql5aeomQcBnEeVdpxcKWW+leamLbowtA==; s=purelymail1; d=purelymail.com; v=1; bh=cqbeVhxhas1SelZKmRR5Y1Q1CkbmNFmzg1IsVkQqEdU=; h=Feedback-ID:Received:From:To:Subject:Date;
Feedback-ID: 685805:22403:null:purelymail
X-Pm-Original-To: xen-devel@lists.xenproject.org
From: Rose.Spangler@purelymail.com
To: xen-devel@lists.xenproject.org
Cc: Sergej Proskurin <proskurin@sec.in.tum.de>,
	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: [RFC PATCH v6 22/43] arm/p2m: Introduce p2m_is_{hostp2m,altp2m}
Date: Mon, 20 Apr 2026 15:50:21 -0400
Message-Id: <20260420195042.207624-23-Rose.Spangler@purelymail.com>
X-Mailer: git-send-email 2.34.1
In-Reply-To: <20260420195042.207624-1-Rose.Spangler@purelymail.com>
References: <20260420195042.207624-1-Rose.Spangler@purelymail.com>
MIME-Version: 1.0
Content-Transfer-Encoding: quoted-printable
X-MIME-Autoconverted: from 8bit to quoted-printable by Purelymail
Content-Type: text/plain; charset=UTF-8
X-purgate-ID: tlsNG-33051d/1776714667-2A567938-7BB031FC/13/0
X-purgate-type: clean
X-purgate-size: 1756

From: Sergej Proskurin <proskurin@sec.in.tum.de>

This commit adds a p2m class to the struct p2m_domain to distinguish
between the host's original p2m and alternate p2m's. The need for this
functionality will be shown in the following commits.

This is commit 11/12 of the altp2m_init/altp2m_teardown routines phase.

Signed-off-by: Sergej Proskurin <proskurin@sec.in.tum.de>
---
v4: Change return type of p2m_is_(hostp2m|altp2m) from bool_t to bool.
---
 xen/arch/arm/include/asm/p2m.h | 18 ++++++++++++++++++
 1 file changed, 18 insertions(+)

diff --git a/xen/arch/arm/include/asm/p2m.h b/xen/arch/arm/include/asm/p2m.=
h
index 62261d41e780..8ae0cd7ff589 100644
--- a/xen/arch/arm/include/asm/p2m.h
+++ b/xen/arch/arm/include/asm/p2m.h
@@ -32,6 +32,11 @@ struct domain;
=20
 extern void memory_type_changed(struct domain *d);
=20
+typedef enum {
+    p2m_host,
+    p2m_alternate,
+} p2m_class_t;
+
 /* Per-p2m-table state */
 struct p2m_domain {
     /*
@@ -111,6 +116,9 @@ struct p2m_domain {
=20
     /* Keeping track on which CPU this p2m was used and for which vCPU */
     uint8_t last_vcpu_ran[NR_CPUS];
+
+    /* Choose between: host/alternate. */
+    p2m_class_t p2m_class;
 };
=20
 /*
@@ -424,6 +432,16 @@ static inline int get_page_and_type(struct page_info *=
page,
 /* get host p2m table */
 #define p2m_get_hostp2m(d) ((d)->arch.p2m)
=20
+static inline bool p2m_is_hostp2m(const struct p2m_domain *p2m)
+{
+    return p2m->p2m_class =3D=3D p2m_host;
+}
+
+static inline bool p2m_is_altp2m(const struct p2m_domain *p2m)
+{
+    return p2m->p2m_class =3D=3D p2m_alternate;
+}
+
 static inline bool p2m_vm_event_sanity_check(struct domain *d)
 {
     return true;
--=20
2.34.1



From xen-devel-bounces@lists.xenproject.org Mon Apr 20 20:25:51 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 20 Apr 2026 20:25:51 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1286513.1567703 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wEvBl-0008Gl-OM; Mon, 20 Apr 2026 20:25:49 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1286513.1567703; Mon, 20 Apr 2026 20:25: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 1wEvBj-00088v-E1; Mon, 20 Apr 2026 20:25:47 +0000
Received: by outflank-mailman (input) for mailman id 1286513;
 Mon, 20 Apr 2026 19:55:09 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <Rose.Spangler@purelymail.com>) id 1wEui5-0006VB-U5
 for xen-devel@lists.xenproject.org; Mon, 20 Apr 2026 19:55:09 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wEui5-00C0mN-B4
 for xen-devel@lists.xenproject.org; Mon, 20 Apr 2026 21:55:09 +0200
Received: from [10.42.69.11] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <Rose.Spangler@purelymail.com>)
 id 69e6849d-5cb7-0a2a0a5109dd-0a2a450bd69e-2
 for <xen-devel@lists.xenproject.org>; Mon, 20 Apr 2026 21:55:09 +0200
Received: from [34.202.193.197] (helo=sendmail.purelymail.com)
 by tlsNG-42698a.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.1)
 (envelope-from <Rose.Spangler@purelymail.com>)
 id 69e683ab-212f-0a2a450b0019-22cac1c5c2e8-3
 for <xen-devel@lists.xenproject.org>; Mon, 20 Apr 2026 21:51:08 +0200
Received: by smtp.purelymail.com (Purelymail SMTP) with ESMTPSA id -306608446; 
 (version=TLSv1.3 cipher=TLS_AES_256_GCM_SHA384);
 Mon, 20 Apr 2026 19:50:58 +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=purelymail1 header.d=purelymail.com header.i="@purelymail.com" header.h="Feedback-ID:Received:From:To:Subject:Date"
DKIM-Signature: a=rsa-sha256; b=G8Au/F7w0kr3yWBN493bKoUzi1aJp5ehASYi4BlnUh6gTILN9XNytRgGapOi7MBFApd8IY5pvk4fGWY7FmNiOdKTP3NFVO+EVEVwOKjasT+Pi5mMEkubMSLcxQJj/QtiILUpuLEtAiQK/+wab7YXBiO7jPtJfWQ95xa5JzwwrkiIhxOjhmFPSFMgRE5R3R+TbmS35xpSYX5JTAXMoQSIO2ZL3QsYCw/RVEoau4CHHuV8Ely0Q1pwwo36pTfdPYZWCJUy/yxpWYpfiqoaP0bIhU6HY6WbbejJpCdA5neGJGo2D2WCi3SRI51XOBnov+kYae9EDSlUHk+A0KRdFT597A==; s=purelymail1; d=purelymail.com; v=1; bh=3WaQvrna8zsFCyA45arxMyrce2HZKSIAvzQk5fZ8kuY=; h=Feedback-ID:Received:From:To:Subject:Date;
Feedback-ID: 685805:22403:null:purelymail
X-Pm-Original-To: xen-devel@lists.xenproject.org
From: Rose.Spangler@purelymail.com
To: xen-devel@lists.xenproject.org
Cc: Rose Spangler <Rose.Spangler@elektrobit.com>,
	Jan Beulich <jbeulich@suse.com>,
	Andrew Cooper <andrew.cooper3@citrix.com>,
	=?UTF-8?q?Roger=20Pau=20Monn=C3=A9?= <roger.pau@citrix.com>,
	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: [RFC PATCH v6 24/43] altp2m: Move altp2m_{get,set}_altp2m to common code
Date: Mon, 20 Apr 2026 15:50:23 -0400
Message-Id: <20260420195042.207624-25-Rose.Spangler@purelymail.com>
X-Mailer: git-send-email 2.34.1
In-Reply-To: <20260420195042.207624-1-Rose.Spangler@purelymail.com>
References: <20260420195042.207624-1-Rose.Spangler@purelymail.com>
MIME-Version: 1.0
Content-Transfer-Encoding: quoted-printable
X-MIME-Autoconverted: from 8bit to quoted-printable by Purelymail
Content-Type: text/plain; charset=UTF-8
X-purgate-ID: tlsNG-42698a/1776714668-246B7F3B-BCC1441B/13/0
X-purgate-type: clean
X-purgate-size: 5177

From: Rose Spangler <Rose.Spangler@elektrobit.com>

This commit moves the altp2m_get_altp2m and altp2m_set_altp2m functions to
the common code. This make sit possible to use them in other common
routines (namely, altp2m_vcpu_{initialise,destroy}).

This commit contains only code movement, and no change in functionality is
intended.

This is commit 1/4 of the altp2m_{get,set}_altp2m phase.

Signed-off-by: Rose Spangler <Rose.Spangler@elektrobit.com>
---
v6: Introduced this patch.
---
 xen/arch/x86/include/asm/altp2m.h | 35 -------------------------
 xen/arch/x86/include/asm/domain.h |  2 --
 xen/common/altp2m.c               |  1 -
 xen/include/xen/altp2m.h          | 43 +++++++++++++++++++++++++++++++
 4 files changed, 43 insertions(+), 38 deletions(-)

diff --git a/xen/arch/x86/include/asm/altp2m.h b/xen/arch/x86/include/asm/a=
ltp2m.h
index 13017525a62f..a1b078783b3e 100644
--- a/xen/arch/x86/include/asm/altp2m.h
+++ b/xen/arch/x86/include/asm/altp2m.h
@@ -64,39 +64,6 @@ static inline uint16_t altp2m_vcpu_idx(const struct vcpu=
 *v)
  * Alternate p2m: shadow p2m tables used for alternate memory views
  */
=20
-/* get current alternate p2m table */
-static inline struct p2m_domain *altp2m_get_altp2m(struct vcpu *v)
-{
-    unsigned int index =3D vcpu_altp2m(v).p2midx;
-
-    if ( index =3D=3D INVALID_ALTP2M )
-        return NULL;
-
-    BUG_ON(index >=3D v->domain->nr_altp2m);
-
-    return v->domain->altp2m_p2m[index];
-}
-
-/* set current alternate p2m table */
-static inline bool altp2m_set_altp2m(struct vcpu *v, unsigned int idx)
-{
-    struct p2m_domain *orig;
-
-    BUG_ON(idx >=3D v->domain->nr_altp2m);
-
-    if ( idx =3D=3D vcpu_altp2m(v).p2midx )
-        return false;
-
-    orig =3D altp2m_get_altp2m(v);
-    BUG_ON(!orig);
-    atomic_dec(&orig->active_vcpus);
-
-    vcpu_altp2m(v).p2midx =3D idx;
-    atomic_inc(&v->domain->altp2m_p2m[idx]->active_vcpus);
-
-    return true;
-}
-
 /* Switch alternate p2m for a single vcpu */
 bool altp2m_switch_vcpu_by_id(struct vcpu *v, unsigned int idx);
=20
@@ -178,8 +145,6 @@ static inline int _altp2m_get_effective_entry(struct p2=
m_domain *ap2m,
         _altp2m_get_effective_entry(ap2m, gfn, mfn, t, a)
=20
 /* Only declaration is needed. DCE will optimise it out when linking. */
-struct p2m_domain *altp2m_get_altp2m(struct vcpu *v);
-bool altp2m_set_altp2m(struct vcpu *v, unsigned int idx);
 uint16_t altp2m_vcpu_idx(const struct vcpu *v);
 void altp2m_vcpu_initialise(struct vcpu *v);
 void altp2m_vcpu_destroy(struct vcpu *v);
diff --git a/xen/arch/x86/include/asm/domain.h b/xen/arch/x86/include/asm/d=
omain.h
index f8038087e612..72460e38f581 100644
--- a/xen/arch/x86/include/asm/domain.h
+++ b/xen/arch/x86/include/asm/domain.h
@@ -277,8 +277,6 @@ struct paging_vcpu {
 #define MAX_NR_ALTP2M   MAX_EPTP
 #define MAX_NESTEDP2M   10
=20
-#define INVALID_ALTP2M  0xffff
-
 struct p2m_domain;
 struct time_scale {
     int shift;
diff --git a/xen/common/altp2m.c b/xen/common/altp2m.c
index 989d8bdcb923..a731ad7cdab8 100644
--- a/xen/common/altp2m.c
+++ b/xen/common/altp2m.c
@@ -5,7 +5,6 @@
 #include <xen/xvmalloc.h>
=20
 #include <asm/altp2m.h>
-#include <asm/p2m.h>
=20
 #include <public/hvm/params.h>
=20
diff --git a/xen/include/xen/altp2m.h b/xen/include/xen/altp2m.h
index 238c7a935586..58e74be6deb0 100644
--- a/xen/include/xen/altp2m.h
+++ b/xen/include/xen/altp2m.h
@@ -8,6 +8,10 @@
=20
 #include <public/hvm/hvm_op.h>
=20
+#include <asm/p2m.h>
+
+#define INVALID_ALTP2M  0xffff
+
 /*
  * Common alternate p2m declarations that need to be visible
  * regardless of CONFIG_ALTP2M
@@ -27,6 +31,41 @@ static inline bool altp2m_active(const struct domain *d)
     return d->altp2m_active;
 }
=20
+#ifdef CONFIG_X86
+/* get current alternate p2m table */
+static inline struct p2m_domain *altp2m_get_altp2m(struct vcpu *v)
+{
+    unsigned int index =3D vcpu_altp2m(v).p2midx;
+
+    if ( index =3D=3D INVALID_ALTP2M )
+        return NULL;
+
+    BUG_ON(index >=3D v->domain->nr_altp2m);
+
+    return v->domain->altp2m_p2m[index];
+}
+
+/* set current alternate p2m table */
+static inline bool altp2m_set_altp2m(struct vcpu *v, unsigned int idx)
+{
+    struct p2m_domain *orig;
+
+    BUG_ON(idx >=3D v->domain->nr_altp2m);
+
+    if ( idx =3D=3D vcpu_altp2m(v).p2midx )
+        return false;
+
+    orig =3D altp2m_get_altp2m(v);
+    BUG_ON(!orig);
+    atomic_dec(&orig->active_vcpus);
+
+    vcpu_altp2m(v).p2midx =3D idx;
+    atomic_inc(&v->domain->altp2m_p2m[idx]->active_vcpus);
+
+    return true;
+}
+#endif
+
 int do_altp2m_op(XEN_GUEST_HANDLE_PARAM(void) arg);
=20
 #else /* CONFIG_ALTP2M */
@@ -41,6 +80,10 @@ static inline int do_altp2m_op(XEN_GUEST_HANDLE_PARAM(vo=
id) arg)
     return -EOPNOTSUPP;
 }
=20
+/* Only declaration is needed. DCE will optimise it out when linking. */
+struct p2m_domain *altp2m_get_altp2m(struct vcpu *v);
+bool altp2m_set_altp2m(struct vcpu *v, unsigned int idx);
+
 #endif /* CONFIG_ALTP2M */
=20
 #endif /* __XEN_ALTP2M_H__ */
--=20
2.34.1



From xen-devel-bounces@lists.xenproject.org Mon Apr 20 20:25:52 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 20 Apr 2026 20:25:52 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1286514.1567712 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wEvBn-0000IT-5p; Mon, 20 Apr 2026 20:25:51 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1286514.1567712; Mon, 20 Apr 2026 20:25: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 1wEvBl-00009I-6R; Mon, 20 Apr 2026 20:25:49 +0000
Received: by outflank-mailman (input) for mailman id 1286514;
 Mon, 20 Apr 2026 19:55:10 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <Rose.Spangler@purelymail.com>) id 1wEui5-0006VA-Sw
 for xen-devel@lists.xenproject.org; Mon, 20 Apr 2026 19:55:10 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wEui5-00C0mN-9p
 for xen-devel@lists.xenproject.org; Mon, 20 Apr 2026 21:55:09 +0200
Received: from [10.42.69.11] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <Rose.Spangler@purelymail.com>)
 id 69e6849d-5cb7-0a2a0a5109dd-0a2a450bd69e-0
 for <xen-devel@lists.xenproject.org>; Mon, 20 Apr 2026 21:55:09 +0200
Received: from [34.202.193.197] (helo=sendmail.purelymail.com)
 by tlsNG-42698a.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.1)
 (envelope-from <Rose.Spangler@purelymail.com>)
 id 69e683ab-212f-0a2a450b0019-22cac1c5c2e6-3
 for <xen-devel@lists.xenproject.org>; Mon, 20 Apr 2026 21:51:08 +0200
Received: by smtp.purelymail.com (Purelymail SMTP) with ESMTPSA id -306608446; 
 (version=TLSv1.3 cipher=TLS_AES_256_GCM_SHA384);
 Mon, 20 Apr 2026 19:50: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=purelymail1 header.d=purelymail.com header.i="@purelymail.com" header.h="Feedback-ID:Received:From:To:Subject:Date"
DKIM-Signature: a=rsa-sha256; b=YcLB+fWp94ky5pCPnNruujNicg8BuQxICWMz3/BkwTq5ox4j84lmQRhd/i/oJFV+bGrH/feNXuOJKUqWO7iRTJSJvCkQoO7DEhapiVl2SYkjE+kdkZt7F8FqHaXpUrr5ic/CYEiirwTnijxiNkgQnSXBk+OlXjsWW4IJa50rBGNCoT8Fikyua5CIFly1yk1FBT3iKWowcukxfNakHan6jqBuc9ejBefxwfCvbpzCIEpEP9zVwzXBpQpDnX97oU4sMWOSUdFnEH4mPqrqN+CNo/4ZTlCmktbbO8OWwxujmWCkzu+iHTOu3x2F3Xhz1iEeMCu4fPp/+sbYhQH2pNFYAQ==; s=purelymail1; d=purelymail.com; v=1; bh=pik6B7HNWf3xgS0SgW/KnVIMif31sL93P+diA7yc3/I=; h=Feedback-ID:Received:From:To:Subject:Date;
Feedback-ID: 685805:22403:null:purelymail
X-Pm-Original-To: xen-devel@lists.xenproject.org
From: Rose.Spangler@purelymail.com
To: xen-devel@lists.xenproject.org
Cc: Rose Spangler <Rose.Spangler@elektrobit.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?q?Roger=20Pau=20Monn=C3=A9?= <roger.pau@citrix.com>,
	Sergej Proskurin <proskurin@sec.in.tum.de>,
	Aqib Javaid <Aqib.Javaid@elektrobit.com>
Subject: [RFC PATCH v6 23/43] arm/altp2m: Add support for altp2m init/teardown routines
Date: Mon, 20 Apr 2026 15:50:22 -0400
Message-Id: <20260420195042.207624-24-Rose.Spangler@purelymail.com>
X-Mailer: git-send-email 2.34.1
In-Reply-To: <20260420195042.207624-1-Rose.Spangler@purelymail.com>
References: <20260420195042.207624-1-Rose.Spangler@purelymail.com>
MIME-Version: 1.0
Content-Transfer-Encoding: quoted-printable
X-MIME-Autoconverted: from 8bit to quoted-printable by Purelymail
Content-Type: text/plain; charset=UTF-8
X-purgate-ID: tlsNG-42698a/1776714668-0636CF3B-EAFEFEF9/13/0
X-purgate-type: clean
X-purgate-size: 7918

From: Rose Spangler <Rose.Spangler@elektrobit.com>

The p2m initialization now invokes initialization routines responsible for
the allocation and initialization of altp2m structures. The same applies to
teardown routines.

This commit adds the prerequisites for the common altp2m_init and
altp2m_teardown functions to work on ARM; No further changes were necessary
other than removing the CONFIG_X86 gating.

This is commit 12/12 of the altp2m_init/altp2m_teardown routines phase.

Signed-off-by: Rose Spangler <Rose.Spangler@elektrobit.com>
Signed-off-by: Sergej Proskurin <proskurin@sec.in.tum.de>
Signed-off-by: Aqib Javaid <Aqib.Javaid@elektrobit.com>
---
v2: Shared code between host/altp2m init/teardown functions.
    Added conditional init/teardown of altp2m.
    Altp2m related functions are moved to altp2m.c

v3: Removed locking the altp2m_lock in altp2m_teardown. Locking this
    lock at this point is unnecessary.

    Removed re-setting altp2m_vttbr, altp2m_p2m, and altp2m_active
    values in the function "altp2m_teardown". Re-setting these values is
    unnecessary as the entire domain will be destroyed right afterwards.

    Removed check for "altp2m_enabled" in "p2m_init" as altp2m has not yet
    been enabled by libxl at this point.

    Removed check for "altp2m_enabled" before tearing down altp2m within
    the function "p2m_teardown" so that altp2m gets destroyed even if
    the HVM_PARAM_ALTP2M gets reset before "p2m_teardown" is called.

    Added initialization of the field d->arch.altp2m_active in
    "altp2m_init".

    Removed check for already initialized vmid's in "altp2m_init_one",
    as "altp2m_init_one" is now called always with an uninitialized p2m.

    Removed the array altp2m_vttbr[] in struct arch_domain.

v4: Removed initialization of altp2m_p2m[] to NULL in altp2m_init, as
    the "struct arch_domain" is already initialized to zero.

    We moved the definition of the macro MAX_ALTP2M to a common place in
    a separate commit.

v6: Reworked to use common altp2m init and teardown routines.

    Added altp2m_lock_init macro for use in altp2m_init.

    Split altp2m initialization in p2m_init into a separate function,
    p2m_init_altp2m, to more easily gate code behind CONFIG_ALTP2M.

    Pulled in addition of active_vcpus from a later patch in the patch
    series.

    Split teardown and free of altp2m views into p2m_teardown and
    p2m_teardown_final (part of altp2m_teardown), respectively.
---
 xen/arch/arm/include/asm/altp2m.h |  4 +++
 xen/arch/arm/include/asm/domain.h |  8 ++++++
 xen/arch/arm/include/asm/p2m.h    |  5 ++++
 xen/arch/arm/mmu/p2m.c            | 44 ++++++++++++++++++++++++++++++-
 xen/common/altp2m.c               |  2 --
 xen/include/xen/altp2m.h          |  2 --
 6 files changed, 60 insertions(+), 5 deletions(-)

diff --git a/xen/arch/arm/include/asm/altp2m.h b/xen/arch/arm/include/asm/a=
ltp2m.h
index 698c35427e75..5a217f48b103 100644
--- a/xen/arch/arm/include/asm/altp2m.h
+++ b/xen/arch/arm/include/asm/altp2m.h
@@ -19,6 +19,10 @@ static inline bool altp2m_supported(void)
     return true;
 }
=20
+#define altp2m_lock_init(d) spin_lock_init(&(d)->arch.altp2m_lock)
+#define altp2m_lock(d)      spin_lock(&(d)->arch.altp2m_lock)
+#define altp2m_unlock(d)    spin_unlock(&(d)->arch.altp2m_lock)
+
 /* Alternate p2m VCPU */
 static inline uint16_t altp2m_vcpu_idx(const struct vcpu *v)
 {
diff --git a/xen/arch/arm/include/asm/domain.h b/xen/arch/arm/include/asm/d=
omain.h
index 576dbdec20af..9e69d62086cd 100644
--- a/xen/arch/arm/include/asm/domain.h
+++ b/xen/arch/arm/include/asm/domain.h
@@ -128,6 +128,14 @@ struct arch_domain
 #endif
=20
     struct resume_info resume_ctx;
+
+#ifdef CONFIG_ALTP2M
+    /*
+     * Lock that protects critical altp2m operations that must not be perf=
ormed
+     * concurrently.
+     */
+    spinlock_t altp2m_lock;
+#endif
 }  __cacheline_aligned;
=20
 struct arch_vcpu
diff --git a/xen/arch/arm/include/asm/p2m.h b/xen/arch/arm/include/asm/p2m.=
h
index 8ae0cd7ff589..db715c4f8bfc 100644
--- a/xen/arch/arm/include/asm/p2m.h
+++ b/xen/arch/arm/include/asm/p2m.h
@@ -9,6 +9,8 @@
 #include <asm/current.h>
 #include <asm/hsr.h>
=20
+#include <asm/atomic.h>
+
 #define paddr_bits PADDR_BITS
=20
 /* Holds the bit size of IPAs in p2m tables.  */
@@ -117,6 +119,9 @@ struct p2m_domain {
     /* Keeping track on which CPU this p2m was used and for which vCPU */
     uint8_t last_vcpu_ran[NR_CPUS];
=20
+    /* Alternate p2m: count of vcpu's currently using this p2m. */
+    atomic_t active_vcpus;
+
     /* Choose between: host/alternate. */
     p2m_class_t p2m_class;
 };
diff --git a/xen/arch/arm/mmu/p2m.c b/xen/arch/arm/mmu/p2m.c
index 0d37760ef5d5..04d17e787259 100644
--- a/xen/arch/arm/mmu/p2m.c
+++ b/xen/arch/arm/mmu/p2m.c
@@ -1,4 +1,5 @@
 /* SPDX-License-Identifier: GPL-2.0-only */
+#include <xen/altp2m.h>
 #include <xen/cpu.h>
 #include <xen/domain_page.h>
 #include <xen/ioreq.h>
@@ -7,6 +8,7 @@
 #include <xen/softirq.h>
 #include <xen/xmalloc.h>
=20
+#include <asm/altp2m.h>
 #include <asm/alternative.h>
 #include <asm/event.h>
 #include <asm/flushtlb.h>
@@ -1486,6 +1488,20 @@ int p2m_teardown(struct domain *d)
 {
     struct p2m_domain *p2m =3D p2m_get_hostp2m(d);
=20
+#ifdef CONFIG_ALTP2M
+    unsigned int i;
+    int rc;
+
+    d->altp2m_active =3D false;
+
+    for ( i =3D 0; i < d->nr_altp2m; i++ )
+    {
+        rc =3D p2m_teardown_one(d->altp2m_p2m[i]);
+        if ( rc )
+            return rc;
+    }
+#endif
+
     return p2m_teardown_one(p2m);
 }
=20
@@ -1499,6 +1515,9 @@ void p2m_final_teardown(struct domain *d)
      * where relinquish_p2m_mapping() has been called.
      */
=20
+    if ( altp2m_supported() )
+        altp2m_teardown(d);
+
     while ( p2m_teardown_allocation(d) =3D=3D -ERESTART )
         continue; /* No preemption support here */
     ASSERT(page_list_empty(&d->arch.paging.p2m_freelist));
@@ -1595,6 +1614,24 @@ struct p2m_domain *p2m_init_one(struct domain *d)
     return NULL;
 }
=20
+static int p2m_init_altp2m(struct domain *d)
+{
+#ifdef CONFIG_ALTP2M
+    int rc;
+
+    rc =3D altp2m_init(d);
+    if ( rc )
+    {
+        p2m_free_one(p2m_get_hostp2m(d));
+        return rc;
+    }
+
+    d->altp2m_active =3D false;
+#endif
+
+    return 0;
+}
+
 static int p2m_init_hostp2m(struct domain *d)
 {
     struct p2m_domain *p2m =3D p2m_init_one(d);
@@ -1608,10 +1645,15 @@ static int p2m_init_hostp2m(struct domain *d)
=20
 int p2m_init(struct domain *d)
 {
+    int rc;
     spin_lock_init(&d->arch.paging.lock);
     INIT_PAGE_LIST_HEAD(&d->arch.paging.p2m_freelist);
=20
-    return p2m_init_hostp2m(d);
+    rc =3D p2m_init_hostp2m(d);
+    if ( rc )
+        return rc;
+
+    return p2m_init_altp2m(d);
 }
=20
 /*
diff --git a/xen/common/altp2m.c b/xen/common/altp2m.c
index cda653b713f0..989d8bdcb923 100644
--- a/xen/common/altp2m.c
+++ b/xen/common/altp2m.c
@@ -15,7 +15,6 @@
 #include <asm/hvm/nestedhvm.h>
 #endif
=20
-#if CONFIG_X86
 int altp2m_init(struct domain *d)
 {
     unsigned int i;
@@ -60,7 +59,6 @@ void altp2m_teardown(struct domain *d)
=20
     XVFREE(d->altp2m_p2m);
 }
-#endif /* CONFIG_X86 */
=20
 /*
  * altp2m operations are envisioned as being used in several different
diff --git a/xen/include/xen/altp2m.h b/xen/include/xen/altp2m.h
index 85ef22c2b29e..238c7a935586 100644
--- a/xen/include/xen/altp2m.h
+++ b/xen/include/xen/altp2m.h
@@ -13,13 +13,11 @@
  * regardless of CONFIG_ALTP2M
  */
=20
-#ifdef CONFIG_X86
 /* Initialize altp2m views */
 int altp2m_init(struct domain *d);
=20
 /* Free altp2m views */
 void altp2m_teardown(struct domain *d);
-#endif
=20
 #ifdef CONFIG_ALTP2M
=20
--=20
2.34.1



From xen-devel-bounces@lists.xenproject.org Mon Apr 20 20:25:54 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 20 Apr 2026 20:25:54 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1286518.1567720 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wEvBp-0000j7-Jk; Mon, 20 Apr 2026 20:25:53 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1286518.1567720; Mon, 20 Apr 2026 20:25: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 1wEvBn-0000cG-5y; Mon, 20 Apr 2026 20:25:51 +0000
Received: by outflank-mailman (input) for mailman id 1286518;
 Mon, 20 Apr 2026 19:57:32 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <Rose.Spangler@purelymail.com>) id 1wEukO-0006fo-UJ
 for xen-devel@lists.xenproject.org; Mon, 20 Apr 2026 19:57:32 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wEukO-009ZPW-7Y
 for xen-devel@lists.xenproject.org; Mon, 20 Apr 2026 21:57:32 +0200
Received: from [10.42.69.2] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <Rose.Spangler@purelymail.com>)
 id 69e68517-2eae-0a2a0a5409dd-0a2a4502a0c0-20
 for <xen-devel@lists.xenproject.org>; Mon, 20 Apr 2026 21:57:32 +0200
Received: from [34.202.193.197] (helo=sendmail.purelymail.com)
 by tlsNG-720697.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.1)
 (envelope-from <Rose.Spangler@purelymail.com>)
 id 69e6852b-af86-0a2a45020019-22cac1c5b4b8-3
 for <xen-devel@lists.xenproject.org>; Mon, 20 Apr 2026 21:57:32 +0200
Received: by smtp.purelymail.com (Purelymail SMTP) with ESMTPSA id -626512684; 
 (version=TLSv1.3 cipher=TLS_AES_256_GCM_SHA384);
 Mon, 20 Apr 2026 19:57: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=purelymail1 header.d=purelymail.com header.i="@purelymail.com" header.h="Feedback-ID:Received:From:To:Subject:Date"
DKIM-Signature: a=rsa-sha256; b=M9/4NdUWyqAtK8Fit69+Bnm9xMy1eY3nSbgT1azTD34Nz6w9xYF1aHLdFQfZ35Xu6weINH+m1la/vntFnvLJcfXocQNybKobxFyF6xus6MhPtDGS5KopeCrw6BcU0Vq105SxVwd36ICTf8PFVS+R5BzWLqaMYwW8D5BUzkLb9Ewq09RQTYHVP2LefJ5r3NsTj0mwShz4Qk+wUMpeC3VZ5e7OIQLM1LB0xkl+6BOHI1kY/CEMscuwPMwHQXcutRR70LTANhn3XfXywS1KaIbvm/BKzIcF71QosB1YS9TKHzQtkw8o10LLenTAzMM2+GzYV85orU4oRzxXiBGPuXgTnw==; s=purelymail1; d=purelymail.com; v=1; bh=Bo0/+fpXPbC761YoL2O6hN3iZ/zaUJH+bSYJFMyq0KU=; h=Feedback-ID:Received:From:To:Subject:Date;
Feedback-ID: 685805:22403:null:purelymail
X-Pm-Original-To: xen-devel@lists.xenproject.org
From: Rose.Spangler@purelymail.com
To: xen-devel@lists.xenproject.org
Cc: Rose Spangler <Rose.Spangler@elektrobit.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.pau@citrix.com>,
	Stefano Stabellini <sstabellini@kernel.org>
Subject: [RFC PATCH v6 27/43] arm/altp2m: Add support for altp2m_{get,set}_altp2m
Date: Mon, 20 Apr 2026 15:57:10 -0400
Message-Id: <20260420195726.207764-1-Rose.Spangler@purelymail.com>
X-Mailer: git-send-email 2.34.1
MIME-Version: 1.0
Content-Transfer-Encoding: quoted-printable
X-MIME-Autoconverted: from 8bit to quoted-printable by Purelymail
Content-Type: text/plain; charset=UTF-8
X-purgate-ID: tlsNG-720697/1776715052-88EC8161-383666E4/0/0
X-purgate-type: clean
X-purgate-size: 1886

From: Rose Spangler <Rose.Spangler@elektrobit.com>

This commit adds support for altp2m_get_altp2m and altp2m_set_altp2m on
ARM. The x86-specific VCPU accesses have been replaced with the
architecture independent functions altp2m_vcpu_idx and altp2m_set_vcpu_idx.

This is commit 4/4 of the altp2m_{get,set}_altp2m phase.

Signed-off-by: Rose Spangler <Rose.Spangler@elektrobit.com>
---
v6: Introduced this patch.
---
 xen/include/xen/altp2m.h | 9 ++++-----
 1 file changed, 4 insertions(+), 5 deletions(-)

diff --git a/xen/include/xen/altp2m.h b/xen/include/xen/altp2m.h
index 58e74be6deb0..f5a4d0e60562 100644
--- a/xen/include/xen/altp2m.h
+++ b/xen/include/xen/altp2m.h
@@ -8,6 +8,7 @@
=20
 #include <public/hvm/hvm_op.h>
=20
+#include <asm/altp2m.h>
 #include <asm/p2m.h>
=20
 #define INVALID_ALTP2M  0xffff
@@ -31,11 +32,10 @@ static inline bool altp2m_active(const struct domain *d=
)
     return d->altp2m_active;
 }
=20
-#ifdef CONFIG_X86
 /* get current alternate p2m table */
 static inline struct p2m_domain *altp2m_get_altp2m(struct vcpu *v)
 {
-    unsigned int index =3D vcpu_altp2m(v).p2midx;
+    unsigned int index =3D altp2m_vcpu_idx(v);
=20
     if ( index =3D=3D INVALID_ALTP2M )
         return NULL;
@@ -52,19 +52,18 @@ static inline bool altp2m_set_altp2m(struct vcpu *v, un=
signed int idx)
=20
     BUG_ON(idx >=3D v->domain->nr_altp2m);
=20
-    if ( idx =3D=3D vcpu_altp2m(v).p2midx )
+    if ( idx =3D=3D altp2m_vcpu_idx(v) )
         return false;
=20
     orig =3D altp2m_get_altp2m(v);
     BUG_ON(!orig);
     atomic_dec(&orig->active_vcpus);
=20
-    vcpu_altp2m(v).p2midx =3D idx;
+    altp2m_set_vcpu_idx(v, idx);
     atomic_inc(&v->domain->altp2m_p2m[idx]->active_vcpus);
=20
     return true;
 }
-#endif
=20
 int do_altp2m_op(XEN_GUEST_HANDLE_PARAM(void) arg);
=20
--=20
2.34.1



From xen-devel-bounces@lists.xenproject.org Mon Apr 20 20:25:56 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 20 Apr 2026 20:25:56 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1286520.1567726 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wEvBr-00015v-8d; Mon, 20 Apr 2026 20:25:55 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1286520.1567726; Mon, 20 Apr 2026 20:25: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 1wEvBp-0000y1-98; Mon, 20 Apr 2026 20:25:53 +0000
Received: by outflank-mailman (input) for mailman id 1286520;
 Mon, 20 Apr 2026 20:06:09 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <Rose.Spangler@purelymail.com>) id 1wEusj-0007oA-P2
 for xen-devel@lists.xenproject.org; Mon, 20 Apr 2026 20:06:09 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wEuse-009HKD-PE
 for xen-devel@lists.xenproject.org; Mon, 20 Apr 2026 22:06:06 +0200
Received: from [10.42.69.5] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <Rose.Spangler@purelymail.com>)
 id 69e686da-5cb7-0a2a0a5109dd-0a2a4505af3a-48
 for <xen-devel@lists.xenproject.org>; Mon, 20 Apr 2026 22:06:06 +0200
Received: from [34.202.193.197] (helo=sendmail.purelymail.com)
 by tlsNG-c201ff.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.1)
 (envelope-from <Rose.Spangler@purelymail.com>)
 id 69e6872d-aaa8-0a2a45050019-22cac1c5d822-3
 for <xen-devel@lists.xenproject.org>; Mon, 20 Apr 2026 22:06:06 +0200
Received: by smtp.purelymail.com (Purelymail SMTP) with ESMTPSA id 894788268; 
 (version=TLSv1.3 cipher=TLS_AES_256_GCM_SHA384);
 Mon, 20 Apr 2026 20:06: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=purelymail1 header.d=purelymail.com header.i="@purelymail.com" header.h="Feedback-ID:Received:From:To:Subject:Date"
DKIM-Signature: a=rsa-sha256; b=c6Uo50C3us1qXsCWidSWfDOGOxihcFAWL2GAjzQ3mgcmdXFMu/mRs8jfHz0jMmN5HAqUSz9USKAqpKqAVJeSz0YTClxj/Li28FsH3Cojha6EWVTuvRIFCm8WgIbjnsj1NsSmBKqUgPwHmq+ykNUHP9TIMq7tGc5n2eID7bpEiHWKBkQEoy7Mr2S5J5NFxouspxF++aMgCkgVDVgL2gnphoqd7y+ESKz7ew60In54QNupWFplE06re304wNpqkxYEhmBUeslwVxeWJ82NXoZ2XBO6j/DjMVgS7vlqwXbT1nuSaDj7sWK6PmDE9DwBmwhJC6vmz0oFm6S0BUZ+ld4rUA==; s=purelymail1; d=purelymail.com; v=1; bh=vaO/7eskJABAM8GcpLXrSRGVxvX12VbJzyiOSdPRPvg=; h=Feedback-ID:Received:From:To:Subject:Date;
Feedback-ID: 685805:22403:null:purelymail
X-Pm-Original-To: xen-devel@lists.xenproject.org
From: Rose.Spangler@purelymail.com
To: xen-devel@lists.xenproject.org
Cc: Rose Spangler <Rose.Spangler@elektrobit.com>,
	Jan Beulich <jbeulich@suse.com>,
	Andrew Cooper <andrew.cooper3@citrix.com>,
	=?UTF-8?q?Roger=20Pau=20Monn=C3=A9?= <roger.pau@citrix.com>,
	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: [RFC PATCH v6 28/43] altp2m: Move altp2m_vcpu_{initialise,destroy} to common code
Date: Mon, 20 Apr 2026 16:05:42 -0400
Message-Id: <20260420200557.207930-1-Rose.Spangler@purelymail.com>
X-Mailer: git-send-email 2.34.1
MIME-Version: 1.0
Content-Transfer-Encoding: quoted-printable
X-MIME-Autoconverted: from 8bit to quoted-printable by Purelymail
Content-Type: text/plain; charset=UTF-8
X-purgate-ID: tlsNG-c201ff/1776715566-E336C443-30DAC370/0/0
X-purgate-type: clean
X-purgate-size: 4770

From: Rose Spangler <Rose.Spangler@elektrobit.com>

This commit moves the altp2m_vcpu_initialise and altp2m_vcpu_destroy
functions to common code. This makes it possible to use them in the common
implementation of HVMOP_altp2m_set_domain_state.

This commit contains only code movement, and no change in functionality is
intended.

This is commit 1/2 of the altp2m_vcpu_{initialise,destroy} phase.

Signed-off-by: Rose Spangler <Rose.Spangler@elektrobit.com>
---
v6: Introduced this patch.
---
 xen/arch/x86/include/asm/altp2m.h |  6 -----
 xen/arch/x86/mm/altp2m.c          | 41 -------------------------------
 xen/common/altp2m.c               | 41 +++++++++++++++++++++++++++++++
 xen/include/xen/altp2m.h          |  6 +++++
 4 files changed, 47 insertions(+), 47 deletions(-)

diff --git a/xen/arch/x86/include/asm/altp2m.h b/xen/arch/x86/include/asm/a=
ltp2m.h
index b3d348386a00..43dd5d2acd9c 100644
--- a/xen/arch/x86/include/asm/altp2m.h
+++ b/xen/arch/x86/include/asm/altp2m.h
@@ -105,10 +105,6 @@ int altp2m_get_effective_entry(struct p2m_domain *ap2m=
, gfn_t gfn, mfn_t *mfn,
                                p2m_type_t *t, p2m_access_t *a,
                                bool prepopulate);
=20
-/* Alternate p2m VCPU */
-void altp2m_vcpu_initialise(struct vcpu *v);
-void altp2m_vcpu_destroy(struct vcpu *v);
-
 int altp2m_vcpu_enable_ve(struct vcpu *v, gfn_t gfn);
 void altp2m_vcpu_disable_ve(struct vcpu *v);
=20
@@ -151,8 +147,6 @@ static inline int _altp2m_get_effective_entry(struct p2=
m_domain *ap2m,
=20
 /* Only declaration is needed. DCE will optimise it out when linking. */
 uint16_t altp2m_vcpu_idx(const struct vcpu *v);
-void altp2m_vcpu_initialise(struct vcpu *v);
-void altp2m_vcpu_destroy(struct vcpu *v);
 int altp2m_vcpu_enable_ve(struct vcpu *v, gfn_t gfn);
 void altp2m_vcpu_disable_ve(struct vcpu *v);
=20
diff --git a/xen/arch/x86/mm/altp2m.c b/xen/arch/x86/mm/altp2m.c
index 46374373848d..0542e3ef9196 100644
--- a/xen/arch/x86/mm/altp2m.c
+++ b/xen/arch/x86/mm/altp2m.c
@@ -14,47 +14,6 @@
 #include "mm-locks.h"
 #include "p2m.h"
=20
-void
-altp2m_vcpu_initialise(struct vcpu *v)
-{
-    if ( !v->domain->nr_altp2m )
-        return;
-
-    if ( v !=3D current )
-        vcpu_pause(v);
-
-    vcpu_altp2m(v).p2midx =3D 0;
-    atomic_inc(&altp2m_get_altp2m(v)->active_vcpus);
-
-    altp2m_vcpu_update_p2m(v);
-
-    if ( v !=3D current )
-        vcpu_unpause(v);
-}
-
-void
-altp2m_vcpu_destroy(struct vcpu *v)
-{
-    struct p2m_domain *p2m;
-
-    if ( !v->domain->nr_altp2m )
-        return;
-
-    if ( v !=3D current )
-        vcpu_pause(v);
-
-    if ( (p2m =3D altp2m_get_altp2m(v)) )
-        atomic_dec(&p2m->active_vcpus);
-
-    altp2m_vcpu_disable_ve(v);
-
-    vcpu_altp2m(v).p2midx =3D INVALID_ALTP2M;
-    altp2m_vcpu_update_p2m(v);
-
-    if ( v !=3D current )
-        vcpu_unpause(v);
-}
-
 int altp2m_vcpu_enable_ve(struct vcpu *v, gfn_t gfn)
 {
     struct domain *d =3D v->domain;
diff --git a/xen/common/altp2m.c b/xen/common/altp2m.c
index a731ad7cdab8..e699b64678d8 100644
--- a/xen/common/altp2m.c
+++ b/xen/common/altp2m.c
@@ -59,6 +59,47 @@ void altp2m_teardown(struct domain *d)
     XVFREE(d->altp2m_p2m);
 }
=20
+#ifdef CONFIG_X86
+void altp2m_vcpu_initialise(struct vcpu *v)
+{
+    if ( !v->domain->nr_altp2m )
+        return;
+
+    if ( v !=3D current )
+        vcpu_pause(v);
+
+    vcpu_altp2m(v).p2midx =3D 0;
+    atomic_inc(&altp2m_get_altp2m(v)->active_vcpus);
+
+    altp2m_vcpu_update_p2m(v);
+
+    if ( v !=3D current )
+        vcpu_unpause(v);
+}
+
+void altp2m_vcpu_destroy(struct vcpu *v)
+{
+    struct p2m_domain *p2m;
+
+    if ( !v->domain->nr_altp2m )
+        return;
+
+    if ( v !=3D current )
+        vcpu_pause(v);
+
+    if ( (p2m =3D altp2m_get_altp2m(v)) )
+        atomic_dec(&p2m->active_vcpus);
+
+    altp2m_vcpu_disable_ve(v);
+
+    vcpu_altp2m(v).p2midx =3D INVALID_ALTP2M;
+    altp2m_vcpu_update_p2m(v);
+
+    if ( v !=3D current )
+        vcpu_unpause(v);
+}
+#endif
+
 /*
  * altp2m operations are envisioned as being used in several different
  * modes:
diff --git a/xen/include/xen/altp2m.h b/xen/include/xen/altp2m.h
index f5a4d0e60562..7defe6126563 100644
--- a/xen/include/xen/altp2m.h
+++ b/xen/include/xen/altp2m.h
@@ -24,6 +24,12 @@ int altp2m_init(struct domain *d);
 /* Free altp2m views */
 void altp2m_teardown(struct domain *d);
=20
+#ifdef CONFIG_X86
+/* Alternate p2m VCPU */
+void altp2m_vcpu_initialise(struct vcpu *v);
+void altp2m_vcpu_destroy(struct vcpu *v);
+#endif
+
 #ifdef CONFIG_ALTP2M
=20
 /* Alternate p2m HVM on/off per domain */
--=20
2.34.1



From xen-devel-bounces@lists.xenproject.org Mon Apr 20 20:25:57 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 20 Apr 2026 20:25:57 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1286522.1567735 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wEvBs-0001VA-Qv; Mon, 20 Apr 2026 20:25:56 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1286522.1567735; Mon, 20 Apr 2026 20: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 1wEvBr-0001Ki-6L; Mon, 20 Apr 2026 20:25:55 +0000
Received: by outflank-mailman (input) for mailman id 1286522;
 Mon, 20 Apr 2026 20:20:35 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <Rose.Spangler@purelymail.com>) id 1wEv6h-0001fC-7T
 for xen-devel@lists.xenproject.org; Mon, 20 Apr 2026 20:20:35 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wEv6g-008aEX-6N
 for xen-devel@lists.xenproject.org; Mon, 20 Apr 2026 22:20:34 +0200
Received: from [10.42.69.2] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <Rose.Spangler@purelymail.com>)
 id 69e68a5b-bab6-0a2a0a5309dd-0a2a4502ab90-30
 for <xen-devel@lists.xenproject.org>; Mon, 20 Apr 2026 22:20:34 +0200
Received: from [34.202.193.197] (helo=sendmail.purelymail.com)
 by tlsNG-720697.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.1)
 (envelope-from <Rose.Spangler@purelymail.com>)
 id 69e68a91-af86-0a2a45020019-22cac1c5b4e4-3
 for <xen-devel@lists.xenproject.org>; Mon, 20 Apr 2026 22:20:34 +0200
Received: by smtp.purelymail.com (Purelymail SMTP) with ESMTPSA id -1875363766; 
 (version=TLSv1.3 cipher=TLS_AES_256_GCM_SHA384);
 Mon, 20 Apr 2026 20:20: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=purelymail1 header.d=purelymail.com header.i="@purelymail.com" header.h="Feedback-ID:Received:From:To:Subject:Date"
DKIM-Signature: a=rsa-sha256; b=PdndTnfHQ94xnfzXvTReUPZH9BuTxVxJjJfMOnrvVAJpp2crXPdzH7ncAQh+hUcWQEH99tB6zDa0jJxUiZlUnauDxErDjr1on984ww83jTh1+UBefY/uOjmXIDmBvsulNiwtzOOY73NUpAQFV08yu3OZ3pD99wAlnSFDRVnxc8vcgxSgUPSDpw62a/hLP0J3yqQ1cfUkrtJTPzYPsVhrk1DXkoaygccPCk19q/3Q8nvMZPHLTkIYt/AhBNodIYez11A85hQ7m2J0sj3Jv+w50Z0jQG1ojapYfIiqX0Aiz5p2z/SpxM3ITT7+1KFgbdwK+XlZf2V2teg6zH63vIB/XA==; s=purelymail1; d=purelymail.com; v=1; bh=6JpqCKE14Ko8dp6uJ3eg+NGvA3AnOZiNuyDPfwkQfOU=; h=Feedback-ID:Received:From:To:Subject:Date;
Feedback-ID: 685805:22403:null:purelymail
X-Pm-Original-To: xen-devel@lists.xenproject.org
From: Rose.Spangler@purelymail.com
To: xen-devel@lists.xenproject.org
Cc: Rose Spangler <Rose.Spangler@elektrobit.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.pau@citrix.com>,
	Stefano Stabellini <sstabellini@kernel.org>
Subject: [RFC PATCH v6 29/43] arm/altp2m: Add support for altp2m_vcpu_{initialise,destroy}
Date: Mon, 20 Apr 2026 16:20:12 -0400
Message-Id: <20260420202026.208110-1-Rose.Spangler@purelymail.com>
X-Mailer: git-send-email 2.34.1
MIME-Version: 1.0
Content-Transfer-Encoding: quoted-printable
X-MIME-Autoconverted: from 8bit to quoted-printable by Purelymail
Content-Type: text/plain; charset=UTF-8
X-purgate-ID: tlsNG-720697/1776716434-8077A161-152131EC/0/0
X-purgate-type: clean
X-purgate-size: 3276

From: Rose Spangler <Rose.Spangler@elektrobit.com>

This commit adds support for the altp2m_vcpu_initialise and
altp2m_vcpu_destroy functions on ARM. The x86-specific function calls,
altp2m_vcpu_disable_ve and altp2m_vcpu_update_p2m, are gated with #ifdef
CONFIG_X86.

This is commit 2/2 of the altp2m_vcpu_{initialise,destroy} phase.

Signed-off-by: Rose Spangler <Rose.Spangler@elektrobit.com>
---
v6: Introduced this patch.

    The equivalent to this patch in the v4/v5 was originally part of the
    patch named "arm/altp2m: Add HVMOP_altp2m_set_domain_state". In that
    patch, the check that the VCPU passed to altp2m_vcpu_initialise isn't
    the current CPU was removed. This was because ARM only implements the
    external altp2m mode, meaning the current VCPU could never be a VCPU of
    the guest for which altp2m is being initialized for. Therefore,
    skipping this check was a slight optimization. I've removed that here
    because altp2m_vcpu_initialise is only called during an HVMOP, and
    skipping this check on ARM (especially when x86 also implements the
    external altp2m mode) causes more confusion than the slight
    optimization is worth in my view.
---
 xen/common/altp2m.c      | 14 ++++++++++----
 xen/include/xen/altp2m.h |  2 --
 2 files changed, 10 insertions(+), 6 deletions(-)

diff --git a/xen/common/altp2m.c b/xen/common/altp2m.c
index e699b64678d8..7b80426c7798 100644
--- a/xen/common/altp2m.c
+++ b/xen/common/altp2m.c
@@ -11,6 +11,7 @@
 #include <xsm/xsm.h>
=20
 #if defined(CONFIG_X86) && defined(CONFIG_HVM)
+#include <asm/hvm/hvm.h>
 #include <asm/hvm/nestedhvm.h>
 #endif
=20
@@ -59,7 +60,6 @@ void altp2m_teardown(struct domain *d)
     XVFREE(d->altp2m_p2m);
 }
=20
-#ifdef CONFIG_X86
 void altp2m_vcpu_initialise(struct vcpu *v)
 {
     if ( !v->domain->nr_altp2m )
@@ -68,10 +68,12 @@ void altp2m_vcpu_initialise(struct vcpu *v)
     if ( v !=3D current )
         vcpu_pause(v);
=20
-    vcpu_altp2m(v).p2midx =3D 0;
+    altp2m_set_vcpu_idx(v, 0);
     atomic_inc(&altp2m_get_altp2m(v)->active_vcpus);
=20
+#ifdef CONFIG_X86
     altp2m_vcpu_update_p2m(v);
+#endif
=20
     if ( v !=3D current )
         vcpu_unpause(v);
@@ -90,15 +92,19 @@ void altp2m_vcpu_destroy(struct vcpu *v)
     if ( (p2m =3D altp2m_get_altp2m(v)) )
         atomic_dec(&p2m->active_vcpus);
=20
+#ifdef CONFIG_X86
     altp2m_vcpu_disable_ve(v);
+#endif
=20
-    vcpu_altp2m(v).p2midx =3D INVALID_ALTP2M;
+    altp2m_set_vcpu_idx(v, INVALID_ALTP2M);
+
+#ifdef CONFIG_X86
     altp2m_vcpu_update_p2m(v);
+#endif
=20
     if ( v !=3D current )
         vcpu_unpause(v);
 }
-#endif
=20
 /*
  * altp2m operations are envisioned as being used in several different
diff --git a/xen/include/xen/altp2m.h b/xen/include/xen/altp2m.h
index 7defe6126563..37c875a52327 100644
--- a/xen/include/xen/altp2m.h
+++ b/xen/include/xen/altp2m.h
@@ -24,11 +24,9 @@ int altp2m_init(struct domain *d);
 /* Free altp2m views */
 void altp2m_teardown(struct domain *d);
=20
-#ifdef CONFIG_X86
 /* Alternate p2m VCPU */
 void altp2m_vcpu_initialise(struct vcpu *v);
 void altp2m_vcpu_destroy(struct vcpu *v);
-#endif
=20
 #ifdef CONFIG_ALTP2M
=20
--=20
2.34.1



From xen-devel-bounces@lists.xenproject.org Mon Apr 20 20:26:00 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 20 Apr 2026 20:26:00 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1286523.1567747 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wEvBv-000276-01; Mon, 20 Apr 2026 20:25:59 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1286523.1567747; Mon, 20 Apr 2026 20:25: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 1wEvBt-0001wv-GS; Mon, 20 Apr 2026 20:25:57 +0000
Received: by outflank-mailman (input) for mailman id 1286523;
 Mon, 20 Apr 2026 20:20:35 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <Rose.Spangler@purelymail.com>) id 1wEv6h-0001fD-7U
 for xen-devel@lists.xenproject.org; Mon, 20 Apr 2026 20:20:35 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wEv6g-00C4rw-6h
 for xen-devel@lists.xenproject.org; Mon, 20 Apr 2026 22:20:34 +0200
Received: from [10.42.69.8] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <Rose.Spangler@purelymail.com>)
 id 69e68a53-2eae-0a2a0a5409dd-0a2a45088fc8-46
 for <xen-devel@lists.xenproject.org>; Mon, 20 Apr 2026 22:20:34 +0200
Received: from [34.202.193.197] (helo=sendmail.purelymail.com)
 by tlsNG-c1860d.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.1)
 (envelope-from <Rose.Spangler@purelymail.com>)
 id 69e68a91-63b5-0a2a45080019-22cac1c5b4ee-3
 for <xen-devel@lists.xenproject.org>; Mon, 20 Apr 2026 22:20:34 +0200
Received: by smtp.purelymail.com (Purelymail SMTP) with ESMTPSA id -1875363766; 
 (version=TLSv1.3 cipher=TLS_AES_256_GCM_SHA384);
 Mon, 20 Apr 2026 20:20: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=purelymail1 header.d=purelymail.com header.i="@purelymail.com" header.h="Feedback-ID:Received:From:To:Subject:Date"
DKIM-Signature: a=rsa-sha256; b=X7BlSDaHD2ZN34svscwHtzMfbiMmT2qfzrjzlITnOA5z8VSmdQKwqfWkynM2turRCGNeCrBLyGZjTriSpJwaldmF2rhgB/hqeKX60WflFBuQLptyO9atGRXWlwuCqwO/xnhV1MCnMlATCPvWbEzuoVCpK7XhQXPYqMzHCWLEEVYZg3LN/GMEbHhvVbQAqaQK44vcJlYg3JDtW1OiduhgOQpWqvqU03EDFMoJIY7vOsOQWx7OlShlCkH63nNJ4R5aMgQWZfJY8OU/YyfyJTR06sp19FDM9ahqc1nxiZtaoOynBRvdn9ohRjgiQ0OwaFvovQUKbXm54bMfDpbozylzHw==; s=purelymail1; d=purelymail.com; v=1; bh=Kv6dybNvgNtP37AvVC3V395nXDoMWOm3zuegSLm3PkU=; h=Feedback-ID:Received:From:To:Subject:Date;
Feedback-ID: 685805:22403:null:purelymail
X-Pm-Original-To: xen-devel@lists.xenproject.org
From: Rose.Spangler@purelymail.com
To: xen-devel@lists.xenproject.org
Cc: Rose Spangler <Rose.Spangler@elektrobit.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: [RFC PATCH v6 30/43] arm/altp2m: Add altp2m view validity/visibility indicator
Date: Mon, 20 Apr 2026 16:20:13 -0400
Message-Id: <20260420202026.208110-2-Rose.Spangler@purelymail.com>
X-Mailer: git-send-email 2.34.1
In-Reply-To: <20260420202026.208110-1-Rose.Spangler@purelymail.com>
References: <20260420202026.208110-1-Rose.Spangler@purelymail.com>
MIME-Version: 1.0
Content-Transfer-Encoding: quoted-printable
X-MIME-Autoconverted: from 8bit to quoted-printable by Purelymail
Content-Type: text/plain; charset=UTF-8
X-purgate-ID: tlsNG-c1860d/1776716434-C357FDB1-F7CE8E96/0/0
X-purgate-type: clean
X-purgate-size: 5580

From: Rose Spangler <Rose.Spangler@elektrobit.com>

This commit adds the altp2m_view_state enum, which indicates whether an
altp2m view is invalid, visible, or invisible. The altp2m_state array is
comprised of altp2m_view_state values, where each entry corresponds to the
altp2m view with the same entry. This is analogous to the altp2m_eptp and
altp2m_visible_eptp arrays on x86.

This addition is necessary to tell whether an altp2m is valid, in addition
to whether it is visible. Since all altp2m views are allocated up-front
during p2m initialization, there must be an additional mechanism to
determine whether an altp2m view is valid. Since the implementation of
HVMOP_altp2m_set_visibility also needs an additional mechanism to determine
whether a view is visible, it makes sense to combine altp2m view validity
and visibility into a single mechanism. Therefore, the altp2m_state array
is used to track both view validitity and visibility.

This is commit 1/5 of the altp2m view validity/visibility phase.

Signed-off-by: Rose Spangler <Rose.Spangler@elektrobit.com>
---
v6: Introduced this patch.

    In the v4/v5 patch series, view validity was determined by simply
    checking if the altp2m p2m_domain pointer is NULL. This isn't possible
    in the v6 patch series, since altp2m views are allocated up-front
    during altp2m_init.

    Since the altp2m_view_state enum definition has to be available in
    asm/domain.h, this commit removes the sched.h dependency from altp2m.h.
    Unfortunately, this means that it's not possible to have static inline
    functions in altp2m.h which need a complete definition of arch_domain
    and arch_vcpu. If there would be a better place to put the
    altp2m_view_state definition, feedback would be appreciated.
---
 xen/arch/arm/altp2m.c             | 13 +++++++++++++
 xen/arch/arm/include/asm/altp2m.h | 23 +++++++++++++----------
 xen/arch/arm/include/asm/domain.h |  4 ++++
 xen/arch/arm/mmu/p2m.c            | 14 +++++++++++++-
 4 files changed, 43 insertions(+), 11 deletions(-)

diff --git a/xen/arch/arm/altp2m.c b/xen/arch/arm/altp2m.c
index 339f82835caf..e741648ff5a1 100644
--- a/xen/arch/arm/altp2m.c
+++ b/xen/arch/arm/altp2m.c
@@ -5,6 +5,8 @@
  * Copyright (c) 2016 Sergej Proskurin <proskurin@sec.in.tum.de>
  */
=20
+#include <xen/sched.h>
+
 #include <asm/p2m.h>
=20
 /* Check to see if vcpu should be switched to a different p2m. */
@@ -14,6 +16,17 @@ void altp2m_check(struct vcpu *v, uint16_t idx)
     BUG();
 }
=20
+/* Alternate p2m VCPU */
+uint16_t altp2m_vcpu_idx(const struct vcpu *v)
+{
+    return v->arch.ap2m_idx;
+}
+
+void altp2m_set_vcpu_idx(struct vcpu *v, unsigned int idx)
+{
+    v->arch.ap2m_idx =3D idx;
+}
+
 /*
  * Local variables:
  * mode: C
diff --git a/xen/arch/arm/include/asm/altp2m.h b/xen/arch/arm/include/asm/a=
ltp2m.h
index f001e022a213..05beb7f698a7 100644
--- a/xen/arch/arm/include/asm/altp2m.h
+++ b/xen/arch/arm/include/asm/altp2m.h
@@ -9,7 +9,10 @@
 #ifndef __ASM_ARM_ALTP2M_H
 #define __ASM_ARM_ALTP2M_H
=20
-#include <xen/sched.h>
+#include <xen/mem_access.h>
+
+struct domain;
+struct vcpu;
=20
 #ifdef CONFIG_ALTP2M
=20
@@ -24,15 +27,15 @@ static inline bool altp2m_supported(void)
 #define altp2m_unlock(d)    spin_unlock(&(d)->arch.altp2m_lock)
=20
 /* Alternate p2m VCPU */
-static inline uint16_t altp2m_vcpu_idx(const struct vcpu *v)
-{
-    return v->arch.ap2m_idx;
-}
-
-static inline void altp2m_set_vcpu_idx(struct vcpu *v, unsigned int idx)
-{
-    v->arch.ap2m_idx =3D idx;
-}
+uint16_t altp2m_vcpu_idx(const struct vcpu *v);
+void altp2m_set_vcpu_idx(struct vcpu *v, unsigned int idx);
+
+/* The current state of an altp2m view */
+enum altp2m_view_state {
+    ALTP2M_INVALID,
+    ALTP2M_VISIBLE,
+    ALTP2M_INVISIBLE,
+};
=20
 #else /* CONFIG_ALTP2M */
=20
diff --git a/xen/arch/arm/include/asm/domain.h b/xen/arch/arm/include/asm/d=
omain.h
index 4d497a21b648..28533b08db1f 100644
--- a/xen/arch/arm/include/asm/domain.h
+++ b/xen/arch/arm/include/asm/domain.h
@@ -3,6 +3,7 @@
=20
 #include <xen/cache.h>
 #include <xen/timer.h>
+#include <asm/altp2m.h>
 #include <asm/page.h>
 #include <asm/p2m.h>
 #include <asm/suspend.h>
@@ -135,6 +136,9 @@ struct arch_domain
      * concurrently.
      */
     spinlock_t altp2m_lock;
+
+    /* Validity/visibility of altp2m views */
+    enum altp2m_view_state *altp2m_state;
 #endif
 }  __cacheline_aligned;
=20
diff --git a/xen/arch/arm/mmu/p2m.c b/xen/arch/arm/mmu/p2m.c
index 04d17e787259..7c23995f8074 100644
--- a/xen/arch/arm/mmu/p2m.c
+++ b/xen/arch/arm/mmu/p2m.c
@@ -1494,6 +1494,8 @@ int p2m_teardown(struct domain *d)
=20
     d->altp2m_active =3D false;
=20
+    FREE_XENHEAP_PAGE(d->arch.altp2m_state);
+
     for ( i =3D 0; i < d->nr_altp2m; i++ )
     {
         rc =3D p2m_teardown_one(d->altp2m_p2m[i]);
@@ -1617,7 +1619,7 @@ struct p2m_domain *p2m_init_one(struct domain *d)
 static int p2m_init_altp2m(struct domain *d)
 {
 #ifdef CONFIG_ALTP2M
-    int rc;
+    int rc, i;
=20
     rc =3D altp2m_init(d);
     if ( rc )
@@ -1626,6 +1628,16 @@ static int p2m_init_altp2m(struct domain *d)
         return rc;
     }
=20
+    if ( (d->arch.altp2m_state =3D alloc_xenheap_page()) =3D=3D NULL )
+    {
+        return -ENOMEM;
+    }
+
+    for ( i =3D 0; i < d->nr_altp2m; i++ )
+    {
+        d->arch.altp2m_state[i] =3D ALTP2M_INVALID;
+    }
+
     d->altp2m_active =3D false;
 #endif
=20
--=20
2.34.1



From xen-devel-bounces@lists.xenproject.org Mon Apr 20 20:26:01 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 20 Apr 2026 20:26:01 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1286524.1567756 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wEvBx-0002Vp-2Y; Mon, 20 Apr 2026 20:26:01 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1286524.1567756; Mon, 20 Apr 2026 20:26: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 1wEvBv-0002PF-EE; Mon, 20 Apr 2026 20:25:59 +0000
Received: by outflank-mailman (input) for mailman id 1286524;
 Mon, 20 Apr 2026 20:20:35 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <Rose.Spangler@purelymail.com>) id 1wEv6h-0001fE-Ca
 for xen-devel@lists.xenproject.org; Mon, 20 Apr 2026 20:20:35 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wEv6g-00C4rw-Px
 for xen-devel@lists.xenproject.org; Mon, 20 Apr 2026 22:20:34 +0200
Received: from [10.42.69.4] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <Rose.Spangler@purelymail.com>)
 id 69e68a71-2eae-0a2a0a5409dd-0a2a4504deec-40
 for <xen-devel@lists.xenproject.org>; Mon, 20 Apr 2026 22:20:34 +0200
Received: from [34.202.193.197] (helo=sendmail.purelymail.com)
 by tlsNG-ebf023.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.1)
 (envelope-from <Rose.Spangler@purelymail.com>)
 id 69e68a91-1dec-0a2a45040019-22cac1c5a734-3
 for <xen-devel@lists.xenproject.org>; Mon, 20 Apr 2026 22:20:34 +0200
Received: by smtp.purelymail.com (Purelymail SMTP) with ESMTPSA id -1875363766; 
 (version=TLSv1.3 cipher=TLS_AES_256_GCM_SHA384);
 Mon, 20 Apr 2026 20:20: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=purelymail1 header.d=purelymail.com header.i="@purelymail.com" header.h="Feedback-ID:Received:From:To:Subject:Date"
DKIM-Signature: a=rsa-sha256; b=XrpheRDvgB46tE5EI6AUV9q6jqeSHTcLexgsVx4Q4It+SteGCzQ2BGNcIdXXUt4Gwfq33c+G3+NuIT5wrwWd9OD113QfmH4FjZeCJbHkHql0pd+zTCRlJodNCNp1m5xzOUUabZR4O/ZnPlu66u1eR+JFcujMn8UJCIEW56GnfeU3+i8bgz3GeJy7i8+EvfBWTz9XtxuCIWqQoZM/VXHmsv6d6PFFGb5Dk0z+GTzD7KFMDUVASIqnASJvfmNYUlGN4Rmk86LAYaoX0I4yNaGYnIBm+ZeHvrCNunPsyH2R2SKuFMIBlgYqcUyoIka15+jz+WhkKvyQOX+gjDid4ckZFQ==; s=purelymail1; d=purelymail.com; v=1; bh=J3AjVDX1lXR4hMM7xwvgtHJ0IKFDxOCh6rCV/eiLd40=; h=Feedback-ID:Received:From:To:Subject:Date;
Feedback-ID: 685805:22403:null:purelymail
X-Pm-Original-To: xen-devel@lists.xenproject.org
From: Rose.Spangler@purelymail.com
To: xen-devel@lists.xenproject.org
Cc: Rose Spangler <Rose.Spangler@elektrobit.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>,
	=?UTF-8?q?Roger=20Pau=20Monn=C3=A9?= <roger.pau@citrix.com>,
	Teddy Astie <teddy.astie@vates.tech>,
	Aqib Javaid <Aqib.Javaid@elektrobit.com>
Subject: [RFC PATCH v6 31/43] altp2m: Add altp2m_view_is_{valid,visible}
Date: Mon, 20 Apr 2026 16:20:14 -0400
Message-Id: <20260420202026.208110-3-Rose.Spangler@purelymail.com>
X-Mailer: git-send-email 2.34.1
In-Reply-To: <20260420202026.208110-1-Rose.Spangler@purelymail.com>
References: <20260420202026.208110-1-Rose.Spangler@purelymail.com>
MIME-Version: 1.0
Content-Transfer-Encoding: quoted-printable
X-MIME-Autoconverted: from 8bit to quoted-printable by Purelymail
Content-Type: text/plain; charset=UTF-8
X-purgate-ID: tlsNG-ebf023/1776716434-2A37F3FF-05C10323/0/0
X-purgate-type: clean
X-purgate-size: 3592

From: Rose Spangler <Rose.Spangler@elektrobit.com>

This commit adds arch independent helper functions to determine whether a
view is valid or visible. This makes it possible to determine whether a
view is valid and/or visible in common altp2m routines (namely,
altp2m_init_by_id).

This is commit 2/5 of the altp2m view validity/visibility phase.

Signed-off-by: Rose Spangler <Rose.Spangler@elektrobit.com>
Signed-off-by: Aqib Javaid <Aqib.Javaid@elektrobit.com>
---
v6: Introduced this patch.

    These functions could be used to replace the equivalent calls in x86
    code if that would be preferred. For now, they are only used in common
    code.

    The altp2m_view_is_valid function also has overlap with the
    altp2m_is_ept_valid function, but that function has an additional
    ASSERT and check that idx < d->nr_altp2m, so I wasn't sure if that
    function should be repurposed for this. If renaming that function
    instead of introducing a new function on x86 would be preferred, then I
    can do that.

    Additionally, these functions don't have bounds checks since the
    functions are intended to replace code which don't have bounds checks
    currently. Bounds checks could be added here if that would be
    preferred.
---
 xen/arch/arm/altp2m.c             | 10 ++++++++++
 xen/arch/arm/include/asm/altp2m.h |  3 +++
 xen/arch/x86/include/asm/altp2m.h | 10 ++++++++++
 3 files changed, 23 insertions(+)

diff --git a/xen/arch/arm/altp2m.c b/xen/arch/arm/altp2m.c
index e741648ff5a1..0e19e197e826 100644
--- a/xen/arch/arm/altp2m.c
+++ b/xen/arch/arm/altp2m.c
@@ -27,6 +27,16 @@ void altp2m_set_vcpu_idx(struct vcpu *v, unsigned int id=
x)
     v->arch.ap2m_idx =3D idx;
 }
=20
+bool altp2m_view_is_valid(struct domain *d, unsigned int idx)
+{
+    return d->arch.altp2m_state[array_index_nospec(idx, d->nr_altp2m)] !=
=3D ALTP2M_INVALID;
+}
+
+bool altp2m_view_is_visible(struct domain *d, unsigned int idx)
+{
+    return d->arch.altp2m_state[array_index_nospec(idx, d->nr_altp2m)] =3D=
=3D ALTP2M_VISIBLE;
+}
+
 /*
  * Local variables:
  * mode: C
diff --git a/xen/arch/arm/include/asm/altp2m.h b/xen/arch/arm/include/asm/a=
ltp2m.h
index 05beb7f698a7..fbe66ad5536d 100644
--- a/xen/arch/arm/include/asm/altp2m.h
+++ b/xen/arch/arm/include/asm/altp2m.h
@@ -30,6 +30,9 @@ static inline bool altp2m_supported(void)
 uint16_t altp2m_vcpu_idx(const struct vcpu *v);
 void altp2m_set_vcpu_idx(struct vcpu *v, unsigned int idx);
=20
+bool altp2m_view_is_valid(struct domain *d, unsigned int idx);
+bool altp2m_view_is_visible(struct domain *d, unsigned int idx);
+
 /* The current state of an altp2m view */
 enum altp2m_view_state {
     ALTP2M_INVALID,
diff --git a/xen/arch/x86/include/asm/altp2m.h b/xen/arch/x86/include/asm/a=
ltp2m.h
index 43dd5d2acd9c..56ae19b24b42 100644
--- a/xen/arch/x86/include/asm/altp2m.h
+++ b/xen/arch/x86/include/asm/altp2m.h
@@ -65,6 +65,16 @@ static inline void altp2m_set_vcpu_idx(struct vcpu *v, u=
nsigned int idx)
     vcpu_altp2m(v).p2midx =3D idx;
 }
=20
+static inline bool altp2m_view_is_valid(struct domain *d, unsigned int idx=
)
+{
+    return d->arch.altp2m_eptp[array_index_nospec(idx, MAX_EPTP)] !=3D mfn=
_x(INVALID_MFN);
+}
+
+static inline bool altp2m_view_is_visible(struct domain *d, unsigned int i=
dx)
+{
+    return d->arch.altp2m_visible_eptp[array_index_nospec(idx, MAX_EPTP)] =
!=3D mfn_x(INVALID_MFN);
+}
+
 /*
  * Alternate p2m: shadow p2m tables used for alternate memory views
  */
--=20
2.34.1



From xen-devel-bounces@lists.xenproject.org Mon Apr 20 20:30:28 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 20 Apr 2026 20:30:28 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1287344.1567800 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wEvGD-0004IQ-UO; Mon, 20 Apr 2026 20:30:25 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1287344.1567800; Mon, 20 Apr 2026 20: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 1wEvGD-0004IJ-Rj; Mon, 20 Apr 2026 20:30:25 +0000
Received: by outflank-mailman (input) for mailman id 1287344;
 Mon, 20 Apr 2026 20:30:25 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <Rose.Spangler@purelymail.com>) id 1wEvGD-0004IA-An
 for xen-devel@lists.xenproject.org; Mon, 20 Apr 2026 20:30:25 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wEvGC-00EZzS-Nn
 for xen-devel@lists.xenproject.org; Mon, 20 Apr 2026 22:30:24 +0200
Received: from [10.42.69.6] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <Rose.Spangler@purelymail.com>)
 id 69e68cba-bab6-0a2a0a5309dd-0a2a4506eabe-32
 for <xen-devel@lists.xenproject.org>; Mon, 20 Apr 2026 22:30:24 +0200
Received: from [34.202.193.197] (helo=sendmail.purelymail.com)
 by tlsNG-16d1c6.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.1)
 (envelope-from <Rose.Spangler@purelymail.com>)
 id 69e68cdf-7371-0a2a45060019-22cac1c5d222-3
 for <xen-devel@lists.xenproject.org>; Mon, 20 Apr 2026 22:30:24 +0200
Received: by smtp.purelymail.com (Purelymail SMTP) with ESMTPSA id -1174183712; 
 (version=TLSv1.3 cipher=TLS_AES_256_GCM_SHA384);
 Mon, 20 Apr 2026 20:30: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=purelymail1 header.d=purelymail.com header.i="@purelymail.com" header.h="Feedback-ID:Received:From:To:Subject:Date"
DKIM-Signature: a=rsa-sha256; b=I6P3TblqYgnWEf8LO4BYN6+STJh5kzb3WrMXQZYU27r2FvFtYvLCWrHmpKyVeSTKJfbNumwnGquc6/HjqdebXZODCUsIh/iwmzGB/HckmjLsB3fRyyWARpqshCAC/EPrejU2EzEOib6wW9ymcG68pAwueS8nvOtDsOPZW+IqPMSXdXQBjzcc4rME8KibnsoPu3XPq36skVol8nC4PSwYvIaFaHHWIpZ3gUCTu8QUEDJX5y7ckx4/ApypvK+t+rg8HCO0IHrM/RypoXzOaPVpAwzZ5IMz4NuPD/DYwwANzw4LhgGr4s8/PrQZHf325fgIfgBnqloa3PJZ5JeTEZP/GA==; s=purelymail1; d=purelymail.com; v=1; bh=1n2x3Sc6bG4P+vvG8u+e4XEkaninvIkxhNvSvfMquGM=; h=Feedback-ID:Received:From:To:Subject:Date;
Feedback-ID: 685805:22403:null:purelymail
X-Pm-Original-To: xen-devel@lists.xenproject.org
From: Rose.Spangler@purelymail.com
To: xen-devel@lists.xenproject.org
Cc: Rose Spangler <Rose.Spangler@elektrobit.com>,
	Jan Beulich <jbeulich@suse.com>,
	Andrew Cooper <andrew.cooper3@citrix.com>,
	=?UTF-8?q?Roger=20Pau=20Monn=C3=A9?= <roger.pau@citrix.com>,
	Teddy Astie <teddy.astie@vates.tech>
Subject: [RFC PATCH v6 32/43] x86/altp2m: Add altp2m_set_view_visibility_locked
Date: Mon, 20 Apr 2026 16:30:09 -0400
Message-Id: <20260420203020.208184-1-Rose.Spangler@purelymail.com>
X-Mailer: git-send-email 2.34.1
MIME-Version: 1.0
Content-Transfer-Encoding: quoted-printable
X-MIME-Autoconverted: from 8bit to quoted-printable by Purelymail
Content-Type: text/plain; charset=UTF-8
X-purgate-ID: tlsNG-16d1c6/1776717024-9047FD75-D9307B76/0/0
X-purgate-type: clean
X-purgate-size: 2593

From: Rose Spangler <Rose.Spangler@elektrobit.com>

This commit splits the altp2m_set_view_visibility into two functions, where
the altp2m_set_view_visibility_locked variant has the preconditions that
the altp2m lock is held. This makes it possible to change a view's
visibility in an architecture independent way in code that already holds
the altp2m lock (namely, altp2m_flush).

This is commit 3/5 of the altp2m view validity/visibility phase.

Signed-off-by: Rose Spangler <Rose.Spangler@elektrobit.com>
---
v6: Introduced this patch.
---
 xen/arch/x86/include/asm/altp2m.h |  4 ++++
 xen/arch/x86/mm/altp2m.c          | 14 +++++++++++---
 2 files changed, 15 insertions(+), 3 deletions(-)

diff --git a/xen/arch/x86/include/asm/altp2m.h b/xen/arch/x86/include/asm/a=
ltp2m.h
index 56ae19b24b42..99c4cfa5a68b 100644
--- a/xen/arch/x86/include/asm/altp2m.h
+++ b/xen/arch/x86/include/asm/altp2m.h
@@ -106,6 +106,10 @@ int altp2m_change_gfn(struct domain *d, unsigned int i=
dx, gfn_t old_gfn,
 int altp2m_set_view_visibility(struct domain *d, unsigned int altp2m_idx,
                                uint8_t visible);
=20
+/* Set a specific p2m view visibility (with lock already held) */
+int altp2m_set_view_visibility_locked(struct domain *d, unsigned int altp2=
m_idx,
+                                      uint8_t visible);
+
 /*
  * Looks up altp2m entry. If the entry is not found it looks up the entry =
in
  * hostp2m.
diff --git a/xen/arch/x86/mm/altp2m.c b/xen/arch/x86/mm/altp2m.c
index 0542e3ef9196..8672b8c061d3 100644
--- a/xen/arch/x86/mm/altp2m.c
+++ b/xen/arch/x86/mm/altp2m.c
@@ -685,9 +685,19 @@ int p2m_get_suppress_ve(struct domain *d, gfn_t gfn, b=
ool *suppress_ve,
 int altp2m_set_view_visibility(struct domain *d, unsigned int altp2m_idx,
                                uint8_t visible)
 {
-    int rc =3D 0;
+    int rc;
=20
     altp2m_lock(d);
+    rc =3D altp2m_set_view_visibility_locked(d, altp2m_idx, visible);
+    altp2m_unlock(d);
+
+    return rc;
+}
+
+int altp2m_set_view_visibility_locked(struct domain *d, unsigned int altp2=
m_idx,
+                                      uint8_t visible)
+{
+    int rc =3D 0;
=20
     if ( !altp2m_is_eptp_valid(d, altp2m_idx) )
         rc =3D -EINVAL;
@@ -698,8 +708,6 @@ int altp2m_set_view_visibility(struct domain *d, unsign=
ed int altp2m_idx,
         d->arch.altp2m_visible_eptp[array_index_nospec(altp2m_idx, MAX_EPT=
P)] =3D
             mfn_x(INVALID_MFN);
=20
-    altp2m_unlock(d);
-
     return rc;
 }
=20
--=20
2.34.1



From xen-devel-bounces@lists.xenproject.org Mon Apr 20 20:30:30 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 20 Apr 2026 20:30:30 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1287346.1567809 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wEvGG-0004WB-4h; Mon, 20 Apr 2026 20:30:28 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1287346.1567809; Mon, 20 Apr 2026 20: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 1wEvGG-0004W2-1z; Mon, 20 Apr 2026 20:30:28 +0000
Received: by outflank-mailman (input) for mailman id 1287346;
 Mon, 20 Apr 2026 20:30:26 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <Rose.Spangler@purelymail.com>) id 1wEvGE-0004QR-K2
 for xen-devel@lists.xenproject.org; Mon, 20 Apr 2026 20:30:26 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wEvGE-004xrJ-0s
 for xen-devel@lists.xenproject.org; Mon, 20 Apr 2026 22:30:26 +0200
Received: from [10.42.69.9] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <Rose.Spangler@purelymail.com>)
 id 69e68cd1-5cb7-0a2a0a5109dd-0a2a450995c4-18
 for <xen-devel@lists.xenproject.org>; Mon, 20 Apr 2026 22:30:26 +0200
Received: from [34.202.193.197] (helo=sendmail.purelymail.com)
 by tlsNG-bad1c0.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.1)
 (envelope-from <Rose.Spangler@purelymail.com>)
 id 69e68ce0-2497-0a2a45090019-22cac1c5b5c6-3
 for <xen-devel@lists.xenproject.org>; Mon, 20 Apr 2026 22:30:25 +0200
Received: by smtp.purelymail.com (Purelymail SMTP) with ESMTPSA id -1174183712; 
 (version=TLSv1.3 cipher=TLS_AES_256_GCM_SHA384);
 Mon, 20 Apr 2026 20:30: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=purelymail1 header.d=purelymail.com header.i="@purelymail.com" header.h="Feedback-ID:Received:From:To:Subject:Date"
DKIM-Signature: a=rsa-sha256; b=oGwrXRxo+8rDytkzsBudPYgJAfDqFQFXgDhS5gjW/b3psLDpu2NSmxb6pCHEMrOZhmr3L4qbYtWaHh5vp/lz1GE1/fssqthRgZ9gQ6tFT6XnT8e9UtLRxsie9BOwnO1nw8a3+M+oUGxNH6Db8bBNJMBGxgTxO20I8Uwsk56LEaWAmbQFgXKzQYs3bT9oqq/gcNnYrXHY8jnMwaT7rGN07EyTCU996y9N+Kwbe2CdGQZQJejGvy/jn/awCC/5cFsAz2GEmqeLPpkovzRRzIaYFR5yhEt67ar1ss7WN99XHxvJxHg4GPzU9KIVJABRweWWtTnftRdbkPU2trqzItrV+w==; s=purelymail1; d=purelymail.com; v=1; bh=Lr/7jgBlmzXiiMhb4wIsFSy3Z++fKD5Dugfwfpq6hO8=; h=Feedback-ID:Received:From:To:Subject:Date;
Feedback-ID: 685805:22403:null:purelymail
X-Pm-Original-To: xen-devel@lists.xenproject.org
From: Rose.Spangler@purelymail.com
To: xen-devel@lists.xenproject.org
Cc: Rose Spangler <Rose.Spangler@elektrobit.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: [RFC PATCH v6 33/43] arm/altp2m: Add altp2m_set_view_visibility{,_locked} support
Date: Mon, 20 Apr 2026 16:30:10 -0400
Message-Id: <20260420203020.208184-2-Rose.Spangler@purelymail.com>
X-Mailer: git-send-email 2.34.1
In-Reply-To: <20260420203020.208184-1-Rose.Spangler@purelymail.com>
References: <20260420203020.208184-1-Rose.Spangler@purelymail.com>
MIME-Version: 1.0
Content-Transfer-Encoding: quoted-printable
X-MIME-Autoconverted: from 8bit to quoted-printable by Purelymail
Content-Type: text/plain; charset=UTF-8
X-purgate-ID: tlsNG-bad1c0/1776717025-93175A53-A29C2BAD/0/0
X-purgate-type: clean
X-purgate-size: 2633

From: Rose Spangler <Rose.Spangler@elektrobit.com>

This commit adds the altp2m_set_view_visibility and
altp2m_set_view_visibility_locked functions on ARM. This makes it possible
to set the altp2m view visibility in common altp2m routines (namely,
altp2m_flush).

This is commit 4/5 of the altp2m view validity/visibility phase.

Signed-off-by: Rose Spangler <Rose.Spangler@elektrobit.com>
---
v6: Introduced this patch.
---
 xen/arch/arm/altp2m.c             | 30 ++++++++++++++++++++++++++++++
 xen/arch/arm/include/asm/altp2m.h |  8 ++++++++
 2 files changed, 38 insertions(+)

diff --git a/xen/arch/arm/altp2m.c b/xen/arch/arm/altp2m.c
index 0e19e197e826..aa48c17e11a3 100644
--- a/xen/arch/arm/altp2m.c
+++ b/xen/arch/arm/altp2m.c
@@ -37,6 +37,36 @@ bool altp2m_view_is_visible(struct domain *d, unsigned i=
nt idx)
     return d->arch.altp2m_state[array_index_nospec(idx, d->nr_altp2m)] =3D=
=3D ALTP2M_VISIBLE;
 }
=20
+int altp2m_set_view_visibility(struct domain *d, unsigned int altp2m_idx,
+                               uint8_t visible)
+{
+    int rc;
+
+    altp2m_lock(d);
+    rc =3D altp2m_set_view_visibility_locked(d, altp2m_idx, visible);
+    altp2m_unlock(d);
+
+    return rc;
+}
+
+int altp2m_set_view_visibility_locked(struct domain *d, unsigned int altp2=
m_idx,
+                                      uint8_t visible)
+{
+    int rc =3D 0;
+
+    if ( altp2m_idx >=3D d->nr_altp2m || !altp2m_view_is_valid(d, altp2m_i=
dx) )
+        rc =3D -EINVAL;
+    else if ( visible )
+        d->arch.altp2m_state[array_index_nospec(altp2m_idx, d->nr_altp2m)]=
 =3D
+            ALTP2M_VISIBLE;
+    else
+        d->arch.altp2m_state[array_index_nospec(altp2m_idx, d->nr_altp2m)]=
 =3D
+            ALTP2M_INVISIBLE;
+
+    return rc;
+}
+
+
 /*
  * Local variables:
  * mode: C
diff --git a/xen/arch/arm/include/asm/altp2m.h b/xen/arch/arm/include/asm/a=
ltp2m.h
index fbe66ad5536d..f8d0dd799a4a 100644
--- a/xen/arch/arm/include/asm/altp2m.h
+++ b/xen/arch/arm/include/asm/altp2m.h
@@ -40,6 +40,14 @@ enum altp2m_view_state {
     ALTP2M_INVISIBLE,
 };
=20
+/* Set a specific p2m view visibility */
+int altp2m_set_view_visibility(struct domain *d, unsigned int altp2m_idx,
+                               uint8_t visible);
+
+/* Set a specific p2m view visibility (with lock already held) */
+int altp2m_set_view_visibility_locked(struct domain *d, unsigned int altp2=
m_idx,
+                                      uint8_t visible);
+
 #else /* CONFIG_ALTP2M */
=20
 static inline bool altp2m_supported(void)
--=20
2.34.1



From xen-devel-bounces@lists.xenproject.org Mon Apr 20 21:16:10 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 20 Apr 2026 21:16:10 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1287405.1567817 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wEvyQ-0003fO-Dy; Mon, 20 Apr 2026 21:16:06 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1287405.1567817; Mon, 20 Apr 2026 21:16: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 1wEvyQ-0003fH-B2; Mon, 20 Apr 2026 21:16:06 +0000
Received: by outflank-mailman (input) for mailman id 1287405;
 Mon, 20 Apr 2026 21:11:42 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <Rose.Spangler@elektrobit.com>) id 1wEvuA-0003ai-2E
 for xen-devel@lists.xenproject.org; Mon, 20 Apr 2026 21:11:42 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wEvu8-0052DR-Ck
 for xen-devel@lists.xenproject.org; Mon, 20 Apr 2026 23:11:40 +0200
Received: from [10.42.69.8] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <Rose.Spangler@elektrobit.com>)
 id 69e69636-bab6-0a2a0a5309dd-0a2a450895f0-48
 for <xen-devel@lists.xenproject.org>; Mon, 20 Apr 2026 23:11:40 +0200
Received: from [52.101.48.91]
 (helo=MW6PR02CU001.outbound.protection.outlook.com)
 by tlsNG-c1860d.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.1)
 (envelope-from <Rose.Spangler@elektrobit.com>)
 id 69e6968a-63b5-0a2a45080019-3465305b33d1-3
 for <xen-devel@lists.xenproject.org>; Mon, 20 Apr 2026 23:11:39 +0200
Received: from SN7PR04CA0070.namprd04.prod.outlook.com (2603:10b6:806:121::15)
 by DS0PR08MB9112.namprd08.prod.outlook.com (2603:10b6:8:1b9::6) with
 Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9818.33; Mon, 20 Apr
 2026 21:11:26 +0000
Received: from SA2PEPF00001507.namprd04.prod.outlook.com
 (2603:10b6:806:121:cafe::ae) by SN7PR04CA0070.outlook.office365.com
 (2603:10b6:806:121::15) with Microsoft SMTP Server (version=TLS1_3,
 cipher=TLS_AES_256_GCM_SHA384) id 15.20.9791.48 via Frontend Transport; Mon,
 20 Apr 2026 21:11:26 +0000
Received: from usbth1es003.ebgroup.elektrobit.com (4.79.107.243) by
 SA2PEPF00001507.mail.protection.outlook.com (10.167.242.39) with Microsoft
 SMTP Server (version=TLS1_3, cipher=TLS_AES_256_GCM_SHA384) id 15.20.9791.48
 via Frontend Transport; Mon, 20 Apr 2026 21:11:25 +0000
Received: from usbth1es003 (localhost [127.0.0.1])
 by usbth1es003.ebgroup.elektrobit.com (Postfix) with SMTP id 4fzypN6KtNz1wdQ; 
 Mon, 20 Apr 2026 14:11:24 -0700 (PDT)
Received: from SJ0PR08CU001.outbound.protection.outlook.com
 (mail-sj0pr08cu00101.outbound.protection.outlook.com [40.93.1.73])
 (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)
 key-exchange secp384r1 server-signature RSA-PSS (2048 bits) server-digest
 SHA256) (No client certificate requested)
 by usbth1es003.ebgroup.elektrobit.com (Postfix) with ESMTPS;
 Mon, 20 Apr 2026 14:11:24 -0700 (PDT)
Received: from BLAPR05CA0039.namprd05.prod.outlook.com (2603:10b6:208:335::20)
 by PH0PR08MB10955.namprd08.prod.outlook.com (2603:10b6:510:380::22)
 with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9818.32; Mon, 20 Apr
 2026 21:11:18 +0000
Received: from MN1PEPF0000ECDA.namprd02.prod.outlook.com
 (2603:10b6:208:335:cafe::88) by BLAPR05CA0039.outlook.office365.com
 (2603:10b6:208:335::20) with Microsoft SMTP Server (version=TLS1_3,
 cipher=TLS_AES_256_GCM_SHA384) id 15.20.9791.48 via Frontend Transport; Mon,
 20 Apr 2026 21:11:17 +0000
Received: from denue6es012.ebgroup.elektrobit.com (213.95.148.172) by
 MN1PEPF0000ECDA.mail.protection.outlook.com (10.167.242.134) with Microsoft
 SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id
 15.20.9791.48 via Frontend Transport; Mon, 20 Apr 2026 21:11:16 +0000
Received: from ubuntu.localdomain (10.10.178.50) by
 denue6es012.ebgroup.elektrobit.com (10.243.160.140) with Microsoft SMTP
 Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id
 15.2.2562.35; Mon, 20 Apr 2026 23:11:12 +0200
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@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=elektrobit.com header.i="@elektrobit.com" header.h="From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck"; dkim=pass header.s=selector1 header.d=elektrobit.com header.i="@elektrobit.com" header.h="From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck"
ARC-Seal: i=2; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=pass;
 b=o1Owhg7YuZsWV3ZkkDvZFvml6QqpLdVtDSuU/KWjBvb0vOuGG53jrG2s2vR+SoZfvuw9WZ8IojLt4vZDXe4T/c4YPR+tTFn5JiwPL1GtPg0L4aGQ052nw++gZlqVD7CcJdLMgEU+nFCI+1qZ9UroGYFX9y1N5AzHAp5wPheuKi95u+602xqoy4RDyH4gAaOQCMpSCzXD0I+jLrbPzW9ulJ3pBTQrBewGLBYu2v+eFBm/a0yr/pYQOnvwr4fHPZOVhy1o/n5sugc0jB5y7aN5kVN5hmvcwSE0o6eEWLtEf5BSHod4bvLWCQ9vtx6mkF+UxFB5SXsP3yHNBQ84982/ZA==
ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com;
 s=arcselector10001;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1;
 bh=CskA+UpxYzQP++t6ku/Lr+/r6p41tsG9v+zuUgf8Wvs=;
 b=o6aZtKtTcCtQ0fN0e8pVqSjToIpC9w75yVk/gTjL9vSuCBxU6mCQOVWakjdVIVSk6C3/ycbbrrQTDLQWsEGcaL7KEfgxqN/Q2ldfvYHDl+j2dUH6a1bPFVVSLK0JHrD7iIbcpnh5BUnxHeog5pf+GEmiWTz8kF/h5YmoCyVgfVa/FtYeTCFj5uk2AJHp/Xnem96TcJtQUtZmKjvNSsU9VaYCtaaJFyobqcGtJHpD96JvYG1bM9MTNGXJgcjX5d+ic77FruTRDORoiB65wmjImzfPj0lLI7D/Nh1sTaE3AuuwBwYeRgrSGLhgPobJGxlfP4tcC1ZC70fiGuG599X9Cw==
ARC-Authentication-Results: i=2; mx.microsoft.com 1; spf=pass (sender ip is
 40.93.1.73) smtp.rcpttodomain=amd.com smtp.mailfrom=elektrobit.com;
 dmarc=pass (p=quarantine sp=none pct=100) action=none
 header.from=elektrobit.com; dkim=pass (signature was verified)
 header.d=elektrobit.com; arc=pass (0 oda=1 ltdi=1
 spf=[1,1,smtp.mailfrom=elektrobit.com]
 dmarc=[1,1,header.from=elektrobit.com])
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=elektrobit.com;
 s=selector1;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck;
 bh=CskA+UpxYzQP++t6ku/Lr+/r6p41tsG9v+zuUgf8Wvs=;
 b=ZQ6AlZ4mF4Na67+psydyhzYc36Xvl0NBJ9t7r7nO+Yrc6cINoegCPJCs0+v/DnTiegVY6FaOVPUNfjo9Qags+BUGJfFgQHMsm911nLZFZ1AwQgd8UZSs1mjjHaJtHd+gJ3eTslyZ43TRz1Yk/I68nHiJnTzVwXhuh5y4A54bhO0=
X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 40.93.1.73)
 smtp.mailfrom=elektrobit.com; dkim=pass (signature was verified)
 header.d=elektrobit.com;dmarc=pass action=none header.from=elektrobit.com;
Received-SPF: Pass (protection.outlook.com: domain of elektrobit.com
 designates 40.93.1.73 as permitted sender) receiver=protection.outlook.com;
 client-ip=40.93.1.73; helo=SJ0PR08CU001.outbound.protection.outlook.com; pr=C
ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none;
 b=T8A3gczs8jdFTM2+QBEW6bT6/YXvZcxQw/p8xfmA89GD4a/P7KiueNkM2+VdNXa268B9PbP4NFd4aiAYp76ryDfuvTRSpO4brKHIgCP8MVUZStN4m55N8/evuIMntwQeXodnbOIa9vDVp0RbUQWA+53VjGzAyoupoITicXj5Om8IEGwopQfZl3GBn5vZxw9v6XsOy1uRMoYhySPp86IwkFOYekW8Gqgly1NVhk4X3NEPDQcaAFdYSZKTo049xwRPkT8dowhWwM7AAX54eYHxI0xd1o4phSLxaJvV5Vu/06A1yzwZIs0I8taFo5O9pzFgQVqauNu9UCJQ582fF4tU/w==
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com;
 s=arcselector10001;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1;
 bh=CskA+UpxYzQP++t6ku/Lr+/r6p41tsG9v+zuUgf8Wvs=;
 b=h+I2/WKMtxM/lBNlKdSnNGoJotF5W4vy47f56WWtx9z4NB9EkLzAWo8opt3MpPGv75G90YccZayz6mQjUzt1DYQljU6xQEsCV6G5MIsQZG7NDPBYtoOmLGpHQW1VPzf4ap0iDJ1lMv3qFLWW0i+ss3BFxF5IMCd3xsNgZb+pHvZoXqyRXnENkcF80XWQhDiofoNaxHEpf9uMpF4lu0fx8p0gOtW71jl6HSBSjKrMLmZW+Aa2jDXzwU4ra6Rn+gGAhZyTe9DFqSoT/nVFKhn8wN67HpGbLJkiam8ZejJDa7txhw82X6RNkDPX6CH1+YbS2jdynktmsBkf7+2I7/CBIw==
ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass (sender ip is
 213.95.148.172) smtp.rcpttodomain=lists.xenproject.org
 smtp.mailfrom=elektrobit.com; dmarc=pass (p=quarantine sp=none pct=100)
 action=none header.from=elektrobit.com; dkim=none (message not signed);
 arc=none (0)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=elektrobit.com;
 s=selector1;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck;
 bh=CskA+UpxYzQP++t6ku/Lr+/r6p41tsG9v+zuUgf8Wvs=;
 b=ZQ6AlZ4mF4Na67+psydyhzYc36Xvl0NBJ9t7r7nO+Yrc6cINoegCPJCs0+v/DnTiegVY6FaOVPUNfjo9Qags+BUGJfFgQHMsm911nLZFZ1AwQgd8UZSs1mjjHaJtHd+gJ3eTslyZ43TRz1Yk/I68nHiJnTzVwXhuh5y4A54bhO0=
X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 213.95.148.172)
 smtp.mailfrom=elektrobit.com; dkim=none (message not signed)
 header.d=none;dmarc=pass action=none header.from=elektrobit.com;
Received-SPF: Pass (protection.outlook.com: domain of elektrobit.com
 designates 213.95.148.172 as permitted sender)
 receiver=protection.outlook.com; client-ip=213.95.148.172;
 helo=denue6es012.ebgroup.elektrobit.com; pr=C
From: Rose Spangler <Rose.Spangler@elektrobit.com>
To: <xen-devel@lists.xenproject.org>
CC: Rose Spangler <Rose.Spangler@elektrobit.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.pau@citrix.com>, Stefano Stabellini <sstabellini@kernel.org>, "Teddy
 Astie" <teddy.astie@vates.tech>, Tamas K Lengyel <tamas@tklengyel.com>,
	Bertrand Marquis <bertrand.marquis@arm.com>, Volodymyr Babchuk
	<Volodymyr_Babchuk@epam.com>, "Daniel P. Smith"
	<dpsmith@apertussolutions.com>, Rahul Singh <rahul.singh@arm.com>, "Julien
 Grall" <julien.grall@arm.com>
Subject: [RESEND RFC PATCH v6 00/43] altp2m: Move altp2m routines to common code and add ARM support
Date: Mon, 20 Apr 2026 17:11:04 -0400
Message-ID: <20260420211104.208444-1-Rose.Spangler@elektrobit.com>
X-Mailer: git-send-email 2.34.1
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit
Content-Type: text/plain
X-Originating-IP: [10.10.178.50]
X-ClientProxiedBy: denue6es012.ebgroup.elektrobit.com (10.243.160.140) To
 denue6es012.ebgroup.elektrobit.com (10.243.160.140)
X-EOPAttributedMessage: 1
X-MS-Exchange-SkipListedInternetSender:
 ip=[213.95.148.172];domain=denue6es012.ebgroup.elektrobit.com
X-MS-TrafficTypeDiagnostic:
	MN1PEPF0000ECDA:EE_|PH0PR08MB10955:EE_|SA2PEPF00001507:EE_|DS0PR08MB9112:EE_
X-MS-Office365-Filtering-Correlation-Id: 7321a47b-d8a7-4ff4-3fa4-08de9f2161ff
X-SM-outgoing: yes
X-MS-Exchange-SenderADCheck: 1
X-MS-Exchange-AntiSpam-Relay: 0
X-Microsoft-Antispam-Untrusted:
 BCL:0;ARA:13230040|704162111799003|82310400026|36860700016|7416014|376014|1800799024|13003099007|56012099003|18002099003;
X-Microsoft-Antispam-Message-Info-Original:
 =?us-ascii?Q?MSfwI/iyi5W56jLzzsYRfg3tdYDtTEvJ5RfFWN/Oax3OPrG56wBqfEKHU02g?=
 =?us-ascii?Q?sKwAy7t5Lsd0qU9ti2qCIHqcTyyn4toSHxLOqDFzfTxM6aTEL1fAFA+6Pvic?=
 =?us-ascii?Q?Hae4tHPI0OyJr/14Pb+4MYip7Itod9z6ig3AI8B3B5wY0YVYvLP/yM/6/mrQ?=
 =?us-ascii?Q?aB6WW1yoDMUDRqIgS1GsUQoYq5NOmQQv+LV7sX3fbaZx3yOqjOaR5htSwJOr?=
 =?us-ascii?Q?0Kyb/xfGl0pv31yXpJThf5s6xrVJM2fStdpBuVLDpaeMN/90NsRV+MsLthIN?=
 =?us-ascii?Q?cKxjE15KgR0rPrsQ/g2bOe4g4INcz2lCctNYdRiHd4jov1yp6gIp++OWzeVI?=
 =?us-ascii?Q?pqsdaMp6jlp/KEBv7wAjwjWMxhtH+VQjzhc7wWCkLNMx1v1atzV7JjO2SA0I?=
 =?us-ascii?Q?v4rS55UKPJ++5uSByOa0D/Zlt6CToV47Kcai603lD7ATTHaAr8USV2aopDf1?=
 =?us-ascii?Q?/L9gxGgNp1sb4uxhqE90N2fY+krJRc0WE76IDJzc/7mlbiURNVwvr8BIdnJG?=
 =?us-ascii?Q?G4sAQuX7uYghkTCFFmUrD1/eOqdoWCrwquHVGC1qC0hVQyC4DiDv3072kfVK?=
 =?us-ascii?Q?rt8qZOHTTrL7RFV6YL5Ezv1e1bMdHZXCZ2K7B1edPXvxvu+NLm7Eolr4+Uy3?=
 =?us-ascii?Q?/b7+5LogaiscknUj9i5yxT1aIedPfOQmEtdK8rZzyI2aqdrTpqTtEPv119HA?=
 =?us-ascii?Q?Vm/tQKibB++P4uUN1Jhp+fjVhErbB30rwJwtpvVyXeFwD3fCHga86vzzIZA2?=
 =?us-ascii?Q?B3P/H45f5/aiHJUN8fvA97dPDV5I4GfZEXKiTga0IHne2KwyFZ+LoY6PDOPy?=
 =?us-ascii?Q?K4H8v/uDR4uGwCs1PUrrxbJChOBOtEKti37tbn7K6rAikKrfRNttq5K7H7yv?=
 =?us-ascii?Q?6mksJ52qVYzmRKnx+dB2OXAlCcfTvZZFK///OKX0cLeS2JF08ojvlkURSWJE?=
 =?us-ascii?Q?z0cn3ctgfrLwXLEGEg8zw0SZmIWdbeB2+H6a+Qvnzlf6KZYr4QduzFn/ekCu?=
 =?us-ascii?Q?GoGnFDFQa7H3vFvCZV+uVpExLA9O5/iVViPdLFafN9/tyaUGB6CwcZw2skce?=
 =?us-ascii?Q?LnK6d6vRO7FmAF3l8iLkxQdEhuZ0axtJ1aSMvvzJ+DWO0K3rLI+QNMMBLFoq?=
 =?us-ascii?Q?qDuds2b3R4Jgon6rlQlwU3C5CKotyFkOFZ/sajSizaJr1EjXYVrfPMI=3D?=
X-Forefront-Antispam-Report-Untrusted:
 CIP:213.95.148.172;CTRY:DE;LANG:en;SCL:1;SRV:;IPV:CAL;SFV:NSPM;H:denue6es012.ebgroup.elektrobit.com;PTR:eth1-fw1-nbg6.eb.noris.de;CAT:NONE;SFS:(13230040)(704162111799003)(82310400026)(36860700016)(7416014)(376014)(1800799024)(13003099007)(56012099003)(18002099003);DIR:OUT;SFP:1102;
X-Exchange-RoutingPolicyChecked:
 tOG7eKflMvnOosl1knvaD9HzJ0vAbUePKOL7b9YeIaoF4ii/wPWmV81uq3xi3L2xWxxUqv+F5DtkOvJxQ9YQWI94s34VwXjsW5ni+IPUP5zV2RNn5M42r6SU8toVULRhB8lNh9ITjeAH4Vb0UU9154ED9VNTQDb2VrevSCwBUafBM43pWayoM9kF/fdaowqFCtQfgdYKy5yuHzPef/AAkXMH/Cu4egVO68J1xXNqnSJzkLPu+xeeLTxUW4xH4EBOERVWhKi7XvRueqimxDCbi3NJLsTn0a1G+BQz0URuSR5p31xm1X10t065z5zEIMG72AvBK2Rn15Auvaoat5/UTw==
X-MS-Exchange-Transport-CrossTenantHeadersStamped: PH0PR08MB10955
X-MS-Exchange-SkipListedInternetSender:
 ip=[40.93.1.73];domain=SJ0PR08CU001.outbound.protection.outlook.com
X-MS-Exchange-ExternalOriginalInternetSender:
 ip=[40.93.1.73];domain=SJ0PR08CU001.outbound.protection.outlook.com
X-MS-Exchange-Transport-CrossTenantHeadersStripped:
 SA2PEPF00001507.namprd04.prod.outlook.com
X-MS-PublicTrafficType: Email
X-MS-Office365-Filtering-Correlation-Id-Prvs:
	44134fdc-dad6-4e7d-2a4b-08de9f215c82
X-Microsoft-Antispam:
	BCL:0;ARA:13230040|704162111799003|1800799024|376014|7416014|14060799003|35042699022|36860700016|82310400026|156008|13003099007|56012099003|18002099003;
X-Microsoft-Antispam-Message-Info:
	=?us-ascii?Q?4RCrY0ZyGmVWTZM+ssOy3l5G9hiOoxBB9hbVFfVxNRVOACQABWa1oQ8w+SWu?=
 =?us-ascii?Q?YSj/iP2aSAOjQFK+eRd8X2fMakYdPbWIBrfYT/RLyK8QQBXaa1U3ztiuiz6J?=
 =?us-ascii?Q?2I2+rROL2um94qRfbKjcwlwTPQkFBr1hWtI6LTzJsT0KLyXYUNUKN9TEBQOO?=
 =?us-ascii?Q?W1lr+5BqEX6bZQ00KMAIJDFYkS5sRpvm02dI3XUAXNN3iMknsi5Spngk6m4O?=
 =?us-ascii?Q?0GKyKXx9C0ZDoWwiowhKaDgXrJxncMvOMGzgJ1y86xDyfzLmdRWohmv8RyCZ?=
 =?us-ascii?Q?C3XA7EM010VQCtr7uKPzRK6b8DrIIhEPz3YJLt6zkV6BvNPl9S34YdG6Sw5J?=
 =?us-ascii?Q?LCPRl2Lmh6XhTu35B6vUag5D6Neffr0yanYIyvAta+R9I064AJkkOC91N4Pz?=
 =?us-ascii?Q?MK647+OqR+cXNaarNkQwfaAEebufmRSNlm/VzqaUoaZxSPozrD8CK7NVUkMi?=
 =?us-ascii?Q?qJ80T2RQvmiOice/yMMg6UJF8Q0wWonhDujulajyTFbWk9v/vy9xZ5cmFmfB?=
 =?us-ascii?Q?KaS9pN2YRy/Wdn97sVItJ2b6c9k+ijLJaSFNN6zZThsqIY0UywqostWSOa3z?=
 =?us-ascii?Q?pzlb40ZhaXQbzwdPtpS5Qd3UNrbsz14ObRCTdBSIKTenX367b1YpIluIYDbb?=
 =?us-ascii?Q?cZhww8GewBteFqlB6LZrt8j9WWM8BNnGVXs5n9+zy9+VQ+gAhKeId+dnwW9i?=
 =?us-ascii?Q?r5wDFAmw0+CW5jNB52T8r9iMVSPUrWIyMeSI+n3M+babwiFigHU+VXXGUVbH?=
 =?us-ascii?Q?yrev4gpGSC7+/4U6LUQWKV9/sh1kCpO+5P0ard147u8uEtSHcl8y2otB+utR?=
 =?us-ascii?Q?y8THjqgzV4jISnNuGH2Si/e1IZpeILrGBSUECDg1zeM/+WrvajaCFJy0Cl3p?=
 =?us-ascii?Q?w8N4Tc3wzAxUdPlc5VInyl1FqCfo0jrSZU98lSYZWBsFZz4yQlEjCDZrptFy?=
 =?us-ascii?Q?Wmh6jINUGGo69S5eUkB13rHHGyMmujgAeHIG1UC0NEBpqP8Y1YFmB5+EyRPv?=
 =?us-ascii?Q?1PuIaXco+rxoIdkdFBD5qKe23P4GzX6f/v6QtOrbFgiQkKdSZRALiJxWV2cF?=
 =?us-ascii?Q?5rRlOknaaD+lntAGartik4uWtnRMN7tgMZOYktFcIYrBNCrDi6T4EEYDEyqs?=
 =?us-ascii?Q?6dCWEbL93hVqslufI60LkxbzzvQBH7ANTvN2eWiSaaxHCB5B2Bz19ms=3D?=
X-Forefront-Antispam-Report:
	CIP:4.79.107.243;CTRY:US;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:SJ0PR08CU001.outbound.protection.outlook.com;PTR:mail-sj0pr08cu00101.outbound.protection.outlook.com;CAT:NONE;SFS:(13230040)(704162111799003)(1800799024)(376014)(7416014)(14060799003)(35042699022)(36860700016)(82310400026)(156008)(13003099007)(56012099003)(18002099003);DIR:OUT;SFP:1102;
X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1
X-MS-Exchange-AntiSpam-MessageData-0:
	w5Dl3amvpy/karG7QPIgn0SDd3oIgyp8U0DbJgIEOkHT4tgfX40xoNW3gV0XyYrMOHRUOCKjn3bpxG9DhKG7Kc3HOxRXv8EKzoaQZYnIi+Iiz49840ZZUlA9TXaU1BLZHYc9Shzw/AdNpxGwwDU755bU+s2PE/8Y3Vyc/cSMI8ZHl1zGEOHdIiAV/msNGhriIdjK6ls38G3caddwLN++NJSW6UhsgbSKRCXRfwWvKjPrEHDOGcCnKtjpUHILyMjQ5Rba11pxwAkeO4g7ywwirvnU6KRq80DctBj6mSADKl+H+OqVyzZ75PWBuqPVjOrp2TLK4QSRN6HtBF8h9fGTHz3A6xUFbaxOGvIJjxRn8WbTpW6wQk4K/GyG6ueLjAguY/0geTmAn0X4Q9fg5i4Ap40E7cx9dKCB4+0sy4ed/TRJsBPgWnnzOM4Aul7YuCWO
X-OriginatorOrg: elektrobit.com
X-MS-Exchange-CrossTenant-OriginalArrivalTime: 20 Apr 2026 21:11:25.7094
 (UTC)
X-MS-Exchange-CrossTenant-Network-Message-Id: 7321a47b-d8a7-4ff4-3fa4-08de9f2161ff
X-MS-Exchange-CrossTenant-Id: e764c36b-012e-4216-910d-8fd16283182d
X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=e764c36b-012e-4216-910d-8fd16283182d;Ip=[4.79.107.243];Helo=[usbth1es003.ebgroup.elektrobit.com]
X-MS-Exchange-CrossTenant-AuthAs: Internal
X-MS-Exchange-CrossTenant-AuthSource: TreatMessagesAsInternal-SA2PEPF00001507.namprd04.prod.outlook.com
X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem
X-MS-Exchange-Transport-CrossTenantHeadersStamped: DS0PR08MB9112
X-purgate-ID: tlsNG-c1860d/1776719500-3A577DB1-B783FF80/0/0
X-purgate-type: clean
X-purgate-size: 9546

Hi all,

For the past few months, myself and Aqib Javid have been working to port
altp2m to ARM with support from Stewart Hildebrand and Stefano Stabellini.
At the recent Spring Xen Summit, Aqib and Stewart gave a presentation which
discussed the motivation behind this, along with an overview of the
rebasing and testing process. While this effort started as a rebase[1] of
the v5 patch series[2] by Sergej Proskurin and Tamas Lengyel, I have been
reworking the branch to make most of the altp2m code common between x86 and
ARM. This should address the major concerns that came up during review of
the original patch series. For a quick overview of altp2m functionality and
scope of the patch series, here's an excerpt from Sergej's cover letter:

> In this patch series, we provide an implementation of the altp2m
> subsystem for ARM. Our implementation is based on the altp2m subsystem for
> x86, providing additional --alternate-- views on the guest's physical
> memory by means of the ARM 2nd stage translation mechanism. The patches
> introduce new HVMOPs and extend the p2m subsystem. [...] To be more
> precise, altp2m allows to create and switch to additional p2m views (i.e.
> gfn to mfn mappings). These views can be manipulated and activated as will
> through the provided HVMOPs. In this way, the active guest instance in
> question can seamlessly proceed execution without noticing that anything
> has changed.

As of right now, I've reworked patch series up through the
HVMOP_altp2m_set_domain_state command and plan to continue implementing the
remaining altp2m features. I've continued the patch series versioning by
labeling my notes as v6, and the patch notes from v1-v5 have been preserved
where applicable. I am hoping for some feedback on the general approach
I've taken with this patch series, and I can incorporate any changes
requested into the actual patch series submission.

This is a pretty big patch series, so I've tried to make it as easy as
possible to follow. I've tried to minimize the number of changes in each
patch; there are quite a lot of patches so if it would be preferred to
combine some patches I can do so. Here is the general approach I used
throughout the patch series to turn x86 altp2m code into common altp2m
code with ARM support:

- Move function(s) from arch/x86/mm/altp2m.c to common/altp2m.c, gating
  declarations/definitions with #ifdef CONFIG_X86
- Add any additional features to ARM code needed to implement these
  functions
- Make any changes necessary to functions to support ARM, and remove #ifdef
  CONFIG_X86

This approach makes it possible to separate out code movement patches from
the actual changes needed to support ARM. Furthermore, each patch in the
patch series still compiles for both x86 and ARM.

Additionally, I've split the patch series into a number of "phases" to make
it easier to understand the context of each patch. Each patch description
indicates which phase it's a part of.
- Preparation (8 commits)
- Common do_altp2m_op (2 commits)
- get_domain_state (1 commit)
- altp2m_{init,teardown} routines (12 commits)
- altp2m_{get,set}_altp2m (4 commits)
  - Needed for altp2m_vcpu_{initialise,destroy}
- altp2m_vcpu_{initialise,destroy} (2 commits)
  - Needed for HVMOP_set_domain_state
- altp2m view visibility (5 commits)
  - Needed for altp2m_init_by_id, altp2m_flush
- altp2m_activate_altp2m (2 commits)
  - Needed for altp2m_init_by_id
- altp2m_init_by_id (2 commits)
  - Needed for HVMOP_altp2m_set_domain_state
- altp2m_reset_altp2m (2 commits)
  - Needed for altp2m_flush
- altp2m_flush (2 commits)
  - Needed for HVMOP_altp2m_set_domain_state
- set_domain_state (1 commit)

The code for this patch series can also be found on GitLab:
https://gitlab.com/xen-project/people/elektrobit/xen/-/tree/altp2m-arm-rework-rfc

Best,
Rose Spangler

[1] Rebase of original patch series:
https://gitlab.com/xen-project/people/elektrobit/xen/-/commits/altp2m-arm-rebase

[2] Original patch series:
v1: https://lore.kernel.org/xen-devel/20160704114605.10086-1-proskurin@sec.in.tum.de/
v2: https://lore.kernel.org/xen-devel/20160801171028.11615-1-proskurin@sec.in.tum.de/
v3: https://lore.kernel.org/xen-devel/20160816221714.22041-1-proskurin@sec.in.tum.de/
v4: https://lore.kernel.org/xen-devel/20170830183258.14612-1-proskurin@sec.in.tum.de/
v5 was never submitted to mailing list, but is available on GitHub:
https://github.com/sergej-proskurin/xen/tree/arm-altp2m-v5

(Resend due to threading issues in first send attempt)

Rose Spangler (38):
  altp2m: Add template common altp2m.c/altp2m.h
  altp2m: Move altp2m_active to common domain struct
  altp2m: Move altp2m_p2m to common domain struct
  x86/altp2m: Rename hvm_altp2m_supported to altp2m_supported
  altp2m: Move altp2m_supported to arch header
  arm/altp2m: Add template arch-specific altp2m.c/altp2m.h
  arm/altp2m: Introduce CONFIG_ALTP2M Kconfig option
  altp2m: Rename p2m_*_altp2m functions and move declarations out of
    p2m.h
  altp2m: Move do_altp2m_op to common code
  altp2m: Add ARM support to do_altp2m_op
  arm/altp2m: Add support for HVMOP_altp2m_get_domain_state
  x86/p2m: Move p2m_{init,free}_one declarations to arch header
  x86/altp2m: Add lock functions accessible from common code
  altp2m: Move altp2m_{init,teardown} to common code
  arm/p2m: Allocate hostp2m with xzalloc
  arm/p2m: Move hostp2m init/teardown to individual functions
  arm/p2m: Invalidate root page table entries and flush TLB in
    p2m_flush_table
  arm/altp2m: Add support for altp2m init/teardown routines
  altp2m: Move altp2m_{get,set}_altp2m to common code
  arm/altp2m: Add altp2m index to arch_vcpu
  altp2m: Add altp2m_set_vcpu_idx
  arm/altp2m: Add support for altp2m_{get,set}_altp2m
  altp2m: Move altp2m_vcpu_{initialise,destroy} to common code
  arm/altp2m: Add support for altp2m_vcpu_{initialise,destroy}
  arm/altp2m: Add altp2m view validity/visibility indicator
  altp2m: Add altp2m_view_is_{valid,visible}
  x86/altp2m: Add altp2m_set_view_visibility_locked
  arm/altp2m: Add altp2m_set_view_visibility{,_locked} support
  arm/altp2m: Add support for HVMOP_altp2m_set_visibility
  x86/altp2m: Add altp2m_activate_altp2m declaration to arch header
  arm/altp2m: Add support for altp2m_activate_altp2m
  altp2m: Move altp2m_init_by_id to common code
  arm/altp2m: Add support for altp2m_init_by_id
  x86/altp2m: Add altp2m_reset_altp2m declaration to arch header
  arm/altp2m: Add altp2m_reset_altp2m routine
  altp2m: Move altp2m_flush to common code
  arm/altp2m: Add support for altp2m_flush
  arm/p2m: Add support for HVMOP_altp2m_set_domain_state

Sergej Proskurin (5):
  arm/p2m: Cosmetic fix - substitute _gfn(ULONG_MAX) for INVALID_GFN
  arm/p2m: Change function prototype of p2m_alloc_table
  arm/p2m: Rename parameter in p2m_alloc_vmid
  arm/p2m: Change func prototype and impl of p2m_{alloc,free}_vmid
  arm/p2m: Introduce p2m_is_{hostp2m,altp2m}

 xen/arch/arm/Kconfig                     |  11 +
 xen/arch/arm/Makefile                    |   1 +
 xen/arch/arm/altp2m.c                    | 122 +++++
 xen/arch/arm/domain.c                    |   2 +-
 xen/arch/arm/hvm.c                       |   9 +
 xen/arch/arm/include/asm/Makefile        |   1 -
 xen/arch/arm/include/asm/altp2m.h        |  84 ++++
 xen/arch/arm/include/asm/domain.h        |  19 +-
 xen/arch/arm/include/asm/p2m.h           |  41 +-
 xen/arch/arm/mm.c                        |   2 +-
 xen/arch/arm/mmu/p2m.c                   | 162 ++++++-
 xen/arch/arm/p2m.c                       |  31 +-
 xen/arch/arm/traps.c                     |   2 +-
 xen/arch/x86/domain.c                    |   3 +-
 xen/arch/x86/hvm/emulate.c               |   1 +
 xen/arch/x86/hvm/hvm.c                   | 413 +----------------
 xen/arch/x86/hvm/monitor.c               |   3 +-
 xen/arch/x86/hvm/vmx/vmx.c               |   9 +-
 xen/arch/x86/include/asm/altp2m.h        | 115 ++++-
 xen/arch/x86/include/asm/domain.h        |   5 -
 xen/arch/x86/include/asm/hvm/hvm.h       |  11 -
 xen/arch/x86/include/asm/p2m.h           | 112 +----
 xen/arch/x86/mm/altp2m.c                 | 242 +++-------
 xen/arch/x86/mm/hap/hap.c                |  17 +-
 xen/arch/x86/mm/mem_access.c             |  22 +-
 xen/arch/x86/mm/mem_sharing.c            |   3 +-
 xen/arch/x86/mm/p2m-basic.c              |   7 +-
 xen/arch/x86/mm/p2m-ept.c                |  13 +-
 xen/arch/x86/mm/p2m-pt.c                 |   1 +
 xen/arch/x86/mm/p2m.c                    |   9 +-
 xen/arch/x86/mm/p2m.h                    |   6 -
 xen/common/Makefile                      |   1 +
 xen/common/altp2m.c                      | 551 +++++++++++++++++++++++
 xen/common/monitor.c                     |   1 +
 xen/common/vm_event.c                    |   2 +-
 xen/drivers/passthrough/arm/ipmmu-vmsa.c |   2 +-
 xen/drivers/passthrough/arm/smmu-v3.c    |   2 +-
 xen/drivers/passthrough/arm/smmu.c       |   2 +-
 xen/include/asm-generic/altp2m.h         |   5 +-
 xen/include/xen/altp2m.h                 |  98 ++++
 xen/include/xen/p2m-common.h             |   2 +-
 xen/include/xen/sched.h                  |   3 +
 42 files changed, 1330 insertions(+), 818 deletions(-)
 create mode 100644 xen/arch/arm/altp2m.c
 create mode 100644 xen/arch/arm/include/asm/altp2m.h
 create mode 100644 xen/common/altp2m.c
 create mode 100644 xen/include/xen/altp2m.h

-- 
2.34.1



From xen-devel-bounces@lists.xenproject.org Mon Apr 20 21:16:11 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 20 Apr 2026 21:16:11 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1287407.1567822 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wEvyQ-0003hP-Km; Mon, 20 Apr 2026 21:16:06 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1287407.1567822; Mon, 20 Apr 2026 21:16: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 1wEvyQ-0003gq-HN; Mon, 20 Apr 2026 21:16:06 +0000
Received: by outflank-mailman (input) for mailman id 1287407;
 Mon, 20 Apr 2026 21:13:12 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <Rose.Spangler@elektrobit.com>) id 1wEvvb-0003dD-PI
 for xen-devel@lists.xenproject.org; Mon, 20 Apr 2026 21:13:11 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wEvvZ-009PGD-Kh
 for xen-devel@lists.xenproject.org; Mon, 20 Apr 2026 23:13:11 +0200
Received: from [10.42.69.2] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <Rose.Spangler@elektrobit.com>)
 id 69e696e1-5cb7-0a2a0a5109dd-0a2a4502cc4c-8
 for <xen-devel@lists.xenproject.org>; Mon, 20 Apr 2026 23:13:11 +0200
Received: from [52.101.56.100]
 (helo=BN1PR04CU002.outbound.protection.outlook.com)
 by tlsNG-720697.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.1)
 (envelope-from <Rose.Spangler@elektrobit.com>)
 id 69e696e6-af86-0a2a45020019-346538647a89-3
 for <xen-devel@lists.xenproject.org>; Mon, 20 Apr 2026 23:13:11 +0200
Received: from SJ0PR05CA0037.namprd05.prod.outlook.com (2603:10b6:a03:33f::12)
 by DS0PR08MB10990.namprd08.prod.outlook.com (2603:10b6:8:2f1::11)
 with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9818.25; Mon, 20 Apr
 2026 21:13:06 +0000
Received: from SJ5PEPF000001F7.namprd05.prod.outlook.com
 (2603:10b6:a03:33f:cafe::69) by SJ0PR05CA0037.outlook.office365.com
 (2603:10b6:a03:33f::12) with Microsoft SMTP Server (version=TLS1_3,
 cipher=TLS_AES_256_GCM_SHA384) id 15.20.9791.48 via Frontend Transport; Mon,
 20 Apr 2026 21:13:06 +0000
Received: from usbth1es003.ebgroup.elektrobit.com (4.79.107.243) by
 SJ5PEPF000001F7.mail.protection.outlook.com (10.167.242.75) with Microsoft
 SMTP Server (version=TLS1_3, cipher=TLS_AES_256_GCM_SHA384) id 15.20.9791.48
 via Frontend Transport; Mon, 20 Apr 2026 21:13:05 +0000
Received: from usbth1es003 (localhost [127.0.0.1])
 by usbth1es003.ebgroup.elektrobit.com (Postfix) with SMTP id 4fzyrK1wX8z1wdP; 
 Mon, 20 Apr 2026 14:13:05 -0700 (PDT)
Received: from BL0PR07CU001.outbound.protection.outlook.com
 (mail-bl0pr07cu00102.outbound.protection.outlook.com [40.93.4.2])
 (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)
 key-exchange secp384r1 server-signature RSA-PSS (2048 bits) server-digest
 SHA256) (No client certificate requested)
 by usbth1es003.ebgroup.elektrobit.com (Postfix) with ESMTPS;
 Mon, 20 Apr 2026 14:13:04 -0700 (PDT)
Received: from BL1PR13CA0201.namprd13.prod.outlook.com (2603:10b6:208:2be::26)
 by LV2PR08MB972943.namprd08.prod.outlook.com (2603:10b6:408:3a0::20)
 with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9818.32; Mon, 20 Apr
 2026 21:12:59 +0000
Received: from MN1PEPF0000ECDA.namprd02.prod.outlook.com
 (2603:10b6:208:2be:cafe::59) by BL1PR13CA0201.outlook.office365.com
 (2603:10b6:208:2be::26) with Microsoft SMTP Server (version=TLS1_3,
 cipher=TLS_AES_256_GCM_SHA384) id 15.20.9791.48 via Frontend Transport; Mon,
 20 Apr 2026 21:12:59 +0000
Received: from denue6es012.ebgroup.elektrobit.com (213.95.148.172) by
 MN1PEPF0000ECDA.mail.protection.outlook.com (10.167.242.134) with Microsoft
 SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id
 15.20.9791.48 via Frontend Transport; Mon, 20 Apr 2026 21:12:59 +0000
Received: from ubuntu.localdomain (10.10.178.50) by
 denue6es012.ebgroup.elektrobit.com (10.243.160.140) with Microsoft SMTP
 Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id
 15.2.2562.35; Mon, 20 Apr 2026 23:12:56 +0200
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@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=elektrobit.com header.i="@elektrobit.com" header.h="From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck"; dkim=pass header.s=selector1 header.d=elektrobit.com header.i="@elektrobit.com" header.h="From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck"
ARC-Seal: i=2; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=pass;
 b=IrSVasPxxTL0ZoO04U3adNpaITcw0dKBtlYntQ5eok0bqKYlg01/5wdyS3NipqniU6dS7jY200+ihHSsNi1+7KxnncGaFdFDkdney/3aMCAwK5boTa7hjiodELdk6Yj+wgtC5KbQF5lHqn/Rs8Fzxu6o6YPTCSN9p35twZUaVidtyC12jPrzpaVrLU2JlgmipJ6oZMxPDCE3i2mjmYdpNsCZxMVKH1Zg0PDOMAOsyBcZCki/ayPXXgc9989eypsbUxOLzFO6FCDZ8vFk+GxI7eH4Aq8JUJKi44dWT27i5Evye+zqFsIoku+jhs8OeZQCG5eoa4pPp//ZwQZtcu3T/Q==
ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com;
 s=arcselector10001;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1;
 bh=RIbbeMLPJ1Oc8O3jfNscoU93ycEkxovMGroMGjaJzMA=;
 b=kx6JU8Vxw1NGJF2koco4PrqFYSbI+3hHE1NvOqRnlF0TtcO6+IUM3Zy94yYHtpf9uN6GcVPZlIFpVBOxV7NBQLbo6YtKkm0lG/hbrjmHvUud08+cg7KnJ/H0DC8yLiMROc9fvf20ZzwJwGmyCPj3cdQAyrW5taGbXrggXQLH0ekX5skzQQnA10xt+i/Ak1JuiLJ08Y0tLkRfe8gXmeyN03ajDGDVKSoYOrUC9k03TpeafWXK1cOBwsVr1qyzqgT7xjlNjEprcIC3/DEja7BrW0xXU0K6HgK4yQsXDm267IXjyPgtEReh+xPyJjITD619eH60J3k3H3BLhuohAuScwA==
ARC-Authentication-Results: i=2; mx.microsoft.com 1; spf=pass (sender ip is
 40.93.4.2) smtp.rcpttodomain=amd.com smtp.mailfrom=elektrobit.com; dmarc=pass
 (p=quarantine sp=none pct=100) action=none header.from=elektrobit.com;
 dkim=pass (signature was verified) header.d=elektrobit.com; arc=pass (0 oda=1
 ltdi=1 spf=[1,1,smtp.mailfrom=elektrobit.com]
 dmarc=[1,1,header.from=elektrobit.com])
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=elektrobit.com;
 s=selector1;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck;
 bh=RIbbeMLPJ1Oc8O3jfNscoU93ycEkxovMGroMGjaJzMA=;
 b=RAFtHgwZ8YEtMApgnUSi/BTrJoEf7v4+aFJI6DTEJj48uidy+UoyIZCgJyYMh9y3wuNyG1+rubU7DA0IVj9BxNZ0o9jScseIjxvzqfpZXFiYPWm8Lt5rHEEqbyVn99Ot8jCwVye12dK+LoSaFpfPNk9mYoL/BPgF8TGsr02+gPM=
X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 40.93.4.2)
 smtp.mailfrom=elektrobit.com; dkim=pass (signature was verified)
 header.d=elektrobit.com;dmarc=pass action=none header.from=elektrobit.com;
Received-SPF: Pass (protection.outlook.com: domain of elektrobit.com
 designates 40.93.4.2 as permitted sender) receiver=protection.outlook.com;
 client-ip=40.93.4.2; helo=BL0PR07CU001.outbound.protection.outlook.com; pr=C
ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none;
 b=Lmope0VixLC6eO48M+QJnuN1F4awexcIjSjvK7kqTbS4Vs11bnvMYY4fHQxrO7Z399pJhbCR/oihkQ131AqrI0lLAGvLPxAIiPU5ELv6mtKMNiJkMilM+yZr7OKZGiFuCJuOQD/UURDRCrq/M9Xszm/b+na3dWJ7pmitHm2hp5HzzYzLS1jR9N2MCc/4x7myAcHDAN2/Zfa7uaMQN9jXCCbzlTq+TbJ/3DQxiTU13uID5AO7UoGfPRXodgFoLscnRXYyps/8PIxzGASOaab3BH2XR/7DwxNCBIDB3HtFz1TGCjdYCEtGbjXvK3KZbpr4GTRe/5uS3wG13QocKGtizg==
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com;
 s=arcselector10001;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1;
 bh=RIbbeMLPJ1Oc8O3jfNscoU93ycEkxovMGroMGjaJzMA=;
 b=T0LCJB7rL/UY+egkfN296qSV9whVNTOg/bnzGkQZ3LjUK1m4t6rtX6sBfD+z61TCPwmxAP7CQW1wwqkTpt+Y2NHajbz5SbRudvkewKsUZtEpZcdXa7rP+lxmIv42qect0XbJgODdJwAojYjFIOXyaP0WkFjYhy67l4osCRA/4U6kWsP+NwxjXEpANgy2WXXcsNjwtUNsJX1qYlN9f2KtRcAILd+kKWmZCejUFVQOswPpe6EA27BAJskhY+Am7jwFL+FmqJCF1Tzva1vCE2u2PQfy9afvLWp/P988OfM7J5wbDUtnVsIsirQZWxieU8ERRs7HtA6CN72EQH1+JWEm3g==
ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass (sender ip is
 213.95.148.172) smtp.rcpttodomain=lists.xenproject.org
 smtp.mailfrom=elektrobit.com; dmarc=pass (p=quarantine sp=none pct=100)
 action=none header.from=elektrobit.com; dkim=none (message not signed);
 arc=none (0)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=elektrobit.com;
 s=selector1;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck;
 bh=RIbbeMLPJ1Oc8O3jfNscoU93ycEkxovMGroMGjaJzMA=;
 b=RAFtHgwZ8YEtMApgnUSi/BTrJoEf7v4+aFJI6DTEJj48uidy+UoyIZCgJyYMh9y3wuNyG1+rubU7DA0IVj9BxNZ0o9jScseIjxvzqfpZXFiYPWm8Lt5rHEEqbyVn99Ot8jCwVye12dK+LoSaFpfPNk9mYoL/BPgF8TGsr02+gPM=
X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 213.95.148.172)
 smtp.mailfrom=elektrobit.com; dkim=none (message not signed)
 header.d=none;dmarc=pass action=none header.from=elektrobit.com;
Received-SPF: Pass (protection.outlook.com: domain of elektrobit.com
 designates 213.95.148.172 as permitted sender)
 receiver=protection.outlook.com; client-ip=213.95.148.172;
 helo=denue6es012.ebgroup.elektrobit.com; pr=C
From: Rose Spangler <Rose.Spangler@elektrobit.com>
To: <xen-devel@lists.xenproject.org>
CC: Rose Spangler <Rose.Spangler@elektrobit.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.pau@citrix.com>, Stefano Stabellini <sstabellini@kernel.org>
Subject: [RFC PATCH v6 01/43] altp2m: Add template common altp2m.c/altp2m.h
Date: Mon, 20 Apr 2026 17:12:47 -0400
Message-ID: <20260420211247.208474-1-Rose.Spangler@elektrobit.com>
X-Mailer: git-send-email 2.34.1
In-Reply-To: <20260420211104.208444-1-Rose.Spangler@elektrobit.com>
References: <20260420211104.208444-1-Rose.Spangler@elektrobit.com>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit
Content-Type: text/plain
X-Originating-IP: [10.10.178.50]
X-ClientProxiedBy: denue6es012.ebgroup.elektrobit.com (10.243.160.140) To
 denue6es012.ebgroup.elektrobit.com (10.243.160.140)
X-EOPAttributedMessage: 1
X-MS-Exchange-SkipListedInternetSender:
 ip=[213.95.148.172];domain=denue6es012.ebgroup.elektrobit.com
X-MS-TrafficTypeDiagnostic:
	MN1PEPF0000ECDA:EE_|LV2PR08MB972943:EE_|SJ5PEPF000001F7:EE_|DS0PR08MB10990:EE_
X-MS-Office365-Filtering-Correlation-Id: 6e3a45e7-31d7-44a6-107f-08de9f219db3
X-SM-outgoing: yes
X-MS-Exchange-SenderADCheck: 1
X-MS-Exchange-AntiSpam-Relay: 0
X-Microsoft-Antispam-Untrusted:
 BCL:0;ARA:13230040|36860700016|1800799024|376014|82310400026|22082099003|18002099003|56012099003;
X-Microsoft-Antispam-Message-Info-Original:
 =?us-ascii?Q?q5q6TxtKB78aoiFGp0P1iHO626Hji1KpXr4f43/p4McS6reY1OnMtgvgjBGI?=
 =?us-ascii?Q?B7gFgvTMVVbZjTGpP/Gp3tKN+WEc0u698QGZwBtVbhHhSorjjWpT0vMnNfz1?=
 =?us-ascii?Q?dD/3gFB2Sewc72E6J04MHk5dA7XDoaR+kSmzQ8CjVPZVkPbcoYTdv+zXzLUy?=
 =?us-ascii?Q?LPprGGNRiGVA/gkDHPwSR6Or7Z0forACBq8gOsRGK4HZsFpEimF32dpfauFT?=
 =?us-ascii?Q?CT5Ampc62RwjEmuBTLHy0jwV7WI7N3OA4hYqYp3c5XWpBQYnfUqNeB67GEtG?=
 =?us-ascii?Q?mIDIOC9QlzCD3NWWvvjsc+7UNDqfR1j6e0XWBylGB1HAJlEVWGX7lMI1B043?=
 =?us-ascii?Q?H9p1MAP7lGvS2l29r4q9aLhngjHdMGNuxcDqwPWDdWR1/1EzJybXskWBoQwU?=
 =?us-ascii?Q?oZKCSwySdFgiSh044QWZ14EDlfTXMwCI9kRVDz+Qxsl5lASMf8VX1m0V5tB6?=
 =?us-ascii?Q?f+eXiTBCnf2b3oHyVcL0F7IUmkwTWgZigkZKxOS7MqVEeJhwwUvLrAkE6u9/?=
 =?us-ascii?Q?oO7fB3iKwtEQWyK8WVteaPXPFojKdEpGCyi7NtFUz/asBVwWYqFFSdj+/JAI?=
 =?us-ascii?Q?FUn81+OjzhfilJBbs6tpfWJTc1kulcGS7JAyvqvvtbKCZETRhePLo/XBJP4S?=
 =?us-ascii?Q?n+8Y7AjGujV7etTV7NHJ3TZkz5pJ6/SiqygCJyYkPiHDI3j/kqO1ElydWodv?=
 =?us-ascii?Q?v8xsEaDUk2/K5a2Gc+vHS1oCesXvjellY/nFB7fQiJ2d+BVtEIOxjtSBIUX1?=
 =?us-ascii?Q?VYbP4hz2Ix1dzeB8N7DNC5/t1KUGgo1I6JOys2/12wZcRYfOCgXAOtdiFrYc?=
 =?us-ascii?Q?q+cRNQ/4nz3dAn+OQqIFwlP9US1miMRD/2n/5Jf76MjGe6s8z5Qg89uvZRvG?=
 =?us-ascii?Q?LxmF8xI5b0BR2kNu4q4ze9py9n8qBGUdQU8yejq1Yh+vGzlmT5N0k5GY9L2Q?=
 =?us-ascii?Q?b1QEn69gKT2Z0E/RRJasuGiaP+uiUPLhL6TvYVtFug9QQnu+PLJ/zYHqQsuD?=
 =?us-ascii?Q?ckMPrfmgawTU0piDTeecz6gdz6x6OpIM4NNLSBRm8AJ6rc9tpoKkhp2nPL6P?=
 =?us-ascii?Q?GLZT5eLEIEQbq8Usg5kN8lrs1nmJQY/wFHE1TbF+ykKPJ2mDGeEiacO6ymI8?=
 =?us-ascii?Q?tcjzuC1J+0V5vapMuWm5cJ0xp8qIZw25tiubxs8T+ChUohVV09tqU664v+Uw?=
 =?us-ascii?Q?6PmsTlqSiLm5DT7WLhIYwNi6K/+zWpVWkUh+8PmSAU0NrlHZqJ1zeh57yRaa?=
 =?us-ascii?Q?wSbE1w4iL3mUxgh0Yy9X?=
X-Forefront-Antispam-Report-Untrusted:
 CIP:213.95.148.172;CTRY:DE;LANG:en;SCL:1;SRV:;IPV:CAL;SFV:NSPM;H:denue6es012.ebgroup.elektrobit.com;PTR:eth1-fw1-nbg6.eb.noris.de;CAT:NONE;SFS:(13230040)(36860700016)(1800799024)(376014)(82310400026)(22082099003)(18002099003)(56012099003);DIR:OUT;SFP:1102;
X-Exchange-RoutingPolicyChecked:
 lKo/hXNivnCF6PqNSCv2PLuy5EPWMWCcdbdiMY4dh4SgkzsIm3LkvO6WzY08Bs9QbalgotO8tJL0b1fD/rb0tnfMDCXrB86AALrpkfNgnT2E9P6PV030BsN2K2+i/A1W3XHNNNvk35zToN9R+XoB5IOfTa8d6P31BObu1kS2W7Thtrkn9GwJq1zZJjleeHP7zXmDfHZtBoCXlrosMa4FSrixC/FatRwFhXN+Qy2zPYyRARRdV0rPP+Jgk8pU0j/ShPjwAEA1Gk6cmeV6sbJZSZWszMJ+ZT/JHaNKnuIu3sr8mo7WTgsFWdfPns7+w4lG6J405i/9zfYMcE70KbkDSg==
X-MS-Exchange-Transport-CrossTenantHeadersStamped: LV2PR08MB972943
X-MS-Exchange-SkipListedInternetSender:
 ip=[40.93.4.2];domain=BL0PR07CU001.outbound.protection.outlook.com
X-MS-Exchange-ExternalOriginalInternetSender:
 ip=[40.93.4.2];domain=BL0PR07CU001.outbound.protection.outlook.com
X-MS-Exchange-Transport-CrossTenantHeadersStripped:
 SJ5PEPF000001F7.namprd05.prod.outlook.com
X-MS-PublicTrafficType: Email
X-MS-Office365-Filtering-Correlation-Id-Prvs:
	89f7e43d-b216-43a0-221b-08de9f21998f
X-Microsoft-Antispam:
	BCL:0;ARA:13230040|156008|1800799024|36860700016|35042699022|14060799003|376014|82310400026|56012099003|18002099003|22082099003;
X-Microsoft-Antispam-Message-Info:
	=?us-ascii?Q?MZ5FBXNJerC6s2Z4w++gFpk6Dmruxxtq0/we52UTO+v8nswj8o+cFN+pMORO?=
 =?us-ascii?Q?X9Vmr8nU4IzXNZEngTmXzWZBW54n836M0y8HtBDwG25GZ7qctnfDbElKvEat?=
 =?us-ascii?Q?3BiWTcjsHib+AhhbZj05WGO1NZqqdP71c5UQdi/jFLEGvdoFKY9DtTXnI1Xl?=
 =?us-ascii?Q?mORyOmIedZ/adNvOGv5q4T/G1eAtgqi9qZfG52Ey5MU4NuWNpIZkcIGlqV2p?=
 =?us-ascii?Q?LtcUot9Y8Vulo4W9uzuxH0fLZM1r2XJXkpp2Fwt9xk1kx1WcNmLtZgDoQ/3V?=
 =?us-ascii?Q?PQQHaYR3DDel/IDW427iIEQOYCRhxyPkNS0i391g6obvx2adyfCAe2xCdHX8?=
 =?us-ascii?Q?FY9h5/gbQ0Y5tzJW2ax59DkQ2VaoVOj/YCN7GzPaZ74e+7lbC1Y4UCTwqIjc?=
 =?us-ascii?Q?A6ADg97e1dJzss4XImAexuMNF4LHL0mBN8mFVh+ZkqIuokT6VmXCxCgcwO/9?=
 =?us-ascii?Q?/IrgtwZEm8N2Peuj9zEgekMtcEHelko8u35OcNwJNrKmbDfp0tufxTKKjpIy?=
 =?us-ascii?Q?XTybtggtb/5Rbg7Vuvhyuw2FaXfECu9a3VoCYZfjlPFADmrPKk43dlOesz+W?=
 =?us-ascii?Q?20BLwFbyWfP5oOdf0QaUw0bxJgZNAs4OlNZkT4lYAjMOQ4Un6IQfXNG49LmZ?=
 =?us-ascii?Q?xpWssGRHmA+noayhR7qj27M6+z/2cd+z/h/ZH5jABFWttqTWJoLKtWA31gJS?=
 =?us-ascii?Q?oMGAn3VGvdPgP69UWngVYq5Kvs+mCY5pdr32Xe6qsciAsM3jTIwnmEdn70JW?=
 =?us-ascii?Q?fBGvblqYHxRx+wd3bDdHngLGRB5VeDBDq/CfnNVptjI+00LtZjF1B4NAh+g/?=
 =?us-ascii?Q?qym+Cu0h6VvwK0tcXga1OICMPqcFO8ffbD9P6xjNy/cmarkrHHE5lLT3WH3s?=
 =?us-ascii?Q?f7Zf1/WmMZiGYpvsUlo+VGrg6efj2uRtic5UBZUwZ46LQfESU0pdX2PApXKy?=
 =?us-ascii?Q?d5mIsP8EXBUxw7Chamk/LYMtgJ2XfoyrPqPkGQ8BvMQofA0tyj5XTcwTlMBQ?=
 =?us-ascii?Q?BIZhz+8T0HVfSStr6XEY/I28u9fvfuFaREfyC+jXSS6bSX3n7iYx/PKZZYq+?=
 =?us-ascii?Q?vHQezNRnZelCHJp/+ekCw/HpocvYCJNWYI7iHv1dtQF6Sai0WvzACfvNyLKB?=
 =?us-ascii?Q?ywugcz1GXHmYzJ5sSbbTsg++EKH3cQtzm5tX8UuW+38XHdHIDI1bvvbiXhH2?=
 =?us-ascii?Q?NbI8/YDyuBXX8NXdj5eOpuAfA+ZgMZRLMCIYP5DbyuEPY9MHb1XZRdOHs1FD?=
 =?us-ascii?Q?N9YCEKO8RAChkEki8CJh?=
X-Forefront-Antispam-Report:
	CIP:4.79.107.243;CTRY:US;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:BL0PR07CU001.outbound.protection.outlook.com;PTR:mail-bl0pr07cu00102.outbound.protection.outlook.com;CAT:NONE;SFS:(13230040)(156008)(1800799024)(36860700016)(35042699022)(14060799003)(376014)(82310400026)(56012099003)(18002099003)(22082099003);DIR:OUT;SFP:1102;
X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1
X-MS-Exchange-AntiSpam-MessageData-0:
	sR4DaRhWQa2mcqpExYDlDxIe+ngN2Egy9Y3wNdm/wjqpV+CvE/M2eMarg4ozovSwsa4ANuH/W515C7KPwioqRxpZNQ7blV/2s9JMxKRAP0gEamnb2lp9BsC5FaeaOXovNtdJln3Nk1D4XRweRil/RaCkMljJJRNeIeCfmd9WWoo4zQWtEyF8T6Iyep+36PnAdbK9ASqRGhBhSNulNmpts2/hi2BOpt061aPpDMrtgLVj/hSWOT4nHgwxISr2PeZ7csWLKcYpDRguCasM30LQ+M4bEpJ5Y5LqHTWv0cn0k0mb0oM0p4kEdXUBWaJzCJDTB2Nlior5az2QtFA2/XUEzID1CPnb+nwP/Tyv7eiRgx4mHETiAVC5e4h1eqDh4iT9RP9rkDz4vaoLXZ/IBj82x7woIgHnjUvNri+N1yOh3L5Oe8GhDF+IV1j9y3Uj42TF
X-OriginatorOrg: elektrobit.com
X-MS-Exchange-CrossTenant-OriginalArrivalTime: 20 Apr 2026 21:13:05.9164
 (UTC)
X-MS-Exchange-CrossTenant-Network-Message-Id: 6e3a45e7-31d7-44a6-107f-08de9f219db3
X-MS-Exchange-CrossTenant-Id: e764c36b-012e-4216-910d-8fd16283182d
X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=e764c36b-012e-4216-910d-8fd16283182d;Ip=[4.79.107.243];Helo=[usbth1es003.ebgroup.elektrobit.com]
X-MS-Exchange-CrossTenant-AuthAs: Internal
X-MS-Exchange-CrossTenant-AuthSource: TreatMessagesAsInternal-SJ5PEPF000001F7.namprd05.prod.outlook.com
X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem
X-MS-Exchange-Transport-CrossTenantHeadersStamped: DS0PR08MB10990
X-purgate-ID: tlsNG-720697/1776719591-8A6C4161-059C4634/0/0
X-purgate-type: clean
X-purgate-size: 1801

This commit adds an empty common altp2m.c and altp2m.h file to be added to
in later commits. Creating a commit with just the empty file additions
makes it easier to reorder later commits which add to these files.

This commit can be squashed into the first commit which actually adds
something to altp2m.c/altp2m.h for the actual submission if that would be
preferred.

This is commit 1/8 of the preparation phase.

Signed-off-by: Rose Spangler <Rose.Spangler@elektrobit.com>
---
v6: Introduced this patch.
---
 xen/common/Makefile      |  1 +
 xen/common/altp2m.c      | 12 ++++++++++++
 xen/include/xen/altp2m.h |  5 +++++
 3 files changed, 18 insertions(+)
 create mode 100644 xen/common/altp2m.c
 create mode 100644 xen/include/xen/altp2m.h

diff --git a/xen/common/Makefile b/xen/common/Makefile
index 6018e256147f..dbe0094006df 100644
--- a/xen/common/Makefile
+++ b/xen/common/Makefile
@@ -1,3 +1,4 @@
+obj-$(CONFIG_ALTP2M) += altp2m.o
 obj-$(CONFIG_ARGO) += argo.o
 obj-y += bitmap.o
 obj-bin-$(CONFIG_SELF_TESTS) += bitops.init.o
diff --git a/xen/common/altp2m.c b/xen/common/altp2m.c
new file mode 100644
index 000000000000..1a4e102324d4
--- /dev/null
+++ b/xen/common/altp2m.c
@@ -0,0 +1,12 @@
+/* SPDX-License-Identifier: GPL-2.0-only */
+#include <xen/altp2m.h>
+
+/*
+ * Local variables:
+ * mode: C
+ * c-file-style: "BSD"
+ * c-basic-offset: 4
+ * tab-width: 4
+ * indent-tabs-mode: nil
+ * End:
+ */
diff --git a/xen/include/xen/altp2m.h b/xen/include/xen/altp2m.h
new file mode 100644
index 000000000000..520328fd3fa8
--- /dev/null
+++ b/xen/include/xen/altp2m.h
@@ -0,0 +1,5 @@
+/* SPDX-License-Identifier: GPL-2.0-only */
+#ifndef __XEN_ALTP2M_H__
+#define __XEN_ALTP2M_H__
+
+#endif /* __XEN_ALTP2M_H__ */
-- 
2.34.1



From xen-devel-bounces@lists.xenproject.org Mon Apr 20 21:17:12 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 20 Apr 2026 21:17:12 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1287427.1567836 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wEvzT-0004fC-3l; Mon, 20 Apr 2026 21:17:11 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1287427.1567836; Mon, 20 Apr 2026 21:17: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 1wEvzT-0004f5-0E; Mon, 20 Apr 2026 21:17:11 +0000
Received: by outflank-mailman (input) for mailman id 1287427;
 Mon, 20 Apr 2026 21:17:09 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <Rose.Spangler@elektrobit.com>) id 1wEvzR-0004ej-7w
 for xen-devel@lists.xenproject.org; Mon, 20 Apr 2026 21:17:09 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wEvzQ-001Ojx-Kr
 for xen-devel@lists.xenproject.org; Mon, 20 Apr 2026 23:17:08 +0200
Received: from [10.42.69.8] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <Rose.Spangler@elektrobit.com>)
 id 69e697d2-5cb7-0a2a0a5109dd-0a2a4508e948-6
 for <xen-devel@lists.xenproject.org>; Mon, 20 Apr 2026 23:17:08 +0200
Received: from [52.101.52.115]
 (helo=BL2PR02CU003.outbound.protection.outlook.com)
 by tlsNG-c1860d.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.1)
 (envelope-from <Rose.Spangler@elektrobit.com>)
 id 69e697d3-63b5-0a2a45080019-34653473f6b2-3
 for <xen-devel@lists.xenproject.org>; Mon, 20 Apr 2026 23:17:08 +0200
Received: from IA4P221CA0011.NAMP221.PROD.OUTLOOK.COM (2603:10b6:208:559::14)
 by CO6PR08MB7771.namprd08.prod.outlook.com (2603:10b6:303:146::17)
 with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9818.33; Mon, 20 Apr
 2026 21:17:00 +0000
Received: from BL6PEPF0002256E.namprd02.prod.outlook.com
 (2603:10b6:208:559:cafe::77) by IA4P221CA0011.outlook.office365.com
 (2603:10b6:208:559::14) with Microsoft SMTP Server (version=TLS1_3,
 cipher=TLS_AES_256_GCM_SHA384) id 15.20.9791.48 via Frontend Transport; Mon,
 20 Apr 2026 21:17:00 +0000
Received: from usbth1es003.ebgroup.elektrobit.com (4.79.107.243) by
 BL6PEPF0002256E.mail.protection.outlook.com (10.167.249.36) with Microsoft
 SMTP Server (version=TLS1_3, cipher=TLS_AES_256_GCM_SHA384) id 15.20.9791.48
 via Frontend Transport; Mon, 20 Apr 2026 21:16:59 +0000
Received: from usbth1es003 (localhost [127.0.0.1])
 by usbth1es003.ebgroup.elektrobit.com (Postfix) with SMTP id 4fzywq0D59z1wdP; 
 Mon, 20 Apr 2026 14:16:59 -0700 (PDT)
Received: from DM2PR04CU003.outbound.protection.outlook.com
 (mail-dm2pr04cu00300.outbound.protection.outlook.com [40.93.13.56])
 (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)
 key-exchange secp384r1 server-signature RSA-PSS (2048 bits) server-digest
 SHA256) (No client certificate requested)
 by usbth1es003.ebgroup.elektrobit.com (Postfix) with ESMTPS;
 Mon, 20 Apr 2026 14:16:58 -0700 (PDT)
Received: from CH0P223CA0024.NAMP223.PROD.OUTLOOK.COM (2603:10b6:610:116::12)
 by DM6PR08MB6427.namprd08.prod.outlook.com (2603:10b6:5:1e2::15) with
 Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9818.32; Mon, 20 Apr
 2026 21:16:50 +0000
Received: from DS3PEPF0000C380.namprd04.prod.outlook.com
 (2603:10b6:610:116:cafe::73) by CH0P223CA0024.outlook.office365.com
 (2603:10b6:610:116::12) with Microsoft SMTP Server (version=TLS1_3,
 cipher=TLS_AES_256_GCM_SHA384) id 15.20.9791.48 via Frontend Transport; Mon,
 20 Apr 2026 21:16:50 +0000
Received: from denue6es012.ebgroup.elektrobit.com (213.95.148.172) by
 DS3PEPF0000C380.mail.protection.outlook.com (10.167.23.10) with Microsoft
 SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id
 15.20.9791.48 via Frontend Transport; Mon, 20 Apr 2026 21:16:49 +0000
Received: from ubuntu.localdomain (10.10.178.50) by
 denue6es012.ebgroup.elektrobit.com (10.243.160.140) with Microsoft SMTP
 Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id
 15.2.2562.35; Mon, 20 Apr 2026 23:16:46 +0200
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@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=elektrobit.com header.i="@elektrobit.com" header.h="From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck"; dkim=pass header.s=selector1 header.d=elektrobit.com header.i="@elektrobit.com" header.h="From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck"
ARC-Seal: i=2; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=pass;
 b=vLQz09pz+NyPanAdtgFij9TJzvBzdy0+P/vwjYQOrLV/kFPAHQpF2IT/gEhTruz9xIvC8s8a/mnhCtitECQ5Zu1yyGeM6B64JiL0VSWYVndqp5LUYDfeQHYV7hDQC0MMdwJqG9Ineyva2Th+ep2KGNY07UbQJ3V/W8Z3Bd/14+ixijAIU8hUsQk4LAL3WTNn5swf4U+VWlKjAolPPSOjmK1Ux2wnsmWvaUt/sEe7SRkaoqYrOqYj37e6Zct6VvqKDmL4YxnFC5nGouj5R4GkaP9yHQV75pXIMouBehFRHs+sWp7TgSCtX1vHqKpqU3Oh4Ikc1nOVwODdpPc3c3Qzgg==
ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com;
 s=arcselector10001;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1;
 bh=ZmKInt9aDaXWoQsf+7PgzNCnu/gQkWKtbvxoqa67GlM=;
 b=ufgH+CXcoF0yWIq3DM9h9IWBMbMUpq7izr7kDXcQk4jae6/K4fFxOK2uXz+xvY5qifftQpAlLMD7LSNuQhFWyFeDUFR0ManguOER11F9d/26WGV3KNR0MFoYeQiT2zMwnuNc981yVQQSjxxi2SAl+jt2aL5a998IsdG8YVRoYklKVr8fOnJvqXKBj+XtLzMVxXhgd4vuceOdse8fdTI8ah6WUPg3Tp4gsU1GkSuSRlTaqQO/JFhdOdCqUgJDQjAeAaQ2ZNN3AcF6Vp6xz5whl3wQ2Ghg5MqX2kmwRWyN1RKMVrt4RyUiU7Hpd94YLVkkWRAg5unLePpMjsil79aQyw==
ARC-Authentication-Results: i=2; mx.microsoft.com 1; spf=pass (sender ip is
 40.93.13.56) smtp.rcpttodomain=amd.com smtp.mailfrom=elektrobit.com;
 dmarc=pass (p=quarantine sp=none pct=100) action=none
 header.from=elektrobit.com; dkim=pass (signature was verified)
 header.d=elektrobit.com; arc=pass (0 oda=1 ltdi=1
 spf=[1,1,smtp.mailfrom=elektrobit.com]
 dmarc=[1,1,header.from=elektrobit.com])
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=elektrobit.com;
 s=selector1;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck;
 bh=ZmKInt9aDaXWoQsf+7PgzNCnu/gQkWKtbvxoqa67GlM=;
 b=ZrrjsmH0/qMv+jCvuokVKIY1vfjuElv4IKGECdYIv9R1KE/DdmX1fDSt0CVEiao7VIisW+Pp+UHQriL2t2QrUj9MvX9fIOHn2kdobzvXHhmcEOopLzGkSkgZWo9riQuKhbAD5/lKuJdh6DoJUuDZ6FjUcejC3AAyGIQdfZjVutI=
X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 40.93.13.56)
 smtp.mailfrom=elektrobit.com; dkim=pass (signature was verified)
 header.d=elektrobit.com;dmarc=pass action=none header.from=elektrobit.com;
Received-SPF: Pass (protection.outlook.com: domain of elektrobit.com
 designates 40.93.13.56 as permitted sender) receiver=protection.outlook.com;
 client-ip=40.93.13.56; helo=DM2PR04CU003.outbound.protection.outlook.com;
 pr=C
ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none;
 b=lKIWARuCbhk8wvtUrtNczTDXmg8QuCy8FdVrz57grR1Ry5l9RXVkd9Ll9Fu49FUcyxWSwoD6d66KBplrQTOGuZ5383VsHA5oErVmYK115RJsUCY0g0Oju8DJpzs/ZS4pWqqsVDbo+bVd5ExR2KDuP5Se+O/gEbcnmZXFWPLF7NrJIdnBUCXdT9JDUvegXLU3nDs/wOFNDt0k3H8Qn6rLvWtAhwlUDDZVby1n+1Q3dkaJPGTR0yLUU3A8DYdSqjdWAxiiAahnbsuCS/oHCX6pzXW0c2quh4RFaGubtNwlK4KwTO8zjLrW4oPV+gB8/+2lzpJHvvwuUqKzPUjZYvpr5A==
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com;
 s=arcselector10001;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1;
 bh=ZmKInt9aDaXWoQsf+7PgzNCnu/gQkWKtbvxoqa67GlM=;
 b=bhPIghia8KevM83yyJXl8AjBr/f/ULB5XfhUDoriKO+FuCUSc/U0HD0Hn5N5j+eYrYxO1DxIVkVudB95vYKcgim0ziSolWDNzInJY+9eOQaBr3vRv9kKYx/3p0t8xAmmDfKbi/yprFREqDJcTpH3ISHCDma0oKv/LMSy3Hhxo6sVeQwI373P8HgDCQYUhq/CyMrGdsKYMLS4Fj28marwRTR9Bv1wbeAFZv7tyKo+W6tusN4QijAxY8epFbrUgNgL8a1u0u6q2j2R5J+p+T+rqDjJKuh3Z48tZvaqnbM/lQVDIpjQMB6oAhjmipH1uSlJEsn7hGCfJlznMqndRcMAIg==
ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass (sender ip is
 213.95.148.172) smtp.rcpttodomain=lists.xenproject.org
 smtp.mailfrom=elektrobit.com; dmarc=pass (p=quarantine sp=none pct=100)
 action=none header.from=elektrobit.com; dkim=none (message not signed);
 arc=none (0)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=elektrobit.com;
 s=selector1;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck;
 bh=ZmKInt9aDaXWoQsf+7PgzNCnu/gQkWKtbvxoqa67GlM=;
 b=ZrrjsmH0/qMv+jCvuokVKIY1vfjuElv4IKGECdYIv9R1KE/DdmX1fDSt0CVEiao7VIisW+Pp+UHQriL2t2QrUj9MvX9fIOHn2kdobzvXHhmcEOopLzGkSkgZWo9riQuKhbAD5/lKuJdh6DoJUuDZ6FjUcejC3AAyGIQdfZjVutI=
X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 213.95.148.172)
 smtp.mailfrom=elektrobit.com; dkim=none (message not signed)
 header.d=none;dmarc=pass action=none header.from=elektrobit.com;
Received-SPF: Pass (protection.outlook.com: domain of elektrobit.com
 designates 213.95.148.172 as permitted sender)
 receiver=protection.outlook.com; client-ip=213.95.148.172;
 helo=denue6es012.ebgroup.elektrobit.com; pr=C
From: Rose Spangler <Rose.Spangler@elektrobit.com>
To: <xen-devel@lists.xenproject.org>
CC: Rose Spangler <Rose.Spangler@elektrobit.com>, Jan Beulich
	<jbeulich@suse.com>, Andrew Cooper <andrew.cooper3@citrix.com>,
	=?UTF-8?q?Roger=20Pau=20Monn=C3=A9?= <roger.pau@citrix.com>, 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>, Tamas K Lengyel <tamas@tklengyel.com>
Subject: [RFC PATCH v6 02/43] altp2m: Move altp2m_active to common domain struct
Date: Mon, 20 Apr 2026 17:16:37 -0400
Message-ID: <20260420211637.208503-1-Rose.Spangler@elektrobit.com>
X-Mailer: git-send-email 2.34.1
In-Reply-To: <20260420211104.208444-1-Rose.Spangler@elektrobit.com>
References: <20260420211104.208444-1-Rose.Spangler@elektrobit.com>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit
Content-Type: text/plain
X-Originating-IP: [10.10.178.50]
X-ClientProxiedBy: denue6es012.ebgroup.elektrobit.com (10.243.160.140) To
 denue6es012.ebgroup.elektrobit.com (10.243.160.140)
X-EOPAttributedMessage: 1
X-MS-Exchange-SkipListedInternetSender:
 ip=[213.95.148.172];domain=denue6es012.ebgroup.elektrobit.com
X-MS-TrafficTypeDiagnostic:
	DS3PEPF0000C380:EE_|DM6PR08MB6427:EE_|BL6PEPF0002256E:EE_|CO6PR08MB7771:EE_
X-MS-Office365-Filtering-Correlation-Id: c2abedaa-3679-4253-044c-08de9f22294e
X-SM-outgoing: yes
X-MS-Exchange-SenderADCheck: 1
X-MS-Exchange-AntiSpam-Relay: 0
X-Microsoft-Antispam-Untrusted:
 BCL:0;ARA:13230040|704162011799003|36860700016|1800799024|7416014|376014|82310400026|13003099007|56012099003|22082099003|18002099003;
X-Microsoft-Antispam-Message-Info-Original:
 =?us-ascii?Q?pEa8Wb6AONkw9QreZy8l6bCSiRwux4cPULYgbCUip+M0JUlmBhF9Zeike9KC?=
 =?us-ascii?Q?eAQPiJBroxIs8/BeeNSWU1zZXy/desFf+FzQzlMEzd8LPjZwFrF+yKT8XGqf?=
 =?us-ascii?Q?mNPq4Hm+Jq0Aij4VtTLdzTANdwFodXNg4R1zMaP6ytdQvEaoHRoiQxpB0GQm?=
 =?us-ascii?Q?QrOVWxmM3buoElZ05iv3OSqpenZQseM25/X3WJ/qTLKlCCuYy1Dm+FplW+R7?=
 =?us-ascii?Q?QEn0ATZLDpTxFlsSs3G7EjscgcPNvZkjS3DYp4AxoY+g99b/Hr1cC5s7UZML?=
 =?us-ascii?Q?Vs6cqEavrR13/HrvJVH4qtBSQO3Tf28kFo87FfXIcIwiQZegA8aQ/tA6l0O9?=
 =?us-ascii?Q?KEaILhRMmJMjILP1I5rZCIcb6iV5KuRLd4ssGKPKQVff8Zty4lzh9+0OTgXa?=
 =?us-ascii?Q?k/bLN1z8rur0kaw/t4y5kpcdqkyeln7hFEv0i9fNfmV9vXWLy0xBh44/SWp/?=
 =?us-ascii?Q?8hcQPdrKex/BTLM1dl8Ye3EvbHdSSVr311Jt5sx9cQWTu46zDZxJ5HudLt3g?=
 =?us-ascii?Q?/j/PR32ULmApHKFtioC7s5OuFivy+pW9xVRTwetVSJ+V4geQOuV25y78FxAk?=
 =?us-ascii?Q?fHKL7Gvgoz/FZ0iFUNenOvwSNXNeAHUwEC4ZDbSbS9wJMbrZJzJ7vCrub1Ak?=
 =?us-ascii?Q?dTLRjVHkiqlZdUyRa9yZUU6NYHPR980WKqXoG+wsA23enD/PiVRCU4yKPI73?=
 =?us-ascii?Q?xKYEVSzbQ3wzba/VBAXem3gEPYVgyc6AxGL1bVPmbcq25coe450/O0qj3yeO?=
 =?us-ascii?Q?DyFIpULNnLMLordYf9/XH2jnmQKhtO1/+2FocDoYbMY0NUecrpiU/8Uj58eP?=
 =?us-ascii?Q?AfA7Wb2SPuASzSo5iPGExtywpFhZZtgnQlS72+YvDZzRiI1GiPRZJr3Z+fX6?=
 =?us-ascii?Q?fEhOgvLhXAOK0ohlheZep1p8N5Lv69kvMWALoZfR4iEXSyFlFn4rIqogSI4W?=
 =?us-ascii?Q?wFEpiYPbYKqP+dUm00+i184Z2jNWdZnWGjr2Xs/8+U12ZboosPfQsCvtCOG4?=
 =?us-ascii?Q?MM6rw452obWFgDSFFwRM2grDKc5ie8M6Ry0Rq/Ou+5lU95Hg8Wp0P3XzWRwA?=
 =?us-ascii?Q?ep1Lzt9DRkMe0G/8Mkv6dDnQ3+o2QUU0C+b7/c5kB2fKjWAK2WdCWHuq+HmV?=
 =?us-ascii?Q?i67NYlgt9KaP1+gbPpgdAqXfIeLceBl6xg=3D=3D?=
X-Forefront-Antispam-Report-Untrusted:
 CIP:213.95.148.172;CTRY:DE;LANG:en;SCL:1;SRV:;IPV:CAL;SFV:NSPM;H:denue6es012.ebgroup.elektrobit.com;PTR:eth1-fw1-nbg6.eb.noris.de;CAT:NONE;SFS:(13230040)(704162011799003)(36860700016)(1800799024)(7416014)(376014)(82310400026)(13003099007)(56012099003)(22082099003)(18002099003);DIR:OUT;SFP:1102;
X-Exchange-RoutingPolicyChecked:
 Yf7W7J+NiaMUSzHGE7oy95cHoYYvo9MRhchp9I9t6aAaWQuvagW2qiIzLndtprhHJic/p1pbU60upEt3TVbX9fHs3UvfY0NUvFqlY6e1VxFDivlbQXc3K3lL77UaMkMOYgMWe0jVC/wgOROHYP3uaujiz4mNjVtlLHZKcw/q6q+z7cK/TDvE7y7A79cBEy6a+z5ry9wPp18HCCy/L6n0tFTizMpbUaZiKzmFibRiPO25PG+wLnZ6hhDJz5/R4irMeKL6302QH/2iQpnQJ72ILwku30de/l1nd2hYazRMK66K/lee9wSwITWolqNptFoJFPnw9Pm7BiMHyfmjbVkZcQ==
X-MS-Exchange-Transport-CrossTenantHeadersStamped: DM6PR08MB6427
X-MS-Exchange-SkipListedInternetSender:
 ip=[40.93.13.56];domain=DM2PR04CU003.outbound.protection.outlook.com
X-MS-Exchange-ExternalOriginalInternetSender:
 ip=[40.93.13.56];domain=DM2PR04CU003.outbound.protection.outlook.com
X-MS-Exchange-Transport-CrossTenantHeadersStripped:
 BL6PEPF0002256E.namprd02.prod.outlook.com
X-MS-PublicTrafficType: Email
X-MS-Office365-Filtering-Correlation-Id-Prvs:
	f794ac8f-77eb-4c74-03d2-08de9f2222f9
X-Microsoft-Antispam:
	BCL:0;ARA:13230040|704162011799003|36860700016|1800799024|376014|7416014|14060799003|35042699022|82310400026|156008|13003099007|56012099003|22082099003|18002099003;
X-Microsoft-Antispam-Message-Info:
	=?us-ascii?Q?ByFgasog3piOtg/wqBB9d2Gfj1ZM4z/3KQGvC2OpsGEMgPc3Py7F1OIbXsZy?=
 =?us-ascii?Q?+Q2arSH4IQkG2uIcoUAbQEVa9H8gBH35MFoh+BOuLOdRc5qwJGd5uOcTPLIz?=
 =?us-ascii?Q?A4/FrWCVsSaoae34J+nQiMaNKFuaD5k6Ai9XmOHVakzpaGjp2ENVJnL7YXzd?=
 =?us-ascii?Q?tAYNX5GrDJG1frYVE7N8Hgu2Yj4vxhDX75MAt2H6/RWu17MwG5TzIcPaCHhi?=
 =?us-ascii?Q?XgcQeHkIUnhBOfPqS21yNBM5qDbRa7FEf83hnwFuGhU/PgOZ7I4M3ipgynwk?=
 =?us-ascii?Q?jhk6psEC3Z0S6RIn72gFDhshnZDnWpKOJtZOOSD4e+0TBkn8AaMKzwgYPKBh?=
 =?us-ascii?Q?mHlUH37Ij4Knxhbq++sksDgUByDUbxosmb/wKOEMHoIp1Rt0urT1nYhdduaV?=
 =?us-ascii?Q?y2g2E8cPpmgoH5oZ+tM45TcORQt3eVTRu00D0GjMGFq96TdQr+6CRtySJpeY?=
 =?us-ascii?Q?QV6xe71tB1UMRdScV7h/XSBvul2DyhHUmTP0GDExuZfg1smcMDtOaxdX4+pw?=
 =?us-ascii?Q?yQ/cos/M5CS3Jf+FMuGlrR0eTUFKpNsRJKV/Px/BHOhVFkLy6VeFhVTPrlEw?=
 =?us-ascii?Q?p2nfxM8jaO5WDVST3wvTjI+Kph1pZ6iH0075h8tntrYhry81HCtE+LENav7U?=
 =?us-ascii?Q?G/wW2OJq/QPCku2CcP/g9vLUmd7ncqmEgh+K4iw9S+xdFIsD9sCiJhS9lQMe?=
 =?us-ascii?Q?2b0OkSt47Y9JhmgxsAZvzNRBxAHEfjedMHvlqQR2sk0Zm0TOfwEdUa1ui1lR?=
 =?us-ascii?Q?qy0VvXDnOwnPscVvpmFWlzgg2uaVesUeqbkuD81A9z0rPVY1sAmns8t+9/li?=
 =?us-ascii?Q?dX9z3qPJFTeNDh8toOWjuBRz0Vw4hAL6AokCBB4+1JusR+4u6S7Re7W65dK1?=
 =?us-ascii?Q?l1mt1RfpEvXiSJsN+xeZyAyGiphC8xWWBPioYTZ+9ewX03HTHI1iUvCv/3bG?=
 =?us-ascii?Q?nv8XPoEoFxGwPfFE7c5MIEEd6/nvxkEFk5CPPfR6yDW4XT9u4n7Xc3UJQZT4?=
 =?us-ascii?Q?dBXECCrsp+G6FMFD7e3hKStJJruXS4nN8pHtAvstP0tFuywNs49bJm7ov0Ig?=
 =?us-ascii?Q?CcFUZE+sSkjvEwPN2qoM64jSLmsWKjvo0F8r1RutrzvJlIPm85qPkOuKL6R+?=
 =?us-ascii?Q?oqbULBktRFF26ok9inVpoCecJwnBzdyeng=3D=3D?=
X-Forefront-Antispam-Report:
	CIP:4.79.107.243;CTRY:US;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:DM2PR04CU003.outbound.protection.outlook.com;PTR:mail-dm2pr04cu00300.outbound.protection.outlook.com;CAT:NONE;SFS:(13230040)(704162011799003)(36860700016)(1800799024)(376014)(7416014)(14060799003)(35042699022)(82310400026)(156008)(13003099007)(56012099003)(22082099003)(18002099003);DIR:OUT;SFP:1102;
X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1
X-MS-Exchange-AntiSpam-MessageData-0:
	ZGnHesQTMak874m5yD+kvevsHbLvRsxZhIwOmSnkNxNyQii/+xAwvr4cSbI2IFTSEqnroZ6d9xQf7m5OhJXLVwPZbXw2lyOX+xJZgpAOQH3N8VAMLms5fsthHvpMBoex0LL2OhTj5oLsa84V+hiqTto521Dx4KR0E321oPXJ5RBPni5sM6gB32+XTuCVexVAUMlR2HzH7BDN7s4wb6oUUA3H86On2/x7lvbK1lUXo6mq19edEVCYhw8OhykL9ZtKv42PEbj7etMv27L8xy/UYH3ym1xeTWXHMuGtL+cKWgWpcVvki41lOIr5Ms7c/WgDA3TsUS4GHFRV6+gsCGT0lT2eKBnXOlfq1iy67+mmtQN5jkZMcPgr0LyNW3IMyQHyVuz5B+ihYw3u2/56YCwS1AlsISI0c2yl9nTuVNHvfn1cWZYAsUWh2pTpD+K3l1Y0
X-OriginatorOrg: elektrobit.com
X-MS-Exchange-CrossTenant-OriginalArrivalTime: 20 Apr 2026 21:16:59.9803
 (UTC)
X-MS-Exchange-CrossTenant-Network-Message-Id: c2abedaa-3679-4253-044c-08de9f22294e
X-MS-Exchange-CrossTenant-Id: e764c36b-012e-4216-910d-8fd16283182d
X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=e764c36b-012e-4216-910d-8fd16283182d;Ip=[4.79.107.243];Helo=[usbth1es003.ebgroup.elektrobit.com]
X-MS-Exchange-CrossTenant-AuthAs: Internal
X-MS-Exchange-CrossTenant-AuthSource: TreatMessagesAsInternal-BL6PEPF0002256E.namprd02.prod.outlook.com
X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem
X-MS-Exchange-Transport-CrossTenantHeadersStamped: CO6PR08MB7771
X-purgate-ID: tlsNG-c1860d/1776719828-C2368DB1-EB01C23D/0/0
X-purgate-type: clean
X-purgate-size: 10620

This commit moves altp2m_active from arch_domain on x86 to the common
domain struct. Similarly to nr_altp2m, this is not an arch-specific value.
Moving it to common code allows the common altp2m routines introduced later
in this patch series to operate on altp2m_active without needing an
altp2m_active member on arch_domain for each architecture supporting
altp2m.

This is commit 2/8 of the preparation phase.

This commit is a refactor, and no change in functionality is intended.

Signed-off-by: Rose Spangler <Rose.Spangler@elektrobit.com>
---
v6: Introduced this patch.
---
 xen/arch/x86/hvm/emulate.c        |  1 +
 xen/arch/x86/hvm/hvm.c            | 11 ++++++-----
 xen/arch/x86/hvm/monitor.c        |  1 +
 xen/arch/x86/hvm/vmx/vmx.c        |  1 +
 xen/arch/x86/include/asm/altp2m.h | 11 -----------
 xen/arch/x86/include/asm/domain.h |  2 --
 xen/arch/x86/mm/altp2m.c          |  1 +
 xen/arch/x86/mm/hap/hap.c         |  5 +++--
 xen/arch/x86/mm/mem_access.c      |  1 +
 xen/arch/x86/mm/mem_sharing.c     |  1 +
 xen/arch/x86/mm/p2m-ept.c         |  1 +
 xen/arch/x86/mm/p2m-pt.c          |  1 +
 xen/arch/x86/mm/p2m.c             |  1 +
 xen/common/monitor.c              |  1 +
 xen/include/asm-generic/altp2m.h  |  8 --------
 xen/include/xen/altp2m.h          | 19 +++++++++++++++++++
 xen/include/xen/sched.h           |  2 ++
 17 files changed, 40 insertions(+), 28 deletions(-)

diff --git a/xen/arch/x86/hvm/emulate.c b/xen/arch/x86/hvm/emulate.c
index f3aae158e9f8..9a9b89a232e6 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/altp2m.h>
 #include <xen/init.h>
 #include <xen/iocap.h>
 #include <xen/ioreq.h>
diff --git a/xen/arch/x86/hvm/hvm.c b/xen/arch/x86/hvm/hvm.c
index 4a81afce02e7..86c12c0d1ef4 100644
--- a/xen/arch/x86/hvm/hvm.c
+++ b/xen/arch/x86/hvm/hvm.c
@@ -7,6 +7,7 @@
  * Copyright (c) 2008, Citrix Systems, Inc.
  */
 
+#include <xen/altp2m.h>
 #include <xen/console.h>
 #include <xen/cpu.h>
 #include <xen/domain.h>
@@ -4612,7 +4613,7 @@ static int do_altp2m_op(
 
     if ( (a.cmd != HVMOP_altp2m_get_domain_state) &&
          (a.cmd != HVMOP_altp2m_set_domain_state) &&
-         !d->arch.altp2m_active )
+         !d->altp2m_active )
     {
         rc = -EOPNOTSUPP;
         goto out;
@@ -4657,11 +4658,11 @@ static int do_altp2m_op(
         if ( rc )
             break;
 
-        ostate = d->arch.altp2m_active;
-        d->arch.altp2m_active = !!a.u.domain_state.state;
+        ostate = d->altp2m_active;
+        d->altp2m_active = !!a.u.domain_state.state;
 
         /* If the alternate p2m state has changed, handle appropriately */
-        if ( d->arch.altp2m_active != ostate &&
+        if ( d->altp2m_active != ostate &&
              (ostate || !(rc = p2m_init_altp2m_by_id(d, 0))) )
         {
             for_each_vcpu( d, v )
@@ -4676,7 +4677,7 @@ static int do_altp2m_op(
                 p2m_flush_altp2m(d);
         }
         else if ( rc )
-            d->arch.altp2m_active = false;
+            d->altp2m_active = false;
 
         domain_unpause_except_self(d);
         break;
diff --git a/xen/arch/x86/hvm/monitor.c b/xen/arch/x86/hvm/monitor.c
index d22a2e464460..84c1c2234ca9 100644
--- a/xen/arch/x86/hvm/monitor.c
+++ b/xen/arch/x86/hvm/monitor.c
@@ -22,6 +22,7 @@
  * this program; If not, see <http://www.gnu.org/licenses/>.
  */
 
+#include <xen/altp2m.h>
 #include <xen/vm_event.h>
 #include <xen/mem_access.h>
 #include <xen/monitor.h>
diff --git a/xen/arch/x86/hvm/vmx/vmx.c b/xen/arch/x86/hvm/vmx/vmx.c
index 269ca5643346..ff895f7f9437 100644
--- a/xen/arch/x86/hvm/vmx/vmx.c
+++ b/xen/arch/x86/hvm/vmx/vmx.c
@@ -4,6 +4,7 @@
  * Copyright (c) 2004, Intel Corporation.
  */
 
+#include <xen/altp2m.h>
 #include <xen/domain_page.h>
 #include <xen/guest_access.h>
 #include <xen/hypercall.h>
diff --git a/xen/arch/x86/include/asm/altp2m.h b/xen/arch/x86/include/asm/altp2m.h
index 9c1ac3cc2676..ad5ded833a75 100644
--- a/xen/arch/x86/include/asm/altp2m.h
+++ b/xen/arch/x86/include/asm/altp2m.h
@@ -28,12 +28,6 @@ static inline bool altp2m_is_eptp_valid(const struct domain *d,
         mfn_x(INVALID_MFN);
 }
 
-/* Alternate p2m HVM on/off per domain */
-static inline bool altp2m_active(const struct domain *d)
-{
-    return d->arch.altp2m_active;
-}
-
 static inline uint16_t altp2m_vcpu_idx(const struct vcpu *v)
 {
     return vcpu_altp2m(v).p2midx;
@@ -64,11 +58,6 @@ static inline bool altp2m_is_eptp_valid(const struct domain *d,
     return false;
 }
 
-static inline bool altp2m_active(const struct domain *d)
-{
-    return false;
-}
-
 /* Only declaration is needed. DCE will optimise it out when linking. */
 uint16_t altp2m_vcpu_idx(const struct vcpu *v);
 void altp2m_vcpu_initialise(struct vcpu *v);
diff --git a/xen/arch/x86/include/asm/domain.h b/xen/arch/x86/include/asm/domain.h
index 385a6666dafa..0cf0c0d92087 100644
--- a/xen/arch/x86/include/asm/domain.h
+++ b/xen/arch/x86/include/asm/domain.h
@@ -368,8 +368,6 @@ struct arch_domain
     mm_lock_t nested_p2m_lock;
 
 #ifdef CONFIG_ALTP2M
-    /* altp2m: allow multiple copies of host p2m */
-    bool altp2m_active;
     struct p2m_domain **altp2m_p2m;
     mm_lock_t altp2m_list_lock;
     uint64_t *altp2m_eptp;
diff --git a/xen/arch/x86/mm/altp2m.c b/xen/arch/x86/mm/altp2m.c
index 0bc9b9ad2f52..08db8f37c1b1 100644
--- a/xen/arch/x86/mm/altp2m.c
+++ b/xen/arch/x86/mm/altp2m.c
@@ -8,6 +8,7 @@
 #include <asm/p2m.h>
 #include <asm/altp2m.h>
 #include <public/hvm/hvm_op.h>
+#include <xen/altp2m.h>
 #include <xen/event.h>
 #include <xen/xvmalloc.h>
 #include "mm-locks.h"
diff --git a/xen/arch/x86/mm/hap/hap.c b/xen/arch/x86/mm/hap/hap.c
index 5ccb80bda5d3..3d563b3bc2d1 100644
--- a/xen/arch/x86/mm/hap/hap.c
+++ b/xen/arch/x86/mm/hap/hap.c
@@ -7,6 +7,7 @@
  * Parts of this code are Copyright (c) 2007 by XenSource Inc.
  */
 
+#include <xen/altp2m.h>
 #include <xen/types.h>
 #include <xen/mm.h>
 #include <xen/trace.h>
@@ -528,7 +529,7 @@ int hap_enable(struct domain *d, u32 mode)
                goto out;
         }
 
-        d->arch.altp2m_active = false;
+        d->altp2m_active = false;
     }
 #endif /* CONFIG_ALTP2M */
 
@@ -595,7 +596,7 @@ void hap_teardown(struct domain *d, bool *preempted)
             for_each_vcpu ( d, v )
                 altp2m_vcpu_disable_ve(v);
 
-        d->arch.altp2m_active = false;
+        d->altp2m_active = false;
 
         FREE_XENHEAP_PAGE(d->arch.altp2m_eptp);
         FREE_XENHEAP_PAGE(d->arch.altp2m_visible_eptp);
diff --git a/xen/arch/x86/mm/mem_access.c b/xen/arch/x86/mm/mem_access.c
index e55e53f44c78..a9d6b081a523 100644
--- a/xen/arch/x86/mm/mem_access.c
+++ b/xen/arch/x86/mm/mem_access.c
@@ -9,6 +9,7 @@
  * Parts based on earlier work by Michael A Fetterman, Ian Pratt et al.
  */
 
+#include <xen/altp2m.h>
 #include <xen/guest_access.h> /* copy_from_guest() */
 #include <xen/mem_access.h>
 #include <xen/nospec.h>
diff --git a/xen/arch/x86/mm/mem_sharing.c b/xen/arch/x86/mm/mem_sharing.c
index 5c7a0ff30e8b..8319733b1bb6 100644
--- a/xen/arch/x86/mm/mem_sharing.c
+++ b/xen/arch/x86/mm/mem_sharing.c
@@ -8,6 +8,7 @@
  * Copyright (c) 2009 Citrix Systems, Inc. (Grzegorz Milos)
  */
 
+#include <xen/altp2m.h>
 #include <xen/types.h>
 #include <xen/domain_page.h>
 #include <xen/event.h>
diff --git a/xen/arch/x86/mm/p2m-ept.c b/xen/arch/x86/mm/p2m-ept.c
index dfdbfa0afec8..ed850723f5fd 100644
--- a/xen/arch/x86/mm/p2m-ept.c
+++ b/xen/arch/x86/mm/p2m-ept.c
@@ -4,6 +4,7 @@
  * Copyright (c) 2007, Intel Corporation.
  */
 
+#include <xen/altp2m.h>
 #include <xen/domain_page.h>
 #include <xen/sched.h>
 #include <public/hvm/dm_op.h>
diff --git a/xen/arch/x86/mm/p2m-pt.c b/xen/arch/x86/mm/p2m-pt.c
index 5a6ce2f8bc2e..17f38aac14d5 100644
--- a/xen/arch/x86/mm/p2m-pt.c
+++ b/xen/arch/x86/mm/p2m-pt.c
@@ -12,6 +12,7 @@
  * Parts based on earlier work by Michael A Fetterman, Ian Pratt et al.
  */
 
+#include <xen/altp2m.h>
 #include <xen/vm_event.h>
 #include <xen/event.h>
 #include <xen/trace.h>
diff --git a/xen/arch/x86/mm/p2m.c b/xen/arch/x86/mm/p2m.c
index fddecdf978ec..41517765c5ec 100644
--- a/xen/arch/x86/mm/p2m.c
+++ b/xen/arch/x86/mm/p2m.c
@@ -11,6 +11,7 @@
  * Parts based on earlier work by Michael A Fetterman, Ian Pratt et al.
  */
 
+#include <xen/altp2m.h>
 #include <xen/iommu.h>
 #include <xen/mem_access.h>
 #include <xen/vm_event.h>
diff --git a/xen/common/monitor.c b/xen/common/monitor.c
index d5c9ff1cbf8c..e758a3fea9f1 100644
--- a/xen/common/monitor.c
+++ b/xen/common/monitor.c
@@ -19,6 +19,7 @@
  * License along with this program; If not, see <http://www.gnu.org/licenses/>.
  */
 
+#include <xen/altp2m.h>
 #include <xen/event.h>
 #include <xen/monitor.h>
 #include <xen/sched.h>
diff --git a/xen/include/asm-generic/altp2m.h b/xen/include/asm-generic/altp2m.h
index 39865a842ab3..ecee6942f4e8 100644
--- a/xen/include/asm-generic/altp2m.h
+++ b/xen/include/asm-generic/altp2m.h
@@ -4,16 +4,8 @@
 
 #include <xen/bug.h>
 
-struct domain;
 struct vcpu;
 
-/* Alternate p2m on/off per domain */
-static inline bool altp2m_active(const struct domain *d)
-{
-    /* Not implemented on GENERIC. */
-    return false;
-}
-
 /* Alternate p2m VCPU */
 static inline unsigned int altp2m_vcpu_idx(const struct vcpu *v)
 {
diff --git a/xen/include/xen/altp2m.h b/xen/include/xen/altp2m.h
index 520328fd3fa8..b3b21124dd7e 100644
--- a/xen/include/xen/altp2m.h
+++ b/xen/include/xen/altp2m.h
@@ -2,4 +2,23 @@
 #ifndef __XEN_ALTP2M_H__
 #define __XEN_ALTP2M_H__
 
+#include <xen/sched.h>
+
+#ifdef CONFIG_ALTP2M
+
+/* Alternate p2m HVM on/off per domain */
+static inline bool altp2m_active(const struct domain *d)
+{
+    return d->altp2m_active;
+}
+
+#else /* CONFIG_ALTP2M */
+
+static inline bool altp2m_active(const struct domain *d)
+{
+    return false;
+}
+
+#endif /* CONFIG_ALTP2M */
+
 #endif /* __XEN_ALTP2M_H__ */
diff --git a/xen/include/xen/sched.h b/xen/include/xen/sched.h
index 212c7d765c3e..458f2f260dd7 100644
--- a/xen/include/xen/sched.h
+++ b/xen/include/xen/sched.h
@@ -623,6 +623,8 @@ struct domain
     } monitor;
 
 #ifdef CONFIG_ALTP2M
+    /* altp2m: allow multiple copies of host p2m */
+    bool altp2m_active;
     unsigned int nr_altp2m;    /* Number of altp2m tables. */
 #endif
 
-- 
2.34.1



From xen-devel-bounces@lists.xenproject.org Mon Apr 20 21:19:03 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 20 Apr 2026 21:19:03 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1287441.1567845 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wEw1G-0005TP-H7; Mon, 20 Apr 2026 21:19:02 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1287441.1567845; Mon, 20 Apr 2026 21:19: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 1wEw1G-0005TI-E1; Mon, 20 Apr 2026 21:19:02 +0000
Received: by outflank-mailman (input) for mailman id 1287441;
 Mon, 20 Apr 2026 21:19:02 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <Rose.Spangler@elektrobit.com>) id 1wEw1F-0005TB-QY
 for xen-devel@lists.xenproject.org; Mon, 20 Apr 2026 21:19:02 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wEw1F-009ir9-76
 for xen-devel@lists.xenproject.org; Mon, 20 Apr 2026 23:19:01 +0200
Received: from [10.42.69.6] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <Rose.Spangler@elektrobit.com>)
 id 69e6983c-2eae-0a2a0a5409dd-0a2a4506a764-4
 for <xen-devel@lists.xenproject.org>; Mon, 20 Apr 2026 23:19:01 +0200
Received: from [52.101.201.142]
 (helo=PH7PR06CU001.outbound.protection.outlook.com)
 by tlsNG-16d1c6.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.1)
 (envelope-from <Rose.Spangler@elektrobit.com>)
 id 69e69843-7371-0a2a45060019-3465c98e35ba-3
 for <xen-devel@lists.xenproject.org>; Mon, 20 Apr 2026 23:19:00 +0200
Received: from MW4PR04CA0115.namprd04.prod.outlook.com (2603:10b6:303:83::30)
 by CH3PR08MB9878.namprd08.prod.outlook.com (2603:10b6:610:21d::6)
 with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9818.32; Mon, 20 Apr
 2026 21:18:52 +0000
Received: from CO1PEPF00012E81.namprd03.prod.outlook.com
 (2603:10b6:303:83:cafe::8) by MW4PR04CA0115.outlook.office365.com
 (2603:10b6:303:83::30) with Microsoft SMTP Server (version=TLS1_3,
 cipher=TLS_AES_256_GCM_SHA384) id 15.20.9791.48 via Frontend Transport; Mon,
 20 Apr 2026 21:18:52 +0000
Received: from usbth1es003.ebgroup.elektrobit.com (4.79.107.243) by
 CO1PEPF00012E81.mail.protection.outlook.com (10.167.249.56) with Microsoft
 SMTP Server (version=TLS1_3, cipher=TLS_AES_256_GCM_SHA384) id 15.20.9791.48
 via Frontend Transport; Mon, 20 Apr 2026 21:18:52 +0000
Received: from usbth1es003 (localhost [127.0.0.1])
 by usbth1es003.ebgroup.elektrobit.com (Postfix) with SMTP id 4fzyyz6xZLz1wdP; 
 Mon, 20 Apr 2026 14:18:51 -0700 (PDT)
Received: from DM2PR0701CU001.outbound.protection.outlook.com
 (mail-dm2pr0701cu00105.outbound.protection.outlook.com [40.93.13.69])
 (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)
 key-exchange secp384r1 server-signature RSA-PSS (2048 bits) server-digest
 SHA256) (No client certificate requested)
 by usbth1es003.ebgroup.elektrobit.com (Postfix) with ESMTPS;
 Mon, 20 Apr 2026 14:18:51 -0700 (PDT)
Received: from CH0P223CA0023.NAMP223.PROD.OUTLOOK.COM (2603:10b6:610:116::22)
 by CH1PR08MB10763.namprd08.prod.outlook.com (2603:10b6:610:2b0::7)
 with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9818.32; Mon, 20 Apr
 2026 21:18:46 +0000
Received: from DS3PEPF0000C380.namprd04.prod.outlook.com
 (2603:10b6:610:116:cafe::b4) by CH0P223CA0023.outlook.office365.com
 (2603:10b6:610:116::22) with Microsoft SMTP Server (version=TLS1_3,
 cipher=TLS_AES_256_GCM_SHA384) id 15.20.9791.48 via Frontend Transport; Mon,
 20 Apr 2026 21:18:46 +0000
Received: from denue6es012.ebgroup.elektrobit.com (213.95.148.172) by
 DS3PEPF0000C380.mail.protection.outlook.com (10.167.23.10) with Microsoft
 SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id
 15.20.9791.48 via Frontend Transport; Mon, 20 Apr 2026 21:18:45 +0000
Received: from ubuntu.localdomain (10.10.178.50) by
 denue6es012.ebgroup.elektrobit.com (10.243.160.140) with Microsoft SMTP
 Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id
 15.2.2562.35; Mon, 20 Apr 2026 23:18:42 +0200
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@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=elektrobit.com header.i="@elektrobit.com" header.h="From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck"; dkim=pass header.s=selector1 header.d=elektrobit.com header.i="@elektrobit.com" header.h="From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck"
ARC-Seal: i=2; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=pass;
 b=csBjKEiHYBo257UQ2Hp2tbVuO196RUQhiK9Rp1vz0sfzNEa/NDf0WqjQuzf/mK00ZLY1e+RQNoyMKilm/rwRE9LlOhmuUvvJoHXWvek50nf8yveU6ZZScmfcr9NmtcruH83T9X5A0aCFlm0XE+i8zOfNymZTNIdTQZ9+JdxowsUoPBQndH5M4eCCeX/yQGqryNnq0Y412WNmHLcJGT95oQiSaB1AOmptIHcX7UK6lCVJtQxV4O+ru+q5quN71YXfecuGsenFYvgBWc0C3GlxGsKN+G7b+8P+CGA/E9XC6vucMm8ybyCLnTPFtCpavQFJOEZia6au/7AgWBSj1oRJjg==
ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com;
 s=arcselector10001;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1;
 bh=HCpfUimCCQkOtqeuUzULZSjqPkZv/1OumHTvfODlnj8=;
 b=yV7veiXiJk+2BSsy7FuyH09r3nkpwiZUVZE5iDpehrkJ5OLK+ifjl1wB5m4y3ny1qQc6U14cWmceZdffDw3iPEg6G67mgvlv1ShmEsP4U+6qJzvZeHAtLnEumgmqT2vU/RStPuS+2wCTyOkc6UThOAIQMphgYGGLSKLXbFDej08ogNnPrN72kmuDpCM6QcyV07t8y7RxjoTytbpZ/Vl5WhJgKYsjR6sa6yH1Puc2pr9uVJ55XkBVgC5EyMeE7/1T5K+AeC9vsED5tNFnPxVo1sFEySsoLdxs/rGLmTuraIAueeKfhQQRfnYg7kcNw3/ZFeYGsGM3yiqvfzz3S2J/TQ==
ARC-Authentication-Results: i=2; mx.microsoft.com 1; spf=pass (sender ip is
 40.93.13.69) smtp.rcpttodomain=citrix.com smtp.mailfrom=elektrobit.com;
 dmarc=pass (p=quarantine sp=none pct=100) action=none
 header.from=elektrobit.com; dkim=pass (signature was verified)
 header.d=elektrobit.com; arc=pass (0 oda=1 ltdi=1
 spf=[1,1,smtp.mailfrom=elektrobit.com]
 dmarc=[1,1,header.from=elektrobit.com])
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=elektrobit.com;
 s=selector1;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck;
 bh=HCpfUimCCQkOtqeuUzULZSjqPkZv/1OumHTvfODlnj8=;
 b=grtP+joM00orfX0T1IofgbQqxanheNi94Y5fqhxaWWI8jfo4jfIym5M5+97pMyEoWMxU+zOnOrioLZ9uvNWUSRLznie0VAvt7fL+DgZdn/LbxEgV+PICIyLOQGNNUZutbpTySRimDdRw0UO/PMrY/k5GKokWeVB9ThWAQcS1nqU=
X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 40.93.13.69)
 smtp.mailfrom=elektrobit.com; dkim=pass (signature was verified)
 header.d=elektrobit.com;dmarc=pass action=none header.from=elektrobit.com;
Received-SPF: Pass (protection.outlook.com: domain of elektrobit.com
 designates 40.93.13.69 as permitted sender) receiver=protection.outlook.com;
 client-ip=40.93.13.69; helo=DM2PR0701CU001.outbound.protection.outlook.com;
 pr=C
ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none;
 b=voUyNLs34usTXE4LwAsNG9JvlY6roeZMi1LDdYbe+lPmIoZTpcWa5V6qzAM30P+2SNhiDkmLm57i+bVFgQgYTkseQv97ciCC+A8ptNO4lbziwtc3cfYjarFFUWGQZJTQzoUqZoipFnnayV2QY3RlJVu7UOqw9l0sxX5ahfC3Qu0/kt2XjgNwaVXAAxOxlzACrhk/fOgJVNGfwytUGr9vuUqqD8WUOldWY/2uT5jo1yez/2hwvwwc/2hxEXZSNatm3Do2AoyL5CYLtwO9iOEOcqLwqa79Gcw5EkfppdRkx9X3Ng3waSHRXqatAJD3qm6e9xl6LqhTgFolcWNYpAcz0A==
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com;
 s=arcselector10001;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1;
 bh=HCpfUimCCQkOtqeuUzULZSjqPkZv/1OumHTvfODlnj8=;
 b=u4DwST9OXo/iIY83P18O0lIvA5qoaA5HGliE+hEGnZOyirZXjIAED98znHCmRjkqM0X1IxOS80zQ7X3e730bP99Ikg7/27ufxnkSKO1/DSZaJLXUau8rt9AZ+7SLnB8J8Z54VG7J1r/cMWjH9XcYT8Rxmz4g6OH9mANY+U2vsPT4RmIi85wXzR4N8nX77EENjMUH9y6c9q1IC4qhew4SVmzBY1l94w/OwfRY1sbkxQack3LjQF3dX5HxQwNzOwJ2cv2c9K0ppV1BFD4HaQetIdJ47xv83Yoykr84oOO8JF7IKU8WLcyApANJLP/rT1lFUgZ/iVAUjctLzMvcx4dprQ==
ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass (sender ip is
 213.95.148.172) smtp.rcpttodomain=lists.xenproject.org
 smtp.mailfrom=elektrobit.com; dmarc=pass (p=quarantine sp=none pct=100)
 action=none header.from=elektrobit.com; dkim=none (message not signed);
 arc=none (0)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=elektrobit.com;
 s=selector1;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck;
 bh=HCpfUimCCQkOtqeuUzULZSjqPkZv/1OumHTvfODlnj8=;
 b=grtP+joM00orfX0T1IofgbQqxanheNi94Y5fqhxaWWI8jfo4jfIym5M5+97pMyEoWMxU+zOnOrioLZ9uvNWUSRLznie0VAvt7fL+DgZdn/LbxEgV+PICIyLOQGNNUZutbpTySRimDdRw0UO/PMrY/k5GKokWeVB9ThWAQcS1nqU=
X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 213.95.148.172)
 smtp.mailfrom=elektrobit.com; dkim=none (message not signed)
 header.d=none;dmarc=pass action=none header.from=elektrobit.com;
Received-SPF: Pass (protection.outlook.com: domain of elektrobit.com
 designates 213.95.148.172 as permitted sender)
 receiver=protection.outlook.com; client-ip=213.95.148.172;
 helo=denue6es012.ebgroup.elektrobit.com; pr=C
From: Rose Spangler <Rose.Spangler@elektrobit.com>
To: <xen-devel@lists.xenproject.org>
CC: Rose Spangler <Rose.Spangler@elektrobit.com>, Jan Beulich
	<jbeulich@suse.com>, Andrew Cooper <andrew.cooper3@citrix.com>,
	=?UTF-8?q?Roger=20Pau=20Monn=C3=A9?= <roger.pau@citrix.com>, Teddy Astie
	<teddy.astie@vates.tech>
Subject: [RFC PATCH v6 04/43] x86/altp2m: Rename hvm_altp2m_supported to altp2m_supported
Date: Mon, 20 Apr 2026 17:18:28 -0400
Message-ID: <20260420211831.208600-2-Rose.Spangler@elektrobit.com>
X-Mailer: git-send-email 2.34.1
In-Reply-To: <20260420211831.208600-1-Rose.Spangler@elektrobit.com>
References: <20260420211104.208444-1-Rose.Spangler@elektrobit.com>
 <20260420211831.208600-1-Rose.Spangler@elektrobit.com>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit
Content-Type: text/plain
X-Originating-IP: [10.10.178.50]
X-ClientProxiedBy: denue6es012.ebgroup.elektrobit.com (10.243.160.140) To
 denue6es012.ebgroup.elektrobit.com (10.243.160.140)
X-EOPAttributedMessage: 1
X-MS-Exchange-SkipListedInternetSender:
 ip=[213.95.148.172];domain=denue6es012.ebgroup.elektrobit.com
X-MS-TrafficTypeDiagnostic:
	DS3PEPF0000C380:EE_|CH1PR08MB10763:EE_|CO1PEPF00012E81:EE_|CH3PR08MB9878:EE_
X-MS-Office365-Filtering-Correlation-Id: 7ba856e8-d1da-4592-b052-08de9f226c0e
X-SM-outgoing: yes
X-MS-Exchange-SenderADCheck: 1
X-MS-Exchange-AntiSpam-Relay: 0
X-Microsoft-Antispam-Untrusted:
 BCL:0;ARA:13230040|704161311799003|82310400026|36860700016|376014|1800799024|56012099003|22082099003|18002099003;
X-Microsoft-Antispam-Message-Info-Original:
 =?us-ascii?Q?s6MdfaPKvkwCasjR9raeFlrfes7mwErCK090DmhXnQRT0IaUDVRbJL3apO69?=
 =?us-ascii?Q?OE+zO1MviYLRDo8ZXYglrXtvDRlQ4N+gXPGswbmXA28GkRt8hEXAwdtyV/Pw?=
 =?us-ascii?Q?ZlrTUpN/Crly48PoUz10UvBwn3kRaql8/A5w+Zq7mOdVFtb01qVDSdqSMNou?=
 =?us-ascii?Q?T0XSJEWh1XFCtRhFn10zbSMronxgdkB+n8I2HNettNObKSnk9ZcrF+Be/Cwb?=
 =?us-ascii?Q?XBwQArr7dwdmQ5XFY9Xk46zGJE1wbrtUka2/HMg4hRldN8jviLURgqbdSJvj?=
 =?us-ascii?Q?b6AF4/HGoFnfp421pPmwiFy5p3eHoxNHA2KBcxD99OxZcgLUCer5RhqcK0fG?=
 =?us-ascii?Q?IB+QQQ3lNRp0fFTA6E0OJsuedkb+YwZxYiqJWOieDfz/CCe477fBNBv8jU7G?=
 =?us-ascii?Q?pgjbiML+ZdoSitfy1x3pz1lmG+2MJlKAClpE8B3hSirN+coNUi4X8++HVYxU?=
 =?us-ascii?Q?ieOvKPW2RT4oTbR3LIlXCNm9FKFjYVD71FPZ/DXsPJiJ+hKZzwbgJ6Tk8aCZ?=
 =?us-ascii?Q?qjNHHBFfHZO2XZk/Gu3oa75reDkVKgnmIKEnucnvs7aJB48q038ODophkseT?=
 =?us-ascii?Q?ZtmSjVVPv7f6+K+LAa6DO/IaCfMjqOhbQhj9xgofvABcm1JPGyVCypInzkqd?=
 =?us-ascii?Q?BJvp2YTslnLNZ7ZjJEcQfi40IkTsaV8a9dEBw2Dn8Rdox3OzCUgMzpFPHWhO?=
 =?us-ascii?Q?v/FyGl9C4kjWwD4/4ZjbhSw4wzphODTgHAE1N71pjK7BY7n6r0Am0o5JvW1t?=
 =?us-ascii?Q?VuH5F72fpuE26rWDq4qBwniL+gtI7fhjpl4vs047JoFEAYTjXF0o0ZFD1Qhc?=
 =?us-ascii?Q?WCidjORlDbynetTFdcFMx/IwBOZVZg4tm2vGyaEYBq5B2zUIBFxAj024nCsA?=
 =?us-ascii?Q?9EU89iNnms16e4OE3gPyjC92QqjEklJMNoCAqN5U20QylPiPjX+ySnELV3MA?=
 =?us-ascii?Q?NbcLv9FiCvzxYg++6GkpmglDu2dcw7VfJMbrpmm79skNJn+BaeaxFtC+u1Dy?=
 =?us-ascii?Q?9+Z6MxrfpgUmn52XQO3pNHfKSEt+320LtcdClkDXvmb4fQ9uMNNmral5mhOh?=
 =?us-ascii?Q?nI+PAnsY9gZ8dL/B5Pky/kjIrT+tSMHx6POA7I/St4GiTAXqILkYNFD10vHf?=
 =?us-ascii?Q?mfKtgtevWlekG0tCIBgso5D53q7fh+Rg5bCJZnQRXlsFH6jSwNlsGSoNCmiX?=
 =?us-ascii?Q?d4x+9bAs5nGvBpn20GsYahv1TvylnsO+5Z5YGcuIIQSQgnq95GH07+LUqY8?=
 =?us-ascii?Q?=3D?=
X-Forefront-Antispam-Report-Untrusted:
 CIP:213.95.148.172;CTRY:DE;LANG:en;SCL:1;SRV:;IPV:CAL;SFV:NSPM;H:denue6es012.ebgroup.elektrobit.com;PTR:eth1-fw1-nbg6.eb.noris.de;CAT:NONE;SFS:(13230040)(704161311799003)(82310400026)(36860700016)(376014)(1800799024)(56012099003)(22082099003)(18002099003);DIR:OUT;SFP:1102;
X-Exchange-RoutingPolicyChecked:
 n9Zu4CfJEbnMLG+Q5OX4f4K4e2x8gd8DzXVHP+kF5v+YtonObBQUcK1EdiKAHvuj0YqXH3zTqxdo4q8gWUAiddjH7yL+XuTBUk2nCM9MY6EbuK8lRsTKSzqV4CMG+s/jJtby1bfsrcNE7mAiViMiNdjkTywiIGgLudIDr6/AiyfoqwlEr7vr7cjBhrwwg0Bg61oxVxssP+A/Brl1Sp5dYDjzrkow3GPRbThDx2qz33LRoGDo37dGn4XDYO0rfvhChkSFfcarDVFcJXdpQfINdcIYQsCuNr37T0tkoo9Nh69i7tXf1Pk0uhJUJfUzbWdKQSA+ExkfUSKTTcTiWNKgaQ==
X-MS-Exchange-Transport-CrossTenantHeadersStamped: CH1PR08MB10763
X-MS-Exchange-SkipListedInternetSender:
 ip=[40.93.13.69];domain=DM2PR0701CU001.outbound.protection.outlook.com
X-MS-Exchange-ExternalOriginalInternetSender:
 ip=[40.93.13.69];domain=DM2PR0701CU001.outbound.protection.outlook.com
X-MS-Exchange-Transport-CrossTenantHeadersStripped:
 CO1PEPF00012E81.namprd03.prod.outlook.com
X-MS-PublicTrafficType: Email
X-MS-Office365-Filtering-Correlation-Id-Prvs:
	5ae124ef-aaf1-4bdb-8486-08de9f22682c
X-Microsoft-Antispam:
	BCL:0;ARA:13230040|704161311799003|36860700016|1800799024|376014|14060799003|35042699022|82310400026|156008|56012099003|22082099003|18002099003;
X-Microsoft-Antispam-Message-Info:
	=?us-ascii?Q?d3og/NRxQX/4OPA73y/i2eDYOx4TVTfvGSO/dnJGfGn0auIuYUVyZRPJVbEe?=
 =?us-ascii?Q?3MIypTO1JWCkp9+lUCXW4BLC5uZf6JjdHUBLIkIPfThLn9CzDgU675KgkX7W?=
 =?us-ascii?Q?ooj/VkyivnTKhkrClCKLkoZ9R9FScj2X88UOyLpJxRH6IlicKohepS96jxOl?=
 =?us-ascii?Q?KidBbSRDIik0DMIxL4PBI6o+6DNdAkORtQIi92zvz5o47VVMH32vUqqbD1JP?=
 =?us-ascii?Q?+lQ41NeLz0oYV5di22hCjhbaWIpAv8cpHBjdefz0xzHqcyksiEsDXPAwT9y+?=
 =?us-ascii?Q?8bBdY17slunjhPQ729q47TPOsMAWuW3BKbY4oIRAaRgFie6RooXTNKJpfy1f?=
 =?us-ascii?Q?SVT52KjmHGVKXpcHo0+yDzeO86zktLwlRVluKt5wD8eXsDnTIr0D7Vveileg?=
 =?us-ascii?Q?QOO9YFEZGp+k+Z1k/w+JbCyKqpNPCLYKhbSckYnszFf143V2L9WFafdESFGR?=
 =?us-ascii?Q?QltT685CiVbbYSVcA1wDGO3/S20vAGKSAPnD9lxM+sKhzSTUR7kZKt9Z0CIk?=
 =?us-ascii?Q?ZxzwkrEUJao8K/a0deMzPZj0DdypUvBDjg2Vlez4F/G3A6vvNpSWsPEQUjN3?=
 =?us-ascii?Q?dRy4qW0FQBzLEl/s92mOkxAwtb8pYA6+7doWtje9bFqCYorNXsfEEUa3zKl+?=
 =?us-ascii?Q?U/3y0QctSWvWQB1fqFKTfnytfSNHItcE0+x5Q1vCdYz8JB9duuRqw//zm1pa?=
 =?us-ascii?Q?/H3UDT1K78tehw/8GVFX17bkQ9cwEQoEssI1pVo9XShv/aTW8PQlRc8MTT6z?=
 =?us-ascii?Q?+/zRE5FVrZDUTmBBcZf8qE3Zxw10ob/d+iyRwvvfRd0XYbwWNiocTFOLD4D0?=
 =?us-ascii?Q?w1IX0AOvPe3+unWXOT0wt8dwk7wxDIv9lCs9z/v/dziIXvY1UGSuN5BF1omN?=
 =?us-ascii?Q?JOFwE0V53wRqZBOX2di04Frov7v1lqtDOsEmn53xSumm0Cwg4pL5CpbgQeoU?=
 =?us-ascii?Q?Lc+XUN0oQro687UI9PEOuitZKTlXp7ZlWpK3cOYdLyK1QpPUrlees1wSFhqn?=
 =?us-ascii?Q?7giqEDjaOimx/u/0xbqNKSCewGdp0ixeDvbr7ZYLaNxYtDzSR0LzDMxuOgoR?=
 =?us-ascii?Q?H49rsXII84VquB6xUUotJ98p3w16SfOSqDpVfqsUOoa5yP2XQRi1VVxJwUyz?=
 =?us-ascii?Q?vz0xkQDJxH8XcaM92e9sgBF1GhaFLNrb6+sZOhbVtjE2RnaHRdsJUs0MIWtl?=
 =?us-ascii?Q?c2BuTK1d/mFSfiFWg1eGqGrGfcPI5n6oZYrKC45PfmncOYXD/5YP20u1iXM?=
 =?us-ascii?Q?=3D?=
X-Forefront-Antispam-Report:
	CIP:4.79.107.243;CTRY:US;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:DM2PR0701CU001.outbound.protection.outlook.com;PTR:mail-dm2pr0701cu00105.outbound.protection.outlook.com;CAT:NONE;SFS:(13230040)(704161311799003)(36860700016)(1800799024)(376014)(14060799003)(35042699022)(82310400026)(156008)(56012099003)(22082099003)(18002099003);DIR:OUT;SFP:1102;
X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1
X-MS-Exchange-AntiSpam-MessageData-0:
	QBmdIm/HzIGUi4onSOmPAL6wX3mJekWd0RnJiXuq668zghe1xCAiBBOQRs3GDdUFkThYKod8Wa+yJCU/v0gZjq32rRz/yMgQxQOmOQYzPu9es0/FD1jJH58tme1JPc3+bW+Px2UfRRYTEhcMNMBTcWkmbfErBKTOJBiO9KvJItage3Rip/v+kDc1d2w1WDAadgrA8o95XE8lHtatriVf8oZh+x3PU5BajUA2wPMyygCbB0iJS3nuVj5uJ/UvDP69fBqBPMO7vpKQOqwYpQlyIsalWijF4val/VpjTZ9yCpVHAVYv3V44Zz4yRaUaorqRWXHjQxpdh98EFWneyjvcm2ClU1LXCeGHCIMcMU0OVckVSF5jLKimzmjUSuNKsd3/atKMqOgSnT6LgEflyaN3/PSkFAJCGjcfAJTbeOsztAFrizj5mfCAkKXYlRgWSXE+
X-OriginatorOrg: elektrobit.com
X-MS-Exchange-CrossTenant-OriginalArrivalTime: 20 Apr 2026 21:18:52.2881
 (UTC)
X-MS-Exchange-CrossTenant-Network-Message-Id: 7ba856e8-d1da-4592-b052-08de9f226c0e
X-MS-Exchange-CrossTenant-Id: e764c36b-012e-4216-910d-8fd16283182d
X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=e764c36b-012e-4216-910d-8fd16283182d;Ip=[4.79.107.243];Helo=[usbth1es003.ebgroup.elektrobit.com]
X-MS-Exchange-CrossTenant-AuthAs: Internal
X-MS-Exchange-CrossTenant-AuthSource: TreatMessagesAsInternal-CO1PEPF00012E81.namprd03.prod.outlook.com
X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem
X-MS-Exchange-Transport-CrossTenantHeadersStamped: CH3PR08MB9878
X-purgate-ID: tlsNG-16d1c6/1776719941-91B86D75-3C8C0DFC/0/0
X-purgate-type: clean
X-purgate-size: 5417

Using a generic name for altp2m_supported makes it possible to indicate
whether altp2m is supported on other architectures as well. Even if other
architectures always support altp2m at a hardware level (like ARM), altp2m
might not be supported due to CONFIG_ALTP2M being disabled. Therefore, the
altp2m_supported function can be implemented on all architectures to
indicate if the hardware supports altp2m *and* if CONFIG_ALTP2M is enabled.

This is commit 4/8 of the preparation phase.

Signed-off-by: Rose Spangler <Rose.Spangler@elektrobit.com>
---
v6: Introduced this patch.
---
 xen/arch/x86/domain.c              | 2 +-
 xen/arch/x86/hvm/hvm.c             | 6 +++---
 xen/arch/x86/include/asm/hvm/hvm.h | 4 ++--
 xen/arch/x86/mm/hap/hap.c          | 6 +++---
 xen/arch/x86/mm/p2m-basic.c        | 4 ++--
 xen/arch/x86/mm/p2m-ept.c          | 2 +-
 6 files changed, 12 insertions(+), 12 deletions(-)

diff --git a/xen/arch/x86/domain.c b/xen/arch/x86/domain.c
index 1d458f1372e5..512b18d4010f 100644
--- a/xen/arch/x86/domain.c
+++ b/xen/arch/x86/domain.c
@@ -698,7 +698,7 @@ int arch_sanitise_domain_config(struct xen_domctl_createdomain *config)
 
     if ( altp2m_mode )
     {
-        if ( !hvm_altp2m_supported() )
+        if ( !altp2m_supported() )
         {
             dprintk(XENLOG_INFO, "altp2m is not supported\n");
             return -EINVAL;
diff --git a/xen/arch/x86/hvm/hvm.c b/xen/arch/x86/hvm/hvm.c
index 86c12c0d1ef4..bc35efdf2c02 100644
--- a/xen/arch/x86/hvm/hvm.c
+++ b/xen/arch/x86/hvm/hvm.c
@@ -1692,7 +1692,7 @@ void hvm_vcpu_destroy(struct vcpu *v)
 
     ioreq_server_remove_vcpu_all(v->domain, v);
 
-    if ( hvm_altp2m_supported() )
+    if ( altp2m_supported() )
         altp2m_vcpu_destroy(v);
 
     nestedhvm_vcpu_destroy(v);
@@ -4566,7 +4566,7 @@ static int do_altp2m_op(
     int rc = 0;
     uint64_t mode;
 
-    if ( !hvm_altp2m_supported() )
+    if ( !altp2m_supported() )
         return -EOPNOTSUPP;
 
     if ( copy_from_guest(&a, arg, 1) )
@@ -4965,7 +4965,7 @@ static int compat_altp2m_op(
         struct xen_hvm_altp2m_op *altp2m_op;
     } nat;
 
-    if ( !hvm_altp2m_supported() )
+    if ( !altp2m_supported() )
         return -EOPNOTSUPP;
 
     if ( copy_from_guest(&a, arg, 1) )
diff --git a/xen/arch/x86/include/asm/hvm/hvm.h b/xen/arch/x86/include/asm/hvm/hvm.h
index e7c1364802f8..6406bb687718 100644
--- a/xen/arch/x86/include/asm/hvm/hvm.h
+++ b/xen/arch/x86/include/asm/hvm/hvm.h
@@ -702,7 +702,7 @@ static inline bool hvm_hap_supported(void)
 }
 
 /* returns true if hardware supports alternate p2m's */
-static inline bool hvm_altp2m_supported(void)
+static inline bool altp2m_supported(void)
 {
     return IS_ENABLED(CONFIG_ALTP2M) && hvm_funcs.caps.altp2m;
 }
@@ -876,7 +876,7 @@ static inline bool hvm_hap_supported(void)
     return false;
 }
 
-static inline bool hvm_altp2m_supported(void)
+static inline bool altp2m_supported(void)
 {
     return false;
 }
diff --git a/xen/arch/x86/mm/hap/hap.c b/xen/arch/x86/mm/hap/hap.c
index 6918a00a2a25..563eba3c0d36 100644
--- a/xen/arch/x86/mm/hap/hap.c
+++ b/xen/arch/x86/mm/hap/hap.c
@@ -501,7 +501,7 @@ int hap_enable(struct domain *d, u32 mode)
     }
 
 #ifdef CONFIG_ALTP2M
-    if ( hvm_altp2m_supported() )
+    if ( altp2m_supported() )
     {
         /* Init alternate p2m data */
         if ( (d->arch.altp2m_eptp = alloc_xenheap_page()) == NULL )
@@ -546,7 +546,7 @@ void hap_final_teardown(struct domain *d)
     unsigned int i;
 
 #ifdef CONFIG_ALTP2M
-    if ( hvm_altp2m_supported() )
+    if ( altp2m_supported() )
         for ( i = 0; i < d->nr_altp2m; i++ )
             p2m_teardown(d->altp2m_p2m[i], true, NULL);
 #endif
@@ -590,7 +590,7 @@ void hap_teardown(struct domain *d, bool *preempted)
 
 #ifdef CONFIG_ALTP2M
     /* Leave the root pt in case we get further attempts to modify the p2m. */
-    if ( hvm_altp2m_supported() )
+    if ( altp2m_supported() )
     {
         if ( altp2m_active(d) )
             for_each_vcpu ( d, v )
diff --git a/xen/arch/x86/mm/p2m-basic.c b/xen/arch/x86/mm/p2m-basic.c
index e126fda26760..ce14066fedaf 100644
--- a/xen/arch/x86/mm/p2m-basic.c
+++ b/xen/arch/x86/mm/p2m-basic.c
@@ -128,7 +128,7 @@ int p2m_init(struct domain *d)
         return rc;
     }
 
-    rc = hvm_altp2m_supported() ? p2m_init_altp2m(d) : 0;
+    rc = altp2m_supported() ? p2m_init_altp2m(d) : 0;
     if ( rc )
     {
         p2m_teardown_hostp2m(d);
@@ -197,7 +197,7 @@ void p2m_final_teardown(struct domain *d)
 {
     if ( is_hvm_domain(d) )
     {
-        if ( hvm_altp2m_supported() )
+        if ( altp2m_supported() )
             p2m_teardown_altp2m(d);
         /*
          * We must tear down nestedp2m unconditionally because
diff --git a/xen/arch/x86/mm/p2m-ept.c b/xen/arch/x86/mm/p2m-ept.c
index ddb4c7606be1..84159198f3a0 100644
--- a/xen/arch/x86/mm/p2m-ept.c
+++ b/xen/arch/x86/mm/p2m-ept.c
@@ -995,7 +995,7 @@ out:
     if ( is_epte_present(&old_entry) )
         ept_free_entry(p2m, &old_entry, target);
 
-    if ( hvm_altp2m_supported() && entry_written && p2m_is_hostp2m(p2m) )
+    if ( altp2m_supported() && entry_written && p2m_is_hostp2m(p2m) )
     {
         ret = p2m_altp2m_propagate_change(d, _gfn(gfn), mfn, order, p2mt, p2ma);
         if ( !rc )
-- 
2.34.1



From xen-devel-bounces@lists.xenproject.org Mon Apr 20 21:19:03 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 20 Apr 2026 21:19:03 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1287442.1567854 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wEw1H-0005h8-NU; Mon, 20 Apr 2026 21:19:03 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1287442.1567854; Mon, 20 Apr 2026 21:19: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 1wEw1H-0005h1-Kh; Mon, 20 Apr 2026 21:19:03 +0000
Received: by outflank-mailman (input) for mailman id 1287442;
 Mon, 20 Apr 2026 21:19:02 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <Rose.Spangler@elektrobit.com>) id 1wEw1G-0005TH-GI
 for xen-devel@lists.xenproject.org; Mon, 20 Apr 2026 21:19:02 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wEw1F-00CBeh-St
 for xen-devel@lists.xenproject.org; Mon, 20 Apr 2026 23:19:01 +0200
Received: from [10.42.69.8] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <Rose.Spangler@elektrobit.com>)
 id 69e69803-bab6-0a2a0a5309dd-0a2a4508b6f2-38
 for <xen-devel@lists.xenproject.org>; Mon, 20 Apr 2026 23:19:01 +0200
Received: from [52.101.52.100]
 (helo=BL2PR02CU003.outbound.protection.outlook.com)
 by tlsNG-c1860d.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.1)
 (envelope-from <Rose.Spangler@elektrobit.com>)
 id 69e69844-63b5-0a2a45080019-346534641cb9-3
 for <xen-devel@lists.xenproject.org>; Mon, 20 Apr 2026 23:19:01 +0200
Received: from BYAPR01CA0057.prod.exchangelabs.com (2603:10b6:a03:94::34) by
 SA3PR08MB8825.namprd08.prod.outlook.com (2603:10b6:806:39f::22) with
 Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9818.33; Mon, 20 Apr
 2026 21:18:53 +0000
Received: from CO1PEPF00012E80.namprd03.prod.outlook.com
 (2603:10b6:a03:94:cafe::ca) by BYAPR01CA0057.outlook.office365.com
 (2603:10b6:a03:94::34) with Microsoft SMTP Server (version=TLS1_3,
 cipher=TLS_AES_256_GCM_SHA384) id 15.20.9791.48 via Frontend Transport; Mon,
 20 Apr 2026 21:18:53 +0000
Received: from usbth1es003.ebgroup.elektrobit.com (4.79.107.243) by
 CO1PEPF00012E80.mail.protection.outlook.com (10.167.249.55) with Microsoft
 SMTP Server (version=TLS1_3, cipher=TLS_AES_256_GCM_SHA384) id 15.20.9791.48
 via Frontend Transport; Mon, 20 Apr 2026 21:18:52 +0000
Received: from usbth1es003 (localhost [127.0.0.1])
 by usbth1es003.ebgroup.elektrobit.com (Postfix) with SMTP id 4fzyz04Glbz1wdQ; 
 Mon, 20 Apr 2026 14:18:52 -0700 (PDT)
Received: from BL0PR07CU001.outbound.protection.outlook.com
 (mail-bl0pr07cu00100.outbound.protection.outlook.com [40.93.4.0])
 (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)
 key-exchange secp384r1 server-signature RSA-PSS (2048 bits) server-digest
 SHA256) (No client certificate requested)
 by usbth1es003.ebgroup.elektrobit.com (Postfix) with ESMTPS;
 Mon, 20 Apr 2026 14:18:52 -0700 (PDT)
Received: from CH0P223CA0012.NAMP223.PROD.OUTLOOK.COM (2603:10b6:610:116::29)
 by BN0PR08MB7357.namprd08.prod.outlook.com (2603:10b6:408:166::21)
 with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9818.33; Mon, 20 Apr
 2026 21:18:47 +0000
Received: from DS3PEPF0000C380.namprd04.prod.outlook.com
 (2603:10b6:610:116:cafe::e9) by CH0P223CA0012.outlook.office365.com
 (2603:10b6:610:116::29) with Microsoft SMTP Server (version=TLS1_3,
 cipher=TLS_AES_256_GCM_SHA384) id 15.20.9791.48 via Frontend Transport; Mon,
 20 Apr 2026 21:18:46 +0000
Received: from denue6es012.ebgroup.elektrobit.com (213.95.148.172) by
 DS3PEPF0000C380.mail.protection.outlook.com (10.167.23.10) with Microsoft
 SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id
 15.20.9791.48 via Frontend Transport; Mon, 20 Apr 2026 21:18:46 +0000
Received: from ubuntu.localdomain (10.10.178.50) by
 denue6es012.ebgroup.elektrobit.com (10.243.160.140) with Microsoft SMTP
 Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id
 15.2.2562.35; Mon, 20 Apr 2026 23:18:43 +0200
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@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=elektrobit.com header.i="@elektrobit.com" header.h="From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck"; dkim=pass header.s=selector1 header.d=elektrobit.com header.i="@elektrobit.com" header.h="From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck"
ARC-Seal: i=2; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=pass;
 b=sCnVKkOMlpg8ZS48BFPTcqJmjGuvI1vfLZTQb7/8FwVKYE6ogLzHtredKfkFoR6ArpXrHN83AZkNiKBRzNX1XtDy1y4cTKgd/jU8lfAsIlui1Q+5GoHUQXAtu5eUUzp7wYNB24axIYsGfMXkQtnFHR51VVfbqVZXsehjXILUW5t72HZgGiErTwBaDp14ASw6Ju8uWP7yhU8BO7vrGXuqP27dT0dX3AIALyQ+61E1nt6SWJeJDTRbZ0YhU0D79zwyb48BMaulKNbo54quGQhCSrfTFWkMjBN5n2j0NU5vZ3KhgSaTRGVGbYii4XXNBhIVdKkwoMpEpm7F1+qTEBmPzQ==
ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com;
 s=arcselector10001;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1;
 bh=9p9JopnflYJnPfdpu0O1EcjHiZAqSeSW4TS/vKusOYI=;
 b=PjvqX+61NuR5PWzS4OgkbYbXxn1hZ5JJMZXfJxRoq2Pl7Cj67AKvbTcBfHpJsRZS0ePwqvNgOV5JuhSWbjXOQFjxt3zfutyyoQUZ/1SkujgBsbV2K22WYPGBYGem5ELnnf2yZuGD1Qz2AzzHtw8y3S+A4o3H1P4aT4kuyAzW4jQQnWgU2WZXunw/yDLkTUf4z6BnNvOvd/vndnK6mPQC7RIFo/cGB3Do3fPnajKDFdq6tnTTrcNAOYTDgB1a3rh51JS7GhxCVt6bMxXdYva7Z6l3aMT7mzkTi7cYFMIv3XT67K696adTcdQrDeoxNUJdmkV16djx7QVYdmUMPYl9fQ==
ARC-Authentication-Results: i=2; mx.microsoft.com 1; spf=pass (sender ip is
 40.93.4.0) smtp.rcpttodomain=amd.com smtp.mailfrom=elektrobit.com; dmarc=pass
 (p=quarantine sp=none pct=100) action=none header.from=elektrobit.com;
 dkim=pass (signature was verified) header.d=elektrobit.com; arc=pass (0 oda=1
 ltdi=1 spf=[1,1,smtp.mailfrom=elektrobit.com]
 dmarc=[1,1,header.from=elektrobit.com])
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=elektrobit.com;
 s=selector1;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck;
 bh=9p9JopnflYJnPfdpu0O1EcjHiZAqSeSW4TS/vKusOYI=;
 b=zT56D/Ih35FlpXM5WpTynbVXVI/2dqU+5ZUUN1drb+rtIKV8IEGcfZUgSSzbUegShgESWEV/rxYVl7PzJCPrjYe1eWLcJTf3nHh1wgrO8YZF3SY4msIFxnmey/jvCvMNXzUMy0VjVDR1Fyt82tZf0i1kWx9woUn0ak2SR9A4Yjc=
X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 40.93.4.0)
 smtp.mailfrom=elektrobit.com; dkim=pass (signature was verified)
 header.d=elektrobit.com;dmarc=pass action=none header.from=elektrobit.com;
Received-SPF: Pass (protection.outlook.com: domain of elektrobit.com
 designates 40.93.4.0 as permitted sender) receiver=protection.outlook.com;
 client-ip=40.93.4.0; helo=BL0PR07CU001.outbound.protection.outlook.com; pr=C
ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none;
 b=hgm14QpOFHp0W8yp0SOeSgrAbr+MZLl8wZOQqcBVhRkBqJZUnM5sA37SBV4Re3AN6jPYCosB0LWqKJXJ7J9NL0G1EbEq9elcSkqc4FF7Lyi74tK05aOjhmUFS/GegvAA7E1qSpc61Vj8TSdfh8G3Sg3w6pt9DcgROzQoqoPV1ozvUWmo/c8gfggzHVjzc2TjQmR8ukYcxurQfapGcmyvdUkdYVk4VJF2OIlL+qth7TmgMBLdVjLZCrGJOg1n3C05Db/J5KwwFXagjOcsdUFYG3KIvnQShESWiVzSMeZtjmT02mwfoH/pIy6gv80Kj/pC1i4UNkCYS4ibD5aK67ZHBw==
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com;
 s=arcselector10001;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1;
 bh=9p9JopnflYJnPfdpu0O1EcjHiZAqSeSW4TS/vKusOYI=;
 b=BmqSSf1wPJkupXUHRFcRCBQfxm74HF8Lvv2yscmIHI/yQKkmelFBym42wMrfzBD659jqvlzKLhl0TkXL4L7i+5PIKODEt9lII26G8HTF6ya1td6muXux4JtvY7Vq4uha/+/TWTLUxFpKiX/QZoZhkO84uZizY+z2/ti0vEXCdHori6aKc1TOJVD7NQuJzfX9oXMV1vAAiRtPaq4Hk9FybNQJepnUrrsda7wYemLXeqc8WbG+YrUonYDaiGtrLAXApNz3kK46NmwhMj6qUfkUyayvMmw7uE8XZ4BfhFfwInPgq34ATa7huJMZEf6Oa8BLFuBOcayEKfQ92ECPryyS6g==
ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass (sender ip is
 213.95.148.172) smtp.rcpttodomain=lists.xenproject.org
 smtp.mailfrom=elektrobit.com; dmarc=pass (p=quarantine sp=none pct=100)
 action=none header.from=elektrobit.com; dkim=none (message not signed);
 arc=none (0)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=elektrobit.com;
 s=selector1;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck;
 bh=9p9JopnflYJnPfdpu0O1EcjHiZAqSeSW4TS/vKusOYI=;
 b=zT56D/Ih35FlpXM5WpTynbVXVI/2dqU+5ZUUN1drb+rtIKV8IEGcfZUgSSzbUegShgESWEV/rxYVl7PzJCPrjYe1eWLcJTf3nHh1wgrO8YZF3SY4msIFxnmey/jvCvMNXzUMy0VjVDR1Fyt82tZf0i1kWx9woUn0ak2SR9A4Yjc=
X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 213.95.148.172)
 smtp.mailfrom=elektrobit.com; dkim=none (message not signed)
 header.d=none;dmarc=pass action=none header.from=elektrobit.com;
Received-SPF: Pass (protection.outlook.com: domain of elektrobit.com
 designates 213.95.148.172 as permitted sender)
 receiver=protection.outlook.com; client-ip=213.95.148.172;
 helo=denue6es012.ebgroup.elektrobit.com; pr=C
From: Rose Spangler <Rose.Spangler@elektrobit.com>
To: <xen-devel@lists.xenproject.org>
CC: Rose Spangler <Rose.Spangler@elektrobit.com>, Jan Beulich
	<jbeulich@suse.com>, Andrew Cooper <andrew.cooper3@citrix.com>,
	=?UTF-8?q?Roger=20Pau=20Monn=C3=A9?= <roger.pau@citrix.com>, 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: [RFC PATCH v6 05/43] altp2m: Move altp2m_supported to arch header
Date: Mon, 20 Apr 2026 17:18:29 -0400
Message-ID: <20260420211831.208600-3-Rose.Spangler@elektrobit.com>
X-Mailer: git-send-email 2.34.1
In-Reply-To: <20260420211831.208600-1-Rose.Spangler@elektrobit.com>
References: <20260420211104.208444-1-Rose.Spangler@elektrobit.com>
 <20260420211831.208600-1-Rose.Spangler@elektrobit.com>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit
Content-Type: text/plain
X-Originating-IP: [10.10.178.50]
X-ClientProxiedBy: denue6es012.ebgroup.elektrobit.com (10.243.160.140) To
 denue6es012.ebgroup.elektrobit.com (10.243.160.140)
X-EOPAttributedMessage: 1
X-MS-Exchange-SkipListedInternetSender:
 ip=[213.95.148.172];domain=denue6es012.ebgroup.elektrobit.com
X-MS-TrafficTypeDiagnostic:
	DS3PEPF0000C380:EE_|BN0PR08MB7357:EE_|CO1PEPF00012E80:EE_|SA3PR08MB8825:EE_
X-MS-Office365-Filtering-Correlation-Id: 442ca524-3800-4b04-188f-08de9f226c69
X-SM-outgoing: yes
X-MS-Exchange-SenderADCheck: 1
X-MS-Exchange-AntiSpam-Relay: 0
X-Microsoft-Antispam-Untrusted:
 BCL:0;ARA:13230040|704160111799003|82310400026|36860700016|376014|1800799024|56012099003|22082099003|18002099003;
X-Microsoft-Antispam-Message-Info-Original:
 =?us-ascii?Q?95roG6s6BBrsXa6BxovuPboPBoAD3i7d+enVIzccSfylntts06JITGjXrtZJ?=
 =?us-ascii?Q?Yp5SzJCnkF2FCdNqha1BA96F/dV7XezKZ1CZq9ypiYt4r8z9rp603QkUQHyj?=
 =?us-ascii?Q?x2W3iLg3+Guh2iceKVvmguakLzqK84SnB6YpdMolGlfXaK7T5TNI42ndG0fi?=
 =?us-ascii?Q?gc4VP9y2uUzQl0t7fNx8fn/G/isirB8qfbetKDtf2wjXOau/GLzT5YGlm9ur?=
 =?us-ascii?Q?JwsrkgAJfpy/M7QzwOsIa4xfJdWfKwMWlp1+LpL4KdbAC9QukLOP55ZRDy8v?=
 =?us-ascii?Q?rWgbmowpmMfMeoszJk4ccc2mF5ZicYPolTOUV2dXUdNsXbMIkk+P+GowQaCQ?=
 =?us-ascii?Q?0h7FiY+5gk3ySOp0MH0J1T0W8TVx08VH87OH+0a6WOx+8mN2scDuBdtEtawC?=
 =?us-ascii?Q?9fx3pB9LcvLjr+LQ2NT9CFRYYI+SZDGw1MNaJEoiISQpH0BpKiUYbXJZ+SGZ?=
 =?us-ascii?Q?HNn6VrcLsuOJWW6ZpeMyHooGrmfEHbqF2HNM3JgTxNZXi0V5uUDmZDmJWEgU?=
 =?us-ascii?Q?S47tmOxL99AMC7QojXqyyi+sv9M1o9O0MEFQQ449WDXG+ePMlK1mNDJiwWw6?=
 =?us-ascii?Q?vzQzwzTOqzFARmnJGKj/Mm1GlFHg7wgZLxqc77VRAiaGuu/j+MNSvqYMi8bK?=
 =?us-ascii?Q?vgl8iAEgVY1+yFgEnc6F3xu7+0Kt2REjPnEDlKaWNl20SWXR+oGLWOBcmWG4?=
 =?us-ascii?Q?yKe9lEpI/36nGa8rDvgDkWeTwuTOHzSaVKvFJH8xQHFBbvV303rpBcP68Utx?=
 =?us-ascii?Q?mv6xb9fEsuY9mL+sZ/xC99aRadm8oPgUn8m3ED3fyRk2HqB3VgZ7AA2HONrm?=
 =?us-ascii?Q?P1PWDr4dHLbmRuQsn8faktoOeWlwL3vlQITkC0sq0uum7/Mdw+Xv6ItzE3R2?=
 =?us-ascii?Q?V5RNRKSux3cezbBKt8sZdRE/umf9bc8nJF5W6EGEzoW4Hg7Hrg3RPGnP6h0+?=
 =?us-ascii?Q?EAR9aMmaIP3kPeJhLgRZyEGkGBvNumZA2VmAimoMGKb4U8AOwN3sXm3gJO2n?=
 =?us-ascii?Q?2a/CkS1zZ5zbGt4Pda3P+xrAam11k7ywhp73VIAwoM7CnfSzSghzujj1nFZx?=
 =?us-ascii?Q?M4qjq411crgAYtJSG1HCtTQgSMsOkBWyHZ2eWe74OVfr64WI/cl/+bsEOL7o?=
 =?us-ascii?Q?oAI7rTXV7m2j/tW06Ldd/Rj4TKLFcsgCxUOCgH9TUV1CWitXYEClDy8=3D?=
X-Forefront-Antispam-Report-Untrusted:
 CIP:213.95.148.172;CTRY:DE;LANG:en;SCL:1;SRV:;IPV:CAL;SFV:NSPM;H:denue6es012.ebgroup.elektrobit.com;PTR:eth1-fw1-nbg6.eb.noris.de;CAT:NONE;SFS:(13230040)(704160111799003)(82310400026)(36860700016)(376014)(1800799024)(56012099003)(22082099003)(18002099003);DIR:OUT;SFP:1102;
X-Exchange-RoutingPolicyChecked:
 X+FIY9Ipl6SaJLAJy6R26f8QFMUQp3YzSUcK7tfPn1TSQUtd5JL/Iw6bBAn8jKmyGPmWDq+o7Cc0HMypqGjbzY2TnHcBIaWzsKm3KgssGZ+my9km5iccOu3CoJfQsuJiIQla7n5VA1LlfeBM2xvNdhfqm+RyARyuFqC8ip2oDeoguz7xvjURMm1amrESb2+lrQVAMZuG9CYwooDYEXTnF57PbaXrwwz9FP+i6gThAMlSxz7I7GWgp9ucRAxiYjbXyAQgN9dL/O52mZdWFF6be3PYBJJdb9NU0hQWrC+Hfp18sxxKh1W/8lAiHdj2I0mf+9IdDdQQFU6pi/EneCQ97Q==
X-MS-Exchange-Transport-CrossTenantHeadersStamped: BN0PR08MB7357
X-MS-Exchange-SkipListedInternetSender:
 ip=[40.93.4.0];domain=BL0PR07CU001.outbound.protection.outlook.com
X-MS-Exchange-ExternalOriginalInternetSender:
 ip=[40.93.4.0];domain=BL0PR07CU001.outbound.protection.outlook.com
X-MS-Exchange-Transport-CrossTenantHeadersStripped:
 CO1PEPF00012E80.namprd03.prod.outlook.com
X-MS-PublicTrafficType: Email
X-MS-Office365-Filtering-Correlation-Id-Prvs:
	ee8c9645-1991-463b-4267-08de9f2268cd
X-Microsoft-Antispam:
	BCL:0;ARA:13230040|704160111799003|36860700016|1800799024|376014|14060799003|35042699022|82310400026|156008|56012099003|22082099003|18002099003;
X-Microsoft-Antispam-Message-Info:
	=?us-ascii?Q?IvJH0AXODL7AsP/0fMon5jPMRlX2G6HZECfwd2A6mE8ZArlwRTwvHM7F2v0j?=
 =?us-ascii?Q?VMKC/hCcCNxM5niPv+saQJCq930YVzEh7kzkE/hwsPT9VcwxfjesClb8HoLS?=
 =?us-ascii?Q?4iBph+y7MKWOX7UqRQzjokqgy7Q6tdkBr4DT5tRajq+TFCFDYMMmFFaNrMww?=
 =?us-ascii?Q?dd4OurmL4ro2g+YWw60Sugn8yUC1Vbdrus9pRXlzQ3x99uE4rvs+T3HfxG2l?=
 =?us-ascii?Q?eTcEkN7gqh2l6Oz4swGjCyMaALLUAcE5Yac3GHNk9fJaEJmXR7Lb7AvocB13?=
 =?us-ascii?Q?Co0a0svxjUrS+9pkvSKikvVI+dyd2y5m6pQ97c2Gx92EVJ01kuzGhhNOvskk?=
 =?us-ascii?Q?Gqb2dPGipMrE4Bvt/FQVuFdLX7APB9KmqxmqHbWz623jmdcF2sAax/ScylVx?=
 =?us-ascii?Q?Qw3f3MqMTomJmzoCCiLy1M147WMGjAO9sBMoc/BZKzBfUeU1J6U17Ws7WTbz?=
 =?us-ascii?Q?tAsIVxmcnRM7Ge7wO/tOEGlxYGBYRNoDB65luzjzPVtHuqfDM+4NMBy9aNwY?=
 =?us-ascii?Q?4BbEdc4nb7E4gKMTL4ALgnv1qwDEtF7r85YmQarnDLhJG1zRkTbBNSh/bOKT?=
 =?us-ascii?Q?T4lwghlvKkwumQGyv60NWbD3iZgkFUrz6Z8jJhf7Fp3qyIYGy7mjZQb1+oka?=
 =?us-ascii?Q?mNd/a2m+X7sIcCnLW3AyPHIsiaRdpbtHsi+3h0ZjLGSW8H8Xn9whbFL8IHnn?=
 =?us-ascii?Q?4IQ7o8bd32m0N21hHW1jaUoUykaT1izozCXJNmULIi7YvJJv1cy6tW2VD+pT?=
 =?us-ascii?Q?6jzANdTH1bdvqr3+WPr370LjiCDd91JL8YRN1vB1oTH0Gium1hOBHBzV+GaM?=
 =?us-ascii?Q?7a6hCSHsH/AhXNbgVs3qJuAlSPL9BknewarBjGxqMSSXdtJHaOdtqWZAsbEu?=
 =?us-ascii?Q?OUOFj43Q7aOzNURc75MihE7jb17ThLbblinxZr0HdpO+uIucTx31bGWnTFPm?=
 =?us-ascii?Q?HSUbbz/+T3HjqMaPe6XP8GD49Cq/St2GTXsmajuHHpl1c+LsetR8Zc/D4lsf?=
 =?us-ascii?Q?MzXrFlUYPFNPrxqbzLHj9x+ePo6f+NT/aj8+A9asIh9Jy4gB8CTRPxdM59CX?=
 =?us-ascii?Q?UIitr9TJPog7eG3hhu6fVaw7vzJDirUHEeGSFYkMZkAQPLkhtQm6+DIDGE6N?=
 =?us-ascii?Q?5jaG18j0pCit9fn9R6XX5G5tAVuqmsBM+ydfSr2tAg9Vhpdze7pA+M4=3D?=
X-Forefront-Antispam-Report:
	CIP:4.79.107.243;CTRY:US;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:BL0PR07CU001.outbound.protection.outlook.com;PTR:mail-bl0pr07cu00100.outbound.protection.outlook.com;CAT:NONE;SFS:(13230040)(704160111799003)(36860700016)(1800799024)(376014)(14060799003)(35042699022)(82310400026)(156008)(56012099003)(22082099003)(18002099003);DIR:OUT;SFP:1102;
X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1
X-MS-Exchange-AntiSpam-MessageData-0:
	+Dqh+sMHtGgaEMBqj7lVNkdSHBjFYsS5eFVcyE7geqTSGXDmrXyBzsWAK+6ekM/iOoGNf6+Y4ncB/KdJ/1dVlT4yRevOKzoxOjXi+ZteiDIHHkmFVA79A1k8P7XHw3KNiuFgiPCj0Nj7WDmCtBSjSHefd9ZnrGOXfDQ8y1XLEA3b/k9Poes7BQC4CRENceJ9bB9OFHNj68NrcOGLCWZEqOtBtoqmRMl044nknpjNTiW3yK/ohRib1KIhRGXXpIx9JpOUXS2h6eG2I7NXJM1kKBVLSFFOvh5MPqA4EJLB+sH/m1LwlupTAHiYMx5EGwOudPFFr04pbgykxbZAtmU5CwG0wsB58z0ypWy/0RQwPAFbJkra96hro6WQ+bKmYqsJp3fzLcPqiociOfKu/1sNjFVfEe9GRDu4Q/r/HxTd1GWngxh3z1LzsO/Cm8Q1iitG
X-OriginatorOrg: elektrobit.com
X-MS-Exchange-CrossTenant-OriginalArrivalTime: 20 Apr 2026 21:18:52.8546
 (UTC)
X-MS-Exchange-CrossTenant-Network-Message-Id: 442ca524-3800-4b04-188f-08de9f226c69
X-MS-Exchange-CrossTenant-Id: e764c36b-012e-4216-910d-8fd16283182d
X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=e764c36b-012e-4216-910d-8fd16283182d;Ip=[4.79.107.243];Helo=[usbth1es003.ebgroup.elektrobit.com]
X-MS-Exchange-CrossTenant-AuthAs: Internal
X-MS-Exchange-CrossTenant-AuthSource: TreatMessagesAsInternal-CO1PEPF00012E80.namprd03.prod.outlook.com
X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem
X-MS-Exchange-Transport-CrossTenantHeadersStamped: SA3PR08MB8825
X-purgate-ID: tlsNG-c1860d/1776719941-3BB7CDB1-C6AAF97A/0/0
X-purgate-type: clean
X-purgate-size: 3203

Following from the previous commit, this commit makes altp2m_supported
available through the asm/altp2m.h header.

This is commit 5/8 of the preparation phase.

Signed-off-by: Rose Spangler <Rose.Spangler@elektrobit.com>
---
v6: Introduced this patch.
---
 xen/arch/x86/domain.c              |  1 +
 xen/arch/x86/include/asm/altp2m.h  | 11 +++++++++++
 xen/arch/x86/include/asm/hvm/hvm.h | 11 -----------
 xen/include/asm-generic/altp2m.h   |  7 +++++++
 4 files changed, 19 insertions(+), 11 deletions(-)

diff --git a/xen/arch/x86/domain.c b/xen/arch/x86/domain.c
index 512b18d4010f..e4f1cbf3b51e 100644
--- a/xen/arch/x86/domain.c
+++ b/xen/arch/x86/domain.c
@@ -39,6 +39,7 @@
 #include <xen/softirq.h>
 #include <xen/wait.h>
 
+#include <asm/altp2m.h>
 #include <asm/amd.h>
 #include <asm/cpu-policy.h>
 #include <asm/cpuidle.h>
diff --git a/xen/arch/x86/include/asm/altp2m.h b/xen/arch/x86/include/asm/altp2m.h
index ad5ded833a75..07e760f60659 100644
--- a/xen/arch/x86/include/asm/altp2m.h
+++ b/xen/arch/x86/include/asm/altp2m.h
@@ -28,6 +28,12 @@ static inline bool altp2m_is_eptp_valid(const struct domain *d,
         mfn_x(INVALID_MFN);
 }
 
+/* returns true if hardware supports alternate p2m's */
+static inline bool altp2m_supported(void)
+{
+    return hvm_funcs.caps.altp2m;
+}
+
 static inline uint16_t altp2m_vcpu_idx(const struct vcpu *v)
 {
     return vcpu_altp2m(v).p2midx;
@@ -58,6 +64,11 @@ static inline bool altp2m_is_eptp_valid(const struct domain *d,
     return false;
 }
 
+static inline bool altp2m_supported(void)
+{
+    return false;
+}
+
 /* Only declaration is needed. DCE will optimise it out when linking. */
 uint16_t altp2m_vcpu_idx(const struct vcpu *v);
 void altp2m_vcpu_initialise(struct vcpu *v);
diff --git a/xen/arch/x86/include/asm/hvm/hvm.h b/xen/arch/x86/include/asm/hvm/hvm.h
index 6406bb687718..e6d8042831dc 100644
--- a/xen/arch/x86/include/asm/hvm/hvm.h
+++ b/xen/arch/x86/include/asm/hvm/hvm.h
@@ -701,12 +701,6 @@ static inline bool hvm_hap_supported(void)
     return hvm_funcs.caps.hap;
 }
 
-/* returns true if hardware supports alternate p2m's */
-static inline bool altp2m_supported(void)
-{
-    return IS_ENABLED(CONFIG_ALTP2M) && hvm_funcs.caps.altp2m;
-}
-
 /* Returns true if we have the minimum hardware requirements for nested virt */
 static inline bool hvm_nested_virt_supported(void)
 {
@@ -876,11 +870,6 @@ static inline bool hvm_hap_supported(void)
     return false;
 }
 
-static inline bool altp2m_supported(void)
-{
-    return false;
-}
-
 static inline bool hvm_nested_virt_supported(void)
 {
     return false;
diff --git a/xen/include/asm-generic/altp2m.h b/xen/include/asm-generic/altp2m.h
index ecee6942f4e8..a3cdbdae9953 100644
--- a/xen/include/asm-generic/altp2m.h
+++ b/xen/include/asm-generic/altp2m.h
@@ -6,6 +6,13 @@
 
 struct vcpu;
 
+/* returns true if hardware supports alternate p2m's */
+static inline bool altp2m_supported(void)
+{
+    /* Not implemented on GENERIC. */
+    return false;
+}
+
 /* Alternate p2m VCPU */
 static inline unsigned int altp2m_vcpu_idx(const struct vcpu *v)
 {
-- 
2.34.1



From xen-devel-bounces@lists.xenproject.org Mon Apr 20 21:19:07 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 20 Apr 2026 21:19:07 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1287443.1567863 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wEw1L-0005xc-2x; Mon, 20 Apr 2026 21:19:07 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1287443.1567863; Mon, 20 Apr 2026 21:19: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 1wEw1K-0005xD-Ue; Mon, 20 Apr 2026 21:19:06 +0000
Received: by outflank-mailman (input) for mailman id 1287443;
 Mon, 20 Apr 2026 21:19:05 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <Rose.Spangler@elektrobit.com>) id 1wEw1J-0005vJ-6v
 for xen-devel@lists.xenproject.org; Mon, 20 Apr 2026 21:19:05 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wEw1I-009ir9-JS
 for xen-devel@lists.xenproject.org; Mon, 20 Apr 2026 23:19:04 +0200
Received: from [10.42.69.6] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <Rose.Spangler@elektrobit.com>)
 id 69e6983c-2eae-0a2a0a5409dd-0a2a4506a764-10
 for <xen-devel@lists.xenproject.org>; Mon, 20 Apr 2026 23:19:04 +0200
Received: from [52.101.85.80]
 (helo=BYAPR05CU005.outbound.protection.outlook.com)
 by tlsNG-16d1c6.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.1)
 (envelope-from <Rose.Spangler@elektrobit.com>)
 id 69e69846-7371-0a2a45060019-34655550d7cb-3
 for <xen-devel@lists.xenproject.org>; Mon, 20 Apr 2026 23:19:04 +0200
Received: from SA0PR11CA0181.namprd11.prod.outlook.com (2603:10b6:806:1bc::6)
 by CO1PR08MB7676.namprd08.prod.outlook.com (2603:10b6:303:15b::8)
 with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9818.33; Mon, 20 Apr
 2026 21:18:57 +0000
Received: from SA2PEPF00003AE5.namprd02.prod.outlook.com
 (2603:10b6:806:1bc:cafe::5b) by SA0PR11CA0181.outlook.office365.com
 (2603:10b6:806:1bc::6) with Microsoft SMTP Server (version=TLS1_3,
 cipher=TLS_AES_256_GCM_SHA384) id 15.20.9791.48 via Frontend Transport; Mon,
 20 Apr 2026 21:18:57 +0000
Received: from usbth1es003.ebgroup.elektrobit.com (4.79.107.243) by
 SA2PEPF00003AE5.mail.protection.outlook.com (10.167.248.5) with Microsoft
 SMTP Server (version=TLS1_3, cipher=TLS_AES_256_GCM_SHA384) id 15.20.9791.48
 via Frontend Transport; Mon, 20 Apr 2026 21:18:56 +0000
Received: from usbth1es003 (localhost [127.0.0.1])
 by usbth1es003.ebgroup.elektrobit.com (Postfix) with SMTP id 4fzyz4050Wz1wdQ; 
 Mon, 20 Apr 2026 14:18:56 -0700 (PDT)
Received: from BL2PR08CU001.outbound.protection.outlook.com
 (mail-bl2pr08cu00102.outbound.protection.outlook.com [40.93.4.10])
 (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)
 key-exchange secp384r1 server-signature RSA-PSS (2048 bits) server-digest
 SHA256) (No client certificate requested)
 by usbth1es003.ebgroup.elektrobit.com (Postfix) with ESMTPS;
 Mon, 20 Apr 2026 14:18:55 -0700 (PDT)
Received: from CH0P223CA0015.NAMP223.PROD.OUTLOOK.COM (2603:10b6:610:116::33)
 by CYXPR08MB9211.namprd08.prod.outlook.com (2603:10b6:930:e7::15)
 with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9818.32; Mon, 20 Apr
 2026 21:18:48 +0000
Received: from DS3PEPF0000C380.namprd04.prod.outlook.com
 (2603:10b6:610:116:cafe::46) by CH0P223CA0015.outlook.office365.com
 (2603:10b6:610:116::33) with Microsoft SMTP Server (version=TLS1_3,
 cipher=TLS_AES_256_GCM_SHA384) id 15.20.9791.48 via Frontend Transport; Mon,
 20 Apr 2026 21:18:47 +0000
Received: from denue6es012.ebgroup.elektrobit.com (213.95.148.172) by
 DS3PEPF0000C380.mail.protection.outlook.com (10.167.23.10) with Microsoft
 SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id
 15.20.9791.48 via Frontend Transport; Mon, 20 Apr 2026 21:18:47 +0000
Received: from ubuntu.localdomain (10.10.178.50) by
 denue6es012.ebgroup.elektrobit.com (10.243.160.140) with Microsoft SMTP
 Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id
 15.2.2562.35; Mon, 20 Apr 2026 23:18:45 +0200
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@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=elektrobit.com header.i="@elektrobit.com" header.h="From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck"; dkim=pass header.s=selector1 header.d=elektrobit.com header.i="@elektrobit.com" header.h="From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck"
ARC-Seal: i=2; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=pass;
 b=Sii/IVxUXMTV1k49uMtS48KeA4w+9HhRxhgQd9XRFSmi2PPotlcHF4u7L2xEOCD1N+agHlIBJ9uGM7v7bu0z7uz94vqKYIpevP/NeaoqkBSBkl2sPSaP7wrZ5cgMLtuHlcBKQXA3N00nSDUWS45EqZPnnd6+1uVGCyTbU3MrLWJfDyE4sutv0juZmWldWdtRKMRe4PzJjLnUVXAzj5zzSbx/U+wZDZPjZUYHYvq82pGJBwDnUotN/Y3oylDJw8vSgyq2EwOoqwBYKhcA0uXPM9NpurJzMo4a3wJp1oEKkHfEC1jyK9SMu6tqWyTCnbP/JpyHCF01xHkmDL90M7bUog==
ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com;
 s=arcselector10001;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1;
 bh=jRLoxsuohqR21r1f42+aEEmWEGpw45nncUOaZm3GjeU=;
 b=NaFB0ba08gifUaHQU+JUAQGz081+UikN6BjY4O4mFROtlEtHTLAPOCg9iOV1Zi2rPFEhzeWZENuvxrstJ9fc1IMFxcXu3AkldQ77+he0xq5CoG/OgJAtE+cM0r1DrDb/sy/4uVZIxojqXvji8SNTKg4vXwrhLv0kR7wkvdUCSUb9TISYYbDDXPtaKfm0qIAKmr8JR1CCazV8qGU349ekZuCKFWiJPpkkA2dFd1V2SB+WG/axt6VaZWoif15EGYrF8gIduvEQ6576Ba/T3coqBlJrDg9dJp2zRIIlJm+NxOI2IA+RVxsa8dR9zVGwpUscgOKmjE5jCuFPcYE0tew16w==
ARC-Authentication-Results: i=2; mx.microsoft.com 1; spf=pass (sender ip is
 40.93.4.10) smtp.rcpttodomain=amd.com smtp.mailfrom=elektrobit.com;
 dmarc=pass (p=quarantine sp=none pct=100) action=none
 header.from=elektrobit.com; dkim=pass (signature was verified)
 header.d=elektrobit.com; arc=pass (0 oda=1 ltdi=1
 spf=[1,1,smtp.mailfrom=elektrobit.com]
 dmarc=[1,1,header.from=elektrobit.com])
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=elektrobit.com;
 s=selector1;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck;
 bh=jRLoxsuohqR21r1f42+aEEmWEGpw45nncUOaZm3GjeU=;
 b=ChUuAdw4vp6m0/XRQ+xEY/kOcNhD9O/EkcIjc+1TlKFuf968i6j1WetoTlSu/kq4ydMW2g8sz+vo0FIWOo0eawhNRHjEOnwOJuQqBQIi6gINN21jfkr42mtb/RpOaUO0vFIm+LWi4uOux+ok8VNlsmJCgP7Vnj9NmTCP73GFThc=
X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 40.93.4.10)
 smtp.mailfrom=elektrobit.com; dkim=pass (signature was verified)
 header.d=elektrobit.com;dmarc=pass action=none header.from=elektrobit.com;
Received-SPF: Pass (protection.outlook.com: domain of elektrobit.com
 designates 40.93.4.10 as permitted sender) receiver=protection.outlook.com;
 client-ip=40.93.4.10; helo=BL2PR08CU001.outbound.protection.outlook.com; pr=C
ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none;
 b=SBG0StmCAGR3YsdIb2+XbOcI+ed97BpzQk012Z424lQNHEEdMdcUli8fYZasRhymTiqyeafHOkHQYFgCaRPadj4ozsE7NCSmEdW8pSQxEQtIn2s2bU9utkhGnCkyK1oZNj8Ptcc1PczZb6IsY1j3X/+mh+5LUp1FntRfiarH0Nd/BJ4JigWBDNc4GFzFri+iHvxopbRqipg+pYRiAar3jWAnK3j5He+US9UkFgGRtWGPDBzDlahfPXh9ugJDgfBj8CS8/+clXYuhldoN9xsKwWQ5MYXPIDIlOfsBJzCWLu5aTM8GUb+4Gf8rDHZgY1Dt0qRl3yT0/7psD2DICzOGrg==
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com;
 s=arcselector10001;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1;
 bh=jRLoxsuohqR21r1f42+aEEmWEGpw45nncUOaZm3GjeU=;
 b=ytqHZY9qtJ9M2EEqBDeBgzJpsq+zVZS1NMJxTER3T0QPvG/6n5VxCgnaileKzI3SS1TS85ZIKhMCyoksGao2JSDG6GRCau8NHXKYY9sH1WIuTN+vEqOlQb8YC+2GOUMfB3OHFPgyoisJtNf/aDj6/rpQY0P+pEgH+c3xhPqwGZ0faQ7m/CZE5REMquRZmB6DNkMBDusruxZ1RcrgsNbQgIj7fnv12tlzJ5ElRs0sCZj1TIFdZj98IIxokAIqBeczJP0hyuzzYE77NSPzIyQ3L6hcu95s7zmWN3YM+bg+1/aA3TCcYLPu1/2Rl/5dlSifc2kTok7lhbL+5dsvBJ7fHw==
ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass (sender ip is
 213.95.148.172) smtp.rcpttodomain=lists.xenproject.org
 smtp.mailfrom=elektrobit.com; dmarc=pass (p=quarantine sp=none pct=100)
 action=none header.from=elektrobit.com; dkim=none (message not signed);
 arc=none (0)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=elektrobit.com;
 s=selector1;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck;
 bh=jRLoxsuohqR21r1f42+aEEmWEGpw45nncUOaZm3GjeU=;
 b=ChUuAdw4vp6m0/XRQ+xEY/kOcNhD9O/EkcIjc+1TlKFuf968i6j1WetoTlSu/kq4ydMW2g8sz+vo0FIWOo0eawhNRHjEOnwOJuQqBQIi6gINN21jfkr42mtb/RpOaUO0vFIm+LWi4uOux+ok8VNlsmJCgP7Vnj9NmTCP73GFThc=
X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 213.95.148.172)
 smtp.mailfrom=elektrobit.com; dkim=none (message not signed)
 header.d=none;dmarc=pass action=none header.from=elektrobit.com;
Received-SPF: Pass (protection.outlook.com: domain of elektrobit.com
 designates 213.95.148.172 as permitted sender)
 receiver=protection.outlook.com; client-ip=213.95.148.172;
 helo=denue6es012.ebgroup.elektrobit.com; pr=C
From: Rose Spangler <Rose.Spangler@elektrobit.com>
To: <xen-devel@lists.xenproject.org>
CC: Rose Spangler <Rose.Spangler@elektrobit.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>, Aqib Javaid
	<Aqib.Javaid@elektrobit.com>
Subject: [RFC PATCH v6 06/43] arm/altp2m: Add template arch-specific altp2m.c/altp2m.h
Date: Mon, 20 Apr 2026 17:18:30 -0400
Message-ID: <20260420211831.208600-4-Rose.Spangler@elektrobit.com>
X-Mailer: git-send-email 2.34.1
In-Reply-To: <20260420211831.208600-1-Rose.Spangler@elektrobit.com>
References: <20260420211104.208444-1-Rose.Spangler@elektrobit.com>
 <20260420211831.208600-1-Rose.Spangler@elektrobit.com>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit
Content-Type: text/plain
X-Originating-IP: [10.10.178.50]
X-ClientProxiedBy: denue6es012.ebgroup.elektrobit.com (10.243.160.140) To
 denue6es012.ebgroup.elektrobit.com (10.243.160.140)
X-EOPAttributedMessage: 1
X-MS-Exchange-SkipListedInternetSender:
 ip=[213.95.148.172];domain=denue6es012.ebgroup.elektrobit.com
X-MS-TrafficTypeDiagnostic:
	DS3PEPF0000C380:EE_|CYXPR08MB9211:EE_|SA2PEPF00003AE5:EE_|CO1PR08MB7676:EE_
X-MS-Office365-Filtering-Correlation-Id: ea45ce5e-ae5d-4c0e-5d84-08de9f226ede
X-SM-outgoing: yes
X-MS-Exchange-SenderADCheck: 1
X-MS-Exchange-AntiSpam-Relay: 0
X-Microsoft-Antispam-Untrusted:
 BCL:0;ARA:13230040|36860700016|376014|82310400026|1800799024|18002099003|22082099003|56012099003;
X-Microsoft-Antispam-Message-Info-Original:
 =?us-ascii?Q?EuTMwFlv2AumOzZ//tmi1+zTpOBpO9k7tqwuUCBt7LnQXphO2kXM2hSdHNBJ?=
 =?us-ascii?Q?Ya/v+AnmYQfa7UTjYvxRw+9z21VePzCQlKmHN6daKLehagR44A3Xi+USZV15?=
 =?us-ascii?Q?nt+S2lU8VsDxGk+PlMfk1+9IWCDL4kplzqNgkv7ENIRMEuD5pR5RCh5ah5iy?=
 =?us-ascii?Q?upcVSKCl6G/p2Smv35REz/Yh0QDT9vzXtY26CWSkqAC+LtBaxGZoUBlUC7aX?=
 =?us-ascii?Q?+PYtqQUzJzZm94wWtC6IZZF+hgPbLoV+KhwjmRHRWgyP0Uf6F/zVfRkpYWj5?=
 =?us-ascii?Q?Jsaq8yL3OUHarg8PvurvQ44vDdmISP9Ytcon1L9EdXUFZcujkys34BHGNiIn?=
 =?us-ascii?Q?QX6FCp02pbtOs4lOtCgX2iwEa90NMSxnG1Ap2atRLdX+qyblZ60MSklDQqcQ?=
 =?us-ascii?Q?rurZHlHxCJl70PdsWH9Xhmt+KvEw67EQkOd2R1KDQkmWRcBK55++2mU49hGV?=
 =?us-ascii?Q?yswo8OcFBHA1yZhogxIHAiToCRljXU0Q8OxhdDKu307NjH35jRUeYRjH0JQE?=
 =?us-ascii?Q?kl8LaqDg1LCEfcrwUfzsVxA50OsRfHpQVOItRo58cTvZOiqGTAYOVG8tHC+g?=
 =?us-ascii?Q?G8wJS4vny9/wl4iz5XD1pF4zIRZYdO7zRzxVxLla6P9WcSSV6ZcpRwcZsP5j?=
 =?us-ascii?Q?P/NIKuJQQDbZJLW5aCP+Z0B44bIhOhl1wxs8MoPz8kG7TDS5PCqmbnVd9+Yq?=
 =?us-ascii?Q?NFZF1UqhYoW59SD9evI4MTNSldkYmljpXT8CMZoakSELjkjuBLb0dpdixLo5?=
 =?us-ascii?Q?DdkDrWlz8W5Z4i0ha+AEbNUDmLZAllZPT0OUCQI7e/1DlwnkvwVGSXymRXfK?=
 =?us-ascii?Q?8dqBRPDjKrvrQoBgqDKCrUV5dF4bpyHP2Gj6z20Xhg3pFfzSqxYEWqLL6/lA?=
 =?us-ascii?Q?wgXX3ZF/zQBaFkFziqUF6ZWLdbT9mDQJlnHrHxEM2svxoeVthavglf7mSJit?=
 =?us-ascii?Q?iuim6f7zUgT7NGkQvrhaM928gh+HYtlNN6fO2lEAbdDiqyZCBEEz5+niQKrm?=
 =?us-ascii?Q?G9DHffJA822Cxgu9vuh98i0BBfQHXd6r9BhaeVhyV0Pkvv8y48vc418Qpwvb?=
 =?us-ascii?Q?blnpasJYciD/B0hYDLzckBMpLs0XvmIPMpVKVrY7ZNulV3RSaGxytMQqafdq?=
 =?us-ascii?Q?k7sF8KW9GbcOC9ysjmFX6mBSODj3Pm13niwKVSHa8esQBFsNCTyIOwLiNqW+?=
 =?us-ascii?Q?PCVXD8i8CWA72fUpasxNQEg/TGMKrY+lJs+Cl8s3zNhaFly27UjoNG9ucPFH?=
 =?us-ascii?Q?QkMvMP8PnQvdYlC58EX+?=
X-Forefront-Antispam-Report-Untrusted:
 CIP:213.95.148.172;CTRY:DE;LANG:en;SCL:1;SRV:;IPV:CAL;SFV:NSPM;H:denue6es012.ebgroup.elektrobit.com;PTR:eth1-fw1-nbg6.eb.noris.de;CAT:NONE;SFS:(13230040)(36860700016)(376014)(82310400026)(1800799024)(18002099003)(22082099003)(56012099003);DIR:OUT;SFP:1102;
X-Exchange-RoutingPolicyChecked:
 M//TOup4wnYy4+oUrapPZtP4ksf7q3cfNFMM2P3Rh7TFCi7xBBRQ2wysu1ffD7Qk54wW2y9vQyC+yprq20aAK+tUPuouVRvyHuoHpvF6XHbF+BgAbQcQC3ghjLVMBauk9jynL488zcpZ+43pA+/LyaMNqETlAft+mIMW7r8SoaX4nih9BAl67eGrSE3vfLeoRGayr3nodQ5wGBxqJLLq+2McIoJnN2haIBusFTc+hxOx8CydBKM8dm3PXV+8dgawjpSSSixqtAB01RWG1ErQJ2O8qBEvl8ZzTjGEJcE+BCBETQhmW2TfkvpQ1KuaBO2otsIm1JuFHmo2ykHOnh1qeQ==
X-MS-Exchange-Transport-CrossTenantHeadersStamped: CYXPR08MB9211
X-MS-Exchange-SkipListedInternetSender:
 ip=[40.93.4.10];domain=BL2PR08CU001.outbound.protection.outlook.com
X-MS-Exchange-ExternalOriginalInternetSender:
 ip=[40.93.4.10];domain=BL2PR08CU001.outbound.protection.outlook.com
X-MS-Exchange-Transport-CrossTenantHeadersStripped:
 SA2PEPF00003AE5.namprd02.prod.outlook.com
X-MS-PublicTrafficType: Email
X-MS-Office365-Filtering-Correlation-Id-Prvs:
	8bbe9914-94e0-4274-1a9b-08de9f22695d
X-Microsoft-Antispam:
	BCL:0;ARA:13230040|36860700016|1800799024|376014|14060799003|156008|82310400026|35042699022|56012099003|22082099003|18002099003;
X-Microsoft-Antispam-Message-Info:
	=?us-ascii?Q?cO/Wrs+BSzJX6lQLR4/MbpT+A9t+J76hrSlowOe2bqpb93m8hb++gfxtoUfU?=
 =?us-ascii?Q?hig4aCfnLPtpFy1rC4pxG9IyVuCWyTzTTg+/9hmt5/2eWP165QqNWxfJgir1?=
 =?us-ascii?Q?mJa3efVzYI2eyt/+tuX/5FaZVCZqeI4BXsbaSeBHtqSA/yKnnjbuklN9ZG7b?=
 =?us-ascii?Q?aaUxzTJTvvG/ymwU/x36NKv2Ts4ZYUDIYopq2LUVwhOZ4/w5ZQNsPw4hD33p?=
 =?us-ascii?Q?doC/fYoPhuKUI/KNJW08IKQ0qxemu+0kZxHBxsh072vWCTN8lUqg6+2PQxmP?=
 =?us-ascii?Q?RM94/ng+AGAHVS90ndN+fjkl42r1KASzDlXLOMRF6I/5Rl4RU4i6RHU4RwV/?=
 =?us-ascii?Q?M2NsZ4GqRaLSFHSmI8965QxJKkk19dTI6j8yvUFzpdia4tkIcjirimkxof+G?=
 =?us-ascii?Q?6+r3LrzeRgixvE+hykmv9tBllEhWlHmnjlExXppCNLpnnsYgpI2sC+ymdnq3?=
 =?us-ascii?Q?UFqYE5dV6NQBcvefKoxmW/rAEvk90Ao8gPuvJHNrG00WIlMFCrOHKXwK0Jvp?=
 =?us-ascii?Q?h3+ttSWwXkCuYynf8VZ+Mhr5SoeYqVF1MSux6DjfQ3a5AeQB9/Qv6UFKzcbm?=
 =?us-ascii?Q?0F/sVyqquk2vBwJfSVzFaeAWw+2pyuk2jLRXKrLdEoRuuIVANiqxllr7Gg6d?=
 =?us-ascii?Q?WhtU4vAUJwURZLJacW/pZYIPlgA/3WStPCB86oG918IKLDacE8jMhVUbq1t0?=
 =?us-ascii?Q?m2fr3EyDPm+d6w1ATtHD1SgPgNV0UalqBNrrRSd+oGwf+L0ThCotd7zk5/zG?=
 =?us-ascii?Q?1gEgeS7G3irBsF9JCtN1q7yQgIquyo8EB40flj8GfgLgag6LLdcvKzKYHIKE?=
 =?us-ascii?Q?Jo9qJy5ZTvH4Mq8HyuJYLtJkiH222W6fq196jhbAzV8wWkxVaiaZnpjbqNZB?=
 =?us-ascii?Q?0YQ8GTWYhXAVfqrwpsewkmuPI49gC+hjCPspbyj7o8cKg4wokL8erZ7f5Iz4?=
 =?us-ascii?Q?WBslL44QUsL9YhI2rNToiinYWnqXSDHjwCcM71ZMwrzfYnk+7NG/jrYFkjoD?=
 =?us-ascii?Q?gMOimvEIIUQ3y0btibnDaN/rU38+6vkcuEhM176uolO+3EbdU0AjnOSZ0PZX?=
 =?us-ascii?Q?uQPYdWEUJqiXIsZvO0aPRFfbQ1JQZ5jn5iH/eBed3WhXKnM0nqDYvUb6WPsD?=
 =?us-ascii?Q?CsjpFYn6JUE0Rm/Mlef0FgRxF38scBWtD6CA3+pudVH8hEcBOtt9I1s3nXhA?=
 =?us-ascii?Q?4UjGaLoU4nuTMStvMStDCFtvh6y+CTbxB3KACiqvkYmBSo6siyhTs0WtN/TY?=
 =?us-ascii?Q?tP6JG420dB8OmAx2vE9C?=
X-Forefront-Antispam-Report:
	CIP:4.79.107.243;CTRY:US;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:BL2PR08CU001.outbound.protection.outlook.com;PTR:mail-bl2pr08cu00102.outbound.protection.outlook.com;CAT:NONE;SFS:(13230040)(36860700016)(1800799024)(376014)(14060799003)(156008)(82310400026)(35042699022)(56012099003)(22082099003)(18002099003);DIR:OUT;SFP:1102;
X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1
X-MS-Exchange-AntiSpam-MessageData-0:
	sviIq+Ub8DE3421+n1v2Mqm6OnD2RCSnTAjNP2Tc2RN6LqiUiQbZk3pVBTodcwHqpn50WAkBajPtb3lE4Fz4go+/N68+bpOyjiqsT4r2OkGWAqY0osln+djsgy1g+TQKXBXP59VsO6w4JboqMTrx5fgKXyN8VcuvxBapmKnK5vdJEqCh3knOfTP/wzQYWLzZIVL1u2Y1Y9QJqRW8LKATh0TKjfAKw6Ln3wT8fYABpGKjsDIN82afuQfYdd5sDV5MrS2m1ZLN451LLrvxveEJpHQH6oz0+02x5HUjSs+vaImB9FvL71XhZH//BVf+TyedKR10hO45ZcR9ryRXdYxfjJNKUAbC6U/+qm40r3xgCJpS1CPcQqI419lbDLa4YZoCakEjtOE8YSt4svFSo9UT/oXId2y4+BRoxikCr4Xt+zK8oqcncR9wse1laGhy75Br
X-OriginatorOrg: elektrobit.com
X-MS-Exchange-CrossTenant-OriginalArrivalTime: 20 Apr 2026 21:18:56.7437
 (UTC)
X-MS-Exchange-CrossTenant-Network-Message-Id: ea45ce5e-ae5d-4c0e-5d84-08de9f226ede
X-MS-Exchange-CrossTenant-Id: e764c36b-012e-4216-910d-8fd16283182d
X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=e764c36b-012e-4216-910d-8fd16283182d;Ip=[4.79.107.243];Helo=[usbth1es003.ebgroup.elektrobit.com]
X-MS-Exchange-CrossTenant-AuthAs: Internal
X-MS-Exchange-CrossTenant-AuthSource: TreatMessagesAsInternal-SA2PEPF00003AE5.namprd02.prod.outlook.com
X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem
X-MS-Exchange-Transport-CrossTenantHeadersStamped: CO1PR08MB7676
X-purgate-ID: tlsNG-16d1c6/1776719944-91D83D75-C4E09421/0/0
X-purgate-type: clean
X-purgate-size: 3218

Similarly to the earlier common altp2m.c/altp2m.h commit, this commit adds
a template altp2m.c and altp2m.h file for ARM to be added to in later
commits.  Creating a commit with just the template file additions makes it
easier to reorder later commits which add to these files.

This commit can be squashed into the first commit which actually adds
something to altp2m.c/altp2m.h for the actual submission if that would be
preferred.

This is commit 6/8 of the preparation phase.

Signed-off-by: Rose Spangler <Rose.Spangler@elektrobit.com>
Signed-off-by: Aqib Javaid <Aqib.Javaid@elektrobit.com>
---
v6: Introduced this patch.
---
 xen/arch/arm/Makefile             |  1 +
 xen/arch/arm/altp2m.c             | 16 +++++++++++++
 xen/arch/arm/include/asm/Makefile |  1 -
 xen/arch/arm/include/asm/altp2m.h | 37 +++++++++++++++++++++++++++++++
 4 files changed, 54 insertions(+), 1 deletion(-)
 create mode 100644 xen/arch/arm/altp2m.c
 create mode 100644 xen/arch/arm/include/asm/altp2m.h

diff --git a/xen/arch/arm/Makefile b/xen/arch/arm/Makefile
index 69200b27280d..d995d4ff7aa1 100644
--- a/xen/arch/arm/Makefile
+++ b/xen/arch/arm/Makefile
@@ -12,6 +12,7 @@ obj-$(CONFIG_TEE) += tee/
 obj-$(CONFIG_HAS_VPCI) += vpci.o
 
 obj-$(CONFIG_HAS_ALTERNATIVE) += alternative.o
+obj-$(CONFIG_ALTP2M) += altp2m.o
 obj-y += cpuerrata.o
 obj-y += cpufeature.o
 obj-y += decode.o
diff --git a/xen/arch/arm/altp2m.c b/xen/arch/arm/altp2m.c
new file mode 100644
index 000000000000..2bd1ff4df223
--- /dev/null
+++ b/xen/arch/arm/altp2m.c
@@ -0,0 +1,16 @@
+/* SPDX-License-Identifier: GPL-2.0-only */
+/*
+ * altp2m.c: Alternate p2m
+ *
+ * Copyright (c) 2016 Sergej Proskurin <proskurin@sec.in.tum.de>
+ */
+
+/*
+ * 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/arm/include/asm/Makefile b/xen/arch/arm/include/asm/Makefile
index 4565baca6a4d..fef4dd42b6cb 100644
--- a/xen/arch/arm/include/asm/Makefile
+++ b/xen/arch/arm/include/asm/Makefile
@@ -1,5 +1,4 @@
 # SPDX-License-Identifier: GPL-2.0-only
-generic-y += altp2m.h
 generic-y += device.h
 generic-y += hardirq.h
 generic-y += iocap.h
diff --git a/xen/arch/arm/include/asm/altp2m.h b/xen/arch/arm/include/asm/altp2m.h
new file mode 100644
index 000000000000..ca836bae7330
--- /dev/null
+++ b/xen/arch/arm/include/asm/altp2m.h
@@ -0,0 +1,37 @@
+/* SPDX-License-Identifier: GPL-2.0-only */
+/*
+ * altp2m.h: Alternate p2m
+ *
+ * Copyright (c) 2014, Intel Corporation.
+ * Copyright (c) 2016, Sergej Proskurin <proskurin@sec.in.tum.de>.
+ */
+
+#ifndef __ASM_ARM_ALTP2M_H
+#define __ASM_ARM_ALTP2M_H
+
+#include <xen/sched.h>
+
+static inline bool altp2m_supported(void)
+{
+    /* Not implemented yet */
+    return false;
+}
+
+/* Alternate p2m VCPU */
+static inline uint16_t altp2m_vcpu_idx(const struct vcpu *v)
+{
+    /* Not implemented yet */
+    BUG();
+    return 0;
+}
+
+#endif /* __ASM_ARM_ALTP2M_H */
+
+/*
+ * Local variables:
+ * mode: C
+ * c-file-style: "BSD"
+ * c-basic-offset: 4
+ * indent-tabs-mode: nil
+ * End:
+ */
-- 
2.34.1



From xen-devel-bounces@lists.xenproject.org Mon Apr 20 21:19:07 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 20 Apr 2026 21:19:07 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1287444.1567868 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wEw1L-00060X-Cy; Mon, 20 Apr 2026 21:19:07 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1287444.1567868; Mon, 20 Apr 2026 21:19: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 1wEw1L-0005zt-6t; Mon, 20 Apr 2026 21:19:07 +0000
Received: by outflank-mailman (input) for mailman id 1287444;
 Mon, 20 Apr 2026 21:19:05 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <Rose.Spangler@elektrobit.com>) id 1wEw1J-0005vn-N6
 for xen-devel@lists.xenproject.org; Mon, 20 Apr 2026 21:19:05 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wEw1J-00CBeh-3g
 for xen-devel@lists.xenproject.org; Mon, 20 Apr 2026 23:19:05 +0200
Received: from [10.42.69.5] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <Rose.Spangler@elektrobit.com>)
 id 69e697db-bab6-0a2a0a5309dd-0a2a450599f4-30
 for <xen-devel@lists.xenproject.org>; Mon, 20 Apr 2026 23:19:05 +0200
Received: from [40.93.198.99]
 (helo=CY7PR03CU001.outbound.protection.outlook.com)
 by tlsNG-c201ff.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.1)
 (envelope-from <Rose.Spangler@elektrobit.com>)
 id 69e69847-aaa8-0a2a45050019-285dc6639c78-3
 for <xen-devel@lists.xenproject.org>; Mon, 20 Apr 2026 23:19:04 +0200
Received: from SJ0PR13CA0232.namprd13.prod.outlook.com (2603:10b6:a03:2c1::27)
 by LV8PR08MB8955.namprd08.prod.outlook.com (2603:10b6:408:1f9::7)
 with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9818.33; Mon, 20 Apr
 2026 21:18:59 +0000
Received: from CO1PEPF00012E7F.namprd03.prod.outlook.com
 (2603:10b6:a03:2c1:cafe::c3) by SJ0PR13CA0232.outlook.office365.com
 (2603:10b6:a03:2c1::27) with Microsoft SMTP Server (version=TLS1_3,
 cipher=TLS_AES_256_GCM_SHA384) id 15.20.9791.48 via Frontend Transport; Mon,
 20 Apr 2026 21:18:59 +0000
Received: from usbth1es003.ebgroup.elektrobit.com (4.79.107.243) by
 CO1PEPF00012E7F.mail.protection.outlook.com (10.167.249.54) with Microsoft
 SMTP Server (version=TLS1_3, cipher=TLS_AES_256_GCM_SHA384) id 15.20.9791.48
 via Frontend Transport; Mon, 20 Apr 2026 21:18:58 +0000
Received: from usbth1es003 (localhost [127.0.0.1])
 by usbth1es003.ebgroup.elektrobit.com (Postfix) with SMTP id 4fzyz61K4Lz1wdP; 
 Mon, 20 Apr 2026 14:18:58 -0700 (PDT)
Received: from SJ0PR08CU001.outbound.protection.outlook.com
 (mail-sj0pr08cu00102.outbound.protection.outlook.com [40.93.1.74])
 (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)
 key-exchange secp384r1 server-signature RSA-PSS (2048 bits) server-digest
 SHA256) (No client certificate requested)
 by usbth1es003.ebgroup.elektrobit.com (Postfix) with ESMTPS;
 Mon, 20 Apr 2026 14:18:57 -0700 (PDT)
Received: from DS7P222CA0023.NAMP222.PROD.OUTLOOK.COM (2603:10b6:8:2e::9) by
 CH3PR08MB9538.namprd08.prod.outlook.com (2603:10b6:610:1c3::10) with
 Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9818.32; Mon, 20 Apr
 2026 21:18:50 +0000
Received: from DS3PEPF0000C37D.namprd04.prod.outlook.com
 (2603:10b6:8:2e:cafe::31) by DS7P222CA0023.outlook.office365.com
 (2603:10b6:8:2e::9) with Microsoft SMTP Server (version=TLS1_3,
 cipher=TLS_AES_256_GCM_SHA384) id 15.20.9791.48 via Frontend Transport; Mon,
 20 Apr 2026 21:18:50 +0000
Received: from denue6es012.ebgroup.elektrobit.com (213.95.148.172) by
 DS3PEPF0000C37D.mail.protection.outlook.com (10.167.23.7) with Microsoft SMTP
 Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id
 15.20.9791.48 via Frontend Transport; Mon, 20 Apr 2026 21:18:49 +0000
Received: from ubuntu.localdomain (10.10.178.50) by
 denue6es012.ebgroup.elektrobit.com (10.243.160.140) with Microsoft SMTP
 Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id
 15.2.2562.35; Mon, 20 Apr 2026 23:18:46 +0200
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@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=elektrobit.com header.i="@elektrobit.com" header.h="From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck"; dkim=pass header.s=selector1 header.d=elektrobit.com header.i="@elektrobit.com" header.h="From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck"
ARC-Seal: i=2; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=pass;
 b=SUXzjf+P8DXlRO8qHxgMyOiAzXbF6GzMAnMvC/upzYUeO1iaj68loWvFfON65FTvrVsdT/RVMIiTgfiLT0yWfqtPSn5PcALw716oR3UkrFqyUxVbpK5YjB/ot9GHO5XGKGIJ6zW0IE+QjPy0KsmupIq4xjqzH6Z5quUKffFnCoSRqrUP7yF+q+I+eNNS1CKlRMkxQATJZYSW8Q1VPefXHIccB6WlUbjpaMV3FbzVAGdho64dUrroTPiXLaUZ4IxhMvRHuP1npwt6XJYh7O3tE70+IGZDLg5ySGgLlzVhZn8SHGK5PXi4f7lM5zTb6uQn7RTQQXqXhtk2JUJauwSM1w==
ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com;
 s=arcselector10001;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1;
 bh=mUHlmqTGoOfpLiPTAGkw3ZzBrGFd58Ji7foro+DAZoU=;
 b=Hs7zSBKIelIqSF6Fx2qCws6Rt4H345CXSgBJx/f7dMi1SSh6hi/Uwx0hzPiQ7klNFXdb9s9IAGuDzwiHXV1qp3FGHjc+PgKbkRy7ptBaHKVric6siwpY+1TgMfFdIDdSy6YWTFDPx99tm7RTq8eKlknBna0bw4D1Is9NVx3Zl7/r5KdmNhcaOJvjjQL2X/7cAXiUbuv+uMTyVN4TAHjpASxfqYDaXZIylEeBQd36KFUSxlVlZ81D5eLE6SzvtqWyT0MKY/SgOwP7KAqQiQLssaW9TT3mkebQIhnaXaxQvhXej3cy7rrC62ldtqitosRbzNs5r25h7/bt7epZeqEocQ==
ARC-Authentication-Results: i=2; mx.microsoft.com 1; spf=pass (sender ip is
 40.93.1.74) smtp.rcpttodomain=amd.com smtp.mailfrom=elektrobit.com;
 dmarc=pass (p=quarantine sp=none pct=100) action=none
 header.from=elektrobit.com; dkim=pass (signature was verified)
 header.d=elektrobit.com; arc=pass (0 oda=1 ltdi=1
 spf=[1,1,smtp.mailfrom=elektrobit.com]
 dmarc=[1,1,header.from=elektrobit.com])
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=elektrobit.com;
 s=selector1;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck;
 bh=mUHlmqTGoOfpLiPTAGkw3ZzBrGFd58Ji7foro+DAZoU=;
 b=e7ZbRFwwwtyTKhD9oMfXn1O7FJUhndfHMw81WBJsusiwZxIfCVAIQ/V9yaY57p8Yl5AlaugJyU4i4aZF3hXaeshcYYeC/hn+yatx3AUydXtO19JCFSxpj60PSD4CNPcBmP3unl47JDktMYV3cLxVY2fgOQWkd/HYMh59OWs/nKU=
X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 40.93.1.74)
 smtp.mailfrom=elektrobit.com; dkim=pass (signature was verified)
 header.d=elektrobit.com;dmarc=pass action=none header.from=elektrobit.com;
Received-SPF: Pass (protection.outlook.com: domain of elektrobit.com
 designates 40.93.1.74 as permitted sender) receiver=protection.outlook.com;
 client-ip=40.93.1.74; helo=SJ0PR08CU001.outbound.protection.outlook.com; pr=C
ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none;
 b=lteC48OrWg27m/c40n1ydVpKtDpXX5JhGjbOisVzz4bmwGpw8ffxyz3uqL8C369rwaeTOEf4uRoSla+gwNT02Z5n25/e9yAH8KjsOV7sOxE+gzpe+Hgi8jz5j7slpYKbVCz4/rl5U7RQ4m1dF8dymaWjx11WLTMX/IsZuQ9ecXWhz3HelmpI6G6lALkWgdwGTb6jo21HieuOfhGjGzmsAGgTCgluZ1vo6FECS7NlU8Nfh76U1ncx8ntNXmcT6jLq/9sNfhD/QoKd5S+HuOPbXwdLFoFL3hYvhNfLaOtqDyASxC6x0/cFC2781JZZfFL2ryVczDMDcbShJoBtQN8JMg==
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com;
 s=arcselector10001;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1;
 bh=mUHlmqTGoOfpLiPTAGkw3ZzBrGFd58Ji7foro+DAZoU=;
 b=PWKowOrVAfNZpL3sRAKqw0Ds1lmFIOt7dtzPTdW9Pk+K10KfduTQaOyBBnJupzxPYcpbML+N4xFfkgFeyGAiZ2EjDJsjn5vm+1koRqEPEsU1yu32w4l8YKsJoT989Dn/Ao1T/RiFAIPMJVtOzB3cyqtTU9eCAh2lJ0nFWEeI/nIcNnjN9YxISkJsbOIh+0oFgEUock3AygKWYQYdPxUygbLgenUMa/F//bDBeg/2O1Az2/B7TlFNmWdEjDbp0sBDXh6OM8cDehxaMRGD4asN0eIQ2SShH6rYvpjf/wob+hs8FLM8CbW5HgQ7syqfkwNK14r7bS5qdHrfG39QK2jZQQ==
ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass (sender ip is
 213.95.148.172) smtp.rcpttodomain=lists.xenproject.org
 smtp.mailfrom=elektrobit.com; dmarc=pass (p=quarantine sp=none pct=100)
 action=none header.from=elektrobit.com; dkim=none (message not signed);
 arc=none (0)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=elektrobit.com;
 s=selector1;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck;
 bh=mUHlmqTGoOfpLiPTAGkw3ZzBrGFd58Ji7foro+DAZoU=;
 b=e7ZbRFwwwtyTKhD9oMfXn1O7FJUhndfHMw81WBJsusiwZxIfCVAIQ/V9yaY57p8Yl5AlaugJyU4i4aZF3hXaeshcYYeC/hn+yatx3AUydXtO19JCFSxpj60PSD4CNPcBmP3unl47JDktMYV3cLxVY2fgOQWkd/HYMh59OWs/nKU=
X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 213.95.148.172)
 smtp.mailfrom=elektrobit.com; dkim=none (message not signed)
 header.d=none;dmarc=pass action=none header.from=elektrobit.com;
Received-SPF: Pass (protection.outlook.com: domain of elektrobit.com
 designates 213.95.148.172 as permitted sender)
 receiver=protection.outlook.com; client-ip=213.95.148.172;
 helo=denue6es012.ebgroup.elektrobit.com; pr=C
From: Rose Spangler <Rose.Spangler@elektrobit.com>
To: <xen-devel@lists.xenproject.org>
CC: Rose Spangler <Rose.Spangler@elektrobit.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>, Aqib Javaid
	<Aqib.Javaid@elektrobit.com>
Subject: [RFC PATCH v6 07/43] arm/altp2m: Introduce CONFIG_ALTP2M Kconfig option
Date: Mon, 20 Apr 2026 17:18:31 -0400
Message-ID: <20260420211831.208600-5-Rose.Spangler@elektrobit.com>
X-Mailer: git-send-email 2.34.1
In-Reply-To: <20260420211831.208600-1-Rose.Spangler@elektrobit.com>
References: <20260420211104.208444-1-Rose.Spangler@elektrobit.com>
 <20260420211831.208600-1-Rose.Spangler@elektrobit.com>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit
Content-Type: text/plain
X-Originating-IP: [10.10.178.50]
X-ClientProxiedBy: denue6es012.ebgroup.elektrobit.com (10.243.160.140) To
 denue6es012.ebgroup.elektrobit.com (10.243.160.140)
X-EOPAttributedMessage: 1
X-MS-Exchange-SkipListedInternetSender:
 ip=[213.95.148.172];domain=denue6es012.ebgroup.elektrobit.com
X-MS-TrafficTypeDiagnostic:
	DS3PEPF0000C37D:EE_|CH3PR08MB9538:EE_|CO1PEPF00012E7F:EE_|LV8PR08MB8955:EE_
X-MS-Office365-Filtering-Correlation-Id: f4ce60f8-f7a9-49a4-7fdf-08de9f226fe1
X-SM-outgoing: yes
X-MS-Exchange-SenderADCheck: 1
X-MS-Exchange-AntiSpam-Relay: 0
X-Microsoft-Antispam-Untrusted:
 BCL:0;ARA:13230040|376014|36860700016|1800799024|82310400026|56012099003|18002099003|22082099003;
X-Microsoft-Antispam-Message-Info-Original:
 =?us-ascii?Q?yIGbfdojykc+W0LEfBmzkFZS0v5cF4OGj7G8dRBJ9ePgkCAjG4+2gimYRmcN?=
 =?us-ascii?Q?qD20HCLUfFk6Pk9jxSeyo32pb4K9xIw61S6iT0cp5SV6QjIJBHHd/c9rXkME?=
 =?us-ascii?Q?b1836kFgfoadn5JBv1LqHM3+PilZ5gQA3JcJamY+Jmt9Ymskcs25LUpU6bFs?=
 =?us-ascii?Q?YXqJuJg3mJAZT/V6iMIvAsUNKowEyJ8iuUHWIzpzfoab5iDdZ0YXPinb5gte?=
 =?us-ascii?Q?m1nIzr+LxgnFf1hgVqlzc3CgTOTeJPgxxyfYiPFlt08fPPI1r3OncLI/lOQA?=
 =?us-ascii?Q?l3MrEUAUZbFXYQpOji9zycsNXIoCzWR3vzVABLkpJ1JLhQqxNyv6K44x1DmG?=
 =?us-ascii?Q?bUzlLE5m4bPjgTOu8kXTqUdZfGdYHIAF32JBjP2IH1DqavOJo/HVGYhsmKrR?=
 =?us-ascii?Q?3tOWBhsbN6yEzudIQRnekIkO907LaPiruRH8U9iu8BSoReSOhgbkOAm9YFB9?=
 =?us-ascii?Q?nxgqiP1qB9v2WjgMPebWi9qImQJqe7vdsrkLFz8Mk1B1XzjCDCDFyzhzO5F6?=
 =?us-ascii?Q?IJ32iBX+FdEO91IXI+AjpvNMeu2y5H0zrvGn0AN4w7Csl+v5yyUWvpBNX6EJ?=
 =?us-ascii?Q?j/I0mLqXTyi2Y5vvbtbCKeLsRdXLn8E6p3FrqkIiExyVIOtwEoXch9IIFv9X?=
 =?us-ascii?Q?N23GBGJq7sIiqijYDaATWCdvlVJJcuAAORWuCw/aK9xwKcJlJrYkI7uevv0Y?=
 =?us-ascii?Q?s32fuRlCoUdVIsKJkFbzXPWrhbNa0fQY6h1J+TbGHlO0uwdvQOJox8LF35zc?=
 =?us-ascii?Q?juyJsUy+ElZGSTF7BU/V5z6Z9Cf2xL2VF4N8TPAmEJasr7E7T0IOQiHeRaCa?=
 =?us-ascii?Q?j8PvDpvIQA9UcgjsON6f4uUQr5wfgla2eMw+VmjiLOivl2zuYBfFMEXr+k4t?=
 =?us-ascii?Q?2vqXA55R0PyUD4wF+njyiMMeEaE7gvPp55V6s+npFjtIXU5UvQhxiB9w05zv?=
 =?us-ascii?Q?piGUKRYJKq+fdusMuGiJfE/fAUwsPSiI7JIlUT+nGUYNE0mOmaa3oAUtDNFx?=
 =?us-ascii?Q?sWBkIf/H/gShkr36mPJ+3FrLhrhw+n2bU4GlyGyH2SxTLNHRoZy9PAQqXemG?=
 =?us-ascii?Q?tI+Qi1chC6lT4jV8NLK30BbxyAJknQY0p3yGU6orXjKQ+ivdT8ARYWjjIUTQ?=
 =?us-ascii?Q?fdI4uBPHxTAlLZOA6i+KcmxJ1GNNddNyJWzVsaoTND/wA6ubQwMuid1+ICwg?=
 =?us-ascii?Q?SgjH07vD1buJlpqNvk+GnZeFCxbJReRb8MhuX4ufq0+nh7gZQgtY0rs+xV1y?=
 =?us-ascii?Q?3MReqfyyWIvs/jEf3EHNqfOFK5Uv5vEwuSQa0DdIpQ=3D=3D?=
X-Forefront-Antispam-Report-Untrusted:
 CIP:213.95.148.172;CTRY:DE;LANG:en;SCL:1;SRV:;IPV:CAL;SFV:NSPM;H:denue6es012.ebgroup.elektrobit.com;PTR:eth1-fw1-nbg6.eb.noris.de;CAT:NONE;SFS:(13230040)(376014)(36860700016)(1800799024)(82310400026)(56012099003)(18002099003)(22082099003);DIR:OUT;SFP:1102;
X-Exchange-RoutingPolicyChecked:
 to26/16KVInQrUMDUrHEymSQql9l3FprZf06pigOpJROWSKMvd+jkj/5qn1CxGvbXiCrkCnn+pKwd7Mf+1mTeXQFbMsYFFQK98shYIj8yj8ahABFQ3Hl2BK+liqwVa3CML5pk2xpIbBip7YPUenkNmQv48W8xvLipS2aVz1blwFgHArzuNCeh/PSyfq//1iQm6wvgxKBYeKCuS6rzZo+z1eDUIJd5o2uSD+qx7hKiJ/+u/6Upd28CcgiCfWCymzzLEvmPDT31tHq7nm77nk6N5dsGfI6kMjHmOQCdMiAWNrIdpbRr0+UvKRUn+pSWQyME617vrw0lQOEZmKUE0FU3w==
X-MS-Exchange-Transport-CrossTenantHeadersStamped: CH3PR08MB9538
X-MS-Exchange-SkipListedInternetSender:
 ip=[40.93.1.74];domain=SJ0PR08CU001.outbound.protection.outlook.com
X-MS-Exchange-ExternalOriginalInternetSender:
 ip=[40.93.1.74];domain=SJ0PR08CU001.outbound.protection.outlook.com
X-MS-Exchange-Transport-CrossTenantHeadersStripped:
 CO1PEPF00012E7F.namprd03.prod.outlook.com
X-MS-PublicTrafficType: Email
X-MS-Office365-Filtering-Correlation-Id-Prvs:
	e3ebf938-d41e-4fd8-5103-08de9f226aa9
X-Microsoft-Antispam:
	BCL:0;ARA:13230040|36860700016|1800799024|376014|14060799003|35042699022|82310400026|156008|56012099003|22082099003|18002099003;
X-Microsoft-Antispam-Message-Info:
	=?us-ascii?Q?ZLtAOaaQVXlqplYbXnL+4t39ufqiRQdrnw1B7aoOFn4olnZTjqf8edi2Xfq1?=
 =?us-ascii?Q?uE/N4uNJjxfkZtqWrVW7k3RhmPSoIIi2UTOYtRPPiSaieduStmaC/hcl4Obg?=
 =?us-ascii?Q?b7YNDMawiOFU+ZvnJ9s//RNvmbj+wqPNMNY9qqy8FaLCGitAQ+S8DQbnnnMU?=
 =?us-ascii?Q?DR0rrN3WbrZPTLrC1Iltkz47iUGSScS49W/QsxkW8cax2q+BEpoLSoJv+kQu?=
 =?us-ascii?Q?ahgiiDb+T0psJ2kDPsm2ar5BLcTRebBkPI39OMgw2CS6t7q6c4s2zlF4Msjt?=
 =?us-ascii?Q?GP1meinw29+6+k6MdPW2Yks/TfowQ13zuM/VpW9fhpFnz8zZlZSTWAOqM3f8?=
 =?us-ascii?Q?AkNt35wINQo/cWgJTZPfaDggTRSjGQ9XAwOcIRumhjD98Hq52lgoXHuoL8O6?=
 =?us-ascii?Q?P+ewXxEeSvpMupj1A22CFOlvbgxRWe2zwn2AuLYsuJOeJ/4UM0uPkisNzFlb?=
 =?us-ascii?Q?UplcTPVvEDMsnNOfu1tFkcF+56t/ncjBqT3uGwdZGbqh6PjaTl5R5l8g1npC?=
 =?us-ascii?Q?UaggypVGZDAwPq45wwU2MYucRm1RY7s1xtqCTsI/2MdbIt7RWhe58JG2JJbQ?=
 =?us-ascii?Q?GNnKuLFv4Je7pCJ+vY1z9MKCwZmHxWiYetlVgeSlH7P3TG8ueQOiLGkxQBFr?=
 =?us-ascii?Q?PrKztdITYXIp/g+PXozYkZeGesoHgpq/m/LeEx5hl8CpD6xyc28KqS0qWdZp?=
 =?us-ascii?Q?FFcA/H4DNDv9Xwy2ZIB1f4GiQmraxbfYjLKpxeexj3O/08HxGwq5/I06u1tf?=
 =?us-ascii?Q?0nDrKKN4rH+pi4tg20X+PZlda5rakVcMI/DqQWgm2xUMXqAGpO9rLbtRBxgN?=
 =?us-ascii?Q?hL+Oa5FaInZtidTjnTMwUzCf65aAmFhBGmpDsUulRGgfDte7PhdPhLKGFXGy?=
 =?us-ascii?Q?I9R7oeO3NA5pOLhGlxuu+hrcDYeiYs5qalpenP/Mul1JUCWdYwZSUzmoldSa?=
 =?us-ascii?Q?Bxcl2OZYTPFYElsBaqEAWkuJ8eCB8xf6a1WDWLvJ3VFT3MrZb9WooBMZhb3m?=
 =?us-ascii?Q?sBkqj3B8nquPExanLaJdRE6x4ZX6mZr40tHNqp8EcRMkYlWox/jMHMoOcLZ7?=
 =?us-ascii?Q?MprW2U0OtuBb44u0ejll9A8cMMRQNHHGlWF/hWfDRU+WXr/okIVZIq/CIQ9L?=
 =?us-ascii?Q?Ggkj29smDmPu3tQkIwa9qLnsGpLypb1CjoXdeWjEWDNcqO08jiHmhR5vW7+A?=
 =?us-ascii?Q?k7R8I8+UY6EblefGZFk4xx6SmyC3Zkb4pthw0Z41TLvT4p7v1+wVkXQySqNE?=
 =?us-ascii?Q?0YYdueDF08aqvgLxATDAiI+e5irOZrepoLasEtXYIg=3D=3D?=
X-Forefront-Antispam-Report:
	CIP:4.79.107.243;CTRY:US;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:SJ0PR08CU001.outbound.protection.outlook.com;PTR:mail-sj0pr08cu00102.outbound.protection.outlook.com;CAT:NONE;SFS:(13230040)(36860700016)(1800799024)(376014)(14060799003)(35042699022)(82310400026)(156008)(56012099003)(22082099003)(18002099003);DIR:OUT;SFP:1102;
X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1
X-MS-Exchange-AntiSpam-MessageData-0:
	ag6eRo84iH94sY1ynTQf5oD+Ft0TYRTySSJCLz0yYbH/RtN4f+v7AxJkBB5dp0BLjMQU/1S5tmw+iRg08H26OG11VSroEmrfL3KvcXhrurh3UG2md7BhfN8Y/kVzSjtI+upwIZFD4KmfsHvsdmJrUrkXWTWAIm8eFmK+di8LD1cvpYqxdbMpmAy028KjRboq1gZCpEs0JZEliH9AcgquLJ+G7irIuRdCsdQhINp+prEdrJCxdyNdsxJksH2/MUYaQb4l/rsiCnfm5i+ZgM9gdu2b4/JMyUaxi2zwn8vuis08TvChK6L5QpKwB6rpwRq8po/cx6PqyOV1B4V7Emtjs7Xhd/2XOry9g0l4MEz6YuK/zncx+kcGjfZUVnQVN+DLIjqMxZu+46fdglo5YZQUabhoOKW6PsnvN21fXlOHQ4lZLalFBagWDS1aY4489Adk
X-OriginatorOrg: elektrobit.com
X-MS-Exchange-CrossTenant-OriginalArrivalTime: 20 Apr 2026 21:18:58.7032
 (UTC)
X-MS-Exchange-CrossTenant-Network-Message-Id: f4ce60f8-f7a9-49a4-7fdf-08de9f226fe1
X-MS-Exchange-CrossTenant-Id: e764c36b-012e-4216-910d-8fd16283182d
X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=e764c36b-012e-4216-910d-8fd16283182d;Ip=[4.79.107.243];Helo=[usbth1es003.ebgroup.elektrobit.com]
X-MS-Exchange-CrossTenant-AuthAs: Internal
X-MS-Exchange-CrossTenant-AuthSource: TreatMessagesAsInternal-CO1PEPF00012E7F.namprd03.prod.outlook.com
X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem
X-MS-Exchange-Transport-CrossTenantHeadersStamped: LV8PR08MB8955
X-purgate-ID: tlsNG-c201ff/1776719945-E97A6443-87C72492/0/0
X-purgate-type: clean
X-purgate-size: 2817

Following the x86 implementation in commit e96831ece819, this commit adds
the CONFIG_ALTP2M Kconfig option for ARM. This makes it possible to build
Xen without building altp2m code.

This commit also implements a stub for p2m_altp2m_check, as some
implementation is needed when CONFIG_ALTP2M is enabled. This is due to a
call to p2m_altp2m_check in vm_event.c which is gated by CONFIG_ALTP2M.

This is commit 7/8 of the preparation phase.

Signed-off-by: Rose Spangler <Rose.Spangler@elektrobit.com>
Signed-off-by: Aqib Javaid <Aqib.Javaid@elektrobit.com>
---
v6: Introduced this patch.
---
 xen/arch/arm/Kconfig              | 11 +++++++++++
 xen/arch/arm/altp2m.c             |  9 +++++++++
 xen/arch/arm/include/asm/altp2m.h | 18 ++++++++++++++++--
 3 files changed, 36 insertions(+), 2 deletions(-)

diff --git a/xen/arch/arm/Kconfig b/xen/arch/arm/Kconfig
index 2f2b501fdac4..fdf0721c3c03 100644
--- a/xen/arch/arm/Kconfig
+++ b/xen/arch/arm/Kconfig
@@ -98,6 +98,17 @@ config MPU
 	  systems supporting EL2. (UNSUPPORTED)
 endchoice
 
+config ALTP2M
+	bool "Alternate P2M support" if EXPERT
+	depends on MMU
+	default y
+	help
+	  Alternate-p2m allows a guest to manage multiple p2m guest physical
+	  "memory views" (as opposed to a single p2m).
+	  Useful for memory introspection.
+
+	  If unsure, stay with defaults.
+
 source "arch/Kconfig"
 
 config ACPI
diff --git a/xen/arch/arm/altp2m.c b/xen/arch/arm/altp2m.c
index 2bd1ff4df223..8bd174ea8f37 100644
--- a/xen/arch/arm/altp2m.c
+++ b/xen/arch/arm/altp2m.c
@@ -5,6 +5,15 @@
  * Copyright (c) 2016 Sergej Proskurin <proskurin@sec.in.tum.de>
  */
 
+#include <asm/p2m.h>
+
+/* Check to see if vcpu should be switched to a different p2m. */
+void p2m_altp2m_check(struct vcpu *v, uint16_t idx)
+{
+    /* Not yet implemented */
+    BUG();
+}
+
 /*
  * Local variables:
  * mode: C
diff --git a/xen/arch/arm/include/asm/altp2m.h b/xen/arch/arm/include/asm/altp2m.h
index ca836bae7330..698c35427e75 100644
--- a/xen/arch/arm/include/asm/altp2m.h
+++ b/xen/arch/arm/include/asm/altp2m.h
@@ -11,10 +11,12 @@
 
 #include <xen/sched.h>
 
+#ifdef CONFIG_ALTP2M
+
+/* Hardware always supports altp2m on ARM */
 static inline bool altp2m_supported(void)
 {
-    /* Not implemented yet */
-    return false;
+    return true;
 }
 
 /* Alternate p2m VCPU */
@@ -25,6 +27,18 @@ static inline uint16_t altp2m_vcpu_idx(const struct vcpu *v)
     return 0;
 }
 
+#else /* CONFIG_ALTP2M */
+
+static inline bool altp2m_supported(void)
+{
+    return false;
+}
+
+/* Only declaration is needed. DCE will optimise it out when linking. */
+uint16_t altp2m_vcpu_idx(const struct vcpu *v);
+
+#endif /* CONFIG_ALTP2M */
+
 #endif /* __ASM_ARM_ALTP2M_H */
 
 /*
-- 
2.34.1



From xen-devel-bounces@lists.xenproject.org Mon Apr 20 21:19:07 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 20 Apr 2026 21:19:07 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1287445.1567873 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wEw1L-0006Av-PW; Mon, 20 Apr 2026 21:19:07 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1287445.1567873; Mon, 20 Apr 2026 21:19: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 1wEw1L-00067v-Li; Mon, 20 Apr 2026 21:19:07 +0000
Received: by outflank-mailman (input) for mailman id 1287445;
 Mon, 20 Apr 2026 21:19:06 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <Rose.Spangler@elektrobit.com>) id 1wEw1K-0005wB-51
 for xen-devel@lists.xenproject.org; Mon, 20 Apr 2026 21:19:06 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wEw1I-009Po0-01
 for xen-devel@lists.xenproject.org; Mon, 20 Apr 2026 23:19:05 +0200
Received: from [10.42.69.1] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <Rose.Spangler@elektrobit.com>)
 id 69e69811-e002-0a2a0a5209dd-0a2a4501abc0-24
 for <xen-devel@lists.xenproject.org>; Mon, 20 Apr 2026 23:19:05 +0200
Received: from [52.101.48.87]
 (helo=MW6PR02CU001.outbound.protection.outlook.com)
 by tlsNG-d62444.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.1)
 (envelope-from <Rose.Spangler@elektrobit.com>)
 id 69e69846-c1f2-0a2a45010019-34653057acda-3
 for <xen-devel@lists.xenproject.org>; Mon, 20 Apr 2026 23:19:05 +0200
Received: from SN7PR18CA0022.namprd18.prod.outlook.com (2603:10b6:806:f3::21)
 by MWHPR08MB9872.namprd08.prod.outlook.com (2603:10b6:303:278::22)
 with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9818.33; Mon, 20 Apr
 2026 21:18:55 +0000
Received: from SA2PEPF00003AE9.namprd02.prod.outlook.com
 (2603:10b6:806:f3:cafe::af) by SN7PR18CA0022.outlook.office365.com
 (2603:10b6:806:f3::21) with Microsoft SMTP Server (version=TLS1_3,
 cipher=TLS_AES_256_GCM_SHA384) id 15.20.9791.48 via Frontend Transport; Mon,
 20 Apr 2026 21:18:55 +0000
Received: from usbth1es003.ebgroup.elektrobit.com (4.79.107.243) by
 SA2PEPF00003AE9.mail.protection.outlook.com (10.167.248.9) with Microsoft
 SMTP Server (version=TLS1_3, cipher=TLS_AES_256_GCM_SHA384) id 15.20.9791.48
 via Frontend Transport; Mon, 20 Apr 2026 21:18:54 +0000
Received: from usbth1es003 (localhost [127.0.0.1])
 by usbth1es003.ebgroup.elektrobit.com (Postfix) with SMTP id 4fzyz1731Zz1wdP; 
 Mon, 20 Apr 2026 14:18:53 -0700 (PDT)
Received: from BL0PR07CU001.outbound.protection.outlook.com
 (mail-bl0pr07cu00106.outbound.protection.outlook.com [40.93.4.6])
 (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)
 key-exchange secp384r1 server-signature RSA-PSS (2048 bits) server-digest
 SHA256) (No client certificate requested)
 by usbth1es003.ebgroup.elektrobit.com (Postfix) with ESMTPS;
 Mon, 20 Apr 2026 14:18:53 -0700 (PDT)
Received: from CH0P223CA0023.NAMP223.PROD.OUTLOOK.COM (2603:10b6:610:116::22)
 by CH3PR08MB9950.namprd08.prod.outlook.com (2603:10b6:610:220::17)
 with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9818.32; Mon, 20 Apr
 2026 21:18:45 +0000
Received: from DS3PEPF0000C380.namprd04.prod.outlook.com
 (2603:10b6:610:116:cafe::50) by CH0P223CA0023.outlook.office365.com
 (2603:10b6:610:116::22) with Microsoft SMTP Server (version=TLS1_3,
 cipher=TLS_AES_256_GCM_SHA384) id 15.20.9791.48 via Frontend Transport; Mon,
 20 Apr 2026 21:18:44 +0000
Received: from denue6es012.ebgroup.elektrobit.com (213.95.148.172) by
 DS3PEPF0000C380.mail.protection.outlook.com (10.167.23.10) with Microsoft
 SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id
 15.20.9791.48 via Frontend Transport; Mon, 20 Apr 2026 21:18:43 +0000
Received: from ubuntu.localdomain (10.10.178.50) by
 denue6es012.ebgroup.elektrobit.com (10.243.160.140) with Microsoft SMTP
 Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id
 15.2.2562.35; Mon, 20 Apr 2026 23:18:40 +0200
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@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=elektrobit.com header.i="@elektrobit.com" header.h="From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck"; dkim=pass header.s=selector1 header.d=elektrobit.com header.i="@elektrobit.com" header.h="From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck"
ARC-Seal: i=2; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=pass;
 b=ICT64mWF/qsbMm8d/GGTnORzDWmron4vVlfg2JP0CCcHZwp5Ij4Q6zb8LokHBWn4Yb4ExTx44y4MzEQzrWYbUGjUDXPsMwR8cqmt13EfXDevbuQWRY+PMa1/uuBrWwcGQvpKJetDlf5s2yqWleTcTv895KRE8k85rwzRpPTNjK9Pw87TEVCdGjBOkGLWrr4Mlo+EsVUp3Gp2TPiOEl0Zo4Vf8tQ4qh1yHhKhuNGjI7GwLvwpckfxxEhJJUAe4U8xhp6PHpyZYkTz3BdEPAmhZGt6oRp9Xe8dEdtXVowliWmvvzWT7gqG+H7rHaQojfngFHNhm0LqKrq6Fk+Ti5twXw==
ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com;
 s=arcselector10001;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1;
 bh=2ZAemscrHmCDKhZ6RJ1poqZ5UjAED/22jekv/5eW7eQ=;
 b=a2s+9e6TERWhOV4u3Anf5P11AaOXVE0AtHcL3dqNBO208uNW1mD2TOS2BrtnUOh80mX6IKqynoyzYRpLeDf5THPL8xXz5GPgBe9ouoES+4VfzfRKgn38t6FbjhcairtYhydDlKGyD+az7DTniZp4atosFcyG0n1vMgcjM6/RaO6AqPumKQK6vYgD3lXQnPV5kC4gbXUVpHZiEWO5qpQ4nSEcVMQ56NSWTGkSAf4UvZPWW7ZGzuo8X7fa/nF1olXvGzH9bLVRC5ykGMImD7xgj+r5VcH/OgZqjp+krQYc5MnrhV6HjPh1aUls1bNIytZUYhR7fQOK4soYVJ4H3Wymug==
ARC-Authentication-Results: i=2; mx.microsoft.com 1; spf=pass (sender ip is
 40.93.4.6) smtp.rcpttodomain=amd.com smtp.mailfrom=elektrobit.com; dmarc=pass
 (p=quarantine sp=none pct=100) action=none header.from=elektrobit.com;
 dkim=pass (signature was verified) header.d=elektrobit.com; arc=pass (0 oda=1
 ltdi=1 spf=[1,1,smtp.mailfrom=elektrobit.com]
 dmarc=[1,1,header.from=elektrobit.com])
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=elektrobit.com;
 s=selector1;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck;
 bh=2ZAemscrHmCDKhZ6RJ1poqZ5UjAED/22jekv/5eW7eQ=;
 b=nxaaY2nprOobJpQm5s4mRdNqkVV4NB+B2zZc3FBK37y1ANSV1NsTl3BQ/hhNNHTPw5/7MHI4sBOdC+8b2QO1WZaO8AMLobBBe0PrOZVIY+igxW/Xhq4lL0YzJ1XoLRgqglnlEb34ZkcRJpDUPvyh1OlSPjaB0Zi2GMvyu+Nu2Qg=
X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 40.93.4.6)
 smtp.mailfrom=elektrobit.com; dkim=pass (signature was verified)
 header.d=elektrobit.com;dmarc=pass action=none header.from=elektrobit.com;
Received-SPF: Pass (protection.outlook.com: domain of elektrobit.com
 designates 40.93.4.6 as permitted sender) receiver=protection.outlook.com;
 client-ip=40.93.4.6; helo=BL0PR07CU001.outbound.protection.outlook.com; pr=C
ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none;
 b=ki2N0anapgwJV/qfTyH9ZRJQFNU07wDhsh74SGgty6J+xzfwz1WUVJNXoPCs+TuvJ8AqFr1pconipSPY3nn0SDmJAAEr65vXQQe67tZbVImfSU3XneivqYuHLxrHRS5U8sgAVo8FY8t3JANruat1qQAvXgtuGIU+kCUjMxYF3TT8JPnrV1K7CGcbj1Bzbq6WavWISkenf0gVzQST1OStJhzwpVYVy7wKVH23qHaWlYqGuH03x24bpvV/Oe3DRHFyO1HgVwpb8lxrBNTnOGOhitBxt9EmcC3FP2bhg0bM+51RvbvpNdfHq5XF2u93yJwY6RIX0HU2/IC+nb1qY3MOBQ==
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com;
 s=arcselector10001;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1;
 bh=2ZAemscrHmCDKhZ6RJ1poqZ5UjAED/22jekv/5eW7eQ=;
 b=W9UjfzkdZeL4SmZZq2eUO2dXQun/5a2XT8bc22bkE0d7a9eH8Jbj6ObKmBBXsc+CGNqIVhgf6At5Re63fJhr8Utjlbqf+g64qR+F9OdKF99EquBoNBVPGDC3i8KeOWW9LuZuNXhHy9ZS0vRmJQZYXMfx4z6e3EhvVSKbFvHzwpBMvteaan/4QrtOH1Vdxi7afX+9Wr06qjek8OWj8mKXgxomOA2zNiuEecZmAkIas4jWe5RPLYTmdViepAh4Arln97Mu+LAb+T98nDvjtFfuyXECLORs+7W1BltPEh+BxVfvTfx8ByPHS+OiS1trU+YodpqZJSZCc05i1CEDPxGWWw==
ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass (sender ip is
 213.95.148.172) smtp.rcpttodomain=lists.xenproject.org
 smtp.mailfrom=elektrobit.com; dmarc=pass (p=quarantine sp=none pct=100)
 action=none header.from=elektrobit.com; dkim=none (message not signed);
 arc=none (0)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=elektrobit.com;
 s=selector1;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck;
 bh=2ZAemscrHmCDKhZ6RJ1poqZ5UjAED/22jekv/5eW7eQ=;
 b=nxaaY2nprOobJpQm5s4mRdNqkVV4NB+B2zZc3FBK37y1ANSV1NsTl3BQ/hhNNHTPw5/7MHI4sBOdC+8b2QO1WZaO8AMLobBBe0PrOZVIY+igxW/Xhq4lL0YzJ1XoLRgqglnlEb34ZkcRJpDUPvyh1OlSPjaB0Zi2GMvyu+Nu2Qg=
X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 213.95.148.172)
 smtp.mailfrom=elektrobit.com; dkim=none (message not signed)
 header.d=none;dmarc=pass action=none header.from=elektrobit.com;
Received-SPF: Pass (protection.outlook.com: domain of elektrobit.com
 designates 213.95.148.172 as permitted sender)
 receiver=protection.outlook.com; client-ip=213.95.148.172;
 helo=denue6es012.ebgroup.elektrobit.com; pr=C
From: Rose Spangler <Rose.Spangler@elektrobit.com>
To: <xen-devel@lists.xenproject.org>
CC: Rose Spangler <Rose.Spangler@elektrobit.com>, Jan Beulich
	<jbeulich@suse.com>, Andrew Cooper <andrew.cooper3@citrix.com>,
	=?UTF-8?q?Roger=20Pau=20Monn=C3=A9?= <roger.pau@citrix.com>, 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>, Tamas K Lengyel <tamas@tklengyel.com>
Subject: [RFC PATCH v6 03/43] altp2m: Move altp2m_p2m to common domain struct
Date: Mon, 20 Apr 2026 17:18:27 -0400
Message-ID: <20260420211831.208600-1-Rose.Spangler@elektrobit.com>
X-Mailer: git-send-email 2.34.1
In-Reply-To: <20260420211104.208444-1-Rose.Spangler@elektrobit.com>
References: <20260420211104.208444-1-Rose.Spangler@elektrobit.com>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit
Content-Type: text/plain
X-Originating-IP: [10.10.178.50]
X-ClientProxiedBy: denue6es012.ebgroup.elektrobit.com (10.243.160.140) To
 denue6es012.ebgroup.elektrobit.com (10.243.160.140)
X-EOPAttributedMessage: 1
X-MS-Exchange-SkipListedInternetSender:
 ip=[213.95.148.172];domain=denue6es012.ebgroup.elektrobit.com
X-MS-TrafficTypeDiagnostic:
	DS3PEPF0000C380:EE_|CH3PR08MB9950:EE_|SA2PEPF00003AE9:EE_|MWHPR08MB9872:EE_
X-MS-Office365-Filtering-Correlation-Id: d8466819-255c-4766-a98e-08de9f226da6
X-SM-outgoing: yes
X-MS-Exchange-SenderADCheck: 1
X-MS-Exchange-AntiSpam-Relay: 0
X-Microsoft-Antispam-Untrusted:
 BCL:0;ARA:13230040|36860700016|376014|7416014|82310400026|1800799024|56012099003|22082099003|18002099003;
X-Microsoft-Antispam-Message-Info-Original:
 =?us-ascii?Q?uEYXeZYhW9cwyyvzpDroGt5SLLSrTZbb99ZncCzrieF8hEELamBjQChhBwCK?=
 =?us-ascii?Q?LVhpc6MtPSW05h6yMHvAudW1DG1taoP0bsNSHl37nVX7Muxc2qH7A8xiTFkx?=
 =?us-ascii?Q?LF1Az898kluetY2lSL/CIhTUbc7qj1Fh7cT2zS7htrVOVCZUczGYFpLHff2t?=
 =?us-ascii?Q?Ewl0V+bpD6Bfg51ZABw+nOcsODiixk0onkzJgMAKFE+QotDXWRXn//TUCxhJ?=
 =?us-ascii?Q?JpmsmlK8YuhPLBVw5edGxb9MSFzszxApR9S8GTgc+E/2BI/6AijXbVUSa+Lo?=
 =?us-ascii?Q?tIwAKL8qtbQkztcV8rlHZpgqO/3uVzESLugDrY+hz3D6pZ2Hr6+5PC/jkrYo?=
 =?us-ascii?Q?/dqDRnuCW0X1ZE1Hz7k7ehr5jaGGcLt1DqtFo/BcFmaAupK8hlFD4m+rfIBv?=
 =?us-ascii?Q?018R0+CQJn9aUaPUw9rMCQrAZT+bVm9B0gha7RNn4aPTmYm7g2arlr5qJQzV?=
 =?us-ascii?Q?lnNTaNBFE3vmBeopdQAcCPOAk1sTDi4s6e6aVz9raMDqsxJdxJEfGT/L/rQD?=
 =?us-ascii?Q?lLfSkhdlNQ7iRmk3G8QZBhdpW217xiDkkFMQL4afWX+LyCwPZyRoLRDqTVsA?=
 =?us-ascii?Q?J3NuQwU9ClANNlNr4HwTQrc+A9nfSm/kPFUDoRSW7H/VJBaVq1IvRdhkw7CM?=
 =?us-ascii?Q?bHmaeUA2KM/gnnUIyCTUZpt/jfhrL1bgJ17DjCpw0CmPW8EAZenyeXUFkxcI?=
 =?us-ascii?Q?t00l9go5gZqdVs9SVN+A+Xli1czNHo6Sg7Xi0w8IQP30wT0MCFJNfRs75HSR?=
 =?us-ascii?Q?9W736gewW8XlpcAu5ra1Wz7zI9N/lym2ieoY+GD7HizQXqUvt/QX4KEL8qlw?=
 =?us-ascii?Q?resyADhGsZ4NpV5Eim7OB8w+YkZN9GYcnjpQR9Pbe7ym08K70tz2RHTAvHwX?=
 =?us-ascii?Q?bF7zxA+bC+p2T+QIy4rOu7YWvoYmQZsA3KX2bN8PLyTj6im81ItfP1wcbzhI?=
 =?us-ascii?Q?6b4FSIr3mVvZWmzpYBYD7um4AjlXATGjLJQKgySosNiNAQGL2ZiEWpmtoWIu?=
 =?us-ascii?Q?IgugkfOlkyUQo0V+XaspeGuRP4u5zN0eo2cixQm1ljv0zS2GoZSHkekqD0sP?=
 =?us-ascii?Q?QRh4e19hFRYyARwlY76d7lwTzWkrZjf2T3KDjGpR2O1wM86kdXqGFVq1yYKY?=
 =?us-ascii?Q?sKhpw2rUemIHvyNnyrHFnTQUNfSRbOAHbVCAg5who0OFrn+NYlLcV1v/kYmN?=
 =?us-ascii?Q?8D3VXaFqTk7CuEW3vfkfIOVZufIv7j5+15KzCrsPhdJv/rm9L4PesokX09XK?=
 =?us-ascii?Q?qQKlBY6sa+M8dj1PqKE0?=
X-Forefront-Antispam-Report-Untrusted:
 CIP:213.95.148.172;CTRY:DE;LANG:en;SCL:1;SRV:;IPV:CAL;SFV:NSPM;H:denue6es012.ebgroup.elektrobit.com;PTR:ErrorRetry;CAT:NONE;SFS:(13230040)(36860700016)(376014)(7416014)(82310400026)(1800799024)(56012099003)(22082099003)(18002099003);DIR:OUT;SFP:1102;
X-Exchange-RoutingPolicyChecked:
 BeEoIODdPFcvpBA0Scws1/ZXamUBKOjp5PiqOB4Le2odzsIsDt1TKzjnRlVeoG3a9X3UG9Zipw3S6a1qw2zUlmmCrc1oyHnixHGRE49QMfn9e25IiRY7q1xnRZcTrbi3+KjV6JZ+amN978TEt2Bja8utdTRxNHMKftY37s8iJ0i4XdAcDpRS88zE1s1Ykod3lHswa6teUYvctE4EDJMdvNRBmWA9t/nagmH0D7o1fw8AoA6k+zFTOUi8tybvCzUGHDgvQJvw4Xbsv2xShtiUolBu+QXjiARaZb/nEt3bsxbgRbDg77l901TqRLdWLQkXq12gm4t4oosFGGfcnS6NVg==
X-MS-Exchange-Transport-CrossTenantHeadersStamped: CH3PR08MB9950
X-MS-Exchange-SkipListedInternetSender:
 ip=[40.93.4.6];domain=BL0PR07CU001.outbound.protection.outlook.com
X-MS-Exchange-ExternalOriginalInternetSender:
 ip=[40.93.4.6];domain=BL0PR07CU001.outbound.protection.outlook.com
X-MS-Exchange-Transport-CrossTenantHeadersStripped:
 SA2PEPF00003AE9.namprd02.prod.outlook.com
X-MS-PublicTrafficType: Email
X-MS-Office365-Filtering-Correlation-Id-Prvs:
	8df39f8f-60d0-47e5-b00f-08de9f2266f2
X-Microsoft-Antispam:
	BCL:0;ARA:13230040|376014|7416014|14060799003|36860700016|35042699022|156008|82310400026|1800799024|56012099003|22082099003|18002099003;
X-Microsoft-Antispam-Message-Info:
	=?us-ascii?Q?dlsVvWrIoOBwtQmpmKVEqCA1+1EgzbV79HZvlxhNUX0p19wxv+dl+uWn+drC?=
 =?us-ascii?Q?bOlbhbyBHfhmkoI7ebV0xxopkd4dNAkH6V5yNEFoSKBfNO7I/8fYM1qeOQd2?=
 =?us-ascii?Q?bdkQwAYnKwcr+0cvA8aDC+f6+6zacSR1Dcnfhoha5UHbD2zFXoDnC4WW5l+2?=
 =?us-ascii?Q?XulvpygDrLo4rUl9LzAwWrE6fgbO0Gnj2L7c2UVuaDTPoFEEIi7wdH7vJ0UV?=
 =?us-ascii?Q?yx/h07r4RyfI8d42ZDJb9bRAyV7Dajzb+n9qRtkGm94KO3VhPVY+cPsa0DFe?=
 =?us-ascii?Q?94FnBW8iwBafMSPlD1pgncEe9yc1Xg+JezQh4oIqiRS+RBEjfBqiimh79sQE?=
 =?us-ascii?Q?x1wyolCw2lb+JIB27ovOtDJuwOnWqaxLqmQB/9K87pmRJrVgpO6qcm8Hnuh4?=
 =?us-ascii?Q?5o1BzyNOSefkE2NFoqDvDPnnkZStBSXPUwnbrmhERfO7E5PK7y9S1tVEiiDc?=
 =?us-ascii?Q?zpQbgI8CQJiYRxorMlxVpFs4GGVMNzwNtjQ62LUIACGCSM1TQX47OBw3sZWF?=
 =?us-ascii?Q?19u+d1QBIAzIbxKB7FfYb85DkKvJh9MYn9cyxBimu3TWKUTrU/5xSsjalo7H?=
 =?us-ascii?Q?H6B1ynvqX4hsI6CL1fb0XJ4fAui7jlr9x2Yth8xBnOAw4oC/XRsT/x/NRG8a?=
 =?us-ascii?Q?Nxn/c0Kx0eJi1ILvBJp6ewctI2VWlDmg9jvRDYVLEULQaSaf7yWZ+cGLcmMN?=
 =?us-ascii?Q?b9ltvP9+DGVLgl1Bzk4lmlpSrd0gMvODP83QViv5ipS9GEwVR7TWf3AmcL1V?=
 =?us-ascii?Q?FzQCffuYwzVcyqjGnPytcoD3WIGjH5KtTWyaMUR77PPAoAT7J3QEwzznO3gw?=
 =?us-ascii?Q?H68w054WhFU6bxj5UGjYF4/I0A2qZc8xXt0JCBIFcPdwIpp6JhKBHWy4CgaV?=
 =?us-ascii?Q?NXkiN63fB1e6mrx4KUT4NniSnxuA1u+rQ/wMmoAQJZ0zies76JPD4GDSQylV?=
 =?us-ascii?Q?riIzytzRvPfOJQf96NyUlqFL3q6Fjd2JP4IsoLwfKuLOTtXK+5fai3CwWwvg?=
 =?us-ascii?Q?Zegbs74UGNNX7lAgvpEb0sY6XEetKmTfNLXy1xGmC2XRErixfTIZmVq1iHmq?=
 =?us-ascii?Q?MNljn4wT5iJowR/BSSSMV7ChfE6MkNj7Jlp8RyJucssHLo5JLldFLUmtimMO?=
 =?us-ascii?Q?c5MwyfQajX6ITWkMY7FJrJsNsstsxsvUogvnSAtnYpr8+bmnJsrctTiEzRFi?=
 =?us-ascii?Q?6Gakib57up0qXc/ngTGLGQG6nw92kWR35LOgEVWYpt9LEFhrLdpE4avW4I0J?=
 =?us-ascii?Q?Sfwsf/lYwKXuoXNu7z5U?=
X-Forefront-Antispam-Report:
	CIP:4.79.107.243;CTRY:US;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:BL0PR07CU001.outbound.protection.outlook.com;PTR:mail-bl0pr07cu00106.outbound.protection.outlook.com;CAT:NONE;SFS:(13230040)(376014)(7416014)(14060799003)(36860700016)(35042699022)(156008)(82310400026)(1800799024)(56012099003)(22082099003)(18002099003);DIR:OUT;SFP:1102;
X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1
X-MS-Exchange-AntiSpam-MessageData-0:
	eB1HgBlSeJ+cfUWwJjLt8M+D1Qw6n/Q2UfmM8/mExeOrns4se9jQzxgDKlxusHJ5ywwhrnecoyWf8/EigCliacY3j1PArB2+RQ8kWbtQ5iMvt03PfGsqcCXmwCpJFRKLOgrTKBq3WYrepL09ZSoES25Pm7BePFDOPi5GrEW7gzVJfsKLApOKg1mP9ZC5gYhFmnfAqmIx3QA+xBrtQlZN1iNMBgi9R3Drt4HkTHzSNVVF8gz/UIXkBUXODuaqK7Au4TARPpSoZdL9SmTTQAZ2vnIj/kYUnCMECTdob3qn4F6AjMeWpoVYuV+sI+2nfYhFIUl4OfUCV72HI+2RsRZvP0I9wOIcZyjipUP4GtX5WUIrnwEI2rdlsYhUUCFmG3DPebFTK0nvs96ZBGDqWBYPTYI3DSdDIfaMR7fvrXnkGuTooFEwl+LoXuapdi+zXZfq
X-OriginatorOrg: elektrobit.com
X-MS-Exchange-CrossTenant-OriginalArrivalTime: 20 Apr 2026 21:18:54.7514
 (UTC)
X-MS-Exchange-CrossTenant-Network-Message-Id: d8466819-255c-4766-a98e-08de9f226da6
X-MS-Exchange-CrossTenant-Id: e764c36b-012e-4216-910d-8fd16283182d
X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=e764c36b-012e-4216-910d-8fd16283182d;Ip=[4.79.107.243];Helo=[usbth1es003.ebgroup.elektrobit.com]
X-MS-Exchange-CrossTenant-AuthAs: Internal
X-MS-Exchange-CrossTenant-AuthSource: TreatMessagesAsInternal-SA2PEPF00003AE9.namprd02.prod.outlook.com
X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem
X-MS-Exchange-Transport-CrossTenantHeadersStamped: MWHPR08MB9872
X-purgate-ID: tlsNG-d62444/1776719945-B4A11FF4-2653A649/0/0
X-purgate-type: clean
X-purgate-size: 13310

Similarly to the previous commit, this commit moves altp2m_p2m to the
common domain struct. The representation of altp2m views as an array of
p2m_domain pointers is the same on x86 and ARM, and it seems that this
would be the case for other architectures as well.

This commit is a refactor, and no change in functionality is intended.

This is commit 3/8 of the preparation phase.

Signed-off-by: Rose Spangler <Rose.Spangler@elektrobit.com>
---
v6: Introduced this patch.
---
 xen/arch/x86/hvm/vmx/vmx.c        |  2 +-
 xen/arch/x86/include/asm/domain.h |  1 -
 xen/arch/x86/include/asm/p2m.h    |  4 ++--
 xen/arch/x86/mm/altp2m.c          | 28 ++++++++++++++--------------
 xen/arch/x86/mm/hap/hap.c         |  6 +++---
 xen/arch/x86/mm/mem_access.c      |  8 ++++----
 xen/arch/x86/mm/mem_sharing.c     |  2 +-
 xen/arch/x86/mm/p2m-ept.c         |  6 +++---
 xen/arch/x86/mm/p2m.c             |  8 ++++----
 xen/include/xen/sched.h           |  1 +
 10 files changed, 33 insertions(+), 33 deletions(-)

diff --git a/xen/arch/x86/hvm/vmx/vmx.c b/xen/arch/x86/hvm/vmx/vmx.c
index ff895f7f9437..0909929c00e0 100644
--- a/xen/arch/x86/hvm/vmx/vmx.c
+++ b/xen/arch/x86/hvm/vmx/vmx.c
@@ -5004,7 +5004,7 @@ bool asmlinkage vmx_vmenter_helper(const struct cpu_user_regs *regs)
                 if ( currd->arch.altp2m_eptp[i] == mfn_x(INVALID_MFN) )
                     continue;
 
-                ept = &currd->arch.altp2m_p2m[i]->ept;
+                ept = &currd->altp2m_p2m[i]->ept;
                 if ( cpumask_test_cpu(cpu, ept->invalidate) )
                 {
                     cpumask_clear_cpu(cpu, ept->invalidate);
diff --git a/xen/arch/x86/include/asm/domain.h b/xen/arch/x86/include/asm/domain.h
index 0cf0c0d92087..f8038087e612 100644
--- a/xen/arch/x86/include/asm/domain.h
+++ b/xen/arch/x86/include/asm/domain.h
@@ -368,7 +368,6 @@ struct arch_domain
     mm_lock_t nested_p2m_lock;
 
 #ifdef CONFIG_ALTP2M
-    struct p2m_domain **altp2m_p2m;
     mm_lock_t altp2m_list_lock;
     uint64_t *altp2m_eptp;
     uint64_t *altp2m_visible_eptp;
diff --git a/xen/arch/x86/include/asm/p2m.h b/xen/arch/x86/include/asm/p2m.h
index 3a5a5fd43c2a..ec871717a9e4 100644
--- a/xen/arch/x86/include/asm/p2m.h
+++ b/xen/arch/x86/include/asm/p2m.h
@@ -901,7 +901,7 @@ static inline struct p2m_domain *p2m_get_altp2m(struct vcpu *v)
 
     BUG_ON(index >= v->domain->nr_altp2m);
 
-    return v->domain->arch.altp2m_p2m[index];
+    return v->domain->altp2m_p2m[index];
 }
 
 /* set current alternate p2m table */
@@ -919,7 +919,7 @@ static inline bool p2m_set_altp2m(struct vcpu *v, unsigned int idx)
     atomic_dec(&orig->active_vcpus);
 
     vcpu_altp2m(v).p2midx = idx;
-    atomic_inc(&v->domain->arch.altp2m_p2m[idx]->active_vcpus);
+    atomic_inc(&v->domain->altp2m_p2m[idx]->active_vcpus);
 
     return true;
 }
diff --git a/xen/arch/x86/mm/altp2m.c b/xen/arch/x86/mm/altp2m.c
index 08db8f37c1b1..8dd3c0f96be0 100644
--- a/xen/arch/x86/mm/altp2m.c
+++ b/xen/arch/x86/mm/altp2m.c
@@ -130,14 +130,14 @@ int p2m_init_altp2m(struct domain *d)
     struct p2m_domain *hostp2m = p2m_get_hostp2m(d);
 
     mm_lock_init(&d->arch.altp2m_list_lock);
-    d->arch.altp2m_p2m = xvzalloc_array(struct p2m_domain *, d->nr_altp2m);
+    d->altp2m_p2m = xvzalloc_array(struct p2m_domain *, d->nr_altp2m);
 
-    if ( !d->arch.altp2m_p2m )
+    if ( !d->altp2m_p2m )
         return -ENOMEM;
 
     for ( i = 0; i < d->nr_altp2m; i++ )
     {
-        d->arch.altp2m_p2m[i] = p2m = p2m_init_one(d);
+        d->altp2m_p2m[i] = p2m = p2m_init_one(d);
         if ( p2m == NULL )
         {
             p2m_teardown_altp2m(d);
@@ -158,14 +158,14 @@ void p2m_teardown_altp2m(struct domain *d)
 
     for ( i = 0; i < d->nr_altp2m; i++ )
     {
-        if ( !d->arch.altp2m_p2m[i] )
+        if ( !d->altp2m_p2m[i] )
             continue;
-        p2m = d->arch.altp2m_p2m[i];
-        d->arch.altp2m_p2m[i] = NULL;
+        p2m = d->altp2m_p2m[i];
+        d->altp2m_p2m[i] = NULL;
         p2m_free_one(p2m);
     }
 
-    XVFREE(d->arch.altp2m_p2m);
+    XVFREE(d->altp2m_p2m);
 }
 
 int altp2m_get_effective_entry(struct p2m_domain *ap2m, gfn_t gfn, mfn_t *mfn,
@@ -325,7 +325,7 @@ static void p2m_reset_altp2m(struct domain *d, unsigned int idx,
     struct p2m_domain *p2m;
 
     ASSERT(idx < d->nr_altp2m);
-    p2m = d->arch.altp2m_p2m[array_index_nospec(idx, d->nr_altp2m)];
+    p2m = d->altp2m_p2m[array_index_nospec(idx, d->nr_altp2m)];
 
     p2m_lock(p2m);
 
@@ -368,7 +368,7 @@ static int p2m_activate_altp2m(struct domain *d, unsigned int idx,
 
     ASSERT(idx < d->nr_altp2m);
 
-    p2m = d->arch.altp2m_p2m[array_index_nospec(idx, d->nr_altp2m)];
+    p2m = d->altp2m_p2m[array_index_nospec(idx, d->nr_altp2m)];
     hostp2m = p2m_get_hostp2m(d);
 
     p2m_lock(p2m);
@@ -468,7 +468,7 @@ int p2m_destroy_altp2m_by_id(struct domain *d, unsigned int idx)
     if ( d->arch.altp2m_eptp[array_index_nospec(idx, MAX_EPTP)] !=
          mfn_x(INVALID_MFN) )
     {
-        p2m = d->arch.altp2m_p2m[array_index_nospec(idx, d->nr_altp2m)];
+        p2m = d->altp2m_p2m[array_index_nospec(idx, d->nr_altp2m)];
 
         if ( !_atomic_read(p2m->active_vcpus) )
         {
@@ -532,7 +532,7 @@ int p2m_change_altp2m_gfn(struct domain *d, unsigned int idx,
         return rc;
 
     hp2m = p2m_get_hostp2m(d);
-    ap2m = d->arch.altp2m_p2m[array_index_nospec(idx, d->nr_altp2m)];
+    ap2m = d->altp2m_p2m[array_index_nospec(idx, d->nr_altp2m)];
 
     p2m_lock(hp2m);
     p2m_lock(ap2m);
@@ -596,7 +596,7 @@ int p2m_altp2m_propagate_change(struct domain *d, gfn_t gfn,
         if ( d->arch.altp2m_eptp[i] == mfn_x(INVALID_MFN) )
             continue;
 
-        p2m = d->arch.altp2m_p2m[i];
+        p2m = d->altp2m_p2m[i];
 
         /* Check for a dropped page that may impact this altp2m */
         if ( mfn_eq(mfn, INVALID_MFN) &&
@@ -679,7 +679,7 @@ int p2m_set_suppress_ve_multi(struct domain *d,
             return -EINVAL;
 
         p2m = ap2m =
-            d->arch.altp2m_p2m[array_index_nospec(sve->view, d->nr_altp2m)];
+            d->altp2m_p2m[array_index_nospec(sve->view, d->nr_altp2m)];
     }
 
     p2m_lock(host_p2m);
@@ -746,7 +746,7 @@ int p2m_get_suppress_ve(struct domain *d, gfn_t gfn, bool *suppress_ve,
             return -EINVAL;
 
         p2m = ap2m =
-            d->arch.altp2m_p2m[array_index_nospec(altp2m_idx, d->nr_altp2m)];
+            d->altp2m_p2m[array_index_nospec(altp2m_idx, d->nr_altp2m)];
     }
     else
         p2m = host_p2m;
diff --git a/xen/arch/x86/mm/hap/hap.c b/xen/arch/x86/mm/hap/hap.c
index 3d563b3bc2d1..6918a00a2a25 100644
--- a/xen/arch/x86/mm/hap/hap.c
+++ b/xen/arch/x86/mm/hap/hap.c
@@ -524,7 +524,7 @@ int hap_enable(struct domain *d, u32 mode)
 
         for ( i = 0; i < d->nr_altp2m; i++ )
         {
-            rv = p2m_alloc_table(d->arch.altp2m_p2m[i]);
+            rv = p2m_alloc_table(d->altp2m_p2m[i]);
             if ( rv != 0 )
                goto out;
         }
@@ -548,7 +548,7 @@ void hap_final_teardown(struct domain *d)
 #ifdef CONFIG_ALTP2M
     if ( hvm_altp2m_supported() )
         for ( i = 0; i < d->nr_altp2m; i++ )
-            p2m_teardown(d->arch.altp2m_p2m[i], true, NULL);
+            p2m_teardown(d->altp2m_p2m[i], true, NULL);
 #endif
 
     /* Destroy nestedp2m's first */
@@ -603,7 +603,7 @@ void hap_teardown(struct domain *d, bool *preempted)
 
         for ( i = 0; i < d->nr_altp2m; i++ )
         {
-            p2m_teardown(d->arch.altp2m_p2m[i], false, preempted);
+            p2m_teardown(d->altp2m_p2m[i], false, preempted);
             if ( preempted && *preempted )
                 return;
         }
diff --git a/xen/arch/x86/mm/mem_access.c b/xen/arch/x86/mm/mem_access.c
index a9d6b081a523..e5548e64d8d0 100644
--- a/xen/arch/x86/mm/mem_access.c
+++ b/xen/arch/x86/mm/mem_access.c
@@ -319,7 +319,7 @@ long p2m_set_mem_access(struct domain *d, gfn_t gfn, uint32_t nr,
         if ( !altp2m_is_eptp_valid(d, altp2m_idx) )
             return -EINVAL;
 
-        ap2m = d->arch.altp2m_p2m[array_index_nospec(altp2m_idx, d->nr_altp2m)];
+        ap2m = d->altp2m_p2m[array_index_nospec(altp2m_idx, d->nr_altp2m)];
     }
 #endif
 
@@ -375,7 +375,7 @@ long p2m_set_mem_access_multi(struct domain *d,
         if ( !altp2m_is_eptp_valid(d, altp2m_idx) )
             return -EINVAL;
 
-        ap2m = d->arch.altp2m_p2m[array_index_nospec(altp2m_idx, d->nr_altp2m)];
+        ap2m = d->altp2m_p2m[array_index_nospec(altp2m_idx, d->nr_altp2m)];
     }
 #endif
 
@@ -438,7 +438,7 @@ int p2m_get_mem_access(struct domain *d, gfn_t gfn, xenmem_access_t *access,
         if ( !altp2m_is_eptp_valid(d, altp2m_idx) )
             return -EINVAL;
 
-        p2m = d->arch.altp2m_p2m[array_index_nospec(altp2m_idx, d->nr_altp2m)];
+        p2m = d->altp2m_p2m[array_index_nospec(altp2m_idx, d->nr_altp2m)];
     }
 #endif
 
@@ -457,7 +457,7 @@ void arch_p2m_set_access_required(struct domain *d, bool access_required)
         unsigned int i;
         for ( i = 0; i < d->nr_altp2m; i++ )
         {
-            struct p2m_domain *p2m = d->arch.altp2m_p2m[i];
+            struct p2m_domain *p2m = d->altp2m_p2m[i];
 
             if ( p2m )
                 p2m->access_required = access_required;
diff --git a/xen/arch/x86/mm/mem_sharing.c b/xen/arch/x86/mm/mem_sharing.c
index 8319733b1bb6..b7d8fb9ad1aa 100644
--- a/xen/arch/x86/mm/mem_sharing.c
+++ b/xen/arch/x86/mm/mem_sharing.c
@@ -919,7 +919,7 @@ static int nominate_page(struct domain *d, gfn_t gfn,
 
         for ( i = 0; i < d->nr_altp2m; i++ )
         {
-            ap2m = d->arch.altp2m_p2m[i];
+            ap2m = d->altp2m_p2m[i];
             if ( !ap2m )
                 continue;
 
diff --git a/xen/arch/x86/mm/p2m-ept.c b/xen/arch/x86/mm/p2m-ept.c
index ed850723f5fd..ddb4c7606be1 100644
--- a/xen/arch/x86/mm/p2m-ept.c
+++ b/xen/arch/x86/mm/p2m-ept.c
@@ -1311,7 +1311,7 @@ static void ept_set_ad_sync(struct domain *d, bool value)
             if ( d->arch.altp2m_eptp[i] == mfn_x(INVALID_MFN) )
                 continue;
 
-            p2m = d->arch.altp2m_p2m[i];
+            p2m = d->altp2m_p2m[i];
 
             p2m_lock(p2m);
             p2m->ept.ad = value;
@@ -1579,7 +1579,7 @@ void __init setup_ept_dump(void)
 void p2m_init_altp2m_ept(struct domain *d, unsigned int i)
 {
     struct p2m_domain *p2m =
-        d->arch.altp2m_p2m[array_index_nospec(i, d->nr_altp2m)];
+        d->altp2m_p2m[array_index_nospec(i, d->nr_altp2m)];
     struct p2m_domain *hostp2m = p2m_get_hostp2m(d);
     struct ept_data *ept;
 
@@ -1603,7 +1603,7 @@ unsigned int p2m_find_altp2m_by_eptp(struct domain *d, uint64_t eptp)
         if ( d->arch.altp2m_eptp[i] == mfn_x(INVALID_MFN) )
             continue;
 
-        p2m = d->arch.altp2m_p2m[i];
+        p2m = d->altp2m_p2m[i];
         ept = &p2m->ept;
 
         if ( eptp == ept->eptp )
diff --git a/xen/arch/x86/mm/p2m.c b/xen/arch/x86/mm/p2m.c
index 41517765c5ec..5bd426296f20 100644
--- a/xen/arch/x86/mm/p2m.c
+++ b/xen/arch/x86/mm/p2m.c
@@ -111,7 +111,7 @@ void p2m_change_entry_type_global(struct domain *d,
         {
             if ( d->arch.altp2m_eptp[i] != mfn_x(INVALID_MFN) )
             {
-                struct p2m_domain *altp2m = d->arch.altp2m_p2m[i];
+                struct p2m_domain *altp2m = d->altp2m_p2m[i];
 
                 p2m_lock(altp2m);
                 change_entry_type_global(altp2m, ot, nt);
@@ -157,7 +157,7 @@ bool p2m_memory_type_changed(struct domain *d)
         {
             if ( d->arch.altp2m_eptp[i] != mfn_x(INVALID_MFN) )
             {
-                struct p2m_domain *altp2m = d->arch.altp2m_p2m[i];
+                struct p2m_domain *altp2m = d->altp2m_p2m[i];
 
                 p2m_lock(altp2m);
                 _memory_type_changed(altp2m);
@@ -955,7 +955,7 @@ void p2m_change_type_range(struct domain *d,
         {
             if ( d->arch.altp2m_eptp[i] != mfn_x(INVALID_MFN) )
             {
-                struct p2m_domain *altp2m = d->arch.altp2m_p2m[i];
+                struct p2m_domain *altp2m = d->altp2m_p2m[i];
 
                 p2m_lock(altp2m);
                 change_type_range(altp2m, start, end, ot, nt);
@@ -1031,7 +1031,7 @@ int p2m_finish_type_change(struct domain *d,
         {
             if ( d->arch.altp2m_eptp[i] != mfn_x(INVALID_MFN) )
             {
-                struct p2m_domain *altp2m = d->arch.altp2m_p2m[i];
+                struct p2m_domain *altp2m = d->altp2m_p2m[i];
 
                 p2m_lock(altp2m);
                 rc = finish_type_change(altp2m, first_gfn, max_nr);
diff --git a/xen/include/xen/sched.h b/xen/include/xen/sched.h
index 458f2f260dd7..5d8ba2d2ab19 100644
--- a/xen/include/xen/sched.h
+++ b/xen/include/xen/sched.h
@@ -626,6 +626,7 @@ struct domain
     /* altp2m: allow multiple copies of host p2m */
     bool altp2m_active;
     unsigned int nr_altp2m;    /* Number of altp2m tables. */
+    struct p2m_domain **altp2m_p2m;
 #endif
 
 #ifdef CONFIG_VMTRACE
-- 
2.34.1



From xen-devel-bounces@lists.xenproject.org Mon Apr 20 21:27:41 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 20 Apr 2026 21:27:41 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1287493.1567908 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wEw9Y-0001HG-8f; Mon, 20 Apr 2026 21:27:36 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1287493.1567908; Mon, 20 Apr 2026 21:27: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 1wEw9Y-0001H5-4v; Mon, 20 Apr 2026 21:27:36 +0000
Received: by outflank-mailman (input) for mailman id 1287493;
 Mon, 20 Apr 2026 21:27:34 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <Rose.Spangler@elektrobit.com>) id 1wEw9W-00019J-GP
 for xen-devel@lists.xenproject.org; Mon, 20 Apr 2026 21:27:34 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wEw9V-00CBiW-TP
 for xen-devel@lists.xenproject.org; Mon, 20 Apr 2026 23:27:33 +0200
Received: from [10.42.69.2] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <Rose.Spangler@elektrobit.com>)
 id 69e69a45-e002-0a2a0a5209dd-0a2a450280e4-0
 for <xen-devel@lists.xenproject.org>; Mon, 20 Apr 2026 23:27:33 +0200
Received: from [52.101.201.123]
 (helo=PH7PR06CU001.outbound.protection.outlook.com)
 by tlsNG-720697.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.1)
 (envelope-from <Rose.Spangler@elektrobit.com>)
 id 69e69a43-af86-0a2a45020019-3465c97b9be8-3
 for <xen-devel@lists.xenproject.org>; Mon, 20 Apr 2026 23:27:33 +0200
Received: from MN2PR11CA0019.namprd11.prod.outlook.com (2603:10b6:208:23b::24)
 by DS7PR08MB6848.namprd08.prod.outlook.com (2603:10b6:5:3a5::22) with
 Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9818.32; Mon, 20 Apr
 2026 21:27:26 +0000
Received: from BN1PEPF00006002.namprd05.prod.outlook.com
 (2603:10b6:208:23b:cafe::f7) by MN2PR11CA0019.outlook.office365.com
 (2603:10b6:208:23b::24) with Microsoft SMTP Server (version=TLS1_3,
 cipher=TLS_AES_256_GCM_SHA384) id 15.20.9791.48 via Frontend Transport; Mon,
 20 Apr 2026 21:27:26 +0000
Received: from usbth1es003.ebgroup.elektrobit.com (4.79.107.243) by
 BN1PEPF00006002.mail.protection.outlook.com (10.167.243.234) with Microsoft
 SMTP Server (version=TLS1_3, cipher=TLS_AES_256_GCM_SHA384) id 15.20.9791.48
 via Frontend Transport; Mon, 20 Apr 2026 21:27:25 +0000
Received: from usbth1es003 (localhost [127.0.0.1])
 by usbth1es003.ebgroup.elektrobit.com (Postfix) with SMTP id 4fzz8s0rPKz1wdR; 
 Mon, 20 Apr 2026 14:27:25 -0700 (PDT)
Received: from DM2PR04CU003.outbound.protection.outlook.com
 (mail-dm2pr04cu00301.outbound.protection.outlook.com [40.93.13.57])
 (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)
 key-exchange secp384r1 server-signature RSA-PSS (2048 bits) server-digest
 SHA256) (No client certificate requested)
 by usbth1es003.ebgroup.elektrobit.com (Postfix) with ESMTPS;
 Mon, 20 Apr 2026 14:27:24 -0700 (PDT)
Received: from CH5PR05CA0012.namprd05.prod.outlook.com (2603:10b6:610:1f0::10)
 by BN0PR08MB7535.namprd08.prod.outlook.com (2603:10b6:408:15b::22)
 with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9818.33; Mon, 20 Apr
 2026 21:27:21 +0000
Received: from CH2PEPF00000099.namprd02.prod.outlook.com
 (2603:10b6:610:1f0:cafe::9f) by CH5PR05CA0012.outlook.office365.com
 (2603:10b6:610:1f0::10) with Microsoft SMTP Server (version=TLS1_3,
 cipher=TLS_AES_256_GCM_SHA384) id 15.20.9791.48 via Frontend Transport; Mon,
 20 Apr 2026 21:27:21 +0000
Received: from denue6es012.ebgroup.elektrobit.com (213.95.148.172) by
 CH2PEPF00000099.mail.protection.outlook.com (10.167.244.20) with Microsoft
 SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id
 15.20.9791.48 via Frontend Transport; Mon, 20 Apr 2026 21:27:18 +0000
Received: from ubuntu.localdomain (10.10.178.50) by
 denue6es012.ebgroup.elektrobit.com (10.243.160.140) with Microsoft SMTP
 Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id
 15.2.2562.35; Mon, 20 Apr 2026 23:27:15 +0200
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@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=elektrobit.com header.i="@elektrobit.com" header.h="From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck"; dkim=pass header.s=selector1 header.d=elektrobit.com header.i="@elektrobit.com" header.h="From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck"
ARC-Seal: i=2; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=pass;
 b=DaNoqRsYFrxyOOBqNNSv9oDCvg5bUOrpRAz+ehf4eE10Q/jPWYRkZnPwYcedSc6OPwTjjJDNkxzodkP59/w9j/uNyTXLZhTxE7zhUbR3/qluxmdJxeKkSAhUfkBtwmPOMm2OLnVsYtustmpg3BFJZeEo7rasTLiUHIkIdnR2/11xT3KRLUxMTZaDWg8pJobIMos1lUlU7AAPZah/LkUKaHFqRk3JSGanQePMCId3rTW3sJ+EsZYJthy90vAuOLJ+pcN3OqlgxHPk50EpPexGVYk7BKHeYCaJ43PhhB5Mxxa5kz8dG9mI1yj/ll+/kgqfO6NsmVT/Iesj8rsYgxAL2A==
ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com;
 s=arcselector10001;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1;
 bh=mIka6cApKr4tHLkM0UcaDmcfawXuEpYHKEShj03nxYM=;
 b=B3kcdjBRWcXb8OgpRkxPd8AKIKKw95NdpIwFq2aq82VEw4tlDcW5SJtPzmG+USHHKtaUnFAK5oPsOl0N+nna+YKFqD0SvQD1atI6Wc2ksqwL/6lNcO6eT0Ag7yAvwYRkWiPBzsZ3E4on6FYqoibPkEXTOnW5kESkzhKCDr/aatmtNExUJ6sX8WjRcr645WkxyUrvPlwXjaMLba8ZyfJ89GGcS7lF/4zXSyMPNnak6x4aLlWutZABRtNiP7fh4OqZxcbc68lLF9GocwgSXK9yN0Z+2MHljIlSjh8zq73E8qUOMhDSZiWDnBkjz0OoU9jORemTh+Jtcpp4Cp4tNGatwA==
ARC-Authentication-Results: i=2; mx.microsoft.com 1; spf=pass (sender ip is
 40.93.13.57) smtp.rcpttodomain=citrix.com smtp.mailfrom=elektrobit.com;
 dmarc=pass (p=quarantine sp=none pct=100) action=none
 header.from=elektrobit.com; dkim=pass (signature was verified)
 header.d=elektrobit.com; arc=pass (0 oda=1 ltdi=1
 spf=[1,1,smtp.mailfrom=elektrobit.com]
 dmarc=[1,1,header.from=elektrobit.com])
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=elektrobit.com;
 s=selector1;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck;
 bh=mIka6cApKr4tHLkM0UcaDmcfawXuEpYHKEShj03nxYM=;
 b=Gmj4lRr5Yh7NA54s1Tki+r0woLIEESbL//qdYRqMkXLF+8JLppJHHh3TROFsajslmVpZvGTdtHUhu97ousn9IpyF3/nOaXrlGLGVCFTzmj/Qy8NUw9aB6t28gbK7hAwJF1Mw9Rsi7JlHr0yxp8vL7YFXM+15kcatH3ECGOSO/gA=
X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 40.93.13.57)
 smtp.mailfrom=elektrobit.com; dkim=pass (signature was verified)
 header.d=elektrobit.com;dmarc=pass action=none header.from=elektrobit.com;
Received-SPF: Pass (protection.outlook.com: domain of elektrobit.com
 designates 40.93.13.57 as permitted sender) receiver=protection.outlook.com;
 client-ip=40.93.13.57; helo=DM2PR04CU003.outbound.protection.outlook.com;
 pr=C
ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none;
 b=u6+hHL8Va4+eWz8VNMwXFDSquak96v0djbhqFp+rXr6PnYODtY8t2l3wE0vh6+w+Z1ev9aGHy6iXKAputSxv9pylsSF7hP2fSttWO51AGsmB9knBZmdbAmDqh0twd0kIzutAnaaKapv2oFTFHXt4XWkTVkdtjEp9nUqZeu6993ggJ/8lXnFeKiTJ8cWM+lFYROYl6xYOBp9o6M2eY0NqefI2QeEi2T0RZ6P8V/hFi1tHKIRus43KOsAxcA2X/pYcfogviUGrt4Y3zGPagb7mdsFGtHwLhDd+G+JA3sJvV5PowHKw+N/QPdKQmoLjO8i9sCC64bt/QnG1zocvY1qISw==
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com;
 s=arcselector10001;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1;
 bh=mIka6cApKr4tHLkM0UcaDmcfawXuEpYHKEShj03nxYM=;
 b=SUsqa6FraOykBCUxc3KMObSPoA8Z5arTiA7kiQPLca63NNeBsWQfqX3CSb97jbaXZ6xxsIo12bnVyGkf8cMrVqNESSaPOczNXvi2yQHVkBehtcTuaCnoJevtKuA+HRGuw5UxTAcn7wd3gmM97Uf+7Ih7iKxu/AyDpcJ4OOcL22zq7aN6um3/QMGumg4MZqb04Kag2R2BluDSOFsUQ83zQd9Tai5roXv0aYQwDLxl9zZY2IbuzG97oB1yWli2WQmGE9JLUrlcB+wjKL9H8lvifsVpFwuuCxo6ZWS6ENp7kNHqAZMWEoIcQ5WhVA4IIkNALQE9YHwSYkU3W8Bb2EMaTQ==
ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass (sender ip is
 213.95.148.172) smtp.rcpttodomain=lists.xenproject.org
 smtp.mailfrom=elektrobit.com; dmarc=pass (p=quarantine sp=none pct=100)
 action=none header.from=elektrobit.com; dkim=none (message not signed);
 arc=none (0)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=elektrobit.com;
 s=selector1;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck;
 bh=mIka6cApKr4tHLkM0UcaDmcfawXuEpYHKEShj03nxYM=;
 b=Gmj4lRr5Yh7NA54s1Tki+r0woLIEESbL//qdYRqMkXLF+8JLppJHHh3TROFsajslmVpZvGTdtHUhu97ousn9IpyF3/nOaXrlGLGVCFTzmj/Qy8NUw9aB6t28gbK7hAwJF1Mw9Rsi7JlHr0yxp8vL7YFXM+15kcatH3ECGOSO/gA=
X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 213.95.148.172)
 smtp.mailfrom=elektrobit.com; dkim=none (message not signed)
 header.d=none;dmarc=pass action=none header.from=elektrobit.com;
Received-SPF: Pass (protection.outlook.com: domain of elektrobit.com
 designates 213.95.148.172 as permitted sender)
 receiver=protection.outlook.com; client-ip=213.95.148.172;
 helo=denue6es012.ebgroup.elektrobit.com; pr=C
From: Rose Spangler <Rose.Spangler@elektrobit.com>
To: <xen-devel@lists.xenproject.org>
CC: Rose Spangler <Rose.Spangler@elektrobit.com>, Jan Beulich
	<jbeulich@suse.com>, Andrew Cooper <andrew.cooper3@citrix.com>,
	=?UTF-8?q?Roger=20Pau=20Monn=C3=A9?= <roger.pau@citrix.com>, Teddy Astie
	<teddy.astie@vates.tech>
Subject: [RFC PATCH v6 12/43] x86/p2m: Move p2m_{init,free}_one declarations to arch header
Date: Mon, 20 Apr 2026 17:26:17 -0400
Message-ID: <20260420212648.208640-5-Rose.Spangler@elektrobit.com>
X-Mailer: git-send-email 2.34.1
In-Reply-To: <20260420212648.208640-1-Rose.Spangler@elektrobit.com>
References: <20260420212648.208640-1-Rose.Spangler@elektrobit.com>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit
Content-Type: text/plain
X-Originating-IP: [10.10.178.50]
X-ClientProxiedBy: denue6es013.ebgroup.elektrobit.com (10.243.160.141) To
 denue6es012.ebgroup.elektrobit.com (10.243.160.140)
X-EOPAttributedMessage: 1
X-MS-Exchange-SkipListedInternetSender:
 ip=[213.95.148.172];domain=denue6es012.ebgroup.elektrobit.com
X-MS-TrafficTypeDiagnostic:
	CH2PEPF00000099:EE_|BN0PR08MB7535:EE_|BN1PEPF00006002:EE_|DS7PR08MB6848:EE_
X-MS-Office365-Filtering-Correlation-Id: a5554a6e-0510-4b09-0372-08de9f239e6c
X-SM-outgoing: yes
X-MS-Exchange-SenderADCheck: 1
X-MS-Exchange-AntiSpam-Relay: 0
X-Microsoft-Antispam-Untrusted:
 BCL:0;ARA:13230040|82310400026|36860700016|376014|1800799024|56012099003|22082099003|18002099003;
X-Microsoft-Antispam-Message-Info-Original:
 =?us-ascii?Q?MmiX7r19sRecRQnpWqyQfixt635jXmAnSav3yTFjeuTmor6AeX/9+rMA0xZV?=
 =?us-ascii?Q?iIJCzsaossVjL3/J5D4UH8K+nTufnTk6KuexDdzXA0VtLqapI27CTDsNGroL?=
 =?us-ascii?Q?8UgSPWfY0Z6Z8dFjJDed77Rzx6F9u6tIYdlmYd7nDdbC6/LAJx3JdSPNyZdU?=
 =?us-ascii?Q?nEkXXu9qi0Ma14BDzme9DZHCyu2bCDOctodC8hauJrBK5h1l+tyVwoHxcbSe?=
 =?us-ascii?Q?b0EopR+No6h8ybjVZLCTNhQA8gGyqRtNml52CkEWF5RywODBfIHBGclLjK1o?=
 =?us-ascii?Q?GMpe7YllAo1bLA1pTxG2v0l1QQdKq0MI14XNh0GXKst3uIygEfqCaAL4tHxB?=
 =?us-ascii?Q?Xsv6mFw2+3P/pIOuL8bN0L0oQCeov03iRbHc3kPPUN2xWrMX1APkmUqtIffT?=
 =?us-ascii?Q?EZx6saCh1YltKBMpi0CQiLFUk2cITdBkjQ+jeJ639rb3yQeuJO+PEQR/NwtT?=
 =?us-ascii?Q?kq9+VKVthfUcNDyqagF0w6dj63hdr0j34oU4oGreqdLXpU0ln+FlvE8x4iNt?=
 =?us-ascii?Q?rYyd8gehdwbhQPPLhlHatljAj/EV5RXHWDGoay+SDgzY4CzsJQDwsLljLbfx?=
 =?us-ascii?Q?cg9Z0EcXnVkxKWNHg28NdrT8gmU/3yGslKlJcR66gT5NL1jK8MrDPrmfhStX?=
 =?us-ascii?Q?Qndilfqs0RxrEKE2sKFFrwi+nH5EnRx1/MNQoXk5eRqUEyJgHj2St7e8DJ7r?=
 =?us-ascii?Q?WO6va1rEqOYrdQ9YPPbmSLYZKPCBQ0aEDYCnwY0Hhpcz/sz/qrNOYGOth/At?=
 =?us-ascii?Q?j/2qErC7mkDqfmBlXWWmPd5nY+e/X8LMIi8TUebDRXc9C5wi/qvHL/HTK+1+?=
 =?us-ascii?Q?fRq8LcAg5Gp22UpMGXkHvlrnkjhW3AUMPSUDxJMN1G4Y8IqocbGlVNvonH6h?=
 =?us-ascii?Q?+LRg+MihN95T8DjHge2UQQ3zEZgFIPW4CJccwt5U6c3zojh2V1h33fH9Ri7+?=
 =?us-ascii?Q?N+rCg2iycdyKqffAxrbOEZzOBKGVGbGqDg5Ls0kqJkmruQacw83SJVEsd8FY?=
 =?us-ascii?Q?NM+822M9GQBBXlwhmcUGFnfGKucHIeLRz6ArGcev9afJcPXtngSGQeEiIftW?=
 =?us-ascii?Q?Ck6vlpLW9vGDzqtKOeIgsu6JdYPax6ymiomjX0rs1f1JB/3Z2gE8rHY2PonH?=
 =?us-ascii?Q?Ue+lpS0QysAlGJjOvw6V+muPZzoQJJVxkaBi/TtO5yEkdV60lnSRHbgtR4mt?=
 =?us-ascii?Q?kqTh5Q0GdeFmlCwHTNnj0q5LvceGvhbq7/fomGTQDlErQUuJB45q8WLklNJc?=
 =?us-ascii?Q?WEpogxBFKJO/X/4b17xC6Y3zFxH0sW2p3oZOqBtutA=3D=3D?=
X-Forefront-Antispam-Report-Untrusted:
 CIP:213.95.148.172;CTRY:DE;LANG:en;SCL:1;SRV:;IPV:CAL;SFV:NSPM;H:denue6es012.ebgroup.elektrobit.com;PTR:eth1-fw1-nbg6.eb.noris.de;CAT:NONE;SFS:(13230040)(82310400026)(36860700016)(376014)(1800799024)(56012099003)(22082099003)(18002099003);DIR:OUT;SFP:1102;
X-Exchange-RoutingPolicyChecked:
 rz9EV0cxbu5ghVAURjsAnKF6tkbC1axgak7v305sL+ac9RBpOJxnNVyP7FR6D9MEWPISl/0RPDPKMAtibw0g+nKj8vEFME2BPpTYwv3tbeRG4R1c+5c79VukP+bPLGqMAs9iPZrQcTzf7X30i3El5eL1Y9wPDoiQlzM0xkJch3dUC5zDYqENkWjwXcDvYn/bzy8C5q35L3gqR2dMzjbwqiTk5hETKmRBu34Lt9bhP9pk+F/rqcdQW6sLkNnThi6S7XaWAg1ex75GvjYRmbULtbBLiYO3N8VqC8CooSD9h9O/sv0x7hcVQ9I9n5UgfvQdEYyo7pmdpr1OXu87cNjW7g==
X-MS-Exchange-Transport-CrossTenantHeadersStamped: BN0PR08MB7535
X-MS-Exchange-SkipListedInternetSender:
 ip=[40.93.13.57];domain=DM2PR04CU003.outbound.protection.outlook.com
X-MS-Exchange-ExternalOriginalInternetSender:
 ip=[40.93.13.57];domain=DM2PR04CU003.outbound.protection.outlook.com
X-MS-Exchange-Transport-CrossTenantHeadersStripped:
 BN1PEPF00006002.namprd05.prod.outlook.com
X-MS-PublicTrafficType: Email
X-MS-Office365-Filtering-Correlation-Id-Prvs:
	39762365-5891-4995-ed27-08de9f2399f5
X-Microsoft-Antispam:
	BCL:0;ARA:13230040|14060799003|36860700016|35042699022|376014|82310400026|156008|1800799024|56012099003|22082099003|18002099003;
X-Microsoft-Antispam-Message-Info:
	=?us-ascii?Q?4A518ktgUsUz5kVshBI6ZF/CW3kVrnmlKJx9Dh9FxK+i8ua+Q0d1nhPZc14j?=
 =?us-ascii?Q?ZZICzMApjzx2qZCRrnab4BJea0Lgp+m8W2MEdc33dsjjici43BCILG3+ypb/?=
 =?us-ascii?Q?pOJD/oSZTj2RFJybo1xfP+fFUykP8NlsWC1/zjTwZtEP3CVaBDFyUgeZxvQx?=
 =?us-ascii?Q?MJgaIxF5wG77+VxnZsqWDumldHH4RBuG29JOCTXz2fDe7cs1IIXHNLosrOiU?=
 =?us-ascii?Q?FL4vjSV5RM4hlZT/Uqg94ANKMnZQ5J6ru1+SY4Z/VKw8iPNYFCX+uz4LOrBI?=
 =?us-ascii?Q?0H7NiuIUV4gKb19xn5+CFiDJbFKIKEP8vgcdyXa5SdARwSdGMMKh3GzqfYxG?=
 =?us-ascii?Q?Q+WHlZ/Z+C7b0TTBFxkniU+TTOWAEBOSwuGSCS5wLzaPamJontkviqqGNi3e?=
 =?us-ascii?Q?HM56lZkjL/hl6hRqWMEt1ROQ50lRLmgMMJu7wirKJnFY3CskdZFUNRipoINE?=
 =?us-ascii?Q?Fh8/shlVltRN2oDF0rObFip5MY7PyOxYXiD0grSMSgWmGVtA64dQMRqv11w4?=
 =?us-ascii?Q?9js76SNZ6YrXFM3dUMI8zSruM/JYvLMCVHhM1ic6CtUU5EvVbm+V8n4bwZaW?=
 =?us-ascii?Q?v31DqTJtEr4l4BVb7Tuu4mJVM5marhpAfS2zHxoqHQ6HhHBZy/LphYY2JkpH?=
 =?us-ascii?Q?Cirj6jWzIr8I+lItxftcLnzALqtQPf8cnaik7PtT1MV0SYSG0jcPpzwiQEOd?=
 =?us-ascii?Q?yiKO1D2q/mdS+LRJNzs+tWu7vIzdRq5hJovhW/d3dlms8C9gU79hyBLad8mG?=
 =?us-ascii?Q?+Bvn6UTQ/gMbSkrUnYkFdJEsnzvNtIiBkCX1V5CRmQnEGczx8bVFP0dA1F2P?=
 =?us-ascii?Q?yw4Q7iosegw96M/gGZJML+lKvqxcn/Odc2LlCJ//yq0rpqObhj8gW6ymMvR+?=
 =?us-ascii?Q?0Ccertm9BLb6YOpiw8TMRu+q3az/ZSEORzdZUoo78pioL+GYEU/SFZZLI38e?=
 =?us-ascii?Q?DqsInvUD9JlI6G/iKhp3Ps6MnyovaXVLpfReZUO9NeijJsWA8WtrMSoZRGjw?=
 =?us-ascii?Q?pdOMkh9BRSPfqGjxAZlHZ4mQ/9odh6nk0wNJSrl2+HG4OgXmS4d14skEnkUu?=
 =?us-ascii?Q?UbtDrcRWYuYjDzV3z/Sy3agg+xdF27pf/Qnt4sIjbBbktK4o/Cpd9aEXD6LB?=
 =?us-ascii?Q?WmB91gUJ/RYyg6iFQ5QMERa2Q2ePYlRFpoFOKeqGpEpX2cy/5CDqRgJn+h2+?=
 =?us-ascii?Q?a9/YtfMpussM3pbDl/6rdBMjEf8GhmAqLMSpSaY3ke3lwWKaoePyByPUoYC+?=
 =?us-ascii?Q?FHY6wC0+nEg+cGJoSlT2k/kWAll6dy2FHwS0EO5jjQ=3D=3D?=
X-Forefront-Antispam-Report:
	CIP:4.79.107.243;CTRY:US;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:DM2PR04CU003.outbound.protection.outlook.com;PTR:mail-dm2pr04cu00301.outbound.protection.outlook.com;CAT:NONE;SFS:(13230040)(14060799003)(36860700016)(35042699022)(376014)(82310400026)(156008)(1800799024)(56012099003)(22082099003)(18002099003);DIR:OUT;SFP:1102;
X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1
X-MS-Exchange-AntiSpam-MessageData-0:
	X1cMaIP4+iCOpV1BCFk+r6jAGZlywFovD704ek1R2PHY3XVfF/Ca2gWYoK6pHWkG2zn9irCEFQSX3FUuxD4IHh8DO+OeU3DSzhtbnXG50I+743J6wJ+j4Tv5+YT7JSJZzNpFmHmqtAuQCQGU5aq+uxTQPq+peScep44K4mViwOqxSQH+8R6tYcqdfIESEQ+j17X5BFeCbcInNSfFo2vhEZhPoiHTpTr3PsoPt30NsYsk7imHP9oC4v+kAdGqxlvvAtadVnn1QdGUbtx1jCAe7zpkDQO1WsHr3TZUszK9humzM9keZjPtmA/twOtWtivF7UNPcAeUTfRqyppY5yL+xcNOmnkjOyjzvRt1Nsgd8+kE8sSRQQ1w2VMv0Gon9FwEDlLOPHSsOMlq+dQvmhpAAEbmMYiN8Fy73zfK49zzwgXwhuFljphnprIwbweGt1Kf
X-OriginatorOrg: elektrobit.com
X-MS-Exchange-CrossTenant-OriginalArrivalTime: 20 Apr 2026 21:27:25.9668
 (UTC)
X-MS-Exchange-CrossTenant-Network-Message-Id: a5554a6e-0510-4b09-0372-08de9f239e6c
X-MS-Exchange-CrossTenant-Id: e764c36b-012e-4216-910d-8fd16283182d
X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=e764c36b-012e-4216-910d-8fd16283182d;Ip=[4.79.107.243];Helo=[usbth1es003.ebgroup.elektrobit.com]
X-MS-Exchange-CrossTenant-AuthAs: Internal
X-MS-Exchange-CrossTenant-AuthSource: TreatMessagesAsInternal-BN1PEPF00006002.namprd05.prod.outlook.com
X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem
X-MS-Exchange-Transport-CrossTenantHeadersStamped: DS7PR08MB6848
X-purgate-ID: tlsNG-720697/1776720453-89AC2161-AA47EB31/0/0
X-purgate-type: clean
X-purgate-size: 1613

This commit moves the p2m_init_one and p2m_free_one declarations from the
x86-only p2m.h header file to the asm/p2m.h header. This makes it possible
to use these functions in the common altp2m init/teardown routines.

This is commit 1/12 of the altp2m_init/altp2m_teardown routines phase.

Signed-off-by: Rose Spangler <Rose.Spangler@elektrobit.com>
---
v6: Introduced this patch.
---
 xen/arch/x86/include/asm/p2m.h | 3 +++
 xen/arch/x86/mm/p2m.h          | 3 ---
 2 files changed, 3 insertions(+), 3 deletions(-)

diff --git a/xen/arch/x86/include/asm/p2m.h b/xen/arch/x86/include/asm/p2m.h
index 5110b3e77807..ce8eeb751ee9 100644
--- a/xen/arch/x86/include/asm/p2m.h
+++ b/xen/arch/x86/include/asm/p2m.h
@@ -592,6 +592,9 @@ int p2m_alloc_table(struct p2m_domain *p2m);
 void p2m_teardown(struct p2m_domain *p2m, bool remove_root, bool *preempted);
 void p2m_final_teardown(struct domain *d);
 
+struct p2m_domain *p2m_init_one(struct domain *d);
+void p2m_free_one(struct p2m_domain *p2m);
+
 /* Add/remove a page to/from a domain's p2m table. */
 int p2m_add_page(struct domain *d, gfn_t gfn, mfn_t mfn,
                  unsigned int page_order, p2m_type_t t);
diff --git a/xen/arch/x86/mm/p2m.h b/xen/arch/x86/mm/p2m.h
index 64218878067e..be8ed85c2aba 100644
--- a/xen/arch/x86/mm/p2m.h
+++ b/xen/arch/x86/mm/p2m.h
@@ -6,9 +6,6 @@
 #ifndef __ARCH_MM_P2M_H__
 #define __ARCH_MM_P2M_H__
 
-struct p2m_domain *p2m_init_one(struct domain *d);
-void p2m_free_one(struct p2m_domain *p2m);
-
 void p2m_pod_init(struct p2m_domain *p2m);
 
 #ifdef CONFIG_HVM
-- 
2.34.1



From xen-devel-bounces@lists.xenproject.org Mon Apr 20 21:27:41 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 20 Apr 2026 21:27:41 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1287491.1567889 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wEw9T-0000nw-KF; Mon, 20 Apr 2026 21:27:31 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1287491.1567889; Mon, 20 Apr 2026 21:27: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 1wEw9T-0000np-He; Mon, 20 Apr 2026 21:27:31 +0000
Received: by outflank-mailman (input) for mailman id 1287491;
 Mon, 20 Apr 2026 21:27:30 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <Rose.Spangler@elektrobit.com>) id 1wEw9R-0000nb-Tp
 for xen-devel@lists.xenproject.org; Mon, 20 Apr 2026 21:27:30 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wEw9R-001Myj-6m
 for xen-devel@lists.xenproject.org; Mon, 20 Apr 2026 23:27:29 +0200
Received: from [10.42.69.5] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <Rose.Spangler@elektrobit.com>)
 id 69e69a3f-bab6-0a2a0a5309dd-0a2a45058cfa-2
 for <xen-devel@lists.xenproject.org>; Mon, 20 Apr 2026 23:27:29 +0200
Received: from [52.101.52.98]
 (helo=BL2PR02CU003.outbound.protection.outlook.com)
 by tlsNG-c201ff.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.1)
 (envelope-from <Rose.Spangler@elektrobit.com>)
 id 69e69a3f-aaa8-0a2a45050019-34653462995b-3
 for <xen-devel@lists.xenproject.org>; Mon, 20 Apr 2026 23:27:28 +0200
Received: from CY8PR19CA0010.namprd19.prod.outlook.com (2603:10b6:930:44::16)
 by SA3PR08MB8547.namprd08.prod.outlook.com (2603:10b6:806:2ff::22)
 with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9818.32; Mon, 20 Apr
 2026 21:27:23 +0000
Received: from CY4PEPF0000EDD0.namprd03.prod.outlook.com
 (2603:10b6:930:44:cafe::65) by CY8PR19CA0010.outlook.office365.com
 (2603:10b6:930:44::16) with Microsoft SMTP Server (version=TLS1_3,
 cipher=TLS_AES_256_GCM_SHA384) id 15.20.9791.48 via Frontend Transport; Mon,
 20 Apr 2026 21:27:23 +0000
Received: from usbth1es003.ebgroup.elektrobit.com (4.79.107.243) by
 CY4PEPF0000EDD0.mail.protection.outlook.com (10.167.241.196) with Microsoft
 SMTP Server (version=TLS1_3, cipher=TLS_AES_256_GCM_SHA384) id 15.20.9791.48
 via Frontend Transport; Mon, 20 Apr 2026 21:27:23 +0000
Received: from usbth1es003 (localhost [127.0.0.1])
 by usbth1es003.ebgroup.elektrobit.com (Postfix) with SMTP id 4fzz8p3bhGz1wdS; 
 Mon, 20 Apr 2026 14:27:22 -0700 (PDT)
Received: from DM2PR0701CU001.outbound.protection.outlook.com
 (mail-dm2pr0701cu00106.outbound.protection.outlook.com [40.93.13.70])
 (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)
 key-exchange secp384r1 server-signature RSA-PSS (2048 bits) server-digest
 SHA256) (No client certificate requested)
 by usbth1es003.ebgroup.elektrobit.com (Postfix) with ESMTPS;
 Mon, 20 Apr 2026 14:27:22 -0700 (PDT)
Received: from CH0PR04CA0007.namprd04.prod.outlook.com (2603:10b6:610:76::12)
 by DS1PR08MB9786.namprd08.prod.outlook.com (2603:10b6:8:208::20) with
 Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9818.32; Mon, 20 Apr
 2026 21:27:17 +0000
Received: from CH2PEPF0000009A.namprd02.prod.outlook.com
 (2603:10b6:610:76:cafe::30) by CH0PR04CA0007.outlook.office365.com
 (2603:10b6:610:76::12) with Microsoft SMTP Server (version=TLS1_3,
 cipher=TLS_AES_256_GCM_SHA384) id 15.20.9791.48 via Frontend Transport; Mon,
 20 Apr 2026 21:27:17 +0000
Received: from denue6es012.ebgroup.elektrobit.com (213.95.148.172) by
 CH2PEPF0000009A.mail.protection.outlook.com (10.167.244.22) with Microsoft
 SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id
 15.20.9791.48 via Frontend Transport; Mon, 20 Apr 2026 21:27:16 +0000
Received: from ubuntu.localdomain (10.10.178.50) by
 denue6es012.ebgroup.elektrobit.com (10.243.160.140) with Microsoft SMTP
 Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id
 15.2.2562.35; Mon, 20 Apr 2026 23:27:14 +0200
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@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=elektrobit.com header.i="@elektrobit.com" header.h="From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck"; dkim=pass header.s=selector1 header.d=elektrobit.com header.i="@elektrobit.com" header.h="From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck"
ARC-Seal: i=2; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=pass;
 b=Y8yN2cXiRlcg9ePW0kkWk37TqxMCFAsAcf8eIlmp16gXKWoMC4+PZohOOlMpVqk4Rcpoo3aU30L6L/OGEl7vcOzICls34Fjf8mpkKwoiko3ebg5M3wkBIIjancpdvs5+I4S/vrmKMUmYD39thawC/TKzXgct83xgvaYIIJrcNube164rsPK/BaYd7SMAq5egSxxtoWzczTDi6oF/QMyGBJmhSV4cLH1y+bdwcOzN+zMn2glz8GKYpZ33pVkg7IarXx0fDMcG3xh4tIDTcABoALomCusfs5vfE+QB9G4uEBvQXeZu+cvHDFuDFF+a60WucCM0HJ38a/Zh30aaQWPTOw==
ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com;
 s=arcselector10001;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1;
 bh=W3upe/u9EtcR35MDKboxPwogT42enux6AtMfl8vUTCc=;
 b=pE9FAet/zXsgROA4uIYIiotK82cBFOt7CrV/x3RRYFgnUD2CJfsAEOlJrrSqoluMwbBSSW7v56uI43ZBGX18t/pc+gtePSVwNLd+eFPAPx6/SSlyLZc/ahG/eUrKVixh2aJIvHJGT1apxVejQXif9dH3DWlpIy787N/avd3u7MkOq0FzMrlmN2JLXJy/8bxphexlOGuj/ApeHW8A/8rkczgXwUQhcxalF2ltG0bMWOP6umrw9MntC3O43w1tKXrfgOd2kfUCuoqyRjugLXSkXsoGoupTXBEvRjvRxwyO6pn0oihmPOGzXmSYQ124NU4V2ktMbQQtO3neY5qoOuUXlQ==
ARC-Authentication-Results: i=2; mx.microsoft.com 1; spf=pass (sender ip is
 40.93.13.70) smtp.rcpttodomain=amd.com smtp.mailfrom=elektrobit.com;
 dmarc=pass (p=quarantine sp=none pct=100) action=none
 header.from=elektrobit.com; dkim=pass (signature was verified)
 header.d=elektrobit.com; arc=pass (0 oda=1 ltdi=1
 spf=[1,1,smtp.mailfrom=elektrobit.com]
 dmarc=[1,1,header.from=elektrobit.com])
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=elektrobit.com;
 s=selector1;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck;
 bh=W3upe/u9EtcR35MDKboxPwogT42enux6AtMfl8vUTCc=;
 b=nNhbXk/IOFWKTDgGjVBsiCTDIB1uzy0KPYxuDmYX1Qyxh0rXNbPnnsvemZzDM+OadCf9p98gbxtZE7YRBbCc3TSkaEiVkoDGdui9wJrq714kTxnaWVKhOGmvNuCf3tLZn1pzs0FM+agDxxfvQHT0b4zEPfBax6C/8xod9BGe74Q=
X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 40.93.13.70)
 smtp.mailfrom=elektrobit.com; dkim=pass (signature was verified)
 header.d=elektrobit.com;dmarc=pass action=none header.from=elektrobit.com;
Received-SPF: Pass (protection.outlook.com: domain of elektrobit.com
 designates 40.93.13.70 as permitted sender) receiver=protection.outlook.com;
 client-ip=40.93.13.70; helo=DM2PR0701CU001.outbound.protection.outlook.com;
 pr=C
ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none;
 b=yX9tH4w95wXGcaNJ0B+AlZKWP6KKKGVGYqr5hdBhqZe2wKU4ea1oc+BCHuHQUbS1gkZ69PFWj2mjJnYEANU5yKtl4Gf8BvuyHob+nzizYNBaA05ZzaUDlO6EOVh9JhTZfye3IrXvHfd/E8AJp9WvHFG1mlYeBl3G4OfMsl9go8yzZ1dUWqteXWzPcwjDUTYqJTFU3D3AGWaAbJ5qa+XbclN0sJs+riozFtoxaR9Mg7ABgoq5W9s4xSiTmK7rA8TBw2y5Xrjw4hiWSDpNS8XaWRd6/b5YwrMIXgHUSA/pl/uXPyMqs1gzsBu/acwiqwQ1xl1o9qhaR5rW12dOC2WBnA==
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com;
 s=arcselector10001;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1;
 bh=W3upe/u9EtcR35MDKboxPwogT42enux6AtMfl8vUTCc=;
 b=CXVLqTRxJHm+UbqGX3UgWBpuMjfuWyQpLPZuKVRvn6vigT8V7n3FXVNhjNCEWFOZJwWCsBqRp4XU6terx1HUozkWbDVbHjvIMYuzLS97esuqrDeQTExhFQS+UjOCzIGHAIzviREyJQsbmlEMyROEtLHMFM2a2ePThtuqhuFkbrWsevpslcmAniFNaTVlyEaTghhJtRBZY3egYXQAsdL4qDj64BxbtiEmeJo47VwHBwlLOU0IQczeNLjC17N7JKgmF2yxa71wjp7t5lJP2pM7TToeOchGEwj3cWS88v9uQs1S96xrqFtQOMsu1a7Mm4dQ3MZOj86aWkvReGU0i+kG7g==
ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass (sender ip is
 213.95.148.172) smtp.rcpttodomain=lists.xenproject.org
 smtp.mailfrom=elektrobit.com; dmarc=pass (p=quarantine sp=none pct=100)
 action=none header.from=elektrobit.com; dkim=none (message not signed);
 arc=none (0)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=elektrobit.com;
 s=selector1;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck;
 bh=W3upe/u9EtcR35MDKboxPwogT42enux6AtMfl8vUTCc=;
 b=nNhbXk/IOFWKTDgGjVBsiCTDIB1uzy0KPYxuDmYX1Qyxh0rXNbPnnsvemZzDM+OadCf9p98gbxtZE7YRBbCc3TSkaEiVkoDGdui9wJrq714kTxnaWVKhOGmvNuCf3tLZn1pzs0FM+agDxxfvQHT0b4zEPfBax6C/8xod9BGe74Q=
X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 213.95.148.172)
 smtp.mailfrom=elektrobit.com; dkim=none (message not signed)
 header.d=none;dmarc=pass action=none header.from=elektrobit.com;
Received-SPF: Pass (protection.outlook.com: domain of elektrobit.com
 designates 213.95.148.172 as permitted sender)
 receiver=protection.outlook.com; client-ip=213.95.148.172;
 helo=denue6es012.ebgroup.elektrobit.com; pr=C
From: Rose Spangler <Rose.Spangler@elektrobit.com>
To: <xen-devel@lists.xenproject.org>
CC: Rose Spangler <Rose.Spangler@elektrobit.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.pau@citrix.com>, Stefano Stabellini <sstabellini@kernel.org>
Subject: [RFC PATCH v6 11/43] arm/altp2m: Add support for HVMOP_altp2m_get_domain_state
Date: Mon, 20 Apr 2026 17:26:16 -0400
Message-ID: <20260420212648.208640-4-Rose.Spangler@elektrobit.com>
X-Mailer: git-send-email 2.34.1
In-Reply-To: <20260420212648.208640-1-Rose.Spangler@elektrobit.com>
References: <20260420212648.208640-1-Rose.Spangler@elektrobit.com>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit
Content-Type: text/plain
X-Originating-IP: [10.10.178.50]
X-ClientProxiedBy: denue6es013.ebgroup.elektrobit.com (10.243.160.141) To
 denue6es012.ebgroup.elektrobit.com (10.243.160.140)
X-EOPAttributedMessage: 1
X-MS-Exchange-SkipListedInternetSender:
 ip=[213.95.148.172];domain=denue6es012.ebgroup.elektrobit.com
X-MS-TrafficTypeDiagnostic:
	CH2PEPF0000009A:EE_|DS1PR08MB9786:EE_|CY4PEPF0000EDD0:EE_|SA3PR08MB8547:EE_
X-MS-Office365-Filtering-Correlation-Id: 1b1834a0-a819-4122-56ba-08de9f239c9a
X-SM-outgoing: yes
X-MS-Exchange-SenderADCheck: 1
X-MS-Exchange-AntiSpam-Relay: 0
X-Microsoft-Antispam-Untrusted:
 BCL:0;ARA:13230040|82310400026|36860700016|376014|1800799024|56012099003|22082099003|18002099003;
X-Microsoft-Antispam-Message-Info-Original:
 =?us-ascii?Q?ZCYbrNfOJ5NFQ78UP4ItYLOAnFxhrINg1d12XNUBRhPr5QliErvnGFlz4ImE?=
 =?us-ascii?Q?LTUr78bPnjI/fMfxuRHwu+WeTylm8RFBWnY6/CtXwSRbBvnXyk52uuaL52LQ?=
 =?us-ascii?Q?zbrj9i8cO6KH8bFXO7M9AdpqcrZN5QeCQRZIAKFnUmcipEfw6bTxJJBrkUZw?=
 =?us-ascii?Q?VTw0D8ppes1sj18eGwl/0Hb/sDDm81ajv82fG4L7R0eQMJXxCAt008d6Cge4?=
 =?us-ascii?Q?j1UlxrB86AUMUZKP92+t6lv+gzdyWzpeqiLfJ+De7btuvZgXrMPJeGLeasbe?=
 =?us-ascii?Q?gydwVgjfyVZfsCgMaDnvYhjV5ddTcKstp4WPG6R/KWdc23GWmFt5YQz+1u46?=
 =?us-ascii?Q?BQs1rkrib8L2oiwmj6ltJZwBAQRJoZ/nOt4FL1uxD48hzzpSGvYjBLIzPBln?=
 =?us-ascii?Q?RTiTb2zAfE9YROEKT3+lkje2V8GhQ6xZyHJMIhaulh7XWmbhQT3yXBEcSxBc?=
 =?us-ascii?Q?Eb91YEXszh1Z5/HQokpBaf8cOD2gLuVfR2CQnU0qNJuBZdCAexYpmbVhf2kZ?=
 =?us-ascii?Q?tpd4gYtuccR3B5ZC666P5ujEO8iJCX3cRfZbyQV88rwpbsXzifddbYhGQFiv?=
 =?us-ascii?Q?b4tzKBPzMDm7jjSKRuN65KsHcIPj9vLRav0HnFEXcCbOLVTwhecqqa+kK8Fa?=
 =?us-ascii?Q?GWv7qn81+mXM2qQLyCiiy3sN5GYUzHhKQUXxo38JZ3hnYjogckdHdgO0rXzN?=
 =?us-ascii?Q?UCu0Gcf9OyP6wCcCzHLb5dobtqx0/84XYCeWizsagF+Q8EqCJ2wfFix6KaRH?=
 =?us-ascii?Q?XmCPTr7391/doxMsjnH0TguqSGKWqofx4xOo7BjLIsxXdNHrAOmpXoepxg/t?=
 =?us-ascii?Q?yh4r5gw/JZm2AClcQQ16fUva1tsYSa8Hnrc5q5KqnS9lK8zLGr0RlaSPTFkQ?=
 =?us-ascii?Q?sfSc5/W9bV8Bt8D334+0Q6jcUyv0BoX1W+7a3sM1q5OFEyJjvcbJQU+eb6J2?=
 =?us-ascii?Q?l8uqpAL60GgAoQRGzV02rS2bJ/x6yG61ulStif399qI+DLvftwAlEdbok3uK?=
 =?us-ascii?Q?9xymINetrdhN9tYHZRriPMQD7qdLMREe7a60FZYjHlZi1MJwXvAiI8c9WY1y?=
 =?us-ascii?Q?wZeYKWXVsH91fwhf4OkTEdxot0XlGBIxXXykNyk9xzm9nnoxDR1iTlzWr6dV?=
 =?us-ascii?Q?YC60fV6tSneBqb0ZZ0ny8yeHBQ2+hBVtFyTR2S9+WK5BH3Ge6VeQQ1V0Jhkc?=
 =?us-ascii?Q?99FEkTPBS+m47EbSZuL8kuH4ho3Kv5murHthB/bonaTJFMto+XxlXFq1J+cb?=
 =?us-ascii?Q?YIPkkktOe/64JXMZRi5exZ49yWWWbyBTiwIRz07KeQ=3D=3D?=
X-Forefront-Antispam-Report-Untrusted:
 CIP:213.95.148.172;CTRY:DE;LANG:en;SCL:1;SRV:;IPV:CAL;SFV:NSPM;H:denue6es012.ebgroup.elektrobit.com;PTR:eth1-fw1-nbg6.eb.noris.de;CAT:NONE;SFS:(13230040)(82310400026)(36860700016)(376014)(1800799024)(56012099003)(22082099003)(18002099003);DIR:OUT;SFP:1102;
X-Exchange-RoutingPolicyChecked:
 V4t3E6/AMqj/psM2Su0/E1xsXf7WmVSqynX9NXmv7ONq1Qk2CVAG0UYSNyR9SRZDw2qdiYrbtq/b639eDHG4S5L2YyblTBjo6uq2zm+1Mv1I62KT+MMtjJNeCnuH7um0wuwNvMoEYwsL2dKGb6FX1f0iTpWC/M6HtuJ9WpqoYlppqIHf6xMSzGfsg+nKc0esdXqVWMaMN4XJ5PzPpPWM+eaZKXBW/lWU/SxeOUen5NZ6B5NhTuj9U5koyPr/d5cI8PZ7jvPRRRH4u1twYY7K/OdojMgm4kDu9Ju5h6L39qo3M7HFfzXgRTQgeMfEyLDnXMwX5Pd8ubyehY/zuQTaTg==
X-MS-Exchange-Transport-CrossTenantHeadersStamped: DS1PR08MB9786
X-MS-Exchange-SkipListedInternetSender:
 ip=[40.93.13.70];domain=DM2PR0701CU001.outbound.protection.outlook.com
X-MS-Exchange-ExternalOriginalInternetSender:
 ip=[40.93.13.70];domain=DM2PR0701CU001.outbound.protection.outlook.com
X-MS-Exchange-Transport-CrossTenantHeadersStripped:
 CY4PEPF0000EDD0.namprd03.prod.outlook.com
X-MS-PublicTrafficType: Email
X-MS-Office365-Filtering-Correlation-Id-Prvs:
	b3a081c9-5eef-4f7d-9f34-08de9f2398f3
X-Microsoft-Antispam:
	BCL:0;ARA:13230040|156008|14060799003|35042699022|82310400026|376014|36860700016|1800799024|22082099003|18002099003|56012099003;
X-Microsoft-Antispam-Message-Info:
	=?us-ascii?Q?Tmsahsh1AjraGrRanQqW3bzblgUEbfFRXgoX94AILi+CJ75dNDG0JrH60Ce3?=
 =?us-ascii?Q?ca28FrYbpya4Z4tnLHHf2u5Tm4cD7yot2PIaFpTeQ6tDhQAnOiR+7iu7mW86?=
 =?us-ascii?Q?caPLg0WdqVm830mGv6D+Xuk32ece06hgma6VGdrTVuNAK599WDMEfkWGdQco?=
 =?us-ascii?Q?nteJzwcD+PGfhWRmbpZwOUYGR9XkR2ViDfDjc/q3AG3+zZ7ADxRuWo4gqqRK?=
 =?us-ascii?Q?utaqu5lZVSSnXGXEGRIVveNruyska1byj5i0rhY9n0cPEDsVaofeSyqHTVCF?=
 =?us-ascii?Q?E2Tly1Fkjz2LXQ8fniJKs0WG6EOiY2RMQRXEe+XN354C3IZ+Pk/Z368/YCWE?=
 =?us-ascii?Q?k4afv6oeboS6z6jizEcPpo7pM9hdElWpjv02WOBb0FVUAavoR6yOzfkMmnga?=
 =?us-ascii?Q?/z2BLitp4VVE5VysEBRBRVKq9HDjIbfone4AQzczoGePqcSC5O7soglBHELb?=
 =?us-ascii?Q?ZZ5DyB3u4JuJ3YFIaNxKLCC7IySu+45SqpTrfMBchI31u5ec04YpAzNZqTTz?=
 =?us-ascii?Q?Kv1p3Xcq3kgUJVyTYl6E5FNTFkj5/TBQwnR+Xn1OVu32Uk2wI/Gljs4HULsZ?=
 =?us-ascii?Q?c89qzVZcXwT5csHMj19khVHqarpDdSkKYfaCxMjwXCNTrucfHpjJsqiQDg9Z?=
 =?us-ascii?Q?Gt8/QZBPj3k3DXFCCbjYXiK9HcBvs0of06etq8/7u6598LKUhPyBa6YlOnro?=
 =?us-ascii?Q?JZz1QvW0f8bFGIyi2fQTVbWXADcBfrx+lJel/e8SI+JmmpAV7IVwoQOD9ZrR?=
 =?us-ascii?Q?BdDvJtMbmQKUfht+ZmKBCb3G5u9KRFQ8A4f1mvxvEP+LUCYLoy6mOo4rSgXF?=
 =?us-ascii?Q?vXDiUaX+6yz9cTimlbZIy71zcopeaKV0BNoquIy+CCf2Mqft12HwD1/U0Zue?=
 =?us-ascii?Q?ZYCU290hqSnMWCSU8pjVZW8u7IT8YFfG9Bzp4VeZu6FUVxkbNxqHAgCR/yHO?=
 =?us-ascii?Q?B2GKpdbBuRMjEHSP//wDLqSJ4liG1amtGa5KCLOJ+C2IM0izGH4II5ljFkh9?=
 =?us-ascii?Q?olk8/lUujDFsB1igzZyDLmtAGMIQ+R55wW1FNqfH0T4SM6iNkO/8fGjk9Dg2?=
 =?us-ascii?Q?X3ryIaJIGMUQMq3TYbIGWJNRjwEaIE9l30sGXtY6WH5kRu7lDtdtL3lseC3K?=
 =?us-ascii?Q?vavxcaDpp40Q/cd3UNFtgCjM+vtuwADidh1qFQef6H/amj8MyOeSU2h1o+y6?=
 =?us-ascii?Q?igKzDYpXJk9Vd/yTahjbBLapzakWRKbGL+ucPEnaTQTiDNVYnhhyN9NIM/eX?=
 =?us-ascii?Q?45eVDtBwjO9zhkkQ1bs+pWmBdbDsltTpjHSAPQlywQ=3D=3D?=
X-Forefront-Antispam-Report:
	CIP:4.79.107.243;CTRY:US;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:DM2PR0701CU001.outbound.protection.outlook.com;PTR:mail-dm2pr0701cu00106.outbound.protection.outlook.com;CAT:NONE;SFS:(13230040)(156008)(14060799003)(35042699022)(82310400026)(376014)(36860700016)(1800799024)(22082099003)(18002099003)(56012099003);DIR:OUT;SFP:1102;
X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1
X-MS-Exchange-AntiSpam-MessageData-0:
	6mt3ceESEHsvTznaO1cMjDFf382TVKM9D476cpVD9f7Mvbv/b7/9ZJG2l6mrRLcGWBkS/IElko37Bl04ObDzJhvapBev9LH00hX5w5EiFs9HVXa/BhLFiVyZDt4hrJBjVnIPwKp+5p1UsoTJLTHZRuqoNmPv75/JgW6YPeyIu9FDnp8Y6H/oFSo/6+r/JtXVXAu8iV0YX3LOy/zCa8Y5nPtzwfjtcqTP0iWCxWwKeYz2d1vuMsuvo0bQ3RJyh6q8mP5IQlH3NCeapb8p4eYTuC80e8w3K7wbGDPPwjBVdBj7cYnoB44CdAJQAEtjaeqmNafyKfoOadVK9mU+6PiYFlzKyKUG2sRMxrEPxQcThArF5ZcyFsqZ/Er5QozS1yzSwxDG7R/4MrEcw5G4G1+RF2HmxJ+IpOgWWZ2iOoesR6IR2Zkg3dJIiN5R25PtO+dK
X-OriginatorOrg: elektrobit.com
X-MS-Exchange-CrossTenant-OriginalArrivalTime: 20 Apr 2026 21:27:23.0297
 (UTC)
X-MS-Exchange-CrossTenant-Network-Message-Id: 1b1834a0-a819-4122-56ba-08de9f239c9a
X-MS-Exchange-CrossTenant-Id: e764c36b-012e-4216-910d-8fd16283182d
X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=e764c36b-012e-4216-910d-8fd16283182d;Ip=[4.79.107.243];Helo=[usbth1es003.ebgroup.elektrobit.com]
X-MS-Exchange-CrossTenant-AuthAs: Internal
X-MS-Exchange-CrossTenant-AuthSource: TreatMessagesAsInternal-CY4PEPF0000EDD0.namprd03.prod.outlook.com
X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem
X-MS-Exchange-Transport-CrossTenantHeadersStamped: SA3PR08MB8547
X-purgate-ID: tlsNG-c201ff/1776720449-E19A5443-4A3B7F93/0/0
X-purgate-type: clean
X-purgate-size: 1215

This commit adds support for the altp2m_get_domain_state HVMOP on ARM. All
code used in the command implementation already works on ARM, so no further
changes beyond moving the #ifdef are necessary.

This is commit 1/1 of the get_domain_state phase.

Signed-off-by: Rose Spangler <Rose.Spangler@elektrobit.com>
---
v6: Introduced this patch.

    This commit can be squashed into the previous commit for the actual
    submission if that would be preferred, but I thought it might be easier
    to understand the command #ifdef gate approach by splitting this into a
    separate patch.
---
 xen/common/altp2m.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/xen/common/altp2m.c b/xen/common/altp2m.c
index 6481fae1ed12..3a3283f0860a 100644
--- a/xen/common/altp2m.c
+++ b/xen/common/altp2m.c
@@ -124,12 +124,12 @@ int do_altp2m_op(
 
     switch ( a.cmd )
     {
-#ifdef CONFIG_X86
     case HVMOP_altp2m_get_domain_state:
         a.u.domain_state.state = altp2m_active(d);
         rc = __copy_to_guest(arg, &a, 1) ? -EFAULT : 0;
         break;
 
+#ifdef CONFIG_X86
     case HVMOP_altp2m_set_domain_state:
     {
         struct vcpu *v;
-- 
2.34.1



From xen-devel-bounces@lists.xenproject.org Mon Apr 20 21:27:41 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 20 Apr 2026 21:27:41 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1287492.1567900 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wEw9W-000133-10; Mon, 20 Apr 2026 21:27:34 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1287492.1567900; Mon, 20 Apr 2026 21:27: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 1wEw9V-00012v-Sq; Mon, 20 Apr 2026 21:27:33 +0000
Received: by outflank-mailman (input) for mailman id 1287492;
 Mon, 20 Apr 2026 21:27:32 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <Rose.Spangler@elektrobit.com>) id 1wEw9U-0000r4-05
 for xen-devel@lists.xenproject.org; Mon, 20 Apr 2026 21:27:32 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wEw9T-00CBiW-DH
 for xen-devel@lists.xenproject.org; Mon, 20 Apr 2026 23:27:31 +0200
Received: from [10.42.69.2] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <Rose.Spangler@elektrobit.com>)
 id 69e699f1-e002-0a2a0a5209dd-0a2a4502af8e-48
 for <xen-devel@lists.xenproject.org>; Mon, 20 Apr 2026 23:27:31 +0200
Received: from [52.101.57.83]
 (helo=BN8PR05CU002.outbound.protection.outlook.com)
 by tlsNG-720697.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.1)
 (envelope-from <Rose.Spangler@elektrobit.com>)
 id 69e69a41-af86-0a2a45020019-346539535aeb-3
 for <xen-devel@lists.xenproject.org>; Mon, 20 Apr 2026 23:27:31 +0200
Received: from PH7P221CA0047.NAMP221.PROD.OUTLOOK.COM (2603:10b6:510:33c::19)
 by MWHPR08MB9906.namprd08.prod.outlook.com (2603:10b6:303:280::14)
 with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9818.25; Mon, 20 Apr
 2026 21:27:25 +0000
Received: from CY4PEPF0000EDD6.namprd03.prod.outlook.com
 (2603:10b6:510:33c:cafe::43) by PH7P221CA0047.outlook.office365.com
 (2603:10b6:510:33c::19) with Microsoft SMTP Server (version=TLS1_3,
 cipher=TLS_AES_256_GCM_SHA384) id 15.20.9791.48 via Frontend Transport; Mon,
 20 Apr 2026 21:27:24 +0000
Received: from usbth1es003.ebgroup.elektrobit.com (4.79.107.243) by
 CY4PEPF0000EDD6.mail.protection.outlook.com (10.167.241.202) with Microsoft
 SMTP Server (version=TLS1_3, cipher=TLS_AES_256_GCM_SHA384) id 15.20.9791.48
 via Frontend Transport; Mon, 20 Apr 2026 21:27:24 +0000
Received: from usbth1es003 (localhost [127.0.0.1])
 by usbth1es003.ebgroup.elektrobit.com (Postfix) with SMTP id 4fzz8q588pz1wdP; 
 Mon, 20 Apr 2026 14:27:23 -0700 (PDT)
Received: from BL0PR07CU001.outbound.protection.outlook.com
 (mail-bl0pr07cu00103.outbound.protection.outlook.com [40.93.4.3])
 (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)
 key-exchange secp384r1 server-signature RSA-PSS (2048 bits) server-digest
 SHA256) (No client certificate requested)
 by usbth1es003.ebgroup.elektrobit.com (Postfix) with ESMTPS;
 Mon, 20 Apr 2026 14:27:23 -0700 (PDT)
Received: from CH0PR04CA0012.namprd04.prod.outlook.com (2603:10b6:610:76::17)
 by BY5PR08MB6295.namprd08.prod.outlook.com (2603:10b6:a03:1e2::15)
 with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9818.25; Mon, 20 Apr
 2026 21:27:16 +0000
Received: from CH2PEPF0000009A.namprd02.prod.outlook.com
 (2603:10b6:610:76:cafe::38) by CH0PR04CA0012.outlook.office365.com
 (2603:10b6:610:76::17) with Microsoft SMTP Server (version=TLS1_3,
 cipher=TLS_AES_256_GCM_SHA384) id 15.20.9791.48 via Frontend Transport; Mon,
 20 Apr 2026 21:27:16 +0000
Received: from denue6es012.ebgroup.elektrobit.com (213.95.148.172) by
 CH2PEPF0000009A.mail.protection.outlook.com (10.167.244.22) with Microsoft
 SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id
 15.20.9791.48 via Frontend Transport; Mon, 20 Apr 2026 21:27:15 +0000
Received: from ubuntu.localdomain (10.10.178.50) by
 denue6es012.ebgroup.elektrobit.com (10.243.160.140) with Microsoft SMTP
 Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id
 15.2.2562.35; Mon, 20 Apr 2026 23:27:12 +0200
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@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=elektrobit.com header.i="@elektrobit.com" header.h="From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck"; dkim=pass header.s=selector1 header.d=elektrobit.com header.i="@elektrobit.com" header.h="From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck"
ARC-Seal: i=2; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=pass;
 b=IGcvlCg/6bmwvTYkvkrXICCkUsnzcj0Iq7bxNOhb+yC7YH3eSWqbJiN+tDg/dr2QJ7OHE/KdW5OYALdA0frM4ZxtrPJsfSEtTukXVzTjppbz5kEfJG/uR9xVt5JCpOuVzRyq117HucpeUPyg3AJReazCiTfDmQYEc2F3qGwerpJOvFP4Gl5IcihLr3TSJ/Y4/IA4UXjRjWI8X40YwHFhJV3J9KEJo6B5Yncus3k4SoOG1u5/0BmHOELuqHh7uQNvSIDgup4SxPxj1hQD+HBOu7uu2LbaziijVwlX07rXbv9h18ryKhUPnez5K58yuGHOGDZDYjKPhggf5hAN5F7RFg==
ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com;
 s=arcselector10001;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1;
 bh=920CLmPnDOg9eeLN7pE/1x+mVKc67Ab1k7o15fr+MnY=;
 b=PAJVAGPXvGbciP4AZZNubJAINwgT18VIyRXc9FLzS3wZ4W2C7OtdPRgEGTX+o3w9COgM3XKULTRf/1PZjD1WuUKGINP0m3dZpCSpUnSzBdYbTi4ZNJCYdpLXmPoluOFjU9h0JZXWI+KYgUzIes/2dly1QHOIbCaz2svxn9vc5LRhKgyc4tWCV7BZLHJE/odJxTTY/7QMeyewRAdcyp77uuz03MPbnwMo/IEUXJ9Nv6vnAI6bGYSzPef4o6fTv7mTvcvUf5tIyOkcf+5zxockO9czAnxj+JQUYgTdG4U9nZaprairjqcPAzrDMrZzXBVXksqamME+4/eIRQSyOVVz/w==
ARC-Authentication-Results: i=2; mx.microsoft.com 1; spf=pass (sender ip is
 40.93.4.3) smtp.rcpttodomain=amd.com smtp.mailfrom=elektrobit.com; dmarc=pass
 (p=quarantine sp=none pct=100) action=none header.from=elektrobit.com;
 dkim=pass (signature was verified) header.d=elektrobit.com; arc=pass (0 oda=1
 ltdi=1 spf=[1,1,smtp.mailfrom=elektrobit.com]
 dmarc=[1,1,header.from=elektrobit.com])
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=elektrobit.com;
 s=selector1;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck;
 bh=920CLmPnDOg9eeLN7pE/1x+mVKc67Ab1k7o15fr+MnY=;
 b=asgekL/vHE8bB8+3mx+qF+1u4/qITR4i3iVqY0crkZY44OSRIgTRJXxlaePQohboZ0tYB1iSHlgji7SLMHV9idkOg9dc0EUWEaiIYLERz5J6ddt0xieUGcqKGxuo/5IKaogipge7xJ4Dw93v6Yo000JUlVr2IqJ4WGkg2UFgulc=
X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 40.93.4.3)
 smtp.mailfrom=elektrobit.com; dkim=pass (signature was verified)
 header.d=elektrobit.com;dmarc=pass action=none header.from=elektrobit.com;
Received-SPF: Pass (protection.outlook.com: domain of elektrobit.com
 designates 40.93.4.3 as permitted sender) receiver=protection.outlook.com;
 client-ip=40.93.4.3; helo=BL0PR07CU001.outbound.protection.outlook.com; pr=C
ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none;
 b=l0dD9CwtMig8TKBIs51+Kbx+Y4T9jJ+1Vdgl9fhIPu7Cf6pBsxmNfMYaDMXcex4xFii/MpAHyXyWcQyZFNs/oA/Tjjf62vuHL/x6y/kiucC1DxJQI1NyZgo3vbJfT3ZfGBgX05ZvKrfvLNg++tnHq9QAh/2icBdDTUMisy0T6iAOXaUKQyCjObKo1TYY3WYcQDWa6Kl+fLAPsgVfsuxmU89+7TcWAir2TGHi127Mhjew4cDdXThbwTXJx0fcNwTNl3sqHqJpt46P/V2Bkr9IqHCQRkn0ec6/JCETuzihnCb6VrEV+K4HvY4Y/eccqc3J84mHEBjLQHPEXjib0pqFWA==
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com;
 s=arcselector10001;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1;
 bh=920CLmPnDOg9eeLN7pE/1x+mVKc67Ab1k7o15fr+MnY=;
 b=LT4wrDwLre0VqyLc8K3NRA0sjpcWmtCwgMLh+8lsCgJFWy2TDPian5b2X8/gJVHs9AWeFQbQExQRv+o6eogiL5udPdwgL2nGTwI/D1OsDJ6Hbn2HPgT1sjI0NhwBlGUu3iPCJ7GqGvnFEEgkCcjEilVI0sbmSTL9WqugmJYiBOe+5cjZZQNYFtOk+isI5HvhdCu+8pQmnvV0vRhH77Twu5yo3IFDJsXycr4vzr5uOcmmkQJ4nu1chdNQFiOiXegY1ValxkTO6XnNvGaljdsvLdp/VtbefXPlXS0PjYtxwv8qYbHbO5NZEC9XF95ezzaDTBkbYwAvs1u9T90bxc4qFQ==
ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass (sender ip is
 213.95.148.172) smtp.rcpttodomain=lists.xenproject.org
 smtp.mailfrom=elektrobit.com; dmarc=pass (p=quarantine sp=none pct=100)
 action=none header.from=elektrobit.com; dkim=none (message not signed);
 arc=none (0)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=elektrobit.com;
 s=selector1;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck;
 bh=920CLmPnDOg9eeLN7pE/1x+mVKc67Ab1k7o15fr+MnY=;
 b=asgekL/vHE8bB8+3mx+qF+1u4/qITR4i3iVqY0crkZY44OSRIgTRJXxlaePQohboZ0tYB1iSHlgji7SLMHV9idkOg9dc0EUWEaiIYLERz5J6ddt0xieUGcqKGxuo/5IKaogipge7xJ4Dw93v6Yo000JUlVr2IqJ4WGkg2UFgulc=
X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 213.95.148.172)
 smtp.mailfrom=elektrobit.com; dkim=none (message not signed)
 header.d=none;dmarc=pass action=none header.from=elektrobit.com;
Received-SPF: Pass (protection.outlook.com: domain of elektrobit.com
 designates 213.95.148.172 as permitted sender)
 receiver=protection.outlook.com; client-ip=213.95.148.172;
 helo=denue6es012.ebgroup.elektrobit.com; pr=C
From: Rose Spangler <Rose.Spangler@elektrobit.com>
To: <xen-devel@lists.xenproject.org>
CC: Rose Spangler <Rose.Spangler@elektrobit.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?q?Roger=20Pau=20Monn=C3=A9?=
	<roger.pau@citrix.com>, Sergej Proskurin <proskurin@sec.in.tum.de>
Subject: [RFC PATCH v6 10/43] altp2m: Add ARM support to do_altp2m_op
Date: Mon, 20 Apr 2026 17:26:15 -0400
Message-ID: <20260420212648.208640-3-Rose.Spangler@elektrobit.com>
X-Mailer: git-send-email 2.34.1
In-Reply-To: <20260420212648.208640-1-Rose.Spangler@elektrobit.com>
References: <20260420212648.208640-1-Rose.Spangler@elektrobit.com>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit
Content-Type: text/plain
X-Originating-IP: [10.10.178.50]
X-ClientProxiedBy: denue6es013.ebgroup.elektrobit.com (10.243.160.141) To
 denue6es012.ebgroup.elektrobit.com (10.243.160.140)
X-EOPAttributedMessage: 1
X-MS-Exchange-SkipListedInternetSender:
 ip=[213.95.148.172];domain=denue6es012.ebgroup.elektrobit.com
X-MS-TrafficTypeDiagnostic:
	CH2PEPF0000009A:EE_|BY5PR08MB6295:EE_|CY4PEPF0000EDD6:EE_|MWHPR08MB9906:EE_
X-MS-Office365-Filtering-Correlation-Id: 201c0ff5-9827-4898-a539-08de9f239d51
X-SM-outgoing: yes
X-MS-Exchange-SenderADCheck: 1
X-MS-Exchange-AntiSpam-Relay: 0
X-Microsoft-Antispam-Untrusted:
 BCL:0;ARA:13230040|704161411799003|1800799024|7416014|36860700016|376014|82310400026|18002099003|22082099003|56012099003;
X-Microsoft-Antispam-Message-Info-Original:
 =?us-ascii?Q?nvNWTIkJBkFtnTdwvHIpB/S2k+ib9Z8DwBdNl1QjrX5RYsPKcyMM4ZEC4xHb?=
 =?us-ascii?Q?Kzv9lUa+nHGu7kuO0pr2zRTCrx1sc0w7+x6mRQj7SjD/ljdFcecNXXZ5DJYF?=
 =?us-ascii?Q?Ug5FRtJJQb1Gh7rvRjokM+fS9pTbkl/aK5x4zyBtbIlGxqXw/3bwtbcrb7NH?=
 =?us-ascii?Q?o0G6rLNXvMY7P/arhJk837E2B7x5WoC9K3QvgrGUktw65nHpKwKGpOp9tayD?=
 =?us-ascii?Q?3XYdKPghXFMvzBieEAymdPNGT9L8kyxrcHKlMaAvHQsxPEHfsL1Qs17jqIIx?=
 =?us-ascii?Q?OSdlLpuUoPNLnXF5dvOz+eYd+ebejMC4/rYVpMEPLxEJcXaZAFhMycV57iiA?=
 =?us-ascii?Q?Bw5En72IZL0VcY/N8fev38f71QVM1gjrEcw9hk8jC3tCf24wbpqkIkK3eVqg?=
 =?us-ascii?Q?786Zmi4jMfAkl8moF1fuMSSYdJPPyHCyy3g0Zg8PNWbw6xQ57dvR9DPo1tr5?=
 =?us-ascii?Q?2CUsni9J9LdOSVM2XdfB+e0udlS14GbWrmo84REPhYudpOzGYJ8XJGhyKj1W?=
 =?us-ascii?Q?5z99TPjrFXl2IMK6CwNUTJIdcsHRBY1ptpNFAK1TB4N/XoON9jPQSDUIX7sd?=
 =?us-ascii?Q?x/wyi54JlAnanVtbjuVACwcJ+237ImiyxJsAYb8jVqR0jYUybNC3FRGpPdaV?=
 =?us-ascii?Q?IM8jXlrddgLCkX8ejKPBXI+GuTFkbQwG7/QY/tpRLKAhKPEluAhTjfrJ5lws?=
 =?us-ascii?Q?OdM/RdP0mYNqM3sqc/sJH7LGJwgWMWD7AA58bC2/xV1zih3DbFHY3UDSY37x?=
 =?us-ascii?Q?y4FAsBwL1ZDn3azBPD3xds+B9l9XX9FgM4njhRmmmvdPsGe54Tz6HQLOw+yQ?=
 =?us-ascii?Q?oAFS5UAbZlK9UTnT8Z+TadEVpFn2ZZ9WhnJ6fk0lhJePnzf4SswjZVXBVRJx?=
 =?us-ascii?Q?8J0N4P8uc7uWlPheUyoP3ITAA6Y2CFUeFq0pk8kvzuAv2M03nW66oMuJsQWo?=
 =?us-ascii?Q?YOcbwY9lG9mojMOe9UKmb1FKHVxfzxgL4udDvIE0fI5cPISKBXjtnkM6nIQW?=
 =?us-ascii?Q?0coYkvQTzj4OVwF2UtX1YXq0hPDOIU6S0p1u4LLFCdtrhepgPJE6LtWE/nat?=
 =?us-ascii?Q?6I1JHFVMcL2KH5vaHEVt0HbGmJH4/bV/hnap67RFZs+xhZgYtXooYdO6Syta?=
 =?us-ascii?Q?uMsbjVluPchropsIX6vy2aOdb1RLbSOWnYaPiDE9OCxAfIVJ1uj5aXM=3D?=
X-Forefront-Antispam-Report-Untrusted:
 CIP:213.95.148.172;CTRY:DE;LANG:en;SCL:1;SRV:;IPV:CAL;SFV:NSPM;H:denue6es012.ebgroup.elektrobit.com;PTR:eth1-fw1-nbg6.eb.noris.de;CAT:NONE;SFS:(13230040)(704161411799003)(1800799024)(7416014)(36860700016)(376014)(82310400026)(18002099003)(22082099003)(56012099003);DIR:OUT;SFP:1102;
X-Exchange-RoutingPolicyChecked:
 fOaCT0WYAh9QzSj61BjyRU6Aw0tiGeOgQdnYuWLFj0wDV/8ZN1HwzPDQyGdCSm0qvJFghptG2XZW2frBXEDxim/fK/MV+hvqF2oZRH6pS6+rpFaS416JNFpfPfw7+3S/sGVmFQ8L0yu/yhpMZE42Rlg/eCJ6uqlukNuqHFwxp5JfX3Yvq5CBuo361mkblfXWHoK1Ia/KQ08hTndpubjY/6WS7yUe5yqXU7PHX/bl408gXN6FKUNpLp6jqvmBsu3SuwrAhZ7sE3Na/25roZzYENjfnrJA026bVcM5gakqx1U5CTY+PxgNLDoYZ9QPv1fiU+17Bo1eGrUDvqxuvDO2+A==
X-MS-Exchange-Transport-CrossTenantHeadersStamped: BY5PR08MB6295
X-MS-Exchange-SkipListedInternetSender:
 ip=[40.93.4.3];domain=BL0PR07CU001.outbound.protection.outlook.com
X-MS-Exchange-ExternalOriginalInternetSender:
 ip=[40.93.4.3];domain=BL0PR07CU001.outbound.protection.outlook.com
X-MS-Exchange-Transport-CrossTenantHeadersStripped:
 CY4PEPF0000EDD6.namprd03.prod.outlook.com
X-MS-PublicTrafficType: Email
X-MS-Office365-Filtering-Correlation-Id-Prvs:
	9defe3ae-dd21-4a90-4591-08de9f23981b
X-Microsoft-Antispam:
	BCL:0;ARA:13230040|704161411799003|376014|82310400026|35042699022|14060799003|36860700016|7416014|156008|1800799024|18002099003|56012099003|22082099003;
X-Microsoft-Antispam-Message-Info:
	=?us-ascii?Q?Y0v4+zm+hr2s0qeE9BmiTArgDnggeumZnlPECyd6TcwENkBni0bFQsuEL/G3?=
 =?us-ascii?Q?nwtMcXYsZfVS98pE68jxuo29mo6/hhKCL4QZ0zPuP6Hla/P7pasaVorQLBLH?=
 =?us-ascii?Q?JqpatKuXUE9XuRQf9ezc5v8ratlX/JZpjeEBOhhisguey8PzsZL1TLFZ2EWR?=
 =?us-ascii?Q?nBVTALB8f1Fx4oaEZ44CWuU0XI3Z5IoJAcb+tIFPXodGs6YOBUFLrjf03jZl?=
 =?us-ascii?Q?mA//4XIhfT/LB4IliI4RsYhOSnsG69gkPggr3N3sGUJFlAw6TClh+w3Eqf+y?=
 =?us-ascii?Q?A9OOqyALGQ2XgjzUvLv+rESGBbG96ysAio9ZUlpuQDMDcg2e5IVScrpF7Kma?=
 =?us-ascii?Q?YgJ0XoEGSsw3IcDpcfvusl+h9xQzaOksS9eWJI+n7nVlyOVsZyNHLuKSZFSo?=
 =?us-ascii?Q?x4Hs+hGe18lIz1X5R8SUnbR/koSn1+uWkHBQhGmnz8rkGLn5QACPNkOAbXvh?=
 =?us-ascii?Q?kormSbxr42crBRkvC8N/5oZRQHUUo93MylQNVcz1kAPuMqr7XhbaNSO88PDg?=
 =?us-ascii?Q?653tvBCH/LtdWNgU96U0DsSq89w4RcPfX0fsdSl6fg5K9o/X3Qb12T9fIIW9?=
 =?us-ascii?Q?TIad4JebdJvuyJLOpimuPdCly2u1ctawStXSeXnx+hJ+jEFW4bxvaVWiuiY0?=
 =?us-ascii?Q?HFvyyjZ6ybIsB7Pnqp1nmk7P9gbqL8J0RpPAwGneBe2k5hCfuzT5xobKpona?=
 =?us-ascii?Q?tFZ5vJsXzWSC6KvuhoKsfZcQG0acFYN1wqGuAYF65ELFqPO8oebDAOR9kMS5?=
 =?us-ascii?Q?XcRbr1vang+I+l22ufwbN97kuinVrtatDXnv6v5fiwBrno2Wnu0FpQb0sC1e?=
 =?us-ascii?Q?85s+m3eAWM5g28pV0DiSdBNtDnNK73QXqNFVmIKRW5POk57u86TxGnwIgBEF?=
 =?us-ascii?Q?ZJV49qhJH3+95RsLCiVM27ibBrU7GpNBPg1O460WdFuy9gcTXIJDbKPjstuU?=
 =?us-ascii?Q?CvS6szkRx70lGVDnPoHJhzvIJ/3rtUvfmhbnfnvZgfFctsObeezSyondlqU8?=
 =?us-ascii?Q?GbzU+x/m9huv2uclMaZCo7gyD7BXPy71Agyg3BMvq2NRPdOgPMisHspHB5Hj?=
 =?us-ascii?Q?JkUuiqReXcAGBmSDnfOd+yG8UugBwMBQVLF2csuHwqFeqXim0d175Ak0ZjP6?=
 =?us-ascii?Q?oPTz8JIuxMO/jlquGlduoJIAj+y8m7J/IZy514CbFkXHuXdWDOd48Ik=3D?=
X-Forefront-Antispam-Report:
	CIP:4.79.107.243;CTRY:US;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:BL0PR07CU001.outbound.protection.outlook.com;PTR:mail-bl0pr07cu00103.outbound.protection.outlook.com;CAT:NONE;SFS:(13230040)(704161411799003)(376014)(82310400026)(35042699022)(14060799003)(36860700016)(7416014)(156008)(1800799024)(18002099003)(56012099003)(22082099003);DIR:OUT;SFP:1102;
X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1
X-MS-Exchange-AntiSpam-MessageData-0:
	2o8OXGtqE0GEM+fq0SAxupZ1zAybyGXWR+pd0QNvDe/reRh5U4c0NqpL6z2yZo9cQCQSwz+bbxXKHSrD2QWukmpa64o9axTJ8/0kZbLaHgFOut9VLzEJXYONkVgSZHofGmksRPKeNDmjOvbmhKt/UIyvJz+x++dIWAe60jaIt6HCZ3pEtTYFS0Vd23ejoatEy/H9/RDjp1TyJpreQZsupIVkN5iDrhzxAPlUjcxo7fKSijvF1B5xNZ3IXFB8pN5B4jGFdWXTEpEnBCFL+M83TkqRvx1D4mK9YptTb5CbQLR65c+Q4Iz5bPsEB/yZgduI5TVZJ/EL0luz9wfYXWSjgzLHo/6+eGPJpGjTgCIOgztFw1gwiTPy4glQrgOK2q73M+aSVLGuH/vesLinHjuqQb0eSN0R1bqjKYMPPAstBuCyRade/0SSIHd3u7suHa+1
X-OriginatorOrg: elektrobit.com
X-MS-Exchange-CrossTenant-OriginalArrivalTime: 20 Apr 2026 21:27:24.2422
 (UTC)
X-MS-Exchange-CrossTenant-Network-Message-Id: 201c0ff5-9827-4898-a539-08de9f239d51
X-MS-Exchange-CrossTenant-Id: e764c36b-012e-4216-910d-8fd16283182d
X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=e764c36b-012e-4216-910d-8fd16283182d;Ip=[4.79.107.243];Helo=[usbth1es003.ebgroup.elektrobit.com]
X-MS-Exchange-CrossTenant-AuthAs: Internal
X-MS-Exchange-CrossTenant-AuthSource: TreatMessagesAsInternal-CY4PEPF0000EDD6.namprd03.prod.outlook.com
X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem
X-MS-Exchange-Transport-CrossTenantHeadersStamped: MWHPR08MB9906
X-purgate-ID: tlsNG-720697/1776720451-8A6C4161-4207A49B/0/0
X-purgate-type: clean
X-purgate-size: 4450

This commit makes the minimum required changes necessary for do_altp2m_op
to compile on ARM. All altp2m commands in the switch statement are gated by
CONFIG_X86, with a default case of returning EOPNOTSUPP. This allows future
commits to move the #ifdef CONFIG_X86 down as support for ARM is added.

Additionally, a call to do_altp2m_op is added in the ARM HVMOP code.

This is commit 2/2 of the common do_altp2m_op phase.

Signed-off-by: Rose Spangler <Rose.Spangler@elektrobit.com>
Signed-off-by: Sergej Proskurin <proskurin@sec.in.tum.de>
---
v6: Replaced patches 2 and 3 from v4/v5 patch set with this patch.

    Made HVM_PARAM_ALTP2M read-only, following the change to the x86
    implementation in commit 0291089f6ea8. The DOMCTL to enable altp2m on
    ARM is implemented in a later commit in this patch series.
---
 xen/arch/arm/hvm.c  |  9 +++++++++
 xen/common/altp2m.c | 29 ++++++++++++++---------------
 2 files changed, 23 insertions(+), 15 deletions(-)

diff --git a/xen/arch/arm/hvm.c b/xen/arch/arm/hvm.c
index 86e49bf47403..7c778795a280 100644
--- a/xen/arch/arm/hvm.c
+++ b/xen/arch/arm/hvm.c
@@ -5,6 +5,7 @@
  * Arch-specific hardware virtual machine abstractions.
  */
 
+#include <xen/altp2m.h>
 #include <xen/init.h>
 #include <xen/lib.h>
 #include <xen/errno.h>
@@ -23,6 +24,10 @@ static int hvm_allow_set_param(const struct domain *d, unsigned int param)
 {
     switch ( param )
     {
+        /* The following parameters are read-only. */
+    case HVM_PARAM_ALTP2M:
+        return -EEXIST;
+
         /*
          * The following parameters are intended for toolstack usage only.
          * They may not be set by the domain.
@@ -123,6 +128,10 @@ long do_hvm_op(unsigned long op, XEN_GUEST_HANDLE_PARAM(void) arg)
             rc = -EINVAL;
         break;
 
+    case HVMOP_altp2m:
+        rc = do_altp2m_op(arg);
+        break;
+
     default:
     {
         gdprintk(XENLOG_DEBUG, "HVMOP op=%lu: not implemented\n", op);
diff --git a/xen/common/altp2m.c b/xen/common/altp2m.c
index a43b3a3e34b3..6481fae1ed12 100644
--- a/xen/common/altp2m.c
+++ b/xen/common/altp2m.c
@@ -9,8 +9,10 @@
 
 #include <xsm/xsm.h>
 
-#ifdef CONFIG_X86
+#if defined(CONFIG_X86) && defined(CONFIG_HVM)
 #include <asm/hvm/nestedhvm.h>
+#endif
+
 /*
  * altp2m operations are envisioned as being used in several different
  * modes:
@@ -18,13 +20,13 @@
  * - external: All control and decisions are made by an external agent
  *   running domain 0.
  *
- * - internal: altp2m operations are used exclusively by an in-guest
- *   agent to protect itself from the guest kernel and in-guest
- *   attackers.
+ * - internal (x86 only): altp2m operations are used exclusively by an
+ *   in-guest agent to protect itself from the guest kernel and
+ *   in-guest attackers.
  *
- * - coordinated: An in-guest agent handles #VE and VMFUNCs locally,
- *   but makes requests of an agent running outside the domain for
- *   bigger changes (such as modifying altp2m entires).
+ * - coordinated (x86 only): An in-guest agent handles #VE and VMFUNCs
+ *   locally, but makes requests of an agent running outside the
+ *   domain for bigger changes (such as modifying altp2m entires).
  *
  * This corresponds to the three values for HVM_PARAM_ALTP2M
  * (external, mixed, limited). All three models have advantages and
@@ -97,7 +99,7 @@ int do_altp2m_op(
 
     if ( (a.cmd != HVMOP_altp2m_get_domain_state) &&
          (a.cmd != HVMOP_altp2m_set_domain_state) &&
-         !d->altp2m_active )
+         !altp2m_active(d) )
     {
         rc = -EOPNOTSUPP;
         goto out;
@@ -122,6 +124,7 @@ int do_altp2m_op(
 
     switch ( a.cmd )
     {
+#ifdef CONFIG_X86
     case HVMOP_altp2m_get_domain_state:
         a.u.domain_state.state = altp2m_active(d);
         rc = __copy_to_guest(arg, &a, 1) ? -EFAULT : 0;
@@ -394,9 +397,12 @@ int do_altp2m_op(
             rc = altp2m_set_view_visibility(d, idx, a.u.set_visibility.visible);
         break;
     }
+#endif /* CONFIG_X86 */
 
     default:
+#ifdef CONFIG_X86
         ASSERT_UNREACHABLE();
+#endif
         rc = -EOPNOTSUPP;
         break;
     }
@@ -406,13 +412,6 @@ int do_altp2m_op(
 
     return rc;
 }
-#else
-int do_altp2m_op(
-    XEN_GUEST_HANDLE_PARAM(void) arg)
-{
-    return -EOPNOTSUPP;
-}
-#endif
 
 /*
  * Local variables:
-- 
2.34.1



From xen-devel-bounces@lists.xenproject.org Mon Apr 20 21:27:41 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 20 Apr 2026 21:27:41 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1287495.1567925 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wEw9b-0001mL-Vq; Mon, 20 Apr 2026 21:27:39 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1287495.1567925; Mon, 20 Apr 2026 21: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 1wEw9b-0001mC-T5; Mon, 20 Apr 2026 21:27:39 +0000
Received: by outflank-mailman (input) for mailman id 1287495;
 Mon, 20 Apr 2026 21:27:38 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <Rose.Spangler@elektrobit.com>) id 1wEw9a-0001jD-0f
 for xen-devel@lists.xenproject.org; Mon, 20 Apr 2026 21:27:38 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wEw9Z-001Myj-DL
 for xen-devel@lists.xenproject.org; Mon, 20 Apr 2026 23:27:37 +0200
Received: from [10.42.69.8] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <Rose.Spangler@elektrobit.com>)
 id 69e69a18-bab6-0a2a0a5309dd-0a2a4508a9bc-14
 for <xen-devel@lists.xenproject.org>; Mon, 20 Apr 2026 23:27:37 +0200
Received: from [52.101.61.89]
 (helo=DM1PR04CU001.outbound.protection.outlook.com)
 by tlsNG-c1860d.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.1)
 (envelope-from <Rose.Spangler@elektrobit.com>)
 id 69e69a47-63b5-0a2a45080019-34653d5982ce-3
 for <xen-devel@lists.xenproject.org>; Mon, 20 Apr 2026 23:27:37 +0200
Received: from PH3PEPF0000409D.namprd05.prod.outlook.com (2603:10b6:518:1::50)
 by LV8PR08MB8984.namprd08.prod.outlook.com (2603:10b6:408:201::11)
 with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9818.32; Mon, 20 Apr
 2026 21:27:29 +0000
Received: from CY4PEPF0000EDD5.namprd03.prod.outlook.com
 (2a01:111:f403:f912::1) by PH3PEPF0000409D.outlook.office365.com
 (2603:1036:903:49::3) with Microsoft SMTP Server (version=TLS1_3,
 cipher=TLS_AES_256_GCM_SHA384) id 15.20.9791.48 via Frontend Transport; Mon,
 20 Apr 2026 21:27:26 +0000
Received: from usbth1es003.ebgroup.elektrobit.com (4.79.107.243) by
 CY4PEPF0000EDD5.mail.protection.outlook.com (10.167.241.201) with Microsoft
 SMTP Server (version=TLS1_3, cipher=TLS_AES_256_GCM_SHA384) id 15.20.9791.48
 via Frontend Transport; Mon, 20 Apr 2026 21:27:25 +0000
Received: from usbth1es003 (localhost [127.0.0.1])
 by usbth1es003.ebgroup.elektrobit.com (Postfix) with SMTP id 4fzz8s261Rz1wdS; 
 Mon, 20 Apr 2026 14:27:25 -0700 (PDT)
Received: from CO1PR08CU001.outbound.protection.outlook.com
 (mail-co1pr08cu00102.outbound.protection.outlook.com [40.93.10.98])
 (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)
 key-exchange secp384r1 server-signature RSA-PSS (2048 bits) server-digest
 SHA256) (No client certificate requested)
 by usbth1es003.ebgroup.elektrobit.com (Postfix) with ESMTPS;
 Mon, 20 Apr 2026 14:27:24 -0700 (PDT)
Received: from CH0PR03CA0440.namprd03.prod.outlook.com (2603:10b6:610:10e::29)
 by CH0PR08MB7507.namprd08.prod.outlook.com (2603:10b6:610:fb::16)
 with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9818.32; Mon, 20 Apr
 2026 21:27:12 +0000
Received: from CH2PEPF0000009C.namprd02.prod.outlook.com
 (2603:10b6:610:10e:cafe::a) by CH0PR03CA0440.outlook.office365.com
 (2603:10b6:610:10e::29) with Microsoft SMTP Server (version=TLS1_3,
 cipher=TLS_AES_256_GCM_SHA384) id 15.20.9791.48 via Frontend Transport; Mon,
 20 Apr 2026 21:27:12 +0000
Received: from denue6es012.ebgroup.elektrobit.com (213.95.148.172) by
 CH2PEPF0000009C.mail.protection.outlook.com (10.167.244.24) with Microsoft
 SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id
 15.20.9791.48 via Frontend Transport; Mon, 20 Apr 2026 21:27:11 +0000
Received: from ubuntu.localdomain (10.10.178.50) by
 denue6es012.ebgroup.elektrobit.com (10.243.160.140) with Microsoft SMTP
 Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id
 15.2.2562.35; Mon, 20 Apr 2026 23:27:07 +0200
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@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=elektrobit.com header.i="@elektrobit.com" header.h="From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck"; dkim=pass header.s=selector1 header.d=elektrobit.com header.i="@elektrobit.com" header.h="From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck"
ARC-Seal: i=2; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=pass;
 b=W26W3GYhj2qYfNwN4swFOSnHx/7P4xrEIkXBNYWaLZ40bJARECS/rXDdatyFzr6nTjuE35/iqiOFfMQHAnEK2bOBBq3ih77I/QvIzhV/WW05XZ5iCvjSJWOVtKuMLNnscDdRusqSQlDRnL/wyT6mlycfEX8DHkI34VNm7ef9M4Ja0I6NTI4E4luq9F0RE9s3UnU4vF0UishhmXsCYgE9MR//Tj55XLcSCoKYPH2HXdiu2zrD3oIzkwPx1l2aFWGMbxqm5BEYBEO0I0vZI+KvY4ycnYNzeLvXQtMQh1A5kZXopqUhXfQyfFeRKjaNT4jbLobiicQCPQe2YjKKSqnuug==
ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com;
 s=arcselector10001;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1;
 bh=2Xr6LLXjzqnGjZ+q/CL1Op56Lgquh9rAvy51mivO1rA=;
 b=r4WqpY/+IYs2ndMKtKEcIQ1sI2R6mw9psxptUisqmiUodQktpXQ+rIMepbaJJSjq/xGcUQQ7EK3TuyFFQI3vlewJewHIpcne8ayDvWg2Qv2oU+OT2XRJ729wIflrMZXflaUCCFsAf117KNx9rYxaBYnmuhXJ8zONVZvUDO7bzfwNqLtx4Zn/sba2bHcNNzEYK0HZvJpShqP1y2G83ZrrIzoDgh1bFQ0xotO/zhlWj/OOgDF5K6pkCewPJT0zkDXo2URFkfx5QPpAbB6/uYV3kKgs1rBCb3NRlISJJISEw9QQbVnRYFYZNOxFwTfgzX7nQ+ycCQYsoKOXpZBK6ro06g==
ARC-Authentication-Results: i=2; mx.microsoft.com 1; spf=pass (sender ip is
 40.93.10.98) smtp.rcpttodomain=amd.com smtp.mailfrom=elektrobit.com;
 dmarc=pass (p=quarantine sp=none pct=100) action=none
 header.from=elektrobit.com; dkim=pass (signature was verified)
 header.d=elektrobit.com; arc=pass (0 oda=1 ltdi=1
 spf=[1,1,smtp.mailfrom=elektrobit.com]
 dmarc=[1,1,header.from=elektrobit.com])
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=elektrobit.com;
 s=selector1;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck;
 bh=2Xr6LLXjzqnGjZ+q/CL1Op56Lgquh9rAvy51mivO1rA=;
 b=vl1p3s6POUok87PxtukKGCMP/R7pYIWdInlrTSVFGN1X+ti+ZjRggVs+KYlzs7X1MDNQtkVDG7ueyZkYCN7Wb2DNPLjIzYbtaNDclYzu18z9Cc4q4wX6tQDA92uTdgn9VuDErTI39rsONa2lhwVRAJUMVzKVbDtIsgHj6qmgDMA=
X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 40.93.10.98)
 smtp.mailfrom=elektrobit.com; dkim=pass (signature was verified)
 header.d=elektrobit.com;dmarc=pass action=none header.from=elektrobit.com;
Received-SPF: Pass (protection.outlook.com: domain of elektrobit.com
 designates 40.93.10.98 as permitted sender) receiver=protection.outlook.com;
 client-ip=40.93.10.98; helo=CO1PR08CU001.outbound.protection.outlook.com;
 pr=C
ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none;
 b=Ld1WOyt4LtAmq/BzdtR2wYYGaJbQ1DF5LRB3zRDCxaiD+DLq9gXT2c/oJEnhhllxzj4V6te3dhSLlG8l+kpzR7iKqSMjiukrib/BS9iW+kzF372KoLMpEaPfgPzDa3rH0/GtIeeNAnVK9KDU0ypKBectSJ36XRiF0+rIGj+D4BOHiySKMemCsecIGHzerAI0DD+XN7YTgUUeJyORrR7JXy4Sm3ViYLcPiX1reyasdoZOaOK+f3bwoT/VVP7Ev3LblQ5ba9EvtaGUWTLdGwjlCVFxogX0aBpjSOV2JCqdTiWFy+c/B/776BSEkQ+2xodEdmXacGuB2zqJM6blMzmu9w==
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com;
 s=arcselector10001;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1;
 bh=2Xr6LLXjzqnGjZ+q/CL1Op56Lgquh9rAvy51mivO1rA=;
 b=LVZya4VhhGeNoYoIXW5lIAUkOf0KFF1ny525LIWSO/Wo4lx+Y4nVdyZvSpTu8pAaRE2Y6Ib/ej8HHGtbPzwFYu5ESViiiPa9le86SeC2tJv3M2ILqry5Th5SDQnmA5l8XtUQljY8fK2jnWXxBvTjWNamtr0BCACdWYZPe6L7oaTWo0G+JmOytpc1PcscbZ5QtTItzfQTl9Cz3rmwF85VbbFR2CB7PlkzsKwZLt6jmNn2ba8zbD5v3yLCHs5DyQTrf9KEwFSon58Zte34zsDgVNIMIeqoGD+z3H3SKdqMWIKtIPaih2ZBhkaIFxwlpYmW2D2GrVHREm5y1W5p37aoJg==
ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass (sender ip is
 213.95.148.172) smtp.rcpttodomain=lists.xenproject.org
 smtp.mailfrom=elektrobit.com; dmarc=pass (p=quarantine sp=none pct=100)
 action=none header.from=elektrobit.com; dkim=none (message not signed);
 arc=none (0)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=elektrobit.com;
 s=selector1;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck;
 bh=2Xr6LLXjzqnGjZ+q/CL1Op56Lgquh9rAvy51mivO1rA=;
 b=vl1p3s6POUok87PxtukKGCMP/R7pYIWdInlrTSVFGN1X+ti+ZjRggVs+KYlzs7X1MDNQtkVDG7ueyZkYCN7Wb2DNPLjIzYbtaNDclYzu18z9Cc4q4wX6tQDA92uTdgn9VuDErTI39rsONa2lhwVRAJUMVzKVbDtIsgHj6qmgDMA=
X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 213.95.148.172)
 smtp.mailfrom=elektrobit.com; dkim=none (message not signed)
 header.d=none;dmarc=pass action=none header.from=elektrobit.com;
Received-SPF: Pass (protection.outlook.com: domain of elektrobit.com
 designates 213.95.148.172 as permitted sender)
 receiver=protection.outlook.com; client-ip=213.95.148.172;
 helo=denue6es012.ebgroup.elektrobit.com; pr=C
From: Rose Spangler <Rose.Spangler@elektrobit.com>
To: <xen-devel@lists.xenproject.org>
CC: Rose Spangler <Rose.Spangler@elektrobit.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?q?Roger=20Pau=20Monn=C3=A9?=
	<roger.pau@citrix.com>, Teddy Astie <teddy.astie@vates.tech>, Tamas K Lengyel
	<tamas@tklengyel.com>
Subject: [RFC PATCH v6 08/43] altp2m: Rename p2m_*_altp2m functions and move declarations out of p2m.h
Date: Mon, 20 Apr 2026 17:26:13 -0400
Message-ID: <20260420212648.208640-1-Rose.Spangler@elektrobit.com>
X-Mailer: git-send-email 2.34.1
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit
Content-Type: text/plain
X-Originating-IP: [10.10.178.50]
X-ClientProxiedBy: denue6es013.ebgroup.elektrobit.com (10.243.160.141) To
 denue6es012.ebgroup.elektrobit.com (10.243.160.140)
X-EOPAttributedMessage: 1
X-MS-Exchange-SkipListedInternetSender:
 ip=[213.95.148.172];domain=denue6es012.ebgroup.elektrobit.com
X-MS-TrafficTypeDiagnostic:
	CH2PEPF0000009C:EE_|CH0PR08MB7507:EE_|CY4PEPF0000EDD5:EE_|LV8PR08MB8984:EE_
X-MS-Office365-Filtering-Correlation-Id: e4079c5c-9814-40b0-3381-08de9f239e43
X-SM-outgoing: yes
X-MS-Exchange-SenderADCheck: 1
X-MS-Exchange-AntiSpam-Relay: 0
X-Microsoft-Antispam-Untrusted:
 BCL:0;ARA:13230040|82310400026|7416014|36860700016|376014|1800799024|56012099003|18002099003;
X-Microsoft-Antispam-Message-Info-Original:
 =?us-ascii?Q?4vMQ4/9v42XfpiBKW27eIvb6A6YCSvYm76UaZlKFS6Q7NLxV82eRqfnxvHDz?=
 =?us-ascii?Q?tNX7TLsQgGqrmI8HelwftIkWWbI4MDIrX5uT+/4nbHtW6GUE9smPgof56T6u?=
 =?us-ascii?Q?tkqnSHwXLsJI/DtUnu747a9oBNr3MX8zZ5AEnKizNYB1Bj7YexkfLnxYvU2D?=
 =?us-ascii?Q?zxhuD+f6csx/16hLC8rk0icW817ODWKU8v2dklPdR+Avd+m82JI6H+LZzkIE?=
 =?us-ascii?Q?xelGJ3N0NRqinqoLi5iTY6VrW5Rb801snMFkm2Ft1jZmDHRri40oJMryeg59?=
 =?us-ascii?Q?QCctES+8sUfiF/p/rRnT99pVsc+z68XLaFp6XUQN3H8aJfAKLpKM8g4odvDl?=
 =?us-ascii?Q?dW+dpabs4rUWJ9gy0LHaqUroBMaCVlmm4aU0g5iOUETF3LxC3OcteRhjJ9LD?=
 =?us-ascii?Q?c6lr7OO4umeDxHGI3mEMv+FeAe6y2kdYWN8Lk/rJ2MthDq2a4tEfQhJKP3TF?=
 =?us-ascii?Q?PvgjyBGHio6QgV7beXmikass2aykWBsEmMy+eANg6kq4At87pRasmLm1taMg?=
 =?us-ascii?Q?wO0LtD8PhJOlUZkQD6ks0zEu/ZUHoqwtGCvEWj1ClgmFy3Xl4gH9Xp3xaE7r?=
 =?us-ascii?Q?TVPbPUPJLiAVIexGQp81EPDJtbePZzCknoJyX80OYtW/fvTZUMvtzGLNeJxd?=
 =?us-ascii?Q?SBECGhMa+WapTuhNPj9xuIMCUv+aX6AhRTzPMvydZkv1mzRxpg1LtdOoKxJ+?=
 =?us-ascii?Q?RPHHN7aW0YXlFJPJ2LTvqPn2etYxOFMffBklJ19ogDjK9fDb7Xo8XSGYQkkO?=
 =?us-ascii?Q?vaSmIexLJoPKfOW/OUmO2aT68nKcH+qu1UEr6REwtDTZ2uHEICl6chPkqKN9?=
 =?us-ascii?Q?Ebsh0dn0fT1mDxwmX7WK1Y59vAxODMWzgb1of/FFxm7qOMh3eahw+49hsv3Q?=
 =?us-ascii?Q?QacgDQh6MF/D8bJfbJeHRs/CQyX70rX4nDJLSOk1Os6QjMxcLOhVhnlgXA4E?=
 =?us-ascii?Q?OccWutcppnaNarOvqjPDGlmddiT7KsW3cDmHZUsBp0oL9UpoL/vAC4Ze/Rv7?=
 =?us-ascii?Q?x9Is83/YEmq8MVivIfk6IGF9RG7w59JIl6sJ0jS7dC/wM0+1Vzn0qhIni1sL?=
 =?us-ascii?Q?G6i05IZ556dtIWvkLwyq9gd31UE/amR8ez0pPL7yIs6wGcSgWzu/Gpm0biIL?=
 =?us-ascii?Q?y9Potv16ULmxZVqZosszr+cjaFrk+Ps1YYX0TNLk2gsnJwwG58urBf1Rq4Sk?=
 =?us-ascii?Q?tW3F/jpaIwLpw/+mTUXiXe3iq6fK2CD/K25IGA=3D=3D?=
X-Forefront-Antispam-Report-Untrusted:
 CIP:213.95.148.172;CTRY:DE;LANG:en;SCL:1;SRV:;IPV:CAL;SFV:NSPM;H:denue6es012.ebgroup.elektrobit.com;PTR:eth1-fw1-nbg6.eb.noris.de;CAT:NONE;SFS:(13230040)(82310400026)(7416014)(36860700016)(376014)(1800799024)(56012099003)(18002099003);DIR:OUT;SFP:1102;
X-Exchange-RoutingPolicyChecked:
 TIkWMbx+8px+2HSN0tFXdkA63JZ5DqqYRPerCPdpBYeEd4C1s5qdfzVh8OV358bNm66qB3m1/ljZGXY495h9iUoQ947IYyZPtOFFYLiRTwOXb4r0W9Sz7/U+w8h5j2xkaX8KEFPzLKe3A2cqw0EGl9Rc48PrQMcpsD8j3e27HaOp3ehXYP5pshUmU1SR7wq5cnRFCi5bpwVeHN3Zx2cYnKja2kCN6K+MjtVT3yzsMAhc2SBOr7Jn8P9ca6Z7P9ByMcrzr8fE/aaV367W+059cXqqXjk3wtPLNZn95Z2RN2re646mZnloaXnHMrugcKAqbCTnyyC+7RqnEMP30FCcOQ==
X-MS-Exchange-Transport-CrossTenantHeadersStamped: CH0PR08MB7507
X-MS-Exchange-SkipListedInternetSender:
 ip=[40.93.10.98];domain=CO1PR08CU001.outbound.protection.outlook.com
X-MS-Exchange-ExternalOriginalInternetSender:
 ip=[40.93.10.98];domain=CO1PR08CU001.outbound.protection.outlook.com
X-MS-Exchange-Transport-CrossTenantHeadersStripped:
 CY4PEPF0000EDD5.namprd03.prod.outlook.com
X-MS-PublicTrafficType: Email
X-MS-Office365-Filtering-Correlation-Id-Prvs:
	e0b7b851-7a0c-456f-6822-08de9f2395d1
X-Microsoft-Antispam:
	BCL:0;ARA:13230040|82310400026|14060799003|35042699022|156008|36860700016|7416014|376014|1800799024|56012099003|18002099003;
X-Microsoft-Antispam-Message-Info:
	=?us-ascii?Q?M4W2l1CFF3+M9dfkKZrqhnPm1dI09MTDPUM9Fv/f+zMWUPEE8qnJ5dM+xImz?=
 =?us-ascii?Q?FvBJh0iM++fErk8QheR5KwwOeSnQkZXOUjq8udYrB1NM3Uy8ldz8/zFfCJUq?=
 =?us-ascii?Q?uovTxiBdmsQuVSNveDvtn2jPcK/CD8YL5OuaVxBmPAj5ODHnqaHND47DS3h1?=
 =?us-ascii?Q?2dAx6qM83W27YYEsn02LNd+S4K1qPu+l1oxVRWVFFXxqDmGjtY+nJL8W4Frn?=
 =?us-ascii?Q?qKuOLtL+j7Odir4tjAx+Qg2EJkGuCVRHRREl+FglIrPHj8mdEldRpysSNbu1?=
 =?us-ascii?Q?Gm7/kKrtk3LupSCPhZRF52LwakLw5ifIvHrQdYq3H8b5h5IcIb2OkGO28mhl?=
 =?us-ascii?Q?FyIM8gJVdh+tuGZZsDjroP7PlIg0tpJSA2JbrmahZOhzF0cSHe4eazZcdN3m?=
 =?us-ascii?Q?PakUAPRNhEpIP6v5ciP/alJYVK/AE7Ax7bog0t8VnnAPj5pzbT99Qd6QM1An?=
 =?us-ascii?Q?Q494wz5NwxEqbk1Np23JVZKLWCAzadN4jLY8vwmy1wL3hJxCFGVfvPs6MIMX?=
 =?us-ascii?Q?6FYPeisipo5Ne4VLgNCIEo7z7xGP56ZksD8XKywEAGPLWxThBtwKrMS+MStT?=
 =?us-ascii?Q?IlWBD8Y7hmjUwGUpifFd54/yzf1/pckrZvTypgP6I6f0Ck0ngVjskbjxTiMv?=
 =?us-ascii?Q?Fn8w1Kdi0U3jOVKM9NjONrLWCTW9V463yLO6dUmypoEr/0GAG8BsyrrV8/Rs?=
 =?us-ascii?Q?8PvPdPqKTGTymhSD53XhD878ISSOXOg43mp7QB/FdoMtClEvNanVvLnHy7la?=
 =?us-ascii?Q?62t8WrHf7omQ+dYgiAgN6j78MxTNn1pgPbu6GTGfSJmbiM/GhcHemnRdLTPd?=
 =?us-ascii?Q?fjBKPnj9zF2r/cE2KxBibsVKB186oB/hgDxbL6WOlfLUm/fCLa1Lau47fZHr?=
 =?us-ascii?Q?XWC10OcmlzVy5ckN9CMk8O2PviWsOlAfFI1mejWTLJnqUsu516KEgUNNLTq0?=
 =?us-ascii?Q?ZwdPg/1x2HHscytR5IlbfHRixSj3k/dRATmDM3lqcr6/eOr3KGCFRtQ+Xak9?=
 =?us-ascii?Q?UtRNvbWucUZALhwMVYZ+wcXgaRO/CN/7CAM3mNxVSD5zOtPYqelBrOALJC+e?=
 =?us-ascii?Q?GX1F9cHroZPRzPLahVICzwILuMJ73bBelDuWoYF7x1R1G17Lu5eMLUrmqWNV?=
 =?us-ascii?Q?KfnMJip7z/DZBZZ1X/rmKLJmm1tHzCuNASomih6vfTakMFUv88lOMTdCyPg6?=
 =?us-ascii?Q?S2PfFtiL06q6Vnak+ajw9cWxQmFY6O604tzD/w=3D=3D?=
X-Forefront-Antispam-Report:
	CIP:4.79.107.243;CTRY:US;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:CO1PR08CU001.outbound.protection.outlook.com;PTR:mail-co1pr08cu00102.outbound.protection.outlook.com;CAT:NONE;SFS:(13230040)(82310400026)(14060799003)(35042699022)(156008)(36860700016)(7416014)(376014)(1800799024)(56012099003)(18002099003);DIR:OUT;SFP:1102;
X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1
X-MS-Exchange-AntiSpam-MessageData-0:
	+Pt5qoZv1jQUjeMl3ulkZW0CulHOunDLfuioTnwq6v/9iYN7/DhjtEIjGAem2o9IlUySvRP3cV2oPBYyzcGoRpiEZNgizaMmLq/4Y/a2ccw1pLEpW7EsbmqjHJxlWqmVrcFFKCq9cR05c7dCknnt5ldENSsvwLtRQSCGkVWDcouypQwz4O6gB4w/SAgB/XXxxpRGYocJsQjQbn+PlUprYWxBU+hVrgqtEFRUwYEQuqs4anPjoB2BnFUq1qXzdbz45N8k8rkSZC9ljAY7xDukdFbBdeyNsClL+hk6pse2pBsqQF3jk6C1L7AxFL+7RKSiMo7xO3rBV++vsqZrcVLyF/W/gtsW6o+Vwbu23jt6HpO2P53DYhfoKQGf83lBfWGeyNCcFTubq3kWAvq2hLCeSkyoAND8WvUrXmvhwl4GlJpP+QAOEl1L4Yww1v3nhT+5
X-OriginatorOrg: elektrobit.com
X-MS-Exchange-CrossTenant-OriginalArrivalTime: 20 Apr 2026 21:27:25.8202
 (UTC)
X-MS-Exchange-CrossTenant-Network-Message-Id: e4079c5c-9814-40b0-3381-08de9f239e43
X-MS-Exchange-CrossTenant-Id: e764c36b-012e-4216-910d-8fd16283182d
X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=e764c36b-012e-4216-910d-8fd16283182d;Ip=[4.79.107.243];Helo=[usbth1es003.ebgroup.elektrobit.com]
X-MS-Exchange-CrossTenant-AuthAs: Internal
X-MS-Exchange-CrossTenant-AuthSource: TreatMessagesAsInternal-CY4PEPF0000EDD5.namprd03.prod.outlook.com
X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem
X-MS-Exchange-Transport-CrossTenantHeadersStamped: LV8PR08MB8984
X-purgate-ID: tlsNG-c1860d/1776720457-C0766DB1-F25C9B5D/0/0
X-purgate-type: clean
X-purgate-size: 32242

This commit renames altp2m functions with a p2m prefix. These functions
were originally defined in p2m.c, hence the p2m prefix. When they were
moved to altp2m.c in commit ae7584f63678, the function names were kept and
the declarations remained in p2m.h. This commit finishes that move by
renaming these functions to have an altp2m prefix and moving the
declarations to altp2m.h.

Since these functions will either be moved to the common altp2m.c, or
implemented separately for ARM, it doesn't seem to make sense to continue
with this naming convention. Therefore, this commit preemptively renames
the x86 implementations of these functions so they can later be implemented
with altp2m function name prefixes in common code or for ARM.

For convenience, here is the full list of renames:
- p2m_init_altp2m -> altp2m_init
- p2m_teardown_altp2m -> altp2m_teardown
- p2m_flush_altp2m -> altp2m_flush
- p2m_altp2m_get_or_propagate -> altp2m_get_or_propagate
- p2m_altp2m_propagate_change -> altp2m_propagate_change
- p2m_get_altp2m -> altp2m_get_altp2m
- p2m_set_altp2m -> altp2m_set_altp2m
- p2m_reset_altp2m -> altp2m_reset_altp2m
- p2m_activate_altp2m -> altp2m_activate_altp2m
- p2m_init_altp2m_by_id -> altp2m_init_by_id
- p2m_init_next_altp2m -> altp2m_init_next_available
- p2m_destroy_altp2m_by_id -> altp2m_destroy_by_id
- p2m_switch_domain_altp2m_by_id -> altp2m_switch_domain_altp2m_by_id
- p2m_change_altp2m_gfn -> altp2m_change_gfn
- p2m_set_altp2m_view_visibility -> altp2m_set_view_visibility

This commit contains only function renames and code movement, and no
functional change is intended.

This is commit 8/8 of the preparation phase.

Signed-off-by: Rose Spangler <Rose.Spangler@elektrobit.com>
---
v6: Introduced this patch.
---
 xen/arch/arm/altp2m.c             |   2 +-
 xen/arch/x86/hvm/hvm.c            |  30 ++++----
 xen/arch/x86/hvm/monitor.c        |   2 +-
 xen/arch/x86/hvm/vmx/vmx.c        |   6 +-
 xen/arch/x86/include/asm/altp2m.h | 116 +++++++++++++++++++++++++++++-
 xen/arch/x86/include/asm/p2m.h    | 109 ----------------------------
 xen/arch/x86/mm/altp2m.c          |  76 ++++++++++----------
 xen/arch/x86/mm/mem_access.c      |  13 ++--
 xen/arch/x86/mm/p2m-basic.c       |   4 +-
 xen/arch/x86/mm/p2m-ept.c         |   4 +-
 xen/arch/x86/mm/p2m.h             |   3 -
 xen/common/vm_event.c             |   2 +-
 xen/include/xen/p2m-common.h      |   2 +-
 13 files changed, 186 insertions(+), 183 deletions(-)

diff --git a/xen/arch/arm/altp2m.c b/xen/arch/arm/altp2m.c
index 8bd174ea8f37..339f82835caf 100644
--- a/xen/arch/arm/altp2m.c
+++ b/xen/arch/arm/altp2m.c
@@ -8,7 +8,7 @@
 #include <asm/p2m.h>
 
 /* Check to see if vcpu should be switched to a different p2m. */
-void p2m_altp2m_check(struct vcpu *v, uint16_t idx)
+void altp2m_check(struct vcpu *v, uint16_t idx)
 {
     /* Not yet implemented */
     BUG();
diff --git a/xen/arch/x86/hvm/hvm.c b/xen/arch/x86/hvm/hvm.c
index bc35efdf2c02..5b6e91adce17 100644
--- a/xen/arch/x86/hvm/hvm.c
+++ b/xen/arch/x86/hvm/hvm.c
@@ -1885,15 +1885,15 @@ int hvm_hap_nested_page_fault(paddr_t gpa, unsigned long gla,
 
     if ( altp2m_active(currd) )
     {
-        p2m = p2m_get_altp2m(curr);
+        p2m = altp2m_get_altp2m(curr);
 
         /*
          * Get the altp2m entry if present; or if not, propagate from
          * the host p2m.  NB that this returns with gfn locked in the
          * altp2m.
          */
-        if ( p2m_altp2m_get_or_propagate(p2m, gfn, &mfn, &p2mt,
-                                         &p2ma, &page_order) )
+        if ( altp2m_get_or_propagate(p2m, gfn, &mfn, &p2mt, &p2ma,
+                                     &page_order) )
         {
             /* Entry was copied from host -- retry fault */
             rc = 1;
@@ -2036,7 +2036,7 @@ int hvm_hap_nested_page_fault(paddr_t gpa, unsigned long gla,
             paging_mark_pfn_dirty(currd, _pfn(gfn));
             /*
              * If p2m is really an altp2m, unlock it before changing the type,
-             * as p2m_altp2m_propagate_change() needs to acquire the
+             * as altp2m_propagate_change() needs to acquire the
              * altp2m_list lock.
              */
             if ( p2m != hostp2m )
@@ -4663,7 +4663,7 @@ static int do_altp2m_op(
 
         /* If the alternate p2m state has changed, handle appropriately */
         if ( d->altp2m_active != ostate &&
-             (ostate || !(rc = p2m_init_altp2m_by_id(d, 0))) )
+             (ostate || !(rc = altp2m_init_by_id(d, 0))) )
         {
             for_each_vcpu( d, v )
             {
@@ -4674,7 +4674,7 @@ static int do_altp2m_op(
             }
 
             if ( ostate )
-                p2m_flush_altp2m(d);
+                altp2m_flush(d);
         }
         else if ( rc )
             d->altp2m_active = false;
@@ -4729,17 +4729,18 @@ static int do_altp2m_op(
     }
 
     case HVMOP_altp2m_create_p2m:
-        if ( !(rc = p2m_init_next_altp2m(d, &a.u.view.view,
-                                         a.u.view.hvmmem_default_access)) )
+        rc = altp2m_init_next_available(d, &a.u.view.view,
+                                        a.u.view.hvmmem_default_access);
+        if ( !rc )
             rc = __copy_to_guest(arg, &a, 1) ? -EFAULT : 0;
         break;
 
     case HVMOP_altp2m_destroy_p2m:
-        rc = p2m_destroy_altp2m_by_id(d, a.u.view.view);
+        rc = altp2m_destroy_by_id(d, a.u.view.view);
         break;
 
     case HVMOP_altp2m_switch_p2m:
-        rc = p2m_switch_domain_altp2m_by_id(d, a.u.view.view);
+        rc = altp2m_switch_domain_altp2m_by_id(d, a.u.view.view);
         break;
 
     case HVMOP_altp2m_set_suppress_ve:
@@ -4871,9 +4872,9 @@ static int do_altp2m_op(
         if ( a.u.change_gfn.pad1 || a.u.change_gfn.pad2 )
             rc = -EINVAL;
         else
-            rc = p2m_change_altp2m_gfn(d, a.u.change_gfn.view,
-                    _gfn(a.u.change_gfn.old_gfn),
-                    _gfn(a.u.change_gfn.new_gfn));
+            rc = altp2m_change_gfn(d, a.u.change_gfn.view,
+                                   _gfn(a.u.change_gfn.old_gfn),
+                                   _gfn(a.u.change_gfn.new_gfn));
         break;
 
     case HVMOP_altp2m_get_p2m_idx:
@@ -4906,8 +4907,7 @@ static int do_altp2m_op(
         else if ( !altp2m_active(d) )
             rc = -EOPNOTSUPP;
         else
-            rc = p2m_set_altp2m_view_visibility(d, idx,
-                                                a.u.set_visibility.visible);
+            rc = altp2m_set_view_visibility(d, idx, a.u.set_visibility.visible);
         break;
     }
 
diff --git a/xen/arch/x86/hvm/monitor.c b/xen/arch/x86/hvm/monitor.c
index 84c1c2234ca9..78137220b22a 100644
--- a/xen/arch/x86/hvm/monitor.c
+++ b/xen/arch/x86/hvm/monitor.c
@@ -182,7 +182,7 @@ int hvm_monitor_debug(unsigned long rip, enum hvm_monitor_debug_type type,
 #ifdef CONFIG_ALTP2M
         if ( curr->arch.hvm.fast_single_step.enabled )
         {
-            p2m_altp2m_check(curr, curr->arch.hvm.fast_single_step.p2midx);
+            altp2m_check(curr, curr->arch.hvm.fast_single_step.p2midx);
             curr->arch.hvm.single_step = false;
             curr->arch.hvm.fast_single_step.enabled = false;
             curr->arch.hvm.fast_single_step.p2midx = 0;
diff --git a/xen/arch/x86/hvm/vmx/vmx.c b/xen/arch/x86/hvm/vmx/vmx.c
index 0909929c00e0..f2cf95ee500e 100644
--- a/xen/arch/x86/hvm/vmx/vmx.c
+++ b/xen/arch/x86/hvm/vmx/vmx.c
@@ -2452,7 +2452,7 @@ static void cf_check vmx_vcpu_update_eptp(struct vcpu *v)
     struct ept_data *ept;
 
     if ( altp2m_active(d) )
-        p2m = p2m_get_altp2m(v);
+        p2m = altp2m_get_altp2m(v);
     if ( !p2m )
         p2m = p2m_get_hostp2m(d);
 
@@ -2521,7 +2521,7 @@ static int cf_check vmx_vcpu_emulate_vmfunc(const struct cpu_user_regs *regs)
 
     if ( !cpu_has_vmx_vmfunc && altp2m_active(curr->domain) &&
          regs->eax == 0 &&
-         p2m_switch_vcpu_altp2m_by_id(curr, regs->ecx) )
+         altp2m_switch_vcpu_by_id(curr, regs->ecx) )
         rc = X86EMUL_OKAY;
 
     return rc;
@@ -4277,7 +4277,7 @@ void asmlinkage vmx_vmexit_handler(struct cpu_user_regs *regs)
             }
         }
 
-        p2m_set_altp2m(v, idx);
+        altp2m_set_altp2m(v, idx);
     }
 
     if ( vm_event_is_enabled(v) &&
diff --git a/xen/arch/x86/include/asm/altp2m.h b/xen/arch/x86/include/asm/altp2m.h
index 07e760f60659..9c58a396448d 100644
--- a/xen/arch/x86/include/asm/altp2m.h
+++ b/xen/arch/x86/include/asm/altp2m.h
@@ -7,12 +7,33 @@
 #ifndef __ASM_X86_ALTP2M_H
 #define __ASM_X86_ALTP2M_H
 
-#ifdef CONFIG_ALTP2M
 
 #include <xen/types.h>
 #include <xen/sched.h>         /* for struct vcpu, struct domain */
+
+#include <asm/p2m.h>
 #include <asm/hvm/vcpu.h>      /* for vcpu_altp2m */
 
+/*
+ * Common alternate p2m declarations that need to be visible
+ * regardless of CONFIG_ALTP2M
+ */
+
+/* Alternate p2m paging */
+bool altp2m_get_or_propagate(struct p2m_domain *ap2m, unsigned long gfn_l,
+                             mfn_t *mfn, p2m_type_t *p2mt, p2m_access_t *p2ma,
+                             unsigned int *page_order);
+
+/* Propagate a host p2m change to all alternate p2m's */
+int altp2m_propagate_change(struct domain *d, gfn_t gfn, mfn_t mfn,
+                            unsigned int page_order, p2m_type_t p2mt,
+                            p2m_access_t p2ma);
+
+#ifdef CONFIG_ALTP2M
+
+#define AP2MGET_prepopulate true
+#define AP2MGET_query false
+
 static inline bool altp2m_is_eptp_valid(const struct domain *d,
                                         unsigned int idx)
 {
@@ -39,6 +60,85 @@ static inline uint16_t altp2m_vcpu_idx(const struct vcpu *v)
     return vcpu_altp2m(v).p2midx;
 }
 
+/*
+ * Alternate p2m: shadow p2m tables used for alternate memory views
+ */
+
+/* get current alternate p2m table */
+static inline struct p2m_domain *altp2m_get_altp2m(struct vcpu *v)
+{
+    unsigned int index = vcpu_altp2m(v).p2midx;
+
+    if ( index == INVALID_ALTP2M )
+        return NULL;
+
+    BUG_ON(index >= v->domain->nr_altp2m);
+
+    return v->domain->altp2m_p2m[index];
+}
+
+/* set current alternate p2m table */
+static inline bool altp2m_set_altp2m(struct vcpu *v, unsigned int idx)
+{
+    struct p2m_domain *orig;
+
+    BUG_ON(idx >= v->domain->nr_altp2m);
+
+    if ( idx == vcpu_altp2m(v).p2midx )
+        return false;
+
+    orig = altp2m_get_altp2m(v);
+    BUG_ON(!orig);
+    atomic_dec(&orig->active_vcpus);
+
+    vcpu_altp2m(v).p2midx = idx;
+    atomic_inc(&v->domain->altp2m_p2m[idx]->active_vcpus);
+
+    return true;
+}
+
+/* Initialize altp2m views */
+int altp2m_init(struct domain *d);
+
+/* Free altp2m views */
+void altp2m_teardown(struct domain *d);
+
+/* Switch alternate p2m for a single vcpu */
+bool altp2m_switch_vcpu_by_id(struct vcpu *v, unsigned int idx);
+
+/* Flush all the alternate p2m's for a domain */
+void altp2m_flush(struct domain *d);
+
+/* Make a specific alternate p2m valid */
+int altp2m_init_by_id(struct domain *d, unsigned int idx);
+
+/* Find an available alternate p2m and make it valid */
+int altp2m_init_next_available(struct domain *d, uint16_t *idx,
+                               xenmem_access_t hvmmem_default_access);
+
+/* Make a specific alternate p2m invalid */
+int altp2m_destroy_by_id(struct domain *d, unsigned int idx);
+
+/* Switch alternate p2m for entire domain */
+int altp2m_switch_domain_altp2m_by_id(struct domain *d, unsigned int idx);
+
+/* Change a gfn->mfn mapping */
+int altp2m_change_gfn(struct domain *d, unsigned int idx, gfn_t old_gfn,
+                      gfn_t new_gfn);
+
+/* Set a specific p2m view visibility */
+int altp2m_set_view_visibility(struct domain *d, unsigned int altp2m_idx,
+                               uint8_t visible);
+
+/*
+ * Looks up altp2m entry. If the entry is not found it looks up the entry in
+ * hostp2m.
+ * The prepopulate param is used to set the found entry in altp2m.
+ */
+int altp2m_get_effective_entry(struct p2m_domain *ap2m, gfn_t gfn, mfn_t *mfn,
+                               p2m_type_t *t, p2m_access_t *a,
+                               bool prepopulate);
+
 /* Alternate p2m VCPU */
 void altp2m_vcpu_initialise(struct vcpu *v);
 void altp2m_vcpu_destroy(struct vcpu *v);
@@ -69,7 +169,21 @@ static inline bool altp2m_supported(void)
     return false;
 }
 
+static inline int _altp2m_get_effective_entry(struct p2m_domain *ap2m,
+                                             gfn_t gfn, mfn_t *mfn,
+                                             p2m_type_t *t, p2m_access_t *a)
+{
+    ASSERT_UNREACHABLE();
+    return -EOPNOTSUPP;
+}
+#define altp2m_get_effective_entry(ap2m, gfn, mfn, t, a, prepopulate) \
+        _altp2m_get_effective_entry(ap2m, gfn, mfn, t, a)
+
 /* Only declaration is needed. DCE will optimise it out when linking. */
+int altp2m_init(struct domain *d);
+void altp2m_teardown(struct domain *d);
+struct p2m_domain *altp2m_get_altp2m(struct vcpu *v);
+bool altp2m_set_altp2m(struct vcpu *v, unsigned int idx);
 uint16_t altp2m_vcpu_idx(const struct vcpu *v);
 void altp2m_vcpu_initialise(struct vcpu *v);
 void altp2m_vcpu_destroy(struct vcpu *v);
diff --git a/xen/arch/x86/include/asm/p2m.h b/xen/arch/x86/include/asm/p2m.h
index ec871717a9e4..5110b3e77807 100644
--- a/xen/arch/x86/include/asm/p2m.h
+++ b/xen/arch/x86/include/asm/p2m.h
@@ -582,30 +582,6 @@ static inline gfn_t mfn_to_gfn(const struct domain *d, mfn_t mfn)
         return _gfn(mfn_x(mfn));
 }
 
-#ifdef CONFIG_ALTP2M
-#define AP2MGET_prepopulate true
-#define AP2MGET_query false
-
-/*
- * Looks up altp2m entry. If the entry is not found it looks up the entry in
- * hostp2m.
- * The prepopulate param is used to set the found entry in altp2m.
- */
-int altp2m_get_effective_entry(struct p2m_domain *ap2m, gfn_t gfn, mfn_t *mfn,
-                               p2m_type_t *t, p2m_access_t *a,
-                               bool prepopulate);
-#else
-static inline int _altp2m_get_effective_entry(struct p2m_domain *ap2m,
-                                             gfn_t gfn, mfn_t *mfn,
-                                             p2m_type_t *t, p2m_access_t *a)
-{
-    ASSERT_UNREACHABLE();
-    return -EOPNOTSUPP;
-}
-#define altp2m_get_effective_entry(ap2m, gfn, mfn, t, a, prepopulate) \
-        _altp2m_get_effective_entry(ap2m, gfn, mfn, t, a)
-#endif
-
 /* Init the datastructures for later use by the p2m code */
 int p2m_init(struct domain *d);
 
@@ -885,91 +861,6 @@ void shadow_p2m_init(struct p2m_domain *p2m);
 void cf_check nestedp2m_write_p2m_entry_post(
     struct p2m_domain *p2m, unsigned int oflags);
 
-#ifdef CONFIG_ALTP2M
-
-/*
- * Alternate p2m: shadow p2m tables used for alternate memory views
- */
-
-/* get current alternate p2m table */
-static inline struct p2m_domain *p2m_get_altp2m(struct vcpu *v)
-{
-    unsigned int index = vcpu_altp2m(v).p2midx;
-
-    if ( index == INVALID_ALTP2M )
-        return NULL;
-
-    BUG_ON(index >= v->domain->nr_altp2m);
-
-    return v->domain->altp2m_p2m[index];
-}
-
-/* set current alternate p2m table */
-static inline bool p2m_set_altp2m(struct vcpu *v, unsigned int idx)
-{
-    struct p2m_domain *orig;
-
-    BUG_ON(idx >= v->domain->nr_altp2m);
-
-    if ( idx == vcpu_altp2m(v).p2midx )
-        return false;
-
-    orig = p2m_get_altp2m(v);
-    BUG_ON(!orig);
-    atomic_dec(&orig->active_vcpus);
-
-    vcpu_altp2m(v).p2midx = idx;
-    atomic_inc(&v->domain->altp2m_p2m[idx]->active_vcpus);
-
-    return true;
-}
-
-/* Switch alternate p2m for a single vcpu */
-bool p2m_switch_vcpu_altp2m_by_id(struct vcpu *v, unsigned int idx);
-
-/* Flush all the alternate p2m's for a domain */
-void p2m_flush_altp2m(struct domain *d);
-
-/* Make a specific alternate p2m valid */
-int p2m_init_altp2m_by_id(struct domain *d, unsigned int idx);
-
-/* Find an available alternate p2m and make it valid */
-int p2m_init_next_altp2m(struct domain *d, uint16_t *idx,
-                         xenmem_access_t hvmmem_default_access);
-
-/* Make a specific alternate p2m invalid */
-int p2m_destroy_altp2m_by_id(struct domain *d, unsigned int idx);
-
-/* Switch alternate p2m for entire domain */
-int p2m_switch_domain_altp2m_by_id(struct domain *d, unsigned int idx);
-
-/* Change a gfn->mfn mapping */
-int p2m_change_altp2m_gfn(struct domain *d, unsigned int idx,
-                          gfn_t old_gfn, gfn_t new_gfn);
-
-/* Set a specific p2m view visibility */
-int p2m_set_altp2m_view_visibility(struct domain *d, unsigned int altp2m_idx,
-                                   uint8_t visible);
-
-#else /* !CONFIG_ALTP2M */
-struct p2m_domain *p2m_get_altp2m(struct vcpu *v);
-bool p2m_set_altp2m(struct vcpu *v, unsigned int idx);
-#endif /* CONFIG_ALTP2M */
-
-/*
- * Common alternate p2m declarations that need to be visible
- * regardless of CONFIG_ALTP2M
- */
-
-/* Alternate p2m paging */
-bool p2m_altp2m_get_or_propagate(struct p2m_domain *ap2m, unsigned long gfn_l,
-                                 mfn_t *mfn, p2m_type_t *p2mt,
-                                 p2m_access_t *p2ma, unsigned int *page_order);
-                                 
-/* Propagate a host p2m change to all alternate p2m's */
-int p2m_altp2m_propagate_change(struct domain *d, gfn_t gfn,
-                                mfn_t mfn, unsigned int page_order,
-                                p2m_type_t p2mt, p2m_access_t p2ma);
 #endif /* CONFIG_HVM */
 
 /* p2m access to IOMMU flags */
diff --git a/xen/arch/x86/mm/altp2m.c b/xen/arch/x86/mm/altp2m.c
index 8dd3c0f96be0..2dc84b76b8c1 100644
--- a/xen/arch/x86/mm/altp2m.c
+++ b/xen/arch/x86/mm/altp2m.c
@@ -24,7 +24,7 @@ altp2m_vcpu_initialise(struct vcpu *v)
         vcpu_pause(v);
 
     vcpu_altp2m(v).p2midx = 0;
-    atomic_inc(&p2m_get_altp2m(v)->active_vcpus);
+    atomic_inc(&altp2m_get_altp2m(v)->active_vcpus);
 
     altp2m_vcpu_update_p2m(v);
 
@@ -43,7 +43,7 @@ altp2m_vcpu_destroy(struct vcpu *v)
     if ( v != current )
         vcpu_pause(v);
 
-    if ( (p2m = p2m_get_altp2m(v)) )
+    if ( (p2m = altp2m_get_altp2m(v)) )
         atomic_dec(&p2m->active_vcpus);
 
     altp2m_vcpu_disable_ve(v);
@@ -123,7 +123,7 @@ void altp2m_vcpu_disable_ve(struct vcpu *v)
     }
 }
 
-int p2m_init_altp2m(struct domain *d)
+int altp2m_init(struct domain *d)
 {
     unsigned int i;
     struct p2m_domain *p2m;
@@ -140,7 +140,7 @@ int p2m_init_altp2m(struct domain *d)
         d->altp2m_p2m[i] = p2m = p2m_init_one(d);
         if ( p2m == NULL )
         {
-            p2m_teardown_altp2m(d);
+            altp2m_teardown(d);
             return -ENOMEM;
         }
         p2m->p2m_class = p2m_alternate;
@@ -151,7 +151,7 @@ int p2m_init_altp2m(struct domain *d)
     return 0;
 }
 
-void p2m_teardown_altp2m(struct domain *d)
+void altp2m_teardown(struct domain *d)
 {
     unsigned int i;
     struct p2m_domain *p2m;
@@ -207,13 +207,13 @@ int altp2m_get_effective_entry(struct p2m_domain *ap2m, gfn_t gfn, mfn_t *mfn,
     return 0;
 }
 
-void p2m_altp2m_check(struct vcpu *v, uint16_t idx)
+void altp2m_check(struct vcpu *v, uint16_t idx)
 {
     if ( altp2m_active(v->domain) )
-        p2m_switch_vcpu_altp2m_by_id(v, idx);
+        altp2m_switch_vcpu_by_id(v, idx);
 }
 
-bool p2m_switch_vcpu_altp2m_by_id(struct vcpu *v, unsigned int idx)
+bool altp2m_switch_vcpu_by_id(struct vcpu *v, unsigned int idx)
 {
     struct domain *d = v->domain;
     bool rc = false;
@@ -225,7 +225,7 @@ bool p2m_switch_vcpu_altp2m_by_id(struct vcpu *v, unsigned int idx)
 
     if ( d->arch.altp2m_eptp[idx] != mfn_x(INVALID_MFN) )
     {
-        if ( p2m_set_altp2m(v, idx) )
+        if ( altp2m_set_altp2m(v, idx) )
             altp2m_vcpu_update_p2m(v);
         rc = 1;
     }
@@ -246,9 +246,9 @@ bool p2m_switch_vcpu_altp2m_by_id(struct vcpu *v, unsigned int idx)
  * the host's entry to the altp2m (retaining page order), and indicate
  * that the caller should re-try the faulting instruction.
  */
-bool p2m_altp2m_get_or_propagate(struct p2m_domain *ap2m, unsigned long gfn_l,
-                                 mfn_t *mfn, p2m_type_t *p2mt,
-                                 p2m_access_t *p2ma, unsigned int *page_order)
+bool altp2m_get_or_propagate(struct p2m_domain *ap2m, unsigned long gfn_l,
+                             mfn_t *mfn, p2m_type_t *p2mt, p2m_access_t *p2ma,
+                             unsigned int *page_order)
 {
     p2m_type_t ap2mt;
     p2m_access_t ap2ma;
@@ -319,8 +319,8 @@ enum altp2m_reset_type {
     ALTP2M_DEACTIVATE
 };
 
-static void p2m_reset_altp2m(struct domain *d, unsigned int idx,
-                             enum altp2m_reset_type reset_type)
+static void altp2m_reset_altp2m(struct domain *d, unsigned int idx,
+                                enum altp2m_reset_type reset_type)
 {
     struct p2m_domain *p2m;
 
@@ -344,7 +344,7 @@ static void p2m_reset_altp2m(struct domain *d, unsigned int idx,
     p2m_unlock(p2m);
 }
 
-void p2m_flush_altp2m(struct domain *d)
+void altp2m_flush(struct domain *d)
 {
     unsigned int i;
 
@@ -352,7 +352,7 @@ void p2m_flush_altp2m(struct domain *d)
 
     for ( i = 0; i < d->nr_altp2m; i++ )
     {
-        p2m_reset_altp2m(d, i, ALTP2M_DEACTIVATE);
+        altp2m_reset_altp2m(d, i, ALTP2M_DEACTIVATE);
         d->arch.altp2m_eptp[i] = mfn_x(INVALID_MFN);
         d->arch.altp2m_visible_eptp[i] = mfn_x(INVALID_MFN);
     }
@@ -360,8 +360,8 @@ void p2m_flush_altp2m(struct domain *d)
     altp2m_list_unlock(d);
 }
 
-static int p2m_activate_altp2m(struct domain *d, unsigned int idx,
-                               p2m_access_t hvmmem_default_access)
+static int altp2m_activate_altp2m(struct domain *d, unsigned int idx,
+                                  p2m_access_t hvmmem_default_access)
 {
     struct p2m_domain *hostp2m, *p2m;
     int rc;
@@ -399,9 +399,9 @@ static int p2m_activate_altp2m(struct domain *d, unsigned int idx,
     p2m_unlock(p2m);
 
     return rc;
-}
+ }
 
-int p2m_init_altp2m_by_id(struct domain *d, unsigned int idx)
+int altp2m_init_by_id(struct domain *d, unsigned int idx)
 {
     int rc = -EINVAL;
     struct p2m_domain *hostp2m = p2m_get_hostp2m(d);
@@ -413,14 +413,14 @@ int p2m_init_altp2m_by_id(struct domain *d, unsigned int idx)
 
     if ( d->arch.altp2m_eptp[array_index_nospec(idx, MAX_EPTP)] ==
          mfn_x(INVALID_MFN) )
-        rc = p2m_activate_altp2m(d, idx, hostp2m->default_access);
+        rc = altp2m_activate_altp2m(d, idx, hostp2m->default_access);
 
     altp2m_list_unlock(d);
     return rc;
 }
 
-int p2m_init_next_altp2m(struct domain *d, uint16_t *idx,
-                         xenmem_access_t hvmmem_default_access)
+int altp2m_init_next_available(struct domain *d, uint16_t *idx,
+                               xenmem_access_t hvmmem_default_access)
 {
     int rc = -EINVAL;
     unsigned int i;
@@ -438,7 +438,7 @@ int p2m_init_next_altp2m(struct domain *d, uint16_t *idx,
         if ( d->arch.altp2m_eptp[i] != mfn_x(INVALID_MFN) )
             continue;
 
-        rc = p2m_activate_altp2m(d, i, a);
+        rc = altp2m_activate_altp2m(d, i, a);
 
         if ( !rc )
             *idx = i;
@@ -450,7 +450,7 @@ int p2m_init_next_altp2m(struct domain *d, uint16_t *idx,
     return rc;
 }
 
-int p2m_destroy_altp2m_by_id(struct domain *d, unsigned int idx)
+int altp2m_destroy_by_id(struct domain *d, unsigned int idx)
 {
     struct p2m_domain *p2m;
     int rc = -EBUSY;
@@ -472,7 +472,7 @@ int p2m_destroy_altp2m_by_id(struct domain *d, unsigned int idx)
 
         if ( !_atomic_read(p2m->active_vcpus) )
         {
-            p2m_reset_altp2m(d, idx, ALTP2M_DEACTIVATE);
+            altp2m_reset_altp2m(d, idx, ALTP2M_DEACTIVATE);
             d->arch.altp2m_eptp[array_index_nospec(idx, MAX_EPTP)] =
                 mfn_x(INVALID_MFN);
             d->arch.altp2m_visible_eptp[array_index_nospec(idx, MAX_EPTP)] =
@@ -488,7 +488,7 @@ int p2m_destroy_altp2m_by_id(struct domain *d, unsigned int idx)
     return rc;
 }
 
-int p2m_switch_domain_altp2m_by_id(struct domain *d, unsigned int idx)
+int altp2m_switch_domain_altp2m_by_id(struct domain *d, unsigned int idx)
 {
     struct vcpu *v;
     int rc = -EINVAL;
@@ -506,7 +506,7 @@ int p2m_switch_domain_altp2m_by_id(struct domain *d, unsigned int idx)
     if ( d->arch.altp2m_visible_eptp[idx] != mfn_x(INVALID_MFN) )
     {
         for_each_vcpu( d, v )
-            if ( p2m_set_altp2m(v, idx) )
+            if ( altp2m_set_altp2m(v, idx) )
                 altp2m_vcpu_update_p2m(v);
 
         rc = 0;
@@ -519,8 +519,8 @@ int p2m_switch_domain_altp2m_by_id(struct domain *d, unsigned int idx)
     return rc;
 }
 
-int p2m_change_altp2m_gfn(struct domain *d, unsigned int idx,
-                          gfn_t old_gfn, gfn_t new_gfn)
+int altp2m_change_gfn(struct domain *d, unsigned int idx, gfn_t old_gfn,
+                      gfn_t new_gfn)
 {
     struct p2m_domain *hp2m, *ap2m;
     p2m_access_t a;
@@ -571,11 +571,11 @@ int p2m_change_altp2m_gfn(struct domain *d, unsigned int idx,
     p2m_unlock(ap2m);
     p2m_unlock(hp2m);
     return rc;
-}
+ }
 
-int p2m_altp2m_propagate_change(struct domain *d, gfn_t gfn,
-                                mfn_t mfn, unsigned int page_order,
-                                p2m_type_t p2mt, p2m_access_t p2ma)
+int altp2m_propagate_change(struct domain *d, gfn_t gfn, mfn_t mfn,
+                            unsigned int page_order, p2m_type_t p2mt,
+                            p2m_access_t p2ma)
 {
     struct p2m_domain *p2m;
     unsigned int i;
@@ -605,7 +605,7 @@ int p2m_altp2m_propagate_change(struct domain *d, gfn_t gfn,
         {
             if ( !reset_count++ )
             {
-                p2m_reset_altp2m(d, i, ALTP2M_RESET);
+                altp2m_reset_altp2m(d, i, ALTP2M_RESET);
                 last_reset_idx = i;
             }
             else
@@ -617,7 +617,7 @@ int p2m_altp2m_propagate_change(struct domain *d, gfn_t gfn,
                          d->arch.altp2m_eptp[i] == mfn_x(INVALID_MFN) )
                         continue;
 
-                    p2m_reset_altp2m(d, i, ALTP2M_RESET);
+                    altp2m_reset_altp2m(d, i, ALTP2M_RESET);
                 }
 
                 ret = 0;
@@ -768,8 +768,8 @@ int p2m_get_suppress_ve(struct domain *d, gfn_t gfn, bool *suppress_ve,
     return rc;
 }
 
-int p2m_set_altp2m_view_visibility(struct domain *d, unsigned int altp2m_idx,
-                                   uint8_t visible)
+int altp2m_set_view_visibility(struct domain *d, unsigned int altp2m_idx,
+                               uint8_t visible)
 {
     int rc = 0;
 
diff --git a/xen/arch/x86/mm/mem_access.c b/xen/arch/x86/mm/mem_access.c
index e5548e64d8d0..0492356d99ad 100644
--- a/xen/arch/x86/mm/mem_access.c
+++ b/xen/arch/x86/mm/mem_access.c
@@ -81,7 +81,7 @@ bool p2m_mem_access_emulate_check(struct vcpu *v,
     struct p2m_domain *p2m = NULL;
 
     if ( altp2m_active(d) )
-        p2m = p2m_get_altp2m(v);
+        p2m = altp2m_get_altp2m(v);
     if ( !p2m )
         p2m = p2m_get_hostp2m(d);
 
@@ -145,7 +145,7 @@ bool p2m_mem_access_check(paddr_t gpa, unsigned long gla,
     int rc;
 
     if ( altp2m_active(d) )
-        p2m = p2m_get_altp2m(v);
+        p2m = altp2m_get_altp2m(v);
     if ( !p2m )
         p2m = p2m_get_hostp2m(d);
 
@@ -252,9 +252,10 @@ bool p2m_mem_access_check(paddr_t gpa, unsigned long gla,
     return (p2ma != p2m_access_n2rwx);
 }
 
-static int p2m_set_altp2m_mem_access(struct domain *d, struct p2m_domain *hp2m,
-                                     struct p2m_domain *ap2m, p2m_access_t a,
-                                     gfn_t gfn)
+static int altp2m_set_altp2m_mem_access(struct domain *d,
+                                        struct p2m_domain *hp2m,
+                                        struct p2m_domain *ap2m, p2m_access_t a,
+                                        gfn_t gfn)
 {
     mfn_t mfn;
     p2m_type_t t;
@@ -281,7 +282,7 @@ static int set_mem_access(struct domain *d, struct p2m_domain *p2m,
 
     if ( ap2m )
     {
-        rc = p2m_set_altp2m_mem_access(d, p2m, ap2m, a, gfn);
+        rc = altp2m_set_altp2m_mem_access(d, p2m, ap2m, a, gfn);
         /* If the corresponding mfn is invalid we will want to just skip it */
         if ( rc == -ESRCH )
             rc = 0;
diff --git a/xen/arch/x86/mm/p2m-basic.c b/xen/arch/x86/mm/p2m-basic.c
index ce14066fedaf..433e7d08b78f 100644
--- a/xen/arch/x86/mm/p2m-basic.c
+++ b/xen/arch/x86/mm/p2m-basic.c
@@ -128,7 +128,7 @@ int p2m_init(struct domain *d)
         return rc;
     }
 
-    rc = altp2m_supported() ? p2m_init_altp2m(d) : 0;
+    rc = altp2m_supported() ? altp2m_init(d) : 0;
     if ( rc )
     {
         p2m_teardown_hostp2m(d);
@@ -198,7 +198,7 @@ void p2m_final_teardown(struct domain *d)
     if ( is_hvm_domain(d) )
     {
         if ( altp2m_supported() )
-            p2m_teardown_altp2m(d);
+            altp2m_teardown(d);
         /*
          * We must tear down nestedp2m unconditionally because
          * we initialise it unconditionally.
diff --git a/xen/arch/x86/mm/p2m-ept.c b/xen/arch/x86/mm/p2m-ept.c
index 84159198f3a0..a6f61a9dd3d7 100644
--- a/xen/arch/x86/mm/p2m-ept.c
+++ b/xen/arch/x86/mm/p2m-ept.c
@@ -773,7 +773,7 @@ bool ept_handle_misconfig(uint64_t gpa)
     int rc;
 
     if ( altp2m_active(curr->domain) )
-        p2m = p2m_get_altp2m(curr);
+        p2m = altp2m_get_altp2m(curr);
 
     p2m_lock(p2m);
 
@@ -997,7 +997,7 @@ out:
 
     if ( altp2m_supported() && entry_written && p2m_is_hostp2m(p2m) )
     {
-        ret = p2m_altp2m_propagate_change(d, _gfn(gfn), mfn, order, p2mt, p2ma);
+        ret = altp2m_propagate_change(d, _gfn(gfn), mfn, order, p2mt, p2ma);
         if ( !rc )
             rc = ret;
     }
diff --git a/xen/arch/x86/mm/p2m.h b/xen/arch/x86/mm/p2m.h
index 635f5a7f45cd..64218878067e 100644
--- a/xen/arch/x86/mm/p2m.h
+++ b/xen/arch/x86/mm/p2m.h
@@ -19,9 +19,6 @@ static inline int p2m_init_logdirty(struct p2m_domain *p2m) { return 0; }
 static inline void p2m_free_logdirty(struct p2m_domain *p2m) {}
 #endif
 
-int p2m_init_altp2m(struct domain *d);
-void p2m_teardown_altp2m(struct domain *d);
-
 void p2m_flush_table_locked(struct p2m_domain *p2m);
 int __must_check p2m_remove_entry(struct p2m_domain *p2m, gfn_t gfn, mfn_t mfn,
                                   unsigned int page_order);
diff --git a/xen/common/vm_event.c b/xen/common/vm_event.c
index cf0258223f50..77e0c8a0b240 100644
--- a/xen/common/vm_event.c
+++ b/xen/common/vm_event.c
@@ -433,7 +433,7 @@ static int vm_event_resume(struct domain *d, struct vm_event_domain *ved)
             /* Check for altp2m switch */
             if ( IS_ENABLED(CONFIG_ALTP2M) &&
                  rsp.flags & VM_EVENT_FLAG_ALTERNATE_P2M )
-                p2m_altp2m_check(v, rsp.altp2m_idx);
+                altp2m_check(v, rsp.altp2m_idx);
 
             if ( rsp.flags & VM_EVENT_FLAG_SET_REGISTERS )
                 vm_event_set_registers(v, &rsp);
diff --git a/xen/include/xen/p2m-common.h b/xen/include/xen/p2m-common.h
index f0bd9a6b9896..6da330acca1f 100644
--- a/xen/include/xen/p2m-common.h
+++ b/xen/include/xen/p2m-common.h
@@ -25,7 +25,7 @@ int unmap_mmio_regions(struct domain *d,
                        mfn_t mfn);
 
 /* Check to see if vcpu should be switched to a different p2m. */
-void p2m_altp2m_check(struct vcpu *v, uint16_t idx);
+void altp2m_check(struct vcpu *v, uint16_t idx);
 
 /*
  * Populate-on-Demand
-- 
2.34.1



From xen-devel-bounces@lists.xenproject.org Mon Apr 20 21:27:41 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 20 Apr 2026 21:27:41 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1287494.1567914 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wEw9Y-0001OF-Oo; Mon, 20 Apr 2026 21:27:36 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1287494.1567914; Mon, 20 Apr 2026 21:27: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 1wEw9Y-0001Mx-JQ; Mon, 20 Apr 2026 21:27:36 +0000
Received: by outflank-mailman (input) for mailman id 1287494;
 Mon, 20 Apr 2026 21:27:35 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <Rose.Spangler@elektrobit.com>) id 1wEw9X-0001Gd-NI
 for xen-devel@lists.xenproject.org; Mon, 20 Apr 2026 21:27:35 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wEw9X-001Myj-3f
 for xen-devel@lists.xenproject.org; Mon, 20 Apr 2026 23:27:35 +0200
Received: from [10.42.69.8] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <Rose.Spangler@elektrobit.com>)
 id 69e69a18-bab6-0a2a0a5309dd-0a2a4508a9bc-10
 for <xen-devel@lists.xenproject.org>; Mon, 20 Apr 2026 23:27:35 +0200
Received: from [52.101.193.95]
 (helo=CH1PR05CU001.outbound.protection.outlook.com)
 by tlsNG-c1860d.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.1)
 (envelope-from <Rose.Spangler@elektrobit.com>)
 id 69e69a45-63b5-0a2a45080019-3465c15f9d5b-3
 for <xen-devel@lists.xenproject.org>; Mon, 20 Apr 2026 23:27:34 +0200
Received: from BN8PR04CA0061.namprd04.prod.outlook.com (2603:10b6:408:d4::35)
 by CYXPR08MB9429.namprd08.prod.outlook.com (2603:10b6:930:e1::17)
 with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9818.32; Mon, 20 Apr
 2026 21:27:29 +0000
Received: from BN1PEPF00005FFD.namprd05.prod.outlook.com
 (2603:10b6:408:d4:cafe::22) by BN8PR04CA0061.outlook.office365.com
 (2603:10b6:408:d4::35) with Microsoft SMTP Server (version=TLS1_3,
 cipher=TLS_AES_256_GCM_SHA384) id 15.20.9791.48 via Frontend Transport; Mon,
 20 Apr 2026 21:27:29 +0000
Received: from usbth1es003.ebgroup.elektrobit.com (4.79.107.243) by
 BN1PEPF00005FFD.mail.protection.outlook.com (10.167.243.229) with Microsoft
 SMTP Server (version=TLS1_3, cipher=TLS_AES_256_GCM_SHA384) id 15.20.9791.48
 via Frontend Transport; Mon, 20 Apr 2026 21:27:28 +0000
Received: from usbth1es003 (localhost [127.0.0.1])
 by usbth1es003.ebgroup.elektrobit.com (Postfix) with SMTP id 4fzz8w0DD5z1wdR; 
 Mon, 20 Apr 2026 14:27:28 -0700 (PDT)
Received: from BYAPR08CU003.outbound.protection.outlook.com
 (mail-byapr08cu00301.outbound.protection.outlook.com [40.93.1.105])
 (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)
 key-exchange secp384r1 server-signature RSA-PSS (2048 bits) server-digest
 SHA256) (No client certificate requested)
 by usbth1es003.ebgroup.elektrobit.com (Postfix) with ESMTPS;
 Mon, 20 Apr 2026 14:27:27 -0700 (PDT)
Received: from CH5PR05CA0002.namprd05.prod.outlook.com (2603:10b6:610:1f0::8)
 by BN8PR08MB6305.namprd08.prod.outlook.com (2603:10b6:408:7d::12)
 with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9818.33; Mon, 20 Apr
 2026 21:27:24 +0000
Received: from CH2PEPF00000099.namprd02.prod.outlook.com
 (2603:10b6:610:1f0:cafe::94) by CH5PR05CA0002.outlook.office365.com
 (2603:10b6:610:1f0::8) with Microsoft SMTP Server (version=TLS1_3,
 cipher=TLS_AES_256_GCM_SHA384) id 15.20.9791.48 via Frontend Transport; Mon,
 20 Apr 2026 21:27:22 +0000
Received: from denue6es012.ebgroup.elektrobit.com (213.95.148.172) by
 CH2PEPF00000099.mail.protection.outlook.com (10.167.244.20) with Microsoft
 SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id
 15.20.9791.48 via Frontend Transport; Mon, 20 Apr 2026 21:27:22 +0000
Received: from ubuntu.localdomain (10.10.178.50) by
 denue6es012.ebgroup.elektrobit.com (10.243.160.140) with Microsoft SMTP
 Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id
 15.2.2562.35; Mon, 20 Apr 2026 23:27:18 +0200
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@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=elektrobit.com header.i="@elektrobit.com" header.h="From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck"; dkim=pass header.s=selector1 header.d=elektrobit.com header.i="@elektrobit.com" header.h="From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck"
ARC-Seal: i=2; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=pass;
 b=CDNulQrxNsjxFy9qlfTSXHPMaBkGhQPEflycUpWxCCFvXHWQJvS0YszlxMJIwQrWJVjVl2dmhY7Kdl/l/yXn2UN/a387gCs0gV5MNset0XGflk5wNYY7aGpaSW4tGzhAc/P9nZ+Tn3qEiVvSRihpUDI7guznrskJ6YfUjYbwKeX1Y7ewmUWKvKqq6qw3f2IbZ1xVF9jajqm3JlcBQb7wolWQ3rjYPbt6Z84a5CcEBXOa9dWObCQB9ePS7tLk8a0sf8FeX4zftJSn7KDQhI2reFR3F96/X37EINKid/UI4d7WD9NAWIPUIiZm+c1aEvuqE+A4YUgI+fP1ms97HEhrBg==
ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com;
 s=arcselector10001;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1;
 bh=P99iOPiPAd4fedD5w4a0EUrWRqEzpWZn2WgFGdQXXEw=;
 b=FDk8juPvExD1MTFRpWf0FkhMU2/fFvE4ebupIHHLoXg++HaNoGKZW2ELBC3gJ0nAuyVwJt4R5oHo7COmb6iiYN64HCv82Qmlcd8rPlohx/yeZF0BHANjqwPSDkU+GpmnBHB8p3T61jGc3MkIsjnaje3JoQ+gq7crdr3MG810bBQJOJZCOUBzS8l8stu50z1ZcnbTfhWaGCXwhtMuia38Rr8uwfaho+P/q6YGhJXTlo+NO8jHxHSB4wqIAxHMIBLx8D5Zo44XA3SchmLPL78S3fhTF5Lrkr3HGYsFwBye5Rgzz6jJudp7v+SG/03VLTm0VTxfU1vDFJmkULai+5w5hQ==
ARC-Authentication-Results: i=2; mx.microsoft.com 1; spf=pass (sender ip is
 40.93.1.105) smtp.rcpttodomain=amd.com smtp.mailfrom=elektrobit.com;
 dmarc=pass (p=quarantine sp=none pct=100) action=none
 header.from=elektrobit.com; dkim=pass (signature was verified)
 header.d=elektrobit.com; arc=pass (0 oda=1 ltdi=1
 spf=[1,1,smtp.mailfrom=elektrobit.com]
 dmarc=[1,1,header.from=elektrobit.com])
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=elektrobit.com;
 s=selector1;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck;
 bh=P99iOPiPAd4fedD5w4a0EUrWRqEzpWZn2WgFGdQXXEw=;
 b=IMf5xiJxu0WvtcqPyokpu/SEzr0IkBf0hOwVyjR/x+OPUQbLUevSqpux3djXhwllKJ2UEo0+9/bCmZEcyb4Xmk/4T20jhs+OTXN9i6ZdhUKG9zk10xIqUa8OOfviBgJc8EKW/ihJ4/rfQVRc4i7NBVkLUPyMHJQYwkQf9g8eO3s=
X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 40.93.1.105)
 smtp.mailfrom=elektrobit.com; dkim=pass (signature was verified)
 header.d=elektrobit.com;dmarc=pass action=none header.from=elektrobit.com;
Received-SPF: Pass (protection.outlook.com: domain of elektrobit.com
 designates 40.93.1.105 as permitted sender) receiver=protection.outlook.com;
 client-ip=40.93.1.105; helo=BYAPR08CU003.outbound.protection.outlook.com;
 pr=C
ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none;
 b=aQmTHsz3h4lrisQzCeNzDcyA6Kf3OWwW+cMV7vNi9A2Co1aoqNV+UfWWJe3sqk9Bg+mz4nh2TGy7xQUhkP6512h+Cw9ln2Jc495ol/2WeuOeNplbMK9YZyE493QCkZl49dVOsI5a1t8hwDgiiSE6RW3lWcOm/L8RnFc2ZZVkLTTC34JJvW2DOuOttMGMYfhmeaKLLM9ygdZp02PwNtI0+4FG4+o7U4R7r9w1fP04aRf+PlAAbCibDL1pCptwjYpHRueKF5Ivhrs0dhvCWwZKeXCQdn6bb5JnB3j77UkfAdhSc+huDc5APr0FYnax6inTJTFXmSQEFRZeSzYUXVQrnw==
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com;
 s=arcselector10001;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1;
 bh=P99iOPiPAd4fedD5w4a0EUrWRqEzpWZn2WgFGdQXXEw=;
 b=J5SqJPAkkAxH8ravMjM/vKnmJgbImhpmyydBnwnwRb+OA1hf5sDMz2c2lUU4iLyOze7MiDeZ/Tb3d/Jq0VVM8UTFq4RC84MDWWCENYKYUNpkfNqxS6YG14153jTEwpitFgZqspigLkQhBPDONKEKYMJlop5dpR5bvcl6BUmu0tVujNcm4lKVc0o/9F5xWF0Wf/mCs96LlAsjLaHz1aKSSuVIHNw5gDqqUuxirBcEYJ6X4nBGddIvFdO9WB4ahp+7/8EiZ3gb1g5qecFAtNClweanX4RV8Eq75kfGHgD3SRoSlaJPfuM/9mbgIwupbOOx7UMMeakJ+1/cw2IjUMYodg==
ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass (sender ip is
 213.95.148.172) smtp.rcpttodomain=lists.xenproject.org
 smtp.mailfrom=elektrobit.com; dmarc=pass (p=quarantine sp=none pct=100)
 action=none header.from=elektrobit.com; dkim=none (message not signed);
 arc=none (0)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=elektrobit.com;
 s=selector1;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck;
 bh=P99iOPiPAd4fedD5w4a0EUrWRqEzpWZn2WgFGdQXXEw=;
 b=IMf5xiJxu0WvtcqPyokpu/SEzr0IkBf0hOwVyjR/x+OPUQbLUevSqpux3djXhwllKJ2UEo0+9/bCmZEcyb4Xmk/4T20jhs+OTXN9i6ZdhUKG9zk10xIqUa8OOfviBgJc8EKW/ihJ4/rfQVRc4i7NBVkLUPyMHJQYwkQf9g8eO3s=
X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 213.95.148.172)
 smtp.mailfrom=elektrobit.com; dkim=none (message not signed)
 header.d=none;dmarc=pass action=none header.from=elektrobit.com;
Received-SPF: Pass (protection.outlook.com: domain of elektrobit.com
 designates 213.95.148.172 as permitted sender)
 receiver=protection.outlook.com; client-ip=213.95.148.172;
 helo=denue6es012.ebgroup.elektrobit.com; pr=C
From: Rose Spangler <Rose.Spangler@elektrobit.com>
To: <xen-devel@lists.xenproject.org>
CC: Rose Spangler <Rose.Spangler@elektrobit.com>, Jan Beulich
	<jbeulich@suse.com>, Andrew Cooper <andrew.cooper3@citrix.com>,
	=?UTF-8?q?Roger=20Pau=20Monn=C3=A9?= <roger.pau@citrix.com>, 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: [RFC PATCH v6 14/43] altp2m: Move altp2m_{init,teardown} to common code
Date: Mon, 20 Apr 2026 17:26:19 -0400
Message-ID: <20260420212648.208640-7-Rose.Spangler@elektrobit.com>
X-Mailer: git-send-email 2.34.1
In-Reply-To: <20260420212648.208640-1-Rose.Spangler@elektrobit.com>
References: <20260420212648.208640-1-Rose.Spangler@elektrobit.com>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit
Content-Type: text/plain
X-Originating-IP: [10.10.178.50]
X-ClientProxiedBy: denue6es013.ebgroup.elektrobit.com (10.243.160.141) To
 denue6es012.ebgroup.elektrobit.com (10.243.160.140)
X-EOPAttributedMessage: 1
X-MS-Exchange-SkipListedInternetSender:
 ip=[213.95.148.172];domain=denue6es012.ebgroup.elektrobit.com
X-MS-TrafficTypeDiagnostic:
	CH2PEPF00000099:EE_|BN8PR08MB6305:EE_|BN1PEPF00005FFD:EE_|CYXPR08MB9429:EE_
X-MS-Office365-Filtering-Correlation-Id: 7411b43f-2eb3-48e4-bde1-08de9f23a023
X-SM-outgoing: yes
X-MS-Exchange-SenderADCheck: 1
X-MS-Exchange-AntiSpam-Relay: 0
X-Microsoft-Antispam-Untrusted:
 BCL:0;ARA:13230040|704160111799003|376014|36860700016|82310400026|1800799024|56012099003|18002099003|22082099003;
X-Microsoft-Antispam-Message-Info-Original:
 =?us-ascii?Q?WubXBLzmLrJej7fanINaxxcWfgqqS1OY8JElSpD7csk1q8uLhcXIVvPe6Qmj?=
 =?us-ascii?Q?CDNNZ1sJz6z6sofCkBjuGkvrr9KUgq/qx9v81ISpr1z7WSDdPynJPaovSiso?=
 =?us-ascii?Q?z7/bB8/fDxIqxAjPxx3oJ0TD4VFcg6YRnHK3ylVI3W2BzKLwNfyVx7JkJUbx?=
 =?us-ascii?Q?QkMKY5OYWl8bIaWUd7XxBBv5MsLHG3m0vNi3yYxgAdug9PqC7nepGV6jy8XU?=
 =?us-ascii?Q?VNGytKQmZoFpE4n143XvqjfX6x+jkI5FpBf3+J5DMZIbWUQCyenMVowbOT/3?=
 =?us-ascii?Q?bFc0tU3yPAqW4pjNV/dSTVW2MyTV48lGL+QGxnnWJrXnsL1Vavnt9IQ/fYwZ?=
 =?us-ascii?Q?D6CU6rS6cf18xrJxCAIobw+j1/p0t/IaOjNZP15hX07LG2j+rS4iwM1kzb+P?=
 =?us-ascii?Q?khsidFFLcqE6AEJ6f1RrQB12uWBUPzXnsAJkb0neoN276n0AFmjNDpYbjs9W?=
 =?us-ascii?Q?1VWvHP5jngpwdcTl6LEjXpOk0g2vyZT7l0ONSNISbfumIm4b7QKxZNeXltPX?=
 =?us-ascii?Q?pdolQsI2i48IOnQNqN4AkvB65hHqZ5er4+BOlPOE5/mnHQxJIVeVskto9abD?=
 =?us-ascii?Q?DUgeJeK77IvNuLWMlSvx02N9d/o1JTXP49zM4facbLuN96sv5jQf+tAEgZF3?=
 =?us-ascii?Q?/qJk1SlslHXZ/9V+CwtBQPrWX/qV10KMRRFZBZOegbEGx9w8uDP334z8MlDr?=
 =?us-ascii?Q?L3L0ojmPUoWo+0KHkWLS10PXKP+D2+mpMipCqtG1wPM7GRZYTmsNk+UwFAJc?=
 =?us-ascii?Q?gjjhK9LWXIbRQIq3XCW+Gh6/Yo9G2NzCtIuDxGSFa0msFvYNlVlXn+f3LT+n?=
 =?us-ascii?Q?WdvJsN4b/Oywu6+ryBT3sZdxU1LUUgkTLs8FMF9JtPcX8bhE4NgxUS16DE3+?=
 =?us-ascii?Q?Hc6oSNdKphpTCpjPiuVlob7hInzV7Sr8/DfTVDS8+cgne96uUD7pfBUSboGJ?=
 =?us-ascii?Q?0YXrHTDFepzq9ZPAY7VNVVTiXU1IYSRWRYQU2Jk/pK1C7AFJCleaK2Gw6Uv9?=
 =?us-ascii?Q?353Cmnv/9OYN5bqeFmQNu8tuLGlWV3EuZzDFCsHXt5XIEVr12u5C3v6SsAr6?=
 =?us-ascii?Q?eOPe7JC1nr6GmOe7pAdHF91vic6r4NOOh7keE+RiFSKc464ELpOHjlSVibLk?=
 =?us-ascii?Q?XKlPksGKsI7xp1bfRbOpyYBYjrdbKAXxRXGXgmJcSWtsnor5xO8OX/2mHmop?=
 =?us-ascii?Q?/exiVW63YkkIvMFWZ2Bw/cCMHpYaXhugTeb+FQ=3D=3D?=
X-Forefront-Antispam-Report-Untrusted:
 CIP:213.95.148.172;CTRY:DE;LANG:en;SCL:1;SRV:;IPV:CAL;SFV:NSPM;H:denue6es012.ebgroup.elektrobit.com;PTR:eth1-fw1-nbg6.eb.noris.de;CAT:NONE;SFS:(13230040)(704160111799003)(376014)(36860700016)(82310400026)(1800799024)(56012099003)(18002099003)(22082099003);DIR:OUT;SFP:1102;
X-Exchange-RoutingPolicyChecked:
 NK5IrE/ewp4VvGisBR4/g3rY40GehPVgQi5BZJr8TRSDzZDrzqx2LfDXOeda+8wd39qhjwvsq8JSySq3S4hDNABllnTLfOM33K3Vbg265lz6Lc18y/H6HN25/wlNqMLpJvaH3XHhXGZTmbZE/CrK3pHUFcerLmMwb7GeFgDw/BrN6apARIEPPmh2AvsD7Ss5Yt1VPIw4tY7heIasM2wnhtRB7z/4h5Ob+shI5kxzrPk88EbCjrHKeKwN/m43hNptRTpk+lrrxktOtJN9c6Sv4ImJPQeHbF4iy+CHGOVqp/MoZtdHHghW+7KtTLLKNJ72Lfi+2UqUMJEM6vIYnbTQNw==
X-MS-Exchange-Transport-CrossTenantHeadersStamped: BN8PR08MB6305
X-MS-Exchange-SkipListedInternetSender:
 ip=[40.93.1.105];domain=BYAPR08CU003.outbound.protection.outlook.com
X-MS-Exchange-ExternalOriginalInternetSender:
 ip=[40.93.1.105];domain=BYAPR08CU003.outbound.protection.outlook.com
X-MS-Exchange-Transport-CrossTenantHeadersStripped:
 BN1PEPF00005FFD.namprd05.prod.outlook.com
X-MS-PublicTrafficType: Email
X-MS-Office365-Filtering-Correlation-Id-Prvs:
	8ff69729-e99c-4283-754a-08de9f239c39
X-Microsoft-Antispam:
	BCL:0;ARA:13230040|704160111799003|82310400026|14060799003|35042699022|156008|36860700016|376014|1800799024|22082099003|56012099003|18002099003;
X-Microsoft-Antispam-Message-Info:
	=?us-ascii?Q?QgGTwHjA4GN2kne2JQzfEDzzOeCKr1x4+VF2kPJaCKdobaIe5Fn3X5g5FAR3?=
 =?us-ascii?Q?rTAegqzHWBBxGimbLgaunoxM0drvflkLV5whi8qwXbMgwgdRmSIs4I0gShAx?=
 =?us-ascii?Q?oScqlLeixQE4eWHn4WcBHEfQUIhjLNljxxvHSGoFhZywGjea3m+NU+i8KM04?=
 =?us-ascii?Q?xj8045uEy010cD/xPPTTOLWQNNnZ+9yXgkTBdmjxs4OEMGDcyML8xrdQinVB?=
 =?us-ascii?Q?I4ob+0yzMzKD7h7JmVb7psHM7g3u14r8ZhItV5NrmPX/Qw+K3RFJ52XCTBcU?=
 =?us-ascii?Q?FQfC7neSv+oOfcN8sHbnXE41/dG9YjfhNPTrWBFQFpwvoSZix1oasq6Gtgr3?=
 =?us-ascii?Q?CVdevAFPbqoEP4WX952cCzj+vG8xUP4rLJrdFCXVZ9HcjOD1fF3JP+w1OI6r?=
 =?us-ascii?Q?u8uLA+YFHOTZjJ6ArE+FAvutRdCVFWtiMM4JpVTKBy+W3nx0cPfQdp4jLDfs?=
 =?us-ascii?Q?uUdshVWC5QpmK7iWWlCXh7R0DkXmwjLjq14dIHWlPVMQ4ULZgr6ENvpl/tDn?=
 =?us-ascii?Q?3yHS090ROPmloCnoR0U9sJXkRA03aRvp4kcMAgYN4wC5TfT4DA4A8pDe3PkU?=
 =?us-ascii?Q?YboZG5fZoidPtvFbO7HydoteUaDkh2WKbkihWRz71ZReHJXBFxmjloddwqwr?=
 =?us-ascii?Q?5OKPAjR7Hef3sO92DVRTOIJmywlBt+pnDPvs0eyPVjNvWuwAG+HEEz8SDZTc?=
 =?us-ascii?Q?PpBCpqRA9SJffJ/Ti/jBwBBx/uvaw2ru9ke2B6aPlPK4yj94Q9OqL/kVMusD?=
 =?us-ascii?Q?29Y1U7pz7J46M7XoepaPhqB+8Hp+G4cGMgAsCFPsBWGcp4ge8vIw4bK/PYn+?=
 =?us-ascii?Q?smhE5rvesAZSwGznEkLPoF4gTqd0oX/B9aHT2KTVW26wZvhAnfz5cVBdsuyd?=
 =?us-ascii?Q?elB2/hbJMxZ4KDzH0tIr2USE3pnlDc9ZsBTWTKUsLWrtLMHoz/oId/skmVoE?=
 =?us-ascii?Q?EXJ5hwHpE1p0nlHR1jSeL/1TSxh2H2Yx8w5eNQ2/LOygsgtBEVxl1J1cHy31?=
 =?us-ascii?Q?4yFUenQFidnb9FhXp3Z4oneZxElTI2IP3t3P1Y0OBNzQfeP6wJoTW0ae9Y36?=
 =?us-ascii?Q?AzKPtXaKXbkwvGrlLO7bt4xZIkqtIE2QtH1r8nbev6o3X7vB7RRIx6jp6da9?=
 =?us-ascii?Q?TkXHol100rnp8o4qR02VydThXK+/2RDlnpaW6vdYitynjO639mxjCEGr1EMl?=
 =?us-ascii?Q?6Kv6S3yAxvQqKxJsuXaH5A9A4xexWLHG8GRgqw=3D=3D?=
X-Forefront-Antispam-Report:
	CIP:4.79.107.243;CTRY:US;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:BYAPR08CU003.outbound.protection.outlook.com;PTR:mail-byapr08cu00301.outbound.protection.outlook.com;CAT:NONE;SFS:(13230040)(704160111799003)(82310400026)(14060799003)(35042699022)(156008)(36860700016)(376014)(1800799024)(22082099003)(56012099003)(18002099003);DIR:OUT;SFP:1102;
X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1
X-MS-Exchange-AntiSpam-MessageData-0:
	Cb/QQt77F9iwD9oyXSC53u8uI4GQxV6gJYaUZwkJ1mG4uYEoZ8g4o86RjykDitVp3U0FNoqOZ3rjeasun7Ulzygj56xoKVrubbXSGzVrxQOk2U1+LPdeIxDlD58JwTfDQdGL98MU2Ma2FYwy5J2ScTc7YHVzePQsTcRA5+8/dKRhHpUrvnAMLWQ0t1yPnYtMmpoJL6lXT4RaFS09R9UM7SWXstVyTjiC5v3m+ljlrSXuv8FaqhLTET5uQzExaj3i8Emvlvl1ocyZhJncSCTpiXrQWDS0aRD7FL1ZQrHxRwUNzHeDj6KrZ7TIokKd0ieTyAYzReMl00JdTohW82CVYq1z9N+f9EyJGynWfJGZPhdCQoWVQQQbPbx8Gd5kiEryQ8Ig9UO9QPUs7MoYNj0n6kpgGd+B4BmEqK1FxYRb0JpJDbBvuAk/2azOaJJgDRpG
X-OriginatorOrg: elektrobit.com
X-MS-Exchange-CrossTenant-OriginalArrivalTime: 20 Apr 2026 21:27:28.9071
 (UTC)
X-MS-Exchange-CrossTenant-Network-Message-Id: 7411b43f-2eb3-48e4-bde1-08de9f23a023
X-MS-Exchange-CrossTenant-Id: e764c36b-012e-4216-910d-8fd16283182d
X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=e764c36b-012e-4216-910d-8fd16283182d;Ip=[4.79.107.243];Helo=[usbth1es003.ebgroup.elektrobit.com]
X-MS-Exchange-CrossTenant-AuthAs: Internal
X-MS-Exchange-CrossTenant-AuthSource: TreatMessagesAsInternal-BN1PEPF00005FFD.namprd05.prod.outlook.com
X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem
X-MS-Exchange-Transport-CrossTenantHeadersStamped: CYXPR08MB9429
X-purgate-ID: tlsNG-c1860d/1776720455-38159DB1-79DDF673/0/0
X-purgate-type: clean
X-purgate-size: 5997

This commit moves the init and teardown routines into common code. The
functions are gated by CONFIG_X86, so there is effectively no difference
despite common code normally being compiled for ARM.

This commit contains only renames/code movement, and no functional change is intended.

This is commit 3/12 of the altp2m_init/altp2m_teardown routines phase.

Signed-off-by: Rose Spangler <Rose.Spangler@elektrobit.com>
---
v6: Introduced this patch.
---
 xen/arch/x86/include/asm/altp2m.h |  8 -----
 xen/arch/x86/mm/altp2m.c          | 45 ----------------------------
 xen/arch/x86/mm/p2m-basic.c       |  1 +
 xen/common/altp2m.c               | 49 +++++++++++++++++++++++++++++++
 xen/include/xen/altp2m.h          | 13 ++++++++
 5 files changed, 63 insertions(+), 53 deletions(-)

diff --git a/xen/arch/x86/include/asm/altp2m.h b/xen/arch/x86/include/asm/altp2m.h
index 7cff40beb7c6..13017525a62f 100644
--- a/xen/arch/x86/include/asm/altp2m.h
+++ b/xen/arch/x86/include/asm/altp2m.h
@@ -97,12 +97,6 @@ static inline bool altp2m_set_altp2m(struct vcpu *v, unsigned int idx)
     return true;
 }
 
-/* Initialize altp2m views */
-int altp2m_init(struct domain *d);
-
-/* Free altp2m views */
-void altp2m_teardown(struct domain *d);
-
 /* Switch alternate p2m for a single vcpu */
 bool altp2m_switch_vcpu_by_id(struct vcpu *v, unsigned int idx);
 
@@ -184,8 +178,6 @@ static inline int _altp2m_get_effective_entry(struct p2m_domain *ap2m,
         _altp2m_get_effective_entry(ap2m, gfn, mfn, t, a)
 
 /* Only declaration is needed. DCE will optimise it out when linking. */
-int altp2m_init(struct domain *d);
-void altp2m_teardown(struct domain *d);
 struct p2m_domain *altp2m_get_altp2m(struct vcpu *v);
 bool altp2m_set_altp2m(struct vcpu *v, unsigned int idx);
 uint16_t altp2m_vcpu_idx(const struct vcpu *v);
diff --git a/xen/arch/x86/mm/altp2m.c b/xen/arch/x86/mm/altp2m.c
index 371bf3f0b8d4..46374373848d 100644
--- a/xen/arch/x86/mm/altp2m.c
+++ b/xen/arch/x86/mm/altp2m.c
@@ -123,51 +123,6 @@ void altp2m_vcpu_disable_ve(struct vcpu *v)
     }
 }
 
-int altp2m_init(struct domain *d)
-{
-    unsigned int i;
-    struct p2m_domain *p2m;
-    struct p2m_domain *hostp2m = p2m_get_hostp2m(d);
-
-    altp2m_lock_init(d);
-    d->altp2m_p2m = xvzalloc_array(struct p2m_domain *, d->nr_altp2m);
-
-    if ( !d->altp2m_p2m )
-        return -ENOMEM;
-
-    for ( i = 0; i < d->nr_altp2m; i++ )
-    {
-        d->altp2m_p2m[i] = p2m = p2m_init_one(d);
-        if ( p2m == NULL )
-        {
-            altp2m_teardown(d);
-            return -ENOMEM;
-        }
-        p2m->p2m_class = p2m_alternate;
-        p2m->access_required = hostp2m->access_required;
-        _atomic_set(&p2m->active_vcpus, 0);
-    }
-
-    return 0;
-}
-
-void altp2m_teardown(struct domain *d)
-{
-    unsigned int i;
-    struct p2m_domain *p2m;
-
-    for ( i = 0; i < d->nr_altp2m; i++ )
-    {
-        if ( !d->altp2m_p2m[i] )
-            continue;
-        p2m = d->altp2m_p2m[i];
-        d->altp2m_p2m[i] = NULL;
-        p2m_free_one(p2m);
-    }
-
-    XVFREE(d->altp2m_p2m);
-}
-
 int altp2m_get_effective_entry(struct p2m_domain *ap2m, gfn_t gfn, mfn_t *mfn,
                                p2m_type_t *t, p2m_access_t *a,
                                bool prepopulate)
diff --git a/xen/arch/x86/mm/p2m-basic.c b/xen/arch/x86/mm/p2m-basic.c
index 433e7d08b78f..67cef5d2b6ef 100644
--- a/xen/arch/x86/mm/p2m-basic.c
+++ b/xen/arch/x86/mm/p2m-basic.c
@@ -11,6 +11,7 @@
  * Parts based on earlier work by Michael A Fetterman, Ian Pratt et al.
  */
 
+#include <xen/altp2m.h>
 #include <xen/event.h>
 #include <xen/types.h>
 #include <asm/altp2m.h>
diff --git a/xen/common/altp2m.c b/xen/common/altp2m.c
index 3a3283f0860a..cda653b713f0 100644
--- a/xen/common/altp2m.c
+++ b/xen/common/altp2m.c
@@ -2,8 +2,10 @@
 #include <xen/altp2m.h>
 #include <xen/guest_access.h>
 #include <xen/vm_event.h>
+#include <xen/xvmalloc.h>
 
 #include <asm/altp2m.h>
+#include <asm/p2m.h>
 
 #include <public/hvm/params.h>
 
@@ -13,6 +15,53 @@
 #include <asm/hvm/nestedhvm.h>
 #endif
 
+#if CONFIG_X86
+int altp2m_init(struct domain *d)
+{
+    unsigned int i;
+    struct p2m_domain *p2m;
+    struct p2m_domain *hostp2m = p2m_get_hostp2m(d);
+
+    altp2m_lock_init(d);
+    d->altp2m_p2m = xvzalloc_array(struct p2m_domain *, d->nr_altp2m);
+
+    if ( !d->altp2m_p2m )
+        return -ENOMEM;
+
+    for ( i = 0; i < d->nr_altp2m; i++ )
+    {
+        d->altp2m_p2m[i] = p2m = p2m_init_one(d);
+        if ( p2m == NULL )
+        {
+            altp2m_teardown(d);
+            return -ENOMEM;
+        }
+        p2m->p2m_class = p2m_alternate;
+        p2m->access_required = hostp2m->access_required;
+        _atomic_set(&p2m->active_vcpus, 0);
+    }
+
+    return 0;
+}
+
+void altp2m_teardown(struct domain *d)
+{
+    unsigned int i;
+    struct p2m_domain *p2m;
+
+    for ( i = 0; i < d->nr_altp2m; i++ )
+    {
+        if ( !d->altp2m_p2m[i] )
+            continue;
+        p2m = d->altp2m_p2m[i];
+        d->altp2m_p2m[i] = NULL;
+        p2m_free_one(p2m);
+    }
+
+    XVFREE(d->altp2m_p2m);
+}
+#endif /* CONFIG_X86 */
+
 /*
  * altp2m operations are envisioned as being used in several different
  * modes:
diff --git a/xen/include/xen/altp2m.h b/xen/include/xen/altp2m.h
index be627152668a..85ef22c2b29e 100644
--- a/xen/include/xen/altp2m.h
+++ b/xen/include/xen/altp2m.h
@@ -8,6 +8,19 @@
 
 #include <public/hvm/hvm_op.h>
 
+/*
+ * Common alternate p2m declarations that need to be visible
+ * regardless of CONFIG_ALTP2M
+ */
+
+#ifdef CONFIG_X86
+/* Initialize altp2m views */
+int altp2m_init(struct domain *d);
+
+/* Free altp2m views */
+void altp2m_teardown(struct domain *d);
+#endif
+
 #ifdef CONFIG_ALTP2M
 
 /* Alternate p2m HVM on/off per domain */
-- 
2.34.1



From xen-devel-bounces@lists.xenproject.org Mon Apr 20 21:27:41 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 20 Apr 2026 21:27:41 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1287497.1567935 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wEw9d-000229-Br; Mon, 20 Apr 2026 21:27:41 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1287497.1567935; Mon, 20 Apr 2026 21:27: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 1wEw9d-000221-8v; Mon, 20 Apr 2026 21:27:41 +0000
Received: by outflank-mailman (input) for mailman id 1287497;
 Mon, 20 Apr 2026 21:27:39 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <Rose.Spangler@elektrobit.com>) id 1wEw9a-0001ki-WF
 for xen-devel@lists.xenproject.org; Mon, 20 Apr 2026 21:27:39 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wEw9a-009jup-D9
 for xen-devel@lists.xenproject.org; Mon, 20 Apr 2026 23:27:38 +0200
Received: from [10.42.69.1] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <Rose.Spangler@elektrobit.com>)
 id 69e699b8-5cb7-0a2a0a5109dd-0a2a4501a8ec-40
 for <xen-devel@lists.xenproject.org>; Mon, 20 Apr 2026 23:27:38 +0200
Received: from [40.93.198.87]
 (helo=CY7PR03CU001.outbound.protection.outlook.com)
 by tlsNG-d62444.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.1)
 (envelope-from <Rose.Spangler@elektrobit.com>)
 id 69e69a48-c1f2-0a2a45010019-285dc657fa23-3
 for <xen-devel@lists.xenproject.org>; Mon, 20 Apr 2026 23:27:38 +0200
Received: from CYXPR03CA0033.namprd03.prod.outlook.com (2603:10b6:930:d2::10)
 by PH0PR08MB9861.namprd08.prod.outlook.com (2603:10b6:510:333::17)
 with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9818.32; Mon, 20 Apr
 2026 21:27:31 +0000
Received: from CY4PEPF0000EDD6.namprd03.prod.outlook.com
 (2603:10b6:930:d2:cafe::2d) by CYXPR03CA0033.outlook.office365.com
 (2603:10b6:930:d2::10) with Microsoft SMTP Server (version=TLS1_3,
 cipher=TLS_AES_256_GCM_SHA384) id 15.20.9791.48 via Frontend Transport; Mon,
 20 Apr 2026 21:27:30 +0000
Received: from usbth1es003.ebgroup.elektrobit.com (4.79.107.243) by
 CY4PEPF0000EDD6.mail.protection.outlook.com (10.167.241.202) with Microsoft
 SMTP Server (version=TLS1_3, cipher=TLS_AES_256_GCM_SHA384) id 15.20.9791.48
 via Frontend Transport; Mon, 20 Apr 2026 21:27:30 +0000
Received: from usbth1es003 (localhost [127.0.0.1])
 by usbth1es003.ebgroup.elektrobit.com (Postfix) with SMTP id 4fzz8y1MtRz1wdR; 
 Mon, 20 Apr 2026 14:27:30 -0700 (PDT)
Received: from CH4PR07CU001.outbound.protection.outlook.com
 (mail-ch4pr07cu00104.outbound.protection.outlook.com [40.93.20.100])
 (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)
 key-exchange secp384r1 server-signature RSA-PSS (2048 bits) server-digest
 SHA256) (No client certificate requested)
 by usbth1es003.ebgroup.elektrobit.com (Postfix) with ESMTPS;
 Mon, 20 Apr 2026 14:27:29 -0700 (PDT)
Received: from CH5PR05CA0017.namprd05.prod.outlook.com (2603:10b6:610:1f0::7)
 by BL4PR08MB10598.namprd08.prod.outlook.com (2603:10b6:208:591::17)
 with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9818.32; Mon, 20 Apr
 2026 21:27:26 +0000
Received: from CH2PEPF00000099.namprd02.prod.outlook.com
 (2603:10b6:610:1f0:cafe::c7) by CH5PR05CA0017.outlook.office365.com
 (2603:10b6:610:1f0::7) with Microsoft SMTP Server (version=TLS1_3,
 cipher=TLS_AES_256_GCM_SHA384) id 15.20.9791.48 via Frontend Transport; Mon,
 20 Apr 2026 21:27:25 +0000
Received: from denue6es012.ebgroup.elektrobit.com (213.95.148.172) by
 CH2PEPF00000099.mail.protection.outlook.com (10.167.244.20) with Microsoft
 SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id
 15.20.9791.48 via Frontend Transport; Mon, 20 Apr 2026 21:27:25 +0000
Received: from ubuntu.localdomain (10.10.178.50) by
 denue6es012.ebgroup.elektrobit.com (10.243.160.140) with Microsoft SMTP
 Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id
 15.2.2562.35; Mon, 20 Apr 2026 23:27:21 +0200
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@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=elektrobit.com header.i="@elektrobit.com" header.h="From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck"; dkim=pass header.s=selector1 header.d=elektrobit.com header.i="@elektrobit.com" header.h="From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck"
ARC-Seal: i=2; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=pass;
 b=MXt+DkTE064C1EJ9Gd99C9A4x4KZ8Xr15whbS89sjXE1NDFDUjN6bTVAmZoYaFE8goYccAeNhLHBFwmY/fC3zgrV0MmgBvwSB6prwdsdnDPaS6RdyYMp3Y5F+L2f9E1XaYZZTIeoZmK61ONbWJ+DWKeH65m2nnS+6MJPn/+8o79wuybdkeYrTQSHr9WuUCmLV2dfD52bIEoT99wjQ79qsUNaOMd8ng2R3aI00qKDMeBdt/fx1rrBAMbJgkENe3TmvqXQm4B199uQdQjmNheEb46KytLuV+/ectoSkISQpdYS7eZyW19jMCMW4nk1rjQJMhqoFu2g2x5XzwdGSmbg5g==
ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com;
 s=arcselector10001;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1;
 bh=yIbI7Z0q3lXJU+nOYvRW36Lh6wKWhfwhF7qmIzuTXnQ=;
 b=EDeAPXGMnkKoLchdQwvasDjQUYWrwn+PYy56y8c05aXQbuQ4r9dKz6D3c5UIQs+gcJhPau0U8e6TrbeOcW2Mk/faeJBb7L+f85DGlw70+P/mWl2i7hocEVFFlzFIGr9YLLIJm8KIF4GDoXmMvXynLoWDTWrGwqBcWAJqtv5PFdEVHLWdpd0gKH+earet4MCKShZGGchTuTIjy44dKIG6IyFoUvbzOoL7jurNBsQhaCVgdhU681N6UH9o/JrCiV2xzXISVBT+lpzV8pxDLwifgdVDZFHn+ounecO7RFUExHvGIbeS+riX15r54ndOeCl0QsbPTyEeDtrg2GgJHtwgTQ==
ARC-Authentication-Results: i=2; mx.microsoft.com 1; spf=pass (sender ip is
 40.93.20.100) smtp.rcpttodomain=amd.com smtp.mailfrom=elektrobit.com;
 dmarc=pass (p=quarantine sp=none pct=100) action=none
 header.from=elektrobit.com; dkim=pass (signature was verified)
 header.d=elektrobit.com; arc=pass (0 oda=1 ltdi=1
 spf=[1,1,smtp.mailfrom=elektrobit.com]
 dmarc=[1,1,header.from=elektrobit.com])
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=elektrobit.com;
 s=selector1;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck;
 bh=yIbI7Z0q3lXJU+nOYvRW36Lh6wKWhfwhF7qmIzuTXnQ=;
 b=ab4jTs6bKH+CeLpBl4CEYtLc1JdhOiEVhSFGe3hBySKmdGOHp8231kY+JzTWhIQ4JtR67b+jBn3BGG+EpWZ4GDKBC+3mdKcmiAak+uCXHzNr1Br886FOv+8JlRrsPikA+IYnmSUSFinlOAl0bEirZUIeTeDTCHhhuiBrEVzk+UA=
X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 40.93.20.100)
 smtp.mailfrom=elektrobit.com; dkim=pass (signature was verified)
 header.d=elektrobit.com;dmarc=pass action=none header.from=elektrobit.com;
Received-SPF: Pass (protection.outlook.com: domain of elektrobit.com
 designates 40.93.20.100 as permitted sender) receiver=protection.outlook.com;
 client-ip=40.93.20.100; helo=CH4PR07CU001.outbound.protection.outlook.com;
 pr=C
ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none;
 b=G0RWTjbRDhjlxt9xFFxEEikIGUEzAU0XNbUHJy1+TQwkK9KltA8zhtTbsDc1DXlmv1zsZK6FhJBvPUXvRofrC+wOMepK2Dg3lRTUY4fslAc58PsWrefs7mQFCKjsbmidBksq8fpq7QuSwtxd9vqbJvLGs5tsE8BmXaqXNc4taexviU4j/h6K12EvpiSnAA0BDJlqYZQTlk6eg6N+1MaLbMuh6D/fO4o+5KugUk4o8BUDvCENXkOpII6EfSZsor/bUL8YLZLA+cZEaafOWBMxpxgV9ElW8EO9TFGjONIYIQlV4B5L+h0JY5BsuRTcCQt1vEncPtmuJVjCcZhWki5H+w==
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com;
 s=arcselector10001;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1;
 bh=yIbI7Z0q3lXJU+nOYvRW36Lh6wKWhfwhF7qmIzuTXnQ=;
 b=msBeSfZVvAUw/prWOtedLZPadEuHEV/+79q0N6klBKWeMNS15g7j4Aq19ByzPgSEx49lwiB83wb5WpmfvcKY2P2pBVQ8UZpYVyhx4hVPYPbnJwgZHW6mMafHbhdgAFt76LS1ukQWNgIozL2FPbvaoZtaFXlEfZch4fZ9BU8biIIlH1UojPuar3ffJbItXasAt32BLrUrN62oJaJ7t8tBC+Yxiok7wMZNlwdbdQFqWCGecEweXPPv12Y8fFbk0jR4gM2Ap7Y5HaR+j/qAKFx5/HuO3HD+VxK+q8zH3Tbpu1hYUrtwVaFoeFdyZ8Z9c5dyoLQwOoWDrPKktBqjQdQbCg==
ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass (sender ip is
 213.95.148.172) smtp.rcpttodomain=lists.xenproject.org
 smtp.mailfrom=elektrobit.com; dmarc=pass (p=quarantine sp=none pct=100)
 action=none header.from=elektrobit.com; dkim=none (message not signed);
 arc=none (0)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=elektrobit.com;
 s=selector1;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck;
 bh=yIbI7Z0q3lXJU+nOYvRW36Lh6wKWhfwhF7qmIzuTXnQ=;
 b=ab4jTs6bKH+CeLpBl4CEYtLc1JdhOiEVhSFGe3hBySKmdGOHp8231kY+JzTWhIQ4JtR67b+jBn3BGG+EpWZ4GDKBC+3mdKcmiAak+uCXHzNr1Br886FOv+8JlRrsPikA+IYnmSUSFinlOAl0bEirZUIeTeDTCHhhuiBrEVzk+UA=
X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 213.95.148.172)
 smtp.mailfrom=elektrobit.com; dkim=none (message not signed)
 header.d=none;dmarc=pass action=none header.from=elektrobit.com;
Received-SPF: Pass (protection.outlook.com: domain of elektrobit.com
 designates 213.95.148.172 as permitted sender)
 receiver=protection.outlook.com; client-ip=213.95.148.172;
 helo=denue6es012.ebgroup.elektrobit.com; pr=C
From: Rose Spangler <Rose.Spangler@elektrobit.com>
To: <xen-devel@lists.xenproject.org>
CC: Sergej Proskurin <proskurin@sec.in.tum.de>, 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: [RFC PATCH v6 16/43] arm/p2m: Cosmetic fix - substitute _gfn(ULONG_MAX) for INVALID_GFN
Date: Mon, 20 Apr 2026 17:26:21 -0400
Message-ID: <20260420212648.208640-9-Rose.Spangler@elektrobit.com>
X-Mailer: git-send-email 2.34.1
In-Reply-To: <20260420212648.208640-1-Rose.Spangler@elektrobit.com>
References: <20260420212648.208640-1-Rose.Spangler@elektrobit.com>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit
Content-Type: text/plain
X-Originating-IP: [10.10.178.50]
X-ClientProxiedBy: denue6es013.ebgroup.elektrobit.com (10.243.160.141) To
 denue6es012.ebgroup.elektrobit.com (10.243.160.140)
X-EOPAttributedMessage: 1
X-MS-Exchange-SkipListedInternetSender:
 ip=[213.95.148.172];domain=denue6es012.ebgroup.elektrobit.com
X-MS-TrafficTypeDiagnostic:
	CH2PEPF00000099:EE_|BL4PR08MB10598:EE_|CY4PEPF0000EDD6:EE_|PH0PR08MB9861:EE_
X-MS-Office365-Filtering-Correlation-Id: 325ae214-868e-43c3-f237-08de9f23a110
X-SM-outgoing: yes
X-MS-Exchange-SenderADCheck: 1
X-MS-Exchange-AntiSpam-Relay: 0
X-Microsoft-Antispam-Untrusted:
 BCL:0;ARA:13230040|82310400026|36860700016|376014|1800799024|56012099003|22082099003|18002099003;
X-Microsoft-Antispam-Message-Info-Original:
 =?us-ascii?Q?l9ox6rGeTdQkeFWB3PQyHIWdzbSEQv43pr6ljcoCfuUMamZdB9zBLxAO5F47?=
 =?us-ascii?Q?og2Pa3MeuT6Fq7nuVujMpjEPN8UKRHj/uzu3XWwK1uNgZ2XEmuTr9HXpCVs8?=
 =?us-ascii?Q?vEFBK3gYoHZrR+sfHkV4wzK4TLkPcq/FIfXl0h77ilD5fdwlxeTY9LI+pRjB?=
 =?us-ascii?Q?hgG5sUpKzJuNQzXm17YWQ24AcFKgtZr1qKmx5xvihUsZ/+EIVfrFePpN62FI?=
 =?us-ascii?Q?M7Z+37DTmRxT0jgbX6nrgaELwvA9a1ntqUn8Tzqo3j3TAkQlgTRravwBAdtY?=
 =?us-ascii?Q?fjloUecNaDBpc83b22Mtr0ieku2SGjEco0BwyPRTJnA0ZlAiesO62T7KasTk?=
 =?us-ascii?Q?IWgyoAIL0LSNHE6fLTCZwlL6uKFiWucaWI8fzzENd8K7jucVIjlmF/xZ8LMZ?=
 =?us-ascii?Q?LJ4Zz8Dq4wKLOYGAZhtD8tNPisHOJnt/S2NzaxR7fQK2LxSeqqioqeo1lXP8?=
 =?us-ascii?Q?IlPHTGwk2LygVM0VPL6807qptdQ4IevZNf3oH0H36rjKMc8pUogdJrjlXVE3?=
 =?us-ascii?Q?9o8B4kUTF9L356CQBRISEuxYGAU0xPZUUAGFVx0ED3XAA6kAA/SPtKC/WXwC?=
 =?us-ascii?Q?L33jLWBV79J5QNpaRf0fPfU79PhIFBt0sQukNhRwHPz7sBVgqOsV2IW0XTPO?=
 =?us-ascii?Q?F/nWeTf5aROxa73DGPsuYbLSXAZ8w+qqIic5cUJEzRlux8WAika5nTDgYjhR?=
 =?us-ascii?Q?FGLZt/8mDjvNsuiBCTkp/pkkW/Hmh6Pu5xKtSCZwg8U1N0Oc0yLXa9itdkyS?=
 =?us-ascii?Q?iH06w5BkUP4RxSlbUCx+Ocw8WqZVua3T7MPY5SMleqo7V+bewo3jk9eYH1LW?=
 =?us-ascii?Q?Pkb6j1TjjJzwRFMsirq1CyhySz5jrbgwRd2Rg82kgsKw9fQ66iWhds4dBaYD?=
 =?us-ascii?Q?c2fPde6HZ3Oomoes2Xg2i0zJUcFBq6lw00T8H4p5Gid0Wyh/mzgCpHyvEkB0?=
 =?us-ascii?Q?bGz479aCOeTyMfrmwkH5O3tZBueSJ4cnPBDkFFVVW0J3sYQIJTvwuU+txSsU?=
 =?us-ascii?Q?PuZ8H0xmzFX6pFMQIGdPkLwnyD0dBUw3AtH0e0Ml6ysaAD5TeMpKal5KsyCH?=
 =?us-ascii?Q?0qzrKNi8ozCkTRDTCT3vGpcxPYh+PtD7fumVvmxrYstyd638VkbdSNnsT8Fn?=
 =?us-ascii?Q?QSgWRSW55h2RIgheMB6zNms7aeYJ8hXkE9WRED1znFLFtQZLWOFEXseSRrqh?=
 =?us-ascii?Q?llsu6SHNso70ck3aZiPffmTT8apZ9NESJH0AFHDY5eeuRTdeyr1qlB1V131E?=
 =?us-ascii?Q?ZdlGB+5dxa/KdbhEtGhb?=
X-Forefront-Antispam-Report-Untrusted:
 CIP:213.95.148.172;CTRY:DE;LANG:en;SCL:1;SRV:;IPV:CAL;SFV:NSPM;H:denue6es012.ebgroup.elektrobit.com;PTR:eth1-fw1-nbg6.eb.noris.de;CAT:NONE;SFS:(13230040)(82310400026)(36860700016)(376014)(1800799024)(56012099003)(22082099003)(18002099003);DIR:OUT;SFP:1102;
X-Exchange-RoutingPolicyChecked:
 nxb3aPT42He1WIh5FoIf1xSh/ScNQ6QHEJeTw4BobFuUIbQUUxtH8gUL++tRvLWW+pk4XQsf5Tt283aCUMcgAT7zCVniTIvSdbgB9fSn49/ybuXLPZHDH8AVgvhyM2HGKBhUFafhRaNbDdF8+v5CKvHV2wVLqYJFkgSoHAARKjZC5dPgpjbQbAsZThBX+1SgXBkXD9Y4GTNMX3Wn4NBze47HWmVPdWDGFH/I4kg9fzTKFfJIGDFiLVvJfMm+xKjcmsPfZ/qbqld2MnQuJeeCmvR6Ggf0GrWHIMtcN4+YLMaM5TwOEtrEqHW3w1r6Stx/NS6AA+1jrPRtj55cw4WzhA==
X-MS-Exchange-Transport-CrossTenantHeadersStamped: BL4PR08MB10598
X-MS-Exchange-SkipListedInternetSender:
 ip=[40.93.20.100];domain=CH4PR07CU001.outbound.protection.outlook.com
X-MS-Exchange-ExternalOriginalInternetSender:
 ip=[40.93.20.100];domain=CH4PR07CU001.outbound.protection.outlook.com
X-MS-Exchange-Transport-CrossTenantHeadersStripped:
 CY4PEPF0000EDD6.namprd03.prod.outlook.com
X-MS-PublicTrafficType: Email
X-MS-Office365-Filtering-Correlation-Id-Prvs:
	abae5b14-50e9-4750-96a6-08de9f239e25
X-Microsoft-Antispam:
	BCL:0;ARA:13230040|82310400026|14060799003|35042699022|156008|36860700016|376014|1800799024|56012099003|22082099003|18002099003;
X-Microsoft-Antispam-Message-Info:
	=?us-ascii?Q?Dtu1G1ibHWhnmG/loE9H9CrSCrej8CGC3xulJwmIW5BhtUg3tbM2cDrNHdVg?=
 =?us-ascii?Q?ds9ybjM19ixfCfBjEFcYSQeZ/aItSl0hBZrBR79F54C4DeAIxishIigtIJq+?=
 =?us-ascii?Q?+97y+rfsSBHt9IFhqloZoXPIqOpPsdXpoJSG3EqlO17XvAaAJ4qEDqYtPXtH?=
 =?us-ascii?Q?D8TfkcI/ESi8d8dgWraple5EdSyKVbr6ZlWwy2tIdekGLoARkOX45HA4YZjA?=
 =?us-ascii?Q?Ax/ZevteD5giRHyi4wQJHyuwKpwdSnyicmklNjkJyL/vIYkW4GnOHigAipHM?=
 =?us-ascii?Q?2SEBxp+8vSAmoLg+4ouTtFotBXyUh+LiJcRaT1Z5VzifuOtshDBrq9wU1rjy?=
 =?us-ascii?Q?gTXCsViorYMC5VAdgN+voPFtTUTDBw6FRnSJ0b8Utoneap96SHtfV83X8HB0?=
 =?us-ascii?Q?AHhi0bY0p9DCHmY5FYPKMprWHz+8kSJd/CPNu+wWGW6Ye5i82msVU7elai1V?=
 =?us-ascii?Q?CyQxMxiIyQeO2PSsYlxtYnjKJUwlMXWuhhmbu5cIDnmtEw8vHzCTmrqtUXmL?=
 =?us-ascii?Q?hOtN8J+Qx3LJTLoswkFDNUHfDa2QAAPz115ACHwetid0x9Bn44nzWgG8UCKc?=
 =?us-ascii?Q?ewRL+07RwAyQ6jCBzNxdmn7NquHWHT6/iJRsrIujAMIXrlwSsW9nN+iTASJb?=
 =?us-ascii?Q?xvlr4oJNliUw8iYYEE+NzaQv9uAHsUSwoFKn37XZ7foHeBU+Drs1yHXaYiV7?=
 =?us-ascii?Q?pA1u60euXJDIQLMF1L8KzgORV5vsR7eA0uXRHHeApfS0wIBy3sscIpVw+pHy?=
 =?us-ascii?Q?oNeteZZ3nJErafOY27eLH7yNex98p3+mvu2fAThB+WIc5mCsUjGd7SImRUsu?=
 =?us-ascii?Q?myYfL72bWiA9wBdsVbDsaXgVLC3j5Ck5Nd1xb9WBIy54YnLRBekUorgkuJXz?=
 =?us-ascii?Q?14sr5V4jnj7uQpO3iYFNzxIyyRM/t7S6xayUXHfmXpvz2n2GQ0KuZJj4+JKC?=
 =?us-ascii?Q?g+I8WeoFIPKEQw9Eq+rJX+cJqm0JuIz+dvmQk8lqn/Y/CRlzxkhBT8uMRM1k?=
 =?us-ascii?Q?XZ/QSDDVOed6AUkjPwWrTenC2buPSr2vAoPU84hDTUOdsIh5hNoLRAnDS7Bx?=
 =?us-ascii?Q?qeuE5vsof4E9Wb51cvOS6GFSZV9mTeDO/HRx/uwnhAjKLaLEMnOKw+CIGSOS?=
 =?us-ascii?Q?vMBaRdcHsLgj7NvIBrEH1ELtMpInrAN9yXMp0Xw6I5SWOA4e73Dpzm3NSxTr?=
 =?us-ascii?Q?OcXawdyx8ARlyZLjL4y8dqr7203M4zYK1gqFyWu+RKl14I6FXOP6B4HsYPXq?=
 =?us-ascii?Q?r1hoRqP5Wduj+d7XU2Ol?=
X-Forefront-Antispam-Report:
	CIP:4.79.107.243;CTRY:US;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:CH4PR07CU001.outbound.protection.outlook.com;PTR:mail-ch4pr07cu00104.outbound.protection.outlook.com;CAT:NONE;SFS:(13230040)(82310400026)(14060799003)(35042699022)(156008)(36860700016)(376014)(1800799024)(56012099003)(22082099003)(18002099003);DIR:OUT;SFP:1102;
X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1
X-MS-Exchange-AntiSpam-MessageData-0:
	u+CJe+WNqqT5WxTzlNIvjK0f8D8w+0o/r32CIycAdJUhMPPErv6qHGVhCmhfHFDEJ+qlLlhIzRHWuB/Fx+3IINOtOcbzEfV03AR7l+F4Bp3iPxLlXRCwFl/mZHCzCZaUnUUMJTs5HHwfm8eSsegxhnuN5VWb7gJ/ywkdKfKYepz8rYpA537OOGAbndJOiHoA+yQuyNU1VawGKGgo+1DCuZpFBpRL74cjerrvPrVmvmG+GRTeeGZ2t27vwxVqNFyKmimdVbnvwotwNFRMUaCoWBDVOHI2fZ2+vc5G6jQ2k+yixZeDoEObEYm4SoWDr+Zk6V8F2xCKqBCANwhwR1u80FrMqqu9Fr0AMNvNo6PLz5L+6/nahYxVWNjr3LEvbC5A+KJtghmqK1fVOc9LwTG44rTwELVKlQDUtZzxN5nPDVUeoliijmrnGr21wFIBT3wJ
X-OriginatorOrg: elektrobit.com
X-MS-Exchange-CrossTenant-OriginalArrivalTime: 20 Apr 2026 21:27:30.5226
 (UTC)
X-MS-Exchange-CrossTenant-Network-Message-Id: 325ae214-868e-43c3-f237-08de9f23a110
X-MS-Exchange-CrossTenant-Id: e764c36b-012e-4216-910d-8fd16283182d
X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=e764c36b-012e-4216-910d-8fd16283182d;Ip=[4.79.107.243];Helo=[usbth1es003.ebgroup.elektrobit.com]
X-MS-Exchange-CrossTenant-AuthAs: Internal
X-MS-Exchange-CrossTenant-AuthSource: TreatMessagesAsInternal-CY4PEPF0000EDD6.namprd03.prod.outlook.com
X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem
X-MS-Exchange-Transport-CrossTenantHeadersStamped: PH0PR08MB9861
X-purgate-ID: tlsNG-d62444/1776720458-B4A11FF4-6ADA3E45/0/0
X-purgate-type: clean
X-purgate-size: 999

From: Sergej Proskurin <proskurin@sec.in.tum.de>

In ./xen/arch/arm/p2m.c, we compare the gfn's with INVALID_GFN
throughout the code. Thus it makes sense to use the macro INVALID_GFN
instead of a hard coded value to initialize "p2m->lowest_mapped_gfn".

This is commit 5/12 of the altp2m_init/altp2m_teardown routines phase.

Signed-off-by: Sergej Proskurin <proskurin@sec.in.tum.de>
---
 xen/arch/arm/mmu/p2m.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/xen/arch/arm/mmu/p2m.c b/xen/arch/arm/mmu/p2m.c
index 3ecb969a0369..1009f10e5db4 100644
--- a/xen/arch/arm/mmu/p2m.c
+++ b/xen/arch/arm/mmu/p2m.c
@@ -1517,7 +1517,7 @@ static int p2m_initialise(struct domain *d, struct p2m_domain *p2m)
 
     p2m->vmid = INVALID_VMID;
     p2m->max_mapped_gfn = _gfn(0);
-    p2m->lowest_mapped_gfn = _gfn(ULONG_MAX);
+    p2m->lowest_mapped_gfn = INVALID_GFN;
 
     p2m->default_access = p2m_access_rwx;
     p2m->mem_access_enabled = false;
-- 
2.34.1



From xen-devel-bounces@lists.xenproject.org Mon Apr 20 21:27:41 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 20 Apr 2026 21:27:41 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1287501.1567939 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wEw9d-00026F-Pt; Mon, 20 Apr 2026 21:27:41 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1287501.1567939; Mon, 20 Apr 2026 21:27: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 1wEw9d-00025a-JY; Mon, 20 Apr 2026 21:27:41 +0000
Received: by outflank-mailman (input) for mailman id 1287501;
 Mon, 20 Apr 2026 21:27:40 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <Rose.Spangler@elektrobit.com>) id 1wEw9c-0001mA-0c
 for xen-devel@lists.xenproject.org; Mon, 20 Apr 2026 21:27:40 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wEw9b-001N4o-DV
 for xen-devel@lists.xenproject.org; Mon, 20 Apr 2026 23:27:39 +0200
Received: from [10.42.69.11] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <Rose.Spangler@elektrobit.com>)
 id 69e69a45-2eae-0a2a0a5409dd-0a2a450beb80-4
 for <xen-devel@lists.xenproject.org>; Mon, 20 Apr 2026 23:27:39 +0200
Received: from [40.93.198.102]
 (helo=CY7PR03CU001.outbound.protection.outlook.com)
 by tlsNG-42698a.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.1)
 (envelope-from <Rose.Spangler@elektrobit.com>)
 id 69e69a49-212f-0a2a450b0019-285dc66613eb-3
 for <xen-devel@lists.xenproject.org>; Mon, 20 Apr 2026 23:27:39 +0200
Received: from BL1PR13CA0149.namprd13.prod.outlook.com (2603:10b6:208:2bb::34)
 by DM3PR08MB9498.namprd08.prod.outlook.com (2603:10b6:8:1ad::8) with
 Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9818.33; Mon, 20 Apr
 2026 21:27:22 +0000
Received: from BN1PEPF00005FFC.namprd05.prod.outlook.com
 (2603:10b6:208:2bb:cafe::f8) by BL1PR13CA0149.outlook.office365.com
 (2603:10b6:208:2bb::34) with Microsoft SMTP Server (version=TLS1_3,
 cipher=TLS_AES_256_GCM_SHA384) id 15.20.9791.48 via Frontend Transport; Mon,
 20 Apr 2026 21:27:22 +0000
Received: from usbth1es003.ebgroup.elektrobit.com (4.79.107.243) by
 BN1PEPF00005FFC.mail.protection.outlook.com (10.167.243.228) with Microsoft
 SMTP Server (version=TLS1_3, cipher=TLS_AES_256_GCM_SHA384) id 15.20.9791.48
 via Frontend Transport; Mon, 20 Apr 2026 21:27:21 +0000
Received: from usbth1es003 (localhost [127.0.0.1])
 by usbth1es003.ebgroup.elektrobit.com (Postfix) with SMTP id 4fzz8m3KKrz1wdP; 
 Mon, 20 Apr 2026 14:27:20 -0700 (PDT)
Received: from CO1PR07CU001.outbound.protection.outlook.com
 (mail-co1pr07cu00106.outbound.protection.outlook.com [40.93.10.94])
 (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)
 key-exchange secp384r1 server-signature RSA-PSS (2048 bits) server-digest
 SHA256) (No client certificate requested)
 by usbth1es003.ebgroup.elektrobit.com (Postfix) with ESMTPS;
 Mon, 20 Apr 2026 14:27:20 -0700 (PDT)
Received: from CH0PR03CA0432.namprd03.prod.outlook.com (2603:10b6:610:10e::20)
 by LV5PR08MB10848.namprd08.prod.outlook.com (2603:10b6:408:2fc::18)
 with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9818.33; Mon, 20 Apr
 2026 21:27:13 +0000
Received: from CH2PEPF0000009C.namprd02.prod.outlook.com
 (2603:10b6:610:10e:cafe::66) by CH0PR03CA0432.outlook.office365.com
 (2603:10b6:610:10e::20) with Microsoft SMTP Server (version=TLS1_3,
 cipher=TLS_AES_256_GCM_SHA384) id 15.20.9791.48 via Frontend Transport; Mon,
 20 Apr 2026 21:27:13 +0000
Received: from denue6es012.ebgroup.elektrobit.com (213.95.148.172) by
 CH2PEPF0000009C.mail.protection.outlook.com (10.167.244.24) with Microsoft
 SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id
 15.20.9791.48 via Frontend Transport; Mon, 20 Apr 2026 21:27:12 +0000
Received: from ubuntu.localdomain (10.10.178.50) by
 denue6es012.ebgroup.elektrobit.com (10.243.160.140) with Microsoft SMTP
 Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id
 15.2.2562.35; Mon, 20 Apr 2026 23:27:09 +0200
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@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=elektrobit.com header.i="@elektrobit.com" header.h="From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck"; dkim=pass header.s=selector1 header.d=elektrobit.com header.i="@elektrobit.com" header.h="From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck"
ARC-Seal: i=2; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=pass;
 b=Lp7sUusTmHSJDMxFwE1IK/0xvDD384w0IX5voLuE272foHy8Enhj14hPj+/MCDkuliyAv7VQT2jazrViyHt/boo1748MAEg44p4f7VdTLhp3In85aKnqsn+6BOa3qTne9n8N1HKnu45/0VZN0jHuHICUCmVm7iBMOoggTLvMx7CLFF0j9Zu/SlyteF17nm2FLyaken0HQ5LVK6BCKDWd+qINIuHvbg0iAG1qkdnSCopDqPNF8k/b5K+AsHdHJ6kpIiteu8AYDa4qcQFZcl9ddRVrjod+1zmsuhS+JKuLhSNCPbsTurw5IbtpqAfUVP/ZINtv/g3oli3s9rOgHOB/bw==
ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com;
 s=arcselector10001;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1;
 bh=55tm/2wld/ywUdSampZbkiV4LluAQpXTHs92fXHMAOY=;
 b=lMYwt/FnOh82WCrsZ38dIveWmcDZTMqY6Wave9148Tcv7AlU0yTqK1xqTiBjAq3r6qpmOQkxFrm/T1sEkpOiyZYh8e3zxU8lTqJSbKzSWP0FirHy0M2M6UR+Wl9byzqEwlo1SaPDDRZBErBz6XhlShKkeEpHdd8HRq+t/CouvkPbhzD/zyvu6Pn7ZlQaCdVpsWvAt8IL96EpcYMuFRycXxb2c4+E/RGnIrC9CHL2AP8qUSle/W5WY6+BJkwFH2kY2a4+SDjwslTEEmZFe60Yi8wCojUlH9BPOFfHUl6ZXB30vpK8NEbIuz0NRo6P+XQJO2IP8pwE+AxXkg1yosEWLg==
ARC-Authentication-Results: i=2; mx.microsoft.com 1; spf=pass (sender ip is
 40.93.10.94) smtp.rcpttodomain=amd.com smtp.mailfrom=elektrobit.com;
 dmarc=pass (p=quarantine sp=none pct=100) action=none
 header.from=elektrobit.com; dkim=pass (signature was verified)
 header.d=elektrobit.com; arc=pass (0 oda=1 ltdi=1
 spf=[1,1,smtp.mailfrom=elektrobit.com]
 dmarc=[1,1,header.from=elektrobit.com])
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=elektrobit.com;
 s=selector1;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck;
 bh=55tm/2wld/ywUdSampZbkiV4LluAQpXTHs92fXHMAOY=;
 b=o1YKc7JF4FB1FaNDoJ8pEj9SD4rBuF9F2Lob37S0U3UtP/HG9U8JzfJd1sRe+Sv/rra/M7OXZBINNcoOdigDNioAe1JPaR1Ek43W+JPkZMj9Rqd0YxmphS6oKSqGZCylXS78EXUHhiQjpAmuseGxRGn+OvbWzRqTZkD3lrZwoVw=
X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 40.93.10.94)
 smtp.mailfrom=elektrobit.com; dkim=pass (signature was verified)
 header.d=elektrobit.com;dmarc=pass action=none header.from=elektrobit.com;
Received-SPF: Pass (protection.outlook.com: domain of elektrobit.com
 designates 40.93.10.94 as permitted sender) receiver=protection.outlook.com;
 client-ip=40.93.10.94; helo=CO1PR07CU001.outbound.protection.outlook.com;
 pr=C
ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none;
 b=TuLPUqkxh6f+J47w5Iwp/5/A62GO0iA58rDG6mh6ewVx+c6semXICO6diy53DGJXmiAuRSVT0vfxFyfM2aOvhuxv/IP6wk142p8iXYc+5xOG0XaNQywjnNDHnoNGHy/LWY3H4YTqOE2VnU1DtDYES7QaI1X8Z3viMcjFcFseKIzdELsn+gB17EWwgOmXU0Y7BXkGmrfHudHTpDOxm8lQlt7KSXpU1tH9ydH8yCL0X6ccIYrKu0kegEzI5li6doSZxM23F1COeGtHVCcUrsg8jPKHrULv5fpuDQPlT+pZ4UVG4/7kbh3e8ykCXxOwpm8Wp1LU6Sfe9N/Q87s7VBm4wQ==
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com;
 s=arcselector10001;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1;
 bh=55tm/2wld/ywUdSampZbkiV4LluAQpXTHs92fXHMAOY=;
 b=lCberM3/orNIzyMP8hmol19dcvx0V1srt9KyRL3yZR0uayJGfHfeMivvCBL9UahBoX+JIR3LQUSd5hPPsBg0YQmfOXWOF8i11t48MzBv5fwq4UZ5lav15VptzYhwF510IG4z+8cU1FL02JCRFUNcjPVjRQrwBMlzfFrMU0zwl+usI3TNTYOuFH0tI7p9KQXBWSbF+P4eQNN9ntXJsSGa3GvXuG4YT7vsErVTRis1VQgBJwSKCueyDwAXgOtNM7Kh/qBnVPjM9MR++d1Qt5cumZ3W+GnWZPsD47Z9yj1Wv96wR2QauzpDERn0QnFtITZkj/bQarTyZeagccvTvFvq4Q==
ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass (sender ip is
 213.95.148.172) smtp.rcpttodomain=lists.xenproject.org
 smtp.mailfrom=elektrobit.com; dmarc=pass (p=quarantine sp=none pct=100)
 action=none header.from=elektrobit.com; dkim=none (message not signed);
 arc=none (0)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=elektrobit.com;
 s=selector1;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck;
 bh=55tm/2wld/ywUdSampZbkiV4LluAQpXTHs92fXHMAOY=;
 b=o1YKc7JF4FB1FaNDoJ8pEj9SD4rBuF9F2Lob37S0U3UtP/HG9U8JzfJd1sRe+Sv/rra/M7OXZBINNcoOdigDNioAe1JPaR1Ek43W+JPkZMj9Rqd0YxmphS6oKSqGZCylXS78EXUHhiQjpAmuseGxRGn+OvbWzRqTZkD3lrZwoVw=
X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 213.95.148.172)
 smtp.mailfrom=elektrobit.com; dkim=none (message not signed)
 header.d=none;dmarc=pass action=none header.from=elektrobit.com;
Received-SPF: Pass (protection.outlook.com: domain of elektrobit.com
 designates 213.95.148.172 as permitted sender)
 receiver=protection.outlook.com; client-ip=213.95.148.172;
 helo=denue6es012.ebgroup.elektrobit.com; pr=C
From: Rose Spangler <Rose.Spangler@elektrobit.com>
To: <xen-devel@lists.xenproject.org>
CC: Rose Spangler <Rose.Spangler@elektrobit.com>, Jan Beulich
	<jbeulich@suse.com>, Andrew Cooper <andrew.cooper3@citrix.com>,
	=?UTF-8?q?Roger=20Pau=20Monn=C3=A9?= <roger.pau@citrix.com>, 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>, "Daniel P. Smith"
	<dpsmith@apertussolutions.com>, Aqib Javaid <Aqib.Javaid@elektrobit.com>
Subject: [RFC PATCH v6 09/43] altp2m: Move do_altp2m_op to common code
Date: Mon, 20 Apr 2026 17:26:14 -0400
Message-ID: <20260420212648.208640-2-Rose.Spangler@elektrobit.com>
X-Mailer: git-send-email 2.34.1
In-Reply-To: <20260420212648.208640-1-Rose.Spangler@elektrobit.com>
References: <20260420212648.208640-1-Rose.Spangler@elektrobit.com>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit
Content-Type: text/plain
X-Originating-IP: [10.10.178.50]
X-ClientProxiedBy: denue6es013.ebgroup.elektrobit.com (10.243.160.141) To
 denue6es012.ebgroup.elektrobit.com (10.243.160.140)
X-EOPAttributedMessage: 1
X-MS-Exchange-SkipListedInternetSender:
 ip=[213.95.148.172];domain=denue6es012.ebgroup.elektrobit.com
X-MS-TrafficTypeDiagnostic:
	CH2PEPF0000009C:EE_|LV5PR08MB10848:EE_|BN1PEPF00005FFC:EE_|DM3PR08MB9498:EE_
X-MS-Office365-Filtering-Correlation-Id: 256f584b-748e-4060-630e-08de9f239baa
X-SM-outgoing: yes
X-MS-Exchange-SenderADCheck: 1
X-MS-Exchange-AntiSpam-Relay: 0
X-Microsoft-Antispam-Untrusted:
 BCL:0;ARA:13230040|704162011799003|36860700016|82310400026|7416014|376014|1800799024|56012099003|18002099003|22082099003;
X-Microsoft-Antispam-Message-Info-Original:
 =?us-ascii?Q?O5FCXpEvEa3IGgHzFtD3K25IdgSo6f0NN1jzC1JNpc5hFf6jUM6WtbZpzSZX?=
 =?us-ascii?Q?Do+0snGkyx5SGK7PpxyR7GOZ33LMs0GviwtEC4C90aZ7Rt+ETAq0fpZrkicc?=
 =?us-ascii?Q?4WtxjdOtkOFrD7ljKjI0kp5/Cp0rgypg7s4bat+zYNFIBFKM/vb2JmMP5c5r?=
 =?us-ascii?Q?EVB4HKQ+ThzywMN0CP27a4QqLDcp7lw5NUYQAtaTRx76BDJwYtlf1eWtl6Q+?=
 =?us-ascii?Q?59b6nEzrRkiXHMTXRZB5RLG4d5stNOd3fxQmmUqEbnS0VQv+ws3wvFoHs21v?=
 =?us-ascii?Q?mmLm5bK4UdtguKuph+cp7eOa/jgpq5rJ5NBKPVREB3FQjc/zYO7LaZy62X5X?=
 =?us-ascii?Q?OGclnzRdxgOh9mcc8euMyoHiZGFUwN7XWjDChZ8amlEkRAjh8F0E7o5P+27D?=
 =?us-ascii?Q?pOS3C1dxoj/xsl3JUDBSeXupQkCFjV553QK5J9TJMSJPB85EdL6W3CU04B0B?=
 =?us-ascii?Q?prbdHh+V7OYgFRVpc8iFO7EHY/balqqErlFW7xWIL9cDotd8S/I0Q9V5Ztph?=
 =?us-ascii?Q?lN484F2u2Gl8AWZTknvCsLBxB1AWDSsjaochDuOC//6o166h3rE0nE36J73m?=
 =?us-ascii?Q?gebvFekv4Ye0npIkBikrj3myE2vmGvfOkWWoY9Ujj/Fp7sgZyhW26z+i2u+0?=
 =?us-ascii?Q?ekF5CMf4QWbKOgscxOa8TWFe0RJVm0gzh/1D/xSsDcqJJgl51nvSLY9wkLux?=
 =?us-ascii?Q?l6Pi5gqP+MbGOboWK57yTNzuqf0tgXjPgms6lv+N2Z3C8/ON+KKODDWQ0tui?=
 =?us-ascii?Q?ipmm6feTEv4MkRNkTqPQfyh4Xwcymd9sKPO5nZY7A6JJaDFARyx3vDhir1rm?=
 =?us-ascii?Q?MuWe4ENwRGjPxIaYKlLMispnxYJgetnv4oc4+XG+gTxT/KzfHoa/7fDk4cOa?=
 =?us-ascii?Q?fDs5D+HTrGlec8XCokE90N+J9vyiDDnz5tTdqg8V30nnkRK9HYnY/ejs952o?=
 =?us-ascii?Q?LTtDH4Dm6YcR+/760+BbkI3eydcf/BaCk2+oUm4fcUbu1EoVCmM7PgeWwfRI?=
 =?us-ascii?Q?fx2ekp4MaH9hQ0DcXwbjAv3gA+4SjLYKaWtm+0BLmpxVMrw1L21mhkFG00z9?=
 =?us-ascii?Q?wSjMhYDQ6RmwOmPbxNlDrI3dnLH6VXRhPREHyiN6kG/1Z2KbK8+uistUtE3n?=
 =?us-ascii?Q?LzVi3t22u6+jtCQUGP7V63Xih9e0NynN3A=3D=3D?=
X-Forefront-Antispam-Report-Untrusted:
 CIP:213.95.148.172;CTRY:DE;LANG:en;SCL:1;SRV:;IPV:CAL;SFV:NSPM;H:denue6es012.ebgroup.elektrobit.com;PTR:eth1-fw1-nbg6.eb.noris.de;CAT:NONE;SFS:(13230040)(704162011799003)(36860700016)(82310400026)(7416014)(376014)(1800799024)(56012099003)(18002099003)(22082099003);DIR:OUT;SFP:1102;
X-Exchange-RoutingPolicyChecked:
 pv+TFKJYq3q4Mv8AWUit1lHt8X+SjsK7bbvaiHgHjgPtXhpyu9Wa6VX9gLbyNr5OoXWxFwgQ4tc8NsR8REfpiE6izt0w1l3xpJdylN4erXxAGReK5o9JGvIvMCPRHrHjoTHfrKCCiaGePCTmf/Gn1R01Hrnk2cDfZwZXBhYCKFhqKlRWkeQVh2Zqi0tUju4SCaErHftN7BcKCxJJasGF+30JFpk7IRMuntIsuuU5KlQKQYn6vG/VqLreeQKLB7ir/cIbxyFzZ7UWPn7mwBlDyc/gnXcDvo8JJbbWPmCUI7jUz6T2Y/hjiXlvY/7XikxL8M4/YiWkIcHzIr4yfLxiGw==
X-MS-Exchange-Transport-CrossTenantHeadersStamped: LV5PR08MB10848
X-MS-Exchange-SkipListedInternetSender:
 ip=[40.93.10.94];domain=CO1PR07CU001.outbound.protection.outlook.com
X-MS-Exchange-ExternalOriginalInternetSender:
 ip=[40.93.10.94];domain=CO1PR07CU001.outbound.protection.outlook.com
X-MS-Exchange-Transport-CrossTenantHeadersStripped:
 BN1PEPF00005FFC.namprd05.prod.outlook.com
X-MS-PublicTrafficType: Email
X-MS-Office365-Filtering-Correlation-Id-Prvs:
	afd21eae-b6aa-48d5-9f50-08de9f239676
X-Microsoft-Antispam:
	BCL:0;ARA:13230040|704162011799003|82310400026|14060799003|35042699022|156008|36860700016|7416014|376014|1800799024|56012099003|22082099003|18002099003;
X-Microsoft-Antispam-Message-Info:
	=?us-ascii?Q?WGUdG829WRMO8xzC/5r7NjsPfNa+/q4gGhKpG0KHHFl50080apUEOw4tVSkJ?=
 =?us-ascii?Q?ajlBuD0s60hsll9AswVUeSHLTyl0pApB3PdRI0n7ZkqmR6ATXsKz9LFKE23e?=
 =?us-ascii?Q?/tn/vDl00Kpjrhmad2/79L7Ud5u1pqznHiVcd5jLTJT7lkuaQXX6gY+lWvcW?=
 =?us-ascii?Q?7O3MHFGXUXE45JYS3F7xlQP4eX1URqd6PDpoQbPR2BHCNDQuzJMl0Va2xC72?=
 =?us-ascii?Q?ppr8Om7JmK6orlUjIfDINoS3EgT3SfqDNdqBUkuk7uRwfNgJZ1Oau+9UF3JX?=
 =?us-ascii?Q?+aBpOvmT+uHu8gCPZGElVpILcWDy69yW8t22ocGzq9T3RVqMD3dC7I9TcSMt?=
 =?us-ascii?Q?0YAtpas48EV6A6yPJSZ5JfYbbkcG0h4fTee0JhVL/pVIrYSICodh5YsNNTEI?=
 =?us-ascii?Q?bbNu2MK+3t646SH7Y7d562fYYJ7EG249jMdvio0Dmjgdp3EkUyOn1195mO3+?=
 =?us-ascii?Q?6N5qvxA+Aeqt5bQ9XpkCIMG2KQwXyrCwwIJu4fOuywTGg0o287YE1MeZQOfO?=
 =?us-ascii?Q?JXUOwT40Q4ezMUz2hEcjbtAGgybyO36NWHCBohb95Q4Cs09ndgCmhXFNp/ug?=
 =?us-ascii?Q?U6kG3mLp6XDxO+5ex4VPV8jCTrvG8Dg5BcparTn2NV4PI+Nd0lQkZ8t6W1Vt?=
 =?us-ascii?Q?T0fDisu3+lem+47Td1bGXUFaf8HqCLVbRVbABTnw+YUml2xR0tfxHF4IKBU5?=
 =?us-ascii?Q?s2mkWDH9v78nLcEnTxqzWo8x4neajBdc6MlxKsHPOBLCZRXJZW5b4zgnA98m?=
 =?us-ascii?Q?roaFTEcrYjDiNgEaIlD5X5cbzQzjwUtJWz0lawV4+T9Dk7KXc0Kek1K9/QfE?=
 =?us-ascii?Q?+fI5vEhrtth616NOmlXZ19kJj/E8h7sPmm02h38u6aOF/cTIF3Moei2SNayH?=
 =?us-ascii?Q?tZex8nc3AL7Nn9ug7jmXoFKTJOYMUWLN3RlF/eEI2qXYMlwH2MiBJCDa+Dj+?=
 =?us-ascii?Q?VF4BweLCc0rWlHQ29JaZAd8YUGDcC3v6qvoX4pXZfr4mJqlA6rDH3yIBrzZa?=
 =?us-ascii?Q?4COkp72162nQ4X3/woRWG/qV13dufKsDs/LcWJJrudiOPRqY3w1QusDd5WLq?=
 =?us-ascii?Q?SZtrJD7zXMmHplQOy2G8rxmEIy95M+2pcYeviwlsZxtEiWUnbbkfoMFvnbmp?=
 =?us-ascii?Q?ixjcP428KVZ4MpkBv7A1e+C79NkHpqqdYw=3D=3D?=
X-Forefront-Antispam-Report:
	CIP:4.79.107.243;CTRY:US;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:CO1PR07CU001.outbound.protection.outlook.com;PTR:mail-co1pr07cu00106.outbound.protection.outlook.com;CAT:NONE;SFS:(13230040)(704162011799003)(82310400026)(14060799003)(35042699022)(156008)(36860700016)(7416014)(376014)(1800799024)(56012099003)(22082099003)(18002099003);DIR:OUT;SFP:1102;
X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1
X-MS-Exchange-AntiSpam-MessageData-0:
	b5UanR2p00UfKCA6aaY9tFmf96UpwGCoxOr2tItpeAh9NvVc8czHXZSDhS5v52u8mqaeRjJY/nBCg8v+cym0AO/g1LdQNAbUMXTvjmJ2LEXW3KCby6lfdFrW25n/33ZuXqx+0n0t6JAShhRC+vmUkRgoFGXDfAvupVgVU8aINR+c/+InaNF//f/hc6u+30zNxEWg6zmdzPZhckZ3MkaO4h9HGCQdtrjM4P7MgRIXX9mOHfoZQwLJC1/dPrPND1w+kurmjT4SCnBJ0AN4fr41S+8+uxWiwM18LAf3pVhvEU4yJrl9000PkkMDsrJLBWyVVa+9bchIx2HYz5R/3jEaO/zMxLV+j3D945C09DtR2soJ1ahHrYEF4Cl18ayEHlcBybdbIOCpLQqUGY4uvM56ExQg/9hsFVW2TVq0x4HQFBcSus/KR2dTSmTCpyFsiHhx
X-OriginatorOrg: elektrobit.com
X-MS-Exchange-CrossTenant-OriginalArrivalTime: 20 Apr 2026 21:27:21.4081
 (UTC)
X-MS-Exchange-CrossTenant-Network-Message-Id: 256f584b-748e-4060-630e-08de9f239baa
X-MS-Exchange-CrossTenant-Id: e764c36b-012e-4216-910d-8fd16283182d
X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=e764c36b-012e-4216-910d-8fd16283182d;Ip=[4.79.107.243];Helo=[usbth1es003.ebgroup.elektrobit.com]
X-MS-Exchange-CrossTenant-AuthAs: Internal
X-MS-Exchange-CrossTenant-AuthSource: TreatMessagesAsInternal-BN1PEPF00005FFC.namprd05.prod.outlook.com
X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem
X-MS-Exchange-Transport-CrossTenantHeadersStamped: DM3PR08MB9498
X-purgate-ID: tlsNG-42698a/1776720459-0556BF3B-D9AF3AC8/0/0
X-purgate-type: clean
X-purgate-size: 26338

This commit moves the altp2m HVMOP implementation to common code, making it
possible to re-use it across architectures. In this commit, the entire
implementation is gated behind CONFIG_X86, with no changes to the body of
do_altp2m_op. A stub implementation is added for ARM, which will be removed
once do_altp2m_op has been modified to add ARM support.

This commit contains only code movement, and no change in functionality is
intended.

This is commit 1/2 of the common do_altp2m_op phase.

Signed-off-by: Rose Spangler <Rose.Spangler@elektrobit.com>
Signed-off-by: Aqib Javaid <Aqib.Javaid@elektrobit.com>
---
v6: Introduced this patch.
---
 xen/arch/x86/hvm/hvm.c   | 400 -------------------------------------
 xen/common/altp2m.c      | 413 +++++++++++++++++++++++++++++++++++++++
 xen/include/xen/altp2m.h |  11 ++
 3 files changed, 424 insertions(+), 400 deletions(-)

diff --git a/xen/arch/x86/hvm/hvm.c b/xen/arch/x86/hvm/hvm.c
index 5b6e91adce17..4adcc3c49d95 100644
--- a/xen/arch/x86/hvm/hvm.c
+++ b/xen/arch/x86/hvm/hvm.c
@@ -4526,406 +4526,6 @@ static int hvmop_get_param(
     return rc;
 }
 
-/*
- * altp2m operations are envisioned as being used in several different
- * modes:
- *
- * - external: All control and decisions are made by an external agent
- *   running domain 0.
- *
- * - internal: altp2m operations are used exclusively by an in-guest
- *   agent to protect itself from the guest kernel and in-guest
- *   attackers.
- *
- * - coordinated: An in-guest agent handles #VE and VMFUNCs locally,
- *   but makes requests of an agent running outside the domain for
- *   bigger changes (such as modifying altp2m entires).
- *
- * This corresponds to the three values for HVM_PARAM_ALTP2M
- * (external, mixed, limited). All three models have advantages and
- * disadvantages.
- *
- * Normally hypercalls made by a program in domain 0 in order to
- * control a guest would be DOMCTLs rather than HVMOPs.  But in order
- * to properly enable the 'internal' use case, as well as to avoid
- * fragmentation, all altp2m subops should come under this single
- * HVMOP.
- *
- * Note that 'internal' mode (HVM_PARAM_ALTP2M == XEN_ALTP2M_mixed)
- * has not been evaluated for safety from a security perspective.
- * Before using this mode in a security-critical environment, each
- * subop should be evaluated for safety, with unsafe subops
- * blacklisted in xsm_hvm_altp2mhvm_op().
- */
-static int do_altp2m_op(
-    XEN_GUEST_HANDLE_PARAM(void) arg)
-{
-#ifdef CONFIG_ALTP2M
-    struct xen_hvm_altp2m_op a;
-    struct domain *d = NULL;
-    int rc = 0;
-    uint64_t mode;
-
-    if ( !altp2m_supported() )
-        return -EOPNOTSUPP;
-
-    if ( copy_from_guest(&a, arg, 1) )
-        return -EFAULT;
-
-    if ( a.pad1 || a.pad2 ||
-         (a.version != HVMOP_ALTP2M_INTERFACE_VERSION) )
-        return -EINVAL;
-
-    switch ( a.cmd )
-    {
-    case HVMOP_altp2m_get_domain_state:
-    case HVMOP_altp2m_set_domain_state:
-    case HVMOP_altp2m_vcpu_enable_notify:
-    case HVMOP_altp2m_vcpu_disable_notify:
-    case HVMOP_altp2m_create_p2m:
-    case HVMOP_altp2m_destroy_p2m:
-    case HVMOP_altp2m_switch_p2m:
-    case HVMOP_altp2m_set_suppress_ve:
-    case HVMOP_altp2m_set_suppress_ve_multi:
-    case HVMOP_altp2m_get_suppress_ve:
-    case HVMOP_altp2m_set_mem_access:
-    case HVMOP_altp2m_set_mem_access_multi:
-    case HVMOP_altp2m_get_mem_access:
-    case HVMOP_altp2m_change_gfn:
-    case HVMOP_altp2m_get_p2m_idx:
-    case HVMOP_altp2m_set_visibility:
-        break;
-
-    default:
-        return -EOPNOTSUPP;
-    }
-
-    d = rcu_lock_domain_by_any_id(a.domain);
-
-    if ( d == NULL )
-        return -ESRCH;
-
-    if ( !is_hvm_domain(d) )
-    {
-        rc = -EOPNOTSUPP;
-        goto out;
-    }
-
-    if ( (a.cmd != HVMOP_altp2m_get_domain_state) &&
-         (a.cmd != HVMOP_altp2m_set_domain_state) &&
-         !d->altp2m_active )
-    {
-        rc = -EOPNOTSUPP;
-        goto out;
-    }
-
-    mode = d->arch.hvm.params[HVM_PARAM_ALTP2M];
-
-    if ( XEN_ALTP2M_disabled == mode )
-    {
-        rc = -EINVAL;
-        goto out;
-    }
-
-    if ( d->nr_altp2m == 0 )
-    {
-        rc = -EOPNOTSUPP;
-        goto out;
-    }
-
-    if ( (rc = xsm_hvm_altp2mhvm_op(XSM_OTHER, d, mode, a.cmd)) )
-        goto out;
-
-    switch ( a.cmd )
-    {
-    case HVMOP_altp2m_get_domain_state:
-        a.u.domain_state.state = altp2m_active(d);
-        rc = __copy_to_guest(arg, &a, 1) ? -EFAULT : 0;
-        break;
-
-    case HVMOP_altp2m_set_domain_state:
-    {
-        struct vcpu *v;
-        bool ostate;
-
-        if ( nestedhvm_enabled(d) )
-        {
-            rc = -EINVAL;
-            break;
-        }
-
-        rc = domain_pause_except_self(d);
-        if ( rc )
-            break;
-
-        ostate = d->altp2m_active;
-        d->altp2m_active = !!a.u.domain_state.state;
-
-        /* If the alternate p2m state has changed, handle appropriately */
-        if ( d->altp2m_active != ostate &&
-             (ostate || !(rc = altp2m_init_by_id(d, 0))) )
-        {
-            for_each_vcpu( d, v )
-            {
-                if ( !ostate )
-                    altp2m_vcpu_initialise(v);
-                else
-                    altp2m_vcpu_destroy(v);
-            }
-
-            if ( ostate )
-                altp2m_flush(d);
-        }
-        else if ( rc )
-            d->altp2m_active = false;
-
-        domain_unpause_except_self(d);
-        break;
-    }
-
-    case HVMOP_altp2m_vcpu_enable_notify:
-    {
-        struct vcpu *v;
-
-        if ( a.u.enable_notify.pad ||
-             a.u.enable_notify.vcpu_id >= d->max_vcpus )
-        {
-            rc = -EINVAL;
-            break;
-        }
-
-        if ( !cpu_has_vmx_virt_exceptions )
-        {
-            rc = -EOPNOTSUPP;
-            break;
-        }
-
-        v = d->vcpu[a.u.enable_notify.vcpu_id];
-
-        rc = altp2m_vcpu_enable_ve(v, _gfn(a.u.enable_notify.gfn));
-        break;
-    }
-
-    case HVMOP_altp2m_vcpu_disable_notify:
-    {
-        struct vcpu *v;
-
-        if ( a.u.disable_notify.vcpu_id >= d->max_vcpus )
-        {
-            rc = -EINVAL;
-            break;
-        }
-
-        if ( !cpu_has_vmx_virt_exceptions )
-        {
-            rc = -EOPNOTSUPP;
-            break;
-        }
-
-        v = d->vcpu[a.u.enable_notify.vcpu_id];
-
-        altp2m_vcpu_disable_ve(v);
-        break;
-    }
-
-    case HVMOP_altp2m_create_p2m:
-        rc = altp2m_init_next_available(d, &a.u.view.view,
-                                        a.u.view.hvmmem_default_access);
-        if ( !rc )
-            rc = __copy_to_guest(arg, &a, 1) ? -EFAULT : 0;
-        break;
-
-    case HVMOP_altp2m_destroy_p2m:
-        rc = altp2m_destroy_by_id(d, a.u.view.view);
-        break;
-
-    case HVMOP_altp2m_switch_p2m:
-        rc = altp2m_switch_domain_altp2m_by_id(d, a.u.view.view);
-        break;
-
-    case HVMOP_altp2m_set_suppress_ve:
-        if ( a.u.suppress_ve.pad1 || a.u.suppress_ve.pad2 )
-            rc = -EINVAL;
-        else
-        {
-            gfn_t gfn = _gfn(a.u.suppress_ve.gfn);
-            unsigned int altp2m_idx = a.u.suppress_ve.view;
-            bool suppress_ve = a.u.suppress_ve.suppress_ve;
-
-            rc = p2m_set_suppress_ve(d, gfn, suppress_ve, altp2m_idx);
-        }
-        break;
-
-    case HVMOP_altp2m_set_suppress_ve_multi:
-    {
-        uint64_t max_phys_addr = (1UL << d->arch.cpuid->extd.maxphysaddr) - 1;
-
-        a.u.suppress_ve_multi.last_gfn = min(a.u.suppress_ve_multi.last_gfn,
-                                             max_phys_addr);
-
-        if ( a.u.suppress_ve_multi.pad1 ||
-             a.u.suppress_ve_multi.first_gfn > a.u.suppress_ve_multi.last_gfn )
-            rc = -EINVAL;
-        else
-        {
-            rc = p2m_set_suppress_ve_multi(d, &a.u.suppress_ve_multi);
-            if ( (!rc || rc == -ERESTART) && __copy_to_guest(arg, &a, 1) )
-                rc = -EFAULT;
-        }
-        break;
-    }
-
-    case HVMOP_altp2m_get_suppress_ve:
-        if ( a.u.suppress_ve.pad1 || a.u.suppress_ve.pad2 )
-            rc = -EINVAL;
-        else
-        {
-            gfn_t gfn = _gfn(a.u.suppress_ve.gfn);
-            unsigned int altp2m_idx = a.u.suppress_ve.view;
-            bool suppress_ve;
-
-            rc = p2m_get_suppress_ve(d, gfn, &suppress_ve, altp2m_idx);
-            if ( !rc )
-            {
-                a.u.suppress_ve.suppress_ve = suppress_ve;
-                rc = __copy_to_guest(arg, &a, 1) ? -EFAULT : 0;
-            }
-        }
-        break;
-
-    case HVMOP_altp2m_set_mem_access:
-        if ( !vm_event_is_enabled(current) )
-        {
-            rc = -EOPNOTSUPP;
-            break;
-        }
-
-        if ( a.u.mem_access.pad )
-            rc = -EINVAL;
-        else
-            rc = p2m_set_mem_access(d, _gfn(a.u.mem_access.gfn), 1, 0, 0,
-                                    a.u.mem_access.access,
-                                    a.u.mem_access.view);
-        break;
-
-    case HVMOP_altp2m_set_mem_access_multi:
-        if ( !vm_event_is_enabled(current) )
-        {
-            rc = -EOPNOTSUPP;
-            break;
-        }
-
-        if ( a.u.set_mem_access_multi.pad ||
-             a.u.set_mem_access_multi.opaque > a.u.set_mem_access_multi.nr )
-        {
-            rc = -EINVAL;
-            break;
-        }
-
-        /*
-         * Unlike XENMEM_access_op_set_access_multi, we don't need any bits of
-         * the 'continuation' counter to be zero (to stash a command in).
-         * However, 0x40 is a good 'stride' to make sure that we make
-         * a reasonable amount of forward progress before yielding,
-         * so use a mask of 0x3F here.
-         */
-        rc = p2m_set_mem_access_multi(d, a.u.set_mem_access_multi.pfn_list,
-                                      a.u.set_mem_access_multi.access_list,
-                                      a.u.set_mem_access_multi.nr,
-                                      a.u.set_mem_access_multi.opaque,
-                                      0x3F,
-                                      a.u.set_mem_access_multi.view);
-        if ( rc > 0 )
-        {
-            a.u.set_mem_access_multi.opaque = rc;
-            rc = -ERESTART;
-            if ( __copy_field_to_guest(guest_handle_cast(arg, xen_hvm_altp2m_op_t),
-                                       &a, u.set_mem_access_multi.opaque) )
-                rc = -EFAULT;
-        }
-        break;
-
-    case HVMOP_altp2m_get_mem_access:
-        if ( !vm_event_is_enabled(current) )
-        {
-            rc = -EOPNOTSUPP;
-            break;
-        }
-
-        if ( a.u.mem_access.pad )
-            rc = -EINVAL;
-        else
-        {
-            xenmem_access_t access;
-
-            rc = p2m_get_mem_access(d, _gfn(a.u.mem_access.gfn), &access,
-                                    a.u.mem_access.view);
-            if ( !rc )
-            {
-                a.u.mem_access.access = access;
-                rc = __copy_to_guest(arg, &a, 1) ? -EFAULT : 0;
-            }
-        }
-        break;
-
-    case HVMOP_altp2m_change_gfn:
-        if ( a.u.change_gfn.pad1 || a.u.change_gfn.pad2 )
-            rc = -EINVAL;
-        else
-            rc = altp2m_change_gfn(d, a.u.change_gfn.view,
-                                   _gfn(a.u.change_gfn.old_gfn),
-                                   _gfn(a.u.change_gfn.new_gfn));
-        break;
-
-    case HVMOP_altp2m_get_p2m_idx:
-    {
-        struct vcpu *v;
-
-        if ( !altp2m_active(d) )
-        {
-            rc = -EOPNOTSUPP;
-            break;
-        }
-
-        if ( (v = domain_vcpu(d, a.u.get_vcpu_p2m_idx.vcpu_id)) == NULL )
-        {
-            rc = -EINVAL;
-            break;
-        }
-
-        a.u.get_vcpu_p2m_idx.altp2m_idx = altp2m_vcpu_idx(v);
-        rc = __copy_to_guest(arg, &a, 1) ? -EFAULT : 0;
-        break;
-    }
-
-    case HVMOP_altp2m_set_visibility:
-    {
-        unsigned int idx = a.u.set_visibility.altp2m_idx;
-
-        if ( a.u.set_visibility.pad )
-            rc = -EINVAL;
-        else if ( !altp2m_active(d) )
-            rc = -EOPNOTSUPP;
-        else
-            rc = altp2m_set_view_visibility(d, idx, a.u.set_visibility.visible);
-        break;
-    }
-
-    default:
-        ASSERT_UNREACHABLE();
-        rc = -EOPNOTSUPP;
-        break;
-    }
-
- out:
-    rcu_unlock_domain(d);
-
-    return rc;
-#else /* !CONFIG_ALTP2M */
-    return -EOPNOTSUPP;
-#endif /* CONFIG_ALTP2M */
-}
-
 DEFINE_XEN_GUEST_HANDLE(compat_hvm_altp2m_op_t);
 
 /*
diff --git a/xen/common/altp2m.c b/xen/common/altp2m.c
index 1a4e102324d4..a43b3a3e34b3 100644
--- a/xen/common/altp2m.c
+++ b/xen/common/altp2m.c
@@ -1,5 +1,418 @@
 /* SPDX-License-Identifier: GPL-2.0-only */
 #include <xen/altp2m.h>
+#include <xen/guest_access.h>
+#include <xen/vm_event.h>
+
+#include <asm/altp2m.h>
+
+#include <public/hvm/params.h>
+
+#include <xsm/xsm.h>
+
+#ifdef CONFIG_X86
+#include <asm/hvm/nestedhvm.h>
+/*
+ * altp2m operations are envisioned as being used in several different
+ * modes:
+ *
+ * - external: All control and decisions are made by an external agent
+ *   running domain 0.
+ *
+ * - internal: altp2m operations are used exclusively by an in-guest
+ *   agent to protect itself from the guest kernel and in-guest
+ *   attackers.
+ *
+ * - coordinated: An in-guest agent handles #VE and VMFUNCs locally,
+ *   but makes requests of an agent running outside the domain for
+ *   bigger changes (such as modifying altp2m entires).
+ *
+ * This corresponds to the three values for HVM_PARAM_ALTP2M
+ * (external, mixed, limited). All three models have advantages and
+ * disadvantages.
+ *
+ * Normally hypercalls made by a program in domain 0 in order to
+ * control a guest would be DOMCTLs rather than HVMOPs.  But in order
+ * to properly enable the 'internal' use case, as well as to avoid
+ * fragmentation, all altp2m subops should come under this single
+ * HVMOP.
+ *
+ * Note that 'internal' mode (HVM_PARAM_ALTP2M == XEN_ALTP2M_mixed)
+ * has not been evaluated for safety from a security perspective.
+ * Before using this mode in a security-critical environment, each
+ * subop should be evaluated for safety, with unsafe subops
+ * blacklisted in xsm_hvm_altp2mhvm_op().
+ */
+int do_altp2m_op(
+    XEN_GUEST_HANDLE_PARAM(void) arg)
+{
+    struct xen_hvm_altp2m_op a;
+    struct domain *d = NULL;
+    int rc = 0;
+    uint64_t mode;
+
+    if ( !altp2m_supported() )
+        return -EOPNOTSUPP;
+
+    if ( copy_from_guest(&a, arg, 1) )
+        return -EFAULT;
+
+    if ( a.pad1 || a.pad2 ||
+         (a.version != HVMOP_ALTP2M_INTERFACE_VERSION) )
+        return -EINVAL;
+
+    switch ( a.cmd )
+    {
+    case HVMOP_altp2m_get_domain_state:
+    case HVMOP_altp2m_set_domain_state:
+    case HVMOP_altp2m_vcpu_enable_notify:
+    case HVMOP_altp2m_vcpu_disable_notify:
+    case HVMOP_altp2m_create_p2m:
+    case HVMOP_altp2m_destroy_p2m:
+    case HVMOP_altp2m_switch_p2m:
+    case HVMOP_altp2m_set_suppress_ve:
+    case HVMOP_altp2m_set_suppress_ve_multi:
+    case HVMOP_altp2m_get_suppress_ve:
+    case HVMOP_altp2m_set_mem_access:
+    case HVMOP_altp2m_set_mem_access_multi:
+    case HVMOP_altp2m_get_mem_access:
+    case HVMOP_altp2m_change_gfn:
+    case HVMOP_altp2m_get_p2m_idx:
+    case HVMOP_altp2m_set_visibility:
+        break;
+
+    default:
+        return -EOPNOTSUPP;
+    }
+
+    d = rcu_lock_domain_by_any_id(a.domain);
+
+    if ( d == NULL )
+        return -ESRCH;
+
+    if ( !is_hvm_domain(d) )
+    {
+        rc = -EOPNOTSUPP;
+        goto out;
+    }
+
+    if ( (a.cmd != HVMOP_altp2m_get_domain_state) &&
+         (a.cmd != HVMOP_altp2m_set_domain_state) &&
+         !d->altp2m_active )
+    {
+        rc = -EOPNOTSUPP;
+        goto out;
+    }
+
+    mode = d->arch.hvm.params[HVM_PARAM_ALTP2M];
+
+    if ( XEN_ALTP2M_disabled == mode )
+    {
+        rc = -EINVAL;
+        goto out;
+    }
+
+    if ( d->nr_altp2m == 0 )
+    {
+        rc = -EOPNOTSUPP;
+        goto out;
+    }
+
+    if ( (rc = xsm_hvm_altp2mhvm_op(XSM_OTHER, d, mode, a.cmd)) )
+        goto out;
+
+    switch ( a.cmd )
+    {
+    case HVMOP_altp2m_get_domain_state:
+        a.u.domain_state.state = altp2m_active(d);
+        rc = __copy_to_guest(arg, &a, 1) ? -EFAULT : 0;
+        break;
+
+    case HVMOP_altp2m_set_domain_state:
+    {
+        struct vcpu *v;
+        bool ostate;
+
+        if ( nestedhvm_enabled(d) )
+        {
+            rc = -EINVAL;
+            break;
+        }
+
+        rc = domain_pause_except_self(d);
+        if ( rc )
+            break;
+
+        ostate = d->altp2m_active;
+        d->altp2m_active = !!a.u.domain_state.state;
+
+        /* If the alternate p2m state has changed, handle appropriately */
+        if ( d->altp2m_active != ostate &&
+             (ostate || !(rc = altp2m_init_by_id(d, 0))) )
+        {
+            for_each_vcpu( d, v )
+            {
+                if ( !ostate )
+                    altp2m_vcpu_initialise(v);
+                else
+                    altp2m_vcpu_destroy(v);
+            }
+
+            if ( ostate )
+                altp2m_flush(d);
+        }
+        else if ( rc )
+            d->altp2m_active = false;
+
+        domain_unpause_except_self(d);
+        break;
+    }
+
+    case HVMOP_altp2m_vcpu_enable_notify:
+    {
+        struct vcpu *v;
+
+        if ( a.u.enable_notify.pad ||
+             a.u.enable_notify.vcpu_id >= d->max_vcpus )
+        {
+            rc = -EINVAL;
+            break;
+        }
+
+        if ( !cpu_has_vmx_virt_exceptions )
+        {
+            rc = -EOPNOTSUPP;
+            break;
+        }
+
+        v = d->vcpu[a.u.enable_notify.vcpu_id];
+
+        rc = altp2m_vcpu_enable_ve(v, _gfn(a.u.enable_notify.gfn));
+        break;
+    }
+
+    case HVMOP_altp2m_vcpu_disable_notify:
+    {
+        struct vcpu *v;
+
+        if ( a.u.disable_notify.vcpu_id >= d->max_vcpus )
+        {
+            rc = -EINVAL;
+            break;
+        }
+
+        if ( !cpu_has_vmx_virt_exceptions )
+        {
+            rc = -EOPNOTSUPP;
+            break;
+        }
+
+        v = d->vcpu[a.u.enable_notify.vcpu_id];
+
+        altp2m_vcpu_disable_ve(v);
+        break;
+    }
+
+    case HVMOP_altp2m_create_p2m:
+        rc = altp2m_init_next_available(d, &a.u.view.view,
+                                        a.u.view.hvmmem_default_access);
+        if ( !rc )
+            rc = __copy_to_guest(arg, &a, 1) ? -EFAULT : 0;
+        break;
+
+    case HVMOP_altp2m_destroy_p2m:
+        rc = altp2m_destroy_by_id(d, a.u.view.view);
+        break;
+
+    case HVMOP_altp2m_switch_p2m:
+        rc = altp2m_switch_domain_altp2m_by_id(d, a.u.view.view);
+        break;
+
+    case HVMOP_altp2m_set_suppress_ve:
+        if ( a.u.suppress_ve.pad1 || a.u.suppress_ve.pad2 )
+            rc = -EINVAL;
+        else
+        {
+            gfn_t gfn = _gfn(a.u.suppress_ve.gfn);
+            unsigned int altp2m_idx = a.u.suppress_ve.view;
+            bool suppress_ve = a.u.suppress_ve.suppress_ve;
+
+            rc = p2m_set_suppress_ve(d, gfn, suppress_ve, altp2m_idx);
+        }
+        break;
+
+    case HVMOP_altp2m_set_suppress_ve_multi:
+    {
+        uint64_t max_phys_addr = (1UL << d->arch.cpuid->extd.maxphysaddr) - 1;
+
+        a.u.suppress_ve_multi.last_gfn = min(a.u.suppress_ve_multi.last_gfn,
+                                             max_phys_addr);
+
+        if ( a.u.suppress_ve_multi.pad1 ||
+             a.u.suppress_ve_multi.first_gfn > a.u.suppress_ve_multi.last_gfn )
+            rc = -EINVAL;
+        else
+        {
+            rc = p2m_set_suppress_ve_multi(d, &a.u.suppress_ve_multi);
+            if ( (!rc || rc == -ERESTART) && __copy_to_guest(arg, &a, 1) )
+                rc = -EFAULT;
+        }
+        break;
+    }
+
+    case HVMOP_altp2m_get_suppress_ve:
+        if ( a.u.suppress_ve.pad1 || a.u.suppress_ve.pad2 )
+            rc = -EINVAL;
+        else
+        {
+            gfn_t gfn = _gfn(a.u.suppress_ve.gfn);
+            unsigned int altp2m_idx = a.u.suppress_ve.view;
+            bool suppress_ve;
+
+            rc = p2m_get_suppress_ve(d, gfn, &suppress_ve, altp2m_idx);
+            if ( !rc )
+            {
+                a.u.suppress_ve.suppress_ve = suppress_ve;
+                rc = __copy_to_guest(arg, &a, 1) ? -EFAULT : 0;
+            }
+        }
+        break;
+
+    case HVMOP_altp2m_set_mem_access:
+        if ( !vm_event_is_enabled(current) )
+        {
+            rc = -EOPNOTSUPP;
+            break;
+        }
+
+        if ( a.u.mem_access.pad )
+            rc = -EINVAL;
+        else
+            rc = p2m_set_mem_access(d, _gfn(a.u.mem_access.gfn), 1, 0, 0,
+                                    a.u.mem_access.access,
+                                    a.u.mem_access.view);
+        break;
+
+    case HVMOP_altp2m_set_mem_access_multi:
+        if ( !vm_event_is_enabled(current) )
+        {
+            rc = -EOPNOTSUPP;
+            break;
+        }
+
+        if ( a.u.set_mem_access_multi.pad ||
+             a.u.set_mem_access_multi.opaque > a.u.set_mem_access_multi.nr )
+        {
+            rc = -EINVAL;
+            break;
+        }
+
+        /*
+         * Unlike XENMEM_access_op_set_access_multi, we don't need any bits of
+         * the 'continuation' counter to be zero (to stash a command in).
+         * However, 0x40 is a good 'stride' to make sure that we make
+         * a reasonable amount of forward progress before yielding,
+         * so use a mask of 0x3F here.
+         */
+        rc = p2m_set_mem_access_multi(d, a.u.set_mem_access_multi.pfn_list,
+                                      a.u.set_mem_access_multi.access_list,
+                                      a.u.set_mem_access_multi.nr,
+                                      a.u.set_mem_access_multi.opaque,
+                                      0x3F,
+                                      a.u.set_mem_access_multi.view);
+        if ( rc > 0 )
+        {
+            a.u.set_mem_access_multi.opaque = rc;
+            rc = -ERESTART;
+            if ( __copy_field_to_guest(guest_handle_cast(arg, xen_hvm_altp2m_op_t),
+                                       &a, u.set_mem_access_multi.opaque) )
+                rc = -EFAULT;
+        }
+        break;
+
+    case HVMOP_altp2m_get_mem_access:
+        if ( !vm_event_is_enabled(current) )
+        {
+            rc = -EOPNOTSUPP;
+            break;
+        }
+
+        if ( a.u.mem_access.pad )
+            rc = -EINVAL;
+        else
+        {
+            xenmem_access_t access;
+
+            rc = p2m_get_mem_access(d, _gfn(a.u.mem_access.gfn), &access,
+                                    a.u.mem_access.view);
+            if ( !rc )
+            {
+                a.u.mem_access.access = access;
+                rc = __copy_to_guest(arg, &a, 1) ? -EFAULT : 0;
+            }
+        }
+        break;
+
+    case HVMOP_altp2m_change_gfn:
+        if ( a.u.change_gfn.pad1 || a.u.change_gfn.pad2 )
+            rc = -EINVAL;
+        else
+            rc = altp2m_change_gfn(d, a.u.change_gfn.view,
+                                   _gfn(a.u.change_gfn.old_gfn),
+                                   _gfn(a.u.change_gfn.new_gfn));
+        break;
+
+    case HVMOP_altp2m_get_p2m_idx:
+    {
+        struct vcpu *v;
+
+        if ( !altp2m_active(d) )
+        {
+            rc = -EOPNOTSUPP;
+            break;
+        }
+
+        if ( (v = domain_vcpu(d, a.u.get_vcpu_p2m_idx.vcpu_id)) == NULL )
+        {
+            rc = -EINVAL;
+            break;
+        }
+
+        a.u.get_vcpu_p2m_idx.altp2m_idx = altp2m_vcpu_idx(v);
+        rc = __copy_to_guest(arg, &a, 1) ? -EFAULT : 0;
+        break;
+    }
+
+    case HVMOP_altp2m_set_visibility:
+    {
+        unsigned int idx = a.u.set_visibility.altp2m_idx;
+
+        if ( a.u.set_visibility.pad )
+            rc = -EINVAL;
+        else if ( !altp2m_active(d) )
+            rc = -EOPNOTSUPP;
+        else
+            rc = altp2m_set_view_visibility(d, idx, a.u.set_visibility.visible);
+        break;
+    }
+
+    default:
+        ASSERT_UNREACHABLE();
+        rc = -EOPNOTSUPP;
+        break;
+    }
+
+ out:
+    rcu_unlock_domain(d);
+
+    return rc;
+}
+#else
+int do_altp2m_op(
+    XEN_GUEST_HANDLE_PARAM(void) arg)
+{
+    return -EOPNOTSUPP;
+}
+#endif
 
 /*
  * Local variables:
diff --git a/xen/include/xen/altp2m.h b/xen/include/xen/altp2m.h
index b3b21124dd7e..be627152668a 100644
--- a/xen/include/xen/altp2m.h
+++ b/xen/include/xen/altp2m.h
@@ -2,8 +2,12 @@
 #ifndef __XEN_ALTP2M_H__
 #define __XEN_ALTP2M_H__
 
+#include <xen/errno.h>
+#include <xen/param.h>
 #include <xen/sched.h>
 
+#include <public/hvm/hvm_op.h>
+
 #ifdef CONFIG_ALTP2M
 
 /* Alternate p2m HVM on/off per domain */
@@ -12,6 +16,8 @@ static inline bool altp2m_active(const struct domain *d)
     return d->altp2m_active;
 }
 
+int do_altp2m_op(XEN_GUEST_HANDLE_PARAM(void) arg);
+
 #else /* CONFIG_ALTP2M */
 
 static inline bool altp2m_active(const struct domain *d)
@@ -19,6 +25,11 @@ static inline bool altp2m_active(const struct domain *d)
     return false;
 }
 
+static inline int do_altp2m_op(XEN_GUEST_HANDLE_PARAM(void) arg)
+{
+    return -EOPNOTSUPP;
+}
+
 #endif /* CONFIG_ALTP2M */
 
 #endif /* __XEN_ALTP2M_H__ */
-- 
2.34.1



From xen-devel-bounces@lists.xenproject.org Mon Apr 20 21:27:44 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 20 Apr 2026 21:27:44 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1287504.1567953 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wEw9g-0002cq-Cf; Mon, 20 Apr 2026 21:27:44 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1287504.1567953; Mon, 20 Apr 2026 21:27: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 1wEw9g-0002cj-96; Mon, 20 Apr 2026 21:27:44 +0000
Received: by outflank-mailman (input) for mailman id 1287504;
 Mon, 20 Apr 2026 21:27:42 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <Rose.Spangler@elektrobit.com>) id 1wEw9e-00027J-0q
 for xen-devel@lists.xenproject.org; Mon, 20 Apr 2026 21:27:42 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wEw9d-001N7n-Ca
 for xen-devel@lists.xenproject.org; Mon, 20 Apr 2026 23:27:41 +0200
Received: from [10.42.69.8] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <Rose.Spangler@elektrobit.com>)
 id 69e69a18-bab6-0a2a0a5309dd-0a2a4508a9bc-16
 for <xen-devel@lists.xenproject.org>; Mon, 20 Apr 2026 23:27:41 +0200
Received: from [52.101.53.100]
 (helo=BL0PR03CU003.outbound.protection.outlook.com)
 by tlsNG-c1860d.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.1)
 (envelope-from <Rose.Spangler@elektrobit.com>)
 id 69e69a4c-63b5-0a2a45080019-346535645076-3
 for <xen-devel@lists.xenproject.org>; Mon, 20 Apr 2026 23:27:41 +0200
Received: from PH2PEPF0000384C.namprd17.prod.outlook.com (2603:10b6:518:1::70)
 by DM3PR08MB9645.namprd08.prod.outlook.com (2603:10b6:8:1ae::12) with
 Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9818.32; Mon, 20 Apr
 2026 21:27:31 +0000
Received: from CY4PEPF0000EDD4.namprd03.prod.outlook.com
 (2a01:111:f403:f912::1) by PH2PEPF0000384C.outlook.office365.com
 (2603:1036:903:48::3) with Microsoft SMTP Server (version=TLS1_3,
 cipher=TLS_AES_256_GCM_SHA384) id 15.20.9791.48 via Frontend Transport; Mon,
 20 Apr 2026 21:27:31 +0000
Received: from usbth1es003.ebgroup.elektrobit.com (4.79.107.243) by
 CY4PEPF0000EDD4.mail.protection.outlook.com (10.167.241.200) with Microsoft
 SMTP Server (version=TLS1_3, cipher=TLS_AES_256_GCM_SHA384) id 15.20.9791.48
 via Frontend Transport; Mon, 20 Apr 2026 21:27:30 +0000
Received: from usbth1es003 (localhost [127.0.0.1])
 by usbth1es003.ebgroup.elektrobit.com (Postfix) with SMTP id 4fzz8x6vRvz1wdP; 
 Mon, 20 Apr 2026 14:27:29 -0700 (PDT)
Received: from BL2PR08CU001.outbound.protection.outlook.com
 (mail-bl2pr08cu00102.outbound.protection.outlook.com [40.93.4.10])
 (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)
 key-exchange secp384r1 server-signature RSA-PSS (2048 bits) server-digest
 SHA256) (No client certificate requested)
 by usbth1es003.ebgroup.elektrobit.com (Postfix) with ESMTPS;
 Mon, 20 Apr 2026 14:27:29 -0700 (PDT)
Received: from CH5PR05CA0007.namprd05.prod.outlook.com (2603:10b6:610:1f0::12)
 by CO1PR08MB7141.namprd08.prod.outlook.com (2603:10b6:303:d8::14)
 with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9818.31; Mon, 20 Apr
 2026 21:27:25 +0000
Received: from CH2PEPF00000099.namprd02.prod.outlook.com
 (2603:10b6:610:1f0:cafe::ed) by CH5PR05CA0007.outlook.office365.com
 (2603:10b6:610:1f0::12) with Microsoft SMTP Server (version=TLS1_3,
 cipher=TLS_AES_256_GCM_SHA384) id 15.20.9791.48 via Frontend Transport; Mon,
 20 Apr 2026 21:27:24 +0000
Received: from denue6es012.ebgroup.elektrobit.com (213.95.148.172) by
 CH2PEPF00000099.mail.protection.outlook.com (10.167.244.20) with Microsoft
 SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id
 15.20.9791.48 via Frontend Transport; Mon, 20 Apr 2026 21:27:24 +0000
Received: from ubuntu.localdomain (10.10.178.50) by
 denue6es012.ebgroup.elektrobit.com (10.243.160.140) with Microsoft SMTP
 Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id
 15.2.2562.35; Mon, 20 Apr 2026 23:27:20 +0200
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@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=elektrobit.com header.i="@elektrobit.com" header.h="From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck"; dkim=pass header.s=selector1 header.d=elektrobit.com header.i="@elektrobit.com" header.h="From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck"
ARC-Seal: i=2; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=pass;
 b=Wio2p18vlcL8Xnrm2kRL1DueTwn+pQ+R8SIEmjhFTM5NLUojKPet+yKbs6E8J+wrwi2NYNUZNabfL4obbyyVO0wqTlAZCnO2u0Vy4HE164uyk9d6jGVHQ01LA+6XYKxnVD03/CI89JeVLhJlrZ+ns+p7uHMNBbL2wBvfaxpO0xlncwA4SDfAH31SQQkWMhVAYP+NVE4AUg/st696PZrGq1KQjhJDtSZJlwSqwB4hH96dp4vo12gUgWcaveabCDsoG/W2iBhfTRHNVQ68GNwqiclf1iwzNwqh8noHh/pix9hBsjE6bimqfh2miKFjwNlM6cgUtRTnZ+ZOnFxaBYhIlg==
ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com;
 s=arcselector10001;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1;
 bh=lnQuy/T8mDWKqAQXnoELf5ceU1mbzwKchncHWAqAvgo=;
 b=kLldVN9VxTyr/IJLeW1VcBymIlN1NsO7L27kqb0zz5mgzc5czBrZzzNOfI25pBLhoUpusI7s8yb+l47VY1aJmMI5mGKZupoW2+jV049DvZmhjpWVD3dw/l+FZvQjx09HHUgdZ17rr84fhzo4Bm8p+WNFiVG9VjzADO7Q6RNhVahdGl8QPpTN+MBxt8quuXr1hRbBCFd1w3KWjl8yzqk9EEs/T90+al+FDaz+rN0OB9T8qUGb5jTyshm+YhI+v9exWnpvBFXCIe6PNAFMNgomwYm9WckPqZhhlF530tKrOoYtFRlscu0DNQOWbZQQMyzTDfVeiHEk0H2LfiCUgOu2tA==
ARC-Authentication-Results: i=2; mx.microsoft.com 1; spf=pass (sender ip is
 40.93.4.10) smtp.rcpttodomain=amd.com smtp.mailfrom=elektrobit.com;
 dmarc=pass (p=quarantine sp=none pct=100) action=none
 header.from=elektrobit.com; dkim=pass (signature was verified)
 header.d=elektrobit.com; arc=pass (0 oda=1 ltdi=1
 spf=[1,1,smtp.mailfrom=elektrobit.com]
 dmarc=[1,1,header.from=elektrobit.com])
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=elektrobit.com;
 s=selector1;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck;
 bh=lnQuy/T8mDWKqAQXnoELf5ceU1mbzwKchncHWAqAvgo=;
 b=VPgZz86spJ12/PyiXytxnhEruLmzl6EGIHNYxiPeJB8iV4uIGN1xuNW7AhJV/iEi9km5V6GYi807tkGnAdGCMz3mAGUxBTDmwXrSUyO/xY4HfrKOL+59ctx9CEylj/7K2ebCK9ur7bvRnbcSEdmSuyGrAMmgNvMFQVwya/hU0Yk=
X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 40.93.4.10)
 smtp.mailfrom=elektrobit.com; dkim=pass (signature was verified)
 header.d=elektrobit.com;dmarc=pass action=none header.from=elektrobit.com;
Received-SPF: Pass (protection.outlook.com: domain of elektrobit.com
 designates 40.93.4.10 as permitted sender) receiver=protection.outlook.com;
 client-ip=40.93.4.10; helo=BL2PR08CU001.outbound.protection.outlook.com; pr=C
ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none;
 b=ov2c5HX+8PzpEA/yWtmazk8rWBcA84G0yhxffrBBVYjJIMV/eYE5nX72mp8PK7NsCGRfR6zBl3ijx73C0rQTCJsWNSDCz7/1MRcHCmvrEJ89aSHDdFyranuZJ7penJoWZqjimpxehY2bCIb5PrBnj/hRJi6EY1TF8m57BmcsFWyiSqahOHrdOmb6DlIfy9CSd+coN95CGtWRqr/N7LIxG4DdqhQO5N4lgTE98Jzvkyggx7dyWCV/WBUgvOZbxxhDHxMMlk2gF7S7QOKDToOoJ5ZmEWvPf7ugejM73MUE/LUde+zKRs2rqu7xZGZqOata+rxNXwE3g6xFL8Cx+Ifq/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=lnQuy/T8mDWKqAQXnoELf5ceU1mbzwKchncHWAqAvgo=;
 b=CeR+QOVzdzV9RZTMrp9oFRy9ZyDZhmGoQLTe4OUkPXha7J+V7G94YBORkJTncu+XF2dJ0x2a24XZ//65WZ+sAGf5Ofb0kg5m8Nu+KzxD0EEYYpMJMQ5dbLukXOt+tGkNjMVRTvZ07QrtRF/NTCaxXi8y2Ax3BcVdDDbbBAM1H+oLbUroDnZ6CxS4bCEFU7sRCikjw4I+nwl6WT/+boa/mwyCcQZ7o2PyRCQeToVILE1QDinAGa//QyLVK13YilqcMhDripQr0vtaWY80mm2If28r7oWIfnl9zxin7kYvjJblwPO4islYPwR0O9oD9RPJiD1ySpK1l4+XRsQDdXvqfQ==
ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass (sender ip is
 213.95.148.172) smtp.rcpttodomain=lists.xenproject.org
 smtp.mailfrom=elektrobit.com; dmarc=pass (p=quarantine sp=none pct=100)
 action=none header.from=elektrobit.com; dkim=none (message not signed);
 arc=none (0)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=elektrobit.com;
 s=selector1;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck;
 bh=lnQuy/T8mDWKqAQXnoELf5ceU1mbzwKchncHWAqAvgo=;
 b=VPgZz86spJ12/PyiXytxnhEruLmzl6EGIHNYxiPeJB8iV4uIGN1xuNW7AhJV/iEi9km5V6GYi807tkGnAdGCMz3mAGUxBTDmwXrSUyO/xY4HfrKOL+59ctx9CEylj/7K2ebCK9ur7bvRnbcSEdmSuyGrAMmgNvMFQVwya/hU0Yk=
X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 213.95.148.172)
 smtp.mailfrom=elektrobit.com; dkim=none (message not signed)
 header.d=none;dmarc=pass action=none header.from=elektrobit.com;
Received-SPF: Pass (protection.outlook.com: domain of elektrobit.com
 designates 213.95.148.172 as permitted sender)
 receiver=protection.outlook.com; client-ip=213.95.148.172;
 helo=denue6es012.ebgroup.elektrobit.com; pr=C
From: Rose Spangler <Rose.Spangler@elektrobit.com>
To: <xen-devel@lists.xenproject.org>
CC: Rose Spangler <Rose.Spangler@elektrobit.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>
Subject: [RFC PATCH v6 15/43] arm/p2m: Allocate hostp2m with xzalloc
Date: Mon, 20 Apr 2026 17:26:20 -0400
Message-ID: <20260420212648.208640-8-Rose.Spangler@elektrobit.com>
X-Mailer: git-send-email 2.34.1
In-Reply-To: <20260420212648.208640-1-Rose.Spangler@elektrobit.com>
References: <20260420212648.208640-1-Rose.Spangler@elektrobit.com>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit
Content-Type: text/plain
X-Originating-IP: [10.10.178.50]
X-ClientProxiedBy: denue6es013.ebgroup.elektrobit.com (10.243.160.141) To
 denue6es012.ebgroup.elektrobit.com (10.243.160.140)
X-EOPAttributedMessage: 1
X-MS-Exchange-SkipListedInternetSender:
 ip=[213.95.148.172];domain=denue6es012.ebgroup.elektrobit.com
X-MS-TrafficTypeDiagnostic:
	CH2PEPF00000099:EE_|CO1PR08MB7141:EE_|CY4PEPF0000EDD4:EE_|DM3PR08MB9645:EE_
X-MS-Office365-Filtering-Correlation-Id: 37284b46-519a-49e6-f973-08de9f23a111
X-SM-outgoing: yes
X-MS-Exchange-SenderADCheck: 1
X-MS-Exchange-AntiSpam-Relay: 0
X-Microsoft-Antispam-Untrusted:
 BCL:0;ARA:13230040|36860700016|82310400026|376014|1800799024|11006099003|56012099003|18002099003|22082099003;
X-Microsoft-Antispam-Message-Info-Original:
 =?us-ascii?Q?8X+dsZBRFueReStbzPU61xPKDHp6uHutM/eUb+Ax3uKJqhgpj4/D46XSgUMz?=
 =?us-ascii?Q?em+f5RNZ/ZFQZBNSddKDWFVINdCWu0cz5n4Jkra67Hkub5GZzpUfmotspnEk?=
 =?us-ascii?Q?IgWFTKhcqpEsLxGdsG8w8kmn2v3typClXIjetCBTlF6SCsbwYqTVzurkWRG1?=
 =?us-ascii?Q?xiKQyZfBNuTpPPlCaBqHVYoXEMq52SvNgseeYqICTBNV2gh7nYSBgrytBHWI?=
 =?us-ascii?Q?sFhfPI2anUcjEKy7qIRmu0tqb/IGyix+ybPjcxXQ1MnszaePT3uYncqdFevn?=
 =?us-ascii?Q?F0jJmlalANbaTlHeIyXd1NF5Tbzn2SPdO3quJEiNYOXk1sPOjgayzWcV3CNx?=
 =?us-ascii?Q?wsznYaEfXIoRdjx+itnKSKb4j0yAuH/VPLHq5icHUSpQM5C64cbJ30Q5Jatz?=
 =?us-ascii?Q?cCjURgaKWDGnBjsEo+92KPBPWAOg1lTpFOks67cmsa8zEEpsjaCchYTUmVbM?=
 =?us-ascii?Q?6X4JA1Q8kZaUgEEFaMbIoPt4vcKEs/bS29b6bPZUc9uROi7enKYPzr2RJhx2?=
 =?us-ascii?Q?1umyBMeP9yzHT0poPn0V/XSVX1Lz8yZPDLM8kYC683x5SsVn00E4Avu1Gz4T?=
 =?us-ascii?Q?SwbWtwE85QKKoR67gkf+NLYxNYxUTCvvbl0ZJKt9RjNUJKVTQb63WxLKv8JF?=
 =?us-ascii?Q?zzGYBlzfeoxAIyowiynOQBbDe8E/ovsuCEpanoQ2XCL8nGzgff/Pueenorf/?=
 =?us-ascii?Q?yLcP6u1gaM4B440o3PJVdLV+IjdHUpFPc4ifuyFftKWhpI9QGnHv+YaWXDGu?=
 =?us-ascii?Q?0BqC/ROPaMr/kNFqj71qfD9Gh7BOBwbOqNtU9b95LyJ+nZO18BkjsG1+UrZG?=
 =?us-ascii?Q?tGJeUb38RTyDFd5XAEDe7aanH2ls+JGzj3+5X9sLvuI9i0nhBL1/pOkcT6U0?=
 =?us-ascii?Q?jAp7MZ3aMQXOuAcrAwGXHBTj+Qy9uk/LApmajQCMXTIvx6+U9Y2tc1ijkIcz?=
 =?us-ascii?Q?0Jw5vMOYj3ApOmi3EcJdlQZ5AM6yquF0x0ChpXCp4RujLt4KaHDZX2OY1HMC?=
 =?us-ascii?Q?faWaZFaQxTJ9L6IO/k76wJJybiX2nCMyV/MMOIAJa8XKzZfCELVfHYXHKXYS?=
 =?us-ascii?Q?2E41Z0S53vunqB95FoTra70sDp6gUros7NL/uq7cllsByvL27McKmrv/30FI?=
 =?us-ascii?Q?TAvgo+oaQoxhvAdcDeeNIfrLUPDydpKtjTvUMIDs4GzkcGV1sVa9GhMOz2iz?=
 =?us-ascii?Q?u4WlXYVb/EC7ARbmyWaR6mXN/VSTUu+3evSCS364EG5r5meH8eNXgWnRug3Q?=
 =?us-ascii?Q?22ivHjIljQVj5yOF6QJRkZ4S1E9oIi0h0k4ADjlAALW7y+3lqPXhOKg3zkS1?=
 =?us-ascii?Q?UvPmaRAhnDw4hI5H72NFf/z/KHqCozMfxa9hOHTdF/g2aw=3D=3D?=
X-Forefront-Antispam-Report-Untrusted:
 CIP:213.95.148.172;CTRY:DE;LANG:en;SCL:1;SRV:;IPV:CAL;SFV:NSPM;H:denue6es012.ebgroup.elektrobit.com;PTR:eth1-fw1-nbg6.eb.noris.de;CAT:NONE;SFS:(13230040)(36860700016)(82310400026)(376014)(1800799024)(11006099003)(56012099003)(18002099003)(22082099003);DIR:OUT;SFP:1102;
X-Exchange-RoutingPolicyChecked:
 bnSM+Y7Rv3VdhbC2BGOcVRkccpD1KqK8rn1PkAzgvy1cDakD8khfsaXKbXClswbIrw96BzQpBjuDpK/ScPkJU47eNOuf2MGKw/MTL+dMBCmxS+jZPTYU8pHLPvyoUV+em3Hgm+PppcwXdXcM9ySthCcN1g3rvd36lk70u6IdePQ24P5kN9/vQymLSO+meCY/5Vnat7aLbShsSrpllrqse4HvIerXp8LQU+d/6PSpYLuUdpfbQ9uRtjfVyV9EsfY2ltaxYIlp0romxJgViK6QC5oduJEU1SCqiKnJ4ZwNaiP2MuOtMBxPRdRn96jvuK7gLVtDaUih39D7BPgoUiv7+w==
X-MS-Exchange-Transport-CrossTenantHeadersStamped: CO1PR08MB7141
X-MS-Exchange-SkipListedInternetSender:
 ip=[40.93.4.10];domain=BL2PR08CU001.outbound.protection.outlook.com
X-MS-Exchange-ExternalOriginalInternetSender:
 ip=[40.93.4.10];domain=BL2PR08CU001.outbound.protection.outlook.com
X-MS-Exchange-Transport-CrossTenantHeadersStripped:
 CY4PEPF0000EDD4.namprd03.prod.outlook.com
X-MS-PublicTrafficType: Email
X-MS-Office365-Filtering-Correlation-Id-Prvs:
	8ca7b305-fe1b-4348-0e94-08de9f239d82
X-Microsoft-Antispam:
	BCL:0;ARA:13230040|36860700016|14060799003|35042699022|376014|82310400026|156008|1800799024|56012099003|22082099003|18002099003|11006099003;
X-Microsoft-Antispam-Message-Info:
	=?us-ascii?Q?/4H4J85onWGMJIHBxEBiv+X7Lhgux+C+mOrTufeLzJ5Wcjl0AIFXtcSKg5tx?=
 =?us-ascii?Q?1/NMnEK5hOWlyWyM0Ss3qDdWxG64VR1jfu3KeOE2O/DFX4pX7C+XaApubBGU?=
 =?us-ascii?Q?D9m4dUTz3EokSlsZBjLL+gpTCc3IJJZ0GP3qtaLATzohSWVbXz7LrclqX1MB?=
 =?us-ascii?Q?kW128kThSPYg/s/OBCeP8dtg+oypWfvCIu/7lZYICQ+x1ip9lgvTKvxNWoF6?=
 =?us-ascii?Q?okF5Qb6ARnrduTH6AP+hW3uuwn+j/jm04SIRl/TSgSl02dwQgDPkirwy0KNR?=
 =?us-ascii?Q?qswSoAz1FIdcR1Q4G6Y/InOjBi4H+uuf6Khe+O3KoO2+x142vUJlWX4qvBAx?=
 =?us-ascii?Q?eNorrgJmM51MWni3zelcP8g7xLeTZ92ZSlh5QDG47YCrtOAEoAG77So+jHAa?=
 =?us-ascii?Q?9ELilmMoyNpf0j3jdoB8oNGYqLO3YM56DXb7qKR7ZHpAr/Rr4dbT6b+aghe5?=
 =?us-ascii?Q?m1IAiEOlNHsmC0+d+FBhsrUG/GnLr93Qtpp49gYQdCa5AHDSvahsivY55G14?=
 =?us-ascii?Q?U5xgdQxk5CCAIILURjZhB4JPxe/BSFKwDq3xz9T2pq2kTgwaHljXZw/6/Xli?=
 =?us-ascii?Q?x9dKWeS/6Frg7y4FN+bEe9TCMtY4c8wP/xolNEmhsaGuVASsKhXIyMjfZkyZ?=
 =?us-ascii?Q?4jxAVpUDvrqOyme8dTwq20niT6qqRWbmVcGsRr8jhUDOgfJLW8+3qBo1z/G1?=
 =?us-ascii?Q?EmINZ5zsFbqMKANsTdqCk4ir33ERxx6dB6S39F/mhRB2JIZkPYe2ZjODK+1x?=
 =?us-ascii?Q?sW2S+jvoMa437uq22jDyDNzK1j7IRIp/O2yXWqZ30+pWJSQK2hKpFShhPxCu?=
 =?us-ascii?Q?D/kZFjqHpJMpQ5IXrjNoTSNgLdhptyBvSc1cMbvBoXVac6nalHJqOLj4JrsC?=
 =?us-ascii?Q?plMy+FEhA54ikFQDNZpp4yth8010ya9PdqgRzQT4QeoLonolAjZl+LAzd+ut?=
 =?us-ascii?Q?eFC1xwfWG6kZ7QeItS9giZEh1boxNrhlR5aRaBmwPGuYjd23lqAoKzWmo4oB?=
 =?us-ascii?Q?D2IXvcMI+JEIwoWolJgTFDwK3enXpu7kGHbv3uJSq/Cdt7VeOFr5IeTNC+1S?=
 =?us-ascii?Q?+D/uiid7ocxK9kxKzUrD3gYISLO1y23dJhtWL2IZM6HKH5xzS2fmWdxTiNuN?=
 =?us-ascii?Q?PAf9HQ1wwKHqU5b2v0p6ED+DoZ/Xkc42bnsf+Few9+lDGUVM5PGxKglJeLpE?=
 =?us-ascii?Q?awZTgXftLS+PbI/ejaDD299Shi62RpG9mjEbK/AW+FypBjsk14wKUgAvOySA?=
 =?us-ascii?Q?CVW5dks2rD/fYIRz2aWrYkQmZrVBkrCemZA4EC1iKsQ9wWgkg6WsWmA5ybHV?=
 =?us-ascii?Q?AX2XAnElgGPGom4v/I6w2ALRfDp8ZmdOAgQL2TgRZOZJdA=3D=3D?=
X-Forefront-Antispam-Report:
	CIP:4.79.107.243;CTRY:US;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:BL2PR08CU001.outbound.protection.outlook.com;PTR:mail-bl2pr08cu00102.outbound.protection.outlook.com;CAT:NONE;SFS:(13230040)(36860700016)(14060799003)(35042699022)(376014)(82310400026)(156008)(1800799024)(56012099003)(22082099003)(18002099003)(11006099003);DIR:OUT;SFP:1102;
X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1
X-MS-Exchange-AntiSpam-MessageData-0:
	2Fvt8Kd+xOnJoawRPR2lCMhCkX9WijTA0PWu6jPK+pBe5IW5ACIqegeHq7SVYP1aWW9Yopc18rjK02fVKPcQw7R37YULtQbyY/MJ8Wy/rXDo4XJaesHaQBLDzU3O1THL8xSLn7t2ndjjkSXpVH+r4XQMYThAyf6ZWsSskq6KKX1c9ySvwzuZFfwdCZ8D+wd/vAqxi4oEMD5484q+wHhF6iTIjrHdRR5CaSqOlKpcZgNJOznnJM1KzUEioqSqE2IEbUx0abI4clUAHw4OkIsGc7olBdhlRI012nm5oeIDWl0aM3VOKpZvcrjWc6Q0e1VlrsA4TRd29zijj+ncQ4D9h+0c57Wd2PIO8vkMbg34MZ2u/zyEjymIfnA7uHaF78IKMxN9RLdO1+9gKyC3I+KwBW/VlpfapghVIOgXgDrQjKywHGF2IHGxaJ1Is67YjjAZ
X-OriginatorOrg: elektrobit.com
X-MS-Exchange-CrossTenant-OriginalArrivalTime: 20 Apr 2026 21:27:30.5364
 (UTC)
X-MS-Exchange-CrossTenant-Network-Message-Id: 37284b46-519a-49e6-f973-08de9f23a111
X-MS-Exchange-CrossTenant-Id: e764c36b-012e-4216-910d-8fd16283182d
X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=e764c36b-012e-4216-910d-8fd16283182d;Ip=[4.79.107.243];Helo=[usbth1es003.ebgroup.elektrobit.com]
X-MS-Exchange-CrossTenant-AuthAs: Internal
X-MS-Exchange-CrossTenant-AuthSource: TreatMessagesAsInternal-CY4PEPF0000EDD4.namprd03.prod.outlook.com
X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem
X-MS-Exchange-Transport-CrossTenantHeadersStamped: DM3PR08MB9645
X-purgate-ID: tlsNG-c1860d/1776720461-C3F7ADB1-315A97EC/0/0
X-purgate-type: clean
X-purgate-size: 7264

This commit replaces the concrete p2m_domain member in arch_domain with a
pointer to p2m_domain, which is allocated with xzalloc during p2m
initialization.

In the following commits, the altp2m_init and altp2m_teardown routines from
x86 are be moved to common code. These routines (respectively) allocate and
free the p2m_domain structs for altp2m views.

While it would be possible to have special code paths for
allocating/freeing altp2m views while keeping the hostp2m as an concrete
member, this results in code duplication and increases complexity without
any clear benefit. Therefore, switching the hostp2m to be allocated
separately from arch_domain (similarly to x86) makes it possible to use the
same functions for both allocation/teardown/freeing of the hostp2m and
altp2m views.

This is commit 4/12 of the altp2m_init/altp2m_teardown routines phase.

Signed-off-by: Rose Spangler <Rose.Spangler@elektrobit.com>
---
v6: Introduced this patch.
---
 xen/arch/arm/domain.c                    |  2 +-
 xen/arch/arm/include/asm/domain.h        |  2 +-
 xen/arch/arm/include/asm/p2m.h           |  2 +-
 xen/arch/arm/mm.c                        |  2 +-
 xen/arch/arm/mmu/p2m.c                   | 27 +++++++++++++++++++++---
 xen/arch/arm/traps.c                     |  2 +-
 xen/drivers/passthrough/arm/ipmmu-vmsa.c |  2 +-
 xen/drivers/passthrough/arm/smmu-v3.c    |  2 +-
 xen/drivers/passthrough/arm/smmu.c       |  2 +-
 9 files changed, 32 insertions(+), 11 deletions(-)

diff --git a/xen/arch/arm/domain.c b/xen/arch/arm/domain.c
index 26380a807cad..be824a5ba18d 100644
--- a/xen/arch/arm/domain.c
+++ b/xen/arch/arm/domain.c
@@ -1099,7 +1099,7 @@ int domain_relinquish_resources(struct domain *d)
          * We are about to free the intermediate page-tables, so clear the
          * root to prevent any walk to use them.
          */
-        p2m_clear_root_pages(&d->arch.p2m);
+        p2m_clear_root_pages(d->arch.p2m);
 
     PROGRESS(p2m):
         ret = p2m_teardown(d);
diff --git a/xen/arch/arm/include/asm/domain.h b/xen/arch/arm/include/asm/domain.h
index ffe5d0d9f0a6..576dbdec20af 100644
--- a/xen/arch/arm/include/asm/domain.h
+++ b/xen/arch/arm/include/asm/domain.h
@@ -72,7 +72,7 @@ struct arch_domain
 #endif
 
     /* Virtual MMU */
-    struct p2m_domain p2m;
+    struct p2m_domain *p2m;
 
     struct hvm_domain hvm;
 
diff --git a/xen/arch/arm/include/asm/p2m.h b/xen/arch/arm/include/asm/p2m.h
index 010ce8c9ebbd..23df91ea13e9 100644
--- a/xen/arch/arm/include/asm/p2m.h
+++ b/xen/arch/arm/include/asm/p2m.h
@@ -410,7 +410,7 @@ static inline int get_page_and_type(struct page_info *page,
 }
 
 /* get host p2m table */
-#define p2m_get_hostp2m(d) (&(d)->arch.p2m)
+#define p2m_get_hostp2m(d) ((d)->arch.p2m)
 
 static inline bool p2m_vm_event_sanity_check(struct domain *d)
 {
diff --git a/xen/arch/arm/mm.c b/xen/arch/arm/mm.c
index 6df8b616e464..46f9363ea851 100644
--- a/xen/arch/arm/mm.c
+++ b/xen/arch/arm/mm.c
@@ -116,7 +116,7 @@ bool page_is_offlinable(mfn_t mfn)
 
 unsigned long domain_get_maximum_gpfn(struct domain *d)
 {
-    return gfn_x(d->arch.p2m.max_mapped_gfn);
+    return gfn_x(d->arch.p2m->max_mapped_gfn);
 }
 
 void share_xen_page_with_guest(struct page_info *page, struct domain *d,
diff --git a/xen/arch/arm/mmu/p2m.c b/xen/arch/arm/mmu/p2m.c
index 51abf3504fcf..3ecb969a0369 100644
--- a/xen/arch/arm/mmu/p2m.c
+++ b/xen/arch/arm/mmu/p2m.c
@@ -5,6 +5,7 @@
 #include <xen/lib.h>
 #include <xen/sched.h>
 #include <xen/softirq.h>
+#include <xen/xmalloc.h>
 
 #include <asm/alternative.h>
 #include <asm/event.h>
@@ -1475,7 +1476,7 @@ void p2m_final_teardown(struct domain *d)
 
     /* p2m not actually initialized */
     if ( !p2m->domain )
-        return;
+        goto free_p2m;
 
     /*
      * No need to call relinquish_p2m_mapping() here because
@@ -1499,11 +1500,13 @@ void p2m_final_teardown(struct domain *d)
     radix_tree_destroy(&p2m->mem_access_settings, NULL);
 
     p2m->domain = NULL;
+
+free_p2m:
+    xfree(p2m);
 }
 
-int p2m_init(struct domain *d)
+static int p2m_initialise(struct domain *d, struct p2m_domain *p2m)
 {
-    struct p2m_domain *p2m = p2m_get_hostp2m(d);
     int rc;
     unsigned int cpu;
 
@@ -1556,6 +1559,24 @@ int p2m_init(struct domain *d)
     return 0;
 }
 
+int p2m_init(struct domain *d)
+{
+    struct p2m_domain *p2m = xzalloc(struct p2m_domain);
+    int rc;
+
+    if ( !p2m )
+        return -ENOMEM;
+
+    rc = p2m_initialise(d, p2m);
+
+    if ( !rc )
+        d->arch.p2m = p2m;
+    else
+        xfree(p2m);
+
+    return rc;
+}
+
 /*
  * The function will go through the p2m and remove page reference when it
  * is required. The mapping will be removed from the p2m.
diff --git a/xen/arch/arm/traps.c b/xen/arch/arm/traps.c
index 0c01f37ad6b4..637d27659b20 100644
--- a/xen/arch/arm/traps.c
+++ b/xen/arch/arm/traps.c
@@ -984,7 +984,7 @@ void vcpu_show_registers(struct vcpu *v)
 #endif
 
 #ifdef CONFIG_MMU
-    ctxt.vttbr_el2 = v->domain->arch.p2m.vttbr;
+    ctxt.vttbr_el2 = v->domain->arch.p2m->vttbr;
 #endif
 
     _show_registers(&v->arch.cpu_info->guest_cpu_user_regs, &ctxt, 1, v);
diff --git a/xen/drivers/passthrough/arm/ipmmu-vmsa.c b/xen/drivers/passthrough/arm/ipmmu-vmsa.c
index fa9ab9cb1330..d246c5e59005 100644
--- a/xen/drivers/passthrough/arm/ipmmu-vmsa.c
+++ b/xen/drivers/passthrough/arm/ipmmu-vmsa.c
@@ -565,7 +565,7 @@ static int ipmmu_domain_init_context(struct ipmmu_vmsa_domain *domain)
      * Use P2M table for this Xen domain.
      */
     ASSERT(domain->d != NULL);
-    ttbr = page_to_maddr(domain->d->arch.p2m.root);
+    ttbr = page_to_maddr(domain->d->arch.p2m->root);
 
     dev_info(domain->mmu->root->dev, "%pd: Set IPMMU context %u (pgd 0x%"PRIx64")\n",
              domain->d, domain->context_id, ttbr);
diff --git a/xen/drivers/passthrough/arm/smmu-v3.c b/xen/drivers/passthrough/arm/smmu-v3.c
index bf153227dbd9..a7fbe58cba77 100644
--- a/xen/drivers/passthrough/arm/smmu-v3.c
+++ b/xen/drivers/passthrough/arm/smmu-v3.c
@@ -1205,7 +1205,7 @@ static int arm_smmu_domain_finalise_s2(struct arm_smmu_domain *smmu_domain,
 	vtcr->tsz = 64 - p2m_ipa_bits;
 	vtcr->sl = 2 - P2M_ROOT_LEVEL;
 
-	arm_lpae_s2_cfg.vttbr  = page_to_maddr(smmu_domain->d->arch.p2m.root);
+	arm_lpae_s2_cfg.vttbr  = page_to_maddr(smmu_domain->d->arch.p2m->root);
 
 	vmid = arm_smmu_bitmap_alloc(smmu->vmid_map, smmu->vmid_bits);
 	if (vmid < 0)
diff --git a/xen/drivers/passthrough/arm/smmu.c b/xen/drivers/passthrough/arm/smmu.c
index d63c9015510e..0975be2562bb 100644
--- a/xen/drivers/passthrough/arm/smmu.c
+++ b/xen/drivers/passthrough/arm/smmu.c
@@ -1247,7 +1247,7 @@ static void arm_smmu_init_context_bank(struct arm_smmu_domain *smmu_domain)
 	/* TTBR0 */
 	/* Xen: The page table is shared with the P2M code */
 	ASSERT(smmu_domain->cfg.domain != NULL);
-	p2maddr = page_to_maddr(smmu_domain->cfg.domain->arch.p2m.root);
+	p2maddr = page_to_maddr(smmu_domain->cfg.domain->arch.p2m->root);
 
 	dev_notice(smmu->dev, "d%u: p2maddr 0x%"PRIpaddr"\n",
 		   smmu_domain->cfg.domain->domain_id, p2maddr);
-- 
2.34.1



From xen-devel-bounces@lists.xenproject.org Mon Apr 20 21:27:45 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 20 Apr 2026 21:27:45 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1287506.1567958 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wEw9g-0002hA-Ql; Mon, 20 Apr 2026 21:27:44 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1287506.1567958; Mon, 20 Apr 2026 21:27: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 1wEw9g-0002fl-Iv; Mon, 20 Apr 2026 21:27:44 +0000
Received: by outflank-mailman (input) for mailman id 1287506;
 Mon, 20 Apr 2026 21:27:42 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <Rose.Spangler@elektrobit.com>) id 1wEw9e-000283-4N
 for xen-devel@lists.xenproject.org; Mon, 20 Apr 2026 21:27:42 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wEw9d-001N7n-GO
 for xen-devel@lists.xenproject.org; Mon, 20 Apr 2026 23:27:41 +0200
Received: from [10.42.69.3] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <Rose.Spangler@elektrobit.com>)
 id 69e699fc-bab6-0a2a0a5309dd-0a2a4503cf4a-42
 for <xen-devel@lists.xenproject.org>; Mon, 20 Apr 2026 23:27:41 +0200
Received: from [40.107.201.99]
 (helo=CH4PR04CU002.outbound.protection.outlook.com)
 by tlsNG-33051d.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.1)
 (envelope-from <Rose.Spangler@elektrobit.com>)
 id 69e69a4c-672d-0a2a45030019-286bc9630e4a-3
 for <xen-devel@lists.xenproject.org>; Mon, 20 Apr 2026 23:27:41 +0200
Received: from SA9PR11CA0007.namprd11.prod.outlook.com (2603:10b6:806:6e::12)
 by DS4PR08MB10791.namprd08.prod.outlook.com (2603:10b6:8:2a6::17)
 with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9818.20; Mon, 20 Apr
 2026 21:27:28 +0000
Received: from SN1PEPF0002529D.namprd05.prod.outlook.com
 (2603:10b6:806:6e:cafe::d8) by SA9PR11CA0007.outlook.office365.com
 (2603:10b6:806:6e::12) with Microsoft SMTP Server (version=TLS1_3,
 cipher=TLS_AES_256_GCM_SHA384) id 15.20.9791.48 via Frontend Transport; Mon,
 20 Apr 2026 21:27:28 +0000
Received: from usbth1es003.ebgroup.elektrobit.com (4.79.107.243) by
 SN1PEPF0002529D.mail.protection.outlook.com (10.167.242.4) with Microsoft
 SMTP Server (version=TLS1_3, cipher=TLS_AES_256_GCM_SHA384) id 15.20.9791.48
 via Frontend Transport; Mon, 20 Apr 2026 21:27:27 +0000
Received: from usbth1es003 (localhost [127.0.0.1])
 by usbth1es003.ebgroup.elektrobit.com (Postfix) with SMTP id 4fzz8v0nmFz1wdP; 
 Mon, 20 Apr 2026 14:27:27 -0700 (PDT)
Received: from CO1PR07CU001.outbound.protection.outlook.com
 (mail-co1pr07cu00101.outbound.protection.outlook.com [40.93.10.89])
 (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)
 key-exchange secp384r1 server-signature RSA-PSS (2048 bits) server-digest
 SHA256) (No client certificate requested)
 by usbth1es003.ebgroup.elektrobit.com (Postfix) with ESMTPS;
 Mon, 20 Apr 2026 14:27:26 -0700 (PDT)
Received: from CH5PR05CA0023.namprd05.prod.outlook.com (2603:10b6:610:1f0::25)
 by BL3PR08MB7364.namprd08.prod.outlook.com (2603:10b6:208:357::17)
 with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9818.33; Mon, 20 Apr
 2026 21:27:22 +0000
Received: from CH2PEPF00000099.namprd02.prod.outlook.com
 (2603:10b6:610:1f0:cafe::29) by CH5PR05CA0023.outlook.office365.com
 (2603:10b6:610:1f0::25) with Microsoft SMTP Server (version=TLS1_3,
 cipher=TLS_AES_256_GCM_SHA384) id 15.20.9791.48 via Frontend Transport; Mon,
 20 Apr 2026 21:27:21 +0000
Received: from denue6es012.ebgroup.elektrobit.com (213.95.148.172) by
 CH2PEPF00000099.mail.protection.outlook.com (10.167.244.20) with Microsoft
 SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id
 15.20.9791.48 via Frontend Transport; Mon, 20 Apr 2026 21:27:21 +0000
Received: from ubuntu.localdomain (10.10.178.50) by
 denue6es012.ebgroup.elektrobit.com (10.243.160.140) with Microsoft SMTP
 Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id
 15.2.2562.35; Mon, 20 Apr 2026 23:27:17 +0200
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@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=elektrobit.com header.i="@elektrobit.com" header.h="From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck"; dkim=pass header.s=selector1 header.d=elektrobit.com header.i="@elektrobit.com" header.h="From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck"
ARC-Seal: i=2; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=pass;
 b=Kyf7/ZgHnGQQzKCMH36FhTphA12Ijc+sZcT629uaAqIIrbzBUc8hAThw6OuOpbwU4K1aOhTS5Q+8ABNYi//gZ/6uSFrHfGO+XD+vGUR6l9QFPGuOQNDDfn21X59DzlI1vA46dZkZNQ/59+gu2y6URVz/Y7gSi/aQ9XM1mdYYNG7wp3d+iaf1bTSR4vSHaGlk4i+RRP8OgPde5hJHubpw+vHgfQZunF7LABc2phjBQ6BDOBQhpfIGjIuPt0DB+hpldqdxFQB8L+SXpWyMEWTDWwqz20/M+GA0rxTUdpCl8X9aeQCjx43G+lXJEhvIBzdt+lGAC7DHuSe5GqcvKCHg6w==
ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com;
 s=arcselector10001;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1;
 bh=Ct7OYHDuserQjrdnXDT2Q3J5e72VZGG2o8HBBgpiIsc=;
 b=jeQnDKACIStMJKaHBmfo1kHCg8xVk0tn7TTRJtRHq32Rve/U3MfzFnLrtRQyP7Ouaq5XtEvgBwSWxdmYe2bzg8K9v82dYYD3HBogK454M5BcwOEEfpdwh//u3cZz11c9E8cO+7vImNcQ6bnrxOzjZJcHLM00MSVHW+hGHRyK2CAbzo7ao1sSMtLsYXUUNxg8UIyD/QPXnNBa1eLU6CnBfT7zyCnMKnmlmKvKdh6ZRjcUCXsYMqvtzBdWGEr3Q0I4bfRHgO7tJbTdTaYn8wDJLe9vd7SBXWnfRYTI9MNJvmkrhgIAIqKD6N9Bntq6KUajKs4RyMsoSWahCjtQ36MYDg==
ARC-Authentication-Results: i=2; mx.microsoft.com 1; spf=pass (sender ip is
 40.93.10.89) smtp.rcpttodomain=citrix.com smtp.mailfrom=elektrobit.com;
 dmarc=pass (p=quarantine sp=none pct=100) action=none
 header.from=elektrobit.com; dkim=pass (signature was verified)
 header.d=elektrobit.com; arc=pass (0 oda=1 ltdi=1
 spf=[1,1,smtp.mailfrom=elektrobit.com]
 dmarc=[1,1,header.from=elektrobit.com])
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=elektrobit.com;
 s=selector1;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck;
 bh=Ct7OYHDuserQjrdnXDT2Q3J5e72VZGG2o8HBBgpiIsc=;
 b=BQ9mD1vz27gAQQlAgYdXw6gX4wmBMCNVTTQd2QJr/RI+F2WKhLisuIgRg4VVJxwZi8J4auyOLW6ORPM5RcU31U5jQ+Ld9RcWilXJGw8gwp1uowAwQo2b1evZrd7CRGdlrgRGlJHZdkocVFeeayPa9Q105iYfPR/PcwVuqXYhOzY=
X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 40.93.10.89)
 smtp.mailfrom=elektrobit.com; dkim=pass (signature was verified)
 header.d=elektrobit.com;dmarc=pass action=none header.from=elektrobit.com;
Received-SPF: Pass (protection.outlook.com: domain of elektrobit.com
 designates 40.93.10.89 as permitted sender) receiver=protection.outlook.com;
 client-ip=40.93.10.89; helo=CO1PR07CU001.outbound.protection.outlook.com;
 pr=C
ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none;
 b=Q/PGi302Mh1oqY8s11ew3pRbPUO1VE77wUA+skc1VyZBVcjo1d2yn+XMsRQpnPm5FVA9jp1OCxOKAu8Fv+7vYiKTnQvt8RhHsBvi/TDVc0yjOcg9qAkjA19wD1PvAMDSReXy3LD+r8itSu8d3/u+KvFN6lCb8L7L+B3vAreVBVBYQr8WGRrN1SkjOGsiWdItrBIV1YjhXewxOSvYBSTNMnYN6cipqcCN3vvOa87M/vq1iDfNr+OolyAryouS7LucYAujeo4gu6JVwPhuArN83sI5OztQGC/TEWsDoSeTjgwCUI6JaJ8jZL0Svr6cmLbtOpX5zz0uKoiorQXIRWJy+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=Ct7OYHDuserQjrdnXDT2Q3J5e72VZGG2o8HBBgpiIsc=;
 b=pCbhG9aSLCvfbOBgyXfFxIOiDBQwd5v+Lk+yWVGF44QcKbrm2KAOirY8AJMEFIIaDWwcQeU6sSsPdow6eDhM6PZRx3/2XHreFFOjTZnVJk3uqD/zSRsD1s60kTQ85O0UFUogxlsvij0AmoU2Wmu3tQtB55zp/cX/z/oWLnR64zoWmNCck1bdV1TG4lNxzItCPVgFR9Devjd76wmFdWuR5+VUAbSIPbFjIM4xuwVB+9An2DviUpZ9ylmM829d0Qq/UChLoA8UZJHf1HZ93rtrtwkcgz8OkG50//OGqc4a9v0wunSVqqwSBGMvW1L0an9OMAlNNJo7PC6DAY2ORDP2ZA==
ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass (sender ip is
 213.95.148.172) smtp.rcpttodomain=lists.xenproject.org
 smtp.mailfrom=elektrobit.com; dmarc=pass (p=quarantine sp=none pct=100)
 action=none header.from=elektrobit.com; dkim=none (message not signed);
 arc=none (0)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=elektrobit.com;
 s=selector1;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck;
 bh=Ct7OYHDuserQjrdnXDT2Q3J5e72VZGG2o8HBBgpiIsc=;
 b=BQ9mD1vz27gAQQlAgYdXw6gX4wmBMCNVTTQd2QJr/RI+F2WKhLisuIgRg4VVJxwZi8J4auyOLW6ORPM5RcU31U5jQ+Ld9RcWilXJGw8gwp1uowAwQo2b1evZrd7CRGdlrgRGlJHZdkocVFeeayPa9Q105iYfPR/PcwVuqXYhOzY=
X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 213.95.148.172)
 smtp.mailfrom=elektrobit.com; dkim=none (message not signed)
 header.d=none;dmarc=pass action=none header.from=elektrobit.com;
Received-SPF: Pass (protection.outlook.com: domain of elektrobit.com
 designates 213.95.148.172 as permitted sender)
 receiver=protection.outlook.com; client-ip=213.95.148.172;
 helo=denue6es012.ebgroup.elektrobit.com; pr=C
From: Rose Spangler <Rose.Spangler@elektrobit.com>
To: <xen-devel@lists.xenproject.org>
CC: Rose Spangler <Rose.Spangler@elektrobit.com>, Jan Beulich
	<jbeulich@suse.com>, Andrew Cooper <andrew.cooper3@citrix.com>,
	=?UTF-8?q?Roger=20Pau=20Monn=C3=A9?= <roger.pau@citrix.com>, Teddy Astie
	<teddy.astie@vates.tech>
Subject: [RFC PATCH v6 13/43] x86/altp2m: Add lock functions accessible from common code
Date: Mon, 20 Apr 2026 17:26:18 -0400
Message-ID: <20260420212648.208640-6-Rose.Spangler@elektrobit.com>
X-Mailer: git-send-email 2.34.1
In-Reply-To: <20260420212648.208640-1-Rose.Spangler@elektrobit.com>
References: <20260420212648.208640-1-Rose.Spangler@elektrobit.com>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit
Content-Type: text/plain
X-Originating-IP: [10.10.178.50]
X-ClientProxiedBy: denue6es013.ebgroup.elektrobit.com (10.243.160.141) To
 denue6es012.ebgroup.elektrobit.com (10.243.160.140)
X-EOPAttributedMessage: 1
X-MS-Exchange-SkipListedInternetSender:
 ip=[213.95.148.172];domain=denue6es012.ebgroup.elektrobit.com
X-MS-TrafficTypeDiagnostic:
	CH2PEPF00000099:EE_|BL3PR08MB7364:EE_|SN1PEPF0002529D:EE_|DS4PR08MB10791:EE_
X-MS-Office365-Filtering-Correlation-Id: 5ea5f87b-1d35-40c0-4c8d-08de9f239f75
X-SM-outgoing: yes
X-MS-Exchange-SenderADCheck: 1
X-MS-Exchange-AntiSpam-Relay: 0
X-Microsoft-Antispam-Untrusted:
 BCL:0;ARA:13230040|704162011799003|82310400026|36860700016|376014|1800799024|56012099003|22082099003|18002099003;
X-Microsoft-Antispam-Message-Info-Original:
 =?us-ascii?Q?WHPnQIXN2eX7sItNdR+heqLOcgAJVqiLJb06qhHWJ7Z7yNEEEwvurq9TqAZ9?=
 =?us-ascii?Q?5m3VOHqo/Zo2ig0oSLBtPZdSNrwBE/MU85u87WzIBi5ugz/uvpo2OjQql5fP?=
 =?us-ascii?Q?kZVoefCCi6HQip4K+9RcbyNLon5SAojuuLLQtCKjdEHXOsxkGZiuMlkLKTgD?=
 =?us-ascii?Q?pz8l9oyDnFKdQceSj4Vcd3LhTcMobHdN8/9PxDhCMNr5BDDX98MdBTos8f4X?=
 =?us-ascii?Q?edGO97mO6UzjvBhq5KLWq4F+f3W42s6FNggwJ1g2lhJ7v9LWWa6LUWhHKMUP?=
 =?us-ascii?Q?2gN9ukxF+79xQsASetz4fqBNsHqc7FGoqMdXJJY2p0nBRurkhF+xZt3Y58BG?=
 =?us-ascii?Q?OxuxVvQHtr7wmTQAjQermNQkSWTy4goa08wwkGEgDlwT9wIIg8SBjLmo7JPo?=
 =?us-ascii?Q?jwDGvV3ll1D3dXEW02k22Ju86eC8YQ9ul85/gmKtV9ntcdpWwHgAomFqXaD9?=
 =?us-ascii?Q?32YDis3KPT0c5U9kVoQnzX1cvG3RS1U4Wh1JiLGza7pTK2Tfu9BiNlUtFQx4?=
 =?us-ascii?Q?5hG5uFEEKMO9jnNaxe5N0/dDtzKTjX/hjz8y9SMn4QRf7T8PaHfQmG51+uw4?=
 =?us-ascii?Q?rqGMdDileTuPB5rigtGx9Z1LkaFx6rxfeGaiOp+fHtrcNi+pAuhl7vQZdKl8?=
 =?us-ascii?Q?bORRMVP+bdR5nn9Qe4Vrw1v41oJC9OL9WLlUNXQxTdfQG5f+RE/KqB/2Zma6?=
 =?us-ascii?Q?BtINK2ikoZO5ZcR7lvWGNakR1ZNOz8K5f0hLJdBD8L3T65y0JWTtOlIhzmmN?=
 =?us-ascii?Q?VcYcysOAAqapQQL7bJ7cTNf9IANyVdASq6RrFOER+iQhHx51Odk4+oZ0qIf4?=
 =?us-ascii?Q?h0iqfHN/4nVMwyx2FBR+3MPuHeifz7pta9hLnuin6j9Aj0hTWyJwK1gvaA1l?=
 =?us-ascii?Q?8aA96C3ITSlAPUdGC3yqHnyHh/eL3NPtRm2jPjnS2KLh95scGqS2MvMLgpp1?=
 =?us-ascii?Q?xoIHmi3TffpKMzu7BgqMap+avdxEBrtTsid1IcnO9vMG7aTkH8IJfG/a7Z87?=
 =?us-ascii?Q?iyaWhX6lnytQ3WWxR5WJW2zuorDhrMWVv1aUyKfAtN06swQs/85bsWbO+O3y?=
 =?us-ascii?Q?tvBdA67QhAItPVjf5+0lFeGBFCFN7uzDUFlWQcTAjRofSfWdXVoD3LUL43NC?=
 =?us-ascii?Q?vF5otZPgHw55jHdaeIDQblKOAPW83rSchg=3D=3D?=
X-Forefront-Antispam-Report-Untrusted:
 CIP:213.95.148.172;CTRY:DE;LANG:en;SCL:1;SRV:;IPV:CAL;SFV:NSPM;H:denue6es012.ebgroup.elektrobit.com;PTR:eth1-fw1-nbg6.eb.noris.de;CAT:NONE;SFS:(13230040)(704162011799003)(82310400026)(36860700016)(376014)(1800799024)(56012099003)(22082099003)(18002099003);DIR:OUT;SFP:1102;
X-Exchange-RoutingPolicyChecked:
 ZXdEGbdDMnaIXcK0+1mXqOTQ2i1YJ7axfzXR7LH1DBs4FJOkRUfAAvt03XyhGCgYfnbhWbu1rTgAHvzwz0TqKip5toACGSr5n2PUmUtFzprd7m3vOdLRSv5BysM/t96W0dowm1CFngMmK3SoQCqjZt6HYSlHdBMGhTGVD/tHwTnhT56hBcILDtd9roS3ERGBgY5drLuYomIgTt1mFNq3Ol7efMxDhKQl0LCdry2sXz+bHK+g28I8qbM+qGxGwWCChiAjo6cg0hkb9iBdO2OshVLeyBSuZOFwyalX4kUgMGFF60caN6uDeHahx1grTSVFF2eq0rVzR7ZfhyYWgz+XVg==
X-MS-Exchange-Transport-CrossTenantHeadersStamped: BL3PR08MB7364
X-MS-Exchange-SkipListedInternetSender:
 ip=[40.93.10.89];domain=CO1PR07CU001.outbound.protection.outlook.com
X-MS-Exchange-ExternalOriginalInternetSender:
 ip=[40.93.10.89];domain=CO1PR07CU001.outbound.protection.outlook.com
X-MS-Exchange-Transport-CrossTenantHeadersStripped:
 SN1PEPF0002529D.namprd05.prod.outlook.com
X-MS-PublicTrafficType: Email
X-MS-Office365-Filtering-Correlation-Id-Prvs:
	d8ac005d-1b6f-41cf-b7dc-08de9f239bbe
X-Microsoft-Antispam:
	BCL:0;ARA:13230040|704162011799003|36860700016|156008|14060799003|1800799024|376014|35042699022|82310400026|56012099003|22082099003|18002099003;
X-Microsoft-Antispam-Message-Info:
	=?us-ascii?Q?N/6+q/KYCFgRYwjYhU7I1Ic1rZV1gogNtkR5B83ZAsiwAQ4ezv5CWSzwYLrV?=
 =?us-ascii?Q?+ad0g/PnWdOH6P/aG4yqo7LBy23PWNQqhs3VRsY4wp7jLuK6WZQs2Tz7lSJj?=
 =?us-ascii?Q?KGAR6qoiHKANLur7ERf1Pm5RhZo8yxeisRh3dK5LU99/JQv6MrNS8r9PR2Ix?=
 =?us-ascii?Q?HC8NSZK+ObLeuTXv/CI3qq2lF/lpc402shi0f93cu4ZgKX9Dd7y2a3ybiVEF?=
 =?us-ascii?Q?IoGUF10dZ7VSuqK+E0WusT4ZxuyNUll+vud+Oc9B0+8ffFJEyHvt+Rhm2T2u?=
 =?us-ascii?Q?up/pwiO7JpEWfVmMPFewYRZ1qU4SIxdo8bCH5EkjvaN3m3qtMEtg4zKcJq0y?=
 =?us-ascii?Q?cfcXnEhBMcxspB0trpWrtpiZQPi3h59YTwcTpALh42Z+4bfGDVXRrnCp+chh?=
 =?us-ascii?Q?gBKRxcT2rjVn2k9rOA1ZOKx5EyX83HzOyjqJkqsPi+LH7zLSEDzNFQDgqwXG?=
 =?us-ascii?Q?KVtmuKjFXZdczFRQCdAvU4cjK8EreLtP8uTWAJmpXhsEsVGA54c3a91t29pB?=
 =?us-ascii?Q?FCVtGcFKLgG/n3ra0N3qGFOArEZcOkmItp00h+MqnuLCJKpJlersP4MSLzU5?=
 =?us-ascii?Q?GDL1qVxLVLuzNDrO2L927lqnSLo7gIPe697nw+7LfN+mqMJFmDU48nr/5KJI?=
 =?us-ascii?Q?t7Vq5oVLQ/WBKk+X6QRTJ9U9BJ1maz583BGWzWTRGvVJMxh7MM3Sd7FkNBWs?=
 =?us-ascii?Q?9abkNZXFzW9RBRxeW9Z+TwQVVqArcw62ojq81/YZAWOviM3CHdkIxoa14sNA?=
 =?us-ascii?Q?EYra6Xl94EC+XvPi2MQeEHfupGeGkThIeWwlZzOcIJ8US2ev8axdlGQ3be3d?=
 =?us-ascii?Q?5EdjDEL4Qr/jNAVJsU6bQRO/aTyIaQC86SjAaGiqRL6ld9CU+5FdFXMiLlLT?=
 =?us-ascii?Q?nIsw4PhmZtES5Dtkyi46fC/VjSxB+qm1ycHk/+WfeXrpu1XzLr+firK+py8k?=
 =?us-ascii?Q?7M+LY5Lei/tcguogXHa3UC3Nf5n3sIBscj0CDKfpaul1uQITGJQLeh7OzZCs?=
 =?us-ascii?Q?/CWCvgAC9DSLnZ0M/EAEVf51aEgtVLZzD790eJJiKQN+RAiDYAKiIGnYjNlS?=
 =?us-ascii?Q?2x1UXFIKwRlu4HIrpu+9OyNr76GybTL+0XDlXrFtK+drw1er7UzoZJaglVZZ?=
 =?us-ascii?Q?iC6NzfKZxe0Na9eX35RHj5GOsZKz+MPngg=3D=3D?=
X-Forefront-Antispam-Report:
	CIP:4.79.107.243;CTRY:US;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:CO1PR07CU001.outbound.protection.outlook.com;PTR:mail-co1pr07cu00101.outbound.protection.outlook.com;CAT:NONE;SFS:(13230040)(704162011799003)(36860700016)(156008)(14060799003)(1800799024)(376014)(35042699022)(82310400026)(56012099003)(22082099003)(18002099003);DIR:OUT;SFP:1102;
X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1
X-MS-Exchange-AntiSpam-MessageData-0:
	HpdXB1xWVXQCLHFzYoiluWcJM9Inm13O/3QIP2PsqDXzEtOLZskBbc/SELGQqg98ll8+2RtV2u+7yJTovXONDcQaK+6wXXofZTSmURW6Og3/iKwBTdnA0zO4Lo3Ag0Ud23He9fqa5vqK9iHacqRFOSBgXeu4Ebag+oRtGMTRZoqfVm1RuLPc9vw5lexksijWlTtQTsIzTsRyBXOdDzaM3ECuSYFLSh+KitWRm2chcGnDKQZwTB+VwzdkKO6PXu8wrU12qli8Rmn7GthTh9hplNuzYn7WMwlY4hJDcKNyDxMd7Si+pi0YsoqNOc2qo4hjLhgCzEz3iudQj1kxWqnR6aIl9UT9oZGwhiBtyj2C1yCF4ra8wpK3ukFMshnH8Q3GM0kqwAu59BpRDs2hvyhPbh85XI9XGuM+ZQto1MOmXazI8St+PfzMAknrgyBaTDgH
X-OriginatorOrg: elektrobit.com
X-MS-Exchange-CrossTenant-OriginalArrivalTime: 20 Apr 2026 21:27:27.8113
 (UTC)
X-MS-Exchange-CrossTenant-Network-Message-Id: 5ea5f87b-1d35-40c0-4c8d-08de9f239f75
X-MS-Exchange-CrossTenant-Id: e764c36b-012e-4216-910d-8fd16283182d
X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=e764c36b-012e-4216-910d-8fd16283182d;Ip=[4.79.107.243];Helo=[usbth1es003.ebgroup.elektrobit.com]
X-MS-Exchange-CrossTenant-AuthAs: Internal
X-MS-Exchange-CrossTenant-AuthSource: TreatMessagesAsInternal-SN1PEPF0002529D.namprd05.prod.outlook.com
X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem
X-MS-Exchange-Transport-CrossTenantHeadersStamped: DS4PR08MB10791
X-purgate-ID: tlsNG-33051d/1776720461-A2965938-B53D01F8/0/0
X-purgate-type: clean
X-purgate-size: 6429

This commit adds three altp2m_lock functions which wrap the corresponding
altp2m_list_lock functions present in "mm-locks.h". The "mm-locks.h" file
is only accessible in x86 code. In order to make altp2m common across
architectures, it must be possible to acquire the altp2m lock without
including an x86-specific header file.

These functions cannot be static inline like their "mm-locks.h"
counterparts, since "mm-locks.h" is only included in source files, not
header files. Therefore, these functions might introduce a slight function
call overhead over their "mm-locks.h" counterparts. However, the altp2m
lock is mostly used in init/teardown routines and HVMOP implementations.
For these cases, the altp2m_list_lock functions have been switched out for
the altp2m_lock functions so they can be later migrated to common code. The
only other function using the altp2m lock is altp2m_get_or_propagate, which
is in the hot path of the page fault handler, so the altp2m_list_lock calls
have not been replaced for that function.

This is commit 2/12 of the altp2m_init/altp2m_teardown routines phase.

Signed-off-by: Rose Spangler <Rose.Spangler@elektrobit.com>
---
v6: Introduced this patch.

    This seems like the solution which makes the most sense here, but it
    would be nicer if it could be static inline. I'm also not sure if the
    "mm-locks.h" functions are really supposed to be exposed outside of
    their translation unit like this, so feedback on this is appreciated.
---
 xen/arch/x86/include/asm/altp2m.h |  4 +++
 xen/arch/x86/mm/altp2m.c          | 42 ++++++++++++++++++++-----------
 2 files changed, 31 insertions(+), 15 deletions(-)

diff --git a/xen/arch/x86/include/asm/altp2m.h b/xen/arch/x86/include/asm/altp2m.h
index 9c58a396448d..7cff40beb7c6 100644
--- a/xen/arch/x86/include/asm/altp2m.h
+++ b/xen/arch/x86/include/asm/altp2m.h
@@ -156,6 +156,10 @@ int p2m_set_suppress_ve_multi(struct domain *d,
 int p2m_get_suppress_ve(struct domain *d, gfn_t gfn, bool *suppress_ve,
                         unsigned int altp2m_idx);
 
+void altp2m_lock_init(struct domain *d);
+void altp2m_lock(struct domain *d);
+void altp2m_unlock(struct domain *d);
+
 #else
 
 static inline bool altp2m_is_eptp_valid(const struct domain *d,
diff --git a/xen/arch/x86/mm/altp2m.c b/xen/arch/x86/mm/altp2m.c
index 2dc84b76b8c1..371bf3f0b8d4 100644
--- a/xen/arch/x86/mm/altp2m.c
+++ b/xen/arch/x86/mm/altp2m.c
@@ -129,7 +129,7 @@ int altp2m_init(struct domain *d)
     struct p2m_domain *p2m;
     struct p2m_domain *hostp2m = p2m_get_hostp2m(d);
 
-    mm_lock_init(&d->arch.altp2m_list_lock);
+    altp2m_lock_init(d);
     d->altp2m_p2m = xvzalloc_array(struct p2m_domain *, d->nr_altp2m);
 
     if ( !d->altp2m_p2m )
@@ -221,7 +221,7 @@ bool altp2m_switch_vcpu_by_id(struct vcpu *v, unsigned int idx)
     if ( idx >= d->nr_altp2m )
         return rc;
 
-    altp2m_list_lock(d);
+    altp2m_lock(d);
 
     if ( d->arch.altp2m_eptp[idx] != mfn_x(INVALID_MFN) )
     {
@@ -230,7 +230,7 @@ bool altp2m_switch_vcpu_by_id(struct vcpu *v, unsigned int idx)
         rc = 1;
     }
 
-    altp2m_list_unlock(d);
+    altp2m_unlock(d);
     return rc;
 }
 
@@ -348,7 +348,7 @@ void altp2m_flush(struct domain *d)
 {
     unsigned int i;
 
-    altp2m_list_lock(d);
+    altp2m_lock(d);
 
     for ( i = 0; i < d->nr_altp2m; i++ )
     {
@@ -357,7 +357,7 @@ void altp2m_flush(struct domain *d)
         d->arch.altp2m_visible_eptp[i] = mfn_x(INVALID_MFN);
     }
 
-    altp2m_list_unlock(d);
+    altp2m_unlock(d);
 }
 
 static int altp2m_activate_altp2m(struct domain *d, unsigned int idx,
@@ -409,13 +409,13 @@ int altp2m_init_by_id(struct domain *d, unsigned int idx)
     if ( idx >= d->nr_altp2m )
         return rc;
 
-    altp2m_list_lock(d);
+    altp2m_lock(d);
 
     if ( d->arch.altp2m_eptp[array_index_nospec(idx, MAX_EPTP)] ==
          mfn_x(INVALID_MFN) )
         rc = altp2m_activate_altp2m(d, idx, hostp2m->default_access);
 
-    altp2m_list_unlock(d);
+    altp2m_unlock(d);
     return rc;
 }
 
@@ -431,7 +431,7 @@ int altp2m_init_next_available(struct domain *d, uint16_t *idx,
          !xenmem_access_to_p2m_access(hostp2m, hvmmem_default_access, &a) )
         return rc;
 
-    altp2m_list_lock(d);
+    altp2m_lock(d);
 
     for ( i = 0; i < d->nr_altp2m; i++ )
     {
@@ -446,7 +446,7 @@ int altp2m_init_next_available(struct domain *d, uint16_t *idx,
         break;
     }
 
-    altp2m_list_unlock(d);
+    altp2m_unlock(d);
     return rc;
 }
 
@@ -463,7 +463,7 @@ int altp2m_destroy_by_id(struct domain *d, unsigned int idx)
         return rc;
 
     rc = -EBUSY;
-    altp2m_list_lock(d);
+    altp2m_lock(d);
 
     if ( d->arch.altp2m_eptp[array_index_nospec(idx, MAX_EPTP)] !=
          mfn_x(INVALID_MFN) )
@@ -481,7 +481,7 @@ int altp2m_destroy_by_id(struct domain *d, unsigned int idx)
         }
     }
 
-    altp2m_list_unlock(d);
+    altp2m_unlock(d);
 
     domain_unpause_except_self(d);
 
@@ -501,7 +501,7 @@ int altp2m_switch_domain_altp2m_by_id(struct domain *d, unsigned int idx)
         return rc;
 
     rc = -EINVAL;
-    altp2m_list_lock(d);
+    altp2m_lock(d);
 
     if ( d->arch.altp2m_visible_eptp[idx] != mfn_x(INVALID_MFN) )
     {
@@ -512,7 +512,7 @@ int altp2m_switch_domain_altp2m_by_id(struct domain *d, unsigned int idx)
         rc = 0;
     }
 
-    altp2m_list_unlock(d);
+    altp2m_unlock(d);
 
     domain_unpause_except_self(d);
 
@@ -773,7 +773,7 @@ int altp2m_set_view_visibility(struct domain *d, unsigned int altp2m_idx,
 {
     int rc = 0;
 
-    altp2m_list_lock(d);
+    altp2m_lock(d);
 
     if ( !altp2m_is_eptp_valid(d, altp2m_idx) )
         rc = -EINVAL;
@@ -784,11 +784,23 @@ int altp2m_set_view_visibility(struct domain *d, unsigned int altp2m_idx,
         d->arch.altp2m_visible_eptp[array_index_nospec(altp2m_idx, MAX_EPTP)] =
             mfn_x(INVALID_MFN);
 
-    altp2m_list_unlock(d);
+    altp2m_unlock(d);
 
     return rc;
 }
 
+void altp2m_lock_init(struct domain *d) {
+    mm_lock_init(&d->arch.altp2m_list_lock);
+}
+
+void altp2m_lock(struct domain *d) {
+    altp2m_list_lock(d);
+}
+
+void altp2m_unlock(struct domain *d) {
+    altp2m_list_unlock(d);
+}
+
 /*
  * Local variables:
  * mode: C
-- 
2.34.1



From xen-devel-bounces@lists.xenproject.org Mon Apr 20 21:27:45 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 20 Apr 2026 21:27:45 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1287507.1567964 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wEw9h-0002k3-GQ; Mon, 20 Apr 2026 21:27:45 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1287507.1567964; Mon, 20 Apr 2026 21:27: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 1wEw9g-0002iC-Ss; Mon, 20 Apr 2026 21:27:44 +0000
Received: by outflank-mailman (input) for mailman id 1287507;
 Mon, 20 Apr 2026 21:27:42 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <Rose.Spangler@elektrobit.com>) id 1wEw9e-0002AV-9l
 for xen-devel@lists.xenproject.org; Mon, 20 Apr 2026 21:27:42 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wEw9d-00CBiW-M9
 for xen-devel@lists.xenproject.org; Mon, 20 Apr 2026 23:27:41 +0200
Received: from [10.42.69.7] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <Rose.Spangler@elektrobit.com>)
 id 69e69a14-e002-0a2a0a5209dd-0a2a4507df78-16
 for <xen-devel@lists.xenproject.org>; Mon, 20 Apr 2026 23:27:41 +0200
Received: from [52.101.57.132]
 (helo=BN8PR05CU002.outbound.protection.outlook.com)
 by tlsNG-ef75cf.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.1)
 (envelope-from <Rose.Spangler@elektrobit.com>)
 id 69e69a4b-229c-0a2a45070019-34653984b9ac-3
 for <xen-devel@lists.xenproject.org>; Mon, 20 Apr 2026 23:27:41 +0200
Received: from MN2PR15CA0045.namprd15.prod.outlook.com (2603:10b6:208:237::14)
 by CH3PR08MB9569.namprd08.prod.outlook.com (2603:10b6:610:1c6::5)
 with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9818.33; Mon, 20 Apr
 2026 21:27:32 +0000
Received: from BL6PEPF0001AB56.namprd02.prod.outlook.com
 (2603:10b6:208:237:cafe::c4) by MN2PR15CA0045.outlook.office365.com
 (2603:10b6:208:237::14) with Microsoft SMTP Server (version=TLS1_3,
 cipher=TLS_AES_256_GCM_SHA384) id 15.20.9791.48 via Frontend Transport; Mon,
 20 Apr 2026 21:27:32 +0000
Received: from usbth1es003.ebgroup.elektrobit.com (4.79.107.243) by
 BL6PEPF0001AB56.mail.protection.outlook.com (10.167.241.8) with Microsoft
 SMTP Server (version=TLS1_3, cipher=TLS_AES_256_GCM_SHA384) id 15.20.9791.48
 via Frontend Transport; Mon, 20 Apr 2026 21:27:31 +0000
Received: from usbth1es003 (localhost [127.0.0.1])
 by usbth1es003.ebgroup.elektrobit.com (Postfix) with SMTP id 4fzz8z0bHYz1wdS; 
 Mon, 20 Apr 2026 14:27:31 -0700 (PDT)
Received: from DM2PR0701CU001.outbound.protection.outlook.com
 (mail-dm2pr0701cu00100.outbound.protection.outlook.com [40.93.13.64])
 (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)
 key-exchange secp384r1 server-signature RSA-PSS (2048 bits) server-digest
 SHA256) (No client certificate requested)
 by usbth1es003.ebgroup.elektrobit.com (Postfix) with ESMTPS;
 Mon, 20 Apr 2026 14:27:30 -0700 (PDT)
Received: from CH5PR05CA0009.namprd05.prod.outlook.com (2603:10b6:610:1f0::15)
 by LV2PR08MB972878.namprd08.prod.outlook.com (2603:10b6:408:3a0::15)
 with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9818.33; Mon, 20 Apr
 2026 21:27:27 +0000
Received: from CH2PEPF00000099.namprd02.prod.outlook.com
 (2603:10b6:610:1f0:cafe::e6) by CH5PR05CA0009.outlook.office365.com
 (2603:10b6:610:1f0::15) with Microsoft SMTP Server (version=TLS1_3,
 cipher=TLS_AES_256_GCM_SHA384) id 15.20.9791.48 via Frontend Transport; Mon,
 20 Apr 2026 21:27:27 +0000
Received: from denue6es012.ebgroup.elektrobit.com (213.95.148.172) by
 CH2PEPF00000099.mail.protection.outlook.com (10.167.244.20) with Microsoft
 SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id
 15.20.9791.48 via Frontend Transport; Mon, 20 Apr 2026 21:27:27 +0000
Received: from ubuntu.localdomain (10.10.178.50) by
 denue6es012.ebgroup.elektrobit.com (10.243.160.140) with Microsoft SMTP
 Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id
 15.2.2562.35; Mon, 20 Apr 2026 23:27:24 +0200
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@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=elektrobit.com header.i="@elektrobit.com" header.h="From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck"; dkim=pass header.s=selector1 header.d=elektrobit.com header.i="@elektrobit.com" header.h="From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck"
ARC-Seal: i=2; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=pass;
 b=nvBh7wwOzQniENouyjA5m66omeRXKTlsRWUSHjM4fJD1h2ZLdB+pxDGLfcZMEgz7QhmbGJS/G9Cqnmrqf1uc5N18XcMUOIQMeuiCteZuhW1E488TVYIhLSfpVEdx77aM+70X7/CeIOim7BXN9iW9ZsF5Ky0ISbWbI639XvTuWyGj4eEOYHmRo8NbquQ1U4bB284E8tsNNSKYeC0xZwTbk0wfmDQMllujPhGv8MP4xt/p4V2QYQudSl7x7QENavkBBf/hUNQr1iAp6a8GvjPqhCe/DJN7eCS5VBhJg5pBkCFtTiIntzAGWOvXhRVj/URyzI1hix3nCIqmuSnwo3KBIg==
ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com;
 s=arcselector10001;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1;
 bh=qwOwmfrmWpA5bcreD0lLuuQUt9f7SqfexhLWTcmlGbU=;
 b=vT4bAMOt0kNdByuz35nDdRJgHMX4WRne876Ilmxu8g8TEJurAXc87m+krz+87d7kDip/ThUOezo8eOvC/VXFq/7fUrom/rUmW4HXIftBIvUN6Wt2wfepzYcQiWQLs5fMjlCIXJ+nhWg4EGC4psV9N8eAuA6UtcfDYb3ZWY0VEEDGKg1vT7HOpyxxXFuRHxza9uo0ejPgOslAQOLhfKSL0/brXqFcxnYLYGtzwi1sBybgtxXAovnXcXW69a6yoRqoy973GbNq783QH6vKGo+5FTJ09CIJZf3vd4tngtM8y5WnbwPnE0BxZlPuteS1zwrGc2tk2yRlK6FAJmYCdcyPew==
ARC-Authentication-Results: i=2; mx.microsoft.com 1; spf=pass (sender ip is
 40.93.13.64) smtp.rcpttodomain=amd.com smtp.mailfrom=elektrobit.com;
 dmarc=pass (p=quarantine sp=none pct=100) action=none
 header.from=elektrobit.com; dkim=pass (signature was verified)
 header.d=elektrobit.com; arc=pass (0 oda=1 ltdi=1
 spf=[1,1,smtp.mailfrom=elektrobit.com]
 dmarc=[1,1,header.from=elektrobit.com])
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=elektrobit.com;
 s=selector1;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck;
 bh=qwOwmfrmWpA5bcreD0lLuuQUt9f7SqfexhLWTcmlGbU=;
 b=1Xjw1GIyJgWJ+fOWapuVo3epCodvZLGDi4BcONF4Di8p7mjNd8bQGQWkRiKR8j93EZ5M9aDCS6ECBsKhdB7IuJVKMon/0o0+nxFCaxoaanFnI7shxUc9OcuJqOca9iIouakRQnj4rBiFdxOINXu+Httkc7uSlEEQi5iy8jrpofM=
X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 40.93.13.64)
 smtp.mailfrom=elektrobit.com; dkim=pass (signature was verified)
 header.d=elektrobit.com;dmarc=pass action=none header.from=elektrobit.com;
Received-SPF: Pass (protection.outlook.com: domain of elektrobit.com
 designates 40.93.13.64 as permitted sender) receiver=protection.outlook.com;
 client-ip=40.93.13.64; helo=DM2PR0701CU001.outbound.protection.outlook.com;
 pr=C
ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none;
 b=lN52LmQ9MKmS2oGNIic4BpW2Vr0MzZ52cN64EezhXk9uMfKN2vAF3nVcOQ2AAMauJ6VZYMvnw+jjNjSimEHJGNYbhvEn9bNCnHYr+677+ejNJSNdlH1ehk+9BWET425jCyAzxODVqBJ0A4mEid1NjzLqs/gu8rqgpkBddEInyoypXTGkmfo3vcWcC4iADY+b25xTMm1swJUEWVXMwY8emPgAysUvTWcjklXsjiU/329UZPlgj6fJziRS4ivFVP9kCCMqsXPkXfzL879temr6FrpLgBxEsq8kEtXm5jTug1p4vPdTITfmyelq+xwnv1MLxRNkDaZm7EE46ngyYA4peA==
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com;
 s=arcselector10001;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1;
 bh=qwOwmfrmWpA5bcreD0lLuuQUt9f7SqfexhLWTcmlGbU=;
 b=obJDdRFxNYXVLj7CkfSNfHwI0T2EHdFt9JrtxSvGkJhyEE2M2MhYdyN7riqG80exGqus3JQsU687NTqxp8T23YccbGOHPKncri8hErV+n0FflMi5OFo9xR8MmxM06awS4GvQHyGVjnWgUTy9/Ci8fzKUr8Z0OVg+WSgeYxpzkjuJGbRXwz+n+B2rf95CCC+PIwoiKj6M83OQXMzinti10rXxI5Ya/4MvrNAzBbMX7gpTKjVHwlPgp8iklRdpmccOR+5FxmuuuChQbGc3HWJ9hDyboTO8AVbWs26FUfMh/In/1SWp0USMjGTj8HKusqHyaqZzo4bHIEr5NDaaZoekcQ==
ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass (sender ip is
 213.95.148.172) smtp.rcpttodomain=lists.xenproject.org
 smtp.mailfrom=elektrobit.com; dmarc=pass (p=quarantine sp=none pct=100)
 action=none header.from=elektrobit.com; dkim=none (message not signed);
 arc=none (0)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=elektrobit.com;
 s=selector1;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck;
 bh=qwOwmfrmWpA5bcreD0lLuuQUt9f7SqfexhLWTcmlGbU=;
 b=1Xjw1GIyJgWJ+fOWapuVo3epCodvZLGDi4BcONF4Di8p7mjNd8bQGQWkRiKR8j93EZ5M9aDCS6ECBsKhdB7IuJVKMon/0o0+nxFCaxoaanFnI7shxUc9OcuJqOca9iIouakRQnj4rBiFdxOINXu+Httkc7uSlEEQi5iy8jrpofM=
X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 213.95.148.172)
 smtp.mailfrom=elektrobit.com; dkim=none (message not signed)
 header.d=none;dmarc=pass action=none header.from=elektrobit.com;
Received-SPF: Pass (protection.outlook.com: domain of elektrobit.com
 designates 213.95.148.172 as permitted sender)
 receiver=protection.outlook.com; client-ip=213.95.148.172;
 helo=denue6es012.ebgroup.elektrobit.com; pr=C
From: Rose Spangler <Rose.Spangler@elektrobit.com>
To: <xen-devel@lists.xenproject.org>
CC: Rose Spangler <Rose.Spangler@elektrobit.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>, Sergej Proskurin
	<proskurin@sec.in.tum.de>
Subject: [RFC PATCH v6 18/43] arm/p2m: Invalidate root page table entries and flush TLB in p2m_flush_table
Date: Mon, 20 Apr 2026 17:26:23 -0400
Message-ID: <20260420212648.208640-11-Rose.Spangler@elektrobit.com>
X-Mailer: git-send-email 2.34.1
In-Reply-To: <20260420212648.208640-1-Rose.Spangler@elektrobit.com>
References: <20260420212648.208640-1-Rose.Spangler@elektrobit.com>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit
Content-Type: text/plain
X-Originating-IP: [10.10.178.50]
X-ClientProxiedBy: denue6es013.ebgroup.elektrobit.com (10.243.160.141) To
 denue6es012.ebgroup.elektrobit.com (10.243.160.140)
X-EOPAttributedMessage: 1
X-MS-Exchange-SkipListedInternetSender:
 ip=[213.95.148.172];domain=denue6es012.ebgroup.elektrobit.com
X-MS-TrafficTypeDiagnostic:
	CH2PEPF00000099:EE_|LV2PR08MB972878:EE_|BL6PEPF0001AB56:EE_|CH3PR08MB9569:EE_
X-MS-Office365-Filtering-Correlation-Id: 2ba325b9-8fc0-4e39-824b-08de9f23a202
X-SM-outgoing: yes
X-MS-Exchange-SenderADCheck: 1
X-MS-Exchange-AntiSpam-Relay: 0
X-Microsoft-Antispam-Untrusted:
 BCL:0;ARA:13230040|36860700016|1800799024|376014|82310400026|56012099003|22082099003|18002099003;
X-Microsoft-Antispam-Message-Info-Original:
 =?us-ascii?Q?96zUFnE2WS1YOFLwkP7518prjTJKBApoFFjoTJfufjKZDGGCIh8388VJVv1N?=
 =?us-ascii?Q?HpauZxmteIjaEmB50irptKiJLqevcGwljCJiswZvAnaMVOVE5Bwn2DJ6sxu6?=
 =?us-ascii?Q?qBKJkxlhNJNmNu0lOloN7g0hKsh/sL1XEfRYs5CWD6yeGxk/9D+5mwM1WBHg?=
 =?us-ascii?Q?HxQ2tfH+R9bZPCbPqkOhNhfJHX1EfVMtfBVd/Ss5vEZQJuRReS4EPumKwgoY?=
 =?us-ascii?Q?HjWlgT2YH41DK/OYjktHo51yLDqsBII1qNLOyg1Nt5WTpxKU3MGIABecvKM+?=
 =?us-ascii?Q?UzHbGEoB6mqQOp79U+JrGQaZezT6y9tp2An+pfA0YzEHhGQtmw+R33lvJ0ex?=
 =?us-ascii?Q?JJRZACWTl8fjz0gJku3raS5hX2v932f18i14G+P7NGdAaFnwz9h99Kgp/ORg?=
 =?us-ascii?Q?gWPg2mD1h8T5LmlEoJyOwyf0Mdw6ueC62jschwnDSaN8jTfA0yKcodsccm1j?=
 =?us-ascii?Q?jRY6Qp89ik9h08lsZXawo04OcAW4PtJiUTRfX/zGxPDikbBQf+mFm5q3KUxg?=
 =?us-ascii?Q?Z/YqfnG9OTdStah5EqRUo7FTF7UPmUmb0g6eknzIw70cSVPRHFjNR/tfNHRx?=
 =?us-ascii?Q?JFZ1bHJZiHgwGdD/9jXvChQmExQ/R1CFCabv7J73Cik39GgJaZXYvlJ+wxHt?=
 =?us-ascii?Q?VIMOAxTnhOkD1djD7TYABqTFnACmxeHIC+JMXWnAK5woVoFmffGrFGTEidsA?=
 =?us-ascii?Q?Q6K4vVrDa90SgPyRVmap8za1nlR1u4aY4mrCh58jFVnV754Zt7X3/46k02pD?=
 =?us-ascii?Q?OBIGKIbGl1y/NZziLn+tBcYc4FDLeUTgK/mE2eRRhQvmdiLwU+9QBlQM2nSN?=
 =?us-ascii?Q?RSNx1QUOJ8PPNXOSUi2dl0jncSL67WQQNbvQtAsIGBIBujCSnybgM4IUvY/N?=
 =?us-ascii?Q?Jtyb7FrTn595iZ7lsii8fj5GmH2Asgworl3U0436H+EPU6Qlos/M/4gf81+o?=
 =?us-ascii?Q?NnC77VwYOdKWq3C/cb4LYmig175yqAnt1+K3yDMpHtAG47Xj8+N6gKcIhtZX?=
 =?us-ascii?Q?XRPNkn07YHS027KeX6s34qCF4cF1vOyL+x6Qo6B3tez3QZX0Eaq24ViHeBo/?=
 =?us-ascii?Q?i+XD4zEAICERkZ731uPjjMGmjvg+HKUGtIISLvPVf+3V0eveqzZjh9fp6hEb?=
 =?us-ascii?Q?W0UgD/Ay823umjWElbqBm8IDWFM+647Oxk1DCSoE64W5HDiGwUJozKOTlbPN?=
 =?us-ascii?Q?EKVFYzNkBReMJZ1M?=
X-Forefront-Antispam-Report-Untrusted:
 CIP:213.95.148.172;CTRY:DE;LANG:en;SCL:1;SRV:;IPV:CAL;SFV:NSPM;H:denue6es012.ebgroup.elektrobit.com;PTR:eth1-fw1-nbg6.eb.noris.de;CAT:NONE;SFS:(13230040)(36860700016)(1800799024)(376014)(82310400026)(56012099003)(22082099003)(18002099003);DIR:OUT;SFP:1102;
X-Exchange-RoutingPolicyChecked:
 h1sD7//lwMrZvYfq1895suROwTy/4sBmkvFlvctGtGXP/leT18U02zj6Cbko6HkZFcPnzW7wCruKWmb5wBLHy+YKBjWlGV7c+lcFI4ZNQnQrQyjPh9osFxtS8NfTMh6EYbHXN/Es83mKV/0/AwM8CHltsH95z13vXLTkow0GjQu2BEwoK2c39QHMPInDaW1nwcOlaZmmw6oaBpB3RRVOkpavA67ERkoKomivUKc/ZtJ0+QqENm7dORprg8ml4Qpy3Z4VjpGs/7tHBRXJvrFwHUNmI6D6jUEnXBtRRsK3M+Js2jqg8ZIL5G268AzctHpC3Y3ORCksIwSzLnVs96+K5g==
X-MS-Exchange-Transport-CrossTenantHeadersStamped: LV2PR08MB972878
X-MS-Exchange-SkipListedInternetSender:
 ip=[40.93.13.64];domain=DM2PR0701CU001.outbound.protection.outlook.com
X-MS-Exchange-ExternalOriginalInternetSender:
 ip=[40.93.13.64];domain=DM2PR0701CU001.outbound.protection.outlook.com
X-MS-Exchange-Transport-CrossTenantHeadersStripped:
 BL6PEPF0001AB56.namprd02.prod.outlook.com
X-MS-PublicTrafficType: Email
X-MS-Office365-Filtering-Correlation-Id-Prvs:
	42722f38-9840-491c-8c38-08de9f239f28
X-Microsoft-Antispam:
	BCL:0;ARA:13230040|1800799024|82310400026|376014|36860700016|14060799003|156008|35042699022|18002099003|22082099003|56012099003;
X-Microsoft-Antispam-Message-Info:
	=?us-ascii?Q?ZKC/H2dYDMb7OU//FiQ3T3veHxblzZh8SsQICAgWgSuzP6k/og0Vasi2Tek5?=
 =?us-ascii?Q?HpaO1Sz5JrVxZ0tzZVHLjGi/1MwzjcxiX/WShsy+9F5BfvDva2CCKUGxCp6z?=
 =?us-ascii?Q?iVrqeb9l2cG4MzzreS6EhwCIJTz3wRjYcziZ3F16jA5R5bi4yiSlLZO/FUwg?=
 =?us-ascii?Q?WAO8SEhIMfMgioSax5wU7aIMdSmkLRT0LEl7aWE0LE9VuuUxZ2ZaFkAsYzTB?=
 =?us-ascii?Q?T7UcA8150mQW9OZ2YztNMEx34BSzlrOYJur8PPVKvJpQP72o3q7QZTuFnkuT?=
 =?us-ascii?Q?AJ6jthJvgosoT817GDfoJlBrDhORbx97+rCAxM3VosHf/2I5S4LmLYSXk1H9?=
 =?us-ascii?Q?xlmWQQH9bF67K285gkHmWQSrZ6EjEj2uCG0XlvV16xgrGM0dJCQNk5l78Zno?=
 =?us-ascii?Q?uQj8MfE/qnC7JLUuFx/OCdlVuAkPfyHld2zOESAFccCcF77apwzKgU2a+3WH?=
 =?us-ascii?Q?XbutBlYcMAIuaSzoAp5vFjGwmPaFrA5T/tnSxGY1hQBK7ziMocmmcAecowB6?=
 =?us-ascii?Q?FseVLdu2BUHdxGyiZLYV17QFNoVMts16TmOVzJwidPE28CUd7xFork6sc70T?=
 =?us-ascii?Q?sMUWGwn+nHsV85wvsCOA6aDEMEqjcCQyr/uQkVcA8e0wYOpCP9jnK20ap9kr?=
 =?us-ascii?Q?JEQSCM5Kpf/akt84ekHlF5Mj6/rSniXB8nhEXnrontPNZZujgZ/aHMX5XJBR?=
 =?us-ascii?Q?xsVSPD0PSATD8bnzzIDQ/rQjK00TeuuiM/husO/KwXLylx5Yk4mAP2ZVlzW5?=
 =?us-ascii?Q?3Wm9nOyf7pirwBWpvgKYnNmJ/bI96fWVKxBQbknuWPmTHzWRVlIppz+xr6V1?=
 =?us-ascii?Q?AWP+ylFS8OPYxOJZ9fO28IdnMDP+sezRL+SjQoKkrakVHA8edbYw8EUNu87J?=
 =?us-ascii?Q?Eiat/4+9fBiSx784LB41KApWamkliDdbsd+Jw4Frm6CE2T1XJ73nefQt6N0W?=
 =?us-ascii?Q?KqiUUiNG09yT+cskb0bYaFZkYxaNR/+lHI/oM1ZPQpdwPcx2O9V/9Vd/tEN5?=
 =?us-ascii?Q?8J+7kc5fAhRTk2/zjXzREPSI7/9ayegli7g0wn2RfbDLh7XMo8ST3UKLx0pC?=
 =?us-ascii?Q?aRh2RJCc22ieTq5VdCEg1+qHPRVTcEGkQKxPWcEybWHewWmGY8L9rBMH0pQ/?=
 =?us-ascii?Q?mJGX2WNyXAqYHHb68SyYpRY9g8u+xVh+t6qUgEFSuHIjuZKf27woP/RiVyML?=
 =?us-ascii?Q?hFW3Gcnwd0C/bzjH?=
X-Forefront-Antispam-Report:
	CIP:4.79.107.243;CTRY:US;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:DM2PR0701CU001.outbound.protection.outlook.com;PTR:mail-dm2pr0701cu00100.outbound.protection.outlook.com;CAT:NONE;SFS:(13230040)(1800799024)(82310400026)(376014)(36860700016)(14060799003)(156008)(35042699022)(18002099003)(22082099003)(56012099003);DIR:OUT;SFP:1102;
X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1
X-MS-Exchange-AntiSpam-MessageData-0:
	lDsp+67GXhvLnPeqaTu2H7Lvq5E1MbhF7hMLw4Mxa1Nm85i4ow1v4B81s7ruun80pFkV4eyd8ogyTeowxAMFHLAlheSEzMS4djgNGCyRK5oho21OzRdeODa8XQNhuR4KEpoMAqZVah3w4IA4uuF9JrF2se62b5eYy2xdv/cPbH/k1/noy0+dC+hkpZCVgNJ/dl6ub4c+MvZMZSHB5XJHvINBsgky+LW3O/bG7J7S+DPPHA8FL69WzxvcNP8lAZ/QozkHwp/pNyYtTYAj8WQrJ2bYHtutMJ/OCUs1tLDJHkG99pMs0VoHQwh7Cov89LewEV9a5cylZryrCT7t7JDOi5YqkiOaY0dCYjMYYG8Ge+pNHtn6qk8dxKCDzclmPQYkbzfEakcVRllHldE9/5DegjhENTr5w5907s2SA1kHvlynkZrqLw9RfouosdSa/FIW
X-OriginatorOrg: elektrobit.com
X-MS-Exchange-CrossTenant-OriginalArrivalTime: 20 Apr 2026 21:27:31.9896
 (UTC)
X-MS-Exchange-CrossTenant-Network-Message-Id: 2ba325b9-8fc0-4e39-824b-08de9f23a202
X-MS-Exchange-CrossTenant-Id: e764c36b-012e-4216-910d-8fd16283182d
X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=e764c36b-012e-4216-910d-8fd16283182d;Ip=[4.79.107.243];Helo=[usbth1es003.ebgroup.elektrobit.com]
X-MS-Exchange-CrossTenant-AuthAs: Internal
X-MS-Exchange-CrossTenant-AuthSource: TreatMessagesAsInternal-BL6PEPF0001AB56.namprd02.prod.outlook.com
X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem
X-MS-Exchange-Transport-CrossTenantHeadersStamped: CH3PR08MB9569
X-purgate-ID: tlsNG-ef75cf/1776720461-AD969C48-6D67B4B2/0/0
X-purgate-type: clean
X-purgate-size: 4874

This commit invalidates the root page table entries and flushes the TLB
when the table is flushed. The TLB is flushed to ensure that altp2m views
after being reset or torn down. Previously, the code in p2m_flush_table was
only used to free p2m pages during domain teardown. This function will
later be used to teardown/reset altp2m views of a still-running domain, so
the page table entries must be properly invalidated.

Additionally, the p2m_invalidate_root function is split into
p2m_invalidate_root and p2m_invalidate_root_locked. The p2m_flush_table
function already holds the lock, so it calls p2m_invalidate_root_locked
directly, as opposed to the existing callers which don't already hold the
lock.

This is commit 7/12 of the altp2m_init/altp2m_teardown routines phase.

Signed-off-by: Rose Spangler <Rose.Spangler@elektrobit.com>
Signed-off-by: Sergej Proskurin <proskurin@sec.in.tum.de>
---
v3: Added a "p2m_flush_tlb" call in "p2m_flush_table". On altp2m reset
    in function "altp2m_reset", it is important to flush the TLBs after
    clearing the root table pages and before clearing the intermediate
    altp2m page tables to prevent illegal access to stalled TLB entries on
    currently active VCPUs.

v4: Replaced the former use of clear_and_clean_page in p2m_flush_table
    by a routine that invalidates every p2m entry atomically. This
    avoids inconsistencies on CPUs that continue to use the views that
    are to be flushed (e.g., see altp2m_reset).

v6: Introduced this patch. While the code in this patch is mostly new, it
    is the same in spirit as the p2m_flush_table additions in the original
    patch series, so the relevant comments have been reproduced above.

    In the v4/v5 versions of this patch series, this patch was a part of
    the previous patch. It has been split out to minimize the number of
    functionality changes in the previous patch.

    Additionally, the original patch series used a routine here which was
    nearly identical to p2m_invalidate_root, which was implemented a few
    years after the patch series. Therefore, the existing
    p2m_invalidate_root implementation is used here instead.

    Also, since the original patch series p2m_teardown (and by extension
    p2m_flush_table, as it was extracted from p2m_teardown) was made
    preemptible. As a consequence of this, introducing a call to
    p2m_invalidate_root here also means that p2m_invalidate_root and
    p2m_tlb_flush_sync is called each time p2m_flush_table is called, even
    if a previous call to p2m_flush_table was preempted. This might cause
    some additional overhead, as p2m_flush_table will iterate over the root
    page tables and flush the TLB before it can return to freeing p2m
    pages. I'm not sure if there's a better way of handling this, or if
    the overhead here is negligible/acceptable.

    I'm not sure how IOMMU interacts with altp2m here. I haven't looked
    into it extensively, so I would appreciate some feedback here. I've
    just copied over the iommu_use_hap_pt conditional from
    p2m_domain_creation_finished, but this is probably not the right
    behavior since we probably still need to invalidate the altp2m view
    page tables on flush somehow. Is the issue with invalidating root page
    tables when using IOMMU only relevant for the hostp2m, or is it also
    relevant for the altp2m views?
---
 xen/arch/arm/mmu/p2m.c | 16 +++++++++++++---
 1 file changed, 13 insertions(+), 3 deletions(-)

diff --git a/xen/arch/arm/mmu/p2m.c b/xen/arch/arm/mmu/p2m.c
index 1d598c66450b..51753bb2c34d 100644
--- a/xen/arch/arm/mmu/p2m.c
+++ b/xen/arch/arm/mmu/p2m.c
@@ -1271,17 +1271,20 @@ void p2m_clear_root_pages(struct p2m_domain *p2m)
  * p2m_invalid_root() should not be called when the P2M is shared with
  * the IOMMU because it will cause IOMMU fault.
  */
-static void p2m_invalidate_root(struct p2m_domain *p2m)
+static void p2m_invalidate_root_locked(struct p2m_domain *p2m)
 {
     unsigned int i;
 
     ASSERT(!iommu_use_hap_pt(p2m->domain));
 
-    p2m_write_lock(p2m);
-
     for ( i = 0; i < P2M_ROOT_PAGES; i++ )
         p2m_invalidate_table(p2m, page_to_mfn(p2m->root + i));
+}
 
+static void p2m_invalidate_root(struct p2m_domain *p2m)
+{
+    p2m_write_lock(p2m);
+    p2m_invalidate_root_locked(p2m);
     p2m_write_unlock(p2m);
 }
 
@@ -1449,6 +1452,13 @@ int p2m_flush_table(struct p2m_domain *p2m)
     unsigned long count = 0;
     struct page_info *pg;
 
+    /* TODO: How does IOMMU interact with altp2m? */
+    if ( !iommu_use_hap_pt(p2m->domain) )
+    {
+        p2m_invalidate_root_locked(p2m);
+        p2m_tlb_flush_sync(p2m);
+    }
+
     while ( (pg = page_list_remove_head(&p2m->pages)) )
     {
         p2m_free_page(p2m->domain, pg);
-- 
2.34.1



From xen-devel-bounces@lists.xenproject.org Mon Apr 20 21:27:47 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 20 Apr 2026 21:27:47 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1287514.1567980 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wEw9j-0003Sn-Pg; Mon, 20 Apr 2026 21:27:47 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1287514.1567980; Mon, 20 Apr 2026 21:27: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 1wEw9j-0003RY-KV; Mon, 20 Apr 2026 21:27:47 +0000
Received: by outflank-mailman (input) for mailman id 1287514;
 Mon, 20 Apr 2026 21:27:46 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <Rose.Spangler@elektrobit.com>) id 1wEw9h-0002sc-R5
 for xen-devel@lists.xenproject.org; Mon, 20 Apr 2026 21:27:46 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wEw9h-00CBiW-7P
 for xen-devel@lists.xenproject.org; Mon, 20 Apr 2026 23:27:45 +0200
Received: from [10.42.69.2] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <Rose.Spangler@elektrobit.com>)
 id 69e69a45-e002-0a2a0a5209dd-0a2a450280e4-6
 for <xen-devel@lists.xenproject.org>; Mon, 20 Apr 2026 23:27:45 +0200
Received: from [52.101.56.91]
 (helo=BN1PR04CU002.outbound.protection.outlook.com)
 by tlsNG-720697.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.1)
 (envelope-from <Rose.Spangler@elektrobit.com>)
 id 69e69a50-af86-0a2a45020019-3465385b8e59-3
 for <xen-devel@lists.xenproject.org>; Mon, 20 Apr 2026 23:27:44 +0200
Received: from MN2PR10CA0007.namprd10.prod.outlook.com (2603:10b6:208:120::20)
 by IA3PR08MB10336.namprd08.prod.outlook.com (2603:10b6:208:514::19)
 with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9818.32; Mon, 20 Apr
 2026 21:27:40 +0000
Received: from BL6PEPF0001AB58.namprd02.prod.outlook.com
 (2603:10b6:208:120:cafe::14) by MN2PR10CA0007.outlook.office365.com
 (2603:10b6:208:120::20) with Microsoft SMTP Server (version=TLS1_3,
 cipher=TLS_AES_256_GCM_SHA384) id 15.20.9791.48 via Frontend Transport; Mon,
 20 Apr 2026 21:27:39 +0000
Received: from usbth1es003.ebgroup.elektrobit.com (4.79.107.243) by
 BL6PEPF0001AB58.mail.protection.outlook.com (10.167.241.10) with Microsoft
 SMTP Server (version=TLS1_3, cipher=TLS_AES_256_GCM_SHA384) id 15.20.9791.48
 via Frontend Transport; Mon, 20 Apr 2026 21:27:39 +0000
Received: from usbth1es003 (localhost [127.0.0.1])
 by usbth1es003.ebgroup.elektrobit.com (Postfix) with SMTP id 4fzz9641zVz1wdR; 
 Mon, 20 Apr 2026 14:27:38 -0700 (PDT)
Received: from SN1PR07CU001.outbound.protection.outlook.com
 (mail-sn1pr07cu00107.outbound.protection.outlook.com [40.93.14.103])
 (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)
 key-exchange secp384r1 server-signature RSA-PSS (2048 bits) server-digest
 SHA256) (No client certificate requested)
 by usbth1es003.ebgroup.elektrobit.com (Postfix) with ESMTPS;
 Mon, 20 Apr 2026 14:27:38 -0700 (PDT)
Received: from CH5PR05CA0024.namprd05.prod.outlook.com (2603:10b6:610:1f0::29)
 by IA3PR08MB10566.namprd08.prod.outlook.com (2603:10b6:208:514::12)
 with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9818.33; Mon, 20 Apr
 2026 21:27:29 +0000
Received: from CH2PEPF00000099.namprd02.prod.outlook.com
 (2603:10b6:610:1f0:cafe::af) by CH5PR05CA0024.outlook.office365.com
 (2603:10b6:610:1f0::29) with Microsoft SMTP Server (version=TLS1_3,
 cipher=TLS_AES_256_GCM_SHA384) id 15.20.9791.48 via Frontend Transport; Mon,
 20 Apr 2026 21:27:29 +0000
Received: from denue6es012.ebgroup.elektrobit.com (213.95.148.172) by
 CH2PEPF00000099.mail.protection.outlook.com (10.167.244.20) with Microsoft
 SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id
 15.20.9791.48 via Frontend Transport; Mon, 20 Apr 2026 21:27:29 +0000
Received: from ubuntu.localdomain (10.10.178.50) by
 denue6es012.ebgroup.elektrobit.com (10.243.160.140) with Microsoft SMTP
 Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id
 15.2.2562.35; Mon, 20 Apr 2026 23:27:26 +0200
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@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=elektrobit.com header.i="@elektrobit.com" header.h="From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck"; dkim=pass header.s=selector1 header.d=elektrobit.com header.i="@elektrobit.com" header.h="From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck"
ARC-Seal: i=2; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=pass;
 b=ivfOIDUOdp+LyHfIJ8t4kMSbRk0wGIT21Lls5ORM553oUdjApND0jgJx8glVIj76+Ok7sbwhvyqwflecHb0B+IT1yUZgMhLUJF6em/emOmSzhsMJhNolAQha2GQUiTx6DFRuPYdjp65dFDEVqYguUg7rPqcRRwabRMX1R5Pc1sMZ3iw14jygb7lc/sZTX6JDpN4Fkb7Zf3UJttiQQg/g5wblFoF6RZVod/gvooAoVpNQFD5YozibG3iUq6Jc3t2OXhau+t+3NIQp0yjeHihcOzKAQzM09wIqSeKo6kw9Kr+CzcbuYuUL+eiQxyjKkdJHCf5o3cqtG7D5mD4zND/ZfQ==
ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com;
 s=arcselector10001;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1;
 bh=P5BPH7sP6wJ6lFk7/PYOh+kdZ73MBQ4NzGe07wqGO8g=;
 b=f0zBtlGuGq1vqwSfqy61GVuC3gHjqnBRZS0EWoZ5bs/T4FLC/0PR7akIEpeZ57XnG457QY0k0R0dnnCbPirUzrCLsoOY4+YsE8lrSPMid/p6hiv/fVp5wzOPYEtM26lfVw/MuEyNyG3a+Du+uqyxfWyvR+PdjglRm7USI6oZLF5lKWfOhbY3HwfITU6h/DuD8i34TlbdpndbxtJnegEoZM9QHQoDVA7vAX0Q3TnHDOS/3fqp/qC4bgBZrji6Z/Rg9NeAJk2f+8yYobIzbYcYQ30weB+Yc8wduVDzZBsbh6N9L/470Ee4PWWhv/Lg8Rmk6T469rPluWA2D71eDqqOXQ==
ARC-Authentication-Results: i=2; mx.microsoft.com 1; spf=pass (sender ip is
 40.93.14.103) smtp.rcpttodomain=amd.com smtp.mailfrom=elektrobit.com;
 dmarc=pass (p=quarantine sp=none pct=100) action=none
 header.from=elektrobit.com; dkim=pass (signature was verified)
 header.d=elektrobit.com; arc=pass (0 oda=1 ltdi=1
 spf=[1,1,smtp.mailfrom=elektrobit.com]
 dmarc=[1,1,header.from=elektrobit.com])
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=elektrobit.com;
 s=selector1;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck;
 bh=P5BPH7sP6wJ6lFk7/PYOh+kdZ73MBQ4NzGe07wqGO8g=;
 b=DkgdJ1TSPE9IzRTY3Z2f0kbT67ZtilWmT6BxhfYy7Zui6PR2sZG9AELdoT078e4jrJGvXcnq5BjGl4a0U52/AqP0kswFUUQHa2dVmElLf8srV3u1cu/zoJBR0LssOYiIAFWl0Deqng4md4OEg6jB7Rb2l4uTFlxuHAqYI1Xnw6c=
X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 40.93.14.103)
 smtp.mailfrom=elektrobit.com; dkim=pass (signature was verified)
 header.d=elektrobit.com;dmarc=pass action=none header.from=elektrobit.com;
Received-SPF: Pass (protection.outlook.com: domain of elektrobit.com
 designates 40.93.14.103 as permitted sender) receiver=protection.outlook.com;
 client-ip=40.93.14.103; helo=SN1PR07CU001.outbound.protection.outlook.com;
 pr=C
ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none;
 b=yUbX/jSvCfjzga1niCnm5GjTMD5yEz5/AOuchf73f14TrX2muboQqaDir3Yu+KOJFBs/VW2v2fqQENoWT36SgcdwmkCYTbBPjf9SypLndekdTM68EmhyoT6RMErbh2YKBIsUl8wLvM4hU1dSP2zHfpM6/Nk+6kytEiIOeKFcwBI5jFwyXVbYG0WZxNnNlnb8cUt3f7sDk/LwHKif6o7ITT/Y5RzuBVOkt3MHUPmon5XegPeRCaz+/5q8QTCoLYogLeTwY3rQWmU9eg7+5/Ay/7ZhGb+Cd0ZS2JO+rOnHzJPce7tv3MfQQXpGVX21Tt94B93somUlwYVlR92F0HuzVw==
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com;
 s=arcselector10001;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1;
 bh=P5BPH7sP6wJ6lFk7/PYOh+kdZ73MBQ4NzGe07wqGO8g=;
 b=DcoRnEpsKD5Iw/qVeoNFPxtv2tzcQ7Twajrbu1sWE0LHhHdQdGguARdtLK78HMFIjq97C8NGy5iin4brhGvBEsEpJQ8uLpDhZeGLrTJJIjYCppNuNrMuJF6g1rWOAjOSHqeSitYEbF4YrBJ+UbY1zk5lV6jciS+/eefg62LHjNNbys6FwMRTQa6vFNlO2BzIZxYH37crAs+WOTYJ4oviXCktnmDFqlPWcDRCsRzPmyDwVARug1H6hqncBuBF4zhQvTCyI75b8+SOKy0umSaWv1zpH8bLQ+OQtKw3y3hm+Jbf2CLk5DqCh/p+SAsUVXXjBeb/0Q53y4m+DZj2SBz7sQ==
ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass (sender ip is
 213.95.148.172) smtp.rcpttodomain=lists.xenproject.org
 smtp.mailfrom=elektrobit.com; dmarc=pass (p=quarantine sp=none pct=100)
 action=none header.from=elektrobit.com; dkim=none (message not signed);
 arc=none (0)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=elektrobit.com;
 s=selector1;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck;
 bh=P5BPH7sP6wJ6lFk7/PYOh+kdZ73MBQ4NzGe07wqGO8g=;
 b=DkgdJ1TSPE9IzRTY3Z2f0kbT67ZtilWmT6BxhfYy7Zui6PR2sZG9AELdoT078e4jrJGvXcnq5BjGl4a0U52/AqP0kswFUUQHa2dVmElLf8srV3u1cu/zoJBR0LssOYiIAFWl0Deqng4md4OEg6jB7Rb2l4uTFlxuHAqYI1Xnw6c=
X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 213.95.148.172)
 smtp.mailfrom=elektrobit.com; dkim=none (message not signed)
 header.d=none;dmarc=pass action=none header.from=elektrobit.com;
Received-SPF: Pass (protection.outlook.com: domain of elektrobit.com
 designates 213.95.148.172 as permitted sender)
 receiver=protection.outlook.com; client-ip=213.95.148.172;
 helo=denue6es012.ebgroup.elektrobit.com; pr=C
From: Rose Spangler <Rose.Spangler@elektrobit.com>
To: <xen-devel@lists.xenproject.org>
CC: Sergej Proskurin <proskurin@sec.in.tum.de>, 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>, Julien Grall <julien.grall@arm.com>
Subject: [RFC PATCH v6 19/43] arm/p2m: Change function prototype of p2m_alloc_table
Date: Mon, 20 Apr 2026 17:26:24 -0400
Message-ID: <20260420212648.208640-12-Rose.Spangler@elektrobit.com>
X-Mailer: git-send-email 2.34.1
In-Reply-To: <20260420212648.208640-1-Rose.Spangler@elektrobit.com>
References: <20260420212648.208640-1-Rose.Spangler@elektrobit.com>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit
Content-Type: text/plain
X-Originating-IP: [10.10.178.50]
X-ClientProxiedBy: denue6es013.ebgroup.elektrobit.com (10.243.160.141) To
 denue6es012.ebgroup.elektrobit.com (10.243.160.140)
X-EOPAttributedMessage: 1
X-MS-Exchange-SkipListedInternetSender:
 ip=[213.95.148.172];domain=denue6es012.ebgroup.elektrobit.com
X-MS-TrafficTypeDiagnostic:
	CH2PEPF00000099:EE_|IA3PR08MB10566:EE_|BL6PEPF0001AB58:EE_|IA3PR08MB10336:EE_
X-MS-Office365-Filtering-Correlation-Id: 8baa4ee8-8569-4bbf-218d-08de9f23a66a
X-SM-outgoing: yes
X-MS-Exchange-SenderADCheck: 1
X-MS-Exchange-AntiSpam-Relay: 0
X-Microsoft-Antispam-Untrusted:
 BCL:0;ARA:13230040|82310400026|376014|36860700016|1800799024|22082099003|56012099003|18002099003;
X-Microsoft-Antispam-Message-Info-Original:
 =?us-ascii?Q?szvFDjhOIISQl4Sg64JDdUBIEN/vyxAmSIX9dVdgrojq+PYhmb+KvSCAx2Oa?=
 =?us-ascii?Q?BCt7a4M2AUKuJrOdPDJCHBGNrlrRyvrolgMvAAPo3NiaFYd52KeXLT9srtKc?=
 =?us-ascii?Q?IW/4APPSdzdNQ/1gcjMWitiZAYtfVvKaCCGm8/J6GFQ3hF4Sa2emqRZGNG3B?=
 =?us-ascii?Q?H3kKMTodqLiJyxeScUdLp96PUDfNUyc3+j5PkxV7NZdfIyHNAZR/SA5kY22y?=
 =?us-ascii?Q?U0nbpqm2N29dCe02746lQubYYItMCuxyGZUCQVPS6r5dLSQkAPziltgY157E?=
 =?us-ascii?Q?fMEe3YhQGt6japaRt9y6SRwk0uTV1FXZmbRAWUzhD20kFMvLtqwK+rvTHvZx?=
 =?us-ascii?Q?g7+wAjUP7/8ZNJBI0kNWn1iuLiBoPREb+BJQPUdxucTX2V90ed5u2WsSGBQv?=
 =?us-ascii?Q?35YK0tp+Tz0fcSk2oqjFTBX2cs6A761fg918Pg50Ovvn2mfE7ZsbAFfWTUi+?=
 =?us-ascii?Q?krS91R9zGLy8Rju6oTjOT1gq7rslO7kMiE7kEbRFcG3hBDVvRTBeOziyzw99?=
 =?us-ascii?Q?LxZ8/7//JXBY+pOZNlWcuAOeGW72wzXxJTh4hTRpcxQ3mrXUL+hPjauxYkFH?=
 =?us-ascii?Q?eyPHJPFIKvVDcrzPIqsYeuOhTkyiLEJGDflOMAmMh3gUQfwnC4tJpe6Kt02L?=
 =?us-ascii?Q?UxS+9HWtIdouh6zP1LGMaEO5FT8xYPY8J3aaNiMyL/6nDEKZpYwXD6IWg4Hl?=
 =?us-ascii?Q?7Sr3+ByIFhVJNZSnri3ki2Kvap8Zu2WS6uoHqllc4E2BBR0WSZEX6lTOwykU?=
 =?us-ascii?Q?ZYlZfjTXs4xGGzVSjO48ZOUVpgd75hEoAzepBCjgSm36jHqwdNeBTTSH3kij?=
 =?us-ascii?Q?l+BlyfiIU9qSpjPPcnKETS7rjyoO9KUK1gdRRwLFRx6ZcV0Z7zuc1dEgeRwD?=
 =?us-ascii?Q?QQevbgjwu+hDSVLEV1PfMtzajTyOTMOLVJfFePIVLMIaCHdd5T4bFBDZ7cda?=
 =?us-ascii?Q?5mVBIQFHxwj+2+qzHCevvaemXb70vv/IAbVMjZnOMJo4oeiT1+MgAyngL8YM?=
 =?us-ascii?Q?S3ua0JEdI6Gf298qmtF93nWgcg5/twhe0l0rigxmi0/5GdpibROXwkWig+NP?=
 =?us-ascii?Q?nbxKvWiN4Gs56JAW0mzG/hqiK8bUaa39Erfjr4JHG/6Yyc8GgjOEU+2kjsxw?=
 =?us-ascii?Q?7Q7AsRUK42hFTr4f71+H848TEoBHcxVWKWekAMliqMlw/tiEAoAMstx2H92Y?=
 =?us-ascii?Q?6WfzlGt7/nlHkvqW?=
X-Forefront-Antispam-Report-Untrusted:
 CIP:213.95.148.172;CTRY:DE;LANG:en;SCL:1;SRV:;IPV:CAL;SFV:NSPM;H:denue6es012.ebgroup.elektrobit.com;PTR:eth1-fw1-nbg6.eb.noris.de;CAT:NONE;SFS:(13230040)(82310400026)(376014)(36860700016)(1800799024)(22082099003)(56012099003)(18002099003);DIR:OUT;SFP:1102;
X-Exchange-RoutingPolicyChecked:
 RMvZnrV0yagMbHlsjQTso52c+ZhQc8Y0xCWHYxiYZzDcHcrfqfDCB+MBC6IEjDLU6wNPNaf4vT0PT1gfyVSzgQRFVqKAiYhyTCti4VpcL1iOynEEpBAs7Nr9gOPilk4OFGU3keR6n4FpfPoy2QBVr85gmjd/s9Ex+p7DVSAoLMEzl7qzVSqVVYOdkWgFBblK2LrHZougaHQyl7fQiomPLsBOWc2GpuGfCbUaRKtRey3wbqTwuspYMB5SLjZ7jYahdowLqo0kznzJjuroVHnqxyLom4LwAwma2r4ObOljGT7qXNYiMHZbp4bs4SHIEFrwNLzs7CHRkbhteuM7VqQZoA==
X-MS-Exchange-Transport-CrossTenantHeadersStamped: IA3PR08MB10566
X-MS-Exchange-SkipListedInternetSender:
 ip=[40.93.14.103];domain=SN1PR07CU001.outbound.protection.outlook.com
X-MS-Exchange-ExternalOriginalInternetSender:
 ip=[40.93.14.103];domain=SN1PR07CU001.outbound.protection.outlook.com
X-MS-Exchange-Transport-CrossTenantHeadersStripped:
 BL6PEPF0001AB58.namprd02.prod.outlook.com
X-MS-PublicTrafficType: Email
X-MS-Office365-Filtering-Correlation-Id-Prvs:
	ac14f798-65ea-4162-f5da-08de9f23a071
X-Microsoft-Antispam:
	BCL:0;ARA:13230040|156008|82310400026|14060799003|35042699022|376014|36860700016|1800799024|22082099003|56012099003|18002099003;
X-Microsoft-Antispam-Message-Info:
	=?us-ascii?Q?OJjf698G6RW1Rw+j3xqP7EWlUBm2cP0GQMZUeAdqH8RVos7nXgUVQi9ntKuw?=
 =?us-ascii?Q?+6ldQ8E6TvDMEpyp3pwdFpXf2RR9rGfloxjOUa2Y9FDVFM5o/8fAZruFoVFO?=
 =?us-ascii?Q?fGhhRP3vg2QX2fh1iTLx5k8Q8EXW6fJt+3iFOXRqfuonEwWsnHsY/HjSTLZU?=
 =?us-ascii?Q?EtYaivtqX+UVQtC0kJ6/ldA1Wn4Ef6sYoTiWg0CwhQv3AhnFCSCWzE4XSxJS?=
 =?us-ascii?Q?N5RHJcN1cvcKuQXQKE9IwldCWKn+FUITXoKlRS8amUCvMxg5HstGZ3u6axyC?=
 =?us-ascii?Q?c0L2LCgSu+4h9UmumDpSVHcMSslz6o7bkvXFdIUX7Cx7qd9Unt6divkSjR7u?=
 =?us-ascii?Q?De2li0xtkCz7n5ywYP1l4neIxM5RZIgC5Zua073k8I3B9q9oFRYUg7x7d0Wc?=
 =?us-ascii?Q?o7CjC7VIRxkwqTHm6A+oFyt7bjPemE778Nc+H8AeoCJjjf1G6Ze2CZjc+Tyq?=
 =?us-ascii?Q?daPwWxKwWpiJtAR8VyyVT1q6TPsv7Z28FHFBp/Z5UMyRPJgx4Z7VDUCan9Oq?=
 =?us-ascii?Q?x201d4+s/J8TGGhar5CJooLi5XjPCVWY437thVvYClP5uNgpVgHTU4fOJUWq?=
 =?us-ascii?Q?+QZLtuhfgAw6XoDvrcmSldUK7POhPm3Vzl6TRV0ZO7Ue9N4nj/9IU9q5IqwP?=
 =?us-ascii?Q?AL0kQLfJ5uIc5asROo115Kv6ZCYbIlgL2dQWNjSYAp1+Q7ugbUcWgcgxMSMz?=
 =?us-ascii?Q?7G8dCHEIulvk+6u+1bY6xG8eh9IU8dJpHZsShnY2Bf1Sov8sigsNjEK6V+7D?=
 =?us-ascii?Q?To/05pWv99kvynSG98fZTmd3g4o8fT40QaJIuOzGf+D2lp6gKqptOcb0Md2R?=
 =?us-ascii?Q?NJCxmYLnTm0jFOF+5kyF6jkVgpfvcti4WqjbtMlu+kx6gFKi4oXIqRIDOLFB?=
 =?us-ascii?Q?b05FfYzS+Dho6oIFMqnt4ny+CtwO/0XbXVJAcm3jI/Hhm5uBjt4NjSs48Cgr?=
 =?us-ascii?Q?YcgbTVtMjjk/cxULFyft1DWk8/vXkuDB/yTwcxA4uiwly6jaMDXTawJg4lkx?=
 =?us-ascii?Q?4lBQ8Ym1dHM2ydwUBim3HsfwsIGj4l9hqW7cuYz0wS5TmfP3L+q3Dp0AWz8v?=
 =?us-ascii?Q?0/OJF0DXFeavLFcYz4V8Wbl/7/x65JaKEoack7svtZc+GF29+FiUIGMcNKnT?=
 =?us-ascii?Q?mLugyVjP0nvsU6DCcjloG4mgUVSO4eZje+vsrxyHOF5+dtzNfgG8P5LdrOZ8?=
 =?us-ascii?Q?PrOAjBnOy7/x97MC?=
X-Forefront-Antispam-Report:
	CIP:4.79.107.243;CTRY:US;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:SN1PR07CU001.outbound.protection.outlook.com;PTR:mail-sn1pr07cu00107.outbound.protection.outlook.com;CAT:NONE;SFS:(13230040)(156008)(82310400026)(14060799003)(35042699022)(376014)(36860700016)(1800799024)(22082099003)(56012099003)(18002099003);DIR:OUT;SFP:1102;
X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1
X-MS-Exchange-AntiSpam-MessageData-0:
	riy/kOz6frt4iKZ0TUo54SssfbLJOjpiWCcFOmxCS63vDLNLHxMimnW040OgMnogp9LSQn/xNcCPzpVa+6KnevryM8ZiujurqwgfEvMsNYO42yZPLZQW8qUHzTkp0K74X2q0XZ993qrexYdM1xO3MGsuV2rAk8vPjer215HknteRKtNJ1Lb89MM1avXP3aojEdAkAOG6U55yx3NBCg7WofReRv4UXRHUXAgY/tzzKPWZzhiMhOoKO/jKOPCFlu/lMLQWpDBwMK38TWE/igpYBQoexLxsoVnvbUCGdC+aq16K9jvtaXVxeITGeS9uLsxPCP9GFNv8BSYlqkLUwZrIimzKVHSY6hqyhG3N+yzApnFwZF4SpADCthtO3WDVSSAFoxQvplGLvXDgI/qI1df3mEOpgxRplVjBa1rE7gUOKqf4u8zfdJLuBqYrAWNxB3nZ
X-OriginatorOrg: elektrobit.com
X-MS-Exchange-CrossTenant-OriginalArrivalTime: 20 Apr 2026 21:27:39.3790
 (UTC)
X-MS-Exchange-CrossTenant-Network-Message-Id: 8baa4ee8-8569-4bbf-218d-08de9f23a66a
X-MS-Exchange-CrossTenant-Id: e764c36b-012e-4216-910d-8fd16283182d
X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=e764c36b-012e-4216-910d-8fd16283182d;Ip=[4.79.107.243];Helo=[usbth1es003.ebgroup.elektrobit.com]
X-MS-Exchange-CrossTenant-AuthAs: Internal
X-MS-Exchange-CrossTenant-AuthSource: TreatMessagesAsInternal-BL6PEPF0001AB58.namprd02.prod.outlook.com
X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem
X-MS-Exchange-Transport-CrossTenantHeadersStamped: IA3PR08MB10336
X-purgate-ID: tlsNG-720697/1776720465-83F66161-3FDD5E90/0/0
X-purgate-type: clean
X-purgate-size: 1589

From: Sergej Proskurin <proskurin@sec.in.tum.de>

The function "p2m_alloc_table" should be able to allocate 2nd stage
translation tables not only for the host's p2m but also for alternate
p2m's.

This commit is a refactor and contains no functional changes.

This is commit 8/12 of the altp2m_init/altp2m_teardown routines phase.

Signed-off-by: Sergej Proskurin <proskurin@sec.in.tum.de>
Acked-by: Julien Grall <julien.grall@arm.com>
---
v2: Removed altp2m table initialization from "p2m_table_init".

v3: Removed initialization of the field d->arch.altp2m_active in
    "p2m_table_init" to avoid altp2m initialization throughout different
    files.

    Merged the function "p2m_alloc_table" and "p2m_table_init".
---
 xen/arch/arm/mmu/p2m.c | 6 ++----
 1 file changed, 2 insertions(+), 4 deletions(-)

diff --git a/xen/arch/arm/mmu/p2m.c b/xen/arch/arm/mmu/p2m.c
index 51753bb2c34d..f546f63f2489 100644
--- a/xen/arch/arm/mmu/p2m.c
+++ b/xen/arch/arm/mmu/p2m.c
@@ -1426,10 +1426,8 @@ static struct page_info *p2m_allocate_root(void)
     return page;
 }
 
-static int p2m_alloc_table(struct domain *d)
+static int p2m_alloc_table(struct p2m_domain *p2m)
 {
-    struct p2m_domain *p2m = p2m_get_hostp2m(d);
-
     p2m->root = p2m_allocate_root();
     if ( !p2m->root )
         return -ENOMEM;
@@ -1576,7 +1574,7 @@ static int p2m_initialise(struct domain *d, struct p2m_domain *p2m)
     if ( rc )
         return rc;
 
-    rc = p2m_alloc_table(d);
+    rc = p2m_alloc_table(p2m);
     if ( rc )
         return rc;
 
-- 
2.34.1



From xen-devel-bounces@lists.xenproject.org Mon Apr 20 21:27:48 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 20 Apr 2026 21:27:48 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1287515.1567984 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wEw9k-0003Xm-BG; Mon, 20 Apr 2026 21:27:48 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1287515.1567984; Mon, 20 Apr 2026 21:27: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 1wEw9j-0003Wl-VY; Mon, 20 Apr 2026 21:27:47 +0000
Received: by outflank-mailman (input) for mailman id 1287515;
 Mon, 20 Apr 2026 21:27:46 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <Rose.Spangler@elektrobit.com>) id 1wEw9i-0002xH-1w
 for xen-devel@lists.xenproject.org; Mon, 20 Apr 2026 21:27:46 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wEw9h-001N4o-Em
 for xen-devel@lists.xenproject.org; Mon, 20 Apr 2026 23:27:45 +0200
Received: from [10.42.69.11] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <Rose.Spangler@elektrobit.com>)
 id 69e69a45-2eae-0a2a0a5409dd-0a2a450beb80-12
 for <xen-devel@lists.xenproject.org>; Mon, 20 Apr 2026 23:27:45 +0200
Received: from [40.93.201.105]
 (helo=CY3PR05CU001.outbound.protection.outlook.com)
 by tlsNG-42698a.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.1)
 (envelope-from <Rose.Spangler@elektrobit.com>)
 id 69e69a4f-212f-0a2a450b0019-285dc969bbfb-3
 for <xen-devel@lists.xenproject.org>; Mon, 20 Apr 2026 23:27:45 +0200
Received: from IA4P221CA0010.NAMP221.PROD.OUTLOOK.COM (2603:10b6:208:559::13)
 by BY1PR08MB10115.namprd08.prod.outlook.com (2603:10b6:a03:5a8::21)
 with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9818.32; Mon, 20 Apr
 2026 21:27:38 +0000
Received: from BL6PEPF0001AB71.namprd02.prod.outlook.com
 (2603:10b6:208:559:cafe::1a) by IA4P221CA0010.outlook.office365.com
 (2603:10b6:208:559::13) with Microsoft SMTP Server (version=TLS1_3,
 cipher=TLS_AES_256_GCM_SHA384) id 15.20.9791.48 via Frontend Transport; Mon,
 20 Apr 2026 21:27:38 +0000
Received: from usbth1es003.ebgroup.elektrobit.com (4.79.107.243) by
 BL6PEPF0001AB71.mail.protection.outlook.com (10.167.242.164) with Microsoft
 SMTP Server (version=TLS1_3, cipher=TLS_AES_256_GCM_SHA384) id 15.20.9791.48
 via Frontend Transport; Mon, 20 Apr 2026 21:27:37 +0000
Received: from usbth1es003 (localhost [127.0.0.1])
 by usbth1es003.ebgroup.elektrobit.com (Postfix) with SMTP id 4fzz950PmKz1wdP; 
 Mon, 20 Apr 2026 14:27:37 -0700 (PDT)
Received: from SN1PR07CU001.outbound.protection.outlook.com
 (mail-sn1pr07cu00103.outbound.protection.outlook.com [40.93.14.99])
 (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)
 key-exchange secp384r1 server-signature RSA-PSS (2048 bits) server-digest
 SHA256) (No client certificate requested)
 by usbth1es003.ebgroup.elektrobit.com (Postfix) with ESMTPS;
 Mon, 20 Apr 2026 14:27:36 -0700 (PDT)
Received: from CH5PR05CA0015.namprd05.prod.outlook.com (2603:10b6:610:1f0::20)
 by PH8PR08MB8582.namprd08.prod.outlook.com (2603:10b6:510:238::9)
 with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9818.32; Mon, 20 Apr
 2026 21:27:31 +0000
Received: from CH2PEPF00000099.namprd02.prod.outlook.com
 (2603:10b6:610:1f0:cafe::36) by CH5PR05CA0015.outlook.office365.com
 (2603:10b6:610:1f0::20) with Microsoft SMTP Server (version=TLS1_3,
 cipher=TLS_AES_256_GCM_SHA384) id 15.20.9791.48 via Frontend Transport; Mon,
 20 Apr 2026 21:27:30 +0000
Received: from denue6es012.ebgroup.elektrobit.com (213.95.148.172) by
 CH2PEPF00000099.mail.protection.outlook.com (10.167.244.20) with Microsoft
 SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id
 15.20.9791.48 via Frontend Transport; Mon, 20 Apr 2026 21:27:30 +0000
Received: from ubuntu.localdomain (10.10.178.50) by
 denue6es012.ebgroup.elektrobit.com (10.243.160.140) with Microsoft SMTP
 Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id
 15.2.2562.35; Mon, 20 Apr 2026 23:27:28 +0200
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@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=elektrobit.com header.i="@elektrobit.com" header.h="From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck"; dkim=pass header.s=selector1 header.d=elektrobit.com header.i="@elektrobit.com" header.h="From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck"
ARC-Seal: i=2; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=pass;
 b=On2uEasPOcoKNFeMIhg/JDgAuiZpjVggZvB2w60k9nmVjT3kiaTw7nHz14hFw3F6EyZy/MBZdQq0HKkU3BJj4fqpBJFHkp91dqmHU/8cic7/W0GnK8t+w5fV0DmC1pGC7TPy1kxwQVdi/xqjQ8rpJwGEdoDZmDwg+th9vrEvursN334ibHIB2UKEBdlqHMvO+DL07JF6qxIKIZ3KvTH3M6yjsHTpRhj/CGxaWWsa1J3uzKx/6hZlhZxyDucSFcBv+OgEu9+hKCPLObBDEEtlbhZ9zfGvswAOYZ9EpXG+FjPzE7+kfFKquajIpbNE05pOG3HHOCpdcA6mLuBDkDaFIA==
ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com;
 s=arcselector10001;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1;
 bh=ZHidNjasS/JOgBnj6tsz69bwCge0ojtPt0VVEzO0kMs=;
 b=hWuClcLT3TfdoCs+evStXCNy7l44JBVaLB7J8MXhF9uDVrMVIcpmsMxNtKKgczUTl3divJm/o9Pb5dELnVB1MpFxxvZQt8/uOKtOpLnQQP+FnLSy6VifpLTLjv4fjl18LBX54Vg3OuzXy92u1s4yVrLbBVk2iqLi+TTw9n5qoJMeXsan+fqB2fOu26E9j5atGWyoYXbVnyP0WRkq4kHgQ/nCFq1psghNUobwmNiAU6grWE93bwEIylvbjv2dQ4pbLj0Cee0dnTz4jNI5NQ8xLig227Ya6ciXG6OzJXbVzsUiCW6JeTwtsU+hXwyV31OYTVc30yO3MC3Ec+KLan9ZBA==
ARC-Authentication-Results: i=2; mx.microsoft.com 1; spf=pass (sender ip is
 40.93.14.99) smtp.rcpttodomain=amd.com smtp.mailfrom=elektrobit.com;
 dmarc=pass (p=quarantine sp=none pct=100) action=none
 header.from=elektrobit.com; dkim=pass (signature was verified)
 header.d=elektrobit.com; arc=pass (0 oda=1 ltdi=1
 spf=[1,1,smtp.mailfrom=elektrobit.com]
 dmarc=[1,1,header.from=elektrobit.com])
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=elektrobit.com;
 s=selector1;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck;
 bh=ZHidNjasS/JOgBnj6tsz69bwCge0ojtPt0VVEzO0kMs=;
 b=XMVQX4D3+g2HZWJBRi5G/wlBWhagHFQF4q+tXjdH8j2DZHkUeoIfjTj1+CmWiv8iTeDNV5h+jLZbmNJgRH48QJZ9blsHoChX62DyjEsaqMKWWOrWcjDjxU6Li+uIOQvO3lIzLTI8KHcD7eX8ypdE9M029RGgchr4SnMA1FErCsg=
X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 40.93.14.99)
 smtp.mailfrom=elektrobit.com; dkim=pass (signature was verified)
 header.d=elektrobit.com;dmarc=pass action=none header.from=elektrobit.com;
Received-SPF: Pass (protection.outlook.com: domain of elektrobit.com
 designates 40.93.14.99 as permitted sender) receiver=protection.outlook.com;
 client-ip=40.93.14.99; helo=SN1PR07CU001.outbound.protection.outlook.com;
 pr=C
ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none;
 b=jgYHjqhHga3btf7YyspEXTvORmwvhRxrZ5b/42Yi6mcHpbwv/POKHO8GKD5PO6ZCO1C9SltrSO1X2tcW5R14L1Z2orZqiHXy2fFAqKBF1Tg8Xd7C6kPyrJhhtK8vPMrMYG58S1fdMH3GjN/LOykDD/caq1ce0etC+O8x/OI/qDcxGXm+A1V7XVHIh2iiFyoXSJ1K7bNsyFyfWWHKeGGahpHcZ0lA76LtNC6bccBWlxHW+aX6C8VteaTwGyeIDIYawjBSUCIreG1IsI+AG01z9BilTFjly04qM8fo5Kjp31g8bt4ly2fGzYCvm/iKwC76AUqeAA5z7wc3b388t6hmBA==
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com;
 s=arcselector10001;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1;
 bh=ZHidNjasS/JOgBnj6tsz69bwCge0ojtPt0VVEzO0kMs=;
 b=C+/2MEAH/vQrJlNZFPjMjOJ9vXN2IwPZzt+FTKzH3CubDokNZcbrQ2/qcY9gYAxp9rsvCdnsHZVKW8Jl9I2VtBvVbpLXBRXf3P6Bnq3b19QZcPQTY4By6EfkDjxEfZqliTYHS9qkaVrNB3RqU3WGL7Wro17QHbuw0M/9CNq6ZuCFZz0fdFJw34CU/qaZF3m7FGdYal2+Qyerus1ikpwS4094LRbn/khNd6VGfV4wScFv3WxEysYkOxMa8UDIzn9t8793HAuUqrBquCHjEek5MeHegYU1YwVHsT+H8iPSQXxdK9a4tQ1QPNDsqDa3UjFIcoqUhWhmVUSoDgrG1tbkdA==
ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass (sender ip is
 213.95.148.172) smtp.rcpttodomain=lists.xenproject.org
 smtp.mailfrom=elektrobit.com; dmarc=pass (p=quarantine sp=none pct=100)
 action=none header.from=elektrobit.com; dkim=none (message not signed);
 arc=none (0)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=elektrobit.com;
 s=selector1;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck;
 bh=ZHidNjasS/JOgBnj6tsz69bwCge0ojtPt0VVEzO0kMs=;
 b=XMVQX4D3+g2HZWJBRi5G/wlBWhagHFQF4q+tXjdH8j2DZHkUeoIfjTj1+CmWiv8iTeDNV5h+jLZbmNJgRH48QJZ9blsHoChX62DyjEsaqMKWWOrWcjDjxU6Li+uIOQvO3lIzLTI8KHcD7eX8ypdE9M029RGgchr4SnMA1FErCsg=
X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 213.95.148.172)
 smtp.mailfrom=elektrobit.com; dkim=none (message not signed)
 header.d=none;dmarc=pass action=none header.from=elektrobit.com;
Received-SPF: Pass (protection.outlook.com: domain of elektrobit.com
 designates 213.95.148.172 as permitted sender)
 receiver=protection.outlook.com; client-ip=213.95.148.172;
 helo=denue6es012.ebgroup.elektrobit.com; pr=C
From: Rose Spangler <Rose.Spangler@elektrobit.com>
To: <xen-devel@lists.xenproject.org>
CC: Sergej Proskurin <proskurin@sec.in.tum.de>, 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: [RFC PATCH v6 20/43] arm/p2m: Rename parameter in p2m_alloc_vmid
Date: Mon, 20 Apr 2026 17:26:25 -0400
Message-ID: <20260420212648.208640-13-Rose.Spangler@elektrobit.com>
X-Mailer: git-send-email 2.34.1
In-Reply-To: <20260420212648.208640-1-Rose.Spangler@elektrobit.com>
References: <20260420212648.208640-1-Rose.Spangler@elektrobit.com>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit
Content-Type: text/plain
X-Originating-IP: [10.10.178.50]
X-ClientProxiedBy: denue6es013.ebgroup.elektrobit.com (10.243.160.141) To
 denue6es012.ebgroup.elektrobit.com (10.243.160.140)
X-EOPAttributedMessage: 1
X-MS-Exchange-SkipListedInternetSender:
 ip=[213.95.148.172];domain=denue6es012.ebgroup.elektrobit.com
X-MS-TrafficTypeDiagnostic:
	CH2PEPF00000099:EE_|PH8PR08MB8582:EE_|BL6PEPF0001AB71:EE_|BY1PR08MB10115:EE_
X-MS-Office365-Filtering-Correlation-Id: 6a241d68-4607-4d19-fb71-08de9f23a58a
X-SM-outgoing: yes
X-MS-Exchange-SenderADCheck: 1
X-MS-Exchange-AntiSpam-Relay: 0
X-Microsoft-Antispam-Untrusted:
 BCL:0;ARA:13230040|36860700016|1800799024|376014|82310400026|56012099003|22082099003|18002099003;
X-Microsoft-Antispam-Message-Info-Original:
 =?us-ascii?Q?oCutujWzU/ev/yCD8TSqrORAdzC+DgD0JbPCzM72YDG/2VxmruJeVpIBXLAb?=
 =?us-ascii?Q?JR06Fd8F//A0bKZaQ34LYU7cUz2xfPhX+wV33Fs/atG53tuEZeSF76BzWTn3?=
 =?us-ascii?Q?evZONISYAi+uTB70DnQzCarrfa6ZSlFfNbrbqJqt8lx8A7RfL6Zngd94fri5?=
 =?us-ascii?Q?24ppqOGMhKasZbxK5KMUHlOzNq7dqgKKED+t3L4MtOJ81BhouY3B0cTcNShn?=
 =?us-ascii?Q?xTm0eqBpZvBYUe/w61gONQqZTJM2PrisXRzoCvnbr9vCZm6x3PnebyVTQoWR?=
 =?us-ascii?Q?Eeo4yhuoxYDMtn99K4A1595n1NvGw4F3vhXOsrKjf7RkDHpIe3bz2tIkeZTV?=
 =?us-ascii?Q?uveKiKuf5kjGtY6gbJGEngRGZbTCmQ+5vddoMsZ02kpnNnzCfy66FH7/mtzZ?=
 =?us-ascii?Q?aJ1TB3Irn8135SY7iEPSBphnVYlIxh4Mpd4qFin3M3JMLMBLxpHVc8BdKm8t?=
 =?us-ascii?Q?/9t1J+yXsaluzyWoLBthEhfdv4TqNiyq/mqrXLVa1wUnHk8dYNb2mog/EA3N?=
 =?us-ascii?Q?gSqtS/mHeLzCoK/fHbE6/4HIzepJp8k2w9OYjSLraz44zI6XOjcdFh3nT+ow?=
 =?us-ascii?Q?Jl9J2kBeWePsbk+f3gcg6QHt+le82mS1839kWUR3eK4T0CznXhUuGN8tfGiR?=
 =?us-ascii?Q?nGqzowAb7DfzK1ULAhLWPDymykV5t220v9mUF7As9IaS0AZrmrYNf/Bob9aE?=
 =?us-ascii?Q?qN9bm0PoakLzFAcW7x0cG5xvNxdr90f2Af4VnVvF1Vw74+y3OnOlGJQsRm3X?=
 =?us-ascii?Q?cEdQnpbSV+A81g35UI/81bYqXL0j01jPngG8YqTa2P2m1mknQqv+JNvNRlUj?=
 =?us-ascii?Q?alxlRdiOtXF6pDX/Oocn32Mv+Oqj+iQtpxoz4LJZSwLIhTba+BhCIsTBQ4te?=
 =?us-ascii?Q?22CZr6yTvaJ6q63m5h6rdu8nIKo1NeL4X4rmGlzPukA9sE/LMxVB4Ij4XmEO?=
 =?us-ascii?Q?2iTwFUVDcyOXrcyhYWGgwhxb0YfDt+ExnnBlwGgH05Ky0SxbVBdNEEj/93w/?=
 =?us-ascii?Q?D4TkOTocX55SQzsMKegA4TMDURLcjTVirVbaTZH+FJByZE7YEx1C6tjthxix?=
 =?us-ascii?Q?WU2Cy/ExFgMj3glUJNetfuyCzE5sDtpDB5TZxgAJh9ocFJ5h27jwyTSDQ+sw?=
 =?us-ascii?Q?hBj6QrP+bsh2DzB0LTgT5EHHBQvnR5WboR9KiSgmjAvUzyuTvPxZ6vODeu0d?=
 =?us-ascii?Q?5fTWXeHkAfr7k0BraXTvzN5V7gsMkJ80aGt2wV7xgO8RJ0t3jmRSN30IWqK9?=
 =?us-ascii?Q?VowcNk9dr3iL/MnkhkyfQ5V2B1Qj2ezGYDiUXANy3Q=3D=3D?=
X-Forefront-Antispam-Report-Untrusted:
 CIP:213.95.148.172;CTRY:DE;LANG:en;SCL:1;SRV:;IPV:CAL;SFV:NSPM;H:denue6es012.ebgroup.elektrobit.com;PTR:eth1-fw1-nbg6.eb.noris.de;CAT:NONE;SFS:(13230040)(36860700016)(1800799024)(376014)(82310400026)(56012099003)(22082099003)(18002099003);DIR:OUT;SFP:1102;
X-Exchange-RoutingPolicyChecked:
 XaLtWHR66arFg7rYhcXnEz1+NkJHKKpu+/qxHMfOCP7cTwkxhvM3wKuheJWoeEDrOCFj9e2GluzYyP6RQPIaROQklF7y87qyiZqePeAdQ+PG0hKvXDGaPZo/aF79hW/XW7EpWYhMxABfXW6Bn0t7mEEbwrL8haMc6L0KHvIbSuYQZ2HkIMzZ3A4VyAseGmGurx15yfgH+D0TY0n7bECZ/WTMzoPSVoPwZ40l7xxHjyo98KY6X1y7L4p1kZz72z6v/d+MD0q78KWZCymuQLl/3VyhhjSd9TcK3qAAiTwXR0jP6D+TuWsCmkUDvae4byriQpgiTHba+AGN/9Y82mBqow==
X-MS-Exchange-Transport-CrossTenantHeadersStamped: PH8PR08MB8582
X-MS-Exchange-SkipListedInternetSender:
 ip=[40.93.14.99];domain=SN1PR07CU001.outbound.protection.outlook.com
X-MS-Exchange-ExternalOriginalInternetSender:
 ip=[40.93.14.99];domain=SN1PR07CU001.outbound.protection.outlook.com
X-MS-Exchange-Transport-CrossTenantHeadersStripped:
 BL6PEPF0001AB71.namprd02.prod.outlook.com
X-MS-PublicTrafficType: Email
X-MS-Office365-Filtering-Correlation-Id-Prvs:
	18ae6dae-186a-473f-b558-08de9f23a11b
X-Microsoft-Antispam:
	BCL:0;ARA:13230040|376014|14060799003|36860700016|35042699022|156008|82310400026|1800799024|56012099003|22082099003|18002099003;
X-Microsoft-Antispam-Message-Info:
	=?us-ascii?Q?mN/xbEjN63fPM44mDacGcP3gmDhWwI7W1b9bgKqZTWVLetgF3wdjlzxiVUKu?=
 =?us-ascii?Q?84f3OO03f1gipnwuggHRzm+WBIhBqoj2z1Gc5gSzmWe+neSASWE9YlpF26Rj?=
 =?us-ascii?Q?6ySU+BXaVACn4xg4EiR+72Afvik50VOeCeEmBRBEtLWUqonHs+W05O2nfBUP?=
 =?us-ascii?Q?U2LdLbkq/HmCXGkSZgnT61dyjhoyyKwWMZ8FoJXxmOwRY7DYiHW8L2yKRvLS?=
 =?us-ascii?Q?zfn2s0rXbZAYGd4caa78q8x13M0dTHtmOoczn0qLRUGOvMc85sGXAkZw3yXC?=
 =?us-ascii?Q?oh1yytjczjGnjLcln7b7t7EKbuFtUuugiThSCT7r4lYJg+DAgtWN8rVTe1QO?=
 =?us-ascii?Q?1D+hCPW6R/hfXao3xYnYRqjtict1gF2XrYXdID/GYwLN8txwKZvaUmJ0aETT?=
 =?us-ascii?Q?NP12pF6DxtNV+8E9mS3XOgP2Fw2sNyeHovHghgBlujDxQb8NNYe1OZrsCiQU?=
 =?us-ascii?Q?j4lIdxEPSSMxM9luBlkLAjx7RjFjz+dFOuCwZFIoj1wokBb4cKfC0Ps3kuai?=
 =?us-ascii?Q?mOdV41DaFW9RCiHAu9SM/YQzhWOwtektDUh6SCQVE7vqspy70dUO3U9l0Qfk?=
 =?us-ascii?Q?T82LsM7kvr45HM9ftF8pLzAlNK9sBFRiRHYrBjppi1le0ju/meCmRgpKr9Df?=
 =?us-ascii?Q?iJ5vv1xy0rzWsSxnx7z+ilImhQalCGJxN9cLhIyTnUopKMOqbaqoR+nCkZAL?=
 =?us-ascii?Q?oXwXfBHsyb+Ax+Pl3JfZctxm1lWAO6i0N5StyblaEi7slNH3KgIgHh1DmKDu?=
 =?us-ascii?Q?XkWn4GSAd3ojxFs9/Kx0gaXy/vzBD9TSrbmtn95bn/upI0yJjndmSZfGmOTS?=
 =?us-ascii?Q?ycaxrwERIrzeTaRKKd2+eQ0IcCtPPd64ubrFeAWVref8lE786k+fKuM49evB?=
 =?us-ascii?Q?K0W7/zX2NE2hil7F95pGMVGc4UG8+KHlj1f48zvk1OFODbJA+OitAyxrPH58?=
 =?us-ascii?Q?gn9KtNbMq/h81qUw+5dHqkX+wvLiNZxJt/VLNGSIKotWXqBrihk7QIouaJ8y?=
 =?us-ascii?Q?ai9bkuJc0yvvZ4Mi4hkifkc/9CwYT5F+qA5fZd/95pCNOSW9qjNekSnQme6Z?=
 =?us-ascii?Q?4rD5hjG2rpXZ4Hxg2nIeCTFxHLl1tPdeIYSRQ9J5WrCmsd6x8RcrdxwTkvop?=
 =?us-ascii?Q?ZV9tZYcw5B6PILtgJTKQg90Poq7+AWWHUvNtneXQos+sYgS3ywI2nMGZO6rn?=
 =?us-ascii?Q?H/QBBLmLjIV9Q/mrpaRCoWRkT3M5gmfQB9wjC8KfV2fuAGdPLIS+1lvkFWlu?=
 =?us-ascii?Q?vBHcntGKCmYmJvrglbiO/OxYW1a2XvvfnqwgEppgLw=3D=3D?=
X-Forefront-Antispam-Report:
	CIP:4.79.107.243;CTRY:US;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:SN1PR07CU001.outbound.protection.outlook.com;PTR:mail-sn1pr07cu00103.outbound.protection.outlook.com;CAT:NONE;SFS:(13230040)(376014)(14060799003)(36860700016)(35042699022)(156008)(82310400026)(1800799024)(56012099003)(22082099003)(18002099003);DIR:OUT;SFP:1102;
X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1
X-MS-Exchange-AntiSpam-MessageData-0:
	OJilbvoS+TJ9e7ZCwGJCWEquSlTNmoua9MaW40cXGO88KQyinMaaGSh15iMhqK2/icl94gQYb+r3c4l15+kAm2wLrg4ZrXkg84YMkyd8By5LeM+h1DlsHMbor5KmsjZPfLBKG3d8b45XYsdEDzDB5D8gv59wOUVLrHa9Dmd22GTjfLX0PbmtQgwBdmw0zyCS26F/RMx2ttcF+FqgEjL9Wh+/UH3kiZk2whzX5wsUD+142c1MpfTwIdr7xXh1Y8GmH6ZuJ5OdLEX1iRJJ/nFv8PWuSr/+R00RQWAYfMGnz4n3MwPUpwjGjAR2WkF4/PL7MUmzaf5TGEIgr8Pg8/ZKiH5OogJqgQh3VAvo+6t/2Wnx6uoRvzdvnp1ZtgZ8dv01ayr4e05G5Io5WCeeBs7xBnH/ns7X8ccgFI4X2yYAvfWgG7QQBuVKq7FdPGN5UqTE
X-OriginatorOrg: elektrobit.com
X-MS-Exchange-CrossTenant-OriginalArrivalTime: 20 Apr 2026 21:27:37.9262
 (UTC)
X-MS-Exchange-CrossTenant-Network-Message-Id: 6a241d68-4607-4d19-fb71-08de9f23a58a
X-MS-Exchange-CrossTenant-Id: e764c36b-012e-4216-910d-8fd16283182d
X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=e764c36b-012e-4216-910d-8fd16283182d;Ip=[4.79.107.243];Helo=[usbth1es003.ebgroup.elektrobit.com]
X-MS-Exchange-CrossTenant-AuthAs: Internal
X-MS-Exchange-CrossTenant-AuthSource: TreatMessagesAsInternal-BL6PEPF0001AB71.namprd02.prod.outlook.com
X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem
X-MS-Exchange-Transport-CrossTenantHeadersStamped: BY1PR08MB10115
X-purgate-ID: tlsNG-42698a/1776720465-7DD6FF3B-419190ED/0/0
X-purgate-type: clean
X-purgate-size: 1341

From: Sergej Proskurin <proskurin@sec.in.tum.de>

This commit does not change or introduce any additional functionality
but rather is a part of the following commit that alters the
functionality of the function "p2m_alloc_vmid".

This is commit 9/12 of the altp2m_init/altp2m_teardown routines phase.

Signed-off-by: Sergej Proskurin <proskurin@sec.in.tum.de>
---
 xen/arch/arm/p2m.c | 12 ++++++------
 1 file changed, 6 insertions(+), 6 deletions(-)

diff --git a/xen/arch/arm/p2m.c b/xen/arch/arm/p2m.c
index fb03978a19af..2c43b6033360 100644
--- a/xen/arch/arm/p2m.c
+++ b/xen/arch/arm/p2m.c
@@ -286,24 +286,24 @@ int p2m_alloc_vmid(struct domain *d)
 {
     struct p2m_domain *p2m = p2m_get_hostp2m(d);
 
-    int rc, nr;
+    int rc, vmid;
 
     spin_lock(&vmid_alloc_lock);
 
-    nr = find_first_zero_bit(vmid_mask, MAX_VMID);
+    vmid = find_first_zero_bit(vmid_mask, MAX_VMID);
 
-    ASSERT(nr != INVALID_VMID);
+    ASSERT(vmid != INVALID_VMID);
 
-    if ( nr == MAX_VMID )
+    if ( vmid == MAX_VMID )
     {
         rc = -EBUSY;
         printk(XENLOG_ERR "p2m.c: dom%d: VMID pool exhausted\n", d->domain_id);
         goto out;
     }
 
-    set_bit(nr, vmid_mask);
+    set_bit(vmid, vmid_mask);
 
-    p2m->vmid = nr;
+    p2m->vmid = vmid;
 
     rc = 0;
 
-- 
2.34.1



From xen-devel-bounces@lists.xenproject.org Mon Apr 20 21:27:51 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 20 Apr 2026 21:27:51 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1287521.1567997 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wEw9n-00049G-0c; Mon, 20 Apr 2026 21:27:51 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1287521.1567997; Mon, 20 Apr 2026 21:27: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 1wEw9m-00047s-QL; Mon, 20 Apr 2026 21:27:50 +0000
Received: by outflank-mailman (input) for mailman id 1287521;
 Mon, 20 Apr 2026 21:27:49 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <Rose.Spangler@elektrobit.com>) id 1wEw9k-0003fF-VT
 for xen-devel@lists.xenproject.org; Mon, 20 Apr 2026 21:27:49 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wEw9k-001N7n-B4
 for xen-devel@lists.xenproject.org; Mon, 20 Apr 2026 23:27:48 +0200
Received: from [10.42.69.3] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <Rose.Spangler@elektrobit.com>)
 id 69e69a50-bab6-0a2a0a5309dd-0a2a4503a45a-8
 for <xen-devel@lists.xenproject.org>; Mon, 20 Apr 2026 23:27:48 +0200
Received: from [40.93.201.118]
 (helo=CY3PR05CU001.outbound.protection.outlook.com)
 by tlsNG-33051d.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.1)
 (envelope-from <Rose.Spangler@elektrobit.com>)
 id 69e69a52-672d-0a2a45030019-285dc9764a1b-3
 for <xen-devel@lists.xenproject.org>; Mon, 20 Apr 2026 23:27:48 +0200
Received: from MN0PR02CA0003.namprd02.prod.outlook.com (2603:10b6:208:530::6)
 by DSSPR08MB972959.namprd08.prod.outlook.com (2603:10b6:8:375::10)
 with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9818.32; Mon, 20 Apr
 2026 21:27:42 +0000
Received: from BL6PEPF0001AB72.namprd02.prod.outlook.com
 (2603:10b6:208:530:cafe::82) by MN0PR02CA0003.outlook.office365.com
 (2603:10b6:208:530::6) with Microsoft SMTP Server (version=TLS1_3,
 cipher=TLS_AES_256_GCM_SHA384) id 15.20.9791.48 via Frontend Transport; Mon,
 20 Apr 2026 21:27:41 +0000
Received: from usbth1es003.ebgroup.elektrobit.com (4.79.107.243) by
 BL6PEPF0001AB72.mail.protection.outlook.com (10.167.242.165) with Microsoft
 SMTP Server (version=TLS1_3, cipher=TLS_AES_256_GCM_SHA384) id 15.20.9791.48
 via Frontend Transport; Mon, 20 Apr 2026 21:27:41 +0000
Received: from usbth1es003 (localhost [127.0.0.1])
 by usbth1es003.ebgroup.elektrobit.com (Postfix) with SMTP id 4fzz985VvZz1wdR; 
 Mon, 20 Apr 2026 14:27:40 -0700 (PDT)
Received: from DM5PR08CU004.outbound.protection.outlook.com
 (mail-dm5pr08cu00405.outbound.protection.outlook.com [40.93.13.101])
 (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)
 key-exchange secp384r1 server-signature RSA-PSS (2048 bits) server-digest
 SHA256) (No client certificate requested)
 by usbth1es003.ebgroup.elektrobit.com (Postfix) with ESMTPS;
 Mon, 20 Apr 2026 14:27:40 -0700 (PDT)
Received: from CH0PR03CA0402.namprd03.prod.outlook.com (2603:10b6:610:11b::23)
 by DM8PR08MB7304.namprd08.prod.outlook.com (2603:10b6:8:11::5) with
 Microsoft
 SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id
 15.20.9818.32; Mon, 20 Apr 2026 21:27:36 +0000
Received: from CH2PEPF0000009E.namprd02.prod.outlook.com
 (2603:10b6:610:11b:cafe::34) by CH0PR03CA0402.outlook.office365.com
 (2603:10b6:610:11b::23) with Microsoft SMTP Server (version=TLS1_3,
 cipher=TLS_AES_256_GCM_SHA384) id 15.20.9791.48 via Frontend Transport; Mon,
 20 Apr 2026 21:27:33 +0000
Received: from denue6es012.ebgroup.elektrobit.com (213.95.148.172) by
 CH2PEPF0000009E.mail.protection.outlook.com (10.167.244.27) with Microsoft
 SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id
 15.20.9791.48 via Frontend Transport; Mon, 20 Apr 2026 21:27:32 +0000
Received: from ubuntu.localdomain (10.10.178.50) by
 denue6es012.ebgroup.elektrobit.com (10.243.160.140) with Microsoft SMTP
 Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id
 15.2.2562.35; Mon, 20 Apr 2026 23:27:29 +0200
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@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=elektrobit.com header.i="@elektrobit.com" header.h="From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck"; dkim=pass header.s=selector1 header.d=elektrobit.com header.i="@elektrobit.com" header.h="From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck"
ARC-Seal: i=2; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=pass;
 b=GiaKOdP7Rh+1SxptvOYJi0BY3N3yj0dpLS2KOih34S8kNq5DQx1ihQXLjis9t0l24wfo17QeXY3MgMlMAOO1t+CNfjW7ANUfsZ8tMrSmGqLzTcRMZ5f7gKbAcerQsQEvFPmfoLD+zZMgyOE7A7sCy7jVDOseJ1UKhflB0UXREKIIl/3xzm17+cglKDinsBU+qnuN7I41x9fQ+luIyVEWRhaaz1ulFHutd+UTqgX4O953wXdQ96+Cm8oNPlGlSy5mw/GNUjPFRzdIY1RdIKJLpQ0/6o+6JWesSIK9l09Q8H+Y0BA6g+YoFuio4y7kJijZzF7bUGYwZxnaFqoSNh+TLQ==
ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com;
 s=arcselector10001;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1;
 bh=oIAPv9xmUqmZOQALhD1wFmf2mfwJESnPZqbe9aDV5X0=;
 b=f7GCRVS8dCCMLyaUx6gwhC5HypeIS9dI3B4Ty32W/xGcmQeBvbMyxNB5miIIqCB+fvLy8QbTiAtBnPZs3zVbhno9QEd1dtKQZAAeakd/JOvaG6qwm08KBCdLiUkqnlALzLBHV0S3z6XxLicLlEk3ZnxB+1kbnab79zogaDpIcIm2n8WcUOn6DpKFvQHJTzP3l/BIoOK+3Cge3zGvAkmryvFOi6b4k7O5Eo+LtF2alTezV9s0wDg9HhWcKO32VjBXpzcQlcyRyiucELOjDvytNVX/SX6yrRE/lE1wseIvuX58IsTxOewX/7zfgThZXrOmHyScbiAyaYkeo/Zu92riHg==
ARC-Authentication-Results: i=2; mx.microsoft.com 1; spf=pass (sender ip is
 40.93.13.101) smtp.rcpttodomain=amd.com smtp.mailfrom=elektrobit.com;
 dmarc=pass (p=quarantine sp=none pct=100) action=none
 header.from=elektrobit.com; dkim=pass (signature was verified)
 header.d=elektrobit.com; arc=pass (0 oda=1 ltdi=1
 spf=[1,1,smtp.mailfrom=elektrobit.com]
 dmarc=[1,1,header.from=elektrobit.com])
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=elektrobit.com;
 s=selector1;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck;
 bh=oIAPv9xmUqmZOQALhD1wFmf2mfwJESnPZqbe9aDV5X0=;
 b=HjFgnhY66L7JEKAF3G4s0gM3/plr/sMnnenZicIqq0D3HkyJkuB8osQsMhMUDoWbUX85Subp/a0PA8ZO1znHBe3Lzy/cgZ4q0gBXroWJQjGDJDlyxeEtkEZzVF/vHEMF5TgT0A1VnRSVhjoSwVjXWu8egEOrHG99a5HFVEXkMAU=
X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 40.93.13.101)
 smtp.mailfrom=elektrobit.com; dkim=pass (signature was verified)
 header.d=elektrobit.com;dmarc=pass action=none header.from=elektrobit.com;
Received-SPF: Pass (protection.outlook.com: domain of elektrobit.com
 designates 40.93.13.101 as permitted sender) receiver=protection.outlook.com;
 client-ip=40.93.13.101; helo=DM5PR08CU004.outbound.protection.outlook.com;
 pr=C
ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none;
 b=Ow4F/7lO5VaHfhzHxTG8lJr1L7xJ9w6Fcmr2vUDfkoI8EcjOrjoWeIKyntut9UXNZMcV0aGymggLVXe29pFUNDbezJ1Jl1l4UmmOCUakaYgyYanZ0SYhj0LHn7IF7TnEyYnm/i9qsArFwPWKg2+lcZkrcIXaa81pHgU/k4a4wemx1y+inj3lPqgdog6vitll6kutuXNT7nFcIR290qIrSRiJKQiBvN+xE8ULMLOF0qAxYqIlI1qVj821O0gbqOtjl6r9vt6EFbzhQx22tL/QPgeI5iyQFKZHuvGAlJZ4S56nws0ql/Ucdc5OmxljpQJ1d5fmeuNdqfOVb5dAIQfUtw==
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com;
 s=arcselector10001;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1;
 bh=oIAPv9xmUqmZOQALhD1wFmf2mfwJESnPZqbe9aDV5X0=;
 b=D7dWM80FtLHyjW71hMh5L2JZ1SJPgopyIs0SwbKYAyDCt4lHE4O+66DKdhDEu2KvUhtv30gWBse5Jyhh4iPSeG3/t/DyW+61d2eu6SM1YWRJUBzW+a0KNw3TzGvRntm6uzatXtCqnyXEEqIhv5mxoH18cZJn6MWROSR2eqTuw/NfT9fXpyUWC0y8zp5c2vKlOY6+Hlu3slABwPAXF7H91OduD6cOGLL1v+SxDXRwaqr5rp+3MakBuYAkFi8fk3EQP2GkUTghR+1agAwVgfh9zI7CPYHR6NsOd91jRq/41KsU0ix1L6IHklYe+j1mkOwEv2FJ0QRvZNiiatVLOAGEMQ==
ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass (sender ip is
 213.95.148.172) smtp.rcpttodomain=lists.xenproject.org
 smtp.mailfrom=elektrobit.com; dmarc=pass (p=quarantine sp=none pct=100)
 action=none header.from=elektrobit.com; dkim=none (message not signed);
 arc=none (0)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=elektrobit.com;
 s=selector1;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck;
 bh=oIAPv9xmUqmZOQALhD1wFmf2mfwJESnPZqbe9aDV5X0=;
 b=HjFgnhY66L7JEKAF3G4s0gM3/plr/sMnnenZicIqq0D3HkyJkuB8osQsMhMUDoWbUX85Subp/a0PA8ZO1znHBe3Lzy/cgZ4q0gBXroWJQjGDJDlyxeEtkEZzVF/vHEMF5TgT0A1VnRSVhjoSwVjXWu8egEOrHG99a5HFVEXkMAU=
X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 213.95.148.172)
 smtp.mailfrom=elektrobit.com; dkim=none (message not signed)
 header.d=none;dmarc=pass action=none header.from=elektrobit.com;
Received-SPF: Pass (protection.outlook.com: domain of elektrobit.com
 designates 213.95.148.172 as permitted sender)
 receiver=protection.outlook.com; client-ip=213.95.148.172;
 helo=denue6es012.ebgroup.elektrobit.com; pr=C
From: Rose Spangler <Rose.Spangler@elektrobit.com>
To: <xen-devel@lists.xenproject.org>
CC: Sergej Proskurin <proskurin@sec.in.tum.de>, 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: [RFC PATCH v6 21/43] arm/p2m: Change func prototype and impl of p2m_{alloc,free}_vmid
Date: Mon, 20 Apr 2026 17:26:26 -0400
Message-ID: <20260420212648.208640-14-Rose.Spangler@elektrobit.com>
X-Mailer: git-send-email 2.34.1
In-Reply-To: <20260420212648.208640-1-Rose.Spangler@elektrobit.com>
References: <20260420212648.208640-1-Rose.Spangler@elektrobit.com>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit
Content-Type: text/plain
X-Originating-IP: [10.10.178.50]
X-ClientProxiedBy: denue6es013.ebgroup.elektrobit.com (10.243.160.141) To
 denue6es012.ebgroup.elektrobit.com (10.243.160.140)
X-EOPAttributedMessage: 1
X-MS-Exchange-SkipListedInternetSender:
 ip=[213.95.148.172];domain=denue6es012.ebgroup.elektrobit.com
X-MS-TrafficTypeDiagnostic:
	CH2PEPF0000009E:EE_|DM8PR08MB7304:EE_|BL6PEPF0001AB72:EE_|DSSPR08MB972959:EE_
X-MS-Office365-Filtering-Correlation-Id: a5fa44b4-3540-4ec7-0a9c-08de9f23a79d
X-SM-outgoing: yes
X-MS-Exchange-SenderADCheck: 1
X-MS-Exchange-AntiSpam-Relay: 0
X-Microsoft-Antispam-Untrusted:
 BCL:0;ARA:13230040|36860700016|1800799024|376014|82310400026|56012099003|18002099003|22082099003;
X-Microsoft-Antispam-Message-Info-Original:
 =?us-ascii?Q?+xfzs0iZwfgSeAimDyD15jXph0u/9/yvKo+VATXHO0YTWivt+GQLWuyExIiM?=
 =?us-ascii?Q?9HUWnngTY4arayuiKQUPHzeSkVUoQT2TC5QQVNMx0UFiBzS2rUoniZjwbDGP?=
 =?us-ascii?Q?9xMpdK8vxpHx5iViLKUkYw1jnZ/QUd31AujW06TUfYKdC1Pb19stvepyBbKx?=
 =?us-ascii?Q?WJt4BWM3C5UcZWCoPSHRua8e9QTaxjVXvj/2Iyt5sON15XWwoaJ57RmIbaE3?=
 =?us-ascii?Q?U8RmcllD1SvkAFbbxqnljrLHsSoSmO1wTBx1P8yu0mU5kSqP+q5vS02mYtWk?=
 =?us-ascii?Q?GKFA2SuTdGMu1rtBTlv09Lh+Fg2uOPThTHjZKjKidAyxbC5wGpyaOFV9olbc?=
 =?us-ascii?Q?sXdnzJK9IRW5QL/crXBO29OXruEDqy+TteQvt3/8ddvRMQsNdWEPCkQaaffh?=
 =?us-ascii?Q?nA/P+1Ox/lgNmFjvLes0Adi95I7iEbFk20SamT8lnx7EgKjwdU8XnH7TxyK4?=
 =?us-ascii?Q?QOqV0IFbsnFWcnpyC+c1lxwKrykbeNVbD9I93N6n4BJQC7JKTjWAb0glZnZH?=
 =?us-ascii?Q?w8wdDg89TZbW1yGC3PK1LoQHPdw+vdBWueCZaoCTBClrdlT/AZRxZF5TzVR9?=
 =?us-ascii?Q?Qx2VNCTPzygtU9E99+EUeqJuNBPZPqdEg7nnPhhHiuBQtA4xRaurpEZ6N0fs?=
 =?us-ascii?Q?ktCI70gWZMnBZQuEGLrhaZWh46hOfefH4aS/Z7qIddQTJapAfcqJLvIP9Ffl?=
 =?us-ascii?Q?g+HemwnOl6rIcdNztShtRZQ9VSQ1uLfLpK5zXM4bYTj1Km2BbMp1M+jU552s?=
 =?us-ascii?Q?vAnVE9b3kk+qnv+cWzB7CYeBFuW9nxgd/yzJsKE8qtnJtGvSEDbLdX2yYdGN?=
 =?us-ascii?Q?8Q5eFeB5utekN4uFK3Y5a/AM2kDieVTPatI4d2medZArlo0dckOj32qg061Q?=
 =?us-ascii?Q?2hEQatAutCk13vQ9H+ZTgllSO35B/vE88gWbj4ajypyn/VwDM02uijLiZxHv?=
 =?us-ascii?Q?JlOWYplxag1x9Dy30lOgNAlMevfAjyyjY/QW0jJ3R8ZVlPdumwBh+G8r/UGb?=
 =?us-ascii?Q?X6EQvO5xN50gaQW+NWn7jngvR6krnNsiPQdSuonVhZKs0Cr6p7Wvg9FnYksu?=
 =?us-ascii?Q?MaaUl3TGqQaLuT8T8zVR9QD3O6D3UrIPyzD2l23UDCs1o9uF6RDETdxpJvng?=
 =?us-ascii?Q?STU2v0KV6uY0vElnsGxYzLcT2X+fND4K9leY7AdLs8bI5X++XEc1gpceZ313?=
 =?us-ascii?Q?J3S5vGd734CnpRhkfvlU1ucj8zg8cRH+nNUMsXiHhdN0v+VzVk8Eg/VHPI8?=
 =?us-ascii?Q?=3D?=
X-Forefront-Antispam-Report-Untrusted:
 CIP:213.95.148.172;CTRY:DE;LANG:en;SCL:1;SRV:;IPV:CAL;SFV:NSPM;H:denue6es012.ebgroup.elektrobit.com;PTR:eth1-fw1-nbg6.eb.noris.de;CAT:NONE;SFS:(13230040)(36860700016)(1800799024)(376014)(82310400026)(56012099003)(18002099003)(22082099003);DIR:OUT;SFP:1102;
X-Exchange-RoutingPolicyChecked:
 D8oM9OBwVWfSySobPO/M3GSJ3l9MvewvghPRw9CEgkReOr0+aotV83tHMKLS2uJIkTbBhd3NvmOdgjVMEdX8RImWaVGjsup6bdxRDXmKIOyo15gBrFNJm0F/4kkuwyRaz/MOFDLmrYLQ1liaSamKYuSgmGMexWxBUPbKq+NTuThgkR00jI2OmL0chZMJgzmdMBnowPxOISX9pcF3vAhSU6nL/0l0ccFZu9Po9WNN9nYxcgbth1JIzi+a3b5mnA02ByvPnRprZ5peCe8Z/OufVAaIaBmhn+f2dHguncCDSdOST0YqcSUn3TPK/7xO7DTSOUn/kj+12vYtAB351xVOsw==
X-MS-Exchange-Transport-CrossTenantHeadersStamped: DM8PR08MB7304
X-MS-Exchange-SkipListedInternetSender:
 ip=[40.93.13.101];domain=DM5PR08CU004.outbound.protection.outlook.com
X-MS-Exchange-ExternalOriginalInternetSender:
 ip=[40.93.13.101];domain=DM5PR08CU004.outbound.protection.outlook.com
X-MS-Exchange-Transport-CrossTenantHeadersStripped:
 BL6PEPF0001AB72.namprd02.prod.outlook.com
X-MS-PublicTrafficType: Email
X-MS-Office365-Filtering-Correlation-Id-Prvs:
	be510578-fc88-4eff-fb59-08de9f23a23d
X-Microsoft-Antispam:
	BCL:0;ARA:13230040|36860700016|1800799024|376014|14060799003|35042699022|82310400026|156008|56012099003|22082099003|18002099003;
X-Microsoft-Antispam-Message-Info:
	=?us-ascii?Q?wCjs7DRFQ9UUZ3UsFHmeDAvu0m4QrvlR0taUaLeFg7Nin2h5vo1v+m1kw3ka?=
 =?us-ascii?Q?8vQMzkJYFewyLkFp/kHEkv9Euyrgig5JXl2mPvXiAWWoFXqLpKodd6znGXPC?=
 =?us-ascii?Q?E3X3GfZR+Dr3TEpqtuGl4CcUFv4vgMlqmy8cU8YSirC0zlKTumGB+uaINQCN?=
 =?us-ascii?Q?vy0tVw5wCdN7O/YsimPmi/qF97m/yCcBR3ZtHW7FXCiZfn1wsrlyDKnZBOl+?=
 =?us-ascii?Q?DVlnu9j3pw7F5mwL/k+TOgLl6IVP4SlXUq9+xJca2bYOuOYCS6kEGEWiNbtG?=
 =?us-ascii?Q?B/p0AUkO1fh2pZXiOterEw3AqSiTIcyrodGaYsNmUjYyrM6NKRPcW1iS/gg5?=
 =?us-ascii?Q?3Jht4SQr784AVM8gtfWdGOmQA18jZ5HZmHSAeLSpc9WUnTldCcGithIB5Lr8?=
 =?us-ascii?Q?vMzM+de/tTti8+mdQxisB+xDzi/yXqQntaAxyl9FRY5dPIiY4u4Hq44Qlrdk?=
 =?us-ascii?Q?8G+tfNJTxYrX5TXgM5lOqh8ds66qUKL4c0xAEDfQ+6nnOA0cBPhw8HUmBr74?=
 =?us-ascii?Q?Q+BAjQrSFCfCX9JYeWpFr7hImkIHEIE5FfkCv5MccZSqAepqfH6KrIoMVmBa?=
 =?us-ascii?Q?pUZJxo/3rY+eYIqyugvYmJgtp7m4jReJV2fh8bQqPHee1TKuF+rm1epho8IJ?=
 =?us-ascii?Q?79ua9GYMFnvZo76eRlHkLCVD5dQ7zgxBJhFGkV0SJV1/0gSVOy/Xfa0A++qc?=
 =?us-ascii?Q?0QNgzJow5vzwE3+tcVApejwBxcPwV8p9vttoXP7dV8x15pVT+NGjhBhItxU+?=
 =?us-ascii?Q?G5zGRw0qo6NnkpHApx8J9g3jo++I0KmNgZmNPQxymCCyHbfEA7KUW3YQ4Sj9?=
 =?us-ascii?Q?RXpkJVNHMzuKIozoQJfh7PwzqwdwgGKMHOPdFTngsr9cDhvqeqqeKlX6GMC+?=
 =?us-ascii?Q?DXc1XbrWk/SLeo0sYD2z1hqmBUnCKvE1MQKl6tfjt+7qe//G7OUJ/USN1SIb?=
 =?us-ascii?Q?1jKC9NS6ug4BvMsGZweWJ+yVWbezcqH+u8DAg8/W5MhzS3B1+0vPBYnu8Yc2?=
 =?us-ascii?Q?VFsglhZ1nHQehJ3wzfFgERAh6/QAfilKlH/+zH4atdLBWRO7PPOzO3gGi0JD?=
 =?us-ascii?Q?bUpDW8o5KTfIzhfNU0EcazjQ++X2YVNcXZVzf2BgFJA7oGEiwMjuf88rfi9N?=
 =?us-ascii?Q?EflNPpzKBh1VvlRiRx6H8s96T9DwBNSaTVCIYS19HvTLZLpFZKYmqtFHC5gm?=
 =?us-ascii?Q?BQjq2cAFomD9ftIgp3X0bo4YxJUNZRiulmOeIUKzUTXT96WHbZ/yICsM244?=
 =?us-ascii?Q?=3D?=
X-Forefront-Antispam-Report:
	CIP:4.79.107.243;CTRY:US;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:DM5PR08CU004.outbound.protection.outlook.com;PTR:mail-dm5pr08cu00405.outbound.protection.outlook.com;CAT:NONE;SFS:(13230040)(36860700016)(1800799024)(376014)(14060799003)(35042699022)(82310400026)(156008)(56012099003)(22082099003)(18002099003);DIR:OUT;SFP:1102;
X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1
X-MS-Exchange-AntiSpam-MessageData-0:
	CYGLJEApKv3lXb6SevOviDlZ6CP8Vv2YqzswogWKNX2ODUfMpdtzhRJISh4X/8yj0mLuMOWIoeZY9dDYTFHBoMsF4evCG1USze/WwH4tVnXz+1jH9WIeMyyoxAAHd35gXBDo26FvS3IbottWai8WCRmhlH4oA+T0nrHSV+1Gisim5DDFFPKbfsmAp1pN3B7DQz6+XChzg6wjj/g5FCB5cFaDPI0CZMkeTilNLjk4q5UL1ROmntwA58Jif/tPkVIhQyhEgRxmCnVKk6Jja92QT4D//+uUW/ealNxayS7si6kRfk8qsp+JmdJVFkp7k671rSNfl672WGOvXRsySv+G5NKhmNNkyrR3pYmVk9zivHe/0czEtSOhAXGFSMLhos2KFoAO1cz50uo6g5zvlzJtwmxQBdDhRTToEAzOcHK9tNIkRIsMQKgQjCEOWgLmg+Pr
X-OriginatorOrg: elektrobit.com
X-MS-Exchange-CrossTenant-OriginalArrivalTime: 20 Apr 2026 21:27:41.4112
 (UTC)
X-MS-Exchange-CrossTenant-Network-Message-Id: a5fa44b4-3540-4ec7-0a9c-08de9f23a79d
X-MS-Exchange-CrossTenant-Id: e764c36b-012e-4216-910d-8fd16283182d
X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=e764c36b-012e-4216-910d-8fd16283182d;Ip=[4.79.107.243];Helo=[usbth1es003.ebgroup.elektrobit.com]
X-MS-Exchange-CrossTenant-AuthAs: Internal
X-MS-Exchange-CrossTenant-AuthSource: TreatMessagesAsInternal-BL6PEPF0001AB72.namprd02.prod.outlook.com
X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem
X-MS-Exchange-Transport-CrossTenantHeadersStamped: DSSPR08MB972959
X-purgate-ID: tlsNG-33051d/1776720468-28F72938-CC9AE319/0/0
X-purgate-type: clean
X-purgate-size: 3941

From: Sergej Proskurin <proskurin@sec.in.tum.de>

This commit changes the prototype and implementation of the functions
"p2m_alloc_vmid" and "p2m_free_vmid". The function "p2m_alloc_vmid" does
not expect the struct domain as argument anymore and returns an
allocated vmid. The function "p2m_free_vmid" takes only the vmid that is
to be freed as argument.

This is commit 10/12 of the altp2m_init/altp2m_teardown routines phase.

Signed-off-by: Sergej Proskurin <proskurin@sec.in.tum.de>
---
v3: Changed function prototypes and implementation of the functions
    "p2m_alloc_vmid" and "p2m_free_vmid".

    Changes in "p2m_alloc_vmid":
    This function does not expect any arguments. Also, in this commit,
    the function "p2m_alloc_vmid" returns either the successfully
    allocated vmid or the value INVALID_VMID. Thus, it is now the
    responsibility of the caller to set the returned vmid in the
    associated fields.

    Changes in "p2m_free_vmid":
    This function expects now only the vmid of type uint8_t.
---
 xen/arch/arm/include/asm/p2m.h |  4 ++--
 xen/arch/arm/mmu/p2m.c         |  8 ++++----
 xen/arch/arm/p2m.c             | 23 ++++++++---------------
 3 files changed, 14 insertions(+), 21 deletions(-)

diff --git a/xen/arch/arm/include/asm/p2m.h b/xen/arch/arm/include/asm/p2m.h
index 5c6dfe4a9789..62261d41e780 100644
--- a/xen/arch/arm/include/asm/p2m.h
+++ b/xen/arch/arm/include/asm/p2m.h
@@ -195,8 +195,8 @@ static inline bool arch_acquire_resource_check(struct domain *d)
 void p2m_restrict_ipa_bits(unsigned int ipa_bits);
 
 void p2m_vmid_allocator_init(void);
-int p2m_alloc_vmid(struct domain *d);
-void p2m_free_vmid(struct domain *d);
+uint8_t p2m_alloc_vmid(void);
+void p2m_free_vmid(uint8_t vmid);
 
 /* Second stage paging setup, to be called on all CPUs */
 void setup_virt_paging(void);
diff --git a/xen/arch/arm/mmu/p2m.c b/xen/arch/arm/mmu/p2m.c
index f546f63f2489..0d37760ef5d5 100644
--- a/xen/arch/arm/mmu/p2m.c
+++ b/xen/arch/arm/mmu/p2m.c
@@ -1519,7 +1519,7 @@ void p2m_free_one(struct p2m_domain *p2m)
 
     p2m->root = NULL;
 
-    p2m_free_vmid(p2m->domain);
+    p2m_free_vmid(p2m->vmid);
 
     radix_tree_destroy(&p2m->mem_access_settings, NULL);
 
@@ -1570,9 +1570,9 @@ static int p2m_initialise(struct domain *d, struct p2m_domain *p2m)
      */
     p2m->domain = d;
 
-    rc = p2m_alloc_vmid(d);
-    if ( rc )
-        return rc;
+    p2m->vmid = p2m_alloc_vmid();
+    if ( p2m->vmid == INVALID_VMID )
+        return -EBUSY;
 
     rc = p2m_alloc_table(p2m);
     if ( rc )
diff --git a/xen/arch/arm/p2m.c b/xen/arch/arm/p2m.c
index 2c43b6033360..3342fafcc8a7 100644
--- a/xen/arch/arm/p2m.c
+++ b/xen/arch/arm/p2m.c
@@ -282,11 +282,9 @@ void p2m_vmid_allocator_init(void)
     set_bit(INVALID_VMID, vmid_mask);
 }
 
-int p2m_alloc_vmid(struct domain *d)
+uint8_t p2m_alloc_vmid(void)
 {
-    struct p2m_domain *p2m = p2m_get_hostp2m(d);
-
-    int rc, vmid;
+    uint8_t vmid;
 
     spin_lock(&vmid_alloc_lock);
 
@@ -296,28 +294,23 @@ int p2m_alloc_vmid(struct domain *d)
 
     if ( vmid == MAX_VMID )
     {
-        rc = -EBUSY;
-        printk(XENLOG_ERR "p2m.c: dom%d: VMID pool exhausted\n", d->domain_id);
+        vmid = INVALID_VMID;
+        printk(XENLOG_ERR "p2m.c: VMID pool exhausted\n");
         goto out;
     }
 
     set_bit(vmid, vmid_mask);
 
-    p2m->vmid = vmid;
-
-    rc = 0;
-
 out:
     spin_unlock(&vmid_alloc_lock);
-    return rc;
+    return vmid;
 }
 
-void p2m_free_vmid(struct domain *d)
+void p2m_free_vmid(uint8_t vmid)
 {
-    struct p2m_domain *p2m = p2m_get_hostp2m(d);
     spin_lock(&vmid_alloc_lock);
-    if ( p2m->vmid != INVALID_VMID )
-        clear_bit(p2m->vmid, vmid_mask);
+    if ( vmid != INVALID_VMID )
+        clear_bit(vmid, vmid_mask);
 
     spin_unlock(&vmid_alloc_lock);
 }
-- 
2.34.1



From xen-devel-bounces@lists.xenproject.org Mon Apr 20 21:27:54 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 20 Apr 2026 21:27:54 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1287534.1568007 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wEw9q-0004gG-6O; Mon, 20 Apr 2026 21:27:54 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1287534.1568007; Mon, 20 Apr 2026 21:27: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 1wEw9p-0004dP-Ez; Mon, 20 Apr 2026 21:27:53 +0000
Received: by outflank-mailman (input) for mailman id 1287534;
 Mon, 20 Apr 2026 21:27:52 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <Rose.Spangler@elektrobit.com>) id 1wEw9o-0004Oe-Af
 for xen-devel@lists.xenproject.org; Mon, 20 Apr 2026 21:27:52 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wEw9n-00CBiW-NE
 for xen-devel@lists.xenproject.org; Mon, 20 Apr 2026 23:27:51 +0200
Received: from [10.42.69.7] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <Rose.Spangler@elektrobit.com>)
 id 69e69a14-e002-0a2a0a5209dd-0a2a4507df78-34
 for <xen-devel@lists.xenproject.org>; Mon, 20 Apr 2026 23:27:51 +0200
Received: from [52.101.201.95]
 (helo=PH7PR06CU001.outbound.protection.outlook.com)
 by tlsNG-ef75cf.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.1)
 (envelope-from <Rose.Spangler@elektrobit.com>)
 id 69e69a55-229c-0a2a45070019-3465c95f2a44-3
 for <xen-devel@lists.xenproject.org>; Mon, 20 Apr 2026 23:27:51 +0200
Received: from MN0PR04CA0023.namprd04.prod.outlook.com (2603:10b6:208:52d::28)
 by SA3PR08MB8595.namprd08.prod.outlook.com (2603:10b6:806:2fc::13)
 with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9818.32; Mon, 20 Apr
 2026 21:27:46 +0000
Received: from BL02EPF0002992B.namprd02.prod.outlook.com
 (2603:10b6:208:52d:cafe::99) by MN0PR04CA0023.outlook.office365.com
 (2603:10b6:208:52d::28) with Microsoft SMTP Server (version=TLS1_3,
 cipher=TLS_AES_256_GCM_SHA384) id 15.20.9791.48 via Frontend Transport; Mon,
 20 Apr 2026 21:27:45 +0000
Received: from usbth1es003.ebgroup.elektrobit.com (4.79.107.243) by
 BL02EPF0002992B.mail.protection.outlook.com (10.167.249.56) with Microsoft
 SMTP Server (version=TLS1_3, cipher=TLS_AES_256_GCM_SHA384) id 15.20.9791.48
 via Frontend Transport; Mon, 20 Apr 2026 21:27:45 +0000
Received: from usbth1es003 (localhost [127.0.0.1])
 by usbth1es003.ebgroup.elektrobit.com (Postfix) with SMTP id 4fzz9D1Dt7z1wdS; 
 Mon, 20 Apr 2026 14:27:44 -0700 (PDT)
Received: from BL2PR08CU001.outbound.protection.outlook.com
 (mail-bl2pr08cu00102.outbound.protection.outlook.com [40.93.4.10])
 (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)
 key-exchange secp384r1 server-signature RSA-PSS (2048 bits) server-digest
 SHA256) (No client certificate requested)
 by usbth1es003.ebgroup.elektrobit.com (Postfix) with ESMTPS;
 Mon, 20 Apr 2026 14:27:43 -0700 (PDT)
Received: from CH0PR03CA0406.namprd03.prod.outlook.com (2603:10b6:610:11b::14)
 by SJ0PR08MB6621.namprd08.prod.outlook.com (2603:10b6:a03:2ac::22)
 with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9818.33; Mon, 20 Apr
 2026 21:27:37 +0000
Received: from CH2PEPF0000009E.namprd02.prod.outlook.com
 (2603:10b6:610:11b:cafe::a4) by CH0PR03CA0406.outlook.office365.com
 (2603:10b6:610:11b::14) with Microsoft SMTP Server (version=TLS1_3,
 cipher=TLS_AES_256_GCM_SHA384) id 15.20.9791.48 via Frontend Transport; Mon,
 20 Apr 2026 21:27:36 +0000
Received: from denue6es012.ebgroup.elektrobit.com (213.95.148.172) by
 CH2PEPF0000009E.mail.protection.outlook.com (10.167.244.27) with Microsoft
 SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id
 15.20.9791.48 via Frontend Transport; Mon, 20 Apr 2026 21:27:36 +0000
Received: from ubuntu.localdomain (10.10.178.50) by
 denue6es012.ebgroup.elektrobit.com (10.243.160.140) with Microsoft SMTP
 Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id
 15.2.2562.35; Mon, 20 Apr 2026 23:27:30 +0200
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@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=elektrobit.com header.i="@elektrobit.com" header.h="From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck"; dkim=pass header.s=selector1 header.d=elektrobit.com header.i="@elektrobit.com" header.h="From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck"
ARC-Seal: i=2; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=pass;
 b=JtYkIA0sS9/ZBF0wvRhsJ44ZKiwgxFOITYNWUbJs2kDtEQLALpcNR5mHAGudtZ2VsQy/+0hwkCSmGFum9C2mbANEQ3sQ7RvFkSsPXDRFRx7kewP6muMefFWDd9N0X0v294lFo0YwdUSBKLfQwK4+isoXAyOEdWg1fSyOBxKt5FOyMyvEUr246ljL9ypPO2OqkBAqnwAhQ9o8jS85nAKGdkjOIUDNnAmh8bSQp+9+D/aX/aje9m9sbrSizhN/1ANens3lvh8c6XEnfA35OUMhEkW65CZl3p45yR+freC3RsuzGDGlaWDFmzxxkudLyR5xz+pX6LoDZu9PnT8SJDpfLQ==
ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com;
 s=arcselector10001;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1;
 bh=JXO5psDHXrr2lWhpVfZGIS9NlsT4Gk+n8+O5j94oxLM=;
 b=WZl5WB8Rb0zzCXssJrSkVVsblLc37+8SRnNyIv70ZSLK9xf78vSpElf4ftCEpGKp4DYKBXUmYSmLmDD8nzQQ8LHL4DDLeZm6LtWZQrA/8kmfxzUi3zDJGIYnP46vWYVDDLnzIN/h9NZYvNOLi5nSqzFzqiKbmEJZe7Ei5CAKNuDavmysVcSd/r/JccTQr3PfbzirJBX/wfYO27HM6bV8hVxofJ5GcKTc0jHaY8PLmHENTY/C2fyClWypIFY9YkUR6Evotgxbo5MqmkoNw6iiYurXnzKz7fkkOq0TFHCUmpc0HUR40eOXQEqtkw/OvLAPpbqh9f4BmZP5gDnHcC/Nvg==
ARC-Authentication-Results: i=2; mx.microsoft.com 1; spf=pass (sender ip is
 40.93.4.10) smtp.rcpttodomain=amd.com smtp.mailfrom=elektrobit.com;
 dmarc=pass (p=quarantine sp=none pct=100) action=none
 header.from=elektrobit.com; dkim=pass (signature was verified)
 header.d=elektrobit.com; arc=pass (0 oda=1 ltdi=1
 spf=[1,1,smtp.mailfrom=elektrobit.com]
 dmarc=[1,1,header.from=elektrobit.com])
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=elektrobit.com;
 s=selector1;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck;
 bh=JXO5psDHXrr2lWhpVfZGIS9NlsT4Gk+n8+O5j94oxLM=;
 b=KCmfd0d6gO3Y1rK4XdKRKB6ai9hbryj0/TJ4YNpKVXMDp/cgHOMF9uxlbSHn6iClA11sWNkK08TEEnl+0Goy6LISiYM/LjqAhaHx6RpYCrzIAGXWT5jY02gkTbEvVqmfdXLLSQUSwD7eDpW1a9Ur7g6yJAv3ODzs3h6k12XJHGM=
X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 40.93.4.10)
 smtp.mailfrom=elektrobit.com; dkim=pass (signature was verified)
 header.d=elektrobit.com;dmarc=pass action=none header.from=elektrobit.com;
Received-SPF: Pass (protection.outlook.com: domain of elektrobit.com
 designates 40.93.4.10 as permitted sender) receiver=protection.outlook.com;
 client-ip=40.93.4.10; helo=BL2PR08CU001.outbound.protection.outlook.com; pr=C
ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none;
 b=WnUrJyATV4jcskrT7rsAH90hLoE69O0lEd/g0SCKyrsVRr3wJcNpBIdinfSC2OhJNoH0uDe8U+pKvNWOTwNChAA2S4JtDKvnVPUzx6Ueyn8YG4iRq2qzSV4RQ2ZWoU3l0hHVblywMwfE30MBJT1+TBIQ+KgNGHqxc/HM3xTv3kMFlhHIQE3Qw0WDsQhbpKrUcioJdFENQsEL/wvJFGY/K3CRF7Sf19vT2VS8iaY6uvUdrwyApv/Gj3oSrmhTpBTTke12L8Bvnv66P97zvrR+VFCnlKBUMW7mfJdXiQglCd69hWLjfUj7vyPQf+0NiIthm5pPtdGgTet93QhJPWSX+w==
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com;
 s=arcselector10001;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1;
 bh=JXO5psDHXrr2lWhpVfZGIS9NlsT4Gk+n8+O5j94oxLM=;
 b=eCCoDppICBUrEPD2xAFyuz/hm67pKSWqJC8JGdHASPIoTe/g+MWq9mGubEaNTmwOUkxZ1fQgSArdWdCUyFVvBuRSxZngUm5jhx1wK83FTeOfmwG/zW4+5Xb3CQnTLi8OiDrl3H5tXo43FaCOLwqrQ+udvq0eupTIgB64vhVbKpLD16qvPpVDOPha0A61hP69ETWwz2Rn/+Pk/5xX1ODx4fzPSmMUo8OoDnmanvxCfBwfMU6979G/MVLvqXEhmgzKSJyHZVEaf4wTbjrydcqNi+5T4zJxsyA0M/kxrYE8/YtJJaArLJ8PPECzzzfqn3t9p31wgNqzrRWb12CBuSEjRw==
ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass (sender ip is
 213.95.148.172) smtp.rcpttodomain=lists.xenproject.org
 smtp.mailfrom=elektrobit.com; dmarc=pass (p=quarantine sp=none pct=100)
 action=none header.from=elektrobit.com; dkim=none (message not signed);
 arc=none (0)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=elektrobit.com;
 s=selector1;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck;
 bh=JXO5psDHXrr2lWhpVfZGIS9NlsT4Gk+n8+O5j94oxLM=;
 b=KCmfd0d6gO3Y1rK4XdKRKB6ai9hbryj0/TJ4YNpKVXMDp/cgHOMF9uxlbSHn6iClA11sWNkK08TEEnl+0Goy6LISiYM/LjqAhaHx6RpYCrzIAGXWT5jY02gkTbEvVqmfdXLLSQUSwD7eDpW1a9Ur7g6yJAv3ODzs3h6k12XJHGM=
X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 213.95.148.172)
 smtp.mailfrom=elektrobit.com; dkim=none (message not signed)
 header.d=none;dmarc=pass action=none header.from=elektrobit.com;
Received-SPF: Pass (protection.outlook.com: domain of elektrobit.com
 designates 213.95.148.172 as permitted sender)
 receiver=protection.outlook.com; client-ip=213.95.148.172;
 helo=denue6es012.ebgroup.elektrobit.com; pr=C
From: Rose Spangler <Rose.Spangler@elektrobit.com>
To: <xen-devel@lists.xenproject.org>
CC: Sergej Proskurin <proskurin@sec.in.tum.de>, 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: [RFC PATCH v6 22/43] arm/p2m: Introduce p2m_is_{hostp2m,altp2m}
Date: Mon, 20 Apr 2026 17:26:27 -0400
Message-ID: <20260420212648.208640-15-Rose.Spangler@elektrobit.com>
X-Mailer: git-send-email 2.34.1
In-Reply-To: <20260420212648.208640-1-Rose.Spangler@elektrobit.com>
References: <20260420212648.208640-1-Rose.Spangler@elektrobit.com>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit
Content-Type: text/plain
X-Originating-IP: [10.10.178.50]
X-ClientProxiedBy: denue6es013.ebgroup.elektrobit.com (10.243.160.141) To
 denue6es012.ebgroup.elektrobit.com (10.243.160.140)
X-EOPAttributedMessage: 1
X-MS-Exchange-SkipListedInternetSender:
 ip=[213.95.148.172];domain=denue6es012.ebgroup.elektrobit.com
X-MS-TrafficTypeDiagnostic:
	CH2PEPF0000009E:EE_|SJ0PR08MB6621:EE_|BL02EPF0002992B:EE_|SA3PR08MB8595:EE_
X-MS-Office365-Filtering-Correlation-Id: b54807c0-55ea-468b-4acd-08de9f23a9d8
X-SM-outgoing: yes
X-MS-Exchange-SenderADCheck: 1
X-MS-Exchange-AntiSpam-Relay: 0
X-Microsoft-Antispam-Untrusted:
 BCL:0;ARA:13230040|704161811799003|36860700016|1800799024|376014|82310400026|18002099003|22082099003|56012099003;
X-Microsoft-Antispam-Message-Info-Original:
 =?us-ascii?Q?Kq2IAjKvxqDj1XMw4+/FR+AXZ9WXP+L+LW0wYdQ7sLiyfjuQ+hjxCu7dSEJg?=
 =?us-ascii?Q?di4tj+BWibDXcuuy7G9r3Hm9q3jFE6fB1EHRzlCbSsw7n7uhvuWduoypWwlF?=
 =?us-ascii?Q?U4O+VrTX8KQrdnLIuGd1jnV8sf0XlyFzp61bLYYsKqtH4Ubn1BQkPHem65/G?=
 =?us-ascii?Q?6+ISlbGlyj8oS1jT9xRPgt3Evw3MzLThMH42UIgMdj+oWgGdXyM7Ki8NOH3O?=
 =?us-ascii?Q?7mU9qA8pp0K5tdCV8XmG9MAXwHXRFNHE/HuER3w4KsS17gsN/uikQ9Uan2qu?=
 =?us-ascii?Q?wqvxH8VUcyE3y6fe21Nx6PUQO5UlPqi6ByYbbAVHNNJZQPjTLor/jX0tp+uN?=
 =?us-ascii?Q?7ZIwXJT2SHZacXJ3VQQfJOCJh3VhHBPyleaLDjI+/K1HHISNQ9uj46ymQjar?=
 =?us-ascii?Q?HnMgl9SDDuQzgErvabHaJI2d01XL6s5O4KNQhydl8AxpogrL7oih35R+CEBV?=
 =?us-ascii?Q?a3Ur3GhOAf0HeSUZCmxj02g6D49fhXY/LZZIHwn3UWnmDubKb3OjOlO3GpxN?=
 =?us-ascii?Q?EPYtcxMptC8C9K+z28A+NGd1op/OstM1HZTd1z5e9l6YiBHVZImTlwjnt1iF?=
 =?us-ascii?Q?b1bF/oXvgqPwvWYncbhnPyJ0KcBbnrSH8unkgE2aYLky8zb/vdCYEdRJU6aR?=
 =?us-ascii?Q?M51DVl/eviLpoVw7iMJJpoaPbS2DscNk19a1X66r1LcQnbFuu6ydgNUZAg3F?=
 =?us-ascii?Q?Tz6lFbeeMiPurzNep4+CTbi/KuBviZFUZgSwDT2XMPd/F0yFlgPkaX+4OcwQ?=
 =?us-ascii?Q?Z/S2WChrqfg14ehdfDZ97g9OBB8GHPUSXUdpIfFZiUjZN5mfcT4teGWt9A+F?=
 =?us-ascii?Q?tsHVGBggwaHjv+zFBN/pRmLpyntMk7Sp1umIbg6f4ZbaxNGO0atwPVBfBRFa?=
 =?us-ascii?Q?vBKl5ZhwE9eTOWGvNvfDHmtbQKw/StIx/0H1GJa+SMyR98zecRO1mS9EBLYg?=
 =?us-ascii?Q?xs1NJm92a7y7Tvq9GZ0327H0xzwiAxEV7g3dK9qGGJ8CUQiz6f3kTnhMmeI4?=
 =?us-ascii?Q?QBDerwfY1d+wbTfyJMqSKtPP68jQ9gZ3Vn9LlCkpWUU9GVLYPIwmuZUnHZ5n?=
 =?us-ascii?Q?zgyEpaq9j5hkOvXmkCoWTI/cJNUbl+/YZWCUG0rmpMPe4b7C9jUCGHmoDog1?=
 =?us-ascii?Q?/fbY0KR6dkX/MGAPSZ3eTdDNrBhtxQG0ZH5TZb3MSwtMLJBgOv+nidWGD5yB?=
 =?us-ascii?Q?N0+HUqjy1KFiyUqz?=
X-Forefront-Antispam-Report-Untrusted:
 CIP:213.95.148.172;CTRY:DE;LANG:en;SCL:1;SRV:;IPV:CAL;SFV:NSPM;H:denue6es012.ebgroup.elektrobit.com;PTR:eth1-fw1-nbg6.eb.noris.de;CAT:NONE;SFS:(13230040)(704161811799003)(36860700016)(1800799024)(376014)(82310400026)(18002099003)(22082099003)(56012099003);DIR:OUT;SFP:1102;
X-Exchange-RoutingPolicyChecked:
 TuRdeA+fSh4VWQFe6WW7Q0eykYbbNYcsBQv5uAzbwqs8y7tEY+opKfMYPW/JJdk/p1efQJitMgv8tMqt9hlFWSyladJsuzxzv7VUajOz2+VaGmYAyXkC1FMN+swjFL5Xfoe6rvE0D7a5ZiyuQaMuvd9zyx3pHFsrxBr4VOR58aXwkZleJGuFk5pmNL7nSxJWXGMWwsijhGXsGvLe/HxiVnpgoieChYyLg0s4N/Gbp+ybHyxG/lmx0s8kvkPQ/5QQGcztQwMDnDUPERUgnyNJbb/2le61zCVE47j8nWZrOWKCBVVkmvZ36z+g788vhQL/jMT88QA2znSSz+60uRd1Aw==
X-MS-Exchange-Transport-CrossTenantHeadersStamped: SJ0PR08MB6621
X-MS-Exchange-SkipListedInternetSender:
 ip=[40.93.4.10];domain=BL2PR08CU001.outbound.protection.outlook.com
X-MS-Exchange-ExternalOriginalInternetSender:
 ip=[40.93.4.10];domain=BL2PR08CU001.outbound.protection.outlook.com
X-MS-Exchange-Transport-CrossTenantHeadersStripped:
 BL02EPF0002992B.namprd02.prod.outlook.com
X-MS-PublicTrafficType: Email
X-MS-Office365-Filtering-Correlation-Id-Prvs:
	ce45e59b-c58d-44b2-2685-08de9f23a4a8
X-Microsoft-Antispam:
	BCL:0;ARA:13230040|704161811799003|82310400026|14060799003|35042699022|156008|36860700016|376014|1800799024|56012099003|18002099003|22082099003;
X-Microsoft-Antispam-Message-Info:
	=?us-ascii?Q?bK0I43aW/Q8q8NcS9Z5jtsmSvORLQTCsWDg31rihBE6/DqNpbgXfAyT9/es+?=
 =?us-ascii?Q?E6x0nPcKQXMbhJs5d3F0WyjvZPn5j1dp7/BGcyh5XsoViI4KIpGh5dCIqWPI?=
 =?us-ascii?Q?E/2wwRv3so/rTLWAbGTa45KWjQv+LbbzuiQiuIQW9vG5sPPBlr2gcaXfMi9m?=
 =?us-ascii?Q?oXv3lDfdSCOlMqAVwsuw7lf7CGjgVGj5ogttpYBbgNaX+N4PWGv8pLIwGTu2?=
 =?us-ascii?Q?ergRpp+NZpPq04MFiGrFnqzBppl6lO3rKynXGlS0bF98uHMqT02p+67OJenr?=
 =?us-ascii?Q?xXUNYbLgtcquwagnk0m/rnO8blwQBzoyugoESRus6odvZbRfZ1nII8lXgGYM?=
 =?us-ascii?Q?sklF3GBIyfDLoRtr3Q4E8b6AfwGssC65jsiASyridm81L07saGvWH9NPMVmr?=
 =?us-ascii?Q?BjVDb+QnYsYmfdgQZvzquIyofwZvM84GRklLDPg5/WPRnNBjxAzE3sp68Zdc?=
 =?us-ascii?Q?Xvtpt1aAbxHUQBkxxKTNR6j/IumwqEl0wilmf1LNJEBY/6+lQWZY5FJgXNXA?=
 =?us-ascii?Q?+t7rcJKRDuLFi96duO4kBhwqCfd3MWrBrPitK6GmmnSdEf94V9w1ZF5jiokP?=
 =?us-ascii?Q?wiPrUZ1XlWqDw/u8EwBXFEn9c4ZhxTOUQF9n6nsbnc6wzRA/zazpkdA42Av1?=
 =?us-ascii?Q?gdBLmlZ1W/d7pQURml6NpqonStkrPSEoY7ZTbWK7EYhdcZDc8AgBuT6helPP?=
 =?us-ascii?Q?DS+utzyaY9aEx0auHj9m0ZyWg05HaZXkQziuKhbPS18Sq7hxXkqvoMYKWcC2?=
 =?us-ascii?Q?NeDgtRn3plmxGEkp69ny/hlqPeVRLx8ud761rOub/RlJqhWe4HPvGD9DSOyL?=
 =?us-ascii?Q?T1nd9dVoPU0y/1Mj6f6IjqoU02mQSAO4mGs4oUNqagPc3JXd+EEzht5kd0UL?=
 =?us-ascii?Q?s3DixJm3MGqO1zL8TagFfQ5PRlNBtb4gM0SfTUjyzFve4SgjcDEjGuvMeuTR?=
 =?us-ascii?Q?xEFs6AI1+YnZFq8lVhc+oEYMT/AUXELNXwZ0I3eaETaHMrhUWtJF4nvqYis8?=
 =?us-ascii?Q?nQpNhU/PHibfj0s0jH7nPAHmUskSGPxtIyXNOg289Y7CL04dgETs+LwZqS9p?=
 =?us-ascii?Q?Pr0LwBHbWMvBbiCIRzCFqoiF/TgzWGjPhpEynq5EiHepJU3tNdFF+NyiLdrZ?=
 =?us-ascii?Q?7V5i6KiLnEPgxsqTdj21z61WU5fp/Lw3yTobFSpBneJR1mJEDyxE0EX7nTn0?=
 =?us-ascii?Q?312Txho6ubjJ6Jcr?=
X-Forefront-Antispam-Report:
	CIP:4.79.107.243;CTRY:US;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:BL2PR08CU001.outbound.protection.outlook.com;PTR:mail-bl2pr08cu00102.outbound.protection.outlook.com;CAT:NONE;SFS:(13230040)(704161811799003)(82310400026)(14060799003)(35042699022)(156008)(36860700016)(376014)(1800799024)(56012099003)(18002099003)(22082099003);DIR:OUT;SFP:1102;
X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1
X-MS-Exchange-AntiSpam-MessageData-0:
	aZSD+No7Vpjq8eC+HXZ9nbtAMqsGxEaP8QH3QoKY/BCyvcequsT8YLiy2BhxIdOkB4J99oF8K/C+P9g9OaukSPAWoIIe3/wx+akvT9b2EzKY4+HdTtA9P61enKjYi3uDlA8n1Pt/DPzBQvWhboG7rYjngIDxd+QnyE4j900wxKT5N6ZLpsNWwh7ScuEF32bTvsWxD5SVv/M1EQ+sZFt5iUpqDZpJKli0O1BIfJ9wB+i0N2f+vJrehzJTkxjZ1Fv3q3nw/xtko0Sp/DnpiQ5wjZ1SwbuYKNhGa0cMmw2RsrYMMCL32nMvX6iYC7epHVdd6yqeoz2rZIJ0x5r8V4PMyqXtG8jP2RWyC7mpizogZfV1JMjJJbWPAynt+/VjulgrbKkbAn87n6nvzZ4KBjOc/WQuCb9YmMpViqaWv1Z9dyy7WePvZq/O/CyNGNEH6xI7
X-OriginatorOrg: elektrobit.com
X-MS-Exchange-CrossTenant-OriginalArrivalTime: 20 Apr 2026 21:27:45.1508
 (UTC)
X-MS-Exchange-CrossTenant-Network-Message-Id: b54807c0-55ea-468b-4acd-08de9f23a9d8
X-MS-Exchange-CrossTenant-Id: e764c36b-012e-4216-910d-8fd16283182d
X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=e764c36b-012e-4216-910d-8fd16283182d;Ip=[4.79.107.243];Helo=[usbth1es003.ebgroup.elektrobit.com]
X-MS-Exchange-CrossTenant-AuthAs: Internal
X-MS-Exchange-CrossTenant-AuthSource: TreatMessagesAsInternal-BL02EPF0002992B.namprd02.prod.outlook.com
X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem
X-MS-Exchange-Transport-CrossTenantHeadersStamped: SA3PR08MB8595
X-purgate-ID: tlsNG-ef75cf/1776720471-AC762C48-5825F5E7/0/0
X-purgate-type: clean
X-purgate-size: 1730

From: Sergej Proskurin <proskurin@sec.in.tum.de>

This commit adds a p2m class to the struct p2m_domain to distinguish
between the host's original p2m and alternate p2m's. The need for this
functionality will be shown in the following commits.

This is commit 11/12 of the altp2m_init/altp2m_teardown routines phase.

Signed-off-by: Sergej Proskurin <proskurin@sec.in.tum.de>
---
v4: Change return type of p2m_is_(hostp2m|altp2m) from bool_t to bool.
---
 xen/arch/arm/include/asm/p2m.h | 18 ++++++++++++++++++
 1 file changed, 18 insertions(+)

diff --git a/xen/arch/arm/include/asm/p2m.h b/xen/arch/arm/include/asm/p2m.h
index 62261d41e780..8ae0cd7ff589 100644
--- a/xen/arch/arm/include/asm/p2m.h
+++ b/xen/arch/arm/include/asm/p2m.h
@@ -32,6 +32,11 @@ struct domain;
 
 extern void memory_type_changed(struct domain *d);
 
+typedef enum {
+    p2m_host,
+    p2m_alternate,
+} p2m_class_t;
+
 /* Per-p2m-table state */
 struct p2m_domain {
     /*
@@ -111,6 +116,9 @@ struct p2m_domain {
 
     /* Keeping track on which CPU this p2m was used and for which vCPU */
     uint8_t last_vcpu_ran[NR_CPUS];
+
+    /* Choose between: host/alternate. */
+    p2m_class_t p2m_class;
 };
 
 /*
@@ -424,6 +432,16 @@ static inline int get_page_and_type(struct page_info *page,
 /* get host p2m table */
 #define p2m_get_hostp2m(d) ((d)->arch.p2m)
 
+static inline bool p2m_is_hostp2m(const struct p2m_domain *p2m)
+{
+    return p2m->p2m_class == p2m_host;
+}
+
+static inline bool p2m_is_altp2m(const struct p2m_domain *p2m)
+{
+    return p2m->p2m_class == p2m_alternate;
+}
+
 static inline bool p2m_vm_event_sanity_check(struct domain *d)
 {
     return true;
-- 
2.34.1



From xen-devel-bounces@lists.xenproject.org Mon Apr 20 21:27:56 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 20 Apr 2026 21:27:56 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1287539.1568016 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wEw9s-0005Cx-Mq; Mon, 20 Apr 2026 21:27:56 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1287539.1568016; Mon, 20 Apr 2026 21:27: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 1wEw9s-0005B2-4Z; Mon, 20 Apr 2026 21:27:56 +0000
Received: by outflank-mailman (input) for mailman id 1287539;
 Mon, 20 Apr 2026 21:27:54 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <Rose.Spangler@elektrobit.com>) id 1wEw9p-0004hB-Tn
 for xen-devel@lists.xenproject.org; Mon, 20 Apr 2026 21:27:54 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wEw9p-00CBiW-AK
 for xen-devel@lists.xenproject.org; Mon, 20 Apr 2026 23:27:53 +0200
Received: from [10.42.69.7] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <Rose.Spangler@elektrobit.com>)
 id 69e69a14-e002-0a2a0a5209dd-0a2a4507df78-38
 for <xen-devel@lists.xenproject.org>; Mon, 20 Apr 2026 23:27:53 +0200
Received: from [40.93.195.123]
 (helo=SN4PR2101CU001.outbound.protection.outlook.com)
 by tlsNG-ef75cf.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.1)
 (envelope-from <Rose.Spangler@elektrobit.com>)
 id 69e69a57-229c-0a2a45070019-285dc37b68cc-3
 for <xen-devel@lists.xenproject.org>; Mon, 20 Apr 2026 23:27:52 +0200
Received: from PH8PR02CA0051.namprd02.prod.outlook.com (2603:10b6:510:2da::21)
 by DS4PR08MB11019.namprd08.prod.outlook.com (2603:10b6:8:2e6::22)
 with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9818.32; Mon, 20 Apr
 2026 21:27:45 +0000
Received: from SA2PEPF00003F64.namprd04.prod.outlook.com
 (2603:10b6:510:2da:cafe::b9) by PH8PR02CA0051.outlook.office365.com
 (2603:10b6:510:2da::21) with Microsoft SMTP Server (version=TLS1_3,
 cipher=TLS_AES_256_GCM_SHA384) id 15.20.9791.48 via Frontend Transport; Mon,
 20 Apr 2026 21:27:45 +0000
Received: from usbth1es003.ebgroup.elektrobit.com (4.79.107.243) by
 SA2PEPF00003F64.mail.protection.outlook.com (10.167.248.39) with Microsoft
 SMTP Server (version=TLS1_3, cipher=TLS_AES_256_GCM_SHA384) id 15.20.9791.48
 via Frontend Transport; Mon, 20 Apr 2026 21:27:44 +0000
Received: from usbth1es003 (localhost [127.0.0.1])
 by usbth1es003.ebgroup.elektrobit.com (Postfix) with SMTP id 4fzz9D0F7Yz1wdV; 
 Mon, 20 Apr 2026 14:27:44 -0700 (PDT)
Received: from CO1PR08CU001.outbound.protection.outlook.com
 (mail-co1pr08cu00101.outbound.protection.outlook.com [40.93.10.97])
 (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)
 key-exchange secp384r1 server-signature RSA-PSS (2048 bits) server-digest
 SHA256) (No client certificate requested)
 by usbth1es003.ebgroup.elektrobit.com (Postfix) with ESMTPS;
 Mon, 20 Apr 2026 14:27:43 -0700 (PDT)
Received: from CH0PR03CA0397.namprd03.prod.outlook.com (2603:10b6:610:11b::30)
 by SA1PR08MB7245.namprd08.prod.outlook.com (2603:10b6:806:1a0::17)
 with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9818.32; Mon, 20 Apr
 2026 21:27:38 +0000
Received: from CH2PEPF0000009E.namprd02.prod.outlook.com
 (2603:10b6:610:11b:cafe::72) by CH0PR03CA0397.outlook.office365.com
 (2603:10b6:610:11b::30) with Microsoft SMTP Server (version=TLS1_3,
 cipher=TLS_AES_256_GCM_SHA384) id 15.20.9791.48 via Frontend Transport; Mon,
 20 Apr 2026 21:27:38 +0000
Received: from denue6es012.ebgroup.elektrobit.com (213.95.148.172) by
 CH2PEPF0000009E.mail.protection.outlook.com (10.167.244.27) with Microsoft
 SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id
 15.20.9791.48 via Frontend Transport; Mon, 20 Apr 2026 21:27:38 +0000
Received: from ubuntu.localdomain (10.10.178.50) by
 denue6es012.ebgroup.elektrobit.com (10.243.160.140) with Microsoft SMTP
 Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id
 15.2.2562.35; Mon, 20 Apr 2026 23:27:34 +0200
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@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=elektrobit.com header.i="@elektrobit.com" header.h="From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck"; dkim=pass header.s=selector1 header.d=elektrobit.com header.i="@elektrobit.com" header.h="From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck"
ARC-Seal: i=2; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=pass;
 b=siMT05Uwv09Sb0ufILysQ31SYkrAOTh3ponchDEMhoxnz7ugCbtG1+6rn6GMAQA+tgYE6t8A3qDKQQ4COLqPChV9rUjtn+l1wKt7oy+lsZGRpL7nrjxOJyShTlILsJEo1tu5q+3NhhF0CpT0EI2FAVxAbV6JQ4YrRjYLpGW5tysqE2EpL/PTAq6rRB9pB2FJYHId06NCOBXOaW8faPcVhsz8qLIiQZXwU+HjqJrkqFyVQ/SMe4D1y1NhBv0zYV3GQMXZkzQCKcgxegMlYxmtrK+mg8yHeWGew8B3Syidr57VIqp/OxoExVP9MxuDxGQI5ic5TQtzJIVIvz1n3Etx9Q==
ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com;
 s=arcselector10001;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1;
 bh=/xFPvcddJmAh/7k7Gzv3o+d1z1DGyz3l1lzwxv3F8MY=;
 b=ugvhVGj4Ay4WnvnOUMisvebbStQd50kjCywwjV29bKGyBZrVRfXi0hPuuIzVc5bW109kkBZLpVaHIpdGw4Vo9Xx9gttH+yJwSMFhW2vzlVV2HeI36Lr7o78vzBhkincICBG4HrxYbCEl7GaXsdwGr/BHrcZXz4YuF9mwVSQ8Q1qNbfzLWeHOiYLk5Q4VMgKYY24dCj3kZ9MAA+Bmrrn0WBm4dzzQ1rIqrIsmb1W9dgeLpYqW0y36cEFm22Kd719pm7zRiWt04ITVWECk3VJ32Fyf+7JoGVtFyFjGu+LAmdUp17wx/b5yOhUaiP3THp+mbI3CM1CfO8y4yG4ya4sokg==
ARC-Authentication-Results: i=2; mx.microsoft.com 1; spf=pass (sender ip is
 40.93.10.97) smtp.rcpttodomain=amd.com smtp.mailfrom=elektrobit.com;
 dmarc=pass (p=quarantine sp=none pct=100) action=none
 header.from=elektrobit.com; dkim=pass (signature was verified)
 header.d=elektrobit.com; arc=pass (0 oda=1 ltdi=1
 spf=[1,1,smtp.mailfrom=elektrobit.com]
 dmarc=[1,1,header.from=elektrobit.com])
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=elektrobit.com;
 s=selector1;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck;
 bh=/xFPvcddJmAh/7k7Gzv3o+d1z1DGyz3l1lzwxv3F8MY=;
 b=iLAIWGyjqNeVtdzRMI3oACsUTGllgi46p32FqZIdA44UnXxoj+ssw4ZlTC6pUuQ73bZawXrkLWsLUiMEqOqxbDNs6aQDdOlFwCvkJX/ttxUxqFj3nEFCTKxqum7Zz4DoyH+/KpYqR1mUKBdxIc6MbHlzH1XCavG+C3oRB732o4I=
X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 40.93.10.97)
 smtp.mailfrom=elektrobit.com; dkim=pass (signature was verified)
 header.d=elektrobit.com;dmarc=pass action=none header.from=elektrobit.com;
Received-SPF: Pass (protection.outlook.com: domain of elektrobit.com
 designates 40.93.10.97 as permitted sender) receiver=protection.outlook.com;
 client-ip=40.93.10.97; helo=CO1PR08CU001.outbound.protection.outlook.com;
 pr=C
ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none;
 b=WDXIgFtlRMMybhj/J02J+6dvwFHFVu47kAvjAJEZh1AdO2edBKhxXLFBs9VoJZgQcKy7hGfv06fsdGSslQ6+dqBr9aJNSZ6ZrmghgCOJ+594XtVTZ7kxdMhIguylrDVHhuHyA5IE/57dIopMQJgfHbgPYsko2GpAyDTsmf2xxAbZ4KfHZxEAVmXnamEoNMMheZWZPdctphnG/v+uBRUTR1BG1FQw4/rqQ1d4uSweUw+aUrOB5pWGnRcSL1ikVSnJ1HAfSg8JBPQ/R5O0DYCvgFDea2p65b5QNqZUqQOgG5IBcu89tCABLcDjdRgBSMV1ScQs5e3aFDxPiNAZAOcppg==
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com;
 s=arcselector10001;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1;
 bh=/xFPvcddJmAh/7k7Gzv3o+d1z1DGyz3l1lzwxv3F8MY=;
 b=rQNReQNPmnmeHrubVSsD2RDYqNzoM1HDybeuSWvcEP21n+/l/zEajzpVtf1z5tk6r2ggikQr5eyKE5zjECn9cGTbfs6fnCX0MRdXyYxSWptI/YdG0JM9fCp2O9zlKtUUs2YXpJQo1QAq2zglvwLHGPWEjhOqA1l3Ern3jRK09wotllT11z0YpgZIxbMjefWpdVIbTXpFOvXBLy1rb6JDKN+Ekm0MU0D1VaTszyX4+iXSL8S4hWZoh8oRGATBkKLpUZO7d3cOB9bptR7PjBkJF4POwOJs7X61TOydXQCicIwHkzc1UFKv6bTjuWAzWuuK//IZhK1LV2EZ6NV21KJiFQ==
ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass (sender ip is
 213.95.148.172) smtp.rcpttodomain=lists.xenproject.org
 smtp.mailfrom=elektrobit.com; dmarc=pass (p=quarantine sp=none pct=100)
 action=none header.from=elektrobit.com; dkim=none (message not signed);
 arc=none (0)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=elektrobit.com;
 s=selector1;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck;
 bh=/xFPvcddJmAh/7k7Gzv3o+d1z1DGyz3l1lzwxv3F8MY=;
 b=iLAIWGyjqNeVtdzRMI3oACsUTGllgi46p32FqZIdA44UnXxoj+ssw4ZlTC6pUuQ73bZawXrkLWsLUiMEqOqxbDNs6aQDdOlFwCvkJX/ttxUxqFj3nEFCTKxqum7Zz4DoyH+/KpYqR1mUKBdxIc6MbHlzH1XCavG+C3oRB732o4I=
X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 213.95.148.172)
 smtp.mailfrom=elektrobit.com; dkim=none (message not signed)
 header.d=none;dmarc=pass action=none header.from=elektrobit.com;
Received-SPF: Pass (protection.outlook.com: domain of elektrobit.com
 designates 213.95.148.172 as permitted sender)
 receiver=protection.outlook.com; client-ip=213.95.148.172;
 helo=denue6es012.ebgroup.elektrobit.com; pr=C
From: Rose Spangler <Rose.Spangler@elektrobit.com>
To: <xen-devel@lists.xenproject.org>
CC: Rose Spangler <Rose.Spangler@elektrobit.com>, Jan Beulich
	<jbeulich@suse.com>, Andrew Cooper <andrew.cooper3@citrix.com>,
	=?UTF-8?q?Roger=20Pau=20Monn=C3=A9?= <roger.pau@citrix.com>, 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: [RFC PATCH v6 24/43] altp2m: Move altp2m_{get,set}_altp2m to common code
Date: Mon, 20 Apr 2026 17:26:29 -0400
Message-ID: <20260420212648.208640-17-Rose.Spangler@elektrobit.com>
X-Mailer: git-send-email 2.34.1
In-Reply-To: <20260420212648.208640-1-Rose.Spangler@elektrobit.com>
References: <20260420212648.208640-1-Rose.Spangler@elektrobit.com>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit
Content-Type: text/plain
X-Originating-IP: [10.10.178.50]
X-ClientProxiedBy: denue6es013.ebgroup.elektrobit.com (10.243.160.141) To
 denue6es012.ebgroup.elektrobit.com (10.243.160.140)
X-EOPAttributedMessage: 1
X-MS-Exchange-SkipListedInternetSender:
 ip=[213.95.148.172];domain=denue6es012.ebgroup.elektrobit.com
X-MS-TrafficTypeDiagnostic:
	CH2PEPF0000009E:EE_|SA1PR08MB7245:EE_|SA2PEPF00003F64:EE_|DS4PR08MB11019:EE_
X-MS-Office365-Filtering-Correlation-Id: 9a17df29-cfd9-4436-7a52-08de9f23a998
X-SM-outgoing: yes
X-MS-Exchange-SenderADCheck: 1
X-MS-Exchange-AntiSpam-Relay: 0
X-Microsoft-Antispam-Untrusted:
 BCL:0;ARA:13230040|704162011799003|36860700016|1800799024|376014|82310400026|22082099003|18002099003|56012099003;
X-Microsoft-Antispam-Message-Info-Original:
 =?us-ascii?Q?V/t8OlqgU5UgLVl3ygrlXo1RJD7RaqDhlWshvtr04/fND0YliTWfyeKk+dBy?=
 =?us-ascii?Q?CjcF6cQ2atHLP06F8YEKxbKvvjiJYCDstfzRT38H7PTLd6G8Hga20EyqeDJ3?=
 =?us-ascii?Q?6DsH5q4DsnTo7tRznWaUtswU5g8jI+pYYCKTw0E/F89FoM0QBIsqUrYiT4qt?=
 =?us-ascii?Q?g59aLM6JGwKmMXXBF8+B1ihnoTQXyIlzjgOUzLnkgBu8aDksANWZnkZmNumN?=
 =?us-ascii?Q?r02LIfpws/ZIWtA3v0MAhZi0KVHL2bAWEY886sCuqJR172W9BwsDt5GzkmSN?=
 =?us-ascii?Q?644N3jCkpTCgYFSEzdMAGnGwVIYhe8hY+rvxoyDpzJpS7Duvw9Inf+9LzxA2?=
 =?us-ascii?Q?qUHwuOo9/ETjDMbGa1MEuhVQQyXITGT36+qmjWyKBEdUPUqFua3PO8jij2p/?=
 =?us-ascii?Q?KXRvPfJz+zxa8+QdbXE8v2C86OzT2ay6ravbopMnyWlA2Fjo2IoIAP6Pj2Uy?=
 =?us-ascii?Q?RWKXP4nzwXDR3D5scoTGW0elV+oVyTwTDml6ZrwL2UR1DmYUD38cGSSQLM6+?=
 =?us-ascii?Q?rMIxpkaLgGRsPuodweRpyGvDMVGO9Vk771ssweKh6NWRSv3o81ARRppyzngX?=
 =?us-ascii?Q?8aBHVmaPm/ImH87YnXAgzAYMhg+rJNxvNrlsj2n4nT6Uu50KEt29EHV4j/hr?=
 =?us-ascii?Q?SSdpvq5VvDToz3cF/ajtQdstO3YeMRAB4lUVz7goW/kzOaHNL5KETNt1FD04?=
 =?us-ascii?Q?wQxnSAHqjN+EUyWoQUdmlT5oo6Ktoheq5AuJxyOo5ZqjyWBcBvtUbqqnjOMu?=
 =?us-ascii?Q?KuIaD4nmcSttig++TIbpElHrvVuC1/HjmwOVP1+HKyD+BBeKZt2TIrId1/+7?=
 =?us-ascii?Q?s5LnT5PWUnSLV2xRP1UXwlbYOPjp6n8uMk2aL//OLLRLEXMNXHjvLsrspXqX?=
 =?us-ascii?Q?8fCRb+uwLSgtqKw1YBxTXfkfr1X9LUHgiYvlMDxt6GK2+UYA7NuA02veRZdC?=
 =?us-ascii?Q?N2PL8XKTTvaqh8hcRCJuRel/zvb/IB19QQMEyw2AV+8g3YKZulAjsd/NqkLX?=
 =?us-ascii?Q?TYXF2YHMIVyvFuvjDLD7oqMQ+71poQX5ayW8/JP3EaP1QiD5b0o2TcekySH+?=
 =?us-ascii?Q?1basVZykWM7k3rNtMudy0jeszYXmMi/sqMgQijTAwWaUy1SNRBQ=3D?=
X-Forefront-Antispam-Report-Untrusted:
 CIP:213.95.148.172;CTRY:DE;LANG:en;SCL:1;SRV:;IPV:CAL;SFV:NSPM;H:denue6es012.ebgroup.elektrobit.com;PTR:eth1-fw1-nbg6.eb.noris.de;CAT:NONE;SFS:(13230040)(704162011799003)(36860700016)(1800799024)(376014)(82310400026)(22082099003)(18002099003)(56012099003);DIR:OUT;SFP:1102;
X-Exchange-RoutingPolicyChecked:
 G9JKct85kmNJ7lKB/CE0Di3Ty4TIH4YJ6m04MNWUbs1eJktKZLP2jnGmQ6Adrpk+5iJA5U2y84/pMT4ASN84w+zqhXUDHjFKbix2flti0FQzVbfxdIvx4tCkDeMjOrnZZYzQp+Vo5svgAmAD/rsZEbiQvBwCWUraDAmuW8tJXrIbPKukmI6ouWd9woYwFcujReoI/q8Gc0jgOwCmbabQpIdbajCrfs0gmncK+HmPqXKBjhxOvBLErN5eX2h/aXUOBw1uHi4OwtTbiY0xMfSGibGWh3iDa7WWnyhPZLQlDy97A/P0z29SMKYZpMGkdGXB4ZON86XDcY73S0r1Ccbrhw==
X-MS-Exchange-Transport-CrossTenantHeadersStamped: SA1PR08MB7245
X-MS-Exchange-SkipListedInternetSender:
 ip=[40.93.10.97];domain=CO1PR08CU001.outbound.protection.outlook.com
X-MS-Exchange-ExternalOriginalInternetSender:
 ip=[40.93.10.97];domain=CO1PR08CU001.outbound.protection.outlook.com
X-MS-Exchange-Transport-CrossTenantHeadersStripped:
 SA2PEPF00003F64.namprd04.prod.outlook.com
X-MS-PublicTrafficType: Email
X-MS-Office365-Filtering-Correlation-Id-Prvs:
	54dda91a-6ba8-4cd8-1232-08de9f23a59e
X-Microsoft-Antispam:
	BCL:0;ARA:13230040|704162011799003|376014|14060799003|36860700016|35042699022|156008|82310400026|1800799024|56012099003|22082099003|18002099003;
X-Microsoft-Antispam-Message-Info:
	=?us-ascii?Q?98LBm2rCc354eHij1TwR0Aw7vJkJFINu24fIJSK5R4pkzRbUl/rs2ujxRdXB?=
 =?us-ascii?Q?n/7XWCsb1fIos2iomZvWsLxCBvxGoHW+47DVxRizpp6zEW6Opms5087Q6xN1?=
 =?us-ascii?Q?rXOJFUcK+fMW9Cr0+y6wrB6gZXDnL1EpC1focekQzXPwsBQ0SEhE/ubaJybI?=
 =?us-ascii?Q?9aPlduYwGN0ige2Wf/TAz8PiQb0JNbE4qB1vaoYPxXgG9+PHy+S4WER3QQQK?=
 =?us-ascii?Q?+WhOVEs5X1OWTkxVFH8W2x2sc4knxjlL836npm8Wn5GFM1Q3wd/QVgTJbIG5?=
 =?us-ascii?Q?DPeo1BDwONHTHZSonPTZbOyVt9iIPyFPxiIXoTVXJvW69CVsGLfl/s+P3+KU?=
 =?us-ascii?Q?Mg+hAoM3eaC38xWZ608WcPx1fIoK87G/awustxyIDdREK/AjfNVHhWpD7nCB?=
 =?us-ascii?Q?CScYahV+ig45mwIK/zglvmfstUirpVhXAjG0PrxoO5C3AiX3LJKdcSc0YEo9?=
 =?us-ascii?Q?7vTsMG469TtpUIAFxPLgiDT9UA6RxmnjsvrspPwGpvDSlfyQTtPmV3GzZWq2?=
 =?us-ascii?Q?nofFeRBZfy45xg7tWHOXDGh4IV8lNihPqvE6FVlghsPDEmGKlIdKuNFUpU0p?=
 =?us-ascii?Q?GiuF8LKQmHa4fOqv/76nJ2VJuYKDsgr3uNYEtDzmzJhkuGbyMJhsnZtviGRa?=
 =?us-ascii?Q?2Sf3nF5eXHy1u08XPmZv0KZ35U0V4zmS9FAA8UFVvKMTULml7jUrAp/JxvVz?=
 =?us-ascii?Q?t1U5aRO7CFssq4HLMXW9H/iRIK+u6mudpeWTMKiiRGupcxLx3NyKYYXwnViG?=
 =?us-ascii?Q?CvZazj/mX+SqqW44jqvJbm8jppUZ8wf1sC83DwPEh7ky12Yhe2TbxI3jn91Q?=
 =?us-ascii?Q?OXhGU3yqWWxzVmjQ4PvPni+boLxot2yt8ZtJrJwUf3rvbYop2Nht3Dew32wk?=
 =?us-ascii?Q?E31XYMT9BPe/0wGE2XdA/vEORFbQYuCUljmXgrdbiFnncUk7X3I61veIEQAi?=
 =?us-ascii?Q?CeXso//SiZhjer6Ac3E5TdD0eJNktW1halUlaKeLPUNThZnGHX6lktpGxcc9?=
 =?us-ascii?Q?7lCqPJf82zI7RsHvlvQV0cppC16DRJy29nB/TBi4Ll2g6wk1eIb02uyHD9Ht?=
 =?us-ascii?Q?Vkwsk46mrlZm/WYr9ULWgE8IT6PO/rQIaO452501D+RL6KuCR7g=3D?=
X-Forefront-Antispam-Report:
	CIP:4.79.107.243;CTRY:US;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:CO1PR08CU001.outbound.protection.outlook.com;PTR:mail-co1pr08cu00101.outbound.protection.outlook.com;CAT:NONE;SFS:(13230040)(704162011799003)(376014)(14060799003)(36860700016)(35042699022)(156008)(82310400026)(1800799024)(56012099003)(22082099003)(18002099003);DIR:OUT;SFP:1102;
X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1
X-MS-Exchange-AntiSpam-MessageData-0:
	9/qlWrLr+YlyYXpcgwHtXfMyZE0eH5PfszK7EonwPvd4LKJ7lDWEuHJ9PRiYLXXBDeGQW2gqo4+IheGMsVoun3qz1gp7MCoqJgBLGNP5autS+N81oCB/P+xHOMuXGYoyvo8ICzLMlBUv4KObYmLH9NwgkCsOaQJY6nN45nggaYqN3lWBrnYPNa8vvhZRR2uA00FjjJ90Vue/lPZK8MKcD+qOF880zzo1YeqGiBJU/lSaQBuh96MC9jP7HYmMkrT9+2szF8f+9UD0APFV+QSHuT7Xa+pl1GUliKg5gECbplWL0CHxsxLwYRaiBZ/6Zn2osmDglMWy9MS6LSVGcA4xa4MljG/kOYu847SnaLzR250zsH7A8iRPI0OlT5g3ymPEqsQBdGJFqxlJNssCQ/05BhIedHLN81x9Qe1QR4bz3NPVsbmQ3BRxxcADkYl5BAbM
X-OriginatorOrg: elektrobit.com
X-MS-Exchange-CrossTenant-OriginalArrivalTime: 20 Apr 2026 21:27:44.7741
 (UTC)
X-MS-Exchange-CrossTenant-Network-Message-Id: 9a17df29-cfd9-4436-7a52-08de9f23a998
X-MS-Exchange-CrossTenant-Id: e764c36b-012e-4216-910d-8fd16283182d
X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=e764c36b-012e-4216-910d-8fd16283182d;Ip=[4.79.107.243];Helo=[usbth1es003.ebgroup.elektrobit.com]
X-MS-Exchange-CrossTenant-AuthAs: Internal
X-MS-Exchange-CrossTenant-AuthSource: TreatMessagesAsInternal-SA2PEPF00003F64.namprd04.prod.outlook.com
X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem
X-MS-Exchange-Transport-CrossTenantHeadersStamped: DS4PR08MB11019
X-purgate-ID: tlsNG-ef75cf/1776720473-ADD6FC48-891058A1/0/0
X-purgate-type: clean
X-purgate-size: 5044

This commit moves the altp2m_get_altp2m and altp2m_set_altp2m functions to
the common code. This make sit possible to use them in other common
routines (namely, altp2m_vcpu_{initialise,destroy}).

This commit contains only code movement, and no change in functionality is
intended.

This is commit 1/4 of the altp2m_{get,set}_altp2m phase.

Signed-off-by: Rose Spangler <Rose.Spangler@elektrobit.com>
---
v6: Introduced this patch.
---
 xen/arch/x86/include/asm/altp2m.h | 35 -------------------------
 xen/arch/x86/include/asm/domain.h |  2 --
 xen/common/altp2m.c               |  1 -
 xen/include/xen/altp2m.h          | 43 +++++++++++++++++++++++++++++++
 4 files changed, 43 insertions(+), 38 deletions(-)

diff --git a/xen/arch/x86/include/asm/altp2m.h b/xen/arch/x86/include/asm/altp2m.h
index 13017525a62f..a1b078783b3e 100644
--- a/xen/arch/x86/include/asm/altp2m.h
+++ b/xen/arch/x86/include/asm/altp2m.h
@@ -64,39 +64,6 @@ static inline uint16_t altp2m_vcpu_idx(const struct vcpu *v)
  * Alternate p2m: shadow p2m tables used for alternate memory views
  */
 
-/* get current alternate p2m table */
-static inline struct p2m_domain *altp2m_get_altp2m(struct vcpu *v)
-{
-    unsigned int index = vcpu_altp2m(v).p2midx;
-
-    if ( index == INVALID_ALTP2M )
-        return NULL;
-
-    BUG_ON(index >= v->domain->nr_altp2m);
-
-    return v->domain->altp2m_p2m[index];
-}
-
-/* set current alternate p2m table */
-static inline bool altp2m_set_altp2m(struct vcpu *v, unsigned int idx)
-{
-    struct p2m_domain *orig;
-
-    BUG_ON(idx >= v->domain->nr_altp2m);
-
-    if ( idx == vcpu_altp2m(v).p2midx )
-        return false;
-
-    orig = altp2m_get_altp2m(v);
-    BUG_ON(!orig);
-    atomic_dec(&orig->active_vcpus);
-
-    vcpu_altp2m(v).p2midx = idx;
-    atomic_inc(&v->domain->altp2m_p2m[idx]->active_vcpus);
-
-    return true;
-}
-
 /* Switch alternate p2m for a single vcpu */
 bool altp2m_switch_vcpu_by_id(struct vcpu *v, unsigned int idx);
 
@@ -178,8 +145,6 @@ static inline int _altp2m_get_effective_entry(struct p2m_domain *ap2m,
         _altp2m_get_effective_entry(ap2m, gfn, mfn, t, a)
 
 /* Only declaration is needed. DCE will optimise it out when linking. */
-struct p2m_domain *altp2m_get_altp2m(struct vcpu *v);
-bool altp2m_set_altp2m(struct vcpu *v, unsigned int idx);
 uint16_t altp2m_vcpu_idx(const struct vcpu *v);
 void altp2m_vcpu_initialise(struct vcpu *v);
 void altp2m_vcpu_destroy(struct vcpu *v);
diff --git a/xen/arch/x86/include/asm/domain.h b/xen/arch/x86/include/asm/domain.h
index f8038087e612..72460e38f581 100644
--- a/xen/arch/x86/include/asm/domain.h
+++ b/xen/arch/x86/include/asm/domain.h
@@ -277,8 +277,6 @@ struct paging_vcpu {
 #define MAX_NR_ALTP2M   MAX_EPTP
 #define MAX_NESTEDP2M   10
 
-#define INVALID_ALTP2M  0xffff
-
 struct p2m_domain;
 struct time_scale {
     int shift;
diff --git a/xen/common/altp2m.c b/xen/common/altp2m.c
index 989d8bdcb923..a731ad7cdab8 100644
--- a/xen/common/altp2m.c
+++ b/xen/common/altp2m.c
@@ -5,7 +5,6 @@
 #include <xen/xvmalloc.h>
 
 #include <asm/altp2m.h>
-#include <asm/p2m.h>
 
 #include <public/hvm/params.h>
 
diff --git a/xen/include/xen/altp2m.h b/xen/include/xen/altp2m.h
index 238c7a935586..58e74be6deb0 100644
--- a/xen/include/xen/altp2m.h
+++ b/xen/include/xen/altp2m.h
@@ -8,6 +8,10 @@
 
 #include <public/hvm/hvm_op.h>
 
+#include <asm/p2m.h>
+
+#define INVALID_ALTP2M  0xffff
+
 /*
  * Common alternate p2m declarations that need to be visible
  * regardless of CONFIG_ALTP2M
@@ -27,6 +31,41 @@ static inline bool altp2m_active(const struct domain *d)
     return d->altp2m_active;
 }
 
+#ifdef CONFIG_X86
+/* get current alternate p2m table */
+static inline struct p2m_domain *altp2m_get_altp2m(struct vcpu *v)
+{
+    unsigned int index = vcpu_altp2m(v).p2midx;
+
+    if ( index == INVALID_ALTP2M )
+        return NULL;
+
+    BUG_ON(index >= v->domain->nr_altp2m);
+
+    return v->domain->altp2m_p2m[index];
+}
+
+/* set current alternate p2m table */
+static inline bool altp2m_set_altp2m(struct vcpu *v, unsigned int idx)
+{
+    struct p2m_domain *orig;
+
+    BUG_ON(idx >= v->domain->nr_altp2m);
+
+    if ( idx == vcpu_altp2m(v).p2midx )
+        return false;
+
+    orig = altp2m_get_altp2m(v);
+    BUG_ON(!orig);
+    atomic_dec(&orig->active_vcpus);
+
+    vcpu_altp2m(v).p2midx = idx;
+    atomic_inc(&v->domain->altp2m_p2m[idx]->active_vcpus);
+
+    return true;
+}
+#endif
+
 int do_altp2m_op(XEN_GUEST_HANDLE_PARAM(void) arg);
 
 #else /* CONFIG_ALTP2M */
@@ -41,6 +80,10 @@ static inline int do_altp2m_op(XEN_GUEST_HANDLE_PARAM(void) arg)
     return -EOPNOTSUPP;
 }
 
+/* Only declaration is needed. DCE will optimise it out when linking. */
+struct p2m_domain *altp2m_get_altp2m(struct vcpu *v);
+bool altp2m_set_altp2m(struct vcpu *v, unsigned int idx);
+
 #endif /* CONFIG_ALTP2M */
 
 #endif /* __XEN_ALTP2M_H__ */
-- 
2.34.1



From xen-devel-bounces@lists.xenproject.org Mon Apr 20 21:27:58 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 20 Apr 2026 21:27:58 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1287547.1568020 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wEw9u-0005PI-Hr; Mon, 20 Apr 2026 21:27:58 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1287547.1568020; Mon, 20 Apr 2026 21:27: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 1wEw9t-0005Le-L2; Mon, 20 Apr 2026 21:27:57 +0000
Received: by outflank-mailman (input) for mailman id 1287547;
 Mon, 20 Apr 2026 21:27:55 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <Rose.Spangler@elektrobit.com>) id 1wEw9r-00052T-Hz
 for xen-devel@lists.xenproject.org; Mon, 20 Apr 2026 21:27:55 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wEw9q-009jup-UI
 for xen-devel@lists.xenproject.org; Mon, 20 Apr 2026 23:27:54 +0200
Received: from [10.42.69.6] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <Rose.Spangler@elektrobit.com>)
 id 69e69a17-5cb7-0a2a0a5109dd-0a2a45068920-46
 for <xen-devel@lists.xenproject.org>; Mon, 20 Apr 2026 23:27:54 +0200
Received: from [40.93.196.130]
 (helo=SA9PR02CU001.outbound.protection.outlook.com)
 by tlsNG-16d1c6.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.1)
 (envelope-from <Rose.Spangler@elektrobit.com>)
 id 69e69a55-7371-0a2a45060019-285dc482173d-3
 for <xen-devel@lists.xenproject.org>; Mon, 20 Apr 2026 23:27:51 +0200
Received: from MN0PR02CA0007.namprd02.prod.outlook.com (2603:10b6:208:530::15)
 by SJ0PR08MB6750.namprd08.prod.outlook.com (2603:10b6:a03:2d1::15)
 with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9818.25; Mon, 20 Apr
 2026 21:27:40 +0000
Received: from BL6PEPF0001AB72.namprd02.prod.outlook.com
 (2603:10b6:208:530:cafe::45) by MN0PR02CA0007.outlook.office365.com
 (2603:10b6:208:530::15) with Microsoft SMTP Server (version=TLS1_3,
 cipher=TLS_AES_256_GCM_SHA384) id 15.20.9791.48 via Frontend Transport; Mon,
 20 Apr 2026 21:27:39 +0000
Received: from usbth1es003.ebgroup.elektrobit.com (4.79.107.243) by
 BL6PEPF0001AB72.mail.protection.outlook.com (10.167.242.165) with Microsoft
 SMTP Server (version=TLS1_3, cipher=TLS_AES_256_GCM_SHA384) id 15.20.9791.48
 via Frontend Transport; Mon, 20 Apr 2026 21:27:39 +0000
Received: from usbth1es003 (localhost [127.0.0.1])
 by usbth1es003.ebgroup.elektrobit.com (Postfix) with SMTP id 4fzz964cSXz1wdS; 
 Mon, 20 Apr 2026 14:27:38 -0700 (PDT)
Received: from SJ0PR08CU001.outbound.protection.outlook.com
 (mail-sj0pr08cu00104.outbound.protection.outlook.com [40.93.1.76])
 (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)
 key-exchange secp384r1 server-signature RSA-PSS (2048 bits) server-digest
 SHA256) (No client certificate requested)
 by usbth1es003.ebgroup.elektrobit.com (Postfix) with ESMTPS;
 Mon, 20 Apr 2026 14:27:38 -0700 (PDT)
Received: from CH5PR05CA0010.namprd05.prod.outlook.com (2603:10b6:610:1f0::22)
 by DM3PR08MB9136.namprd08.prod.outlook.com (2603:10b6:0:14::14) with
 Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9818.32; Mon, 20 Apr
 2026 21:27:26 +0000
Received: from CH2PEPF00000099.namprd02.prod.outlook.com
 (2603:10b6:610:1f0:cafe::54) by CH5PR05CA0010.outlook.office365.com
 (2603:10b6:610:1f0::22) with Microsoft SMTP Server (version=TLS1_3,
 cipher=TLS_AES_256_GCM_SHA384) id 15.20.9791.48 via Frontend Transport; Mon,
 20 Apr 2026 21:27:26 +0000
Received: from denue6es012.ebgroup.elektrobit.com (213.95.148.172) by
 CH2PEPF00000099.mail.protection.outlook.com (10.167.244.20) with Microsoft
 SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id
 15.20.9791.48 via Frontend Transport; Mon, 20 Apr 2026 21:27:26 +0000
Received: from ubuntu.localdomain (10.10.178.50) by
 denue6es012.ebgroup.elektrobit.com (10.243.160.140) with Microsoft SMTP
 Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id
 15.2.2562.35; Mon, 20 Apr 2026 23:27:23 +0200
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@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=elektrobit.com header.i="@elektrobit.com" header.h="From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck"; dkim=pass header.s=selector1 header.d=elektrobit.com header.i="@elektrobit.com" header.h="From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck"
ARC-Seal: i=2; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=pass;
 b=ihOxs59k/Y81LOoyE9gQnw8x5u4PA+6c3uOL/qoPUk6jf/ZU83RPknS5TRcdzNYEbJuJ/ayQmgi63DnPXL4aDwBXUScjnH61Wn8doeyZXSNrzh8CeBZcrZ/BRdCALLYCfrBvUolV3pLqdsIrNQfR211ZcfT/3Q/xSZAAvL5dE8qC2x0iu8Wt35vCprQPKuq9IOza/47i1pEo9HUFEwoetocSEeJbkxQEiZVRMcLqdxHJ1GrhrRcWKQ5JNSY1g1qa0LUjZswazVQUQPKRKcQ8owGQGJJhKsHD8ugMQQu1z9u77l7X2bCMAq3VT5SPN+yD6voneyKvpxNDQop307NKww==
ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com;
 s=arcselector10001;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1;
 bh=OAj59kWKN8biXOebnwdzq5ky5bvMG5PNKC5Jot+tZ8s=;
 b=TNvImQvR9whhxpEpg6mQwNpA5IBekbTjI44dT5tCmyt/Y+vg2QmUIDWVI8lJux8xK1OMgNo7on0B7w+5+gOkNGCDPbRrg3cDfKyhlHzpdglTvvycAV/5qTOD3Z7xa6AunIWIEAmyFQuHVGvYYuF0jfvmf6YVKq+rDB/S9RqQqOCdbiU63VP2/PiSvSMnDpVvAeE+MkMAj4R6LdCJXwY9/IG9EKGuIIxFD+gB4tQ+VeZtIqDhVxX+z14d2aQsR+NzCoIAyqiVd8TpMeKzK1IBl9AT+4Ua/ePVg4dJTAk/jWXcLA/2/L11ZY+qzkfhH53DGaTMJBczyeSiMeMAcN/MTw==
ARC-Authentication-Results: i=2; mx.microsoft.com 1; spf=pass (sender ip is
 40.93.1.76) smtp.rcpttodomain=amd.com smtp.mailfrom=elektrobit.com;
 dmarc=pass (p=quarantine sp=none pct=100) action=none
 header.from=elektrobit.com; dkim=pass (signature was verified)
 header.d=elektrobit.com; arc=pass (0 oda=1 ltdi=1
 spf=[1,1,smtp.mailfrom=elektrobit.com]
 dmarc=[1,1,header.from=elektrobit.com])
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=elektrobit.com;
 s=selector1;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck;
 bh=OAj59kWKN8biXOebnwdzq5ky5bvMG5PNKC5Jot+tZ8s=;
 b=Cnyc79bWCglclRLJqu4OuHaL2TtDQnEvAXy1UAJmGr26COabSNkg1lq57qYl7gdbwQXlmuCKZWZd0Aa1aLhL+/rochiA816xuWUZwXKVRJWSNJJsfdmJm9NSeRyQcGgVhgAulYCZaErPUxmQFYT+IrDEm5pDd0Vp9dlcBfZ0jCA=
X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 40.93.1.76)
 smtp.mailfrom=elektrobit.com; dkim=pass (signature was verified)
 header.d=elektrobit.com;dmarc=pass action=none header.from=elektrobit.com;
Received-SPF: Pass (protection.outlook.com: domain of elektrobit.com
 designates 40.93.1.76 as permitted sender) receiver=protection.outlook.com;
 client-ip=40.93.1.76; helo=SJ0PR08CU001.outbound.protection.outlook.com; pr=C
ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none;
 b=ZBUykGz/nOSPO6xoDK0nq/cwgurczPVnQrHuXUM12uOavdNJU02fsLOuny0ECvQor1IRPkxdKRvtwMdseE0CjHf8ZpBq3LpdcTL4ubqKehQgsDyPRHOzegFvAFCTQRvnG5UNWkmUIoSeEwKV2qI5B4jymmpv3GPFhqiPlIqcseWlZsbv8NqnuLpoD92mAflXQ3U5KcQgVtJc6FzfStfyHhaCj+Jq0UcjG4WLPJjYfrSewp8CV4G+7CZ+tbIyib85wm8HiRCehSUAlrrPMG/RkDBYFgqTjFSs+CUksSJaJeyjKfO+taZRglzRK+f+N65HpVOhcpg2o1F5d4xQtd7B7w==
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com;
 s=arcselector10001;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1;
 bh=OAj59kWKN8biXOebnwdzq5ky5bvMG5PNKC5Jot+tZ8s=;
 b=F6rOOSF4/z4NkgvHD1JKx8PCZEdce/yM6NfJ9hQlAKfBpBnGV8airHpJvJJ1CRfuUj48PFc/f140RZZP5oA1z/Yw3CIUulHfFv5pCsGyLuuyVnY9U5/RF13wGCNq6wJCbQj4RBz8cWela+NHZKc13lkNPY+YDnWE1PaMzGMmBBB5AgGthjZ4o9p9IVoBnQbqQexe3okZjINjqI/ujtHj0T1WYYaqk0M2gZamNWWPsxB0K2NI4W1fwyQrUzROfNc0RHyXFvDz/a8ztrBSjKiB3216isDbHEMlvzTZzDuH7Ci9TyTvbYf/oPAYj2REMr6j8d3/yBXVEGclPThqwNohjQ==
ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass (sender ip is
 213.95.148.172) smtp.rcpttodomain=lists.xenproject.org
 smtp.mailfrom=elektrobit.com; dmarc=pass (p=quarantine sp=none pct=100)
 action=none header.from=elektrobit.com; dkim=none (message not signed);
 arc=none (0)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=elektrobit.com;
 s=selector1;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck;
 bh=OAj59kWKN8biXOebnwdzq5ky5bvMG5PNKC5Jot+tZ8s=;
 b=Cnyc79bWCglclRLJqu4OuHaL2TtDQnEvAXy1UAJmGr26COabSNkg1lq57qYl7gdbwQXlmuCKZWZd0Aa1aLhL+/rochiA816xuWUZwXKVRJWSNJJsfdmJm9NSeRyQcGgVhgAulYCZaErPUxmQFYT+IrDEm5pDd0Vp9dlcBfZ0jCA=
X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 213.95.148.172)
 smtp.mailfrom=elektrobit.com; dkim=none (message not signed)
 header.d=none;dmarc=pass action=none header.from=elektrobit.com;
Received-SPF: Pass (protection.outlook.com: domain of elektrobit.com
 designates 213.95.148.172 as permitted sender)
 receiver=protection.outlook.com; client-ip=213.95.148.172;
 helo=denue6es012.ebgroup.elektrobit.com; pr=C
From: Rose Spangler <Rose.Spangler@elektrobit.com>
To: <xen-devel@lists.xenproject.org>
CC: Rose Spangler <Rose.Spangler@elektrobit.com>, Julien Grall
	<julien@xen.org>, Bertrand Marquis <bertrand.marquis@arm.com>, Michal Orzel
	<michal.orzel@amd.com>, Volodymyr Babchuk <Volodymyr_Babchuk@epam.com>,
	Sergej Proskurin <proskurin@sec.in.tum.de>, Stefano Stabellini
	<sstabellini@kernel.org>, Julien Grall <julien.grall@arm.com>
Subject: [RFC PATCH v6 17/43] arm/p2m: Move hostp2m init/teardown to individual functions
Date: Mon, 20 Apr 2026 17:26:22 -0400
Message-ID: <20260420212648.208640-10-Rose.Spangler@elektrobit.com>
X-Mailer: git-send-email 2.34.1
In-Reply-To: <20260420212648.208640-1-Rose.Spangler@elektrobit.com>
References: <20260420212648.208640-1-Rose.Spangler@elektrobit.com>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit
Content-Type: text/plain
X-Originating-IP: [10.10.178.50]
X-ClientProxiedBy: denue6es013.ebgroup.elektrobit.com (10.243.160.141) To
 denue6es012.ebgroup.elektrobit.com (10.243.160.140)
X-EOPAttributedMessage: 1
X-MS-Exchange-SkipListedInternetSender:
 ip=[213.95.148.172];domain=denue6es012.ebgroup.elektrobit.com
X-MS-TrafficTypeDiagnostic:
	CH2PEPF00000099:EE_|DM3PR08MB9136:EE_|BL6PEPF0001AB72:EE_|SJ0PR08MB6750:EE_
X-MS-Office365-Filtering-Correlation-Id: f019f542-e825-4a2c-dc2b-08de9f23a677
X-SM-outgoing: yes
X-MS-Exchange-SenderADCheck: 1
X-MS-Exchange-AntiSpam-Relay: 0
X-Microsoft-Antispam-Untrusted:
 BCL:0;ARA:13230040|82310400026|36860700016|376014|1800799024|56012099003|22082099003|18002099003;
X-Microsoft-Antispam-Message-Info-Original:
 =?us-ascii?Q?hQ72XviHDyNLuRAuPLvm5zg4mpBArTiFtPQF0WwlJ3nx0LX25Kge2NIep3hY?=
 =?us-ascii?Q?Lj4tZMRJgG6//+WuTpdF1evqjRNjkPhbKWrlQeDFyihxa5O2gxAVqftxJgz9?=
 =?us-ascii?Q?6XPD5p16n5np5D56bm8EvuJdwi65deWFCzzpgdXnZdYbonNwITn7LkuA33uZ?=
 =?us-ascii?Q?awekqWAnwjTOTjo7bYdQwUilNwjJrMFawyUolWJl5yeLJdH7hJOzZI7S2xn7?=
 =?us-ascii?Q?KYfld3v1V2AliwyqVKwTYRUpju6+WvFu3WgytIsTlbeBuFOrkwR+Gf3sV+xP?=
 =?us-ascii?Q?BCMo4Qf1HYTcUNjwj73RH0LzeOa0NjFhTr1tdE85iYZGB3zpqFoY+1qcw20p?=
 =?us-ascii?Q?m6ycXfGRQfAm2sqmg3MQLaJ/CB1Tbqls3tqiJtj9h9xwr1wPzUZGW3rJLZuP?=
 =?us-ascii?Q?JtYAPN9Pt9cAryBGhMpIdIa4JdTTnB8GyFqiyL9BIrG+Ou9yNO/TwNRg5HtR?=
 =?us-ascii?Q?Nh5ZAEHqf8tDEgMJmu/XSi88D1PtOcaZKuRwac8YmAs6Uc6EiCvZdKS7ggFx?=
 =?us-ascii?Q?cC5AAMzxJph7a2ZdeJvjAw1TJfCtuUZygPnufiVF4AVBlMXvbHwSIsTe0P3W?=
 =?us-ascii?Q?l9VMRP4D6bNs2IG6UWRAdVsDRqVxVAFMiKZqoc3wkiCyyzt8vK7Ij8slYXYW?=
 =?us-ascii?Q?2KqwMBJSi4z4+zcmyOxcTJjuK+IEu6WWzjel2uvgDkrwEac7BjPY1WV/Q17k?=
 =?us-ascii?Q?hDFsletdogjshY8kob3DlQRc9K17WdVDSFZYjXVodv2Bh1ue7GmE6J3OqGp5?=
 =?us-ascii?Q?1C/Mzwb4+g5wgCvTFITUQdgN1yHpgHZ1tKyMO+U9FJVY55PaGUVMy+oXWyu2?=
 =?us-ascii?Q?Q5kk9X+EkZ2MOrCg7VcB6V/FRXjFB280RhQS/oKNTtFGzdGz1P2a/YMx+sSS?=
 =?us-ascii?Q?ler7sWPH470iowZalxzIYgVYEip42zBXDBFqx9PrntvtetbyFXQIQG/GKfAH?=
 =?us-ascii?Q?P358quTGzl7dnIjL9zg7R/uqTewL408/cVaLkVX0ClNC4bheYUN+/P9nC8o7?=
 =?us-ascii?Q?8Of9qADmncQVRppylnpgV2YsNyeAY+GilokiZey8J9FA3wLm5xh2z4OpPrIF?=
 =?us-ascii?Q?IgY+vSNdmp/G80FRtJEHjJEol1zhgjmohsxx8dvY154mSBjJQb9veFDdEBfi?=
 =?us-ascii?Q?2XuZ4W6nQDo+GbuSAcumODRTVmsH6IUwP+DzN5Bd5SbMQaHzjVS8FB1Hi40W?=
 =?us-ascii?Q?PQmXa+pClKwo17kOG9dQbjS7URxjtTp6mZyF4g=3D=3D?=
X-Forefront-Antispam-Report-Untrusted:
 CIP:213.95.148.172;CTRY:DE;LANG:en;SCL:1;SRV:;IPV:CAL;SFV:NSPM;H:denue6es012.ebgroup.elektrobit.com;PTR:eth1-fw1-nbg6.eb.noris.de;CAT:NONE;SFS:(13230040)(82310400026)(36860700016)(376014)(1800799024)(56012099003)(22082099003)(18002099003);DIR:OUT;SFP:1102;
X-Exchange-RoutingPolicyChecked:
 Mg8uG0Er2mVrQ5U5JJlDOHx9HzrX0RrB6izIDtZau4FeWE1+rNe8bUCQ0VqQjxUvEq6DS+Sp9loQO/NRZbpAjokh9hn48h9M7mtjp5Tne6zTCONuKGrAGEFd0FLoxEuVtuBmsokQOmmBBYUdhesncjHMjDXVomZGBqJYivM92Myz6ysawIdCfLoBdZLV4PGHfR8OCvQDb06nSohsymRwYm1WLMjOASAI1TriDQ6s5hClkuokShrcWsGOlS1Z9CDEBWb4O97XiUq+uufU3NlO7JvyN47T7nih1XIXNrTUXjdcPCht6NVGBTimP7ppROwaQtvV6KblT4R8BC1BHmxybw==
X-MS-Exchange-Transport-CrossTenantHeadersStamped: DM3PR08MB9136
X-MS-Exchange-SkipListedInternetSender:
 ip=[40.93.1.76];domain=SJ0PR08CU001.outbound.protection.outlook.com
X-MS-Exchange-ExternalOriginalInternetSender:
 ip=[40.93.1.76];domain=SJ0PR08CU001.outbound.protection.outlook.com
X-MS-Exchange-Transport-CrossTenantHeadersStripped:
 BL6PEPF0001AB72.namprd02.prod.outlook.com
X-MS-PublicTrafficType: Email
X-MS-Office365-Filtering-Correlation-Id-Prvs:
	88a44def-d595-48d0-a20a-08de9f239ea8
X-Microsoft-Antispam:
	BCL:0;ARA:13230040|36860700016|1800799024|376014|14060799003|35042699022|82310400026|156008|56012099003|22082099003|18002099003;
X-Microsoft-Antispam-Message-Info:
	=?us-ascii?Q?77kp6bKmuXKRoQmcTex64ndMlr3Hh6bOB1xhG1km09D704DeIXrW5/nY/kAs?=
 =?us-ascii?Q?6Yz/QDtAh5W7qn1PtdV+PrUXQ6oZ8aCKhG+Qiw6lTOEJHeErIcb4PKK+3kjp?=
 =?us-ascii?Q?Gm1c0MgVkHuoMh4wL5pkQfrBbotgNZFcFqBrVYZ5lUCv5XGMQziginNPt9fz?=
 =?us-ascii?Q?TwG+M1eljfMa42z+CzeRMXDEHqEg2S3HjKTL/O554eXYSMKXe69bShspLzy7?=
 =?us-ascii?Q?JGWWECzc9QnVYP5cfNjbbpNRNtiQettK0aO/LW0PXU/1jsB420jwk+u0DWiO?=
 =?us-ascii?Q?fYP9UunYUZWcYqNj64XqC0dVZw8QfXwKhMqZeyOdxw1BeMo0aad5ZOYyYYEZ?=
 =?us-ascii?Q?Zp3GBuPrAqXulXtugeRWrHZEZvRIA5rHjCTmsBvQ+XIDDD4dltG+kSb6Fq1s?=
 =?us-ascii?Q?seEOzh6hPnRkf1R6VSLu2zYf4lnWP0rKd4wAd3guBv6ND8Ry83Ynm+xjrFZc?=
 =?us-ascii?Q?gISzb33I9sh6bgFulVimQ4huTf/g+Ex9oB5/MG3m+iy4/jbQ/K3wM4sKAwnB?=
 =?us-ascii?Q?Oc1RH9DqoSI2kFTvTNM2E7Oqcyjbg1RHSeZSstJiezxSD0h9ZNdbkOGc5ssk?=
 =?us-ascii?Q?SAGRCUJM1MPAO5D7P4cDUnmR4H6oMlw16xr1sj3XMB4yC5LRACfUHa8TAba5?=
 =?us-ascii?Q?k3DCeWAHtf+8DntiqWKPTU9bQCSwJ5tcqWxan+5nvUUStvPfAWbUD6VYoaO+?=
 =?us-ascii?Q?Dd+T4nrxBIz6AeKoZV64FjqODqbCB/KDt6jof1RKC7mJkMtwLq/bnmhAjhq2?=
 =?us-ascii?Q?u7KsGmcn22YNO+2t6d+BZ0gmEPefTTRqD1HAmOH9iCiF9GwktzXIUQvcFMyr?=
 =?us-ascii?Q?KxVbWAKOqTa46QuVQcxaFfjTbQrCE2EQr0vN30FEtUX3IEJlUclBPAnzxUP0?=
 =?us-ascii?Q?TQe6EJ8/CBWOYlxNerLbqoQ815VAjjEZobcw1jCn11iAwDaCeqqtMcxIcEgx?=
 =?us-ascii?Q?vU3fJoa+Lzh9GEDDFQGavULrahgbC9SqZZ1LYrm97E9z/eTWu8wz1g70DKPM?=
 =?us-ascii?Q?BD5grQY9IE2sVKzy7lFaDSxsJ3GzoLtAH5OsjXVho2dPYfUZ09gj/ju94Qdk?=
 =?us-ascii?Q?bxUdsJzlz8Y+REjahgXNkzpUzfezh7KiTDTsPCm289tr90avM9thxKldt8B7?=
 =?us-ascii?Q?EKXI9dtPdubJIJ9TVDFWqpzah1Jz+BE10E4/BpO7/ee+h4yRHWLyVjgWJCfx?=
 =?us-ascii?Q?q9Lm23FoTzgHzV0r/HnX9qf72LD7k+KKACTLYQ=3D=3D?=
X-Forefront-Antispam-Report:
	CIP:4.79.107.243;CTRY:US;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:SJ0PR08CU001.outbound.protection.outlook.com;PTR:mail-sj0pr08cu00104.outbound.protection.outlook.com;CAT:NONE;SFS:(13230040)(36860700016)(1800799024)(376014)(14060799003)(35042699022)(82310400026)(156008)(56012099003)(22082099003)(18002099003);DIR:OUT;SFP:1102;
X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1
X-MS-Exchange-AntiSpam-MessageData-0:
	y6iRlWMwn4VT5gL+q4gxQeo4Zb0HB1xdBkWtcg3LEDx+fe/o+9AdPB33UMZVsyaWJnTc1dAydOr0aE0paot9xTOn06HlcVBk0YQqq+y7Uw2ezrZxg0Atr1AyI7QB7R1ph7g63KVNqKBXvQr52wcG0f4LjL30AlRwsOTgLuThP95diKh8XPlMcsp+gKJ6PAYis8f6JmZPmF/YjPxYMQh//DZ5vNVs2AZqo2ZJjHRDfEyYCQEoMNdEI6XhCqTYcZBN1QY6o5NeRDBLeOwI3Z0fzg9YDrt1x3/nW9mjmuXYOcJkAMCpfvS0w5/xxxkjUrguWVuX0LopORmfvHiRcWKGYyaye6BjFq9f7a6aNu+I1qnxUGX5omKVueER9PIRVzBYfwA/fAdZSyBU/E+SvAn1TMIN6ZYA3hXbsWPZEe7SHxPY4XKSiWk+vcRScOI7SeMT
X-OriginatorOrg: elektrobit.com
X-MS-Exchange-CrossTenant-OriginalArrivalTime: 20 Apr 2026 21:27:39.4765
 (UTC)
X-MS-Exchange-CrossTenant-Network-Message-Id: f019f542-e825-4a2c-dc2b-08de9f23a677
X-MS-Exchange-CrossTenant-Id: e764c36b-012e-4216-910d-8fd16283182d
X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=e764c36b-012e-4216-910d-8fd16283182d;Ip=[4.79.107.243];Helo=[usbth1es003.ebgroup.elektrobit.com]
X-MS-Exchange-CrossTenant-AuthAs: Internal
X-MS-Exchange-CrossTenant-AuthSource: TreatMessagesAsInternal-BL6PEPF0001AB72.namprd02.prod.outlook.com
X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem
X-MS-Exchange-Transport-CrossTenantHeadersStamped: SJ0PR08MB6750
X-purgate-ID: tlsNG-16d1c6/1776720471-CF97CD75-9EAC6CB0/0/0
X-purgate-type: clean
X-purgate-size: 10132

This commit pulls out generic init/teardown functionality out of "p2m_init"
and "p2m_teardown" into "p2m_init_one", "p2m_teardown_one", "p2m_free_one",
and "p2m_flush_table" functions. This allows our future implementation to
reuse existing code for the initialization/teardown of altp2m views.

On failure, the p2m_init_one function returns a null pointer. This means
p2m_init_one doesn't return an error code, which prevents it from
propagating the exact error from p2m_initialise (specifically, ENOMEM if
allocation fails and EBUSY if the VMID pool is exhausted). However,
returning a p2m_domain pointer simplifies usage for callers of
p2m_init_one, as they can receive an allocated and initialized p2m_domain
without needing to handle allocation separately. Therefore, the main
p2m_init function will now return ENOMEM instead of EBUSY when the VMID
pool is exhausted.

This is commit 6/12 of the altp2m_init/altp2m_teardown routines phase.

Signed-off-by: Rose Spangler <Rose.Spangler@elektrobit.com>
Signed-off-by: Sergej Proskurin <proskurin@sec.in.tum.de>
---
Cc: Stefano Stabellini <sstabellini@kernel.org>
Cc: Julien Grall <julien.grall@arm.com>
---
v2: Added the function p2m_flush_table to the previous version.

v3: Removed struct vttbr.

    Moved define INVALID_VTTBR to p2m.h.

    Exported function prototypes of "p2m_flush_table", "p2m_init_one",
    and "p2m_teardown_one" in p2m.h.

    Extended the function "p2m_flush_table" by additionally resetting
    the fields lowest_mapped_gfn and max_mapped_gfn.

    Added a "p2m_flush_tlb" call in "p2m_flush_table". On altp2m reset
    in function "altp2m_reset", it is important to flush the TLBs after
    clearing the root table pages and before clearing the intermediate
    altp2m page tables to prevent illegal access to stalled TLB entries
    on currently active VCPUs.

    Added a check checking whether p2m->root is NULL in p2m_flush_table.

    Renamed the function "p2m_free_one" to "p2m_teardown_one".

    Removed resetting p2m->vttbr in "p2m_teardown_one", as it the p2m
    will be destroyed afterwards.

    Moved call to "p2m_alloc_table" back to "p2m_init_one".

    Moved the introduction of the type p2m_class_t out of this patch.

    Moved the backpointer to the struct domain out of the struct
    p2m_domain.

v4: Replaced the former use of clear_and_clean_page in p2m_flush_table
    by a routine that invalidates every p2m entry atomically. This
    avoids inconsistencies on CPUs that continue to use the views that
    are to be flushed (e.g., see altp2m_reset).

    Removed unnecessary initializations in the functions "p2m_init_one"
    and "p2m_teardown_one".

    Removed the define INVALID_VTTBR as it is not used any more.

    Cosmetic fixes.

v6: Reworked to accommodate the hostp2m being allocated separately from
    arch_domain.

    Split p2m_teardown_one into p2m_teardown_one and p2m_free_one, with
    both having the same semantics as their x86 counterparts.

    The previous version of this patch also added code to p2m_flush_table.
    This has been split out into a separate commit to minimize the number
    of actual changes in this commit.

    Updated to account for the introduction of p2m_final_teardown.  The
    code which previously was used to reclaim resources from the hostp2m
    during p2m_final_teardown was extracted into p2m_free_one. Now,
    p2m_final_teardown will call p2m_free_one on the hostp2m instead. The
    check for whether the p2m was actually initialized was moved into
    p2m_free_one. This means there is a slight behavior change where
    p2m_teardown_allocation will always be called, even if the p2m_domain
    was never initialized. I'm not sure if this is really a big deal (it
    does require the lock to be obtained, but this shouldn't be an issue at
    final teardown?), but if it is then I can duplicate the check from
    p2m_free_one to the top of p2m_final_teardown, which would replicate
    the previous behavior.

    For the sake of making the p2m_init_one function simple to use (and
    match the x86 function prototype), it returns a null pointer on error
    rather than an error code. While on x86 an error from p2m_init_one is
    always due to an ENOMEM return code (from xzalloc, zalloc_cpumask_var),
    on ARM p2m_initialise (called by p2m_init_one) can actually return
    EBUSY if the VMID pool is exhausted. Therefore, in this error case the
    null pointer return value of p2m_init_one obscures the true error code
    (EBUSY). Callers of p2m_init_one always return ENOMEM when p2m_init_one
    returns a null pointer, so this error will be propagated up as ENOMEM
    rather than EBUSY. The alternative to this would be to have callers
    pass a null **p2m_domain to p2m_init_one while still returning an
    integer return code. In order to preserve a common altp2m_init routine,
    this change would also have to be made on x86 (where there wouldn't be
    any real benefit, the return code is truly only ever ENOMEM).
    Therefore, it seems like an acceptable tradeoff to me to obscure the
    error in this case, but if other folks think we should handle this
    differently than I can revisit this.

    The p2m_teardown_allocation call and p2m_init_one return code changes
    mentioned above should be the only actual behavior changes in this
    patch, otherwise it should be just code movement.
---
 xen/arch/arm/include/asm/p2m.h | 12 ++++++
 xen/arch/arm/mmu/p2m.c         | 77 +++++++++++++++++++++++-----------
 2 files changed, 65 insertions(+), 24 deletions(-)

diff --git a/xen/arch/arm/include/asm/p2m.h b/xen/arch/arm/include/asm/p2m.h
index 23df91ea13e9..5c6dfe4a9789 100644
--- a/xen/arch/arm/include/asm/p2m.h
+++ b/xen/arch/arm/include/asm/p2m.h
@@ -216,6 +216,18 @@ int p2m_init(struct domain *d);
 int p2m_teardown(struct domain *d);
 void p2m_final_teardown(struct domain *d);
 
+/* Flushes the page table held by the p2m. */
+int p2m_flush_table(struct p2m_domain *p2m);
+
+/* Initialize the p2m structure. */
+struct p2m_domain *p2m_init_one(struct domain *d);
+
+/* Release resources held by the p2m structure. */
+int p2m_teardown_one(struct p2m_domain *p2m);
+
+/* Free the p2m structure allocation. */
+void p2m_free_one(struct p2m_domain *p2m);
+
 /*
  * Remove mapping refcount on each mapping page in the p2m
  *
diff --git a/xen/arch/arm/mmu/p2m.c b/xen/arch/arm/mmu/p2m.c
index 1009f10e5db4..1d598c66450b 100644
--- a/xen/arch/arm/mmu/p2m.c
+++ b/xen/arch/arm/mmu/p2m.c
@@ -1444,14 +1444,10 @@ static int p2m_alloc_table(struct domain *d)
     return 0;
 }
 
-int p2m_teardown(struct domain *d)
+int p2m_flush_table(struct p2m_domain *p2m)
 {
-    struct p2m_domain *p2m = p2m_get_hostp2m(d);
     unsigned long count = 0;
     struct page_info *pg;
-    int rc = 0;
-
-    p2m_write_lock(p2m);
 
     while ( (pg = page_list_remove_head(&p2m->pages)) )
     {
@@ -1460,23 +1456,34 @@ int p2m_teardown(struct domain *d)
         /* Arbitrarily preempt every 512 iterations */
         if ( !(count % 512) && hypercall_preempt_check() )
         {
-            rc = -ERESTART;
-            break;
+            return -ERESTART;
         }
     }
 
+    return 0;
+}
+
+int p2m_teardown_one(struct p2m_domain *p2m)
+{
+    int rc;
+
+    p2m_write_lock(p2m);
+    rc = p2m_flush_table(p2m);
     p2m_write_unlock(p2m);
 
     return rc;
 }
 
-void p2m_final_teardown(struct domain *d)
+int p2m_teardown(struct domain *d)
 {
     struct p2m_domain *p2m = p2m_get_hostp2m(d);
 
-    /* p2m not actually initialized */
-    if ( !p2m->domain )
-        goto free_p2m;
+    return p2m_teardown_one(p2m);
+}
+
+void p2m_final_teardown(struct domain *d)
+{
+    struct p2m_domain *p2m = p2m_get_hostp2m(d);
 
     /*
      * No need to call relinquish_p2m_mapping() here because
@@ -1484,18 +1491,27 @@ void p2m_final_teardown(struct domain *d)
      * where relinquish_p2m_mapping() has been called.
      */
 
-    ASSERT(page_list_empty(&p2m->pages));
-
     while ( p2m_teardown_allocation(d) == -ERESTART )
         continue; /* No preemption support here */
     ASSERT(page_list_empty(&d->arch.paging.p2m_freelist));
 
+    p2m_free_one(p2m);
+}
+
+void p2m_free_one(struct p2m_domain *p2m)
+{
+    /* p2m not actually initialized */
+    if ( !p2m->domain )
+        goto free_p2m;
+
+    ASSERT(page_list_empty(&p2m->pages));
+
     if ( p2m->root )
         free_domheap_pages(p2m->root, P2M_ROOT_ORDER);
 
     p2m->root = NULL;
 
-    p2m_free_vmid(d);
+    p2m_free_vmid(p2m->domain);
 
     radix_tree_destroy(&p2m->mem_access_settings, NULL);
 
@@ -1511,9 +1527,7 @@ static int p2m_initialise(struct domain *d, struct p2m_domain *p2m)
     unsigned int cpu;
 
     rwlock_init(&p2m->lock);
-    spin_lock_init(&d->arch.paging.lock);
     INIT_PAGE_LIST_HEAD(&p2m->pages);
-    INIT_PAGE_LIST_HEAD(&d->arch.paging.p2m_freelist);
 
     p2m->vmid = INVALID_VMID;
     p2m->max_mapped_gfn = _gfn(0);
@@ -1559,22 +1573,37 @@ static int p2m_initialise(struct domain *d, struct p2m_domain *p2m)
     return 0;
 }
 
-int p2m_init(struct domain *d)
+struct p2m_domain *p2m_init_one(struct domain *d)
 {
     struct p2m_domain *p2m = xzalloc(struct p2m_domain);
-    int rc;
+
+    if ( !p2m )
+        return NULL;
+
+    if ( !p2m_initialise(d, p2m) )
+        return p2m;
+
+    xfree(p2m);
+    return NULL;
+}
+
+static int p2m_init_hostp2m(struct domain *d)
+{
+    struct p2m_domain *p2m = p2m_init_one(d);
 
     if ( !p2m )
         return -ENOMEM;
 
-    rc = p2m_initialise(d, p2m);
+    d->arch.p2m = p2m;
+    return 0;
+}
 
-    if ( !rc )
-        d->arch.p2m = p2m;
-    else
-        xfree(p2m);
+int p2m_init(struct domain *d)
+{
+    spin_lock_init(&d->arch.paging.lock);
+    INIT_PAGE_LIST_HEAD(&d->arch.paging.p2m_freelist);
 
-    return rc;
+    return p2m_init_hostp2m(d);
 }
 
 /*
-- 
2.34.1



From xen-devel-bounces@lists.xenproject.org Mon Apr 20 21:28:00 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 20 Apr 2026 21:28:00 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1287549.1568026 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wEw9w-0005hn-4U; Mon, 20 Apr 2026 21:28:00 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1287549.1568026; Mon, 20 Apr 2026 21:27: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 1wEw9v-0005bJ-6i; Mon, 20 Apr 2026 21:27:59 +0000
Received: by outflank-mailman (input) for mailman id 1287549;
 Mon, 20 Apr 2026 21:27:56 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <Rose.Spangler@elektrobit.com>) id 1wEw9r-00056Q-Nv
 for xen-devel@lists.xenproject.org; Mon, 20 Apr 2026 21:27:55 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wEw9r-00CBiW-4R
 for xen-devel@lists.xenproject.org; Mon, 20 Apr 2026 23:27:55 +0200
Received: from [10.42.69.7] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <Rose.Spangler@elektrobit.com>)
 id 69e69a14-e002-0a2a0a5209dd-0a2a4507df78-46
 for <xen-devel@lists.xenproject.org>; Mon, 20 Apr 2026 23:27:55 +0200
Received: from [40.107.201.88]
 (helo=CH4PR04CU002.outbound.protection.outlook.com)
 by tlsNG-ef75cf.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.1)
 (envelope-from <Rose.Spangler@elektrobit.com>)
 id 69e69a59-229c-0a2a45070019-286bc958be9a-3
 for <xen-devel@lists.xenproject.org>; Mon, 20 Apr 2026 23:27:54 +0200
Received: from CH2PR12CA0027.namprd12.prod.outlook.com (2603:10b6:610:57::37)
 by CO6PR08MB7723.namprd08.prod.outlook.com (2603:10b6:303:142::16)
 with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9818.32; Mon, 20 Apr
 2026 21:27:46 +0000
Received: from CH1PEPF0000A349.namprd04.prod.outlook.com
 (2603:10b6:610:57:cafe::c3) by CH2PR12CA0027.outlook.office365.com
 (2603:10b6:610:57::37) with Microsoft SMTP Server (version=TLS1_3,
 cipher=TLS_AES_256_GCM_SHA384) id 15.20.9791.48 via Frontend Transport; Mon,
 20 Apr 2026 21:27:46 +0000
Received: from usbth1es003.ebgroup.elektrobit.com (4.79.107.243) by
 CH1PEPF0000A349.mail.protection.outlook.com (10.167.244.9) with Microsoft
 SMTP Server (version=TLS1_3, cipher=TLS_AES_256_GCM_SHA384) id 15.20.9791.48
 via Frontend Transport; Mon, 20 Apr 2026 21:27:45 +0000
Received: from usbth1es003 (localhost [127.0.0.1])
 by usbth1es003.ebgroup.elektrobit.com (Postfix) with SMTP id 4fzz9D6tqLz1wdP; 
 Mon, 20 Apr 2026 14:27:44 -0700 (PDT)
Received: from BL0PR07CU001.outbound.protection.outlook.com
 (mail-bl0pr07cu00105.outbound.protection.outlook.com [40.93.4.5])
 (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)
 key-exchange secp384r1) (No client certificate requested)
 by usbth1es003.ebgroup.elektrobit.com (Postfix) with ESMTPS;
 Mon, 20 Apr 2026 14:27:44 -0700 (PDT)
Received: from CH0PR03CA0400.namprd03.prod.outlook.com (2603:10b6:610:11b::20)
 by CO1PR08MB7658.namprd08.prod.outlook.com (2603:10b6:303:155::10)
 with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9818.33; Mon, 20 Apr
 2026 21:27:39 +0000
Received: from CH2PEPF0000009E.namprd02.prod.outlook.com
 (2603:10b6:610:11b:cafe::a7) by CH0PR03CA0400.outlook.office365.com
 (2603:10b6:610:11b::20) with Microsoft SMTP Server (version=TLS1_3,
 cipher=TLS_AES_256_GCM_SHA384) id 15.20.9791.48 via Frontend Transport; Mon,
 20 Apr 2026 21:27:39 +0000
Received: from denue6es012.ebgroup.elektrobit.com (213.95.148.172) by
 CH2PEPF0000009E.mail.protection.outlook.com (10.167.244.27) with Microsoft
 SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id
 15.20.9791.48 via Frontend Transport; Mon, 20 Apr 2026 21:27:38 +0000
Received: from ubuntu.localdomain (10.10.178.50) by
 denue6es012.ebgroup.elektrobit.com (10.243.160.140) with Microsoft SMTP
 Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id
 15.2.2562.35; Mon, 20 Apr 2026 23:27:36 +0200
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@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=elektrobit.com header.i="@elektrobit.com" header.h="From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck"; dkim=pass header.s=selector1 header.d=elektrobit.com header.i="@elektrobit.com" header.h="From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck"
ARC-Seal: i=2; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=pass;
 b=H7SV03f08kK2XzJkhid5Ds+IvVYoCGRbLDSYxI2H1k6DuzwNf1HYz/7GaNgDNoKNaDvwjK9i7MyFB34dLVEgUg+og9CRDHCSp1/KcS3x1NehZFU7B2idYLMEOjOZejbIMw5EARM5VAXp/aIDdwoJjKBrY0YWN7c09rtSZp8bUMmF9loaHBTGLMhXXH1Q76oLkLRWATlFtFHPAeM1CA4cWVMXc6MjAhVweMbsKpwaQWUAMcvfnZQAmamazlTj0lMZy0r0ZqL8SK/K6FMdlVv8QPDN+ssJ4h62g/8Uyh3/s1MMztthgCfyfxjZ+FgMrl6j21KysYNTH+xoUv6WqkDlLg==
ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com;
 s=arcselector10001;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1;
 bh=YyF2sek1Gl4M2bt+N59A0D5zPi4VE0N2VV6Dzby1vi0=;
 b=ZR7HK7/5eYB9cpyRO35Pv16yPIwIPuowG7fFbAtBlvbS9kNfBzp4jH0cY7scBw7P9Ib1YXKjoSuNOdxxH51CbyC+5bngyETgi+D9G8sJjP34Rnt3ZVmWbR5gvobDhvc8YjmhPF53gRgMtZnsrxqp25WZxbzV4KPFtIkDR0FM2xJlR+d/LV9Y7VLepz2nKigfxqzqqzjWxbLznJB4kXqNVfPyHvIGFOkZrBJ3jDakVeK9oRHIUCMTOlKZtFxnP1rPLp6dFoBNr02XJX4Ut5PzVnc0jGSYVPgqJJUjom4DvXD2wyq/Ydesk/GKOK3g0knGM4eLZ0qqmGqletmtRsy1sg==
ARC-Authentication-Results: i=2; mx.microsoft.com 1; spf=pass (sender ip is
 40.93.4.5) smtp.rcpttodomain=amd.com smtp.mailfrom=elektrobit.com; dmarc=pass
 (p=quarantine sp=none pct=100) action=none header.from=elektrobit.com;
 dkim=pass (signature was verified) header.d=elektrobit.com; arc=pass (0 oda=1
 ltdi=1 spf=[1,1,smtp.mailfrom=elektrobit.com]
 dmarc=[1,1,header.from=elektrobit.com])
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=elektrobit.com;
 s=selector1;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck;
 bh=YyF2sek1Gl4M2bt+N59A0D5zPi4VE0N2VV6Dzby1vi0=;
 b=fEXngpMFWyvPxa40MORkZ32aWI8IRzG1tFllkvDdBAVYLaJMmwFrXNsVO6NbSrz1O/XuvsMbFZ5DssD7uvxB6h/IfTCbz1RmIdg2vaW/QSJZUpfO1A3DeuNuYTlDbhbvdbgLwUoam2hJ3rcla/5javpVSMLkTG1q1DOF/SGn+YI=
X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 40.93.4.5)
 smtp.mailfrom=elektrobit.com; dkim=pass (signature was verified)
 header.d=elektrobit.com;dmarc=pass action=none header.from=elektrobit.com;
Received-SPF: Pass (protection.outlook.com: domain of elektrobit.com
 designates 40.93.4.5 as permitted sender) receiver=protection.outlook.com;
 client-ip=40.93.4.5; helo=BL0PR07CU001.outbound.protection.outlook.com; pr=C
ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none;
 b=CcyWoIfWdeUHJCx8PWiHh1LhwZLdR7qLVYhpiuJTcMZlVHDGonmDd4UUBrFaao0h5xnrRHy945zMDCkbSHO+RtB+xYdOWlMucT2oPjwS+Xefrj2UKIjuX7c3aCKPLqGGOYFQNwelIv7qzCdiKljv1MZA8+aykFNGyhpyBD2IPoMVzOyAHm+a4E5p+Voskjnz8vSxUCsPOdyXwMDTOZk7wD5eYhzV41EOaR9NTf2pedKxe/GLzMzvsJPJT1iO/mVGGOF1meKatlO6uPyv9S0U8BTLlza6s9TQxMRP1cHpQCtSVCUJqnSO+fzzSWSWKiiLAMvdbRfaCuOuZZ/3pRWiTQ==
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com;
 s=arcselector10001;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1;
 bh=YyF2sek1Gl4M2bt+N59A0D5zPi4VE0N2VV6Dzby1vi0=;
 b=QIhG8FtQaXtxqV4rIqTnL5JlJgMAIqSM/0MixCPKXMtq19o1jqiM0ALTOKKpkOY+u2BwvmeOug9bYzl2G5M91NUaIm+h2DxSeDgefoeA3yhsBkRlBqrY4MQfkCQHHVHgTso7HWsB2z+unMkQXK5JmKW4p3yimSDQS8DAxIJtHNisWZlghDXvFIpZ5/5QyziWAeuMh7WVncF00x/HKUF0Pa/ndOI98BGIzMaZqJnfIyZ+JYZ05ZP92vR2T3W6POa3C8ZKQKNNiNFEwUlYU+BwQLE/9E6aNU77izlrzylJZNz6NWqMZnSwTjed4zxNP11cksRoNOi077M9+7Nk6YqImw==
ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass (sender ip is
 213.95.148.172) smtp.rcpttodomain=lists.xenproject.org
 smtp.mailfrom=elektrobit.com; dmarc=pass (p=quarantine sp=none pct=100)
 action=none header.from=elektrobit.com; dkim=none (message not signed);
 arc=none (0)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=elektrobit.com;
 s=selector1;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck;
 bh=YyF2sek1Gl4M2bt+N59A0D5zPi4VE0N2VV6Dzby1vi0=;
 b=fEXngpMFWyvPxa40MORkZ32aWI8IRzG1tFllkvDdBAVYLaJMmwFrXNsVO6NbSrz1O/XuvsMbFZ5DssD7uvxB6h/IfTCbz1RmIdg2vaW/QSJZUpfO1A3DeuNuYTlDbhbvdbgLwUoam2hJ3rcla/5javpVSMLkTG1q1DOF/SGn+YI=
X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 213.95.148.172)
 smtp.mailfrom=elektrobit.com; dkim=none (message not signed)
 header.d=none;dmarc=pass action=none header.from=elektrobit.com;
Received-SPF: Pass (protection.outlook.com: domain of elektrobit.com
 designates 213.95.148.172 as permitted sender)
 receiver=protection.outlook.com; client-ip=213.95.148.172;
 helo=denue6es012.ebgroup.elektrobit.com; pr=C
From: Rose Spangler <Rose.Spangler@elektrobit.com>
To: <xen-devel@lists.xenproject.org>
CC: Rose Spangler <Rose.Spangler@elektrobit.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>, Sergej Proskurin
	<proskurin@sec.in.tum.de>
Subject: [RFC PATCH v6 25/43] arm/altp2m: Add altp2m index to arch_vcpu
Date: Mon, 20 Apr 2026 17:26:30 -0400
Message-ID: <20260420212648.208640-18-Rose.Spangler@elektrobit.com>
X-Mailer: git-send-email 2.34.1
In-Reply-To: <20260420212648.208640-1-Rose.Spangler@elektrobit.com>
References: <20260420212648.208640-1-Rose.Spangler@elektrobit.com>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit
Content-Type: text/plain
X-Originating-IP: [10.10.178.50]
X-ClientProxiedBy: denue6es013.ebgroup.elektrobit.com (10.243.160.141) To
 denue6es012.ebgroup.elektrobit.com (10.243.160.140)
X-EOPAttributedMessage: 1
X-MS-Exchange-SkipListedInternetSender:
 ip=[213.95.148.172];domain=denue6es012.ebgroup.elektrobit.com
X-MS-TrafficTypeDiagnostic:
	CH2PEPF0000009E:EE_|CO1PR08MB7658:EE_|CH1PEPF0000A349:EE_|CO6PR08MB7723:EE_
X-MS-Office365-Filtering-Correlation-Id: 0e2a061c-4f8f-4b3a-4890-08de9f23aa2a
X-SM-outgoing: yes
X-MS-Exchange-SenderADCheck: 1
X-MS-Exchange-AntiSpam-Relay: 0
X-Microsoft-Antispam-Untrusted:
 BCL:0;ARA:13230040|82310400026|36860700016|376014|1800799024|56012099003|22082099003|18002099003;
X-Microsoft-Antispam-Message-Info-Original:
 =?us-ascii?Q?CSNHU8JPJoFKIzEefW8GBjHlk5fHFH2lK0p7TMno0Kue/SRkP1It5zC/zMtw?=
 =?us-ascii?Q?yuyIYHyhrchSWvVZX780RwfsFFz3RoVqs7RhwSj6bvhIDirjL06YXSpae5Pe?=
 =?us-ascii?Q?bwa2xMz6j/pHcYbw2lIRrt0rSRXQBtKsXL3NfosGMUI1780LdBeYPMy6As7D?=
 =?us-ascii?Q?1RsH32nHnz0OwbWZyb02hUeQtfUaWGsh7XKnEkLuZ9vx4z4mtxa78n63rB2p?=
 =?us-ascii?Q?3mOoxPgLyX5hdu3gmMzajz6ASDdsOmFIDZ/JLzexsp1pxUVTy+kGTAxUahyh?=
 =?us-ascii?Q?UOK/b4ZY4/kvwa4XyFBP4EZd4UQ9UybSMv0yxsuJhqmIaBKvYql9F86oVRwG?=
 =?us-ascii?Q?SpEs0du9FldNvE+HnhQchk96/k7q/PwdXUOP8CxRbgDxRDHERrKJybZ1tdMC?=
 =?us-ascii?Q?UN75bdXup0XKsfKVkHg7+dl+z1tSE29ILIkqoQ/4ps9q4eRWxGRm625J9TrJ?=
 =?us-ascii?Q?AZ4sZkeL6BX07Nf9fSJUGxZeNh4F9eTFwtjBavBprfPFDisMn57wO40KaVQ9?=
 =?us-ascii?Q?VvCZyuWcw1MuBZyeZs9L+irykMzTRw8APM35TRNWKQ9bGXk5Ubt9Da5G14Hv?=
 =?us-ascii?Q?dyFtwaBkhEMpNsrwbur/clv6u1Aa20a7ijnWGygLVnow244vWMGIZrow8MTA?=
 =?us-ascii?Q?QyNpP4DzJ1bS7q+4k7TVmSP8aGWTv96xBBkXOnDgaidz4SfgLI1wLMUznipY?=
 =?us-ascii?Q?88Z/u6gMY179xzgnqQmJLT8Z8u9hO0AGNZNzbaCO/JPlBYJHeRIdAViyMjHj?=
 =?us-ascii?Q?G6H4nStnNqU/VOxcqF2xFCaaEP/uG0E+wyErrz4788wT4vqY2Z4JD8zHcUa4?=
 =?us-ascii?Q?tVBfasnQnzUR8fYmIaUgq4ehU1qErqk+gC/SO/mgaJBSaGWWMJVUGu3Jp0yC?=
 =?us-ascii?Q?NbqZ5OdIgSgAqwm/kXVgUXwKzur8myuHTof0sZL1ZnF35kaJuBPF0BHXILMX?=
 =?us-ascii?Q?mWz0HR3Ep8+gPfma5/n0zQxK4bLlelfI6pOkPCyUOr2cWPXDTcJxmevzsCbA?=
 =?us-ascii?Q?jcu3qj7BlKRM+cJhoTPvUEKhtB19F+m2kL82ePWDxRnejYOUuy4KWmn8Ls9O?=
 =?us-ascii?Q?JrCqtnE7YTS3t3KYWiwlPmL6ItyMjju90y2z+Pz5ZX68gCp7T2DX7mtkz/pZ?=
 =?us-ascii?Q?8AdnR97Hzq+WpIEb8OM5OrRPf1vk5st9LisjtL0RZ8XWySN7vI/FNKjBv9Zq?=
 =?us-ascii?Q?X0VlXszLoAx9q9Dq?=
X-Forefront-Antispam-Report-Untrusted:
 CIP:213.95.148.172;CTRY:DE;LANG:en;SCL:1;SRV:;IPV:CAL;SFV:NSPM;H:denue6es012.ebgroup.elektrobit.com;PTR:eth1-fw1-nbg6.eb.noris.de;CAT:NONE;SFS:(13230040)(82310400026)(36860700016)(376014)(1800799024)(56012099003)(22082099003)(18002099003);DIR:OUT;SFP:1102;
X-Exchange-RoutingPolicyChecked:
 FfqmWgE+G+nA/ROA3h1ZWZDby43IsCtWoRY9Cr2SmCHPfB+C8DLO/FvnY9TUye+kKPeSgZCk2qNNLDzXlr7Du0aIE2dQvnQIlP2XGBoNT0s4Ts/X7lP5cWkEpovZcA6FvV+O0mV7mvypqUmlq9BK8Q4J1WnBo55Uce+R9lOCKo7EfA320s0X/qjPS5ji7o94UjLb3u5BRCgelG65F2rt10cyMHwoUTIYkzk8hlSO5orPvqGYyUinWzP6PnAIgd2ROywRPSY9Q6Ur+zWPIF+ytcZfhuy5kS1rT3hGQl7YP+SMy7JZUd5G/LzEWedp6BbEgVkuiFlYS2DvwY4q6Ddn+w==
X-MS-Exchange-Transport-CrossTenantHeadersStamped: CO1PR08MB7658
X-MS-Exchange-SkipListedInternetSender:
 ip=[40.93.4.5];domain=BL0PR07CU001.outbound.protection.outlook.com
X-MS-Exchange-ExternalOriginalInternetSender:
 ip=[40.93.4.5];domain=BL0PR07CU001.outbound.protection.outlook.com
X-MS-Exchange-Transport-CrossTenantHeadersStripped:
 CH1PEPF0000A349.namprd04.prod.outlook.com
X-MS-PublicTrafficType: Email
X-MS-Office365-Filtering-Correlation-Id-Prvs:
	d2e84f16-91e5-4509-db6b-08de9f23a613
X-Microsoft-Antispam:
	BCL:0;ARA:13230040|82310400026|14060799003|35042699022|156008|36860700016|376014|1800799024|56012099003|22082099003|18002099003;
X-Microsoft-Antispam-Message-Info:
	=?us-ascii?Q?NQ41/W//Y40oYtRTOd2oCqFkQNcBg9bXlSxfnFOBIHWFHL4ikDlewMfzmdI9?=
 =?us-ascii?Q?HtCqDfyB+R09zi6Zmpyokz3T8mQVYvgPM0VwsTi5IE90Cq1mL0OvSlOcsd3M?=
 =?us-ascii?Q?xGQa9eYYzCg/ha3qyLlnNmrEnkYqcPJjWf5trnxXXFgKJ51Sk/qQi+4qH3Ll?=
 =?us-ascii?Q?x5y1Ly58ZCa/GnR4yfek1vXystw1svSA3i7K/biPjzQ5KxQ+PKvMUi6OO2gi?=
 =?us-ascii?Q?h5ijtTMyWg9/8IDuSI+hFImmvHNGi2aMKLWzAEeggz2x7HtSlQEoBb/7CEon?=
 =?us-ascii?Q?+oLmQOEhjtf1TuHXLltdd7ts6krrsoC7kG+lKY+0zR1Pxaeul7zhYiiQztv8?=
 =?us-ascii?Q?FdbzQ6Spigf4zJJBV81uQoc+2K6uLLHcI9jiTOgo3uI4Oi8LxOdtrjCVWZRA?=
 =?us-ascii?Q?C8V0dc0QqClvx+w47fLoaqyJlt02Cl9wxEAY/cBtCky//MS6MTp7WRm3in3w?=
 =?us-ascii?Q?yx2R5vYSFsi5kphLGVNnFrVMTMCcmysHXrQo/TVGQ3VKSsjudLqbCC0rED3L?=
 =?us-ascii?Q?6urFRs43LVhxgihahjCCIM/eyons5FDFMefdY49Wdp1xRGxShDxKPJZkWjQ2?=
 =?us-ascii?Q?xPmtBejn9kP0Hcl0nl7iq0gjyXlxDHUzZkDVTrB6SFoQ1tqNYnxqTUp+ZWe9?=
 =?us-ascii?Q?DJsdiCLNOQXL6r7aHajoO9Ez97cOsROg4iNpwqS0tbRr4brnLpF+CHkbsEnU?=
 =?us-ascii?Q?nW47AYRm/KMkRi2XAhEeU/HbIuO4+O+w7UucY6IMHv4fmTTG+ti+OlNBHflL?=
 =?us-ascii?Q?m3TR0p3XJ+u4mT3U3QvPG1U7C7j7Rd/golQU8vOYkm04T2fDCNrAraeeJCov?=
 =?us-ascii?Q?e58YBow3cqq1NbZDFv4+ivEqV2J310zOtlKpkBjyvod2NxMkn2ZZk6w908jp?=
 =?us-ascii?Q?YUynxEXuk0PUvHQ5vSnUcn12lAt+0xET9wMe2rLWILg87ZOdHe4v3oiFCiZE?=
 =?us-ascii?Q?O1NuntYzJrVf4/m74XlOfrY8A4FysRU1YhHC0eGLHBb7sPnS1kL3XExgDGyX?=
 =?us-ascii?Q?543E9rZsvParzZOoNUztYfrL6cCbfKA4GQtvIudWOMVyZO1q6e7K1fP7bhrG?=
 =?us-ascii?Q?jWpdSZZ61QFd7U4eKr0iFf5RGEAGXpeUNgu11lWf9mNq3SID0wSQP29AbMj8?=
 =?us-ascii?Q?xjVkoXI0YBp35UT/3Pg7WRMKWrNCtBM7Kv5XSFOo1omzDFyKVEaozqZYVa1b?=
 =?us-ascii?Q?4iq+hTAYDnc+24jz?=
X-Forefront-Antispam-Report:
	CIP:4.79.107.243;CTRY:US;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:BL0PR07CU001.outbound.protection.outlook.com;PTR:mail-bl0pr07cu00105.outbound.protection.outlook.com;CAT:NONE;SFS:(13230040)(82310400026)(14060799003)(35042699022)(156008)(36860700016)(376014)(1800799024)(56012099003)(22082099003)(18002099003);DIR:OUT;SFP:1102;
X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1
X-MS-Exchange-AntiSpam-MessageData-0:
	4IpVoK0al/vOwkHOwhCZkLWZ/jXLkKHws39PqJA9hoVYHQw/weZ+ZbjBR2Fd0mOWuzkjU1J8jLSiIuWrekHN5+lsCJ86OV0hH+8FEDfexDSORqkR1GY57gQsE93rc31wGJuIwM7EE6LGjWEFkOU8BWewTQq27o84zexQ68ZKDUVWTznKcK3OT6dnLwD84iizes3Uu5brwYJVsLpWvQIu/4yAT5D1CoNMY0UPUZAGvZlS8/WU9AE+Ljui+S1wg1Mqi5sQRs1wBh5yJP0kkK42su4iRbTe9T48db/VmPHkzQdwGWLGHDQIK33BPaLVVKrjYO2PrdK1Pv8BmJniXuztExbR+BZDD1j5gUZNoZywq01iZuWj1eQ/G5e6XuTJJPfaMBs79HRTJqxCaG6cahjiTI9VWZ5rVPWrFDksi1S7XuwTa7gBMTLu0xX1wCeDsZ31
X-OriginatorOrg: elektrobit.com
X-MS-Exchange-CrossTenant-OriginalArrivalTime: 20 Apr 2026 21:27:45.7294
 (UTC)
X-MS-Exchange-CrossTenant-Network-Message-Id: 0e2a061c-4f8f-4b3a-4890-08de9f23aa2a
X-MS-Exchange-CrossTenant-Id: e764c36b-012e-4216-910d-8fd16283182d
X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=e764c36b-012e-4216-910d-8fd16283182d;Ip=[4.79.107.243];Helo=[usbth1es003.ebgroup.elektrobit.com]
X-MS-Exchange-CrossTenant-AuthAs: Internal
X-MS-Exchange-CrossTenant-AuthSource: TreatMessagesAsInternal-CH1PEPF0000A349.namprd04.prod.outlook.com
X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem
X-MS-Exchange-Transport-CrossTenantHeadersStamped: CO6PR08MB7723
X-purgate-ID: tlsNG-ef75cf/1776720475-14C54C48-8F61B725/0/0
X-purgate-type: clean
X-purgate-size: 1874

This commit adds ap2m_idx to the VCPU struct on ARM. This makes it possible
to track the current altp2m view being used by a VCPU.

This is commit 2/4 of the altp2m_{get,set}_altp2m phase.

Signed-off-by: Rose Spangler <Rose.Spangler@elektrobit.com>
Signed-off-by: Sergej Proskurin <proskurin@sec.in.tum.de>
---
v6: This patch was originally part of the "arm/p2m: Add
    HVMOP_altp2m_set_domain_state" patch from the v4/v5 patch series.
    It has been extracted into its own commit to make the patch series
    easier to follow. If it would be preferred, this commit can be squashed
    into another commit.

    Added support for the CONFIG_ALTP2M option.
---
 xen/arch/arm/include/asm/altp2m.h | 4 +---
 xen/arch/arm/include/asm/domain.h | 5 +++++
 2 files changed, 6 insertions(+), 3 deletions(-)

diff --git a/xen/arch/arm/include/asm/altp2m.h b/xen/arch/arm/include/asm/altp2m.h
index 5a217f48b103..bc695018e62c 100644
--- a/xen/arch/arm/include/asm/altp2m.h
+++ b/xen/arch/arm/include/asm/altp2m.h
@@ -26,9 +26,7 @@ static inline bool altp2m_supported(void)
 /* Alternate p2m VCPU */
 static inline uint16_t altp2m_vcpu_idx(const struct vcpu *v)
 {
-    /* Not implemented yet */
-    BUG();
-    return 0;
+    return v->arch.ap2m_idx;
 }
 
 #else /* CONFIG_ALTP2M */
diff --git a/xen/arch/arm/include/asm/domain.h b/xen/arch/arm/include/asm/domain.h
index 9e69d62086cd..4d497a21b648 100644
--- a/xen/arch/arm/include/asm/domain.h
+++ b/xen/arch/arm/include/asm/domain.h
@@ -249,6 +249,11 @@ struct arch_vcpu
     struct vtimer virt_timer;
     bool   vtimer_initialized;
 
+#if CONFIG_ALTP2M
+    /* Alternate p2m index */
+    uint16_t ap2m_idx;
+#endif
+
     /*
      * The full P2M may require some cleaning (e.g when emulation
      * set/way). As the action can take a long time, it requires
-- 
2.34.1



From xen-devel-bounces@lists.xenproject.org Mon Apr 20 21:28:03 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 20 Apr 2026 21:28:03 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1287554.1568031 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wEw9y-0006D2-V6; Mon, 20 Apr 2026 21:28:02 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1287554.1568031; Mon, 20 Apr 2026 21:28: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 1wEw9x-00069U-FW; Mon, 20 Apr 2026 21:28:01 +0000
Received: by outflank-mailman (input) for mailman id 1287554;
 Mon, 20 Apr 2026 21:27:57 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <Rose.Spangler@elektrobit.com>) id 1wEw9s-0005ES-Ng
 for xen-devel@lists.xenproject.org; Mon, 20 Apr 2026 21:27:56 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wEw9s-001N4o-3G
 for xen-devel@lists.xenproject.org; Mon, 20 Apr 2026 23:27:56 +0200
Received: from [10.42.69.11] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <Rose.Spangler@elektrobit.com>)
 id 69e69a45-2eae-0a2a0a5409dd-0a2a450beb80-24
 for <xen-devel@lists.xenproject.org>; Mon, 20 Apr 2026 23:27:56 +0200
Received: from [40.93.198.90]
 (helo=CY7PR03CU001.outbound.protection.outlook.com)
 by tlsNG-42698a.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.1)
 (envelope-from <Rose.Spangler@elektrobit.com>)
 id 69e69a5a-212f-0a2a450b0019-285dc65a68d2-3
 for <xen-devel@lists.xenproject.org>; Mon, 20 Apr 2026 23:27:55 +0200
Received: from BN0PR04CA0064.namprd04.prod.outlook.com (2603:10b6:408:ea::9)
 by BN0PR08MB7279.namprd08.prod.outlook.com (2603:10b6:408:14a::14) with
 Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9818.33; Mon, 20 Apr
 2026 21:27:50 +0000
Received: from BN2PEPF000044A5.namprd04.prod.outlook.com
 (2603:10b6:408:ea:cafe::d8) by BN0PR04CA0064.outlook.office365.com
 (2603:10b6:408:ea::9) with Microsoft SMTP Server (version=TLS1_3,
 cipher=TLS_AES_256_GCM_SHA384) id 15.20.9791.48 via Frontend Transport; Mon,
 20 Apr 2026 21:27:50 +0000
Received: from usbth1es003.ebgroup.elektrobit.com (4.79.107.243) by
 BN2PEPF000044A5.mail.protection.outlook.com (10.167.243.104) with Microsoft
 SMTP Server (version=TLS1_3, cipher=TLS_AES_256_GCM_SHA384) id 15.20.9791.48
 via Frontend Transport; Mon, 20 Apr 2026 21:27:49 +0000
Received: from usbth1es003 (localhost [127.0.0.1])
 by usbth1es003.ebgroup.elektrobit.com (Postfix) with SMTP id 4fzz9J5Dgjz1wdV; 
 Mon, 20 Apr 2026 14:27:48 -0700 (PDT)
Received: from CH4PR07CU001.outbound.protection.outlook.com
 (mail-ch4pr07cu00101.outbound.protection.outlook.com [40.93.20.97])
 (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)
 key-exchange secp384r1 server-signature RSA-PSS (2048 bits) server-digest
 SHA256) (No client certificate requested)
 by usbth1es003.ebgroup.elektrobit.com (Postfix) with ESMTPS;
 Mon, 20 Apr 2026 14:27:48 -0700 (PDT)
Received: from CH0PR04CA0018.namprd04.prod.outlook.com (2603:10b6:610:76::23)
 by CH0PR08MB8613.namprd08.prod.outlook.com (2603:10b6:610:183::17)
 with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9818.32; Mon, 20 Apr
 2026 21:27:44 +0000
Received: from CH2PEPF0000009A.namprd02.prod.outlook.com
 (2603:10b6:610:76:cafe::f6) by CH0PR04CA0018.outlook.office365.com
 (2603:10b6:610:76::23) with Microsoft SMTP Server (version=TLS1_3,
 cipher=TLS_AES_256_GCM_SHA384) id 15.20.9791.48 via Frontend Transport; Mon,
 20 Apr 2026 21:27:44 +0000
Received: from denue6es012.ebgroup.elektrobit.com (213.95.148.172) by
 CH2PEPF0000009A.mail.protection.outlook.com (10.167.244.22) with Microsoft
 SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id
 15.20.9791.48 via Frontend Transport; Mon, 20 Apr 2026 21:27:44 +0000
Received: from ubuntu.localdomain (10.10.178.50) by
 denue6es012.ebgroup.elektrobit.com (10.243.160.140) with Microsoft SMTP
 Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id
 15.2.2562.35; Mon, 20 Apr 2026 23:27:41 +0200
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@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=elektrobit.com header.i="@elektrobit.com" header.h="From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck"; dkim=pass header.s=selector1 header.d=elektrobit.com header.i="@elektrobit.com" header.h="From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck"
ARC-Seal: i=2; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=pass;
 b=rhUuKMqadSoC/m/FDl/vnkeqMM37pzUvjs4KajgHH4cK35h4VSA1zPZFrfu6Q9WXiSeSa0yFyxQ9GRlhh0vNZXG+HiPd2EkiuBCmK/GkVyZDVrJMCGrS17zBoud+KywkHXQJDsT+LD5ngTu7XwIMqRDNeReCAMlE8dZWiV+nre5u4GOmOj1TEebKBx7hyzhPXoQtLt6PIwdGWB71Eh36mxYAeEq3+D411zt9gqeC/4WEJmRCvGAILe+dnBH4sPsutRx8KXZ6GyHKC/XeBDYb4UQZMglhlV5yVN0TkNdXQvS2oQ3kWU443XXbFJ0AmsD3IIDlqhmuZ1cVC+C18VkgcA==
ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com;
 s=arcselector10001;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1;
 bh=RlgX5a6AGvq5jH49n4U+x4WcIr+mTwnUzMyljWt2R54=;
 b=vgeV2FN5iGinNtMhFvvsJRyI3O8sqt1DrN61s2S2lEqPvahh0nvLJYTY9nIpUK4cvFV7J2BSl+Ahqj5zMygMH0UNnVk32H+JMZPTu+pf0A6spyK3AV53UBR+JITn2eocfcIDkQAs2erLmLZNry7kLdrgf5urziYrUKxsANX0WnQ0Jj50shIb4eMBX2mtqVyrs19L1vD7bb9s6ObLW2iKQ8p2osA+cwKET9NXLz1kQr9X1u8tCFzR0yFblEMbC9HFNmN2DQwPECvM4/2LlmBSz6a7tmkVD0AWEI82R7mK/Q+2Wn80no3nhjL06RH0F7MO4BKX6KTJCD66hOZeTgNDfg==
ARC-Authentication-Results: i=2; mx.microsoft.com 1; spf=pass (sender ip is
 40.93.20.97) smtp.rcpttodomain=amd.com smtp.mailfrom=elektrobit.com;
 dmarc=pass (p=quarantine sp=none pct=100) action=none
 header.from=elektrobit.com; dkim=pass (signature was verified)
 header.d=elektrobit.com; arc=pass (0 oda=1 ltdi=1
 spf=[1,1,smtp.mailfrom=elektrobit.com]
 dmarc=[1,1,header.from=elektrobit.com])
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=elektrobit.com;
 s=selector1;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck;
 bh=RlgX5a6AGvq5jH49n4U+x4WcIr+mTwnUzMyljWt2R54=;
 b=iGclUTifovD1ERJKiem8ScUiNh9r0OiqXEK1eGYbYywProyDFzO9VWU+goA9o4WBMfnwKy7OVBnd+ElNSeqFw6jQzYCURA3+kiwnltMxJbb/0GRxtoUrqf7tA38ZwFO5PSKIcwTT+K89uRyJQuVYwWn5MHwfBzP9GvxcyqBSRuc=
X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 40.93.20.97)
 smtp.mailfrom=elektrobit.com; dkim=pass (signature was verified)
 header.d=elektrobit.com;dmarc=pass action=none header.from=elektrobit.com;
Received-SPF: Pass (protection.outlook.com: domain of elektrobit.com
 designates 40.93.20.97 as permitted sender) receiver=protection.outlook.com;
 client-ip=40.93.20.97; helo=CH4PR07CU001.outbound.protection.outlook.com;
 pr=C
ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none;
 b=kiHyvJyPhUPpJW0xJFynuZcS0VdiVf+sfoz5XKQkrSlad/noyMFhOknVxF6lUT9kLzmlHUtIA1FDq4UGmYynAIbvoqTtLj1r56SWI0Km8GHHYBkaMcB6m9Y3oTNS9cba608lMnCsyScr4yVzcwMXmFNVAL2tz8+/jpFgbWZUBMVyymHBTpprglL35HkymSpw1Iw7Vc/N3u/llORMIIwnVIoPvfv/yzpTd7HhPFRz/MWJxqy/A5WxlCJz7NOOdDfM5/oUmj3PM++OW7aOeeAavAwa98FsanIKzEnMAlwNj4RUEOE+mrBYb+QrdNBnBS0LWH14YIUYFnYghvdKh/5XKQ==
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com;
 s=arcselector10001;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1;
 bh=RlgX5a6AGvq5jH49n4U+x4WcIr+mTwnUzMyljWt2R54=;
 b=qqi/7/bp+gdUjehPqCVIlzAL3CC61xNG6I+nCO5cSrjTYbwIL50nCdpSrR0MzniKpALEbIDKNsTzTNUKCrY96lOvqTgc/jnV7liZfpc91hz0XrSDC23I4FFrj+C+AFgN/DEZhDyv2XoWZkcUOY4oosu8jYjKOGHUdSNrG6HAONcp5Vxy1Q3DXdH4oaMc8fTF+PCIkI1chGRcdkHjo4IHZWHOxVxHEi6OfxDUwXdbsh4oxCVaJzRTADt0SW40UmrWT0FWhAtPKfCanERChSVRAfgwZE2sTctd62QgcBWQjEjwpmJURworqg1dBT2wVfiIkSMmx1rkh8BIJPhM5QceiA==
ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass (sender ip is
 213.95.148.172) smtp.rcpttodomain=lists.xenproject.org
 smtp.mailfrom=elektrobit.com; dmarc=pass (p=quarantine sp=none pct=100)
 action=none header.from=elektrobit.com; dkim=none (message not signed);
 arc=none (0)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=elektrobit.com;
 s=selector1;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck;
 bh=RlgX5a6AGvq5jH49n4U+x4WcIr+mTwnUzMyljWt2R54=;
 b=iGclUTifovD1ERJKiem8ScUiNh9r0OiqXEK1eGYbYywProyDFzO9VWU+goA9o4WBMfnwKy7OVBnd+ElNSeqFw6jQzYCURA3+kiwnltMxJbb/0GRxtoUrqf7tA38ZwFO5PSKIcwTT+K89uRyJQuVYwWn5MHwfBzP9GvxcyqBSRuc=
X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 213.95.148.172)
 smtp.mailfrom=elektrobit.com; dkim=none (message not signed)
 header.d=none;dmarc=pass action=none header.from=elektrobit.com;
Received-SPF: Pass (protection.outlook.com: domain of elektrobit.com
 designates 213.95.148.172 as permitted sender)
 receiver=protection.outlook.com; client-ip=213.95.148.172;
 helo=denue6es012.ebgroup.elektrobit.com; pr=C
From: Rose Spangler <Rose.Spangler@elektrobit.com>
To: <xen-devel@lists.xenproject.org>
CC: Rose Spangler <Rose.Spangler@elektrobit.com>, Jan Beulich
	<jbeulich@suse.com>, Andrew Cooper <andrew.cooper3@citrix.com>,
	=?UTF-8?q?Roger=20Pau=20Monn=C3=A9?= <roger.pau@citrix.com>, 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: [RFC PATCH v6 28/43] altp2m: Move altp2m_vcpu_{initialise,destroy} to common code
Date: Mon, 20 Apr 2026 17:26:33 -0400
Message-ID: <20260420212648.208640-21-Rose.Spangler@elektrobit.com>
X-Mailer: git-send-email 2.34.1
In-Reply-To: <20260420212648.208640-1-Rose.Spangler@elektrobit.com>
References: <20260420212648.208640-1-Rose.Spangler@elektrobit.com>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit
Content-Type: text/plain
X-Originating-IP: [10.10.178.50]
X-ClientProxiedBy: denue6es013.ebgroup.elektrobit.com (10.243.160.141) To
 denue6es012.ebgroup.elektrobit.com (10.243.160.140)
X-EOPAttributedMessage: 1
X-MS-Exchange-SkipListedInternetSender:
 ip=[213.95.148.172];domain=denue6es012.ebgroup.elektrobit.com
X-MS-TrafficTypeDiagnostic:
	CH2PEPF0000009A:EE_|CH0PR08MB8613:EE_|BN2PEPF000044A5:EE_|BN0PR08MB7279:EE_
X-MS-Office365-Filtering-Correlation-Id: f162b90d-7a6b-4d40-f418-08de9f23ac79
X-SM-outgoing: yes
X-MS-Exchange-SenderADCheck: 1
X-MS-Exchange-AntiSpam-Relay: 0
X-Microsoft-Antispam-Untrusted:
 BCL:0;ARA:13230040|82310400026|36860700016|376014|1800799024|22082099003|56012099003|18002099003;
X-Microsoft-Antispam-Message-Info-Original:
 =?us-ascii?Q?SoK9NUicUqlp61XjdM5C5uLZorZ+Q+qCXd/p070HpFcEE2q+pBM8G55c47Xh?=
 =?us-ascii?Q?rnCbfkntDrQAxjFJPfz1jjlBi8ikyqhpmYEdK9qPwbetqi04dSuEMnzx+t/G?=
 =?us-ascii?Q?XZhqNWA/yJNRSJ0aaqraLVsAPkWBC6dOL27l2Rlf/8WtUnnEtL7BYvI8KTAm?=
 =?us-ascii?Q?pB4XmYKZUGtfoJnCGd+rkSLK0ss1sARB1UOBlYoE9Wpzh86IsOSEbXtU6Cyp?=
 =?us-ascii?Q?L4GOymdKCEUd1mCO0d0N9AbibfsN+x/sKHr3GqqiLO62YB26MLpRk3hTnH5X?=
 =?us-ascii?Q?NxTriJDZs+TFPApgq5v/I/mVSnmYznyvb3ZZrUD/AgdWQQ8pYlLO54ATxpZQ?=
 =?us-ascii?Q?/nUsfvMZycRbauxW7X10bIgS/0h5h7bnRKqxjxgCE/UJwQWKAqJCHDFKk+Tx?=
 =?us-ascii?Q?Y6OVMQveg11T9NZIiYXih7+9a/ruEM0L0TDhUqqAqErC6F8aZmDUZOQT0guF?=
 =?us-ascii?Q?WJqauJFmh0wO+dCuuJ2OpJBXfoczLMo1SKyuYyjkMRrR1nctAOJvnXiICwBI?=
 =?us-ascii?Q?R6uoPjjGpMg4+sam95SaeNS6c1LSSC/ZIuHmqiOztfjZKK4nx4HOSL0FwQ6x?=
 =?us-ascii?Q?j9JHUjd5i3s9lugs2eMoZBX7j2lxSAjJxLhfBLX+tMIajdTz86Fp4wPBiNar?=
 =?us-ascii?Q?NObt8ixJN5xLO4e7nryIqcdZcpsZ3/eVAfdS4cOYFFqtmc4CwLS4uNo/gud6?=
 =?us-ascii?Q?8Sbt0A5thUX6bVgyNXC4QdrrHx32K0xxmpsKCKJ18ExGfcdwJQQl/PCpeYgW?=
 =?us-ascii?Q?l9AbWvGl9a9HkgKLrJ/2tGdYbw7flwxknmKJItZmzkMXX8e/j22SK4yvHw/s?=
 =?us-ascii?Q?OI0bWXAzdmZaGDsoHq3NP5uMkXA5w1B6V5bPdJEF1+Ssvn0+chSf1nTOTDZm?=
 =?us-ascii?Q?z5JHSIGr7tUvjIa/B8uLz6hfe4bYq1k3LtW3dbs95iN8QlMXo2OrkWHLp87/?=
 =?us-ascii?Q?ff1FNDx86hdsjnLCGPVCjVMXZ30+BnuVHkAVEcJkX8rVuRhpr8KswnaeEajd?=
 =?us-ascii?Q?nsrztKT8mUSM0TkzRp1GEWYKNA/JINjCZatXAjpOLN+UU/RHiVdMylR5O0VO?=
 =?us-ascii?Q?AFyOaCjSq/qFkreSQue28QhUvVPX30qHy47BIzBlkxBq6tfa5t/fmpKkmlbG?=
 =?us-ascii?Q?vjTseW0Ue9wTHxGQbfh+k4/CqfONT680CUBqV8sztGwQyw+shh7RNJlRrk0Y?=
 =?us-ascii?Q?DJnj4LLqJjvCPK0q?=
X-Forefront-Antispam-Report-Untrusted:
 CIP:213.95.148.172;CTRY:DE;LANG:en;SCL:1;SRV:;IPV:CAL;SFV:NSPM;H:denue6es012.ebgroup.elektrobit.com;PTR:eth1-fw1-nbg6.eb.noris.de;CAT:NONE;SFS:(13230040)(82310400026)(36860700016)(376014)(1800799024)(22082099003)(56012099003)(18002099003);DIR:OUT;SFP:1102;
X-Exchange-RoutingPolicyChecked:
 Tug6/TmI0O5BxySIrtAuXEd4sHAuayqfcf7cJ0f0u0Mvy4cAsuUdgmwTxkH1r8NwAAnOrzBHyLFGll0psmDaEnA8u3TCBRnBi/F3ikQ2fmgm+2DBbVcqKuizFOiB+cqfLp3e09PxdSKDqq4+EIUqrka+1qGWPKQR5CdB3ooMSZSXs9Sz3uVCx7CjROzDX025ThGMncLb2iZW93d13insocvi8yoYii/rIGCnHMYLJ3OtvvKNDyAx3CblUl45IfxOmaZwX1B0tQGD5f7uysbai1dlxIycahaiFsB9iEWPAUdroxeUoLHy48nbu6HYedStpI81kO7UjN1ODbjo/FnQlw==
X-MS-Exchange-Transport-CrossTenantHeadersStamped: CH0PR08MB8613
X-MS-Exchange-SkipListedInternetSender:
 ip=[40.93.20.97];domain=CH4PR07CU001.outbound.protection.outlook.com
X-MS-Exchange-ExternalOriginalInternetSender:
 ip=[40.93.20.97];domain=CH4PR07CU001.outbound.protection.outlook.com
X-MS-Exchange-Transport-CrossTenantHeadersStripped:
 BN2PEPF000044A5.namprd04.prod.outlook.com
X-MS-PublicTrafficType: Email
X-MS-Office365-Filtering-Correlation-Id-Prvs:
	817d1564-55bd-46e1-e183-08de9f23a965
X-Microsoft-Antispam:
	BCL:0;ARA:13230040|82310400026|14060799003|156008|35042699022|36860700016|376014|1800799024|56012099003|22082099003|18002099003;
X-Microsoft-Antispam-Message-Info:
	=?us-ascii?Q?oDYwVTTW+2yRf8d99qsRfVulY5NWCOmJgQb1GQLRQ08+j54vpou8pnnHdQQD?=
 =?us-ascii?Q?3JAY4EXvejHU665RVhxVujkJo8xfthbpQvuNcWUuOveKQ37sbuTbWB453VO2?=
 =?us-ascii?Q?Nd1Fl40Vtetds0gHiwCI5Q9m5+wTAvb3Tg92j4kDcSfdlhpsJ5fhcm7r984C?=
 =?us-ascii?Q?MPXBRD4/YKUDUqve05vlcY0C5HtHfcyuW1haH5UpKTcPhP5nUvI0Rt8dAVcO?=
 =?us-ascii?Q?2iL3XCKM450EoWzQdVvm2bjKYXSEc0WCYHdXLGagueGKRj+L0QwmX2idOzNp?=
 =?us-ascii?Q?EXs3GzWG1dJbMBXfdYihPm6Ehb6qy8GC1GXIm7VIHZcRByyj4xOsAYyKZ8Ur?=
 =?us-ascii?Q?S106Ng8vEwQ01WVruFfF7azW7TIxMHJ69Ima2Px1S1rIDkgxziI113BL93d8?=
 =?us-ascii?Q?06+z0ehZsPC8qsaeCxvlxDQ2TKklvO3Zl6TiC+xDv8Foiy2MwU8yhQlx0BDu?=
 =?us-ascii?Q?ZnA97YVY76vxIPPUKNK028CPHddBqtCoyzpV16gLvNHzE22I2Lg6qutzF6Y2?=
 =?us-ascii?Q?9OiM/jnC9LfcmMYqEueTZ+9DkzNDU2fCAVukWZIbqg2Wkzy/pJsCnwB2oohd?=
 =?us-ascii?Q?ESjhmSCTKTEcotolPGH7antlYM+vnJ+hvt4l9iFKvJncGaAZW9lffPrJntEd?=
 =?us-ascii?Q?6R2e/9S/pyzKYE0HRb0KTPHdm+i2QUt0qzE7ickHd3nU2Flf7rxuW7ELLzBw?=
 =?us-ascii?Q?rPn6OZj7HlxCt4xzGTsHuJ/4234ONfInLY0zcJdQNdO5IaepSSC2krjzisyA?=
 =?us-ascii?Q?jI4HSGtTb3UL+6N1pyPgnM9TuEzT3BoXEwneYM8yZgFcDKuzLaXpYBJ1e8JO?=
 =?us-ascii?Q?TK4Scbg08r+6kWFEl2elmS/yqitoIBT87vpYEd2dLeOW4wTuSEaQg16LVbHk?=
 =?us-ascii?Q?wKolUrSzqSxRhM1Saj22Ue4d7m+X8M5eD88f9Hx9euFRfacpZmJt55Bv4INU?=
 =?us-ascii?Q?r+ciu0EWiiGhT+6g0RREhVttoRjPa80QZ/sbNe8jhfpQMbPMcZIWz62L423e?=
 =?us-ascii?Q?n0y386cxcnOY+wGSeYJi8XsvPP3SXkApfLmonqKQy9DVLC7Wkk/0NH+L76XK?=
 =?us-ascii?Q?M+MTJF0slcFwOSJ3QetIffmSD5SdKPSIIy7spD9XjscI5UdZgdVSne7bkzEH?=
 =?us-ascii?Q?bdaBU/+rJQhAbfNOtCuLw1FHtqou74cXXZzReuSXCLJB1Hfr7yyg9H1N3ouo?=
 =?us-ascii?Q?EkkUwU8URmdq0eu1?=
X-Forefront-Antispam-Report:
	CIP:4.79.107.243;CTRY:US;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:CH4PR07CU001.outbound.protection.outlook.com;PTR:mail-ch4pr07cu00101.outbound.protection.outlook.com;CAT:NONE;SFS:(13230040)(82310400026)(14060799003)(156008)(35042699022)(36860700016)(376014)(1800799024)(56012099003)(22082099003)(18002099003);DIR:OUT;SFP:1102;
X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1
X-MS-Exchange-AntiSpam-MessageData-0:
	SY6qRok60owZzx8sLllrhyi+l8jGxvOvI0g9+KKkV9c9LlQLpS/sJMWp1MKdzRX8M+SmBHZd6fLUelaT005GzwHcIkK3ONkmbxsZ0PdNDGoodr6W7LgqJoe0lOXLPhgVMerea76HYTh1W2aDr4UgMD6iS/G7y65dsgtROMUa86y3iT1N8W2xvYy/wc1Xjht0vxYKwEoxQFaMlEOVfe9RVCwzkR1mIPLyj+qf+i3NYPJUoB3ovt3B1Jh2vcMMHwVBBz6VEi4FfUr+vlhZV7FbAITKtHq0m8p2S0GY5NcHsNtY8JfJYNLD4UK2IG18NzlN0ZO8sNvENq9cRMBFbJCuQ7DYLQ8I6G1ZBNf23zF1+rGMjDuiH9L8iNs3YIUzRANNVRg9dyhWjbcw4E7ayYCDq1H1VWUX+Vn4jt7zINP2DQ0DUXd3I90kw5OA9c3VqV2+
X-OriginatorOrg: elektrobit.com
X-MS-Exchange-CrossTenant-OriginalArrivalTime: 20 Apr 2026 21:27:49.6147
 (UTC)
X-MS-Exchange-CrossTenant-Network-Message-Id: f162b90d-7a6b-4d40-f418-08de9f23ac79
X-MS-Exchange-CrossTenant-Id: e764c36b-012e-4216-910d-8fd16283182d
X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=e764c36b-012e-4216-910d-8fd16283182d;Ip=[4.79.107.243];Helo=[usbth1es003.ebgroup.elektrobit.com]
X-MS-Exchange-CrossTenant-AuthAs: Internal
X-MS-Exchange-CrossTenant-AuthSource: TreatMessagesAsInternal-BN2PEPF000044A5.namprd04.prod.outlook.com
X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem
X-MS-Exchange-Transport-CrossTenantHeadersStamped: BN0PR08MB7279
X-purgate-ID: tlsNG-42698a/1776720476-05165F3B-34053BB4/0/0
X-purgate-type: clean
X-purgate-size: 4659

This commit moves the altp2m_vcpu_initialise and altp2m_vcpu_destroy
functions to common code. This makes it possible to use them in the common
implementation of HVMOP_altp2m_set_domain_state.

This commit contains only code movement, and no change in functionality is
intended.

This is commit 1/2 of the altp2m_vcpu_{initialise,destroy} phase.

Signed-off-by: Rose Spangler <Rose.Spangler@elektrobit.com>
---
v6: Introduced this patch.
---
 xen/arch/x86/include/asm/altp2m.h |  6 -----
 xen/arch/x86/mm/altp2m.c          | 41 -------------------------------
 xen/common/altp2m.c               | 41 +++++++++++++++++++++++++++++++
 xen/include/xen/altp2m.h          |  6 +++++
 4 files changed, 47 insertions(+), 47 deletions(-)

diff --git a/xen/arch/x86/include/asm/altp2m.h b/xen/arch/x86/include/asm/altp2m.h
index b3d348386a00..43dd5d2acd9c 100644
--- a/xen/arch/x86/include/asm/altp2m.h
+++ b/xen/arch/x86/include/asm/altp2m.h
@@ -105,10 +105,6 @@ int altp2m_get_effective_entry(struct p2m_domain *ap2m, gfn_t gfn, mfn_t *mfn,
                                p2m_type_t *t, p2m_access_t *a,
                                bool prepopulate);
 
-/* Alternate p2m VCPU */
-void altp2m_vcpu_initialise(struct vcpu *v);
-void altp2m_vcpu_destroy(struct vcpu *v);
-
 int altp2m_vcpu_enable_ve(struct vcpu *v, gfn_t gfn);
 void altp2m_vcpu_disable_ve(struct vcpu *v);
 
@@ -151,8 +147,6 @@ static inline int _altp2m_get_effective_entry(struct p2m_domain *ap2m,
 
 /* Only declaration is needed. DCE will optimise it out when linking. */
 uint16_t altp2m_vcpu_idx(const struct vcpu *v);
-void altp2m_vcpu_initialise(struct vcpu *v);
-void altp2m_vcpu_destroy(struct vcpu *v);
 int altp2m_vcpu_enable_ve(struct vcpu *v, gfn_t gfn);
 void altp2m_vcpu_disable_ve(struct vcpu *v);
 
diff --git a/xen/arch/x86/mm/altp2m.c b/xen/arch/x86/mm/altp2m.c
index 46374373848d..0542e3ef9196 100644
--- a/xen/arch/x86/mm/altp2m.c
+++ b/xen/arch/x86/mm/altp2m.c
@@ -14,47 +14,6 @@
 #include "mm-locks.h"
 #include "p2m.h"
 
-void
-altp2m_vcpu_initialise(struct vcpu *v)
-{
-    if ( !v->domain->nr_altp2m )
-        return;
-
-    if ( v != current )
-        vcpu_pause(v);
-
-    vcpu_altp2m(v).p2midx = 0;
-    atomic_inc(&altp2m_get_altp2m(v)->active_vcpus);
-
-    altp2m_vcpu_update_p2m(v);
-
-    if ( v != current )
-        vcpu_unpause(v);
-}
-
-void
-altp2m_vcpu_destroy(struct vcpu *v)
-{
-    struct p2m_domain *p2m;
-
-    if ( !v->domain->nr_altp2m )
-        return;
-
-    if ( v != current )
-        vcpu_pause(v);
-
-    if ( (p2m = altp2m_get_altp2m(v)) )
-        atomic_dec(&p2m->active_vcpus);
-
-    altp2m_vcpu_disable_ve(v);
-
-    vcpu_altp2m(v).p2midx = INVALID_ALTP2M;
-    altp2m_vcpu_update_p2m(v);
-
-    if ( v != current )
-        vcpu_unpause(v);
-}
-
 int altp2m_vcpu_enable_ve(struct vcpu *v, gfn_t gfn)
 {
     struct domain *d = v->domain;
diff --git a/xen/common/altp2m.c b/xen/common/altp2m.c
index a731ad7cdab8..e699b64678d8 100644
--- a/xen/common/altp2m.c
+++ b/xen/common/altp2m.c
@@ -59,6 +59,47 @@ void altp2m_teardown(struct domain *d)
     XVFREE(d->altp2m_p2m);
 }
 
+#ifdef CONFIG_X86
+void altp2m_vcpu_initialise(struct vcpu *v)
+{
+    if ( !v->domain->nr_altp2m )
+        return;
+
+    if ( v != current )
+        vcpu_pause(v);
+
+    vcpu_altp2m(v).p2midx = 0;
+    atomic_inc(&altp2m_get_altp2m(v)->active_vcpus);
+
+    altp2m_vcpu_update_p2m(v);
+
+    if ( v != current )
+        vcpu_unpause(v);
+}
+
+void altp2m_vcpu_destroy(struct vcpu *v)
+{
+    struct p2m_domain *p2m;
+
+    if ( !v->domain->nr_altp2m )
+        return;
+
+    if ( v != current )
+        vcpu_pause(v);
+
+    if ( (p2m = altp2m_get_altp2m(v)) )
+        atomic_dec(&p2m->active_vcpus);
+
+    altp2m_vcpu_disable_ve(v);
+
+    vcpu_altp2m(v).p2midx = INVALID_ALTP2M;
+    altp2m_vcpu_update_p2m(v);
+
+    if ( v != current )
+        vcpu_unpause(v);
+}
+#endif
+
 /*
  * altp2m operations are envisioned as being used in several different
  * modes:
diff --git a/xen/include/xen/altp2m.h b/xen/include/xen/altp2m.h
index f5a4d0e60562..7defe6126563 100644
--- a/xen/include/xen/altp2m.h
+++ b/xen/include/xen/altp2m.h
@@ -24,6 +24,12 @@ int altp2m_init(struct domain *d);
 /* Free altp2m views */
 void altp2m_teardown(struct domain *d);
 
+#ifdef CONFIG_X86
+/* Alternate p2m VCPU */
+void altp2m_vcpu_initialise(struct vcpu *v);
+void altp2m_vcpu_destroy(struct vcpu *v);
+#endif
+
 #ifdef CONFIG_ALTP2M
 
 /* Alternate p2m HVM on/off per domain */
-- 
2.34.1



From xen-devel-bounces@lists.xenproject.org Mon Apr 20 21:28:04 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 20 Apr 2026 21:28:04 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1287560.1568037 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wEwA0-0006Yj-Bb; Mon, 20 Apr 2026 21:28:04 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1287560.1568037; Mon, 20 Apr 2026 21:28: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 1wEw9z-0006VK-DU; Mon, 20 Apr 2026 21:28:03 +0000
Received: by outflank-mailman (input) for mailman id 1287560;
 Mon, 20 Apr 2026 21:27:58 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <Rose.Spangler@elektrobit.com>) id 1wEw9t-0005Lv-ME
 for xen-devel@lists.xenproject.org; Mon, 20 Apr 2026 21:27:57 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wEw9t-001N4o-2I
 for xen-devel@lists.xenproject.org; Mon, 20 Apr 2026 23:27:57 +0200
Received: from [10.42.69.12] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <Rose.Spangler@elektrobit.com>)
 id 69e69a1b-2eae-0a2a0a5409dd-0a2a450cb340-14
 for <xen-devel@lists.xenproject.org>; Mon, 20 Apr 2026 23:27:57 +0200
Received: from [52.101.85.93]
 (helo=BYAPR05CU005.outbound.protection.outlook.com)
 by tlsNG-d25034.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.1)
 (envelope-from <Rose.Spangler@elektrobit.com>)
 id 69e69a5b-62f1-0a2a450c0019-3465555d8597-3
 for <xen-devel@lists.xenproject.org>; Mon, 20 Apr 2026 23:27:56 +0200
Received: from CH5PR03CA0017.namprd03.prod.outlook.com (2603:10b6:610:1f1::12)
 by DS0PR08MB9565.namprd08.prod.outlook.com (2603:10b6:8:1ba::17) with
 Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9818.32; Mon, 20 Apr
 2026 21:27:45 +0000
Received: from CH1PEPF0000A348.namprd04.prod.outlook.com
 (2603:10b6:610:1f1:cafe::28) by CH5PR03CA0017.outlook.office365.com
 (2603:10b6:610:1f1::12) with Microsoft SMTP Server (version=TLS1_3,
 cipher=TLS_AES_256_GCM_SHA384) id 15.20.9791.48 via Frontend Transport; Mon,
 20 Apr 2026 21:27:44 +0000
Received: from usbth1es003.ebgroup.elektrobit.com (4.79.107.243) by
 CH1PEPF0000A348.mail.protection.outlook.com (10.167.244.4) with Microsoft
 SMTP Server (version=TLS1_3, cipher=TLS_AES_256_GCM_SHA384) id 15.20.9791.48
 via Frontend Transport; Mon, 20 Apr 2026 21:27:44 +0000
Received: from usbth1es003 (localhost [127.0.0.1])
 by usbth1es003.ebgroup.elektrobit.com (Postfix) with SMTP id 4fzz9C55GSz1wdR; 
 Mon, 20 Apr 2026 14:27:43 -0700 (PDT)
Received: from BL0PR07CU001.outbound.protection.outlook.com
 (mail-bl0pr07cu00105.outbound.protection.outlook.com [40.93.4.5])
 (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)
 key-exchange secp384r1 server-signature RSA-PSS (2048 bits) server-digest
 SHA256) (No client certificate requested)
 by usbth1es003.ebgroup.elektrobit.com (Postfix) with ESMTPS;
 Mon, 20 Apr 2026 14:27:43 -0700 (PDT)
Received: from CH0PR03CA0403.namprd03.prod.outlook.com (2603:10b6:610:11b::13)
 by CH0PR08MB7491.namprd08.prod.outlook.com (2603:10b6:610:fb::24)
 with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9818.33; Mon, 20 Apr
 2026 21:27:37 +0000
Received: from CH2PEPF0000009E.namprd02.prod.outlook.com
 (2603:10b6:610:11b:cafe::8b) by CH0PR03CA0403.outlook.office365.com
 (2603:10b6:610:11b::13) with Microsoft SMTP Server (version=TLS1_3,
 cipher=TLS_AES_256_GCM_SHA384) id 15.20.9791.48 via Frontend Transport; Mon,
 20 Apr 2026 21:27:37 +0000
Received: from denue6es012.ebgroup.elektrobit.com (213.95.148.172) by
 CH2PEPF0000009E.mail.protection.outlook.com (10.167.244.27) with Microsoft
 SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id
 15.20.9791.48 via Frontend Transport; Mon, 20 Apr 2026 21:27:37 +0000
Received: from ubuntu.localdomain (10.10.178.50) by
 denue6es012.ebgroup.elektrobit.com (10.243.160.140) with Microsoft SMTP
 Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id
 15.2.2562.35; Mon, 20 Apr 2026 23:27:32 +0200
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@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=elektrobit.com header.i="@elektrobit.com" header.h="From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck"; dkim=pass header.s=selector1 header.d=elektrobit.com header.i="@elektrobit.com" header.h="From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck"
ARC-Seal: i=2; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=pass;
 b=PjBLFM4jGrqmmHfj/MqRqt8kKt906o3F79e3dJ2dnC+qclJPbyQseFa48QXPCZRjZdnKuCP+kDfCZASnmgb0mfxGSFpx8VRGGu1uMFR4pmXUwFyLOWL+TF9kHVlD+pOlAWs+kloRHqTEyGiFJxd27zSkoCALdM6MgaCG1Qkrq9AcTGu46vpVjTjFUY4cM4h0WtCL7+fMlgWeVK9t2tGVyHnA466tyBMpI4m82cebh8fXxai4CtqusxMBtJBLeu8ajqRfqNtFVrNoZAw2sHRRzSXsFveNpK3K35h7WsfytWEXmDC3hHkzPKN7afKCId6qBIkhu6FbKetUug7dvLigeQ==
ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com;
 s=arcselector10001;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1;
 bh=Bo2v4ugtYXSGdSqYmYudyzdTq4r/l5sKQLamsKzHkjU=;
 b=FNHoTAjnYko+14eNhKInCEO51FvFgZuIr+MUy2ZYB39tNh5jwQeCx3H5ErqYrjqGDhg0QzyIyIOl+qh2gv44xDc8ksHlFYEO+ZUrqPij5RBshnrVpNxC2SjXsv9m9etUlHBVQXRhOepoaU33tmiyxVTWpyAuik0Q1iKYOEc4Be1LIR7G3N7mYX9K50bKrjuBsoww/eP7nn4XsL6v+V3wty59F2cQF1PQWukC1JS7OOLO1sui30kyWx1e3X5WlGmsHqwaUXBIy3NieI32GAzIVv2Qu2C6lU7Ws+yuO1VVpH8vU0yyeduutDgKC0BJTIuwctOBxdjaZpa7Qn0vBsym1w==
ARC-Authentication-Results: i=2; mx.microsoft.com 1; spf=pass (sender ip is
 40.93.4.5) smtp.rcpttodomain=amd.com smtp.mailfrom=elektrobit.com; dmarc=pass
 (p=quarantine sp=none pct=100) action=none header.from=elektrobit.com;
 dkim=pass (signature was verified) header.d=elektrobit.com; arc=pass (0 oda=1
 ltdi=1 spf=[1,1,smtp.mailfrom=elektrobit.com]
 dmarc=[1,1,header.from=elektrobit.com])
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=elektrobit.com;
 s=selector1;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck;
 bh=Bo2v4ugtYXSGdSqYmYudyzdTq4r/l5sKQLamsKzHkjU=;
 b=CIXptReV+0HXf76uk894wmgPsCshjDcIJMBj+t+Tc//GIl0X3Pof96qX8+FnSLz2rsBrpMj/z3rEYyzZIqtU6+P6tteZDeFBoGbhXfB/mPoVsGAdgdHnxW3QHoUQWOBSrjkkYian7r4o7rX3vygkhT8TdskxDYJY+Hjk9SvkFW4=
X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 40.93.4.5)
 smtp.mailfrom=elektrobit.com; dkim=pass (signature was verified)
 header.d=elektrobit.com;dmarc=pass action=none header.from=elektrobit.com;
Received-SPF: Pass (protection.outlook.com: domain of elektrobit.com
 designates 40.93.4.5 as permitted sender) receiver=protection.outlook.com;
 client-ip=40.93.4.5; helo=BL0PR07CU001.outbound.protection.outlook.com; pr=C
ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none;
 b=NunYwEPT1lAfAtkZRABb3MxGgi6u6ju/KwZR4zQ+njumou4u35o77X6QzwGuZYC2ACTJebYGDsp1QSoknoGI0LfihFHVtXnsZOMD5Hw5v8cgxSR7Tt7vwrqywipQmr/zJ2g+j+UMXbedfb4Io1i0mhWZlYd2oKWoOh8JHlMtJM09oxSJTVVaHkQMMM1a3DxqQNYmDBJ0E2X2VVvRKCbh508WHcCy3P0sgyKQ+X7BxLPZCQM4Q33ejKjD9ueiIxvIhlVJyqkYxA84tJmlcb96W5UK+GPOzfp2VcWOsI46ZtoO3i4aP/pfrhiOLoNAqsXPYei4tfAifKsjT3kdTn8A6Q==
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com;
 s=arcselector10001;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1;
 bh=Bo2v4ugtYXSGdSqYmYudyzdTq4r/l5sKQLamsKzHkjU=;
 b=qOzERM45VayvvhuFQqq9y2vqqpAXasq2w6xngwOWuQffaNTymbxRV9wwn4YqlIWi2DId1ry+CxgxWyDrehkUx57a9lyNw+pyzteqnkKCER50LKv3AT/x7zpSrSH02ah/KpZ20aTN9aG2VNeleutdmDUYzMsSdID/HAEsYteH/IHAB3vPHzrFUHRl2EoKrszJQx5RaYVmWNpgTHOs5ATlTeDd580SNv6xsMGo0xHyBrcsAZCbONofFR5pweJ8UC9BSrBpudI9ZQmNTFO4piMCJTbvD1NVXRSslDA6xi0sGzw6DGdV2eLd0RnauDCD/4DNsPOhipVURAPvmIYwxnwgfA==
ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass (sender ip is
 213.95.148.172) smtp.rcpttodomain=lists.xenproject.org
 smtp.mailfrom=elektrobit.com; dmarc=pass (p=quarantine sp=none pct=100)
 action=none header.from=elektrobit.com; dkim=none (message not signed);
 arc=none (0)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=elektrobit.com;
 s=selector1;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck;
 bh=Bo2v4ugtYXSGdSqYmYudyzdTq4r/l5sKQLamsKzHkjU=;
 b=CIXptReV+0HXf76uk894wmgPsCshjDcIJMBj+t+Tc//GIl0X3Pof96qX8+FnSLz2rsBrpMj/z3rEYyzZIqtU6+P6tteZDeFBoGbhXfB/mPoVsGAdgdHnxW3QHoUQWOBSrjkkYian7r4o7rX3vygkhT8TdskxDYJY+Hjk9SvkFW4=
X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 213.95.148.172)
 smtp.mailfrom=elektrobit.com; dkim=none (message not signed)
 header.d=none;dmarc=pass action=none header.from=elektrobit.com;
Received-SPF: Pass (protection.outlook.com: domain of elektrobit.com
 designates 213.95.148.172 as permitted sender)
 receiver=protection.outlook.com; client-ip=213.95.148.172;
 helo=denue6es012.ebgroup.elektrobit.com; pr=C
From: Rose Spangler <Rose.Spangler@elektrobit.com>
To: <xen-devel@lists.xenproject.org>
CC: Rose Spangler <Rose.Spangler@elektrobit.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?q?Roger=20Pau=20Monn=C3=A9?=
	<roger.pau@citrix.com>, Sergej Proskurin <proskurin@sec.in.tum.de>, "Aqib
 Javaid" <Aqib.Javaid@elektrobit.com>
Subject: [RFC PATCH v6 23/43] arm/altp2m: Add support for altp2m init/teardown routines
Date: Mon, 20 Apr 2026 17:26:28 -0400
Message-ID: <20260420212648.208640-16-Rose.Spangler@elektrobit.com>
X-Mailer: git-send-email 2.34.1
In-Reply-To: <20260420212648.208640-1-Rose.Spangler@elektrobit.com>
References: <20260420212648.208640-1-Rose.Spangler@elektrobit.com>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit
Content-Type: text/plain
X-Originating-IP: [10.10.178.50]
X-ClientProxiedBy: denue6es013.ebgroup.elektrobit.com (10.243.160.141) To
 denue6es012.ebgroup.elektrobit.com (10.243.160.140)
X-EOPAttributedMessage: 1
X-MS-Exchange-SkipListedInternetSender:
 ip=[213.95.148.172];domain=denue6es012.ebgroup.elektrobit.com
X-MS-TrafficTypeDiagnostic:
	CH2PEPF0000009E:EE_|CH0PR08MB7491:EE_|CH1PEPF0000A348:EE_|DS0PR08MB9565:EE_
X-MS-Office365-Filtering-Correlation-Id: ac698512-317e-4966-d2b4-08de9f23a970
X-SM-outgoing: yes
X-MS-Exchange-SenderADCheck: 1
X-MS-Exchange-AntiSpam-Relay: 0
X-Microsoft-Antispam-Untrusted:
 BCL:0;ARA:13230040|82310400026|36860700016|7416014|376014|1800799024|56012099003|22082099003|18002099003;
X-Microsoft-Antispam-Message-Info-Original:
 =?us-ascii?Q?r3ai/RmtL/lmzrhqxdGsu4jLGuf1z/GiJs638E9evhAa00Od7fXhO8YWiNeA?=
 =?us-ascii?Q?PJKiVc6lDCArJScBv/L5Br+hKwr7+XOV5Wk0Bx4bsr8IMHE8Ibj46gk6CVdD?=
 =?us-ascii?Q?/YLVbrb8iT6NB4dLOr399xSXt5aKkFM5erhfpIb/1HJV2eNAA4XTDYK0/RJx?=
 =?us-ascii?Q?1oqavkJX/kiTbkx/MwDRH/5QfNP2qpaqwePRyi6mY9QiYZY2qCL4aZXdtGVA?=
 =?us-ascii?Q?S07A8OogGqHZKd8QXo0fHTHacAOh1S4a3cOpLrPWqA+weoV+KdBGMK7iagYd?=
 =?us-ascii?Q?HxWku+vShVF8fW8y+BoGthBQAxVHn/RTAGpNBE78UlwkoS93f3CTjrfra98A?=
 =?us-ascii?Q?Klf4sR24vSNTMooz0FhZu/1UfdfK9UfWWaD/7zM3pNS8/64mJKcKSSdlqXSV?=
 =?us-ascii?Q?27GcFtr2hT/meu78JNOQKL0lYhcqEPwgKm3CFg/OiAL4NpIGhveK5Udfizg8?=
 =?us-ascii?Q?3dwJmrTAeBajurObGzi30y+dWdMLYuHuIp/Fx1hy/ZyHzuiyU+rkszLJa3E1?=
 =?us-ascii?Q?01obF4ilSAxBKTTm4YjIkaxuToH63Kfgt3oOEjvEPD9fWOQtg48TDUvVmW4q?=
 =?us-ascii?Q?JV0M9tyXMcso5vwJHu6MGN2DB+7yIe6GtgvKgZCMCIXlp+APRlNfasfJLdF1?=
 =?us-ascii?Q?fUYdApNg4RWd8DhwknpWo6CLlRm0UUMpToY9JeZroXOyPK1fZ3v4CmNtdZSk?=
 =?us-ascii?Q?QleZA4bfpX+/vXDdwTyvCmcNB84RktwAsdQsjQWOdANDcZmUXp0SqIUYa0e/?=
 =?us-ascii?Q?tOGIr9Zyl2yS1Ipk34SY1SnTU+7xqT0zSHVXPVnyLDNAf8ej9FniUIMlN93E?=
 =?us-ascii?Q?214CNtGluz2YlSNiQxhBxpLFLuRiszclW8+GeJ3P1fqpMJDwhTb7nmcEaDMS?=
 =?us-ascii?Q?z6RWi1+gfV5Vk8L8N2mpf4vQvRkXKgNijbF7YfRZL162Z5YShkIBO74QF2MM?=
 =?us-ascii?Q?F8d37YrPvY5P1zMlIMsX335rc7PH2bxNWuX6w+m/VJ02aO47qX6Is1iPXfCp?=
 =?us-ascii?Q?UlEnMNBolf796IIn3GdQmtgoFxRH33cJIaGuJwjACNeLMDV2X/bfLHtzdMyC?=
 =?us-ascii?Q?DJcYfc8EQcFBwj47T8Kx19VBbH8nC/pl+F/U7dERQgpbB/gKOIJRSYJ8RfFh?=
 =?us-ascii?Q?LG4H+zKhOQjIl9fp5M6bAHtsGOVj6r6dCdOZQ9kUe5WT9nnB6wTLnkgN5heh?=
 =?us-ascii?Q?BtsXWahGO1lXCNLzGhECdS3VWOLRFXVvL/g+m0T0SIADwBRdsMcnjiWgU68?=
 =?us-ascii?Q?=3D?=
X-Forefront-Antispam-Report-Untrusted:
 CIP:213.95.148.172;CTRY:DE;LANG:en;SCL:1;SRV:;IPV:CAL;SFV:NSPM;H:denue6es012.ebgroup.elektrobit.com;PTR:eth1-fw1-nbg6.eb.noris.de;CAT:NONE;SFS:(13230040)(82310400026)(36860700016)(7416014)(376014)(1800799024)(56012099003)(22082099003)(18002099003);DIR:OUT;SFP:1102;
X-Exchange-RoutingPolicyChecked:
 q2gnCGy/wfxdHSvj8ixF2Mo1DoT5URzSERJ5MmEG+KTxfRhr83hXMD1iGFgI93LRzV68dAJviJV1m0KGRz+a1OnxBAFS5TTp2ru3pKxvvmK4+/FXdpYsN7GgPkgrRjDhWiIev7i3F2E4dlnKQL4UFVD94NpYyWp86FNrG0tR2HNCVNis7IDRWBXBvyaRRe8k0OvwiFkSux6N3/MXie4Bl4/bb3+zCUZ7c2ZoT1l0+WaaVzh/OLHK94x/CgW5QQIzOK+9Cxvsj10xzh0qH4bQiz+GLdp6rQ+Xlouo4yZub4Zdr6XQhh5J43JdBGmu2SxQPi8pG7UMyoA0MbENE5sYaw==
X-MS-Exchange-Transport-CrossTenantHeadersStamped: CH0PR08MB7491
X-MS-Exchange-SkipListedInternetSender:
 ip=[40.93.4.5];domain=BL0PR07CU001.outbound.protection.outlook.com
X-MS-Exchange-ExternalOriginalInternetSender:
 ip=[40.93.4.5];domain=BL0PR07CU001.outbound.protection.outlook.com
X-MS-Exchange-Transport-CrossTenantHeadersStripped:
 CH1PEPF0000A348.namprd04.prod.outlook.com
X-MS-PublicTrafficType: Email
X-MS-Office365-Filtering-Correlation-Id-Prvs:
	1ceeffea-77f0-494c-24e1-08de9f23a54a
X-Microsoft-Antispam:
	BCL:0;ARA:13230040|1800799024|7416014|35042699022|376014|36860700016|14060799003|156008|82310400026|22082099003|18002099003|56012099003;
X-Microsoft-Antispam-Message-Info:
	=?us-ascii?Q?YMwve2Y858zdozLJ2PNhVaW1okxU2N1a4dwWGtZw/Eic+aGHrbpaNBm3bkYM?=
 =?us-ascii?Q?BLTYnVEj36zZipoAy4jNjH13yUhWPFed+XWKYZbflG20nM3jWqUmxxxJxTWK?=
 =?us-ascii?Q?ZXsDXBSYkYuQIBcnQjnvLGhb/g28SqGpP9QcECDeSZqhqOahDlvSt0Tcpn5i?=
 =?us-ascii?Q?kch8Owy2l53r3qWigZ1G5L1v8DzVikxJF8mQgTgSZ9u1NCpkq9M4EgPXngAb?=
 =?us-ascii?Q?N5skvundvHKpX1ewdksQeb+0JS41TYOmrptS75fLB/rtQ3Jhy3Le2Hp12oQU?=
 =?us-ascii?Q?eEjuE2ZaVBE/i+oHjkfkGzsfXwb75uQqBvqw0JSRN/yYI/6IAJEsfcsHGoqg?=
 =?us-ascii?Q?vkIeKsXIQ+mpUeATmluYl/3smwDt6trTLhGY5wnMNMddULEEB5OSRPoizg2K?=
 =?us-ascii?Q?fMInbFGVpvUCmtpm2eUxeikDDLLC4it89OpRlllFf2cGpLlgo7FJ8rIvgIeV?=
 =?us-ascii?Q?mXKs6tkAa3alkDHCf4goU03fIREAANb5+Puu8ZmRyUnqHx/j9NNxyUg/RWp6?=
 =?us-ascii?Q?0WK9yKKit9giP7XppXyf15CxlXbMEKbAm7gtT+F8I3qI0lm1AOZA27kcexkj?=
 =?us-ascii?Q?zfWQLFyBr9/nNjK9xDTvT5vHOy8olqNcX441N4gJkRie/QKmuDbNp8TGHuJP?=
 =?us-ascii?Q?aRSoSaKzNNrULAYgA+bycc+FpRmMqCgVS8AR9MbHu3xKWxtxIuHVGthARG4L?=
 =?us-ascii?Q?VbeIKEeJ7sCLZHu6jyU2Hynq0Ir/09puPzx4ogcFVOxHjMQieq4ThGRZcw/j?=
 =?us-ascii?Q?89ZF+6FvbvYYBSlHDnn9VXNRaDbvyeW9bUml48P9abTGkyoike6VmvKsrDYz?=
 =?us-ascii?Q?S1lCEgL24BMYAnnUqoPYMTADUmyFSHPqxUOyvdsNJ/oRFyr6zowjzzVGqZhj?=
 =?us-ascii?Q?SYmwJXF0THdthxdadry4DfRMOPLW1F3LPCtVjnvmZCe/FoQE+7yfQov0ymOt?=
 =?us-ascii?Q?JLkPLaEd6xw+1VjnxpKQ7toXXRz4gkYlz8Z5Zxdj9DFVlrUa9iwWWqUjkTTc?=
 =?us-ascii?Q?F5gTUReFqzk83wkTm+GXpDv7Q/4pWrDXkCUn2okd/P8WdlIur9EVGCb1wulf?=
 =?us-ascii?Q?YXVpqTQTAGBLX7toT1nIWsYVS7Ha9A16G+mL6LH//khWGsfzyBk0xoYLhIld?=
 =?us-ascii?Q?0m7edEU14REMZ1cKh2BZtmPIKc5r5YrNJUhQBkSVk+2QHi0DVc6KNx82BK5Z?=
 =?us-ascii?Q?WmbXyVzQx49NKwmPaTHDcwV4Ki8o8HuL6bV/OU9vOkuGdeEOD19L5lqTf7Q?=
 =?us-ascii?Q?=3D?=
X-Forefront-Antispam-Report:
	CIP:4.79.107.243;CTRY:US;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:BL0PR07CU001.outbound.protection.outlook.com;PTR:mail-bl0pr07cu00105.outbound.protection.outlook.com;CAT:NONE;SFS:(13230040)(1800799024)(7416014)(35042699022)(376014)(36860700016)(14060799003)(156008)(82310400026)(22082099003)(18002099003)(56012099003);DIR:OUT;SFP:1102;
X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1
X-MS-Exchange-AntiSpam-MessageData-0:
	4kOxaOL98lHbEV5pOudnNkAMwnWJxFFz3jGVAIiRzFfzxvq4rH7w3rrRd1pw+IALzigEvhoVTyQB01gS+erLnpbY+rYcUEvf+LJGIAKS+Gdw1cfJxx0ARDUNls9mk4ZFJayct5QjqTDYiYkxc1ukxxbZCYelE8UULdEzmIn4YDwEWyIJdEXHfsIDkOKgQb7oV+Invjum+Y1SsG9KyHKIXnD2jfU5xlTifN5JNIlPbOb0UfNwdZQRUDESsSwpb5XGXiF6n0RFS9nez8KNsNgpFG4zxkPkrr2gQiYG6F418T3+T+Ig2/uP/HshLigiGPAeEExrCjxOdwJvN5TRx6CUFVHUFobqUSIu1W8gy00cS6QwffCcSs7M5EAXeQk6Nd34NH7qopPNxaOdKKEbx255Bl+wrih9ZqzhfhmzuiQg31xFcCP7P091ciMenywfxQAC
X-OriginatorOrg: elektrobit.com
X-MS-Exchange-CrossTenant-OriginalArrivalTime: 20 Apr 2026 21:27:44.4777
 (UTC)
X-MS-Exchange-CrossTenant-Network-Message-Id: ac698512-317e-4966-d2b4-08de9f23a970
X-MS-Exchange-CrossTenant-Id: e764c36b-012e-4216-910d-8fd16283182d
X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=e764c36b-012e-4216-910d-8fd16283182d;Ip=[4.79.107.243];Helo=[usbth1es003.ebgroup.elektrobit.com]
X-MS-Exchange-CrossTenant-AuthAs: Internal
X-MS-Exchange-CrossTenant-AuthSource: TreatMessagesAsInternal-CH1PEPF0000A348.namprd04.prod.outlook.com
X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem
X-MS-Exchange-Transport-CrossTenantHeadersStamped: DS0PR08MB9565
X-purgate-ID: tlsNG-d25034/1776720477-6D360CF5-A81DA81B/0/0
X-purgate-type: clean
X-purgate-size: 7788

The p2m initialization now invokes initialization routines responsible for
the allocation and initialization of altp2m structures. The same applies to
teardown routines.

This commit adds the prerequisites for the common altp2m_init and
altp2m_teardown functions to work on ARM; No further changes were necessary
other than removing the CONFIG_X86 gating.

This is commit 12/12 of the altp2m_init/altp2m_teardown routines phase.

Signed-off-by: Rose Spangler <Rose.Spangler@elektrobit.com>
Signed-off-by: Sergej Proskurin <proskurin@sec.in.tum.de>
Signed-off-by: Aqib Javaid <Aqib.Javaid@elektrobit.com>
---
v2: Shared code between host/altp2m init/teardown functions.
    Added conditional init/teardown of altp2m.
    Altp2m related functions are moved to altp2m.c

v3: Removed locking the altp2m_lock in altp2m_teardown. Locking this
    lock at this point is unnecessary.

    Removed re-setting altp2m_vttbr, altp2m_p2m, and altp2m_active
    values in the function "altp2m_teardown". Re-setting these values is
    unnecessary as the entire domain will be destroyed right afterwards.

    Removed check for "altp2m_enabled" in "p2m_init" as altp2m has not yet
    been enabled by libxl at this point.

    Removed check for "altp2m_enabled" before tearing down altp2m within
    the function "p2m_teardown" so that altp2m gets destroyed even if
    the HVM_PARAM_ALTP2M gets reset before "p2m_teardown" is called.

    Added initialization of the field d->arch.altp2m_active in
    "altp2m_init".

    Removed check for already initialized vmid's in "altp2m_init_one",
    as "altp2m_init_one" is now called always with an uninitialized p2m.

    Removed the array altp2m_vttbr[] in struct arch_domain.

v4: Removed initialization of altp2m_p2m[] to NULL in altp2m_init, as
    the "struct arch_domain" is already initialized to zero.

    We moved the definition of the macro MAX_ALTP2M to a common place in
    a separate commit.

v6: Reworked to use common altp2m init and teardown routines.

    Added altp2m_lock_init macro for use in altp2m_init.

    Split altp2m initialization in p2m_init into a separate function,
    p2m_init_altp2m, to more easily gate code behind CONFIG_ALTP2M.

    Pulled in addition of active_vcpus from a later patch in the patch
    series.

    Split teardown and free of altp2m views into p2m_teardown and
    p2m_teardown_final (part of altp2m_teardown), respectively.
---
 xen/arch/arm/include/asm/altp2m.h |  4 +++
 xen/arch/arm/include/asm/domain.h |  8 ++++++
 xen/arch/arm/include/asm/p2m.h    |  5 ++++
 xen/arch/arm/mmu/p2m.c            | 44 ++++++++++++++++++++++++++++++-
 xen/common/altp2m.c               |  2 --
 xen/include/xen/altp2m.h          |  2 --
 6 files changed, 60 insertions(+), 5 deletions(-)

diff --git a/xen/arch/arm/include/asm/altp2m.h b/xen/arch/arm/include/asm/altp2m.h
index 698c35427e75..5a217f48b103 100644
--- a/xen/arch/arm/include/asm/altp2m.h
+++ b/xen/arch/arm/include/asm/altp2m.h
@@ -19,6 +19,10 @@ static inline bool altp2m_supported(void)
     return true;
 }
 
+#define altp2m_lock_init(d) spin_lock_init(&(d)->arch.altp2m_lock)
+#define altp2m_lock(d)      spin_lock(&(d)->arch.altp2m_lock)
+#define altp2m_unlock(d)    spin_unlock(&(d)->arch.altp2m_lock)
+
 /* Alternate p2m VCPU */
 static inline uint16_t altp2m_vcpu_idx(const struct vcpu *v)
 {
diff --git a/xen/arch/arm/include/asm/domain.h b/xen/arch/arm/include/asm/domain.h
index 576dbdec20af..9e69d62086cd 100644
--- a/xen/arch/arm/include/asm/domain.h
+++ b/xen/arch/arm/include/asm/domain.h
@@ -128,6 +128,14 @@ struct arch_domain
 #endif
 
     struct resume_info resume_ctx;
+
+#ifdef CONFIG_ALTP2M
+    /*
+     * Lock that protects critical altp2m operations that must not be performed
+     * concurrently.
+     */
+    spinlock_t altp2m_lock;
+#endif
 }  __cacheline_aligned;
 
 struct arch_vcpu
diff --git a/xen/arch/arm/include/asm/p2m.h b/xen/arch/arm/include/asm/p2m.h
index 8ae0cd7ff589..db715c4f8bfc 100644
--- a/xen/arch/arm/include/asm/p2m.h
+++ b/xen/arch/arm/include/asm/p2m.h
@@ -9,6 +9,8 @@
 #include <asm/current.h>
 #include <asm/hsr.h>
 
+#include <asm/atomic.h>
+
 #define paddr_bits PADDR_BITS
 
 /* Holds the bit size of IPAs in p2m tables.  */
@@ -117,6 +119,9 @@ struct p2m_domain {
     /* Keeping track on which CPU this p2m was used and for which vCPU */
     uint8_t last_vcpu_ran[NR_CPUS];
 
+    /* Alternate p2m: count of vcpu's currently using this p2m. */
+    atomic_t active_vcpus;
+
     /* Choose between: host/alternate. */
     p2m_class_t p2m_class;
 };
diff --git a/xen/arch/arm/mmu/p2m.c b/xen/arch/arm/mmu/p2m.c
index 0d37760ef5d5..04d17e787259 100644
--- a/xen/arch/arm/mmu/p2m.c
+++ b/xen/arch/arm/mmu/p2m.c
@@ -1,4 +1,5 @@
 /* SPDX-License-Identifier: GPL-2.0-only */
+#include <xen/altp2m.h>
 #include <xen/cpu.h>
 #include <xen/domain_page.h>
 #include <xen/ioreq.h>
@@ -7,6 +8,7 @@
 #include <xen/softirq.h>
 #include <xen/xmalloc.h>
 
+#include <asm/altp2m.h>
 #include <asm/alternative.h>
 #include <asm/event.h>
 #include <asm/flushtlb.h>
@@ -1486,6 +1488,20 @@ int p2m_teardown(struct domain *d)
 {
     struct p2m_domain *p2m = p2m_get_hostp2m(d);
 
+#ifdef CONFIG_ALTP2M
+    unsigned int i;
+    int rc;
+
+    d->altp2m_active = false;
+
+    for ( i = 0; i < d->nr_altp2m; i++ )
+    {
+        rc = p2m_teardown_one(d->altp2m_p2m[i]);
+        if ( rc )
+            return rc;
+    }
+#endif
+
     return p2m_teardown_one(p2m);
 }
 
@@ -1499,6 +1515,9 @@ void p2m_final_teardown(struct domain *d)
      * where relinquish_p2m_mapping() has been called.
      */
 
+    if ( altp2m_supported() )
+        altp2m_teardown(d);
+
     while ( p2m_teardown_allocation(d) == -ERESTART )
         continue; /* No preemption support here */
     ASSERT(page_list_empty(&d->arch.paging.p2m_freelist));
@@ -1595,6 +1614,24 @@ struct p2m_domain *p2m_init_one(struct domain *d)
     return NULL;
 }
 
+static int p2m_init_altp2m(struct domain *d)
+{
+#ifdef CONFIG_ALTP2M
+    int rc;
+
+    rc = altp2m_init(d);
+    if ( rc )
+    {
+        p2m_free_one(p2m_get_hostp2m(d));
+        return rc;
+    }
+
+    d->altp2m_active = false;
+#endif
+
+    return 0;
+}
+
 static int p2m_init_hostp2m(struct domain *d)
 {
     struct p2m_domain *p2m = p2m_init_one(d);
@@ -1608,10 +1645,15 @@ static int p2m_init_hostp2m(struct domain *d)
 
 int p2m_init(struct domain *d)
 {
+    int rc;
     spin_lock_init(&d->arch.paging.lock);
     INIT_PAGE_LIST_HEAD(&d->arch.paging.p2m_freelist);
 
-    return p2m_init_hostp2m(d);
+    rc = p2m_init_hostp2m(d);
+    if ( rc )
+        return rc;
+
+    return p2m_init_altp2m(d);
 }
 
 /*
diff --git a/xen/common/altp2m.c b/xen/common/altp2m.c
index cda653b713f0..989d8bdcb923 100644
--- a/xen/common/altp2m.c
+++ b/xen/common/altp2m.c
@@ -15,7 +15,6 @@
 #include <asm/hvm/nestedhvm.h>
 #endif
 
-#if CONFIG_X86
 int altp2m_init(struct domain *d)
 {
     unsigned int i;
@@ -60,7 +59,6 @@ void altp2m_teardown(struct domain *d)
 
     XVFREE(d->altp2m_p2m);
 }
-#endif /* CONFIG_X86 */
 
 /*
  * altp2m operations are envisioned as being used in several different
diff --git a/xen/include/xen/altp2m.h b/xen/include/xen/altp2m.h
index 85ef22c2b29e..238c7a935586 100644
--- a/xen/include/xen/altp2m.h
+++ b/xen/include/xen/altp2m.h
@@ -13,13 +13,11 @@
  * regardless of CONFIG_ALTP2M
  */
 
-#ifdef CONFIG_X86
 /* Initialize altp2m views */
 int altp2m_init(struct domain *d);
 
 /* Free altp2m views */
 void altp2m_teardown(struct domain *d);
-#endif
 
 #ifdef CONFIG_ALTP2M
 
-- 
2.34.1



From xen-devel-bounces@lists.xenproject.org Mon Apr 20 21:28:07 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 20 Apr 2026 21:28:07 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1287562.1568046 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wEwA2-0006zx-Ls; Mon, 20 Apr 2026 21:28:06 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1287562.1568046; Mon, 20 Apr 2026 21:28: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 1wEwA1-0006uN-F9; Mon, 20 Apr 2026 21:28:05 +0000
Received: by outflank-mailman (input) for mailman id 1287562;
 Mon, 20 Apr 2026 21:28:00 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <Rose.Spangler@elektrobit.com>) id 1wEw9v-0005bY-8G
 for xen-devel@lists.xenproject.org; Mon, 20 Apr 2026 21:27:59 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wEw9u-00CBn7-KI
 for xen-devel@lists.xenproject.org; Mon, 20 Apr 2026 23:27:58 +0200
Received: from [10.42.69.2] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <Rose.Spangler@elektrobit.com>)
 id 69e69a45-e002-0a2a0a5209dd-0a2a450280e4-24
 for <xen-devel@lists.xenproject.org>; Mon, 20 Apr 2026 23:27:58 +0200
Received: from [40.93.194.79]
 (helo=SN4PR0501CU005.outbound.protection.outlook.com)
 by tlsNG-720697.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.1)
 (envelope-from <Rose.Spangler@elektrobit.com>)
 id 69e69a5d-af86-0a2a45020019-285dc24f0873-3
 for <xen-devel@lists.xenproject.org>; Mon, 20 Apr 2026 23:27:58 +0200
Received: from PH7PR02CA0030.namprd02.prod.outlook.com (2603:10b6:510:33d::24)
 by SJ0PR08MB6767.namprd08.prod.outlook.com (2603:10b6:a03:2ad::15)
 with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9818.32; Mon, 20 Apr
 2026 21:27:52 +0000
Received: from SA2PEPF00003F63.namprd04.prod.outlook.com
 (2603:10b6:510:33d:cafe::51) by PH7PR02CA0030.outlook.office365.com
 (2603:10b6:510:33d::24) with Microsoft SMTP Server (version=TLS1_3,
 cipher=TLS_AES_256_GCM_SHA384) id 15.20.9791.48 via Frontend Transport; Mon,
 20 Apr 2026 21:27:52 +0000
Received: from usbth1es003.ebgroup.elektrobit.com (4.79.107.243) by
 SA2PEPF00003F63.mail.protection.outlook.com (10.167.248.38) with Microsoft
 SMTP Server (version=TLS1_3, cipher=TLS_AES_256_GCM_SHA384) id 15.20.9791.48
 via Frontend Transport; Mon, 20 Apr 2026 21:27:51 +0000
Received: from usbth1es003 (localhost [127.0.0.1])
 by usbth1es003.ebgroup.elektrobit.com (Postfix) with SMTP id 4fzz9M1WQbz1wdP; 
 Mon, 20 Apr 2026 14:27:51 -0700 (PDT)
Received: from SJ0PR08CU001.outbound.protection.outlook.com
 (mail-sj0pr08cu00102.outbound.protection.outlook.com [40.93.1.74])
 (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)
 key-exchange secp384r1 server-signature RSA-PSS (2048 bits) server-digest
 SHA256) (No client certificate requested)
 by usbth1es003.ebgroup.elektrobit.com (Postfix) with ESMTPS;
 Mon, 20 Apr 2026 14:27:50 -0700 (PDT)
Received: from CH0PR03CA0001.namprd03.prod.outlook.com (2603:10b6:610:b0::6)
 by BL3PR08MB7451.namprd08.prod.outlook.com (2603:10b6:208:342::19) with
 Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9818.33; Mon, 20 Apr
 2026 21:27:42 +0000
Received: from CH2PEPF0000009F.namprd02.prod.outlook.com
 (2603:10b6:610:b0:cafe::fa) by CH0PR03CA0001.outlook.office365.com
 (2603:10b6:610:b0::6) with Microsoft SMTP Server (version=TLS1_3,
 cipher=TLS_AES_256_GCM_SHA384) id 15.20.9791.48 via Frontend Transport; Mon,
 20 Apr 2026 21:27:41 +0000
Received: from denue6es012.ebgroup.elektrobit.com (213.95.148.172) by
 CH2PEPF0000009F.mail.protection.outlook.com (10.167.244.21) with Microsoft
 SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id
 15.20.9791.48 via Frontend Transport; Mon, 20 Apr 2026 21:27:41 +0000
Received: from ubuntu.localdomain (10.10.178.50) by
 denue6es012.ebgroup.elektrobit.com (10.243.160.140) with Microsoft SMTP
 Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id
 15.2.2562.35; Mon, 20 Apr 2026 23:27:37 +0200
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@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=elektrobit.com header.i="@elektrobit.com" header.h="From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck"; dkim=pass header.s=selector1 header.d=elektrobit.com header.i="@elektrobit.com" header.h="From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck"
ARC-Seal: i=2; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=pass;
 b=GhEUuiaTWLeIGY5rd9KLQSXk5qX793PHw2fhwLCfAF1Pk9R3foG9lZzwQaEkrlb3Pb3CYEboD8zuPgHIrjJmsKfJwg0L50JG/hqlTEbJudWoV0gy3JahttfUMNxSWd1ja2T1qzIadqd//32YSCt7IUM6cwqvrP6HB6lVh8DCsPsFU57lm8l8OTjUnfwMMJL1oANCueLl9WHFrl9zVGO20mJtsS3fkfe8qXpVaniKV5zWA3EsV6sLrgAV3Su0CugRXr0S1ua8tY7n5OifzANWtD6Pbr0PiSBGtfjBz5b1WTUbU49Gduw9UY1tt3WHi5XpQNFJqHSlXGQwN4P7QtVqww==
ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com;
 s=arcselector10001;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1;
 bh=VwN6LjYBkj1+FSQXCFug5OOMEvPQdMZIPBr0As48NFk=;
 b=xcDEpAbO7qVYaYs7/O5pHlo8lA2IT7IieiunxfaVgUTxUBEtPqe5V3OudLytY6Rjr7WkyDyL9ATedtdHpHpmeJ/tuSTB+B4xo6XSPXaEWcfXsNhBZheA9mH1LNGzW1bnuBgl5Wc3OmvaEFD8L/dVmpryazK8R77kQc5W3uq3c08h8sEDAeuHmxCL5ubfUykUWYiUQcV8TPaCQhjEVt7RMqG3j/BJjGnoK7zGVvcoy9BtPYw30EoGxX2qFXdwgZtvOP4yOgH0+ljflDzZOfd8sWFYojhFL8o13w4BMZrLTQKby5CNpjSJDXmgeMSM4YeezhKKjuqyo+jGcWA0uqV/FA==
ARC-Authentication-Results: i=2; mx.microsoft.com 1; spf=pass (sender ip is
 40.93.1.74) smtp.rcpttodomain=amd.com smtp.mailfrom=elektrobit.com;
 dmarc=pass (p=quarantine sp=none pct=100) action=none
 header.from=elektrobit.com; dkim=pass (signature was verified)
 header.d=elektrobit.com; arc=pass (0 oda=1 ltdi=1
 spf=[1,1,smtp.mailfrom=elektrobit.com]
 dmarc=[1,1,header.from=elektrobit.com])
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=elektrobit.com;
 s=selector1;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck;
 bh=VwN6LjYBkj1+FSQXCFug5OOMEvPQdMZIPBr0As48NFk=;
 b=dOdfosBwlfEsuhca2CH8ly3KjXMtZj5nJrLRi7037AIRl+6c/ua41IMFmYduVbyY72TIdbGuPgCVlXa8W36G5QEpQ+ydHYFfevBqXV6NVV4FPrlKu+Ju8i0kvvpR/vYiyMe9NAbnuZF/Hd4h5N9BxnIhoqTGBSufXO2OAA4inE4=
X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 40.93.1.74)
 smtp.mailfrom=elektrobit.com; dkim=pass (signature was verified)
 header.d=elektrobit.com;dmarc=pass action=none header.from=elektrobit.com;
Received-SPF: Pass (protection.outlook.com: domain of elektrobit.com
 designates 40.93.1.74 as permitted sender) receiver=protection.outlook.com;
 client-ip=40.93.1.74; helo=SJ0PR08CU001.outbound.protection.outlook.com; pr=C
ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none;
 b=gc6LmvGMZYUrRXwev5yMv7HCr01xAdMqAJel2UySOnUlVBPtB7BQQAeliWIPXvyXlBgVplQH17y3VAi45ZobjdW+OfQQfETDCpinX0E0GtcGZH9ElDtX3inoBGve5WSViqmbnlnsA9BH6nzJrvwN8E9Xg5y0WW6+S1yS8R4ZdRm4pSRjk7dq+cJzUMXwEoB/7QXCpyOsCt/Sdfk3/urXNkDsPEapXY7Hag5IqPQZQdwF9AnrdPUjCkyfsExK1i+jVSfALJXP+Pb50tAcfvUPkbS+7cQ3xWFFH81eSOBt/7reK+uEk34z/m/AtEkAgppwxKnG3MfSy4cEU4dFBCUqEQ==
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com;
 s=arcselector10001;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1;
 bh=VwN6LjYBkj1+FSQXCFug5OOMEvPQdMZIPBr0As48NFk=;
 b=wQKCb6UqawfMtRISEMh73joFvxDfSDr3HlgJZ3S3q8CpoVLR9Xpd4Qts4zFt4nVFYL0AH+gcraNMGa4FLpzFtt8dGF+/TFh1Z4DszC6S+YFm/QLIH9eQ5JKkqcv9QA/Dyqqa4LnX+vP3DSaS7F3csO+cy1w3khO9/wDPoKFSr5NqnbF7X0UYQtL/Gdzjxm5zGnoCd9rFUVwlNnEN1mM2CS2lMvWMXAxIm5TMiLqRrq7X4g+aGZMfWCqGiHHWIKmSCyM3KNZZDq85xwJXCKOBbC68c2BUPZ7C/qJG6WoSqYNcw/zjTw1NzU+iiIQwABL0hgMGsAgNfuWpsasiSiElMg==
ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass (sender ip is
 213.95.148.172) smtp.rcpttodomain=lists.xenproject.org
 smtp.mailfrom=elektrobit.com; dmarc=pass (p=quarantine sp=none pct=100)
 action=none header.from=elektrobit.com; dkim=none (message not signed);
 arc=none (0)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=elektrobit.com;
 s=selector1;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck;
 bh=VwN6LjYBkj1+FSQXCFug5OOMEvPQdMZIPBr0As48NFk=;
 b=dOdfosBwlfEsuhca2CH8ly3KjXMtZj5nJrLRi7037AIRl+6c/ua41IMFmYduVbyY72TIdbGuPgCVlXa8W36G5QEpQ+ydHYFfevBqXV6NVV4FPrlKu+Ju8i0kvvpR/vYiyMe9NAbnuZF/Hd4h5N9BxnIhoqTGBSufXO2OAA4inE4=
X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 213.95.148.172)
 smtp.mailfrom=elektrobit.com; dkim=none (message not signed)
 header.d=none;dmarc=pass action=none header.from=elektrobit.com;
Received-SPF: Pass (protection.outlook.com: domain of elektrobit.com
 designates 213.95.148.172 as permitted sender)
 receiver=protection.outlook.com; client-ip=213.95.148.172;
 helo=denue6es012.ebgroup.elektrobit.com; pr=C
From: Rose Spangler <Rose.Spangler@elektrobit.com>
To: <xen-devel@lists.xenproject.org>
CC: Rose Spangler <Rose.Spangler@elektrobit.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>,
	=?UTF-8?q?Roger=20Pau=20Monn=C3=A9?= <roger.pau@citrix.com>, Teddy Astie
	<teddy.astie@vates.tech>
Subject: [RFC PATCH v6 26/43] altp2m: Add altp2m_set_vcpu_idx
Date: Mon, 20 Apr 2026 17:26:31 -0400
Message-ID: <20260420212648.208640-19-Rose.Spangler@elektrobit.com>
X-Mailer: git-send-email 2.34.1
In-Reply-To: <20260420212648.208640-1-Rose.Spangler@elektrobit.com>
References: <20260420212648.208640-1-Rose.Spangler@elektrobit.com>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit
Content-Type: text/plain
X-Originating-IP: [10.10.178.50]
X-ClientProxiedBy: denue6es013.ebgroup.elektrobit.com (10.243.160.141) To
 denue6es012.ebgroup.elektrobit.com (10.243.160.140)
X-EOPAttributedMessage: 1
X-MS-Exchange-SkipListedInternetSender:
 ip=[213.95.148.172];domain=denue6es012.ebgroup.elektrobit.com
X-MS-TrafficTypeDiagnostic:
	CH2PEPF0000009F:EE_|BL3PR08MB7451:EE_|SA2PEPF00003F63:EE_|SJ0PR08MB6767:EE_
X-MS-Office365-Filtering-Correlation-Id: eb075c67-cfff-4536-11bf-08de9f23add8
X-SM-outgoing: yes
X-MS-Exchange-SenderADCheck: 1
X-MS-Exchange-AntiSpam-Relay: 0
X-Microsoft-Antispam-Untrusted:
 BCL:0;ARA:13230040|704161411799003|82310400026|36860700016|7416014|376014|1800799024|56012099003|22082099003|18002099003;
X-Microsoft-Antispam-Message-Info-Original:
 =?us-ascii?Q?MSvKYjVmiU3JYlMfc7fcuagg+w9gP+VYEXMe3g7Q+532h+X417Vl3qZoHfKJ?=
 =?us-ascii?Q?nA4LsOhNW4a2N0C+iCKV4wXrctBaRc5dvhYAN4ZX7r9dJutrdodTHGQWdywe?=
 =?us-ascii?Q?6k3EF+Vu6xFBd+ZvyAomoCkQv+qBUE+9tFoT+4lrQGfwFf32cqcdY8YN6drK?=
 =?us-ascii?Q?3M4CWULKJleIng8wmcnUH+Q6fdOog2ZwhuwcFScawDmIP0ea/xrVi1bbzs1W?=
 =?us-ascii?Q?qm6aD9ZqrM3OoYhyGKo6U2TvEUmxDciMHRDlwwjECPBJvk2qMloXX30Sb1mR?=
 =?us-ascii?Q?Tg7MwfkAjf7CpAbVp4dfJF+vu8i2Fv641KT0MV2NCDRbzLSXoOeTlkV/Ga5k?=
 =?us-ascii?Q?BS52hTCOrjuQl9+zt/Dmye7EoxFKuA4XsUed4kVdaDPegvbOv95Y9O0XcAXy?=
 =?us-ascii?Q?Z+1obiV0PY2yoCohr9QfusuiK7gSLR1kF8//mhMkkPHlweeo6uI7fTmjXQrI?=
 =?us-ascii?Q?DpG2zaanE9wXiOUBZrxToZDL9vX1Ty/yH13J99tKMhEYfJMf+nZqwJSVRNjV?=
 =?us-ascii?Q?zNtVhXLyXZI6JBcVVlwLNEs6DXSwZYUDrlCmY91ygy8J/s3iRsFq++bCoudk?=
 =?us-ascii?Q?bNswlwrwJqZTz0kR5kq6lVxNG59QDa/aoAxtJp1KZeyw4IYIB4JN3txPOPn7?=
 =?us-ascii?Q?BEeV8nqt6Qe4rmbAnHkxQ8Xjth10xUU8eyQR5tSS26imPP/JKfeckgOJuo2j?=
 =?us-ascii?Q?OkLc7VzWvfu544jtMNd0qX0ractokWUDHOk3WUqZ7bzbBapvDNdTZkFQUz4d?=
 =?us-ascii?Q?7vCalzBiXqXCAlouVrlkIyvmB/h8xigU94/stubKez8HmhPj4LwhkJysuzjn?=
 =?us-ascii?Q?xpPa6CkIAOKbiQnsvw6DTxh26gVEuLoOKYOqxbynDfekc9m+b21Ty3uAo3rK?=
 =?us-ascii?Q?8rAb+Duk1e205HkdSi6IdaYYft6un9Yw3lh17g4AO1G8Bm8+Ola8/hcGjm3j?=
 =?us-ascii?Q?L2h+jOFIRD4xu7CWUMeG7MXHOVasbgait5x3DdeNP/sAdVRCU5mwo4PlHyHd?=
 =?us-ascii?Q?05WEglSs0Mjo7rjG7PT1oTSgfK2CVQ12nvmvN3YN6vL02IMA8wfN4xrnPImP?=
 =?us-ascii?Q?GXnBQ4Zq88VBzeuVkIGX/3SypDLA2WUlKWm0fvKVZX13VLoCIedRP/dAjCEz?=
 =?us-ascii?Q?yoKvXcMBpsQkBJ8t3uVbc20YWOssuWexJA=3D=3D?=
X-Forefront-Antispam-Report-Untrusted:
 CIP:213.95.148.172;CTRY:DE;LANG:en;SCL:1;SRV:;IPV:CAL;SFV:NSPM;H:denue6es012.ebgroup.elektrobit.com;PTR:eth1-fw1-nbg6.eb.noris.de;CAT:NONE;SFS:(13230040)(704161411799003)(82310400026)(36860700016)(7416014)(376014)(1800799024)(56012099003)(22082099003)(18002099003);DIR:OUT;SFP:1102;
X-Exchange-RoutingPolicyChecked:
 qdKVYFw+m3P4/BeI6eqfG2yknU61gs1EhhBYpnFZgb/F1u9UVSjh/2oRJhXf3xFscgSghZHpOhsoH19cVUr21uVKeH2Yr7kkluYY1rSpXwOOy3LqSCEQ+eY8FiiDmTKZU/3d6+gkl5491natyYdlgvkTywsEm1yDLGG3X5G52oAQ4eVNI0CyQCm/Xg2H/lmPULUZRug2TPQXW5VDmcWSgojQgEIA1G9r82HMxie0d3Sq5bgeDDr3tBUzeOuvZFxc2mEMgl5U8Vh7QMej+PAJBVHATL8TQLHXNhXY8kh+DTBcUUAwzF7cIf4gNGckJZfzuSxCtBJH1y9I16dAen2GSQ==
X-MS-Exchange-Transport-CrossTenantHeadersStamped: BL3PR08MB7451
X-MS-Exchange-SkipListedInternetSender:
 ip=[40.93.1.74];domain=SJ0PR08CU001.outbound.protection.outlook.com
X-MS-Exchange-ExternalOriginalInternetSender:
 ip=[40.93.1.74];domain=SJ0PR08CU001.outbound.protection.outlook.com
X-MS-Exchange-Transport-CrossTenantHeadersStripped:
 SA2PEPF00003F63.namprd04.prod.outlook.com
X-MS-PublicTrafficType: Email
X-MS-Office365-Filtering-Correlation-Id-Prvs:
	8c7d5bbb-9015-4668-9134-08de9f23a77e
X-Microsoft-Antispam:
	BCL:0;ARA:13230040|704161411799003|376014|7416014|14060799003|36860700016|35042699022|156008|82310400026|1800799024|56012099003|22082099003|18002099003;
X-Microsoft-Antispam-Message-Info:
	=?us-ascii?Q?Cyipb3IKamkH9JcLiC/NLcS1moad1H+EJgUEyt9TRcQIr/PmUBYt4FkGBpu8?=
 =?us-ascii?Q?6Uw9v/af5XoXmmAAL6/3yCdezzwZ25kG3LJM4JrxIukV2RGHhjPKkGB6uk8R?=
 =?us-ascii?Q?2XT5r0Jhyhq5qMd1bPDbPh6gOJqvP1Xvbv8IgUWaXR7m0sD+9xpvah9CZRy1?=
 =?us-ascii?Q?rLnYrqiXme/+Y/vYNXQ8c6zdb2eCL9DIMrzsAftHAasQCYBISuuZ29ENhYA1?=
 =?us-ascii?Q?buEr3IBFPuqLaGb86Vs/PRcTBvrZTSR9gkJFiUcG1xEPVb0NyqhIN9xwsAfh?=
 =?us-ascii?Q?dOmlvt1HGCIbGi2mCHFCM0iNa8Vzv8VEY4PHUDso1bthRlPHBkfG7ubSu1C7?=
 =?us-ascii?Q?TiX9cPrwi1intkjoG7MtmEKQvByMAIBRHndDWInTfx7nG6mI4mtlSw95OOqk?=
 =?us-ascii?Q?JKGjQ1GNpYCZEOT/Tp20vFDtJobtvVz+a2Bjdm9QfM9A5CCaqJSt0XEx4f9I?=
 =?us-ascii?Q?cxcpCPrzbxrTGjPJk9uohr2r8tsACKWRmUz3vtyatbNldylHxYUDuzSrueyu?=
 =?us-ascii?Q?hCf1sNajH3D96TOv/QfdLdApc5Oo5JIFiTaMBKcsEwwYQ0Gy2fIkPLRwkHDs?=
 =?us-ascii?Q?JM/gGFDPGQrXrUF4uRxSmkCzPUp5NcO6uNmIvQeB9KlJGUsFxhV7IRxFm8Su?=
 =?us-ascii?Q?RgjdsT9YnwneFKakq88NNCA2lB/rtaQKOFBNmSs9OhTNMlSf9uBAQelK34IJ?=
 =?us-ascii?Q?Usln5Lh21N8T4sI+15D4QPTTuX+2pyvS3OtdhbpTKrariZ5VJF59B9m2uQxY?=
 =?us-ascii?Q?ATATQi38Drci5emrBfAEVQ+t34gTbIptQHGD3VCLEf9z94F6VU4Ca1/gnpJC?=
 =?us-ascii?Q?q99JdH9rnPim3HTQ/jHi5HNAmamQR+6kJwDGnYS0/XlrML6cj5ot0asjRrJO?=
 =?us-ascii?Q?CqYO5EN9z0p+lFya2YpSJi1ceWBorf0A4SZv3qlTAsJ7hNV3LMuL8eIMxRiU?=
 =?us-ascii?Q?Hu0vnTR5j8Nok8qd0OEdKN5wyBxVvT8GqgwF7sijbVwOgQKG/1T0q41pW8AY?=
 =?us-ascii?Q?inDQpwcbKOJs8lHxQmCgXDxE3nELFJ4hNl730zGcMEDNlHpPgDMjTNfnjAHc?=
 =?us-ascii?Q?K3jA95Ic35YoLzJbymwfHf8BqyJM3hT72rqaB0WNv0x0/9pUa2lCggUzUjUn?=
 =?us-ascii?Q?qmiYnhSEgMcA0MhcV/9nmi3KGmwIPnYtPw=3D=3D?=
X-Forefront-Antispam-Report:
	CIP:4.79.107.243;CTRY:US;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:SJ0PR08CU001.outbound.protection.outlook.com;PTR:mail-sj0pr08cu00102.outbound.protection.outlook.com;CAT:NONE;SFS:(13230040)(704161411799003)(376014)(7416014)(14060799003)(36860700016)(35042699022)(156008)(82310400026)(1800799024)(56012099003)(22082099003)(18002099003);DIR:OUT;SFP:1102;
X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1
X-MS-Exchange-AntiSpam-MessageData-0:
	+jPCAV/cDD9B1Bu/osIct3+bJW1yA5WInDbZVJCo6eg3UdwblnkeJwgUkkzkzD6nwgcH2c5wgDg18ldw5NN9MRc6BYAwrm630D/86hk0GYi7Clent3OmIrow/dzeKXfk/uutTRUVff4PlRwYjoPEPuJsy8XBIKi3i0OfQnX4zAZKhx3ziBTJl3rapd9+XZK3mGiFxiErR6YltGeFr+JErp1YivHGCUOH/y52YerTysmX7BmYrybNqBLN3lWVIlqnJrmDg6uGngeqMSDJelYuuHYFiCdSxER4Ptb8umaDmwO73nu0K8YhP3d+4AXaKR+SGIuu82NY1ogQqTVM5sfI6R2fDmavs/r26dKdmC3ifN9pOIKW2DWBBPaOazKXHUrONLBd7Hm/P37JkODErASA7ZJ2ld9ZOcmCZz8PRSk0DbMKV3YAWywwn+QXHQRws/V6
X-OriginatorOrg: elektrobit.com
X-MS-Exchange-CrossTenant-OriginalArrivalTime: 20 Apr 2026 21:27:51.9031
 (UTC)
X-MS-Exchange-CrossTenant-Network-Message-Id: eb075c67-cfff-4536-11bf-08de9f23add8
X-MS-Exchange-CrossTenant-Id: e764c36b-012e-4216-910d-8fd16283182d
X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=e764c36b-012e-4216-910d-8fd16283182d;Ip=[4.79.107.243];Helo=[usbth1es003.ebgroup.elektrobit.com]
X-MS-Exchange-CrossTenant-AuthAs: Internal
X-MS-Exchange-CrossTenant-AuthSource: TreatMessagesAsInternal-SA2PEPF00003F63.namprd04.prod.outlook.com
X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem
X-MS-Exchange-Transport-CrossTenantHeadersStamped: SJ0PR08MB6767
X-purgate-ID: tlsNG-720697/1776720478-880D7161-DA2F569B/0/0
X-purgate-type: clean
X-purgate-size: 1653

This commit adds the altp2m_set_vcpu_idx function for both x86 and ARM.
Since the altp2m VCPU index is stored differently depending on which
architecture is used, the altp2m_set_vcpu_idx function makes it possible to
set this value in an architecture independent way for common code routines.

This is commit 3/4 of the altp2m_{get,set}_altp2m phase.

Signed-off-by: Rose Spangler <Rose.Spangler@elektrobit.com>
---
v6: Introduced this patch.
---
 xen/arch/arm/include/asm/altp2m.h | 5 +++++
 xen/arch/x86/include/asm/altp2m.h | 5 +++++
 2 files changed, 10 insertions(+)

diff --git a/xen/arch/arm/include/asm/altp2m.h b/xen/arch/arm/include/asm/altp2m.h
index bc695018e62c..f001e022a213 100644
--- a/xen/arch/arm/include/asm/altp2m.h
+++ b/xen/arch/arm/include/asm/altp2m.h
@@ -29,6 +29,11 @@ static inline uint16_t altp2m_vcpu_idx(const struct vcpu *v)
     return v->arch.ap2m_idx;
 }
 
+static inline void altp2m_set_vcpu_idx(struct vcpu *v, unsigned int idx)
+{
+    v->arch.ap2m_idx = idx;
+}
+
 #else /* CONFIG_ALTP2M */
 
 static inline bool altp2m_supported(void)
diff --git a/xen/arch/x86/include/asm/altp2m.h b/xen/arch/x86/include/asm/altp2m.h
index a1b078783b3e..b3d348386a00 100644
--- a/xen/arch/x86/include/asm/altp2m.h
+++ b/xen/arch/x86/include/asm/altp2m.h
@@ -60,6 +60,11 @@ static inline uint16_t altp2m_vcpu_idx(const struct vcpu *v)
     return vcpu_altp2m(v).p2midx;
 }
 
+static inline void altp2m_set_vcpu_idx(struct vcpu *v, unsigned int idx)
+{
+    vcpu_altp2m(v).p2midx = idx;
+}
+
 /*
  * Alternate p2m: shadow p2m tables used for alternate memory views
  */
-- 
2.34.1



From xen-devel-bounces@lists.xenproject.org Mon Apr 20 21:28:09 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 20 Apr 2026 21:28:09 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1287568.1568053 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wEwA4-0007Jz-8i; Mon, 20 Apr 2026 21:28:08 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1287568.1568053; Mon, 20 Apr 2026 21:28: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 1wEwA2-0007Az-Oq; Mon, 20 Apr 2026 21:28:06 +0000
Received: by outflank-mailman (input) for mailman id 1287568;
 Mon, 20 Apr 2026 21:28:01 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <Rose.Spangler@elektrobit.com>) id 1wEw9w-0005tQ-9b
 for xen-devel@lists.xenproject.org; Mon, 20 Apr 2026 21:28:00 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wEw9v-009jup-LJ
 for xen-devel@lists.xenproject.org; Mon, 20 Apr 2026 23:27:59 +0200
Received: from [10.42.69.9] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <Rose.Spangler@elektrobit.com>)
 id 69e69a38-5cb7-0a2a0a5109dd-0a2a4509e432-34
 for <xen-devel@lists.xenproject.org>; Mon, 20 Apr 2026 23:27:59 +0200
Received: from [40.107.209.117]
 (helo=PH8PR06CU001.outbound.protection.outlook.com)
 by tlsNG-bad1c0.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.1)
 (envelope-from <Rose.Spangler@elektrobit.com>)
 id 69e69a5d-2497-0a2a45090019-286bd1751e28-3
 for <xen-devel@lists.xenproject.org>; Mon, 20 Apr 2026 23:27:59 +0200
Received: from PH8PR02CA0047.namprd02.prod.outlook.com (2603:10b6:510:2da::8)
 by DS4PR08MB10703.namprd08.prod.outlook.com (2603:10b6:8:282::5) with
 Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9818.32; Mon, 20 Apr
 2026 21:27:49 +0000
Received: from SA2PEPF00003F64.namprd04.prod.outlook.com
 (2603:10b6:510:2da:cafe::34) by PH8PR02CA0047.outlook.office365.com
 (2603:10b6:510:2da::8) with Microsoft SMTP Server (version=TLS1_3,
 cipher=TLS_AES_256_GCM_SHA384) id 15.20.9791.48 via Frontend Transport; Mon,
 20 Apr 2026 21:27:48 +0000
Received: from usbth1es003.ebgroup.elektrobit.com (4.79.107.243) by
 SA2PEPF00003F64.mail.protection.outlook.com (10.167.248.39) with Microsoft
 SMTP Server (version=TLS1_3, cipher=TLS_AES_256_GCM_SHA384) id 15.20.9791.48
 via Frontend Transport; Mon, 20 Apr 2026 21:27:48 +0000
Received: from usbth1es003 (localhost [127.0.0.1])
 by usbth1es003.ebgroup.elektrobit.com (Postfix) with SMTP id 4fzz9H4fdWz1wdS; 
 Mon, 20 Apr 2026 14:27:47 -0700 (PDT)
Received: from CO1PR08CU001.outbound.protection.outlook.com
 (mail-co1pr08cu00100.outbound.protection.outlook.com [40.93.10.96])
 (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)
 key-exchange secp384r1 server-signature RSA-PSS (2048 bits) server-digest
 SHA256) (No client certificate requested)
 by usbth1es003.ebgroup.elektrobit.com (Postfix) with ESMTPS;
 Mon, 20 Apr 2026 14:27:47 -0700 (PDT)
Received: from CH0PR03CA0026.namprd03.prod.outlook.com (2603:10b6:610:b0::31)
 by LV3PR08MB9527.namprd08.prod.outlook.com (2603:10b6:408:216::6)
 with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9818.32; Mon, 20 Apr
 2026 21:27:42 +0000
Received: from CH2PEPF0000009F.namprd02.prod.outlook.com
 (2603:10b6:610:b0:cafe::fd) by CH0PR03CA0026.outlook.office365.com
 (2603:10b6:610:b0::31) with Microsoft SMTP Server (version=TLS1_3,
 cipher=TLS_AES_256_GCM_SHA384) id 15.20.9791.48 via Frontend Transport; Mon,
 20 Apr 2026 21:27:42 +0000
Received: from denue6es012.ebgroup.elektrobit.com (213.95.148.172) by
 CH2PEPF0000009F.mail.protection.outlook.com (10.167.244.21) with Microsoft
 SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id
 15.20.9791.48 via Frontend Transport; Mon, 20 Apr 2026 21:27:42 +0000
Received: from ubuntu.localdomain (10.10.178.50) by
 denue6es012.ebgroup.elektrobit.com (10.243.160.140) with Microsoft SMTP
 Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id
 15.2.2562.35; Mon, 20 Apr 2026 23:27:39 +0200
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@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=elektrobit.com header.i="@elektrobit.com" header.h="From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck"; dkim=pass header.s=selector1 header.d=elektrobit.com header.i="@elektrobit.com" header.h="From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck"
ARC-Seal: i=2; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=pass;
 b=gRv4ww9L1Usa7X+Fawzo7Wr6zK2cFDuThxr+n+u/GFmwQFZzBCKo75GixfVDVM9t7aWi7ULeIjhpweJ7qBcKQl8xUfvQ9o6ZVhUy/fFGWrUOhhGmc73A5UkB17U9iBP4fpwo1g5uGOkSqD7PcdyrC2CaCyUOR+CdDNLfBHLfXXJay8dsahZvm26srWhjpWrurc1JlAWk88pxqIDUbMBz4h+PJLs9L1nwnekJcSr0VFp4djqCjb/kyjas3Yv4L+rLKL31B1b8m4NqePFTLNHMD5vfXoLNQVf41Sxk0S64trp5O5b8MZHPEGM8fPMa58GRADa9DdpvTImK4q6kAdA7xw==
ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com;
 s=arcselector10001;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1;
 bh=2GKS7huUjzjhqkDR3rg4P6NQTDEiD+t2h7OWKwFuOAU=;
 b=SGrzf7mfF18NFvZMNAeI8iql47DVHd874FawYLTIf3IBLdGRQOeqa0aSLDaro9RsXEWu8IgyiMRXePQwoPp4I7Wck+i8qtk4EsqIsZ1yiH7VnA2bGAXBFA5wQ49UgKxbNIy7iwauZL3qXUu9svrP/gAeRSJxFWIryT9CV+FbHsLugRoRw1aiWG5yNVAr9/7q51tvWtdD3Mk9bz1kDnpXVUG0ww/lkblPAwy0CtzcDxTs5Dk/abEqQkiggUrPXpuLM6cpaEXfUD5Ty+MQeoNWZ1hVZgQsfQrVAolNFN5uJShR9wrMVS87i/hVqAiYLcnMKKA0d+cVppLORmdNN0mpFg==
ARC-Authentication-Results: i=2; mx.microsoft.com 1; spf=pass (sender ip is
 40.93.10.96) smtp.rcpttodomain=amd.com smtp.mailfrom=elektrobit.com;
 dmarc=pass (p=quarantine sp=none pct=100) action=none
 header.from=elektrobit.com; dkim=pass (signature was verified)
 header.d=elektrobit.com; arc=pass (0 oda=1 ltdi=1
 spf=[1,1,smtp.mailfrom=elektrobit.com]
 dmarc=[1,1,header.from=elektrobit.com])
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=elektrobit.com;
 s=selector1;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck;
 bh=2GKS7huUjzjhqkDR3rg4P6NQTDEiD+t2h7OWKwFuOAU=;
 b=BLexTEX28gMTcpxZjIMstX+Hl7PtBB3G6I2t3suDP1105siAy8ia/oPfFUHevRDDQnxiM7tTXMg1fr70lLT3RCK7ix0gMmwJ7ATnp8I04LKUBKuA/2Ii486RfbtjMDyiQT/fdN9MT/hWlBbLpARSVMlq7SsNhmoVYmbrseVlYUY=
X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 40.93.10.96)
 smtp.mailfrom=elektrobit.com; dkim=pass (signature was verified)
 header.d=elektrobit.com;dmarc=pass action=none header.from=elektrobit.com;
Received-SPF: Pass (protection.outlook.com: domain of elektrobit.com
 designates 40.93.10.96 as permitted sender) receiver=protection.outlook.com;
 client-ip=40.93.10.96; helo=CO1PR08CU001.outbound.protection.outlook.com;
 pr=C
ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none;
 b=OmIgXfUVb4iPcyPiW3G5+FJ1bwNjE8sLn7wthCfnz50D+frqDl1UmD3HF/zNWurniFW+RlYHl4sqhp0i/RWjT52heq9v+HXQ+Pl5R4ut6mvBS7XvB10fa21w3mSjbi0FjB928jR16BrrAgkUxRS8fCRF1Vm+q4u5hJZo+jhmMRugdzD7ImT8vwntZHw9DQqJ/jxVy0uPAIzPDGhARRQ9kCyOHbwBn/XmrJNSJjo0ux7M26wTkhVwvTo8Vi8hkZ1N6AlQ//jWwk6Lz42Rm1awvgix+RYTzOfXwUmpqaOQeW4x8SDFOym6/vtWpjTbES6gzV3ppo+G9/5JxPj3y63YRw==
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com;
 s=arcselector10001;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1;
 bh=2GKS7huUjzjhqkDR3rg4P6NQTDEiD+t2h7OWKwFuOAU=;
 b=paMopcHcMB9mZN/H1VcDdbMu7omii1qTQ+DtBmJtOquYXJq6WZHeZzmmCn1QCefU/TIRP4tB06/EDYdaNWImJ7GjUfXWdLdwrzX6bW+Az3CSgsKAO/6PuGTkkDDr9RrHd1+fJtne6PI9J/xjqyYl2g1dNTxg+dU4Rz8ZoSqKfGv9ZJ4O+6ieGS0FY4ceuI96Mbdsg15ZGzPGIjOtwxaF6nKHOokS5RPo7vgDeqwp6VJbUwo7Z7fSI/1goWtS9Ow7gxZ/PVms3GpVdKDu+Q4FB7uyYJE9UkQHC4FbOloDFwPtyk0vvl327HseQBGiyWDVOBQwAAEVG9fA5hpr1x1sKA==
ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass (sender ip is
 213.95.148.172) smtp.rcpttodomain=lists.xenproject.org
 smtp.mailfrom=elektrobit.com; dmarc=pass (p=quarantine sp=none pct=100)
 action=none header.from=elektrobit.com; dkim=none (message not signed);
 arc=none (0)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=elektrobit.com;
 s=selector1;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck;
 bh=2GKS7huUjzjhqkDR3rg4P6NQTDEiD+t2h7OWKwFuOAU=;
 b=BLexTEX28gMTcpxZjIMstX+Hl7PtBB3G6I2t3suDP1105siAy8ia/oPfFUHevRDDQnxiM7tTXMg1fr70lLT3RCK7ix0gMmwJ7ATnp8I04LKUBKuA/2Ii486RfbtjMDyiQT/fdN9MT/hWlBbLpARSVMlq7SsNhmoVYmbrseVlYUY=
X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 213.95.148.172)
 smtp.mailfrom=elektrobit.com; dkim=none (message not signed)
 header.d=none;dmarc=pass action=none header.from=elektrobit.com;
Received-SPF: Pass (protection.outlook.com: domain of elektrobit.com
 designates 213.95.148.172 as permitted sender)
 receiver=protection.outlook.com; client-ip=213.95.148.172;
 helo=denue6es012.ebgroup.elektrobit.com; pr=C
From: Rose Spangler <Rose.Spangler@elektrobit.com>
To: <xen-devel@lists.xenproject.org>
CC: Rose Spangler <Rose.Spangler@elektrobit.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.pau@citrix.com>, Stefano Stabellini <sstabellini@kernel.org>
Subject: [RFC PATCH v6 27/43] arm/altp2m: Add support for altp2m_{get,set}_altp2m
Date: Mon, 20 Apr 2026 17:26:32 -0400
Message-ID: <20260420212648.208640-20-Rose.Spangler@elektrobit.com>
X-Mailer: git-send-email 2.34.1
In-Reply-To: <20260420212648.208640-1-Rose.Spangler@elektrobit.com>
References: <20260420212648.208640-1-Rose.Spangler@elektrobit.com>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit
Content-Type: text/plain
X-Originating-IP: [10.10.178.50]
X-ClientProxiedBy: denue6es013.ebgroup.elektrobit.com (10.243.160.141) To
 denue6es012.ebgroup.elektrobit.com (10.243.160.140)
X-EOPAttributedMessage: 1
X-MS-Exchange-SkipListedInternetSender:
 ip=[213.95.148.172];domain=denue6es012.ebgroup.elektrobit.com
X-MS-TrafficTypeDiagnostic:
	CH2PEPF0000009F:EE_|LV3PR08MB9527:EE_|SA2PEPF00003F64:EE_|DS4PR08MB10703:EE_
X-MS-Office365-Filtering-Correlation-Id: 6d1eabce-c283-4f71-80c4-08de9f23ab9e
X-SM-outgoing: yes
X-MS-Exchange-SenderADCheck: 1
X-MS-Exchange-AntiSpam-Relay: 0
X-Microsoft-Antispam-Untrusted:
 BCL:0;ARA:13230040|704161411799003|82310400026|36860700016|376014|1800799024|56012099003|22082099003|18002099003;
X-Microsoft-Antispam-Message-Info-Original:
 =?us-ascii?Q?fDZvZNqybAEEjrpAuowvvLItvFlspzdJAfuU1qoSqZ6XSNH2hRbw2ERHgj4T?=
 =?us-ascii?Q?nvFJNc0qVrDElSbj6ergBXQyKbqcLajgHlULAEUmbUM4ptfNSL8WU/nhLqjr?=
 =?us-ascii?Q?RiIJhFtRcenJXniJVLFQNsHkkOj08CEY0+y+GVzzP/2LWNhzWeloJiGbmq1R?=
 =?us-ascii?Q?c9aU099FjlIcpsrtMnq9JR6WhoY3o03AxNObe6Warqu6H1E3GOaCPDiHrzGT?=
 =?us-ascii?Q?GOWn/x5UzxY0XSbC8C71n2520Be71bIFKbkomTOdO0HBt/gmUN+Xai+wqrFe?=
 =?us-ascii?Q?U4IT46FQHSHieXhi17iZw2e1VgioQQOIsbhtrJm/4efWdHmtkgBg/387N1V8?=
 =?us-ascii?Q?XFJkAP+ndRPZE+xMbIFUIQip8Z+2wu3+G2ysuTbNN3vdfMvKNUaAoAjiIntk?=
 =?us-ascii?Q?zk8QiML3+TQXhsdyvvI75SMebycXLMnZOLfFcD/hsxdMhSNPn65FhOvVQ3pV?=
 =?us-ascii?Q?TM+BAgH2Tfv8+gMaWwoLBxBozSwENSmdOvY/+gaNNb/Ozk17jtS/BwsycT5J?=
 =?us-ascii?Q?7fzGW3rc8iPmPmo2RnNe/Pt7hVDGQeECYURVqf5pWZspjvRLy8xkPqnbfctW?=
 =?us-ascii?Q?BpyQALu8Uag/sT1Z3JQjHH1zNrj3QAalNswB55hm7zUEEX4v8MzFtVaAlMRp?=
 =?us-ascii?Q?5XYQezHsiwHF4UgrATSrRpNhZM/tcqcqlqOCvP+Hh9pPyYQchy2hYkYSzD9l?=
 =?us-ascii?Q?hCmgdfIQbufPHTH9cZMrNiJQqn7VWKa2KIq+tyhNyTp/l0Qdmy9oSa2bZ5rO?=
 =?us-ascii?Q?Ay4uBW5tLGYlw42iU1D8GB13jGoP2FaRndXReI2jaSE21ilMRPSWZOpckUco?=
 =?us-ascii?Q?i7lOUjHgW8dQ7MyjXOU9F85dWo6yFuULgJc4zAWSo5OFb1fi0QhwdraY/Gb8?=
 =?us-ascii?Q?4P3BTfdY45iJqhZCXP/eAvFvMonh7EJix3YdSYcR06n9T1odowCH8qEIsZDJ?=
 =?us-ascii?Q?mENge8/i0DPYqIzUcqySJovuOK/YH32P1pDiFoHpR7bdwwtM8RgzJGD+seVT?=
 =?us-ascii?Q?Kn1BaYhaCHA2+fNAn8tMIqp75RR+3f4Ko63LkefvX/yKoaAhtNH3sFZt4ePq?=
 =?us-ascii?Q?bhVl0u1kPvQEigq0aqv0kg5ISzMD7aDACLBS0MDCOcnfXjMwycEg6CZGCC7M?=
 =?us-ascii?Q?lIwSqWN6Y0Mj?=
X-Forefront-Antispam-Report-Untrusted:
 CIP:213.95.148.172;CTRY:DE;LANG:en;SCL:1;SRV:;IPV:CAL;SFV:NSPM;H:denue6es012.ebgroup.elektrobit.com;PTR:eth1-fw1-nbg6.eb.noris.de;CAT:NONE;SFS:(13230040)(704161411799003)(82310400026)(36860700016)(376014)(1800799024)(56012099003)(22082099003)(18002099003);DIR:OUT;SFP:1102;
X-Exchange-RoutingPolicyChecked:
 XQCKOhPRicV3wtRInKIf0Su/9egsVYxoWONsTklr15000Jug7p3G6TfGYIWmYkk8m2SAUQYnZSvp2M+7EExTOwSXFHrKi/DBr0qyFVBnMuEvq0rfWskDcuDYXAd4n8sWOfBsyYi39Cg//0+bLItsSD2sctZJKR7f9QOl/E98mWoqGKwfoE4BPDDRjMau7gOAFhwbIzeoyunNIJ/qTiixx5TxQ9bqqGEnSvotAxVYMrUWxCHJwMALmoWxjuoQFYP6IWi7i7bsQfxVhtJUIgiygrgIl0+++5IyRWebS5Um6+rPZKeHX3RZ295gIEryScMgeC7vMZehKj20QZfOzHiq5w==
X-MS-Exchange-Transport-CrossTenantHeadersStamped: LV3PR08MB9527
X-MS-Exchange-SkipListedInternetSender:
 ip=[40.93.10.96];domain=CO1PR08CU001.outbound.protection.outlook.com
X-MS-Exchange-ExternalOriginalInternetSender:
 ip=[40.93.10.96];domain=CO1PR08CU001.outbound.protection.outlook.com
X-MS-Exchange-Transport-CrossTenantHeadersStripped:
 SA2PEPF00003F64.namprd04.prod.outlook.com
X-MS-PublicTrafficType: Email
X-MS-Office365-Filtering-Correlation-Id-Prvs:
	6eee74db-b7a7-4834-310a-08de9f23a835
X-Microsoft-Antispam:
	BCL:0;ARA:13230040|704161411799003|14060799003|1800799024|82310400026|156008|35042699022|376014|36860700016|56012099003|18002099003|22082099003;
X-Microsoft-Antispam-Message-Info:
	=?us-ascii?Q?eTZgEXIC1wnee7RSFKtEsirhmHnnE3FFyo/A8s3ULmV3/F17eyKX6kr7ASEI?=
 =?us-ascii?Q?DFTVsQsRkxOUBW47ZpGXdMI7Ijc46UhRDfBxcSkhwYe6qvTcMD198shpqlNX?=
 =?us-ascii?Q?nMuDCduULhuiYGPu4zfrCDnFS4UgSXM67/uRnczCtzDSw+c6xX8PxiG5XOOy?=
 =?us-ascii?Q?2oo2tJfwYQ0RdYHaHiM1rWbI8gcB/XpowIS1ijt+mr0UKprSyq7/o3MlzGOH?=
 =?us-ascii?Q?13rL+W8h8yB9lfVkXlVeA095xqpbPz4KDPaAiJM3BVsQ4bNdU9IFJEe7ZqRm?=
 =?us-ascii?Q?Ob3WtX53ZVmh+c1VcPKbnygKIhWLxVOlftqdYaehdBLQcds3vVUpM7ReOt2g?=
 =?us-ascii?Q?GTTlAP9zhUdmqDXsT7hgrDZ4NCdrN3Ug6aFnozRETdMsQYdz7LanET5ju/rQ?=
 =?us-ascii?Q?11mvXAINHeKA6kmKUsW7DnphJ2M4cimdtKOyMCXU2T1B1eelQhxTCqY5SuNm?=
 =?us-ascii?Q?la91Jt8wW8GHSABzozy8gNLO8SP5cGiSGY+zKYJQjFnEWu08xmRVE4w3UQ1l?=
 =?us-ascii?Q?XwAl/8Nqve6zoMptpbs2I7Per474vtLAfr5vvCve0sPbe+Qz5c7Qgv8Eu9fo?=
 =?us-ascii?Q?NXPqY6vMh0CywEmUctfBAnz5WhJg6cyJxuN8xDbbUKPvTw870n0byV/v8AGI?=
 =?us-ascii?Q?hTCQ70xVjx2kcIvmGy5HYJxmlrrQQcIramZkgkc0IreMgohvlWIlgnT1UeRe?=
 =?us-ascii?Q?TufCpLiEuSOulOwy/tmYLQsS2Zm5uUPq5KBgR/wmgf2rVOh++AWM+pRcEnEo?=
 =?us-ascii?Q?BrzM3K70iOWcOGVvkuzRxoCGxN1AjRC3cZ13/WAd2uCIYPuL193TOdyQ2Hq0?=
 =?us-ascii?Q?X7A2yC+4kDlwY4KVRtbspC8hvlimVmcR4b+JzJ7Ttjo9Tuqf/pgb+ZyxBN39?=
 =?us-ascii?Q?Rdzo368eB9Eg41u8x4DG+VYBi/etjWypF7BZ2XLTsyvWaH7usVXBaQZSI+3f?=
 =?us-ascii?Q?FNNkds7UHf6nwUDlWomhPMyL3tGGqMAJOE9zwDWqnBpEgDcPJiNMSPs0TUAI?=
 =?us-ascii?Q?/iPpBc/pR3h4FPdYX3aZK9mQbbZU/mQIChC2eQr2WUsatrNkhXSHdYkVReSb?=
 =?us-ascii?Q?BjU0s82uAh0eTcKbRIK9w7Qfof5OayJ9+sFR3QYTFsk2m0qiilXouoqg6NZ2?=
 =?us-ascii?Q?sBZ09axHSUrg?=
X-Forefront-Antispam-Report:
	CIP:4.79.107.243;CTRY:US;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:CO1PR08CU001.outbound.protection.outlook.com;PTR:mail-co1pr08cu00100.outbound.protection.outlook.com;CAT:NONE;SFS:(13230040)(704161411799003)(14060799003)(1800799024)(82310400026)(156008)(35042699022)(376014)(36860700016)(56012099003)(18002099003)(22082099003);DIR:OUT;SFP:1102;
X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1
X-MS-Exchange-AntiSpam-MessageData-0:
	7o5W4k0+P0eOej6V+OLjkTYipicnkFZIpdr2V3o64ZnspMXlVL9NkZ1U7CYiZEs4m2hre41mdLO29vgBPMP1vbbVKTkH7VgsE+d9v+Sj+3n9WpnE9nieOOZGFl2nEMxWRvY4kwu8ZJC0lMR9zE6hR/YEo0eKLU+nOIRrOi6t5VKBFWd96o7ZWiP9N891xY6+G3Z/jiq47vidm7ytbwbwZFbSyxDPBAuEe8jaLEugOWs620gQ0ukQmdGZ4CRbFrzGRcu71N1ZMTcp4uhvdtOnniXWf66nfowwhwlj/MazTz/djpdKTxdjDEXhW60rOQkWI+YBlvrH7c39uH8I/X9uzMXjbIGJmKNqDWVjgFTA8F2nuSBstqZkLqjy+ZE62mc8CyworEyrDay9rrYXSjFSl3EBNmbrFKgu/gTw3mIuUz952DgDrp5huIT7uuq0ixZD
X-OriginatorOrg: elektrobit.com
X-MS-Exchange-CrossTenant-OriginalArrivalTime: 20 Apr 2026 21:27:48.1604
 (UTC)
X-MS-Exchange-CrossTenant-Network-Message-Id: 6d1eabce-c283-4f71-80c4-08de9f23ab9e
X-MS-Exchange-CrossTenant-Id: e764c36b-012e-4216-910d-8fd16283182d
X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=e764c36b-012e-4216-910d-8fd16283182d;Ip=[4.79.107.243];Helo=[usbth1es003.ebgroup.elektrobit.com]
X-MS-Exchange-CrossTenant-AuthAs: Internal
X-MS-Exchange-CrossTenant-AuthSource: TreatMessagesAsInternal-SA2PEPF00003F64.namprd04.prod.outlook.com
X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem
X-MS-Exchange-Transport-CrossTenantHeadersStamped: DS4PR08MB10703
X-purgate-ID: tlsNG-bad1c0/1776720479-8BF7EA53-B364D9E8/0/0
X-purgate-type: clean
X-purgate-size: 1778

This commit adds support for altp2m_get_altp2m and altp2m_set_altp2m on
ARM. The x86-specific VCPU accesses have been replaced with the
architecture independent functions altp2m_vcpu_idx and altp2m_set_vcpu_idx.

This is commit 4/4 of the altp2m_{get,set}_altp2m phase.

Signed-off-by: Rose Spangler <Rose.Spangler@elektrobit.com>
---
v6: Introduced this patch.
---
 xen/include/xen/altp2m.h | 9 ++++-----
 1 file changed, 4 insertions(+), 5 deletions(-)

diff --git a/xen/include/xen/altp2m.h b/xen/include/xen/altp2m.h
index 58e74be6deb0..f5a4d0e60562 100644
--- a/xen/include/xen/altp2m.h
+++ b/xen/include/xen/altp2m.h
@@ -8,6 +8,7 @@
 
 #include <public/hvm/hvm_op.h>
 
+#include <asm/altp2m.h>
 #include <asm/p2m.h>
 
 #define INVALID_ALTP2M  0xffff
@@ -31,11 +32,10 @@ static inline bool altp2m_active(const struct domain *d)
     return d->altp2m_active;
 }
 
-#ifdef CONFIG_X86
 /* get current alternate p2m table */
 static inline struct p2m_domain *altp2m_get_altp2m(struct vcpu *v)
 {
-    unsigned int index = vcpu_altp2m(v).p2midx;
+    unsigned int index = altp2m_vcpu_idx(v);
 
     if ( index == INVALID_ALTP2M )
         return NULL;
@@ -52,19 +52,18 @@ static inline bool altp2m_set_altp2m(struct vcpu *v, unsigned int idx)
 
     BUG_ON(idx >= v->domain->nr_altp2m);
 
-    if ( idx == vcpu_altp2m(v).p2midx )
+    if ( idx == altp2m_vcpu_idx(v) )
         return false;
 
     orig = altp2m_get_altp2m(v);
     BUG_ON(!orig);
     atomic_dec(&orig->active_vcpus);
 
-    vcpu_altp2m(v).p2midx = idx;
+    altp2m_set_vcpu_idx(v, idx);
     atomic_inc(&v->domain->altp2m_p2m[idx]->active_vcpus);
 
     return true;
 }
-#endif
 
 int do_altp2m_op(XEN_GUEST_HANDLE_PARAM(void) arg);
 
-- 
2.34.1



From xen-devel-bounces@lists.xenproject.org Mon Apr 20 21:28:10 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 20 Apr 2026 21:28:10 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1287588.1568059 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wEwA6-0007lA-79; Mon, 20 Apr 2026 21:28:10 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1287588.1568059; Mon, 20 Apr 2026 21:28: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 1wEwA5-0007hX-73; Mon, 20 Apr 2026 21:28:09 +0000
Received: by outflank-mailman (input) for mailman id 1287588;
 Mon, 20 Apr 2026 21:28:05 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <Rose.Spangler@elektrobit.com>) id 1wEwA0-0006mT-VB
 for xen-devel@lists.xenproject.org; Mon, 20 Apr 2026 21:28:05 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wEwA0-00CBn7-Ar
 for xen-devel@lists.xenproject.org; Mon, 20 Apr 2026 23:28:04 +0200
Received: from [10.42.69.2] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <Rose.Spangler@elektrobit.com>)
 id 69e69a45-e002-0a2a0a5209dd-0a2a450280e4-30
 for <xen-devel@lists.xenproject.org>; Mon, 20 Apr 2026 23:28:04 +0200
Received: from [40.107.208.75]
 (helo=PH0PR06CU001.outbound.protection.outlook.com)
 by tlsNG-720697.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.1)
 (envelope-from <Rose.Spangler@elektrobit.com>)
 id 69e69a62-af86-0a2a45020019-286bd04bf5a9-3
 for <xen-devel@lists.xenproject.org>; Mon, 20 Apr 2026 23:28:04 +0200
Received: from BY5PR04CA0030.namprd04.prod.outlook.com (2603:10b6:a03:1d0::40)
 by CH3PR08MB8803.namprd08.prod.outlook.com (2603:10b6:610:17b::11)
 with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9818.32; Mon, 20 Apr
 2026 21:27:55 +0000
Received: from MWH0EPF000A6731.namprd04.prod.outlook.com
 (2603:10b6:a03:1d0:cafe::e9) by BY5PR04CA0030.outlook.office365.com
 (2603:10b6:a03:1d0::40) with Microsoft SMTP Server (version=TLS1_3,
 cipher=TLS_AES_256_GCM_SHA384) id 15.20.9791.48 via Frontend Transport; Mon,
 20 Apr 2026 21:27:55 +0000
Received: from usbth1es003.ebgroup.elektrobit.com (4.79.107.243) by
 MWH0EPF000A6731.mail.protection.outlook.com (10.167.249.23) with Microsoft
 SMTP Server (version=TLS1_3, cipher=TLS_AES_256_GCM_SHA384) id 15.20.9791.48
 via Frontend Transport; Mon, 20 Apr 2026 21:27:54 +0000
Received: from usbth1es003 (localhost [127.0.0.1])
 by usbth1es003.ebgroup.elektrobit.com (Postfix) with SMTP id 4fzz9Q4kcBz1wdX; 
 Mon, 20 Apr 2026 14:27:54 -0700 (PDT)
Received: from BN1PR07CU003.outbound.protection.outlook.com
 (mail-bn1pr07cu00302.outbound.protection.outlook.com [40.93.12.2])
 (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)
 key-exchange secp384r1 server-signature RSA-PSS (2048 bits) server-digest
 SHA256) (No client certificate requested)
 by usbth1es003.ebgroup.elektrobit.com (Postfix) with ESMTPS;
 Mon, 20 Apr 2026 14:27:54 -0700 (PDT)
Received: from CH0PR03CA0446.namprd03.prod.outlook.com (2603:10b6:610:10e::35)
 by DS0PR08MB9619.namprd08.prod.outlook.com (2603:10b6:8:1ba::22) with
 Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9818.32; Mon, 20 Apr
 2026 21:27:46 +0000
Received: from CH2PEPF0000009C.namprd02.prod.outlook.com
 (2603:10b6:610:10e:cafe::b1) by CH0PR03CA0446.outlook.office365.com
 (2603:10b6:610:10e::35) with Microsoft SMTP Server (version=TLS1_3,
 cipher=TLS_AES_256_GCM_SHA384) id 15.20.9791.48 via Frontend Transport; Mon,
 20 Apr 2026 21:27:46 +0000
Received: from denue6es012.ebgroup.elektrobit.com (213.95.148.172) by
 CH2PEPF0000009C.mail.protection.outlook.com (10.167.244.24) with Microsoft
 SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id
 15.20.9791.48 via Frontend Transport; Mon, 20 Apr 2026 21:27:46 +0000
Received: from ubuntu.localdomain (10.10.178.50) by
 denue6es012.ebgroup.elektrobit.com (10.243.160.140) with Microsoft SMTP
 Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id
 15.2.2562.35; Mon, 20 Apr 2026 23:27:43 +0200
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@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=elektrobit.com header.i="@elektrobit.com" header.h="From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck"; dkim=pass header.s=selector1 header.d=elektrobit.com header.i="@elektrobit.com" header.h="From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck"
ARC-Seal: i=2; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=pass;
 b=KmUHL3giBvDV90PUB9gQ+LCpR0oAsKIwFYcbFiBZipOm1uvMCTSObL/oQzUZgW6ZrRNF19JwiSoBZQYzxkuH17y3OXJMInw7p/uKg+uDF6KWeUqt9p9yDVYUtwrALI78UMNfEpX387TrwL8U48lG/IoZdMw44pAeikr1zalyjGrUZ+yAp8Y+yOicqFGvCMJ6oKO4DF1iP1s3LYnLt3GlbYagZxca7A4lGuLwfSk+JTsDoqnmXADdKJfMT4MiPYcdwHM7FAELn2xqFKtEresaClbGhd/oak+GC/76DcnVr6w7Ck6RyFad6AhiEqNNL6ljQSNnYbInusLwzuVJllLKfQ==
ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com;
 s=arcselector10001;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1;
 bh=GvY1Hq4hwLu2aLmi7v9CAxN3huVX6llKANSCVnMm0ZU=;
 b=GGBSb/mLw7P0Qpkk5AaMOIXae8ImBNMRqGFyfaL2xDH/VsqyalQtgUkt/raDruzP0zUVGiDusIDj7hKOBbuSVBWl8GLK/Crpj5Bhch3DC49mOcms/zZffEk78t4UY/GpdZoH31LUx8dh+zjfONOOTUxTkhT3UqwzBz1iovnUQ8drPP0H1og9vlijcFMgdFti8P/V6dvfN1u2i49IpcUqVP2B/9k7+ELPeFv5XkofZ5KkndnwvH0XH2raoj7o9XWVhpr2V4pSoc3vWyX3qNj/n+TjGkypALbBhzcAXdjR0yFD1Nd3gFdMZpTVfLb/ACbdTJTDYRaZ9j9WziVMXijd1A==
ARC-Authentication-Results: i=2; mx.microsoft.com 1; spf=pass (sender ip is
 40.93.12.2) smtp.rcpttodomain=amd.com smtp.mailfrom=elektrobit.com;
 dmarc=pass (p=quarantine sp=none pct=100) action=none
 header.from=elektrobit.com; dkim=pass (signature was verified)
 header.d=elektrobit.com; arc=pass (0 oda=1 ltdi=1
 spf=[1,1,smtp.mailfrom=elektrobit.com]
 dmarc=[1,1,header.from=elektrobit.com])
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=elektrobit.com;
 s=selector1;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck;
 bh=GvY1Hq4hwLu2aLmi7v9CAxN3huVX6llKANSCVnMm0ZU=;
 b=gBLKsFEpBpxDjZYWykV5lZuc+vLLAJwJYcGZRBIRmWkEhf1RGu8SamoYo4++TYUuBSDvhOLSWabQaoFfv6H1VrsHuy6HARPIUmkY8FGY75GgIphFCquWG69qZqQWwQ5IJzBAcb8JOyC1js64hO9xrxJ7I7d7Qxh+y9+oQLAd9E4=
X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 40.93.12.2)
 smtp.mailfrom=elektrobit.com; dkim=pass (signature was verified)
 header.d=elektrobit.com;dmarc=pass action=none header.from=elektrobit.com;
Received-SPF: Pass (protection.outlook.com: domain of elektrobit.com
 designates 40.93.12.2 as permitted sender) receiver=protection.outlook.com;
 client-ip=40.93.12.2; helo=BN1PR07CU003.outbound.protection.outlook.com; pr=C
ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none;
 b=ZJAPAsaPZf+I/CE95epreu456e3g8/wUPnmuc6msVkTaSW53LZ1fItsHA9oqGNheP8gukjyqmq2vI0G8b8jfFQ7eM1++BTQIE1R4m4dyhI4I6id5CMgOF6U8gH/IT/jBGCy+p7ak0jlwbegzZY60UXolOX8tJVecnatGFrupaa+c25zxo9FEF7WJmW7jxCUaG4yjphdvu/S/HigFYKvKkZv4izEu+4cW0TF7ovOKRDraGx3IsEKYBTq8lBWY67d4T6a6qyb/TKV4dyjQg/EnVxeaAe3NMMwGf5w9D5TdIi8dBNphDy3K5jNy+tH52VK7t46fw/7d6Vdbb7mvtGqvQA==
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com;
 s=arcselector10001;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1;
 bh=GvY1Hq4hwLu2aLmi7v9CAxN3huVX6llKANSCVnMm0ZU=;
 b=BubyTJy+uuFnZrB9UFpc3mcUWOc5LT0g0lloAqu/VU73OaXzNWQ5Y67D3IMEJKHR7px+JEZQXsiKrwvxTpuMYMlNdAgJxLU5NegLnNEYk4JeU+p1c+zHxhW7KHC6cuhp8aqjLm8mE/5ZwOC7D7yY+YRlzG0XAUt//0UO9gVAyXtog+Be1dnGI1pB4PqQzMr+KkbJ9+40PPp/fzay4MzA5xQiMsEtKIWK+avdE9MGlW9inxIx47XJBivkXksgR0YQfc6OfbWZxciw51HL4Bjc3CH4PudUKoHNex/wLhXKDiW1beVCfqm3mEnYIamlemJUJRr5vRzd5tElVix3dZafCw==
ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass (sender ip is
 213.95.148.172) smtp.rcpttodomain=lists.xenproject.org
 smtp.mailfrom=elektrobit.com; dmarc=pass (p=quarantine sp=none pct=100)
 action=none header.from=elektrobit.com; dkim=none (message not signed);
 arc=none (0)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=elektrobit.com;
 s=selector1;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck;
 bh=GvY1Hq4hwLu2aLmi7v9CAxN3huVX6llKANSCVnMm0ZU=;
 b=gBLKsFEpBpxDjZYWykV5lZuc+vLLAJwJYcGZRBIRmWkEhf1RGu8SamoYo4++TYUuBSDvhOLSWabQaoFfv6H1VrsHuy6HARPIUmkY8FGY75GgIphFCquWG69qZqQWwQ5IJzBAcb8JOyC1js64hO9xrxJ7I7d7Qxh+y9+oQLAd9E4=
X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 213.95.148.172)
 smtp.mailfrom=elektrobit.com; dkim=none (message not signed)
 header.d=none;dmarc=pass action=none header.from=elektrobit.com;
Received-SPF: Pass (protection.outlook.com: domain of elektrobit.com
 designates 213.95.148.172 as permitted sender)
 receiver=protection.outlook.com; client-ip=213.95.148.172;
 helo=denue6es012.ebgroup.elektrobit.com; pr=C
From: Rose Spangler <Rose.Spangler@elektrobit.com>
To: <xen-devel@lists.xenproject.org>
CC: Rose Spangler <Rose.Spangler@elektrobit.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.pau@citrix.com>, Stefano Stabellini <sstabellini@kernel.org>
Subject: [RFC PATCH v6 29/43] arm/altp2m: Add support for altp2m_vcpu_{initialise,destroy}
Date: Mon, 20 Apr 2026 17:26:34 -0400
Message-ID: <20260420212648.208640-22-Rose.Spangler@elektrobit.com>
X-Mailer: git-send-email 2.34.1
In-Reply-To: <20260420212648.208640-1-Rose.Spangler@elektrobit.com>
References: <20260420212648.208640-1-Rose.Spangler@elektrobit.com>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit
Content-Type: text/plain
X-Originating-IP: [10.10.178.50]
X-ClientProxiedBy: denue6es013.ebgroup.elektrobit.com (10.243.160.141) To
 denue6es012.ebgroup.elektrobit.com (10.243.160.140)
X-EOPAttributedMessage: 1
X-MS-Exchange-SkipListedInternetSender:
 ip=[213.95.148.172];domain=denue6es012.ebgroup.elektrobit.com
X-MS-TrafficTypeDiagnostic:
	CH2PEPF0000009C:EE_|DS0PR08MB9619:EE_|MWH0EPF000A6731:EE_|CH3PR08MB8803:EE_
X-MS-Office365-Filtering-Correlation-Id: 9e785e4b-54c3-426f-7e08-08de9f23af79
X-SM-outgoing: yes
X-MS-Exchange-SenderADCheck: 1
X-MS-Exchange-AntiSpam-Relay: 0
X-Microsoft-Antispam-Untrusted:
 BCL:0;ARA:13230040|704161411799003|36860700016|1800799024|376014|82310400026|56012099003|22082099003|18002099003;
X-Microsoft-Antispam-Message-Info-Original:
 =?us-ascii?Q?OoOsWKlW9lCvsd3JfNTvs31I+wP7gQHATOD91UTuGQQXHvXA1qcih02asRoI?=
 =?us-ascii?Q?awwaXPH8AcqtKR2Ld7XBMbG7p5xiaAXTzIF759vSjVMNfbVfobZ+z7IMT1vg?=
 =?us-ascii?Q?bV/LpD1N9CxpaY9OKEJs5yI46TWGB9Aa4z4geeaKv72tcVmkTHnL+JJeLMLl?=
 =?us-ascii?Q?pyI5WWLGlSvK4+hMsF+LvwgZWIPMcXwLK0HEfuXIgA+o25kHGvGCV7/LsOUH?=
 =?us-ascii?Q?7mxVpfc7AAJs31ORonb+2WcY1zcXpLxqs3kjvtDYIzYYxnJVbluQgvl+cp2J?=
 =?us-ascii?Q?gHaN+4sr9M62S0UmZk4PFmndqvmBLqy7HdT4rK02u2ZWby1iVh0DatKnsC4T?=
 =?us-ascii?Q?xaNzW1U8A7IinDtZ7vilvuvZYTvOcum9FHM7OR3RSX2QmlACJiQqkEVWL4n5?=
 =?us-ascii?Q?fg4gYsrlzPjdt77l5Jzm7GQxbp/Pl07DoRz1fv/yYC3orne9F0n7QhPoWyI3?=
 =?us-ascii?Q?tZ3TqK5GVTNvyeVb0m0GHH6n6Cqp2HCF4ubiq8t5wuyjBPLgFlDLrxQc1Cxr?=
 =?us-ascii?Q?hsraIUYnRNcITIzOUrhjouHF6ndtQcFZxOacH76PHnoNL4MRWMEwtpt3jVjk?=
 =?us-ascii?Q?ygmQQUk1Eu6KVz6VMj0JDGrvLacjE+f6oHJwcloDv0zm1m8P3tMrc7nmIU5o?=
 =?us-ascii?Q?Mv9sniduJIrlvw00sE5vyW2JSxYBnmWsHPdKzqO0lBc+9ZWAfNAGfLmfwmNS?=
 =?us-ascii?Q?Z3sayZ7xPmrFXvo9+NwxEc/7YnNgxaVSv8YBrm73dEW63zVF5jSg76AM0YU2?=
 =?us-ascii?Q?IhP0yJRkC1dk4Sn68PfMiPko/PjXXqceyFHMNtPwQ+Ei2xXYm380tzM4WkwO?=
 =?us-ascii?Q?81q9sKb13gQ2267vpI+GfFsxpXRcD9eae+sMwj4NrwnF8KJBVCRBuz1Ewg1Z?=
 =?us-ascii?Q?DuA1FVEDYq/DTPy+fDzYWPALFnAEZuG4JBBZ4PsN1bg3QwIHOaa4QWNLujW9?=
 =?us-ascii?Q?MMPfLU6UVWd4N2Vw1F3rrINjulF3tUpU2YyVq8fYS4UssIoJI3C2HRLonoS5?=
 =?us-ascii?Q?FSJGY/5EVovT3iwCkza0s1YE/CmGEsnAcNiFHqoxEkyup/M9KCu+bkxMlHuu?=
 =?us-ascii?Q?mq255K4HE8FzmVKZDPEkjgq5AQGXWv/mnDretqip9qKHi4qudCJuXa+rBTGT?=
 =?us-ascii?Q?f6g4QCEYGuhl?=
X-Forefront-Antispam-Report-Untrusted:
 CIP:213.95.148.172;CTRY:DE;LANG:en;SCL:1;SRV:;IPV:CAL;SFV:NSPM;H:denue6es012.ebgroup.elektrobit.com;PTR:eth1-fw1-nbg6.eb.noris.de;CAT:NONE;SFS:(13230040)(704161411799003)(36860700016)(1800799024)(376014)(82310400026)(56012099003)(22082099003)(18002099003);DIR:OUT;SFP:1102;
X-Exchange-RoutingPolicyChecked:
 OxzzmR/dTB6li+wilIJU/ibAjRBRO8HfMPCgZyLFCsjYj5OVuTG6L67lEh6G+9NDvTTPOhVILE0A2biN0Jyg5lhxJCEaNS4ZUJXrpMurLnjC1dpHMx6kj2kU+IMOsJB3gIOXrsGrcU03RLcYQhT2fODzG8dAdLElCyvHCkSlDXDWfPBCynRWuzK9mOi1dMuNmTA7yRwC/iyRIFPt7FMPTYX4sZf7xioQK2YUWeAmNHSVjwJ3GbbHVaVpZghwz1Xa7grRXP539jp12RnjqtS5ccfaPWNNZYse1f7djV4HmQn7A9T0LrCT7xN0GvAQbOZeg5EMvkTXWBM8xtB4n0GWeg==
X-MS-Exchange-Transport-CrossTenantHeadersStamped: DS0PR08MB9619
X-MS-Exchange-SkipListedInternetSender:
 ip=[40.93.12.2];domain=BN1PR07CU003.outbound.protection.outlook.com
X-MS-Exchange-ExternalOriginalInternetSender:
 ip=[40.93.12.2];domain=BN1PR07CU003.outbound.protection.outlook.com
X-MS-Exchange-Transport-CrossTenantHeadersStripped:
 MWH0EPF000A6731.namprd04.prod.outlook.com
X-MS-PublicTrafficType: Email
X-MS-Office365-Filtering-Correlation-Id-Prvs:
	4de98956-961f-42f8-99aa-08de9f23aa6c
X-Microsoft-Antispam:
	BCL:0;ARA:13230040|704161411799003|156008|82310400026|14060799003|35042699022|376014|36860700016|1800799024|22082099003|18002099003|56012099003;
X-Microsoft-Antispam-Message-Info:
	=?us-ascii?Q?HGZ3I7Fgwwbg1s6VEvotr/Vc0YZJvF7Lzgdo/Thph2JPKXoEj7vveHyovNVK?=
 =?us-ascii?Q?nETUj5o9pwa+MEW+74kGz1xM2OgN2j3gsMJmVQrt8xULAzjV7lT+pmeEqrKN?=
 =?us-ascii?Q?b5D4P/QaPY/Cg8IgJkGGBOVpa+P/WaEiHyufmpwFcZyNFR1bL3V8Eo5v9Yu/?=
 =?us-ascii?Q?OCwAyTMRws8AWIloFFM3LjjHJ0yLOhwjPr9O2S1aHHpjnK8MLY61wfngwR6n?=
 =?us-ascii?Q?fC5fPl3phGZmTOzkeQMPf8fVb/sUSu7jBKUf/C5SV+OtEc1UJnFg8mRAjN7Y?=
 =?us-ascii?Q?XWW8yzwFoeIJlVPUPH0uj30QRiOgxLYWjq3G2gq8B0ygXXbvOIAphJfDJns0?=
 =?us-ascii?Q?Ax/JqI2+j4ODhdmGGfyFDsSv5kriOqQUPL5MP+0dqdnylwQAt/XyY4zeP7u/?=
 =?us-ascii?Q?du/ldbCs5pbofbWM4Ys3GWVHLUKisJXqVYd5P9TYpRwbuKiLJV8ikmtGO1UL?=
 =?us-ascii?Q?IUtlAd1/vUD9cnnd1gP1vWFuUGvSugzJgP/79lzvZk/Bq5amgm1EwAxlG6RT?=
 =?us-ascii?Q?2lnDoY+lRIFD6ntv6YC4tJ2g8LxIBbDSZQdOggQ8gRfvq3yUDtiFKNoMyeLU?=
 =?us-ascii?Q?5dbu3FeSRJAuyM1sr0/X6rnpzsAgbq8mPDBJSAoMxZvAQdCQ1Ne/m1quuO+w?=
 =?us-ascii?Q?rR4Y/m1q1dBrJf6SaTDetm/LltO4QkLhB3j5jeKrzSkHZeSSydCDkkvK7BVu?=
 =?us-ascii?Q?n5DMWkM4sivhNXyV3yGmSYuNb+9y78yIspqCPM4gso1QI4cyCShkJI0lLGI/?=
 =?us-ascii?Q?6bZzfSEYHFg457g5P8sObdaZI11KWksdjhYPE0ytfwcNoHLN0XtsXlANOyEq?=
 =?us-ascii?Q?pp5qy9H4AnqTEvGjGOhU7i68uHsyzaJYrmbw2ZVLgugH8rdO3lci9/6P4U0H?=
 =?us-ascii?Q?aHQ3GBeR0LTXCTY5ndTqI3bW7N4YIIelFhRAAuabCl2mVlJLP1SjIfw3Nfvp?=
 =?us-ascii?Q?ZLpCMWi/DOOB009cUBmpdX+7DY8dPr8yQ0LInKeSWPHB6VqKuII5xZzqHRd+?=
 =?us-ascii?Q?hA5YNoowftl90u5iu2e8tI2VmaxLueTmgzNOc/1H0p2qeUL60RTI/VsXRkoD?=
 =?us-ascii?Q?Op8tUN1FbIWRTvYMpBRNA5JRlrvyXgc93S6wEfIiwYW7bFjqis8IWc7JujK8?=
 =?us-ascii?Q?qa/0U+QveJ6z?=
X-Forefront-Antispam-Report:
	CIP:4.79.107.243;CTRY:US;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:BN1PR07CU003.outbound.protection.outlook.com;PTR:mail-bn1pr07cu00302.outbound.protection.outlook.com;CAT:NONE;SFS:(13230040)(704161411799003)(156008)(82310400026)(14060799003)(35042699022)(376014)(36860700016)(1800799024)(22082099003)(18002099003)(56012099003);DIR:OUT;SFP:1102;
X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1
X-MS-Exchange-AntiSpam-MessageData-0:
	ZakltMU1mMnE+bRdLJuOgP3hZwlqIBPWQHfg//M8oJvt1MQQRkXjaLQRF0H+gnj4WGLwqFRJv3EJW2a9xI4IKyLGvKGgwYeuTYsONWqTZ/NlgR1fkq/U9ZXV5upMvNflBep1h5NzCVIJZqHP+rREk0mcKzlAwXSU+O0TeHTN86mBHA5pnMAdq7tziScffFdN7r7WnMGG6qwephEFGELSzwoFwlEJf11hivkmeUzuKsZsetIJPGWQT3Ro8oPKuWq3+CyYJ5135bz+w6Y/RVZVl2bV7ab8DpEGjZmziwT4MJYqoH9ZxwqrgeYhmx8MfQiPQCkJNBsXxkZC8HO2/2ptwwqa44OEnK+kHdktH2SmBJl9wQGV7ebGsrUIUQ4UwWB8863vK3cnVJQMgOAiTnzH85KcBwHbzS522Gnv7KrQ06BVCjQJronsY3aPsJrZ2F7g
X-OriginatorOrg: elektrobit.com
X-MS-Exchange-CrossTenant-OriginalArrivalTime: 20 Apr 2026 21:27:54.8764
 (UTC)
X-MS-Exchange-CrossTenant-Network-Message-Id: 9e785e4b-54c3-426f-7e08-08de9f23af79
X-MS-Exchange-CrossTenant-Id: e764c36b-012e-4216-910d-8fd16283182d
X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=e764c36b-012e-4216-910d-8fd16283182d;Ip=[4.79.107.243];Helo=[usbth1es003.ebgroup.elektrobit.com]
X-MS-Exchange-CrossTenant-AuthAs: Internal
X-MS-Exchange-CrossTenant-AuthSource: TreatMessagesAsInternal-MWH0EPF000A6731.namprd04.prod.outlook.com
X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem
X-MS-Exchange-Transport-CrossTenantHeadersStamped: CH3PR08MB8803
X-purgate-ID: tlsNG-720697/1776720484-88EC8161-95025BFE/0/0
X-purgate-type: clean
X-purgate-size: 3182

This commit adds support for the altp2m_vcpu_initialise and
altp2m_vcpu_destroy functions on ARM. The x86-specific function calls,
altp2m_vcpu_disable_ve and altp2m_vcpu_update_p2m, are gated with #ifdef
CONFIG_X86.

This is commit 2/2 of the altp2m_vcpu_{initialise,destroy} phase.

Signed-off-by: Rose Spangler <Rose.Spangler@elektrobit.com>
---
v6: Introduced this patch.

    The equivalent to this patch in the v4/v5 was originally part of the
    patch named "arm/altp2m: Add HVMOP_altp2m_set_domain_state". In that
    patch, the check that the VCPU passed to altp2m_vcpu_initialise isn't
    the current CPU was removed. This was because ARM only implements the
    external altp2m mode, meaning the current VCPU could never be a VCPU of
    the guest for which altp2m is being initialized for. Therefore,
    skipping this check was a slight optimization. I've removed that here
    because altp2m_vcpu_initialise is only called during an HVMOP, and
    skipping this check on ARM (especially when x86 also implements the
    external altp2m mode) causes more confusion than the slight
    optimization is worth in my view.
---
 xen/common/altp2m.c      | 14 ++++++++++----
 xen/include/xen/altp2m.h |  2 --
 2 files changed, 10 insertions(+), 6 deletions(-)

diff --git a/xen/common/altp2m.c b/xen/common/altp2m.c
index e699b64678d8..7b80426c7798 100644
--- a/xen/common/altp2m.c
+++ b/xen/common/altp2m.c
@@ -11,6 +11,7 @@
 #include <xsm/xsm.h>
 
 #if defined(CONFIG_X86) && defined(CONFIG_HVM)
+#include <asm/hvm/hvm.h>
 #include <asm/hvm/nestedhvm.h>
 #endif
 
@@ -59,7 +60,6 @@ void altp2m_teardown(struct domain *d)
     XVFREE(d->altp2m_p2m);
 }
 
-#ifdef CONFIG_X86
 void altp2m_vcpu_initialise(struct vcpu *v)
 {
     if ( !v->domain->nr_altp2m )
@@ -68,10 +68,12 @@ void altp2m_vcpu_initialise(struct vcpu *v)
     if ( v != current )
         vcpu_pause(v);
 
-    vcpu_altp2m(v).p2midx = 0;
+    altp2m_set_vcpu_idx(v, 0);
     atomic_inc(&altp2m_get_altp2m(v)->active_vcpus);
 
+#ifdef CONFIG_X86
     altp2m_vcpu_update_p2m(v);
+#endif
 
     if ( v != current )
         vcpu_unpause(v);
@@ -90,15 +92,19 @@ void altp2m_vcpu_destroy(struct vcpu *v)
     if ( (p2m = altp2m_get_altp2m(v)) )
         atomic_dec(&p2m->active_vcpus);
 
+#ifdef CONFIG_X86
     altp2m_vcpu_disable_ve(v);
+#endif
 
-    vcpu_altp2m(v).p2midx = INVALID_ALTP2M;
+    altp2m_set_vcpu_idx(v, INVALID_ALTP2M);
+
+#ifdef CONFIG_X86
     altp2m_vcpu_update_p2m(v);
+#endif
 
     if ( v != current )
         vcpu_unpause(v);
 }
-#endif
 
 /*
  * altp2m operations are envisioned as being used in several different
diff --git a/xen/include/xen/altp2m.h b/xen/include/xen/altp2m.h
index 7defe6126563..37c875a52327 100644
--- a/xen/include/xen/altp2m.h
+++ b/xen/include/xen/altp2m.h
@@ -24,11 +24,9 @@ int altp2m_init(struct domain *d);
 /* Free altp2m views */
 void altp2m_teardown(struct domain *d);
 
-#ifdef CONFIG_X86
 /* Alternate p2m VCPU */
 void altp2m_vcpu_initialise(struct vcpu *v);
 void altp2m_vcpu_destroy(struct vcpu *v);
-#endif
 
 #ifdef CONFIG_ALTP2M
 
-- 
2.34.1



From xen-devel-bounces@lists.xenproject.org Mon Apr 20 21:28:45 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 20 Apr 2026 21:28:45 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1287710.1568088 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wEwAe-0003MP-5s; Mon, 20 Apr 2026 21:28:44 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1287710.1568088; Mon, 20 Apr 2026 21: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 1wEwAe-0003ME-2g; Mon, 20 Apr 2026 21:28:44 +0000
Received: by outflank-mailman (input) for mailman id 1287710;
 Mon, 20 Apr 2026 21:28:43 +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 1wEwAc-0003Kn-Rn
 for xen-devel@lists.xenproject.org; Mon, 20 Apr 2026 21:28:43 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wEwAc-00CBn7-8c
 for xen-devel@lists.xenproject.org; Mon, 20 Apr 2026 23:28:42 +0200
Received: from [10.42.69.2] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <Jason.Andryuk@amd.com>)
 id 69e69a76-e002-0a2a0a5209dd-0a2a4502cbe8-10
 for <xen-devel@lists.xenproject.org>; Mon, 20 Apr 2026 23:28:41 +0200
Received: from [52.101.43.41]
 (helo=SJ2PR03CU001.outbound.protection.outlook.com)
 by tlsNG-720697.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.1)
 (envelope-from <Jason.Andryuk@amd.com>)
 id 69e69a87-af86-0a2a45020019-34652b293681-3
 for <xen-devel@lists.xenproject.org>; Mon, 20 Apr 2026 23:28:41 +0200
Received: from BY1P220CA0004.NAMP220.PROD.OUTLOOK.COM (2603:10b6:a03:59d::15)
 by PH7PR12MB6835.namprd12.prod.outlook.com (2603:10b6:510:1b5::14)
 with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9846.15; Mon, 20 Apr
 2026 21:28:36 +0000
Received: from SJ1PEPF000023CC.namprd02.prod.outlook.com
 (2603:10b6:a03:59d:cafe::a5) by BY1P220CA0004.outlook.office365.com
 (2603:10b6:a03:59d::15) with Microsoft SMTP Server (version=TLS1_3,
 cipher=TLS_AES_256_GCM_SHA384) id 15.20.9791.48 via Frontend Transport; Mon,
 20 Apr 2026 21:28:36 +0000
Received: from satlexmb07.amd.com (165.204.84.17) by
 SJ1PEPF000023CC.mail.protection.outlook.com (10.167.244.6) with Microsoft
 SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id
 15.20.9791.48 via Frontend Transport; Mon, 20 Apr 2026 21:28:36 +0000
Received: from SATLEXMB04.amd.com (10.181.40.145) by satlexmb07.amd.com
 (10.181.42.216) with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.2.2562.17; Mon, 20 Apr
 2026 16:28:35 -0500
Received: from satlexmb07.amd.com (10.181.42.216) by SATLEXMB04.amd.com
 (10.181.40.145) with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2507.39; Mon, 20 Apr
 2026 16:28:35 -0500
Received: from [172.28.123.27] (10.180.168.240) by satlexmb07.amd.com
 (10.181.42.216) with Microsoft SMTP Server id 15.2.2562.17 via Frontend
 Transport; Mon, 20 Apr 2026 16:28:34 -0500
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@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=dMUelBZXaGBkphqheZp35pSI5IsMeb18f7eo0FvtCBRyCU9gyLSXr7G5T5Na+3mmUGsARMCWxURUg94nLsMnNgPVqoyyFuSdiHwcBXeKU9aDOwWV0FVlzfTJ1ie2DD1Sfbylwyt+1KThMr40rj1rZN63wkmO/wgXktz1GGwecLPFkU6PTJ1fet+QE7yzhF7AgAG/zjuD6RRuvCfx+qe7wa9KN6Fk1ENCzvUcopC4jq7PXlZS8f9dFQrdWCCSQlvE4Cze/poEUoEtEqQmT2PUOcT+lOUSe0c5pshla3gHW66L1rbdRims1K/hrPa3DkmmRrmpQU9N/8bfaIifWUrmfw==
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com;
 s=arcselector10001;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1;
 bh=26xqOvvXQHptsIYYwqzi2V5Krx1Y9DPz9R1+yB4pqvs=;
 b=CzYK/4jHtL1v5m+LgeosMTedTpo5NI9SHEoByQk/Ui7/Z7nAnCZDESRaiNVxcCg+xo5N3AELC9s3fZDhre6z40NHu9gANYx0BHDxDPzgfZH8SodVyEaP+MduqwNmjzJw6+rcrNxNhkZoCvdewvOO1stJYNLs9MKwZC7gSngHi+kXhdUcZC/FIb3RpqgiF5eizT/ymt1XoNVEg41Tdi9NUI4o9AILsGn9Q+34kkS3eLge7nbdI8DAETKRb/JZ1RVflyRNFu7iCChVFwdNaRylipW0OEYs2umst1WofjJHcfdzNylZE1TpBxm3DlS/kmQO+U2/5Risg0DMVdLFcAhcnw==
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=26xqOvvXQHptsIYYwqzi2V5Krx1Y9DPz9R1+yB4pqvs=;
 b=oTS2rjwlrZp2U9ZXYKSGMwXYbinsQhFPYlOb8gJ/TUBCKfK8i+NyaBpN1QAztf3xbWrvl7QKVkBEQD8GjE0Pe6uD3IbqZOJ5MTrq2FUG5n0EeWUsdC2JkglfatLPAEAKMq+PDf8CJHqxuHf427SVMAPTnFRH1st1yhC+gZU00QM=
X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 165.204.84.17)
 smtp.mailfrom=amd.com; dkim=none (message not signed)
 header.d=none;dmarc=pass action=none header.from=amd.com;
Received-SPF: Pass (protection.outlook.com: domain of amd.com designates
 165.204.84.17 as permitted sender) receiver=protection.outlook.com;
 client-ip=165.204.84.17; helo=satlexmb07.amd.com; pr=C
Message-ID: <d0f9b670-49e1-4e06-bfdc-4847db790cbc@amd.com>
Date: Mon, 20 Apr 2026 17:28:34 -0400
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH 1/8] tools/xenstored: allow domU to get own features
To: Juergen Gross <jgross@suse.com>, <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.pau@citrix.com>, Stefano Stabellini
	<sstabellini@kernel.org>
References: <20260313074751.2904215-1-jgross@suse.com>
 <20260313074751.2904215-2-jgross@suse.com>
Content-Language: en-US
From: Jason Andryuk <jason.andryuk@amd.com>
In-Reply-To: <20260313074751.2904215-2-jgross@suse.com>
Content-Type: text/plain; charset="UTF-8"; format=flowed
Content-Transfer-Encoding: 7bit
Received-SPF: None (SATLEXMB04.amd.com: jason.andryuk@amd.com does not
 designate permitted sender hosts)
X-EOPAttributedMessage: 0
X-MS-PublicTrafficType: Email
X-MS-TrafficTypeDiagnostic: SJ1PEPF000023CC:EE_|PH7PR12MB6835:EE_
X-MS-Office365-Filtering-Correlation-Id: 4dd93f28-fe3f-4a7b-77bc-08de9f23c858
X-MS-Exchange-SenderADCheck: 1
X-MS-Exchange-AntiSpam-Relay: 0
X-Microsoft-Antispam:
	BCL:0;ARA:13230040|82310400026|376014|36860700016|1800799024|56012099003|22082099003|18002099003;
X-Microsoft-Antispam-Message-Info:
	lnBTgGK4qQgYrdsujuVEE7lVHXoBbkLSW1oO5xeu9jJhjkFsxNhGV4x5uuiERjIO8xGluzgXq2P7uHdNlN5uZqKitI57hJeU+rsRugfig7y2Vz1SzJJSBfHOKRY6CiJZJXrNYTfvGkop8QyWQ2lu90fHKaWJsh/cErxjTxOd7AWNXpOX6zHWs6FSVUyTKtqCrss7ZzkQQ/8wNyU8w2td52Y46wadMnp7kw5+v5u8vkbdJ19g279KV4+dGKd0W+3M9/+vGihPGpgKXEuZGWAWXD5QTrGqo4wVDdKYNlU5fOgngBeLtAQKxyDwsNeWuVCuoNac0eNrSpyzTRg1FKr1SxKQEztZhoiQ62MSJlCXraTqqqmIvHFxRLzJx+g9CC4en4D6I66LSqYAfDavFdA7agUIKggQ+d+bJ5fvaWB5TSVckWbo71l4ftdZPsv8KenDu1YQ5smumOhzI+iKkRreEkTYS4u8srLm3dJbdOA36RyinLIFq3wCPMFhwZoPfKMUZV8ayDFeE8Vq2Nl/AvJf782R7l0RzK1EtHQd1GndszmDXXIRSN9g2vIjD4jBT5tWwwsELiR80kbs2FnWvrr7yCsrl+4RB6jWIWG4srimW9WejQI+iEq/I0vhLEB+U1E9zEfS7h1LXUTw+f9vmNCMDY1pnAzoIv3nf0p1GTUJY1Pd0liwrNwEEvCBpECL7ft1R68zN+30pTBzbyPJIkcZ8t8jjE8yzXi+sumBqzrrxJW3McSKks0h8RxUBkuC9nvwMPY10jjg89c6JC7zMBXfkg==
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)(376014)(36860700016)(1800799024)(56012099003)(22082099003)(18002099003);DIR:OUT;SFP:1101;
X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1
X-MS-Exchange-AntiSpam-MessageData-0:
	HENEAHweVZM9dx1Voiw7aSFf3MAFVwqfPKdMlyTXNfpFmkiokTT9YGdzmr7t8bf8xyoZQwTtRTL4lAzhvK+y5NFsiEbCvYlI1Uo69qStJMARVeIlsj9UZljYSWAcQlJY9f/zLkcRJqNyLWDHRscrnagY2D+FM+z8g4YSln6+3LX+t17DlQ+v19XxCCv34MeAJTgbkCJHp43mfvVVzvbT/UDAJB2ng5vxAyjPbIaBs7eqgTAdt4ep6wKY6VAp85f9mExtgfrjycpEj2/zH/Myntzrb/li/ilstCc8+t+GqtGggfaPczxNjoc4wbzWpIAtQlzR2+itjmr3JeTlKz1xDzJvnvCw5wUIFx99J5SPlRvQoG2XxAbmfRESLm6E4bEo+DRXaEzjyFHwXH2IiGxQEOD1e5f+29pSHR2WEpswhT7Mtan0w73+vtvHZJtAAPD8
X-OriginatorOrg: amd.com
X-MS-Exchange-CrossTenant-OriginalArrivalTime: 20 Apr 2026 21:28:36.5765
 (UTC)
X-MS-Exchange-CrossTenant-Network-Message-Id: 4dd93f28-fe3f-4a7b-77bc-08de9f23c858
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:
	SJ1PEPF000023CC.namprd02.prod.outlook.com
X-MS-Exchange-CrossTenant-AuthAs: Anonymous
X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem
X-MS-Exchange-Transport-CrossTenantHeadersStamped: PH7PR12MB6835
X-purgate-ID: tlsNG-720697/1776720521-8A2C6161-3F6434FC/0/0
X-purgate-type: clean
X-purgate-size: 2195

On 2026-03-13 03:47, Juergen Gross wrote:
> Expand the XS_GET_FEATURE command to allow an unprivileged domain to
> read its own available features. While this information is available
> via the related field in the shared page used for communication with
> Xenstore, user land components of the domU would need special support
> in the related kernel driver to obtain that data. With supporting the
> XS_GET_FEATURE for that purpose, only an up to date libxenstore is
> needed.
> 
> Signed-off-by: Juergen Gross <jgross@suse.com>
> ---
>   docs/misc/xenstore.txt   |  9 +++++----
>   tools/xenstored/core.c   |  3 +--
>   tools/xenstored/domain.c | 16 +++++++++++-----
>   3 files changed, 17 insertions(+), 11 deletions(-)
> 
> diff --git a/docs/misc/xenstore.txt b/docs/misc/xenstore.txt
> index 4eccbc2f7f..8a2c19d116 100644
> --- a/docs/misc/xenstore.txt
> +++ b/docs/misc/xenstore.txt
> @@ -427,13 +427,14 @@ SET_FEATURE		<domid>|<value>|
>   	to set a bit for a feature not being supported by the running
>   	Xenstore will be denied. Providing no <domid> with the
>   	GET_FEATURE command will return the features which are supported
> -	by Xenstore.
> +	by Xenstore for the domain issuing the command.
>   
>   	SET_FEATURE for a domain will be rejected after the INTRODUCE
> -	command for this domain has been sent to xenstored.
> +	command for this domain has been sent to xenstored. This has the
> +	effect that dom0 will always have all supported features enabled.

This statement...

> --- a/tools/xenstored/domain.c
> +++ b/tools/xenstored/domain.c
> @@ -1293,17 +1293,23 @@ int do_get_feature(const void *ctx, struct connection *conn,
>   	char *result;
>   
>   	n_args = get_strings(in, vec, ARRAY_SIZE(vec));
> -	if (n_args > 1)
> -		return EINVAL;
>   
> -	if (n_args == 1) {
> +	if (!n_args) {
> +		features = conn->domain ? conn->domain->features
> +					: XENSTORE_FEATURES;

... cover this, yes?  With a stubdom, dom0 will have conn->domain. 
conn->domain->features is initialized to XENSTORE_FEATURES and cannot 
change.  Provided that is correct:

Reviewed-by: Jason Andryuk <jason.andryuk@amd.com>

Thanks,
Jason


From xen-devel-bounces@lists.xenproject.org Mon Apr 20 21:28:50 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 20 Apr 2026 21:28:50 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1287712.1568097 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wEwAk-0003jW-Hb; Mon, 20 Apr 2026 21:28:50 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1287712.1568097; Mon, 20 Apr 2026 21:28: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 1wEwAk-0003jI-E9; Mon, 20 Apr 2026 21:28:50 +0000
Received: by outflank-mailman (input) for mailman id 1287712;
 Mon, 20 Apr 2026 21:28:49 +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 1wEwAj-0003hb-Ki
 for xen-devel@lists.xenproject.org; Mon, 20 Apr 2026 21:28:49 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wEwAj-001NCr-1Z
 for xen-devel@lists.xenproject.org; Mon, 20 Apr 2026 23:28:49 +0200
Received: from [10.42.69.12] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <Jason.Andryuk@amd.com>)
 id 69e69a1b-2eae-0a2a0a5409dd-0a2a450cb340-28
 for <xen-devel@lists.xenproject.org>; Mon, 20 Apr 2026 23:28:48 +0200
Received: from [52.101.53.10]
 (helo=BL0PR03CU003.outbound.protection.outlook.com)
 by tlsNG-d25034.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.1)
 (envelope-from <Jason.Andryuk@amd.com>)
 id 69e69a8f-62f1-0a2a450c0019-3465350a1fce-3
 for <xen-devel@lists.xenproject.org>; Mon, 20 Apr 2026 23:28:48 +0200
Received: from SJ0PR13CA0074.namprd13.prod.outlook.com (2603:10b6:a03:2c4::19)
 by PH0PR12MB8052.namprd12.prod.outlook.com (2603:10b6:510:28b::18)
 with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9846.15; Mon, 20 Apr
 2026 21:28:44 +0000
Received: from SJ1PEPF000023D2.namprd02.prod.outlook.com
 (2603:10b6:a03:2c4:cafe::9d) by SJ0PR13CA0074.outlook.office365.com
 (2603:10b6:a03:2c4::19) with Microsoft SMTP Server (version=TLS1_3,
 cipher=TLS_AES_256_GCM_SHA384) id 15.20.9791.48 via Frontend Transport; Mon,
 20 Apr 2026 21:28:44 +0000
Received: from satlexmb07.amd.com (165.204.84.17) by
 SJ1PEPF000023D2.mail.protection.outlook.com (10.167.244.9) with Microsoft
 SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id
 15.20.9791.48 via Frontend Transport; Mon, 20 Apr 2026 21:28:44 +0000
Received: from SATLEXMB04.amd.com (10.181.40.145) by satlexmb07.amd.com
 (10.181.42.216) with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.2.2562.17; Mon, 20 Apr
 2026 16:28:43 -0500
Received: from satlexmb07.amd.com (10.181.42.216) by SATLEXMB04.amd.com
 (10.181.40.145) with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2507.39; Mon, 20 Apr
 2026 16:28:43 -0500
Received: from [172.28.123.27] (10.180.168.240) by satlexmb07.amd.com
 (10.181.42.216) with Microsoft SMTP Server id 15.2.2562.17 via Frontend
 Transport; Mon, 20 Apr 2026 16:28:43 -0500
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@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=ujxkHHrm4luJ5WeVpbxPJJMRKNKcKPl1it2rHrlj5rmDLpz544N0E2dbA+vtdcHyUT+DhhSfP7UPClnWARRyZOrvWARthhzp/Upt+skqzGuF5R5reOUe66x6YYomJiK/h5ZlnBamhi5+Mv0Io0IpPqKZQLrrrOwT1vYZor9FpSjHlIHFfGWO/01ZLyKfxPk8F4BJtLulVixAjr95c1+ySh+e/X11IGH5/tujXaHyuy0BGUPZJR6mJd1gmV5LrZU8xtr9sI/0cZ7Wc3+NZExp/50Ca46OLuA/CSm59S/Sl2iNvQapf+CnE/zpl0wWRrcnBCthwptGRy//aVRZInHdiw==
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com;
 s=arcselector10001;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1;
 bh=rFviQzvH13Q1m7fXCqeWDpjZv4GT4Dg19hHWEY2R9k0=;
 b=KzJqzTh4kL8AtNWcCoLn+1YFotutiO7CzbuhW9ndHpSnLbG7/p6jahM/sdd5t9BA78zXiX8IjNAkbUutiZ/x20QJLYcGk8bFxJPXATuVQ/bjhv2qgyZbGCC8eIcRpJYUT8QZqZ1GVD8deWz1XWwy1KfrtSriw82YvqwD5k+i9RQ7LDLqP0iCxKDBQ1snWqTATP2fPwcvWhGiOSO952vAleYc/EtYLVc6yFf5MyiKWlceCG2SaojnMo43TQNEpodS6lLq01ERUjwpk0vMxb9wSVdUFzckYRY1nx01qzOsyqk0AN/xJ7RcivlYmvEf6R6SMA5jXS58g3Cib32dSbJwaA==
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=rFviQzvH13Q1m7fXCqeWDpjZv4GT4Dg19hHWEY2R9k0=;
 b=TIJ4jfv/6/4UbPGKeRybDIWiRm+8BmzntvqN2q8yp+mV3JYXz1I+Rp/TTJ8IVqvL6NRoFi4cii1N2bhOvAJMeZAaaGdjsL4m+s2HIahcm1U3Hc0IzlmComlFhp9jEupewN9LU3OSjOrUCCm312e0YyORzFroxH5KrcO/agwAZzs=
X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 165.204.84.17)
 smtp.mailfrom=amd.com; dkim=none (message not signed)
 header.d=none;dmarc=pass action=none header.from=amd.com;
Received-SPF: Pass (protection.outlook.com: domain of amd.com designates
 165.204.84.17 as permitted sender) receiver=protection.outlook.com;
 client-ip=165.204.84.17; helo=satlexmb07.amd.com; pr=C
Message-ID: <29caaacb-6ec0-4a2a-b32d-b0cd4fc7df13@amd.com>
Date: Mon, 20 Apr 2026 17:28:42 -0400
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH 2/8] docs: clarify Xenstore watch depth feature
To: Juergen Gross <jgross@suse.com>, <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.pau@citrix.com>, Stefano Stabellini
	<sstabellini@kernel.org>
References: <20260313074751.2904215-1-jgross@suse.com>
 <20260313074751.2904215-3-jgross@suse.com>
Content-Language: en-US
From: Jason Andryuk <jason.andryuk@amd.com>
In-Reply-To: <20260313074751.2904215-3-jgross@suse.com>
Content-Type: text/plain; charset="UTF-8"; format=flowed
Content-Transfer-Encoding: 7bit
Received-SPF: None (SATLEXMB04.amd.com: jason.andryuk@amd.com does not
 designate permitted sender hosts)
X-EOPAttributedMessage: 0
X-MS-PublicTrafficType: Email
X-MS-TrafficTypeDiagnostic: SJ1PEPF000023D2:EE_|PH0PR12MB8052:EE_
X-MS-Office365-Filtering-Correlation-Id: ee9ef4de-434a-4806-1d3c-08de9f23cce7
X-MS-Exchange-SenderADCheck: 1
X-MS-Exchange-AntiSpam-Relay: 0
X-Microsoft-Antispam:
	BCL:0;ARA:13230040|1800799024|36860700016|376014|82310400026|56012099003|18002099003|22082099003;
X-Microsoft-Antispam-Message-Info:
	sI9054oefL+5JNGwIDzZeYEawGopZ+xXNp1TbbuIAqIiz6NCw1nWPs5QxCDvH+mC/wVkQCv86amO6oBmQIvm2p+HqKXqBkyUIMnhdhI4tYjzXEE4ob+cdX5tv88UnkvFXy7Woq9ssn0VS9vuKVUpQpEkc/7u8IHUCSwNU3SFlGMfG21VTVc+oWRTr5kupfx7lBg6DfOM6AHV/Bj3UA8RnqSLi1oWdCtyD70/r8pfrUHP6kkePJ+8boduAhd6rafQtT97epWvxylxoaj1wPdbaTaHBa+vbtx++8gMsEmu0OqugAc3S9hpkf95SW/uNL2NLWiv2WYY8tueF8PUW67KlnTMCarzaDwC0qNSudMpwRwHkoAeop4JQRk4q7nxINJKGB4nzAIbGnRg8NP5HCc+M8P2F8Df13t2kgAhfWlOU9KIbZrH2MXi5syfRRTt7FrJnDahguKTpGiTFpL/bK5yHOsrjYK7Wjgtl+s25JAswAEWWYHuhwtZSqkLbjPjNyr3JADbElFPzgMsRfmb6h/gMOnhj7yGZ3PisdkPRFD+I7cVCJjpueBOK9rUaQFSNXPS9MBQEaDFO2Zi2A8j6Bf3Ct5e03UjY2mZowZxhB9wHn3L862SMvcHFygcj4Qm9IVVnPF/sZef+XkrbnFlHLP6fnQoGugLD/0ox8pJBvAJHnMXlRoVFqiBb3UoxiavqBkCF0LfTdVLKW+IugVTrAqFjPkUka1g7WZMuxi0Bqr74pPZ2hDnD0nJpaMqDyI2f1u1Zy1e5DOdneLPpl/wAtIL4g==
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)(36860700016)(376014)(82310400026)(56012099003)(18002099003)(22082099003);DIR:OUT;SFP:1101;
X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1
X-MS-Exchange-AntiSpam-MessageData-0:
	sQVcgROuM4xSoDlPElB/qgxDVWWDWZzM1S15w+2VIYRj/b2tHrAgJ5BxYcBaGr/lhqsZVL31J8TibXpFbDP6vu79lNrMY7qAkcH0ql9q2twt1xLOnIHGUY9itvYGRWaAmUumhvNSqEPArUipm+JPhVIPYvU/g6wxhZfiV01BnOGhveDW0O5rCKtrD2jQaK9TfJPZsWcM6H+DjuxFKCrwT4CkUF48LoulDTlTcciwI1msbvsugSDLfZDAuHUwoOnR4mIXtsrPgBwxJsrtDv7aj0W2fphX5pWPnGQ7Iy0s9rztxVWMzjbwcD8+E81zpNmo09ov/LgxLizIyTKp0+lTgtcZd0Kl5fz0wfyJ7NY2X7F1avibmNEXJt0DCgPqJVr984og9BYJFE4aEpbQ0Oi/ruse0JtAXLgdH0FjFIxdxgiG3J4ojYYzphF8F8q2/i1E
X-OriginatorOrg: amd.com
X-MS-Exchange-CrossTenant-OriginalArrivalTime: 20 Apr 2026 21:28:44.2745
 (UTC)
X-MS-Exchange-CrossTenant-Network-Message-Id: ee9ef4de-434a-4806-1d3c-08de9f23cce7
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:
	SJ1PEPF000023D2.namprd02.prod.outlook.com
X-MS-Exchange-CrossTenant-AuthAs: Anonymous
X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem
X-MS-Exchange-Transport-CrossTenantHeadersStamped: PH0PR12MB8052
X-purgate-ID: tlsNG-d25034/1776720528-6D76ECF5-7E808F65/0/0
X-purgate-type: clean
X-purgate-size: 283

On 2026-03-13 03:47, Juergen Gross wrote:
> Make it explicit that for watching the @releaseDomain/<domid> special
> node, the XENSTORE_SERVER_FEATURE_WATCHDEPTH is needed.
> 
> Signed-off-by: Juergen Gross <jgross@suse.com>

Reviewed-by: Jason Andryuk <jason.andryuk@amd.com>


From xen-devel-bounces@lists.xenproject.org Mon Apr 20 21:30:17 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 20 Apr 2026 21:30:17 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1287730.1568105 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wEwC8-0006FL-TY; Mon, 20 Apr 2026 21:30:16 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1287730.1568105; Mon, 20 Apr 2026 21: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 1wEwC8-0006FE-Qd; Mon, 20 Apr 2026 21:30:16 +0000
Received: by outflank-mailman (input) for mailman id 1287730;
 Mon, 20 Apr 2026 21:30:15 +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 1wEwC7-0006F2-95
 for xen-devel@lists.xenproject.org; Mon, 20 Apr 2026 21:30:15 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wEwC6-00CBuB-M5
 for xen-devel@lists.xenproject.org; Mon, 20 Apr 2026 23:30:14 +0200
Received: from [10.42.69.4] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <Jason.Andryuk@amd.com>)
 id 69e69a96-e002-0a2a0a5209dd-0a2a4504dc14-18
 for <xen-devel@lists.xenproject.org>; Mon, 20 Apr 2026 23:30:14 +0200
Received: from [40.107.201.7]
 (helo=CH4PR04CU002.outbound.protection.outlook.com)
 by tlsNG-ebf023.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.1)
 (envelope-from <Jason.Andryuk@amd.com>)
 id 69e69ae5-1dec-0a2a45040019-286bc90793ea-3
 for <xen-devel@lists.xenproject.org>; Mon, 20 Apr 2026 23:30:14 +0200
Received: from SJ0PR05CA0108.namprd05.prod.outlook.com (2603:10b6:a03:334::23)
 by DS0PR12MB8501.namprd12.prod.outlook.com (2603:10b6:8:15d::6) with
 Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9846.15; Mon, 20 Apr
 2026 21:30:08 +0000
Received: from CO1PEPF000075F4.namprd03.prod.outlook.com
 (2603:10b6:a03:334:cafe::95) by SJ0PR05CA0108.outlook.office365.com
 (2603:10b6:a03:334::23) with Microsoft SMTP Server (version=TLS1_3,
 cipher=TLS_AES_256_GCM_SHA384) id 15.20.9791.48 via Frontend Transport; Mon,
 20 Apr 2026 21:30:08 +0000
Received: from satlexmb08.amd.com (165.204.84.17) by
 CO1PEPF000075F4.mail.protection.outlook.com (10.167.249.43) with Microsoft
 SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id
 15.20.9791.48 via Frontend Transport; Mon, 20 Apr 2026 21:30:07 +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.17; Mon, 20 Apr
 2026 16:30:04 -0500
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.17; Mon, 20 Apr
 2026 14:30:04 -0700
Received: from [172.28.123.27] (10.180.168.240) by satlexmb07.amd.com
 (10.181.42.216) with Microsoft SMTP Server id 15.2.2562.17 via Frontend
 Transport; Mon, 20 Apr 2026 16:30:04 -0500
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@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=Ns7BPWiTjRLYjE1enpz6X0utBliU0gUOGPAaNd3jmGltmM2FxALGNiKUwrrAb/nyuobjSsynv7O7Eaaa7chKuF/v01FyaBjfazDsda7NlTfgZ2L9+1kdi3Ec1pkvKVlUShdJ32y1GmyIRMXAJAkI6KYAYOWxa43mk1pnKAAtxjVxwBZ62cIfTX0V5sBlioj8Dds1x4ts4+vwH+jwy5joemO7anM4ne+jb5nr4BjjibNs2WLeKs3oK7fW4mWKn8z50OhRPLBiuqUo/3Usw5kM7lxI5USc7ZYXboMZvKJvaQYjV/yPg+yPIpTpsGwrB8hjEl5RbZYkKDxyaYyMmgHFlQ==
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com;
 s=arcselector10001;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1;
 bh=PWp1CJlN0rtlCETeaL43ZIyeO2c4LQXofeHK9g4Gvs4=;
 b=G6H2jrAz5E0PRaPfsWxWht1sdtmgm3FsVIfp5ZT24MsEmvq9vYy6xacXllAv3Hk+VGo8WHNf8VZsWYn3h/7O80yS9nXDBrtwqzU3xHUM5W+sJkF3UGP6KEdveThIdIYMaj1H8T40E4TtIc8V985uz9uusEIsZ78nvPVVDfiWiB9rfpKqMmvdHV61DOmRxCFAJsVBNl4Z4Wpv1DHDeWhiaDth0mX9TnIHf9n5GmVfFsDUv0AWuCoXACWg2ZQeYRRKLeQlSizebChDCm66/tSngKfSuLUOMmovFN1SfposRem+B2tLJn0PGltLNLR4BQFxlEBA2/EBG9tKvZeA8QoeBQ==
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=PWp1CJlN0rtlCETeaL43ZIyeO2c4LQXofeHK9g4Gvs4=;
 b=V2dN7obVEqPXxvfa8NFwRR35/Udvm3kpMlotbnXPfKaA21AyJh0201aKWRkfajO/450F8CITLWEOcYfXn7nWmuz9xJCOX3nfQulEAh3Z7Oyx2OY5uriURUQx4lA2qlDLxHGtPEwC4mTBhYkj6TPh4eN7cVN7Xs9BpXQhYW8/NoE=
X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 165.204.84.17)
 smtp.mailfrom=amd.com; dkim=none (message not signed)
 header.d=none;dmarc=pass action=none header.from=amd.com;
Received-SPF: Pass (protection.outlook.com: domain of amd.com designates
 165.204.84.17 as permitted sender) receiver=protection.outlook.com;
 client-ip=165.204.84.17; helo=satlexmb08.amd.com; pr=C
Message-ID: <75667f07-b997-4bba-a905-9c5d80e8ba0c@amd.com>
Date: Mon, 20 Apr 2026 17:30:03 -0400
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH 3/8] tools/libs/store: add support to use watches with a
 depth parameter
To: Juergen Gross <jgross@suse.com>, <xen-devel@lists.xenproject.org>
CC: Anthony PERARD <anthony.perard@vates.tech>, Julien Grall <julien@xen.org>
References: <20260313074751.2904215-1-jgross@suse.com>
 <20260313074751.2904215-4-jgross@suse.com>
Content-Language: en-US
From: Jason Andryuk <jason.andryuk@amd.com>
In-Reply-To: <20260313074751.2904215-4-jgross@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: CO1PEPF000075F4:EE_|DS0PR12MB8501:EE_
X-MS-Office365-Filtering-Correlation-Id: e576d413-ff71-4ef5-7f27-08de9f23fecd
X-MS-Exchange-SenderADCheck: 1
X-MS-Exchange-AntiSpam-Relay: 0
X-Microsoft-Antispam:
	BCL:0;ARA:13230040|376014|36860700016|82310400026|1800799024|18096099003|56012099003|22082099003|18002099003;
X-Microsoft-Antispam-Message-Info:
	YyrjqxUs3q1tbdcvGLukBPugjO8bmiiyassRdVm7x6+u+WGKbaM3un5JIWfejPhl4dmR06orBl/Z6j5EnGIdwLpnY30mJezy2Z+vmRwCP10Jw/OW71XysGiT9DZ8mc+euDWdt19j/O6eg0lQBzIYQu38I1+JJ82Re4m7ZJuLpBsnkxiqSgbAZf8t4bVNzupn5OeYmBQ6wusad+XHKLoY64rEbi+jSngYHZh0SFS9CDG+4+ctzlx36GD6JPId2KyAltg6H1DVEaGEe8LhPqfzgeo5qPnMhltkhitNQdMxroVsyDtQwq8GA/s4z0XlSTD9jTMddHGxLDRo+eC626Gl5nbAczMeYMMoNb3ADpd/KQZ/ukvi+u4yK967/xNIWlA9S+Jh3rCBs8auwVaCiZcfO8DJA0BF4duVJYg5KAjubXzRfO1wMijWcNYJw0RKOrot6I60PdegUfz0uGydnZvsAWRTwDy3OMBTKO1qjC8DOfsD+3WRn8Mmcv8YkrdR9VQ7uOfXEhAWNCzigzGLL38mGPEnPcOhhH9pFijumAfti2IYADMyVcTwJl1/F4mKcIhs5DyqUZ2mCW2ySr0HPjXEqo6GRgj4lvRXq4sJCtmerBEvsKrNayNqX7KQHqOdZl+HIb9YEll0mp/a65VPdDH0Q8sZuGTgvFbeuYZGA9yr6Qkk1hXmzs9HUCH9Sacs81JolVfpidqd/knAvciOqm4wGeiBWzHJRg9PDhq9bEZ4L2UkOmFExwGLWDhOxgxppYN5KsDVBgFBPIOs2+FP8zuKDw==
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)(36860700016)(82310400026)(1800799024)(18096099003)(56012099003)(22082099003)(18002099003);DIR:OUT;SFP:1101;
X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1
X-MS-Exchange-AntiSpam-MessageData-0:
	AWRHASxo+7Nl7yZjoX6xuvkfUG9g1z4RjLAgiILz//cYukHeoqQ+px/FWoY2n5pgL0X7UlRLrbc+OrPzBFRsyAr7Jd75RN3UX1C5mZ6RVmA1IuBOKerb4LgXLQY/iR028GA8HVIt/bfydht9hAlzOsqU660js9InOE3neDpSivq+ebqxri4YpOmLSDKytLFFrIWy6oxL1zV2am1QFuoNZHHdl8pUYn1qWV41LW5jnCrdp5OLO724rYPp5ZSJFUw9FK/fjdeRjdxeVRck7p8WA5hySXTkp1TPSb8eqhBrNu1JI11q9aFl04h5VXjfth1H6cL13RverQxzHP20qAlId/KeJgWYP8CmucUnVIjVOZQNQk+MthpNxeL0CCL5PwXHbbptaWSt/eWJHBV+g5FdQ2np4mcbCzbwGxfBiTl16hKIRReogU9hKHeJArFJP8v1
X-OriginatorOrg: amd.com
X-MS-Exchange-CrossTenant-OriginalArrivalTime: 20 Apr 2026 21:30:07.9949
 (UTC)
X-MS-Exchange-CrossTenant-Network-Message-Id: e576d413-ff71-4ef5-7f27-08de9f23fecd
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:
	CO1PEPF000075F4.namprd03.prod.outlook.com
X-MS-Exchange-CrossTenant-AuthAs: Anonymous
X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem
X-MS-Exchange-Transport-CrossTenantHeadersStamped: DS0PR12MB8501
X-purgate-ID: tlsNG-ebf023/1776720614-4BD6C3FF-8A4DEB86/0/0
X-purgate-type: clean
X-purgate-size: 2246

On 2026-03-13 03:47, Juergen Gross wrote:
> Add a new xs_watch_depth() function to libxenstore allowing to limit
> the scope of a Xenstore watch. It can be used only in case Xenstore is
> supporting the XENSTORE_SERVER_FEATURE_WATCHDEPTH feature.
> 
> For convenience add a xs_watch_try_depth() wrapper, which will call
> xs_watch_depth() if supported and xs_watch() otherwise.
> 
> Cache the supported features of Xenstore in order not having to get
> them from Xenstore for each call of one of the new functions.
> 
> Signed-off-by: Juergen Gross <jgross@suse.com>

> @@ -984,37 +984,29 @@ bool xs_restrict(struct xs_handle *h, unsigned domid)
>   	return false;
>   }
>   
> -/* Watch a node for changes (poll on fd to detect, or call read_watch()).
> - * When the node (or any child) changes, fd will become readable.
> - * Token is returned when watch is read, to allow matching.
> - * Returns false on failure.
> - */
> -bool xs_watch(struct xs_handle *h, const char *path, const char *token)
> +static bool xs_watch_helper(struct xs_handle *h)
>   {
> -	struct xsd_sockmsg msg = { .type = XS_WATCH };
> -	struct iovec iov[3];
> -
>   #ifdef USE_PTHREAD
> +	sigset_t set, old_set;
> +	pthread_attr_t attr;
> +	static size_t stack_size;
> +#ifdef USE_DLSYM
> +	size_t (*getsz)(pthread_attr_t *attr);
> +#endif
> +
>   #define DEFAULT_THREAD_STACKSIZE (16 * 1024)
>   /* NetBSD doesn't have PTHREAD_STACK_MIN. */
>   #ifndef PTHREAD_STACK_MIN
>   # define PTHREAD_STACK_MIN 0
>   #endif
>   
> -#define READ_THREAD_STACKSIZE 					\
> -	((DEFAULT_THREAD_STACKSIZE < PTHREAD_STACK_MIN) ? 	\
> +#define READ_THREAD_STACKSIZE					\
> +	((DEFAULT_THREAD_STACKSIZE < PTHREAD_STACK_MIN) ?	\
>   	 PTHREAD_STACK_MIN : DEFAULT_THREAD_STACKSIZE)
>   
>   	/* We dynamically create a reader thread on demand. */
>   	mutex_lock(&h->request_mutex);
>   	if (!h->read_thr_exists) {
> -		sigset_t set, old_set;
> -		pthread_attr_t attr;
> -		static size_t stack_size;
> -#ifdef USE_DLSYM
> -		size_t (*getsz)(pthread_attr_t *attr);
> -#endif

AFAICT, there is no particular reason to change the scope of these 
variables.  Am I missing something?

Everything else looks okay.

Thanks,
Jason


From xen-devel-bounces@lists.xenproject.org Mon Apr 20 21:32:50 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 20 Apr 2026 21:32:50 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1287750.1568123 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wEwEa-00071z-JM; Mon, 20 Apr 2026 21:32:48 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1287750.1568123; Mon, 20 Apr 2026 21:32: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 1wEwEa-00071q-Gl; Mon, 20 Apr 2026 21:32:48 +0000
Received: by outflank-mailman (input) for mailman id 1287750;
 Mon, 20 Apr 2026 21:32:47 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <Rose.Spangler@elektrobit.com>) id 1wEwEZ-00071J-GV
 for xen-devel@lists.xenproject.org; Mon, 20 Apr 2026 21:32:47 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wEwEY-00Eg4Z-TC
 for xen-devel@lists.xenproject.org; Mon, 20 Apr 2026 23:32:46 +0200
Received: from [10.42.69.1] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <Rose.Spangler@elektrobit.com>)
 id 69e69b5b-e002-0a2a0a5209dd-0a2a450184ac-24
 for <xen-devel@lists.xenproject.org>; Mon, 20 Apr 2026 23:32:46 +0200
Received: from [52.101.43.83]
 (helo=SJ2PR03CU001.outbound.protection.outlook.com)
 by tlsNG-d62444.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.1)
 (envelope-from <Rose.Spangler@elektrobit.com>)
 id 69e69b7d-c1f2-0a2a45010019-34652b532e3f-3
 for <xen-devel@lists.xenproject.org>; Mon, 20 Apr 2026 23:32:46 +0200
Received: from DM6PR02CA0124.namprd02.prod.outlook.com (2603:10b6:5:1b4::26)
 by SA1PR08MB7648.namprd08.prod.outlook.com (2603:10b6:806:1f7::7) with
 Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9818.32; Mon, 20 Apr
 2026 21:32:41 +0000
Received: from SA2PEPF000015CB.namprd03.prod.outlook.com
 (2603:10b6:5:1b4:cafe::fe) by DM6PR02CA0124.outlook.office365.com
 (2603:10b6:5:1b4::26) with Microsoft SMTP Server (version=TLS1_3,
 cipher=TLS_AES_256_GCM_SHA384) id 15.20.9791.48 via Frontend Transport; Mon,
 20 Apr 2026 21:32:40 +0000
Received: from usbth1es003.ebgroup.elektrobit.com (4.79.107.243) by
 SA2PEPF000015CB.mail.protection.outlook.com (10.167.241.201) with Microsoft
 SMTP Server (version=TLS1_3, cipher=TLS_AES_256_GCM_SHA384) id 15.20.9791.48
 via Frontend Transport; Mon, 20 Apr 2026 21:32:40 +0000
Received: from usbth1es003 (localhost [127.0.0.1])
 by usbth1es003.ebgroup.elektrobit.com (Postfix) with SMTP id 4fzzGv527Gz1wdM; 
 Mon, 20 Apr 2026 14:32:39 -0700 (PDT)
Received: from BYAPR08CU003.outbound.protection.outlook.com
 (mail-byapr08cu00300.outbound.protection.outlook.com [40.93.1.104])
 (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)
 key-exchange secp384r1 server-signature RSA-PSS (2048 bits) server-digest
 SHA256) (No client certificate requested)
 by usbth1es003.ebgroup.elektrobit.com (Postfix) with ESMTPS;
 Mon, 20 Apr 2026 14:32:39 -0700 (PDT)
Received: from SJ0PR05CA0130.namprd05.prod.outlook.com (2603:10b6:a03:33d::15)
 by CYXPR08MB9264.namprd08.prod.outlook.com (2603:10b6:930:d9::10)
 with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9818.33; Mon, 20 Apr
 2026 21:32:35 +0000
Received: from SJ1PEPF000026C5.namprd04.prod.outlook.com
 (2603:10b6:a03:33d:cafe::a1) by SJ0PR05CA0130.outlook.office365.com
 (2603:10b6:a03:33d::15) with Microsoft SMTP Server (version=TLS1_3,
 cipher=TLS_AES_256_GCM_SHA384) id 15.20.9791.48 via Frontend Transport; Mon,
 20 Apr 2026 21:32:35 +0000
Received: from denue6es012.ebgroup.elektrobit.com (213.95.148.172) by
 SJ1PEPF000026C5.mail.protection.outlook.com (10.167.244.102) with Microsoft
 SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id
 15.20.9791.48 via Frontend Transport; Mon, 20 Apr 2026 21:32:35 +0000
Received: from ubuntu.localdomain (10.10.178.50) by
 denue6es012.ebgroup.elektrobit.com (10.243.160.140) with Microsoft SMTP
 Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id
 15.2.2562.35; Mon, 20 Apr 2026 23:32:32 +0200
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@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=elektrobit.com header.i="@elektrobit.com" header.h="From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck"; dkim=pass header.s=selector1 header.d=elektrobit.com header.i="@elektrobit.com" header.h="From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck"
ARC-Seal: i=2; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=pass;
 b=QdjSeA68MxPOKb1Ita6nVIfnQ3kZC43XRdwWzmtlCotpewe/4FjhnhJh7XeoyLgvKlDEVw7ZAHxfGTZn3XydBJt4oByCvmX/mvPYkSdepoag5219nbpBwKXcmtqEOgDG04GXJ+iUvNm11gtyZ7XprrSyIE1S28MF3uqEspO6s4zSCI3th6ZEtN5RWMYbB58/ZSQNz1v2hYxSMYHHQb828a5xTRcfNB+XbycYuMNOzXUiUjip+lizlqA7MDKOWJVv/lLFPSeNzvSwPTS4KChQqNl7LQvG9mQJtL5MaEIKe0Z9Xx0NhIDMKkCNzx3oZ4gC3QRHuw3v7XSLsZl0vhDCjw==
ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com;
 s=arcselector10001;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1;
 bh=9p9JopnflYJnPfdpu0O1EcjHiZAqSeSW4TS/vKusOYI=;
 b=JgNbQOOH0xIdi5fx+MKboRB+ui+9rZvo76x+Vig/W8/8GW8k1TzoP5cIwWEZnKwREMFGeAHLihZhY/neYbNswirY7TB2gLf6e/XHxzOhDCkQbWUklokeuqmHpgd9OkZVBq46VxwbadoL13oW2Y06xptDK6cKLGx1c/ZGn94syBdH64OdEqaAhqP4+VwL5DerdLv0V46I0zQ78gu25TIhOGi+RmPNn+MWPouufbww2+fQ2ESxYZ2qkQuEHYUV1GuVpTOi9FcVasVDtFI6gyS0XKPUvmH9TzPcjMJfyu1DbZRwYY30FCs4hFf3v3Fbf2H8zZsDYyv8wATUj63etk8S/w==
ARC-Authentication-Results: i=2; mx.microsoft.com 1; spf=pass (sender ip is
 40.93.1.104) smtp.rcpttodomain=amd.com smtp.mailfrom=elektrobit.com;
 dmarc=pass (p=quarantine sp=none pct=100) action=none
 header.from=elektrobit.com; dkim=pass (signature was verified)
 header.d=elektrobit.com; arc=pass (0 oda=1 ltdi=1
 spf=[1,1,smtp.mailfrom=elektrobit.com]
 dmarc=[1,1,header.from=elektrobit.com])
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=elektrobit.com;
 s=selector1;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck;
 bh=9p9JopnflYJnPfdpu0O1EcjHiZAqSeSW4TS/vKusOYI=;
 b=SDJhjnRTU2iV8yMZrbYFjgT/IufbPdW+nMVqEYOMoR+xJyQbDk1QLgx6HwbtaVVDgakSA+gFnDkic2hyujWobgZtTvcziaaiuLlxS2PZzr1GVJzwM3zkVayt3GhVI6wyTRh8pjFz4d+teX0YGrK2yurBUoO20ZHjiyqXtyDn9wY=
X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 40.93.1.104)
 smtp.mailfrom=elektrobit.com; dkim=pass (signature was verified)
 header.d=elektrobit.com;dmarc=pass action=none header.from=elektrobit.com;
Received-SPF: Pass (protection.outlook.com: domain of elektrobit.com
 designates 40.93.1.104 as permitted sender) receiver=protection.outlook.com;
 client-ip=40.93.1.104; helo=BYAPR08CU003.outbound.protection.outlook.com;
 pr=C
ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none;
 b=X1UfyeHo8DrkFwD+fCG3AA/0efN+0LgFSmjaP14pXyw3XRZp8xOX4uTL8ZQdQyKyIJUO68/Tks87Jzm4aBCd+Up8PS5PllUWB6LTXxjV9k2jS6NJuYALHwHMjh+S4fbBlzmLBae89mb/jGMDKJlMG7v/9UR2rnTaxYS+VE+Ep23MKqdcv6DZ38ir45LwWC3XAc6o1hZzg8P3GHJQwnDoeuiYvkWinJMft5M91683udOgynoFQBgsv2TzKFiCIBlZ0Nh6EDacdOeU2MTaLn/N9s3eaB+AN4nsFEs91NVAOeXFMO1NUIdmoiFoL+td20BedE1yTx359dYXG833cJCyCw==
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com;
 s=arcselector10001;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1;
 bh=9p9JopnflYJnPfdpu0O1EcjHiZAqSeSW4TS/vKusOYI=;
 b=ss+x0oIIpF8ialTH1Ey6qw18chedtggedhDAh731GL7V9j3DIdSqa7A2PXs30C406YDn21MfMXFxeeAl/rnPnSgAH1768AtlrxHCN5PVPTXyYvlk3izZ6FfrOUJ4hNgkD+YJQiJOXR2K8LxMzwP+fTAUvILw/7xKniSbuoTTQSe6kO+jKLbCOFLbgdx6nE5ylTPRkemtrZgtH9SiTL1KWeL46J9BhGoDfmOdulvYYAbMcd8FLnxoSl8020QnrBfb2tFgNs1MebrR4Ln0dvDT6KVhQyGH2NyWu9YJIRNTD8woBBwmQ/xaQMLZm3ztF49AgZyevbA6s/g8sb29xkvhxQ==
ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass (sender ip is
 213.95.148.172) smtp.rcpttodomain=lists.xenproject.org
 smtp.mailfrom=elektrobit.com; dmarc=pass (p=quarantine sp=none pct=100)
 action=none header.from=elektrobit.com; dkim=none (message not signed);
 arc=none (0)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=elektrobit.com;
 s=selector1;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck;
 bh=9p9JopnflYJnPfdpu0O1EcjHiZAqSeSW4TS/vKusOYI=;
 b=SDJhjnRTU2iV8yMZrbYFjgT/IufbPdW+nMVqEYOMoR+xJyQbDk1QLgx6HwbtaVVDgakSA+gFnDkic2hyujWobgZtTvcziaaiuLlxS2PZzr1GVJzwM3zkVayt3GhVI6wyTRh8pjFz4d+teX0YGrK2yurBUoO20ZHjiyqXtyDn9wY=
X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 213.95.148.172)
 smtp.mailfrom=elektrobit.com; dkim=none (message not signed)
 header.d=none;dmarc=pass action=none header.from=elektrobit.com;
Received-SPF: Pass (protection.outlook.com: domain of elektrobit.com
 designates 213.95.148.172 as permitted sender)
 receiver=protection.outlook.com; client-ip=213.95.148.172;
 helo=denue6es012.ebgroup.elektrobit.com; pr=C
From: Rose Spangler <Rose.Spangler@elektrobit.com>
To: <xen-devel@lists.xenproject.org>
CC: Rose Spangler <Rose.Spangler@elektrobit.com>, Jan Beulich
	<jbeulich@suse.com>, Andrew Cooper <andrew.cooper3@citrix.com>,
	=?UTF-8?q?Roger=20Pau=20Monn=C3=A9?= <roger.pau@citrix.com>, 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: [RFC PATCH v6 05/43] altp2m: Move altp2m_supported to arch header
Date: Mon, 20 Apr 2026 17:31:28 -0400
Message-ID: <20260420213206.208750-6-Rose.Spangler@elektrobit.com>
X-Mailer: git-send-email 2.34.1
In-Reply-To: <20260420213206.208750-1-Rose.Spangler@elektrobit.com>
References: <20260420213206.208750-1-Rose.Spangler@elektrobit.com>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit
Content-Type: text/plain
X-Originating-IP: [10.10.178.50]
X-ClientProxiedBy: denue6es012.ebgroup.elektrobit.com (10.243.160.140) To
 denue6es012.ebgroup.elektrobit.com (10.243.160.140)
X-EOPAttributedMessage: 1
X-MS-Exchange-SkipListedInternetSender:
 ip=[213.95.148.172];domain=denue6es012.ebgroup.elektrobit.com
X-MS-TrafficTypeDiagnostic:
	SJ1PEPF000026C5:EE_|CYXPR08MB9264:EE_|SA2PEPF000015CB:EE_|SA1PR08MB7648:EE_
X-MS-Office365-Filtering-Correlation-Id: 210e971f-44bf-4afa-497e-08de9f2459d6
X-SM-outgoing: yes
X-MS-Exchange-SenderADCheck: 1
X-MS-Exchange-AntiSpam-Relay: 0
X-Microsoft-Antispam-Untrusted:
 BCL:0;ARA:13230040|704160111799003|82310400026|36860700016|376014|1800799024|56012099003|22082099003|18002099003;
X-Microsoft-Antispam-Message-Info-Original:
 =?us-ascii?Q?YapjJFlISmGKZSgy66PgR8woel+nzRZbrM7o4nDimuIp1bZ0opNJOk9UxYeY?=
 =?us-ascii?Q?nSTngINNY1cTzI1EjbWeobPK8ZjHZpxcIJz+I1GRfdbs8ndK0UmTzHsmllRw?=
 =?us-ascii?Q?M8wzxZTQRdghjaCoxxAhOGavk5oRyjUdCZ+4BjP73uMTqcS2ac0FDKQQU93k?=
 =?us-ascii?Q?9KPfT7IhBmuUqfZHgcVwr2A0WRMNr4973kiDxSOnZtcd4kcdkYN1z7eHTqcv?=
 =?us-ascii?Q?5gPv/GXOJiiL9oCFf0/HfXV4cboAaX4xtiJwF9XtLl1iDtdMiRD/W4O77r0K?=
 =?us-ascii?Q?7wJ2GyLeqMEaURGGUIKLGiiidOIaKZoN6oHBPyp7olp/LucsDjTkiS6Mx3hr?=
 =?us-ascii?Q?YLSzmykD1ULaMcljBubvK9hs8pGCf8skPBIjR6YeUinO9rCi6dFKY+10ndbs?=
 =?us-ascii?Q?rp3NHeR1MzAQT58qxN9EaRIkv8uIlgeEtD91aYJQu5E2RZa5pl1ciXyI/Tof?=
 =?us-ascii?Q?XOCMe8GwgSMW51h10ZbE3xCwg/4Evazd4ld2Sn2xeb3j5671zhjHDZ+ZiOMO?=
 =?us-ascii?Q?4ThU6B9XImcR6eK7pykSP/vfz/Kll0UQsh/zg07tuxhbO4xEuLQFdXtrBMs7?=
 =?us-ascii?Q?wtv0KKXnLIJxfm3g8GrZji2bKWtF/5Z5ldI0IpXyMSWCrqz1kvs6XpMmctCj?=
 =?us-ascii?Q?MOqCnHKThJxCdXuE9UaM1SBwThdCRVKishPXjv6FnHACw9eYsHUormkezxj8?=
 =?us-ascii?Q?e169VtH0mBwnFI+8pFvNHRdVAp9Xt+FRc5bhraneQJK5+vBLwXoo4Xpjj/61?=
 =?us-ascii?Q?2TZpo34dBJaOCeLn8+GQQ0IGn95Cu3/bNYT8MBXbSLVSmlHrD7sGXh8g2/Ji?=
 =?us-ascii?Q?T3KUoZZeseDspjKhU8Qy1uJ183KECJB/LcqFtDBsuc6UieLuERcDab3E5bEE?=
 =?us-ascii?Q?1vI7LiZsFLdmAbrBBsXDN2bDR2cPLvbzvZOSTPzbskQj4EZO2kdwL04PHH4S?=
 =?us-ascii?Q?chAAoJfB4K6jIsFf7qicSDpXguQ9l/hv/dGoNu7hqduybvOaERWaaPK/KvBr?=
 =?us-ascii?Q?SQXE75QHr62mXIuVrzbTcwBrjJAflX5YrMV0cWxaLbut678jf/O4xYD72mlW?=
 =?us-ascii?Q?pJDtPtv53tyXAWszsuSw/ywhvSIdY6N8ujrg27+OzEv8UVlWFEF3J+NaKrRa?=
 =?us-ascii?Q?uI2lXbtnUMghv1c2CzRi1hYn+AN6V5TREXdw/VLpqBrDYWxx19qoAZQ=3D?=
X-Forefront-Antispam-Report-Untrusted:
 CIP:213.95.148.172;CTRY:DE;LANG:en;SCL:1;SRV:;IPV:CAL;SFV:NSPM;H:denue6es012.ebgroup.elektrobit.com;PTR:eth1-fw1-nbg6.eb.noris.de;CAT:NONE;SFS:(13230040)(704160111799003)(82310400026)(36860700016)(376014)(1800799024)(56012099003)(22082099003)(18002099003);DIR:OUT;SFP:1102;
X-Exchange-RoutingPolicyChecked:
 MTGb9X2Evjjt9wW8v4wUkaBy2tlHYcAPQbiax+2aRySG0SKwvPjG22uWr+z8R6+Pm0gFYTA37NipYL8CUib7xgusy9kVVT0zkDm8YhZX5EEZQVY3yFQBSy+5GLeHQosjYfxqKjD+z/YP6WIgJlGuz/ZPpTt1Be6CJhV5GOEeFgvUcR6yaqhNYoaOYrU8J+4uj2h7xxje+/ISx0xyWnifS0BzNhJVS9O8+9hHET8MhBYOFXleKXUsbLAokOAVIVKlbmBbi1xM70LalhZwwJWe17lrE8q9Y6yJ6iCr/dm7xUo+RRQ8WzosbxdWn+0OR27KR3Zt6SyfFVckzb8o4aP1OA==
X-MS-Exchange-Transport-CrossTenantHeadersStamped: CYXPR08MB9264
X-MS-Exchange-SkipListedInternetSender:
 ip=[40.93.1.104];domain=BYAPR08CU003.outbound.protection.outlook.com
X-MS-Exchange-ExternalOriginalInternetSender:
 ip=[40.93.1.104];domain=BYAPR08CU003.outbound.protection.outlook.com
X-MS-Exchange-Transport-CrossTenantHeadersStripped:
 SA2PEPF000015CB.namprd03.prod.outlook.com
X-MS-PublicTrafficType: Email
X-MS-Office365-Filtering-Correlation-Id-Prvs:
	086e5153-1185-4f2e-24ed-08de9f2456b2
X-Microsoft-Antispam:
	BCL:0;ARA:13230040|704160111799003|36860700016|1800799024|376014|14060799003|35042699022|82310400026|156008|22082099003|18002099003|56012099003;
X-Microsoft-Antispam-Message-Info:
	=?us-ascii?Q?7Ubvrq5jjoUUN5EGrTaq9fLsnQOyFhQ8Lev7Ay3NMFaxN8+/Zzdagrl/K41E?=
 =?us-ascii?Q?ckO7keMKVU0i1AZf1m086oMDXv1AfWFBojPSp4Lksve+ApvKSDWF/YiB5v4U?=
 =?us-ascii?Q?Cyo5v+VhLsSTQXyEgxKoc3ZzGJFJSS9ck5462kwk7a1/4t3ThKD4i/6aTjce?=
 =?us-ascii?Q?ktovDZQyBu8XYNYP4orCYgsg0EY2udon8p2RXBQYsP4jKBiCj5dGua9ywm7U?=
 =?us-ascii?Q?UtLnrCkFDBhSOUeWO+wYPqXmCSG27U1+KqSyIdF535x0XQ2ZEaTc6cOiaWKO?=
 =?us-ascii?Q?s7lLmntfj43iJ8X8dgaTAVRyK9JHrGRLhY1o/x6gBBD8uD+SyAUBaLhrfRwF?=
 =?us-ascii?Q?WmzKL5zEhXvsLZ2BDxHw7o/dRZOXzfkPWYaesmaVfwj2WSJ8Wxv7kylRRueG?=
 =?us-ascii?Q?OLbosll+c0iM+6k3uTIlTSTLQVTsH8K2lQuH1hgOIfaSVQPCnoE3GEH5Z7Qo?=
 =?us-ascii?Q?EA/sksvU/flbXQ3LEYw06LIFScgK2ViY28FQv5vrCaDLKV5GVFUSe6lHGhU1?=
 =?us-ascii?Q?V4WVQiDlnrBK53rJ3u5l5rtbZBjEBjbcxVJKUxqWlCEPh+DZ81yadkiAFGqK?=
 =?us-ascii?Q?ZuTKKTS4OGkkvvnLPqi4YrHnhq6kbMXz0a90ftW3dd+BtyFngVYGzFhGPZWa?=
 =?us-ascii?Q?E7NJUIa2IxJLkqI+G6qQ8xMc7m+OcjUSsIBnjalavF/g2F+0FFV2bFLBVWZ5?=
 =?us-ascii?Q?y2EbcS9R9ubepHM+aDuOz7f5FrUFLYzFOwZ3qGd7aYj8JkDHgtHu5NFsRiIW?=
 =?us-ascii?Q?+8x0mlqCeZJgI2nlHcg7ncfDMMJCoqslq6jdB2ykfkoaF1FW1jm5YTi6Q+mY?=
 =?us-ascii?Q?EmLAFLMuFzY05Ev0vfcSJmd/b/jO8EZO+Ag2kZc80nXFLS5xkp/SbqBgkY1h?=
 =?us-ascii?Q?598Zln3arW37D1HzBr5zfx5gr3zRcFAxFok7zaVzKtkSO4LobRh6ZzywpjK0?=
 =?us-ascii?Q?vu6F1HKuwmKgt0AdUx3Zhtl42ofyBdozl9yZ/5KyHTzVSjW0fDa1BIUioSrS?=
 =?us-ascii?Q?ET7IqScfEcCf3WnMNTpAE6nWCvbPDCgU8I5odB+NwdmtjxBuXQ9g0wV2t+Ld?=
 =?us-ascii?Q?vG1gz+ADaZkSLWt+U9ShJtSwK9pOo+FA+bgFgFop2bMZWnW5WIGyqxf4R6BF?=
 =?us-ascii?Q?7NhErnQ8em3peqAHSNtwFCnS1z5NwpiEsq6lima8IiAxryZZFNnpTUI=3D?=
X-Forefront-Antispam-Report:
	CIP:4.79.107.243;CTRY:US;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:BYAPR08CU003.outbound.protection.outlook.com;PTR:mail-byapr08cu00300.outbound.protection.outlook.com;CAT:NONE;SFS:(13230040)(704160111799003)(36860700016)(1800799024)(376014)(14060799003)(35042699022)(82310400026)(156008)(22082099003)(18002099003)(56012099003);DIR:OUT;SFP:1102;
X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1
X-MS-Exchange-AntiSpam-MessageData-0:
	s3gVEyP1N93JiQVVluCAdar2f5QkvGM7uc5t6etxB4W1KckpVlbXN3GG1KS814SL0T0mcjrJdRgYhx7R1GceqIaZGBLwakolucHko7uBTXQbW0o0j3flod2yqfaArOusFf05dllGP5gg29SYrY3D1Fote23m+nFzjYwAwwLu3wjQFiI59Ggmd9dO6PRudju15klxIc7xl5B03+P2WuFiKtnq/xb5VweA7Sz7AniBl/8f2fWgesmbOvhchID0Kxgl6rSk9Hrpxzvwnrjy98RQ+a7WxgIYXnGia3naAGN8vwbMpav+2VXACVPLyWZ+k6VkGxQ11qCj23m/Jpm9SE8s5NJMYJOZIKbb9u7QCkZtO+6tohNt9KKvG2hAeq9Vz/5JprxK1t5YQ/P55BLKXnqAFbBrBchaTJ4K90kWW+iclnTR4k3gLKs+uqR2r3V5e1L6
X-OriginatorOrg: elektrobit.com
X-MS-Exchange-CrossTenant-OriginalArrivalTime: 20 Apr 2026 21:32:40.4503
 (UTC)
X-MS-Exchange-CrossTenant-Network-Message-Id: 210e971f-44bf-4afa-497e-08de9f2459d6
X-MS-Exchange-CrossTenant-Id: e764c36b-012e-4216-910d-8fd16283182d
X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=e764c36b-012e-4216-910d-8fd16283182d;Ip=[4.79.107.243];Helo=[usbth1es003.ebgroup.elektrobit.com]
X-MS-Exchange-CrossTenant-AuthAs: Internal
X-MS-Exchange-CrossTenant-AuthSource: TreatMessagesAsInternal-SA2PEPF000015CB.namprd03.prod.outlook.com
X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem
X-MS-Exchange-Transport-CrossTenantHeadersStamped: SA1PR08MB7648
X-purgate-ID: tlsNG-d62444/1776720766-BF07EFF4-D04AEA16/0/0
X-purgate-type: clean
X-purgate-size: 3203

Following from the previous commit, this commit makes altp2m_supported
available through the asm/altp2m.h header.

This is commit 5/8 of the preparation phase.

Signed-off-by: Rose Spangler <Rose.Spangler@elektrobit.com>
---
v6: Introduced this patch.
---
 xen/arch/x86/domain.c              |  1 +
 xen/arch/x86/include/asm/altp2m.h  | 11 +++++++++++
 xen/arch/x86/include/asm/hvm/hvm.h | 11 -----------
 xen/include/asm-generic/altp2m.h   |  7 +++++++
 4 files changed, 19 insertions(+), 11 deletions(-)

diff --git a/xen/arch/x86/domain.c b/xen/arch/x86/domain.c
index 512b18d4010f..e4f1cbf3b51e 100644
--- a/xen/arch/x86/domain.c
+++ b/xen/arch/x86/domain.c
@@ -39,6 +39,7 @@
 #include <xen/softirq.h>
 #include <xen/wait.h>
 
+#include <asm/altp2m.h>
 #include <asm/amd.h>
 #include <asm/cpu-policy.h>
 #include <asm/cpuidle.h>
diff --git a/xen/arch/x86/include/asm/altp2m.h b/xen/arch/x86/include/asm/altp2m.h
index ad5ded833a75..07e760f60659 100644
--- a/xen/arch/x86/include/asm/altp2m.h
+++ b/xen/arch/x86/include/asm/altp2m.h
@@ -28,6 +28,12 @@ static inline bool altp2m_is_eptp_valid(const struct domain *d,
         mfn_x(INVALID_MFN);
 }
 
+/* returns true if hardware supports alternate p2m's */
+static inline bool altp2m_supported(void)
+{
+    return hvm_funcs.caps.altp2m;
+}
+
 static inline uint16_t altp2m_vcpu_idx(const struct vcpu *v)
 {
     return vcpu_altp2m(v).p2midx;
@@ -58,6 +64,11 @@ static inline bool altp2m_is_eptp_valid(const struct domain *d,
     return false;
 }
 
+static inline bool altp2m_supported(void)
+{
+    return false;
+}
+
 /* Only declaration is needed. DCE will optimise it out when linking. */
 uint16_t altp2m_vcpu_idx(const struct vcpu *v);
 void altp2m_vcpu_initialise(struct vcpu *v);
diff --git a/xen/arch/x86/include/asm/hvm/hvm.h b/xen/arch/x86/include/asm/hvm/hvm.h
index 6406bb687718..e6d8042831dc 100644
--- a/xen/arch/x86/include/asm/hvm/hvm.h
+++ b/xen/arch/x86/include/asm/hvm/hvm.h
@@ -701,12 +701,6 @@ static inline bool hvm_hap_supported(void)
     return hvm_funcs.caps.hap;
 }
 
-/* returns true if hardware supports alternate p2m's */
-static inline bool altp2m_supported(void)
-{
-    return IS_ENABLED(CONFIG_ALTP2M) && hvm_funcs.caps.altp2m;
-}
-
 /* Returns true if we have the minimum hardware requirements for nested virt */
 static inline bool hvm_nested_virt_supported(void)
 {
@@ -876,11 +870,6 @@ static inline bool hvm_hap_supported(void)
     return false;
 }
 
-static inline bool altp2m_supported(void)
-{
-    return false;
-}
-
 static inline bool hvm_nested_virt_supported(void)
 {
     return false;
diff --git a/xen/include/asm-generic/altp2m.h b/xen/include/asm-generic/altp2m.h
index ecee6942f4e8..a3cdbdae9953 100644
--- a/xen/include/asm-generic/altp2m.h
+++ b/xen/include/asm-generic/altp2m.h
@@ -6,6 +6,13 @@
 
 struct vcpu;
 
+/* returns true if hardware supports alternate p2m's */
+static inline bool altp2m_supported(void)
+{
+    /* Not implemented on GENERIC. */
+    return false;
+}
+
 /* Alternate p2m VCPU */
 static inline unsigned int altp2m_vcpu_idx(const struct vcpu *v)
 {
-- 
2.34.1



From xen-devel-bounces@lists.xenproject.org Mon Apr 20 21:32:50 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 20 Apr 2026 21:32:50 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1287749.1568114 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wEwEX-0006o6-9D; Mon, 20 Apr 2026 21:32:45 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1287749.1568114; Mon, 20 Apr 2026 21: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 1wEwEX-0006nz-6E; Mon, 20 Apr 2026 21:32:45 +0000
Received: by outflank-mailman (input) for mailman id 1287749;
 Mon, 20 Apr 2026 21:32:43 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <Rose.Spangler@elektrobit.com>) id 1wEwEV-0006nt-Fo
 for xen-devel@lists.xenproject.org; Mon, 20 Apr 2026 21:32:43 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wEwEU-00CD1J-PA
 for xen-devel@lists.xenproject.org; Mon, 20 Apr 2026 23:32:42 +0200
Received: from [10.42.69.2] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <Rose.Spangler@elektrobit.com>)
 id 69e69b6b-2eae-0a2a0a5409dd-0a2a450289b2-16
 for <xen-devel@lists.xenproject.org>; Mon, 20 Apr 2026 23:32:42 +0200
Received: from [52.101.62.125]
 (helo=DM5PR21CU001.outbound.protection.outlook.com)
 by tlsNG-720697.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.1)
 (envelope-from <Rose.Spangler@elektrobit.com>)
 id 69e69b79-af86-0a2a45020019-34653e7d2fd7-3
 for <xen-devel@lists.xenproject.org>; Mon, 20 Apr 2026 23:32:42 +0200
Received: from BN8PR04CA0046.namprd04.prod.outlook.com (2603:10b6:408:d4::20)
 by BN0PR08MB7535.namprd08.prod.outlook.com (2603:10b6:408:15b::22)
 with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9818.33; Mon, 20 Apr
 2026 21:32:38 +0000
Received: from BN2PEPF00004FC0.namprd04.prod.outlook.com
 (2603:10b6:408:d4:cafe::ac) by BN8PR04CA0046.outlook.office365.com
 (2603:10b6:408:d4::20) with Microsoft SMTP Server (version=TLS1_3,
 cipher=TLS_AES_256_GCM_SHA384) id 15.20.9791.48 via Frontend Transport; Mon,
 20 Apr 2026 21:32:38 +0000
Received: from usbth1es003.ebgroup.elektrobit.com (4.79.107.243) by
 BN2PEPF00004FC0.mail.protection.outlook.com (10.167.243.186) with Microsoft
 SMTP Server (version=TLS1_3, cipher=TLS_AES_256_GCM_SHA384) id 15.20.9791.48
 via Frontend Transport; Mon, 20 Apr 2026 21:32:37 +0000
Received: from usbth1es003 (localhost [127.0.0.1])
 by usbth1es003.ebgroup.elektrobit.com (Postfix) with SMTP id 4fzzGr5ZTxz1wdM; 
 Mon, 20 Apr 2026 14:32:36 -0700 (PDT)
Received: from SJ0PR08CU001.outbound.protection.outlook.com
 (mail-sj0pr08cu00102.outbound.protection.outlook.com [40.93.1.74])
 (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)
 key-exchange secp384r1 server-signature RSA-PSS (2048 bits) server-digest
 SHA256) (No client certificate requested)
 by usbth1es003.ebgroup.elektrobit.com (Postfix) with ESMTPS;
 Mon, 20 Apr 2026 14:32:36 -0700 (PDT)
Received: from SJ0PR13CA0206.namprd13.prod.outlook.com (2603:10b6:a03:2c3::31)
 by CH3PR08MB10292.namprd08.prod.outlook.com (2603:10b6:610:208::6)
 with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9818.32; Mon, 20 Apr
 2026 21:32:29 +0000
Received: from SJ1PEPF000026C7.namprd04.prod.outlook.com
 (2603:10b6:a03:2c3:cafe::9f) by SJ0PR13CA0206.outlook.office365.com
 (2603:10b6:a03:2c3::31) with Microsoft SMTP Server (version=TLS1_3,
 cipher=TLS_AES_256_GCM_SHA384) id 15.20.9791.48 via Frontend Transport; Mon,
 20 Apr 2026 21:32:29 +0000
Received: from denue6es012.ebgroup.elektrobit.com (213.95.148.172) by
 SJ1PEPF000026C7.mail.protection.outlook.com (10.167.244.104) with Microsoft
 SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id
 15.20.9791.48 via Frontend Transport; Mon, 20 Apr 2026 21:32:28 +0000
Received: from ubuntu.localdomain (10.10.178.50) by
 denue6es012.ebgroup.elektrobit.com (10.243.160.140) with Microsoft SMTP
 Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id
 15.2.2562.35; Mon, 20 Apr 2026 23:32:25 +0200
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@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=elektrobit.com header.i="@elektrobit.com" header.h="From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck"; dkim=pass header.s=selector1 header.d=elektrobit.com header.i="@elektrobit.com" header.h="From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck"
ARC-Seal: i=2; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=pass;
 b=ebXKwuSPcjkn5IOyEjvxW1od2zYbsQ7n1rRycbunXt+6PQ+nlG+f1Wp6EgRUG53b2Uss4XA9d5kJWlvtwEsuas/xTQEYnx2wdqmeMsvk3VPh6PpBOtiujvfOpYm3SH93ckd2e8ibohFSmEfUnVSU/GQZdysOHabTNT92UGnXG1Bgn957D7QLtUGcBIt+wsrKxQk2BD4n1q69CEb4vY3iiIw0kU4XCtG3emVhIFJdAak5LAZQbosmfI/mygulNj1aZ27byfv5h7V/UNd0BroTv3/FbecDx3ccBqJ4GV5IVzGmR5+jEYpfcojJ32fHaiSa09VH9f91pjT7NXjKwwj7YQ==
ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com;
 s=arcselector10001;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1;
 bh=RIbbeMLPJ1Oc8O3jfNscoU93ycEkxovMGroMGjaJzMA=;
 b=hTTAO1Ytxlsv+NAOmkaANcNpWuzWjsZEveTzoxfgypRSb56QzVNnb0WLYB/Jdq0AKVq7k+m//TcBdY3zJivMMyaD5n7lAzv2kPoltquUpDcEhJT285jKTyJjsI7AGmwl/ZxXFJqxqSm2Gu2Cbt21NMCJhivri1ngcjNKlYvtbj/eMX48QD0z97rkl3PSWfoVT92OOTawPJYSQr920x3JXglCWCP8DS0WOOGRU35wkPa2xq3k89bubLpFHQHmdRVDRqk2JZT912K1+3HdMz8g/pcsckG2mas+JIh1hn9XLfFxm0egMn4F1jTsxqxk3NEfux77XwlTuB+TIsLtmoBEvA==
ARC-Authentication-Results: i=2; mx.microsoft.com 1; spf=pass (sender ip is
 40.93.1.74) smtp.rcpttodomain=amd.com smtp.mailfrom=elektrobit.com;
 dmarc=pass (p=quarantine sp=none pct=100) action=none
 header.from=elektrobit.com; dkim=pass (signature was verified)
 header.d=elektrobit.com; arc=pass (0 oda=1 ltdi=1
 spf=[1,1,smtp.mailfrom=elektrobit.com]
 dmarc=[1,1,header.from=elektrobit.com])
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=elektrobit.com;
 s=selector1;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck;
 bh=RIbbeMLPJ1Oc8O3jfNscoU93ycEkxovMGroMGjaJzMA=;
 b=XOe7d+SbjJTnY3xVcYoclCF/DPLPoJLW4FFKjFmSAZSoy9d7D3DxsRFHNGcd5zXipxZGN4NZGnspgWGyerYaGdCN9CFN7qjxaOByQyuMfO63WCgvebZEGU/uATJpmegdipMevsn3bQjy71oMOMr4OuJ0N0tHZhjWgfMFRb0DRwA=
X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 40.93.1.74)
 smtp.mailfrom=elektrobit.com; dkim=pass (signature was verified)
 header.d=elektrobit.com;dmarc=pass action=none header.from=elektrobit.com;
Received-SPF: Pass (protection.outlook.com: domain of elektrobit.com
 designates 40.93.1.74 as permitted sender) receiver=protection.outlook.com;
 client-ip=40.93.1.74; helo=SJ0PR08CU001.outbound.protection.outlook.com; pr=C
ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none;
 b=EluVDqLvGbOHOneT3Q2IYyKral+PiF993yvUhKOcf8Hv0o+s2+iAqFRYLJISll+lpobHgqfQHaCsetoixpOjALcbWcfSFo0/jO+9G1fFsA92oiKMh7i1Ha9ruMmwLC7lY14NI3lSAryNMW09jDEu9DRY8XtsZ34+6EHjaDiuVA1sbj9L7+90yIXRUIdVx7GEZ4lxCyFWkRxw1BTtqdpPoowEgPIJZ7YLMx+KLGltNmxGC0lIvJCY3zvnyxQ25xk9hwkzKLGUGiiRw0RIqgUZ4tRXAayb7ZFKDVNKU1QSVuiPTkWDVsh9xxK/byO0XQ/45QalattReRBg5aup+ZHeVA==
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com;
 s=arcselector10001;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1;
 bh=RIbbeMLPJ1Oc8O3jfNscoU93ycEkxovMGroMGjaJzMA=;
 b=Pv31Zdfgw9n6r1whvXvcWjWeRX2tJ/4/sU7fEktJhmCzpToXK9O/wcy5l4XwK/YzHz62IgxbIJofgEQ6jV2wrCH5/vgzQYqjTQeD6IUxs3vt3ptAzHoQkL5u3cGwOamslb8OCTGd9qyMVIIuyDKGiWEszBRvdfmUNwuQh1AX1/eLdH70uKrvd0rGfqzoRuqOb8KqIb5HZyPii/VkU9d/VxVn6bwNl6NmGA8ABF6Zs46uJx/fZ0cYFRQjhM8wwahH2YVbFBFCVvP0RgMie23rbL4YMi8MSgEJZe+c2LsqAoT4FJzs21jSQSrt3eih9z3qBUa6JDrDntFCPBTlDgYkKA==
ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass (sender ip is
 213.95.148.172) smtp.rcpttodomain=lists.xenproject.org
 smtp.mailfrom=elektrobit.com; dmarc=pass (p=quarantine sp=none pct=100)
 action=none header.from=elektrobit.com; dkim=none (message not signed);
 arc=none (0)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=elektrobit.com;
 s=selector1;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck;
 bh=RIbbeMLPJ1Oc8O3jfNscoU93ycEkxovMGroMGjaJzMA=;
 b=XOe7d+SbjJTnY3xVcYoclCF/DPLPoJLW4FFKjFmSAZSoy9d7D3DxsRFHNGcd5zXipxZGN4NZGnspgWGyerYaGdCN9CFN7qjxaOByQyuMfO63WCgvebZEGU/uATJpmegdipMevsn3bQjy71oMOMr4OuJ0N0tHZhjWgfMFRb0DRwA=
X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 213.95.148.172)
 smtp.mailfrom=elektrobit.com; dkim=none (message not signed)
 header.d=none;dmarc=pass action=none header.from=elektrobit.com;
Received-SPF: Pass (protection.outlook.com: domain of elektrobit.com
 designates 213.95.148.172 as permitted sender)
 receiver=protection.outlook.com; client-ip=213.95.148.172;
 helo=denue6es012.ebgroup.elektrobit.com; pr=C
From: Rose Spangler <Rose.Spangler@elektrobit.com>
To: <xen-devel@lists.xenproject.org>
CC: Rose Spangler <Rose.Spangler@elektrobit.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.pau@citrix.com>, Stefano Stabellini <sstabellini@kernel.org>
Subject: [RFC PATCH v6 01/43] altp2m: Add template common altp2m.c/altp2m.h
Date: Mon, 20 Apr 2026 17:31:24 -0400
Message-ID: <20260420213206.208750-2-Rose.Spangler@elektrobit.com>
X-Mailer: git-send-email 2.34.1
In-Reply-To: <20260420213206.208750-1-Rose.Spangler@elektrobit.com>
References: <20260420213206.208750-1-Rose.Spangler@elektrobit.com>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit
Content-Type: text/plain
X-Originating-IP: [10.10.178.50]
X-ClientProxiedBy: denue6es012.ebgroup.elektrobit.com (10.243.160.140) To
 denue6es012.ebgroup.elektrobit.com (10.243.160.140)
X-EOPAttributedMessage: 1
X-MS-Exchange-SkipListedInternetSender:
 ip=[213.95.148.172];domain=denue6es012.ebgroup.elektrobit.com
X-MS-TrafficTypeDiagnostic:
	SJ1PEPF000026C7:EE_|CH3PR08MB10292:EE_|BN2PEPF00004FC0:EE_|BN0PR08MB7535:EE_
X-MS-Office365-Filtering-Correlation-Id: 85feac3e-3985-4319-d454-08de9f24584a
X-SM-outgoing: yes
X-MS-Exchange-SenderADCheck: 1
X-MS-Exchange-AntiSpam-Relay: 0
X-Microsoft-Antispam-Untrusted:
 BCL:0;ARA:13230040|376014|36860700016|82310400026|1800799024|56012099003|22082099003|18002099003;
X-Microsoft-Antispam-Message-Info-Original:
 =?us-ascii?Q?BE8rtEXCWaAApeWCvMorSyKGDw9VgXnc8iwL8MktiVTNVDq8oFwOUTmLSa1N?=
 =?us-ascii?Q?hH8E7C3yrBMMYgYsnly6qrx05LKbse3Z6QTmS8ICpzXiSfD0GSVpx4asYnh/?=
 =?us-ascii?Q?hZxaTDKynZjKoDg7b3DIU1og4hG2WD12k1FjNfit4BktJKZtxrVMlDPfyjzd?=
 =?us-ascii?Q?0o0SaWRctA1vv/XJ/KMmGEnzTgpHMMP2cbYnb+qmGyDsGsugVnFmwwbU2VrS?=
 =?us-ascii?Q?cCYDjBjpVENfKEUE8m+t69M1CooQGp0IwoqMep3uIHKy0Na8+7d7yxZR5/Wq?=
 =?us-ascii?Q?2kAanLrkHct3vK+UXu8vupMFNMC40wni7UM5WZYQsDVY8kmm2k1BazayDQnb?=
 =?us-ascii?Q?Aoesy1O/R1w4++qZtipG5Lyc2FSYC6XwrGi/WKmwQ1CpHrN/YyAv9/JR6SUI?=
 =?us-ascii?Q?1laU4EeSpXWLqaOKstQTVGC2vZtZRlMDCZNClM+zPhxQ/yf3N+Xx4T0hYr/O?=
 =?us-ascii?Q?BpyP4zmgb7eoh9FrGTwEvwM+mcEw9zck9WDpLe0udJh2lVhr6mI1HFlMuk5n?=
 =?us-ascii?Q?IFUDyjYRmncyzOlB++RoV3TYs+O0RPs3F5cNvvH38TEVq5j8etC+8vdm4E7O?=
 =?us-ascii?Q?kGl2Mwlih+scK3Ptd80N5WVMzWG7OnLZioP6rfNZqXPrGsSghsIxdIaiEAGZ?=
 =?us-ascii?Q?sK4uzTLnjRbPo9f1WFBnvKpGHOLGCsSt2+3z85gXbEsoLXX1cTcupgb9kR/+?=
 =?us-ascii?Q?ueWsmZifCM2xHkd+wctpE3pFrj5NDwbjNgtahJcEgTZqkLFIcQAfS29G8ZZq?=
 =?us-ascii?Q?H83x3RDM7870zJqZrrVE0fq+vB5cTfMUANkrJNVLalZ3F/BVpHx3RIlE2T+j?=
 =?us-ascii?Q?Q+fSvr0Kvo3MzSNEvJgVJF6/tudj+61PKD0VYY7hmloQV62feKb5af6Jx7GK?=
 =?us-ascii?Q?JS7oqjp2S1k2GyVncmxTWix0lzwE60wLaCAoNhkXvYcwwQujw3GL7Oum8yFI?=
 =?us-ascii?Q?gbYjT0DJaT6o/hLoi2biLPlpdP/p1m2qaUsypx5LpyeRtsVeu4jSJtoOFYPT?=
 =?us-ascii?Q?GKxRAV0q27EAzQ9CsUUwyY+o8D/3NOJw3BMigLGMV//+16z/cHp1Lm0QlYSX?=
 =?us-ascii?Q?f3eXGnxPP9rDZ3915wO5BQtVLxUhumUfMgB96onOKdZ6roPeMFBYOGrJ5GV6?=
 =?us-ascii?Q?F/COfly0Lo3ZtObir7t/vYmyg9qPXwORXbF6P63rgq9y80Fl+i3XgZhzXa/U?=
 =?us-ascii?Q?P4j85QMNiXcBulcuMG92hA6lwep9fX4EW7RO3ubpQzF3TLNUwBPUW3XmCFom?=
 =?us-ascii?Q?onDvbB8PBGZngdWcPCkx?=
X-Forefront-Antispam-Report-Untrusted:
 CIP:213.95.148.172;CTRY:DE;LANG:en;SCL:1;SRV:;IPV:CAL;SFV:NSPM;H:denue6es012.ebgroup.elektrobit.com;PTR:eth1-fw1-nbg6.eb.noris.de;CAT:NONE;SFS:(13230040)(376014)(36860700016)(82310400026)(1800799024)(56012099003)(22082099003)(18002099003);DIR:OUT;SFP:1102;
X-Exchange-RoutingPolicyChecked:
 ZrgEm8lPaveONrDiaPSk5FBNmgdmCQlIJ+zy2ZzdRn6Is5i8B2T6J8uSh9Ue0MQApChpwqJ3H8fo7PbCSUvQb7fDxvCPmR/hWCx6UjYlAjsLiYFof/wm7/AOsgMdwbOHmdIT+anSJuKYDxBVfxduRz/ugKMEEeSQtGCscbTLLzzEKv1RPSKq2VG4NyxdsenDj+Dqc5a8duXkL0DaidHGHb1fWq1P0CY3W/RWXS9h8AgdzzEw6mb4NuO6xwgjqaKUY5Z4wvOqQuql546N6tU9LSvkNGViwx8XJZ/c22TxzeOu3qPULMa4H3E/khy7iOQ06zTeqrDdS1OYOJeulN75CA==
X-MS-Exchange-Transport-CrossTenantHeadersStamped: CH3PR08MB10292
X-MS-Exchange-SkipListedInternetSender:
 ip=[40.93.1.74];domain=SJ0PR08CU001.outbound.protection.outlook.com
X-MS-Exchange-ExternalOriginalInternetSender:
 ip=[40.93.1.74];domain=SJ0PR08CU001.outbound.protection.outlook.com
X-MS-Exchange-Transport-CrossTenantHeadersStripped:
 BN2PEPF00004FC0.namprd04.prod.outlook.com
X-MS-PublicTrafficType: Email
X-MS-Office365-Filtering-Correlation-Id-Prvs:
	b57a37ec-bf20-487b-2338-08de9f2452f3
X-Microsoft-Antispam:
	BCL:0;ARA:13230040|82310400026|14060799003|156008|35042699022|36860700016|376014|1800799024|56012099003|22082099003|18002099003;
X-Microsoft-Antispam-Message-Info:
	=?us-ascii?Q?hs080B2h/SBOFr3cPUgVBy4zHF1lAB6gE6pDf7vITYUn2i1wNHi/+yvLav9b?=
 =?us-ascii?Q?ySKJgbOg2IaZL20jfM+GmLFd8dhmEJP1ZwzRB02PzIOHJi39TcKInJAjlXSA?=
 =?us-ascii?Q?vfRxN6zT18wQEZ9iJ8/nw+ZcrN5DLOZMHA3N92KaA7rxHjzzE1xbORbif1Cf?=
 =?us-ascii?Q?dOcYGsy+62nbbYWyxBbenismKzc1c9hBhu4XOywXTXG+e3A2FSTjnDFCIqqf?=
 =?us-ascii?Q?7fpXtR62JYDu7OOj9RaLPj6xCgLlFwtjf1k1jaMOgsH+OQOMWjrE7RJjpeRW?=
 =?us-ascii?Q?L1XtJdFJAP2Hi4tVbngR5dOd3vbgVdfPBArIxKebPjIKBuFbVdq2f6p8aYBv?=
 =?us-ascii?Q?6NBDTHGl02IBEdXl4yNM2FyKu1/MohxQ+urv06STpUCGsPGbqg8gy/GvVXiJ?=
 =?us-ascii?Q?lkW/6cWdusvhE0NnZzgEUb7vaE37u8D55Xc2N4AvJk3A/hfieXvPKA6wap3z?=
 =?us-ascii?Q?Ts4pauK6d8c5NYeWBbQbrQCMGG1cQaQN+XS/+qvI3YI7YDrwfjnHAcsD7/NZ?=
 =?us-ascii?Q?atvIKLLuP10zGkCx1GtqxTOb0fAheHwn0W86DOPale4cNEZJHWrliFuZeFlP?=
 =?us-ascii?Q?ouF8IBbGfqkgbhHlVSpSIHonpgB707J/KU6nns8ZkpI6CFGDgHaca0l2I8tF?=
 =?us-ascii?Q?3t6hDWHgfbBW26roC7WWeI7wZ+AHu9OXkGS1tU4In0t1R+4MPHSraRtsQAj7?=
 =?us-ascii?Q?zcWol4yQnbDeFYCL3SlxukfVH8J/J721KdcaTjgGTuviS4t9UGQ9QfwwiROi?=
 =?us-ascii?Q?ZgkN7ax/9CIQ1vuVG8Uo8wAPL2xTB29KcAE9yxr0EEkWcAZcWHAGkFzDM9Yt?=
 =?us-ascii?Q?lj9ewXPUVi6rmkvIwSapvwTFyMYL8ka917kR6cmwZT6X2i/t22j4cxvr2L4P?=
 =?us-ascii?Q?Fp2or1q9wu5QnNzr6NQx7RHXDGEomJn0CTBlsH6gMv6v5/rKhh/4ZjHfdFJS?=
 =?us-ascii?Q?s71vvcIfJXOw73ZWvwRe2/3ib5Q2jYna1NzunHqSieTeNiwLnVFg8hAXFg3K?=
 =?us-ascii?Q?MMgt7NBhKP8yyP7XmkVHNkJ7wPcRW6iQIUfiOusjwmFM66fbLdnTf2OKuamJ?=
 =?us-ascii?Q?fEd9mOeoweq819OwfaekvngQhBU+PwkGa6OtLmenTWPjM6stFdQmJ8F/M8sk?=
 =?us-ascii?Q?dYNBAMpqaietlAxcPZAiYBZdqrGsgZB8Fd7zrnqfV8zw34sUWD37WLj7GAKV?=
 =?us-ascii?Q?ICs9DRmuTySb7btHcm4XA7y4sZuvm5Mftn496vg7zlAO4cgBrDR20tb88fQt?=
 =?us-ascii?Q?ofoevZO/XCIyBod2m+hE?=
X-Forefront-Antispam-Report:
	CIP:4.79.107.243;CTRY:US;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:SJ0PR08CU001.outbound.protection.outlook.com;PTR:mail-sj0pr08cu00102.outbound.protection.outlook.com;CAT:NONE;SFS:(13230040)(82310400026)(14060799003)(156008)(35042699022)(36860700016)(376014)(1800799024)(56012099003)(22082099003)(18002099003);DIR:OUT;SFP:1102;
X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1
X-MS-Exchange-AntiSpam-MessageData-0:
	wqiAqRZgnTMuKIj5V1aU5/bjXKuRuBz+ZBcKcABf5rZHGYAEk6xueOTqT+SP7Ve8GPuO7WU98+w6KtzyrDSkEZ7Jq1UJYf86m6vfnnkEYGZWcAhP4r8ELg8HUGuMGhGK9jUeowTzftBtSnSHsmuwsb7vZtp9XkIMmAAUZWZp3Jj/quBJhLizw3oNkFLbYuL2AVB2m3t9IreoPSJwMQHUlVXbLQg9MeDdDyPlDqTCh9i58ZvmgrfH4oWKcz0SQ2df4Gn/6RYzpay/hM2xIJ4PAdMGWk3DOHFHJFzKTGxqD/lxyjHMNc3bHPYqWl9Fgm93RnkRfZGMzl1rDJjjD6xUei2oTvfKzOQxYTTMD5BiClS9osJi6CIB4JXaXXBBq0H2WCD9C5FADo4yFlfQReDch6AJQa+gNz/n3SoUuGLxTuMj4u1Lfq3FCHk8oBw8RVkG
X-OriginatorOrg: elektrobit.com
X-MS-Exchange-CrossTenant-OriginalArrivalTime: 20 Apr 2026 21:32:37.6759
 (UTC)
X-MS-Exchange-CrossTenant-Network-Message-Id: 85feac3e-3985-4319-d454-08de9f24584a
X-MS-Exchange-CrossTenant-Id: e764c36b-012e-4216-910d-8fd16283182d
X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=e764c36b-012e-4216-910d-8fd16283182d;Ip=[4.79.107.243];Helo=[usbth1es003.ebgroup.elektrobit.com]
X-MS-Exchange-CrossTenant-AuthAs: Internal
X-MS-Exchange-CrossTenant-AuthSource: TreatMessagesAsInternal-BN2PEPF00004FC0.namprd04.prod.outlook.com
X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem
X-MS-Exchange-Transport-CrossTenantHeadersStamped: BN0PR08MB7535
X-purgate-ID: tlsNG-720697/1776720762-89AC2161-FA5047C0/0/0
X-purgate-type: clean
X-purgate-size: 1801

This commit adds an empty common altp2m.c and altp2m.h file to be added to
in later commits. Creating a commit with just the empty file additions
makes it easier to reorder later commits which add to these files.

This commit can be squashed into the first commit which actually adds
something to altp2m.c/altp2m.h for the actual submission if that would be
preferred.

This is commit 1/8 of the preparation phase.

Signed-off-by: Rose Spangler <Rose.Spangler@elektrobit.com>
---
v6: Introduced this patch.
---
 xen/common/Makefile      |  1 +
 xen/common/altp2m.c      | 12 ++++++++++++
 xen/include/xen/altp2m.h |  5 +++++
 3 files changed, 18 insertions(+)
 create mode 100644 xen/common/altp2m.c
 create mode 100644 xen/include/xen/altp2m.h

diff --git a/xen/common/Makefile b/xen/common/Makefile
index 6018e256147f..dbe0094006df 100644
--- a/xen/common/Makefile
+++ b/xen/common/Makefile
@@ -1,3 +1,4 @@
+obj-$(CONFIG_ALTP2M) += altp2m.o
 obj-$(CONFIG_ARGO) += argo.o
 obj-y += bitmap.o
 obj-bin-$(CONFIG_SELF_TESTS) += bitops.init.o
diff --git a/xen/common/altp2m.c b/xen/common/altp2m.c
new file mode 100644
index 000000000000..1a4e102324d4
--- /dev/null
+++ b/xen/common/altp2m.c
@@ -0,0 +1,12 @@
+/* SPDX-License-Identifier: GPL-2.0-only */
+#include <xen/altp2m.h>
+
+/*
+ * Local variables:
+ * mode: C
+ * c-file-style: "BSD"
+ * c-basic-offset: 4
+ * tab-width: 4
+ * indent-tabs-mode: nil
+ * End:
+ */
diff --git a/xen/include/xen/altp2m.h b/xen/include/xen/altp2m.h
new file mode 100644
index 000000000000..520328fd3fa8
--- /dev/null
+++ b/xen/include/xen/altp2m.h
@@ -0,0 +1,5 @@
+/* SPDX-License-Identifier: GPL-2.0-only */
+#ifndef __XEN_ALTP2M_H__
+#define __XEN_ALTP2M_H__
+
+#endif /* __XEN_ALTP2M_H__ */
-- 
2.34.1



From xen-devel-bounces@lists.xenproject.org Mon Apr 20 21:32:52 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 20 Apr 2026 21:32:52 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1287751.1568134 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wEwEd-0007HK-UT; Mon, 20 Apr 2026 21:32:51 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1287751.1568134; Mon, 20 Apr 2026 21:32: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 1wEwEd-0007HB-PE; Mon, 20 Apr 2026 21:32:51 +0000
Received: by outflank-mailman (input) for mailman id 1287751;
 Mon, 20 Apr 2026 21:32:50 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <Rose.Spangler@elektrobit.com>) id 1wEwEc-0007Fm-BI
 for xen-devel@lists.xenproject.org; Mon, 20 Apr 2026 21:32:50 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wEwEb-00CD1J-O7
 for xen-devel@lists.xenproject.org; Mon, 20 Apr 2026 23:32:49 +0200
Received: from [10.42.69.2] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <Rose.Spangler@elektrobit.com>)
 id 69e69b6b-2eae-0a2a0a5409dd-0a2a450289b2-26
 for <xen-devel@lists.xenproject.org>; Mon, 20 Apr 2026 23:32:49 +0200
Received: from [40.93.195.106]
 (helo=SN4PR2101CU001.outbound.protection.outlook.com)
 by tlsNG-720697.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.1)
 (envelope-from <Rose.Spangler@elektrobit.com>)
 id 69e69b80-af86-0a2a45020019-285dc36a4869-4
 for <xen-devel@lists.xenproject.org>; Mon, 20 Apr 2026 23:32:49 +0200
Received: from BL1P221CA0040.NAMP221.PROD.OUTLOOK.COM (2603:10b6:208:5b5::15)
 by LV3PR08MB10562.namprd08.prod.outlook.com (2603:10b6:408:280::19)
 with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9818.32; Mon, 20 Apr
 2026 21:32:43 +0000
Received: from BN2PEPF00004FBE.namprd04.prod.outlook.com
 (2603:10b6:208:5b5:cafe::b2) by BL1P221CA0040.outlook.office365.com
 (2603:10b6:208:5b5::15) with Microsoft SMTP Server (version=TLS1_3,
 cipher=TLS_AES_256_GCM_SHA384) id 15.20.9791.48 via Frontend Transport; Mon,
 20 Apr 2026 21:32:41 +0000
Received: from usbth1es003.ebgroup.elektrobit.com (4.79.107.243) by
 BN2PEPF00004FBE.mail.protection.outlook.com (10.167.243.184) with Microsoft
 SMTP Server (version=TLS1_3, cipher=TLS_AES_256_GCM_SHA384) id 15.20.9791.48
 via Frontend Transport; Mon, 20 Apr 2026 21:32:41 +0000
Received: from usbth1es003 (localhost [127.0.0.1])
 by usbth1es003.ebgroup.elektrobit.com (Postfix) with SMTP id 4fzzGw2lKzz1wdP; 
 Mon, 20 Apr 2026 14:32:40 -0700 (PDT)
Received: from BL0PR07CU001.outbound.protection.outlook.com
 (mail-bl0pr07cu00107.outbound.protection.outlook.com [40.93.4.7])
 (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)
 key-exchange secp384r1 server-signature RSA-PSS (2048 bits) server-digest
 SHA256) (No client certificate requested)
 by usbth1es003.ebgroup.elektrobit.com (Postfix) with ESMTPS;
 Mon, 20 Apr 2026 14:32:40 -0700 (PDT)
Received: from SJ0PR05CA0148.namprd05.prod.outlook.com (2603:10b6:a03:33d::33)
 by BY1PR08MB8648.namprd08.prod.outlook.com (2603:10b6:a03:52c::14)
 with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9818.33; Mon, 20 Apr
 2026 21:32:34 +0000
Received: from SJ1PEPF000026C5.namprd04.prod.outlook.com
 (2603:10b6:a03:33d:cafe::e) by SJ0PR05CA0148.outlook.office365.com
 (2603:10b6:a03:33d::33) with Microsoft SMTP Server (version=TLS1_3,
 cipher=TLS_AES_256_GCM_SHA384) id 15.20.9791.48 via Frontend Transport; Mon,
 20 Apr 2026 21:32:34 +0000
Received: from denue6es012.ebgroup.elektrobit.com (213.95.148.172) by
 SJ1PEPF000026C5.mail.protection.outlook.com (10.167.244.102) with Microsoft
 SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id
 15.20.9791.48 via Frontend Transport; Mon, 20 Apr 2026 21:32:34 +0000
Received: from ubuntu.localdomain (10.10.178.50) by
 denue6es012.ebgroup.elektrobit.com (10.243.160.140) with Microsoft SMTP
 Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id
 15.2.2562.35; Mon, 20 Apr 2026 23:32:30 +0200
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@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=elektrobit.com header.i="@elektrobit.com" header.h="From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck"; dkim=pass header.s=selector1 header.d=elektrobit.com header.i="@elektrobit.com" header.h="From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck"
ARC-Seal: i=2; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=pass;
 b=rlbQ49LaJI6rkxKrc2sEJbiXaFzTCLpuOqr+GQtf5oVDFrTQhQTBYqpE9MrbfrbzmgIvQSH51OGkPOJ+1W/bwF3rOMaIagAWSQ5l2OLYXWOzM263yfY4XWCKfhIy2uwKCDIUr0EbzMS5yyGenE7Y+EexRNmBR1M8cQFiwn/4G6/Gw/zT+TXQhx8NkiuJgJ3pFjwNJIJkS18RDbkSVFAghUB47oxfvdzprDGKZevCWJypa6bo5oLC6g/t8Tmpyf3X5/B0MS9TKlGeM76TkJZ3pCo4y+Sqqj00VFdqRBhmnLe95FjShKEpwWT/Dn9h9e+VtGU8d88cllrRj9w8hCoXzA==
ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com;
 s=arcselector10001;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1;
 bh=HCpfUimCCQkOtqeuUzULZSjqPkZv/1OumHTvfODlnj8=;
 b=rlpxTKSP8g2kUSUm9s9gWhjpSncW22WR+cdmNu6OzJa4tqg9t1tiyTjY/L5G9+XLitTyvbw/p/PM94GH+h62GQl1LU9YHYsiM79BriyBZRA2rABp2SxxbiHzBEVqVZN6Ju6CvqpzhaYpZ6/TGlyFzLapuyAznIW9Z1xDjCiwLz2CZZyR//CuIDgR/Qaimm0988jBZpghBnNslbNCM932PEOn//zjRc/eU7yKDYHPbBIZVtvHqYm8/oj53bKpIaXYnQjlfSw+ZZpPc/YP4W2PA3mT4BKKHO/nVyL/e7EVbyZXj2tkXd4O1clp95DsqjlNuXpGEpnIrK37I8JAZRJPCg==
ARC-Authentication-Results: i=2; mx.microsoft.com 1; spf=pass (sender ip is
 40.93.4.7) smtp.rcpttodomain=citrix.com smtp.mailfrom=elektrobit.com;
 dmarc=pass (p=quarantine sp=none pct=100) action=none
 header.from=elektrobit.com; dkim=pass (signature was verified)
 header.d=elektrobit.com; arc=pass (0 oda=1 ltdi=1
 spf=[1,1,smtp.mailfrom=elektrobit.com]
 dmarc=[1,1,header.from=elektrobit.com])
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=elektrobit.com;
 s=selector1;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck;
 bh=HCpfUimCCQkOtqeuUzULZSjqPkZv/1OumHTvfODlnj8=;
 b=jeu0OhaoCf+q0bPqxLVpXaxi6HaMGWyowygsgrWZXaFp63l4FP/0WfV7jJk9G8xQS7Q5+N0LG5iSTmhCemlgX+R6m9k2j13/Cx5/Jqkq0Nr8c16BgJe9BkFxoSDmXwb+T0OUXuaHTNHKIdivaBITiG/JNWigxvzeEN5wnjX9GqE=
X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 40.93.4.7)
 smtp.mailfrom=elektrobit.com; dkim=pass (signature was verified)
 header.d=elektrobit.com;dmarc=pass action=none header.from=elektrobit.com;
Received-SPF: Pass (protection.outlook.com: domain of elektrobit.com
 designates 40.93.4.7 as permitted sender) receiver=protection.outlook.com;
 client-ip=40.93.4.7; helo=BL0PR07CU001.outbound.protection.outlook.com; pr=C
ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none;
 b=Wt01L8HO9pSI/wszbQ9PN1DPynGos8sTvg8NIWObebQRB+b3qPN0AmZnNRd6oDtJiTCQeRqo1yFCKGJEIqr/9QhM06FFqIwrfMW4JjmHXYHVOfvQyMhjitLtWdQfsRm484HwTTncQuCpo1VI6pKHdzAYH/RlTArWjzSSwCLXsb10eCd+shFmOAXjYNPL9x1682t4psBO/3Y4UMr8ay8qGL/LZYIfEX05b0cF8RYAhcJK98YGVQrJf+EZ6CGv8XIMx7JDYzONg/aKeTM+uZ+XNF+02T/Zv14REv3KCxThkuGlWZCvtYXcldWAL9oDeQbLgb6zUOFdPvcjZ8VzarijfA==
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com;
 s=arcselector10001;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1;
 bh=HCpfUimCCQkOtqeuUzULZSjqPkZv/1OumHTvfODlnj8=;
 b=ixi9DsRK715nH4YVMvb54YugxVKb1eY39tHFhm2fr9F7sQUry6xJ/Mp9bl0zDGJysbOpzjfCarLb68OWgSzTVUDt20yY4Ldqp6lFwxFEN0XB5qMSzo8Wxy1hnbtq4ccy57fkjglEo339HWH7dfLd6+1GRNrDhnpygvDL1oyu082wsD+NbnsMZlJNWg4OSrQkkx0bU7xGd0uo8vnJJTr3ZBMPZDclrB9er0FydUjgFvR5xlikYSbi5AhB2oarMLf8KPSAcPECdQ5YH98xEfHJh4QDy1NyI/dO1iwExqdOIuNYcmqHB+MMtxV91pxWYQSoE3LzXUsxmMFqfV8R6iLw2Q==
ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass (sender ip is
 213.95.148.172) smtp.rcpttodomain=lists.xenproject.org
 smtp.mailfrom=elektrobit.com; dmarc=pass (p=quarantine sp=none pct=100)
 action=none header.from=elektrobit.com; dkim=none (message not signed);
 arc=none (0)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=elektrobit.com;
 s=selector1;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck;
 bh=HCpfUimCCQkOtqeuUzULZSjqPkZv/1OumHTvfODlnj8=;
 b=jeu0OhaoCf+q0bPqxLVpXaxi6HaMGWyowygsgrWZXaFp63l4FP/0WfV7jJk9G8xQS7Q5+N0LG5iSTmhCemlgX+R6m9k2j13/Cx5/Jqkq0Nr8c16BgJe9BkFxoSDmXwb+T0OUXuaHTNHKIdivaBITiG/JNWigxvzeEN5wnjX9GqE=
X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 213.95.148.172)
 smtp.mailfrom=elektrobit.com; dkim=none (message not signed)
 header.d=none;dmarc=pass action=none header.from=elektrobit.com;
Received-SPF: Pass (protection.outlook.com: domain of elektrobit.com
 designates 213.95.148.172 as permitted sender)
 receiver=protection.outlook.com; client-ip=213.95.148.172;
 helo=denue6es012.ebgroup.elektrobit.com; pr=C
From: Rose Spangler <Rose.Spangler@elektrobit.com>
To: <xen-devel@lists.xenproject.org>
CC: Rose Spangler <Rose.Spangler@elektrobit.com>, Jan Beulich
	<jbeulich@suse.com>, Andrew Cooper <andrew.cooper3@citrix.com>,
	=?UTF-8?q?Roger=20Pau=20Monn=C3=A9?= <roger.pau@citrix.com>, Teddy Astie
	<teddy.astie@vates.tech>
Subject: [RFC PATCH v6 04/43] x86/altp2m: Rename hvm_altp2m_supported to altp2m_supported
Date: Mon, 20 Apr 2026 17:31:27 -0400
Message-ID: <20260420213206.208750-5-Rose.Spangler@elektrobit.com>
X-Mailer: git-send-email 2.34.1
In-Reply-To: <20260420213206.208750-1-Rose.Spangler@elektrobit.com>
References: <20260420213206.208750-1-Rose.Spangler@elektrobit.com>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit
Content-Type: text/plain
X-Originating-IP: [10.10.178.50]
X-ClientProxiedBy: denue6es012.ebgroup.elektrobit.com (10.243.160.140) To
 denue6es012.ebgroup.elektrobit.com (10.243.160.140)
X-EOPAttributedMessage: 1
X-MS-Exchange-SkipListedInternetSender:
 ip=[213.95.148.172];domain=denue6es012.ebgroup.elektrobit.com
X-MS-TrafficTypeDiagnostic:
	SJ1PEPF000026C5:EE_|BY1PR08MB8648:EE_|BN2PEPF00004FBE:EE_|LV3PR08MB10562:EE_
X-MS-Office365-Filtering-Correlation-Id: 9553204c-2db9-4b80-569a-08de9f245a4a
X-SM-outgoing: yes
X-MS-Exchange-SenderADCheck: 1
X-MS-Exchange-AntiSpam-Relay: 0
X-Microsoft-Antispam-Untrusted:
 BCL:0;ARA:13230040|704161311799003|82310400026|36860700016|376014|1800799024|56012099003|22082099003|18002099003;
X-Microsoft-Antispam-Message-Info-Original:
 =?us-ascii?Q?8M3rLOVpK7O0IptY1TqlQZwHn1PJi/9JX0xizO+TyQ44h1BkprxEybksccce?=
 =?us-ascii?Q?95DUBbr9AID5SZcBKXl/04D/nxg1nAzmMrfj/YImFDEY+rmpYFPLEKezn6sQ?=
 =?us-ascii?Q?aaiIySnidovQzEHWPWWmcEXaqRS6uBRxUpAo10bSgUUEED52ZvBNWLw/34fR?=
 =?us-ascii?Q?BOi/RhFiTM6cU+Ta1mvyWnUFxTeLEAqMYgmk9A6+SA3q4eyr6zJWHKkmQagJ?=
 =?us-ascii?Q?K2LSJGqDYQDjVVpwjbqAJWXe1pKeWD+Rx+9LzGweWAJDPZ5f6ZgtHNDGdrrk?=
 =?us-ascii?Q?DxOggOVexNCzCEFY80kmRBmKsJd0trS1Msf7lyt8WTEe5uRQvBuyacrhZ9Sb?=
 =?us-ascii?Q?6SScMZ4mOqwzg6/nl4/bDpEQ+bjQQxb/OwnZA4TyY8ikpUv5zA3QcKFVyElU?=
 =?us-ascii?Q?JhDPwGFBzNrkL8ATRCOuoqk80AoWZDFfeQiKKj8iYQE2/ni1GSl6yNhnXk/m?=
 =?us-ascii?Q?PRTYyOwfPEUq1fYtSeNoLChYRoEo+XEJhygJqP01DDw0A2tivzv2oUPWbpnM?=
 =?us-ascii?Q?p/MHu44/tqEIAZntefxZ8XzpFkIvYQJgeZyBJdi6ZKJRW/8qlhIUQn3AOhhl?=
 =?us-ascii?Q?904dsNDebdaYIUZL0xhwAMEyB7OoxZiHiuHXNhF/6ZC5DspUSxTZ59BVMcQU?=
 =?us-ascii?Q?jjY2ygL/rKXNq92e11VrzOB21l077ppGrUbu0nk0Jy9oqBZzMBBwhGN3ATPR?=
 =?us-ascii?Q?PfqnQ7GxtJFgvmiwEJgJP0yBl6n9sfuPoJW1PU3e2AvV8m/ZEsQktJ2Buk6h?=
 =?us-ascii?Q?yqLyJo5ms4nN3L7h0lX6pklJAzWrlrbXK1AOQilZ+a93O5t3Z4G0sKli0F4Z?=
 =?us-ascii?Q?cPxCrr5OWHswQfqWZkNFB2Ph3pDRP4N7Ql3TcW/A05TgZUwjSyG5ve8+fhVp?=
 =?us-ascii?Q?y7qZnWel2ascY7RmjrI6y1gEW33l72fs76nb8EWVEWx0ImA0qniECFjmda5X?=
 =?us-ascii?Q?BEUNoXoNKLRID5QwY3puQKMQARe/ywGg0SXpUCi8RipTIKD22tyc7HKqL7ca?=
 =?us-ascii?Q?WVtS7KpUpvDpnnnJfJQ36KOIaaoyrxnuV4u7Qe1ZwV7ZrMzXd29Y4uXpEx5v?=
 =?us-ascii?Q?RSIGoITs90nlTLKmuWpJ9r3HGorNF/FUo/JYdjV9L/nCZqv76GdzYeYPWMBo?=
 =?us-ascii?Q?2VnlYCLv3sRB69UfKhTI4W4vTVh6947/uwmnDHsHme9ffQQcvMxRHhqXcOQr?=
 =?us-ascii?Q?b7mBef5tmQuUXDvTEpTo49z5h1rMugJa0fj5LNm3eg/eOVe6iHlb+ka535Y?=
 =?us-ascii?Q?=3D?=
X-Forefront-Antispam-Report-Untrusted:
 CIP:213.95.148.172;CTRY:DE;LANG:en;SCL:1;SRV:;IPV:CAL;SFV:NSPM;H:denue6es012.ebgroup.elektrobit.com;PTR:eth1-fw1-nbg6.eb.noris.de;CAT:NONE;SFS:(13230040)(704161311799003)(82310400026)(36860700016)(376014)(1800799024)(56012099003)(22082099003)(18002099003);DIR:OUT;SFP:1102;
X-Exchange-RoutingPolicyChecked:
 Gq9OKQaEsJfEbY/UJBAGGxzhXztRrX12uy6oh14k9wZCH2hli+gEqrrUnw0TTWxDYbtewsLkOxfUdh0eI26VmpH8yMQ014ZhHf3t9wfozEaeVMSr6KaDCZYZ8FEF9kx/yFu3P2ceRs9ppv2R8q3wquFCV1jRwCiriogtmwWiYEpK/KcRYYxB5nFhvJcwIbdH0JL+7vOubrTE4D7Akytd8czld6qwH/Du17dLUx4+w1AXMEAwDbby1r056Z4Z6j15GX62RgJHRh+wjwwIx9pg74Bvs1C5N2EroqPzmanvfGlLPGaKEVJv24otuKz5/LriLax7ZkkiRgpNegoaLLosGQ==
X-MS-Exchange-Transport-CrossTenantHeadersStamped: BY1PR08MB8648
X-MS-Exchange-SkipListedInternetSender:
 ip=[40.93.4.7];domain=BL0PR07CU001.outbound.protection.outlook.com
X-MS-Exchange-ExternalOriginalInternetSender:
 ip=[40.93.4.7];domain=BL0PR07CU001.outbound.protection.outlook.com
X-MS-Exchange-Transport-CrossTenantHeadersStripped:
 BN2PEPF00004FBE.namprd04.prod.outlook.com
X-MS-PublicTrafficType: Email
X-MS-Office365-Filtering-Correlation-Id-Prvs:
	ccea4e16-5152-426a-4fe8-08de9f245632
X-Microsoft-Antispam:
	BCL:0;ARA:13230040|704161311799003|156008|376014|36860700016|1800799024|35042699022|82310400026|14060799003|56012099003|18002099003|22082099003;
X-Microsoft-Antispam-Message-Info:
	=?us-ascii?Q?gRR7I+ABSdZi35XFXcIpBxxFcpeZTRZPy4LD+7zup0pbVCqHs9ly0mwZ338e?=
 =?us-ascii?Q?OLxlZSfOu/dIa5HnfjS92g6hrNGotvudP3Azhz9dBt0mUCc3+KxMVI4M2n5s?=
 =?us-ascii?Q?wBTs3fy5qcPbadrjaJ9Vz9vTHRbQXipUZMoWFunFm5sRnoXZK9wVBvqPNXnN?=
 =?us-ascii?Q?KoR99wVSWE3+Xexty4B8I1HCI7PIVzLWVlcMsJYS75sNFBWRSXcvkJ9u81I7?=
 =?us-ascii?Q?LW+AZBVWcefHspOYiMla5VbajPotq4VZlLGX4ye23z6HT8fIOUmkpsLdhP37?=
 =?us-ascii?Q?5ksoxr9HieIsanyCG/LTOA/U7r38zpN0LxY+QEug814+oS5iyBD7F6L7Osly?=
 =?us-ascii?Q?EkoE4j4lAE6clPmhJl2JBYRSgoBidW2j5IovKiLZFzdIoSimuY/DiZUAcmrK?=
 =?us-ascii?Q?hol8nfSPZlMvai+znf6xNpHmXx2Zy2HOzd6p/KCLcPzADVgeEM8ldGhLG/Lv?=
 =?us-ascii?Q?DOzybVJkFMpvdXvXpEoMXe0v8sFHRK9sP4aPd0STQ+ZFuka39cuwFm9c+fRF?=
 =?us-ascii?Q?iDhXYpipjRQy9nObwIYsdFN3RkmT+HQQUCCp2tZJ36hEw6wLV6129B8MwCpc?=
 =?us-ascii?Q?aHi+Mn4ZqVsbXdI/AxmE+KXwnoW8PqPkGUgDIp2zehgITk//BWPeELX0Fhn8?=
 =?us-ascii?Q?Ro8wSe1iw/N9lFhnCyDjJbISgC7bEYX3vbWnIfDaCmBJ1w6qB0Xfmd5RKCwR?=
 =?us-ascii?Q?DlLSvSZmEue2HXtiPRN+5kVf4pEpiqfc2h2YYoxEnIv+mRI+/l2nYcet/5Ws?=
 =?us-ascii?Q?OYAomSA9TCJQn0WFl9IVU9HisRTFv1egj7dM0Y2cix4Pk2mjeM6jBl1fG2p0?=
 =?us-ascii?Q?Ln5wl8XqzSZ8J8Np7Qel/7avJ7WmMawD2bie8LffKJhSWvOwCrbJPBaQIWX9?=
 =?us-ascii?Q?cIPZpxjMGJA5CDSc0j+V2jYdUGrG6i+iNrn3Z9sCatFBmqYmtqIuV5yK7jz4?=
 =?us-ascii?Q?Z1VY8828VK9yF4zK+ieORPANcezTgxqc1bmzdC099zpz4yc7Zj80RrdU4tGD?=
 =?us-ascii?Q?FOM57pf2pXkjVc8890e8P/xJmMdFWo8mh+PCD6Pgsug6pNrZ6N2o+L3AefP2?=
 =?us-ascii?Q?d+GA+elurRTCeUDr+KXYB/vnGKtW808ZyTdzHeZ6NzWIvUtKfoleGNdU2pO4?=
 =?us-ascii?Q?TAT89z9XYX54qVy9f4pCxZO49pWOoAVx9Z9UHaiNDGRmyZ+0l161tynxFdlc?=
 =?us-ascii?Q?fhkA+skCtCx0oVoAdKozUpTgsqNqtSnJOI21TxOfMenZYqI22NaQAeXyeiU?=
 =?us-ascii?Q?=3D?=
X-Forefront-Antispam-Report:
	CIP:4.79.107.243;CTRY:US;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:BL0PR07CU001.outbound.protection.outlook.com;PTR:mail-bl0pr07cu00107.outbound.protection.outlook.com;CAT:NONE;SFS:(13230040)(704161311799003)(156008)(376014)(36860700016)(1800799024)(35042699022)(82310400026)(14060799003)(56012099003)(18002099003)(22082099003);DIR:OUT;SFP:1102;
X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1
X-MS-Exchange-AntiSpam-MessageData-0:
	nO2vQnDj+g67qkhl/vnsVjDzGEh4mUtED4k6uTv2NSfQlaLYZA8sUy3daxzJ2p6+U5517okDGSwxEcwlYpWbsV5ZYCyO4Rhaj25tnDK3kXnkcoIDTWOLKjgLtIPzR/O1dRpZycQA1FrIAP4Ume2J7CaOQIsihsxZ2W9IB2NzrM0xdNiMTt0FOqBVsghIVZOxX8+NLrfCNweC9yTRqgtLf0CVFyrfb6e6YcdU3etxVkvS65CouF3CYZrrPB9hrrbgYMb7ghhZZy9S0BvS9sjqo31a22Fll2DWqBYbp6Dtc8o8pRJoPSatkbfxsTgd2b3uixhFQK+DA0npfzN49ix0z6GI1ikD+IvSiZRUpaYSbma1Yapve9jlprMs7oMV3Yhub7kXanlSKsPDP/Cpqg/0OqlyP5215w24uMZPQcPajdUyz4dDVElrsgtLwi8ulxPn
X-OriginatorOrg: elektrobit.com
X-MS-Exchange-CrossTenant-OriginalArrivalTime: 20 Apr 2026 21:32:41.2309
 (UTC)
X-MS-Exchange-CrossTenant-Network-Message-Id: 9553204c-2db9-4b80-569a-08de9f245a4a
X-MS-Exchange-CrossTenant-Id: e764c36b-012e-4216-910d-8fd16283182d
X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=e764c36b-012e-4216-910d-8fd16283182d;Ip=[4.79.107.243];Helo=[usbth1es003.ebgroup.elektrobit.com]
X-MS-Exchange-CrossTenant-AuthAs: Internal
X-MS-Exchange-CrossTenant-AuthSource: TreatMessagesAsInternal-BN2PEPF00004FBE.namprd04.prod.outlook.com
X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem
X-MS-Exchange-Transport-CrossTenantHeadersStamped: LV3PR08MB10562
X-purgate-ID: tlsNG-720697/1776720769-8336C161-4E52AD19/0/0
X-purgate-type: clean
X-purgate-size: 5417

Using a generic name for altp2m_supported makes it possible to indicate
whether altp2m is supported on other architectures as well. Even if other
architectures always support altp2m at a hardware level (like ARM), altp2m
might not be supported due to CONFIG_ALTP2M being disabled. Therefore, the
altp2m_supported function can be implemented on all architectures to
indicate if the hardware supports altp2m *and* if CONFIG_ALTP2M is enabled.

This is commit 4/8 of the preparation phase.

Signed-off-by: Rose Spangler <Rose.Spangler@elektrobit.com>
---
v6: Introduced this patch.
---
 xen/arch/x86/domain.c              | 2 +-
 xen/arch/x86/hvm/hvm.c             | 6 +++---
 xen/arch/x86/include/asm/hvm/hvm.h | 4 ++--
 xen/arch/x86/mm/hap/hap.c          | 6 +++---
 xen/arch/x86/mm/p2m-basic.c        | 4 ++--
 xen/arch/x86/mm/p2m-ept.c          | 2 +-
 6 files changed, 12 insertions(+), 12 deletions(-)

diff --git a/xen/arch/x86/domain.c b/xen/arch/x86/domain.c
index 1d458f1372e5..512b18d4010f 100644
--- a/xen/arch/x86/domain.c
+++ b/xen/arch/x86/domain.c
@@ -698,7 +698,7 @@ int arch_sanitise_domain_config(struct xen_domctl_createdomain *config)
 
     if ( altp2m_mode )
     {
-        if ( !hvm_altp2m_supported() )
+        if ( !altp2m_supported() )
         {
             dprintk(XENLOG_INFO, "altp2m is not supported\n");
             return -EINVAL;
diff --git a/xen/arch/x86/hvm/hvm.c b/xen/arch/x86/hvm/hvm.c
index 86c12c0d1ef4..bc35efdf2c02 100644
--- a/xen/arch/x86/hvm/hvm.c
+++ b/xen/arch/x86/hvm/hvm.c
@@ -1692,7 +1692,7 @@ void hvm_vcpu_destroy(struct vcpu *v)
 
     ioreq_server_remove_vcpu_all(v->domain, v);
 
-    if ( hvm_altp2m_supported() )
+    if ( altp2m_supported() )
         altp2m_vcpu_destroy(v);
 
     nestedhvm_vcpu_destroy(v);
@@ -4566,7 +4566,7 @@ static int do_altp2m_op(
     int rc = 0;
     uint64_t mode;
 
-    if ( !hvm_altp2m_supported() )
+    if ( !altp2m_supported() )
         return -EOPNOTSUPP;
 
     if ( copy_from_guest(&a, arg, 1) )
@@ -4965,7 +4965,7 @@ static int compat_altp2m_op(
         struct xen_hvm_altp2m_op *altp2m_op;
     } nat;
 
-    if ( !hvm_altp2m_supported() )
+    if ( !altp2m_supported() )
         return -EOPNOTSUPP;
 
     if ( copy_from_guest(&a, arg, 1) )
diff --git a/xen/arch/x86/include/asm/hvm/hvm.h b/xen/arch/x86/include/asm/hvm/hvm.h
index e7c1364802f8..6406bb687718 100644
--- a/xen/arch/x86/include/asm/hvm/hvm.h
+++ b/xen/arch/x86/include/asm/hvm/hvm.h
@@ -702,7 +702,7 @@ static inline bool hvm_hap_supported(void)
 }
 
 /* returns true if hardware supports alternate p2m's */
-static inline bool hvm_altp2m_supported(void)
+static inline bool altp2m_supported(void)
 {
     return IS_ENABLED(CONFIG_ALTP2M) && hvm_funcs.caps.altp2m;
 }
@@ -876,7 +876,7 @@ static inline bool hvm_hap_supported(void)
     return false;
 }
 
-static inline bool hvm_altp2m_supported(void)
+static inline bool altp2m_supported(void)
 {
     return false;
 }
diff --git a/xen/arch/x86/mm/hap/hap.c b/xen/arch/x86/mm/hap/hap.c
index 6918a00a2a25..563eba3c0d36 100644
--- a/xen/arch/x86/mm/hap/hap.c
+++ b/xen/arch/x86/mm/hap/hap.c
@@ -501,7 +501,7 @@ int hap_enable(struct domain *d, u32 mode)
     }
 
 #ifdef CONFIG_ALTP2M
-    if ( hvm_altp2m_supported() )
+    if ( altp2m_supported() )
     {
         /* Init alternate p2m data */
         if ( (d->arch.altp2m_eptp = alloc_xenheap_page()) == NULL )
@@ -546,7 +546,7 @@ void hap_final_teardown(struct domain *d)
     unsigned int i;
 
 #ifdef CONFIG_ALTP2M
-    if ( hvm_altp2m_supported() )
+    if ( altp2m_supported() )
         for ( i = 0; i < d->nr_altp2m; i++ )
             p2m_teardown(d->altp2m_p2m[i], true, NULL);
 #endif
@@ -590,7 +590,7 @@ void hap_teardown(struct domain *d, bool *preempted)
 
 #ifdef CONFIG_ALTP2M
     /* Leave the root pt in case we get further attempts to modify the p2m. */
-    if ( hvm_altp2m_supported() )
+    if ( altp2m_supported() )
     {
         if ( altp2m_active(d) )
             for_each_vcpu ( d, v )
diff --git a/xen/arch/x86/mm/p2m-basic.c b/xen/arch/x86/mm/p2m-basic.c
index e126fda26760..ce14066fedaf 100644
--- a/xen/arch/x86/mm/p2m-basic.c
+++ b/xen/arch/x86/mm/p2m-basic.c
@@ -128,7 +128,7 @@ int p2m_init(struct domain *d)
         return rc;
     }
 
-    rc = hvm_altp2m_supported() ? p2m_init_altp2m(d) : 0;
+    rc = altp2m_supported() ? p2m_init_altp2m(d) : 0;
     if ( rc )
     {
         p2m_teardown_hostp2m(d);
@@ -197,7 +197,7 @@ void p2m_final_teardown(struct domain *d)
 {
     if ( is_hvm_domain(d) )
     {
-        if ( hvm_altp2m_supported() )
+        if ( altp2m_supported() )
             p2m_teardown_altp2m(d);
         /*
          * We must tear down nestedp2m unconditionally because
diff --git a/xen/arch/x86/mm/p2m-ept.c b/xen/arch/x86/mm/p2m-ept.c
index ddb4c7606be1..84159198f3a0 100644
--- a/xen/arch/x86/mm/p2m-ept.c
+++ b/xen/arch/x86/mm/p2m-ept.c
@@ -995,7 +995,7 @@ out:
     if ( is_epte_present(&old_entry) )
         ept_free_entry(p2m, &old_entry, target);
 
-    if ( hvm_altp2m_supported() && entry_written && p2m_is_hostp2m(p2m) )
+    if ( altp2m_supported() && entry_written && p2m_is_hostp2m(p2m) )
     {
         ret = p2m_altp2m_propagate_change(d, _gfn(gfn), mfn, order, p2mt, p2ma);
         if ( !rc )
-- 
2.34.1



From xen-devel-bounces@lists.xenproject.org Mon Apr 20 21:32:52 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 20 Apr 2026 21:32:52 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1287752.1568138 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wEwEe-0007KS-97; Mon, 20 Apr 2026 21:32:52 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1287752.1568138; Mon, 20 Apr 2026 21:32: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 1wEwEe-0007If-0I; Mon, 20 Apr 2026 21:32:52 +0000
Received: by outflank-mailman (input) for mailman id 1287752;
 Mon, 20 Apr 2026 21:32:50 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <Rose.Spangler@elektrobit.com>) id 1wEwEc-0007GC-Nq
 for xen-devel@lists.xenproject.org; Mon, 20 Apr 2026 21:32:50 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wEwEc-009kg1-4k
 for xen-devel@lists.xenproject.org; Mon, 20 Apr 2026 23:32:50 +0200
Received: from [10.42.69.6] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <Rose.Spangler@elektrobit.com>)
 id 69e69b21-5cb7-0a2a0a5109dd-0a2a4506a0cc-34
 for <xen-devel@lists.xenproject.org>; Mon, 20 Apr 2026 23:32:50 +0200
Received: from [40.93.198.123]
 (helo=CY7PR03CU001.outbound.protection.outlook.com)
 by tlsNG-16d1c6.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.1)
 (envelope-from <Rose.Spangler@elektrobit.com>)
 id 69e69b80-7371-0a2a45060019-285dc67b7ef8-3
 for <xen-devel@lists.xenproject.org>; Mon, 20 Apr 2026 23:32:49 +0200
Received: from SJ0PR13CA0057.namprd13.prod.outlook.com (2603:10b6:a03:2c2::32)
 by MN2PR08MB6318.namprd08.prod.outlook.com (2603:10b6:208:1aa::8)
 with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9818.32; Mon, 20 Apr
 2026 21:32:45 +0000
Received: from CO1PEPF000066E9.namprd05.prod.outlook.com
 (2603:10b6:a03:2c2:cafe::82) by SJ0PR13CA0057.outlook.office365.com
 (2603:10b6:a03:2c2::32) with Microsoft SMTP Server (version=TLS1_3,
 cipher=TLS_AES_256_GCM_SHA384) id 15.20.9791.48 via Frontend Transport; Mon,
 20 Apr 2026 21:32:43 +0000
Received: from usbth1es003.ebgroup.elektrobit.com (4.79.107.243) by
 CO1PEPF000066E9.mail.protection.outlook.com (10.167.249.11) with Microsoft
 SMTP Server (version=TLS1_3, cipher=TLS_AES_256_GCM_SHA384) id 15.20.9791.48
 via Frontend Transport; Mon, 20 Apr 2026 21:32:42 +0000
Received: from usbth1es003 (localhost [127.0.0.1])
 by usbth1es003.ebgroup.elektrobit.com (Postfix) with SMTP id 4fzzGy4BbWz1wdM; 
 Mon, 20 Apr 2026 14:32:42 -0700 (PDT)
Received: from CO1PR08CU001.outbound.protection.outlook.com
 (mail-co1pr08cu00104.outbound.protection.outlook.com [40.93.10.100])
 (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)
 key-exchange secp384r1 server-signature RSA-PSS (2048 bits) server-digest
 SHA256) (No client certificate requested)
 by usbth1es003.ebgroup.elektrobit.com (Postfix) with ESMTPS;
 Mon, 20 Apr 2026 14:32:42 -0700 (PDT)
Received: from SJ0PR05CA0130.namprd05.prod.outlook.com (2603:10b6:a03:33d::15)
 by SJ0PR08MB8364.namprd08.prod.outlook.com (2603:10b6:a03:4d5::16)
 with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9818.32; Mon, 20 Apr
 2026 21:32:36 +0000
Received: from SJ1PEPF000026C5.namprd04.prod.outlook.com
 (2603:10b6:a03:33d:cafe::2a) by SJ0PR05CA0130.outlook.office365.com
 (2603:10b6:a03:33d::15) with Microsoft SMTP Server (version=TLS1_3,
 cipher=TLS_AES_256_GCM_SHA384) id 15.20.9791.48 via Frontend Transport; Mon,
 20 Apr 2026 21:32:36 +0000
Received: from denue6es012.ebgroup.elektrobit.com (213.95.148.172) by
 SJ1PEPF000026C5.mail.protection.outlook.com (10.167.244.102) with Microsoft
 SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id
 15.20.9791.48 via Frontend Transport; Mon, 20 Apr 2026 21:32:36 +0000
Received: from ubuntu.localdomain (10.10.178.50) by
 denue6es012.ebgroup.elektrobit.com (10.243.160.140) with Microsoft SMTP
 Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id
 15.2.2562.35; Mon, 20 Apr 2026 23:32:33 +0200
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@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=elektrobit.com header.i="@elektrobit.com" header.h="From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck"; dkim=pass header.s=selector1 header.d=elektrobit.com header.i="@elektrobit.com" header.h="From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck"
ARC-Seal: i=2; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=pass;
 b=CBku/OO9uCZfYzgquT9ALW8Jvi2QBUxOMb6L8RjFanCvZxlDeyiJlB86FjO9yZs177+UtS++9JCICv816RPNQZZC/Nz/JtaVMyGZlYIE7+xDrEaFuI56e5lft3aev35/Be722lXlr+o5J9nJuCqUGZpHerDEk6XKSnpLWS/S5NmUAR/05S/m+dhGdnlHdQLvEODfqZeajVQxtLzEqzkVH8cnLJ6rRfRhvDRRl4ZzRgOAhLagBNHpFLLW0poUePgkQC8atOXmxuLfc8MrgJOUowe/VybrEj9j21wmGh1mLkcF/YaG6WGBisqMmNSHWMQADXJUgdlrKHFGrTEkE4CMfQ==
ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com;
 s=arcselector10001;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1;
 bh=jRLoxsuohqR21r1f42+aEEmWEGpw45nncUOaZm3GjeU=;
 b=c5DkqDZoYTKO5tmso894USC4bJ/pHGtBEm8h1wKAQOfxjTO07WNahOtAOZAR8xOiZ7dpL1N+/5XPWI8Ze2+PT5KQaKpnOTIu45CiSdRWGpbHJYtzwBO1TckR/UKZvp+cyRmuQutq8XdWevpXaL0FwdB4ChcVl6ImhpyH6451GZiGYAyubWeG8UOdgTLrnopmRHLwRADN53eM1bQjWYaFwSZTfEZ2044OFo9SvkQnnJbqpXxaN73/v2wjib+Ilmgs/692noJ1ONsW8kYM5L2R79Quf+cR1Roh0a1T7U9FlT6UrE7/8yxdRlVX0EGx28egz7p9iAmMom4M2NJpjvI6AQ==
ARC-Authentication-Results: i=2; mx.microsoft.com 1; spf=pass (sender ip is
 40.93.10.100) smtp.rcpttodomain=amd.com smtp.mailfrom=elektrobit.com;
 dmarc=pass (p=quarantine sp=none pct=100) action=none
 header.from=elektrobit.com; dkim=pass (signature was verified)
 header.d=elektrobit.com; arc=pass (0 oda=1 ltdi=1
 spf=[1,1,smtp.mailfrom=elektrobit.com]
 dmarc=[1,1,header.from=elektrobit.com])
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=elektrobit.com;
 s=selector1;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck;
 bh=jRLoxsuohqR21r1f42+aEEmWEGpw45nncUOaZm3GjeU=;
 b=R35PpULPeDddnMBIoe7our9YNHU0NcZTmhHHr1RbudNoKQK2Qx5NvdPSAd+NXDVijO2jcZ3DD5D7XT9gzoZegRUplMDfwUVyZ9Sok6rPJSORuz+iJfb9sabQbwgsppZjLGUOcLvpARDEIrIwLKo/Bvdvl+hU4Aw4hBBiO9V3z+A=
X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 40.93.10.100)
 smtp.mailfrom=elektrobit.com; dkim=pass (signature was verified)
 header.d=elektrobit.com;dmarc=pass action=none header.from=elektrobit.com;
Received-SPF: Pass (protection.outlook.com: domain of elektrobit.com
 designates 40.93.10.100 as permitted sender) receiver=protection.outlook.com;
 client-ip=40.93.10.100; helo=CO1PR08CU001.outbound.protection.outlook.com;
 pr=C
ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none;
 b=jAm8tTt5RUhiro3ZwwmjvZTP+sBGxTJbVh4XB+9qYrtaapYcx4oUSDjW4P4ygFEf/FNdrygb7LjJ9PLk2Tajb04WRIFTb8SIHcD7ahx3G4wP0FRVGP/aQu+F/w4j/2ztWCI30mg5nyX1yYYKPbRJZ7YPCsoRkinw2z70KF7eVeD/sjt5z7vY73yNlTW+heiFQ3naEF1nSAsXSPvtquJFSzJ0vm95QFi3K8YYbmAQWrC5d+vSqmQW6/A1TabxRpLzMqohzTOoFsq3zCF8HHZoFU1Q+ADDNs9MfpFlKSBzvoQiqpzH0Tdz2DViVLiFbvAHy+gDMahr5IN5CsxzJnLFUg==
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com;
 s=arcselector10001;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1;
 bh=jRLoxsuohqR21r1f42+aEEmWEGpw45nncUOaZm3GjeU=;
 b=q1yF3KDZwMkseeI5H+kHAV5Gqk9lj7gh4JukVIV0QLzhJ52TFPBC6MXkwJsx+bbF0ldMPFX+MUimPZLXsc/AQEpfksh1FFXgf1VD+jY/brdhPS7dSbxOGfgYHjF9xkl4zukgNwpbcJQ3CC6Ow0d4EYpor0zAQvq/Kl41QJKqsXzA9pFgwMnhkXuxoAHjBFiawJvmZ/FUY6BNZchZVGFeTJaFQMsNZQgFK0AAGj2a+11Nd48JdTSSGWyFTCDZexjHh2REUzEsbphjtJIcsw5NlTjOFD+09yfAJdfEGKaaXXBssrjIjH/QV6QpxUBL+pv9KKHvtBOJVlM2IN6GcnOuKg==
ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass (sender ip is
 213.95.148.172) smtp.rcpttodomain=lists.xenproject.org
 smtp.mailfrom=elektrobit.com; dmarc=pass (p=quarantine sp=none pct=100)
 action=none header.from=elektrobit.com; dkim=none (message not signed);
 arc=none (0)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=elektrobit.com;
 s=selector1;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck;
 bh=jRLoxsuohqR21r1f42+aEEmWEGpw45nncUOaZm3GjeU=;
 b=R35PpULPeDddnMBIoe7our9YNHU0NcZTmhHHr1RbudNoKQK2Qx5NvdPSAd+NXDVijO2jcZ3DD5D7XT9gzoZegRUplMDfwUVyZ9Sok6rPJSORuz+iJfb9sabQbwgsppZjLGUOcLvpARDEIrIwLKo/Bvdvl+hU4Aw4hBBiO9V3z+A=
X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 213.95.148.172)
 smtp.mailfrom=elektrobit.com; dkim=none (message not signed)
 header.d=none;dmarc=pass action=none header.from=elektrobit.com;
Received-SPF: Pass (protection.outlook.com: domain of elektrobit.com
 designates 213.95.148.172 as permitted sender)
 receiver=protection.outlook.com; client-ip=213.95.148.172;
 helo=denue6es012.ebgroup.elektrobit.com; pr=C
From: Rose Spangler <Rose.Spangler@elektrobit.com>
To: <xen-devel@lists.xenproject.org>
CC: Rose Spangler <Rose.Spangler@elektrobit.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>, Aqib Javaid
	<Aqib.Javaid@elektrobit.com>
Subject: [RFC PATCH v6 06/43] arm/altp2m: Add template arch-specific altp2m.c/altp2m.h
Date: Mon, 20 Apr 2026 17:31:29 -0400
Message-ID: <20260420213206.208750-7-Rose.Spangler@elektrobit.com>
X-Mailer: git-send-email 2.34.1
In-Reply-To: <20260420213206.208750-1-Rose.Spangler@elektrobit.com>
References: <20260420213206.208750-1-Rose.Spangler@elektrobit.com>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit
Content-Type: text/plain
X-Originating-IP: [10.10.178.50]
X-ClientProxiedBy: denue6es012.ebgroup.elektrobit.com (10.243.160.140) To
 denue6es012.ebgroup.elektrobit.com (10.243.160.140)
X-EOPAttributedMessage: 1
X-MS-Exchange-SkipListedInternetSender:
 ip=[213.95.148.172];domain=denue6es012.ebgroup.elektrobit.com
X-MS-TrafficTypeDiagnostic:
	SJ1PEPF000026C5:EE_|SJ0PR08MB8364:EE_|CO1PEPF000066E9:EE_|MN2PR08MB6318:EE_
X-MS-Office365-Filtering-Correlation-Id: 63dc7c5c-3c53-4d20-974d-08de9f245b16
X-SM-outgoing: yes
X-MS-Exchange-SenderADCheck: 1
X-MS-Exchange-AntiSpam-Relay: 0
X-Microsoft-Antispam-Untrusted:
 BCL:0;ARA:13230040|376014|36860700016|82310400026|1800799024|56012099003|18002099003|22082099003;
X-Microsoft-Antispam-Message-Info-Original:
 =?us-ascii?Q?YKZal3zC4Tmx5cwbSRzEfHoSJ8pk2YnsGHXJaZ1Y5q58f0bQgqFz+ixTNdFD?=
 =?us-ascii?Q?c7EvHGM9tEn2k7/lRuXRoRF41JcADlh1r8ouW+FDGFl6h92DTcR81YOIa+2E?=
 =?us-ascii?Q?l4rSI/ANrUiyPLcZ1v44hiaBZ+Bn/cUC96W6CMm2M2So9np+B6wV1upqpo/4?=
 =?us-ascii?Q?HYn00csovB3jDu5NqYKEXCJvvRdB+OMKdmBoR79eUoDGdyf1uMl0g6tzUWQ9?=
 =?us-ascii?Q?Mkp72of68pEjf8zrORS16CE+XkQtBHoOmJ309F8d9ttFSnPARV+5hns72v4x?=
 =?us-ascii?Q?S9PpTpfakLVHDbMEHRJDNY74hAjDfLaxbvUmwtmWmDr60fBXHA58dDLtsFq+?=
 =?us-ascii?Q?nLPjnqhq1k6GY/PVI2zY2aL43TYLqkwRWSyIlQ+3YNxJw1usO7I8xOqEwFOQ?=
 =?us-ascii?Q?P1wtewKNPe4LQuXt+gBzafLS4TM+/ImXtwo9GF1Nkt5vRY/YucEL+47Hmb0h?=
 =?us-ascii?Q?QVaWN0foQmGoz0J6kaMr24VD7c8bsdjBFTVJGMbN6AOt4KSYOXmz908ugilq?=
 =?us-ascii?Q?maDEnIr2IOp4FDilPeTuKUzE2q7D9OWWgN3Ghaj2VjARGwLOR19X2i0sSRfu?=
 =?us-ascii?Q?rvQedmmlXNfkVG5paV3Uaghp/yXlyKLH5M/vxn1S9CNsqmeBqfAHzImXYa47?=
 =?us-ascii?Q?7B/+pjQMtncvxKrZUIzHhY0zOY7v67sQJ5z2aYKGOfo4lUqLBPJ46Axfb+52?=
 =?us-ascii?Q?E6uZVjdKPQlw8wgzk8b9WUi8X4tUsUq2xeE16s+/AGbdpCQ7MefOQtzIUFri?=
 =?us-ascii?Q?4vJrZ+4qj5+ZShlGqy8+o0DYkgNgIWSRpXCoG4ZR8x+6ydvD2GiKDgj8s/f5?=
 =?us-ascii?Q?pVAlSdfIlT0QGr7emyF/L6LikBGjnraefkhC/Z3a5L33wKuYCAhrwh8+469u?=
 =?us-ascii?Q?1bNXtVgwEycvkQKvcc4w0jqbG4slgQ4gT5aFk3TrtjfZGkIAUR0ZCZvw6k0d?=
 =?us-ascii?Q?R9ef1hdH3S8MAyKTRKjEVNkh4urTcYhkcNAQl2I7flKh5xdHgy9Af7y2b4ZH?=
 =?us-ascii?Q?SQ4ZJPgrb8iGYVuxZ5lIj/usO/y7/GTsEH66QgURrYemJj+7lCFRq1RpxDXx?=
 =?us-ascii?Q?k+2zZKiLAUvGk+imN3OU/3GzTS06rkVP2xnnF2KSKzdLZVgP8+GmPG58iyF4?=
 =?us-ascii?Q?gMsrSkOdr6P0U/nLR0glHCTPKozCqHzOp83Oq57b5XPEB3xvIuTAQw1EFBAR?=
 =?us-ascii?Q?cYAGC9g7EOGBlUHLLL0VdbqoswFWWF7l9WHEokOWKBbN7yFM2gOcZFjzO7lr?=
 =?us-ascii?Q?yxw6suc/FZMKwa6SM8Ja?=
X-Forefront-Antispam-Report-Untrusted:
 CIP:213.95.148.172;CTRY:DE;LANG:en;SCL:1;SRV:;IPV:CAL;SFV:NSPM;H:denue6es012.ebgroup.elektrobit.com;PTR:eth1-fw1-nbg6.eb.noris.de;CAT:NONE;SFS:(13230040)(376014)(36860700016)(82310400026)(1800799024)(56012099003)(18002099003)(22082099003);DIR:OUT;SFP:1102;
X-Exchange-RoutingPolicyChecked:
 MycgCjajMjhVkSakchecivUEnVXLyvZs5w/CJF7fYEXodr21CrqpliHE1HODqP09UHLKTFRnOVuZKxSMM+kHfMme3pR8uutuwfMJZVy6p8PFW5VGY5vKHId/D9M+Md59PY5BT5E0Aqfcr4+x+yWPr+ZuG5/Hvm7l/pqxJ+QKzoftnv8GaOu1td617UeF0na4z9DigVyYg73hJ/Iypl+ZSSV5cIHOLeg8jo2r1vw/58TLsGPTd4Emwm7TiCKiBiyR7lgwSmnNLGQF8mzYedZhzOEbi68XtG8TdUIf/8YIU/B6R8LvDbc6LnEtv5aQpITKHH+8PVAPOMXYJ7fI4eweuA==
X-MS-Exchange-Transport-CrossTenantHeadersStamped: SJ0PR08MB8364
X-MS-Exchange-SkipListedInternetSender:
 ip=[40.93.10.100];domain=CO1PR08CU001.outbound.protection.outlook.com
X-MS-Exchange-ExternalOriginalInternetSender:
 ip=[40.93.10.100];domain=CO1PR08CU001.outbound.protection.outlook.com
X-MS-Exchange-Transport-CrossTenantHeadersStripped:
 CO1PEPF000066E9.namprd05.prod.outlook.com
X-MS-PublicTrafficType: Email
X-MS-Office365-Filtering-Correlation-Id-Prvs:
	170bd0f8-1e92-487a-ea2e-08de9f245745
X-Microsoft-Antispam:
	BCL:0;ARA:13230040|376014|14060799003|36860700016|35042699022|156008|82310400026|1800799024|56012099003|22082099003|18002099003;
X-Microsoft-Antispam-Message-Info:
	=?us-ascii?Q?GC6DODuAa5ayRO8wnTHeqtDjNPix+7XbRe4elvYCAckhriE+lJoHBDb7ccRs?=
 =?us-ascii?Q?5bFC5lsEsgVIUepD52hJV8J6Wa/3hVKuLP68FJO7iCBG1fUdwfBlvXhdGKzY?=
 =?us-ascii?Q?935B5KWZYRzvJw4bpkgub/mcqK6uhOESpY/Py4W4jVvUwDb7ORi3OyBwxq/A?=
 =?us-ascii?Q?Ve6zAGucOrnfds+FC/fbsfzembJvT/kFhTHxACi5eSRJD+i7ISZZJ3HH3cmS?=
 =?us-ascii?Q?zlBtsB5LhUGbDP5DMFA4nQ3U2AEcfsN1g2AlMSAOHlNhTuygt9vyHMvmdXlq?=
 =?us-ascii?Q?hzdke0vaxYFGppQeU+m+GGSVpSoLmo3rGwELEKfXpiSZiuFQddRq0Kylp4Nl?=
 =?us-ascii?Q?VQbCOz4xLtELgYJ0riL+iGFsmRWkvXmI8uKm/sIlZ1wQAHSmHD5xF5AuZrk6?=
 =?us-ascii?Q?EiCKqV3245/YKFkuVL3ez3hs9sgUo/V0Kcg0yRQ2l1uh8UT6d37m3BDyh/XS?=
 =?us-ascii?Q?STbM6N9XfxxAz3GJ2GFqSQhDWeHCcaWbpNhhXKyzfebM8/2nlCr90soptoGp?=
 =?us-ascii?Q?oiYu5r6pBTCqYZuGGiO1JcBngCKWnAeibOO7hfqg2vUJ2OfFFUJY+0AQtfu4?=
 =?us-ascii?Q?K+GnLLY3LUWGeHKl+Hi53C1cYVZTzdgwAU7yffAwNR/YCC4SrD2RkoM6i9Bk?=
 =?us-ascii?Q?4aMKGrY4Cz5AJ2xcGb9GuzMGhj9ed3fpY7gAUV1mr1jS6Nv5LfR/8VVD7pAW?=
 =?us-ascii?Q?vm97yA+SexuceAiJ6Os7dQt7ObFrDm9YDb0G7MPeG6zyvU6rpKSBvA7cDakx?=
 =?us-ascii?Q?Jwwb1Ef+kH9EyMkw+LVg7bypZvnOtWSzzc5DM/Gxbg0QDKu6TF23we6PHwwd?=
 =?us-ascii?Q?QwvBw/7DHOk487u3AWqcr9f1BFEaNwdrs8MPnVz6ILC6y1B5C4j9BnkUaIIX?=
 =?us-ascii?Q?DXvZOO5iJymOxfYiujFHQt73nzhJADUlFlfa8mNpy+T+O7Ipr04fboi8PEnd?=
 =?us-ascii?Q?LNy/leHcuKuCqjLTZt9isD/c1TLpqtgUP/EN76SEVqAqs7KDbRZe1FVQy6kk?=
 =?us-ascii?Q?bBSfkEy4UYK3fzdFXEKbzpfCUyJRtAIbM6Db3O5ri24ip1ZHZE44eQDqWFjb?=
 =?us-ascii?Q?yIAPza0gZLktW7eSLNyOELzCk1gTK1e5OrZ2awIcZna/FVuFozhP4p8IGxAp?=
 =?us-ascii?Q?tqPPGkNJpv94QCY5+qBf/WQB9v39vZnnFFR9iDS0IMsjUDZNaDQUslZhv2zU?=
 =?us-ascii?Q?dUY6Aaouzo5xTCilMfkJhiZsgfFzxA8SNcKvndVsL4CN7qIA1VLCFA87JLrd?=
 =?us-ascii?Q?BRn9DnovGw9xI06KjtVI?=
X-Forefront-Antispam-Report:
	CIP:4.79.107.243;CTRY:US;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:CO1PR08CU001.outbound.protection.outlook.com;PTR:mail-co1pr08cu00104.outbound.protection.outlook.com;CAT:NONE;SFS:(13230040)(376014)(14060799003)(36860700016)(35042699022)(156008)(82310400026)(1800799024)(56012099003)(22082099003)(18002099003);DIR:OUT;SFP:1102;
X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1
X-MS-Exchange-AntiSpam-MessageData-0:
	Xm1I5Yn9BfF1DzY92L8Z6JFNBxMCI3KjEmZP6dVKZRmwSKZhbNwpuV/+ph2AKssr1tHRnI/TKTJcEkLQWVwDHG9mDGwQweTSewr+762dAN98Z4RrXYqbMoenE5aWQ1myRsLMdxgByLGFhgWJEmyZKfz7fZ9YjWcHJda2+Ba/2OPe6rE7ZdZMhBh5LqXnQUh0uYQc3Rl0j2c9h8fhiqAkOwMrX1E165noC5EBdNGKMHRiY2VTXTQNCiIsyEB4J/IueuXx+ozNQEC+EkBnMw/iu+RIIn/ZK9AUdR65KXJPevVWq4LOtKACL/TlDvlo92jOF9zFMrrrrb9fSf7a6ItXFaPqFXSGogOH7wd9CUdSUupaqk4LHhOx2aolj6dPijzVxIw44IA+sYEMmvoAXz02/ZPq7cNcKLG+BsnxLN/X3OKllKe41bcurun4z295cwDB
X-OriginatorOrg: elektrobit.com
X-MS-Exchange-CrossTenant-OriginalArrivalTime: 20 Apr 2026 21:32:42.8117
 (UTC)
X-MS-Exchange-CrossTenant-Network-Message-Id: 63dc7c5c-3c53-4d20-974d-08de9f245b16
X-MS-Exchange-CrossTenant-Id: e764c36b-012e-4216-910d-8fd16283182d
X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=e764c36b-012e-4216-910d-8fd16283182d;Ip=[4.79.107.243];Helo=[usbth1es003.ebgroup.elektrobit.com]
X-MS-Exchange-CrossTenant-AuthAs: Internal
X-MS-Exchange-CrossTenant-AuthSource: TreatMessagesAsInternal-CO1PEPF000066E9.namprd05.prod.outlook.com
X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem
X-MS-Exchange-Transport-CrossTenantHeadersStamped: MN2PR08MB6318
X-purgate-ID: tlsNG-16d1c6/1776720770-CE369D75-CCC67E82/0/0
X-purgate-type: clean
X-purgate-size: 3218

Similarly to the earlier common altp2m.c/altp2m.h commit, this commit adds
a template altp2m.c and altp2m.h file for ARM to be added to in later
commits.  Creating a commit with just the template file additions makes it
easier to reorder later commits which add to these files.

This commit can be squashed into the first commit which actually adds
something to altp2m.c/altp2m.h for the actual submission if that would be
preferred.

This is commit 6/8 of the preparation phase.

Signed-off-by: Rose Spangler <Rose.Spangler@elektrobit.com>
Signed-off-by: Aqib Javaid <Aqib.Javaid@elektrobit.com>
---
v6: Introduced this patch.
---
 xen/arch/arm/Makefile             |  1 +
 xen/arch/arm/altp2m.c             | 16 +++++++++++++
 xen/arch/arm/include/asm/Makefile |  1 -
 xen/arch/arm/include/asm/altp2m.h | 37 +++++++++++++++++++++++++++++++
 4 files changed, 54 insertions(+), 1 deletion(-)
 create mode 100644 xen/arch/arm/altp2m.c
 create mode 100644 xen/arch/arm/include/asm/altp2m.h

diff --git a/xen/arch/arm/Makefile b/xen/arch/arm/Makefile
index 69200b27280d..d995d4ff7aa1 100644
--- a/xen/arch/arm/Makefile
+++ b/xen/arch/arm/Makefile
@@ -12,6 +12,7 @@ obj-$(CONFIG_TEE) += tee/
 obj-$(CONFIG_HAS_VPCI) += vpci.o
 
 obj-$(CONFIG_HAS_ALTERNATIVE) += alternative.o
+obj-$(CONFIG_ALTP2M) += altp2m.o
 obj-y += cpuerrata.o
 obj-y += cpufeature.o
 obj-y += decode.o
diff --git a/xen/arch/arm/altp2m.c b/xen/arch/arm/altp2m.c
new file mode 100644
index 000000000000..2bd1ff4df223
--- /dev/null
+++ b/xen/arch/arm/altp2m.c
@@ -0,0 +1,16 @@
+/* SPDX-License-Identifier: GPL-2.0-only */
+/*
+ * altp2m.c: Alternate p2m
+ *
+ * Copyright (c) 2016 Sergej Proskurin <proskurin@sec.in.tum.de>
+ */
+
+/*
+ * 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/arm/include/asm/Makefile b/xen/arch/arm/include/asm/Makefile
index 4565baca6a4d..fef4dd42b6cb 100644
--- a/xen/arch/arm/include/asm/Makefile
+++ b/xen/arch/arm/include/asm/Makefile
@@ -1,5 +1,4 @@
 # SPDX-License-Identifier: GPL-2.0-only
-generic-y += altp2m.h
 generic-y += device.h
 generic-y += hardirq.h
 generic-y += iocap.h
diff --git a/xen/arch/arm/include/asm/altp2m.h b/xen/arch/arm/include/asm/altp2m.h
new file mode 100644
index 000000000000..ca836bae7330
--- /dev/null
+++ b/xen/arch/arm/include/asm/altp2m.h
@@ -0,0 +1,37 @@
+/* SPDX-License-Identifier: GPL-2.0-only */
+/*
+ * altp2m.h: Alternate p2m
+ *
+ * Copyright (c) 2014, Intel Corporation.
+ * Copyright (c) 2016, Sergej Proskurin <proskurin@sec.in.tum.de>.
+ */
+
+#ifndef __ASM_ARM_ALTP2M_H
+#define __ASM_ARM_ALTP2M_H
+
+#include <xen/sched.h>
+
+static inline bool altp2m_supported(void)
+{
+    /* Not implemented yet */
+    return false;
+}
+
+/* Alternate p2m VCPU */
+static inline uint16_t altp2m_vcpu_idx(const struct vcpu *v)
+{
+    /* Not implemented yet */
+    BUG();
+    return 0;
+}
+
+#endif /* __ASM_ARM_ALTP2M_H */
+
+/*
+ * Local variables:
+ * mode: C
+ * c-file-style: "BSD"
+ * c-basic-offset: 4
+ * indent-tabs-mode: nil
+ * End:
+ */
-- 
2.34.1



From xen-devel-bounces@lists.xenproject.org Mon Apr 20 21:32:56 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 20 Apr 2026 21:32:56 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1287755.1568151 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wEwEi-0007pD-Ho; Mon, 20 Apr 2026 21:32:56 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1287755.1568151; Mon, 20 Apr 2026 21:32: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 1wEwEi-0007p2-E7; Mon, 20 Apr 2026 21:32:56 +0000
Received: by outflank-mailman (input) for mailman id 1287755;
 Mon, 20 Apr 2026 21:32:54 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <Rose.Spangler@elektrobit.com>) id 1wEwEg-0007lx-HV
 for xen-devel@lists.xenproject.org; Mon, 20 Apr 2026 21:32:54 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wEwEf-00Eg4Z-UJ
 for xen-devel@lists.xenproject.org; Mon, 20 Apr 2026 23:32:53 +0200
Received: from [10.42.69.1] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <Rose.Spangler@elektrobit.com>)
 id 69e69b5b-e002-0a2a0a5209dd-0a2a450184ac-38
 for <xen-devel@lists.xenproject.org>; Mon, 20 Apr 2026 23:32:53 +0200
Received: from [40.107.201.120]
 (helo=CH4PR04CU002.outbound.protection.outlook.com)
 by tlsNG-d62444.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.1)
 (envelope-from <Rose.Spangler@elektrobit.com>)
 id 69e69b84-c1f2-0a2a45010019-286bc9781fe6-3
 for <xen-devel@lists.xenproject.org>; Mon, 20 Apr 2026 23:32:53 +0200
Received: from BN1PR14CA0029.namprd14.prod.outlook.com (2603:10b6:408:e3::34)
 by BN8PR08MB6178.namprd08.prod.outlook.com (2603:10b6:408:7c::12)
 with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9818.25; Mon, 20 Apr
 2026 21:32:50 +0000
Received: from BN2PEPF0000449D.namprd02.prod.outlook.com
 (2603:10b6:408:e3:cafe::67) by BN1PR14CA0029.outlook.office365.com
 (2603:10b6:408:e3::34) with Microsoft SMTP Server (version=TLS1_3,
 cipher=TLS_AES_256_GCM_SHA384) id 15.20.9791.48 via Frontend Transport; Mon,
 20 Apr 2026 21:32:50 +0000
Received: from usbth1es003.ebgroup.elektrobit.com (4.79.107.243) by
 BN2PEPF0000449D.mail.protection.outlook.com (10.167.243.148) with Microsoft
 SMTP Server (version=TLS1_3, cipher=TLS_AES_256_GCM_SHA384) id 15.20.9791.48
 via Frontend Transport; Mon, 20 Apr 2026 21:32:49 +0000
Received: from usbth1es003 (localhost [127.0.0.1])
 by usbth1es003.ebgroup.elektrobit.com (Postfix) with SMTP id 4fzzH42vXqz1wdM; 
 Mon, 20 Apr 2026 14:32:48 -0700 (PDT)
Received: from BL2PR08CU001.outbound.protection.outlook.com
 (mail-bl2pr08cu00100.outbound.protection.outlook.com [40.93.4.8])
 (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)
 key-exchange secp384r1 server-signature RSA-PSS (2048 bits) server-digest
 SHA256) (No client certificate requested)
 by usbth1es003.ebgroup.elektrobit.com (Postfix) with ESMTPS;
 Mon, 20 Apr 2026 14:32:48 -0700 (PDT)
Received: from SJ0PR13CA0195.namprd13.prod.outlook.com (2603:10b6:a03:2c3::20)
 by SA1PR08MB8386.namprd08.prod.outlook.com (2603:10b6:806:334::21)
 with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9818.32; Mon, 20 Apr
 2026 21:32:39 +0000
Received: from SJ1PEPF000026C7.namprd04.prod.outlook.com
 (2603:10b6:a03:2c3:cafe::a7) by SJ0PR13CA0195.outlook.office365.com
 (2603:10b6:a03:2c3::20) with Microsoft SMTP Server (version=TLS1_3,
 cipher=TLS_AES_256_GCM_SHA384) id 15.20.9791.48 via Frontend Transport; Mon,
 20 Apr 2026 21:32:39 +0000
Received: from denue6es012.ebgroup.elektrobit.com (213.95.148.172) by
 SJ1PEPF000026C7.mail.protection.outlook.com (10.167.244.104) with Microsoft
 SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id
 15.20.9791.48 via Frontend Transport; Mon, 20 Apr 2026 21:32:38 +0000
Received: from ubuntu.localdomain (10.10.178.50) by
 denue6es012.ebgroup.elektrobit.com (10.243.160.140) with Microsoft SMTP
 Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id
 15.2.2562.35; Mon, 20 Apr 2026 23:32:35 +0200
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@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=elektrobit.com header.i="@elektrobit.com" header.h="From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck"; dkim=pass header.s=selector1 header.d=elektrobit.com header.i="@elektrobit.com" header.h="From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck"
ARC-Seal: i=2; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=pass;
 b=Vz8dN5cmCD803/A1a4IB/le34IIjZf4xOdmvK2lxSolKDJUJXfnIUujRp5ZCCZDKXAPm+R2F/bFgVhaJGzS6Tm5WEpOzgWLvrYhqqVp0oGB/GoT6SUUw9KosHCgGSFjlz9CXlm+AR7gupYNEPe6RUrDdTrrZ6cJOjrVoxWaLt/ZoZ9x3XQjWGj9gPn/pAWoO6V54Z94qgGL3tqdOiGN56vdd7y01h0k3AR5KhljrzqTW7ydq/f7kc8e/c4pVp/yrcFV0ShBhCqLR8XaA3KzJIbvnPbga3DczlsiGWCA05iaj8ePV2RMhpiLBYBQ/OT/VjAp41ZZZqB6K34pIAGmXzA==
ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com;
 s=arcselector10001;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1;
 bh=mUHlmqTGoOfpLiPTAGkw3ZzBrGFd58Ji7foro+DAZoU=;
 b=cvILFjd/VdBmQWUjxb1CbatR1BWJWsiEKOL37XOQrqipV7/nJYPR7uplZWyboxDBGZy/N2YFTZA02H6HLd6R29ph6JHtf5KyX8pxxv/39zyAJDEJy1EL2hWjZI4oI4wg75Ux2f1nuVRlyjPs2gVV1HWOiyvraOHfLM3wyYYI44nxH+CCYrpuwliikxetNgmiQzM+fhEz982b/9m7esY0i9e1SGfVTIb7jnIgeh7N5mXUuC5QpazR8OvCuk6OtWy/5FhlvkG69kRHmtP3HPG047tgfpEWxBIGK3J4tgMo0I4LWKiiFm3BRDYzkkRgVPwo518EMyqAU/1iDZG5r/P8qQ==
ARC-Authentication-Results: i=2; mx.microsoft.com 1; spf=pass (sender ip is
 40.93.4.8) smtp.rcpttodomain=amd.com smtp.mailfrom=elektrobit.com; dmarc=pass
 (p=quarantine sp=none pct=100) action=none header.from=elektrobit.com;
 dkim=pass (signature was verified) header.d=elektrobit.com; arc=pass (0 oda=1
 ltdi=1 spf=[1,1,smtp.mailfrom=elektrobit.com]
 dmarc=[1,1,header.from=elektrobit.com])
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=elektrobit.com;
 s=selector1;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck;
 bh=mUHlmqTGoOfpLiPTAGkw3ZzBrGFd58Ji7foro+DAZoU=;
 b=rECi2S5S0zPwEEXEvZw9594wZnyk/FIO8dr7X4mhzgOLlaHQF0f9BtigtweCgNfOZG9c0Obf2Ccw3eu2vguO8fm5itkEpA3IKevYiAFew2Xqrz7u5F6JsoU5D/NOLhfEKEhF0xRyG4H0toC6dV9m7a4tj4ePDyYqNaf0F2Pn0OA=
X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 40.93.4.8)
 smtp.mailfrom=elektrobit.com; dkim=pass (signature was verified)
 header.d=elektrobit.com;dmarc=pass action=none header.from=elektrobit.com;
Received-SPF: Pass (protection.outlook.com: domain of elektrobit.com
 designates 40.93.4.8 as permitted sender) receiver=protection.outlook.com;
 client-ip=40.93.4.8; helo=BL2PR08CU001.outbound.protection.outlook.com; pr=C
ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none;
 b=y+maNGCt62v0NqFOWkafvLojA64pCTyVwWZn4K0Y/a44TFNEOVDTe3lAZkm0oSxJWA4XLD2wEvY77WCseab4j4ZCJNam8APzew9mpY2Jm1wL4l5/Ky41mzPdyDBvbLcpzsCJMH/EFjoJiQh3QXkjirWrnt/Hsvg2KD6t1Qu1kZgkhMCe7TTDfG8l2LnaIGw/ug/92VWmnkFCf7rUmC0NLjHza3dMzks1IB/QTKAIa59+XEUWXOHBijNQlRBjCXkIzXwsjJ7vOTE/gQU+N0P0q4Yckf705WJlfdVlcqKjc7vMsB9H/VCj+4H+DFIK9pxho+OGXLm2Qs2lquAHU1+/yg==
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com;
 s=arcselector10001;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1;
 bh=mUHlmqTGoOfpLiPTAGkw3ZzBrGFd58Ji7foro+DAZoU=;
 b=p8mY0arhJZr9DcMGrS3fxDPi+bi3IsikPH9ixQcXlDpUhrNI4HsCoE4ccS/5ko7+oRLoWTzjn41EzJv9F8LUiBx9p4Gqk9KHZCnwP5sgJSz6ArkikSMCbYvv4W601rdr07hJMIQmoLBPAd7IVxMm4/krFBWQOqA4eUbT6kJL2j6EqDn2uccOwXyHwT9PN5XE/UjTu8WjU0PZKo7bqtbiVfj979x+hVXdeMFVcsWQtGkP7Q1Le0hRUiTlkSy4jonmITlhgR1wYv4xu1I6r2MHN/UhuN92NGMs2AIGbCqpSh9e20rF2am71E+QdBYO66AdkO8Brwwpw/jYguE34OJOAQ==
ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass (sender ip is
 213.95.148.172) smtp.rcpttodomain=lists.xenproject.org
 smtp.mailfrom=elektrobit.com; dmarc=pass (p=quarantine sp=none pct=100)
 action=none header.from=elektrobit.com; dkim=none (message not signed);
 arc=none (0)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=elektrobit.com;
 s=selector1;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck;
 bh=mUHlmqTGoOfpLiPTAGkw3ZzBrGFd58Ji7foro+DAZoU=;
 b=rECi2S5S0zPwEEXEvZw9594wZnyk/FIO8dr7X4mhzgOLlaHQF0f9BtigtweCgNfOZG9c0Obf2Ccw3eu2vguO8fm5itkEpA3IKevYiAFew2Xqrz7u5F6JsoU5D/NOLhfEKEhF0xRyG4H0toC6dV9m7a4tj4ePDyYqNaf0F2Pn0OA=
X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 213.95.148.172)
 smtp.mailfrom=elektrobit.com; dkim=none (message not signed)
 header.d=none;dmarc=pass action=none header.from=elektrobit.com;
Received-SPF: Pass (protection.outlook.com: domain of elektrobit.com
 designates 213.95.148.172 as permitted sender)
 receiver=protection.outlook.com; client-ip=213.95.148.172;
 helo=denue6es012.ebgroup.elektrobit.com; pr=C
From: Rose Spangler <Rose.Spangler@elektrobit.com>
To: <xen-devel@lists.xenproject.org>
CC: Rose Spangler <Rose.Spangler@elektrobit.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>, Aqib Javaid
	<Aqib.Javaid@elektrobit.com>
Subject: [RFC PATCH v6 07/43] arm/altp2m: Introduce CONFIG_ALTP2M Kconfig option
Date: Mon, 20 Apr 2026 17:31:30 -0400
Message-ID: <20260420213206.208750-8-Rose.Spangler@elektrobit.com>
X-Mailer: git-send-email 2.34.1
In-Reply-To: <20260420213206.208750-1-Rose.Spangler@elektrobit.com>
References: <20260420213206.208750-1-Rose.Spangler@elektrobit.com>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit
Content-Type: text/plain
X-Originating-IP: [10.10.178.50]
X-ClientProxiedBy: denue6es012.ebgroup.elektrobit.com (10.243.160.140) To
 denue6es012.ebgroup.elektrobit.com (10.243.160.140)
X-EOPAttributedMessage: 1
X-MS-Exchange-SkipListedInternetSender:
 ip=[213.95.148.172];domain=denue6es012.ebgroup.elektrobit.com
X-MS-TrafficTypeDiagnostic:
	SJ1PEPF000026C7:EE_|SA1PR08MB8386:EE_|BN2PEPF0000449D:EE_|BN8PR08MB6178:EE_
X-MS-Office365-Filtering-Correlation-Id: 5be98c0a-f33f-4396-7038-08de9f245f27
X-SM-outgoing: yes
X-MS-Exchange-SenderADCheck: 1
X-MS-Exchange-AntiSpam-Relay: 0
X-Microsoft-Antispam-Untrusted:
 BCL:0;ARA:13230040|82310400026|36860700016|376014|1800799024|56012099003|22082099003|18002099003;
X-Microsoft-Antispam-Message-Info-Original:
 =?us-ascii?Q?0fCBQ4/EiNw0buV3b20csTDfytL7oWXBQ7Subug3IPJyNor5p6kjEFNR/e1I?=
 =?us-ascii?Q?TQr2xtNUljuJMrIkiamRQyfKi8WZBGvMUJs9nGI/ennMm7680mCfb3a315qH?=
 =?us-ascii?Q?WlEa4NVcykQuN0h8zp7cFCxPHXlVaa1l3GS/PQtAEdswR/4fPV+W91CNCwke?=
 =?us-ascii?Q?omlFH58V50ZOCcL/di9KpMKPz5XXXogkdcXmawfusI3m+iJscRadXAgdivpv?=
 =?us-ascii?Q?o3iPiRIavpTxSwUFVWtgFzu6NDuL8dJ28KGjxZnBXG/9TPU/HFI9PWVk00Rl?=
 =?us-ascii?Q?5WEQHe2s7ipJYg8yHju94w3ajR5DyZVpb/lPbE3GKQOfjptI+gkoS6luK1UZ?=
 =?us-ascii?Q?Jmldcak67WzBgUY4s2JMo3i1QHg/WMGBxbvzzeCurrvOXYRwW1bYOu1wr77h?=
 =?us-ascii?Q?RPl6g3R5qFNvV9W3Lk9q2jFOxhvFCi6lQPNqZKlWD++ClYXueVHWvnrfab9O?=
 =?us-ascii?Q?U3tLqZo5YCN0LMa4ZTBy/HSTxGAV5M7+OnNzmbqLXpk7MaifFelxnGxPnRnh?=
 =?us-ascii?Q?pTX7lBdr49EL67jx4NDSEFzlTDjx398mg3RaVC6sXS2zJ1OmlLxlMKZJuT4m?=
 =?us-ascii?Q?nkDgwAcf+yQeezLxQevGwTnJN9SeOGJGEgT7BqWaPfOlFkdoNnKQ6xNjaXzP?=
 =?us-ascii?Q?JfEYuxSPDuwNRiJEPnWznQ80ZIoG4QR39yMkmB7xmEJWx/V9rk6T5kyPPSSU?=
 =?us-ascii?Q?sdJD9spAVEToIPcOL2cHBUkcV5Oa530PlXD9SaJYWoWxON/DaRmiRkmjWuQR?=
 =?us-ascii?Q?Q8NUaGufF7uyfYHvL5eH1gGnOolU25EKP1cA5l8uX40xsCAFewMamS2Jx9qd?=
 =?us-ascii?Q?5izZ5sjnW1hvmhGKCqLl2RTRk/HbmbfKBGUIK4qzfor/D/0JyuNeL6/a2c14?=
 =?us-ascii?Q?U5A0lKPIg3CqhnozJvH1dR2obCrHDjO/piQ50CsZN7YeuPw+zdTwSouRblm5?=
 =?us-ascii?Q?yvPWwOgh/MhociQGSWfZ47KWt53idflxIUwfiPJvAxqGUk78kySC30PPnt7q?=
 =?us-ascii?Q?TvQ2jmFn+uwraYIJnMBNjVRp6Cko2wi5pyoKggcJcv+0YpkIxaA4+S3lNcfs?=
 =?us-ascii?Q?y2vi1R7q2SaqE31VyDhHd+VVorxcP8o+Eqno0CWZCqWWe5/dabZtgyudZqYW?=
 =?us-ascii?Q?5J4zME2yZZsOO/OQY+XWEEvZG6VsY/Gf3lKOd7wPE5HnuH9tsnQtd82Zcqv7?=
 =?us-ascii?Q?jwsUCmbWQrv0pXOaMAEx/Dd+7gEu9tjF+ABqR4CMTEg+TAA/0uiZbJlAVher?=
 =?us-ascii?Q?t+D8c6tgMcPg6c4P5P/yU2mZW/bngsSMPv0iRXH5gg=3D=3D?=
X-Forefront-Antispam-Report-Untrusted:
 CIP:213.95.148.172;CTRY:DE;LANG:en;SCL:1;SRV:;IPV:CAL;SFV:NSPM;H:denue6es012.ebgroup.elektrobit.com;PTR:eth1-fw1-nbg6.eb.noris.de;CAT:NONE;SFS:(13230040)(82310400026)(36860700016)(376014)(1800799024)(56012099003)(22082099003)(18002099003);DIR:OUT;SFP:1102;
X-Exchange-RoutingPolicyChecked:
 MziLwSTCnsACNdN3VOgopeaSV5+rrfJWRE1WGf9BFDmR6SGeAHE/0AK/pmcsz+AFl63VFLO1jRd5QB8EeUoosOLke90axvbyNx4J2m14U8tvrKV8SYnIztSmf2UFi+Y49lp0fKh/IIOj7TMfdVZ89GrW30r2roF4QjZagyHfNaELKqFDT99AmZ61mPSMC3AvLNtXZx4nF5OoIoNClZDUhmu1+R4MafZ/5xYzE1Qu4P+8JkH6P50tmFKeNgLLNOZp+R+btpWWf0TLKGHpfFaeQHF9Yp+uq/oXZzD23ZU+megjkdjH7AUwRXpINHyHs1oxa42HbnSXAxDXTKmxI6yYiA==
X-MS-Exchange-Transport-CrossTenantHeadersStamped: SA1PR08MB8386
X-MS-Exchange-SkipListedInternetSender:
 ip=[40.93.4.8];domain=BL2PR08CU001.outbound.protection.outlook.com
X-MS-Exchange-ExternalOriginalInternetSender:
 ip=[40.93.4.8];domain=BL2PR08CU001.outbound.protection.outlook.com
X-MS-Exchange-Transport-CrossTenantHeadersStripped:
 BN2PEPF0000449D.namprd02.prod.outlook.com
X-MS-PublicTrafficType: Email
X-MS-Office365-Filtering-Correlation-Id-Prvs:
	e5b4eddc-89cb-4cf1-cc5a-08de9f2458c5
X-Microsoft-Antispam:
	BCL:0;ARA:13230040|35042699022|82310400026|14060799003|156008|36860700016|376014|1800799024|18002099003|56012099003|22082099003;
X-Microsoft-Antispam-Message-Info:
	=?us-ascii?Q?q+DlfxjGpiIlk4j/+0F8NVnbcyZrafQflFQKy3hgKfBSTlYecP/ic9P+1B4D?=
 =?us-ascii?Q?0GWZHiCAFnUtH5Mj6vnncJcSLI+C6S9jMICm5a2ioCJTbA1VE65Mgt7mw39C?=
 =?us-ascii?Q?ZYPTegqWMNEXiedm9ACyFfCS4/vlCn8bkkrladZ4l8mHXc3rtFxAnVCbTGsK?=
 =?us-ascii?Q?wmnhSKLOG81DYRPqNfTt3AkrUtUWcd5h27Z2YeZC2xwxA7ncSaxR7yHsXJD/?=
 =?us-ascii?Q?9OGnCFNdPgiVD5BjhS0bEycwreDw1aSDsT/NVz5rPcBWQYNarhqR1reYa6Rp?=
 =?us-ascii?Q?HdAIT7ZmzsWyybzgYDlFGzXj+S+Qo5HCuYyLLC6h2e7tmNF76ZzOQ+2r4GZB?=
 =?us-ascii?Q?DjTD1HxBTJP01PG8yQgseX1Xp5RPU6DeAykY6wOKL94j43nyvdfuHxlx5iE6?=
 =?us-ascii?Q?P+8xpGBgfXOXwgUYWUil/tt5iWuvQ/YmXelTjwwsiKvvysxFZbPkT932/h6d?=
 =?us-ascii?Q?x1uGByoPzzcpzMDRR/nKLhOsHiLMKqrT+MY7EZ7yjQDqxD1hOztkbR5aWy7q?=
 =?us-ascii?Q?jBfVNf4ACK1lrN0NfVQr1DpyauwvbOexhHGWng31biYgLNcUbwdI7OrmctOB?=
 =?us-ascii?Q?tGyl6gE+Ir6d7rFIbsxZMnALD7vM7NGHMbG/PfKRCXpboseHvvbeNeqLvxyO?=
 =?us-ascii?Q?RhtQWCEqodzG6pULb9YLkMDYWFn+Z3hQwvdJiX0IBbRqyp4OLqEeKFnVWm00?=
 =?us-ascii?Q?CwqKKI3gyD7LerhBb5JmJqd1pRDgTjxuWz1UXNsJVS4UcrVdTt7Aqf9vm7jS?=
 =?us-ascii?Q?q3EZzaRNfUx6lLPBeHm6zs/DVQaq9W1rMndwEzCCBhFcdXcPagfMvMtOhuZR?=
 =?us-ascii?Q?CciDysEA1GCxoIpkjHPwz3txfWxXdaoQSpNR/XWjHBxqS0E90lrPdaU+N1Dw?=
 =?us-ascii?Q?cq6sbXa+Bx4du0Hwn1zGcgewUctFqqqAB2EYhlKGjL4YvDWp6/13n4hGPvda?=
 =?us-ascii?Q?GJt9SPJ9Q2ytRigqSay3MsNAP4sd4+/wRHrHm0p2XFk8bnvcREb3gCPew5RS?=
 =?us-ascii?Q?COQqrWyNJ27kxK3BYQc8Sjl6mnETSAu/6zNeOiAXq3aOi2ivHi9MrvjfKOYc?=
 =?us-ascii?Q?BSGn9WcXfMevy8pwrpdCWcfxtzNNbuX+d3wEMxrbVv+F4LE4RrQlhWPoWqTu?=
 =?us-ascii?Q?7M1AN6addmpsjZOjH5Iy2XOJ60Nf0/uMuk5Fh5cQcsv2DJnQ5ictbEQy0imb?=
 =?us-ascii?Q?9P0Gq7R0zlHss8sTdVRbq1dLnDARCWMFvCzQ4BwcouAlaChGMXJ6nISHnE5a?=
 =?us-ascii?Q?w7UEnkYps4edniUkKYDuogYGqgmO2zS1akGNLzIAAA=3D=3D?=
X-Forefront-Antispam-Report:
	CIP:4.79.107.243;CTRY:US;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:BL2PR08CU001.outbound.protection.outlook.com;PTR:mail-bl2pr08cu00100.outbound.protection.outlook.com;CAT:NONE;SFS:(13230040)(35042699022)(82310400026)(14060799003)(156008)(36860700016)(376014)(1800799024)(18002099003)(56012099003)(22082099003);DIR:OUT;SFP:1102;
X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1
X-MS-Exchange-AntiSpam-MessageData-0:
	f9/3lskek/6N57ArqSJVC3wyIJqrMK8K1GpoHtb58FpL9CbKU2JMKE0vKuaE6RfadrOZ0grXiqT3u60e/pJGnUX97KhMyA5QjLaQHQSEQ6hLpYhElKmRd48zxMyRd4pWRxI6Fk6pz2+08l6YA3C/BWIC4lTXH8QQUSFSrWN9vrpRQLZY1EcbPPbxcHH7SOxzMnCD2fpdQkH8xW+5siUE54cMIDijil4WtsO0FfNJhmvKJvA5nQeHfCzJjTMfyZTsz67IWaxrZSASoTCdaqBb7ApGhNImoV9deOu2XMmGoxL5Shqt8Js5nIk2SJlQtxTTkyLQ4CYQjfD7HxXp1WGw7AKgFVhc9QU+3KUL3YXvd4pDgL8bpABuNa8daAw1toKE0cY26YaIJ0ot0L0kMzBzixnQAUwITjsuqOAruqAzWZ5o0PQ4t+riDNKF6j/xGKsZ
X-OriginatorOrg: elektrobit.com
X-MS-Exchange-CrossTenant-OriginalArrivalTime: 20 Apr 2026 21:32:49.3255
 (UTC)
X-MS-Exchange-CrossTenant-Network-Message-Id: 5be98c0a-f33f-4396-7038-08de9f245f27
X-MS-Exchange-CrossTenant-Id: e764c36b-012e-4216-910d-8fd16283182d
X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=e764c36b-012e-4216-910d-8fd16283182d;Ip=[4.79.107.243];Helo=[usbth1es003.ebgroup.elektrobit.com]
X-MS-Exchange-CrossTenant-AuthAs: Internal
X-MS-Exchange-CrossTenant-AuthSource: TreatMessagesAsInternal-BN2PEPF0000449D.namprd02.prod.outlook.com
X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem
X-MS-Exchange-Transport-CrossTenantHeadersStamped: BN8PR08MB6178
X-purgate-ID: tlsNG-d62444/1776720773-BF67FFF4-BEF9941C/0/0
X-purgate-type: clean
X-purgate-size: 2817

Following the x86 implementation in commit e96831ece819, this commit adds
the CONFIG_ALTP2M Kconfig option for ARM. This makes it possible to build
Xen without building altp2m code.

This commit also implements a stub for p2m_altp2m_check, as some
implementation is needed when CONFIG_ALTP2M is enabled. This is due to a
call to p2m_altp2m_check in vm_event.c which is gated by CONFIG_ALTP2M.

This is commit 7/8 of the preparation phase.

Signed-off-by: Rose Spangler <Rose.Spangler@elektrobit.com>
Signed-off-by: Aqib Javaid <Aqib.Javaid@elektrobit.com>
---
v6: Introduced this patch.
---
 xen/arch/arm/Kconfig              | 11 +++++++++++
 xen/arch/arm/altp2m.c             |  9 +++++++++
 xen/arch/arm/include/asm/altp2m.h | 18 ++++++++++++++++--
 3 files changed, 36 insertions(+), 2 deletions(-)

diff --git a/xen/arch/arm/Kconfig b/xen/arch/arm/Kconfig
index 2f2b501fdac4..fdf0721c3c03 100644
--- a/xen/arch/arm/Kconfig
+++ b/xen/arch/arm/Kconfig
@@ -98,6 +98,17 @@ config MPU
 	  systems supporting EL2. (UNSUPPORTED)
 endchoice
 
+config ALTP2M
+	bool "Alternate P2M support" if EXPERT
+	depends on MMU
+	default y
+	help
+	  Alternate-p2m allows a guest to manage multiple p2m guest physical
+	  "memory views" (as opposed to a single p2m).
+	  Useful for memory introspection.
+
+	  If unsure, stay with defaults.
+
 source "arch/Kconfig"
 
 config ACPI
diff --git a/xen/arch/arm/altp2m.c b/xen/arch/arm/altp2m.c
index 2bd1ff4df223..8bd174ea8f37 100644
--- a/xen/arch/arm/altp2m.c
+++ b/xen/arch/arm/altp2m.c
@@ -5,6 +5,15 @@
  * Copyright (c) 2016 Sergej Proskurin <proskurin@sec.in.tum.de>
  */
 
+#include <asm/p2m.h>
+
+/* Check to see if vcpu should be switched to a different p2m. */
+void p2m_altp2m_check(struct vcpu *v, uint16_t idx)
+{
+    /* Not yet implemented */
+    BUG();
+}
+
 /*
  * Local variables:
  * mode: C
diff --git a/xen/arch/arm/include/asm/altp2m.h b/xen/arch/arm/include/asm/altp2m.h
index ca836bae7330..698c35427e75 100644
--- a/xen/arch/arm/include/asm/altp2m.h
+++ b/xen/arch/arm/include/asm/altp2m.h
@@ -11,10 +11,12 @@
 
 #include <xen/sched.h>
 
+#ifdef CONFIG_ALTP2M
+
+/* Hardware always supports altp2m on ARM */
 static inline bool altp2m_supported(void)
 {
-    /* Not implemented yet */
-    return false;
+    return true;
 }
 
 /* Alternate p2m VCPU */
@@ -25,6 +27,18 @@ static inline uint16_t altp2m_vcpu_idx(const struct vcpu *v)
     return 0;
 }
 
+#else /* CONFIG_ALTP2M */
+
+static inline bool altp2m_supported(void)
+{
+    return false;
+}
+
+/* Only declaration is needed. DCE will optimise it out when linking. */
+uint16_t altp2m_vcpu_idx(const struct vcpu *v);
+
+#endif /* CONFIG_ALTP2M */
+
 #endif /* __ASM_ARM_ALTP2M_H */
 
 /*
-- 
2.34.1



From xen-devel-bounces@lists.xenproject.org Mon Apr 20 21:32:58 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 20 Apr 2026 21:32:58 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1287757.1568159 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wEwEk-000864-2T; Mon, 20 Apr 2026 21:32:58 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1287757.1568159; Mon, 20 Apr 2026 21:32: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 1wEwEj-00085v-VW; Mon, 20 Apr 2026 21:32:57 +0000
Received: by outflank-mailman (input) for mailman id 1287757;
 Mon, 20 Apr 2026 21:32:56 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <Rose.Spangler@elektrobit.com>) id 1wEwEi-0007oF-78
 for xen-devel@lists.xenproject.org; Mon, 20 Apr 2026 21:32:56 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wEwEh-00CCKM-KH
 for xen-devel@lists.xenproject.org; Mon, 20 Apr 2026 23:32:55 +0200
Received: from [10.42.69.11] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <Rose.Spangler@elektrobit.com>)
 id 69e69b55-bab6-0a2a0a5309dd-0a2a450b9074-22
 for <xen-devel@lists.xenproject.org>; Mon, 20 Apr 2026 23:32:55 +0200
Received: from [40.93.201.103]
 (helo=CY3PR05CU001.outbound.protection.outlook.com)
 by tlsNG-42698a.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.1)
 (envelope-from <Rose.Spangler@elektrobit.com>)
 id 69e69b85-212f-0a2a450b0019-285dc9679ce1-3
 for <xen-devel@lists.xenproject.org>; Mon, 20 Apr 2026 23:32:55 +0200
Received: from MW4PR04CA0174.namprd04.prod.outlook.com (2603:10b6:303:85::29)
 by LV8PR08MB9151.namprd08.prod.outlook.com (2603:10b6:408:209::20)
 with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9818.32; Mon, 20 Apr
 2026 21:32:46 +0000
Received: from CO1PEPF000066EA.namprd05.prod.outlook.com
 (2603:10b6:303:85:cafe::e5) by MW4PR04CA0174.outlook.office365.com
 (2603:10b6:303:85::29) with Microsoft SMTP Server (version=TLS1_3,
 cipher=TLS_AES_256_GCM_SHA384) id 15.20.9791.48 via Frontend Transport; Mon,
 20 Apr 2026 21:32:46 +0000
Received: from usbth1es003.ebgroup.elektrobit.com (4.79.107.243) by
 CO1PEPF000066EA.mail.protection.outlook.com (10.167.249.5) with Microsoft
 SMTP Server (version=TLS1_3, cipher=TLS_AES_256_GCM_SHA384) id 15.20.9791.48
 via Frontend Transport; Mon, 20 Apr 2026 21:32:46 +0000
Received: from usbth1es003 (localhost [127.0.0.1])
 by usbth1es003.ebgroup.elektrobit.com (Postfix) with SMTP id 4fzzH16Phyz1wdP; 
 Mon, 20 Apr 2026 14:32:45 -0700 (PDT)
Received: from BYAPR08CU003.outbound.protection.outlook.com
 (mail-byapr08cu00303.outbound.protection.outlook.com [40.93.1.107])
 (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)
 key-exchange secp384r1 server-signature RSA-PSS (2048 bits) server-digest
 SHA256) (No client certificate requested)
 by usbth1es003.ebgroup.elektrobit.com (Postfix) with ESMTPS;
 Mon, 20 Apr 2026 14:32:45 -0700 (PDT)
Received: from SJ0PR05CA0131.namprd05.prod.outlook.com (2603:10b6:a03:33d::16)
 by PH7PR08MB8180.namprd08.prod.outlook.com (2603:10b6:510:150::9)
 with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9818.32; Mon, 20 Apr
 2026 21:32:33 +0000
Received: from SJ1PEPF000026C5.namprd04.prod.outlook.com
 (2603:10b6:a03:33d:cafe::34) by SJ0PR05CA0131.outlook.office365.com
 (2603:10b6:a03:33d::16) with Microsoft SMTP Server (version=TLS1_3,
 cipher=TLS_AES_256_GCM_SHA384) id 15.20.9791.48 via Frontend Transport; Mon,
 20 Apr 2026 21:32:33 +0000
Received: from denue6es012.ebgroup.elektrobit.com (213.95.148.172) by
 SJ1PEPF000026C5.mail.protection.outlook.com (10.167.244.102) with Microsoft
 SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id
 15.20.9791.48 via Frontend Transport; Mon, 20 Apr 2026 21:32:32 +0000
Received: from ubuntu.localdomain (10.10.178.50) by
 denue6es012.ebgroup.elektrobit.com (10.243.160.140) with Microsoft SMTP
 Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id
 15.2.2562.35; Mon, 20 Apr 2026 23:32:29 +0200
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@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=elektrobit.com header.i="@elektrobit.com" header.h="From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck"; dkim=pass header.s=selector1 header.d=elektrobit.com header.i="@elektrobit.com" header.h="From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck"
ARC-Seal: i=2; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=pass;
 b=sFf5YeEXMrQFY0ppQzS9Tm//Ky/s5COdgL3TWSif2YlhFRzgsxg5/E79AEGIj+ShlrGWUn5Ej/DfzDyekmM9chebCowF4YOqxUdv1sdGLKcrz4oj3iI4gHDc/TCWV/z/MpDxxMw1Y7EmFD6yVkbcOMiujHSEJwYPxyGJurXD7rkscmxeYCokmAIwxJZw/Fj+CTzbqK4HdgVZTg8uc5RW48t8mQy9J83oYu1RGJkzYb/4/cuS9bMNPa7bjUEwmI+oUTGe1hieGqNqQXG/puDmq1+P6cS3SXjES38is7CWJinoeQGdNvF6dLsHgO+JcqQ/lVpVDiQrkrvrCNLrThTVLQ==
ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com;
 s=arcselector10001;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1;
 bh=2ZAemscrHmCDKhZ6RJ1poqZ5UjAED/22jekv/5eW7eQ=;
 b=JjvyVMLE/yhSIQGFbV5Eo9mXGTaq+cz80YJCMmomUceEvN2HrWCJLjQd2zChcXjmjxiEmS7DH45DVU4hCrLZ/u4ElAy+f6Dll8ph5dS2Gvgeq4dc0EVvUu39LUg82soF1HQMrfFno0A6mhpayJeVR24rjQYRWrND52XNPlmj0219f/vdKfi0CtomS61Ueuf4Wn/8eMMwSW5Ikj5Zawcqb+tsl8Ac8zXlVN5YhK2XFhAvcXuxTHN1rvzghMXy0X4dtuiU9PhMTa8j0O1Y/qOyB9uhWQMzjEXWcUDQhnEnzSCSPPDOLOoA0vT3iRUOHiWt9pPm3fnz9J6/T9mVo1767w==
ARC-Authentication-Results: i=2; mx.microsoft.com 1; spf=pass (sender ip is
 40.93.1.107) smtp.rcpttodomain=amd.com smtp.mailfrom=elektrobit.com;
 dmarc=pass (p=quarantine sp=none pct=100) action=none
 header.from=elektrobit.com; dkim=pass (signature was verified)
 header.d=elektrobit.com; arc=pass (0 oda=1 ltdi=1
 spf=[1,1,smtp.mailfrom=elektrobit.com]
 dmarc=[1,1,header.from=elektrobit.com])
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=elektrobit.com;
 s=selector1;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck;
 bh=2ZAemscrHmCDKhZ6RJ1poqZ5UjAED/22jekv/5eW7eQ=;
 b=mjKk8oE/VWBVx0KU3IdA0yxKAjFEcer/5adEsu7MqjuFViR7teWgqUGInzI7A969eSCRvfBG9kuEFwTQAiBPYvFRa8FtdZIqEFobbWsk7AGLh2PibGH77v8PRnvH2QHoXHgNAP+VIUmwss4qqR7vTaCH87i4MokLSkiTZ56T+ow=
X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 40.93.1.107)
 smtp.mailfrom=elektrobit.com; dkim=pass (signature was verified)
 header.d=elektrobit.com;dmarc=pass action=none header.from=elektrobit.com;
Received-SPF: Pass (protection.outlook.com: domain of elektrobit.com
 designates 40.93.1.107 as permitted sender) receiver=protection.outlook.com;
 client-ip=40.93.1.107; helo=BYAPR08CU003.outbound.protection.outlook.com;
 pr=C
ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none;
 b=YcF4O5omefIXk+Kv++dndUdKdoOlQzX9TcbZM0rxbuqC/w9FPPImO6SOH92UWtaHZ66ynYWHr/hqWPEaKNzRMCbUdNGxLRZzoVER+JtoviPNBaNhH7If+xKci7SKKsPGgYgkhRUWyfNtlt2Set8ExwTL16ZoCiUFBHf0fe8wci/BQrzrpdusDoA2oDSP8IRjsFI/QL/lpPnutf+WU637HAg4PQLyd4P7+Gjef4CNVKHt7S8BZxSORA+MIGYPjbCiLJl7PfsaOdfHlIDrJ9thEsT40TXdQvksm1mWqnAezkP2eLaZv/jOUBNe+2SQBbAFRefMI5+ejCAzlpWTjpQtmw==
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com;
 s=arcselector10001;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1;
 bh=2ZAemscrHmCDKhZ6RJ1poqZ5UjAED/22jekv/5eW7eQ=;
 b=s8OVYuWfKZN7KKPWRKjBKwzyaYTBVyDphvM453gsG/Jxfo7sqssPYDhYRB+AtwKnIrV375uAW7IksQ7MEiYgFdBqFy3wZa9341t5ZZ+bLx6I8VXCl00Qj1IKtzEfygfPtW420CnCSzNmxrPPcOEktXFQhCjLfaBMSy5xrMOivd4YNfZRGo4751yVI1krWsm8SSMGsbSWX0jo5mwyugz2OOiGnjKH0OiKsv/gO5C5eNndhtglsMEn4p+KZ4u1VGZvG0N62gqH182bVmgiFeFb4LKMDxo1vM1xs3a1M8EFulXOlm24jIek60nBk+1tjAGTh4HJtxIemTK1DqElKSAOFg==
ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass (sender ip is
 213.95.148.172) smtp.rcpttodomain=lists.xenproject.org
 smtp.mailfrom=elektrobit.com; dmarc=pass (p=quarantine sp=none pct=100)
 action=none header.from=elektrobit.com; dkim=none (message not signed);
 arc=none (0)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=elektrobit.com;
 s=selector1;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck;
 bh=2ZAemscrHmCDKhZ6RJ1poqZ5UjAED/22jekv/5eW7eQ=;
 b=mjKk8oE/VWBVx0KU3IdA0yxKAjFEcer/5adEsu7MqjuFViR7teWgqUGInzI7A969eSCRvfBG9kuEFwTQAiBPYvFRa8FtdZIqEFobbWsk7AGLh2PibGH77v8PRnvH2QHoXHgNAP+VIUmwss4qqR7vTaCH87i4MokLSkiTZ56T+ow=
X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 213.95.148.172)
 smtp.mailfrom=elektrobit.com; dkim=none (message not signed)
 header.d=none;dmarc=pass action=none header.from=elektrobit.com;
Received-SPF: Pass (protection.outlook.com: domain of elektrobit.com
 designates 213.95.148.172 as permitted sender)
 receiver=protection.outlook.com; client-ip=213.95.148.172;
 helo=denue6es012.ebgroup.elektrobit.com; pr=C
From: Rose Spangler <Rose.Spangler@elektrobit.com>
To: <xen-devel@lists.xenproject.org>
CC: Rose Spangler <Rose.Spangler@elektrobit.com>, Jan Beulich
	<jbeulich@suse.com>, Andrew Cooper <andrew.cooper3@citrix.com>,
	=?UTF-8?q?Roger=20Pau=20Monn=C3=A9?= <roger.pau@citrix.com>, 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>, Tamas K Lengyel <tamas@tklengyel.com>
Subject: [RFC PATCH v6 03/43] altp2m: Move altp2m_p2m to common domain struct
Date: Mon, 20 Apr 2026 17:31:26 -0400
Message-ID: <20260420213206.208750-4-Rose.Spangler@elektrobit.com>
X-Mailer: git-send-email 2.34.1
In-Reply-To: <20260420213206.208750-1-Rose.Spangler@elektrobit.com>
References: <20260420213206.208750-1-Rose.Spangler@elektrobit.com>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit
Content-Type: text/plain
X-Originating-IP: [10.10.178.50]
X-ClientProxiedBy: denue6es012.ebgroup.elektrobit.com (10.243.160.140) To
 denue6es012.ebgroup.elektrobit.com (10.243.160.140)
X-EOPAttributedMessage: 1
X-MS-Exchange-SkipListedInternetSender:
 ip=[213.95.148.172];domain=denue6es012.ebgroup.elektrobit.com
X-MS-TrafficTypeDiagnostic:
	SJ1PEPF000026C5:EE_|PH7PR08MB8180:EE_|CO1PEPF000066EA:EE_|LV8PR08MB9151:EE_
X-MS-Office365-Filtering-Correlation-Id: 87086589-79e7-4a65-e530-08de9f245d0d
X-SM-outgoing: yes
X-MS-Exchange-SenderADCheck: 1
X-MS-Exchange-AntiSpam-Relay: 0
X-Microsoft-Antispam-Untrusted:
 BCL:0;ARA:13230040|36860700016|7416014|1800799024|376014|82310400026|22082099003|18002099003|56012099003;
X-Microsoft-Antispam-Message-Info-Original:
 =?us-ascii?Q?dtVa0J8+xESiURrGLwikHDuCjwQgaT3cToUdKQMbjDvUt7tvjoXm2sM6uiNy?=
 =?us-ascii?Q?HGrZP/m4YqzHt16JiWXrXEe0sOTsZjZsaFk+hwgEDZ6EvBotCQPKXFL4J/Ky?=
 =?us-ascii?Q?JrGLnEW5cRKJH9kRkrz7U+oquilFFULCzO8dyRcecodbp0iII43xqbvwciz0?=
 =?us-ascii?Q?uAuDfLNkBphenszh0Lj/nL0w+tnqKnoVazv7ucsiB17UjxVG+dc+9HzjRFeo?=
 =?us-ascii?Q?B/snrxYZ4yMDUrnkcBFzJ2KjlqUcL5g0CQ3e8vzo19EFDLM+jo2E7ctlwIlJ?=
 =?us-ascii?Q?Dp5qfDibTeHtrxbc4IT7bCszlJmrWeQmGVU935miZSay3rYFIt12jVbnA/St?=
 =?us-ascii?Q?vQKn8x9SuGBIW5N8NSQmkE28rWeyAULrNUWTV3WNvs1NzJAp752a3fHXfIzk?=
 =?us-ascii?Q?66nYMeGrdzVIPYYkSM6N9IBeFkB+14R6/W9SSpfLC6G1vcvq9PB2bijHryMB?=
 =?us-ascii?Q?YKVdCPtgJdO4mGkP2K2Kwu2z8k3Z9JETrb9eQeUXln/itxPsTYAvAcTn+rNJ?=
 =?us-ascii?Q?yQlBvgQabwPczOH9mX1dczqi5/dQmNSTTpRjDVBhFKipv3fh3ROBq/9EP31P?=
 =?us-ascii?Q?u/ilV/CMu6m1AzyF4XSbVi4FVtPxbtJMoariJEplU8bIiY09CjU2kLEXTvcM?=
 =?us-ascii?Q?nBziy44RXeuzzlP9LA1+sZH8lx1EZArS8hYOV+dkO/cwxdwTd8XSoVNDUIfs?=
 =?us-ascii?Q?pDzr+dyf4uBJ+oFP9dAGD2A8890Ud5D7d/b3QqZRjiAFJuelVKLuSmfZqIFZ?=
 =?us-ascii?Q?Nb4NO0Xn548wQCndkP0a1GMU0R93mM1lPXN62Udfb6N1scUuBVgnakFi9wfx?=
 =?us-ascii?Q?VzAEZ6lx6qj1mgLXoWcg9jr/A3DvrKiCclMGqT78yfezAW9gUW3v9XUSxzmL?=
 =?us-ascii?Q?CJD5dQ4Z5KO2MAn8VQBywoT6LxtEWq6cc3itKqj9vuM1lXZ0gi+GFQS0bbfj?=
 =?us-ascii?Q?Guv6Xn3aiOuz2VQ7CahQdP47w14yA86EhsH9uLB3A1NoRbA4eaGL1KmUC0vM?=
 =?us-ascii?Q?4Hsif4Cqg4AtvQzKjewi0uzZKRZ0LeV79Bio9t4uooyjy3GkDrhUmGgDTwre?=
 =?us-ascii?Q?qhGa7Zf73ybAZ4MGMGoLA6ogEsYsRlnFBBv6IXR/3WFhJimtRIM/KKIWTzZq?=
 =?us-ascii?Q?hcDjqDJaNbepexonEomP1vdm2yC2hMso6v9FWg37Snca7gGX75dRD/RsCNIV?=
 =?us-ascii?Q?Io6etLVDtNmMuxPvPdssRNXRoB/mFfpf61H8mWC29m5Z2RUSRnwHnghWWcJ/?=
 =?us-ascii?Q?VF9EzjSrBpWuxeyh91ls?=
X-Forefront-Antispam-Report-Untrusted:
 CIP:213.95.148.172;CTRY:DE;LANG:en;SCL:1;SRV:;IPV:CAL;SFV:NSPM;H:denue6es012.ebgroup.elektrobit.com;PTR:eth1-fw1-nbg6.eb.noris.de;CAT:NONE;SFS:(13230040)(36860700016)(7416014)(1800799024)(376014)(82310400026)(22082099003)(18002099003)(56012099003);DIR:OUT;SFP:1102;
X-Exchange-RoutingPolicyChecked:
 W1si48NKmjL2upf5qmDXQZvXx6+mrLFLbhY37+yfSGjtv1lH2HSt4gj4m0ScxWb3aPVW3s++hAa76Ua2kcM2SYFPhOtQPOpnEebJ/+zn6CiDuApPYsmYfZ4c8BGBoVg6WYDfi/PysX2a4jEBwKqJQWl5jABCAgY9sQvdNKuMPD2ke8LFe0hZe1+hGMu44OQAoh0/5/2gYFOCJeXxcBtWsm1FkW1/VkO5aAHjAwKaB8fIbhJkEYnYWZKJpjg1RpLOgtMnZ0Vfvwesw/wGWxmzpgLpt2ynXucENd5udMwjzQQeh5k6FDRQ5IWkCDy2pSzaKNWWRfwMHE5/wD+k/rm2FA==
X-MS-Exchange-Transport-CrossTenantHeadersStamped: PH7PR08MB8180
X-MS-Exchange-SkipListedInternetSender:
 ip=[40.93.1.107];domain=BYAPR08CU003.outbound.protection.outlook.com
X-MS-Exchange-ExternalOriginalInternetSender:
 ip=[40.93.1.107];domain=BYAPR08CU003.outbound.protection.outlook.com
X-MS-Exchange-Transport-CrossTenantHeadersStripped:
 CO1PEPF000066EA.namprd05.prod.outlook.com
X-MS-PublicTrafficType: Email
X-MS-Office365-Filtering-Correlation-Id-Prvs:
	b5dc6a57-6f44-404f-e12f-08de9f24553b
X-Microsoft-Antispam:
	BCL:0;ARA:13230040|36860700016|1800799024|7416014|376014|14060799003|35042699022|82310400026|156008|56012099003|22082099003|18002099003;
X-Microsoft-Antispam-Message-Info:
	=?us-ascii?Q?cQHJ1n0L04t/0Euq1D3D67SFd4uMZOqBtC9aDCB8xPFG/3qv1/cn4HwPzlGQ?=
 =?us-ascii?Q?QT7lG5v38XS18nhEvGWWElFXHHDcbjuDPxf6Vau5FB+FeYbewH0pt4QrQdni?=
 =?us-ascii?Q?3jRhaq6vv7tj8g7dGXBzyhw166MhuIeBKMlggrx728ufBqcy/BROx3XNH8wa?=
 =?us-ascii?Q?sqZfXGs2NDxU87AiFvLA40/kRhQZdbktL3oZEUkByL5htwwOj/Z7y1qpKv4b?=
 =?us-ascii?Q?/K+FFUcf+v4O+xOLh7DPU8EkXwVvamdNfPvhA3wJRqxgrMuwBN06U2vbuCAA?=
 =?us-ascii?Q?2+vf5O3JrAq3gPgGXuhBvgfFD9hTUy8Z+Y9fQgpwG0+wEtgUjiZC3gDMZAML?=
 =?us-ascii?Q?BmeG14Gd/SczfeW7jjDVc1//446oWiKRBt59/bvNdhWxHJIFecl/b1sH9Ikg?=
 =?us-ascii?Q?AEHQmhONGInfu0tEXxhjZ+9VtM4WWPaevI8ULp2SwSmM6prfBdLBYulPz3qT?=
 =?us-ascii?Q?NVwZy8t1vZeP4LkuDWYW4XoprT7ZfnzK640X5m0XaYh6FlkHoV1BLnM1dBX8?=
 =?us-ascii?Q?2zhHCbYs58KVPinve0USDkb9cT/b54/ZIrcocDS6xiJI+/FGkEDuvKzeumcU?=
 =?us-ascii?Q?ZA+9WFDtO8AuWjfbP8OKlX7n8zvGJZ/daTGE5lcWSstN9j+H/OXc+GcN69LK?=
 =?us-ascii?Q?zNMJzvqBVYx+EKeX8G0WWpZpqvbDnQPRF+VfoHVxnmV0K/fTTELmxGOOCSjB?=
 =?us-ascii?Q?vKFelNf55nrOwLJmmG0RTeew4EsdLLjw1f8qGOnXxlbh7Qd81Y00vtz0Aqly?=
 =?us-ascii?Q?6TTiHWsrDWPVAVtwdCLvqWKfE19lh6/dFA1YdxsrE/RnIwx/SrXAQ/aWZ1o4?=
 =?us-ascii?Q?UGtTF9liSZj6iBfqK8FWPXLcV1o3NoZHBSe0cnKn8oRH4wDxZ6O1wu/Pyr2B?=
 =?us-ascii?Q?V70Jbr9moTtDbN+SvGkiwUM8m+n6F+q9ifJqdOI2fbnC8HM9EdbAQuI23/ht?=
 =?us-ascii?Q?DTdtrQWzisaL7dCl8O2UH2QfYAGsxdweTBBmSw4snVUo75ceBx5x+wfY2Bb5?=
 =?us-ascii?Q?RavxewyVJNS8PUzZdiLraOb/3guOzUskbdAIWS0AcjyMcRxPcma4BS2KWpkj?=
 =?us-ascii?Q?qjslDMwTJRC/EFKF02reZ5Syuj1OUtMncKj/UkfZM4V6F1h6o6sdardRon++?=
 =?us-ascii?Q?qqSfqzD2F2z9arLFCbZQRpNJ7p3uYTuaP0UNKQ8LMRJTrt+TT+gEXpk6ZzHZ?=
 =?us-ascii?Q?rj4OrENE7saHdutpEUk4yQELOsmocvB8OtTP4f4gdn5OgtM1JFRyhOlvtbBM?=
 =?us-ascii?Q?q5+9gIHaRnFpbp6aWLnW?=
X-Forefront-Antispam-Report:
	CIP:4.79.107.243;CTRY:US;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:BYAPR08CU003.outbound.protection.outlook.com;PTR:mail-byapr08cu00303.outbound.protection.outlook.com;CAT:NONE;SFS:(13230040)(36860700016)(1800799024)(7416014)(376014)(14060799003)(35042699022)(82310400026)(156008)(56012099003)(22082099003)(18002099003);DIR:OUT;SFP:1102;
X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1
X-MS-Exchange-AntiSpam-MessageData-0:
	+MyymflaFjgAyhQpDKMkybRTtCfZw4Qu7e0pGaYIpfhO1qZzeuA9uL5yJSoOhZphPlORpn37gstjnBRezs6/cshAbJE3UwN/RUzggUcEnqOtzNsoaBt4kJtW6w5P8bNHjcEt2G/dKbQF1KIzr60HrcuEAmkaetSgXDxcXo3zALwFpRgIYpwzUf1zHM6cJ6qezWu5M0yMDKTEn4As5sn6HppWO57xOny9ZvF7Gsq8HyG6ZjP+i/7WOZiZ9zBQaZ+cReTR06QNgZ+faustMpVhQqDi51NRAFdrsTdVtnbRVYGa1oSsxTxKYRCh48m8vIo3jgiTTRWu6X89BxtftKARW93R8kwZF/gKCcyxHW1N0L/FkkdBurrz5jNcjaxlaYQkSAmCCT3kfebLWizRxeHVED4495Ko/4ky2cOloEQe7fMyugAarsih5TjpMG6+SwG2
X-OriginatorOrg: elektrobit.com
X-MS-Exchange-CrossTenant-OriginalArrivalTime: 20 Apr 2026 21:32:46.1162
 (UTC)
X-MS-Exchange-CrossTenant-Network-Message-Id: 87086589-79e7-4a65-e530-08de9f245d0d
X-MS-Exchange-CrossTenant-Id: e764c36b-012e-4216-910d-8fd16283182d
X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=e764c36b-012e-4216-910d-8fd16283182d;Ip=[4.79.107.243];Helo=[usbth1es003.ebgroup.elektrobit.com]
X-MS-Exchange-CrossTenant-AuthAs: Internal
X-MS-Exchange-CrossTenant-AuthSource: TreatMessagesAsInternal-CO1PEPF000066EA.namprd05.prod.outlook.com
X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem
X-MS-Exchange-Transport-CrossTenantHeadersStamped: LV8PR08MB9151
X-purgate-ID: tlsNG-42698a/1776720775-252B9F3B-295B4CEC/0/0
X-purgate-type: clean
X-purgate-size: 13310

Similarly to the previous commit, this commit moves altp2m_p2m to the
common domain struct. The representation of altp2m views as an array of
p2m_domain pointers is the same on x86 and ARM, and it seems that this
would be the case for other architectures as well.

This commit is a refactor, and no change in functionality is intended.

This is commit 3/8 of the preparation phase.

Signed-off-by: Rose Spangler <Rose.Spangler@elektrobit.com>
---
v6: Introduced this patch.
---
 xen/arch/x86/hvm/vmx/vmx.c        |  2 +-
 xen/arch/x86/include/asm/domain.h |  1 -
 xen/arch/x86/include/asm/p2m.h    |  4 ++--
 xen/arch/x86/mm/altp2m.c          | 28 ++++++++++++++--------------
 xen/arch/x86/mm/hap/hap.c         |  6 +++---
 xen/arch/x86/mm/mem_access.c      |  8 ++++----
 xen/arch/x86/mm/mem_sharing.c     |  2 +-
 xen/arch/x86/mm/p2m-ept.c         |  6 +++---
 xen/arch/x86/mm/p2m.c             |  8 ++++----
 xen/include/xen/sched.h           |  1 +
 10 files changed, 33 insertions(+), 33 deletions(-)

diff --git a/xen/arch/x86/hvm/vmx/vmx.c b/xen/arch/x86/hvm/vmx/vmx.c
index ff895f7f9437..0909929c00e0 100644
--- a/xen/arch/x86/hvm/vmx/vmx.c
+++ b/xen/arch/x86/hvm/vmx/vmx.c
@@ -5004,7 +5004,7 @@ bool asmlinkage vmx_vmenter_helper(const struct cpu_user_regs *regs)
                 if ( currd->arch.altp2m_eptp[i] == mfn_x(INVALID_MFN) )
                     continue;
 
-                ept = &currd->arch.altp2m_p2m[i]->ept;
+                ept = &currd->altp2m_p2m[i]->ept;
                 if ( cpumask_test_cpu(cpu, ept->invalidate) )
                 {
                     cpumask_clear_cpu(cpu, ept->invalidate);
diff --git a/xen/arch/x86/include/asm/domain.h b/xen/arch/x86/include/asm/domain.h
index 0cf0c0d92087..f8038087e612 100644
--- a/xen/arch/x86/include/asm/domain.h
+++ b/xen/arch/x86/include/asm/domain.h
@@ -368,7 +368,6 @@ struct arch_domain
     mm_lock_t nested_p2m_lock;
 
 #ifdef CONFIG_ALTP2M
-    struct p2m_domain **altp2m_p2m;
     mm_lock_t altp2m_list_lock;
     uint64_t *altp2m_eptp;
     uint64_t *altp2m_visible_eptp;
diff --git a/xen/arch/x86/include/asm/p2m.h b/xen/arch/x86/include/asm/p2m.h
index 3a5a5fd43c2a..ec871717a9e4 100644
--- a/xen/arch/x86/include/asm/p2m.h
+++ b/xen/arch/x86/include/asm/p2m.h
@@ -901,7 +901,7 @@ static inline struct p2m_domain *p2m_get_altp2m(struct vcpu *v)
 
     BUG_ON(index >= v->domain->nr_altp2m);
 
-    return v->domain->arch.altp2m_p2m[index];
+    return v->domain->altp2m_p2m[index];
 }
 
 /* set current alternate p2m table */
@@ -919,7 +919,7 @@ static inline bool p2m_set_altp2m(struct vcpu *v, unsigned int idx)
     atomic_dec(&orig->active_vcpus);
 
     vcpu_altp2m(v).p2midx = idx;
-    atomic_inc(&v->domain->arch.altp2m_p2m[idx]->active_vcpus);
+    atomic_inc(&v->domain->altp2m_p2m[idx]->active_vcpus);
 
     return true;
 }
diff --git a/xen/arch/x86/mm/altp2m.c b/xen/arch/x86/mm/altp2m.c
index 08db8f37c1b1..8dd3c0f96be0 100644
--- a/xen/arch/x86/mm/altp2m.c
+++ b/xen/arch/x86/mm/altp2m.c
@@ -130,14 +130,14 @@ int p2m_init_altp2m(struct domain *d)
     struct p2m_domain *hostp2m = p2m_get_hostp2m(d);
 
     mm_lock_init(&d->arch.altp2m_list_lock);
-    d->arch.altp2m_p2m = xvzalloc_array(struct p2m_domain *, d->nr_altp2m);
+    d->altp2m_p2m = xvzalloc_array(struct p2m_domain *, d->nr_altp2m);
 
-    if ( !d->arch.altp2m_p2m )
+    if ( !d->altp2m_p2m )
         return -ENOMEM;
 
     for ( i = 0; i < d->nr_altp2m; i++ )
     {
-        d->arch.altp2m_p2m[i] = p2m = p2m_init_one(d);
+        d->altp2m_p2m[i] = p2m = p2m_init_one(d);
         if ( p2m == NULL )
         {
             p2m_teardown_altp2m(d);
@@ -158,14 +158,14 @@ void p2m_teardown_altp2m(struct domain *d)
 
     for ( i = 0; i < d->nr_altp2m; i++ )
     {
-        if ( !d->arch.altp2m_p2m[i] )
+        if ( !d->altp2m_p2m[i] )
             continue;
-        p2m = d->arch.altp2m_p2m[i];
-        d->arch.altp2m_p2m[i] = NULL;
+        p2m = d->altp2m_p2m[i];
+        d->altp2m_p2m[i] = NULL;
         p2m_free_one(p2m);
     }
 
-    XVFREE(d->arch.altp2m_p2m);
+    XVFREE(d->altp2m_p2m);
 }
 
 int altp2m_get_effective_entry(struct p2m_domain *ap2m, gfn_t gfn, mfn_t *mfn,
@@ -325,7 +325,7 @@ static void p2m_reset_altp2m(struct domain *d, unsigned int idx,
     struct p2m_domain *p2m;
 
     ASSERT(idx < d->nr_altp2m);
-    p2m = d->arch.altp2m_p2m[array_index_nospec(idx, d->nr_altp2m)];
+    p2m = d->altp2m_p2m[array_index_nospec(idx, d->nr_altp2m)];
 
     p2m_lock(p2m);
 
@@ -368,7 +368,7 @@ static int p2m_activate_altp2m(struct domain *d, unsigned int idx,
 
     ASSERT(idx < d->nr_altp2m);
 
-    p2m = d->arch.altp2m_p2m[array_index_nospec(idx, d->nr_altp2m)];
+    p2m = d->altp2m_p2m[array_index_nospec(idx, d->nr_altp2m)];
     hostp2m = p2m_get_hostp2m(d);
 
     p2m_lock(p2m);
@@ -468,7 +468,7 @@ int p2m_destroy_altp2m_by_id(struct domain *d, unsigned int idx)
     if ( d->arch.altp2m_eptp[array_index_nospec(idx, MAX_EPTP)] !=
          mfn_x(INVALID_MFN) )
     {
-        p2m = d->arch.altp2m_p2m[array_index_nospec(idx, d->nr_altp2m)];
+        p2m = d->altp2m_p2m[array_index_nospec(idx, d->nr_altp2m)];
 
         if ( !_atomic_read(p2m->active_vcpus) )
         {
@@ -532,7 +532,7 @@ int p2m_change_altp2m_gfn(struct domain *d, unsigned int idx,
         return rc;
 
     hp2m = p2m_get_hostp2m(d);
-    ap2m = d->arch.altp2m_p2m[array_index_nospec(idx, d->nr_altp2m)];
+    ap2m = d->altp2m_p2m[array_index_nospec(idx, d->nr_altp2m)];
 
     p2m_lock(hp2m);
     p2m_lock(ap2m);
@@ -596,7 +596,7 @@ int p2m_altp2m_propagate_change(struct domain *d, gfn_t gfn,
         if ( d->arch.altp2m_eptp[i] == mfn_x(INVALID_MFN) )
             continue;
 
-        p2m = d->arch.altp2m_p2m[i];
+        p2m = d->altp2m_p2m[i];
 
         /* Check for a dropped page that may impact this altp2m */
         if ( mfn_eq(mfn, INVALID_MFN) &&
@@ -679,7 +679,7 @@ int p2m_set_suppress_ve_multi(struct domain *d,
             return -EINVAL;
 
         p2m = ap2m =
-            d->arch.altp2m_p2m[array_index_nospec(sve->view, d->nr_altp2m)];
+            d->altp2m_p2m[array_index_nospec(sve->view, d->nr_altp2m)];
     }
 
     p2m_lock(host_p2m);
@@ -746,7 +746,7 @@ int p2m_get_suppress_ve(struct domain *d, gfn_t gfn, bool *suppress_ve,
             return -EINVAL;
 
         p2m = ap2m =
-            d->arch.altp2m_p2m[array_index_nospec(altp2m_idx, d->nr_altp2m)];
+            d->altp2m_p2m[array_index_nospec(altp2m_idx, d->nr_altp2m)];
     }
     else
         p2m = host_p2m;
diff --git a/xen/arch/x86/mm/hap/hap.c b/xen/arch/x86/mm/hap/hap.c
index 3d563b3bc2d1..6918a00a2a25 100644
--- a/xen/arch/x86/mm/hap/hap.c
+++ b/xen/arch/x86/mm/hap/hap.c
@@ -524,7 +524,7 @@ int hap_enable(struct domain *d, u32 mode)
 
         for ( i = 0; i < d->nr_altp2m; i++ )
         {
-            rv = p2m_alloc_table(d->arch.altp2m_p2m[i]);
+            rv = p2m_alloc_table(d->altp2m_p2m[i]);
             if ( rv != 0 )
                goto out;
         }
@@ -548,7 +548,7 @@ void hap_final_teardown(struct domain *d)
 #ifdef CONFIG_ALTP2M
     if ( hvm_altp2m_supported() )
         for ( i = 0; i < d->nr_altp2m; i++ )
-            p2m_teardown(d->arch.altp2m_p2m[i], true, NULL);
+            p2m_teardown(d->altp2m_p2m[i], true, NULL);
 #endif
 
     /* Destroy nestedp2m's first */
@@ -603,7 +603,7 @@ void hap_teardown(struct domain *d, bool *preempted)
 
         for ( i = 0; i < d->nr_altp2m; i++ )
         {
-            p2m_teardown(d->arch.altp2m_p2m[i], false, preempted);
+            p2m_teardown(d->altp2m_p2m[i], false, preempted);
             if ( preempted && *preempted )
                 return;
         }
diff --git a/xen/arch/x86/mm/mem_access.c b/xen/arch/x86/mm/mem_access.c
index a9d6b081a523..e5548e64d8d0 100644
--- a/xen/arch/x86/mm/mem_access.c
+++ b/xen/arch/x86/mm/mem_access.c
@@ -319,7 +319,7 @@ long p2m_set_mem_access(struct domain *d, gfn_t gfn, uint32_t nr,
         if ( !altp2m_is_eptp_valid(d, altp2m_idx) )
             return -EINVAL;
 
-        ap2m = d->arch.altp2m_p2m[array_index_nospec(altp2m_idx, d->nr_altp2m)];
+        ap2m = d->altp2m_p2m[array_index_nospec(altp2m_idx, d->nr_altp2m)];
     }
 #endif
 
@@ -375,7 +375,7 @@ long p2m_set_mem_access_multi(struct domain *d,
         if ( !altp2m_is_eptp_valid(d, altp2m_idx) )
             return -EINVAL;
 
-        ap2m = d->arch.altp2m_p2m[array_index_nospec(altp2m_idx, d->nr_altp2m)];
+        ap2m = d->altp2m_p2m[array_index_nospec(altp2m_idx, d->nr_altp2m)];
     }
 #endif
 
@@ -438,7 +438,7 @@ int p2m_get_mem_access(struct domain *d, gfn_t gfn, xenmem_access_t *access,
         if ( !altp2m_is_eptp_valid(d, altp2m_idx) )
             return -EINVAL;
 
-        p2m = d->arch.altp2m_p2m[array_index_nospec(altp2m_idx, d->nr_altp2m)];
+        p2m = d->altp2m_p2m[array_index_nospec(altp2m_idx, d->nr_altp2m)];
     }
 #endif
 
@@ -457,7 +457,7 @@ void arch_p2m_set_access_required(struct domain *d, bool access_required)
         unsigned int i;
         for ( i = 0; i < d->nr_altp2m; i++ )
         {
-            struct p2m_domain *p2m = d->arch.altp2m_p2m[i];
+            struct p2m_domain *p2m = d->altp2m_p2m[i];
 
             if ( p2m )
                 p2m->access_required = access_required;
diff --git a/xen/arch/x86/mm/mem_sharing.c b/xen/arch/x86/mm/mem_sharing.c
index 8319733b1bb6..b7d8fb9ad1aa 100644
--- a/xen/arch/x86/mm/mem_sharing.c
+++ b/xen/arch/x86/mm/mem_sharing.c
@@ -919,7 +919,7 @@ static int nominate_page(struct domain *d, gfn_t gfn,
 
         for ( i = 0; i < d->nr_altp2m; i++ )
         {
-            ap2m = d->arch.altp2m_p2m[i];
+            ap2m = d->altp2m_p2m[i];
             if ( !ap2m )
                 continue;
 
diff --git a/xen/arch/x86/mm/p2m-ept.c b/xen/arch/x86/mm/p2m-ept.c
index ed850723f5fd..ddb4c7606be1 100644
--- a/xen/arch/x86/mm/p2m-ept.c
+++ b/xen/arch/x86/mm/p2m-ept.c
@@ -1311,7 +1311,7 @@ static void ept_set_ad_sync(struct domain *d, bool value)
             if ( d->arch.altp2m_eptp[i] == mfn_x(INVALID_MFN) )
                 continue;
 
-            p2m = d->arch.altp2m_p2m[i];
+            p2m = d->altp2m_p2m[i];
 
             p2m_lock(p2m);
             p2m->ept.ad = value;
@@ -1579,7 +1579,7 @@ void __init setup_ept_dump(void)
 void p2m_init_altp2m_ept(struct domain *d, unsigned int i)
 {
     struct p2m_domain *p2m =
-        d->arch.altp2m_p2m[array_index_nospec(i, d->nr_altp2m)];
+        d->altp2m_p2m[array_index_nospec(i, d->nr_altp2m)];
     struct p2m_domain *hostp2m = p2m_get_hostp2m(d);
     struct ept_data *ept;
 
@@ -1603,7 +1603,7 @@ unsigned int p2m_find_altp2m_by_eptp(struct domain *d, uint64_t eptp)
         if ( d->arch.altp2m_eptp[i] == mfn_x(INVALID_MFN) )
             continue;
 
-        p2m = d->arch.altp2m_p2m[i];
+        p2m = d->altp2m_p2m[i];
         ept = &p2m->ept;
 
         if ( eptp == ept->eptp )
diff --git a/xen/arch/x86/mm/p2m.c b/xen/arch/x86/mm/p2m.c
index 41517765c5ec..5bd426296f20 100644
--- a/xen/arch/x86/mm/p2m.c
+++ b/xen/arch/x86/mm/p2m.c
@@ -111,7 +111,7 @@ void p2m_change_entry_type_global(struct domain *d,
         {
             if ( d->arch.altp2m_eptp[i] != mfn_x(INVALID_MFN) )
             {
-                struct p2m_domain *altp2m = d->arch.altp2m_p2m[i];
+                struct p2m_domain *altp2m = d->altp2m_p2m[i];
 
                 p2m_lock(altp2m);
                 change_entry_type_global(altp2m, ot, nt);
@@ -157,7 +157,7 @@ bool p2m_memory_type_changed(struct domain *d)
         {
             if ( d->arch.altp2m_eptp[i] != mfn_x(INVALID_MFN) )
             {
-                struct p2m_domain *altp2m = d->arch.altp2m_p2m[i];
+                struct p2m_domain *altp2m = d->altp2m_p2m[i];
 
                 p2m_lock(altp2m);
                 _memory_type_changed(altp2m);
@@ -955,7 +955,7 @@ void p2m_change_type_range(struct domain *d,
         {
             if ( d->arch.altp2m_eptp[i] != mfn_x(INVALID_MFN) )
             {
-                struct p2m_domain *altp2m = d->arch.altp2m_p2m[i];
+                struct p2m_domain *altp2m = d->altp2m_p2m[i];
 
                 p2m_lock(altp2m);
                 change_type_range(altp2m, start, end, ot, nt);
@@ -1031,7 +1031,7 @@ int p2m_finish_type_change(struct domain *d,
         {
             if ( d->arch.altp2m_eptp[i] != mfn_x(INVALID_MFN) )
             {
-                struct p2m_domain *altp2m = d->arch.altp2m_p2m[i];
+                struct p2m_domain *altp2m = d->altp2m_p2m[i];
 
                 p2m_lock(altp2m);
                 rc = finish_type_change(altp2m, first_gfn, max_nr);
diff --git a/xen/include/xen/sched.h b/xen/include/xen/sched.h
index 458f2f260dd7..5d8ba2d2ab19 100644
--- a/xen/include/xen/sched.h
+++ b/xen/include/xen/sched.h
@@ -626,6 +626,7 @@ struct domain
     /* altp2m: allow multiple copies of host p2m */
     bool altp2m_active;
     unsigned int nr_altp2m;    /* Number of altp2m tables. */
+    struct p2m_domain **altp2m_p2m;
 #endif
 
 #ifdef CONFIG_VMTRACE
-- 
2.34.1



From xen-devel-bounces@lists.xenproject.org Mon Apr 20 21:33:01 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 20 Apr 2026 21:33:01 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1287763.1568169 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wEwEn-0008R9-Cv; Mon, 20 Apr 2026 21:33:01 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1287763.1568169; Mon, 20 Apr 2026 21: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 1wEwEn-0008Qm-8O; Mon, 20 Apr 2026 21:33:01 +0000
Received: by outflank-mailman (input) for mailman id 1287763;
 Mon, 20 Apr 2026 21:32:59 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <Rose.Spangler@elektrobit.com>) id 1wEwEl-0008Kp-FZ
 for xen-devel@lists.xenproject.org; Mon, 20 Apr 2026 21:32:59 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wEwEk-00CD6F-Ss
 for xen-devel@lists.xenproject.org; Mon, 20 Apr 2026 23:32:58 +0200
Received: from [10.42.69.2] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <Rose.Spangler@elektrobit.com>)
 id 69e69b6b-2eae-0a2a0a5409dd-0a2a450289b2-44
 for <xen-devel@lists.xenproject.org>; Mon, 20 Apr 2026 23:32:58 +0200
Received: from [40.107.200.102]
 (helo=CH5PR02CU005.outbound.protection.outlook.com)
 by tlsNG-720697.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.1)
 (envelope-from <Rose.Spangler@elektrobit.com>)
 id 69e69b89-af86-0a2a45020019-286bc866b857-3
 for <xen-devel@lists.xenproject.org>; Mon, 20 Apr 2026 23:32:58 +0200
Received: from DM6PR08CA0055.namprd08.prod.outlook.com (2603:10b6:5:1e0::29)
 by CYXPR08MB9432.namprd08.prod.outlook.com (2603:10b6:930:e5::15) with
 Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9818.32; Mon, 20 Apr
 2026 21:32:53 +0000
Received: from DS2PEPF00003446.namprd04.prod.outlook.com
 (2603:10b6:5:1e0:cafe::92) by DM6PR08CA0055.outlook.office365.com
 (2603:10b6:5:1e0::29) with Microsoft SMTP Server (version=TLS1_3,
 cipher=TLS_AES_256_GCM_SHA384) id 15.20.9791.48 via Frontend Transport; Mon,
 20 Apr 2026 21:32:53 +0000
Received: from usbth1es003.ebgroup.elektrobit.com (4.79.107.243) by
 DS2PEPF00003446.mail.protection.outlook.com (10.167.17.73) with Microsoft
 SMTP Server (version=TLS1_3, cipher=TLS_AES_256_GCM_SHA384) id 15.20.9791.48
 via Frontend Transport; Mon, 20 Apr 2026 21:32:53 +0000
Received: from usbth1es003 (localhost [127.0.0.1])
 by usbth1es003.ebgroup.elektrobit.com (Postfix) with SMTP id 4fzzH862xlz1wdP; 
 Mon, 20 Apr 2026 14:32:52 -0700 (PDT)
Received: from BN1PR07CU003.outbound.protection.outlook.com
 (mail-bn1pr07cu00301.outbound.protection.outlook.com [40.93.12.1])
 (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)
 key-exchange secp384r1 server-signature RSA-PSS (2048 bits) server-digest
 SHA256) (No client certificate requested)
 by usbth1es003.ebgroup.elektrobit.com (Postfix) with ESMTPS;
 Mon, 20 Apr 2026 14:32:52 -0700 (PDT)
Received: from BY1P220CA0042.NAMP220.PROD.OUTLOOK.COM (2603:10b6:a03:59e::17)
 by CH3PR08MB10119.namprd08.prod.outlook.com (2603:10b6:610:204::8)
 with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9818.32; Mon, 20 Apr
 2026 21:32:45 +0000
Received: from SJ1PEPF000026C8.namprd04.prod.outlook.com
 (2603:10b6:a03:59e:cafe::73) by BY1P220CA0042.outlook.office365.com
 (2603:10b6:a03:59e::17) with Microsoft SMTP Server (version=TLS1_3,
 cipher=TLS_AES_256_GCM_SHA384) id 15.20.9791.48 via Frontend Transport; Mon,
 20 Apr 2026 21:32:45 +0000
Received: from denue6es012.ebgroup.elektrobit.com (213.95.148.172) by
 SJ1PEPF000026C8.mail.protection.outlook.com (10.167.244.105) with Microsoft
 SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id
 15.20.9791.48 via Frontend Transport; Mon, 20 Apr 2026 21:32:44 +0000
Received: from ubuntu.localdomain (10.10.178.50) by
 denue6es012.ebgroup.elektrobit.com (10.243.160.140) with Microsoft SMTP
 Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id
 15.2.2562.35; Mon, 20 Apr 2026 23:32:41 +0200
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@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=elektrobit.com header.i="@elektrobit.com" header.h="From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck"; dkim=pass header.s=selector1 header.d=elektrobit.com header.i="@elektrobit.com" header.h="From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck"
ARC-Seal: i=2; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=pass;
 b=m9eGN9MfZY4jzJW/Q1ya/Nqo4V+fD3/3Psh6avzXkYjiduiAHjKwQpk0CDBDKvf41uGrHUPEdMe6Af7BRG5e+Z6m4xdmzIE7MaBq6gyjtjPQz0nzQi4XOX5HAPhlCQi8mx+AjVyU34iV05BbKQb5XiQE2afPjD2oRpeAz7fzhdOXhCpJZMTooWUJUvakMoYZff9Br8ZReZU2M3E9XI+Qgll6Faxut1as9FK/GN9xnCXfDTApxdtUbRRwiTVbwcgRgl388lNugsbeFeWzM7M4MVBrTjlFpoevaD6BTqUqJFbOkf7YR0S1+BUEQPci0Zr6APTfewW+jUD/+sH+ekW49w==
ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com;
 s=arcselector10001;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1;
 bh=920CLmPnDOg9eeLN7pE/1x+mVKc67Ab1k7o15fr+MnY=;
 b=rDVlNmxozvjcFfzGiXWOEg03MQx+FxFYFO75js8+YfzYRkHBKr/BOva6mu1LoI34ELpP/xHpx0Ze/SOL9rVe8PqXw7W1gNsKlt9BlbfZ4+Kp+xmXZ2VMWX2iKV0/IW36HgrpMTSB1UV9clbzb7VdlUyBRWE3ucPnIpSQ9jcaXUhVZMeGfrN3ldsNDliXm2g/bCwsWrJBv7Hbc4S6CDfZQUXmC1jn6P8vdq0DVGTy8n+VgAzJZj0C7LTy9NahJLPopILv2+nwEu7eCe0DkN9EmTiszn0/eRVIPQqxAhfeaaRaFvduSOa+rYlIeDuJ/L269mFi/qM/FnsmWnLxgEF5og==
ARC-Authentication-Results: i=2; mx.microsoft.com 1; spf=pass (sender ip is
 40.93.12.1) smtp.rcpttodomain=amd.com smtp.mailfrom=elektrobit.com;
 dmarc=pass (p=quarantine sp=none pct=100) action=none
 header.from=elektrobit.com; dkim=pass (signature was verified)
 header.d=elektrobit.com; arc=pass (0 oda=1 ltdi=1
 spf=[1,1,smtp.mailfrom=elektrobit.com]
 dmarc=[1,1,header.from=elektrobit.com])
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=elektrobit.com;
 s=selector1;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck;
 bh=920CLmPnDOg9eeLN7pE/1x+mVKc67Ab1k7o15fr+MnY=;
 b=MGbQ5OVBWcb5drSpAVR/SfX5Kj+JSilIpSA7to/A2YOyaT94+n/a2hUhqScStFQHgYH02bfSMidbdrPRH7mvGjYzLBAzUK34WsHQU0HHYC85CPDjR5GWkQKxEQa1pMWNVVg0pd6gVFrEbS1MDpqPpXhK+L1HxChYVj5kgRILKrw=
X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 40.93.12.1)
 smtp.mailfrom=elektrobit.com; dkim=pass (signature was verified)
 header.d=elektrobit.com;dmarc=pass action=none header.from=elektrobit.com;
Received-SPF: Pass (protection.outlook.com: domain of elektrobit.com
 designates 40.93.12.1 as permitted sender) receiver=protection.outlook.com;
 client-ip=40.93.12.1; helo=BN1PR07CU003.outbound.protection.outlook.com; pr=C
ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none;
 b=cFEGWW0wI9qQpB06cFpDqlShSGVnu2fRPELpc2L0ydiaTYkUHL2P5l9VY6xo37qlGMLIbPKyoNLpQw9R5j0U8Le/7EhTQRPlXtgsdldehssu7jBXm6z+DturYKUh0o4aA37DOke1nhoXMe6sCOtx6m5sAyofn9lL3Jiy/YK2zumoaeApdcJs4c9QzVdKOtf/8RgSRfmFvCMI6ADI/cm9627VBBcERFL4C1jzdd5WGOsyRXDi6X+AXAVWFYWX6zaULK2XBOJf3rmyAaLMjMugA1khvzIRY4zZh918GNaaMRYRQQlvh/Il7WoWgSCJTmDRNQ+9N6eAzPnnSq4L0Vylqg==
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com;
 s=arcselector10001;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1;
 bh=920CLmPnDOg9eeLN7pE/1x+mVKc67Ab1k7o15fr+MnY=;
 b=I+6212nDc5/GMI4iMb3rV/S7kelOltMzLg578Z8GTp/zZdMmE7NikHzWJfeiY0zvW5pmQqZL6z5uoV7CMnYQ2JA8/H7cVMl6bTITTvjZMBWS7l/MpP5J9ZjuiR3/cDDlW+ztVujwoeSvijuOIQQ22uaO9l7IND3scNxWLddUTXcy/TeVUudNNDyBff8A4nzQAChPZiVi3P58w48S2/rZG2YEeAnyZJD1d1mRzVffvmOJy3GgQhjnEnbrXMpfRND6t5eaGgL1IfyBHrH4AWv4WQSqyLCjmL2O48kK+diX7ghufWFyy+iYPzLODiJOcU6OaviBsRtZfN5PfJ8Y5foAKQ==
ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass (sender ip is
 213.95.148.172) smtp.rcpttodomain=lists.xenproject.org
 smtp.mailfrom=elektrobit.com; dmarc=pass (p=quarantine sp=none pct=100)
 action=none header.from=elektrobit.com; dkim=none (message not signed);
 arc=none (0)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=elektrobit.com;
 s=selector1;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck;
 bh=920CLmPnDOg9eeLN7pE/1x+mVKc67Ab1k7o15fr+MnY=;
 b=MGbQ5OVBWcb5drSpAVR/SfX5Kj+JSilIpSA7to/A2YOyaT94+n/a2hUhqScStFQHgYH02bfSMidbdrPRH7mvGjYzLBAzUK34WsHQU0HHYC85CPDjR5GWkQKxEQa1pMWNVVg0pd6gVFrEbS1MDpqPpXhK+L1HxChYVj5kgRILKrw=
X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 213.95.148.172)
 smtp.mailfrom=elektrobit.com; dkim=none (message not signed)
 header.d=none;dmarc=pass action=none header.from=elektrobit.com;
Received-SPF: Pass (protection.outlook.com: domain of elektrobit.com
 designates 213.95.148.172 as permitted sender)
 receiver=protection.outlook.com; client-ip=213.95.148.172;
 helo=denue6es012.ebgroup.elektrobit.com; pr=C
From: Rose Spangler <Rose.Spangler@elektrobit.com>
To: <xen-devel@lists.xenproject.org>
CC: Rose Spangler <Rose.Spangler@elektrobit.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?q?Roger=20Pau=20Monn=C3=A9?=
	<roger.pau@citrix.com>, Sergej Proskurin <proskurin@sec.in.tum.de>
Subject: [RFC PATCH v6 10/43] altp2m: Add ARM support to do_altp2m_op
Date: Mon, 20 Apr 2026 17:31:33 -0400
Message-ID: <20260420213206.208750-11-Rose.Spangler@elektrobit.com>
X-Mailer: git-send-email 2.34.1
In-Reply-To: <20260420213206.208750-1-Rose.Spangler@elektrobit.com>
References: <20260420213206.208750-1-Rose.Spangler@elektrobit.com>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit
Content-Type: text/plain
X-Originating-IP: [10.10.178.50]
X-ClientProxiedBy: denue6es012.ebgroup.elektrobit.com (10.243.160.140) To
 denue6es012.ebgroup.elektrobit.com (10.243.160.140)
X-EOPAttributedMessage: 1
X-MS-Exchange-SkipListedInternetSender:
 ip=[213.95.148.172];domain=denue6es012.ebgroup.elektrobit.com
X-MS-TrafficTypeDiagnostic:
	SJ1PEPF000026C8:EE_|CH3PR08MB10119:EE_|DS2PEPF00003446:EE_|CYXPR08MB9432:EE_
X-MS-Office365-Filtering-Correlation-Id: df206c15-39c7-4774-c108-08de9f246197
X-SM-outgoing: yes
X-MS-Exchange-SenderADCheck: 1
X-MS-Exchange-AntiSpam-Relay: 0
X-Microsoft-Antispam-Untrusted:
 BCL:0;ARA:13230040|704161411799003|82310400026|36860700016|376014|7416014|1800799024|56012099003|18002099003|22082099003;
X-Microsoft-Antispam-Message-Info-Original:
 =?us-ascii?Q?1NBB2UYWTz03qDBikJeCnBTcsbNFCQJny5w7frHSZz8svDc0uJlGXnYLGoTJ?=
 =?us-ascii?Q?+AA9pzme69Ig013a+I6+BqfeON5LY20LhyuDU0munH9K5ZDS7yWzx0n3VtMc?=
 =?us-ascii?Q?SRjKm6BnV40fXub0Hh0MZTtl8G8XKn63V+H/DFeZF/JaQA8zAMvseWC+cALX?=
 =?us-ascii?Q?HTeMC0Dc++8MGDN/r15q59Laj+y3vrPLopQcL9lCIfTk/iN1G0Gq69/yxD81?=
 =?us-ascii?Q?4FoOwNqNtuvXYHZaxgeoLBvK/I4hPUu2yHrhQw3zjseQcxkbvAEYLEec7Qy9?=
 =?us-ascii?Q?vClIcQOzMA8eiDMDU/2WnBnEhlh797CQm6JHhZ3WtZ5O6Yxk5bJwESy29J35?=
 =?us-ascii?Q?x1O8tb32dcxSICGvg5ghWJLz1tBflnQUYYveHtzCQNfI0SA69qpHgtJ5ue99?=
 =?us-ascii?Q?Sj2vsV4+9fZtWSy9TtcOUpEvIErCYtiyRKg9QgOJKPVNrYh1Y+/c42M2i25+?=
 =?us-ascii?Q?bSjhOGSNCeneR29WRmoBDzNwZITx93DEUgjhWgYTCp/X8yUycGta3sZfiqfr?=
 =?us-ascii?Q?ybkYfyKsGspRxn13E03z4NnLvMUFdU10xVRYTOSB/Ec/oAlS7wXNsIu2DOou?=
 =?us-ascii?Q?3C4nNgFY+qcXDG4DC4jzNDv6lUWWZ0kjYa8tsWWTExGyL7vhCy12zrb+O+4f?=
 =?us-ascii?Q?3+1FW6p0Un5rQ057yljU1CMNPrBnpvvDfsUQkitOREKicLJYoHkQqnhlOanO?=
 =?us-ascii?Q?HG/qe90dHj3PFr8GI9WrESLyNQQfkj+wezvZKJdFIWv1eBLj8NmPNv4bfynw?=
 =?us-ascii?Q?idkvN8P7ID5FOL4cXpNo4N+v5vbe82NixtTiI4xXIdfyeOt1M0xStZnqHiSc?=
 =?us-ascii?Q?mT5BTzysW+5y5E/d8p5wDIBrVrz6aLkL7tzq/kSHNQ78/wFNkXFaxhdZrfZ3?=
 =?us-ascii?Q?t6bUDvHdCxY+tOVFOkE8gPbCVW9c0KcTekES+jE6JGTNx+cihDL7bWuPj4YN?=
 =?us-ascii?Q?n3E1f06WYy8gvAcm5fb55432t1yII0TrjicGWJXcKAohF49UOyZp9meJWZ76?=
 =?us-ascii?Q?C6VIFTLJSSxcYSXnZOvnOru8DfyzUilEPt6fbmP3rz8IOckwhhi3lt9/vZyH?=
 =?us-ascii?Q?Wnkxq3JMEqhyJZM73TU7Gts6Zn3f1J1IKcIs9cbXosmOuJBTgeYmUN8gESmN?=
 =?us-ascii?Q?kQrBzTQ5tsvl/WR/MRdtIWBHR4JzFREvy2tNtphCQswu7X3R/HnlpEU=3D?=
X-Forefront-Antispam-Report-Untrusted:
 CIP:213.95.148.172;CTRY:DE;LANG:en;SCL:1;SRV:;IPV:CAL;SFV:NSPM;H:denue6es012.ebgroup.elektrobit.com;PTR:eth1-fw1-nbg6.eb.noris.de;CAT:NONE;SFS:(13230040)(704161411799003)(82310400026)(36860700016)(376014)(7416014)(1800799024)(56012099003)(18002099003)(22082099003);DIR:OUT;SFP:1102;
X-Exchange-RoutingPolicyChecked:
 LDeCQf4qTWOWoLaKwLLRVvmfGam7q2i/AYJEwOkF8dXoWbU5p3rol4/8RNlmlMfflvFYPwZD919HBifAzz6xIgv6wohoozYpy4qRX5EOObzGHOafNFKnMF5+7CvE13uwcy6sJYTo8L8PLiXx3DrRJV3F+oGalsNYm0nx41yddk0jvpzadD12R1dych+Fxd8FdIIPKnfThabyDF97xcA7IYN33mIt7IqSAk/UlPpX0VDohtBsre6ZSCDaAY1jJ8IV/I1VFXCvVy9rdDqtVVRXKjONoDC83mSISIKte5bcDc8ecZPCP+1Zs5e5l7zrfUdM8AQB/zmdZRhsRpjJxO+c6A==
X-MS-Exchange-Transport-CrossTenantHeadersStamped: CH3PR08MB10119
X-MS-Exchange-SkipListedInternetSender:
 ip=[40.93.12.1];domain=BN1PR07CU003.outbound.protection.outlook.com
X-MS-Exchange-ExternalOriginalInternetSender:
 ip=[40.93.12.1];domain=BN1PR07CU003.outbound.protection.outlook.com
X-MS-Exchange-Transport-CrossTenantHeadersStripped:
 DS2PEPF00003446.namprd04.prod.outlook.com
X-MS-PublicTrafficType: Email
X-MS-Office365-Filtering-Correlation-Id-Prvs:
	d28e0a32-d628-4f1b-e916-08de9f245c5a
X-Microsoft-Antispam:
	BCL:0;ARA:13230040|704161411799003|82310400026|14060799003|35042699022|156008|36860700016|7416014|376014|1800799024|56012099003|22082099003|18002099003;
X-Microsoft-Antispam-Message-Info:
	=?us-ascii?Q?hW4Y/U/0ML1c5FgWw5wAZxjPl67OE4xjhcUpyv42HSDwZ9yHRsH1YN+Si/BR?=
 =?us-ascii?Q?S+y9J4P/skvWndMPtyCQng34IynII746wQ3GjfD12L1ggrRPapcO4gY0cO97?=
 =?us-ascii?Q?p0zD9USI+j3lG2vF1fGZMA20iCMfR5di+9NXidUeCiRKbpRP62mFCr+9n5Nk?=
 =?us-ascii?Q?K8nStKk3FVy1pSkcq2oCpz0nsgu0CXYN3/Uwt81WqsyagS7ScKoVrRAVkUPP?=
 =?us-ascii?Q?QUH0C3UcR6s3XKjmdPJCFhdNlf44n/rcBhwn54jnnsstRnB5HEaGdp+gSXQ3?=
 =?us-ascii?Q?hhcg2soxZHKM+1g3uZtZcSiiwcz1EAbFz9clYZYF6Mg0eUyBEIO0NxZtxXA6?=
 =?us-ascii?Q?KIxvO0TIOs7xNW3vcId2U5/H4Ez+k5UZWA2CeHTrkjiZByGm5mYyqerchmjo?=
 =?us-ascii?Q?NQJJSgPcFOkYGwUWOiEO+Cze/CapsWCZgyb12EJYm8lhtpuhguZ8aW2lxmmE?=
 =?us-ascii?Q?u/JBcgg6SBFazUC5qsGvaH5yXpDobMzrM7aVdZTPHti+h+V1BddWDifYLVHC?=
 =?us-ascii?Q?kn7KAOUUlKAEFLYGWEEDNVZ7IgGSJVUuzfI4OCSqL3+NgNxjjs4Vh6Rsbcrj?=
 =?us-ascii?Q?sNBCrq6Po0qGy5Gefq+NxwmomRx4l2+fyiin+NiFdMsl/TBv84KxPy7lglaY?=
 =?us-ascii?Q?LIq/FDnexBm19aSGi1zGQ35aGFcmTTonZh1KWj1bIKvESI6U49ciaqAY7Bqs?=
 =?us-ascii?Q?Mg/xTtGHiuog1CBhMnSZ3XHB9iHEdrvwPiywrz++qv0JCN6qXt4saJZP0ly4?=
 =?us-ascii?Q?bSiyG8uP/ueb4HpUn3s2hrzmyvfQq1rz7FwS+MGSeiCKhQxY9VIpvkfVexYS?=
 =?us-ascii?Q?mNiBeUTq3G+ufykqNtAlzJ1ZS/MGtUXOx+V5q6ecGP+VB76lgSCUdVaFY9sF?=
 =?us-ascii?Q?n7XaScljycaQHjn6sUUYb+dNiZLVfD+XxGjdxxt5TyK6Sy5XLq1eaKjc9mkV?=
 =?us-ascii?Q?lQ3SzBu9bIzP5l6wZlwgDVoDcqv9I2grN6Tt6sI0lUYo+I7xQWVCG8JJCSNf?=
 =?us-ascii?Q?EfS2XUz6userfYCtbJtuQfXiWYRR6LG+HwS3wfCOuOhWymQNJgef/ccRo4ip?=
 =?us-ascii?Q?9kMefjxrUY9q4V4uK/ehJtYItMlCbmQZz1e/wxihbZS5pRQyCeEpNQ7/Calb?=
 =?us-ascii?Q?ZH0tvmLsIwzdi/yIZpcgIiwBdJQW1GwV0u6FHu0gtA//qvUPjDQcq/A=3D?=
X-Forefront-Antispam-Report:
	CIP:4.79.107.243;CTRY:US;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:BN1PR07CU003.outbound.protection.outlook.com;PTR:mail-bn1pr07cu00301.outbound.protection.outlook.com;CAT:NONE;SFS:(13230040)(704161411799003)(82310400026)(14060799003)(35042699022)(156008)(36860700016)(7416014)(376014)(1800799024)(56012099003)(22082099003)(18002099003);DIR:OUT;SFP:1102;
X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1
X-MS-Exchange-AntiSpam-MessageData-0:
	1Rx9VxvU+hxbFvdWGw0wXufeQuF9vAWlBbYjUHuaJfb3vfBHGONdSRyZsbvdako15TW10dw0iWM9iqb/cV2m80j803wB1xxKSfSvkUe4xMEeXUggeclkgTzN/mXi/C6GgEcn5YFOox9HFilv5thVAyzE6GcKWv5xylj5qop6BwRwWjtqQAvSlO041flG71YXTy+zJesrUoS+Sw3nnXPPhXHzwoUkHoLltA+A3a5ctYmGWJ/oGUuJrnJM87zU8OajRodCxhKXtlIRjeArC+eOzcK0I4zsSG7znjn2OTOJSrTjiv92LRZjAYaMYpaTVyxkydKSuD6x0ghV+cwYAgLTGsFU2cRVSK7f3F/OjEdLYRb/SVZtKIEYx4ByOxsFRcy9RtYiAU4N5ItPuSFPdTQOJ20B9UDJmNDFVoPMn9DM6gsTu0igaL/bot6oKoOTQlSm
X-OriginatorOrg: elektrobit.com
X-MS-Exchange-CrossTenant-OriginalArrivalTime: 20 Apr 2026 21:32:53.4889
 (UTC)
X-MS-Exchange-CrossTenant-Network-Message-Id: df206c15-39c7-4774-c108-08de9f246197
X-MS-Exchange-CrossTenant-Id: e764c36b-012e-4216-910d-8fd16283182d
X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=e764c36b-012e-4216-910d-8fd16283182d;Ip=[4.79.107.243];Helo=[usbth1es003.ebgroup.elektrobit.com]
X-MS-Exchange-CrossTenant-AuthAs: Internal
X-MS-Exchange-CrossTenant-AuthSource: TreatMessagesAsInternal-DS2PEPF00003446.namprd04.prod.outlook.com
X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem
X-MS-Exchange-Transport-CrossTenantHeadersStamped: CYXPR08MB9432
X-purgate-ID: tlsNG-720697/1776720778-B3961161-CEBE0834/0/0
X-purgate-type: clean
X-purgate-size: 4450

This commit makes the minimum required changes necessary for do_altp2m_op
to compile on ARM. All altp2m commands in the switch statement are gated by
CONFIG_X86, with a default case of returning EOPNOTSUPP. This allows future
commits to move the #ifdef CONFIG_X86 down as support for ARM is added.

Additionally, a call to do_altp2m_op is added in the ARM HVMOP code.

This is commit 2/2 of the common do_altp2m_op phase.

Signed-off-by: Rose Spangler <Rose.Spangler@elektrobit.com>
Signed-off-by: Sergej Proskurin <proskurin@sec.in.tum.de>
---
v6: Replaced patches 2 and 3 from v4/v5 patch set with this patch.

    Made HVM_PARAM_ALTP2M read-only, following the change to the x86
    implementation in commit 0291089f6ea8. The DOMCTL to enable altp2m on
    ARM is implemented in a later commit in this patch series.
---
 xen/arch/arm/hvm.c  |  9 +++++++++
 xen/common/altp2m.c | 29 ++++++++++++++---------------
 2 files changed, 23 insertions(+), 15 deletions(-)

diff --git a/xen/arch/arm/hvm.c b/xen/arch/arm/hvm.c
index 86e49bf47403..7c778795a280 100644
--- a/xen/arch/arm/hvm.c
+++ b/xen/arch/arm/hvm.c
@@ -5,6 +5,7 @@
  * Arch-specific hardware virtual machine abstractions.
  */
 
+#include <xen/altp2m.h>
 #include <xen/init.h>
 #include <xen/lib.h>
 #include <xen/errno.h>
@@ -23,6 +24,10 @@ static int hvm_allow_set_param(const struct domain *d, unsigned int param)
 {
     switch ( param )
     {
+        /* The following parameters are read-only. */
+    case HVM_PARAM_ALTP2M:
+        return -EEXIST;
+
         /*
          * The following parameters are intended for toolstack usage only.
          * They may not be set by the domain.
@@ -123,6 +128,10 @@ long do_hvm_op(unsigned long op, XEN_GUEST_HANDLE_PARAM(void) arg)
             rc = -EINVAL;
         break;
 
+    case HVMOP_altp2m:
+        rc = do_altp2m_op(arg);
+        break;
+
     default:
     {
         gdprintk(XENLOG_DEBUG, "HVMOP op=%lu: not implemented\n", op);
diff --git a/xen/common/altp2m.c b/xen/common/altp2m.c
index a43b3a3e34b3..6481fae1ed12 100644
--- a/xen/common/altp2m.c
+++ b/xen/common/altp2m.c
@@ -9,8 +9,10 @@
 
 #include <xsm/xsm.h>
 
-#ifdef CONFIG_X86
+#if defined(CONFIG_X86) && defined(CONFIG_HVM)
 #include <asm/hvm/nestedhvm.h>
+#endif
+
 /*
  * altp2m operations are envisioned as being used in several different
  * modes:
@@ -18,13 +20,13 @@
  * - external: All control and decisions are made by an external agent
  *   running domain 0.
  *
- * - internal: altp2m operations are used exclusively by an in-guest
- *   agent to protect itself from the guest kernel and in-guest
- *   attackers.
+ * - internal (x86 only): altp2m operations are used exclusively by an
+ *   in-guest agent to protect itself from the guest kernel and
+ *   in-guest attackers.
  *
- * - coordinated: An in-guest agent handles #VE and VMFUNCs locally,
- *   but makes requests of an agent running outside the domain for
- *   bigger changes (such as modifying altp2m entires).
+ * - coordinated (x86 only): An in-guest agent handles #VE and VMFUNCs
+ *   locally, but makes requests of an agent running outside the
+ *   domain for bigger changes (such as modifying altp2m entires).
  *
  * This corresponds to the three values for HVM_PARAM_ALTP2M
  * (external, mixed, limited). All three models have advantages and
@@ -97,7 +99,7 @@ int do_altp2m_op(
 
     if ( (a.cmd != HVMOP_altp2m_get_domain_state) &&
          (a.cmd != HVMOP_altp2m_set_domain_state) &&
-         !d->altp2m_active )
+         !altp2m_active(d) )
     {
         rc = -EOPNOTSUPP;
         goto out;
@@ -122,6 +124,7 @@ int do_altp2m_op(
 
     switch ( a.cmd )
     {
+#ifdef CONFIG_X86
     case HVMOP_altp2m_get_domain_state:
         a.u.domain_state.state = altp2m_active(d);
         rc = __copy_to_guest(arg, &a, 1) ? -EFAULT : 0;
@@ -394,9 +397,12 @@ int do_altp2m_op(
             rc = altp2m_set_view_visibility(d, idx, a.u.set_visibility.visible);
         break;
     }
+#endif /* CONFIG_X86 */
 
     default:
+#ifdef CONFIG_X86
         ASSERT_UNREACHABLE();
+#endif
         rc = -EOPNOTSUPP;
         break;
     }
@@ -406,13 +412,6 @@ int do_altp2m_op(
 
     return rc;
 }
-#else
-int do_altp2m_op(
-    XEN_GUEST_HANDLE_PARAM(void) arg)
-{
-    return -EOPNOTSUPP;
-}
-#endif
 
 /*
  * Local variables:
-- 
2.34.1



From xen-devel-bounces@lists.xenproject.org Mon Apr 20 21:33:03 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 20 Apr 2026 21:33:03 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1287764.1568178 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wEwEp-0000H1-0H; Mon, 20 Apr 2026 21:33:03 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1287764.1568178; Mon, 20 Apr 2026 21:33: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 1wEwEo-0000GG-SU; Mon, 20 Apr 2026 21:33:02 +0000
Received: by outflank-mailman (input) for mailman id 1287764;
 Mon, 20 Apr 2026 21:33:01 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <Rose.Spangler@elektrobit.com>) id 1wEwEn-0008Pq-3m
 for xen-devel@lists.xenproject.org; Mon, 20 Apr 2026 21:33:01 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wEwEm-00CCKM-Gw
 for xen-devel@lists.xenproject.org; Mon, 20 Apr 2026 23:33:00 +0200
Received: from [10.42.69.10] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <Rose.Spangler@elektrobit.com>)
 id 69e69b69-bab6-0a2a0a5309dd-0a2a450a8c08-16
 for <xen-devel@lists.xenproject.org>; Mon, 20 Apr 2026 23:33:00 +0200
Received: from [52.101.56.99]
 (helo=BN1PR04CU002.outbound.protection.outlook.com)
 by tlsNG-4011c0.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.1)
 (envelope-from <Rose.Spangler@elektrobit.com>)
 id 69e69b8a-56b3-0a2a450a0019-346538632a9f-3
 for <xen-devel@lists.xenproject.org>; Mon, 20 Apr 2026 23:33:00 +0200
Received: from IA1P220CA0016.NAMP220.PROD.OUTLOOK.COM (2603:10b6:208:464::10)
 by SJ2PR08MB8837.namprd08.prod.outlook.com (2603:10b6:a03:564::20)
 with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9818.33; Mon, 20 Apr
 2026 21:32:50 +0000
Received: from BL6PEPF0001AB4D.namprd04.prod.outlook.com
 (2603:10b6:208:464:cafe::5e) by IA1P220CA0016.outlook.office365.com
 (2603:10b6:208:464::10) with Microsoft SMTP Server (version=TLS1_3,
 cipher=TLS_AES_256_GCM_SHA384) id 15.20.9791.48 via Frontend Transport; Mon,
 20 Apr 2026 21:32:50 +0000
Received: from usbth1es003.ebgroup.elektrobit.com (4.79.107.243) by
 BL6PEPF0001AB4D.mail.protection.outlook.com (10.167.242.71) with Microsoft
 SMTP Server (version=TLS1_3, cipher=TLS_AES_256_GCM_SHA384) id 15.20.9791.48
 via Frontend Transport; Mon, 20 Apr 2026 21:32:49 +0000
Received: from usbth1es003 (localhost [127.0.0.1])
 by usbth1es003.ebgroup.elektrobit.com (Postfix) with SMTP id 4fzzH454z6z1wdP; 
 Mon, 20 Apr 2026 14:32:48 -0700 (PDT)
Received: from SN1PR07CU001.outbound.protection.outlook.com
 (mail-sn1pr07cu00107.outbound.protection.outlook.com [40.93.14.103])
 (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)
 key-exchange secp384r1 server-signature RSA-PSS (2048 bits) server-digest
 SHA256) (No client certificate requested)
 by usbth1es003.ebgroup.elektrobit.com (Postfix) with ESMTPS;
 Mon, 20 Apr 2026 14:32:48 -0700 (PDT)
Received: from SJ0PR13CA0185.namprd13.prod.outlook.com (2603:10b6:a03:2c3::10)
 by SA3PR08MB8827.namprd08.prod.outlook.com (2603:10b6:806:37f::6)
 with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9818.33; Mon, 20 Apr
 2026 21:32:40 +0000
Received: from SJ1PEPF000026C7.namprd04.prod.outlook.com
 (2603:10b6:a03:2c3:cafe::28) by SJ0PR13CA0185.outlook.office365.com
 (2603:10b6:a03:2c3::10) with Microsoft SMTP Server (version=TLS1_3,
 cipher=TLS_AES_256_GCM_SHA384) id 15.20.9791.48 via Frontend Transport; Mon,
 20 Apr 2026 21:32:40 +0000
Received: from denue6es012.ebgroup.elektrobit.com (213.95.148.172) by
 SJ1PEPF000026C7.mail.protection.outlook.com (10.167.244.104) with Microsoft
 SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id
 15.20.9791.48 via Frontend Transport; Mon, 20 Apr 2026 21:32:39 +0000
Received: from ubuntu.localdomain (10.10.178.50) by
 denue6es012.ebgroup.elektrobit.com (10.243.160.140) with Microsoft SMTP
 Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id
 15.2.2562.35; Mon, 20 Apr 2026 23:32:36 +0200
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@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=elektrobit.com header.i="@elektrobit.com" header.h="From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck"; dkim=pass header.s=selector1 header.d=elektrobit.com header.i="@elektrobit.com" header.h="From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck"
ARC-Seal: i=2; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=pass;
 b=GN8IGpfUZKXiGY7c9btOQDr+GoZ9NhAHKxKGZApqy4Z+6Tthj8fq3U7jDU8dakJgTPnIhdW3KBoQ0zcxnhEatHbKICUQDBxdDlswf/kM1kaVvn/sOA/CJphfCq3ggtmM0qBxBNdp2HIHrsr4s0kNhRwE4O7rVk+ZNQA5N3oPRyQ4bR1wJqF/p5/qimckHPnceR0zymOSEsYmxeKHVNNBe1f38rH226E/Iayef8/+FE2JMVfXJzaNDzGvrmDfg5B1uSHHquRBkYQchbR5+GhiVALBaT9MInLtVbQ8P2523VP+clCXrQ3WWkEEl2s5qqqwLyTph74YC9ujVmi44DJEtQ==
ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com;
 s=arcselector10001;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1;
 bh=2Xr6LLXjzqnGjZ+q/CL1Op56Lgquh9rAvy51mivO1rA=;
 b=HXw4XFvnQA3/7yanLk0roDwMWU8a76QaiblqQCEnw5OP+vRvCe1HGAQv9sFDsWeowUAzkTgDxNxFLR49zjBCIELe64GIzdLUidzvG9Ulo1FTX4a0yTuPdRtcAd/9rP+mmvZ2atVt4BSynqpynLoByV0czsxqfijlFUtkaDB9l1kAIUqr8XLQF0rjoSsqYeK2dlJlNnNNF9c3n7Wmnu30jvKAtsbG+Fzx5E/mUIdmzJ7IfxpjHAW/gGm4GVD5qeYsE0zrR3C4+x4PAmWH/TaRWZTpBvr/K+O+0ehuYX4hIRpkNuRmNBKSiwSA+ZuReK7JygOl3jRUGX097CKA+bP+5Q==
ARC-Authentication-Results: i=2; mx.microsoft.com 1; spf=pass (sender ip is
 40.93.14.103) smtp.rcpttodomain=amd.com smtp.mailfrom=elektrobit.com;
 dmarc=pass (p=quarantine sp=none pct=100) action=none
 header.from=elektrobit.com; dkim=pass (signature was verified)
 header.d=elektrobit.com; arc=pass (0 oda=1 ltdi=1
 spf=[1,1,smtp.mailfrom=elektrobit.com]
 dmarc=[1,1,header.from=elektrobit.com])
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=elektrobit.com;
 s=selector1;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck;
 bh=2Xr6LLXjzqnGjZ+q/CL1Op56Lgquh9rAvy51mivO1rA=;
 b=qiO5/zCMqmeA5lbuxL9krbMOEb73xOg7AJaPX1XbKRo60LPPjL2lS1m7AEBxphlkiadTrbkwznHeLVD01cI1dGxROazNdjZ4cM2tvzjsIF/AlXbu5pb/rI9shVst6Zjb2QmWUtxy6LIDX0sKyVp/K9vDcqQ8V2sBvZVKDgkFbZI=
X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 40.93.14.103)
 smtp.mailfrom=elektrobit.com; dkim=pass (signature was verified)
 header.d=elektrobit.com;dmarc=pass action=none header.from=elektrobit.com;
Received-SPF: Pass (protection.outlook.com: domain of elektrobit.com
 designates 40.93.14.103 as permitted sender) receiver=protection.outlook.com;
 client-ip=40.93.14.103; helo=SN1PR07CU001.outbound.protection.outlook.com;
 pr=C
ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none;
 b=Y6THxcZhbHOnZTXDmfiYtmfXKPFOUElAYwWhBP/7UPTV5n+FjHHwzHqlgPQeojAoUCYXcUQIUxtf2E5K+T/TvIuHJdXM8QEJxQd8q080ZSI6qtkwlHT/86PvEVcrz6UGh4jHxs6djzbYaamcygHGs6dap4CrYED4Bd2AV1TIX+Og/VaPgAXlmwLJK69tHyglL1xme0PEMSW2u/n9nFMsCXTr4jBTQI1GNmBi0SujJ14w05AtGc8MjIgB0NXtwvB1f5GU0/9dsBDQZXEfPRbE0t1BCg8W0MgRKX5RGSSIrBYJ/bh1MgAHmZfKw0ji2d/l9tnW5aMzHN5P16KZiQ8Lig==
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com;
 s=arcselector10001;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1;
 bh=2Xr6LLXjzqnGjZ+q/CL1Op56Lgquh9rAvy51mivO1rA=;
 b=Lm+FvvBi1KkUsChrTLrtvq08TlzmUBhR0mcZ2u5GeQTnn7SIBnRB+8NWqWgzvB1qv8tnjaK3e8fdzJQHbwDBDKQJWhNBrJ7mzjrATpplMcZD0Fby25TvE3eMw8ZMwzqaKF5ragtmY0hStT5hTega3r3oFeC/+dJv4t9h5XOf1oW3nA7u1STVF4/B2RUu0CR5TUOxn+IoW6wwQSO2nGVgQHdTE6f/+te4aEWIPr5dIYBYHtHg6y5AOvygf8jluOSOh1brg3PM2X8yQ7kItEMqGbpa9XkQMnuGB6vdxXqJcZN5KoVBU61rOeqimNZri7uxLykZQWcEkO8cJi2dIPlrXA==
ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass (sender ip is
 213.95.148.172) smtp.rcpttodomain=lists.xenproject.org
 smtp.mailfrom=elektrobit.com; dmarc=pass (p=quarantine sp=none pct=100)
 action=none header.from=elektrobit.com; dkim=none (message not signed);
 arc=none (0)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=elektrobit.com;
 s=selector1;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck;
 bh=2Xr6LLXjzqnGjZ+q/CL1Op56Lgquh9rAvy51mivO1rA=;
 b=qiO5/zCMqmeA5lbuxL9krbMOEb73xOg7AJaPX1XbKRo60LPPjL2lS1m7AEBxphlkiadTrbkwznHeLVD01cI1dGxROazNdjZ4cM2tvzjsIF/AlXbu5pb/rI9shVst6Zjb2QmWUtxy6LIDX0sKyVp/K9vDcqQ8V2sBvZVKDgkFbZI=
X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 213.95.148.172)
 smtp.mailfrom=elektrobit.com; dkim=none (message not signed)
 header.d=none;dmarc=pass action=none header.from=elektrobit.com;
Received-SPF: Pass (protection.outlook.com: domain of elektrobit.com
 designates 213.95.148.172 as permitted sender)
 receiver=protection.outlook.com; client-ip=213.95.148.172;
 helo=denue6es012.ebgroup.elektrobit.com; pr=C
From: Rose Spangler <Rose.Spangler@elektrobit.com>
To: <xen-devel@lists.xenproject.org>
CC: Rose Spangler <Rose.Spangler@elektrobit.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?q?Roger=20Pau=20Monn=C3=A9?=
	<roger.pau@citrix.com>, Teddy Astie <teddy.astie@vates.tech>, Tamas K Lengyel
	<tamas@tklengyel.com>
Subject: [RFC PATCH v6 08/43] altp2m: Rename p2m_*_altp2m functions and move declarations out of p2m.h
Date: Mon, 20 Apr 2026 17:31:31 -0400
Message-ID: <20260420213206.208750-9-Rose.Spangler@elektrobit.com>
X-Mailer: git-send-email 2.34.1
In-Reply-To: <20260420213206.208750-1-Rose.Spangler@elektrobit.com>
References: <20260420213206.208750-1-Rose.Spangler@elektrobit.com>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit
Content-Type: text/plain
X-Originating-IP: [10.10.178.50]
X-ClientProxiedBy: denue6es012.ebgroup.elektrobit.com (10.243.160.140) To
 denue6es012.ebgroup.elektrobit.com (10.243.160.140)
X-EOPAttributedMessage: 1
X-MS-Exchange-SkipListedInternetSender:
 ip=[213.95.148.172];domain=denue6es012.ebgroup.elektrobit.com
X-MS-TrafficTypeDiagnostic:
	SJ1PEPF000026C7:EE_|SA3PR08MB8827:EE_|BL6PEPF0001AB4D:EE_|SJ2PR08MB8837:EE_
X-MS-Office365-Filtering-Correlation-Id: 80cac74d-727e-469d-773a-08de9f245f42
X-SM-outgoing: yes
X-MS-Exchange-SenderADCheck: 1
X-MS-Exchange-AntiSpam-Relay: 0
X-Microsoft-Antispam-Untrusted:
 BCL:0;ARA:13230040|36860700016|1800799024|7416014|376014|82310400026|56012099003|22082099003|18002099003;
X-Microsoft-Antispam-Message-Info-Original:
 =?us-ascii?Q?YDXCrlzhw+5E+4mRzkAVrN2MWVlW4Yupi+CYHIbVNMq0ihxZIZL28VOSG49i?=
 =?us-ascii?Q?XvQSOS91sTfg5X+hTNftuPTp0r3XL3SSj9Yx77nB3Wp82QJIK91h539tcwK7?=
 =?us-ascii?Q?8iytmJ4zJVg/RtamGVyFZMUWVcbo1gNROOxixLPpP3z23mmfs4jjWelCxHUm?=
 =?us-ascii?Q?0xm4WWBdfSroa4B1/cbqH6K7OSv71/ZaCr7UJ1beuGBb71QIJz57b69YEGuk?=
 =?us-ascii?Q?fRkufjKywUazvgA/TBjjJh46nuWwEY5LFL2I6RIPbNt/F/rmrbLtt1eS8SE+?=
 =?us-ascii?Q?QcYfjeJUkCzANo3H2LK033GBPSYI9Xu2wyoud2y+g6sjSkQgOyCRKIg5NLCg?=
 =?us-ascii?Q?TgyY5/IR++lFu6/90ImRoN2LBhR8MA8kIC3V9PsO5odQkcwefKsvL4q4ovtF?=
 =?us-ascii?Q?SYBRQwRtfuBo3YpwG9Fx3CQRdcPD0ZdOBKVgwmf1fvm+6Io7UxpGd9EJ0nZM?=
 =?us-ascii?Q?siCQ4x1/P9ZjnGUE5NY+N+nDCqegH5VdNwcNxrpgdamg4BGVDEifyqgUyUBd?=
 =?us-ascii?Q?gFO7cYSJ0QhUEPI6ZzTWv/fBdc7meo+DIhJ8pmiRb82WyDgUuCkU3dESlfHG?=
 =?us-ascii?Q?yVq4NhN924XpSXq0uPrObrlKH+g3t/zHO+ByVvlnaRodqvN1WOMokJSakM22?=
 =?us-ascii?Q?+DPwEYA2V2ILrmRqxoYhsCdq5VgQqw+LwSNQCH6AxtTFZ2ZHIf+Udyv+aiBS?=
 =?us-ascii?Q?u36dnuqlIvgLgc7Ek9K5RPgw12oVO6sRP4UrTXggTnn8jkDweHmjmU1SeX2I?=
 =?us-ascii?Q?kwz+8eXRx21VBvBLVDkp5egNNwcTIWmpIwzRRxuv3NS/qY0MgdAkhyh/efZk?=
 =?us-ascii?Q?6puoMIQX4417jOZyWYiDVgIRqQfT+Qipcqa4mtuBe0VJ3TCHfJj0yFZNem8/?=
 =?us-ascii?Q?6gRVTxUp5nP9ygZ4aUlw6OHfhUo8sGb8vk2Qdv3BX/IfciwM6UJDqOpDaGdn?=
 =?us-ascii?Q?QzlqnM765ntrWiIpkAgSmGFQi8xCUe8Lv6i21WTRoW716Hv5PN/siAUBfoYd?=
 =?us-ascii?Q?S128z4gyAGWJ0R2vy3nQ1nKzQKXdjs4oDu/8W8WnHOIg4mTKKPNIzluRshWV?=
 =?us-ascii?Q?RYcRecYxjWcTnC9HWy8SAh2EIu40ZSlggWiza1pT3n/lBSzbxtIcWYb9l24g?=
 =?us-ascii?Q?XHkL7tX+ehnLGfDDyissu2QxQrKJOyRJCadbYQyqZTNemChLx38ucxCXEBSz?=
 =?us-ascii?Q?xvtveDCQMZhOI1eWpc3Wfl473Swj1C6d7Tz//g=3D=3D?=
X-Forefront-Antispam-Report-Untrusted:
 CIP:213.95.148.172;CTRY:DE;LANG:en;SCL:1;SRV:;IPV:CAL;SFV:NSPM;H:denue6es012.ebgroup.elektrobit.com;PTR:eth1-fw1-nbg6.eb.noris.de;CAT:NONE;SFS:(13230040)(36860700016)(1800799024)(7416014)(376014)(82310400026)(56012099003)(22082099003)(18002099003);DIR:OUT;SFP:1102;
X-Exchange-RoutingPolicyChecked:
 QxOZqGNcb7paGVJxIuWGfCynZUdsUllIrMA55a9MlNESC9eoPdxpiqKvPnJoba0AxHNzZyUMakCItYLoSVct/UIf1DB210QlWribOOSPj/migMq15ewoysuNrlQflbtdyY8gy1dvO9sD0RrbH24pY6oauu92aJBANeV+8J+UCkH+0CHrvmNpWLSfOSq0WPWnt0Vkb76oRwmHWLabiJJjpGcKfMpzpzmDMEp5E49RrGA4VL3soRJB0RPefrYkGyDRYB2IE4RxA5OxaiGRiGV5WuGWgH2fAbMtAC43kbaPw2wzHruBNC2XDdh3xvSrRg2xyzYMhogY6RMOAblaj6xSAg==
X-MS-Exchange-Transport-CrossTenantHeadersStamped: SA3PR08MB8827
X-MS-Exchange-SkipListedInternetSender:
 ip=[40.93.14.103];domain=SN1PR07CU001.outbound.protection.outlook.com
X-MS-Exchange-ExternalOriginalInternetSender:
 ip=[40.93.14.103];domain=SN1PR07CU001.outbound.protection.outlook.com
X-MS-Exchange-Transport-CrossTenantHeadersStripped:
 BL6PEPF0001AB4D.namprd04.prod.outlook.com
X-MS-PublicTrafficType: Email
X-MS-Office365-Filtering-Correlation-Id-Prvs:
	719c4f26-f580-4e99-2fe9-08de9f245972
X-Microsoft-Antispam:
	BCL:0;ARA:13230040|36860700016|1800799024|376014|7416014|14060799003|35042699022|82310400026|156008|56012099003|22082099003|18002099003;
X-Microsoft-Antispam-Message-Info:
	=?us-ascii?Q?Prvmx+lx90P58KIkTqTGnmhCtmegLIJkImUoZx8S+SY4ei7iqXxRafkSeiUQ?=
 =?us-ascii?Q?eA3H6obowB2cI7XLNqLFhE0n9bayrw+Xz9jx8sIMmUGfOjp/05ohwPMjVZjZ?=
 =?us-ascii?Q?YlkfGMiTQfTNp9XMuynRHjyHOmJ2XCbsBcCIWQyV8sHdDu/i2/fhE69o3ZHn?=
 =?us-ascii?Q?3dEQZLVjIEoOugjEr03Pr/v45dTLDUJSa1cRKJ3/9cWyHYNB63npXWCmsoXk?=
 =?us-ascii?Q?s2ndrZNfYbKh8MBaxPXgYdrcaeHw+B7WoqbgBM6ADTGQ9IMYQYpgWQRvainw?=
 =?us-ascii?Q?iJ6I8hKZRYHFdR5Pybz2ofETh/1HoukLw/GJnaAs/PQUCRNSrGLGaGwO+DCK?=
 =?us-ascii?Q?goZlnRDscJSJe/OJMrwj8u8MHbB6ftc+1lw3Cl5ofVbRQRI7w7ahFGJ0h/5E?=
 =?us-ascii?Q?dMwF19C9UN5NuHDbBczJ1B/PduBRozmKsqUhrPQH0zUTgImr3V5IPm4m/NGD?=
 =?us-ascii?Q?RqE0xlVa9a+fF2mnYXLi3yCooQxSWNavuwiXvtZwAjL6TJfMxP5rW6nj0dwG?=
 =?us-ascii?Q?gK559xegsfD9ENZQ5ixh712tkucfLiTbFC4xw/qsjOjbcGUczQUMfpPx/fbL?=
 =?us-ascii?Q?NJyFMkfHCI6PM1Dwpr2T1jZCbz4g90f+HIjo+ULXAj3Je2Ws1UeTjVxevmzG?=
 =?us-ascii?Q?9yaCnEi09fttaCKuj9PRLfDfUMf6FgUNdSEwXv68A4ncHdmK0FNWU4XuxZTb?=
 =?us-ascii?Q?j4TMtshID+zWOZHElBmE2K9znNZHOTaAV8mr8MgRUDTv1G0Uo8BvBAEojP5u?=
 =?us-ascii?Q?3rqhAuSE22WaLBDgl+nrL4BfqIg7+U3KxaDdM05D33A8JJD+MUQ7MUFnvcHw?=
 =?us-ascii?Q?FIqhgPu5ojXO+Ky/bOoRT2+XR+h4MwYxfZoP7HNCchLoggjgWV41HDc4WXHQ?=
 =?us-ascii?Q?cILctgAlqo+thPnlQprmCo8nKH10Ompfxhuo0MoEYY29p1nHgmE30EfaXOXi?=
 =?us-ascii?Q?xdPR/A5tvHLXuK0BkjQaalKx7g5/IkVkKBImkw3n6hXUfimdVuC/mrXIbYFN?=
 =?us-ascii?Q?SVXOfoaDGIe+xU4a6jcpWEKtXjTE1VQblsEnCdNwu1BPPDNU2mpqBMZiY7J9?=
 =?us-ascii?Q?b+gn/NOpHTCTWAGwbjYcAoeilpQlvI0614r0Sh5Sy9kSjY12JHPmj+k83ZQ0?=
 =?us-ascii?Q?OkVRJmgvo7QpZMgXtxvP7De5v28dcL6HlQq8ExVy9uttU4sf3M3ommDCsd7f?=
 =?us-ascii?Q?iBbjgNrRXi+h4T7nLwmqtxrkVEIZ0MkKElNfMw=3D=3D?=
X-Forefront-Antispam-Report:
	CIP:4.79.107.243;CTRY:US;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:SN1PR07CU001.outbound.protection.outlook.com;PTR:mail-sn1pr07cu00107.outbound.protection.outlook.com;CAT:NONE;SFS:(13230040)(36860700016)(1800799024)(376014)(7416014)(14060799003)(35042699022)(82310400026)(156008)(56012099003)(22082099003)(18002099003);DIR:OUT;SFP:1102;
X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1
X-MS-Exchange-AntiSpam-MessageData-0:
	ZjekY8MFl0nXFrjGpv9K0LoMduEov5ssr96fU6DEHfseF+iCh0exQjhFqNZ2W06QSYvWk5ninQEl1+c4cYigKoD5v/eWCCD6N0uzi0KX4cPu8TtuLHcsNoOStOO744oZvpIPorK/BFK3k7AhxQ5EDTVZGvtyOGmKiqWnkjcaWmOwAuYMPXOOgYSwefEu30KOxMw4WjkuUgy/M0I2mWbyPYCcnTjQRHRj/Ih5UpRXsdstJiXyxCl2SnVRfk2wCwQZ6YBpb9GmN+vf+ZSvTcE9bU4YaKcE4887HiTXqnkOz4Ny+A3MECXQlY4abfkYf70WFYKsRwwQnx3FeHXmXLSgzEtyaFDpZ6Ijog+OKxJQQP3B6jwe8ATUwmoN6rxfeHVcmKN3mWvzlL8IiSrLnSaHnmVyiSXB2iC16n/DpHsWSg324s4Xb9H+BvY5/pOxvtZb
X-OriginatorOrg: elektrobit.com
X-MS-Exchange-CrossTenant-OriginalArrivalTime: 20 Apr 2026 21:32:49.5644
 (UTC)
X-MS-Exchange-CrossTenant-Network-Message-Id: 80cac74d-727e-469d-773a-08de9f245f42
X-MS-Exchange-CrossTenant-Id: e764c36b-012e-4216-910d-8fd16283182d
X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=e764c36b-012e-4216-910d-8fd16283182d;Ip=[4.79.107.243];Helo=[usbth1es003.ebgroup.elektrobit.com]
X-MS-Exchange-CrossTenant-AuthAs: Internal
X-MS-Exchange-CrossTenant-AuthSource: TreatMessagesAsInternal-BL6PEPF0001AB4D.namprd04.prod.outlook.com
X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem
X-MS-Exchange-Transport-CrossTenantHeadersStamped: SJ2PR08MB8837
X-purgate-ID: tlsNG-4011c0/1776720780-4777D8B7-72F31C00/0/0
X-purgate-type: clean
X-purgate-size: 32242

This commit renames altp2m functions with a p2m prefix. These functions
were originally defined in p2m.c, hence the p2m prefix. When they were
moved to altp2m.c in commit ae7584f63678, the function names were kept and
the declarations remained in p2m.h. This commit finishes that move by
renaming these functions to have an altp2m prefix and moving the
declarations to altp2m.h.

Since these functions will either be moved to the common altp2m.c, or
implemented separately for ARM, it doesn't seem to make sense to continue
with this naming convention. Therefore, this commit preemptively renames
the x86 implementations of these functions so they can later be implemented
with altp2m function name prefixes in common code or for ARM.

For convenience, here is the full list of renames:
- p2m_init_altp2m -> altp2m_init
- p2m_teardown_altp2m -> altp2m_teardown
- p2m_flush_altp2m -> altp2m_flush
- p2m_altp2m_get_or_propagate -> altp2m_get_or_propagate
- p2m_altp2m_propagate_change -> altp2m_propagate_change
- p2m_get_altp2m -> altp2m_get_altp2m
- p2m_set_altp2m -> altp2m_set_altp2m
- p2m_reset_altp2m -> altp2m_reset_altp2m
- p2m_activate_altp2m -> altp2m_activate_altp2m
- p2m_init_altp2m_by_id -> altp2m_init_by_id
- p2m_init_next_altp2m -> altp2m_init_next_available
- p2m_destroy_altp2m_by_id -> altp2m_destroy_by_id
- p2m_switch_domain_altp2m_by_id -> altp2m_switch_domain_altp2m_by_id
- p2m_change_altp2m_gfn -> altp2m_change_gfn
- p2m_set_altp2m_view_visibility -> altp2m_set_view_visibility

This commit contains only function renames and code movement, and no
functional change is intended.

This is commit 8/8 of the preparation phase.

Signed-off-by: Rose Spangler <Rose.Spangler@elektrobit.com>
---
v6: Introduced this patch.
---
 xen/arch/arm/altp2m.c             |   2 +-
 xen/arch/x86/hvm/hvm.c            |  30 ++++----
 xen/arch/x86/hvm/monitor.c        |   2 +-
 xen/arch/x86/hvm/vmx/vmx.c        |   6 +-
 xen/arch/x86/include/asm/altp2m.h | 116 +++++++++++++++++++++++++++++-
 xen/arch/x86/include/asm/p2m.h    | 109 ----------------------------
 xen/arch/x86/mm/altp2m.c          |  76 ++++++++++----------
 xen/arch/x86/mm/mem_access.c      |  13 ++--
 xen/arch/x86/mm/p2m-basic.c       |   4 +-
 xen/arch/x86/mm/p2m-ept.c         |   4 +-
 xen/arch/x86/mm/p2m.h             |   3 -
 xen/common/vm_event.c             |   2 +-
 xen/include/xen/p2m-common.h      |   2 +-
 13 files changed, 186 insertions(+), 183 deletions(-)

diff --git a/xen/arch/arm/altp2m.c b/xen/arch/arm/altp2m.c
index 8bd174ea8f37..339f82835caf 100644
--- a/xen/arch/arm/altp2m.c
+++ b/xen/arch/arm/altp2m.c
@@ -8,7 +8,7 @@
 #include <asm/p2m.h>
 
 /* Check to see if vcpu should be switched to a different p2m. */
-void p2m_altp2m_check(struct vcpu *v, uint16_t idx)
+void altp2m_check(struct vcpu *v, uint16_t idx)
 {
     /* Not yet implemented */
     BUG();
diff --git a/xen/arch/x86/hvm/hvm.c b/xen/arch/x86/hvm/hvm.c
index bc35efdf2c02..5b6e91adce17 100644
--- a/xen/arch/x86/hvm/hvm.c
+++ b/xen/arch/x86/hvm/hvm.c
@@ -1885,15 +1885,15 @@ int hvm_hap_nested_page_fault(paddr_t gpa, unsigned long gla,
 
     if ( altp2m_active(currd) )
     {
-        p2m = p2m_get_altp2m(curr);
+        p2m = altp2m_get_altp2m(curr);
 
         /*
          * Get the altp2m entry if present; or if not, propagate from
          * the host p2m.  NB that this returns with gfn locked in the
          * altp2m.
          */
-        if ( p2m_altp2m_get_or_propagate(p2m, gfn, &mfn, &p2mt,
-                                         &p2ma, &page_order) )
+        if ( altp2m_get_or_propagate(p2m, gfn, &mfn, &p2mt, &p2ma,
+                                     &page_order) )
         {
             /* Entry was copied from host -- retry fault */
             rc = 1;
@@ -2036,7 +2036,7 @@ int hvm_hap_nested_page_fault(paddr_t gpa, unsigned long gla,
             paging_mark_pfn_dirty(currd, _pfn(gfn));
             /*
              * If p2m is really an altp2m, unlock it before changing the type,
-             * as p2m_altp2m_propagate_change() needs to acquire the
+             * as altp2m_propagate_change() needs to acquire the
              * altp2m_list lock.
              */
             if ( p2m != hostp2m )
@@ -4663,7 +4663,7 @@ static int do_altp2m_op(
 
         /* If the alternate p2m state has changed, handle appropriately */
         if ( d->altp2m_active != ostate &&
-             (ostate || !(rc = p2m_init_altp2m_by_id(d, 0))) )
+             (ostate || !(rc = altp2m_init_by_id(d, 0))) )
         {
             for_each_vcpu( d, v )
             {
@@ -4674,7 +4674,7 @@ static int do_altp2m_op(
             }
 
             if ( ostate )
-                p2m_flush_altp2m(d);
+                altp2m_flush(d);
         }
         else if ( rc )
             d->altp2m_active = false;
@@ -4729,17 +4729,18 @@ static int do_altp2m_op(
     }
 
     case HVMOP_altp2m_create_p2m:
-        if ( !(rc = p2m_init_next_altp2m(d, &a.u.view.view,
-                                         a.u.view.hvmmem_default_access)) )
+        rc = altp2m_init_next_available(d, &a.u.view.view,
+                                        a.u.view.hvmmem_default_access);
+        if ( !rc )
             rc = __copy_to_guest(arg, &a, 1) ? -EFAULT : 0;
         break;
 
     case HVMOP_altp2m_destroy_p2m:
-        rc = p2m_destroy_altp2m_by_id(d, a.u.view.view);
+        rc = altp2m_destroy_by_id(d, a.u.view.view);
         break;
 
     case HVMOP_altp2m_switch_p2m:
-        rc = p2m_switch_domain_altp2m_by_id(d, a.u.view.view);
+        rc = altp2m_switch_domain_altp2m_by_id(d, a.u.view.view);
         break;
 
     case HVMOP_altp2m_set_suppress_ve:
@@ -4871,9 +4872,9 @@ static int do_altp2m_op(
         if ( a.u.change_gfn.pad1 || a.u.change_gfn.pad2 )
             rc = -EINVAL;
         else
-            rc = p2m_change_altp2m_gfn(d, a.u.change_gfn.view,
-                    _gfn(a.u.change_gfn.old_gfn),
-                    _gfn(a.u.change_gfn.new_gfn));
+            rc = altp2m_change_gfn(d, a.u.change_gfn.view,
+                                   _gfn(a.u.change_gfn.old_gfn),
+                                   _gfn(a.u.change_gfn.new_gfn));
         break;
 
     case HVMOP_altp2m_get_p2m_idx:
@@ -4906,8 +4907,7 @@ static int do_altp2m_op(
         else if ( !altp2m_active(d) )
             rc = -EOPNOTSUPP;
         else
-            rc = p2m_set_altp2m_view_visibility(d, idx,
-                                                a.u.set_visibility.visible);
+            rc = altp2m_set_view_visibility(d, idx, a.u.set_visibility.visible);
         break;
     }
 
diff --git a/xen/arch/x86/hvm/monitor.c b/xen/arch/x86/hvm/monitor.c
index 84c1c2234ca9..78137220b22a 100644
--- a/xen/arch/x86/hvm/monitor.c
+++ b/xen/arch/x86/hvm/monitor.c
@@ -182,7 +182,7 @@ int hvm_monitor_debug(unsigned long rip, enum hvm_monitor_debug_type type,
 #ifdef CONFIG_ALTP2M
         if ( curr->arch.hvm.fast_single_step.enabled )
         {
-            p2m_altp2m_check(curr, curr->arch.hvm.fast_single_step.p2midx);
+            altp2m_check(curr, curr->arch.hvm.fast_single_step.p2midx);
             curr->arch.hvm.single_step = false;
             curr->arch.hvm.fast_single_step.enabled = false;
             curr->arch.hvm.fast_single_step.p2midx = 0;
diff --git a/xen/arch/x86/hvm/vmx/vmx.c b/xen/arch/x86/hvm/vmx/vmx.c
index 0909929c00e0..f2cf95ee500e 100644
--- a/xen/arch/x86/hvm/vmx/vmx.c
+++ b/xen/arch/x86/hvm/vmx/vmx.c
@@ -2452,7 +2452,7 @@ static void cf_check vmx_vcpu_update_eptp(struct vcpu *v)
     struct ept_data *ept;
 
     if ( altp2m_active(d) )
-        p2m = p2m_get_altp2m(v);
+        p2m = altp2m_get_altp2m(v);
     if ( !p2m )
         p2m = p2m_get_hostp2m(d);
 
@@ -2521,7 +2521,7 @@ static int cf_check vmx_vcpu_emulate_vmfunc(const struct cpu_user_regs *regs)
 
     if ( !cpu_has_vmx_vmfunc && altp2m_active(curr->domain) &&
          regs->eax == 0 &&
-         p2m_switch_vcpu_altp2m_by_id(curr, regs->ecx) )
+         altp2m_switch_vcpu_by_id(curr, regs->ecx) )
         rc = X86EMUL_OKAY;
 
     return rc;
@@ -4277,7 +4277,7 @@ void asmlinkage vmx_vmexit_handler(struct cpu_user_regs *regs)
             }
         }
 
-        p2m_set_altp2m(v, idx);
+        altp2m_set_altp2m(v, idx);
     }
 
     if ( vm_event_is_enabled(v) &&
diff --git a/xen/arch/x86/include/asm/altp2m.h b/xen/arch/x86/include/asm/altp2m.h
index 07e760f60659..9c58a396448d 100644
--- a/xen/arch/x86/include/asm/altp2m.h
+++ b/xen/arch/x86/include/asm/altp2m.h
@@ -7,12 +7,33 @@
 #ifndef __ASM_X86_ALTP2M_H
 #define __ASM_X86_ALTP2M_H
 
-#ifdef CONFIG_ALTP2M
 
 #include <xen/types.h>
 #include <xen/sched.h>         /* for struct vcpu, struct domain */
+
+#include <asm/p2m.h>
 #include <asm/hvm/vcpu.h>      /* for vcpu_altp2m */
 
+/*
+ * Common alternate p2m declarations that need to be visible
+ * regardless of CONFIG_ALTP2M
+ */
+
+/* Alternate p2m paging */
+bool altp2m_get_or_propagate(struct p2m_domain *ap2m, unsigned long gfn_l,
+                             mfn_t *mfn, p2m_type_t *p2mt, p2m_access_t *p2ma,
+                             unsigned int *page_order);
+
+/* Propagate a host p2m change to all alternate p2m's */
+int altp2m_propagate_change(struct domain *d, gfn_t gfn, mfn_t mfn,
+                            unsigned int page_order, p2m_type_t p2mt,
+                            p2m_access_t p2ma);
+
+#ifdef CONFIG_ALTP2M
+
+#define AP2MGET_prepopulate true
+#define AP2MGET_query false
+
 static inline bool altp2m_is_eptp_valid(const struct domain *d,
                                         unsigned int idx)
 {
@@ -39,6 +60,85 @@ static inline uint16_t altp2m_vcpu_idx(const struct vcpu *v)
     return vcpu_altp2m(v).p2midx;
 }
 
+/*
+ * Alternate p2m: shadow p2m tables used for alternate memory views
+ */
+
+/* get current alternate p2m table */
+static inline struct p2m_domain *altp2m_get_altp2m(struct vcpu *v)
+{
+    unsigned int index = vcpu_altp2m(v).p2midx;
+
+    if ( index == INVALID_ALTP2M )
+        return NULL;
+
+    BUG_ON(index >= v->domain->nr_altp2m);
+
+    return v->domain->altp2m_p2m[index];
+}
+
+/* set current alternate p2m table */
+static inline bool altp2m_set_altp2m(struct vcpu *v, unsigned int idx)
+{
+    struct p2m_domain *orig;
+
+    BUG_ON(idx >= v->domain->nr_altp2m);
+
+    if ( idx == vcpu_altp2m(v).p2midx )
+        return false;
+
+    orig = altp2m_get_altp2m(v);
+    BUG_ON(!orig);
+    atomic_dec(&orig->active_vcpus);
+
+    vcpu_altp2m(v).p2midx = idx;
+    atomic_inc(&v->domain->altp2m_p2m[idx]->active_vcpus);
+
+    return true;
+}
+
+/* Initialize altp2m views */
+int altp2m_init(struct domain *d);
+
+/* Free altp2m views */
+void altp2m_teardown(struct domain *d);
+
+/* Switch alternate p2m for a single vcpu */
+bool altp2m_switch_vcpu_by_id(struct vcpu *v, unsigned int idx);
+
+/* Flush all the alternate p2m's for a domain */
+void altp2m_flush(struct domain *d);
+
+/* Make a specific alternate p2m valid */
+int altp2m_init_by_id(struct domain *d, unsigned int idx);
+
+/* Find an available alternate p2m and make it valid */
+int altp2m_init_next_available(struct domain *d, uint16_t *idx,
+                               xenmem_access_t hvmmem_default_access);
+
+/* Make a specific alternate p2m invalid */
+int altp2m_destroy_by_id(struct domain *d, unsigned int idx);
+
+/* Switch alternate p2m for entire domain */
+int altp2m_switch_domain_altp2m_by_id(struct domain *d, unsigned int idx);
+
+/* Change a gfn->mfn mapping */
+int altp2m_change_gfn(struct domain *d, unsigned int idx, gfn_t old_gfn,
+                      gfn_t new_gfn);
+
+/* Set a specific p2m view visibility */
+int altp2m_set_view_visibility(struct domain *d, unsigned int altp2m_idx,
+                               uint8_t visible);
+
+/*
+ * Looks up altp2m entry. If the entry is not found it looks up the entry in
+ * hostp2m.
+ * The prepopulate param is used to set the found entry in altp2m.
+ */
+int altp2m_get_effective_entry(struct p2m_domain *ap2m, gfn_t gfn, mfn_t *mfn,
+                               p2m_type_t *t, p2m_access_t *a,
+                               bool prepopulate);
+
 /* Alternate p2m VCPU */
 void altp2m_vcpu_initialise(struct vcpu *v);
 void altp2m_vcpu_destroy(struct vcpu *v);
@@ -69,7 +169,21 @@ static inline bool altp2m_supported(void)
     return false;
 }
 
+static inline int _altp2m_get_effective_entry(struct p2m_domain *ap2m,
+                                             gfn_t gfn, mfn_t *mfn,
+                                             p2m_type_t *t, p2m_access_t *a)
+{
+    ASSERT_UNREACHABLE();
+    return -EOPNOTSUPP;
+}
+#define altp2m_get_effective_entry(ap2m, gfn, mfn, t, a, prepopulate) \
+        _altp2m_get_effective_entry(ap2m, gfn, mfn, t, a)
+
 /* Only declaration is needed. DCE will optimise it out when linking. */
+int altp2m_init(struct domain *d);
+void altp2m_teardown(struct domain *d);
+struct p2m_domain *altp2m_get_altp2m(struct vcpu *v);
+bool altp2m_set_altp2m(struct vcpu *v, unsigned int idx);
 uint16_t altp2m_vcpu_idx(const struct vcpu *v);
 void altp2m_vcpu_initialise(struct vcpu *v);
 void altp2m_vcpu_destroy(struct vcpu *v);
diff --git a/xen/arch/x86/include/asm/p2m.h b/xen/arch/x86/include/asm/p2m.h
index ec871717a9e4..5110b3e77807 100644
--- a/xen/arch/x86/include/asm/p2m.h
+++ b/xen/arch/x86/include/asm/p2m.h
@@ -582,30 +582,6 @@ static inline gfn_t mfn_to_gfn(const struct domain *d, mfn_t mfn)
         return _gfn(mfn_x(mfn));
 }
 
-#ifdef CONFIG_ALTP2M
-#define AP2MGET_prepopulate true
-#define AP2MGET_query false
-
-/*
- * Looks up altp2m entry. If the entry is not found it looks up the entry in
- * hostp2m.
- * The prepopulate param is used to set the found entry in altp2m.
- */
-int altp2m_get_effective_entry(struct p2m_domain *ap2m, gfn_t gfn, mfn_t *mfn,
-                               p2m_type_t *t, p2m_access_t *a,
-                               bool prepopulate);
-#else
-static inline int _altp2m_get_effective_entry(struct p2m_domain *ap2m,
-                                             gfn_t gfn, mfn_t *mfn,
-                                             p2m_type_t *t, p2m_access_t *a)
-{
-    ASSERT_UNREACHABLE();
-    return -EOPNOTSUPP;
-}
-#define altp2m_get_effective_entry(ap2m, gfn, mfn, t, a, prepopulate) \
-        _altp2m_get_effective_entry(ap2m, gfn, mfn, t, a)
-#endif
-
 /* Init the datastructures for later use by the p2m code */
 int p2m_init(struct domain *d);
 
@@ -885,91 +861,6 @@ void shadow_p2m_init(struct p2m_domain *p2m);
 void cf_check nestedp2m_write_p2m_entry_post(
     struct p2m_domain *p2m, unsigned int oflags);
 
-#ifdef CONFIG_ALTP2M
-
-/*
- * Alternate p2m: shadow p2m tables used for alternate memory views
- */
-
-/* get current alternate p2m table */
-static inline struct p2m_domain *p2m_get_altp2m(struct vcpu *v)
-{
-    unsigned int index = vcpu_altp2m(v).p2midx;
-
-    if ( index == INVALID_ALTP2M )
-        return NULL;
-
-    BUG_ON(index >= v->domain->nr_altp2m);
-
-    return v->domain->altp2m_p2m[index];
-}
-
-/* set current alternate p2m table */
-static inline bool p2m_set_altp2m(struct vcpu *v, unsigned int idx)
-{
-    struct p2m_domain *orig;
-
-    BUG_ON(idx >= v->domain->nr_altp2m);
-
-    if ( idx == vcpu_altp2m(v).p2midx )
-        return false;
-
-    orig = p2m_get_altp2m(v);
-    BUG_ON(!orig);
-    atomic_dec(&orig->active_vcpus);
-
-    vcpu_altp2m(v).p2midx = idx;
-    atomic_inc(&v->domain->altp2m_p2m[idx]->active_vcpus);
-
-    return true;
-}
-
-/* Switch alternate p2m for a single vcpu */
-bool p2m_switch_vcpu_altp2m_by_id(struct vcpu *v, unsigned int idx);
-
-/* Flush all the alternate p2m's for a domain */
-void p2m_flush_altp2m(struct domain *d);
-
-/* Make a specific alternate p2m valid */
-int p2m_init_altp2m_by_id(struct domain *d, unsigned int idx);
-
-/* Find an available alternate p2m and make it valid */
-int p2m_init_next_altp2m(struct domain *d, uint16_t *idx,
-                         xenmem_access_t hvmmem_default_access);
-
-/* Make a specific alternate p2m invalid */
-int p2m_destroy_altp2m_by_id(struct domain *d, unsigned int idx);
-
-/* Switch alternate p2m for entire domain */
-int p2m_switch_domain_altp2m_by_id(struct domain *d, unsigned int idx);
-
-/* Change a gfn->mfn mapping */
-int p2m_change_altp2m_gfn(struct domain *d, unsigned int idx,
-                          gfn_t old_gfn, gfn_t new_gfn);
-
-/* Set a specific p2m view visibility */
-int p2m_set_altp2m_view_visibility(struct domain *d, unsigned int altp2m_idx,
-                                   uint8_t visible);
-
-#else /* !CONFIG_ALTP2M */
-struct p2m_domain *p2m_get_altp2m(struct vcpu *v);
-bool p2m_set_altp2m(struct vcpu *v, unsigned int idx);
-#endif /* CONFIG_ALTP2M */
-
-/*
- * Common alternate p2m declarations that need to be visible
- * regardless of CONFIG_ALTP2M
- */
-
-/* Alternate p2m paging */
-bool p2m_altp2m_get_or_propagate(struct p2m_domain *ap2m, unsigned long gfn_l,
-                                 mfn_t *mfn, p2m_type_t *p2mt,
-                                 p2m_access_t *p2ma, unsigned int *page_order);
-                                 
-/* Propagate a host p2m change to all alternate p2m's */
-int p2m_altp2m_propagate_change(struct domain *d, gfn_t gfn,
-                                mfn_t mfn, unsigned int page_order,
-                                p2m_type_t p2mt, p2m_access_t p2ma);
 #endif /* CONFIG_HVM */
 
 /* p2m access to IOMMU flags */
diff --git a/xen/arch/x86/mm/altp2m.c b/xen/arch/x86/mm/altp2m.c
index 8dd3c0f96be0..2dc84b76b8c1 100644
--- a/xen/arch/x86/mm/altp2m.c
+++ b/xen/arch/x86/mm/altp2m.c
@@ -24,7 +24,7 @@ altp2m_vcpu_initialise(struct vcpu *v)
         vcpu_pause(v);
 
     vcpu_altp2m(v).p2midx = 0;
-    atomic_inc(&p2m_get_altp2m(v)->active_vcpus);
+    atomic_inc(&altp2m_get_altp2m(v)->active_vcpus);
 
     altp2m_vcpu_update_p2m(v);
 
@@ -43,7 +43,7 @@ altp2m_vcpu_destroy(struct vcpu *v)
     if ( v != current )
         vcpu_pause(v);
 
-    if ( (p2m = p2m_get_altp2m(v)) )
+    if ( (p2m = altp2m_get_altp2m(v)) )
         atomic_dec(&p2m->active_vcpus);
 
     altp2m_vcpu_disable_ve(v);
@@ -123,7 +123,7 @@ void altp2m_vcpu_disable_ve(struct vcpu *v)
     }
 }
 
-int p2m_init_altp2m(struct domain *d)
+int altp2m_init(struct domain *d)
 {
     unsigned int i;
     struct p2m_domain *p2m;
@@ -140,7 +140,7 @@ int p2m_init_altp2m(struct domain *d)
         d->altp2m_p2m[i] = p2m = p2m_init_one(d);
         if ( p2m == NULL )
         {
-            p2m_teardown_altp2m(d);
+            altp2m_teardown(d);
             return -ENOMEM;
         }
         p2m->p2m_class = p2m_alternate;
@@ -151,7 +151,7 @@ int p2m_init_altp2m(struct domain *d)
     return 0;
 }
 
-void p2m_teardown_altp2m(struct domain *d)
+void altp2m_teardown(struct domain *d)
 {
     unsigned int i;
     struct p2m_domain *p2m;
@@ -207,13 +207,13 @@ int altp2m_get_effective_entry(struct p2m_domain *ap2m, gfn_t gfn, mfn_t *mfn,
     return 0;
 }
 
-void p2m_altp2m_check(struct vcpu *v, uint16_t idx)
+void altp2m_check(struct vcpu *v, uint16_t idx)
 {
     if ( altp2m_active(v->domain) )
-        p2m_switch_vcpu_altp2m_by_id(v, idx);
+        altp2m_switch_vcpu_by_id(v, idx);
 }
 
-bool p2m_switch_vcpu_altp2m_by_id(struct vcpu *v, unsigned int idx)
+bool altp2m_switch_vcpu_by_id(struct vcpu *v, unsigned int idx)
 {
     struct domain *d = v->domain;
     bool rc = false;
@@ -225,7 +225,7 @@ bool p2m_switch_vcpu_altp2m_by_id(struct vcpu *v, unsigned int idx)
 
     if ( d->arch.altp2m_eptp[idx] != mfn_x(INVALID_MFN) )
     {
-        if ( p2m_set_altp2m(v, idx) )
+        if ( altp2m_set_altp2m(v, idx) )
             altp2m_vcpu_update_p2m(v);
         rc = 1;
     }
@@ -246,9 +246,9 @@ bool p2m_switch_vcpu_altp2m_by_id(struct vcpu *v, unsigned int idx)
  * the host's entry to the altp2m (retaining page order), and indicate
  * that the caller should re-try the faulting instruction.
  */
-bool p2m_altp2m_get_or_propagate(struct p2m_domain *ap2m, unsigned long gfn_l,
-                                 mfn_t *mfn, p2m_type_t *p2mt,
-                                 p2m_access_t *p2ma, unsigned int *page_order)
+bool altp2m_get_or_propagate(struct p2m_domain *ap2m, unsigned long gfn_l,
+                             mfn_t *mfn, p2m_type_t *p2mt, p2m_access_t *p2ma,
+                             unsigned int *page_order)
 {
     p2m_type_t ap2mt;
     p2m_access_t ap2ma;
@@ -319,8 +319,8 @@ enum altp2m_reset_type {
     ALTP2M_DEACTIVATE
 };
 
-static void p2m_reset_altp2m(struct domain *d, unsigned int idx,
-                             enum altp2m_reset_type reset_type)
+static void altp2m_reset_altp2m(struct domain *d, unsigned int idx,
+                                enum altp2m_reset_type reset_type)
 {
     struct p2m_domain *p2m;
 
@@ -344,7 +344,7 @@ static void p2m_reset_altp2m(struct domain *d, unsigned int idx,
     p2m_unlock(p2m);
 }
 
-void p2m_flush_altp2m(struct domain *d)
+void altp2m_flush(struct domain *d)
 {
     unsigned int i;
 
@@ -352,7 +352,7 @@ void p2m_flush_altp2m(struct domain *d)
 
     for ( i = 0; i < d->nr_altp2m; i++ )
     {
-        p2m_reset_altp2m(d, i, ALTP2M_DEACTIVATE);
+        altp2m_reset_altp2m(d, i, ALTP2M_DEACTIVATE);
         d->arch.altp2m_eptp[i] = mfn_x(INVALID_MFN);
         d->arch.altp2m_visible_eptp[i] = mfn_x(INVALID_MFN);
     }
@@ -360,8 +360,8 @@ void p2m_flush_altp2m(struct domain *d)
     altp2m_list_unlock(d);
 }
 
-static int p2m_activate_altp2m(struct domain *d, unsigned int idx,
-                               p2m_access_t hvmmem_default_access)
+static int altp2m_activate_altp2m(struct domain *d, unsigned int idx,
+                                  p2m_access_t hvmmem_default_access)
 {
     struct p2m_domain *hostp2m, *p2m;
     int rc;
@@ -399,9 +399,9 @@ static int p2m_activate_altp2m(struct domain *d, unsigned int idx,
     p2m_unlock(p2m);
 
     return rc;
-}
+ }
 
-int p2m_init_altp2m_by_id(struct domain *d, unsigned int idx)
+int altp2m_init_by_id(struct domain *d, unsigned int idx)
 {
     int rc = -EINVAL;
     struct p2m_domain *hostp2m = p2m_get_hostp2m(d);
@@ -413,14 +413,14 @@ int p2m_init_altp2m_by_id(struct domain *d, unsigned int idx)
 
     if ( d->arch.altp2m_eptp[array_index_nospec(idx, MAX_EPTP)] ==
          mfn_x(INVALID_MFN) )
-        rc = p2m_activate_altp2m(d, idx, hostp2m->default_access);
+        rc = altp2m_activate_altp2m(d, idx, hostp2m->default_access);
 
     altp2m_list_unlock(d);
     return rc;
 }
 
-int p2m_init_next_altp2m(struct domain *d, uint16_t *idx,
-                         xenmem_access_t hvmmem_default_access)
+int altp2m_init_next_available(struct domain *d, uint16_t *idx,
+                               xenmem_access_t hvmmem_default_access)
 {
     int rc = -EINVAL;
     unsigned int i;
@@ -438,7 +438,7 @@ int p2m_init_next_altp2m(struct domain *d, uint16_t *idx,
         if ( d->arch.altp2m_eptp[i] != mfn_x(INVALID_MFN) )
             continue;
 
-        rc = p2m_activate_altp2m(d, i, a);
+        rc = altp2m_activate_altp2m(d, i, a);
 
         if ( !rc )
             *idx = i;
@@ -450,7 +450,7 @@ int p2m_init_next_altp2m(struct domain *d, uint16_t *idx,
     return rc;
 }
 
-int p2m_destroy_altp2m_by_id(struct domain *d, unsigned int idx)
+int altp2m_destroy_by_id(struct domain *d, unsigned int idx)
 {
     struct p2m_domain *p2m;
     int rc = -EBUSY;
@@ -472,7 +472,7 @@ int p2m_destroy_altp2m_by_id(struct domain *d, unsigned int idx)
 
         if ( !_atomic_read(p2m->active_vcpus) )
         {
-            p2m_reset_altp2m(d, idx, ALTP2M_DEACTIVATE);
+            altp2m_reset_altp2m(d, idx, ALTP2M_DEACTIVATE);
             d->arch.altp2m_eptp[array_index_nospec(idx, MAX_EPTP)] =
                 mfn_x(INVALID_MFN);
             d->arch.altp2m_visible_eptp[array_index_nospec(idx, MAX_EPTP)] =
@@ -488,7 +488,7 @@ int p2m_destroy_altp2m_by_id(struct domain *d, unsigned int idx)
     return rc;
 }
 
-int p2m_switch_domain_altp2m_by_id(struct domain *d, unsigned int idx)
+int altp2m_switch_domain_altp2m_by_id(struct domain *d, unsigned int idx)
 {
     struct vcpu *v;
     int rc = -EINVAL;
@@ -506,7 +506,7 @@ int p2m_switch_domain_altp2m_by_id(struct domain *d, unsigned int idx)
     if ( d->arch.altp2m_visible_eptp[idx] != mfn_x(INVALID_MFN) )
     {
         for_each_vcpu( d, v )
-            if ( p2m_set_altp2m(v, idx) )
+            if ( altp2m_set_altp2m(v, idx) )
                 altp2m_vcpu_update_p2m(v);
 
         rc = 0;
@@ -519,8 +519,8 @@ int p2m_switch_domain_altp2m_by_id(struct domain *d, unsigned int idx)
     return rc;
 }
 
-int p2m_change_altp2m_gfn(struct domain *d, unsigned int idx,
-                          gfn_t old_gfn, gfn_t new_gfn)
+int altp2m_change_gfn(struct domain *d, unsigned int idx, gfn_t old_gfn,
+                      gfn_t new_gfn)
 {
     struct p2m_domain *hp2m, *ap2m;
     p2m_access_t a;
@@ -571,11 +571,11 @@ int p2m_change_altp2m_gfn(struct domain *d, unsigned int idx,
     p2m_unlock(ap2m);
     p2m_unlock(hp2m);
     return rc;
-}
+ }
 
-int p2m_altp2m_propagate_change(struct domain *d, gfn_t gfn,
-                                mfn_t mfn, unsigned int page_order,
-                                p2m_type_t p2mt, p2m_access_t p2ma)
+int altp2m_propagate_change(struct domain *d, gfn_t gfn, mfn_t mfn,
+                            unsigned int page_order, p2m_type_t p2mt,
+                            p2m_access_t p2ma)
 {
     struct p2m_domain *p2m;
     unsigned int i;
@@ -605,7 +605,7 @@ int p2m_altp2m_propagate_change(struct domain *d, gfn_t gfn,
         {
             if ( !reset_count++ )
             {
-                p2m_reset_altp2m(d, i, ALTP2M_RESET);
+                altp2m_reset_altp2m(d, i, ALTP2M_RESET);
                 last_reset_idx = i;
             }
             else
@@ -617,7 +617,7 @@ int p2m_altp2m_propagate_change(struct domain *d, gfn_t gfn,
                          d->arch.altp2m_eptp[i] == mfn_x(INVALID_MFN) )
                         continue;
 
-                    p2m_reset_altp2m(d, i, ALTP2M_RESET);
+                    altp2m_reset_altp2m(d, i, ALTP2M_RESET);
                 }
 
                 ret = 0;
@@ -768,8 +768,8 @@ int p2m_get_suppress_ve(struct domain *d, gfn_t gfn, bool *suppress_ve,
     return rc;
 }
 
-int p2m_set_altp2m_view_visibility(struct domain *d, unsigned int altp2m_idx,
-                                   uint8_t visible)
+int altp2m_set_view_visibility(struct domain *d, unsigned int altp2m_idx,
+                               uint8_t visible)
 {
     int rc = 0;
 
diff --git a/xen/arch/x86/mm/mem_access.c b/xen/arch/x86/mm/mem_access.c
index e5548e64d8d0..0492356d99ad 100644
--- a/xen/arch/x86/mm/mem_access.c
+++ b/xen/arch/x86/mm/mem_access.c
@@ -81,7 +81,7 @@ bool p2m_mem_access_emulate_check(struct vcpu *v,
     struct p2m_domain *p2m = NULL;
 
     if ( altp2m_active(d) )
-        p2m = p2m_get_altp2m(v);
+        p2m = altp2m_get_altp2m(v);
     if ( !p2m )
         p2m = p2m_get_hostp2m(d);
 
@@ -145,7 +145,7 @@ bool p2m_mem_access_check(paddr_t gpa, unsigned long gla,
     int rc;
 
     if ( altp2m_active(d) )
-        p2m = p2m_get_altp2m(v);
+        p2m = altp2m_get_altp2m(v);
     if ( !p2m )
         p2m = p2m_get_hostp2m(d);
 
@@ -252,9 +252,10 @@ bool p2m_mem_access_check(paddr_t gpa, unsigned long gla,
     return (p2ma != p2m_access_n2rwx);
 }
 
-static int p2m_set_altp2m_mem_access(struct domain *d, struct p2m_domain *hp2m,
-                                     struct p2m_domain *ap2m, p2m_access_t a,
-                                     gfn_t gfn)
+static int altp2m_set_altp2m_mem_access(struct domain *d,
+                                        struct p2m_domain *hp2m,
+                                        struct p2m_domain *ap2m, p2m_access_t a,
+                                        gfn_t gfn)
 {
     mfn_t mfn;
     p2m_type_t t;
@@ -281,7 +282,7 @@ static int set_mem_access(struct domain *d, struct p2m_domain *p2m,
 
     if ( ap2m )
     {
-        rc = p2m_set_altp2m_mem_access(d, p2m, ap2m, a, gfn);
+        rc = altp2m_set_altp2m_mem_access(d, p2m, ap2m, a, gfn);
         /* If the corresponding mfn is invalid we will want to just skip it */
         if ( rc == -ESRCH )
             rc = 0;
diff --git a/xen/arch/x86/mm/p2m-basic.c b/xen/arch/x86/mm/p2m-basic.c
index ce14066fedaf..433e7d08b78f 100644
--- a/xen/arch/x86/mm/p2m-basic.c
+++ b/xen/arch/x86/mm/p2m-basic.c
@@ -128,7 +128,7 @@ int p2m_init(struct domain *d)
         return rc;
     }
 
-    rc = altp2m_supported() ? p2m_init_altp2m(d) : 0;
+    rc = altp2m_supported() ? altp2m_init(d) : 0;
     if ( rc )
     {
         p2m_teardown_hostp2m(d);
@@ -198,7 +198,7 @@ void p2m_final_teardown(struct domain *d)
     if ( is_hvm_domain(d) )
     {
         if ( altp2m_supported() )
-            p2m_teardown_altp2m(d);
+            altp2m_teardown(d);
         /*
          * We must tear down nestedp2m unconditionally because
          * we initialise it unconditionally.
diff --git a/xen/arch/x86/mm/p2m-ept.c b/xen/arch/x86/mm/p2m-ept.c
index 84159198f3a0..a6f61a9dd3d7 100644
--- a/xen/arch/x86/mm/p2m-ept.c
+++ b/xen/arch/x86/mm/p2m-ept.c
@@ -773,7 +773,7 @@ bool ept_handle_misconfig(uint64_t gpa)
     int rc;
 
     if ( altp2m_active(curr->domain) )
-        p2m = p2m_get_altp2m(curr);
+        p2m = altp2m_get_altp2m(curr);
 
     p2m_lock(p2m);
 
@@ -997,7 +997,7 @@ out:
 
     if ( altp2m_supported() && entry_written && p2m_is_hostp2m(p2m) )
     {
-        ret = p2m_altp2m_propagate_change(d, _gfn(gfn), mfn, order, p2mt, p2ma);
+        ret = altp2m_propagate_change(d, _gfn(gfn), mfn, order, p2mt, p2ma);
         if ( !rc )
             rc = ret;
     }
diff --git a/xen/arch/x86/mm/p2m.h b/xen/arch/x86/mm/p2m.h
index 635f5a7f45cd..64218878067e 100644
--- a/xen/arch/x86/mm/p2m.h
+++ b/xen/arch/x86/mm/p2m.h
@@ -19,9 +19,6 @@ static inline int p2m_init_logdirty(struct p2m_domain *p2m) { return 0; }
 static inline void p2m_free_logdirty(struct p2m_domain *p2m) {}
 #endif
 
-int p2m_init_altp2m(struct domain *d);
-void p2m_teardown_altp2m(struct domain *d);
-
 void p2m_flush_table_locked(struct p2m_domain *p2m);
 int __must_check p2m_remove_entry(struct p2m_domain *p2m, gfn_t gfn, mfn_t mfn,
                                   unsigned int page_order);
diff --git a/xen/common/vm_event.c b/xen/common/vm_event.c
index cf0258223f50..77e0c8a0b240 100644
--- a/xen/common/vm_event.c
+++ b/xen/common/vm_event.c
@@ -433,7 +433,7 @@ static int vm_event_resume(struct domain *d, struct vm_event_domain *ved)
             /* Check for altp2m switch */
             if ( IS_ENABLED(CONFIG_ALTP2M) &&
                  rsp.flags & VM_EVENT_FLAG_ALTERNATE_P2M )
-                p2m_altp2m_check(v, rsp.altp2m_idx);
+                altp2m_check(v, rsp.altp2m_idx);
 
             if ( rsp.flags & VM_EVENT_FLAG_SET_REGISTERS )
                 vm_event_set_registers(v, &rsp);
diff --git a/xen/include/xen/p2m-common.h b/xen/include/xen/p2m-common.h
index f0bd9a6b9896..6da330acca1f 100644
--- a/xen/include/xen/p2m-common.h
+++ b/xen/include/xen/p2m-common.h
@@ -25,7 +25,7 @@ int unmap_mmio_regions(struct domain *d,
                        mfn_t mfn);
 
 /* Check to see if vcpu should be switched to a different p2m. */
-void p2m_altp2m_check(struct vcpu *v, uint16_t idx);
+void altp2m_check(struct vcpu *v, uint16_t idx);
 
 /*
  * Populate-on-Demand
-- 
2.34.1



From xen-devel-bounces@lists.xenproject.org Mon Apr 20 21:33:03 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 20 Apr 2026 21:33:03 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1287765.1568183 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wEwEp-0000LC-EP; Mon, 20 Apr 2026 21:33:03 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1287765.1568183; Mon, 20 Apr 2026 21:33: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 1wEwEp-0000Jn-6X; Mon, 20 Apr 2026 21:33:03 +0000
Received: by outflank-mailman (input) for mailman id 1287765;
 Mon, 20 Apr 2026 21:33:02 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <Rose.Spangler@elektrobit.com>) id 1wEwEo-00008s-85
 for xen-devel@lists.xenproject.org; Mon, 20 Apr 2026 21:33:02 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wEwEn-00CD6F-LC
 for xen-devel@lists.xenproject.org; Mon, 20 Apr 2026 23:33:01 +0200
Received: from [10.42.69.2] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <Rose.Spangler@elektrobit.com>)
 id 69e69b6b-2eae-0a2a0a5409dd-0a2a450289b2-48
 for <xen-devel@lists.xenproject.org>; Mon, 20 Apr 2026 23:33:01 +0200
Received: from [52.101.53.79]
 (helo=BL0PR03CU003.outbound.protection.outlook.com)
 by tlsNG-720697.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.1)
 (envelope-from <Rose.Spangler@elektrobit.com>)
 id 69e69b8c-af86-0a2a45020019-3465354f7b1e-3
 for <xen-devel@lists.xenproject.org>; Mon, 20 Apr 2026 23:33:01 +0200
Received: from BN9PR03CA0281.namprd03.prod.outlook.com (2603:10b6:408:f5::16)
 by LV8PR08MB9219.namprd08.prod.outlook.com (2603:10b6:408:1ff::10)
 with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9818.32; Mon, 20 Apr
 2026 21:32:56 +0000
Received: from BN3PEPF0000B070.namprd21.prod.outlook.com
 (2603:10b6:408:f5:cafe::c0) by BN9PR03CA0281.outlook.office365.com
 (2603:10b6:408:f5::16) with Microsoft SMTP Server (version=TLS1_3,
 cipher=TLS_AES_256_GCM_SHA384) id 15.20.9791.48 via Frontend Transport; Mon,
 20 Apr 2026 21:32:55 +0000
Received: from usbth1es003.ebgroup.elektrobit.com (4.79.107.243) by
 BN3PEPF0000B070.mail.protection.outlook.com (10.167.243.75) with Microsoft
 SMTP Server (version=TLS1_3, cipher=TLS_AES_256_GCM_SHA384) id 15.20.9870.4
 via Frontend Transport; Mon, 20 Apr 2026 21:32:55 +0000
Received: from usbth1es003 (localhost [127.0.0.1])
 by usbth1es003.ebgroup.elektrobit.com (Postfix) with SMTP id 4fzzHB4R06z1wdP; 
 Mon, 20 Apr 2026 14:32:54 -0700 (PDT)
Received: from CH4PR07CU001.outbound.protection.outlook.com
 (mail-ch4pr07cu00103.outbound.protection.outlook.com [40.93.20.99])
 (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)
 key-exchange secp384r1 server-signature RSA-PSS (2048 bits) server-digest
 SHA256) (No client certificate requested)
 by usbth1es003.ebgroup.elektrobit.com (Postfix) with ESMTPS;
 Mon, 20 Apr 2026 14:32:54 -0700 (PDT)
Received: from BY1P220CA0039.NAMP220.PROD.OUTLOOK.COM (2603:10b6:a03:59e::7)
 by DM8PR08MB7526.namprd08.prod.outlook.com (2603:10b6:8:9::19) with Microsoft
 SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id
 15.20.9818.32; Mon, 20 Apr 2026 21:32:46 +0000
Received: from SJ1PEPF000026C8.namprd04.prod.outlook.com
 (2603:10b6:a03:59e:cafe::20) by BY1P220CA0039.outlook.office365.com
 (2603:10b6:a03:59e::7) with Microsoft SMTP Server (version=TLS1_3,
 cipher=TLS_AES_256_GCM_SHA384) id 15.20.9791.48 via Frontend Transport; Mon,
 20 Apr 2026 21:32:46 +0000
Received: from denue6es012.ebgroup.elektrobit.com (213.95.148.172) by
 SJ1PEPF000026C8.mail.protection.outlook.com (10.167.244.105) with Microsoft
 SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id
 15.20.9791.48 via Frontend Transport; Mon, 20 Apr 2026 21:32:46 +0000
Received: from ubuntu.localdomain (10.10.178.50) by
 denue6es012.ebgroup.elektrobit.com (10.243.160.140) with Microsoft SMTP
 Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id
 15.2.2562.35; Mon, 20 Apr 2026 23:32:43 +0200
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@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=elektrobit.com header.i="@elektrobit.com" header.h="From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck"; dkim=pass header.s=selector1 header.d=elektrobit.com header.i="@elektrobit.com" header.h="From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck"
ARC-Seal: i=2; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=pass;
 b=ITXgFYmhRlJWMthx+bteFC6wDJlWh5Lce5W/JQu0h7L3x/lrs3bGixjiNu80b7YTvyCXJtCLIi35/XDoB4rc1cbEbz7HHIg+7gwhBnGt4zWY8avqmLcxvvtgsaL+f3njGXi6V2dH8vzXomvfXCYsYUX4DgQAa7UY0b/D/IHWCc/sjQtuKl3snWSBq6OrD1HpnKJyHs6bXpLURC7UNtoAVExQgts/a7eGuwZujIAwPlM4Asz96QbRlXre9OJNqukNLUU7sfBhD6pDyvq3eTHFgqLNSK/hizClwdePYxc0IjWMXTc3ky+EZ3uIuEPhScf876IPR+U3Hvt20nX+ZGTpCg==
ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com;
 s=arcselector10001;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1;
 bh=W3upe/u9EtcR35MDKboxPwogT42enux6AtMfl8vUTCc=;
 b=JXRv3KDvPC+2M25eC7ZTrdWHeE0dciYxgjXC3iq3evWgZAwlSXfc1ov7nEnoPFkzcRp/GteYykoxNAxh1lHbusl/+JLivcQbTvR2jSh67j4QfVOn7Kit/8hW1R3TIOrNsJL1QlTUiosxtrUuCdbChL09rFkjuUqfFzdp5Mxio87jhQhbhSx4uR+7bhH8+dbYZnlB0BngyJvg8N2E9mf9/iJo7fDudyeCnlsOx/5Qv5MzkrEELi6KouP8taxWDjx3APeSn7IOHzm2c4MYge3tNmA7YWDGsTom1T6QWm7N4ve6r0Qq23MK1qnFdEvSufuo4H1TyhGEKOcXwx2M/C5y3w==
ARC-Authentication-Results: i=2; mx.microsoft.com 1; spf=pass (sender ip is
 40.93.20.99) smtp.rcpttodomain=amd.com smtp.mailfrom=elektrobit.com;
 dmarc=pass (p=quarantine sp=none pct=100) action=none
 header.from=elektrobit.com; dkim=pass (signature was verified)
 header.d=elektrobit.com; arc=pass (0 oda=1 ltdi=1
 spf=[1,1,smtp.mailfrom=elektrobit.com]
 dmarc=[1,1,header.from=elektrobit.com])
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=elektrobit.com;
 s=selector1;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck;
 bh=W3upe/u9EtcR35MDKboxPwogT42enux6AtMfl8vUTCc=;
 b=WRcJe3HTC0eKDE+EVpUaR6HOkaLv2epLDLH5L5rx393wZ5ObOEc6LrvwlqBbqe1Oi9IDTkZl3i/2m9VVY9APR7liBI043aexjI5OFGxNdQF8FCc6dcLWMjHxGIaQl5HyKlbgr/hPTztbzcw2pPx5lbYUSdwuOqDUZlbUUaQ0alU=
X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 40.93.20.99)
 smtp.mailfrom=elektrobit.com; dkim=pass (signature was verified)
 header.d=elektrobit.com;dmarc=pass action=none header.from=elektrobit.com;
Received-SPF: Pass (protection.outlook.com: domain of elektrobit.com
 designates 40.93.20.99 as permitted sender) receiver=protection.outlook.com;
 client-ip=40.93.20.99; helo=CH4PR07CU001.outbound.protection.outlook.com;
 pr=C
ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none;
 b=OAX1nxFOYuboaN0C8RWRQXhKY4QYG9Dwd1R3W6PN3Qt8Z3OiFAf4FblTxKBWtC42z5Je2ZK3GgYRg9+3ylw0G13r4Z/4RLMl0xCGdlUjjAUWpUNHfLhAUHjTaxkittpNyIuU20A5AlRfNdBwwujIx9BdtF+78qfyxqv80D2VOGgqI4Z1VOQVsLXUr9PQTjNOER5a1YThPldlfU/v050kvPD59SIZfxQdmTDTyg77C3oqHJvZ+macg9MTu3Uxz1F5hN+m577KgoswVb0AatTqkm+mOTT6pYgRfxIZITyIQrDr8eb2b4keiyPS0RY4YM310fPUY3Dsv9NB2uYLJyWgEw==
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com;
 s=arcselector10001;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1;
 bh=W3upe/u9EtcR35MDKboxPwogT42enux6AtMfl8vUTCc=;
 b=POoprVeFu8yymL1KveJYRQCqR6WwNkQGnU2OkGdgjql45hpsQWIfy0N7UCLNhyePCLO5SJGRcizNwCb2x8U207/LRZrLDUftpb8nvqm6QV1DjlkQPHWJPTTT5rx4InSzVHA1Mi1TpK+IzZv/pDAv3fLyZA9mWnA1IRJ0poQNUTdCJfAvF0S3UEd6yoiAivvnV6UNsUSzZzq+xQTo48Yh7vCRxv3CvMuZIhn52Lv1LZ+N1cPo9Z/E3bzBj6OBeAjwELPthlHnNpuZgJ8MIfkjyRNs2oxKOlXZbcpcBC00SjaKKSV4cNQk12wmT43BTP56cbMFWGwJuTGYGgpGB4QBcw==
ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass (sender ip is
 213.95.148.172) smtp.rcpttodomain=lists.xenproject.org
 smtp.mailfrom=elektrobit.com; dmarc=pass (p=quarantine sp=none pct=100)
 action=none header.from=elektrobit.com; dkim=none (message not signed);
 arc=none (0)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=elektrobit.com;
 s=selector1;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck;
 bh=W3upe/u9EtcR35MDKboxPwogT42enux6AtMfl8vUTCc=;
 b=WRcJe3HTC0eKDE+EVpUaR6HOkaLv2epLDLH5L5rx393wZ5ObOEc6LrvwlqBbqe1Oi9IDTkZl3i/2m9VVY9APR7liBI043aexjI5OFGxNdQF8FCc6dcLWMjHxGIaQl5HyKlbgr/hPTztbzcw2pPx5lbYUSdwuOqDUZlbUUaQ0alU=
X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 213.95.148.172)
 smtp.mailfrom=elektrobit.com; dkim=none (message not signed)
 header.d=none;dmarc=pass action=none header.from=elektrobit.com;
Received-SPF: Pass (protection.outlook.com: domain of elektrobit.com
 designates 213.95.148.172 as permitted sender)
 receiver=protection.outlook.com; client-ip=213.95.148.172;
 helo=denue6es012.ebgroup.elektrobit.com; pr=C
From: Rose Spangler <Rose.Spangler@elektrobit.com>
To: <xen-devel@lists.xenproject.org>
CC: Rose Spangler <Rose.Spangler@elektrobit.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.pau@citrix.com>, Stefano Stabellini <sstabellini@kernel.org>
Subject: [RFC PATCH v6 11/43] arm/altp2m: Add support for HVMOP_altp2m_get_domain_state
Date: Mon, 20 Apr 2026 17:31:34 -0400
Message-ID: <20260420213206.208750-12-Rose.Spangler@elektrobit.com>
X-Mailer: git-send-email 2.34.1
In-Reply-To: <20260420213206.208750-1-Rose.Spangler@elektrobit.com>
References: <20260420213206.208750-1-Rose.Spangler@elektrobit.com>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit
Content-Type: text/plain
X-Originating-IP: [10.10.178.50]
X-ClientProxiedBy: denue6es012.ebgroup.elektrobit.com (10.243.160.140) To
 denue6es012.ebgroup.elektrobit.com (10.243.160.140)
X-EOPAttributedMessage: 1
X-MS-Exchange-SkipListedInternetSender:
 ip=[213.95.148.172];domain=denue6es012.ebgroup.elektrobit.com
X-MS-TrafficTypeDiagnostic:
	SJ1PEPF000026C8:EE_|DM8PR08MB7526:EE_|BN3PEPF0000B070:EE_|LV8PR08MB9219:EE_
X-MS-Office365-Filtering-Correlation-Id: f01228a8-c02c-4955-de26-08de9f2462b1
X-SM-outgoing: yes
X-MS-Exchange-SenderADCheck: 1
X-MS-Exchange-AntiSpam-Relay: 0
X-Microsoft-Antispam-Untrusted:
 BCL:0;ARA:13230040|36860700016|1800799024|376014|82310400026|22082099003|18002099003|56012099003;
X-Microsoft-Antispam-Message-Info-Original:
 =?us-ascii?Q?hYGqKqMyvWU9lXXEFEUiMOUlIHRS4AeuEiuH+DpQGz8IXkeCHI9QOJvGEIwE?=
 =?us-ascii?Q?EhDK5wFmPK/b+LReZPmCy2qc3vZhIoeqoZTp13YV62K6FzwGRbUCogQdBKWn?=
 =?us-ascii?Q?tnpj5i0cQK2S1F2obe0wu3uzSo4knZXDB+Nz9wv79z/HJI8Ed7M0dObJ9k9/?=
 =?us-ascii?Q?4ttZy4D5KX9EUjEP90ALtCnk9KvhRz/Dje7rfom/GRBG7wjhFeSh7uZ641Rs?=
 =?us-ascii?Q?bZy/DMbYSJ1UOxN6WrXR9jYs+PCqwIjx38DGZzqmOyH9cNe0aCYMThTHzghv?=
 =?us-ascii?Q?/SbHjQ3h7bWOMaypFEq6QMSqq/UPHkbloF1aw8zyaX3PdhNjD65HqIfX86qf?=
 =?us-ascii?Q?UAOI5UExm3PqhOceDiq0v07ayZ15i9yYXvPzyoLbNjHfAnzdsTBU3Q7GEVxq?=
 =?us-ascii?Q?8Uc6l/SJgMaggyYiZtF4D818tpCepmPo7KIHU754Vs2QgFgrd3IntdqnDUO0?=
 =?us-ascii?Q?wXUCquwp+4CwgRwhTKjZ8vTioCefPc5X+wcZEXIT+hhEzGfDCpWsyjoOmyUz?=
 =?us-ascii?Q?H8zdIRbDTo+CJaaAcdpx+UeW6eLZ2JniZrSv6eRRCOcZYVwE8AbJwW4OawbV?=
 =?us-ascii?Q?pOnM7H11QwtBKbdj3YRKGvw8KZR9yV/nQX/63P9AuoncPe0hk8tjuAkq0oPX?=
 =?us-ascii?Q?XWPMKT63VYP5LJjXcejVx9rStt7V5028Q9lXu4rfCcEBUccNCXJPlpS32zv2?=
 =?us-ascii?Q?RD/PBSZuya0ZkwQRAwjiNVJ36zdLv0OBWWPKLgW05hLe7NF5lMDjm/ljDrd7?=
 =?us-ascii?Q?xWrMevsg34RninQrDJjJZeJmEmOQy+k/n9v6hQB/7X7iyZAncXW+XSzuUuVO?=
 =?us-ascii?Q?U+OqVLBc+hAFWacHehIu3+D7xvJasRLMg1w5vfUkp7m8YsK5881+WhxvAoGh?=
 =?us-ascii?Q?lNCjnwCAmQQAffTOkP85tMdeYdLQG93JtJdKNVKkP6YQHVHIJXAdqSi0lZ79?=
 =?us-ascii?Q?blgccPE3l8HuyYVmUtHHmOddEHVzf0ZXmz40XVCAWaGB4Hp9x0tKRLOF05M7?=
 =?us-ascii?Q?9m52fNO8YwUzmegtgt15ryAaoG1esV+uX3/lrMg9mJzo2qWjeFz9Way3P5pn?=
 =?us-ascii?Q?9I4BudtO1FYFS765oOTYKfcM0WyXksBpXXT81oYzgEBh7Jfg9sgG9E/si5Bf?=
 =?us-ascii?Q?CjOf69ImrJ15FFpBKGUOujvgjkeNqrkSvKmUnCZRdQOQxhcEx7X0hlJRIgrH?=
 =?us-ascii?Q?3xOJO85Ls8O1uZYHe5WwWEz/ciNCuHLWul4HlJLNef+jkSlQcV/XPpgsbibz?=
 =?us-ascii?Q?+XxuvtlchSU1CsdUl9CCJfVcFOQVM05mbuEfBlyEnA=3D=3D?=
X-Forefront-Antispam-Report-Untrusted:
 CIP:213.95.148.172;CTRY:DE;LANG:en;SCL:1;SRV:;IPV:CAL;SFV:NSPM;H:denue6es012.ebgroup.elektrobit.com;PTR:eth1-fw1-nbg6.eb.noris.de;CAT:NONE;SFS:(13230040)(36860700016)(1800799024)(376014)(82310400026)(22082099003)(18002099003)(56012099003);DIR:OUT;SFP:1102;
X-Exchange-RoutingPolicyChecked:
 SD1M68ce2XIfO93b+ZC3s9e4zpqX2C7v9qjBgvP4XY1lUmpS4ACzMlZNgE2S0dQqI7TEID2YnYyfwJZ2rqTSVg9O5/Mx9PuHq53W7LQYkEKMvLqxu2pevMnoaV6t27EekXhzIxGucttMBnoIw7EDgS02P81Xk9PJLxJVrI881R2mGQKTyA+HL0ibmsnQusBKU1ljtcZ4SJs3IeH0panl5RV+j3tuHZCzwXz8hDkhT3jaYMN63zfFVabJ5h0vL8If9guHN1ODqfq/szedmOYM5oe7XJvcpGyUxo34qoiOsV3amP3F47T70P7r7yag63cx0kUsEHNhRU3e8qqIPsFuhQ==
X-MS-Exchange-Transport-CrossTenantHeadersStamped: DM8PR08MB7526
X-MS-Exchange-SkipListedInternetSender:
 ip=[40.93.20.99];domain=CH4PR07CU001.outbound.protection.outlook.com
X-MS-Exchange-ExternalOriginalInternetSender:
 ip=[40.93.20.99];domain=CH4PR07CU001.outbound.protection.outlook.com
X-MS-Exchange-Transport-CrossTenantHeadersStripped:
 BN3PEPF0000B070.namprd21.prod.outlook.com
X-MS-PublicTrafficType: Email
X-MS-Office365-Filtering-Correlation-Id-Prvs:
	f8ec3c23-5058-4cc6-905f-08de9f245d45
X-Microsoft-Antispam:
	BCL:0;ARA:13230040|376014|14060799003|36860700016|35042699022|156008|82310400026|1800799024|56012099003|22082099003|18002099003;
X-Microsoft-Antispam-Message-Info:
	=?us-ascii?Q?NMMDxcMGKNpoKvc0ufye+b60cuWFafOlpyXikUw72klxvzy3etbUH93PMbWE?=
 =?us-ascii?Q?r6uG4nFEXuQQaLKoa6/FheG5h84nwBWbWKWVPvSAlmvjmYVHziR5fMy+z5FN?=
 =?us-ascii?Q?XNhx2XDHrVjF9wdxeIcplxx+dH+8/O/zXHsiII97q65H9C+i1ar1ijXZ50oh?=
 =?us-ascii?Q?aH7Z93Q0BySHvBUcqHmKojdzIyniozvs6bXgpMSpVTYByVLH4gDKKOSjPjdP?=
 =?us-ascii?Q?sNy42x9Cmcsev4OYkEod+WJjcmMdAHNWD1lHx4PH7e9VFCx2DTAKuKNCt4hv?=
 =?us-ascii?Q?McUlIT6terfvcrgySG2kLPXZ3/4i8+Ngkcqk0Hwv+B3lQgKXPqdQKeqodNhg?=
 =?us-ascii?Q?fdmEZmoKeetwI3TW28qDZRR2GxvE6iEa7pEUA3o+USc6sjwTxdVWJrB5i9c7?=
 =?us-ascii?Q?Fn1CFswLcdoqFNt8Sx/HwTKIl2EBh2BM9eumIdBRLmm8pqu5Iumd99XU3rFO?=
 =?us-ascii?Q?UmT9u9A11kgwmwggOQxwJql73jK1BvJpTCVLRZl9jDMbyQuZanVfLAo5sYOU?=
 =?us-ascii?Q?LwZYN0zgR/yksDPpDJjhRSl8Jmla0A1IA4xTd5ZRS0NWO8tjJWa7Bo0C/AUz?=
 =?us-ascii?Q?8pvcgTAUy+Gu+iyPBpDuRGwQUYGiztnTRHA3korxUYU7YBrnyXu4VtEM8OG5?=
 =?us-ascii?Q?aKHvMYOx3MGdq/MboN8njyO2lea0DL8Dd8g5/l4+PWbjMTkkhge0EZVzq3dC?=
 =?us-ascii?Q?xrTTEXSmB8+WfqDh5MMUjcAroTPGMMwvQTWaaab7z4d9srzyY+J5SSzVQGjj?=
 =?us-ascii?Q?4fSH6NJPz0PMQ5WNHLdFjWunlepM1HXQLSNhd+nciUlhamOxVp3HrwOdJTB6?=
 =?us-ascii?Q?zYczOZosxv1FDQ5ALUbhyVgZr46DldjPhXzhgDez5OCEoDVbOQyhkUBQ0ANK?=
 =?us-ascii?Q?ALP4ZINpdv5cL57Tc99JFaj7p8cwtEceHwHUQwN0WYxY0ikNy+omEGXKHpaT?=
 =?us-ascii?Q?Q/shsI8TG8n6iO7fzClgLsWP4EIagkfgtBwCcxn1wtBqb6XCs8SUtdbPmTL5?=
 =?us-ascii?Q?pzhpFeCh/QLrRPVYmF6sHkVF4YsmohcOz73bIZd/RlTglJ1wYPmd2m4MRhxv?=
 =?us-ascii?Q?T3VKHOu1z23CLye4wBwmbc28MuQ7vTzrD38lpW9EOKRMzAR2vxRhWdT/5YCs?=
 =?us-ascii?Q?M5bl/M8JptbU2F8HY+5X4ieVW2M2tJwDf/3S1EMhm++Xnxpp84Y4wKUnHxv4?=
 =?us-ascii?Q?VuPus2dbUyCGw5nt7DMFyxXpsrhCdl5X5UsfMjxzI7JmXTWwqpU205yWNJyi?=
 =?us-ascii?Q?PdUe9NtUd6fYKBxcs4sNbH1WEaqrc1s0WQFUGO+iwQ=3D=3D?=
X-Forefront-Antispam-Report:
	CIP:4.79.107.243;CTRY:US;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:CH4PR07CU001.outbound.protection.outlook.com;PTR:mail-ch4pr07cu00103.outbound.protection.outlook.com;CAT:NONE;SFS:(13230040)(376014)(14060799003)(36860700016)(35042699022)(156008)(82310400026)(1800799024)(56012099003)(22082099003)(18002099003);DIR:OUT;SFP:1102;
X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1
X-MS-Exchange-AntiSpam-MessageData-0:
	ae0uBpfE2g6Q/BkFzUX+nmd5l+Y22qtfMRMNK8diJGi+pDTyPCe9RZ2um+Rf0I+eILzODBY2ryXO7T63QeyeIoQMFhOUYc3SCZkaLcEK0BIfVtPtWUKD0WcIFbMIGdREhmKWKCQ1FZY8Y9Uj8KSA1zAl5C8XVBzMljmjtwEuXKoTEy7LsqvMO6Y23pSz+wZ6LHx6e1YM5Nr4wOpoDNPVkEXaPc9T7U5EvyA6OaW8fzoityrE/GgpQ3mfPWox5YZqbGSzFk0qwdPTsZqlA565zCEwx9OS2ZWUIS75rdFCEHJ49rnzNzB/6drW1u7o3SXuya0gOtdePeN7m+9K8l/cqla5fcFFtVLdIYTWxzd0l9XPlvKs4Ax2BJBukhvgXWeDvRul3ySFXR79bzRH9DSt0ciDE6ailnO4VrhF65t/1hauHMxFxXBCVwhCq7f221xl
X-OriginatorOrg: elektrobit.com
X-MS-Exchange-CrossTenant-OriginalArrivalTime: 20 Apr 2026 21:32:55.2570
 (UTC)
X-MS-Exchange-CrossTenant-Network-Message-Id: f01228a8-c02c-4955-de26-08de9f2462b1
X-MS-Exchange-CrossTenant-Id: e764c36b-012e-4216-910d-8fd16283182d
X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=e764c36b-012e-4216-910d-8fd16283182d;Ip=[4.79.107.243];Helo=[usbth1es003.ebgroup.elektrobit.com]
X-MS-Exchange-CrossTenant-AuthAs: Internal
X-MS-Exchange-CrossTenant-AuthSource: TreatMessagesAsInternal-BN3PEPF0000B070.namprd21.prod.outlook.com
X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem
X-MS-Exchange-Transport-CrossTenantHeadersStamped: LV8PR08MB9219
X-purgate-ID: tlsNG-720697/1776720781-894CD161-697DBD9B/0/0
X-purgate-type: clean
X-purgate-size: 1215

This commit adds support for the altp2m_get_domain_state HVMOP on ARM. All
code used in the command implementation already works on ARM, so no further
changes beyond moving the #ifdef are necessary.

This is commit 1/1 of the get_domain_state phase.

Signed-off-by: Rose Spangler <Rose.Spangler@elektrobit.com>
---
v6: Introduced this patch.

    This commit can be squashed into the previous commit for the actual
    submission if that would be preferred, but I thought it might be easier
    to understand the command #ifdef gate approach by splitting this into a
    separate patch.
---
 xen/common/altp2m.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/xen/common/altp2m.c b/xen/common/altp2m.c
index 6481fae1ed12..3a3283f0860a 100644
--- a/xen/common/altp2m.c
+++ b/xen/common/altp2m.c
@@ -124,12 +124,12 @@ int do_altp2m_op(
 
     switch ( a.cmd )
     {
-#ifdef CONFIG_X86
     case HVMOP_altp2m_get_domain_state:
         a.u.domain_state.state = altp2m_active(d);
         rc = __copy_to_guest(arg, &a, 1) ? -EFAULT : 0;
         break;
 
+#ifdef CONFIG_X86
     case HVMOP_altp2m_set_domain_state:
     {
         struct vcpu *v;
-- 
2.34.1



From xen-devel-bounces@lists.xenproject.org Mon Apr 20 21:33:08 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 20 Apr 2026 21:33:08 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1287774.1568196 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wEwEu-000175-Cw; Mon, 20 Apr 2026 21:33:08 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1287774.1568196; Mon, 20 Apr 2026 21: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 1wEwEu-00015e-5Q; Mon, 20 Apr 2026 21:33:08 +0000
Received: by outflank-mailman (input) for mailman id 1287774;
 Mon, 20 Apr 2026 21:33:07 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <Rose.Spangler@elektrobit.com>) id 1wEwEs-00010Z-QB
 for xen-devel@lists.xenproject.org; Mon, 20 Apr 2026 21:33:07 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wEwEs-009kg1-6q
 for xen-devel@lists.xenproject.org; Mon, 20 Apr 2026 23:33:06 +0200
Received: from [10.42.69.8] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <Rose.Spangler@elektrobit.com>)
 id 69e69b7b-5cb7-0a2a0a5109dd-0a2a4508a890-12
 for <xen-devel@lists.xenproject.org>; Mon, 20 Apr 2026 23:33:06 +0200
Received: from [52.101.193.139]
 (helo=CH1PR05CU001.outbound.protection.outlook.com)
 by tlsNG-c1860d.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.1)
 (envelope-from <Rose.Spangler@elektrobit.com>)
 id 69e69b90-63b5-0a2a45080019-3465c18bb7b8-3
 for <xen-devel@lists.xenproject.org>; Mon, 20 Apr 2026 23:33:06 +0200
Received: from BN9P221CA0015.NAMP221.PROD.OUTLOOK.COM (2603:10b6:408:10a::20)
 by DM3PR08MB8962.namprd08.prod.outlook.com (2603:10b6:8:1ae::7) with
 Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9818.33; Mon, 20 Apr
 2026 21:33:00 +0000
Received: from BN3PEPF0000B06D.namprd21.prod.outlook.com
 (2603:10b6:408:10a:cafe::89) by BN9P221CA0015.outlook.office365.com
 (2603:10b6:408:10a::20) with Microsoft SMTP Server (version=TLS1_3,
 cipher=TLS_AES_256_GCM_SHA384) id 15.20.9791.48 via Frontend Transport; Mon,
 20 Apr 2026 21:32:59 +0000
Received: from usbth1es003.ebgroup.elektrobit.com (4.79.107.243) by
 BN3PEPF0000B06D.mail.protection.outlook.com (10.167.243.72) with Microsoft
 SMTP Server (version=TLS1_3, cipher=TLS_AES_256_GCM_SHA384) id 15.20.9870.4
 via Frontend Transport; Mon, 20 Apr 2026 21:32:58 +0000
Received: from usbth1es003 (localhost [127.0.0.1])
 by usbth1es003.ebgroup.elektrobit.com (Postfix) with SMTP id 4fzzHG0Z9hz1wdM; 
 Mon, 20 Apr 2026 14:32:58 -0700 (PDT)
Received: from PH0PR07CU006.outbound.protection.outlook.com
 (mail-ph0pr07cu00602.outbound.protection.outlook.com [40.93.23.90])
 (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)
 key-exchange secp384r1 server-signature RSA-PSS (2048 bits) server-digest
 SHA256) (No client certificate requested)
 by usbth1es003.ebgroup.elektrobit.com (Postfix) with ESMTPS;
 Mon, 20 Apr 2026 14:32:57 -0700 (PDT)
Received: from BY1P220CA0042.NAMP220.PROD.OUTLOOK.COM (2603:10b6:a03:59e::17)
 by CH1PR08MB10761.namprd08.prod.outlook.com (2603:10b6:610:2af::19)
 with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9818.33; Mon, 20 Apr
 2026 21:32:51 +0000
Received: from SJ1PEPF000026C8.namprd04.prod.outlook.com
 (2603:10b6:a03:59e:cafe::83) by BY1P220CA0042.outlook.office365.com
 (2603:10b6:a03:59e::17) with Microsoft SMTP Server (version=TLS1_3,
 cipher=TLS_AES_256_GCM_SHA384) id 15.20.9791.48 via Frontend Transport; Mon,
 20 Apr 2026 21:32:48 +0000
Received: from denue6es012.ebgroup.elektrobit.com (213.95.148.172) by
 SJ1PEPF000026C8.mail.protection.outlook.com (10.167.244.105) with Microsoft
 SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id
 15.20.9791.48 via Frontend Transport; Mon, 20 Apr 2026 21:32:47 +0000
Received: from ubuntu.localdomain (10.10.178.50) by
 denue6es012.ebgroup.elektrobit.com (10.243.160.140) with Microsoft SMTP
 Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id
 15.2.2562.35; Mon, 20 Apr 2026 23:32:44 +0200
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@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=elektrobit.com header.i="@elektrobit.com" header.h="From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck"; dkim=pass header.s=selector1 header.d=elektrobit.com header.i="@elektrobit.com" header.h="From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck"
ARC-Seal: i=2; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=pass;
 b=Q/J5nitoav9HDuZxzEMHYvUNe32SVg/BHmnK7EELaCLmdC5+7lqGi4lZuzK6dEDVNg0uYvIVlD3B2K0WJO1rWn1FmliRWS0OhC5vcjlDWL9e3y1cc1f/DKJHTY6GhRrJIdTBFrak0VmBA4YKtUlWKnZ6HOkrNmvwhbMa52voEboIURWKDy33qFMEgqWIaIaukzqJz9hJ6nqcjFe75gFIOaQnD7x74KRBS19X3K4dAXADDDCBMHCxxGBMDLp5GcAgQX37PIAQxWJTti4Iu6SJzrvDNXBkccorPBKxoHEpYoUtsc2lAxCnuCjAvhcS/FwwP2yyxC5GyxDiuE8O0l3i+Q==
ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com;
 s=arcselector10001;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1;
 bh=mIka6cApKr4tHLkM0UcaDmcfawXuEpYHKEShj03nxYM=;
 b=lfq5/+QnkyzF6qyEBT2fQVCut/Omu8cT4vCwxZcvyzgUxuviV7zvEN5EN0Y4NL5EPREaUsMCb2WbIFJQobdil/nC6xxhywyJvyUx9MX/6whWR/U2jpGT00kXEHrJwCErTe6c2FQN1E2k0JyZgsxKk8A1Wbn94oWsN2SE1rtBXW+zDEZ9u+wEZ8XkdYLwpP9kYvUIbRL/u3v2YGJ4lykMtrF7941zc11obYCKML3EwvEISN1Bfcv08sRyJaZHzCwifzoOr++DBvyNg08x2r3fWzbvjHgoryn5VYgNdmwd8xR8SrCw/40Guy05qt9Jq3zFKgqK5bJJtHBaTpNq5K8odQ==
ARC-Authentication-Results: i=2; mx.microsoft.com 1; spf=pass (sender ip is
 40.93.23.90) smtp.rcpttodomain=citrix.com smtp.mailfrom=elektrobit.com;
 dmarc=pass (p=quarantine sp=none pct=100) action=none
 header.from=elektrobit.com; dkim=pass (signature was verified)
 header.d=elektrobit.com; arc=pass (0 oda=1 ltdi=1
 spf=[1,1,smtp.mailfrom=elektrobit.com]
 dmarc=[1,1,header.from=elektrobit.com])
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=elektrobit.com;
 s=selector1;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck;
 bh=mIka6cApKr4tHLkM0UcaDmcfawXuEpYHKEShj03nxYM=;
 b=Z3nlMuPaivMpvv48PfnX9EoFwoPkDdyehzzUW2ayaVOPE2wNd93fhHdTx/F+bl5Fn74e05WLRCctu5OvJ5TTFt3VBNUZhQxbxZ/DCJVLCm7qaN/g9FmWGy0jBCAK74ZDHZ8ZA4WZhs92+h1tEDD7BIWHhmqmOL55fHXG3vyQQdU=
X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 40.93.23.90)
 smtp.mailfrom=elektrobit.com; dkim=pass (signature was verified)
 header.d=elektrobit.com;dmarc=pass action=none header.from=elektrobit.com;
Received-SPF: Pass (protection.outlook.com: domain of elektrobit.com
 designates 40.93.23.90 as permitted sender) receiver=protection.outlook.com;
 client-ip=40.93.23.90; helo=PH0PR07CU006.outbound.protection.outlook.com;
 pr=C
ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none;
 b=C7t64gH9Jd/+4jjkvSOiEECI1ySki1OHofI+WEbYjvniCU39IA68f5MxmhGuhGcyTFpncB6pmk3hpIHIy0B0T5FMcsaRT2FoXfPP81G8NW3jwxhAuF9CY0+1I7J9BZ/fSQ9rtP4nnitnAgKXPgn6UwaGxsoIT9bLLCgL+lgiYeg+pCyWp1G9zKyVW45asgC7GaH8X1sDhmw+zUQCvdABNvHIFuUgL5CeYloIgf+n0wLgRU4BwppZ0+pNIknQj1eRDPoIyFQmH5DOy1uslKS+pRCFP4cqtWWfjYaNyt/06QzMBbjZkeO2cMD9c2ZAutFf0W0b2ETtj9lagMP/7KHZ3Q==
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com;
 s=arcselector10001;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1;
 bh=mIka6cApKr4tHLkM0UcaDmcfawXuEpYHKEShj03nxYM=;
 b=UKtKUAmx4rDpjVDyP+qs3vRU475wexWmUuHoM/MrDnncd7IxYCA/zJ8+4G4lBifq2Liqmp2rEqEF8ABJcPMdb9zTpCkna9vqxQs3gZTlLQ6wge/c6hDhFp0Nc9zNqfRnevwo07lluz4cxrCBHdsnI9LcvyPfPZYghdHMArMCmd69gXuHQ1MNJg5SxIhaqZI7UHaH6TfIO0SUxspIfgiuEEhA1c3hnqg5J2rCsvDWVp77KRYf0pyKQZclbLORV8vrSeRowE9dIVC63B4LS4wizGs6+v9P09m4z0dbde8hDCwgaEXs8Qe92vYYrvSyEoXfCDyUeoIcF/aSkYFXMXr6ng==
ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass (sender ip is
 213.95.148.172) smtp.rcpttodomain=lists.xenproject.org
 smtp.mailfrom=elektrobit.com; dmarc=pass (p=quarantine sp=none pct=100)
 action=none header.from=elektrobit.com; dkim=none (message not signed);
 arc=none (0)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=elektrobit.com;
 s=selector1;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck;
 bh=mIka6cApKr4tHLkM0UcaDmcfawXuEpYHKEShj03nxYM=;
 b=Z3nlMuPaivMpvv48PfnX9EoFwoPkDdyehzzUW2ayaVOPE2wNd93fhHdTx/F+bl5Fn74e05WLRCctu5OvJ5TTFt3VBNUZhQxbxZ/DCJVLCm7qaN/g9FmWGy0jBCAK74ZDHZ8ZA4WZhs92+h1tEDD7BIWHhmqmOL55fHXG3vyQQdU=
X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 213.95.148.172)
 smtp.mailfrom=elektrobit.com; dkim=none (message not signed)
 header.d=none;dmarc=pass action=none header.from=elektrobit.com;
Received-SPF: Pass (protection.outlook.com: domain of elektrobit.com
 designates 213.95.148.172 as permitted sender)
 receiver=protection.outlook.com; client-ip=213.95.148.172;
 helo=denue6es012.ebgroup.elektrobit.com; pr=C
From: Rose Spangler <Rose.Spangler@elektrobit.com>
To: <xen-devel@lists.xenproject.org>
CC: Rose Spangler <Rose.Spangler@elektrobit.com>, Jan Beulich
	<jbeulich@suse.com>, Andrew Cooper <andrew.cooper3@citrix.com>,
	=?UTF-8?q?Roger=20Pau=20Monn=C3=A9?= <roger.pau@citrix.com>, Teddy Astie
	<teddy.astie@vates.tech>
Subject: [RFC PATCH v6 12/43] x86/p2m: Move p2m_{init,free}_one declarations to arch header
Date: Mon, 20 Apr 2026 17:31:35 -0400
Message-ID: <20260420213206.208750-13-Rose.Spangler@elektrobit.com>
X-Mailer: git-send-email 2.34.1
In-Reply-To: <20260420213206.208750-1-Rose.Spangler@elektrobit.com>
References: <20260420213206.208750-1-Rose.Spangler@elektrobit.com>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit
Content-Type: text/plain
X-Originating-IP: [10.10.178.50]
X-ClientProxiedBy: denue6es012.ebgroup.elektrobit.com (10.243.160.140) To
 denue6es012.ebgroup.elektrobit.com (10.243.160.140)
X-EOPAttributedMessage: 1
X-MS-Exchange-SkipListedInternetSender:
 ip=[213.95.148.172];domain=denue6es012.ebgroup.elektrobit.com
X-MS-TrafficTypeDiagnostic:
	SJ1PEPF000026C8:EE_|CH1PR08MB10761:EE_|BN3PEPF0000B06D:EE_|DM3PR08MB8962:EE_
X-MS-Office365-Filtering-Correlation-Id: 71d5a7c2-8541-4dbb-de2e-08de9f2464e6
X-SM-outgoing: yes
X-MS-Exchange-SenderADCheck: 1
X-MS-Exchange-AntiSpam-Relay: 0
X-Microsoft-Antispam-Untrusted:
 BCL:0;ARA:13230040|82310400026|36860700016|376014|1800799024|56012099003|22082099003|18002099003;
X-Microsoft-Antispam-Message-Info-Original:
 =?us-ascii?Q?IQS5Fi1MTdn/z/oySGaFaILPKIpRmzgqU/9wQBAMh1hhNyqKGRwKPDKosSGg?=
 =?us-ascii?Q?ouGa7Wi1+j8iHsbIWsEs8jTNTKxHiNnMbTAlyofPAEcFEvfORw4tFOIIJ2eb?=
 =?us-ascii?Q?oILxirH2M/SkPloC64x0bSy/w+NldKzNTxB/uED2YHhFMxIPtO3oM+/qIgTw?=
 =?us-ascii?Q?0kJmXCYHbTMKCe/Lsor2iKHDmOL2oI45sOnJ9gksfTPlloMhS1nxJUMIOCy6?=
 =?us-ascii?Q?oWk9PPBMsMt8iK1A6QaINdr1xFyKTbAFPz6I2wa0iQIEJnPWgVrpD9uhyr17?=
 =?us-ascii?Q?eAuuSUJyoFZtX7Ka9fraEZPcwl77eOTj40wpxDr5/1IJ0sZySut9JTAz+2o6?=
 =?us-ascii?Q?q4L84JVPC8toKSvWZVZHlMZ+F759YMUCIWX/XZP4fR3v1kQpSMCk56G1Wp8Q?=
 =?us-ascii?Q?WJTOWq9lygqi3tGPvN2ZvD9x/hJAuW1FS1dc9RA3rhbmfSqCIj0xKbPJGBpy?=
 =?us-ascii?Q?XAJsIeIpm8DaSv5wGuM1Tk9AWcX7xVNT1EfFCWrV9n+Cpt/eXvZGLIFNIvk+?=
 =?us-ascii?Q?tw+VTJFd1kkeznIfa8cP3iAgsJvrbPdivB8WsV4el1cqQ/ZeX3cAs/ktwa8S?=
 =?us-ascii?Q?V9Xfoew78DgsmCGwQNfNgS3nAx1iZqhi8qn7x4LUxJy8++hhfi+volXYQZu6?=
 =?us-ascii?Q?4o890y9HQkXPbtkLBa5VZaGz0e6vdKg7oE1OOKsLQvkH48YWe/5jbtLvhR5E?=
 =?us-ascii?Q?LEnKG6tqduT7a8BJmMEcjb36ObkE5QA74PK41eez35Jzo/LjOJ796WxUnp92?=
 =?us-ascii?Q?3jIexpcSlveR4EGkkUgfFE2yPX2NV+Ph3camzWcqC6TVrr34xEz7wbFhE4CM?=
 =?us-ascii?Q?wsY6PmYqEC2Ev+OFZN6T6DVo4nyycqjyni1YtBZ6mKIOZmnkZJJ/2DAZQqFZ?=
 =?us-ascii?Q?+LQTSey+IEvH7ZW2dhKNhmvrMIAbPwAwuKmD4ACODSi91YBdRerFgUN9KIjc?=
 =?us-ascii?Q?RYUxXH3hJpbn2d/R/K0G8KFn/F+JNpIKXhi3nnD+gqzVuwd03PXR5NvtTqhS?=
 =?us-ascii?Q?FNRPDkBHP6B3lYRlB9DpNj6qlqoLIfNpC0NqZ75cNhXOza4J71+HH08xMIQt?=
 =?us-ascii?Q?SD22J3wezl1knMyqBptVKtglHI6CVSwtR8/p8xy5ylbgbmG9AMun6CX2i/eo?=
 =?us-ascii?Q?GUWZoX6jvd9kYMkwWpkkbG2sh7EoghRnoVgUA+7Yyc0dDhP9Q7v7J/rJ1bav?=
 =?us-ascii?Q?zd0gYY4QRDnk6jewkbz0ySLgtatm4zqQRNrxmgm5JgxxVm+LK3oHuTNdAEvG?=
 =?us-ascii?Q?WmvbDDEZt2UI3kLjOXC2Rl2n4AzxJIsQafkqDfDyfg=3D=3D?=
X-Forefront-Antispam-Report-Untrusted:
 CIP:213.95.148.172;CTRY:DE;LANG:en;SCL:1;SRV:;IPV:CAL;SFV:NSPM;H:denue6es012.ebgroup.elektrobit.com;PTR:eth1-fw1-nbg6.eb.noris.de;CAT:NONE;SFS:(13230040)(82310400026)(36860700016)(376014)(1800799024)(56012099003)(22082099003)(18002099003);DIR:OUT;SFP:1102;
X-Exchange-RoutingPolicyChecked:
 iBvILAL9+7/o4Yv1WHDe7PIT5ubTgqC5WzBDYKGc4y5+KSrz5TRBZsY0RcXEQyFGztbVUuwnaLqKAcc3bWegtjhlU4vb3drY1E3AcE3sq6ozhrCbuW+LzOP6lGCBqYXZJptATh9BaH+VX018Gw6AtIpKjfPwvHZ7FBxTvGB8WtJQTrhCK0sqMsDeG3rX36HtLpk57+rYJdG/PnZKPN9zQeUnheufMze8QIrjRkvTOp5UswNRJWbUu1d2nl29viRw4eXdSjgTgXyboCqAsCmF2QvZkEmOA7b03HFUaF7fqiFIt2qBRu7NHO+XLWHO4RG/lry2A7k1eK0TNWylj5+Hqw==
X-MS-Exchange-Transport-CrossTenantHeadersStamped: CH1PR08MB10761
X-MS-Exchange-SkipListedInternetSender:
 ip=[40.93.23.90];domain=PH0PR07CU006.outbound.protection.outlook.com
X-MS-Exchange-ExternalOriginalInternetSender:
 ip=[40.93.23.90];domain=PH0PR07CU006.outbound.protection.outlook.com
X-MS-Exchange-Transport-CrossTenantHeadersStripped:
 BN3PEPF0000B06D.namprd21.prod.outlook.com
X-MS-PublicTrafficType: Email
X-MS-Office365-Filtering-Correlation-Id-Prvs:
	843c7467-a17d-4f0f-baa3-08de9f245e21
X-Microsoft-Antispam:
	BCL:0;ARA:13230040|36860700016|1800799024|376014|14060799003|35042699022|82310400026|156008|56012099003|22082099003|18002099003;
X-Microsoft-Antispam-Message-Info:
	=?us-ascii?Q?3j6vsaEEM7yfLeXDTKOOwW9O48YLL4Jgpz4EOJwjAT+hlGgemcivSzZdvOpx?=
 =?us-ascii?Q?XakTtbUNQ4VM00kbHalz34RbwPahnU8kP+lrRsr5AytBD6orTj78BxEvPhnH?=
 =?us-ascii?Q?XWvZb00IsxiUNv4g0gXgS3lqxf8BwaAf3a2mGABt0MUAS3ELyA90aQYLjQO+?=
 =?us-ascii?Q?S7t4tKS05AVP5t4cYvZbCImON6PhvoSBWKuvezbmkznHIJ/r5Db1T1de9XMk?=
 =?us-ascii?Q?vkCSn7oaSYQgF4tHwqYyPYQ+903D6QvMvwqngBN1pGOyLLJigGgl+eukeM8z?=
 =?us-ascii?Q?IPsCO0Wbn2XqmcHfueY1Q0yT3kIOtQ7srnc5dNZqLGVnCyRdg/FciTdgGKCw?=
 =?us-ascii?Q?cjXFlquvfKKft2UHvvvzLLc6z5Nv2W+6w3MjElcQ49iQYjGLwEmemtSUd0mo?=
 =?us-ascii?Q?3ojQ7oNRMadU+JHr/EW2L0f8y1lEhepe7jsrdoy2DKxJtI+e11eh2NWuaPF+?=
 =?us-ascii?Q?BnwE+Tc/+XI1OQ1fgYYapxs/hqal3DnT9qAmmHxuzkVLh5AecCLHbRwOdzLM?=
 =?us-ascii?Q?mZTuajhWw8thqW0MMEN/ZVDj6IzKATmI2geFXI1FzdsD5/P799c/t/8jZxnx?=
 =?us-ascii?Q?jOni2hK2o851HPJHaggjOd1I6tC6ie4HxmrPYnkFne75iECUkJkL6aaS41Qz?=
 =?us-ascii?Q?BlxqN06OUm0v+ti7ZLs0uMBjKn2FprHOmg8DPELIelJJ+VfCM5s7isIocTE3?=
 =?us-ascii?Q?9nFDGPs0LSU9RXtDfZYOwz4jRMhuMpR4w8F45rsD5muPU0pkCmMa7cd2U363?=
 =?us-ascii?Q?kBMTewwoDmxknN/mR14Hw0htAflg+hxz4eyiL0wKExDWuX+CMFJz1+pDvBiW?=
 =?us-ascii?Q?A+Fca677E45zT5ICyxYsnhMxLl6J2M3QyszzZlMebBdQVR8wKoJ8TDcJEzil?=
 =?us-ascii?Q?4+qJcXSOS0uGPYbPy1rtr3vyUIyFZijjHJvJAOO7VkwlGlqULrRIgLvyQ6o1?=
 =?us-ascii?Q?crUwWwqc9U3qfD550KJ76tkgWI2a6k2UziJ6/7Ik4ercrBp4AHIimZ6/tvX7?=
 =?us-ascii?Q?WbNikhqvWNTxwYRZS7+67wOcPqUYKihuyUunpE83MTtC6CXlFKy0eHT8V2uM?=
 =?us-ascii?Q?W737D4F/SO72Wn6ymxF5w2cKTYma3Sly6sgYlOgHbnM1RNWptouSLx8HrTZ3?=
 =?us-ascii?Q?R5n5MoqDCA74MgxpgtMV5Nnf/GnEZ1cFXmT+yOCgw/0pgOXXP0no8epKUV0F?=
 =?us-ascii?Q?LEEt+gshChCIoS2XDsAs4wWEHeAFSb9dkPdmhCEW5WM2Z063ZszcPr65hHBU?=
 =?us-ascii?Q?qcncJULIagq9hodQTRF8+unGWD8rKL4kO/XpTAlorA=3D=3D?=
X-Forefront-Antispam-Report:
	CIP:4.79.107.243;CTRY:US;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:PH0PR07CU006.outbound.protection.outlook.com;PTR:mail-ph0pr07cu00602.outbound.protection.outlook.com;CAT:NONE;SFS:(13230040)(36860700016)(1800799024)(376014)(14060799003)(35042699022)(82310400026)(156008)(56012099003)(22082099003)(18002099003);DIR:OUT;SFP:1102;
X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1
X-MS-Exchange-AntiSpam-MessageData-0:
	iMkE3LSFCbo/XSN75Gcru/UnJn1LGYXbTZIr9SaoSTnuwsO23mDJLqKc62KnMcZEO0Rej+XZHpXZX9chHLweo2+7bB5gt5DOAYk7j+oTRgrAA1oUupZncb/yctR8S91o4oB5J18Q+PP9Gk64WXaKw8az/rA63+2iiWAMcoT38G/6BLOSBMkCjd2DAcRW0Ma0+kzpAzDGfkeKpPkDA7nABcnWW7r5/9Vfyzp5LzBfVVqCDgkkR3f4QBJC7hmxWKA/VTjt+gfgfFZwBdOlrtepObHAKPNHPBwabvJupWFexVlQGcMHNuo4TSkSkwyn17yekbiRrXC6pL0TmxGiAAj83qAaazXSKHRSt48OM7GJHzu4/SdnREKQ82ur6uWAmkO69ca6IcGfYrWiBWluEvKy+9gQTPWC8ZCgpuJ9vrsbonN8EtETDsIMRfy3b1mQz8we
X-OriginatorOrg: elektrobit.com
X-MS-Exchange-CrossTenant-OriginalArrivalTime: 20 Apr 2026 21:32:58.9668
 (UTC)
X-MS-Exchange-CrossTenant-Network-Message-Id: 71d5a7c2-8541-4dbb-de2e-08de9f2464e6
X-MS-Exchange-CrossTenant-Id: e764c36b-012e-4216-910d-8fd16283182d
X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=e764c36b-012e-4216-910d-8fd16283182d;Ip=[4.79.107.243];Helo=[usbth1es003.ebgroup.elektrobit.com]
X-MS-Exchange-CrossTenant-AuthAs: Internal
X-MS-Exchange-CrossTenant-AuthSource: TreatMessagesAsInternal-BN3PEPF0000B06D.namprd21.prod.outlook.com
X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem
X-MS-Exchange-Transport-CrossTenantHeadersStamped: DM3PR08MB8962
X-purgate-ID: tlsNG-c1860d/1776720786-C0B64DB1-F13593C3/0/0
X-purgate-type: clean
X-purgate-size: 1613

This commit moves the p2m_init_one and p2m_free_one declarations from the
x86-only p2m.h header file to the asm/p2m.h header. This makes it possible
to use these functions in the common altp2m init/teardown routines.

This is commit 1/12 of the altp2m_init/altp2m_teardown routines phase.

Signed-off-by: Rose Spangler <Rose.Spangler@elektrobit.com>
---
v6: Introduced this patch.
---
 xen/arch/x86/include/asm/p2m.h | 3 +++
 xen/arch/x86/mm/p2m.h          | 3 ---
 2 files changed, 3 insertions(+), 3 deletions(-)

diff --git a/xen/arch/x86/include/asm/p2m.h b/xen/arch/x86/include/asm/p2m.h
index 5110b3e77807..ce8eeb751ee9 100644
--- a/xen/arch/x86/include/asm/p2m.h
+++ b/xen/arch/x86/include/asm/p2m.h
@@ -592,6 +592,9 @@ int p2m_alloc_table(struct p2m_domain *p2m);
 void p2m_teardown(struct p2m_domain *p2m, bool remove_root, bool *preempted);
 void p2m_final_teardown(struct domain *d);
 
+struct p2m_domain *p2m_init_one(struct domain *d);
+void p2m_free_one(struct p2m_domain *p2m);
+
 /* Add/remove a page to/from a domain's p2m table. */
 int p2m_add_page(struct domain *d, gfn_t gfn, mfn_t mfn,
                  unsigned int page_order, p2m_type_t t);
diff --git a/xen/arch/x86/mm/p2m.h b/xen/arch/x86/mm/p2m.h
index 64218878067e..be8ed85c2aba 100644
--- a/xen/arch/x86/mm/p2m.h
+++ b/xen/arch/x86/mm/p2m.h
@@ -6,9 +6,6 @@
 #ifndef __ARCH_MM_P2M_H__
 #define __ARCH_MM_P2M_H__
 
-struct p2m_domain *p2m_init_one(struct domain *d);
-void p2m_free_one(struct p2m_domain *p2m);
-
 void p2m_pod_init(struct p2m_domain *p2m);
 
 #ifdef CONFIG_HVM
-- 
2.34.1



From xen-devel-bounces@lists.xenproject.org Mon Apr 20 21:33:13 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 20 Apr 2026 21:33:13 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1287787.1568206 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wEwEz-0001kQ-4H; Mon, 20 Apr 2026 21:33:13 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1287787.1568206; Mon, 20 Apr 2026 21:33: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 1wEwEy-0001iv-P4; Mon, 20 Apr 2026 21:33:12 +0000
Received: by outflank-mailman (input) for mailman id 1287787;
 Mon, 20 Apr 2026 21:33:11 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <Rose.Spangler@elektrobit.com>) id 1wEwEx-0001ae-7x
 for xen-devel@lists.xenproject.org; Mon, 20 Apr 2026 21:33:11 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wEwEw-00CD6F-L0
 for xen-devel@lists.xenproject.org; Mon, 20 Apr 2026 23:33:10 +0200
Received: from [10.42.69.1] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <Rose.Spangler@elektrobit.com>)
 id 69e69b96-2eae-0a2a0a5409dd-0a2a4501cbc2-0
 for <xen-devel@lists.xenproject.org>; Mon, 20 Apr 2026 23:33:10 +0200
Received: from [40.93.201.139]
 (helo=CY3PR05CU001.outbound.protection.outlook.com)
 by tlsNG-d62444.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.1)
 (envelope-from <Rose.Spangler@elektrobit.com>)
 id 69e69b94-c1f2-0a2a45010019-285dc98b06b9-4
 for <xen-devel@lists.xenproject.org>; Mon, 20 Apr 2026 23:33:10 +0200
Received: from SJ0PR05CA0155.namprd05.prod.outlook.com (2603:10b6:a03:339::10)
 by DM3PR08MB9588.namprd08.prod.outlook.com (2603:10b6:0:41::20) with
 Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9818.32; Mon, 20 Apr
 2026 21:33:01 +0000
Received: from SJ1PEPF00001CE0.namprd05.prod.outlook.com
 (2603:10b6:a03:339:cafe::2f) by SJ0PR05CA0155.outlook.office365.com
 (2603:10b6:a03:339::10) with Microsoft SMTP Server (version=TLS1_3,
 cipher=TLS_AES_256_GCM_SHA384) id 15.20.9791.48 via Frontend Transport; Mon,
 20 Apr 2026 21:33:01 +0000
Received: from usbth1es003.ebgroup.elektrobit.com (4.79.107.243) by
 SJ1PEPF00001CE0.mail.protection.outlook.com (10.167.242.8) with Microsoft
 SMTP Server (version=TLS1_3, cipher=TLS_AES_256_GCM_SHA384) id 15.20.9791.48
 via Frontend Transport; Mon, 20 Apr 2026 21:33:01 +0000
Received: from usbth1es003 (localhost [127.0.0.1])
 by usbth1es003.ebgroup.elektrobit.com (Postfix) with SMTP id 4fzzHJ6jZPz1wdM; 
 Mon, 20 Apr 2026 14:33:00 -0700 (PDT)
Received: from CH4PR07CU001.outbound.protection.outlook.com
 (mail-ch4pr07cu00107.outbound.protection.outlook.com [40.93.20.103])
 (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)
 key-exchange secp384r1 server-signature RSA-PSS (2048 bits) server-digest
 SHA256) (No client certificate requested)
 by usbth1es003.ebgroup.elektrobit.com (Postfix) with ESMTPS;
 Mon, 20 Apr 2026 14:33:00 -0700 (PDT)
Received: from BY1P220CA0039.NAMP220.PROD.OUTLOOK.COM (2603:10b6:a03:59e::7)
 by DM4PR08MB8193.namprd08.prod.outlook.com (2603:10b6:8:44::5) with Microsoft
 SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id
 15.20.9818.33; Mon, 20 Apr 2026 21:32:53 +0000
Received: from SJ1PEPF000026C8.namprd04.prod.outlook.com
 (2603:10b6:a03:59e:cafe::cd) by BY1P220CA0039.outlook.office365.com
 (2603:10b6:a03:59e::7) with Microsoft SMTP Server (version=TLS1_3,
 cipher=TLS_AES_256_GCM_SHA384) id 15.20.9791.48 via Frontend Transport; Mon,
 20 Apr 2026 21:32:52 +0000
Received: from denue6es012.ebgroup.elektrobit.com (213.95.148.172) by
 SJ1PEPF000026C8.mail.protection.outlook.com (10.167.244.105) with Microsoft
 SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id
 15.20.9791.48 via Frontend Transport; Mon, 20 Apr 2026 21:32:52 +0000
Received: from ubuntu.localdomain (10.10.178.50) by
 denue6es012.ebgroup.elektrobit.com (10.243.160.140) with Microsoft SMTP
 Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id
 15.2.2562.35; Mon, 20 Apr 2026 23:32:46 +0200
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@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=elektrobit.com header.i="@elektrobit.com" header.h="From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck"; dkim=pass header.s=selector1 header.d=elektrobit.com header.i="@elektrobit.com" header.h="From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck"
ARC-Seal: i=2; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=pass;
 b=PpRXqFT0PWiDZdzF3n3tJGSHvgM2sNeKXJqnHbiwmiI97RZEZ5utXB+24AyFyp9O6gzDIsqMbBknYUHG48GwgJbH1RLNSdHcBoYPqBSzIZFx/NkuY+muT/611mJZsmalfvuMdWolo4rOYrTm1WXI13Snp2JglEY1QqY/nmFdJZHI/Nb86k10+Jg2EXicS7q42EQw8G94SlO1dWYtNc9ezrzgnTkm8Zh0O5Qoour/aVsneY1KsK1auSDkBB98uOoA0Te8VyNHJbQda3ON4IjiDn/stxCw5/LUDDy3etn6LRuQ6QtMSCVvxE/6fhPy8KbQjRLIjtoGS+CjnIpuC2wiqg==
ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com;
 s=arcselector10001;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1;
 bh=Ct7OYHDuserQjrdnXDT2Q3J5e72VZGG2o8HBBgpiIsc=;
 b=DjDwBAX6qYyb7ZFI5SOBuj9C/6tm43CgzniR+lUZJxJQ0omMzdLnWCeFuyeIQuBe7NqJpCfOZ5dIepfpwOOYkyr+e92lROgqhz1BnuGZKesZ9HYjtPbXjNRhguh4Idf3flBv70rDCig3F9tNNlcHeyCb533Yec3ZP3exRKKBa+HM9SxremGzTRLa8gusBV2FHRaCwkNtvFs9qYzRqm978CGCd/W8a98u/NIAhDKrI8n88eR8awFgtgawq9VTBIBsmVI/iRwRM8FP9Kum0lewlic8u3Yi3nvyzy8cNv36/zmNkK6h5dZAuMtwidLakTMqO2fLEAQ4lmTH0EaB3IV4MA==
ARC-Authentication-Results: i=2; mx.microsoft.com 1; spf=pass (sender ip is
 40.93.20.103) smtp.rcpttodomain=citrix.com smtp.mailfrom=elektrobit.com;
 dmarc=pass (p=quarantine sp=none pct=100) action=none
 header.from=elektrobit.com; dkim=pass (signature was verified)
 header.d=elektrobit.com; arc=pass (0 oda=1 ltdi=1
 spf=[1,1,smtp.mailfrom=elektrobit.com]
 dmarc=[1,1,header.from=elektrobit.com])
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=elektrobit.com;
 s=selector1;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck;
 bh=Ct7OYHDuserQjrdnXDT2Q3J5e72VZGG2o8HBBgpiIsc=;
 b=yup9cAILf0EpH+wtp1z5sA7aIKNNcykenfh2egbPAUzo60O53UcUxcxfZJ+JOm60VD7YxEZC9FSvKCYIcdBX7jOeQU33EtenmVB7t99gaxIwq0HGAf+r/pVqZlcBXxYlZ6EqS/9jmaUG0yyxernG8Uyg17ZJfp/CNAF0x/hI37U=
X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 40.93.20.103)
 smtp.mailfrom=elektrobit.com; dkim=pass (signature was verified)
 header.d=elektrobit.com;dmarc=pass action=none header.from=elektrobit.com;
Received-SPF: Pass (protection.outlook.com: domain of elektrobit.com
 designates 40.93.20.103 as permitted sender) receiver=protection.outlook.com;
 client-ip=40.93.20.103; helo=CH4PR07CU001.outbound.protection.outlook.com;
 pr=C
ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none;
 b=Ao0kGYvOXIJejNDVU1prdCUB3I5/aItO563BqCOQ/8SiypJoEMDCvqLvpGMkEF5vXZsdxLcgzESlnOj7uuyt0WBL/9UWjsukJr7wGrhSBqRisO35V2flMm+0Rg4Is7luF5grYutjTlIXzxcenNsHEUJASIf/EsvqrlhIpW3uXVMo/Ik05v9z8MBwegzZ8hnNbBT+411MRojkL5O0fWyiuCw+okZ4POzkcHO73PhX5oSPHss8fUIvkG+HgJCb9HqjsepgHGEBDM83OOge4sQGU3jyHJe+9kPK8/S8I4xDUsmNFxLVSHwVPipVihG3yRHGTgQCmZ2LvSDPyKOQi0+/Yg==
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com;
 s=arcselector10001;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1;
 bh=Ct7OYHDuserQjrdnXDT2Q3J5e72VZGG2o8HBBgpiIsc=;
 b=ZCrnSsdcOxFcJrJ8FEwtHtjjvRUagKLCj4aYqESIolT7oktvveoYIAzP/CGzCZIwyjrTcnXqlCdAlqqoQ2ojqcp6F6xZPC+1O2qwbGrf5pA+/K7ohdwbKMWv0zeMVrYVtCkfL5Sag7sqsZq8NaWz5vHpwGg8d3HjKkuhvdSjNP2kRTJkyUC2dCjo/bdOa/LAzTv/niTqjThZF7XkVRUBXlwpWypZ58MWsKr20vGZVyIWVvRmKOO2lf48cEKTWLWlyJaes4dT3CxMf2a44abGKhQJwuaC4BRISYpa4We7tM5wz31OcIzetRHkuNEc9ssAJOYjVkbQWhjzAxEhtFrfkg==
ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass (sender ip is
 213.95.148.172) smtp.rcpttodomain=lists.xenproject.org
 smtp.mailfrom=elektrobit.com; dmarc=pass (p=quarantine sp=none pct=100)
 action=none header.from=elektrobit.com; dkim=none (message not signed);
 arc=none (0)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=elektrobit.com;
 s=selector1;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck;
 bh=Ct7OYHDuserQjrdnXDT2Q3J5e72VZGG2o8HBBgpiIsc=;
 b=yup9cAILf0EpH+wtp1z5sA7aIKNNcykenfh2egbPAUzo60O53UcUxcxfZJ+JOm60VD7YxEZC9FSvKCYIcdBX7jOeQU33EtenmVB7t99gaxIwq0HGAf+r/pVqZlcBXxYlZ6EqS/9jmaUG0yyxernG8Uyg17ZJfp/CNAF0x/hI37U=
X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 213.95.148.172)
 smtp.mailfrom=elektrobit.com; dkim=none (message not signed)
 header.d=none;dmarc=pass action=none header.from=elektrobit.com;
Received-SPF: Pass (protection.outlook.com: domain of elektrobit.com
 designates 213.95.148.172 as permitted sender)
 receiver=protection.outlook.com; client-ip=213.95.148.172;
 helo=denue6es012.ebgroup.elektrobit.com; pr=C
From: Rose Spangler <Rose.Spangler@elektrobit.com>
To: <xen-devel@lists.xenproject.org>
CC: Rose Spangler <Rose.Spangler@elektrobit.com>, Jan Beulich
	<jbeulich@suse.com>, Andrew Cooper <andrew.cooper3@citrix.com>,
	=?UTF-8?q?Roger=20Pau=20Monn=C3=A9?= <roger.pau@citrix.com>, Teddy Astie
	<teddy.astie@vates.tech>
Subject: [RFC PATCH v6 13/43] x86/altp2m: Add lock functions accessible from common code
Date: Mon, 20 Apr 2026 17:31:36 -0400
Message-ID: <20260420213206.208750-14-Rose.Spangler@elektrobit.com>
X-Mailer: git-send-email 2.34.1
In-Reply-To: <20260420213206.208750-1-Rose.Spangler@elektrobit.com>
References: <20260420213206.208750-1-Rose.Spangler@elektrobit.com>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit
Content-Type: text/plain
X-Originating-IP: [10.10.178.50]
X-ClientProxiedBy: denue6es012.ebgroup.elektrobit.com (10.243.160.140) To
 denue6es012.ebgroup.elektrobit.com (10.243.160.140)
X-EOPAttributedMessage: 1
X-MS-Exchange-SkipListedInternetSender:
 ip=[213.95.148.172];domain=denue6es012.ebgroup.elektrobit.com
X-MS-TrafficTypeDiagnostic:
	SJ1PEPF000026C8:EE_|DM4PR08MB8193:EE_|SJ1PEPF00001CE0:EE_|DM3PR08MB9588:EE_
X-MS-Office365-Filtering-Correlation-Id: ab5465d7-e51c-437d-14c8-08de9f246640
X-SM-outgoing: yes
X-MS-Exchange-SenderADCheck: 1
X-MS-Exchange-AntiSpam-Relay: 0
X-Microsoft-Antispam-Untrusted:
 BCL:0;ARA:13230040|704162011799003|36860700016|1800799024|376014|82310400026|56012099003|22082099003|18002099003;
X-Microsoft-Antispam-Message-Info-Original:
 =?us-ascii?Q?CbHWsaeuMjFyn7TYzylfMC0nfq4sYifiC44WqsOF1tTkic+bICpe6P9toXMr?=
 =?us-ascii?Q?UFxSjmk0zo02wozZl7J4wmoutxcdUYpfNe2bNhdTjg6eZmurSNRIbJCG4rC4?=
 =?us-ascii?Q?Wb78J3xrVU5l8cTP4IbBV5AiCsgEozVq/B4pVJalTvRGlJsJFdTQVqffPO5V?=
 =?us-ascii?Q?GSA7eofEUtOXsyZ5xF5Fh+o9CNzXvpRV2l9C5lBqbP4xeTu+W4krCVyHw1IU?=
 =?us-ascii?Q?beH6QitvaQpVZ0Tal/qQQud7aj+lISiIp8tT6JNJA6mrjcnaP5DDfS5S0wmH?=
 =?us-ascii?Q?o4TQzf/g7QtTUE/LxbvRJuc9rVXia/owBEe+xRyCve0vkSCap6rZrCJHGPA5?=
 =?us-ascii?Q?N5LRvr7KXujlcIRQvpM9sKrX0+VAyFqA8/0jqFFJV+DV1lMv81bU4xrurDvW?=
 =?us-ascii?Q?VNmhrmCRHJPMeA7Qen3QS1thl715OzLnFjGHO+8ifmNTXoLmmdwsKLQm0vL2?=
 =?us-ascii?Q?jJqRb8HlZLyiIi5ykJHCZaLXGzHrsc1cT73jyW9NAnWUdiJbxWkw2URnu4rQ?=
 =?us-ascii?Q?FCYAkXFh5u6FGQebXlGs4/Wt3/9y7FTC6iGPg5aCZ2/5lf0Vuqs1XPTNXVEg?=
 =?us-ascii?Q?veeS4klYDpFgl8vcz9jU/iKOizuu1Wd6qRO3Q9d+nehQ7jSjAZC2rnqWXYJu?=
 =?us-ascii?Q?UO3R+St5mz+vXYfOW1KexaeKyPJBmInOHbZZSgg2V120yrXyPrTj/6vN71Hp?=
 =?us-ascii?Q?jC4fHNYYlnrESkBbqtIEW0SJpC1vAmF7eGEhPcdpsyo7YT6wNH+sb/J5LWnb?=
 =?us-ascii?Q?1p7XaApZbvMoOAu8b4crydkKwaig+qFy07tOt2eJKP9krZIfF7F12h2C/CQw?=
 =?us-ascii?Q?ZEn/QifzJT+K+h1UjFD2QBYrelqkqMWeRtltr+8qZYRljBzqbGVsCvjOxrC+?=
 =?us-ascii?Q?cZthntl5As8v5MLEq/UolHvMD1KLS2IGYvW3STig8iqyvT84KrAdgfMFmCwA?=
 =?us-ascii?Q?qHH1zfJDeIw4ZfsUJSrY7JxXUYrQH9xsWRs4P6CNixtnLUwCM4sX9YALJ2X5?=
 =?us-ascii?Q?z7wBtXeMashJA7nX6NgdHgfS8uSOY113gWXMM7UZ2Dp+R6LXI3kwLehBsVgW?=
 =?us-ascii?Q?wPXExJNaQoM+vB22+B0ejrgNxAy+Wq+MdPsbJsqI1JdLgkGtbJXCtogxyLwG?=
 =?us-ascii?Q?uCax9+HfAgsJGzoCTEXCBIKEHAs0QuJo+w=3D=3D?=
X-Forefront-Antispam-Report-Untrusted:
 CIP:213.95.148.172;CTRY:DE;LANG:en;SCL:1;SRV:;IPV:CAL;SFV:NSPM;H:denue6es012.ebgroup.elektrobit.com;PTR:eth1-fw1-nbg6.eb.noris.de;CAT:NONE;SFS:(13230040)(704162011799003)(36860700016)(1800799024)(376014)(82310400026)(56012099003)(22082099003)(18002099003);DIR:OUT;SFP:1102;
X-Exchange-RoutingPolicyChecked:
 ehTvV/AKzwi6ZAZvy4LHynaagPHX4EXFbb8XA8NHSd0OOk2gEl++reI/41RUC6LT+8RN1z6T6GDyZpWSVsx3Y4M3Ur1HuFUA8y/UWqvTBaAra8mYgb8+N3uDjVXJnl09cABW756WUPzjeMBpDavil5Uz9qLXtB0qXLXPMy77bCM8coFAsjAzimmtUT63NzSzwT7ARxdqM+KhtqsrxLruzrmZIk/oVExfyMZaV+NB40jroVZOKyfYoF2qqFmFtUe2Duv93hty+50Uqaa1uuqPKSqhqVHO4Ufjgj67Qj7tPT0KmJpRvrPsasLYWjpV2WZP9Er263UiTvLsI3LgGGWBeQ==
X-MS-Exchange-Transport-CrossTenantHeadersStamped: DM4PR08MB8193
X-MS-Exchange-SkipListedInternetSender:
 ip=[40.93.20.103];domain=CH4PR07CU001.outbound.protection.outlook.com
X-MS-Exchange-ExternalOriginalInternetSender:
 ip=[40.93.20.103];domain=CH4PR07CU001.outbound.protection.outlook.com
X-MS-Exchange-Transport-CrossTenantHeadersStripped:
 SJ1PEPF00001CE0.namprd05.prod.outlook.com
X-MS-PublicTrafficType: Email
X-MS-Office365-Filtering-Correlation-Id-Prvs:
	a087eb88-432b-494a-ea89-08de9f246114
X-Microsoft-Antispam:
	BCL:0;ARA:13230040|704162011799003|36860700016|14060799003|82310400026|376014|35042699022|156008|1800799024|56012099003|22082099003|18002099003;
X-Microsoft-Antispam-Message-Info:
	=?us-ascii?Q?Y7L5L1uEN7da83eylS4hP+hz2iyE9JQUD5zm5OJnz2DfMJUoDQYCu4gl8eAW?=
 =?us-ascii?Q?/MS9MIZplo1dt7Hxj0TWc0rfQL0FT2gaVqB6BDMcsnuOUN7/RmzFVcDXfUOS?=
 =?us-ascii?Q?ziDBrclDQgjakHMltSaSGC0zJqp9Pj2uaWG16Lu4VnDW8Bk8GC5XsAj1yvB5?=
 =?us-ascii?Q?b7ziVRNoj0VGpIDIb7B/BTq3Rs0N8znc2kfSp/zU/ybr11vKAyM7Ee2v6LOl?=
 =?us-ascii?Q?ivj96V/Ik5e03PVklYVOE+yW9f6XVs+bXY0U7H9fU/8VMc5RTc36jK1L1Rj5?=
 =?us-ascii?Q?nssKPFDltw01g5SiQmx3Qrnl8T9afwqAsYZNc/KUIXRj86gvtb/lxDcRSwZw?=
 =?us-ascii?Q?sHbXunOnCHXagfaJkn6xTOu3KoJavP7HnpP5/m4IqgRcJ8+Qfp//iAaCmCqk?=
 =?us-ascii?Q?E+zAWlu22s3JAVArJIxlKtcZ0ztjyerOJj9kBoHAGyXnFl4RPhrdHQ+3cvJE?=
 =?us-ascii?Q?VP0XZU96k3tuwtAM1PWdhiTmvl2ovWmyiqyhjaPmbtxZ/egwQE2QuB3atuRW?=
 =?us-ascii?Q?0r7VwhyLrc8LptcgJS30PyXH/uCVFTwQp11lmRBRrhAYpKEIAR2NGNUtd1hg?=
 =?us-ascii?Q?QN21LNH5aLgjYkzZXaSas+/0zSwtHNKWBgZicd5fLAWoKTfuKBnhJo0GpwiB?=
 =?us-ascii?Q?b8W0yv/cq1joMyWp92VIvv6z9UhJLkbyF8MQk9uT4WJhicydCo+meNlFtzgO?=
 =?us-ascii?Q?ZkULfOGljRM4khKzmChreFIAMmVCLvqerNxHQdErVAjOebl0edWDwbdinv7H?=
 =?us-ascii?Q?ROzOFbfJRBVq4+CFRod2pUuCm4Q1DtTnRc6X/6Zz5vO84XZZ3RCQtT5pCiVt?=
 =?us-ascii?Q?d7KEePGCCkLiy2cdMQvzttAi8cmRTv3n1jHhAjI8yYIMVnQ9QOjiLB4bC5Vy?=
 =?us-ascii?Q?xCBVW3YajX7RBHs0C7NrSu+iZqeTWl9bppNZFIuJUEYyZH+XXQGtZcHUW0QI?=
 =?us-ascii?Q?W6KZ/4UTOQ/auIC6Y235z2VvjcqU0nhuSrbUC+jQW//x1/xBW04PBD/Qw8iY?=
 =?us-ascii?Q?ynOSq584ihc73gDsDWTS/EqFNRVT4Co94e50RAYh8hvzeBznJbdM37lPo+5G?=
 =?us-ascii?Q?rwF79bjCp8A3O7ccGGSr/OIYW6N2fQsf+zZMuMkvoJ4aUqqak5GWrV0wVzG+?=
 =?us-ascii?Q?gMJFItdccfYD55OaU+zcsiXSj9CGrPUNog=3D=3D?=
X-Forefront-Antispam-Report:
	CIP:4.79.107.243;CTRY:US;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:CH4PR07CU001.outbound.protection.outlook.com;PTR:mail-ch4pr07cu00107.outbound.protection.outlook.com;CAT:NONE;SFS:(13230040)(704162011799003)(36860700016)(14060799003)(82310400026)(376014)(35042699022)(156008)(1800799024)(56012099003)(22082099003)(18002099003);DIR:OUT;SFP:1102;
X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1
X-MS-Exchange-AntiSpam-MessageData-0:
	Jx5Ffm19SI+vyxU1BNRtqCnpOeoKQcy9sD9oLma7K7LBYo+TzAO/Sk65rryYAkHfUJjpmpDI6VzkFjGk8HDsla9WdLtBXC15qKhtz3tMZ5KZub1JyuKKQSh++JWpReLR+4nsk8qG8I/UtDg/b+T7g0OhzCnV1bEe0fKNwDi76JUNUQYcjHMG2zFsweetYZ3R35CEwDEVdC6F9reJxRANGySq3RvLXvqyiWEkWTxGewTjV+TNU12qOrSjov5waWNZe/KJgewBPlzrkVuUgyhKzdYRKulWr0GibmQfoV9D/H6QpcAUz0t4S1y2RG2Wo3cFeTmzt1iPM/3lJZb9GD2Ppkd5ZfXXSjqJwBmjhBwvLVGqKeHn0myWy7R12GI7Wf098MPJ1oX2ZzQlkinkZG+bHQTJHDCiknf1uR6An2rlBDC8OXdxhHXZSkMLZJerU3q4
X-OriginatorOrg: elektrobit.com
X-MS-Exchange-CrossTenant-OriginalArrivalTime: 20 Apr 2026 21:33:01.3929
 (UTC)
X-MS-Exchange-CrossTenant-Network-Message-Id: ab5465d7-e51c-437d-14c8-08de9f246640
X-MS-Exchange-CrossTenant-Id: e764c36b-012e-4216-910d-8fd16283182d
X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=e764c36b-012e-4216-910d-8fd16283182d;Ip=[4.79.107.243];Helo=[usbth1es003.ebgroup.elektrobit.com]
X-MS-Exchange-CrossTenant-AuthAs: Internal
X-MS-Exchange-CrossTenant-AuthSource: TreatMessagesAsInternal-SJ1PEPF00001CE0.namprd05.prod.outlook.com
X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem
X-MS-Exchange-Transport-CrossTenantHeadersStamped: DM3PR08MB9588
X-purgate-ID: tlsNG-d62444/1776720790-BEC7CFF4-766920CD/0/0
X-purgate-type: clean
X-purgate-size: 6429

This commit adds three altp2m_lock functions which wrap the corresponding
altp2m_list_lock functions present in "mm-locks.h". The "mm-locks.h" file
is only accessible in x86 code. In order to make altp2m common across
architectures, it must be possible to acquire the altp2m lock without
including an x86-specific header file.

These functions cannot be static inline like their "mm-locks.h"
counterparts, since "mm-locks.h" is only included in source files, not
header files. Therefore, these functions might introduce a slight function
call overhead over their "mm-locks.h" counterparts. However, the altp2m
lock is mostly used in init/teardown routines and HVMOP implementations.
For these cases, the altp2m_list_lock functions have been switched out for
the altp2m_lock functions so they can be later migrated to common code. The
only other function using the altp2m lock is altp2m_get_or_propagate, which
is in the hot path of the page fault handler, so the altp2m_list_lock calls
have not been replaced for that function.

This is commit 2/12 of the altp2m_init/altp2m_teardown routines phase.

Signed-off-by: Rose Spangler <Rose.Spangler@elektrobit.com>
---
v6: Introduced this patch.

    This seems like the solution which makes the most sense here, but it
    would be nicer if it could be static inline. I'm also not sure if the
    "mm-locks.h" functions are really supposed to be exposed outside of
    their translation unit like this, so feedback on this is appreciated.
---
 xen/arch/x86/include/asm/altp2m.h |  4 +++
 xen/arch/x86/mm/altp2m.c          | 42 ++++++++++++++++++++-----------
 2 files changed, 31 insertions(+), 15 deletions(-)

diff --git a/xen/arch/x86/include/asm/altp2m.h b/xen/arch/x86/include/asm/altp2m.h
index 9c58a396448d..7cff40beb7c6 100644
--- a/xen/arch/x86/include/asm/altp2m.h
+++ b/xen/arch/x86/include/asm/altp2m.h
@@ -156,6 +156,10 @@ int p2m_set_suppress_ve_multi(struct domain *d,
 int p2m_get_suppress_ve(struct domain *d, gfn_t gfn, bool *suppress_ve,
                         unsigned int altp2m_idx);
 
+void altp2m_lock_init(struct domain *d);
+void altp2m_lock(struct domain *d);
+void altp2m_unlock(struct domain *d);
+
 #else
 
 static inline bool altp2m_is_eptp_valid(const struct domain *d,
diff --git a/xen/arch/x86/mm/altp2m.c b/xen/arch/x86/mm/altp2m.c
index 2dc84b76b8c1..371bf3f0b8d4 100644
--- a/xen/arch/x86/mm/altp2m.c
+++ b/xen/arch/x86/mm/altp2m.c
@@ -129,7 +129,7 @@ int altp2m_init(struct domain *d)
     struct p2m_domain *p2m;
     struct p2m_domain *hostp2m = p2m_get_hostp2m(d);
 
-    mm_lock_init(&d->arch.altp2m_list_lock);
+    altp2m_lock_init(d);
     d->altp2m_p2m = xvzalloc_array(struct p2m_domain *, d->nr_altp2m);
 
     if ( !d->altp2m_p2m )
@@ -221,7 +221,7 @@ bool altp2m_switch_vcpu_by_id(struct vcpu *v, unsigned int idx)
     if ( idx >= d->nr_altp2m )
         return rc;
 
-    altp2m_list_lock(d);
+    altp2m_lock(d);
 
     if ( d->arch.altp2m_eptp[idx] != mfn_x(INVALID_MFN) )
     {
@@ -230,7 +230,7 @@ bool altp2m_switch_vcpu_by_id(struct vcpu *v, unsigned int idx)
         rc = 1;
     }
 
-    altp2m_list_unlock(d);
+    altp2m_unlock(d);
     return rc;
 }
 
@@ -348,7 +348,7 @@ void altp2m_flush(struct domain *d)
 {
     unsigned int i;
 
-    altp2m_list_lock(d);
+    altp2m_lock(d);
 
     for ( i = 0; i < d->nr_altp2m; i++ )
     {
@@ -357,7 +357,7 @@ void altp2m_flush(struct domain *d)
         d->arch.altp2m_visible_eptp[i] = mfn_x(INVALID_MFN);
     }
 
-    altp2m_list_unlock(d);
+    altp2m_unlock(d);
 }
 
 static int altp2m_activate_altp2m(struct domain *d, unsigned int idx,
@@ -409,13 +409,13 @@ int altp2m_init_by_id(struct domain *d, unsigned int idx)
     if ( idx >= d->nr_altp2m )
         return rc;
 
-    altp2m_list_lock(d);
+    altp2m_lock(d);
 
     if ( d->arch.altp2m_eptp[array_index_nospec(idx, MAX_EPTP)] ==
          mfn_x(INVALID_MFN) )
         rc = altp2m_activate_altp2m(d, idx, hostp2m->default_access);
 
-    altp2m_list_unlock(d);
+    altp2m_unlock(d);
     return rc;
 }
 
@@ -431,7 +431,7 @@ int altp2m_init_next_available(struct domain *d, uint16_t *idx,
          !xenmem_access_to_p2m_access(hostp2m, hvmmem_default_access, &a) )
         return rc;
 
-    altp2m_list_lock(d);
+    altp2m_lock(d);
 
     for ( i = 0; i < d->nr_altp2m; i++ )
     {
@@ -446,7 +446,7 @@ int altp2m_init_next_available(struct domain *d, uint16_t *idx,
         break;
     }
 
-    altp2m_list_unlock(d);
+    altp2m_unlock(d);
     return rc;
 }
 
@@ -463,7 +463,7 @@ int altp2m_destroy_by_id(struct domain *d, unsigned int idx)
         return rc;
 
     rc = -EBUSY;
-    altp2m_list_lock(d);
+    altp2m_lock(d);
 
     if ( d->arch.altp2m_eptp[array_index_nospec(idx, MAX_EPTP)] !=
          mfn_x(INVALID_MFN) )
@@ -481,7 +481,7 @@ int altp2m_destroy_by_id(struct domain *d, unsigned int idx)
         }
     }
 
-    altp2m_list_unlock(d);
+    altp2m_unlock(d);
 
     domain_unpause_except_self(d);
 
@@ -501,7 +501,7 @@ int altp2m_switch_domain_altp2m_by_id(struct domain *d, unsigned int idx)
         return rc;
 
     rc = -EINVAL;
-    altp2m_list_lock(d);
+    altp2m_lock(d);
 
     if ( d->arch.altp2m_visible_eptp[idx] != mfn_x(INVALID_MFN) )
     {
@@ -512,7 +512,7 @@ int altp2m_switch_domain_altp2m_by_id(struct domain *d, unsigned int idx)
         rc = 0;
     }
 
-    altp2m_list_unlock(d);
+    altp2m_unlock(d);
 
     domain_unpause_except_self(d);
 
@@ -773,7 +773,7 @@ int altp2m_set_view_visibility(struct domain *d, unsigned int altp2m_idx,
 {
     int rc = 0;
 
-    altp2m_list_lock(d);
+    altp2m_lock(d);
 
     if ( !altp2m_is_eptp_valid(d, altp2m_idx) )
         rc = -EINVAL;
@@ -784,11 +784,23 @@ int altp2m_set_view_visibility(struct domain *d, unsigned int altp2m_idx,
         d->arch.altp2m_visible_eptp[array_index_nospec(altp2m_idx, MAX_EPTP)] =
             mfn_x(INVALID_MFN);
 
-    altp2m_list_unlock(d);
+    altp2m_unlock(d);
 
     return rc;
 }
 
+void altp2m_lock_init(struct domain *d) {
+    mm_lock_init(&d->arch.altp2m_list_lock);
+}
+
+void altp2m_lock(struct domain *d) {
+    altp2m_list_lock(d);
+}
+
+void altp2m_unlock(struct domain *d) {
+    altp2m_list_unlock(d);
+}
+
 /*
  * Local variables:
  * mode: C
-- 
2.34.1



From xen-devel-bounces@lists.xenproject.org Mon Apr 20 21:33:14 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 20 Apr 2026 21:33:14 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1287791.1568212 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wEwF0-000237-Er; Mon, 20 Apr 2026 21:33:14 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1287791.1568212; Mon, 20 Apr 2026 21:33: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 1wEwF0-00021X-93; Mon, 20 Apr 2026 21:33:14 +0000
Received: by outflank-mailman (input) for mailman id 1287791;
 Mon, 20 Apr 2026 21:33:13 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <Rose.Spangler@elektrobit.com>) id 1wEwEz-0001lE-8i
 for xen-devel@lists.xenproject.org; Mon, 20 Apr 2026 21:33:13 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wEwEy-00CCKM-LR
 for xen-devel@lists.xenproject.org; Mon, 20 Apr 2026 23:33:12 +0200
Received: from [10.42.69.9] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <Rose.Spangler@elektrobit.com>)
 id 69e69b8d-bab6-0a2a0a5309dd-0a2a4509a2f2-26
 for <xen-devel@lists.xenproject.org>; Mon, 20 Apr 2026 23:33:12 +0200
Received: from [52.101.48.116]
 (helo=MW6PR02CU001.outbound.protection.outlook.com)
 by tlsNG-bad1c0.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.1)
 (envelope-from <Rose.Spangler@elektrobit.com>)
 id 69e69b93-2497-0a2a45090019-346530748c9b-3
 for <xen-devel@lists.xenproject.org>; Mon, 20 Apr 2026 23:33:12 +0200
Received: from CH2PR08CA0020.namprd08.prod.outlook.com (2603:10b6:610:5a::30)
 by SA1PR08MB8462.namprd08.prod.outlook.com (2603:10b6:806:333::12)
 with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9818.32; Mon, 20 Apr
 2026 21:33:02 +0000
Received: from CH2PEPF00000142.namprd02.prod.outlook.com
 (2603:10b6:610:5a:cafe::a) by CH2PR08CA0020.outlook.office365.com
 (2603:10b6:610:5a::30) with Microsoft SMTP Server (version=TLS1_3,
 cipher=TLS_AES_256_GCM_SHA384) id 15.20.9723.25 via Frontend Transport; Mon,
 20 Apr 2026 21:33:02 +0000
Received: from usbth1es003.ebgroup.elektrobit.com (4.79.107.243) by
 CH2PEPF00000142.mail.protection.outlook.com (10.167.244.75) with Microsoft
 SMTP Server (version=TLS1_3, cipher=TLS_AES_256_GCM_SHA384) id 15.20.9791.48
 via Frontend Transport; Mon, 20 Apr 2026 21:33:01 +0000
Received: from usbth1es003 (localhost [127.0.0.1])
 by usbth1es003.ebgroup.elektrobit.com (Postfix) with SMTP id 4fzzHH5Clhz1wdS; 
 Mon, 20 Apr 2026 14:32:59 -0700 (PDT)
Received: from DM2PR0701CU001.outbound.protection.outlook.com
 (mail-dm2pr0701cu00101.outbound.protection.outlook.com [40.93.13.65])
 (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)
 key-exchange secp384r1 server-signature RSA-PSS (2048 bits) server-digest
 SHA256) (No client certificate requested)
 by usbth1es003.ebgroup.elektrobit.com (Postfix) with ESMTPS;
 Mon, 20 Apr 2026 14:32:59 -0700 (PDT)
Received: from BY1P220CA0041.NAMP220.PROD.OUTLOOK.COM (2603:10b6:a03:59e::13)
 by DS1PR08MB10296.namprd08.prod.outlook.com (2603:10b6:8:210::8) with
 Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9818.32; Mon, 20 Apr
 2026 21:32:54 +0000
Received: from SJ1PEPF000026C8.namprd04.prod.outlook.com
 (2603:10b6:a03:59e:cafe::f5) by BY1P220CA0041.outlook.office365.com
 (2603:10b6:a03:59e::13) with Microsoft SMTP Server (version=TLS1_3,
 cipher=TLS_AES_256_GCM_SHA384) id 15.20.9791.48 via Frontend Transport; Mon,
 20 Apr 2026 21:32:54 +0000
Received: from denue6es012.ebgroup.elektrobit.com (213.95.148.172) by
 SJ1PEPF000026C8.mail.protection.outlook.com (10.167.244.105) with Microsoft
 SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id
 15.20.9791.48 via Frontend Transport; Mon, 20 Apr 2026 21:32:53 +0000
Received: from ubuntu.localdomain (10.10.178.50) by
 denue6es012.ebgroup.elektrobit.com (10.243.160.140) with Microsoft SMTP
 Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id
 15.2.2562.35; Mon, 20 Apr 2026 23:32:47 +0200
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@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=elektrobit.com header.i="@elektrobit.com" header.h="From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck"; dkim=pass header.s=selector1 header.d=elektrobit.com header.i="@elektrobit.com" header.h="From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck"
ARC-Seal: i=2; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=pass;
 b=DXi8w8JtA1/UjAPCKOBHjxBPSOfMEav/Sm6pbCT6Uz3kqhMD8VwwNLG44r26W2+pVVdsRIhu/hLGDjTNG3DHDRxPKqBTY+yzQUnRgGOKaEkvHqNc5fz3wNdDX/DLtWgKlAzLS0k6L6VYW/oHsQoaRguX2PJ0pZVJz1Mq3EUFy2Po9lDswNUJPDvYhZ/niJfLI2oSWqxsWZjfOgmFY0DEPERxK3v1QWGueCug63lgH8wmvucejzPxTKjfARUd56CKfbsR5sUjRNXEX2U+6ixrFw3wVD+FpNW4zNPJqLqyJoS2DME2hGY4pjWigxxXLlh0Wpi9PqRpWGa5Gw57JjwoUg==
ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com;
 s=arcselector10001;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1;
 bh=P99iOPiPAd4fedD5w4a0EUrWRqEzpWZn2WgFGdQXXEw=;
 b=R91QUje5IKiODbKhudRV+ZX1CR/kyIQedQTnqt2grFOp80M+S083GBdH5MtpO6HSEGeIrEe+FTh+/vI1aKhWZL8NhAR5PGRzWpfLk9fCQMcmx2YH3SOc7CerWxTXEKrUvCRX2FK7pwiPJSgwzsDoIT7kXVdyoBsGpZke/FtjIZusLQMmDMb/Jtfy5enKcrLwGp7Tro3zrJihx3hePmDCSdWV7ZgcRnfIzFS4Y5Gb+owlRJoocRpY/2PrPgCgJ7obob9MA31ZVz28WjPfpFxaPYf4SSuwHhUJmLBXwmwMjolFBMW3fRfb3CRXBUguBoNDDwXVGsZAZu+K6j47DH2HCA==
ARC-Authentication-Results: i=2; mx.microsoft.com 1; spf=pass (sender ip is
 40.93.13.65) smtp.rcpttodomain=amd.com smtp.mailfrom=elektrobit.com;
 dmarc=pass (p=quarantine sp=none pct=100) action=none
 header.from=elektrobit.com; dkim=pass (signature was verified)
 header.d=elektrobit.com; arc=pass (0 oda=1 ltdi=1
 spf=[1,1,smtp.mailfrom=elektrobit.com]
 dmarc=[1,1,header.from=elektrobit.com])
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=elektrobit.com;
 s=selector1;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck;
 bh=P99iOPiPAd4fedD5w4a0EUrWRqEzpWZn2WgFGdQXXEw=;
 b=zDvnIWYRcO60k+JI4n9+8Ky1EhdlQhkEbfnzu3TxZ1NxbWb9FFGKZFOdza4Y8CnuvDvLfG9me6vbReRWrklbKgw2EQAINKZ0GhZY547z22jVhG+7ZqRnFv3M0T5bcepCARpEdJyvG/3XkfCMRgcdRLt00O6i2omkTPUN0VL9lMA=
X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 40.93.13.65)
 smtp.mailfrom=elektrobit.com; dkim=pass (signature was verified)
 header.d=elektrobit.com;dmarc=pass action=none header.from=elektrobit.com;
Received-SPF: Pass (protection.outlook.com: domain of elektrobit.com
 designates 40.93.13.65 as permitted sender) receiver=protection.outlook.com;
 client-ip=40.93.13.65; helo=DM2PR0701CU001.outbound.protection.outlook.com;
 pr=C
ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none;
 b=DSiXJcOpfDw1FzpLTz4sHnIW4qpIUKkoZaNqLTEFrO5hKfqfQ/wF6cqPpyZcmyy3EFthPYhu0zirfliPOrw8Bt2ckEui/A0S3B/MWg58Pibi6co04jLOV/SnVYXCD811nQRkvuzPyCZmzojzP+zynNM5AeRi4zYF/ySVA+cOZOl9tp2sQLP92OL6wPOqfuROymrNRiOBZIi0ELOPAlBpeFHH5jZOW0J3cIrNhHVf5YOEFBe3ygrurAG8xIbrRDXyvuRWWvNyIgrcNca89aitXk36DqC30DelsYunYiTO4Hk6FoJ1ngxq+3jGEUvd18s3jCDUAd1gKw5L2w6VX9Uttw==
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com;
 s=arcselector10001;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1;
 bh=P99iOPiPAd4fedD5w4a0EUrWRqEzpWZn2WgFGdQXXEw=;
 b=WjTVpnS5dWhWWOG/f+sk1AySX0LpfpPHQ/Whfi0GxnimYbs+SoLWAzLCxoViUlJ4bDzyMF6ri3/uWBZJxZLZ8ivG/zGi/HFVz2JAsogHu/uPpSK9xftc6rvnPBukfubHHMOtVIgWfQ8bFeeSbtTHhdLUV0uI/qOTbgfYajVocIEkl2kHvL45zL1GNcO0vKrqSLLvjJDJ3iZhHvuLkfT6IQ2wKszWVcvR5KQl+yC4IA8H7PaBun89CoX6y1+X15sX/mgkVsSbx94pHIJAnejhAnUi+FOKCc4VfwI/CuRd3yWcIzBl0yMiN1FKvCRNDVcYqMv6LCHOCrZ9blMSCztPKQ==
ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass (sender ip is
 213.95.148.172) smtp.rcpttodomain=lists.xenproject.org
 smtp.mailfrom=elektrobit.com; dmarc=pass (p=quarantine sp=none pct=100)
 action=none header.from=elektrobit.com; dkim=none (message not signed);
 arc=none (0)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=elektrobit.com;
 s=selector1;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck;
 bh=P99iOPiPAd4fedD5w4a0EUrWRqEzpWZn2WgFGdQXXEw=;
 b=zDvnIWYRcO60k+JI4n9+8Ky1EhdlQhkEbfnzu3TxZ1NxbWb9FFGKZFOdza4Y8CnuvDvLfG9me6vbReRWrklbKgw2EQAINKZ0GhZY547z22jVhG+7ZqRnFv3M0T5bcepCARpEdJyvG/3XkfCMRgcdRLt00O6i2omkTPUN0VL9lMA=
X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 213.95.148.172)
 smtp.mailfrom=elektrobit.com; dkim=none (message not signed)
 header.d=none;dmarc=pass action=none header.from=elektrobit.com;
Received-SPF: Pass (protection.outlook.com: domain of elektrobit.com
 designates 213.95.148.172 as permitted sender)
 receiver=protection.outlook.com; client-ip=213.95.148.172;
 helo=denue6es012.ebgroup.elektrobit.com; pr=C
From: Rose Spangler <Rose.Spangler@elektrobit.com>
To: <xen-devel@lists.xenproject.org>
CC: Rose Spangler <Rose.Spangler@elektrobit.com>, Jan Beulich
	<jbeulich@suse.com>, Andrew Cooper <andrew.cooper3@citrix.com>,
	=?UTF-8?q?Roger=20Pau=20Monn=C3=A9?= <roger.pau@citrix.com>, 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: [RFC PATCH v6 14/43] altp2m: Move altp2m_{init,teardown} to common code
Date: Mon, 20 Apr 2026 17:31:37 -0400
Message-ID: <20260420213206.208750-15-Rose.Spangler@elektrobit.com>
X-Mailer: git-send-email 2.34.1
In-Reply-To: <20260420213206.208750-1-Rose.Spangler@elektrobit.com>
References: <20260420213206.208750-1-Rose.Spangler@elektrobit.com>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit
Content-Type: text/plain
X-Originating-IP: [10.10.178.50]
X-ClientProxiedBy: denue6es012.ebgroup.elektrobit.com (10.243.160.140) To
 denue6es012.ebgroup.elektrobit.com (10.243.160.140)
X-EOPAttributedMessage: 1
X-MS-Exchange-SkipListedInternetSender:
 ip=[213.95.148.172];domain=denue6es012.ebgroup.elektrobit.com
X-MS-TrafficTypeDiagnostic:
	SJ1PEPF000026C8:EE_|DS1PR08MB10296:EE_|CH2PEPF00000142:EE_|SA1PR08MB8462:EE_
X-MS-Office365-Filtering-Correlation-Id: 775eae46-7aa2-4336-4a48-08de9f246637
X-SM-outgoing: yes
X-MS-Exchange-SenderADCheck: 1
X-MS-Exchange-AntiSpam-Relay: 0
X-Microsoft-Antispam-Untrusted:
 BCL:0;ARA:13230040|704160111799003|376014|36860700016|82310400026|1800799024|56012099003|22082099003|18002099003;
X-Microsoft-Antispam-Message-Info-Original:
 =?us-ascii?Q?ydLle/DngJVlCJWXemHLpJT7SXGPisLNWsP7w198j8k+zCHraTmHRE6Q5yGx?=
 =?us-ascii?Q?1nSDkWTFhXZt0SDt8qiEqXuRoCq0QXtOebHvPycvBFVAgjTuMXdBqaQ0kA4w?=
 =?us-ascii?Q?6fxV7QMFqyXjxBvb+VTVNZ+4oLOqKU4bboFk5kEi+fT3To1Qx4l5EI7b9lyS?=
 =?us-ascii?Q?oQpmQeagr54BqFvPOnBcrZR45q2m+062NNVP8WFijHai/G2HihrSbkIGJVpE?=
 =?us-ascii?Q?oAuXM3dNb94jC/7qNOHD5QulS6f9CWRipkmDCDAOJmoWlJUe1kGWJxgm6MW4?=
 =?us-ascii?Q?AJdlfx31CAmL3KxY9bw6DQpNW3E8lWj23hXTiRgFUxAWF2Pa2rwcugVyeI41?=
 =?us-ascii?Q?ZDjcbGWS2haSbWac47y2wHRYGQj4h7Z2E2JJli8WwlUgjb0gDZAn0INDMDzs?=
 =?us-ascii?Q?jYjZNE/HZ3W8DJKpoZPh/XzkIf5CB0XYp0E7SqKx6JhYGxNrruhp6h4Yqz9m?=
 =?us-ascii?Q?AhSlpbpuGvCR0dE8C6Uk60WfwfZHuiSlexoIgyIQgp9klXvhMM4IrnR/RHAL?=
 =?us-ascii?Q?jHofh0RN6eLXuMTmGHTwqb3/xQOeBxcOZTkF07gi6fQOg7Aa2H9Q4+v6w3HG?=
 =?us-ascii?Q?rJvDommYKn5PNawQ1So2ipHGPiIV5Wzr7nRdidvPXDTuUVX/HernJI7Wv6iH?=
 =?us-ascii?Q?0ZQJUl4THdwjrZEiie1ktcQAeZ0yEpyeaQy1O+4WNgZFBcjSyWaCAJexd2q7?=
 =?us-ascii?Q?XiNx4xmauoWi++3L0AhPfoxLqaDzDY01Y0jKUWVZjZ5Ke1PEZI1r9zIsS7zr?=
 =?us-ascii?Q?otOot1Um5jvff2He9wjsaTePjPY2AAqBV2OL4eojp5IJswMX9azYxPIHvqnN?=
 =?us-ascii?Q?KubvSTk/aD8TDCTtw728uPRLFnXSiw+dYkepTZCjuN/qGHuO4eh4t2tUF6wG?=
 =?us-ascii?Q?RJS429W2Qe/uB0C6C1TahhGjjeNe1u5U1QL9JTtKknwfWH6VnVyzsvCo8uV2?=
 =?us-ascii?Q?H4IonFoj7TCbJGsin73f/a+DAKTVZfINKcuHQIUNBYyxUqzkyxII774+Sy3C?=
 =?us-ascii?Q?k13tnuGvZneyy9akp86WphJXt3L7+uE+IjKepHV1OzNoD/LdyFW6KF7Qxs/H?=
 =?us-ascii?Q?136j2Kpw0V8CQjed6x30WVH6p3WHXLqR6nsmj/CVTJPPHrTJA9eOB7u4iTpE?=
 =?us-ascii?Q?+5xANuhMqSiJxuISM6lvwA/cU6CaUZdDSTl42s5CFQInOABlhEx9WfOl6bAh?=
 =?us-ascii?Q?n1Hw++zwXp8cotJP2YiEKoB9VjVJhiDqR1jHwQ=3D=3D?=
X-Forefront-Antispam-Report-Untrusted:
 CIP:213.95.148.172;CTRY:DE;LANG:en;SCL:1;SRV:;IPV:CAL;SFV:NSPM;H:denue6es012.ebgroup.elektrobit.com;PTR:eth1-fw1-nbg6.eb.noris.de;CAT:NONE;SFS:(13230040)(704160111799003)(376014)(36860700016)(82310400026)(1800799024)(56012099003)(22082099003)(18002099003);DIR:OUT;SFP:1102;
X-Exchange-RoutingPolicyChecked:
 DozY4J7wYvjpzEPJQq7pDR6DjiujHCf/SuJj0RgAPhj0zxTvfvYE9IIZ/9RUddLkdyQBopCJDbEyG+C0lzuu32G5Z8WfLH03GLeP9DRw1eB/TZF8o6hB17xtUsKpj/+qpoe/nMmF/+KIj6TBiIyg7f324Mdu392Cz6Fzx+O32JjAdkxA1X2uJM7i9t4ATFSZijCfyHkRivyynih88ZLwBd8FnzMeAUPz4fDt9qqJQd+b5h66Jw3EjjjqHoGW7LEZParK3VE+cgfT9mJF6bTBIL14RhN4CWLOabIgswwS9/yg6FqCHWJHK/EklGDnRg0NdZFqfdMt+BLzERxpK15YJA==
X-MS-Exchange-Transport-CrossTenantHeadersStamped: DS1PR08MB10296
X-MS-Exchange-SkipListedInternetSender:
 ip=[40.93.13.65];domain=DM2PR0701CU001.outbound.protection.outlook.com
X-MS-Exchange-ExternalOriginalInternetSender:
 ip=[40.93.13.65];domain=DM2PR0701CU001.outbound.protection.outlook.com
X-MS-Exchange-Transport-CrossTenantHeadersStripped:
 CH2PEPF00000142.namprd02.prod.outlook.com
X-MS-PublicTrafficType: Email
X-MS-Office365-Filtering-Correlation-Id-Prvs:
	26f8f81b-9a1a-4de0-8c1e-08de9f2461b4
X-Microsoft-Antispam:
	BCL:0;ARA:13230040|704160111799003|36860700016|1800799024|376014|14060799003|35042699022|82310400026|156008|22082099003|18002099003|56012099003;
X-Microsoft-Antispam-Message-Info:
	=?us-ascii?Q?JiUHzSCm+1nFCBD9SeiFCo5NLpl1eXpROE/nIPM5eBtRTudbnSanEiWkbb4i?=
 =?us-ascii?Q?wBGFfoxyAhWilruQplxWoIRX82SIwEWp8/USWYaJsa3/Vt6RnTnjiEdhll/F?=
 =?us-ascii?Q?dzksZ8eaK/s7Zyo0hwAM6NLJYpJKPx3uW3+hvaBF4Dkn1Qf/giB2Z6YXnLTm?=
 =?us-ascii?Q?x3U/HTiD8BOoHbe9E6pFHK9j/mLMV2qgeqVYl/K9beHdNiAHhnnvFoAcQjKq?=
 =?us-ascii?Q?Xj3XNNohk9jYmYroTlM0X+AJZkod8AFYoGtaLyvrpgryfFrojZJTgOv0ODEn?=
 =?us-ascii?Q?EtBS4TrDXuLwNENtPQ8tAbFbd8yJBl58U7hD83avyB/vjS83E5p7SInuxec7?=
 =?us-ascii?Q?796ENudf2QaEJkafqDTGeyftEA9Da/o3GnxX5VRLarVt/y2zq8adBc+hmmNf?=
 =?us-ascii?Q?gI12MaTIfjtGGqwgJ5JRhG2A00ZivVM+9osSWLHt8rZhQ7BISU6Y8D2V3X6Q?=
 =?us-ascii?Q?AHe3qEJk5WHCtJ2n2FGwqJfk7QvD+oFW5qCzJc6bfhCCMEJhq+UvmJzdPlO3?=
 =?us-ascii?Q?phYg/1TXw2xv8UYDDhpt0dkMIzAzPoMlJUGIn1JvRKDPkRUzpk5+UweBplqW?=
 =?us-ascii?Q?dbw3gRqV86/aZ52UD7IpwuaTTE9T4yTF/Q1/PPl5RPI/XyeBR/HPBCWXpW96?=
 =?us-ascii?Q?1HWh9hnVqQ8rhNePm3IKnTtpGANHIbig1cZEog8brfSdddVH2+NOK3kwg2Z8?=
 =?us-ascii?Q?NGqth1ASCXckeMPYThP6bAmjLq6Ouqi3V55G35ZPmmQeZYzHQKcgzDAc08Ch?=
 =?us-ascii?Q?YY++Suo0XEajT7StXKvmRbYZQ7IiDGjNkHlIqw4XeGyzXzV3IPb4jQxJycMQ?=
 =?us-ascii?Q?EKttAyucvxW5weimsQy2vM0t8smz1c+CxKjxBCkQq3DaJrikTvkfvC7c1ipz?=
 =?us-ascii?Q?cT0OHhS4TXy++NEohlEB76N9zTF+zReV8vJb4Kx64/hAJUr5Sv7kQtMwPlGO?=
 =?us-ascii?Q?iroxCrZVGs9g0+CYb+blTAEj/ePyse2vN21yC0xF2M1pOsm7YpTQQmPl5qfS?=
 =?us-ascii?Q?N/nTQUeNbqMAc6cy6L1n9SEzFegmz1mKZ0Src5qM5xTXXE61xrjpo036cMcq?=
 =?us-ascii?Q?19RZanifgvEdi040a4pSVoun+MSfwnIB3NhQwQQu4TVeWADLnjpNBt96SIEz?=
 =?us-ascii?Q?VC5b1yqwQvUalMe7Ve6Vj1S5ffbNHD0A+Okf06N8O/O7sXH1K1QMmk+ROL3s?=
 =?us-ascii?Q?Z0PJK/U2h1OOWr8OGo6Tdm66NY4fAe7Rn5s0dw=3D=3D?=
X-Forefront-Antispam-Report:
	CIP:4.79.107.243;CTRY:US;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:DM2PR0701CU001.outbound.protection.outlook.com;PTR:mail-dm2pr0701cu00101.outbound.protection.outlook.com;CAT:NONE;SFS:(13230040)(704160111799003)(36860700016)(1800799024)(376014)(14060799003)(35042699022)(82310400026)(156008)(22082099003)(18002099003)(56012099003);DIR:OUT;SFP:1102;
X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1
X-MS-Exchange-AntiSpam-MessageData-0:
	90/LjN55f+Qu5C/E8M7Y+gAqBE13cPpBENMHhKlugIec77MMAWh1FG0aozTMI18SBxbnKWofCCwmZKEGM9kuF/91HLmjhdEUEaZw+HWiChBLjLfw/phr+bubn6wBFpZeEX9DvWNAOKh4MJVG+c+qTJANmk8t+QRoCOa0SYHGve/dzVMqV0pymV3jFjbU8T6dNRkMnQs0xwOxw2H+qMBnBePW/89NE/tOW3TxV5jzHCP1o/GyGLqpXXgUDeQESA0RAp4HgfZBSN/25h4stqAuYdGIRvLxhD+nj4uue3sms2DQ6Ubd26H5vPc1/K45Dhh0TI9tRk6fPNbfMhCV25R8Y+3PP95iiT0hP64lIs5owrRsCWE2kycwm2aAfm2Pyg0ty5G+dmlFchpnpcAWl6oM6K9nOOYZYSwPJ0Lpu4fw3qdOSdg1zXqA5dWRka0SCxeb
X-OriginatorOrg: elektrobit.com
X-MS-Exchange-CrossTenant-OriginalArrivalTime: 20 Apr 2026 21:33:01.1773
 (UTC)
X-MS-Exchange-CrossTenant-Network-Message-Id: 775eae46-7aa2-4336-4a48-08de9f246637
X-MS-Exchange-CrossTenant-Id: e764c36b-012e-4216-910d-8fd16283182d
X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=e764c36b-012e-4216-910d-8fd16283182d;Ip=[4.79.107.243];Helo=[usbth1es003.ebgroup.elektrobit.com]
X-MS-Exchange-CrossTenant-AuthAs: Internal
X-MS-Exchange-CrossTenant-AuthSource: TreatMessagesAsInternal-CH2PEPF00000142.namprd02.prod.outlook.com
X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem
X-MS-Exchange-Transport-CrossTenantHeadersStamped: SA1PR08MB8462
X-purgate-ID: tlsNG-bad1c0/1776720792-93D7FA53-59FB3A63/0/0
X-purgate-type: clean
X-purgate-size: 5997

This commit moves the init and teardown routines into common code. The
functions are gated by CONFIG_X86, so there is effectively no difference
despite common code normally being compiled for ARM.

This commit contains only renames/code movement, and no functional change is intended.

This is commit 3/12 of the altp2m_init/altp2m_teardown routines phase.

Signed-off-by: Rose Spangler <Rose.Spangler@elektrobit.com>
---
v6: Introduced this patch.
---
 xen/arch/x86/include/asm/altp2m.h |  8 -----
 xen/arch/x86/mm/altp2m.c          | 45 ----------------------------
 xen/arch/x86/mm/p2m-basic.c       |  1 +
 xen/common/altp2m.c               | 49 +++++++++++++++++++++++++++++++
 xen/include/xen/altp2m.h          | 13 ++++++++
 5 files changed, 63 insertions(+), 53 deletions(-)

diff --git a/xen/arch/x86/include/asm/altp2m.h b/xen/arch/x86/include/asm/altp2m.h
index 7cff40beb7c6..13017525a62f 100644
--- a/xen/arch/x86/include/asm/altp2m.h
+++ b/xen/arch/x86/include/asm/altp2m.h
@@ -97,12 +97,6 @@ static inline bool altp2m_set_altp2m(struct vcpu *v, unsigned int idx)
     return true;
 }
 
-/* Initialize altp2m views */
-int altp2m_init(struct domain *d);
-
-/* Free altp2m views */
-void altp2m_teardown(struct domain *d);
-
 /* Switch alternate p2m for a single vcpu */
 bool altp2m_switch_vcpu_by_id(struct vcpu *v, unsigned int idx);
 
@@ -184,8 +178,6 @@ static inline int _altp2m_get_effective_entry(struct p2m_domain *ap2m,
         _altp2m_get_effective_entry(ap2m, gfn, mfn, t, a)
 
 /* Only declaration is needed. DCE will optimise it out when linking. */
-int altp2m_init(struct domain *d);
-void altp2m_teardown(struct domain *d);
 struct p2m_domain *altp2m_get_altp2m(struct vcpu *v);
 bool altp2m_set_altp2m(struct vcpu *v, unsigned int idx);
 uint16_t altp2m_vcpu_idx(const struct vcpu *v);
diff --git a/xen/arch/x86/mm/altp2m.c b/xen/arch/x86/mm/altp2m.c
index 371bf3f0b8d4..46374373848d 100644
--- a/xen/arch/x86/mm/altp2m.c
+++ b/xen/arch/x86/mm/altp2m.c
@@ -123,51 +123,6 @@ void altp2m_vcpu_disable_ve(struct vcpu *v)
     }
 }
 
-int altp2m_init(struct domain *d)
-{
-    unsigned int i;
-    struct p2m_domain *p2m;
-    struct p2m_domain *hostp2m = p2m_get_hostp2m(d);
-
-    altp2m_lock_init(d);
-    d->altp2m_p2m = xvzalloc_array(struct p2m_domain *, d->nr_altp2m);
-
-    if ( !d->altp2m_p2m )
-        return -ENOMEM;
-
-    for ( i = 0; i < d->nr_altp2m; i++ )
-    {
-        d->altp2m_p2m[i] = p2m = p2m_init_one(d);
-        if ( p2m == NULL )
-        {
-            altp2m_teardown(d);
-            return -ENOMEM;
-        }
-        p2m->p2m_class = p2m_alternate;
-        p2m->access_required = hostp2m->access_required;
-        _atomic_set(&p2m->active_vcpus, 0);
-    }
-
-    return 0;
-}
-
-void altp2m_teardown(struct domain *d)
-{
-    unsigned int i;
-    struct p2m_domain *p2m;
-
-    for ( i = 0; i < d->nr_altp2m; i++ )
-    {
-        if ( !d->altp2m_p2m[i] )
-            continue;
-        p2m = d->altp2m_p2m[i];
-        d->altp2m_p2m[i] = NULL;
-        p2m_free_one(p2m);
-    }
-
-    XVFREE(d->altp2m_p2m);
-}
-
 int altp2m_get_effective_entry(struct p2m_domain *ap2m, gfn_t gfn, mfn_t *mfn,
                                p2m_type_t *t, p2m_access_t *a,
                                bool prepopulate)
diff --git a/xen/arch/x86/mm/p2m-basic.c b/xen/arch/x86/mm/p2m-basic.c
index 433e7d08b78f..67cef5d2b6ef 100644
--- a/xen/arch/x86/mm/p2m-basic.c
+++ b/xen/arch/x86/mm/p2m-basic.c
@@ -11,6 +11,7 @@
  * Parts based on earlier work by Michael A Fetterman, Ian Pratt et al.
  */
 
+#include <xen/altp2m.h>
 #include <xen/event.h>
 #include <xen/types.h>
 #include <asm/altp2m.h>
diff --git a/xen/common/altp2m.c b/xen/common/altp2m.c
index 3a3283f0860a..cda653b713f0 100644
--- a/xen/common/altp2m.c
+++ b/xen/common/altp2m.c
@@ -2,8 +2,10 @@
 #include <xen/altp2m.h>
 #include <xen/guest_access.h>
 #include <xen/vm_event.h>
+#include <xen/xvmalloc.h>
 
 #include <asm/altp2m.h>
+#include <asm/p2m.h>
 
 #include <public/hvm/params.h>
 
@@ -13,6 +15,53 @@
 #include <asm/hvm/nestedhvm.h>
 #endif
 
+#if CONFIG_X86
+int altp2m_init(struct domain *d)
+{
+    unsigned int i;
+    struct p2m_domain *p2m;
+    struct p2m_domain *hostp2m = p2m_get_hostp2m(d);
+
+    altp2m_lock_init(d);
+    d->altp2m_p2m = xvzalloc_array(struct p2m_domain *, d->nr_altp2m);
+
+    if ( !d->altp2m_p2m )
+        return -ENOMEM;
+
+    for ( i = 0; i < d->nr_altp2m; i++ )
+    {
+        d->altp2m_p2m[i] = p2m = p2m_init_one(d);
+        if ( p2m == NULL )
+        {
+            altp2m_teardown(d);
+            return -ENOMEM;
+        }
+        p2m->p2m_class = p2m_alternate;
+        p2m->access_required = hostp2m->access_required;
+        _atomic_set(&p2m->active_vcpus, 0);
+    }
+
+    return 0;
+}
+
+void altp2m_teardown(struct domain *d)
+{
+    unsigned int i;
+    struct p2m_domain *p2m;
+
+    for ( i = 0; i < d->nr_altp2m; i++ )
+    {
+        if ( !d->altp2m_p2m[i] )
+            continue;
+        p2m = d->altp2m_p2m[i];
+        d->altp2m_p2m[i] = NULL;
+        p2m_free_one(p2m);
+    }
+
+    XVFREE(d->altp2m_p2m);
+}
+#endif /* CONFIG_X86 */
+
 /*
  * altp2m operations are envisioned as being used in several different
  * modes:
diff --git a/xen/include/xen/altp2m.h b/xen/include/xen/altp2m.h
index be627152668a..85ef22c2b29e 100644
--- a/xen/include/xen/altp2m.h
+++ b/xen/include/xen/altp2m.h
@@ -8,6 +8,19 @@
 
 #include <public/hvm/hvm_op.h>
 
+/*
+ * Common alternate p2m declarations that need to be visible
+ * regardless of CONFIG_ALTP2M
+ */
+
+#ifdef CONFIG_X86
+/* Initialize altp2m views */
+int altp2m_init(struct domain *d);
+
+/* Free altp2m views */
+void altp2m_teardown(struct domain *d);
+#endif
+
 #ifdef CONFIG_ALTP2M
 
 /* Alternate p2m HVM on/off per domain */
-- 
2.34.1



From xen-devel-bounces@lists.xenproject.org Mon Apr 20 21:33:16 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 20 Apr 2026 21:33:16 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1287793.1568220 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wEwF2-0002U4-HZ; Mon, 20 Apr 2026 21:33:16 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1287793.1568220; Mon, 20 Apr 2026 21:33: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 1wEwF2-0002Td-5b; Mon, 20 Apr 2026 21:33:16 +0000
Received: by outflank-mailman (input) for mailman id 1287793;
 Mon, 20 Apr 2026 21:33:14 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <Rose.Spangler@elektrobit.com>) id 1wEwEz-0001uU-Nt
 for xen-devel@lists.xenproject.org; Mon, 20 Apr 2026 21:33:13 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wEwEz-0054Hn-4x
 for xen-devel@lists.xenproject.org; Mon, 20 Apr 2026 23:33:13 +0200
Received: from [10.42.69.12] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <Rose.Spangler@elektrobit.com>)
 id 69e69b34-5cb7-0a2a0a5109dd-0a2a450c9236-40
 for <xen-devel@lists.xenproject.org>; Mon, 20 Apr 2026 23:33:13 +0200
Received: from [40.93.201.80]
 (helo=CY3PR05CU001.outbound.protection.outlook.com)
 by tlsNG-d25034.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.1)
 (envelope-from <Rose.Spangler@elektrobit.com>)
 id 69e69b97-62f1-0a2a450c0019-285dc950253f-3
 for <xen-devel@lists.xenproject.org>; Mon, 20 Apr 2026 23:33:12 +0200
Received: from SJ0PR03CA0038.namprd03.prod.outlook.com (2603:10b6:a03:33e::13)
 by DS0PR08MB11092.namprd08.prod.outlook.com (2603:10b6:8:301::7) with
 Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9818.30; Mon, 20 Apr
 2026 21:33:07 +0000
Received: from CO1PEPF00012E7E.namprd03.prod.outlook.com
 (2603:10b6:a03:33e:cafe::cd) by SJ0PR03CA0038.outlook.office365.com
 (2603:10b6:a03:33e::13) with Microsoft SMTP Server (version=TLS1_3,
 cipher=TLS_AES_256_GCM_SHA384) id 15.20.9791.48 via Frontend Transport; Mon,
 20 Apr 2026 21:33:06 +0000
Received: from usbth1es003.ebgroup.elektrobit.com (4.79.107.243) by
 CO1PEPF00012E7E.mail.protection.outlook.com (10.167.249.53) with Microsoft
 SMTP Server (version=TLS1_3, cipher=TLS_AES_256_GCM_SHA384) id 15.20.9791.48
 via Frontend Transport; Mon, 20 Apr 2026 21:33:06 +0000
Received: from usbth1es003 (localhost [127.0.0.1])
 by usbth1es003.ebgroup.elektrobit.com (Postfix) with SMTP id 4fzzHQ2fmgz1wdV; 
 Mon, 20 Apr 2026 14:33:06 -0700 (PDT)
Received: from BL0PR07CU001.outbound.protection.outlook.com
 (mail-bl0pr07cu00104.outbound.protection.outlook.com [40.93.4.4])
 (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)
 key-exchange secp384r1 server-signature RSA-PSS (2048 bits) server-digest
 SHA256) (No client certificate requested)
 by usbth1es003.ebgroup.elektrobit.com (Postfix) with ESMTPS;
 Mon, 20 Apr 2026 14:33:05 -0700 (PDT)
Received: from BY1P220CA0047.NAMP220.PROD.OUTLOOK.COM (2603:10b6:a03:59e::9)
 by BLAPR08MB6852.namprd08.prod.outlook.com (2603:10b6:208:331::14) with
 Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9818.32; Mon, 20 Apr
 2026 21:33:02 +0000
Received: from SJ1PEPF000026C8.namprd04.prod.outlook.com
 (2603:10b6:a03:59e:cafe::c6) by BY1P220CA0047.outlook.office365.com
 (2603:10b6:a03:59e::9) with Microsoft SMTP Server (version=TLS1_3,
 cipher=TLS_AES_256_GCM_SHA384) id 15.20.9791.48 via Frontend Transport; Mon,
 20 Apr 2026 21:33:02 +0000
Received: from denue6es012.ebgroup.elektrobit.com (213.95.148.172) by
 SJ1PEPF000026C8.mail.protection.outlook.com (10.167.244.105) with Microsoft
 SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id
 15.20.9791.48 via Frontend Transport; Mon, 20 Apr 2026 21:33:02 +0000
Received: from ubuntu.localdomain (10.10.178.50) by
 denue6es012.ebgroup.elektrobit.com (10.243.160.140) with Microsoft SMTP
 Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id
 15.2.2562.35; Mon, 20 Apr 2026 23:32:56 +0200
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@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=elektrobit.com header.i="@elektrobit.com" header.h="From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck"; dkim=pass header.s=selector1 header.d=elektrobit.com header.i="@elektrobit.com" header.h="From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck"
ARC-Seal: i=2; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=pass;
 b=MlNWI5nNE3RE6aKNHeg/geAHl/M/5+jk0szZEvpHN/4IBg9VhgjGj51PjooPA7smhynqT5OL0SIBFY1r/V4KZtxWCcT2Kp9Hnagwp8LnaLZD3eFU25NvAWKmE90Y+OndLPtH+n6KDE7yKScVCUYnC5hc9a6Da/IM6rJ5VBWq/9108ZOjcfE/kSuauPHI9S5bmMANWLxW4LuVA1pWyP5JyftbK03KK42/xVDnw0WW2i5h3fa2COj1k0eL4A1hHqUyd/ekaPju6Qd92B7SvMq4LyWMtKRQwVTcouAz36nHTeerIiim6p/+8ZiRfLns/LgwsMNmA3Ifuul1+YtZXPhTWA==
ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com;
 s=arcselector10001;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1;
 bh=ZHidNjasS/JOgBnj6tsz69bwCge0ojtPt0VVEzO0kMs=;
 b=Jw9lXaRLkg+1af7OOooanJO5wZVFgf2qHFqeFZeBXX+doLNv3NV+qdphEJXi8KldzQpejlU7AoHaElTjwk+Jfr7037eI5efZDecdtpUhBIg1ndMkOCAUpMaNuqT7Fwzz1ZgJdfbrYj3rQksf8Doy71ux5vUASflrGL1/jIxSocxPZiH+rErVT7EAy9MFgHlEUmsk8ViSsVi131WwuOqslSR1smMouJM+NIV22zvasr9XR0/NR46HqIDp+iSL5c8xiIpAPAAoxJ46bj+Xbgml3KNdOIi1wRFYL8JroCGkbnsk5z+ZOIxcxaRxitFIOYyVHMa9hFaJH7PaFhEjrP7xZA==
ARC-Authentication-Results: i=2; mx.microsoft.com 1; spf=pass (sender ip is
 40.93.4.4) smtp.rcpttodomain=amd.com smtp.mailfrom=elektrobit.com; dmarc=pass
 (p=quarantine sp=none pct=100) action=none header.from=elektrobit.com;
 dkim=pass (signature was verified) header.d=elektrobit.com; arc=pass (0 oda=1
 ltdi=1 spf=[1,1,smtp.mailfrom=elektrobit.com]
 dmarc=[1,1,header.from=elektrobit.com])
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=elektrobit.com;
 s=selector1;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck;
 bh=ZHidNjasS/JOgBnj6tsz69bwCge0ojtPt0VVEzO0kMs=;
 b=uSJH5wr0uloETPFnd9gFrSm31d+hspPeWODJ52Vmps04HX1MYvYdOp4uB3C10ElHTC0IE3V1wJxYzvT4YLHC3uSKTOj4u2d+zT9xk380Fv2fRjAvu2Tw1Ry2xAlTC8jVErttOJsfTrZwjdC0QMhIaE1v7GrnoTO0m6/BMQ92kuI=
X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 40.93.4.4)
 smtp.mailfrom=elektrobit.com; dkim=pass (signature was verified)
 header.d=elektrobit.com;dmarc=pass action=none header.from=elektrobit.com;
Received-SPF: Pass (protection.outlook.com: domain of elektrobit.com
 designates 40.93.4.4 as permitted sender) receiver=protection.outlook.com;
 client-ip=40.93.4.4; helo=BL0PR07CU001.outbound.protection.outlook.com; pr=C
ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none;
 b=qpEZrF+2GDJOzKRjO14OL6Wwue0haqy/vx99vrUTXG7xgyl82OHNfe8xZ2qVWuSqAXxgvDMlTtJ0T4KNPoNnQA2YvmWNQrMb++V3t75G3EwZ70MaeVOg8Hgxqx9OPEWIrliy6BR1sLczNsRch1KXRRNDyLhQc3bHepnWH3ujinj5GNJXQaiGz2TnbF1nRw3EglB4WUr3d56h9+Y2///iintGnaqKRBU8Vaxu3ifmjHLP85SYDxMMLwxKfTF5NUoawj16n0y2CoQqKBe5iCT6wsKY1/Zw1N+mhCaPhDBS7BZ2PXBH664P8b1TI3nm6rOjD1k24r2HD8shr5Vu82Ullw==
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com;
 s=arcselector10001;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1;
 bh=ZHidNjasS/JOgBnj6tsz69bwCge0ojtPt0VVEzO0kMs=;
 b=wTVlZNkUgQnibDEvrzMvcqhNvxmjKyE5EYSMalNJ2W21UBNRUtcCrAOQU8u6y252uP6YQ9pgSCKmbn7NoStntIEY775YAqbx1qM3hq033CBcAfRlsEFb7KhWA7KnHWGdo76SxEwbX/KwqN/WuCAXiX31As/z5XH4ZTrp8iTCnCc4n9bVQv6uk4qXr8Ldmn3oDY3cz/X9ALikFKSYSBMxTvf/9exTufyTN4k+DJWEQ8yNRzjYoRaR8ieQ04IJTYuvnwTk0MTAqbCvBLBI5EfWbIxk46e/Ex/l90HkJwLiRJ40mlT/mGr1ugMC/dkW9UW8jEgNduQXYuL3bFVTvW+9Eg==
ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass (sender ip is
 213.95.148.172) smtp.rcpttodomain=lists.xenproject.org
 smtp.mailfrom=elektrobit.com; dmarc=pass (p=quarantine sp=none pct=100)
 action=none header.from=elektrobit.com; dkim=none (message not signed);
 arc=none (0)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=elektrobit.com;
 s=selector1;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck;
 bh=ZHidNjasS/JOgBnj6tsz69bwCge0ojtPt0VVEzO0kMs=;
 b=uSJH5wr0uloETPFnd9gFrSm31d+hspPeWODJ52Vmps04HX1MYvYdOp4uB3C10ElHTC0IE3V1wJxYzvT4YLHC3uSKTOj4u2d+zT9xk380Fv2fRjAvu2Tw1Ry2xAlTC8jVErttOJsfTrZwjdC0QMhIaE1v7GrnoTO0m6/BMQ92kuI=
X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 213.95.148.172)
 smtp.mailfrom=elektrobit.com; dkim=none (message not signed)
 header.d=none;dmarc=pass action=none header.from=elektrobit.com;
Received-SPF: Pass (protection.outlook.com: domain of elektrobit.com
 designates 213.95.148.172 as permitted sender)
 receiver=protection.outlook.com; client-ip=213.95.148.172;
 helo=denue6es012.ebgroup.elektrobit.com; pr=C
From: Rose Spangler <Rose.Spangler@elektrobit.com>
To: <xen-devel@lists.xenproject.org>
CC: Sergej Proskurin <proskurin@sec.in.tum.de>, 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: [RFC PATCH v6 20/43] arm/p2m: Rename parameter in p2m_alloc_vmid
Date: Mon, 20 Apr 2026 17:31:43 -0400
Message-ID: <20260420213206.208750-21-Rose.Spangler@elektrobit.com>
X-Mailer: git-send-email 2.34.1
In-Reply-To: <20260420213206.208750-1-Rose.Spangler@elektrobit.com>
References: <20260420213206.208750-1-Rose.Spangler@elektrobit.com>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit
Content-Type: text/plain
X-Originating-IP: [10.10.178.50]
X-ClientProxiedBy: denue6es012.ebgroup.elektrobit.com (10.243.160.140) To
 denue6es012.ebgroup.elektrobit.com (10.243.160.140)
X-EOPAttributedMessage: 1
X-MS-Exchange-SkipListedInternetSender:
 ip=[213.95.148.172];domain=denue6es012.ebgroup.elektrobit.com
X-MS-TrafficTypeDiagnostic:
	SJ1PEPF000026C8:EE_|BLAPR08MB6852:EE_|CO1PEPF00012E7E:EE_|DS0PR08MB11092:EE_
X-MS-Office365-Filtering-Correlation-Id: 0ed352c2-cd49-4ded-825c-08de9f24693b
X-SM-outgoing: yes
X-MS-Exchange-SenderADCheck: 1
X-MS-Exchange-AntiSpam-Relay: 0
X-Microsoft-Antispam-Untrusted:
 BCL:0;ARA:13230040|36860700016|1800799024|376014|82310400026|56012099003|22082099003|18002099003;
X-Microsoft-Antispam-Message-Info-Original:
 =?us-ascii?Q?RV3itJdLwC+xtypdeFrwPBWWZMPj7x3cbDrt701fT+k/V3PMLXclRkBtv0/A?=
 =?us-ascii?Q?OecuaNc7zFRd5ER0pwiqbGRr4KbPS34dDB85lIF77Nv4DakurWXXm7dQ9Klv?=
 =?us-ascii?Q?cPWcqzy0tuQQEVgNTKuo0cv6fpLWmpUnKIwVcxZ09wPWGKJYREqBItOiuTP/?=
 =?us-ascii?Q?aemFPe1TSWUwJjbAlnaOlVjajFOYvY64s/IeHX++Fzux8UMqQS6NaKeJZsce?=
 =?us-ascii?Q?EaVZ+wsMKSCe3OwVeYrwDIft3SX/Up+PkuZFFZKSDo9soqw40v3/uJo716GP?=
 =?us-ascii?Q?LDhOnNJhrrk9tNIiqeBZDMvEZmdyrxIsETlqgFXyIfkV4hU59z0oDNQA44WJ?=
 =?us-ascii?Q?ugU1sewJYh9H/TbWdqWihw93KeMxcmN7Fl2ZgNo1D2GzECDhQDA9KXAs1dZY?=
 =?us-ascii?Q?K8VDuzlr3+FyhDJfKm35GgfC0/7QxEehDMJVta4Q26WKFUBbvh+zV8mnUFXR?=
 =?us-ascii?Q?uQtLgQIKzayllWcF5JcwoUrtsdlF7Zy+l3gzdXZ8VQ09VEyumm0faXdXOob5?=
 =?us-ascii?Q?WoPqOIWh3bff4ZG6n8Sm2bXFyrqZsxHGZhVHBgHRmv6r92eNRMh+38eJ6NJA?=
 =?us-ascii?Q?LKG6JJXuhxBzytiY4gMw3SZvB784zNlXgGSp5BtQwUCcjgNri/KwkK3ZEDmU?=
 =?us-ascii?Q?sSJ1v3kW3cQxDB/yZOwv6dNgPZxkDhyPCU0p0jFLSopN8SLUPYZfUH5OCGEr?=
 =?us-ascii?Q?s1IAy9AXs3YBfUS++yBrvxEOxTyBmravA8WvSeF2tfMefhinJHLcCLr4STNv?=
 =?us-ascii?Q?CWt3R/rXdQ6S2YYjIVKDqK5k/vl1rYg4m2TFq1oJBJT58T0xlR0Usbm0s4h0?=
 =?us-ascii?Q?KwyxrPj9wZUAg77BXN+HE3/vgSKeQwkKskeM+7Dw2rnDbZXeFzdZN5ud2y+H?=
 =?us-ascii?Q?hB3v//1GomnA5EtOL7vovKgoXzWXXvzO6k1xF6mUgQ7y7eqAtXWH4yqnpXC1?=
 =?us-ascii?Q?dBl/BIou7JjBXxiNhbPPuy7VMwmLRqtK2v5SH1V+TBdkaZqbtqzQRO5xcA1z?=
 =?us-ascii?Q?G+pXYOk/5nXDYw9Bc4z61hRasMMMqqvSingQ/ebuBDo4Z6YdzBG1LMYCQhz2?=
 =?us-ascii?Q?crrN6kICDw3ftYGqQe2ReOZUJ/T9wo7GHCubliyImNwY+jVCH5w3PUSU2RrB?=
 =?us-ascii?Q?ptEMqMX0YJLuLqHVx4pvrGEnsv+Aoakrnv9dSx2BQmCv/E9AL7fOqKm1XTxD?=
 =?us-ascii?Q?tl+0SZvhxOp/h6xWgFTravg7+XVHLVdVa5TdGiNe4WGYoJ5Kcq5UWbaZw4Q1?=
 =?us-ascii?Q?hEqn4/31AZfi/tmsRTnrsD0RqLoa6etdthPfjxpFmw=3D=3D?=
X-Forefront-Antispam-Report-Untrusted:
 CIP:213.95.148.172;CTRY:DE;LANG:en;SCL:1;SRV:;IPV:CAL;SFV:NSPM;H:denue6es012.ebgroup.elektrobit.com;PTR:eth1-fw1-nbg6.eb.noris.de;CAT:NONE;SFS:(13230040)(36860700016)(1800799024)(376014)(82310400026)(56012099003)(22082099003)(18002099003);DIR:OUT;SFP:1102;
X-Exchange-RoutingPolicyChecked:
 cFNub0Cp2Gu7LAkWsjBdyPEE8JRLYR3KV6eAuL3gsXHhxML3WOZuN9ZckSZZfXn38ufk4L4wFloL/TIreH52aDm+zlUYXIj/gPdf+MYbRzpaxJ/7jZlbHc6HrLvqo7zzIdRqN61ywK0hEP7HR1hGHROqmVGPQ72p6BITI/fO0YZtrImHn6IlCSS2JM+agbe/OoWdRgKF//SdByApV4RZKPXFtn8Adrm0IaL0da7mj6w2FnKnaHCKBlJM1gOuGPzYAK+20yPtGkWwIfqiU7MLcQehJXrwP1Hn45jxrdu5XU9MIMTQtNxy3EFmjaZlvm6iemhsEEerx2pLDWiu9quiBQ==
X-MS-Exchange-Transport-CrossTenantHeadersStamped: BLAPR08MB6852
X-MS-Exchange-SkipListedInternetSender:
 ip=[40.93.4.4];domain=BL0PR07CU001.outbound.protection.outlook.com
X-MS-Exchange-ExternalOriginalInternetSender:
 ip=[40.93.4.4];domain=BL0PR07CU001.outbound.protection.outlook.com
X-MS-Exchange-Transport-CrossTenantHeadersStripped:
 CO1PEPF00012E7E.namprd03.prod.outlook.com
X-MS-PublicTrafficType: Email
X-MS-Office365-Filtering-Correlation-Id-Prvs:
	f11dc2a4-5827-49f6-a9ab-08de9f2466b9
X-Microsoft-Antispam:
	BCL:0;ARA:13230040|36860700016|376014|1800799024|82310400026|35042699022|156008|14060799003|22082099003|56012099003|18002099003;
X-Microsoft-Antispam-Message-Info:
	=?us-ascii?Q?qog8p/QUADAZt4oqzKBsBtZ1uVUg94eZSJTF3IpyMK0GPaIQjBLtiXkCcHEH?=
 =?us-ascii?Q?uwcDL5KWema4LU4oo3M8LZBX6ilMqTuQpjvkErEyTd9PR6uQTxCImOSwmPmA?=
 =?us-ascii?Q?Bzh6dpdOEa6WVNaLipYOHyCXGwYDkAV9ZZCUG6kVNoQknEi3pzKSjND5OO3X?=
 =?us-ascii?Q?xnZFZjtb7OjimD+jHwpurf+pxBZjfeGMk5OuTzsfzViLx5diDm4v3apGtdMi?=
 =?us-ascii?Q?4HXClCWIq1A0m0N0yIXomhgUlld6t2b6vezmpG6XP4NTNgsu+46q8Fluf0S1?=
 =?us-ascii?Q?2X7fzv8zlvVyma/ML+5XemZTS/w7ZQ8jIuiSO5+6WX31V1f+BpeB7i2FjjZr?=
 =?us-ascii?Q?EMlZkf+CS4p3HYNxjwHgubto24tKa73yOMhNAfhA+TOwdaJ8X7KZRgrJ6qCp?=
 =?us-ascii?Q?9CU2wNJnj6Fz2JaWx6b0hZGtXQNkqGigbB4yCTIesKpX32XE1la1VOQ9tGk1?=
 =?us-ascii?Q?nEQy7Eei89bhSYGNqwB9PI0LU0RqSCr4IJL/FYTuL8mBhlP4jXyxlTIHWJVd?=
 =?us-ascii?Q?w6VGFN9tVGjGo9T2PfdcZqXO3n0hFlWPY9CnbxzaBjZNhH2E8l39/yZanfk3?=
 =?us-ascii?Q?W0NixZUQNe0wqlwUsShWOXcqfx64hU7wOYC1ZK252V/MtimRBtRTlPXbscXi?=
 =?us-ascii?Q?tA/liwjzj4GGGTjqhcBYyWybeKf0J9juZF2V4lMqFzrhtCFB5MMnMvrtQZNR?=
 =?us-ascii?Q?yfTLHlmthBf9EbNJU5LpMPs/CvZ3qY8+mDCBtkeSKhZ12VidFCsdcjbNThhR?=
 =?us-ascii?Q?Dy0vJOBWLABcEnHo2WL5K8SbqdYKa+vzO8dP35/fiMcDTILJQ1BxXHPDsalZ?=
 =?us-ascii?Q?l6Obv9Wxv5otQQIcHYRXiHWyMg2xMMxiLqMY5WdegSHoPDvweWb8Mnw34nrb?=
 =?us-ascii?Q?Jbg6YZ5H+nh8p+TZEBAzJu6OvbCzsJeS4zaSDra/AVaJrLnjJn6i/Lakiyhh?=
 =?us-ascii?Q?JuM85QwP6Y+VGiZJDsflUqkW+G3GPyKXc6sXm/jmdAytWax9L3cWvOTG7nUJ?=
 =?us-ascii?Q?lvN1AvlM6nYsywEyBcrD5tLuh/83IDXUmOUb2eUv6/mmvhcqbuh4pTA9v202?=
 =?us-ascii?Q?haRAzTZvgj3TMoOiq1hDpNAPpHHeyTaFEr8LqxEnK0c9QCVId8vMeYHVZxqH?=
 =?us-ascii?Q?hU7AwiPsnxNLVbnbMGvZ0z0VqmnnhAPh+mf1z91Z+zZF7dVfX9WANkK1ZBp5?=
 =?us-ascii?Q?Z5O2b7sA8hXfPH90QYxZBHYuDhTbb+elq+NHRUyXbCJ/BlSowzTc4qOT5UcQ?=
 =?us-ascii?Q?HAYqQeUv93dJrZV6y6I22GPJ9C51fv57g6hXqBLzjA=3D=3D?=
X-Forefront-Antispam-Report:
	CIP:4.79.107.243;CTRY:US;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:BL0PR07CU001.outbound.protection.outlook.com;PTR:mail-bl0pr07cu00104.outbound.protection.outlook.com;CAT:NONE;SFS:(13230040)(36860700016)(376014)(1800799024)(82310400026)(35042699022)(156008)(14060799003)(22082099003)(56012099003)(18002099003);DIR:OUT;SFP:1102;
X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1
X-MS-Exchange-AntiSpam-MessageData-0:
	8KgcZSACfPd7weUTJxqfV2C/MBSRX64PZUhHEWZp4k2oW30eo5D0EO1i1VKbWBG4Ca78tbCbLlV7gR+HXPUQDJ4F2erP2XYrC/BLbra2owj01dHh08YYIWFLHta5z8dmJ47h4GlAHRJXg9yjxoDsU83pA2AqaqlN/9MWKidV9Z0K8ibiqPNaN5SwVIp99wzpey4xqakGXL//nBU9ep7oVDQIvOYdDWaHiWg5Mnl0NZA6SW0+JuF5XwOf5apyB9tl4KSzBEakexfOmlMhiITNkidhWYcLD0eC9NE3XJAHf7uGLbvtBtBgadZFX9Yc7+W0T9km8r0PgeZd4G1lMHPpiiwB8le6LmcIXBOJ/Mx2+RYgWwzpWG1iGyZ9Wk765La03GP4B7COsh8HYQDGp3PooEbB4rv/RCUjNPz0tYmuROFH/Di09HtHok+bZ8z6w8Zt
X-OriginatorOrg: elektrobit.com
X-MS-Exchange-CrossTenant-OriginalArrivalTime: 20 Apr 2026 21:33:06.5405
 (UTC)
X-MS-Exchange-CrossTenant-Network-Message-Id: 0ed352c2-cd49-4ded-825c-08de9f24693b
X-MS-Exchange-CrossTenant-Id: e764c36b-012e-4216-910d-8fd16283182d
X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=e764c36b-012e-4216-910d-8fd16283182d;Ip=[4.79.107.243];Helo=[usbth1es003.ebgroup.elektrobit.com]
X-MS-Exchange-CrossTenant-AuthAs: Internal
X-MS-Exchange-CrossTenant-AuthSource: TreatMessagesAsInternal-CO1PEPF00012E7E.namprd03.prod.outlook.com
X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem
X-MS-Exchange-Transport-CrossTenantHeadersStamped: DS0PR08MB11092
X-purgate-ID: tlsNG-d25034/1776720793-6E577CF5-6076433C/0/0
X-purgate-type: clean
X-purgate-size: 1341

From: Sergej Proskurin <proskurin@sec.in.tum.de>

This commit does not change or introduce any additional functionality
but rather is a part of the following commit that alters the
functionality of the function "p2m_alloc_vmid".

This is commit 9/12 of the altp2m_init/altp2m_teardown routines phase.

Signed-off-by: Sergej Proskurin <proskurin@sec.in.tum.de>
---
 xen/arch/arm/p2m.c | 12 ++++++------
 1 file changed, 6 insertions(+), 6 deletions(-)

diff --git a/xen/arch/arm/p2m.c b/xen/arch/arm/p2m.c
index fb03978a19af..2c43b6033360 100644
--- a/xen/arch/arm/p2m.c
+++ b/xen/arch/arm/p2m.c
@@ -286,24 +286,24 @@ int p2m_alloc_vmid(struct domain *d)
 {
     struct p2m_domain *p2m = p2m_get_hostp2m(d);
 
-    int rc, nr;
+    int rc, vmid;
 
     spin_lock(&vmid_alloc_lock);
 
-    nr = find_first_zero_bit(vmid_mask, MAX_VMID);
+    vmid = find_first_zero_bit(vmid_mask, MAX_VMID);
 
-    ASSERT(nr != INVALID_VMID);
+    ASSERT(vmid != INVALID_VMID);
 
-    if ( nr == MAX_VMID )
+    if ( vmid == MAX_VMID )
     {
         rc = -EBUSY;
         printk(XENLOG_ERR "p2m.c: dom%d: VMID pool exhausted\n", d->domain_id);
         goto out;
     }
 
-    set_bit(nr, vmid_mask);
+    set_bit(vmid, vmid_mask);
 
-    p2m->vmid = nr;
+    p2m->vmid = vmid;
 
     rc = 0;
 
-- 
2.34.1



From xen-devel-bounces@lists.xenproject.org Mon Apr 20 21:33:17 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 20 Apr 2026 21:33:17 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1287797.1568225 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wEwF3-0002bO-6r; Mon, 20 Apr 2026 21:33:17 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1287797.1568225; Mon, 20 Apr 2026 21:33: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 1wEwF2-0002Ze-SX; Mon, 20 Apr 2026 21:33:16 +0000
Received: by outflank-mailman (input) for mailman id 1287797;
 Mon, 20 Apr 2026 21:33:15 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <Rose.Spangler@elektrobit.com>) id 1wEwF0-00029M-UB
 for xen-devel@lists.xenproject.org; Mon, 20 Apr 2026 21:33:15 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wEwF0-0054Hn-AZ
 for xen-devel@lists.xenproject.org; Mon, 20 Apr 2026 23:33:14 +0200
Received: from [10.42.69.12] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <Rose.Spangler@elektrobit.com>)
 id 69e69b34-5cb7-0a2a0a5109dd-0a2a450c9236-42
 for <xen-devel@lists.xenproject.org>; Mon, 20 Apr 2026 23:33:14 +0200
Received: from [40.107.208.128]
 (helo=PH0PR06CU001.outbound.protection.outlook.com)
 by tlsNG-d25034.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.1)
 (envelope-from <Rose.Spangler@elektrobit.com>)
 id 69e69b98-62f1-0a2a450c0019-286bd0800b4d-3
 for <xen-devel@lists.xenproject.org>; Mon, 20 Apr 2026 23:33:13 +0200
Received: from CH2PR08CA0022.namprd08.prod.outlook.com (2603:10b6:610:5a::32)
 by LV8PR08MB8854.namprd08.prod.outlook.com (2603:10b6:408:180::14)
 with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9818.32; Mon, 20 Apr
 2026 21:33:09 +0000
Received: from CH2PEPF00000142.namprd02.prod.outlook.com
 (2603:10b6:610:5a:cafe::b5) by CH2PR08CA0022.outlook.office365.com
 (2603:10b6:610:5a::32) with Microsoft SMTP Server (version=TLS1_3,
 cipher=TLS_AES_256_GCM_SHA384) id 15.20.9723.25 via Frontend Transport; Mon,
 20 Apr 2026 21:33:09 +0000
Received: from usbth1es003.ebgroup.elektrobit.com (4.79.107.243) by
 CH2PEPF00000142.mail.protection.outlook.com (10.167.244.75) with Microsoft
 SMTP Server (version=TLS1_3, cipher=TLS_AES_256_GCM_SHA384) id 15.20.9791.48
 via Frontend Transport; Mon, 20 Apr 2026 21:33:08 +0000
Received: from usbth1es003 (localhost [127.0.0.1])
 by usbth1es003.ebgroup.elektrobit.com (Postfix) with SMTP id 4fzzHS00Vqz1wdS; 
 Mon, 20 Apr 2026 14:33:08 -0700 (PDT)
Received: from CH4PR07CU001.outbound.protection.outlook.com
 (mail-ch4pr07cu00105.outbound.protection.outlook.com [40.93.20.101])
 (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)
 key-exchange secp384r1 server-signature RSA-PSS (2048 bits) server-digest
 SHA256) (No client certificate requested)
 by usbth1es003.ebgroup.elektrobit.com (Postfix) with ESMTPS;
 Mon, 20 Apr 2026 14:33:07 -0700 (PDT)
Received: from BY1P220CA0047.NAMP220.PROD.OUTLOOK.COM (2603:10b6:a03:59e::9)
 by CYXPR08MB9590.namprd08.prod.outlook.com (2603:10b6:930:e0::5) with
 Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9818.33; Mon, 20 Apr
 2026 21:33:00 +0000
Received: from SJ1PEPF000026C8.namprd04.prod.outlook.com
 (2603:10b6:a03:59e:cafe::43) by BY1P220CA0047.outlook.office365.com
 (2603:10b6:a03:59e::9) with Microsoft SMTP Server (version=TLS1_3,
 cipher=TLS_AES_256_GCM_SHA384) id 15.20.9791.48 via Frontend Transport; Mon,
 20 Apr 2026 21:33:00 +0000
Received: from denue6es012.ebgroup.elektrobit.com (213.95.148.172) by
 SJ1PEPF000026C8.mail.protection.outlook.com (10.167.244.105) with Microsoft
 SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id
 15.20.9791.48 via Frontend Transport; Mon, 20 Apr 2026 21:32:59 +0000
Received: from ubuntu.localdomain (10.10.178.50) by
 denue6es012.ebgroup.elektrobit.com (10.243.160.140) with Microsoft SMTP
 Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id
 15.2.2562.35; Mon, 20 Apr 2026 23:32:53 +0200
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@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=elektrobit.com header.i="@elektrobit.com" header.h="From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck"; dkim=pass header.s=selector1 header.d=elektrobit.com header.i="@elektrobit.com" header.h="From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck"
ARC-Seal: i=2; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=pass;
 b=a7TZLtiFSR4tDQp767QRWFsD68qN24Y2qH2qa50NKbvXMnI8WOtm83uwds0VUL0gPx3DWVj5lTQXqYP+TgsgwpSBIzIerKImBO8EMR2t6glGCWBDSQen7potghdpqXWXL4jplqmn7jroqfDi2iwiYvrz8uv/uKbNbc3cnKBDXVjoIcab/Wq9ThZ6ZuhmzFsGWRupdhVVGgASjPsJOBbDVxWYWUDZgHBsmmuqgWB/GOPrMhULlwnjiDLNUFG54MPAq4hUCqlpROFEbII5vH3/CszPOG2j0ZY6l49RkpwbJqa6LMglkQx5QnD/IQ0SKTfJRhJimnlPwBa4jVIy9lcEYA==
ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com;
 s=arcselector10001;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1;
 bh=qwOwmfrmWpA5bcreD0lLuuQUt9f7SqfexhLWTcmlGbU=;
 b=lcL9T1TD2c7a0pQBOsgU/QRMrIV4tMPReLffNJGwaGrYwcEZL9VC+GBKeXwND3y6yf420CZA1tN43ho8k/fXq0kOWS05X4wD9tdkw03X4VOv6jRARdad93L4PKiOxPyS1fuJCxfEpRsYI4H9W1N4IH4YDZ5czyzsI5jnQMiv7MPRy9ivHjdaP9FcRx3wWVhc2F1+XoGHLytdv6lLFvMGlZNelwlzC/RgrJLDGoiP/W51HcG3lxBs6L/c0fVIET8XwtcZc3z/i22zrK67+d/omAGKm8tmiV/TUoLR5xu7sjLedu/B60Yj1rnoDYR4d6DP1twS84upFyaLOfjq6zResg==
ARC-Authentication-Results: i=2; mx.microsoft.com 1; spf=pass (sender ip is
 40.93.20.101) smtp.rcpttodomain=amd.com smtp.mailfrom=elektrobit.com;
 dmarc=pass (p=quarantine sp=none pct=100) action=none
 header.from=elektrobit.com; dkim=pass (signature was verified)
 header.d=elektrobit.com; arc=pass (0 oda=1 ltdi=1
 spf=[1,1,smtp.mailfrom=elektrobit.com]
 dmarc=[1,1,header.from=elektrobit.com])
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=elektrobit.com;
 s=selector1;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck;
 bh=qwOwmfrmWpA5bcreD0lLuuQUt9f7SqfexhLWTcmlGbU=;
 b=ksT2aaUTFwGwiQFagv2YTQEUoexL7tiAWUi2IhMTuDFI90b81rHJIYz++452qUTUneXCUPcsb0DfPmtmi8KcehD8kKCjB0ZBaZ3w/X2QTyMHsi9BVBNkttr4ar5m/7rxBH3G24Oq+Z3GVy3OR9bO9ykOu4LzkZ4LMDNpvEFSlYM=
X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 40.93.20.101)
 smtp.mailfrom=elektrobit.com; dkim=pass (signature was verified)
 header.d=elektrobit.com;dmarc=pass action=none header.from=elektrobit.com;
Received-SPF: Pass (protection.outlook.com: domain of elektrobit.com
 designates 40.93.20.101 as permitted sender) receiver=protection.outlook.com;
 client-ip=40.93.20.101; helo=CH4PR07CU001.outbound.protection.outlook.com;
 pr=C
ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none;
 b=Sa00R3fxZptqfAOJUKi2mVeeMohF0LVTvB+fhbtwn8jcitZUSuT1D1hVYIHI6SRt4+Q/ur56dkzjpeXHzl3kryZcbbOyVZa0+htlL5YXAdkY0IYsTG9WWfgipxkSySF1Tr4nvL1ICxd0VCcANY73vhFbn0NweBGlK6BteRSD7hFkl1XSlMTcWssGJS3OM6pdctMDc+jqvutk6tUT+nvvw1CJbzUNqE+J/m1MKWbtXd/qRABDzGBNZo7dd6xNN4iyZw7UnVDDRt9iP2eogUYu4f/dD2O1yhQtzY+qeuxw9y4HcKXQWpmzwSZhJky07m6cyf0JaMlQCn6wITEIYR9ZiQ==
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com;
 s=arcselector10001;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1;
 bh=qwOwmfrmWpA5bcreD0lLuuQUt9f7SqfexhLWTcmlGbU=;
 b=m+F7/Tf2/RApi8vHZRQk8vzsoIugBk5VccgMPPIQM+914ozn+k3pJD9yBFqESK/KYnfIoMRFzfq5UgtfAMb/+NswN7Y+eEG7xbW2NP4jT4kbDMOjl+gMfZfRPrHa6EPo6l8bXBKK8IUg2chsXsKm20GyMNEfmGmhtGlY7P9J3eIbgOfRA81IxvFXxFbpV8KatPKaIgLKb4VDmzJhvLYWQBBe5OFBdMDbGyMApxqtgy/znmKzlSgwRmngA5ru0jMSUY5vfhh+W6Q1xch5fzNCDkG/BvQpiC9LQbavWIl2Z9OGzKjJLV/JOtzD6nUffWtFxDXnvuDZ3hprPpx5yWA2Eg==
ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass (sender ip is
 213.95.148.172) smtp.rcpttodomain=lists.xenproject.org
 smtp.mailfrom=elektrobit.com; dmarc=pass (p=quarantine sp=none pct=100)
 action=none header.from=elektrobit.com; dkim=none (message not signed);
 arc=none (0)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=elektrobit.com;
 s=selector1;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck;
 bh=qwOwmfrmWpA5bcreD0lLuuQUt9f7SqfexhLWTcmlGbU=;
 b=ksT2aaUTFwGwiQFagv2YTQEUoexL7tiAWUi2IhMTuDFI90b81rHJIYz++452qUTUneXCUPcsb0DfPmtmi8KcehD8kKCjB0ZBaZ3w/X2QTyMHsi9BVBNkttr4ar5m/7rxBH3G24Oq+Z3GVy3OR9bO9ykOu4LzkZ4LMDNpvEFSlYM=
X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 213.95.148.172)
 smtp.mailfrom=elektrobit.com; dkim=none (message not signed)
 header.d=none;dmarc=pass action=none header.from=elektrobit.com;
Received-SPF: Pass (protection.outlook.com: domain of elektrobit.com
 designates 213.95.148.172 as permitted sender)
 receiver=protection.outlook.com; client-ip=213.95.148.172;
 helo=denue6es012.ebgroup.elektrobit.com; pr=C
From: Rose Spangler <Rose.Spangler@elektrobit.com>
To: <xen-devel@lists.xenproject.org>
CC: Rose Spangler <Rose.Spangler@elektrobit.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>, Sergej Proskurin
	<proskurin@sec.in.tum.de>
Subject: [RFC PATCH v6 18/43] arm/p2m: Invalidate root page table entries and flush TLB in p2m_flush_table
Date: Mon, 20 Apr 2026 17:31:41 -0400
Message-ID: <20260420213206.208750-19-Rose.Spangler@elektrobit.com>
X-Mailer: git-send-email 2.34.1
In-Reply-To: <20260420213206.208750-1-Rose.Spangler@elektrobit.com>
References: <20260420213206.208750-1-Rose.Spangler@elektrobit.com>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit
Content-Type: text/plain
X-Originating-IP: [10.10.178.50]
X-ClientProxiedBy: denue6es012.ebgroup.elektrobit.com (10.243.160.140) To
 denue6es012.ebgroup.elektrobit.com (10.243.160.140)
X-EOPAttributedMessage: 1
X-MS-Exchange-SkipListedInternetSender:
 ip=[213.95.148.172];domain=denue6es012.ebgroup.elektrobit.com
X-MS-TrafficTypeDiagnostic:
	SJ1PEPF000026C8:EE_|CYXPR08MB9590:EE_|CH2PEPF00000142:EE_|LV8PR08MB8854:EE_
X-MS-Office365-Filtering-Correlation-Id: 00101def-7e94-437e-9704-08de9f246abb
X-SM-outgoing: yes
X-MS-Exchange-SenderADCheck: 1
X-MS-Exchange-AntiSpam-Relay: 0
X-Microsoft-Antispam-Untrusted:
 BCL:0;ARA:13230040|82310400026|36860700016|376014|1800799024|56012099003|22082099003|18002099003;
X-Microsoft-Antispam-Message-Info-Original:
 =?us-ascii?Q?OBLOtUbcCotZzK/gY2OBUpe69MrzMg85JDJc6iYaZHiSG/yBMBWzpfe1L7Hh?=
 =?us-ascii?Q?GedNrRjkKgJuvGvJfngkp9GxzddSdgwl7JojUOLqziM11H0DZpq6VopjjXmq?=
 =?us-ascii?Q?la+rxbbpnnmesjW3fH3N3e8ziKrVZMpYN42sLzToPXjaiVm5p7ngo0BaJQPd?=
 =?us-ascii?Q?KgBioJlzv9LENsLhb5rYKyGJzBeMpntOSjyaHrLRGfAKPnnbdYvUQXBqJz6R?=
 =?us-ascii?Q?AiL3Ngf0HlP4DlionH3f2ebv0citI3oVRWzEnx17cYcDPsSzSBlZNju3nP9J?=
 =?us-ascii?Q?QA7DWUsnjGjuFZDG+knHsffvEYkdkm9+fvhSlNTWyBI2nlmoPQPcQLqTlunA?=
 =?us-ascii?Q?r9fS4MCjvbjcvdN6/LZpnR2+4WAgQeSbY6/k8F3NSez9nMZxGtMDHxn7RmWY?=
 =?us-ascii?Q?qeDyQqlkobqexpjiog4LDe/q2CQDfkZ3Qm3W8vlLGvFAY+V87SEDRD2vCb3d?=
 =?us-ascii?Q?tq4B36vxr6+X2pfBgU1ZzR9S7oy3Cq/qr07Yb3yWh9wOVnLnmzNvohuJ2Iai?=
 =?us-ascii?Q?+2VzNHhFFCTnCTT6rsK+Z9/JV+NeYIM5t//TRNRp2TxDTI2LDXNvQQ+P6rQQ?=
 =?us-ascii?Q?mJBqfW4lUjBQvkyJkBIo0lnusrbh6xDj+A9aTIR5RCK6Dp1SaKsoBzvuzLBE?=
 =?us-ascii?Q?zNERxDaQzGOuGE/4IJa67UZFOrGeKsAuScZNFABtKDJ3JUHm42voV3GU1Uny?=
 =?us-ascii?Q?gZLX5rE3VxQ6BLMCUbBKSscMR0/Ponn8UPs1YIY286tg+EP2fLVPhodad0WF?=
 =?us-ascii?Q?3UmWkifFymnmPMRbXH8VUFkWfQ4LEyAaL0RnjQ35W0bKbSYbVXicBXkhLIEd?=
 =?us-ascii?Q?kUPQfZw+ofI8SfcR01O12YURzfuoBJZbph/lYshdE/iVRpMrG+514s1FqTIG?=
 =?us-ascii?Q?AtU2dfhUwJzdXp20C2y9XStoL+xlCsnioClwOUO/LgrxV4bwEZ6s9tqxCxtl?=
 =?us-ascii?Q?TaISMq+btCCWIps50Un1MZUorXlSyLZZzXFBvZF27rnjHJa3Cn1C+LFAvehM?=
 =?us-ascii?Q?QflDBIE5u2ELF6HhvRCiXR3wC0N0ZQLzJRBeGlvr6oeKzqXlT3P46PxCWK2+?=
 =?us-ascii?Q?s3lyNrp/AvQk8lM9TJWviGDwkx/WhQh/cBEOI4BODGcLJZY91yly/etw1j19?=
 =?us-ascii?Q?/FstasoaYfm7DKMOMQc5Vn+MsBceAEqSu4Fb7cSaLRmcm5Kp17rNgOz+Ba4B?=
 =?us-ascii?Q?CpiWYrttU2Nk64Uo?=
X-Forefront-Antispam-Report-Untrusted:
 CIP:213.95.148.172;CTRY:DE;LANG:en;SCL:1;SRV:;IPV:CAL;SFV:NSPM;H:denue6es012.ebgroup.elektrobit.com;PTR:eth1-fw1-nbg6.eb.noris.de;CAT:NONE;SFS:(13230040)(82310400026)(36860700016)(376014)(1800799024)(56012099003)(22082099003)(18002099003);DIR:OUT;SFP:1102;
X-Exchange-RoutingPolicyChecked:
 gBHHavtQvcstx4TgrXKKFWRdT2UgHPLamhW/F1Z6LUMV28sgDFUCldpd2IqscULd/8OhmbtT1D8cyU3VlKLpDPEVhtpLwr7pAq5lxXNK0vUNQcI5ymIm6k7hRzwe8AiqA6ZOT1X+krOgXdovrSfQzseGwv0a3qZuXdH30C63PQvENiD2im7lZoxXVcjgaQWPKXPvwmM5ZzXcJvkqNtKI0B0fVSQs8vmxu2aLXjEKk5LoVpGh3UmRW48g6U2nwXXQeozivcroei5ufD40iIb99o84CE1bv7guFoQe4Or2iWtMZmPYcYCH5+lUgmPN/lNmSt0iIeeaYLPFMu8yIaH2hA==
X-MS-Exchange-Transport-CrossTenantHeadersStamped: CYXPR08MB9590
X-MS-Exchange-SkipListedInternetSender:
 ip=[40.93.20.101];domain=CH4PR07CU001.outbound.protection.outlook.com
X-MS-Exchange-ExternalOriginalInternetSender:
 ip=[40.93.20.101];domain=CH4PR07CU001.outbound.protection.outlook.com
X-MS-Exchange-Transport-CrossTenantHeadersStripped:
 CH2PEPF00000142.namprd02.prod.outlook.com
X-MS-PublicTrafficType: Email
X-MS-Office365-Filtering-Correlation-Id-Prvs:
	4319dff1-bb28-4b51-c83e-08de9f24656b
X-Microsoft-Antispam:
	BCL:0;ARA:13230040|82310400026|14060799003|35042699022|156008|36860700016|376014|1800799024|22082099003|56012099003|18002099003;
X-Microsoft-Antispam-Message-Info:
	=?us-ascii?Q?95l3DgwesH9dh/CBLii9oEYNY6UZkudAnrCRTdJa6XO/wILS+Jzbz65qwulV?=
 =?us-ascii?Q?qsylstX8fOHJ0dfT2QY5dOProHk9z9yRxJQTQKPBcNqp2wFuWemTJUWGUfqH?=
 =?us-ascii?Q?rXntqfmFgnW89CtcBU+VoVaUO05ZDpIdvTej8GygubChpuaaL9EcVjCJDhWG?=
 =?us-ascii?Q?0j8fm2KDZbraVDyVWXwmN1QozzCwwi5YvNJzClkOwdPkkMiecVw8pDycQoxf?=
 =?us-ascii?Q?JAat2aHD3VDECIDiX0cyxpKTqmIFQcRy0eTrqKwQWAneAPCjBysMaTHBCDKU?=
 =?us-ascii?Q?cd5jeEaKNuwUdnqdNaJyy1OW3JgEr9BFTJTcQaQ/tlp2Hrf8SUKj9cd6pfmm?=
 =?us-ascii?Q?+mHo7DDcaXbZ4xoqL1wj3bQVb46Pp/yUCZ1qLBIIkoBuutnPloGKSP2sLgyT?=
 =?us-ascii?Q?FsCfPsi6p1S2r+8ueZwkswlXnhYV2AhTQdtWY4WSqK8kteTuzqKk4nZTXTWg?=
 =?us-ascii?Q?eBTPWimQU44F3zNgm6f4ZGSsfX/soH+QQSXFeJILEAr7uEw8f7SKKTjx4oIp?=
 =?us-ascii?Q?lygf+Ll+tMxwmMK4H2J6PqIOAO9evX5KiZzpEYMODt87GnJfi6Uu3ycqEmpe?=
 =?us-ascii?Q?+YdlpaF0u9rujXQh9MdNi+FBcoDha7bLveT4C5Ai4bGnt2ffXpdmoGtJImBD?=
 =?us-ascii?Q?3KJbY2sP3uEa8M1ai/pZMN5bpgwWnPTiXRlDAS5GaIIuLnSDooe/UGMhxOcM?=
 =?us-ascii?Q?2381YhItc6wWhK64k448NZwDErSPmeD2YWtQOL3xspJVmIdRE+sJrKeHdN64?=
 =?us-ascii?Q?lWrsKLsK0Bd9c3lN54DKMLYqi0exCLEZYeWAICtL5TFAb60S6k5BY6yUqDRt?=
 =?us-ascii?Q?TbDtPyvc4yCnyBRH34dReSetlgcH2RsotWA7GzB4uZuO0hMt+r8jbZJZeJ+7?=
 =?us-ascii?Q?pBHYCv4lWbo+fstnIIte35rWxZvJ00wHm2IHDGPCRVmokw/pCNnZlBRNw9o6?=
 =?us-ascii?Q?J52zVSZoQo+hX3LVJTFIsqPUK8+UmYNjTdGZi6j9SPLTQhfQLtPVPJzmKMiB?=
 =?us-ascii?Q?gO5ikKuI9mwTQA0P5YmMb+ENrYRmZD+ES/opafuG/5MYvJTEEJ01M2Pbslag?=
 =?us-ascii?Q?FcCI6pKEVm4I1hSPLvN5O8nz7TTnQildMQ8yH2uk589WAq5yF4XLfoPEqjyq?=
 =?us-ascii?Q?VilmHR4QW9KciJyLv5D0dG5qS0QbaJZzOxcl0qvT9t97h37/ZcmK20w29dN7?=
 =?us-ascii?Q?s0+dgIgZ73BDrEIu?=
X-Forefront-Antispam-Report:
	CIP:4.79.107.243;CTRY:US;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:CH4PR07CU001.outbound.protection.outlook.com;PTR:mail-ch4pr07cu00105.outbound.protection.outlook.com;CAT:NONE;SFS:(13230040)(82310400026)(14060799003)(35042699022)(156008)(36860700016)(376014)(1800799024)(22082099003)(56012099003)(18002099003);DIR:OUT;SFP:1102;
X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1
X-MS-Exchange-AntiSpam-MessageData-0:
	Ej7dFzE95/mxjle91y5ZtkEL1w2ddUa/q0swOMw/TCSYmDnpHXrvAszO7Zc/9MshORWAYj5KByFS9jf+9dOWizThvl68udctGlA2QU8TAVlLbDzCBTaf1Yv28W2aXFU5dsEd2Eoz0VvuaRsk3uphTQpp6/y1+34PMUKzUPwR/F/0+aVh57w/HRfxne5zL/mXfdNvP0hw4oRwQ1aqrkgGhGHPW/7tJ2PXels9OWCp2h6FMPrE413VOI6xsYN5NjEZYExQ74x48Ka8xoJdlh4NrDATSQcr+ldVWZatMVaYmyJTPewExk8C0fYlxryaqZtl5H+2zIp0PMFUlVlsX4hdcy4TXHBHym7p2XQU3QY9Bh35C0sCYt6rHuvytujuL4Ds+3mSUeR1wQZulIdO+kKwbieH8gP3T1savTZ8m+CHdLE3EtcbzfJkikLN1i3ZxZ51
X-OriginatorOrg: elektrobit.com
X-MS-Exchange-CrossTenant-OriginalArrivalTime: 20 Apr 2026 21:33:08.8042
 (UTC)
X-MS-Exchange-CrossTenant-Network-Message-Id: 00101def-7e94-437e-9704-08de9f246abb
X-MS-Exchange-CrossTenant-Id: e764c36b-012e-4216-910d-8fd16283182d
X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=e764c36b-012e-4216-910d-8fd16283182d;Ip=[4.79.107.243];Helo=[usbth1es003.ebgroup.elektrobit.com]
X-MS-Exchange-CrossTenant-AuthAs: Internal
X-MS-Exchange-CrossTenant-AuthSource: TreatMessagesAsInternal-CH2PEPF00000142.namprd02.prod.outlook.com
X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem
X-MS-Exchange-Transport-CrossTenantHeadersStamped: LV8PR08MB8854
X-purgate-ID: tlsNG-d25034/1776720794-6EB74CF5-E87EB8AB/0/0
X-purgate-type: clean
X-purgate-size: 4874

This commit invalidates the root page table entries and flushes the TLB
when the table is flushed. The TLB is flushed to ensure that altp2m views
after being reset or torn down. Previously, the code in p2m_flush_table was
only used to free p2m pages during domain teardown. This function will
later be used to teardown/reset altp2m views of a still-running domain, so
the page table entries must be properly invalidated.

Additionally, the p2m_invalidate_root function is split into
p2m_invalidate_root and p2m_invalidate_root_locked. The p2m_flush_table
function already holds the lock, so it calls p2m_invalidate_root_locked
directly, as opposed to the existing callers which don't already hold the
lock.

This is commit 7/12 of the altp2m_init/altp2m_teardown routines phase.

Signed-off-by: Rose Spangler <Rose.Spangler@elektrobit.com>
Signed-off-by: Sergej Proskurin <proskurin@sec.in.tum.de>
---
v3: Added a "p2m_flush_tlb" call in "p2m_flush_table". On altp2m reset
    in function "altp2m_reset", it is important to flush the TLBs after
    clearing the root table pages and before clearing the intermediate
    altp2m page tables to prevent illegal access to stalled TLB entries on
    currently active VCPUs.

v4: Replaced the former use of clear_and_clean_page in p2m_flush_table
    by a routine that invalidates every p2m entry atomically. This
    avoids inconsistencies on CPUs that continue to use the views that
    are to be flushed (e.g., see altp2m_reset).

v6: Introduced this patch. While the code in this patch is mostly new, it
    is the same in spirit as the p2m_flush_table additions in the original
    patch series, so the relevant comments have been reproduced above.

    In the v4/v5 versions of this patch series, this patch was a part of
    the previous patch. It has been split out to minimize the number of
    functionality changes in the previous patch.

    Additionally, the original patch series used a routine here which was
    nearly identical to p2m_invalidate_root, which was implemented a few
    years after the patch series. Therefore, the existing
    p2m_invalidate_root implementation is used here instead.

    Also, since the original patch series p2m_teardown (and by extension
    p2m_flush_table, as it was extracted from p2m_teardown) was made
    preemptible. As a consequence of this, introducing a call to
    p2m_invalidate_root here also means that p2m_invalidate_root and
    p2m_tlb_flush_sync is called each time p2m_flush_table is called, even
    if a previous call to p2m_flush_table was preempted. This might cause
    some additional overhead, as p2m_flush_table will iterate over the root
    page tables and flush the TLB before it can return to freeing p2m
    pages. I'm not sure if there's a better way of handling this, or if
    the overhead here is negligible/acceptable.

    I'm not sure how IOMMU interacts with altp2m here. I haven't looked
    into it extensively, so I would appreciate some feedback here. I've
    just copied over the iommu_use_hap_pt conditional from
    p2m_domain_creation_finished, but this is probably not the right
    behavior since we probably still need to invalidate the altp2m view
    page tables on flush somehow. Is the issue with invalidating root page
    tables when using IOMMU only relevant for the hostp2m, or is it also
    relevant for the altp2m views?
---
 xen/arch/arm/mmu/p2m.c | 16 +++++++++++++---
 1 file changed, 13 insertions(+), 3 deletions(-)

diff --git a/xen/arch/arm/mmu/p2m.c b/xen/arch/arm/mmu/p2m.c
index 1d598c66450b..51753bb2c34d 100644
--- a/xen/arch/arm/mmu/p2m.c
+++ b/xen/arch/arm/mmu/p2m.c
@@ -1271,17 +1271,20 @@ void p2m_clear_root_pages(struct p2m_domain *p2m)
  * p2m_invalid_root() should not be called when the P2M is shared with
  * the IOMMU because it will cause IOMMU fault.
  */
-static void p2m_invalidate_root(struct p2m_domain *p2m)
+static void p2m_invalidate_root_locked(struct p2m_domain *p2m)
 {
     unsigned int i;
 
     ASSERT(!iommu_use_hap_pt(p2m->domain));
 
-    p2m_write_lock(p2m);
-
     for ( i = 0; i < P2M_ROOT_PAGES; i++ )
         p2m_invalidate_table(p2m, page_to_mfn(p2m->root + i));
+}
 
+static void p2m_invalidate_root(struct p2m_domain *p2m)
+{
+    p2m_write_lock(p2m);
+    p2m_invalidate_root_locked(p2m);
     p2m_write_unlock(p2m);
 }
 
@@ -1449,6 +1452,13 @@ int p2m_flush_table(struct p2m_domain *p2m)
     unsigned long count = 0;
     struct page_info *pg;
 
+    /* TODO: How does IOMMU interact with altp2m? */
+    if ( !iommu_use_hap_pt(p2m->domain) )
+    {
+        p2m_invalidate_root_locked(p2m);
+        p2m_tlb_flush_sync(p2m);
+    }
+
     while ( (pg = page_list_remove_head(&p2m->pages)) )
     {
         p2m_free_page(p2m->domain, pg);
-- 
2.34.1



From xen-devel-bounces@lists.xenproject.org Mon Apr 20 21:33:19 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 20 Apr 2026 21:33:19 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1287808.1568235 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wEwF5-000323-AX; Mon, 20 Apr 2026 21:33:19 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1287808.1568235; Mon, 20 Apr 2026 21:33: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 1wEwF4-00030o-R8; Mon, 20 Apr 2026 21:33:18 +0000
Received: by outflank-mailman (input) for mailman id 1287808;
 Mon, 20 Apr 2026 21:33:17 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <Rose.Spangler@elektrobit.com>) id 1wEwF2-0002YZ-T8
 for xen-devel@lists.xenproject.org; Mon, 20 Apr 2026 21:33:17 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wEwF2-00CD6F-9X
 for xen-devel@lists.xenproject.org; Mon, 20 Apr 2026 23:33:16 +0200
Received: from [10.42.69.2] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <Rose.Spangler@elektrobit.com>)
 id 69e69b8e-2eae-0a2a0a5409dd-0a2a45028f2e-12
 for <xen-devel@lists.xenproject.org>; Mon, 20 Apr 2026 23:33:16 +0200
Received: from [52.101.193.103]
 (helo=CH1PR05CU001.outbound.protection.outlook.com)
 by tlsNG-720697.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.1)
 (envelope-from <Rose.Spangler@elektrobit.com>)
 id 69e69b9a-af86-0a2a45020019-3465c167f58a-3
 for <xen-devel@lists.xenproject.org>; Mon, 20 Apr 2026 23:33:16 +0200
Received: from CH2PR16CA0009.namprd16.prod.outlook.com (2603:10b6:610:50::19)
 by SJ0PR08MB6541.namprd08.prod.outlook.com (2603:10b6:a03:2d4::20)
 with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9818.31; Mon, 20 Apr
 2026 21:33:11 +0000
Received: from CH2PEPF00000141.namprd02.prod.outlook.com
 (2603:10b6:610:50:cafe::97) by CH2PR16CA0009.outlook.office365.com
 (2603:10b6:610:50::19) with Microsoft SMTP Server (version=TLS1_3,
 cipher=TLS_AES_256_GCM_SHA384) id 15.20.9791.48 via Frontend Transport; Mon,
 20 Apr 2026 21:33:11 +0000
Received: from usbth1es003.ebgroup.elektrobit.com (4.79.107.243) by
 CH2PEPF00000141.mail.protection.outlook.com (10.167.244.74) with Microsoft
 SMTP Server (version=TLS1_3, cipher=TLS_AES_256_GCM_SHA384) id 15.20.9791.48
 via Frontend Transport; Mon, 20 Apr 2026 21:33:10 +0000
Received: from usbth1es003 (localhost [127.0.0.1])
 by usbth1es003.ebgroup.elektrobit.com (Postfix) with SMTP id 4fzzHV173pz1wdM; 
 Mon, 20 Apr 2026 14:33:10 -0700 (PDT)
Received: from SJ0PR08CU001.outbound.protection.outlook.com
 (mail-sj0pr08cu00106.outbound.protection.outlook.com [40.93.1.78])
 (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)
 key-exchange secp384r1 server-signature RSA-PSS (2048 bits) server-digest
 SHA256) (No client certificate requested)
 by usbth1es003.ebgroup.elektrobit.com (Postfix) with ESMTPS;
 Mon, 20 Apr 2026 14:33:09 -0700 (PDT)
Received: from BY1P220CA0041.NAMP220.PROD.OUTLOOK.COM (2603:10b6:a03:59e::13)
 by SA2PR08MB6636.namprd08.prod.outlook.com (2603:10b6:806:117::9)
 with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9818.33; Mon, 20 Apr
 2026 21:33:05 +0000
Received: from SJ1PEPF000026C8.namprd04.prod.outlook.com
 (2603:10b6:a03:59e:cafe::bf) by BY1P220CA0041.outlook.office365.com
 (2603:10b6:a03:59e::13) with Microsoft SMTP Server (version=TLS1_3,
 cipher=TLS_AES_256_GCM_SHA384) id 15.20.9791.48 via Frontend Transport; Mon,
 20 Apr 2026 21:33:04 +0000
Received: from denue6es012.ebgroup.elektrobit.com (213.95.148.172) by
 SJ1PEPF000026C8.mail.protection.outlook.com (10.167.244.105) with Microsoft
 SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id
 15.20.9791.48 via Frontend Transport; Mon, 20 Apr 2026 21:33:04 +0000
Received: from ubuntu.localdomain (10.10.178.50) by
 denue6es012.ebgroup.elektrobit.com (10.243.160.140) with Microsoft SMTP
 Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id
 15.2.2562.35; Mon, 20 Apr 2026 23:32:59 +0200
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@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=elektrobit.com header.i="@elektrobit.com" header.h="From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck"; dkim=pass header.s=selector1 header.d=elektrobit.com header.i="@elektrobit.com" header.h="From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck"
ARC-Seal: i=2; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=pass;
 b=cgwoN8Tg3wUIWSINg0VhM7x1RpaoYgeQieY/FEADdO4YstX8uGamwQG0RhkYtxUZawrgoQk/+2HQ1uNrauP1qK1GeUrHMbKBcIe18xkW0YjQ6Ax0X8HYdjqOExOu+frwIOhcJNk/ihLd05JZM2JE9WNf8B/Sc1KbXZ3hKmzacLTFHv/Eew/YUqey66/1ME6IBqFvYkItp32lW3RghxvIQ/ljioUWMfVkAz1iQ+BkZx/OdxCPsvhI0QyPj8rftFqDBTUPJjWDhwVRmih5YuzHWR7/b+QEkRNdp6GTHexSeRvYfNbs4CvqRb9kqOaRM/RHmm+zmoTZp01YaUn0RD2mhA==
ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com;
 s=arcselector10001;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1;
 bh=JXO5psDHXrr2lWhpVfZGIS9NlsT4Gk+n8+O5j94oxLM=;
 b=ydpv2oTCLuTMyRUxeqVO6iUKbz++DJRyfnePpaFUkhUt89ysMsIvSJLsrd12Mt8kCdEVV5psZ7PY0T4UXLX632FeTzyqWAUJyMTrVx7oc7ujWoa37rdzqQS6vo9HRG0gH4SKL6xSItqeBXraY6DgSOmGxKM6sEDVzZjoDDcWQfyxdD1et+4G9LXDTiHBxEHLLzMkcKrXkaIw9H+Yi2P1RCKBuUhpFVIzyv7RQinYqnahgzJrv8Tp47ea7FmSwBbEIMTwoQpvBwVYz6hlpSK8WRKkNk+xybNE6tKb2DVTDcG8DKjzMNNNr6sJE37dR19HPMH9qs/ljmU38+/TlpW/xg==
ARC-Authentication-Results: i=2; mx.microsoft.com 1; spf=pass (sender ip is
 40.93.1.78) smtp.rcpttodomain=amd.com smtp.mailfrom=elektrobit.com;
 dmarc=pass (p=quarantine sp=none pct=100) action=none
 header.from=elektrobit.com; dkim=pass (signature was verified)
 header.d=elektrobit.com; arc=pass (0 oda=1 ltdi=1
 spf=[1,1,smtp.mailfrom=elektrobit.com]
 dmarc=[1,1,header.from=elektrobit.com])
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=elektrobit.com;
 s=selector1;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck;
 bh=JXO5psDHXrr2lWhpVfZGIS9NlsT4Gk+n8+O5j94oxLM=;
 b=Xz18lriGP71qwg6B+PXBlYbSHSFe3eQw+vVN6FyY/T8GddY15PB2IdEmRUtumwI8mN8ZE0kmGar4b5y5jloPEEkKVRQWloTrYKLDA0e/Buyk9WafgZCaI4x2bQ/EwSbNtzbEmYXgD01or4CcH3MbPrRmKsIVGsPWMjmg5nVoh5g=
X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 40.93.1.78)
 smtp.mailfrom=elektrobit.com; dkim=pass (signature was verified)
 header.d=elektrobit.com;dmarc=pass action=none header.from=elektrobit.com;
Received-SPF: Pass (protection.outlook.com: domain of elektrobit.com
 designates 40.93.1.78 as permitted sender) receiver=protection.outlook.com;
 client-ip=40.93.1.78; helo=SJ0PR08CU001.outbound.protection.outlook.com; pr=C
ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none;
 b=EyTwRyCbfyqSEktAEResMYyw/Si+idXUGjf0qIlXhx9i6ZM4j6GumJ0hdWoR3baeDHgrDJeL95qdFPtHO3/DUzU/IAwRBaPq0AoDGresgohtk1+rjlzZKT+ioWEAuTjbKbur/kq/IZG4ml+91A0OI9O56BjwzGBMHjRUpEOt0ZSsQYZwypT9Wdx81IFL6AoIWjeK9s4mgf4WCGbi9+4Ukm+uYr6pS6CK04+5Nbjan/e6fG87jQVtcIMWXZfF4Mprduj0fcsYCt9Bkr74e+Ms0/zFw2A/OIYXxUY/3rbRrRdV8GO3HJwQTBECfmAiGE35wyu3N2RaXMRalJKEumv8eQ==
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com;
 s=arcselector10001;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1;
 bh=JXO5psDHXrr2lWhpVfZGIS9NlsT4Gk+n8+O5j94oxLM=;
 b=XbVHF/1t89PPV7s/f13APAFMVD26cPjHnKdY2FXag08u1VL8k0GkImXkkZxsruadFT4qMh82oXf/CXyhBS3Dbjwf8W8IiTyKtL5P9DVhNJ+CO9buelJ0i58lr7Sy1muiiUEwXL+3jCQIC18upR/yiggoFdLonl2ie+fwox22+4ppSFCK0etWHY5/kqhwz+AYw8FH/FkgzIDTKV2SNZwFZkH9RYtSEcBc1lApPsa4yNyRg+Mt4+Dz4nAuaZ9k9nQT2uvJUU1jKsjtg2HI5hGhUMEy7AS/JjZHmgG12Gndty1bL6/n00mKmeSI8z+xk2GVaBYmN7xOm1sbvKpiWUTkMQ==
ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass (sender ip is
 213.95.148.172) smtp.rcpttodomain=lists.xenproject.org
 smtp.mailfrom=elektrobit.com; dmarc=pass (p=quarantine sp=none pct=100)
 action=none header.from=elektrobit.com; dkim=none (message not signed);
 arc=none (0)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=elektrobit.com;
 s=selector1;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck;
 bh=JXO5psDHXrr2lWhpVfZGIS9NlsT4Gk+n8+O5j94oxLM=;
 b=Xz18lriGP71qwg6B+PXBlYbSHSFe3eQw+vVN6FyY/T8GddY15PB2IdEmRUtumwI8mN8ZE0kmGar4b5y5jloPEEkKVRQWloTrYKLDA0e/Buyk9WafgZCaI4x2bQ/EwSbNtzbEmYXgD01or4CcH3MbPrRmKsIVGsPWMjmg5nVoh5g=
X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 213.95.148.172)
 smtp.mailfrom=elektrobit.com; dkim=none (message not signed)
 header.d=none;dmarc=pass action=none header.from=elektrobit.com;
Received-SPF: Pass (protection.outlook.com: domain of elektrobit.com
 designates 213.95.148.172 as permitted sender)
 receiver=protection.outlook.com; client-ip=213.95.148.172;
 helo=denue6es012.ebgroup.elektrobit.com; pr=C
From: Rose Spangler <Rose.Spangler@elektrobit.com>
To: <xen-devel@lists.xenproject.org>
CC: Sergej Proskurin <proskurin@sec.in.tum.de>, 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: [RFC PATCH v6 22/43] arm/p2m: Introduce p2m_is_{hostp2m,altp2m}
Date: Mon, 20 Apr 2026 17:31:45 -0400
Message-ID: <20260420213206.208750-23-Rose.Spangler@elektrobit.com>
X-Mailer: git-send-email 2.34.1
In-Reply-To: <20260420213206.208750-1-Rose.Spangler@elektrobit.com>
References: <20260420213206.208750-1-Rose.Spangler@elektrobit.com>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit
Content-Type: text/plain
X-Originating-IP: [10.10.178.50]
X-ClientProxiedBy: denue6es012.ebgroup.elektrobit.com (10.243.160.140) To
 denue6es012.ebgroup.elektrobit.com (10.243.160.140)
X-EOPAttributedMessage: 1
X-MS-Exchange-SkipListedInternetSender:
 ip=[213.95.148.172];domain=denue6es012.ebgroup.elektrobit.com
X-MS-TrafficTypeDiagnostic:
	SJ1PEPF000026C8:EE_|SA2PR08MB6636:EE_|CH2PEPF00000141:EE_|SJ0PR08MB6541:EE_
X-MS-Office365-Filtering-Correlation-Id: a6ebd96d-aeb3-451e-35d2-08de9f246bf2
X-SM-outgoing: yes
X-MS-Exchange-SenderADCheck: 1
X-MS-Exchange-AntiSpam-Relay: 0
X-Microsoft-Antispam-Untrusted:
 BCL:0;ARA:13230040|704161811799003|36860700016|1800799024|376014|82310400026|56012099003|22082099003|18002099003;
X-Microsoft-Antispam-Message-Info-Original:
 =?us-ascii?Q?za3NdQVRA7Efo0xB/d9YMo4DWECqOfNaz9zCRASgQqHFRseAlqvvnzif1Jgt?=
 =?us-ascii?Q?JUHRhJXD2CL/BftHu2AzA8nOCQR1eLtOpTUJPCijbrC1qTMlBjzDnLiaxv8Y?=
 =?us-ascii?Q?wZMYYzElfjDxlcGQhoe/8MghlGLPDijCy0DyJ/S58X2l3xcRv0tGk16ON2m6?=
 =?us-ascii?Q?TMWL/voxEpZKHp58fp/PDzzjmfUpfsw0aCu5xVqrGMLITRkR6r8Ajvn7PSuQ?=
 =?us-ascii?Q?vJ4ecm2fSCw/JjD5wbkDpraZlXQkv3u2fjdcyhc2gc2LqD4x+zaweqXb75Sm?=
 =?us-ascii?Q?DnAD09Q0saeAsdCjBsjpRo8MDqLbvGocX4O0nEDULpbGGmcUbToLuCnPuWU3?=
 =?us-ascii?Q?sWk17yqlCPslPUTjMD4ulWc8kxDhMaJrZd+M664rttOeXayppBsH/ifuxP7c?=
 =?us-ascii?Q?pTgUae9L4/gSSShaivohGkgUuGcn7ctEGd2VmNo36oGoQSoBdWegrOlrVzvY?=
 =?us-ascii?Q?3FY4kWmeUmZ5svC/kyJ6xM52OqpA6SlGTp3IABZB5P7O7a/gShpSJBnFp6ny?=
 =?us-ascii?Q?qji4DiqfH+YWBI3/v+MV1rAK/XbY1yuEXda4qW5O/hoinM1EUfPpeM95d1OD?=
 =?us-ascii?Q?9pPgguPZjl3SN+j/29vmsuyptpRk35LAe+lZm9QvzJPP7c9RULFfhW+kDOZF?=
 =?us-ascii?Q?yDAHnTg7LaNAJIO/xgRN5efOQV5vzt+FTnQoVqnDFzqEAdHHv9uiPMKCuu6Y?=
 =?us-ascii?Q?1CVsqMeRI9t3pqWh6J54cPIQVBLt3jCXG8sNoGq84dL6pn1jhNcz1sEpf+5B?=
 =?us-ascii?Q?STf3wBMUcBFgcQv9Bt8TIvggB2jubly2KaU2uEhLU6R3TKABtVz5lTM6hMIJ?=
 =?us-ascii?Q?hYo55JXFWIg2tlDakB+FVeDMGEbayhDj5Pko38HwvPw07WSo67QSyyIbGWXD?=
 =?us-ascii?Q?9WL6ZZVsyy5aLOZLpZPv9aPfvUiC+S3F7JR/eMnLjdbsrqoVjA+gvN1rFpr5?=
 =?us-ascii?Q?mEqJmdiqQyNGJIKB9c6XNFi9lsmve0s4HsP0pnSrGDvoefeiAhlV/vhuKPoy?=
 =?us-ascii?Q?bK6QsE1VcVb10XG8s7p8bo11Gmx9ULziyTcyei5mr8bhCX8688lTkchwhHEn?=
 =?us-ascii?Q?+YX59J8hdUvoDe/ZT0Ran1FFt63y9IQlTyDsdXuNnDcjeXjF2ZeLVDgAzMM/?=
 =?us-ascii?Q?TRBXCrEGKZOOli660PqyFJeHQnlY3mV076C57yP2nkT2XTm0/jFEvIDCwsGV?=
 =?us-ascii?Q?TkjCaHqX081DjOZ6?=
X-Forefront-Antispam-Report-Untrusted:
 CIP:213.95.148.172;CTRY:DE;LANG:en;SCL:1;SRV:;IPV:CAL;SFV:NSPM;H:denue6es012.ebgroup.elektrobit.com;PTR:eth1-fw1-nbg6.eb.noris.de;CAT:NONE;SFS:(13230040)(704161811799003)(36860700016)(1800799024)(376014)(82310400026)(56012099003)(22082099003)(18002099003);DIR:OUT;SFP:1102;
X-Exchange-RoutingPolicyChecked:
 m77iLZgQGkoC6WIehslYUERslLXId42bcMZMHPJ/2EvwM3op8N2QQIJ56Yas2y1x2wDxgTYIIk7WbJ6jVU8n8FJznKE/PaX6bTkqKjA6buWynIUFCNbZF4p0SibDXseBBALYhwe8aMPv0yHtSBXTI4VQDqNOLR34yKOvUC6SNuLFq7ke1Gi+paTAUzzAI+tqyK3ws1hn0BGfEtseaFPD328y0r5RIJdLAoYC9baTvUvyC1l6T/6Ry/02W0St2raeUz3QAlVkt8t4k/bWiGh2MRF+e1CIs9OOEhJMzzX1QKzM/DlrNjot3KyPzFDVXhhHThUsgldlX6i4HJOjwWTb9Q==
X-MS-Exchange-Transport-CrossTenantHeadersStamped: SA2PR08MB6636
X-MS-Exchange-SkipListedInternetSender:
 ip=[40.93.1.78];domain=SJ0PR08CU001.outbound.protection.outlook.com
X-MS-Exchange-ExternalOriginalInternetSender:
 ip=[40.93.1.78];domain=SJ0PR08CU001.outbound.protection.outlook.com
X-MS-Exchange-Transport-CrossTenantHeadersStripped:
 CH2PEPF00000141.namprd02.prod.outlook.com
X-MS-PublicTrafficType: Email
X-MS-Office365-Filtering-Correlation-Id-Prvs:
	dfe16a1b-b374-48a6-049b-08de9f246831
X-Microsoft-Antispam:
	BCL:0;ARA:13230040|704161811799003|36860700016|376014|1800799024|82310400026|14060799003|35042699022|156008|56012099003|22082099003|18002099003;
X-Microsoft-Antispam-Message-Info:
	=?us-ascii?Q?L1z3KtL3NcefO0PgPb/96RxTZnpiQV7CGp8BLCRLGzN06jglsNOp9DKKxDL4?=
 =?us-ascii?Q?0qalGv6ve3KCILjeHsBcU7xQ3X5Y1uyljZSkQ5D9RKL06a2GwqHykU4sD4Cr?=
 =?us-ascii?Q?anltmAY05ApUIl6VD4c8adBeXge71cmd4V1wpV0TZFbWE4/jyMY+Nif37zSr?=
 =?us-ascii?Q?MbAyes746HKbtMozPWxOEvWI17pJliTcCXLpwLZJVW/V6ReZ7zpWZ+0Nh8Al?=
 =?us-ascii?Q?RL88tk+QETnbv4pF9JEPhYmEtpnrayXPgGjNyfxAmvoSnqsE+0w8FDmWuw0D?=
 =?us-ascii?Q?Mq+/a7PA5yvd0W4ZCzVZMLnICq/mK+/7cj42tQ3Yy9Zh9v5F/PNSn4xpe1OX?=
 =?us-ascii?Q?xjn3y7ZO8XGU+iZAEbqd/94mxFP37FMpDvyfaSHwVQlkoKQ8shXUvVI+60a1?=
 =?us-ascii?Q?dk3+g+sBOTJ/WIwlw1E/3gv7M55Gz84Yc3lE0Nfph+aGWiHK81XFswhSu0lG?=
 =?us-ascii?Q?XGisbZ9hKUNcajU+PdJYTXSLzu95rdL2Hocs5Tzhdjv1iJJgArDVFwcan9Zp?=
 =?us-ascii?Q?vncFlFrnoWPqUNjMEtOXkBb0VeMYv8tUWOcHpQdVB5K+/zHzD8Da05TyKGKM?=
 =?us-ascii?Q?MJQp22tMPtwWF8uxP4EtRsStCh8zdsb4VJw8p8HT2YVKdgoFTlhijHU8m5iR?=
 =?us-ascii?Q?3qvy6mCL4EhvlXO/cU4ko3rzt17dobj432JVOnEcEE97aYrrhi6zCQ4P7jYE?=
 =?us-ascii?Q?rv5tSJ39OGVGmOcnai5cL9VvvnY9Wz9eMp+1HgF6gwqBmJev9MOylPr05ZHT?=
 =?us-ascii?Q?f6PB1zTgkh1C4dmnQSBNlhS9Vy4ItShGcScDS06fLHm5ZZTossWPrxAQa73G?=
 =?us-ascii?Q?YfBb012lZ4YBy08bvG8QM5nurNDnPHORq84pgG5SKdIdDp55uA9Mob6N3ziN?=
 =?us-ascii?Q?IeE6Xa5t0Q/0Z7m0Mng+zqlf1llfjw2xEqEFJOJSaw83+j19vkgMBCnY721B?=
 =?us-ascii?Q?ULMFpXcxjOMBgnvDlOzPOFXgOSAG7VLOneWWG/OIpXI8dBciiAvRemG5Nklh?=
 =?us-ascii?Q?lZNdMrY2GFwFdd3OKN9UF9SGUtLXDCEg5TKLt5tPggsWbeN3+t3B4WaY4gXj?=
 =?us-ascii?Q?clyWPxqIR+XQNvpt2deJS+DMJkZxqfaILjpV3ANgNASiwCbC2t1gxdiGYxG3?=
 =?us-ascii?Q?tAb0/WGUWyMwTtLdoILW0XWjrvTJpbXGqSqJNgFlo56F7MBqzs5crT/RELPP?=
 =?us-ascii?Q?5SYzBejzAnXOqxJg?=
X-Forefront-Antispam-Report:
	CIP:4.79.107.243;CTRY:US;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:SJ0PR08CU001.outbound.protection.outlook.com;PTR:mail-sj0pr08cu00106.outbound.protection.outlook.com;CAT:NONE;SFS:(13230040)(704161811799003)(36860700016)(376014)(1800799024)(82310400026)(14060799003)(35042699022)(156008)(56012099003)(22082099003)(18002099003);DIR:OUT;SFP:1102;
X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1
X-MS-Exchange-AntiSpam-MessageData-0:
	3zKjeuTBo5ThjLRAR4VX8MiSoHzlUKvbdA67uPmxOQWgAHJQH6nGtPhMiZ6HeMS0G8l15t1SpO60pHPhf9I2554hE39awFKnkUMAY433l8H7gGNJhw/B5KX8PMovQ3mxV0Yi5hMGITEg2o768T4X8xplCawY5/f9fcM2hJmLBtYUuQrEYARs2l22269jzIFbuvZGfK+dADqaUZUMAzqf6VtfC34JgLEdNOqnRWQEik2h22S5MLTlMBoGEokliTz1mJonIq5A/kvFPr0/2NRbFPS1Y33P+WucY1qnoGgK64+X6FdJkJSS5zI8QmluiEHoZiLS1E/b3jlZjV9LuTpH9HYuc7Zd1tPqDxkU4itABuQQLoUhUG0pSWulI10/7FMuCyPklrZPYScrpnWMRnulVohaA+vDBN6q78585pwc2USyKNP85p31so8ilQVqJd0Q
X-OriginatorOrg: elektrobit.com
X-MS-Exchange-CrossTenant-OriginalArrivalTime: 20 Apr 2026 21:33:10.8475
 (UTC)
X-MS-Exchange-CrossTenant-Network-Message-Id: a6ebd96d-aeb3-451e-35d2-08de9f246bf2
X-MS-Exchange-CrossTenant-Id: e764c36b-012e-4216-910d-8fd16283182d
X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=e764c36b-012e-4216-910d-8fd16283182d;Ip=[4.79.107.243];Helo=[usbth1es003.ebgroup.elektrobit.com]
X-MS-Exchange-CrossTenant-AuthAs: Internal
X-MS-Exchange-CrossTenant-AuthSource: TreatMessagesAsInternal-CH2PEPF00000141.namprd02.prod.outlook.com
X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem
X-MS-Exchange-Transport-CrossTenantHeadersStamped: SJ0PR08MB6541
X-purgate-ID: tlsNG-720697/1776720796-886D4161-1FEE0194/0/0
X-purgate-type: clean
X-purgate-size: 1730

From: Sergej Proskurin <proskurin@sec.in.tum.de>

This commit adds a p2m class to the struct p2m_domain to distinguish
between the host's original p2m and alternate p2m's. The need for this
functionality will be shown in the following commits.

This is commit 11/12 of the altp2m_init/altp2m_teardown routines phase.

Signed-off-by: Sergej Proskurin <proskurin@sec.in.tum.de>
---
v4: Change return type of p2m_is_(hostp2m|altp2m) from bool_t to bool.
---
 xen/arch/arm/include/asm/p2m.h | 18 ++++++++++++++++++
 1 file changed, 18 insertions(+)

diff --git a/xen/arch/arm/include/asm/p2m.h b/xen/arch/arm/include/asm/p2m.h
index 62261d41e780..8ae0cd7ff589 100644
--- a/xen/arch/arm/include/asm/p2m.h
+++ b/xen/arch/arm/include/asm/p2m.h
@@ -32,6 +32,11 @@ struct domain;
 
 extern void memory_type_changed(struct domain *d);
 
+typedef enum {
+    p2m_host,
+    p2m_alternate,
+} p2m_class_t;
+
 /* Per-p2m-table state */
 struct p2m_domain {
     /*
@@ -111,6 +116,9 @@ struct p2m_domain {
 
     /* Keeping track on which CPU this p2m was used and for which vCPU */
     uint8_t last_vcpu_ran[NR_CPUS];
+
+    /* Choose between: host/alternate. */
+    p2m_class_t p2m_class;
 };
 
 /*
@@ -424,6 +432,16 @@ static inline int get_page_and_type(struct page_info *page,
 /* get host p2m table */
 #define p2m_get_hostp2m(d) ((d)->arch.p2m)
 
+static inline bool p2m_is_hostp2m(const struct p2m_domain *p2m)
+{
+    return p2m->p2m_class == p2m_host;
+}
+
+static inline bool p2m_is_altp2m(const struct p2m_domain *p2m)
+{
+    return p2m->p2m_class == p2m_alternate;
+}
+
 static inline bool p2m_vm_event_sanity_check(struct domain *d)
 {
     return true;
-- 
2.34.1



From xen-devel-bounces@lists.xenproject.org Mon Apr 20 21:33:20 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 20 Apr 2026 21:33:20 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1287809.1568240 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wEwF6-0003Ca-3D; Mon, 20 Apr 2026 21:33:20 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1287809.1568240; Mon, 20 Apr 2026 21:33: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 1wEwF5-0003Aw-OL; Mon, 20 Apr 2026 21:33:19 +0000
Received: by outflank-mailman (input) for mailman id 1287809;
 Mon, 20 Apr 2026 21:33:17 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <Rose.Spangler@elektrobit.com>) id 1wEwF3-0002aX-5a
 for xen-devel@lists.xenproject.org; Mon, 20 Apr 2026 21:33:17 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wEwF2-00CCKM-HP
 for xen-devel@lists.xenproject.org; Mon, 20 Apr 2026 23:33:16 +0200
Received: from [10.42.69.9] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <Rose.Spangler@elektrobit.com>)
 id 69e69b8d-bab6-0a2a0a5309dd-0a2a4509a2f2-30
 for <xen-devel@lists.xenproject.org>; Mon, 20 Apr 2026 23:33:16 +0200
Received: from [40.93.198.137]
 (helo=CY7PR03CU001.outbound.protection.outlook.com)
 by tlsNG-bad1c0.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.1)
 (envelope-from <Rose.Spangler@elektrobit.com>)
 id 69e69b9a-2497-0a2a45090019-285dc689dbe7-4
 for <xen-devel@lists.xenproject.org>; Mon, 20 Apr 2026 23:33:16 +0200
Received: from CH2PR17CA0001.namprd17.prod.outlook.com (2603:10b6:610:53::11)
 by DS0PR08MB9466.namprd08.prod.outlook.com (2603:10b6:8:1b7::12) with
 Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9818.32; Mon, 20 Apr
 2026 21:33:09 +0000
Received: from CH2PEPF00000140.namprd02.prod.outlook.com
 (2603:10b6:610:53:cafe::21) by CH2PR17CA0001.outlook.office365.com
 (2603:10b6:610:53::11) with Microsoft SMTP Server (version=TLS1_3,
 cipher=TLS_AES_256_GCM_SHA384) id 15.20.9791.48 via Frontend Transport; Mon,
 20 Apr 2026 21:33:08 +0000
Received: from usbth1es003.ebgroup.elektrobit.com (4.79.107.243) by
 CH2PEPF00000140.mail.protection.outlook.com (10.167.244.72) with Microsoft
 SMTP Server (version=TLS1_3, cipher=TLS_AES_256_GCM_SHA384) id 15.20.9791.48
 via Frontend Transport; Mon, 20 Apr 2026 21:33:08 +0000
Received: from usbth1es003 (localhost [127.0.0.1])
 by usbth1es003.ebgroup.elektrobit.com (Postfix) with SMTP id 4fzzHR4bQxz1wdX; 
 Mon, 20 Apr 2026 14:33:07 -0700 (PDT)
Received: from BYAPR08CU003.outbound.protection.outlook.com
 (mail-byapr08cu00301.outbound.protection.outlook.com [40.93.1.105])
 (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)
 key-exchange secp384r1 server-signature RSA-PSS (2048 bits) server-digest
 SHA256) (No client certificate requested)
 by usbth1es003.ebgroup.elektrobit.com (Postfix) with ESMTPS;
 Mon, 20 Apr 2026 14:33:07 -0700 (PDT)
Received: from BY1P220CA0047.NAMP220.PROD.OUTLOOK.COM (2603:10b6:a03:59e::9)
 by MN2PR08MB6319.namprd08.prod.outlook.com (2603:10b6:208:1a6::16) with
 Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9818.32; Mon, 20 Apr
 2026 21:32:55 +0000
Received: from SJ1PEPF000026C8.namprd04.prod.outlook.com
 (2603:10b6:a03:59e:cafe::c4) by BY1P220CA0047.outlook.office365.com
 (2603:10b6:a03:59e::9) with Microsoft SMTP Server (version=TLS1_3,
 cipher=TLS_AES_256_GCM_SHA384) id 15.20.9791.48 via Frontend Transport; Mon,
 20 Apr 2026 21:32:55 +0000
Received: from denue6es012.ebgroup.elektrobit.com (213.95.148.172) by
 SJ1PEPF000026C8.mail.protection.outlook.com (10.167.244.105) with Microsoft
 SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id
 15.20.9791.48 via Frontend Transport; Mon, 20 Apr 2026 21:32:54 +0000
Received: from ubuntu.localdomain (10.10.178.50) by
 denue6es012.ebgroup.elektrobit.com (10.243.160.140) with Microsoft SMTP
 Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id
 15.2.2562.35; Mon, 20 Apr 2026 23:32:49 +0200
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@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=elektrobit.com header.i="@elektrobit.com" header.h="From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck"; dkim=pass header.s=selector1 header.d=elektrobit.com header.i="@elektrobit.com" header.h="From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck"
ARC-Seal: i=2; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=pass;
 b=bqmjO7vZunCjYPdE/6ii+SWbSZ0A+QIDRX1AaX4eF01pfegrAsSG4K3nXzEqGO8T3/s4VzyWGvQ0jq2exheL4eQQewCeAUV/+j2Ki/TLoy9I3tbDkZz2qHft8Tpv/lDHQT3vmEAR/YBPti6iKsRbbbevAjeMq/UdXP+papACH8ArNwJnHR+jrj2LRZ021Udg98QuJW4WFf2+ggXrGwraTHLkJKiIurCBQwVMCPWYfabxIqZQvGwXJkHQtknkhF5V17zaUYhAjSMh9fJu1wpnAFjY/WNKr5JEoDtQn9ADjWI2CtQG2Eay/I5Bpge7IfFKDi5oC1qubvR1lHQ7fwtaAg==
ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com;
 s=arcselector10001;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1;
 bh=lnQuy/T8mDWKqAQXnoELf5ceU1mbzwKchncHWAqAvgo=;
 b=Vajh/DKz2YSJyTJxskoKurnELk8keUkGZMFdEUcR3iASNsB8roPDeV8FSmRTl+cKGPGpMOTBm24rT3ba8MOVwSljeAb3Y8ieUufnl5KjwenFfKqcQnCYagr7HaGaRouh/92EU/VZU6mRHgpBmgbyS+99UQOKjO86q1jBS626Xc85CpCcjPpWvs/3Prv6ZelrJL4Pg4KSmOwbMNe6K2jQ67X6gKoMKDXmfUcTd1mowi3sPZVPVE13UptMEDYSRSLMqsTUWWnmL/4A2xSdrNoo+5va3VseVdA7a7W/KTylJozBDtauxxeoZ7VtGv+7vfc4xSc7bRa2ocN1ujhEivmcBw==
ARC-Authentication-Results: i=2; mx.microsoft.com 1; spf=pass (sender ip is
 40.93.1.105) smtp.rcpttodomain=amd.com smtp.mailfrom=elektrobit.com;
 dmarc=pass (p=quarantine sp=none pct=100) action=none
 header.from=elektrobit.com; dkim=pass (signature was verified)
 header.d=elektrobit.com; arc=pass (0 oda=1 ltdi=1
 spf=[1,1,smtp.mailfrom=elektrobit.com]
 dmarc=[1,1,header.from=elektrobit.com])
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=elektrobit.com;
 s=selector1;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck;
 bh=lnQuy/T8mDWKqAQXnoELf5ceU1mbzwKchncHWAqAvgo=;
 b=WlBs5XTYT+ztCvLuc5Eew4FL+t/kLsCVBYD6OIH+YD0SlpjKckJavApzs2toV9kBArDVQtOzoA+iVBnn/5D566tmP2hgX3shC766qaUDDUyF/AELRzUsnwb7vzGoVdpal5eP2xrP12zMk+1PSqjd6C8vs4sIKOtWqjk4+9GA/bs=
X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 40.93.1.105)
 smtp.mailfrom=elektrobit.com; dkim=pass (signature was verified)
 header.d=elektrobit.com;dmarc=pass action=none header.from=elektrobit.com;
Received-SPF: Pass (protection.outlook.com: domain of elektrobit.com
 designates 40.93.1.105 as permitted sender) receiver=protection.outlook.com;
 client-ip=40.93.1.105; helo=BYAPR08CU003.outbound.protection.outlook.com;
 pr=C
ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none;
 b=RyMDUJcOODqsmLmZDMpi79UOykH/1csOpMDoY/6fOnTm8wLG9II1Z/eONRZbDvbXmHY0GqCcN/tL2l8nSP5DkGTbiRdSrGyQqCl9bC+/7pfS9WD+GFXT2UBo9hToXGZj4LyylEi7U/BrEDArILMzKLeSaSMvjp3zAJFokboMakiNnDajjCVOX2iVFvQ3VJ5QiCTUcdwBVDBkbO7ql62ctKVbQHY2l5+JrTw2endzLBSUgoFNa82cGMlUpRuFNbrRNRFeUplRWi8mISz6kGvqU77U/s1NBwn2DmmHIIUqoKhlh/wv3beyfePyuLHvBCfVRqXgDzzghkG/3Wb9HWTdWw==
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com;
 s=arcselector10001;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1;
 bh=lnQuy/T8mDWKqAQXnoELf5ceU1mbzwKchncHWAqAvgo=;
 b=I4a/Oy79bmDcO2T6INLFNucPvLq7YbLTYDheGkVUR+eatBZQAsVI/CCJ5d5W0y+rEfnj6iSK6TJ34pJiFQ7SGS3MqgmqVh81qStDHfO6ayhLSyRrqh+Wtpz9oxiOdYj9uBK4zfuWWM6/AcQOV5qldxPqpBCDwdrRpyrqUUpE5OxX6Zq3jJ1kmzoY4VS8RDgX+6uYE1be2MZf15lQn01DXM2br/MsnsnyClFZoyV46xvpAkajf/t4qVFp8eagfdDUm7s/BbZ6ElgOQS5GZf4uCOPockjNhaIw3/5IbMZYpbxvFYHigG9FKVC9kguqAYb29O/21UNbIQbZbj2ySxwh3Q==
ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass (sender ip is
 213.95.148.172) smtp.rcpttodomain=lists.xenproject.org
 smtp.mailfrom=elektrobit.com; dmarc=pass (p=quarantine sp=none pct=100)
 action=none header.from=elektrobit.com; dkim=none (message not signed);
 arc=none (0)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=elektrobit.com;
 s=selector1;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck;
 bh=lnQuy/T8mDWKqAQXnoELf5ceU1mbzwKchncHWAqAvgo=;
 b=WlBs5XTYT+ztCvLuc5Eew4FL+t/kLsCVBYD6OIH+YD0SlpjKckJavApzs2toV9kBArDVQtOzoA+iVBnn/5D566tmP2hgX3shC766qaUDDUyF/AELRzUsnwb7vzGoVdpal5eP2xrP12zMk+1PSqjd6C8vs4sIKOtWqjk4+9GA/bs=
X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 213.95.148.172)
 smtp.mailfrom=elektrobit.com; dkim=none (message not signed)
 header.d=none;dmarc=pass action=none header.from=elektrobit.com;
Received-SPF: Pass (protection.outlook.com: domain of elektrobit.com
 designates 213.95.148.172 as permitted sender)
 receiver=protection.outlook.com; client-ip=213.95.148.172;
 helo=denue6es012.ebgroup.elektrobit.com; pr=C
From: Rose Spangler <Rose.Spangler@elektrobit.com>
To: <xen-devel@lists.xenproject.org>
CC: Rose Spangler <Rose.Spangler@elektrobit.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>
Subject: [RFC PATCH v6 15/43] arm/p2m: Allocate hostp2m with xzalloc
Date: Mon, 20 Apr 2026 17:31:38 -0400
Message-ID: <20260420213206.208750-16-Rose.Spangler@elektrobit.com>
X-Mailer: git-send-email 2.34.1
In-Reply-To: <20260420213206.208750-1-Rose.Spangler@elektrobit.com>
References: <20260420213206.208750-1-Rose.Spangler@elektrobit.com>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit
Content-Type: text/plain
X-Originating-IP: [10.10.178.50]
X-ClientProxiedBy: denue6es012.ebgroup.elektrobit.com (10.243.160.140) To
 denue6es012.ebgroup.elektrobit.com (10.243.160.140)
X-EOPAttributedMessage: 1
X-MS-Exchange-SkipListedInternetSender:
 ip=[213.95.148.172];domain=denue6es012.ebgroup.elektrobit.com
X-MS-TrafficTypeDiagnostic:
	SJ1PEPF000026C8:EE_|MN2PR08MB6319:EE_|CH2PEPF00000140:EE_|DS0PR08MB9466:EE_
X-MS-Office365-Filtering-Correlation-Id: d92189a4-97ed-4be0-92ad-08de9f246a82
X-SM-outgoing: yes
X-MS-Exchange-SenderADCheck: 1
X-MS-Exchange-AntiSpam-Relay: 0
X-Microsoft-Antispam-Untrusted:
 BCL:0;ARA:13230040|1800799024|82310400026|376014|36860700016|56012099003|22082099003|18002099003|11006099003;
X-Microsoft-Antispam-Message-Info-Original:
 =?us-ascii?Q?ORCWejIsWrNq16YE9IRDHBqtySMkMgNUF5VxkPVUwXpkc+rplZeqXu4TAf6s?=
 =?us-ascii?Q?UMl0NlqT4unK1JJt5H/uXTBTg8W3FRDwCO60QYlCLnZfh2VH7kdZRfb5Tl/U?=
 =?us-ascii?Q?575wNNBKklR4vic2ksKlJv3/MCejvP7wwu76sycU4W82PHeOnkhcAnSIqjWw?=
 =?us-ascii?Q?1CnPAdDuKpXMyDVVA3IT4PZ+5MKgz4wg69P/cn/1EwZQHGv2oYiLtwTZ227W?=
 =?us-ascii?Q?1CAc/oplTk7lnHF5VfJnJTso1JKNVnbFlYI3I6nC5kGTBtWwimt+tRvOJBaP?=
 =?us-ascii?Q?rnYxf+doO0KenT9vHDl4uZu2tK3E9BCAO2dxY0CdGT+J0E2I/ynP4Swf4Ahl?=
 =?us-ascii?Q?7HSW+IMYAwrZf6LzryTQhO7mfabR2ZKf5rq4dMRi5gSF4+j9Os0VN6DhFZ3A?=
 =?us-ascii?Q?jMdv2vmFIhUC1IdBPadCjWAF0xb75b8Zyy4QGzzzJcJWOVBrLBZMJapKtlB/?=
 =?us-ascii?Q?dQcHRZ+QpqDq/7mMr613JQc42+vd1pMDY5F1sgkF058QIi3arL9fSQmDH/4J?=
 =?us-ascii?Q?cwIPYvXKBSKFaZnXQ+4BMC56u4BovyrbrOKq1zntX21KwLeu4Gx20IyzFfbR?=
 =?us-ascii?Q?zxyeyzOUMWOHe634eVMhmsg3W1uU4G0OAFpXYziyahQZcfYJ8OejAyhlUI/0?=
 =?us-ascii?Q?PtFT39X9TwL+4qbDX/VboPEOGS/F19ftaATjsg+H3Ajpeqoxbh9txoqDD3t4?=
 =?us-ascii?Q?iPhWRZcrJs1Z7jB2r/nsFV7LP5viG1C83TKyNsRpWOd1ZdWDE9QWaPq48RSP?=
 =?us-ascii?Q?J85/PVDOIdTP4afuv1ejYFkt8Iyf5t/TAlJA/406BUwB600/ibqKbpSFUZqv?=
 =?us-ascii?Q?Kxju85sojP6z0bRCgUbFGeBBm2e1rFfypWrCeEv7YDUAJdCHeJGA6+6Q+0ng?=
 =?us-ascii?Q?y/BQRaX/G6hbJxVOZ3yx+atFRsE5VnGyNhnyvx4Z6H01ruBywp/8htH5u6Be?=
 =?us-ascii?Q?s8a1mD6gz2XJn6TohY94u6GtNH9c94YlG0+8qJ6Z9BoLl4zxuqwvLmD7zpDW?=
 =?us-ascii?Q?ZLzPGdKCKtN698lwEMUscLCIKu8ekDDenuo19WNZQEaOXt97X7d1fubIJbza?=
 =?us-ascii?Q?2BqIw6Hdkpb87viw1+OSSekimPxzBhCMEtcNExu1A1RM8KIDnldYUEHPiqdu?=
 =?us-ascii?Q?KnVXzEW78lfev0rwInHRP0Y8E4/LV5sf/b1H1WZT9kqs6wNrs+zZnU6zlLfG?=
 =?us-ascii?Q?j51PJD26Cu9oDVF2LyMuaLCOjD8cUEz31//Xej8wzLjLmDsencKEW3MmBcTv?=
 =?us-ascii?Q?pMER5n3JTgxFas9yZ0ncakQTolKsL5FEbMxB8KSSm5elmU7oUVuIZAKAg0Iu?=
 =?us-ascii?Q?2Do1PjbYBR2DFyEY+RVJcH4W0XcBAUe9t/xbaJUAk0r/NQ=3D=3D?=
X-Forefront-Antispam-Report-Untrusted:
 CIP:213.95.148.172;CTRY:DE;LANG:en;SCL:1;SRV:;IPV:CAL;SFV:NSPM;H:denue6es012.ebgroup.elektrobit.com;PTR:eth1-fw1-nbg6.eb.noris.de;CAT:NONE;SFS:(13230040)(1800799024)(82310400026)(376014)(36860700016)(56012099003)(22082099003)(18002099003)(11006099003);DIR:OUT;SFP:1102;
X-Exchange-RoutingPolicyChecked:
 Gxthn6BOF0XGeg3v1dvERdHsQDKmRHI8FupAWnTJQM++Emu885gOKA9bsMGaUH68sFskgtBlRO+i9l/v6hUc/vBC/eX+G3qN4sh+KLqTCTavTgWl5Jg7lF6pqAum8g+RDansmHaMhSGmBCwTfhoI9O/9qwWCOmazjD3NBgVvu9k4Dp1O4Pd7put0qRRbI8d9jOSo9suFnQTCJ3OotqEObucppeVgR+mYlwR+7aSTxDi6tF26qrVgGHEpo5SYWGgHTb9pLGlpjESTh8BC41e9/mpI0DIht9h6+BXsC5Z+wiAMxg4hrLaQ2zpHXhuGZaeXabRQjRkwLWmPbqGBUrXjFQ==
X-MS-Exchange-Transport-CrossTenantHeadersStamped: MN2PR08MB6319
X-MS-Exchange-SkipListedInternetSender:
 ip=[40.93.1.105];domain=BYAPR08CU003.outbound.protection.outlook.com
X-MS-Exchange-ExternalOriginalInternetSender:
 ip=[40.93.1.105];domain=BYAPR08CU003.outbound.protection.outlook.com
X-MS-Exchange-Transport-CrossTenantHeadersStripped:
 CH2PEPF00000140.namprd02.prod.outlook.com
X-MS-PublicTrafficType: Email
X-MS-Office365-Filtering-Correlation-Id-Prvs:
	8ba51a4e-795e-41b5-0c3f-08de9f246259
X-Microsoft-Antispam:
	BCL:0;ARA:13230040|36860700016|1800799024|376014|14060799003|35042699022|82310400026|156008|11006099003|56012099003|22082099003|18002099003;
X-Microsoft-Antispam-Message-Info:
	=?us-ascii?Q?AvhKhmn8Cz4/HY8OIsf7mUfdd0/SWBNNwrm1CA6lmKK3IXuVJtKXFiBWOW2p?=
 =?us-ascii?Q?Js+zYUy9HQxI39wtj3JhJkoDggrUqYTCkqju0KkoM0sA48HBpH/3JCyA5nrd?=
 =?us-ascii?Q?ngYOO2xnAvHIf6yJD2W9jn827sLvEcM83yCnCCgTvyY2IHM0Nlt4EP/IqvW6?=
 =?us-ascii?Q?pqk+PGPdw14Mp9qmgXdsIVoljw/1Ge+Jh8KX7jsBDLh3P0zgnGogT/Gs5heR?=
 =?us-ascii?Q?M54WlKsXBX2SRsVRn0jJbhuv6VgKySEykphr9Dk5YmD9wOYRo43J/5ikPWdF?=
 =?us-ascii?Q?moSUyvqDrOgzaeztQqtQAAZaNZs58Zh0nycpAKCSZpq3pLTmmlLRARs/qmfI?=
 =?us-ascii?Q?Wql8Sj2YL4PTLKxjCDaB7v6gRSmndHPrzOHSQK5WxRNsmXuHBPYwuirmN5sS?=
 =?us-ascii?Q?Ix3F90NpnHE5snflv6/NvO3ET7UKNqNaegARNSmzAn4yjz0o0giSg8pzJonx?=
 =?us-ascii?Q?9AKrTYWf/SvDtF82kDoW5/z9Uc+aRFQGCsJGd/Kho3Q3x4NoKxfzLRW+O2v1?=
 =?us-ascii?Q?s3xefC/9JPSXrgcTvdlN+qCUYzspcy+v9QUE2TytMfdJvyOM8nWT1/GKkkcK?=
 =?us-ascii?Q?zrqYKErBgAHIxKScnW26C/SkBNlBsb5LZpkVLv9UO2SaiEA3NEgVNNLKDarf?=
 =?us-ascii?Q?8wnjGZuBA42TVkA50Rvf+SKCWguGVoNQeT22DgNPIt2Yt1mCCoF0cXTngtf5?=
 =?us-ascii?Q?eND/3eizTEsXIhKdavzQjM3z+tNY+dELN2/SfjzCYSWCum3GoxKpt2eiB2Ac?=
 =?us-ascii?Q?MtDoFgvOyMhxpbTwrxqkxsF5jxk7TcK0MYOKBFpjdbJc837iTAiTP93PAsX3?=
 =?us-ascii?Q?QLVkMZR00D9MaVjml4jfwJu1HfzykOL8wE+7kzPi514Wym2izFlLXR/PG0gU?=
 =?us-ascii?Q?YBBSfVgQEbQEG4zeQ3YKThVCYN+4XZLtjVGnZO//yE1pWGAZ+6tAzLYwJ6FM?=
 =?us-ascii?Q?PdcIFOsG5x5D6Wm7MaOenn0eDV5TYaEEyC6WTKyD2GMIlIw9fOTJ7jI9q3Vy?=
 =?us-ascii?Q?tPI6Z5kFX/X3WlowmLblVZfmBjVqsEURb4DfYu4YniO/8nyeGaCI+GtAOAXk?=
 =?us-ascii?Q?WkHbXJTvqizW7S3WCLfjeVqBRwdO/77jLjUSbwyHXyadrFV6l7mcR3NMTs4q?=
 =?us-ascii?Q?XFQYgkycwLkQ0zugD05j1NUPAj3GPxo5ZpIAvj12CoqRrqBLpEAgILzKKWfL?=
 =?us-ascii?Q?ATsGIb4yRR0t5vP1XAnTl9wg+B0Z+KAVNVLZCce3TP7LYSKwhrWLuAHUa5zm?=
 =?us-ascii?Q?VXW21TJRe2aHFludo4v6JjPGkZXOWWMN+gikIQ4dZMq1wfgEsVScfl7k4w8I?=
 =?us-ascii?Q?fLDMYicw7LEbhKoKHl5jhHGdzZRbEYKxkwCsQ90QUxEImA=3D=3D?=
X-Forefront-Antispam-Report:
	CIP:4.79.107.243;CTRY:US;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:BYAPR08CU003.outbound.protection.outlook.com;PTR:mail-byapr08cu00301.outbound.protection.outlook.com;CAT:NONE;SFS:(13230040)(36860700016)(1800799024)(376014)(14060799003)(35042699022)(82310400026)(156008)(11006099003)(56012099003)(22082099003)(18002099003);DIR:OUT;SFP:1102;
X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1
X-MS-Exchange-AntiSpam-MessageData-0:
	We0n7kf4vpuWmcMuhnIplB4lhjmFZi8kulX/NM2scKTnyCVywmkdcfW5ASVzkW5QeNRg3ZI3KJ68jVOUx/+xHk0hZNQcW8yI3nYppeUF1SHNjlI7bPCa9/tSATXS9WFJ06rtA2OlOKf3d0Ihkt9UVHolBjmIRUr1zNq5cVFtJ4QQw9sFzChXGxy1l+mKhGVjzX0k6Ch0EABOgBFHf9UDOD/kZoAgVWKTLKwZUm3RkhXyNct0y29xXm5y3ODn+aH0nnjl+13KaoFUNMEPKhW224d5yjoJerJa6fyYZaksucm++Azo+zin1QqbxzqW0YDN9SZYvRHPdI3rbcS+Un38oL5iM4MWlHKWykkD+5TEyjT3nxCJMAyBgAWL0PIYqQcO6ViqQVRLdxewmlegMKQt015g0pe0gz0VjCrN7VbX1wfvDK7W5wb0qr3zdktuHQaG
X-OriginatorOrg: elektrobit.com
X-MS-Exchange-CrossTenant-OriginalArrivalTime: 20 Apr 2026 21:33:08.4622
 (UTC)
X-MS-Exchange-CrossTenant-Network-Message-Id: d92189a4-97ed-4be0-92ad-08de9f246a82
X-MS-Exchange-CrossTenant-Id: e764c36b-012e-4216-910d-8fd16283182d
X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=e764c36b-012e-4216-910d-8fd16283182d;Ip=[4.79.107.243];Helo=[usbth1es003.ebgroup.elektrobit.com]
X-MS-Exchange-CrossTenant-AuthAs: Internal
X-MS-Exchange-CrossTenant-AuthSource: TreatMessagesAsInternal-CH2PEPF00000140.namprd02.prod.outlook.com
X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem
X-MS-Exchange-Transport-CrossTenantHeadersStamped: DS0PR08MB9466
X-purgate-ID: tlsNG-bad1c0/1776720796-92772A53-59463CAE/0/0
X-purgate-type: clean
X-purgate-size: 7264

This commit replaces the concrete p2m_domain member in arch_domain with a
pointer to p2m_domain, which is allocated with xzalloc during p2m
initialization.

In the following commits, the altp2m_init and altp2m_teardown routines from
x86 are be moved to common code. These routines (respectively) allocate and
free the p2m_domain structs for altp2m views.

While it would be possible to have special code paths for
allocating/freeing altp2m views while keeping the hostp2m as an concrete
member, this results in code duplication and increases complexity without
any clear benefit. Therefore, switching the hostp2m to be allocated
separately from arch_domain (similarly to x86) makes it possible to use the
same functions for both allocation/teardown/freeing of the hostp2m and
altp2m views.

This is commit 4/12 of the altp2m_init/altp2m_teardown routines phase.

Signed-off-by: Rose Spangler <Rose.Spangler@elektrobit.com>
---
v6: Introduced this patch.
---
 xen/arch/arm/domain.c                    |  2 +-
 xen/arch/arm/include/asm/domain.h        |  2 +-
 xen/arch/arm/include/asm/p2m.h           |  2 +-
 xen/arch/arm/mm.c                        |  2 +-
 xen/arch/arm/mmu/p2m.c                   | 27 +++++++++++++++++++++---
 xen/arch/arm/traps.c                     |  2 +-
 xen/drivers/passthrough/arm/ipmmu-vmsa.c |  2 +-
 xen/drivers/passthrough/arm/smmu-v3.c    |  2 +-
 xen/drivers/passthrough/arm/smmu.c       |  2 +-
 9 files changed, 32 insertions(+), 11 deletions(-)

diff --git a/xen/arch/arm/domain.c b/xen/arch/arm/domain.c
index 26380a807cad..be824a5ba18d 100644
--- a/xen/arch/arm/domain.c
+++ b/xen/arch/arm/domain.c
@@ -1099,7 +1099,7 @@ int domain_relinquish_resources(struct domain *d)
          * We are about to free the intermediate page-tables, so clear the
          * root to prevent any walk to use them.
          */
-        p2m_clear_root_pages(&d->arch.p2m);
+        p2m_clear_root_pages(d->arch.p2m);
 
     PROGRESS(p2m):
         ret = p2m_teardown(d);
diff --git a/xen/arch/arm/include/asm/domain.h b/xen/arch/arm/include/asm/domain.h
index ffe5d0d9f0a6..576dbdec20af 100644
--- a/xen/arch/arm/include/asm/domain.h
+++ b/xen/arch/arm/include/asm/domain.h
@@ -72,7 +72,7 @@ struct arch_domain
 #endif
 
     /* Virtual MMU */
-    struct p2m_domain p2m;
+    struct p2m_domain *p2m;
 
     struct hvm_domain hvm;
 
diff --git a/xen/arch/arm/include/asm/p2m.h b/xen/arch/arm/include/asm/p2m.h
index 010ce8c9ebbd..23df91ea13e9 100644
--- a/xen/arch/arm/include/asm/p2m.h
+++ b/xen/arch/arm/include/asm/p2m.h
@@ -410,7 +410,7 @@ static inline int get_page_and_type(struct page_info *page,
 }
 
 /* get host p2m table */
-#define p2m_get_hostp2m(d) (&(d)->arch.p2m)
+#define p2m_get_hostp2m(d) ((d)->arch.p2m)
 
 static inline bool p2m_vm_event_sanity_check(struct domain *d)
 {
diff --git a/xen/arch/arm/mm.c b/xen/arch/arm/mm.c
index 6df8b616e464..46f9363ea851 100644
--- a/xen/arch/arm/mm.c
+++ b/xen/arch/arm/mm.c
@@ -116,7 +116,7 @@ bool page_is_offlinable(mfn_t mfn)
 
 unsigned long domain_get_maximum_gpfn(struct domain *d)
 {
-    return gfn_x(d->arch.p2m.max_mapped_gfn);
+    return gfn_x(d->arch.p2m->max_mapped_gfn);
 }
 
 void share_xen_page_with_guest(struct page_info *page, struct domain *d,
diff --git a/xen/arch/arm/mmu/p2m.c b/xen/arch/arm/mmu/p2m.c
index 51abf3504fcf..3ecb969a0369 100644
--- a/xen/arch/arm/mmu/p2m.c
+++ b/xen/arch/arm/mmu/p2m.c
@@ -5,6 +5,7 @@
 #include <xen/lib.h>
 #include <xen/sched.h>
 #include <xen/softirq.h>
+#include <xen/xmalloc.h>
 
 #include <asm/alternative.h>
 #include <asm/event.h>
@@ -1475,7 +1476,7 @@ void p2m_final_teardown(struct domain *d)
 
     /* p2m not actually initialized */
     if ( !p2m->domain )
-        return;
+        goto free_p2m;
 
     /*
      * No need to call relinquish_p2m_mapping() here because
@@ -1499,11 +1500,13 @@ void p2m_final_teardown(struct domain *d)
     radix_tree_destroy(&p2m->mem_access_settings, NULL);
 
     p2m->domain = NULL;
+
+free_p2m:
+    xfree(p2m);
 }
 
-int p2m_init(struct domain *d)
+static int p2m_initialise(struct domain *d, struct p2m_domain *p2m)
 {
-    struct p2m_domain *p2m = p2m_get_hostp2m(d);
     int rc;
     unsigned int cpu;
 
@@ -1556,6 +1559,24 @@ int p2m_init(struct domain *d)
     return 0;
 }
 
+int p2m_init(struct domain *d)
+{
+    struct p2m_domain *p2m = xzalloc(struct p2m_domain);
+    int rc;
+
+    if ( !p2m )
+        return -ENOMEM;
+
+    rc = p2m_initialise(d, p2m);
+
+    if ( !rc )
+        d->arch.p2m = p2m;
+    else
+        xfree(p2m);
+
+    return rc;
+}
+
 /*
  * The function will go through the p2m and remove page reference when it
  * is required. The mapping will be removed from the p2m.
diff --git a/xen/arch/arm/traps.c b/xen/arch/arm/traps.c
index 0c01f37ad6b4..637d27659b20 100644
--- a/xen/arch/arm/traps.c
+++ b/xen/arch/arm/traps.c
@@ -984,7 +984,7 @@ void vcpu_show_registers(struct vcpu *v)
 #endif
 
 #ifdef CONFIG_MMU
-    ctxt.vttbr_el2 = v->domain->arch.p2m.vttbr;
+    ctxt.vttbr_el2 = v->domain->arch.p2m->vttbr;
 #endif
 
     _show_registers(&v->arch.cpu_info->guest_cpu_user_regs, &ctxt, 1, v);
diff --git a/xen/drivers/passthrough/arm/ipmmu-vmsa.c b/xen/drivers/passthrough/arm/ipmmu-vmsa.c
index fa9ab9cb1330..d246c5e59005 100644
--- a/xen/drivers/passthrough/arm/ipmmu-vmsa.c
+++ b/xen/drivers/passthrough/arm/ipmmu-vmsa.c
@@ -565,7 +565,7 @@ static int ipmmu_domain_init_context(struct ipmmu_vmsa_domain *domain)
      * Use P2M table for this Xen domain.
      */
     ASSERT(domain->d != NULL);
-    ttbr = page_to_maddr(domain->d->arch.p2m.root);
+    ttbr = page_to_maddr(domain->d->arch.p2m->root);
 
     dev_info(domain->mmu->root->dev, "%pd: Set IPMMU context %u (pgd 0x%"PRIx64")\n",
              domain->d, domain->context_id, ttbr);
diff --git a/xen/drivers/passthrough/arm/smmu-v3.c b/xen/drivers/passthrough/arm/smmu-v3.c
index bf153227dbd9..a7fbe58cba77 100644
--- a/xen/drivers/passthrough/arm/smmu-v3.c
+++ b/xen/drivers/passthrough/arm/smmu-v3.c
@@ -1205,7 +1205,7 @@ static int arm_smmu_domain_finalise_s2(struct arm_smmu_domain *smmu_domain,
 	vtcr->tsz = 64 - p2m_ipa_bits;
 	vtcr->sl = 2 - P2M_ROOT_LEVEL;
 
-	arm_lpae_s2_cfg.vttbr  = page_to_maddr(smmu_domain->d->arch.p2m.root);
+	arm_lpae_s2_cfg.vttbr  = page_to_maddr(smmu_domain->d->arch.p2m->root);
 
 	vmid = arm_smmu_bitmap_alloc(smmu->vmid_map, smmu->vmid_bits);
 	if (vmid < 0)
diff --git a/xen/drivers/passthrough/arm/smmu.c b/xen/drivers/passthrough/arm/smmu.c
index d63c9015510e..0975be2562bb 100644
--- a/xen/drivers/passthrough/arm/smmu.c
+++ b/xen/drivers/passthrough/arm/smmu.c
@@ -1247,7 +1247,7 @@ static void arm_smmu_init_context_bank(struct arm_smmu_domain *smmu_domain)
 	/* TTBR0 */
 	/* Xen: The page table is shared with the P2M code */
 	ASSERT(smmu_domain->cfg.domain != NULL);
-	p2maddr = page_to_maddr(smmu_domain->cfg.domain->arch.p2m.root);
+	p2maddr = page_to_maddr(smmu_domain->cfg.domain->arch.p2m->root);
 
 	dev_notice(smmu->dev, "d%u: p2maddr 0x%"PRIpaddr"\n",
 		   smmu_domain->cfg.domain->domain_id, p2maddr);
-- 
2.34.1



From xen-devel-bounces@lists.xenproject.org Mon Apr 20 21:33:21 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 20 Apr 2026 21:33:21 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1287813.1568247 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wEwF7-0003Nx-ET; Mon, 20 Apr 2026 21:33:21 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1287813.1568247; Mon, 20 Apr 2026 21:33: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 1wEwF6-0003Kq-NP; Mon, 20 Apr 2026 21:33:20 +0000
Received: by outflank-mailman (input) for mailman id 1287813;
 Mon, 20 Apr 2026 21:33:18 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <Rose.Spangler@elektrobit.com>) id 1wEwF3-0002hy-O6
 for xen-devel@lists.xenproject.org; Mon, 20 Apr 2026 21:33:17 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wEwF3-00CCKM-2t
 for xen-devel@lists.xenproject.org; Mon, 20 Apr 2026 23:33:17 +0200
Received: from [10.42.69.11] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <Rose.Spangler@elektrobit.com>)
 id 69e69b55-bab6-0a2a0a5309dd-0a2a450b9074-46
 for <xen-devel@lists.xenproject.org>; Mon, 20 Apr 2026 23:33:17 +0200
Received: from [52.101.193.135]
 (helo=CH1PR05CU001.outbound.protection.outlook.com)
 by tlsNG-42698a.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.1)
 (envelope-from <Rose.Spangler@elektrobit.com>)
 id 69e69b9b-212f-0a2a450b0019-3465c1872f62-3
 for <xen-devel@lists.xenproject.org>; Mon, 20 Apr 2026 23:33:16 +0200
Received: from BY5PR17CA0015.namprd17.prod.outlook.com (2603:10b6:a03:1b8::28)
 by PH0PR08MB11076.namprd08.prod.outlook.com (2603:10b6:510:38e::12)
 with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9818.32; Mon, 20 Apr
 2026 21:33:10 +0000
Received: from CO1PEPF00012E80.namprd03.prod.outlook.com
 (2603:10b6:a03:1b8:cafe::fc) by BY5PR17CA0015.outlook.office365.com
 (2603:10b6:a03:1b8::28) with Microsoft SMTP Server (version=TLS1_3,
 cipher=TLS_AES_256_GCM_SHA384) id 15.20.9791.48 via Frontend Transport; Mon,
 20 Apr 2026 21:33:10 +0000
Received: from usbth1es003.ebgroup.elektrobit.com (4.79.107.243) by
 CO1PEPF00012E80.mail.protection.outlook.com (10.167.249.55) with Microsoft
 SMTP Server (version=TLS1_3, cipher=TLS_AES_256_GCM_SHA384) id 15.20.9791.48
 via Frontend Transport; Mon, 20 Apr 2026 21:33:09 +0000
Received: from usbth1es003 (localhost [127.0.0.1])
 by usbth1es003.ebgroup.elektrobit.com (Postfix) with SMTP id 4fzzHT4Kfnz1wdS; 
 Mon, 20 Apr 2026 14:33:09 -0700 (PDT)
Received: from DM2PR0701CU001.outbound.protection.outlook.com
 (mail-dm2pr0701cu00101.outbound.protection.outlook.com [40.93.13.65])
 (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)
 key-exchange secp384r1 server-signature RSA-PSS (2048 bits) server-digest
 SHA256) (No client certificate requested)
 by usbth1es003.ebgroup.elektrobit.com (Postfix) with ESMTPS;
 Mon, 20 Apr 2026 14:33:09 -0700 (PDT)
Received: from BY1P220CA0050.NAMP220.PROD.OUTLOOK.COM (2603:10b6:a03:59e::12)
 by BLAPR08MB6850.namprd08.prod.outlook.com (2603:10b6:208:322::21)
 with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9818.32; Mon, 20 Apr
 2026 21:33:03 +0000
Received: from SJ1PEPF000026C8.namprd04.prod.outlook.com
 (2603:10b6:a03:59e:cafe::d) by BY1P220CA0050.outlook.office365.com
 (2603:10b6:a03:59e::12) with Microsoft SMTP Server (version=TLS1_3,
 cipher=TLS_AES_256_GCM_SHA384) id 15.20.9791.48 via Frontend Transport; Mon,
 20 Apr 2026 21:33:03 +0000
Received: from denue6es012.ebgroup.elektrobit.com (213.95.148.172) by
 SJ1PEPF000026C8.mail.protection.outlook.com (10.167.244.105) with Microsoft
 SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id
 15.20.9791.48 via Frontend Transport; Mon, 20 Apr 2026 21:33:03 +0000
Received: from ubuntu.localdomain (10.10.178.50) by
 denue6es012.ebgroup.elektrobit.com (10.243.160.140) with Microsoft SMTP
 Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id
 15.2.2562.35; Mon, 20 Apr 2026 23:32:58 +0200
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@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=elektrobit.com header.i="@elektrobit.com" header.h="From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck"; dkim=pass header.s=selector1 header.d=elektrobit.com header.i="@elektrobit.com" header.h="From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck"
ARC-Seal: i=2; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=pass;
 b=IFJXlA/Nw6uuO4y49dGJ0dPDVmj4uDbzdOl3Esj99/nzp0d3dGGyR5NgjR2OUwF0pUyq2KKqaoFStHZH/ER0Fx/5wbDm2qV0zRWPiuAjTDmoggmhCdTG5uXJUZYMKt2Cp4vKZ+59KtLvGMTadd2OsHjNCDpc+rspnOgLT8m9Jgw2fG77I+X9drprNWHzJw8+E9QRCHc7Zan0UXZCA23apKbP3WSPeY04igxv6zP2b2xjrAC8Oxiw/5XV7ubtrcbn4Jp+STxk2AbZbFmlQoWOTo7yQdPEvZlT+ETkpovsbcu3pJfJ1XT1J0DNSfQ8nolohTP0Ed7sI1lP8NvwHRMgLA==
ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com;
 s=arcselector10001;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1;
 bh=oIAPv9xmUqmZOQALhD1wFmf2mfwJESnPZqbe9aDV5X0=;
 b=BOkOTKWhwWIuzqYqVS3vZwbNjBPlP8RujWRPkoHudZn/btcts/opBsLifgx3mJvSBvBxaTt1ELJAJ/M/BoeiGHAHE3xPX6vRzt7vEuSWdo+oTTo03k8JyHPjpMrthLwxKml+TQLN+70xh7+vEzneG/eZHAs4WTXigixZAO8PdOMQfNuXOuwgUetVVklAMjL6jqG4zYNeGFhyPvpS/YnQraA3jadH6KiXze/iMznmWoWpn+bGJRyUOFb7b1xlJ0lAnWBP55rolq7xU89+9FHoHk4fbGGX/1XxtTmgGlnibruNoF4zAJEuyeZ6ETb1cKmLriMlQx5qxbvPVLHem4Qmuw==
ARC-Authentication-Results: i=2; mx.microsoft.com 1; spf=pass (sender ip is
 40.93.13.65) smtp.rcpttodomain=amd.com smtp.mailfrom=elektrobit.com;
 dmarc=pass (p=quarantine sp=none pct=100) action=none
 header.from=elektrobit.com; dkim=pass (signature was verified)
 header.d=elektrobit.com; arc=pass (0 oda=1 ltdi=1
 spf=[1,1,smtp.mailfrom=elektrobit.com]
 dmarc=[1,1,header.from=elektrobit.com])
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=elektrobit.com;
 s=selector1;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck;
 bh=oIAPv9xmUqmZOQALhD1wFmf2mfwJESnPZqbe9aDV5X0=;
 b=Lz6qM0Rp6TNmDNRVEpLB/OE7gQ08Bles5NCjjzGY9a6ZG6wc+wgF0Bf029iQK0QBRDtYq35lwymAILdr0tP1lKsIpaDSOUDwsLmc+DshkxEbSTbwJ0guqWo1SUjJMGT6RsE7qWhxHVY0T8aQx9fDB3WfNloCZJd4Rra3ZH8JUKM=
X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 40.93.13.65)
 smtp.mailfrom=elektrobit.com; dkim=pass (signature was verified)
 header.d=elektrobit.com;dmarc=pass action=none header.from=elektrobit.com;
Received-SPF: Pass (protection.outlook.com: domain of elektrobit.com
 designates 40.93.13.65 as permitted sender) receiver=protection.outlook.com;
 client-ip=40.93.13.65; helo=DM2PR0701CU001.outbound.protection.outlook.com;
 pr=C
ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none;
 b=YjKY49tnTydtyS2qWDss8GOSgPuQJ1iR5LZ+DGkETfYvUzTm6YsjvOB0BszpS4pS9dBqtiagMB09diBp9VgwUGHqVCCLS2VSHrD5tfw/8nqZZO25KkOKy6VWUcgubLWq8qEUUKhvH4GUfP1WqpedIdRwaLlKS5An+PbYKwZ5vSmDw+B167a+cbVrhiXKtL1cL6OZCSSS6bMssy6xgQMuwu7DVfXYrckGCowbCVq7aJ04hYVN5eHjb2UJTT3bpvUt6IimBUOB4f2gd8j0gIq8byKRCcNeeWmze509nE6fHEnioyVvfu8pT+FanFrSVXtxF1wfPttMBG02jagTw1BcFA==
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com;
 s=arcselector10001;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1;
 bh=oIAPv9xmUqmZOQALhD1wFmf2mfwJESnPZqbe9aDV5X0=;
 b=gZG+4l/3cHaTiiDY7AvwjYr2iqbky5F8jqdQaQoZyHrjDxJL/sbds+D+Dd12fYIhviUKP9zKZLmDEDMvQi/zVKSWM8AnbE4NqdGx3bGOSjZ5FyvsjdvKmB5S/Ek1tygW9ZVQ0KcqJCd3vxEwxFabdBpsJ/AOYdrHbhn09QZdDdKzFWoJ3DbxKQnM7YUl03fCrEbi6wCn+WFqIAAEHrYpRUjObocMsiSTsGvRIT+kur1zy1ROpkjGr4C7HanIp7m9IRsuDGewMp1S9nh1AeLjTC5XQiAcG110QVN+c9+QOVXQtOktgK2ZF0P3hkCNuX+axGPvTFM7/AoMcY6JI7x+8Q==
ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass (sender ip is
 213.95.148.172) smtp.rcpttodomain=lists.xenproject.org
 smtp.mailfrom=elektrobit.com; dmarc=pass (p=quarantine sp=none pct=100)
 action=none header.from=elektrobit.com; dkim=none (message not signed);
 arc=none (0)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=elektrobit.com;
 s=selector1;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck;
 bh=oIAPv9xmUqmZOQALhD1wFmf2mfwJESnPZqbe9aDV5X0=;
 b=Lz6qM0Rp6TNmDNRVEpLB/OE7gQ08Bles5NCjjzGY9a6ZG6wc+wgF0Bf029iQK0QBRDtYq35lwymAILdr0tP1lKsIpaDSOUDwsLmc+DshkxEbSTbwJ0guqWo1SUjJMGT6RsE7qWhxHVY0T8aQx9fDB3WfNloCZJd4Rra3ZH8JUKM=
X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 213.95.148.172)
 smtp.mailfrom=elektrobit.com; dkim=none (message not signed)
 header.d=none;dmarc=pass action=none header.from=elektrobit.com;
Received-SPF: Pass (protection.outlook.com: domain of elektrobit.com
 designates 213.95.148.172 as permitted sender)
 receiver=protection.outlook.com; client-ip=213.95.148.172;
 helo=denue6es012.ebgroup.elektrobit.com; pr=C
From: Rose Spangler <Rose.Spangler@elektrobit.com>
To: <xen-devel@lists.xenproject.org>
CC: Sergej Proskurin <proskurin@sec.in.tum.de>, 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: [RFC PATCH v6 21/43] arm/p2m: Change func prototype and impl of p2m_{alloc,free}_vmid
Date: Mon, 20 Apr 2026 17:31:44 -0400
Message-ID: <20260420213206.208750-22-Rose.Spangler@elektrobit.com>
X-Mailer: git-send-email 2.34.1
In-Reply-To: <20260420213206.208750-1-Rose.Spangler@elektrobit.com>
References: <20260420213206.208750-1-Rose.Spangler@elektrobit.com>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit
Content-Type: text/plain
X-Originating-IP: [10.10.178.50]
X-ClientProxiedBy: denue6es012.ebgroup.elektrobit.com (10.243.160.140) To
 denue6es012.ebgroup.elektrobit.com (10.243.160.140)
X-EOPAttributedMessage: 1
X-MS-Exchange-SkipListedInternetSender:
 ip=[213.95.148.172];domain=denue6es012.ebgroup.elektrobit.com
X-MS-TrafficTypeDiagnostic:
	SJ1PEPF000026C8:EE_|BLAPR08MB6850:EE_|CO1PEPF00012E80:EE_|PH0PR08MB11076:EE_
X-MS-Office365-Filtering-Correlation-Id: 506760c6-d271-40b4-4ea2-08de9f246b3a
X-SM-outgoing: yes
X-MS-Exchange-SenderADCheck: 1
X-MS-Exchange-AntiSpam-Relay: 0
X-Microsoft-Antispam-Untrusted:
 BCL:0;ARA:13230040|82310400026|36860700016|376014|1800799024|56012099003|22082099003|18002099003;
X-Microsoft-Antispam-Message-Info-Original:
 =?us-ascii?Q?hshR0nMS4OSo5YHkJCHX27RuQkiqa/EVtyVd/3T/ljjmI0fTS/axaZLOkIMG?=
 =?us-ascii?Q?aJJnOhOCAqtoTHyoJjEbpZPWKSbuGWvjlX0jolym7vVsmLEQE7HJCs+jt1E3?=
 =?us-ascii?Q?qJ2YNxzziD2n9m2rUatySc8GypAkSw4ISk4F36rsmwtNHTeK63idOgAU0MIl?=
 =?us-ascii?Q?3mnaIQ9hawUqAMTitjbP4b2QCbb4jnW45qwpU28WRbxHYF9NDRWB97BEDmXG?=
 =?us-ascii?Q?xL1U+qroqs0d7MWd+6EJ+4L9g6Uvz6OwIU8EyceTEsTaiUh8n/NUKI3jOXNS?=
 =?us-ascii?Q?4O0Vv2U8cAcNW8Q0+qYz1PpFb+6MWbcVhIBplijL5wZLhZbESLzHBWidS+0S?=
 =?us-ascii?Q?ZBK7JFWBFdQ7DPUfg7XJJJzwDD6BDj8tZ1iRhq3Ft3iypvFi5ks5SI14peiV?=
 =?us-ascii?Q?w1A5936BiUgt1MaXrbmTenCfsvVagIlSES5GM2tfvpLosFQ09DNAda8kpGK7?=
 =?us-ascii?Q?V2Q0LySAzQZSjVMTfNJHbdL+YG5PiFsASwRZShQKAiOaUPBIahS/60jLqaDF?=
 =?us-ascii?Q?BD+ywY4f7ASTIoi4IMZTncJ1B79onX3heto2nQbIMkcWIRIzlwXwgy80/fOo?=
 =?us-ascii?Q?7lSqyhUUGH61wdmInNGnRq93W8WjaPtrJ81i0L0299twITUt+iXUXdZkFcgC?=
 =?us-ascii?Q?ulyixdbsZ1b60bMRjiC57PToOtE/BUf53gHG2wW4DjFGzG+4lDTO0ogmICku?=
 =?us-ascii?Q?Ua1BZSGILR0FmTB0lA4iI4KwR/8Bp+ujW70fSKc1YJ4wV9JlDCLbwezj0kk1?=
 =?us-ascii?Q?Gh/mdpski7YvQu17EPDacKRK4dgKLfA06As1gUTmREDaQKdHk3JHB+TCU6U+?=
 =?us-ascii?Q?aQUIFfaPjNtQ/YLl5Sk9H+OUenPDllyPHgLFTPtMCzk/5ZJrXEvQ61ZxPY+O?=
 =?us-ascii?Q?8/TNVFtHXNfDtqQFzvxWqgZtrRH9vYUEpALx0Ima+bjqXaDg2Nib0lv4cmpD?=
 =?us-ascii?Q?5me5qBcfL/22Q2QylsTn+xidZTU/EuJv7voiotzrutw7lqrGntwS/v4a7SqM?=
 =?us-ascii?Q?5pu9tS/sfzZCtv6Tc7DVynYc7ahoCZloxtQhi2/td0hkaA2pxq3+fYO3pXHu?=
 =?us-ascii?Q?6m4ioXWSoiDj6dCE8ScQTyIjm/qOmCDIpe5DpNikY0q2ovsc7c6rWi/Jse75?=
 =?us-ascii?Q?gLHF/ftj4fB/tcu7Q1evvZrTbQatV7vAP9J1WPlP89CktzYVxNS3Jj9TOtBP?=
 =?us-ascii?Q?pq87aQoMcAm7oQaGuk/m2GtWZAea3vT1KW8k9mBc3CbToCxCK3W5xNKbIjA?=
 =?us-ascii?Q?=3D?=
X-Forefront-Antispam-Report-Untrusted:
 CIP:213.95.148.172;CTRY:DE;LANG:en;SCL:1;SRV:;IPV:CAL;SFV:NSPM;H:denue6es012.ebgroup.elektrobit.com;PTR:eth1-fw1-nbg6.eb.noris.de;CAT:NONE;SFS:(13230040)(82310400026)(36860700016)(376014)(1800799024)(56012099003)(22082099003)(18002099003);DIR:OUT;SFP:1102;
X-Exchange-RoutingPolicyChecked:
 V/8dX3MBB7hb+TqGGVpuPOjqi3yill0SQbdcD/QLEO+d/wJH6VBC31FtCzSExNemKOR4/lQcLIGFq5WdS/d4V53K3kpF9vFZQVE0fzk7xPjOjEHA10RKljT5lL0l/bEvV+xif2pM/YrEgShIvvu6ATVrPCTNFz+bRQvxqjWJ0sb7i+z2LaeYlY029qHKcI78mCl1G0EAKn8IdLfKG9yoHGwEOGW8YzgWZl4azmHwai/6ViTmhDacnExaed+IwF0AsTUDhDq51KiqAxrNCdNprhhAUxXM8rKUUiiKPuYffmCWqU1++i0cNraj+0qE3lJQwrnoP9WJt9ww+vSiOMtZqA==
X-MS-Exchange-Transport-CrossTenantHeadersStamped: BLAPR08MB6850
X-MS-Exchange-SkipListedInternetSender:
 ip=[40.93.13.65];domain=DM2PR0701CU001.outbound.protection.outlook.com
X-MS-Exchange-ExternalOriginalInternetSender:
 ip=[40.93.13.65];domain=DM2PR0701CU001.outbound.protection.outlook.com
X-MS-Exchange-Transport-CrossTenantHeadersStripped:
 CO1PEPF00012E80.namprd03.prod.outlook.com
X-MS-PublicTrafficType: Email
X-MS-Office365-Filtering-Correlation-Id-Prvs:
	0ea5026a-c6b0-41eb-335e-08de9f24678c
X-Microsoft-Antispam:
	BCL:0;ARA:13230040|82310400026|14060799003|156008|35042699022|36860700016|376014|1800799024|56012099003|22082099003|18002099003;
X-Microsoft-Antispam-Message-Info:
	=?us-ascii?Q?gKsJSLHddY95jEm9j0nm9+FRfGZd4GExHH6+SL4iCD5wNSjfSEFDnwEjQNzv?=
 =?us-ascii?Q?doktyHg4lDRNsfK3EJ+iYgHD2BG5kBC0MNB/W2n4Db4FlxgwPSKy1dh9p/Hf?=
 =?us-ascii?Q?5nSF19yRpcf452JP2WWIEeIM7Iz7q2hBm7EgMM32F1sxiLzGuARmMCgjOhI2?=
 =?us-ascii?Q?m/eolnDiyiBHTQIfFhdUq/ua8nQokmZp6kYmNixP1F3+oL4zf1+fya3MbH/L?=
 =?us-ascii?Q?iUPzk7OnqSkT0442Re1U1zk+j5sqqD/UQIv+5Q24IgRrfGRkLkDFn88rCvoa?=
 =?us-ascii?Q?yyjQX2joPWrfD1klkJCU1HtXOkQfOS/X0LBEJTBdXPy70a0OGOrGg/ENLl06?=
 =?us-ascii?Q?TyIYQrnF6aU774iyYRFHfZrxI8pIAXerUumsn8mPNcvmZqYkosjWILQWm/rg?=
 =?us-ascii?Q?wYeqw8A5jGhv1fTmy2XBjSKhVvhmZ4iFChraduE4yoc0uQdekeHoZ/bf0bu+?=
 =?us-ascii?Q?yYiQURth1fSoLNIg4tWbkI6gpnvh9WlZqs1rnrnEAOv1qcRAgxK5eKsArQUl?=
 =?us-ascii?Q?RUJHZXKU0uxFQsp7jIOsdS3dnJsUzk/iVvUM3ZNZpmWR8d2Jy9X0HMw2lVpK?=
 =?us-ascii?Q?gs4add5UZ8WMbEEHhVvyj19J/5KHezSr9y9kJVHR5jIxWsR8fg9AOh+4lG6m?=
 =?us-ascii?Q?Ks6vSseFALUEO1O304k9LogQ8IrmhP2uaihxaDpawLGRXOv6VOZLcvWpDdyl?=
 =?us-ascii?Q?sr8Rd34biTDhOffnPWRM48zAf/2KDVVhxrEDkjOkRX8vJv7PpSnghJT7ssuV?=
 =?us-ascii?Q?Ag532MTDJySFYxjJQW+OY+bh2+0UZA4PQdzL3pp2hvgeP2mpL4Ov2NhBr9n7?=
 =?us-ascii?Q?Y53ZiRl1ZQsbd6diIVo8lziNNnpN/kCHu2gaZvvN+dl1P0fw1QQZnu3/U7My?=
 =?us-ascii?Q?iQPz3miCjKhVUaBv2uVrm8qkdgTjw3d0pH74gLbuRZStJv5lSERTF9VtWY5Q?=
 =?us-ascii?Q?F7nJr+mCFBllHAVfS1KSsWctuE3yRuA1cd0/B5sCW8o8LojL3uHc5B7xfpda?=
 =?us-ascii?Q?qDgUUO1EA+XzLUkoXZP9zapSRz+Epq6Q4OdgmXyBfM1cNH2iOrwTRB8pLuCn?=
 =?us-ascii?Q?HIF16wlJ6QY4SdTlvFJFrmAWYSwlR83y4Zc/wJVXjw5zoCQ31bcT+diMMlNk?=
 =?us-ascii?Q?A1spCF9Wc5VMZmnCXEc1R5jid+rykImC++IapnOpfxoYPuenmiB4D/8oQdVp?=
 =?us-ascii?Q?/4qAGTdMoEgZXnh6GpzTberiMRDABS09IH196+H6FQzHsj/DnLjslW2pefs?=
 =?us-ascii?Q?=3D?=
X-Forefront-Antispam-Report:
	CIP:4.79.107.243;CTRY:US;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:DM2PR0701CU001.outbound.protection.outlook.com;PTR:mail-dm2pr0701cu00101.outbound.protection.outlook.com;CAT:NONE;SFS:(13230040)(82310400026)(14060799003)(156008)(35042699022)(36860700016)(376014)(1800799024)(56012099003)(22082099003)(18002099003);DIR:OUT;SFP:1102;
X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1
X-MS-Exchange-AntiSpam-MessageData-0:
	r5reXL1z6K5EdEg/2NZM7zmALNw0WD7hQk1Clp9adUSzPfVK1MxYBWEo4zuZJgWx7Mqjsj0C/z/jmRpb4in1+LEV+IhlA49cLyRyjp1qg9X0K0vMYf1bquxfqvxR1mTkfaXCtSIiW+ybLOTVCIZVMmDNuPubZOs/MEEfZ1JGaiQdPYYKdYpTqbk9Az4Dpl5ASmxgGTx0/j5vUBySMLaRFgPXxYofOu7+7wTX8g8fVt62IbKiUmXXzvcOjeZaTssPizSLYIwjlPU+K1bMy/yafmaa9whGULCidntFlwlKGj0Vq6c15ztuFEL/0KmneakgUQP3nmkGPxt+d3652j7MHlDPF4YPX1PHOM6/bizJduqKeHrzZ+uxh1qzbU8BjIo0q1ZhjTjVx+E0i9EHLLqJlzYxQN6JKgDfDdv5TOgZ10XVALXoUONmLe+9xu5ZiwOk
X-OriginatorOrg: elektrobit.com
X-MS-Exchange-CrossTenant-OriginalArrivalTime: 20 Apr 2026 21:33:09.8813
 (UTC)
X-MS-Exchange-CrossTenant-Network-Message-Id: 506760c6-d271-40b4-4ea2-08de9f246b3a
X-MS-Exchange-CrossTenant-Id: e764c36b-012e-4216-910d-8fd16283182d
X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=e764c36b-012e-4216-910d-8fd16283182d;Ip=[4.79.107.243];Helo=[usbth1es003.ebgroup.elektrobit.com]
X-MS-Exchange-CrossTenant-AuthAs: Internal
X-MS-Exchange-CrossTenant-AuthSource: TreatMessagesAsInternal-CO1PEPF00012E80.namprd03.prod.outlook.com
X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem
X-MS-Exchange-Transport-CrossTenantHeadersStamped: PH0PR08MB11076
X-purgate-ID: tlsNG-42698a/1776720797-7E36CF3B-2DB5D848/0/0
X-purgate-type: clean
X-purgate-size: 3941

From: Sergej Proskurin <proskurin@sec.in.tum.de>

This commit changes the prototype and implementation of the functions
"p2m_alloc_vmid" and "p2m_free_vmid". The function "p2m_alloc_vmid" does
not expect the struct domain as argument anymore and returns an
allocated vmid. The function "p2m_free_vmid" takes only the vmid that is
to be freed as argument.

This is commit 10/12 of the altp2m_init/altp2m_teardown routines phase.

Signed-off-by: Sergej Proskurin <proskurin@sec.in.tum.de>
---
v3: Changed function prototypes and implementation of the functions
    "p2m_alloc_vmid" and "p2m_free_vmid".

    Changes in "p2m_alloc_vmid":
    This function does not expect any arguments. Also, in this commit,
    the function "p2m_alloc_vmid" returns either the successfully
    allocated vmid or the value INVALID_VMID. Thus, it is now the
    responsibility of the caller to set the returned vmid in the
    associated fields.

    Changes in "p2m_free_vmid":
    This function expects now only the vmid of type uint8_t.
---
 xen/arch/arm/include/asm/p2m.h |  4 ++--
 xen/arch/arm/mmu/p2m.c         |  8 ++++----
 xen/arch/arm/p2m.c             | 23 ++++++++---------------
 3 files changed, 14 insertions(+), 21 deletions(-)

diff --git a/xen/arch/arm/include/asm/p2m.h b/xen/arch/arm/include/asm/p2m.h
index 5c6dfe4a9789..62261d41e780 100644
--- a/xen/arch/arm/include/asm/p2m.h
+++ b/xen/arch/arm/include/asm/p2m.h
@@ -195,8 +195,8 @@ static inline bool arch_acquire_resource_check(struct domain *d)
 void p2m_restrict_ipa_bits(unsigned int ipa_bits);
 
 void p2m_vmid_allocator_init(void);
-int p2m_alloc_vmid(struct domain *d);
-void p2m_free_vmid(struct domain *d);
+uint8_t p2m_alloc_vmid(void);
+void p2m_free_vmid(uint8_t vmid);
 
 /* Second stage paging setup, to be called on all CPUs */
 void setup_virt_paging(void);
diff --git a/xen/arch/arm/mmu/p2m.c b/xen/arch/arm/mmu/p2m.c
index f546f63f2489..0d37760ef5d5 100644
--- a/xen/arch/arm/mmu/p2m.c
+++ b/xen/arch/arm/mmu/p2m.c
@@ -1519,7 +1519,7 @@ void p2m_free_one(struct p2m_domain *p2m)
 
     p2m->root = NULL;
 
-    p2m_free_vmid(p2m->domain);
+    p2m_free_vmid(p2m->vmid);
 
     radix_tree_destroy(&p2m->mem_access_settings, NULL);
 
@@ -1570,9 +1570,9 @@ static int p2m_initialise(struct domain *d, struct p2m_domain *p2m)
      */
     p2m->domain = d;
 
-    rc = p2m_alloc_vmid(d);
-    if ( rc )
-        return rc;
+    p2m->vmid = p2m_alloc_vmid();
+    if ( p2m->vmid == INVALID_VMID )
+        return -EBUSY;
 
     rc = p2m_alloc_table(p2m);
     if ( rc )
diff --git a/xen/arch/arm/p2m.c b/xen/arch/arm/p2m.c
index 2c43b6033360..3342fafcc8a7 100644
--- a/xen/arch/arm/p2m.c
+++ b/xen/arch/arm/p2m.c
@@ -282,11 +282,9 @@ void p2m_vmid_allocator_init(void)
     set_bit(INVALID_VMID, vmid_mask);
 }
 
-int p2m_alloc_vmid(struct domain *d)
+uint8_t p2m_alloc_vmid(void)
 {
-    struct p2m_domain *p2m = p2m_get_hostp2m(d);
-
-    int rc, vmid;
+    uint8_t vmid;
 
     spin_lock(&vmid_alloc_lock);
 
@@ -296,28 +294,23 @@ int p2m_alloc_vmid(struct domain *d)
 
     if ( vmid == MAX_VMID )
     {
-        rc = -EBUSY;
-        printk(XENLOG_ERR "p2m.c: dom%d: VMID pool exhausted\n", d->domain_id);
+        vmid = INVALID_VMID;
+        printk(XENLOG_ERR "p2m.c: VMID pool exhausted\n");
         goto out;
     }
 
     set_bit(vmid, vmid_mask);
 
-    p2m->vmid = vmid;
-
-    rc = 0;
-
 out:
     spin_unlock(&vmid_alloc_lock);
-    return rc;
+    return vmid;
 }
 
-void p2m_free_vmid(struct domain *d)
+void p2m_free_vmid(uint8_t vmid)
 {
-    struct p2m_domain *p2m = p2m_get_hostp2m(d);
     spin_lock(&vmid_alloc_lock);
-    if ( p2m->vmid != INVALID_VMID )
-        clear_bit(p2m->vmid, vmid_mask);
+    if ( vmid != INVALID_VMID )
+        clear_bit(vmid, vmid_mask);
 
     spin_unlock(&vmid_alloc_lock);
 }
-- 
2.34.1



From xen-devel-bounces@lists.xenproject.org Mon Apr 20 21:33:23 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 20 Apr 2026 21:33:23 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1287815.1568254 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wEwF9-0003sz-Hb; Mon, 20 Apr 2026 21:33:23 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1287815.1568254; Mon, 20 Apr 2026 21:33: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 1wEwF8-0003pq-NZ; Mon, 20 Apr 2026 21:33:22 +0000
Received: by outflank-mailman (input) for mailman id 1287815;
 Mon, 20 Apr 2026 21:33:18 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <Rose.Spangler@elektrobit.com>) id 1wEwF4-0002nY-7r
 for xen-devel@lists.xenproject.org; Mon, 20 Apr 2026 21:33:18 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wEwF3-00CCPQ-Jr
 for xen-devel@lists.xenproject.org; Mon, 20 Apr 2026 23:33:17 +0200
Received: from [10.42.69.10] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <Rose.Spangler@elektrobit.com>)
 id 69e69b69-bab6-0a2a0a5309dd-0a2a450a8c08-22
 for <xen-devel@lists.xenproject.org>; Mon, 20 Apr 2026 23:33:17 +0200
Received: from [40.93.195.118]
 (helo=SN4PR2101CU001.outbound.protection.outlook.com)
 by tlsNG-4011c0.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.1)
 (envelope-from <Rose.Spangler@elektrobit.com>)
 id 69e69b9b-56b3-0a2a450a0019-285dc3762b40-3
 for <xen-devel@lists.xenproject.org>; Mon, 20 Apr 2026 23:33:17 +0200
Received: from CH2PR19CA0016.namprd19.prod.outlook.com (2603:10b6:610:4d::26)
 by BLAPR08MB6900.namprd08.prod.outlook.com (2603:10b6:208:325::21)
 with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9818.33; Mon, 20 Apr
 2026 21:33:09 +0000
Received: from CH2PEPF0000013C.namprd02.prod.outlook.com
 (2603:10b6:610:4d:cafe::60) by CH2PR19CA0016.outlook.office365.com
 (2603:10b6:610:4d::26) with Microsoft SMTP Server (version=TLS1_3,
 cipher=TLS_AES_256_GCM_SHA384) id 15.20.9791.48 via Frontend Transport; Mon,
 20 Apr 2026 21:33:09 +0000
Received: from usbth1es003.ebgroup.elektrobit.com (4.79.107.243) by
 CH2PEPF0000013C.mail.protection.outlook.com (10.167.244.73) with Microsoft
 SMTP Server (version=TLS1_3, cipher=TLS_AES_256_GCM_SHA384) id 15.20.9791.48
 via Frontend Transport; Mon, 20 Apr 2026 21:33:09 +0000
Received: from usbth1es003 (localhost [127.0.0.1])
 by usbth1es003.ebgroup.elektrobit.com (Postfix) with SMTP id 4fzzHS3TXLz1wdM; 
 Mon, 20 Apr 2026 14:33:08 -0700 (PDT)
Received: from DM2PR0701CU001.outbound.protection.outlook.com
 (mail-dm2pr0701cu00106.outbound.protection.outlook.com [40.93.13.70])
 (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)
 key-exchange secp384r1 server-signature RSA-PSS (2048 bits) server-digest
 SHA256) (No client certificate requested)
 by usbth1es003.ebgroup.elektrobit.com (Postfix) with ESMTPS;
 Mon, 20 Apr 2026 14:33:08 -0700 (PDT)
Received: from BY1P220CA0043.NAMP220.PROD.OUTLOOK.COM (2603:10b6:a03:59e::11)
 by CO1PR08MB6628.namprd08.prod.outlook.com (2603:10b6:303:6c::7) with
 Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9818.33; Mon, 20 Apr
 2026 21:32:59 +0000
Received: from SJ1PEPF000026C8.namprd04.prod.outlook.com
 (2603:10b6:a03:59e:cafe::63) by BY1P220CA0043.outlook.office365.com
 (2603:10b6:a03:59e::11) with Microsoft SMTP Server (version=TLS1_3,
 cipher=TLS_AES_256_GCM_SHA384) id 15.20.9791.48 via Frontend Transport; Mon,
 20 Apr 2026 21:32:59 +0000
Received: from denue6es012.ebgroup.elektrobit.com (213.95.148.172) by
 SJ1PEPF000026C8.mail.protection.outlook.com (10.167.244.105) with Microsoft
 SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id
 15.20.9791.48 via Frontend Transport; Mon, 20 Apr 2026 21:32:58 +0000
Received: from ubuntu.localdomain (10.10.178.50) by
 denue6es012.ebgroup.elektrobit.com (10.243.160.140) with Microsoft SMTP
 Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id
 15.2.2562.35; Mon, 20 Apr 2026 23:32:52 +0200
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@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=elektrobit.com header.i="@elektrobit.com" header.h="From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck"; dkim=pass header.s=selector1 header.d=elektrobit.com header.i="@elektrobit.com" header.h="From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck"
ARC-Seal: i=2; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=pass;
 b=TuPwySnfOoO4heED+i/mLY5dtiFa/ZLLKZie4YKCSKxi2CtXj5GGZFVedj0NVnVF0H1PHnrB8mLzAX1EGtYXcamWMsv5D4DE/ewkYiuGBRthoKeQ/NtsTE58LbBKAqLe5Ac/704OEWNA2BCNrLgNT9OHsAlJ4ptter2Z9bbM2XKNdaSzQ2S3MsyZhAxaHPp3GeMPDi8vMVMLtzc5pFwoKaGdVQ3pI2GSe7twnAQO/JaRvEBSSuSg9/4959lW7wloiyateOAq6Mp4HSjMlj5cusdHJQKUd38AnDEqT5CzF560Hn66cQ8otiEEY6HS2HzNw1VsPSIDOm9GEFYGMk0CSg==
ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com;
 s=arcselector10001;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1;
 bh=OAj59kWKN8biXOebnwdzq5ky5bvMG5PNKC5Jot+tZ8s=;
 b=iXCrCnYxqRv09iCxWYW/+h4xN6Mwg10tkZIMCQsRS6pQtHexY35B7RwrZ9iPLBV04tF2bkxSlRP8K2A5C0f9+zSgcqRM+BaZk90Vw+uRAd1bS0wMyax8mEYnk01DNyGXY7RbuAfKZI3APvFcuaX4ZVqBqA0rpY3HJ35VlA6bCsMnkHDwFB4uA+Jzfd6yzrNK10+LYN/u7iTrYQKAZq0ZYmGRxjSxSD5mBXTLLG3UCYRFSDhNPEs8obQHONO5gxNAqkbY9vcSSMjQh0VbuJ+hzu00PtYxaEUKBBhGjquzwvwSFZamE4Nwf5kNVRrmVh9uhy1+VgzeaI1oZMBtcJhdsQ==
ARC-Authentication-Results: i=2; mx.microsoft.com 1; spf=pass (sender ip is
 40.93.13.70) smtp.rcpttodomain=amd.com smtp.mailfrom=elektrobit.com;
 dmarc=pass (p=quarantine sp=none pct=100) action=none
 header.from=elektrobit.com; dkim=pass (signature was verified)
 header.d=elektrobit.com; arc=pass (0 oda=1 ltdi=1
 spf=[1,1,smtp.mailfrom=elektrobit.com]
 dmarc=[1,1,header.from=elektrobit.com])
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=elektrobit.com;
 s=selector1;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck;
 bh=OAj59kWKN8biXOebnwdzq5ky5bvMG5PNKC5Jot+tZ8s=;
 b=Snryt4baAJEKFGBDB8msfIEyGexDg9xmKxd6g8EvgN0PQ/8QwreW4qBt5FSeF2dbQYkfS1Uwq5Qhbh8eSAhv2A7PipxT3uf9O1plhrVB0xiH2sX76pAEEMkoINohWfSGKzL8+xnCNtWES/3p9ufWYjXQfPBJfdud55HEyIMigXU=
X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 40.93.13.70)
 smtp.mailfrom=elektrobit.com; dkim=pass (signature was verified)
 header.d=elektrobit.com;dmarc=pass action=none header.from=elektrobit.com;
Received-SPF: Pass (protection.outlook.com: domain of elektrobit.com
 designates 40.93.13.70 as permitted sender) receiver=protection.outlook.com;
 client-ip=40.93.13.70; helo=DM2PR0701CU001.outbound.protection.outlook.com;
 pr=C
ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none;
 b=Wm7cXzJuOF0Oh/JlK1CKxUBdqr04KB4G87cSIM9sOK/D5c2a4VDR17tXIC9SuyPwc0V3iMGBeS7XCx8GHPHF+gUAXbVKFe3Vtwkn45Fi35bcRauRkmGulfosTN48AYgTyKzs4qhXV24RNLXPxpLjPEUtclR5IQwKyIBLleCJVNwezKsi8SVhCaKukaHspeu3mbh2UDCOua3Z65IjJJ6JAo14nSGM/97nF7vC662WOaKMfwijP8V99HzLJc6N9DtSmwiP+8WNk5o9sYc6ohCh0q1KOMvVMmye+rf+RLKjCQ2vOtF3PLiWataN6iA6anP5VR3Y1ljj8n8ldETDEAuAwg==
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com;
 s=arcselector10001;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1;
 bh=OAj59kWKN8biXOebnwdzq5ky5bvMG5PNKC5Jot+tZ8s=;
 b=RhpZUDjzAPlcaSPuCCMf/etJTtstyBFPmFFH/Hc3qSE2pclZw4D0lw54Ou8tsK8HGpQf0CYfsUdWtQiQSpmdByjAxmOTBF82npNwa8ThLPG3iGYTtErjUb16H1wKwah2ZKDnHiE2ognLqwO32unDY77IJGhKWmdQ50bb7yJjYuKz9v3ksrn25hqShASQ0DAphet8jxJCWzaavYiV9a2Fadh7ri8spWX2LzE/mShBJlOEgSu/ePU4Auduv8cG+bWyFcS9aBGsPVNdzOoe4AwvAQvg0BwhR97WqbPr+zwF8o9p/JxtrzGM0BQBpVBO6AmaTBaUBjAUKEPAKqDrGUoo6w==
ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass (sender ip is
 213.95.148.172) smtp.rcpttodomain=lists.xenproject.org
 smtp.mailfrom=elektrobit.com; dmarc=pass (p=quarantine sp=none pct=100)
 action=none header.from=elektrobit.com; dkim=none (message not signed);
 arc=none (0)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=elektrobit.com;
 s=selector1;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck;
 bh=OAj59kWKN8biXOebnwdzq5ky5bvMG5PNKC5Jot+tZ8s=;
 b=Snryt4baAJEKFGBDB8msfIEyGexDg9xmKxd6g8EvgN0PQ/8QwreW4qBt5FSeF2dbQYkfS1Uwq5Qhbh8eSAhv2A7PipxT3uf9O1plhrVB0xiH2sX76pAEEMkoINohWfSGKzL8+xnCNtWES/3p9ufWYjXQfPBJfdud55HEyIMigXU=
X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 213.95.148.172)
 smtp.mailfrom=elektrobit.com; dkim=none (message not signed)
 header.d=none;dmarc=pass action=none header.from=elektrobit.com;
Received-SPF: Pass (protection.outlook.com: domain of elektrobit.com
 designates 213.95.148.172 as permitted sender)
 receiver=protection.outlook.com; client-ip=213.95.148.172;
 helo=denue6es012.ebgroup.elektrobit.com; pr=C
From: Rose Spangler <Rose.Spangler@elektrobit.com>
To: <xen-devel@lists.xenproject.org>
CC: Rose Spangler <Rose.Spangler@elektrobit.com>, Julien Grall
	<julien@xen.org>, Bertrand Marquis <bertrand.marquis@arm.com>, Michal Orzel
	<michal.orzel@amd.com>, Volodymyr Babchuk <Volodymyr_Babchuk@epam.com>,
	Sergej Proskurin <proskurin@sec.in.tum.de>, Stefano Stabellini
	<sstabellini@kernel.org>, Julien Grall <julien.grall@arm.com>
Subject: [RFC PATCH v6 17/43] arm/p2m: Move hostp2m init/teardown to individual functions
Date: Mon, 20 Apr 2026 17:31:40 -0400
Message-ID: <20260420213206.208750-18-Rose.Spangler@elektrobit.com>
X-Mailer: git-send-email 2.34.1
In-Reply-To: <20260420213206.208750-1-Rose.Spangler@elektrobit.com>
References: <20260420213206.208750-1-Rose.Spangler@elektrobit.com>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit
Content-Type: text/plain
X-Originating-IP: [10.10.178.50]
X-ClientProxiedBy: denue6es012.ebgroup.elektrobit.com (10.243.160.140) To
 denue6es012.ebgroup.elektrobit.com (10.243.160.140)
X-EOPAttributedMessage: 1
X-MS-Exchange-SkipListedInternetSender:
 ip=[213.95.148.172];domain=denue6es012.ebgroup.elektrobit.com
X-MS-TrafficTypeDiagnostic:
	SJ1PEPF000026C8:EE_|CO1PR08MB6628:EE_|CH2PEPF0000013C:EE_|BLAPR08MB6900:EE_
X-MS-Office365-Filtering-Correlation-Id: f49ddc1c-3c46-49a9-59fc-08de9f246af9
X-SM-outgoing: yes
X-MS-Exchange-SenderADCheck: 1
X-MS-Exchange-AntiSpam-Relay: 0
X-Microsoft-Antispam-Untrusted:
 BCL:0;ARA:13230040|82310400026|36860700016|376014|1800799024|18002099003|56012099003|22082099003;
X-Microsoft-Antispam-Message-Info-Original:
 =?us-ascii?Q?y7lpXzXuajQnio6x5+mtvOJw1oXtwzx7gqXo7MFXNlfLW0EfY3KkL+Z3NmdA?=
 =?us-ascii?Q?+1+kySujE+4WA8FiepyAkGLAqp9NwRpXUF5bY5ZkYyb1qQ9KCCSfP81h205+?=
 =?us-ascii?Q?UXfVvOGzwK5tAaYLtaCO+16Yyy60nruyr3yw8KAS/ojckisfKI3sfkOYmmiN?=
 =?us-ascii?Q?HQ7huvdTXkyEewvkZieTwS/5HzHaRnhZUdSQKakSReBh/9RF2uwr1fuFe9UY?=
 =?us-ascii?Q?6P/mt2B+W1Sy2kKFBa1DFBrFUVMto41pW5iNjYgOXzxo1vdRz37GsVz6Nbek?=
 =?us-ascii?Q?VGZ8CK3qGhTdxrxCMrT5Ie3zUA+WfXI3Q7isEpX7mC9S+iqDxPySl90H6Nb9?=
 =?us-ascii?Q?s5/jEmgsHsetMT0JQIznGU19bSucgi+MtKZvaDzuqeqHqBlNM7MgK7HFZbkt?=
 =?us-ascii?Q?anfC21Q0bD0Mi9XO4O8YO81iT2cQ/RnsrEQ9Jz4zVy2p7bR/pDu1qsXUOyyF?=
 =?us-ascii?Q?ZZCxRERG94VcL7sTiiIMndjYwuhPgZXI9GLlMZUW4kNXov9dI3yjaVw39tJJ?=
 =?us-ascii?Q?UZMOs+MHKQpMtqXZL2o+T7p6Hdk1Ge7Y7ruJtExfcmTCIEYm7khEc1P7pLtb?=
 =?us-ascii?Q?t4Lasc5AwSs1HgWeJx8kchyDcDuzGzthvKXFjZus1wgClfLYKOZFQ3LACHB9?=
 =?us-ascii?Q?SJxsNzaCvxwgzF+cSlXCC9Fxeqc66yenD6238VhD3+zG+dBVYJ5ocGwANOd1?=
 =?us-ascii?Q?w/VYnEyAEAxAKQ91cQa+UNk67F7GM9mxlqP9ISszC4mgUosNs8YQJeoHt5U2?=
 =?us-ascii?Q?9T/SVOaS368HL+jsUbCbAylMh5xoAz75zp00Lmno4P5ouizmWw9CL9bURGVV?=
 =?us-ascii?Q?uYKZ7+7McgJ4HJ4BnkhqgxRbC74pVhIVTvZze+rY50anDmn9WWGOK7RvF4HZ?=
 =?us-ascii?Q?wiXDpy5QFjSbhuR4RXmciKbI40VoNlcEo3wW4BT+lgkl1HAeCzWsXrt/J9pw?=
 =?us-ascii?Q?ug7otWLZnwaLLLx/IqNqUjSEXohnMjXlOOxF3gWEQVuAPhonEAWHhIzU7ET0?=
 =?us-ascii?Q?XvojxqhaCXn1cOTtxgk3+zfZrfb+Ck+pt+8WS9fUmkw6bZnJw2B5HSvl/mH4?=
 =?us-ascii?Q?we64JAyiC3YQ1vTf9dNJ8n6YK9/RAkn6P2r44UqdP50nSU7dGwPf9B31Ler8?=
 =?us-ascii?Q?V3KZh0lCJ6drBE2RbmvxR95c/vNEiFfKearAALrklMRDq0kSBbsJWWsuK7lh?=
 =?us-ascii?Q?ZnwqNoVrj/FcSWTsCkm59dM5FCeL45E3fox1wA=3D=3D?=
X-Forefront-Antispam-Report-Untrusted:
 CIP:213.95.148.172;CTRY:DE;LANG:en;SCL:1;SRV:;IPV:CAL;SFV:NSPM;H:denue6es012.ebgroup.elektrobit.com;PTR:eth1-fw1-nbg6.eb.noris.de;CAT:NONE;SFS:(13230040)(82310400026)(36860700016)(376014)(1800799024)(18002099003)(56012099003)(22082099003);DIR:OUT;SFP:1102;
X-Exchange-RoutingPolicyChecked:
 VMCl7034Do0CTQSQ9Ss8TWwYP0sTxfaFneruF2wSfMqJEi5CcfMDEp81qalRsC9SdngguAyTExBDuIKC153zMegjggIOMLiEbH7G6YyQ9ACSzWoiuHzfXS38jpYxtU0IXw7lssLxEEsCBeCP/3nPIMc3tOWPOdYAgGStSFBs++av9z2p7EinAtORhCz1x6RQed4wKAmR6QVjpOGcJGtTDz8U035s5U4/q0RGR+tRwV+d+yMqmce8CV0Iq23HuSogmwP6w2Pbb+0h/bRm+isDN2fFSP+QLwAiofpFBELYk5OyAHeSofVbqUy5NVF7FftRFB+Pdu0f15Iolk2rDn2DaA==
X-MS-Exchange-Transport-CrossTenantHeadersStamped: CO1PR08MB6628
X-MS-Exchange-SkipListedInternetSender:
 ip=[40.93.13.70];domain=DM2PR0701CU001.outbound.protection.outlook.com
X-MS-Exchange-ExternalOriginalInternetSender:
 ip=[40.93.13.70];domain=DM2PR0701CU001.outbound.protection.outlook.com
X-MS-Exchange-Transport-CrossTenantHeadersStripped:
 CH2PEPF0000013C.namprd02.prod.outlook.com
X-MS-PublicTrafficType: Email
X-MS-Office365-Filtering-Correlation-Id-Prvs:
	82ab3a35-1ed4-4d48-55b6-08de9f2464b8
X-Microsoft-Antispam:
	BCL:0;ARA:13230040|82310400026|14060799003|35042699022|156008|36860700016|376014|1800799024|56012099003|22082099003|18002099003;
X-Microsoft-Antispam-Message-Info:
	=?us-ascii?Q?hpB9Q/n0VqWgTKsKBI8wJJpyxvQjzpKVClG+8w+JNW9vW2FF5PwUexm9FOFG?=
 =?us-ascii?Q?e91WbnT5b5cCmpf/hfplWi60kKG5Z2fWuHIoEJpA1qRVzwvXSwyWXCGjC3u4?=
 =?us-ascii?Q?g0kBbT882oySRGVwjb+OaIC4znVeD7LQHFIzPzp9i1kX2FNHOoJXDMGa8cJU?=
 =?us-ascii?Q?hFcBO3ImTA7qXayXVq7CxWasLmgUWYsFnmpe4PmXx8zlC+YqDi5wxHAA5NTm?=
 =?us-ascii?Q?oj5M+Emeib+XZk6kjo4ARSiL5GvLjMnCXpDEpw33ucrqDHGu+fmc4Kp+udnc?=
 =?us-ascii?Q?i/WopKJrX8t2DypGSiBulzaKypEz1CfpJuN5ONbuJ4HhZOjRpiNMRGdiQubL?=
 =?us-ascii?Q?74Rkv+w07ifizg83aMDyjCcPgNsjb6Y+S8gOExYmIE2F7wI2iD8JNOsn+NPl?=
 =?us-ascii?Q?QyM6Uu2P6GAB0IkX51HJAla1UQS/2CMJQddpKzxyJbGMC5g7JyoKpU/zNMt+?=
 =?us-ascii?Q?GUmUjo+lYBhYLEwNKm6DXEYCalysPIWNRVYWoTbEjGE7kj3a72tr814VCBu3?=
 =?us-ascii?Q?bPdLSY7ri2SJ7tPwO2dXAlweeYtfTis6SQMN9LtzCBlX4SvhN8hzSm4amJj6?=
 =?us-ascii?Q?T34rISdgvKoiHa4PMtaPFVGJ+1Tkiz2nRQ4SAvpZu+7KhC3tTJDvTlq6cqd/?=
 =?us-ascii?Q?26xGX16vgpCOCZ1mp6yTjjJXlULUxUwstcJdKNjpd8qBMyRy7nDOJDP1yD8B?=
 =?us-ascii?Q?eFyvb3/tmBodbNFotcHgy6z4yiJRwVzSag+MTZq2EyZi9HDRRD8+i239bltE?=
 =?us-ascii?Q?h/NCRbKD6Db8vcNpt8HhrG+WeVlbKxbI5pmZAvUMaipWdMLyCqTmh+58g0p2?=
 =?us-ascii?Q?KqF73qzKitigBXg/2RBNkWVzU9ZuHUYAS1vh16bb/BwwdneNmoHP0CvzADLd?=
 =?us-ascii?Q?FW1Li3SVJ/UtvHshKCJB1mTz6tRW5dnkal9arDCSMa8aBkTnfpLp30Zw0htG?=
 =?us-ascii?Q?+V8+e8rLfI0ikVDLXqcTXJFwPJPwOWx09ixJzWOgB1m4N7PwTsIcLgJwjJVf?=
 =?us-ascii?Q?XV9J3A/WNGZyvdUwxAKT41IsVg/ggQFVxS2buNdlkhMvINtyKMjPfVIc9KZ0?=
 =?us-ascii?Q?e/TtyomOZiHUccw/Gupi1sMxqjMUDg7W/B1k4pkYc1yDFuMujDnqWVLaBI2g?=
 =?us-ascii?Q?EK0zNjb9HxS6OKUZNKOgso5akHd4yDu20tfRxkA637pzpAo7Rjgpjk51lmCj?=
 =?us-ascii?Q?+EHXbAGWDFZUMCW1YsxjTxGPDCtFgRd1Hsvscw=3D=3D?=
X-Forefront-Antispam-Report:
	CIP:4.79.107.243;CTRY:US;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:DM2PR0701CU001.outbound.protection.outlook.com;PTR:mail-dm2pr0701cu00106.outbound.protection.outlook.com;CAT:NONE;SFS:(13230040)(82310400026)(14060799003)(35042699022)(156008)(36860700016)(376014)(1800799024)(56012099003)(22082099003)(18002099003);DIR:OUT;SFP:1102;
X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1
X-MS-Exchange-AntiSpam-MessageData-0:
	ZGBQ3CiD4S7jBPBcrE2PlEsoH4GXHS78CwX4r10ql3Yt5FgorPc/IV2iClEVHsdugjQe1Pvkff98s4tYwex7W+uQQWtQl99a3wMugeGLYU1BshUZSkqaIiq8qBntxdjSOR36tmUdZ9JzqXywITzhm1zd7jVK/grYBO6fQgxId3QACwVOXL0z/Ej4JdWcQGnSpX2Rsi/cwDKTYTOouarazSn1O3B5gdAu6g0O7j+TCpmz0RBiW/b/w39OVelBLWlTn87Y+AcBNH1ub+/4lJphwa58TI0GS7UYgY0TCcYfKR1F15dVW2PgNFBBgH3sqfWnNaFKZ9GwSlcqCCq4thXzC2azX+fVnPb34ab++5hr7l7CDr5zTQObSVx1nrTuKc10xfYKq2JXr21QSOm2+JI/zrL4LW51u8D4eMUjyTEwsJs4kAx3Ux61bo0OeELk9pka
X-OriginatorOrg: elektrobit.com
X-MS-Exchange-CrossTenant-OriginalArrivalTime: 20 Apr 2026 21:33:09.2141
 (UTC)
X-MS-Exchange-CrossTenant-Network-Message-Id: f49ddc1c-3c46-49a9-59fc-08de9f246af9
X-MS-Exchange-CrossTenant-Id: e764c36b-012e-4216-910d-8fd16283182d
X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=e764c36b-012e-4216-910d-8fd16283182d;Ip=[4.79.107.243];Helo=[usbth1es003.ebgroup.elektrobit.com]
X-MS-Exchange-CrossTenant-AuthAs: Internal
X-MS-Exchange-CrossTenant-AuthSource: TreatMessagesAsInternal-CH2PEPF0000013C.namprd02.prod.outlook.com
X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem
X-MS-Exchange-Transport-CrossTenantHeadersStamped: BLAPR08MB6900
X-purgate-ID: tlsNG-4011c0/1776720797-81B878B7-ADDE490D/0/0
X-purgate-type: clean
X-purgate-size: 10132

This commit pulls out generic init/teardown functionality out of "p2m_init"
and "p2m_teardown" into "p2m_init_one", "p2m_teardown_one", "p2m_free_one",
and "p2m_flush_table" functions. This allows our future implementation to
reuse existing code for the initialization/teardown of altp2m views.

On failure, the p2m_init_one function returns a null pointer. This means
p2m_init_one doesn't return an error code, which prevents it from
propagating the exact error from p2m_initialise (specifically, ENOMEM if
allocation fails and EBUSY if the VMID pool is exhausted). However,
returning a p2m_domain pointer simplifies usage for callers of
p2m_init_one, as they can receive an allocated and initialized p2m_domain
without needing to handle allocation separately. Therefore, the main
p2m_init function will now return ENOMEM instead of EBUSY when the VMID
pool is exhausted.

This is commit 6/12 of the altp2m_init/altp2m_teardown routines phase.

Signed-off-by: Rose Spangler <Rose.Spangler@elektrobit.com>
Signed-off-by: Sergej Proskurin <proskurin@sec.in.tum.de>
---
Cc: Stefano Stabellini <sstabellini@kernel.org>
Cc: Julien Grall <julien.grall@arm.com>
---
v2: Added the function p2m_flush_table to the previous version.

v3: Removed struct vttbr.

    Moved define INVALID_VTTBR to p2m.h.

    Exported function prototypes of "p2m_flush_table", "p2m_init_one",
    and "p2m_teardown_one" in p2m.h.

    Extended the function "p2m_flush_table" by additionally resetting
    the fields lowest_mapped_gfn and max_mapped_gfn.

    Added a "p2m_flush_tlb" call in "p2m_flush_table". On altp2m reset
    in function "altp2m_reset", it is important to flush the TLBs after
    clearing the root table pages and before clearing the intermediate
    altp2m page tables to prevent illegal access to stalled TLB entries
    on currently active VCPUs.

    Added a check checking whether p2m->root is NULL in p2m_flush_table.

    Renamed the function "p2m_free_one" to "p2m_teardown_one".

    Removed resetting p2m->vttbr in "p2m_teardown_one", as it the p2m
    will be destroyed afterwards.

    Moved call to "p2m_alloc_table" back to "p2m_init_one".

    Moved the introduction of the type p2m_class_t out of this patch.

    Moved the backpointer to the struct domain out of the struct
    p2m_domain.

v4: Replaced the former use of clear_and_clean_page in p2m_flush_table
    by a routine that invalidates every p2m entry atomically. This
    avoids inconsistencies on CPUs that continue to use the views that
    are to be flushed (e.g., see altp2m_reset).

    Removed unnecessary initializations in the functions "p2m_init_one"
    and "p2m_teardown_one".

    Removed the define INVALID_VTTBR as it is not used any more.

    Cosmetic fixes.

v6: Reworked to accommodate the hostp2m being allocated separately from
    arch_domain.

    Split p2m_teardown_one into p2m_teardown_one and p2m_free_one, with
    both having the same semantics as their x86 counterparts.

    The previous version of this patch also added code to p2m_flush_table.
    This has been split out into a separate commit to minimize the number
    of actual changes in this commit.

    Updated to account for the introduction of p2m_final_teardown.  The
    code which previously was used to reclaim resources from the hostp2m
    during p2m_final_teardown was extracted into p2m_free_one. Now,
    p2m_final_teardown will call p2m_free_one on the hostp2m instead. The
    check for whether the p2m was actually initialized was moved into
    p2m_free_one. This means there is a slight behavior change where
    p2m_teardown_allocation will always be called, even if the p2m_domain
    was never initialized. I'm not sure if this is really a big deal (it
    does require the lock to be obtained, but this shouldn't be an issue at
    final teardown?), but if it is then I can duplicate the check from
    p2m_free_one to the top of p2m_final_teardown, which would replicate
    the previous behavior.

    For the sake of making the p2m_init_one function simple to use (and
    match the x86 function prototype), it returns a null pointer on error
    rather than an error code. While on x86 an error from p2m_init_one is
    always due to an ENOMEM return code (from xzalloc, zalloc_cpumask_var),
    on ARM p2m_initialise (called by p2m_init_one) can actually return
    EBUSY if the VMID pool is exhausted. Therefore, in this error case the
    null pointer return value of p2m_init_one obscures the true error code
    (EBUSY). Callers of p2m_init_one always return ENOMEM when p2m_init_one
    returns a null pointer, so this error will be propagated up as ENOMEM
    rather than EBUSY. The alternative to this would be to have callers
    pass a null **p2m_domain to p2m_init_one while still returning an
    integer return code. In order to preserve a common altp2m_init routine,
    this change would also have to be made on x86 (where there wouldn't be
    any real benefit, the return code is truly only ever ENOMEM).
    Therefore, it seems like an acceptable tradeoff to me to obscure the
    error in this case, but if other folks think we should handle this
    differently than I can revisit this.

    The p2m_teardown_allocation call and p2m_init_one return code changes
    mentioned above should be the only actual behavior changes in this
    patch, otherwise it should be just code movement.
---
 xen/arch/arm/include/asm/p2m.h | 12 ++++++
 xen/arch/arm/mmu/p2m.c         | 77 +++++++++++++++++++++++-----------
 2 files changed, 65 insertions(+), 24 deletions(-)

diff --git a/xen/arch/arm/include/asm/p2m.h b/xen/arch/arm/include/asm/p2m.h
index 23df91ea13e9..5c6dfe4a9789 100644
--- a/xen/arch/arm/include/asm/p2m.h
+++ b/xen/arch/arm/include/asm/p2m.h
@@ -216,6 +216,18 @@ int p2m_init(struct domain *d);
 int p2m_teardown(struct domain *d);
 void p2m_final_teardown(struct domain *d);
 
+/* Flushes the page table held by the p2m. */
+int p2m_flush_table(struct p2m_domain *p2m);
+
+/* Initialize the p2m structure. */
+struct p2m_domain *p2m_init_one(struct domain *d);
+
+/* Release resources held by the p2m structure. */
+int p2m_teardown_one(struct p2m_domain *p2m);
+
+/* Free the p2m structure allocation. */
+void p2m_free_one(struct p2m_domain *p2m);
+
 /*
  * Remove mapping refcount on each mapping page in the p2m
  *
diff --git a/xen/arch/arm/mmu/p2m.c b/xen/arch/arm/mmu/p2m.c
index 1009f10e5db4..1d598c66450b 100644
--- a/xen/arch/arm/mmu/p2m.c
+++ b/xen/arch/arm/mmu/p2m.c
@@ -1444,14 +1444,10 @@ static int p2m_alloc_table(struct domain *d)
     return 0;
 }
 
-int p2m_teardown(struct domain *d)
+int p2m_flush_table(struct p2m_domain *p2m)
 {
-    struct p2m_domain *p2m = p2m_get_hostp2m(d);
     unsigned long count = 0;
     struct page_info *pg;
-    int rc = 0;
-
-    p2m_write_lock(p2m);
 
     while ( (pg = page_list_remove_head(&p2m->pages)) )
     {
@@ -1460,23 +1456,34 @@ int p2m_teardown(struct domain *d)
         /* Arbitrarily preempt every 512 iterations */
         if ( !(count % 512) && hypercall_preempt_check() )
         {
-            rc = -ERESTART;
-            break;
+            return -ERESTART;
         }
     }
 
+    return 0;
+}
+
+int p2m_teardown_one(struct p2m_domain *p2m)
+{
+    int rc;
+
+    p2m_write_lock(p2m);
+    rc = p2m_flush_table(p2m);
     p2m_write_unlock(p2m);
 
     return rc;
 }
 
-void p2m_final_teardown(struct domain *d)
+int p2m_teardown(struct domain *d)
 {
     struct p2m_domain *p2m = p2m_get_hostp2m(d);
 
-    /* p2m not actually initialized */
-    if ( !p2m->domain )
-        goto free_p2m;
+    return p2m_teardown_one(p2m);
+}
+
+void p2m_final_teardown(struct domain *d)
+{
+    struct p2m_domain *p2m = p2m_get_hostp2m(d);
 
     /*
      * No need to call relinquish_p2m_mapping() here because
@@ -1484,18 +1491,27 @@ void p2m_final_teardown(struct domain *d)
      * where relinquish_p2m_mapping() has been called.
      */
 
-    ASSERT(page_list_empty(&p2m->pages));
-
     while ( p2m_teardown_allocation(d) == -ERESTART )
         continue; /* No preemption support here */
     ASSERT(page_list_empty(&d->arch.paging.p2m_freelist));
 
+    p2m_free_one(p2m);
+}
+
+void p2m_free_one(struct p2m_domain *p2m)
+{
+    /* p2m not actually initialized */
+    if ( !p2m->domain )
+        goto free_p2m;
+
+    ASSERT(page_list_empty(&p2m->pages));
+
     if ( p2m->root )
         free_domheap_pages(p2m->root, P2M_ROOT_ORDER);
 
     p2m->root = NULL;
 
-    p2m_free_vmid(d);
+    p2m_free_vmid(p2m->domain);
 
     radix_tree_destroy(&p2m->mem_access_settings, NULL);
 
@@ -1511,9 +1527,7 @@ static int p2m_initialise(struct domain *d, struct p2m_domain *p2m)
     unsigned int cpu;
 
     rwlock_init(&p2m->lock);
-    spin_lock_init(&d->arch.paging.lock);
     INIT_PAGE_LIST_HEAD(&p2m->pages);
-    INIT_PAGE_LIST_HEAD(&d->arch.paging.p2m_freelist);
 
     p2m->vmid = INVALID_VMID;
     p2m->max_mapped_gfn = _gfn(0);
@@ -1559,22 +1573,37 @@ static int p2m_initialise(struct domain *d, struct p2m_domain *p2m)
     return 0;
 }
 
-int p2m_init(struct domain *d)
+struct p2m_domain *p2m_init_one(struct domain *d)
 {
     struct p2m_domain *p2m = xzalloc(struct p2m_domain);
-    int rc;
+
+    if ( !p2m )
+        return NULL;
+
+    if ( !p2m_initialise(d, p2m) )
+        return p2m;
+
+    xfree(p2m);
+    return NULL;
+}
+
+static int p2m_init_hostp2m(struct domain *d)
+{
+    struct p2m_domain *p2m = p2m_init_one(d);
 
     if ( !p2m )
         return -ENOMEM;
 
-    rc = p2m_initialise(d, p2m);
+    d->arch.p2m = p2m;
+    return 0;
+}
 
-    if ( !rc )
-        d->arch.p2m = p2m;
-    else
-        xfree(p2m);
+int p2m_init(struct domain *d)
+{
+    spin_lock_init(&d->arch.paging.lock);
+    INIT_PAGE_LIST_HEAD(&d->arch.paging.p2m_freelist);
 
-    return rc;
+    return p2m_init_hostp2m(d);
 }
 
 /*
-- 
2.34.1



From xen-devel-bounces@lists.xenproject.org Mon Apr 20 21:33:25 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 20 Apr 2026 21:33:25 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1287817.1568264 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wEwFB-0004E6-Bw; Mon, 20 Apr 2026 21:33:25 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1287817.1568264; Mon, 20 Apr 2026 21: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 1wEwFA-0004AS-Hh; Mon, 20 Apr 2026 21:33:24 +0000
Received: by outflank-mailman (input) for mailman id 1287817;
 Mon, 20 Apr 2026 21:33:19 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <Rose.Spangler@elektrobit.com>) id 1wEwF4-00030Q-Tq
 for xen-devel@lists.xenproject.org; Mon, 20 Apr 2026 21:33:19 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wEwF4-0054Hn-9c
 for xen-devel@lists.xenproject.org; Mon, 20 Apr 2026 23:33:18 +0200
Received: from [10.42.69.4] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <Rose.Spangler@elektrobit.com>)
 id 69e69b93-5cb7-0a2a0a5109dd-0a2a4504dc78-12
 for <xen-devel@lists.xenproject.org>; Mon, 20 Apr 2026 23:33:18 +0200
Received: from [52.101.62.107]
 (helo=DM5PR21CU001.outbound.protection.outlook.com)
 by tlsNG-ebf023.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.1)
 (envelope-from <Rose.Spangler@elektrobit.com>)
 id 69e69b9c-1dec-0a2a45040019-34653e6b23f9-3
 for <xen-devel@lists.xenproject.org>; Mon, 20 Apr 2026 23:33:17 +0200
Received: from SN7PR04CA0051.namprd04.prod.outlook.com (2603:10b6:806:120::26)
 by PH0PR08MB10954.namprd08.prod.outlook.com (2603:10b6:510:383::13)
 with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9818.32; Mon, 20 Apr
 2026 21:33:12 +0000
Received: from SA2PEPF00003F63.namprd04.prod.outlook.com
 (2603:10b6:806:120:cafe::e5) by SN7PR04CA0051.outlook.office365.com
 (2603:10b6:806:120::26) with Microsoft SMTP Server (version=TLS1_3,
 cipher=TLS_AES_256_GCM_SHA384) id 15.20.9791.48 via Frontend Transport; Mon,
 20 Apr 2026 21:33:12 +0000
Received: from usbth1es003.ebgroup.elektrobit.com (4.79.107.243) by
 SA2PEPF00003F63.mail.protection.outlook.com (10.167.248.38) with Microsoft
 SMTP Server (version=TLS1_3, cipher=TLS_AES_256_GCM_SHA384) id 15.20.9791.48
 via Frontend Transport; Mon, 20 Apr 2026 21:33:12 +0000
Received: from usbth1es003 (localhost [127.0.0.1])
 by usbth1es003.ebgroup.elektrobit.com (Postfix) with SMTP id 4fzzHW33vXz1wdZ; 
 Mon, 20 Apr 2026 14:33:11 -0700 (PDT)
Received: from DM5PR08CU004.outbound.protection.outlook.com
 (mail-dm5pr08cu00404.outbound.protection.outlook.com [40.93.13.100])
 (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)
 key-exchange secp384r1 server-signature RSA-PSS (2048 bits) server-digest
 SHA256) (No client certificate requested)
 by usbth1es003.ebgroup.elektrobit.com (Postfix) with ESMTPS;
 Mon, 20 Apr 2026 14:33:10 -0700 (PDT)
Received: from BY1P220CA0047.NAMP220.PROD.OUTLOOK.COM (2603:10b6:a03:59e::9)
 by CYXPR08MB9432.namprd08.prod.outlook.com (2603:10b6:930:e5::15) with
 Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9818.32; Mon, 20 Apr
 2026 21:33:08 +0000
Received: from SJ1PEPF000026C8.namprd04.prod.outlook.com
 (2603:10b6:a03:59e:cafe::82) by BY1P220CA0047.outlook.office365.com
 (2603:10b6:a03:59e::9) with Microsoft SMTP Server (version=TLS1_3,
 cipher=TLS_AES_256_GCM_SHA384) id 15.20.9791.48 via Frontend Transport; Mon,
 20 Apr 2026 21:33:08 +0000
Received: from denue6es012.ebgroup.elektrobit.com (213.95.148.172) by
 SJ1PEPF000026C8.mail.protection.outlook.com (10.167.244.105) with Microsoft
 SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id
 15.20.9791.48 via Frontend Transport; Mon, 20 Apr 2026 21:33:07 +0000
Received: from ubuntu.localdomain (10.10.178.50) by
 denue6es012.ebgroup.elektrobit.com (10.243.160.140) with Microsoft SMTP
 Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id
 15.2.2562.35; Mon, 20 Apr 2026 23:33:05 +0200
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@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=elektrobit.com header.i="@elektrobit.com" header.h="From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck"; dkim=pass header.s=selector1 header.d=elektrobit.com header.i="@elektrobit.com" header.h="From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck"
ARC-Seal: i=2; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=pass;
 b=gA66qJ1qr9aYoIM5IssLJzzsSas8fVxu/c5AmC9I/YQn2Q9A1tr7XY3Vu9A/GxyMFlTdUNT368It7QXpYvVxV2vLtEhdalnM0OWNm2EcGyzsG885yh4LEbxszsRq3SXWbGQAnBFud/0YzXBwkV/WPNNlB5eVQQ2KJD5eJf8Ikcf9H7aIu260IZNwgyPsAcAXsNMWRCpJfolfr+4Efb3vlKRGoOXxJO8IKR0TOmgWLJIJoLUa5XP6NpdHVLOdVg1Oww8ON4xQRuRkMWZy8THvUQ0m3i0nWPwmP86R6+RrByZid7YGKwL4/l4yhlWJtTShpe0mzctqDGffF6Q3c0a9uQ==
ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com;
 s=arcselector10001;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1;
 bh=YyF2sek1Gl4M2bt+N59A0D5zPi4VE0N2VV6Dzby1vi0=;
 b=wnCGf150i/7w01QvMem5/ix7wTNuRrQIApEfiJsyjYayp/r8O+YX9gxMRIFzsuvjVeTcWvJeDsFQjzCxDM4rN/fFxqnegCkP9bSsgKjDEUHfMVcMvgb23fEs+rVUVOJvWF1T39B9pcFdljVJG+A2/hlJWzIWEWZXdSHUJuz7JYhOztZnfN9I+DU6y0pe8Jx80Kmh04RtEYKjqQDSCNTkHQyrWuU0HwPxYa/WC4lapALRL6Kbd6gooT7Tveo+6kkQDODOUfRF400lfQqiBiS8opE/LbjrriEt1mRfHMGdxzOkm1bIEbihfBJkMNmkS/hickeZO5AheGwVa1ibTVXCqQ==
ARC-Authentication-Results: i=2; mx.microsoft.com 1; spf=pass (sender ip is
 40.93.13.100) smtp.rcpttodomain=amd.com smtp.mailfrom=elektrobit.com;
 dmarc=pass (p=quarantine sp=none pct=100) action=none
 header.from=elektrobit.com; dkim=pass (signature was verified)
 header.d=elektrobit.com; arc=pass (0 oda=1 ltdi=1
 spf=[1,1,smtp.mailfrom=elektrobit.com]
 dmarc=[1,1,header.from=elektrobit.com])
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=elektrobit.com;
 s=selector1;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck;
 bh=YyF2sek1Gl4M2bt+N59A0D5zPi4VE0N2VV6Dzby1vi0=;
 b=THCmPKYmR4mNKVFXzs4CHRnXw/CU0va6qOrv1kWN9MLrxMFnJCKgknBzQpkhA9AeEuajOUIija31UZ6jgFSnb+ueBtv/vegZvIFL9TiE4veiGk7zWp9wygHEV6eBrosVQK6Cd5ZziVYMm/PYQyUSbbcmMa6829BCxXsL6t2CMm4=
X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 40.93.13.100)
 smtp.mailfrom=elektrobit.com; dkim=pass (signature was verified)
 header.d=elektrobit.com;dmarc=pass action=none header.from=elektrobit.com;
Received-SPF: Pass (protection.outlook.com: domain of elektrobit.com
 designates 40.93.13.100 as permitted sender) receiver=protection.outlook.com;
 client-ip=40.93.13.100; helo=DM5PR08CU004.outbound.protection.outlook.com;
 pr=C
ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none;
 b=LqwhXpYbI7+4tnBowhn+W0TszIQV4DVijXufMJHC9f4cEOoZRejEayA1hyqJ9xxtClmS9i/D3b2zr21GrHhbFEFjSrsq8ONsTsdC7gawMGUStRN/W+4QP9eWDzkeL/X+ioJgigO7L74ubzyBDktnp7cp0gEqG/EisUGPDAfMQw9DTHufLSSLDpntbXYBLbNdSUsSc4Cr6G66PQ5Oeb50U6GveIa6GpeUM8cPC0A+F8TBV8KvjQee+PCrl31i3MsgCLgPlD/L9S76Y23TCqgl66PJFcTEZ56Vs3OsIlAN5wHnBs9c7vCl/s2eS+l/zDZ15r0agSwEEwGaKDPzWqOunQ==
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com;
 s=arcselector10001;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1;
 bh=YyF2sek1Gl4M2bt+N59A0D5zPi4VE0N2VV6Dzby1vi0=;
 b=uo7owkK779+Jyq+s+nDeOMw8B71wLx8mxtvS0gVL61YwX28YXWfSc5iYCMmVKWHyq2vX63onBSvZtA4nx+MOAsSAZ9GdHFXxUCXkfi4IbTGgJbuS0izEunYx7mo0cLA/W/x5DYn+DYdPVBdgmmbdIBvlFiNhV6hzJaEc/v16VG9dtMLP0nifSFiMga0vKD2XFF0gOLmdZa8pwE72hvohZC86FxMyuBmhsXDmE9udO4w/D7f9SsRvSwZwyVlsQgTZS/LuL65zgaBjIVM6t3I6oNuZeT815tiV/BNv1866JOikXfjfqtAblAOmq4cK9D86+jvR5pmxYEfiRYImfHoBjA==
ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass (sender ip is
 213.95.148.172) smtp.rcpttodomain=lists.xenproject.org
 smtp.mailfrom=elektrobit.com; dmarc=pass (p=quarantine sp=none pct=100)
 action=none header.from=elektrobit.com; dkim=none (message not signed);
 arc=none (0)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=elektrobit.com;
 s=selector1;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck;
 bh=YyF2sek1Gl4M2bt+N59A0D5zPi4VE0N2VV6Dzby1vi0=;
 b=THCmPKYmR4mNKVFXzs4CHRnXw/CU0va6qOrv1kWN9MLrxMFnJCKgknBzQpkhA9AeEuajOUIija31UZ6jgFSnb+ueBtv/vegZvIFL9TiE4veiGk7zWp9wygHEV6eBrosVQK6Cd5ZziVYMm/PYQyUSbbcmMa6829BCxXsL6t2CMm4=
X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 213.95.148.172)
 smtp.mailfrom=elektrobit.com; dkim=none (message not signed)
 header.d=none;dmarc=pass action=none header.from=elektrobit.com;
Received-SPF: Pass (protection.outlook.com: domain of elektrobit.com
 designates 213.95.148.172 as permitted sender)
 receiver=protection.outlook.com; client-ip=213.95.148.172;
 helo=denue6es012.ebgroup.elektrobit.com; pr=C
From: Rose Spangler <Rose.Spangler@elektrobit.com>
To: <xen-devel@lists.xenproject.org>
CC: Rose Spangler <Rose.Spangler@elektrobit.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>, Sergej Proskurin
	<proskurin@sec.in.tum.de>
Subject: [RFC PATCH v6 25/43] arm/altp2m: Add altp2m index to arch_vcpu
Date: Mon, 20 Apr 2026 17:31:48 -0400
Message-ID: <20260420213206.208750-26-Rose.Spangler@elektrobit.com>
X-Mailer: git-send-email 2.34.1
In-Reply-To: <20260420213206.208750-1-Rose.Spangler@elektrobit.com>
References: <20260420213206.208750-1-Rose.Spangler@elektrobit.com>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit
Content-Type: text/plain
X-Originating-IP: [10.10.178.50]
X-ClientProxiedBy: denue6es012.ebgroup.elektrobit.com (10.243.160.140) To
 denue6es012.ebgroup.elektrobit.com (10.243.160.140)
X-EOPAttributedMessage: 1
X-MS-Exchange-SkipListedInternetSender:
 ip=[213.95.148.172];domain=denue6es012.ebgroup.elektrobit.com
X-MS-TrafficTypeDiagnostic:
	SJ1PEPF000026C8:EE_|CYXPR08MB9432:EE_|SA2PEPF00003F63:EE_|PH0PR08MB10954:EE_
X-MS-Office365-Filtering-Correlation-Id: 558191f2-997b-4489-a2f6-08de9f246cbc
X-SM-outgoing: yes
X-MS-Exchange-SenderADCheck: 1
X-MS-Exchange-AntiSpam-Relay: 0
X-Microsoft-Antispam-Untrusted:
 BCL:0;ARA:13230040|82310400026|36860700016|376014|1800799024|56012099003|22082099003|18002099003;
X-Microsoft-Antispam-Message-Info-Original:
 =?us-ascii?Q?7Ghb1HU84mtv2uHW7K9PpWSE9hUaeEg9Z5RP4QbbjZ8ZKMwVEqLO7m8oLEOZ?=
 =?us-ascii?Q?MLUCvdNpSV4pykqo0cqw3ykDgUE6DcpizpjCXxNFE/PnYVPFdNuezQpL9UjJ?=
 =?us-ascii?Q?zOXET97q8Ys+RsoVE8otbU5Ig72LVWVnoQErwRceltAyqTp1pP3ykArC1kdb?=
 =?us-ascii?Q?zC0vyPPlirexpEQY/LxbjQHZdkh7LzEY8YSde1Pju536ohB20VKPUEQ47D8g?=
 =?us-ascii?Q?4Or+zWp7cB8kl2ivCx2fxPVNllsme++Xreiu22XGC8XYEUszOQG+MnY2IB3r?=
 =?us-ascii?Q?q6OiWzhzWYIhhJB0kW6Ybt/YEfFSjviRbCeOEv6LAexiXxHdSjJOSSRMRZkz?=
 =?us-ascii?Q?ojIxKGSclFati+lgPuCDHmv04aZBrbu/ut900oBVrwUUkftNMppxNuauUMFH?=
 =?us-ascii?Q?9fgRFIcy1WOiXtT6OhxPDcBpX2ORx2hHo8Jxb2htToB3xaUBnD/jVA9YNSCh?=
 =?us-ascii?Q?f9TQhkEeypsc7rcVyEm3oP1MwnkLyMXZUeB/uIxbMYs58wYpd+BgetIjgY/L?=
 =?us-ascii?Q?ZuSMNr8LrY46frKIH1Mg9dzWpvRQ2qJJOYCjtavwrPt5m1cWPxNQkW411gTY?=
 =?us-ascii?Q?WVuoOu964hd2gBWkDCOi+OolkwLtnaX8vSKruFIhGKdwTcdpEK1p/Q8a8s5S?=
 =?us-ascii?Q?U2zjCKtbB7kCtt1JF5EISBUfS/mn+q0EGw2/q1oFp5F2HM3qFwLOYx9abP+y?=
 =?us-ascii?Q?92Lso/2jvZl5pssAYORElkUtU5argSOLOeyIT7dXn/kqgLDxq1MUfEqGrvYS?=
 =?us-ascii?Q?5TMquytUwaEV8DVa3jVkr/GeYgf5kaHqZQOTyHnFxIytErxVpHfArzQSF6yO?=
 =?us-ascii?Q?nC2aH420ZoqFzBy1BtK9a2sC+C/ToULbNx/y5gvfNwAAXNl08yxk+4LggRJW?=
 =?us-ascii?Q?76IJ5aL5GfDnLTkM82gI4sfYg92+BblmwRDiZlmccmApib2qGkoPEHlwUoTk?=
 =?us-ascii?Q?69icvkiazn4m+Sm/WA8p3fheC61t7v4zct+xdGHa0c6OlxmZ9G4/Pk5CBf4c?=
 =?us-ascii?Q?CQHUOBmhmGX7vr16LDK1G1NgN8cgwBQv6iSJfHSvwxwqb6HFBRHSC+u1/z/S?=
 =?us-ascii?Q?B+cUDJLQ94n/Z5iOhysUyuYgkQXa7Dih4DhsJsPOIUKxcfrfg3olQ0EJXb0N?=
 =?us-ascii?Q?Fsau9Ms1VbVXZrbq/hC3MQb6DvI61cgFu/rA+DUpycD2g61oD7l701XGqXqV?=
 =?us-ascii?Q?wrdx8g1ytBHQrNMt?=
X-Forefront-Antispam-Report-Untrusted:
 CIP:213.95.148.172;CTRY:DE;LANG:en;SCL:1;SRV:;IPV:CAL;SFV:NSPM;H:denue6es012.ebgroup.elektrobit.com;PTR:eth1-fw1-nbg6.eb.noris.de;CAT:NONE;SFS:(13230040)(82310400026)(36860700016)(376014)(1800799024)(56012099003)(22082099003)(18002099003);DIR:OUT;SFP:1102;
X-Exchange-RoutingPolicyChecked:
 j7gEgFlDKiCBoTWJzwZ8nQTHvzGIdeI6kpJPS80llnwAvS/icOnuBYKFNlh2vDUecsfIVCTPX4tUAd5vgueFw4vO05nAx4jE9tAhrNJdE1OqvKRjddPxOFt6W/bRSpWMVZWpbRno0OEqtCB15k8ug3ZEwcO/M34woMfj8dcERry0CmclpJZQJIc/6ixwRoaysMy27cJ8uFLa9J2B7uA6IQiYvdXKI9aCdBC6/IWkJZJOb7vWWcfWKMBcZULif+vrU2H2MtZB78N5YfztUMNqY2j0i02XTEajax4g7+rEv0gy6UL4xOjGR77toch1EOInFxykwqsWiW0A98BCq1tDBA==
X-MS-Exchange-Transport-CrossTenantHeadersStamped: CYXPR08MB9432
X-MS-Exchange-SkipListedInternetSender:
 ip=[40.93.13.100];domain=DM5PR08CU004.outbound.protection.outlook.com
X-MS-Exchange-ExternalOriginalInternetSender:
 ip=[40.93.13.100];domain=DM5PR08CU004.outbound.protection.outlook.com
X-MS-Exchange-Transport-CrossTenantHeadersStripped:
 SA2PEPF00003F63.namprd04.prod.outlook.com
X-MS-PublicTrafficType: Email
X-MS-Office365-Filtering-Correlation-Id-Prvs:
	6a518397-6404-4f65-65a3-08de9f246a21
X-Microsoft-Antispam:
	BCL:0;ARA:13230040|82310400026|14060799003|35042699022|156008|36860700016|376014|1800799024|56012099003|22082099003|18002099003;
X-Microsoft-Antispam-Message-Info:
	=?us-ascii?Q?ZAXdAa8Uiw9Qy0AH0NcwNiO7SNiVbdRav7pirYgZk2V+EM0nNBkw+c4jeNGH?=
 =?us-ascii?Q?07JlNVPMnqufeGwXwEB0uguilwTqKfFw32Xi6eVm3a0zddAdESjlO5KP3A7r?=
 =?us-ascii?Q?2o99ekmMVUJj5jdGFXwef9bi3jMcDTp9djofYcfjpVdzY8xHHb0frj3QYS/D?=
 =?us-ascii?Q?24i9NC+mTTufNBSYwBWoKVg1p0yUnvgaJuEO40PLG6BNdVhwbbQJcqMpKlhM?=
 =?us-ascii?Q?QgeSuSun5SC5MIaUKJTQSRCk8vSTsUmCvq8xsz3GnDvhbqAr2HrqruucT+KX?=
 =?us-ascii?Q?KNwN4Uo4Eyw+ab+7MgrNJQpdw/JfUsaFi/zYY0o06UB6AC8eGoIBatOqimR7?=
 =?us-ascii?Q?7iPSUpp0KoYWJNXZys5yBxwxT9/+EQwD7fbhsPFCEMaMjWuINuRjttSMCPDT?=
 =?us-ascii?Q?1HY+JiHqMfuM6c0o6wvWL0SButOaRUu9dme8IuedPXZrXI2gus7c7bECSOCn?=
 =?us-ascii?Q?kRGlpkg1qJmcKjeFpb8VbVeDSN5LuWSCwH7xD0x00/sdjMyDOuJVbDs5Z4gY?=
 =?us-ascii?Q?3ZABgLPJ0hwJwN0SseMtfAWUmwp/wRkRPdtqnFwYzjmcgEB7F/YQ+3c8kjf6?=
 =?us-ascii?Q?c5jB9KZ3scvyW5cC3K5nVIlt5efswurR+hyI82JGC1IFuKzc9YyhxLeCMV45?=
 =?us-ascii?Q?KnSTV9x9E4qCpxR06cZy0/nclxIKOgN+dua6xXro/nwm5WNlIhNqYWxrQOCB?=
 =?us-ascii?Q?GVa9iqXa8VV593er3LXzmMh0lwsNqUeLRpwJ4QiK8bT+lqQaHu8r3n2Z9mo7?=
 =?us-ascii?Q?OW71IqBjsEkOu55LhmylhCEqwG0BfgEsvjyxmm+UliZNn5kBhrCbW28dEL65?=
 =?us-ascii?Q?x+vK+9KQyd9xwsbQy7yFnZJ1QNfe+0Hfvmshmom2f1PL6wuwIEJ1uax3EMjS?=
 =?us-ascii?Q?uIPVR103mS3/qWXKKXtiKrJUnkNZ/95G9+HYPniQEKlrqXo1DV/fJsaMwiuH?=
 =?us-ascii?Q?ahu5aWZii2OFw32F0FLZoR14n3xnLKOtVTuGsp8OyFU25kwf835OGeoHOKiz?=
 =?us-ascii?Q?JI8IQseJ71VuxjnGa7p87Z2Mreu2eGnfutuWWUXJpyvmKyoxEcTxRKnapl8P?=
 =?us-ascii?Q?PwrX0n3J4Wtccg1/0wK+anpW92jJh6REPOg3nuMAwCwbKKVU3WjSXUH6U6C6?=
 =?us-ascii?Q?M/KHn17p6pmaWlLy0/5gi0oWW4EWKlHkLDr74V7Zuw4GuvaAnNGSQOs2Avxx?=
 =?us-ascii?Q?lJBO4BZX58lIkNZm?=
X-Forefront-Antispam-Report:
	CIP:4.79.107.243;CTRY:US;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:DM5PR08CU004.outbound.protection.outlook.com;PTR:mail-dm5pr08cu00404.outbound.protection.outlook.com;CAT:NONE;SFS:(13230040)(82310400026)(14060799003)(35042699022)(156008)(36860700016)(376014)(1800799024)(56012099003)(22082099003)(18002099003);DIR:OUT;SFP:1102;
X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1
X-MS-Exchange-AntiSpam-MessageData-0:
	6Q+0lxUSrYdC1w0ZC9H5r/Y807GB/iwhObWzzKFzu17Pgu2WWS2KrsUwPGv1fmqXkCnXZPkTPnOCeWfD6M3+kM4Pvs+Vg2cLQNhlbxCT6kVq35qgqcbIkhGKfl7IefkfCktIOHbUWwSHQYjRWtXjZkgACYCYEGYbgDS+oF3JEQ4s6TUOuWhqDJtBmkyDWU94mbETxaJLLaeSrTRe5BiG+6H8xHLdIoRk9KRfse5GmtgYvyCCQmL/2OvQok0F+8UCDBL1BlIi12Ib7zTQzLUyvcoWPM73xvjr2blnpN+4ge0XcOtNhiXP7HAoqocSZq/Og8A+YLoLGUw1GAg1HYhB5K5ZviJX4Arkx53p+YRC4CvK6rDP3MKP4YLWldstNh43rvvkFelehWGlhQZMnxmVqecZ0b76ypq8NZ+ZTvctRdWMWe0nj5onVgA1QJR0F1Sv
X-OriginatorOrg: elektrobit.com
X-MS-Exchange-CrossTenant-OriginalArrivalTime: 20 Apr 2026 21:33:12.1554
 (UTC)
X-MS-Exchange-CrossTenant-Network-Message-Id: 558191f2-997b-4489-a2f6-08de9f246cbc
X-MS-Exchange-CrossTenant-Id: e764c36b-012e-4216-910d-8fd16283182d
X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=e764c36b-012e-4216-910d-8fd16283182d;Ip=[4.79.107.243];Helo=[usbth1es003.ebgroup.elektrobit.com]
X-MS-Exchange-CrossTenant-AuthAs: Internal
X-MS-Exchange-CrossTenant-AuthSource: TreatMessagesAsInternal-SA2PEPF00003F63.namprd04.prod.outlook.com
X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem
X-MS-Exchange-Transport-CrossTenantHeadersStamped: PH0PR08MB10954
X-purgate-ID: tlsNG-ebf023/1776720798-2AB633FF-B9597DD7/0/0
X-purgate-type: clean
X-purgate-size: 1874

This commit adds ap2m_idx to the VCPU struct on ARM. This makes it possible
to track the current altp2m view being used by a VCPU.

This is commit 2/4 of the altp2m_{get,set}_altp2m phase.

Signed-off-by: Rose Spangler <Rose.Spangler@elektrobit.com>
Signed-off-by: Sergej Proskurin <proskurin@sec.in.tum.de>
---
v6: This patch was originally part of the "arm/p2m: Add
    HVMOP_altp2m_set_domain_state" patch from the v4/v5 patch series.
    It has been extracted into its own commit to make the patch series
    easier to follow. If it would be preferred, this commit can be squashed
    into another commit.

    Added support for the CONFIG_ALTP2M option.
---
 xen/arch/arm/include/asm/altp2m.h | 4 +---
 xen/arch/arm/include/asm/domain.h | 5 +++++
 2 files changed, 6 insertions(+), 3 deletions(-)

diff --git a/xen/arch/arm/include/asm/altp2m.h b/xen/arch/arm/include/asm/altp2m.h
index 5a217f48b103..bc695018e62c 100644
--- a/xen/arch/arm/include/asm/altp2m.h
+++ b/xen/arch/arm/include/asm/altp2m.h
@@ -26,9 +26,7 @@ static inline bool altp2m_supported(void)
 /* Alternate p2m VCPU */
 static inline uint16_t altp2m_vcpu_idx(const struct vcpu *v)
 {
-    /* Not implemented yet */
-    BUG();
-    return 0;
+    return v->arch.ap2m_idx;
 }
 
 #else /* CONFIG_ALTP2M */
diff --git a/xen/arch/arm/include/asm/domain.h b/xen/arch/arm/include/asm/domain.h
index 9e69d62086cd..4d497a21b648 100644
--- a/xen/arch/arm/include/asm/domain.h
+++ b/xen/arch/arm/include/asm/domain.h
@@ -249,6 +249,11 @@ struct arch_vcpu
     struct vtimer virt_timer;
     bool   vtimer_initialized;
 
+#if CONFIG_ALTP2M
+    /* Alternate p2m index */
+    uint16_t ap2m_idx;
+#endif
+
     /*
      * The full P2M may require some cleaning (e.g when emulation
      * set/way). As the action can take a long time, it requires
-- 
2.34.1



From xen-devel-bounces@lists.xenproject.org Mon Apr 20 21:33:27 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 20 Apr 2026 21:33:27 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1287824.1568272 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wEwFD-0004em-A7; Mon, 20 Apr 2026 21:33:27 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1287824.1568272; Mon, 20 Apr 2026 21:33: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 1wEwFC-0004Ww-FU; Mon, 20 Apr 2026 21:33:26 +0000
Received: by outflank-mailman (input) for mailman id 1287824;
 Mon, 20 Apr 2026 21:33:20 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <Rose.Spangler@elektrobit.com>) id 1wEwF6-0003FU-BN
 for xen-devel@lists.xenproject.org; Mon, 20 Apr 2026 21:33:20 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wEwF5-00EgCp-OK
 for xen-devel@lists.xenproject.org; Mon, 20 Apr 2026 23:33:19 +0200
Received: from [10.42.69.3] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <Rose.Spangler@elektrobit.com>)
 id 69e69b92-e002-0a2a0a5209dd-0a2a45038228-8
 for <xen-devel@lists.xenproject.org>; Mon, 20 Apr 2026 23:33:19 +0200
Received: from [52.101.46.86]
 (helo=CO1PR03CU002.outbound.protection.outlook.com)
 by tlsNG-33051d.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.1)
 (envelope-from <Rose.Spangler@elektrobit.com>)
 id 69e69b9d-672d-0a2a45030019-34652e563b1b-3
 for <xen-devel@lists.xenproject.org>; Mon, 20 Apr 2026 23:33:19 +0200
Received: from SJ0PR05CA0074.namprd05.prod.outlook.com (2603:10b6:a03:332::19)
 by MN2PR08MB6382.namprd08.prod.outlook.com (2603:10b6:208:1b0::20)
 with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9769.48; Mon, 20 Apr
 2026 21:33:11 +0000
Received: from SJ1PEPF00001CDE.namprd05.prod.outlook.com
 (2603:10b6:a03:332:cafe::c6) by SJ0PR05CA0074.outlook.office365.com
 (2603:10b6:a03:332::19) with Microsoft SMTP Server (version=TLS1_3,
 cipher=TLS_AES_256_GCM_SHA384) id 15.20.9791.48 via Frontend Transport; Mon,
 20 Apr 2026 21:33:11 +0000
Received: from usbth1es003.ebgroup.elektrobit.com (4.79.107.243) by
 SJ1PEPF00001CDE.mail.protection.outlook.com (10.167.242.6) with Microsoft
 SMTP Server (version=TLS1_3, cipher=TLS_AES_256_GCM_SHA384) id 15.20.9791.48
 via Frontend Transport; Mon, 20 Apr 2026 21:33:11 +0000
Received: from usbth1es003 (localhost [127.0.0.1])
 by usbth1es003.ebgroup.elektrobit.com (Postfix) with SMTP id 4fzzHV6dCGz1wdS; 
 Mon, 20 Apr 2026 14:33:10 -0700 (PDT)
Received: from BN1PR07CU003.outbound.protection.outlook.com
 (mail-bn1pr07cu00306.outbound.protection.outlook.com [40.93.12.6])
 (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)
 key-exchange secp384r1 server-signature RSA-PSS (2048 bits) server-digest
 SHA256) (No client certificate requested)
 by usbth1es003.ebgroup.elektrobit.com (Postfix) with ESMTPS;
 Mon, 20 Apr 2026 14:33:10 -0700 (PDT)
Received: from BY1P220CA0041.NAMP220.PROD.OUTLOOK.COM (2603:10b6:a03:59e::13)
 by DS0PR08MB9502.namprd08.prod.outlook.com (2603:10b6:8:1a9::11) with
 Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9818.33; Mon, 20 Apr
 2026 21:32:58 +0000
Received: from SJ1PEPF000026C8.namprd04.prod.outlook.com
 (2603:10b6:a03:59e:cafe::26) by BY1P220CA0041.outlook.office365.com
 (2603:10b6:a03:59e::13) with Microsoft SMTP Server (version=TLS1_3,
 cipher=TLS_AES_256_GCM_SHA384) id 15.20.9791.48 via Frontend Transport; Mon,
 20 Apr 2026 21:32:56 +0000
Received: from denue6es012.ebgroup.elektrobit.com (213.95.148.172) by
 SJ1PEPF000026C8.mail.protection.outlook.com (10.167.244.105) with Microsoft
 SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id
 15.20.9791.48 via Frontend Transport; Mon, 20 Apr 2026 21:32:56 +0000
Received: from ubuntu.localdomain (10.10.178.50) by
 denue6es012.ebgroup.elektrobit.com (10.243.160.140) with Microsoft SMTP
 Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id
 15.2.2562.35; Mon, 20 Apr 2026 23:32:50 +0200
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@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=elektrobit.com header.i="@elektrobit.com" header.h="From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck"; dkim=pass header.s=selector1 header.d=elektrobit.com header.i="@elektrobit.com" header.h="From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck"
ARC-Seal: i=2; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=pass;
 b=P1ugP5wTF1I++lHRFLT1nDrWAKhPpQlywHiXA2ADegIxozZs2Z4l8ZrCy9DkNzGq/6bIdjhL7Qvt5LIbo/GzjjlAVMnb+jAlGvdOXtmc3rG6ZBbdoXGFt4zCCihUeikpuH6PFlvnbyIzseNgVz005F/dWhV9gLapuHxzn+RSBj1m/uqWsqI9yWgmueXY+ebcFk13+sJ8B5Q6NejHGaARHIvd1y6dVI16u6IS9H966JtAQdB946dpcbsf8/1Pac5qba3owJIzolPBSYUCuiUUU8rfX6nfbaLx1MULJXPO3IiUEfmQyEuWRilM/HAMR57dLSbXZS4IryAn1f4CzSvXZA==
ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com;
 s=arcselector10001;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1;
 bh=yIbI7Z0q3lXJU+nOYvRW36Lh6wKWhfwhF7qmIzuTXnQ=;
 b=xW3gE52Fy1wNzbuPUXQETEVupAjA+j7BtSw4wmZbA49NccGwyYgPDxjHftwSeGg8JhlmKAdwVSKNq2xTVMocSJcsZUeW8Lb8P73yMCDSJOFWf3IeFZ1rP4v6BzKrjJij29/Vu8OnH0ckJUPGK8uOwfV5+YVyFqF3ibAV2cZW8Ztre78+rss1/gW9pMcJ3aqCKyPYZiFjtVXWRC/dC2svIDmbnigpEGMSn6x2yo4yAozSB7tuH5WyROl/H2hTh4WWchdjV58useyEzuZhGJhXgEb8EEctQu6LYgKI6qWf3+Fbiie1qp8K68YIlngJubfNzeivyjuJjRzNx35ciASkvg==
ARC-Authentication-Results: i=2; mx.microsoft.com 1; spf=pass (sender ip is
 40.93.12.6) smtp.rcpttodomain=amd.com smtp.mailfrom=elektrobit.com;
 dmarc=pass (p=quarantine sp=none pct=100) action=none
 header.from=elektrobit.com; dkim=pass (signature was verified)
 header.d=elektrobit.com; arc=pass (0 oda=1 ltdi=1
 spf=[1,1,smtp.mailfrom=elektrobit.com]
 dmarc=[1,1,header.from=elektrobit.com])
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=elektrobit.com;
 s=selector1;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck;
 bh=yIbI7Z0q3lXJU+nOYvRW36Lh6wKWhfwhF7qmIzuTXnQ=;
 b=IqQU2Xy4RGJOW/2cWL56D1KRboAls7KEstEYqI0lxeIDgWDnxuI/PRcFWTRamxe2pZ75WGYymKdhYREHbFtRLKVzcNcCjJtr68BT7c9UUZyIBF/AXxv3/zpNCOMk3mVC+WyfO+6eToU/EuWFHEBX4RU51ypls47tmMXx3r3Itkk=
X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 40.93.12.6)
 smtp.mailfrom=elektrobit.com; dkim=pass (signature was verified)
 header.d=elektrobit.com;dmarc=pass action=none header.from=elektrobit.com;
Received-SPF: Pass (protection.outlook.com: domain of elektrobit.com
 designates 40.93.12.6 as permitted sender) receiver=protection.outlook.com;
 client-ip=40.93.12.6; helo=BN1PR07CU003.outbound.protection.outlook.com; pr=C
ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none;
 b=NjrZ2AYhu0C3EvvjAFZY7XkP3D+gU0c6et5k3ZTAKTKBDI3wAdBacVAoKqXY2z6BjOi8Bjih5RBIP45HyGQkOv1XPeslWBmZ54ddp+byE94e1ivoBio7JTSDuDBLvyvrI4Cv8IfweMNRa70aytz2zszE5s1NEsSZOJ6wIvwDDdLLuievAMuFrw/UrRh79pT958txjz6avCtSWjkJGPFcU/djEbFN3qFBvPJ8ZenZCSKOwgZFX19HymY/tR7R/cmu3T7lnPSFU55lCOWZBEGO/mUjeaqigmMxd4Fwe+4H/CGQyi1o4ZsHTn7F+j/CHgOJ5XYo1N6nY1pPW4Rrt8HooA==
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com;
 s=arcselector10001;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1;
 bh=yIbI7Z0q3lXJU+nOYvRW36Lh6wKWhfwhF7qmIzuTXnQ=;
 b=xKJ5ywLen3SwY3i+Tszdyobo95F2p5SIYqNufmLw3G0ZiXTq3vJqYVQgGIkwZqze1DG2s4gfrzXPV7v6nSHQSDuVEFfzekb0rfU4S0kTnxn+8RgYHwLZ8tMazejUUIi2FIDZcnj/o9JULv9VICiy54a+s+DfI6xrhe1DvEPVHqLX7990yMiyJ/V/nAw5ZEGcEzI70OcvWkPY4QeX/yMAPoI0qm3TOLOg/XSoLKw9oO0bcYWU4oi1RCusP8cMKG4BWG3xrdhctfv+j3mdkrf3mTP9ZKPiwa2up3kprgQudhYoAmh3DSu6Ggq3KUpBjc1AfyiCx5VUl6uCVHnWLMh+5Q==
ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass (sender ip is
 213.95.148.172) smtp.rcpttodomain=lists.xenproject.org
 smtp.mailfrom=elektrobit.com; dmarc=pass (p=quarantine sp=none pct=100)
 action=none header.from=elektrobit.com; dkim=none (message not signed);
 arc=none (0)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=elektrobit.com;
 s=selector1;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck;
 bh=yIbI7Z0q3lXJU+nOYvRW36Lh6wKWhfwhF7qmIzuTXnQ=;
 b=IqQU2Xy4RGJOW/2cWL56D1KRboAls7KEstEYqI0lxeIDgWDnxuI/PRcFWTRamxe2pZ75WGYymKdhYREHbFtRLKVzcNcCjJtr68BT7c9UUZyIBF/AXxv3/zpNCOMk3mVC+WyfO+6eToU/EuWFHEBX4RU51ypls47tmMXx3r3Itkk=
X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 213.95.148.172)
 smtp.mailfrom=elektrobit.com; dkim=none (message not signed)
 header.d=none;dmarc=pass action=none header.from=elektrobit.com;
Received-SPF: Pass (protection.outlook.com: domain of elektrobit.com
 designates 213.95.148.172 as permitted sender)
 receiver=protection.outlook.com; client-ip=213.95.148.172;
 helo=denue6es012.ebgroup.elektrobit.com; pr=C
From: Rose Spangler <Rose.Spangler@elektrobit.com>
To: <xen-devel@lists.xenproject.org>
CC: Sergej Proskurin <proskurin@sec.in.tum.de>, 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: [RFC PATCH v6 16/43] arm/p2m: Cosmetic fix - substitute _gfn(ULONG_MAX) for INVALID_GFN
Date: Mon, 20 Apr 2026 17:31:39 -0400
Message-ID: <20260420213206.208750-17-Rose.Spangler@elektrobit.com>
X-Mailer: git-send-email 2.34.1
In-Reply-To: <20260420213206.208750-1-Rose.Spangler@elektrobit.com>
References: <20260420213206.208750-1-Rose.Spangler@elektrobit.com>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit
Content-Type: text/plain
X-Originating-IP: [10.10.178.50]
X-ClientProxiedBy: denue6es012.ebgroup.elektrobit.com (10.243.160.140) To
 denue6es012.ebgroup.elektrobit.com (10.243.160.140)
X-EOPAttributedMessage: 1
X-MS-Exchange-SkipListedInternetSender:
 ip=[213.95.148.172];domain=denue6es012.ebgroup.elektrobit.com
X-MS-TrafficTypeDiagnostic:
	SJ1PEPF000026C8:EE_|DS0PR08MB9502:EE_|SJ1PEPF00001CDE:EE_|MN2PR08MB6382:EE_
X-MS-Office365-Filtering-Correlation-Id: 9dab8fd8-aafc-4d97-beba-08de9f246c3f
X-SM-outgoing: yes
X-MS-Exchange-SenderADCheck: 1
X-MS-Exchange-AntiSpam-Relay: 0
X-Microsoft-Antispam-Untrusted:
 BCL:0;ARA:13230040|82310400026|36860700016|376014|1800799024|56012099003|22082099003|18002099003;
X-Microsoft-Antispam-Message-Info-Original:
 =?us-ascii?Q?byG3xknpIu7vFLqINkVc9Tr1+dpyo+tM9wHvSOLqgPhbm8A0HKXBUHVa+RV5?=
 =?us-ascii?Q?stAEyMHqWJBbZyfuFu6ang9HOVqT7AHnaaaHJmHB2MMgIwKVJAOHayprhakb?=
 =?us-ascii?Q?B8RtkLUW3HdU3VeI86ZMZsGAy/l0syUi7NakuhE4CaBM3HI9m2vovjhQE4Mq?=
 =?us-ascii?Q?5qTqhyyB7TW4qxr/SA4I2OTFNug8hgvyd1POa1OhBptJPW03F3F1grggC6sm?=
 =?us-ascii?Q?HQSGP9R059McYMZJZiY6G60CW2c7BUbLndBTphXybe7rvihfydXXJbbTPOJU?=
 =?us-ascii?Q?kAdpgPnkksmFTmJ4L9tfyFM7wdRBuiJUW38Ccu2cNUS75dqmfwYD8VZGxq+L?=
 =?us-ascii?Q?aispAXriWvM1TcaEaXVjwx4/vG+e7IFyKs6bD3fb2NLUkVsJ04Gh2zvFfpOx?=
 =?us-ascii?Q?KnMEHLcu6K5RcTTFK/6SO0ECYxgRuFQorZ3afwajA4M8lLNCo1UIvsIfdnjB?=
 =?us-ascii?Q?R/lF+U9HZgUPdaNAyn7UyacCojOnR6PYCpGu+aDRXNiclMA6kz2JQWqcKwZd?=
 =?us-ascii?Q?L/kGAJI3EK/TsWvXYSZkSzqpc1MBgX2E2I6XB8/P8SjVTsYtvsgxEyiw5p1t?=
 =?us-ascii?Q?5+t895pGuQV5xKOL7AcnYJbL5WH7KdXODUIzllYzYoFhCF+WZb5plBRedM0T?=
 =?us-ascii?Q?bNwq2RVLB00OiPSpzqRCqkm/yKVGRz734f6VciZu5xPfYYpnWtD9rS1ob2hR?=
 =?us-ascii?Q?gEhtwJ8cq1mQPs1PnzIbtXB/l9LuMY5eANBWw7UNB3ruCy1WYGb2CqFzMlKL?=
 =?us-ascii?Q?moMOvTtlcySeCMRzVd26UUcBKvCg/54D2gy4ZGpBIJUEMSFhhRCCXMuw0a8W?=
 =?us-ascii?Q?Xh+cpBOhp1ulWdqr2FzQe3ST2JNZY/niLDCzMOk+0FawvP2JmtKB2Jklsp/9?=
 =?us-ascii?Q?swuSLtelX19w0E8AcIIO12KhPrqWcuzjnRu2/9CK5Pqh9XnaJB1R79u8uWvQ?=
 =?us-ascii?Q?9n4su8qrAuJ7fZbXb1/xt+7WcbFRAQMjpW2khgQcsUcjPxbhoMcZwYaKxywP?=
 =?us-ascii?Q?gryY5RWoT99OpCxCTlqxaNJECYSa9na8u+rJw+tJ74YkwhWuZrPAqGhGx1m9?=
 =?us-ascii?Q?kEP8BMIhrtXRxWZJcyTC1Lz2MkzmGw5GeVnpwyz3KD3v1bTyBn8bqk/j4OWU?=
 =?us-ascii?Q?rzVnM6V0aqx2s3MG3faET1k+mEiNFA0c5pTh3n9pOvAACZ8o/AjnQYpLQIaL?=
 =?us-ascii?Q?r2qGfc2HELPAD2q/fszKnpKWkAegVOBiKPnUnHxu5cxo0Ts5WaQJB6utH+t8?=
 =?us-ascii?Q?CxOCjaCmGadeL+o3EO75?=
X-Forefront-Antispam-Report-Untrusted:
 CIP:213.95.148.172;CTRY:DE;LANG:en;SCL:1;SRV:;IPV:CAL;SFV:NSPM;H:denue6es012.ebgroup.elektrobit.com;PTR:eth1-fw1-nbg6.eb.noris.de;CAT:NONE;SFS:(13230040)(82310400026)(36860700016)(376014)(1800799024)(56012099003)(22082099003)(18002099003);DIR:OUT;SFP:1102;
X-Exchange-RoutingPolicyChecked:
 qH5TwHcfg+IvAXR1lW0v+gy0r4sLehl05UlAc9BASS2Xyd8g40fCWELYduTQxgPr0vQT/KyzX4JmIK7hAt6Twtf2XgUFHjL3b8DW7Gykrhy0sP3PEdaUmju4zJEEDNsmr63qqXB8Y95wLmebLZPOwccMGRwFV9EUh4u0loMJxjLiEyVV1jJXRWCB8eJYQawpjG43XjXGXQ6G1cxCxsLnEuOElXBsChUOsIfVVnO46gkp6w2LjsczzTVTKG5xDP0uJhXiyNYHm7MLMFkQEZg5bc+6b86r1sxtqLWLukjtSSVfKB5Om+3LQI2hpmUQkTEWdJPaLi3hnA5SIafgTFth2A==
X-MS-Exchange-Transport-CrossTenantHeadersStamped: DS0PR08MB9502
X-MS-Exchange-SkipListedInternetSender:
 ip=[40.93.12.6];domain=BN1PR07CU003.outbound.protection.outlook.com
X-MS-Exchange-ExternalOriginalInternetSender:
 ip=[40.93.12.6];domain=BN1PR07CU003.outbound.protection.outlook.com
X-MS-Exchange-Transport-CrossTenantHeadersStripped:
 SJ1PEPF00001CDE.namprd05.prod.outlook.com
X-MS-PublicTrafficType: Email
X-MS-Office365-Filtering-Correlation-Id-Prvs:
	4a584e27-62bc-485a-2c0c-08de9f246363
X-Microsoft-Antispam:
	BCL:0;ARA:13230040|376014|1800799024|156008|35042699022|14060799003|82310400026|36860700016|56012099003|22082099003|18002099003;
X-Microsoft-Antispam-Message-Info:
	=?us-ascii?Q?u31U192glPcSoWr0r14UgvBiRi25Rl46Mjpw0v1S60G3+9b4aXy7Dp5YNUEK?=
 =?us-ascii?Q?EOHq7aRa8zfCGyyn8ySntrzO3KqJLn9dORbIqsw/EM2ymURlyLcLhYUsbqS6?=
 =?us-ascii?Q?c4BtZYpcThOqNQ0TbWlrliIMkomJPV6GxzeBXkrQevFceCJP5MQDwSGWiId/?=
 =?us-ascii?Q?jrqO2/Om0kZRkm01QPyYU6vT1wTV5EEaW4cOB47v2aH/Wd/t0rgfttD1aTXF?=
 =?us-ascii?Q?lD3WGm1muUi+kPhSP3OBNU3t4bQT8+KIxkKGVx05bO5/BYrSmHiputxZJEqL?=
 =?us-ascii?Q?eco8S2PnQu2Yt/E9R0jnyp0CTmvaDCF8JBnqhlxiwxNEYdXNXpHhVyUGQ0oF?=
 =?us-ascii?Q?/g8fkt5YtHrdl+IJlmU0bl+m9pcWFcoWKxjpPg+oGvXvR4h4jOa1p2IeQp9s?=
 =?us-ascii?Q?DRcnZ2KtVadsRI7f17fnNXjt4ThFCTsiHU1w0usc1rsrWK6AjtWhJiqVKIsY?=
 =?us-ascii?Q?a+XTmrZkcgSyJA3rfAysX8AAAUS7eqienVQY4bL3NzLqMMka4QAwU2oHHQlW?=
 =?us-ascii?Q?4huLqU4qRHGGUBEA0K9ZYjG2P8hj6oYK66xIbENr2mPOTZ6HC3AY328yTvU6?=
 =?us-ascii?Q?lFGmi7HP9UNH+GZKs+UJ9WcRp9OlGYakVTD9Fh4yMgnGruiXhuJMmDrlvHET?=
 =?us-ascii?Q?ioFHLYgVyQGJTs3+LpSm3pMFdI/0vI3YhXEPhTCKi268BnD7P8IqDXqTIaMA?=
 =?us-ascii?Q?r0z8gpdeESfN48n82qS7kTj2KO6KKWvTeY3MdvcDaJ0NnxiDSzdx0JVaQfXk?=
 =?us-ascii?Q?dIJCsO8t0Ud8seKHMmGPApzJ/lkTFNUBUd5yLSIR+79uOXF/KRMOCpNPihfu?=
 =?us-ascii?Q?9NB+zL1147YMmfdo/31DPKR3OmV2aODj0LLp8OtPcyloX09Al7C15vHwQruS?=
 =?us-ascii?Q?oKBClcAHdJV/zAZYv88TlDqvRvUvweo/urbT5yXB32ujiCswPRrvgY8m67Qk?=
 =?us-ascii?Q?IBWqHACfH0CF7JWBj1KbgykXrCsrvDys02q10VQDiTWQUaI0Vos0P3mHci/V?=
 =?us-ascii?Q?PqVOKkJGhjnhGbqKjEcvwybhwL91+4K4XnJnMRD7sPHyX5L+X6c/JtBHzkkX?=
 =?us-ascii?Q?+1i+2UBq+NPqSBBGS4XtDKus4LJNKrelERX1DbrTku3CXfEXaBvXALot0/Lm?=
 =?us-ascii?Q?PkjoJB8jxjaOiSKPS+bkrFK78q30LYNHkFHXnCQDl7TMwsKZfl404LaedkDc?=
 =?us-ascii?Q?+bZQo7S+YXzY9ZU1RtC6QRKsdWyt4mUaac55eHYkDCddTpUOlu1ZTtMjtCkU?=
 =?us-ascii?Q?lysHzvQAq4r+syTTDvN/?=
X-Forefront-Antispam-Report:
	CIP:4.79.107.243;CTRY:US;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:BN1PR07CU003.outbound.protection.outlook.com;PTR:mail-bn1pr07cu00306.outbound.protection.outlook.com;CAT:NONE;SFS:(13230040)(376014)(1800799024)(156008)(35042699022)(14060799003)(82310400026)(36860700016)(56012099003)(22082099003)(18002099003);DIR:OUT;SFP:1102;
X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1
X-MS-Exchange-AntiSpam-MessageData-0:
	G19aiybS5qTlN6jNTwFEtE/gDynFwRnTfEnU5kVi4vcY/HovihddFd6mP7nTC2tfRfjEkabhijCnFzR1tRIeqF6YuxbsiW5JIMKguoPegAP0+mf9RZMpcmTbwmrDxePK9RTkFkSKE0IU5Sw7wZf9t6ftW+kMpOp/tmYVePhQm91/YgTfaNqpZE8UHsmDNu2Pw+snwEsfpXjuN6XW2k4ftQcfMU4iFp94oK74yCKlAqLLAAKCRcx5Mtl9NevDMHvLch+/xjA1iw0VcCM5dYvq7RYXCoUeMxtu7Wp1AUQrjzcvval82nwpDA7PfA0eKeBt+Q41OaoFyCIuRZdYynS8AqQFeryvw7EDfMGNzmK0hAKuUnI+bfKH0U+UifjxS6k4rijyCOvjQuYtolLufxiqesjDnodLHWFAufb/lFEwlBXuseB5RSN4Uw1UOR+rlXXu
X-OriginatorOrg: elektrobit.com
X-MS-Exchange-CrossTenant-OriginalArrivalTime: 20 Apr 2026 21:33:11.4409
 (UTC)
X-MS-Exchange-CrossTenant-Network-Message-Id: 9dab8fd8-aafc-4d97-beba-08de9f246c3f
X-MS-Exchange-CrossTenant-Id: e764c36b-012e-4216-910d-8fd16283182d
X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=e764c36b-012e-4216-910d-8fd16283182d;Ip=[4.79.107.243];Helo=[usbth1es003.ebgroup.elektrobit.com]
X-MS-Exchange-CrossTenant-AuthAs: Internal
X-MS-Exchange-CrossTenant-AuthSource: TreatMessagesAsInternal-SJ1PEPF00001CDE.namprd05.prod.outlook.com
X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem
X-MS-Exchange-Transport-CrossTenantHeadersStamped: MN2PR08MB6382
X-purgate-ID: tlsNG-33051d/1776720799-28577938-0AED14B5/0/0
X-purgate-type: clean
X-purgate-size: 999

From: Sergej Proskurin <proskurin@sec.in.tum.de>

In ./xen/arch/arm/p2m.c, we compare the gfn's with INVALID_GFN
throughout the code. Thus it makes sense to use the macro INVALID_GFN
instead of a hard coded value to initialize "p2m->lowest_mapped_gfn".

This is commit 5/12 of the altp2m_init/altp2m_teardown routines phase.

Signed-off-by: Sergej Proskurin <proskurin@sec.in.tum.de>
---
 xen/arch/arm/mmu/p2m.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/xen/arch/arm/mmu/p2m.c b/xen/arch/arm/mmu/p2m.c
index 3ecb969a0369..1009f10e5db4 100644
--- a/xen/arch/arm/mmu/p2m.c
+++ b/xen/arch/arm/mmu/p2m.c
@@ -1517,7 +1517,7 @@ static int p2m_initialise(struct domain *d, struct p2m_domain *p2m)
 
     p2m->vmid = INVALID_VMID;
     p2m->max_mapped_gfn = _gfn(0);
-    p2m->lowest_mapped_gfn = _gfn(ULONG_MAX);
+    p2m->lowest_mapped_gfn = INVALID_GFN;
 
     p2m->default_access = p2m_access_rwx;
     p2m->mem_access_enabled = false;
-- 
2.34.1



From xen-devel-bounces@lists.xenproject.org Mon Apr 20 21:33:29 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 20 Apr 2026 21:33:29 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1287840.1568279 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wEwFF-0004yt-5D; Mon, 20 Apr 2026 21:33:29 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1287840.1568279; Mon, 20 Apr 2026 21: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 1wEwFE-0004uk-3D; Mon, 20 Apr 2026 21:33:28 +0000
Received: by outflank-mailman (input) for mailman id 1287840;
 Mon, 20 Apr 2026 21:33:25 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <Rose.Spangler@elektrobit.com>) id 1wEwFA-00047h-BQ
 for xen-devel@lists.xenproject.org; Mon, 20 Apr 2026 21:33:24 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wEwF9-0054Hn-OA
 for xen-devel@lists.xenproject.org; Mon, 20 Apr 2026 23:33:23 +0200
Received: from [10.42.69.12] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <Rose.Spangler@elektrobit.com>)
 id 69e69b9f-5cb7-0a2a0a5109dd-0a2a450c9430-6
 for <xen-devel@lists.xenproject.org>; Mon, 20 Apr 2026 23:33:23 +0200
Received: from [40.93.201.115]
 (helo=CY3PR05CU001.outbound.protection.outlook.com)
 by tlsNG-d25034.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.1)
 (envelope-from <Rose.Spangler@elektrobit.com>)
 id 69e69ba2-62f1-0a2a450c0019-285dc973c522-3
 for <xen-devel@lists.xenproject.org>; Mon, 20 Apr 2026 23:33:23 +0200
Received: from DM6PR08CA0044.namprd08.prod.outlook.com (2603:10b6:5:1e0::18)
 by SA1PR08MB10871.namprd08.prod.outlook.com (2603:10b6:806:4b4::5) with
 Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9818.32; Mon, 20 Apr
 2026 21:33:17 +0000
Received: from DS2PEPF00003446.namprd04.prod.outlook.com
 (2603:10b6:5:1e0:cafe::70) by DM6PR08CA0044.outlook.office365.com
 (2603:10b6:5:1e0::18) with Microsoft SMTP Server (version=TLS1_3,
 cipher=TLS_AES_256_GCM_SHA384) id 15.20.9791.48 via Frontend Transport; Mon,
 20 Apr 2026 21:33:17 +0000
Received: from usbth1es003.ebgroup.elektrobit.com (4.79.107.243) by
 DS2PEPF00003446.mail.protection.outlook.com (10.167.17.73) with Microsoft
 SMTP Server (version=TLS1_3, cipher=TLS_AES_256_GCM_SHA384) id 15.20.9791.48
 via Frontend Transport; Mon, 20 Apr 2026 21:33:16 +0000
Received: from usbth1es003 (localhost [127.0.0.1])
 by usbth1es003.ebgroup.elektrobit.com (Postfix) with SMTP id 4fzzHc2Rvwz1wdW; 
 Mon, 20 Apr 2026 14:33:16 -0700 (PDT)
Received: from CH4PR07CU001.outbound.protection.outlook.com
 (mail-ch4pr07cu00105.outbound.protection.outlook.com [40.93.20.101])
 (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)
 key-exchange secp384r1 server-signature RSA-PSS (2048 bits) server-digest
 SHA256) (No client certificate requested)
 by usbth1es003.ebgroup.elektrobit.com (Postfix) with ESMTPS;
 Mon, 20 Apr 2026 14:33:15 -0700 (PDT)
Received: from SJ0PR05CA0146.namprd05.prod.outlook.com (2603:10b6:a03:33d::31)
 by DM6PR08MB6379.namprd08.prod.outlook.com (2603:10b6:5:1e6::7) with
 Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9818.33; Mon, 20 Apr
 2026 21:33:11 +0000
Received: from SJ1PEPF000026C5.namprd04.prod.outlook.com
 (2603:10b6:a03:33d:cafe::4) by SJ0PR05CA0146.outlook.office365.com
 (2603:10b6:a03:33d::31) with Microsoft SMTP Server (version=TLS1_3,
 cipher=TLS_AES_256_GCM_SHA384) id 15.20.9791.48 via Frontend Transport; Mon,
 20 Apr 2026 21:33:10 +0000
Received: from denue6es012.ebgroup.elektrobit.com (213.95.148.172) by
 SJ1PEPF000026C5.mail.protection.outlook.com (10.167.244.102) with Microsoft
 SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id
 15.20.9791.48 via Frontend Transport; Mon, 20 Apr 2026 21:33:10 +0000
Received: from ubuntu.localdomain (10.10.178.50) by
 denue6es012.ebgroup.elektrobit.com (10.243.160.140) with Microsoft SMTP
 Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id
 15.2.2562.35; Mon, 20 Apr 2026 23:33:06 +0200
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@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=elektrobit.com header.i="@elektrobit.com" header.h="From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck"; dkim=pass header.s=selector1 header.d=elektrobit.com header.i="@elektrobit.com" header.h="From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck"
ARC-Seal: i=2; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=pass;
 b=YABom5rJD70JrzzZcb8JZA98Qmss6TyupJYgErNShrHCC8hE0Qom4DcBT85MmJj45SO6sUXOaLUZldOIJty81MpqPuuIhMkYTPPVaSsWOLFlwcsWIQ3NTszWZ3uIFOWl+Kh9VgTMrkDq/MVyr/XiDjQth1T5sbFl8eQxX/v1OW/shIvppvLWezspeT8mFVWC0+gcESK1KYKtbL8CtDyfi2dpJ8tJY9OdSHe2oBiIPvtmau/8qnTiDL5Cz4Gp+3r4CbE/5s1E/htnDdsgK7KlmG4hJwOLgo7TI47o9cXkpFu/gsKKWL+gznM5J2etyp+LEdz1mKRES00dDccqtW+TVg==
ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com;
 s=arcselector10001;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1;
 bh=VwN6LjYBkj1+FSQXCFug5OOMEvPQdMZIPBr0As48NFk=;
 b=RTazfbEd/lTwFPfGyadETTXbfs1bV+rGe0FhmtVlSUNT7vejkKgEHk2BE2wS3PGHUNhY2gaegAyAKQwbMZXYmzG02xfZ1+0ADNWcTMNejGyGfBxfOwAEVqli9kZXyJK06aqpSZEI9DdeR4mSs09sWtBbTgIGK4AaS1bt4hIpQ0k/k+EVlBSvZHL9MINZzPgmtqt9gOptJsx3PawqWdYRt8i+v21oM2ZlfeXF2mnf5nowkuU5QAgWTZtUaG7ZNlfgcJ+kRs8hC6iKUChqaCV+KRPeRn+lal6fYkVpMAVFZXFppHkKgejqR/nuLQLEG/7rp7RBDkR7rJxfGlSJUb96oQ==
ARC-Authentication-Results: i=2; mx.microsoft.com 1; spf=pass (sender ip is
 40.93.20.101) smtp.rcpttodomain=amd.com smtp.mailfrom=elektrobit.com;
 dmarc=pass (p=quarantine sp=none pct=100) action=none
 header.from=elektrobit.com; dkim=pass (signature was verified)
 header.d=elektrobit.com; arc=pass (0 oda=1 ltdi=1
 spf=[1,1,smtp.mailfrom=elektrobit.com]
 dmarc=[1,1,header.from=elektrobit.com])
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=elektrobit.com;
 s=selector1;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck;
 bh=VwN6LjYBkj1+FSQXCFug5OOMEvPQdMZIPBr0As48NFk=;
 b=rupthdiOGDDVhD2p8B+b3s4GhB2Wl4Z+Ofw2TqIljUe1cAXPZCy7wxPqgWLyBSdbm6BWtYn+F7EcleuSpn0hXItNErQ43GRTd4lPWPzRIY8Kuoubq4s8OU7ZzNda/+jh9BPMin1v1vUp4Mc2C3MAFyRS7iQZafIOEOLmXgM9yIQ=
X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 40.93.20.101)
 smtp.mailfrom=elektrobit.com; dkim=pass (signature was verified)
 header.d=elektrobit.com;dmarc=pass action=none header.from=elektrobit.com;
Received-SPF: Pass (protection.outlook.com: domain of elektrobit.com
 designates 40.93.20.101 as permitted sender) receiver=protection.outlook.com;
 client-ip=40.93.20.101; helo=CH4PR07CU001.outbound.protection.outlook.com;
 pr=C
ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none;
 b=mqjQWC2h/0Thlvb9j7tl93KXKZFEL6SpD10W+gNt2G4mgnFUgDq1iDbzYwB4r/TwIsKKh2WNx9GBx2TcMWaNPj/FrNGFwAr2r5cEzFfq+AH0B6jJkzLTeXZs6wpR2Nbzm0SjP4ZgyTYEMAgeA5G/33plTggNyGJT+ke2j2piQ/d32ubAWkOsPL3OYHhhj4GEmKKzRshHAywAO3t5wPWZzL/TN9hLtJalM0QSHmgplq3iJyvJeVdbc0OywgCdQWyhpoLbb4chgCmp/jyGLNSOcwLN0Dqa/0AkY+pss7AB+PePQs1UT79Ia0dG9raBIes5OHUGVhbtAzgsW8KKYjLuXQ==
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com;
 s=arcselector10001;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1;
 bh=VwN6LjYBkj1+FSQXCFug5OOMEvPQdMZIPBr0As48NFk=;
 b=J8gL6fnarhg3iBqLcbQ/wcKSi/SNL7c0nBHYrVlIupRP6TcCzttUuNx5hqSLD+Rp5hmxGg3AjG1lAk6heFUmJdwqrKb3ovbZssXWQTPKDXWFBIUovq5lr7zhiNfvZWepb0x3wh9rzjNsZWDJj9eULKn2FXxU5N8GAHeM6d7N67OTWllQ1lBYlTwFaD7LqEF0qHkRV4B4A9IzAwFU63Me9bokssnj8qzfGWR97S/7djAl2PayNVk5EvS9vs+HI6gJzjnWSq6SJjcMgsV0NEei8Pbi2K+1EtbHm8eYEnaKLhzjHnop3GeFIHuGCMqmt1PshjMLwNH17oT+43lv9mwgpg==
ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass (sender ip is
 213.95.148.172) smtp.rcpttodomain=lists.xenproject.org
 smtp.mailfrom=elektrobit.com; dmarc=pass (p=quarantine sp=none pct=100)
 action=none header.from=elektrobit.com; dkim=none (message not signed);
 arc=none (0)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=elektrobit.com;
 s=selector1;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck;
 bh=VwN6LjYBkj1+FSQXCFug5OOMEvPQdMZIPBr0As48NFk=;
 b=rupthdiOGDDVhD2p8B+b3s4GhB2Wl4Z+Ofw2TqIljUe1cAXPZCy7wxPqgWLyBSdbm6BWtYn+F7EcleuSpn0hXItNErQ43GRTd4lPWPzRIY8Kuoubq4s8OU7ZzNda/+jh9BPMin1v1vUp4Mc2C3MAFyRS7iQZafIOEOLmXgM9yIQ=
X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 213.95.148.172)
 smtp.mailfrom=elektrobit.com; dkim=none (message not signed)
 header.d=none;dmarc=pass action=none header.from=elektrobit.com;
Received-SPF: Pass (protection.outlook.com: domain of elektrobit.com
 designates 213.95.148.172 as permitted sender)
 receiver=protection.outlook.com; client-ip=213.95.148.172;
 helo=denue6es012.ebgroup.elektrobit.com; pr=C
From: Rose Spangler <Rose.Spangler@elektrobit.com>
To: <xen-devel@lists.xenproject.org>
CC: Rose Spangler <Rose.Spangler@elektrobit.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>,
	=?UTF-8?q?Roger=20Pau=20Monn=C3=A9?= <roger.pau@citrix.com>, Teddy Astie
	<teddy.astie@vates.tech>
Subject: [RFC PATCH v6 26/43] altp2m: Add altp2m_set_vcpu_idx
Date: Mon, 20 Apr 2026 17:31:49 -0400
Message-ID: <20260420213206.208750-27-Rose.Spangler@elektrobit.com>
X-Mailer: git-send-email 2.34.1
In-Reply-To: <20260420213206.208750-1-Rose.Spangler@elektrobit.com>
References: <20260420213206.208750-1-Rose.Spangler@elektrobit.com>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit
Content-Type: text/plain
X-Originating-IP: [10.10.178.50]
X-ClientProxiedBy: denue6es012.ebgroup.elektrobit.com (10.243.160.140) To
 denue6es012.ebgroup.elektrobit.com (10.243.160.140)
X-EOPAttributedMessage: 1
X-MS-Exchange-SkipListedInternetSender:
 ip=[213.95.148.172];domain=denue6es012.ebgroup.elektrobit.com
X-MS-TrafficTypeDiagnostic:
	SJ1PEPF000026C5:EE_|DM6PR08MB6379:EE_|DS2PEPF00003446:EE_|SA1PR08MB10871:EE_
X-MS-Office365-Filtering-Correlation-Id: 0f277f4c-68c8-4c54-ffdd-08de9f246f97
X-SM-outgoing: yes
X-MS-Exchange-SenderADCheck: 1
X-MS-Exchange-AntiSpam-Relay: 0
X-Microsoft-Antispam-Untrusted:
 BCL:0;ARA:13230040|704161411799003|7416014|376014|36860700016|1800799024|82310400026|56012099003|18002099003|22082099003;
X-Microsoft-Antispam-Message-Info-Original:
 =?us-ascii?Q?b+OhAJUgl5hKUmQQiAfaT/rj9xTP32aWtH8wmHR3HuM4MAb6GFC9KMWcg0Yz?=
 =?us-ascii?Q?wHlsF/BmQawtRi509HMe2h7doMdXQdTPfE5Y/sMcWpR4GphwcYaSIdtkvFft?=
 =?us-ascii?Q?VkGYc+BSKgsB5i4CHUEUsWMpqVrrOdxUSNk/Bc0tPoJ4eK4NsQMgkvKVIWbU?=
 =?us-ascii?Q?PsXnDAzDBtn1KdiRdUkLLKweIufp+OHHatcncGwPAqoVINeJG8P7vSeoo6Oo?=
 =?us-ascii?Q?WD3DmQuIl+uG3m+qYToiIPe8Uucfka59Ntd2MLuoHOstWDBqnBb6vmZbFZmF?=
 =?us-ascii?Q?VWVZ113hef/EDSwF75eWNZuxKTxreZZQPil+3VMsfaUy3ViZ3asONyPG6nEJ?=
 =?us-ascii?Q?OxlZXQ5oZmM41VtByfibsQqA4NSYa2NRFI88+wmgja6Nk5FPxtYfS93NSUtH?=
 =?us-ascii?Q?g5GL6VwTusKPwFN6rYy59I4hJZzy+tLDVM5dVa6WicNUZ78pgQKZgvHNWYmw?=
 =?us-ascii?Q?HhA0GgWwOVHJ6UEVDmknNrYE3j7B3ycuJc6VpPxcvQr6th9hsIlHnDXdr7Oy?=
 =?us-ascii?Q?1jqOiQ2ygXO575gvT5TYhRO763+L+ERWP5Nehe6z4XLGC3vywB+zutM3jWyG?=
 =?us-ascii?Q?L82Al2lfIsdNMI/2mahv1kNNs1EsALn+zcB/YioKj6noS35Otyq7p0CE57JK?=
 =?us-ascii?Q?/rOCbU/oTQTknHY0DIHleYWnHrPa34n2chpDKgNTYT2b3TpqFBHF6aixyjeL?=
 =?us-ascii?Q?tBMkpMwDrhN/eyV17XI76joniWkm9T8Y0KhdTSv9YP46W3KXx6BuWmduaWDo?=
 =?us-ascii?Q?4czUAVSk5NColGwvGKkQ+k+466ZPZ9C/59hLU02ad0NzZ2jtBylLm/KgaT6X?=
 =?us-ascii?Q?gwRb0ClJPeozwDGHryutNVottvpOJdZIUgJznUHpoo0O9kNmoLAMAZHyZ3vm?=
 =?us-ascii?Q?pL/W4OJ+VngVbPfzWUC2MNZyNEu2jRvI0JDJ7tmCSK9pIvK+pw8Lebj1kd7o?=
 =?us-ascii?Q?ubcj6knFyQCvi6aBIdLlYT5nPcsXsh4DoEsYxnsuw59EO5sNN5GdUWmPeQ7T?=
 =?us-ascii?Q?TM9xP7y4WKY7wySWTtnkoaPdhEce86qiSk63xq8Gw3NBRsU3ReNk1feRWay8?=
 =?us-ascii?Q?dcCEIFQGyEHcHv0hEtRmJ9vEZUHRglEXIJ5aeqFj3UekuzZpwR2tDin698tb?=
 =?us-ascii?Q?5bbXFaJ4EcuUij4xr6bGxbPvOjhhWgUcAw=3D=3D?=
X-Forefront-Antispam-Report-Untrusted:
 CIP:213.95.148.172;CTRY:DE;LANG:en;SCL:1;SRV:;IPV:CAL;SFV:NSPM;H:denue6es012.ebgroup.elektrobit.com;PTR:eth1-fw1-nbg6.eb.noris.de;CAT:NONE;SFS:(13230040)(704161411799003)(7416014)(376014)(36860700016)(1800799024)(82310400026)(56012099003)(18002099003)(22082099003);DIR:OUT;SFP:1102;
X-Exchange-RoutingPolicyChecked:
 dOaZGe2Vw2cY/WEuEm5qk/VZc+7RQMVLIwmbwUqKOvCcgx2XVEkhG043S/44lcOHOrnPtBe7fllM20HPoaeOeC9QWcz1svmjyhMCw3pFkY0b8n9ubw7SLPs3/WpkKRe7BB+9aARosmzexql/siJvfTpL5c0GRhFY12qSab+OJ3X4qlOFQ/4KAn2lfrhCQouIwzuMhUCehAZyaOCLlfeRAHokPN+l14Pl7VFJVW3i74rh0GNL1SeiVODbjJav2oUx/VaznVTCg/3hKALAOKbKe4VZwXodLLUpSWQAIgDumcQ4l77nDwsbNT4bnqo80+pTutQK+rV77USa9IdrGzf9kg==
X-MS-Exchange-Transport-CrossTenantHeadersStamped: DM6PR08MB6379
X-MS-Exchange-SkipListedInternetSender:
 ip=[40.93.20.101];domain=CH4PR07CU001.outbound.protection.outlook.com
X-MS-Exchange-ExternalOriginalInternetSender:
 ip=[40.93.20.101];domain=CH4PR07CU001.outbound.protection.outlook.com
X-MS-Exchange-Transport-CrossTenantHeadersStripped:
 DS2PEPF00003446.namprd04.prod.outlook.com
X-MS-PublicTrafficType: Email
X-MS-Office365-Filtering-Correlation-Id-Prvs:
	a2a66152-bd78-4c57-7a07-08de9f246bb0
X-Microsoft-Antispam:
	BCL:0;ARA:13230040|704161411799003|1800799024|14060799003|35042699022|82310400026|156008|7416014|36860700016|376014|56012099003|18002099003|22082099003;
X-Microsoft-Antispam-Message-Info:
	=?us-ascii?Q?WI7O0GfzgUNDhPIZdcuDqc2XDtE1r4kNp8drniUKdrELs3PWw+6dcYljnLDZ?=
 =?us-ascii?Q?gw4rO6Ai+NAI4mHt346EUKHABmZeO2hgjPmpU+fQbMPvsEeHfiVf6u3Bgp2H?=
 =?us-ascii?Q?ZUGCvdgc/aHEFWFOsNX3++AV4HgUX/CUg8IDd+TJClhFKr1i/hseo9GP3oPA?=
 =?us-ascii?Q?RDU8QWYHGO3YG1Qvwj7xZXNzM0NUAbdhgat67pH6O0rGF5dWqWcG3d/sEv1k?=
 =?us-ascii?Q?QGHrwi+uIW6AhVnpkHAgKwdHA8IgYv/ax6bmNLQf5bSFrba9DhhGn1aOV5Hu?=
 =?us-ascii?Q?loLNxhAWzRzWmlkSIbKEIueZLipCKcKhAL/ji2Dsdd1CkV1LGJ2dFm+jOU4r?=
 =?us-ascii?Q?fyOHyu08nrcDSO4563EUS+y04Gg8/b4Pz15X9LcvMQ1l6iADKRUCj+8IxM+F?=
 =?us-ascii?Q?//3+0KPZNnNkXWcN6gjYGS8E1nphpC0aAWhD2jLOuu8unFXVzFb9/S7zGG4O?=
 =?us-ascii?Q?LMZ4ULVreeO6wSJGkqvTQVS7RgyvyV+yBfh7+2VnOLZnI91gU/xbEbcxWPit?=
 =?us-ascii?Q?S50aK4XigRRwgUv+0vV3LeqHKRyJQSfvNF/QAFUZ1c7G1dHT+6A/bfc3szyU?=
 =?us-ascii?Q?+QojsgGB/gTcCNCL3J7Qels0AarDvvZ6aT5lTo0O2B/lPZKqhJNvAwyJoRWS?=
 =?us-ascii?Q?6OORHvhi3zvUc4d/Lrl5WeLL2jv+lX5pRm4dVDdIx+wAPmL/7MeYv837jaxr?=
 =?us-ascii?Q?JyFScPk/hr5VLLRWH1EboAfy9LcAT28IxRrkCyPmg1tBZtw1DcsHU+ZG8Mfo?=
 =?us-ascii?Q?9bTaY1miZW54jb29QbHjaOnItsN6faW8PD8Axw8s6Sy443BCLYmsIy4jpMrR?=
 =?us-ascii?Q?L/CtjmhzP527FOnIKAfzUMyhoSFD08829X1QcbFHyl7HMyUssfDhfzWW33Wt?=
 =?us-ascii?Q?vcxbSS5eB0YO8jcVFgk4vXrr91GR/oZ9YpR/gmQW3QtIO5BZNjkUbRTdPOT0?=
 =?us-ascii?Q?g5Q3oDkYCcDGzmVUGIgm8syGdg7bTr4qDD8gRxGDOAnK8843ncZm0JCrazh1?=
 =?us-ascii?Q?DZ7wpzteT4qRIazIaV/NzHTsuUUhigznOSnY/Lav13hy9jGQbqppZKgZgoR7?=
 =?us-ascii?Q?wvIYyZk4B8pizjK6bDGBVIawdXb2eL+/Xg3Zcg3ZKAPqdAQdfbib8fpqmSkd?=
 =?us-ascii?Q?PAhrSW+AuK/3J5dpxXB17gmdonQcL8skTw=3D=3D?=
X-Forefront-Antispam-Report:
	CIP:4.79.107.243;CTRY:US;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:CH4PR07CU001.outbound.protection.outlook.com;PTR:mail-ch4pr07cu00105.outbound.protection.outlook.com;CAT:NONE;SFS:(13230040)(704161411799003)(1800799024)(14060799003)(35042699022)(82310400026)(156008)(7416014)(36860700016)(376014)(56012099003)(18002099003)(22082099003);DIR:OUT;SFP:1102;
X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1
X-MS-Exchange-AntiSpam-MessageData-0:
	lEnYNFwXbNo+tWP6FwCDEEuxsCurDgN3tGFmRfRiibJctrsKVi/ApggoZMHH28UJ7OOW8YskOcvdt4yMC89e0h66TBwNHGPy2J01sI6IwVCdAR6dG/+2V6FVMKOsUDAlqteTXyqZJo2QY6oOw2LgQ43c45syHXoNqP5Ytuooj6dYIq5ihRawb1f9sCFuxOEYpRDon8DghKPkBTUh8K6MWcsUDa0Yq9hPx0B8uB6vUh0TjqvZzyWVX0e9JKEqYiIylLq1CcZIpaLQyMsfK7gf4Nc08auuw/xy+O7c/lpq2evr3UguWPmQzC8Y3HFqpHvmJKx0wOYW446COR1VEVTFRwEtEFDqASmhm/O2dp2CIcaoi+8CCRlz1A8hhk17hEDm0c+Vj8ykgkMbjvhW8R8jvpXcg/DG2JhOi8K8KnKYANIGqnPSB6jkipXngT1Zbroo
X-OriginatorOrg: elektrobit.com
X-MS-Exchange-CrossTenant-OriginalArrivalTime: 20 Apr 2026 21:33:16.9783
 (UTC)
X-MS-Exchange-CrossTenant-Network-Message-Id: 0f277f4c-68c8-4c54-ffdd-08de9f246f97
X-MS-Exchange-CrossTenant-Id: e764c36b-012e-4216-910d-8fd16283182d
X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=e764c36b-012e-4216-910d-8fd16283182d;Ip=[4.79.107.243];Helo=[usbth1es003.ebgroup.elektrobit.com]
X-MS-Exchange-CrossTenant-AuthAs: Internal
X-MS-Exchange-CrossTenant-AuthSource: TreatMessagesAsInternal-DS2PEPF00003446.namprd04.prod.outlook.com
X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem
X-MS-Exchange-Transport-CrossTenantHeadersStamped: SA1PR08MB10871
X-purgate-ID: tlsNG-d25034/1776720803-6D56FCF5-715972C7/0/0
X-purgate-type: clean
X-purgate-size: 1653

This commit adds the altp2m_set_vcpu_idx function for both x86 and ARM.
Since the altp2m VCPU index is stored differently depending on which
architecture is used, the altp2m_set_vcpu_idx function makes it possible to
set this value in an architecture independent way for common code routines.

This is commit 3/4 of the altp2m_{get,set}_altp2m phase.

Signed-off-by: Rose Spangler <Rose.Spangler@elektrobit.com>
---
v6: Introduced this patch.
---
 xen/arch/arm/include/asm/altp2m.h | 5 +++++
 xen/arch/x86/include/asm/altp2m.h | 5 +++++
 2 files changed, 10 insertions(+)

diff --git a/xen/arch/arm/include/asm/altp2m.h b/xen/arch/arm/include/asm/altp2m.h
index bc695018e62c..f001e022a213 100644
--- a/xen/arch/arm/include/asm/altp2m.h
+++ b/xen/arch/arm/include/asm/altp2m.h
@@ -29,6 +29,11 @@ static inline uint16_t altp2m_vcpu_idx(const struct vcpu *v)
     return v->arch.ap2m_idx;
 }
 
+static inline void altp2m_set_vcpu_idx(struct vcpu *v, unsigned int idx)
+{
+    v->arch.ap2m_idx = idx;
+}
+
 #else /* CONFIG_ALTP2M */
 
 static inline bool altp2m_supported(void)
diff --git a/xen/arch/x86/include/asm/altp2m.h b/xen/arch/x86/include/asm/altp2m.h
index a1b078783b3e..b3d348386a00 100644
--- a/xen/arch/x86/include/asm/altp2m.h
+++ b/xen/arch/x86/include/asm/altp2m.h
@@ -60,6 +60,11 @@ static inline uint16_t altp2m_vcpu_idx(const struct vcpu *v)
     return vcpu_altp2m(v).p2midx;
 }
 
+static inline void altp2m_set_vcpu_idx(struct vcpu *v, unsigned int idx)
+{
+    vcpu_altp2m(v).p2midx = idx;
+}
+
 /*
  * Alternate p2m: shadow p2m tables used for alternate memory views
  */
-- 
2.34.1



From xen-devel-bounces@lists.xenproject.org Mon Apr 20 21:33:31 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 20 Apr 2026 21:33:31 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1287847.1568287 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wEwFH-0005Me-4q; Mon, 20 Apr 2026 21:33:31 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1287847.1568287; Mon, 20 Apr 2026 21: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 1wEwFG-0005Hr-3l; Mon, 20 Apr 2026 21:33:30 +0000
Received: by outflank-mailman (input) for mailman id 1287847;
 Mon, 20 Apr 2026 21:33:27 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <Rose.Spangler@elektrobit.com>) id 1wEwFC-0004Wu-Ir
 for xen-devel@lists.xenproject.org; Mon, 20 Apr 2026 21:33:26 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wEwFB-00CD6F-Si
 for xen-devel@lists.xenproject.org; Mon, 20 Apr 2026 23:33:25 +0200
Received: from [10.42.69.7] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <Rose.Spangler@elektrobit.com>)
 id 69e69ba5-2eae-0a2a0a5409dd-0a2a4507a6d6-0
 for <xen-devel@lists.xenproject.org>; Mon, 20 Apr 2026 23:33:25 +0200
Received: from [40.93.198.132]
 (helo=CY7PR03CU001.outbound.protection.outlook.com)
 by tlsNG-ef75cf.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.1)
 (envelope-from <Rose.Spangler@elektrobit.com>)
 id 69e69ba4-229c-0a2a45070019-285dc6847bd8-3
 for <xen-devel@lists.xenproject.org>; Mon, 20 Apr 2026 23:33:25 +0200
Received: from BY3PR10CA0009.namprd10.prod.outlook.com (2603:10b6:a03:255::14)
 by CYXPR08MB9321.namprd08.prod.outlook.com (2603:10b6:930:d8::5) with
 Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9818.32; Mon, 20 Apr
 2026 21:33:20 +0000
Received: from SJ5PEPF000001CA.namprd05.prod.outlook.com
 (2603:10b6:a03:255:cafe::11) by BY3PR10CA0009.outlook.office365.com
 (2603:10b6:a03:255::14) with Microsoft SMTP Server (version=TLS1_3,
 cipher=TLS_AES_256_GCM_SHA384) id 15.20.9791.48 via Frontend Transport; Mon,
 20 Apr 2026 21:33:19 +0000
Received: from usbth1es003.ebgroup.elektrobit.com (4.79.107.243) by
 SJ5PEPF000001CA.mail.protection.outlook.com (10.167.242.39) with Microsoft
 SMTP Server (version=TLS1_3, cipher=TLS_AES_256_GCM_SHA384) id 15.20.9791.48
 via Frontend Transport; Mon, 20 Apr 2026 21:33:19 +0000
Received: from usbth1es003 (localhost [127.0.0.1])
 by usbth1es003.ebgroup.elektrobit.com (Postfix) with SMTP id 4fzzHf6lGvz1wdS; 
 Mon, 20 Apr 2026 14:33:18 -0700 (PDT)
Received: from SN1PR07CU001.outbound.protection.outlook.com
 (mail-sn1pr07cu00106.outbound.protection.outlook.com [40.93.14.102])
 (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)
 key-exchange secp384r1 server-signature RSA-PSS (2048 bits) server-digest
 SHA256) (No client certificate requested)
 by usbth1es003.ebgroup.elektrobit.com (Postfix) with ESMTPS;
 Mon, 20 Apr 2026 14:33:18 -0700 (PDT)
Received: from SJ0PR05CA0131.namprd05.prod.outlook.com (2603:10b6:a03:33d::16)
 by PH7PR08MB8179.namprd08.prod.outlook.com (2603:10b6:510:15d::6)
 with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9818.32; Mon, 20 Apr
 2026 21:33:12 +0000
Received: from SJ1PEPF000026C5.namprd04.prod.outlook.com
 (2603:10b6:a03:33d:cafe::1e) by SJ0PR05CA0131.outlook.office365.com
 (2603:10b6:a03:33d::16) with Microsoft SMTP Server (version=TLS1_3,
 cipher=TLS_AES_256_GCM_SHA384) id 15.20.9791.48 via Frontend Transport; Mon,
 20 Apr 2026 21:33:12 +0000
Received: from denue6es012.ebgroup.elektrobit.com (213.95.148.172) by
 SJ1PEPF000026C5.mail.protection.outlook.com (10.167.244.102) with Microsoft
 SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id
 15.20.9791.48 via Frontend Transport; Mon, 20 Apr 2026 21:33:11 +0000
Received: from ubuntu.localdomain (10.10.178.50) by
 denue6es012.ebgroup.elektrobit.com (10.243.160.140) with Microsoft SMTP
 Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id
 15.2.2562.35; Mon, 20 Apr 2026 23:33:08 +0200
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@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=elektrobit.com header.i="@elektrobit.com" header.h="From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck"; dkim=pass header.s=selector1 header.d=elektrobit.com header.i="@elektrobit.com" header.h="From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck"
ARC-Seal: i=2; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=pass;
 b=YTZ9PLxYVLJw9+iaRVgHYAPxDmph3BUORtRrfuUdt3szLrM5m+Px7m9WnfQX2cDBTCUb9jaeRUkvkgOS6PRMHoRY99XCHT6+IRWib5KOZzs9JcA86YGfIfqAKHBSOnQK3Xz/1tJJc2q5iI0NlKCsnGZNcdaxu4rFwAod24RvAMU00qan4Uac7CYpKa1n1Q49PfLDEyjAQBsvywqp02R5yV5aM9Qist9z0NRs47PALY+DwF7V6gIQhuU1F9bv36ehXCOUgVhrdp/GtGz1p0BZ1maxlulnTUEg8jvCwd7PUqMITht+w0Q2eMUwxMleRtAd8pe2cf+CkhrrvShh/rtdGQ==
ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com;
 s=arcselector10001;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1;
 bh=2GKS7huUjzjhqkDR3rg4P6NQTDEiD+t2h7OWKwFuOAU=;
 b=pZcVMxBlWKNCAuC0wq5fB+OxqZ7QEAb3cefYgTzN9fjLO/iO1w0Ni+Mtpjr29h1ACwdKWJijSOH9YFJ3HO27IJFLdtXod8xFwxvasXdJXUaKqbj/fCs8lGOZWK09vtsA4sWnYx5jOs5xe9cJx2M2LUmW0DA+UJeXHYjo/OHhjnhl0iOCL1+tJOva1Ven7P11tXMk/lDj+Cx3xZKO1solbn3b0nX4Mec6UmrhDOORX/O35PwLXFZaHUhLim5qDTh3JIhHu40G3f6JB92Fm+7TVD0NB4lH9hlN2kl93P4Bd09gtSLYX+cGLfNPkSuDYkozycEkw7QiWz/XsEbgFMVC9g==
ARC-Authentication-Results: i=2; mx.microsoft.com 1; spf=pass (sender ip is
 40.93.14.102) smtp.rcpttodomain=amd.com smtp.mailfrom=elektrobit.com;
 dmarc=pass (p=quarantine sp=none pct=100) action=none
 header.from=elektrobit.com; dkim=pass (signature was verified)
 header.d=elektrobit.com; arc=pass (0 oda=1 ltdi=1
 spf=[1,1,smtp.mailfrom=elektrobit.com]
 dmarc=[1,1,header.from=elektrobit.com])
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=elektrobit.com;
 s=selector1;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck;
 bh=2GKS7huUjzjhqkDR3rg4P6NQTDEiD+t2h7OWKwFuOAU=;
 b=1VQqidNwjqYSxrjHGICCjdD8Ar4gKWypkx+I7zfg4upTrw1f19yefVmMw7+Y4jEe06eMfPbHcLUCQH5u9WbStl4H0b7m1P+YDo9wzwZANtpVyqtlKularEl/xHP6+47VfDkz37h6MBadpRhIcZATxsM/royIwX8Nlzqfc62tXJA=
X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 40.93.14.102)
 smtp.mailfrom=elektrobit.com; dkim=pass (signature was verified)
 header.d=elektrobit.com;dmarc=pass action=none header.from=elektrobit.com;
Received-SPF: Pass (protection.outlook.com: domain of elektrobit.com
 designates 40.93.14.102 as permitted sender) receiver=protection.outlook.com;
 client-ip=40.93.14.102; helo=SN1PR07CU001.outbound.protection.outlook.com;
 pr=C
ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none;
 b=aQcBDk3xeVNDFjWmLOcNKrqzF7njqybv5nCzVGtgasmGcSPDcOAFd0wqe0+stJVcxKXSsL00uTYa2RcMVwfQaTKQdP/pFA4TECwJVPZssB04dSkEDPPbkkI2sX0N4CIzjKqZGKwVWp/xdgRipBSDZZNI8G3fvdgBV2pYt7T/ellTftsXyniGYU5EQDas2MFsHmbdpww91WsLQhx6jOBtH8d5qdm4Li6DE/tsdNzr74w+GlDOhY/EabOoZEhb7BMIwOP3oPCurXJgwzvx7juGJMgD7XBPkShQ9NgKPY6GHNr1TyQbkq3HQDIkmL5gOvLDAPYRXUhlzks8tzlcAUp7zw==
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com;
 s=arcselector10001;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1;
 bh=2GKS7huUjzjhqkDR3rg4P6NQTDEiD+t2h7OWKwFuOAU=;
 b=Dw3/haY//C7Ii7UOxpqHvDbNF9GALTH4KK0N7mMb669saII/4Rt3WwfyDgq2ebmGEbNZHeuq+eZe2ct3V5+D4nDSzYgMcX1xhGHXUglwVie/4JpmD2PqmiKpPpBvhcrK5xAibu4Me90z1D/KfpdRh2A+LDC1x1BQk7zotAHoQfhMIzhiO2lTgYSzpdQ2W60DWsGzzp39Dn1jpZOtso4tvRzN+sQZo905mCOEko2Zwy4lEmGe1nPLrsmYwdcUI+3XYpgTh8tuUEyQfMSMPR4qWDrPMwtOGSpmqd8+EyKSXXx15DA+1NPCMABhX3bL+CNnNaifLq8sx6SYoAW8rCEwUA==
ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass (sender ip is
 213.95.148.172) smtp.rcpttodomain=lists.xenproject.org
 smtp.mailfrom=elektrobit.com; dmarc=pass (p=quarantine sp=none pct=100)
 action=none header.from=elektrobit.com; dkim=none (message not signed);
 arc=none (0)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=elektrobit.com;
 s=selector1;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck;
 bh=2GKS7huUjzjhqkDR3rg4P6NQTDEiD+t2h7OWKwFuOAU=;
 b=1VQqidNwjqYSxrjHGICCjdD8Ar4gKWypkx+I7zfg4upTrw1f19yefVmMw7+Y4jEe06eMfPbHcLUCQH5u9WbStl4H0b7m1P+YDo9wzwZANtpVyqtlKularEl/xHP6+47VfDkz37h6MBadpRhIcZATxsM/royIwX8Nlzqfc62tXJA=
X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 213.95.148.172)
 smtp.mailfrom=elektrobit.com; dkim=none (message not signed)
 header.d=none;dmarc=pass action=none header.from=elektrobit.com;
Received-SPF: Pass (protection.outlook.com: domain of elektrobit.com
 designates 213.95.148.172 as permitted sender)
 receiver=protection.outlook.com; client-ip=213.95.148.172;
 helo=denue6es012.ebgroup.elektrobit.com; pr=C
From: Rose Spangler <Rose.Spangler@elektrobit.com>
To: <xen-devel@lists.xenproject.org>
CC: Rose Spangler <Rose.Spangler@elektrobit.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.pau@citrix.com>, Stefano Stabellini <sstabellini@kernel.org>
Subject: [RFC PATCH v6 27/43] arm/altp2m: Add support for altp2m_{get,set}_altp2m
Date: Mon, 20 Apr 2026 17:31:50 -0400
Message-ID: <20260420213206.208750-28-Rose.Spangler@elektrobit.com>
X-Mailer: git-send-email 2.34.1
In-Reply-To: <20260420213206.208750-1-Rose.Spangler@elektrobit.com>
References: <20260420213206.208750-1-Rose.Spangler@elektrobit.com>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit
Content-Type: text/plain
X-Originating-IP: [10.10.178.50]
X-ClientProxiedBy: denue6es012.ebgroup.elektrobit.com (10.243.160.140) To
 denue6es012.ebgroup.elektrobit.com (10.243.160.140)
X-EOPAttributedMessage: 1
X-MS-Exchange-SkipListedInternetSender:
 ip=[213.95.148.172];domain=denue6es012.ebgroup.elektrobit.com
X-MS-TrafficTypeDiagnostic:
	SJ1PEPF000026C5:EE_|PH7PR08MB8179:EE_|SJ5PEPF000001CA:EE_|CYXPR08MB9321:EE_
X-MS-Office365-Filtering-Correlation-Id: 7c9bd3d8-bb54-4dbc-7c83-08de9f247100
X-SM-outgoing: yes
X-MS-Exchange-SenderADCheck: 1
X-MS-Exchange-AntiSpam-Relay: 0
X-Microsoft-Antispam-Untrusted:
 BCL:0;ARA:13230040|704161411799003|36860700016|1800799024|376014|82310400026|56012099003|22082099003|18002099003;
X-Microsoft-Antispam-Message-Info-Original:
 =?us-ascii?Q?Qbnj3+LRkZr3oC14PJrZ3EqbuB/Im7qwaoBBxSxGtGjDF1MQwqKoHluXwPWv?=
 =?us-ascii?Q?apxaj2k55iqxYMzaEbp9SRnvLKjlq0DtwPoeMlaR4xgiuG6bCUb7u5Afy7Yb?=
 =?us-ascii?Q?6U5sKb6Vlgyux+i5xXjQSAFppKSqT+4YHb2SV2Ruck2lDv0vJ9wi+h0jC8Pq?=
 =?us-ascii?Q?jhf5AonIxGqoS7YCtiqUk4erE5DuaWXlMrCBb20BSuXkbrt4mTR2EI4UZVgi?=
 =?us-ascii?Q?K+2H8L3yzI2TjeKcTQfVJp6MitEDpk0ZTvK2wT3Ne04E3ftzr+Ld/L74zuq5?=
 =?us-ascii?Q?vSnXD10irj2e6vqQ/4kUfhieL+eQ6ESOrdPqz01g3dHj11Q5Y4Xizh4qSWpl?=
 =?us-ascii?Q?64Wzr0kA0xZChhZHqez337zx7KIDu+OjB7ZVykcv1Fc9MyX2hWMyryZbPuI1?=
 =?us-ascii?Q?+JFRtHXyv8+Poa10zoJruXEGXPE+p3KroX9dTUnIdSLAJfR3nPAJFAQ6X/p3?=
 =?us-ascii?Q?TEiZAOXQHkK+B7VlyC4srCk9hptJIhUCZBuOrEfYMJj3FV2De72/PkEeFolp?=
 =?us-ascii?Q?yovWJFG3KNILbxrIic/xCI73RkfXqX1KTWo80lF6tuLt3Wg9lS4BrEpWRm2x?=
 =?us-ascii?Q?HLMLYBRnv5nuMApR/59k5P31kXFbb5aa9RCRQeXQHHIYYKv5HgN1g//qyphl?=
 =?us-ascii?Q?ZvJPCtgb/oih21ofEJG0aej9fRgvPt7s+9yrNiamsJfo3hnm5MZgpGHftjqN?=
 =?us-ascii?Q?SucPxAQvLXQDw5Whu1H+FFxvuD6JGgpuLe0el6hrAOYjLZ8zp3yo1V0EHps+?=
 =?us-ascii?Q?IzJ+68b5WDqb7Pdwd+ptanndtZEzbqtRnY/PyGPmZJxApV+mpqk2/B/VN2PR?=
 =?us-ascii?Q?NSaFOEzA7pYQsTac09s1kWTI7utKpa4FU+Qc3WpAn4UWHo5C0vNVY4bXqrdt?=
 =?us-ascii?Q?baCCwTtFCunJFWJBEfIltF+xuWIIx7+FDUuSz1z5rsKXIwDGNwVkop0jneU5?=
 =?us-ascii?Q?XSQU2oRUVXWuAoZ9Hk6BP9QGA9GOj62U+y8ZrVF4z/jm69cDIpZtMb4wf68K?=
 =?us-ascii?Q?3sIa5e0WuZHrm7Q6P6LNegT1VEiGB1SkBY0Fd+PEeUw6Gxv0UDZA2TcHl1t4?=
 =?us-ascii?Q?CHJd8RSKaxdY0cOXaeSa47NzCmozOl+SlyaPD3Na3F/iJ83PlzZcVt2R4/tq?=
 =?us-ascii?Q?FPcSu7mDgXYj?=
X-Forefront-Antispam-Report-Untrusted:
 CIP:213.95.148.172;CTRY:DE;LANG:en;SCL:1;SRV:;IPV:CAL;SFV:NSPM;H:denue6es012.ebgroup.elektrobit.com;PTR:eth1-fw1-nbg6.eb.noris.de;CAT:NONE;SFS:(13230040)(704161411799003)(36860700016)(1800799024)(376014)(82310400026)(56012099003)(22082099003)(18002099003);DIR:OUT;SFP:1102;
X-Exchange-RoutingPolicyChecked:
 fbkxuHJ2WviD4afycZ8CYND2dwCigXQxzrpWdUItRIm5PG+vo0Wh+w5ygf8rEos2caV3qJHQsQwvGvzG3Zk18Z49R/ghBA3Gv9+f9B4KhDShEEIoqxZfcY84EFyan0jLYW+n9DuvD0ynjUKMSDCqVldVNrgw/hIehWAnRYlp/cXgZoxnPoqhEAsVUPqTIOfbYCY4uyWvSNYo4iifZSROkCh+MWjRfHHwRZ7p3tjJg3lfTAQne3KL4w78JSj82feDJVHWmkBcscXbjTUmhtqw9+lNpGQQrYtUILqmoLl0DfxVBjDpsSwATyMyvQkw2kkZuVrmm0ieQ9tC9vGgxcYgKw==
X-MS-Exchange-Transport-CrossTenantHeadersStamped: PH7PR08MB8179
X-MS-Exchange-SkipListedInternetSender:
 ip=[40.93.14.102];domain=SN1PR07CU001.outbound.protection.outlook.com
X-MS-Exchange-ExternalOriginalInternetSender:
 ip=[40.93.14.102];domain=SN1PR07CU001.outbound.protection.outlook.com
X-MS-Exchange-Transport-CrossTenantHeadersStripped:
 SJ5PEPF000001CA.namprd05.prod.outlook.com
X-MS-PublicTrafficType: Email
X-MS-Office365-Filtering-Correlation-Id-Prvs:
	af969c1a-ffff-4434-21e5-08de9f246c74
X-Microsoft-Antispam:
	BCL:0;ARA:13230040|704161411799003|1800799024|35042699022|376014|14060799003|36860700016|82310400026|156008|56012099003|18002099003|22082099003;
X-Microsoft-Antispam-Message-Info:
	=?us-ascii?Q?SbFSRTCnG3Tn3LYMThnGHyzgTlUho6sfft03B89cS8isD5/9c5FiacUf/KBt?=
 =?us-ascii?Q?LIZaHFaGyYNY5Bc0sm45Jb0azn36Y8fLu+bqOUss+7DXcuu1SKka8T6qbkli?=
 =?us-ascii?Q?mQohUqiRzY4FbHxidBaoKTVA3hsjlj8ZiKlmqZWgEFsOqkONNJgK/gnIfDFs?=
 =?us-ascii?Q?oY3Fhp42RfeZYL5KEf+i8NheLUniv3jzuHXiqaJTGjfgQhPFiXVoTtIkabPE?=
 =?us-ascii?Q?4k3beOiKpDUwqNqIJK80fJoZzEqYVR6ivblxgkfaPrLJgqfXcOq7fCGS24a3?=
 =?us-ascii?Q?bHmggFN/XQYtamobEmf77NWJNuCfRP6dzLdY37vUtcPN+4a5Pvqnv6UTkSwI?=
 =?us-ascii?Q?v9Hg8ycglIltuXVXqT78/tPhpbykI20rihD9YYEiNzVsVA9qiWIv8wcSSSsc?=
 =?us-ascii?Q?H3nBhERDG+ZXhH+B4CPOvv/VsKaA+NTgZ4esTifv3PufZq8Afjbd+PBdWCs+?=
 =?us-ascii?Q?E6yjx7o1Uy+frvpOGLCrfTe2sXAdZULKK2SqUN06giZ2qm6TD8PnBN9M0wyH?=
 =?us-ascii?Q?n4lXf8Afg1CQLX3uZ9OXbAb++F4c1dGA0eltX/63j31hvE3iqy/vf6C1KGh6?=
 =?us-ascii?Q?VFEzg3ksoFYknqAoQdVJ9UG1jQbu29AhJc6Teu/wGp0lO7q2LF1h+lRxSyZX?=
 =?us-ascii?Q?xVEZk6OzN0uFXRY0lu4roYAkMbRdhv8DTvhpPFMaqNpEc1cJmXdAaxWDO/3c?=
 =?us-ascii?Q?FXxzQqHADPJnv0wB6x9krXJb2iPCTMNqdn4jsO6AHxlSjCaET+vcG8PS1Ckr?=
 =?us-ascii?Q?rWoUZX19jJc2PoiaJAbPsIigElK6wV9cCZHMoZBXSfMKMAG7XWNY5ZnX2AQ1?=
 =?us-ascii?Q?SWfxpS/1wEZ2WXIbOZwDcIh9xqrgijCnI+LcKtxx/bSt+oK4L1KTODhzJvwj?=
 =?us-ascii?Q?vO5HhtfT9pmKh4G0rxmW1lrGAKTLk5YlK12RTSwcRNRy+ovecLt0pwsCpYzN?=
 =?us-ascii?Q?iihL+2+MrhKAxJSY2plr2OZ1/fcA8Ux0AvUWC1gD2RMTfsekXwM2Vbyhnzz5?=
 =?us-ascii?Q?PK5/EDf12+vFX3KfRN+sYMHvkUegKy9eZG/auVjP+weSpJFCAq9NbqWGm5B5?=
 =?us-ascii?Q?+W42sFotfdnyfxv9jsNsBp+my50J5xR9jVoVg3sVJXogDbm4C6VqrYtWTFNe?=
 =?us-ascii?Q?RLYuMdGchJfF?=
X-Forefront-Antispam-Report:
	CIP:4.79.107.243;CTRY:US;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:SN1PR07CU001.outbound.protection.outlook.com;PTR:mail-sn1pr07cu00106.outbound.protection.outlook.com;CAT:NONE;SFS:(13230040)(704161411799003)(1800799024)(35042699022)(376014)(14060799003)(36860700016)(82310400026)(156008)(56012099003)(18002099003)(22082099003);DIR:OUT;SFP:1102;
X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1
X-MS-Exchange-AntiSpam-MessageData-0:
	+U5MP/qAvqabj9vaHrSAxddta1q6t9drd6hhsUt1Q7uy66BoCbmsf9AvewP1gB1hWNOfnJE3be3yipIYHdnnqDlPE+8BhXI7nlfufjSGBxnV+JoI1eLwrvzu2li+hYJ3VvekOxiG09zQZNELcj/d5Icbl7JxlFBGGZ2OQ/WeexLuTuM+gwEz2lriap498VWG4bZoA4KOpxxpzIl/V2URabzvgGnuThpKGZMpyyQJYQmr7Dkxhm3Ijyp2mPMaOc9rKSHhnPYPT5Bll77eAD4mEwxoQU4WDEmJ1HdhmJodUen1/LBumn3mQx4vw5EoRnFjsVCC95LyQgaxZS9bK1SO7ZHvAY+8nNJL2/fP39vzDkOx5ZGWKIarOtoDyzlWkQDGfszSBV9VwWgNAa9500vqVtiorhUI8z0sRuljjXF2PYvVdhBeDmGvwObD2cSa3Ef6
X-OriginatorOrg: elektrobit.com
X-MS-Exchange-CrossTenant-OriginalArrivalTime: 20 Apr 2026 21:33:19.4172
 (UTC)
X-MS-Exchange-CrossTenant-Network-Message-Id: 7c9bd3d8-bb54-4dbc-7c83-08de9f247100
X-MS-Exchange-CrossTenant-Id: e764c36b-012e-4216-910d-8fd16283182d
X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=e764c36b-012e-4216-910d-8fd16283182d;Ip=[4.79.107.243];Helo=[usbth1es003.ebgroup.elektrobit.com]
X-MS-Exchange-CrossTenant-AuthAs: Internal
X-MS-Exchange-CrossTenant-AuthSource: TreatMessagesAsInternal-SJ5PEPF000001CA.namprd05.prod.outlook.com
X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem
X-MS-Exchange-Transport-CrossTenantHeadersStamped: CYXPR08MB9321
X-purgate-ID: tlsNG-ef75cf/1776720805-2BF7EC48-CD86CD37/0/0
X-purgate-type: clean
X-purgate-size: 1778

This commit adds support for altp2m_get_altp2m and altp2m_set_altp2m on
ARM. The x86-specific VCPU accesses have been replaced with the
architecture independent functions altp2m_vcpu_idx and altp2m_set_vcpu_idx.

This is commit 4/4 of the altp2m_{get,set}_altp2m phase.

Signed-off-by: Rose Spangler <Rose.Spangler@elektrobit.com>
---
v6: Introduced this patch.
---
 xen/include/xen/altp2m.h | 9 ++++-----
 1 file changed, 4 insertions(+), 5 deletions(-)

diff --git a/xen/include/xen/altp2m.h b/xen/include/xen/altp2m.h
index 58e74be6deb0..f5a4d0e60562 100644
--- a/xen/include/xen/altp2m.h
+++ b/xen/include/xen/altp2m.h
@@ -8,6 +8,7 @@
 
 #include <public/hvm/hvm_op.h>
 
+#include <asm/altp2m.h>
 #include <asm/p2m.h>
 
 #define INVALID_ALTP2M  0xffff
@@ -31,11 +32,10 @@ static inline bool altp2m_active(const struct domain *d)
     return d->altp2m_active;
 }
 
-#ifdef CONFIG_X86
 /* get current alternate p2m table */
 static inline struct p2m_domain *altp2m_get_altp2m(struct vcpu *v)
 {
-    unsigned int index = vcpu_altp2m(v).p2midx;
+    unsigned int index = altp2m_vcpu_idx(v);
 
     if ( index == INVALID_ALTP2M )
         return NULL;
@@ -52,19 +52,18 @@ static inline bool altp2m_set_altp2m(struct vcpu *v, unsigned int idx)
 
     BUG_ON(idx >= v->domain->nr_altp2m);
 
-    if ( idx == vcpu_altp2m(v).p2midx )
+    if ( idx == altp2m_vcpu_idx(v) )
         return false;
 
     orig = altp2m_get_altp2m(v);
     BUG_ON(!orig);
     atomic_dec(&orig->active_vcpus);
 
-    vcpu_altp2m(v).p2midx = idx;
+    altp2m_set_vcpu_idx(v, idx);
     atomic_inc(&v->domain->altp2m_p2m[idx]->active_vcpus);
 
     return true;
 }
-#endif
 
 int do_altp2m_op(XEN_GUEST_HANDLE_PARAM(void) arg);
 
-- 
2.34.1



From xen-devel-bounces@lists.xenproject.org Mon Apr 20 21:33:34 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 20 Apr 2026 21:33:34 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1287859.1568299 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wEwFK-00064O-Fi; Mon, 20 Apr 2026 21:33:34 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1287859.1568299; Mon, 20 Apr 2026 21:33: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 1wEwFJ-00062Z-PD; Mon, 20 Apr 2026 21:33:33 +0000
Received: by outflank-mailman (input) for mailman id 1287859;
 Mon, 20 Apr 2026 21:33:30 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <Rose.Spangler@elektrobit.com>) id 1wEwFF-0005AN-Ly
 for xen-devel@lists.xenproject.org; Mon, 20 Apr 2026 21:33:29 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wEwFF-00EgCp-0y
 for xen-devel@lists.xenproject.org; Mon, 20 Apr 2026 23:33:29 +0200
Received: from [10.42.69.3] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <Rose.Spangler@elektrobit.com>)
 id 69e69b92-e002-0a2a0a5209dd-0a2a45038228-12
 for <xen-devel@lists.xenproject.org>; Mon, 20 Apr 2026 23:33:29 +0200
Received: from [52.101.201.110]
 (helo=PH7PR06CU001.outbound.protection.outlook.com)
 by tlsNG-33051d.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.1)
 (envelope-from <Rose.Spangler@elektrobit.com>)
 id 69e69ba7-672d-0a2a45030019-3465c96e606a-3
 for <xen-devel@lists.xenproject.org>; Mon, 20 Apr 2026 23:33:28 +0200
Received: from BY3PR10CA0001.namprd10.prod.outlook.com (2603:10b6:a03:255::6)
 by LV2PR08MB10982.namprd08.prod.outlook.com (2603:10b6:408:34c::12)
 with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9818.32; Mon, 20 Apr
 2026 21:33:22 +0000
Received: from SJ5PEPF000001CF.namprd05.prod.outlook.com
 (2603:10b6:a03:255:cafe::c7) by BY3PR10CA0001.outlook.office365.com
 (2603:10b6:a03:255::6) with Microsoft SMTP Server (version=TLS1_3,
 cipher=TLS_AES_256_GCM_SHA384) id 15.20.9791.48 via Frontend Transport; Mon,
 20 Apr 2026 21:33:22 +0000
Received: from usbth1es003.ebgroup.elektrobit.com (4.79.107.243) by
 SJ5PEPF000001CF.mail.protection.outlook.com (10.167.242.43) with Microsoft
 SMTP Server (version=TLS1_3, cipher=TLS_AES_256_GCM_SHA384) id 15.20.9791.48
 via Frontend Transport; Mon, 20 Apr 2026 21:33:22 +0000
Received: from usbth1es003 (localhost [127.0.0.1])
 by usbth1es003.ebgroup.elektrobit.com (Postfix) with SMTP id 4fzzHj3j1Hz1wdS; 
 Mon, 20 Apr 2026 14:33:21 -0700 (PDT)
Received: from SN1PR07CU001.outbound.protection.outlook.com
 (mail-sn1pr07cu00107.outbound.protection.outlook.com [40.93.14.103])
 (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)
 key-exchange secp384r1 server-signature RSA-PSS (2048 bits) server-digest
 SHA256) (No client certificate requested)
 by usbth1es003.ebgroup.elektrobit.com (Postfix) with ESMTPS;
 Mon, 20 Apr 2026 14:33:21 -0700 (PDT)
Received: from BY1P220CA0026.NAMP220.PROD.OUTLOOK.COM (2603:10b6:a03:5c3::17)
 by BN8PR08MB6290.namprd08.prod.outlook.com (2603:10b6:408:d6::19)
 with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9818.21; Mon, 20 Apr
 2026 21:33:18 +0000
Received: from SJ1PEPF000026C9.namprd04.prod.outlook.com
 (2603:10b6:a03:5c3:cafe::b0) by BY1P220CA0026.outlook.office365.com
 (2603:10b6:a03:5c3::17) with Microsoft SMTP Server (version=TLS1_3,
 cipher=TLS_AES_256_GCM_SHA384) id 15.20.9791.48 via Frontend Transport; Mon,
 20 Apr 2026 21:33:18 +0000
Received: from denue6es012.ebgroup.elektrobit.com (213.95.148.172) by
 SJ1PEPF000026C9.mail.protection.outlook.com (10.167.244.106) with Microsoft
 SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id
 15.20.9791.48 via Frontend Transport; Mon, 20 Apr 2026 21:33:17 +0000
Received: from ubuntu.localdomain (10.10.178.50) by
 denue6es012.ebgroup.elektrobit.com (10.243.160.140) with Microsoft SMTP
 Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id
 15.2.2562.35; Mon, 20 Apr 2026 23:33:13 +0200
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@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=elektrobit.com header.i="@elektrobit.com" header.h="From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck"; dkim=pass header.s=selector1 header.d=elektrobit.com header.i="@elektrobit.com" header.h="From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck"
ARC-Seal: i=2; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=pass;
 b=fW5rgLRalDXniPNbEihUK4JOh5AWQthuEfqMxSR+HAp4ijP6sZyGW2OjWKIYMdVXIaZ590RxWflqyTQ8jaNKWopH/Lez1KDSk4QtLQhKVnZXx7ie9b6nyb1bIHm191H3v+dxK3GArjQRatsWpvZVI2sZHL44xWggd9F/2z/SlFDh6Fn0IUXvWqdeFfl7ZltKVRDb+9Wc0pfKGPbQ220oF1ZklSBNenb2uXrwI/Clhc0svLVuK00OBU4KdQFR3tR5L/8K1pYahwG8n3qz9Y6MeZsbPPgHkrV7sw67ayR1hMT7fD8JpdGaz2PzqICZulw0V8lnAimNhsiU0/25BYRVng==
ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com;
 s=arcselector10001;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1;
 bh=s+lzv+re9KLW9t3mTXnO2Av9Vu/LGRGNe05U4kI1kS4=;
 b=oX9XN1ezG9ZrmRxAEbp8Wv9sLawvJawHrUZhHeGy2b3UKh36mFIBbGVMd37fXtKre2B4JsIbhDXdFemDgMfAIeOdZk/6oQnhSVIzABylebNTg333gu+Z0qkolDAq9SqcXfDk0tTXNY6WjfGvxs5Jv7wKs5R7iTpf9hYqCS5x1GbZZ1gXeK513VXU6JK/vrqhNwpYdY/Z0GhqzYaxvhRWtvEIMeYm9Pz7JoPMV6QRH3IqjSiFgr94tsgJ1kl/j1GS6Xlqy62IrAbeCsNkQuB68bddkpYqWqP/ZeM5t5m2GzMDws0v1eGHREiBv7icEHVf4GUfH7vKW7zRfykiWbAVhw==
ARC-Authentication-Results: i=2; mx.microsoft.com 1; spf=pass (sender ip is
 40.93.14.103) smtp.rcpttodomain=amd.com smtp.mailfrom=elektrobit.com;
 dmarc=pass (p=quarantine sp=none pct=100) action=none
 header.from=elektrobit.com; dkim=pass (signature was verified)
 header.d=elektrobit.com; arc=pass (0 oda=1 ltdi=1
 spf=[1,1,smtp.mailfrom=elektrobit.com]
 dmarc=[1,1,header.from=elektrobit.com])
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=elektrobit.com;
 s=selector1;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck;
 bh=s+lzv+re9KLW9t3mTXnO2Av9Vu/LGRGNe05U4kI1kS4=;
 b=i7wJwiTasTdQ3xK977NNQ1qNksIN540kd9nhBODppVL1Un/OsIuxorf0ZKOCtCuWFL+srud1v5LEs9KSVlW1Bzxv19tS9q3wcis59SqrtwDYzilgxNqNy+gmuU8PsNJPMGmeqTj4iBd+ZDsrvtTu3A/mWG1QEKZm6M/eK2UHomQ=
X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 40.93.14.103)
 smtp.mailfrom=elektrobit.com; dkim=pass (signature was verified)
 header.d=elektrobit.com;dmarc=pass action=none header.from=elektrobit.com;
Received-SPF: Pass (protection.outlook.com: domain of elektrobit.com
 designates 40.93.14.103 as permitted sender) receiver=protection.outlook.com;
 client-ip=40.93.14.103; helo=SN1PR07CU001.outbound.protection.outlook.com;
 pr=C
ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none;
 b=oCWcyenad4h9ix7aAbJT5eBdWqviFeYRmMnsIKg0HuvGrAXdcdx330dNd5xRw6tZ7gnr4D73mYzdJIQFqpqHU0OjJ2nHBSJfUkDD9LdkKVomym2bBZaKkAAhZVKcLqofZKhzZ/8pHJ8W2c9YLTYiq34w25EvEEqolI2otuG8iKuI6U483r3BP9ViD2jIj7OPzf1LFBc8AHfcmZIr/7MuKqoUPUt81L72NX4Z2M7huTo3M9XsX4SmthCP2VBE5ThVfLqiKsRlRwnsQv+KYz9bqSlhrLGjaQ16wRX7xTfHD/5++baohYlo18/0ABfYY3akEcxTCF/ZFMTKL1XF0Y92Uw==
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com;
 s=arcselector10001;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1;
 bh=s+lzv+re9KLW9t3mTXnO2Av9Vu/LGRGNe05U4kI1kS4=;
 b=Gbd83PjGQD/z0PAcJ2qrO/+trBMhY5fgRcrqrOQfGY7iCAb+04mVEwgmiljbk2qsvRbktXzpwW4mi8n/OHi5W3v0mMPEQ/zGU2HFjJ55cP/b7hMlxZWI9qb6I6UfttE8322kaB3Oq8nL7uNIXVrkAB6Ba1TNGb05ZyfMytqBaVUgx6v2qzuj1cb0UHo3VhBkX56pSClxLJqi9zAoC3mUrFP4n/IB9CS9Lhw4rTHvD5Qgs1vmhLoUUx+9FXFZYTb/VqhnD6gQsK7ydj7y8H9vxYrDdHU6BJr7iR+V1S2jUuucR7Q+6Xx6DIn9i1EynXA1DDpCFVDiRkiI9O9OSspidg==
ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass (sender ip is
 213.95.148.172) smtp.rcpttodomain=lists.xenproject.org
 smtp.mailfrom=elektrobit.com; dmarc=pass (p=quarantine sp=none pct=100)
 action=none header.from=elektrobit.com; dkim=none (message not signed);
 arc=none (0)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=elektrobit.com;
 s=selector1;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck;
 bh=s+lzv+re9KLW9t3mTXnO2Av9Vu/LGRGNe05U4kI1kS4=;
 b=i7wJwiTasTdQ3xK977NNQ1qNksIN540kd9nhBODppVL1Un/OsIuxorf0ZKOCtCuWFL+srud1v5LEs9KSVlW1Bzxv19tS9q3wcis59SqrtwDYzilgxNqNy+gmuU8PsNJPMGmeqTj4iBd+ZDsrvtTu3A/mWG1QEKZm6M/eK2UHomQ=
X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 213.95.148.172)
 smtp.mailfrom=elektrobit.com; dkim=none (message not signed)
 header.d=none;dmarc=pass action=none header.from=elektrobit.com;
Received-SPF: Pass (protection.outlook.com: domain of elektrobit.com
 designates 213.95.148.172 as permitted sender)
 receiver=protection.outlook.com; client-ip=213.95.148.172;
 helo=denue6es012.ebgroup.elektrobit.com; pr=C
From: Rose Spangler <Rose.Spangler@elektrobit.com>
To: <xen-devel@lists.xenproject.org>
CC: Rose Spangler <Rose.Spangler@elektrobit.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: [RFC PATCH v6 30/43] arm/altp2m: Add altp2m view validity/visibility indicator
Date: Mon, 20 Apr 2026 17:31:53 -0400
Message-ID: <20260420213206.208750-31-Rose.Spangler@elektrobit.com>
X-Mailer: git-send-email 2.34.1
In-Reply-To: <20260420213206.208750-1-Rose.Spangler@elektrobit.com>
References: <20260420213206.208750-1-Rose.Spangler@elektrobit.com>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit
Content-Type: text/plain
X-Originating-IP: [10.10.178.50]
X-ClientProxiedBy: denue6es012.ebgroup.elektrobit.com (10.243.160.140) To
 denue6es012.ebgroup.elektrobit.com (10.243.160.140)
X-EOPAttributedMessage: 1
X-MS-Exchange-SkipListedInternetSender:
 ip=[213.95.148.172];domain=denue6es012.ebgroup.elektrobit.com
X-MS-TrafficTypeDiagnostic:
	SJ1PEPF000026C9:EE_|BN8PR08MB6290:EE_|SJ5PEPF000001CF:EE_|LV2PR08MB10982:EE_
X-MS-Office365-Filtering-Correlation-Id: 36464852-9bae-492f-0b58-08de9f24728f
X-SM-outgoing: yes
X-MS-Exchange-SenderADCheck: 1
X-MS-Exchange-AntiSpam-Relay: 0
X-Microsoft-Antispam-Untrusted:
 BCL:0;ARA:13230040|1800799024|82310400026|36860700016|376014|56012099003|18002099003|22082099003;
X-Microsoft-Antispam-Message-Info-Original:
 =?us-ascii?Q?qxYMTUrccBdq6ifl8vi8mmtK0pJNmJm/HpU72VeVl6zC6ypzMWpuOm3oFmRU?=
 =?us-ascii?Q?PT08KHlnZI3+YAzHyzlc/fD/pCTa/AIqynYb1oh12BS8bPS8g6NUe0QXwsG8?=
 =?us-ascii?Q?waDSH1apq2tp4FrgxXmtO1W90XUQmCwPFVUomqh1imoD3eIrq/NeL9KpsOs7?=
 =?us-ascii?Q?X1xJpcgiqBKa5+K7D1HvINs+2am1u1LhiuKFYjVdKytkoeR3zqqlJt8EV628?=
 =?us-ascii?Q?MxEwqL78gCQZwzqPHk2E0D+jSMWEAN19+zz/NT3TCAJfls1eO7HVfdZcGBXH?=
 =?us-ascii?Q?S4pqqX8P7WLadc2hi+TwEpTe2PLPeqjo1y6FlKKdb+/U+pzMf2PsaGDx07MA?=
 =?us-ascii?Q?hfI4AOcLH/7u8PMq6nTSlneCA0OYPQSUELvzxuRMqxvPJX6iK3DFeX5HX0fN?=
 =?us-ascii?Q?Qmy0+uX6oG5vtrF+iuindG+DCMiBSUnpINrxyevITFW4iksRnDn6KA/4RkU/?=
 =?us-ascii?Q?l4QZW8+T43mZRiI5nS+1a7WfbwhfrbXDVIWVRFSTZnjHXTDbWSy/7XFDt77R?=
 =?us-ascii?Q?+ccv5E5P85rSudkmkgULmEoHJfPbxgZi64IQxW9Y+SNSwpgrHkKLRafMM8n2?=
 =?us-ascii?Q?4I+j+jU+trBGntBWY9aq0axENDLUlWHStfoGfkF3QxOROXYaZGN+FihZ+jhP?=
 =?us-ascii?Q?4MIs56mPryo/U8fMExRBwKMJIfBi30TTjz4CwgTgykKqyZDNMvZqfISCjHTz?=
 =?us-ascii?Q?erbikyN74o7SPZNSV0A+xOty+heTcMtw57Rf6JAnRj8YK8A3Oax6z/B2kQvg?=
 =?us-ascii?Q?cVi+0IshTCmJKCeNUbU+wY/2G10fZhT4+QGhGpVrB4PYNeH1cQhQJidk3y1H?=
 =?us-ascii?Q?CR5ga6gzLXQN+h9vyEZjeuPJpNBj/MmvBZ0LYzf95mOveQYOjIArz0VXl8Qc?=
 =?us-ascii?Q?6aJOXpmXPtl1rQT+7te7gGWrgZip3s2pTLQprft9GfEK9smbdzfC/wiopB4m?=
 =?us-ascii?Q?a91rl45gABTV3nk8+NA7eFaNSDd2Cy/dI5ROPCeFxmqOxADR2Vr/ZASfXan2?=
 =?us-ascii?Q?5R/RfIzbcfL/LpZPRIWE3LoWBtah4NuxPg3K6bcyXTuY71tyKW0pJS54NZmq?=
 =?us-ascii?Q?7PrfYI5iBF3uMSuspPyyG8V6WfMzIgP6YWRcdEKoI5GOTTbwqNmca3RW/Lr6?=
 =?us-ascii?Q?fHu9ETurbYBjNknPvNTfXrl7etW2eHPE8h1CQY6LkhXEDqWOhsI4WxeO3kmu?=
 =?us-ascii?Q?AylfuWd44yljIOc5?=
X-Forefront-Antispam-Report-Untrusted:
 CIP:213.95.148.172;CTRY:DE;LANG:en;SCL:1;SRV:;IPV:CAL;SFV:NSPM;H:denue6es012.ebgroup.elektrobit.com;PTR:eth1-fw1-nbg6.eb.noris.de;CAT:NONE;SFS:(13230040)(1800799024)(82310400026)(36860700016)(376014)(56012099003)(18002099003)(22082099003);DIR:OUT;SFP:1102;
X-Exchange-RoutingPolicyChecked:
 p3PiiLqLvpe/1tfa3szwMu4ZT9oKQwa5i6QYBhH0Np4lXDWhEreT/AY+Ich5CGWD6nfrW7+1V1yhe1JdTmnWQtHOnqbTXM9wvmcm9jceLumNYlxDRVvOM9yYRFMza4QqzhO4hhKw03DdH8b5FClEugmEyJv5U52ea0dOOAu9stgeg5mQybYxVUp/N65WQ9gVMOeg1mdbwnYCwm0mrV4arWemSRK8QxD0loT3+gae8UCLmL9AaZUNip24/32KADWFLrzMX1DUfuEQ5lZValPzD6xSBxIA7j1TeKdXMOWsc0ZmWgFlkaasO2sYwTJKpc6ydeddOTNLCrRpx8PCVj8T5g==
X-MS-Exchange-Transport-CrossTenantHeadersStamped: BN8PR08MB6290
X-MS-Exchange-SkipListedInternetSender:
 ip=[40.93.14.103];domain=SN1PR07CU001.outbound.protection.outlook.com
X-MS-Exchange-ExternalOriginalInternetSender:
 ip=[40.93.14.103];domain=SN1PR07CU001.outbound.protection.outlook.com
X-MS-Exchange-Transport-CrossTenantHeadersStripped:
 SJ5PEPF000001CF.namprd05.prod.outlook.com
X-MS-PublicTrafficType: Email
X-MS-Office365-Filtering-Correlation-Id-Prvs:
	e02d9890-b95e-4369-3916-08de9f247021
X-Microsoft-Antispam:
	BCL:0;ARA:13230040|35042699022|156008|376014|82310400026|1800799024|14060799003|36860700016|56012099003|22082099003|18002099003;
X-Microsoft-Antispam-Message-Info:
	=?us-ascii?Q?C0R6pwBX45q/Z5yEPxINh7c60oxXXkfnheXMPywxBWNnesG8bSQxPA3hfcW0?=
 =?us-ascii?Q?N261xRMvx3sEajESONKDU1XaRPN71xw+/XcQ85lTgxNsqKLalm2cZS5Op+Gr?=
 =?us-ascii?Q?GSd7OsDeBeqXOJJz2PKeGFn8Q6yUCqust8F5Nl6QR7MuvWzyvLmybs/xSJxo?=
 =?us-ascii?Q?MaFh180Yyf0Yvo4CHupsILZshnRPjj8jXNEoWYE3d4pu+kLkyceJTI8+tlMl?=
 =?us-ascii?Q?9pKcBEXRwnmKvo0k3hA1URAJtTH6FB/JB85To9JqRDNz9xa9iXsbsjCVHLff?=
 =?us-ascii?Q?c8RfiKqe/OPB9G6cJ46MLoco3L8BHOHavQWqY8whHHoB6WAi7kOnQyAVPDg1?=
 =?us-ascii?Q?J4vXA3aP3oBkQ+ctMuyWtL456E5EhyIKhPqIHtEbEr/EPLMoOcAaoqiXJsbP?=
 =?us-ascii?Q?z9ELEd4z/40/7BXENacK6czUUrPsaj8mx5nA69Nd3hbZ4X6H3j86Hg2jyshf?=
 =?us-ascii?Q?7mUASE5KvIWAFy0KsYbKVVHqlLwALropWv21UJTYo0ArFEYF3EJgeqOBwwhK?=
 =?us-ascii?Q?wKxVzad1RZLV4NGQaUaVokuSOo8tC/seSGzKg9G4p+Hst7K1JLRc3L11998z?=
 =?us-ascii?Q?g/dSUYu1GSJLZ9jslALsML+WG+GkQCw4bcpG1NBzlAB1YVBMNS5cvt8dA5Oj?=
 =?us-ascii?Q?VCGJr5cb6SHB+cxa8dxFP2b++K3P9oUKjFbQIyZovliWBJGarIKjzOrYS8B5?=
 =?us-ascii?Q?yEngK1N8/EiR0Ya1zxleIfgotahjArcSKon5/FkO5TDDbvMLIBmsSVbL/Mp+?=
 =?us-ascii?Q?qk5JVDA29WE8FCSNffHQoQxnPVM/OFo/f8z76iTXmONhRNQVCKqi7CkKBd9K?=
 =?us-ascii?Q?lG50Zqu7sPXq1Ie+LFgSwzr0iY0L4sWsoYRoMkmCH7swX8SNcp2AIQAx0xE6?=
 =?us-ascii?Q?iTfQNT+hGJ/LIBBZgnQH3NsLExEF5/6kBkFjBvTTQwTE/3MhSZsMhp59XNNX?=
 =?us-ascii?Q?Dw4Nrrq16Nv/qNe8SMdkLoEmvkndMSfZiqLKiQEKP+fNEPNaGMil95Hlv0K9?=
 =?us-ascii?Q?jbMSRaSBP9Wz6wWTX6637eJBuZxchTpUADSq+sx9I3C6hH/f4kdy3s5Ld0cK?=
 =?us-ascii?Q?oH+dgwA3UQdmClrlT0Kn09rM1IKEkipppKRjD3OdzzsMOwXetMeU19ibKUKW?=
 =?us-ascii?Q?TI35vxrbzgVyL79PEqw3GorC0N9NnfFcSaVEiWoJoH6zuqRQ0QvvHov5kaSc?=
 =?us-ascii?Q?o0OKiN/WxhvLgm32?=
X-Forefront-Antispam-Report:
	CIP:4.79.107.243;CTRY:US;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:SN1PR07CU001.outbound.protection.outlook.com;PTR:mail-sn1pr07cu00107.outbound.protection.outlook.com;CAT:NONE;SFS:(13230040)(35042699022)(156008)(376014)(82310400026)(1800799024)(14060799003)(36860700016)(56012099003)(22082099003)(18002099003);DIR:OUT;SFP:1102;
X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1
X-MS-Exchange-AntiSpam-MessageData-0:
	85Hp4dXszp5nQQK7ICLbcOKUzA6ZnOWHvI0AaqKQiukGoyt0M462px05vjr+frD69c7FsbHJ9NRN6Q/DNhkuFNdpJuQ7myu0anbMZjOQh4iPj8MpUbkbTwJsPxYdt/eJ9q6PzA77WG8sI1zWPwsk6CAJSjP5b59j5mPyS/T9z7IZ7p6RKa81sxlTR6kiVZ1BAAYarI029gnP+wHuzqPFlVSCP5Tq1o9WiW1YxhKIpkPVwmF3r+malwzDRPI1kl2n0rVj1V7VifU/WzmQM4I7zJngrt7gSXDCMKgDqPGZttF+FTraZTwG3UUHmJyz9rgcOlcf9fSDbdBIMAOTu6Aq9GrqZUL6F7U66FBfSsMLDXzxnZeCXllDX2s4qIFXT+BzUXH2Es1e/oEPJvXZYRRsxcixlGF+rxkCyPwQ5il2PukQiku6Igz88thk4kxygLVI
X-OriginatorOrg: elektrobit.com
X-MS-Exchange-CrossTenant-OriginalArrivalTime: 20 Apr 2026 21:33:22.0113
 (UTC)
X-MS-Exchange-CrossTenant-Network-Message-Id: 36464852-9bae-492f-0b58-08de9f24728f
X-MS-Exchange-CrossTenant-Id: e764c36b-012e-4216-910d-8fd16283182d
X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=e764c36b-012e-4216-910d-8fd16283182d;Ip=[4.79.107.243];Helo=[usbth1es003.ebgroup.elektrobit.com]
X-MS-Exchange-CrossTenant-AuthAs: Internal
X-MS-Exchange-CrossTenant-AuthSource: TreatMessagesAsInternal-SJ5PEPF000001CF.namprd05.prod.outlook.com
X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem
X-MS-Exchange-Transport-CrossTenantHeadersStamped: LV2PR08MB10982
X-purgate-ID: tlsNG-33051d/1776720808-A197D938-0C4ABDD8/0/0
X-purgate-type: clean
X-purgate-size: 5462

This commit adds the altp2m_view_state enum, which indicates whether an
altp2m view is invalid, visible, or invisible. The altp2m_state array is
comprised of altp2m_view_state values, where each entry corresponds to the
altp2m view with the same entry. This is analogous to the altp2m_eptp and
altp2m_visible_eptp arrays on x86.

This addition is necessary to tell whether an altp2m is valid, in addition
to whether it is visible. Since all altp2m views are allocated up-front
during p2m initialization, there must be an additional mechanism to
determine whether an altp2m view is valid. Since the implementation of
HVMOP_altp2m_set_visibility also needs an additional mechanism to determine
whether a view is visible, it makes sense to combine altp2m view validity
and visibility into a single mechanism. Therefore, the altp2m_state array
is used to track both view validitity and visibility.

This is commit 1/5 of the altp2m view validity/visibility phase.

Signed-off-by: Rose Spangler <Rose.Spangler@elektrobit.com>
---
v6: Introduced this patch.

    In the v4/v5 patch series, view validity was determined by simply
    checking if the altp2m p2m_domain pointer is NULL. This isn't possible
    in the v6 patch series, since altp2m views are allocated up-front
    during altp2m_init.

    Since the altp2m_view_state enum definition has to be available in
    asm/domain.h, this commit removes the sched.h dependency from altp2m.h.
    Unfortunately, this means that it's not possible to have static inline
    functions in altp2m.h which need a complete definition of arch_domain
    and arch_vcpu. If there would be a better place to put the
    altp2m_view_state definition, feedback would be appreciated.
---
 xen/arch/arm/altp2m.c             | 13 +++++++++++++
 xen/arch/arm/include/asm/altp2m.h | 23 +++++++++++++----------
 xen/arch/arm/include/asm/domain.h |  4 ++++
 xen/arch/arm/mmu/p2m.c            | 14 +++++++++++++-
 4 files changed, 43 insertions(+), 11 deletions(-)

diff --git a/xen/arch/arm/altp2m.c b/xen/arch/arm/altp2m.c
index 339f82835caf..e741648ff5a1 100644
--- a/xen/arch/arm/altp2m.c
+++ b/xen/arch/arm/altp2m.c
@@ -5,6 +5,8 @@
  * Copyright (c) 2016 Sergej Proskurin <proskurin@sec.in.tum.de>
  */
 
+#include <xen/sched.h>
+
 #include <asm/p2m.h>
 
 /* Check to see if vcpu should be switched to a different p2m. */
@@ -14,6 +16,17 @@ void altp2m_check(struct vcpu *v, uint16_t idx)
     BUG();
 }
 
+/* Alternate p2m VCPU */
+uint16_t altp2m_vcpu_idx(const struct vcpu *v)
+{
+    return v->arch.ap2m_idx;
+}
+
+void altp2m_set_vcpu_idx(struct vcpu *v, unsigned int idx)
+{
+    v->arch.ap2m_idx = idx;
+}
+
 /*
  * Local variables:
  * mode: C
diff --git a/xen/arch/arm/include/asm/altp2m.h b/xen/arch/arm/include/asm/altp2m.h
index f001e022a213..05beb7f698a7 100644
--- a/xen/arch/arm/include/asm/altp2m.h
+++ b/xen/arch/arm/include/asm/altp2m.h
@@ -9,7 +9,10 @@
 #ifndef __ASM_ARM_ALTP2M_H
 #define __ASM_ARM_ALTP2M_H
 
-#include <xen/sched.h>
+#include <xen/mem_access.h>
+
+struct domain;
+struct vcpu;
 
 #ifdef CONFIG_ALTP2M
 
@@ -24,15 +27,15 @@ static inline bool altp2m_supported(void)
 #define altp2m_unlock(d)    spin_unlock(&(d)->arch.altp2m_lock)
 
 /* Alternate p2m VCPU */
-static inline uint16_t altp2m_vcpu_idx(const struct vcpu *v)
-{
-    return v->arch.ap2m_idx;
-}
-
-static inline void altp2m_set_vcpu_idx(struct vcpu *v, unsigned int idx)
-{
-    v->arch.ap2m_idx = idx;
-}
+uint16_t altp2m_vcpu_idx(const struct vcpu *v);
+void altp2m_set_vcpu_idx(struct vcpu *v, unsigned int idx);
+
+/* The current state of an altp2m view */
+enum altp2m_view_state {
+    ALTP2M_INVALID,
+    ALTP2M_VISIBLE,
+    ALTP2M_INVISIBLE,
+};
 
 #else /* CONFIG_ALTP2M */
 
diff --git a/xen/arch/arm/include/asm/domain.h b/xen/arch/arm/include/asm/domain.h
index 4d497a21b648..28533b08db1f 100644
--- a/xen/arch/arm/include/asm/domain.h
+++ b/xen/arch/arm/include/asm/domain.h
@@ -3,6 +3,7 @@
 
 #include <xen/cache.h>
 #include <xen/timer.h>
+#include <asm/altp2m.h>
 #include <asm/page.h>
 #include <asm/p2m.h>
 #include <asm/suspend.h>
@@ -135,6 +136,9 @@ struct arch_domain
      * concurrently.
      */
     spinlock_t altp2m_lock;
+
+    /* Validity/visibility of altp2m views */
+    enum altp2m_view_state *altp2m_state;
 #endif
 }  __cacheline_aligned;
 
diff --git a/xen/arch/arm/mmu/p2m.c b/xen/arch/arm/mmu/p2m.c
index 04d17e787259..7c23995f8074 100644
--- a/xen/arch/arm/mmu/p2m.c
+++ b/xen/arch/arm/mmu/p2m.c
@@ -1494,6 +1494,8 @@ int p2m_teardown(struct domain *d)
 
     d->altp2m_active = false;
 
+    FREE_XENHEAP_PAGE(d->arch.altp2m_state);
+
     for ( i = 0; i < d->nr_altp2m; i++ )
     {
         rc = p2m_teardown_one(d->altp2m_p2m[i]);
@@ -1617,7 +1619,7 @@ struct p2m_domain *p2m_init_one(struct domain *d)
 static int p2m_init_altp2m(struct domain *d)
 {
 #ifdef CONFIG_ALTP2M
-    int rc;
+    int rc, i;
 
     rc = altp2m_init(d);
     if ( rc )
@@ -1626,6 +1628,16 @@ static int p2m_init_altp2m(struct domain *d)
         return rc;
     }
 
+    if ( (d->arch.altp2m_state = alloc_xenheap_page()) == NULL )
+    {
+        return -ENOMEM;
+    }
+
+    for ( i = 0; i < d->nr_altp2m; i++ )
+    {
+        d->arch.altp2m_state[i] = ALTP2M_INVALID;
+    }
+
     d->altp2m_active = false;
 #endif
 
-- 
2.34.1



From xen-devel-bounces@lists.xenproject.org Mon Apr 20 21:33:39 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 20 Apr 2026 21:33:39 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1287873.1568313 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wEwFO-0006rk-Nt; Mon, 20 Apr 2026 21:33:38 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1287873.1568313; Mon, 20 Apr 2026 21:33: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 1wEwFN-0006oW-Lh; Mon, 20 Apr 2026 21:33:37 +0000
Received: by outflank-mailman (input) for mailman id 1287873;
 Mon, 20 Apr 2026 21:33:34 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <Rose.Spangler@elektrobit.com>) id 1wEwFJ-0005xa-GO
 for xen-devel@lists.xenproject.org; Mon, 20 Apr 2026 21:33:33 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wEwFI-00CCPQ-Su
 for xen-devel@lists.xenproject.org; Mon, 20 Apr 2026 23:33:32 +0200
Received: from [10.42.69.9] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <Rose.Spangler@elektrobit.com>)
 id 69e69ba2-bab6-0a2a0a5309dd-0a2a45098212-8
 for <xen-devel@lists.xenproject.org>; Mon, 20 Apr 2026 23:33:32 +0200
Received: from [40.93.195.142]
 (helo=SN4PR2101CU001.outbound.protection.outlook.com)
 by tlsNG-bad1c0.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.1)
 (envelope-from <Rose.Spangler@elektrobit.com>)
 id 69e69bab-2497-0a2a45090019-285dc38e3c53-3
 for <xen-devel@lists.xenproject.org>; Mon, 20 Apr 2026 23:33:32 +0200
Received: from BN0PR04CA0009.namprd04.prod.outlook.com (2603:10b6:408:ee::14)
 by CY3PR08MB10695.namprd08.prod.outlook.com (2603:10b6:930:10a::5)
 with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9818.33; Mon, 20 Apr
 2026 21:33:27 +0000
Received: from BN1PEPF00004689.namprd05.prod.outlook.com
 (2603:10b6:408:ee:cafe::48) by BN0PR04CA0009.outlook.office365.com
 (2603:10b6:408:ee::14) with Microsoft SMTP Server (version=TLS1_3,
 cipher=TLS_AES_256_GCM_SHA384) id 15.20.9791.48 via Frontend Transport; Mon,
 20 Apr 2026 21:33:27 +0000
Received: from usbth1es003.ebgroup.elektrobit.com (4.79.107.243) by
 BN1PEPF00004689.mail.protection.outlook.com (10.167.243.134) with Microsoft
 SMTP Server (version=TLS1_3, cipher=TLS_AES_256_GCM_SHA384) id 15.20.9791.48
 via Frontend Transport; Mon, 20 Apr 2026 21:33:26 +0000
Received: from usbth1es003 (localhost [127.0.0.1])
 by usbth1es003.ebgroup.elektrobit.com (Postfix) with SMTP id 4fzzHn6qLFz1wdM; 
 Mon, 20 Apr 2026 14:33:25 -0700 (PDT)
Received: from DS2PR08CU001.outbound.protection.outlook.com
 (mail-ds2pr08cu00106.outbound.protection.outlook.com [40.93.13.54])
 (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)
 key-exchange secp384r1) (No client certificate requested)
 by usbth1es003.ebgroup.elektrobit.com (Postfix) with ESMTPS;
 Mon, 20 Apr 2026 14:33:25 -0700 (PDT)
Received: from BY1P220CA0016.NAMP220.PROD.OUTLOOK.COM (2603:10b6:a03:5c3::13)
 by LV3PR08MB10496.namprd08.prod.outlook.com (2603:10b6:408:289::13)
 with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9818.32; Mon, 20 Apr
 2026 21:33:16 +0000
Received: from SJ1PEPF000026C9.namprd04.prod.outlook.com
 (2603:10b6:a03:5c3:cafe::7d) 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.20.9791.48 via Frontend Transport; Mon,
 20 Apr 2026 21:33:16 +0000
Received: from denue6es012.ebgroup.elektrobit.com (213.95.148.172) by
 SJ1PEPF000026C9.mail.protection.outlook.com (10.167.244.106) with Microsoft
 SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id
 15.20.9791.48 via Frontend Transport; Mon, 20 Apr 2026 21:33:15 +0000
Received: from ubuntu.localdomain (10.10.178.50) by
 denue6es012.ebgroup.elektrobit.com (10.243.160.140) with Microsoft SMTP
 Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id
 15.2.2562.35; Mon, 20 Apr 2026 23:33:12 +0200
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@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=elektrobit.com header.i="@elektrobit.com" header.h="From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck"; dkim=pass header.s=selector1 header.d=elektrobit.com header.i="@elektrobit.com" header.h="From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck"
ARC-Seal: i=2; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=pass;
 b=v/WqEAjdi/sxfO/Mt7R+n9t7NVTg8iWZwrBpS7qjICG5Tkx5OydKjlhsYw/UxudsEuwDH/yjtDmcdaHVZBKMJLDyLLmWzPhJDa4EL4zazMgeafSDOJa5S5ia4zseIA/OxvdF7FA26eMzTYkjHJp+r92a2MSf/i7sbHExbeZCuEgrzbUJWfABl/m3Bm6iN4k78PSX7pxfJalSwPGtEwwCDA6ggJ9GIlvIm5VinYJMb+Vn5Bu3zCQamLOTL5OgDu2c0jJrDCM6jhGaCklVWz8KtnlkXRtWc+sLkSH2IWqAMNSta5I5+PngY2PHy3mm+395nuM9IDSoXCVKfg1uelw2NA==
ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com;
 s=arcselector10001;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1;
 bh=GvY1Hq4hwLu2aLmi7v9CAxN3huVX6llKANSCVnMm0ZU=;
 b=u07qfmBacJbLkKBy3A1BRggUIRMjOHSV9+vnJA2xeyudxKwqMBniGRcIBWYq7li7yCZBzrGRY2EYOMrOmzjJQh0hd5PoKYub9Nm3/1JLIXVOIBZn0YWxGB4KUzIWZV8ImvPF+wBsKvF+l2woCsfltqNnb6mQnlM0GObb5L7RQAb91zt09MUc/Dj7YuK8LC0H+9SYPgsS+o+WaydaqsZdYHOgtjlDnDE3cPlUIOxsKjZyYLsH0DsZbVG5l4DHxpvnop/aM97xWj0w5di6rKGV/sbb41C0hE++DL7WbVZeBFlqkqX8zzhcjHksVvdl33EeyJTGJzleL3FwX7brwaJLrQ==
ARC-Authentication-Results: i=2; mx.microsoft.com 1; spf=pass (sender ip is
 40.93.13.54) smtp.rcpttodomain=amd.com smtp.mailfrom=elektrobit.com;
 dmarc=pass (p=quarantine sp=none pct=100) action=none
 header.from=elektrobit.com; dkim=pass (signature was verified)
 header.d=elektrobit.com; arc=pass (0 oda=1 ltdi=1
 spf=[1,1,smtp.mailfrom=elektrobit.com]
 dmarc=[1,1,header.from=elektrobit.com])
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=elektrobit.com;
 s=selector1;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck;
 bh=GvY1Hq4hwLu2aLmi7v9CAxN3huVX6llKANSCVnMm0ZU=;
 b=O8bReBvxkUhN+RPIvfp2ulfpPBJIAVULs9Nrcgiy9ft7P2vbloncct30YrOMyMgxpmg62Y3A89FtBfYbWxFsgSgfauL+zpC4LDjEiAXJ5ybpF7deSNzBHLtr132NI4rupnzAubPLCN0dyqwrIgwzHpKatBhqL+1fu+pVYUvlUNE=
X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 40.93.13.54)
 smtp.mailfrom=elektrobit.com; dkim=pass (signature was verified)
 header.d=elektrobit.com;dmarc=pass action=none header.from=elektrobit.com;
Received-SPF: Pass (protection.outlook.com: domain of elektrobit.com
 designates 40.93.13.54 as permitted sender) receiver=protection.outlook.com;
 client-ip=40.93.13.54; helo=DS2PR08CU001.outbound.protection.outlook.com;
 pr=C
ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none;
 b=WPX4hfRbUXFrVZZLzAolr5brBPw6sAnL5xoyhMSaY2Cm9Stu9N4KgWn5R5Y3Gie2Oj/Sce0yp/wAZjuQMTIbKSwDRV/dGlhzvq2Ou3wcyUfeK+z0iRElCvX9Y//TJc51D8PwjrIk+LowVsy3pX5h9mKotXJcphnuhXhiIWpOfJjNNBjsPKvvIoR+ZGREMc4//w4Q6sTftI4Quh9zG3pWlU1zfFYHXemjITHNweMF+Oe3praYz+6SW3bDaR1Vlrz59AFOhHfTedZeHPGkhXAeSNsHy3VsmhoCW2A5pkVN4S3RZ4zrXeGB+90Rwlwj1HKr3OT+MvjYd/apoDX66kVcsw==
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com;
 s=arcselector10001;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1;
 bh=GvY1Hq4hwLu2aLmi7v9CAxN3huVX6llKANSCVnMm0ZU=;
 b=ZS8iA0+4kWo7vv4GzHg0ijpPnqdN0IHIQHtQOIMC+vyWiiMwZzINFSiiSYyDOG+KKH3/R2tAL2Y03padJSBtmMG9g43qzmeJQyufBJ9DcaCg+9ZUzUulQ/thtuJDHbK1NyeQvITZkLJC6CvR4u2U6QnBRemtSW7ZDNC1pRlu0vmw2jR3E1b/8OhZnBsh4iZ3835esgrDOzQoDstau4XRh808oApCSBbCEGHBEt2nl8CNV66BnouY6QVq/hIt7ooGyFRLHOvZ8uA/AA90lIS+CjJpdstPOLiOyCjz/Gdydjws6QuRCBH2Mh8yYIJwH4hAoMJ5uJguhqYuu35OGwQJRg==
ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass (sender ip is
 213.95.148.172) smtp.rcpttodomain=lists.xenproject.org
 smtp.mailfrom=elektrobit.com; dmarc=pass (p=quarantine sp=none pct=100)
 action=none header.from=elektrobit.com; dkim=none (message not signed);
 arc=none (0)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=elektrobit.com;
 s=selector1;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck;
 bh=GvY1Hq4hwLu2aLmi7v9CAxN3huVX6llKANSCVnMm0ZU=;
 b=O8bReBvxkUhN+RPIvfp2ulfpPBJIAVULs9Nrcgiy9ft7P2vbloncct30YrOMyMgxpmg62Y3A89FtBfYbWxFsgSgfauL+zpC4LDjEiAXJ5ybpF7deSNzBHLtr132NI4rupnzAubPLCN0dyqwrIgwzHpKatBhqL+1fu+pVYUvlUNE=
X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 213.95.148.172)
 smtp.mailfrom=elektrobit.com; dkim=none (message not signed)
 header.d=none;dmarc=pass action=none header.from=elektrobit.com;
Received-SPF: Pass (protection.outlook.com: domain of elektrobit.com
 designates 213.95.148.172 as permitted sender)
 receiver=protection.outlook.com; client-ip=213.95.148.172;
 helo=denue6es012.ebgroup.elektrobit.com; pr=C
From: Rose Spangler <Rose.Spangler@elektrobit.com>
To: <xen-devel@lists.xenproject.org>
CC: Rose Spangler <Rose.Spangler@elektrobit.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.pau@citrix.com>, Stefano Stabellini <sstabellini@kernel.org>
Subject: [RFC PATCH v6 29/43] arm/altp2m: Add support for altp2m_vcpu_{initialise,destroy}
Date: Mon, 20 Apr 2026 17:31:52 -0400
Message-ID: <20260420213206.208750-30-Rose.Spangler@elektrobit.com>
X-Mailer: git-send-email 2.34.1
In-Reply-To: <20260420213206.208750-1-Rose.Spangler@elektrobit.com>
References: <20260420213206.208750-1-Rose.Spangler@elektrobit.com>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit
Content-Type: text/plain
X-Originating-IP: [10.10.178.50]
X-ClientProxiedBy: denue6es012.ebgroup.elektrobit.com (10.243.160.140) To
 denue6es012.ebgroup.elektrobit.com (10.243.160.140)
X-EOPAttributedMessage: 1
X-MS-Exchange-SkipListedInternetSender:
 ip=[213.95.148.172];domain=denue6es012.ebgroup.elektrobit.com
X-MS-TrafficTypeDiagnostic:
	SJ1PEPF000026C9:EE_|LV3PR08MB10496:EE_|BN1PEPF00004689:EE_|CY3PR08MB10695:EE_
X-MS-Office365-Filtering-Correlation-Id: 441271fa-6c5d-4e9e-a055-08de9f247586
X-SM-outgoing: yes
X-MS-Exchange-SenderADCheck: 1
X-MS-Exchange-AntiSpam-Relay: 0
X-Microsoft-Antispam-Untrusted:
 BCL:0;ARA:13230040|704161411799003|36860700016|1800799024|376014|82310400026|56012099003|22082099003|18002099003;
X-Microsoft-Antispam-Message-Info-Original:
 =?us-ascii?Q?7nlLgsG7Nue2zqKG4/Q3EpE7gUJPu/Naps/Au3ZJNXA10dSSreYpFP1sBu1B?=
 =?us-ascii?Q?DTs7saQ2aSlMjVPYfQPNXZoSMX1ep1VuLCRCXSlwXdmktQoGrv/iJFWXJhbb?=
 =?us-ascii?Q?4ulbKK2c6uRPM7kbsKEtcoV/UqJX3mY73Yz80dFDsCJVZaxkvMi0bZu29/Fc?=
 =?us-ascii?Q?EGwwquQgiZsswYOzbV7xnZqEutAM5mYFJ02uCrwmVvcMztL8a5CLL5OsKM2U?=
 =?us-ascii?Q?LURmPPzIcUJ2t536W6O8Vu+sDNvukDo317wu5n8IvNZw2XBZIjGqGAt0s33F?=
 =?us-ascii?Q?P9KmK1IViJdAn3qmylZsXYzRq5Jqc0Okk1yas0CIUPc2FRQHqSWrAUs/TirO?=
 =?us-ascii?Q?0atb8x920bZXWy0TEn4TpQJ3n7zyyapvLbiLWvUFXtjIbjBL8nwcMyWDrQ76?=
 =?us-ascii?Q?NCS+xsLM9de/cwux2uNXMFWfHqEH+W3sQ9C0lkKWGS761j3k6TCZZCr+Lq1z?=
 =?us-ascii?Q?Ah89wrnqrppLwFwmR+rN1ljWvn4fKDOniZrTYvgRC+/2ce4N/m3uWdQb5fp0?=
 =?us-ascii?Q?S3yNyMHk0gz6nrHy3FwXeIuTdgo5CSW+XjLrZX5D6TEg9tn7RfOGsSt+z5qt?=
 =?us-ascii?Q?hGQrpCJPHdV8VdpFtF8NS6zwd93cbLQ/T78lWKUd6a6Ud+jZP9jmJ3uD0Oz3?=
 =?us-ascii?Q?TljS4XFZxKcDWMgBlPTx0A30qtOpPkHgWpc9DJU0v/F1cWvC3j7BS5Y+GgPC?=
 =?us-ascii?Q?TCipcWgq9M2sbC2amjV92znFdwUz/s2jZ6ZvEK3MUZAtvuNOemD+1AbA4VEK?=
 =?us-ascii?Q?E9w7rZW/0qfkDA9uka57o/UkAYOoFDU9Sum6fCL3R57FV1U/AwEwASfNx2LQ?=
 =?us-ascii?Q?IXbPT3cK2SYjGf77EfBu0jRSFIIKPryqwiu2K6GhDLn9rsXkbNl/AXBSICy6?=
 =?us-ascii?Q?EA+N6NzN7uqNzrXkE5tN/iMBkkQiQjurq7TEVwjtalwGw5o4yd1I8abHGGep?=
 =?us-ascii?Q?SQNPzLcwyEtyrF5vzHfzSRUkYd19hISaw1ecEcsHY+MaxW949CQXYAcij7Nc?=
 =?us-ascii?Q?2EzWaDWkKkFmk/l1jNGWOvJuei9R+8cOLwMulX+NGoswUarb9lLiRd4vtMre?=
 =?us-ascii?Q?KkbVzE0DUeM1hnbX0XO3QBk2LL4ETzJFXVN4FglL9oA9knHKB5dHQecamSkZ?=
 =?us-ascii?Q?GLPL6WuSpAKS?=
X-Forefront-Antispam-Report-Untrusted:
 CIP:213.95.148.172;CTRY:DE;LANG:en;SCL:1;SRV:;IPV:CAL;SFV:NSPM;H:denue6es012.ebgroup.elektrobit.com;PTR:eth1-fw1-nbg6.eb.noris.de;CAT:NONE;SFS:(13230040)(704161411799003)(36860700016)(1800799024)(376014)(82310400026)(56012099003)(22082099003)(18002099003);DIR:OUT;SFP:1102;
X-Exchange-RoutingPolicyChecked:
 BpYVmuepbO3kGX2yPdaiVRVz2oh196cdc7m69nM90BaOmzy5W+R97z2q1Qx6W5Nu3t9n+SQb9AO2p1Ro4ZqQFkPSj5Dl0pdYm2Vn0DsZhKWq7ZUY2a9V24drimGxsw9iIhUY/xepkaQTyw0Cm38EMA4kOEYLtnxBf2tCldZvdZuBD7vHvpumTatNetB9l0skT4WOUhhVzHuXDLr+HJYssJcf+zNTdiTkFW/r3BE38SzeNXMVpUBNERa/k5JGZ86bR9KQ9Q2Gd2zKUp9zBKQPHhpbJKstUs62/4OEn47IpdlqVZTw0/AMjTQ9KNrZ/LCbnIaoaJGql/g2zzz895CRcw==
X-MS-Exchange-Transport-CrossTenantHeadersStamped: LV3PR08MB10496
X-MS-Exchange-SkipListedInternetSender:
 ip=[40.93.13.54];domain=DS2PR08CU001.outbound.protection.outlook.com
X-MS-Exchange-ExternalOriginalInternetSender:
 ip=[40.93.13.54];domain=DS2PR08CU001.outbound.protection.outlook.com
X-MS-Exchange-Transport-CrossTenantHeadersStripped:
 BN1PEPF00004689.namprd05.prod.outlook.com
X-MS-PublicTrafficType: Email
X-MS-Office365-Filtering-Correlation-Id-Prvs:
	2dd3d9a1-1442-49c1-0db8-08de9f246ed8
X-Microsoft-Antispam:
	BCL:0;ARA:13230040|704161411799003|376014|36860700016|1800799024|82310400026|14060799003|35042699022|156008|56012099003|18002099003|22082099003;
X-Microsoft-Antispam-Message-Info:
	=?us-ascii?Q?5vNSrxPwnMxJON5RQJyIA1GwRJFMYFVv+aBErSa9yRtHwCipbuxZsidyIrqe?=
 =?us-ascii?Q?+H9W08NaTnOxSjvwdBPBU1B3pokIPExy1f9432xNOGAOV0Afnr+e4gzBSTbL?=
 =?us-ascii?Q?NbeN4G4X0hPINgSc3ia4kc9pDpaaFEMblzzcemZXfoh7GAh1A+uDQ+PCnpwX?=
 =?us-ascii?Q?jEUeOBTcx2TgylLVuCDglpu2Gi3OTN7KxqbIWM8JcNKO4dqHTRj7jt1XJI1Y?=
 =?us-ascii?Q?ufiItyhSTGxm43sb7vSRQfb0BS7eQyq2jJVyR0W2glu+u39lbRy6euULFw0f?=
 =?us-ascii?Q?XhEhDihEEOkfuVV8rQapAe3t4HqKb/OrNQVY7o2CQ49yIwk3ukP3NFIytMKI?=
 =?us-ascii?Q?HfgKhmEl5r9RU0hqMEHp6LbtBvRz5qIJIy7lwwKtULpIB/XqqpKw2z3IX5qj?=
 =?us-ascii?Q?fNOO4DmHFVE7PhRmlkT1/rZpdwETiDTVbTQnffsRg34VwqV9tFXvUiS+dePB?=
 =?us-ascii?Q?bV+LeqcblKQ/rZ++U8e1PopfiND+h4UTFXtwkF2YYTXytgqEowr0t6EvJEJV?=
 =?us-ascii?Q?y5TEgytE7PpCA6KyohKPkCynFf/kDMVuv/pjIFhzobyVaaFvG1e2j12+K4/T?=
 =?us-ascii?Q?Cm4ikNSPY265ZhnHoq2qce8Nz+k1IUKBI717m7XENqJX4t7mSmZdOkChw0mb?=
 =?us-ascii?Q?Vb1IsikL3BeKGa32UwUCXVC+EQk2pgDJVxZwpVx7zENTknpai+ivIhyNCOua?=
 =?us-ascii?Q?Uf7zwoKnXDXGMpcB7n77ViJEJaWBglu+LQrSATWdFZIMmEcnvqvblRZ3VsnQ?=
 =?us-ascii?Q?UO7TtdgFVbrdt+3QtWHLO5zKhpeCDNLPDCMCCrv3Ev9WhDuPhhyDBioEAjLy?=
 =?us-ascii?Q?JIgw12WCPNJkT/Akv0D1nL7W+2x0lcs35bm/RQjIP/Xrw2W9rk4cAxw59z7J?=
 =?us-ascii?Q?6Vb7Q1rrKQUFlGv3pP5OakSTjjN6jgl++ZQaBbvajUK4rHbGNwhv0+efkJBO?=
 =?us-ascii?Q?urIgW1K+ONdVMo2UnX70ZxlVuNhEaROlSk29TSi9ZS2mKOW845R8jWlb0DKl?=
 =?us-ascii?Q?kNOeIMXibjdY7xOJyCzFBjvqMsnwcJM4V21HMoOtpmWmn+YUbedjM9K9tSi/?=
 =?us-ascii?Q?1MZkfbFpsemfs8UIsi2sosBxWj0PQvXmWrDfccyb63qeTprFPNOeXwfZQQTW?=
 =?us-ascii?Q?/K5OJZP94tXw?=
X-Forefront-Antispam-Report:
	CIP:4.79.107.243;CTRY:US;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:DS2PR08CU001.outbound.protection.outlook.com;PTR:mail-ds2pr08cu00106.outbound.protection.outlook.com;CAT:NONE;SFS:(13230040)(704161411799003)(376014)(36860700016)(1800799024)(82310400026)(14060799003)(35042699022)(156008)(56012099003)(18002099003)(22082099003);DIR:OUT;SFP:1102;
X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1
X-MS-Exchange-AntiSpam-MessageData-0:
	dO2g5M6zhX8U6aCIPU2TKZdw3p3JLXYuNsZrN/I5FhBKMXMpl8Id3kHB0FGKbKf61cECLYBrKJRyxWLS8eEzCEWm3vb27uDl7Vn2xOVYYcFeFCDrBpMsmEGl+G5do/l3+bY8/pbr8dXbpxUdIDsyXlCjQawULtfI7Bd+7N4JAWyr7np9fZnUrJkNZC9VCPPx3U1PS578Awzn6sh4u311ImRSReiojktUCrxM70m8lgeja3dr3WOUeBKhG5bSYTKnlmXUSh277dm1LFziWxrVhhDIa/OnezjgVQdp7ZlCWq+hFkhU291sJ1gWnKblqb+YK4o1n2wR2Jt54ki7C6Gi+JnKz93wkGsDvdiD4Dm/j14hldCB1Cno5O5EIwPOYYhc6Vqgyq4JlJQF9wiOMnYeq3gvRfqwDl1HCaP0guNFJk0ZNni0O6IiBe7GTMyZ0HFq
X-OriginatorOrg: elektrobit.com
X-MS-Exchange-CrossTenant-OriginalArrivalTime: 20 Apr 2026 21:33:26.8045
 (UTC)
X-MS-Exchange-CrossTenant-Network-Message-Id: 441271fa-6c5d-4e9e-a055-08de9f247586
X-MS-Exchange-CrossTenant-Id: e764c36b-012e-4216-910d-8fd16283182d
X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=e764c36b-012e-4216-910d-8fd16283182d;Ip=[4.79.107.243];Helo=[usbth1es003.ebgroup.elektrobit.com]
X-MS-Exchange-CrossTenant-AuthAs: Internal
X-MS-Exchange-CrossTenant-AuthSource: TreatMessagesAsInternal-BN1PEPF00004689.namprd05.prod.outlook.com
X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem
X-MS-Exchange-Transport-CrossTenantHeadersStamped: CY3PR08MB10695
X-purgate-ID: tlsNG-bad1c0/1776720812-91969A53-69D0BBE6/0/0
X-purgate-type: clean
X-purgate-size: 3182

This commit adds support for the altp2m_vcpu_initialise and
altp2m_vcpu_destroy functions on ARM. The x86-specific function calls,
altp2m_vcpu_disable_ve and altp2m_vcpu_update_p2m, are gated with #ifdef
CONFIG_X86.

This is commit 2/2 of the altp2m_vcpu_{initialise,destroy} phase.

Signed-off-by: Rose Spangler <Rose.Spangler@elektrobit.com>
---
v6: Introduced this patch.

    The equivalent to this patch in the v4/v5 was originally part of the
    patch named "arm/altp2m: Add HVMOP_altp2m_set_domain_state". In that
    patch, the check that the VCPU passed to altp2m_vcpu_initialise isn't
    the current CPU was removed. This was because ARM only implements the
    external altp2m mode, meaning the current VCPU could never be a VCPU of
    the guest for which altp2m is being initialized for. Therefore,
    skipping this check was a slight optimization. I've removed that here
    because altp2m_vcpu_initialise is only called during an HVMOP, and
    skipping this check on ARM (especially when x86 also implements the
    external altp2m mode) causes more confusion than the slight
    optimization is worth in my view.
---
 xen/common/altp2m.c      | 14 ++++++++++----
 xen/include/xen/altp2m.h |  2 --
 2 files changed, 10 insertions(+), 6 deletions(-)

diff --git a/xen/common/altp2m.c b/xen/common/altp2m.c
index e699b64678d8..7b80426c7798 100644
--- a/xen/common/altp2m.c
+++ b/xen/common/altp2m.c
@@ -11,6 +11,7 @@
 #include <xsm/xsm.h>
 
 #if defined(CONFIG_X86) && defined(CONFIG_HVM)
+#include <asm/hvm/hvm.h>
 #include <asm/hvm/nestedhvm.h>
 #endif
 
@@ -59,7 +60,6 @@ void altp2m_teardown(struct domain *d)
     XVFREE(d->altp2m_p2m);
 }
 
-#ifdef CONFIG_X86
 void altp2m_vcpu_initialise(struct vcpu *v)
 {
     if ( !v->domain->nr_altp2m )
@@ -68,10 +68,12 @@ void altp2m_vcpu_initialise(struct vcpu *v)
     if ( v != current )
         vcpu_pause(v);
 
-    vcpu_altp2m(v).p2midx = 0;
+    altp2m_set_vcpu_idx(v, 0);
     atomic_inc(&altp2m_get_altp2m(v)->active_vcpus);
 
+#ifdef CONFIG_X86
     altp2m_vcpu_update_p2m(v);
+#endif
 
     if ( v != current )
         vcpu_unpause(v);
@@ -90,15 +92,19 @@ void altp2m_vcpu_destroy(struct vcpu *v)
     if ( (p2m = altp2m_get_altp2m(v)) )
         atomic_dec(&p2m->active_vcpus);
 
+#ifdef CONFIG_X86
     altp2m_vcpu_disable_ve(v);
+#endif
 
-    vcpu_altp2m(v).p2midx = INVALID_ALTP2M;
+    altp2m_set_vcpu_idx(v, INVALID_ALTP2M);
+
+#ifdef CONFIG_X86
     altp2m_vcpu_update_p2m(v);
+#endif
 
     if ( v != current )
         vcpu_unpause(v);
 }
-#endif
 
 /*
  * altp2m operations are envisioned as being used in several different
diff --git a/xen/include/xen/altp2m.h b/xen/include/xen/altp2m.h
index 7defe6126563..37c875a52327 100644
--- a/xen/include/xen/altp2m.h
+++ b/xen/include/xen/altp2m.h
@@ -24,11 +24,9 @@ int altp2m_init(struct domain *d);
 /* Free altp2m views */
 void altp2m_teardown(struct domain *d);
 
-#ifdef CONFIG_X86
 /* Alternate p2m VCPU */
 void altp2m_vcpu_initialise(struct vcpu *v);
 void altp2m_vcpu_destroy(struct vcpu *v);
-#endif
 
 #ifdef CONFIG_ALTP2M
 
-- 
2.34.1



From xen-devel-bounces@lists.xenproject.org Mon Apr 20 21:33:40 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 20 Apr 2026 21:33:40 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1287876.1568320 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wEwFQ-00073y-5s; Mon, 20 Apr 2026 21:33:40 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1287876.1568320; Mon, 20 Apr 2026 21:33: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 1wEwFO-00070H-TT; Mon, 20 Apr 2026 21:33:38 +0000
Received: by outflank-mailman (input) for mailman id 1287876;
 Mon, 20 Apr 2026 21:33:34 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <Rose.Spangler@elektrobit.com>) id 1wEwFJ-000603-P5
 for xen-devel@lists.xenproject.org; Mon, 20 Apr 2026 21:33:33 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wEwFJ-00CD6F-3z
 for xen-devel@lists.xenproject.org; Mon, 20 Apr 2026 23:33:33 +0200
Received: from [10.42.69.7] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <Rose.Spangler@elektrobit.com>)
 id 69e69ba5-2eae-0a2a0a5409dd-0a2a4507a6d6-16
 for <xen-devel@lists.xenproject.org>; Mon, 20 Apr 2026 23:33:33 +0200
Received: from [52.101.46.141]
 (helo=CO1PR03CU002.outbound.protection.outlook.com)
 by tlsNG-ef75cf.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.1)
 (envelope-from <Rose.Spangler@elektrobit.com>)
 id 69e69bab-229c-0a2a45070019-34652e8d5ae9-3
 for <xen-devel@lists.xenproject.org>; Mon, 20 Apr 2026 23:33:32 +0200
Received: from BN9PR03CA0874.namprd03.prod.outlook.com (2603:10b6:408:13c::9)
 by DS0PR08MB9617.namprd08.prod.outlook.com (2603:10b6:8:1bc::14) with
 Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9818.32; Mon, 20 Apr
 2026 21:33:27 +0000
Received: from BN1PEPF00004687.namprd05.prod.outlook.com
 (2603:10b6:408:13c:cafe::15) by BN9PR03CA0874.outlook.office365.com
 (2603:10b6:408:13c::9) with Microsoft SMTP Server (version=TLS1_3,
 cipher=TLS_AES_256_GCM_SHA384) id 15.20.9791.48 via Frontend Transport; Mon,
 20 Apr 2026 21:33:27 +0000
Received: from usbth1es003.ebgroup.elektrobit.com (4.79.107.243) by
 BN1PEPF00004687.mail.protection.outlook.com (10.167.243.132) with Microsoft
 SMTP Server (version=TLS1_3, cipher=TLS_AES_256_GCM_SHA384) id 15.20.9791.48
 via Frontend Transport; Mon, 20 Apr 2026 21:33:27 +0000
Received: from usbth1es003 (localhost [127.0.0.1])
 by usbth1es003.ebgroup.elektrobit.com (Postfix) with SMTP id 4fzzHp2JRQz1wdW; 
 Mon, 20 Apr 2026 14:33:26 -0700 (PDT)
Received: from DM2PR04CU003.outbound.protection.outlook.com
 (mail-dm2pr04cu00303.outbound.protection.outlook.com [40.93.13.59])
 (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)
 key-exchange secp384r1 server-signature RSA-PSS (2048 bits) server-digest
 SHA256) (No client certificate requested)
 by usbth1es003.ebgroup.elektrobit.com (Postfix) with ESMTPS;
 Mon, 20 Apr 2026 14:33:26 -0700 (PDT)
Received: from BY1P220CA0017.NAMP220.PROD.OUTLOOK.COM (2603:10b6:a03:5c3::6)
 by SA2PR08MB6683.namprd08.prod.outlook.com (2603:10b6:806:111::6) with
 Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9818.33; Mon, 20 Apr
 2026 21:33:20 +0000
Received: from SJ1PEPF000026C9.namprd04.prod.outlook.com
 (2603:10b6:a03:5c3:cafe::89) by BY1P220CA0017.outlook.office365.com
 (2603:10b6:a03:5c3::6) with Microsoft SMTP Server (version=TLS1_3,
 cipher=TLS_AES_256_GCM_SHA384) id 15.20.9791.48 via Frontend Transport; Mon,
 20 Apr 2026 21:33:20 +0000
Received: from denue6es012.ebgroup.elektrobit.com (213.95.148.172) by
 SJ1PEPF000026C9.mail.protection.outlook.com (10.167.244.106) with Microsoft
 SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id
 15.20.9791.48 via Frontend Transport; Mon, 20 Apr 2026 21:33:19 +0000
Received: from ubuntu.localdomain (10.10.178.50) by
 denue6es012.ebgroup.elektrobit.com (10.243.160.140) with Microsoft SMTP
 Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id
 15.2.2562.35; Mon, 20 Apr 2026 23:33:17 +0200
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@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=elektrobit.com header.i="@elektrobit.com" header.h="From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck"; dkim=pass header.s=selector1 header.d=elektrobit.com header.i="@elektrobit.com" header.h="From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck"
ARC-Seal: i=2; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=pass;
 b=Jx3zq7ojskYhgTb5A00IkEvLoHnrzmF90+52nEYKiqw9H05ZSWfxnDfB8bcjFFgZAzqAbo7fquz8P0nPcMiQdMczIWt/eRFkSxUT9BsZ00e4JM1DSBFW0Um9MHZl9yGPJ8L4NFfi/DvG1eysz25b/JaobT2bRwMf4ZDd5WJpWLX4n9E1O+hXir2rvkj9Skkp5f8bNv0z7kIbZbAVBgeD+tS8fl7P2PefdaAcvz6ZaWAAMmOfbgd8VeB15mm8D5cDBP8a2R15yBjfkApN5SzOTPJoKWmOCAKISBSbrWvuLjd+fPNm/psW+tpRL3OhYbj/YVOJAJBwn2tb+3TkcPhrRg==
ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com;
 s=arcselector10001;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1;
 bh=GH0LWVdYxmiLC0JmFSzNr/w/rCUpu/RM3KGvWGbPMkA=;
 b=LXqs5u1o6ixgRbILiSEPSX+evGnriQoe10H7gHcqSxzkUlcEcHsPNhR4YOaUK3rgjJaskFDhPEIXI1C4+dVt4u5Wtp+YynAMc4dB4ac6iaF9FCACIKERjzIifqp+at0yUJLoaq0tWSni3xIN/p4a5m1gR1aInaR9+eu+eBoB3J7uVFDOODONHpGXpUjLtfT+XMOSdf/CazWp3+clJzxGQu6bzP7RFRFN46EJjH4z3CSXGAKgBdy5hfoukra2KQ1PpBvkKRjN6lssISuwohPHRVadHxn6foYI7TsGH6JqGJialXfvBuoRDPk84JHrxDLc3f2GBKKxIRB+RZuJWKHHMg==
ARC-Authentication-Results: i=2; mx.microsoft.com 1; spf=pass (sender ip is
 40.93.13.59) smtp.rcpttodomain=citrix.com smtp.mailfrom=elektrobit.com;
 dmarc=pass (p=quarantine sp=none pct=100) action=none
 header.from=elektrobit.com; dkim=pass (signature was verified)
 header.d=elektrobit.com; arc=pass (0 oda=1 ltdi=1
 spf=[1,1,smtp.mailfrom=elektrobit.com]
 dmarc=[1,1,header.from=elektrobit.com])
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=elektrobit.com;
 s=selector1;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck;
 bh=GH0LWVdYxmiLC0JmFSzNr/w/rCUpu/RM3KGvWGbPMkA=;
 b=SYPJDxN8cYcUoWs+g9talSj3U2eG9F7YWhjZ5ZD9T62mENLXp9VzEP7Ttgrv7nbYJvEanrH5e5V5iasJEO7XtovwIQNaPYCuH773BbAR4SK2QngS0P7q/mDngr1twsQzxr7RwADHgeszupBQuR39JEtZjLjb4LZhW4lrohQnX4U=
X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 40.93.13.59)
 smtp.mailfrom=elektrobit.com; dkim=pass (signature was verified)
 header.d=elektrobit.com;dmarc=pass action=none header.from=elektrobit.com;
Received-SPF: Pass (protection.outlook.com: domain of elektrobit.com
 designates 40.93.13.59 as permitted sender) receiver=protection.outlook.com;
 client-ip=40.93.13.59; helo=DM2PR04CU003.outbound.protection.outlook.com;
 pr=C
ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none;
 b=EytrO6GapLKFFO+LCZ3jyrZryPT0zvyBtpOypW5isZlRpnAT5qUJujBWjblIko7LvW8vuNQ7HEnTAPCYEE2CAJAUHfcm7iXgtae2oQMACi634Kh/X+xOGWR4BrCjdYM9QcjFggVdnvdgeMS/shv45OysVfw0NpzdXO+2hTmVsIXqClDuyCFZ5Pga4NfWmYeioX1cq8OJcMYDeRzgK+0udzy+x/uf4FwA5NtYaCCtrzQ6tKlyYXGU7BCdugdOpYw68jtaNtwRLfa3vi/KISx9Aeb9dSRIDfO5vWjRBZt9h2MGTfgyP6wSRUB14oFLfzyCxDBBfly9nXzsS9lXsonN0w==
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com;
 s=arcselector10001;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1;
 bh=GH0LWVdYxmiLC0JmFSzNr/w/rCUpu/RM3KGvWGbPMkA=;
 b=n+8+9He+uRsj/WpP/h0qTxLVFvCuvdPw++g5qRPbgoG4BEW8OH+Qo+U2m78Dbgh7giqtJx+29/Rtv5mRQgu20cY0mtpU3Pw7kj1MT5LI0PxCLQhGsvMfQEPk0sE+cW6LjmP/zGggyxMZ0Do8hH8eFh3juzmT2pFDrUGxcWUTqWq2vX6JvkwQkiEriNA8yFMr/jiiRuISm9391GqeSCsrpMZAsMiYbg25j8rGtQN2Qpvfq0lXdm04po2EBd4X/t2jywJbUa3oeMhi5/xuQrA2EKDpXhLigwoVR2SJWce4SCekv8uBqYTaJuxumourqVss1lRaUIvbGUTloLElDNjXZw==
ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass (sender ip is
 213.95.148.172) smtp.rcpttodomain=lists.xenproject.org
 smtp.mailfrom=elektrobit.com; dmarc=pass (p=quarantine sp=none pct=100)
 action=none header.from=elektrobit.com; dkim=none (message not signed);
 arc=none (0)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=elektrobit.com;
 s=selector1;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck;
 bh=GH0LWVdYxmiLC0JmFSzNr/w/rCUpu/RM3KGvWGbPMkA=;
 b=SYPJDxN8cYcUoWs+g9talSj3U2eG9F7YWhjZ5ZD9T62mENLXp9VzEP7Ttgrv7nbYJvEanrH5e5V5iasJEO7XtovwIQNaPYCuH773BbAR4SK2QngS0P7q/mDngr1twsQzxr7RwADHgeszupBQuR39JEtZjLjb4LZhW4lrohQnX4U=
X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 213.95.148.172)
 smtp.mailfrom=elektrobit.com; dkim=none (message not signed)
 header.d=none;dmarc=pass action=none header.from=elektrobit.com;
Received-SPF: Pass (protection.outlook.com: domain of elektrobit.com
 designates 213.95.148.172 as permitted sender)
 receiver=protection.outlook.com; client-ip=213.95.148.172;
 helo=denue6es012.ebgroup.elektrobit.com; pr=C
From: Rose Spangler <Rose.Spangler@elektrobit.com>
To: <xen-devel@lists.xenproject.org>
CC: Rose Spangler <Rose.Spangler@elektrobit.com>, Jan Beulich
	<jbeulich@suse.com>, Andrew Cooper <andrew.cooper3@citrix.com>,
	=?UTF-8?q?Roger=20Pau=20Monn=C3=A9?= <roger.pau@citrix.com>, Teddy Astie
	<teddy.astie@vates.tech>
Subject: [RFC PATCH v6 32/43] x86/altp2m: Add altp2m_set_view_visibility_locked
Date: Mon, 20 Apr 2026 17:31:55 -0400
Message-ID: <20260420213206.208750-33-Rose.Spangler@elektrobit.com>
X-Mailer: git-send-email 2.34.1
In-Reply-To: <20260420213206.208750-1-Rose.Spangler@elektrobit.com>
References: <20260420213206.208750-1-Rose.Spangler@elektrobit.com>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit
Content-Type: text/plain
X-Originating-IP: [10.10.178.50]
X-ClientProxiedBy: denue6es012.ebgroup.elektrobit.com (10.243.160.140) To
 denue6es012.ebgroup.elektrobit.com (10.243.160.140)
X-EOPAttributedMessage: 1
X-MS-Exchange-SkipListedInternetSender:
 ip=[213.95.148.172];domain=denue6es012.ebgroup.elektrobit.com
X-MS-TrafficTypeDiagnostic:
	SJ1PEPF000026C9:EE_|SA2PR08MB6683:EE_|BN1PEPF00004687:EE_|DS0PR08MB9617:EE_
X-MS-Office365-Filtering-Correlation-Id: cc4cf3b0-e184-4da0-e70b-08de9f2475b9
X-SM-outgoing: yes
X-MS-Exchange-SenderADCheck: 1
X-MS-Exchange-AntiSpam-Relay: 0
X-Microsoft-Antispam-Untrusted:
 BCL:0;ARA:13230040|376014|36860700016|82310400026|1800799024|56012099003|18002099003|22082099003;
X-Microsoft-Antispam-Message-Info-Original:
 =?us-ascii?Q?EUtwp3fOnlDOIYQV16wpw+4v4tTwwMvsYg9tViMLK5Ju8v82lXlIwASZbAX3?=
 =?us-ascii?Q?lg9zNCPN2JV3ZhLs42Ol9ei4y2uKWXiDoU+9fz+OaL2WttdTXsNkjb6gCZqo?=
 =?us-ascii?Q?bL+ZYq4PLpGUqfDU3NF/jzUcSlQ15gzDK15jhBNAkYmhHQXmF1IDJCWYzEGo?=
 =?us-ascii?Q?c3NE9vaWc1GfzExxGOugJdsH+zZs1PqfF6olStr/6u/QkdtRTtYHI3Voj3sY?=
 =?us-ascii?Q?SNjwDdkhDl9tdz6LuFvb7tPzEy6UsHvpU6Vt+g2XuJxQOemORnf49YgOzQPB?=
 =?us-ascii?Q?+33ZlcqJHDOQ+ow7khx3QsIYZ2qoQrFz/lJ0Nnqo7USIZaG/uedgCaENLwP3?=
 =?us-ascii?Q?gh3HafaPtvr0oHAO4HEhKKV3kFy1iPgydc6wj1cgKpO34jFE4NnOps5lKkfc?=
 =?us-ascii?Q?rrvyuGkSmOo/kc6Tfv45RXjogUkYBDMpnvZPGSf7QwlX6LxdV4cOEuQB1WAi?=
 =?us-ascii?Q?5XfDqrXCqBVuNUQ0Yscl7g/wf7s9K0D8BRyCsHBYzPLMDnbacWT0nF/bxJQ1?=
 =?us-ascii?Q?e2yxbyFvzl1Ssos7sOGPyMp2SAL2fIUpUorAUUBemAjEwoJ0JEtLbgoB4c32?=
 =?us-ascii?Q?9U6lQ0uacg+L/sXWa2xIqtExqIyVXGnaKt8Zu7v4oXDcQ3tQTNT4cVonPcr0?=
 =?us-ascii?Q?IV2s6h2em3S+DEmR8YZyHtLsHh7gQ1Vb7Gt0DBYFu8+3BDV8jx5vmgs+ZXkt?=
 =?us-ascii?Q?DFKRizy24LbShdlBzdOKQjmTe4ibk1uTbapsL23z89JVHxxEicZ4+o28Sc8n?=
 =?us-ascii?Q?VMYHmG6s8Dsh2Cq2A1RSXbbqOxI4LDjfHRPxXMrcYaIf8CBYCCbOgEp/DUNX?=
 =?us-ascii?Q?V9USt5v07DqpmxDwcnLQH+RQqOWskbfOHJ8IVfJ1OkoYkotdO/HBfV8Z870P?=
 =?us-ascii?Q?4tD6CjDbjviXnwjsIyCuRc6DTxBAMT/IiXMlBY7xppWrgVp+t/40j2+TE7s6?=
 =?us-ascii?Q?oiQ58QVfCsJKHJs0gJMkm1p9Gon0va2sBnGq5sJOKUA2C8VNShejVk2oyY0n?=
 =?us-ascii?Q?i93vwkUyDiSVnk5KYMM23HsKIE1uDeZDMj2zuk3n/Ef6YpTAPAokfbULsmh/?=
 =?us-ascii?Q?Wp2+hs9i38Aibsqc1N+M8abXgE1Zcwb8m8ztd6/dmBkgQYYUN4GdE20FjlPd?=
 =?us-ascii?Q?LUCWFJdPaxX1s0+zrcm6iRH7NDGyTNDMPw=3D=3D?=
X-Forefront-Antispam-Report-Untrusted:
 CIP:213.95.148.172;CTRY:DE;LANG:en;SCL:1;SRV:;IPV:CAL;SFV:NSPM;H:denue6es012.ebgroup.elektrobit.com;PTR:eth1-fw1-nbg6.eb.noris.de;CAT:NONE;SFS:(13230040)(376014)(36860700016)(82310400026)(1800799024)(56012099003)(18002099003)(22082099003);DIR:OUT;SFP:1102;
X-Exchange-RoutingPolicyChecked:
 irB/aZemqRxvuDaAyO8jlv5sj/HFejFhPTeXG53XxXz/bnr258pnlxZTo7RcfWKRW0tJV571jUGWTUs5aBhAU8fTQVI+smeCMIEZ0F3VSXPKTHsazoTw+RjjFK5gHosNl52kjtrPeon1KTal2AS2orhz0WKIK8xigAqpTgOGq3SUGUzxCxP8ApNIBCA/AG3cVwvC9aXllY1iMaYsIWTez8caWFSThMFEusJTbwYCgTk02EnHPKBiqmeokvKbmej+FWezS5GCSeFDvEjAqUYZK4KVd5Sc3ksFURqSPvh16WZwKoAfcS6x+s3AbfYgB8eja6HqmzCKXBR7j1Q0sUEJ8g==
X-MS-Exchange-Transport-CrossTenantHeadersStamped: SA2PR08MB6683
X-MS-Exchange-SkipListedInternetSender:
 ip=[40.93.13.59];domain=DM2PR04CU003.outbound.protection.outlook.com
X-MS-Exchange-ExternalOriginalInternetSender:
 ip=[40.93.13.59];domain=DM2PR04CU003.outbound.protection.outlook.com
X-MS-Exchange-Transport-CrossTenantHeadersStripped:
 BN1PEPF00004687.namprd05.prod.outlook.com
X-MS-PublicTrafficType: Email
X-MS-Office365-Filtering-Correlation-Id-Prvs:
	6d674445-3c29-44ec-3925-08de9f247151
X-Microsoft-Antispam:
	BCL:0;ARA:13230040|36860700016|1800799024|376014|14060799003|35042699022|82310400026|156008|22082099003|18002099003|56012099003;
X-Microsoft-Antispam-Message-Info:
	=?us-ascii?Q?1hUhlK069mri6VGhl5V42W7Wgx6CGK+4IuHBN3H4y5pgqbfsN8+CKQY+5soP?=
 =?us-ascii?Q?BzJLjRbG3xTQ1BCghSiBAm0Oy/VpyMcZ+MvU1WIf4zUKMdKBFHdTQf7paJpL?=
 =?us-ascii?Q?xcof6FJy1Xry3sAOHXnRXsYjz/rOz3kuCCD5Q3o0staVFWyCbqrPMepf7RmH?=
 =?us-ascii?Q?wKDriiNT3l0fioWaDsJVXXui4/7Yi5R+zOszldjYGkans0LjI8LgEgjH70RO?=
 =?us-ascii?Q?pFP1oOBe6LqYHI/Ct5+io5H30kkEDY8BChtHPc6Mn6zPDj2FL5vJ0OIKpWh+?=
 =?us-ascii?Q?J/3tlmE/p95XMwurIEBKWkaZWDhV1VJH9lxzjUu3bDTZZqjY6pqeO5B658h/?=
 =?us-ascii?Q?/0TB4eKW3lb+YSQ6RdzSMyDdaCy/WUwU5ZCmUniZgGh9WZLcHrIzeBfxbZgD?=
 =?us-ascii?Q?AfRkbMjm94IsLwkg2AYQ3crd9grsW/yZLLcouPAPXEnoZxgsHsSMIJ3pO+7u?=
 =?us-ascii?Q?ZSrt47JX+DiMR3zTeJV6Jl7tNZI0uk2UcPcug24isadV1b3gW97qd936BvcR?=
 =?us-ascii?Q?ETOc/4P1H33me1x+b0Bqtd2qpF1cDDB83wo553BpG1pG2qxBbfpmMVSGdv44?=
 =?us-ascii?Q?tHZYlTLqh8kEipC+kBZjHzEHmWihi0K2LX913+A1kTn+F7rtbli8D8/iAyLr?=
 =?us-ascii?Q?ZGDV/+UTi0vhS4sro5WZaC+c4FefvuC/oluE2Ij7xXD8u0ZpfNtItWl4rAQg?=
 =?us-ascii?Q?g8fg0PdbBq5q+bssoervtA1r9T+QVqA04+WmbrENq0HP46KBSc6ATM2FYPvU?=
 =?us-ascii?Q?DFUXVySe6Jpaa5RMiv+83bXEwBzUhUgOE9KjWuhkFHFISQqM52o5RbuJHepA?=
 =?us-ascii?Q?KVkeYHhCvw2W1GCDy9qjv4fUKxfK7WRJSJ8DGeM+2QYkfbDQjUCULlC7RnBZ?=
 =?us-ascii?Q?YrorBMHGZuU9iK4is3QdoN5ob0UXIUK8zWsPI9/Qz4nUjFug97k66o+gjA4M?=
 =?us-ascii?Q?/bdk5tKkZ2UNvsyKRf0oOMW+6UQRUuoqG+dNGcR/0HXcOjE7vimqbG4WtQR2?=
 =?us-ascii?Q?W11X7eLGaZzpaCd18VGNXbhY0itzDOxidjpqhlOmtsGV2SmJgw3vx2qPdP4s?=
 =?us-ascii?Q?MHx9nf8YHkjMlJKEl28BcG4w3cVvBGXWObhJ+Gp3Z5gTQnLezZIrED9lmFsz?=
 =?us-ascii?Q?X0A7wjoDomRL0VCVVhIbc4C3Z7EwbCcupg=3D=3D?=
X-Forefront-Antispam-Report:
	CIP:4.79.107.243;CTRY:US;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:DM2PR04CU003.outbound.protection.outlook.com;PTR:mail-dm2pr04cu00303.outbound.protection.outlook.com;CAT:NONE;SFS:(13230040)(36860700016)(1800799024)(376014)(14060799003)(35042699022)(82310400026)(156008)(22082099003)(18002099003)(56012099003);DIR:OUT;SFP:1102;
X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1
X-MS-Exchange-AntiSpam-MessageData-0:
	Nhp6YUWy2TKi+AEGF4P4Ifj6TEP8P7UBokm6jK6L/9bSEdkYBHICgJnINSVcJnEf8macmbjVPsv8vY4wC5vDcSA0IDYFhNDSBlvuJQXSnT/hCr4Dj16qy3XS9Qfib8k7HLXM+Utb7eirT5VbYbodyDyogWAA7F83ob7FCEBReLqNIF1nRVbV0cARDSBK3yZbYO1pvfRkxVjX5N6MOmtVO7wn+diLI173+INgMI1ltB7NMq7OGAtK+Vvt9+RAMzNiScgK+IN8ui8LUWQOWVZCUMurVjUF5bYoh0pYTB66zrEo1+GHd7uJ+884qAMdm6VB9OaiqDplcgbsjWCXjpY9Wmg0Tdt7tY3AFqbZpkC4H1IxelKBTL7Rb8zmSbQSRHxVgN4c7N+UpbqcPei4t1oV9G6d8V+sbqH3C6ZMNpjjgMZ20JM1IcTGCWKSCXonY2/L
X-OriginatorOrg: elektrobit.com
X-MS-Exchange-CrossTenant-OriginalArrivalTime: 20 Apr 2026 21:33:27.1875
 (UTC)
X-MS-Exchange-CrossTenant-Network-Message-Id: cc4cf3b0-e184-4da0-e70b-08de9f2475b9
X-MS-Exchange-CrossTenant-Id: e764c36b-012e-4216-910d-8fd16283182d
X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=e764c36b-012e-4216-910d-8fd16283182d;Ip=[4.79.107.243];Helo=[usbth1es003.ebgroup.elektrobit.com]
X-MS-Exchange-CrossTenant-AuthAs: Internal
X-MS-Exchange-CrossTenant-AuthSource: TreatMessagesAsInternal-BN1PEPF00004687.namprd05.prod.outlook.com
X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem
X-MS-Exchange-Transport-CrossTenantHeadersStamped: DS0PR08MB9617
X-purgate-ID: tlsNG-ef75cf/1776720813-16A61C48-57281748/0/0
X-purgate-type: clean
X-purgate-size: 2493

This commit splits the altp2m_set_view_visibility into two functions, where
the altp2m_set_view_visibility_locked variant has the preconditions that
the altp2m lock is held. This makes it possible to change a view's
visibility in an architecture independent way in code that already holds
the altp2m lock (namely, altp2m_flush).

This is commit 3/5 of the altp2m view validity/visibility phase.

Signed-off-by: Rose Spangler <Rose.Spangler@elektrobit.com>
---
v6: Introduced this patch.
---
 xen/arch/x86/include/asm/altp2m.h |  4 ++++
 xen/arch/x86/mm/altp2m.c          | 14 +++++++++++---
 2 files changed, 15 insertions(+), 3 deletions(-)

diff --git a/xen/arch/x86/include/asm/altp2m.h b/xen/arch/x86/include/asm/altp2m.h
index 56ae19b24b42..99c4cfa5a68b 100644
--- a/xen/arch/x86/include/asm/altp2m.h
+++ b/xen/arch/x86/include/asm/altp2m.h
@@ -106,6 +106,10 @@ int altp2m_change_gfn(struct domain *d, unsigned int idx, gfn_t old_gfn,
 int altp2m_set_view_visibility(struct domain *d, unsigned int altp2m_idx,
                                uint8_t visible);
 
+/* Set a specific p2m view visibility (with lock already held) */
+int altp2m_set_view_visibility_locked(struct domain *d, unsigned int altp2m_idx,
+                                      uint8_t visible);
+
 /*
  * Looks up altp2m entry. If the entry is not found it looks up the entry in
  * hostp2m.
diff --git a/xen/arch/x86/mm/altp2m.c b/xen/arch/x86/mm/altp2m.c
index 0542e3ef9196..8672b8c061d3 100644
--- a/xen/arch/x86/mm/altp2m.c
+++ b/xen/arch/x86/mm/altp2m.c
@@ -685,9 +685,19 @@ int p2m_get_suppress_ve(struct domain *d, gfn_t gfn, bool *suppress_ve,
 int altp2m_set_view_visibility(struct domain *d, unsigned int altp2m_idx,
                                uint8_t visible)
 {
-    int rc = 0;
+    int rc;
 
     altp2m_lock(d);
+    rc = altp2m_set_view_visibility_locked(d, altp2m_idx, visible);
+    altp2m_unlock(d);
+
+    return rc;
+}
+
+int altp2m_set_view_visibility_locked(struct domain *d, unsigned int altp2m_idx,
+                                      uint8_t visible)
+{
+    int rc = 0;
 
     if ( !altp2m_is_eptp_valid(d, altp2m_idx) )
         rc = -EINVAL;
@@ -698,8 +708,6 @@ int altp2m_set_view_visibility(struct domain *d, unsigned int altp2m_idx,
         d->arch.altp2m_visible_eptp[array_index_nospec(altp2m_idx, MAX_EPTP)] =
             mfn_x(INVALID_MFN);
 
-    altp2m_unlock(d);
-
     return rc;
 }
 
-- 
2.34.1



From xen-devel-bounces@lists.xenproject.org Mon Apr 20 21:33:42 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 20 Apr 2026 21:33:42 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1287892.1568326 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wEwFR-0007TJ-Uq; Mon, 20 Apr 2026 21:33:41 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1287892.1568326; Mon, 20 Apr 2026 21:33: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 1wEwFQ-0007NN-PB; Mon, 20 Apr 2026 21:33:40 +0000
Received: by outflank-mailman (input) for mailman id 1287892;
 Mon, 20 Apr 2026 21:33:38 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <Rose.Spangler@elektrobit.com>) id 1wEwFN-0006jh-8m
 for xen-devel@lists.xenproject.org; Mon, 20 Apr 2026 21:33:37 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wEwFM-0054Hn-LV
 for xen-devel@lists.xenproject.org; Mon, 20 Apr 2026 23:33:36 +0200
Received: from [10.42.69.4] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <Rose.Spangler@elektrobit.com>)
 id 69e69b93-5cb7-0a2a0a5109dd-0a2a4504dc78-34
 for <xen-devel@lists.xenproject.org>; Mon, 20 Apr 2026 23:33:36 +0200
Received: from [52.101.62.80]
 (helo=DM5PR21CU001.outbound.protection.outlook.com)
 by tlsNG-ebf023.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.1)
 (envelope-from <Rose.Spangler@elektrobit.com>)
 id 69e69baf-1dec-0a2a45040019-34653e5036d1-3
 for <xen-devel@lists.xenproject.org>; Mon, 20 Apr 2026 23:33:36 +0200
Received: from CH2PR16CA0011.namprd16.prod.outlook.com (2603:10b6:610:50::21)
 by BY3PR08MB7169.namprd08.prod.outlook.com (2603:10b6:a03:36a::20)
 with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9818.33; Mon, 20 Apr
 2026 21:33:31 +0000
Received: from CH2PEPF00000141.namprd02.prod.outlook.com
 (2603:10b6:610:50:cafe::9e) by CH2PR16CA0011.outlook.office365.com
 (2603:10b6:610:50::21) with Microsoft SMTP Server (version=TLS1_3,
 cipher=TLS_AES_256_GCM_SHA384) id 15.20.9791.48 via Frontend Transport; Mon,
 20 Apr 2026 21:33:30 +0000
Received: from usbth1es003.ebgroup.elektrobit.com (4.79.107.243) by
 CH2PEPF00000141.mail.protection.outlook.com (10.167.244.74) with Microsoft
 SMTP Server (version=TLS1_3, cipher=TLS_AES_256_GCM_SHA384) id 15.20.9791.48
 via Frontend Transport; Mon, 20 Apr 2026 21:33:30 +0000
Received: from usbth1es003 (localhost [127.0.0.1])
 by usbth1es003.ebgroup.elektrobit.com (Postfix) with SMTP id 4fzzHs4LnLz1wdN; 
 Mon, 20 Apr 2026 14:33:29 -0700 (PDT)
Received: from DM5PR08CU004.outbound.protection.outlook.com
 (mail-dm5pr08cu00405.outbound.protection.outlook.com [40.93.13.101])
 (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)
 key-exchange secp384r1 server-signature RSA-PSS (2048 bits) server-digest
 SHA256) (No client certificate requested)
 by usbth1es003.ebgroup.elektrobit.com (Postfix) with ESMTPS;
 Mon, 20 Apr 2026 14:33:29 -0700 (PDT)
Received: from BY1P220CA0022.NAMP220.PROD.OUTLOOK.COM (2603:10b6:a03:5c3::14)
 by CYXPR08MB9478.namprd08.prod.outlook.com (2603:10b6:930:e0::22)
 with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9818.33; Mon, 20 Apr
 2026 21:33:21 +0000
Received: from SJ1PEPF000026C9.namprd04.prod.outlook.com
 (2603:10b6:a03:5c3:cafe::f1) by BY1P220CA0022.outlook.office365.com
 (2603:10b6:a03:5c3::14) with Microsoft SMTP Server (version=TLS1_3,
 cipher=TLS_AES_256_GCM_SHA384) id 15.20.9791.48 via Frontend Transport; Mon,
 20 Apr 2026 21:33:21 +0000
Received: from denue6es012.ebgroup.elektrobit.com (213.95.148.172) by
 SJ1PEPF000026C9.mail.protection.outlook.com (10.167.244.106) with Microsoft
 SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id
 15.20.9791.48 via Frontend Transport; Mon, 20 Apr 2026 21:33:20 +0000
Received: from ubuntu.localdomain (10.10.178.50) by
 denue6es012.ebgroup.elektrobit.com (10.243.160.140) with Microsoft SMTP
 Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id
 15.2.2562.35; Mon, 20 Apr 2026 23:33:18 +0200
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@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=elektrobit.com header.i="@elektrobit.com" header.h="From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck"; dkim=pass header.s=selector1 header.d=elektrobit.com header.i="@elektrobit.com" header.h="From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck"
ARC-Seal: i=2; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=pass;
 b=VZ/IFfy3AVMQT5J69G8IdO3rqcWYtkW5osvNRNE9n6nSSeDsJ3uXiZ6cm6YQ6uxERBxYYKUNNdVHRq21sU7e5ziVxTvGtDkCQLQ5yopliRYtw0v1U/t1bUGUFFxXS6gkETvGbYEY2+bGpSwzbF415dvHzAfwaJR5ivyTThs+1rgcqcDW1BHTE9/FnB9OVoeP699yG6gocUb9KecOlQBVDUndYN2o9Rk/ip+W04+hdfMWRnXBgo6W7Cbwma+X4i1BOW6SxmnTe1CSTLlZRqYphgF/+wwIzVCvJXN2WcYLyekON3zBQvXKWxrg+0+AESaq4rjn0Lw11sJEYWoV3mylRw==
ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com;
 s=arcselector10001;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1;
 bh=u057BdoXIkdDPBzf9f3VOEcMsy8wtSGiXp7V2fStTSo=;
 b=kn4B0U8snqaHA+dlRIERnHp2Rn4mvgd20XFU9Ge6MbtQmJueqU5wEJHYRjXSUAuMbsUWelpdepjSlMaqKSMUcvviePzDGkJW3a4V7ckCeThCm+nPYHK508kg8Bz3zNi0rscSbzRmI8key4qCCVTHKgS7TsqGCtvCL8LSPVeA+zqNhxkJo2f7zNsBZNT84L09TY6VEAB2YLAcFXtXVJcv9lzuFkVnWQG8X8fFwIZvLR1/OtWz8mdq3cqOxEe/mPsQE8PjHs0gdbB+JRnVJdgMEACB51O6Y3OYuWcLCJk08R1OVjZux3v+L5EiK3cy4yhOoARlczlb6EhISFvPht9Pwg==
ARC-Authentication-Results: i=2; mx.microsoft.com 1; spf=pass (sender ip is
 40.93.13.101) smtp.rcpttodomain=amd.com smtp.mailfrom=elektrobit.com;
 dmarc=pass (p=quarantine sp=none pct=100) action=none
 header.from=elektrobit.com; dkim=pass (signature was verified)
 header.d=elektrobit.com; arc=pass (0 oda=1 ltdi=1
 spf=[1,1,smtp.mailfrom=elektrobit.com]
 dmarc=[1,1,header.from=elektrobit.com])
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=elektrobit.com;
 s=selector1;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck;
 bh=u057BdoXIkdDPBzf9f3VOEcMsy8wtSGiXp7V2fStTSo=;
 b=RdVdzd9ONJCqBkuM6lbUiy8AF3RSe7p5Pld2nmwqJKxT12uEf/xI5/YHZTelOTa93htIpRXRJAzts6MlpuI58T8Dth2WZR/X7KQIlBsbWOfffZOtYNa8bXuNniyBvz/Kx8On3ziOiUgb77yY9tPnAjD0yVD7NpwHutCWgeRJhSk=
X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 40.93.13.101)
 smtp.mailfrom=elektrobit.com; dkim=pass (signature was verified)
 header.d=elektrobit.com;dmarc=pass action=none header.from=elektrobit.com;
Received-SPF: Pass (protection.outlook.com: domain of elektrobit.com
 designates 40.93.13.101 as permitted sender) receiver=protection.outlook.com;
 client-ip=40.93.13.101; helo=DM5PR08CU004.outbound.protection.outlook.com;
 pr=C
ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none;
 b=ZdL0n1c4jXKWI/a1Li9ufiu4B+MKjzXoO2rHUbuR0itwPIN19N6wwK9CMEUnK2sff8KnEIs7FncRZnpOnJ1hKt7LtkwWnkAKR5eYvkwnFBmcvOdgtXikEFmnMWXqgsU4KDSDciM4EYS3EQzqimAVOgQSgy808z8ghcJ9p9TCicLqQatEleEch5bKULaZdfLBZKIgX7vyNhgr3L36wXJCUD99Dt+kwOYnJr9p9WbOpLLKlXXA24gSyZRMNyBxNCQ56k94R1FGNU+F/i/qAXVat26DTyrP1WTcGF/jV1ykmVm9ItT9tzlnI3oRz0LtRzGfrwBKQEL1t3FfUpfThR9LNg==
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com;
 s=arcselector10001;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1;
 bh=u057BdoXIkdDPBzf9f3VOEcMsy8wtSGiXp7V2fStTSo=;
 b=cewLUSbQqc232dKEHvYMmbwSSacMDEeCCSjMo7ulCkRPs828RWJg+PdhjFZpZ/KiKSDDR+bGjXPH1d2xpgllTODsVT9IHmybldPfTvgX/SQg+EYux7Z5fRgIX+2pv7f/jubXpr/Hq8sV5chS6H2eIG+ej5K+SVV2SHDMnn9Nj/FFlTw+WIy7S0yYUO1pDIcztOTvE3oECt6O4BsagTqrRF8YO6g4VBpr7ov4BAwPbH88JI0Iw/0lBUsR64rBnL84No57SLtKS15C40elmcpL3HJnLQUsSz3StVKZLMwQjVahmqJgi0lMK12w+vaNUj8/oXZO6KqRqQVqfEKy0tB6ew==
ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass (sender ip is
 213.95.148.172) smtp.rcpttodomain=lists.xenproject.org
 smtp.mailfrom=elektrobit.com; dmarc=pass (p=quarantine sp=none pct=100)
 action=none header.from=elektrobit.com; dkim=none (message not signed);
 arc=none (0)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=elektrobit.com;
 s=selector1;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck;
 bh=u057BdoXIkdDPBzf9f3VOEcMsy8wtSGiXp7V2fStTSo=;
 b=RdVdzd9ONJCqBkuM6lbUiy8AF3RSe7p5Pld2nmwqJKxT12uEf/xI5/YHZTelOTa93htIpRXRJAzts6MlpuI58T8Dth2WZR/X7KQIlBsbWOfffZOtYNa8bXuNniyBvz/Kx8On3ziOiUgb77yY9tPnAjD0yVD7NpwHutCWgeRJhSk=
X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 213.95.148.172)
 smtp.mailfrom=elektrobit.com; dkim=none (message not signed)
 header.d=none;dmarc=pass action=none header.from=elektrobit.com;
Received-SPF: Pass (protection.outlook.com: domain of elektrobit.com
 designates 213.95.148.172 as permitted sender)
 receiver=protection.outlook.com; client-ip=213.95.148.172;
 helo=denue6es012.ebgroup.elektrobit.com; pr=C
From: Rose Spangler <Rose.Spangler@elektrobit.com>
To: <xen-devel@lists.xenproject.org>
CC: Rose Spangler <Rose.Spangler@elektrobit.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: [RFC PATCH v6 33/43] arm/altp2m: Add altp2m_set_view_visibility{,_locked} support
Date: Mon, 20 Apr 2026 17:31:56 -0400
Message-ID: <20260420213206.208750-34-Rose.Spangler@elektrobit.com>
X-Mailer: git-send-email 2.34.1
In-Reply-To: <20260420213206.208750-1-Rose.Spangler@elektrobit.com>
References: <20260420213206.208750-1-Rose.Spangler@elektrobit.com>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit
Content-Type: text/plain
X-Originating-IP: [10.10.178.50]
X-ClientProxiedBy: denue6es012.ebgroup.elektrobit.com (10.243.160.140) To
 denue6es012.ebgroup.elektrobit.com (10.243.160.140)
X-EOPAttributedMessage: 1
X-MS-Exchange-SkipListedInternetSender:
 ip=[213.95.148.172];domain=denue6es012.ebgroup.elektrobit.com
X-MS-TrafficTypeDiagnostic:
	SJ1PEPF000026C9:EE_|CYXPR08MB9478:EE_|CH2PEPF00000141:EE_|BY3PR08MB7169:EE_
X-MS-Office365-Filtering-Correlation-Id: 15c18219-52ba-4382-286c-08de9f24778d
X-SM-outgoing: yes
X-MS-Exchange-SenderADCheck: 1
X-MS-Exchange-AntiSpam-Relay: 0
X-Microsoft-Antispam-Untrusted:
 BCL:0;ARA:13230040|82310400026|36860700016|376014|1800799024|56012099003|22082099003|18002099003;
X-Microsoft-Antispam-Message-Info-Original:
 =?us-ascii?Q?uO31j7QrqPDesW1KwpMvauoMy2lKh1DCAR+b3l490bJvyWZ0Kyw99OeZL4Ao?=
 =?us-ascii?Q?vAHAbpSsk0rLfH74xQG4RyEHyxpbKcjdZWQ0SZ7S3yl/ao5gajeJ0XZ/cTew?=
 =?us-ascii?Q?vxY+dpcDKjf6WURN/nrhJZHojQdBE9Bxzs88lwWRn2ghlTDRC0ESyqCmC5sq?=
 =?us-ascii?Q?dCzaADUw7/8j5NnDW3rstPQ+/9zpe//w/S4cMG8ew//b0wO3x0vjCCz4uSQT?=
 =?us-ascii?Q?As2V2nfyG59j6OWXGji8dQR27U736oN8J5TO77JMECiEBjkEFc4/qLJP+Ke7?=
 =?us-ascii?Q?ADCslzgsJhn8rxwfum/Rkw4m+az6Xz30srdJqWQnKhN5aKN7hzeC1y5kBkVL?=
 =?us-ascii?Q?rwHoR9G3pRhJiH+6iqLwWBPmLCFvZ334I6y9hvn5WaXBcWvchlUQws8/zs+c?=
 =?us-ascii?Q?f7FqjPSbB3UOr8JHSUB1NXFs9+XQeioGn5Q3vHgOncxA1cbM3nl1NVd38XBH?=
 =?us-ascii?Q?cHArM9a5Ftp9Lok4AU/92y2BCWglgaILLfvZn3Z6oBLAIa5X5ubvm2IAnzk1?=
 =?us-ascii?Q?W7GC+BacdtFJ6RqGG4+JccmY9IKOZ9K20i8ykgOEjHIOFoXfzElXwlHYlhJG?=
 =?us-ascii?Q?/Qve0/yP1yMQgtoQ4qVV6fYtk2fOctbZDs1emtqzYUjNNiZz8+uC1ZdDAexj?=
 =?us-ascii?Q?oWU9HjxoPKb+4ueNiZxuOV1rzcoiSkPZyOeD9I1FMPwCcM8CkUIbQLpcDTmI?=
 =?us-ascii?Q?t5CN2I7GZwpmBqUCnMHSJXykRv545xHPg+VWQHKWEnlA/B9csR0JV3yN8kqn?=
 =?us-ascii?Q?FtvFgGcoXGJyvmLIoaFVsVYaYn41NCmiPCSV1Go2UO3VZMDdQAf9za1UEXVa?=
 =?us-ascii?Q?z9E+arHi7MaYhIBwClKGtoLGSDUZPrjr+FuTwxgvVfm6jrQAJny3FXoqUiGT?=
 =?us-ascii?Q?vsmEgzoBd3wG9HCZuszfgUHUm6YXtmGzY8cnqmTqyr1zt46JtlJUjPa1TZMI?=
 =?us-ascii?Q?PwQbItzsDMbmgnQxyLPnVS45V2VtA5nskwgLJCbvnIK3PRFw+a6/4uQVAWzR?=
 =?us-ascii?Q?GPz9xBdTnXLeq+8Y6PP8cqr3yoxfvuiVkYYt6cIRbn31JjE9XVkL7pWwrGJ+?=
 =?us-ascii?Q?ZkNEaMUW1Gkk2HujqAMfL4UgbRaR6xbBWh2iFKxPUt5B0DncmV7AT2uLRJwY?=
 =?us-ascii?Q?ZDxmTSLwqGACzpZBkMsqxLRuxrRaMvCpGQ=3D=3D?=
X-Forefront-Antispam-Report-Untrusted:
 CIP:213.95.148.172;CTRY:DE;LANG:en;SCL:1;SRV:;IPV:CAL;SFV:NSPM;H:denue6es012.ebgroup.elektrobit.com;PTR:eth1-fw1-nbg6.eb.noris.de;CAT:NONE;SFS:(13230040)(82310400026)(36860700016)(376014)(1800799024)(56012099003)(22082099003)(18002099003);DIR:OUT;SFP:1102;
X-Exchange-RoutingPolicyChecked:
 FgoRnI25d4tgbef+TNYe9HLYFfswcY9aPshaLMb9lUfpeEo9CTWfKLicA6B7kxLRivBIftyHuGzSeyyjVmf4Qun9ETzcLtHVi681KbeD4Uu1AWC+/ou7IcpRQF1iN78wyIKGMEOlkS4kLsuFy3tZ0q/1Yz3qy4jSCrtigIkbJgbollRKzKLev8Yk5UmYE3EMwAAkL9pjF9n4In9OIC4u8cxYH1fiaZejv/e9Z0YXoVehGEArC4kcAC/1DCjHVq5JRdBN4liUuys4Q84LaoolcVkV8//SUDHwibjIH17aQSzi5zp0ZMiFaVJ3ovT+SbqD2thC/Z8K0W50gmCZ8pdbAQ==
X-MS-Exchange-Transport-CrossTenantHeadersStamped: CYXPR08MB9478
X-MS-Exchange-SkipListedInternetSender:
 ip=[40.93.13.101];domain=DM5PR08CU004.outbound.protection.outlook.com
X-MS-Exchange-ExternalOriginalInternetSender:
 ip=[40.93.13.101];domain=DM5PR08CU004.outbound.protection.outlook.com
X-MS-Exchange-Transport-CrossTenantHeadersStripped:
 CH2PEPF00000141.namprd02.prod.outlook.com
X-MS-PublicTrafficType: Email
X-MS-Office365-Filtering-Correlation-Id-Prvs:
	66a0528d-976b-449b-f959-08de9f2471df
X-Microsoft-Antispam:
	BCL:0;ARA:13230040|82310400026|14060799003|35042699022|156008|36860700016|376014|1800799024|56012099003|22082099003|18002099003;
X-Microsoft-Antispam-Message-Info:
	=?us-ascii?Q?/T2NNud2DddsKUK+Wua63UEEP0ZC3PUmWnq+3tHK7t7l38SnctApjJklqndH?=
 =?us-ascii?Q?S8f8TEdrJQ1dlftBeIWkRolStgGgqHyqHF62TSt3g0b2KAgNZ7e0Du/cJ0nl?=
 =?us-ascii?Q?0bI4C/tUMhdN1S9092Gwue3UvQ1pboFUpfycOJTk313yuMAZF1uKqzWow7cc?=
 =?us-ascii?Q?VPF2s5UNywEfdVX7XOf/L9TXJooNB8iLG7pcRSDsscha8IRuTbMkRKW0XHMZ?=
 =?us-ascii?Q?oJFEx9sRr+L6efhV/TJzYPKUPtDCh4c1tVZ+3zd9DKwkULp4JGSKrxRhlKKC?=
 =?us-ascii?Q?xf3lQRO0zGkBs6B6GpEVIgsLayT5I4ZSZbiMgdJOhWBpbm/8XbaQrGL3WYkg?=
 =?us-ascii?Q?PajtcNlJdXj6WWcxffQirFyaIcsHQ0mg8VeZJfpoXgiiRaSpOmk2Hq0Ny/ap?=
 =?us-ascii?Q?KCrbO2B0jQnnumA1c2SouWMMp8WLcoMDyFBUeh4hzzORUwX1OYshamfPqA84?=
 =?us-ascii?Q?dXJnGiM0AosOd2C5v5fzT2txbxlfykISVcYM2S6XB2sZdvadFZ9FA0Aj7F90?=
 =?us-ascii?Q?hV4+QcEDAL2zm68eLknyOHJGQYy0hcSvMHvlDKdwq2IvZlRWWxXzeqPpqyCy?=
 =?us-ascii?Q?MVkALxOOhV2gTZqHfjscgxVtwPJvFJFvbwAfArvrGZVIyZngKBOUpQY0IGZx?=
 =?us-ascii?Q?HJCVqV5ReTkSGPBR5w69ga0UD2oQzaFvvQUCsD0N7Zj7ZtMWBjvhStdqAQdJ?=
 =?us-ascii?Q?+pdESLEC0YBzp8C5h7oYPycdLI8gMZBaypkD7e0eOLX+bB6bD5HvASTGJRT+?=
 =?us-ascii?Q?A/eZxos/JYeXaUYWCS/xEMNYAPICzzH84PloEbfpQlU2j6ShkNOa24v9OBUM?=
 =?us-ascii?Q?C/OCc16zqyY3KaPBSNd1Fp/BW+zpDtrN/kfuSSK29rsa61OCx9rP9xE/UGvD?=
 =?us-ascii?Q?YbhtjkZjsH65augK/oTi+pGpreryDyk4B6+zegpryCDtlpZxEXj0t9MycWiP?=
 =?us-ascii?Q?sCQ+2se7HB9TdUbSAsZae7sfLujzu63PDxC9GcragK8JyZrnd+JoU0d7wNYK?=
 =?us-ascii?Q?pU5LLoPJP7vfGrlJSEG8LRC0wOtP9HScjz1KDvBlZfq8mJ125V2EUmQFgG68?=
 =?us-ascii?Q?Ju+qA4uzJVASk7o7XXcohLOYjPPFBE1blIz3pXQEk5V3rXtarxcIIv0sbpJi?=
 =?us-ascii?Q?8jlcXNAGuDh2LQjbjIDfyHsBY0NiLS29Jw=3D=3D?=
X-Forefront-Antispam-Report:
	CIP:4.79.107.243;CTRY:US;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:DM5PR08CU004.outbound.protection.outlook.com;PTR:mail-dm5pr08cu00405.outbound.protection.outlook.com;CAT:NONE;SFS:(13230040)(82310400026)(14060799003)(35042699022)(156008)(36860700016)(376014)(1800799024)(56012099003)(22082099003)(18002099003);DIR:OUT;SFP:1102;
X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1
X-MS-Exchange-AntiSpam-MessageData-0:
	/jAHSWtmgzWwbxa79b/cFx4AN141F195DYsXHOt5Jx71bEA2LSytGJes56RkjaqVe7Pko6Y1uJk6pYZDlmbxtpprU8vufGk8/tDsee7m+ItX6k9NuE3O5d/HAPb2yGBtaikWaiGjRDFyKeWoLsSYHadkmSTs3tNo5lRsXH9qJt8jySwWk7w4MEb513yaOT2Of1SntUETimsWjJvbpWc3amuhVCmSNjFcVWvLkG5OZPlFiyhwdkI+FSMeWYhlujyxiz44snv9MdOq9mHTQWsvisTDzlrm3YKmBhmjuBUwBgQzeliWhw14q3w4qgoIcimoqIf2X0aDYjyR5zHXsYZKGq0UZqENZjRUv5QvUrXfMr4l7PKTC3BAB7KKjBz+PhhHE0VsMk2Q9cT8p7kISz9jkrbFzIDRu2gvcXRGeKwGYCroRSRedkgdsTREgLJBEkse
X-OriginatorOrg: elektrobit.com
X-MS-Exchange-CrossTenant-OriginalArrivalTime: 20 Apr 2026 21:33:30.3131
 (UTC)
X-MS-Exchange-CrossTenant-Network-Message-Id: 15c18219-52ba-4382-286c-08de9f24778d
X-MS-Exchange-CrossTenant-Id: e764c36b-012e-4216-910d-8fd16283182d
X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=e764c36b-012e-4216-910d-8fd16283182d;Ip=[4.79.107.243];Helo=[usbth1es003.ebgroup.elektrobit.com]
X-MS-Exchange-CrossTenant-AuthAs: Internal
X-MS-Exchange-CrossTenant-AuthSource: TreatMessagesAsInternal-CH2PEPF00000141.namprd02.prod.outlook.com
X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem
X-MS-Exchange-Transport-CrossTenantHeadersStamped: BY3PR08MB7169
X-purgate-ID: tlsNG-ebf023/1776720816-31C4F3FF-D5594AB2/0/0
X-purgate-type: clean
X-purgate-size: 2531

This commit adds the altp2m_set_view_visibility and
altp2m_set_view_visibility_locked functions on ARM. This makes it possible
to set the altp2m view visibility in common altp2m routines (namely,
altp2m_flush).

This is commit 4/5 of the altp2m view validity/visibility phase.

Signed-off-by: Rose Spangler <Rose.Spangler@elektrobit.com>
---
v6: Introduced this patch.
---
 xen/arch/arm/altp2m.c             | 30 ++++++++++++++++++++++++++++++
 xen/arch/arm/include/asm/altp2m.h |  8 ++++++++
 2 files changed, 38 insertions(+)

diff --git a/xen/arch/arm/altp2m.c b/xen/arch/arm/altp2m.c
index 0e19e197e826..aa48c17e11a3 100644
--- a/xen/arch/arm/altp2m.c
+++ b/xen/arch/arm/altp2m.c
@@ -37,6 +37,36 @@ bool altp2m_view_is_visible(struct domain *d, unsigned int idx)
     return d->arch.altp2m_state[array_index_nospec(idx, d->nr_altp2m)] == ALTP2M_VISIBLE;
 }
 
+int altp2m_set_view_visibility(struct domain *d, unsigned int altp2m_idx,
+                               uint8_t visible)
+{
+    int rc;
+
+    altp2m_lock(d);
+    rc = altp2m_set_view_visibility_locked(d, altp2m_idx, visible);
+    altp2m_unlock(d);
+
+    return rc;
+}
+
+int altp2m_set_view_visibility_locked(struct domain *d, unsigned int altp2m_idx,
+                                      uint8_t visible)
+{
+    int rc = 0;
+
+    if ( altp2m_idx >= d->nr_altp2m || !altp2m_view_is_valid(d, altp2m_idx) )
+        rc = -EINVAL;
+    else if ( visible )
+        d->arch.altp2m_state[array_index_nospec(altp2m_idx, d->nr_altp2m)] =
+            ALTP2M_VISIBLE;
+    else
+        d->arch.altp2m_state[array_index_nospec(altp2m_idx, d->nr_altp2m)] =
+            ALTP2M_INVISIBLE;
+
+    return rc;
+}
+
+
 /*
  * Local variables:
  * mode: C
diff --git a/xen/arch/arm/include/asm/altp2m.h b/xen/arch/arm/include/asm/altp2m.h
index fbe66ad5536d..f8d0dd799a4a 100644
--- a/xen/arch/arm/include/asm/altp2m.h
+++ b/xen/arch/arm/include/asm/altp2m.h
@@ -40,6 +40,14 @@ enum altp2m_view_state {
     ALTP2M_INVISIBLE,
 };
 
+/* Set a specific p2m view visibility */
+int altp2m_set_view_visibility(struct domain *d, unsigned int altp2m_idx,
+                               uint8_t visible);
+
+/* Set a specific p2m view visibility (with lock already held) */
+int altp2m_set_view_visibility_locked(struct domain *d, unsigned int altp2m_idx,
+                                      uint8_t visible);
+
 #else /* CONFIG_ALTP2M */
 
 static inline bool altp2m_supported(void)
-- 
2.34.1



From xen-devel-bounces@lists.xenproject.org Mon Apr 20 21:33:44 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 20 Apr 2026 21:33:44 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1287894.1568334 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wEwFT-0007kz-Rp; Mon, 20 Apr 2026 21:33:43 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1287894.1568334; Mon, 20 Apr 2026 21:33: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 1wEwFS-0007g5-E8; Mon, 20 Apr 2026 21:33:42 +0000
Received: by outflank-mailman (input) for mailman id 1287894;
 Mon, 20 Apr 2026 21:33:38 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <Rose.Spangler@elektrobit.com>) id 1wEwFN-0006on-PO
 for xen-devel@lists.xenproject.org; Mon, 20 Apr 2026 21:33:38 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wEwFN-00EgCp-2O
 for xen-devel@lists.xenproject.org; Mon, 20 Apr 2026 23:33:37 +0200
Received: from [10.42.69.11] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <Rose.Spangler@elektrobit.com>)
 id 69e69b9e-e002-0a2a0a5209dd-0a2a450be734-28
 for <xen-devel@lists.xenproject.org>; Mon, 20 Apr 2026 23:33:37 +0200
Received: from [52.101.61.73]
 (helo=DM1PR04CU001.outbound.protection.outlook.com)
 by tlsNG-42698a.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.1)
 (envelope-from <Rose.Spangler@elektrobit.com>)
 id 69e69baf-212f-0a2a450b0019-34653d4947b9-3
 for <xen-devel@lists.xenproject.org>; Mon, 20 Apr 2026 23:33:36 +0200
Received: from BN9P222CA0007.NAMP222.PROD.OUTLOOK.COM (2603:10b6:408:10c::12)
 by LV3PR08MB9147.namprd08.prod.outlook.com (2603:10b6:408:21f::18)
 with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9818.32; Mon, 20 Apr
 2026 21:33:31 +0000
Received: from BN1PEPF00004682.namprd03.prod.outlook.com
 (2603:10b6:408:10c:cafe::6c) by BN9P222CA0007.outlook.office365.com
 (2603:10b6:408:10c::12) with Microsoft SMTP Server (version=TLS1_3,
 cipher=TLS_AES_256_GCM_SHA384) id 15.20.9791.48 via Frontend Transport; Mon,
 20 Apr 2026 21:33:31 +0000
Received: from usbth1es003.ebgroup.elektrobit.com (4.79.107.243) by
 BN1PEPF00004682.mail.protection.outlook.com (10.167.243.88) with Microsoft
 SMTP Server (version=TLS1_3, cipher=TLS_AES_256_GCM_SHA384) id 15.20.9791.48
 via Frontend Transport; Mon, 20 Apr 2026 21:33:30 +0000
Received: from usbth1es003 (localhost [127.0.0.1])
 by usbth1es003.ebgroup.elektrobit.com (Postfix) with SMTP id 4fzzHs3pNgz1wdM; 
 Mon, 20 Apr 2026 14:33:29 -0700 (PDT)
Received: from CY3PR08CU001.outbound.protection.outlook.com
 (mail-cy3pr08cu00105.outbound.protection.outlook.com [40.93.6.109])
 (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)
 key-exchange secp384r1 server-signature RSA-PSS (2048 bits) server-digest
 SHA256) (No client certificate requested)
 by usbth1es003.ebgroup.elektrobit.com (Postfix) with ESMTPS;
 Mon, 20 Apr 2026 14:33:29 -0700 (PDT)
Received: from BY1P220CA0019.NAMP220.PROD.OUTLOOK.COM (2603:10b6:a03:5c3::15)
 by BN5PR08MB10625.namprd08.prod.outlook.com (2603:10b6:408:2a8::13)
 with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9818.30; Mon, 20 Apr
 2026 21:33:24 +0000
Received: from SJ1PEPF000026C9.namprd04.prod.outlook.com
 (2603:10b6:a03:5c3:cafe::b6) by BY1P220CA0019.outlook.office365.com
 (2603:10b6:a03:5c3::15) with Microsoft SMTP Server (version=TLS1_3,
 cipher=TLS_AES_256_GCM_SHA384) id 15.20.9791.48 via Frontend Transport; Mon,
 20 Apr 2026 21:33:23 +0000
Received: from denue6es012.ebgroup.elektrobit.com (213.95.148.172) by
 SJ1PEPF000026C9.mail.protection.outlook.com (10.167.244.106) with Microsoft
 SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id
 15.20.9791.48 via Frontend Transport; Mon, 20 Apr 2026 21:33:23 +0000
Received: from ubuntu.localdomain (10.10.178.50) by
 denue6es012.ebgroup.elektrobit.com (10.243.160.140) with Microsoft SMTP
 Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id
 15.2.2562.35; Mon, 20 Apr 2026 23:33:20 +0200
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@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=elektrobit.com header.i="@elektrobit.com" header.h="From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck"; dkim=pass header.s=selector1 header.d=elektrobit.com header.i="@elektrobit.com" header.h="From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck"
ARC-Seal: i=2; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=pass;
 b=TQqwYXlEbHAL0dz2XIjdzYLFWfQIRhYUiLvJo04JdtHe+SW066+Kqc6c/EMx3jNfu9OVIQeg+NTZrYNoVpi9L8+9s3yu5b8fzuQKO50kH9DNy315h2c4fOL88eimgcfzcnjExaknzZ/YbdiJYIReCp6G65sTYEdHmKfXY+jASVIdSQSFCZe8fsZC+ka0u8TnyBTfS09r+TJzeRSKEqfWqzk/iKWP0OSCe3eCqM6ZCO6ch96FXNAo04FbEU2EGVorMF60uoE0jwbxu+nYMwA6PgOJKoALvJiDyB7toDklLdZj+SYVeynyN/CS0CQcVLYnBMAyIFgt+dpKidjbSkTnKw==
ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com;
 s=arcselector10001;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1;
 bh=wWUPA2R1jGeMCWnRBq/OLMBccKwi+cy0SSVh5xBuans=;
 b=s9aaD+MnQ2bu7In5QxmdUi7y3Dsky/01+MLTFd2ImfuBPK8qKq+myQPeCL+ZkjuhddIMT07D/L8NY0ECl92NvJn6/3YELiu4ZmMpUpjTAlZij/SNTqI9fdZDcqG/r4itB0VGbZu/fVkiFUu2L1e4bi+vsr0lTo34NeWW0cxmg7QhjNwEDYKQ4iCQ9HgIOObitTgPIU8eSoIfCk+irdIXetjzdr4aCV8wMqg3CDoYz18nd3UA0wI2Rroe0t6T71+e7EJTQGXd9SRFyhQyx8rqCqei/AN2E6bhCRItrNTNphpQQ1eOzAle3NDXMBsiX2qjbaBB0D3Kd9Mm7NCC+/8U7Q==
ARC-Authentication-Results: i=2; mx.microsoft.com 1; spf=pass (sender ip is
 40.93.6.109) smtp.rcpttodomain=amd.com smtp.mailfrom=elektrobit.com;
 dmarc=pass (p=quarantine sp=none pct=100) action=none
 header.from=elektrobit.com; dkim=pass (signature was verified)
 header.d=elektrobit.com; arc=pass (0 oda=1 ltdi=1
 spf=[1,1,smtp.mailfrom=elektrobit.com]
 dmarc=[1,1,header.from=elektrobit.com])
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=elektrobit.com;
 s=selector1;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck;
 bh=wWUPA2R1jGeMCWnRBq/OLMBccKwi+cy0SSVh5xBuans=;
 b=q3x8PNeLNDARM3qMpo6CSOXswkLcq4lQAsq7LNtlaqPX4LsJP1pEKjHJow0mGBxgdzn5xo6E3Sjh3OvexUGpCxpXD6sSKEMoH79Qw0EVpujG4+7qOBsJHZlxEz5NW8rDPP5uFbp/tHP6A2VHU6fR0pio7EIeqmxwGfg4hVO5G3Q=
X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 40.93.6.109)
 smtp.mailfrom=elektrobit.com; dkim=pass (signature was verified)
 header.d=elektrobit.com;dmarc=pass action=none header.from=elektrobit.com;
Received-SPF: Pass (protection.outlook.com: domain of elektrobit.com
 designates 40.93.6.109 as permitted sender) receiver=protection.outlook.com;
 client-ip=40.93.6.109; helo=CY3PR08CU001.outbound.protection.outlook.com;
 pr=C
ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none;
 b=FfCBfjHVWms+EcYedWfEJRGQjJpZt4gvVA+KIXIpHzIHixCZpxFc/mNRPOu3gNjJ2neRU+ngHu9MbrXR4oCebGLeTE88RcjqH0yPg6zQXZ8P1eO62z9R2JHazPt9PaB+JSl9LL94Dc3K1RS2aVqylKxqrl4Zu+UdqV27igpu5OeW2Kwsab5xKH54kRuQDoLEBIU+eXA5VXoOUyZdB/vaWAuaeQcPS+zz/Jo8brgFLDcz4wefL3LsX25TU6QKAwbhNFFDc+v8QqlkIx1zJhzPDm670UxdUvR7eRktK2sVex4QLaDszNqA4StpCSvTNpDMJwMrI5yBYKEZXjQJqBmW7g==
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com;
 s=arcselector10001;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1;
 bh=wWUPA2R1jGeMCWnRBq/OLMBccKwi+cy0SSVh5xBuans=;
 b=WYsQVJWzXRIJUyNWLh8BsWjHcLOUAy+bBCaYC9u6/AOKTi0/aGzYahjwj0Y/bew8zLZNR/SUh/fg7d0H2pM/e408/of9HpKfFLS3fbmvIXLkmGsMJb7+8fzUmWJbcwRI/Yo7/6AMnitVSNyiyelLkNWk5G21wwPa3CcV6/y9Z9/gob0pAg394Qk1I2X9k0gz42NexdAvdKkioNx1nILgQYfpgED2RDjg73bHotJx58l+IBCKKeIEOg7qmCzcmjUn2gPFTtxH25iCHFvhyxqbYuGD9RxOTKdkeP/t9LT+O7mLq9kbcsMKVWUiWIPojuwVHXVbcNVlDmm5H4iKXiB1NQ==
ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass (sender ip is
 213.95.148.172) smtp.rcpttodomain=lists.xenproject.org
 smtp.mailfrom=elektrobit.com; dmarc=pass (p=quarantine sp=none pct=100)
 action=none header.from=elektrobit.com; dkim=none (message not signed);
 arc=none (0)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=elektrobit.com;
 s=selector1;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck;
 bh=wWUPA2R1jGeMCWnRBq/OLMBccKwi+cy0SSVh5xBuans=;
 b=q3x8PNeLNDARM3qMpo6CSOXswkLcq4lQAsq7LNtlaqPX4LsJP1pEKjHJow0mGBxgdzn5xo6E3Sjh3OvexUGpCxpXD6sSKEMoH79Qw0EVpujG4+7qOBsJHZlxEz5NW8rDPP5uFbp/tHP6A2VHU6fR0pio7EIeqmxwGfg4hVO5G3Q=
X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 213.95.148.172)
 smtp.mailfrom=elektrobit.com; dkim=none (message not signed)
 header.d=none;dmarc=pass action=none header.from=elektrobit.com;
Received-SPF: Pass (protection.outlook.com: domain of elektrobit.com
 designates 213.95.148.172 as permitted sender)
 receiver=protection.outlook.com; client-ip=213.95.148.172;
 helo=denue6es012.ebgroup.elektrobit.com; pr=C
From: Rose Spangler <Rose.Spangler@elektrobit.com>
To: <xen-devel@lists.xenproject.org>
CC: Rose Spangler <Rose.Spangler@elektrobit.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.pau@citrix.com>, Stefano Stabellini <sstabellini@kernel.org>
Subject: [RFC PATCH v6 34/43] arm/altp2m: Add support for HVMOP_altp2m_set_visibility
Date: Mon, 20 Apr 2026 17:31:57 -0400
Message-ID: <20260420213206.208750-35-Rose.Spangler@elektrobit.com>
X-Mailer: git-send-email 2.34.1
In-Reply-To: <20260420213206.208750-1-Rose.Spangler@elektrobit.com>
References: <20260420213206.208750-1-Rose.Spangler@elektrobit.com>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit
Content-Type: text/plain
X-Originating-IP: [10.10.178.50]
X-ClientProxiedBy: denue6es012.ebgroup.elektrobit.com (10.243.160.140) To
 denue6es012.ebgroup.elektrobit.com (10.243.160.140)
X-EOPAttributedMessage: 1
X-MS-Exchange-SkipListedInternetSender:
 ip=[213.95.148.172];domain=denue6es012.ebgroup.elektrobit.com
X-MS-TrafficTypeDiagnostic:
	SJ1PEPF000026C9:EE_|BN5PR08MB10625:EE_|BN1PEPF00004682:EE_|LV3PR08MB9147:EE_
X-MS-Office365-Filtering-Correlation-Id: 9d25fae6-395c-49bc-99bb-08de9f2477a1
X-SM-outgoing: yes
X-MS-Exchange-SenderADCheck: 1
X-MS-Exchange-AntiSpam-Relay: 0
X-Microsoft-Antispam-Untrusted:
 BCL:0;ARA:13230040|1800799024|36860700016|376014|82310400026|56012099003|22082099003|18002099003;
X-Microsoft-Antispam-Message-Info-Original:
 =?us-ascii?Q?/eY1PV0XBQIWvxzYfcUFwrRlS52N7t3q9QERsXtzmYPNPqw0bssmg2WW+be8?=
 =?us-ascii?Q?sZ0k+IuYxih/Z3YwB8UVknFwgbQK3ImJBlfIuzK00gcSQQltNcGU2bm2kGVi?=
 =?us-ascii?Q?gaE6pJQ/R8uzOSebuU+rmj4oC3c2hsDVtxyak0zNWTKtSdkn/uUKUQIG4fRw?=
 =?us-ascii?Q?9hlRYSwXV4KZHAkCqCqNfY95GUFdZGndIqz9MzIbRNJtdPeht1PYnCD39llH?=
 =?us-ascii?Q?sw6cWHyTDUo+1ut9u+sp+E1aJWh2P/khlRNucAPDzQjiY803AAUG8x0rCN8w?=
 =?us-ascii?Q?E1fGF427oUwlD9/FWGe3wP6ezSVx5XSZrfXaImBqnDIrXKRa43rkSuZPzQeV?=
 =?us-ascii?Q?qgU5s1nvKtkpBG6Vzftyto7HXm6AlUIVLIzg1IXhooufYeHNSszDnxOx22MH?=
 =?us-ascii?Q?A712HfkGOY4w+w+QsoC1g+RDb+7Ucp3x/Z9/wQLl9ItfVtjzjRk//NAcUJCl?=
 =?us-ascii?Q?plmXAMj8+z2h3V3yRntzU1qRuYRHCnqu09cW/JhZJXaobiJ5Lhz8O3pQJGt7?=
 =?us-ascii?Q?0ufEE2XHIcjcoZnrMYNLmoWvx+fex2NC+XhPybvgH9w7BvqhtUb/Q4F5X1It?=
 =?us-ascii?Q?nae8kiH52wIUOQ8i6qwqRgif0YqQ5JR5ouq0K5209lOnMiNOYsnHtbZAasWu?=
 =?us-ascii?Q?x+Scvh59Ne11Z480BEgx6zGNSr8JbHDaio0s95larj6IJsUb0HeoB2s9cNcs?=
 =?us-ascii?Q?R1aXvDMNijQ4xfJ0NwNcLy+z1mK2KgtQg2YBF3ehtD7JxNPihOmlv0X4m3n5?=
 =?us-ascii?Q?QW1gUNCiNdSlDftw7rG327XuB0rFWsvJswI+D6i2MxJI1agZUkfGhMyH3ICw?=
 =?us-ascii?Q?RebJCDRZpV3HxBbvuIOept3rJhXJsadSS6sPfGDN51shhsdS5tYvnlMdVbQB?=
 =?us-ascii?Q?aICKOVFDmSI9QwvWg5DDSxC/diS9KW8p3NVJSlqAIoHSu9dDc2/3v0uDhA1G?=
 =?us-ascii?Q?4f3I6aFbGvhghVaESlO+PbbabEVmqCing+XveZeojw3ih/gFF6OY0lp9E62T?=
 =?us-ascii?Q?oM9DLNTtNIy2F2AwsXaHXxnK+z3mhoSo96G8AJOt66+igHCuGZ5PjBU9B6nR?=
 =?us-ascii?Q?kJ33CkkqEt9G9yWbMmmvJNEoixWl7oQ2LHgyb+01Yj1NlNKSvRDOEVKcZAOH?=
 =?us-ascii?Q?aqxtSRCswGZ8XcHs5IcKgFw6/u+3ub/yC4uGPmjfxJyXYwRnWSokW80MAxGB?=
 =?us-ascii?Q?qPCmhSt/HqtlXbKln/N0Y0xnJwnUkeQMkJyBvYlyoIRAfn01BTcuLMMQVl9u?=
 =?us-ascii?Q?iHOGI7VXmeOVSK1I+KeC?=
X-Forefront-Antispam-Report-Untrusted:
 CIP:213.95.148.172;CTRY:DE;LANG:en;SCL:1;SRV:;IPV:CAL;SFV:NSPM;H:denue6es012.ebgroup.elektrobit.com;PTR:eth1-fw1-nbg6.eb.noris.de;CAT:NONE;SFS:(13230040)(1800799024)(36860700016)(376014)(82310400026)(56012099003)(22082099003)(18002099003);DIR:OUT;SFP:1102;
X-Exchange-RoutingPolicyChecked:
 eSPaC0+VnXixVmlBHYMCKYuKQfLtav0AF3tH29iGS+6bIf3H2b6c+lrqv1fOEUOohHhBAQz9/8tGXzvFKdk38zAsqgnSsKL3kO1Jlf1FgnobGp1xQUy0pBUxRyDt4pEvoIY9PN74rEzM+BRRmQW9WNfUHBo4MtuH6p3/f8stTWDPnS8YVCISn5T2zY+GgJ05PGMhFUY5x7+bxx6xSyGM0mcO4zX5ZtAjWOCP3Hlj52aAaMR4+KXndg8DCkHz+2+OJUY0O1fr+Ek4FnQDElJ1wfLKP4zHR/9sriX8NSVAtAURaWuQDCPA2XoHooQ4aIT5PDnFm8o44lmebkL2k4Ui6A==
X-MS-Exchange-Transport-CrossTenantHeadersStamped: BN5PR08MB10625
X-MS-Exchange-SkipListedInternetSender:
 ip=[40.93.6.109];domain=CY3PR08CU001.outbound.protection.outlook.com
X-MS-Exchange-ExternalOriginalInternetSender:
 ip=[40.93.6.109];domain=CY3PR08CU001.outbound.protection.outlook.com
X-MS-Exchange-Transport-CrossTenantHeadersStripped:
 BN1PEPF00004682.namprd03.prod.outlook.com
X-MS-PublicTrafficType: Email
X-MS-Office365-Filtering-Correlation-Id-Prvs:
	e01c8739-929f-4b3c-ad7e-08de9f247380
X-Microsoft-Antispam:
	BCL:0;ARA:13230040|82310400026|14060799003|35042699022|156008|36860700016|376014|1800799024|56012099003|22082099003|18002099003;
X-Microsoft-Antispam-Message-Info:
	=?us-ascii?Q?8Ai4WwFQH6lPYcUg4zVGHO3S1+IF+/iKvCQ6Q+djCJcVpdLhg919AOssXKP0?=
 =?us-ascii?Q?ZJ07UT9hJyFB76erxXpRoSb4yQWv5rklLbIb7TdDhbfZ0yXA2dQjqch5md43?=
 =?us-ascii?Q?F3ZNXNBHx0gH9c9WKfLSBqINOmjqWzgOwb+kn5XKOpNVuHexHyxchqwcX2WS?=
 =?us-ascii?Q?9DZ5aYT+EB/9kFaJwYW6D5ueer/4IXQcBOEopYEr3dHWdPUZUzFQAdBVr8YW?=
 =?us-ascii?Q?3b7EctOBSbFTJ0EgoPN2rQ5XYhOPZ80ugKWp2RmG1dz3KgEPbVedeWGYVlTp?=
 =?us-ascii?Q?6Rw60NkooktAi2hrHWdxEQV/vFsIWvpogcnhL5q2lfzZ8at5HzSonSfNf2WK?=
 =?us-ascii?Q?G39GOQKkoxAPtWGpYySHQIYpjLfWdjNZPsr6jS3J/wJ9+GvWGrELcgmHES3O?=
 =?us-ascii?Q?VZei3pW4g736tgAJkqOyYZovayaKMtYDbcSSiYIWsXDW58UkrZMPl5YZ65KX?=
 =?us-ascii?Q?SorMNzAPB5tNBGoke2As9ayBKU8ZHDMLiurNI6eAx8pSlz+B8nZ2QuPyQjRA?=
 =?us-ascii?Q?HxETbmSGXFqy7fWuIEGKUWaRRvZPltF1x8DK5uAO18KMm7/2bEZHCwLWwvj0?=
 =?us-ascii?Q?qAMbc02oPUU4j5jhlQxKg32D0UtjlQ3saos3YoA5p2gKaU5fkP3lQ7wzPepb?=
 =?us-ascii?Q?yTWqKO6imQw//WO16DBLfzg9IIWWbwPxUosPYUUma+GwEhBiqyPSBHkXErTH?=
 =?us-ascii?Q?uYl4PBXt907yPmZpPTiLlqY63LSH6BqDk0HQWDKoyDbLpGyzykBibSNpe1HE?=
 =?us-ascii?Q?/W45D2NSgy2wXUL/Z+uZPc+NtJnVD627t1Zx9g/AJncf+fg/jHrKHFf9rf/P?=
 =?us-ascii?Q?xSCEWHMNexIS79Pv0s5e+Et2nKb9CjOkm5+8no19yMxb1lv2VkFOBgr9s1V6?=
 =?us-ascii?Q?yPcUnksw/f5bR9CkXIPJ2wxtU6uiqAVJjvBmSkAKNoNi2dGLFpuh20z5sOdk?=
 =?us-ascii?Q?B9t73Op0v68snEjF/nFTcl5BbBSESYl6o3xOllTrJNS9GonJ1gD1ghrq8ADp?=
 =?us-ascii?Q?H7sz5srlsAyXcsz5raGu1a1LeT/KEy+HtO22zLKRR7Wyzv1dr9t8c916rGtu?=
 =?us-ascii?Q?PqaQNaQ8LtgkdOi2RI055UjkCyope9z2sHe4OIOgWZXCi7RSP2xA6Q3UC4JD?=
 =?us-ascii?Q?2Fat0eHsNs4zP4IHCmxoOYIQUiCmIrYmiGQtwcnsS9YOdek4i3Qji9jtufjd?=
 =?us-ascii?Q?hsnhOuwSKW85/xPLCo17Y5/YCPoOvukuP/uTc1b16j+lvvsx1ILKBoQDcEPp?=
 =?us-ascii?Q?R+19JVISg8a6TQ8Q5NfN?=
X-Forefront-Antispam-Report:
	CIP:4.79.107.243;CTRY:US;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:CY3PR08CU001.outbound.protection.outlook.com;PTR:mail-cy3pr08cu00105.outbound.protection.outlook.com;CAT:NONE;SFS:(13230040)(82310400026)(14060799003)(35042699022)(156008)(36860700016)(376014)(1800799024)(56012099003)(22082099003)(18002099003);DIR:OUT;SFP:1102;
X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1
X-MS-Exchange-AntiSpam-MessageData-0:
	IdYZ0TmxX4za9sM8oTfgqRjbVNBkIxSRvsp3gZgi7eF0OsZeC8ypinhgx0YvXfrOVXRWyADYhC49uCUcoPtT8CDnPD5pMwxObyrA+jOOg7+REVubAMFfrwBRTb6gIm2yEQAB4WQxZV8NafPGsFZrxziCZtfp63YhFATeljJOj2/aBl/qbEiiuOr7DPDGBjRnrPonbNuwz7zhhSt3uieLEudvMrdOoeUG7yQ748fKHWSSLRdClFtEUFJjUb/A99xxh1/xmpOwNsGWgJgdORJTD9xSqYUGSyzGzPLw1x4X5jMKLhG/8ydRJbi88VyyLchaWXH5HYWBS8UoQxwvL9U9HnxAEhbC1Cr6D8UF1KmvxS15tYo1H/nudX/H7DvlnhvyiFp0VSKanNvvn5lDA+wMIBpAvlhk9L3vIn8bOZvPOOReOqSCi7Ou7eFKRvIMKF6X
X-OriginatorOrg: elektrobit.com
X-MS-Exchange-CrossTenant-OriginalArrivalTime: 20 Apr 2026 21:33:30.3868
 (UTC)
X-MS-Exchange-CrossTenant-Network-Message-Id: 9d25fae6-395c-49bc-99bb-08de9f2477a1
X-MS-Exchange-CrossTenant-Id: e764c36b-012e-4216-910d-8fd16283182d
X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=e764c36b-012e-4216-910d-8fd16283182d;Ip=[4.79.107.243];Helo=[usbth1es003.ebgroup.elektrobit.com]
X-MS-Exchange-CrossTenant-AuthAs: Internal
X-MS-Exchange-CrossTenant-AuthSource: TreatMessagesAsInternal-BN1PEPF00004682.namprd03.prod.outlook.com
X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem
X-MS-Exchange-Transport-CrossTenantHeadersStamped: LV3PR08MB9147
X-purgate-ID: tlsNG-42698a/1776720816-05D6FF3B-8824C7D3/0/0
X-purgate-type: clean
X-purgate-size: 1033

This commit adds support for the HVMOP_altp2m_set_visibility command on
ARM. With altp2m_set_view_visibility being implemented, no further changes
beyond updating the #ifdef CONFIG_X86 gates are necessary.

This is commit 5/5 of the altp2m view validity/visibility phase.

Signed-off-by: Rose Spangler <Rose.Spangler@elektrobit.com>
---
v6: Introduced this patch.
---
 xen/common/altp2m.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/xen/common/altp2m.c b/xen/common/altp2m.c
index 7b80426c7798..c234bb3774f4 100644
--- a/xen/common/altp2m.c
+++ b/xen/common/altp2m.c
@@ -477,6 +477,7 @@ int do_altp2m_op(
         rc = __copy_to_guest(arg, &a, 1) ? -EFAULT : 0;
         break;
     }
+#endif /* CONFIG_X86 */
 
     case HVMOP_altp2m_set_visibility:
     {
@@ -490,7 +491,6 @@ int do_altp2m_op(
             rc = altp2m_set_view_visibility(d, idx, a.u.set_visibility.visible);
         break;
     }
-#endif /* CONFIG_X86 */
 
     default:
 #ifdef CONFIG_X86
-- 
2.34.1



From xen-devel-bounces@lists.xenproject.org Mon Apr 20 21:33:48 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 20 Apr 2026 21:33:48 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1287896.1568343 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wEwFX-0008LY-HF; Mon, 20 Apr 2026 21:33:47 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1287896.1568343; Mon, 20 Apr 2026 21:33: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 1wEwFV-0008HT-Op; Mon, 20 Apr 2026 21:33:45 +0000
Received: by outflank-mailman (input) for mailman id 1287896;
 Mon, 20 Apr 2026 21:33:40 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <Rose.Spangler@elektrobit.com>) id 1wEwFP-00078e-Lh
 for xen-devel@lists.xenproject.org; Mon, 20 Apr 2026 21:33:39 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wEwFP-00CDCY-0z
 for xen-devel@lists.xenproject.org; Mon, 20 Apr 2026 23:33:39 +0200
Received: from [10.42.69.2] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <Rose.Spangler@elektrobit.com>)
 id 69e69b8e-2eae-0a2a0a5409dd-0a2a45028f2e-38
 for <xen-devel@lists.xenproject.org>; Mon, 20 Apr 2026 23:33:39 +0200
Received: from [52.101.56.122]
 (helo=BN1PR04CU002.outbound.protection.outlook.com)
 by tlsNG-720697.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.1)
 (envelope-from <Rose.Spangler@elektrobit.com>)
 id 69e69bb1-af86-0a2a45020019-3465387a7c3a-3
 for <xen-devel@lists.xenproject.org>; Mon, 20 Apr 2026 23:33:38 +0200
Received: from CH2PR08CA0010.namprd08.prod.outlook.com (2603:10b6:610:5a::20)
 by SA6PR08MB10353.namprd08.prod.outlook.com (2603:10b6:806:43f::8)
 with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9818.32; Mon, 20 Apr
 2026 21:33:24 +0000
Received: from CH2PEPF00000142.namprd02.prod.outlook.com
 (2603:10b6:610:5a:cafe::81) by CH2PR08CA0010.outlook.office365.com
 (2603:10b6:610:5a::20) with Microsoft SMTP Server (version=TLS1_3,
 cipher=TLS_AES_256_GCM_SHA384) id 15.20.9723.25 via Frontend Transport; Mon,
 20 Apr 2026 21:33:24 +0000
Received: from usbth1es003.ebgroup.elektrobit.com (4.79.107.243) by
 CH2PEPF00000142.mail.protection.outlook.com (10.167.244.75) with Microsoft
 SMTP Server (version=TLS1_3, cipher=TLS_AES_256_GCM_SHA384) id 15.20.9791.48
 via Frontend Transport; Mon, 20 Apr 2026 21:33:23 +0000
Received: from usbth1es003 (localhost [127.0.0.1])
 by usbth1es003.ebgroup.elektrobit.com (Postfix) with SMTP id 4fzzHl1x9dz1wdY; 
 Mon, 20 Apr 2026 14:33:23 -0700 (PDT)
Received: from BYAPR08CU003.outbound.protection.outlook.com
 (mail-byapr08cu00307.outbound.protection.outlook.com [40.93.1.111])
 (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)
 key-exchange secp384r1 server-signature RSA-PSS (2048 bits) server-digest
 SHA256) (No client certificate requested)
 by usbth1es003.ebgroup.elektrobit.com (Postfix) with ESMTPS;
 Mon, 20 Apr 2026 14:33:22 -0700 (PDT)
Received: from BY1P220CA0022.NAMP220.PROD.OUTLOOK.COM (2603:10b6:a03:5c3::14)
 by SA1PR08MB7598.namprd08.prod.outlook.com (2603:10b6:806:1f1::6)
 with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9818.33; Mon, 20 Apr
 2026 21:33:19 +0000
Received: from SJ1PEPF000026C9.namprd04.prod.outlook.com
 (2603:10b6:a03:5c3:cafe::df) by BY1P220CA0022.outlook.office365.com
 (2603:10b6:a03:5c3::14) with Microsoft SMTP Server (version=TLS1_3,
 cipher=TLS_AES_256_GCM_SHA384) id 15.20.9791.48 via Frontend Transport; Mon,
 20 Apr 2026 21:33:19 +0000
Received: from denue6es012.ebgroup.elektrobit.com (213.95.148.172) by
 SJ1PEPF000026C9.mail.protection.outlook.com (10.167.244.106) with Microsoft
 SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id
 15.20.9791.48 via Frontend Transport; Mon, 20 Apr 2026 21:33:18 +0000
Received: from ubuntu.localdomain (10.10.178.50) by
 denue6es012.ebgroup.elektrobit.com (10.243.160.140) with Microsoft SMTP
 Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id
 15.2.2562.35; Mon, 20 Apr 2026 23:33:15 +0200
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@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=elektrobit.com header.i="@elektrobit.com" header.h="From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck"; dkim=pass header.s=selector1 header.d=elektrobit.com header.i="@elektrobit.com" header.h="From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck"
ARC-Seal: i=2; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=pass;
 b=e5pl8CFxhyEnttaqqbdBaksO+59n84eXJFOcJ2K14XUKXQ80tZqbeD2/aNvIg9jUxYm0hFA6dzQyL8rZGBBCa5t3JM0AxIrJF8iZlHrJT/qFjGWz0Ka4J6iH8EgJO7Qb8Bj+9WSEkMWoOU62tcoELqklmSBvexuai+Ri8K1GpfCeFQFOeR/MwlNG+OHVyQYrD+vcYXof9oXeneEKmicF683HE+RKn6jnHJHPh2fPStpLKaw3ISESxk8NcuFfWbjm6T4rHAEtHhlXhSUwkBqizmasmiSp49+cuDClqF9PJGpkO/AiOEgitUxW+559qehYMWPlDYJllGGmTB8BQzMNvg==
ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com;
 s=arcselector10001;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1;
 bh=lWkI4CPcpixx7LyAi9ppzVzvWNQPx579rpoBHNN/nAY=;
 b=QyF4Il5xqfphJB2IvIjyB8VdlUmdVN0ATrKdVRWhqGOGUm7gnNxo6yqhjHa+5Bb4AauBHVRr7Xb6XP5sb18jMwlkpGfXGmhb5OsskU5xwC459q4H3egVVp6OF9+KtidPNSEUW2d0REmrvxD05wTow3I+pLWqIMFiSZxu5Lf9Ux0O0mQgmUrAeYAsE1gAvoffijqFh42+XcZ+ACnLBJvY3p0NPI47wZDj0ngrURT3I9v8YvKsIh7+cSIVEQC0GL/kV7HaB3UiLOWJOOa1f1Fy+sGUTVEI7OHCSIjcsE5Onr3gsFBxdaGhk0Hx20/w1HPzI05cna9FvE1nfbouI2sCmw==
ARC-Authentication-Results: i=2; mx.microsoft.com 1; spf=pass (sender ip is
 40.93.1.111) smtp.rcpttodomain=amd.com smtp.mailfrom=elektrobit.com;
 dmarc=pass (p=quarantine sp=none pct=100) action=none
 header.from=elektrobit.com; dkim=pass (signature was verified)
 header.d=elektrobit.com; arc=pass (0 oda=1 ltdi=1
 spf=[1,1,smtp.mailfrom=elektrobit.com]
 dmarc=[1,1,header.from=elektrobit.com])
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=elektrobit.com;
 s=selector1;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck;
 bh=lWkI4CPcpixx7LyAi9ppzVzvWNQPx579rpoBHNN/nAY=;
 b=iOFFLmcN5ZETdLWHBYvcikPpE+vZegdOjSgCRBHrzKeP9Xo1rG/tHov8tKlk3t4a4goZdhGoCGIeTWQjOysQ3BTdUzympIbuHlEmcjtUX33DxLZnsboskUOwXHkepDKqQyO/ekNksYW65CNBhqCzPv0pD9LZW3+a8MgtRp930vc=
X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 40.93.1.111)
 smtp.mailfrom=elektrobit.com; dkim=pass (signature was verified)
 header.d=elektrobit.com;dmarc=pass action=none header.from=elektrobit.com;
Received-SPF: Pass (protection.outlook.com: domain of elektrobit.com
 designates 40.93.1.111 as permitted sender) receiver=protection.outlook.com;
 client-ip=40.93.1.111; helo=BYAPR08CU003.outbound.protection.outlook.com;
 pr=C
ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none;
 b=UFw9ApWJQVmmEn5nGlEwiWoapzkXpDukMqJIZG86B02c4p2NK4ofTdHr0fZl9vvYmBQDwq8klvzmfjhTOFvXAimld2zmFkgRPz7kt29VWCPonkNXXdqosBotzTpWJ7100wymB55c4zWK4TweUKakZkgbYu9DlW791WcH/qelbXxU7tgiB0Z/X2bSVoCLOw/uSY8maybw5KYBOLLAYUzdQRZofMZOO1E9UOtUppznW73BzaB7QrXTnVzGtseSbqSQsbrOt2Jiu/EHBV2q56BqY0D10HtY7M6TduxeTeUtmsKRNfM8wHjdX37NW4WalwNFCi/r0TiYCTe+SMjdj6YnVw==
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com;
 s=arcselector10001;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1;
 bh=lWkI4CPcpixx7LyAi9ppzVzvWNQPx579rpoBHNN/nAY=;
 b=qUmVN5yJQWYUjfW3CWRBqjYbAqaAvHtgzN/0blOpixZD76ttmNX0XvJLOZUJVz4J5oTZg4gXuH2bgm5Jz/3Yeu2WCPORekoni3KKsWlvvA4Yn3izK3zZ0RMMVjptS8kazale1Nz1cWh/PyS9vM7Zp7rTuBoQs+iVHNQo8S76nBZP61jxPzPE3+pMfbG7+fkWkcPAvFotaV71qKhk31yS68qosl8Xb1uEHMs/XkgKYGVASgebisyQxCX/SXyaAmFJEan1iDKHPAAE+iV8R2rrcEH6k7+CR/gSGLZfWoO+fqK6ohRQjWWAsWSt/WjbBoR6A/PAi4F+5h3OX77lZxd0Eg==
ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass (sender ip is
 213.95.148.172) smtp.rcpttodomain=lists.xenproject.org
 smtp.mailfrom=elektrobit.com; dmarc=pass (p=quarantine sp=none pct=100)
 action=none header.from=elektrobit.com; dkim=none (message not signed);
 arc=none (0)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=elektrobit.com;
 s=selector1;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck;
 bh=lWkI4CPcpixx7LyAi9ppzVzvWNQPx579rpoBHNN/nAY=;
 b=iOFFLmcN5ZETdLWHBYvcikPpE+vZegdOjSgCRBHrzKeP9Xo1rG/tHov8tKlk3t4a4goZdhGoCGIeTWQjOysQ3BTdUzympIbuHlEmcjtUX33DxLZnsboskUOwXHkepDKqQyO/ekNksYW65CNBhqCzPv0pD9LZW3+a8MgtRp930vc=
X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 213.95.148.172)
 smtp.mailfrom=elektrobit.com; dkim=none (message not signed)
 header.d=none;dmarc=pass action=none header.from=elektrobit.com;
Received-SPF: Pass (protection.outlook.com: domain of elektrobit.com
 designates 213.95.148.172 as permitted sender)
 receiver=protection.outlook.com; client-ip=213.95.148.172;
 helo=denue6es012.ebgroup.elektrobit.com; pr=C
From: Rose Spangler <Rose.Spangler@elektrobit.com>
To: <xen-devel@lists.xenproject.org>
CC: Rose Spangler <Rose.Spangler@elektrobit.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>,
	=?UTF-8?q?Roger=20Pau=20Monn=C3=A9?= <roger.pau@citrix.com>, Teddy Astie
	<teddy.astie@vates.tech>, Aqib Javaid <Aqib.Javaid@elektrobit.com>
Subject: [RFC PATCH v6 31/43] altp2m: Add altp2m_view_is_{valid,visible}
Date: Mon, 20 Apr 2026 17:31:54 -0400
Message-ID: <20260420213206.208750-32-Rose.Spangler@elektrobit.com>
X-Mailer: git-send-email 2.34.1
In-Reply-To: <20260420213206.208750-1-Rose.Spangler@elektrobit.com>
References: <20260420213206.208750-1-Rose.Spangler@elektrobit.com>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit
Content-Type: text/plain
X-Originating-IP: [10.10.178.50]
X-ClientProxiedBy: denue6es012.ebgroup.elektrobit.com (10.243.160.140) To
 denue6es012.ebgroup.elektrobit.com (10.243.160.140)
X-EOPAttributedMessage: 1
X-MS-Exchange-SkipListedInternetSender:
 ip=[213.95.148.172];domain=denue6es012.ebgroup.elektrobit.com
X-MS-TrafficTypeDiagnostic:
	SJ1PEPF000026C9:EE_|SA1PR08MB7598:EE_|CH2PEPF00000142:EE_|SA6PR08MB10353:EE_
X-MS-Office365-Filtering-Correlation-Id: d20c053e-eac1-4249-ad6b-08de9f2473bb
X-SM-outgoing: yes
X-MS-Exchange-SenderADCheck: 1
X-MS-Exchange-AntiSpam-Relay: 0
X-Microsoft-Antispam-Untrusted:
 BCL:0;ARA:13230040|82310400026|36860700016|7416014|376014|1800799024|56012099003|22082099003|18002099003;
X-Microsoft-Antispam-Message-Info-Original:
 =?us-ascii?Q?zaCyPvIEwdFBdQcTz98hcKaIT4COeiZIsW5zd15KaY/ZE/pNTq8WhfaTFmj+?=
 =?us-ascii?Q?QtQbRGIODVx25JMHiZX+jfGZv4g7OLNPoblnGRaX3WmVPRlcxSI+pTV7dda2?=
 =?us-ascii?Q?qfwyJHcz5mBoOyPnzJIcV0yrvYbNyhAS7Kc7yB78oRXhQJs4vx1nhATrDLpl?=
 =?us-ascii?Q?zdpI7Ic8yVMiVvFgm0wi9IpTLcSALibeVPsdHoPhjZ7aClYI1Vzp116EKMbG?=
 =?us-ascii?Q?IrtStWCy2FJNWYc1eolAQFHVCr5abGwaN/3/II7IwYNqw8mn/vQbsMpMlaVs?=
 =?us-ascii?Q?j4M4OqS7xr5i7AgA8GzWCPMIjTcvjnDJ9BCPoXrHP4i0f8WHykgCXci2USMY?=
 =?us-ascii?Q?DjB8SJ9ojr28Ld9GVeZjXEfxXmUcp1sPF9N5RxylrbP3y5TCX0mYkteYTgZe?=
 =?us-ascii?Q?115iuvRzmxLSySlRXaLDHzV2jrt0cRfxQjNxPKRJr5FM69Tv07dMuALZVrv5?=
 =?us-ascii?Q?xv4LtBGBOsz0Vu+ihDL9k6aDj6JTEwrmr5W92hXqqqB7Wu5aJbUEE69F/tkq?=
 =?us-ascii?Q?TEp6Oe6ZZ7cN3vqjy48mxQETPyoa1/A+Rijj2JQlML3hYMchbFcd8JiEL+ki?=
 =?us-ascii?Q?TKCHRhC3rp44XqRjuXGaERO9MxX7NwzgK0b886KOrotTlKMuqHRAtEYZCkhT?=
 =?us-ascii?Q?kXpsYYSBdU8K18B7JcyAJSRADQLDwV6meVwweaWdYOiMKz/qnRqd8SgsZfdf?=
 =?us-ascii?Q?UWPO1kcbgotTXAtGoM28iQFfeoHhDEYKKXyrJFN2FBoLg2ykMqESqLVlQPyu?=
 =?us-ascii?Q?SYpbkV/31UYUgQwBvcHqAXXypHJL3oMqQwdo7XSUjPd7yYHfWi8UCoRX2wtV?=
 =?us-ascii?Q?mhn1t97xGIjuQAKtQw+D8TsUoJN4kzW+JZ1OLcTP3lgwXi79haRV2AHD/20q?=
 =?us-ascii?Q?Q7YntSSzY6cQPDKzZj1H/eX9AhQ6rZsnUjIS4wHa+PB5Ch/f3qq1SQwk7w0N?=
 =?us-ascii?Q?qx7xOIeKRniFN6Fw4fymO0c6kv6zl+5bHe1IDh9Kb3KRoh1GWqurMY26uJ0l?=
 =?us-ascii?Q?ok7QGSQT64CcKz9BRVhzJX3QDUwQMdYgBLBVl8SJmYRbUrCrjHOsCW+FFQ75?=
 =?us-ascii?Q?YsbOmHLRct/8givPyFjsqSoBwV7RnilXjlozpa3jVlFo6dnI++nuYpjmK7VH?=
 =?us-ascii?Q?nCsxJj8tVpEXUJNs+HpYVyn2/cAJSkzF4G2MmXOYzMI3qHyJbVGTSPi3vpV5?=
 =?us-ascii?Q?/8VQA3v5sNHcFKsA3AZVVvZyrBEzPsIPgMTP72I1c2Gi0WRkeT5Lf9TIgDjT?=
 =?us-ascii?Q?3LivYm/uQfan6M3mSrIbh79Zgrj67aqKL7w6c9HLtw=3D=3D?=
X-Forefront-Antispam-Report-Untrusted:
 CIP:213.95.148.172;CTRY:DE;LANG:en;SCL:1;SRV:;IPV:CAL;SFV:NSPM;H:denue6es012.ebgroup.elektrobit.com;PTR:eth1-fw1-nbg6.eb.noris.de;CAT:NONE;SFS:(13230040)(82310400026)(36860700016)(7416014)(376014)(1800799024)(56012099003)(22082099003)(18002099003);DIR:OUT;SFP:1102;
X-Exchange-RoutingPolicyChecked:
 bnwiBB+t/cwxNzPfHmjwZkARJP1jQRpbD69Ik4+flBM6hZCHYA3kDkyT6nchj72makfNVxHsZxRnRL/HOMgXT/EC2aaRDzRwX1eL2SpW3BdEdZXHqP74G9eeUZZ/FYhN1zjqzsgoFMpLm5y/JDmjSf5Rl1FN9U9FA8qXOt/SWslxrXk5OUTgztj2ZORXoYLurlkngxPsq2Y+drbqxVr5gnjkRXMICRWKV9hXIpkxSI1ZJ1U3ik7+SHrmHG7pu4qdzH0i5aSblpehj68bnfeVTKZ5UG4ok6IgAm+++LQ5LkESWV4IqJvJ91hR86osZvdjkGXN93PTl6pvoab1XLmPLg==
X-MS-Exchange-Transport-CrossTenantHeadersStamped: SA1PR08MB7598
X-MS-Exchange-SkipListedInternetSender:
 ip=[40.93.1.111];domain=BYAPR08CU003.outbound.protection.outlook.com
X-MS-Exchange-ExternalOriginalInternetSender:
 ip=[40.93.1.111];domain=BYAPR08CU003.outbound.protection.outlook.com
X-MS-Exchange-Transport-CrossTenantHeadersStripped:
 CH2PEPF00000142.namprd02.prod.outlook.com
X-MS-PublicTrafficType: Email
X-MS-Office365-Filtering-Correlation-Id-Prvs:
	88449686-68c7-4618-5e8a-08de9f2470c2
X-Microsoft-Antispam:
	BCL:0;ARA:13230040|82310400026|14060799003|35042699022|156008|36860700016|7416014|376014|1800799024|56012099003|22082099003|18002099003;
X-Microsoft-Antispam-Message-Info:
	=?us-ascii?Q?NgRjUcgojgo4WxXh9i3RXfz+AYTQbmhx6sfQoP4Vl29GiXM3/ffCqJAJyexj?=
 =?us-ascii?Q?4CowkPPEmbWAtQ8NU8hU4daO4xpoMrh16wBugM3LdGFF00t4LBGIwdLf/M6g?=
 =?us-ascii?Q?etF8llXhhkI5W/xJo2f0RrUB70SyCQMcra2OH2I0377NTnF3zc/srMF+50/h?=
 =?us-ascii?Q?cLbpy73VccP4wrLjTTTQCW17CAVSTPXhgmG8uZ61aYtEpTeCLHBv6gLn8o2B?=
 =?us-ascii?Q?97CxOv2mvrM9BV30F0C1/FsmRV+BmXpE6GBJcMtkt6gJd2DMYbQOFTQpXf1u?=
 =?us-ascii?Q?4TtWHPfCqOvNz1/fLFjEd1axuYmjUEdOjvYfvN+7a2Koi2iZS8+d3RNOnfxe?=
 =?us-ascii?Q?55ADW5HsWKQK1y9lVcA26sskeYL1ANDT9vSNtSW4g466JTEOuhDLLtLeSzG9?=
 =?us-ascii?Q?ceURlCKhcEs5h1okSHVQTDsr1rKuS9DyOjH714u3fHoYJaNIyZU+LtoHXF5I?=
 =?us-ascii?Q?QAwisKyKSHlHnuBSskbpymfrFxyldP0MtW0Oe0J7sezX15j1+1+hSSJss4FK?=
 =?us-ascii?Q?BTkpocDCO6avJILQF6ZceWFZHGgIxEchbJa9YCAMqtQtjBSq6Lpo/nBz6FEC?=
 =?us-ascii?Q?3Krqg9uSZ5eOoZWl6DFj5m8I2CApS66E/Q4YEvl5nL+7eH6ofpXm5h4sb0W2?=
 =?us-ascii?Q?HHjFTQdHSlqankbmy+AG4yS7Dqm06+McZpuqOGr3hGtMan7kPzxQZV5eUYYK?=
 =?us-ascii?Q?ZqFdP1bROzcuOmbxySdEhZDkatiBOl+NwGuv5BPH+L7U61UOVYWAf6nMbKtT?=
 =?us-ascii?Q?xiwBvNYkaNDKtx+GQAE6thDKE5AwgAFOrvphAvLu/S5oJdiiCsXODU8VA6pa?=
 =?us-ascii?Q?xXlihTPNID66knPbOazKzl9FqYzohTNAmZDejEBj1tZhf7rgK9gpHvcRG3og?=
 =?us-ascii?Q?UbJJHf18tdXgCYEaYVrExEm/vmi3VvRmJ53GaRfoq9hMMjA+M95uHCpnvEYv?=
 =?us-ascii?Q?NK1fBzOtBL31NjUz+GXWo3VsZW6fBNu1viyQ+kkLAFOj+VO3QeIsPaG5ss23?=
 =?us-ascii?Q?KvAGsHSR0GDRmYG2X3i6cBO/yeHSYkuD1gXD+oX1+hzgM2vhInyxNIVTJZul?=
 =?us-ascii?Q?HJyfIGF7upxrUiMh5EnyZ5/2adCVh7e60D8DjpMpa4REsOrJ5dTHGpasjGGR?=
 =?us-ascii?Q?ICT/9GYu5YlLMdgbdpKhl8BvyBi63R6GhoxqakNQqfirKRMPZyqAAZHLcl8J?=
 =?us-ascii?Q?xhV2NwEQUkr4ny0+NE01FLDiW+bnDiz1yY+15xB66LruG3wO5bwRL05/GSup?=
 =?us-ascii?Q?WZTm7z+ImTMl2mI3OBKCh9JHUQsReBVIZWQqLI0kkA=3D=3D?=
X-Forefront-Antispam-Report:
	CIP:4.79.107.243;CTRY:US;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:BYAPR08CU003.outbound.protection.outlook.com;PTR:mail-byapr08cu00307.outbound.protection.outlook.com;CAT:NONE;SFS:(13230040)(82310400026)(14060799003)(35042699022)(156008)(36860700016)(7416014)(376014)(1800799024)(56012099003)(22082099003)(18002099003);DIR:OUT;SFP:1102;
X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1
X-MS-Exchange-AntiSpam-MessageData-0:
	OvvuozzQHNqqjIJeWcdp0QnIe9/kqM1WJCwMRXQseyFUahlOGYV7uyTrRpDuoPb8pxUU8vDniAi6wJtA2rqY0qYuM9cKMwZHBT7y83PShyxYc/QylGSn7coOaKzzLAKU5IpkaOqvrPaLNXX48GB8DP+WXFN8Uq9arrLAnVN8BwelimuTD3rkQozv2Y/MhYdpbrHDRV3w7zcIklYC+EnMC9KNHRteIk0y4U/vgu98LBMQ7OmSQrWnOW7JWju1VdMWVbfJESZbOiVyWx2/puuv9dJXO6/qzE03OhQsH+IV+c8tAi4r0x/JBkD8VGlvkTBax53FrKj7CyFqv5HCuLu2insFkOjnZz0Bknx/hf0+YH1aPX2gJbSw14Oir1InySugR25NANwTn4Dm2CaIsL8RqahSZJuwN3f0EtTF3j8iVivtkzraD4wHQ3DZyr3mBUJm
X-OriginatorOrg: elektrobit.com
X-MS-Exchange-CrossTenant-OriginalArrivalTime: 20 Apr 2026 21:33:23.9523
 (UTC)
X-MS-Exchange-CrossTenant-Network-Message-Id: d20c053e-eac1-4249-ad6b-08de9f2473bb
X-MS-Exchange-CrossTenant-Id: e764c36b-012e-4216-910d-8fd16283182d
X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=e764c36b-012e-4216-910d-8fd16283182d;Ip=[4.79.107.243];Helo=[usbth1es003.ebgroup.elektrobit.com]
X-MS-Exchange-CrossTenant-AuthAs: Internal
X-MS-Exchange-CrossTenant-AuthSource: TreatMessagesAsInternal-CH2PEPF00000142.namprd02.prod.outlook.com
X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem
X-MS-Exchange-Transport-CrossTenantHeadersStamped: SA6PR08MB10353
X-purgate-ID: tlsNG-720697/1776720818-8057B161-3C65FB2F/0/0
X-purgate-type: clean
X-purgate-size: 3486

This commit adds arch independent helper functions to determine whether a
view is valid or visible. This makes it possible to determine whether a
view is valid and/or visible in common altp2m routines (namely,
altp2m_init_by_id).

This is commit 2/5 of the altp2m view validity/visibility phase.

Signed-off-by: Rose Spangler <Rose.Spangler@elektrobit.com>
Signed-off-by: Aqib Javaid <Aqib.Javaid@elektrobit.com>
---
v6: Introduced this patch.

    These functions could be used to replace the equivalent calls in x86
    code if that would be preferred. For now, they are only used in common
    code.

    The altp2m_view_is_valid function also has overlap with the
    altp2m_is_ept_valid function, but that function has an additional
    ASSERT and check that idx < d->nr_altp2m, so I wasn't sure if that
    function should be repurposed for this. If renaming that function
    instead of introducing a new function on x86 would be preferred, then I
    can do that.

    Additionally, these functions don't have bounds checks since the
    functions are intended to replace code which don't have bounds checks
    currently. Bounds checks could be added here if that would be
    preferred.
---
 xen/arch/arm/altp2m.c             | 10 ++++++++++
 xen/arch/arm/include/asm/altp2m.h |  3 +++
 xen/arch/x86/include/asm/altp2m.h | 10 ++++++++++
 3 files changed, 23 insertions(+)

diff --git a/xen/arch/arm/altp2m.c b/xen/arch/arm/altp2m.c
index e741648ff5a1..0e19e197e826 100644
--- a/xen/arch/arm/altp2m.c
+++ b/xen/arch/arm/altp2m.c
@@ -27,6 +27,16 @@ void altp2m_set_vcpu_idx(struct vcpu *v, unsigned int idx)
     v->arch.ap2m_idx = idx;
 }
 
+bool altp2m_view_is_valid(struct domain *d, unsigned int idx)
+{
+    return d->arch.altp2m_state[array_index_nospec(idx, d->nr_altp2m)] != ALTP2M_INVALID;
+}
+
+bool altp2m_view_is_visible(struct domain *d, unsigned int idx)
+{
+    return d->arch.altp2m_state[array_index_nospec(idx, d->nr_altp2m)] == ALTP2M_VISIBLE;
+}
+
 /*
  * Local variables:
  * mode: C
diff --git a/xen/arch/arm/include/asm/altp2m.h b/xen/arch/arm/include/asm/altp2m.h
index 05beb7f698a7..fbe66ad5536d 100644
--- a/xen/arch/arm/include/asm/altp2m.h
+++ b/xen/arch/arm/include/asm/altp2m.h
@@ -30,6 +30,9 @@ static inline bool altp2m_supported(void)
 uint16_t altp2m_vcpu_idx(const struct vcpu *v);
 void altp2m_set_vcpu_idx(struct vcpu *v, unsigned int idx);
 
+bool altp2m_view_is_valid(struct domain *d, unsigned int idx);
+bool altp2m_view_is_visible(struct domain *d, unsigned int idx);
+
 /* The current state of an altp2m view */
 enum altp2m_view_state {
     ALTP2M_INVALID,
diff --git a/xen/arch/x86/include/asm/altp2m.h b/xen/arch/x86/include/asm/altp2m.h
index 43dd5d2acd9c..56ae19b24b42 100644
--- a/xen/arch/x86/include/asm/altp2m.h
+++ b/xen/arch/x86/include/asm/altp2m.h
@@ -65,6 +65,16 @@ static inline void altp2m_set_vcpu_idx(struct vcpu *v, unsigned int idx)
     vcpu_altp2m(v).p2midx = idx;
 }
 
+static inline bool altp2m_view_is_valid(struct domain *d, unsigned int idx)
+{
+    return d->arch.altp2m_eptp[array_index_nospec(idx, MAX_EPTP)] != mfn_x(INVALID_MFN);
+}
+
+static inline bool altp2m_view_is_visible(struct domain *d, unsigned int idx)
+{
+    return d->arch.altp2m_visible_eptp[array_index_nospec(idx, MAX_EPTP)] != mfn_x(INVALID_MFN);
+}
+
 /*
  * Alternate p2m: shadow p2m tables used for alternate memory views
  */
-- 
2.34.1



From xen-devel-bounces@lists.xenproject.org Mon Apr 20 21:33:51 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 20 Apr 2026 21:33:51 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1287901.1568348 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wEwFZ-0000Kk-8N; Mon, 20 Apr 2026 21:33:49 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1287901.1568348; Mon, 20 Apr 2026 21:33: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 1wEwFX-0000Ep-TK; Mon, 20 Apr 2026 21:33:47 +0000
Received: by outflank-mailman (input) for mailman id 1287901;
 Mon, 20 Apr 2026 21:33:40 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <Rose.Spangler@elektrobit.com>) id 1wEwFP-00077I-Ib
 for xen-devel@lists.xenproject.org; Mon, 20 Apr 2026 21:33:39 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wEwFO-00CDCY-Ua
 for xen-devel@lists.xenproject.org; Mon, 20 Apr 2026 23:33:38 +0200
Received: from [10.42.69.2] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <Rose.Spangler@elektrobit.com>)
 id 69e69b8e-2eae-0a2a0a5409dd-0a2a45028f2e-36
 for <xen-devel@lists.xenproject.org>; Mon, 20 Apr 2026 23:33:38 +0200
Received: from [52.101.85.111]
 (helo=BYAPR05CU005.outbound.protection.outlook.com)
 by tlsNG-720697.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.1)
 (envelope-from <Rose.Spangler@elektrobit.com>)
 id 69e69bb1-af86-0a2a45020019-3465556f403e-3
 for <xen-devel@lists.xenproject.org>; Mon, 20 Apr 2026 23:33:38 +0200
Received: from BN9PR03CA0384.namprd03.prod.outlook.com (2603:10b6:408:f7::29)
 by LV2PR08MB10983.namprd08.prod.outlook.com (2603:10b6:408:34f::21)
 with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9818.31; Mon, 20 Apr
 2026 21:33:33 +0000
Received: from BN1PEPF0000468C.namprd05.prod.outlook.com
 (2603:10b6:408:f7:cafe::53) by BN9PR03CA0384.outlook.office365.com
 (2603:10b6:408:f7::29) with Microsoft SMTP Server (version=TLS1_3,
 cipher=TLS_AES_256_GCM_SHA384) id 15.20.9791.48 via Frontend Transport; Mon,
 20 Apr 2026 21:33:33 +0000
Received: from usbth1es003.ebgroup.elektrobit.com (4.79.107.243) by
 BN1PEPF0000468C.mail.protection.outlook.com (10.167.243.137) with Microsoft
 SMTP Server (version=TLS1_3, cipher=TLS_AES_256_GCM_SHA384) id 15.20.9791.48
 via Frontend Transport; Mon, 20 Apr 2026 21:33:33 +0000
Received: from usbth1es003 (localhost [127.0.0.1])
 by usbth1es003.ebgroup.elektrobit.com (Postfix) with SMTP id 4fzzHw3S7bz1wdM; 
 Mon, 20 Apr 2026 14:33:32 -0700 (PDT)
Received: from BYAPR08CU003.outbound.protection.outlook.com
 (mail-byapr08cu00306.outbound.protection.outlook.com [40.93.1.110])
 (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)
 key-exchange secp384r1 server-signature RSA-PSS (2048 bits) server-digest
 SHA256) (No client certificate requested)
 by usbth1es003.ebgroup.elektrobit.com (Postfix) with ESMTPS;
 Mon, 20 Apr 2026 14:33:32 -0700 (PDT)
Received: from BY1P220CA0026.NAMP220.PROD.OUTLOOK.COM (2603:10b6:a03:5c3::17)
 by LV3PR08MB9194.namprd08.prod.outlook.com (2603:10b6:408:21f::9)
 with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9818.33; Mon, 20 Apr
 2026 21:33:28 +0000
Received: from SJ1PEPF000026C9.namprd04.prod.outlook.com
 (2603:10b6:a03:5c3:cafe::89) by BY1P220CA0026.outlook.office365.com
 (2603:10b6:a03:5c3::17) with Microsoft SMTP Server (version=TLS1_3,
 cipher=TLS_AES_256_GCM_SHA384) id 15.20.9791.48 via Frontend Transport; Mon,
 20 Apr 2026 21:33:28 +0000
Received: from denue6es012.ebgroup.elektrobit.com (213.95.148.172) by
 SJ1PEPF000026C9.mail.protection.outlook.com (10.167.244.106) with Microsoft
 SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id
 15.20.9791.48 via Frontend Transport; Mon, 20 Apr 2026 21:33:28 +0000
Received: from ubuntu.localdomain (10.10.178.50) by
 denue6es012.ebgroup.elektrobit.com (10.243.160.140) with Microsoft SMTP
 Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id
 15.2.2562.35; Mon, 20 Apr 2026 23:33:23 +0200
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@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=elektrobit.com header.i="@elektrobit.com" header.h="From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck"; dkim=pass header.s=selector1 header.d=elektrobit.com header.i="@elektrobit.com" header.h="From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck"
ARC-Seal: i=2; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=pass;
 b=JJB+zpvg33Is5t+iVLLZsvNHr1WK4sNhpdBNE8wTZLFMJpy2M6wrtruiw9/c1Zrk8U4lw+WQixui3SzSk2ABMPolKsU3hFDyVG7bsztwtU99J086emY7/U6Qde6oihBwzbF1tyO7RchDdh6mRj1YMTrGwGRhoJDSdstC8vuLK7TL1ECOfi67X4NKWkhqM1BB1tANE1AW/xQwPuLdN/fAOg6xQQ8j5Ucx2rJWt3JmnNp9lyZZcZqGBLUNQcaSgW7ywB62FYGWWyIqJmG0r17ZULppdXvq+Zb6lZQhzPe30mQoFcJeZufVgiKg5aOkVgyDGcSq6e5Jk36noWj63hipUw==
ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com;
 s=arcselector10001;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1;
 bh=cnj600JVTUzVmDZRZYm/XxhEOfEfbLwT6rVorqjJHgk=;
 b=j5QLLsH29Ygz9Ofz+5c3Q8Ndx3wJRU6nNcx/HUG9Ll9YgNHPCHtQNMgal3aRogjfr6RXm4hjSPbulE0LD7MSwFm2lF6mCLwyTNvh846+YK/Nb6Irq/2+pEo2ws0vFP1JdeG2VWPMSJJw2V9CuGbP6XlvqCIov5zwYDPF7n/AWJJDisN+aoV2N5rpblcHZ68q1XMSGtNe9hiwpIcldCqNKNJfHa4G3bVDW8Yb+89jFjNOlAX5NN89+9IvbeFbI1/IDo6qRsMozR0RiqC5vSZxrySslTi+Svxh4vZFMkPyN2OQQSXUT8L2VfCiFBYhfzZ1bq2rxMfqTq8+ra2zU7S4nA==
ARC-Authentication-Results: i=2; mx.microsoft.com 1; spf=pass (sender ip is
 40.93.1.110) smtp.rcpttodomain=amd.com smtp.mailfrom=elektrobit.com;
 dmarc=pass (p=quarantine sp=none pct=100) action=none
 header.from=elektrobit.com; dkim=pass (signature was verified)
 header.d=elektrobit.com; arc=pass (0 oda=1 ltdi=1
 spf=[1,1,smtp.mailfrom=elektrobit.com]
 dmarc=[1,1,header.from=elektrobit.com])
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=elektrobit.com;
 s=selector1;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck;
 bh=cnj600JVTUzVmDZRZYm/XxhEOfEfbLwT6rVorqjJHgk=;
 b=p4NOPhWWsiNKaIDAn+U2JJsdEM8tOV/+vQN9rNudlMNjagrc5l2qXS5bo+65WGaZQiNNzWuevsrjaOuSFJl/TQotXkc9GHCi385oU5btAaSdMFlqJ5I8gQd6Chmxm0ykMFvazuA56K+1pVp4HMIdUgW90ZpRDjlJqcsdCv2iRiM=
X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 40.93.1.110)
 smtp.mailfrom=elektrobit.com; dkim=pass (signature was verified)
 header.d=elektrobit.com;dmarc=pass action=none header.from=elektrobit.com;
Received-SPF: Pass (protection.outlook.com: domain of elektrobit.com
 designates 40.93.1.110 as permitted sender) receiver=protection.outlook.com;
 client-ip=40.93.1.110; helo=BYAPR08CU003.outbound.protection.outlook.com;
 pr=C
ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none;
 b=gAoq5k4IBmF04J6fsmGSwpLrXgn0LUf2YbnY121YLg5KhpemshZUgB4DhNBtNHP/ZZUpirVAf8dXsQFBDxm+irIfKMsjLDXwt94CBtG/mlxOj5zzt9Qg8Nh5TONBpU4T99s98IU1Iy5C6wOMVvYGs/+lNNhbUMYaQGHCWFgIcveLh8Xs2U+k9+D6/Uk1et7dzLyQKV6RrzfvcEYj6fVUnat2rVUxrylnpqBrrst5pB7IjEIE0mbD1yQe3iJd12ZVoEzxYeoMDQQ1j1XXvJWjZDfKm5ntz9Fj/GtO8zKlcz121O9GtmtZ6k4ynYP6CY0EB0s6Oxywv9oLI5n8a3vP5g==
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com;
 s=arcselector10001;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1;
 bh=cnj600JVTUzVmDZRZYm/XxhEOfEfbLwT6rVorqjJHgk=;
 b=Hltv94F6HbC+oIj8bafCHTNeznL0zCEyugnz2jb5rhOi+2iqqhzCUCS9ENt6XiIjgzohpWAXEMj/tJIHyjvl9cUgJA4XHSHlEkzo+Rl05Nh4tc3lr/zJ89pBGoG0+2Z4gvqRQNH70KwCmEPnAdKwam5YYtVaPM8sf/3u2ic3WpWkwHopiCaCdKepw5FTXSqyFBOv5Bp+yv1VoxtR1dpTIzR2mOQHu6AGc8N4itl6icXoCqehD+gwkr2Wf6FdGWtc+geJdX8g0y32wS3gb5r/0WlW7E8g77ExnSsbIurYFhu4RHQ7bCycTwQGmkFCUJ+f57Ky9xV4OA7BqxJZ7s+Ilw==
ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass (sender ip is
 213.95.148.172) smtp.rcpttodomain=lists.xenproject.org
 smtp.mailfrom=elektrobit.com; dmarc=pass (p=quarantine sp=none pct=100)
 action=none header.from=elektrobit.com; dkim=none (message not signed);
 arc=none (0)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=elektrobit.com;
 s=selector1;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck;
 bh=cnj600JVTUzVmDZRZYm/XxhEOfEfbLwT6rVorqjJHgk=;
 b=p4NOPhWWsiNKaIDAn+U2JJsdEM8tOV/+vQN9rNudlMNjagrc5l2qXS5bo+65WGaZQiNNzWuevsrjaOuSFJl/TQotXkc9GHCi385oU5btAaSdMFlqJ5I8gQd6Chmxm0ykMFvazuA56K+1pVp4HMIdUgW90ZpRDjlJqcsdCv2iRiM=
X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 213.95.148.172)
 smtp.mailfrom=elektrobit.com; dkim=none (message not signed)
 header.d=none;dmarc=pass action=none header.from=elektrobit.com;
Received-SPF: Pass (protection.outlook.com: domain of elektrobit.com
 designates 213.95.148.172 as permitted sender)
 receiver=protection.outlook.com; client-ip=213.95.148.172;
 helo=denue6es012.ebgroup.elektrobit.com; pr=C
From: Rose Spangler <Rose.Spangler@elektrobit.com>
To: <xen-devel@lists.xenproject.org>
CC: Rose Spangler <Rose.Spangler@elektrobit.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: [RFC PATCH v6 36/43] arm/altp2m: Add support for altp2m_activate_altp2m
Date: Mon, 20 Apr 2026 17:31:59 -0400
Message-ID: <20260420213206.208750-37-Rose.Spangler@elektrobit.com>
X-Mailer: git-send-email 2.34.1
In-Reply-To: <20260420213206.208750-1-Rose.Spangler@elektrobit.com>
References: <20260420213206.208750-1-Rose.Spangler@elektrobit.com>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit
Content-Type: text/plain
X-Originating-IP: [10.10.178.50]
X-ClientProxiedBy: denue6es012.ebgroup.elektrobit.com (10.243.160.140) To
 denue6es012.ebgroup.elektrobit.com (10.243.160.140)
X-EOPAttributedMessage: 1
X-MS-Exchange-SkipListedInternetSender:
 ip=[213.95.148.172];domain=denue6es012.ebgroup.elektrobit.com
X-MS-TrafficTypeDiagnostic:
	SJ1PEPF000026C9:EE_|LV3PR08MB9194:EE_|BN1PEPF0000468C:EE_|LV2PR08MB10983:EE_
X-MS-Office365-Filtering-Correlation-Id: af66887a-2855-4782-e58f-08de9f247970
X-SM-outgoing: yes
X-MS-Exchange-SenderADCheck: 1
X-MS-Exchange-AntiSpam-Relay: 0
X-Microsoft-Antispam-Untrusted:
 BCL:0;ARA:13230040|704162011799003|82310400026|36860700016|376014|1800799024|56012099003|22082099003|18002099003;
X-Microsoft-Antispam-Message-Info-Original:
 =?us-ascii?Q?Uh2alZfI8cvY69ZRMp1rHjI9gRX1WaTVRGxZeB7MfyVGUqhQawb1mQMLW/dB?=
 =?us-ascii?Q?+WeqCV1FQsBBb+UAAeAi5ct3Icll+0OTgFq/7r+/aZspRrAxmPRIweHhWymg?=
 =?us-ascii?Q?/euLExSWYpxBsKti40DOoySJSkXT4Ytu6TqwOuze4P/leGWYWwYJm9INygrb?=
 =?us-ascii?Q?AGvZJtcYXSNy9n0SCEyHMfxmbMQALJuCRaIYRGTTIA80UrS29uCNf3DIilFP?=
 =?us-ascii?Q?CX+hb+KCHi75gklep7lz3UHYNOoaqc3TqETmUNe1wZLF+vYP2anDj8c89lLd?=
 =?us-ascii?Q?/4qB1w8vFn72IBHRJr17AV6mWyTeibz7azfv20egypcUV0o96zN5GcTyVUfh?=
 =?us-ascii?Q?dvajhWTlxXDVqNWl1ybwslBygBHXfNIVEPAc3c4YusM1BC/QBjfRafMZcyDP?=
 =?us-ascii?Q?9pNbS4PbI69LQ+qE9Ki9BwUgdgTe9T4NVnAP13sxaGitt1H6bdz6wyZu5rfP?=
 =?us-ascii?Q?zVFd0rQLjNqofWC/nLDIXNHc6+5PsTXT85ci7Sf5kEBSOP2Fj+nPgN4O3uUx?=
 =?us-ascii?Q?4VQheZ1xQu2i7x27kr32Ee6bdDD5Hae3Y4SQFSjn0FLtIPSQOQvBPqVf9A7I?=
 =?us-ascii?Q?hSZebGKaRgBeEYbDqkTLli5s6SZtD0ucp8jK5cPxtY00a/LKPlcUBRuFIBN7?=
 =?us-ascii?Q?Ct5FPIbHtdxVMzviwbNRY+y1BkzoUnAA8UPXd4PyAX/mQidJQMeFyHd3fr+B?=
 =?us-ascii?Q?56omWv7MFhJ/Q0LGzHnlUwbwrryfF0//U6feIH863nIJYqrIJ9ejEIDR8YP7?=
 =?us-ascii?Q?7GRfRdhoO4gfZGU7bUYbSi5k8q7vnmagVXHKdINCWd5J47UNdVS0k3qc2Vdp?=
 =?us-ascii?Q?44yembUdUsi56iivuYjLASMUcgwVSiAwF3ZD4x5V4IF44PsGp3dNop9pKq1G?=
 =?us-ascii?Q?/ypI9Zge5gi+Q1Ak6+TxDULMZeOG1UXpN2PdKWkutzgfk3DgmrQFBVfUdZEJ?=
 =?us-ascii?Q?HFigu/LYhzisNkoRyIqcaoByO2QioSokfU95USGxFvHxncYX8tbx4jInFrws?=
 =?us-ascii?Q?YG//SlKlQnU9OXJQWcamnPVNhTZ6Orx71e7OV2YaMYdMHymSr9YOaP+Fa2Sb?=
 =?us-ascii?Q?Q51bheCl31Fxb7cNlMxWwDbcfbR4FuuX3etzl/q3UfAd2dD0RwSld6eJ4g86?=
 =?us-ascii?Q?R0B/Dia8N7sjQFflJe8Q4FTacR6fsnN89g=3D=3D?=
X-Forefront-Antispam-Report-Untrusted:
 CIP:213.95.148.172;CTRY:DE;LANG:en;SCL:1;SRV:;IPV:CAL;SFV:NSPM;H:denue6es012.ebgroup.elektrobit.com;PTR:eth1-fw1-nbg6.eb.noris.de;CAT:NONE;SFS:(13230040)(704162011799003)(82310400026)(36860700016)(376014)(1800799024)(56012099003)(22082099003)(18002099003);DIR:OUT;SFP:1102;
X-Exchange-RoutingPolicyChecked:
 oM0N2lnKFcIFmgc6J4Uw3Cpnbg/mLsvjjUGL15U7MwGZYGzDY6JN8QXyuGfSYjDHIj31paAyq7/tyov4naj90+z85U/nIT16OWjFLu/AJ8Th7N0NCbcX2Mijs5138+MPhRXFq4QAmZ4Kamne2y7fl85tgIu1CmWK19kaEuIvxm7qh8nDfHuh+T1F68kxoMbk2NXHl/NzYwZpxcFjmRRG3h1kQAiJtpRl0rSw8lyF7c+e7s1/QG5NQFPgs2o9Z9Afi7XSL6Aem/onp1JWX7Vt4IKoN/ERPIRM/mKQzZds0l4cikYBJVrYaxV36VkQKnmDlmbYiiT05GTainCw+zG1yw==
X-MS-Exchange-Transport-CrossTenantHeadersStamped: LV3PR08MB9194
X-MS-Exchange-SkipListedInternetSender:
 ip=[40.93.1.110];domain=BYAPR08CU003.outbound.protection.outlook.com
X-MS-Exchange-ExternalOriginalInternetSender:
 ip=[40.93.1.110];domain=BYAPR08CU003.outbound.protection.outlook.com
X-MS-Exchange-Transport-CrossTenantHeadersStripped:
 BN1PEPF0000468C.namprd05.prod.outlook.com
X-MS-PublicTrafficType: Email
X-MS-Office365-Filtering-Correlation-Id-Prvs:
	a30719ed-e8e8-437e-8cd8-08de9f247630
X-Microsoft-Antispam:
	BCL:0;ARA:13230040|704162011799003|82310400026|14060799003|156008|35042699022|36860700016|376014|1800799024|56012099003|22082099003|18002099003;
X-Microsoft-Antispam-Message-Info:
	=?us-ascii?Q?UaOWSU4C7gtwiy6SYLuHejsLGVBMfrgtLOgRL1QL3plnvxesoD1dVxrIC2ow?=
 =?us-ascii?Q?uPQDgq89tvFFIHbPVVkGV6JK1JsmEJ33OYGhBGQ1+3SLF9VlADZA0VaVOS1q?=
 =?us-ascii?Q?gbL3YgMC+z6/izaP0588i/k/vgoY+8kv2FOq5FvxS8H5XispyB+v3NcbBY3H?=
 =?us-ascii?Q?6SFuL1WUXvMvUwPyR3mJgR1e9cWj0yMh7auAb4mGBxZ9u47B16dkv3oTAOGV?=
 =?us-ascii?Q?EjZGcqpPUdOGgKueNsj6ggCR6cr3d7OKZoKxrN6sV4u/sMSSdFxgwkvfyx0b?=
 =?us-ascii?Q?X0Bny37KB+NDS7o8XXuuiXP9l7KuSl2eNpOA5yQmJd9Qa97crZbw0BHEHW0b?=
 =?us-ascii?Q?XkK+n8uLMx9qiQelsLBuGoFyXYYKP8irTNF+WR7S1N+BjV+/PzVnNvMFNEXO?=
 =?us-ascii?Q?HoRkHQ7Hvk76dR7+uYupBoBh/4FUPS/O8QiTM9FBTMnSDbdPH0sdtptflI20?=
 =?us-ascii?Q?xxFTYXiOHHlluXr2oxps/e/4r+uCLsZLrCu7cTMN/z+c0AVkg/QE5UpAAMw3?=
 =?us-ascii?Q?mmmW+rXa0nx3pTrpQURRsbPjtaXMPSlYiP+jL/js6lCQrZTibJXF6T+hE2Z6?=
 =?us-ascii?Q?rNM6UW3ZirJFRkesCyXwPqd510UFKiLY2XHz+C8Nzc6HyzriYqnuqKOhM1H4?=
 =?us-ascii?Q?fXkbTbWsQls8zTwfArJ4t2swVAVOZ0m1u3c4QHop4tIvqdr6oBzn+IzskLYj?=
 =?us-ascii?Q?s5Aaex7oTZ4zMh45MU1CobyQsjg1ZFedhNPyUyAJNjNCvQYTF585jSCV0NRt?=
 =?us-ascii?Q?XxcG6uapy0tLLoH79t2ZtEXV8ntBlQVME1vxAqxzXf422mb6vficfR0BRzqm?=
 =?us-ascii?Q?F6BcrQmx9bz+CfWMf9ys2u7Qg9SM9JrOQjO0z0gJiju09fq511CRLA5U8iu+?=
 =?us-ascii?Q?heTVv9keNbjHHadPy3usBrHmk2H4qxDJ1WHNPbd1t8CeHPn69Vrgol2Gn0G+?=
 =?us-ascii?Q?PBOX/d1gJUg9gXfZJZDDtabDodUZaks4CpBB54QPbcRYxIG4U6EryoiQzJTD?=
 =?us-ascii?Q?vUTASNXg2kZfSLijDyxoISn5M4chpH7ICy5X0IxjNjgv8aghXDBa/iuSLq7A?=
 =?us-ascii?Q?qytC9c72F4TDytF6XI1M8StJhUTI20cAk30CwfsGhGEVROclpQr8S0KyEqBK?=
 =?us-ascii?Q?fJjk3cerEJiyEaSCFufTLAVxpHI7kYWd0A=3D=3D?=
X-Forefront-Antispam-Report:
	CIP:4.79.107.243;CTRY:US;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:BYAPR08CU003.outbound.protection.outlook.com;PTR:mail-byapr08cu00306.outbound.protection.outlook.com;CAT:NONE;SFS:(13230040)(704162011799003)(82310400026)(14060799003)(156008)(35042699022)(36860700016)(376014)(1800799024)(56012099003)(22082099003)(18002099003);DIR:OUT;SFP:1102;
X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1
X-MS-Exchange-AntiSpam-MessageData-0:
	bf0ohAt3Rm0RoME2wmygY4/sAg1U4b/ak/eQexf2qA7bw5oP0Gj2MMpTYguV7xOIFY2TqYJjuqkjQovz61i0akbe9SRv+C2SPuxR8wOxL2djbIV1ZhwCYoeSW+Rh/4srsT0AImwiDfaYe8ci2JtmgB4HTaMdn0k06RiL6Kgrnwf7ql8d3EDMz5YypAi7t6ODG/1dUcCzbiFrLaRdVaSR140SbwUPLb3nSsSgIaHxnqChP7HY38ShUfMDrJog5WfksgCF2L13KTwd6CCP/2WoZ6dDtL0oDUjFOAyskzqlCE2vbH+wwyPO2latl2A6GdnSrw7ZVbkEFokPsnR3uLDfD/lmqGhX8EnReEMzt+EmZOWGZX2J/J6i2+4YFiiQ7HEMVxbHUn0MLS0uS4EvdO2lSBzsbhRUyssQ9KaE1k8ynjB6b+lVEsBy/tj7hYkWVukO
X-OriginatorOrg: elektrobit.com
X-MS-Exchange-CrossTenant-OriginalArrivalTime: 20 Apr 2026 21:33:33.3646
 (UTC)
X-MS-Exchange-CrossTenant-Network-Message-Id: af66887a-2855-4782-e58f-08de9f247970
X-MS-Exchange-CrossTenant-Id: e764c36b-012e-4216-910d-8fd16283182d
X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=e764c36b-012e-4216-910d-8fd16283182d;Ip=[4.79.107.243];Helo=[usbth1es003.ebgroup.elektrobit.com]
X-MS-Exchange-CrossTenant-AuthAs: Internal
X-MS-Exchange-CrossTenant-AuthSource: TreatMessagesAsInternal-BN1PEPF0000468C.namprd05.prod.outlook.com
X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem
X-MS-Exchange-Transport-CrossTenantHeadersStamped: LV2PR08MB10983
X-purgate-ID: tlsNG-720697/1776720818-884D5161-1D4C7D6B/0/0
X-purgate-type: clean
X-purgate-size: 3042

This commit adds the altp2m_activate_altp2m function on ARM. This makes it
possible to activate altp2m views in common altp2m routines (namely,
altp2m_init_by_id).

This is commit 2/2 of the altp2m_activate_altp2m phase.

Signed-off-by: Rose Spangler <Rose.Spangler@elektrobit.com>
---
v6: Introduced this patch.

    While the ARM version of this function is very similar to the x86
    version of this function, I still think it makes sense to have this
    implemented on both architectures instead of using a common
    implementation. A significant portion of the function would need to be
    #ifdef CONFIG_X86/#else CONFIG_ARM gated (like p2m->min_mapped_gfn vs.
    p2m->lowest_mapped_gfn on ARM, for example). This would become even
    more of an issue if other architectures implement altp2m in the future,
    so I think it's best to keep these architecture specific.
---
 xen/arch/arm/altp2m.c             | 26 +++++++++++++++++++++++++-
 xen/arch/arm/include/asm/altp2m.h |  4 ++++
 2 files changed, 29 insertions(+), 1 deletion(-)

diff --git a/xen/arch/arm/altp2m.c b/xen/arch/arm/altp2m.c
index aa48c17e11a3..aa56b3ca79b5 100644
--- a/xen/arch/arm/altp2m.c
+++ b/xen/arch/arm/altp2m.c
@@ -37,6 +37,31 @@ bool altp2m_view_is_visible(struct domain *d, unsigned int idx)
     return d->arch.altp2m_state[array_index_nospec(idx, d->nr_altp2m)] == ALTP2M_VISIBLE;
 }
 
+int altp2m_activate_altp2m(struct domain *d, unsigned int idx,
+                           p2m_access_t hvmmem_default_access)
+{
+    struct p2m_domain *hostp2m, *p2m;
+
+    ASSERT(idx < d->nr_altp2m);
+
+    p2m = d->altp2m_p2m[array_index_nospec(idx, d->nr_altp2m)];
+    hostp2m = p2m_get_hostp2m(d);
+
+    p2m_write_lock(p2m);
+
+    p2m->default_access = hvmmem_default_access;
+    p2m->domain = hostp2m->domain;
+
+    p2m->lowest_mapped_gfn = INVALID_GFN;
+    p2m->max_mapped_gfn = _gfn(0);
+
+    d->arch.altp2m_state[idx] = ALTP2M_VISIBLE;
+
+    p2m_write_unlock(p2m);
+
+    return 0;
+}
+
 int altp2m_set_view_visibility(struct domain *d, unsigned int altp2m_idx,
                                uint8_t visible)
 {
@@ -66,7 +91,6 @@ int altp2m_set_view_visibility_locked(struct domain *d, unsigned int altp2m_idx,
     return rc;
 }
 
-
 /*
  * Local variables:
  * mode: C
diff --git a/xen/arch/arm/include/asm/altp2m.h b/xen/arch/arm/include/asm/altp2m.h
index f8d0dd799a4a..192240f48c33 100644
--- a/xen/arch/arm/include/asm/altp2m.h
+++ b/xen/arch/arm/include/asm/altp2m.h
@@ -48,6 +48,10 @@ int altp2m_set_view_visibility(struct domain *d, unsigned int altp2m_idx,
 int altp2m_set_view_visibility_locked(struct domain *d, unsigned int altp2m_idx,
                                       uint8_t visible);
 
+/* Activate an altp2m view */
+int altp2m_activate_altp2m(struct domain *d, unsigned int idx,
+                           p2m_access_t hvmmem_default_access);
+
 #else /* CONFIG_ALTP2M */
 
 static inline bool altp2m_supported(void)
-- 
2.34.1



From xen-devel-bounces@lists.xenproject.org Mon Apr 20 21:33:53 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 20 Apr 2026 21:33:53 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1287906.1568359 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wEwFd-0000uc-Ea; Mon, 20 Apr 2026 21:33:53 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1287906.1568359; Mon, 20 Apr 2026 21:33: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 1wEwFb-0000oR-DP; Mon, 20 Apr 2026 21:33:51 +0000
Received: by outflank-mailman (input) for mailman id 1287906;
 Mon, 20 Apr 2026 21:33:42 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <Rose.Spangler@elektrobit.com>) id 1wEwFR-0007Sr-6k
 for xen-devel@lists.xenproject.org; Mon, 20 Apr 2026 21:33:41 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wEwFQ-00EgCp-HK
 for xen-devel@lists.xenproject.org; Mon, 20 Apr 2026 23:33:40 +0200
Received: from [10.42.69.11] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <Rose.Spangler@elektrobit.com>)
 id 69e69b9e-e002-0a2a0a5209dd-0a2a450be734-32
 for <xen-devel@lists.xenproject.org>; Mon, 20 Apr 2026 23:33:40 +0200
Received: from [52.101.52.87]
 (helo=BL2PR02CU003.outbound.protection.outlook.com)
 by tlsNG-42698a.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.1)
 (envelope-from <Rose.Spangler@elektrobit.com>)
 id 69e69bb3-212f-0a2a450b0019-34653457c753-3
 for <xen-devel@lists.xenproject.org>; Mon, 20 Apr 2026 23:33:40 +0200
Received: from SJ0PR03CA0097.namprd03.prod.outlook.com (2603:10b6:a03:333::12)
 by BN0PR08MB6920.namprd08.prod.outlook.com (2603:10b6:408:12c::6)
 with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9818.31; Mon, 20 Apr
 2026 21:33:36 +0000
Received: from MWH0EPF000C6185.namprd02.prod.outlook.com
 (2603:10b6:a03:333:cafe::af) by SJ0PR03CA0097.outlook.office365.com
 (2603:10b6:a03:333::12) with Microsoft SMTP Server (version=TLS1_3,
 cipher=TLS_AES_256_GCM_SHA384) id 15.20.9791.48 via Frontend Transport; Mon,
 20 Apr 2026 21:33:35 +0000
Received: from usbth1es003.ebgroup.elektrobit.com (4.79.107.243) by
 MWH0EPF000C6185.mail.protection.outlook.com (10.167.249.117) with Microsoft
 SMTP Server (version=TLS1_3, cipher=TLS_AES_256_GCM_SHA384) id 15.20.9791.48
 via Frontend Transport; Mon, 20 Apr 2026 21:33:35 +0000
Received: from usbth1es003 (localhost [127.0.0.1])
 by usbth1es003.ebgroup.elektrobit.com (Postfix) with SMTP id 4fzzHz0WFnz1wdW; 
 Mon, 20 Apr 2026 14:33:35 -0700 (PDT)
Received: from BN1PR07CU003.outbound.protection.outlook.com
 (mail-bn1pr07cu00307.outbound.protection.outlook.com [40.93.12.7])
 (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)
 key-exchange secp384r1 server-signature RSA-PSS (2048 bits) server-digest
 SHA256) (No client certificate requested)
 by usbth1es003.ebgroup.elektrobit.com (Postfix) with ESMTPS;
 Mon, 20 Apr 2026 14:33:34 -0700 (PDT)
Received: from BY1P220CA0019.NAMP220.PROD.OUTLOOK.COM (2603:10b6:a03:5c3::15)
 by DS1PR08MB10099.namprd08.prod.outlook.com (2603:10b6:8:215::22)
 with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9818.30; Mon, 20 Apr
 2026 21:33:30 +0000
Received: from SJ1PEPF000026C9.namprd04.prod.outlook.com
 (2603:10b6:a03:5c3:cafe::6c) by BY1P220CA0019.outlook.office365.com
 (2603:10b6:a03:5c3::15) with Microsoft SMTP Server (version=TLS1_3,
 cipher=TLS_AES_256_GCM_SHA384) id 15.20.9791.48 via Frontend Transport; Mon,
 20 Apr 2026 21:33:30 +0000
Received: from denue6es012.ebgroup.elektrobit.com (213.95.148.172) by
 SJ1PEPF000026C9.mail.protection.outlook.com (10.167.244.106) with Microsoft
 SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id
 15.20.9791.48 via Frontend Transport; Mon, 20 Apr 2026 21:33:30 +0000
Received: from ubuntu.localdomain (10.10.178.50) by
 denue6es012.ebgroup.elektrobit.com (10.243.160.140) with Microsoft SMTP
 Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id
 15.2.2562.35; Mon, 20 Apr 2026 23:33:26 +0200
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@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=elektrobit.com header.i="@elektrobit.com" header.h="From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck"; dkim=pass header.s=selector1 header.d=elektrobit.com header.i="@elektrobit.com" header.h="From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck"
ARC-Seal: i=2; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=pass;
 b=q5eh3nY18OETb0x5CzmhK2gh3rJ5UHCk7B3NbxzsIlfpG/12JqVNyJkyMhEq9qAKUN02uS7iL4txF0F5ta1U0povTkfjpL8/UcK8tM50NBDDZjHnoibF8zxa78GpvKA3vDedZAAaPlE3WaDLiQMXcghQEJuLFTVaPkXKniRHCUvMupHKuGPkrzeUeicaawEE29G0OPwt7ne5aGByTMigQ5MX/2lLwCRS0qRaoaMS0D3xG/n2B29hMVzCTunkDFIA80DTzWkHKZa9ZOF4pvDcRzsN4NMPiwzxoBWcp6ShbDtCE/9euYzBfmQ0S2e4iNAzetM1jlAFc2QQemt9vQKqMA==
ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com;
 s=arcselector10001;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1;
 bh=+mqQCFvGSShVoc1hxR4OmlozNt7Xc1M2crX/MK/P+3E=;
 b=xvaf4xOdNdbwG1AWjZkpkO7qrbMOd3QI8Hb4NIThX4LoNZ/emn6o44hWZklf9bTpoLhETwvf8455hW4+gbPquPv6WJBSCxMAJHDMiLPsqvTawiQ+w15xf60pDgvm4SAOpYDzdYUkkS339gPR9oPBD/jl8C/TRiVffOXBLrfTxQcFH/H7NVfRtISopWVkfTt2vAYu8e9vr6B7j8OzdHyOoxj4pBHB26E0jpUakcoHeIle4a1dOTKVehvKtSXdqjdkdQ1YgStdl32saG3ld6VPLImqm0pHlvHVfFoN9LFnult/XfJ45DdcTWuxS/0Ex9z3ZX90BZRBygVMW+GMdJ/bbg==
ARC-Authentication-Results: i=2; mx.microsoft.com 1; spf=pass (sender ip is
 40.93.12.7) smtp.rcpttodomain=amd.com smtp.mailfrom=elektrobit.com;
 dmarc=pass (p=quarantine sp=none pct=100) action=none
 header.from=elektrobit.com; dkim=pass (signature was verified)
 header.d=elektrobit.com; arc=pass (0 oda=1 ltdi=1
 spf=[1,1,smtp.mailfrom=elektrobit.com]
 dmarc=[1,1,header.from=elektrobit.com])
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=elektrobit.com;
 s=selector1;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck;
 bh=+mqQCFvGSShVoc1hxR4OmlozNt7Xc1M2crX/MK/P+3E=;
 b=iKhXIE8gnOu6bVbwCbc2pQ9szkdZudhqt3XNLdIH2zsp3YL2pb4ffNL31xtwO4DzXYC/zA81yCpgjmwPpcfKVodqMC3TdTlDv9DMW87M6bCNVCYO4Ldh5zYQ5+sTD3FvA0gBS+M1hHaKNqHSJW60iKJ0b4I6XgyGCFCEJQMSK0k=
X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 40.93.12.7)
 smtp.mailfrom=elektrobit.com; dkim=pass (signature was verified)
 header.d=elektrobit.com;dmarc=pass action=none header.from=elektrobit.com;
Received-SPF: Pass (protection.outlook.com: domain of elektrobit.com
 designates 40.93.12.7 as permitted sender) receiver=protection.outlook.com;
 client-ip=40.93.12.7; helo=BN1PR07CU003.outbound.protection.outlook.com; pr=C
ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none;
 b=vmXL+0Iw+nFTKu+TK/l3A8H8Md5QaUu8NOXhUPBn0W53/phPeGkD06YQ/KfnV4TxVWUtLVpFmwaEkMSnMVC4nM3lrhU8wOU/hvsIvAbCZu1MiNE7DMb4Q9HFNDOJcsXlgU/uXRslJhvJ1wBlMoYm08Hgkik4bPNDVVZEd34de9x0mvAQcrBpRzzNTBmv7U6JxWg5JxsIU7pwGTbfl5kt7l8sIvnrixuo7TZLpM3tbb97YfL/9JhWGJnUhW2lGEm1hWKxlMh7xP4/ISnlvd2/T5WsgWMiPgoekIsW1hDvuIp03nllINotcFJuimHueaJVy4iG/YYLGIMnbJcwzj+E/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=+mqQCFvGSShVoc1hxR4OmlozNt7Xc1M2crX/MK/P+3E=;
 b=XGAq2T+D08L/gbcGXTX/QqxenU2vVZeYhhUAFevLVEX+5X4lIeYWSo5YolAKLQkGAj7guH8eJdcvRyr/m9VU/X+rhxf52MNYBuTmNwLK4aEPchBMcUpPT/VzfNKiSp8Yp7Dv4tT0S7Mr2++VPxguZ7N5D9NTb+Wlp9GbHkYucau6aTxHe6ifLofekoniqSpJ9WWslOnIU58BKsC+PsjmFUMqn/Kv/xUKPTZwxvDIFSHA2lRbVfCQ4EtlvV8+9zXHGpazfRguYfE6Jqn5sX3c0JqnRWxil7q58BKmIU5Jc0Y+2PQhaMfiMYaAo9YXnp7C5hD6E71GKcAtXMUcJJ/sMA==
ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass (sender ip is
 213.95.148.172) smtp.rcpttodomain=lists.xenproject.org
 smtp.mailfrom=elektrobit.com; dmarc=pass (p=quarantine sp=none pct=100)
 action=none header.from=elektrobit.com; dkim=none (message not signed);
 arc=none (0)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=elektrobit.com;
 s=selector1;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck;
 bh=+mqQCFvGSShVoc1hxR4OmlozNt7Xc1M2crX/MK/P+3E=;
 b=iKhXIE8gnOu6bVbwCbc2pQ9szkdZudhqt3XNLdIH2zsp3YL2pb4ffNL31xtwO4DzXYC/zA81yCpgjmwPpcfKVodqMC3TdTlDv9DMW87M6bCNVCYO4Ldh5zYQ5+sTD3FvA0gBS+M1hHaKNqHSJW60iKJ0b4I6XgyGCFCEJQMSK0k=
X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 213.95.148.172)
 smtp.mailfrom=elektrobit.com; dkim=none (message not signed)
 header.d=none;dmarc=pass action=none header.from=elektrobit.com;
Received-SPF: Pass (protection.outlook.com: domain of elektrobit.com
 designates 213.95.148.172 as permitted sender)
 receiver=protection.outlook.com; client-ip=213.95.148.172;
 helo=denue6es012.ebgroup.elektrobit.com; pr=C
From: Rose Spangler <Rose.Spangler@elektrobit.com>
To: <xen-devel@lists.xenproject.org>
CC: Rose Spangler <Rose.Spangler@elektrobit.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.pau@citrix.com>, Stefano Stabellini <sstabellini@kernel.org>
Subject: [RFC PATCH v6 38/43] arm/altp2m: Add support for altp2m_init_by_id
Date: Mon, 20 Apr 2026 17:32:01 -0400
Message-ID: <20260420213206.208750-39-Rose.Spangler@elektrobit.com>
X-Mailer: git-send-email 2.34.1
In-Reply-To: <20260420213206.208750-1-Rose.Spangler@elektrobit.com>
References: <20260420213206.208750-1-Rose.Spangler@elektrobit.com>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit
Content-Type: text/plain
X-Originating-IP: [10.10.178.50]
X-ClientProxiedBy: denue6es012.ebgroup.elektrobit.com (10.243.160.140) To
 denue6es012.ebgroup.elektrobit.com (10.243.160.140)
X-EOPAttributedMessage: 1
X-MS-Exchange-SkipListedInternetSender:
 ip=[213.95.148.172];domain=denue6es012.ebgroup.elektrobit.com
X-MS-TrafficTypeDiagnostic:
	SJ1PEPF000026C9:EE_|DS1PR08MB10099:EE_|MWH0EPF000C6185:EE_|BN0PR08MB6920:EE_
X-MS-Office365-Filtering-Correlation-Id: ead1d366-7fa0-41f8-8d0e-08de9f247a8e
X-SM-outgoing: yes
X-MS-Exchange-SenderADCheck: 1
X-MS-Exchange-AntiSpam-Relay: 0
X-Microsoft-Antispam-Untrusted:
 BCL:0;ARA:13230040|82310400026|36860700016|376014|1800799024|56012099003|22082099003|18002099003;
X-Microsoft-Antispam-Message-Info-Original:
 =?us-ascii?Q?AOwhsdbYL4bDC9CWS7pnSrSlCuy24/CPyYIuRDv93TJHWsfLbWsvfAvXzB23?=
 =?us-ascii?Q?BUEx/nFfNsDXZEHYaYlpQPSKr1oJZzkYqu977j+kf4yeCgOprzLKs711mdR9?=
 =?us-ascii?Q?D+gPURAHuw/5KwEAj7AkBatFKUCH4dV93D0tDx7JxdPMKBTJYYs6LbvfiPCO?=
 =?us-ascii?Q?sjdnI1+Pg9G2l7bzxrn/48TBj3tcyKraYks8x3L6nEsbTOQkneUa8e/eAEtD?=
 =?us-ascii?Q?gHpW/+ztO3sZhyI9SjJE1sbVppg/KrNU+sh77BxqyRt7Krqi7kGKFz14l5G5?=
 =?us-ascii?Q?XVaugMWv/6cVzhlR1jZWIEZlCV9L/GBfTZyjP45dZPmGudKlSot/2MgKeG4d?=
 =?us-ascii?Q?VZSHFkzvDantKBs3RJ7MYm8fbYMrnQ0SXbVh0LJLUGMWy2AFHjrwGfgtSAEO?=
 =?us-ascii?Q?yrU4WANKw3YPbnLW9xl3ayyZrch5/UfLcD3co2feGTBVzLlYowcl6aOYETNs?=
 =?us-ascii?Q?hrvWbAp6L0sJxPwGQawz3ONyPb6oBQK1b+hiljn/pWdbaV/eAyOmyAjgJBJn?=
 =?us-ascii?Q?55eYdCceT4T3atSd/BKGNWvaHmTMGz+zi/wlQJuEpFiD5eJH/xeT9BtQvGsW?=
 =?us-ascii?Q?A7luczdYsuEtS4NihWjluj+RiP+MJh/6epqDVDz/zU6tC4Yd9qEQSHVdemwT?=
 =?us-ascii?Q?mR4kW2ybHvlOZNis4sMuN3ioGzCKUKEuiEaCgaFjcnFLlnUHszHhXUQVeRtp?=
 =?us-ascii?Q?67id44ztjRCnP8GGSWTVK73+wDz3GGtYHq2GAJtNC48Akz3aEHUkxzSNWYIv?=
 =?us-ascii?Q?Zxu3ADlaxnbdKGHm5f/+eKgxmqUxWp+sDwwEsYFf81gO7gy0PyOk3LQUHsQs?=
 =?us-ascii?Q?McdoLsOC+wu25vvhsiWMpInV1k9dly6w9g1+49ISwsuqJxeKJCp9h13XhSAs?=
 =?us-ascii?Q?Gg82aihpXr3FCsf8yHdx5mHjUSTl479IuTVAeqJ+b9X0B1ABr3A2R934B8FT?=
 =?us-ascii?Q?s+3ZNOTxFEDlcBgH6YibAaxJLh7pC2nppafAEgDhWxlRiLa4/pyfHonVuFL5?=
 =?us-ascii?Q?4WmC5PsZ+9vI3H54knGp/MBUaBayJ0waoeQgmEgZxFFJJj0e5LQPpVF1Apxx?=
 =?us-ascii?Q?/WRgtZXUpYhVjOhVCO5cwQHndB+PhdhX4inUeYBNXFCFT4+EjiO4y5NII5Lu?=
 =?us-ascii?Q?ZBpRzUkfNOFMWZ1wnsDvFR7T9wUUAMPNLEncyNliRiFjU7SYOk/2I4DwXgd6?=
 =?us-ascii?Q?ZZaVRw9PpaimwKP1E7DqumVIiwZj3945A+kWnyx0BqEV+5A97ydhAst3X0Ls?=
 =?us-ascii?Q?HYcjAvL1ZvK0orBpJR/L?=
X-Forefront-Antispam-Report-Untrusted:
 CIP:213.95.148.172;CTRY:DE;LANG:en;SCL:1;SRV:;IPV:CAL;SFV:NSPM;H:denue6es012.ebgroup.elektrobit.com;PTR:eth1-fw1-nbg6.eb.noris.de;CAT:NONE;SFS:(13230040)(82310400026)(36860700016)(376014)(1800799024)(56012099003)(22082099003)(18002099003);DIR:OUT;SFP:1102;
X-Exchange-RoutingPolicyChecked:
 uTiSGuTxkmOZwL4lNf+a06EX2VHSnKDXc0p8bU77+AJk4qLgrOulvZ/zlIlVJjuiXyGMFnJ5JZooI1B3T/SpjmADvic4/UJNvDFKUYD8Ug9x3KtqJLGXj8zWVH95BaX8+CrZsoOmJwiReqWTbENk6upZ1rGSlwh96fdWHjiQsnPoaDqgVgq5JViiQ8C+hg+P+FpFif8QsnToaKbZMDuEkIJfrBDBkAMxqEH49UItsjN/QG9yfy3KNcmiKPGmXtG7TIzy8oSpH5z1WMJOWNFmqkbMRPjsvZB6yVKJnJJLhsIvgDG5LtOiaN+XVlHjBk4I0+1MBdH86dpFRfHRWsySAQ==
X-MS-Exchange-Transport-CrossTenantHeadersStamped: DS1PR08MB10099
X-MS-Exchange-SkipListedInternetSender:
 ip=[40.93.12.7];domain=BN1PR07CU003.outbound.protection.outlook.com
X-MS-Exchange-ExternalOriginalInternetSender:
 ip=[40.93.12.7];domain=BN1PR07CU003.outbound.protection.outlook.com
X-MS-Exchange-Transport-CrossTenantHeadersStripped:
 MWH0EPF000C6185.namprd02.prod.outlook.com
X-MS-PublicTrafficType: Email
X-MS-Office365-Filtering-Correlation-Id-Prvs:
	3286eb50-8f0c-4385-be6d-08de9f247773
X-Microsoft-Antispam:
	BCL:0;ARA:13230040|36860700016|14060799003|35042699022|376014|82310400026|156008|1800799024|56012099003|22082099003|18002099003;
X-Microsoft-Antispam-Message-Info:
	=?us-ascii?Q?NnetbnwJvX18TCuumQ7Ji2CnoQdxRNOvamS3ZZBBWJ6LyzSfhU173tjFePus?=
 =?us-ascii?Q?PrELWA929vsHy1S4MAIni0ZJIe+CxfXRs6OMlXmilPDXWgh3J63BnM/t9BZf?=
 =?us-ascii?Q?yk8AENn78dYHZdsXliGhaY3ZBmsT2k1tWSW1vahcNUz99ldYyTVOXfuA5tWb?=
 =?us-ascii?Q?Ao0MjkOFj+v0IaZorY9Kk3Sz2ZC75o4w2kWwZud9IMRQYA6kj4LhZTCDXt7k?=
 =?us-ascii?Q?sKY6oKoIqg4E6LNJfc3o4g7nY4Mtlen7iqiC0yvnGgLYwQI6dfdPtseaUx5i?=
 =?us-ascii?Q?Nfm3NalUcL3UbzwDyP5aDxwGRrXLaqDtn6AjD5RmRCOOMdvRF2bUIT+PSl0n?=
 =?us-ascii?Q?ixIxXHseCfK8twl80EwxkOP/cWQT4/JGCIi1YTC+4WOTxnCYgSjGGwDmnni5?=
 =?us-ascii?Q?aVY1ulDCK6N7dmEm+uAZ4//v54wu4qteQUPuB/JeIEbISLsgzegY15SzqKfP?=
 =?us-ascii?Q?8MIeWsZ+vyxOVU2SxwVkUIQuku3dCBBvYtDplfeAXOCx/vq+SzToU2AFVZWK?=
 =?us-ascii?Q?Iq64TwlJE2Pay6vNTlD7OX042ELK0Z/ocUbVRdxiS/SmqEWM5NFIiKFttQk4?=
 =?us-ascii?Q?2seENOqlYHB5sVC19aTj35RHkk3eIcSWzKIBTmq2/4Y2FrpRoJgT4fW4qtTo?=
 =?us-ascii?Q?sVzHxph3l8652hz7VLAXzl1BpPSqXxgndpfw569yLNzKGYcxVUVzlVTGtuRN?=
 =?us-ascii?Q?hd6Soi3R6gIEc45KOAfqXSYOXVEXa4TVaWII2Md/+ozbknoWWxZ+jAe7Nz5M?=
 =?us-ascii?Q?RMy84Ky4IN7Y1mhcpFShILwKMQXpk/20LfQ4PbYoT1jOqNnbdIOihgka0DFI?=
 =?us-ascii?Q?RlMsn75PppN1634MjXK8tg15SEOQN2aQf219jT7uBnsVhmJNGsR5S6n9auQB?=
 =?us-ascii?Q?CgIHAYn3vT4mmsahPmDe3C2LoBqW2davl8e/nz7+s5TYT9Hemv+jMaVE5UHj?=
 =?us-ascii?Q?99UKPDHZtCX46zB/XmluGQagxtgc9gBzOC8ZqjqrRFyRcBJJ4BANO7IFI70r?=
 =?us-ascii?Q?4XTN4DT7OV8qSfGuFI6NVGSOLyOdNHM2Em6b60eUCMJizAdE4/elQZYpJ+Xr?=
 =?us-ascii?Q?SVmJJY6SyxDbE+eapokIpQZMV1ipscma9Mkb8uaxnylh3zJMEGlKkOxWgQpO?=
 =?us-ascii?Q?a21O6C2M9zFv0dH53xXFRcFagvhz6D8bhlJET4ECib5a14TbgmV4GpASMhST?=
 =?us-ascii?Q?UCNmhzBVLcl3dPA/YxbPoMa57xAI5MaV6ayCNkZ8/CiI+wZXqkIIy5vdYSpg?=
 =?us-ascii?Q?7ooCvWt+0Bhxb49PAl5x?=
X-Forefront-Antispam-Report:
	CIP:4.79.107.243;CTRY:US;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:BN1PR07CU003.outbound.protection.outlook.com;PTR:mail-bn1pr07cu00307.outbound.protection.outlook.com;CAT:NONE;SFS:(13230040)(36860700016)(14060799003)(35042699022)(376014)(82310400026)(156008)(1800799024)(56012099003)(22082099003)(18002099003);DIR:OUT;SFP:1102;
X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1
X-MS-Exchange-AntiSpam-MessageData-0:
	2wa6ZVX9f1JCMWd8JHft/npKOl0AqbsaQ4YNPJ6O5BD55W1SAJSB+uE5gO6RZLxrhSr+0CPci0556uEFOV1b+VjfeWympzAK2CqyY9wnQn8VZLgH60k5yEk2v3oPPqdHucXdcKSAjVHLDtWUnXzM1JAGxjVxASV+Dc2r/tMcllKwe7ttIXhTuS1ASfgqM6DDNpYIW6HCRyWLtIniP9cYGXg4JHXXlw5++YZaoVszFP03F+G/xUzno5jKWJww8D9kO/Ux+nYdZV5QQ10SDZJCW3AXt2ZMlBYCeErSBr3HrmeRmpVTAxRwDia15lXYjVqjS0N1BXcw7CaDQs4kI8/r0gg06HzYlWJ+pvBzL4Zp0pbiSgZWVEVMAfARCsN33gLDX9xvTJpUhZte38/p8Mq7aCJKIMu/L1XK5u3jZ8X/aykKElhe6k3xuNjooxuPoIa1
X-OriginatorOrg: elektrobit.com
X-MS-Exchange-CrossTenant-OriginalArrivalTime: 20 Apr 2026 21:33:35.4840
 (UTC)
X-MS-Exchange-CrossTenant-Network-Message-Id: ead1d366-7fa0-41f8-8d0e-08de9f247a8e
X-MS-Exchange-CrossTenant-Id: e764c36b-012e-4216-910d-8fd16283182d
X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=e764c36b-012e-4216-910d-8fd16283182d;Ip=[4.79.107.243];Helo=[usbth1es003.ebgroup.elektrobit.com]
X-MS-Exchange-CrossTenant-AuthAs: Internal
X-MS-Exchange-CrossTenant-AuthSource: TreatMessagesAsInternal-MWH0EPF000C6185.namprd02.prod.outlook.com
X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem
X-MS-Exchange-Transport-CrossTenantHeadersStamped: BN0PR08MB6920
X-purgate-ID: tlsNG-42698a/1776720820-04D67F3B-040191CC/0/0
X-purgate-type: clean
X-purgate-size: 1848

This commit makes altp2m_init_by_id compatible with ARM by replacing the
x86 domain validity check with an architecture independent check. This
makes it possible to call the function in the common
HVMOP_altp2m_set_domain state implementation.

This is commit 2/2 of the altp2m_init_by_id phase.

Signed-off-by: Rose Spangler <Rose.Spangler@elektrobit.com>
---
v6: Introduced this patch.
---
 xen/common/altp2m.c      | 5 +----
 xen/include/xen/altp2m.h | 2 --
 2 files changed, 1 insertion(+), 6 deletions(-)

diff --git a/xen/common/altp2m.c b/xen/common/altp2m.c
index 9f5f98e1e8a5..929449b1b03c 100644
--- a/xen/common/altp2m.c
+++ b/xen/common/altp2m.c
@@ -106,7 +106,6 @@ void altp2m_vcpu_destroy(struct vcpu *v)
         vcpu_unpause(v);
 }
 
-#ifdef CONFIG_X86
 int altp2m_init_by_id(struct domain *d, unsigned int idx)
 {
     int rc = -EINVAL;
@@ -117,14 +116,12 @@ int altp2m_init_by_id(struct domain *d, unsigned int idx)
 
     altp2m_lock(d);
 
-    if ( d->arch.altp2m_eptp[array_index_nospec(idx, MAX_EPTP)] ==
-         mfn_x(INVALID_MFN) )
+    if ( !altp2m_view_is_valid(d, idx) )
         rc = altp2m_activate_altp2m(d, idx, hostp2m->default_access);
 
     altp2m_unlock(d);
     return rc;
 }
-#endif
 
 /*
  * altp2m operations are envisioned as being used in several different
diff --git a/xen/include/xen/altp2m.h b/xen/include/xen/altp2m.h
index cd96c3b4792a..8fc16346d95b 100644
--- a/xen/include/xen/altp2m.h
+++ b/xen/include/xen/altp2m.h
@@ -71,10 +71,8 @@ static inline bool altp2m_set_altp2m(struct vcpu *v, unsigned int idx)
 
 int do_altp2m_op(XEN_GUEST_HANDLE_PARAM(void) arg);
 
-#ifdef CONFIG_X86
 /* Make a specific alternate p2m valid */
 int altp2m_init_by_id(struct domain *d, unsigned int idx);
-#endif
 
 #else /* CONFIG_ALTP2M */
 
-- 
2.34.1



From xen-devel-bounces@lists.xenproject.org Mon Apr 20 21:33:55 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 20 Apr 2026 21:33:55 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1287912.1568366 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wEwFf-0001M0-A3; Mon, 20 Apr 2026 21:33:55 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1287912.1568366; Mon, 20 Apr 2026 21: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 1wEwFd-0001Es-NZ; Mon, 20 Apr 2026 21:33:53 +0000
Received: by outflank-mailman (input) for mailman id 1287912;
 Mon, 20 Apr 2026 21:33:44 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <Rose.Spangler@elektrobit.com>) id 1wEwFS-0007ki-Uv
 for xen-devel@lists.xenproject.org; Mon, 20 Apr 2026 21:33:43 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wEwFS-00EgCp-A0
 for xen-devel@lists.xenproject.org; Mon, 20 Apr 2026 23:33:42 +0200
Received: from [10.42.69.5] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <Rose.Spangler@elektrobit.com>)
 id 69e69b1f-e002-0a2a0a5209dd-0a2a45058304-48
 for <xen-devel@lists.xenproject.org>; Mon, 20 Apr 2026 23:33:42 +0200
Received: from [40.93.201.107]
 (helo=CY3PR05CU001.outbound.protection.outlook.com)
 by tlsNG-c201ff.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.1)
 (envelope-from <Rose.Spangler@elektrobit.com>)
 id 69e69bb4-aaa8-0a2a45050019-285dc96b9428-3
 for <xen-devel@lists.xenproject.org>; Mon, 20 Apr 2026 23:33:42 +0200
Received: from SA9PR13CA0177.namprd13.prod.outlook.com (2603:10b6:806:28::32)
 by PH0PR08MB10977.namprd08.prod.outlook.com (2603:10b6:510:386::19)
 with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9818.30; Mon, 20 Apr
 2026 21:33:36 +0000
Received: from SN1PEPF00036F43.namprd05.prod.outlook.com
 (2603:10b6:806:28:cafe::d6) by SA9PR13CA0177.outlook.office365.com
 (2603:10b6:806:28::32) with Microsoft SMTP Server (version=TLS1_3,
 cipher=TLS_AES_256_GCM_SHA384) id 15.20.9791.48 via Frontend Transport; Mon,
 20 Apr 2026 21:33:35 +0000
Received: from usbth1es003.ebgroup.elektrobit.com (4.79.107.243) by
 SN1PEPF00036F43.mail.protection.outlook.com (10.167.248.27) with Microsoft
 SMTP Server (version=TLS1_3, cipher=TLS_AES_256_GCM_SHA384) id 15.20.9791.48
 via Frontend Transport; Mon, 20 Apr 2026 21:33:35 +0000
Received: from usbth1es003 (localhost [127.0.0.1])
 by usbth1es003.ebgroup.elektrobit.com (Postfix) with SMTP id 4fzzHy6KrSz1wdS; 
 Mon, 20 Apr 2026 14:33:34 -0700 (PDT)
Received: from CH4PR07CU001.outbound.protection.outlook.com
 (mail-ch4pr07cu00106.outbound.protection.outlook.com [40.93.20.102])
 (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)
 key-exchange secp384r1 server-signature RSA-PSS (2048 bits) server-digest
 SHA256) (No client certificate requested)
 by usbth1es003.ebgroup.elektrobit.com (Postfix) with ESMTPS;
 Mon, 20 Apr 2026 14:33:34 -0700 (PDT)
Received: from BY1P220CA0022.NAMP220.PROD.OUTLOOK.COM (2603:10b6:a03:5c3::14)
 by SN7PR08MB8567.namprd08.prod.outlook.com (2603:10b6:806:2df::20)
 with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9818.32; Mon, 20 Apr
 2026 21:33:29 +0000
Received: from SJ1PEPF000026C9.namprd04.prod.outlook.com
 (2603:10b6:a03:5c3:cafe::5c) by BY1P220CA0022.outlook.office365.com
 (2603:10b6:a03:5c3::14) with Microsoft SMTP Server (version=TLS1_3,
 cipher=TLS_AES_256_GCM_SHA384) id 15.20.9791.48 via Frontend Transport; Mon,
 20 Apr 2026 21:33:29 +0000
Received: from denue6es012.ebgroup.elektrobit.com (213.95.148.172) by
 SJ1PEPF000026C9.mail.protection.outlook.com (10.167.244.106) with Microsoft
 SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id
 15.20.9791.48 via Frontend Transport; Mon, 20 Apr 2026 21:33:29 +0000
Received: from ubuntu.localdomain (10.10.178.50) by
 denue6es012.ebgroup.elektrobit.com (10.243.160.140) with Microsoft SMTP
 Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id
 15.2.2562.35; Mon, 20 Apr 2026 23:33:24 +0200
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@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=elektrobit.com header.i="@elektrobit.com" header.h="From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck"; dkim=pass header.s=selector1 header.d=elektrobit.com header.i="@elektrobit.com" header.h="From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck"
ARC-Seal: i=2; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=pass;
 b=Ljlm4EOKSp3cm5SZ/LDxSZnszcH6gQ0HmAyddQCrs9gAom86BBAeFpWO0zfDExQxQy4loLUWDMi7e9PcdMCOgO1a+pifhvT9EUYPcA08W2davzoYxxxZqU8AyUBM7vFhE7TdArd+BxC47suLrH+pv76oeTqrfj5J3Eyox4k87SBkbVjzcy0sKbD8sQulkjNfwf+gmAilex3Ud9Hlyexafo8VRjPfOh5Ho0QFnxz+/VlyQoX9klRAvm1RZ6V6vru5bYmkblEbFRpClUEUyh9y6EjfElnxDbiO371zCgzs12pkpZfhJLVwA5i4XX5mxQwH7Vs4zE+zeDlNfPgQ7CJmXw==
ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com;
 s=arcselector10001;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1;
 bh=DZVQd2YS2Dc072OkbjYDsSwvSmp2EL0f2N2Sbux/YCg=;
 b=i4L21idI0hr2NGqfQmDBrWdKBFLvn1Dh2iTGl6X2ilN/TAsmBZhXTPLXaI6HNsy0n/xA7qjQ+5PTO7gl07TX46px8tL4Sn+MrxpEyQ51gUyNSjILkIJYiXCe7/Q9IGyRLqTsNWa7E0PNPtoCl6SWUTgHaOQkWn8evImfI2/TIPNAelGOklVf1FQwNJwv1DOt5Y3o9TR3aVKmEjh3oaEQEckSYjA1nf+XeizGQk+7i58bIoUU4H5puAOJbVflamb4bGryaoJrjaEb8IB7kMV8frlY0E9igtMc4wgdsN3kXE7YDQF3a06fI47ZwrU/29tTeWj5nKm7aNx8YBICGtPxcQ==
ARC-Authentication-Results: i=2; mx.microsoft.com 1; spf=pass (sender ip is
 40.93.20.102) smtp.rcpttodomain=amd.com smtp.mailfrom=elektrobit.com;
 dmarc=pass (p=quarantine sp=none pct=100) action=none
 header.from=elektrobit.com; dkim=pass (signature was verified)
 header.d=elektrobit.com; arc=pass (0 oda=1 ltdi=1
 spf=[1,1,smtp.mailfrom=elektrobit.com]
 dmarc=[1,1,header.from=elektrobit.com])
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=elektrobit.com;
 s=selector1;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck;
 bh=DZVQd2YS2Dc072OkbjYDsSwvSmp2EL0f2N2Sbux/YCg=;
 b=Iu88YjuAAjpjYXAf3GQqXUfa8Res77rgz/hiFPROKkZwWyXrP4TuHzVefAoNipDLXd61lVKirsdi8A814BHkfFLHfONXREG3oH9nQ9furbPEQGaPzQAW0t5Nj0zWHi4yUZhlhZ7xEPdSf7QnuO7lE+EN6FFeh1SN8eh5zBI3fjU=
X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 40.93.20.102)
 smtp.mailfrom=elektrobit.com; dkim=pass (signature was verified)
 header.d=elektrobit.com;dmarc=pass action=none header.from=elektrobit.com;
Received-SPF: Pass (protection.outlook.com: domain of elektrobit.com
 designates 40.93.20.102 as permitted sender) receiver=protection.outlook.com;
 client-ip=40.93.20.102; helo=CH4PR07CU001.outbound.protection.outlook.com;
 pr=C
ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none;
 b=G3kS4OWo3p8fTIR0139thXroFifVHuZqb36sJyOhMyfW8dlsdKhtU6XiM/potRkwd9fkUv9N0nSmVVh7jNiAXnJqOabvF4lkKpo8JP93uQijwtaAfkTkAP320c4nP3PAqgFs++/gPMrcurb8J3yrih8okouTYe8z+9XtxVaOhQQGGW4n5VXjCSOTlSOg3A3vJU2ubs5gEhKKzfWZRXCSYCTizI+CY7Yq0/u9YfnBaO7gH9+uWTiLqkczMjmhT/lAhnq+2z0YU4EI71Id3Gp/QrYvLejeHOpu9zf9hBjqYDpOATRQWF0pBg3RXfhHFQ34G7v3AkG/C4r2YKfHwjtDPg==
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com;
 s=arcselector10001;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1;
 bh=DZVQd2YS2Dc072OkbjYDsSwvSmp2EL0f2N2Sbux/YCg=;
 b=vqDebuhy54vfnb3FugiQZiBdkLg5jIs3OaZaF3Yjj5ACnQhpdV43wqvFRHxCEU1F/pFBuzQAFgHKw2IyoLH/JdoCl3ugDTPZQ1MOpbqlf4XAEZmLp7U5gxasU/pcKiu2nUDzyhVaI/331xTt4jmed0Q+hLY0S3Eet13UgRxIJpOtXtqHPxlvLG4fXSeJlPL5XjrZQuohJyqSvZEZRUs07ISICTr/nPl5cNAftCyTVyNZ/lc14pQ6CWXI50IP1g74NaEU0bxh4xeBwKakx9OuT+N8GoxywwAfilEfoUlaLRfryGJt3FlfRUl7v5D5WbIczyyw3c+rHLQI2KYfNyS2LQ==
ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass (sender ip is
 213.95.148.172) smtp.rcpttodomain=lists.xenproject.org
 smtp.mailfrom=elektrobit.com; dmarc=pass (p=quarantine sp=none pct=100)
 action=none header.from=elektrobit.com; dkim=none (message not signed);
 arc=none (0)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=elektrobit.com;
 s=selector1;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck;
 bh=DZVQd2YS2Dc072OkbjYDsSwvSmp2EL0f2N2Sbux/YCg=;
 b=Iu88YjuAAjpjYXAf3GQqXUfa8Res77rgz/hiFPROKkZwWyXrP4TuHzVefAoNipDLXd61lVKirsdi8A814BHkfFLHfONXREG3oH9nQ9furbPEQGaPzQAW0t5Nj0zWHi4yUZhlhZ7xEPdSf7QnuO7lE+EN6FFeh1SN8eh5zBI3fjU=
X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 213.95.148.172)
 smtp.mailfrom=elektrobit.com; dkim=none (message not signed)
 header.d=none;dmarc=pass action=none header.from=elektrobit.com;
Received-SPF: Pass (protection.outlook.com: domain of elektrobit.com
 designates 213.95.148.172 as permitted sender)
 receiver=protection.outlook.com; client-ip=213.95.148.172;
 helo=denue6es012.ebgroup.elektrobit.com; pr=C
From: Rose Spangler <Rose.Spangler@elektrobit.com>
To: <xen-devel@lists.xenproject.org>
CC: Rose Spangler <Rose.Spangler@elektrobit.com>, Jan Beulich
	<jbeulich@suse.com>, Andrew Cooper <andrew.cooper3@citrix.com>,
	=?UTF-8?q?Roger=20Pau=20Monn=C3=A9?= <roger.pau@citrix.com>, 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: [RFC PATCH v6 37/43] altp2m: Move altp2m_init_by_id to common code
Date: Mon, 20 Apr 2026 17:32:00 -0400
Message-ID: <20260420213206.208750-38-Rose.Spangler@elektrobit.com>
X-Mailer: git-send-email 2.34.1
In-Reply-To: <20260420213206.208750-1-Rose.Spangler@elektrobit.com>
References: <20260420213206.208750-1-Rose.Spangler@elektrobit.com>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit
Content-Type: text/plain
X-Originating-IP: [10.10.178.50]
X-ClientProxiedBy: denue6es012.ebgroup.elektrobit.com (10.243.160.140) To
 denue6es012.ebgroup.elektrobit.com (10.243.160.140)
X-EOPAttributedMessage: 1
X-MS-Exchange-SkipListedInternetSender:
 ip=[213.95.148.172];domain=denue6es012.ebgroup.elektrobit.com
X-MS-TrafficTypeDiagnostic:
	SJ1PEPF000026C9:EE_|SN7PR08MB8567:EE_|SN1PEPF00036F43:EE_|PH0PR08MB10977:EE_
X-MS-Office365-Filtering-Correlation-Id: 9a37290f-1653-4e7c-8514-08de9f247ab5
X-SM-outgoing: yes
X-MS-Exchange-SenderADCheck: 1
X-MS-Exchange-AntiSpam-Relay: 0
X-Microsoft-Antispam-Untrusted:
 BCL:0;ARA:13230040|36860700016|1800799024|376014|82310400026|22082099003|18002099003|56012099003;
X-Microsoft-Antispam-Message-Info-Original:
 =?us-ascii?Q?hP7URVA0guEQCAc7FnuLxFh9+3PBy7k7ZVfc2rX9DEyDmvKGDAJt3ZyrvaZp?=
 =?us-ascii?Q?V4woWnp6R+ErPEbPhQ+JuQfMEX17Wayx5svwXkIY3SdOnCgla2z4oK7wVD1I?=
 =?us-ascii?Q?03CMblZnhJwvi32e6Nj4y/yOQ14JZ1YfAHUfAIt6/Cs9excU0nkwhJarkC1C?=
 =?us-ascii?Q?rO2H4tRrveS2dF/Sf1lGc+V9ajAxy8y+tDS3ChmyDL/dAxPdr2g1UJ4Y4DGv?=
 =?us-ascii?Q?sPSwU39yH/ke1y9qgXge5Gb5m/t0C4ubPK/JKe0F4/44AjD2h7x/sxa466VV?=
 =?us-ascii?Q?7B28uKgFFa1RvvW7cvc8TfbrflYpG0WizGG87XNcKT7bC1bd8W8N32TElZpz?=
 =?us-ascii?Q?ZJQcmugpDxM2jX64PscuvQCTYExw8UtQFth7r/JnYEat6UplMOtEFOC4BRnz?=
 =?us-ascii?Q?svQXrF8O0yAEFuIQY6RNE1zL+jix+d0X70p+U0oW908VgiZm36YK+aclzKuP?=
 =?us-ascii?Q?ZAPrvEkzWWAA8qRe4d1g2wfFNBXAh9txEf4kOx2L8bRGHvzWWl45pZLAa9HK?=
 =?us-ascii?Q?cg1Iyf0BvhoOeenzVBL9wN9013IntVJg2asyeehsbageO58vfARU6bjnq4G+?=
 =?us-ascii?Q?RrYlR+Bgwq+PQry+j2dLfWoKMIt4/m+v4FBBifRmbywtLqn3HvnqxUJZNexG?=
 =?us-ascii?Q?VeXPccrR1Gn95OQsTB2y4nDngbomTti7f3YcmgLTvu3B7HoX+7A5qQbwgL61?=
 =?us-ascii?Q?+OELo+nSEGiZ+cTKxe8nq/y4EzfhCMaexpfg0gPGW2C/xf4yJXaM5Mz2U0ax?=
 =?us-ascii?Q?wj4isO58/laLLD/gI5DY1R8FWFOvXliaX/UUQvnlnOLxUdlP2waF8S64U51C?=
 =?us-ascii?Q?c/PP+PN6xQLYZjydq6WeZ4JWHsIzGSeDIOBBKNDMAxnJAqQALGgsRRYHI920?=
 =?us-ascii?Q?ImToeuVNqZA2vEQtfuuowXy8UxEqx5nkLuQdwZlTKvkuGTLOTsID5Whm2bVK?=
 =?us-ascii?Q?8VxnGfQOJANAHG4YDVS6TPc6IZqpz1UiGRBel2janAy2ur7dTGSN/FzLFaq5?=
 =?us-ascii?Q?qoiExsTmd1jIR9sBS5aGJr2QcOyfkM4UCV9LwtN27DAhhNn+nL3OG0/c1trO?=
 =?us-ascii?Q?gdjvzY63qSSZdSeUmb5ArVzCvwnqboOyeUeKKbV+ld1R13Qw4QPKG2vq9GCA?=
 =?us-ascii?Q?dEcsKRs+YtIc71QrUF2glASHlLU3An6sn+dHoEs/g6jwOXFZLk9w5FcT44Tp?=
 =?us-ascii?Q?znF3tb+hnGdjRAyq?=
X-Forefront-Antispam-Report-Untrusted:
 CIP:213.95.148.172;CTRY:DE;LANG:en;SCL:1;SRV:;IPV:CAL;SFV:NSPM;H:denue6es012.ebgroup.elektrobit.com;PTR:eth1-fw1-nbg6.eb.noris.de;CAT:NONE;SFS:(13230040)(36860700016)(1800799024)(376014)(82310400026)(22082099003)(18002099003)(56012099003);DIR:OUT;SFP:1102;
X-Exchange-RoutingPolicyChecked:
 tD9/qEw+JhmieIDN2pfGL+ETUqDTWh1ZtrjOOEqUNpAIrWyYftOPdJ/IhtcarlggVw1gz495dfo/MBN1y5ZEQb2WAQRqwikBzhiX/ypEZfZ+XfRKYAP+YB163Cq2xtwTNTFLjzPn4euMLrt5/1rifxepU06wqwEaiFaZO2KkLF8QAei+uAb+qD2vaJ5Snpn6QXwlEkPZ6C68loek5Jinn7zq3Q/Uuxfki7RLBdr6S8CJZehX3VzIjbxr4o9VN5Vjl7h0KaZ4vJksRQ74Re5ym+CokhdU+v6HKecmIVAMG94F5NeHujpE+2Mj/4Ke8z959zkfb2kq37YeibShRytH/w==
X-MS-Exchange-Transport-CrossTenantHeadersStamped: SN7PR08MB8567
X-MS-Exchange-SkipListedInternetSender:
 ip=[40.93.20.102];domain=CH4PR07CU001.outbound.protection.outlook.com
X-MS-Exchange-ExternalOriginalInternetSender:
 ip=[40.93.20.102];domain=CH4PR07CU001.outbound.protection.outlook.com
X-MS-Exchange-Transport-CrossTenantHeadersStripped:
 SN1PEPF00036F43.namprd05.prod.outlook.com
X-MS-PublicTrafficType: Email
X-MS-Office365-Filtering-Correlation-Id-Prvs:
	ee3fa23c-ccd7-4b65-565d-08de9f2476d5
X-Microsoft-Antispam:
	BCL:0;ARA:13230040|82310400026|14060799003|35042699022|156008|36860700016|376014|1800799024|22082099003|56012099003|18002099003;
X-Microsoft-Antispam-Message-Info:
	=?us-ascii?Q?ObGamVGL998btlbAg7JkzVlvVRx2cq25P7AwURJSPtNx+SWeoAjeUWQbFBf1?=
 =?us-ascii?Q?SbEi90wwVHuwQlaWvQ22o4yWD2o/DAtLQbbFrmP/OxUAJ6etfpYj4qkyBy8Z?=
 =?us-ascii?Q?KOjPVFz3COpaNxl6MsnUh2JSG7Pr0l/5jMPb/lJwDqK6jIJQB8nspVcEerDh?=
 =?us-ascii?Q?g2JP5dS6tqmYOpJyRv/+fKk0zINWFnp2eIUQah9kjotJcaHh0ntHWaweikA6?=
 =?us-ascii?Q?FJ5jQ2yThD5Om8Ias77ci4Pec8FmMCpf0YDGzWhvvEUqBmP+136kjJZ7Jxli?=
 =?us-ascii?Q?nur9eESvKYN4wdRZVxfId3yNTzHJs5kdvB3GeMWNW0ZcYfRHKauZV3zNeMG1?=
 =?us-ascii?Q?dRJEmGk2sgbeCcrZM2PRAqpIL9NmpU3rDedzPNacccp953SrVyOWy4sxHs8p?=
 =?us-ascii?Q?R0mzrWWR7LNW1OQWEg0M57mJatlRdMh3io8g8mfzajRcM4hBWTAS7s4UzbEc?=
 =?us-ascii?Q?QYQjS0I6wPxvXdJV0bX1Vo3xD9iOOjWLfrFdVAnKf81DFNEWQiVgj+REnjJM?=
 =?us-ascii?Q?PH1VLuzFXNzfR9O6do9uajCH+LvfDgs/vkgsEV32ntR7kb/5NoOyI+nKgts2?=
 =?us-ascii?Q?JFGt3dRkc6UtI1DwZ+Q4wyfSdTE1o+pJlBXzynaJ/BysVFa+j50lNc4bkdrY?=
 =?us-ascii?Q?+HqQtF1cHXJgTXmuWTbayYUe9qY/B33PeSSQDUhZfq4jH8I7nRQD6jxnRdia?=
 =?us-ascii?Q?J7dF1rAPDiBjpM4LTMOt3xqw+OO21v7Tlx3o6pXO2JyHfynlTGbwHp71ydl0?=
 =?us-ascii?Q?Tm9/Mnv9fnWSbpGSSk+O4tyMnDJSw5JHQlwqtCmtRdVC06630uSmekMjbh5X?=
 =?us-ascii?Q?wKi/ng/5e3g1u5kQ8SyM5qx7mvu96bhwXlltT6gHHQAswxjPdVGGs1CinKOl?=
 =?us-ascii?Q?ShgVHrP4AnHtpuHbTmBnhLP6/ObPXnXpu+BjtBHp/8QoM1YiPlRFSdzZ2N1c?=
 =?us-ascii?Q?4P//jbcdr0orC6x31Aev31zgIiMThrngyeUcJwVZu5bPyUOrIUTC2Q+Mf3H8?=
 =?us-ascii?Q?db+80hsb+b/JfMDcBLwJ6NiRTkjhcYwCo0MPxYTiD6TtrYupWbUSr1wfV3dG?=
 =?us-ascii?Q?oka+2jmveDdwd8WigZhJAc5HnBXxW2A67vM4qlwvvuc2MHYDARmBSAETQuPR?=
 =?us-ascii?Q?aPnvRSTuQu4vEVjbLjifxW/v7QzyqvGoiQvX933s/bQebpf9RaDMZzH+AFcv?=
 =?us-ascii?Q?tNVVFwnJA+/uNv4R?=
X-Forefront-Antispam-Report:
	CIP:4.79.107.243;CTRY:US;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:CH4PR07CU001.outbound.protection.outlook.com;PTR:mail-ch4pr07cu00106.outbound.protection.outlook.com;CAT:NONE;SFS:(13230040)(82310400026)(14060799003)(35042699022)(156008)(36860700016)(376014)(1800799024)(22082099003)(56012099003)(18002099003);DIR:OUT;SFP:1102;
X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1
X-MS-Exchange-AntiSpam-MessageData-0:
	js2rb0kEPM0sJ8xRqcFhO9iAKNOeOwUSTFrnPrRurizc/Zah1m5+7uuwqYyKdv5T8pE2VK2b2TpGnnfMcJWa/EoaUCpe4J0MZLCxApY1Y8ENFsgp6yYFqzXNP2I6h6+gCl43D7/1nn+wfmzKDgYhFQGWFVcxJlRIzzHzaelFkuXEq0fMiytne6O/SSR2Dd0ZRGDSJzi3NkSsNfHYQiMIrAMYHQUP9LWip2JI+qqfMdwGzCp/5ETuaVALU3Zy7v0ESdxH4Hk3iMwOIOstWEZB4SWRuI/rv4h685uib+VqC7B7g5DxSt8CcftOmoD48aawmjz0NJZjJDLiCLLxliDVSboLh6zLuVFVqrK3L1mx/dyCoWA5E8fjeqTndY+zfrVMkSf74RZWaWEC0nV/L10OKSO5mH+dmBAsfx0PXXS1+fIDyT33K6SvEVAvFAHaHelg
X-OriginatorOrg: elektrobit.com
X-MS-Exchange-CrossTenant-OriginalArrivalTime: 20 Apr 2026 21:33:35.6551
 (UTC)
X-MS-Exchange-CrossTenant-Network-Message-Id: 9a37290f-1653-4e7c-8514-08de9f247ab5
X-MS-Exchange-CrossTenant-Id: e764c36b-012e-4216-910d-8fd16283182d
X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=e764c36b-012e-4216-910d-8fd16283182d;Ip=[4.79.107.243];Helo=[usbth1es003.ebgroup.elektrobit.com]
X-MS-Exchange-CrossTenant-AuthAs: Internal
X-MS-Exchange-CrossTenant-AuthSource: TreatMessagesAsInternal-SN1PEPF00036F43.namprd05.prod.outlook.com
X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem
X-MS-Exchange-Transport-CrossTenantHeadersStamped: PH0PR08MB10977
X-purgate-ID: tlsNG-c201ff/1776720822-2AD6F443-89CA8B8F/0/0
X-purgate-type: clean
X-purgate-size: 3657

This commit moves the altp2m_init_by_id function to common code, gated to
only compile on x86. This makes it possible to call in the common
HVMOP_altp2m_set_domain_state command implementation.

This commit contains only code movement, and no change in functionality is
intended.

This is commit 1/2 of the altp2m_init_by_id phase.

Signed-off-by: Rose Spangler <Rose.Spangler@elektrobit.com>
---
v6: Introduced this patch.
---
 xen/arch/x86/include/asm/altp2m.h |  3 ---
 xen/arch/x86/mm/altp2m.c          | 18 ------------------
 xen/common/altp2m.c               | 20 ++++++++++++++++++++
 xen/include/xen/altp2m.h          |  5 +++++
 4 files changed, 25 insertions(+), 21 deletions(-)

diff --git a/xen/arch/x86/include/asm/altp2m.h b/xen/arch/x86/include/asm/altp2m.h
index 203dba44e2bf..e7239326c71d 100644
--- a/xen/arch/x86/include/asm/altp2m.h
+++ b/xen/arch/x86/include/asm/altp2m.h
@@ -85,9 +85,6 @@ bool altp2m_switch_vcpu_by_id(struct vcpu *v, unsigned int idx);
 /* Flush all the alternate p2m's for a domain */
 void altp2m_flush(struct domain *d);
 
-/* Make a specific alternate p2m valid */
-int altp2m_init_by_id(struct domain *d, unsigned int idx);
-
 /* Find an available alternate p2m and make it valid */
 int altp2m_init_next_available(struct domain *d, uint16_t *idx,
                                xenmem_access_t hvmmem_default_access);
diff --git a/xen/arch/x86/mm/altp2m.c b/xen/arch/x86/mm/altp2m.c
index 40c6ea72a621..edbaf54c3761 100644
--- a/xen/arch/x86/mm/altp2m.c
+++ b/xen/arch/x86/mm/altp2m.c
@@ -315,24 +315,6 @@ int altp2m_activate_altp2m(struct domain *d, unsigned int idx,
     return rc;
  }
 
-int altp2m_init_by_id(struct domain *d, unsigned int idx)
-{
-    int rc = -EINVAL;
-    struct p2m_domain *hostp2m = p2m_get_hostp2m(d);
-
-    if ( idx >= d->nr_altp2m )
-        return rc;
-
-    altp2m_lock(d);
-
-    if ( d->arch.altp2m_eptp[array_index_nospec(idx, MAX_EPTP)] ==
-         mfn_x(INVALID_MFN) )
-        rc = altp2m_activate_altp2m(d, idx, hostp2m->default_access);
-
-    altp2m_unlock(d);
-    return rc;
-}
-
 int altp2m_init_next_available(struct domain *d, uint16_t *idx,
                                xenmem_access_t hvmmem_default_access)
 {
diff --git a/xen/common/altp2m.c b/xen/common/altp2m.c
index c234bb3774f4..9f5f98e1e8a5 100644
--- a/xen/common/altp2m.c
+++ b/xen/common/altp2m.c
@@ -106,6 +106,26 @@ void altp2m_vcpu_destroy(struct vcpu *v)
         vcpu_unpause(v);
 }
 
+#ifdef CONFIG_X86
+int altp2m_init_by_id(struct domain *d, unsigned int idx)
+{
+    int rc = -EINVAL;
+    struct p2m_domain *hostp2m = p2m_get_hostp2m(d);
+
+    if ( idx >= d->nr_altp2m )
+        return rc;
+
+    altp2m_lock(d);
+
+    if ( d->arch.altp2m_eptp[array_index_nospec(idx, MAX_EPTP)] ==
+         mfn_x(INVALID_MFN) )
+        rc = altp2m_activate_altp2m(d, idx, hostp2m->default_access);
+
+    altp2m_unlock(d);
+    return rc;
+}
+#endif
+
 /*
  * altp2m operations are envisioned as being used in several different
  * modes:
diff --git a/xen/include/xen/altp2m.h b/xen/include/xen/altp2m.h
index 37c875a52327..cd96c3b4792a 100644
--- a/xen/include/xen/altp2m.h
+++ b/xen/include/xen/altp2m.h
@@ -71,6 +71,11 @@ static inline bool altp2m_set_altp2m(struct vcpu *v, unsigned int idx)
 
 int do_altp2m_op(XEN_GUEST_HANDLE_PARAM(void) arg);
 
+#ifdef CONFIG_X86
+/* Make a specific alternate p2m valid */
+int altp2m_init_by_id(struct domain *d, unsigned int idx);
+#endif
+
 #else /* CONFIG_ALTP2M */
 
 static inline bool altp2m_active(const struct domain *d)
-- 
2.34.1



From xen-devel-bounces@lists.xenproject.org Mon Apr 20 21:33:57 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 20 Apr 2026 21:33:57 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1287922.1568374 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wEwFg-0001jj-UZ; Mon, 20 Apr 2026 21:33:56 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1287922.1568374; Mon, 20 Apr 2026 21: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 1wEwFf-0001cX-Ej; Mon, 20 Apr 2026 21:33:55 +0000
Received: by outflank-mailman (input) for mailman id 1287922;
 Mon, 20 Apr 2026 21:33:47 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <Rose.Spangler@elektrobit.com>) id 1wEwFV-0008IB-VA
 for xen-devel@lists.xenproject.org; Mon, 20 Apr 2026 21:33:46 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wEwFV-00CCPQ-BA
 for xen-devel@lists.xenproject.org; Mon, 20 Apr 2026 23:33:45 +0200
Received: from [10.42.69.2] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <Rose.Spangler@elektrobit.com>)
 id 69e69bb9-bab6-0a2a0a5309dd-0a2a4502c9e8-2
 for <xen-devel@lists.xenproject.org>; Mon, 20 Apr 2026 23:33:45 +0200
Received: from [40.107.208.97]
 (helo=PH0PR06CU001.outbound.protection.outlook.com)
 by tlsNG-720697.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.1)
 (envelope-from <Rose.Spangler@elektrobit.com>)
 id 69e69bb7-af86-0a2a45020019-286bd061ffdf-3
 for <xen-devel@lists.xenproject.org>; Mon, 20 Apr 2026 23:33:44 +0200
Received: from MW4PR03CA0050.namprd03.prod.outlook.com (2603:10b6:303:8e::25)
 by BY3PR08MB7201.namprd08.prod.outlook.com (2603:10b6:a03:36e::17)
 with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9818.32; Mon, 20 Apr
 2026 21:33:40 +0000
Received: from MWH0EPF000A6735.namprd04.prod.outlook.com
 (2603:10b6:303:8e:cafe::d0) by MW4PR03CA0050.outlook.office365.com
 (2603:10b6:303:8e::25) with Microsoft SMTP Server (version=TLS1_3,
 cipher=TLS_AES_256_GCM_SHA384) id 15.20.9791.48 via Frontend Transport; Mon,
 20 Apr 2026 21:33:40 +0000
Received: from usbth1es003.ebgroup.elektrobit.com (4.79.107.243) by
 MWH0EPF000A6735.mail.protection.outlook.com (10.167.249.27) with Microsoft
 SMTP Server (version=TLS1_3, cipher=TLS_AES_256_GCM_SHA384) id 15.20.9791.48
 via Frontend Transport; Mon, 20 Apr 2026 21:33:40 +0000
Received: from usbth1es003 (localhost [127.0.0.1])
 by usbth1es003.ebgroup.elektrobit.com (Postfix) with SMTP id 4fzzJ414vXz1wdW; 
 Mon, 20 Apr 2026 14:33:40 -0700 (PDT)
Received: from SJ0PR08CU001.outbound.protection.outlook.com
 (mail-sj0pr08cu00101.outbound.protection.outlook.com [40.93.1.73])
 (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)
 key-exchange secp384r1 server-signature RSA-PSS (2048 bits) server-digest
 SHA256) (No client certificate requested)
 by usbth1es003.ebgroup.elektrobit.com (Postfix) with ESMTPS;
 Mon, 20 Apr 2026 14:33:39 -0700 (PDT)
Received: from BY1P220CA0015.NAMP220.PROD.OUTLOOK.COM (2603:10b6:a03:5c3::10)
 by CYXPR08MB9634.namprd08.prod.outlook.com (2603:10b6:930:d9::16)
 with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9818.32; Mon, 20 Apr
 2026 21:33:35 +0000
Received: from SJ1PEPF000026C9.namprd04.prod.outlook.com
 (2603:10b6:a03:5c3:cafe::14) by BY1P220CA0015.outlook.office365.com
 (2603:10b6:a03:5c3::10) with Microsoft SMTP Server (version=TLS1_3,
 cipher=TLS_AES_256_GCM_SHA384) id 15.20.9791.48 via Frontend Transport; Mon,
 20 Apr 2026 21:33:35 +0000
Received: from denue6es012.ebgroup.elektrobit.com (213.95.148.172) by
 SJ1PEPF000026C9.mail.protection.outlook.com (10.167.244.106) with Microsoft
 SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id
 15.20.9791.48 via Frontend Transport; Mon, 20 Apr 2026 21:33:35 +0000
Received: from ubuntu.localdomain (10.10.178.50) by
 denue6es012.ebgroup.elektrobit.com (10.243.160.140) with Microsoft SMTP
 Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id
 15.2.2562.35; Mon, 20 Apr 2026 23:33:32 +0200
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@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=elektrobit.com header.i="@elektrobit.com" header.h="From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck"; dkim=pass header.s=selector1 header.d=elektrobit.com header.i="@elektrobit.com" header.h="From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck"
ARC-Seal: i=2; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=pass;
 b=QfxDAwOGhuwOOhRNDAhFecwO/twv8Ua/nLdlSrHHXpBfyC+ufbBIryVG9I4PyLEpQZhepD91KCFGN+sTKhDu+V46aTvpkTvQhGbM+msGz8kgrhs+QEi8DPEGO5G1jhSG6A7SEGai21wv3cRnW6Fma/sqJ3R4eZTZ4lSUAqyC4RrBXMiDwZq2wOHUDi/2XRKvt2ETbfbcfRCFTNEYOV/EZniYvQxzFgBccDiikWOfWVCemWntV4c5X+oDRZ1BBdeUGGT3WrKcqWvFu0+mAb6dUvH2Da9qjZsyKTuNzdekV/Bcq4ec+LSncVjW+R6Xs2INN5kktFSmpSS1HkDTBu6hdQ==
ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com;
 s=arcselector10001;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1;
 bh=LB6UB8nPNPDJ1HE6m3AZNiyAJltYGI2r4/Nm/aLYhC4=;
 b=jLVs9z2xzofau9m3ZT1VltZOFIby1kP3p2Om2m33fVvJ7Et3XbsY4fEBU1zEj+mVLae7jniBPB1L0NcsW+JZHimHuW0zE8SzTg48ghlrNgktcJqYfH7bNVtpkNYSrYJAGX/O5IN2qvyt9nkalHmGjxFDwpyA3q676940yMqTDKl/HVxTN/MrFqs1914H/kpESX2pwmwHoEK9aFxTlJHNXU/VYURDuFVOBGhAIeCnBW9XJxpd/IjkGZurndb2X9RQ0pMgLiZiKfT/Ps0nZsk127wgHz145Jz1dpFmxFa75UVTJKl9PI5ySARs7y/BZAIMurb5D/adTFYWT0VdCWvVcA==
ARC-Authentication-Results: i=2; mx.microsoft.com 1; spf=pass (sender ip is
 40.93.1.73) smtp.rcpttodomain=amd.com smtp.mailfrom=elektrobit.com;
 dmarc=pass (p=quarantine sp=none pct=100) action=none
 header.from=elektrobit.com; dkim=pass (signature was verified)
 header.d=elektrobit.com; arc=pass (0 oda=1 ltdi=1
 spf=[1,1,smtp.mailfrom=elektrobit.com]
 dmarc=[1,1,header.from=elektrobit.com])
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=elektrobit.com;
 s=selector1;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck;
 bh=LB6UB8nPNPDJ1HE6m3AZNiyAJltYGI2r4/Nm/aLYhC4=;
 b=qED/O/8XMTwmpggQg9GZlEmZdhwreyCWLSuB3TN1fhjUGzpNo+c2dgtByVHMmmKI6GXrF4wuGrf+aGO5PgAD4xKUrbFi0cZvpK74mNO3RWh6BgwjVSwQdoZJOOqzDq1mTyHqAjRJmwfCLG0Bv13c0FzZk9givNhaeu9p/KXjYQk=
X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 40.93.1.73)
 smtp.mailfrom=elektrobit.com; dkim=pass (signature was verified)
 header.d=elektrobit.com;dmarc=pass action=none header.from=elektrobit.com;
Received-SPF: Pass (protection.outlook.com: domain of elektrobit.com
 designates 40.93.1.73 as permitted sender) receiver=protection.outlook.com;
 client-ip=40.93.1.73; helo=SJ0PR08CU001.outbound.protection.outlook.com; pr=C
ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none;
 b=Iw4fK9+0SsQEVeh607QdPYVVrAaF/Vlw9FPSAlsfxdaVCAyuArXLk+5WOxFsGtIS6+/cwxS2iE8OEkMZE4VgvdnDt30QNqzzP8eTWH9LUs5iC3CZS8RcdJOBnGPFDICS4rXS2J/lk4aY+vqfvHVm76J5F9xSOOKXT1Gz43sCEYCLFwzn/YBWbu1i6u7Eaix/7al4hW7E3Qa/ys+eET7aD5jw996sLBd9lb79gLKTYNH3rYWVh3IegISIzwLidi2mOufcU7M+rzpC8KoM53xL5Umc1y0LqdQZDKgzxjxjbST6limSfvzV8TaBwgd3HdK+TV/9Tw9uAPuICfjw2IpRHA==
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com;
 s=arcselector10001;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1;
 bh=LB6UB8nPNPDJ1HE6m3AZNiyAJltYGI2r4/Nm/aLYhC4=;
 b=oNzsDnwNZ3hW3nYWEEX0wfwbMKvsFIIT4VdBa9saQ8mqfCQjKfsT7YpDPMYyoB7Yx2T4YdEO/GyLChAzEduz8jtOLFcGLg28VrIyq2mSdDKTo2Z8wVKqE68DzoH+8u3EyCLAaozdRrkmQcFS1051DH6kMtWLPl0mIL4c1P/dzszQQRjIFT002OFsyxO85tyw/K74eSdmGMlrfFc5GIGP54u5PK/wsi23MSgFOuXOccPr5vx4ksa+HN2l0jC1FG8IZuWLR270fcjhbRBofRGaqtkpGz/2vogd78UWLvDkW50gGLCS7Tn0i3xLPaIFgQRXj0Du49WhU5+E6MFNvBXBig==
ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass (sender ip is
 213.95.148.172) smtp.rcpttodomain=lists.xenproject.org
 smtp.mailfrom=elektrobit.com; dmarc=pass (p=quarantine sp=none pct=100)
 action=none header.from=elektrobit.com; dkim=none (message not signed);
 arc=none (0)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=elektrobit.com;
 s=selector1;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck;
 bh=LB6UB8nPNPDJ1HE6m3AZNiyAJltYGI2r4/Nm/aLYhC4=;
 b=qED/O/8XMTwmpggQg9GZlEmZdhwreyCWLSuB3TN1fhjUGzpNo+c2dgtByVHMmmKI6GXrF4wuGrf+aGO5PgAD4xKUrbFi0cZvpK74mNO3RWh6BgwjVSwQdoZJOOqzDq1mTyHqAjRJmwfCLG0Bv13c0FzZk9givNhaeu9p/KXjYQk=
X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 213.95.148.172)
 smtp.mailfrom=elektrobit.com; dkim=none (message not signed)
 header.d=none;dmarc=pass action=none header.from=elektrobit.com;
Received-SPF: Pass (protection.outlook.com: domain of elektrobit.com
 designates 213.95.148.172 as permitted sender)
 receiver=protection.outlook.com; client-ip=213.95.148.172;
 helo=denue6es012.ebgroup.elektrobit.com; pr=C
From: Rose Spangler <Rose.Spangler@elektrobit.com>
To: <xen-devel@lists.xenproject.org>
CC: Rose Spangler <Rose.Spangler@elektrobit.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.pau@citrix.com>, Stefano Stabellini <sstabellini@kernel.org>
Subject: [RFC PATCH v6 42/43] arm/altp2m: Add support for altp2m_flush
Date: Mon, 20 Apr 2026 17:32:05 -0400
Message-ID: <20260420213206.208750-43-Rose.Spangler@elektrobit.com>
X-Mailer: git-send-email 2.34.1
In-Reply-To: <20260420213206.208750-1-Rose.Spangler@elektrobit.com>
References: <20260420213206.208750-1-Rose.Spangler@elektrobit.com>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit
Content-Type: text/plain
X-Originating-IP: [10.10.178.50]
X-ClientProxiedBy: denue6es012.ebgroup.elektrobit.com (10.243.160.140) To
 denue6es012.ebgroup.elektrobit.com (10.243.160.140)
X-EOPAttributedMessage: 1
X-MS-Exchange-SkipListedInternetSender:
 ip=[213.95.148.172];domain=denue6es012.ebgroup.elektrobit.com
X-MS-TrafficTypeDiagnostic:
	SJ1PEPF000026C9:EE_|CYXPR08MB9634:EE_|MWH0EPF000A6735:EE_|BY3PR08MB7201:EE_
X-MS-Office365-Filtering-Correlation-Id: 2401a26c-74af-4c81-3b81-08de9f247d65
X-SM-outgoing: yes
X-MS-Exchange-SenderADCheck: 1
X-MS-Exchange-AntiSpam-Relay: 0
X-Microsoft-Antispam-Untrusted:
 BCL:0;ARA:13230040|704161411799003|36860700016|1800799024|376014|82310400026|56012099003|22082099003|18002099003;
X-Microsoft-Antispam-Message-Info-Original:
 =?us-ascii?Q?u030/QuE4rdGUY8y1qsuRdeWQokMDXqv3zAIhtEb1MAJdaFiRoGjChW0a1jz?=
 =?us-ascii?Q?8MjaKe0abcGAQbRmXW3rD7cp6zQQwMKzfVwwp26VOb6g7xBJnXesKIpjSt72?=
 =?us-ascii?Q?iA9QnRdhtZYLcQp+6NWiJ3hcpox4tYuiKCnM1rLZGx8QrR5RC/uMZhIfi+JX?=
 =?us-ascii?Q?d4W00FhoXEPhOohfRtkciYYE/SJ4HdbNrSfX7Ij69Q2gUYIV5yw3eEP7qRi1?=
 =?us-ascii?Q?1pYqhQMB4TQw926DvXIkxEaZzEln2PmFeVnvT0VNtNE9ZMgsFldUqZosgnBt?=
 =?us-ascii?Q?ZnTKrMrKr947Q1L/+CNEwYLE2bRD6kPDoYQ+M3IwoZhbTZXt+Yy3ddMFAR0b?=
 =?us-ascii?Q?Bedkll78e35Z7HMsTxKKgbcqZAn2CM2ZCWgl9ynVYhYUUPhdEVw8c7p2x9I1?=
 =?us-ascii?Q?4ym3v5Y63ELa0vy6K5i+2wMS4K2xYsflLWmfPGceFaojsIYV2WiemNt3LSu3?=
 =?us-ascii?Q?G+8gnPR59ug5IilRLuqAFq29bSKPYzBlstUQwcBhqqavO6WNwFDorApHflTx?=
 =?us-ascii?Q?h71+/O3hH3F1OP9RhNOCAZfpynO7XI7rtXr9rBQfS9eUZ2dJtVlM2P79gPVB?=
 =?us-ascii?Q?/FOxV06po1LXcP4Eg5icD8iPP9ys9bfVR0Eiz/rycjDRlhCRgnlFhVE5GlxH?=
 =?us-ascii?Q?eZRczVMU7dN1RQ9as8pxhkxBc7TmwfEMrwL5e4rquXWXj67Tp2bfLrdMkCrF?=
 =?us-ascii?Q?nvIBcqiofStQKHs8BD/0FZyvkq5r8rGsLKEUlw3cb1RcyYyBQCM0kCh+L1oi?=
 =?us-ascii?Q?fhZkbu64bI+T6IYtY2iq2C+40EUfxsNVFM2W1q2qSFXur2nTeGhDT82r9EgH?=
 =?us-ascii?Q?OE/iwAU13ALlbARAjf035x2E8r2LMgYep0oNVUZtqQNWZ/kC8sF/7KCLNsMy?=
 =?us-ascii?Q?+anJk0odYHlvz1uuiJK2PR/oSpdLSJOz+8WAZa8eHVR2oMOoUz/bgl8e1P2t?=
 =?us-ascii?Q?mlwn8adeSKiU3PYM+wsGIJ/VgROmuJPxkCgem6YYKea685wqfxKT/jdLd+Di?=
 =?us-ascii?Q?+uAlh6GQjcGVQGGXmgvH2NCKuMVRJG0HmQt5LYlmIqK5xRZNu5YiHH8ewoje?=
 =?us-ascii?Q?LpS4JfxBzjBMfp5E7Hd770wDQYpU4yVC9H7aN1Mr6Wi40jijROCh+Bf3/a1u?=
 =?us-ascii?Q?SpOfXbF7/YP88CPIBEdumH4Yik33wu5wZyyexDJG/LnqayqHsc9gjamimkNo?=
 =?us-ascii?Q?Q0Jm9nRFNcwY1eIl?=
X-Forefront-Antispam-Report-Untrusted:
 CIP:213.95.148.172;CTRY:DE;LANG:en;SCL:1;SRV:;IPV:CAL;SFV:NSPM;H:denue6es012.ebgroup.elektrobit.com;PTR:eth1-fw1-nbg6.eb.noris.de;CAT:NONE;SFS:(13230040)(704161411799003)(36860700016)(1800799024)(376014)(82310400026)(56012099003)(22082099003)(18002099003);DIR:OUT;SFP:1102;
X-Exchange-RoutingPolicyChecked:
 GQ/HbE+wkVPlVkB5iPvgF5xwT8hbGFBg2Rz21nhd6YHP1pFQwfl8Ey2d8MTESumB8JaN4CgzPZOo/Nq8Bwe5h+1dYRN6uxkOKUeOm+UXkt0JjsikmrSzEUYCV74foOXWfVa8R2UBF5Y4gPrvJQuDHxAhBtzLqbWSlYqV9JG8jWuVGdLUUvPioY1UqWsrTFHTdDWVkjkCJ87N42QmnZTDbW//3BM9CqMzCKEBA9gZNcadzPHOBsPDjQbdPcNTsAwHMYIlFx7b32a2hRjGOe4mT1au3iovVi2JEecj1Yd16BKa56Xp6upyisT2Gmxu9PIvX4um848Q8kyomIb0cgzX+g==
X-MS-Exchange-Transport-CrossTenantHeadersStamped: CYXPR08MB9634
X-MS-Exchange-SkipListedInternetSender:
 ip=[40.93.1.73];domain=SJ0PR08CU001.outbound.protection.outlook.com
X-MS-Exchange-ExternalOriginalInternetSender:
 ip=[40.93.1.73];domain=SJ0PR08CU001.outbound.protection.outlook.com
X-MS-Exchange-Transport-CrossTenantHeadersStripped:
 MWH0EPF000A6735.namprd04.prod.outlook.com
X-MS-PublicTrafficType: Email
X-MS-Office365-Filtering-Correlation-Id-Prvs:
	7c2e5957-f544-4a56-a68e-08de9f247a65
X-Microsoft-Antispam:
	BCL:0;ARA:13230040|704161411799003|1800799024|82310400026|14060799003|35042699022|156008|36860700016|376014|56012099003|22082099003|18002099003;
X-Microsoft-Antispam-Message-Info:
	=?us-ascii?Q?rAbgB1WKgSJIfDnpSDZdr0v71AOeEGt7H97Bc2ACE/1N3raT4n2B+ERi0IyC?=
 =?us-ascii?Q?0uB1o1EwCCndHW892UX5/zzdYZsxv/0lo5KaNcfw1Nyk+EyJks2OyeXZYED/?=
 =?us-ascii?Q?61oj5lTJAcYlgjJ5zO+Qu23pSeIUBn5P2JCDpMDpfwreqUH4SGNAjYaqFoo6?=
 =?us-ascii?Q?E5ZlKz9x/DlADBl2T3n94KT7tAV5snEa6f86/x2i9ZOou9cJtJew+/eMIGyJ?=
 =?us-ascii?Q?cokiHSRrdrhWWFytnTU68GpsS+jC+I34Q7ql2a09OEUWe9Aq18yacurT++R9?=
 =?us-ascii?Q?bnQ+HPyl3eKHGCDS9f2UpMTpEKuMLpDQ4yaBW9GbZWeeyQbq0WcdPBN91hQv?=
 =?us-ascii?Q?uNbmp5FqjId+Nx8kJlt3xdyHAV9YCw+b5dh8SaA8i/pu5sLUW5V94qxguwlj?=
 =?us-ascii?Q?5wqOqngM707QNQkwjNK20/x+7KuWOf2lGMOmM+boQwob5U4AG6YhLHnnvgMl?=
 =?us-ascii?Q?Vx2QnJB4DWxvG5Xlckvar6q3YFU4Yt9GQTOBfwI4Qy7xY39I0yLu5srWKRMs?=
 =?us-ascii?Q?RjRa1uQ7W5cOSDvwawMcezURSlkWjCXzOhDpQ//6MrYXS2lmvsYzuyN2vV7Q?=
 =?us-ascii?Q?Csa5Wq61O687ytEGC6N5LTUgy+R+1GTlT2/1il3oGEhYsa5F9f4zfPtAAKMf?=
 =?us-ascii?Q?5bOCNce2QVDoRhscNGO/y+6X0/Ew6Q4OOIOwUU/PksYWJQ/E00jGdXMdSiVB?=
 =?us-ascii?Q?OtkvvVAefFYszJlG5hmxKcseNiqGqrn8R9m6aelZpBblOjdZC3LYngTd2ojc?=
 =?us-ascii?Q?82XAz/f5gPJQNgkZXGcE2HVRORdUp6HbR65k7tn23kW52nwpvOTIC71zogFP?=
 =?us-ascii?Q?VewbRP+JJXL1QIHq2PNcVwMYvZXMBRrwkLqHWNlJRsaPoiWND8lzUA6aGC/4?=
 =?us-ascii?Q?rFayCb92CQwT3buGZm9baXLTyMZ0yPj5siG4yrWnWv4IwCqDOo2QKIni5gWH?=
 =?us-ascii?Q?L9Js3WwNOktpZNNINRpgauDpWBBptxh3MNQioTOhnYjwG3HpEyChrJ8+UWmM?=
 =?us-ascii?Q?RwgdSV7YfcqMjUY/MvtSk5dxd9xfwLcdyubxhxF6zmjrY91BJKcyP2Ev7JUb?=
 =?us-ascii?Q?Am2PDNJiHLi0TPD1JkS0sXyJjg6SbyW/9CeUxXbfLPsbOPIkl3IRXfNTAj45?=
 =?us-ascii?Q?IbxQADU/YKQJ0eoy6tu6EVScKIJ83xotUwIIkFbwTXgPfeSsk4OeOCXRkAp6?=
 =?us-ascii?Q?tkKoWPCZyDezxa4J?=
X-Forefront-Antispam-Report:
	CIP:4.79.107.243;CTRY:US;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:SJ0PR08CU001.outbound.protection.outlook.com;PTR:mail-sj0pr08cu00101.outbound.protection.outlook.com;CAT:NONE;SFS:(13230040)(704161411799003)(1800799024)(82310400026)(14060799003)(35042699022)(156008)(36860700016)(376014)(56012099003)(22082099003)(18002099003);DIR:OUT;SFP:1102;
X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1
X-MS-Exchange-AntiSpam-MessageData-0:
	8+NdLyPprCdCj3SMjh/5XbLTBqrjD0tnuhkeJ9TusAAYfeX4FprfAr15p3Z/rcVDIZRoaMC0jplzpB4utpkin/joIH3miEW0Aaa8mA4AEj7w8g5Ii23i5KrMk4qETp4P07ws2fXJjJVTn4Q/1AN8u7whp4JpFBDqrJR7XiE37syySqMdHvj8aBojrSKQztzH6i4gcum41r8S7QYVc5qYY8g8PlDMyAS5ILogK3mAZMiTGEVDWc7AE8BariKgN2pm58QByh4MGlBrHj/qfYEhxqbDIHCuqnXgRNLEX9MCs1ZaLZNy8hwbD3sJ3/b2m94bHOqM6W+HU/jni1fNuE+yso2ZCVI2qKjYC01+u7PjOsnSyWCfRv3TUlGrcFNp21k3IofnDpH6S/jI7KiCPR0I29BYaql4/T3iIQI0eyBPmYsYDOl9+mw7uv0YH07k+2Zd
X-OriginatorOrg: elektrobit.com
X-MS-Exchange-CrossTenant-OriginalArrivalTime: 20 Apr 2026 21:33:40.3694
 (UTC)
X-MS-Exchange-CrossTenant-Network-Message-Id: 2401a26c-74af-4c81-3b81-08de9f247d65
X-MS-Exchange-CrossTenant-Id: e764c36b-012e-4216-910d-8fd16283182d
X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=e764c36b-012e-4216-910d-8fd16283182d;Ip=[4.79.107.243];Helo=[usbth1es003.ebgroup.elektrobit.com]
X-MS-Exchange-CrossTenant-AuthAs: Internal
X-MS-Exchange-CrossTenant-AuthSource: TreatMessagesAsInternal-MWH0EPF000A6735.namprd04.prod.outlook.com
X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem
X-MS-Exchange-Transport-CrossTenantHeadersStamped: BY3PR08MB7201
X-purgate-ID: tlsNG-720697/1776720825-B2969161-FA4B2E62/0/0
X-purgate-type: clean
X-purgate-size: 2484

This commit makes the altp2m_flush compatible with ARM by replacing the
x86-specific set view visibility code with the architecture independent
altp2m_set_view_visibility locked.

This is commit 2/2 of the altp2m_flush phase.

Signed-off-by: Rose Spangler <Rose.Spangler@elektrobit.com>
---
v6: Introduced this patch.

    There is a small amount of additional overhead introduced on x86 by
    replacing these direct array sets with calls to
    altp2m_set_view_visibility_locked. That function also calls
    altp2m_is_eptp_valid, which performs additional checks, and also bounds
    the array sets with array_index_nospec, which isn't technically
    necessary here since we can be certain that the array set will be less
    than nr_altp2m. This could be resolved by introducing another
    altp2m_set_view_visibility variant (ex.
    altp2m_set_view_visibility_unchecked?) which would replace usages of
    altp2m_set_view_visibility_locked, but I'm not sure if the overhead is
    enough to matter here.
---
 xen/common/altp2m.c      | 5 +----
 xen/include/xen/altp2m.h | 2 --
 2 files changed, 1 insertion(+), 6 deletions(-)

diff --git a/xen/common/altp2m.c b/xen/common/altp2m.c
index 0dd3ecf226fd..d980ebed08ab 100644
--- a/xen/common/altp2m.c
+++ b/xen/common/altp2m.c
@@ -123,7 +123,6 @@ int altp2m_init_by_id(struct domain *d, unsigned int idx)
     return rc;
 }
 
-#ifdef CONFIG_X86
 void altp2m_flush(struct domain *d)
 {
     unsigned int i;
@@ -133,13 +132,11 @@ void altp2m_flush(struct domain *d)
     for ( i = 0; i < d->nr_altp2m; i++ )
     {
         altp2m_reset_altp2m(d, i, ALTP2M_DEACTIVATE);
-        d->arch.altp2m_eptp[i] = mfn_x(INVALID_MFN);
-        d->arch.altp2m_visible_eptp[i] = mfn_x(INVALID_MFN);
+        altp2m_set_view_visibility_locked(d, i, 0);
     }
 
     altp2m_unlock(d);
 }
-#endif
 
 /*
  * altp2m operations are envisioned as being used in several different
diff --git a/xen/include/xen/altp2m.h b/xen/include/xen/altp2m.h
index fa2c11f5432e..5222c24ef418 100644
--- a/xen/include/xen/altp2m.h
+++ b/xen/include/xen/altp2m.h
@@ -74,10 +74,8 @@ int do_altp2m_op(XEN_GUEST_HANDLE_PARAM(void) arg);
 /* Make a specific alternate p2m valid */
 int altp2m_init_by_id(struct domain *d, unsigned int idx);
 
-#ifdef CONFIG_X86
 /* Flush all the alternate p2m's for a domain */
 void altp2m_flush(struct domain *d);
-#endif
 
 #else /* CONFIG_ALTP2M */
 
-- 
2.34.1



From xen-devel-bounces@lists.xenproject.org Mon Apr 20 21:34:00 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 20 Apr 2026 21:34:00 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1287924.1568381 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wEwFk-0002Ou-6Z; Mon, 20 Apr 2026 21:34:00 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1287924.1568381; Mon, 20 Apr 2026 21:33: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 1wEwFi-0002GI-Gd; Mon, 20 Apr 2026 21:33:58 +0000
Received: by outflank-mailman (input) for mailman id 1287924;
 Mon, 20 Apr 2026 21:33:47 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <Rose.Spangler@elektrobit.com>) id 1wEwFW-0008Rr-OD
 for xen-devel@lists.xenproject.org; Mon, 20 Apr 2026 21:33:46 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wEwFW-00EgH4-44
 for xen-devel@lists.xenproject.org; Mon, 20 Apr 2026 23:33:46 +0200
Received: from [10.42.69.8] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <Rose.Spangler@elektrobit.com>)
 id 69e69bb5-e002-0a2a0a5209dd-0a2a4508b40e-4
 for <xen-devel@lists.xenproject.org>; Mon, 20 Apr 2026 23:33:46 +0200
Received: from [40.93.198.89]
 (helo=CY7PR03CU001.outbound.protection.outlook.com)
 by tlsNG-c1860d.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.1)
 (envelope-from <Rose.Spangler@elektrobit.com>)
 id 69e69bb7-63b5-0a2a45080019-285dc6597c53-3
 for <xen-devel@lists.xenproject.org>; Mon, 20 Apr 2026 23:33:45 +0200
Received: from SJ0PR13CA0237.namprd13.prod.outlook.com (2603:10b6:a03:2c1::32)
 by CH0PR08MB8613.namprd08.prod.outlook.com (2603:10b6:610:183::17)
 with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9818.32; Mon, 20 Apr
 2026 21:33:38 +0000
Received: from MWH0EPF000A672E.namprd04.prod.outlook.com
 (2603:10b6:a03:2c1:cafe::3f) by SJ0PR13CA0237.outlook.office365.com
 (2603:10b6:a03:2c1::32) with Microsoft SMTP Server (version=TLS1_3,
 cipher=TLS_AES_256_GCM_SHA384) id 15.20.9791.48 via Frontend Transport; Mon,
 20 Apr 2026 21:33:36 +0000
Received: from usbth1es003.ebgroup.elektrobit.com (4.79.107.243) by
 MWH0EPF000A672E.mail.protection.outlook.com (10.167.249.20) with Microsoft
 SMTP Server (version=TLS1_3, cipher=TLS_AES_256_GCM_SHA384) id 15.20.9791.48
 via Frontend Transport; Mon, 20 Apr 2026 21:33:36 +0000
Received: from usbth1es003 (localhost [127.0.0.1])
 by usbth1es003.ebgroup.elektrobit.com (Postfix) with SMTP id 4fzzJ00jxGz1wdZ; 
 Mon, 20 Apr 2026 14:33:36 -0700 (PDT)
Received: from BYAPR08CU003.outbound.protection.outlook.com
 (mail-byapr08cu00306.outbound.protection.outlook.com [40.93.1.110])
 (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)
 key-exchange secp384r1 server-signature RSA-PSS (2048 bits) server-digest
 SHA256) (No client certificate requested)
 by usbth1es003.ebgroup.elektrobit.com (Postfix) with ESMTPS;
 Mon, 20 Apr 2026 14:33:35 -0700 (PDT)
Received: from BY1P220CA0022.NAMP220.PROD.OUTLOOK.COM (2603:10b6:a03:5c3::14)
 by SN4PR0801MB7744.namprd08.prod.outlook.com (2603:10b6:806:203::17)
 with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9818.31; Mon, 20 Apr
 2026 21:33:32 +0000
Received: from SJ1PEPF000026C9.namprd04.prod.outlook.com
 (2603:10b6:a03:5c3:cafe::77) by BY1P220CA0022.outlook.office365.com
 (2603:10b6:a03:5c3::14) with Microsoft SMTP Server (version=TLS1_3,
 cipher=TLS_AES_256_GCM_SHA384) id 15.20.9791.48 via Frontend Transport; Mon,
 20 Apr 2026 21:33:31 +0000
Received: from denue6es012.ebgroup.elektrobit.com (213.95.148.172) by
 SJ1PEPF000026C9.mail.protection.outlook.com (10.167.244.106) with Microsoft
 SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id
 15.20.9791.48 via Frontend Transport; Mon, 20 Apr 2026 21:33:31 +0000
Received: from ubuntu.localdomain (10.10.178.50) by
 denue6es012.ebgroup.elektrobit.com (10.243.160.140) with Microsoft SMTP
 Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id
 15.2.2562.35; Mon, 20 Apr 2026 23:33:27 +0200
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@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=elektrobit.com header.i="@elektrobit.com" header.h="From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck"; dkim=pass header.s=selector1 header.d=elektrobit.com header.i="@elektrobit.com" header.h="From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck"
ARC-Seal: i=2; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=pass;
 b=qy7UIJL/oN9FpqFvzzZX+5OdMbiJFhvoafWRadBDZTleAPIPY3HIfHAKDepSmpxwZMFGjOPb9/94NDEUX+lEElIZdBS0Mz4KfHafrDt27XCu8YSDIzp0YrAxlbbmJZgHT9M5NLty5YG3REnS7oxcEePWnxaMLaLEMbJBJqCe56jRuvuXRy4bwUbERNrk79WkepqrTUVeqFcpYXN0I8lbwBhKOXY85le7fqYd/X4EVC9wS4U7c7vhgawDAMV8oIjUAqfgzpqxw156yO11Ax1vjnSTWiLW2h4tLiZmf7yDYGbcHAgL3qnp4TzLOMDB5myCFABsXPYI9arkOlpqYBMPSw==
ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com;
 s=arcselector10001;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1;
 bh=+XnwEw2LkEZsqrQt7TCPVOkF1Np7ZHiylY2Nnd/lA20=;
 b=YosoNoBUx/1PByQi96zDzHPdjtE0qhu3dOB+G6wGpHNoPWo2qCIAbKNn06h+53cxl1pmx4cAWd+dK9V4edtimHeyMcOA+nO4E3juynjRHD3H0scF8Snj2xqxLwJfv+nhPWm9+YalcGbuabQPOvPFOonposDTQFOZvONb5a3S5no6AXLaX3go7H76yiEfKgJg0U/DBE5DjkRhVM8h7dI4ZAWFj6xwhOHAbUOPc8/4pB8PIpeV8zLE8+3VEd6lUZykiEZBGfZ3czdIAFkooHcb+vU1gzyUtMIdVHiXS7Qs+y1HDR2s1d7WA4w8I62c6DS0lO9+nboZBwqpajhwNoh8Cw==
ARC-Authentication-Results: i=2; mx.microsoft.com 1; spf=pass (sender ip is
 40.93.1.110) smtp.rcpttodomain=citrix.com smtp.mailfrom=elektrobit.com;
 dmarc=pass (p=quarantine sp=none pct=100) action=none
 header.from=elektrobit.com; dkim=pass (signature was verified)
 header.d=elektrobit.com; arc=pass (0 oda=1 ltdi=1
 spf=[1,1,smtp.mailfrom=elektrobit.com]
 dmarc=[1,1,header.from=elektrobit.com])
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=elektrobit.com;
 s=selector1;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck;
 bh=+XnwEw2LkEZsqrQt7TCPVOkF1Np7ZHiylY2Nnd/lA20=;
 b=qy4OxXo/yi1hnlY7uxDjofXtPsTmYct5+syZRTbfhkQX0DKC3b+fiih7p72pj5579ZSgRDQ6xIpahCPm5AejfOjQ99oMDqGlcDcS7OEcKtA1k0DI4Sz3QOgzXNyPB4Mo32C/e9wTyHEXgbsS15OGhNeV3fMLpmDAsqrbyLs+Lvw=
X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 40.93.1.110)
 smtp.mailfrom=elektrobit.com; dkim=pass (signature was verified)
 header.d=elektrobit.com;dmarc=pass action=none header.from=elektrobit.com;
Received-SPF: Pass (protection.outlook.com: domain of elektrobit.com
 designates 40.93.1.110 as permitted sender) receiver=protection.outlook.com;
 client-ip=40.93.1.110; helo=BYAPR08CU003.outbound.protection.outlook.com;
 pr=C
ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none;
 b=CTALkUp0W1HYpm/ttqRs3aAkLj/U7l9l6Ho1hmYAK6Z2t6r84G6g8/I4u9tQIzr0gKWny/L6sI/nE3mjNkMHuSE8SqWdkftJTw4zZMJSx0J0LnvDdaWYZhwTyddXihrqueyXLZoWkxJG6r5lNZsdbh1PTszn61bWmazaO9ECQ6kHdv/6dzbn0dxPhmQaRZcOAdqFKc31p5zIVRAeN2kAybuoxaJRje1iX4Vr1XhmBuQHOKNX1MqWICkcdGix6RdsbqKDV5/8UIBq2qGepLKYj66NgK/61WRrA/sJp3iGOi/LPsp9wNOW15l/4CEzI2i+Fof7UwWnyAqfhsvq5iS/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=+XnwEw2LkEZsqrQt7TCPVOkF1Np7ZHiylY2Nnd/lA20=;
 b=jG5/hAnuJK7rRtpZFBzH3MbvyLJzgmcmPOF9/M4jFlVOsi5dUWbrjMsFnbUontAd0XMCpl1XCP6V/+ZaQri2aKEtbtJap6xeb8LcGlA6RQeFXwJ5l+O261Iq0Ark4kv4S7d8mz8mAmv4FfUMKPfmqU8weycri1BRlugVKd8QtiOeA8hd9rBwTfsIy5gG1rwXLgBjluHuP8dOTQnclNQYXF2HcyQ5rbRDJTAKUMWCi3vGNh8GDNYibej6kZ/LbyWmBXEXPFhz6EJDKK8teFAZvN66HaRYW79ynrnlPPGA71pLo/Bk0ZHP/ILS6h4dZt2dbn7Q2VvGhAeLYn2iNhgqWg==
ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass (sender ip is
 213.95.148.172) smtp.rcpttodomain=lists.xenproject.org
 smtp.mailfrom=elektrobit.com; dmarc=pass (p=quarantine sp=none pct=100)
 action=none header.from=elektrobit.com; dkim=none (message not signed);
 arc=none (0)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=elektrobit.com;
 s=selector1;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck;
 bh=+XnwEw2LkEZsqrQt7TCPVOkF1Np7ZHiylY2Nnd/lA20=;
 b=qy4OxXo/yi1hnlY7uxDjofXtPsTmYct5+syZRTbfhkQX0DKC3b+fiih7p72pj5579ZSgRDQ6xIpahCPm5AejfOjQ99oMDqGlcDcS7OEcKtA1k0DI4Sz3QOgzXNyPB4Mo32C/e9wTyHEXgbsS15OGhNeV3fMLpmDAsqrbyLs+Lvw=
X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 213.95.148.172)
 smtp.mailfrom=elektrobit.com; dkim=none (message not signed)
 header.d=none;dmarc=pass action=none header.from=elektrobit.com;
Received-SPF: Pass (protection.outlook.com: domain of elektrobit.com
 designates 213.95.148.172 as permitted sender)
 receiver=protection.outlook.com; client-ip=213.95.148.172;
 helo=denue6es012.ebgroup.elektrobit.com; pr=C
From: Rose Spangler <Rose.Spangler@elektrobit.com>
To: <xen-devel@lists.xenproject.org>
CC: Rose Spangler <Rose.Spangler@elektrobit.com>, Jan Beulich
	<jbeulich@suse.com>, Andrew Cooper <andrew.cooper3@citrix.com>,
	=?UTF-8?q?Roger=20Pau=20Monn=C3=A9?= <roger.pau@citrix.com>, Teddy Astie
	<teddy.astie@vates.tech>
Subject: [RFC PATCH v6 39/43] x86/altp2m: Add altp2m_reset_altp2m declaration to arch header
Date: Mon, 20 Apr 2026 17:32:02 -0400
Message-ID: <20260420213206.208750-40-Rose.Spangler@elektrobit.com>
X-Mailer: git-send-email 2.34.1
In-Reply-To: <20260420213206.208750-1-Rose.Spangler@elektrobit.com>
References: <20260420213206.208750-1-Rose.Spangler@elektrobit.com>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit
Content-Type: text/plain
X-Originating-IP: [10.10.178.50]
X-ClientProxiedBy: denue6es012.ebgroup.elektrobit.com (10.243.160.140) To
 denue6es012.ebgroup.elektrobit.com (10.243.160.140)
X-EOPAttributedMessage: 1
X-MS-Exchange-SkipListedInternetSender:
 ip=[213.95.148.172];domain=denue6es012.ebgroup.elektrobit.com
X-MS-TrafficTypeDiagnostic:
	SJ1PEPF000026C9:EE_|SN4PR0801MB7744:EE_|MWH0EPF000A672E:EE_|CH0PR08MB8613:EE_
X-MS-Office365-Filtering-Correlation-Id: 51c387a7-23ea-462f-bd5f-08de9f247b08
X-SM-outgoing: yes
X-MS-Exchange-SenderADCheck: 1
X-MS-Exchange-AntiSpam-Relay: 0
X-Microsoft-Antispam-Untrusted:
 BCL:0;ARA:13230040|704162011799003|36860700016|1800799024|376014|82310400026|56012099003|22082099003|18002099003;
X-Microsoft-Antispam-Message-Info-Original:
 =?us-ascii?Q?2sPogMVMPSPUsJHrSh7XpbJ4/jqd92+FIPgwwlWwauy8VvC5aGqBvwCoZqrv?=
 =?us-ascii?Q?yDjf706pvs+yG72nWeCTOkBuM9uDz8PvxngY0PKzQiDwTrFfhQt+dFpgR7OY?=
 =?us-ascii?Q?Q0T9lVaJTk3eno+EOdNLNc646l+u2TdxrkKFWj1r3iGBn/isJ3WJ/8popzPf?=
 =?us-ascii?Q?1Mla0LR5dF9A6nmUY5Vrz7ei3ZD8KrA8EInrqBqRei2mb5Vlhh1zJ/ABTLzf?=
 =?us-ascii?Q?y1kVdeT9BhUvlzy9gzQomFVk3HLMDdmrun62IDOHtEnefuqCUA2lnsUwmUMx?=
 =?us-ascii?Q?AnoCfHM23Of949V8WDbE/iHBeuL+lwxDZZ4iM6Dys/hglw95PlX5wWdkDvOO?=
 =?us-ascii?Q?GalvvNAaS+ZITZYQssAi6S6ewmM6enldNoqKU3U2J4NlQ016HhuCSLKoAcYz?=
 =?us-ascii?Q?wmGyEl1ZS2ZTDawYF1W9PT245H4PXLh6dKNqbpQZt2uEmLrgPHnazjTKfiNK?=
 =?us-ascii?Q?wjQ7W8yFBWhEIN7Ltmoj0MIEl+qFLCoWW6K4X7nzRlkn8Pi+++A8y2fi4V/b?=
 =?us-ascii?Q?hHgaKwo0YyzDWOdalaqWKsCylpo71zUmuDQmBovp2MVe+mnihStJZ4jOxKRW?=
 =?us-ascii?Q?8twlCHur3X9/j2fcDACv9qg5oRf9BZs/aF8p0W3qmQ7vnC5yWkqwgD12y8d9?=
 =?us-ascii?Q?o5hQRugJNzNqrFVO9xTymuXsJQCkkMGcdHdPJKLOqKyJNlMcNnmRlc3KaTgh?=
 =?us-ascii?Q?QY6PVP+TSxj9JyEosGQfT226vp6boZvZn4HTZxJ6r6ei3ixZ3t3Ba3envp1P?=
 =?us-ascii?Q?4qVnG2j6xyBd9+nyx+ZrYImOvguqLVMQe9g19CaEYdqnCE4iqVrKkeIzTobE?=
 =?us-ascii?Q?8njHin354ihYZRNJDVKRRZvIZjYOUV/q7tNgOQPPuqCkrTqxd3PTk+9knfDQ?=
 =?us-ascii?Q?RhiT/whrhJvISnDBmIGdZmmJreyaLiy38DcpN2PmPbYAIBshLt/otZGrcm41?=
 =?us-ascii?Q?a0Q9tH8se6N87vVjUJmyPgj6p6AfCN5HW/Z9iblJ8Q/fOSUBbKQnq4OTznOK?=
 =?us-ascii?Q?pgWWHvS5M2ebWjmsUC/RhCZ12Irao0qhe6beiEczgEEDhDmRTMHC31EwGL0S?=
 =?us-ascii?Q?lYTzfqOlJZ0RggOzmNc4rH69UiowLTVhI2n4eLbjrC+L/z3hu69u/GuJ/4hf?=
 =?us-ascii?Q?oWCbrAJIe7hNObNIkqKDQSYWEDNxtcWauw=3D=3D?=
X-Forefront-Antispam-Report-Untrusted:
 CIP:213.95.148.172;CTRY:DE;LANG:en;SCL:1;SRV:;IPV:CAL;SFV:NSPM;H:denue6es012.ebgroup.elektrobit.com;PTR:eth1-fw1-nbg6.eb.noris.de;CAT:NONE;SFS:(13230040)(704162011799003)(36860700016)(1800799024)(376014)(82310400026)(56012099003)(22082099003)(18002099003);DIR:OUT;SFP:1102;
X-Exchange-RoutingPolicyChecked:
 ibjRNCsaVZPLxim+jwQAEC7p2KfBsnqlcyiOXbecBaQGfj5P20tR8JOD8aZ5alA0GIQdOjDcEUfx2/vzAQvlxC9IO62VaO8ENH7EVIG30JuNhNzdUYMB1iKbf2neVDO1luwX+4x2fTpDbo4ju3k+Sr2qhR5F4ZmOOxjcRMfR/I1/8ldLQ5mk5Hg7ziDY5PaRT3DnOabqANhmWjoSKalb0AaR95W7zsFcZOY6Z/Rpyc04epSSmmTh6Ka+zftPN+iitSCh6wYCrD3nh8Lo+zs2Df0I7hl1VRcaBU5Wnyw8BOGGTzRG5hyQg83WaoZ+znjo7g9L+V7MGjiaoXdcRHLLGA==
X-MS-Exchange-Transport-CrossTenantHeadersStamped: SN4PR0801MB7744
X-MS-Exchange-SkipListedInternetSender:
 ip=[40.93.1.110];domain=BYAPR08CU003.outbound.protection.outlook.com
X-MS-Exchange-ExternalOriginalInternetSender:
 ip=[40.93.1.110];domain=BYAPR08CU003.outbound.protection.outlook.com
X-MS-Exchange-Transport-CrossTenantHeadersStripped:
 MWH0EPF000A672E.namprd04.prod.outlook.com
X-MS-PublicTrafficType: Email
X-MS-Office365-Filtering-Correlation-Id-Prvs:
	976af3c1-c846-43cf-6d77-08de9f247806
X-Microsoft-Antispam:
	BCL:0;ARA:13230040|704162011799003|82310400026|14060799003|35042699022|156008|36860700016|376014|1800799024|22082099003|56012099003|18002099003;
X-Microsoft-Antispam-Message-Info:
	=?us-ascii?Q?FdnjhJkfiVR2wZIHyfzOlbdNabjPJY4Bw2fh9lU9BsmVPIs6WZzfFo6xvqSM?=
 =?us-ascii?Q?K3evjX0FPmckCkUGEQnb854AZh04RwI6trj+7yFVsp+1vt6Kj9Q3vwrO4JL1?=
 =?us-ascii?Q?BQG63zxdz+CWM9dGN2J2iR50v8SRiXCAsgYbznvTDELfcDE9DthQ+lmuh6FR?=
 =?us-ascii?Q?ReMJjsa5S2jcr28UlvcqYxES2RqWrcoyCsV069+u6B+1405BYI9DXcFWD7Tb?=
 =?us-ascii?Q?fr19W1CNZnDVu8EdcMWALTb49BIaJZ5be9PGn1FSsaQNE/CG03MsNEe3MOxu?=
 =?us-ascii?Q?FU79yY7EuIVQ+2GVFvW/gIBW0AmKp55lD5KSge2iCMfo6BhQQ+G5dJz5hnbz?=
 =?us-ascii?Q?FbKm5xG8ob/J8uWJWRnTiG77+utkXQXPN5ne/4Hh7NhAP3PSJYNkSoyD8M/1?=
 =?us-ascii?Q?LOVtr0gYGjGnNQygGZKXYo28hXaLGHrSHvZxMlFjFC0HZIZZrANOxms7J27s?=
 =?us-ascii?Q?ua66g5H/CMw3w2wQi8qI9HV0Zy1atfq0j3Lm+KiBHhLy0LzV7TrLAKnFprs6?=
 =?us-ascii?Q?yO/6veunonTpvdESGieS/8OEcUXkYehap0B9rJZkoX6y1LdnVfdsZXnmYC9c?=
 =?us-ascii?Q?C0FCnEzDAstVGbAEKaA1odvj69sgAKW4W6Ox0tJ65dw29a1x/Jo4SZgsvAai?=
 =?us-ascii?Q?mwagRskBaSaK5wCU7ZDWaeRsCJPS47XIKkV6T0ixQ32afHVCnSfvqan0bDtg?=
 =?us-ascii?Q?a5tw4nT9RKjaDUSSl1cUn3FHCpSvj/+mQENIHMi+3IDXYknaX0ZiLb+5GiBI?=
 =?us-ascii?Q?RH5xMXYVIlQcrFYGtD/JH60ENrMqyXqyXY8c2w2sNOghrRi1fCkmh13gJyqv?=
 =?us-ascii?Q?lFHCxMEzvcxd4sP4UVlg7qtEsSEZQB+sPVTRyAJEge9IBqOEyXKAoZjWB/Vp?=
 =?us-ascii?Q?QQAJXTPJcTKloxy5P6DOSJY5vOfM6h0HxE06A/zFtPxjy7VKW2oSAim6F6zx?=
 =?us-ascii?Q?vRQA7awhDB1poe5D7seVGnc1JnYV0z/Y/HL4dFs+lPYfPvBjQGV2mBvq9crE?=
 =?us-ascii?Q?Xhn5YTdFEs8V7FXpEkIa3JAA3fkJtZFxA+mZ8F08AumxR+vsStentk9UWANG?=
 =?us-ascii?Q?6CIrxmb3l9p8bRodUhLhmNTEDvYvxFzhQcfYJ7JCxb0Dnd2jx+GCCINimTgm?=
 =?us-ascii?Q?SCPE1r42uwhXQnrEoW+RCCKcDxLjTO89ZA=3D=3D?=
X-Forefront-Antispam-Report:
	CIP:4.79.107.243;CTRY:US;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:BYAPR08CU003.outbound.protection.outlook.com;PTR:mail-byapr08cu00306.outbound.protection.outlook.com;CAT:NONE;SFS:(13230040)(704162011799003)(82310400026)(14060799003)(35042699022)(156008)(36860700016)(376014)(1800799024)(22082099003)(56012099003)(18002099003);DIR:OUT;SFP:1102;
X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1
X-MS-Exchange-AntiSpam-MessageData-0:
	iZyVvjaEa4NT7vLxP5WRAvyzQAMgIIwQdvYCK6Qzq8x1i0ac/oewITB0TA/LitktWnLBtEy5XSz47adkwNsxPtvD5cx4FcVvG5/XFV3rNu4CyWPSahESXNhCY/cJ/hqgrfSPdzPI1GQg/VYSwRx8ZsaoXXzMfwnoBYVA6R/le6wrbqr2jLHrPEchLdC6yjBukiNciQ6gKRLr0ss5tC0uanjt1Rqmx4p5DlcxD3kZSq/BGwoYsD2kWX35/b+K91113B0/cdRYCfVGsrnlhbrUJpJpF+jeF6RCILCniCnufRR1AdRa0xJ0xssGIfCtJ56CTZDCvql4qXlvHmwi2mUW0AfI98ne8f02QSRXexTBOeSIIJji4pGp8FAuTNMiWFNS4bWg+1582Bgtuqc/2w/445WJsHAEz+iPtZcfnEawLoJqJop97TTS1X2rT4ktw4/Z
X-OriginatorOrg: elektrobit.com
X-MS-Exchange-CrossTenant-OriginalArrivalTime: 20 Apr 2026 21:33:36.3595
 (UTC)
X-MS-Exchange-CrossTenant-Network-Message-Id: 51c387a7-23ea-462f-bd5f-08de9f247b08
X-MS-Exchange-CrossTenant-Id: e764c36b-012e-4216-910d-8fd16283182d
X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=e764c36b-012e-4216-910d-8fd16283182d;Ip=[4.79.107.243];Helo=[usbth1es003.ebgroup.elektrobit.com]
X-MS-Exchange-CrossTenant-AuthAs: Internal
X-MS-Exchange-CrossTenant-AuthSource: TreatMessagesAsInternal-MWH0EPF000A672E.namprd04.prod.outlook.com
X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem
X-MS-Exchange-Transport-CrossTenantHeadersStamped: CH0PR08MB8613
X-purgate-ID: tlsNG-c1860d/1776720825-C3D7BDB1-4353C520/0/0
X-purgate-type: clean
X-purgate-size: 2107

This commit makes altp2m_reset_altp2m non-static and adds a declaration to
the asm/altp2m.h header. This makes it possible to call this function in
common altp2m routines. The altp2m_reset_type enum (which is the type of
one of the parameters of altp2m_reset) is also moved to the asm/altp2m.h
header.

This is commit 1/2 of the altp2m_reset_altp2m phase.

Signed-off-by: Rose Spangler <Rose.Spangler@elektrobit.com>
---
v6: Introduced this patch.
---
 xen/arch/x86/include/asm/altp2m.h | 8 ++++++++
 xen/arch/x86/mm/altp2m.c          | 9 ++-------
 2 files changed, 10 insertions(+), 7 deletions(-)

diff --git a/xen/arch/x86/include/asm/altp2m.h b/xen/arch/x86/include/asm/altp2m.h
index e7239326c71d..02b5e1a11220 100644
--- a/xen/arch/x86/include/asm/altp2m.h
+++ b/xen/arch/x86/include/asm/altp2m.h
@@ -92,6 +92,14 @@ int altp2m_init_next_available(struct domain *d, uint16_t *idx,
 /* Make a specific alternate p2m invalid */
 int altp2m_destroy_by_id(struct domain *d, unsigned int idx);
 
+/* Reset an altp2m view */
+enum altp2m_reset_type {
+    ALTP2M_RESET,
+    ALTP2M_DEACTIVATE
+};
+void altp2m_reset_altp2m(struct domain *d, unsigned int idx,
+                         enum altp2m_reset_type reset_type);
+
 /* Activate an altp2m view */
 int altp2m_activate_altp2m(struct domain *d, unsigned int idx,
                            p2m_access_t hvmmem_default_access);
diff --git a/xen/arch/x86/mm/altp2m.c b/xen/arch/x86/mm/altp2m.c
index edbaf54c3761..18f8a71f1682 100644
--- a/xen/arch/x86/mm/altp2m.c
+++ b/xen/arch/x86/mm/altp2m.c
@@ -228,13 +228,8 @@ bool altp2m_get_or_propagate(struct p2m_domain *ap2m, unsigned long gfn_l,
     return true;
 }
 
-enum altp2m_reset_type {
-    ALTP2M_RESET,
-    ALTP2M_DEACTIVATE
-};
-
-static void altp2m_reset_altp2m(struct domain *d, unsigned int idx,
-                                enum altp2m_reset_type reset_type)
+void altp2m_reset_altp2m(struct domain *d, unsigned int idx,
+                         enum altp2m_reset_type reset_type)
 {
     struct p2m_domain *p2m;
 
-- 
2.34.1



From xen-devel-bounces@lists.xenproject.org Mon Apr 20 21:34:03 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 20 Apr 2026 21:34:03 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1287931.1568393 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wEwFn-00033O-4C; Mon, 20 Apr 2026 21:34:03 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1287931.1568393; Mon, 20 Apr 2026 21:34: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 1wEwFl-0002y9-Sa; Mon, 20 Apr 2026 21:34:01 +0000
Received: by outflank-mailman (input) for mailman id 1287931;
 Mon, 20 Apr 2026 21:33:49 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <Rose.Spangler@elektrobit.com>) id 1wEwFY-0000IB-7v
 for xen-devel@lists.xenproject.org; Mon, 20 Apr 2026 21:33:48 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wEwFX-001NnB-Iz
 for xen-devel@lists.xenproject.org; Mon, 20 Apr 2026 23:33:47 +0200
Received: from [10.42.69.4] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <Rose.Spangler@elektrobit.com>)
 id 69e69b93-5cb7-0a2a0a5109dd-0a2a4504dc78-48
 for <xen-devel@lists.xenproject.org>; Mon, 20 Apr 2026 23:33:47 +0200
Received: from [52.101.56.72]
 (helo=BN1PR04CU002.outbound.protection.outlook.com)
 by tlsNG-ebf023.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.1)
 (envelope-from <Rose.Spangler@elektrobit.com>)
 id 69e69bba-1dec-0a2a45040019-34653848551b-3
 for <xen-devel@lists.xenproject.org>; Mon, 20 Apr 2026 23:33:47 +0200
Received: from BYAPR07CA0064.namprd07.prod.outlook.com (2603:10b6:a03:60::41)
 by LV3PR08MB9642.namprd08.prod.outlook.com (2603:10b6:408:210::9)
 with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9818.32; Mon, 20 Apr
 2026 21:33:41 +0000
Received: from SJ1PEPF000023CB.namprd02.prod.outlook.com
 (2603:10b6:a03:60:cafe::21) by BYAPR07CA0064.outlook.office365.com
 (2603:10b6:a03:60::41) with Microsoft SMTP Server (version=TLS1_3,
 cipher=TLS_AES_256_GCM_SHA384) id 15.20.9791.48 via Frontend Transport; Mon,
 20 Apr 2026 21:33:41 +0000
Received: from usbth1es003.ebgroup.elektrobit.com (4.79.107.243) 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.20.9791.48
 via Frontend Transport; Mon, 20 Apr 2026 21:33:40 +0000
Received: from usbth1es003 (localhost [127.0.0.1])
 by usbth1es003.ebgroup.elektrobit.com (Postfix) with SMTP id 4fzzJ4185Vz1wdY; 
 Mon, 20 Apr 2026 14:33:40 -0700 (PDT)
Received: from BL0PR07CU001.outbound.protection.outlook.com
 (mail-bl0pr07cu00104.outbound.protection.outlook.com [40.93.4.4])
 (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)
 key-exchange secp384r1 server-signature RSA-PSS (2048 bits) server-digest
 SHA256) (No client certificate requested)
 by usbth1es003.ebgroup.elektrobit.com (Postfix) with ESMTPS;
 Mon, 20 Apr 2026 14:33:39 -0700 (PDT)
Received: from BY1P220CA0019.NAMP220.PROD.OUTLOOK.COM (2603:10b6:a03:5c3::15)
 by SA6PR08MB9893.namprd08.prod.outlook.com (2603:10b6:806:422::16)
 with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9818.32; Mon, 20 Apr
 2026 21:33:34 +0000
Received: from SJ1PEPF000026C9.namprd04.prod.outlook.com
 (2603:10b6:a03:5c3:cafe::ad) by BY1P220CA0019.outlook.office365.com
 (2603:10b6:a03:5c3::15) with Microsoft SMTP Server (version=TLS1_3,
 cipher=TLS_AES_256_GCM_SHA384) id 15.20.9791.48 via Frontend Transport; Mon,
 20 Apr 2026 21:33:34 +0000
Received: from denue6es012.ebgroup.elektrobit.com (213.95.148.172) by
 SJ1PEPF000026C9.mail.protection.outlook.com (10.167.244.106) with Microsoft
 SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id
 15.20.9791.48 via Frontend Transport; Mon, 20 Apr 2026 21:33:33 +0000
Received: from ubuntu.localdomain (10.10.178.50) by
 denue6es012.ebgroup.elektrobit.com (10.243.160.140) with Microsoft SMTP
 Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id
 15.2.2562.35; Mon, 20 Apr 2026 23:33:30 +0200
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@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=elektrobit.com header.i="@elektrobit.com" header.h="From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck"; dkim=pass header.s=selector1 header.d=elektrobit.com header.i="@elektrobit.com" header.h="From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck"
ARC-Seal: i=2; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=pass;
 b=aGA81ZM5jZpEAtKeiiJKpcD0wQSrPx1rZ3a5gI9hqA30PGO+3UqvUe9PyTyBYQKrXFJVVsq/86lKghLfPiPbRaPYgLtbihCvE+LcPUex7QI5wDQ0/Tpk633OEWuhucDFZgVMkPz6udlUL55E7qO546q0Wg6x1j6KurXqhF7XlvJORQOTPypgx1ehTSRQtv1vSthlRydpu6QmKtq8LZG9lr6EebsrIpXsIgXl6G7w4+gj8j4MuwxbdYsZ3fCkwtgNZ4MGOYDzSsdG8Ly7i/D6tA2Wui4VfVxfBnDRFpIqEEmQ1bvQylERpHEAS8oap3MXnwQtC3/naY3vLP5EQnu3NA==
ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com;
 s=arcselector10001;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1;
 bh=v5iBIWyVgGmcouUlKkYdR5ODo5vGhPP2Z4ch8z9yjL8=;
 b=CRC4Ke7WwldP8SrDJndTQiLvs4Rsh+ie7rIrkAg4HhKvzaHhAoaH2L5METN7dyVI2Mvcdgb024CI+K4LXk6Oh9DQmBjspjv8OY92dxBw530jr0DJHhnJCuAG+hsUaFgECWQzlbeBqdoQpuzZFCtwdUXBWZXIo6Sh8cuYBCuVEIBA1FAKkvjwivo2hMmxw3gk3/aw718LK+FPGce8soQqt5rET96s0/HLUdWi7jVP684YmhmGhzP0NIW1OgrgNeKiymzjLNypzXujA0cbNsWnC7iIVaaaihzCWordnR9JxYyLraScOGhswqP8MtcXRA5LkyV4EWi4uf28DWLV86a6ug==
ARC-Authentication-Results: i=2; mx.microsoft.com 1; spf=pass (sender ip is
 40.93.4.4) smtp.rcpttodomain=amd.com smtp.mailfrom=elektrobit.com; dmarc=pass
 (p=quarantine sp=none pct=100) action=none header.from=elektrobit.com;
 dkim=pass (signature was verified) header.d=elektrobit.com; arc=pass (0 oda=1
 ltdi=1 spf=[1,1,smtp.mailfrom=elektrobit.com]
 dmarc=[1,1,header.from=elektrobit.com])
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=elektrobit.com;
 s=selector1;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck;
 bh=v5iBIWyVgGmcouUlKkYdR5ODo5vGhPP2Z4ch8z9yjL8=;
 b=TdQ5DuCT9XJan8tgPvjbA5zlhQgyrIcHjM1PqgcsiMhUBnoSl3mqld+EWUd+wDrOEXdBeqF40F7hjnHRmwGP5IOHVWA1CwcxUx4xUTF+6qp0RTauw4/QL1HgnEddbdTUKFfpoNRcukBuPf4P8CSqvQl8TwfjbxEoudyhu2XLxF8=
X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 40.93.4.4)
 smtp.mailfrom=elektrobit.com; dkim=pass (signature was verified)
 header.d=elektrobit.com;dmarc=pass action=none header.from=elektrobit.com;
Received-SPF: Pass (protection.outlook.com: domain of elektrobit.com
 designates 40.93.4.4 as permitted sender) receiver=protection.outlook.com;
 client-ip=40.93.4.4; helo=BL0PR07CU001.outbound.protection.outlook.com; pr=C
ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none;
 b=T2ooh8zc6xOiI/OPfEqqNSvE8jQJm31OJVCdVS1Vbx7Ek6cKs1lu4ok8N9nWWp4op2ghtb8OKvDvHHHfBZ/pVGxyqqNbYjYh9/YBlgZtzvXOPVoIfxhE1Vo95/DVbdyu6ihyeBzLTVhOnYLXTt6paJAP2ZAMCa5mKTWOW9EDZhX99qt6N+phcBTSTd9Tqd/nT8CO8BGjVGqswczOC8eI0VkkFSekaBSvN2gFtmphsCsKlPMNBBSY8i057kDo/QWtrdLyj57M7V8YnYh9rHotU8XOkM7fW01I2yUYF+dLW9fROxYHJaXcdHcF00iJFcBrvWMQuhyIzD4yWYrzs827eQ==
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com;
 s=arcselector10001;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1;
 bh=v5iBIWyVgGmcouUlKkYdR5ODo5vGhPP2Z4ch8z9yjL8=;
 b=xCdEeAWMjqr9rSRO0U285nwG4100hDKe2LZE3G1Wp90klxs8xiRxjJ89ddqyd5MLqr8FoC7RBrZvuKoss9H79MxiRu2MQX7InsctihJNSDNm33PR23DjECIT9VRlzqHInlk9zAMPUBktjuz1ko5Sql2zGfeX/m+lzaMjIKY+77zdiH+sW+D5odtiLD67m1fWeI0IdXwecObL70X/u+L6UddVtVcBCmLp9hmZhUG6Oh9ANNPSuJx3+wO5eyI5uFLJEG6HhKWhj924pmrdm2LjbkVki2lg3wNolJrCIo9fMc6D0jgLXR/6nsLUSmyQrBm3rHQ6lXvfpF3vrl2/ifUWnw==
ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass (sender ip is
 213.95.148.172) smtp.rcpttodomain=lists.xenproject.org
 smtp.mailfrom=elektrobit.com; dmarc=pass (p=quarantine sp=none pct=100)
 action=none header.from=elektrobit.com; dkim=none (message not signed);
 arc=none (0)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=elektrobit.com;
 s=selector1;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck;
 bh=v5iBIWyVgGmcouUlKkYdR5ODo5vGhPP2Z4ch8z9yjL8=;
 b=TdQ5DuCT9XJan8tgPvjbA5zlhQgyrIcHjM1PqgcsiMhUBnoSl3mqld+EWUd+wDrOEXdBeqF40F7hjnHRmwGP5IOHVWA1CwcxUx4xUTF+6qp0RTauw4/QL1HgnEddbdTUKFfpoNRcukBuPf4P8CSqvQl8TwfjbxEoudyhu2XLxF8=
X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 213.95.148.172)
 smtp.mailfrom=elektrobit.com; dkim=none (message not signed)
 header.d=none;dmarc=pass action=none header.from=elektrobit.com;
Received-SPF: Pass (protection.outlook.com: domain of elektrobit.com
 designates 213.95.148.172 as permitted sender)
 receiver=protection.outlook.com; client-ip=213.95.148.172;
 helo=denue6es012.ebgroup.elektrobit.com; pr=C
From: Rose Spangler <Rose.Spangler@elektrobit.com>
To: <xen-devel@lists.xenproject.org>
CC: Rose Spangler <Rose.Spangler@elektrobit.com>, Jan Beulich
	<jbeulich@suse.com>, Andrew Cooper <andrew.cooper3@citrix.com>,
	=?UTF-8?q?Roger=20Pau=20Monn=C3=A9?= <roger.pau@citrix.com>, 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: [RFC PATCH v6 41/43] altp2m: Move altp2m_flush to common code
Date: Mon, 20 Apr 2026 17:32:04 -0400
Message-ID: <20260420213206.208750-42-Rose.Spangler@elektrobit.com>
X-Mailer: git-send-email 2.34.1
In-Reply-To: <20260420213206.208750-1-Rose.Spangler@elektrobit.com>
References: <20260420213206.208750-1-Rose.Spangler@elektrobit.com>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit
Content-Type: text/plain
X-Originating-IP: [10.10.178.50]
X-ClientProxiedBy: denue6es012.ebgroup.elektrobit.com (10.243.160.140) To
 denue6es012.ebgroup.elektrobit.com (10.243.160.140)
X-EOPAttributedMessage: 1
X-MS-Exchange-SkipListedInternetSender:
 ip=[213.95.148.172];domain=denue6es012.ebgroup.elektrobit.com
X-MS-TrafficTypeDiagnostic:
	SJ1PEPF000026C9:EE_|SA6PR08MB9893:EE_|SJ1PEPF000023CB:EE_|LV3PR08MB9642:EE_
X-MS-Office365-Filtering-Correlation-Id: 696c9fe1-ec7e-47f8-8082-08de9f247da6
X-SM-outgoing: yes
X-MS-Exchange-SenderADCheck: 1
X-MS-Exchange-AntiSpam-Relay: 0
X-Microsoft-Antispam-Untrusted:
 BCL:0;ARA:13230040|704160111799003|36860700016|1800799024|376014|82310400026|56012099003|22082099003|18002099003;
X-Microsoft-Antispam-Message-Info-Original:
 =?us-ascii?Q?5VKCAxS7yB7pui9qV4QsfElVzYTZyZYJNlNksX0OkUvzl8RO+tQOag3ZjqUk?=
 =?us-ascii?Q?Q9T1jdlBqHvsVaPRVR5ucLrTBCdlcp7cCpbWoA5VQe7kicN5x7GY9pc5LYyj?=
 =?us-ascii?Q?hsm0CAYWTAOmZdNqABD+Uq3Py1aLyMqJFrjmkIm02ag/Ss6yMKld4PHjmIGI?=
 =?us-ascii?Q?m209KaLgiY1BMSc2xMr5AtfFHoo107BsXfkSYCPdpw4rUSPbbsiK1ecuQUuS?=
 =?us-ascii?Q?DL6F62FF58Z1CMrRUQF4RrXHs2dJCKOtZ487DGubFlaR4viFajNPdRGrqrbH?=
 =?us-ascii?Q?dGSGv058kb2mJ6RpTQzWBVCYVmi2P+Bd1j/qEJlkykKPO9n/0PN3R0IBamVf?=
 =?us-ascii?Q?qrPsJRac9mIod1ys2r8qKse4eOhZHSDArm7jTzNa5kOXnHx/ryfEvuX619td?=
 =?us-ascii?Q?rqm9LsRW5MyhuI9gIHv3dinCLTu9KhY7UIuCRH8+6R4x6B5GWBpsnk7F9lf8?=
 =?us-ascii?Q?WsvPSzyzSnIim9wkFzu9UgIrba4FQWuhQVtCSoBtyAHAYErec9xPrkz66FwV?=
 =?us-ascii?Q?T0fYl+HjL83GRvbMoVcKVSjnKWhI7SUDbn2nTtyKbIo1aw8EreAPmXknmMQE?=
 =?us-ascii?Q?wa8O8i2IxSiLx1yS3RxaSKQr7S+crML5eilBtZbJTYgvceHxyTp62X5aeBY7?=
 =?us-ascii?Q?kSrv21+5cv5RCbtkKiRff2vw3XKWGxKwmJSwYHEoD52efnDJXLDaTWalXxWX?=
 =?us-ascii?Q?sQnRTOx/DpACyyWhpmWTlqGraBelRDQFw+8hjFP28j8jxlopcerr3B7NZxz0?=
 =?us-ascii?Q?Lgo/IoZthrOqaKUmCZoDP9mgZjh2Jh4grrUUdC/sobSTmaw375I6dWJORzhL?=
 =?us-ascii?Q?xXlroUDW9O7QPAl90NW3N/7jcJYV6CW8rEkpxcrwEOyp1X3F7NRVpVhbUCiw?=
 =?us-ascii?Q?UTkTiYROVCo06gsUw7lDMumt6dUtSRVM9ZzhbyrwJj5BOagX476flBasXbvw?=
 =?us-ascii?Q?sJq1JwN+v5c2ImFuZxm73wmU1EJaLoZLp+Hb+yNmGqGgOpx2z45iwzv9oX7E?=
 =?us-ascii?Q?iy6uEvRmhF9v8djqvlUGoVmjRyOaXD2EcmPMFDjPPEtAFOmzecrl9XkqCCyG?=
 =?us-ascii?Q?g2arcpX9dIjJpkJZ7GORIG+Lqan34pLMCLBIyZr+NCzSlj3zMp+ez4CBI5oV?=
 =?us-ascii?Q?TljthU0gMgHgXNw6vos4QSelFenJfbnfTKxedIbrtRFSE8p64owhDOtp1jb/?=
 =?us-ascii?Q?G8ZMT/4IKiJYP+/Q?=
X-Forefront-Antispam-Report-Untrusted:
 CIP:213.95.148.172;CTRY:DE;LANG:en;SCL:1;SRV:;IPV:CAL;SFV:NSPM;H:denue6es012.ebgroup.elektrobit.com;PTR:eth1-fw1-nbg6.eb.noris.de;CAT:NONE;SFS:(13230040)(704160111799003)(36860700016)(1800799024)(376014)(82310400026)(56012099003)(22082099003)(18002099003);DIR:OUT;SFP:1102;
X-Exchange-RoutingPolicyChecked:
 OzXw9y9zYJt0BF9Wte8aNPLKGxMClHZ99RbWkdkFyvFLVfA01gINsOeR0rHRZWvPm8fLoF6wAiZCWLIAs3wKrzmUDv2qkVjRarlkzPWwG9RgoZuQxLn92Iyyn91TbnWopdHKWD+s1pH4jy0v7ePU0hrJI4N2MQfN6MonV5JCQ5xzihEsFqc72vFyiW0qBP97atjCoKbSfzLh7xx0Bk8R8yiEX41T7TL2DnO0jtEoNXhhUeNwajhCh5wIEVoSN7JMlMiN/rIjYfZV3wRASY5APOHVpTI3wukGZ8dNuW9/Hdw/ghu8iE//cgc6MXe9ka6mzW8PJNmCTOgsQvE87III5Q==
X-MS-Exchange-Transport-CrossTenantHeadersStamped: SA6PR08MB9893
X-MS-Exchange-SkipListedInternetSender:
 ip=[40.93.4.4];domain=BL0PR07CU001.outbound.protection.outlook.com
X-MS-Exchange-ExternalOriginalInternetSender:
 ip=[40.93.4.4];domain=BL0PR07CU001.outbound.protection.outlook.com
X-MS-Exchange-Transport-CrossTenantHeadersStripped:
 SJ1PEPF000023CB.namprd02.prod.outlook.com
X-MS-PublicTrafficType: Email
X-MS-Office365-Filtering-Correlation-Id-Prvs:
	f3f46968-f9d9-4744-07a6-08de9f247998
X-Microsoft-Antispam:
	BCL:0;ARA:13230040|704160111799003|82310400026|14060799003|35042699022|156008|36860700016|376014|1800799024|56012099003|22082099003|18002099003;
X-Microsoft-Antispam-Message-Info:
	=?us-ascii?Q?I1nVlwQjpAM0RHXl1TCGVqGGSA8afTd8SQMHq72EyYO6M+ZA/BrkvFHr/spG?=
 =?us-ascii?Q?3UMlmpvGupOypHnVaj1eyH8WE73LrzdSbPpoSerNm/4kKQZslDOx5r6/G6sY?=
 =?us-ascii?Q?CW5rkY8zr/0u+qe6nqeN/cr7lKDWqpNVweyQ4bjq2MTOCp8p0uNLUbc1nW+M?=
 =?us-ascii?Q?WKVuyNiRTvsTcgo6RgwFs2VxAbRNaK2uWXAMhUM2sNie/NiI0KSN4yLU+p7u?=
 =?us-ascii?Q?hgezl7TLCLHDfSgzDRIFeVEtnyUWAH765FTm859gk3KpCcAt5+jL477PQLBn?=
 =?us-ascii?Q?bm/SN38i5q/UqBFp+dXnfheTyEW0CH3jwW36vNsT9kQczpBg4KEnL+D0Gnx9?=
 =?us-ascii?Q?2MsvUXsLgzpJWip8wjN+v85u5+DJONP/XSHG2Z68e+w2Ei38PrrxGIu4C4k5?=
 =?us-ascii?Q?8gAnudYZwgNrkQUu+gfsTYg4Ze6P8mmY0ANZ/LnwhVsBMZA+ro1JPF57uR/s?=
 =?us-ascii?Q?82Km+lSejn20cv7seMvXdRtj1HLYS9C08/V9FBm/k2dEHxWSE1lakrAQMF0/?=
 =?us-ascii?Q?MOhO0FLr3KRF853zFHgoT6EokPWAQ+fv0SUZeznrn2ozu9OOQKOeHcQ5cU1g?=
 =?us-ascii?Q?u+wWqmg1DN3GgJ1ujJbax9MvhdGMZ6ZQ4T92374txfEHXwhGc3vWMA5NJIUY?=
 =?us-ascii?Q?Lcv+BN8kLfamfzKjySyLn0Hn0K1R5qwRlKJ1GGmPXpnbpAujppD6muL81x72?=
 =?us-ascii?Q?CxZ5ooErIcleDSfAjs+nfZKfhKcvIQhCSRJ11eAmLWDlYjpfAaZSUepmJ/7d?=
 =?us-ascii?Q?f/CiK/7DB57kLavT3wDjrRgxzzXg56e46AOYn9/CYUb3+bH1UEdtrOX/VBSS?=
 =?us-ascii?Q?uEPlv/aTlQ0vXel/sPRhDd/NtBGMqL5Xwd4JnD6MO0ObA9tQK4I0uhP7iN8H?=
 =?us-ascii?Q?nurr2YpS2wGmYC3F1PvpytsUJ89bQ0Jc+7PQVTzgcdXSiIUUmxsWDujQ5Vy0?=
 =?us-ascii?Q?W8q3DtYBsWcSIWU6GoGmTZZ7ALV/F3iuw+g59Mr69VGg/V+tjBQZfWoNfU7Y?=
 =?us-ascii?Q?Zv4vkUJehFZpRb7KzO4jH8adwBH7NcYxTpkFlfkbEcWd9O8CGHOvcvtJl/oC?=
 =?us-ascii?Q?jlpupIvQyZ5nI8poKAND70AEN4LMAOCMupERmsclJG54N3h0rWPl0vJQdjzw?=
 =?us-ascii?Q?X7IrKeybayuHsRxRb2Mk+VL/QF44aSizedDXePT6F/NN27xDPeOUiEl63wkz?=
 =?us-ascii?Q?7soIEOaL/jzuTeYf?=
X-Forefront-Antispam-Report:
	CIP:4.79.107.243;CTRY:US;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:BL0PR07CU001.outbound.protection.outlook.com;PTR:mail-bl0pr07cu00104.outbound.protection.outlook.com;CAT:NONE;SFS:(13230040)(704160111799003)(82310400026)(14060799003)(35042699022)(156008)(36860700016)(376014)(1800799024)(56012099003)(22082099003)(18002099003);DIR:OUT;SFP:1102;
X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1
X-MS-Exchange-AntiSpam-MessageData-0:
	r90BpymZfY4KxP4VqWirW8NzUJQNL2BmkzWIAJLkoG6hmvUCa3e53qTuzUu8rbAi22FfYBo9uz6n65G72R1vEnG31ZsbBUcjC1nnxQdi0UAoVboCicBYLxbtFuvBqwEWyQUwnbxeyCiWnWK+qyOaPqA+iMB40zTDkjXSLpJiqe7LvKZ9EyI0Au4m9w/71R4Nqe/8KuICHdwj1Rokb6st78up6ky5yNp2i0RZ3X3sK7gLXbwcEIquQYKzwSBnYsTxp65ioSI3g2NDTQMUtZTteEZLkMp9QUu4i6AiUsJa2PJotcwXC3t/K/XbCreiUO4kighhaKfL7+EMMe5HeaDO1kDYYpLF1Sc0A9SluQ1t4a/oHYrDzvEuhl0LxEkmnre491b6rKtZPELl5TcYPfAAXAUq6a3FFGzrmTdlknxSO8A29BF0qRxmbesNm6PuAhcS
X-OriginatorOrg: elektrobit.com
X-MS-Exchange-CrossTenant-OriginalArrivalTime: 20 Apr 2026 21:33:40.5888
 (UTC)
X-MS-Exchange-CrossTenant-Network-Message-Id: 696c9fe1-ec7e-47f8-8082-08de9f247da6
X-MS-Exchange-CrossTenant-Id: e764c36b-012e-4216-910d-8fd16283182d
X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=e764c36b-012e-4216-910d-8fd16283182d;Ip=[4.79.107.243];Helo=[usbth1es003.ebgroup.elektrobit.com]
X-MS-Exchange-CrossTenant-AuthAs: Internal
X-MS-Exchange-CrossTenant-AuthSource: TreatMessagesAsInternal-SJ1PEPF000023CB.namprd02.prod.outlook.com
X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem
X-MS-Exchange-Transport-CrossTenantHeadersStamped: LV3PR08MB9642
X-purgate-ID: tlsNG-ebf023/1776720827-2997A3FF-29B9BF9D/0/0
X-purgate-type: clean
X-purgate-size: 3378

This commit moves the altp2m_flush function to common code. This makes it
possible to call in the common implementation of HVMOP_set_domain_state.

This commit contains only code movement, and no change in functionality is
intended.

This is commit 1/2 of the altp2m_flush phase.

Signed-off-by: Rose Spangler <Rose.Spangler@elektrobit.com>
---
v6: Introduced this patch.
---
 xen/arch/x86/include/asm/altp2m.h |  2 --
 xen/arch/x86/mm/altp2m.c          | 16 ----------------
 xen/common/altp2m.c               | 18 ++++++++++++++++++
 xen/include/xen/altp2m.h          |  5 +++++
 4 files changed, 23 insertions(+), 18 deletions(-)

diff --git a/xen/arch/x86/include/asm/altp2m.h b/xen/arch/x86/include/asm/altp2m.h
index 02b5e1a11220..d11f20f1e790 100644
--- a/xen/arch/x86/include/asm/altp2m.h
+++ b/xen/arch/x86/include/asm/altp2m.h
@@ -82,8 +82,6 @@ static inline bool altp2m_view_is_visible(struct domain *d, unsigned int idx)
 /* Switch alternate p2m for a single vcpu */
 bool altp2m_switch_vcpu_by_id(struct vcpu *v, unsigned int idx);
 
-/* Flush all the alternate p2m's for a domain */
-void altp2m_flush(struct domain *d);
 
 /* Find an available alternate p2m and make it valid */
 int altp2m_init_next_available(struct domain *d, uint16_t *idx,
diff --git a/xen/arch/x86/mm/altp2m.c b/xen/arch/x86/mm/altp2m.c
index 18f8a71f1682..de91d1e67709 100644
--- a/xen/arch/x86/mm/altp2m.c
+++ b/xen/arch/x86/mm/altp2m.c
@@ -253,22 +253,6 @@ void altp2m_reset_altp2m(struct domain *d, unsigned int idx,
     p2m_unlock(p2m);
 }
 
-void altp2m_flush(struct domain *d)
-{
-    unsigned int i;
-
-    altp2m_lock(d);
-
-    for ( i = 0; i < d->nr_altp2m; i++ )
-    {
-        altp2m_reset_altp2m(d, i, ALTP2M_DEACTIVATE);
-        d->arch.altp2m_eptp[i] = mfn_x(INVALID_MFN);
-        d->arch.altp2m_visible_eptp[i] = mfn_x(INVALID_MFN);
-    }
-
-    altp2m_unlock(d);
-}
-
 int altp2m_activate_altp2m(struct domain *d, unsigned int idx,
                            p2m_access_t hvmmem_default_access)
 {
diff --git a/xen/common/altp2m.c b/xen/common/altp2m.c
index 929449b1b03c..0dd3ecf226fd 100644
--- a/xen/common/altp2m.c
+++ b/xen/common/altp2m.c
@@ -123,6 +123,24 @@ int altp2m_init_by_id(struct domain *d, unsigned int idx)
     return rc;
 }
 
+#ifdef CONFIG_X86
+void altp2m_flush(struct domain *d)
+{
+    unsigned int i;
+
+    altp2m_lock(d);
+
+    for ( i = 0; i < d->nr_altp2m; i++ )
+    {
+        altp2m_reset_altp2m(d, i, ALTP2M_DEACTIVATE);
+        d->arch.altp2m_eptp[i] = mfn_x(INVALID_MFN);
+        d->arch.altp2m_visible_eptp[i] = mfn_x(INVALID_MFN);
+    }
+
+    altp2m_unlock(d);
+}
+#endif
+
 /*
  * altp2m operations are envisioned as being used in several different
  * modes:
diff --git a/xen/include/xen/altp2m.h b/xen/include/xen/altp2m.h
index 8fc16346d95b..fa2c11f5432e 100644
--- a/xen/include/xen/altp2m.h
+++ b/xen/include/xen/altp2m.h
@@ -74,6 +74,11 @@ int do_altp2m_op(XEN_GUEST_HANDLE_PARAM(void) arg);
 /* Make a specific alternate p2m valid */
 int altp2m_init_by_id(struct domain *d, unsigned int idx);
 
+#ifdef CONFIG_X86
+/* Flush all the alternate p2m's for a domain */
+void altp2m_flush(struct domain *d);
+#endif
+
 #else /* CONFIG_ALTP2M */
 
 static inline bool altp2m_active(const struct domain *d)
-- 
2.34.1



From xen-devel-bounces@lists.xenproject.org Mon Apr 20 21:34:05 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 20 Apr 2026 21:34:05 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1287936.1568401 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wEwFp-0003Jp-0B; Mon, 20 Apr 2026 21:34:05 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1287936.1568401; Mon, 20 Apr 2026 21:34: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 1wEwFn-0003Ds-EK; Mon, 20 Apr 2026 21:34:03 +0000
Received: by outflank-mailman (input) for mailman id 1287936;
 Mon, 20 Apr 2026 21:33:50 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <Rose.Spangler@elektrobit.com>) id 1wEwFZ-0000TK-5r
 for xen-devel@lists.xenproject.org; Mon, 20 Apr 2026 21:33:49 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wEwFY-00EgH4-I0
 for xen-devel@lists.xenproject.org; Mon, 20 Apr 2026 23:33:48 +0200
Received: from [10.42.69.5] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <Rose.Spangler@elektrobit.com>)
 id 69e69bbc-e002-0a2a0a5209dd-0a2a4505d328-0
 for <xen-devel@lists.xenproject.org>; Mon, 20 Apr 2026 23:33:48 +0200
Received: from [52.101.57.124]
 (helo=BN8PR05CU002.outbound.protection.outlook.com)
 by tlsNG-c201ff.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.1)
 (envelope-from <Rose.Spangler@elektrobit.com>)
 id 69e69bbb-aaa8-0a2a45050019-3465397ccbbb-3
 for <xen-devel@lists.xenproject.org>; Mon, 20 Apr 2026 23:33:48 +0200
Received: from SN1PR12CA0063.namprd12.prod.outlook.com (2603:10b6:802:20::34)
 by DM3PR08MB9165.namprd08.prod.outlook.com (2603:10b6:0:41::7) with
 Microsoft
 SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id
 15.20.9818.33; Mon, 20 Apr 2026 21:33:34 +0000
Received: from SN1PEPF00036F3F.namprd05.prod.outlook.com
 (2603:10b6:802:20:cafe::a1) by SN1PR12CA0063.outlook.office365.com
 (2603:10b6:802:20::34) with Microsoft SMTP Server (version=TLS1_3,
 cipher=TLS_AES_256_GCM_SHA384) id 15.20.9791.48 via Frontend Transport; Mon,
 20 Apr 2026 21:33:34 +0000
Received: from usbth1es003.ebgroup.elektrobit.com (4.79.107.243) by
 SN1PEPF00036F3F.mail.protection.outlook.com (10.167.248.23) with Microsoft
 SMTP Server (version=TLS1_3, cipher=TLS_AES_256_GCM_SHA384) id 15.20.9791.48
 via Frontend Transport; Mon, 20 Apr 2026 21:33:33 +0000
Received: from usbth1es003 (localhost [127.0.0.1])
 by usbth1es003.ebgroup.elektrobit.com (Postfix) with SMTP id 4fzzHx0YxHz1wdS; 
 Mon, 20 Apr 2026 14:33:33 -0700 (PDT)
Received: from BL2PR08CU001.outbound.protection.outlook.com
 (mail-bl2pr08cu00106.outbound.protection.outlook.com [40.93.4.14])
 (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)
 key-exchange secp384r1 server-signature RSA-PSS (2048 bits) server-digest
 SHA256) (No client certificate requested)
 by usbth1es003.ebgroup.elektrobit.com (Postfix) with ESMTPS;
 Mon, 20 Apr 2026 14:33:32 -0700 (PDT)
Received: from BY1P220CA0024.NAMP220.PROD.OUTLOOK.COM (2603:10b6:a03:5c3::9)
 by PH0PR08MB9934.namprd08.prod.outlook.com (2603:10b6:510:332::15) with
 Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9818.32; Mon, 20 Apr
 2026 21:33:27 +0000
Received: from SJ1PEPF000026C9.namprd04.prod.outlook.com
 (2603:10b6:a03:5c3:cafe::db) 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.20.9791.48 via Frontend Transport; Mon,
 20 Apr 2026 21:33:25 +0000
Received: from denue6es012.ebgroup.elektrobit.com (213.95.148.172) by
 SJ1PEPF000026C9.mail.protection.outlook.com (10.167.244.106) with Microsoft
 SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id
 15.20.9791.48 via Frontend Transport; Mon, 20 Apr 2026 21:33:24 +0000
Received: from ubuntu.localdomain (10.10.178.50) by
 denue6es012.ebgroup.elektrobit.com (10.243.160.140) with Microsoft SMTP
 Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id
 15.2.2562.35; Mon, 20 Apr 2026 23:33:21 +0200
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@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=elektrobit.com header.i="@elektrobit.com" header.h="From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck"; dkim=pass header.s=selector1 header.d=elektrobit.com header.i="@elektrobit.com" header.h="From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck"
ARC-Seal: i=2; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=pass;
 b=lLcQhj/cooPYNVDOhU8AHbM2Jk2L6WGxDQ0qBn1NSyJQsabo4Eg4BdAIvhpneo6lLVYEGYjOlstvewbv+lsAgxsn9pVI9FHkJMKuZXN6Yz6eQpeBMsONKZxSklcmpBqo8WKlKX5/78LUKJHDUquXGHkHJfVRmU6gwlPIVSBmbvCyJQ/lcV6l2HQPqcZrbr36c8KW4nbQxlyiRcGqIm4G1jHDVWbYla99Az3XHSKkh1BUoru2aElskEBTDHCP6eKr5+bfpL60ByWJe5dwBdOPSEllf1ohXsxDZpX8SwZAttVABcyOoc2oW4qWTuTgU9WTZYbSZQE1aMeE4ogHrcL8MA==
ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com;
 s=arcselector10001;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1;
 bh=QEvCOJ/znG1Y9sl6sTHGiqT4+0IS7dn5KAJvNg29AXA=;
 b=MxWUlEfcrpVoYzqNVVPHCZzZO75ITKUQlao7Ek6Uacs0FKGk4GfBqcBRCmXVkbW0Hp5pCbCkswRj9m4V1eLfglg0bGoetCCm3+MVHTYI0AwWkps5nNijowwL+uL9Z0hln1ip1SAQu+cfbKoABKLShY8eUKZSwGRQ9av7kwkOXGr9ELeulGUVW85N0H1WOUJzNDULENoTcWuO+mnX4ToTHMZsF4u6Kpqv3cuWEJi5U//ET/HUrNNtCqMx/EB3ESzLLeigXvNGgCTBjDCyt3LJZBF5iAmu3gLH1l3FBRpX9YEwqCf72VQG0WU9Of1Mvfyn1DMaO3B4XDgeMIWsMNcsMA==
ARC-Authentication-Results: i=2; mx.microsoft.com 1; spf=pass (sender ip is
 40.93.4.14) smtp.rcpttodomain=citrix.com smtp.mailfrom=elektrobit.com;
 dmarc=pass (p=quarantine sp=none pct=100) action=none
 header.from=elektrobit.com; dkim=pass (signature was verified)
 header.d=elektrobit.com; arc=pass (0 oda=1 ltdi=1
 spf=[1,1,smtp.mailfrom=elektrobit.com]
 dmarc=[1,1,header.from=elektrobit.com])
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=elektrobit.com;
 s=selector1;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck;
 bh=QEvCOJ/znG1Y9sl6sTHGiqT4+0IS7dn5KAJvNg29AXA=;
 b=1pDXNGpv/cLnvLpEprLKBTUImwPkTecH6SIBAjXNbohm+qvYeOvPGI9jkDhgqJBPD76vt8rLvdW45C4hc16JbTc93jrn44VmTF2M/XUmYeQZcSALUChFcrQ4vneGwVQ/t9CzVGHsVo1fKUoyntwtETHdWDQc/GyJvF60wuLvnqw=
X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 40.93.4.14)
 smtp.mailfrom=elektrobit.com; dkim=pass (signature was verified)
 header.d=elektrobit.com;dmarc=pass action=none header.from=elektrobit.com;
Received-SPF: Pass (protection.outlook.com: domain of elektrobit.com
 designates 40.93.4.14 as permitted sender) receiver=protection.outlook.com;
 client-ip=40.93.4.14; helo=BL2PR08CU001.outbound.protection.outlook.com; pr=C
ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none;
 b=v2mqqgVdbMoQfn8/kR8qFsSIBGW5aXDzoO2yWM5hVgDzKRp8/EIqZydLsnV4bFxWQK/iomL7tFtLUwzm50/0H3RM3y82kLKr3egpoRr/s4B1nsJXoR1DVyoldJDlMqJ19jYYLxIAkIjY2nalZXl/Y4+BloqaS639T4wwyL/XltCLQwHL1eOAWFQ9MQISN9Js8ONKy2NB5JEH/zf2mgNixtoSQPs0VvX9QfIGhoOhsdi2V+/Ufz5nlU3mLObcqo7M6wjNo0Ba3Wz7pTyBd+FYMKqwChtNjljgbNJHPEduoO6HDjsRCBDl9rq6jx8WvPfVXngdMfwYVCjVeC/Q1GgMNw==
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com;
 s=arcselector10001;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1;
 bh=QEvCOJ/znG1Y9sl6sTHGiqT4+0IS7dn5KAJvNg29AXA=;
 b=W2chBkhQGzqDK7ZOi5GANLLfXMFIge4Xcd8GjcRSjlx0KCsxbTCSqezt7Ek/2+sUFMQDGkpTqWQkx+J066tiOwwv5xI9ajHwl9RbrvYh35q6rEglq3RyPst59Ky20hI9kWzsOxqwHB0BOXQlrNiyeMKRnB8cusMFRYFlreGk3J3hb2KRpToLgLanjGtRfgQF64SO4FrTomqfVHxwFikj/F6XtznF38b6JUk+Oe8ckYc74FBkOv4SU+7elGI0A2DI+w/tQ6gfz5Oh8sFCsWCQnc0eJgUjO/0ZqU21kc5ZUml+Y9dUh0BRM8JgljF+K+Xz6RyAwxDvM4itTSUPEqTiPw==
ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass (sender ip is
 213.95.148.172) smtp.rcpttodomain=lists.xenproject.org
 smtp.mailfrom=elektrobit.com; dmarc=pass (p=quarantine sp=none pct=100)
 action=none header.from=elektrobit.com; dkim=none (message not signed);
 arc=none (0)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=elektrobit.com;
 s=selector1;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck;
 bh=QEvCOJ/znG1Y9sl6sTHGiqT4+0IS7dn5KAJvNg29AXA=;
 b=1pDXNGpv/cLnvLpEprLKBTUImwPkTecH6SIBAjXNbohm+qvYeOvPGI9jkDhgqJBPD76vt8rLvdW45C4hc16JbTc93jrn44VmTF2M/XUmYeQZcSALUChFcrQ4vneGwVQ/t9CzVGHsVo1fKUoyntwtETHdWDQc/GyJvF60wuLvnqw=
X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 213.95.148.172)
 smtp.mailfrom=elektrobit.com; dkim=none (message not signed)
 header.d=none;dmarc=pass action=none header.from=elektrobit.com;
Received-SPF: Pass (protection.outlook.com: domain of elektrobit.com
 designates 213.95.148.172 as permitted sender)
 receiver=protection.outlook.com; client-ip=213.95.148.172;
 helo=denue6es012.ebgroup.elektrobit.com; pr=C
From: Rose Spangler <Rose.Spangler@elektrobit.com>
To: <xen-devel@lists.xenproject.org>
CC: Rose Spangler <Rose.Spangler@elektrobit.com>, Jan Beulich
	<jbeulich@suse.com>, Andrew Cooper <andrew.cooper3@citrix.com>,
	=?UTF-8?q?Roger=20Pau=20Monn=C3=A9?= <roger.pau@citrix.com>, Teddy Astie
	<teddy.astie@vates.tech>
Subject: [RFC PATCH v6 35/43] x86/altp2m: Add altp2m_activate_altp2m declaration to arch header
Date: Mon, 20 Apr 2026 17:31:58 -0400
Message-ID: <20260420213206.208750-36-Rose.Spangler@elektrobit.com>
X-Mailer: git-send-email 2.34.1
In-Reply-To: <20260420213206.208750-1-Rose.Spangler@elektrobit.com>
References: <20260420213206.208750-1-Rose.Spangler@elektrobit.com>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit
Content-Type: text/plain
X-Originating-IP: [10.10.178.50]
X-ClientProxiedBy: denue6es012.ebgroup.elektrobit.com (10.243.160.140) To
 denue6es012.ebgroup.elektrobit.com (10.243.160.140)
X-EOPAttributedMessage: 1
X-MS-Exchange-SkipListedInternetSender:
 ip=[213.95.148.172];domain=denue6es012.ebgroup.elektrobit.com
X-MS-TrafficTypeDiagnostic:
	SJ1PEPF000026C9:EE_|PH0PR08MB9934:EE_|SN1PEPF00036F3F:EE_|DM3PR08MB9165:EE_
X-MS-Office365-Filtering-Correlation-Id: 4b1455e2-4cab-46e0-c048-08de9f2479a7
X-SM-outgoing: yes
X-MS-Exchange-SenderADCheck: 1
X-MS-Exchange-AntiSpam-Relay: 0
X-Microsoft-Antispam-Untrusted:
 BCL:0;ARA:13230040|36860700016|1800799024|376014|82310400026|56012099003|22082099003|18002099003;
X-Microsoft-Antispam-Message-Info-Original:
 =?us-ascii?Q?ixywoTqmF2w1GpfdIf6Pke67X1MHmtUXUqtymdOZe/tK419s8vOFVfV/WkSs?=
 =?us-ascii?Q?Ar2nMZuGKm4Wd0nf+KCPxrdRj0UCHWuoYUQptbFfGcpmWyTOy9gUpv3p6cYg?=
 =?us-ascii?Q?VH4yE5mC29L1omvG7+2pUM7xi5X9g8WRm4bMqUkSXUfKQZR4ne3kvvk80Htn?=
 =?us-ascii?Q?eedt5JTzYY9B1eIFiSy2rKQxpOOwK/4gFnBM6CGp/Q+yOfrPkxyeaY9xHlD6?=
 =?us-ascii?Q?/6bFw7u2fN1Y6flQI3Z+Owj/3sjZ36GtrmWWBqEH7St6sSqjV8ktwx1z8iQR?=
 =?us-ascii?Q?iJuStEipNOTB3C9i2EDrzgLvYXg9umaly8kAuXfINa9pik7lpG6uHf+85wgl?=
 =?us-ascii?Q?RESvIT+ovzU6x7EXovwOz+FVS3AAhK/XXCeKBD+o5xmdNScvtmaZ75r6JD3q?=
 =?us-ascii?Q?kXBVBZVNeJtMdCyWIEpB7+jQXnSE5+E36/wFQhnUBS/VSp38tUnMRoh3LjMI?=
 =?us-ascii?Q?Js37rAxeHioV1YQIjaJkfqYVkDdQTp2QGc9LPgAhTcn2CRERKNKgS2QKGPIZ?=
 =?us-ascii?Q?jxHrOBMB4cabcpzRtGgJaVQbVrPWJGpx2+Psp0sf/fa1u8aJWh2tY65VvPCt?=
 =?us-ascii?Q?mZTPVp5q75UDC4REo1tCbGbSqsasDA0R9r2NZLK2T61/eNfrgCYRWSRNKlKL?=
 =?us-ascii?Q?bDSL9cWNuw/xeGlQaoHXwv1DZRvnkOyD03+AiX+ObrxXAFpAstXyswNFSdTC?=
 =?us-ascii?Q?p7goDCmbjG8JmWNr5MRWj7xAw5Evst7F+mTnu3UKyIV4JaGiR0BwRD7YS/V0?=
 =?us-ascii?Q?+R/eJbMrCCbSTKbolXJAq2O3vSvk4FQN8TUqBNsE6VUL6fSxzpAzHZf4Q2/t?=
 =?us-ascii?Q?/U2ZroJyQbvUBZPLKLi11S9YN3Rjk3UI1T3xR7Hej0ww/prte2TYHs7sdpno?=
 =?us-ascii?Q?xr11/elvDCci2qDxIhLv71w6qV+MxcGf7ZqICZH67G22tOp3rhD1m+Rwle80?=
 =?us-ascii?Q?agwUcV8nYHF+s7azRFgaLpPYLJdYOLxvXIUKT47VXKtMUIQXoc1XGRvUXE4M?=
 =?us-ascii?Q?WiU1Ivnb+sq4fBcSPGqwaR+uI04EMfQA/ibrLAb78Ixva/sglCo04x+/xRr5?=
 =?us-ascii?Q?YDiXbQFF17lt7Q3Ea6n2kGstoexgpO9/ho4RA2QYsi7/ZqVhgbMmPb4EcqzP?=
 =?us-ascii?Q?z0cT56zE5wTcY95LdQBsbo1nMCEzRStESoQMD0Vjx9+0rIro767pDO4te432?=
 =?us-ascii?Q?qdD/HqfUOfUvSNb1?=
X-Forefront-Antispam-Report-Untrusted:
 CIP:213.95.148.172;CTRY:DE;LANG:en;SCL:1;SRV:;IPV:CAL;SFV:NSPM;H:denue6es012.ebgroup.elektrobit.com;PTR:eth1-fw1-nbg6.eb.noris.de;CAT:NONE;SFS:(13230040)(36860700016)(1800799024)(376014)(82310400026)(56012099003)(22082099003)(18002099003);DIR:OUT;SFP:1102;
X-Exchange-RoutingPolicyChecked:
 erop+8h4Mj2dJ86U8tcxPi2xXRBQ73x6LGDVUjCQ+/0eogPuHai7yIPl5ZU+4WXCbou/Uh5XDWKJbFFlLm7Y8LnrmKFVRDL+zpPa1YITBXB9QmioU6iCTSS0TNr1Wx/TYpmVRZU2NsakiVAaLuLpAxH0hVeVJkN+ZIYNs+lL8Puv3u9REVc8+d4dhAIjxL2wpOs089bSNtd8K+vKnDunhrVldLWJeAYNXlbJ03m8jct0R7GlYjc1JhjcF+BT+DnE+payvqpVQ9zJZfBOL/jzPWCeKwZ0ZemaaMRDL3aySl8D1Cf++9ZLPtoaWdaUI2xdhcndUVUimbnH/cWWvnZ3QA==
X-MS-Exchange-Transport-CrossTenantHeadersStamped: PH0PR08MB9934
X-MS-Exchange-SkipListedInternetSender:
 ip=[40.93.4.14];domain=BL2PR08CU001.outbound.protection.outlook.com
X-MS-Exchange-ExternalOriginalInternetSender:
 ip=[40.93.4.14];domain=BL2PR08CU001.outbound.protection.outlook.com
X-MS-Exchange-Transport-CrossTenantHeadersStripped:
 SN1PEPF00036F3F.namprd05.prod.outlook.com
X-MS-PublicTrafficType: Email
X-MS-Office365-Filtering-Correlation-Id-Prvs:
	53552d84-0380-4fdd-dd9d-08de9f247438
X-Microsoft-Antispam:
	BCL:0;ARA:13230040|82310400026|14060799003|35042699022|156008|36860700016|376014|1800799024|56012099003|22082099003|18002099003;
X-Microsoft-Antispam-Message-Info:
	=?us-ascii?Q?1qjuzLqXqW3+SIOAKJTUV8LXM24ULx8z/aEqWvFlGm6gDl/lm3cK95ANwYy7?=
 =?us-ascii?Q?gLB/LcXHrJ0abc7YjoBxRLOF60QwhaxnDBm9Sbyt2whWZC0/6zMraJZYZD6D?=
 =?us-ascii?Q?qvSGxX6G7XfaAyel64RZPw9QOkMyrIwr4P1o9GlnwXPPFZZGAbtM3kGUyIZu?=
 =?us-ascii?Q?m64IoI/il2vBZtlFjTQH57Ge9o+zaoL8O70bNwSFfnPIXG9SIttPTKRI7RhK?=
 =?us-ascii?Q?F5nX8gjQXQyhwlifKcHOLwgiM5whcOkKdH2pu/KuE0lg860G03PxEOxhc+4g?=
 =?us-ascii?Q?Uo+eiWu/Udxfel3RCnd830Jmx2EUgV0Op5ybkWe/Db29MB1WspcERdXk8f1L?=
 =?us-ascii?Q?iwJhRTxsbvtZQ+FxahBgXzccHS37I3KkfF0UJVpU3GZuxHxy6OkbYt1qpgMQ?=
 =?us-ascii?Q?5k3+8OCn16deY1hUTFX5yssuw3n7DuULhSluya6mEjdxZoIupRvFWGOr79qz?=
 =?us-ascii?Q?Zmbat2RRnynXb4TrRyLSHY36WIeVWF3QXXNKU5SDEDyo/z4t82Q9gF0BYQXS?=
 =?us-ascii?Q?vWj4tqi9xN5vFqE6cpKcUiSOP+YhfBoSFR12YifQWqyd1Q1mLL93/xGCzJKy?=
 =?us-ascii?Q?CcTyYLsFddWOQU72y1t4lTgzamWStiURdaWjJjzXEEN9ceALcmDp4OPd2ngN?=
 =?us-ascii?Q?NVD37qCnj/j0Dlhpb3p6CS7yiBuXDAKPCRFPla6udO9MeH1UP5f8YFpsbmex?=
 =?us-ascii?Q?ntIpDdRj80hMRBAaTuEHtSoFfMWbjiC6/iyWZVK6CA0wff9DXWDmhqUJCS/u?=
 =?us-ascii?Q?gytjSwiJ8ePPTkB+8L6hILj9/euStag6+vA0tudVDqJ9wrXTkFbkV4z2XmmQ?=
 =?us-ascii?Q?+Z/5p5HC5y+2SsLB2/lJVshHUokn2+Vvjka08tfGAvXgVgAXsRZkrDFCFbcN?=
 =?us-ascii?Q?lxkTztsNuEghewqP9/DafqLMFA/d/fGON7XuNB39XMeuZcTCOOPogq8j0O5J?=
 =?us-ascii?Q?GKoUz5rcQY/NCgguBn/U+tcfYjG6+mRNXau1/bH0wfEmhaKVHJ7AsmNMYzLL?=
 =?us-ascii?Q?snPWY8I0L/Z4XHeuhiYjO0xb8zwQ4eFv9XdFK87dSvNbLQ6DWNqbjQbkcGBq?=
 =?us-ascii?Q?u/FgMSRPJ1tB5BrdpgXXWGQEZ2390YFRepxyAiWMfuOA1fzq21whZa1zo3L1?=
 =?us-ascii?Q?LAo1kDmIcIMAwFdWqoZIAsTtVpR6ebFrk/x3LkzA2CHcUM3jRuFVnp/W/SHF?=
 =?us-ascii?Q?cfvQfM0PEvDSNoRG?=
X-Forefront-Antispam-Report:
	CIP:4.79.107.243;CTRY:US;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:BL2PR08CU001.outbound.protection.outlook.com;PTR:mail-bl2pr08cu00106.outbound.protection.outlook.com;CAT:NONE;SFS:(13230040)(82310400026)(14060799003)(35042699022)(156008)(36860700016)(376014)(1800799024)(56012099003)(22082099003)(18002099003);DIR:OUT;SFP:1102;
X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1
X-MS-Exchange-AntiSpam-MessageData-0:
	cUHXrfb6FJbdtPo6vV2U709O36d4sO0Nb8rilLZPPISwhjgHhVvtCA1DHBa8UoiHF+wugP/a8kSwLD7n4pkCrkVrE40m2sq0KzpIfp/WQsXaoIVfPIt0G7iK6E04z1xZL1c5zPPSq8HvomPCM+DvZ2p3hRqodAulItRm65FfML6gEPZDE/7JP5zt8LjA2yswXtW7MFvyoZfWL2kB503tSQ8/AH465QaLf8cfcWeNSL/2d9xY+u2k/80V9sEpY0KNYp6QTCHebaBdwTCCCr67GHdK13N3e0Bj1o9A4ypWibSkY1uawcxgdKIQiiOEQ8qSrzyXat9GpT0qEtyl3aCtXJt8eSinYaxJmN4VKUd29MhYIbkCUP+vEPaTNHbsqwBqNQKoIEbJa0LFfTUckq35V33DOxcDcEESN5s812mn3lLA00L/9uJbb4Yuwl5pd45D
X-OriginatorOrg: elektrobit.com
X-MS-Exchange-CrossTenant-OriginalArrivalTime: 20 Apr 2026 21:33:33.8382
 (UTC)
X-MS-Exchange-CrossTenant-Network-Message-Id: 4b1455e2-4cab-46e0-c048-08de9f2479a7
X-MS-Exchange-CrossTenant-Id: e764c36b-012e-4216-910d-8fd16283182d
X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=e764c36b-012e-4216-910d-8fd16283182d;Ip=[4.79.107.243];Helo=[usbth1es003.ebgroup.elektrobit.com]
X-MS-Exchange-CrossTenant-AuthAs: Internal
X-MS-Exchange-CrossTenant-AuthSource: TreatMessagesAsInternal-SN1PEPF00036F3F.namprd05.prod.outlook.com
X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem
X-MS-Exchange-Transport-CrossTenantHeadersStamped: DM3PR08MB9165
X-purgate-ID: tlsNG-c201ff/1776720828-2A969443-796E502A/0/0
X-purgate-type: clean
X-purgate-size: 1798

This commit adds a declaration for altp2m_activate_altp2m to the x86
asm/altp2m.h header. This makes it possible to call the function in common
altp2m routines (namely, altp2m_init_by_id).

This is commit 1/2 of the altp2m_activate_altp2m phase.

Signed-off-by: Rose Spangler <Rose.Spangler@elektrobit.com>
---
v6: Introduced this patch.
---
 xen/arch/x86/include/asm/altp2m.h | 4 ++++
 xen/arch/x86/mm/altp2m.c          | 4 ++--
 2 files changed, 6 insertions(+), 2 deletions(-)

diff --git a/xen/arch/x86/include/asm/altp2m.h b/xen/arch/x86/include/asm/altp2m.h
index 99c4cfa5a68b..203dba44e2bf 100644
--- a/xen/arch/x86/include/asm/altp2m.h
+++ b/xen/arch/x86/include/asm/altp2m.h
@@ -95,6 +95,10 @@ int altp2m_init_next_available(struct domain *d, uint16_t *idx,
 /* Make a specific alternate p2m invalid */
 int altp2m_destroy_by_id(struct domain *d, unsigned int idx);
 
+/* Activate an altp2m view */
+int altp2m_activate_altp2m(struct domain *d, unsigned int idx,
+                           p2m_access_t hvmmem_default_access);
+
 /* Switch alternate p2m for entire domain */
 int altp2m_switch_domain_altp2m_by_id(struct domain *d, unsigned int idx);
 
diff --git a/xen/arch/x86/mm/altp2m.c b/xen/arch/x86/mm/altp2m.c
index 8672b8c061d3..40c6ea72a621 100644
--- a/xen/arch/x86/mm/altp2m.c
+++ b/xen/arch/x86/mm/altp2m.c
@@ -274,8 +274,8 @@ void altp2m_flush(struct domain *d)
     altp2m_unlock(d);
 }
 
-static int altp2m_activate_altp2m(struct domain *d, unsigned int idx,
-                                  p2m_access_t hvmmem_default_access)
+int altp2m_activate_altp2m(struct domain *d, unsigned int idx,
+                           p2m_access_t hvmmem_default_access)
 {
     struct p2m_domain *hostp2m, *p2m;
     int rc;
-- 
2.34.1



From xen-devel-bounces@lists.xenproject.org Mon Apr 20 21:34:06 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 20 Apr 2026 21:34:06 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1287941.1568406 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wEwFq-0003ao-7n; Mon, 20 Apr 2026 21:34:06 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1287941.1568406; Mon, 20 Apr 2026 21:34: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 1wEwFo-0003UW-PZ; Mon, 20 Apr 2026 21:34:04 +0000
Received: by outflank-mailman (input) for mailman id 1287941;
 Mon, 20 Apr 2026 21:33:51 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <Rose.Spangler@elektrobit.com>) id 1wEwFa-0000d5-4h
 for xen-devel@lists.xenproject.org; Mon, 20 Apr 2026 21:33:50 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wEwFZ-00CCTa-Gg
 for xen-devel@lists.xenproject.org; Mon, 20 Apr 2026 23:33:49 +0200
Received: from [10.42.69.10] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <Rose.Spangler@elektrobit.com>)
 id 69e69b69-bab6-0a2a0a5309dd-0a2a450a8c08-48
 for <xen-devel@lists.xenproject.org>; Mon, 20 Apr 2026 23:33:49 +0200
Received: from [52.101.62.128]
 (helo=DM5PR21CU001.outbound.protection.outlook.com)
 by tlsNG-4011c0.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.1)
 (envelope-from <Rose.Spangler@elektrobit.com>)
 id 69e69bbb-56b3-0a2a450a0019-34653e801d3b-3
 for <xen-devel@lists.xenproject.org>; Mon, 20 Apr 2026 23:33:49 +0200
Received: from BYAPR08CA0013.namprd08.prod.outlook.com (2603:10b6:a03:100::26)
 by SA3PR08MB8873.namprd08.prod.outlook.com (2603:10b6:806:382::22)
 with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9818.32; Mon, 20 Apr
 2026 21:33:41 +0000
Received: from SJ1PEPF000023D0.namprd02.prod.outlook.com
 (2603:10b6:a03:100:cafe::14) by BYAPR08CA0013.outlook.office365.com
 (2603:10b6:a03:100::26) with Microsoft SMTP Server (version=TLS1_3,
 cipher=TLS_AES_256_GCM_SHA384) id 15.20.9791.48 via Frontend Transport; Mon,
 20 Apr 2026 21:33:40 +0000
Received: from usbth1es003.ebgroup.elektrobit.com (4.79.107.243) by
 SJ1PEPF000023D0.mail.protection.outlook.com (10.167.244.4) with Microsoft
 SMTP Server (version=TLS1_3, cipher=TLS_AES_256_GCM_SHA384) id 15.20.9791.48
 via Frontend Transport; Mon, 20 Apr 2026 21:33:40 +0000
Received: from usbth1es003 (localhost [127.0.0.1])
 by usbth1es003.ebgroup.elektrobit.com (Postfix) with SMTP id 4fzzJ34rdhz1wdN; 
 Mon, 20 Apr 2026 14:33:39 -0700 (PDT)
Received: from CY3PR08CU001.outbound.protection.outlook.com
 (mail-cy3pr08cu00103.outbound.protection.outlook.com [40.93.6.107])
 (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)
 key-exchange secp384r1 server-signature RSA-PSS (2048 bits) server-digest
 SHA256) (No client certificate requested)
 by usbth1es003.ebgroup.elektrobit.com (Postfix) with ESMTPS;
 Mon, 20 Apr 2026 14:33:39 -0700 (PDT)
Received: from BY1P220CA0026.NAMP220.PROD.OUTLOOK.COM (2603:10b6:a03:5c3::17)
 by LV9PR08MB10801.namprd08.prod.outlook.com (2603:10b6:408:2ed::20)
 with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9818.25; Mon, 20 Apr
 2026 21:33:33 +0000
Received: from SJ1PEPF000026C9.namprd04.prod.outlook.com
 (2603:10b6:a03:5c3:cafe::f3) by BY1P220CA0026.outlook.office365.com
 (2603:10b6:a03:5c3::17) with Microsoft SMTP Server (version=TLS1_3,
 cipher=TLS_AES_256_GCM_SHA384) id 15.20.9791.48 via Frontend Transport; Mon,
 20 Apr 2026 21:33:33 +0000
Received: from denue6es012.ebgroup.elektrobit.com (213.95.148.172) by
 SJ1PEPF000026C9.mail.protection.outlook.com (10.167.244.106) with Microsoft
 SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id
 15.20.9791.48 via Frontend Transport; Mon, 20 Apr 2026 21:33:32 +0000
Received: from ubuntu.localdomain (10.10.178.50) by
 denue6es012.ebgroup.elektrobit.com (10.243.160.140) with Microsoft SMTP
 Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id
 15.2.2562.35; Mon, 20 Apr 2026 23:33:29 +0200
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@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=elektrobit.com header.i="@elektrobit.com" header.h="From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck"; dkim=pass header.s=selector1 header.d=elektrobit.com header.i="@elektrobit.com" header.h="From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck"
ARC-Seal: i=2; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=pass;
 b=CLpCBLD1qECGrCupVE1yKbteMT4bUT66alW5ozmUBIcWoZCikY9MUOn2yN0PkZ+92pGrKlLVVQFGkrkz/O60i4/k/ogG8mz3YhDYQBSeKGqK3hToMz1ls8P68vADnkbXIftl02oQBEoDRT79KC0NHBVYJAUwy9R/TDyIxqxmqVEb77Abh/njqUeU31GMw2chpKrhd7rj36TVCNSVHO8rEIZxZthwSymZC+Z0DqzouTDsyKTlaH11UHkKfF32FnwVvqGcI1vgho9/OfotOgLwsMycxS8qpMn6nHY9qPGFvdJaR4XjQFtbm7BkKOp4lKf1TyXO93MsWUW0CNGJMnZVGA==
ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com;
 s=arcselector10001;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1;
 bh=ASN5ZYxdsnJbb4wpR/egaU8I/r7OxT8I6SsLPMu6BO4=;
 b=BJouAqVicquqoWCYiMYD3zIxec8/3zkqhKoLe+H71Ym2JoecnfUWO+oP2Hkcm1bVYtSIlQHrvrsrnFBd0OE4Xas6a3PvOGl5vOU7ilWg0V90F2vk0sQZLEAgl1G7jYk6M2jK4t+ZqrnHARBh8qXPxDvcL9iKtB49Z9uj4i5EitL/KjB1fLziOa62aRL82KKtreNjR9z2lA1Xu3anDU7PScSE5jwJ31ChEhvRooF5yyDFanZoUr7/z7c0G+NMqFnoLcE4FfaO1h3ch8/HVb32fbVzhSD/xAc1MPYlTYF0IadBs+rpTyxuvqlqoFpZ8iyUVpYPZeatydPInZapknMthA==
ARC-Authentication-Results: i=2; mx.microsoft.com 1; spf=pass (sender ip is
 40.93.6.107) smtp.rcpttodomain=amd.com smtp.mailfrom=elektrobit.com;
 dmarc=pass (p=quarantine sp=none pct=100) action=none
 header.from=elektrobit.com; dkim=pass (signature was verified)
 header.d=elektrobit.com; arc=pass (0 oda=1 ltdi=1
 spf=[1,1,smtp.mailfrom=elektrobit.com]
 dmarc=[1,1,header.from=elektrobit.com])
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=elektrobit.com;
 s=selector1;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck;
 bh=ASN5ZYxdsnJbb4wpR/egaU8I/r7OxT8I6SsLPMu6BO4=;
 b=FTHiPl3+ccGn+jBT6XxYr4R9R+BmQH08vXOVcHUBxlGGtrl63hPwx/mY3h5D2U6NO7s/asl3hIWtJGdInSRBow2vEpokhqFXME1UNt8DjNrzhcg+6RA68M1tkf0Xrkfyco9yVoQTS7TqToO8uOkL0z9m8HdBIVtPuwZIUta1eeg=
X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 40.93.6.107)
 smtp.mailfrom=elektrobit.com; dkim=pass (signature was verified)
 header.d=elektrobit.com;dmarc=pass action=none header.from=elektrobit.com;
Received-SPF: Pass (protection.outlook.com: domain of elektrobit.com
 designates 40.93.6.107 as permitted sender) receiver=protection.outlook.com;
 client-ip=40.93.6.107; helo=CY3PR08CU001.outbound.protection.outlook.com;
 pr=C
ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none;
 b=mGGmhqDc+C13sdDWM1adpVFrCmZNecvUwEBiAe4N4mugtgQtzMKK03myi94tIA4jVr/DdaVIs0f0MrR4+nSREpjE67+i6i0IW7ehuV1fxaNPZ8EGzNAx/poLEgCEjmprvOlA47IjyBqPlJMOCMdGroJnC29rPf31F/sj1RbJK+mEWzET4I9se9yd7CA8mjaKb9SZhwPzqnz0D1Mb6rMnWIOQyC/PKDKNNKU9HgJbEYzdOKvF3I2mCgZ3zdOzDevXcZ9TzWEmf2yI9lN3Skb5Ym598sWWuVVxPmPXrZOQYrfc+05AMgWxR4JhZ57FO/im5l79Fg15xer7q35VvwV2uQ==
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com;
 s=arcselector10001;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1;
 bh=ASN5ZYxdsnJbb4wpR/egaU8I/r7OxT8I6SsLPMu6BO4=;
 b=xSpq/8cXq7G+xQ4UWS/Rsbi1AsgCj8wvrtNsy2nLxNIGurYSLIOK3VCoLNxRf2wXYivJPPxLBuS7kEWMXZGGpb15lDdchTbU4eeUpU5cdAzQpb/FH8u+7nVkX24t78wsz30IzO4hcLpVvziOnvU2FpVM17Iw20FcXHOLZj4BrI2X46+BP1qpenqRz3Xgg190KFBUQ3gufhZR0TSMpQtwB6V57bXBFrLl3NkJ4/n3bHpifvdavqt1v6V5w5r3rnCxBvkeNlfNIJGC21sIOSY2mJ+W25zBGGHOzXIUna5hG8darGgEIIlH9h0b7LCiZbYo9Q6+ceO13sjHlPYmFVLD8Q==
ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass (sender ip is
 213.95.148.172) smtp.rcpttodomain=lists.xenproject.org
 smtp.mailfrom=elektrobit.com; dmarc=pass (p=quarantine sp=none pct=100)
 action=none header.from=elektrobit.com; dkim=none (message not signed);
 arc=none (0)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=elektrobit.com;
 s=selector1;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck;
 bh=ASN5ZYxdsnJbb4wpR/egaU8I/r7OxT8I6SsLPMu6BO4=;
 b=FTHiPl3+ccGn+jBT6XxYr4R9R+BmQH08vXOVcHUBxlGGtrl63hPwx/mY3h5D2U6NO7s/asl3hIWtJGdInSRBow2vEpokhqFXME1UNt8DjNrzhcg+6RA68M1tkf0Xrkfyco9yVoQTS7TqToO8uOkL0z9m8HdBIVtPuwZIUta1eeg=
X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 213.95.148.172)
 smtp.mailfrom=elektrobit.com; dkim=none (message not signed)
 header.d=none;dmarc=pass action=none header.from=elektrobit.com;
Received-SPF: Pass (protection.outlook.com: domain of elektrobit.com
 designates 213.95.148.172 as permitted sender)
 receiver=protection.outlook.com; client-ip=213.95.148.172;
 helo=denue6es012.ebgroup.elektrobit.com; pr=C
From: Rose Spangler <Rose.Spangler@elektrobit.com>
To: <xen-devel@lists.xenproject.org>
CC: Rose Spangler <Rose.Spangler@elektrobit.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: [RFC PATCH v6 40/43] arm/altp2m: Add altp2m_reset_altp2m routine
Date: Mon, 20 Apr 2026 17:32:03 -0400
Message-ID: <20260420213206.208750-41-Rose.Spangler@elektrobit.com>
X-Mailer: git-send-email 2.34.1
In-Reply-To: <20260420213206.208750-1-Rose.Spangler@elektrobit.com>
References: <20260420213206.208750-1-Rose.Spangler@elektrobit.com>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit
Content-Type: text/plain
X-Originating-IP: [10.10.178.50]
X-ClientProxiedBy: denue6es012.ebgroup.elektrobit.com (10.243.160.140) To
 denue6es012.ebgroup.elektrobit.com (10.243.160.140)
X-EOPAttributedMessage: 1
X-MS-Exchange-SkipListedInternetSender:
 ip=[213.95.148.172];domain=denue6es012.ebgroup.elektrobit.com
X-MS-TrafficTypeDiagnostic:
	SJ1PEPF000026C9:EE_|LV9PR08MB10801:EE_|SJ1PEPF000023D0:EE_|SA3PR08MB8873:EE_
X-MS-Office365-Filtering-Correlation-Id: cf24d18c-5d95-462b-b2d2-08de9f247d63
X-SM-outgoing: yes
X-MS-Exchange-SenderADCheck: 1
X-MS-Exchange-AntiSpam-Relay: 0
X-Microsoft-Antispam-Untrusted:
 BCL:0;ARA:13230040|704162011799003|376014|1800799024|82310400026|36860700016|18002099003|22082099003|56012099003;
X-Microsoft-Antispam-Message-Info-Original:
 =?us-ascii?Q?s6vliefx3GpQZCqeZuOM+iXFqwD7ukgMMeP5hK752tHrdzdGWYeBn4Dq9CXe?=
 =?us-ascii?Q?snTZdV/m7pGlg5uK8nGouYvAkpewt5WfiAVDkLczhLcK9QmGueUtHX0zeCoW?=
 =?us-ascii?Q?y7gGKb4kofw6Z7WiyLC6lWkXae3rg8afVEXLJKnkySY+cb6pDAtGuSOEnJc0?=
 =?us-ascii?Q?waOz9HiZc9eVVvdpU+GOXXxTnQaE1S/39JgqSoP1wcKzrI1LMyxM2JwHpp3V?=
 =?us-ascii?Q?tTznaZGM1Dovmi935AtSI9q/NmFYsH45JeqqDlGTzqEaH8yO9gL6sAAN47qv?=
 =?us-ascii?Q?VZK4rrQrTGDAQT9GVRJhZ2HdjTahqZ8RWQogdFLFuzeVLsL3G4/Uq1qVCqDF?=
 =?us-ascii?Q?bEa1L570btGziTrbQGUFXAKSzGQXbWEo1rlTOV9/HEwMG+u9ToRPTWKtKezA?=
 =?us-ascii?Q?RzZuc0dtqSNKhSVupf7tJeWNhvp+d27IrCc9tkCfD/43DuFaqw3X+znrq+Qx?=
 =?us-ascii?Q?45xHSTHp4bsdylgLm2FBT8V10007L6RAN9UJ0MTERElr/2Q6RfdUYx17ArBo?=
 =?us-ascii?Q?n3r1AxHOIbeNjqULXbBgaGiVq+nP9RdskEYUEWcIACrbNr8Q8VQlu/oakrJn?=
 =?us-ascii?Q?OUb/NGlE3AtyljVYH7IX+W02dkuGOxV3sqtevLRFobIWt0zONxcVRgmgYDwi?=
 =?us-ascii?Q?kvhl6O9eOE4O15obw9Gbj90e2ulgFajePuHgpvhkeZ1pQK2B7Uih0VJcienI?=
 =?us-ascii?Q?/TFoBOHeRzqyFsrqyGiXpVTjbzfOMnxhIuTH1izpcJRZE3QHaoWoZMv8KT//?=
 =?us-ascii?Q?LbEesRWzadjqKlWJ0hWyQUQGo8CVK2V5o3CaoglmzSK3lAdxZ3czzFIKMbt1?=
 =?us-ascii?Q?COH3cV8ciNusjgZ3JfLJpLlV8axnvq7Rv17VarwLaUyitEoo5ts/Q5dV/T7i?=
 =?us-ascii?Q?9inE3Sjp2AgjuVslx5VxypEAUSCAWuZPxwqOkmkibR8kC+ldgMs+2k903Vd3?=
 =?us-ascii?Q?KCiDa5cQyxH15VTYDE3HvmGHSSH1YLWQOagyhBAVR49qlmJtE8JH9d7MoBY1?=
 =?us-ascii?Q?S5tU9JhxIICkrL8iHzYpLdUkcNtqLgiA0Bq/Ttlash9hsjVfDSz3QfYD1TTS?=
 =?us-ascii?Q?tka8uIH3vKz8HyHtSKEgXEhjR9ERdXm7DE/eLqs0Jn4/RiCD4Uc=3D?=
X-Forefront-Antispam-Report-Untrusted:
 CIP:213.95.148.172;CTRY:DE;LANG:en;SCL:1;SRV:;IPV:CAL;SFV:NSPM;H:denue6es012.ebgroup.elektrobit.com;PTR:eth1-fw1-nbg6.eb.noris.de;CAT:NONE;SFS:(13230040)(704162011799003)(376014)(1800799024)(82310400026)(36860700016)(18002099003)(22082099003)(56012099003);DIR:OUT;SFP:1102;
X-Exchange-RoutingPolicyChecked:
 IxRRx6+wrYJ9V2waQwMuNc5bE5bOaDoYwo3uz4jQJFF42sU967oju/3OAdkfzApRzxRhrkiXjQt2js97syHWNC1GbDNKZOBmq2rQPud9bADEnoknd/8uAwKDCXArgvvA7ax5reHlWHC2W8482QwuWK/podGPZohWrfH2hZLJxdF+ZxxUGGTC11K0gkL1kmjDkoeeg8HjxJCi6kiRn+Z4Q4VNdhWZBzWAdMIdG4t+hho9mBuRJ1P1PPy9D98dzyjrhFF3oRbjcKlB4Vku7Ipn/vOj1O9FVCETne5Mc51WheStyblEAUYEukOeCDtpKW2plpCKiSFWYsBUkVS1hFhW5g==
X-MS-Exchange-Transport-CrossTenantHeadersStamped: LV9PR08MB10801
X-MS-Exchange-SkipListedInternetSender:
 ip=[40.93.6.107];domain=CY3PR08CU001.outbound.protection.outlook.com
X-MS-Exchange-ExternalOriginalInternetSender:
 ip=[40.93.6.107];domain=CY3PR08CU001.outbound.protection.outlook.com
X-MS-Exchange-Transport-CrossTenantHeadersStripped:
 SJ1PEPF000023D0.namprd02.prod.outlook.com
X-MS-PublicTrafficType: Email
X-MS-Office365-Filtering-Correlation-Id-Prvs:
	901b3b4f-562a-4792-3597-08de9f2478f3
X-Microsoft-Antispam:
	BCL:0;ARA:13230040|704162011799003|14060799003|35042699022|1800799024|36860700016|82310400026|376014|156008|22082099003|56012099003|18002099003;
X-Microsoft-Antispam-Message-Info:
	=?us-ascii?Q?PpKD3+MlMGAA8XtGrCVh1Hz5VEtQOLwfx++A/XBPHvrcitHFdQhNY7fEZr4r?=
 =?us-ascii?Q?Z797vF1dOV2xN0d7mcZ5wPyw0ZJ8Sp2QIWlfqM3XkGKBhPJVmiSTMiEYad3z?=
 =?us-ascii?Q?8GvBVtHjNtUQUROeIbFgIS/k1DExd7ZJuLttXa7MHA7xYqB1MaUH2vypKRCc?=
 =?us-ascii?Q?sGc2UHvT956KIBQhNPG1uGE+lvSzPN2QGXPBy0CJ/4OwFug9erGL3GYPmUg0?=
 =?us-ascii?Q?7beKEJYweKGyUA1BTrym0M8SFe5Dv7AZ/NqGCjh5umK3F1c9sjdSSXSqs8n/?=
 =?us-ascii?Q?lBfo2iWt1HNcfkUUEpaPLevfqoG88fELN7Gn3AldtsVykOVjaXZLu7LZlVqk?=
 =?us-ascii?Q?oNZ903wUx5V1/y24xYhK470YjLTnsgAojh2pZZ+sNtbIZ9QFmfpu2mc/52/a?=
 =?us-ascii?Q?BBmRCx20ZfyQEMpqQGfSngXI12HG/qo98JKWDomsM0nBH/FwIwJHDHE+xeSt?=
 =?us-ascii?Q?yVY40y/wUytAgG1vrpKj8zq8+gH+cGGnISTrXWUYabJdUYE9Zw7OkwzWzVcc?=
 =?us-ascii?Q?6tx8IoFdauXZXHQsxhN3bA/yg0LV1HbtvR82r4GQfKav1v/TAaUV0BlMHwKf?=
 =?us-ascii?Q?qMN84j4I+EZ8W2Iu4j5+9uTpHI3X4yLgM0/IY1oDMvzaRhwb4WFoGldj6uZs?=
 =?us-ascii?Q?JaTbqTi94Z46ZXvomI3AfLDnRZpE4MUtSDl6KUmK7qOiTWoUSKEj3ZOrAqmw?=
 =?us-ascii?Q?Pwzphj50NEo5XHWhh6xrV0ryoC2i2244VgUg/oF6sNSq2cIhPxtALsLDhVbO?=
 =?us-ascii?Q?UZtucXiLJ01K74LXRJo+VXSUvuNiJDYri8H4ppw0AiqIuserMiggKtAuzeAw?=
 =?us-ascii?Q?ty04zv4PWaU4IV6wGa7Z/CwMXX00mMsvjRpcppLRN7XZ/S4XVLcVkBXLqX9M?=
 =?us-ascii?Q?10z97xn4A2+TlooEEXZOd7nCheXWX/RbGLKpPNYOlewLQRdn6yr4K1uCTjC2?=
 =?us-ascii?Q?D090l+tQgtJidcG9TjBv/IZ1Z1GJ5lKcgkbsgMySr4jmEpBAdwNYbNrJkja0?=
 =?us-ascii?Q?FoTUWahU3fq4N2bv0Kx0RB75MDKHHZZ7xsKJhFXArzcMBaiiYv7ZzXxxzm3K?=
 =?us-ascii?Q?MMZX8hSwlqk3+Jp1Rr0jNxDQo4UmNnaoIT5hgMbev+SSVfKcPHA=3D?=
X-Forefront-Antispam-Report:
	CIP:4.79.107.243;CTRY:US;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:CY3PR08CU001.outbound.protection.outlook.com;PTR:mail-cy3pr08cu00103.outbound.protection.outlook.com;CAT:NONE;SFS:(13230040)(704162011799003)(14060799003)(35042699022)(1800799024)(36860700016)(82310400026)(376014)(156008)(22082099003)(56012099003)(18002099003);DIR:OUT;SFP:1102;
X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1
X-MS-Exchange-AntiSpam-MessageData-0:
	dwZyBiBD99JqkrBkyJmkBFFJ0eo0gfn7CN6N9/KHPdkbz0ffDmbwQQPK6lgbl7q6iAab1BKobnxorc2OZt3hFkWlK14t/jCaH5c57eUnrpI7vwlgPH0giBoamf0ARFkpQa10gRoD3Qy9tyrxpvCJhk2Qc4IeJnVzZldz271BcSmBUSydQ9EzK+JvjMaCx6qZO76oHBmp3daZLRd/mSC2oMlkWDZRBbr/LxcmaKawm6dM1aIhgAPIgtnf3w0aA69nZhpg4GH0Zg21OtvloFEIMH/r8QgnCxfDH+ey3DLHaiUyhAz1UmwtNh/B7eQnfiyCrRseUwPrtedICz7eUGvoYlFYmKDINLg/pvhJLx76iojPhVmR9MvURY5jGFyZUvU+0yIy1TP5QWJ+H7aGfu5rFbXKxuAGbW2mEO7ES9o8NpTYQpDjM8kjsENJ8Bfj3ZyU
X-OriginatorOrg: elektrobit.com
X-MS-Exchange-CrossTenant-OriginalArrivalTime: 20 Apr 2026 21:33:40.1651
 (UTC)
X-MS-Exchange-CrossTenant-Network-Message-Id: cf24d18c-5d95-462b-b2d2-08de9f247d63
X-MS-Exchange-CrossTenant-Id: e764c36b-012e-4216-910d-8fd16283182d
X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=e764c36b-012e-4216-910d-8fd16283182d;Ip=[4.79.107.243];Helo=[usbth1es003.ebgroup.elektrobit.com]
X-MS-Exchange-CrossTenant-AuthAs: Internal
X-MS-Exchange-CrossTenant-AuthSource: TreatMessagesAsInternal-SJ1PEPF000023D0.namprd02.prod.outlook.com
X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem
X-MS-Exchange-Transport-CrossTenantHeadersStamped: SA3PR08MB8873
X-purgate-ID: tlsNG-4011c0/1776720829-45B6F8B7-073EC061/0/0
X-purgate-type: clean
X-purgate-size: 3083

This commit adds the altp2m_reset_altp2m routine on ARM. This will later be
used as part of the altp2m_flush routine.

This is commit 2/2 of the altp2m_reset_altp2m phase.

Signed-off-by: Rose Spangler <Rose.Spangler@elektrobit.com>
---
v6: Introduced this patch.

    I'm not sure if duplicating the altp2m_reset_type enum is really the
    best way to handle this. The distinction isn't even relevant on ARM
    since the logdirty ranges don't need to be freed. However, the function
    prototype has to be the same in order to call it on both x86 and ARM.
    Ideally the altp2m_reset_type enum would be part of a header that
    asm/altp2m.h includes on both architectures. The main xen/altp2m.h
    header can't fill this role since it includes asm/altp2m.h, so it would
    be a circular include. Introducing *another* header file to just hold
    altp2m_reset_type also isn't great, so I chose to just duplicate the
    enum. Any better ideas here would be appreciated.
---
 xen/arch/arm/altp2m.c             | 20 ++++++++++++++++++++
 xen/arch/arm/include/asm/altp2m.h |  8 ++++++++
 2 files changed, 28 insertions(+)

diff --git a/xen/arch/arm/altp2m.c b/xen/arch/arm/altp2m.c
index aa56b3ca79b5..bf2d9095830f 100644
--- a/xen/arch/arm/altp2m.c
+++ b/xen/arch/arm/altp2m.c
@@ -7,6 +7,7 @@
 
 #include <xen/sched.h>
 
+#include <asm/altp2m.h>
 #include <asm/p2m.h>
 
 /* Check to see if vcpu should be switched to a different p2m. */
@@ -37,6 +38,25 @@ bool altp2m_view_is_visible(struct domain *d, unsigned int idx)
     return d->arch.altp2m_state[array_index_nospec(idx, d->nr_altp2m)] == ALTP2M_VISIBLE;
 }
 
+void altp2m_reset_altp2m(struct domain *d, unsigned int idx,
+                         enum altp2m_reset_type reset_type)
+{
+    struct p2m_domain *p2m;
+
+    ASSERT(idx < d->nr_altp2m);
+    p2m = d->altp2m_p2m[array_index_nospec(idx, d->nr_altp2m)];
+
+    p2m_write_lock(p2m);
+
+    while ( p2m_flush_table(p2m) == -ERESTART )
+        continue; /* No preemption support here */
+
+    p2m->lowest_mapped_gfn = INVALID_GFN;
+    p2m->max_mapped_gfn = _gfn(0);
+
+    p2m_write_unlock(p2m);
+}
+
 int altp2m_activate_altp2m(struct domain *d, unsigned int idx,
                            p2m_access_t hvmmem_default_access)
 {
diff --git a/xen/arch/arm/include/asm/altp2m.h b/xen/arch/arm/include/asm/altp2m.h
index 192240f48c33..14961736a238 100644
--- a/xen/arch/arm/include/asm/altp2m.h
+++ b/xen/arch/arm/include/asm/altp2m.h
@@ -52,6 +52,14 @@ int altp2m_set_view_visibility_locked(struct domain *d, unsigned int altp2m_idx,
 int altp2m_activate_altp2m(struct domain *d, unsigned int idx,
                            p2m_access_t hvmmem_default_access);
 
+/* Reset an altp2m view */
+enum altp2m_reset_type {
+    ALTP2M_RESET,
+    ALTP2M_DEACTIVATE
+};
+void altp2m_reset_altp2m(struct domain *d, unsigned int idx,
+                         enum altp2m_reset_type reset_type);
+
 #else /* CONFIG_ALTP2M */
 
 static inline bool altp2m_supported(void)
-- 
2.34.1



From xen-devel-bounces@lists.xenproject.org Mon Apr 20 21:34:22 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 20 Apr 2026 21:34:22 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1288048.1568439 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wEwG6-0006bS-8o; Mon, 20 Apr 2026 21:34:22 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1288048.1568439; Mon, 20 Apr 2026 21: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 1wEwG6-0006bD-5e; Mon, 20 Apr 2026 21:34:22 +0000
Received: by outflank-mailman (input) for mailman id 1288048;
 Mon, 20 Apr 2026 21:34:20 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <Rose.Spangler@elektrobit.com>) id 1wEwG4-0006Pi-J6
 for xen-devel@lists.xenproject.org; Mon, 20 Apr 2026 21:34:20 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wEwG3-00CCTa-Vc
 for xen-devel@lists.xenproject.org; Mon, 20 Apr 2026 23:34:19 +0200
Received: from [10.42.69.10] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <Rose.Spangler@elektrobit.com>)
 id 69e69bbd-bab6-0a2a0a5309dd-0a2a450ab8e6-38
 for <xen-devel@lists.xenproject.org>; Mon, 20 Apr 2026 23:34:19 +0200
Received: from [40.107.200.94]
 (helo=CH5PR02CU005.outbound.protection.outlook.com)
 by tlsNG-4011c0.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.1)
 (envelope-from <Rose.Spangler@elektrobit.com>)
 id 69e69bda-56b3-0a2a450a0019-286bc85e257c-3
 for <xen-devel@lists.xenproject.org>; Mon, 20 Apr 2026 23:34:19 +0200
Received: from DM6PR07CA0099.namprd07.prod.outlook.com (2603:10b6:5:337::32)
 by SA6PR08MB10377.namprd08.prod.outlook.com (2603:10b6:806:442::17) with
 Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9818.32; Mon, 20 Apr
 2026 21:33:13 +0000
Received: from DS2PEPF00003441.namprd04.prod.outlook.com
 (2603:10b6:5:337:cafe::6d) by DM6PR07CA0099.outlook.office365.com
 (2603:10b6:5:337::32) with Microsoft SMTP Server (version=TLS1_3,
 cipher=TLS_AES_256_GCM_SHA384) id 15.20.9791.48 via Frontend Transport; Mon,
 20 Apr 2026 21:33:13 +0000
Received: from usbth1es003.ebgroup.elektrobit.com (4.79.107.243) by
 DS2PEPF00003441.mail.protection.outlook.com (10.167.17.68) with Microsoft
 SMTP Server (version=TLS1_3, cipher=TLS_AES_256_GCM_SHA384) id 15.20.9791.48
 via Frontend Transport; Mon, 20 Apr 2026 21:33:12 +0000
Received: from usbth1es003 (localhost [127.0.0.1])
 by usbth1es003.ebgroup.elektrobit.com (Postfix) with SMTP id 4fzzHX1Mrqz1wdW; 
 Mon, 20 Apr 2026 14:33:12 -0700 (PDT)
Received: from CO1PR08CU001.outbound.protection.outlook.com
 (mail-co1pr08cu00105.outbound.protection.outlook.com [40.93.10.101])
 (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)
 key-exchange secp384r1 server-signature RSA-PSS (2048 bits) server-digest
 SHA256) (No client certificate requested)
 by usbth1es003.ebgroup.elektrobit.com (Postfix) with ESMTPS;
 Mon, 20 Apr 2026 14:33:11 -0700 (PDT)
Received: from BY1P220CA0050.NAMP220.PROD.OUTLOOK.COM (2603:10b6:a03:59e::12)
 by DS1PR08MB10100.namprd08.prod.outlook.com (2603:10b6:8:20f::16)
 with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9818.32; Mon, 20 Apr
 2026 21:33:07 +0000
Received: from SJ1PEPF000026C8.namprd04.prod.outlook.com
 (2603:10b6:a03:59e:cafe::9d) by BY1P220CA0050.outlook.office365.com
 (2603:10b6:a03:59e::12) with Microsoft SMTP Server (version=TLS1_3,
 cipher=TLS_AES_256_GCM_SHA384) id 15.20.9791.48 via Frontend Transport; Mon,
 20 Apr 2026 21:33:06 +0000
Received: from denue6es012.ebgroup.elektrobit.com (213.95.148.172) by
 SJ1PEPF000026C8.mail.protection.outlook.com (10.167.244.105) with Microsoft
 SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id
 15.20.9791.48 via Frontend Transport; Mon, 20 Apr 2026 21:33:06 +0000
Received: from ubuntu.localdomain (10.10.178.50) by
 denue6es012.ebgroup.elektrobit.com (10.243.160.140) with Microsoft SMTP
 Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id
 15.2.2562.35; Mon, 20 Apr 2026 23:33:03 +0200
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@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=elektrobit.com header.i="@elektrobit.com" header.h="From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck"; dkim=pass header.s=selector1 header.d=elektrobit.com header.i="@elektrobit.com" header.h="From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck"
ARC-Seal: i=2; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=pass;
 b=FMSJb+aycSBeSNUd2T2odW6B6bxjmQ6Rm8gpTxZ6fSBUSxTFtwJokiIXh1/TkgEdTefxjrFQIP87cd5OsUEm2lhCL7NpwMReJAUWh/8ADSWHiXpsrsArTygBKwxLJ8ZOA8S7YymLOwK5JqPy69ZD1z1r1BdmQ8ykm2GhEiauuQbQWJZaWhOpC74qhKogZrtWK4NIWhJ9HqMCfTjhb+vBfeCx+XifgOBgIEA++3oA1VlwxH/E3sbALtKxDOKXqmPkJJyKll06m7Ix1Y0GbstFX67X7RlgpnkJAwcslZHq1Im9MwMDjGdRNrtirU6KbSLkYI82JGHTug0ZKWBA6GsfZA==
ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com;
 s=arcselector10001;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1;
 bh=/xFPvcddJmAh/7k7Gzv3o+d1z1DGyz3l1lzwxv3F8MY=;
 b=FtO5hosF4UFmybFgkE5MNXObp9CcuUkGfkAsyOaO6x5jr91YWzqiEYm8TI8/kCMG/ucXudBzu0XQMjLiNGlHPpRrFzKgOrRg159uUzJHABRA9ki54/aevmq4WVwOgTWa7xcZXT51XUMOAsqGbL1BXm9FsFn+983PGBkrSfHDDais0vD4oYnQyhCCjje02ogzUe7304PWaLJzY4CIroFJlbi4waWg/sxPawI+5VoL5YbpAwGZTBaESi5UXCnUk2IdDGHNU/5GUOQpw/RcmoSQnBjRIHJzVuvfrLXhlNm90/WhA6Q03Xx9/HkBY4FzfmEREBWXnMJY6Gy6PnQE5681iA==
ARC-Authentication-Results: i=2; mx.microsoft.com 1; spf=pass (sender ip is
 40.93.10.101) smtp.rcpttodomain=amd.com smtp.mailfrom=elektrobit.com;
 dmarc=pass (p=quarantine sp=none pct=100) action=none
 header.from=elektrobit.com; dkim=pass (signature was verified)
 header.d=elektrobit.com; arc=pass (0 oda=1 ltdi=1
 spf=[1,1,smtp.mailfrom=elektrobit.com]
 dmarc=[1,1,header.from=elektrobit.com])
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=elektrobit.com;
 s=selector1;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck;
 bh=/xFPvcddJmAh/7k7Gzv3o+d1z1DGyz3l1lzwxv3F8MY=;
 b=Do+yb01PklVe/ucKnNrT5TGaO5B9IhPKJf4Jqav+iIHTFb8I7gVa6LxD9CevNrzf90um7qnIeBvYmgQQh9DkvRzTqYqb2YAO41k9+Rni1SUs4/0Qbv5vlg5ROw7cw8XcUQX1lca/ZxYQYynArxOWCwgw1DQpe7Ry3lgbRzj938s=
X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 40.93.10.101)
 smtp.mailfrom=elektrobit.com; dkim=pass (signature was verified)
 header.d=elektrobit.com;dmarc=pass action=none header.from=elektrobit.com;
Received-SPF: Pass (protection.outlook.com: domain of elektrobit.com
 designates 40.93.10.101 as permitted sender) receiver=protection.outlook.com;
 client-ip=40.93.10.101; helo=CO1PR08CU001.outbound.protection.outlook.com;
 pr=C
ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none;
 b=GBCsg2ercueuEKeF0TYR6sv3g/OnwKJI/KoHsck0DQNbLFjG5pIepqMPcVHXAzBObIn3zIKw/2/pl7exPVM5nRBwds3pu7y714zCSxcVPPNkQUy0chpCq6GaMXqc+6Skss3/IJJulxmhPQr0fOXnbSFEaYomnI9JjSMB1so5CEO2QmXppDp4U39c7Wf/Wu97ZFRsjt5nsYsZwNvQqosO+GI24VpE4oYhnSwK7zPSEM6XVKt4RWkE5Ew9e/6buI5Uq+EW8+h+RiRsRNfYSiIbbwepCnzg2IvMBrI1BY8/fuuKdwAgovvFXmooD+FhHhKJuSKHcK4LNpuyUqnxfB0eDA==
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com;
 s=arcselector10001;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1;
 bh=/xFPvcddJmAh/7k7Gzv3o+d1z1DGyz3l1lzwxv3F8MY=;
 b=ToZBUZNWZo6MlM2dD8W1B4+Q9cgbz/akBeKRXuWhVEnaG3Xki+ozy5dk2DOvIUJy7ot6If9Zyq9W/5B1m3M+/ILe0m1dE2dMKDc9HQiQ2pASmnz6pjd91JHxCGP1OS1y98izFgSPmWTmzfvxWMbQ3/KeZlIfKQowco23K5BZNiiM3+hxaeF3iZxoxBXDuGzI81uRz04o331FXfrw/vEd0kAsbLKJnu4Y3PPZfe3RhvXNC9W7o+IOifKdk5HJGmHxYHFR4FbwDwl3Zjrx9dJCSWAMpwoPTfCpB01VmMsevQG9Oq577gHB3Wzq7em0llBJa+vzDaHfJjIQnB2nWxwEfg==
ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass (sender ip is
 213.95.148.172) smtp.rcpttodomain=lists.xenproject.org
 smtp.mailfrom=elektrobit.com; dmarc=pass (p=quarantine sp=none pct=100)
 action=none header.from=elektrobit.com; dkim=none (message not signed);
 arc=none (0)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=elektrobit.com;
 s=selector1;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck;
 bh=/xFPvcddJmAh/7k7Gzv3o+d1z1DGyz3l1lzwxv3F8MY=;
 b=Do+yb01PklVe/ucKnNrT5TGaO5B9IhPKJf4Jqav+iIHTFb8I7gVa6LxD9CevNrzf90um7qnIeBvYmgQQh9DkvRzTqYqb2YAO41k9+Rni1SUs4/0Qbv5vlg5ROw7cw8XcUQX1lca/ZxYQYynArxOWCwgw1DQpe7Ry3lgbRzj938s=
X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 213.95.148.172)
 smtp.mailfrom=elektrobit.com; dkim=none (message not signed)
 header.d=none;dmarc=pass action=none header.from=elektrobit.com;
Received-SPF: Pass (protection.outlook.com: domain of elektrobit.com
 designates 213.95.148.172 as permitted sender)
 receiver=protection.outlook.com; client-ip=213.95.148.172;
 helo=denue6es012.ebgroup.elektrobit.com; pr=C
From: Rose Spangler <Rose.Spangler@elektrobit.com>
To: <xen-devel@lists.xenproject.org>
CC: Rose Spangler <Rose.Spangler@elektrobit.com>, Jan Beulich
	<jbeulich@suse.com>, Andrew Cooper <andrew.cooper3@citrix.com>,
	=?UTF-8?q?Roger=20Pau=20Monn=C3=A9?= <roger.pau@citrix.com>, 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: [RFC PATCH v6 24/43] altp2m: Move altp2m_{get,set}_altp2m to common code
Date: Mon, 20 Apr 2026 17:31:47 -0400
Message-ID: <20260420213206.208750-25-Rose.Spangler@elektrobit.com>
X-Mailer: git-send-email 2.34.1
In-Reply-To: <20260420213206.208750-1-Rose.Spangler@elektrobit.com>
References: <20260420213206.208750-1-Rose.Spangler@elektrobit.com>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit
Content-Type: text/plain
X-Originating-IP: [10.10.178.50]
X-ClientProxiedBy: denue6es012.ebgroup.elektrobit.com (10.243.160.140) To
 denue6es012.ebgroup.elektrobit.com (10.243.160.140)
X-EOPAttributedMessage: 1
X-MS-Exchange-SkipListedInternetSender:
 ip=[213.95.148.172];domain=denue6es012.ebgroup.elektrobit.com
X-MS-TrafficTypeDiagnostic:
	SJ1PEPF000026C8:EE_|DS1PR08MB10100:EE_|DS2PEPF00003441:EE_|SA6PR08MB10377:EE_
X-MS-Office365-Filtering-Correlation-Id: ba8a10f7-8e77-4801-bc5f-08de9f246d21
X-SM-outgoing: yes
X-MS-Exchange-SenderADCheck: 1
X-MS-Exchange-AntiSpam-Relay: 0
X-Microsoft-Antispam-Untrusted:
 BCL:0;ARA:13230040|704162011799003|82310400026|376014|36860700016|1800799024|22082099003|18002099003|56012099003;
X-Microsoft-Antispam-Message-Info-Original:
 =?us-ascii?Q?plf4No1i4qaig8xaNEwulhp9ZVMS/ZyAQELNLk/dGWWGgshsKxx1P1JLJnDv?=
 =?us-ascii?Q?LlCTn9jFUx3napKq/tRKiWvv8+peRaJN3g5ekR+JzY6kxARfsjqZ8sskLrJS?=
 =?us-ascii?Q?NwyAHS/RQbrwkW/CEPq65+1Wxan2M4NzUfLzPXLX4k3e93bfS9JiTdCzWili?=
 =?us-ascii?Q?2UFRIPrp9u7ilIInwWfFIi3PXbeVJl4jH/ecdl0ZBMhBq+cGLYhr082FBo0H?=
 =?us-ascii?Q?csPTdBw+G9UHyzp2sugI5PNjlT+Z19VV3/kgZZcqbL3M79SbQuEZR9apPXsJ?=
 =?us-ascii?Q?GofE0d7SgvnAfvNx7TXcsYNL2BEMGMOXdPGOE9FqljrXem48zSdq31ZmCPQe?=
 =?us-ascii?Q?74SJjYqFtuB/9JzFwo0FwYbjyK55mi12svYDlfrFNCw+hSGUdIbPsStw+5uK?=
 =?us-ascii?Q?v+rkife7z9IvxZ1beIbUPNGbHNlQMBf6cGL04qfOn6QXnoWlr1bJktQ0BCms?=
 =?us-ascii?Q?k4bMNl4M4IcnQEWDgvMxdAH29Y8ZJbOuspq6RiUc1I9SHfbVUoE3XsZdsuJC?=
 =?us-ascii?Q?OK+mNkbCEdTWYkLbvhREtFAsZytrRfQSq/ghwZXDk5FHiGikR9zJ84222kzH?=
 =?us-ascii?Q?mMIsddWewL7qdCVyDaEdV1P8PeffyCMNj5V0UfWERvG5vyTPBpkyvoheaEFB?=
 =?us-ascii?Q?ypfeMJBFzxSwk2OxruCQU4ISk+u6jKxMDouB69xYAtgdJF/dA5TDTzAFeTUH?=
 =?us-ascii?Q?vfSybHG5vXgcUgEJrpXA2HicuRCvScpEP+FKkHvFQ//q6XXFRVA9/fU7j79L?=
 =?us-ascii?Q?SlYt5QOZQbkFJOavlF5YyVTQkPwn9wn7OajD09WXX01yNypvuSF3+VvbQKcB?=
 =?us-ascii?Q?jjRm38HTwKgJjKFnd9mk54NxgyV152rpJFMtOOZXM8Rn5qF7rFDOnL1gBeEU?=
 =?us-ascii?Q?f0LxjqrxskXNi8Esf9TloGOfM9NPOPmPlZiKxSIuCMmkdudExFQM0yoJtxsz?=
 =?us-ascii?Q?wPeKqxH7lIx4yF3NFKXz/HL/06/l/PM8YOmoriWzxjJ0Q1Zpvlv243GF7jTe?=
 =?us-ascii?Q?Udg8CsopbZeEfv+6Vugw//l0Q8JovXXzyYltwuvfyscwXh2I53boir7SRgbc?=
 =?us-ascii?Q?15A1zV4uYUp7FpaEGQAFikayhrLIhT2zFDtbWkP8mYVobYc9cEk=3D?=
X-Forefront-Antispam-Report-Untrusted:
 CIP:213.95.148.172;CTRY:DE;LANG:en;SCL:1;SRV:;IPV:CAL;SFV:NSPM;H:denue6es012.ebgroup.elektrobit.com;PTR:eth1-fw1-nbg6.eb.noris.de;CAT:NONE;SFS:(13230040)(704162011799003)(82310400026)(376014)(36860700016)(1800799024)(22082099003)(18002099003)(56012099003);DIR:OUT;SFP:1102;
X-Exchange-RoutingPolicyChecked:
 kF+1R3q0ur4DjIQj5hLgP9cliSm+EMnL67vX7yTykMLxpaQSoX4ILvEwjYndQaNVoe2aE07imtcVPlpiIOUPgjMqtevpmlHwPgpFH9b+GaqXUehF7jgc50/wQoRUmoRRhiq56yrlj7ZYWTTIvWLxvx//ipfw48Na0x93WjVkmRbnpJ+qxIAbZ7ImPf6/5Kqs+5dKSGMskOUC7Dtuk1TZvXU72zhsW2Zsyp5RdASssIjG+Q/QL7zkZ0yKCE2ZOI87PvkJ+K6uyO2jwJ9xVrIAiZ2f+ts36kng37q8Ao7frfC2SDOC20SloRYvBGE4za+bNMrTi+Hdu39+8pSZ2Uq8Gg==
X-MS-Exchange-Transport-CrossTenantHeadersStamped: DS1PR08MB10100
X-MS-Exchange-SkipListedInternetSender:
 ip=[40.93.10.101];domain=CO1PR08CU001.outbound.protection.outlook.com
X-MS-Exchange-ExternalOriginalInternetSender:
 ip=[40.93.10.101];domain=CO1PR08CU001.outbound.protection.outlook.com
X-MS-Exchange-Transport-CrossTenantHeadersStripped:
 DS2PEPF00003441.namprd04.prod.outlook.com
X-MS-PublicTrafficType: Email
X-MS-Office365-Filtering-Correlation-Id-Prvs:
	4527a19b-3f7b-4a49-a2b8-08de9f24695f
X-Microsoft-Antispam:
	BCL:0;ARA:13230040|704162011799003|82310400026|14060799003|35042699022|156008|36860700016|376014|1800799024|56012099003|22082099003|18002099003;
X-Microsoft-Antispam-Message-Info:
	=?us-ascii?Q?jzNqBdScYahaIBUAshj2iQ7+IFxB2vjNP9H9zhY3GQ36KzBL9aW2ieKFtMcF?=
 =?us-ascii?Q?q/LqRa6sx2R2DQPtfbtShrVRrrn8EWueEZCGjIA4l6OUJrcjr4nT2SWMvXiD?=
 =?us-ascii?Q?50qu5ZDCLy7euOi+Vok2ryJ9vTAtZP3EMWdAJyjxdZ6Jv7KukbU4FRprrCWC?=
 =?us-ascii?Q?OLQ6ADPdU1/bLud2AxqtJntqI4BOXsBYVCS4sR3QSZJD21oYuztI3tCyvt3u?=
 =?us-ascii?Q?Pe7n+eXPn53flpinrJCjbX7w3wPaRvhNyX+wfoZHuTr5FPzYDJj09HGujZEE?=
 =?us-ascii?Q?5YzrEYMS0BdqKxjeY8ZVKgY3fwLh9BmUqbu28FHadDY1b4AmVOCz2Su4osij?=
 =?us-ascii?Q?ZTUkLbLiRwCtxiGdmmcW/PPaoXIs5lbmvoBPf1Vtk7BgEp+DoRvUVWfLu9lW?=
 =?us-ascii?Q?4NjTOKkifnty1Wqjqr2XdwTwXXxAhsxAjid+oorKgGLRHEKbCcaUCOey+x2F?=
 =?us-ascii?Q?y0ZYPRcwe44AZGR7V6sXrWqy+TVf1Tlf8JQv05vVxWIPhPKd7C2vbhoEiOW9?=
 =?us-ascii?Q?yG2J2Xl+Y/l7xgGWvKsxdrQZ2nq/apqvxgZ06o6i4mcteNihVpI6XnG7TTYY?=
 =?us-ascii?Q?qwgsrhZpd1YiBVQHUQlmrgy0E66SDr7cCXhfiGBAMXIig8sHor52crGhqtrC?=
 =?us-ascii?Q?1UK5I+09qCHwmqXbcFAJ8tSc1fFI7vvzDMPTDfg2ihIKvCl1dioaciy9J6/C?=
 =?us-ascii?Q?d382OW6MemMP8ucs2W809VtYyzEwxItON53ttiXQ8xaiBxxhwR63EZL7CnTO?=
 =?us-ascii?Q?jkaKfWEhTSDjwdqDriDyFDx1QgowIFABTqeXjwbDth8IX0Ej2VD6RpiMgSKW?=
 =?us-ascii?Q?UrcEg+Z2nGqdqe+pyWIP/snGljz838x5zfpVHFyK5GFPFigS3BMQSZRgqXMh?=
 =?us-ascii?Q?sUJSELYBOe/BlYA/HfsOTOeUQm2LF6s2NeP91bWP8Tiw6QSadKwsrJ+uFiRy?=
 =?us-ascii?Q?aE4ou4eM6gLI4O6A+tj1nD4GWGnNQaQlN+3p9wQJW3Fi9l1A7rU7t3qvyEIT?=
 =?us-ascii?Q?H2bSSPhpmxhLv+XeulACct0Av6rJ4VUXt6lDRqVlyHg2P6FNbQwyAQ/fcici?=
 =?us-ascii?Q?9JjZW8rioYW4r+c5yLzPU7fkVr9rcefE5kUSuCbwoj8zChrGEeQ=3D?=
X-Forefront-Antispam-Report:
	CIP:4.79.107.243;CTRY:US;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:CO1PR08CU001.outbound.protection.outlook.com;PTR:mail-co1pr08cu00105.outbound.protection.outlook.com;CAT:NONE;SFS:(13230040)(704162011799003)(82310400026)(14060799003)(35042699022)(156008)(36860700016)(376014)(1800799024)(56012099003)(22082099003)(18002099003);DIR:OUT;SFP:1102;
X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1
X-MS-Exchange-AntiSpam-MessageData-0:
	3gCVpOTRP8Rxv8bgbH/+D3/HnDM2ynhus4TnTzhKaXuJDm2Zudoxylf315XGq04vLUnO4+522F55/KyPAx5RrEk4cA2nIZc8Mg2veO8B9PM67jxoPKZlA+ySKE2E5BCGY3fGMWsVd1BOcjv4FCc7qLxVGocV0jEZQYTINvZHMSJfhy3F4C2UJIPZUGpx/8RJth6P7OCjkUObxCbgUuf7ocgqEgARksOXTsZAlsLUfEqZpcDFlXf7aD3fu36qFtSh9oSZgI48z5A1lYApV3o0NI+5DYnbwIkbSfJsvvgVJ709SzXYfOlUJnLyaeP9MjbGmGSBDPr2CE6owEzHeHHwZepjvTuswlgpSSa1HtzV/fGesWA8xx7QqNi8QJGf/WKOM2FQXX+mF2jcf5H96+3dQcVGf/zE+DWWRh20SJIuahx1lTogJy5er3MG4m4cWHO3
X-OriginatorOrg: elektrobit.com
X-MS-Exchange-CrossTenant-OriginalArrivalTime: 20 Apr 2026 21:33:12.8485
 (UTC)
X-MS-Exchange-CrossTenant-Network-Message-Id: ba8a10f7-8e77-4801-bc5f-08de9f246d21
X-MS-Exchange-CrossTenant-Id: e764c36b-012e-4216-910d-8fd16283182d
X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=e764c36b-012e-4216-910d-8fd16283182d;Ip=[4.79.107.243];Helo=[usbth1es003.ebgroup.elektrobit.com]
X-MS-Exchange-CrossTenant-AuthAs: Internal
X-MS-Exchange-CrossTenant-AuthSource: TreatMessagesAsInternal-DS2PEPF00003441.namprd04.prod.outlook.com
X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem
X-MS-Exchange-Transport-CrossTenantHeadersStamped: SA6PR08MB10377
X-purgate-ID: tlsNG-4011c0/1776720859-81B878B7-49AFD179/0/0
X-purgate-type: clean
X-purgate-size: 5044

This commit moves the altp2m_get_altp2m and altp2m_set_altp2m functions to
the common code. This make sit possible to use them in other common
routines (namely, altp2m_vcpu_{initialise,destroy}).

This commit contains only code movement, and no change in functionality is
intended.

This is commit 1/4 of the altp2m_{get,set}_altp2m phase.

Signed-off-by: Rose Spangler <Rose.Spangler@elektrobit.com>
---
v6: Introduced this patch.
---
 xen/arch/x86/include/asm/altp2m.h | 35 -------------------------
 xen/arch/x86/include/asm/domain.h |  2 --
 xen/common/altp2m.c               |  1 -
 xen/include/xen/altp2m.h          | 43 +++++++++++++++++++++++++++++++
 4 files changed, 43 insertions(+), 38 deletions(-)

diff --git a/xen/arch/x86/include/asm/altp2m.h b/xen/arch/x86/include/asm/altp2m.h
index 13017525a62f..a1b078783b3e 100644
--- a/xen/arch/x86/include/asm/altp2m.h
+++ b/xen/arch/x86/include/asm/altp2m.h
@@ -64,39 +64,6 @@ static inline uint16_t altp2m_vcpu_idx(const struct vcpu *v)
  * Alternate p2m: shadow p2m tables used for alternate memory views
  */
 
-/* get current alternate p2m table */
-static inline struct p2m_domain *altp2m_get_altp2m(struct vcpu *v)
-{
-    unsigned int index = vcpu_altp2m(v).p2midx;
-
-    if ( index == INVALID_ALTP2M )
-        return NULL;
-
-    BUG_ON(index >= v->domain->nr_altp2m);
-
-    return v->domain->altp2m_p2m[index];
-}
-
-/* set current alternate p2m table */
-static inline bool altp2m_set_altp2m(struct vcpu *v, unsigned int idx)
-{
-    struct p2m_domain *orig;
-
-    BUG_ON(idx >= v->domain->nr_altp2m);
-
-    if ( idx == vcpu_altp2m(v).p2midx )
-        return false;
-
-    orig = altp2m_get_altp2m(v);
-    BUG_ON(!orig);
-    atomic_dec(&orig->active_vcpus);
-
-    vcpu_altp2m(v).p2midx = idx;
-    atomic_inc(&v->domain->altp2m_p2m[idx]->active_vcpus);
-
-    return true;
-}
-
 /* Switch alternate p2m for a single vcpu */
 bool altp2m_switch_vcpu_by_id(struct vcpu *v, unsigned int idx);
 
@@ -178,8 +145,6 @@ static inline int _altp2m_get_effective_entry(struct p2m_domain *ap2m,
         _altp2m_get_effective_entry(ap2m, gfn, mfn, t, a)
 
 /* Only declaration is needed. DCE will optimise it out when linking. */
-struct p2m_domain *altp2m_get_altp2m(struct vcpu *v);
-bool altp2m_set_altp2m(struct vcpu *v, unsigned int idx);
 uint16_t altp2m_vcpu_idx(const struct vcpu *v);
 void altp2m_vcpu_initialise(struct vcpu *v);
 void altp2m_vcpu_destroy(struct vcpu *v);
diff --git a/xen/arch/x86/include/asm/domain.h b/xen/arch/x86/include/asm/domain.h
index f8038087e612..72460e38f581 100644
--- a/xen/arch/x86/include/asm/domain.h
+++ b/xen/arch/x86/include/asm/domain.h
@@ -277,8 +277,6 @@ struct paging_vcpu {
 #define MAX_NR_ALTP2M   MAX_EPTP
 #define MAX_NESTEDP2M   10
 
-#define INVALID_ALTP2M  0xffff
-
 struct p2m_domain;
 struct time_scale {
     int shift;
diff --git a/xen/common/altp2m.c b/xen/common/altp2m.c
index 989d8bdcb923..a731ad7cdab8 100644
--- a/xen/common/altp2m.c
+++ b/xen/common/altp2m.c
@@ -5,7 +5,6 @@
 #include <xen/xvmalloc.h>
 
 #include <asm/altp2m.h>
-#include <asm/p2m.h>
 
 #include <public/hvm/params.h>
 
diff --git a/xen/include/xen/altp2m.h b/xen/include/xen/altp2m.h
index 238c7a935586..58e74be6deb0 100644
--- a/xen/include/xen/altp2m.h
+++ b/xen/include/xen/altp2m.h
@@ -8,6 +8,10 @@
 
 #include <public/hvm/hvm_op.h>
 
+#include <asm/p2m.h>
+
+#define INVALID_ALTP2M  0xffff
+
 /*
  * Common alternate p2m declarations that need to be visible
  * regardless of CONFIG_ALTP2M
@@ -27,6 +31,41 @@ static inline bool altp2m_active(const struct domain *d)
     return d->altp2m_active;
 }
 
+#ifdef CONFIG_X86
+/* get current alternate p2m table */
+static inline struct p2m_domain *altp2m_get_altp2m(struct vcpu *v)
+{
+    unsigned int index = vcpu_altp2m(v).p2midx;
+
+    if ( index == INVALID_ALTP2M )
+        return NULL;
+
+    BUG_ON(index >= v->domain->nr_altp2m);
+
+    return v->domain->altp2m_p2m[index];
+}
+
+/* set current alternate p2m table */
+static inline bool altp2m_set_altp2m(struct vcpu *v, unsigned int idx)
+{
+    struct p2m_domain *orig;
+
+    BUG_ON(idx >= v->domain->nr_altp2m);
+
+    if ( idx == vcpu_altp2m(v).p2midx )
+        return false;
+
+    orig = altp2m_get_altp2m(v);
+    BUG_ON(!orig);
+    atomic_dec(&orig->active_vcpus);
+
+    vcpu_altp2m(v).p2midx = idx;
+    atomic_inc(&v->domain->altp2m_p2m[idx]->active_vcpus);
+
+    return true;
+}
+#endif
+
 int do_altp2m_op(XEN_GUEST_HANDLE_PARAM(void) arg);
 
 #else /* CONFIG_ALTP2M */
@@ -41,6 +80,10 @@ static inline int do_altp2m_op(XEN_GUEST_HANDLE_PARAM(void) arg)
     return -EOPNOTSUPP;
 }
 
+/* Only declaration is needed. DCE will optimise it out when linking. */
+struct p2m_domain *altp2m_get_altp2m(struct vcpu *v);
+bool altp2m_set_altp2m(struct vcpu *v, unsigned int idx);
+
 #endif /* CONFIG_ALTP2M */
 
 #endif /* __XEN_ALTP2M_H__ */
-- 
2.34.1



From xen-devel-bounces@lists.xenproject.org Mon Apr 20 21:35:50 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 20 Apr 2026 21:35:50 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1288108.1568447 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wEwHV-0000nS-Qh; Mon, 20 Apr 2026 21:35:49 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1288108.1568447; Mon, 20 Apr 2026 21:35: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 1wEwHV-0000nL-Nu; Mon, 20 Apr 2026 21:35:49 +0000
Received: by outflank-mailman (input) for mailman id 1288108;
 Mon, 20 Apr 2026 21:35:48 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <Rose.Spangler@elektrobit.com>) id 1wEwHU-0000nA-D6
 for xen-devel@lists.xenproject.org; Mon, 20 Apr 2026 21:35:48 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wEwHT-00CDNp-Q1
 for xen-devel@lists.xenproject.org; Mon, 20 Apr 2026 23:35:47 +0200
Received: from [10.42.69.2] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <Rose.Spangler@elektrobit.com>)
 id 69e69c0c-2eae-0a2a0a5409dd-0a2a450283ce-28
 for <xen-devel@lists.xenproject.org>; Mon, 20 Apr 2026 23:35:47 +0200
Received: from [40.93.196.138]
 (helo=SA9PR02CU001.outbound.protection.outlook.com)
 by tlsNG-720697.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.1)
 (envelope-from <Rose.Spangler@elektrobit.com>)
 id 69e69bba-af86-0a2a45020019-285dc48a8c50-3
 for <xen-devel@lists.xenproject.org>; Mon, 20 Apr 2026 23:33:47 +0200
Received: from BY1P220CA0049.NAMP220.PROD.OUTLOOK.COM (2603:10b6:a03:59e::15)
 by SA1PR08MB972883.namprd08.prod.outlook.com (2603:10b6:806:4c6::18)
 with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9818.32; Mon, 20 Apr
 2026 21:33:44 +0000
Received: from SJ1PEPF000023D2.namprd02.prod.outlook.com
 (2603:10b6:a03:59e:cafe::10) by BY1P220CA0049.outlook.office365.com
 (2603:10b6:a03:59e::15) with Microsoft SMTP Server (version=TLS1_3,
 cipher=TLS_AES_256_GCM_SHA384) id 15.20.9791.48 via Frontend Transport; Mon,
 20 Apr 2026 21:33:43 +0000
Received: from usbth1es003.ebgroup.elektrobit.com (4.79.107.243) by
 SJ1PEPF000023D2.mail.protection.outlook.com (10.167.244.9) with Microsoft
 SMTP Server (version=TLS1_3, cipher=TLS_AES_256_GCM_SHA384) id 15.20.9791.48
 via Frontend Transport; Mon, 20 Apr 2026 21:33:43 +0000
Received: from usbth1es003 (localhost [127.0.0.1])
 by usbth1es003.ebgroup.elektrobit.com (Postfix) with SMTP id 4fzzJ71Vrkz1wdN; 
 Mon, 20 Apr 2026 14:33:43 -0700 (PDT)
Received: from CH4PR07CU001.outbound.protection.outlook.com
 (mail-ch4pr07cu00106.outbound.protection.outlook.com [40.93.20.102])
 (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)
 key-exchange secp384r1 server-signature RSA-PSS (2048 bits) server-digest
 SHA256) (No client certificate requested)
 by usbth1es003.ebgroup.elektrobit.com (Postfix) with ESMTPS;
 Mon, 20 Apr 2026 14:33:42 -0700 (PDT)
Received: from SJ0PR05CA0206.namprd05.prod.outlook.com (2603:10b6:a03:330::31)
 by BY3PR08MB7073.namprd08.prod.outlook.com (2603:10b6:a03:354::16)
 with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9818.33; Mon, 20 Apr
 2026 21:33:39 +0000
Received: from SJ1PEPF000026C4.namprd04.prod.outlook.com
 (2603:10b6:a03:330:cafe::b4) by SJ0PR05CA0206.outlook.office365.com
 (2603:10b6:a03:330::31) with Microsoft SMTP Server (version=TLS1_3,
 cipher=TLS_AES_256_GCM_SHA384) id 15.20.9791.48 via Frontend Transport; Mon,
 20 Apr 2026 21:33:39 +0000
Received: from denue6es012.ebgroup.elektrobit.com (213.95.148.172) by
 SJ1PEPF000026C4.mail.protection.outlook.com (10.167.244.101) with Microsoft
 SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id
 15.20.9791.48 via Frontend Transport; Mon, 20 Apr 2026 21:33:37 +0000
Received: from ubuntu.localdomain (10.10.178.50) by
 denue6es012.ebgroup.elektrobit.com (10.243.160.140) with Microsoft SMTP
 Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id
 15.2.2562.35; Mon, 20 Apr 2026 23:33:34 +0200
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@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=elektrobit.com header.i="@elektrobit.com" header.h="From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck"; dkim=pass header.s=selector1 header.d=elektrobit.com header.i="@elektrobit.com" header.h="From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck"
ARC-Seal: i=2; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=pass;
 b=im6LliEQZ3m2AR2HF9hF1s7UQpm9HNlH+h5Tu2HuE07+r/2f3etESXKmVGzEVp/p9rgePwxwUXca2CKl1iTPQzfTR5EkhqPcJ1/wi6/c+VZ4Sehs8xyqqeXYcOM5VfZLd9vRetRiHCHaUdGc+pMnxJk512Oos5T9r52BlAFfhFUFKZEho4qjBE4PrAqkW98pnDMywsOvUrxd99mZt5OFZrqdqQ0C2ItW8dvygxWNA8rZlow2sERQ5YzBpGNlmwLM1sUwDmM94FCDr7pxj3qMB0zflN/zD7OjtehTzHA6YC848ka+dtVj9F1v4QuEvvnVo89vejJZ9iE/ifOUoSHuCw==
ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com;
 s=arcselector10001;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1;
 bh=0lp53s3cEzb9Nvz/oAdVE45KuMPihoHv/HOfldJHvpI=;
 b=ESQoQIwe8euF5LIVQghc6IfjENqzcJk76jBUvhyI6hpcb2OhKQCyXhLgNBmA37kemK2LTT6FHCcDByD0jj5+gqS1gbB+OosetrQJ1L5zUH7LZIbhKPkSqoMGYsjnoPS1Y3f/drnex9pbmSyTIdd6ct1y3L6c/Q/ou7lA3EOCM+R1A6Xl1pzKeHIdlhJCTzwrj+mvaL1XNUJHRK8/nutBJZ37rstbkqdAeA1wVg3Efb0K04FokHhEXDZTuVBGungM9DlmIhTD3N+/8O7bXpnQ3NteltBYm1ZqfKRQGTNC91RzQwZqu/bIpkZxDTtrMhTodh8QuKmuUTxvKAsFEthSLg==
ARC-Authentication-Results: i=2; mx.microsoft.com 1; spf=pass (sender ip is
 40.93.20.102) smtp.rcpttodomain=amd.com smtp.mailfrom=elektrobit.com;
 dmarc=pass (p=quarantine sp=none pct=100) action=none
 header.from=elektrobit.com; dkim=pass (signature was verified)
 header.d=elektrobit.com; arc=pass (0 oda=1 ltdi=1
 spf=[1,1,smtp.mailfrom=elektrobit.com]
 dmarc=[1,1,header.from=elektrobit.com])
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=elektrobit.com;
 s=selector1;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck;
 bh=0lp53s3cEzb9Nvz/oAdVE45KuMPihoHv/HOfldJHvpI=;
 b=H8/hFK6Ut/PXlgIFGIVC5syrzlfuJoFy6mSaEAnuE3fTo3FcjtySmJDtDEAFV4N0snSSgRtKfI1CYVj2BNv9a2nCLyuIN9a1Sx5U4+6CKdqAhPBK+/Z1oCcFOl+DRGpUycy4YAj+EoGbgjQo4hd3AtvoVia+ekSCH6v0YClZR3A=
X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 40.93.20.102)
 smtp.mailfrom=elektrobit.com; dkim=pass (signature was verified)
 header.d=elektrobit.com;dmarc=pass action=none header.from=elektrobit.com;
Received-SPF: Pass (protection.outlook.com: domain of elektrobit.com
 designates 40.93.20.102 as permitted sender) receiver=protection.outlook.com;
 client-ip=40.93.20.102; helo=CH4PR07CU001.outbound.protection.outlook.com;
 pr=C
ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none;
 b=Jf9tnIA8AwpI8imNcSBLeboRng7KeUMit5GD9SlEZgGkXORDoCFQ0vPKShWICtEueBTzPCHxQ/yrvR5QMD1FSh0Em/0KDnRw7PfKVO15uyHssqhggEKBSebgoqcH6WrV5+ga95wg9a+UoVsuYsqWK+fbTElGwqAkJtADwy8ZYSoXjy3FpIgN5liuHXaxHbCvhEOOeyN9vOTMQvMf790hYGvTLElP44TqePpJ4ySYxsE+HJX39aH2XxsGSt+HHQSwxT9W5kmZinM9CPpnYrWZZccvI2Mn0yByA1jKUaJNPWrwiHYsMvhG9SVro4imJsKscdNNWTfrLw++6g5KWFQYow==
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com;
 s=arcselector10001;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1;
 bh=0lp53s3cEzb9Nvz/oAdVE45KuMPihoHv/HOfldJHvpI=;
 b=zKR8dxAoXwv6XmvmDUKm89I+qDmihjxzxr9bKcgBqRhlf67TEanfnn6JeNVcpBf0VPRywUDWG8DBvj18fhB7uxbTXaKmiU6R/RaPpFKyAoKXXr+Gr0YuIC2h11TQyFFR/z7E72SJ9prRccA7eV44asqS/Q+C7h8mRa3gN+VdYReuPsve5lGpNK7tTjFs46S+Ct2muJdsT2NHEZcQLhRsCFXBSiPAaXmZgafcYZp4rJzZvlbEXagVMijbn+srlgN5SYx9MkUt7x+OpncVY0mq2AteqIlAspQGgiaC2Y/CUyhRMCGMxfIwDlFH2vYBvslj/sNx/7Y+8ptxmjwNWhqztQ==
ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass (sender ip is
 213.95.148.172) smtp.rcpttodomain=lists.xenproject.org
 smtp.mailfrom=elektrobit.com; dmarc=pass (p=quarantine sp=none pct=100)
 action=none header.from=elektrobit.com; dkim=none (message not signed);
 arc=none (0)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=elektrobit.com;
 s=selector1;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck;
 bh=0lp53s3cEzb9Nvz/oAdVE45KuMPihoHv/HOfldJHvpI=;
 b=H8/hFK6Ut/PXlgIFGIVC5syrzlfuJoFy6mSaEAnuE3fTo3FcjtySmJDtDEAFV4N0snSSgRtKfI1CYVj2BNv9a2nCLyuIN9a1Sx5U4+6CKdqAhPBK+/Z1oCcFOl+DRGpUycy4YAj+EoGbgjQo4hd3AtvoVia+ekSCH6v0YClZR3A=
X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 213.95.148.172)
 smtp.mailfrom=elektrobit.com; dkim=none (message not signed)
 header.d=none;dmarc=pass action=none header.from=elektrobit.com;
Received-SPF: Pass (protection.outlook.com: domain of elektrobit.com
 designates 213.95.148.172 as permitted sender)
 receiver=protection.outlook.com; client-ip=213.95.148.172;
 helo=denue6es012.ebgroup.elektrobit.com; pr=C
From: Rose Spangler <Rose.Spangler@elektrobit.com>
To: <xen-devel@lists.xenproject.org>
CC: Rose Spangler <Rose.Spangler@elektrobit.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.pau@citrix.com>, Stefano Stabellini <sstabellini@kernel.org>
Subject: [RFC PATCH v6 43/43] arm/p2m: Add support for HVMOP_altp2m_set_domain_state
Date: Mon, 20 Apr 2026 17:32:06 -0400
Message-ID: <20260420213206.208750-44-Rose.Spangler@elektrobit.com>
X-Mailer: git-send-email 2.34.1
In-Reply-To: <20260420213206.208750-1-Rose.Spangler@elektrobit.com>
References: <20260420213206.208750-1-Rose.Spangler@elektrobit.com>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit
Content-Type: text/plain
X-Originating-IP: [10.10.178.50]
X-ClientProxiedBy: denue6es012.ebgroup.elektrobit.com (10.243.160.140) To
 denue6es012.ebgroup.elektrobit.com (10.243.160.140)
X-EOPAttributedMessage: 1
X-MS-Exchange-SkipListedInternetSender:
 ip=[213.95.148.172];domain=denue6es012.ebgroup.elektrobit.com
X-MS-TrafficTypeDiagnostic:
	SJ1PEPF000026C4:EE_|BY3PR08MB7073:EE_|SJ1PEPF000023D2:EE_|SA1PR08MB972883:EE_
X-MS-Office365-Filtering-Correlation-Id: 7bfcb31a-e5ab-4865-8208-08de9f247f72
X-SM-outgoing: yes
X-MS-Exchange-SenderADCheck: 1
X-MS-Exchange-AntiSpam-Relay: 0
X-Microsoft-Antispam-Untrusted:
 BCL:0;ARA:13230040|36860700016|376014|82310400026|1800799024|18002099003|22082099003|56012099003;
X-Microsoft-Antispam-Message-Info-Original:
 =?us-ascii?Q?XV5aBKWlpb6NDi+PEZFfUtbkf2TWx49dxL1LnOR71yGAINOFiEHhxv94KKjm?=
 =?us-ascii?Q?TAeWPdeHGXuuiB73DnDguIjppQqwfl55Uv1Atrv1E3qv4IUO6HkF+3TvsOP+?=
 =?us-ascii?Q?zfp9oPWIYNBEiE/FZcCSuPPJQ4lafeu7F+Ch9sJFkgXnuWZzXaJMiyTeo7S2?=
 =?us-ascii?Q?biDpHRho+3dPEpGbbn5krfHtesla2H9fOAeOyoIQ5jw9GgES0wSNe7nsrIOy?=
 =?us-ascii?Q?zUdfUlcx8GxpJ+rVoO2frnrUF0s7hiokmM/9MhDMv0vKEs0C00vwMCloivVI?=
 =?us-ascii?Q?MJIUqny8+mgrpL9XYZbOFeCULELpLF3FIUZEcX+LBLCThaMiJtVhYYgxK+9i?=
 =?us-ascii?Q?TpSocLuFWgSv4C8d1dzd4M5MkPPFRXuFWAYAl15aE4ley2BZ2p+oyp7MP7VR?=
 =?us-ascii?Q?TLWYR+rPaqKkP8dOdIzpJMfqsQ7mPlxD/nn9m2jxdlzl7wluP4b4UiZopsw0?=
 =?us-ascii?Q?zDSCCRwQNzzS7ZbqDV1nf0p6Pec2zOrmEluKfCcJvgAoUNs+9W/dehDhws7o?=
 =?us-ascii?Q?9aMj2Bk3cjOc32aTB7pPiloCz6LDZGPA8qys4YtxBxUbBzlicmwwUuPd4T9K?=
 =?us-ascii?Q?wXK86PBM1X3+9ybljSP7Q3GAFdqGBjMfP9+qrgTTPCyKFxZkFLR6CBYt06zX?=
 =?us-ascii?Q?oaKYsOAj7xITVbiPzIL5/BvZAZaloQmSty0d/Njc7pTDOL2fZHGCww3+YWvf?=
 =?us-ascii?Q?vmtMmFNlb72EcrIIH0pNuejaTWzj+QiK1NM9a20h3hq8fvEZHeBFCUTYtVOm?=
 =?us-ascii?Q?BjhMNxJG0G/VdEXC3wOJKZKzjJFBwmLaeis32CfJpaAhrk1AmuzZjpDbWy37?=
 =?us-ascii?Q?Ky9rrHFY66KcqDLlFf1LHSwIKjpPxMOWauljDDz1bpGwe4RjTu93SPlgrg4g?=
 =?us-ascii?Q?BuOqbDLNvUj/HsRuPBwAD3CkDUb2QTvJMDwzWb6EiuUxvb1bjsq868Uzg/Pg?=
 =?us-ascii?Q?30g3KAYkvPEHW05O7lOgBdU1ekprEh/W3pMdqDxXsoiS3ANdcv49XO6CXfwg?=
 =?us-ascii?Q?P61oGXuq48iX8ZCPGs77jv0J1OpohyIB6B4zHjFIzC2uBFwYTvDM+ZI93BpC?=
 =?us-ascii?Q?jndUdTcw/9Ryc/V6F/6NGtZZUsCi8iCpu4ZGVPmElYlDbMFn7EZiWe5vYV42?=
 =?us-ascii?Q?94VhiRcfBVfziutLB7kGp9yfmQbUPasbJAq+4/YTMDjSihkt3zEOiD8x2TTv?=
 =?us-ascii?Q?AFtUg/aUhfIb+sWb3vcWBhDy5jb9hYwpZ1Hw1ZWJ49Gp0wPSfhcggYFzGOc?=
 =?us-ascii?Q?=3D?=
X-Forefront-Antispam-Report-Untrusted:
 CIP:213.95.148.172;CTRY:DE;LANG:en;SCL:1;SRV:;IPV:CAL;SFV:NSPM;H:denue6es012.ebgroup.elektrobit.com;PTR:eth1-fw1-nbg6.eb.noris.de;CAT:NONE;SFS:(13230040)(36860700016)(376014)(82310400026)(1800799024)(18002099003)(22082099003)(56012099003);DIR:OUT;SFP:1102;
X-Exchange-RoutingPolicyChecked:
 ExNxAdtuiKBPTX2JDOR+q+vPH+FIqED8FhsC0WEwfEWRYWT/+nwC7W470VTuAKTXZDvph9sgzjInGZZ2tmiY2z9EPbBBusfDZdmMfuZS4e8C3IzMkv8cLRsdi9hMl6Ifv4aG3WOAwKB5zxW+skHQFr8aGJ38rjVEUjkBxZaO+J25drBtj2ZlX21W6oDi8qjdQSpgquIkzgjTL0HqIxJihonyQOw0WljnHWBc5nB48nDz4VTNo9/IyAFruri87jVkomJfNR09U7QX7D4mDJl98+tEf79Qmd/WWT75a+4Ra2Joifvsw9JY0D/sum8Wzi9EH64C+PKAdRDKYf3zONIWRA==
X-MS-Exchange-Transport-CrossTenantHeadersStamped: BY3PR08MB7073
X-MS-Exchange-SkipListedInternetSender:
 ip=[40.93.20.102];domain=CH4PR07CU001.outbound.protection.outlook.com
X-MS-Exchange-ExternalOriginalInternetSender:
 ip=[40.93.20.102];domain=CH4PR07CU001.outbound.protection.outlook.com
X-MS-Exchange-Transport-CrossTenantHeadersStripped:
 SJ1PEPF000023D2.namprd02.prod.outlook.com
X-MS-PublicTrafficType: Email
X-MS-Office365-Filtering-Correlation-Id-Prvs:
	abed3dca-89bb-4aa2-7d3e-08de9f247c07
X-Microsoft-Antispam:
	BCL:0;ARA:13230040|36860700016|1800799024|376014|14060799003|156008|82310400026|35042699022|56012099003|18002099003|22082099003;
X-Microsoft-Antispam-Message-Info:
	=?us-ascii?Q?CzUBfs88kWSB2eNUE2NR9pK/rkKUp46uknjaT4UiI9DlbuhTI7LrW5VnqWjl?=
 =?us-ascii?Q?mv0r+4Pcvl+dDJTZ9m8CwCfnq19ecOzcTAd5KX8JC5IjolyW/XegekfHsr15?=
 =?us-ascii?Q?SUK9fPgB7oNKi8XGEmQwq3v98VrOvjdGTTt4uM9PL3fx+VOtooX3byr2M4BI?=
 =?us-ascii?Q?XLXHmHjmwcxPMrmaGdFF0IsIcm1eZTI3ZkbohJg/thtAPMQ8yEp3RuLb89e9?=
 =?us-ascii?Q?ZlSHO6z16bEJJQCKI6RWgT/ze/Nuly4BjXP/KIjc12fwlwmHeRvsdxUOM9cX?=
 =?us-ascii?Q?b9CmVJSf58QXHpjTYYlsHvZuc1HqQUSSibDem+Am4XTgP4NkmPM4B03/Rhu9?=
 =?us-ascii?Q?KykRUM6ZviRQZKB8XQDVbpKEDlaIJdKNtll4u0x1lmPiHuxqq1s59zFhYwWZ?=
 =?us-ascii?Q?aldfL9kvPxFcSKxGCxUw+MpWW195h4sHUGkunRZ0o5BFERgpOCV5k5awVEHV?=
 =?us-ascii?Q?gHP/eglXm631w1ydSHV7HLkNqHwTXKXzjXdI3U38sl65W9k8RVcmw73dECBV?=
 =?us-ascii?Q?E3t5MtnuNxpn/FCtdzVGMhxO4FD9TwoO61WigybK9pAAURyRcknHWcDurrfR?=
 =?us-ascii?Q?VIQimmMk6JlUZ8bCuWKj2Op+/k55m/lwannbrDHLtZ6G9M4J/EwEHaXes+6p?=
 =?us-ascii?Q?4iHH/H65jpbJFvoqXnW2Ku0RWbNEMti36l5m+IzFpRuai25ywKTV6YA/rRZT?=
 =?us-ascii?Q?VwHsr5eh46bxzK+YM9v35fMp2FwLnqypM6xKMbbuMzlA79vHVEt1lDrGR+7B?=
 =?us-ascii?Q?zbXhUfi/NbS3pOO9cuNnf9Z8jqhx055MKTLf6HrL+wgmLKAXVc4sfBaJ1buR?=
 =?us-ascii?Q?/V7JOx5VvFdNxpxSqHr2AumMH/7PvZQonGIy8PbGkNsgPpNgJ4+EeQ4r7Lrx?=
 =?us-ascii?Q?HsNYUydteZDcYgI952n4ZdehnLPze678BgTX3aAja4iQ3Nce+9DHWFa3msJS?=
 =?us-ascii?Q?ZFPjUsYOF/lb5d0BmH3VRanacqVuM8paVG3iq3xhu3XByemh1RAzg1Z8zBTL?=
 =?us-ascii?Q?jZlDRzcjvwILFvV6TFeSoDluieMy0kOOu1HfvUKTpZSxFSyEp+wxKMnjyj4H?=
 =?us-ascii?Q?KkzgPKKoymVxxPMVMF+GrZBFFsIWwCtTU6/Mco8sNiSVhN7LMe8yGtMu3vYJ?=
 =?us-ascii?Q?oG0e+pfh9DKz5pp0c4fZF1+iebJIal1c4gpeof8Q2g/3TKWwaD+NJ9k9qam2?=
 =?us-ascii?Q?9SpQgaYM01Izgn2JfNdqNe3qtwg90anB5lyvDFzINYziDbKN/SqyCKl70Xo?=
 =?us-ascii?Q?=3D?=
X-Forefront-Antispam-Report:
	CIP:4.79.107.243;CTRY:US;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:CH4PR07CU001.outbound.protection.outlook.com;PTR:mail-ch4pr07cu00106.outbound.protection.outlook.com;CAT:NONE;SFS:(13230040)(36860700016)(1800799024)(376014)(14060799003)(156008)(82310400026)(35042699022)(56012099003)(18002099003)(22082099003);DIR:OUT;SFP:1102;
X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1
X-MS-Exchange-AntiSpam-MessageData-0:
	UksYP3b4oDVxCbqelWpG9YZWPvxfoEGNQOm+ff+ywnt8jmVcc22RciV/dBPRK1lJpKL5/TJnZ5MTzyvhdCLtmoz5F5NmanUuCrzkDwaf8qyxb2P0rrp0hdD/7Qv+6PAMjumzWTdmbbGBN32nApcqEzToWqAZvDT8KWypd2+MbuTcDHZNhhVbFxgOy9ih8w9+N+tisMy5ygWZKnJFiJeZUQqk1c0gfka7tvhsszUmsZnVhUzEGIE4paLbTtxumh1fmGAg1UYcNd5kKzRgMWj7bVlMAYKX3uOxWzDs/vwy57PC/NnmR6OWgAXuGgbGKe/2p3k2M5wNIWSwGoVI5tY/glv1e4GyohQQfbJNWlMGXrsQnXs1lNI2okM/gHXOfLwd0msR0PgUaRLTRgFP+Q/YvsIy/ln+AqnK2jdMybj6M8TvSnEpJKVnlk6L2qHXYAqm
X-OriginatorOrg: elektrobit.com
X-MS-Exchange-CrossTenant-OriginalArrivalTime: 20 Apr 2026 21:33:43.6478
 (UTC)
X-MS-Exchange-CrossTenant-Network-Message-Id: 7bfcb31a-e5ab-4865-8208-08de9f247f72
X-MS-Exchange-CrossTenant-Id: e764c36b-012e-4216-910d-8fd16283182d
X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=e764c36b-012e-4216-910d-8fd16283182d;Ip=[4.79.107.243];Helo=[usbth1es003.ebgroup.elektrobit.com]
X-MS-Exchange-CrossTenant-AuthAs: Internal
X-MS-Exchange-CrossTenant-AuthSource: TreatMessagesAsInternal-SJ1PEPF000023D2.namprd02.prod.outlook.com
X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem
X-MS-Exchange-Transport-CrossTenantHeadersStamped: SA1PR08MB972883
X-purgate-ID: tlsNG-720697/1776720827-8276A161-8699A42F/0/0
X-purgate-type: clean
X-purgate-size: 1344

This commit enables the HVMOP_altp2m_set_domain_state command on ARM, since
all prerequisite functions have been implemented. This makes it possible
to activate altp2m on a domain.

This is commit 1/1 of the set_domain_state phase.

Signed-off-by: Rose Spangler <Rose.Spangler@elektrobit.com>
---
v6: Introduced this patch.

    This patch replaces the "arm/p2m: Add HVMOP_altp2m_set_domain_state"
    patch from the v4/v5 patch series.
---
 xen/common/altp2m.c | 4 +++-
 1 file changed, 3 insertions(+), 1 deletion(-)

diff --git a/xen/common/altp2m.c b/xen/common/altp2m.c
index d980ebed08ab..951e56a2aba5 100644
--- a/xen/common/altp2m.c
+++ b/xen/common/altp2m.c
@@ -254,17 +254,18 @@ int do_altp2m_op(
         rc = __copy_to_guest(arg, &a, 1) ? -EFAULT : 0;
         break;
 
-#ifdef CONFIG_X86
     case HVMOP_altp2m_set_domain_state:
     {
         struct vcpu *v;
         bool ostate;
 
+#if defined(CONFIG_X86) && defined(CONFIG_HVM)
         if ( nestedhvm_enabled(d) )
         {
             rc = -EINVAL;
             break;
         }
+#endif
 
         rc = domain_pause_except_self(d);
         if ( rc )
@@ -295,6 +296,7 @@ int do_altp2m_op(
         break;
     }
 
+#ifdef CONFIG_X86
     case HVMOP_altp2m_vcpu_enable_notify:
     {
         struct vcpu *v;
-- 
2.34.1



From xen-devel-bounces@lists.xenproject.org Mon Apr 20 21:36:49 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 20 Apr 2026 21:36:49 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1288129.1568457 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wEwIT-0001Of-8e; Mon, 20 Apr 2026 21:36:49 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1288129.1568457; Mon, 20 Apr 2026 21:36: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 1wEwIT-0001OY-5n; Mon, 20 Apr 2026 21:36:49 +0000
Received: by outflank-mailman (input) for mailman id 1288129;
 Mon, 20 Apr 2026 21:36:48 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <Rose.Spangler@elektrobit.com>) id 1wEwIR-0001OK-Nm
 for xen-devel@lists.xenproject.org; Mon, 20 Apr 2026 21:36:48 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wEwIR-00CCkp-4P
 for xen-devel@lists.xenproject.org; Mon, 20 Apr 2026 23:36:47 +0200
Received: from [10.42.69.2] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <Rose.Spangler@elektrobit.com>)
 id 69e69c66-e002-0a2a0a5209dd-0a2a4502c436-4
 for <xen-devel@lists.xenproject.org>; Mon, 20 Apr 2026 23:36:47 +0200
Received: from [52.101.62.143]
 (helo=DM5PR21CU001.outbound.protection.outlook.com)
 by tlsNG-720697.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.1)
 (envelope-from <Rose.Spangler@elektrobit.com>)
 id 69e69b7d-af86-0a2a45020019-34653e8fe92e-3
 for <xen-devel@lists.xenproject.org>; Mon, 20 Apr 2026 23:32:46 +0200
Received: from SJ0PR13CA0043.namprd13.prod.outlook.com (2603:10b6:a03:2c2::18)
 by DM6PR08MB6426.namprd08.prod.outlook.com (2603:10b6:5:1ec::18) with
 Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9818.32; Mon, 20 Apr
 2026 21:32:37 +0000
Received: from CO1PEPF000066E8.namprd05.prod.outlook.com
 (2603:10b6:a03:2c2:cafe::b4) by SJ0PR13CA0043.outlook.office365.com
 (2603:10b6:a03:2c2::18) with Microsoft SMTP Server (version=TLS1_3,
 cipher=TLS_AES_256_GCM_SHA384) id 15.20.9791.48 via Frontend Transport; Mon,
 20 Apr 2026 21:32:37 +0000
Received: from usbth1es003.ebgroup.elektrobit.com (4.79.107.243) by
 CO1PEPF000066E8.mail.protection.outlook.com (10.167.249.6) with Microsoft
 SMTP Server (version=TLS1_3, cipher=TLS_AES_256_GCM_SHA384) id 15.20.9791.48
 via Frontend Transport; Mon, 20 Apr 2026 21:32:37 +0000
Received: from usbth1es003 (localhost [127.0.0.1])
 by usbth1es003.ebgroup.elektrobit.com (Postfix) with SMTP id 4fzzGr6yj3z1wdP; 
 Mon, 20 Apr 2026 14:32:36 -0700 (PDT)
Received: from DM2PR04CU003.outbound.protection.outlook.com
 (mail-dm2pr04cu00301.outbound.protection.outlook.com [40.93.13.57])
 (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)
 key-exchange secp384r1 server-signature RSA-PSS (2048 bits) server-digest
 SHA256) (No client certificate requested)
 by usbth1es003.ebgroup.elektrobit.com (Postfix) with ESMTPS;
 Mon, 20 Apr 2026 14:32:36 -0700 (PDT)
Received: from SJ0PR13CA0194.namprd13.prod.outlook.com (2603:10b6:a03:2c3::19)
 by MWHPR08MB9870.namprd08.prod.outlook.com (2603:10b6:303:27b::5)
 with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9818.33; Mon, 20 Apr
 2026 21:32:30 +0000
Received: from SJ1PEPF000026C7.namprd04.prod.outlook.com
 (2603:10b6:a03:2c3:cafe::37) by SJ0PR13CA0194.outlook.office365.com
 (2603:10b6:a03:2c3::19) with Microsoft SMTP Server (version=TLS1_3,
 cipher=TLS_AES_256_GCM_SHA384) id 15.20.9791.48 via Frontend Transport; Mon,
 20 Apr 2026 21:32:30 +0000
Received: from denue6es012.ebgroup.elektrobit.com (213.95.148.172) by
 SJ1PEPF000026C7.mail.protection.outlook.com (10.167.244.104) with Microsoft
 SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id
 15.20.9791.48 via Frontend Transport; Mon, 20 Apr 2026 21:32:30 +0000
Received: from ubuntu.localdomain (10.10.178.50) by
 denue6es012.ebgroup.elektrobit.com (10.243.160.140) with Microsoft SMTP
 Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id
 15.2.2562.35; Mon, 20 Apr 2026 23:32:27 +0200
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@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=elektrobit.com header.i="@elektrobit.com" header.h="From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck"; dkim=pass header.s=selector1 header.d=elektrobit.com header.i="@elektrobit.com" header.h="From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck"
ARC-Seal: i=2; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=pass;
 b=joy9Ml+wBC/3JXP0D1STNGjUJuIev05TFrpO5oaqV0ckBiZpnS+NDsPWTN8q0Kd1zdLGaaWwcRY7Jecu06wXBiHveOkQJq0OmOPdS+Jvb50WLr7+11/pLtMB1sDkrO+Ax9LABDBg6wjHxzvnCcOaCIZ8FL5wpibS+3ChbKybr2RwYrNYRf4D0NC5nmfxJ5XV4ixu75bhsSH4T7zAl/rbUNEe6uw8UJ7YCEUwb39KgjBuEYPfGm3th1Qey6IBNQoyNQFPE0VU3LeXC5q4WNx4j0gvJ28zOpv6mNl1fpQFVJ3eKV/GcmRHzq+SngUrg8kiwyjybMrcfxqkh9iHoNUoiQ==
ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com;
 s=arcselector10001;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1;
 bh=ZmKInt9aDaXWoQsf+7PgzNCnu/gQkWKtbvxoqa67GlM=;
 b=ErxZwqq5x+P4BoHkqhO3PUGmL6oUc0a1JGKqVDJBATnEHZQrarlWdLrdSK0JjJ78DdQD9AGN8HwvGvW6iHyB9Or021DXacSf23a/PGXqJdnOeS81TTfsWKG/UdAJT5cPZVvQA9FgWtbW3hUYmXsOvxUgvHIZ/jR7lgm4OSSdDaUUwt15ahkbrVx+CpSR7amvbnlPy4GsqNDa92gvuOPdHwNjvqESHzlMjHwGqbJi1Pfph/JJZwhpz+L5N6h+d5acuHX/D2S5lHwTVuQ9tmH/rsg3sHQsKugIQx/pfwlfovUtbxYQ4AH2P1yT2ZVwmcuH6dkd72lBajvG1vKSraoIhQ==
ARC-Authentication-Results: i=2; mx.microsoft.com 1; spf=pass (sender ip is
 40.93.13.57) smtp.rcpttodomain=amd.com smtp.mailfrom=elektrobit.com;
 dmarc=pass (p=quarantine sp=none pct=100) action=none
 header.from=elektrobit.com; dkim=pass (signature was verified)
 header.d=elektrobit.com; arc=pass (0 oda=1 ltdi=1
 spf=[1,1,smtp.mailfrom=elektrobit.com]
 dmarc=[1,1,header.from=elektrobit.com])
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=elektrobit.com;
 s=selector1;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck;
 bh=ZmKInt9aDaXWoQsf+7PgzNCnu/gQkWKtbvxoqa67GlM=;
 b=zSBGDKwvLDT9C2izIOabWk6JCX+QMDn5E/UApmtRHrlWnbnHLoMJzmV9dc0iXfQyJMIam6VPv9QWwXTK1P2vnAOBxhWaUz0FIcWM+GJuZdyzJ64WvxGkbnlTcVc0724E6xyG5mFyRClLXBs1FG/oaOTBqkRrp+0OGWFNkaKY3KU=
X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 40.93.13.57)
 smtp.mailfrom=elektrobit.com; dkim=pass (signature was verified)
 header.d=elektrobit.com;dmarc=pass action=none header.from=elektrobit.com;
Received-SPF: Pass (protection.outlook.com: domain of elektrobit.com
 designates 40.93.13.57 as permitted sender) receiver=protection.outlook.com;
 client-ip=40.93.13.57; helo=DM2PR04CU003.outbound.protection.outlook.com;
 pr=C
ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none;
 b=B8u5VdPmhdocQulIx5cWf+JokJZcsxJLfulnl6ZE7bMyJmsDdsoCBbxnhMjjro58DG71uqP35B8WPF5N/gPyo25CXpj1mGDiluZIG3zjTO5JC2IscVBfNW/Gq9SugqfChWkpRq/m3p+X4gP9PYLVHu3xfKoYCpSqiXiTXdG6mwNFN9Mdqn7IBTPx8PQ/2gxwvoqGf9OZuTi2PQ6qZGv5NwENj+TZloEeyuJTE2IXZjp98ZxJq08BI6ogE7/wPMC6DK8GrGrms35F4wS98OcL7UyI5QFcjHh/qIQJD/1SCN5EWs3b1UJ1rCKHqMoaYPX+z376fQCH+v7YuBTvegvuGg==
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com;
 s=arcselector10001;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1;
 bh=ZmKInt9aDaXWoQsf+7PgzNCnu/gQkWKtbvxoqa67GlM=;
 b=COKLM0E/XxgYwosjbAAE/JTFqwnPMU+fS8oJ9N79Z3Upr0/9AHPHqseOOwsyQ03VZl/TBrVvtjZ6taRAY0AvuYcb4QDr7cqoPqF8bSBudbJ9z5/G5p5TxXFKCFp+CyfZuU+6fgE/twx2pZKa1SK3RKut79MrQlwOWEkD9jXwjGzGIHA1J/JiJHzXArK7LngshnMw3ud1xR9qeB0AlscNpqA8VXtyKtKQlT7JtFFEnl8hg1K0ri65YJtr0Hsuw1SLDRznMs4UQskGylboFf4kmvFc1ig4iypHgF0YzRLnboGcn6isPgTdHgCt36ZtlzA4ypkJV9hER15cr0b67y0SYA==
ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass (sender ip is
 213.95.148.172) smtp.rcpttodomain=lists.xenproject.org
 smtp.mailfrom=elektrobit.com; dmarc=pass (p=quarantine sp=none pct=100)
 action=none header.from=elektrobit.com; dkim=none (message not signed);
 arc=none (0)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=elektrobit.com;
 s=selector1;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck;
 bh=ZmKInt9aDaXWoQsf+7PgzNCnu/gQkWKtbvxoqa67GlM=;
 b=zSBGDKwvLDT9C2izIOabWk6JCX+QMDn5E/UApmtRHrlWnbnHLoMJzmV9dc0iXfQyJMIam6VPv9QWwXTK1P2vnAOBxhWaUz0FIcWM+GJuZdyzJ64WvxGkbnlTcVc0724E6xyG5mFyRClLXBs1FG/oaOTBqkRrp+0OGWFNkaKY3KU=
X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 213.95.148.172)
 smtp.mailfrom=elektrobit.com; dkim=none (message not signed)
 header.d=none;dmarc=pass action=none header.from=elektrobit.com;
Received-SPF: Pass (protection.outlook.com: domain of elektrobit.com
 designates 213.95.148.172 as permitted sender)
 receiver=protection.outlook.com; client-ip=213.95.148.172;
 helo=denue6es012.ebgroup.elektrobit.com; pr=C
From: Rose Spangler <Rose.Spangler@elektrobit.com>
To: <xen-devel@lists.xenproject.org>
CC: Rose Spangler <Rose.Spangler@elektrobit.com>, Jan Beulich
	<jbeulich@suse.com>, Andrew Cooper <andrew.cooper3@citrix.com>,
	=?UTF-8?q?Roger=20Pau=20Monn=C3=A9?= <roger.pau@citrix.com>, 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>, Tamas K Lengyel <tamas@tklengyel.com>
Subject: [RFC PATCH v6 02/43] altp2m: Move altp2m_active to common domain struct
Date: Mon, 20 Apr 2026 17:31:25 -0400
Message-ID: <20260420213206.208750-3-Rose.Spangler@elektrobit.com>
X-Mailer: git-send-email 2.34.1
In-Reply-To: <20260420213206.208750-1-Rose.Spangler@elektrobit.com>
References: <20260420213206.208750-1-Rose.Spangler@elektrobit.com>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit
Content-Type: text/plain
X-Originating-IP: [10.10.178.50]
X-ClientProxiedBy: denue6es012.ebgroup.elektrobit.com (10.243.160.140) To
 denue6es012.ebgroup.elektrobit.com (10.243.160.140)
X-EOPAttributedMessage: 1
X-MS-Exchange-SkipListedInternetSender:
 ip=[213.95.148.172];domain=denue6es012.ebgroup.elektrobit.com
X-MS-TrafficTypeDiagnostic:
	SJ1PEPF000026C7:EE_|MWHPR08MB9870:EE_|CO1PEPF000066E8:EE_|DM6PR08MB6426:EE_
X-MS-Office365-Filtering-Correlation-Id: fb8d7ef4-3707-4691-3a00-08de9f2457bd
X-SM-outgoing: yes
X-MS-Exchange-SenderADCheck: 1
X-MS-Exchange-AntiSpam-Relay: 0
X-Microsoft-Antispam-Untrusted:
 BCL:0;ARA:13230040|704162011799003|82310400026|7416014|36860700016|376014|1800799024|13003099007|56012099003|22082099003|18002099003;
X-Microsoft-Antispam-Message-Info-Original:
 =?us-ascii?Q?jqwX9pureH6+tVenENjCXs7vHU2VMVFkm/0eQuGmUNNi3g67P6yDamWNNnEp?=
 =?us-ascii?Q?FyDlqdRqHhREzIMqug4YNbrIaBmo0V3AX3ppzUXUknohYO4UJl/DnMBOy1dQ?=
 =?us-ascii?Q?EpBYC57/TQrcpE8iXEHjbXocIiS/ihvbvi7eHAlz1jSNHgTQgF7RTOjardPw?=
 =?us-ascii?Q?ZadEfybIYExajh2MicvB4z7ZptwoXiC+PH+kJXnh1KZIKfw1M55A3rJJbUBW?=
 =?us-ascii?Q?HFzxxWn45knwSzFzpkTIc3W+zxTJMp7zASHa99JVMStFm7dnxK6oYXzKlcOU?=
 =?us-ascii?Q?do5rJVjIy0JTIoC2V6rCNegFoujOoSv27qgLItM0sAPDm8v0R+orhPChnWKS?=
 =?us-ascii?Q?byG9rnmk/zO/Yh0wS4IUXHzLvHRcplvf1tYq/KyubILgG7tb5uNLv/gM8T7g?=
 =?us-ascii?Q?NR4k1ftZF85fUu12MtS2KJbABgY1W3kBLqZ4bPlaHTCdf1dfXO2FmNEOdcHP?=
 =?us-ascii?Q?ARmS5QxH15luEB07kXMNeyugOZB7/iPyNyxyXXbOfLrUp3iq/MPAgl2NYpn2?=
 =?us-ascii?Q?xbSDJKuQ56MLbtLZ3cP3pYHYkb8p/yPmyvv00enaz+PxrGhbxVsvHiOS7+v0?=
 =?us-ascii?Q?LqeGKnXjJqQf6XpRWmc0TND0JIjpOCN0nL0E3JwrgV6w+VJxzT+eUROglhCV?=
 =?us-ascii?Q?u78EabYALZ1eVIL8VqkchVDE06pgRe3D7iTr4dMV3g9cB47JDgiKY5wnVnpS?=
 =?us-ascii?Q?aO/cQnHKT8avAi3fNiaVBVYtoxzFIUuCitOpNQkwU5Zi5B8+29h9ZUJpKyXe?=
 =?us-ascii?Q?BqBjeLNDrYDnfgYLr3slfItjaz8XtRdhr5VpbpdUy8jAtPFgXE4Q8tB9af7N?=
 =?us-ascii?Q?vvR5Ua/a0GPvNgwRk7khqSrZVgscTI4TolXRy6c1dln5QYD+WenYNgAkfd3O?=
 =?us-ascii?Q?pqWfwoRKtctnQ0chgZY7uBPnP0QKdU+o+OjPawm847/V2gPw7AVeDS47stKm?=
 =?us-ascii?Q?O0x8MnlzVUVSIhVupE+G62Bziotm5O0ImgIHyHShzKDRuOCcHVNb+cdLaoVB?=
 =?us-ascii?Q?vLLLSY7JfoihRbWxwv2cQi/mkwPuLUN4FPZ7B68aMUy6I8LDv/TzjjAGLznr?=
 =?us-ascii?Q?Yy7c4IY9krzY8LNWTA2TB9vHkBCpuprMVQdpQ0bG4gYlvpe2qKadvtMmpD1G?=
 =?us-ascii?Q?EPfaSWTyH9oDJ0mDZF8HuYXW4lFAc91/IA=3D=3D?=
X-Forefront-Antispam-Report-Untrusted:
 CIP:213.95.148.172;CTRY:DE;LANG:en;SCL:1;SRV:;IPV:CAL;SFV:NSPM;H:denue6es012.ebgroup.elektrobit.com;PTR:eth1-fw1-nbg6.eb.noris.de;CAT:NONE;SFS:(13230040)(704162011799003)(82310400026)(7416014)(36860700016)(376014)(1800799024)(13003099007)(56012099003)(22082099003)(18002099003);DIR:OUT;SFP:1102;
X-Exchange-RoutingPolicyChecked:
 dSVXv+ePpA9GTQcN4WQSWQ6dxdgw9b9pQds+7Y5uO8Sl14w7hCQxO3HFMGzCKHrswMrAQAAVUT+BuCDkkOGOVFLQ00ClnT/IPG/HCP2f/4r58b1zpWgi190pg1BG3Xw68/4f3zY+PzuxV60DBT+2cfueOEBbgm0Rp7D+xDbVseHySzUqvzqWte2LYGR/uPqK1sfIkSR/EHqpSqYnL/5zBI2S/fsurUYLtetuguT2C/xW/wGiRyRk6wxHuBLspAoWU54AK8/kwCDptCplBhu4yMyrDtAyJXNidMj8Gpw9HJlUaKF6gw1AXD6sSLSgzmBW2pQuAO25ERGU6AUwviumvQ==
X-MS-Exchange-Transport-CrossTenantHeadersStamped: MWHPR08MB9870
X-MS-Exchange-SkipListedInternetSender:
 ip=[40.93.13.57];domain=DM2PR04CU003.outbound.protection.outlook.com
X-MS-Exchange-ExternalOriginalInternetSender:
 ip=[40.93.13.57];domain=DM2PR04CU003.outbound.protection.outlook.com
X-MS-Exchange-Transport-CrossTenantHeadersStripped:
 CO1PEPF000066E8.namprd05.prod.outlook.com
X-MS-PublicTrafficType: Email
X-MS-Office365-Filtering-Correlation-Id-Prvs:
	30512a0b-7569-46a6-ab62-08de9f2453c9
X-Microsoft-Antispam:
	BCL:0;ARA:13230040|704162011799003|7416014|376014|36860700016|1800799024|82310400026|14060799003|35042699022|156008|13003099007|56012099003|18002099003|22082099003;
X-Microsoft-Antispam-Message-Info:
	=?us-ascii?Q?ty8qVqOhnrrL1Mt2A+ONKTU002Ivirb5Y/iCfzdg8HTbgfyvz88+rhIfFWuO?=
 =?us-ascii?Q?xOUwj1RJcixQX8gb1N/w+3XTuY4PzhyWEZXXM06OxJEnoMCaqyz4eOj9G/7Z?=
 =?us-ascii?Q?kcp4w7YPBopFuvYOwIxQ6pNVMen8Pz1mAMgf9/OymwnNVoSb4HCMULPes2fn?=
 =?us-ascii?Q?wbI8u0mdTpBMgLf0CcD3ButpyPE75Z6jonNpgrgA9jT4P5djMkMqOCp67gyJ?=
 =?us-ascii?Q?kWT8UFAc5f+TxU0WSptjSl09gSXM8Cm5dW+n99LkfaU5aCRy30cGVMyq5rFf?=
 =?us-ascii?Q?eHq8vY6ScY57qai8216R6PxWAi3RIFpY0Nt6H1JuVwdgYDnL6m8MUbQq1tiS?=
 =?us-ascii?Q?ZagASqtqwpvsx2hJkLhpnLBbSI/gTHQuLSIiHNeq2Ch7pmA2p2XJOsr+kXZw?=
 =?us-ascii?Q?9puWO1LuxoUmnChoHOtyg7tKcklOGJgAjWB+oIN98ccF7rWh8gBIjuhsIB6v?=
 =?us-ascii?Q?GbxvGTTd6IjX4/auHsqL9LHReQXxLeY1q6Ho0VIOTL8fSau4c2gfArU/WAPg?=
 =?us-ascii?Q?u+ZilEdAk8+wsyyDBrUruQcXzcvLb1KAbVYlZvI/ZBqbGONCM5wEn6OMLUAw?=
 =?us-ascii?Q?YE4f1YFQEKATQzGgcptNWWl80MnVTqkh8MRX/RVIc9Cdye6DuAsfaUMorn6A?=
 =?us-ascii?Q?hMsI8GjaTlpF8kpZpFPCWS8OPCjhgs/7kUqMD+NXuKP7mJuFBHNmdRJZjUnh?=
 =?us-ascii?Q?8fngeDvkDSNgHzH8KDZKu4bZsbFfAyZHiCowQ/0a8BHsR6DE6c7aL6kBAEkv?=
 =?us-ascii?Q?YJgarjAgizZ8mgs9rtH9wRKvrGbz+7bYcNSEXEW4aNynfwWWsFKjvcCckcUY?=
 =?us-ascii?Q?Qp2m2Wyn8aybp3wcjs1WN5b8Sm9jj/oAJlaJBeBd9+MAKp/veuOVmF6l4E7j?=
 =?us-ascii?Q?cflGizD/xPzhLS7yy2gznwDDAoiMH/Fbtnp+JySK3SR6N6882vyKCpWtiE8F?=
 =?us-ascii?Q?sfbhfTJxiWvBL2wjA7XxVOjY+09WIEKk6bVuUkNpcOyYFj51fiz3aXU9VT0W?=
 =?us-ascii?Q?7yrV0MLYkjtwXgCJEN+hFl23ww91eZMPZvLXo7zb230f7I7lpD7zMnwpJqhO?=
 =?us-ascii?Q?LciRna7lm8fkDwKkf1B/ATUU6kcXuUwRutBCcchsVW4WQKwZ62sZPEdQHUn7?=
 =?us-ascii?Q?21dxfOdofGxwgh9B/SKIshEjXj91qLoKCg=3D=3D?=
X-Forefront-Antispam-Report:
	CIP:4.79.107.243;CTRY:US;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:DM2PR04CU003.outbound.protection.outlook.com;PTR:mail-dm2pr04cu00301.outbound.protection.outlook.com;CAT:NONE;SFS:(13230040)(704162011799003)(7416014)(376014)(36860700016)(1800799024)(82310400026)(14060799003)(35042699022)(156008)(13003099007)(56012099003)(18002099003)(22082099003);DIR:OUT;SFP:1102;
X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1
X-MS-Exchange-AntiSpam-MessageData-0:
	F4zSkkuHk76QwE6+csRaEcYn+UuZlzlR9D+agYinRRCD0s6T6yCpLPKXxuN4HnlfnT3zEs+tQWhCfhrY/RmsnAPTh5S4NfKZHvNubMk8tu7hjV/HcYisoOT0FJjbj3rK0zG7b/p3q4HqcVULkZtpkOeDbeXYZDe84mMVyniPwbeT1p1rk7MfrKDotvyWPFSDw5NVTqIKdSmuLh9IRSk+opb+uVlNqVI404OANJQN5zMuwSv6Ig49F1MUOWglAGmdhpbYfHv/1CDLLxGDWsliUT2PZwliCm0fw9YdCmD1HJFjqOlrCYAkyZ1fbSyjk/m6sCs/9A/mq5AFLyVeYUfW/Go0t8Ux/IF+PhfVGwfNH6ZwXOlYGVVAJcwDqCO4wCrH/PvHvilsEno4QP/NukxGUWeowWDTzt8aY0hX4cCUNXOi6sKUPaMzl/JzSNuHeXBQ
X-OriginatorOrg: elektrobit.com
X-MS-Exchange-CrossTenant-OriginalArrivalTime: 20 Apr 2026 21:32:37.1935
 (UTC)
X-MS-Exchange-CrossTenant-Network-Message-Id: fb8d7ef4-3707-4691-3a00-08de9f2457bd
X-MS-Exchange-CrossTenant-Id: e764c36b-012e-4216-910d-8fd16283182d
X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=e764c36b-012e-4216-910d-8fd16283182d;Ip=[4.79.107.243];Helo=[usbth1es003.ebgroup.elektrobit.com]
X-MS-Exchange-CrossTenant-AuthAs: Internal
X-MS-Exchange-CrossTenant-AuthSource: TreatMessagesAsInternal-CO1PEPF000066E8.namprd05.prod.outlook.com
X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem
X-MS-Exchange-Transport-CrossTenantHeadersStamped: DM6PR08MB6426
X-purgate-ID: tlsNG-720697/1776720766-83F66161-4A065D13/0/0
X-purgate-type: clean
X-purgate-size: 10620

This commit moves altp2m_active from arch_domain on x86 to the common
domain struct. Similarly to nr_altp2m, this is not an arch-specific value.
Moving it to common code allows the common altp2m routines introduced later
in this patch series to operate on altp2m_active without needing an
altp2m_active member on arch_domain for each architecture supporting
altp2m.

This is commit 2/8 of the preparation phase.

This commit is a refactor, and no change in functionality is intended.

Signed-off-by: Rose Spangler <Rose.Spangler@elektrobit.com>
---
v6: Introduced this patch.
---
 xen/arch/x86/hvm/emulate.c        |  1 +
 xen/arch/x86/hvm/hvm.c            | 11 ++++++-----
 xen/arch/x86/hvm/monitor.c        |  1 +
 xen/arch/x86/hvm/vmx/vmx.c        |  1 +
 xen/arch/x86/include/asm/altp2m.h | 11 -----------
 xen/arch/x86/include/asm/domain.h |  2 --
 xen/arch/x86/mm/altp2m.c          |  1 +
 xen/arch/x86/mm/hap/hap.c         |  5 +++--
 xen/arch/x86/mm/mem_access.c      |  1 +
 xen/arch/x86/mm/mem_sharing.c     |  1 +
 xen/arch/x86/mm/p2m-ept.c         |  1 +
 xen/arch/x86/mm/p2m-pt.c          |  1 +
 xen/arch/x86/mm/p2m.c             |  1 +
 xen/common/monitor.c              |  1 +
 xen/include/asm-generic/altp2m.h  |  8 --------
 xen/include/xen/altp2m.h          | 19 +++++++++++++++++++
 xen/include/xen/sched.h           |  2 ++
 17 files changed, 40 insertions(+), 28 deletions(-)

diff --git a/xen/arch/x86/hvm/emulate.c b/xen/arch/x86/hvm/emulate.c
index f3aae158e9f8..9a9b89a232e6 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/altp2m.h>
 #include <xen/init.h>
 #include <xen/iocap.h>
 #include <xen/ioreq.h>
diff --git a/xen/arch/x86/hvm/hvm.c b/xen/arch/x86/hvm/hvm.c
index 4a81afce02e7..86c12c0d1ef4 100644
--- a/xen/arch/x86/hvm/hvm.c
+++ b/xen/arch/x86/hvm/hvm.c
@@ -7,6 +7,7 @@
  * Copyright (c) 2008, Citrix Systems, Inc.
  */
 
+#include <xen/altp2m.h>
 #include <xen/console.h>
 #include <xen/cpu.h>
 #include <xen/domain.h>
@@ -4612,7 +4613,7 @@ static int do_altp2m_op(
 
     if ( (a.cmd != HVMOP_altp2m_get_domain_state) &&
          (a.cmd != HVMOP_altp2m_set_domain_state) &&
-         !d->arch.altp2m_active )
+         !d->altp2m_active )
     {
         rc = -EOPNOTSUPP;
         goto out;
@@ -4657,11 +4658,11 @@ static int do_altp2m_op(
         if ( rc )
             break;
 
-        ostate = d->arch.altp2m_active;
-        d->arch.altp2m_active = !!a.u.domain_state.state;
+        ostate = d->altp2m_active;
+        d->altp2m_active = !!a.u.domain_state.state;
 
         /* If the alternate p2m state has changed, handle appropriately */
-        if ( d->arch.altp2m_active != ostate &&
+        if ( d->altp2m_active != ostate &&
              (ostate || !(rc = p2m_init_altp2m_by_id(d, 0))) )
         {
             for_each_vcpu( d, v )
@@ -4676,7 +4677,7 @@ static int do_altp2m_op(
                 p2m_flush_altp2m(d);
         }
         else if ( rc )
-            d->arch.altp2m_active = false;
+            d->altp2m_active = false;
 
         domain_unpause_except_self(d);
         break;
diff --git a/xen/arch/x86/hvm/monitor.c b/xen/arch/x86/hvm/monitor.c
index d22a2e464460..84c1c2234ca9 100644
--- a/xen/arch/x86/hvm/monitor.c
+++ b/xen/arch/x86/hvm/monitor.c
@@ -22,6 +22,7 @@
  * this program; If not, see <http://www.gnu.org/licenses/>.
  */
 
+#include <xen/altp2m.h>
 #include <xen/vm_event.h>
 #include <xen/mem_access.h>
 #include <xen/monitor.h>
diff --git a/xen/arch/x86/hvm/vmx/vmx.c b/xen/arch/x86/hvm/vmx/vmx.c
index 269ca5643346..ff895f7f9437 100644
--- a/xen/arch/x86/hvm/vmx/vmx.c
+++ b/xen/arch/x86/hvm/vmx/vmx.c
@@ -4,6 +4,7 @@
  * Copyright (c) 2004, Intel Corporation.
  */
 
+#include <xen/altp2m.h>
 #include <xen/domain_page.h>
 #include <xen/guest_access.h>
 #include <xen/hypercall.h>
diff --git a/xen/arch/x86/include/asm/altp2m.h b/xen/arch/x86/include/asm/altp2m.h
index 9c1ac3cc2676..ad5ded833a75 100644
--- a/xen/arch/x86/include/asm/altp2m.h
+++ b/xen/arch/x86/include/asm/altp2m.h
@@ -28,12 +28,6 @@ static inline bool altp2m_is_eptp_valid(const struct domain *d,
         mfn_x(INVALID_MFN);
 }
 
-/* Alternate p2m HVM on/off per domain */
-static inline bool altp2m_active(const struct domain *d)
-{
-    return d->arch.altp2m_active;
-}
-
 static inline uint16_t altp2m_vcpu_idx(const struct vcpu *v)
 {
     return vcpu_altp2m(v).p2midx;
@@ -64,11 +58,6 @@ static inline bool altp2m_is_eptp_valid(const struct domain *d,
     return false;
 }
 
-static inline bool altp2m_active(const struct domain *d)
-{
-    return false;
-}
-
 /* Only declaration is needed. DCE will optimise it out when linking. */
 uint16_t altp2m_vcpu_idx(const struct vcpu *v);
 void altp2m_vcpu_initialise(struct vcpu *v);
diff --git a/xen/arch/x86/include/asm/domain.h b/xen/arch/x86/include/asm/domain.h
index 385a6666dafa..0cf0c0d92087 100644
--- a/xen/arch/x86/include/asm/domain.h
+++ b/xen/arch/x86/include/asm/domain.h
@@ -368,8 +368,6 @@ struct arch_domain
     mm_lock_t nested_p2m_lock;
 
 #ifdef CONFIG_ALTP2M
-    /* altp2m: allow multiple copies of host p2m */
-    bool altp2m_active;
     struct p2m_domain **altp2m_p2m;
     mm_lock_t altp2m_list_lock;
     uint64_t *altp2m_eptp;
diff --git a/xen/arch/x86/mm/altp2m.c b/xen/arch/x86/mm/altp2m.c
index 0bc9b9ad2f52..08db8f37c1b1 100644
--- a/xen/arch/x86/mm/altp2m.c
+++ b/xen/arch/x86/mm/altp2m.c
@@ -8,6 +8,7 @@
 #include <asm/p2m.h>
 #include <asm/altp2m.h>
 #include <public/hvm/hvm_op.h>
+#include <xen/altp2m.h>
 #include <xen/event.h>
 #include <xen/xvmalloc.h>
 #include "mm-locks.h"
diff --git a/xen/arch/x86/mm/hap/hap.c b/xen/arch/x86/mm/hap/hap.c
index 5ccb80bda5d3..3d563b3bc2d1 100644
--- a/xen/arch/x86/mm/hap/hap.c
+++ b/xen/arch/x86/mm/hap/hap.c
@@ -7,6 +7,7 @@
  * Parts of this code are Copyright (c) 2007 by XenSource Inc.
  */
 
+#include <xen/altp2m.h>
 #include <xen/types.h>
 #include <xen/mm.h>
 #include <xen/trace.h>
@@ -528,7 +529,7 @@ int hap_enable(struct domain *d, u32 mode)
                goto out;
         }
 
-        d->arch.altp2m_active = false;
+        d->altp2m_active = false;
     }
 #endif /* CONFIG_ALTP2M */
 
@@ -595,7 +596,7 @@ void hap_teardown(struct domain *d, bool *preempted)
             for_each_vcpu ( d, v )
                 altp2m_vcpu_disable_ve(v);
 
-        d->arch.altp2m_active = false;
+        d->altp2m_active = false;
 
         FREE_XENHEAP_PAGE(d->arch.altp2m_eptp);
         FREE_XENHEAP_PAGE(d->arch.altp2m_visible_eptp);
diff --git a/xen/arch/x86/mm/mem_access.c b/xen/arch/x86/mm/mem_access.c
index e55e53f44c78..a9d6b081a523 100644
--- a/xen/arch/x86/mm/mem_access.c
+++ b/xen/arch/x86/mm/mem_access.c
@@ -9,6 +9,7 @@
  * Parts based on earlier work by Michael A Fetterman, Ian Pratt et al.
  */
 
+#include <xen/altp2m.h>
 #include <xen/guest_access.h> /* copy_from_guest() */
 #include <xen/mem_access.h>
 #include <xen/nospec.h>
diff --git a/xen/arch/x86/mm/mem_sharing.c b/xen/arch/x86/mm/mem_sharing.c
index 5c7a0ff30e8b..8319733b1bb6 100644
--- a/xen/arch/x86/mm/mem_sharing.c
+++ b/xen/arch/x86/mm/mem_sharing.c
@@ -8,6 +8,7 @@
  * Copyright (c) 2009 Citrix Systems, Inc. (Grzegorz Milos)
  */
 
+#include <xen/altp2m.h>
 #include <xen/types.h>
 #include <xen/domain_page.h>
 #include <xen/event.h>
diff --git a/xen/arch/x86/mm/p2m-ept.c b/xen/arch/x86/mm/p2m-ept.c
index dfdbfa0afec8..ed850723f5fd 100644
--- a/xen/arch/x86/mm/p2m-ept.c
+++ b/xen/arch/x86/mm/p2m-ept.c
@@ -4,6 +4,7 @@
  * Copyright (c) 2007, Intel Corporation.
  */
 
+#include <xen/altp2m.h>
 #include <xen/domain_page.h>
 #include <xen/sched.h>
 #include <public/hvm/dm_op.h>
diff --git a/xen/arch/x86/mm/p2m-pt.c b/xen/arch/x86/mm/p2m-pt.c
index 5a6ce2f8bc2e..17f38aac14d5 100644
--- a/xen/arch/x86/mm/p2m-pt.c
+++ b/xen/arch/x86/mm/p2m-pt.c
@@ -12,6 +12,7 @@
  * Parts based on earlier work by Michael A Fetterman, Ian Pratt et al.
  */
 
+#include <xen/altp2m.h>
 #include <xen/vm_event.h>
 #include <xen/event.h>
 #include <xen/trace.h>
diff --git a/xen/arch/x86/mm/p2m.c b/xen/arch/x86/mm/p2m.c
index fddecdf978ec..41517765c5ec 100644
--- a/xen/arch/x86/mm/p2m.c
+++ b/xen/arch/x86/mm/p2m.c
@@ -11,6 +11,7 @@
  * Parts based on earlier work by Michael A Fetterman, Ian Pratt et al.
  */
 
+#include <xen/altp2m.h>
 #include <xen/iommu.h>
 #include <xen/mem_access.h>
 #include <xen/vm_event.h>
diff --git a/xen/common/monitor.c b/xen/common/monitor.c
index d5c9ff1cbf8c..e758a3fea9f1 100644
--- a/xen/common/monitor.c
+++ b/xen/common/monitor.c
@@ -19,6 +19,7 @@
  * License along with this program; If not, see <http://www.gnu.org/licenses/>.
  */
 
+#include <xen/altp2m.h>
 #include <xen/event.h>
 #include <xen/monitor.h>
 #include <xen/sched.h>
diff --git a/xen/include/asm-generic/altp2m.h b/xen/include/asm-generic/altp2m.h
index 39865a842ab3..ecee6942f4e8 100644
--- a/xen/include/asm-generic/altp2m.h
+++ b/xen/include/asm-generic/altp2m.h
@@ -4,16 +4,8 @@
 
 #include <xen/bug.h>
 
-struct domain;
 struct vcpu;
 
-/* Alternate p2m on/off per domain */
-static inline bool altp2m_active(const struct domain *d)
-{
-    /* Not implemented on GENERIC. */
-    return false;
-}
-
 /* Alternate p2m VCPU */
 static inline unsigned int altp2m_vcpu_idx(const struct vcpu *v)
 {
diff --git a/xen/include/xen/altp2m.h b/xen/include/xen/altp2m.h
index 520328fd3fa8..b3b21124dd7e 100644
--- a/xen/include/xen/altp2m.h
+++ b/xen/include/xen/altp2m.h
@@ -2,4 +2,23 @@
 #ifndef __XEN_ALTP2M_H__
 #define __XEN_ALTP2M_H__
 
+#include <xen/sched.h>
+
+#ifdef CONFIG_ALTP2M
+
+/* Alternate p2m HVM on/off per domain */
+static inline bool altp2m_active(const struct domain *d)
+{
+    return d->altp2m_active;
+}
+
+#else /* CONFIG_ALTP2M */
+
+static inline bool altp2m_active(const struct domain *d)
+{
+    return false;
+}
+
+#endif /* CONFIG_ALTP2M */
+
 #endif /* __XEN_ALTP2M_H__ */
diff --git a/xen/include/xen/sched.h b/xen/include/xen/sched.h
index 212c7d765c3e..458f2f260dd7 100644
--- a/xen/include/xen/sched.h
+++ b/xen/include/xen/sched.h
@@ -623,6 +623,8 @@ struct domain
     } monitor;
 
 #ifdef CONFIG_ALTP2M
+    /* altp2m: allow multiple copies of host p2m */
+    bool altp2m_active;
     unsigned int nr_altp2m;    /* Number of altp2m tables. */
 #endif
 
-- 
2.34.1



From xen-devel-bounces@lists.xenproject.org Mon Apr 20 21:38:37 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 20 Apr 2026 21:38:37 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1288146.1568465 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wEwK7-0002q2-IU; Mon, 20 Apr 2026 21:38:31 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1288146.1568465; Mon, 20 Apr 2026 21: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 1wEwK7-0002pv-Fk; Mon, 20 Apr 2026 21:38:31 +0000
Received: by outflank-mailman (input) for mailman id 1288146;
 Mon, 20 Apr 2026 21:38:30 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <Rose.Spangler@elektrobit.com>) id 1wEwK5-0002oZ-O0
 for xen-devel@lists.xenproject.org; Mon, 20 Apr 2026 21:38:29 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wEwK3-009Rra-Hu
 for xen-devel@lists.xenproject.org; Mon, 20 Apr 2026 23:38:29 +0200
Received: from [10.42.69.11] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <Rose.Spangler@elektrobit.com>)
 id 69e69c8b-e002-0a2a0a5209dd-0a2a450bc78c-42
 for <xen-devel@lists.xenproject.org>; Mon, 20 Apr 2026 23:38:29 +0200
Received: from [52.101.57.126]
 (helo=BN8PR05CU002.outbound.protection.outlook.com)
 by tlsNG-42698a.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.1)
 (envelope-from <Rose.Spangler@elektrobit.com>)
 id 69e69ba7-212f-0a2a450b0019-3465397e0c33-3
 for <xen-devel@lists.xenproject.org>; Mon, 20 Apr 2026 23:33:28 +0200
Received: from DS7PR03CA0016.namprd03.prod.outlook.com (2603:10b6:5:3b8::21)
 by CO1PR08MB6514.namprd08.prod.outlook.com (2603:10b6:303:9f::21) with
 Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9818.33; Mon, 20 Apr
 2026 21:33:21 +0000
Received: from DS2PEPF00003447.namprd04.prod.outlook.com
 (2603:10b6:5:3b8:cafe::8a) by DS7PR03CA0016.outlook.office365.com
 (2603:10b6:5:3b8::21) with Microsoft SMTP Server (version=TLS1_3,
 cipher=TLS_AES_256_GCM_SHA384) id 15.20.9791.48 via Frontend Transport; Mon,
 20 Apr 2026 21:33:20 +0000
Received: from usbth1es003.ebgroup.elektrobit.com (4.79.107.243) by
 DS2PEPF00003447.mail.protection.outlook.com (10.167.17.74) with Microsoft
 SMTP Server (version=TLS1_3, cipher=TLS_AES_256_GCM_SHA384) id 15.20.9791.48
 via Frontend Transport; Mon, 20 Apr 2026 21:33:20 +0000
Received: from usbth1es003 (localhost [127.0.0.1])
 by usbth1es003.ebgroup.elektrobit.com (Postfix) with SMTP id 4fzzHg5fTnz1wdY; 
 Mon, 20 Apr 2026 14:33:19 -0700 (PDT)
Received: from SJ0PR08CU001.outbound.protection.outlook.com
 (mail-sj0pr08cu00103.outbound.protection.outlook.com [40.93.1.75])
 (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)
 key-exchange secp384r1 server-signature RSA-PSS (2048 bits) server-digest
 SHA256) (No client certificate requested)
 by usbth1es003.ebgroup.elektrobit.com (Postfix) with ESMTPS;
 Mon, 20 Apr 2026 14:33:19 -0700 (PDT)
Received: from BY1P220CA0019.NAMP220.PROD.OUTLOOK.COM (2603:10b6:a03:5c3::15)
 by LV3PR08MB9404.namprd08.prod.outlook.com (2603:10b6:408:20c::7)
 with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9818.32; Mon, 20 Apr
 2026 21:33:15 +0000
Received: from SJ1PEPF000026C9.namprd04.prod.outlook.com
 (2603:10b6:a03:5c3:cafe::76) by BY1P220CA0019.outlook.office365.com
 (2603:10b6:a03:5c3::15) with Microsoft SMTP Server (version=TLS1_3,
 cipher=TLS_AES_256_GCM_SHA384) id 15.20.9791.48 via Frontend Transport; Mon,
 20 Apr 2026 21:33:15 +0000
Received: from denue6es012.ebgroup.elektrobit.com (213.95.148.172) by
 SJ1PEPF000026C9.mail.protection.outlook.com (10.167.244.106) with Microsoft
 SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id
 15.20.9791.48 via Frontend Transport; Mon, 20 Apr 2026 21:33:14 +0000
Received: from ubuntu.localdomain (10.10.178.50) by
 denue6es012.ebgroup.elektrobit.com (10.243.160.140) with Microsoft SMTP
 Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id
 15.2.2562.35; Mon, 20 Apr 2026 23:33:10 +0200
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@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=elektrobit.com header.i="@elektrobit.com" header.h="From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck"; dkim=pass header.s=selector1 header.d=elektrobit.com header.i="@elektrobit.com" header.h="From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck"
ARC-Seal: i=2; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=pass;
 b=nfNdqWvBFPdLGrxASEBjEhHacn6xnu2Jl8VdIhj2sE1n9cHDvHmu2555+nEvwQp/qL2fZac+uNqGQMSExwEW1iX5ewUED85oUx+oJsu+b2/Q6ARIyIYHcqCnUVRG6SyfLJDhb+b9h8Nkb9u09ZPS+e1Gtzm2iZXSxTTL2cR+IBHJhevHHgw5orf+BmhUUBrrwFosGWcWe8TvJwFHd/H1GtM2i9tyVyxOqBcpyZYzteNkuKOHsg8n9C91xZwXVwubPJbyrF2VFe16/cAr8V+BwnSPAvAKeHLrKMlHE5W1j2/iFiJLoBS/N4h7Unb/M0gIvZyGiQSfSoYn9uiR2mAVIw==
ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com;
 s=arcselector10001;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1;
 bh=RlgX5a6AGvq5jH49n4U+x4WcIr+mTwnUzMyljWt2R54=;
 b=cmcbjgEMUgSas6jS6YlGhpwwN0npdfl5PdM4q5oe5Q+4plidV2MWYjuF+4jKU+N9bWAnT5tDLzsUtELfXmaa8SbVvVulFY9b/yVcmGVLs9YzeoZ3SXBrftDkT6rwtr0VrJKTkE0na5CjUY6UpbSt0fQOYPhCROdK5fexud+Yju4sMafzR3lI50PHPYldnWOSAPmx6VjmqFfW8yhJZ5tYcWP9IK8wZ7Z5fCs0B9b8PXVFQLIJwKb8gk/Ly9TFJQESXgfTB0U05ykLRN9aH45TXwF9FY4abW9GuC8thDQdGJFbW9bvnv0xI51BZyJKA1Sz6hcTmBZmrMaHIKsbNL+s5A==
ARC-Authentication-Results: i=2; mx.microsoft.com 1; spf=pass (sender ip is
 40.93.1.75) smtp.rcpttodomain=amd.com smtp.mailfrom=elektrobit.com;
 dmarc=pass (p=quarantine sp=none pct=100) action=none
 header.from=elektrobit.com; dkim=pass (signature was verified)
 header.d=elektrobit.com; arc=pass (0 oda=1 ltdi=1
 spf=[1,1,smtp.mailfrom=elektrobit.com]
 dmarc=[1,1,header.from=elektrobit.com])
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=elektrobit.com;
 s=selector1;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck;
 bh=RlgX5a6AGvq5jH49n4U+x4WcIr+mTwnUzMyljWt2R54=;
 b=FjFe4cNF4nDpsxt06fKP0qMdSQP1dCt4R1YUZTlKkIjDdfj6qr6wQ5GM2GPHoycxdJ7c7KawZlWPYolq81cx3fePTNq/vRnA02NIjYvBemLWatHazYru2itfnEgfwMM/yj30+akXG4pmsUxRLH+QfWbMn6gNtYCkXkaMRA9CNiI=
X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 40.93.1.75)
 smtp.mailfrom=elektrobit.com; dkim=pass (signature was verified)
 header.d=elektrobit.com;dmarc=pass action=none header.from=elektrobit.com;
Received-SPF: Pass (protection.outlook.com: domain of elektrobit.com
 designates 40.93.1.75 as permitted sender) receiver=protection.outlook.com;
 client-ip=40.93.1.75; helo=SJ0PR08CU001.outbound.protection.outlook.com; pr=C
ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none;
 b=fPQW1XKPayoCvNuTGEEpna9M4lJxB3l4rBQ9y1fcEZQU8f+X9w/w48sNf8QgG5/226VkRjhGF+g/rwOF0Sd10sc/9zLVQ2ELlcy759iQNMwWAg9Hh/klfUi9dslTI058Q05FM4Wc/ErQg+Ex/KnCncV+1JHiSGUKKPtV6LfhOywpZtFf6cx+dmW73NDA+a1VwzWp4h+/l9PQmEPB5M8/txhRVn0OCSq02LbflFPp45hiA5Die2ASBu705d3KKtIhDYs3ieZYFoeGZgQQUnasH7b5M6O9rtk5ZuUdItpqN8SfSQMmBySVo6VPk2sJDXWBxK87RdcaZEJRN/zDIP5wOw==
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com;
 s=arcselector10001;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1;
 bh=RlgX5a6AGvq5jH49n4U+x4WcIr+mTwnUzMyljWt2R54=;
 b=CWQCUjsCOFCj/9qGrTnbJEdMeYNf9PssYXOa5rLb+Hb/KzwbXmYrX6UuSMrdZGWu5tGoBGG17JkargPBbFFw41RE8vS+L8TsVmrHu8aI+PscK+zC/APXs5Sg8IXe7KPbiGt8s7P780D6LYCRjSphhSghpn7Ob2g/kpT5XBQbmSN0ERJKR+U5yUjTAgWlqkpAHIueLwLPCUATW+rGvJblZd89W9eNyIjW/rZWiszbJjkl6lxtHieSZPYrozYzN+X6r4QqR849nUpvDJ532p+L1vLxqnM3GHtMnBHmk4BkZEjHSb6Zl5lH7hD0c+gzUcq4q85JFIYOJv5JkDlmPUITPA==
ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass (sender ip is
 213.95.148.172) smtp.rcpttodomain=lists.xenproject.org
 smtp.mailfrom=elektrobit.com; dmarc=pass (p=quarantine sp=none pct=100)
 action=none header.from=elektrobit.com; dkim=none (message not signed);
 arc=none (0)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=elektrobit.com;
 s=selector1;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck;
 bh=RlgX5a6AGvq5jH49n4U+x4WcIr+mTwnUzMyljWt2R54=;
 b=FjFe4cNF4nDpsxt06fKP0qMdSQP1dCt4R1YUZTlKkIjDdfj6qr6wQ5GM2GPHoycxdJ7c7KawZlWPYolq81cx3fePTNq/vRnA02NIjYvBemLWatHazYru2itfnEgfwMM/yj30+akXG4pmsUxRLH+QfWbMn6gNtYCkXkaMRA9CNiI=
X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 213.95.148.172)
 smtp.mailfrom=elektrobit.com; dkim=none (message not signed)
 header.d=none;dmarc=pass action=none header.from=elektrobit.com;
Received-SPF: Pass (protection.outlook.com: domain of elektrobit.com
 designates 213.95.148.172 as permitted sender)
 receiver=protection.outlook.com; client-ip=213.95.148.172;
 helo=denue6es012.ebgroup.elektrobit.com; pr=C
From: Rose Spangler <Rose.Spangler@elektrobit.com>
To: <xen-devel@lists.xenproject.org>
CC: Rose Spangler <Rose.Spangler@elektrobit.com>, Jan Beulich
	<jbeulich@suse.com>, Andrew Cooper <andrew.cooper3@citrix.com>,
	=?UTF-8?q?Roger=20Pau=20Monn=C3=A9?= <roger.pau@citrix.com>, 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: [RFC PATCH v6 28/43] altp2m: Move altp2m_vcpu_{initialise,destroy} to common code
Date: Mon, 20 Apr 2026 17:31:51 -0400
Message-ID: <20260420213206.208750-29-Rose.Spangler@elektrobit.com>
X-Mailer: git-send-email 2.34.1
In-Reply-To: <20260420213206.208750-1-Rose.Spangler@elektrobit.com>
References: <20260420213206.208750-1-Rose.Spangler@elektrobit.com>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit
Content-Type: text/plain
X-Originating-IP: [10.10.178.50]
X-ClientProxiedBy: denue6es012.ebgroup.elektrobit.com (10.243.160.140) To
 denue6es012.ebgroup.elektrobit.com (10.243.160.140)
X-EOPAttributedMessage: 1
X-MS-Exchange-SkipListedInternetSender:
 ip=[213.95.148.172];domain=denue6es012.ebgroup.elektrobit.com
X-MS-TrafficTypeDiagnostic:
	SJ1PEPF000026C9:EE_|LV3PR08MB9404:EE_|DS2PEPF00003447:EE_|CO1PR08MB6514:EE_
X-MS-Office365-Filtering-Correlation-Id: 1ed4810a-ed96-488d-a5ea-08de9f2471ad
X-SM-outgoing: yes
X-MS-Exchange-SenderADCheck: 1
X-MS-Exchange-AntiSpam-Relay: 0
X-Microsoft-Antispam-Untrusted:
 BCL:0;ARA:13230040|36860700016|82310400026|376014|1800799024|56012099003|18002099003|22082099003;
X-Microsoft-Antispam-Message-Info-Original:
 =?us-ascii?Q?AK9iWy8vPTDcuxGkt+pAXLcDXKChu/bA4TfdHdz/2P922sx5YWW7yTINiaCL?=
 =?us-ascii?Q?7UYZ0B9njPu3bCC+zxWSVWWXh/RKoN7RUG93TY6nhIEdz0P2eIUhhpyvgNvX?=
 =?us-ascii?Q?aNb8685V1+ze/x3xoPSQURLWwusdti4O5iVPcj7tgulh10sJjvk2mLXemjON?=
 =?us-ascii?Q?ryzI3fTGRGVhTMo4d4JfGiIfp8DpGYN2WQeup+e2jOQ0RpUGn0QtkxR8z/B+?=
 =?us-ascii?Q?wp6moSPbHMGHd4mdwJPEb1seXaMHckuMK2/dbl3CvvAXYZA3lwi1Ma8NKCf3?=
 =?us-ascii?Q?lsIUi6lkFoBJCGiXJpkfwtcq2VLxz24LdWeoY81V5micJoE0u0KIar2vnyYX?=
 =?us-ascii?Q?6vNF7GCJrZAcWM4CWVLLppQwLmu/V7+yYkkYKLwznpnQi1k+2GXnn24YuSow?=
 =?us-ascii?Q?e4ST11JYdsb+BYQaKQTGcdYNkHMYNsgGVYzBssBX5BYcW3a2ToollkzqubPG?=
 =?us-ascii?Q?XklCUa1+nVOlW1R1J+DoNXLLNBHcdH8jdVxgWO0M0e9oaUOzHEqC8jtH1z9V?=
 =?us-ascii?Q?nPJb1pMwxcKI44al7MeEqBpJRECx+9vVFocnG7tdcOjnYo0bVfE4PjaT8Nw7?=
 =?us-ascii?Q?WAcYMme5XqsordfqcTyyiDRqeBhcHqFDwkcZDVSzWpaWEtGgAyg9X+Wgk/Ox?=
 =?us-ascii?Q?WUHjar4BSmZmtKCq7X2tCP0dDe5iKFYDEqpxEa2EZM1WEij8pK3+V4RPmpDu?=
 =?us-ascii?Q?CtLSu8v4ISfTwg9gdFuDw5bxeh/rdSTxsRAO3t9T/oz9VGGptAvT2VvmkQEj?=
 =?us-ascii?Q?n6T85WTDxwC+tYvcLjErebXThUA4KmWBLVmB+rc/UDhFRLmXTBPY/zPbT5+4?=
 =?us-ascii?Q?wiYTCwJJo5jvxs1k+X0Gp/JjbgbrWdL1TT0WrzkrtiXF3CUAu0kM0wqxw5w6?=
 =?us-ascii?Q?JfTje3PZMjGXST5yJZ39yrvRsvsnWH/E3R2ft1Brn28tAuiZswTRaBQh4NSa?=
 =?us-ascii?Q?FylGycb5OiYdV36sB0Fo+nMYD9s393W5Jz6RE+J8cFgp93dRBqfZXe4v7IVh?=
 =?us-ascii?Q?3cRtfavc/SMW2x+AhIqSpwzaHmSneE5t7CO1rWsArhXHZCMVH7wXCreAs1wj?=
 =?us-ascii?Q?xLGXt987kSv4czBH3Q5X+NpO8YtFohef/V0+GG4GBaMyoLzJOKPJDPqSZQmY?=
 =?us-ascii?Q?ioWN2r7GhLoeU4WE0XXm1MhWqwk1L/dhrGdk1pFLWfPASI8Z4MS05KwS3w+j?=
 =?us-ascii?Q?6HZkIWUywuCY92lk?=
X-Forefront-Antispam-Report-Untrusted:
 CIP:213.95.148.172;CTRY:DE;LANG:en;SCL:1;SRV:;IPV:CAL;SFV:NSPM;H:denue6es012.ebgroup.elektrobit.com;PTR:eth1-fw1-nbg6.eb.noris.de;CAT:NONE;SFS:(13230040)(36860700016)(82310400026)(376014)(1800799024)(56012099003)(18002099003)(22082099003);DIR:OUT;SFP:1102;
X-Exchange-RoutingPolicyChecked:
 l6i8UTH/yhxGq+dqEXoc+A8yYEPv2wK9SDl3NnGKfwbcAuMUkGJPpTLUarsbrXQjjxjTOibTbzc6ieLX5u4sjdA6AInluPJu7Cbyqr18Is2US2+bZNGUROlLdE0ng7i5nXbkkSfGYDdB5DU5W0NjMklvl0qqOovz+x3vjNanCKYi9Jup+Q1VS4nOnKhY+7HC1r58XJMfNepEDw6Hrlf9oROdnXauKWgB7/3pvnI2tvmwTr8w3PnqrlB3R8ZBzYVTzewPsbKeneDT2iEitA6y4oNSR53mdALMhS6LirwQuD3x7f3dquKS8ER8jDoSgj6htELcbGTzol0zRSVUKIN16Q==
X-MS-Exchange-Transport-CrossTenantHeadersStamped: LV3PR08MB9404
X-MS-Exchange-SkipListedInternetSender:
 ip=[40.93.1.75];domain=SJ0PR08CU001.outbound.protection.outlook.com
X-MS-Exchange-ExternalOriginalInternetSender:
 ip=[40.93.1.75];domain=SJ0PR08CU001.outbound.protection.outlook.com
X-MS-Exchange-Transport-CrossTenantHeadersStripped:
 DS2PEPF00003447.namprd04.prod.outlook.com
X-MS-PublicTrafficType: Email
X-MS-Office365-Filtering-Correlation-Id-Prvs:
	7330784a-a186-48dd-2f2f-08de9f246dee
X-Microsoft-Antispam:
	BCL:0;ARA:13230040|36860700016|14060799003|35042699022|376014|156008|82310400026|1800799024|18002099003|56012099003|22082099003;
X-Microsoft-Antispam-Message-Info:
	=?us-ascii?Q?ohqt8wDHpSblp5fwOlhtVJLnXAQC9GmVHfwRZCbu5M6MOA1aivKRBg6xhsnj?=
 =?us-ascii?Q?oNknsh3CBFuGD1XjnLIKWP+ALZjupL7U75r/EEj0ImiOp3ogQkKW4tacNUlG?=
 =?us-ascii?Q?my8AbBkEptkBUYLstOOHVbkDZqEN5shforL/G+1akg4lo7kW1jh4dR8/KPet?=
 =?us-ascii?Q?xBhE7WRF45ONZge6+MdVdt7SPEGYIRQHybJBM0K0sEC60YxWMhis384X/RPN?=
 =?us-ascii?Q?y22tV9PDUUDV3sydZJg+D4oIWL693kVYQ2ffc69xZevJV30KqGy54YBZOJQD?=
 =?us-ascii?Q?yKfb/lyVOH2xxnbegc5VFK/eQRSkxU3hePcHSxjdXjojLf9B29x3s7yu3Xta?=
 =?us-ascii?Q?5SxUzivgJ12DgqiTnluSafcPSnnB3UXhMmeA8DbKfpbwcrTZauuPMs2Brnqo?=
 =?us-ascii?Q?Js7mk4WCI4UB2EKGLzmQfGWNdOpzZaRg/uJMlJu+4q/qZzT7cizI9iJgBLxl?=
 =?us-ascii?Q?na72sOkd555fxsv0ck97kK6V7VCJXZGpMvmrPUpvMEkDLLklDWnug9eCtJrT?=
 =?us-ascii?Q?iuiKi8GStJ2YlVF4Ztqh8KoCQSA57RI2W1tVSNpZlEgjLjXeavVy3vqNGXf/?=
 =?us-ascii?Q?7ZcLcJoKGG34JBLOBxbwdqiijrzenuRV6+fsaqG9CJEJRm2wIrQWcT1/EA5t?=
 =?us-ascii?Q?GCi9SabVvHNURkFhVH1JWz8Go9K0HjroEsc/f6r1jJXGl+6hvgN3Q89cPjsf?=
 =?us-ascii?Q?v1YDR8SNwDk3Ig+811hqvx0JZTjsO4ROMlNQF34tjM198rhJnwdvedxSSr+k?=
 =?us-ascii?Q?chtDpYWmB6kKwJdGz0H9wLQWV4ggr/QCv2DsJqw65wG/NqblHPQzcbyjwGM9?=
 =?us-ascii?Q?SRFcx+zYWhUaaucbLwizlqDgJjMvuFeFyBo0LxASnMO6sRDE/Rku7yHmRxAu?=
 =?us-ascii?Q?1bky1bnRQeuq8ZGFJ4D6J68WYxGcjoJt5vOlzDRkJAxdI5rR6LUnz+X6HZEN?=
 =?us-ascii?Q?nImX8U+HcjRSmTVm9ubftrIM93DHcKM3m9Ijg4k/B7gVNkxVlq+IS9maMP09?=
 =?us-ascii?Q?51UAVskIXdp2hdlaxHovI4xbOzAExFlS2ciyPYNQb1rf084lZE74M+wY5o9i?=
 =?us-ascii?Q?1nNl3i4B0HGkK0uZy5lnBYcoHp9KwUDcLXzTMR3+DUQtFy90o9XKUgxFWrfd?=
 =?us-ascii?Q?EohQWiri7xEV2tz3h9P04PeuhjYp8NH7t0zoagSfQn80BKfOPhUO3p3X1mWK?=
 =?us-ascii?Q?ILc0TB3e6pzKeWSS?=
X-Forefront-Antispam-Report:
	CIP:4.79.107.243;CTRY:US;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:SJ0PR08CU001.outbound.protection.outlook.com;PTR:mail-sj0pr08cu00103.outbound.protection.outlook.com;CAT:NONE;SFS:(13230040)(36860700016)(14060799003)(35042699022)(376014)(156008)(82310400026)(1800799024)(18002099003)(56012099003)(22082099003);DIR:OUT;SFP:1102;
X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1
X-MS-Exchange-AntiSpam-MessageData-0:
	HppJ1eW3+j5+5p7/IvuE6vlafSEuF9O4HEC2JJy7HqE/Uadga5qwUB0/UXMUQgyNEt/V0UG1zsF6o+D9QfM5Rv27vUVa2FH+i8/VPqHNjhSZ0eplx1xM6wJnuf4bwK6kbXTBxOxJrUFpzC953M6dNd/uBzl0JV10qDxYSZoZpLEDG/rX1noMqNpBp6/ouBAdS9iZ4UbBe0t3EieNMiLrafsswPbH5nYaO3Atx8UBzLBtrQ1bFuhLsugrb0i/Vor/+1wIVivn1V/14FxiQ9iEuv5QKTOBk1Tuwl1BKXCsV6g5xFTWq6ARkvORibjViCo2vG45I44ifACRMUispw9mBSdeCI0GLBwg48IXKV7uKLrFClVubrdY1K5wq/Tdi4VvMCpd5ZC2pJUQQ2TrjUc85ntm9s3jbfYgHx23Y5n2dDwd/sQjN6ijYEVHFxqQuX5H
X-OriginatorOrg: elektrobit.com
X-MS-Exchange-CrossTenant-OriginalArrivalTime: 20 Apr 2026 21:33:20.4572
 (UTC)
X-MS-Exchange-CrossTenant-Network-Message-Id: 1ed4810a-ed96-488d-a5ea-08de9f2471ad
X-MS-Exchange-CrossTenant-Id: e764c36b-012e-4216-910d-8fd16283182d
X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=e764c36b-012e-4216-910d-8fd16283182d;Ip=[4.79.107.243];Helo=[usbth1es003.ebgroup.elektrobit.com]
X-MS-Exchange-CrossTenant-AuthAs: Internal
X-MS-Exchange-CrossTenant-AuthSource: TreatMessagesAsInternal-DS2PEPF00003447.namprd04.prod.outlook.com
X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem
X-MS-Exchange-Transport-CrossTenantHeadersStamped: CO1PR08MB6514
X-purgate-ID: tlsNG-42698a/1776720808-06D77F3B-028741C5/0/0
X-purgate-type: clean
X-purgate-size: 4659

This commit moves the altp2m_vcpu_initialise and altp2m_vcpu_destroy
functions to common code. This makes it possible to use them in the common
implementation of HVMOP_altp2m_set_domain_state.

This commit contains only code movement, and no change in functionality is
intended.

This is commit 1/2 of the altp2m_vcpu_{initialise,destroy} phase.

Signed-off-by: Rose Spangler <Rose.Spangler@elektrobit.com>
---
v6: Introduced this patch.
---
 xen/arch/x86/include/asm/altp2m.h |  6 -----
 xen/arch/x86/mm/altp2m.c          | 41 -------------------------------
 xen/common/altp2m.c               | 41 +++++++++++++++++++++++++++++++
 xen/include/xen/altp2m.h          |  6 +++++
 4 files changed, 47 insertions(+), 47 deletions(-)

diff --git a/xen/arch/x86/include/asm/altp2m.h b/xen/arch/x86/include/asm/altp2m.h
index b3d348386a00..43dd5d2acd9c 100644
--- a/xen/arch/x86/include/asm/altp2m.h
+++ b/xen/arch/x86/include/asm/altp2m.h
@@ -105,10 +105,6 @@ int altp2m_get_effective_entry(struct p2m_domain *ap2m, gfn_t gfn, mfn_t *mfn,
                                p2m_type_t *t, p2m_access_t *a,
                                bool prepopulate);
 
-/* Alternate p2m VCPU */
-void altp2m_vcpu_initialise(struct vcpu *v);
-void altp2m_vcpu_destroy(struct vcpu *v);
-
 int altp2m_vcpu_enable_ve(struct vcpu *v, gfn_t gfn);
 void altp2m_vcpu_disable_ve(struct vcpu *v);
 
@@ -151,8 +147,6 @@ static inline int _altp2m_get_effective_entry(struct p2m_domain *ap2m,
 
 /* Only declaration is needed. DCE will optimise it out when linking. */
 uint16_t altp2m_vcpu_idx(const struct vcpu *v);
-void altp2m_vcpu_initialise(struct vcpu *v);
-void altp2m_vcpu_destroy(struct vcpu *v);
 int altp2m_vcpu_enable_ve(struct vcpu *v, gfn_t gfn);
 void altp2m_vcpu_disable_ve(struct vcpu *v);
 
diff --git a/xen/arch/x86/mm/altp2m.c b/xen/arch/x86/mm/altp2m.c
index 46374373848d..0542e3ef9196 100644
--- a/xen/arch/x86/mm/altp2m.c
+++ b/xen/arch/x86/mm/altp2m.c
@@ -14,47 +14,6 @@
 #include "mm-locks.h"
 #include "p2m.h"
 
-void
-altp2m_vcpu_initialise(struct vcpu *v)
-{
-    if ( !v->domain->nr_altp2m )
-        return;
-
-    if ( v != current )
-        vcpu_pause(v);
-
-    vcpu_altp2m(v).p2midx = 0;
-    atomic_inc(&altp2m_get_altp2m(v)->active_vcpus);
-
-    altp2m_vcpu_update_p2m(v);
-
-    if ( v != current )
-        vcpu_unpause(v);
-}
-
-void
-altp2m_vcpu_destroy(struct vcpu *v)
-{
-    struct p2m_domain *p2m;
-
-    if ( !v->domain->nr_altp2m )
-        return;
-
-    if ( v != current )
-        vcpu_pause(v);
-
-    if ( (p2m = altp2m_get_altp2m(v)) )
-        atomic_dec(&p2m->active_vcpus);
-
-    altp2m_vcpu_disable_ve(v);
-
-    vcpu_altp2m(v).p2midx = INVALID_ALTP2M;
-    altp2m_vcpu_update_p2m(v);
-
-    if ( v != current )
-        vcpu_unpause(v);
-}
-
 int altp2m_vcpu_enable_ve(struct vcpu *v, gfn_t gfn)
 {
     struct domain *d = v->domain;
diff --git a/xen/common/altp2m.c b/xen/common/altp2m.c
index a731ad7cdab8..e699b64678d8 100644
--- a/xen/common/altp2m.c
+++ b/xen/common/altp2m.c
@@ -59,6 +59,47 @@ void altp2m_teardown(struct domain *d)
     XVFREE(d->altp2m_p2m);
 }
 
+#ifdef CONFIG_X86
+void altp2m_vcpu_initialise(struct vcpu *v)
+{
+    if ( !v->domain->nr_altp2m )
+        return;
+
+    if ( v != current )
+        vcpu_pause(v);
+
+    vcpu_altp2m(v).p2midx = 0;
+    atomic_inc(&altp2m_get_altp2m(v)->active_vcpus);
+
+    altp2m_vcpu_update_p2m(v);
+
+    if ( v != current )
+        vcpu_unpause(v);
+}
+
+void altp2m_vcpu_destroy(struct vcpu *v)
+{
+    struct p2m_domain *p2m;
+
+    if ( !v->domain->nr_altp2m )
+        return;
+
+    if ( v != current )
+        vcpu_pause(v);
+
+    if ( (p2m = altp2m_get_altp2m(v)) )
+        atomic_dec(&p2m->active_vcpus);
+
+    altp2m_vcpu_disable_ve(v);
+
+    vcpu_altp2m(v).p2midx = INVALID_ALTP2M;
+    altp2m_vcpu_update_p2m(v);
+
+    if ( v != current )
+        vcpu_unpause(v);
+}
+#endif
+
 /*
  * altp2m operations are envisioned as being used in several different
  * modes:
diff --git a/xen/include/xen/altp2m.h b/xen/include/xen/altp2m.h
index f5a4d0e60562..7defe6126563 100644
--- a/xen/include/xen/altp2m.h
+++ b/xen/include/xen/altp2m.h
@@ -24,6 +24,12 @@ int altp2m_init(struct domain *d);
 /* Free altp2m views */
 void altp2m_teardown(struct domain *d);
 
+#ifdef CONFIG_X86
+/* Alternate p2m VCPU */
+void altp2m_vcpu_initialise(struct vcpu *v);
+void altp2m_vcpu_destroy(struct vcpu *v);
+#endif
+
 #ifdef CONFIG_ALTP2M
 
 /* Alternate p2m HVM on/off per domain */
-- 
2.34.1



From xen-devel-bounces@lists.xenproject.org Mon Apr 20 21:42:23 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 20 Apr 2026 21:42:23 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1288159.1568475 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wEwNp-0005ez-5A; Mon, 20 Apr 2026 21:42:21 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1288159.1568475; Mon, 20 Apr 2026 21: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 1wEwNp-0005es-2E; Mon, 20 Apr 2026 21:42:21 +0000
Received: by outflank-mailman (input) for mailman id 1288159;
 Mon, 20 Apr 2026 21:42:19 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <Rose.Spangler@elektrobit.com>) id 1wEwNn-0005dM-G4
 for xen-devel@lists.xenproject.org; Mon, 20 Apr 2026 21:42:19 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wEwNm-001R8R-TB
 for xen-devel@lists.xenproject.org; Mon, 20 Apr 2026 23:42:18 +0200
Received: from [10.42.69.4] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <Rose.Spangler@elektrobit.com>)
 id 69e69db4-e002-0a2a0a5209dd-0a2a450488ce-2
 for <xen-devel@lists.xenproject.org>; Mon, 20 Apr 2026 23:42:18 +0200
Received: from [52.101.201.91]
 (helo=PH7PR06CU001.outbound.protection.outlook.com)
 by tlsNG-ebf023.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.1)
 (envelope-from <Rose.Spangler@elektrobit.com>)
 id 69e69b9b-1dec-0a2a45040019-3465c95b1a9a-3
 for <xen-devel@lists.xenproject.org>; Mon, 20 Apr 2026 23:33:17 +0200
Received: from PH7P222CA0027.NAMP222.PROD.OUTLOOK.COM (2603:10b6:510:33a::10)
 by SA6PR08MB10332.namprd08.prod.outlook.com (2603:10b6:806:435::14)
 with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9818.33; Mon, 20 Apr
 2026 21:33:13 +0000
Received: from SA2PEPF00003F66.namprd04.prod.outlook.com
 (2603:10b6:510:33a:cafe::c3) by PH7P222CA0027.outlook.office365.com
 (2603:10b6:510:33a::10) with Microsoft SMTP Server (version=TLS1_3,
 cipher=TLS_AES_256_GCM_SHA384) id 15.20.9791.48 via Frontend Transport; Mon,
 20 Apr 2026 21:33:12 +0000
Received: from usbth1es003.ebgroup.elektrobit.com (4.79.107.243) by
 SA2PEPF00003F66.mail.protection.outlook.com (10.167.248.41) with Microsoft
 SMTP Server (version=TLS1_3, cipher=TLS_AES_256_GCM_SHA384) id 15.20.9791.48
 via Frontend Transport; Mon, 20 Apr 2026 21:33:12 +0000
Received: from usbth1es003 (localhost [127.0.0.1])
 by usbth1es003.ebgroup.elektrobit.com (Postfix) with SMTP id 4fzzHW5CKzz1wdM; 
 Mon, 20 Apr 2026 14:33:11 -0700 (PDT)
Received: from SJ0PR08CU001.outbound.protection.outlook.com
 (mail-sj0pr08cu00106.outbound.protection.outlook.com [40.93.1.78])
 (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)
 key-exchange secp384r1 server-signature RSA-PSS (2048 bits) server-digest
 SHA256) (No client certificate requested)
 by usbth1es003.ebgroup.elektrobit.com (Postfix) with ESMTPS;
 Mon, 20 Apr 2026 14:33:11 -0700 (PDT)
Received: from BY1P220CA0039.NAMP220.PROD.OUTLOOK.COM (2603:10b6:a03:59e::7)
 by DM4PR08MB8334.namprd08.prod.outlook.com (2603:10b6:8:4e::12) with
 Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9818.33; Mon, 20 Apr
 2026 21:33:01 +0000
Received: from SJ1PEPF000026C8.namprd04.prod.outlook.com
 (2603:10b6:a03:59e:cafe::5a) by BY1P220CA0039.outlook.office365.com
 (2603:10b6:a03:59e::7) with Microsoft SMTP Server (version=TLS1_3,
 cipher=TLS_AES_256_GCM_SHA384) id 15.20.9791.48 via Frontend Transport; Mon,
 20 Apr 2026 21:33:01 +0000
Received: from denue6es012.ebgroup.elektrobit.com (213.95.148.172) by
 SJ1PEPF000026C8.mail.protection.outlook.com (10.167.244.105) with Microsoft
 SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id
 15.20.9791.48 via Frontend Transport; Mon, 20 Apr 2026 21:33:00 +0000
Received: from ubuntu.localdomain (10.10.178.50) by
 denue6es012.ebgroup.elektrobit.com (10.243.160.140) with Microsoft SMTP
 Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id
 15.2.2562.35; Mon, 20 Apr 2026 23:32:55 +0200
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@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=elektrobit.com header.i="@elektrobit.com" header.h="From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck"; dkim=pass header.s=selector1 header.d=elektrobit.com header.i="@elektrobit.com" header.h="From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck"
ARC-Seal: i=2; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=pass;
 b=Q9GGR2iMHFupJ2wGN87cZMI6peSj96A5TKavGIJtSiQY949kuX5U1+eiyj7es+r3Jvpd/XuoifO5dG6VzujEQoZs0klmXhr4s9YcqI0CJa/4StWwT4u/yONr/XdXWYCMPGyvJdwa0yPFbz84ty9sFaPlmIS08Sq7Nnkbn4Mi9bsWcE4VOfLjupZzr+WF0r6RIVGdEoO1PX7sXghhm2iowchBAmlO5go3JUwvuFaXlBBlt+2OBYdh8oXn32DmUDloeWFkQKIZQhTThfNv1gXo4TghEcVOA5QZi7YbZtJSEPQUVM/sedgc9Pj7t7vmFrINz4xh6gA7r8FTKU5N0xfCZA==
ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com;
 s=arcselector10001;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1;
 bh=P5BPH7sP6wJ6lFk7/PYOh+kdZ73MBQ4NzGe07wqGO8g=;
 b=fczuNj1r8/3hU3Mu4wGR68bARppeC58rxZXSn9gC54JQ/sHlZ7GxLGhOenz3w3uTfjBX/rh8AjiSjKt3YOha02fzcrXeUAPAsVosIJ99MT1ofRtpPM351h9G4YI7Pz9Gw0zwnkkovlzzbVG5y/aIpdoZWFSYtQkle7LDOqXvoyXYsN4W4RRRV41f05DBVVcJ+q14LsdMSCg2cLDy6JSXrlJJoT7N55sNEafrlqnHj5BDRiZrvvZwuSff5PKfP9nqvQrZhlC96Y73ywJe9eAGRJKFDc+5KohjtHdi27nv4ioI26m863/LaO7A8t2XJQDda2+Tq00LktrweBWY4IKtJw==
ARC-Authentication-Results: i=2; mx.microsoft.com 1; spf=pass (sender ip is
 40.93.1.78) smtp.rcpttodomain=amd.com smtp.mailfrom=elektrobit.com;
 dmarc=pass (p=quarantine sp=none pct=100) action=none
 header.from=elektrobit.com; dkim=pass (signature was verified)
 header.d=elektrobit.com; arc=pass (0 oda=1 ltdi=1
 spf=[1,1,smtp.mailfrom=elektrobit.com]
 dmarc=[1,1,header.from=elektrobit.com])
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=elektrobit.com;
 s=selector1;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck;
 bh=P5BPH7sP6wJ6lFk7/PYOh+kdZ73MBQ4NzGe07wqGO8g=;
 b=vrC9i3rF2yHDkJFU6gPPOeaz0X75QZAtd8zUAX/gc0bl+prAB4yEtjS8TF1i+obSox0KXOn+6wfumHHB6mpBMMhoNEaoprvdb0TH4hVFUZ+2aAD2Mj09va5WWkC2pzLd53oHy9jOUZp0actJn3iogxmLhqoiuRxFoiYQd8cRVDc=
X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 40.93.1.78)
 smtp.mailfrom=elektrobit.com; dkim=pass (signature was verified)
 header.d=elektrobit.com;dmarc=pass action=none header.from=elektrobit.com;
Received-SPF: Pass (protection.outlook.com: domain of elektrobit.com
 designates 40.93.1.78 as permitted sender) receiver=protection.outlook.com;
 client-ip=40.93.1.78; helo=SJ0PR08CU001.outbound.protection.outlook.com; pr=C
ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none;
 b=INHQHzFBus8fJcIy+9wDMaO8kXxp6QDPkg90YHfbwKWwYNykPmG4cX0VJSvWiP6G8H6yE+7/5OUTrM0AHJzwu5JFzCRYC9jaTwqNPXP8gfVSfekab5+8XpeTjZb4k2gAGxTvSzG36fSp5osZ90hbAMGn8KYfBhNcaGenwgP1cMaQLGAn9PGJelG0HU4Xk14v8sfrHjjtybIYZbM05Rjn3eelHBKErRLLXeX3g3m55mqe36MRk/Ru07BzzvKwAAtJgng2Vpl13LXxOgfz95k4EwjBADgpqKm3ADSiyeg1eeONcySBH3GLZiGJ0lQpJ9TFfoT2x6b9daURXkQmsi5EUQ==
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com;
 s=arcselector10001;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1;
 bh=P5BPH7sP6wJ6lFk7/PYOh+kdZ73MBQ4NzGe07wqGO8g=;
 b=YvftqaE+yBLYVKbhoRfpAdpJkE+F0zAF1dAWSM3ggXfmjoVLlgO8dpCjz/ouDaCUV1wJeKIsyG+dOB3d8PthmHQqhkii8DnYmAcanvP39fTwePF+olcHREadf3FcFAJff31GK63l9iCSYt7lQmZPEbqNUKY/WBQ67GbajSFozx+s4txQHwKaN3TVui+omo5Ze3QxB6IHuV4NhwJmSLYLmNSqqgUwzOex7cAyOfvnp7X0IhR873LYnjkOkif1fbTx4sXRkYiigl3wxDe7VtCyGzK4GNZtheJZH+gHKp1REQYIO7agZibbuitvQ46h6JwXH9lG1nr+eFxjJ2ne3qk/1Q==
ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass (sender ip is
 213.95.148.172) smtp.rcpttodomain=lists.xenproject.org
 smtp.mailfrom=elektrobit.com; dmarc=pass (p=quarantine sp=none pct=100)
 action=none header.from=elektrobit.com; dkim=none (message not signed);
 arc=none (0)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=elektrobit.com;
 s=selector1;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck;
 bh=P5BPH7sP6wJ6lFk7/PYOh+kdZ73MBQ4NzGe07wqGO8g=;
 b=vrC9i3rF2yHDkJFU6gPPOeaz0X75QZAtd8zUAX/gc0bl+prAB4yEtjS8TF1i+obSox0KXOn+6wfumHHB6mpBMMhoNEaoprvdb0TH4hVFUZ+2aAD2Mj09va5WWkC2pzLd53oHy9jOUZp0actJn3iogxmLhqoiuRxFoiYQd8cRVDc=
X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 213.95.148.172)
 smtp.mailfrom=elektrobit.com; dkim=none (message not signed)
 header.d=none;dmarc=pass action=none header.from=elektrobit.com;
Received-SPF: Pass (protection.outlook.com: domain of elektrobit.com
 designates 213.95.148.172 as permitted sender)
 receiver=protection.outlook.com; client-ip=213.95.148.172;
 helo=denue6es012.ebgroup.elektrobit.com; pr=C
From: Rose Spangler <Rose.Spangler@elektrobit.com>
To: <xen-devel@lists.xenproject.org>
CC: Sergej Proskurin <proskurin@sec.in.tum.de>, 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>, Julien Grall <julien.grall@arm.com>
Subject: [RFC PATCH v6 19/43] arm/p2m: Change function prototype of p2m_alloc_table
Date: Mon, 20 Apr 2026 17:31:42 -0400
Message-ID: <20260420213206.208750-20-Rose.Spangler@elektrobit.com>
X-Mailer: git-send-email 2.34.1
In-Reply-To: <20260420213206.208750-1-Rose.Spangler@elektrobit.com>
References: <20260420213206.208750-1-Rose.Spangler@elektrobit.com>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit
Content-Type: text/plain
X-Originating-IP: [10.10.178.50]
X-ClientProxiedBy: denue6es012.ebgroup.elektrobit.com (10.243.160.140) To
 denue6es012.ebgroup.elektrobit.com (10.243.160.140)
X-EOPAttributedMessage: 1
X-MS-Exchange-SkipListedInternetSender:
 ip=[213.95.148.172];domain=denue6es012.ebgroup.elektrobit.com
X-MS-TrafficTypeDiagnostic:
	SJ1PEPF000026C8:EE_|DM4PR08MB8334:EE_|SA2PEPF00003F66:EE_|SA6PR08MB10332:EE_
X-MS-Office365-Filtering-Correlation-Id: 1b190bcd-d176-453d-8c40-08de9f246cea
X-SM-outgoing: yes
X-MS-Exchange-SenderADCheck: 1
X-MS-Exchange-AntiSpam-Relay: 0
X-Microsoft-Antispam-Untrusted:
 BCL:0;ARA:13230040|82310400026|36860700016|376014|1800799024|56012099003|22082099003|18002099003;
X-Microsoft-Antispam-Message-Info-Original:
 =?us-ascii?Q?EfxR0ne5QgkZ/z5KX/JxXkKXtjt1B6sw9bYnKC8HSfu/5AXSF9n85ETwyXv1?=
 =?us-ascii?Q?PQj7CDlkAh+W7nx6hT/A5lRSNTPiX6JptYwnZvDAVN8qOWzvv5ukL/G+RY05?=
 =?us-ascii?Q?VPWKNatCZZYtnaHi5xXLh64RIG35AVwO4q44LBEUEpo78sdFPHoyzuWJjstR?=
 =?us-ascii?Q?YEErF2NUvX/gZeTVcA0TW4250NjXpfxn3b4iM+o4sk3fa6u8je3PikrvHGbB?=
 =?us-ascii?Q?TqqkO5KUOPyDCFX+Wxwd4VoTP7YULpyLHtqbKv05B8e1Mj69ld3oWozPl5Gq?=
 =?us-ascii?Q?n0bebvqXTTNROmvQfEBeXgSrjiwQyz+u3r6dsgNdSkUiH1AisNacLUJTNw9t?=
 =?us-ascii?Q?QUjJ0BVF2R4V+UOhu95r/tiPNBLT50Z06JJTD31QLqtLUBnGZJq6vGiDSEX4?=
 =?us-ascii?Q?42AwOATbmaoGBAX5IT09ux4PgFS1M393HfL+mEh2imbhgS2TKL0kRHzEJyxF?=
 =?us-ascii?Q?YtjIgnxWudNjIxNYyBCocHooIhoLm+gX6bC2m7WuBwUsA4QM8tFE/HiQs9fV?=
 =?us-ascii?Q?PYHUor/2kuEyvxSDDmazTa7R4kBMhF7HWgs/V3YhpmyeTjJPwDBcAvpXSv56?=
 =?us-ascii?Q?/ZolF6QHPKhjiqvZ/2QgwW/SDtpJJXJzOpsa5zxmdei7uNTIiIeIN6xxmaC4?=
 =?us-ascii?Q?CYqXL2tCmjQB/3qdgl4RqYA75waxMLGCsF52PcXU+Dv1sl536tHdV6Z7oIPy?=
 =?us-ascii?Q?usb9pge28W3zjsLvHDFZaVXOWraDriBV9NbCDMKfsICXmlZ95w4nwUdliES0?=
 =?us-ascii?Q?cIBwLjhi3NULn6zE3e6wlhatflvz/G1R6XsyTiKFSvujr6srmYVtB3xSZxbH?=
 =?us-ascii?Q?AjEKPfuZNTdzqAjsLEC6CZhkZsxGP/IJrm/Gzd3WJpGs5mTNMI6pYWwip2zF?=
 =?us-ascii?Q?tKMFAfpy03vpkL1X0gjy4hTUMn+sPlkg8cUuFAeLfzJ2aLlrONrfk7fwxYV7?=
 =?us-ascii?Q?MQgcYQ7s6sD8snClRa3GIXpNIOueRYjA0gcL9T0BnHflmsXuDxbmxhFzWLS9?=
 =?us-ascii?Q?P+PPPNPzKTGbhxI9Tzw2N5PEh7dIksN5NXb6aSIfCyPHU8wZLcK60dBNmmQH?=
 =?us-ascii?Q?FNd4MlHyRg7f3j2cXJw4ix+itHmcOd9qfx7sMq0naArkZBr4uTSItJKeEk7B?=
 =?us-ascii?Q?yXagJbKRxeD3TWQ9191VSg8xDgSNlwTgU60WNdTXBUG+26ehCJyPZcbEnRiS?=
 =?us-ascii?Q?0d+pLwHEMt5BK5w6?=
X-Forefront-Antispam-Report-Untrusted:
 CIP:213.95.148.172;CTRY:DE;LANG:en;SCL:1;SRV:;IPV:CAL;SFV:NSPM;H:denue6es012.ebgroup.elektrobit.com;PTR:eth1-fw1-nbg6.eb.noris.de;CAT:NONE;SFS:(13230040)(82310400026)(36860700016)(376014)(1800799024)(56012099003)(22082099003)(18002099003);DIR:OUT;SFP:1102;
X-Exchange-RoutingPolicyChecked:
 TvyhFok86wBk6XDQxer6ElThbwfEMkUP4/uT7xnlvw2A7LJHnnQpULdzV3PvNh5ej8inf30//Js3aaoHO9zpcAo0wTMyfJZ/HlVz9V1FjTsCNts72EVUBqcq2fh4HufHZAWErvBPn3KHb5bXPPC34C7B0uZDHl036JLsISpnArYu1OyfOtJQBMfvLLwGTKPd3UW8gEF6vtFwW5bMojOlI8fbYn/7LgGAzbEcLBGjGmSWjEXrHFu/aIBJ7UabUnXDYjg4FkGL2NUaHsjwmx6Y4V4UkmQK5nDrrzoCk0AR5Y2cZP6rLIL6Lagp8HIFzwpjpQ/CXrhHn6aLiy+swHArJQ==
X-MS-Exchange-Transport-CrossTenantHeadersStamped: DM4PR08MB8334
X-MS-Exchange-SkipListedInternetSender:
 ip=[40.93.1.78];domain=SJ0PR08CU001.outbound.protection.outlook.com
X-MS-Exchange-ExternalOriginalInternetSender:
 ip=[40.93.1.78];domain=SJ0PR08CU001.outbound.protection.outlook.com
X-MS-Exchange-Transport-CrossTenantHeadersStripped:
 SA2PEPF00003F66.namprd04.prod.outlook.com
X-MS-PublicTrafficType: Email
X-MS-Office365-Filtering-Correlation-Id-Prvs:
	4ac4f3e7-76ac-4414-4cdc-08de9f246607
X-Microsoft-Antispam:
	BCL:0;ARA:13230040|376014|14060799003|36860700016|35042699022|156008|82310400026|1800799024|56012099003|22082099003|18002099003;
X-Microsoft-Antispam-Message-Info:
	=?us-ascii?Q?3z5apNUBMCggOxwaU04D4Xg4AT1lTqHiJtF/YZbISoe00mAKOmJywQu6FJzp?=
 =?us-ascii?Q?3iBlWuuIu339mTGk/XIW3rpHJfZyvIJDE2bJpQ5nPnO17185NCPj9RBWkPip?=
 =?us-ascii?Q?OLn6NQsKs391GRoRoK3pZuukySX39B9xcFT3RcqFh+rU5k68mwVbn8cJSLci?=
 =?us-ascii?Q?sKUskgtaTbTJKJu76wkc4NZ1MDa+gY0ZnxILRIIBNNk1SV49vazqb8qqGT2d?=
 =?us-ascii?Q?4R13e5urbs6ujW4EnRIZeV+mHImzwp8laid6IlED9GCP4gRYR6RfYc0GS8+y?=
 =?us-ascii?Q?c3e0/dEs0ZAIQ8JuLYr0ZtckgPIHlAOKLKj3UyBUP7rPf4WUhOyitg2BZUnc?=
 =?us-ascii?Q?T1ntOfBggAGqI9LrdYdeQhM90nIBB7Mc5ixo9juhCgRZ0X01MntdgWRzx8qf?=
 =?us-ascii?Q?PWhKExfgMVPsl03+2XQQiPgo+p/zy8o8QeHhgbGvxKNSGLA+wNs29E/sVhG9?=
 =?us-ascii?Q?2tF2PT9dELrhdhxenUeVAeX9muOaZOeeVuVeQkBDoutcxpL4DO9ZqPlfdEDX?=
 =?us-ascii?Q?ohVmKyTTqzvUb/6tYMGJsIl9YiWjZkVbas2Dpw5LsYLXLt0pFb7fi/EfKRS7?=
 =?us-ascii?Q?xtSDE+b0fZEPWpt5/6gplGzdaPCp+M5PvQio9bL7H4MvDb3Tnfawo1Nszmpb?=
 =?us-ascii?Q?8NqPmplL4A1DVTlUcTEnU91TzPVcKo5tgOSuzYjXJCw4pkhWiTHMSNGYJgPP?=
 =?us-ascii?Q?U6cQ5S0yySoWcS8FHhdCJhyfMI6NJ5JtdlBkhHuPT7+wCInwBCJu1JAbrJC9?=
 =?us-ascii?Q?LXC8LSH2HT7aXxoKU5saY6Se51s3SEJl97SrNNxhI8mQToXff5YV9RKGqNWu?=
 =?us-ascii?Q?MhkNRzEcAEdG7taY2uPbWZ9428UUdxKSW2Qx7BIaF3U4Xy52PwEaKAFxsc2c?=
 =?us-ascii?Q?cv6rarwukhllg7sHeklcTPQfgkUs3zH6vypM7j8Mg2hv4JVHkkbbzgs3TDcT?=
 =?us-ascii?Q?TF2tttf7dy9f/AEI2dS7YTAL7XZ8n2xKo6NKR2S3pB1XDAE+Ln9214IjnaDT?=
 =?us-ascii?Q?Ics9N2wxGC34drXoPMaaYOMv0SjlPGWCRf4kw9nGsRiy29tG4sMNWrfyH1p/?=
 =?us-ascii?Q?bj4mDnVzyanqOYzEId9pHA5t9CwuybTqhsmhbz+b1NVW7rbO7kLlHtD5JI4S?=
 =?us-ascii?Q?0VXVLvKuo/I0VKjzxNkJvqx1pWaYi8aEj6wuiuJEKszNAbmGQhlpgWehYXdf?=
 =?us-ascii?Q?ZYCtRDhALF7jF1Iu?=
X-Forefront-Antispam-Report:
	CIP:4.79.107.243;CTRY:US;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:SJ0PR08CU001.outbound.protection.outlook.com;PTR:mail-sj0pr08cu00106.outbound.protection.outlook.com;CAT:NONE;SFS:(13230040)(376014)(14060799003)(36860700016)(35042699022)(156008)(82310400026)(1800799024)(56012099003)(22082099003)(18002099003);DIR:OUT;SFP:1102;
X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1
X-MS-Exchange-AntiSpam-MessageData-0:
	3EhjpJEHMQnct9dyhsV5u6R1QwxylZ6yIouDcbYOinsikcZnu2UXbeLdOYDNU7DhW8h9rOQ04Q4vvEXJZUyZguKz5XUAl4qFoVNPB2dVMoZpYLoFaGPtL8AOZRNjRKbV0v6qxvl/r01d9uq2U4SPUdCRrzDy03o1O8RywoU80CZEuGGOo3Qqh+Ykuw3hQI/4nESw9AJCzBkhodFWTXh9+5zCD7eaHsFcZw9j0wE6LHAR9RGDL40jIzKRbXBx4Bftmj011iEPKyWtJ0cG/51r7kuX9J3HFqurjbBaN5MHjPL9NZ/rMlRFDn/EncXoSBUBpIeg3LVdZLU2louK9scxLCs6JknHpkvkWwA+30ZtYQwg8WW2wyVsYFs7nUsxpljGw2Cp3z6DUDmFmAZExHE5ObprMTq/rAJdYvpT/4wQYNS8v+E9mOYuo+NZCBgJIH+G
X-OriginatorOrg: elektrobit.com
X-MS-Exchange-CrossTenant-OriginalArrivalTime: 20 Apr 2026 21:33:12.4667
 (UTC)
X-MS-Exchange-CrossTenant-Network-Message-Id: 1b190bcd-d176-453d-8c40-08de9f246cea
X-MS-Exchange-CrossTenant-Id: e764c36b-012e-4216-910d-8fd16283182d
X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=e764c36b-012e-4216-910d-8fd16283182d;Ip=[4.79.107.243];Helo=[usbth1es003.ebgroup.elektrobit.com]
X-MS-Exchange-CrossTenant-AuthAs: Internal
X-MS-Exchange-CrossTenant-AuthSource: TreatMessagesAsInternal-SA2PEPF00003F66.namprd04.prod.outlook.com
X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem
X-MS-Exchange-Transport-CrossTenantHeadersStamped: SA6PR08MB10332
X-purgate-ID: tlsNG-ebf023/1776720797-4B7693FF-7995FDB3/0/0
X-purgate-type: clean
X-purgate-size: 1589

From: Sergej Proskurin <proskurin@sec.in.tum.de>

The function "p2m_alloc_table" should be able to allocate 2nd stage
translation tables not only for the host's p2m but also for alternate
p2m's.

This commit is a refactor and contains no functional changes.

This is commit 8/12 of the altp2m_init/altp2m_teardown routines phase.

Signed-off-by: Sergej Proskurin <proskurin@sec.in.tum.de>
Acked-by: Julien Grall <julien.grall@arm.com>
---
v2: Removed altp2m table initialization from "p2m_table_init".

v3: Removed initialization of the field d->arch.altp2m_active in
    "p2m_table_init" to avoid altp2m initialization throughout different
    files.

    Merged the function "p2m_alloc_table" and "p2m_table_init".
---
 xen/arch/arm/mmu/p2m.c | 6 ++----
 1 file changed, 2 insertions(+), 4 deletions(-)

diff --git a/xen/arch/arm/mmu/p2m.c b/xen/arch/arm/mmu/p2m.c
index 51753bb2c34d..f546f63f2489 100644
--- a/xen/arch/arm/mmu/p2m.c
+++ b/xen/arch/arm/mmu/p2m.c
@@ -1426,10 +1426,8 @@ static struct page_info *p2m_allocate_root(void)
     return page;
 }
 
-static int p2m_alloc_table(struct domain *d)
+static int p2m_alloc_table(struct p2m_domain *p2m)
 {
-    struct p2m_domain *p2m = p2m_get_hostp2m(d);
-
     p2m->root = p2m_allocate_root();
     if ( !p2m->root )
         return -ENOMEM;
@@ -1576,7 +1574,7 @@ static int p2m_initialise(struct domain *d, struct p2m_domain *p2m)
     if ( rc )
         return rc;
 
-    rc = p2m_alloc_table(d);
+    rc = p2m_alloc_table(p2m);
     if ( rc )
         return rc;
 
-- 
2.34.1



From xen-devel-bounces@lists.xenproject.org Mon Apr 20 21:42:26 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 20 Apr 2026 21:42:26 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1288160.1568484 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wEwNu-0005wV-Ci; Mon, 20 Apr 2026 21:42:26 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1288160.1568484; Mon, 20 Apr 2026 21:42: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 1wEwNu-0005wO-9O; Mon, 20 Apr 2026 21:42:26 +0000
Received: by outflank-mailman (input) for mailman id 1288160;
 Mon, 20 Apr 2026 21:42:25 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <Rose.Spangler@elektrobit.com>) id 1wEwNt-0005uP-B3
 for xen-devel@lists.xenproject.org; Mon, 20 Apr 2026 21:42:25 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wEwNs-008j7E-O2
 for xen-devel@lists.xenproject.org; Mon, 20 Apr 2026 23:42:24 +0200
Received: from [10.42.69.8] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <Rose.Spangler@elektrobit.com>)
 id 69e69daa-bab6-0a2a0a5309dd-0a2a4508afee-16
 for <xen-devel@lists.xenproject.org>; Mon, 20 Apr 2026 23:42:24 +0200
Received: from [40.93.198.88]
 (helo=CY7PR03CU001.outbound.protection.outlook.com)
 by tlsNG-c1860d.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.1)
 (envelope-from <Rose.Spangler@elektrobit.com>)
 id 69e69ba1-63b5-0a2a45080019-285dc6581f58-3
 for <xen-devel@lists.xenproject.org>; Mon, 20 Apr 2026 23:33:23 +0200
Received: from PH3PEPF000040A9.namprd05.prod.outlook.com (2603:10b6:518:1::4b)
 by DS0PR08MB8541.namprd08.prod.outlook.com (2603:10b6:8:116::17) with
 Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9818.32; Mon, 20 Apr
 2026 21:33:12 +0000
Received: from SA2PEPF00003F65.namprd04.prod.outlook.com
 (2a01:111:f403:f90f::6) by PH3PEPF000040A9.outlook.office365.com
 (2603:1036:903:49::3) with Microsoft SMTP Server (version=TLS1_3,
 cipher=TLS_AES_256_GCM_SHA384) id 15.20.9791.48 via Frontend Transport; Mon,
 20 Apr 2026 21:33:12 +0000
Received: from usbth1es003.ebgroup.elektrobit.com (4.79.107.243) by
 SA2PEPF00003F65.mail.protection.outlook.com (10.167.248.40) with Microsoft
 SMTP Server (version=TLS1_3, cipher=TLS_AES_256_GCM_SHA384) id 15.20.9791.48
 via Frontend Transport; Mon, 20 Apr 2026 21:33:11 +0000
Received: from usbth1es003 (localhost [127.0.0.1])
 by usbth1es003.ebgroup.elektrobit.com (Postfix) with SMTP id 4fzzHW0zb6z1wdY; 
 Mon, 20 Apr 2026 14:33:11 -0700 (PDT)
Received: from DM2PR0701CU001.outbound.protection.outlook.com
 (mail-dm2pr0701cu00104.outbound.protection.outlook.com [40.93.13.68])
 (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)
 key-exchange secp384r1 server-signature RSA-PSS (2048 bits) server-digest
 SHA256) (No client certificate requested)
 by usbth1es003.ebgroup.elektrobit.com (Postfix) with ESMTPS;
 Mon, 20 Apr 2026 14:33:10 -0700 (PDT)
Received: from BY1P220CA0047.NAMP220.PROD.OUTLOOK.COM (2603:10b6:a03:59e::9)
 by CY3PR08MB10748.namprd08.prod.outlook.com (2603:10b6:930:100::19) with
 Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9818.33; Mon, 20 Apr
 2026 21:33:06 +0000
Received: from SJ1PEPF000026C8.namprd04.prod.outlook.com
 (2603:10b6:a03:59e:cafe::82) by BY1P220CA0047.outlook.office365.com
 (2603:10b6:a03:59e::9) with Microsoft SMTP Server (version=TLS1_3,
 cipher=TLS_AES_256_GCM_SHA384) id 15.20.9791.48 via Frontend Transport; Mon,
 20 Apr 2026 21:33:05 +0000
Received: from denue6es012.ebgroup.elektrobit.com (213.95.148.172) by
 SJ1PEPF000026C8.mail.protection.outlook.com (10.167.244.105) with Microsoft
 SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id
 15.20.9791.48 via Frontend Transport; Mon, 20 Apr 2026 21:33:05 +0000
Received: from ubuntu.localdomain (10.10.178.50) by
 denue6es012.ebgroup.elektrobit.com (10.243.160.140) with Microsoft SMTP
 Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id
 15.2.2562.35; Mon, 20 Apr 2026 23:33:01 +0200
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@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=elektrobit.com header.i="@elektrobit.com" header.h="From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck"; dkim=pass header.s=selector1 header.d=elektrobit.com header.i="@elektrobit.com" header.h="From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck"
ARC-Seal: i=2; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=pass;
 b=eha1VwaRxYuut5YLpUNEo8UEptBRumFr3Yq35yL3Eh89j1j4i3SwJzPWcrIbMCUc+SRqZTB6FzYagRI+kswv0CdA76QyPPHf5nMlEnAi0HY0p5qNYncqXJ8/Xu4OpsV6Ll9mj4+JCcPA4I0K07awSAiVrkKRfP2J320RYe/0hB+tC0anJk2eXAwLR7sKYdKtl1gRqlL/1aQyBappxIerspC9A9SZgyGcl/7mQap0T+Tsyyl9sSEfi9yYnne/TFTo09z/I7pIvY65/r4ihAyI45utE+yDGNI8RkoLkENXyGrzeZoF3PiBqDK2bP30vohvFGJ5WQvf5+RO56M4tBgElA==
ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com;
 s=arcselector10001;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1;
 bh=Bo2v4ugtYXSGdSqYmYudyzdTq4r/l5sKQLamsKzHkjU=;
 b=cDBjyQuOJZS727KsIWz74OVIjb/GrWvdEaQmGvNOvC419oBkjXFrutJ1vxYor2+ppqwwL6nHno3PZUdNSE1mgwHrnTJ/Vs6cqd7n1FV0P9pbGVfoeyAF0CuBABuChDZCPWMq3bb6Zq5EsoIaPndhlE21v35H9nt+nKh4WLvLLYYeUtVzqVr5dqW9YYt5/gLZK9czhPSuIPIcTGm+48NyWS+B6FaiujX88EiMbD/ufcvz6m0PHBMV7q2WXAOj9OL4U7EQ6HjCgpHdP88ffabjx1nrkiQL8AGx2vJdyj/SyMP5oWKt5NGYJzkJW1QHRkmr7pqkUzex5hH0wNwTTchP6g==
ARC-Authentication-Results: i=2; mx.microsoft.com 1; spf=pass (sender ip is
 40.93.13.68) smtp.rcpttodomain=amd.com smtp.mailfrom=elektrobit.com;
 dmarc=pass (p=quarantine sp=none pct=100) action=none
 header.from=elektrobit.com; dkim=pass (signature was verified)
 header.d=elektrobit.com; arc=pass (0 oda=1 ltdi=1
 spf=[1,1,smtp.mailfrom=elektrobit.com]
 dmarc=[1,1,header.from=elektrobit.com])
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=elektrobit.com;
 s=selector1;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck;
 bh=Bo2v4ugtYXSGdSqYmYudyzdTq4r/l5sKQLamsKzHkjU=;
 b=n3fVOwQUS//cMRWrr3gurd0dQBAk+t2SOJUOgZ9oO1cgiW1ZOjFV5zCNuOp+ZHQu9+jH1JsV/cfzgBKLP6pkZ3LmQdCon/Wz18kdH4mVJHMt8QNI+n6eki9UsbI9LAvyilmaNwuctVjRmfGgmtSy7X/RoAdN/2N1bUvf72ScnTQ=
X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 40.93.13.68)
 smtp.mailfrom=elektrobit.com; dkim=pass (signature was verified)
 header.d=elektrobit.com;dmarc=pass action=none header.from=elektrobit.com;
Received-SPF: Pass (protection.outlook.com: domain of elektrobit.com
 designates 40.93.13.68 as permitted sender) receiver=protection.outlook.com;
 client-ip=40.93.13.68; helo=DM2PR0701CU001.outbound.protection.outlook.com;
 pr=C
ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none;
 b=jnO6fntf58mlbTWaSf748FGIU3I69jxLSSl8JmPrOs0lAGHXpbHJVSh+wvXLtfCZYROCP5as/qnub/H6jLiu8mcCeOX0WFGzJjRvbAr6Svnb9gumUzT8HhcS2+CLP52UwvtrslnPytjPmWh2V1Jq+/jCa+t5KOMnpyt1qyKcAnvjikout5VrAdXCni3HSWiGTnVjM4CQwLYQxEcvOsNSFvCNqOOVnDHo6fbCIvvNJvyrlDlIb59pOHOUgs8C9VqaAiJ1Zb9sr5gmJ3jGaFTXuZGaCOc8hHgSh0OfmP1BXTLxscGsPKpjeWZ4p4hHhHeTPSThReulGAUOKfCz8aZiug==
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com;
 s=arcselector10001;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1;
 bh=Bo2v4ugtYXSGdSqYmYudyzdTq4r/l5sKQLamsKzHkjU=;
 b=wHb/zWfpcgM6vFiNrnFEoR+ABVdSVMi0Y9Nu7AVFrR3q9dc9q6i1AbLOX9sVGh+CreSxpirxcxL/M2cagAcf6+Uvuy4ZLL7Fu45b1Y8pSVVJi0njjv9WTsH6u48R+xEMGtAAp67y1ShJhtIAumHn3fyO72GvvofUwxPuBVp4BvMs6dMTtFrhyLTAu4gopV+G1V7C4G2TLnAqY5Y/z8zNgP0If/AJC17WkXpZzsPHByI7DVE+rLoJI05jaxvDm9rpZxDHkMYKdAeiiCXEuPbkddmX73TCnfpQmJY1Cal+hR7vfoYBmF/+Fj/6fPAz1Q2MRNAV3LpEhLlOveFBqCEpRw==
ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass (sender ip is
 213.95.148.172) smtp.rcpttodomain=lists.xenproject.org
 smtp.mailfrom=elektrobit.com; dmarc=pass (p=quarantine sp=none pct=100)
 action=none header.from=elektrobit.com; dkim=none (message not signed);
 arc=none (0)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=elektrobit.com;
 s=selector1;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck;
 bh=Bo2v4ugtYXSGdSqYmYudyzdTq4r/l5sKQLamsKzHkjU=;
 b=n3fVOwQUS//cMRWrr3gurd0dQBAk+t2SOJUOgZ9oO1cgiW1ZOjFV5zCNuOp+ZHQu9+jH1JsV/cfzgBKLP6pkZ3LmQdCon/Wz18kdH4mVJHMt8QNI+n6eki9UsbI9LAvyilmaNwuctVjRmfGgmtSy7X/RoAdN/2N1bUvf72ScnTQ=
X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 213.95.148.172)
 smtp.mailfrom=elektrobit.com; dkim=none (message not signed)
 header.d=none;dmarc=pass action=none header.from=elektrobit.com;
Received-SPF: Pass (protection.outlook.com: domain of elektrobit.com
 designates 213.95.148.172 as permitted sender)
 receiver=protection.outlook.com; client-ip=213.95.148.172;
 helo=denue6es012.ebgroup.elektrobit.com; pr=C
From: Rose Spangler <Rose.Spangler@elektrobit.com>
To: <xen-devel@lists.xenproject.org>
CC: Rose Spangler <Rose.Spangler@elektrobit.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?q?Roger=20Pau=20Monn=C3=A9?=
	<roger.pau@citrix.com>, Sergej Proskurin <proskurin@sec.in.tum.de>, "Aqib
 Javaid" <Aqib.Javaid@elektrobit.com>
Subject: [RFC PATCH v6 23/43] arm/altp2m: Add support for altp2m init/teardown routines
Date: Mon, 20 Apr 2026 17:31:46 -0400
Message-ID: <20260420213206.208750-24-Rose.Spangler@elektrobit.com>
X-Mailer: git-send-email 2.34.1
In-Reply-To: <20260420213206.208750-1-Rose.Spangler@elektrobit.com>
References: <20260420213206.208750-1-Rose.Spangler@elektrobit.com>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit
Content-Type: text/plain
X-Originating-IP: [10.10.178.50]
X-ClientProxiedBy: denue6es012.ebgroup.elektrobit.com (10.243.160.140) To
 denue6es012.ebgroup.elektrobit.com (10.243.160.140)
X-EOPAttributedMessage: 1
X-MS-Exchange-SkipListedInternetSender:
 ip=[213.95.148.172];domain=denue6es012.ebgroup.elektrobit.com
X-MS-TrafficTypeDiagnostic:
	SJ1PEPF000026C8:EE_|CY3PR08MB10748:EE_|SA2PEPF00003F65:EE_|DS0PR08MB8541:EE_
X-MS-Office365-Filtering-Correlation-Id: 5ec4ddb7-dd66-4878-c2b7-08de9f246c93
X-SM-outgoing: yes
X-MS-Exchange-SenderADCheck: 1
X-MS-Exchange-AntiSpam-Relay: 0
X-Microsoft-Antispam-Untrusted:
 BCL:0;ARA:13230040|82310400026|36860700016|7416014|376014|1800799024|56012099003|22082099003|18002099003;
X-Microsoft-Antispam-Message-Info-Original:
 =?us-ascii?Q?EherKj2DNK3ooVZ9s0xYv6gY6ZLA9DPNTqcFoJ1UNvyo3OwljZx+FGUi9GP2?=
 =?us-ascii?Q?FgzZNxoUvgREsDRQSek6cE1yUXawpz5Mv3KwDnfzfSgdSM/8CTtei4USDm5l?=
 =?us-ascii?Q?3Nibtay80nmQn1U2Xi4xAQDjv2aWPfn8Q5Gst5OanFlZT6fJGTS37ZsX8vkO?=
 =?us-ascii?Q?Y5FpYuqO3FSqO0DXkU14bJexpw0gG/SuYVJAOMAuwxPB4sgmVfaIMc0aNNsf?=
 =?us-ascii?Q?qraYj9vk1PH4EaEDELpZTBQ1oAQPPra4rNJI+aYcIqgagVI5Gx6tbf7jxOgC?=
 =?us-ascii?Q?kMyIa1ZjdVflmpYMccdf5jIjTig6xlFCAYFHm99tXKH+SRvl9gTbRmfsgHx5?=
 =?us-ascii?Q?s7YwDbeVMcgQjuaiJSm/zsyDW6Ff+AVAl8Jbw5ZTXM1O131rHoFiK0cxSpJD?=
 =?us-ascii?Q?Z43WpoWytmBx2t31qKAFie+uW7hLvDOSgBwPTDIHaCLHttDzFdLaLtcwCQ0a?=
 =?us-ascii?Q?OIsA3vyIG6ja+p2IJuZkA3eaugYkQ86NmT7qUb0IBY+Sj1cYEHklLMpJgG5J?=
 =?us-ascii?Q?fMp0ERilU/MW9tAVtx9k6Yp/L6qcKqfIgelBjgpaXcnJ6m0Gn9XUVpM/o1dv?=
 =?us-ascii?Q?onCmndyhbiGpk84RnCDrtD6yjYh+1VmeKQ15jJkFpDm/Aw+grxOnD3HWgxIr?=
 =?us-ascii?Q?Lf81cOiQHEzd+2sm5765B6WkTK8FXU2Vz6re+lzU4vnzErZ9aUgchIJ5N7P5?=
 =?us-ascii?Q?zDPsEF3YOXMaIwJzccLs6pb+wVjRp+BdYmh7n/Xnos+7Pg6BlNRVBZg2uZDl?=
 =?us-ascii?Q?0B7CxgaQdyzVBA1NvAyJeVuhSdCzkKNTGr6p9DcTCuFDFsyqrkiyrAvzTNRz?=
 =?us-ascii?Q?/TK1mPTBRDNGrFE4+2IRJgPaZbEJmxxYZPXuBqk716yZnKYiU/3o1gPLZTmg?=
 =?us-ascii?Q?XfvJyfGVX2DF8ncl42zHjpBml5P487GOczHHWXkCPatdU6FCcJ7cr93adeGQ?=
 =?us-ascii?Q?uPDF9wgrou2bBCIjQqM04k7gnkMaR7N8DdLJlOrbk72hOFxnvYYgrBo+TcXy?=
 =?us-ascii?Q?nWhZcjpwrBJ46voobQpVVNFSgmaXUyGH9XXH7YWzTMHYFqdsa49EaYneLj+z?=
 =?us-ascii?Q?BVJuqnTJnKpgxWIdif173X4vmIrS6bU6NIFEz5sJ0oVRjxZgWQ7NG/loFzuD?=
 =?us-ascii?Q?Mzog0/3T36fDpm4VJ29BretiRRtecTpFPNgKHq9sv3udsGnzAnsgcl31kJHx?=
 =?us-ascii?Q?F+pLBx1qQoQPv9CKROhHOYIW3Cu276r7TMuWs6r3njSqPiF4l7/hxQUxQ98?=
 =?us-ascii?Q?=3D?=
X-Forefront-Antispam-Report-Untrusted:
 CIP:213.95.148.172;CTRY:DE;LANG:en;SCL:1;SRV:;IPV:CAL;SFV:NSPM;H:denue6es012.ebgroup.elektrobit.com;PTR:eth1-fw1-nbg6.eb.noris.de;CAT:NONE;SFS:(13230040)(82310400026)(36860700016)(7416014)(376014)(1800799024)(56012099003)(22082099003)(18002099003);DIR:OUT;SFP:1102;
X-Exchange-RoutingPolicyChecked:
 d3uW8v+Xv6qGv7ugB3sG0GDaz8XvM3WrK63WtOeP1QjZ5MbPN40VAc9T8M1eOnhyhUbPw4HHZZD5/GSYSKQUuhRqrNPwlsxCCPXJaRr+A/psAzuRUrfS7LN+GuWamIvmUMSGnLNWMU6gEyq6gGuzNX3FteKwvHcAwUpNzo6cAZ2tiStgfOuZ2EDgUI2fPqKuUMNQWTo2983ZwfHTIeZxgFKsnvOWj8kSCL7Szy/qnSbYMei6U74burFgcN/6vEbrmD9rRp0b8IzIieY97RrGn8sKXwwhPQ4oTUSAvxcK+GSuyYtUAoYuN/ydfMGJ5ZR68Nwj7xXcz3phQ7nQCsIBEw==
X-MS-Exchange-Transport-CrossTenantHeadersStamped: CY3PR08MB10748
X-MS-Exchange-SkipListedInternetSender:
 ip=[40.93.13.68];domain=DM2PR0701CU001.outbound.protection.outlook.com
X-MS-Exchange-ExternalOriginalInternetSender:
 ip=[40.93.13.68];domain=DM2PR0701CU001.outbound.protection.outlook.com
X-MS-Exchange-Transport-CrossTenantHeadersStripped:
 SA2PEPF00003F65.namprd04.prod.outlook.com
X-MS-PublicTrafficType: Email
X-MS-Office365-Filtering-Correlation-Id-Prvs:
	f8d8d55a-67b3-4f08-bfc1-08de9f2468bd
X-Microsoft-Antispam:
	BCL:0;ARA:13230040|376014|7416014|36860700016|1800799024|14060799003|35042699022|156008|82310400026|56012099003|22082099003|18002099003;
X-Microsoft-Antispam-Message-Info:
	=?us-ascii?Q?LXKzP1Kt7WvGFmN45H+KtqDCjeqaJ46/OyFBw37KugPWki0TrQnDY+EzEy7H?=
 =?us-ascii?Q?Pr6G+eZstVV/Fyp11lvmEcFz7K8yTn+6byr5BnZmerJgPCZd3smKJJnNwh4/?=
 =?us-ascii?Q?LTsjwvoWEXeLlqIfw5zX5Vg5WzEoCvjafIXrQ8wqaOUIw9GuGN93HDZg5F3+?=
 =?us-ascii?Q?3YVx/HcG5PdcjhuzcykGiW26WDGkR5vvdb02Yy2bluwUo9jM0BEMYlSX3ooD?=
 =?us-ascii?Q?y0FFAM463Lg/xEFpTqNilf/BMvr96qb3mHdWNOIuHVTPKYwezPbP2BJAjegp?=
 =?us-ascii?Q?lPPjez8Hf6VBfboH1IaIaEiIjZXlMuSUSVx+0rnX2UVecUUHFyfYcXBZw4nz?=
 =?us-ascii?Q?KwTbNnq/9MctwBe/q35jmJY+fClnPegxHRpKWkxEAWT/sGWMffqTzRfYwHJW?=
 =?us-ascii?Q?VJ6gvqAfPsiu5Rpr+O+tieBUqb8Sak1dzSP/iPNo8JaOHxnLVBdzKGUqYhmz?=
 =?us-ascii?Q?JsnLGqvuqbQIVTY/aUp19xJAxewzvnfPesllnmL6jPfCWcYch0CeHYpdCO15?=
 =?us-ascii?Q?qXi4w9JS+Om59vtG9ve3yw0PyVrCLH//zJ4D80nfgXQgId3n204bHoPtblHU?=
 =?us-ascii?Q?augU/rL6F6bvVE1B/Nkh4DztHe1Itlat1nMsFDuf8rQzbtd7D3d/EwYM4Bwb?=
 =?us-ascii?Q?v0M/jj1wzh7HICGwl/wINLHFRKVV+hhwpFST6svo/wbT/+h4tPXUbUebNY8f?=
 =?us-ascii?Q?CF8KnmuulohJf8K1MwxGppnJJzIi8qNfbAX2HRci8og2SVjgO2pJx5CJ9Kn+?=
 =?us-ascii?Q?VdElna9iFgVQcOnT7UbD9EX6ol29PdflqX12MIsQ6SchRo/ZpSLtWshuPNqe?=
 =?us-ascii?Q?bZxud6isFiK6YELSm120OpIjch4dTby/Esb+H0ZX+aO7mYTuQ9wwUUR2+oA8?=
 =?us-ascii?Q?YGMK3G0abp0BsCitT4Hb14g6qoDBZnSqRX96CsSECxrk+EGVZM5OvcpwZSnw?=
 =?us-ascii?Q?wOxUqdjgy6pJ/W9J3z8e/4g8eX/08rYgum+A9jy8K0ji/yHagHCKzmi0ab4v?=
 =?us-ascii?Q?Nba3dJ6OcgJq1fK/PLU1x4lHix6s2LLtYFoLSDvkg4JFYT/V5B7Oy4bwZPZn?=
 =?us-ascii?Q?ZsDdTqwW5wSPUBg8jOth+gRTzCUVTbFt2WTj+HHkf91Ux3yyRuilBu1Jozjy?=
 =?us-ascii?Q?dxf+XZpBuNeKcQs/k2fWeJNe3HFHnWETT8IGaWwLJep79cD0LTmE7PcE7C1h?=
 =?us-ascii?Q?tQi321cu+s07MnhCVGipKsSe4zbVpbaL2BBZDljZE+s6WZEsDJIQ/j+FCMc?=
 =?us-ascii?Q?=3D?=
X-Forefront-Antispam-Report:
	CIP:4.79.107.243;CTRY:US;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:DM2PR0701CU001.outbound.protection.outlook.com;PTR:mail-dm2pr0701cu00104.outbound.protection.outlook.com;CAT:NONE;SFS:(13230040)(376014)(7416014)(36860700016)(1800799024)(14060799003)(35042699022)(156008)(82310400026)(56012099003)(22082099003)(18002099003);DIR:OUT;SFP:1102;
X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1
X-MS-Exchange-AntiSpam-MessageData-0:
	q9b0/8OOMM0eMr4FbIda31N4yIbjebZqGyZx7EqXLeSUdyiDUwC9gKFlUs7THpn2Z+iSHuFyLMNP5qIQevshVSHI3nOqF8vWZfsEbWR+Oj7aps0GLHbhcySz8PFPSqtYquaVLLzNX0k0rYlmAT4XScVD4JwwFseg3GJWc5uJZSaOS+AyGVtr/CfBmUZFHqsWp2zIZX2xIuFRL03k4Q3sLSuT03J8NBBoOAFwS/VW70Pd+iVIzqPhDVXmLYGTvNWfUwPQ9U2iBII4Mt7P+qOzX2HWdBF+8zvC2SetAbqVfeu3FPCE34Sx16jjtv+EP1ua4IWUsYOhi4JAJfiPHT2Dvoa/MwTJ2rFgkfflxwEwRXFFivhHRg82PyDp2hAimyAhZ3pTYMIkTUt5YjVi8/03AjWYaAlF4dbtrvF0SezJo6QTADTWCOuBuObFaJa19TAJ
X-OriginatorOrg: elektrobit.com
X-MS-Exchange-CrossTenant-OriginalArrivalTime: 20 Apr 2026 21:33:11.8995
 (UTC)
X-MS-Exchange-CrossTenant-Network-Message-Id: 5ec4ddb7-dd66-4878-c2b7-08de9f246c93
X-MS-Exchange-CrossTenant-Id: e764c36b-012e-4216-910d-8fd16283182d
X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=e764c36b-012e-4216-910d-8fd16283182d;Ip=[4.79.107.243];Helo=[usbth1es003.ebgroup.elektrobit.com]
X-MS-Exchange-CrossTenant-AuthAs: Internal
X-MS-Exchange-CrossTenant-AuthSource: TreatMessagesAsInternal-SA2PEPF00003F65.namprd04.prod.outlook.com
X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem
X-MS-Exchange-Transport-CrossTenantHeadersStamped: DS0PR08MB8541
X-purgate-ID: tlsNG-c1860d/1776720803-38567DB1-9DEF0F34/0/0
X-purgate-type: clean
X-purgate-size: 7788

The p2m initialization now invokes initialization routines responsible for
the allocation and initialization of altp2m structures. The same applies to
teardown routines.

This commit adds the prerequisites for the common altp2m_init and
altp2m_teardown functions to work on ARM; No further changes were necessary
other than removing the CONFIG_X86 gating.

This is commit 12/12 of the altp2m_init/altp2m_teardown routines phase.

Signed-off-by: Rose Spangler <Rose.Spangler@elektrobit.com>
Signed-off-by: Sergej Proskurin <proskurin@sec.in.tum.de>
Signed-off-by: Aqib Javaid <Aqib.Javaid@elektrobit.com>
---
v2: Shared code between host/altp2m init/teardown functions.
    Added conditional init/teardown of altp2m.
    Altp2m related functions are moved to altp2m.c

v3: Removed locking the altp2m_lock in altp2m_teardown. Locking this
    lock at this point is unnecessary.

    Removed re-setting altp2m_vttbr, altp2m_p2m, and altp2m_active
    values in the function "altp2m_teardown". Re-setting these values is
    unnecessary as the entire domain will be destroyed right afterwards.

    Removed check for "altp2m_enabled" in "p2m_init" as altp2m has not yet
    been enabled by libxl at this point.

    Removed check for "altp2m_enabled" before tearing down altp2m within
    the function "p2m_teardown" so that altp2m gets destroyed even if
    the HVM_PARAM_ALTP2M gets reset before "p2m_teardown" is called.

    Added initialization of the field d->arch.altp2m_active in
    "altp2m_init".

    Removed check for already initialized vmid's in "altp2m_init_one",
    as "altp2m_init_one" is now called always with an uninitialized p2m.

    Removed the array altp2m_vttbr[] in struct arch_domain.

v4: Removed initialization of altp2m_p2m[] to NULL in altp2m_init, as
    the "struct arch_domain" is already initialized to zero.

    We moved the definition of the macro MAX_ALTP2M to a common place in
    a separate commit.

v6: Reworked to use common altp2m init and teardown routines.

    Added altp2m_lock_init macro for use in altp2m_init.

    Split altp2m initialization in p2m_init into a separate function,
    p2m_init_altp2m, to more easily gate code behind CONFIG_ALTP2M.

    Pulled in addition of active_vcpus from a later patch in the patch
    series.

    Split teardown and free of altp2m views into p2m_teardown and
    p2m_teardown_final (part of altp2m_teardown), respectively.
---
 xen/arch/arm/include/asm/altp2m.h |  4 +++
 xen/arch/arm/include/asm/domain.h |  8 ++++++
 xen/arch/arm/include/asm/p2m.h    |  5 ++++
 xen/arch/arm/mmu/p2m.c            | 44 ++++++++++++++++++++++++++++++-
 xen/common/altp2m.c               |  2 --
 xen/include/xen/altp2m.h          |  2 --
 6 files changed, 60 insertions(+), 5 deletions(-)

diff --git a/xen/arch/arm/include/asm/altp2m.h b/xen/arch/arm/include/asm/altp2m.h
index 698c35427e75..5a217f48b103 100644
--- a/xen/arch/arm/include/asm/altp2m.h
+++ b/xen/arch/arm/include/asm/altp2m.h
@@ -19,6 +19,10 @@ static inline bool altp2m_supported(void)
     return true;
 }
 
+#define altp2m_lock_init(d) spin_lock_init(&(d)->arch.altp2m_lock)
+#define altp2m_lock(d)      spin_lock(&(d)->arch.altp2m_lock)
+#define altp2m_unlock(d)    spin_unlock(&(d)->arch.altp2m_lock)
+
 /* Alternate p2m VCPU */
 static inline uint16_t altp2m_vcpu_idx(const struct vcpu *v)
 {
diff --git a/xen/arch/arm/include/asm/domain.h b/xen/arch/arm/include/asm/domain.h
index 576dbdec20af..9e69d62086cd 100644
--- a/xen/arch/arm/include/asm/domain.h
+++ b/xen/arch/arm/include/asm/domain.h
@@ -128,6 +128,14 @@ struct arch_domain
 #endif
 
     struct resume_info resume_ctx;
+
+#ifdef CONFIG_ALTP2M
+    /*
+     * Lock that protects critical altp2m operations that must not be performed
+     * concurrently.
+     */
+    spinlock_t altp2m_lock;
+#endif
 }  __cacheline_aligned;
 
 struct arch_vcpu
diff --git a/xen/arch/arm/include/asm/p2m.h b/xen/arch/arm/include/asm/p2m.h
index 8ae0cd7ff589..db715c4f8bfc 100644
--- a/xen/arch/arm/include/asm/p2m.h
+++ b/xen/arch/arm/include/asm/p2m.h
@@ -9,6 +9,8 @@
 #include <asm/current.h>
 #include <asm/hsr.h>
 
+#include <asm/atomic.h>
+
 #define paddr_bits PADDR_BITS
 
 /* Holds the bit size of IPAs in p2m tables.  */
@@ -117,6 +119,9 @@ struct p2m_domain {
     /* Keeping track on which CPU this p2m was used and for which vCPU */
     uint8_t last_vcpu_ran[NR_CPUS];
 
+    /* Alternate p2m: count of vcpu's currently using this p2m. */
+    atomic_t active_vcpus;
+
     /* Choose between: host/alternate. */
     p2m_class_t p2m_class;
 };
diff --git a/xen/arch/arm/mmu/p2m.c b/xen/arch/arm/mmu/p2m.c
index 0d37760ef5d5..04d17e787259 100644
--- a/xen/arch/arm/mmu/p2m.c
+++ b/xen/arch/arm/mmu/p2m.c
@@ -1,4 +1,5 @@
 /* SPDX-License-Identifier: GPL-2.0-only */
+#include <xen/altp2m.h>
 #include <xen/cpu.h>
 #include <xen/domain_page.h>
 #include <xen/ioreq.h>
@@ -7,6 +8,7 @@
 #include <xen/softirq.h>
 #include <xen/xmalloc.h>
 
+#include <asm/altp2m.h>
 #include <asm/alternative.h>
 #include <asm/event.h>
 #include <asm/flushtlb.h>
@@ -1486,6 +1488,20 @@ int p2m_teardown(struct domain *d)
 {
     struct p2m_domain *p2m = p2m_get_hostp2m(d);
 
+#ifdef CONFIG_ALTP2M
+    unsigned int i;
+    int rc;
+
+    d->altp2m_active = false;
+
+    for ( i = 0; i < d->nr_altp2m; i++ )
+    {
+        rc = p2m_teardown_one(d->altp2m_p2m[i]);
+        if ( rc )
+            return rc;
+    }
+#endif
+
     return p2m_teardown_one(p2m);
 }
 
@@ -1499,6 +1515,9 @@ void p2m_final_teardown(struct domain *d)
      * where relinquish_p2m_mapping() has been called.
      */
 
+    if ( altp2m_supported() )
+        altp2m_teardown(d);
+
     while ( p2m_teardown_allocation(d) == -ERESTART )
         continue; /* No preemption support here */
     ASSERT(page_list_empty(&d->arch.paging.p2m_freelist));
@@ -1595,6 +1614,24 @@ struct p2m_domain *p2m_init_one(struct domain *d)
     return NULL;
 }
 
+static int p2m_init_altp2m(struct domain *d)
+{
+#ifdef CONFIG_ALTP2M
+    int rc;
+
+    rc = altp2m_init(d);
+    if ( rc )
+    {
+        p2m_free_one(p2m_get_hostp2m(d));
+        return rc;
+    }
+
+    d->altp2m_active = false;
+#endif
+
+    return 0;
+}
+
 static int p2m_init_hostp2m(struct domain *d)
 {
     struct p2m_domain *p2m = p2m_init_one(d);
@@ -1608,10 +1645,15 @@ static int p2m_init_hostp2m(struct domain *d)
 
 int p2m_init(struct domain *d)
 {
+    int rc;
     spin_lock_init(&d->arch.paging.lock);
     INIT_PAGE_LIST_HEAD(&d->arch.paging.p2m_freelist);
 
-    return p2m_init_hostp2m(d);
+    rc = p2m_init_hostp2m(d);
+    if ( rc )
+        return rc;
+
+    return p2m_init_altp2m(d);
 }
 
 /*
diff --git a/xen/common/altp2m.c b/xen/common/altp2m.c
index cda653b713f0..989d8bdcb923 100644
--- a/xen/common/altp2m.c
+++ b/xen/common/altp2m.c
@@ -15,7 +15,6 @@
 #include <asm/hvm/nestedhvm.h>
 #endif
 
-#if CONFIG_X86
 int altp2m_init(struct domain *d)
 {
     unsigned int i;
@@ -60,7 +59,6 @@ void altp2m_teardown(struct domain *d)
 
     XVFREE(d->altp2m_p2m);
 }
-#endif /* CONFIG_X86 */
 
 /*
  * altp2m operations are envisioned as being used in several different
diff --git a/xen/include/xen/altp2m.h b/xen/include/xen/altp2m.h
index 85ef22c2b29e..238c7a935586 100644
--- a/xen/include/xen/altp2m.h
+++ b/xen/include/xen/altp2m.h
@@ -13,13 +13,11 @@
  * regardless of CONFIG_ALTP2M
  */
 
-#ifdef CONFIG_X86
 /* Initialize altp2m views */
 int altp2m_init(struct domain *d);
 
 /* Free altp2m views */
 void altp2m_teardown(struct domain *d);
-#endif
 
 #ifdef CONFIG_ALTP2M
 
-- 
2.34.1



From xen-devel-bounces@lists.xenproject.org Mon Apr 20 21:42:50 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 20 Apr 2026 21:42:50 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1288174.1568494 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wEwOI-0006mY-QO; Mon, 20 Apr 2026 21:42:50 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1288174.1568494; Mon, 20 Apr 2026 21:42: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 1wEwOI-0006mP-LZ; Mon, 20 Apr 2026 21:42:50 +0000
Received: by outflank-mailman (input) for mailman id 1288174;
 Mon, 20 Apr 2026 21:42:49 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <Rose.Spangler@elektrobit.com>) id 1wEwOG-0006iS-W6
 for xen-devel@lists.xenproject.org; Mon, 20 Apr 2026 21:42:49 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wEwOG-001R8R-Ck
 for xen-devel@lists.xenproject.org; Mon, 20 Apr 2026 23:42:48 +0200
Received: from [10.42.69.4] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <Rose.Spangler@elektrobit.com>)
 id 69e69db4-e002-0a2a0a5209dd-0a2a450488ce-26
 for <xen-devel@lists.xenproject.org>; Mon, 20 Apr 2026 23:42:48 +0200
Received: from [40.107.209.106]
 (helo=PH8PR06CU001.outbound.protection.outlook.com)
 by tlsNG-ebf023.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.1)
 (envelope-from <Rose.Spangler@elektrobit.com>)
 id 69e69b7c-1dec-0a2a45040019-286bd16a1f90-3
 for <xen-devel@lists.xenproject.org>; Mon, 20 Apr 2026 23:32:46 +0200
Received: from SA9P223CA0011.NAMP223.PROD.OUTLOOK.COM (2603:10b6:806:26::16)
 by SA2PR08MB6748.namprd08.prod.outlook.com (2603:10b6:806:111::10) with
 Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9818.25; Mon, 20 Apr
 2026 21:32:39 +0000
Received: from SA2PEPF000015C9.namprd03.prod.outlook.com
 (2603:10b6:806:26:cafe::41) by SA9P223CA0011.outlook.office365.com
 (2603:10b6:806:26::16) with Microsoft SMTP Server (version=TLS1_3,
 cipher=TLS_AES_256_GCM_SHA384) id 15.20.9791.48 via Frontend Transport; Mon,
 20 Apr 2026 21:32:38 +0000
Received: from usbth1es003.ebgroup.elektrobit.com (4.79.107.243) by
 SA2PEPF000015C9.mail.protection.outlook.com (10.167.241.199) with Microsoft
 SMTP Server (version=TLS1_3, cipher=TLS_AES_256_GCM_SHA384) id 15.20.9791.48
 via Frontend Transport; Mon, 20 Apr 2026 21:32:38 +0000
Received: from usbth1es003 (localhost [127.0.0.1])
 by usbth1es003.ebgroup.elektrobit.com (Postfix) with SMTP id 4fzzGs2yP0z1wdS; 
 Mon, 20 Apr 2026 14:32:37 -0700 (PDT)
Received: from BL0PR07CU001.outbound.protection.outlook.com
 (mail-bl0pr07cu00101.outbound.protection.outlook.com [40.93.4.1])
 (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)
 key-exchange secp384r1 server-signature RSA-PSS (2048 bits) server-digest
 SHA256) (No client certificate requested)
 by usbth1es003.ebgroup.elektrobit.com (Postfix) with ESMTPS;
 Mon, 20 Apr 2026 14:32:36 -0700 (PDT)
Received: from SJ0PR13CA0198.namprd13.prod.outlook.com (2603:10b6:a03:2c3::23)
 by SJ0PR08MB7797.namprd08.prod.outlook.com (2603:10b6:a03:3d4::5)
 with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9818.32; Mon, 20 Apr
 2026 21:32:28 +0000
Received: from SJ1PEPF000026C7.namprd04.prod.outlook.com
 (2603:10b6:a03:2c3:cafe::ba) by SJ0PR13CA0198.outlook.office365.com
 (2603:10b6:a03:2c3::23) with Microsoft SMTP Server (version=TLS1_3,
 cipher=TLS_AES_256_GCM_SHA384) id 15.20.9791.48 via Frontend Transport; Mon,
 20 Apr 2026 21:32:28 +0000
Received: from denue6es012.ebgroup.elektrobit.com (213.95.148.172) by
 SJ1PEPF000026C7.mail.protection.outlook.com (10.167.244.104) with Microsoft
 SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id
 15.20.9791.48 via Frontend Transport; Mon, 20 Apr 2026 21:32:27 +0000
Received: from ubuntu.localdomain (10.10.178.50) by
 denue6es012.ebgroup.elektrobit.com (10.243.160.140) with Microsoft SMTP
 Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id
 15.2.2562.35; Mon, 20 Apr 2026 23:32:22 +0200
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@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=elektrobit.com header.i="@elektrobit.com" header.h="From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck"; dkim=pass header.s=selector1 header.d=elektrobit.com header.i="@elektrobit.com" header.h="From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck"
ARC-Seal: i=2; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=pass;
 b=S0CUyokS/xup9EC3UoKjwcLduZHR71qcmQO1KYA6FRHV6ANu6IzTTl7EMGmlgP+uym4e7HNBRB51szvQolk6VCrKyO99pC4t8aGhAKrVDr2dZkpCxUctJdoMnbZ374ToXRjZNWLcKXiCHUcdl8AC2dtjmoyhsFGqcFJbvx3SNFWXboRECUI6CChZh+PyqWF2v1akdzbS0WZqi9MyrNldi2pGpPT6sbHE0f6IGcaNdRLKcynoY1wcq4Tq6xTdOtvnMplMf13OIa0qHkqzQDRLf0H4DBA6l4omztesffe3URbXfDYg0BFNcggXhec42nqa+HrVakueijDXdDbWq1aXLQ==
ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com;
 s=arcselector10001;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1;
 bh=CskA+UpxYzQP++t6ku/Lr+/r6p41tsG9v+zuUgf8Wvs=;
 b=QBmk0vtu/6ZYS6FjSO4G4gaba86Rpnw3rwBN3FpZKd42Ues6avWItTLuk6n/Z41e8BshwuqaRsdxmrRq3hCbjDxfmkzCQCw+0ZA4CnfiHR4tKhPnsKTc61NinWYI+uxsgKW+pTJnWbijaqWRRyUorqP31p0IQd7UvVDz8BaeNsdDOlNRTHoeKBkySgYx7K+MfibgcVRR+fAedZn0zsrqCX8iKbNW/fUNGXgpwsLZKx2jhTm+jNXa/CY2RatjHSxSCHWv8K2iuVmTvMpCl7MyAWS1hX2HybBN4QpRKDxJIPujexlim6hueEABYxSbJdaFebvSyZaXb11Belck3YFCZA==
ARC-Authentication-Results: i=2; mx.microsoft.com 1; spf=pass (sender ip is
 40.93.4.1) smtp.rcpttodomain=amd.com smtp.mailfrom=elektrobit.com; dmarc=pass
 (p=quarantine sp=none pct=100) action=none header.from=elektrobit.com;
 dkim=pass (signature was verified) header.d=elektrobit.com; arc=pass (0 oda=1
 ltdi=1 spf=[1,1,smtp.mailfrom=elektrobit.com]
 dmarc=[1,1,header.from=elektrobit.com])
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=elektrobit.com;
 s=selector1;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck;
 bh=CskA+UpxYzQP++t6ku/Lr+/r6p41tsG9v+zuUgf8Wvs=;
 b=NyQCtB3HICycM7Zj2Wu1WOxeGipv5efmhmhDvoNOG3H2oZlVt+7jSLyMVb/F02m7SUEj9/hi2ovH9w2OFERQ09EeQ4jIe5gpjb8cbN6dtoOvgWO+3SwgugiF9MHYcwKpWcxUHUZsgDzowMYd7Bum6cVN8wijSSK0v8PQN4A24Mo=
X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 40.93.4.1)
 smtp.mailfrom=elektrobit.com; dkim=pass (signature was verified)
 header.d=elektrobit.com;dmarc=pass action=none header.from=elektrobit.com;
Received-SPF: Pass (protection.outlook.com: domain of elektrobit.com
 designates 40.93.4.1 as permitted sender) receiver=protection.outlook.com;
 client-ip=40.93.4.1; helo=BL0PR07CU001.outbound.protection.outlook.com; pr=C
ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none;
 b=FpJzjqtms+hhoq2lyI+oKtgr6olceyto2dGDrv3dj775ur/P9Kp0FAd9yjUDThzUU+tuHPLBTFPgEnb3TAh3gxwiARzHO01h7HMLSpI57jRZGifXKV0O41i8QKxo6ZuOZUpUMuZO0l0q0hFGf7IM1goo8chLIQiSW3gkFo2iyNFzPpIsvXHvdLfQFqIkJdfKkKtFEiAfEpbl7pX4Lg7O0U91Vt5f8AjlTNRoCLomN6V+qmStioM5GBKKECQefBtEt1kjJhpAXuyLrurFN2V9/Ch8tWjDJ/R3PIhQzQaFmqa1yzyHy6ymm8bCOJxlDsYbflpRtnDT7DpsxVmaywhCOw==
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com;
 s=arcselector10001;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1;
 bh=CskA+UpxYzQP++t6ku/Lr+/r6p41tsG9v+zuUgf8Wvs=;
 b=wJvjxgfh1HqY8NYHDNisGqUg/GiOH7epBE3bBX4H6j3+VVaGONfIgH0mLnK+IrZ4bzMwGfSpdeQa/inP4hkJ0StW3P8Im8015G1o9ZSjjK2jzWeXnZSBRZ/WXSKl6dIfu8VW4s69Z4XQt/FU53/PqNHSN0oQ9EIe8Jq8SLeFD9wG9T6NFxJy0aUviGhlUmwENFJLf1MEjhoRownydAzu5ZnNTY3noGrTss+RSmxm4uS49ZRJZblQ9KVG+PHJtl88hx7vhedrlYIb5LW6DADJwHmXMZ3MLDvRCYhcPfb2iKUHvcKM2+/3cCelwDfmufWQjgpWZImyPy7EY4NXO8gV7w==
ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass (sender ip is
 213.95.148.172) smtp.rcpttodomain=lists.xenproject.org
 smtp.mailfrom=elektrobit.com; dmarc=pass (p=quarantine sp=none pct=100)
 action=none header.from=elektrobit.com; dkim=none (message not signed);
 arc=none (0)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=elektrobit.com;
 s=selector1;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck;
 bh=CskA+UpxYzQP++t6ku/Lr+/r6p41tsG9v+zuUgf8Wvs=;
 b=NyQCtB3HICycM7Zj2Wu1WOxeGipv5efmhmhDvoNOG3H2oZlVt+7jSLyMVb/F02m7SUEj9/hi2ovH9w2OFERQ09EeQ4jIe5gpjb8cbN6dtoOvgWO+3SwgugiF9MHYcwKpWcxUHUZsgDzowMYd7Bum6cVN8wijSSK0v8PQN4A24Mo=
X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 213.95.148.172)
 smtp.mailfrom=elektrobit.com; dkim=none (message not signed)
 header.d=none;dmarc=pass action=none header.from=elektrobit.com;
Received-SPF: Pass (protection.outlook.com: domain of elektrobit.com
 designates 213.95.148.172 as permitted sender)
 receiver=protection.outlook.com; client-ip=213.95.148.172;
 helo=denue6es012.ebgroup.elektrobit.com; pr=C
From: Rose Spangler <Rose.Spangler@elektrobit.com>
To: <xen-devel@lists.xenproject.org>
CC: Rose Spangler <Rose.Spangler@elektrobit.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.pau@citrix.com>, Stefano Stabellini <sstabellini@kernel.org>, "Teddy
 Astie" <teddy.astie@vates.tech>, Tamas K Lengyel <tamas@tklengyel.com>,
	Bertrand Marquis <bertrand.marquis@arm.com>, Volodymyr Babchuk
	<Volodymyr_Babchuk@epam.com>, "Daniel P. Smith"
	<dpsmith@apertussolutions.com>, Rahul Singh <rahul.singh@arm.com>, "Julien
 Grall" <julien.grall@arm.com>
Subject: [RESEND-2 RFC PATCH v6 00/43] altp2m: Move altp2m routines to common code and add ARM support
Date: Mon, 20 Apr 2026 17:31:23 -0400
Message-ID: <20260420213206.208750-1-Rose.Spangler@elektrobit.com>
X-Mailer: git-send-email 2.34.1
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit
Content-Type: text/plain
X-Originating-IP: [10.10.178.50]
X-ClientProxiedBy: denue6es012.ebgroup.elektrobit.com (10.243.160.140) To
 denue6es012.ebgroup.elektrobit.com (10.243.160.140)
X-EOPAttributedMessage: 1
X-MS-Exchange-SkipListedInternetSender:
 ip=[213.95.148.172];domain=denue6es012.ebgroup.elektrobit.com
X-MS-TrafficTypeDiagnostic:
	SJ1PEPF000026C7:EE_|SJ0PR08MB7797:EE_|SA2PEPF000015C9:EE_|SA2PR08MB6748:EE_
X-MS-Office365-Filtering-Correlation-Id: e474e0b6-aa80-428e-254f-08de9f24587c
X-SM-outgoing: yes
X-MS-Exchange-SenderADCheck: 1
X-MS-Exchange-AntiSpam-Relay: 0
X-Microsoft-Antispam-Untrusted:
 BCL:0;ARA:13230040|704162111799003|36860700016|1800799024|7416014|376014|82310400026|13003099007|56012099003|18002099003;
X-Microsoft-Antispam-Message-Info-Original:
 =?us-ascii?Q?aFW/LYPDMSYhpPLTIQc09I2b0VwucJTxEndQV12/gIYsoVaBJpW+E4rmeMJy?=
 =?us-ascii?Q?nCAt9lU9TO+slkzSt29hGruuMcOTsOk8CJLmwI80QNoEz95cKztn+VBiOMJ3?=
 =?us-ascii?Q?7Pevxy1qtvkpljRVg9awc7UWVsZNDw41BuXnCYslEx7gvAJYs3ki//7zC4Tg?=
 =?us-ascii?Q?w7yxK4Xfo7ANH/w4IFUxloE8749PhEmzz6lWrxwkEVHTTdv9L7jcmlIWSIjp?=
 =?us-ascii?Q?eb1zPkuzmE1balD/BWJ+JpRNdUxSsrPvbRl8Yys7EtDsEBXSDNpduzguxOoY?=
 =?us-ascii?Q?2YmwFmGEayzD3IJ7LXI1qfba3pm8bPXXaZo4PHO/f60kfdx87iRsu/ioBBMx?=
 =?us-ascii?Q?pqoI29pwGtgYoWqRQz5a8sUog6fEoKOtWL3qe0uSzr81rS3N9Xt/vYcMGoNK?=
 =?us-ascii?Q?PWTrRmWBRef6toS7fIPrjisjVQOkVMvSe40zmWsF6jiWYQj5rtRD3CxwhAKB?=
 =?us-ascii?Q?wEQwfOOkp3t18CAY7cBAg0ssoLfggaaCIS1Cd0j2xm+kR04GCb3eQAfWcxoc?=
 =?us-ascii?Q?2lLAZ+9dFNfu3PRlzc0wCA3/pfsjQUEGiHI7NwSPAnLOBVRzgpJc1RbOqj71?=
 =?us-ascii?Q?njYWaxfE3xtmXWdKT/uAGC6ZsZ2ez1xiUiqA7JxQbVMIlNfF+yPd66vuvKfX?=
 =?us-ascii?Q?PAD1dEW7gWW8qrnFE7UwrUDWIC53qLYL1sBeR5mPlMNEbN2MmdXLIquAj38X?=
 =?us-ascii?Q?YHCVMH8BcFYlLVw18VGz+sh624SIEnR8d+QNHGSt6xPMNlkVUSzt7/mObHRS?=
 =?us-ascii?Q?o0HXmaLpEMfLQSWJInS3vYvJ0/DpdFz5AeqtJG0ep5AqMk6u8U7j5NM9Y0zl?=
 =?us-ascii?Q?96E0vsecbZi41vVivsYv2mlWzu8N+15cVhfXF7l3bHyARoTiH/J7S1t+tdmd?=
 =?us-ascii?Q?lu9J/L/FFUUX+4GkN9s//vdi10fX26DKMcK7YmDHs7MeVrqgZcsKfEfffGtR?=
 =?us-ascii?Q?n3NRE5oMfY8vdh6HKk9f4VONTxcbizB/q/yFOI+9PkDwOuOFg52Kk6q9HVqA?=
 =?us-ascii?Q?f0hHAVI3dTMMjUyLKhP/YB2MyNrF2G4VkT8MPNFn2BEoIXks4qziH2VHQPpM?=
 =?us-ascii?Q?opOD9WiHjG9NyKSfmcKMnm31tfqfeVpY509mUz89RapC4sKktw8qtdi901J3?=
 =?us-ascii?Q?ISf7fkAXqBtN0mv5u5awfkPNDstfnC58U0z41l/NfeBJ08XARUNiunk=3D?=
X-Forefront-Antispam-Report-Untrusted:
 CIP:213.95.148.172;CTRY:DE;LANG:en;SCL:1;SRV:;IPV:CAL;SFV:NSPM;H:denue6es012.ebgroup.elektrobit.com;PTR:eth1-fw1-nbg6.eb.noris.de;CAT:NONE;SFS:(13230040)(704162111799003)(36860700016)(1800799024)(7416014)(376014)(82310400026)(13003099007)(56012099003)(18002099003);DIR:OUT;SFP:1102;
X-Exchange-RoutingPolicyChecked:
 UA+pltSXPuvY84rQ8UEvjk7KbmBljPoX7ygQu/VM32tYHLOoM9pHQInYpN3rYega32X0542tgS7f2/5Rj5dcWWWdLnpZoAufoplCu87QMt0w3TvvI0u2fjO1GyrUJhkx6UEGZyUL6lj1G058WKwYnQxBVcbTc0+1Ua+XqQ4ozPup7d3Kxb6lRK5rbfqhX42qVlpq/NrSphdvThg7vxOVmB5qP6/5AisNwm1OoKw90ToLhDgOr4Dz4ZUqpBiILWTX5cRSArnc9vJGeLeGDlyNfsjbzuiJ5m/2QXfWehZBI6dLWZqokb7cgvyL6STBvxPZgL7IgbisbqdEk1AUjavQag==
X-MS-Exchange-Transport-CrossTenantHeadersStamped: SJ0PR08MB7797
X-MS-Exchange-SkipListedInternetSender:
 ip=[40.93.4.1];domain=BL0PR07CU001.outbound.protection.outlook.com
X-MS-Exchange-ExternalOriginalInternetSender:
 ip=[40.93.4.1];domain=BL0PR07CU001.outbound.protection.outlook.com
X-MS-Exchange-Transport-CrossTenantHeadersStripped:
 SA2PEPF000015C9.namprd03.prod.outlook.com
X-MS-PublicTrafficType: Email
X-MS-Office365-Filtering-Correlation-Id-Prvs:
	05c18579-e12e-4551-2c90-08de9f245213
X-Microsoft-Antispam:
	BCL:0;ARA:13230040|704162111799003|156008|1800799024|7416014|14060799003|82310400026|36860700016|35042699022|376014|13003099007|56012099003|18002099003;
X-Microsoft-Antispam-Message-Info:
	=?us-ascii?Q?gtMuaKq7UmcVlhVGzQbNrQC3GxFqtyDVP0tf4Uf7t8iqR51x6MnawWb+8EEd?=
 =?us-ascii?Q?7A+zaJ57DtZN1WVRXilTLBVCGHelmQnBgqHYVmXnh4LkKe8uO0DzgCvwidcP?=
 =?us-ascii?Q?96EyKF8PEQ3umnivpfM076lOtabkIU1W4RY/ad0ppAiPm9fR4jJsbX/bximG?=
 =?us-ascii?Q?91Bq5R/uV0KQICEiSCImDM6mDMMMYOXFT+7WNO4OrjdBVM1puFrKMEVkQNca?=
 =?us-ascii?Q?iJELKqLbx7la2mTiNpbMAisoK389Rcxg7NycmJdXuqzmXYV3p0FbGHElNIWD?=
 =?us-ascii?Q?6amNQWRDPyGrkMFYEoBk28sXfnUzbVEb471HfqAoc7Kz1VoM0gM7Gy66ZLRG?=
 =?us-ascii?Q?giItJv6mnnVkJC/Po4pE1nvKeXAB1ghNDKn6tWVqI/eDSE9Fo7IyQT8COg5z?=
 =?us-ascii?Q?KJ8EDUqqdEOo4qJ5piJPexrzXU+EVEcD69QMFzG1rzOQ5y2dmyS/lbkllJJG?=
 =?us-ascii?Q?2USrs8KVRO+u9NLzXmbR7qOjuf/WK0YMXZiC+Si2qt8PEVVQt+VBGuHbi2pY?=
 =?us-ascii?Q?F2hrLWyCzq9qLf2gas+xIe8LURRMfcyF9mhY1wscALjFfY4keYGwW8YO22Go?=
 =?us-ascii?Q?/GhOyyjKVs8JrwTmyxFRMtDZNvvWpzU4QL12KldNOKmibgdoRRsswB28ZdAR?=
 =?us-ascii?Q?Jt0+mI/ktNLAf6MPuKiEX6wlYFeIhsvIHeApONoKp0jhTRY3ECo3PYObengV?=
 =?us-ascii?Q?QBTHunKouzEIFXBvh5IKTmcq+vyZ6+Y3i8JnDtxK3FYrPr6DEv9k4ddcL5SO?=
 =?us-ascii?Q?B7YhKrt4n9vcnQSCSfONggiIL5zGXimBu7e9JGdCpJC8DsQrwHCntpGpFN0G?=
 =?us-ascii?Q?i0MqNJ35DKTgpr30D2ehg9nhUknLWMtjZrEOK2u6MyUIElJNIdvk6tm9KlTP?=
 =?us-ascii?Q?M+MrXttZRJI2qpyW/VBq81xd22fPHJvTLP/ZQfIDqtzMJwb4n6dOkP4e7uzg?=
 =?us-ascii?Q?wk7hL532nfgd3kf2FLam0I3NRG9JZ2DvegXWyQmE3Elv6liT0XcnmCMrEpH4?=
 =?us-ascii?Q?obX3ulMs13aYS6wmg2frzl7GOuS8YQz3ACAnbrmfBS6mdR53GdBe0E5GJxgR?=
 =?us-ascii?Q?gjXbIh+Z76gdAt5t4w+Vdxro4iWVX25sOV2pj/ACbQPSauC0gO6wp5pgdE2D?=
 =?us-ascii?Q?FhWVZ01NNNQzVzKePN7ed6LngKgO2pa4pk8iB2oTIN0efTue/vUdjcw=3D?=
X-Forefront-Antispam-Report:
	CIP:4.79.107.243;CTRY:US;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:BL0PR07CU001.outbound.protection.outlook.com;PTR:mail-bl0pr07cu00101.outbound.protection.outlook.com;CAT:NONE;SFS:(13230040)(704162111799003)(156008)(1800799024)(7416014)(14060799003)(82310400026)(36860700016)(35042699022)(376014)(13003099007)(56012099003)(18002099003);DIR:OUT;SFP:1102;
X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1
X-MS-Exchange-AntiSpam-MessageData-0:
	47ytyXz1UpSD9cJKZSwqVR1ukiEfNtrEWgFnlPS+tgw7cdh0/8/i4lwN/b+KXh2Eyi1p8Mq2rP2TY1Kv9f8ViXWRC3tO62keEOTdlhSah3b5Ox5D+uptykc56hXLbqh3zs2/lg0+xGhHBmQhKhgDUnJVYEmmAFJfzxylBFSvOtB4+fMuha2IwIJGgjrjUKhAFAicby1yZ4rk/gBj5Fgjb/5KS/XQ3463WmCsW5kuWWtVmk4dri1wOIdrMKwy0iSnOY3DhIh2RTYabqF/Vxeu216JO1OIzD/H2RztIGZzrnpO6VogDl/oVFn/AAdLVaji1e80nDDNDn3yjxg2uxYBHoJ1ZNq2hs9VRMYv6R/QnfziwyYUUrd2S/icMQjVWPJ3K9Stiw8svZx4zE1aydYkPtQZfzl6PIuxUXa0ztFxxyebGtDBNuGgk2vq8TUu4ccV
X-OriginatorOrg: elektrobit.com
X-MS-Exchange-CrossTenant-OriginalArrivalTime: 20 Apr 2026 21:32:38.1818
 (UTC)
X-MS-Exchange-CrossTenant-Network-Message-Id: e474e0b6-aa80-428e-254f-08de9f24587c
X-MS-Exchange-CrossTenant-Id: e764c36b-012e-4216-910d-8fd16283182d
X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=e764c36b-012e-4216-910d-8fd16283182d;Ip=[4.79.107.243];Helo=[usbth1es003.ebgroup.elektrobit.com]
X-MS-Exchange-CrossTenant-AuthAs: Internal
X-MS-Exchange-CrossTenant-AuthSource: TreatMessagesAsInternal-SA2PEPF000015C9.namprd03.prod.outlook.com
X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem
X-MS-Exchange-Transport-CrossTenantHeadersStamped: SA2PR08MB6748
X-purgate-ID: tlsNG-ebf023/1776720767-4BB6B3FF-3A0F23C8/0/0
X-purgate-type: clean
X-purgate-size: 9546

Hi all,

For the past few months, myself and Aqib Javid have been working to port
altp2m to ARM with support from Stewart Hildebrand and Stefano Stabellini.
At the recent Spring Xen Summit, Aqib and Stewart gave a presentation which
discussed the motivation behind this, along with an overview of the
rebasing and testing process. While this effort started as a rebase[1] of
the v5 patch series[2] by Sergej Proskurin and Tamas Lengyel, I have been
reworking the branch to make most of the altp2m code common between x86 and
ARM. This should address the major concerns that came up during review of
the original patch series. For a quick overview of altp2m functionality and
scope of the patch series, here's an excerpt from Sergej's cover letter:

> In this patch series, we provide an implementation of the altp2m
> subsystem for ARM. Our implementation is based on the altp2m subsystem for
> x86, providing additional --alternate-- views on the guest's physical
> memory by means of the ARM 2nd stage translation mechanism. The patches
> introduce new HVMOPs and extend the p2m subsystem. [...] To be more
> precise, altp2m allows to create and switch to additional p2m views (i.e.
> gfn to mfn mappings). These views can be manipulated and activated as will
> through the provided HVMOPs. In this way, the active guest instance in
> question can seamlessly proceed execution without noticing that anything
> has changed.

As of right now, I've reworked patch series up through the
HVMOP_altp2m_set_domain_state command and plan to continue implementing the
remaining altp2m features. I've continued the patch series versioning by
labeling my notes as v6, and the patch notes from v1-v5 have been preserved
where applicable. I am hoping for some feedback on the general approach
I've taken with this patch series, and I can incorporate any changes
requested into the actual patch series submission.

This is a pretty big patch series, so I've tried to make it as easy as
possible to follow. I've tried to minimize the number of changes in each
patch; there are quite a lot of patches so if it would be preferred to
combine some patches I can do so. Here is the general approach I used
throughout the patch series to turn x86 altp2m code into common altp2m
code with ARM support:

- Move function(s) from arch/x86/mm/altp2m.c to common/altp2m.c, gating
  declarations/definitions with #ifdef CONFIG_X86
- Add any additional features to ARM code needed to implement these
  functions
- Make any changes necessary to functions to support ARM, and remove #ifdef
  CONFIG_X86

This approach makes it possible to separate out code movement patches from
the actual changes needed to support ARM. Furthermore, each patch in the
patch series still compiles for both x86 and ARM.

Additionally, I've split the patch series into a number of "phases" to make
it easier to understand the context of each patch. Each patch description
indicates which phase it's a part of.
- Preparation (8 commits)
- Common do_altp2m_op (2 commits)
- get_domain_state (1 commit)
- altp2m_{init,teardown} routines (12 commits)
- altp2m_{get,set}_altp2m (4 commits)
  - Needed for altp2m_vcpu_{initialise,destroy}
- altp2m_vcpu_{initialise,destroy} (2 commits)
  - Needed for HVMOP_set_domain_state
- altp2m view visibility (5 commits)
  - Needed for altp2m_init_by_id, altp2m_flush
- altp2m_activate_altp2m (2 commits)
  - Needed for altp2m_init_by_id
- altp2m_init_by_id (2 commits)
  - Needed for HVMOP_altp2m_set_domain_state
- altp2m_reset_altp2m (2 commits)
  - Needed for altp2m_flush
- altp2m_flush (2 commits)
  - Needed for HVMOP_altp2m_set_domain_state
- set_domain_state (1 commit)

The code for this patch series can also be found on GitLab:
https://gitlab.com/xen-project/people/elektrobit/xen/-/tree/altp2m-arm-rework-rfc

Best,
Rose Spangler

[1] Rebase of original patch series:
https://gitlab.com/xen-project/people/elektrobit/xen/-/commits/altp2m-arm-rebase

[2] Original patch series:
v1: https://lore.kernel.org/xen-devel/20160704114605.10086-1-proskurin@sec.in.tum.de/
v2: https://lore.kernel.org/xen-devel/20160801171028.11615-1-proskurin@sec.in.tum.de/
v3: https://lore.kernel.org/xen-devel/20160816221714.22041-1-proskurin@sec.in.tum.de/
v4: https://lore.kernel.org/xen-devel/20170830183258.14612-1-proskurin@sec.in.tum.de/
v5 was never submitted to mailing list, but is available on GitHub:
https://github.com/sergej-proskurin/xen/tree/arm-altp2m-v5

(Resend due to threading issues in first send attempt)

Rose Spangler (38):
  altp2m: Add template common altp2m.c/altp2m.h
  altp2m: Move altp2m_active to common domain struct
  altp2m: Move altp2m_p2m to common domain struct
  x86/altp2m: Rename hvm_altp2m_supported to altp2m_supported
  altp2m: Move altp2m_supported to arch header
  arm/altp2m: Add template arch-specific altp2m.c/altp2m.h
  arm/altp2m: Introduce CONFIG_ALTP2M Kconfig option
  altp2m: Rename p2m_*_altp2m functions and move declarations out of
    p2m.h
  altp2m: Move do_altp2m_op to common code
  altp2m: Add ARM support to do_altp2m_op
  arm/altp2m: Add support for HVMOP_altp2m_get_domain_state
  x86/p2m: Move p2m_{init,free}_one declarations to arch header
  x86/altp2m: Add lock functions accessible from common code
  altp2m: Move altp2m_{init,teardown} to common code
  arm/p2m: Allocate hostp2m with xzalloc
  arm/p2m: Move hostp2m init/teardown to individual functions
  arm/p2m: Invalidate root page table entries and flush TLB in
    p2m_flush_table
  arm/altp2m: Add support for altp2m init/teardown routines
  altp2m: Move altp2m_{get,set}_altp2m to common code
  arm/altp2m: Add altp2m index to arch_vcpu
  altp2m: Add altp2m_set_vcpu_idx
  arm/altp2m: Add support for altp2m_{get,set}_altp2m
  altp2m: Move altp2m_vcpu_{initialise,destroy} to common code
  arm/altp2m: Add support for altp2m_vcpu_{initialise,destroy}
  arm/altp2m: Add altp2m view validity/visibility indicator
  altp2m: Add altp2m_view_is_{valid,visible}
  x86/altp2m: Add altp2m_set_view_visibility_locked
  arm/altp2m: Add altp2m_set_view_visibility{,_locked} support
  arm/altp2m: Add support for HVMOP_altp2m_set_visibility
  x86/altp2m: Add altp2m_activate_altp2m declaration to arch header
  arm/altp2m: Add support for altp2m_activate_altp2m
  altp2m: Move altp2m_init_by_id to common code
  arm/altp2m: Add support for altp2m_init_by_id
  x86/altp2m: Add altp2m_reset_altp2m declaration to arch header
  arm/altp2m: Add altp2m_reset_altp2m routine
  altp2m: Move altp2m_flush to common code
  arm/altp2m: Add support for altp2m_flush
  arm/p2m: Add support for HVMOP_altp2m_set_domain_state

Sergej Proskurin (5):
  arm/p2m: Cosmetic fix - substitute _gfn(ULONG_MAX) for INVALID_GFN
  arm/p2m: Change function prototype of p2m_alloc_table
  arm/p2m: Rename parameter in p2m_alloc_vmid
  arm/p2m: Change func prototype and impl of p2m_{alloc,free}_vmid
  arm/p2m: Introduce p2m_is_{hostp2m,altp2m}

 xen/arch/arm/Kconfig                     |  11 +
 xen/arch/arm/Makefile                    |   1 +
 xen/arch/arm/altp2m.c                    | 122 +++++
 xen/arch/arm/domain.c                    |   2 +-
 xen/arch/arm/hvm.c                       |   9 +
 xen/arch/arm/include/asm/Makefile        |   1 -
 xen/arch/arm/include/asm/altp2m.h        |  84 ++++
 xen/arch/arm/include/asm/domain.h        |  19 +-
 xen/arch/arm/include/asm/p2m.h           |  41 +-
 xen/arch/arm/mm.c                        |   2 +-
 xen/arch/arm/mmu/p2m.c                   | 162 ++++++-
 xen/arch/arm/p2m.c                       |  31 +-
 xen/arch/arm/traps.c                     |   2 +-
 xen/arch/x86/domain.c                    |   3 +-
 xen/arch/x86/hvm/emulate.c               |   1 +
 xen/arch/x86/hvm/hvm.c                   | 413 +----------------
 xen/arch/x86/hvm/monitor.c               |   3 +-
 xen/arch/x86/hvm/vmx/vmx.c               |   9 +-
 xen/arch/x86/include/asm/altp2m.h        | 115 ++++-
 xen/arch/x86/include/asm/domain.h        |   5 -
 xen/arch/x86/include/asm/hvm/hvm.h       |  11 -
 xen/arch/x86/include/asm/p2m.h           | 112 +----
 xen/arch/x86/mm/altp2m.c                 | 242 +++-------
 xen/arch/x86/mm/hap/hap.c                |  17 +-
 xen/arch/x86/mm/mem_access.c             |  22 +-
 xen/arch/x86/mm/mem_sharing.c            |   3 +-
 xen/arch/x86/mm/p2m-basic.c              |   7 +-
 xen/arch/x86/mm/p2m-ept.c                |  13 +-
 xen/arch/x86/mm/p2m-pt.c                 |   1 +
 xen/arch/x86/mm/p2m.c                    |   9 +-
 xen/arch/x86/mm/p2m.h                    |   6 -
 xen/common/Makefile                      |   1 +
 xen/common/altp2m.c                      | 551 +++++++++++++++++++++++
 xen/common/monitor.c                     |   1 +
 xen/common/vm_event.c                    |   2 +-
 xen/drivers/passthrough/arm/ipmmu-vmsa.c |   2 +-
 xen/drivers/passthrough/arm/smmu-v3.c    |   2 +-
 xen/drivers/passthrough/arm/smmu.c       |   2 +-
 xen/include/asm-generic/altp2m.h         |   5 +-
 xen/include/xen/altp2m.h                 |  98 ++++
 xen/include/xen/p2m-common.h             |   2 +-
 xen/include/xen/sched.h                  |   3 +
 42 files changed, 1330 insertions(+), 818 deletions(-)
 create mode 100644 xen/arch/arm/altp2m.c
 create mode 100644 xen/arch/arm/include/asm/altp2m.h
 create mode 100644 xen/common/altp2m.c
 create mode 100644 xen/include/xen/altp2m.h

-- 
2.34.1



From xen-devel-bounces@lists.xenproject.org Mon Apr 20 21:45:15 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 20 Apr 2026 21:45:15 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1288185.1568501 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wEwQY-00085W-4A; Mon, 20 Apr 2026 21:45:10 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1288185.1568501; Mon, 20 Apr 2026 21:45: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 1wEwQY-00085P-1G; Mon, 20 Apr 2026 21:45:10 +0000
Received: by outflank-mailman (input) for mailman id 1288185;
 Mon, 20 Apr 2026 21:45:08 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <Rose.Spangler@elektrobit.com>) id 1wEwQV-00085F-MX
 for xen-devel@lists.xenproject.org; Mon, 20 Apr 2026 21:45:08 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wEwQV-00EhI8-2k
 for xen-devel@lists.xenproject.org; Mon, 20 Apr 2026 23:45:07 +0200
Received: from [10.42.69.11] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <Rose.Spangler@elektrobit.com>)
 id 69e69e5e-bab6-0a2a0a5309dd-0a2a450b817c-8
 for <xen-devel@lists.xenproject.org>; Mon, 20 Apr 2026 23:45:07 +0200
Received: from [52.101.57.77]
 (helo=BN8PR05CU002.outbound.protection.outlook.com)
 by tlsNG-42698a.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.1)
 (envelope-from <Rose.Spangler@elektrobit.com>)
 id 69e69b8f-212f-0a2a450b0019-3465394d8112-3
 for <xen-devel@lists.xenproject.org>; Mon, 20 Apr 2026 23:33:04 +0200
Received: from BN9PR03CA0286.namprd03.prod.outlook.com (2603:10b6:408:f5::21)
 by CO1PR08MB6817.namprd08.prod.outlook.com (2603:10b6:303:9c::17)
 with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9818.32; Mon, 20 Apr
 2026 21:32:53 +0000
Received: from BN3PEPF0000B070.namprd21.prod.outlook.com
 (2603:10b6:408:f5:cafe::f8) by BN9PR03CA0286.outlook.office365.com
 (2603:10b6:408:f5::21) with Microsoft SMTP Server (version=TLS1_3,
 cipher=TLS_AES_256_GCM_SHA384) id 15.20.9791.48 via Frontend Transport; Mon,
 20 Apr 2026 21:32:53 +0000
Received: from usbth1es003.ebgroup.elektrobit.com (4.79.107.243) by
 BN3PEPF0000B070.mail.protection.outlook.com (10.167.243.75) with Microsoft
 SMTP Server (version=TLS1_3, cipher=TLS_AES_256_GCM_SHA384) id 15.20.9870.4
 via Frontend Transport; Mon, 20 Apr 2026 21:32:52 +0000
Received: from usbth1es003 (localhost [127.0.0.1])
 by usbth1es003.ebgroup.elektrobit.com (Postfix) with SMTP id 4fzzH774ysz1wdM; 
 Mon, 20 Apr 2026 14:32:51 -0700 (PDT)
Received: from BL2PR08CU001.outbound.protection.outlook.com
 (mail-bl2pr08cu00105.outbound.protection.outlook.com [40.93.4.13])
 (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)
 key-exchange secp384r1 server-signature RSA-PSS (2048 bits) server-digest
 SHA256) (No client certificate requested)
 by usbth1es003.ebgroup.elektrobit.com (Postfix) with ESMTPS;
 Mon, 20 Apr 2026 14:32:51 -0700 (PDT)
Received: from BY1P220CA0046.NAMP220.PROD.OUTLOOK.COM (2603:10b6:a03:59e::8)
 by DM8PR08MB7271.namprd08.prod.outlook.com (2603:10b6:8:22::18) with
 Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9818.32; Mon, 20 Apr
 2026 21:32:44 +0000
Received: from SJ1PEPF000026C8.namprd04.prod.outlook.com
 (2603:10b6:a03:59e:cafe::72) by BY1P220CA0046.outlook.office365.com
 (2603:10b6:a03:59e::8) with Microsoft SMTP Server (version=TLS1_3,
 cipher=TLS_AES_256_GCM_SHA384) id 15.20.9791.48 via Frontend Transport; Mon,
 20 Apr 2026 21:32:44 +0000
Received: from denue6es012.ebgroup.elektrobit.com (213.95.148.172) by
 SJ1PEPF000026C8.mail.protection.outlook.com (10.167.244.105) with Microsoft
 SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id
 15.20.9791.48 via Frontend Transport; Mon, 20 Apr 2026 21:32:43 +0000
Received: from ubuntu.localdomain (10.10.178.50) by
 denue6es012.ebgroup.elektrobit.com (10.243.160.140) with Microsoft SMTP
 Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id
 15.2.2562.35; Mon, 20 Apr 2026 23:32:39 +0200
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@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=elektrobit.com header.i="@elektrobit.com" header.h="From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck"; dkim=pass header.s=selector1 header.d=elektrobit.com header.i="@elektrobit.com" header.h="From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck"
ARC-Seal: i=2; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=pass;
 b=pnyppxpAA3E7zRPcVFx6M91T4j8AsaHdNvq5ZUIIflMQ8ZOBCJkpUTYIfDA9BPkMKozd1bIPKD4SkgsMmvqwzUhdkXNAK5mpZTSrNS3k8DD6j7IdTtI8drMfZ0B/J65f3Qr9BljBSueCqEnLfjSLqqmHlZno5EhV0TsTOF1aYBNKQZELNuHjF5bwM8VvxwNanSjUiGB+dj0WApHbPRIqmh1TJTkOz8/qEXdaweWuURkhT6W9xjOP7YDcfwVF4FAAqAIjRTrFYbTJZ8cUOJKFfIrXPUrhSvm3acLLkpZNHNbLXOCQFqNeLEKtao0njCxc+5j3SxOuXeznfyLGzvbWiA==
ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com;
 s=arcselector10001;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1;
 bh=55tm/2wld/ywUdSampZbkiV4LluAQpXTHs92fXHMAOY=;
 b=gRISS/cFL0qpEyI6pTTxim4jik+LLlLp/u2B+FIhUZpod+Kv6Wn5fYDYXhoa5lUZtojkAulTWW1ELqS5k2VMsvQJySAznZGBNtrAL0HyxhoyOWlN9hpw/enL8gLkZCVjIJLkhUB36gA70aDC/92hWCTw4Kfq0NwbLLaPtyBNw6ZjET3C/7IbAEjc2epJkujj7E48LBmGRwlXxBoQzWLcT+UWsv7oaX+gjZtBWMhYXcTK8/vQp+hyIcr4qhG05/rn4Y9wrerQpt9NIaG/ZEXOqMTlt4h20gLo2LryqQ7QQJtDqgvyxI6fshq7/sPLppMqAcvEuvg1kUgECSt8BUusEg==
ARC-Authentication-Results: i=2; mx.microsoft.com 1; spf=pass (sender ip is
 40.93.4.13) smtp.rcpttodomain=amd.com smtp.mailfrom=elektrobit.com;
 dmarc=pass (p=quarantine sp=none pct=100) action=none
 header.from=elektrobit.com; dkim=pass (signature was verified)
 header.d=elektrobit.com; arc=pass (0 oda=1 ltdi=1
 spf=[1,1,smtp.mailfrom=elektrobit.com]
 dmarc=[1,1,header.from=elektrobit.com])
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=elektrobit.com;
 s=selector1;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck;
 bh=55tm/2wld/ywUdSampZbkiV4LluAQpXTHs92fXHMAOY=;
 b=SiTLjSx1ykHdZF28raPtmnOKKxizfDxxpy2vDyLOE/2YmCvmek9zKPdle87OsVa7v3uhSndpDeVYRceDqQMXuS3Ph0RAx2mZNx2QYzQvHPu5L5tFuTYyfTv/1llDgUT0jmKoHOKZs/ewbuQpxYnzSyWMu9fY876pw805+5RsBDE=
X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 40.93.4.13)
 smtp.mailfrom=elektrobit.com; dkim=pass (signature was verified)
 header.d=elektrobit.com;dmarc=pass action=none header.from=elektrobit.com;
Received-SPF: Pass (protection.outlook.com: domain of elektrobit.com
 designates 40.93.4.13 as permitted sender) receiver=protection.outlook.com;
 client-ip=40.93.4.13; helo=BL2PR08CU001.outbound.protection.outlook.com; pr=C
ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none;
 b=Rp45S8N4WhXSQ5x/KRV2UADsLQ8IF9DIWn+IeKyxwVYtCIKPjPMHMbJwhx7Rko55NX0/dfILYuoyRGLtFGsgE8gvCRwCh9kdvsE9EJQRrsZSTi5xNW20HZhT/tfPMebUT9cvYpo9PYIFcEC79zSscLHCJxl2DcRIbPc5uF9gfNYuJWPqnzIf35JZKjfBvV6y1hwguiT91qEMJ9Od4T0snqzTD/fOaUDHY9pn0FCXARQGPBlHmWGS7GyJQDICVZPDiDafe3hh2I1fBUGvkO2M7CHSE8Z/iD6e+KyhxzgxxhjZr3YHthGYx4wVb4ledK+9aUrttM7O8SrrcmC2mJ2LfQ==
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com;
 s=arcselector10001;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1;
 bh=55tm/2wld/ywUdSampZbkiV4LluAQpXTHs92fXHMAOY=;
 b=VSKicZh+8sPFO9i5ZrgVYsWkxHjypGOhrl0bVmJIiEaTYwdGO7klCmvJlhLjKobVVgG6uINiZOR5BxU4o5aV8lakdETTvGpz1HRQXfNbUjbf5RTZeqQDrzD4PTZgFun///LPb0QRauX4/6ocSubBp1ECJu6/FCBbUaqjvZmIE6dzKb7lSPScUYMCS6BdIrKnzciQCCdcwDp9WIHnnW5DQ6+HL8TMaMNQi7WGccXHykSDQjArW+V/1nZ0LZXxItWUh0DoBWcKBD4zgiCeKywgR7ZksDgcUQo2FZjqvYToPJVv5gqWQenj8DJcdN2n0Ltfr2nFxDLgts4cErj6dEHS0g==
ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass (sender ip is
 213.95.148.172) smtp.rcpttodomain=lists.xenproject.org
 smtp.mailfrom=elektrobit.com; dmarc=pass (p=quarantine sp=none pct=100)
 action=none header.from=elektrobit.com; dkim=none (message not signed);
 arc=none (0)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=elektrobit.com;
 s=selector1;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck;
 bh=55tm/2wld/ywUdSampZbkiV4LluAQpXTHs92fXHMAOY=;
 b=SiTLjSx1ykHdZF28raPtmnOKKxizfDxxpy2vDyLOE/2YmCvmek9zKPdle87OsVa7v3uhSndpDeVYRceDqQMXuS3Ph0RAx2mZNx2QYzQvHPu5L5tFuTYyfTv/1llDgUT0jmKoHOKZs/ewbuQpxYnzSyWMu9fY876pw805+5RsBDE=
X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 213.95.148.172)
 smtp.mailfrom=elektrobit.com; dkim=none (message not signed)
 header.d=none;dmarc=pass action=none header.from=elektrobit.com;
Received-SPF: Pass (protection.outlook.com: domain of elektrobit.com
 designates 213.95.148.172 as permitted sender)
 receiver=protection.outlook.com; client-ip=213.95.148.172;
 helo=denue6es012.ebgroup.elektrobit.com; pr=C
From: Rose Spangler <Rose.Spangler@elektrobit.com>
To: <xen-devel@lists.xenproject.org>
CC: Rose Spangler <Rose.Spangler@elektrobit.com>, Jan Beulich
	<jbeulich@suse.com>, Andrew Cooper <andrew.cooper3@citrix.com>,
	=?UTF-8?q?Roger=20Pau=20Monn=C3=A9?= <roger.pau@citrix.com>, 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>, "Daniel P. Smith"
	<dpsmith@apertussolutions.com>, Aqib Javaid <Aqib.Javaid@elektrobit.com>
Subject: [RFC PATCH v6 09/43] altp2m: Move do_altp2m_op to common code
Date: Mon, 20 Apr 2026 17:31:32 -0400
Message-ID: <20260420213206.208750-10-Rose.Spangler@elektrobit.com>
X-Mailer: git-send-email 2.34.1
In-Reply-To: <20260420213206.208750-1-Rose.Spangler@elektrobit.com>
References: <20260420213206.208750-1-Rose.Spangler@elektrobit.com>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit
Content-Type: text/plain
X-Originating-IP: [10.10.178.50]
X-ClientProxiedBy: denue6es012.ebgroup.elektrobit.com (10.243.160.140) To
 denue6es012.ebgroup.elektrobit.com (10.243.160.140)
X-EOPAttributedMessage: 1
X-MS-Exchange-SkipListedInternetSender:
 ip=[213.95.148.172];domain=denue6es012.ebgroup.elektrobit.com
X-MS-TrafficTypeDiagnostic:
	SJ1PEPF000026C8:EE_|DM8PR08MB7271:EE_|BN3PEPF0000B070:EE_|CO1PR08MB6817:EE_
X-MS-Office365-Filtering-Correlation-Id: 47507922-bb98-4df0-2e62-08de9f246136
X-SM-outgoing: yes
X-MS-Exchange-SenderADCheck: 1
X-MS-Exchange-AntiSpam-Relay: 0
X-Microsoft-Antispam-Untrusted:
 BCL:0;ARA:13230040|704162011799003|82310400026|36860700016|7416014|376014|1800799024|56012099003|22082099003|18002099003;
X-Microsoft-Antispam-Message-Info-Original:
 =?us-ascii?Q?SHUEldrYkAhFQ+nVB9DhSRyKpjWwDtEbjlykvRdGcbtansw/6piyHsFjOFLa?=
 =?us-ascii?Q?olKRgJfTvpwHyqCpBubvqS/p9hj6dlQqbsA6qilnNJAEY9YYOlZo4YPSScT5?=
 =?us-ascii?Q?zfXOULt1z0oMr8S7GjEAZumazMQ4ze/LESh0JroiC2PecFc3QiFm+/A7ze5M?=
 =?us-ascii?Q?RrFS9os0/DJKVI4B2F9nV64hW6xCd0D4JNabV8keiKnd8Hj3XsKxbXQZffUf?=
 =?us-ascii?Q?6Mti1up6lV6kFO1gilUVGXaqjr2refJiEIEn8hulAyOqTYw3a6lhN27PdJy1?=
 =?us-ascii?Q?lE00WzpKwf4lAiKBCTzprq+PsFsgXWSiNJb3jvnsrV2nwYpvox8qADewOvsD?=
 =?us-ascii?Q?3VKYNWgxNVundOMHAzDtaYSt4qJNtxd6N5Au/TaW8HMoeCH7EAFoSzE42FIl?=
 =?us-ascii?Q?ynNc9HqL/lPgCYdsl0/tWrL6CMrIMpAfj6rMGBMS3dgUxBgZQYCtMJLTIzRF?=
 =?us-ascii?Q?KZM3uoRWANBpS8Ol1CSS9kVZX24kWctTEp+yqKm215EHBuuPDwRzjUz/Qkd2?=
 =?us-ascii?Q?TQ3jusOIhlNfvP+TWZVHPe7Iy5BJDXn3LarFT5buaADpQSUeBYtWrLF2BY72?=
 =?us-ascii?Q?Iza0aDo1zdx3r1Nw1gZ++GtCVP/j7ofCkVZikcbm26SAayScwkTGNO8u9L7u?=
 =?us-ascii?Q?Q78HileowASVOmig6ZC4VuIG2TNYWG/MYSXq5cYISZp599xDWFjlxmEw9Vat?=
 =?us-ascii?Q?5GSEr5KL62q+/J0fih1KTFsg3fK/YgEWJCjhsaBRYR60o8fa6s6FzAK0eReT?=
 =?us-ascii?Q?Vo8qXctLLe2n3E2AcB676XQd3viKROSPm32evUjPzX9gLpuBkeYR9IU+YPyR?=
 =?us-ascii?Q?bVOW8J4iR8ZJZt2jZHz/aMRmLqU1aQlYca7UoGjT88Alzt4mjrGCBB5qvk5B?=
 =?us-ascii?Q?fICkheaSHvQeKk2qxvWm7g4t3uci3BaM0jSYoDqNqe4YnWT9NsvuMM4Dsf80?=
 =?us-ascii?Q?iPXrvvafD0rWXGk0QphjDo8HIvlSJe/81BnW+Mdkrt+huYtdGqt2sOzRSuXe?=
 =?us-ascii?Q?vViZLf5Jehww3jRQC0Gfv+2a1U/C2bsAwSp1uwlm/wrcaWktRRLmH7XsEo1I?=
 =?us-ascii?Q?AxwLdnCTxqk+CbVHFyJK/rq/O4alD1seYLueb9Mjexdgk1jzHIkYHB2RyOVV?=
 =?us-ascii?Q?ki/liqJWJ0q5WHtOAeb6pWSheoGoq/WnXQ=3D=3D?=
X-Forefront-Antispam-Report-Untrusted:
 CIP:213.95.148.172;CTRY:DE;LANG:en;SCL:1;SRV:;IPV:CAL;SFV:NSPM;H:denue6es012.ebgroup.elektrobit.com;PTR:eth1-fw1-nbg6.eb.noris.de;CAT:NONE;SFS:(13230040)(704162011799003)(82310400026)(36860700016)(7416014)(376014)(1800799024)(56012099003)(22082099003)(18002099003);DIR:OUT;SFP:1102;
X-Exchange-RoutingPolicyChecked:
 BLjFGyhl2K9k0t7gY774NSPZU2JXQuDbcFeusIilE6LgEPgzAYnY6VERNirFz4bceaJmoyXnfF0qpqt2jSfRZyDyElcOWvUr8j9olC83LuyoJwgiMPt/epnzAmGUUNSqAuFybi8gKWVQkuegD9zwUs4FxsfIDIl2gOOGCtenX/977xOq0a+PHuvjr/eJXqY+fyZVWm43sSGztg4GvzLDi7jOiZUMtTKbIC3JgXyYjmrDelSBz8UIA1zwvjUeRzuIaCsd4GeDZ4AkJb6U/cVkL+u223SK2WVkeJNYV63eJ720i6Rmy/tymXDdpB4TIZevjwGLE3T950J3qB3TjvS+oQ==
X-MS-Exchange-Transport-CrossTenantHeadersStamped: DM8PR08MB7271
X-MS-Exchange-SkipListedInternetSender:
 ip=[40.93.4.13];domain=BL2PR08CU001.outbound.protection.outlook.com
X-MS-Exchange-ExternalOriginalInternetSender:
 ip=[40.93.4.13];domain=BL2PR08CU001.outbound.protection.outlook.com
X-MS-Exchange-Transport-CrossTenantHeadersStripped:
 BN3PEPF0000B070.namprd21.prod.outlook.com
X-MS-PublicTrafficType: Email
X-MS-Office365-Filtering-Correlation-Id-Prvs:
	174e58aa-364c-42b9-a31d-08de9f245b72
X-Microsoft-Antispam:
	BCL:0;ARA:13230040|704162011799003|156008|82310400026|35042699022|14060799003|36860700016|7416014|376014|1800799024|18002099003|56012099003|22082099003;
X-Microsoft-Antispam-Message-Info:
	=?us-ascii?Q?83jfayWjlb6NtX0//b/KFfzyMS9Crw4UIO/skIF09D7sme/wcVGRxc96V4u3?=
 =?us-ascii?Q?vwmRZmnYuMBHQA3krFwHNaJ7QiOAq8coJtYXQpnDXprimjyBmI47/9mptJX3?=
 =?us-ascii?Q?VSGPkCeKdV5tUjsRfa7XOboOd/IANQCYJLAZDXg6Cg+/Nxz5ognKoQR92C2J?=
 =?us-ascii?Q?3/yhupbG85VarcOE6vE/mB9v+zAXQ/hXp8k/qZxDQ+6++rflkoufYax36GbK?=
 =?us-ascii?Q?2fKqDOazXW9rGgO6Nk6ZTtnu0JR5F3jJFbzerGq+tIgJmjXfAqK2xDb2rzuI?=
 =?us-ascii?Q?Vn313ThPuH1qeBDV0TXjwtPn/tNkAklL1Ut7xCm9hDRDC0mN0pkz4nEEC46E?=
 =?us-ascii?Q?k3gsqnl7J2toGnO4ZQ3tP2wMH4cNoEuUbGsaflX4HrmB1/So72PdMG2Fjz5j?=
 =?us-ascii?Q?0Q3VsY+d0IS9a9PCDHkdX/nFcHxGTxQvt11dpzJkvn8L3fI1LA5bBkewfEPX?=
 =?us-ascii?Q?wVkRZKC8TlS/z6/9Otkz/jjHQucGEVCuUE1v6j9T1xSoY0XuRAS2p4HsaemK?=
 =?us-ascii?Q?rebeWiPRQ40lLEoaaKv6jIG7jchEVDG/DCjnePdPsWfrjypuC9Q+JV3Gfarp?=
 =?us-ascii?Q?YGW5EOZIMgMbAU1+x9/sjohhjjflARZr5eVwCjYNIqXzIcRm8MG+BmZFToUf?=
 =?us-ascii?Q?w9LPrfDgxyLM3G0L7QFcUdPXQFMhIRn2glKm9lUwUpXbuGZMDmazADpqeC2q?=
 =?us-ascii?Q?QZEOvc17YWE8r/9YzbuV5D6mftIc7lp2yNqJn9ft0zlEq6oI9srJVN/jxGzr?=
 =?us-ascii?Q?0Mp8G1E9mC25wZ8gJQRvIcReqU0YGwNwAA5IGeyG9eU4pl3uaZtbz3FYEQLs?=
 =?us-ascii?Q?OhjMe3oHXNyWZoG458/fIIilZiKm8FSVljXew6eRPyOKx3Gi7JMjlBpFAsWr?=
 =?us-ascii?Q?wX5pRb+gtfql+QDsCOdtKSGb5FWiq2dwXVG7jFZRwDkfGfSoo1znVMHULavm?=
 =?us-ascii?Q?mU2ONsn58Dj0ZkfVASy/5N5OdWrNjbZoetNmmVsW366e2gEFl/9SUBElKroE?=
 =?us-ascii?Q?ti18+qv9BSReJhBoUtDVLPlEu0XL0HTaZAWWGL/u0idfZ2dgEs4we9GTTYbW?=
 =?us-ascii?Q?/AhA8u74XQ++b7QQew0WC5pl2ZAqfvmtbgbcfMqDXCKvzVimaLXMxy6GAbEK?=
 =?us-ascii?Q?uhiEuEmc/QD2/BnyPISp00EK6Lkdj+LC9A=3D=3D?=
X-Forefront-Antispam-Report:
	CIP:4.79.107.243;CTRY:US;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:BL2PR08CU001.outbound.protection.outlook.com;PTR:mail-bl2pr08cu00105.outbound.protection.outlook.com;CAT:NONE;SFS:(13230040)(704162011799003)(156008)(82310400026)(35042699022)(14060799003)(36860700016)(7416014)(376014)(1800799024)(18002099003)(56012099003)(22082099003);DIR:OUT;SFP:1102;
X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1
X-MS-Exchange-AntiSpam-MessageData-0:
	TOFnOmifBHmO1VS6QLW1+Si+aqCZQ6b5YGqmNFJL9R8/+I+5VLnBIGWxZqZRFIN24COdczVHvTgm82O0O+Jn5v3NdIsydxZfcxbYkTV4TD1PjpVt6QS+JMGwUdCaBDVdab4O6hk58b3Gf+MVF/fx28B7F7O2UcLZkv08Wjw2ADXVx3rt8TrqMsk77apAX2XBsVNxvo+t/QlZPSM6x81+mmRwzWdcnVtCvWGhzwBjtF//Tx8BwaS6WVlKwFF+IlIx6o/ugYxvuo15j/KL3vmaX9G7vYSdTn2mcGLdsflHeqebn02ygjJFCfqBN6HZQW99jqlssRNToE+yjrL5hxoiWH0vN6YBT7wMiiD3/Y9eVivMWm88gdtSmTSXVGJ3oLS/2CaBEaAg1CxuVFiXCxWfliV2+6z59MSRVIg6khyYmwqcNslFxOhy3jlD6b4VaACc
X-OriginatorOrg: elektrobit.com
X-MS-Exchange-CrossTenant-OriginalArrivalTime: 20 Apr 2026 21:32:52.8449
 (UTC)
X-MS-Exchange-CrossTenant-Network-Message-Id: 47507922-bb98-4df0-2e62-08de9f246136
X-MS-Exchange-CrossTenant-Id: e764c36b-012e-4216-910d-8fd16283182d
X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=e764c36b-012e-4216-910d-8fd16283182d;Ip=[4.79.107.243];Helo=[usbth1es003.ebgroup.elektrobit.com]
X-MS-Exchange-CrossTenant-AuthAs: Internal
X-MS-Exchange-CrossTenant-AuthSource: TreatMessagesAsInternal-BN3PEPF0000B070.namprd21.prod.outlook.com
X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem
X-MS-Exchange-Transport-CrossTenantHeadersStamped: CO1PR08MB6817
X-purgate-ID: tlsNG-42698a/1776720784-07F7EF3B-1E434C2F/37/8714975798-1487109
X-purgate-type: bulk
X-purgate-size: 26338

This commit moves the altp2m HVMOP implementation to common code, making it
possible to re-use it across architectures. In this commit, the entire
implementation is gated behind CONFIG_X86, with no changes to the body of
do_altp2m_op. A stub implementation is added for ARM, which will be removed
once do_altp2m_op has been modified to add ARM support.

This commit contains only code movement, and no change in functionality is
intended.

This is commit 1/2 of the common do_altp2m_op phase.

Signed-off-by: Rose Spangler <Rose.Spangler@elektrobit.com>
Signed-off-by: Aqib Javaid <Aqib.Javaid@elektrobit.com>
---
v6: Introduced this patch.
---
 xen/arch/x86/hvm/hvm.c   | 400 -------------------------------------
 xen/common/altp2m.c      | 413 +++++++++++++++++++++++++++++++++++++++
 xen/include/xen/altp2m.h |  11 ++
 3 files changed, 424 insertions(+), 400 deletions(-)

diff --git a/xen/arch/x86/hvm/hvm.c b/xen/arch/x86/hvm/hvm.c
index 5b6e91adce17..4adcc3c49d95 100644
--- a/xen/arch/x86/hvm/hvm.c
+++ b/xen/arch/x86/hvm/hvm.c
@@ -4526,406 +4526,6 @@ static int hvmop_get_param(
     return rc;
 }
 
-/*
- * altp2m operations are envisioned as being used in several different
- * modes:
- *
- * - external: All control and decisions are made by an external agent
- *   running domain 0.
- *
- * - internal: altp2m operations are used exclusively by an in-guest
- *   agent to protect itself from the guest kernel and in-guest
- *   attackers.
- *
- * - coordinated: An in-guest agent handles #VE and VMFUNCs locally,
- *   but makes requests of an agent running outside the domain for
- *   bigger changes (such as modifying altp2m entires).
- *
- * This corresponds to the three values for HVM_PARAM_ALTP2M
- * (external, mixed, limited). All three models have advantages and
- * disadvantages.
- *
- * Normally hypercalls made by a program in domain 0 in order to
- * control a guest would be DOMCTLs rather than HVMOPs.  But in order
- * to properly enable the 'internal' use case, as well as to avoid
- * fragmentation, all altp2m subops should come under this single
- * HVMOP.
- *
- * Note that 'internal' mode (HVM_PARAM_ALTP2M == XEN_ALTP2M_mixed)
- * has not been evaluated for safety from a security perspective.
- * Before using this mode in a security-critical environment, each
- * subop should be evaluated for safety, with unsafe subops
- * blacklisted in xsm_hvm_altp2mhvm_op().
- */
-static int do_altp2m_op(
-    XEN_GUEST_HANDLE_PARAM(void) arg)
-{
-#ifdef CONFIG_ALTP2M
-    struct xen_hvm_altp2m_op a;
-    struct domain *d = NULL;
-    int rc = 0;
-    uint64_t mode;
-
-    if ( !altp2m_supported() )
-        return -EOPNOTSUPP;
-
-    if ( copy_from_guest(&a, arg, 1) )
-        return -EFAULT;
-
-    if ( a.pad1 || a.pad2 ||
-         (a.version != HVMOP_ALTP2M_INTERFACE_VERSION) )
-        return -EINVAL;
-
-    switch ( a.cmd )
-    {
-    case HVMOP_altp2m_get_domain_state:
-    case HVMOP_altp2m_set_domain_state:
-    case HVMOP_altp2m_vcpu_enable_notify:
-    case HVMOP_altp2m_vcpu_disable_notify:
-    case HVMOP_altp2m_create_p2m:
-    case HVMOP_altp2m_destroy_p2m:
-    case HVMOP_altp2m_switch_p2m:
-    case HVMOP_altp2m_set_suppress_ve:
-    case HVMOP_altp2m_set_suppress_ve_multi:
-    case HVMOP_altp2m_get_suppress_ve:
-    case HVMOP_altp2m_set_mem_access:
-    case HVMOP_altp2m_set_mem_access_multi:
-    case HVMOP_altp2m_get_mem_access:
-    case HVMOP_altp2m_change_gfn:
-    case HVMOP_altp2m_get_p2m_idx:
-    case HVMOP_altp2m_set_visibility:
-        break;
-
-    default:
-        return -EOPNOTSUPP;
-    }
-
-    d = rcu_lock_domain_by_any_id(a.domain);
-
-    if ( d == NULL )
-        return -ESRCH;
-
-    if ( !is_hvm_domain(d) )
-    {
-        rc = -EOPNOTSUPP;
-        goto out;
-    }
-
-    if ( (a.cmd != HVMOP_altp2m_get_domain_state) &&
-         (a.cmd != HVMOP_altp2m_set_domain_state) &&
-         !d->altp2m_active )
-    {
-        rc = -EOPNOTSUPP;
-        goto out;
-    }
-
-    mode = d->arch.hvm.params[HVM_PARAM_ALTP2M];
-
-    if ( XEN_ALTP2M_disabled == mode )
-    {
-        rc = -EINVAL;
-        goto out;
-    }
-
-    if ( d->nr_altp2m == 0 )
-    {
-        rc = -EOPNOTSUPP;
-        goto out;
-    }
-
-    if ( (rc = xsm_hvm_altp2mhvm_op(XSM_OTHER, d, mode, a.cmd)) )
-        goto out;
-
-    switch ( a.cmd )
-    {
-    case HVMOP_altp2m_get_domain_state:
-        a.u.domain_state.state = altp2m_active(d);
-        rc = __copy_to_guest(arg, &a, 1) ? -EFAULT : 0;
-        break;
-
-    case HVMOP_altp2m_set_domain_state:
-    {
-        struct vcpu *v;
-        bool ostate;
-
-        if ( nestedhvm_enabled(d) )
-        {
-            rc = -EINVAL;
-            break;
-        }
-
-        rc = domain_pause_except_self(d);
-        if ( rc )
-            break;
-
-        ostate = d->altp2m_active;
-        d->altp2m_active = !!a.u.domain_state.state;
-
-        /* If the alternate p2m state has changed, handle appropriately */
-        if ( d->altp2m_active != ostate &&
-             (ostate || !(rc = altp2m_init_by_id(d, 0))) )
-        {
-            for_each_vcpu( d, v )
-            {
-                if ( !ostate )
-                    altp2m_vcpu_initialise(v);
-                else
-                    altp2m_vcpu_destroy(v);
-            }
-
-            if ( ostate )
-                altp2m_flush(d);
-        }
-        else if ( rc )
-            d->altp2m_active = false;
-
-        domain_unpause_except_self(d);
-        break;
-    }
-
-    case HVMOP_altp2m_vcpu_enable_notify:
-    {
-        struct vcpu *v;
-
-        if ( a.u.enable_notify.pad ||
-             a.u.enable_notify.vcpu_id >= d->max_vcpus )
-        {
-            rc = -EINVAL;
-            break;
-        }
-
-        if ( !cpu_has_vmx_virt_exceptions )
-        {
-            rc = -EOPNOTSUPP;
-            break;
-        }
-
-        v = d->vcpu[a.u.enable_notify.vcpu_id];
-
-        rc = altp2m_vcpu_enable_ve(v, _gfn(a.u.enable_notify.gfn));
-        break;
-    }
-
-    case HVMOP_altp2m_vcpu_disable_notify:
-    {
-        struct vcpu *v;
-
-        if ( a.u.disable_notify.vcpu_id >= d->max_vcpus )
-        {
-            rc = -EINVAL;
-            break;
-        }
-
-        if ( !cpu_has_vmx_virt_exceptions )
-        {
-            rc = -EOPNOTSUPP;
-            break;
-        }
-
-        v = d->vcpu[a.u.enable_notify.vcpu_id];
-
-        altp2m_vcpu_disable_ve(v);
-        break;
-    }
-
-    case HVMOP_altp2m_create_p2m:
-        rc = altp2m_init_next_available(d, &a.u.view.view,
-                                        a.u.view.hvmmem_default_access);
-        if ( !rc )
-            rc = __copy_to_guest(arg, &a, 1) ? -EFAULT : 0;
-        break;
-
-    case HVMOP_altp2m_destroy_p2m:
-        rc = altp2m_destroy_by_id(d, a.u.view.view);
-        break;
-
-    case HVMOP_altp2m_switch_p2m:
-        rc = altp2m_switch_domain_altp2m_by_id(d, a.u.view.view);
-        break;
-
-    case HVMOP_altp2m_set_suppress_ve:
-        if ( a.u.suppress_ve.pad1 || a.u.suppress_ve.pad2 )
-            rc = -EINVAL;
-        else
-        {
-            gfn_t gfn = _gfn(a.u.suppress_ve.gfn);
-            unsigned int altp2m_idx = a.u.suppress_ve.view;
-            bool suppress_ve = a.u.suppress_ve.suppress_ve;
-
-            rc = p2m_set_suppress_ve(d, gfn, suppress_ve, altp2m_idx);
-        }
-        break;
-
-    case HVMOP_altp2m_set_suppress_ve_multi:
-    {
-        uint64_t max_phys_addr = (1UL << d->arch.cpuid->extd.maxphysaddr) - 1;
-
-        a.u.suppress_ve_multi.last_gfn = min(a.u.suppress_ve_multi.last_gfn,
-                                             max_phys_addr);
-
-        if ( a.u.suppress_ve_multi.pad1 ||
-             a.u.suppress_ve_multi.first_gfn > a.u.suppress_ve_multi.last_gfn )
-            rc = -EINVAL;
-        else
-        {
-            rc = p2m_set_suppress_ve_multi(d, &a.u.suppress_ve_multi);
-            if ( (!rc || rc == -ERESTART) && __copy_to_guest(arg, &a, 1) )
-                rc = -EFAULT;
-        }
-        break;
-    }
-
-    case HVMOP_altp2m_get_suppress_ve:
-        if ( a.u.suppress_ve.pad1 || a.u.suppress_ve.pad2 )
-            rc = -EINVAL;
-        else
-        {
-            gfn_t gfn = _gfn(a.u.suppress_ve.gfn);
-            unsigned int altp2m_idx = a.u.suppress_ve.view;
-            bool suppress_ve;
-
-            rc = p2m_get_suppress_ve(d, gfn, &suppress_ve, altp2m_idx);
-            if ( !rc )
-            {
-                a.u.suppress_ve.suppress_ve = suppress_ve;
-                rc = __copy_to_guest(arg, &a, 1) ? -EFAULT : 0;
-            }
-        }
-        break;
-
-    case HVMOP_altp2m_set_mem_access:
-        if ( !vm_event_is_enabled(current) )
-        {
-            rc = -EOPNOTSUPP;
-            break;
-        }
-
-        if ( a.u.mem_access.pad )
-            rc = -EINVAL;
-        else
-            rc = p2m_set_mem_access(d, _gfn(a.u.mem_access.gfn), 1, 0, 0,
-                                    a.u.mem_access.access,
-                                    a.u.mem_access.view);
-        break;
-
-    case HVMOP_altp2m_set_mem_access_multi:
-        if ( !vm_event_is_enabled(current) )
-        {
-            rc = -EOPNOTSUPP;
-            break;
-        }
-
-        if ( a.u.set_mem_access_multi.pad ||
-             a.u.set_mem_access_multi.opaque > a.u.set_mem_access_multi.nr )
-        {
-            rc = -EINVAL;
-            break;
-        }
-
-        /*
-         * Unlike XENMEM_access_op_set_access_multi, we don't need any bits of
-         * the 'continuation' counter to be zero (to stash a command in).
-         * However, 0x40 is a good 'stride' to make sure that we make
-         * a reasonable amount of forward progress before yielding,
-         * so use a mask of 0x3F here.
-         */
-        rc = p2m_set_mem_access_multi(d, a.u.set_mem_access_multi.pfn_list,
-                                      a.u.set_mem_access_multi.access_list,
-                                      a.u.set_mem_access_multi.nr,
-                                      a.u.set_mem_access_multi.opaque,
-                                      0x3F,
-                                      a.u.set_mem_access_multi.view);
-        if ( rc > 0 )
-        {
-            a.u.set_mem_access_multi.opaque = rc;
-            rc = -ERESTART;
-            if ( __copy_field_to_guest(guest_handle_cast(arg, xen_hvm_altp2m_op_t),
-                                       &a, u.set_mem_access_multi.opaque) )
-                rc = -EFAULT;
-        }
-        break;
-
-    case HVMOP_altp2m_get_mem_access:
-        if ( !vm_event_is_enabled(current) )
-        {
-            rc = -EOPNOTSUPP;
-            break;
-        }
-
-        if ( a.u.mem_access.pad )
-            rc = -EINVAL;
-        else
-        {
-            xenmem_access_t access;
-
-            rc = p2m_get_mem_access(d, _gfn(a.u.mem_access.gfn), &access,
-                                    a.u.mem_access.view);
-            if ( !rc )
-            {
-                a.u.mem_access.access = access;
-                rc = __copy_to_guest(arg, &a, 1) ? -EFAULT : 0;
-            }
-        }
-        break;
-
-    case HVMOP_altp2m_change_gfn:
-        if ( a.u.change_gfn.pad1 || a.u.change_gfn.pad2 )
-            rc = -EINVAL;
-        else
-            rc = altp2m_change_gfn(d, a.u.change_gfn.view,
-                                   _gfn(a.u.change_gfn.old_gfn),
-                                   _gfn(a.u.change_gfn.new_gfn));
-        break;
-
-    case HVMOP_altp2m_get_p2m_idx:
-    {
-        struct vcpu *v;
-
-        if ( !altp2m_active(d) )
-        {
-            rc = -EOPNOTSUPP;
-            break;
-        }
-
-        if ( (v = domain_vcpu(d, a.u.get_vcpu_p2m_idx.vcpu_id)) == NULL )
-        {
-            rc = -EINVAL;
-            break;
-        }
-
-        a.u.get_vcpu_p2m_idx.altp2m_idx = altp2m_vcpu_idx(v);
-        rc = __copy_to_guest(arg, &a, 1) ? -EFAULT : 0;
-        break;
-    }
-
-    case HVMOP_altp2m_set_visibility:
-    {
-        unsigned int idx = a.u.set_visibility.altp2m_idx;
-
-        if ( a.u.set_visibility.pad )
-            rc = -EINVAL;
-        else if ( !altp2m_active(d) )
-            rc = -EOPNOTSUPP;
-        else
-            rc = altp2m_set_view_visibility(d, idx, a.u.set_visibility.visible);
-        break;
-    }
-
-    default:
-        ASSERT_UNREACHABLE();
-        rc = -EOPNOTSUPP;
-        break;
-    }
-
- out:
-    rcu_unlock_domain(d);
-
-    return rc;
-#else /* !CONFIG_ALTP2M */
-    return -EOPNOTSUPP;
-#endif /* CONFIG_ALTP2M */
-}
-
 DEFINE_XEN_GUEST_HANDLE(compat_hvm_altp2m_op_t);
 
 /*
diff --git a/xen/common/altp2m.c b/xen/common/altp2m.c
index 1a4e102324d4..a43b3a3e34b3 100644
--- a/xen/common/altp2m.c
+++ b/xen/common/altp2m.c
@@ -1,5 +1,418 @@
 /* SPDX-License-Identifier: GPL-2.0-only */
 #include <xen/altp2m.h>
+#include <xen/guest_access.h>
+#include <xen/vm_event.h>
+
+#include <asm/altp2m.h>
+
+#include <public/hvm/params.h>
+
+#include <xsm/xsm.h>
+
+#ifdef CONFIG_X86
+#include <asm/hvm/nestedhvm.h>
+/*
+ * altp2m operations are envisioned as being used in several different
+ * modes:
+ *
+ * - external: All control and decisions are made by an external agent
+ *   running domain 0.
+ *
+ * - internal: altp2m operations are used exclusively by an in-guest
+ *   agent to protect itself from the guest kernel and in-guest
+ *   attackers.
+ *
+ * - coordinated: An in-guest agent handles #VE and VMFUNCs locally,
+ *   but makes requests of an agent running outside the domain for
+ *   bigger changes (such as modifying altp2m entires).
+ *
+ * This corresponds to the three values for HVM_PARAM_ALTP2M
+ * (external, mixed, limited). All three models have advantages and
+ * disadvantages.
+ *
+ * Normally hypercalls made by a program in domain 0 in order to
+ * control a guest would be DOMCTLs rather than HVMOPs.  But in order
+ * to properly enable the 'internal' use case, as well as to avoid
+ * fragmentation, all altp2m subops should come under this single
+ * HVMOP.
+ *
+ * Note that 'internal' mode (HVM_PARAM_ALTP2M == XEN_ALTP2M_mixed)
+ * has not been evaluated for safety from a security perspective.
+ * Before using this mode in a security-critical environment, each
+ * subop should be evaluated for safety, with unsafe subops
+ * blacklisted in xsm_hvm_altp2mhvm_op().
+ */
+int do_altp2m_op(
+    XEN_GUEST_HANDLE_PARAM(void) arg)
+{
+    struct xen_hvm_altp2m_op a;
+    struct domain *d = NULL;
+    int rc = 0;
+    uint64_t mode;
+
+    if ( !altp2m_supported() )
+        return -EOPNOTSUPP;
+
+    if ( copy_from_guest(&a, arg, 1) )
+        return -EFAULT;
+
+    if ( a.pad1 || a.pad2 ||
+         (a.version != HVMOP_ALTP2M_INTERFACE_VERSION) )
+        return -EINVAL;
+
+    switch ( a.cmd )
+    {
+    case HVMOP_altp2m_get_domain_state:
+    case HVMOP_altp2m_set_domain_state:
+    case HVMOP_altp2m_vcpu_enable_notify:
+    case HVMOP_altp2m_vcpu_disable_notify:
+    case HVMOP_altp2m_create_p2m:
+    case HVMOP_altp2m_destroy_p2m:
+    case HVMOP_altp2m_switch_p2m:
+    case HVMOP_altp2m_set_suppress_ve:
+    case HVMOP_altp2m_set_suppress_ve_multi:
+    case HVMOP_altp2m_get_suppress_ve:
+    case HVMOP_altp2m_set_mem_access:
+    case HVMOP_altp2m_set_mem_access_multi:
+    case HVMOP_altp2m_get_mem_access:
+    case HVMOP_altp2m_change_gfn:
+    case HVMOP_altp2m_get_p2m_idx:
+    case HVMOP_altp2m_set_visibility:
+        break;
+
+    default:
+        return -EOPNOTSUPP;
+    }
+
+    d = rcu_lock_domain_by_any_id(a.domain);
+
+    if ( d == NULL )
+        return -ESRCH;
+
+    if ( !is_hvm_domain(d) )
+    {
+        rc = -EOPNOTSUPP;
+        goto out;
+    }
+
+    if ( (a.cmd != HVMOP_altp2m_get_domain_state) &&
+         (a.cmd != HVMOP_altp2m_set_domain_state) &&
+         !d->altp2m_active )
+    {
+        rc = -EOPNOTSUPP;
+        goto out;
+    }
+
+    mode = d->arch.hvm.params[HVM_PARAM_ALTP2M];
+
+    if ( XEN_ALTP2M_disabled == mode )
+    {
+        rc = -EINVAL;
+        goto out;
+    }
+
+    if ( d->nr_altp2m == 0 )
+    {
+        rc = -EOPNOTSUPP;
+        goto out;
+    }
+
+    if ( (rc = xsm_hvm_altp2mhvm_op(XSM_OTHER, d, mode, a.cmd)) )
+        goto out;
+
+    switch ( a.cmd )
+    {
+    case HVMOP_altp2m_get_domain_state:
+        a.u.domain_state.state = altp2m_active(d);
+        rc = __copy_to_guest(arg, &a, 1) ? -EFAULT : 0;
+        break;
+
+    case HVMOP_altp2m_set_domain_state:
+    {
+        struct vcpu *v;
+        bool ostate;
+
+        if ( nestedhvm_enabled(d) )
+        {
+            rc = -EINVAL;
+            break;
+        }
+
+        rc = domain_pause_except_self(d);
+        if ( rc )
+            break;
+
+        ostate = d->altp2m_active;
+        d->altp2m_active = !!a.u.domain_state.state;
+
+        /* If the alternate p2m state has changed, handle appropriately */
+        if ( d->altp2m_active != ostate &&
+             (ostate || !(rc = altp2m_init_by_id(d, 0))) )
+        {
+            for_each_vcpu( d, v )
+            {
+                if ( !ostate )
+                    altp2m_vcpu_initialise(v);
+                else
+                    altp2m_vcpu_destroy(v);
+            }
+
+            if ( ostate )
+                altp2m_flush(d);
+        }
+        else if ( rc )
+            d->altp2m_active = false;
+
+        domain_unpause_except_self(d);
+        break;
+    }
+
+    case HVMOP_altp2m_vcpu_enable_notify:
+    {
+        struct vcpu *v;
+
+        if ( a.u.enable_notify.pad ||
+             a.u.enable_notify.vcpu_id >= d->max_vcpus )
+        {
+            rc = -EINVAL;
+            break;
+        }
+
+        if ( !cpu_has_vmx_virt_exceptions )
+        {
+            rc = -EOPNOTSUPP;
+            break;
+        }
+
+        v = d->vcpu[a.u.enable_notify.vcpu_id];
+
+        rc = altp2m_vcpu_enable_ve(v, _gfn(a.u.enable_notify.gfn));
+        break;
+    }
+
+    case HVMOP_altp2m_vcpu_disable_notify:
+    {
+        struct vcpu *v;
+
+        if ( a.u.disable_notify.vcpu_id >= d->max_vcpus )
+        {
+            rc = -EINVAL;
+            break;
+        }
+
+        if ( !cpu_has_vmx_virt_exceptions )
+        {
+            rc = -EOPNOTSUPP;
+            break;
+        }
+
+        v = d->vcpu[a.u.enable_notify.vcpu_id];
+
+        altp2m_vcpu_disable_ve(v);
+        break;
+    }
+
+    case HVMOP_altp2m_create_p2m:
+        rc = altp2m_init_next_available(d, &a.u.view.view,
+                                        a.u.view.hvmmem_default_access);
+        if ( !rc )
+            rc = __copy_to_guest(arg, &a, 1) ? -EFAULT : 0;
+        break;
+
+    case HVMOP_altp2m_destroy_p2m:
+        rc = altp2m_destroy_by_id(d, a.u.view.view);
+        break;
+
+    case HVMOP_altp2m_switch_p2m:
+        rc = altp2m_switch_domain_altp2m_by_id(d, a.u.view.view);
+        break;
+
+    case HVMOP_altp2m_set_suppress_ve:
+        if ( a.u.suppress_ve.pad1 || a.u.suppress_ve.pad2 )
+            rc = -EINVAL;
+        else
+        {
+            gfn_t gfn = _gfn(a.u.suppress_ve.gfn);
+            unsigned int altp2m_idx = a.u.suppress_ve.view;
+            bool suppress_ve = a.u.suppress_ve.suppress_ve;
+
+            rc = p2m_set_suppress_ve(d, gfn, suppress_ve, altp2m_idx);
+        }
+        break;
+
+    case HVMOP_altp2m_set_suppress_ve_multi:
+    {
+        uint64_t max_phys_addr = (1UL << d->arch.cpuid->extd.maxphysaddr) - 1;
+
+        a.u.suppress_ve_multi.last_gfn = min(a.u.suppress_ve_multi.last_gfn,
+                                             max_phys_addr);
+
+        if ( a.u.suppress_ve_multi.pad1 ||
+             a.u.suppress_ve_multi.first_gfn > a.u.suppress_ve_multi.last_gfn )
+            rc = -EINVAL;
+        else
+        {
+            rc = p2m_set_suppress_ve_multi(d, &a.u.suppress_ve_multi);
+            if ( (!rc || rc == -ERESTART) && __copy_to_guest(arg, &a, 1) )
+                rc = -EFAULT;
+        }
+        break;
+    }
+
+    case HVMOP_altp2m_get_suppress_ve:
+        if ( a.u.suppress_ve.pad1 || a.u.suppress_ve.pad2 )
+            rc = -EINVAL;
+        else
+        {
+            gfn_t gfn = _gfn(a.u.suppress_ve.gfn);
+            unsigned int altp2m_idx = a.u.suppress_ve.view;
+            bool suppress_ve;
+
+            rc = p2m_get_suppress_ve(d, gfn, &suppress_ve, altp2m_idx);
+            if ( !rc )
+            {
+                a.u.suppress_ve.suppress_ve = suppress_ve;
+                rc = __copy_to_guest(arg, &a, 1) ? -EFAULT : 0;
+            }
+        }
+        break;
+
+    case HVMOP_altp2m_set_mem_access:
+        if ( !vm_event_is_enabled(current) )
+        {
+            rc = -EOPNOTSUPP;
+            break;
+        }
+
+        if ( a.u.mem_access.pad )
+            rc = -EINVAL;
+        else
+            rc = p2m_set_mem_access(d, _gfn(a.u.mem_access.gfn), 1, 0, 0,
+                                    a.u.mem_access.access,
+                                    a.u.mem_access.view);
+        break;
+
+    case HVMOP_altp2m_set_mem_access_multi:
+        if ( !vm_event_is_enabled(current) )
+        {
+            rc = -EOPNOTSUPP;
+            break;
+        }
+
+        if ( a.u.set_mem_access_multi.pad ||
+             a.u.set_mem_access_multi.opaque > a.u.set_mem_access_multi.nr )
+        {
+            rc = -EINVAL;
+            break;
+        }
+
+        /*
+         * Unlike XENMEM_access_op_set_access_multi, we don't need any bits of
+         * the 'continuation' counter to be zero (to stash a command in).
+         * However, 0x40 is a good 'stride' to make sure that we make
+         * a reasonable amount of forward progress before yielding,
+         * so use a mask of 0x3F here.
+         */
+        rc = p2m_set_mem_access_multi(d, a.u.set_mem_access_multi.pfn_list,
+                                      a.u.set_mem_access_multi.access_list,
+                                      a.u.set_mem_access_multi.nr,
+                                      a.u.set_mem_access_multi.opaque,
+                                      0x3F,
+                                      a.u.set_mem_access_multi.view);
+        if ( rc > 0 )
+        {
+            a.u.set_mem_access_multi.opaque = rc;
+            rc = -ERESTART;
+            if ( __copy_field_to_guest(guest_handle_cast(arg, xen_hvm_altp2m_op_t),
+                                       &a, u.set_mem_access_multi.opaque) )
+                rc = -EFAULT;
+        }
+        break;
+
+    case HVMOP_altp2m_get_mem_access:
+        if ( !vm_event_is_enabled(current) )
+        {
+            rc = -EOPNOTSUPP;
+            break;
+        }
+
+        if ( a.u.mem_access.pad )
+            rc = -EINVAL;
+        else
+        {
+            xenmem_access_t access;
+
+            rc = p2m_get_mem_access(d, _gfn(a.u.mem_access.gfn), &access,
+                                    a.u.mem_access.view);
+            if ( !rc )
+            {
+                a.u.mem_access.access = access;
+                rc = __copy_to_guest(arg, &a, 1) ? -EFAULT : 0;
+            }
+        }
+        break;
+
+    case HVMOP_altp2m_change_gfn:
+        if ( a.u.change_gfn.pad1 || a.u.change_gfn.pad2 )
+            rc = -EINVAL;
+        else
+            rc = altp2m_change_gfn(d, a.u.change_gfn.view,
+                                   _gfn(a.u.change_gfn.old_gfn),
+                                   _gfn(a.u.change_gfn.new_gfn));
+        break;
+
+    case HVMOP_altp2m_get_p2m_idx:
+    {
+        struct vcpu *v;
+
+        if ( !altp2m_active(d) )
+        {
+            rc = -EOPNOTSUPP;
+            break;
+        }
+
+        if ( (v = domain_vcpu(d, a.u.get_vcpu_p2m_idx.vcpu_id)) == NULL )
+        {
+            rc = -EINVAL;
+            break;
+        }
+
+        a.u.get_vcpu_p2m_idx.altp2m_idx = altp2m_vcpu_idx(v);
+        rc = __copy_to_guest(arg, &a, 1) ? -EFAULT : 0;
+        break;
+    }
+
+    case HVMOP_altp2m_set_visibility:
+    {
+        unsigned int idx = a.u.set_visibility.altp2m_idx;
+
+        if ( a.u.set_visibility.pad )
+            rc = -EINVAL;
+        else if ( !altp2m_active(d) )
+            rc = -EOPNOTSUPP;
+        else
+            rc = altp2m_set_view_visibility(d, idx, a.u.set_visibility.visible);
+        break;
+    }
+
+    default:
+        ASSERT_UNREACHABLE();
+        rc = -EOPNOTSUPP;
+        break;
+    }
+
+ out:
+    rcu_unlock_domain(d);
+
+    return rc;
+}
+#else
+int do_altp2m_op(
+    XEN_GUEST_HANDLE_PARAM(void) arg)
+{
+    return -EOPNOTSUPP;
+}
+#endif
 
 /*
  * Local variables:
diff --git a/xen/include/xen/altp2m.h b/xen/include/xen/altp2m.h
index b3b21124dd7e..be627152668a 100644
--- a/xen/include/xen/altp2m.h
+++ b/xen/include/xen/altp2m.h
@@ -2,8 +2,12 @@
 #ifndef __XEN_ALTP2M_H__
 #define __XEN_ALTP2M_H__
 
+#include <xen/errno.h>
+#include <xen/param.h>
 #include <xen/sched.h>
 
+#include <public/hvm/hvm_op.h>
+
 #ifdef CONFIG_ALTP2M
 
 /* Alternate p2m HVM on/off per domain */
@@ -12,6 +16,8 @@ static inline bool altp2m_active(const struct domain *d)
     return d->altp2m_active;
 }
 
+int do_altp2m_op(XEN_GUEST_HANDLE_PARAM(void) arg);
+
 #else /* CONFIG_ALTP2M */
 
 static inline bool altp2m_active(const struct domain *d)
@@ -19,6 +25,11 @@ static inline bool altp2m_active(const struct domain *d)
     return false;
 }
 
+static inline int do_altp2m_op(XEN_GUEST_HANDLE_PARAM(void) arg)
+{
+    return -EOPNOTSUPP;
+}
+
 #endif /* CONFIG_ALTP2M */
 
 #endif /* __XEN_ALTP2M_H__ */
-- 
2.34.1



From xen-devel-bounces@lists.xenproject.org Mon Apr 20 23:01:58 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 20 Apr 2026 23:01:58 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1288222.1568510 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wExce-0007b4-Jl; Mon, 20 Apr 2026 23:01:44 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1288222.1568510; Mon, 20 Apr 2026 23: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 1wExce-0007ax-HE; Mon, 20 Apr 2026 23:01:44 +0000
Received: by outflank-mailman (input) for mailman id 1288222;
 Mon, 20 Apr 2026 23:01:43 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <jgg@ziepe.ca>) id 1wExcc-0007ar-PM
 for xen-devel@lists.xenproject.org; Mon, 20 Apr 2026 23:01:43 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wExcb-00CNNH-JO
 for xen-devel@lists.xenproject.org; Tue, 21 Apr 2026 01:01:41 +0200
Received: from [10.42.69.7] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <jgg@ziepe.ca>)
 id 69e6b04a-2eae-0a2a0a5409dd-0a2a45079480-14
 for <xen-devel@lists.xenproject.org>; Tue, 21 Apr 2026 01:01:41 +0200
Received: from [209.85.161.46] (helo=mail-oo1-f46.google.com)
 by tlsNG-ef75cf.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.1)
 (envelope-from <jgg@ziepe.ca>)
 id 69e6b054-229c-0a2a45070019-d155a12eb56e-3
 for <xen-devel@lists.xenproject.org>; Tue, 21 Apr 2026 01:01:41 +0200
Received: by mail-oo1-f46.google.com with SMTP id
 006d021491bc7-6949192b843so350829eaf.1
 for <xen-devel@lists.xenproject.org>; Mon, 20 Apr 2026 16:01:40 -0700 (PDT)
Received: from ziepe.ca ([130.41.10.202]) by smtp.gmail.com with ESMTPSA id
 006d021491bc7-69493183021sm916652eaf.13.2026.04.20.16.01.38
 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
 Mon, 20 Apr 2026 16:01:38 -0700 (PDT)
Received: from jgg by wakko with local (Exim 4.97)
 (envelope-from <jgg@ziepe.ca>) id 1wExcX-0000000F9El-2c2Z;
 Mon, 20 Apr 2026 20:01:37 -0300
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@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=ziepe.ca header.i="@ziepe.ca" header.h="In-Reply-To:Content-Disposition:MIME-Version:References:Message-ID:Subject:Cc:To:From:Date"
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=ziepe.ca; s=google; t=1776726099; x=1777330899; darn=lists.xenproject.org;
        h=in-reply-to:content-disposition:mime-version:references:message-id
         :subject:cc:to:from:date:from:to:cc:subject:date:message-id:reply-to;
        bh=PW4xQG7nqF+lf+D3IisD78kFapb+PoH04igJOs6rmhM=;
        b=T/YUpw94PDt0+KdHeC2H9DWpCE5pIFPyjuyxa9fOmBKQ0Nd8qHzSlKXvXmc9y4CF3z
         Nod+6Phu90L+lCyOYESupAfqWSbl5CXxzVMNFKduslcECGV8v3yDGnEndKr6O0xyzmui
         AR+IW+xoVITsyHabAR4KsQWdXsWTIi68mcnLDjWf6MoYOvX3IS0TnIEHHvx8VwsEri/D
         4AsnvLiks7qtTllmAiqzQq5ztx7KJGUL+IyjL5Fsp7GFqyHmLL/1Jp2DjLArX/lDqG/i
         ALdwbCue+m/fjlpysQMzDS/F6E483EwDO70N3NGbow+ksjxnX/iMl8NVHFshbNraRVwZ
         UPjw==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20251104; t=1776726099; x=1777330899;
        h=in-reply-to:content-disposition: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;
        bh=PW4xQG7nqF+lf+D3IisD78kFapb+PoH04igJOs6rmhM=;
        b=DkOI4rVxjf3Tm2nigxXIl9UjPraNkzZgsJxcVQMvXLdC68cH24ER890hGO57vHPcNQ
         PPXp5XaxE/tYbjdLOMm94rsaGx+tKtzZGImmMkdHQHAVwgUaYv4vcwcMhRabl0T4dnPU
         4C7/5sGxbBl6sXHoiVSVe/BegmhUu/Rz8ogpfLZ6TxcgIpEhsU00gnz2WRrZ3EW2u8Ux
         mUEs+ZRfN6xVDD3IBd3k4zy9F0PcJOFxH4U7G+23ac3ff66nIvshY6hjlkZ6Qo7IyM4x
         ntkqwmYLc9p6WqH/vGCHPIHlfoFDwqEqTIRlRi09TTLElYEk6qIrSI5pWBPVC+OyC3+V
         n5rg==
X-Forwarded-Encrypted: i=1; AFNElJ/jNpAQ3LEGhSEPQaQsNYwol70vPwU/YHuvOEiDnnTmiA6HRC75JLwOeLrg0lasKlPCmoS0aiJRse0=@lists.xenproject.org
X-Gm-Message-State: AOJu0YwzF+zdXcpA8T/RbP8KpOeWWxoXxnyDkqDNAKpATvpXVefCo6+V
	pcAKH4hgc6n19jJZ4Xarw5AfDsrawrlzfqz2VYJ54bh66KWwQD5HfwFV+H7aW+0ODHo=
X-Gm-Gg: AeBDievGBYvus6vmZ04abTZ2SbDtEukBI1wPOuyHX4X2cfmwQJXPvCRLouXvEbMia2l
	WcsAp69PecHg8xqYK/Hb9a+NLSlnnmYE12pRSdZTuy22ERtJd5UztRZgVxZ4tWzKR1Dq6Xt/NOP
	1b6vVs9B0Gq3jpJWnws/gCaA3l3cogBnrgkAJrpwCPJYKt9iSfKoi45qP7ujYEfF7EZPPmtEDDp
	0uLYJis8lp5XG9pJu5yAORMylYca/oI9FshLgFL5lElqcxL8rA+El8uc4q+S8TlhAFfg0mBHUDm
	WRc6uVl9EotjK+lk25FNH2LBvFFdGFoc9NAqW2MAYzef985xQ3gwlyrkHUz0UkcqaiKE0JoKOPE
	hTDREMu30HoZIKMzl8/peYUMZXYNpqznuPF76VHfG5wn2HpTFlIB76EV+6cL1xgdWLEnm9D+cD8
	egEuZlCipu
X-Received: by 2002:a05:6820:1508:b0:694:9840:843a with SMTP id 006d021491bc7-69498408649mr135366eaf.7.1776726099292;
        Mon, 20 Apr 2026 16:01:39 -0700 (PDT)
Date: Mon, 20 Apr 2026 20:01:37 -0300
From: Jason Gunthorpe <jgg@ziepe.ca>
To: "Peng Fan (OSS)" <peng.fan@oss.nxp.com>
Cc: Juergen Gross <jgross@suse.com>,
	Stefano Stabellini <sstabellini@kernel.org>,
	Oleksandr Tyshchenko <oleksandr_tyshchenko@epam.com>,
	xen-devel@lists.xenproject.org, iommu@lists.linux.dev,
	linux-kernel@vger.kernel.org, Peng Fan <peng.fan@nxp.com>
Subject: Re: [PATCH RFC] xen/swiotlb: avoid arch_sync_dma_* on per-device DMA
 memory
Message-ID: <20260420230137.GQ2577880@ziepe.ca>
References: <20260415-xen-swiotlb-v1-1-de24eda3c0fd@nxp.com>
MIME-Version: 1.0
Content-Type: text/plain; charset=us-ascii
Content-Disposition: inline
In-Reply-To: <20260415-xen-swiotlb-v1-1-de24eda3c0fd@nxp.com>
X-purgate-ID: tlsNG-ef75cf/1776726101-AFB78C48-24534E36/0/0
X-purgate-type: clean
X-purgate-size: 2212

On Wed, Apr 15, 2026 at 11:08:36PM +0800, Peng Fan (OSS) wrote:
> From: Peng Fan <peng.fan@nxp.com>
> 
> On ARM64, arch_sync_dma_for_{cpu,device}() assumes that the
> physical address passed in refers to normal RAM that is part of the
> kernel linear(direct) mapping, as it unconditionally derives a CPU
> virtual address via phys_to_virt().
> 
> With Xen swiotlb, devices may use per-device coherent DMA memory,
> such as reserved-memory regions described by 'shared-dma-pool',
> which are assigned to dev->dma_mem. These regions may be marked
> no-map in DT and therefore are not part of the kernel linear map.
> In such cases, pfn_valid() still returns true, but phys_to_virt()
> is not valid and cache maintenance via arch_sync_dma_* will fault.
> 
> Prevent this by excluding devices with a private DMA memory pool
> (dev->dma_mem) from the arch_sync_dma_* fast path, and always
> fall back to xen_dma_sync_* for those devices to avoid invalid
> phys_to_virt() conversions for no-map DMA memory while preserving the
> existing fast path for normal, linear-mapped RAM.

I think this is the same sort of weirdness the other two CC threads are
dealing with.. We already have two different flags indicating the
cache flush should be skipped, it would make more sense to have the
swiotlb mangle the flags, just like for cc.

https://lore.kernel.org/r/20260420061415.3650870-1-aneesh.kumar@kernel.org

Then you know that the swiotlb was used and it should flow down to
here.

>   * physical address to use is returned.
> @@ -262,7 +267,8 @@ static dma_addr_t xen_swiotlb_map_phys(struct device *dev, phys_addr_t phys,
>  
>  done:
>  	if (!dev_is_dma_coherent(dev) && !(attrs & DMA_ATTR_SKIP_CPU_SYNC)) {
> -		if (pfn_valid(PFN_DOWN(dma_to_phys(dev, dev_addr)))) {
> +		if (pfn_valid(PFN_DOWN(dma_to_phys(dev, dev_addr))) &&
> +		    !dev_has_private_dma_pool(dev)) {

Also this pfn_valid() is totally bogus. Unless DMA_ATTR_MMIO the phys
must have a struct page, be pfn_valid, etc.

This is why you are getting into trouble here, beacuse swiotlb created
a non-struct page address and passed it to lower layers without
setting something like DMA_ATTR_MMIO..

Jason


From xen-devel-bounces@lists.xenproject.org Mon Apr 20 23:34:30 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 20 Apr 2026 23:34:30 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1288230.1568520 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wEy8F-0003WC-W0; Mon, 20 Apr 2026 23:34:23 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1288230.1568520; Mon, 20 Apr 2026 23: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 1wEy8F-0003VV-Su; Mon, 20 Apr 2026 23:34:23 +0000
Received: by outflank-mailman (input) for mailman id 1288230;
 Mon, 20 Apr 2026 23:34:22 +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 1wEy8D-0003Tl-Pc
 for xen-devel@lists.xenproject.org; Mon, 20 Apr 2026 23:34:22 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wEy8A-009eSF-DL
 for xen-devel@lists.xenproject.org; Tue, 21 Apr 2026 01:34:20 +0200
Received: from [10.42.69.10] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <Jason.Andryuk@amd.com>)
 id 69e6b784-bab6-0a2a0a5309dd-0a2a450aa3dc-42
 for <xen-devel@lists.xenproject.org>; Tue, 21 Apr 2026 01:34:19 +0200
Received: from [40.93.194.57]
 (helo=SN4PR0501CU005.outbound.protection.outlook.com)
 by tlsNG-4011c0.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.1)
 (envelope-from <Jason.Andryuk@amd.com>)
 id 69e6b7f9-56b3-0a2a450a0019-285dc2399429-3
 for <xen-devel@lists.xenproject.org>; Tue, 21 Apr 2026 01:34:19 +0200
Received: from BN0PR04CA0041.namprd04.prod.outlook.com (2603:10b6:408:e8::16)
 by IA0PR12MB7602.namprd12.prod.outlook.com (2603:10b6:208:43a::16)
 with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9846.15; Mon, 20 Apr
 2026 23:34:14 +0000
Received: from BN3PEPF0000B36E.namprd21.prod.outlook.com
 (2603:10b6:408:e8:cafe::5b) by BN0PR04CA0041.outlook.office365.com
 (2603:10b6:408:e8::16) with Microsoft SMTP Server (version=TLS1_3,
 cipher=TLS_AES_256_GCM_SHA384) id 15.20.9791.48 via Frontend Transport; Mon,
 20 Apr 2026 23:34:14 +0000
Received: from satlexmb08.amd.com (165.204.84.17) by
 BN3PEPF0000B36E.mail.protection.outlook.com (10.167.243.165) with Microsoft
 SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id
 15.20.9870.4 via Frontend Transport; Mon, 20 Apr 2026 23:34:14 +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.17; Mon, 20 Apr
 2026 18:34:14 -0500
Received: from [172.28.123.27] (10.180.168.240) by satlexmb08.amd.com
 (10.181.42.217) with Microsoft SMTP Server id 15.2.2562.17 via Frontend
 Transport; Mon, 20 Apr 2026 18:34:14 -0500
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@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=n7FCbnkZ5PKewzkupj8L9PTAJYgF2AGiqlkzQvJ9jD92cZhqfGY+b7ccav8I7wlltWtcdl0Iaj62aGlDG3xlGaXpk0XwoPOQWGQ/MwGJQ5k9voUBosqYM48Szxz6plRNzeb4hW4b0m3u4TpF8vz6/e93uTdk3W3un3KNI8/R7YcdSzzVCnKWKazR2hcOUaT4T+/ezLDHlwcmJcfrtmg7QtxN2N+deOsONaHmgXwu09Yy2kch5eD/4JbIzbDYbqMG21KnPsyLTzxRhUSPbevzBdm8X6uDaZiKxP2sD0KPKn3ieo37S+mO0dOisde0GKComNkBT5stGmUN74eHRz/c6w==
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com;
 s=arcselector10001;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1;
 bh=DAXkQR3X09OxLoIp02nG51ZIBJyVPATqCdfSQ3x3tuQ=;
 b=c41apt8/y430/KG6+1BX8x1kwKTbfexwaTbr6nEmMYqz7yrVy/TJPwZvgbw6GLjPM5eIfJwfQasuv5JLht+2Nu0qk3HMBW7t69vHhEOol1BzNiFCbaO+6D0VmyvutnwZzV/ItdR1uXZnIO2/wLstiiPCsdkFg+nb9Qphhfs8bvFC9vti0pHiwpmuaW0rqLcxHUM6idpi7OsUT7c01Lj8qu3S3RyqgZCkV2hI3FXoCudQtu2ceDyPaTbHQIyT19aC/HHsl0NwnvM/Xfu0CYANR5x1r9c2wepJmfyrCk24jiUOhNt9aMG0ofbmXCgyhRnMSTO7oHeEC99BZt6isBGRBA==
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=DAXkQR3X09OxLoIp02nG51ZIBJyVPATqCdfSQ3x3tuQ=;
 b=TihURjgqUDPQzlkCTb7qij+MaqTT9SwUUWGo3y0sA1cw+bvrbHEASiqvAcoGQMeOpwBIniVWTIeybCknMzi583U5PIHp80T4grnLiEYDqpqlfhdjI8G6w7+bDQ7xUeYMVnWVFClAyDu696i87FaBvUz8sfX4wlptw+oBt0eKPtM=
X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 165.204.84.17)
 smtp.mailfrom=amd.com; dkim=none (message not signed)
 header.d=none;dmarc=pass action=none header.from=amd.com;
Received-SPF: Pass (protection.outlook.com: domain of amd.com designates
 165.204.84.17 as permitted sender) receiver=protection.outlook.com;
 client-ip=165.204.84.17; helo=satlexmb08.amd.com; pr=C
Message-ID: <cd0f2aec-bac0-493a-98c3-7da0991d6fb1@amd.com>
Date: Mon, 20 Apr 2026 18:37:49 -0400
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH 4/8] tools/xenstored: add depth information to watches
To: Juergen Gross <jgross@suse.com>, <xen-devel@lists.xenproject.org>
CC: Julien Grall <julien@xen.org>, Anthony PERARD <anthony.perard@vates.tech>
References: <20260313074751.2904215-1-jgross@suse.com>
 <20260313074751.2904215-5-jgross@suse.com>
Content-Language: en-US
From: Jason Andryuk <jason.andryuk@amd.com>
In-Reply-To: <20260313074751.2904215-5-jgross@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: BN3PEPF0000B36E:EE_|IA0PR12MB7602:EE_
X-MS-Office365-Filtering-Correlation-Id: e190bafb-565d-43e3-ea88-08de9f35555b
X-MS-Exchange-SenderADCheck: 1
X-MS-Exchange-AntiSpam-Relay: 0
X-Microsoft-Antispam:
	BCL:0;ARA:13230040|1800799024|82310400026|376014|36860700016|18002099003|22082099003|56012099003;
X-Microsoft-Antispam-Message-Info:
	8tOgjStQjO5mFySfvIke0Dk2Tb10wrj9uJapuRhvz+DNaza98vxpdB106fEPakv/4rQsqXC8w29KTD+n88XdrJFWM35mYDB/3trlCNROM8yaRDenVx/f8mma1F9Ft4VPiMwqhmobmH4IPRKZAUPd3/3n0C4SB+j/RFjf47vn8wOKePHlxyqd1n4rdRtAsKu2dIjKwjAN27ycL4KOYzvMLKwAvkzPw7bFy3/FY8GYFlF3LvKdv4Xt5J5G8JZXexdxQhtQk/CI7ZXzReRQE097rJ65WFrwnRdtjWUSwv8LYSE6feIkxDzvkirUhBABLF4srliGVLDrXPn+njNlHWSYcssaIAP85r8J73qKhOe018OqJ5UcZG4P4baxxlLoOO4dPPSQcpHVKITzcKE723jFEXTHFBYH/PvlNhKJZQ0jReXn2g/7xhE0K6DVy4e5jNAl8njs8X1aocFBlGr5vwTBPBD9+Ryqwf7ISwaaES4gVJj4FKv6u7Kv2BGkhDaDPreOKlxv6hMZdXpPAcA4VmsYYjM1v+PEbM6Bu103pO3gfmrohjLu1iLejuEoBywd52YiSfKqFaKXTcm6fLk0/auc6+R4dfmxmKrrrF6pgssIGffibnUCvtANpj9KcYHwO8AkdcL2JVeVAYCe1teK5nJcGNuEY3hz8Ccc2aMzuUZH7m1knPChMLRU/WYNXATvDlCPm6ymjS2nFYpMAcOYo4EE5xCQRJbzQB2tFdpdQQ1P72MxIeEFxrgQtOqEsy6x92XmVYoVPiTUx+ezIq89EHITXA==
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)(36860700016)(18002099003)(22082099003)(56012099003);DIR:OUT;SFP:1101;
X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1
X-MS-Exchange-AntiSpam-MessageData-0:
	laatSRY+TAXMyV9TLi+M2Sa9bL6plBks2Net4+BGrCpQdYxM3A9kUOe21rS/oMWk0tMSp0HTbJZtUYOOedsnhQlTnV6kpN3vye6G4/U3vfEkA1y+qy1RVLnJGNoDMSBhPVDATqYI5n83ZK85yf5Fg/wzJYHlaRt/aZ/ioK13xV0Mn7cb7wpPu50g9HhCDU90v9uAWRAAfzyjI7/hGMnqncz0peixZ7WEO54/zG/tlFt0xS6n2V43yg+qn6sGZracn5me2iO1PZggLUDNDUu6/e4mNr0dNr4yvXqhv2DS1jfIDBDSoWB9NxlsMJiK0rleYZup66vMLrI9ssB/8EQLOVW/rkAcfgOVSAKstLWVesTTXaNCrm/oCpgBaM6q+0syioX5H8KpkgJ0VEEyw5zFUHoRbSDd26GJJSdczfczilr9NiJdKAw+hAxj8T7IIMKC
X-OriginatorOrg: amd.com
X-MS-Exchange-CrossTenant-OriginalArrivalTime: 20 Apr 2026 23:34:14.6946
 (UTC)
X-MS-Exchange-CrossTenant-Network-Message-Id: e190bafb-565d-43e3-ea88-08de9f35555b
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:
	BN3PEPF0000B36E.namprd21.prod.outlook.com
X-MS-Exchange-CrossTenant-AuthAs: Anonymous
X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem
X-MS-Exchange-Transport-CrossTenantHeadersStamped: IA0PR12MB7602
X-purgate-ID: tlsNG-4011c0/1776728059-4596E8B7-5982E9C8/0/0
X-purgate-type: clean
X-purgate-size: 299

On 2026-03-13 03:47, Juergen Gross wrote:
> Add the depth for matching subdirectories of a watch to the watch
> handling. A depth value of -1 is used for the current model of no
> limit.
> 
> Signed-off-by: Juergen Gross <jgross@suse.com>

Reviewed-by: Jason Andryuk <jason.andryuk@amd.com>


From xen-devel-bounces@lists.xenproject.org Mon Apr 20 23:35:32 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 20 Apr 2026 23:35:32 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1288240.1568529 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wEy9L-0004Ml-8o; Mon, 20 Apr 2026 23:35:31 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1288240.1568529; Mon, 20 Apr 2026 23:35: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 1wEy9L-0004Me-60; Mon, 20 Apr 2026 23:35:31 +0000
Received: by outflank-mailman (input) for mailman id 1288240;
 Mon, 20 Apr 2026 23:35:29 +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 1wEy9J-0004MU-Ak
 for xen-devel@lists.xenproject.org; Mon, 20 Apr 2026 23:35:29 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wEy9I-001b2f-O2
 for xen-devel@lists.xenproject.org; Tue, 21 Apr 2026 01:35:28 +0200
Received: from [10.42.69.11] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <Jason.Andryuk@amd.com>)
 id 69e6b7ee-2eae-0a2a0a5409dd-0a2a450b921e-40
 for <xen-devel@lists.xenproject.org>; Tue, 21 Apr 2026 01:35:28 +0200
Received: from [52.101.62.24]
 (helo=DM5PR21CU001.outbound.protection.outlook.com)
 by tlsNG-42698a.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.1)
 (envelope-from <Jason.Andryuk@amd.com>)
 id 69e6b83e-212f-0a2a450b0019-34653e18899b-4
 for <xen-devel@lists.xenproject.org>; Tue, 21 Apr 2026 01:35:28 +0200
Received: from CH0PR03CA0418.namprd03.prod.outlook.com (2603:10b6:610:11b::19)
 by MN2PR12MB4144.namprd12.prod.outlook.com (2603:10b6:208:15f::16)
 with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9846.15; Mon, 20 Apr
 2026 23:35:23 +0000
Received: from CH2PEPF0000014A.namprd02.prod.outlook.com
 (2603:10b6:610:11b:cafe::ec) by CH0PR03CA0418.outlook.office365.com
 (2603:10b6:610:11b::19) with Microsoft SMTP Server (version=TLS1_3,
 cipher=TLS_AES_256_GCM_SHA384) id 15.20.9791.48 via Frontend Transport; Mon,
 20 Apr 2026 23:35:23 +0000
Received: from satlexmb07.amd.com (165.204.84.17) by
 CH2PEPF0000014A.mail.protection.outlook.com (10.167.244.107) with Microsoft
 SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id
 15.20.9791.48 via Frontend Transport; Mon, 20 Apr 2026 23:35:23 +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.17; Mon, 20 Apr
 2026 18:35:23 -0500
Received: from [172.28.123.27] (10.180.168.240) by satlexmb08.amd.com
 (10.181.42.217) with Microsoft SMTP Server id 15.2.2562.17 via Frontend
 Transport; Mon, 20 Apr 2026 18:35:22 -0500
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@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=FGz3NmtQ86pF26TQcW6Wc9l9vq7vrPBKQVhGNx/STHdk+yjTOvz8kb9ffrzJLdrrVgDXwcGJVYqy0iccGO5Kl+D+U0ho34MaX/T5lxTcjyUXZ14cLDUVWJg/h+B90SNJNl+UG3YllKAOAoq0lOqP2TCRhR6aRQLTIlYyf2hmhAfzglzNRfez0ALEYx4CbDioIB7wQV64oDnW1oAvHV/xHV8fLabN9s7DVA7j26V2FeBQnpJis8WY1HDFUVGdt8awCOq3/UsGnbF2rdhAYIoeFFopLPtYu0iFbJC2p5djy+VGWFxzJsqURrINa0y8jBRecXqMGyaP+e3vll5M1Ng86A==
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com;
 s=arcselector10001;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1;
 bh=nCX9S++GQCGjzqucD1iuv4GnP7mPn0tiT+ZfLqYlnS4=;
 b=ujoF4tafBT5SzQ9FDdiHpbW3ml3p6gVn4z2mGsfmP9+2bdZCxpwpqgNUew1FeQfi3aMC4wraWu+WhXrFjyJZF8uSY2hHeXGu9OjR3p+mx6d4Zxo0PxYZMA9Aj1KPF9iCUVcg+cifJ/vzPlgGfzEXw0dZkQ+mzlVAGvwFL3YkPk3hHDVfHF8GKXlDENrPj7CvWNHoV75kw/a2SFMSAhsMJ+KYBgj7p9P6l9ZuFRRvyoVZNT79JSbNcFuLIE/2Edz2a2l6QMwFVigj30ErAAp4m5s/tsXDWN/bDxqLyEA+LvcIy7SXaab+1kx4y8S3snnArD6NyXMhF/F6ioLb3TVJmg==
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=nCX9S++GQCGjzqucD1iuv4GnP7mPn0tiT+ZfLqYlnS4=;
 b=VfJSOQuIYDeA4SOHUvNsgml+06t50lvkETBwZxsl4fTyqSQfRPkoMRalJSV59yGmTiBW7k8pKVq96h0ho/Ga0UiI1t20FVXqbPBtHACu1qR4xZ1riS3uta/8d9pVrNsdyiPTfJ6S6awjflxmYqVaOEvlN+nUBXwefq+kLKvfIRA=
X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 165.204.84.17)
 smtp.mailfrom=amd.com; dkim=none (message not signed)
 header.d=none;dmarc=pass action=none header.from=amd.com;
Received-SPF: Pass (protection.outlook.com: domain of amd.com designates
 165.204.84.17 as permitted sender) receiver=protection.outlook.com;
 client-ip=165.204.84.17; helo=satlexmb07.amd.com; pr=C
Message-ID: <60d08d55-e87d-4869-aab8-d661e1b44fa7@amd.com>
Date: Mon, 20 Apr 2026 18:38:58 -0400
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH 5/8] tools/xenstored: add depth handling to XS_WATCH
To: Juergen Gross <jgross@suse.com>, <xen-devel@lists.xenproject.org>
CC: Julien Grall <julien@xen.org>, Anthony PERARD <anthony.perard@vates.tech>
References: <20260313074751.2904215-1-jgross@suse.com>
 <20260313074751.2904215-6-jgross@suse.com>
Content-Language: en-US
From: Jason Andryuk <jason.andryuk@amd.com>
In-Reply-To: <20260313074751.2904215-6-jgross@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: CH2PEPF0000014A:EE_|MN2PR12MB4144:EE_
X-MS-Office365-Filtering-Correlation-Id: 66d86ece-b057-4009-7a06-08de9f357e76
X-MS-Exchange-SenderADCheck: 1
X-MS-Exchange-AntiSpam-Relay: 0
X-Microsoft-Antispam:
	BCL:0;ARA:13230040|82310400026|36860700016|376014|1800799024|56012099003|22082099003|18002099003;
X-Microsoft-Antispam-Message-Info:
	M63arBU16lBd8nBwCBbTuSxQoI1ZL5d5FKRIq/np3gttuDhZ/y++NwXrCDCTriWZiStBpr0f2HgnnP5w23pihPIQKifV/YzER5BRq24Zd19i/31HQiBk1VGZsmYLaG9TRbRJHSrOgQ+l/5fHqsl8HIs+Z4kUjUCUjMtvI7oSrzKUad1sT//+6qMSnYCBolZeAvBJPET79iCSOYjEQQwd19c4qaulqmcN84VLRWR1tdR76soQvdn8dllSRqpSifjEA8JZZ01oJVAQFO3ytWWrnRcEUz4T03wEVPjcqsKdxtKull+qA/TVP3uB+6hRMv47KdY9BwmFeWG7W1Ch5/zqF95QpBv/EgTdSeze3tw0SbiRasMSoV9jyJLOWWB4MyTOodCSwStVuAOgrUj46hXlPYE1NrPAYb8vhBhHuH6KxrFG+WW8prCOpN+75ETKKe2hJYcxKxROml0sWkg3RuElCJcxPMUbbFztpZLBdRmA/tVka6SdRGWfcDaVAUvzmxHzzti+pTzp1YB1kbC6Cl+0I378BQhDcZDlSdPDJKrzYBgD85Q3k5kZXq+5NcRCL/VYxrjuYk17TElLkPsKznv6vucDdFa1bnSR4Qps+no/ALp3Cc7yRwF0SXUw3BwXzxY6lPk/pkdfRU5kQ+ActLgI/+Fz9I6TgILXFHPWPF20d0I/nCWFxnWojtY5p6dxZRyMFiHBWzTAS+xL+LZxwoYxDF3UoB8NMzjUc1mF0pQTrLWCEPKTY4UpoRCF58NoyyJrxS8G5qBUsxC+5rqSsESOfA==
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)(376014)(1800799024)(56012099003)(22082099003)(18002099003);DIR:OUT;SFP:1101;
X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1
X-MS-Exchange-AntiSpam-MessageData-0:
	RNetcckmIrm+le1zLPClZ0bNwuBG+TnwtWYw3kEfnC46ZQsTtU8C8Ybv6b76I9HJZEagcdrWUfBJQMUfl6/xYMm/q0zjcb4qs4TSIduqNJd400HDEUm3Jx7C7DpbnvXs0IkksrT06vpR5t1VNwFkOkzvAVmBABT+L/1d297GS0jWslQI78BzYkJVsJhAOCLp9cIvnxaG/R7qDPi5FRBtcabyAKQIjub6GGz/g9HbY2FjuvL1mZTOgR5wXihR8CSqwVtW29MCiAFaHmcEzpePUcrtgnoMKMk0PQWGu4LCsgXHhwT8YRGU7mKkLP0/mHVWDODG0t5MjkUfg1a+eW3PbqjCOVRaCtoKhPv/yWiIvem0WskSbDyABdQ905R97BvHdZB1P6qQ5ih+qXh90iCAC0YxEjvMqlHGKgb4GtolTFeQuNybqpHNlenlctnbXWh4
X-OriginatorOrg: amd.com
X-MS-Exchange-CrossTenant-OriginalArrivalTime: 20 Apr 2026 23:35:23.6425
 (UTC)
X-MS-Exchange-CrossTenant-Network-Message-Id: 66d86ece-b057-4009-7a06-08de9f357e76
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:
	CH2PEPF0000014A.namprd02.prod.outlook.com
X-MS-Exchange-CrossTenant-AuthAs: Anonymous
X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem
X-MS-Exchange-Transport-CrossTenantHeadersStamped: MN2PR12MB4144
X-purgate-ID: tlsNG-42698a/1776728128-06573F3B-AF96DCBF/0/0
X-purgate-type: clean
X-purgate-size: 257

On 2026-03-13 03:47, Juergen Gross wrote:
> In case XENSTORE_SERVER_FEATURE_WATCHDEPTH is set, allow XS_WATCH to
> have "depth" as 3rd parameter.
> 
> Signed-off-by: Juergen Gross <jgross@suse.com>

Reviewed-by: Jason Andryuk <jason.andryuk@amd.com>


From xen-devel-bounces@lists.xenproject.org Mon Apr 20 23:45:33 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 20 Apr 2026 23:45:33 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1288250.1568539 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wEyIx-0001eC-5x; Mon, 20 Apr 2026 23:45:27 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1288250.1568539; Mon, 20 Apr 2026 23:45: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 1wEyIx-0001e5-0z; Mon, 20 Apr 2026 23:45:27 +0000
Received: by outflank-mailman (input) for mailman id 1288250;
 Mon, 20 Apr 2026 23:45:25 +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 1wEyIu-0001ch-TM
 for xen-devel@lists.xenproject.org; Mon, 20 Apr 2026 23:45:25 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wEyIt-005HaB-SG
 for xen-devel@lists.xenproject.org; Tue, 21 Apr 2026 01:45:23 +0200
Received: from [10.42.69.5] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <Jason.Andryuk@amd.com>)
 id 69e6ba6b-e002-0a2a0a5209dd-0a2a4505b21a-20
 for <xen-devel@lists.xenproject.org>; Tue, 21 Apr 2026 01:45:23 +0200
Received: from [40.93.198.4]
 (helo=CY7PR03CU001.outbound.protection.outlook.com)
 by tlsNG-c201ff.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.1)
 (envelope-from <Jason.Andryuk@amd.com>)
 id 69e6ba91-aaa8-0a2a45050019-285dc6044f9b-3
 for <xen-devel@lists.xenproject.org>; Tue, 21 Apr 2026 01:45:23 +0200
Received: from SJ0PR05CA0031.namprd05.prod.outlook.com (2603:10b6:a03:33f::6)
 by LV9PR12MB9808.namprd12.prod.outlook.com (2603:10b6:408:2e7::19)
 with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9846.15; Mon, 20 Apr
 2026 23:45:18 +0000
Received: from SJ5PEPF000001D0.namprd05.prod.outlook.com
 (2603:10b6:a03:33f:cafe::c4) by SJ0PR05CA0031.outlook.office365.com
 (2603:10b6:a03:33f::6) with Microsoft SMTP Server (version=TLS1_3,
 cipher=TLS_AES_256_GCM_SHA384) id 15.20.9791.48 via Frontend Transport; Mon,
 20 Apr 2026 23:45:18 +0000
Received: from satlexmb08.amd.com (165.204.84.17) by
 SJ5PEPF000001D0.mail.protection.outlook.com (10.167.242.52) with Microsoft
 SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id
 15.20.9791.48 via Frontend Transport; Mon, 20 Apr 2026 23:45:18 +0000
Received: from SATLEXMB04.amd.com (10.181.40.145) by satlexmb08.amd.com
 (10.181.42.217) with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.2.2562.17; Mon, 20 Apr
 2026 18:45:18 -0500
Received: from satlexmb07.amd.com (10.181.42.216) by SATLEXMB04.amd.com
 (10.181.40.145) with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2507.39; Mon, 20 Apr
 2026 18:45:17 -0500
Received: from [172.28.123.27] (10.180.168.240) by satlexmb07.amd.com
 (10.181.42.216) with Microsoft SMTP Server id 15.2.2562.17 via Frontend
 Transport; Mon, 20 Apr 2026 18:45:17 -0500
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@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=NMxVSICLyVvpKmHYdNIdqAN7oXYnLhNRVfejZs66rT6ZlZD5v8CyqWsIOt0wNUS923z7miwkHyh+D0a6E36KYhBwd3LdUkczKY4hi07GZ/8gqJO+VEHSKKMmZy5fX26BB5pAqsGbVACObttvpUVTZAvIevLAPZRmUg7uaQu01vzKIH5hKocHXuDTeAKRYsT8tIP330LQZq3mAHD9X3H0Nyh4GJCRpNnKTHBdEOYrGcUB0eDxDcfN6hi+X1dc9hZEi6n7nX4IFgWU2Z4pNsacIyggjKv4jTYpr8c3dIZGXsLzPis50uSAH0f4Av6dfeJ08VvG3GdWH0kNQAZfVUqFKA==
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com;
 s=arcselector10001;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1;
 bh=JX+4GSi+gK9LZSigC1lXxl/fnCZsTJ+Y7VXPebjVX+A=;
 b=e31bICYR7mNf+aUo0Tj3Nh6HiAQFvl19XnrTsy9+1SoUZu16w5mGLeWSMfS45vFbk8ETrw2G91BI4lQxXlG6jh0xmo5a1vrmGoz3wt/3cIkp1dfCq3Q8CHa9epNk7PRApW0kGADh7GKnNrW94OAP9B+pNkKCq1UheqEGtmUeMfy1S7a15LXyHKQBgheanj+6d77AooAdhAB6mWvNxpo0kSvdpuflMrsJW2WOZDQ1+Y3rQmhxud4XJJmGLKcbqVnN5ItEWGmxLgPYuX2Xi1H/3YD/Xv60n49BFh3f4cHme4WENtw+ogu7YGctMXpPoMW6oaR5Q+swvm2q5qV3KNtFvg==
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=JX+4GSi+gK9LZSigC1lXxl/fnCZsTJ+Y7VXPebjVX+A=;
 b=pmJoc8RcNnkEY4RTypWPQLtb6AXKU3NVnavl1UFIrL36SKIOaMlTeGgI/vA7lWiu253zPiVaKXasYY15H8y3+qKSOCbGQ8maKU7VQguwLxex5iJ0g9GXGuF0aW/QFbynXdnpzmiWtD317icf2Nk/NyunRVpMjhIfA5PINx0ndsg=
X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 165.204.84.17)
 smtp.mailfrom=amd.com; dkim=none (message not signed)
 header.d=none;dmarc=pass action=none header.from=amd.com;
Received-SPF: Pass (protection.outlook.com: domain of amd.com designates
 165.204.84.17 as permitted sender) receiver=protection.outlook.com;
 client-ip=165.204.84.17; helo=satlexmb08.amd.com; pr=C
Message-ID: <76f82d46-9b47-475c-9fbb-732750332f56@amd.com>
Date: Mon, 20 Apr 2026 18:49:48 -0400
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH 6/8] tools/xenstored: replace the fire_watches() exact
 parameter
To: Juergen Gross <jgross@suse.com>, <xen-devel@lists.xenproject.org>
CC: Julien Grall <julien@xen.org>, Anthony PERARD <anthony.perard@vates.tech>
References: <20260313074751.2904215-1-jgross@suse.com>
 <20260313074751.2904215-7-jgross@suse.com>
Content-Language: en-US
From: Jason Andryuk <jason.andryuk@amd.com>
In-Reply-To: <20260313074751.2904215-7-jgross@suse.com>
Content-Type: text/plain; charset="UTF-8"; format=flowed
Content-Transfer-Encoding: 7bit
Received-SPF: None (SATLEXMB04.amd.com: jason.andryuk@amd.com does not
 designate permitted sender hosts)
X-EOPAttributedMessage: 0
X-MS-PublicTrafficType: Email
X-MS-TrafficTypeDiagnostic: SJ5PEPF000001D0:EE_|LV9PR12MB9808:EE_
X-MS-Office365-Filtering-Correlation-Id: 3c103238-ac0b-46d3-92cb-08de9f36e10b
X-MS-Exchange-SenderADCheck: 1
X-MS-Exchange-AntiSpam-Relay: 0
X-Microsoft-Antispam:
	BCL:0;ARA:13230040|82310400026|376014|36860700016|1800799024|56012099003|22082099003|18002099003;
X-Microsoft-Antispam-Message-Info:
	jFsKwGXd1wQ1ImP36fgyEIyV3k0SO1Xw6oLxjAnHtDW60n5Ep6OiiHWDvTz8NNSKNkD8uWXwiEvL+uaPJY3xq86H9PGDrvIK/yIwiakA4RFdLWV8i5XkVA1iPlLnC0de/BuZsaJeQna5U05UWKYOWxTstB7ZwBk06b1W8+F7g30PeS5sioMlENTpPIz4PNZLSM5k3PCMG/yf1t/f8simn8kRAbo3Zmdr6xtkA8z5XVV67wTWGzvB/7a1VC9/T1qgCMd4wEL0sKEiQCvYrvZjHxQXrTgrSUlR5O5lRSLQSFbx4QitAbyBu1mHi3VgiptrVMzOGoMZ+Pi0i3YrVO32ikIVoI/++IFx4ecI5g7U5MrE+4ksnBlwfKW4OYgCagKceVgDuhlXHSGiIWUQ+4uJw5s1El+4yblRwSpi4/eq6OlKHB3UCYHNX3vC3IH2PE44z6r3UWYXCIjmm835WakUhhLdEGfU3+g7EVSVaLDt15aSz/cQNZLVwYtDw9yPE6CP1ecM7lhE/CV9yZrs8JHSVdpiXsrbN+PzB6ODF7TWwe708QUBFLk/KN8UoPTxMrJwS4jwmtW3BZ+IzOfVtozWvVUSo9ucAoHRgO7+zsSmjMRnHPrDcMJqx0+LUMC7EG3HNxeBdFw5m2vgmabOs3enRpM1uANKXIdIdu+09dOGaKXnp8qZLoaBRcEuUcF7NtlTyrcWYgBoEydbJgS3cIkDJY+lVfxS/Qup/aw2kX2PkV8+bCKiHEdtx5cQ0cwTPxTa2YyerbpBGPtogbBtHXA49w==
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)(376014)(36860700016)(1800799024)(56012099003)(22082099003)(18002099003);DIR:OUT;SFP:1101;
X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1
X-MS-Exchange-AntiSpam-MessageData-0:
	1x4jES18wa2EYrYsF4sBQt7lZG+rmP8BAc4cnDWV+INZHveCUoklNOaLQsC5kyAqg1n1Gz6BJoHRQ2oSHRg7uFgeu1HOyDHVd6hLQXxOCvmaVq+vuYh0npZt59Rdv9zRU2D6NrxAk7v88I5/HyIWyeV87BW/F33yjBhXqemNKwHiDxuo4j4cfhYOEa1uOiQFzgk4sgwr93h5SntDjxVK2Ar4F2JTusFYxSiHab7eY9pTh+aI5QavcLyZbxJCAZuGibQQvxcC3xMy3lWHPW40ab7TjWvPwEJvwDsxPXcwOQDQ2D5pm7IGfGZQz+GilDzGAipxjXrIUGyVINVveXR8Yf23OPrBvvN2u7s+YubZoo0++1NJRUcMJ3mz/7V16fanY5qcHRzukxvVXP/+ZjJZd7nkH305zaW0YZTyQEKmdU6wztNDBUjB4I9tCS789z0i
X-OriginatorOrg: amd.com
X-MS-Exchange-CrossTenant-OriginalArrivalTime: 20 Apr 2026 23:45:18.5136
 (UTC)
X-MS-Exchange-CrossTenant-Network-Message-Id: 3c103238-ac0b-46d3-92cb-08de9f36e10b
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:
	SJ5PEPF000001D0.namprd05.prod.outlook.com
X-MS-Exchange-CrossTenant-AuthAs: Anonymous
X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem
X-MS-Exchange-Transport-CrossTenantHeadersStamped: LV9PR12MB9808
X-purgate-ID: tlsNG-c201ff/1776728723-2A374443-BA623F4B/0/0
X-purgate-type: clean
X-purgate-size: 934

On 2026-03-13 03:47, Juergen Gross wrote:
> Today fire_watches() has the boolean "exact" parameter specifying how
> the matching of the modified node with registered watches is to be
> handled (only the exact node name is matching or all nodes being
> in the subtree beneath the watched node).
> 
> For the handling of <special-watch>/<domid> watch events 2 additional
> matching possibility needs to be added, as those events should only
> be delivered to clients having requested such events, either by
> watching <special-watch> with the depth=1 parameter, or by directly
> watching for <special-watch>/<domid>, while the traditional special
> watch events should NOT delivered to those watchers.
> 
> For this purpose rename the "exact" parameter to "match" and make it
> an enum with four possible values.
> 
> Signed-off-by: Juergen Gross <jgross@suse.com>

Reviewed-by: Jason Andryuk <jason.andryuk@amd.com>


From xen-devel-bounces@lists.xenproject.org Mon Apr 20 23:51:15 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 20 Apr 2026 23:51:15 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1288261.1568547 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wEyOT-0006Lq-R0; Mon, 20 Apr 2026 23:51:09 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1288261.1568547; Mon, 20 Apr 2026 23:51: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 1wEyOT-0006Lj-NW; Mon, 20 Apr 2026 23:51:09 +0000
Received: by outflank-mailman (input) for mailman id 1288261;
 Mon, 20 Apr 2026 23:51:08 +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 1wEyOS-0006JA-H1
 for xen-devel@lists.xenproject.org; Mon, 20 Apr 2026 23:51:08 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wEyOR-008x0I-PE
 for xen-devel@lists.xenproject.org; Tue, 21 Apr 2026 01:51:07 +0200
Received: from [10.42.69.11] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <Jason.Andryuk@amd.com>)
 id 69e6bbaa-5cb7-0a2a0a5109dd-0a2a450bb2da-24
 for <xen-devel@lists.xenproject.org>; Tue, 21 Apr 2026 01:51:07 +0200
Received: from [40.93.201.5]
 (helo=CY3PR05CU001.outbound.protection.outlook.com)
 by tlsNG-42698a.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.1)
 (envelope-from <Jason.Andryuk@amd.com>)
 id 69e6bbe9-212f-0a2a450b0019-285dc9050b78-3
 for <xen-devel@lists.xenproject.org>; Tue, 21 Apr 2026 01:51:07 +0200
Received: from CH5PR03CA0002.namprd03.prod.outlook.com (2603:10b6:610:1f1::14)
 by SA0PR12MB4381.namprd12.prod.outlook.com (2603:10b6:806:70::14)
 with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9846.15; Mon, 20 Apr
 2026 23:50:59 +0000
Received: from DM2PEPF00003FC8.namprd04.prod.outlook.com
 (2603:10b6:610:1f1:cafe::63) by CH5PR03CA0002.outlook.office365.com
 (2603:10b6:610:1f1::14) with Microsoft SMTP Server (version=TLS1_3,
 cipher=TLS_AES_256_GCM_SHA384) id 15.20.9791.48 via Frontend Transport; Mon,
 20 Apr 2026 23:50:58 +0000
Received: from satlexmb08.amd.com (165.204.84.17) by
 DM2PEPF00003FC8.mail.protection.outlook.com (10.167.23.26) with Microsoft
 SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id
 15.20.9791.48 via Frontend Transport; Mon, 20 Apr 2026 23:50:58 +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.17; Mon, 20 Apr
 2026 18:50:58 -0500
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.17; Mon, 20 Apr
 2026 18:50:58 -0500
Received: from [172.28.123.27] (10.180.168.240) by satlexmb08.amd.com
 (10.181.42.217) with Microsoft SMTP Server id 15.2.2562.17 via Frontend
 Transport; Mon, 20 Apr 2026 18:50:57 -0500
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@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=ue8RVeraOTZnhGArymj+um+5g+Oe0TeBkNZi3ltEKbUXawH+DQLGQI+2vBM7qbgI2LmUiCmduUeL3CSeOFI4+t/TLPSgfM5CCVD18+iu5ZLDTCMju9ofYw/+gUx0xtRYlBLtbhhWaRFvBC35wO557RiW07QK63aBjpv4RpDWBml/Roj/eFk7TSbxqQQtM4Vc/yziPdIiCV/vOtLFn24pMs8w8H6I3trfD73y4DcI4N2OZ/BtC36dQSIhg8iLUKjS4zh2QfTIJnPp5Y4uDDYqvW5+0gZN8R6cFratx/wvNkokoSk4V+5ifVqGRHWptTB387PlCwFWQdjk/xJSX+efng==
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com;
 s=arcselector10001;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1;
 bh=QnZjx5wyPP3o8YwyK/kvZqix0T4Ac0UZ5dpsNMO9/KU=;
 b=nS0/jsiJ1D80rWckZTU0ntwpnh0AejEYnarPAYzOj1zQTgolh7ZDKxv/6iwaH1/K+NM4KDy2desHSFBhm6UCcH3qtXLwa0lsP8tjRfjcSYSPOOzoEOEbnb3kSF2EgZOk0FHxuLFmeIbSyWckWj3hsx6lLPOCFp7UTjUn6qq35YDd4evcBHSGVE0UNLf5TYfeaeklvde81dCdfQsAYPEr6OTR/Cb6eQpnPFNC1zvUkqSkrBQLqFmFALilFNkeuu3h8VRaF4gzF/hxXRR3+MhQRKLGhNe3R2GdV6MNT+pm9ievNZZR6Yd7qsjDZ5ZQZY0vl2Yv40hO8N7TPHy0d3fEjg==
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=QnZjx5wyPP3o8YwyK/kvZqix0T4Ac0UZ5dpsNMO9/KU=;
 b=xcDkb9UThi3h5dCyAGnuiQYMVMteZr8UYdmL8ZQz/JIDXhvjTD7BKGLwXn59kA6cayGFHxLzOG/3/+j3fdJyv29Ubs9/ImYCkdQ3b1zk1gnYtL1ZV4jD613dQuqj7ODcSDhZPofeMRoNb/m+KUWip1btS4XRa7dwzALhbjgYAIM=
X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 165.204.84.17)
 smtp.mailfrom=amd.com; dkim=none (message not signed)
 header.d=none;dmarc=pass action=none header.from=amd.com;
Received-SPF: Pass (protection.outlook.com: domain of amd.com designates
 165.204.84.17 as permitted sender) receiver=protection.outlook.com;
 client-ip=165.204.84.17; helo=satlexmb08.amd.com; pr=C
Message-ID: <262d66a0-972d-46e1-80cb-13d29866b874@amd.com>
Date: Mon, 20 Apr 2026 18:55:56 -0400
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH 7/8] tools/xenstored: expand special watch handling with
 depth feature
To: Juergen Gross <jgross@suse.com>, <xen-devel@lists.xenproject.org>
CC: Julien Grall <julien@xen.org>, Anthony PERARD <anthony.perard@vates.tech>
References: <20260313074751.2904215-1-jgross@suse.com>
 <20260313074751.2904215-8-jgross@suse.com>
Content-Language: en-US
From: Jason Andryuk <jason.andryuk@amd.com>
In-Reply-To: <20260313074751.2904215-8-jgross@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: DM2PEPF00003FC8:EE_|SA0PR12MB4381:EE_
X-MS-Office365-Filtering-Correlation-Id: 891ccf73-c908-48af-b7f6-08de9f37abc4
X-MS-Exchange-SenderADCheck: 1
X-MS-Exchange-AntiSpam-Relay: 0
X-Microsoft-Antispam:
	BCL:0;ARA:13230040|1800799024|82310400026|376014|36860700016|18002099003|22082099003|56012099003;
X-Microsoft-Antispam-Message-Info:
	C8TvHD1NDbdHKNxumQSXNZr74laywmpoQEKgqT5fN+lkJ1yy2rti1CMV+itsgY3+huMTkHZ+bXJJ1434XgMUTqUjLtsqZdR/hz9YyzewpuW2xjdbIFF+P4+mgNNgnzOfD+sf5c6OxVUHAdCLHO4jxjNIVnxqC3l0XzDQ2DQfypWFvTeOWy0yKYYS6YRvAEpsPYWKb2aNZKjxCURCROkliMhIk4Qv4CsmXUrkkaKxRsAMyP1bm9BjnAkVnNXc74HPUoITymD2aKEViDso8+axoNYySeEKwOyPo10V5l8CN6t4USh3xF8gjKKFIH8e8LaRcdSvOB1yDOCDncrvhzSlndt/FtVfv70Oqmb7rvKVwN7tF99w7/2l/Tz7gG/bEQfCtwonw3+ItG/NkGZUpkecjhj47FGYu6xQ8O7Vm+5J8+ItLm7rsSlpnjG4CrdciyEYVzDqHRW+AlzpMo0SF9EeFgnLzHx5luoDHehJFSnSzwXMyaMPv/nY1Uhcr1dXVC6TteFnsTgvk25RPxUnTA50ytaePxxhpxbhOK/U3vNCo+B1asV9bEl8VqUWHj8PhAiWJgoAwVGT+ufbZ7DOoevQAWg6Ya+iDRFASbG/ftcO7gzTSZ3JkTl4tDWsGKgAu37CWtB5Ihpy7tqjhv/EUHhK81blgjmHpjixTME/bJfqylJ9FFQVcgSytgGe9EOlhAT0cLe7pVuVsATcDY6kHYFPhVrrrrDpGmm+nC1KAWCV/NZ+z+OQwdxG0ucPd6NUrUeuB85SAlosXxs/p1gjhjXong==
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)(36860700016)(18002099003)(22082099003)(56012099003);DIR:OUT;SFP:1101;
X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1
X-MS-Exchange-AntiSpam-MessageData-0:
	+AhnAyaSZVWPdmLfTYSFKr1envXMAVmgaVGLqPZQKRFG/Iuk4FPhFrmIDP2GZpkmlLApfwAW8sClSb7KdwV9PCHVsK3cCb69G0utmMdBlT1/FdBtLLc+IOrEfOSNePLgXh7QBWGXny0RxnxwbgpuqTyP/Scuc6vPoJj38zC9broWwCqFupXtBESgS6uZMsHCcmbfcpsC0Th6Xfczxxy411aMTJzog2c9NrEtU4v6DkvYPRSG/3WrPTynO+o/EUbYwGo270XGobJJ08t5qTbksuYKWJODYLD/am2tWVUDb4NA0+RBFM99m5keeLYTxV/mZyCRVnkblMbCQQdg0YeNcaVxO8i4GRfHlSdLGMbdUfHl1H90POFXMrU+WFjw6XeXfIlBlcur4sAPmiceekhjtwdRDmeaDEkYXFagQaNJPbCNziebSrJ/8RwKmLIJAQhy
X-OriginatorOrg: amd.com
X-MS-Exchange-CrossTenant-OriginalArrivalTime: 20 Apr 2026 23:50:58.6438
 (UTC)
X-MS-Exchange-CrossTenant-Network-Message-Id: 891ccf73-c908-48af-b7f6-08de9f37abc4
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:
	DM2PEPF00003FC8.namprd04.prod.outlook.com
X-MS-Exchange-CrossTenant-AuthAs: Anonymous
X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem
X-MS-Exchange-Transport-CrossTenantHeadersStamped: SA0PR12MB4381
X-purgate-ID: tlsNG-42698a/1776729067-7F57BF3B-D7E2B85F/0/0
X-purgate-type: clean
X-purgate-size: 999

On 2026-03-13 03:47, Juergen Gross wrote:
> With XENSTORE_SERVER_FEATURE_WATCHDEPTH available, special watch
> handling needs to be extended:
> 
> - when a special watch is set with depth = 1, the domid is added to
>    the watch event
> 
> - it is possible to watch for @releaseDomain/<domid>
> 
> Signed-off-by: Juergen Gross <jgross@suse.com>

> @@ -678,10 +693,13 @@ static int do_check_domain(struct domain *domain, bool *notify,
>   		if ((state & XENMANAGE_GETDOMSTATE_STATE_SHUTDOWN)
>   		    && !domain->shutdown) {
>   			domain->shutdown = true;
> +			fire_special_watches("@releaseDomain", domain->domid,
> +					     WATCH_DOM);
>   			*notify = true;
>   		}
> -		if (!(state & XENMANAGE_GETDOMSTATE_STATE_DEAD))
> +		if (!(state & XENMANAGE_GETDOMSTATE_STATE_DEAD)) {
>   			return 0;
> +		}

Stray  {} addition?

Reviewed-by: Jason Andryuk <jason.andryuk@amd.com>

>   	}
>   	if (domain->conn) {
>   		/* domain is a talloc child of domain->conn. */


From xen-devel-bounces@lists.xenproject.org Mon Apr 20 23:51:40 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 20 Apr 2026 23:51:40 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1288268.1568556 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wEyOy-00074o-2Y; Mon, 20 Apr 2026 23:51:40 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1288268.1568556; Mon, 20 Apr 2026 23: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 1wEyOx-00074h-V2; Mon, 20 Apr 2026 23:51:39 +0000
Received: by outflank-mailman (input) for mailman id 1288268;
 Mon, 20 Apr 2026 23:51:38 +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 1wEyOw-000728-Fp
 for xen-devel@lists.xenproject.org; Mon, 20 Apr 2026 23:51:38 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wEyOv-001cMy-Sg
 for xen-devel@lists.xenproject.org; Tue, 21 Apr 2026 01:51:37 +0200
Received: from [10.42.69.1] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <Jason.Andryuk@amd.com>)
 id 69e6bb99-e002-0a2a0a5209dd-0a2a4501980e-32
 for <xen-devel@lists.xenproject.org>; Tue, 21 Apr 2026 01:51:37 +0200
Received: from [52.101.56.71]
 (helo=BN1PR04CU002.outbound.protection.outlook.com)
 by tlsNG-d62444.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.1)
 (envelope-from <Jason.Andryuk@amd.com>)
 id 69e6bc08-c1f2-0a2a45010019-34653847bc21-3
 for <xen-devel@lists.xenproject.org>; Tue, 21 Apr 2026 01:51:37 +0200
Received: from BYAPR07CA0075.namprd07.prod.outlook.com (2603:10b6:a03:12b::16)
 by MN6PR12MB8567.namprd12.prod.outlook.com (2603:10b6:208:478::12)
 with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9846.12; Mon, 20 Apr
 2026 23:51:31 +0000
Received: from SJ5PEPF000001F1.namprd05.prod.outlook.com
 (2603:10b6:a03:12b:cafe::23) by BYAPR07CA0075.outlook.office365.com
 (2603:10b6:a03:12b::16) with Microsoft SMTP Server (version=TLS1_3,
 cipher=TLS_AES_256_GCM_SHA384) id 15.20.9791.48 via Frontend Transport; Mon,
 20 Apr 2026 23:51:30 +0000
Received: from satlexmb07.amd.com (165.204.84.17) by
 SJ5PEPF000001F1.mail.protection.outlook.com (10.167.242.69) with Microsoft
 SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id
 15.20.9791.48 via Frontend Transport; Mon, 20 Apr 2026 23:51:30 +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.17; Mon, 20 Apr
 2026 18:51:29 -0500
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.17; Mon, 20 Apr
 2026 18:51:29 -0500
Received: from [172.28.123.27] (10.180.168.240) by satlexmb08.amd.com
 (10.181.42.217) with Microsoft SMTP Server id 15.2.2562.17 via Frontend
 Transport; Mon, 20 Apr 2026 18:51:29 -0500
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@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=M3pMAIdl2OYzJcK7Urq7O81FIC3rXhYM0PBNxXwmaoCB0MuiBCgaRPckAzQLrvOjY2OitPgl8uIoOa5OpRX6/R2DxFnAyJj2Vtic1YDS6O/Zj/QxbDxI46l7IfTWHJeJ/8QS/xLKs50t780cm7SHlcrRaa3Y4DvUkolQ9sRoeKkHyy02oSHp0e22hGUYY/FxOxEpJKWNFwxPNS4AthA96YDh95jFZzbIwVkQRbB+qz0W9RZAXtCsMF3QEFF9ccs4gztJTbpaGxPa9o7zGsu2YVWipf8vJ/xN1LpYl3MvtYoYAErCHomfepEGFP+V58equjacTSy/HEyKo4CuVSWylg==
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com;
 s=arcselector10001;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1;
 bh=w47/qAKPVw8t8oSI2veTzYmh+TRNWLNKUPFacJxOI4M=;
 b=ZQe+siKrSWLVLyWjvWV8C15t+4kwV5JH6+c+3gJFPmpzfB/y85D0fu7qWzxzBzdw7B/cW8Qqw0EUPP8Gd7dZfS+TBHDlFiEF5TX6Ud5ZD9XdE72DizbmrERwFrQMe5rM4dI3T7SSWPalFJnjV7AHjTr0I8CiqgUza6WFx82bOFe0GVcRawxuokStfVwb0gRmW+jnzFKYsdLHljPO/7FbUxG2KyzmaDgq1O+9eGYdssPeZXRfINlS5dIVbRFDESSvdPqj4iTzFIHcS6lBh7XeVH6awoFIbzbGXgEgTQol5c53DLVyc+82jXjxJr6KwP9SUxLqLTy4VAAQMnMWsU872w==
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=w47/qAKPVw8t8oSI2veTzYmh+TRNWLNKUPFacJxOI4M=;
 b=m2k5t4PR0e6k7vRNjzTl3eldoZA2vzdmYhyoTXlwYsMEY78zAEBt/XhtZKeUgOQZbFDozv15Hr5lk43xN7ak8apSph8YV2zg0m7hKkuy62PdSeYfLQUa6mRczmkA0BKDKm8A/shGQZFg2jdYnObVf65jU3lxjp/j81SJsyz1as8=
X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 165.204.84.17)
 smtp.mailfrom=amd.com; dkim=none (message not signed)
 header.d=none;dmarc=pass action=none header.from=amd.com;
Received-SPF: Pass (protection.outlook.com: domain of amd.com designates
 165.204.84.17 as permitted sender) receiver=protection.outlook.com;
 client-ip=165.204.84.17; helo=satlexmb07.amd.com; pr=C
Message-ID: <47c69c4c-aefa-4666-9b35-8bc84209f350@amd.com>
Date: Mon, 20 Apr 2026 18:56:27 -0400
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH 8/8] tools/xenstored: make
 XENSTORE_SERVER_FEATURE_WATCHDEPTH available
To: Juergen Gross <jgross@suse.com>, <xen-devel@lists.xenproject.org>
CC: Julien Grall <julien@xen.org>, Anthony PERARD <anthony.perard@vates.tech>
References: <20260313074751.2904215-1-jgross@suse.com>
 <20260313074751.2904215-9-jgross@suse.com>
Content-Language: en-US
From: Jason Andryuk <jason.andryuk@amd.com>
In-Reply-To: <20260313074751.2904215-9-jgross@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: SJ5PEPF000001F1:EE_|MN6PR12MB8567:EE_
X-MS-Office365-Filtering-Correlation-Id: 1acc870f-61be-4687-be31-08de9f37beb1
X-MS-Exchange-SenderADCheck: 1
X-MS-Exchange-AntiSpam-Relay: 0
X-Microsoft-Antispam:
	BCL:0;ARA:13230040|82310400026|376014|36860700016|1800799024|22082099003|56012099003|18002099003;
X-Microsoft-Antispam-Message-Info:
	mCXl5fqQYaqHl1fXQD1lCirlDL13F896BHCN0OOwXUjvWCk7YnV+JGrObH34pZmanpVueQGLTJHclQWuogwYFrH2iu0qlRjPy7hR2XmcGNUObqJ6FShZ2aHt5Lk2KCZIrPpr9BNv16wNCVq2PACtEgWyYeK9h+p0npIIFkJGlxLKB+5BpOkzFm37FiKJGju0XYncN1AE697XSGI8sNt+W/2JKAVMNggK3xFhzpvFjzbgWsae0na/+Abkw/zg7bmkQ4Ypn/qcNfKPyK8iJyL4OsmGfwTB9gFRLJ7g7G8NelfLhNBkbGjYh5EwMnbN1sALrzElxjvgik1lWJ+CzCOuE6rMdOQ6AEqk3ZWZCYMJa0g5gjJVrmCREHLHW+uPRovVxKSztukRgqhVGD1VoEmUvqPYTgreMfS2+4heiymH8enHBHOj2Co9eiKjgPnsTS7RS7tisQnD3uIQP31KPa1XwSkJ7JzYu9SUb5EDRwexlNIk4tFydILYrqyzw2BTip07/KyxaxGpbPv67yqTAMx+i2Ps4vgFL8dH1DezMUAf23XcXRlzEI5JYygr65k8YdE7Lo+pMFNgfd7sLjq/gGCX123CMPlX9OgCdZQc8jrpIqUOdPgszBVIZvT9lYYu6nsOztVF2ZoBynHjrGCI9bToYbxDTZRgT3T4pIugj8nq9PNsugK6QYaCeTFgqEwfZp5mKJugK8Kg015Ol4JKWoxUPY9adyadPP5jS8yVCjGHogdikFx9qWrpz7Wu25HTuNGuBrQ4lrXswIQFW2WjREzSRw==
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)(376014)(36860700016)(1800799024)(22082099003)(56012099003)(18002099003);DIR:OUT;SFP:1101;
X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1
X-MS-Exchange-AntiSpam-MessageData-0:
	izwRDcGopvcLsqsCpBR3P2OK/3/PpwbcFcN0lB7aj4Wm7fIpO/oFx3LLEAIMvGN1di+qB7oP+1stiXrlTRyG7ocX0rM3K+OPHkemb8Yz2H7z2dzPUSETV3pZCsySkuy74mQCA0Rh/3K+PptIsNjPpIBz7tSJd+/gqVYLyHx1/tmlCwbfP9TIXBQSy89c91Gqs2HsFBzmSB+RZy8Yl11UMkEcpiV4xlaeW/Owvk6EwB1W56XlImjub8NSyH9a3EBJWWME/4t1qllq2tEDdKxxMFd1yUMtRZBS1RaacwYtrq7R6WLpxPwaM9kHuqgkksmQVY0KsAbAMXmeOSSWKhEzzOE4PZxYqLaYH1D8O603nWjUsoLlCPx9DjkQZMr0WPwOJwVicWf1WVp1B0Z2wADqNTLybM44aVhuUM5z518UggD0M95OlZuON2AM8sgGFhxX
X-OriginatorOrg: amd.com
X-MS-Exchange-CrossTenant-OriginalArrivalTime: 20 Apr 2026 23:51:30.3697
 (UTC)
X-MS-Exchange-CrossTenant-Network-Message-Id: 1acc870f-61be-4687-be31-08de9f37beb1
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:
	SJ5PEPF000001F1.namprd05.prod.outlook.com
X-MS-Exchange-CrossTenant-AuthAs: Anonymous
X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem
X-MS-Exchange-Transport-CrossTenantHeadersStamped: MN6PR12MB8567
X-purgate-ID: tlsNG-d62444/1776729097-BE460FF4-387EE346/0/0
X-purgate-type: clean
X-purgate-size: 266

On 2026-03-13 03:47, Juergen Gross wrote:
> Add XENSTORE_SERVER_FEATURE_WATCHDEPTH to the available features now
> that all needed support has been added.
> 
> Signed-off-by: Juergen Gross <jgross@suse.com>

Reviewed-by: Jason Andryuk <jason.andryuk@amd.com>


From xen-devel-bounces@lists.xenproject.org Mon Apr 20 23:54:04 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 20 Apr 2026 23:54:04 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1288279.1568564 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wEyRG-0000wR-D1; Mon, 20 Apr 2026 23:54:02 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1288279.1568564; Mon, 20 Apr 2026 23:54: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 1wEyRG-0000wK-AH; Mon, 20 Apr 2026 23:54:02 +0000
Received: by outflank-mailman (input) for mailman id 1288279;
 Mon, 20 Apr 2026 23:54:01 +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 1wEyRE-0000tf-TU
 for xen-devel@lists.xenproject.org; Mon, 20 Apr 2026 23:54:01 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wEyRE-008xIO-Aa
 for xen-devel@lists.xenproject.org; Tue, 21 Apr 2026 01:54:00 +0200
Received: from [10.42.69.9] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <Jason.Andryuk@amd.com>)
 id 69e6bc43-2eae-0a2a0a5409dd-0a2a45099b5a-34
 for <xen-devel@lists.xenproject.org>; Tue, 21 Apr 2026 01:53:59 +0200
Received: from [40.107.200.48]
 (helo=CH5PR02CU005.outbound.protection.outlook.com)
 by tlsNG-bad1c0.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.1)
 (envelope-from <Jason.Andryuk@amd.com>)
 id 69e6bc95-2497-0a2a45090019-286bc8301d4a-3
 for <xen-devel@lists.xenproject.org>; Tue, 21 Apr 2026 01:53:59 +0200
Received: from CH5P220CA0010.NAMP220.PROD.OUTLOOK.COM (2603:10b6:610:1ef::14)
 by EAYPR12MB999180.namprd12.prod.outlook.com (2603:10b6:303:2c2::7)
 with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9846.12; Mon, 20 Apr
 2026 23:53:54 +0000
Received: from CH1PEPF0000AD78.namprd04.prod.outlook.com
 (2603:10b6:610:1ef:cafe::5) by CH5P220CA0010.outlook.office365.com
 (2603:10b6:610:1ef::14) with Microsoft SMTP Server (version=TLS1_3,
 cipher=TLS_AES_256_GCM_SHA384) id 15.20.9791.48 via Frontend Transport; Mon,
 20 Apr 2026 23:53:54 +0000
Received: from satlexmb07.amd.com (165.204.84.17) by
 CH1PEPF0000AD78.mail.protection.outlook.com (10.167.244.56) with Microsoft
 SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id
 15.20.9791.48 via Frontend Transport; Mon, 20 Apr 2026 23:53:54 +0000
Received: from SATLEXMB04.amd.com (10.181.40.145) by satlexmb07.amd.com
 (10.181.42.216) with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.2.2562.17; Mon, 20 Apr
 2026 18:53:53 -0500
Received: from satlexmb08.amd.com (10.181.42.217) by SATLEXMB04.amd.com
 (10.181.40.145) with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2507.39; Mon, 20 Apr
 2026 18:53:53 -0500
Received: from [172.28.123.27] (10.180.168.240) by satlexmb08.amd.com
 (10.181.42.217) with Microsoft SMTP Server id 15.2.2562.17 via Frontend
 Transport; Mon, 20 Apr 2026 18:53:53 -0500
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@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=MStZgXdBGjey3wIzU1gFrN+7E0Qmf23yl0RdJl8jgS103/8RI3S8yv7x+EcU2O8C6oOwKUezE8Ik8eDsmslxz4L3q0UmxTnls76tS4heoe1QyLPhVjyArbF4mkcvV8oVTD8icOQZkLHWoDa6Gbm3KoXS9S3hO4x3KyAoY0HjtrxgSQu4EhtnFtchaiXR30HQoQ7D1cGXjpWIAg0+njmTAPIm8pWKYq8U02kwTo/BNcDYF89KTlRGWWstjhGZlkZIe7Uo3ybsrL3OC3AZGgJLgCjfiEKmd5lYe1RAFHL+ddQMw/4v60HNXE7v4P4oBu3PMKfP9LENkLPtv9D1XDf+yA==
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com;
 s=arcselector10001;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1;
 bh=MTai0B5TlkNX4vDN7bm6aSQUEu4hnG5t5CdHzY7PlHY=;
 b=wFrPFmFQA/eF2kEe4muA1wfOqLuPYbxuVRJvPKZU6tWEh61G0LzaiGqlQcOFekx8YgWZAj5bOzgPCvdj+PtNbmzzZ1/t2yX8ARcmcf9b2ld1kAF6eYNg6gFLigt8hQnUQUeeCTxCDe4v7HJblVY2+5xtzv18Pu8UEub95sjKi3CJIKoj6kbFB1HtEZWFx6Jn2vooqbVBvm+wLw+oRVkCmESjj1Rf1lAFOJ4YUVDSBGBglr1keh27jIVO2qas/y7Ax2bF1FDsVw7XtObO/7E8AZ1uHPa4fB52y1SWcUWvsQZpkScDKRj8pP82pZ9VTVlbOEmr70ED2zY3iYTn9uZdLg==
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=MTai0B5TlkNX4vDN7bm6aSQUEu4hnG5t5CdHzY7PlHY=;
 b=TVNjxYKJviLfKn0klROiRABrxwFYQVu4nsjrNZub6fgRw2NBgOIAiEExPn9xaoDDw0tAY37+7yCSVd+FzU7XCqz/zf4MbTSc354k+aib+lypeJvA43f5JRa1vKXTAQmEzqqPaQ+XlPdCtUKUBfix/2Teqas+/EAaDh3Nm0UudF8=
X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 165.204.84.17)
 smtp.mailfrom=amd.com; dkim=none (message not signed)
 header.d=none;dmarc=pass action=none header.from=amd.com;
Received-SPF: Pass (protection.outlook.com: domain of amd.com designates
 165.204.84.17 as permitted sender) receiver=protection.outlook.com;
 client-ip=165.204.84.17; helo=satlexmb07.amd.com; pr=C
Message-ID: <0744dac1-4154-426f-889e-efedf7c34803@amd.com>
Date: Mon, 20 Apr 2026 18:59:07 -0400
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH 9/8] tools/xs-clients: support depth with xenstore-watch
To: Juergen Gross <jgross@suse.com>, <xen-devel@lists.xenproject.org>
CC: Julien Grall <julien@xen.org>, Anthony PERARD <anthony.perard@vates.tech>
References: <20260313074751.2904215-1-jgross@suse.com>
 <20260319150626.436719-1-jgross@suse.com>
Content-Language: en-US
From: Jason Andryuk <jason.andryuk@amd.com>
In-Reply-To: <20260319150626.436719-1-jgross@suse.com>
Content-Type: text/plain; charset="UTF-8"; format=flowed
Content-Transfer-Encoding: 7bit
Received-SPF: None (SATLEXMB04.amd.com: jason.andryuk@amd.com does not
 designate permitted sender hosts)
X-EOPAttributedMessage: 0
X-MS-PublicTrafficType: Email
X-MS-TrafficTypeDiagnostic: CH1PEPF0000AD78:EE_|EAYPR12MB999180:EE_
X-MS-Office365-Filtering-Correlation-Id: 6d1f6fc5-6e95-4c24-2296-08de9f381466
X-MS-Exchange-SenderADCheck: 1
X-MS-Exchange-AntiSpam-Relay: 0
X-Microsoft-Antispam:
	BCL:0;ARA:13230040|36860700016|376014|82310400026|1800799024|18002099003|22082099003|56012099003;
X-Microsoft-Antispam-Message-Info:
	nDnhp0YYQX6RgG0XVjcRNwBA/CtGu2/qS7zrhgrkXAgtR9+RKXebUtNRyAqFCYrbyV5WFD4cT5mS4PmDQ/axWfXALk9r6d8x4CmsAFRnmlNlZs/iG9DXuJkG8GVpNDofFxLSiMk+RCebWo5DTTflVpGVHJAc4kUJIxSfndu3TnbhNMBGtAadILZGZN9Iu58MsUbi/BSZ8eR1gnAccnGyS/JAi4t8ccXUmGEcj1eHC2ZAwm32Xjw+6i7KTb4N53HVrFlsr32XSQStbc2qkZtNLdx4E+OB5Jfs+XreETxNM1CiZ5u8FUz42Cv6A8ReCIFNNo7WkckSFd/so7j4lyU/MAxl3K91lVHsZRRWA51SMNG9VTWpW4qVlURtmnTIjhLVAFZwt9lW/MJhjKOq5UcXuwjwmG4o3Xn+aJDEC+Op3oTvKTQFcj2N9j1ttHAvQzYmIIlK8hl/D3PgahUmbOo+k/qFojeiAwS/UwgdaS4IRFMILR4OVCr/GeEFYRj4LhD9p8F1Kcx4pCD9IpIF3uaIFDj6NDO9V8hNne17g+gGh/o2/Lk+TcnnnncqTRJK2sq3YLUw3eyNgdIvkuPIJ38DEIuZkBkBtSHm8k7hqNWSGBC0G5JMkrK5YmZNlyMeyCqMsbfTs+tYE+UdRTFosjFSbsBqo/ohigVhO+vrl83xAmw9tyrghb25GSRvhHL/6Cl48hlJUgUSz1tCI7seS8nwNQzvPs8j1s013cj5zQDvE40CbDcGzNxDvlhWZM8EoxQpzUMTOm3UnmDKW5ZwiDC8ng==
X-Forefront-Antispam-Report:
	CIP:165.204.84.17;CTRY:US;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:satlexmb07.amd.com;PTR:InfoDomainNonexistent;CAT:NONE;SFS:(13230040)(36860700016)(376014)(82310400026)(1800799024)(18002099003)(22082099003)(56012099003);DIR:OUT;SFP:1101;
X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1
X-MS-Exchange-AntiSpam-MessageData-0:
	amFMLXD0R5uasg8I/mrxQraarUKzpSwHbcu6CudeOEjEJgrkP9PJ4KGZ1kR3ZjB+sp0eqPKNTj/gWEtKnwioIZlu5nLJ6HvTwvQyAgwhZtmoCwvwrIDVvVoF7Eyow8/eQR4FdXkute75934Ach6jGePf/erZaT9Pt5TaJ3QMQyfPiR0aey9/YqYr4NuOVVqBECllYEN1EB8vUZiZEtD8hsKQKqDgdQVFvp9cmUWa/rGP/P/WFu+I1iCOveNw5FKdj8UCqqc9gQhtMa/oUVXD2nbs8olMPmwtUk60fYseqGcR9II+lx/1bA133usy2hO6zac0VruLO7/s8tCzjLCCOkvwvIXKjHc0uVMJ3LqUdlbRK0iq9lULlpPH8HIzt+msBMZVDaHeo7qYEsq6597vGxldYjwjc8SjVYkEu4cC6PwT7XvfieD1L8J3QujEOlsf
X-OriginatorOrg: amd.com
X-MS-Exchange-CrossTenant-OriginalArrivalTime: 20 Apr 2026 23:53:54.2099
 (UTC)
X-MS-Exchange-CrossTenant-Network-Message-Id: 6d1f6fc5-6e95-4c24-2296-08de9f381466
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:
	CH1PEPF0000AD78.namprd04.prod.outlook.com
X-MS-Exchange-CrossTenant-AuthAs: Anonymous
X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem
X-MS-Exchange-Transport-CrossTenantHeadersStamped: EAYPR12MB999180
X-purgate-ID: tlsNG-bad1c0/1776729239-400ABA53-3B04D88A/0/0
X-purgate-type: clean
X-purgate-size: 437

On 2026-03-19 11:06, Juergen Gross wrote:
> Add a "-d <depth>" parameter to xenstore-watch, allowing to specify
> the depth parameter of the XS_WATCH command.
> 
> Using "-d" without support of depth by xenstored will refuse to set
> the watch(es).
> 
> Signed-off-by: Juergen Gross <jgross@suse.com>

Reviewed-by: Jason Andryuk <jason.andryuk@amd.com>

For bonus points, you can add it to the man page :)

Regards,
Jason


From xen-devel-bounces@lists.xenproject.org Tue Apr 21 06:39:24 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 21 Apr 2026 06:39:24 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1288294.1568574 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wF4lJ-0002xv-RZ; Tue, 21 Apr 2026 06:39:09 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1288294.1568574; Tue, 21 Apr 2026 06:39: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 1wF4lJ-0002xn-O8; Tue, 21 Apr 2026 06:39:09 +0000
Received: by outflank-mailman (input) for mailman id 1288294;
 Tue, 21 Apr 2026 06:39:08 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <jbeulich@suse.com>) id 1wF4lI-0002xh-F3
 for xen-devel@lists.xenproject.org; Tue, 21 Apr 2026 06:39:08 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wF4lG-009kyr-QT
 for xen-devel@lists.xenproject.org; Tue, 21 Apr 2026 08:39:06 +0200
Received: from [10.42.69.5] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <jbeulich@suse.com>)
 id 69e71b80-5cb7-0a2a0a5109dd-0a2a4505eab0-40
 for <xen-devel@lists.xenproject.org>; Tue, 21 Apr 2026 08:39:06 +0200
Received: from [209.85.128.49] (helo=mail-wm1-f49.google.com)
 by tlsNG-c201ff.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.1)
 (envelope-from <jbeulich@suse.com>)
 id 69e71b8a-aaa8-0a2a45050019-d1558031e083-3
 for <xen-devel@lists.xenproject.org>; Tue, 21 Apr 2026 08:39:06 +0200
Received: by mail-wm1-f49.google.com with SMTP id
 5b1f17b1804b1-488b0e1b870so60776455e9.2
 for <xen-devel@lists.xenproject.org>; Mon, 20 Apr 2026 23:39:06 -0700 (PDT)
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-43fe4dc24cfsm35022815f8f.16.2026.04.20.23.39.05
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Mon, 20 Apr 2026 23:39:05 -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=google header.d=suse.com header.i="@suse.com" header.h="Content-Transfer-Encoding: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=1776753546; x=1777358346; darn=lists.xenproject.org;
        h=content-transfer-encoding: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;
        bh=yzhBlOhnJOygDZAANCZGc+/s53N/OJLF2UDAF1iprhk=;
        b=Kc5ok7gIS1qaDr6tu3b/h9lPGrA6s1CSMzKLkh0mgnx2qyNI+CyexM/mG9DGNjIAkW
         XuK8u0E8QCu9RQU85pQP/PnfARzICep++ZNIPnmrbpcLlPvuTlO/FbC52WPYf4xBeCdc
         +Mdf8L3G09BgKV1/xpdGVESLaUI/6xkGkTbNLCe6feB0XYcNHgu7XI8KFf500rHUkQ8Y
         Y8lluKz3bHsCJONRmyLqq2luailZR5sHZSdCLaZHBlN7UVvL3Np2XaHVmkECh3JFx5Uu
         GQ+l4uPkaYjv/Eh4xaCbHwfdlR2WaiAvEPfQPPUzUiFTUBOrJBtNWQcgn1UYhBrdalTB
         iY4g==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20251104; t=1776753546; x=1777358346;
        h=content-transfer-encoding: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;
        bh=yzhBlOhnJOygDZAANCZGc+/s53N/OJLF2UDAF1iprhk=;
        b=GvSeVLOPylss2tSKMnzfkC+jvtijcWKw8x6Z/N+eKWc3vfkx1mVWHSMdN4W1vzd1y6
         8ibA8xvl0iQ2YOMBRQRIfk2RVfQhOEVtcoQsgP5NUJ1PQYzbLzq0YrJZNpviLR5bC5GF
         l8qywSyebYwok3O5FYqYa0c7RjLPw1DBnMm9Rx0PZNcR5myseRwLTIH9TF4v5rvEMj1N
         YAxANl9sdLNb+7oNDv1Xcpx7C4HLAFbVKrvshbDEadJkjNH+vydlKIRr1we38dGrX4bI
         GAAG7j+q/WEdHPrRo9PKgFfux9Eu2wTmud6kq78xcuFxYyqJwUL5QBYsYOVdCsTnMqWq
         nOgQ==
X-Forwarded-Encrypted: i=1; AFNElJ+WEBeJHwz6gTr+vbV1irmd3Ri1T85Qg94r3CYiDMjZrFwj4s3tya936LGmgcE9fMkdIhX+cIV9fas=@lists.xenproject.org
X-Gm-Message-State: AOJu0YxA+32v0XiZL37XMWlsnwb+ZgOwYjaYHG3mFijNDC+/9WDvxq7a
	4luGgrQyCNgafJbn9WkHCBIS5KXe4CADEz+6uc3z56RZATRvpsVoRYLYae/hwXLNOg==
X-Gm-Gg: AeBDiet3Ex6Gv4cV7qhSal+g3oCUxQ+AfvwYLc9xkolbnAvhxLfaiSOH8Immd7aUqXd
	d2unsrnokcw8N5B7xFP+NldAAFPhn9BBRfjXJrJUukRVtmWAdMidWjtL5aYKaIR+x4a+k1lhyXJ
	kcoqnEhHRwMHoRgjLMUdrCjjplGP+otYm+m1LqqKPxuYi3KJh/K/l6BX6DQSsnbXHp596M2AfUk
	q+GCIO1k2ZAkGE9O1gkJIAFcV7g06/PWoo0o5dL5DYkiZi9tpovv9mX7skHC+ZN1Z2I1wKbNW4H
	croXpixcRjWwHFlgTcvDGllaISIDL+G82beYaEiAir30hTLmaOyCTTRmjnwSyBF3YKzFMfkTcJw
	gpCBw8QATXReSPQtrUoQkjEiEyOvT/fX8IibtQ4nQflWrWx2WRpP9CjTRZSkmGwluwfWIkcC1ZM
	PwIHrYbRsdCZ0VN6I8agdmQDrYLebAe/t5IuCcFVDqJz4ELfz1kr7ucOFT7R6ZTyy/1X1L+JAy/
	80oYqOfdA7K8QYgATlOqzP2nA==
X-Received: by 2002:a05:600c:4f13:b0:489:1a65:dd6e with SMTP id 5b1f17b1804b1-4891a65de3emr128039215e9.8.1776753545908;
        Mon, 20 Apr 2026 23:39:05 -0700 (PDT)
Message-ID: <85fa4bf2-e288-4376-aa74-c3aef511c2b6@suse.com>
Date: Tue, 21 Apr 2026 08:39:04 +0200
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH Xen 4.20] x86/apic: Fix asm() constraints in TMICT
 calculation
To: Andrew Cooper <andrew.cooper3@citrix.com>
Cc: =?UTF-8?Q?Roger_Pau_Monn=C3=A9?= <roger.pau@citrix.com>,
 Teddy Astie <teddy.astie@vates.tech>,
 Xen-devel <xen-devel@lists.xenproject.org>
References: <20260420174605.706329-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: <20260420174605.706329-1-andrew.cooper3@citrix.com>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 7bit
X-purgate-ID: tlsNG-c201ff/1776753546-E1BA4443-50D61DF6/0/0
X-purgate-type: clean
X-purgate-size: 1984

On 20.04.2026 19:46, Andrew Cooper wrote:
> The encoded MUL is 64 bits, so writes %rdx too.  At a minimum, this needs
> expressing as a clobber.

I'm embarrassed of missing this.

> Also fix a logical disconnect between 'overflow' being the carry flag not the
> overflow flag.  CF and OF are always the same for MUL instructions, so use the
> flag which matches the variable name.

I don't mind this too much, but the use of CF was deliberate: Imo OF is
relevant to signed arithmetic only, whereas CF is the flag to use with
unsigned operations.

> Fixes: d5c70a51bfbe ("x86/APIC: handle overflow in TMICT calculation")
> Signed-off-by: Andrew Cooper <andrew.cooper3@citrix.com>

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

> I've kept this form because it produces best code generation for GCCs which
> support flag outputs.
> 
> An alternative would be to capture product_hi and check the nonzero-ness, as
> that's how OF/CF are produced in hardware, which would be better code
> generation on very old GCCs.

We could fit both, by further widening the use of ASM_FLAG_OUT().

> --- a/xen/arch/x86/apic.c
> +++ b/xen/arch/x86/apic.c
> @@ -1317,9 +1317,10 @@ int reprogram_timer(s_time_t timeout)
>  
>          apic_tmict = UINT32_MAX;
>          asm ( "mul %[expire]\n\t"
> -              ASM_FLAG_OUT(, "setc %[cf]")
> -              : "=a" (product), [cf] ASM_FLAG_OUT("=@ccc", "=qm") (overflow)
> -              : "0" ((unsigned long)bus_scale), [expire] "r" (expire) );
> +              ASM_FLAG_OUT(, "seto %[of]")
> +              : "=a" (product), [of] ASM_FLAG_OUT("=@cco", "=qm") (overflow)

Noticing only now - for the non-flag-output case this should be "=&a". With

> +              : "0" ((unsigned long)bus_scale), [expire] "r" (expire)

... %rax also being an input, there's no risk of the compiler using the
register for the other input, but still. Would you mind making that adjustment
as well, while at it?

Jan


From xen-devel-bounces@lists.xenproject.org Tue Apr 21 06:41:58 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 21 Apr 2026 06:41:58 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1288306.1568583 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wF4o0-0004Tk-9r; Tue, 21 Apr 2026 06:41:56 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1288306.1568583; Tue, 21 Apr 2026 06:41: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 1wF4o0-0004Td-7E; Tue, 21 Apr 2026 06:41:56 +0000
Received: by outflank-mailman (input) for mailman id 1288306;
 Tue, 21 Apr 2026 06:41:54 +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 1wF4ny-0004TX-Gm
 for xen-devel@lists.xenproject.org; Tue, 21 Apr 2026 06:41:54 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wF4nx-002Pki-NL
 for xen-devel@lists.xenproject.org; Tue, 21 Apr 2026 08:41:53 +0200
Received: from [10.42.69.5] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <Michal.Orzel@amd.com>)
 id 69e71c04-bab6-0a2a0a5309dd-0a2a4505dc5a-44
 for <xen-devel@lists.xenproject.org>; Tue, 21 Apr 2026 08:41:53 +0200
Received: from [52.101.193.32]
 (helo=CH1PR05CU001.outbound.protection.outlook.com)
 by tlsNG-c201ff.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.1)
 (envelope-from <Michal.Orzel@amd.com>)
 id 69e71c2f-aaa8-0a2a45050019-3465c120b588-4
 for <xen-devel@lists.xenproject.org>; Tue, 21 Apr 2026 08:41:52 +0200
Received: from BY1P220CA0043.NAMP220.PROD.OUTLOOK.COM (2603:10b6:a03:59e::11)
 by DS0PR12MB8562.namprd12.prod.outlook.com (2603:10b6:8:164::13) with
 Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9846.15; Tue, 21 Apr
 2026 06:41:49 +0000
Received: from SJ5PEPF000001CA.namprd05.prod.outlook.com
 (2603:10b6:a03:59e:cafe::7d) by BY1P220CA0043.outlook.office365.com
 (2603:10b6:a03:59e::11) with Microsoft SMTP Server (version=TLS1_3,
 cipher=TLS_AES_256_GCM_SHA384) id 15.20.9791.48 via Frontend Transport; Tue,
 21 Apr 2026 06:41:49 +0000
Received: from satlexmb08.amd.com (165.204.84.17) by
 SJ5PEPF000001CA.mail.protection.outlook.com (10.167.242.39) with Microsoft
 SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id
 15.20.9791.48 via Frontend Transport; Tue, 21 Apr 2026 06:41:48 +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.17; Tue, 21 Apr
 2026 01:41:48 -0500
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.17; Tue, 21 Apr
 2026 01:41:47 -0500
Received: from [10.252.147.171] (10.180.168.240) by satlexmb07.amd.com
 (10.181.42.216) with Microsoft SMTP Server id 15.2.2562.17 via Frontend
 Transport; Tue, 21 Apr 2026 01:41:46 -0500
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@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=xURz+Wp7TBUI4HY/F7dKhuoK1f7sZb0U9lu2WhgnIMJDNjz1PKAew6VyozdtlSUh9FMSnvaqRHNzObFW52xHFfjpdEzBE05cQORTKEdtrjFL7pLyom5OyqPbPBnE9pwcGiXjCLfLD32XHN0WHH0uOL16LbD6/QBmguxL4ziSVfvQ0TZ4qLhA594sX/vy6RVQDMEsTLDuue3HoyFrGySWM4geP/AfnI/UrnN3PKsX+98KojKIBCncjEx1EnBDmvVsU2zqkf+gxp7N+YRFP7GwVuC2J6+lPLnr/WP09M8q2VRLQ+iGCeRkYb+jMGJPGI1GIKxa0suDCLk76uKyI43qcQ==
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com;
 s=arcselector10001;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1;
 bh=EXtxGL3mNOR7yTJYPCO6B4KfUixMlSqaYU8wmwhUh4M=;
 b=MVC5R5TON03ptjCNspIvXNOJSeW6qDYyLzTNObt0aiYbJDQjJySMs7B3cVXBlMVHs7qzCgjP0OvbNlXWu7enevtD5SUpf6O8HUpJxHKFwDKQ/txykD/c/8tUkhM7E4fc4pKRvqFf3FfSkHFd3/f0bAw1PTdKuM+fpCeHZI+eIbDD++NMRx5ufwpTv/QoNgUcj+VT++tcr/IEeKZe6OXY7xsR0XBfc0rTF3mhbvtI6JfFea/4Tvukv2imdaMUSapjyZtSRWe3iCd0wMqWo54AcUYFKWTZhp9uRK3i664rtnQzp9DFXe+BcouiJtstkSJyG975PbTvEybolIIBSpdRbQ==
ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass (sender ip is
 165.204.84.17) smtp.rcpttodomain=arm.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=EXtxGL3mNOR7yTJYPCO6B4KfUixMlSqaYU8wmwhUh4M=;
 b=hwI12HjHulSY+gz159ZBhODP6GFiy50W8f9mpn5LSEj+d6JOrpJnTHqMzyJF/Y9KpVn+4gUKBGISKBsOKLYLch9jWk5RccGM9Hg/1rfblSClIOIoIMpYyagkRG5QZbz5HY/558uxH5q1H9rcsWb7Je9lawPQQInw+K4DwM8RKIE=
X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 165.204.84.17)
 smtp.mailfrom=amd.com; dkim=none (message not signed)
 header.d=none;dmarc=pass action=none header.from=amd.com;
Received-SPF: Pass (protection.outlook.com: domain of amd.com designates
 165.204.84.17 as permitted sender) receiver=protection.outlook.com;
 client-ip=165.204.84.17; helo=satlexmb08.amd.com; pr=C
Message-ID: <137bd391-926d-4047-a760-638f2e58b99f@amd.com>
Date: Tue, 21 Apr 2026 08:41:46 +0200
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH] device-tree: Improve hwdom memory allocation for DMA
To: Luca Fancellu <Luca.Fancellu@arm.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>
References: <20260417091155.39653-1-michal.orzel@amd.com>
 <412A9DF8-6F5C-402D-AEBD-88E6DE139E07@arm.com>
From: "Orzel, Michal" <michal.orzel@amd.com>
Content-Language: en-US
In-Reply-To: <412A9DF8-6F5C-402D-AEBD-88E6DE139E07@arm.com>
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: 8bit
X-EOPAttributedMessage: 0
X-MS-PublicTrafficType: Email
X-MS-TrafficTypeDiagnostic: SJ5PEPF000001CA:EE_|DS0PR12MB8562:EE_
X-MS-Office365-Filtering-Correlation-Id: 58c7a0d4-9313-4443-fe7d-08de9f71107b
X-MS-Exchange-SenderADCheck: 1
X-MS-Exchange-AntiSpam-Relay: 0
X-Microsoft-Antispam:
	BCL:0;ARA:13230040|1800799024|82310400026|36860700016|376014|22082099003|18002099003|56012099003;
X-Microsoft-Antispam-Message-Info:
	8IiOGSJHTkObOzKsWS6H/9WmEYJM1CVdGcFuKIRpM0KrrBpPF+9OCRDZaXDoHx9JL6QuzW6PpkZ00uuOqfZ/8Nw2OC2oN9dKw7nl5RRXUZjPpZItFo2RntKdM3Z2OgSqKCJ4lcgxWdN1KwuLesLIM4Dpmv3utS+7pbk9phpVXkqLlm0MCi4Z2wrPpPZpXJSm66d+OF7spjU4OGF2jFBwtYneEuihgGTmpwITIvZmNY1zOxrTGe2ZCAoHw9GFmXwzi0i1uKnyV7QOFvIhoP84hSf65NQfSuaekrb/Wsy4o4jQiJVRQvoAW6IXEESx1LWsydzsyHoyZbTu0hHrN12aheOhlNrIJowQQzOQQkOJREOP2rVWn2fWI6GRa1NjabANN0TObCg0RvTjAMtgzT7K2Sggl+/9X/h5ALuVoBlgBoaTcW+q25NcTg7e9CfV6zoMhCBb3fiHqElt+J6WhL1kCaGYh2Rh3zn1nXctnSduyyTB25Ea5lHH8lwijoPeH/7D4obSCZ0zup30w0ypeUZCr8l4A2YXkz1V+NzXDhs/M15wopbbQnNUJrw8PXz9X274/cvSz0vAf05knFNcmJxsOMImUKIys4ffhv/TYJmcN/B+JtcE+jcBJW6mPaJJEYpE1WPIAdwvamjM5n4ywzzWg83tzS6Dffj7XWtjknlNRHloDhwd4bK0O7gm3kPMfEN42LTMKyrK0lsZC3ByZcOUIIxlLzt29cxpA8H2oK0TeH8wkKbpSYPo2JGE6Sh5Tw73i5dTrPCYG0N3Dc1WuPSHHQ==
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)(36860700016)(376014)(22082099003)(18002099003)(56012099003);DIR:OUT;SFP:1101;
X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1
X-MS-Exchange-AntiSpam-MessageData-0:
	SmcPBV49rqBpTcfAUdCQthCHIVBp4PkoDg35AcLgpQpL2mbZJP2UprVEpVUozlozl1VMgn+cv9YCY36SX1K+s+ZzxTthh+PblF+sCPAhK9BdUAHGkQ/hufivDGSfrzM2S96LiOlW/GigUiqpnn5d9Xyq6flZ0mS8Upk0sQMrt43IjEwdIDXaIYIrLSVnhA/ZzMJ6cnIuXco4W0PfkFU3H1fLKRJqsctQQyR5nfjP2CZS03cEAtQhBpYF10gHYrDopWg8gbjKvt9YbFOaph1SE+ohsJuMgU63l6wFVHyOiru+sn9iXvhgM7lyjs5XDPTuusKtahYG4qKIEgDTXY9gco7AsYdNCbG2tAkpU2MjRpvYF8eR0L3dBCY/CPst/6yBdUHi5fU7Oy4V6VHjCsrHdLiuoQOqiRTSpsWEdjPe1RE9kqxC7hRi1PdbQ5XDxt2B
X-OriginatorOrg: amd.com
X-MS-Exchange-CrossTenant-OriginalArrivalTime: 21 Apr 2026 06:41:48.8761
 (UTC)
X-MS-Exchange-CrossTenant-Network-Message-Id: 58c7a0d4-9313-4443-fe7d-08de9f71107b
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:
	SJ5PEPF000001CA.namprd05.prod.outlook.com
X-MS-Exchange-CrossTenant-AuthAs: Anonymous
X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem
X-MS-Exchange-Transport-CrossTenantHeadersStamped: DS0PR12MB8562
X-purgate-ID: tlsNG-c201ff/1776753713-E09AD443-3D178CB2/0/0
X-purgate-type: clean
X-purgate-size: 1763



On 20/04/2026 16:54, Luca Fancellu wrote:
> Hi Michal,
> 
>> On 17 Apr 2026, at 10:11, Michal Orzel <michal.orzel@amd.com> wrote:
>>
>> When LLC coloring is enabled, the hardware domain gets memory from
>> host free regions rather than the fixed guest RAM banks.  The previous
>> code sorted these regions by descending size, which usually causes
>> high-address memory to be allocated first.
>>
>> All allocated memory could reside above 4 GB leaving DMA non-functional
>> for devices with limited addressing capabilities.
>>
>> Improve the handling as follows:
>> - Sort free regions by ascending address instead of descending size,
>>  so low-memory banks are allocated first,
>> - Skip banks smaller than 128 MB (or the total remaining allocation,
>>  whichever is less) until the first bank is placed, ensuring
>>  place_modules() has enough contiguous space,
>> - Extract the hardware domain allocation path into its own function
>>  (allocate_hwdom_memory) for clarity.
>>
>> Signed-off-by: Michal Orzel <michal.orzel@amd.com>
>> ---
>> xen/common/device-tree/domain-build.c | 152 ++++++++++++++++----------
>> 1 file changed, 96 insertions(+), 56 deletions(-)
> 
> It looks ok to me, the only thing is that if we have many smaller banks < 128 Mb before reaching
> one that is at least 128 Mb, we won’t allocate them and loose them forever.
> 
> It feels only a corner case so for me it’s ok
Yes, that's something documented in the commit msg, so if we ever face upon the
issue due to that we could revisit the implementation. For now, we haven't
observed any issues.

> 
> Reviewed-by: Luca Fancellu <luca.fancellu@arm.com <mailto:luca.fancellu@arm.com>>
Thanks.

~Michal

> 
> Cheers,
> Luca
> 
> 



From xen-devel-bounces@lists.xenproject.org Tue Apr 21 06:47:36 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 21 Apr 2026 06:47:36 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1288316.1568593 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wF4tP-0005Km-VI; Tue, 21 Apr 2026 06:47:31 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1288316.1568593; Tue, 21 Apr 2026 06:47: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 1wF4tP-0005Kf-QT; Tue, 21 Apr 2026 06:47:31 +0000
Received: by outflank-mailman (input) for mailman id 1288316;
 Tue, 21 Apr 2026 06:47: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 1wF4tO-0005Hs-2i
 for xen-devel@lists.xenproject.org; Tue, 21 Apr 2026 06:47:30 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wF4tL-00AVSJ-Q2
 for xen-devel@lists.xenproject.org; Tue, 21 Apr 2026 08:47:29 +0200
Received: from [10.42.69.7] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <jgross@suse.com>)
 id 69e71d70-2eae-0a2a0a5409dd-0a2a450788d4-44
 for <xen-devel@lists.xenproject.org>; Tue, 21 Apr 2026 08:47:29 +0200
Received: from [209.85.221.51] (helo=mail-wr1-f51.google.com)
 by tlsNG-ef75cf.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.1)
 (envelope-from <jgross@suse.com>)
 id 69e71d81-229c-0a2a45070019-d155dd33e0b4-3
 for <xen-devel@lists.xenproject.org>; Tue, 21 Apr 2026 08:47:29 +0200
Received: by mail-wr1-f51.google.com with SMTP id
 ffacd0b85a97d-43d0deb7ad5so3067316f8f.2
 for <xen-devel@lists.xenproject.org>; Mon, 20 Apr 2026 23:47:29 -0700 (PDT)
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
 ffacd0b85a97d-43fe4cb135asm39127698f8f.6.2026.04.20.23.47.27
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Mon, 20 Apr 2026 23:47:28 -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=google header.d=suse.com header.i="@suse.com" header.h="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=1776754049; x=1777358849; darn=lists.xenproject.org;
        h=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;
        bh=678q1i3pRlQ6ylqxWV10rzXOKtm/WiTRp9yCpjOlEiw=;
        b=D9KuhNdEEUqLc8eBtBtKijrcgid8zv5MjjEWmUvx9bdrx8JNdgSYVRGsjcaOeck9h9
         GFvDgOabcJ8jM6DOC57T/cedug7rywlmjNru2seQdp5ee4QUq6TgnXyuD4+SDDv6bg8V
         YG6Fnmv4RXcO8O81cMhPQbS7UpQJcXhMiDduN20BhWh+ONPuwDLdOyvFLun86eHdce5J
         kZOHAWY79EulLRfTBBVepUsCqh62tQL3JQpPe07IsV2EiS/QwENL6K8xjtU2TvYipHKr
         UDc3WmipyPvfseiiyL3SZLCWQdgHUGn2vcq8QZlE5zI4DkEQ6586ZpiVLjY/ZqnF7+2c
         NUAg==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20251104; t=1776754049; x=1777358849;
        h=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;
        bh=678q1i3pRlQ6ylqxWV10rzXOKtm/WiTRp9yCpjOlEiw=;
        b=MaoW96q5yR6CPAIa/xiUDJ2xawsW9c6ooE/7EC3akarIaEGvacmC/uxpA+0v1mU0Hg
         Rw5lbMGHjldPw8R3VVFngmazNySxp8rzqHc16SR8erp8QYtE4/hv+BbCgkb3VtPzu5Z+
         j+uUrZhGxn/LrnunIP2JL4e8p3rRrTyvKdDaxePEcYWO+XA9YQHnEJ455UbojHg3D8uD
         1hsrkQ6MX+OoxmTme0ZDSkLto+Q0xpy9FacalDzaKDLNucK2aYE3BzApKP6SdW6ZUuxD
         Xl0LNoq/9TVcw/fPsGv7N2BCNhOgG7mHNkVtFqmwZbfCZzVk/NP4BOkrRONsJLusZvtf
         mhEg==
X-Forwarded-Encrypted: i=1; AFNElJ9gwZUHbqDPZkooLVI26u/HAZ7rhRpDpjFo5OYTpCy1zhRZ9/y5K9zH3FvzU3N//pUCJku5hIjAwOU=@lists.xenproject.org
X-Gm-Message-State: AOJu0YyVIgUv/FkGlSD19SasW08ypTbSpleBM8tgDrNpAAw1xAxLZf2q
	jjHQSpFvxBSKAmTa1+U/xbYfpt5LqjVt2TumFHgY4+RJNpFQh6PnWmiSJATO0aLfkOO0yEAIUCl
	oZfM6gQc=
X-Gm-Gg: AeBDieutaGIRRBFk3V7RuLxa09FJ44jxvuMKgTQ5+0GCVMoOeeIlOf/GhTGWFWaE/hq
	QESUmWH6eTOKYY2twqxMQr3/o4Kx4km+jFZjDd9jY80DWET8pCje4bEjOcqfcv4uBVrUKVW8qNU
	dHJzfxa0UbtZ7KFweZAD1bwFOMNl/DATVQFIRcIxRU7JgBC4vFhNirwhNl8vcFSpBtlVQeiWouh
	EP4+HGJw5RLLYFcldr6duP2fZRHfL55WSPJ7Lo8fSqko9+crnWAH6YjQMbhTG+ATQdlB7fRcCps
	PZyQ/V97Mf1AgrQyOQJNXFUjTamaR8yaVBSsGzDCXcAjTXr6IW2vviUj/+DsdsMOZTdUcdPBJHo
	9NM5urejHUI5cTF8oeNATMnvE3DONC/70W1559oOmZNRQTJKe70ZxCOj5BYcQz2xW18Rq4W5VU5
	D2k+mHL7iRnP3+/Yfn5/oiyFOBZnUuXNmghfBMV+JtqjiOFl6oCEjTFhFBM1lMbsteUUqrjv/jT
	/2xHmmhvlC2p+aqmO+xEXjboRGVTd4rPp2LxPIBAZMYl6ECkK7gA99bl93mH424
X-Received: by 2002:a05:6000:186c:b0:43d:73de:abce with SMTP id ffacd0b85a97d-43fe3e0a96cmr25901898f8f.32.1776754048447;
        Mon, 20 Apr 2026 23:47:28 -0700 (PDT)
Message-ID: <4e887b1a-dd26-4a9e-b717-6b6760dc97d4@suse.com>
Date: Tue, 21 Apr 2026 08:47:27 +0200
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH 1/8] tools/xenstored: allow domU to get own features
To: Jason Andryuk <jason.andryuk@amd.com>, 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.pau@citrix.com>, Stefano Stabellini <sstabellini@kernel.org>
References: <20260313074751.2904215-1-jgross@suse.com>
 <20260313074751.2904215-2-jgross@suse.com>
 <d0f9b670-49e1-4e06-bfdc-4847db790cbc@amd.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: <d0f9b670-49e1-4e06-bfdc-4847db790cbc@amd.com>
Content-Type: multipart/signed; micalg=pgp-sha256;
 protocol="application/pgp-signature";
 boundary="------------gZQevFdlNm10dsOQUBwVI3vL"
X-purgate-ID: tlsNG-ef75cf/1776754049-AF374C48-138582C5/0/0
X-purgate-type: clean
X-purgate-size: 11249

This is an OpenPGP/MIME signed message (RFC 4880 and 3156)
--------------gZQevFdlNm10dsOQUBwVI3vL
Content-Type: multipart/mixed; boundary="------------ZcIBfm0WIf1jAdgox2KmiBmc";
 protected-headers="v1"
From: =?UTF-8?B?SsO8cmdlbiBHcm/Dnw==?= <jgross@suse.com>
To: Jason Andryuk <jason.andryuk@amd.com>, 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.pau@citrix.com>, Stefano Stabellini <sstabellini@kernel.org>
Message-ID: <4e887b1a-dd26-4a9e-b717-6b6760dc97d4@suse.com>
Subject: Re: [PATCH 1/8] tools/xenstored: allow domU to get own features
References: <20260313074751.2904215-1-jgross@suse.com>
 <20260313074751.2904215-2-jgross@suse.com>
 <d0f9b670-49e1-4e06-bfdc-4847db790cbc@amd.com>
In-Reply-To: <d0f9b670-49e1-4e06-bfdc-4847db790cbc@amd.com>
Autocrypt-Gossip: 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
 Y2ggPGpiZXVsaWNoQHN1c2UuY29tPsJ3BBMRAgAgBQJZN5xEAhsDBgsJCAcDAgQVAggDBBYC
 AwECHgECF4AAIQkQoDSui/t3IH4WIQQ+pJkfkcoLMCa4X6CgNK6L+3cgfgn7AJ9DmMd0SMJE
 ePbc7/m22D2v04iu7ACffXTdZQhNl557tJuDXZSBxDmW/tLOwU0EWTecRBAIAIK5OMKMU5R2
 Lk2bbjgX7vyQuCFFyKf9rC/4itNwhYWFSlKzVj3WJBDsoi2KvPm7AI+XB6NIkNAkshL5C0kd
 pcNd5Xo0jRR5/WE/bT7LyrJ0OJWS/qUit5eNNvsO+SxGAk28KRa1ieVLeZi9D03NL0+HIAtZ
 tecfqwgl3Y72UpLUyt+r7LQhcI/XR5IUUaD4C/chB4Vq2QkDKO7Q8+2HJOrFIjiVli4lU+Sf
 OBp64m//Y1xys++Z4ODoKh7tkh5DxiO3QBHG7bHK0CSQsJ6XUvPVYubAuy1XfSDzSeSBl//C
 v78Fclb+gi9GWidSTG/4hsEzd1fY5XwCZG/XJJY9M/sAAwUH/09Ar9W2U1Qm+DwZeP2ii3Ou
 14Z9VlVVPhcEmR/AFykL9dw/OV2O/7cdi52+l00reUu6Nd4Dl8s4f5n8b1YFzmkVVIyhwjvU
 jxtPyUgDOt6DRa+RaDlXZZmxQyWcMv2anAgYWGVszeB8Myzsw8y7xhBEVV1S+1KloCzw4V8Z
 DSJrcsZlyMDoiTb7FyqxwQnM0f6qHxWbmOOnbzJmBqpNpFuDcz/4xNsymJylm6oXiucHQBAP
 Xb/cE1YNHpuaH4SRhIxwQilCYEznWowQphNAbJtEKOmcocY7EbSt8VjXTzmYENkIfkrHRyXQ
 dUm5AoL51XZljkCqNwrADGkTvkwsWSvCSQQYEQIACQUCWTecRAIbDAAKCRCgNK6L+3cgfuef
 AJ9wlZQNQUp0KwEf8Tl37RmcxCL4bQCcC5alCSMzUBJ5DBIcR4BY+CyQFAs=

--------------ZcIBfm0WIf1jAdgox2KmiBmc
Content-Type: multipart/mixed; boundary="------------22L0ZWjDSJ80g9M8EOOj0w4S"

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

T24gMjAuMDQuMjYgMjM6MjgsIEphc29uIEFuZHJ5dWsgd3JvdGU6DQo+IE9uIDIwMjYtMDMt
MTMgMDM6NDcsIEp1ZXJnZW4gR3Jvc3Mgd3JvdGU6DQo+PiBFeHBhbmQgdGhlIFhTX0dFVF9G
RUFUVVJFIGNvbW1hbmQgdG8gYWxsb3cgYW4gdW5wcml2aWxlZ2VkIGRvbWFpbiB0bw0KPj4g
cmVhZCBpdHMgb3duIGF2YWlsYWJsZSBmZWF0dXJlcy4gV2hpbGUgdGhpcyBpbmZvcm1hdGlv
biBpcyBhdmFpbGFibGUNCj4+IHZpYSB0aGUgcmVsYXRlZCBmaWVsZCBpbiB0aGUgc2hhcmVk
IHBhZ2UgdXNlZCBmb3IgY29tbXVuaWNhdGlvbiB3aXRoDQo+PiBYZW5zdG9yZSwgdXNlciBs
YW5kIGNvbXBvbmVudHMgb2YgdGhlIGRvbVUgd291bGQgbmVlZCBzcGVjaWFsIHN1cHBvcnQN
Cj4+IGluIHRoZSByZWxhdGVkIGtlcm5lbCBkcml2ZXIgdG8gb2J0YWluIHRoYXQgZGF0YS4g
V2l0aCBzdXBwb3J0aW5nIHRoZQ0KPj4gWFNfR0VUX0ZFQVRVUkUgZm9yIHRoYXQgcHVycG9z
ZSwgb25seSBhbiB1cCB0byBkYXRlIGxpYnhlbnN0b3JlIGlzDQo+PiBuZWVkZWQuDQo+Pg0K
Pj4gU2lnbmVkLW9mZi1ieTogSnVlcmdlbiBHcm9zcyA8amdyb3NzQHN1c2UuY29tPg0KPj4g
LS0tDQo+PiDCoCBkb2NzL21pc2MveGVuc3RvcmUudHh0wqDCoCB8wqAgOSArKysrKy0tLS0N
Cj4+IMKgIHRvb2xzL3hlbnN0b3JlZC9jb3JlLmPCoMKgIHzCoCAzICstLQ0KPj4gwqAgdG9v
bHMveGVuc3RvcmVkL2RvbWFpbi5jIHwgMTYgKysrKysrKysrKystLS0tLQ0KPj4gwqAgMyBm
aWxlcyBjaGFuZ2VkLCAxNyBpbnNlcnRpb25zKCspLCAxMSBkZWxldGlvbnMoLSkNCj4+DQo+
PiBkaWZmIC0tZ2l0IGEvZG9jcy9taXNjL3hlbnN0b3JlLnR4dCBiL2RvY3MvbWlzYy94ZW5z
dG9yZS50eHQNCj4+IGluZGV4IDRlY2NiYzJmN2YuLjhhMmMxOWQxMTYgMTAwNjQ0DQo+PiAt
LS0gYS9kb2NzL21pc2MveGVuc3RvcmUudHh0DQo+PiArKysgYi9kb2NzL21pc2MveGVuc3Rv
cmUudHh0DQo+PiBAQCAtNDI3LDEzICs0MjcsMTQgQEAgU0VUX0ZFQVRVUkXCoMKgwqDCoMKg
wqDCoCA8ZG9taWQ+fDx2YWx1ZT58DQo+PiDCoMKgwqDCoMKgIHRvIHNldCBhIGJpdCBmb3Ig
YSBmZWF0dXJlIG5vdCBiZWluZyBzdXBwb3J0ZWQgYnkgdGhlIHJ1bm5pbmcNCj4+IMKgwqDC
oMKgwqAgWGVuc3RvcmUgd2lsbCBiZSBkZW5pZWQuIFByb3ZpZGluZyBubyA8ZG9taWQ+IHdp
dGggdGhlDQo+PiDCoMKgwqDCoMKgIEdFVF9GRUFUVVJFIGNvbW1hbmQgd2lsbCByZXR1cm4g
dGhlIGZlYXR1cmVzIHdoaWNoIGFyZSBzdXBwb3J0ZWQNCj4+IC3CoMKgwqAgYnkgWGVuc3Rv
cmUuDQo+PiArwqDCoMKgIGJ5IFhlbnN0b3JlIGZvciB0aGUgZG9tYWluIGlzc3VpbmcgdGhl
IGNvbW1hbmQuDQo+PiDCoMKgwqDCoMKgIFNFVF9GRUFUVVJFIGZvciBhIGRvbWFpbiB3aWxs
IGJlIHJlamVjdGVkIGFmdGVyIHRoZSBJTlRST0RVQ0UNCj4+IC3CoMKgwqAgY29tbWFuZCBm
b3IgdGhpcyBkb21haW4gaGFzIGJlZW4gc2VudCB0byB4ZW5zdG9yZWQuDQo+PiArwqDCoMKg
IGNvbW1hbmQgZm9yIHRoaXMgZG9tYWluIGhhcyBiZWVuIHNlbnQgdG8geGVuc3RvcmVkLiBU
aGlzIGhhcyB0aGUNCj4+ICvCoMKgwqAgZWZmZWN0IHRoYXQgZG9tMCB3aWxsIGFsd2F5cyBo
YXZlIGFsbCBzdXBwb3J0ZWQgZmVhdHVyZXMgZW5hYmxlZC4NCj4gDQo+IFRoaXMgc3RhdGVt
ZW50Li4uDQo+IA0KPj4gLS0tIGEvdG9vbHMveGVuc3RvcmVkL2RvbWFpbi5jDQo+PiArKysg
Yi90b29scy94ZW5zdG9yZWQvZG9tYWluLmMNCj4+IEBAIC0xMjkzLDE3ICsxMjkzLDIzIEBA
IGludCBkb19nZXRfZmVhdHVyZShjb25zdCB2b2lkICpjdHgsIHN0cnVjdCBjb25uZWN0aW9u
IA0KPj4gKmNvbm4sDQo+PiDCoMKgwqDCoMKgIGNoYXIgKnJlc3VsdDsNCj4+IMKgwqDCoMKg
wqAgbl9hcmdzID0gZ2V0X3N0cmluZ3MoaW4sIHZlYywgQVJSQVlfU0laRSh2ZWMpKTsNCj4+
IC3CoMKgwqAgaWYgKG5fYXJncyA+IDEpDQo+PiAtwqDCoMKgwqDCoMKgwqAgcmV0dXJuIEVJ
TlZBTDsNCj4+IC3CoMKgwqAgaWYgKG5fYXJncyA9PSAxKSB7DQo+PiArwqDCoMKgIGlmICgh
bl9hcmdzKSB7DQo+PiArwqDCoMKgwqDCoMKgwqAgZmVhdHVyZXMgPSBjb25uLT5kb21haW4g
PyBjb25uLT5kb21haW4tPmZlYXR1cmVzDQo+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg
wqDCoMKgwqDCoMKgwqAgOiBYRU5TVE9SRV9GRUFUVVJFUzsNCj4gDQo+IC4uLiBjb3ZlciB0
aGlzLCB5ZXM/wqAgV2l0aCBhIHN0dWJkb20sIGRvbTAgd2lsbCBoYXZlIGNvbm4tPmRvbWFp
bi4gY29ubi0+ZG9tYWluLSANCj4gID5mZWF0dXJlcyBpcyBpbml0aWFsaXplZCB0byBYRU5T
VE9SRV9GRUFUVVJFUyBhbmQgY2Fubm90IGNoYW5nZS7CoCBQcm92aWRlZCB0aGF0IA0KPiBp
cyBjb3JyZWN0Og0KDQpUaGlzIGlzIGNvcnJlY3QuDQoNCj4gDQo+IFJldmlld2VkLWJ5OiBK
YXNvbiBBbmRyeXVrIDxqYXNvbi5hbmRyeXVrQGFtZC5jb20+DQoNClRoYW5rcywNCg0KDQpK
dWVyZ2VuDQoNCg==
--------------22L0ZWjDSJ80g9M8EOOj0w4S
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-----

--------------22L0ZWjDSJ80g9M8EOOj0w4S--

--------------ZcIBfm0WIf1jAdgox2KmiBmc--

--------------gZQevFdlNm10dsOQUBwVI3vL
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/Ey8FAmnnHX8FAwAAAAAACgkQsN6d1ii/Ey/2
Pgf+N/w3KQc5a5gg/4WEdn6VFUTwXynKccOv+R6YQREDWEib6ZabYJWmBiHT0ASH3lC7w8Uo8Fpf
mQQpGriaLne3Cl02SSgJAmNd+bF7M/2k8BLt3wqdTzxYxVtkoTyq41e+ITSkaeQjCF663qZNqNqf
JBF2xA2cxUtRybsTP+jrX24jfYVZkKTYN7/C2U+Y+iJSXfvbq/pCekH51ReRVge+VcCFmRmUmp+r
dbGWKdpiLNFHvwD6S+gEPoOIRXIUErCKlM8f3DoeAx65Qs9Q6WUfzjWs8KdkhhciYe9wiO+r36dZ
/4/UaseQxBqZMOsAxTReYyGfZs9FhKasNef0py5zWw==
=9W1+
-----END PGP SIGNATURE-----

--------------gZQevFdlNm10dsOQUBwVI3vL--


From xen-devel-bounces@lists.xenproject.org Tue Apr 21 06:54:46 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 21 Apr 2026 06:54:46 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1288325.1568601 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wF50K-0006um-K0; Tue, 21 Apr 2026 06:54:40 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1288325.1568601; Tue, 21 Apr 2026 06: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 1wF50K-0006uf-Gc; Tue, 21 Apr 2026 06:54:40 +0000
Received: by outflank-mailman (input) for mailman id 1288325;
 Tue, 21 Apr 2026 06:54:39 +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 1wF50J-0006uZ-18
 for xen-devel@lists.xenproject.org; Tue, 21 Apr 2026 06:54:39 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wF50H-006Awq-Rb
 for xen-devel@lists.xenproject.org; Tue, 21 Apr 2026 08:54:37 +0200
Received: from [10.42.69.4] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <jgross@suse.com>)
 id 69e71f28-bab6-0a2a0a5309dd-0a2a4504b3a4-22
 for <xen-devel@lists.xenproject.org>; Tue, 21 Apr 2026 08:54:37 +0200
Received: from [209.85.128.42] (helo=mail-wm1-f42.google.com)
 by tlsNG-ebf023.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.1)
 (envelope-from <jgross@suse.com>)
 id 69e71f2d-1dec-0a2a45040019-d155802adca6-3
 for <xen-devel@lists.xenproject.org>; Tue, 21 Apr 2026 08:54:37 +0200
Received: by mail-wm1-f42.google.com with SMTP id
 5b1f17b1804b1-48909558b3aso29325935e9.0
 for <xen-devel@lists.xenproject.org>; Mon, 20 Apr 2026 23:54:37 -0700 (PDT)
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-48a55dc9f58sm60546085e9.6.2026.04.20.23.54.36
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Mon, 20 Apr 2026 23:54: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=google header.d=suse.com header.i="@suse.com" header.h="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=1776754477; x=1777359277; darn=lists.xenproject.org;
        h=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;
        bh=z1bx3gqStCmaMMpTQ7cTWC0AxlpsOrrdhShw0XEwbUU=;
        b=JYfmDHUJYFyNw+UnFGo9hf0DDXqNnAS4KOs6CMmj9FGlUaiNAxZCBZWVJj4RdwtULP
         KoLo0vTwTaNwIeUrcCzwjEegjsBc6j1bsQFJUQWDOblcow5ghBOhK2AFxeTgtiq1Ovky
         Y+kjxtDFIG3y9t2SwR3dPcMgXsB0HrQv9FD1fHS5Gfiv9idHOAVUtvG9r6D9815dq7v0
         IAksVJPrASHZjkxQPjt7auXZRlYil082dRm3ao/tMm6BQdB9MVIyz5Ae0RAF9s+h/0bj
         582QFvcXy+bUmohCGlefkflBG4rNwVvx3TcNKPAXVe7PZwk2c706BdM9wXVQ3Ko/zB/j
         FbJg==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20251104; t=1776754477; x=1777359277;
        h=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;
        bh=z1bx3gqStCmaMMpTQ7cTWC0AxlpsOrrdhShw0XEwbUU=;
        b=CEhcTbP793vdTi7b6k8OFXJk28Fn5ZBjVSS7q/O/IBnReAv/FznSfJNcgjWW5zy4xp
         yWXokNhBQc7Suso1+yBF5Bvgh/P1yy9RfKl8Xe9NOqZYuir1JK6GjX3gL4w2tr7Zx/fz
         bscQKq0ptLzX4DGYhbFD+K+RRaz5/M0ZkYKQTorW8tpxWiGpsXKCiOudptJ+0NdnGd8M
         ajzcktTXajML3d49pbuSz5TjFxZOaFDybSAldYnsP1aHkP1XiNRdpaZKiuE1hCFkojtX
         yfasr9OMIonEf0/Wo0Q8Mf3jrfVqoL0F5gQ7mKWbrvNyu9CRuS1Q9IWRnC1x4sGexyfS
         R00A==
X-Forwarded-Encrypted: i=1; AFNElJ9CNWBaWPtYbIaXOHqjy6urnAWXmbMp2kT8qwEAckIfSGl5aW3WlOx8aMy5ppORbRSvH7qIznZFjyo=@lists.xenproject.org
X-Gm-Message-State: AOJu0YyQ2wxXbgQP4mCKMNHEN9UcgUliy2grZVcXXNL+8i44P1D6dcCm
	CKFpH0PsuVGUdri4Q9GJT0OQfrta/aVtw5F9nnFWJhgYFMlrwzVlGAWtp3LBjHxxgFU=
X-Gm-Gg: AeBDievkWHA8ZzhCCNu1NDke7IW1jkvl1Lyi8kZ/fIiR7wGslh9Ijk+c+kbPWwRecBL
	ewLTaYqkXq8v90/6Twch1JrYl5RKxP7YZXSYMcbpr8IiI/vzP6GXTAYr9QSeNgxZq5ta8FAjVEn
	FVjIXd5aBdWZmVP6X9zNYIgLTBNHj1AVYwYGNcyr/qi7FxTMj9eRRgUFfq+7yVhHRjuN4itVpFD
	1TROWDWwlDsw3fhLgdLS6D0iXfaBDBYtdmokoe19yPnLz1K7PiRupzLHBmORvkO8UC/XZcgzfso
	AI34266pct9KKSd2LcZpOEiDUYq1MfYOy61d3sxGoNoCUOij1VyVFMapfAWng838LTlJdXbw3wd
	9Qv2u5A9WEgBanwtNSQnnCWJAm/SB6fBPLfJlmSBGxEn2rQpaTKA71toBomzDLYtGBqrVxlVze3
	vuXalaoNVuXn+137NSUgNrHf6tncNTimwSCgZFC4Nr9Hl8cstul1tUTeuzO+0M1EFMzFsuocFrj
	kCp2VZVUjfCiAMHVXcgOP+6qFqxhIGRE2HDX88mVROYqus86N1jgYrD5VMn/aDm
X-Received: by 2002:a05:600d:8451:b0:485:4388:3492 with SMTP id 5b1f17b1804b1-488fb743c43mr207095345e9.11.1776754477019;
        Mon, 20 Apr 2026 23:54:37 -0700 (PDT)
Message-ID: <ccf95e11-03f9-4b76-98b3-a62b33a8fc90@suse.com>
Date: Tue, 21 Apr 2026 08:54:36 +0200
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH 3/8] tools/libs/store: add support to use watches with a
 depth parameter
To: Jason Andryuk <jason.andryuk@amd.com>, xen-devel@lists.xenproject.org
Cc: Anthony PERARD <anthony.perard@vates.tech>, Julien Grall <julien@xen.org>
References: <20260313074751.2904215-1-jgross@suse.com>
 <20260313074751.2904215-4-jgross@suse.com>
 <75667f07-b997-4bba-a905-9c5d80e8ba0c@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: <75667f07-b997-4bba-a905-9c5d80e8ba0c@amd.com>
Content-Type: multipart/signed; micalg=pgp-sha256;
 protocol="application/pgp-signature";
 boundary="------------ZSWoV6RU9DtjzB3DRNM0QY8R"
X-purgate-ID: tlsNG-ebf023/1776754477-4BF6D3FF-DAC710BC/0/0
X-purgate-type: clean
X-purgate-size: 9627

This is an OpenPGP/MIME signed message (RFC 4880 and 3156)
--------------ZSWoV6RU9DtjzB3DRNM0QY8R
Content-Type: multipart/mixed; boundary="------------Px9KkMhQVrNoGzHNqVfi3e1G";
 protected-headers="v1"
From: Juergen Gross <jgross@suse.com>
To: Jason Andryuk <jason.andryuk@amd.com>, xen-devel@lists.xenproject.org
Cc: Anthony PERARD <anthony.perard@vates.tech>, Julien Grall <julien@xen.org>
Message-ID: <ccf95e11-03f9-4b76-98b3-a62b33a8fc90@suse.com>
Subject: Re: [PATCH 3/8] tools/libs/store: add support to use watches with a
 depth parameter
References: <20260313074751.2904215-1-jgross@suse.com>
 <20260313074751.2904215-4-jgross@suse.com>
 <75667f07-b997-4bba-a905-9c5d80e8ba0c@amd.com>
In-Reply-To: <75667f07-b997-4bba-a905-9c5d80e8ba0c@amd.com>

--------------Px9KkMhQVrNoGzHNqVfi3e1G
Content-Type: multipart/mixed; boundary="------------oNpgzHj051dAB4qkUxhRMpLI"

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

T24gMjAuMDQuMjYgMjM6MzAsIEphc29uIEFuZHJ5dWsgd3JvdGU6DQo+IE9uIDIwMjYtMDMt
MTMgMDM6NDcsIEp1ZXJnZW4gR3Jvc3Mgd3JvdGU6DQo+PiBBZGQgYSBuZXcgeHNfd2F0Y2hf
ZGVwdGgoKSBmdW5jdGlvbiB0byBsaWJ4ZW5zdG9yZSBhbGxvd2luZyB0byBsaW1pdA0KPj4g
dGhlIHNjb3BlIG9mIGEgWGVuc3RvcmUgd2F0Y2guIEl0IGNhbiBiZSB1c2VkIG9ubHkgaW4g
Y2FzZSBYZW5zdG9yZSBpcw0KPj4gc3VwcG9ydGluZyB0aGUgWEVOU1RPUkVfU0VSVkVSX0ZF
QVRVUkVfV0FUQ0hERVBUSCBmZWF0dXJlLg0KPj4NCj4+IEZvciBjb252ZW5pZW5jZSBhZGQg
YSB4c193YXRjaF90cnlfZGVwdGgoKSB3cmFwcGVyLCB3aGljaCB3aWxsIGNhbGwNCj4+IHhz
X3dhdGNoX2RlcHRoKCkgaWYgc3VwcG9ydGVkIGFuZCB4c193YXRjaCgpIG90aGVyd2lzZS4N
Cj4+DQo+PiBDYWNoZSB0aGUgc3VwcG9ydGVkIGZlYXR1cmVzIG9mIFhlbnN0b3JlIGluIG9y
ZGVyIG5vdCBoYXZpbmcgdG8gZ2V0DQo+PiB0aGVtIGZyb20gWGVuc3RvcmUgZm9yIGVhY2gg
Y2FsbCBvZiBvbmUgb2YgdGhlIG5ldyBmdW5jdGlvbnMuDQo+Pg0KPj4gU2lnbmVkLW9mZi1i
eTogSnVlcmdlbiBHcm9zcyA8amdyb3NzQHN1c2UuY29tPg0KPiANCj4+IEBAIC05ODQsMzcg
Kzk4NCwyOSBAQCBib29sIHhzX3Jlc3RyaWN0KHN0cnVjdCB4c19oYW5kbGUgKmgsIHVuc2ln
bmVkIGRvbWlkKQ0KPj4gwqDCoMKgwqDCoCByZXR1cm4gZmFsc2U7DQo+PiDCoCB9DQo+PiAt
LyogV2F0Y2ggYSBub2RlIGZvciBjaGFuZ2VzIChwb2xsIG9uIGZkIHRvIGRldGVjdCwgb3Ig
Y2FsbCByZWFkX3dhdGNoKCkpLg0KPj4gLSAqIFdoZW4gdGhlIG5vZGUgKG9yIGFueSBjaGls
ZCkgY2hhbmdlcywgZmQgd2lsbCBiZWNvbWUgcmVhZGFibGUuDQo+PiAtICogVG9rZW4gaXMg
cmV0dXJuZWQgd2hlbiB3YXRjaCBpcyByZWFkLCB0byBhbGxvdyBtYXRjaGluZy4NCj4+IC0g
KiBSZXR1cm5zIGZhbHNlIG9uIGZhaWx1cmUuDQo+PiAtICovDQo+PiAtYm9vbCB4c193YXRj
aChzdHJ1Y3QgeHNfaGFuZGxlICpoLCBjb25zdCBjaGFyICpwYXRoLCBjb25zdCBjaGFyICp0
b2tlbikNCj4+ICtzdGF0aWMgYm9vbCB4c193YXRjaF9oZWxwZXIoc3RydWN0IHhzX2hhbmRs
ZSAqaCkNCj4+IMKgIHsNCj4+IC3CoMKgwqAgc3RydWN0IHhzZF9zb2NrbXNnIG1zZyA9IHsg
LnR5cGUgPSBYU19XQVRDSCB9Ow0KPj4gLcKgwqDCoCBzdHJ1Y3QgaW92ZWMgaW92WzNdOw0K
Pj4gLQ0KPj4gwqAgI2lmZGVmIFVTRV9QVEhSRUFEDQo+PiArwqDCoMKgIHNpZ3NldF90IHNl
dCwgb2xkX3NldDsNCj4+ICvCoMKgwqAgcHRocmVhZF9hdHRyX3QgYXR0cjsNCj4+ICvCoMKg
wqAgc3RhdGljIHNpemVfdCBzdGFja19zaXplOw0KPj4gKyNpZmRlZiBVU0VfRExTWU0NCj4+
ICvCoMKgwqAgc2l6ZV90ICgqZ2V0c3opKHB0aHJlYWRfYXR0cl90ICphdHRyKTsNCj4+ICsj
ZW5kaWYNCj4+ICsNCj4+IMKgICNkZWZpbmUgREVGQVVMVF9USFJFQURfU1RBQ0tTSVpFICgx
NiAqIDEwMjQpDQo+PiDCoCAvKiBOZXRCU0QgZG9lc24ndCBoYXZlIFBUSFJFQURfU1RBQ0tf
TUlOLiAqLw0KPj4gwqAgI2lmbmRlZiBQVEhSRUFEX1NUQUNLX01JTg0KPj4gwqAgIyBkZWZp
bmUgUFRIUkVBRF9TVEFDS19NSU4gMA0KPj4gwqAgI2VuZGlmDQo+PiAtI2RlZmluZSBSRUFE
X1RIUkVBRF9TVEFDS1NJWkXCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC
oMKgIFwNCj4+IC3CoMKgwqAgKChERUZBVUxUX1RIUkVBRF9TVEFDS1NJWkUgPCBQVEhSRUFE
X1NUQUNLX01JTikgP8KgwqDCoMKgIFwNCj4+ICsjZGVmaW5lIFJFQURfVEhSRUFEX1NUQUNL
U0laRcKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIFwNCj4+ICvCoMKg
wqAgKChERUZBVUxUX1RIUkVBRF9TVEFDS1NJWkUgPCBQVEhSRUFEX1NUQUNLX01JTikgP8Kg
wqDCoCBcDQo+PiDCoMKgwqDCoMKgwqAgUFRIUkVBRF9TVEFDS19NSU4gOiBERUZBVUxUX1RI
UkVBRF9TVEFDS1NJWkUpDQo+PiDCoMKgwqDCoMKgIC8qIFdlIGR5bmFtaWNhbGx5IGNyZWF0
ZSBhIHJlYWRlciB0aHJlYWQgb24gZGVtYW5kLiAqLw0KPj4gwqDCoMKgwqDCoCBtdXRleF9s
b2NrKCZoLT5yZXF1ZXN0X211dGV4KTsNCj4+IMKgwqDCoMKgwqAgaWYgKCFoLT5yZWFkX3Ro
cl9leGlzdHMpIHsNCj4+IC3CoMKgwqDCoMKgwqDCoCBzaWdzZXRfdCBzZXQsIG9sZF9zZXQ7
DQo+PiAtwqDCoMKgwqDCoMKgwqAgcHRocmVhZF9hdHRyX3QgYXR0cjsNCj4+IC3CoMKgwqDC
oMKgwqDCoCBzdGF0aWMgc2l6ZV90IHN0YWNrX3NpemU7DQo+PiAtI2lmZGVmIFVTRV9ETFNZ
TQ0KPj4gLcKgwqDCoMKgwqDCoMKgIHNpemVfdCAoKmdldHN6KShwdGhyZWFkX2F0dHJfdCAq
YXR0cik7DQo+PiAtI2VuZGlmDQo+IA0KPiBBRkFJQ1QsIHRoZXJlIGlzIG5vIHBhcnRpY3Vs
YXIgcmVhc29uIHRvIGNoYW5nZSB0aGUgc2NvcGUgb2YgdGhlc2UgdmFyaWFibGVzLiAgDQo+
IEFtIEkgbWlzc2luZyBzb21ldGhpbmc/DQoNClRoYXQgd2Fzbid0IG9uIHB1cnBvc2UuDQoN
ClNlZW1zIHRvIGJlIGFuIGFydGlmYWN0IG9mIGNyZWF0aW5nIHRoZSBuZXcgeHNfd2F0Y2hf
aGVscGVyKCkgZnVuY3Rpb24uDQoNCkknbGwgZml4IHRoYXQgYW5kIHNlbmQgYSBWMi4NCg0K
PiANCj4gRXZlcnl0aGluZyBlbHNlIGxvb2tzIG9rYXkuDQoNClRoYW5rcywNCg0KDQpKdWVy
Z2VuDQo=
--------------oNpgzHj051dAB4qkUxhRMpLI
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-----

--------------oNpgzHj051dAB4qkUxhRMpLI--

--------------Px9KkMhQVrNoGzHNqVfi3e1G--

--------------ZSWoV6RU9DtjzB3DRNM0QY8R
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/Ey8FAmnnHywFAwAAAAAACgkQsN6d1ii/Ey8W
cgf/XZ2geommsOghRx9USclumyJ9nIkf7P2hf89F3urJHR7I5ZSh49n8Wwc+Gn9W8vVBg1/KhgQ2
VJKKKcp4K9RYd6qeZX/4EgTQIrYx2zlQwnJoLoOBbomgLIxAnPPRU5QGCrMNeghQ1+jcloZe1Fbb
J0o1OCWyOUy9XquGrzTWcebq2E8XeFH//XP9JNnRHQGCoXu7eLA2LpY3/OCD5Ecjh+VbTzsu5HDx
OQlDcjynNOlcXXm4peImiy/oDsTBaW7kjoye1TtiUGzqGK4Wki7ZxM0ITovwCaYPsuB8hjfQccdL
ZAWmMU1MapYo0T4fHbc7FIkEzGunYpL3B9VOkN4sMA==
=cqdc
-----END PGP SIGNATURE-----

--------------ZSWoV6RU9DtjzB3DRNM0QY8R--


From xen-devel-bounces@lists.xenproject.org Tue Apr 21 06:59:11 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 21 Apr 2026 06:59:11 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1288336.1568609 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wF54g-0007sh-6v; Tue, 21 Apr 2026 06:59:10 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1288336.1568609; Tue, 21 Apr 2026 06:59: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 1wF54g-0007sa-41; Tue, 21 Apr 2026 06:59:10 +0000
Received: by outflank-mailman (input) for mailman id 1288336;
 Tue, 21 Apr 2026 06:59:08 +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 1wF54e-0007s2-Hv
 for xen-devel@lists.xenproject.org; Tue, 21 Apr 2026 06:59:08 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wF54d-002VNe-Up
 for xen-devel@lists.xenproject.org; Tue, 21 Apr 2026 08:59:07 +0200
Received: from [10.42.69.6] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <jgross@suse.com>)
 id 69e7202e-5cb7-0a2a0a5109dd-0a2a45068724-36
 for <xen-devel@lists.xenproject.org>; Tue, 21 Apr 2026 08:59:07 +0200
Received: from [209.85.128.52] (helo=mail-wm1-f52.google.com)
 by tlsNG-16d1c6.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.1)
 (envelope-from <jgross@suse.com>)
 id 69e71f87-7371-0a2a45060019-d1558034e17c-3
 for <xen-devel@lists.xenproject.org>; Tue, 21 Apr 2026 08:56:07 +0200
Received: by mail-wm1-f52.google.com with SMTP id
 5b1f17b1804b1-488a8ca4aadso52544505e9.3
 for <xen-devel@lists.xenproject.org>; Mon, 20 Apr 2026 23:56:07 -0700 (PDT)
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-4891c08faffsm258430455e9.1.2026.04.20.23.56.06
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Mon, 20 Apr 2026 23:56: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=google header.d=suse.com header.i="@suse.com" header.h="In-Reply-To:Autocrypt:From:Content-Language:References:Cc:To:Subject:User-Agent:MIME-Version:Date:Message-ID"
Authentication-Results: eu.smtp.expurgate.cloud; dkim=pass header.s=google header.d=suse.com header.i="@suse.com" header.h="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=1776754567; x=1777359367; darn=lists.xenproject.org;
        h=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;
        bh=eWPTdQl1i0q4+p+cVqkfBhVtFITjzGn1HuzqhzG8Rzs=;
        b=dhDa2mueB/PLaAuwQCpl7glgkds0szm5sizSji3Rc2GCE3lXdjz2CN5islTFxm+8VT
         OkVYXecDdW23fRlqOecdMEOdWNHzIHMrjtV6ng4htQKqONi/pxq6D15gvRmjFmw+erpK
         lIjgrNBoF8zHtkbNEwDpnVHFWxE4QEY1GGnaE2el+dHh50DcAyedQJjaoPOpnuDu8gk5
         TNmLVRhtGqlaygMlwZnqiWJmN2cVr74MZihb4nQQj/MI8eymX48+cSd9B1zVyg+WTaPe
         RAzxYSatgTsyJN6Td9DatoM01OkwaFzI30/bcWCaUjChn4kkjIkfqCm0K4v4kzdRLeD4
         rOkw==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20251104; t=1776754567; x=1777359367;
        h=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;
        bh=eWPTdQl1i0q4+p+cVqkfBhVtFITjzGn1HuzqhzG8Rzs=;
        b=sfsIZ49ZNFG2oL5n3FJoQUGdKWJajpwHi3M5PJ4A7I6t5YttxhNBilDjPkJCYZeWX6
         RalyaSPjV20SHnM1KRQNXE1XSfFh20DrLTUQ8imSPgCIzgWLgP1SNsiBiu4bmuKuoduD
         0MRgHuMY537i/Ieb0L97NyJH49DeTgnpiwUgm8N5+4l0fIkVfEB73GqnDQPR71YfW39v
         5AAOqjDXQlK31C6h5/P/OdKH1R5pQCWHJspg0/sinzMt6ooC1iLZEgHA+o0E++AJ9buJ
         bXBIBytTNQJT51gaZL/xAP7N6REMC0TlJakynfvNVblIlQFBwFWtWrGeYObqFAT92mqv
         5pWA==
X-Forwarded-Encrypted: i=1; AFNElJ/UG5SaN+OAl9wiVYZ96bVBbGCJXRUAZjlA9u0plnZgC3/yZKVaVdx1Rz022J/4dWcQPoM9b5ACBT0=@lists.xenproject.org
X-Gm-Message-State: AOJu0YwiRFnOnXy1ACFNHgi3rzlxE298/KwYm7QI7T3f3dfVtZtRtot+
	S6doDfG1I0ZgaVFpA/5WzkpRglUSOjJO9ZUoQSk/r8vrTqLS3D4Y/XBFzVy44JjM2I0=
X-Gm-Gg: AeBDievu16FmvH3eGKpqGHv72DvKgi+vev9GkfMmkEreEDVE5yr1FAZOXa1TvmkfKy4
	G31ZvtBpAx8hYrcz82bxZnXiprBnDhJeFtq2qfHgIRc7RVP3QO1fjbYzobZq9Y80RWT8or2DQle
	bCSuLq6PEwQT55Op1apQ1Bt8smnFfNPYxNHCDCJLra1PgoNe/jnMYjI4gl00Bp4JYwwRBmhXdnj
	cCflYypZ6+ziLvvdoYbrpkWutfV27x8fvLolS5jkUYajRy3buzQ5bLvhwb1MFF3S4ZLC2pncgLX
	8aIa8Uz4HUgtnoJr/Pt8Ue5A/QwB7FfyrqhydLZwcEmE8S5ngcEj0g5DMkR8+fUwMfsVJ/AnoFl
	4aZZCDKLCQqgSYfkjbW/XyWOiItrUwSJEtPKjWJDcr1+kAIy5sIYtgr0fIQYIoFg/wzOs9fxoN8
	VLq7gRCBWQA2RYhhrIN1gZk35NATzVLc7a1qqpAtltrgyF3aKsUOoXCCtXeMd/1iNs/9mhAp2Rt
	lDOL8q8XYkwZGtjpGTPJ6Hcglki3++Jc5OUkFb/imV8rsfEXyJVqDvASl93lVqk
X-Received: by 2002:a05:600c:620d:b0:489:1d23:4524 with SMTP id 5b1f17b1804b1-4891d23468bmr95956285e9.5.1776754566765;
        Mon, 20 Apr 2026 23:56:06 -0700 (PDT)
Message-ID: <ff7739ff-f0a0-4d9e-8c67-aa4bcb26dec8@suse.com>
Date: Tue, 21 Apr 2026 08:56:05 +0200
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH 9/8] tools/xs-clients: support depth with xenstore-watch
To: Jason Andryuk <jason.andryuk@amd.com>, xen-devel@lists.xenproject.org
Cc: Julien Grall <julien@xen.org>, Anthony PERARD <anthony.perard@vates.tech>
References: <20260313074751.2904215-1-jgross@suse.com>
 <20260319150626.436719-1-jgross@suse.com>
 <0744dac1-4154-426f-889e-efedf7c34803@amd.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: <0744dac1-4154-426f-889e-efedf7c34803@amd.com>
Content-Type: multipart/signed; micalg=pgp-sha256;
 protocol="application/pgp-signature";
 boundary="------------Wf0mbeWitrpkJ4Dn0kNcmSH2"
X-purgate-ID: tlsNG-16d1c6/1776754567-90E7CD75-A7751526/13/0
X-purgate-type: clean
X-purgate-size: 6625

This is an OpenPGP/MIME signed message (RFC 4880 and 3156)
--------------Wf0mbeWitrpkJ4Dn0kNcmSH2
Content-Type: multipart/mixed; boundary="------------dLr4yPIkNwdrrkusBEGzXA0J";
 protected-headers="v1"
From: =?UTF-8?B?SsO8cmdlbiBHcm/Dnw==?= <jgross@suse.com>
To: Jason Andryuk <jason.andryuk@amd.com>, xen-devel@lists.xenproject.org
Cc: Julien Grall <julien@xen.org>, Anthony PERARD <anthony.perard@vates.tech>
Message-ID: <ff7739ff-f0a0-4d9e-8c67-aa4bcb26dec8@suse.com>
Subject: Re: [PATCH 9/8] tools/xs-clients: support depth with xenstore-watch
References: <20260313074751.2904215-1-jgross@suse.com>
 <20260319150626.436719-1-jgross@suse.com>
 <0744dac1-4154-426f-889e-efedf7c34803@amd.com>
In-Reply-To: <0744dac1-4154-426f-889e-efedf7c34803@amd.com>

--------------dLr4yPIkNwdrrkusBEGzXA0J
Content-Type: multipart/mixed; boundary="------------NjY8kP9omiIBxhG4d67TWfx0"

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

T24gMjEuMDQuMjYgMDA6NTksIEphc29uIEFuZHJ5dWsgd3JvdGU6DQo+IE9uIDIwMjYtMDMt
MTkgMTE6MDYsIEp1ZXJnZW4gR3Jvc3Mgd3JvdGU6DQo+PiBBZGQgYSAiLWQgPGRlcHRoPiIg
cGFyYW1ldGVyIHRvIHhlbnN0b3JlLXdhdGNoLCBhbGxvd2luZyB0byBzcGVjaWZ5DQo+PiB0
aGUgZGVwdGggcGFyYW1ldGVyIG9mIHRoZSBYU19XQVRDSCBjb21tYW5kLg0KPj4NCj4+IFVz
aW5nICItZCIgd2l0aG91dCBzdXBwb3J0IG9mIGRlcHRoIGJ5IHhlbnN0b3JlZCB3aWxsIHJl
ZnVzZSB0byBzZXQNCj4+IHRoZSB3YXRjaChlcykuDQo+Pg0KPj4gU2lnbmVkLW9mZi1ieTog
SnVlcmdlbiBHcm9zcyA8amdyb3NzQHN1c2UuY29tPg0KPiANCj4gUmV2aWV3ZWQtYnk6IEph
c29uIEFuZHJ5dWsgPGphc29uLmFuZHJ5dWtAYW1kLmNvbT4NCj4gDQo+IEZvciBib251cyBw
b2ludHMsIHlvdSBjYW4gYWRkIGl0IHRvIHRoZSBtYW4gcGFnZSA6KQ0KDQpJJ2xsIGRvIHRo
YXQuDQoNClRoYW5rcywNCg0KDQpKdWVyZ2VuDQo=
--------------NjY8kP9omiIBxhG4d67TWfx0
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-----

--------------NjY8kP9omiIBxhG4d67TWfx0--

--------------dLr4yPIkNwdrrkusBEGzXA0J--

--------------Wf0mbeWitrpkJ4Dn0kNcmSH2
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/Ey8FAmnnH4YFAwAAAAAACgkQsN6d1ii/Ey9s
Tgf8DqKCElt3vu24pZsWe/oFppAl9Mh7y3h8Pqs5ukP+i295hRjgNeopT3SR2GQ09fnQLl2WJ9yR
4oOVDKR1yg/L6WH3F6SEhGd9PwdiJc4WT9JS/AB9+VseAmIFA2Gv2pL155kM0qbl7z4OAB6KH7FF
4/yjn2zQQHg6477IfuLdSUKpnzvsCsY2XH6rq2vOJA9qgfZg5GvTDa7bNXpG488Mepge4+dZAJXY
N7GsXjUqLG0CVN58VRBwUTKtkbV0yJm8GPgU4BIwSUeV2waGfuBOUHIo03fQYNWhdV6hkFn2j/pe
qir4TR0NR9MsvaLoP03D7as9qWnt8ti1woyKzNcwVQ==
=XFxS
-----END PGP SIGNATURE-----

--------------Wf0mbeWitrpkJ4Dn0kNcmSH2--


From xen-devel-bounces@lists.xenproject.org Tue Apr 21 06:59:51 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 21 Apr 2026 06:59:51 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1288345.1568619 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wF55G-0008Kt-Fr; Tue, 21 Apr 2026 06:59:46 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1288345.1568619; Tue, 21 Apr 2026 06: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 1wF55G-0008Kk-CI; Tue, 21 Apr 2026 06:59:46 +0000
Received: by outflank-mailman (input) for mailman id 1288345;
 Tue, 21 Apr 2026 06:59:46 +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 1wF55F-0008Ka-UL
 for xen-devel@lists.xenproject.org; Tue, 21 Apr 2026 06:59:46 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wF55D-00AY32-LU
 for xen-devel@lists.xenproject.org; Tue, 21 Apr 2026 08:59:45 +0200
Received: from [10.42.69.10] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <jgross@suse.com>)
 id 69e7205f-e002-0a2a0a5209dd-0a2a450ad770-12
 for <xen-devel@lists.xenproject.org>; Tue, 21 Apr 2026 08:59:45 +0200
Received: from [209.85.221.49] (helo=mail-wr1-f49.google.com)
 by tlsNG-4011c0.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.1)
 (envelope-from <jgross@suse.com>)
 id 69e71f70-56b3-0a2a450a0019-d155dd31b03c-3
 for <xen-devel@lists.xenproject.org>; Tue, 21 Apr 2026 08:55:44 +0200
Received: by mail-wr1-f49.google.com with SMTP id
 ffacd0b85a97d-43fe608cb92so2575005f8f.2
 for <xen-devel@lists.xenproject.org>; Mon, 20 Apr 2026 23:55:44 -0700 (PDT)
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
 ffacd0b85a97d-43fe4e4633bsm34744873f8f.26.2026.04.20.23.55.43
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Mon, 20 Apr 2026 23:55:43 -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=google header.d=suse.com header.i="@suse.com" header.h="In-Reply-To:Autocrypt:From:Content-Language:References:Cc:To:Subject:User-Agent:MIME-Version:Date:Message-ID"
Authentication-Results: eu.smtp.expurgate.cloud; dkim=pass header.s=google header.d=suse.com header.i="@suse.com" header.h="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=1776754544; x=1777359344; darn=lists.xenproject.org;
        h=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;
        bh=vlKZYDYtvqx7nzoOLPYWCUaxUkZfgBewmXsZIpPEOCI=;
        b=VUKmx4Tisz+VNaeCMlRcSHup5BveoZY2ZmmiAyBxItAr7QQ8Gab6ddFojvSqPuAHCF
         YQ35EgtSZ0GuVI2iiAfu/VkE56aj7OYjTw4qgsZRY961EQKMAu/LW7dgaccv2F/3m0AD
         /+06OXk4/J1oJhYaKx8Akn9UZYvNjXf6AvP31+bFKUAht86M83gnNPHWyoMqBWayMv/e
         WS6Wq0psk+ZcgdBt9zANbPvUnVmRi/+FRpk3YOPBq7SKvkHYNxRyx3iXSOoBWYf2ywh5
         n+9+IGx6cgvyJ2ri83mpDxpdljYqmiDukLbKMjt1XT90ddWVMdxolNz6nWrJ3px7k+5v
         wB1g==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20251104; t=1776754544; x=1777359344;
        h=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;
        bh=vlKZYDYtvqx7nzoOLPYWCUaxUkZfgBewmXsZIpPEOCI=;
        b=P/RLqUo3JE/Gmr/rWzCJKZZai+06iFeeDt22fojLryJThohsEaUJoKR69CxQcjt/J9
         LIeHMbW7G0UQmXN4cYhCQftDM+yeJ57NrlsZVO9PwopPUqExaOT0y/6hdFh42evkeydQ
         66BIuz4vWqo30W148wDfXsTVdeJIrs7Ye57kr2O/eZ2dmVaZrvpjRkLU30glPSOfj6xB
         GTePJgF7m+GBtyEr9rWT3mPkj0H7xUQVB7tqXY6dzy4BYfu9IGE/jXk33O5cBwLHnIDn
         OggygkmeD+eHN9hELTJf6OXh4T4Bei4CCm5L9mKvW941+hmMUWaMztYQq/TEtYBvXoLt
         CVew==
X-Forwarded-Encrypted: i=1; AFNElJ96jyPZR9UzqkYhHildPKZe9QyklclZKpNKupAEUi89mmf98I/RSEr3i0EYEv7YoivHORRT+K9dN9U=@lists.xenproject.org
X-Gm-Message-State: AOJu0YzzXD98zElUhwMBN5RotDN73LzzvvQRrCAILMZ2rRO6wcXQimcQ
	+J0IPtOUHDyQXeY29zmU0Mc7e/PeclFJFKfw2AtK66auj0uVKlcXUdLQZsc87nQZups=
X-Gm-Gg: AeBDiesduVbnz02JYC3aey+4icV7W8LIvp54g33i5W+sRUvAEU47mc5NhcOAS6bfjim
	tfBEuq0tOKf2GzHkb8W0zLsyowWMBQGVIpwoZw8sFbLerFwOqUGK/GCZEohR2c/ZCxveW8r/XOs
	J87DsU/XQi7tBr0BuInH2dqoD2WgQThLuS0+2Iemid3EWQzpBFY+wDs+d4BcGn7zOVGbjX6ESoU
	3Yd88EsuqGigCh+CyYxX9HZZTkqSyAAsHpANHcf5ebTI6kOtiv+6Qc09zgilh43t3/XSMRk67g/
	PRPc6ozZsqTXQZgGeaPuAUtp1G77zyJDcJuN1W+IcjjH1dxYNBFcWg/dxZbu0qf8omwExYDx+jB
	L/YEuRPw8yeH8aJKDFe/NaMtMdOUDEa7Xnjt0tQTMJTYqIKBKc2jPH0r+s9Ps2JvpbcAv9oAISj
	DP5tDwcQI2/uO3rkOAjZ+mh1w9AjfJxqkbuuoA2ec4oZJdEdHXGAFQclwP6Vlp+qFcdwqaX/hrH
	5l911KUEkIMcZQAK9KwP+5JtnSOc3pFdkUCXzO97/Ma7swakWIYW4f2nPp6DxjU
X-Received: by 2002:a05:6000:2389:b0:43d:7ea8:62e6 with SMTP id ffacd0b85a97d-43fe3e12691mr27514008f8f.46.1776754544166;
        Mon, 20 Apr 2026 23:55:44 -0700 (PDT)
Message-ID: <97872b47-c7e6-4ee4-89e3-a544900a1310@suse.com>
Date: Tue, 21 Apr 2026 08:55:43 +0200
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH 7/8] tools/xenstored: expand special watch handling with
 depth feature
To: Jason Andryuk <jason.andryuk@amd.com>, xen-devel@lists.xenproject.org
Cc: Julien Grall <julien@xen.org>, Anthony PERARD <anthony.perard@vates.tech>
References: <20260313074751.2904215-1-jgross@suse.com>
 <20260313074751.2904215-8-jgross@suse.com>
 <262d66a0-972d-46e1-80cb-13d29866b874@amd.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: <262d66a0-972d-46e1-80cb-13d29866b874@amd.com>
Content-Type: multipart/signed; micalg=pgp-sha256;
 protocol="application/pgp-signature";
 boundary="------------XBw0IpDbaIgGclcQBWW7oeuZ"
X-purgate-ID: tlsNG-4011c0/1776754544-CEF718B7-FEFC6871/13/0
X-purgate-type: clean
X-purgate-size: 7686

This is an OpenPGP/MIME signed message (RFC 4880 and 3156)
--------------XBw0IpDbaIgGclcQBWW7oeuZ
Content-Type: multipart/mixed; boundary="------------GkrmPigrT1zQ40meD9WIu9Qm";
 protected-headers="v1"
From: =?UTF-8?B?SsO8cmdlbiBHcm/Dnw==?= <jgross@suse.com>
To: Jason Andryuk <jason.andryuk@amd.com>, xen-devel@lists.xenproject.org
Cc: Julien Grall <julien@xen.org>, Anthony PERARD <anthony.perard@vates.tech>
Message-ID: <97872b47-c7e6-4ee4-89e3-a544900a1310@suse.com>
Subject: Re: [PATCH 7/8] tools/xenstored: expand special watch handling with
 depth feature
References: <20260313074751.2904215-1-jgross@suse.com>
 <20260313074751.2904215-8-jgross@suse.com>
 <262d66a0-972d-46e1-80cb-13d29866b874@amd.com>
In-Reply-To: <262d66a0-972d-46e1-80cb-13d29866b874@amd.com>

--------------GkrmPigrT1zQ40meD9WIu9Qm
Content-Type: multipart/mixed; boundary="------------p8y6aMsHekD9jLgSToO3OH9Y"

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

T24gMjEuMDQuMjYgMDA6NTUsIEphc29uIEFuZHJ5dWsgd3JvdGU6DQo+IE9uIDIwMjYtMDMt
MTMgMDM6NDcsIEp1ZXJnZW4gR3Jvc3Mgd3JvdGU6DQo+PiBXaXRoIFhFTlNUT1JFX1NFUlZF
Ul9GRUFUVVJFX1dBVENIREVQVEggYXZhaWxhYmxlLCBzcGVjaWFsIHdhdGNoDQo+PiBoYW5k
bGluZyBuZWVkcyB0byBiZSBleHRlbmRlZDoNCj4+DQo+PiAtIHdoZW4gYSBzcGVjaWFsIHdh
dGNoIGlzIHNldCB3aXRoIGRlcHRoID0gMSwgdGhlIGRvbWlkIGlzIGFkZGVkIHRvDQo+PiDC
oMKgIHRoZSB3YXRjaCBldmVudA0KPj4NCj4+IC0gaXQgaXMgcG9zc2libGUgdG8gd2F0Y2gg
Zm9yIEByZWxlYXNlRG9tYWluLzxkb21pZD4NCj4+DQo+PiBTaWduZWQtb2ZmLWJ5OiBKdWVy
Z2VuIEdyb3NzIDxqZ3Jvc3NAc3VzZS5jb20+DQo+IA0KPj4gQEAgLTY3OCwxMCArNjkzLDEz
IEBAIHN0YXRpYyBpbnQgZG9fY2hlY2tfZG9tYWluKHN0cnVjdCBkb21haW4gKmRvbWFpbiwg
Ym9vbCANCj4+ICpub3RpZnksDQo+PiDCoMKgwqDCoMKgwqDCoMKgwqAgaWYgKChzdGF0ZSAm
IFhFTk1BTkFHRV9HRVRET01TVEFURV9TVEFURV9TSFVURE9XTikNCj4+IMKgwqDCoMKgwqDC
oMKgwqDCoMKgwqDCoMKgICYmICFkb21haW4tPnNodXRkb3duKSB7DQo+PiDCoMKgwqDCoMKg
wqDCoMKgwqDCoMKgwqDCoCBkb21haW4tPnNodXRkb3duID0gdHJ1ZTsNCj4+ICvCoMKgwqDC
oMKgwqDCoMKgwqDCoMKgIGZpcmVfc3BlY2lhbF93YXRjaGVzKCJAcmVsZWFzZURvbWFpbiIs
IGRvbWFpbi0+ZG9taWQsDQo+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC
oMKgwqDCoMKgwqDCoMKgIFdBVENIX0RPTSk7DQo+PiDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg
wqDCoCAqbm90aWZ5ID0gdHJ1ZTsNCj4+IMKgwqDCoMKgwqDCoMKgwqDCoCB9DQo+PiAtwqDC
oMKgwqDCoMKgwqAgaWYgKCEoc3RhdGUgJiBYRU5NQU5BR0VfR0VURE9NU1RBVEVfU1RBVEVf
REVBRCkpDQo+PiArwqDCoMKgwqDCoMKgwqAgaWYgKCEoc3RhdGUgJiBYRU5NQU5BR0VfR0VU
RE9NU1RBVEVfU1RBVEVfREVBRCkpIHsNCj4+IMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg
IHJldHVybiAwOw0KPj4gK8KgwqDCoMKgwqDCoMKgIH0NCj4gDQo+IFN0cmF5wqAge30gYWRk
aXRpb24/DQoNClllcy4gQW5vdGhlciBhcnRpZmFjdCBmcm9tIHRoZSBldm9sdmluZyBzZXJp
ZXMuDQoNCj4gDQo+IFJldmlld2VkLWJ5OiBKYXNvbiBBbmRyeXVrIDxqYXNvbi5hbmRyeXVr
QGFtZC5jb20+DQoNClRoYW5rcywNCg0KDQpKdWVyZ2VuDQo=
--------------p8y6aMsHekD9jLgSToO3OH9Y
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-----

--------------p8y6aMsHekD9jLgSToO3OH9Y--

--------------GkrmPigrT1zQ40meD9WIu9Qm--

--------------XBw0IpDbaIgGclcQBWW7oeuZ
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/Ey8FAmnnH28FAwAAAAAACgkQsN6d1ii/Ey/m
MQgAlPG0tTWQCgzpf8qVBuDEitgklBzrtwm8a6yjTdno/EDZoH0YyqghRtcGsZ4Inio9WV2K3fcv
496V0tzogbk+H1gvh1MQ+bfwLm1asDR6GbFVnTZg7y7LZalKLbmrBykV9iBECzLYdTUGkejp160X
nV7wGY0U9J1kqMs4KnnIKRHk1MASjMwv7L+V1xbiGvWt00+Lp3YJ9GuEmcc3nrJ4ouLbQyHtFBJw
Vhwr6JiNUtFPRL1EuRaPyRT5ueg1nkw0zu0et3Z6Ss7841zwRoPrlfnGkG7RYBNMahGiljOuhv0t
d1KXoqhQYFS98HjJVcK0xj8dFI2t4sQYmieQpgItTA==
=8odh
-----END PGP SIGNATURE-----

--------------XBw0IpDbaIgGclcQBWW7oeuZ--


From xen-devel-bounces@lists.xenproject.org Tue Apr 21 07:15:22 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 21 Apr 2026 07:15:22 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1288354.1568628 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wF5KF-00031b-Nl; Tue, 21 Apr 2026 07:15:15 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1288354.1568628; Tue, 21 Apr 2026 07:15: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 1wF5KF-00031U-Kx; Tue, 21 Apr 2026 07:15:15 +0000
Received: by outflank-mailman (input) for mailman id 1288354;
 Tue, 21 Apr 2026 07:15:14 +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 1wF5KE-00031O-Pw
 for xen-devel@lists.xenproject.org; Tue, 21 Apr 2026 07:15:14 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wF5KD-00FtKN-O6
 for xen-devel@lists.xenproject.org; Tue, 21 Apr 2026 09:15:13 +0200
Received: from [10.42.69.6] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <jgross@suse.com>)
 id 69e723fa-2eae-0a2a0a5409dd-0a2a4506a7be-48
 for <xen-devel@lists.xenproject.org>; Tue, 21 Apr 2026 09:15:13 +0200
Received: from [195.135.223.131] (helo=smtp-out2.suse.de)
 by tlsNG-16d1c6.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.1)
 (envelope-from <jgross@suse.com>)
 id 69e72401-7371-0a2a45060019-c387df83c6fa-3
 for <xen-devel@lists.xenproject.org>; Tue, 21 Apr 2026 09:15:13 +0200
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 BD7D95BCE1;
 Tue, 21 Apr 2026 07:15: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 971B9593AF;
 Tue, 21 Apr 2026 07:15: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 now6IwAk52n5GwAAD6G6ig
 (envelope-from <jgross@suse.com>); Tue, 21 Apr 2026 07:15: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-Transfer-Encoding"; dkim=pass header.s=susede1 header.d=suse.com header.i="@suse.com" header.h="From:Date:Message-ID:To:Cc:MIME-Version:Content-Transfer-Encoding"
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=suse.com; s=susede1;
	t=1776755713; h=from:from:reply-to:date:date:message-id:message-id:to:to:cc:cc:
	 mime-version:mime-version:  content-transfer-encoding:content-transfer-encoding;
	bh=gP9v7Lo4itR1w9JAq840Ab8a/avBxLl0HToJo1/EYvY=;
	b=L5ecqyv1bjhUKqsnb98KULs4dnYC9LvxMNlm4ZrgBSBkbY7FD/w8HUFTwHmTPtIbQUA394
	gXIfR1rC9WYsmd26IskSoLEuhSkRS6jlm5QjKYzY8X3iBaEJkZnNZYYPau5LRyORH7oG4x
	PUGCVUlGmDKwzKFUIdUJ5mpU4OB+Uuw=
Authentication-Results: smtp-out2.suse.de;
	dkim=pass header.d=suse.com header.s=susede1 header.b=aFC4iJYD
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=suse.com; s=susede1;
	t=1776755712; h=from:from:reply-to:date:date:message-id:message-id:to:to:cc:cc:
	 mime-version:mime-version:  content-transfer-encoding:content-transfer-encoding;
	bh=gP9v7Lo4itR1w9JAq840Ab8a/avBxLl0HToJo1/EYvY=;
	b=aFC4iJYDj4pwPwrCtjYWg1xDpF2SfAfIU754oNCRMt7+A0XNkaPDRpQwzhClN6+gx/bxTY
	6w9TAUWEA7ovge7sv95BK1HLWwOUHWTJiQcuuwchknh+REWaC2BfdPnkRWc5nF4oO06THc
	gLjEURGYjG1ZP+L6CI/NZpjhz9Hey8U=
From: Juergen Gross <jgross@suse.com>
To: xen-devel@lists.xenproject.org
Cc: Juergen Gross <jgross@suse.com>,
	Julien Grall <julien@xen.org>,
	Anthony PERARD <anthony.perard@vates.tech>
Subject: [PATCH v2] tools/xenstored: remove unneeded check in create_node()
Date: Tue, 21 Apr 2026 09:15:10 +0200
Message-ID: <20260421071510.222547-1-jgross@suse.com>
X-Mailer: git-send-email 2.53.0
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit
X-Spamd-Result: default: False [-3.01 / 50.00];
	BAYES_HAM(-3.00)[100.00%];
	NEURAL_HAM_LONG(-1.00)[-1.000];
	MID_CONTAINS_FROM(1.00)[];
	R_MISSING_CHARSET(0.50)[];
	R_DKIM_ALLOW(-0.20)[suse.com:s=susede1];
	NEURAL_HAM_SHORT(-0.20)[-1.000];
	MIME_GOOD(-0.10)[text/plain];
	MX_GOOD(-0.01)[];
	DBL_BLOCKED_OPENRESOLVER(0.00)[suse.com:mid,suse.com:dkim,suse.com:email];
	ARC_NA(0.00)[];
	RCVD_VIA_SMTP_AUTH(0.00)[];
	FROM_HAS_DN(0.00)[];
	TO_DN_SOME(0.00)[];
	MIME_TRACE(0.00)[0:+];
	TO_MATCH_ENVRCPT_ALL(0.00)[];
	FUZZY_RATELIMITED(0.00)[rspamd.com];
	RCVD_TLS_ALL(0.00)[];
	RCVD_COUNT_TWO(0.00)[2];
	FROM_EQ_ENVFROM(0.00)[];
	DKIM_SIGNED(0.00)[suse.com:s=susede1];
	RCPT_COUNT_THREE(0.00)[4];
	DKIM_TRACE(0.00)[suse.com:+]
X-Rspamd-Action: no action
X-Spam-Flag: NO
X-Spam-Score: -3.01
X-Spam-Level: 
X-Rspamd-Server: rspamd1.dmz-prg2.suse.org
X-Rspamd-Queue-Id: BD7D95BCE1
X-purgate-ID: tlsNG-16d1c6/1776755713-91678D75-0771BE94/0/0
X-purgate-type: clean
X-purgate-size: 794

create_node() is called only for issued xenstore commands. This means
that the "conn" parameter is never NULL.

Remove checking whether "conn" is not NULL.

Coverity ID: 1690859
Signed-off-by: Juergen Gross <jgross@suse.com>
---
V2:
- added Coverity ID (Jan Beulich)
---
 tools/xenstored/core.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/tools/xenstored/core.c b/tools/xenstored/core.c
index 4786a2a82e..34cb266e8a 100644
--- a/tools/xenstored/core.c
+++ b/tools/xenstored/core.c
@@ -1524,7 +1524,7 @@ static struct node *create_node(struct connection *conn, const void *ctx,
 	if (!node)
 		return NULL;
 
-	if (conn && conn->transaction)
+	if (conn->transaction)
 		ta_node_created(conn->transaction);
 
 	node->data = data;
-- 
2.53.0



From xen-devel-bounces@lists.xenproject.org Tue Apr 21 07:24:34 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 21 Apr 2026 07:24:34 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1288365.1568638 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wF5TC-000547-Na; Tue, 21 Apr 2026 07:24:30 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1288365.1568638; Tue, 21 Apr 2026 07:24: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 1wF5TC-000540-JH; Tue, 21 Apr 2026 07:24:30 +0000
Received: by outflank-mailman (input) for mailman id 1288365;
 Tue, 21 Apr 2026 07:24:29 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92) id 1wF5TA-00053u-Vi
 for xen-devel@lists.xenproject.org; Tue, 21 Apr 2026 07:24:29 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wF5TA-009w2S-8v
 for xen-devel@lists.xenproject.org; Tue, 21 Apr 2026 09:24:28 +0200
Received: from [10.42.69.3] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <oleksii.kurochko@gmail.com>)
 id 69e72618-bab6-0a2a0a5309dd-0a2a4503e0da-30
 for <xen-devel@lists.xenproject.org>; Tue, 21 Apr 2026 09:24:28 +0200
Received: from [209.85.208.169] (helo=mail-lj1-f169.google.com)
 by tlsNG-33051d.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.1)
 (envelope-from <oleksii.kurochko@gmail.com>)
 id 69e7262b-672d-0a2a45030019-d155d0a9a88e-3
 for <xen-devel@lists.xenproject.org>; Tue, 21 Apr 2026 09:24:28 +0200
Received: by mail-lj1-f169.google.com with SMTP id
 38308e7fff4ca-38dd9f0fdc6so51803171fa.0
 for <xen-devel@lists.xenproject.org>; Tue, 21 Apr 2026 00:24:28 -0700 (PDT)
Received: from [192.168.1.6] (user-109-243-69-121.play-internet.pl.
 [109.243.69.121]) by smtp.gmail.com with ESMTPSA id
 38308e7fff4ca-38ecb6f0729sm28815201fa.21.2026.04.21.00.24.26
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Tue, 21 Apr 2026 00:24:26 -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=20251104 header.d=gmail.com header.i="@gmail.com" header.h="Content-Transfer-Encoding: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=20251104; t=1776756267; x=1777361067; darn=lists.xenproject.org;
        h=content-transfer-encoding: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;
        bh=jGwWeAi6fCFlu1+XCUxfo5CmfPPMxqinAUjT8lOwyeQ=;
        b=qS4uzHIETgzZ7WKVlBp5turQDdWXTXKFKjE01yyTGBRjvba9ES4jR4ZrzqwarkWJIB
         rooIphnsUeIXI3m3RzV9GEYeeG+T5gsAqX87Oo7UcX1V1i1QGGNv2Of6V6CK8ht5AoQA
         dBzP5Lh3qgrXMEVmVy/BGlioRJuocvIeoYlQ+kjLeFCncMl3CgGDTKP7B3G6rrNXn8c/
         fZJe7pEtLdOleiqg01GaUyq+48LcPJMQJg8v9h/jffI90gh9pwB91Xis0xgzZaN/OMq1
         OxOXEGwTxUvGAU5NnBYNQix+EEicrS3/MaBsU4FudBQOfV4iKgVtiRdXqS4gpKa/OUpW
         3iFg==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20251104; t=1776756267; x=1777361067;
        h=content-transfer-encoding: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;
        bh=jGwWeAi6fCFlu1+XCUxfo5CmfPPMxqinAUjT8lOwyeQ=;
        b=OssvYhczI/htee6YZeSKXbbCg9iqHlHvdvj9P+KSujVJ9dLX0AaBn+CkmkbsSJDT+6
         PSc19AyPgwoPtjAatR52IbKBRI/vj0CAILKviXhEbsUXi90c0Y1pCupLGtM9PEm75M9I
         3HgNM5WHvs6UPlEQZqalkqBYq7mjbawQm4eGYjrKj3ZbzkFcJYdmlTrcSi+eYOgInbut
         b0YGulCHUgOMhPv4HjtAHUKhHvaVJhMcMs+DprYKoz42exDQ38W0O9GOfXKGYo3A4dmK
         pk0HN2mwCg1J5Pb2oiFwqt99/1eBK8ZodqoHFR881+87/VRbw0SGGf+v7Gv3sbOqJMCt
         3NMg==
X-Forwarded-Encrypted: i=1; AFNElJ90aNQ0tyZpLz+SJAne6D83SDXE9FQDg2iNnzPNRgfXTPWaPIVKKlWTTbJPOq+7dih8nUEbZUAwDqQ=@lists.xenproject.org
X-Gm-Message-State: AOJu0YxnZV4xMOat4nn2B6uZOEH6b5L7GKzmKB5z42nYR8LZuaOu178x
	y0Tm38xdK9ZIO2LsWsdYvJh8I0MKR4FwIXmZqNO1EDMMpimefNjnlZoc
X-Gm-Gg: AeBDies0tnCaBT0cz4p0sTAODOUrEIvpQ6oiB6UvlEWHWGB40PmJN7vTvg20VCUZmeB
	vkGtLHEn53JSjGZYEwB404HbHnKvajcIeN5Yx2rtObBFod38SrxI6DgYJD5AD+deUoQgGt8z5Lx
	kzR3U/evqdejbRYRVmJFbJbMSRfRYUUB+N8N2BwJ9fLOEiIOb0Upq1pDGaQiDvv8UG1dLc3uGNC
	dEM0CIkNV15AhCaTReI2l13q9SnZq1SQhwN9ZVtVmKQoYJnAx11EzFiFwBaHuBV6M+HdzosoofX
	xMuq8cznXM0rMkDD1FAXWwJPLkf6/lcL/hbhAUCxfcCGOl56qwfHy/30ZkAKB5sioMHGbpQkrLV
	zKqiofDs02z6Kv/AhEgySgC/6lwSSA/cjQAnauqppLYSu+GrQwIvygjFqUUgjzYM5jiA/sQsNbS
	EezTUZm13DmoIpzGQOQkfvJ06O94jEeD1WuWYuv6yieAsAdXsMPA48dVCneR3RjI4w0nRNBHqED
	vFAdBRXaYn64A==
X-Received: by 2002:a05:651c:420a:b0:38e:58c7:cda with SMTP id 38308e7fff4ca-38ec8ff68a5mr46703061fa.1.1776756267092;
        Tue, 21 Apr 2026 00:24:27 -0700 (PDT)
Message-ID: <76cd2f66-ca58-41ad-96a6-c191c74b0a09@gmail.com>
Date: Tue, 21 Apr 2026 09:24:25 +0200
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH v10] xenpm: Add get-core-temp subcommand
To: Teddy Astie <teddy.astie@vates.tech>, Jan Beulich <jbeulich@suse.com>
Cc: Community Manager <community.manager@xenproject.org>,
 Anthony PERARD <anthony.perard@vates.tech>, xen-devel@lists.xenproject.org
References: <22bcde2914c0303b2c594485542af19d2952e782.1775570823.git.teddy.astie@vates.tech>
 <a9b21308-18f6-41ab-9ba6-1c2874cee86b@suse.com>
 <9bad4d4c-b6db-4cce-b43b-2970d333c0ce@vates.tech>
Content-Language: en-US
From: Oleksii Kurochko <oleksii.kurochko@gmail.com>
In-Reply-To: <9bad4d4c-b6db-4cce-b43b-2970d333c0ce@vates.tech>
Content-Type: text/plain; charset=UTF-8; format=flowed
Content-Transfer-Encoding: 8bit
X-purgate-ID: tlsNG-33051d/1776756268-28776938-CDC96F94/10/73395122804
X-purgate-type: spam
X-purgate-size: 1015



On 4/8/26 3:13 PM, Teddy Astie wrote:
> Le 08/04/2026 à 14:36, Jan Beulich a écrit :
>> On 07.04.2026 16:10, Teddy Astie wrote:
>>> --- a/CHANGELOG.md
>>> +++ b/CHANGELOG.md
>>> @@ -16,6 +16,8 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/)
>>>         mitigate (by rate-limiting) the system wide impact of an HVM guest
>>>         misusing atomic instructions.
>>>       - Support for CPIO microcode in discrete multiboot modules.
>>> +   - Introduce get-core-temp to xenpm to query CPU temperatures on Intel
>>> +     platforms.
>> Would you mind inserting "command" or "option" before "to xenpm"?
>>
> Some like
>   > Introduce get-core-temp option to xenpm command ... ?
> 
> (or something like that)
> 
> I don't have any issue with rewording it.

With rewording it to "Introduce get-core-temp command to xenpm to query 
CPU temperatures on Intel platforms.":
   Acked-by: Oleksii Kurochko <oleksii.kurochko@gmail.com>

Thanks.

~ Oleksii



From xen-devel-bounces@lists.xenproject.org Tue Apr 21 07:25:04 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 21 Apr 2026 07:25:04 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1288371.1568646 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wF5Tj-0005Vt-US; Tue, 21 Apr 2026 07:25:03 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1288371.1568646; Tue, 21 Apr 2026 07:25: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 1wF5Tj-0005Vm-R1; Tue, 21 Apr 2026 07:25:03 +0000
Received: by outflank-mailman (input) for mailman id 1288371;
 Tue, 21 Apr 2026 07:25:02 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <Luca.Fancellu@arm.com>) id 1wF5Ti-0005UF-2Z
 for xen-devel@lists.xenproject.org; Tue, 21 Apr 2026 07:25:02 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wF5Th-00B0HG-FZ
 for xen-devel@lists.xenproject.org; Tue, 21 Apr 2026 09:25:01 +0200
Received: from [10.42.69.8] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <Luca.Fancellu@arm.com>)
 id 69e72644-bab6-0a2a0a5309dd-0a2a4508c36c-36
 for <xen-devel@lists.xenproject.org>; Tue, 21 Apr 2026 09:25:00 +0200
Received: from [52.101.83.45]
 (helo=GVXPR05CU001.outbound.protection.outlook.com)
 by tlsNG-c1860d.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.1)
 (envelope-from <Luca.Fancellu@arm.com>)
 id 69e7264c-63b5-0a2a45080019-3465532d8b1e-3
 for <xen-devel@lists.xenproject.org>; Tue, 21 Apr 2026 09:25:00 +0200
Received: from DB9PR05CA0018.eurprd05.prod.outlook.com (2603:10a6:10:1da::23)
 by AS2PR08MB8951.eurprd08.prod.outlook.com (2603:10a6:20b:5fa::6)
 with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9818.32; Tue, 21 Apr
 2026 07:24:54 +0000
Received: from DB5PEPF00014B97.eurprd02.prod.outlook.com
 (2603:10a6:10:1da:cafe::88) by DB9PR05CA0018.outlook.office365.com
 (2603:10a6:10:1da::23) with Microsoft SMTP Server (version=TLS1_3,
 cipher=TLS_AES_256_GCM_SHA384) id 15.20.9791.48 via Frontend Transport; Tue,
 21 Apr 2026 07:24:54 +0000
Received: from outbound-uk1.az.dlp.m.darktrace.com (4.158.2.129) by
 DB5PEPF00014B97.mail.protection.outlook.com (10.167.8.235) with Microsoft
 SMTP Server (version=TLS1_3, cipher=TLS_AES_256_GCM_SHA384) id 15.20.9791.48
 via Frontend Transport; Tue, 21 Apr 2026 07:24:54 +0000
Received: from DU2PR08MB7272.eurprd08.prod.outlook.com (2603:10a6:10:2d7::16)
 by DU4PR08MB11030.eurprd08.prod.outlook.com (2603:10a6:10:576::17)
 with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9818.33; Tue, 21 Apr
 2026 07:23:49 +0000
Received: from DU2PR08MB7272.eurprd08.prod.outlook.com
 ([fe80::5d34:206f:373:a323]) by DU2PR08MB7272.eurprd08.prod.outlook.com
 ([fe80::5d34:206f:373:a323%6]) with mapi id 15.20.9818.032; Tue, 21 Apr 2026
 07:23: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=arm.com header.i="@arm.com" header.h="From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck"; dkim=pass header.s=selector1 header.d=arm.com header.i="@arm.com" header.h="From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck"
ARC-Seal: i=2; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=pass;
 b=GrsERuT1DICDdZN4mLqW67u2PYBzJ6gxeEVnsaYURNphPfsF4s3XNSDNDWMH/0B94dm4r0R0puInTeV82tv0cCcSJixU2p+z5rCVRt2ENwX9PjZYszIH7rVI/cVv4DtfA5YJ0dPouplMJRKv0sEGnUz7IyLlpGebv9ga+LjIGlrWswwS7hhFSqwtQ9B9j4rUbcx4/J2F9Fda/7FCCFnVfoLdS20Ttoe3CaTjsLWpgNxhoxtSwJ+FwOWHIccfFaiJ877T2sgKUnbp39h5lTla3Qkaq6rQTt9uRlGGNu2y2ffNNzbgSo4bsaLUOd8+AtvjvVrWKhLIOowN+FPTS3UqAw==
ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com;
 s=arcselector10001;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1;
 bh=WznTD4DkIBu+ED4RhujjRzxuunyYzur6jIy2pbyo3Dw=;
 b=jFVXVunUttggirkWqrF/dx4zHTGo06eNXTInZk/HNddNIUQMDRHy7x4Z8Yxz2ZnS1aaA+XCRddBl8S3AEvHIwU79gUWp4u/8qTMw6iJqIxshbDcUcCGRjQKl4gtYX8at0cLSJ1rgMuaxJBfvIoDpRbhW5rVqfOveNEvvV7Oeny04eCCoi20RJzqe0KA2bUxVxcQIdqexJVs/t+TqmEKMYcPq0pjWlD9oxdCoJaWylt5pduxLf+HiDfkFDEF2OwbwsY/VQ6PWf7md8YcEXiqVrRvb/lwIdySskjkmOpzL+SpeSgprnJ4aEgBEFcCGld1xAMzRknsaypEHgI0TpUYPUQ==
ARC-Authentication-Results: i=2; mx.microsoft.com 1; spf=pass (sender ip is
 4.158.2.129) smtp.rcpttodomain=amd.com smtp.mailfrom=arm.com; dmarc=pass
 (p=none sp=none pct=100) action=none header.from=arm.com; dkim=pass
 (signature was verified) header.d=arm.com; arc=pass (0 oda=1 ltdi=1
 spf=[1,1,smtp.mailfrom=arm.com] dkim=[1,1,header.d=arm.com]
 dmarc=[1,1,header.from=arm.com])
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=arm.com; s=selector1;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck;
 bh=WznTD4DkIBu+ED4RhujjRzxuunyYzur6jIy2pbyo3Dw=;
 b=ipUAwh6JJIjaMB6dQlYUhg+O/vkA2Gmj+rDjXokQ4NKvo3gcTxnmrG5fLe2i2YpxQHjmnD8HqbaqpTq9EGKp7skf2KYb6kNWvyTle/6s4qsl4mnEYyPAX1JKnUa0KNF7XhuxXq3kCC/HN04WrQPMqvHScjFkSftUytiSBje5b4U=
X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 4.158.2.129)
 smtp.mailfrom=arm.com; dkim=pass (signature was verified)
 header.d=arm.com;dmarc=pass action=none header.from=arm.com;
Received-SPF: Pass (protection.outlook.com: domain of arm.com designates
 4.158.2.129 as permitted sender) receiver=protection.outlook.com;
 client-ip=4.158.2.129; helo=outbound-uk1.az.dlp.m.darktrace.com; pr=C
ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none;
 b=wNiKEPFUji8wyoNxJmVF30Vna93Px/QaLhgVXH3gTx9iJy0gUWnQ7gHGpSS8u7zhlPRW5Xtx62jXV9UVchSmPxg5Qi40KANUKm5TX0GAQ/6jtLtmDfdMNbD3Vjpvec2QHsf7ld1lGmu0hGagYYvOPKV4siMg1794p9oG9pp6NBHH81uh3671pUu6qZz+vrL3paAdDZAdznuOKM3ROn/mjydaCaWkbm3A4dMZNKbAknAitXpFVgMZhIwgs9PSHKvERpOufgq4uGeZO4KIF100FCrPBA8Mir/xBqLJwtzuyLg+DOFv4WS8tvgC3tMZ2lezb//8O7g20AFS8XXeH/naMQ==
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com;
 s=arcselector10001;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1;
 bh=WznTD4DkIBu+ED4RhujjRzxuunyYzur6jIy2pbyo3Dw=;
 b=km5WEJ5ZU2k5biN0q2RqmNZrYPxwBEkKX3l9ZXdHuG9laBGRQX7X63F1QkBu1dAlArV7OYlk4j1rwc9G6OTV8OwRFJm1fe1E8IebRnpFIKVWgTv7P0h1r1N+BEGmQMAUqXt/KPwzEMcH4QDdVE6IKb5sr5bknmfT71mWY4JMNvv6NkSJLG0J19IVqzo0RfTOMo1c/VVf9TwTnr6s7UsYcYVqHS7BixcBHuv6PEUG0XqqCjBPyGUh8XshxRruBM4q+S9MMf6+wJmgj4uSUqXvyAKFlksHSQ/0PAfJZGaoNiPepll2mh9tvTzV3Bwakn/lPd0zIcCDAdPojieRWfW5sQ==
ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass
 smtp.mailfrom=arm.com; dmarc=pass action=none header.from=arm.com; dkim=pass
 header.d=arm.com; arc=none
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=arm.com; s=selector1;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck;
 bh=WznTD4DkIBu+ED4RhujjRzxuunyYzur6jIy2pbyo3Dw=;
 b=ipUAwh6JJIjaMB6dQlYUhg+O/vkA2Gmj+rDjXokQ4NKvo3gcTxnmrG5fLe2i2YpxQHjmnD8HqbaqpTq9EGKp7skf2KYb6kNWvyTle/6s4qsl4mnEYyPAX1JKnUa0KNF7XhuxXq3kCC/HN04WrQPMqvHScjFkSftUytiSBje5b4U=
From: Luca Fancellu <Luca.Fancellu@arm.com>
To: "Orzel, Michal" <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] device-tree: Improve hwdom memory allocation for DMA
Thread-Topic: [PATCH] device-tree: Improve hwdom memory allocation for DMA
Thread-Index: AQHczkpLp1xSo4q8Z0ODZraWVEzberXoDpSAgAEIrwCAAAubAA==
Date: Tue, 21 Apr 2026 07:23:49 +0000
Message-ID: <78440FF6-499A-4997-AA60-AB7EEC6AF67E@arm.com>
References: <20260417091155.39653-1-michal.orzel@amd.com>
 <412A9DF8-6F5C-402D-AEBD-88E6DE139E07@arm.com>
 <137bd391-926d-4047-a760-638f2e58b99f@amd.com>
In-Reply-To: <137bd391-926d-4047-a760-638f2e58b99f@amd.com>
Accept-Language: en-GB, en-US
Content-Language: en-US
X-MS-Has-Attach:
X-MS-TNEF-Correlator:
x-mailer: Apple Mail (2.3826.700.81.1.6)
Authentication-Results-Original: dkim=none (message not signed)
 header.d=none;dmarc=none action=none header.from=arm.com;
x-ms-traffictypediagnostic:
	DU2PR08MB7272:EE_|DU4PR08MB11030:EE_|DB5PEPF00014B97:EE_|AS2PR08MB8951:EE_
X-MS-Office365-Filtering-Correlation-Id: 4e0e0988-6f5f-4834-5939-08de9f77156c
x-checkrecipientrouted: true
nodisclaimer: true
X-MS-Exchange-SenderADCheck: 1
X-MS-Exchange-AntiSpam-Relay: 0
X-Microsoft-Antispam-Untrusted:
 BCL:0;ARA:13230040|376014|366016|1800799024|38070700021|56012099003|22082099003|18002099003;
X-Microsoft-Antispam-Message-Info-Original:
 E/9rLs2vD3OBvIW2wjMlo4IkILfW9YZf1YZ3ATVpzKW3QBVvq+E8B9nOFf9iR2g4Sj9vlX1JIrO/jIC6G64WDOSXYBW+NOKaalZC1JkputWoEnhtip1m/7AYuGrLfxEtRoDg2cbwFtpifJnsFrUw93MkXAUDK7DUJjSjLmswNo+AOjIq9f9ic4aptlQHQlrUxM7BVABMStCZDJJNnO9K3W7bLk8fStWbT+uCrctqVELPEF1aFx5MB7wI1emXN5h44toWPmpBo7r8/3bkpzU6y+qtK00jG9qqKRBEJagSY2i7csf5CaxuRxCyBHsepeRPxV65Ou1tsxt6FWMbp94GK1kte3FNIC1hQ+DT7MObxvXK/E/R2IetI5ukEHTYpdNqEsXv+BfoHiLfo7nt3nFmzApi/puyFpoRlwnVqihUPXFLJ1wwV9r/gt6QdcZhcN8qZvmIO+1GYo/7eOQUB9/xH58AifFyfT6iQN+oV9vQZI9ycnQlDf5wmjg+71b9+ekyx6ufyXmQkHwiOmDpMaXbZ+pUKxWXhFb2fYB78YGQ3RjA1DkdI3URv9aO2tPbkUxIg3gxzAADyn3aP8hWv8hu5iWvu9KiCnIeMrAmuRP/ixN0P6ofNGN2tMuTkzvff99M3ldKf4qv1QAhjKUn/4EPsB9ypF+swlOa7oLwqka5hNZ1TW5ZULYlZ5RzeiavBLQFdsgJEfr82zU6aOsL1TAcDuHrO60nzJWYWJWkYM6Z2xvFLLgRLgx0IjKZ0xdnYcA/VsY6wNi+N2fiofdf94R8UnRhcUyoCR3eYAVDTJIJS4Q=
X-Forefront-Antispam-Report-Untrusted:
 CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:DU2PR08MB7272.eurprd08.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(376014)(366016)(1800799024)(38070700021)(56012099003)(22082099003)(18002099003);DIR:OUT;SFP:1101;
Content-Type: text/plain; charset="utf-8"
Content-ID: <8E461CA9970BAA4F9D670FEACFD40997@eurprd08.prod.outlook.com>
Content-Transfer-Encoding: base64
MIME-Version: 1.0
X-Exchange-RoutingPolicyChecked:
 jyDyOeDccvdZCoJUrTQkjgr9mbn1ESJkRku3mtbrmH/yLIRdLPKHiXMdBZolhaA2KT5QrUHtVMLXeyDfkwQvCvgyKsak7/HjNm5irIGAsdHXZ+EjQYcwzhh17mj8XrGDGEhall2rwiM5OZ0c/+M+jd507c6XwQy9G6f3aTyFHf5HyT23EHzVsSf6OpI97hM5XGu0RsBWfW+IJxnlGof1mNdXbVFSUu3H2Azw4ZBBWG1W92+kZ8LBIH+GFX6v4J+T39NUr+dXM1+DJNNeM1GZHEiity+AaYzOsE9twZpMhnZ/zf0tqVlBQ+Vy5BUPapyFXMt3h/olD/2ubJMUNA0nCQ==
X-MS-Exchange-Transport-CrossTenantHeadersStamped: DU4PR08MB11030
X-EOPAttributedMessage: 0
X-MS-Exchange-Transport-CrossTenantHeadersStripped:
 DB5PEPF00014B97.eurprd02.prod.outlook.com
X-MS-PublicTrafficType: Email
X-MS-Office365-Filtering-Correlation-Id-Prvs:
	3680ad37-7821-429e-9464-08de9f76eeab
X-Microsoft-Antispam:
	BCL:0;ARA:13230040|35042699022|82310400026|14060799003|36860700016|376014|1800799024|22082099003|18002099003|56012099003;
X-Microsoft-Antispam-Message-Info:
	w7CzkafintQ05kclDJSpKUwHfW2YGGQ6Y2ML6UWH4C7UU6MUijthck/o3hO+x1vunaZCRuRZctQ2kJt5zBupdW1g1dV+A71mTTMYFqG+nWFosOlBETFzFLwrKKSeSjU2cawn+vqnG/d7CiEb+JmTHv8y7eP32WffSGkPNwxbvWvy6Kx4aiiJ8xcOG6/Lfon1OrqlNSWRsbc3fh8aQdBH4AN4OsPIJkHZ3d4tXKunRRaW3IRixARufUYXjRQu8y+O4wW22jHrwmufG0Y23fJBmSS0l3imIK80JJCqqI/qQTsL3KkZZ8ocdWH2PtHlvYJmx7d3OtiKgE78pS3zs5xhQEe/mBusa5bcWEA1yOw9AZR1dH7FkxaMFhO3dKqVmQORLQIMLos0kBOGstJqr57H8l2Fp1G5UZHVhDNVu4W6SIGANIa3xViUCvW7xsRRMzSuB4TWVfhlG2mgCnWizViTa8luFrJtQqTXZ62eVgMAHISAp+u2J8HpyoTFk5ZHCrVhrtUO8KKlt+vZF/jnsqr2UqxJFodNDaYl0i7KCoxkV1GLoEAPh5ppD8o76rdnfTjkYrEk+FVoSPQw6oaxWv2OLlX8Krhofa7Q05cclQGbJtB+REK9aRZ8w1FIMzPFnOJK1zsBcgREFknOD89mygpJBxb1TvhoIMeMiaxqKVtRqkZdWzI9rV1XCvMUgWKQWtnoZvdDGHe6iGZp1SuFpU97Yyzg0tUdpiigEPHUM7KhJFVUk5c++zFqVDVJYE3oNmJr/jMgI8Z2P9C8oWI23j5wIA==
X-Forefront-Antispam-Report:
	CIP:4.158.2.129;CTRY:GB;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:outbound-uk1.az.dlp.m.darktrace.com;PTR:InfoDomainNonexistent;CAT:NONE;SFS:(13230040)(35042699022)(82310400026)(14060799003)(36860700016)(376014)(1800799024)(22082099003)(18002099003)(56012099003);DIR:OUT;SFP:1101;
X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1
X-MS-Exchange-AntiSpam-MessageData-0:
	wAMYzxRO0VeFwlpFmIkhsPnCu9olLqzeELLGW5YQ44gu+nV2aRxY03oEPvzbYyYjrrC/7CCoemPdrJBQqPxl/mVrd+IJKYJXo32K8qqe0Lk5ksvqMqD7m+/joPVQpq3/UdYkCJoUfAl6MhcpLydJBx0HvKZAgnnoE+UWxRwMoVT3GCiwVD2XjZ/0OXTLslSk6QJnfLct1wlSv0rc5vBe8E+sUrWQX61J5U6EsOe9i9P0VKtpyJCrMn8KRAGk3E+sUeI+dCEyCVQpZaNmjVvP0lMRT1huobFRKwhYDyM7xSSKcEDBGeSoOhDjOUS/wP3ZGj8nToVf9VdbXEQZT2qiUbZdFrWD/2FakIh0vB5WaVhY5uZBIR1/LWqqNehcl6mJStbJmt1Clrr8xlu1hcM/F5H8WI0puKMs7Y9Jz2stO89HjwC96Qt+DfQ/3bQPol4v
X-OriginatorOrg: arm.com
X-MS-Exchange-CrossTenant-OriginalArrivalTime: 21 Apr 2026 07:24:54.1443
 (UTC)
X-MS-Exchange-CrossTenant-Network-Message-Id: 4e0e0988-6f5f-4834-5939-08de9f77156c
X-MS-Exchange-CrossTenant-Id: f34e5979-57d9-4aaa-ad4d-b122a662184d
X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=f34e5979-57d9-4aaa-ad4d-b122a662184d;Ip=[4.158.2.129];Helo=[outbound-uk1.az.dlp.m.darktrace.com]
X-MS-Exchange-CrossTenant-AuthSource:
	DB5PEPF00014B97.eurprd02.prod.outlook.com
X-MS-Exchange-CrossTenant-AuthAs: Anonymous
X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem
X-MS-Exchange-Transport-CrossTenantHeadersStamped: AS2PR08MB8951
X-purgate-ID: tlsNG-c1860d/1776756300-3AF72DB1-9E23FF3F/0/0
X-purgate-type: clean
X-purgate-size: 904

DQo+PiANCj4+IEl0IGxvb2tzIG9rIHRvIG1lLCB0aGUgb25seSB0aGluZyBpcyB0aGF0IGlmIHdl
IGhhdmUgbWFueSBzbWFsbGVyIGJhbmtzIDwgMTI4IE1iIGJlZm9yZSByZWFjaGluZw0KPj4gb25l
IHRoYXQgaXMgYXQgbGVhc3QgMTI4IE1iLCB3ZSB3b27igJl0IGFsbG9jYXRlIHRoZW0gYW5kIGxv
b3NlIHRoZW0gZm9yZXZlci4NCj4+IA0KPj4gSXQgZmVlbHMgb25seSBhIGNvcm5lciBjYXNlIHNv
IGZvciBtZSBpdOKAmXMgb2sNCj4gWWVzLCB0aGF0J3Mgc29tZXRoaW5nIGRvY3VtZW50ZWQgaW4g
dGhlIGNvbW1pdCBtc2csIHNvIGlmIHdlIGV2ZXIgZmFjZSB1cG9uIHRoZQ0KPiBpc3N1ZSBkdWUg
dG8gdGhhdCB3ZSBjb3VsZCByZXZpc2l0IHRoZSBpbXBsZW1lbnRhdGlvbi4gRm9yIG5vdywgd2Ug
aGF2ZW4ndA0KPiBvYnNlcnZlZCBhbnkgaXNzdWVzLg0KPiANCj4+IA0KPj4gUmV2aWV3ZWQtYnk6
IEx1Y2EgRmFuY2VsbHUgPGx1Y2EuZmFuY2VsbHVAYXJtLmNvbSA8bWFpbHRvOmx1Y2EuZmFuY2Vs
bHVAYXJtLmNvbT4+DQo+IFRoYW5rcy4NCg0KSSByZWFsaXNlZCBteSBtYWlsIGNsaWVudCBtZXNz
ZWQgdXAgdGhlIHRhZzoNCg0KUmV2aWV3ZWQtYnk6IEx1Y2EgRmFuY2VsbHUgPGx1Y2EuZmFuY2Vs
bHVAYXJtLmNvbT4NCg0KQ2hlZXJzLA0KTHVjYQ0KDQo=


From xen-devel-bounces@lists.xenproject.org Tue Apr 21 07:32:25 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 21 Apr 2026 07:32:25 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1288382.1568654 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wF5al-0007bU-Fx; Tue, 21 Apr 2026 07:32:19 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1288382.1568654; Tue, 21 Apr 2026 07:32: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 1wF5al-0007bN-DA; Tue, 21 Apr 2026 07:32:19 +0000
Received: by outflank-mailman (input) for mailman id 1288382;
 Tue, 21 Apr 2026 07:32:17 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92) id 1wF5aj-0007bH-Pb
 for xen-devel@lists.xenproject.org; Tue, 21 Apr 2026 07:32:17 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wF5ai-00Fxq5-Mj
 for xen-devel@lists.xenproject.org; Tue, 21 Apr 2026 09:32:16 +0200
Received: from [10.42.69.7] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <oleksii.kurochko@gmail.com>)
 id 69e72800-2eae-0a2a0a5409dd-0a2a4507bf7c-6
 for <xen-devel@lists.xenproject.org>; Tue, 21 Apr 2026 09:32:16 +0200
Received: from [209.85.208.182] (helo=mail-lj1-f182.google.com)
 by tlsNG-ef75cf.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.1)
 (envelope-from <oleksii.kurochko@gmail.com>)
 id 69e72800-229c-0a2a45070019-d155d0b6bd9e-3
 for <xen-devel@lists.xenproject.org>; Tue, 21 Apr 2026 09:32:16 +0200
Received: by mail-lj1-f182.google.com with SMTP id
 38308e7fff4ca-38e12c67a6fso37812561fa.1
 for <xen-devel@lists.xenproject.org>; Tue, 21 Apr 2026 00:32:16 -0700 (PDT)
Received: from [192.168.1.6] (user-109-243-69-121.play-internet.pl.
 [109.243.69.121]) by smtp.gmail.com with ESMTPSA id
 2adb3069b0e04-5a4187ec277sm3524366e87.84.2026.04.21.00.32.14
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Tue, 21 Apr 2026 00:32:14 -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=20251104 header.d=gmail.com header.i="@gmail.com" header.h="Content-Transfer-Encoding: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=20251104; t=1776756736; x=1777361536; darn=lists.xenproject.org;
        h=content-transfer-encoding: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;
        bh=mUTCUhVtcctCX2T3AeSdAHlM06T+CtqBLPNdEJl594I=;
        b=ZPC4FRIQOgw42MvVMn7avxxVaeWGJQlqfUyv5ldq+ANrrQ2iKzen1vRUe1cEs10KgP
         Iu4Ncy24mfH/Y+32CNSDqJlQ1i4/yqBZ5dKyvucZW2AdUq1mzOlgi/oPBIcMo+pO8YkC
         E9sHqvjqlPqFYVC7WOoiNyh72Q+jdTEap1TUOiPgi1NecgSG+PlpDH8WvbLNjhd5E+dh
         EQd0w1RZu+441RILyzXai/iO21oYWbbzTmWHFF1GRVtiurOgStQcYKIPI9skCyW976SL
         X9rhBOWmuq/WpZ7Jndv4Ae8WI19ZEYgbpNlNb6xarjM2g8iiKL2HzHGU588sVGxrpWn8
         iXqQ==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20251104; t=1776756736; x=1777361536;
        h=content-transfer-encoding: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;
        bh=mUTCUhVtcctCX2T3AeSdAHlM06T+CtqBLPNdEJl594I=;
        b=qzQpU43JXcMLQdGMLbIzog4p9pMnesbe2MoedpAcXsMylODJT2/V7R/fWrZk/PGrAn
         PETBA0v1Ge6IF0WmJLQsTbsJ3hXVFGRdk8BFD8mz32jZM2X34zRv2FZl3QnzSpWTNzeR
         OUBBFMBDIdfqXUuqHZxU4hBF+cCTB4ZzO4CrzuLQjRHO6bRXeI8kFTMPjbFcuKSZf3g+
         TpyPAKYka1SmFt30Fw4sgADamhm59MAsFk41tBqKpciolYevHAdsIay77jDqL9wSYZxE
         vKx5fJAsbzZggrSId+NQXUCi6tZS3wdHaY05egqoG0YD+ObyQZbQelV9OGkFGDeB9ds9
         ECDQ==
X-Forwarded-Encrypted: i=1; AFNElJ/B/xVxYIr60bnI+VC7nuBBOAnEC4Ai406bmd+hSQLL9VnYF+frCb+hZwvrnlTZJ4RrLp0yHUKInt8=@lists.xenproject.org
X-Gm-Message-State: AOJu0Yz8ZZkZdWHN/0O/td/Hq7YrR7Q/GtD7WxOtTHoM4Mz/5puoukrf
	0QcKx21ShJoi2CDRJAuzY2oRay7fONldaks+1A5Ugm4Hflmg7ghYVFdl
X-Gm-Gg: AeBDieuS9MZuK4Xym+UMkBJL8QcfdqPc+svluKbjcYpo0LXKVwY0EWZ6257DKmO+GZ6
	1aO347PyLxrVxdlHCOVOf/VWvmsf+zeruc/hfGXs3HGaLGFUg0qM4Ne0nMjbEITN0XLWMnnNpwK
	FynDhvWsGDA+JbFtaG2Kq3wo9uz5XJV03Un8J4C/t3zwMHfZQCRExZ0IK0DqyvuUPsRame3DA+M
	0E2UXZ2Rx6i8ZNVLqJ08L7cX+hvFacUCudlAg77716jYhak3lS5Um/nE2j/+h6vFB4fX4gP16SY
	ShOl/LV94veK//HTmzwzJkcgXUJP/B5PWg6IGKs4f8F7KnTsQUXRUyCOL0lgejPpJw8I1jwVkDd
	wfzLuXxgz31KdkFgrIawE+cGMNbCYUsxRI8wbRn/fHk/Kubg4viWrfUp6PQaW/FT1ZL7d37NfUP
	0t+Qkvi18cxmwR/IHJrVPlNdZoc0FkkdS83xCcaV5niIUb1kDCWkCw1hRrjTv791wAJsdzmOMwd
	lqSj7f+h5ozDw==
X-Received: by 2002:a05:6512:12c4:b0:5a2:be43:c57d with SMTP id 2adb3069b0e04-5a4172c77f5mr5686450e87.12.1776756735324;
        Tue, 21 Apr 2026 00:32:15 -0700 (PDT)
Message-ID: <a682a6fb-83cb-4240-a5c5-ce39e999394b@gmail.com>
Date: Tue, 21 Apr 2026 09:32:14 +0200
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH v4 03/16] x86emul: support AVX10.1
To: Jan Beulich <jbeulich@suse.com>,
 "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.pau@citrix.com>,
 Teddy Astie <teddy.astie@vates.tech>,
 Community Manager <community.manager@xenproject.org>
References: <1e2ff012-b07a-43be-9ba6-290b38d3c97c@suse.com>
 <e23fa09d-b189-4c76-a22a-42df9fb9f9ef@suse.com>
Content-Language: en-US
From: Oleksii Kurochko <oleksii.kurochko@gmail.com>
In-Reply-To: <e23fa09d-b189-4c76-a22a-42df9fb9f9ef@suse.com>
Content-Type: text/plain; charset=UTF-8; format=flowed
Content-Transfer-Encoding: 7bit
X-purgate-ID: tlsNG-ef75cf/1776756736-AFB78C48-7BF6EC86/10/73395122804
X-purgate-type: spam
X-purgate-size: 2680



On 4/9/26 5:03 PM, Jan Beulich wrote:
> This requires relaxing various pre-existing AVX512* checks, as AVX10.1
> covers all AVX512* except PF, ER, 4FMAPS, 4VNNIW (support for all of
> which was removed meanwhile anyway), and VP2INTERSECT. At the same time
> all vector widths are always supported.
> 
> Note that visa_check(), replacing host_and_vcpu_must_have() uses, checks
> only the guest capability: We wouldn't expose AVX512* (nor AVX10)
> without the hardware supporting it. Similarly in avx512_vlen_check() the
> original host_and_vcpu_must_have() is reduced just vcpu_must_have().
> This also simplifies (resulting) code in the test and fuzzing harnesses,
> as there the XCR0 checks that are part of cpu_has_avx512* are only
> needed in local code, not in the emulator itself (where respective
> checking occurs elsewhere anyway, utilizing emul_test_read_xcr()).
> 
> While in most cases the changes to x86_emulate() are entirely
> mechanical, for opmask insns earlier unconditional AVX512F checks are
> converted into "else" clauses to existing if/else-if ones.
> 
> To be certain that no uses remain, also drop respective cpu_has_avx512*
> (except in the test harness) and vcpu_has_avx512*().
> 
> Signed-off-by: Jan Beulich <jbeulich@suse.com>
> ---
> Probably avx512_vlen_check() should have the avx512_ prefix dropped, now
> that it also covers AVX10. But if so that wants to be either a prereq or
> a follow-on patch.
> 
> visa_check() won't cover AVX10.2 and higher, but probably we will want
> independent checking logic for that anyway.
> 
> Spec version 2 still leaves unclear what the xstate components are which
> would need enabling for AVX10/256. x86emul_get_fpu() is therefore
> untouched for now.
> 
> Since it'll be reducing code size, we may want to further convert
> host_and_vcpu_must_have() to just vcpu_must_have() where appropriate
> (should be [almost?] everywhere).
> ---
> v4: Switch to using fallthrough pseudo-keyword. Drop new _vlen_check()
>      helper again. Re-base.
> v3: Add ChangeLog entry.
> v2: Drop use of vsz128 field. Re-base, in particular over dropping of
>      Xeon Phi support.
> 
> --- a/CHANGELOG.md
> +++ b/CHANGELOG.md
> @@ -16,6 +16,7 @@ The format is based on [Keep a Changelog
>        mitigate (by rate-limiting) the system wide impact of an HVM guest
>        misusing atomic instructions.
>      - Support for CPIO microcode in discrete multiboot modules.
> +   - Support for AVX10.1. (Experimental)

Acked-by: Oleksii Kurochko <oleksii.kurochko@gmail.com>.

What should be done else to have not experimental support of AVX10.1?

Thanks.

~ Oleksii



From xen-devel-bounces@lists.xenproject.org Tue Apr 21 07:32:42 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 21 Apr 2026 07:32:42 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1288387.1568663 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wF5b8-0007yH-Na; Tue, 21 Apr 2026 07:32:42 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1288387.1568663; Tue, 21 Apr 2026 07:32: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 1wF5b8-0007yA-Kj; Tue, 21 Apr 2026 07:32:42 +0000
Received: by outflank-mailman (input) for mailman id 1288387;
 Tue, 21 Apr 2026 07:32:42 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92) id 1wF5b8-0007xx-51
 for xen-devel@lists.xenproject.org; Tue, 21 Apr 2026 07:32:42 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wF5b7-00DRbB-Hb
 for xen-devel@lists.xenproject.org; Tue, 21 Apr 2026 09:32:41 +0200
Received: from [10.42.69.12] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <oleksii.kurochko@gmail.com>)
 id 69e72815-2eae-0a2a0a5409dd-0a2a450cd90c-26
 for <xen-devel@lists.xenproject.org>; Tue, 21 Apr 2026 09:32:41 +0200
Received: from [209.85.167.53] (helo=mail-lf1-f53.google.com)
 by tlsNG-d25034.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.1)
 (envelope-from <oleksii.kurochko@gmail.com>)
 id 69e72819-62f1-0a2a450c0019-d155a735a85c-3
 for <xen-devel@lists.xenproject.org>; Tue, 21 Apr 2026 09:32:41 +0200
Received: by mail-lf1-f53.google.com with SMTP id
 2adb3069b0e04-5a3be187ffbso4698026e87.0
 for <xen-devel@lists.xenproject.org>; Tue, 21 Apr 2026 00:32:41 -0700 (PDT)
Received: from [192.168.1.6] (user-109-243-69-121.play-internet.pl.
 [109.243.69.121]) by smtp.gmail.com with ESMTPSA id
 2adb3069b0e04-5a4187e7a57sm3428649e87.57.2026.04.21.00.32.39
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Tue, 21 Apr 2026 00:32:40 -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=20251104 header.d=gmail.com header.i="@gmail.com" header.h="Content-Transfer-Encoding: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=20251104; t=1776756761; x=1777361561; darn=lists.xenproject.org;
        h=content-transfer-encoding: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;
        bh=tkMTMuCQlv3GezUav2A9g3l+/6vYSKaYzcaC330T0nk=;
        b=kQ5OpY7zeYaVDL8bO7yld9qMDO1YltE9oo7FsbeMoUV2DgFcCMHn1FHgxmM6QOJ/yu
         6hJ7Lvri473xcQWESode7WhsnhpkllAW+De8TONiFmrluMiesb+5iXAR+FVJXWX6P2xz
         K/7aRtfytCfdG0cf1Mfj340j2FhWEJfhVrhLUePTL58SeF9C6UoFAO9nLPZZiPpjSUoh
         Hx7DyoLQo6ei2jXEalZuOyYA2ORHxwN7ejfAovoaCDLSWJPhtRpuwCy16CUuTChoCftk
         di1E+ps5lp9gB3p7eaHB2IzFHz5Za3bDgL4uvG4B/xrCiLOiCFVbsR3fZjG5RiF8tyrj
         yLKg==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20251104; t=1776756761; x=1777361561;
        h=content-transfer-encoding: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;
        bh=tkMTMuCQlv3GezUav2A9g3l+/6vYSKaYzcaC330T0nk=;
        b=GANoNygtB6FwYNAVlmNlQwNPd9g5DDhRk8w4VE0g89w4UIdla8vGSF1gHTqHMYh69a
         xmCWK2u/6OxrrD59CQd057YFn8Ghpojm9J4XpsgHNAG+kZ2Dw33yQSKNiWqKWgFNi1Pe
         6CKLsx9YItPFneNnxLQgUPfmlWIr5IMbO/DCl+BZwz+nh3iEaqHBzpRtwqv96vInIU//
         tqcZye6y34nuvleA416x6OmdHbeDwWccULasGNR5Do3BShhvnQl9LfmuWtoKxkxlCIem
         J8pHx/Nq95yEuOiMmql/oQVHI8ETJrNhTAZt1IYum9ittzqYqgbueLCTJ8Ev903XmJb+
         W4rA==
X-Forwarded-Encrypted: i=1; AFNElJ9OZUewPwGlGEAWinIILU4ZRLr7BKtTEcMIX2FVCfIcasgBx7ciyGf5sB5XBxApRNBbWjKdyhIT9DM=@lists.xenproject.org
X-Gm-Message-State: AOJu0Yy5aGm5HQ4KX36/RpiQ0lIykKrSYu2GBYsv7WWdyarYnk1bq8hU
	m0L2AW12pX+5osrPgWgzM3xEXqsw/9cxnLGPccsCiJAUaxDW3gSBiUrCMAirYw==
X-Gm-Gg: AeBDieu5IK7O9AnK2K1s3QVGtK3ulBaTm2yd5Fe4Wsk7zaEJl62ASK18bT6ySVNtz3N
	KJLCnL/cgebQHg/OXbSIifOTzdyuXytJfK7yixTSvAxR4Zqanao52Wj1GKp+q0PJdsl4f6xR8FF
	1KtJENYVYLjFJpCHzZ4mK/o3FZnsjWrollhnBcbzsrXk8/MRqGLA6QzelBYuDkvDYUWGxrnR/2y
	cXb76uAGX8arMJNrTZbZFHT8ZLWCXXZgLP/Z8D746DT+J1BYvdWJ7G3ZJcwaNnaWPHzo9Jygg9A
	337LiIILfCOJoyr0StxtweSJWzoY9mxKeXvYFAliIMoSCjOqEUmm7fFHuDWuuPM8SEF9MEFbgSD
	Ly0W3K4qDDjKuT05VqXCvGz5LC/e70uybetKCj3yxlHMX0yV/WQ/3I3HBOKUd7MszIrRlgKMFz0
	ctDb8L3Ita5rVHz2riUgJXuuJih0Q6w5cFChHzCVuiTfJQlsIlLCRkj6U87qRvxn4tjk4G4L1s9
	9UMaVoc0unk7RwrXzIZQRsH
X-Received: by 2002:a05:6512:1386:b0:5a2:a70a:a9e with SMTP id 2adb3069b0e04-5a41716da92mr5121542e87.3.1776756760478;
        Tue, 21 Apr 2026 00:32:40 -0700 (PDT)
Message-ID: <a672b175-ea4e-48d2-9f70-d1e9132d7a30@gmail.com>
Date: Tue, 21 Apr 2026 09:32:39 +0200
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH v4 15/16] x86emul: support other AVX10.2 convert insns
To: Jan Beulich <jbeulich@suse.com>,
 "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.pau@citrix.com>,
 Teddy Astie <teddy.astie@vates.tech>,
 "community.manager@xenproject.org" <community.manager@xenproject.org>
References: <1e2ff012-b07a-43be-9ba6-290b38d3c97c@suse.com>
 <66f59541-29f1-4bfa-a56e-67e827391ca1@suse.com>
Content-Language: en-US
From: Oleksii Kurochko <oleksii.kurochko@gmail.com>
In-Reply-To: <66f59541-29f1-4bfa-a56e-67e827391ca1@suse.com>
Content-Type: text/plain; charset=UTF-8; format=flowed
Content-Transfer-Encoding: 7bit
X-purgate-ID: tlsNG-d25034/1776756761-6F57FCF5-DFA4B190/10/73395122804
X-purgate-type: spam
X-purgate-size: 908



On 4/9/26 5:15 PM, Jan Beulich wrote:
> Despite most of them being about conversion to BF8/HF8, they are still
> somewhat similar to various existing convert insns.
> 
> Signed-off-by: Jan Beulich <jbeulich@suse.com>
> ---
> SDE: -dmr / -future
> ---
> v4: Update to spec version 3. Switch to using fallthrough pseudo-keyword.
>      Series re-ordering adjustments. Update to spec version 6. Add ChangeLog entry.
> v3: New.
> 
> --- a/CHANGELOG.md
> +++ b/CHANGELOG.md
> @@ -16,7 +16,7 @@ The format is based on [Keep a Changelog
>        mitigate (by rate-limiting) the system wide impact of an HVM guest
>        misusing atomic instructions.
>      - Support for CPIO microcode in discrete multiboot modules.
> -   - Support for AVX10.1. (Experimental)
> +   - Support for AVX10.2. (Experimental)

Acked-by: Oleksii Kurochko <oleksii.kurochko@gmail.com>.

Thanks.

~ Oleksii


From xen-devel-bounces@lists.xenproject.org Tue Apr 21 07:34:38 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 21 Apr 2026 07:34:38 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1288402.1568674 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wF5cy-0000F3-8r; Tue, 21 Apr 2026 07:34:36 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1288402.1568674; Tue, 21 Apr 2026 07:34: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 1wF5cy-0000Ew-4X; Tue, 21 Apr 2026 07:34:36 +0000
Received: by outflank-mailman (input) for mailman id 1288402;
 Tue, 21 Apr 2026 07:34:35 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <jbeulich@suse.com>) id 1wF5cw-0000Eq-VU
 for xen-devel@lists.xenproject.org; Tue, 21 Apr 2026 07:34:35 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wF5cw-00FyXS-C1
 for xen-devel@lists.xenproject.org; Tue, 21 Apr 2026 09:34:34 +0200
Received: from [10.42.69.11] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <jbeulich@suse.com>)
 id 69e72881-bab6-0a2a0a5309dd-0a2a450b9d60-38
 for <xen-devel@lists.xenproject.org>; Tue, 21 Apr 2026 09:34:34 +0200
Received: from [209.85.128.42] (helo=mail-wm1-f42.google.com)
 by tlsNG-42698a.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.1)
 (envelope-from <jbeulich@suse.com>)
 id 69e72889-212f-0a2a450b0019-d155802ac858-3
 for <xen-devel@lists.xenproject.org>; Tue, 21 Apr 2026 09:34:34 +0200
Received: by mail-wm1-f42.google.com with SMTP id
 5b1f17b1804b1-4891e5b9c1fso16983445e9.2
 for <xen-devel@lists.xenproject.org>; Tue, 21 Apr 2026 00:34:34 -0700 (PDT)
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-4890009e759sm274514365e9.6.2026.04.21.00.34.32
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Tue, 21 Apr 2026 00:34:33 -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=google header.d=suse.com header.i="@suse.com" header.h="Content-Transfer-Encoding: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=1776756873; x=1777361673; darn=lists.xenproject.org;
        h=content-transfer-encoding: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;
        bh=Gf1n57p6tPYWLEbgVNH/z/KLvsxhxbyMFKXGuN9mwCE=;
        b=FQg5SJ2oVmQLGc969dHZ6pbeQq3wQr3K/dDpds5Ou5BDECn+/fsAtVnehmyqsKv+y6
         pBANiPZKV7v+iXOc/a1AKuNpHL34sO6Ew7Y5MdO8ApOItRgR7dIVrghp5al9kExEAPFu
         NMyoJLPm4+OUNg+hZDRW2AKt59sdCIz+O1s/KXA392l08Bhz0M9YVx/eQXngaXmOFMOa
         oLrAqLOXF2s/4MUTQ+VAk95GwIXQgJRBMlZBsD+X2BZL26RhrK57KwsDseaUHayHyPxJ
         quMDKPZHojvkEv04e8CV80bL+9SiEtDKqcgLZDziVh6KjmTY/0WpRgXBazfVN3JZj0B8
         z+5Q==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20251104; t=1776756873; x=1777361673;
        h=content-transfer-encoding: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;
        bh=Gf1n57p6tPYWLEbgVNH/z/KLvsxhxbyMFKXGuN9mwCE=;
        b=ZtTqmdCAPI66+WD1AXSdqcYq7IkQE/2P4vVy1Sf6c8VDd9nASLMquJv4WaFHudqUW4
         FJWWDEctpYl+YuhgsOwXQxfK8r/z3YBbHWB/CUbQrBF+A50QkpWsXHP3t1ZOqSPF1iQ/
         TBXXoKTj1qz3dKsqMrXaZT4uxDT7uofRvlOSVQumBLIXkchOU3RGD/u/ZQx81nN1urtF
         XH7ZH13IJ2OotNQ5sbhFnJWixcsuS0yOXwvJK2hlUwBlTwWr6W5n26JKE4A2z+b1gttW
         DJx3jjogU3No4QkpB4S/dIAdWLNSqluotKy5Oj0x4KyBoNn3F2yB8kxNO2axXnR2gWG3
         KcnA==
X-Gm-Message-State: AOJu0YxgrWGPkxci/KhzIXFHOQidH4HdiMVGpdJqJu8p4FK5ro3MAzak
	qvB6nsxfpQ1O8vYF7vZF0/eF0pd/KE2iywBwNFk1lw0KYAMFESDQuPuibxwBGeqPdA==
X-Gm-Gg: AeBDievHrVb72X5wdzcM3oPXfCDDbtddlvlk/BH44DZYlIaS79hrzjeCRAcmysjlpYj
	+mGcoJBYlmd/OwBk1ZKhvE51MrmxsYH5iCmMGYkAIk9b/qU3B75QwdP2drkK1xEVSgCmfMpoUzP
	XdXvcDNfev8/xEn2iwaHC1/iygIV+R77YNsayqU8nhfd5mYiR6Oun6ZJM+GaxHz5rALLw5R4SAE
	5uuHcieBVrGZGebzVZ8sSBwIq3cuspHf+L+jkEfaUCjRChUNXKyoyz+nf9nbCO0ciE5RAcqMZNc
	4U2WLLhzn9FCfe+sqoe4aWFAyLLxSPECkbeKWdFuQyQRjoccAcxrYccewacHpw1IiM29Byt+6zl
	/amV4cYdM6iTJZUrdoJNgUTNl+XRBxCbnRaMOvuMQ0RvZtKb551GZlLKMyg06BUO4howX66iqNk
	RlBwLKso6SzQpGQdQQVrsksmxIZDycp4bUh0LYoD4aKFHjwTWItbK66wz3i5TUTgH5N4+bVRsvo
	kereoSu3MOP6I6k5c8H1ahYIg==
X-Received: by 2002:a05:600c:3546:b0:48a:5546:61a1 with SMTP id 5b1f17b1804b1-48a554663d4mr27267625e9.15.1776756873390;
        Tue, 21 Apr 2026 00:34:33 -0700 (PDT)
Message-ID: <18030a33-5280-4c15-ae72-159ba2a25018@suse.com>
Date: Tue, 21 Apr 2026 09:34:32 +0200
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH] x86/cpuidle: split the max_cstate variable
To: =?UTF-8?Q?Roger_Pau_Monn=C3=A9?= <roger.pau@citrix.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>
References: <4b89f640-046a-49c1-95f1-947d98135e5b@suse.com>
 <aeZQ3FcNl_EsPTdE@macbook.local>
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: <aeZQ3FcNl_EsPTdE@macbook.local>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
X-purgate-ID: tlsNG-42698a/1776756874-246B7F3B-CFC83654/0/0
X-purgate-type: clean
X-purgate-size: 6729

On 20.04.2026 18:14, Roger Pau Monné wrote:
> On Wed, Apr 08, 2026 at 01:34:43PM +0200, Jan Beulich wrote:
>> @@ -690,18 +694,18 @@ static void cf_check acpi_processor_idle
>>      u32 exp = 0, pred = 0;
>>      u32 irq_traced[4] = { 0 };
>>  
>> -    if ( max_cstate > 0 && power &&
>> +    if ( max_cstate() > 0 && power &&
>>           (next_state = cpuidle_current_governor->select(power)) > 0 )
>>      {
>>          unsigned int max_state = sched_has_urgent_vcpu() ? ACPI_STATE_C1
>> -                                                         : max_cstate;
>> +                                                         : max_cstate();
>>  
>>          do {
>>              cx = &power->states[next_state];
>>          } while ( (cx->type > max_state ||
>>                     cx->entry_method == ACPI_CSTATE_EM_NONE ||
>>                     (cx->entry_method == ACPI_CSTATE_EM_FFH &&
>> -                    cx->type == max_cstate &&
>> +                    cx->type == max_allowed_cstate &&
> 
> I'm afraid I'm missing why this uses max_allowed_cstate instead of
> max_state.

max_allowed_cstate is what needs using along with ...

>>                      (cx->address & MWAIT_SUBSTATE_MASK) > max_csubstate)) &&

... max_csubstate, as both are driven by the "max_cstate=" command line
option. Renaming max_csubstate to max_allowed_csubstate would be an
option, but would incure yet more churn.

>> --- a/xen/arch/x86/cpu/mwait-idle.c
>> +++ b/xen/arch/x86/cpu/mwait-idle.c
>> @@ -1045,15 +1045,16 @@ static void cf_check mwait_idle(void)
>>  	u64 before, after;
>>  	u32 exp = 0, pred = 0, irq_traced[4] = { 0 };
>>  
>> -	if (max_cstate > 0 && power &&
>> +	if (max_cstate() > 0 && power &&
>>  	    (next_state = cpuidle_current_governor->select(power)) > 0) {
>>  		unsigned int max_state = sched_has_urgent_vcpu() ? ACPI_STATE_C1
>> -								 : max_cstate;
>> +								 : max_cstate();
>>  
>>  		do {
>>  			cx = &power->states[next_state];
>> -		} while ((cx->type > max_state || (cx->type == max_cstate &&
>> -			  MWAIT_HINT2SUBSTATE(cx->address) > max_csubstate)) &&
>> +		} while ((cx->type > max_state ||
>> +                          (cx->type == max_allowed_cstate &&
> 
> Indentation is weird for the above line IMO, you should use hard 3
> tabs plus spaces afterwards, like the surrounding indentation?

Ouch, indeed.

>> +			   MWAIT_HINT2SUBSTATE(cx->address) > max_csubstate)) &&
>>  			 --next_state);
>>  		if (!next_state)
>>  			cx = NULL;
> 
> Seeing max_cstate() is used in multiple places here, you might want to
> introduce a local max_cstate variable?

Except that Misra doesn't like such naming, and any other name would feel
odd to use.

>> --- a/xen/include/xen/acpi.h
>> +++ b/xen/include/xen/acpi.h
>> @@ -142,30 +142,33 @@ int acpi_gsi_to_irq (u32 gsi, unsigned i
>>  
>>  #ifdef	CONFIG_ACPI_CSTATE
>>  /*
>> - * max_cstate sets the highest legal C-state.
>> - * max_cstate = 0: C0 okay, but not C1
>> - * max_cstate = 1: C1 okay, but not C2
>> - * max_cstate = 2: C2 okay, but not C3 etc.
>> -
>> - * max_csubstate sets the highest legal C-state sub-state. Only applies to the
>> - * highest legal C-state.
>> - * max_cstate = 1, max_csubstate = 0 ==> C0, C1 okay, but not C1E
>> - * max_cstate = 1, max_csubstate = 1 ==> C0, C1 and C1E okay, but not C2
>> - * max_cstate = 2, max_csubstate = 0 ==> C0, C1, C1E, C2 okay, but not C3
>> - * max_cstate = 2, max_csubstate = 1 ==> C0, C1, C1E, C2 okay, but not C3
>> + * max_{allowed,usable}_cstate sets the highest allowed / usable C-state, where
>> + * "allowed" is command line / sysctl based.
> 
> Hm, this is a bit misleading, because max_usable_cstate is also
> command line based (plus system errata).  What about:
> 
> "max_{allowed,usable}_cstate sets the highest allowed / usable C-state.
> max_usable_cstate can only be set from the command line, while
> max_allowed_cstate can be set from both command line and systcl."

Well. While I think I get your point, what I'm trying to get across is that
max_usable_cstate is internally controlled (bounded by command line setting
of max_allowed_cstate, but possibly forced lower than that internally). So
maybe

"max_{allowed,usable}_cstate sets the highest allowed / usable C-state.
 max_usable_cstate, while affected by the command line, is internally driven,
 whereas max_allowed_cstate can be set from both command line and systcl."

?

>> + * max_*_cstate = 0: C0 okay, but not C1
>> + * max_*_cstate = 1: C1 okay, but not C2
>> + * max_*_cstate = 2: C2 okay, but not C3 etc.
>> + *
>> + * max_csubstate sets the highest allowed C-state sub-state. Only applies to
>> + * the highest allowed C-state.
>> + * max_allowed_cstate = 1, max_csubstate = 0 ==> C0, C1 okay, but not C1E
>> + * max_allowed_cstate = 1, max_csubstate = 1 ==> C0, C1 and C1E okay, but not C2
>> + * max_allowed_cstate = 2, max_csubstate = 0 ==> C0, C1, C1E, C2 okay, but not C3
>> + * max_allowed_cstate = 2, max_csubstate = 1 ==> C0, C1, C1E, C2 okay, but not C3
>>   */
>>  
>> -extern unsigned int max_cstate;
>> +extern unsigned int max_usable_cstate;
>> +extern unsigned int max_allowed_cstate;
>>  extern unsigned int max_csubstate;
>>  
>> +#define max_cstate() min(max_usable_cstate, max_allowed_cstate)
> 
> I would be tempted to drop the ending parenthesis so that you don't
> need to adjust callers, but that's likely misleading, as then it would
> need to be uppercase MAX_CSTATE.

I deliberately want to have the parentheses, to make sure all uses of
max_cstate (without the parentheses) have been covered (by converting in
whatever appropriate way). Which extends to possible backports. In a
subsequent, not to be backported commit we could drop them again if so
desired.

>>  static inline unsigned int acpi_get_cstate_limit(void)
>>  {
>> -	return max_cstate;
>> +	return max_allowed_cstate;
>>  }
>>  static inline void acpi_set_cstate_limit(unsigned int new_limit)
>>  {
>> -	max_cstate = new_limit;
>> -	return;
>> +	max_allowed_cstate = new_limit;
> 
> Do we want to check the new limit doesn't exceed max_usable_cstate and
> return -ERANGE or similar on failure?
> 
> After this change it's a bit weird to silently ignore invalid values
> IMO.

I disagree. Those values may be valid, just not usable (i.e. they are
still a valid upper bound, but we'd never go as high up). If people wanted
to use the same settings across their fleet, undue (and confusing) errors
might result on some of their systems if we did as you suggest. Plus we
have always accepted arbitrarily large (and hence entirely meaningless)
values anyway.

Jan


From xen-devel-bounces@lists.xenproject.org Tue Apr 21 07:38:25 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 21 Apr 2026 07:38:25 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1288409.1568682 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wF5ga-0001LE-MR; Tue, 21 Apr 2026 07:38:20 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1288409.1568682; Tue, 21 Apr 2026 07:38: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 1wF5ga-0001L7-JL; Tue, 21 Apr 2026 07:38:20 +0000
Received: by outflank-mailman (input) for mailman id 1288409;
 Tue, 21 Apr 2026 07:38:19 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92) id 1wF5gZ-0001Ki-3j
 for xen-devel@lists.xenproject.org; Tue, 21 Apr 2026 07:38:19 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wF5gY-00DTgD-DA
 for xen-devel@lists.xenproject.org; Tue, 21 Apr 2026 09:38:18 +0200
Received: from [10.42.69.7] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <jbeulich@suse.com>)
 id 69e72962-bab6-0a2a0a5309dd-0a2a4507d766-42
 for <xen-devel@lists.xenproject.org>; Tue, 21 Apr 2026 09:38:18 +0200
Received: from [209.85.128.48] (helo=mail-wm1-f48.google.com)
 by tlsNG-ef75cf.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.1)
 (envelope-from <jbeulich@suse.com>)
 id 69e7296a-229c-0a2a45070019-d1558030e9a8-3
 for <xen-devel@lists.xenproject.org>; Tue, 21 Apr 2026 09:38:18 +0200
Received: by mail-wm1-f48.google.com with SMTP id
 5b1f17b1804b1-4891d7164ddso11466695e9.3
 for <xen-devel@lists.xenproject.org>; Tue, 21 Apr 2026 00:38:18 -0700 (PDT)
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-48a5549f582sm13191255e9.33.2026.04.21.00.38.17
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Tue, 21 Apr 2026 00:38:17 -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=google header.d=suse.com header.i="@suse.com" header.h="Content-Transfer-Encoding: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=1776757098; x=1777361898; darn=lists.xenproject.org;
        h=content-transfer-encoding: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;
        bh=phBOziqZXh9EE62pJxbxmY03bAYvLJS7cJGH0nUQJLI=;
        b=KP558vMNMqYpHpjsm7uW6eBnutLcrxTLLIFX64m2ht+KyAcEyvzMFKz42hZQuCUcxr
         W0UE1EhONjsfZXK/LPdUI8pqTjVh9mzeRHs717oGjupwEt99yYYpvk5L4Px4J6VWX1wa
         zglciKQIjXeUJdz5kiTPVpGLn93hVwRPHmVlBXqAkeHDsfKjPvuN7Bmjy5A4YUoXCS+r
         dPku6OFBsopKV+4Q1QFXhTVNDsDLCn9/bKWHJiJuejipXgta2zOGSODCCnFZjMAvTDGb
         lrN2g4bMvATwQUIbYbP6cSITIzBLLdOUDMTl5MiRjpqwj7XeAsyg/m0i3dBfi4GJ3SAt
         sf2g==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20251104; t=1776757098; x=1777361898;
        h=content-transfer-encoding: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;
        bh=phBOziqZXh9EE62pJxbxmY03bAYvLJS7cJGH0nUQJLI=;
        b=VMi6l5fxXfzcGmb+Dp+ZSoK09+yIaMuvmBNigaDlPVZpxEMfDjd9iICyAETIq7fw12
         QwKRgO8u18rm5pWW5hhu5e1eKEqZLWiWgMz24Z2LVJLwVAnEb20neEKlAPgMMxTTrrku
         pRmCAFSJvFFE7Oy/zSvHD+zMQdU3TptXTEMK57/QeezevK5jE96zu4qEtJ57Uw0tQL12
         OZzAPpTHZnsy6mF9tDK8ta93UxTIuG+pa2lCrbx4pWCw12ShfRqnf49m8IKjg0DEAcUz
         pUpdh6OTMdaqOQQEIi9F3rAQryfSXSxD87dQlb2P3MDVTkE8IzgC9RwJcgGxyzi+k7aZ
         1gkQ==
X-Forwarded-Encrypted: i=1; AFNElJ8gG/NhJkxvCXb57v0bVj5QmTmPgojrXpHOkA27SyjzeRooCsKx9KYyLI7ZEK4FRvaCiTv+ews8FbI=@lists.xenproject.org
X-Gm-Message-State: AOJu0Yyyy94CICSLjPyvmMtGd7dXe/mYSu7QkWgcpPuQD+U8TF4/o+mP
	qKjpD1KG6f0wePNzD2bv98Z1q079SX3KGxmFNIUcFoLI4/f3lVqtTiy3WXjXcO9J9A==
X-Gm-Gg: AeBDieu22csILXdd0XSVdmB8u4masy5troHqhP2iD/Oa/KL0PwdibireYd0SqEgRtID
	cGa6+le7J8jbuZ1NtJBNhXgxriLAU8tJd5Dy/JMzCIWXCCrdv6OywFANI/3xdtWZeQD7zIsGSGR
	xEbLRCPddZ/LRohgWq5Gp9rhp04OUE9YXoNwF4nJR1y2UuvtyZq23+qvwRSkmI09G/yDgrpJ/hC
	MKjmOge53RDm1LmdmAoAmSJSocl21eE7QV1EfMj5Eq0mih7qu2HMaFh/dbBNhyjAWJtCs4at7sI
	Lw+GvrgmKrOl6+VoBvjLg14ACQhH/nl5ogqzP3ZnaU/aVIBmoCsNE/rtavdb+xPXTGM0aNZV5wp
	nZaahUf1wGa0m1sA2z3872kRtfNq2fDuhDFCBblkXjfHNT++PdLlFVWnvFRuzAobbjOMPoyCs6N
	wAhAyfnLTiTwu7khTKYwpSNF9EdJK0aI16kyLI7PdRHYutQ1FIzTOjaRourAE9qLGNgcITEtaP6
	pFGLOD70rdYk55vcOXzucLjWw==
X-Received: by 2002:a05:600c:a30b:b0:487:2671:fb8f with SMTP id 5b1f17b1804b1-488fb74dfe5mr165197925e9.8.1776757097708;
        Tue, 21 Apr 2026 00:38:17 -0700 (PDT)
Message-ID: <2c8c5cb9-c5bf-4e79-a390-33b75c5c3423@suse.com>
Date: Tue, 21 Apr 2026 09:38:16 +0200
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH v4 03/16] x86emul: support AVX10.1
To: Oleksii Kurochko <oleksii.kurochko@gmail.com>
Cc: Andrew Cooper <andrew.cooper3@citrix.com>,
 =?UTF-8?Q?Roger_Pau_Monn=C3=A9?= <roger.pau@citrix.com>,
 Teddy Astie <teddy.astie@vates.tech>,
 Community Manager <community.manager@xenproject.org>,
 "xen-devel@lists.xenproject.org" <xen-devel@lists.xenproject.org>
References: <1e2ff012-b07a-43be-9ba6-290b38d3c97c@suse.com>
 <e23fa09d-b189-4c76-a22a-42df9fb9f9ef@suse.com>
 <a682a6fb-83cb-4240-a5c5-ce39e999394b@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: <a682a6fb-83cb-4240-a5c5-ce39e999394b@gmail.com>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 7bit
X-purgate-ID: tlsNG-ef75cf/1776757098-AE971C48-7A8C7A27/10/73395122804
X-purgate-type: spam
X-purgate-size: 2863

On 21.04.2026 09:32, Oleksii Kurochko wrote:
> 
> 
> On 4/9/26 5:03 PM, Jan Beulich wrote:
>> This requires relaxing various pre-existing AVX512* checks, as AVX10.1
>> covers all AVX512* except PF, ER, 4FMAPS, 4VNNIW (support for all of
>> which was removed meanwhile anyway), and VP2INTERSECT. At the same time
>> all vector widths are always supported.
>>
>> Note that visa_check(), replacing host_and_vcpu_must_have() uses, checks
>> only the guest capability: We wouldn't expose AVX512* (nor AVX10)
>> without the hardware supporting it. Similarly in avx512_vlen_check() the
>> original host_and_vcpu_must_have() is reduced just vcpu_must_have().
>> This also simplifies (resulting) code in the test and fuzzing harnesses,
>> as there the XCR0 checks that are part of cpu_has_avx512* are only
>> needed in local code, not in the emulator itself (where respective
>> checking occurs elsewhere anyway, utilizing emul_test_read_xcr()).
>>
>> While in most cases the changes to x86_emulate() are entirely
>> mechanical, for opmask insns earlier unconditional AVX512F checks are
>> converted into "else" clauses to existing if/else-if ones.
>>
>> To be certain that no uses remain, also drop respective cpu_has_avx512*
>> (except in the test harness) and vcpu_has_avx512*().
>>
>> Signed-off-by: Jan Beulich <jbeulich@suse.com>
>> ---
>> Probably avx512_vlen_check() should have the avx512_ prefix dropped, now
>> that it also covers AVX10. But if so that wants to be either a prereq or
>> a follow-on patch.
>>
>> visa_check() won't cover AVX10.2 and higher, but probably we will want
>> independent checking logic for that anyway.
>>
>> Spec version 2 still leaves unclear what the xstate components are which
>> would need enabling for AVX10/256. x86emul_get_fpu() is therefore
>> untouched for now.
>>
>> Since it'll be reducing code size, we may want to further convert
>> host_and_vcpu_must_have() to just vcpu_must_have() where appropriate
>> (should be [almost?] everywhere).
>> ---
>> v4: Switch to using fallthrough pseudo-keyword. Drop new _vlen_check()
>>      helper again. Re-base.
>> v3: Add ChangeLog entry.
>> v2: Drop use of vsz128 field. Re-base, in particular over dropping of
>>      Xeon Phi support.
>>
>> --- a/CHANGELOG.md
>> +++ b/CHANGELOG.md
>> @@ -16,6 +16,7 @@ The format is based on [Keep a Changelog
>>        mitigate (by rate-limiting) the system wide impact of an HVM guest
>>        misusing atomic instructions.
>>      - Support for CPIO microcode in discrete multiboot modules.
>> +   - Support for AVX10.1. (Experimental)
> 
> Acked-by: Oleksii Kurochko <oleksii.kurochko@gmail.com>.

Thanks.

> What should be done else to have not experimental support of AVX10.1?

Someone to actually try it out on real hardware. All my testing was with
Intel's SDE.

Jan


From xen-devel-bounces@lists.xenproject.org Tue Apr 21 07:42:27 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 21 Apr 2026 07:42:27 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1288420.1568700 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wF5kV-00037G-Fq; Tue, 21 Apr 2026 07:42:23 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1288420.1568700; Tue, 21 Apr 2026 07:42: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 1wF5kV-000377-CQ; Tue, 21 Apr 2026 07:42:23 +0000
Received: by outflank-mailman (input) for mailman id 1288420;
 Tue, 21 Apr 2026 07:42:22 +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 1wF5kU-00036B-DG
 for xen-devel@lists.xenproject.org; Tue, 21 Apr 2026 07:42:22 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wF5kR-00Aiof-Fk
 for xen-devel@lists.xenproject.org; Tue, 21 Apr 2026 09:42:21 +0200
Received: from [10.42.69.2] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <jgross@suse.com>)
 id 69e72a55-2eae-0a2a0a5409dd-0a2a4502a498-32
 for <xen-devel@lists.xenproject.org>; Tue, 21 Apr 2026 09:42:20 +0200
Received: from [195.135.223.131] (helo=smtp-out2.suse.de)
 by tlsNG-720697.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.1)
 (envelope-from <jgross@suse.com>)
 id 69e72a5c-af86-0a2a45020019-c387df83c1e6-3
 for <xen-devel@lists.xenproject.org>; Tue, 21 Apr 2026 09:42:20 +0200
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 59AF35BCE1;
 Tue, 21 Apr 2026 07:42: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 1B2A7593AF;
 Tue, 21 Apr 2026 07:42: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 53KPBVsq52n9NQAAD6G6ig
 (envelope-from <jgross@suse.com>); Tue, 21 Apr 2026 07:42: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-Transfer-Encoding:In-Reply-To:References"; dkim=pass header.s=susede1 header.d=suse.com header.i="@suse.com" header.h="From:Date:Message-ID:To:Cc:MIME-Version:Content-Transfer-Encoding:In-Reply-To:References"
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=suse.com; s=susede1;
	t=1776757340; h=from:from:reply-to:date:date:message-id:message-id:to:to:cc:cc:
	 mime-version:mime-version:
	 content-transfer-encoding:content-transfer-encoding:
	 in-reply-to:in-reply-to:references:references;
	bh=ReIly1atvh5rbm6DWS8EB7RxMnUs54f1iHdpQVFl9VA=;
	b=IFWssi8NDTX1FX3vbVE7W0gyiQmMrE0DPQaWlgYJLSoTyNvF9Q8GrWE5K7KLX1Hiu/zyNl
	RPhXtKLGMt8bc23G5M0gJaPmXMNjlIQynNxIGFQToS0XnPUlBMU7mg7clvvwD+Iyhib0h7
	Upqb4LsW3JHhH6Cwzs4WjOgKtjkHqZY=
Authentication-Results: smtp-out2.suse.de;
	none
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=suse.com; s=susede1;
	t=1776757339; h=from:from:reply-to:date:date:message-id:message-id:to:to:cc:cc:
	 mime-version:mime-version:
	 content-transfer-encoding:content-transfer-encoding:
	 in-reply-to:in-reply-to:references:references;
	bh=ReIly1atvh5rbm6DWS8EB7RxMnUs54f1iHdpQVFl9VA=;
	b=sNJz12Ks7Ia8ZjR5xXJWOPjYBd7aqAtUctmXudA44EQj5AveCbAzLXwER1TQBKv5dmu5Dm
	wH7rRKVB2RxfLWbwobfY0XHGPGpHhFg9gBZRM0ogEIs1no0zRZVkroU9VqhNGoM7RcAcMm
	vBhjpl0qwvG0NmXvgizRbwzjfYO5Hqw=
From: Juergen Gross <jgross@suse.com>
To: xen-devel@lists.xenproject.org
Cc: Juergen Gross <jgross@suse.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.pau@citrix.com>,
	Stefano Stabellini <sstabellini@kernel.org>,
	Jason Andryuk <jason.andryuk@amd.com>
Subject: [PATCH v2 1/9] tools/xenstored: allow domU to get own features
Date: Tue, 21 Apr 2026 09:42:03 +0200
Message-ID: <20260421074211.308473-2-jgross@suse.com>
X-Mailer: git-send-email 2.53.0
In-Reply-To: <20260421074211.308473-1-jgross@suse.com>
References: <20260421074211.308473-1-jgross@suse.com>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit
X-Spam-Score: -2.80
X-Spam-Level: 
X-Spamd-Result: default: False [-2.80 / 50.00];
	BAYES_HAM(-3.00)[100.00%];
	NEURAL_HAM_LONG(-1.00)[-1.000];
	MID_CONTAINS_FROM(1.00)[];
	R_MISSING_CHARSET(0.50)[];
	NEURAL_HAM_SHORT(-0.20)[-1.000];
	MIME_GOOD(-0.10)[text/plain];
	TO_MATCH_ENVRCPT_ALL(0.00)[];
	ARC_NA(0.00)[];
	RCVD_VIA_SMTP_AUTH(0.00)[];
	FROM_HAS_DN(0.00)[];
	MIME_TRACE(0.00)[0:+];
	DBL_BLOCKED_OPENRESOLVER(0.00)[suse.com:mid,suse.com:email,amd.com:email,imap1.dmz-prg2.suse.org:helo];
	FUZZY_RATELIMITED(0.00)[rspamd.com];
	RCPT_COUNT_SEVEN(0.00)[10];
	RCVD_COUNT_TWO(0.00)[2];
	FROM_EQ_ENVFROM(0.00)[];
	DKIM_SIGNED(0.00)[suse.com:s=susede1];
	TO_DN_SOME(0.00)[];
	RCVD_TLS_ALL(0.00)[]
X-Spam-Flag: NO
X-purgate-ID: tlsNG-720697/1776757340-81772161-E6BDC29E/0/0
X-purgate-type: clean
X-purgate-size: 3357

Expand the XS_GET_FEATURE command to allow an unprivileged domain to
read its own available features. While this information is available
via the related field in the shared page used for communication with
Xenstore, user land components of the domU would need special support
in the related kernel driver to obtain that data. With supporting the
XS_GET_FEATURE for that purpose, only an up to date libxenstore is
needed.

Signed-off-by: Juergen Gross <jgross@suse.com>
Reviewed-by: Jason Andryuk <jason.andryuk@amd.com>
---
 docs/misc/xenstore.txt   |  9 +++++----
 tools/xenstored/core.c   |  3 +--
 tools/xenstored/domain.c | 16 +++++++++++-----
 3 files changed, 17 insertions(+), 11 deletions(-)

diff --git a/docs/misc/xenstore.txt b/docs/misc/xenstore.txt
index 4eccbc2f7f..8a2c19d116 100644
--- a/docs/misc/xenstore.txt
+++ b/docs/misc/xenstore.txt
@@ -427,13 +427,14 @@ SET_FEATURE		<domid>|<value>|
 	to set a bit for a feature not being supported by the running
 	Xenstore will be denied. Providing no <domid> with the
 	GET_FEATURE command will return the features which are supported
-	by Xenstore.
+	by Xenstore for the domain issuing the command.
 
 	SET_FEATURE for a domain will be rejected after the INTRODUCE
-	command for this domain has been sent to xenstored.
+	command for this domain has been sent to xenstored. This has the
+	effect that dom0 will always have all supported features enabled.
 
-	xenstored prevents the use of GET_FEATURE and SET_FEATURE other
-	than by dom0.
+	xenstored prevents the use of GET_FEATURE with a domid specified
+	and SET_FEATURE other than by dom0.
 
 GET_QUOTA		[[<domid>|]<quota>|]	<value>|
 SET_QUOTA		[<domid>|]<quota>|<value>|
diff --git a/tools/xenstored/core.c b/tools/xenstored/core.c
index 34cb266e8a..93244d0ac4 100644
--- a/tools/xenstored/core.c
+++ b/tools/xenstored/core.c
@@ -2031,8 +2031,7 @@ static struct {
 	    { "SET_TARGET",    do_set_target,   XS_FLAG_PRIV },
 	[XS_RESET_WATCHES]     = { "RESET_WATCHES",     do_reset_watches },
 	[XS_DIRECTORY_PART]    = { "DIRECTORY_PART",    send_directory_part },
-	[XS_GET_FEATURE]       =
-	    { "GET_FEATURE",   do_get_feature,  XS_FLAG_PRIV },
+	[XS_GET_FEATURE]       = { "GET_FEATURE",       do_get_feature },
 	[XS_SET_FEATURE]       =
 	    { "SET_FEATURE",   do_set_feature,  XS_FLAG_PRIV },
 	[XS_GET_QUOTA]         =
diff --git a/tools/xenstored/domain.c b/tools/xenstored/domain.c
index 1684f6dee7..b0b339f569 100644
--- a/tools/xenstored/domain.c
+++ b/tools/xenstored/domain.c
@@ -1323,10 +1323,17 @@ int do_get_feature(const void *ctx, struct connection *conn,
 	char *result;
 
 	n_args = get_strings(in, vec, ARRAY_SIZE(vec));
-	if (n_args > 1)
-		return EINVAL;
 
-	if (n_args == 1) {
+	if (!n_args) {
+		features = conn->domain ? conn->domain->features
+					: XENSTORE_FEATURES;
+	} else {
+		if (domain_is_unprivileged(conn))
+			return EACCES;
+
+		if (n_args > 1)
+			return EINVAL;
+
 		domid = parse_domid(vec[0]);
 		if (errno)
 			return errno;
@@ -1334,8 +1341,7 @@ int do_get_feature(const void *ctx, struct connection *conn,
 		if (!domain)
 			return ENOENT;
 		features = domain->features;
-	} else
-		features = XENSTORE_FEATURES;
+	}
 
 	result = talloc_asprintf(ctx, "%u", features);
 	if (!result)
-- 
2.53.0



From xen-devel-bounces@lists.xenproject.org Tue Apr 21 07:42:27 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 21 Apr 2026 07:42:27 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1288418.1568691 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wF5kP-0002rr-4G; Tue, 21 Apr 2026 07:42:17 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1288418.1568691; Tue, 21 Apr 2026 07:42: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 1wF5kP-0002rk-1P; Tue, 21 Apr 2026 07:42:17 +0000
Received: by outflank-mailman (input) for mailman id 1288418;
 Tue, 21 Apr 2026 07:42:15 +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 1wF5kN-0002qs-OV
 for xen-devel@lists.xenproject.org; Tue, 21 Apr 2026 07:42:15 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wF5kN-00G0Vt-4x
 for xen-devel@lists.xenproject.org; Tue, 21 Apr 2026 09:42:15 +0200
Received: from [10.42.69.5] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <jgross@suse.com>)
 id 69e72a54-5cb7-0a2a0a5109dd-0a2a4505d38e-18
 for <xen-devel@lists.xenproject.org>; Tue, 21 Apr 2026 09:42:15 +0200
Received: from [195.135.223.130] (helo=smtp-out1.suse.de)
 by tlsNG-c201ff.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.1)
 (envelope-from <jgross@suse.com>)
 id 69e72a56-aaa8-0a2a45050019-c387df82dd06-3
 for <xen-devel@lists.xenproject.org>; Tue, 21 Apr 2026 09:42:14 +0200
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 CD6526A7F5;
 Tue, 21 Apr 2026 07:42:13 +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 91752593AF;
 Tue, 21 Apr 2026 07:42:13 +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 CTnhIVUq52n0NQAAD6G6ig
 (envelope-from <jgross@suse.com>); Tue, 21 Apr 2026 07:42: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=susede1 header.d=suse.com header.i="@suse.com" header.h="From:Date:Message-ID:To:Cc:MIME-Version:Content-Transfer-Encoding"; dkim=pass header.s=susede1 header.d=suse.com header.i="@suse.com" header.h="From:Date:Message-ID:To:Cc:MIME-Version:Content-Transfer-Encoding"
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=suse.com; s=susede1;
	t=1776757334; h=from:from:reply-to:date:date:message-id:message-id:to:to:cc:cc:
	 mime-version:mime-version:  content-transfer-encoding:content-transfer-encoding;
	bh=GiCl29ziqUuQLuJlMeZlJuHJz+kWks534SS9M1I17Ug=;
	b=Hz1QnGSfVZNt1eIuMY9LSbhvALsPzAAEqb24kuFoEf7N8HdzwPp01dHX1f4LTSxhhEphZn
	k8GJLiT/7Fq8IVvl8oQbdlC17I7L26lhf0edYr111rNhpvwwmEaCyyApWt3N7s1NK9lgAw
	10uVggoGl6l9Gei2zIU2HzEJijFqUNw=
Authentication-Results: smtp-out1.suse.de;
	dkim=pass header.d=suse.com header.s=susede1 header.b=Q3MqWZsL
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=suse.com; s=susede1;
	t=1776757333; h=from:from:reply-to:date:date:message-id:message-id:to:to:cc:cc:
	 mime-version:mime-version:  content-transfer-encoding:content-transfer-encoding;
	bh=GiCl29ziqUuQLuJlMeZlJuHJz+kWks534SS9M1I17Ug=;
	b=Q3MqWZsLsRb7dca3DyjcT7VPodi5wfSDUExbq4IX06CKABSf5G+xrLnivGlyjqVk0osqKt
	ecmPtLsQwsVk02f/NLIxoysdU+DloaA7bZJjvbTOOMNQAqkTqNwcfjcP7wKDq1hX9QV4JQ
	2VMYMAL+VXNk7O8WTJRbl0uq+zYp3x0=
From: Juergen Gross <jgross@suse.com>
To: xen-devel@lists.xenproject.org
Cc: Juergen Gross <jgross@suse.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.pau@citrix.com>,
	Stefano Stabellini <sstabellini@kernel.org>
Subject: [PATCH v2 0/9] tools/xenstored: add support for watch depth feature
Date: Tue, 21 Apr 2026 09:42:02 +0200
Message-ID: <20260421074211.308473-1-jgross@suse.com>
X-Mailer: git-send-email 2.53.0
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit
X-Rspamd-Action: no action
X-Rspamd-Server: rspamd2.dmz-prg2.suse.org
X-Spamd-Result: default: False [-3.01 / 50.00];
	BAYES_HAM(-3.00)[100.00%];
	NEURAL_HAM_LONG(-1.00)[-1.000];
	MID_CONTAINS_FROM(1.00)[];
	R_MISSING_CHARSET(0.50)[];
	R_DKIM_ALLOW(-0.20)[suse.com:s=susede1];
	NEURAL_HAM_SHORT(-0.20)[-1.000];
	MIME_GOOD(-0.10)[text/plain];
	MX_GOOD(-0.01)[];
	ARC_NA(0.00)[];
	RCVD_VIA_SMTP_AUTH(0.00)[];
	RCVD_COUNT_TWO(0.00)[2];
	RBL_SPAMHAUS_BLOCKED_OPENRESOLVER(0.00)[2a07:de40:b281:104:10:150:64:97:from];
	MIME_TRACE(0.00)[0:+];
	FUZZY_RATELIMITED(0.00)[rspamd.com];
	TO_DN_SOME(0.00)[];
	FROM_HAS_DN(0.00)[];
	RECEIVED_SPAMHAUS_BLOCKED_OPENRESOLVER(0.00)[2a07:de40:b281:106:10:150:64:167:received];
	RCPT_COUNT_SEVEN(0.00)[9];
	TO_MATCH_ENVRCPT_ALL(0.00)[];
	DBL_BLOCKED_OPENRESOLVER(0.00)[imap1.dmz-prg2.suse.org:helo,imap1.dmz-prg2.suse.org:rdns,suse.com:dkim,suse.com:mid];
	RCVD_TLS_ALL(0.00)[];
	FROM_EQ_ENVFROM(0.00)[];
	SPAMHAUS_XBL(0.00)[2a07:de40:b281:104:10:150:64:97:from];
	DKIM_SIGNED(0.00)[suse.com:s=susede1];
	DKIM_TRACE(0.00)[suse.com:+]
X-Rspamd-Queue-Id: CD6526A7F5
X-Spam-Flag: NO
X-Spam-Score: -3.01
X-Spam-Level: 
X-purgate-ID: tlsNG-c201ff/1776757334-2BD67443-C6CE8F72/0/0
X-purgate-type: clean
X-purgate-size: 2338

In order to reduce excessive number of watch events the watch depth
feature has been defined, allowing the user to limit the number of
node levels below the watched node to cause events.

This series is implementing this feature for xenstored (including the
PV and PVH stubdom variants).

Possible users are:

- xl/libxl: use domid information for the special @introduceDomain and
  @releaseDomain watches, which will be available when using depth = 1

- xenconsoled, like xl/libxl

- any PV-device backends watching directories for added devices (no
  watch events when any device specific node is modified)

- any PV-device frontend and backend watching the "state" node of the
  other side, in case the other side plays dirty games by building
  large sub-trees beneath the "state" node

Changes in V2:
- some minor stale changes reverted
- last patch covered by the series now, man page updated

Juergen Gross (9):
  tools/xenstored: allow domU to get own features
  docs: clarify Xenstore watch depth feature
  tools/libs/store: add support to use watches with a depth parameter
  tools/xenstored: add depth information to watches
  tools/xenstored: add depth handling to XS_WATCH
  tools/xenstored: replace the fire_watches() exact parameter
  tools/xenstored: expand special watch handling with depth feature
  tools/xenstored: make XENSTORE_SERVER_FEATURE_WATCHDEPTH available
  tools/xs-clients: support depth with xenstore-watch

 docs/man/xenstore-watch.1.pod      |   9 ++
 docs/man/xl.cfg.5.pod.in           |   6 ++
 docs/misc/xenstore.txt             |  14 ++-
 tools/include/xenstore.h           |  16 +++
 tools/libs/store/libxenstore.map   |   2 +
 tools/libs/store/xs.c              | 102 +++++++++++++++---
 tools/xenstored/core.c             |  15 ++-
 tools/xenstored/domain.c           |  61 ++++++++---
 tools/xenstored/domain.h           |   2 +
 tools/xenstored/lu.c               |   3 +
 tools/xenstored/transaction.c      |  14 +--
 tools/xenstored/transaction.h      |   4 +-
 tools/xenstored/watch.c            | 161 ++++++++++++++++++++---------
 tools/xenstored/watch.h            |  10 +-
 tools/xs-clients/xenstore_client.c |  19 +++-
 xen/include/public/io/xs_wire.h    |   2 +
 16 files changed, 343 insertions(+), 97 deletions(-)

-- 
2.53.0



From xen-devel-bounces@lists.xenproject.org Tue Apr 21 07:42:30 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 21 Apr 2026 07:42:30 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1288423.1568709 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wF5kc-0003Pc-Mc; Tue, 21 Apr 2026 07:42:30 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1288423.1568709; Tue, 21 Apr 2026 07:42: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 1wF5kc-0003PU-Jl; Tue, 21 Apr 2026 07:42:30 +0000
Received: by outflank-mailman (input) for mailman id 1288423;
 Tue, 21 Apr 2026 07:42: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 1wF5kc-0003Ot-0Q
 for xen-devel@lists.xenproject.org; Tue, 21 Apr 2026 07:42:30 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wF5kZ-00Airr-Rd
 for xen-devel@lists.xenproject.org; Tue, 21 Apr 2026 09:42:29 +0200
Received: from [10.42.69.10] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <jgross@suse.com>)
 id 69e72a65-2eae-0a2a0a5409dd-0a2a450ad214-0
 for <xen-devel@lists.xenproject.org>; Tue, 21 Apr 2026 09:42:29 +0200
Received: from [195.135.223.131] (helo=smtp-out2.suse.de)
 by tlsNG-4011c0.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.1)
 (envelope-from <jgross@suse.com>)
 id 69e72a63-56b3-0a2a450a0019-c387df83ec02-3
 for <xen-devel@lists.xenproject.org>; Tue, 21 Apr 2026 09:42:28 +0200
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 6F7DF5BCE1;
 Tue, 21 Apr 2026 07:42:25 +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 32637593AF;
 Tue, 21 Apr 2026 07:42:24 +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 +l7oJ2Aq52kPNgAAD6G6ig
 (envelope-from <jgross@suse.com>); Tue, 21 Apr 2026 07:42: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=susede1 header.d=suse.com header.i="@suse.com" header.h="From:Date:Message-ID:To:Cc:MIME-Version:Content-Transfer-Encoding:In-Reply-To:References"; dkim=pass header.s=susede1 header.d=suse.com header.i="@suse.com" header.h="From:Date:Message-ID:To:Cc:MIME-Version:Content-Transfer-Encoding:In-Reply-To:References"
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=suse.com; s=susede1;
	t=1776757347; h=from:from:reply-to:date:date:message-id:message-id:to:to:cc:cc:
	 mime-version:mime-version:
	 content-transfer-encoding:content-transfer-encoding:
	 in-reply-to:in-reply-to:references:references;
	bh=iPRg4Ly3QUYx8/2y91VHHoWO9h9Vdg/2TbCdnDBP890=;
	b=AMglqklUBDXkFM732bW2DFNLJnZVFZjxO7t6qbJrjX7x6QITbC66D+UJSmKKJ7BdbYAbX7
	274/SU6B1ID5AtTGu457q3xIgBlj+Nn0fXFoKkHAROAPHEHoXeEWu86dcD2PYpCI5vBYIP
	34gU9KfVu0HItzAVi3odpc3kJei4DFo=
Authentication-Results: smtp-out2.suse.de;
	none
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=suse.com; s=susede1;
	t=1776757345; h=from:from:reply-to:date:date:message-id:message-id:to:to:cc:cc:
	 mime-version:mime-version:
	 content-transfer-encoding:content-transfer-encoding:
	 in-reply-to:in-reply-to:references:references;
	bh=iPRg4Ly3QUYx8/2y91VHHoWO9h9Vdg/2TbCdnDBP890=;
	b=YHumWoUwxokJOMJLqSgOVZ/DFcIwgdDUraFYeyOJdC2Fyab48AiFkUgtsbvhUwTFwzcFW2
	sV1Wbi8xNp7f9M+2gQZJH9qAIearK9CkzopEMK8kp8R9UiLeJ/feGPXkpODp7tBL+32PCq
	ZFVG/1BnoqTTbwSptYVDIpgkxiW2X7Y=
From: Juergen Gross <jgross@suse.com>
To: xen-devel@lists.xenproject.org
Cc: Juergen Gross <jgross@suse.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.pau@citrix.com>,
	Stefano Stabellini <sstabellini@kernel.org>,
	Jason Andryuk <jason.andryuk@amd.com>
Subject: [PATCH v2 2/9] docs: clarify Xenstore watch depth feature
Date: Tue, 21 Apr 2026 09:42:04 +0200
Message-ID: <20260421074211.308473-3-jgross@suse.com>
X-Mailer: git-send-email 2.53.0
In-Reply-To: <20260421074211.308473-1-jgross@suse.com>
References: <20260421074211.308473-1-jgross@suse.com>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit
X-Spamd-Result: default: False [-2.80 / 50.00];
	BAYES_HAM(-3.00)[99.99%];
	NEURAL_HAM_LONG(-1.00)[-1.000];
	MID_CONTAINS_FROM(1.00)[];
	R_MISSING_CHARSET(0.50)[];
	NEURAL_HAM_SHORT(-0.20)[-1.000];
	MIME_GOOD(-0.10)[text/plain];
	TO_MATCH_ENVRCPT_ALL(0.00)[];
	ARC_NA(0.00)[];
	RCVD_VIA_SMTP_AUTH(0.00)[];
	FROM_HAS_DN(0.00)[];
	MIME_TRACE(0.00)[0:+];
	DBL_BLOCKED_OPENRESOLVER(0.00)[amd.com:email,imap1.dmz-prg2.suse.org:helo,suse.com:mid,suse.com:email];
	FUZZY_RATELIMITED(0.00)[rspamd.com];
	RCPT_COUNT_SEVEN(0.00)[10];
	RCVD_COUNT_TWO(0.00)[2];
	FROM_EQ_ENVFROM(0.00)[];
	DKIM_SIGNED(0.00)[suse.com:s=susede1];
	TO_DN_SOME(0.00)[];
	RCVD_TLS_ALL(0.00)[]
X-Spam-Flag: NO
X-Spam-Score: -2.80
X-Spam-Level: 
X-purgate-ID: tlsNG-4011c0/1776757348-4556C8B7-702081A3/0/0
X-purgate-type: clean
X-purgate-size: 1421

Make it explicit that for watching the @releaseDomain/<domid> special
node, the XENSTORE_SERVER_FEATURE_WATCHDEPTH is needed.

Signed-off-by: Juergen Gross <jgross@suse.com>
Reviewed-by: Jason Andryuk <jason.andryuk@amd.com>
---
 docs/misc/xenstore.txt | 5 ++++-
 1 file changed, 4 insertions(+), 1 deletion(-)

diff --git a/docs/misc/xenstore.txt b/docs/misc/xenstore.txt
index 8a2c19d116..dba6471387 100644
--- a/docs/misc/xenstore.txt
+++ b/docs/misc/xenstore.txt
@@ -266,7 +266,8 @@ WATCH			<wpath>|<token>|[<depth>|]?
 	decimal value of 0 or larger): it denotes the directory levels
 	below <wpath> to consider for a match ("0" would not match for
 	a child of <wpath>, "1" would match only for a direct child,
-	etc.).
+	etc.).  The depth specification is possible only, if the
+	XENSTORE_SERVER_FEATURE_WATCHDEPTH feature is available.
 
 	<wpath> can be a <path> to watch or @<wspecial>.  In the
 	latter case <wspecial> may have any syntax but it matches
@@ -284,6 +285,8 @@ WATCH			<wpath>|<token>|[<depth>|]?
 	values are not supported.
 	For @releaseDomain it is possible to watch only for a specific
 	domain by specifying @releaseDomain/<domid> for the path.
+	This requires the XENSTORE_SERVER_FEATURE_WATCHDEPTH to be
+	available.
 
 	When a watch is first set up it is triggered once straight
 	away, with <path> equal to <wpath>.  Watches may be triggered
-- 
2.53.0



From xen-devel-bounces@lists.xenproject.org Tue Apr 21 07:42:35 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 21 Apr 2026 07:42:35 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1288427.1568718 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wF5kg-0003kv-Us; Tue, 21 Apr 2026 07:42:34 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1288427.1568718; Tue, 21 Apr 2026 07:42: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 1wF5kg-0003ko-RG; Tue, 21 Apr 2026 07:42:34 +0000
Received: by outflank-mailman (input) for mailman id 1288427;
 Tue, 21 Apr 2026 07:42:33 +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 1wF5kf-0003gn-Hj
 for xen-devel@lists.xenproject.org; Tue, 21 Apr 2026 07:42:33 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wF5ke-00G0bm-UF
 for xen-devel@lists.xenproject.org; Tue, 21 Apr 2026 09:42:32 +0200
Received: from [10.42.69.1] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <jgross@suse.com>)
 id 69e72a65-bab6-0a2a0a5309dd-0a2a45019d0a-16
 for <xen-devel@lists.xenproject.org>; Tue, 21 Apr 2026 09:42:32 +0200
Received: from [195.135.223.131] (helo=smtp-out2.suse.de)
 by tlsNG-d62444.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.1)
 (envelope-from <jgross@suse.com>)
 id 69e72a68-c1f2-0a2a45010019-c387df83e64e-3
 for <xen-devel@lists.xenproject.org>; Tue, 21 Apr 2026 09:42:32 +0200
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 DB1465BCF7;
 Tue, 21 Apr 2026 07:42:30 +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 BC07E593AF;
 Tue, 21 Apr 2026 07:42:30 +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 APu2LGYq52kkNgAAD6G6ig
 (envelope-from <jgross@suse.com>); Tue, 21 Apr 2026 07:42: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=susede1 header.d=suse.com header.i="@suse.com" header.h="From:Date:Message-ID:To:Cc:MIME-Version:Content-Transfer-Encoding:In-Reply-To:References"; dkim=pass header.s=susede1 header.d=suse.com header.i="@suse.com" header.h="From:Date:Message-ID:To:Cc:MIME-Version:Content-Transfer-Encoding:In-Reply-To:References"
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=suse.com; s=susede1;
	t=1776757351; h=from:from:reply-to:date:date:message-id:message-id:to:to:cc:cc:
	 mime-version:mime-version:
	 content-transfer-encoding:content-transfer-encoding:
	 in-reply-to:in-reply-to:references:references;
	bh=A9/LjZwHaY/WSjnhzdGz7a4hIoUeCs2d8a5kulnUVaQ=;
	b=MT5Vwtx8VnnpCB53Z/CnAwrgEqwRk9i24LthB00dDjMTWQ9SNq2bgjdjm7feZnNRAiHVVt
	RK3tAGFDWBFkTvzsITlv61UlxJ/KA0wDdSpOoHxer31hi+xjMTku84rrtA85d8sWnk7Vu+
	vYnM8nNWHTMhMES9JoDJPnh+x3RKOpc=
Authentication-Results: smtp-out2.suse.de;
	none
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=suse.com; s=susede1;
	t=1776757350; h=from:from:reply-to:date:date:message-id:message-id:to:to:cc:cc:
	 mime-version:mime-version:
	 content-transfer-encoding:content-transfer-encoding:
	 in-reply-to:in-reply-to:references:references;
	bh=A9/LjZwHaY/WSjnhzdGz7a4hIoUeCs2d8a5kulnUVaQ=;
	b=JrZj0EOd5dpSIXt79POy8P1Iy1+QvB0uZZkMM4VevCpvEjKbZwX0Gfd4EQb7sXXT+T0tIQ
	1qkcc8nD/q4wfLHp3nSofVLaJ/YMpy3ptV6b/N7LJIklEVK+tArHQVfak7nCux7BgUh3Mx
	7TkN66RnfXeMpAJx09dWl5kOUhOnoQo=
From: Juergen Gross <jgross@suse.com>
To: xen-devel@lists.xenproject.org
Cc: Juergen Gross <jgross@suse.com>,
	Anthony PERARD <anthony.perard@vates.tech>,
	Julien Grall <julien@xen.org>
Subject: [PATCH v2 3/9] tools/libs/store: add support to use watches with a depth parameter
Date: Tue, 21 Apr 2026 09:42:05 +0200
Message-ID: <20260421074211.308473-4-jgross@suse.com>
X-Mailer: git-send-email 2.53.0
In-Reply-To: <20260421074211.308473-1-jgross@suse.com>
References: <20260421074211.308473-1-jgross@suse.com>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit
X-Spam-Score: -2.80
X-Spam-Level: 
X-Spamd-Result: default: False [-2.80 / 50.00];
	BAYES_HAM(-3.00)[100.00%];
	NEURAL_HAM_LONG(-1.00)[-1.000];
	MID_CONTAINS_FROM(1.00)[];
	R_MISSING_CHARSET(0.50)[];
	NEURAL_HAM_SHORT(-0.20)[-1.000];
	MIME_GOOD(-0.10)[text/plain];
	TO_MATCH_ENVRCPT_ALL(0.00)[];
	FROM_HAS_DN(0.00)[];
	ARC_NA(0.00)[];
	MIME_TRACE(0.00)[0:+];
	TO_DN_SOME(0.00)[];
	DBL_BLOCKED_OPENRESOLVER(0.00)[suse.com:mid,suse.com:email,imap1.dmz-prg2.suse.org:helo];
	RCVD_VIA_SMTP_AUTH(0.00)[];
	FROM_EQ_ENVFROM(0.00)[];
	RCVD_COUNT_TWO(0.00)[2];
	FUZZY_RATELIMITED(0.00)[rspamd.com];
	DKIM_SIGNED(0.00)[suse.com:s=susede1];
	RCPT_COUNT_THREE(0.00)[4];
	RCVD_TLS_ALL(0.00)[]
X-Spam-Flag: NO
X-purgate-ID: tlsNG-d62444/1776757352-B6A61FF4-E1024CFE/0/0
X-purgate-type: clean
X-purgate-size: 8639

Add a new xs_watch_depth() function to libxenstore allowing to limit
the scope of a Xenstore watch. It can be used only in case Xenstore is
supporting the XENSTORE_SERVER_FEATURE_WATCHDEPTH feature.

For convenience add a xs_watch_try_depth() wrapper, which will call
xs_watch_depth() if supported and xs_watch() otherwise.

Cache the supported features of Xenstore in order not having to get
them from Xenstore for each call of one of the new functions.

Signed-off-by: Juergen Gross <jgross@suse.com>
---
V2:
- undo unmotivated change of variable scope (Jason Andryuk)
---
 docs/man/xl.cfg.5.pod.in         |   6 ++
 tools/include/xenstore.h         |  16 +++++
 tools/libs/store/libxenstore.map |   2 +
 tools/libs/store/xs.c            | 102 +++++++++++++++++++++++++++----
 xen/include/public/io/xs_wire.h  |   2 +
 5 files changed, 116 insertions(+), 12 deletions(-)

diff --git a/docs/man/xl.cfg.5.pod.in b/docs/man/xl.cfg.5.pod.in
index 3aac0bc4fb..2f77016ecf 100644
--- a/docs/man/xl.cfg.5.pod.in
+++ b/docs/man/xl.cfg.5.pod.in
@@ -740,6 +740,12 @@ Xenstore is capable to reconnect to a guest.
 Xenstore will present an error value in case it disconnects due to an error
 condition.
 
+=item B<0x00000004>
+
+Xenstore supports to set watches with a limited depth (depth 0 matches
+only the watched node, depth 1 matches the node and its direct children,
+etc.).
+
 =back
 
 The features supported by the running Xenstore instance can be retrieved
diff --git a/tools/include/xenstore.h b/tools/include/xenstore.h
index bf6d767a22..9422ed5657 100644
--- a/tools/include/xenstore.h
+++ b/tools/include/xenstore.h
@@ -177,6 +177,22 @@ bool xs_set_permissions(struct xs_handle *h, xs_transaction_t t,
  */
 bool xs_watch(struct xs_handle *h, const char *path, const char *token);
 
+/* Same as xs_watch(), but with limiting the matching for modified
+ * children to a specified depth (depth 0 only matches the node itself,
+ * depth 1 will additionally match direct children of the node, etc.).
+ * Only supported if the XENSTORE_SERVER_FEATURE_WATCHDEPTH (4) is set
+ * in the returned features of xs_get_features_supported().
+ */
+bool xs_watch_depth(struct xs_handle *h, const char *path, const char *token,
+		    unsigned int depth);
+
+/* If supported, same as xs_watch_depth(), use xs_watch() otherwise.
+ * As a result watches might trigger for nodes below the watched path, too.
+ * Not to be used for special watches!
+ */
+bool xs_watch_try_depth(struct xs_handle *h, const char *path,
+			const char *token, unsigned int depth);
+
 /* Return the FD to poll on to see if a watch has fired. */
 int xs_fileno(struct xs_handle *h);
 
diff --git a/tools/libs/store/libxenstore.map b/tools/libs/store/libxenstore.map
index a08ddd549f..7067068998 100644
--- a/tools/libs/store/libxenstore.map
+++ b/tools/libs/store/libxenstore.map
@@ -52,4 +52,6 @@ VERS_4.2 {
 		xs_set_global_quota;
 		xs_get_domain_quota;
 		xs_set_domain_quota;
+		xs_watch_depth;
+		xs_watch_try_depth;
 } VERS_4.1;
diff --git a/tools/libs/store/xs.c b/tools/libs/store/xs.c
index 06462445e0..cb3508a86a 100644
--- a/tools/libs/store/xs.c
+++ b/tools/libs/store/xs.c
@@ -984,16 +984,8 @@ bool xs_restrict(struct xs_handle *h, unsigned domid)
 	return false;
 }
 
-/* Watch a node for changes (poll on fd to detect, or call read_watch()).
- * When the node (or any child) changes, fd will become readable.
- * Token is returned when watch is read, to allow matching.
- * Returns false on failure.
- */
-bool xs_watch(struct xs_handle *h, const char *path, const char *token)
+static bool xs_watch_helper(struct xs_handle *h)
 {
-	struct xsd_sockmsg msg = { .type = XS_WATCH };
-	struct iovec iov[3];
-
 #ifdef USE_PTHREAD
 #define DEFAULT_THREAD_STACKSIZE (16 * 1024)
 /* NetBSD doesn't have PTHREAD_STACK_MIN. */
@@ -1001,8 +993,8 @@ bool xs_watch(struct xs_handle *h, const char *path, const char *token)
 # define PTHREAD_STACK_MIN 0
 #endif
 
-#define READ_THREAD_STACKSIZE 					\
-	((DEFAULT_THREAD_STACKSIZE < PTHREAD_STACK_MIN) ? 	\
+#define READ_THREAD_STACKSIZE					\
+	((DEFAULT_THREAD_STACKSIZE < PTHREAD_STACK_MIN) ?	\
 	 PTHREAD_STACK_MIN : DEFAULT_THREAD_STACKSIZE)
 
 	/* We dynamically create a reader thread on demand. */
@@ -1050,16 +1042,89 @@ bool xs_watch(struct xs_handle *h, const char *path, const char *token)
 	mutex_unlock(&h->request_mutex);
 #endif
 
+	return true;
+}
+
+/* Watch a node for changes (poll on fd to detect, or call read_watch()).
+ * When the node (or any child) changes, fd will become readable.
+ * Token is returned when watch is read, to allow matching.
+ * Returns false on failure.
+ */
+bool xs_watch(struct xs_handle *h, const char *path, const char *token)
+{
+	struct xsd_sockmsg msg = { .type = XS_WATCH };
+	struct iovec iov[3];
+
+	if (!xs_watch_helper(h))
+		return false;
+
+	iov[0].iov_base = &msg;
+	iov[0].iov_len  = sizeof(msg);
+	iov[1].iov_base = (void *)path;
+	iov[1].iov_len  = strlen(path) + 1;
+	iov[2].iov_base = (void *)token;
+	iov[2].iov_len  = strlen(token) + 1;
+
+	return xs_bool(xs_talkv(h, iov, ARRAY_SIZE(iov), NULL));
+}
+
+/* Same as xs_watch(), but with limiting the matching for modified
+ * children to a specified depth (depth 0 only matches the node itself,
+ * depth 1 will additionally match direct children of the node, etc.).
+ * Only supported if the XENSTORE_SERVER_FEATURE_WATCHDEPTH (4) is set
+ * in the returned features of xs_get_features_supported().
+ */
+bool xs_watch_depth(struct xs_handle *h, const char *path, const char *token,
+		    unsigned int depth)
+{
+	struct xsd_sockmsg msg = { .type = XS_WATCH };
+	struct iovec iov[4];
+	char depthstr[MAX_STRLEN(depth)];
+	static bool depth_supported;
+
+	if (!xs_watch_helper(h))
+		return false;
+
+	if (!depth_supported) {
+		unsigned int features;
+
+		if (!xs_get_features_supported(h, &features))
+			return false;
+		if (!(features & XENSTORE_SERVER_FEATURE_WATCHDEPTH))
+			return false;
+		depth_supported = true;
+	}
+
+	snprintf(depthstr, sizeof(depthstr), "%u", depth);
+
 	iov[0].iov_base = &msg;
 	iov[0].iov_len  = sizeof(msg);
 	iov[1].iov_base = (void *)path;
 	iov[1].iov_len  = strlen(path) + 1;
 	iov[2].iov_base = (void *)token;
 	iov[2].iov_len  = strlen(token) + 1;
+	iov[3].iov_base = depthstr;
+	iov[3].iov_len = strlen(depthstr) + 1;
 
 	return xs_bool(xs_talkv(h, iov, ARRAY_SIZE(iov), NULL));
 }
 
+/* If supported, same as xs_watch_depth(), use xs_watch() otherwise.
+ * As a result watches might trigger for nodes below the watched path, too.
+ * Not to be used for special watches!
+ */
+bool xs_watch_try_depth(struct xs_handle *h, const char *path,
+			const char *token, unsigned int depth)
+{
+	unsigned int features;
+
+	if (xs_get_features_supported(h, &features) &&
+	    (features & XENSTORE_SERVER_FEATURE_WATCHDEPTH) &&
+	    xs_watch_depth(h, path, token, depth))
+		return true;
+
+	return xs_watch(h, path, token);
+}
 
 /* Clear the pipe token if there are no more pending watchs.
  * We suppose the watch_mutex is already taken.
@@ -1420,13 +1485,26 @@ static bool xs_uint(char *reply, unsigned int *uintval)
 
 bool xs_get_features_supported(struct xs_handle *h, unsigned int *features)
 {
+	static unsigned int own_features = 0;
+	static bool features_valid = false;
 	struct xsd_sockmsg msg = { .type = XS_GET_FEATURE };
 	struct iovec iov[1];
 
+	if (features_valid) {
+		*features = own_features;
+		return true;
+	}
+
 	iov[0].iov_base = &msg;
 	iov[0].iov_len  = sizeof(msg);
 
-	return xs_uint(xs_talkv(h, iov, ARRAY_SIZE(iov), NULL), features);
+	if (!xs_uint(xs_talkv(h, iov, ARRAY_SIZE(iov), NULL), &own_features))
+		return false;
+
+	features_valid = true;
+	*features = own_features;
+
+	return true;
 }
 
 bool xs_get_features_domain(struct xs_handle *h, unsigned int domid,
diff --git a/xen/include/public/io/xs_wire.h b/xen/include/public/io/xs_wire.h
index d2e2b8b9eb..2e763bc877 100644
--- a/xen/include/public/io/xs_wire.h
+++ b/xen/include/public/io/xs_wire.h
@@ -124,6 +124,8 @@ struct xenstore_domain_interface {
 #define XENSTORE_SERVER_FEATURE_RECONNECTION 1
 /* The presence of the "error" field in the ring page */
 #define XENSTORE_SERVER_FEATURE_ERROR        2
+/* The XS_WATCH command can be used with a <depth> parameter */
+#define XENSTORE_SERVER_FEATURE_WATCHDEPTH   4
 
 /* Valid values for the connection field */
 #define XENSTORE_CONNECTED 0 /* the steady-state */
-- 
2.53.0



From xen-devel-bounces@lists.xenproject.org Tue Apr 21 07:42:39 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 21 Apr 2026 07:42:39 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1288434.1568727 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wF5kl-00046Q-4A; Tue, 21 Apr 2026 07:42:39 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1288434.1568727; Tue, 21 Apr 2026 07:42: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 1wF5kl-00046H-0l; Tue, 21 Apr 2026 07:42:39 +0000
Received: by outflank-mailman (input) for mailman id 1288434;
 Tue, 21 Apr 2026 07:42:37 +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 1wF5kj-00043K-F0
 for xen-devel@lists.xenproject.org; Tue, 21 Apr 2026 07:42:37 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wF5kh-00AivQ-A1
 for xen-devel@lists.xenproject.org; Tue, 21 Apr 2026 09:42:36 +0200
Received: from [10.42.69.8] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <jgross@suse.com>)
 id 69e72a6b-2eae-0a2a0a5409dd-0a2a450894e2-14
 for <xen-devel@lists.xenproject.org>; Tue, 21 Apr 2026 09:42:36 +0200
Received: from [195.135.223.131] (helo=smtp-out2.suse.de)
 by tlsNG-c1860d.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.1)
 (envelope-from <jgross@suse.com>)
 id 69e72a6c-63b5-0a2a45080019-c387df83ae3e-3
 for <xen-devel@lists.xenproject.org>; Tue, 21 Apr 2026 09:42:36 +0200
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 555535BCEE;
 Tue, 21 Apr 2026 07:42:36 +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 30ED8593AF;
 Tue, 21 Apr 2026 07:42:36 +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 DLHkCmwq52lkNgAAD6G6ig
 (envelope-from <jgross@suse.com>); Tue, 21 Apr 2026 07:42: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=susede1 header.d=suse.com header.i="@suse.com" header.h="From:Date:Message-ID:To:Cc:MIME-Version:Content-Transfer-Encoding:In-Reply-To:References"; dkim=pass header.s=susede1 header.d=suse.com header.i="@suse.com" header.h="From:Date:Message-ID:To:Cc:MIME-Version:Content-Transfer-Encoding:In-Reply-To:References"
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=suse.com; s=susede1;
	t=1776757356; h=from:from:reply-to:date:date:message-id:message-id:to:to:cc:cc:
	 mime-version:mime-version:
	 content-transfer-encoding:content-transfer-encoding:
	 in-reply-to:in-reply-to:references:references;
	bh=yvTy7t/SOB7ZmlQaiUwnQjIziWvNFoKtoQktytGzRzE=;
	b=Ic8wK2spGH4AKeuUrHfNo8rO8FmowfiZKk3jGG0n+/uRb9E/VyDiclt14w8TIjt0gAu0Xx
	dpcmWuK1m85op6i0xLxtwJ401OBKLDRGoFpiN1n8JcAYopY6oFXhc/VIYYNuPOk2mWC6iS
	yPt0gG2IsupGS6u6tfCNzEdEl63KO3Y=
Authentication-Results: smtp-out2.suse.de;
	dkim=pass header.d=suse.com header.s=susede1 header.b=Ic8wK2sp
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=suse.com; s=susede1;
	t=1776757356; h=from:from:reply-to:date:date:message-id:message-id:to:to:cc:cc:
	 mime-version:mime-version:
	 content-transfer-encoding:content-transfer-encoding:
	 in-reply-to:in-reply-to:references:references;
	bh=yvTy7t/SOB7ZmlQaiUwnQjIziWvNFoKtoQktytGzRzE=;
	b=Ic8wK2spGH4AKeuUrHfNo8rO8FmowfiZKk3jGG0n+/uRb9E/VyDiclt14w8TIjt0gAu0Xx
	dpcmWuK1m85op6i0xLxtwJ401OBKLDRGoFpiN1n8JcAYopY6oFXhc/VIYYNuPOk2mWC6iS
	yPt0gG2IsupGS6u6tfCNzEdEl63KO3Y=
From: Juergen Gross <jgross@suse.com>
To: xen-devel@lists.xenproject.org
Cc: Juergen Gross <jgross@suse.com>,
	Julien Grall <julien@xen.org>,
	Anthony PERARD <anthony.perard@vates.tech>,
	Jason Andryuk <jason.andryuk@amd.com>
Subject: [PATCH v2 4/9] tools/xenstored: add depth information to watches
Date: Tue, 21 Apr 2026 09:42:06 +0200
Message-ID: <20260421074211.308473-5-jgross@suse.com>
X-Mailer: git-send-email 2.53.0
In-Reply-To: <20260421074211.308473-1-jgross@suse.com>
References: <20260421074211.308473-1-jgross@suse.com>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit
X-Spamd-Result: default: False [-3.01 / 50.00];
	BAYES_HAM(-3.00)[100.00%];
	NEURAL_HAM_LONG(-1.00)[-1.000];
	MID_CONTAINS_FROM(1.00)[];
	R_MISSING_CHARSET(0.50)[];
	R_DKIM_ALLOW(-0.20)[suse.com:s=susede1];
	NEURAL_HAM_SHORT(-0.20)[-1.000];
	MIME_GOOD(-0.10)[text/plain];
	MX_GOOD(-0.01)[];
	ARC_NA(0.00)[];
	FUZZY_RATELIMITED(0.00)[rspamd.com];
	RCVD_COUNT_TWO(0.00)[2];
	MIME_TRACE(0.00)[0:+];
	RCVD_VIA_SMTP_AUTH(0.00)[];
	SPAMHAUS_XBL(0.00)[2a07:de40:b281:104:10:150:64:97:from];
	TO_DN_SOME(0.00)[];
	RBL_SPAMHAUS_BLOCKED_OPENRESOLVER(0.00)[2a07:de40:b281:104:10:150:64:97:from];
	RECEIVED_SPAMHAUS_BLOCKED_OPENRESOLVER(0.00)[2a07:de40:b281:106:10:150:64:167:received];
	FROM_HAS_DN(0.00)[];
	TO_MATCH_ENVRCPT_ALL(0.00)[];
	DBL_BLOCKED_OPENRESOLVER(0.00)[imap1.dmz-prg2.suse.org:helo,imap1.dmz-prg2.suse.org:rdns,amd.com:email,suse.com:mid,suse.com:dkim,suse.com:email];
	RCVD_TLS_ALL(0.00)[];
	FROM_EQ_ENVFROM(0.00)[];
	RCPT_COUNT_FIVE(0.00)[5];
	DKIM_SIGNED(0.00)[suse.com:s=susede1];
	DKIM_TRACE(0.00)[suse.com:+]
X-Rspamd-Action: no action
X-Spam-Flag: NO
X-Spam-Score: -3.01
X-Spam-Level: 
X-Rspamd-Server: rspamd1.dmz-prg2.suse.org
X-Rspamd-Queue-Id: 555535BCEE
X-purgate-ID: tlsNG-c1860d/1776757356-C357FDB1-A71BC0D7/0/0
X-purgate-type: clean
X-purgate-size: 7782

Add the depth for matching subdirectories of a watch to the watch
handling. A depth value of -1 is used for the current model of no
limit.

Signed-off-by: Juergen Gross <jgross@suse.com>
Reviewed-by: Jason Andryuk <jason.andryuk@amd.com>
---
 tools/xenstored/lu.c    |   3 ++
 tools/xenstored/watch.c | 110 ++++++++++++++++++++++++++++------------
 tools/xenstored/watch.h |   1 +
 3 files changed, 81 insertions(+), 33 deletions(-)

diff --git a/tools/xenstored/lu.c b/tools/xenstored/lu.c
index eaffdbc69e..7d9f086a59 100644
--- a/tools/xenstored/lu.c
+++ b/tools/xenstored/lu.c
@@ -183,6 +183,9 @@ void lu_read_state(void)
 		case XS_STATE_TYPE_WATCH:
 			read_state_watch(ctx, state.buf);
 			break;
+		case XS_STATE_TYPE_WATCH_EXT:
+			read_state_watch_ext(ctx, state.buf);
+			break;
 		case XS_STATE_TYPE_TA:
 			xprintf("live-update: ignore transaction record\n");
 			break;
diff --git a/tools/xenstored/watch.c b/tools/xenstored/watch.c
index becb9c339d..42e24d3201 100644
--- a/tools/xenstored/watch.c
+++ b/tools/xenstored/watch.c
@@ -39,26 +39,35 @@ struct watch
 	/* Offset into path for skipping prefix (used for relative paths). */
 	unsigned int prefix_len;
 
+	int depth;	/* -1: no depth limit. */
 	char *token;
 	char *node;
 };
 
 /* Is child a subnode of parent, or equal? */
-static bool is_child(const char *child, const char *parent)
+static bool is_child(const char *child, const char *parent, int depth)
 {
-	unsigned int len = strlen(parent);
-
-	/*
-	 * / should really be "" for this algorithm to work, but that's a
-	 * usability nightmare.
-	 */
-	if (streq(parent, "/"))
-		return true;
+	unsigned int len = strlen(parent);	/* len == 1 if parent is "/". */
+	unsigned int sub_levels = (len == 1) ? 1 : 0;
 
 	if (strncmp(child, parent, len) != 0)
 		return false;
 
-	return child[len] == '/' || child[len] == '\0';
+	if (child[len] != '/' && child[len] != '\0' && len > 1)
+		return false;
+
+	if (depth < 0 || child[len] == '\0')
+		return true;
+
+	while (sub_levels <= depth) {
+		if (child[len] == '\0')
+			return true;
+		if (child[len] == '/')
+			sub_levels++;
+		len++;
+	}
+
+	return false;
 }
 
 static const char *get_watch_path(const struct watch *watch, const char *name)
@@ -145,7 +154,7 @@ void fire_watches(struct connection *conn, const void *ctx, const char *name,
 						   get_watch_path(watch, name),
 						   watch->token);
 			} else {
-				if (is_child(name, watch->node))
+				if (is_child(name, watch->node, watch->depth))
 					send_event(req, i,
 						   get_watch_path(watch, name),
 						   watch->token);
@@ -170,7 +179,7 @@ static int check_watch_path(struct connection *conn, const void *ctx,
 }
 
 static struct watch *add_watch(struct connection *conn, const char *path,
-			       const char *token, bool relative,
+			       const char *token, int depth, bool relative,
 			       bool no_quota_check)
 {
 	struct watch *watch;
@@ -178,6 +187,7 @@ static struct watch *add_watch(struct connection *conn, const char *path,
 	watch = talloc(conn, struct watch);
 	if (!watch)
 		goto nomem;
+	watch->depth = depth;
 	watch->node = talloc_strdup(watch, path);
 	watch->token = talloc_strdup(watch, token);
 	if (!watch->node || !watch->token)
@@ -204,6 +214,7 @@ int do_watch(const void *ctx, struct connection *conn, struct buffered_data *in)
 {
 	struct watch *watch;
 	const char *vec[2];
+	int depth = -1;
 	bool relative;
 
 	if (get_strings(in, vec, ARRAY_SIZE(vec)) != ARRAY_SIZE(vec))
@@ -223,7 +234,7 @@ int do_watch(const void *ctx, struct connection *conn, struct buffered_data *in)
 	if (domain_quota_add_exceeds(conn->domain, ACC_WATCH, 1))
 		return ENOSPC;
 
-	watch = add_watch(conn, vec[0], vec[1], relative, false);
+	watch = add_watch(conn, vec[0], vec[1], depth, relative, false);
 	if (!watch)
 		return errno;
 
@@ -287,28 +298,47 @@ const char *dump_state_watches(FILE *fp, struct connection *conn,
 	const char *ret = NULL;
 	struct watch *watch;
 	struct xs_state_watch sw;
+	struct xs_state_watch_ext swe;
 	struct xs_state_record_header head;
 	const char *path;
-
-	head.type = XS_STATE_TYPE_WATCH;
+	size_t path_len, token_len;
 
 	list_for_each_entry(watch, &conn->watches, list) {
-		head.length = sizeof(sw);
-
-		sw.conn_id = conn_id;
 		path = get_watch_path(watch, watch->node);
-		sw.path_length = strlen(path) + 1;
-		sw.token_length = strlen(watch->token) + 1;
-		head.length += sw.path_length + sw.token_length;
+		path_len = strlen(path) + 1;
+		token_len = strlen(watch->token) + 1;
+
+		if (watch->depth >= 0) {
+			head.type = XS_STATE_TYPE_WATCH_EXT;
+			head.length = sizeof(swe);
+			swe.conn_id = conn_id;
+			swe.path_length = path_len;
+			swe.token_length = token_len;
+			swe.depth = watch->depth;
+		} else {
+			head.type = XS_STATE_TYPE_WATCH;
+			head.length = sizeof(sw);
+			sw.conn_id = conn_id;
+			sw.path_length = path_len;
+			sw.token_length = token_len;
+		}
+
+		head.length += path_len + token_len;
 		head.length = ROUNDUP(head.length, 3);
 		if (fwrite(&head, sizeof(head), 1, fp) != 1)
 			return "Dump watch state error";
-		if (fwrite(&sw, sizeof(sw), 1, fp) != 1)
-			return "Dump watch state error";
 
-		if (fwrite(path, sw.path_length, 1, fp) != 1)
+		if (watch->depth >= 0) {
+			if (fwrite(&swe, sizeof(sw), 1, fp) != 1)
+				return "Dump watch state ext error";
+		} else {
+			if (fwrite(&sw, sizeof(sw), 1, fp) != 1)
+				return "Dump watch state error";
+		}
+
+		if (fwrite(path, path_len, 1, fp) != 1)
 			return "Dump watch path error";
-		if (fwrite(watch->token, sw.token_length, 1, fp) != 1)
+		if (fwrite(watch->token, token_len, 1, fp) != 1)
 			return "Dump watch token error";
 
 		ret = dump_state_align(fp);
@@ -319,27 +349,41 @@ const char *dump_state_watches(FILE *fp, struct connection *conn,
 	return ret;
 }
 
-void read_state_watch(const void *ctx, const void *state)
+static void process_state_watch(const void *ctx, unsigned int conn_id,
+				const char *path, const char *token,
+				int depth)
 {
-	const struct xs_state_watch *sw = state;
 	struct connection *conn;
-	const char *path, *token;
 	bool relative;
 
-	conn = get_connection_by_id(sw->conn_id);
+	conn = get_connection_by_id(conn_id);
 	if (!conn)
 		barf("connection not found for read watch");
 
-	path = (char *)sw->data;
-	token = path + sw->path_length;
-
 	/* Don't check success, we want the relative information only. */
 	check_watch_path(conn, ctx, &path, &relative);
 	if (!path)
 		barf("allocation error for read watch");
 
-	if (!add_watch(conn, path, token, relative, true))
+	if (!add_watch(conn, path, token, depth, relative, true))
 		barf("error adding watch");
+
+}
+
+void read_state_watch(const void *ctx, const void *state)
+{
+	const struct xs_state_watch *sw = state;
+
+	process_state_watch(ctx, sw->conn_id, (char *)sw->data,
+			    (char *)sw->data + sw->path_length, -1);
+}
+
+void read_state_watch_ext(const void *ctx, const void *state)
+{
+	const struct xs_state_watch_ext *swe = state;
+
+	process_state_watch(ctx, swe->conn_id, (char *)swe->data,
+			    (char *)swe->data + swe->path_length, swe->depth);
 }
 
 /*
diff --git a/tools/xenstored/watch.h b/tools/xenstored/watch.h
index d9ac6a334a..afdfdc6b2f 100644
--- a/tools/xenstored/watch.h
+++ b/tools/xenstored/watch.h
@@ -37,5 +37,6 @@ const char *dump_state_watches(FILE *fp, struct connection *conn,
 			       unsigned int conn_id);
 
 void read_state_watch(const void *ctx, const void *state);
+void read_state_watch_ext(const void *ctx, const void *state);
 
 #endif /* _XENSTORED_WATCH_H */
-- 
2.53.0



From xen-devel-bounces@lists.xenproject.org Tue Apr 21 07:42:44 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 21 Apr 2026 07:42:44 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1288437.1568736 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wF5kq-0004Y8-Iq; Tue, 21 Apr 2026 07:42:44 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1288437.1568736; Tue, 21 Apr 2026 07: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 1wF5kq-0004XE-EJ; Tue, 21 Apr 2026 07:42:44 +0000
Received: by outflank-mailman (input) for mailman id 1288437;
 Tue, 21 Apr 2026 07:42:42 +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 1wF5ko-0004Ra-PW
 for xen-devel@lists.xenproject.org; Tue, 21 Apr 2026 07:42:42 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wF5ko-00G0fB-5y
 for xen-devel@lists.xenproject.org; Tue, 21 Apr 2026 09:42:42 +0200
Received: from [10.42.69.2] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <jgross@suse.com>)
 id 69e72a6c-bab6-0a2a0a5309dd-0a2a4502ea7e-6
 for <xen-devel@lists.xenproject.org>; Tue, 21 Apr 2026 09:42:42 +0200
Received: from [195.135.223.130] (helo=smtp-out1.suse.de)
 by tlsNG-720697.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.1)
 (envelope-from <jgross@suse.com>)
 id 69e72a71-af86-0a2a45020019-c387df82b406-3
 for <xen-devel@lists.xenproject.org>; Tue, 21 Apr 2026 09:42:42 +0200
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 C321A6A7F6;
 Tue, 21 Apr 2026 07:42: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 9F420593AF;
 Tue, 21 Apr 2026 07:42:41 +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 vkPTJXEq52mdNgAAD6G6ig
 (envelope-from <jgross@suse.com>); Tue, 21 Apr 2026 07:42: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=susede1 header.d=suse.com header.i="@suse.com" header.h="From:Date:Message-ID:To:Cc:MIME-Version:Content-Transfer-Encoding:In-Reply-To:References"; dkim=pass header.s=susede1 header.d=suse.com header.i="@suse.com" header.h="From:Date:Message-ID:To:Cc:MIME-Version:Content-Transfer-Encoding:In-Reply-To:References"
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=suse.com; s=susede1;
	t=1776757361; h=from:from:reply-to:date:date:message-id:message-id:to:to:cc:cc:
	 mime-version:mime-version:
	 content-transfer-encoding:content-transfer-encoding:
	 in-reply-to:in-reply-to:references:references;
	bh=NTh41V/BJEBo815LhqNiJ9PaLEavgsQdAx4aeK8HTHQ=;
	b=KIp/c1/FL5788YEL97/5yCrDmrY9qzCmzNSl8AFX2Or3843M96TG5nj7SUP3C3LJQ+WRqV
	Xnr52EeuBeT/GvCkj6lUWZNRvOcVgN4kINR/ZKtQOCp6mvpi9/mb2PTtO9ooHdGppIkaqu
	3f8bmeujbUrlj7ILBQHefVqA+sqXRd8=
Authentication-Results: smtp-out1.suse.de;
	dkim=pass header.d=suse.com header.s=susede1 header.b="KIp/c1/F"
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=suse.com; s=susede1;
	t=1776757361; h=from:from:reply-to:date:date:message-id:message-id:to:to:cc:cc:
	 mime-version:mime-version:
	 content-transfer-encoding:content-transfer-encoding:
	 in-reply-to:in-reply-to:references:references;
	bh=NTh41V/BJEBo815LhqNiJ9PaLEavgsQdAx4aeK8HTHQ=;
	b=KIp/c1/FL5788YEL97/5yCrDmrY9qzCmzNSl8AFX2Or3843M96TG5nj7SUP3C3LJQ+WRqV
	Xnr52EeuBeT/GvCkj6lUWZNRvOcVgN4kINR/ZKtQOCp6mvpi9/mb2PTtO9ooHdGppIkaqu
	3f8bmeujbUrlj7ILBQHefVqA+sqXRd8=
From: Juergen Gross <jgross@suse.com>
To: xen-devel@lists.xenproject.org
Cc: Juergen Gross <jgross@suse.com>,
	Julien Grall <julien@xen.org>,
	Anthony PERARD <anthony.perard@vates.tech>,
	Jason Andryuk <jason.andryuk@amd.com>
Subject: [PATCH v2 5/9] tools/xenstored: add depth handling to XS_WATCH
Date: Tue, 21 Apr 2026 09:42:07 +0200
Message-ID: <20260421074211.308473-6-jgross@suse.com>
X-Mailer: git-send-email 2.53.0
In-Reply-To: <20260421074211.308473-1-jgross@suse.com>
References: <20260421074211.308473-1-jgross@suse.com>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit
X-Rspamd-Action: no action
X-Rspamd-Server: rspamd2.dmz-prg2.suse.org
X-Spamd-Result: default: False [-3.01 / 50.00];
	BAYES_HAM(-3.00)[100.00%];
	NEURAL_HAM_LONG(-1.00)[-1.000];
	MID_CONTAINS_FROM(1.00)[];
	R_MISSING_CHARSET(0.50)[];
	R_DKIM_ALLOW(-0.20)[suse.com:s=susede1];
	NEURAL_HAM_SHORT(-0.20)[-1.000];
	MIME_GOOD(-0.10)[text/plain];
	MX_GOOD(-0.01)[];
	ARC_NA(0.00)[];
	RBL_SPAMHAUS_BLOCKED_OPENRESOLVER(0.00)[2a07:de40:b281:104:10:150:64:97:from];
	RCVD_COUNT_TWO(0.00)[2];
	MIME_TRACE(0.00)[0:+];
	RCVD_VIA_SMTP_AUTH(0.00)[];
	SPAMHAUS_XBL(0.00)[2a07:de40:b281:104:10:150:64:97:from];
	TO_DN_SOME(0.00)[];
	FUZZY_RATELIMITED(0.00)[rspamd.com];
	RECEIVED_SPAMHAUS_BLOCKED_OPENRESOLVER(0.00)[2a07:de40:b281:106:10:150:64:167:received];
	FROM_HAS_DN(0.00)[];
	TO_MATCH_ENVRCPT_ALL(0.00)[];
	DBL_BLOCKED_OPENRESOLVER(0.00)[amd.com:email,imap1.dmz-prg2.suse.org:helo,imap1.dmz-prg2.suse.org:rdns,suse.com:dkim,suse.com:mid,suse.com:email];
	RCVD_TLS_ALL(0.00)[];
	FROM_EQ_ENVFROM(0.00)[];
	RCPT_COUNT_FIVE(0.00)[5];
	DKIM_SIGNED(0.00)[suse.com:s=susede1];
	DKIM_TRACE(0.00)[suse.com:+]
X-Rspamd-Queue-Id: C321A6A7F6
X-Spam-Flag: NO
X-Spam-Score: -3.01
X-Spam-Level: 
X-purgate-ID: tlsNG-720697/1776757362-80B78161-30122763/0/0
X-purgate-type: clean
X-purgate-size: 2390

In case XENSTORE_SERVER_FEATURE_WATCHDEPTH is set, allow XS_WATCH to
have "depth" as 3rd parameter.

Signed-off-by: Juergen Gross <jgross@suse.com>
Reviewed-by: Jason Andryuk <jason.andryuk@amd.com>
---
 tools/xenstored/domain.c |  8 ++++++++
 tools/xenstored/domain.h |  2 ++
 tools/xenstored/watch.c  | 11 +++++++++--
 3 files changed, 19 insertions(+), 2 deletions(-)

diff --git a/tools/xenstored/domain.c b/tools/xenstored/domain.c
index b0b339f569..7f2fa16cf2 100644
--- a/tools/xenstored/domain.c
+++ b/tools/xenstored/domain.c
@@ -390,6 +390,14 @@ void wrl_apply_debit_trans_commit(struct connection *conn)
 	wrl_apply_debit_actual(conn->domain);
 }
 
+bool feature_available(const struct connection *conn, unsigned int feature)
+{
+	if (!conn->domain)
+		return XENSTORE_FEATURES & feature;
+
+	return conn->domain->features & feature;
+}
+
 static unsigned int domain_get_soft_quota(struct domain *d, enum accitem what)
 {
 	if (d && d->acc[what].val[Q_IDX_SOFT] != Q_VAL_DISABLED)
diff --git a/tools/xenstored/domain.h b/tools/xenstored/domain.h
index ca38b5e0ea..b1cfb5cd82 100644
--- a/tools/xenstored/domain.h
+++ b/tools/xenstored/domain.h
@@ -188,4 +188,6 @@ struct hashtable *domain_check_acc_init(void);
 void domain_check_acc_add(const struct node *node, struct hashtable *domains);
 void domain_check_acc(struct hashtable *domains);
 
+bool feature_available(const struct connection *conn, unsigned int feature);
+
 #endif /* _XENSTORED_DOMAIN_H */
diff --git a/tools/xenstored/watch.c b/tools/xenstored/watch.c
index 42e24d3201..860c219f29 100644
--- a/tools/xenstored/watch.c
+++ b/tools/xenstored/watch.c
@@ -213,11 +213,18 @@ static struct watch *add_watch(struct connection *conn, const char *path,
 int do_watch(const void *ctx, struct connection *conn, struct buffered_data *in)
 {
 	struct watch *watch;
-	const char *vec[2];
+	const char *vec[3];
+	unsigned int n_pars;
 	int depth = -1;
 	bool relative;
 
-	if (get_strings(in, vec, ARRAY_SIZE(vec)) != ARRAY_SIZE(vec))
+	n_pars = get_strings(in, vec, ARRAY_SIZE(vec));
+	if (n_pars == 3 &&
+	    feature_available(conn, XENSTORE_SERVER_FEATURE_WATCHDEPTH)) {
+		depth = atoi(vec[2]);
+		if (depth < 0)
+			return EINVAL;
+	} else if (n_pars != 2)
 		return EINVAL;
 
 	errno = check_watch_path(conn, ctx, &(vec[0]), &relative);
-- 
2.53.0



From xen-devel-bounces@lists.xenproject.org Tue Apr 21 07:42:49 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 21 Apr 2026 07:42:49 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1288449.1568745 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wF5kv-0004ys-QQ; Tue, 21 Apr 2026 07:42:49 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1288449.1568745; Tue, 21 Apr 2026 07:42: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 1wF5kv-0004yj-Mw; Tue, 21 Apr 2026 07:42:49 +0000
Received: by outflank-mailman (input) for mailman id 1288449;
 Tue, 21 Apr 2026 07:42:48 +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 1wF5ku-0004x4-MP
 for xen-devel@lists.xenproject.org; Tue, 21 Apr 2026 07:42:48 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wF5ku-00G0jJ-2c
 for xen-devel@lists.xenproject.org; Tue, 21 Apr 2026 09:42:48 +0200
Received: from [10.42.69.11] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <jgross@suse.com>)
 id 69e72a76-bab6-0a2a0a5309dd-0a2a450bd602-14
 for <xen-devel@lists.xenproject.org>; Tue, 21 Apr 2026 09:42:48 +0200
Received: from [195.135.223.130] (helo=smtp-out1.suse.de)
 by tlsNG-42698a.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.1)
 (envelope-from <jgross@suse.com>)
 id 69e72a77-212f-0a2a450b0019-c387df82b0ee-3
 for <xen-devel@lists.xenproject.org>; Tue, 21 Apr 2026 09:42:47 +0200
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 3F1CD6A7F5;
 Tue, 21 Apr 2026 07:42:47 +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 1AD84593AF;
 Tue, 21 Apr 2026 07:42:47 +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 0bd2BXcq52krNwAAD6G6ig
 (envelope-from <jgross@suse.com>); Tue, 21 Apr 2026 07: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=susede1 header.d=suse.com header.i="@suse.com" header.h="From:Date:Message-ID:To:Cc:MIME-Version:Content-Transfer-Encoding:In-Reply-To:References"; dkim=pass header.s=susede1 header.d=suse.com header.i="@suse.com" header.h="From:Date:Message-ID:To:Cc:MIME-Version:Content-Transfer-Encoding:In-Reply-To:References"
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=suse.com; s=susede1;
	t=1776757367; h=from:from:reply-to:date:date:message-id:message-id:to:to:cc:cc:
	 mime-version:mime-version:
	 content-transfer-encoding:content-transfer-encoding:
	 in-reply-to:in-reply-to:references:references;
	bh=7AkzXWRBIIt5yu/Uu/RZC1gnrUK51kfU1qHMPosN5b0=;
	b=BDy/bREWcKSE47EY3KAPrl1DQ27xdp63lLRJ1G8uK14nn7TKwPs9M3DBzUe2AV8upebf+4
	9OuP4oYSuZ0oXyn39a1xGXMETbk3uOwR1cGPee3Bb1obAJ4vkpbaAuybW9Zk+riTJ/N1zP
	VzYwNdjjQo+opTKH8g2M/moOyAM8V10=
Authentication-Results: smtp-out1.suse.de;
	none
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=suse.com; s=susede1;
	t=1776757367; h=from:from:reply-to:date:date:message-id:message-id:to:to:cc:cc:
	 mime-version:mime-version:
	 content-transfer-encoding:content-transfer-encoding:
	 in-reply-to:in-reply-to:references:references;
	bh=7AkzXWRBIIt5yu/Uu/RZC1gnrUK51kfU1qHMPosN5b0=;
	b=BDy/bREWcKSE47EY3KAPrl1DQ27xdp63lLRJ1G8uK14nn7TKwPs9M3DBzUe2AV8upebf+4
	9OuP4oYSuZ0oXyn39a1xGXMETbk3uOwR1cGPee3Bb1obAJ4vkpbaAuybW9Zk+riTJ/N1zP
	VzYwNdjjQo+opTKH8g2M/moOyAM8V10=
From: Juergen Gross <jgross@suse.com>
To: xen-devel@lists.xenproject.org
Cc: Juergen Gross <jgross@suse.com>,
	Julien Grall <julien@xen.org>,
	Anthony PERARD <anthony.perard@vates.tech>,
	Jason Andryuk <jason.andryuk@amd.com>
Subject: [PATCH v2 6/9] tools/xenstored: replace the fire_watches() exact parameter
Date: Tue, 21 Apr 2026 09:42:08 +0200
Message-ID: <20260421074211.308473-7-jgross@suse.com>
X-Mailer: git-send-email 2.53.0
In-Reply-To: <20260421074211.308473-1-jgross@suse.com>
References: <20260421074211.308473-1-jgross@suse.com>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit
X-Spam-Score: -2.80
X-Spam-Level: 
X-Spamd-Result: default: False [-2.80 / 50.00];
	BAYES_HAM(-3.00)[100.00%];
	NEURAL_HAM_LONG(-1.00)[-1.000];
	MID_CONTAINS_FROM(1.00)[];
	R_MISSING_CHARSET(0.50)[];
	NEURAL_HAM_SHORT(-0.20)[-1.000];
	MIME_GOOD(-0.10)[text/plain];
	TO_MATCH_ENVRCPT_ALL(0.00)[];
	FROM_HAS_DN(0.00)[];
	ARC_NA(0.00)[];
	MIME_TRACE(0.00)[0:+];
	TO_DN_SOME(0.00)[];
	DBL_BLOCKED_OPENRESOLVER(0.00)[suse.com:mid,suse.com:email,amd.com:email,imap1.dmz-prg2.suse.org:helo];
	RCVD_VIA_SMTP_AUTH(0.00)[];
	FROM_EQ_ENVFROM(0.00)[];
	RCVD_COUNT_TWO(0.00)[2];
	FUZZY_RATELIMITED(0.00)[rspamd.com];
	DKIM_SIGNED(0.00)[suse.com:s=susede1];
	RCPT_COUNT_FIVE(0.00)[5];
	RCVD_TLS_ALL(0.00)[]
X-Spam-Flag: NO
X-purgate-ID: tlsNG-42698a/1776757367-0576AF3B-4AD8B1FA/0/0
X-purgate-type: clean
X-purgate-size: 8378

Today fire_watches() has the boolean "exact" parameter specifying how
the matching of the modified node with registered watches is to be
handled (only the exact node name is matching or all nodes being
in the subtree beneath the watched node).

For the handling of <special-watch>/<domid> watch events 2 additional
matching possibility needs to be added, as those events should only
be delivered to clients having requested such events, either by
watching <special-watch> with the depth=1 parameter, or by directly
watching for <special-watch>/<domid>, while the traditional special
watch events should NOT delivered to those watchers.

For this purpose rename the "exact" parameter to "match" and make it
an enum with four possible values.

Signed-off-by: Juergen Gross <jgross@suse.com>
Reviewed-by: Jason Andryuk <jason.andryuk@amd.com>
---
 tools/xenstored/core.c        | 12 +++++-----
 tools/xenstored/transaction.c | 14 +++++++-----
 tools/xenstored/transaction.h |  4 +++-
 tools/xenstored/watch.c       | 42 +++++++++++++++++++++++++----------
 tools/xenstored/watch.h       |  9 +++++++-
 5 files changed, 55 insertions(+), 26 deletions(-)

diff --git a/tools/xenstored/core.c b/tools/xenstored/core.c
index 93244d0ac4..6d82111e29 100644
--- a/tools/xenstored/core.c
+++ b/tools/xenstored/core.c
@@ -1613,7 +1613,7 @@ static int do_write(const void *ctx, struct connection *conn,
 			return errno;
 	}
 
-	fire_watches(conn, ctx, name, node, false, NULL);
+	fire_watches(conn, ctx, name, node, MATCH_SUBTREE, NULL);
 	send_ack(conn, XS_WRITE);
 
 	return 0;
@@ -1637,7 +1637,7 @@ static int do_mkdir(const void *ctx, struct connection *conn,
 		node = create_node(conn, ctx, name, NULL, 0);
 		if (!node)
 			return errno;
-		fire_watches(conn, ctx, name, node, false, NULL);
+		fire_watches(conn, ctx, name, node, MATCH_SUBTREE, NULL);
 	}
 	send_ack(conn, XS_MKDIR);
 
@@ -1683,7 +1683,7 @@ static int delnode_sub(const void *ctx, struct connection *conn,
 		       struct node *node, void *arg)
 {
 	const char *root = arg;
-	bool watch_exact;
+	enum watch_match watch_match;
 	int ret;
 	const char *db_name;
 
@@ -1703,8 +1703,8 @@ static int delnode_sub(const void *ctx, struct connection *conn,
 	 * This fine as we are single threaded and the next possible read will
 	 * be handled only after the node has been really removed.
 	*/
-	watch_exact = strcmp(root, node->name);
-	fire_watches(conn, ctx, node->name, node, watch_exact, NULL);
+	watch_match = strcmp(root, node->name) ? MATCH_EXACT : MATCH_SUBTREE;
+	fire_watches(conn, ctx, node->name, node, watch_match, NULL);
 
 	return WALK_TREE_RM_CHILDENTRY;
 }
@@ -1858,7 +1858,7 @@ static int do_set_perms(const void *ctx, struct connection *conn,
 	if (write_node(conn, node, NODE_MODIFY, false))
 		return errno;
 
-	fire_watches(conn, ctx, name, node, false, &old_perms);
+	fire_watches(conn, ctx, name, node, MATCH_SUBTREE, &old_perms);
 	send_ack(conn, XS_SET_PERMS);
 
 	return 0;
diff --git a/tools/xenstored/transaction.c b/tools/xenstored/transaction.c
index 47cd6ecd3c..ec5b122a3f 100644
--- a/tools/xenstored/transaction.c
+++ b/tools/xenstored/transaction.c
@@ -134,7 +134,7 @@ struct accessed_node
 
 	/* Watch event flags. */
 	bool fire_watch;
-	bool watch_exact;
+	enum watch_match watch_match;
 };
 
 struct transaction
@@ -327,8 +327,10 @@ err:
  * A watch event should be fired for a node modified inside a transaction.
  * Set the corresponding information. A non-exact event is replacing an exact
  * one, but not the other way round.
+ * No special watch handling needed here, so MATCH_DEPTH is no issue.
  */
-void queue_watches(struct connection *conn, const char *name, bool watch_exact)
+void queue_watches(struct connection *conn, const char *name,
+		   enum watch_match watch_match)
 {
 	struct accessed_node *i;
 
@@ -340,9 +342,9 @@ void queue_watches(struct connection *conn, const char *name, bool watch_exact)
 
 	if (!i->fire_watch) {
 		i->fire_watch = true;
-		i->watch_exact = watch_exact;
-	} else if (!watch_exact) {
-		i->watch_exact = false;
+		i->watch_match = watch_match;
+	} else if (watch_match == MATCH_SUBTREE) {
+		i->watch_match = MATCH_SUBTREE;
 	}
 }
 
@@ -419,7 +421,7 @@ static int finalize_transaction(struct connection *conn,
 				db_delete(conn, i->node, NULL);
 		}
 		if (i->fire_watch)
-			fire_watches(conn, trans, i->node, NULL, i->watch_exact,
+			fire_watches(conn, trans, i->node, NULL, i->watch_match,
 				     i->perms.p ? &i->perms : NULL);
 
 		list_del(&i->list);
diff --git a/tools/xenstored/transaction.h b/tools/xenstored/transaction.h
index 90435b4fc9..b4f5f757e2 100644
--- a/tools/xenstored/transaction.h
+++ b/tools/xenstored/transaction.h
@@ -18,6 +18,7 @@
 #ifndef _XENSTORED_TRANSACTION_H
 #define _XENSTORED_TRANSACTION_H
 #include "core.h"
+#include "watch.h"
 
 enum node_access_type {
     NODE_ACCESS_READ,
@@ -44,7 +45,8 @@ int __must_check access_node(struct connection *conn, struct node *node,
                              enum node_access_type type, const char **db_name);
 
 /* Queue watches for a modified node. */
-void queue_watches(struct connection *conn, const char *name, bool watch_exact);
+void queue_watches(struct connection *conn, const char *name,
+		   enum watch_match watch_match);
 
 /* Prepend the transaction to name if appropriate. */
 const char *transaction_prepend(struct connection *conn, const char *name);
diff --git a/tools/xenstored/watch.c b/tools/xenstored/watch.c
index 860c219f29..a9a06e9e48 100644
--- a/tools/xenstored/watch.c
+++ b/tools/xenstored/watch.c
@@ -128,7 +128,8 @@ static bool watch_permitted(struct connection *conn, const void *ctx,
  * watch event, too.
  */
 void fire_watches(struct connection *conn, const void *ctx, const char *name,
-		  const struct node *node, bool exact, struct node_perms *perms)
+		  const struct node *node, enum watch_match match,
+		  struct node_perms *perms)
 {
 	struct connection *i;
 	struct buffered_data *req;
@@ -136,7 +137,7 @@ void fire_watches(struct connection *conn, const void *ctx, const char *name,
 
 	/* During transactions, don't fire watches, but queue them. */
 	if (conn && conn->transaction) {
-		queue_watches(conn, name, exact);
+		queue_watches(conn, name, match);
 		return;
 	}
 
@@ -148,17 +149,34 @@ void fire_watches(struct connection *conn, const void *ctx, const char *name,
 			continue;
 
 		list_for_each_entry(watch, &i->watches, list) {
-			if (exact) {
-				if (streq(name, watch->node))
-					send_event(req, i,
-						   get_watch_path(watch, name),
-						   watch->token);
-			} else {
-				if (is_child(name, watch->node, watch->depth))
-					send_event(req, i,
-						   get_watch_path(watch, name),
-						   watch->token);
+			bool send = false;
+
+			switch (match) {
+			case MATCH_EXACT:
+				send = streq(name, watch->node);
+				break;
+
+			case MATCH_SUBTREE:
+				send = is_child(name, watch->node,
+						watch->depth);
+				break;
+
+			case MATCH_DEPTH:
+				send = streq(name, watch->node) ||
+				       (watch->depth > 0 &&
+					is_child(name, watch->node,
+						 watch->depth));
+				break;
+
+			case MATCH_NODEPTH:
+				send = streq(name, watch->node) &&
+				       watch->depth < 0;
+				break;
 			}
+
+			if (send)
+				send_event(req, i, get_watch_path(watch, name),
+					   watch->token);
 		}
 	}
 }
diff --git a/tools/xenstored/watch.h b/tools/xenstored/watch.h
index afdfdc6b2f..692343389f 100644
--- a/tools/xenstored/watch.h
+++ b/tools/xenstored/watch.h
@@ -27,8 +27,15 @@ int do_unwatch(const void *ctx, struct connection *conn,
 	       struct buffered_data *in);
 
 /* Fire all watches: !exact means all the children are affected (ie. rm). */
+enum watch_match {
+	MATCH_EXACT,
+	MATCH_SUBTREE,
+	MATCH_DEPTH,	/* watches with depth > 0, MATCH_SUBTREE semantics */
+	MATCH_NODEPTH	/* watches with no depth, MATCH_EXACT semantics */
+};
+
 void fire_watches(struct connection *conn, const void *tmp, const char *name,
-		  const struct node *node, bool exact,
+		  const struct node *node, enum watch_match match,
 		  struct node_perms *perms);
 
 void conn_delete_all_watches(struct connection *conn);
-- 
2.53.0



From xen-devel-bounces@lists.xenproject.org Tue Apr 21 07:42:55 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 21 Apr 2026 07:42:55 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1288455.1568754 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wF5l1-0005T9-4h; Tue, 21 Apr 2026 07:42:55 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1288455.1568754; Tue, 21 Apr 2026 07:42: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 1wF5l0-0005Sy-Uy; Tue, 21 Apr 2026 07:42:54 +0000
Received: by outflank-mailman (input) for mailman id 1288455;
 Tue, 21 Apr 2026 07:42:53 +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 1wF5kz-0005Nr-OI
 for xen-devel@lists.xenproject.org; Tue, 21 Apr 2026 07:42:53 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wF5kz-00G0my-4i
 for xen-devel@lists.xenproject.org; Tue, 21 Apr 2026 09:42:53 +0200
Received: from [10.42.69.10] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <jgross@suse.com>)
 id 69e72a79-bab6-0a2a0a5309dd-0a2a450a8036-26
 for <xen-devel@lists.xenproject.org>; Tue, 21 Apr 2026 09:42:53 +0200
Received: from [195.135.223.131] (helo=smtp-out2.suse.de)
 by tlsNG-4011c0.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.1)
 (envelope-from <jgross@suse.com>)
 id 69e72a7c-56b3-0a2a450a0019-c387df839c2e-3
 for <xen-devel@lists.xenproject.org>; Tue, 21 Apr 2026 09:42:53 +0200
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 ADC425BCE1;
 Tue, 21 Apr 2026 07:42:52 +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 892C0593AF;
 Tue, 21 Apr 2026 07:42:52 +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 hTRXIHwq52kwNwAAD6G6ig
 (envelope-from <jgross@suse.com>); Tue, 21 Apr 2026 07:42: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=susede1 header.d=suse.com header.i="@suse.com" header.h="From:Date:Message-ID:To:Cc:MIME-Version:Content-Transfer-Encoding:In-Reply-To:References"; dkim=pass header.s=susede1 header.d=suse.com header.i="@suse.com" header.h="From:Date:Message-ID:To:Cc:MIME-Version:Content-Transfer-Encoding:In-Reply-To:References"
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=suse.com; s=susede1;
	t=1776757372; h=from:from:reply-to:date:date:message-id:message-id:to:to:cc:cc:
	 mime-version:mime-version:
	 content-transfer-encoding:content-transfer-encoding:
	 in-reply-to:in-reply-to:references:references;
	bh=H4xDwurhkvE0j1k8kqAZ1un0445rmmWmoyaVKvtmHfs=;
	b=dKdo7mVNbb2833HOzBH8ax9gOs1Nfz18pBlDL0RE+ngF+aWCzA6q6+EgKEM+onCdc5Gh1u
	nD8I7lGjymPFmGZD6hFZCFYGBCQOwzgS79/CvfEJRTXCXwSIaE2MYgQItIAV0/cCwGgVeG
	aKubo8f7B28haR3P6H9biqznReHI/rA=
Authentication-Results: smtp-out2.suse.de;
	dkim=pass header.d=suse.com header.s=susede1 header.b=dKdo7mVN
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=suse.com; s=susede1;
	t=1776757372; h=from:from:reply-to:date:date:message-id:message-id:to:to:cc:cc:
	 mime-version:mime-version:
	 content-transfer-encoding:content-transfer-encoding:
	 in-reply-to:in-reply-to:references:references;
	bh=H4xDwurhkvE0j1k8kqAZ1un0445rmmWmoyaVKvtmHfs=;
	b=dKdo7mVNbb2833HOzBH8ax9gOs1Nfz18pBlDL0RE+ngF+aWCzA6q6+EgKEM+onCdc5Gh1u
	nD8I7lGjymPFmGZD6hFZCFYGBCQOwzgS79/CvfEJRTXCXwSIaE2MYgQItIAV0/cCwGgVeG
	aKubo8f7B28haR3P6H9biqznReHI/rA=
From: Juergen Gross <jgross@suse.com>
To: xen-devel@lists.xenproject.org
Cc: Juergen Gross <jgross@suse.com>,
	Julien Grall <julien@xen.org>,
	Anthony PERARD <anthony.perard@vates.tech>,
	Jason Andryuk <jason.andryuk@amd.com>
Subject: [PATCH v2 7/9] tools/xenstored: expand special watch handling with depth feature
Date: Tue, 21 Apr 2026 09:42:09 +0200
Message-ID: <20260421074211.308473-8-jgross@suse.com>
X-Mailer: git-send-email 2.53.0
In-Reply-To: <20260421074211.308473-1-jgross@suse.com>
References: <20260421074211.308473-1-jgross@suse.com>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit
X-Spamd-Result: default: False [-3.01 / 50.00];
	BAYES_HAM(-3.00)[100.00%];
	NEURAL_HAM_LONG(-1.00)[-1.000];
	MID_CONTAINS_FROM(1.00)[];
	R_MISSING_CHARSET(0.50)[];
	R_DKIM_ALLOW(-0.20)[suse.com:s=susede1];
	NEURAL_HAM_SHORT(-0.20)[-1.000];
	MIME_GOOD(-0.10)[text/plain];
	MX_GOOD(-0.01)[];
	ARC_NA(0.00)[];
	FUZZY_RATELIMITED(0.00)[rspamd.com];
	RCVD_COUNT_TWO(0.00)[2];
	MIME_TRACE(0.00)[0:+];
	RCVD_VIA_SMTP_AUTH(0.00)[];
	SPAMHAUS_XBL(0.00)[2a07:de40:b281:104:10:150:64:97:from];
	TO_DN_SOME(0.00)[];
	RBL_SPAMHAUS_BLOCKED_OPENRESOLVER(0.00)[2a07:de40:b281:104:10:150:64:97:from];
	RECEIVED_SPAMHAUS_BLOCKED_OPENRESOLVER(0.00)[2a07:de40:b281:106:10:150:64:167:received];
	FROM_HAS_DN(0.00)[];
	TO_MATCH_ENVRCPT_ALL(0.00)[];
	DBL_BLOCKED_OPENRESOLVER(0.00)[suse.com:mid,suse.com:dkim,suse.com:email,imap1.dmz-prg2.suse.org:helo,imap1.dmz-prg2.suse.org:rdns,amd.com:email];
	RCVD_TLS_ALL(0.00)[];
	FROM_EQ_ENVFROM(0.00)[];
	RCPT_COUNT_FIVE(0.00)[5];
	DKIM_SIGNED(0.00)[suse.com:s=susede1];
	DKIM_TRACE(0.00)[suse.com:+]
X-Rspamd-Action: no action
X-Spam-Flag: NO
X-Spam-Score: -3.01
X-Spam-Level: 
X-Rspamd-Server: rspamd1.dmz-prg2.suse.org
X-Rspamd-Queue-Id: ADC425BCE1
X-purgate-ID: tlsNG-4011c0/1776757373-44B678B7-D19C34A6/0/0
X-purgate-type: clean
X-purgate-size: 3484

With XENSTORE_SERVER_FEATURE_WATCHDEPTH available, special watch
handling needs to be extended:

- when a special watch is set with depth = 1, the domid is added to
  the watch event

- it is possible to watch for @releaseDomain/<domid>

Signed-off-by: Juergen Gross <jgross@suse.com>
Reviewed-by: Jason Andryuk <jason.andryuk@amd.com>
---
V2:
- remove stray {} addition (Jason Andryuk)
---
 tools/xenstored/domain.c | 34 ++++++++++++++++++++++++++--------
 1 file changed, 26 insertions(+), 8 deletions(-)

diff --git a/tools/xenstored/domain.c b/tools/xenstored/domain.c
index 7f2fa16cf2..a5258dae6d 100644
--- a/tools/xenstored/domain.c
+++ b/tools/xenstored/domain.c
@@ -616,7 +616,12 @@ static void domain_tree_remove(struct domain *domain)
 	walk_node_tree(domain, NULL, "@introduceDomain", &walkfuncs, domain);
 }
 
-static void fire_special_watches(const char *name)
+#define WATCH_NODOM	1	/* Fire watches without <domid> extension. */
+#define WATCH_DOM	2	/* Fire watches with <domid> extension. */
+#define WATCH_BOTH	(WATCH_NODOM | WATCH_DOM)
+
+static void fire_special_watches(const char *name, unsigned int domid,
+				 unsigned int watchdom_flag)
 {
 	void *ctx = talloc_new(NULL);
 	const struct node *node;
@@ -626,9 +631,19 @@ static void fire_special_watches(const char *name)
 
 	node = read_node_const(NULL, ctx, name);
 
-	if (node)
-		fire_watches(NULL, ctx, name, node, true, NULL);
-	else
+	if (node) {
+		if (watchdom_flag & WATCH_NODOM)
+			fire_watches(NULL, ctx, name, node, MATCH_NODEPTH,
+				     NULL);
+		if (watchdom_flag & WATCH_DOM) {
+			char name_dom[24]; /* max. "@introduceDomain/domid" */
+
+			snprintf(name_dom, sizeof(name_dom),
+				 "%s/%u", name, domid);
+			fire_watches(NULL, ctx, name_dom, node, MATCH_DEPTH,
+				     NULL);
+		}
+	} else
 		log("special node %s not found\n", name);
 
 	talloc_free(ctx);
@@ -653,7 +668,7 @@ static int destroy_domain(void *_domain)
 	if (domain->interface)
 		unmap_interface(domain->domid, domain->interface);
 
-	fire_special_watches("@releaseDomain");
+	fire_special_watches("@releaseDomain", domain->domid, WATCH_BOTH);
 
 	wrl_domain_destroy(domain);
 
@@ -681,6 +696,8 @@ static int do_check_domain(struct domain *domain, bool *notify,
 		if ((state & XENMANAGE_GETDOMSTATE_STATE_SHUTDOWN)
 		    && !domain->shutdown) {
 			domain->shutdown = true;
+			fire_special_watches("@releaseDomain", domain->domid,
+					     WATCH_DOM);
 			*notify = true;
 		}
 		if (!(state & XENMANAGE_GETDOMSTATE_STATE_DEAD))
@@ -723,7 +740,7 @@ void check_domains(void)
 		;
 
 	if (notify)
-		fire_special_watches("@releaseDomain");
+		fire_special_watches("@releaseDomain", 0, WATCH_NODOM);
 }
 
 static struct domain *find_domain_struct(unsigned int domid)
@@ -747,7 +764,7 @@ static void do_check_domains(void)
 	}
 
 	if (notify)
-		fire_special_watches("@releaseDomain");
+		fire_special_watches("@releaseDomain", 0, WATCH_NODOM);
 }
 
 /* We scan all domains rather than use the information given here. */
@@ -1112,7 +1129,8 @@ static struct domain *introduce_domain(const void *ctx,
 		talloc_steal(domain->conn, domain);
 
 		if (!is_priv_domain && !restore)
-			fire_special_watches("@introduceDomain");
+			fire_special_watches("@introduceDomain", domid,
+					     WATCH_BOTH);
 	} else {
 		/* Use XS_INTRODUCE for recreating the xenbus event-channel. */
 		if (domain->port)
-- 
2.53.0



From xen-devel-bounces@lists.xenproject.org Tue Apr 21 07:43:00 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 21 Apr 2026 07:43:00 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1288466.1568763 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wF5l6-00060i-GF; Tue, 21 Apr 2026 07:43:00 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1288466.1568763; Tue, 21 Apr 2026 07:43: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 1wF5l6-00060a-CI; Tue, 21 Apr 2026 07:43:00 +0000
Received: by outflank-mailman (input) for mailman id 1288466;
 Tue, 21 Apr 2026 07:42:59 +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 1wF5l5-0005wP-9b
 for xen-devel@lists.xenproject.org; Tue, 21 Apr 2026 07:42:59 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wF5l3-00Aj1o-4H
 for xen-devel@lists.xenproject.org; Tue, 21 Apr 2026 09:42:58 +0200
Received: from [10.42.69.3] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <jgross@suse.com>)
 id 69e72a7a-2eae-0a2a0a5409dd-0a2a45039be0-26
 for <xen-devel@lists.xenproject.org>; Tue, 21 Apr 2026 09:42:58 +0200
Received: from [195.135.223.130] (helo=smtp-out1.suse.de)
 by tlsNG-33051d.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.1)
 (envelope-from <jgross@suse.com>)
 id 69e72a82-672d-0a2a45030019-c387df82ce28-3
 for <xen-devel@lists.xenproject.org>; Tue, 21 Apr 2026 09:42:58 +0200
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 3900A6A7F5;
 Tue, 21 Apr 2026 07:42:58 +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 09AB0593AF;
 Tue, 21 Apr 2026 07:42:58 +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 06I5AYIq52k4NwAAD6G6ig
 (envelope-from <jgross@suse.com>); Tue, 21 Apr 2026 07:42: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=susede1 header.d=suse.com header.i="@suse.com" header.h="From:Date:Message-ID:To:Cc:MIME-Version:Content-Transfer-Encoding:In-Reply-To:References"; dkim=pass header.s=susede1 header.d=suse.com header.i="@suse.com" header.h="From:Date:Message-ID:To:Cc:MIME-Version:Content-Transfer-Encoding:In-Reply-To:References"
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=suse.com; s=susede1;
	t=1776757378; h=from:from:reply-to:date:date:message-id:message-id:to:to:cc:cc:
	 mime-version:mime-version:
	 content-transfer-encoding:content-transfer-encoding:
	 in-reply-to:in-reply-to:references:references;
	bh=KTqmf1xyf3XOmhzfHM4kVR7INI+guIyweqMv4PH8HFk=;
	b=B54tmGhihPT2R3BnEz/fgBfKivKnAx6y60GfjxZzdvHY8ctP6GN35d82xvNTEUseq2eglT
	c1sqUYaBZorDQjjufRuS3et5jApgu/DhmWNMe5JwX67nu0quya46cfI8H7hm8a8XJ0kG1O
	aFeffKDgdxE7spdX9qc5R37Q9vXl37c=
Authentication-Results: smtp-out1.suse.de;
	dkim=pass header.d=suse.com header.s=susede1 header.b=B54tmGhi
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=suse.com; s=susede1;
	t=1776757378; h=from:from:reply-to:date:date:message-id:message-id:to:to:cc:cc:
	 mime-version:mime-version:
	 content-transfer-encoding:content-transfer-encoding:
	 in-reply-to:in-reply-to:references:references;
	bh=KTqmf1xyf3XOmhzfHM4kVR7INI+guIyweqMv4PH8HFk=;
	b=B54tmGhihPT2R3BnEz/fgBfKivKnAx6y60GfjxZzdvHY8ctP6GN35d82xvNTEUseq2eglT
	c1sqUYaBZorDQjjufRuS3et5jApgu/DhmWNMe5JwX67nu0quya46cfI8H7hm8a8XJ0kG1O
	aFeffKDgdxE7spdX9qc5R37Q9vXl37c=
From: Juergen Gross <jgross@suse.com>
To: xen-devel@lists.xenproject.org
Cc: Juergen Gross <jgross@suse.com>,
	Julien Grall <julien@xen.org>,
	Anthony PERARD <anthony.perard@vates.tech>,
	Jason Andryuk <jason.andryuk@amd.com>
Subject: [PATCH v2 8/9] tools/xenstored: make XENSTORE_SERVER_FEATURE_WATCHDEPTH available
Date: Tue, 21 Apr 2026 09:42:10 +0200
Message-ID: <20260421074211.308473-9-jgross@suse.com>
X-Mailer: git-send-email 2.53.0
In-Reply-To: <20260421074211.308473-1-jgross@suse.com>
References: <20260421074211.308473-1-jgross@suse.com>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit
X-Spamd-Result: default: False [-3.01 / 50.00];
	BAYES_HAM(-3.00)[100.00%];
	MID_CONTAINS_FROM(1.00)[];
	NEURAL_HAM_LONG(-1.00)[-1.000];
	R_MISSING_CHARSET(0.50)[];
	R_DKIM_ALLOW(-0.20)[suse.com:s=susede1];
	NEURAL_HAM_SHORT(-0.20)[-1.000];
	MIME_GOOD(-0.10)[text/plain];
	MX_GOOD(-0.01)[];
	SPAMHAUS_XBL(0.00)[2a07:de40:b281:104:10:150:64:97:from];
	FUZZY_RATELIMITED(0.00)[rspamd.com];
	TO_DN_SOME(0.00)[];
	RBL_SPAMHAUS_BLOCKED_OPENRESOLVER(0.00)[2a07:de40:b281:104:10:150:64:97:from];
	DKIM_SIGNED(0.00)[suse.com:s=susede1];
	ARC_NA(0.00)[];
	MIME_TRACE(0.00)[0:+];
	RCVD_COUNT_TWO(0.00)[2];
	TO_MATCH_ENVRCPT_ALL(0.00)[];
	RCVD_VIA_SMTP_AUTH(0.00)[];
	RECEIVED_SPAMHAUS_BLOCKED_OPENRESOLVER(0.00)[2a07:de40:b281:106:10:150:64:167:received];
	FROM_EQ_ENVFROM(0.00)[];
	DKIM_TRACE(0.00)[suse.com:+];
	FROM_HAS_DN(0.00)[];
	RCVD_TLS_ALL(0.00)[];
	RCPT_COUNT_FIVE(0.00)[5];
	DBL_BLOCKED_OPENRESOLVER(0.00)[suse.com:mid,suse.com:dkim,suse.com:email,amd.com:email,imap1.dmz-prg2.suse.org:helo,imap1.dmz-prg2.suse.org:rdns]
X-Rspamd-Action: no action
X-Spam-Flag: NO
X-Spam-Score: -3.01
X-Spam-Level: 
X-Rspamd-Server: rspamd1.dmz-prg2.suse.org
X-Rspamd-Queue-Id: 3900A6A7F5
X-purgate-ID: tlsNG-33051d/1776757378-2B56F938-38887BE8/0/0
X-purgate-type: clean
X-purgate-size: 785

Add XENSTORE_SERVER_FEATURE_WATCHDEPTH to the available features now
that all needed support has been added.

Signed-off-by: Juergen Gross <jgross@suse.com>
Reviewed-by: Jason Andryuk <jason.andryuk@amd.com>
---
 tools/xenstored/domain.c | 3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)

diff --git a/tools/xenstored/domain.c b/tools/xenstored/domain.c
index a5258dae6d..00875d6b5c 100644
--- a/tools/xenstored/domain.c
+++ b/tools/xenstored/domain.c
@@ -43,7 +43,8 @@
 #include <mini-os/xenbus.h>
 #endif
 
-#define XENSTORE_FEATURES	XENSTORE_SERVER_FEATURE_ERROR
+#define XENSTORE_FEATURES	(XENSTORE_SERVER_FEATURE_ERROR |	\
+				 XENSTORE_SERVER_FEATURE_WATCHDEPTH)
 
 static xenmanage_handle *xm_handle;
 xengnttab_handle **xgt_handle;
-- 
2.53.0



From xen-devel-bounces@lists.xenproject.org Tue Apr 21 07:43:06 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 21 Apr 2026 07:43:06 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1288474.1568772 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wF5lC-0006aR-Ow; Tue, 21 Apr 2026 07:43:06 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1288474.1568772; Tue, 21 Apr 2026 07:43: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 1wF5lC-0006aF-J3; Tue, 21 Apr 2026 07:43:06 +0000
Received: by outflank-mailman (input) for mailman id 1288474;
 Tue, 21 Apr 2026 07:43:05 +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 1wF5lA-0006S1-TK
 for xen-devel@lists.xenproject.org; Tue, 21 Apr 2026 07:43:05 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wF5l8-00Aj5S-OP
 for xen-devel@lists.xenproject.org; Tue, 21 Apr 2026 09:43:04 +0200
Received: from [10.42.69.8] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <jgross@suse.com>)
 id 69e72a86-2eae-0a2a0a5409dd-0a2a4508ca2e-16
 for <xen-devel@lists.xenproject.org>; Tue, 21 Apr 2026 09:43:04 +0200
Received: from [195.135.223.131] (helo=smtp-out2.suse.de)
 by tlsNG-c1860d.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.1)
 (envelope-from <jgross@suse.com>)
 id 69e72a87-63b5-0a2a45080019-c387df83b932-3
 for <xen-devel@lists.xenproject.org>; Tue, 21 Apr 2026 09:43:04 +0200
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 A62D75BCE1;
 Tue, 21 Apr 2026 07:43:03 +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 82738593AF;
 Tue, 21 Apr 2026 07:43:03 +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 /KPLHocq52k/NwAAD6G6ig
 (envelope-from <jgross@suse.com>); Tue, 21 Apr 2026 07:43:03 +0000
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@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-Transfer-Encoding:In-Reply-To:References"; dkim=pass header.s=susede1 header.d=suse.com header.i="@suse.com" header.h="From:Date:Message-ID:To:Cc:MIME-Version:Content-Transfer-Encoding:In-Reply-To:References"
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=suse.com; s=susede1;
	t=1776757383; h=from:from:reply-to:date:date:message-id:message-id:to:to:cc:cc:
	 mime-version:mime-version:
	 content-transfer-encoding:content-transfer-encoding:
	 in-reply-to:in-reply-to:references:references;
	bh=AZ9uOpSwscCXmBP1ykyoRIThmyiK1apA4EI7JRD8j+A=;
	b=IdV5N36UKXP0qHpVN6dZ7oBh+lkURsr51AQY0rFjUcfwnp6kWvC+9fE4t2dldDvVJJxQxs
	Bhr80nK9N8iTISLqK/3vV0tpo8N9yF73kX+7FtMD7J32LBvDFMe8mUsKnwe5aTPx/C6hYX
	nDmGs9zRUp5LkfAG9HCNLH3hwP2fnQk=
Authentication-Results: smtp-out2.suse.de;
	dkim=pass header.d=suse.com header.s=susede1 header.b=IdV5N36U
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=suse.com; s=susede1;
	t=1776757383; h=from:from:reply-to:date:date:message-id:message-id:to:to:cc:cc:
	 mime-version:mime-version:
	 content-transfer-encoding:content-transfer-encoding:
	 in-reply-to:in-reply-to:references:references;
	bh=AZ9uOpSwscCXmBP1ykyoRIThmyiK1apA4EI7JRD8j+A=;
	b=IdV5N36UKXP0qHpVN6dZ7oBh+lkURsr51AQY0rFjUcfwnp6kWvC+9fE4t2dldDvVJJxQxs
	Bhr80nK9N8iTISLqK/3vV0tpo8N9yF73kX+7FtMD7J32LBvDFMe8mUsKnwe5aTPx/C6hYX
	nDmGs9zRUp5LkfAG9HCNLH3hwP2fnQk=
From: Juergen Gross <jgross@suse.com>
To: xen-devel@lists.xenproject.org
Cc: Juergen Gross <jgross@suse.com>,
	Anthony PERARD <anthony.perard@vates.tech>,
	Julien Grall <julien@xen.org>,
	Jason Andryuk <jason.andryuk@amd.com>
Subject: [PATCH v2 9/9] tools/xs-clients: support depth with xenstore-watch
Date: Tue, 21 Apr 2026 09:42:11 +0200
Message-ID: <20260421074211.308473-10-jgross@suse.com>
X-Mailer: git-send-email 2.53.0
In-Reply-To: <20260421074211.308473-1-jgross@suse.com>
References: <20260421074211.308473-1-jgross@suse.com>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit
X-Rspamd-Action: no action
X-Rspamd-Server: rspamd2.dmz-prg2.suse.org
X-Spamd-Result: default: False [-3.01 / 50.00];
	BAYES_HAM(-3.00)[100.00%];
	NEURAL_HAM_LONG(-1.00)[-1.000];
	MID_CONTAINS_FROM(1.00)[];
	R_MISSING_CHARSET(0.50)[];
	R_DKIM_ALLOW(-0.20)[suse.com:s=susede1];
	NEURAL_HAM_SHORT(-0.20)[-1.000];
	MIME_GOOD(-0.10)[text/plain];
	MX_GOOD(-0.01)[];
	ARC_NA(0.00)[];
	RBL_SPAMHAUS_BLOCKED_OPENRESOLVER(0.00)[2a07:de40:b281:104:10:150:64:97:from];
	RCVD_COUNT_TWO(0.00)[2];
	MIME_TRACE(0.00)[0:+];
	RCVD_VIA_SMTP_AUTH(0.00)[];
	SPAMHAUS_XBL(0.00)[2a07:de40:b281:104:10:150:64:97:from];
	TO_DN_SOME(0.00)[];
	FUZZY_RATELIMITED(0.00)[rspamd.com];
	RECEIVED_SPAMHAUS_BLOCKED_OPENRESOLVER(0.00)[2a07:de40:b281:106:10:150:64:167:received];
	FROM_HAS_DN(0.00)[];
	TO_MATCH_ENVRCPT_ALL(0.00)[];
	DBL_BLOCKED_OPENRESOLVER(0.00)[imap1.dmz-prg2.suse.org:helo,imap1.dmz-prg2.suse.org:rdns,amd.com:email,suse.com:dkim,suse.com:mid,suse.com:email];
	RCVD_TLS_ALL(0.00)[];
	FROM_EQ_ENVFROM(0.00)[];
	RCPT_COUNT_FIVE(0.00)[5];
	DKIM_SIGNED(0.00)[suse.com:s=susede1];
	DKIM_TRACE(0.00)[suse.com:+]
X-Rspamd-Queue-Id: A62D75BCE1
X-Spam-Flag: NO
X-Spam-Score: -3.01
X-Spam-Level: 
X-purgate-ID: tlsNG-c1860d/1776757384-3A169DB1-67D82FDA/0/0
X-purgate-type: clean
X-purgate-size: 3919

Add a "-d <depth>" parameter to xenstore-watch, allowing to specify
the depth parameter of the XS_WATCH command.

Using "-d" without support of depth by xenstored will refuse to set
the watch(es).

Signed-off-by: Juergen Gross <jgross@suse.com>
Reviewed-by: Jason Andryuk <jason.andryuk@amd.com>
---
V2:
- add new flag to man page (Jason Andryuk)
---
 docs/man/xenstore-watch.1.pod      |  9 +++++++++
 tools/xs-clients/xenstore_client.c | 19 +++++++++++++++----
 2 files changed, 24 insertions(+), 4 deletions(-)

diff --git a/docs/man/xenstore-watch.1.pod b/docs/man/xenstore-watch.1.pod
index de28d380b7..716c5521bc 100644
--- a/docs/man/xenstore-watch.1.pod
+++ b/docs/man/xenstore-watch.1.pod
@@ -17,6 +17,15 @@ event happening.
 
 Show the usage information for xenstore-watch and exit the program.
 
+=item B<-d> B<depth>
+
+Limit the number of sub-directories below the specified I<PATH>s to be
+watched. A B<depth> of 0 will watch only the specified nodes, a B<depth>
+of 1 will watch the specified nodes and their direct children, etc.
+
+Using this option requires xenstored to support the Xenstore watch depth
+feature. In case it is not supported, the B<-d> usage will be rejected.
+
 =item B<-n> B<NR>
 
 Stop waiting after having received B<NR> watch events.
diff --git a/tools/xs-clients/xenstore_client.c b/tools/xs-clients/xenstore_client.c
index 9a25704b91..4a14cb334f 100644
--- a/tools/xs-clients/xenstore_client.c
+++ b/tools/xs-clients/xenstore_client.c
@@ -445,7 +445,7 @@ do_watch(struct xs_handle *xsh, int max_events)
 static int
 perform(enum mode mode, int optind, int argc, char **argv, struct xs_handle *xsh,
         xs_transaction_t xth, int prefix, int tidy, int upto, int recurse, int nr_watches,
-        int raw)
+        int raw, int depth)
 {
     switch (mode) {
     case MODE_ls:
@@ -627,8 +627,11 @@ perform(enum mode mode, int optind, int argc, char **argv, struct xs_handle *xsh
             for (; argv[optind]; optind++) {
                 const char *w = argv[optind];
 
-                if (!xs_watch(xsh, w, w))
+                if (depth < 0 && !xs_watch(xsh, w, w))
                     errx(1, "Unable to add watch on %s\n", w);
+                if (depth >= 0 && !xs_watch_depth(xsh, w, w, depth))
+                    errx(1, "Unable to add watch on %s with depth %d\n", w,
+                         depth);
             }
             do_watch(xsh, nr_watches);
         }
@@ -676,6 +679,7 @@ main(int argc, char **argv)
     int nr_watches = -1;
     int transaction;
     int raw = 0;
+    int depth = -1;
     struct winsize ws;
     enum mode mode;
 
@@ -709,10 +713,11 @@ main(int argc, char **argv)
 	    {"recurse", 0, 0, 'r'}, /* MODE_chmod */
 	    {"number",  1, 0, 'n'}, /* MODE_watch */
 	    {"raw",     0, 0, 'R'}, /* MODE_read || MODE_write */
+	    {"depth",   1, 0, 'd'}, /* MODE_watch */
 	    {0, 0, 0, 0}
 	};
 
-	c = getopt_long(argc - switch_argv, argv + switch_argv, "hfspturn:R",
+	c = getopt_long(argc - switch_argv, argv + switch_argv, "hfspturn:Rd:",
 			long_options, &index);
 	if (c == -1)
 	    break;
@@ -766,6 +771,12 @@ main(int argc, char **argv)
 	    else
 		usage(1, mode, switch_argv, argv[0]);
 	    break;
+	case 'd':
+	    if ( mode == MODE_watch )
+		depth = atoi(optarg);
+	    else
+		usage(1, mode, switch_argv, argv[0]);
+	    break;
 	}
     }
 
@@ -819,7 +830,7 @@ again:
 	    errx(1, "couldn't start transaction");
     }
 
-    ret = perform(mode, optind, argc - switch_argv, argv + switch_argv, xsh, xth, prefix, tidy, upto, recurse, nr_watches, raw);
+    ret = perform(mode, optind, argc - switch_argv, argv + switch_argv, xsh, xth, prefix, tidy, upto, recurse, nr_watches, raw, depth);
 
     if (transaction && !xs_transaction_end(xsh, xth, ret)) {
 	if (ret == 0 && errno == EAGAIN) {
-- 
2.53.0



From xen-devel-bounces@lists.xenproject.org Tue Apr 21 07:55:31 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 21 Apr 2026 07:55:31 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1288508.1568780 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wF5x3-0001NR-Lw; Tue, 21 Apr 2026 07:55:21 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1288508.1568780; Tue, 21 Apr 2026 07:55: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 1wF5x3-0001NK-JB; Tue, 21 Apr 2026 07:55:21 +0000
Received: by outflank-mailman (input) for mailman id 1288508;
 Tue, 21 Apr 2026 07:55:20 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <jbeulich@suse.com>) id 1wF5x2-0001My-8e
 for xen-devel@lists.xenproject.org; Tue, 21 Apr 2026 07:55:20 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wF5x1-002hqb-9L
 for xen-devel@lists.xenproject.org; Tue, 21 Apr 2026 09:55:19 +0200
Received: from [10.42.69.2] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <jbeulich@suse.com>)
 id 69e72d5d-e002-0a2a0a5209dd-0a2a4502eb68-42
 for <xen-devel@lists.xenproject.org>; Tue, 21 Apr 2026 09:55:19 +0200
Received: from [209.85.221.42] (helo=mail-wr1-f42.google.com)
 by tlsNG-720697.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.1)
 (envelope-from <jbeulich@suse.com>)
 id 69e72d66-af86-0a2a45020019-d155dd2ae0a4-3
 for <xen-devel@lists.xenproject.org>; Tue, 21 Apr 2026 09:55:19 +0200
Received: by mail-wr1-f42.google.com with SMTP id
 ffacd0b85a97d-43d0deb7ad5so3129030f8f.2
 for <xen-devel@lists.xenproject.org>; Tue, 21 Apr 2026 00:55:19 -0700 (PDT)
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-43fe4cb11b4sm36298128f8f.2.2026.04.21.00.55.17
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Tue, 21 Apr 2026 00:55:18 -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=google header.d=suse.com header.i="@suse.com" header.h="Content-Transfer-Encoding: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=1776758118; x=1777362918; darn=lists.xenproject.org;
        h=content-transfer-encoding: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;
        bh=U1Ryk4fo5wRf5ZBa4fjB+nml9LVBZOaPE+1mUcTh27I=;
        b=CSys/iTrs4MCw/5+0bPxGBP7Crdrq7AKXTUQ1cTEwVRzqg1zCLYyGrWZong9uxL91C
         CcJq6s4Tgq05TydkeQ72au6MI8Vl4YRjZRkuQP1HBIz4FKI+79jrCjvjJ3BakZyYNfz/
         /e3S/Nu/NifuOfIj2tLAbVh1ZPPOKhy9g5YsWEE0jmW3JRQNvN5luvDSdw6f+CWV9get
         ViJBLFkRaRABqeWI2Gz2Jcvv2Uo0AnrWUVh26jYcjyvQIdL8PJD2vsKY/vuK0UGSfAqE
         aa/d9uH6/9VTL9UtX2nCr9Z0//pRnyX/I7b+/E1Q2KmDfXsCk+b2uUs1SWznFXYscmLJ
         3Dag==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20251104; t=1776758118; x=1777362918;
        h=content-transfer-encoding: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;
        bh=U1Ryk4fo5wRf5ZBa4fjB+nml9LVBZOaPE+1mUcTh27I=;
        b=SBm1izc40e+QO30ATngPDMUrjX0LikzUzrnIKSCA8s5kBVjNHw1vKYSRRSmhA7qyVp
         Z5I1OfsHxwciQrIDtB97fXoyfT4HPieeVJIX+vA/0ZXEUd79pBo5HPudlqbaLm63CdNM
         fIwIq1praGy8csil29MQs/3TdT8BFe2jlCQCENe/42JP9ZFl//aerVtNw7iQUot5h9uQ
         yd+PHGMi+1fyFsLCauucZsLZj+lLQFalfHdtNnLaaUtMEuSHeNCw4QEy0ckFYTuC3EsK
         PYnTZgzxjoCVx41UURNlJ3eIfpFD68Sh2dHHAHlNB1YDQr6EUAkScXwlBgBqed08tg4m
         RLWw==
X-Forwarded-Encrypted: i=1; AFNElJ9K2WxraR+Nd1ihiTRtijwnZTIlOWpblqoAMJ65BCFWs7ggHnsl2ImhWyc05mnrRLGTLSnDkN7qKoY=@lists.xenproject.org
X-Gm-Message-State: AOJu0Yy7SzJ6jti2Hy8ZH639fFQX3mtNaOd/Xa4ygjTU6ZxiUYhgG+4u
	RZqcFcFW58DhuHoRzx/6hZ9fPt/e4dKgYsKA7l3mHcDTv2I+oYxAQ31a17add1ek3g==
X-Gm-Gg: AeBDievUNAx3OLLcnVmiboVJS6AoV2jE0QTdQ1KhhRTij0N//x5q6EaHJCynKqlAjjG
	fb7wBXJQYQ2rKUxkrl8bLIlKxzrkbBtwb5PenNp23FUFFTcgm5EVPN/RNWISTCdDRQF62mPNH2z
	6NGvTmRQdfnx7ZqW6MRNqFw1uYTTyUtFYQ/fSU7eDrIQrxMgZpM8i3/YV0v37lXVpuUzx25Pl11
	9HNLbgefs7MLWkMLrdzS2wZSCarz8tZUw0WbFtZ8AMiXI7BL4irigD+wUh80EBqlqnq7FQ/9TFW
	p98ZL3lMFmEYaQVKgguFgXdppSOuJ0YPu7SbVakr8Cmz7m3kAj19tNkTogqDn8TaUte3oce92zl
	DJPOQxHXVb8XFp8+kMNF3OZj4f46S2ZkrChqlGffZeLkthekkt22GYToAnnTCAT5NXTkCV1ne0U
	iu6/gIQ78kYQUC9PxpXXtV29jT60T23wIp+Jq/wJJxoeF+G94SOdWfkN7gfK/x6Hpky7PGYzdk5
	0xc6b+LVWAUzknVrqvkG47xLQ==
X-Received: by 2002:a05:6000:2f8a:b0:43d:7c1b:b8c7 with SMTP id ffacd0b85a97d-43fe3dd210amr27339238f8f.21.1776758118391;
        Tue, 21 Apr 2026 00:55:18 -0700 (PDT)
Message-ID: <f46c1782-2a76-4657-a78a-f68a9dec4e89@suse.com>
Date: Tue, 21 Apr 2026 09:55:17 +0200
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH v2 0/9] tools/xenstored: add support for watch depth
 feature
To: Juergen Gross <jgross@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>,
 =?UTF-8?Q?Roger_Pau_Monn=C3=A9?= <roger.pau@citrix.com>,
 Stefano Stabellini <sstabellini@kernel.org>, xen-devel@lists.xenproject.org
References: <20260421074211.308473-1-jgross@suse.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: <20260421074211.308473-1-jgross@suse.com>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 7bit
X-purgate-ID: tlsNG-720697/1776758119-88ACA161-42DD32EB/0/0
X-purgate-type: clean
X-purgate-size: 1330

On 21.04.2026 09:42, Juergen Gross wrote:
> In order to reduce excessive number of watch events the watch depth
> feature has been defined, allowing the user to limit the number of
> node levels below the watched node to cause events.
> 
> This series is implementing this feature for xenstored (including the
> PV and PVH stubdom variants).
> 
> Possible users are:
> 
> - xl/libxl: use domid information for the special @introduceDomain and
>   @releaseDomain watches, which will be available when using depth = 1
> 
> - xenconsoled, like xl/libxl
> 
> - any PV-device backends watching directories for added devices (no
>   watch events when any device specific node is modified)
> 
> - any PV-device frontend and backend watching the "state" node of the
>   other side, in case the other side plays dirty games by building
>   large sub-trees beneath the "state" node
> 
> Changes in V2:
> - some minor stale changes reverted
> - last patch covered by the series now, man page updated

Is this really everything that changed? I wanted to commit the first two
patches from v1, but I had to leave out patch 1 as it didn't apply. Patch
2 I have in pre-push testing already, but as mentioned on Matrix there's
a so far unexplained build issue (definitely not related to this series,
though).

Jan


From xen-devel-bounces@lists.xenproject.org Tue Apr 21 07:57:19 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 21 Apr 2026 07:57:19 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1288516.1568795 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wF5yx-0001wJ-8A; Tue, 21 Apr 2026 07:57:19 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1288516.1568795; Tue, 21 Apr 2026 07:57: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 1wF5yx-0001vh-3u; Tue, 21 Apr 2026 07:57:19 +0000
Received: by outflank-mailman (input) for mailman id 1288516;
 Tue, 21 Apr 2026 07:57:18 +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 1wF5yw-0001tq-EJ
 for xen-devel@lists.xenproject.org; Tue, 21 Apr 2026 07:57:18 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wF5yv-002iV5-Qz
 for xen-devel@lists.xenproject.org; Tue, 21 Apr 2026 09:57:17 +0200
Received: from [10.42.69.12] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <Mykyta_Poturai@epam.com>)
 id 69e72dd8-5cb7-0a2a0a5109dd-0a2a450ca6fe-18
 for <xen-devel@lists.xenproject.org>; Tue, 21 Apr 2026 09:57:17 +0200
Received: from [52.101.72.122]
 (helo=AM0PR02CU008.outbound.protection.outlook.com)
 by tlsNG-d25034.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.1)
 (envelope-from <Mykyta_Poturai@epam.com>)
 id 69e72ddc-62f1-0a2a450c0019-3465487ab259-4
 for <xen-devel@lists.xenproject.org>; Tue, 21 Apr 2026 09:57:16 +0200
Received: from PAVPR03MB10102.eurprd03.prod.outlook.com
 (2603:10a6:102:30d::12) by AMBPR03MB11567.eurprd03.prod.outlook.com
 (2603:10a6:20b:724::18) with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9818.32; Tue, 21 Apr
 2026 07:57:15 +0000
Received: from PAVPR03MB10102.eurprd03.prod.outlook.com
 ([fe80::b8c6:f37a:987a:beb]) by PAVPR03MB10102.eurprd03.prod.outlook.com
 ([fe80::b8c6:f37a:987a:beb%5]) with mapi id 15.20.9818.033; Tue, 21 Apr 2026
 07:57: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=QFmAk0co2D8Ev4JkBp4yE24TvdWu2lreWVF5ykhBNjfhd3He+2K++A3lIfK7jbZ6ARBquK43JhnXIEGcNuCAndx00/KEtdC8X4LDxKTH1EJDjLP4xik3JgS3V/FoL0CGx2INwO/sGTXD0vQxvmSI8arnSpoS9ZeMRy3OJkcEVGcaVWS7RmGvxuVzEXPllk2B2sdFh++6DTzhRSU2ArHF8P8lnnG2/b4xeg0h7XIGvAbai83KOP+HG5Ej+Kd9ljmJuQJ7csnKrWHlpPePpI7C86McIvJsqkjQxuBm1G6UQ3/itr7q72dF0U7OiM7o87/KNxIvNVhpMIipkVYI8r70UQ==
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com;
 s=arcselector10001;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1;
 bh=eWEjEoDaHyx8D7ETHnBAHXhn2LY10JL0lgsjPN9gVyk=;
 b=tBuM79ja/E11hWANBFpfWdTIK519F9Z7+06pChE54z0WYC6jF22Bf7MAWHzULplcoNsWNA9UeInhmxJBHOPwOzHW2mrWGKrkol5Q815nmjhLI6wo+EpPDDTF0IqkqSWOMAVadnANcIa89y9mclG8eKVrsh//7dvoSIrDAIeQ1jxjqh/MHYIA3FtM1t5IGI6lxxzfeMoQsCoEvi6H7zQwG1DEtYhDZ9aQlBrHTEvf6Wer6k/mN0vnvEkLlMSYsxYf7K+zQxNA0rmm+itrU8+jREe7hQqQ7vfRrj/VZp/jPR4znsHsewIrDzbz0tYOQp7TAEeBmz8b8kp5qCuKacOO5w==
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=eWEjEoDaHyx8D7ETHnBAHXhn2LY10JL0lgsjPN9gVyk=;
 b=dzHODUDahg1oygMmoJL5EtJHfq49PCzZOkTi7g3PLlF3BCUeURlCeYzAUElP9f4GT5xcnU6QRZ5r7b1SNRmS6xIkMyxr0UnZs8DMnzznHGmJWbWJsD3G0sqw3uudfId0nIIAHDxtDdXEwJgySIdeHCYdx+beTz4JT6uWi8aIJLb3BvoTI1Y0aGxeWAdOkLliXNuMYIqIDrr2nVjIjGJuKAahf09cRRdJ8YLu8iUQYLMbZ7z+Gwg4ZJxWfA8xsKZoplU8I4l6UfMp3X6yTPljRbngTGv3c1tbeFXqHf9xODwDrrGcyUB7jrxpXqLQJKoXK5uXdUykJIG32mQ8xaJuNQ==
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.pau@citrix.com>, Teddy Astie <teddy.astie@vates.tech>, Stewart
 Hildebrand <stewart.hildebrand@amd.com>
Subject: [RFC PATCH 1/2] pci: Allow platforms to modify BAR adresses
Thread-Topic: [RFC PATCH 1/2] pci: Allow platforms to modify BAR adresses
Thread-Index: AQHc0WR37j+cn2EDhkOwlRb5qqOUDg==
Date: Tue, 21 Apr 2026 07:57:14 +0000
Message-ID:
 <a0f623792497ab92cfb64c50bd17d28138e10b99.1776756291.git.mykyta_poturai@epam.com>
References: <cover.1776756291.git.mykyta_poturai@epam.com>
In-Reply-To: <cover.1776756291.git.mykyta_poturai@epam.com>
Accept-Language: en-US
Content-Language: en-US
X-MS-Has-Attach:
X-MS-TNEF-Correlator:
authentication-results: dkim=none (message not signed)
 header.d=none;dmarc=none action=none header.from=epam.com;
x-ms-publictraffictype: Email
x-ms-traffictypediagnostic: PAVPR03MB10102:EE_|AMBPR03MB11567:EE_
x-ms-office365-filtering-correlation-id: 1cad9d25-1e34-4a63-ed08-08de9f7b9a67
x-ms-exchange-senderadcheck: 1
x-ms-exchange-antispam-relay: 0
x-microsoft-antispam:
 BCL:0;ARA:13230040|7416014|1800799024|366016|376014|38070700021|56012099003|18002099003|22082099003;
x-microsoft-antispam-message-info:
 06C11im4QuYEoP6kTyOh773VbiRl3fwlWog1JHRwuMP3bUieDs31c/lYM3bu5HFWV1l1FIHmqeAWl7V54JI7Qwm4dGfGAzaCcdfLzwGiyKlVRZeolVn04M6vbJ3gRHnXrXBXRce54xcCXstPQlr1ZSa1VdxNMi2/3lJ/V+xNAEcVeGno+LgPMELX5uC//AN3mVJURCMQrHbd8vf0ATThUL5HFAK2zLWNulDZbNejDDHG7T+4fqMdh7lJof0q2xEs2cw/hO+NPOsghOVtFPbaXcSMa93cw1eglTe61xgwRXaqFWhNWJJW+R6jhuzQJRpqSrF32gdwndYNxdBbJ86CFo9bkdrS+EdcGkUzxi3HNHUQv+vWwsTEGfRWT0yyMgF0dMc/aFf7Uzxo2FN1EPLYGeaj4HrqMFdo+Ia9Cj3Cckv6mwS7vkUE5p0CjlVqvtriOh7B86gXE25AdJHeJONk2udNlK6LhzJbE/8gGKTaCmJy4r8woi2CauWNlABwUh1iko7wXAW6U1JeYspnUdAMTitYq2I/tIdbdLm0AZZ4RoLjAXRqSomh53ehXckpF9RJk6gHGuZXtYmBfMwVrNLuTy0CNH5uqaSZ+Hz04A2k4+6abkquAfVk9FC8VMPzpgUtvRy5BPIYn3CcV29OUWndaQbc3AdFmbNRdPq8e3rQWVLYAb/bfFXF/usMmGox9+Sotn+6VSA8W5hp17KrMydt0qlIVv1WITLpfOmYtmtxK5eKlUdEZrXsm7JdaRiooBEu8zoVyslY0A+28EFh0hfKOcCBkCdowS//JPkoDKRgNQA=
x-forefront-antispam-report:
 CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:PAVPR03MB10102.eurprd03.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(7416014)(1800799024)(366016)(376014)(38070700021)(56012099003)(18002099003)(22082099003);DIR:OUT;SFP:1102;
x-ms-exchange-antispam-messagedata-chunkcount: 1
x-ms-exchange-antispam-messagedata-0:
 =?iso-8859-1?Q?CMT7wg5GE/dIHgJnYImdjRKvEgpDs1VXn7t0J9+8dqos260v1504QpzchC?=
 =?iso-8859-1?Q?a9lnmgnL2SSwPQmIH1BqYMajd0Lz4AJvYr4B3aOuvdxQvQMO/MtPWi47aT?=
 =?iso-8859-1?Q?cBoV9qLTvi1Vivlid0AG0E1j4cooOutEiVE1PqxFSTH7zZ3nir9rGszN0N?=
 =?iso-8859-1?Q?6z6x02atMFRQPTRrc5hMw/I+0BNarcQaIyjPwRJTM/h9U1/s0UiqW6oM4E?=
 =?iso-8859-1?Q?zljhhAvxwGNjB3xNrHtFGinvYnEw7Ot94LqYiXVVgbQ3cYijjCSHXTrQrC?=
 =?iso-8859-1?Q?/d41xxtxpCxrmXhLFekdlFinL44Yg+2PYpPt7YrQWoC1gbQtiZgUlsqwyI?=
 =?iso-8859-1?Q?Zd14fF+EXkMGsZPf1o+Xc0rdSlpJnNnRcL7T1XA4oCGLZV07I0XGtwPpTj?=
 =?iso-8859-1?Q?vdlZQaLqZgyc7qQD1Qe1WZkRQIGYSmCeoZIdmxFaAkHNsoIdwRgjsbsICD?=
 =?iso-8859-1?Q?XPQ9cyXFfZTWpoYsbOPNMMK654tyVQ2I7jLCX9TOWxb87SsumKBd7M7Lm8?=
 =?iso-8859-1?Q?tEZP8Co4FSwKMD4kUheer34jwGeI9r83skzp9Q3hyA5qfz31ee0gYv470F?=
 =?iso-8859-1?Q?KvtCMXRAE6ou6YluJyTZbSkL/ArUrm4KQ+7P6rNe0I87SdgBfRqypo33EU?=
 =?iso-8859-1?Q?xW6sGLAmjuvZiditV66SpwWukS8BXLSuDzrwrtaRzXAX6tLhj1uALI7TxN?=
 =?iso-8859-1?Q?yRJ2fR3SVny0Gx7iu7O4Aip/5hp+m6O9AsWDuNUgsPGxCwAY80TUCkfW/I?=
 =?iso-8859-1?Q?oiWF8sJ2/16/+5c3yPtN0XpARq5XENkzSF+Hdc3yZPWdnorpQ3H8s3gtjn?=
 =?iso-8859-1?Q?jg2O3B0Adss9UDNnncI5rLaOFEVUNkHqABt2XsWzDTn2p7/kH3grDZJW0g?=
 =?iso-8859-1?Q?ZIestSYg7ZCOcoX3mRnk5jpW20ldJOYU+ZdWUygfy/A1arZpHGyEr9Dpr/?=
 =?iso-8859-1?Q?ZJL0xtb8vHdRh5CUmaRI/svEega9y+Lb1oVXpQx9hiHmU/vO/V0Oe8a2qz?=
 =?iso-8859-1?Q?jTmAL3H58nmz2INPeyEQoDXN2oBvii9KF7GRtStNQglc6pd95o1SDGA/QK?=
 =?iso-8859-1?Q?LSkt16aMlEU2N0+BVj8rgssZ28gY66wSAwLdREKdqsKEz+MS7OtUuUGUEF?=
 =?iso-8859-1?Q?8Vl6BmGUcQEnPqJQ5P5Kl+6o0DfG+OJX4iozqjjiKsVa1C8c5gV31Jo9yp?=
 =?iso-8859-1?Q?xhQWTPn9pzuflcyDl9RnwohS+axGXI1QdECwOJ9MwlRwHkwQdGt0wLXiD4?=
 =?iso-8859-1?Q?UzgjofCs/FJwncaPWEZj/ywYKZMyokwS96FJYKkLrN8Gw3AFHyITtkDQCL?=
 =?iso-8859-1?Q?B6O5DsY2UBxdgQ2VmVTzjUAYJbetF6KTnm8hsWrPiyjgfUp4GFLVVBbDp5?=
 =?iso-8859-1?Q?8beu5Bv3WwWka41JBnMynrQG1HbOvOQIPnJYmw65fCjdgIZFHDBOpHccrh?=
 =?iso-8859-1?Q?Qt3Yz//dezmRErXZH0mYMrn5ZOnzFShoOC4qPEY5x9PrwQnTzSklM6pKyV?=
 =?iso-8859-1?Q?7g/kt8mud9+H/PfyieBHfy1LlSaJMfQ/Re9iYkr4m8O3rZsUsLP38u1u7Q?=
 =?iso-8859-1?Q?8XVpdMJ/Dlx5Vi59BOSI/XMWVURu/SYMF4YeJxKbwty4yxVEjhsvN/cAs4?=
 =?iso-8859-1?Q?ckLGWp3lqYyokYw4M5OuZv+PjTn7BH1jzePMbGfQl8RCQWCXhgLTRHYSl1?=
 =?iso-8859-1?Q?VzXR25SftO2MkdYVkXCnhwOsh41xx8LsN82em95vO8bk2iqOOWY4MJEdwC?=
 =?iso-8859-1?Q?L9eIoHiC5MUwiRUkQQnLCDmJ6pQzizMG4sDnhptNVh7fQtWsHcGxcPgtqX?=
 =?iso-8859-1?Q?bpscjfMW7rj3nhB6XMfAulroLdcVV5k=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: PAVPR03MB10102.eurprd03.prod.outlook.com
X-MS-Exchange-CrossTenant-Network-Message-Id: 1cad9d25-1e34-4a63-ed08-08de9f7b9a67
X-MS-Exchange-CrossTenant-originalarrivaltime: 21 Apr 2026 07:57:14.1877
 (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: mBKfZ12opV29qaJOOiCyjh31nN+wkmWGe9iwgzyiyKPLh6Rq+y20O4ZtujgbhPGtpOMMiAeePSdvp7dQyq1uQQ==
X-MS-Exchange-Transport-CrossTenantHeadersStamped: AMBPR03MB11567
X-purgate-ID: tlsNG-d25034/1776758236-6FD7BCF5-A81FECCC/0/0
X-purgate-type: clean
X-purgate-size: 4165

This patch is a preparatory work for adding Region ID support on Renesas
R-Car series boards. Add new host bridge op "fixup_bar" that allows
platforms to modify BAR addresses before they are mapped.

Because x86 don't have support for PCI Host Bridge drivers, add another
level of indirection in form of platform_pci_fixup_bar() function, that
will call host bridge op on ARM and do nothing on x86.

Signed-off-by: Mykyta Poturai <mykyta_poturai@epam.com>
---
 xen/arch/arm/include/asm/pci.h  |  3 +++
 xen/arch/arm/include/asm/vpci.h |  9 +++++++++
 xen/arch/arm/vpci.c             | 12 ++++++++++++
 xen/arch/x86/include/asm/vpci.h |  6 ++++++
 xen/drivers/vpci/header.c       |  2 ++
 5 files changed, 32 insertions(+)

diff --git a/xen/arch/arm/include/asm/pci.h b/xen/arch/arm/include/asm/pci.=
h
index 7c3211823f..398a4eb746 100644
--- a/xen/arch/arm/include/asm/pci.h
+++ b/xen/arch/arm/include/asm/pci.h
@@ -80,6 +80,9 @@ struct pci_ops {
     void (*init_bus_range)(struct dt_device_node *dev,
                            struct pci_host_bridge *bridge,
                            struct pci_config_window *cfg);
+    void (*fixup_bar)(struct pci_host_bridge *bridge,
+                      unsigned int bar_num,
+                      paddr_t *addr);
 };
=20
 /*
diff --git a/xen/arch/arm/include/asm/vpci.h b/xen/arch/arm/include/asm/vpc=
i.h
index 0cc6f5a105..f5c817a51c 100644
--- a/xen/arch/arm/include/asm/vpci.h
+++ b/xen/arch/arm/include/asm/vpci.h
@@ -16,6 +16,10 @@ struct vpci_arch_msix_entry {
=20
 int domain_vpci_init(struct domain *d);
 unsigned int domain_vpci_get_num_mmio_handlers(struct domain *d);
+
+void platform_pci_fixup_bar(const struct pci_dev *pdev, unsigned int bar_n=
um,
+                            paddr_t *addr);
+
 #else
 static inline int domain_vpci_init(struct domain *d)
 {
@@ -26,6 +30,11 @@ static inline unsigned int domain_vpci_get_num_mmio_hand=
lers(struct domain *d)
 {
     return 0;
 }
+
+static inline void platform_pci_fixup_bar(const struct pci_dev *pdev,
+                                          unsigned int bar_num,
+                                          paddr_t *addr)
+{}
 #endif /* CONFIG_HAS_VPCI */
=20
 #endif /* ARM_VPCI_H */
diff --git a/xen/arch/arm/vpci.c b/xen/arch/arm/vpci.c
index d41aa383a8..ec6efec22e 100644
--- a/xen/arch/arm/vpci.c
+++ b/xen/arch/arm/vpci.c
@@ -189,6 +189,18 @@ unsigned int domain_vpci_get_num_mmio_handlers(struct =
domain *d)
     return 1;
 }
=20
+void platform_pci_fixup_bar(const struct pci_dev *pdev,
+                                          unsigned int bar_num,
+                                          paddr_t *addr)
+{
+    struct pci_host_bridge *bridge =3D pci_find_host_bridge(pdev->sbdf.seg=
, pdev->sbdf.bus);
+
+    if ( bridge->ops->fixup_bar )
+    {
+        bridge->ops->fixup_bar(bridge, bar_num, addr);
+    }
+}
+
 /*
  * Local variables:
  * mode: C
diff --git a/xen/arch/x86/include/asm/vpci.h b/xen/arch/x86/include/asm/vpc=
i.h
index c501ff1709..a05b70abbf 100644
--- a/xen/arch/x86/include/asm/vpci.h
+++ b/xen/arch/x86/include/asm/vpci.h
@@ -16,6 +16,12 @@ struct vpci_arch_msix_entry {
     int pirq;
 };
=20
+/* X86 does not require PCI BAR modifications */
+static inline void platform_pci_fixup_bar(const struct pci_dev *pdev,
+                                          unsigned int bar_num,
+                                          paddr_t *addr)
+{}
+
 #endif /* X86_VPCI_H */
=20
 /*
diff --git a/xen/drivers/vpci/header.c b/xen/drivers/vpci/header.c
index a760d8c32f..d89e43354c 100644
--- a/xen/drivers/vpci/header.c
+++ b/xen/drivers/vpci/header.c
@@ -882,6 +882,8 @@ int vpci_init_header(struct pci_dev *pdev)
         bars[i].size =3D size;
         bars[i].prefetchable =3D val & PCI_BASE_ADDRESS_MEM_PREFETCH;
=20
+        platform_pci_fixup_bar(pdev, i, &bars[i].addr);
+
         rc =3D vpci_add_register(pdev->vpci,
                                is_hwdom ? vpci_hw_read32 : guest_mem_bar_r=
ead,
                                is_hwdom ? bar_write : guest_mem_bar_write,
--=20
2.51.2


From xen-devel-bounces@lists.xenproject.org Tue Apr 21 07:57:19 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 21 Apr 2026 07:57:19 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1288515.1568790 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wF5yx-0001u3-0l; Tue, 21 Apr 2026 07:57:19 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1288515.1568790; Tue, 21 Apr 2026 07:57: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 1wF5yw-0001tw-UM; Tue, 21 Apr 2026 07:57:18 +0000
Received: by outflank-mailman (input) for mailman id 1288515;
 Tue, 21 Apr 2026 07:57:17 +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 1wF5yv-0001ti-Fy
 for xen-devel@lists.xenproject.org; Tue, 21 Apr 2026 07:57:17 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wF5yu-002iV5-Ou
 for xen-devel@lists.xenproject.org; Tue, 21 Apr 2026 09:57:16 +0200
Received: from [10.42.69.12] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <Mykyta_Poturai@epam.com>)
 id 69e72dd8-5cb7-0a2a0a5109dd-0a2a450ca6fe-10
 for <xen-devel@lists.xenproject.org>; Tue, 21 Apr 2026 09:57:16 +0200
Received: from [52.101.72.122]
 (helo=AM0PR02CU008.outbound.protection.outlook.com)
 by tlsNG-d25034.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.1)
 (envelope-from <Mykyta_Poturai@epam.com>)
 id 69e72ddc-62f1-0a2a450c0019-3465487ab259-3
 for <xen-devel@lists.xenproject.org>; Tue, 21 Apr 2026 09:57:16 +0200
Received: from PAVPR03MB10102.eurprd03.prod.outlook.com
 (2603:10a6:102:30d::12) by AMBPR03MB11567.eurprd03.prod.outlook.com
 (2603:10a6:20b:724::18) with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9818.32; Tue, 21 Apr
 2026 07:57:15 +0000
Received: from PAVPR03MB10102.eurprd03.prod.outlook.com
 ([fe80::b8c6:f37a:987a:beb]) by PAVPR03MB10102.eurprd03.prod.outlook.com
 ([fe80::b8c6:f37a:987a:beb%5]) with mapi id 15.20.9818.033; Tue, 21 Apr 2026
 07:57: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=YaykhUmpeGWO2VnvDmySEFxB0GuT+84t1jEisRho3PIxAUaedNsB3kxXJyijVFhvx9BcXln3q/3JQuw1rfww7ui6IWaA6N1UmIxiUxYDL9/zBVb3tr6n+cj6nXwqsmtZkzG6TYROH9bPLBQwzAmi9G5jgmlB+pf3ly+B6K9aZClePS6Vk6aG+VgRnXuMleZRWo+/eaEiQ9yiv/6XcyBJwT+Zb7QQb5XDuig9/XOBPZBeqKbkgOCp0lwyAJmeKUHVvS11q+d82HcZbxNNekFPRgVOulNrz9b0vsLyD2rMoXcnwo6QeHNIUqcJLJELeM0bTWD9NK7ZQHL0CAo86wy1eg==
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com;
 s=arcselector10001;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1;
 bh=HRPRcgh1FVGOsAWnaXs0RoOu6QcTP9Fjyh01V3xCn/I=;
 b=KDoryF2igz2q91Qf4GpgeCyyMI3vUkibosxEF7CqilZUpoVancOn28Bx0cC98fK/qWyBts8iZi3CoX4p9huJX3u4letT23PW1SBaAgKpH8Wih588iyM5x5EJjryjFcvj4BqAdOJq9kUt9OqJdAXRrmDllSMVWXrg4GnlqwEbBcDLGbQeD214m0ylcguQunHT5p0zkEdp0dzAgWQQd+MmykOta76YddBdtolmCJZysR2QzFDsRaq9EzIEpUuKYDXy/Bgo6z5oMLU3sZnznPXXp1HZ155iMdrK7Of31cWGoW/uqIYBA7KlVjwtNT5a/iUyblht4wgv0EYtKEUidPPgbQ==
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=HRPRcgh1FVGOsAWnaXs0RoOu6QcTP9Fjyh01V3xCn/I=;
 b=Pz+2LVMd5/vYar77FN7JyauUk7ichkCljauQNJ3rQ/HqldIYKSbkgqLZZJhNNvBJbvtjnyFzqlNh5Edfef6EZT11tZ9drms0dfjqsYV5RYZK1hP99ISknN5Kql0JGgb/UQL8XR91LD2Cdj09Kje5h9ZeCZak7yMHihlK6wcZ0ncG9sIsPD3MPy8YLhUJLubDct2vCi4hKTdojoNF0nk8qZbAEez6gBDvJIc7nh+T4JoT05mB6nPmYs9PNxCWGlxjgKhaPekH48BHTJ71HR2OSBxMZhm/x7M/7p02WhAy5YC9tZGknSzwrJWDGeen4/VI2j/cjMO+8zzaK87UPcpOTA==
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.pau@citrix.com>, Teddy Astie <teddy.astie@vates.tech>, Stewart
 Hildebrand <stewart.hildebrand@amd.com>
Subject: [RFC PATCH 0/2] Add region id support for PCI
Thread-Topic: [RFC PATCH 0/2] Add region id support for PCI
Thread-Index: AQHc0WR20glHFzpSrUS4wumyIAn/dw==
Date: Tue, 21 Apr 2026 07:57:13 +0000
Message-ID: <cover.1776756291.git.mykyta_poturai@epam.com>
Accept-Language: en-US
Content-Language: en-US
X-MS-Has-Attach:
X-MS-TNEF-Correlator:
authentication-results: dkim=none (message not signed)
 header.d=none;dmarc=none action=none header.from=epam.com;
x-ms-publictraffictype: Email
x-ms-traffictypediagnostic: PAVPR03MB10102:EE_|AMBPR03MB11567:EE_
x-ms-office365-filtering-correlation-id: 6525d359-4782-4269-596d-08de9f7b9964
x-ms-exchange-senderadcheck: 1
x-ms-exchange-antispam-relay: 0
x-microsoft-antispam:
 BCL:0;ARA:13230040|7416014|1800799024|366016|376014|38070700021|56012099003|18002099003;
x-microsoft-antispam-message-info:
 6/RD1nSUol+CsWdpDDrHSWDik9QByes3wLi8017cY59bb0yUtujq6sdZM8PQnyZUPu0vWN146enqKFmCTfa04/pIfCckK1//rXyVcV0hG3CoBGJjV5Ia3fwvx5rqOXNQQ/pxqM93YFodL8xmZXitPwZ559jIOYk7E6VtSUapJPucoS7DVF0dXmE9/9X3AFn3OReqChiX4A8alEbtwQ3YJ3WrXoN3wqBJkKIfA1uFLMO5utI2E0qM6iTU0WA+wKs6xzpd0o1wF1W/BL6K7t+Uh1+7OYmJnd8rUGlxjRVY2I0t/MfoxiEtE+jRwtAkqBU4E9aY+tz1rssu7l1SRyGbjW6j3R/GctzkJGw1fQiPajHedoLxk102P0A9XG2pxD7FTpXbJr+DQSF2Lb9MGNZOADOGAC80roryWolpBJgRYJo5v2Kwq8CzOsXksvhgy3g/5RuZqnzo3CCUDSefvHTwrLPnNpP6cbFIhWg2GzkTmd1NW9QWnMa+8LcYQozpVtD4SBH0zFIVVBpG1Evuep5x1KC/J1RtgJ4eEuKdAB8QYa/d309SDTLVYrO1LcAWciDbmpTAjHDAfhFnMwM/nkr2y3yA4fbkq/jtByp1rgZoq7+nTFOlxh3YtsGdy8JRDuDEvhjoHzw08reUhRq3at40BTSC6AKaARnk4U2LoNfRroP3ZE5i/8Ld+Qy8zg1pJjnSlNxR94SZkcV0FIPPXOjuFppMsZ3/e/3alPunbNsma7PVi4Ww+OuzS1OawPIc3dOnA+Bfx3AtC4nZblPC19JoDiLheUOimOpGK08+cDmz5zs=
x-forefront-antispam-report:
 CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:PAVPR03MB10102.eurprd03.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(7416014)(1800799024)(366016)(376014)(38070700021)(56012099003)(18002099003);DIR:OUT;SFP:1102;
x-ms-exchange-antispam-messagedata-chunkcount: 1
x-ms-exchange-antispam-messagedata-0:
 =?iso-8859-1?Q?pwImHPtAQnxQrvPJ/i+4pacbAXhxKb/ir0IW5MO1joj8CsRsuNXfQEKPnD?=
 =?iso-8859-1?Q?i0ga16BAyGbrVnn0AcI/CpDegkSbar9SSEhFi/jmFVjH+pwYF+qb/THsyj?=
 =?iso-8859-1?Q?4sht+Dph63tNVJm+BcKWT358A5/EZyiNvAaQTccTbk4ild2o7dW+a7S+ZC?=
 =?iso-8859-1?Q?vP2yMA1DLgasJ7eAzVRfCThUN0CWoCkUrcFg/P+db/0R+zVe+bJbH4ypKL?=
 =?iso-8859-1?Q?BI8febpFC241cw2XFBgT69oAVGDnTVVnqYMF+kmutpD0tqGW+9WbIcFTtE?=
 =?iso-8859-1?Q?sNeUbqa322Bw+bzDl6joD17G4f9w8PjyZP9DRAY1zB99vox/73BPQliY5x?=
 =?iso-8859-1?Q?LnQhw4geP49PclVVMlW6TuJkoZdnvrmu7Z9KdMTPZfxjiuaEZJ0QE6rxfo?=
 =?iso-8859-1?Q?MhYAS2g0nmwYPaZl3CWxFIo+BjhC/HNDODc+ZgpWmYgL69AlWFJNFaYpmF?=
 =?iso-8859-1?Q?YHNTW8pAWTCBg9ScB23CsjeHMqgUqoev69rleSy1gukSbhTUAw5ux/Zvpi?=
 =?iso-8859-1?Q?8yEKqVqSMBSo8fL7YVdUXFZEzBl/OSYMp+e0+g5oLAfWRXtmHZVY6OzFxk?=
 =?iso-8859-1?Q?afUQsPrpkvELQiHQycfG0TZ7s2s3KzT0X/suFiGoPnIlF7wT+eX1QwQhtY?=
 =?iso-8859-1?Q?bYr9XSzaUXQRb2MQNIY83t8p0kMvet82qKD0Qu/7LTKjY95qlTCv7ClnYP?=
 =?iso-8859-1?Q?wCisA5qlq0tsbuya1U2Z+aU66L6MViFNiIHYWyljI+8d7M2bnp6IYPBNyk?=
 =?iso-8859-1?Q?xAHE7+PZRUuoK3//kbZacyJkAz5TGNyyEaLeYbF+o6RcfW6FMULEXdRmaL?=
 =?iso-8859-1?Q?sxUaFgFm+2ITHXmeH0/z6mehbUMNLj1FBBCtdlCPEb6SNIP3wXHnIvbqLo?=
 =?iso-8859-1?Q?pAjtra7ZrluVDvfrz+j81Yyi6/rJjwsvtz0crFk15rA1tou1wPmHrHgd1t?=
 =?iso-8859-1?Q?xE2iWh/b4clRj3R+me69qbwATRjtnbGpglxtteemz2Iu28fxUYeET/Llbi?=
 =?iso-8859-1?Q?RTUMUTS4eOdVzxxnTvueVca6mZeNa6yQfBdwObJ/dOgCOuSwVWs7/VX5nF?=
 =?iso-8859-1?Q?oQOfU9nua7QrRBRTwI1xrgRc3bHLWML7m4vfAo9tkPrIfe+3AeVQIARGTu?=
 =?iso-8859-1?Q?09LxZ49Ge2IS/CWlgYNYS5N9TUhiDtIfdGxbSGuP80D9pMYrpL/F+uMCnZ?=
 =?iso-8859-1?Q?Pa8PIrB6jd+DQ0A0LJuz6SXASHzWO8YyHVAaqeGJoXnz4pN62jfaFTxUCW?=
 =?iso-8859-1?Q?1nKob5xpxasE2GxOvFdGeYVEqJl9aJBl+W5wVyz/AmNFgx4eaUVM58+hBH?=
 =?iso-8859-1?Q?OrhG3JnC3UtBLGVme4P4tNuQ+/2VI+jJ/CJkusB08ebvuArseN58ZkV/6B?=
 =?iso-8859-1?Q?jimkAWPFZEJA+qubIQ25Sq8WqXeszwfiyyNNXNrm1Usdyf1rO4o+lovKgz?=
 =?iso-8859-1?Q?JIFSKM/MBcodBpzRdG13H2apgdnxYsrcPPcOodZYVmbQhN/9ivzGwjfsbX?=
 =?iso-8859-1?Q?vRB42qlzebeuAmVqs0XTPesuTOuepBsYkPGD1CGlDK3+heS0XtwDKIKpEQ?=
 =?iso-8859-1?Q?fl1Mh0v/HQXOhkn1ILqbZ5uvYZejIxZX/MxdDZq24PNOkX40WfDlxOvrGH?=
 =?iso-8859-1?Q?HBZocLyikQliYD662tMVjXfP7uoN28iKBbqe/i56kcg3YkPdPM7BJJpVHp?=
 =?iso-8859-1?Q?5SKjChcspmJIxOtm3rJX0ahmXmcZGsQjV3m3Wpdg0wWntH1XWWROfbQziL?=
 =?iso-8859-1?Q?9Wy2Ru5azipVka5QDKLP4hguLRdCVOXmqSY8H/1h+fpy3eBDlXSVxGRWdL?=
 =?iso-8859-1?Q?PO2YGL3rJq7hgAZOxI8kJMiWr7S8EO4=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: PAVPR03MB10102.eurprd03.prod.outlook.com
X-MS-Exchange-CrossTenant-Network-Message-Id: 6525d359-4782-4269-596d-08de9f7b9964
X-MS-Exchange-CrossTenant-originalarrivaltime: 21 Apr 2026 07:57:13.5587
 (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: 5QRfrmnKft++ehWsXLRcGhixIbzglZlV0oeBMnlnpr7TOGefnWVkAA8e2E7Bga98Z6z9REt+GwKEr3MStlCXew==
X-MS-Exchange-Transport-CrossTenantHeadersStamped: AMBPR03MB11567
X-purgate-ID: tlsNG-d25034/1776758236-F6809CF5-358DCFBE/0/0
X-purgate-type: clean
X-purgate-size: 1305

On Renesas R-Car platforms, the Region ID (RGID) feature encodes an
identifier into the upper bits of the physical address for every CPU memory
access. This address manipulations can mostly be done via system and domain
congirutaion, but for PCI bar it is not possible as some BARs are 32bit onl=
y.

This series introduces a platform hook that lets the PCI host
bridge driver rewrite BAR addresses at vPCI init time, and provides the
R-Car Gen4 implementation that adds the configured RGID into each
address.

This is sent as RFC to get early feedback on the approach:=20
- Is a pci_ops callback the right place for this kind of address fixup?
- Is platform Kconfig a good place for RGID related options or is it better=
 to
  put them in some other place.

Mykyta Poturai (2):
  pci: Allow platforms to modify BAR adresses
  plat/rcar: Add region id support for PCI

 xen/arch/arm/include/asm/pci.h    |  3 +++
 xen/arch/arm/include/asm/vpci.h   |  9 +++++++++
 xen/arch/arm/pci/pci-host-rcar4.c | 15 +++++++++++++++
 xen/arch/arm/platforms/Kconfig    | 21 +++++++++++++++++++++
 xen/arch/arm/vpci.c               | 12 ++++++++++++
 xen/arch/x86/include/asm/vpci.h   |  6 ++++++
 xen/drivers/vpci/header.c         |  2 ++
 7 files changed, 68 insertions(+)

--=20
2.51.2


From xen-devel-bounces@lists.xenproject.org Tue Apr 21 07:57:20 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 21 Apr 2026 07:57:20 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1288517.1568809 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wF5yy-0002L1-IJ; Tue, 21 Apr 2026 07:57:20 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1288517.1568809; Tue, 21 Apr 2026 07:57: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 1wF5yy-0002Kr-Ce; Tue, 21 Apr 2026 07:57:20 +0000
Received: by outflank-mailman (input) for mailman id 1288517;
 Tue, 21 Apr 2026 07:57:19 +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 1wF5yx-0001vw-AX
 for xen-devel@lists.xenproject.org; Tue, 21 Apr 2026 07:57:19 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wF5yw-002iV5-Mb
 for xen-devel@lists.xenproject.org; Tue, 21 Apr 2026 09:57:18 +0200
Received: from [10.42.69.12] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <Mykyta_Poturai@epam.com>)
 id 69e72dd8-5cb7-0a2a0a5109dd-0a2a450ca6fe-26
 for <xen-devel@lists.xenproject.org>; Tue, 21 Apr 2026 09:57:18 +0200
Received: from [52.101.72.122]
 (helo=AM0PR02CU008.outbound.protection.outlook.com)
 by tlsNG-d25034.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.1)
 (envelope-from <Mykyta_Poturai@epam.com>)
 id 69e72ddc-62f1-0a2a450c0019-3465487ab259-5
 for <xen-devel@lists.xenproject.org>; Tue, 21 Apr 2026 09:57:17 +0200
Received: from PAVPR03MB10102.eurprd03.prod.outlook.com
 (2603:10a6:102:30d::12) by AMBPR03MB11567.eurprd03.prod.outlook.com
 (2603:10a6:20b:724::18) with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9818.32; Tue, 21 Apr
 2026 07:57:15 +0000
Received: from PAVPR03MB10102.eurprd03.prod.outlook.com
 ([fe80::b8c6:f37a:987a:beb]) by PAVPR03MB10102.eurprd03.prod.outlook.com
 ([fe80::b8c6:f37a:987a:beb%5]) with mapi id 15.20.9818.033; Tue, 21 Apr 2026
 07:57: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=xf9IViNnKCM1biu3q7sVIBp1L0+9mPfNoyS2B3J5dNbCA0fshLpgn73kmKYRUXTvKxZKSkz6ud67Bwx3Y5tgfpGcaE1hJoIPYH4ReHu5nA0ecePrTg+H5qYBml23VUS5OYS3Cn6ToNxClMe3nQSQ8rQtw50nonJx/8qq1x/Z4GnFCOmthAVFMOIEvGCMD26dauaHznGc6DKrelnFln3B/8JolaCNve4g57sETvroU8L0HF7KUb9OzrSRaxzqByg1nUixdGIFgdln3e/yDbATfyCq1a4lZ5qYfDf8h3bt/CZrQu5+MYx6yxd02tmz6R7yW45sx1NV4IpSSL9qsG9TKQ==
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com;
 s=arcselector10001;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1;
 bh=bfkgoKhQIRkHmGsVvlt2xgEtO5O/j7hjz0ZgQq5HUCs=;
 b=kiiFiLKKx98pJlRDgno5zqKmpglfvlrvEhEUw3gmOi9B+qR9xlij00dZGxNUKFF1KSF/hlUtJ32RuoqBJfl8RjpjFnRo7rt4TT1pb1SWKrDjtuYXEbU8QtTXv2XT2z1D9wrtaEPPAIeQ703FIx+/OOe+fHjh7v8D4T+ESrMVDaEXqI+/7tM2uLyFGCHqpa8Y/uSBMzQ3Qgz6sBqhNQMerihQyF6Hn5E7i94ml1PEBLh6LTgBrHw+TkHoo/0fa08oiinS2n1ZrnDrWpryl4O/K8TJyGDf7Mcho1KIxfqgxBaT/PbZiCSCN/S4NUhQw2keMUhjm7PhrrA0kb6Xpdfm/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=bfkgoKhQIRkHmGsVvlt2xgEtO5O/j7hjz0ZgQq5HUCs=;
 b=gZ2QMZlR8lbqXMu2T0IVz4CbUMRJkmjhRbC+BDKHy0iVZH6JCY1YHdgRGRnfSOIeDFCYs9g+rP+Wx4eln+B+Wg6hb0qpGAv7mZ2HeHzZP8rBvIpSpRpW5twg8Xmn/gR1guCEbL/2FsWZrwVmtmfilOMJpns1wnYgh7unohvicURn7pLMhVIGv7m1cXng71jGRiihW15iJiE5G6m1yiT0CpgekS06LNBQoVs9KSiWBkFeIurKcifNV5B2t3Qhjib7/qMoG3C/6aovUlssaMQgv+W5A/rnWflkDlGcYq6XAmlND7Xs3gVqtvTZ9ZPjxy1LnazAvvC6ecexNsNy7xkQ8A==
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: [RFC PATCH 2/2] plat/rcar: Add region id support for PCI
Thread-Topic: [RFC PATCH 2/2] plat/rcar: Add region id support for PCI
Thread-Index: AQHc0WR3HLVfDHqP50KPW64J7aGgdQ==
Date: Tue, 21 Apr 2026 07:57:14 +0000
Message-ID:
 <ad5caa92e36b0e0f104a14b46396037505080f4f.1776756291.git.mykyta_poturai@epam.com>
References: <cover.1776756291.git.mykyta_poturai@epam.com>
In-Reply-To: <cover.1776756291.git.mykyta_poturai@epam.com>
Accept-Language: en-US
Content-Language: en-US
X-MS-Has-Attach:
X-MS-TNEF-Correlator:
authentication-results: dkim=none (message not signed)
 header.d=none;dmarc=none action=none header.from=epam.com;
x-ms-publictraffictype: Email
x-ms-traffictypediagnostic: PAVPR03MB10102:EE_|AMBPR03MB11567:EE_
x-ms-office365-filtering-correlation-id: a05233a1-9261-48ca-b01a-08de9f7b9aa6
x-ms-exchange-senderadcheck: 1
x-ms-exchange-antispam-relay: 0
x-microsoft-antispam:
 BCL:0;ARA:13230040|1800799024|366016|376014|38070700021|56012099003|18002099003|22082099003;
x-microsoft-antispam-message-info:
 4YuHtTu01ke+a/3T07/DlZAvYp1bRVQYlNqsRH79iGANZgij4rImX3ZWKOcGXe1lpDtm20GkfkQkTrTE2hA6QHFWCdCVCizpXIQqi3Ov4KyHsnL9RRKroClHv4Ezi4FxNb8CZSqwa8v9XnWfC4vY/xdahSCT0bBjwhWACe3ux6Eg+Tepmrvn5El/uDNWcVh9DpBR6CoCQ6O7JEl0bUiyk7Y/LyIITojCM9r/fPEh7fz6aWC/meRYUO7B8Eih9G9CBotevjnspBCAR9Lpzoh+8DtmkFJSNsSxAU47V1g2hYg/+1CyevSzxJKHMnZ9eh7K4nYGg2f0cLTebYYyy8K6xpa6eDzksxUXAoIuJJxlUN01w1qLXBzdPHr8wLgqBdLYx1SG/VUNTrX5oC5a+jnGaSNxWXk0eF9xeiMxgTwSjyBdWPgzgIq3sfn7tWVlll8uXoQ65jQNtK+QWAhoIaDOsZnNuzFYjELa8rNR54BcZrvYTqtROu3ArR1iT+YmUBJvBVaZ2D1gqaa5MmAWgA2ty0iy4dWYq2VroxnJHUWx++yUaoTKjR6XV2h4YritStl267LgEQvmuv+qxbpjMjXrJs+qi+OUwiYikDYH4IY5RvV6f6ZS4fuYCdKcvqWpt7F+C8GSsCLq6O39I4iOsCccM4K5fjrOwEwL1zNHYo01mtVHY3jRpeX3W0k2CU9IlJS3L2Pno9VXhhwXH3bCGTelIAKbQ5umHbdxKh+/IT9fIfIqBJdaXHVZ7BsehEIsR2ilI0k2f0NmZNHr4xFyVb+zm+7ne5nyqTk8mctQks6SYqY=
x-forefront-antispam-report:
 CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:PAVPR03MB10102.eurprd03.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(1800799024)(366016)(376014)(38070700021)(56012099003)(18002099003)(22082099003);DIR:OUT;SFP:1102;
x-ms-exchange-antispam-messagedata-chunkcount: 1
x-ms-exchange-antispam-messagedata-0:
 =?iso-8859-1?Q?yOKZq2+neFzZft4Nvtz3sTi9UNnG0eSqDePNZ9O3c3Al1WuzVa8emQVtrz?=
 =?iso-8859-1?Q?pSgK8dTAHfWWS0wGMFKDqPiU05mD87Ciy3v+OLNuxeZAf/5DEjvF0+kFRz?=
 =?iso-8859-1?Q?RmhdA3dtzne5f4VKpO9Gm2ay4LE67EZf3UVrF+1Rx8pfmvVGYzJJoyRUhM?=
 =?iso-8859-1?Q?aUlfPLXWfw0WZo+YwkxtK9BVOzytb7jY+KIUbg/1djeexrufUppoh+f2es?=
 =?iso-8859-1?Q?KW3mKdMAp1ATqoLKbTS96jXGt3u1+hibr2+g8wjcxZNWQ1hhEDDenwCz7m?=
 =?iso-8859-1?Q?SonE/49zioPbzSDzGzHSvL4aRS1exIzjfa8u257b/Qb2FqJNkJNZKHDGTm?=
 =?iso-8859-1?Q?xpXTY4ojHK5eJKD2omFiHX6Kx+yfxwZgpQna4U91cIDFlVgCtO9TKLM/0w?=
 =?iso-8859-1?Q?HhOCOB6CfIaJV7Ep2GuQvdUFYEl8PCkHyDzr553AztADiyCB8kbmFmxtgC?=
 =?iso-8859-1?Q?3Sv1Iy4TSfQw+aytJ84jIvxEgXt0xBH1lEbuKQI2MdK0WGtc6Tp6ovnBBE?=
 =?iso-8859-1?Q?oVasLc2xz57nL3CLKuv8d9z397HTJNh5yu7/BmI0L0oV0cwC/YJBJcVJXW?=
 =?iso-8859-1?Q?WKvSl5KbA2Bhq9jP0W4UZAT10Ghipscyy4u/iGHKE/AoDR8TKD+HmAi1UO?=
 =?iso-8859-1?Q?/Xx2BhUaM6jZvs8WpPWTBICPdsFtqCv3vXT2Vn9KjV/fVfk0dLQtGZKdG+?=
 =?iso-8859-1?Q?/ZLuRTG/fFdfkBcrFtUFvr0556BdqqmWYwcEGbgX7z39ulJc7FIbZB058K?=
 =?iso-8859-1?Q?ao0vg/Et8d5gGcK4VdI8lgwjkXQ5M1K7IlVevDAHztni0GEgmv7AlOZcQI?=
 =?iso-8859-1?Q?FgP4WoRPQ5uUcGgkpQUa5KWjmMmvfnIgi2R3HgVQIT4dg+1yNNT5ceVTbT?=
 =?iso-8859-1?Q?AN1FJ/Pot/qmR+83ywFtVZk9VqZJndnD90G6mMXnUuR0Qdu+RhxTENYcMr?=
 =?iso-8859-1?Q?2sSbjB0PyRJfEfWhdZvhlTqdwVdSnHUFeiGOBsjHb8i3cYDc2tzX6AxRtD?=
 =?iso-8859-1?Q?qoZZVls2XY2yaN3w5RjU3KJZOc6SIYltnp8t/4BkhGt/sVgPvcFZx1I/gp?=
 =?iso-8859-1?Q?3m8m/TMftrq8RX2ycaW6+CFRmH6svXTVxdQ9uiUqQXiKqyoOsamFH4l5XI?=
 =?iso-8859-1?Q?KGCYE575mdtmObigjTkym3Q6ng8yoO/4JMytF5oLf+F2Eei6X2FNErxn4I?=
 =?iso-8859-1?Q?a4Xjupnl8ZXN+HGQInTEhERaj2Wp177wJHOSPh/Dl3elVcab7klbCKHdoa?=
 =?iso-8859-1?Q?ZWOj1Miy+JV3lpY9ECVxQ8/MSWpklA9V2VIkYIqOvrhCNNXRi3VX/ubFa0?=
 =?iso-8859-1?Q?CXoOAr5aINqLKgUZkZYrYxU5PI08qKsyLwAy9s1ej4spuK6NqHvJgwun2v?=
 =?iso-8859-1?Q?jeLq+RSiPLlDNGM7N8fPET0ayxZBSst6rzdPyKTnRLSAUZfvuW89o8MMvj?=
 =?iso-8859-1?Q?kois52oqUX0VPwbTXBW2tVd4fKlsZyhwvkzBAwzX0IBVhz3fvBRLQJjZTO?=
 =?iso-8859-1?Q?oRoYBsRdqtgldwtXcLFsNZ5xqq6SfTKCc5mcsW7uZvr3lImCr9ehrN9GUS?=
 =?iso-8859-1?Q?vgzrNOGHo7/umTwvtg7udVFOTFr08sVVRakPXhB9ykb696idq6zfTNLa6o?=
 =?iso-8859-1?Q?GpJVi9ZwjcqmssOXJ/XF+MP5qpk5EcjARYhYd/Ks8laW02Ni4Kr6lqz+/o?=
 =?iso-8859-1?Q?AYyGYveYvXi+c0uA2r5thn5vACHGFZNsX0xQ+2ktOmDC7vO6DmLZbqP02w?=
 =?iso-8859-1?Q?jIXa0ZE9vWR0IZKskDfGc70ZJQLvznnDIjjCSTEfi4au+tpwsNI7FXjM0W?=
 =?iso-8859-1?Q?Dth4s4wj1mQ1FvQSdWedjfoPzS3NB/Q=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: PAVPR03MB10102.eurprd03.prod.outlook.com
X-MS-Exchange-CrossTenant-Network-Message-Id: a05233a1-9261-48ca-b01a-08de9f7b9aa6
X-MS-Exchange-CrossTenant-originalarrivaltime: 21 Apr 2026 07:57:14.6462
 (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: vcyJf0dz23qi9VuCDsNlhniQiWcxt1awaan660WPrAxo0w3KNMhP7dA5Eu+Dnyao1iKsOYIRvZ0idZs3X9Kabg==
X-MS-Exchange-Transport-CrossTenantHeadersStamped: AMBPR03MB11567
X-purgate-ID: tlsNG-d25034/1776758237-6EF72CF5-AE44305C/0/0
X-purgate-type: clean
X-purgate-size: 2996

With Region ID enabled, all CPU memory accesses need to have rgid bits
set in the physical address. This creates a problem for PCI BAR
accesses, as it would require all BARs to be 64bit. Implement fixup_bar
callback to add rgid bits to the address before mapping it to the
guests.

Add Kconfig options to enable region id support and set the rgid value
and physical address space size.

Signed-off-by: Mykyta Poturai <mykyta_poturai@epam.com>
---
 xen/arch/arm/pci/pci-host-rcar4.c | 15 +++++++++++++++
 xen/arch/arm/platforms/Kconfig    | 21 +++++++++++++++++++++
 2 files changed, 36 insertions(+)

diff --git a/xen/arch/arm/pci/pci-host-rcar4.c b/xen/arch/arm/pci/pci-host-=
rcar4.c
index e1e8eb0ee1..50400c04c4 100644
--- a/xen/arch/arm/pci/pci-host-rcar4.c
+++ b/xen/arch/arm/pci/pci-host-rcar4.c
@@ -43,6 +43,12 @@ struct rcar4_pcie_priv {
     DECLARE_BITMAP(osid_regs, NUM_OSID_REGS);
 };
=20
+#define ULL(X) _AC(X, ULL)
+#define MADDR_RGID(a)    (ULL(a) << CONFIG_RCAR_PA_BITS)
+#define MADDR_PA_MASK    ((1ULL << CONFIG_RCAR_PA_BITS) - 1)
+
+#define MADDR_ENCODE_RGID(a)    (MADDR_RGID(CONFIG_RCAR_RGID) | (a))
+
 /*
  * PCI host bridges often have different ways to access the root and child
  * bus config spaces:
@@ -61,6 +67,14 @@ static int __init rcar4_child_cfg_reg_index(struct dt_de=
vice_node *np)
     return dt_property_match_string(np, "reg-names", "config");
 }
=20
+static void rcar4_pcie_fixup_bar(struct pci_host_bridge *bridge,
+                                 unsigned int bar_num,
+                                 paddr_t *addr)
+{
+    if ( IS_ENABLED(CONFIG_RCAR_REGION_ID_SUPPORT) )
+        *addr =3D MADDR_ENCODE_RGID(*addr);
+}
+
 /* ECAM ops */
 static const struct pci_ecam_ops rcar4_pcie_ops =3D {
     .bus_shift  =3D 20,
@@ -71,6 +85,7 @@ static const struct pci_ecam_ops rcar4_pcie_ops =3D {
         .write                  =3D pci_generic_config_write,
         .need_p2m_hwdom_mapping =3D pci_ecam_need_p2m_hwdom_mapping,
         .init_bus_range         =3D pci_generic_init_bus_range,
+        .fixup_bar              =3D rcar4_pcie_fixup_bar,
     }
 };
=20
diff --git a/xen/arch/arm/platforms/Kconfig b/xen/arch/arm/platforms/Kconfi=
g
index 888d0b85d5..db096952c8 100644
--- a/xen/arch/arm/platforms/Kconfig
+++ b/xen/arch/arm/platforms/Kconfig
@@ -64,6 +64,27 @@ config NO_PLAT
=20
 endchoice
=20
+menu "RCar Region ID Support"
+    visible if RCAR4
+
+config RCAR_REGION_ID_SUPPORT
+	bool "Renesas Region ID support for R-Car Gen4 platforms" if EXPERT
+	depends on RCAR4
+	help
+	  Enable experimental Region ID support for R-Car Gen4 platforms
+
+config RCAR_RGID
+	int "Region ID encoded in physical address"
+	depends on RCAR_REGION_ID_SUPPORT
+	default 0
+
+config RCAR_PA_BITS
+	int "Physical address space size"
+	depends on RCAR_REGION_ID_SUPPORT
+	default 36
+
+endmenu
+
 config ALL64_PLAT
 	bool
 	default (ALL_PLAT && ARM_64)
--=20
2.51.2


From xen-devel-bounces@lists.xenproject.org Tue Apr 21 08:13:48 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 21 Apr 2026 08:13:48 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1288555.1568817 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wF6Eo-0007YD-4P; Tue, 21 Apr 2026 08:13:42 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1288555.1568817; Tue, 21 Apr 2026 08:13: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 1wF6Eo-0007Y6-0e; Tue, 21 Apr 2026 08:13:42 +0000
Received: by outflank-mailman (input) for mailman id 1288555;
 Tue, 21 Apr 2026 08:13:40 +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 1wF6Em-0007Xu-Jb
 for xen-devel@lists.xenproject.org; Tue, 21 Apr 2026 08:13:40 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wF6Em-00DbnD-0D
 for xen-devel@lists.xenproject.org; Tue, 21 Apr 2026 10:13:40 +0200
Received: from [10.42.69.9] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <dmytro_prokopchuk1@epam.com>)
 id 69e731a6-e002-0a2a0a5209dd-0a2a45098912-46
 for <xen-devel@lists.xenproject.org>; Tue, 21 Apr 2026 10:13:39 +0200
Received: from [40.107.159.103]
 (helo=OSPPR02CU001.outbound.protection.outlook.com)
 by tlsNG-bad1c0.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.1)
 (envelope-from <dmytro_prokopchuk1@epam.com>)
 id 69e731b3-2497-0a2a45090019-286b9f67f072-3
 for <xen-devel@lists.xenproject.org>; Tue, 21 Apr 2026 10:13:39 +0200
Received: from AM9PR03MB7526.eurprd03.prod.outlook.com (2603:10a6:20b:3de::17)
 by GVXPR03MB10430.eurprd03.prod.outlook.com (2603:10a6:150:14a::17)
 with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9818.33; Tue, 21 Apr
 2026 08:13:36 +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.20.9818.033; Tue, 21 Apr 2026
 08:13: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=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=EPTS/jURHYyLW5Xye5BGObWBb3Br+6QAJwL+xH7wClq5O/WMaSw/NB4Dn/e9EyqsOeEiT1yfU30AqOjPTnt4koXucpPLrWj37WUbQrBsEYAIDIspY95OJHKo4b6ARdfTl2EmVrYaVJJ3tR9FciKtg8d8MGbZ7CADNkHoIMIApYtE/mTsKWTWPvzE2cp4mG5FRE5Fg5TamVArtBf2J3qrA/El4NOlyVvtyFzmylDVIWjxCwkcSYIFRxwr2LIaj7agDLsNVFpMkQqn82cXdD0qWp1XyQxPoHa6E30u40bxqPPvrZKrE53bKiAmSz99yLGlfzXQvoeA41cJwFXDHEK2QA==
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com;
 s=arcselector10001;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1;
 bh=MuwN+CYQN7LwYacx1s2AYxOvF1H40MlBjXXkluvlta8=;
 b=HVZU6F8fgNr972O8AYUaJ1X9Nllyumow+DPc4BX1zrlOeCmcl344fcBwaXg5xzeg9bZR43FQqGNH9jjhcpp58d2rBPEDMGu59C6BmEIx88BpYpcLJNnwrEwSQOg0FPb0hIHmB3u5mfwgmNNQ4lV6aQ2jn5U3VfJj/+p3SVxuL8bbztrHaf120xmYbEy54+AS0ADgvU2lYzcelXtPWxBwbAPGTYvAXyDkZvuO5s/GdNJGZqXJwC0UC1dkEJqaGJ5HDuUUwHDhao1pnX2MNXGTYAAhGxh4Jyi/q4uufJDO54dMD3gaFNnXZXXLudybaONzgKEzLIyjSbsVGPw57HuSBg==
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=MuwN+CYQN7LwYacx1s2AYxOvF1H40MlBjXXkluvlta8=;
 b=iEjqSYDUfW2hvySoWcTwqQgpljrgPcBLSZe4sUg7LNurZjNL6nT92rUwzmhvLPfG0iCeNACgnL4AOKvtb1Nur8JV7jKHrqypX2Sgkpd+/h8PDQqiWR0B4kddEorhgxKKJ7iN4YIE54605v7Leht01raIThkO/wbU0DJsyhIRyO1RdHh5MvR6CWHOA4VKfKaCo10mQ8HngqLLfkQoeH2bisE/dZxVcfBzayT507ZeqvbSjZsQYP7l3hOyPo567/8bPuAFmVesGQpw7td1SJ3i0XHHpgm4BwHZnWIChoMSYxWeq+Rs3o1MJiU8IXDPK7gD6hTZpAjdzDKDCvPxlVL5Rg==
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>, Volodymyr Babchuk
	<Volodymyr_Babchuk@epam.com>, Bertrand Marquis <bertrand.marquis@arm.com>,
	Jens Wiklander <jens.wiklander@linaro.org>, Stefano Stabellini
	<sstabellini@kernel.org>, Julien Grall <julien@xen.org>, Michal Orzel
	<michal.orzel@amd.com>
Subject: [PATCH] xen/arm: ffa: fix build with clang/ATfE
Thread-Topic: [PATCH] xen/arm: ffa: fix build with clang/ATfE
Thread-Index: AQHc0WbA/s1rIXoAmU6+7rPJ118Z7Q==
Date: Tue, 21 Apr 2026 08:13:35 +0000
Message-ID:
 <581a0752a1af3775fb676a70c4f42e7fb958dadc.1776758025.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: 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_|GVXPR03MB10430:EE_
x-ms-office365-filtering-correlation-id: 99fb0c34-5fb2-48e6-4f1d-08de9f7de2dd
x-ms-exchange-senderadcheck: 1
x-ms-exchange-antispam-relay: 0
x-microsoft-antispam:
 BCL:0;ARA:13230040|376014|366016|1800799024|42112799006|38070700021|18002099003|56012099003;
x-microsoft-antispam-message-info:
 Az6NoPT9QowUZJuF/6Av22BXTf8/DwTWieX2JodpHDvZ02QJD0iTRU64Wd3jl4dSqfkSpEmRNTVjke8S5991VwS9fPSdbHbmTsGeIbk4jq6Y+ulWb6CY0cYEiiA6lugL5OjfxH93wUppIVvYU/s4/tX93CNpXYYh8RgREWryjmHug2g61Bh0d+p/C8CxIRYAs/jVX99XRAu301GAOYuNImEjiNQ58QPJg6iQ4MaNnBVk93Jse3YHVrIrPKd1zU6L/CX2NnoGXK++4q0bjacxW17jca2ceDrgVPnDOrA2IWJor5j3mAGmAqMMoDrCV+fWa1lF50lJTIxQSACjsq7XB23lA/fVqGpfXLlsMvnmhnr3jntzdCXK1h4iGHTsc9VHgPJRr0biiH/c14/x7QMdhi4VtF6XRnjad8l0YGQ0ZKZ6CMd3G+VYScgT18DGnsmtlZ8ZSLgONqCyTp1+pzi2SVVHcalRQl8oI0MkwEbaalQ9ToqMB6DbNQ6l5YUi8MGgJGGPdXC8FM6NX7blpD/DYxTcTjGRK/2PYDWffkZCCrwAMuaQk1DT6RTizXfBcVcHvCP3fsVm3FQrYIWCO+06XmqNs9b7w/H83Z+onchaDGfW3DCxCZ1wWjceJRi3hnOqJpR5Y3WWIMwU+C1DI2LyvS5WvfJ+/DLlXRkJYf2edx8yKNW3i9WuYuGw56m6IMBu+LNNvRDVWifth6yQWo9u/Gh1J0K3t7F2koJNj7x10m1Yx3rfUUdghq/BHehv7IE+S9+nHGxxDB6fPEOBP0I8Qe7QBxNBONJf7GfGi470cBM=
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)(376014)(366016)(1800799024)(42112799006)(38070700021)(18002099003)(56012099003);DIR:OUT;SFP:1102;
x-ms-exchange-antispam-messagedata-chunkcount: 1
x-ms-exchange-antispam-messagedata-0:
 =?iso-8859-1?Q?vChuRn9/AxrzrTJ2eRfpwdcamJq61V1wufPZWRU68rCogljf8tbrNvWOa8?=
 =?iso-8859-1?Q?6xe4VCr8gkdol4WcXOfTWd04+VTN9Odwqo6+IM6z7ZoLxoaXm1Hkjo9Yxg?=
 =?iso-8859-1?Q?T9mSRYgysiyyXzJyqWjnrP3QPgMIJXImtXFwf3fBeR2YHqo+/8fB+9QRXT?=
 =?iso-8859-1?Q?aVxB2MBnotXwD2ZEasaflIQDk6WyICkRsOnwWOsk5PKjEnsr7zY8RFevaa?=
 =?iso-8859-1?Q?yDqvqDR8U6oI74DWOtrjmpC06Xw4VozITZZq/KBWGyGhA2lys57NnloR20?=
 =?iso-8859-1?Q?wFBH81tQ1jvyGfnNmU8a2lzGhMouX5w9wCpBZkYyNUrO/8x1UZjGTKOJC+?=
 =?iso-8859-1?Q?3U6Txfz2f2U66iCzJOvzBlWFTBMjcBAXipI+qX4LAxkW40E4xXlLrb88f7?=
 =?iso-8859-1?Q?gQ8/QT39Hgn/9oCt7GEnR4NmFYY4drGn/SjOVDvqKHXwes60wZcQRnLc2L?=
 =?iso-8859-1?Q?EFQUSvu5MR7ThZlU+LbptnySrvMUfKo+kRaBb1KIIAJpE8qsqUjPn+jkkE?=
 =?iso-8859-1?Q?rimBsdUZ/cU7c8jG7Ls42nPKKvnL9gn/FKek23TCz6fDIOlKwdSitKUYY+?=
 =?iso-8859-1?Q?PE2yftE5KhZ/geUYN5QdkApvMXBvm0lUaDuhQpLkD7leWpggTPwEp6bndf?=
 =?iso-8859-1?Q?pHWPc9yflH/bdgezus7aPo+WIZxUFHCDClsNsD4iCy3zQdtpf3IB20BgQ0?=
 =?iso-8859-1?Q?C+Gjr9EBjQU5yQ+XDN9qTAUikiWF8R6Vl0Ut51ihIHpr+ueNKJjoFIAvaE?=
 =?iso-8859-1?Q?3WqK39vnYZnnaH+OLVPLITyq1WxAPkMc8awNUaALmcHHoijSoswKofJAj1?=
 =?iso-8859-1?Q?n3elH/IiE7JHrB1StJVkuajdKiNCXwgcdwR8UZvq3TRoehPXRbLWuLNEhV?=
 =?iso-8859-1?Q?KLFSlSXNB4rqRRqjtLo4+FOVTlKqf6opXlSbBq+v6RqSRQoYq2dy9Tp4oy?=
 =?iso-8859-1?Q?47liOyvf7XEQORtkoIwajCZsTm5Myuw4dYdJUYc+efdmFiM1GlRlYN8Xtn?=
 =?iso-8859-1?Q?m7c87jFaHfPSz8WbKfrfV0exel2acxJGl9RDvMB+wu+kQzfXmnopkWs3Js?=
 =?iso-8859-1?Q?HMD+5H9olPsaygdP4yhbG5DQosA/SBSBxbOIUJV2Mwvhko0KqSPWH3bytX?=
 =?iso-8859-1?Q?K4RtBBYEnKre1xhL9n7igcUcB7m6jRR3e1BDEEVe7fpb4KqI7u2mWWHq5C?=
 =?iso-8859-1?Q?qbZSIWdtl1tFQJcJc0bsXvbiquMgjFjCd0EIjTJ0FAKtNJ5pUT/wjZ1WBp?=
 =?iso-8859-1?Q?FM8AMV8kQmUSSeRVs3qywSE5J5f5qfPRGpQlO7eQKUg3F3EJ9NrJvI5d0B?=
 =?iso-8859-1?Q?E6kzYYy9PT4WZxPKdx4L1COhtApHCVkUnzfLJxUAkX34Zfoc336Fxy/kum?=
 =?iso-8859-1?Q?Kzr7WIMXKuyP887GZgRag1n6LLTmvw36FYVGkMwhR3gKlV1//AEPUG3p+l?=
 =?iso-8859-1?Q?eESD2vKuP+FEmY+T1EbuGIeDD+wIESGZ5z/WzdLQa4Hofrmz26+todJdiI?=
 =?iso-8859-1?Q?97mtOisZHmxv+FJpNSi9ZKAE5jz3TteD2Uw9MKsTLDrFpxgfUMCDrM6lVr?=
 =?iso-8859-1?Q?p1OJaIN4LcZWdhic3A+uicAoqhE9aVSE57nCZbfgoNQgQZ5uBl9NMFQacg?=
 =?iso-8859-1?Q?zxgT6919fzo9owI2n63eBk7OPvqAL9CyZptn05FRgaoRjMO4eG2FBFZF9O?=
 =?iso-8859-1?Q?FpYGYz6uM9gMyHzMQFHqkdn4Ri9RViDrTIM7qpXS464FrTNDDB+CZ0sljN?=
 =?iso-8859-1?Q?KtNFtoot9Br5swPaWDQa3mspsR5Rn/PFod4gcxt/hU/pGRi8GLcUWAsA92?=
 =?iso-8859-1?Q?U9X7Q6COjDNpWVjeQpeQsf8G8t5z87I=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: AM9PR03MB7526.eurprd03.prod.outlook.com
X-MS-Exchange-CrossTenant-Network-Message-Id: 99fb0c34-5fb2-48e6-4f1d-08de9f7de2dd
X-MS-Exchange-CrossTenant-originalarrivaltime: 21 Apr 2026 08:13:35.8450
 (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: g15U2TxS674RGqwyp7nZWsUiaf19X6GTl1Y4g/2rrE5+eI+M9KBXgoeG9zsMFJi8q1cEkWCgbDxsxWMyo0miwR/OJX732KwxR+gTMy9nNow=
X-MS-Exchange-Transport-CrossTenantHeadersStamped: GVXPR03MB10430
X-purgate-ID: tlsNG-bad1c0/1776759219-41AB6A53-D664EE93/0/0
X-purgate-type: clean
X-purgate-size: 1570

Clang 22.x.x or Arm Toolchain for Embedded 22.x.x reports:

In file included from arch/arm/tee/ffa.c:75:
arch/arm/tee/ffa_private.h:439:17: error: 'used' attribute ignored on a non=
-definition declaration [-Werror,-Wignored-attributes]
  439 | extern uint32_t __ro_after_init ffa_fw_version;
      |                 ^

There is a fix for clang 16 in the git history:
a1a1e2b7dc4f ("xen/arm: ffa: fix build with clang")
which was broken by the following commit:
a90376c6adbc ("xen/arm: ffa: Add FF-A 1.2 endpoint memory access descriptor=
s")

Remove __ro_after_init from the extern declaration of ffa_fw_version.
The attribute is already present on the definition in ffa.c, which is
sufficient and correct.

Fixes: a90376c6adbc ("xen/arm: ffa: Add FF-A 1.2 endpoint memory access des=
criptors")
Signed-off-by: Dmytro Prokopchuk <dmytro_prokopchuk1@epam.com>
---
Test CI pipeline:
https://gitlab.com/xen-project/people/dimaprkp4k/xen/-/pipelines/2467446333
---
 xen/arch/arm/tee/ffa_private.h | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/xen/arch/arm/tee/ffa_private.h b/xen/arch/arm/tee/ffa_private.=
h
index c291f32b56..e16bc0d83d 100644
--- a/xen/arch/arm/tee/ffa_private.h
+++ b/xen/arch/arm/tee/ffa_private.h
@@ -436,7 +436,7 @@ struct ffa_ctx {
 };
=20
 extern DECLARE_BITMAP(ffa_fw_abi_supported, FFA_ABI_BITMAP_SIZE);
-extern uint32_t __ro_after_init ffa_fw_version;
+extern uint32_t ffa_fw_version;
=20
 extern struct list_head ffa_ctx_head;
 extern rwlock_t ffa_ctx_list_rwlock;
--=20
2.43.0


From xen-devel-bounces@lists.xenproject.org Tue Apr 21 08:15:37 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 21 Apr 2026 08:15:37 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1288567.1568826 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wF6Ge-00087Y-ID; Tue, 21 Apr 2026 08:15:36 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1288567.1568826; Tue, 21 Apr 2026 08: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 1wF6Ge-00087R-En; Tue, 21 Apr 2026 08:15:36 +0000
Received: by outflank-mailman (input) for mailman id 1288567;
 Tue, 21 Apr 2026 08:15:35 +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 1wF6Gd-00087L-Pf
 for xen-devel@lists.xenproject.org; Tue, 21 Apr 2026 08:15:35 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wF6Gd-00BERw-6M
 for xen-devel@lists.xenproject.org; Tue, 21 Apr 2026 10:15:35 +0200
Received: from [10.42.69.10] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <jgross@suse.com>)
 id 69e73225-5cb7-0a2a0a5109dd-0a2a450abec0-4
 for <xen-devel@lists.xenproject.org>; Tue, 21 Apr 2026 10:15:34 +0200
Received: from [209.85.221.51] (helo=mail-wr1-f51.google.com)
 by tlsNG-4011c0.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.1)
 (envelope-from <jgross@suse.com>)
 id 69e73226-56b3-0a2a450a0019-d155dd33adbb-3
 for <xen-devel@lists.xenproject.org>; Tue, 21 Apr 2026 10:15:34 +0200
Received: by mail-wr1-f51.google.com with SMTP id
 ffacd0b85a97d-43cfd832155so2868340f8f.1
 for <xen-devel@lists.xenproject.org>; Tue, 21 Apr 2026 01:15:34 -0700 (PDT)
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
 ffacd0b85a97d-43fe4cc09b1sm35917552f8f.9.2026.04.21.01.15.33
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Tue, 21 Apr 2026 01:15:33 -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=google header.d=suse.com header.i="@suse.com" header.h="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=1776759334; x=1777364134; darn=lists.xenproject.org;
        h=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;
        bh=0AQTxiz1gbQvkhGhBuUVTdfaAfzKM2B750xrMMYT/DE=;
        b=cMhF8bTP6BRgOj4P9sx09sUQ5+i2K+YZIVrG5x9Axz+BXvgjPXg6YnMrGllWqV8UEh
         7IRwcCVmvMVLHWOe2H0Xy7gZNhFxxVlR3+ax2hA/4ukDXFAuySAWiGEYQKzIEEn+g57A
         Ukjv+TUTOsp8ZugLRZF9FUWHwVeTq3jc6VVx+lXC6UkZgQPcJMzUfTCMaS5Q/O8tC/yO
         BIkUWo6A45xgT1p5QBtNXNUThnR595oWdYamrSKsoGp4l7EOQttmdrUUhktk/KePV28K
         SxNxYrZw5dpk8TKD+3l3yWbhMDOGnEn8pdLddKm2TCw9jriwcggcc4l0ppOD3jP4k70q
         eShQ==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20251104; t=1776759334; x=1777364134;
        h=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;
        bh=0AQTxiz1gbQvkhGhBuUVTdfaAfzKM2B750xrMMYT/DE=;
        b=KHZTim6EoqVUuvNjiBABqtWs13QivPrqk8tbB9VU1+/6Tbq0GBBVDo6i5Q1jYC2o4j
         65/PVW2y1pNc5kpmxob/o2Enw7HcXz4YSpTckT5RC49VqKpAbJXNmaUaZ/lnmPNM/BQh
         1TeYVDUn7YFBjh0MI+0ayinoTrjDjdUNTfxQqk5YG8vzEh1urvwrfzOwL15H+voK+NIj
         J56p32yDCC9G4lAouWiNNjmNvHciVkbKuTCIgXoLqxsbggH50J2mIt80IN0QzTxpacNi
         YO8xZ8BqN2H4bC282PbhNOOAtEq5+O6/6Q8cfZYoH4ZD1E3z+RkS56Fi6/wVBwHhtOhv
         coEg==
X-Forwarded-Encrypted: i=1; AFNElJ/pred1K5V5TojEI5IxePPHQPMfqvy9DKAncFNQAOFor3x3qaQLUOSZy+bwzEsrdlAzmxnWWDbmlSI=@lists.xenproject.org
X-Gm-Message-State: AOJu0YzYPYOMu9cRE8aQgxDx7j8T7UYvXIIcHAO1FqJdMcvhnVmHhS7z
	uDUijLm8zwmiMA1zwDbwDoWGNVzoz84NoyaZ7f1pfPIOC24VQvyPz8LcTe+MPQcb8Ng=
X-Gm-Gg: AeBDievwWSvZOvwVvTnpL4cPPH3XwzDLUPJclUp2BB0beG+hu46Nk8DSjQJxFk3lFG2
	WS0/ul9nKVqYp3rONjPMr7Cayy1emFkEezgBS4JQQkXAzqvL31UkdxxHaYcL8tvgIdJpG4VIu2C
	n4erdBo49r+r3/15TwfDLviQdlSkNxtmNwgSumMlxt3E43V5u2k9o1VteugOPxZot39v6rqprmA
	Yl2jc7azobJDhxzEhcOa30AsH9975ioWefNcohsKyUuYUwIzYIgJ2cHUbCZFbIMP+cMMUMoEP8x
	rai3NFG85FZsl5KGTBEyXLMH9Srx6c7adwnSGsgku5AFPlCZXUCPUXJzLHYJLN+fq3PeASGgwgD
	xd7lfupuQK2le86vhZwd9wCAdTB8QSObt+SFilHIbw3TxiMSmn1JLJxRkFbOrAbL5yOpyZ5JN6k
	ifRKm1tj2tBdkdpq4LR4I+V5GhmpgrShc++LAFFU+NIBp4P2sCqSLk0l4yYePh94f8I0vQ4BhRx
	jeOb5mptCcafwkKE5FZXkqojrwKBKnPc+0jphkiimQAW5fuKrlswfwW8WsB31Uk
X-Received: by 2002:a5d:5d02:0:b0:43d:77c6:be6d with SMTP id ffacd0b85a97d-43fe3db39c6mr25971184f8f.7.1776759334217;
        Tue, 21 Apr 2026 01:15:34 -0700 (PDT)
Message-ID: <daccf4e4-4373-43d3-8f43-a11cc844062a@suse.com>
Date: Tue, 21 Apr 2026 10:15:33 +0200
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH v2 0/9] tools/xenstored: add support for watch depth
 feature
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>,
 =?UTF-8?Q?Roger_Pau_Monn=C3=A9?= <roger.pau@citrix.com>,
 Stefano Stabellini <sstabellini@kernel.org>, xen-devel@lists.xenproject.org
References: <20260421074211.308473-1-jgross@suse.com>
 <f46c1782-2a76-4657-a78a-f68a9dec4e89@suse.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: <f46c1782-2a76-4657-a78a-f68a9dec4e89@suse.com>
Content-Type: multipart/signed; micalg=pgp-sha256;
 protocol="application/pgp-signature";
 boundary="------------aaplL58PZ4eiYfjuEyeFNa0D"
X-purgate-ID: tlsNG-4011c0/1776759334-81D808B7-7FC0491B/0/0
X-purgate-type: clean
X-purgate-size: 9646

This is an OpenPGP/MIME signed message (RFC 4880 and 3156)
--------------aaplL58PZ4eiYfjuEyeFNa0D
Content-Type: multipart/mixed; boundary="------------VWKkGKYFFgIF3sLV5DOtG0eE";
 protected-headers="v1"
From: =?UTF-8?B?SsO8cmdlbiBHcm/Dnw==?= <jgross@suse.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>,
 =?UTF-8?Q?Roger_Pau_Monn=C3=A9?= <roger.pau@citrix.com>,
 Stefano Stabellini <sstabellini@kernel.org>, xen-devel@lists.xenproject.org
Message-ID: <daccf4e4-4373-43d3-8f43-a11cc844062a@suse.com>
Subject: Re: [PATCH v2 0/9] tools/xenstored: add support for watch depth
 feature
References: <20260421074211.308473-1-jgross@suse.com>
 <f46c1782-2a76-4657-a78a-f68a9dec4e89@suse.com>
In-Reply-To: <f46c1782-2a76-4657-a78a-f68a9dec4e89@suse.com>
Autocrypt-Gossip: 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
 Y2ggPGpiZXVsaWNoQHN1c2UuY29tPsJ3BBMRAgAgBQJZN5xEAhsDBgsJCAcDAgQVAggDBBYC
 AwECHgECF4AAIQkQoDSui/t3IH4WIQQ+pJkfkcoLMCa4X6CgNK6L+3cgfgn7AJ9DmMd0SMJE
 ePbc7/m22D2v04iu7ACffXTdZQhNl557tJuDXZSBxDmW/tLOwU0EWTecRBAIAIK5OMKMU5R2
 Lk2bbjgX7vyQuCFFyKf9rC/4itNwhYWFSlKzVj3WJBDsoi2KvPm7AI+XB6NIkNAkshL5C0kd
 pcNd5Xo0jRR5/WE/bT7LyrJ0OJWS/qUit5eNNvsO+SxGAk28KRa1ieVLeZi9D03NL0+HIAtZ
 tecfqwgl3Y72UpLUyt+r7LQhcI/XR5IUUaD4C/chB4Vq2QkDKO7Q8+2HJOrFIjiVli4lU+Sf
 OBp64m//Y1xys++Z4ODoKh7tkh5DxiO3QBHG7bHK0CSQsJ6XUvPVYubAuy1XfSDzSeSBl//C
 v78Fclb+gi9GWidSTG/4hsEzd1fY5XwCZG/XJJY9M/sAAwUH/09Ar9W2U1Qm+DwZeP2ii3Ou
 14Z9VlVVPhcEmR/AFykL9dw/OV2O/7cdi52+l00reUu6Nd4Dl8s4f5n8b1YFzmkVVIyhwjvU
 jxtPyUgDOt6DRa+RaDlXZZmxQyWcMv2anAgYWGVszeB8Myzsw8y7xhBEVV1S+1KloCzw4V8Z
 DSJrcsZlyMDoiTb7FyqxwQnM0f6qHxWbmOOnbzJmBqpNpFuDcz/4xNsymJylm6oXiucHQBAP
 Xb/cE1YNHpuaH4SRhIxwQilCYEznWowQphNAbJtEKOmcocY7EbSt8VjXTzmYENkIfkrHRyXQ
 dUm5AoL51XZljkCqNwrADGkTvkwsWSvCSQQYEQIACQUCWTecRAIbDAAKCRCgNK6L+3cgfuef
 AJ9wlZQNQUp0KwEf8Tl37RmcxCL4bQCcC5alCSMzUBJ5DBIcR4BY+CyQFAs=

--------------VWKkGKYFFgIF3sLV5DOtG0eE
Content-Type: multipart/mixed; boundary="------------ycAiCmu6JNpC7xxErlkpuL5O"

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

T24gMjEuMDQuMjYgMDk6NTUsIEphbiBCZXVsaWNoIHdyb3RlOg0KPiBPbiAyMS4wNC4yMDI2
IDA5OjQyLCBKdWVyZ2VuIEdyb3NzIHdyb3RlOg0KPj4gSW4gb3JkZXIgdG8gcmVkdWNlIGV4
Y2Vzc2l2ZSBudW1iZXIgb2Ygd2F0Y2ggZXZlbnRzIHRoZSB3YXRjaCBkZXB0aA0KPj4gZmVh
dHVyZSBoYXMgYmVlbiBkZWZpbmVkLCBhbGxvd2luZyB0aGUgdXNlciB0byBsaW1pdCB0aGUg
bnVtYmVyIG9mDQo+PiBub2RlIGxldmVscyBiZWxvdyB0aGUgd2F0Y2hlZCBub2RlIHRvIGNh
dXNlIGV2ZW50cy4NCj4+DQo+PiBUaGlzIHNlcmllcyBpcyBpbXBsZW1lbnRpbmcgdGhpcyBm
ZWF0dXJlIGZvciB4ZW5zdG9yZWQgKGluY2x1ZGluZyB0aGUNCj4+IFBWIGFuZCBQVkggc3R1
YmRvbSB2YXJpYW50cykuDQo+Pg0KPj4gUG9zc2libGUgdXNlcnMgYXJlOg0KPj4NCj4+IC0g
eGwvbGlieGw6IHVzZSBkb21pZCBpbmZvcm1hdGlvbiBmb3IgdGhlIHNwZWNpYWwgQGludHJv
ZHVjZURvbWFpbiBhbmQNCj4+ICAgIEByZWxlYXNlRG9tYWluIHdhdGNoZXMsIHdoaWNoIHdp
bGwgYmUgYXZhaWxhYmxlIHdoZW4gdXNpbmcgZGVwdGggPSAxDQo+Pg0KPj4gLSB4ZW5jb25z
b2xlZCwgbGlrZSB4bC9saWJ4bA0KPj4NCj4+IC0gYW55IFBWLWRldmljZSBiYWNrZW5kcyB3
YXRjaGluZyBkaXJlY3RvcmllcyBmb3IgYWRkZWQgZGV2aWNlcyAobm8NCj4+ICAgIHdhdGNo
IGV2ZW50cyB3aGVuIGFueSBkZXZpY2Ugc3BlY2lmaWMgbm9kZSBpcyBtb2RpZmllZCkNCj4+
DQo+PiAtIGFueSBQVi1kZXZpY2UgZnJvbnRlbmQgYW5kIGJhY2tlbmQgd2F0Y2hpbmcgdGhl
ICJzdGF0ZSIgbm9kZSBvZiB0aGUNCj4+ICAgIG90aGVyIHNpZGUsIGluIGNhc2UgdGhlIG90
aGVyIHNpZGUgcGxheXMgZGlydHkgZ2FtZXMgYnkgYnVpbGRpbmcNCj4+ICAgIGxhcmdlIHN1
Yi10cmVlcyBiZW5lYXRoIHRoZSAic3RhdGUiIG5vZGUNCj4+DQo+PiBDaGFuZ2VzIGluIFYy
Og0KPj4gLSBzb21lIG1pbm9yIHN0YWxlIGNoYW5nZXMgcmV2ZXJ0ZWQNCj4+IC0gbGFzdCBw
YXRjaCBjb3ZlcmVkIGJ5IHRoZSBzZXJpZXMgbm93LCBtYW4gcGFnZSB1cGRhdGVkDQo+IA0K
PiBJcyB0aGlzIHJlYWxseSBldmVyeXRoaW5nIHRoYXQgY2hhbmdlZD8gSSB3YW50ZWQgdG8g
Y29tbWl0IHRoZSBmaXJzdCB0d28NCj4gcGF0Y2hlcyBmcm9tIHYxLCBidXQgSSBoYWQgdG8g
bGVhdmUgb3V0IHBhdGNoIDEgYXMgaXQgZGlkbid0IGFwcGx5LiBQYXRjaA0KDQpBaCwgdGhl
cmUgd2FzIGNoYW5nZSBpbiB0aGUgcGF0Y2ggY29udGV4dCBkdWUgdG8gdGhlIHBlci1kb21h
aW4gcXVvdGEgc2VyaWVzOg0KYSBsaXRlcmFsIGF0b2koKSB3YXMgcmVwbGFjZWQgYnkgYSBw
YXJzZV9kb21pZCgpLg0KDQoNCkp1ZXJnZW4NCg==
--------------ycAiCmu6JNpC7xxErlkpuL5O
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-----

--------------ycAiCmu6JNpC7xxErlkpuL5O--

--------------VWKkGKYFFgIF3sLV5DOtG0eE--

--------------aaplL58PZ4eiYfjuEyeFNa0D
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/Ey8FAmnnMiUFAwAAAAAACgkQsN6d1ii/Ey/a
lAf/ZDXTR1oJqhcGWVgQYdztyE477Lg/jYA5jQimi3pmcIiie+dVR/C9Vn9HdYnC7XOUcvrO5LPr
pRPohSlM0L4RoSp0mchBGsVZigNsHL+KPUlR9bMrwnvklr/545N2Llu/uDVlC/OiKd94Lruh/uPI
bgYycPwRPHsyzJCMKvYUV+9TVDQu6RY/O++TgHvLaqW4bkKoVMDvPBjKCQ7I2eujc1HtWdnPbzmj
5ZF8hoH6xlqMjb9ob01CGxf1eDuX/RcPUy4aUMEyfTuEG+3ANGjJKaDc3qLajxuY1rV+4+0KgrE3
lROoBJhs7CrcfV/1+e9n5xoNd2xv7z5uX7wsAhYHyw==
=4Fzt
-----END PGP SIGNATURE-----

--------------aaplL58PZ4eiYfjuEyeFNa0D--


From xen-devel-bounces@lists.xenproject.org Tue Apr 21 08:29:08 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 21 Apr 2026 08:29:08 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1288579.1568835 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wF6Td-0002Kf-KV; Tue, 21 Apr 2026 08:29:01 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1288579.1568835; Tue, 21 Apr 2026 08: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 1wF6Td-0002KY-Hv; Tue, 21 Apr 2026 08:29:01 +0000
Received: by outflank-mailman (input) for mailman id 1288579;
 Tue, 21 Apr 2026 08:29:00 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <jbeulich@suse.com>) id 1wF6Tc-0002KS-KW
 for xen-devel@lists.xenproject.org; Tue, 21 Apr 2026 08:29:00 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wF6Tc-00AC0U-1G
 for xen-devel@lists.xenproject.org; Tue, 21 Apr 2026 10:29:00 +0200
Received: from [10.42.69.1] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <jbeulich@suse.com>)
 id 69e73545-2eae-0a2a0a5409dd-0a2a4501d61c-18
 for <xen-devel@lists.xenproject.org>; Tue, 21 Apr 2026 10:28:59 +0200
Received: from [209.85.221.47] (helo=mail-wr1-f47.google.com)
 by tlsNG-d62444.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.1)
 (envelope-from <jbeulich@suse.com>)
 id 69e7354b-c1f2-0a2a45010019-d155dd2fd113-3
 for <xen-devel@lists.xenproject.org>; Tue, 21 Apr 2026 10:28:59 +0200
Received: by mail-wr1-f47.google.com with SMTP id
 ffacd0b85a97d-43cfde3c3f3so4218328f8f.3
 for <xen-devel@lists.xenproject.org>; Tue, 21 Apr 2026 01:28:59 -0700 (PDT)
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-4412150a092sm321039f8f.23.2026.04.21.01.28.58
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Tue, 21 Apr 2026 01:28:58 -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=google header.d=suse.com header.i="@suse.com" header.h="Content-Transfer-Encoding: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=1776760139; x=1777364939; darn=lists.xenproject.org;
        h=content-transfer-encoding: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;
        bh=85i4+D4XuG2N74nELiTnewZVfDe3DHqAOGZqYhoI43o=;
        b=CB7x8yb9XBcu5JhrcNGbhMW/EAdsl89IjUiAHgj6pwgdIV+1kTltQJjWnoXbVSfSw3
         qm2rs+ahV+UoP7ECFl1sV/sd61QlRoIl/YBgLc7pwe7sf48mGbJP/xGis95bHIwSRtFZ
         weq68Yrdm1AWE/AaMl7cl28uFlia5i3l39SIAXPGO/DEKAy40IuSiS3ABo7JSpHpyMYj
         xUiD4+2l3GjG7xIG21/vKF2p71y3zBKIJ1FTDGSqFrQoHWDOvhAgQ1d+ZdMR06TYunsg
         UshlO4IYMqr43pt9M/oPr5z8oKo4iIHX8+97xeZJHxrFl9KHjoxo7T3Isc6KK0blyc0x
         GPSw==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20251104; t=1776760139; x=1777364939;
        h=content-transfer-encoding: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;
        bh=85i4+D4XuG2N74nELiTnewZVfDe3DHqAOGZqYhoI43o=;
        b=BvfXEpntO22u/R5nipzDAAPHHBcYJ9gtladX6PR/VHkWDVe78VEGhkJ5Ij382SZ6aO
         FtXhttwpusygo6meTKkwl2dIJZZElUHigXuy8snxADvDIP87eG5KMRxE+Cdb+oftWrnF
         By9RZOB1K2SLoKb34TMGufzHQfSEDQafoFcbaGB8r4efB4EbEcP35ztK53DZKaSPzv3D
         6MC2qATxs6m4kXwYzjkERbIcRWhGTF/gW6/Lb1vPbMg7TMS1xXrMkrNenrYBr3Kw9Qpk
         +oxnHkcNrWi7Jih/rjy2iiSYGquyf3rpmt8YKEP6aLSPxKyfKvjks+1ojIC11hpoqsDE
         BGVA==
X-Forwarded-Encrypted: i=1; AFNElJ//8OXRhzb+pEUTEV/hGmNX69XLqN9s9pW1YOIaIzvZCd9WawwNqcpbzR8OAYH7QvC+xHrq3JyTJog=@lists.xenproject.org
X-Gm-Message-State: AOJu0Yze6sLIFv1gnwTH9fEtReKH3Sd/CCBk+Hk9/yxrIRr3vSKhS9nX
	WyY3bnZv326VF64BWuzmbxSTceMm/jilmHnVPQW/ANbqHWXYVD3k06lPpJRs7vvGww==
X-Gm-Gg: AeBDievu4l8iRWdn5l/G5DWlBxh8K3zkqHVJNGop4IDxw1R2yKmsGg7Z1cXtc1ieuFL
	tVJ9emC8mTWMe3cnSshE+JPxJ/GqMPJtrgykG7VoUdSrmXVJFFf5jtJ632IHrJVxo3wktsuSchj
	McS3YWPYMVJBJIYEjKz5BbNAYdcMLmdKuhYRavdjr2cFaF87/l5H6OADUf50jN3DEMilP+eQM+Y
	tqJuq9Wrh7YewQDnWahimlofSoFdjknwHe9seNuUJVEB4jF5OvmY1M5wMw/eIeipdYfxR8SwOrU
	Z8NRW78POayPDarmagkQXugs9fVk3VirAMhlh6dKMWz6XQoHAfneFmov/RaUl69f31JDji9ZvuI
	IqXUoopQ/rJFlolo1SDqIpsRJAQ56qHhDJDLvG/zZeIKfL4fAAibukczbaEp/lnZ9F/zlIi4Y0z
	XmuOsT4BXLnbQYLbVOndetgFjkbZw8kziSMppp1IlKHui+Yuaq7vXAGz9FoHnUVm5FqPeig49oF
	QMyA/1Qoy6jW0csCCtl+Frl/w==
X-Received: by 2002:a05:6000:230c:b0:43d:303f:f358 with SMTP id ffacd0b85a97d-43fe3dc5981mr27376756f8f.2.1776760139178;
        Tue, 21 Apr 2026 01:28:59 -0700 (PDT)
Message-ID: <cb1b4892-7a7f-4ed9-bb73-d43d72db99c8@suse.com>
Date: Tue, 21 Apr 2026 10:28:58 +0200
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [RFC PATCH 2/2] plat/rcar: Add region id support for PCI
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>,
 "xen-devel@lists.xenproject.org" <xen-devel@lists.xenproject.org>
References: <cover.1776756291.git.mykyta_poturai@epam.com>
 <ad5caa92e36b0e0f104a14b46396037505080f4f.1776756291.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: <ad5caa92e36b0e0f104a14b46396037505080f4f.1776756291.git.mykyta_poturai@epam.com>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 7bit
X-purgate-ID: tlsNG-d62444/1776760139-BE460FF4-6463BE8B/0/0
X-purgate-type: clean
X-purgate-size: 478

On 21.04.2026 09:57, Mykyta Poturai wrote:
> With Region ID enabled, all CPU memory accesses need to have rgid bits
> set in the physical address. This creates a problem for PCI BAR
> accesses, as it would require all BARs to be 64bit.

I don't understand this. CPU accesses of addresses read / derived from
BARs can be massaged in any way the OS likes. That doesn't require the
BARs to be 64-bit. Are you trying to arrange for RGID to be transparent
to guests?

Jan


From xen-devel-bounces@lists.xenproject.org Tue Apr 21 08:31:41 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 21 Apr 2026 08:31:41 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1288589.1568845 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wF6WC-0003og-1r; Tue, 21 Apr 2026 08:31:40 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1288589.1568845; Tue, 21 Apr 2026 08:31: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 1wF6WB-0003oZ-UB; Tue, 21 Apr 2026 08:31:39 +0000
Received: by outflank-mailman (input) for mailman id 1288589;
 Tue, 21 Apr 2026 08:31:38 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <jbeulich@suse.com>) id 1wF6WA-0003oS-74
 for xen-devel@lists.xenproject.org; Tue, 21 Apr 2026 08:31:38 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wF6W9-00DgwI-K0
 for xen-devel@lists.xenproject.org; Tue, 21 Apr 2026 10:31:37 +0200
Received: from [10.42.69.4] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <jbeulich@suse.com>)
 id 69e735e0-e002-0a2a0a5209dd-0a2a45049682-24
 for <xen-devel@lists.xenproject.org>; Tue, 21 Apr 2026 10:31:37 +0200
Received: from [209.85.128.54] (helo=mail-wm1-f54.google.com)
 by tlsNG-ebf023.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.1)
 (envelope-from <jbeulich@suse.com>)
 id 69e735e9-1dec-0a2a45040019-d1558036dde7-3
 for <xen-devel@lists.xenproject.org>; Tue, 21 Apr 2026 10:31:37 +0200
Received: by mail-wm1-f54.google.com with SMTP id
 5b1f17b1804b1-4891b0786beso17332595e9.1
 for <xen-devel@lists.xenproject.org>; Tue, 21 Apr 2026 01:31:37 -0700 (PDT)
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-4412150a092sm340796f8f.23.2026.04.21.01.31.36
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Tue, 21 Apr 2026 01:31: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=google header.d=suse.com header.i="@suse.com" header.h="Content-Transfer-Encoding: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=1776760297; x=1777365097; darn=lists.xenproject.org;
        h=content-transfer-encoding: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;
        bh=ejUCKJBJuIVKOh3AShHgtlyYlNQiSlVxp2XulL+yZxM=;
        b=TRKqmXt1pcpo0bRNOlYLk96AKvj+mVMQp0iKmonyRnGl/CTtPdfjwexKrgRFgcQKET
         hU/tlYrD3ZJykfOOxMQWBmkAeFqFH4wFYtNxyziTUzveqDvcE77ynypEe7258mQE/Ey4
         wRltMu05zwQ4FsfSLXhBagQgB7ryvfkqQoOvG3nfMrlxN+AFfSnf36cidt5Yybhbzv5g
         iXxnSvruQcMu29j/y/9AVPcPQHlx+if/xXwweC24GtFKWh6sx/lNcxUV5co1/Ipy2zZd
         k4sJt+HAiXofldCEeU0iW2AxvCUNsw3+66YFmwyjLGLcoNyxQitpXz/pHFDqYTi6792s
         niYw==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20251104; t=1776760297; x=1777365097;
        h=content-transfer-encoding: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;
        bh=ejUCKJBJuIVKOh3AShHgtlyYlNQiSlVxp2XulL+yZxM=;
        b=SZfi27+5G8Yj5eaFxVRy5XEWj2BNoDHrL+Ek7Gc+f2s5X0RV/5ceBla8XsYHQeIzBu
         EMXxSxKbTavGBm8bAqiwTXomGTkZIW/8hkOZpgNcca99iy9spEeo68K8m8ze3HUV6bYd
         EdyYYdUZCZwVtZTp7zwTr7YqWJWhkBAjZFDZJWyFlgvdxXxAB1ipxt/mibmyuA+b+E5E
         QzyQTl5AP4NKtBsqaXu8ZNs0aAt9r3GKC9bX3Sa6g2MrZ57Uyq7LwhJE3dUPDZZj/Obw
         MVOWncEwk0ZOAO77S72UxkPAyvpsscwFI9ZV5KRQOzrtDVOMh6Z6vW5krV9+FDXJ7IXi
         RcMg==
X-Forwarded-Encrypted: i=1; AFNElJ9ERg9sl9WOT0tdMNla06zbbq40duTsl1LY5Ivb9G1gMnSsHN9sWpNykgQfbm52pfuW6PMHrvFsuAI=@lists.xenproject.org
X-Gm-Message-State: AOJu0Yxr3ijTLSPxfSASbKGWaXWKaOF0dXvbEsA3Z6vZfyCZ3JLsG+Js
	/yzTEkackJYAqDubvRZkzMck9wiIPqmTv788PWAscoiMUyxrys+2lgP0Ub56dQsh7Q==
X-Gm-Gg: AeBDietevXxy6m2R0o5eZLK/B/W60SzEalz+0JELb6wn0g8zhhKpVqyg+MA1jHTvEfT
	O3Oz6PsLu7EIARBH1GZ7dihwLsxW2DygvUiJQ3Lr9KA8I81k91nCVb2lY4yACogshpgYFYrQwG1
	RhD/PdQ8Cqwbckj+BjmRTrNPeRNP7XqKsv4HKgOJcf1qJZ7qOA5tyJYPNeQC5SpWrshDSrnh3AF
	EaQ8Z51dU9Icgxi9lyT0+/5jyCRZC4VxbFx+6n5wSsIpmDpO1gVQhnv3OC16zF+Iikv6CuKuE5E
	rJJJ8iZXvg5vhw6Ln34X5MR7OFZSZMe7upeDqnyNWjQGJIYuBoAyn61FhxrFs2hzM7+zd9SpTHb
	rUB7WbsDAkeIMox9PRCGWPTTvICFJOChCWBHCP4uP/9ccWxzy3Ufeney13ISlT0ggoWMntRuy1s
	t3txra+9+g7+CfAOhw4+MBAuuhgf5C2K+vq9MaxbiCYBXsKvpXEE/tJ3Idq1tVPhEqc91gqDfLm
	i5kT6FSNqgdHbP4k96Tq1OudosZJB0EKwMr
X-Received: by 2002:a05:6000:40de:b0:441:1ca1:6404 with SMTP id ffacd0b85a97d-4411ca1642cmr5284888f8f.18.1776760296724;
        Tue, 21 Apr 2026 01:31:36 -0700 (PDT)
Message-ID: <2a2275ce-3c84-4db8-b4d5-79c4cd6c9e8b@suse.com>
Date: Tue, 21 Apr 2026 10:31:35 +0200
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [RFC PATCH 1/2] pci: Allow platforms to modify BAR adresses
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>,
 =?UTF-8?Q?Roger_Pau_Monn=C3=A9?= <roger.pau@citrix.com>,
 Teddy Astie <teddy.astie@vates.tech>,
 Stewart Hildebrand <stewart.hildebrand@amd.com>,
 "xen-devel@lists.xenproject.org" <xen-devel@lists.xenproject.org>
References: <cover.1776756291.git.mykyta_poturai@epam.com>
 <a0f623792497ab92cfb64c50bd17d28138e10b99.1776756291.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: <a0f623792497ab92cfb64c50bd17d28138e10b99.1776756291.git.mykyta_poturai@epam.com>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 7bit
X-purgate-ID: tlsNG-ebf023/1776760297-2B1663FF-D4C9B6CA/0/0
X-purgate-type: clean
X-purgate-size: 2264

On 21.04.2026 09:57, Mykyta Poturai wrote:
> This patch is a preparatory work for adding Region ID support on Renesas
> R-Car series boards. Add new host bridge op "fixup_bar" that allows
> platforms to modify BAR addresses before they are mapped.
> 
> Because x86 don't have support for PCI Host Bridge drivers, add another
> level of indirection in form of platform_pci_fixup_bar() function, that
> will call host bridge op on ARM and do nothing on x86.
> 
> Signed-off-by: Mykyta Poturai <mykyta_poturai@epam.com>
> ---
>  xen/arch/arm/include/asm/pci.h  |  3 +++
>  xen/arch/arm/include/asm/vpci.h |  9 +++++++++
>  xen/arch/arm/vpci.c             | 12 ++++++++++++
>  xen/arch/x86/include/asm/vpci.h |  6 ++++++
>  xen/drivers/vpci/header.c       |  2 ++
>  5 files changed, 32 insertions(+)
> 
> diff --git a/xen/arch/arm/include/asm/pci.h b/xen/arch/arm/include/asm/pci.h
> index 7c3211823f..398a4eb746 100644
> --- a/xen/arch/arm/include/asm/pci.h
> +++ b/xen/arch/arm/include/asm/pci.h
> @@ -80,6 +80,9 @@ struct pci_ops {
>      void (*init_bus_range)(struct dt_device_node *dev,
>                             struct pci_host_bridge *bridge,
>                             struct pci_config_window *cfg);
> +    void (*fixup_bar)(struct pci_host_bridge *bridge,
> +                      unsigned int bar_num,
> +                      paddr_t *addr);

I'm not an Arm maintainer, but if such a hook - used only when a certain
CONFIG_* is active, as per patch 2 - was introduced in common or x86 code,
I'd ask for the hook to also be conditional. Doing so avoids accidental use
without ...

> --- a/xen/arch/arm/vpci.c
> +++ b/xen/arch/arm/vpci.c
> @@ -189,6 +189,18 @@ unsigned int domain_vpci_get_num_mmio_handlers(struct domain *d)
>      return 1;
>  }
>  
> +void platform_pci_fixup_bar(const struct pci_dev *pdev,
> +                                          unsigned int bar_num,
> +                                          paddr_t *addr)
> +{
> +    struct pci_host_bridge *bridge = pci_find_host_bridge(pdev->sbdf.seg, pdev->sbdf.bus);
> +
> +    if ( bridge->ops->fixup_bar )
> +    {
> +        bridge->ops->fixup_bar(bridge, bar_num, addr);
> +    }

... such a conditional around it.

Jan


From xen-devel-bounces@lists.xenproject.org Tue Apr 21 08:35:24 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 21 Apr 2026 08:35:24 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1288600.1568853 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wF6Zj-0004QX-IX; Tue, 21 Apr 2026 08:35:19 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1288600.1568853; Tue, 21 Apr 2026 08: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 1wF6Zj-0004QQ-Fj; Tue, 21 Apr 2026 08:35:19 +0000
Received: by outflank-mailman (input) for mailman id 1288600;
 Tue, 21 Apr 2026 08:35:17 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <jbeulich@suse.com>) id 1wF6Zh-0004QK-Qu
 for xen-devel@lists.xenproject.org; Tue, 21 Apr 2026 08:35:17 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wF6Zf-00Awwt-BL
 for xen-devel@lists.xenproject.org; Tue, 21 Apr 2026 10:35:16 +0200
Received: from [10.42.69.6] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <jbeulich@suse.com>)
 id 69e736c4-bab6-0a2a0a5309dd-0a2a4506980e-2
 for <xen-devel@lists.xenproject.org>; Tue, 21 Apr 2026 10:35:16 +0200
Received: from [209.85.128.48] (helo=mail-wm1-f48.google.com)
 by tlsNG-16d1c6.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.1)
 (envelope-from <jbeulich@suse.com>)
 id 69e736c4-7371-0a2a45060019-d1558030ad3d-3
 for <xen-devel@lists.xenproject.org>; Tue, 21 Apr 2026 10:35:16 +0200
Received: by mail-wm1-f48.google.com with SMTP id
 5b1f17b1804b1-4891c0620bcso15119105e9.1
 for <xen-devel@lists.xenproject.org>; Tue, 21 Apr 2026 01:35:16 -0700 (PDT)
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-488fb735d3dsm228452835e9.2.2026.04.21.01.35.15
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Tue, 21 Apr 2026 01:35:15 -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=google header.d=suse.com header.i="@suse.com" header.h="Content-Transfer-Encoding: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=1776760516; x=1777365316; darn=lists.xenproject.org;
        h=content-transfer-encoding:autocrypt:subject:from:cc:to
         :content-language:user-agent:mime-version:date:message-id:from:to:cc
         :subject:date:message-id:reply-to;
        bh=+ZD1nJ9q+stpFZ0eRmdPtYY2X3vn6OBKJxCf41nTR9w=;
        b=C6JvRyDDKb2E4D9X2eJomd8YejolLh36GZbqbEGzNAjlknHGTFr8bONxcDXDUmvLq5
         X0B+yiSpKJ7D0nLocLhyDL5d1cf4uKrHRR6K/wt7wZt97CMICawDEo6Gpj/7KYsV3FiD
         ldVfh6f0Shar0+9E535Gz4mnHx5WMk6q9BYR8Bw435c67rhgC/uABAWAJm3GaYbwSU1w
         Gh5jN6ddk7fP5Im7Kqzner2DrUL5D+7HFURUr62hL//XBWj2QX0GpLbIsO0gvc4Ah5dy
         jk8oaZQLxCw5ANkZgt66OPgv+/Wifz+bHM4Rx9dyUKgL515zihRT/7hCI9JfLz8jbeFr
         uxPQ==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20251104; t=1776760516; x=1777365316;
        h=content-transfer-encoding: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;
        bh=+ZD1nJ9q+stpFZ0eRmdPtYY2X3vn6OBKJxCf41nTR9w=;
        b=UQqjjkGlFs7JPWwv5yshBJP6lQ+VGvm9ugrjLZywld83IpoV7s1b0vi7iPcPFMi548
         CuUp0Kt+d31BjXKp3NVL5QqbPlEjfn8Bq73pVUGOwbaWUTZDQkzwMS7W3YOVUwHczLGX
         CezU12HqHz7YdmC/dfFB2tgJUNzWuDXfXkHfz7GXGZvqqOoL7aLCy2gd2dC/O2IBIHzx
         KVIDHR/WhqcXFfZN8aI+mXvNvyuWtIuH80UAwaYatifJOgWsbDR39rXL+mPTCAxHK7CY
         hb5R6YXlMrQUXl//qdy+pLX8bp56EqpBZ6x7Qu5LzVxJNiYtk2eEdM678Bwa6bgY8frw
         uEiQ==
X-Gm-Message-State: AOJu0Yw6Ic/W1oEUjGzvb+wJHDGFCud5vo4LFf9eK1k+vgmZZzI2qBRf
	pSXGlvbs4KqjhU4vq6WpHByLftGkfJBiJAmSCwg6NSd3i5ux4OwWPyGmCIAW2sLel5aLogSlikI
	lHF3Qzw==
X-Gm-Gg: AeBDiesuh4OKlhZto9E7bqyON3HetrVMl3umuaBDpfLFzXfu4fpzKv6XIYC/Zl3TvZe
	2c/iDhMISR0g4f/sOawzAGSn/6otei53Lir8qCvPeWPLkiq1nSPON8GSgQpXwzL2vex6twjjSQg
	6bJE0TtrRQ6EYjhU3SWorsgOL3PKWUPP5TfYAS/Qa7g5G8OTU+Bt6UCSnUYeI0pNN/6QRZXauzZ
	HatSHL4xuT4ZfTcnKLWMmcxCAU7plFnQ879FYQDfuLwyZ8iZaLrQb/VBaNPNsApBhwQ22WCf5Tl
	S1N4xa88jH5gZvl/iFUN4dOFnm7bN7cPzZ1PpyLQQToBb9CZ1siwJNx/8lljP1IRe9FNApa9nB1
	JH8Dja1ZSJs4MXDNQALS7n3xkoTmV4DwEzl+enXWDPFlHeGKgGH+nIUyMQ7kGhMIaYryAfd6wHy
	lt70Gz+qtc7RpXadC0wLEik8e+VY4BdMTWZZU93eOjsoc6RtqqM1p4E5IXn8dNnt18fn7fW6BOd
	TGR67pMbxrLAUn0gZ11TTtv1g==
X-Received: by 2002:a05:600c:64c8:b0:485:2fe9:336f with SMTP id 5b1f17b1804b1-488fb7a0d24mr277009105e9.30.1776760515939;
        Tue, 21 Apr 2026 01:35:15 -0700 (PDT)
Message-ID: <5f299d7a-be1b-4bdb-a10b-37c334606bdf@suse.com>
Date: Tue, 21 Apr 2026 10:35:14 +0200
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.pau@citrix.com>, Teddy Astie <teddy.astie@vates.tech>
From: Jan Beulich <jbeulich@suse.com>
Subject: [PATCH 0/2] move KB() etc to make it usable by x86'es mkelf32
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-16d1c6/1776760516-90E7CD75-177690B2/0/0
X-purgate-type: clean
X-purgate-size: 210

mkelf32.c doesn't want to include config.h; if anything, it would probably be
autoconf.h which it might include if so needed.

1: include: move KB() etc to macros.h
2: x86/mkelf32: use xen/macros.h

Jan


From xen-devel-bounces@lists.xenproject.org Tue Apr 21 08:36:23 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 21 Apr 2026 08:36:23 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1288610.1568861 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wF6ak-0004uI-RM; Tue, 21 Apr 2026 08:36:22 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1288610.1568861; Tue, 21 Apr 2026 08:36: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 1wF6ak-0004uB-OS; Tue, 21 Apr 2026 08:36:22 +0000
Received: by outflank-mailman (input) for mailman id 1288610;
 Tue, 21 Apr 2026 08:36:21 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <jbeulich@suse.com>) id 1wF6aj-0004u5-TI
 for xen-devel@lists.xenproject.org; Tue, 21 Apr 2026 08:36:21 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wF6aj-00BJVz-9u
 for xen-devel@lists.xenproject.org; Tue, 21 Apr 2026 10:36:21 +0200
Received: from [10.42.69.12] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <jbeulich@suse.com>)
 id 69e73705-2eae-0a2a0a5409dd-0a2a450cbd3c-0
 for <xen-devel@lists.xenproject.org>; Tue, 21 Apr 2026 10:36:21 +0200
Received: from [209.85.128.46] (helo=mail-wm1-f46.google.com)
 by tlsNG-d25034.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.1)
 (envelope-from <jbeulich@suse.com>)
 id 69e73705-62f1-0a2a450c0019-d155802eb9fc-3
 for <xen-devel@lists.xenproject.org>; Tue, 21 Apr 2026 10:36:21 +0200
Received: by mail-wm1-f46.google.com with SMTP id
 5b1f17b1804b1-48374014a77so50749835e9.3
 for <xen-devel@lists.xenproject.org>; Tue, 21 Apr 2026 01:36:21 -0700 (PDT)
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-4891cc7b2efsm76257125e9.0.2026.04.21.01.36.20
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Tue, 21 Apr 2026 01:36:20 -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=google header.d=suse.com header.i="@suse.com" header.h="Content-Transfer-Encoding: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=1776760581; x=1777365381; darn=lists.xenproject.org;
        h=content-transfer-encoding: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;
        bh=JcsTqVPD6BC9mNfcL3urUViUPyyUHkw/w1xj1kJSNqQ=;
        b=BHQ/lt5bHLmxaDBJnXcARJvQDr2JTd2HY25nxfJU+It1y9Ksz0/lqHwMLv7n6iDLTX
         hekns+4icwOHV1U4UWIW9WQC2Z/5iVYa20EHJupe9Roe24GaCBz2T2YPw2UkW5EfNIdQ
         VUlC4v0Z3DE99gc63cMqS5+hhiEh27aTM8LNKJLUKWuRMwELA/hqOETH8UuRbxxb9neV
         ktYvy7DAeutPnbX+0pmfIgDJYTDs2oizvda9NIvRx73UyuWUyuQHLzkto7Py7n6KRWNT
         HroxigPr/jlOWJWbO+toRnFnZsEebuXXYckmAgCOnDzVSLaQOFOrebBHJoYQgsJObRqU
         ISQA==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20251104; t=1776760581; x=1777365381;
        h=content-transfer-encoding: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;
        bh=JcsTqVPD6BC9mNfcL3urUViUPyyUHkw/w1xj1kJSNqQ=;
        b=iCHLlIZFpJs9wflr6VaTaLsKwJ+U21hq+KDqQB5b4hWA7P7gRLjxq7pRpAhFVWycNf
         gd8DXxynKfzN9nUHhQ7HWFG7/GPR0cF/hOL5Wws9DcnfTsZccuF9II+selALbHfHi7QT
         mi3u2KpC66tngo3wb0yMNl+zI+KKy3g04saAu3tAsUroSCigcBB+s1Twcl7pLIaXKFwE
         3MkS152r5+ho+88PC+4tS00HD+a5Ny8A3ibG15Mqwl919fGMiNMWJPbOUmun2mMGfAZT
         JuuZMirp4pxv66gt3dmzUBd1zDSN1kIVETwqisJFTYj/KPffx5mym3girq6Xv6mSB5sG
         Zo+A==
X-Gm-Message-State: AOJu0YxMXYlrdvndYfL9IsZiERuhB/ftlxNU2CxYCwUaiDJdl4FB2eIe
	6wk6OZsjzSWxxAPcXKBK8OJSQQDrzJCXSGoQgFriVPQzwH40vGAjW/2Aq2388X9L8AAle55nL3j
	tS0Qu+Q==
X-Gm-Gg: AeBDiesfoO7yJp/94RZ1JUs6/HXlnNBngEcGEsPuPtwAd7vOdF+Soo8kQGGwdS6tuhJ
	b8mpSFP/i0wef4Ld6oHsgmeud/20kNmnOQ7jj2u5SYVcPSSNTW1HX0dpNrjFQ+V5ANF0JyFFJcT
	OdSLP2JJZybJtkrNOpM2SzkYl8RFGGJiGp+n+OlpYzWbmzq0JL9dmZW0ADZobVHNMkjnUfW0Nhn
	Q/TrUwlC8xaIsREBgQCseTMUIv7QZmI6LnhDwHv21g3Qlcc+XyvQ5iXu+vp3I+BrnkCuqVl8zGS
	n/7XM8Q4p5zMRrW2qboLJwnnPnd5iosgkE3nwgNJm6r08eEW2kneYw9hWhzgM5XhApVto1dtArK
	Av+6EoOPueKFfe7WGwXOFM9XaCEbXrIP+LbMGKkEGL5mrAocdevWn9Y57Jt+xplylNdrWKIUpE9
	c5gTkZutwJda8UK7Po1DMGIiJmYwjkavOOfzwN9NOL8+6aCLkxMXsZnJLTwc8C4EjGD/qgzHUTL
	2GaO2tu9XyX2c0zGxoy00lTLA==
X-Received: by 2002:a05:600c:c0c8:b0:487:21c7:2885 with SMTP id 5b1f17b1804b1-488fb73d9ffmr192728195e9.5.1776760580599;
        Tue, 21 Apr 2026 01:36:20 -0700 (PDT)
Message-ID: <a0a5ac06-620b-4ad1-a664-546db82627ce@suse.com>
Date: Tue, 21 Apr 2026 10:36:19 +0200
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: [PATCH 1/2] include: move KB() etc to macros.h
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.pau@citrix.com>, Teddy Astie <teddy.astie@vates.tech>
References: <5f299d7a-be1b-4bdb-a10b-37c334606bdf@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: <5f299d7a-be1b-4bdb-a10b-37c334606bdf@suse.com>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 7bit
X-purgate-ID: tlsNG-d25034/1776760581-6E169CF5-EE00B4F2/0/0
X-purgate-type: clean
X-purgate-size: 1125

Allow them to be used by build tools which don't include config.h. (They
also don't really fit into config.h, as there's nothing "configuration"
related about them.)

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

--- a/xen/arch/x86/efi/relocs-dummy.S
+++ b/xen/arch/x86/efi/relocs-dummy.S
@@ -1,3 +1,4 @@
+#include <xen/macros.h>
 
 	.section .reloc, "a", @progbits
 	.balign 4
--- a/xen/include/xen/config.h
+++ b/xen/include/xen/config.h
@@ -82,10 +82,6 @@
 #define __force
 #define __bitwise
 
-#define KB(_kb)     (_AC(_kb, ULL) << 10)
-#define MB(_mb)     (_AC(_mb, ULL) << 20)
-#define GB(_gb)     (_AC(_gb, ULL) << 30)
-
 /* allow existing code to work with Kconfig variable */
 #define NR_CPUS CONFIG_NR_CPUS
 
--- a/xen/include/xen/macros.h
+++ b/xen/include/xen/macros.h
@@ -38,6 +38,10 @@
 #define __STR(...) #__VA_ARGS__
 #define STR(...) __STR(__VA_ARGS__)
 
+#define KB(_kb)     (_AC(_kb, ULL) << 10)
+#define MB(_mb)     (_AC(_mb, ULL) << 20)
+#define GB(_gb)     (_AC(_gb, ULL) << 30)
+
 #ifndef __ASSEMBLER__
 
 /* Force a compilation error if condition is true */



From xen-devel-bounces@lists.xenproject.org Tue Apr 21 08:36:49 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 21 Apr 2026 08:36:49 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1288616.1568870 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wF6bB-0005KZ-2p; Tue, 21 Apr 2026 08:36:49 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1288616.1568870; Tue, 21 Apr 2026 08:36: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 1wF6bB-0005KQ-04; Tue, 21 Apr 2026 08:36:49 +0000
Received: by outflank-mailman (input) for mailman id 1288616;
 Tue, 21 Apr 2026 08:36:48 +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 1wF6bA-0005J8-3B
 for xen-devel@lists.xenproject.org; Tue, 21 Apr 2026 08:36:48 +0000
Received: from xenbits.xenproject.org ([104.239.192.120])
 by mail.xenproject.org with esmtp (Exim 4.96)
 (envelope-from <julien@xen.org>) id 1wF6b9-00CeQV-22;
 Tue, 21 Apr 2026 08:36:47 +0000
Received: from [2a02:8012:3a1:0:3d55:1646:9f87:e5f0]
 by xenbits.xenproject.org with esmtpsa (TLS1.3) tls
 TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (Exim 4.96)
 (envelope-from <julien@xen.org>) id 1wF6b9-00DygZ-1L;
 Tue, 21 Apr 2026 08:36: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=xen.org;
	s=20200302mail; h=Content-Transfer-Encoding:Content-Type:In-Reply-To:From:
	References:Cc:To:Subject:MIME-Version:Date:Message-ID;
	bh=3x7ZA5fd2nnuA0ufHxBALV6fxOVywYgqzpL+x6BowS4=; b=37blrnjxrZzjQ66cGJQLvVEPQJ
	hGt2pTzeFAoOMrbaUh0iuzB7jRSS7/IDYRHD+yuTUWGi5QUVmTJUs+y28oZxLtY7/pAfJzhhVwWma
	Myi3pH4qgl4HTLqjwqHMwHskLJwfCWXzUjU9ZwIv9ZGMdNzDOA6zp94b91WGAjxfZt80=;
Message-ID: <3708372f-c2e9-4d84-89eb-ab9845ac4798@xen.org>
Date: Tue, 21 Apr 2026 09:36:45 +0100
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [RFC PATCH 2/2] plat/rcar: Add region id support for PCI
To: Mykyta Poturai <Mykyta_Poturai@epam.com>,
 "xen-devel@lists.xenproject.org" <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>
References: <cover.1776756291.git.mykyta_poturai@epam.com>
 <ad5caa92e36b0e0f104a14b46396037505080f4f.1776756291.git.mykyta_poturai@epam.com>
Content-Language: en-GB
From: Julien Grall <julien@xen.org>
In-Reply-To: <ad5caa92e36b0e0f104a14b46396037505080f4f.1776756291.git.mykyta_poturai@epam.com>
Content-Type: text/plain; charset=UTF-8; format=flowed
Content-Transfer-Encoding: 7bit

Hi Mykyta,

On 21/04/2026 08:57, Mykyta Poturai wrote:
> diff --git a/xen/arch/arm/platforms/Kconfig b/xen/arch/arm/platforms/Kconfig
> index 888d0b85d5..db096952c8 100644
> --- a/xen/arch/arm/platforms/Kconfig
> +++ b/xen/arch/arm/platforms/Kconfig
> @@ -64,6 +64,27 @@ config NO_PLAT
>   
>   endchoice
>   
> +menu "RCar Region ID Support"
> +    visible if RCAR4
> +
> +config RCAR_REGION_ID_SUPPORT
> +	bool "Renesas Region ID support for R-Car Gen4 platforms" if EXPERT
> +	depends on RCAR4
> +	help
> +	  Enable experimental Region ID support for R-Car Gen4 platforms
> +
> +config RCAR_RGID
> +	int "Region ID encoded in physical address"
> +	depends on RCAR_REGION_ID_SUPPORT
> +	default 0
> +
> +config RCAR_PA_BITS
> +	int "Physical address space size"
> +	depends on RCAR_REGION_ID_SUPPORT
> +	default 36

The 3 configs above implies that the value will change per-board. Is 
that correct? If so, this should be described in the firmware table so a 
single Xen binary can boot on all the platforms.

Cheers,

-- 
Julien Grall



From xen-devel-bounces@lists.xenproject.org Tue Apr 21 08:37:18 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 21 Apr 2026 08:37:18 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1288626.1568880 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wF6be-0005qU-Ac; Tue, 21 Apr 2026 08:37:18 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1288626.1568880; Tue, 21 Apr 2026 08: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 1wF6be-0005qN-7l; Tue, 21 Apr 2026 08:37:18 +0000
Received: by outflank-mailman (input) for mailman id 1288626;
 Tue, 21 Apr 2026 08:37:17 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <jbeulich@suse.com>) id 1wF6bd-0005q5-4t
 for xen-devel@lists.xenproject.org; Tue, 21 Apr 2026 08:37:17 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wF6bc-00AE0R-HV
 for xen-devel@lists.xenproject.org; Tue, 21 Apr 2026 10:37:16 +0200
Received: from [10.42.69.8] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <jbeulich@suse.com>)
 id 69e73738-e002-0a2a0a5209dd-0a2a4508cba6-4
 for <xen-devel@lists.xenproject.org>; Tue, 21 Apr 2026 10:37:16 +0200
Received: from [209.85.128.53] (helo=mail-wm1-f53.google.com)
 by tlsNG-c1860d.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.1)
 (envelope-from <jbeulich@suse.com>)
 id 69e7373c-63b5-0a2a45080019-d1558035d144-3
 for <xen-devel@lists.xenproject.org>; Tue, 21 Apr 2026 10:37:16 +0200
Received: by mail-wm1-f53.google.com with SMTP id
 5b1f17b1804b1-4891cd41959so19735165e9.3
 for <xen-devel@lists.xenproject.org>; Tue, 21 Apr 2026 01:37:16 -0700 (PDT)
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-43fe4e59f97sm40090652f8f.37.2026.04.21.01.37.15
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Tue, 21 Apr 2026 01:37:15 -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=google header.d=suse.com header.i="@suse.com" header.h="Content-Transfer-Encoding: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=1776760636; x=1777365436; darn=lists.xenproject.org;
        h=content-transfer-encoding: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;
        bh=B6V7BN4hxXU439Lo7mLCOu7stPATYuK1DmCIaf/ONQw=;
        b=ei/w0nLf7u4dCgbLLCsqTUO++l7YexFeO5aLbU9hvAT8LfHSHGIYAXRKfQRkbObJE5
         LeJ8DncrxUq92CICWWTfLuPrbClIhwm6Kat34wkzDwh3wVPhwOv/f3JqjqyGbH+Zwsha
         JdqOuBoI52sEaQbcHcWXLWsbD5DmBR79q+678NeiG3o8OCKmg81i3eZvQ5JcqRRE16gx
         xaxesGT02/wAqZhWgxbg4FyrKjHdXQpilQwP1IFA5iBMDaIWnqA6GMpj2kLeUk2Rx7xQ
         hTtrcwo+y/Z+PGnZetbcFONjoxaNw21V5Covln6jBZcy1oiThdW7ugAoL3WQ8EKhCEh1
         YcQA==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20251104; t=1776760636; x=1777365436;
        h=content-transfer-encoding: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;
        bh=B6V7BN4hxXU439Lo7mLCOu7stPATYuK1DmCIaf/ONQw=;
        b=YNZlXfwAWuxYl1ymKVa029cCcVa8d+UyXGDNgWUEcJ0IHb8AvNh7dl2wfgeNgmL1LP
         XppltUfwLk+CIkQ1D9IawsJmg8usJjh/fMjkuYaI5aWoqBT2wUmWylhZIsYSFtSlKXWB
         tPfgxIQZh6AXWV0XEOqgwleRmuT+p/ofMR5COXFh+SBi1zDYCfUUpDOwOBl/rVCvpsKL
         vnTLtiElRefnRxwoGWOg3bJCoYyv2rnfF1BamBXDFWp+OqPMnPWIZMhPyRkedtNwcew1
         Z/pCf17yblbct//yz+lFHCmOwqC41mAn+waxbmssMjYYynbCR2l+O6wd/+rmtt31ly+D
         ycRQ==
X-Gm-Message-State: AOJu0YzSvhL45nm3UPAje491M9tedC/kHCZeZ7WqOv/a/54G7cgvSUly
	cAJE4pC5YzgJosqP1eQFBbAOYF3g1eNTZJnAkgXi8FxO2ohGt13JLNPZy02M2/ar/Eu2w2CZGVc
	0jEbGTw==
X-Gm-Gg: AeBDiettqPyeKwRlMW/Ddwtk6/1DZ+UU4CjJp8nrQdQ1OdKiD4GR3QqEH6s2JNqc9Ix
	iaXbqBA5QMLUvNtSs+m1XMd1HRSBJMicRMU2Ne/wRurpgLg+pMkC0cszE85OD1DeApuv89i0+Sp
	DmUt51KXn5StiWTf9xKoHaThI1H7LNgq9QBz4T/AYoXX1SI9peq/HWm3RZcvt+umtwSXq5FbON6
	ZtNMA6VCcYgwg+GhQ+bXvF4aa8i/OBqPUfB47vCb38icc8C82XBIxYWYhSRcbKmCInSU26YofRd
	U8NJqYfk7ZUzEiklVFneC4B6doQlpDI6lROLZY2WeycFaZUbuBUOtnUBVaETZizDkSrmSe5wqaT
	cT45pG4z6RYEb8ckTftSOZLLecKIsqRqLvdbrhxNpOiW+tVKgN1d55RK2SqY7UnCzmR4Rp5LOBk
	+CKykxVr0GWm8hjR6y7ZuWbsG0Oq07BYtf4mlng7N1k9MrOqFyG+TFmdOrwOXdJbA5QQen4fbFA
	F8IVWFK5YwMD7aRltmxyxATSg==
X-Received: by 2002:a05:600c:899:b0:489:1a63:509c with SMTP id 5b1f17b1804b1-4891a635125mr74154665e9.0.1776760635747;
        Tue, 21 Apr 2026 01:37:15 -0700 (PDT)
Message-ID: <4922ac38-e6d9-439a-a4de-2eafe2569017@suse.com>
Date: Tue, 21 Apr 2026 10:37:14 +0200
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: [PATCH 2/2] x86/mkelf32: use xen/macros.h
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.pau@citrix.com>,
 Teddy Astie <teddy.astie@vates.tech>
References: <5f299d7a-be1b-4bdb-a10b-37c334606bdf@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: <5f299d7a-be1b-4bdb-a10b-37c334606bdf@suse.com>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 7bit
X-purgate-ID: tlsNG-c1860d/1776760636-3B97DDB1-E90039A2/0/0
X-purgate-type: clean
X-purgate-size: 1003

Avoid open-coding macros we have readily available. Being able to use MB()
there might have avoided the flaw corrected by 5416c455f656 ("x86/mkelf32:
Actually pad load segment to 2 MiB boundary").

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

--- a/xen/arch/x86/boot/mkelf32.c
+++ b/xen/arch/x86/boot/mkelf32.c
@@ -17,7 +17,9 @@
 #include <unistd.h>
 #include <inttypes.h>
 
+#include "../../../include/xen/const.h"
 #include "../../../include/xen/elfstructs.h"
+#include "../../../include/xen/macros.h"
 
 #define DYNAMICALLY_FILLED   0
 #define RAW_OFFSET         128
@@ -345,7 +347,7 @@ int main(int argc, char **argv)
      * the Xen image using 2M pages.  To avoid running into adjacent non-RAM
      * regions, pad the segment to the next 2M boundary.
      */
-    mem_siz = ((uint32_t)in64_phdr.p_memsz + (1U << 21) - 1) & (-1U << 21);
+    mem_siz = ROUNDUP((uint32_t)in64_phdr.p_memsz, MB(2));
 
     note_sz = note_base = offset = 0;
     if ( num_phdrs > 1 )



From xen-devel-bounces@lists.xenproject.org Tue Apr 21 08:43:57 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 21 Apr 2026 08:43:57 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1288638.1568888 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wF6hq-000820-VD; Tue, 21 Apr 2026 08:43:42 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1288638.1568888; Tue, 21 Apr 2026 08:43: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 1wF6hq-00081t-SV; Tue, 21 Apr 2026 08:43:42 +0000
Received: by outflank-mailman (input) for mailman id 1288638;
 Tue, 21 Apr 2026 08:43:41 +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 1wF6hp-00081n-Sl
 for xen-devel@lists.xenproject.org; Tue, 21 Apr 2026 08:43:41 +0000
Received: from xenbits.xenproject.org ([104.239.192.120])
 by mail.xenproject.org with esmtp (Exim 4.96)
 (envelope-from <julien@xen.org>) id 1wF6hp-00CeXM-1C;
 Tue, 21 Apr 2026 08:43:41 +0000
Received: from [2a02:8012:3a1:0:3d55:1646:9f87:e5f0]
 by xenbits.xenproject.org with esmtpsa (TLS1.3) tls
 TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (Exim 4.96)
 (envelope-from <julien@xen.org>) id 1wF6hp-00DzCt-0F;
 Tue, 21 Apr 2026 08:43: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>
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=/sWBWZ+VL4Uk1olJf5ck2+T6iicOdc+sknJgATHn+ck=; b=zMN4ueF9nud6cSWqkk02h7R2Vr
	ZEwUcW0MMA2V3HzPAWuWQkmQPuGWUZTAMkky24H7ST0iSjKwNpzDF9uhsuazyJ3MSAA9mYaWnnoqN
	OsaPboK5kL7I33ulLkpjiN+1aWinGQd5tAcoQpYhAb8FzIxND9+grC1CrHJ86RynyU9c=;
Message-ID: <cd2c76a2-7a13-4bbf-9c29-5dcf3ae06fc0@xen.org>
Date: Tue, 21 Apr 2026 09:43:39 +0100
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH v2 02/23] xen/arm: smmuv3: Add support for stage-1 and
 nested stage translation
Content-Language: en-GB
To: Milan Djokic <milan_djokic@epam.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>,
 Michal Orzel <michal.orzel@amd.com>,
 Volodymyr Babchuk <Volodymyr_Babchuk@epam.com>
References: <cover.1774305918.git.milan_djokic@epam.com>
 <cb8a2cb5df50128f4c49d34a7ab8faa4e73f83c6.1774305918.git.milan_djokic@epam.com>
 <56a7c116-4ecb-4dfc-a7dd-774d53041fe9@xen.org>
 <87a04781-5765-43b6-8b21-cb993609bd91@epam.com>
From: Julien Grall <julien@xen.org>
In-Reply-To: <87a04781-5765-43b6-8b21-cb993609bd91@epam.com>
Content-Type: text/plain; charset=UTF-8; format=flowed
Content-Transfer-Encoding: 8bit

Hi Milan,

On 19/04/2026 18:34, Milan Djokic wrote:
> Hi Julien,
> 
> On 4/14/26 04:17, Julien Grall wrote:
>> Hi Milan,
>>
>> On 24/03/2026 07:51, Milan Djokic wrote:
>>> 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 | 93 ++++++++++++++++++++++ 
>>> +----
>>>    xen/drivers/passthrough/arm/smmu-v3.h |  9 +++
>>>    2 files changed, 91 insertions(+), 11 deletions(-)
>>>
>>> diff --git a/xen/drivers/passthrough/arm/smmu-v3.c b/xen/drivers/ 
>>> passthrough/arm/smmu-v3.c
>>> index 73cc4ef08f..f9c6837919 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 = le64_to_cpu(dst[0]);
>>> -    bool ste_live = false;
>>> +    bool s1_live = false, s2_live = false, ste_live = false;
>>> +    bool abort, translate = false;
>>>        struct arm_smmu_device *smmu = NULL;
>>> +    struct arm_smmu_s1_cfg *s1_cfg = NULL;
>>>        struct arm_smmu_s2_cfg *s2_cfg = NULL;
>>>        struct arm_smmu_domain *smmu_domain = NULL;
>>>        struct arm_smmu_cmdq_ent prefetch_cmd = {
>>> @@ -699,30 +701,54 @@ static void arm_smmu_write_strtab_ent(struct 
>>> arm_smmu_master *master, u32 sid,
>>>            smmu = master->smmu;
>>>        }
>>> -    if (smmu_domain)
>>> -        s2_cfg = &smmu_domain->s2_cfg;
>>> +    if (smmu_domain) {
>>> +        switch (smmu_domain->stage) {
>>> +        case ARM_SMMU_DOMAIN_NESTED:
>>> +            s1_cfg = &smmu_domain->s1_cfg;
>>> +            fallthrough;
>>> +        case ARM_SMMU_DOMAIN_S2:
>>> +            s2_cfg = &smmu_domain->s2_cfg;
>>> +            break;
>>> +        default:
>>> +            break;
>>> +        }
>>> +        translate = !!s1_cfg || !!s2_cfg;
>>
>> NIT: translate is a bool. So do you actually need the !!?
>>
> 
> No, !! is not necessary here, will fix this.
> 
>>> +    }
>>>        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 = true;
>>> +            break;
>>>            case STRTAB_STE_0_CFG_S2_TRANS:
>>> -            ste_live = true;
>>> +            s2_live = true;
>>> +            break;
>>> +        case STRTAB_STE_0_CFG_NESTED:
>>> +            s1_live = true;
>>> +            s2_live = true;
>>>                break;
>>>            case STRTAB_STE_0_CFG_ABORT:
>>> -            BUG_ON(!disable_bypass);
>>
>> I am not sure I understand why this was removed. Can you clarify?
>>
> 
> Yes. With the stage-1 support, abort is controlled per guest smmu 
> configuration, so abort state is valid and not controlled by the global
> disable_bypass, but with per-config smmu_domain->abort field instead.

Are we ok to allow the guest to control the bit? For instance, what does 
it mean if the guest decide to that no abort is necessary but the region 
is not mapped in stage-2?

[...]

> 
> The original idea was to also allow stage-1-only support. But I'm not 
> sure if stage-1-only usecase is useful or even valid for Xen.. I will 
> update the patch series with the missing parts for stage-1-only support, 
> pointed out by Luca, but the question remains if this is needed at all. 
> If not, I can revert to original state where stage-2 was always required.

By "stage-1 only" support, do you mean Xen would use the stage-1 in 
replacement of the stage-2? Or do you mean the guest will use the 
stage-1 page-table and there will be no isolation from Xen?

If the former, then I believe the page tables don't have the exact same 
format. Today, the page-tables are shared between the CPU and IOMMU, so 
this would need to be duplicated. For now, I am not sure this is worth 
to do.

If the latter, this would require the guest to be directly mapped (i.e. 
IPA == PA) but it would also open a big hole. So I would want to 
understand the exact use case first.

Cheers,

-- 
Julien Grall



From xen-devel-bounces@lists.xenproject.org Tue Apr 21 08:45:55 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 21 Apr 2026 08:45:55 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1288650.1568897 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wF6jv-00009j-DP; Tue, 21 Apr 2026 08:45:51 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1288650.1568897; Tue, 21 Apr 2026 08:45: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 1wF6jv-00009c-AY; Tue, 21 Apr 2026 08:45:51 +0000
Received: by outflank-mailman (input) for mailman id 1288650;
 Tue, 21 Apr 2026 08:45:49 +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 1wF6jt-00009W-OI
 for xen-devel@lists.xenproject.org; Tue, 21 Apr 2026 08:45:49 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wF6js-00AFjC-Dj
 for xen-devel@lists.xenproject.org; Tue, 21 Apr 2026 10:45:48 +0200
Received: from [10.42.69.8] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <Mykyta_Poturai@epam.com>)
 id 69e73938-5cb7-0a2a0a5109dd-0a2a45089ae4-24
 for <xen-devel@lists.xenproject.org>; Tue, 21 Apr 2026 10:45:48 +0200
Received: from [40.107.162.101]
 (helo=PA4PR04CU001.outbound.protection.outlook.com)
 by tlsNG-c1860d.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.1)
 (envelope-from <Mykyta_Poturai@epam.com>)
 id 69e7393b-63b5-0a2a45080019-286ba2652c48-3
 for <xen-devel@lists.xenproject.org>; Tue, 21 Apr 2026 10:45:48 +0200
Received: from PAVPR03MB10102.eurprd03.prod.outlook.com
 (2603:10a6:102:30d::12) by DB4PR03MB8708.eurprd03.prod.outlook.com
 (2603:10a6:10:380::7) with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9818.33; Tue, 21 Apr
 2026 08:45:42 +0000
Received: from PAVPR03MB10102.eurprd03.prod.outlook.com
 ([fe80::b8c6:f37a:987a:beb]) by PAVPR03MB10102.eurprd03.prod.outlook.com
 ([fe80::b8c6:f37a:987a:beb%5]) with mapi id 15.20.9818.033; Tue, 21 Apr 2026
 08:45: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=hYQ/Qwwi1t8plz5Yuy/jQHtRfhnmtA+C6KA7Q1PxQKuquUqoR5oNa3j2864vuhYUvk+GD1ahYwWFIwHEcjR1EWwkkmot+3+2B4PvcvQO2NVYHE2QnMr7QUBGCm8ouRWbUDaOnpGrCVipxR01CHykZOFwwIJm98sFGBF81D3e9GoZtVlZxavgDtGY9YlKfwCYiojv81jZ4zx9wr5+OaPNSh47oiNBSqnMihJ4CAPvpT+c8W2Bfc7NACx4Z/cZzEed7GLfrRV2R/y54oPlV2ez4HcKYBLkcGz6wWPgyyoYAGlzVzykQGM9vohVb7WN24ZlT+tcEnMHbcNBfnK92r/bQQ==
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com;
 s=arcselector10001;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1;
 bh=cofZ+DTZgf2xCrx+s7v116PQNXWKMFUc4tYRgJePiqo=;
 b=hGtqY780biWLxoLpinkSo6saf0McXzlCOLHoVGVopfUASHLLRC4M1xce/B6HFQd+l82v2174pIE7WM68KNBKAbJuGmH8zxSEwZVrPtuINDUFw1uR7Wwxi+nz2kZXXm/tgmCxJdioZXmWwtFVkTsYARiOLUtxWuKQUHRU7ZlzaHNskNLLPJd419rB+5ba06jxsXffTGZF4oWbAqq9/OfR1P3SwpHvLYsOU3yz1JZjbABg3Kgd+iEiUIA5F17qtrz1dwIJKRBsGCmgTkPVNwI5Dj0sMC/bXjQhtRgMCSYglefhPL/pi7m+5TzOjU42x89/GEO2R4r7hwglOOPJV5tp2Q==
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=cofZ+DTZgf2xCrx+s7v116PQNXWKMFUc4tYRgJePiqo=;
 b=ZCFyNTOAtddBVPMvFOs0U4ZS02NnXno8NmX4jB9yesB6KZHda06cM3zQ5153GN6/smm/74mfuiex6v9AP78bju0y5D9yNaiPywD5f0Mj6Btx8RzKCtRQ2iHSAOuBxddMYHlUcKC1+r5KkBqRn+3Z9De04Z4ETyRHmkyeOj6TJXOyPkOTmtR6xyXh8CdIkjzmFqZnPqJI/9njTMAW48+s2PyjNds8laWwS76P1ko03raTaa6vPGZU8KRCx/bxJ9U1pehEjYpH6uYaCCAN2yUuiIe7BV9WKLkTMGVGQzEZDJO8SlrKkL/kGOo6ekYghIPyp53uW/cp1c9YYELz3mzzYw==
From: Mykyta Poturai <Mykyta_Poturai@epam.com>
To: Jan Beulich <jbeulich@suse.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>
Subject: Re: [RFC PATCH 2/2] plat/rcar: Add region id support for PCI
Thread-Topic: [RFC PATCH 2/2] plat/rcar: Add region id support for PCI
Thread-Index: AQHc0WR3HLVfDHqP50KPW64J7aGgdbXpLwMAgAAEq4A=
Date: Tue, 21 Apr 2026 08:45:42 +0000
Message-ID: <4426640a-8567-4ffa-8667-06fea9e2ea54@epam.com>
References: <cover.1776756291.git.mykyta_poturai@epam.com>
 <ad5caa92e36b0e0f104a14b46396037505080f4f.1776756291.git.mykyta_poturai@epam.com>
 <cb1b4892-7a7f-4ed9-bb73-d43d72db99c8@suse.com>
In-Reply-To: <cb1b4892-7a7f-4ed9-bb73-d43d72db99c8@suse.com>
Accept-Language: en-US
Content-Language: en-US
X-MS-Has-Attach:
X-MS-TNEF-Correlator:
authentication-results: dkim=none (message not signed)
 header.d=none;dmarc=none action=none header.from=epam.com;
x-ms-publictraffictype: Email
x-ms-traffictypediagnostic: PAVPR03MB10102:EE_|DB4PR03MB8708:EE_
x-ms-office365-filtering-correlation-id: 1d5a0e62-04f4-42df-b5ce-08de9f825f2c
x-ms-exchange-senderadcheck: 1
x-ms-exchange-antispam-relay: 0
x-microsoft-antispam:
 BCL:0;ARA:13230040|1800799024|366016|376014|38070700021|56012099003|22082099003|18002099003;
x-microsoft-antispam-message-info:
 Hn/LSY7Yi94lWdj+aKPH4ceaFb8L7OfDFUioqmV9VbWVfgkRH6LCZnC90ejbLokRf6kq+/vWA3TpvMspYlAF78uNVwAom9AXK8ctM7ArxEVQFfkK+xOdX+QDCgjqDv/aiyRfvzox4X31od//DEfQ8E/3cNpmxEOYBBcgjUyN+25R6B26vKKqWrTImkwpzaqU8zoFCkaAEvbbwZt+JQ4s4GbF4WXmngWXsX8JKgcNgsobFOdBFkJ7I1e+y4TEf3JWr0qY/faNyHQzYyP7VJr++XFfqKLNInEGTkZewVq9+1kc7X2ZdT7ekXoYjveH8v1zp3pn+enUexX3yExceLxvJZUMhpsiJMysT/whigE1zMhS5nFw0Al/7puSp3qrfgqH9m85dhKYAM5j30ZxCevjqAsoGjhtkgO1y1EEvtIuL5XyNtaCfCzDwO4JmBJ55JBh5R3B3RWfjku5/2oY6hAmLaSEPv0q70widld44rAfZmOpF3Tbj3Hqvs42/Xje0DLBlDz+UglOuE4z/WEjexKxyz9H+fHMz2RQ8aI1XaSHjguKAg1BizrXqmpK4j6o4ZzJVTjWic9+gHo4cYVO1GJbektGZN9JpIZ/4f1VpCJwe0WVVivCvjAh4V4GlKpbrFMeT9mN5LOv7asbiYYj/ZipYm/LbU8Sk/p9CAYAvUumm5g3bDHotTDn/y6SK4BKh9msBmqD6fZNf9CG/n3nkRZ9zmYG8IHv9+YciPj2YIkxrW8dT6Piq9vSyBPr06yHprmM+Oeu1b1ZnA8rn9pDD8CE9xLAum49xhoHBLvcYK1QmZQ=
x-forefront-antispam-report:
 CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:PAVPR03MB10102.eurprd03.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(1800799024)(366016)(376014)(38070700021)(56012099003)(22082099003)(18002099003);DIR:OUT;SFP:1102;
x-ms-exchange-antispam-messagedata-chunkcount: 1
x-ms-exchange-antispam-messagedata-0:
 =?utf-8?B?Q0pQQ1hpa1l2RWZNaGRVaWIzdXBsazZZWWdHbythT3ZHMVhaMk1XYzJFaTdH?=
 =?utf-8?B?RkNoT0hZeG1OY20yb2FoTVlSMDlQWHJDZ3RLdjJyWklyTUZOajZDLytBcmsx?=
 =?utf-8?B?b3lyMXFrWklIZ0VhUU41ME5yYm14K1hsWUU3SUJhaTUvcDAzSzgyUlVxLzVk?=
 =?utf-8?B?NXhmZ1JMT29KWXMxeGNQWEdONEJrRzhoVHlzR3liSnNwVXVFT1QyeHp2WHNt?=
 =?utf-8?B?dDN0VVo5UUVXV3IrV0dXZ2xpNW1YQW5pdWM3ZGh5ejMyeXAvbjBZbkRObzkv?=
 =?utf-8?B?T2JLSzR3ckl5SWtZQmZKOXF4ZmVDKzhMaTloQytVT1lDbWlKbW9pTlNwOFhq?=
 =?utf-8?B?MGptRXRCQ2JQd1hoOUNJYlBRRFJBa0tUaHlYZjFiUktkQno4OFdPekVSbmM5?=
 =?utf-8?B?Rm9kUTVRMW1CN1JtM0NRQVB6N1h2eE5zdThRV0dEYnMyTlpNaTR1Znd3RmJF?=
 =?utf-8?B?Kyt2MDdYS3ZxN3lVMy9YY0VnYjFQMk5aUnRCczNyaTltYlNqQ0FJdEZ4QnVh?=
 =?utf-8?B?VGpoNjUrais1OVVwK2FuSlZzU3lTbENBdi9hU3hlME12QXJXMDF5ZnNlQ0FJ?=
 =?utf-8?B?eldSRVZOcE9HQVptMHpWdTUvbzVlc3lXYTV3SFlDWXNPQjhIci9iaFJRMXRV?=
 =?utf-8?B?SFJJMzc5SkM2M0pmd0RTbUhrSEV1R1R1YXpWd1ZMQXc4bm1EK1ZBVkVFVGZL?=
 =?utf-8?B?VFZhNGZteWQvNjBzdE1yd1dqWGNWNFNnWElSTHpaWVhYMVR1eEx4cS9mNlJC?=
 =?utf-8?B?azZGT3BSdTlPN3pMY3FYOEZ1UWpRcmQxMmpvUVZhaDl6SCtBVktMNXdMbHVO?=
 =?utf-8?B?MEIwQnFBWW9ScElpVkR6UE11NVkrTy80Zzd2QU1xTmNLMUI0NDhvY3lobGJq?=
 =?utf-8?B?OFRGM1Y1VXF1V2lZODJYbFEydXpKVjkzWm1tbitKTzloZnZoKzBMVlAvdFFM?=
 =?utf-8?B?RmJxQzl4QldVamFpVmZJM2FEWmRkV1h4OVdnRXJTeFluZGMyZ2pDcCtUd0oy?=
 =?utf-8?B?bVpZRkhJZ2JLNCtBVWxMVUVuUWs3S09kN2hNbGxueEF2R2gzdThwY1lWejJp?=
 =?utf-8?B?alAwWWpYdHdVWjI2RG9YYVJkWlcxTWMrZDVNeGlaYmFkcTFtMlU5c2pBa3ZG?=
 =?utf-8?B?VVpKamUzaEQ0aGlLSm1wZnc0WkRoeHpjOXJKZWF6WFhpMXNmNzh6eXNsbVRt?=
 =?utf-8?B?VU0yN2I0b0kvY2VkRFp6VjJoSC84aTZZblNRbFk4RnI5Si9MalN2a2o4R0Vj?=
 =?utf-8?B?VkkvdTI5cFBwMmhvWGx0eTU0MUpxMjhZZzlqOVBVeVhRTWNFTUcweGlOVkpk?=
 =?utf-8?B?eEdLZ1BtRlVGN1lzN2dIcWZhazlWcHNNaUNKeC91WVFrdW1KVllSYmltNldH?=
 =?utf-8?B?WS9OSE1rVnNQWVBleTA0Y3NVRVBzbHpyWngxRkR1c2VvWEN6NDJXYXM5djhT?=
 =?utf-8?B?aUpneEhpbjU2OVYxckVWa0gwRVZUTHRndlpQOWZselBSUE9OUFRXdlhwRHZU?=
 =?utf-8?B?TjNycld3bFFzV3FrNlZYUnVrdUJZMlZMVGxDNWRncGNNdDc3TDZzYk1kMHZz?=
 =?utf-8?B?NGN3Ykx6NEdSTXVoaTBkL2dsd1pENHhUa1VYclBDd3Z1THR4TFNkU0wwZzBQ?=
 =?utf-8?B?WjNDcWpsTk14Y05TeTBWSENkMGhINVk2cjJrSGlMMWxUdWZxWlJRdmlNWHQx?=
 =?utf-8?B?c1pGSWcrbTVXT0FMMHNNTEIraWtpZ3JOSGc1L2lzWlYrdW5ITkhPOWlUWVV2?=
 =?utf-8?B?M0xpZ3dsTWh3WEpHanZ0VnJ1SGxHaTZGelRKeFhYRi82b2s5UlNUaDZ2RHk5?=
 =?utf-8?B?b1ZNZktSTGFUaTZlaEVNSHhrSFJiODRTcCtCL3VXek1ELzNxMTM4TXNOZnRu?=
 =?utf-8?B?cE9EUm9RWnJQNjFhOEZFM1BobG5za3VobGd1ZHpPYzV6ZmV3K3Jmb0ptZDQ1?=
 =?utf-8?B?Q3FuSGt2VVBKckR4TXZwbW1IYVZQb1RZQzQ4THFBMVIyclJDSUtPQkVKYlpB?=
 =?utf-8?B?SkJxNUdZNjVja1YxZnZQUHlPVmROYXUvaURvajZuTnE5azltb1EvTk1KWU9x?=
 =?utf-8?B?MkQrSDVFVkpCSUM5aFZha1BaSy9SNUFmVmN4WmtYUEdYamtxcSt5ZXBzbU0z?=
 =?utf-8?B?YkVVOS8rWUhocnlvdjNRNitpcWNEWGJmajZiZGdLZnhleis4SzlmWlBvYVlI?=
 =?utf-8?B?emdRaUoxMHBKS2sxdUd1M2NVQitVTGRzazRkTlA2d3NjN1ZJazhIanpHK0hB?=
 =?utf-8?B?aU9DR0pJbi9JWXZuZnFLZENTZVdCTGFOTzJRQitxbXdrak5iYkY4ZGVuRlZk?=
 =?utf-8?B?SjVsRnZuQnZWZUp6djVsa1BZODVhWTdTbTNmcXZHeUdTcDJvKy84eERoU2lq?=
 =?utf-8?Q?fFDDeebhnearr0uo=3D?=
Content-Type: text/plain; charset="utf-8"
Content-ID: <ADCD9321F965464EB0338FF9440EDCC0@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: PAVPR03MB10102.eurprd03.prod.outlook.com
X-MS-Exchange-CrossTenant-Network-Message-Id: 1d5a0e62-04f4-42df-b5ce-08de9f825f2c
X-MS-Exchange-CrossTenant-originalarrivaltime: 21 Apr 2026 08:45:42.4195
 (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: 2eKGvrTJ2gULP/Vr2PToSHm5X4PnRzz+K3APpO2DoJHyq+frq3b5VUx6LkfQC/6Tpd4JGB3OW2yc1si1ZHx9zA==
X-MS-Exchange-Transport-CrossTenantHeadersStamped: DB4PR03MB8708
X-purgate-ID: tlsNG-c1860d/1776761148-38567DB1-40760364/0/0
X-purgate-type: clean
X-purgate-size: 826

T24gNC8yMS8yNiAxMToyOCwgSmFuIEJldWxpY2ggd3JvdGU6DQo+IE9uIDIxLjA0LjIwMjYgMDk6
NTcsIE15a3l0YSBQb3R1cmFpIHdyb3RlOg0KPj4gV2l0aCBSZWdpb24gSUQgZW5hYmxlZCwgYWxs
IENQVSBtZW1vcnkgYWNjZXNzZXMgbmVlZCB0byBoYXZlIHJnaWQgYml0cw0KPj4gc2V0IGluIHRo
ZSBwaHlzaWNhbCBhZGRyZXNzLiBUaGlzIGNyZWF0ZXMgYSBwcm9ibGVtIGZvciBQQ0kgQkFSDQo+
PiBhY2Nlc3NlcywgYXMgaXQgd291bGQgcmVxdWlyZSBhbGwgQkFScyB0byBiZSA2NGJpdC4NCj4g
DQo+IEkgZG9uJ3QgdW5kZXJzdGFuZCB0aGlzLiBDUFUgYWNjZXNzZXMgb2YgYWRkcmVzc2VzIHJl
YWQgLyBkZXJpdmVkIGZyb20NCj4gQkFScyBjYW4gYmUgbWFzc2FnZWQgaW4gYW55IHdheSB0aGUg
T1MgbGlrZXMuIFRoYXQgZG9lc24ndCByZXF1aXJlIHRoZQ0KPiBCQVJzIHRvIGJlIDY0LWJpdC4g
QXJlIHlvdSB0cnlpbmcgdG8gYXJyYW5nZSBmb3IgUkdJRCB0byBiZSB0cmFuc3BhcmVudA0KPiB0
byBndWVzdHM/DQo+IA0KPiBKYW4NCg0KWWVzLCBtYWtpbmcgaXQgdHJhbnNwYXJlbnQgdG8gZ3Vl
c3RzIGlzIHRoZSBnb2FsLg0KDQotLSANCk15a3l0YQ==


From xen-devel-bounces@lists.xenproject.org Tue Apr 21 08:57:51 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 21 Apr 2026 08:57:51 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1288668.1568907 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wF6vR-0002cN-EA; Tue, 21 Apr 2026 08:57:45 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1288668.1568907; Tue, 21 Apr 2026 08:57: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 1wF6vR-0002cG-Ap; Tue, 21 Apr 2026 08:57:45 +0000
Received: by outflank-mailman (input) for mailman id 1288668;
 Tue, 21 Apr 2026 08:57:44 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <jbeulich@suse.com>) id 1wF6vQ-0002cA-F1
 for xen-devel@lists.xenproject.org; Tue, 21 Apr 2026 08:57:44 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wF6vO-00B2P9-9t
 for xen-devel@lists.xenproject.org; Tue, 21 Apr 2026 10:57:43 +0200
Received: from [10.42.69.6] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <jbeulich@suse.com>)
 id 69e73c01-e002-0a2a0a5209dd-0a2a4506aef8-18
 for <xen-devel@lists.xenproject.org>; Tue, 21 Apr 2026 10:57:43 +0200
Received: from [209.85.128.52] (helo=mail-wm1-f52.google.com)
 by tlsNG-16d1c6.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.1)
 (envelope-from <jbeulich@suse.com>)
 id 69e73c07-7371-0a2a45060019-d1558034dc0b-3
 for <xen-devel@lists.xenproject.org>; Tue, 21 Apr 2026 10:57:43 +0200
Received: by mail-wm1-f52.google.com with SMTP id
 5b1f17b1804b1-48909558b3aso30601015e9.0
 for <xen-devel@lists.xenproject.org>; Tue, 21 Apr 2026 01:57:43 -0700 (PDT)
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-48a52d232afsm26389555e9.31.2026.04.21.01.57.42
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Tue, 21 Apr 2026 01:57:42 -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=google header.d=suse.com header.i="@suse.com" header.h="Content-Transfer-Encoding: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=1776761863; x=1777366663; darn=lists.xenproject.org;
        h=content-transfer-encoding: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;
        bh=+u/FbagVHc72m+UMqUBLw85RuLKIDPGbZE2pQSYIoR4=;
        b=SPSELO0ABtEdYCSZRAK8nN+S+VUaoTl0uxlnr9x38DyPEvnApTkPDVNMoqrRHLe0MX
         ng8lpg6woYXhD5bv1WpMHTFRWUGd7uLrqdk2BDqkZpw/0LeTp7fY4JT1iXyxHHDlxKGN
         3ToCI8Mwgbj7uM4K4LahS7wqXYPf20U+3ucveCidOQEHrTF3Yjvhhc9KvXrlm2V1tDsd
         jHCROZs312ffnp1su+sqncpFolQmo6n+DK1F4XMR97nFHPkj7GNy+LqGRvjFV45wCyI+
         xcZxN9vpMpbmKrjDcc6btMllsO0WJ8HCKWSRlvAnUy8pNtCWTXWZkwcAzYbrw09J2Ers
         vIxw==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20251104; t=1776761863; x=1777366663;
        h=content-transfer-encoding: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;
        bh=+u/FbagVHc72m+UMqUBLw85RuLKIDPGbZE2pQSYIoR4=;
        b=StH+sU0taCSCBA+T5UV6rrqgpznABpxEZa7gQkqMD1ZEqFWlj+9nhP7vYZ7XWpo+IT
         15L27LIK/x7GXtowEKgYDhqZiJHxqx0z6S1ZU1DZD7OuRR0mQTGIs6p8tNEz6k+y/7DG
         +ZoCobfdGjINSH0Hp2JTUqQXHFeTK1Le9CHpOmDhihzF7CE4CztyrxVCl4oxwBI482vt
         LisZy6cTfSOMZBjFLMEWmstWBAT98QLC5Y6Y/CP7kRYUYDY6g27HDD7dU8O1ce/RN8Zv
         dX/4bC5TILC/T4DQE4Qs/pOjzp3H9UyIyMJAejwhHeNqEp3hZ6HlvzC+xafQInbYmhhp
         LEEA==
X-Forwarded-Encrypted: i=1; AFNElJ9vHvB558u60BO95R2SZAtCEp3oQwnzn0bjtJ7KcA8DE7zWOZ0p6X1KnOw+hA4UsqZpKv47gIrJ+8g=@lists.xenproject.org
X-Gm-Message-State: AOJu0YxMqcML0LQLzarfha9RysEsD714c6oqe/DMF7W/8LkKaJ7iuZgf
	sfsgc5atHLKBZmgxro5OMfiW0WTcK+D4AaGjGpcK/1KFceuFS7vW/4zEIRXl0X7bkZYETNKZ/hl
	+pC5S0A==
X-Gm-Gg: AeBDietrjLgHlID7wEb0gEAJSMIvFi6wPNjL0SDcmY1ohT6dqS90p8g1Y8dg7w1617q
	hsvrTEMw9d8vZTqv/UV22cZFxEhSfiVnWEP4SgBzudKxTc7rZpDWf8TmTnSVdO/61QCxTS0HNxc
	PyM8MPHhBjz1Is2nN+/Jmpvl7SYQaaE1/p7uR4R3Swwe08ijsOgTCDWYThUltwHvN+5Ucg33AVn
	nwVC524x3lKf8rgyapx0ArrlcmGoZM+UsdiPh30Q0RJpQoAnxSTTR/fdhoTAc7e8zABmbiEhZf4
	jOUbg2ip0ernLtnP2oxNjsiEnUMgNk9T9Y1dWi0yJqoX+r9YjXJotPhCXZ5GUCGeuXuXJBnhXk7
	Y7T2eC3aa8gAMeBl82nkr1Lw5qYi1VNuVDGMHMfreA9V5GscIh/JNoO1H8xmKf8p+mjASW2aF3J
	/tEzyIb2vaeoKuXZdX+RpEO+YZS7HdJXxygHPlBAI7LFkk5X0M1VuXnvCAE3NISQbXVdpimoQb7
	4a0tzbbrcRM+AnnpFoX7fepQZTdxvlGZbib
X-Received: by 2002:a05:600c:350e:b0:488:a82f:bb95 with SMTP id 5b1f17b1804b1-488fb7861c0mr245641675e9.29.1776761863022;
        Tue, 21 Apr 2026 01:57:43 -0700 (PDT)
Message-ID: <6af89a34-3bf1-40cb-a4c5-e9a16ee31295@suse.com>
Date: Tue, 21 Apr 2026 10:57:41 +0200
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH v3 05/12] xen/riscv: add kernel loading support
To: Oleksii Kurochko <oleksii.kurochko@gmail.com>
Cc: Romain Caritey <Romain.Caritey@microchip.com>,
 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.pau@citrix.com>,
 Stefano Stabellini <sstabellini@kernel.org>, xen-devel@lists.xenproject.org
References: <cover.1775836193.git.oleksii.kurochko@gmail.com>
 <29ec8e444792caa925ba92cdc406ef8c0b3bd678.1775836193.git.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: <29ec8e444792caa925ba92cdc406ef8c0b3bd678.1775836193.git.oleksii.kurochko@gmail.com>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 7bit
X-purgate-ID: tlsNG-16d1c6/1776761863-CE576D75-496E8A33/0/0
X-purgate-type: clean
X-purgate-size: 7507

On 10.04.2026 17:54, Oleksii Kurochko wrote:
> --- a/xen/arch/riscv/include/asm/config.h
> +++ b/xen/arch/riscv/include/asm/config.h
> @@ -151,6 +151,19 @@
>  extern unsigned long phys_offset; /* = load_start - XEN_VIRT_START */
>  #endif
>  
> +/*
> + * KERNEL_LOAD_ADDR_ALIGNMENT is defined based on paragraph of
> + * "Kernel location" of boot.rst:
> + * https://docs.kernel.org/arch/riscv/boot.html#kernel-location

I.e. this is entirely Linux-centric? If so, maybe the patch subject should
then reflect this?

> --- /dev/null
> +++ b/xen/arch/riscv/kernel.c
> @@ -0,0 +1,230 @@
> +/* SPDX-License-Identifier: GPL-2.0-only */
> +
> +#include <xen/bug.h>
> +#include <xen/compiler.h>
> +#include <xen/errno.h>
> +#include <xen/fdt-kernel.h>
> +#include <xen/guest_access.h>
> +#include <xen/init.h>
> +#include <xen/libfdt/libfdt.h>
> +#include <xen/mm.h>
> +#include <xen/types.h>
> +#include <xen/vmap.h>
> +
> +#include <asm/setup.h>
> +
> +#define IMAGE64_MAGIC_V2 0x05435352 /* Magic number 2, le, "RSC\x05" */
> +
> +static void __init place_modules(struct kernel_info *info, paddr_t kernbase,
> +                                 paddr_t kernend)
> +{
> +    const struct boot_module *mod = info->bd.initrd;
> +    const struct membanks *banks = kernel_info_get_mem_const(info);
> +    const paddr_t initrd_len = ROUNDUP(mod ? mod->size : 0,
> +                                       KERNEL_LOAD_ADDR_ALIGNMENT);
> +    const paddr_t dtb_len = ROUNDUP(fdt_totalsize(info->fdt),
> +                                    KERNEL_LOAD_ADDR_ALIGNMENT);
> +    const paddr_t modsize = initrd_len + dtb_len;
> +    int bi;

Please can variables used for array indexing be of unsigned types? The use ...

> +    BUG_ON(modsize < initrd_len);
> +
> +    /*
> +     * Place modules as high in RAM as possible, scanning banks from
> +     * last to first so that the end of the last bank is preferred.
> +     */
> +    for ( bi = banks->nr_banks - 1; bi >= 0; bi-- )

... here can easily be replaced:

    for ( bi = banks->nr_banks; bi-- > 0; )

Or you could have

    unsigned int bi = banks->nr_banks;
    ...
    while ( bi-- > 0 )

.

> +    {
> +        const struct membank *bank = &banks->bank[bi];
> +        const paddr_t bank_end = bank->start + bank->size;
> +        paddr_t modbase;
> +
> +        if ( modsize > bank->size )
> +            continue;
> +
> +        modbase = ROUNDDOWN(bank_end - modsize, KERNEL_LOAD_ADDR_ALIGNMENT);
> +
> +        if ( modbase < bank->start )
> +            continue;
> +
> +        /*
> +         * If the kernel resides in this bank, ensure modules do not
> +         * overlap with it.
> +         */
> +        if ( (kernbase >= bank->start) && (kernbase < bank_end) &&
> +             (modbase < ROUNDUP(kernend, KERNEL_LOAD_ADDR_ALIGNMENT)) &&
> +             (modbase + modsize > kernbase) )
> +            continue;

Can't this be had with only two comparisons? Same bank or not doesn't really
matter - if it's different banks, there'll be no overlap anyway. So all you
need here is that the module range doesn't overlap the kernel range, entirely
independent of the bank.

What is dependent on the bank is that the bank may fit both kernel and module
even if there is an overlap as per your current calculation: You may be able
to place the module below the kernel if it doesn't fit above.

> +static paddr_t __init kernel_image_place(struct kernel_info *info)
> +{
> +    paddr_t load_addr = INVALID_PADDR;
> +    uint64_t image_size = info->image.image_size ?: info->image.len;
> +    const struct membanks *banks = kernel_info_get_mem_const(info);
> +    unsigned int nr_banks = banks->nr_banks;
> +    unsigned int bi;
> +
> +    dprintk(XENLOG_DEBUG, "nr_banks(%u)\n", nr_banks);
> +
> +    /*
> +     * At the moment, RISC-V's Linux kernel should be always position
> +     * independent based on "Per-MMU execution" of boot.rst:
> +     *   https://docs.kernel.org/arch/riscv/boot.html#pre-mmu-execution
> +     *
> +     * But just for the case when RISC-V's Linux kernel isn't position
> +     * independent it is needed to take load address from
> +     * info->image.start.
> +     *
> +     * If `start` is zero, the Image is position independent.
> +     */
> +    if ( likely(!info->image.start) )
> +    {
> +        for ( bi = 0; bi != nr_banks; bi++ )
> +        {
> +            const struct membank *bank = &banks->bank[bi];
> +            paddr_t bank_start = bank->start;
> +            /*
> +             * According to boot.rst kernel load address should be properly
> +             * aligned:
> +             *   https://docs.kernel.org/arch/riscv/boot.html#kernel-location
> +             *
> +             * As Image in this case is PIC we can ignore
> +             * info->image.text_offset.
> +             */
> +            paddr_t aligned_start = ROUNDUP(bank_start, KERNEL_LOAD_ADDR_ALIGNMENT);
> +            paddr_t bank_end = bank_start + bank->size;
> +            paddr_t bank_size;
> +
> +            if ( aligned_start > bank_end )
> +                continue;
> +
> +            bank_size = bank_end - aligned_start;
> +
> +            dprintk(XENLOG_DEBUG, "bank[%u].start=%"PRIpaddr"\n", bi, bank->start);
> +
> +            if ( image_size <= bank_size )
> +            {
> +                load_addr = aligned_start;
> +                break;
> +            }
> +        }
> +    }
> +    else
> +    {
> +        load_addr = info->image.start + info->image.text_offset;

Why does stuff ahead of text_offset not need loading?

> +        WARN_ON(!IS_ALIGNED(load_addr, KERNEL_LOAD_ADDR_ALIGNMENT));
> +
> +        for ( bi = 0; bi != nr_banks; bi++ )
> +        {
> +            const struct membank *bank = &banks->bank[bi];
> +            paddr_t bank_start = bank->start;
> +            paddr_t bank_end = bank_start + bank->size;
> +
> +            if ( (load_addr >= bank_start) && (load_addr < bank_end) &&
> +                 (bank_end - load_addr) >= image_size )

Do we have to fear overflow? (If so, shouldn't such an image be rejected
rather than an attempt being made to place it?) If not, simply:

            if ( (load_addr >= bank_start) && 
                 (load_addr + image_size <= bank_end) )

Also, does image_size really only cover space starting from .text_offset,
rather than from .start?

> +static void __init kernel_image_load(struct kernel_info *info)
> +{
> +    int rc;
> +    paddr_t load_addr = kernel_image_place(info);
> +    paddr_t paddr = info->image.kernel_addr;
> +    paddr_t len = info->image.len;
> +    paddr_t effective_size = info->image.image_size ?: len;
> +    void *kernel;
> +
> +    place_modules(info, load_addr, load_addr + effective_size);
> +
> +    printk("Loading Image from %"PRIpaddr" to %"PRIpaddr"-%"PRIpaddr"\n",
> +            paddr, load_addr, load_addr + effective_size);

As on earlier occasions: Please represent ranges as mathematical ones, to
disambiguate whether the bounds (the upper one in particular) are inclusive
or exclusive.

> +int __init kernel_image_probe(struct kernel_info *info, paddr_t addr,
> +                              paddr_t size)
> +{
> +#ifdef CONFIG_RISCV_64
> +    return kernel_image64_probe(info, addr, size);
> +#else
> +    return -EOPNOTSUPP;

Better #error, as you have it elsewhere (iirc)?

Jan


From xen-devel-bounces@lists.xenproject.org Tue Apr 21 08:59:48 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 21 Apr 2026 08:59:48 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1288677.1568915 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wF6xO-0003OW-Po; Tue, 21 Apr 2026 08:59:46 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1288677.1568915; Tue, 21 Apr 2026 08: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 1wF6xO-0003OP-Mu; Tue, 21 Apr 2026 08:59:46 +0000
Received: by outflank-mailman (input) for mailman id 1288677;
 Tue, 21 Apr 2026 08:59:46 +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 1wF6xO-0003OJ-6c
 for xen-devel@lists.xenproject.org; Tue, 21 Apr 2026 08:59:46 +0000
Received: from xenbits.xenproject.org ([104.239.192.120])
 by mail.xenproject.org with esmtp (Exim 4.96)
 (envelope-from <julien@xen.org>) id 1wF6xN-00Ceo1-2K;
 Tue, 21 Apr 2026 08:59:45 +0000
Received: from [2a02:8012:3a1:0:3d55:1646:9f87:e5f0]
 by xenbits.xenproject.org with esmtpsa (TLS1.3) tls
 TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (Exim 4.96)
 (envelope-from <julien@xen.org>) id 1wF6xN-00Dzpz-1m;
 Tue, 21 Apr 2026 08:59: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=xen.org;
	s=20200302mail; h=Content-Transfer-Encoding:Content-Type:In-Reply-To:From:
	References:Cc:To:Subject:MIME-Version:Date:Message-ID;
	bh=vjimEAhbBkA6s9fQAKUpjTLlnUsV5+OSt4H8OMfVmgo=; b=0NPx11DVzlphuB4w22xLpS18Qg
	dSd1UbAC+jdKvOArWYBHIp+2DAoQ9/XW+68oBdciWI+eftdwtPM3OyKhudncCScaLEjNZ6sRxQFIT
	VpkUBERs2L1hDyUKnAr8MTijq1+KfKLxyqbPT3M8QYR2DfCeOC8MUFdGmcvj5koCR/+U=;
Message-ID: <b249c55a-6982-4b9f-a0fa-2a6bac3da25e@xen.org>
Date: Tue, 21 Apr 2026 09:59:43 +0100
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH] xen/arm64: flushtlb: Optimize
 ARM64_WORKAROUND_REPEAT_TLBI
Content-Language: en-GB
To: Michal Orzel <michal.orzel@amd.com>, xen-devel@lists.xenproject.org
Cc: Stefano Stabellini <sstabellini@kernel.org>,
 Bertrand Marquis <bertrand.marquis@arm.com>,
 Volodymyr Babchuk <Volodymyr_Babchuk@epam.com>, Mark.Rutland@arm.com
References: <20260414081124.48741-1-michal.orzel@amd.com>
From: Julien Grall <julien@xen.org>
In-Reply-To: <20260414081124.48741-1-michal.orzel@amd.com>
Content-Type: text/plain; charset=UTF-8; format=flowed
Content-Transfer-Encoding: 7bit

Hi Michal,

On 14/04/2026 09:11, Michal Orzel wrote:
> Rework the workaround logic as follows:
>   - add TLB_HELPER_LOCAL() to be used for local TLB ops without a
>     workaround,
>   - modify TLB_HELPER() workaround to use tlbi vale2is, xzr as a second
>     TLB,
>   - drop TLB_HELPER_VA(). It's used only by __flush_xen_tlb_one_local
>     which is local and does not need workaround and by
>     __flush_xen_tlb_one. In the latter case, since it's used in a loop,
>     we don't need a workaround in the middle. Add __tlb_repeat_sync with
>     a workaround to be used at the end after DSB and before final ISB,
>   - TLBI VALE2IS passing XZR is used as an additional TLBI. While there is
>     an identity mapping there, it's used very rarely. The performance
>     impact is therefore negligible. If things change in the future, we
>     can revisit the decision.

Can you document the use of 0 in arch/arm/include/asm/mmu/layout.h as well?

> 
> Signed-off-by: Michal Orzel <michal.orzel@amd.com>

Reviewed-by: Julien Grall <jgrall@amazon.com>

Cheers,

-- 
Julien Grall



From xen-devel-bounces@lists.xenproject.org Tue Apr 21 09:01:59 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 21 Apr 2026 09:01:59 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1288689.1568925 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wF6zW-0004tP-63; Tue, 21 Apr 2026 09:01:58 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1288689.1568925; Tue, 21 Apr 2026 09: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 1wF6zW-0004tI-3K; Tue, 21 Apr 2026 09:01:58 +0000
Received: by outflank-mailman (input) for mailman id 1288689;
 Tue, 21 Apr 2026 09:01:57 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <jbeulich@suse.com>) id 1wF6zU-0004tC-Tw
 for xen-devel@lists.xenproject.org; Tue, 21 Apr 2026 09:01:57 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wF6zU-00AJv4-AY
 for xen-devel@lists.xenproject.org; Tue, 21 Apr 2026 11:01:56 +0200
Received: from [10.42.69.9] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <jbeulich@suse.com>)
 id 69e73d04-e002-0a2a0a5209dd-0a2a4509d0de-0
 for <xen-devel@lists.xenproject.org>; Tue, 21 Apr 2026 11:01:56 +0200
Received: from [209.85.128.52] (helo=mail-wm1-f52.google.com)
 by tlsNG-bad1c0.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.1)
 (envelope-from <jbeulich@suse.com>)
 id 69e73d04-2497-0a2a45090019-d1558034d908-3
 for <xen-devel@lists.xenproject.org>; Tue, 21 Apr 2026 11:01:56 +0200
Received: by mail-wm1-f52.google.com with SMTP id
 5b1f17b1804b1-4852b81c73aso33841305e9.3
 for <xen-devel@lists.xenproject.org>; Tue, 21 Apr 2026 02:01:56 -0700 (PDT)
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-488fc14a61asm326686455e9.15.2026.04.21.02.01.54
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Tue, 21 Apr 2026 02:01:55 -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=google header.d=suse.com header.i="@suse.com" header.h="Content-Transfer-Encoding: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=1776762116; x=1777366916; darn=lists.xenproject.org;
        h=content-transfer-encoding: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;
        bh=8wG57sSj3MTDSw8kHpjCY8D2TcEEJUl94PH8ftaAEZI=;
        b=UDKIUOIYuY3aGSwEPaao4w/V4O1w1SBl8TsTBDDo8lGUZei44Vm/6QGFOiqH6wfWLp
         mcIAqKQ/1d0OaxSEcQbJCwwADP2DgS7zwwynUVGgPxEX+g6FRatiGk0xwIUsMz0nmzff
         iJwW3S1JQelwOnC6FAbBauIXJH2ur+ag6Wr6537wWky6xnVUjj3h/h1MMacgtBcHX4Og
         si550XQIovPOoXzVh3D8maYFdf/PUCkpPX0HA3TQ8qE7R+Bu21qLL3pkeXC+JWUNTjzq
         pggjgK3EF8jilmqcVK7+PH9kOit48aIRfg3Nwpqt19CqTD/vk27LS4LgKgHQ9h1BKuhO
         2MWQ==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20251104; t=1776762116; x=1777366916;
        h=content-transfer-encoding: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;
        bh=8wG57sSj3MTDSw8kHpjCY8D2TcEEJUl94PH8ftaAEZI=;
        b=aByH0suSekCTw17i7Bm3cVPngZWMJ9UgZZifjWptzg9AD6d1/QYgWFGxrIF5qgPzU8
         DuKvplgfOulOBJq4hOSrtwMynXJ66QnDRccv0ckGcmVCJ4Cmly21/XT3uNLywQwKzE0S
         fKf16ruXC5OwxGQIZYQzR6//g9QSkyjKnkMW2CB3EwDOVSixwVbKXIqpPaiKjtvyfA7j
         4qqthVw0aIEK+gimdg7wPc0QKnVwe5UmPw4gq9g2dKXzfvXdg5XWBekeKBJJt+55hdW6
         eK+h0jDufmrWlNztR+u74vs3IE5CYP3pE7fAdWsiPLkwtY/gFDDBE19iiy5ZYH+yA206
         LcIQ==
X-Forwarded-Encrypted: i=1; AFNElJ/T9Uox/0wef5eqded2FyCEzr9sbIRfF6MNv8hF8TLNOrS8nesBVbOeA0ahleKd+ZNIRZYB7JWeMGg=@lists.xenproject.org
X-Gm-Message-State: AOJu0YxAB3i+2tIaxEyG+fke0KFXQS+lbwo1oZDSv5SGTEqe/OPwqZCR
	inEe61xvBzVW+oI2NgZseJHG8bW4mAAqHiHCajvf49yjc2X9oy+frWaG+sFI9cz62Q==
X-Gm-Gg: AeBDieu6o1SnOsI17MzgaT+f90V3FjFEw2+PFyAbcr026lMkA0NJRuHnLcuXfi+kLz2
	LAHkBvFEwacCtw8q2bJFS04Kt5wXqFn4C2hjQrn0RZe8cVAJtYiVpcXN/SWuf/W51HoezWR/aJ1
	+9o3yokBKoVmn/c2MyONJychcSVzUjMacYrjjNAYsNYNPbWF1jRXu2IVPnEDLbt1UHSFTuGMfvb
	tv3qNyPE9XsUdJg+ahJQbwWE8X2auWc6gEnBChqcA4Yx11ZkiI/Nxvtri79oBzXEc2PajhHdojw
	KZqljB7VP2jHyt79PA6WywueOkBXhaEPYP/uH33uzqw5SKUkNETF6cJsLaaZZJANnC8pWR5jw1I
	ifS6iI6uOTVqcS0u0n7/mEge0lUg+kwaOX3xo/2wywaOecPfFlN+qJknIWAW6vS2msCE251pUfe
	SVBx9gd0xv4fTeqlzfJchEKB9om6Lj5KOoQ8heSvl1soZsDEst7lZVKjjWC1qc+QBX3NEqG1rD9
	cV2gFMrSxeGGQI6sLBWFwDdoA==
X-Received: by 2002:a05:600c:450c:b0:487:55c:e0c1 with SMTP id 5b1f17b1804b1-488fb768816mr239286935e9.14.1776762115569;
        Tue, 21 Apr 2026 02:01:55 -0700 (PDT)
Message-ID: <03cd29a1-32fe-4664-9c4d-91172df369d8@suse.com>
Date: Tue, 21 Apr 2026 11:01:54 +0200
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH v3 05/12] xen/riscv: add kernel loading support
To: Oleksii Kurochko <oleksii.kurochko@gmail.com>
Cc: Romain Caritey <Romain.Caritey@microchip.com>,
 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.pau@citrix.com>,
 Stefano Stabellini <sstabellini@kernel.org>, xen-devel@lists.xenproject.org
References: <cover.1775836193.git.oleksii.kurochko@gmail.com>
 <29ec8e444792caa925ba92cdc406ef8c0b3bd678.1775836193.git.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: <29ec8e444792caa925ba92cdc406ef8c0b3bd678.1775836193.git.oleksii.kurochko@gmail.com>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 7bit
X-purgate-ID: tlsNG-bad1c0/1776762116-414B1A53-9152CC60/0/0
X-purgate-type: clean
X-purgate-size: 2066

On 10.04.2026 17:54, Oleksii Kurochko wrote:
> +/* Check if the image is a 64-bit Image */
> +static int __init kernel_image64_probe(struct kernel_info *info,
> +                                       paddr_t addr, paddr_t size)
> +{
> +    /* riscv/boot-image-header.rst */

Is this meant to refer to Linux'es Documentation/arch/riscv/boot-image-header.rst?
This needs making unambiguous.

Jan

> +    struct {
> +        uint32_t code0;         /* Executable code */
> +        uint32_t code1;         /* Executable code */
> +        uint64_t text_offset;   /* Image load offset, little endian */
> +        uint64_t image_size;    /* Effective Image size, little endian */
> +        uint64_t flags;         /* kernel flags, little endian */
> +        uint32_t version;       /* Version of this header */
> +        uint32_t res1;          /* Reserved */
> +        uint64_t res2;          /* Reserved */
> +        uint64_t magic;         /* Deprecated: Magic number, little endian, "RISCV" */
> +        uint32_t magic2;        /* Magic number 2, little endian, "RSC\x05" */
> +        uint32_t res3;          /* Reserved for PE COFF offset */
> +    } image;
> +    uint64_t effective_size;
> +
> +    if ( size < sizeof(image) )
> +        return -EINVAL;
> +
> +    copy_from_paddr(&image, addr, sizeof(image));
> +
> +    /* Magic v1 is deprecated and may be removed.  Only use v2 */
> +    if ( le32_to_cpu(image.magic2) != IMAGE64_MAGIC_V2 )
> +        return -EINVAL;
> +
> +    effective_size = le64_to_cpu(image.image_size);
> +
> +    if ( effective_size && size > effective_size )
> +        return -EINVAL;
> +
> +    info->image.kernel_addr = addr;
> +    /* Actual size in the binary file */
> +    info->image.len = size;
> +    /* Total memory the kernel occupies at runtime */
> +    info->image.image_size = effective_size;
> +    info->image.text_offset = le64_to_cpu(image.text_offset);
> +    info->image.start = 0;
> +
> +    info->load = kernel_image_load;
> +
> +    return 0;
> +}


From xen-devel-bounces@lists.xenproject.org Tue Apr 21 09:02:03 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 21 Apr 2026 09:02:03 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1288691.1568934 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wF6zb-00058Z-HL; Tue, 21 Apr 2026 09:02:03 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1288691.1568934; Tue, 21 Apr 2026 09: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 1wF6zb-00058S-EI; Tue, 21 Apr 2026 09:02:03 +0000
Received: by outflank-mailman (input) for mailman id 1288691;
 Tue, 21 Apr 2026 09:02:02 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92) id 1wF6za-00057s-4K
 for xen-devel@lists.xenproject.org; Tue, 21 Apr 2026 09:02:02 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wF6zZ-002zaS-Gj
 for xen-devel@lists.xenproject.org; Tue, 21 Apr 2026 11:02:01 +0200
Received: from [10.42.69.4] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <oleksii.kurochko@gmail.com>)
 id 69e73d04-2eae-0a2a0a5409dd-0a2a4504c5f4-6
 for <xen-devel@lists.xenproject.org>; Tue, 21 Apr 2026 11:02:01 +0200
Received: from [209.85.167.43] (helo=mail-lf1-f43.google.com)
 by tlsNG-ebf023.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.1)
 (envelope-from <oleksii.kurochko@gmail.com>)
 id 69e73d05-1dec-0a2a45040019-d155a72bd876-3
 for <xen-devel@lists.xenproject.org>; Tue, 21 Apr 2026 11:01:57 +0200
Received: by mail-lf1-f43.google.com with SMTP id
 2adb3069b0e04-5a525aedb24so2119298e87.2
 for <xen-devel@lists.xenproject.org>; Tue, 21 Apr 2026 02:01:57 -0700 (PDT)
Received: from [192.168.1.6] (user-109-243-69-121.play-internet.pl.
 [109.243.69.121]) by smtp.gmail.com with ESMTPSA id
 2adb3069b0e04-5a41a238563sm3343740e87.55.2026.04.21.02.01.55
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Tue, 21 Apr 2026 02:01:55 -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=20251104 header.d=gmail.com header.i="@gmail.com" header.h="Content-Transfer-Encoding:In-Reply-To:Content-Language:References:Cc:To:Subject:From:User-Agent:MIME-Version:Date:Message-ID"
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=gmail.com; s=20251104; t=1776762117; x=1777366917; darn=lists.xenproject.org;
        h=content-transfer-encoding:in-reply-to:content-language:references
         :cc:to:subject:from:user-agent:mime-version:date:message-id:from:to
         :cc:subject:date:message-id:reply-to;
        bh=KpDf2sze9ofwgyQZbAxaKl3MsrrAfysJEU1wnQ0oSBs=;
        b=rIZ7GK1+GfXUEAtIOh0lZK1wf1+ts28JbOJ4XIJsEbB3R9W7q4PWdvobvLYSdBU8WE
         1vZHrN58VH5+FV4NsS4T0e847e1i71VVO4ENLV9m+HLbB59dn4+fU8VemQKjlP7pGnO7
         JhdQAPp/9IagVd26rWq4e0NzAlpYh/vH7i2nWg2szehDDGvwD8T+aSH9WvM4Tl+tRoe8
         3iF0RReEgf+uKuUwjoLrDQWoUQ31wwqpkQCytelWFau+bZb+XUYqMYWfnqmwiDKIhUSd
         ZwHfmK999FLE7o1VwZ+9+8DARDbfUroyiQFLgXBazJdU1Xpu2pCuvT8sL3UKJ1r2fL7E
         37fw==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20251104; t=1776762117; x=1777366917;
        h=content-transfer-encoding:in-reply-to:content-language:references
         :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;
        bh=KpDf2sze9ofwgyQZbAxaKl3MsrrAfysJEU1wnQ0oSBs=;
        b=VT0qqvpWH59OTD1qtHcpmYcKiEIq6XlXXU/XAr8jXOh0r36s55xp+MIqTxBwWLtLxM
         66r8cbT4dA8V+D3gp5V444rYcWbh8NH6kQI1znnTnG42jsd3rlWfrY1Q6eGXIIqxdNki
         FQrM7A7A77cwTfC5qYb6i8gCcJ3EildMTbkLjEmud3p6rkS0EagaQ4z2r9MLNqZz6q4f
         /N0mWazn1Ad3DcAbTqfNcuZQN/tweZ4DrD+QDzeBAKJj2LaiCFGRXL4NJ5rlBl2Hun3h
         iPzn7YLu1zhespDRwkCRKZQqiZhOxV7LyWZ96rxDqsaS4mzJ/mH7fBrB9kh016ExgGcU
         9q+A==
X-Forwarded-Encrypted: i=1; AFNElJ/6dBIlpvbDa7ki0/BoOxM4CUWTAaePeS8dZu5gM32HIj36sg+Ef7xOqexlaNLIm1KsxKugyFOjvmI=@lists.xenproject.org
X-Gm-Message-State: AOJu0YzM2HMagbBBTGfjpwwjIsVoXNRPQpi426cNwGdoiWvcTTijL3zz
	GTn4oRRqtagq3YH2cD1X9E/HeLEPOAYjL3Q2KrLNKBAsBPNFOHz24jls
X-Gm-Gg: AeBDietVYMX+DEemB2QlsEh1zv1x8gLwdafMZlyuboAypvV9aANE4pKCOuXs9Bzg2cp
	6+WFmOIKLg0FpPTrtrLiBdLaQZWaJvIV6D1jlDCdiykKAwYC17VzsuBSrrBaPmQPn/NxVakpWYO
	ShaF8LO1LMYy2pkDA7AltVDopzxuYbvoMEF7v4NkEccv7jgbaWOwhz28o9bxfVtwrjfFxPepzp3
	4AeISOfEkJGIntjsCzThBoW+vZ3KeiBknYr7aQiMR9+f64bIR9bq+BwfJ/Zs5SHBfObIuUclBEI
	zrFFX4wSySBr8ucBppUtMMAKDcLwaemVvNMzbGKupvt3uZOI8LiqYuWjvXrTVehYEt0uUQ+B208
	KRxif3lA6FZmx5Mf1FzuuGF9zP4HFnWpoYU6ukjG9L0dEucJU3mfWDdsTpAYMjF4aJTQR4RNnqJ
	loYz0HFsJexhkDBn9UcEF2/+44QwV6EXG1LI/YQfzO78tw+GHFnz7IeRN2hdGORb8Zw2a3Q82kJ
	Ru1QPcVnXVjwA==
X-Received: by 2002:a05:6512:3d20:b0:5a2:b0ba:7169 with SMTP id 2adb3069b0e04-5a4172e2901mr6141302e87.38.1776762116288;
        Tue, 21 Apr 2026 02:01:56 -0700 (PDT)
Message-ID: <a64c0c52-fe42-42bb-b93c-470ab9c25413@gmail.com>
Date: Tue, 21 Apr 2026 11:01:54 +0200
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
From: Oleksii Kurochko <oleksii.kurochko@gmail.com>
Subject: Re: [PATCH v4] xen/riscv: allow Xen to use SSTC while hiding it from
 guests
To: Jan Beulich <jbeulich@suse.com>
Cc: Romain Caritey <Romain.Caritey@microchip.com>,
 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.pau@citrix.com>,
 Stefano Stabellini <sstabellini@kernel.org>, xen-devel@lists.xenproject.org
References: <5285075f24cd2a2c5566b2a7724198d34aab51c5.1776354739.git.oleksii.kurochko@gmail.com>
 <405b5653-4df9-4ee0-b6e2-ba7c4a5efbba@suse.com>
Content-Language: en-US
In-Reply-To: <405b5653-4df9-4ee0-b6e2-ba7c4a5efbba@suse.com>
Content-Type: text/plain; charset=UTF-8; format=flowed
Content-Transfer-Encoding: 8bit
X-purgate-ID: tlsNG-ebf023/1776762117-291763FF-EEAEDB64/10/73395122804
X-purgate-type: spam
X-purgate-size: 3327



On 4/20/26 9:56 AM, Jan Beulich wrote:
> On 17.04.2026 09:24, Oleksii Kurochko wrote:
>> --- a/xen/arch/riscv/include/asm/csr.h
>> +++ b/xen/arch/riscv/include/asm/csr.h
>> @@ -32,6 +32,20 @@
>>                              : "memory" );                        \
>>   })
>>   
>> +#ifdef CONFIG_RISCV_32
>> +# define __csr_write32h(csr, val) csr_write(csr ## H, (val) >> 32)
>> +#else
>> +# define __csr_write32h(csr, val) ((void)(csr), (void)(val))
> 
> In order to be able to spot issues in 64-bit builds, how about
> 
> # define __csr_write32h(csr, val) ((void)csr ## H, (void)(val))
> 
> ?

But this will cause a build issue in 64-bit builds.

csr_write64(CSR_STIMECMP, ...)
   └─ __csr_write32h(csr, _v)   ← csr is NOT ##-adjacent here
                                   so preprocessor expands it FIRST
                                   CSR_STIMECMP → 0x14D
        └─ (void)csr ## H       ← csr is already 0x14D here
                                   0x14D ## H → 0x14DH  ERROR

Probably, it would be better to do in the following way:

#ifdef CONFIG_RISCV_32
#define csr_write64(csr, val)       \
({                                  \
     uint64_t v_ = (val);            \
     csr_write(csr, v_);             \
     csr_write(csr ## H, v_ >> 32);  \
})
#else
#define csr_write64(csr, val)       \
({                                  \
     uint64_t v_ = (val);            \
     csr_write(csr, v_);             \
})
#endif

Am I missing something?

> 
> Apart from this, no matter that it was Andrew to suggest this, I'd like to
> (once again) point out that identifiers starting with two underscores are
> reserved. I don't see why a single underscore wouldn't do here. Or
> alternatively csr__write32h().

I will apply your suggestion.

> 
>> @@ -279,8 +299,6 @@ static int cf_check sbi_set_timer_v01(uint64_t stime_value)
>>       return sbi_err_map_xen_errno(ret.error);
>>   }
>>   
>> -int (* __ro_after_init sbi_set_timer)(uint64_t stime_value) = sbi_set_timer_v01;
>> -
>>   int sbi_remote_sfence_vma(const cpumask_t *cpu_mask, vaddr_t start,
>>                             size_t size)
>>   {
>> @@ -360,10 +378,9 @@ int __init sbi_init(void)
>>           }
>>   
>>           if ( sbi_probe_extension(SBI_EXT_TIME) > 0 )
>> -        {
>> -            sbi_set_timer = sbi_set_timer_v02;
>> -            dprintk(XENLOG_INFO, "SBI v0.2 TIME extension detected\n");
>> -        }
>> +            set_xen_timer = sbi_set_timer_v02;
>> +        else
>> +            set_xen_timer = sbi_set_timer_v01;
>>       }
> 
> Sadly this isn't quite equivalent to sbi_set_timer having had an initializer.
> I would have wanted to suggest to use a constructor function, but we call
> init_constructors() even later than do_initcalls() on both Arm and x86 (we
> don't call the latter at all on RISC-V so far). Might it be necessary to
> introduce sbi_early_init(), called very early during boot? Else how do you
> guarantee no accidental use of the variable before it is first set?

I thought about an introduction of sbi_early_init() but then decided 
that set_xen_timer() won't be used earlier than at lest timer_init() + 
local_irq_enable().
Also, sbi_init() is executed pretty early.

Thanks.


~ Oleksii


From xen-devel-bounces@lists.xenproject.org Tue Apr 21 09:11:01 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 21 Apr 2026 09:11:01 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1288709.1568943 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wF78C-0007YU-9e; Tue, 21 Apr 2026 09:10:56 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1288709.1568943; Tue, 21 Apr 2026 09:10: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 1wF78C-0007YN-6v; Tue, 21 Apr 2026 09:10:56 +0000
Received: by outflank-mailman (input) for mailman id 1288709;
 Tue, 21 Apr 2026 09:10:54 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <jbeulich@suse.com>) id 1wF78A-0007YF-57
 for xen-devel@lists.xenproject.org; Tue, 21 Apr 2026 09:10:54 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wF789-00AN61-3a
 for xen-devel@lists.xenproject.org; Tue, 21 Apr 2026 11:10:53 +0200
Received: from [10.42.69.7] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <jbeulich@suse.com>)
 id 69e73f15-2eae-0a2a0a5409dd-0a2a4507ca0c-24
 for <xen-devel@lists.xenproject.org>; Tue, 21 Apr 2026 11:10:52 +0200
Received: from [209.85.221.54] (helo=mail-wr1-f54.google.com)
 by tlsNG-ef75cf.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.1)
 (envelope-from <jbeulich@suse.com>)
 id 69e73f1c-229c-0a2a45070019-d155dd36a406-3
 for <xen-devel@lists.xenproject.org>; Tue, 21 Apr 2026 11:10:52 +0200
Received: by mail-wr1-f54.google.com with SMTP id
 ffacd0b85a97d-43d734223e4so2710237f8f.0
 for <xen-devel@lists.xenproject.org>; Tue, 21 Apr 2026 02:10:52 -0700 (PDT)
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-43fe4cc07bbsm38568533f8f.11.2026.04.21.02.10.51
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Tue, 21 Apr 2026 02:10:52 -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=google header.d=suse.com header.i="@suse.com" header.h="Content-Transfer-Encoding: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=1776762652; x=1777367452; darn=lists.xenproject.org;
        h=content-transfer-encoding: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;
        bh=Euiv82u/j4dTnV6Kcv393t9BwDlJM6rvFoaEMwmj2C4=;
        b=LxzbUH4Erb795sRtp9LvNsb0BrQbrdl52klBYjiKXXOTmwGaR+78sunOIR/YY48xAP
         RljheIZw1L3w9e5PVtwT+iKnT5XBhFrSa1uxNoX57oOrrqXW/Yl7ImqlLsLyOd2qO6mo
         Sg7Sw1YnCzQwzy7lURTz6+rD56LwECveUtxZn4m3kpVSaL9YvNqM0KlR8hjnaROmMEBu
         a4wEKedT8cDTDhX/aTWddJ9PXXEDOutTH7zvD+d/g/iQNHoSbSL8LTU+gdV5miIfSixU
         Q6dBjh/dIEDbobKbbaRuZ0foS3OIeEWu5X3g+UCfyQvvwIXFU3sJyDFVmt2jkYu8Un3s
         22ug==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20251104; t=1776762652; x=1777367452;
        h=content-transfer-encoding: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;
        bh=Euiv82u/j4dTnV6Kcv393t9BwDlJM6rvFoaEMwmj2C4=;
        b=ptdcZPbP4E+wGXLEt2vF+uR45LUDSA0X3CHo/5+GKDKh3lhc4D7rFcsqYdVhp+Oxwf
         b2sy31YuvkyiY4mwVHkVxdGPCdBRKBkWTfcicuVrqS9w+MtTx0pFcmlhP8KPNKNE1+ww
         DRccZbd64D7Lfqb6UOavwi0hESZwQ9dKAWO8LebwSXhWXx1umt3FVevJVwChnGpDi3ss
         OOyoG3kufE5Qcuin4vvrQvT5bgu6uXm0qSwg4wYdyN20uwZfJVQ9nyJsZ+79G5EWVzZF
         ZqeWdg8LS5my+lb9GrNmVz3eXOdCX8QfnHHFeQLP1Zw9PMCfSDixYU0v584nT4VfQJRV
         afXw==
X-Forwarded-Encrypted: i=1; AFNElJ9hyUednLg/IOu6BzeKQ8JM26knhwKN/orAMh6Z1egqCx6R+6ciCyKrDKIfYcKEIlkvFDERDtOSI7I=@lists.xenproject.org
X-Gm-Message-State: AOJu0YyuHmlT4YaBgQdYGMJcMO6PXL2JLEsGScECOhYYSv5F+N4pLwA4
	OeW39VREC0dCtyj0BbvXTlt7CadSVpOEAhN72Cw5qjtoCTfph0O3m44Tm8yf9wSayQ==
X-Gm-Gg: AeBDiev6iHJ3xKKu3VE4SwOmbRq3gFnEQC9xr7ND7cTrR0KDu5oQc10QSK+Aybu48ph
	FXf5DDopESpXbuPkpVNuBi6ad5QWR/ONlHTUuyTholb9ltZHQ/M51ZG0f1o7Ns9G6ZuXbo614w4
	kxUJtfl1cjtIXIcDQEWD/oB14Xukc7xsnrjmygCa52alMBixCePkJ4RvfQgZmtnsADHHtukVJrw
	92scmChqM6prgdyNEGXC5qYe5lmTihdgfAOdX88JdCdiyP5kffdnPqzzKsWfFjUVU3lm45A4LfY
	rH23lis/Bbq6tIkJSIDj4hZ0Wf7jJeGh56uKmg9nvBdWMA+DlF1PKI/LGXx9qERY+4uqm372oMt
	BU2JO36qKsuoJrJdnfC97VBtTmjL1aa7dCsRLago3VXlfX7KGmBf3VcVWItaBfNklcm3Eh3Hq6A
	egsVg/4whOqTLT1GjnSWdmgoMoJ6h5tKzNzVad0JDABjkfr2P2a83rqI4zKaiNrA4+8yrMhBA+e
	Yhp23S4+Rqg6XeSFbp5KINlBDcfIQXmbGi1
X-Received: by 2002:a05:6000:2d8a:b0:439:adc3:f0e7 with SMTP id ffacd0b85a97d-43fe4043f54mr17293659f8f.9.1776762652295;
        Tue, 21 Apr 2026 02:10:52 -0700 (PDT)
Message-ID: <306c8133-0bee-4d07-be34-5d201a232b04@suse.com>
Date: Tue, 21 Apr 2026 11:10:51 +0200
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH v4] xen/riscv: allow Xen to use SSTC while hiding it from
 guests
To: Oleksii Kurochko <oleksii.kurochko@gmail.com>
Cc: Romain Caritey <Romain.Caritey@microchip.com>,
 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.pau@citrix.com>,
 Stefano Stabellini <sstabellini@kernel.org>, xen-devel@lists.xenproject.org
References: <5285075f24cd2a2c5566b2a7724198d34aab51c5.1776354739.git.oleksii.kurochko@gmail.com>
 <405b5653-4df9-4ee0-b6e2-ba7c4a5efbba@suse.com>
 <a64c0c52-fe42-42bb-b93c-470ab9c25413@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: <a64c0c52-fe42-42bb-b93c-470ab9c25413@gmail.com>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
X-purgate-ID: tlsNG-ef75cf/1776762652-ADB68C48-3717CC09/0/0
X-purgate-type: clean
X-purgate-size: 3707

On 21.04.2026 11:01, Oleksii Kurochko wrote:
> On 4/20/26 9:56 AM, Jan Beulich wrote:
>> On 17.04.2026 09:24, Oleksii Kurochko wrote:
>>> --- a/xen/arch/riscv/include/asm/csr.h
>>> +++ b/xen/arch/riscv/include/asm/csr.h
>>> @@ -32,6 +32,20 @@
>>>                              : "memory" );                        \
>>>   })
>>>   
>>> +#ifdef CONFIG_RISCV_32
>>> +# define __csr_write32h(csr, val) csr_write(csr ## H, (val) >> 32)

In my reply I followed this. If this compiled, then ...

>>> +#else
>>> +# define __csr_write32h(csr, val) ((void)(csr), (void)(val))
>>
>> In order to be able to spot issues in 64-bit builds, how about
>>
>> # define __csr_write32h(csr, val) ((void)csr ## H, (void)(val))
>>
>> ?

... aiui this would compile as well. Looks like the RV32 case then is in
need of adjustment as well.

> But this will cause a build issue in 64-bit builds.
> 
> csr_write64(CSR_STIMECMP, ...)
>    └─ __csr_write32h(csr, _v)   ← csr is NOT ##-adjacent here
>                                    so preprocessor expands it FIRST
>                                    CSR_STIMECMP → 0x14D
>         └─ (void)csr ## H       ← csr is already 0x14D here
>                                    0x14D ## H → 0x14DH  ERROR
> 
> Probably, it would be better to do in the following way:
> 
> #ifdef CONFIG_RISCV_32
> #define csr_write64(csr, val)       \
> ({                                  \
>      uint64_t v_ = (val);            \
>      csr_write(csr, v_);             \
>      csr_write(csr ## H, v_ >> 32);  \
> })
> #else
> #define csr_write64(csr, val)       \
> ({                                  \
>      uint64_t v_ = (val);            \
>      csr_write(csr, v_);             \
> })
> #endif

E.g. like this, albeit in the RV64 case the local v_ isn't needed. Instead,
again to be able to spot issues in RV64 builds, (void)csr ## H may want
adding.

A clear downside to all of this is that this helper can only be used with
CSR_* constants, not with runtime-calculated CSR numbers.

>>> @@ -279,8 +299,6 @@ static int cf_check sbi_set_timer_v01(uint64_t stime_value)
>>>       return sbi_err_map_xen_errno(ret.error);
>>>   }
>>>   
>>> -int (* __ro_after_init sbi_set_timer)(uint64_t stime_value) = sbi_set_timer_v01;
>>> -
>>>   int sbi_remote_sfence_vma(const cpumask_t *cpu_mask, vaddr_t start,
>>>                             size_t size)
>>>   {
>>> @@ -360,10 +378,9 @@ int __init sbi_init(void)
>>>           }
>>>   
>>>           if ( sbi_probe_extension(SBI_EXT_TIME) > 0 )
>>> -        {
>>> -            sbi_set_timer = sbi_set_timer_v02;
>>> -            dprintk(XENLOG_INFO, "SBI v0.2 TIME extension detected\n");
>>> -        }
>>> +            set_xen_timer = sbi_set_timer_v02;
>>> +        else
>>> +            set_xen_timer = sbi_set_timer_v01;
>>>       }
>>
>> Sadly this isn't quite equivalent to sbi_set_timer having had an initializer.
>> I would have wanted to suggest to use a constructor function, but we call
>> init_constructors() even later than do_initcalls() on both Arm and x86 (we
>> don't call the latter at all on RISC-V so far). Might it be necessary to
>> introduce sbi_early_init(), called very early during boot? Else how do you
>> guarantee no accidental use of the variable before it is first set?
> 
> I thought about an introduction of sbi_early_init() but then decided 
> that set_xen_timer() won't be used earlier than at lest timer_init() + 
> local_irq_enable().
> Also, sbi_init() is executed pretty early.

Many more additions to setup.c are to be expected. Are you sure hardly any will
go ahead of the call to sbi_init()?

Jan


From xen-devel-bounces@lists.xenproject.org Tue Apr 21 09:20:19 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 21 Apr 2026 09:20:19 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1288719.1568951 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wF7HC-0001Df-3a; Tue, 21 Apr 2026 09:20:14 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1288719.1568951; Tue, 21 Apr 2026 09:20: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 1wF7HC-0001DY-10; Tue, 21 Apr 2026 09:20:14 +0000
Received: by outflank-mailman (input) for mailman id 1288719;
 Tue, 21 Apr 2026 09:20:13 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <jbeulich@suse.com>) id 1wF7HA-0001DM-UW
 for xen-devel@lists.xenproject.org; Tue, 21 Apr 2026 09:20:13 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wF7HA-006oFz-7B
 for xen-devel@lists.xenproject.org; Tue, 21 Apr 2026 11:20:12 +0200
Received: from [10.42.69.5] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <jbeulich@suse.com>)
 id 69e74148-bab6-0a2a0a5309dd-0a2a4505c0e2-24
 for <xen-devel@lists.xenproject.org>; Tue, 21 Apr 2026 11:20:11 +0200
Received: from [209.85.221.52] (helo=mail-wr1-f52.google.com)
 by tlsNG-c201ff.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.1)
 (envelope-from <jbeulich@suse.com>)
 id 69e7414b-aaa8-0a2a45050019-d155dd34c053-3
 for <xen-devel@lists.xenproject.org>; Tue, 21 Apr 2026 11:20:11 +0200
Received: by mail-wr1-f52.google.com with SMTP id
 ffacd0b85a97d-43d7badbd7dso1878742f8f.2
 for <xen-devel@lists.xenproject.org>; Tue, 21 Apr 2026 02:20:11 -0700 (PDT)
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-43fe4cc0f31sm36032437f8f.12.2026.04.21.02.20.10
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Tue, 21 Apr 2026 02:20:10 -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=google header.d=suse.com header.i="@suse.com" header.h="Content-Transfer-Encoding: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=1776763211; x=1777368011; darn=lists.xenproject.org;
        h=content-transfer-encoding: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;
        bh=i6l9gYu7gHPdw1kCWuemUJlGY5BoSwxWKZbYuCjWyZs=;
        b=c5XMhJZ5VE8DsN4IwiliuObOQpUxaKAXyB/T0r6k5/cxjYjcFficFZwDbAh+GrYTx+
         33+1ghwzpdNsOG2IjcofBmgE7rG5urOhivbYiJU1tVWugKXaqE9HZS1fjUk856tLEybd
         BkfdBMNWXtjWRZ/1YqN97pA2MmM7cK1IkzhoLX8s6b+cZ6FwEW5TQLvHS4VIpJJazBTK
         FXmFl21GbuXVFMvcojdpskppPpBes4FL7omOd9eRcA/u2j2d3ZCSW6tHRR0Hysat9SMg
         1PQiAD0yk5MZjLpDrsf5C/m5M092DDC9FGnCjMzwfea1UuqciL8G/0IJqUuPZdSFOrfK
         gSbw==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20251104; t=1776763211; x=1777368011;
        h=content-transfer-encoding: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;
        bh=i6l9gYu7gHPdw1kCWuemUJlGY5BoSwxWKZbYuCjWyZs=;
        b=pmMrrp2Z95blGR9vI8pbboeC+pNJOiOSPzNADPzyztJmP5JGPMF1fSVb2h1s3E5xY9
         kdJrXHnm4JrtmxsdNT/v46aYteoafa2xgz6xF+tMO36AwfdiHZmfwEPnH5cfIfWPzbzn
         WtGNcskTLptBAvyMWyBbGJz2Nf939WFWHr10ljaH6rqLN++1keJUvIZryj784QEv4QzY
         f134T6RjUI7BQYEtdBhfeefZ2bbkNSAIFKULEWAYhxGXxltD8svJ7jiRy6QGVuq4VEoc
         /m2P0D7Wwhcsygig5fMKM89S7nnVdJY113b7XwWlYxvGcj2d6tlOG1zO0VqZdBA7wyaU
         yLtA==
X-Forwarded-Encrypted: i=1; AFNElJ9qNzkFv9VyJNMxGJNXq5GrGoUS/S8408tEw1fSftN1ErFJt6Fc20sATzkigJFy8fW/Qp2GBf57Qr0=@lists.xenproject.org
X-Gm-Message-State: AOJu0YzRueHrD35xSaXDH4CbOXEWwGlZwWfhr3KLKjUag5ir3OdUkVbt
	v0Hwl31blarA2hKoorC6GU9BJFPuc/4Y2Cib5UYeztOwGUvzc8Tn4cnZK/8X3mTn5g==
X-Gm-Gg: AeBDieuGr7WFkNONQCBRkhu6I1paIR63ugJYUa/pSGH1hv2aUlnoHRu5k/BLdIxP+Xc
	zeHs56/NFUXQ11fM/XFMzej1jLl7C8XKL1ZzIq80TPtPE6jhXjohXFevTH9VQ41RQ6GihLj4SPq
	fqRqRZfUtsDcH8onhr2mtVi7xwArpSY5eJxb9qRAyhxkIbwC8n1xdA4TtZzyuUK1DTgZ3lEHegW
	e6WIctk5jsPA4/DlwpOIeBt7aERHLYoNCCW6Z7LAKnWlvFRug3wbU0HA1H3EDGHGqfaZ7jEDNFp
	iYmUSCjkpCkPuR56Iwj8fNR3SAAnBAgDMbHFjuFfQG7cv49WGnzMMdT3wa8UODUdOZmWr3k8k6O
	wWICdvIedyCQwvhWodHehAEgJ3kISmlSUSkQncwUx0dqFyjMU7dr7HUOn1RvbuTVJSZlMzRl1Ce
	pZ/neKkdoUHJqMtuYI4ajVhDzvhoyeSqgKJSf5Lp2eCD0uNc3VB/fsGpjUOSHthamrYu7OgSUzT
	7oR8T0zTd3csj+SIkNgQmbenMzZ5gmjmDxF
X-Received: by 2002:a05:6000:1ac7:b0:43c:ff58:35c2 with SMTP id ffacd0b85a97d-43fe3dc5eaemr27167215f8f.20.1776763211244;
        Tue, 21 Apr 2026 02:20:11 -0700 (PDT)
Message-ID: <702045f6-a342-4662-9eaa-76f7be1df8fa@suse.com>
Date: Tue, 21 Apr 2026 11:20:09 +0200
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH v3 07/12] xen: introduce domain-layout.h with common
 domain_use_host_layout()
To: Oleksii Kurochko <oleksii.kurochko@gmail.com>
Cc: Romain Caritey <Romain.Caritey@microchip.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.pau@citrix.com>,
 xen-devel@lists.xenproject.org
References: <cover.1775836193.git.oleksii.kurochko@gmail.com>
 <2057380b431df202adedf852ad492dd0f156f863.1775836193.git.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: <2057380b431df202adedf852ad492dd0f156f863.1775836193.git.oleksii.kurochko@gmail.com>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 7bit
X-purgate-ID: tlsNG-c201ff/1776763211-E2B68443-8D69B6B3/0/0
X-purgate-type: clean
X-purgate-size: 1256

On 10.04.2026 17:54, Oleksii Kurochko wrote:
> --- /dev/null
> +++ b/xen/include/xen/domain-layout.h
> @@ -0,0 +1,28 @@
> +#ifndef __XEN_DOMAIN_LAYOUT_H__
> +#define __XEN_DOMAIN_LAYOUT_H__
> +
> +#include <xen/domain.h>
> +#include <xen/paging.h>
> +#include <xen/sched.h>
> +
> +/*
> + * Is a domain using the host memory layout?
> + *
> + * domain_use_host_layout() is always False for PV guests.
> + *
> + * Direct-mapped domains (autotranslated domains with memory allocated
> + * contiguously and mapped 1:1 so that GFN == MFN) are always using the
> + * host memory layout to avoid address clashes.

What is "to avoid address clashes" about? If GFN == MFN, how could there
be clashes?

> + * The hardware domain will use the host layout (regardless of
> + * direct-mapped) because some OS may rely on specific address ranges
> + * for the devices. PV Dom0, like any other PV guests, has
> + * domain_use_host_layout() returning False.

This last sentence is somewhat redundant and somewhat in conflict with
what is said further up. If you did s/guests/domains (including Dom0)/
there, imo this sentence would best be dropped from down here.

With these adjustments:
Acked-by: Jan Beulich <jbeulich@suse.com>

Jan


From xen-devel-bounces@lists.xenproject.org Tue Apr 21 09:33:48 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 21 Apr 2026 09:33:48 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1288728.1568961 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wF7UD-0003Pk-6q; Tue, 21 Apr 2026 09:33:41 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1288728.1568961; Tue, 21 Apr 2026 09:33: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 1wF7UD-0003Pd-3q; Tue, 21 Apr 2026 09:33:41 +0000
Received: by outflank-mailman (input) for mailman id 1288728;
 Tue, 21 Apr 2026 09:33:39 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92) id 1wF7UB-0003PV-Oi
 for xen-devel@lists.xenproject.org; Tue, 21 Apr 2026 09:33:39 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wF7UB-0034d9-5V
 for xen-devel@lists.xenproject.org; Tue, 21 Apr 2026 11:33:39 +0200
Received: from [10.42.69.11] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <oleksii.kurochko@gmail.com>)
 id 69e7446f-5cb7-0a2a0a5109dd-0a2a450b8fe6-16
 for <xen-devel@lists.xenproject.org>; Tue, 21 Apr 2026 11:33:39 +0200
Received: from [209.85.167.47] (helo=mail-lf1-f47.google.com)
 by tlsNG-42698a.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.1)
 (envelope-from <oleksii.kurochko@gmail.com>)
 id 69e74472-212f-0a2a450b0019-d155a72fa9a7-3
 for <xen-devel@lists.xenproject.org>; Tue, 21 Apr 2026 11:33:39 +0200
Received: by mail-lf1-f47.google.com with SMTP id
 2adb3069b0e04-5a413f83226so4508397e87.1
 for <xen-devel@lists.xenproject.org>; Tue, 21 Apr 2026 02:33:38 -0700 (PDT)
Received: from [192.168.1.6] (user-109-243-69-121.play-internet.pl.
 [109.243.69.121]) by smtp.gmail.com with ESMTPSA id
 38308e7fff4ca-38ecb75b033sm28724821fa.39.2026.04.21.02.33.37
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Tue, 21 Apr 2026 02:33:37 -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=20251104 header.d=gmail.com header.i="@gmail.com" header.h="Content-Transfer-Encoding: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=20251104; t=1776764018; x=1777368818; darn=lists.xenproject.org;
        h=content-transfer-encoding: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;
        bh=h/Q1CCkzG9TmWvXiP1mwHDKExLju5Rm78udlsH+vuLQ=;
        b=g8r55VmN7lhkqeGQrP9lCSbEVkScYECBMS7UX4e1LAqPmNLH5pvcH0B0ReO/a6sSP9
         wHbWqZlFDBwbxygZSKlt16EmZelxg7nKlNQ60RvYqBmdkjwuxf7kPDYWGRMosKHrToBv
         Z/jXkCBG48UeSac0D8ucuCJKnXn51iSdcf2vhoKPkVJQNkhfdcrKsjwvI0t4aIBP+G1Z
         yfnpB9nN6fYm5BplFciMGztA9ItgW9H9gei6RUdTHyO5T24SMRIkLjxUAQ6j9UKoNfV0
         z+wtvo2VC6S6AwuTYFoDWolxcZHC9gXn86LbI0bQZ9XtXas6MA2SU1iKkpRUFr2zq2OT
         Vz4A==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20251104; t=1776764018; x=1777368818;
        h=content-transfer-encoding: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;
        bh=h/Q1CCkzG9TmWvXiP1mwHDKExLju5Rm78udlsH+vuLQ=;
        b=fcGfNsao4jd+tzg13OpmMz8bEqx1HpYqNs/XE38GRh0BOcA8d2D5rJGFFS8kZ7RIYc
         LoXpoasVVtopAYT9PbJIPwNHxM2jrobMZ3AUwejJZNF7y2gCpzHM37sNey/MSKmNvy2g
         QfmyOR/N2khrNoBhuxcJXguJLOvi9hB6wqkC26yTfUgBQb+kWc0k115jocCFQRcrwIWR
         BwGzl3CQ6dcqQO9HR+ew9v9AR+FTiK/Eye/4A2b5LuKXnAnNTKr6jeJhp6NXCObe9D+c
         x5pSYnLouHbzEOW9lfQgfhwXcaR/xY/oILieIyXYyDGa4lkioz46diV+RH86X5s1EEZp
         NPAg==
X-Forwarded-Encrypted: i=1; AFNElJ9qWE2QLGUaPVGXI7QJnyhev2HuYlBX3qvAUJ6A5lxx8vlFXaGqt2VX4OeO+eoXLVNWqJUjpHHsvkw=@lists.xenproject.org
X-Gm-Message-State: AOJu0YwKCQCtb9lUaUXEn1zqLP2gFhRILcwhj5A3sfg4ExZIDVmpm1hs
	1NHwd7oUdskWkCXJ50LNSpU83KFWIZUgkRsVguxrbw2EM3fHdu1tCE4B
X-Gm-Gg: AeBDieuzhTI9N9NR5iQJTqBKAISmzhTBBAHf2FvEsLthDG2mluF7V7x4nCuJ8IAMmaF
	oSNnpHZVJ5N/CpBLb+dNB+P6eLQ24D1ZdyzsuvQVupjFLo73TyBfrv+tFsSammpwo6A0SzYaTNG
	2zgTgzlVVxnhYsqB4FhHGDN796xx5bEClsZS9k1RTcFmWXoqh+xkFYPcCf+b8BBZmtLHcyzwR0K
	dpUAOv/p5RH/07D40gSuxXv2qNmi0cuA5X6ui9VinBR7DhCdX3rDTelbG+GeryBwWvJJ8AHTy47
	1ZlFSB8Gv8pUZGn97rYXBT5Vx4M/cX37bxUxyD8QcCbd8515yH8eGAqJe4UFSoPX/p+FSR0oL6T
	tsLNnbeIKvsZB+kvN36Q2Y/xMnlKo2ASZujFT4x5Epr4+O1w6Omd/p45KnmdMq+PXQzBbX/aBPG
	QNwVehPHuJc72ZGylc3od+AqE7Ux1QHUpjnujLSYcjtqLbsAG/dQoW7BYBrjMjTzmDZBnX9mjrD
	KpsmANTgk6Tkw==
X-Received: by 2002:a05:6512:3095:b0:5a2:b57d:950d with SMTP id 2adb3069b0e04-5a41716da5fmr4985540e87.5.1776764018079;
        Tue, 21 Apr 2026 02:33:38 -0700 (PDT)
Message-ID: <8f93b170-da98-4105-ba83-a0f8421e672b@gmail.com>
Date: Tue, 21 Apr 2026 11:33:36 +0200
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH v4] xen/riscv: allow Xen to use SSTC while hiding it from
 guests
To: Jan Beulich <jbeulich@suse.com>
Cc: Romain Caritey <Romain.Caritey@microchip.com>,
 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.pau@citrix.com>,
 Stefano Stabellini <sstabellini@kernel.org>, xen-devel@lists.xenproject.org
References: <5285075f24cd2a2c5566b2a7724198d34aab51c5.1776354739.git.oleksii.kurochko@gmail.com>
 <405b5653-4df9-4ee0-b6e2-ba7c4a5efbba@suse.com>
 <a64c0c52-fe42-42bb-b93c-470ab9c25413@gmail.com>
 <306c8133-0bee-4d07-be34-5d201a232b04@suse.com>
Content-Language: en-US
From: Oleksii Kurochko <oleksii.kurochko@gmail.com>
In-Reply-To: <306c8133-0bee-4d07-be34-5d201a232b04@suse.com>
Content-Type: text/plain; charset=UTF-8; format=flowed
Content-Transfer-Encoding: 8bit
X-purgate-ID: tlsNG-42698a/1776764019-7CD67F3B-12857635/10/73395122804
X-purgate-type: spam
X-purgate-size: 4993



On 4/21/26 11:10 AM, Jan Beulich wrote:
> On 21.04.2026 11:01, Oleksii Kurochko wrote:
>> On 4/20/26 9:56 AM, Jan Beulich wrote:
>>> On 17.04.2026 09:24, Oleksii Kurochko wrote:
>>>> --- a/xen/arch/riscv/include/asm/csr.h
>>>> +++ b/xen/arch/riscv/include/asm/csr.h
>>>> @@ -32,6 +32,20 @@
>>>>                               : "memory" );                        \
>>>>    })
>>>>    
>>>> +#ifdef CONFIG_RISCV_32
>>>> +# define __csr_write32h(csr, val) csr_write(csr ## H, (val) >> 32)
> 
> In my reply I followed this. If this compiled, then ...
> 
>>>> +#else
>>>> +# define __csr_write32h(csr, val) ((void)(csr), (void)(val))
>>>
>>> In order to be able to spot issues in 64-bit builds, how about
>>>
>>> # define __csr_write32h(csr, val) ((void)csr ## H, (void)(val))
>>>
>>> ?
> 
> ... aiui this would compile as well. Looks like the RV32 case then is in
> need of adjustment as well.
> 
>> But this will cause a build issue in 64-bit builds.
>>
>> csr_write64(CSR_STIMECMP, ...)
>>     └─ __csr_write32h(csr, _v)   ← csr is NOT ##-adjacent here
>>                                     so preprocessor expands it FIRST
>>                                     CSR_STIMECMP → 0x14D
>>          └─ (void)csr ## H       ← csr is already 0x14D here
>>                                     0x14D ## H → 0x14DH  ERROR
>>
>> Probably, it would be better to do in the following way:
>>
>> #ifdef CONFIG_RISCV_32
>> #define csr_write64(csr, val)       \
>> ({                                  \
>>       uint64_t v_ = (val);            \
>>       csr_write(csr, v_);             \
>>       csr_write(csr ## H, v_ >> 32);  \
>> })
>> #else
>> #define csr_write64(csr, val)       \
>> ({                                  \
>>       uint64_t v_ = (val);            \
>>       csr_write(csr, v_);             \
>> })
>> #endif
> 
> E.g. like this, albeit in the RV64 case the local v_ isn't needed. Instead,
> again to be able to spot issues in RV64 builds, (void)csr ## H may want
> adding.
> 
> A clear downside to all of this is that this helper can only be used with
> CSR_* constants, not with runtime-calculated CSR numbers.

Yes, but it isn't critical downside as I don't see cases where it will 
be useful to have runtime-calculated CSR numbers.

> 
>>>> @@ -279,8 +299,6 @@ static int cf_check sbi_set_timer_v01(uint64_t stime_value)
>>>>        return sbi_err_map_xen_errno(ret.error);
>>>>    }
>>>>    
>>>> -int (* __ro_after_init sbi_set_timer)(uint64_t stime_value) = sbi_set_timer_v01;
>>>> -
>>>>    int sbi_remote_sfence_vma(const cpumask_t *cpu_mask, vaddr_t start,
>>>>                              size_t size)
>>>>    {
>>>> @@ -360,10 +378,9 @@ int __init sbi_init(void)
>>>>            }
>>>>    
>>>>            if ( sbi_probe_extension(SBI_EXT_TIME) > 0 )
>>>> -        {
>>>> -            sbi_set_timer = sbi_set_timer_v02;
>>>> -            dprintk(XENLOG_INFO, "SBI v0.2 TIME extension detected\n");
>>>> -        }
>>>> +            set_xen_timer = sbi_set_timer_v02;
>>>> +        else
>>>> +            set_xen_timer = sbi_set_timer_v01;
>>>>        }
>>>
>>> Sadly this isn't quite equivalent to sbi_set_timer having had an initializer.
>>> I would have wanted to suggest to use a constructor function, but we call
>>> init_constructors() even later than do_initcalls() on both Arm and x86 (we
>>> don't call the latter at all on RISC-V so far). Might it be necessary to
>>> introduce sbi_early_init(), called very early during boot? Else how do you
>>> guarantee no accidental use of the variable before it is first set?
>>
>> I thought about an introduction of sbi_early_init() but then decided
>> that set_xen_timer() won't be used earlier than at lest timer_init() +
>> local_irq_enable().
>> Also, sbi_init() is executed pretty early.
> 
> Many more additions to setup.c are to be expected. Are you sure hardly any will
> go ahead of the call to sbi_init()?

Looking at the current state, I don't see something new what will added 
before sbi_init() except percpu_init_areas().

I am okay to introduce sbi_early_init() if it will be really better:

--- a/xen/arch/riscv/sbi.c
+++ b/xen/arch/riscv/sbi.c
@@ -387,3 +387,8 @@ int __init sbi_init(void)

      return 0;
  }
+
+void __init sbi_early_init(void)
+{
+    set_xen_timer = sbi_set_timer_v01;
+}
diff --git a/xen/arch/riscv/setup.c b/xen/arch/riscv/setup.c
index 56a0907a855f..b187a84cd28d 100644
--- a/xen/arch/riscv/setup.c
+++ b/xen/arch/riscv/setup.c
@@ -78,6 +78,8 @@ void __init noreturn start_xen(unsigned long bootcpu_id,
      const char *cmdline;
      size_t fdt_size;

+    sbi_early_init();

But it looks to me that is fine to have what we have now as even someone 
will try to use set_xen_timer earlier a trap will occur and thereby it 
will be need to put the code which start to use set_xen_timer after 
sbi_init().

Best regards,
  Oleksii


From xen-devel-bounces@lists.xenproject.org Tue Apr 21 09:39:19 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 21 Apr 2026 09:39:19 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1288739.1568969 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wF7ZZ-0004Tu-SU; Tue, 21 Apr 2026 09:39:13 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1288739.1568969; Tue, 21 Apr 2026 09:39: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 1wF7ZZ-0004Tn-Oz; Tue, 21 Apr 2026 09:39:13 +0000
Received: by outflank-mailman (input) for mailman id 1288739;
 Tue, 21 Apr 2026 09:39:12 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <jbeulich@suse.com>) id 1wF7ZY-0004Th-D3
 for xen-devel@lists.xenproject.org; Tue, 21 Apr 2026 09:39:12 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wF7ZX-00DxJe-Ln
 for xen-devel@lists.xenproject.org; Tue, 21 Apr 2026 11:39:11 +0200
Received: from [10.42.69.9] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <jbeulich@suse.com>)
 id 69e745b4-5cb7-0a2a0a5109dd-0a2a4509b10e-38
 for <xen-devel@lists.xenproject.org>; Tue, 21 Apr 2026 11:39:11 +0200
Received: from [209.85.128.44] (helo=mail-wm1-f44.google.com)
 by tlsNG-bad1c0.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.1)
 (envelope-from <jbeulich@suse.com>)
 id 69e745bf-2497-0a2a45090019-d155802cc9ae-3
 for <xen-devel@lists.xenproject.org>; Tue, 21 Apr 2026 11:39:11 +0200
Received: by mail-wm1-f44.google.com with SMTP id
 5b1f17b1804b1-488b8bc6bc9so27910155e9.3
 for <xen-devel@lists.xenproject.org>; Tue, 21 Apr 2026 02:39:11 -0700 (PDT)
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-488fc0f8188sm375679595e9.2.2026.04.21.02.39.10
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Tue, 21 Apr 2026 02:39:10 -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=google header.d=suse.com header.i="@suse.com" header.h="Content-Transfer-Encoding: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=1776764351; x=1777369151; darn=lists.xenproject.org;
        h=content-transfer-encoding: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;
        bh=iymUx3bK2XOF5YcXmLuE+OU4mZCLpR/LykXQYUzRXsM=;
        b=c9WDw6wBw0dKV/6tNEobF7AS1y8N85cjWnlwnzfBfnqHLnExBlG07PnLdC2B8O4ach
         RUSx3+kZMvvSWGd7EKjJBNDSwnxoRd7Sj24s2+dzHcsBpUO5fT/3JWZxIIdwjxNRVviN
         oHsQh7Tn6vqCepubQnbpeqImuCIgcqfMsP1ViBzN0EZLqbXcb6cAsL4a5hIPidm/WhZc
         gF1mwNhi478cj/gz+HEpgpDmZTwVhxi5J42pDkPg3VUet40ipW//PjSXKUPRq51eUAwD
         GzxwY5ZOulGKhMIT+UQjUcVr9g+wVTl97iYIKnp8lXO0gwCH3p7q4MR5He72nwIaQ2zL
         7jBA==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20251104; t=1776764351; x=1777369151;
        h=content-transfer-encoding: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;
        bh=iymUx3bK2XOF5YcXmLuE+OU4mZCLpR/LykXQYUzRXsM=;
        b=MJhtyB9MnlZ36AheG26+diX6MlM5mKAFHOzfXsBfqZsCKzwLf/Y9GGUQEK7AfpdV5d
         LZjWui0n2p+W2VmG1tMxXQhlWFI7cYLd8Ulg9SDLJRD+8iI6KKwvuA8g3+138Nfmp1BP
         DzxaUeUIln/3JXGumv5Sgaz5u5Wiu4sGmH0aW5Vx/jsXqR9Z6GBYgw71invBiUCQugo3
         /3klKy7Yo90itKAzg35Q9bty29BbBQODaq7cIDJNffx/as47GDyX07dsK5B2EQ/dc+Y7
         9wbzZqKhVylOxdPMitE66uJTC9FUkQzVQOyEkMFg3LPt1lmvT1qU/cSe5Kn/Lht2F8/o
         YjOg==
X-Forwarded-Encrypted: i=1; AFNElJ9J4JfZdMr7Fq9auTEHgyXHQQmFlMNX4wRw+3amXK6paChH8aMgJjOPOANvwWoLIoHGbGxK+F+5ec4=@lists.xenproject.org
X-Gm-Message-State: AOJu0YxOMzkRBXEkPUBRgVApfRhBm9hwWp1sgj+5nfaqMyBFN9vpYNX4
	4+PLP6uD8ct6hTdu/5rC18Mbcf9mEfGAFtbNvu2iBaZ5ePKB0g84esKcSA28FsKTqg==
X-Gm-Gg: AeBDiev99Iy4vVBbSHoT6ip6Dd/RL95GyADZTQ/GkcxQg6SgqvBNrfzaHzzcjcdNjcN
	BRt16kq2fJNC3SfWfU+XWlmzEgml4uv1YO7eZjOT9IV8ctI9Twwb6HVpRZ5QQEkopKAD/blTSr0
	ZLQIOlfwCzGo7ufoztnhYloF/tctE74TZ9jHaaKmZyAQs5o0EVc1KPqBTeQTEOGmDMBwCi8EeYc
	n0NcZ4Gypw0L0D9G5+OhvTZ1yYU9iTWumhGNfOwFPXhIa/FxnHCoriKFLQe8cs/RAWI3feMLZUU
	R4V4tS3SVeqQLfStsZ/96uRpTTpKG9StfhRka2A0ybLhdbgO3BxxljFvqvnH1MjeFfQc8GF6hQA
	Rh670jJmCYR4TkEPl95BXQGwQybFTsMX+IBVB/D72Y4aXM8nhwJhJUSMMqECorHeC4JwIwAbU0a
	5kb6/YPfP/maR0HGFOyhXg0hv5BDCQWK4d5quY2cy27WK9kL9aZC5kbC2JlcZ4TZpZ0AVz0RnWF
	ezZS+RhqV6ad8RB+Mc8zgEq/g==
X-Received: by 2002:a05:600c:8b84:b0:480:1c69:9d36 with SMTP id 5b1f17b1804b1-488fb76e4aamr269663035e9.17.1776764350840;
        Tue, 21 Apr 2026 02:39:10 -0700 (PDT)
Message-ID: <d03f915e-8066-42dc-aac0-14ac6eb523f7@suse.com>
Date: Tue, 21 Apr 2026 11:39:09 +0200
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH v3 08/12] xen/riscv: rework G-stage mode handling
To: Oleksii Kurochko <oleksii.kurochko@gmail.com>
Cc: Romain Caritey <Romain.Caritey@microchip.com>,
 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.pau@citrix.com>,
 Stefano Stabellini <sstabellini@kernel.org>, xen-devel@lists.xenproject.org
References: <cover.1775836193.git.oleksii.kurochko@gmail.com>
 <94c914766171b732524d2d64c283e566595a4d22.1775836193.git.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: <94c914766171b732524d2d64c283e566595a4d22.1775836193.git.oleksii.kurochko@gmail.com>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 7bit
X-purgate-ID: tlsNG-bad1c0/1776764351-498B7A53-18EA1A27/0/0
X-purgate-type: clean
X-purgate-size: 3544

On 10.04.2026 17:54, Oleksii Kurochko wrote:
> --- a/xen/arch/riscv/p2m.c
> +++ b/xen/arch/riscv/p2m.c
> @@ -45,12 +45,27 @@ struct p2m_pte_ctx {
>      unsigned int level;          /* Paging level at which the PTE resides. */
>  };
>  
> -static struct gstage_mode_desc __ro_after_init max_gstage_mode = {
> -    .mode = HGATP_MODE_OFF,
> -    .paging_levels = 0,
> -    .name = "Bare",
> +/* Values should be sorted by ->mode in this array */
> +static const struct gstage_mode_desc modes[] = {

As before, I'm of the clear opinion that this is too generic an identifier
for use at file scope.

> @@ -331,8 +324,40 @@ static int p2m_alloc_root_table(struct p2m_domain *p2m)
>      return 0;
>  }
>  
> -int p2m_init(struct domain *d)
> +static const struct gstage_mode_desc * find_gstage_mode(const char *mmu_type)

Nit (style): Stray blank after *.

>  {
> +    for ( unsigned int mode_idx = 0; mode_idx < ARRAY_SIZE(modes); mode_idx++ )

Can't the variable be just idx or even i? Would likely help readability
some.

> +    {
> +        if ( !strcasecmp(mmu_type, modes[mode_idx].name) )
> +        {
> +            if ( modes[mode_idx].mode == HGATP_MODE_OFF ||

Instead of this, start the loop at index 1, with ...

> +                 modes[mode_idx].mode > max_gstage_mode->mode )
> +                break;
> +
> +            return &modes[mode_idx];
> +        }
> +    }
> +
> +    ASSERT(modes[0].mode == HGATP_MODE_OFF);

... this moved up?

> +    dprintk(XENLOG_ERR, "Requested G-stage mode (%s) isn't supported\n",
> +            mmu_type);
> +
> +    /*
> +     * Return the Bare-mode sentinel. p2m_init() will reject it with
> +     * -EINVAL, producing the appropriate domain-creation failure.
> +     */
> +    return &modes[0];
> +}

Yet better return NULL on error?

> +int p2m_init(struct domain *d, const struct xen_domctl_createdomain *config)
> +{
> +    /*
> +     * TODO: This static is a temporary constraint: all guests must use the
> +     * same MMU mode because p2m_gpa_bits is not yet per-domain.
> +     * Drop this once per-domain p2m_gpa_bits is introduced.
> +     */
> +    static const struct gstage_mode_desc *m = &modes[0];

It being temporary it may not matter much, but couldn't this be __ro_after_init?`
At least one domain needs creating during boot, so ...

> @@ -341,6 +366,27 @@ int p2m_init(struct domain *d)
>       */
>      p2m->domain = d;
>  
> +    if ( !config )
> +    {
> +        dprintk(XENLOG_ERR, "NULL config is passed\n");
> +        return -EINVAL;
> +    }
> +
> +    p2m->mode = find_gstage_mode(config->arch.gstage_mode);
> +
> +    if ( p2m->mode->mode == HGATP_MODE_OFF )
> +        return -EINVAL;
> +
> +    if ( m->mode == HGATP_MODE_OFF )
> +        m = p2m->mode;

... this path won't be taken post-init.

> --- a/xen/include/public/arch-riscv.h
> +++ b/xen/include/public/arch-riscv.h
> @@ -56,6 +56,11 @@ typedef struct vcpu_guest_context vcpu_guest_context_t;
>  DEFINE_XEN_GUEST_HANDLE(vcpu_guest_context_t);
>  
>  struct xen_arch_domainconfig {
> +    /*
> +     * G-stage MMU mode for the guest (e.g. "sv39", "sv48", "sv57").
> +     * Must be set; an empty string is invalid.
> +     */
> +    char gstage_mode[8];
>  };

I have to say that I find it odd to use a string literal for this purpose.
Specifying the number of wanted address bits would feel more natural. Plus
the strings named aren't valid G-stage modes afaict - they lack the x4.

Jan


From xen-devel-bounces@lists.xenproject.org Tue Apr 21 09:43:25 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 21 Apr 2026 09:43:25 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1288749.1568978 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wF7db-00060T-BQ; Tue, 21 Apr 2026 09:43:23 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1288749.1568978; Tue, 21 Apr 2026 09:43: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 1wF7db-00060M-8Z; Tue, 21 Apr 2026 09:43:23 +0000
Received: by outflank-mailman (input) for mailman id 1288749;
 Tue, 21 Apr 2026 09:43:22 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <jbeulich@suse.com>) id 1wF7da-000600-5G
 for xen-devel@lists.xenproject.org; Tue, 21 Apr 2026 09:43:22 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wF7dZ-00DyGL-7Z
 for xen-devel@lists.xenproject.org; Tue, 21 Apr 2026 11:43:21 +0200
Received: from [10.42.69.12] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <jbeulich@suse.com>)
 id 69e746b9-5cb7-0a2a0a5109dd-0a2a450caee8-0
 for <xen-devel@lists.xenproject.org>; Tue, 21 Apr 2026 11:43:21 +0200
Received: from [209.85.128.50] (helo=mail-wm1-f50.google.com)
 by tlsNG-d25034.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.1)
 (envelope-from <jbeulich@suse.com>)
 id 69e746b8-62f1-0a2a450c0019-d1558032c487-3
 for <xen-devel@lists.xenproject.org>; Tue, 21 Apr 2026 11:43:20 +0200
Received: by mail-wm1-f50.google.com with SMTP id
 5b1f17b1804b1-48a563e4ef7so3843025e9.0
 for <xen-devel@lists.xenproject.org>; Tue, 21 Apr 2026 02:43:20 -0700 (PDT)
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-48a5334cc2bsm24976245e9.19.2026.04.21.02.43.19
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Tue, 21 Apr 2026 02:43:20 -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=google header.d=suse.com header.i="@suse.com" header.h="Content-Transfer-Encoding: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=1776764600; x=1777369400; darn=lists.xenproject.org;
        h=content-transfer-encoding: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;
        bh=QUkBPqWiHrPZq5l8ZgskrutO6l9VglUe8ZMIzpwKSnA=;
        b=azW3kxOCniaU5t1CYKKHOFJV8Qh6Ul+q8wwsByAYArvm6Njo2E9hP2A5Q+ngTJ93TQ
         3ssKrja4LmpiweHKJp5wmCnToWl9Ae3/mc+Z7Ev5NUUnC58L2yHIaFQx2BFmIvVfCRxK
         TkZTeb4kho6h/L31JeOKufXJ6FMGj4vNy8BUwprS1lhy4RfVrPcYD2U9hgu9SrWHNm0m
         /ReV6Zm/XHZK+b24y9uZel7u/KYJhtPf7xTMo6ecY3KXoIltW/kahx4mocT/h57hQyPk
         7RSALHVYre1a4yY1Ut7KE4konR2rz5KfrLtkaqRIvv2IJ7DjCux1Zq60FGLa9E7javZq
         cjBQ==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20251104; t=1776764600; x=1777369400;
        h=content-transfer-encoding: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;
        bh=QUkBPqWiHrPZq5l8ZgskrutO6l9VglUe8ZMIzpwKSnA=;
        b=e27sWycuIegGb8yME2vVIDeK+CJR7UIVe15PGJS5mgk9gz6kjFIOwLe7j00TDUtOoy
         F+4BOunSJHyTnQHw1BTr/VptDS69cQaZMooqFGRzt6iwc4Vv5RrsCYCFUsmwfnBd25MP
         gyPpdApf6YlNehn2OTE2VdxdVDwjVeYwkrGBQI8fpuh3Jk1HwuzKJ8Ot27ZFPUyEIAqU
         fAyyXOhbalFZLE0cD0R4hb5ogAQ1j7WFv7LJdluHYMR+abZyBNRYJ9fzSz5Hd+nPGxBL
         H1xFXjqWzJOax4otsP/GrVphqbRJZlUHKiN45FPIB4MkNPJDKrEoVEHco4tqBInE1Ilv
         lCEA==
X-Forwarded-Encrypted: i=1; AFNElJ853oPIBPEKSq8O+bXjP468Popy2Hfj4bIDXFsfBJJZNPr25zWCv6ybueMozTrOHKfo849K3i8ciXU=@lists.xenproject.org
X-Gm-Message-State: AOJu0Yxyyfh8RAMdrtRQK4yE0GZO8IfrMSoUs5UnOllo05muRY8CmYsi
	DXHfJRAQ4uSBBcrkprYL9IzHUQQ0jJOsoYyND8jAJuq1ETHEXrsTULpxwn7ipmY+SA==
X-Gm-Gg: AeBDieu1sGc3KGaAeYKEpGPWfOtqchTJWIZ11BwzG5GGEGZI3WwTU1olINUGBMx+tC1
	np8MKyCr4kPWss/f4djCawvYsOfe9Vf3+kyxszyDgLnMP0zaim5CYqPE/OcywNw0EVsAiUI/V6m
	VF9X0dtnS78bC/hpquk7i4Ryugbux6jeH9xJclW3L0VPofDn5LLC6NcC6oTFJRLfWRk4i/H/5hD
	jZG40pymUdawZv8gmylAuWe2IRfQS0qbY1k/4Ar9479EuokS8D2fN9cnj4/0Y5FD1/KFRoVgIVr
	Hluolw3Cw/gDOF3trLc73+TUbrE4NkEqP4f/2v24vK0VUrN0QvByof/3ipTkEPPWDhb2/zUkcHm
	Lu4z1ITSkZvkxxcMpDOs7XIi/LrQTTpugbwCaBdDwgFEQTIx38010jScPsITC9sNlC3rEGSb1Er
	57aW9hCiBzMdlIX5WJjBha1Ck0kWMpqef5HTwxXiP5+jDsNsSkNWnTUQIdfhag8e8u2eUjr5a8G
	TAD0uM2aQMBb14/2bWRcoBbFiK9PQcbs4k4
X-Received: by 2002:a05:600c:42cc:b0:488:ffb1:494c with SMTP id 5b1f17b1804b1-488ffb14a0cmr113171425e9.12.1776764600371;
        Tue, 21 Apr 2026 02:43:20 -0700 (PDT)
Message-ID: <e7ac0111-09a9-4946-abb0-91cac2cd6001@suse.com>
Date: Tue, 21 Apr 2026 11:43:19 +0200
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH v4] xen/riscv: allow Xen to use SSTC while hiding it from
 guests
To: Oleksii Kurochko <oleksii.kurochko@gmail.com>
Cc: Romain Caritey <Romain.Caritey@microchip.com>,
 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.pau@citrix.com>,
 Stefano Stabellini <sstabellini@kernel.org>, xen-devel@lists.xenproject.org
References: <5285075f24cd2a2c5566b2a7724198d34aab51c5.1776354739.git.oleksii.kurochko@gmail.com>
 <405b5653-4df9-4ee0-b6e2-ba7c4a5efbba@suse.com>
 <a64c0c52-fe42-42bb-b93c-470ab9c25413@gmail.com>
 <306c8133-0bee-4d07-be34-5d201a232b04@suse.com>
 <8f93b170-da98-4105-ba83-a0f8421e672b@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: <8f93b170-da98-4105-ba83-a0f8421e672b@gmail.com>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 7bit
X-purgate-ID: tlsNG-d25034/1776764601-F7612CF5-46202B35/0/0
X-purgate-type: clean
X-purgate-size: 2998

On 21.04.2026 11:33, Oleksii Kurochko wrote:
> On 4/21/26 11:10 AM, Jan Beulich wrote:
>> On 21.04.2026 11:01, Oleksii Kurochko wrote:
>>> On 4/20/26 9:56 AM, Jan Beulich wrote:
>>>> On 17.04.2026 09:24, Oleksii Kurochko wrote:
>>>>> @@ -279,8 +299,6 @@ static int cf_check sbi_set_timer_v01(uint64_t stime_value)
>>>>>        return sbi_err_map_xen_errno(ret.error);
>>>>>    }
>>>>>    
>>>>> -int (* __ro_after_init sbi_set_timer)(uint64_t stime_value) = sbi_set_timer_v01;
>>>>> -
>>>>>    int sbi_remote_sfence_vma(const cpumask_t *cpu_mask, vaddr_t start,
>>>>>                              size_t size)
>>>>>    {
>>>>> @@ -360,10 +378,9 @@ int __init sbi_init(void)
>>>>>            }
>>>>>    
>>>>>            if ( sbi_probe_extension(SBI_EXT_TIME) > 0 )
>>>>> -        {
>>>>> -            sbi_set_timer = sbi_set_timer_v02;
>>>>> -            dprintk(XENLOG_INFO, "SBI v0.2 TIME extension detected\n");
>>>>> -        }
>>>>> +            set_xen_timer = sbi_set_timer_v02;
>>>>> +        else
>>>>> +            set_xen_timer = sbi_set_timer_v01;
>>>>>        }
>>>>
>>>> Sadly this isn't quite equivalent to sbi_set_timer having had an initializer.
>>>> I would have wanted to suggest to use a constructor function, but we call
>>>> init_constructors() even later than do_initcalls() on both Arm and x86 (we
>>>> don't call the latter at all on RISC-V so far). Might it be necessary to
>>>> introduce sbi_early_init(), called very early during boot? Else how do you
>>>> guarantee no accidental use of the variable before it is first set?
>>>
>>> I thought about an introduction of sbi_early_init() but then decided
>>> that set_xen_timer() won't be used earlier than at lest timer_init() +
>>> local_irq_enable().
>>> Also, sbi_init() is executed pretty early.
>>
>> Many more additions to setup.c are to be expected. Are you sure hardly any will
>> go ahead of the call to sbi_init()?
> 
> Looking at the current state, I don't see something new what will added 
> before sbi_init() except percpu_init_areas().
> 
> I am okay to introduce sbi_early_init() if it will be really better:
> 
> --- a/xen/arch/riscv/sbi.c
> +++ b/xen/arch/riscv/sbi.c
> @@ -387,3 +387,8 @@ int __init sbi_init(void)
> 
>       return 0;
>   }
> +
> +void __init sbi_early_init(void)
> +{
> +    set_xen_timer = sbi_set_timer_v01;
> +}
> diff --git a/xen/arch/riscv/setup.c b/xen/arch/riscv/setup.c
> index 56a0907a855f..b187a84cd28d 100644
> --- a/xen/arch/riscv/setup.c
> +++ b/xen/arch/riscv/setup.c
> @@ -78,6 +78,8 @@ void __init noreturn start_xen(unsigned long bootcpu_id,
>       const char *cmdline;
>       size_t fdt_size;
> 
> +    sbi_early_init();
> 
> But it looks to me that is fine to have what we have now as even someone 
> will try to use set_xen_timer earlier a trap will occur and thereby it 
> will be need to put the code which start to use set_xen_timer after 
> sbi_init().

It's your call really.

Jan


From xen-devel-bounces@lists.xenproject.org Tue Apr 21 09:47:00 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 21 Apr 2026 09:47:00 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1288757.1568988 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wF7gv-0006Wh-Or; Tue, 21 Apr 2026 09:46:49 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1288757.1568988; Tue, 21 Apr 2026 09:46: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 1wF7gv-0006Wa-Lr; Tue, 21 Apr 2026 09:46:49 +0000
Received: by outflank-mailman (input) for mailman id 1288757;
 Tue, 21 Apr 2026 09:46:48 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92) id 1wF7gu-0006WU-2j
 for xen-devel@lists.xenproject.org; Tue, 21 Apr 2026 09:46:48 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wF7gt-00Dyrb-Bh
 for xen-devel@lists.xenproject.org; Tue, 21 Apr 2026 11:46:47 +0200
Received: from [10.42.69.11] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <jbeulich@suse.com>)
 id 69e7477c-2eae-0a2a0a5409dd-0a2a450b9942-14
 for <xen-devel@lists.xenproject.org>; Tue, 21 Apr 2026 11:46:47 +0200
Received: from [209.85.128.46] (helo=mail-wm1-f46.google.com)
 by tlsNG-42698a.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.1)
 (envelope-from <jbeulich@suse.com>)
 id 69e74787-212f-0a2a450b0019-d155802ec9f9-3
 for <xen-devel@lists.xenproject.org>; Tue, 21 Apr 2026 11:46:47 +0200
Received: by mail-wm1-f46.google.com with SMTP id
 5b1f17b1804b1-488b8bc6bc9so27975355e9.3
 for <xen-devel@lists.xenproject.org>; Tue, 21 Apr 2026 02:46:47 -0700 (PDT)
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-48a55b8baaesm58192255e9.10.2026.04.21.02.46.45
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Tue, 21 Apr 2026 02:46:46 -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=google header.d=suse.com header.i="@suse.com" header.h="Content-Transfer-Encoding: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=1776764807; x=1777369607; darn=lists.xenproject.org;
        h=content-transfer-encoding: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;
        bh=0a6vPHl8CPBNy1g2ZDOGx0HgWgSH8nsG52SKaOdTYxk=;
        b=Q2N3tLkWEHKPW+HtlTa08UMrLXqvlEhGov7maFOV57owUQ5C90RLRNq1dy5l1v3U6P
         8Nc2XyYtveb5lEhhDJwvt3vSxoUn/uFhXmlX4Xezjxu3s2cmXf2bPSgAY5SVsqneVT52
         b1wZLaUFqKbSsZPVNP36m59EiL5tOQyXiG5Lmn5YV0Rrl4h+NVaimgCgg3bL2bVhdr03
         aQT3g/fuM+eiH82jR5cxQVKkxuF3/BNMrsbP5rBOxDQxzhZrg8I6eCnBharMyOVsF2o/
         HKi6JE01IXD71yMrDo/YFcRVY3rBQWXALLvcJ58d4o9dgSzRV/b2nxmMetUxGvUSzI2p
         C0Zw==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20251104; t=1776764807; x=1777369607;
        h=content-transfer-encoding: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;
        bh=0a6vPHl8CPBNy1g2ZDOGx0HgWgSH8nsG52SKaOdTYxk=;
        b=JXoh78JH+HUQn1pKTWELejCFGlvYJnCGx648RpOQnJFYt7cfh1og6hVZ0jlYAB+mAl
         30BJO50XVXAjeoxxggFw+KSnO9/Ujs/404YQU2+8ZWKag19KE2en52eoh+E8Tp7mnCJ0
         +HeShsRjeACO5XN8npI6CM0EIpTgQMzL2/etMVEzeQ+7GhRvtpOkM4lyHwiOBSHYEBCY
         gNSHJRX5wUAiO089ttTzg4nnGfvsc5ygvffWPyxlyZD3LIAyLnhb5EcuFxOHiRnAvfcS
         yRCBb+YFJwUXf9uqPlv/hzDzG/yJ1yUBNoanAfZmxtMOw6SJpt6eBQMvvLnB9OVOmjMx
         Rvpg==
X-Forwarded-Encrypted: i=1; AFNElJ8SsphOtL1XiRcsCo3+3hwNKv4DzlX+FU742miiNC+7+puN8wuDTEtSoeSC/em+SyVQWKGrwTQEt4g=@lists.xenproject.org
X-Gm-Message-State: AOJu0Ywi4/q7fTYbitTY+BRt29E+WXrtNyaDzyxIQ4EB+87WGptzjUDh
	12chvB1Yam+l7FOVkSbQcHMKfw4OCGnG8vb8sNzIHhtyrXzLh52njQGxUGy/9gr7IQ==
X-Gm-Gg: AeBDiet9YTvKBWigLgDIjDW/ac0NpfkJV5Uwm3xVuj0irSyn3UkZ8H3vVCzXidKhb2J
	jl8JjThtlfRusiMhQWT9RpeEduK987V5JgIfo+GL9nos2P+8L2mW24PHgJKB2TMdgWYYJxxwjWu
	cdkFHiZfJLy1eNSbzvw+yvHHMb2cIE67fZ3qOHzCeGFSgSo0zTAtuhd47IVbvphR1DtfcbQ70Cu
	HToeHECcyEZGxe0mDy7/jxpEGhrebsDe/bKcPq9gRKHEtLZecMujjsXkLkOR5iXD86K8Nybkw3a
	HsslYH1yUWulLMkbTkOOrD739qi19kUYqVI5kuI6rj6xL3NzBgI4058MaOtPwlRM19CnSe7gaE5
	metmGs0eaiusJEII72dMIv7mFTCeBrYFnnsFteyNWnL2kVAH9qbd72O/K9WrHPT0xYkWUS7EZ7z
	nkW0bWewzVOAIE3RHEU39F8Bw1vrBApiTXTWbpUa9DUWvFjsyB3Elk9mMe/t8p48nTceZQ9McO7
	YGUwSn21zuy3EfvS1054oGAG9E3vO2aEzlp
X-Received: by 2002:a05:600c:5295:b0:486:fbd1:9dc0 with SMTP id 5b1f17b1804b1-488fb780463mr235112255e9.22.1776764806482;
        Tue, 21 Apr 2026 02:46:46 -0700 (PDT)
Message-ID: <14ae97df-cb9b-4b43-bb39-6b9395ad918b@suse.com>
Date: Tue, 21 Apr 2026 11:46:45 +0200
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH v3 10/12] xen/riscv: introduce p2m_gpa_bits
To: Oleksii Kurochko <oleksii.kurochko@gmail.com>
Cc: Romain Caritey <Romain.Caritey@microchip.com>,
 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.pau@citrix.com>,
 Stefano Stabellini <sstabellini@kernel.org>, xen-devel@lists.xenproject.org
References: <cover.1775836193.git.oleksii.kurochko@gmail.com>
 <87d8050f252fb76e241a40809763e60d9874e902.1775836193.git.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: <87d8050f252fb76e241a40809763e60d9874e902.1775836193.git.oleksii.kurochko@gmail.com>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 7bit
X-purgate-ID: tlsNG-42698a/1776764807-24AB5F3B-6837FF82/10/73395122804
X-purgate-type: spam
X-purgate-size: 815

On 10.04.2026 17:54, Oleksii Kurochko wrote:
> common/device-tree/domain-build.c uses p2m_gpa_bits to determine the
> upper bound of the GPA space when searching for unused regions, so it
> must be defined when CONFIG_DOMAIN_BUILD_HELPERS=y.
> 
> The variable is initialised to PADDR_BITS and narrowed in p2m_init() to
> the GPA width of the selected G-stage mode, allowing an external entity
> (e.g. an IOMMU) to restrict it further if needed.
> 
> p2m_gpa_bits is a global rather than a per-domain value, which is
> acceptable for now because all domains are required to use the same
> G-stage MMU mode, as dom0less common code allocates it per all
> domains.
> 
> Signed-off-by: Oleksii Kurochko <oleksii.kurochko@gmail.com>

Pretty hesitantly:
Acked-by: Jan Beulich <jbeulich@suse.com>

Jan


From xen-devel-bounces@lists.xenproject.org Tue Apr 21 10:04:42 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 21 Apr 2026 10:04:42 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1288772.1569013 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wF7y7-0001wm-9v; Tue, 21 Apr 2026 10:04:35 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1288772.1569013; Tue, 21 Apr 2026 10:04: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 1wF7y7-0001wf-62; Tue, 21 Apr 2026 10:04:35 +0000
Received: by outflank-mailman (input) for mailman id 1288772;
 Tue, 21 Apr 2026 10:04:34 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <jbeulich@suse.com>) id 1wF7y5-0001wZ-Uv
 for xen-devel@lists.xenproject.org; Tue, 21 Apr 2026 10:04:34 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wF7y3-00BIYo-Q3
 for xen-devel@lists.xenproject.org; Tue, 21 Apr 2026 12:04:33 +0200
Received: from [10.42.69.5] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <jbeulich@suse.com>)
 id 69e74bae-bab6-0a2a0a5309dd-0a2a4505a636-28
 for <xen-devel@lists.xenproject.org>; Tue, 21 Apr 2026 12:04:33 +0200
Received: from [209.85.128.43] (helo=mail-wm1-f43.google.com)
 by tlsNG-c201ff.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.1)
 (envelope-from <jbeulich@suse.com>)
 id 69e74bb0-aaa8-0a2a45050019-d155802bc490-3
 for <xen-devel@lists.xenproject.org>; Tue, 21 Apr 2026 12:04:32 +0200
Received: by mail-wm1-f43.google.com with SMTP id
 5b1f17b1804b1-48a563e4ef7so4127265e9.0
 for <xen-devel@lists.xenproject.org>; Tue, 21 Apr 2026 03:04:32 -0700 (PDT)
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-43fe4e4d5b1sm40009102f8f.30.2026.04.21.03.04.31
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Tue, 21 Apr 2026 03:04:31 -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=google header.d=suse.com header.i="@suse.com" header.h="Content-Transfer-Encoding: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=1776765872; x=1777370672; darn=lists.xenproject.org;
        h=content-transfer-encoding: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;
        bh=5gwkCcKzoBTxo7EO2L7igVFkM+tIMxSSN1DkJy9Dl2k=;
        b=V7B8dlJ26zZZLDw18HxY3e+xAAAPcfe1zIB6OU5NQdfv1WwqghmvzT/jLZr7jxjccL
         PCm8x1Dp7MRDrzwkY4RVIvzfxOPKteBvJbnPEciJjOoQYUC6SQdU3oaowU8B1Y5URxQI
         UCDoPt0cKkjMDI3/8bPolTUz3bfYNhIyifuDFNArTjzxfwsT3Vi2Vd4gBmrWvZQlUzCu
         JYXI5y8gwW4/A38mZhw7pJ7f8Jwg+6Aymm9p7hBn7pLlgT/D2yZd+8OnshBfyUug9rlk
         wsFmozxg+AKhqZY2vanWUhy0Ym/MCdiwZSZjRGjWtBKFAwmi0TbYKBydvKfzaqOUsHPk
         FC2w==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20251104; t=1776765872; x=1777370672;
        h=content-transfer-encoding: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;
        bh=5gwkCcKzoBTxo7EO2L7igVFkM+tIMxSSN1DkJy9Dl2k=;
        b=m53MMQ9MKRd1WXhy0tUIOhujzJ4vVzeOHCFyTBYjgzbDwVBCr+9g4nQsqa9ex7pGCr
         6CP/R790DSSLMzOOlUbodzMVeJ/7vrP32EyFMdX5hF2xOe6fLC8c1BulrL7CRrYWf/c4
         +Qpu/iU8sj9m9Sw3BiCW72VhcEqapcxU5YJxjxmKIDuQlfwM/tZYbJOGf10qWXCKjQTT
         oDqFPjDOwOyneddZAwY/TbqMY9BBraJCepBKAAYEoWpi06eGmrJLGwvXxlK9lPPunCfd
         C/IA2WSk0iN8z9TIuYzkpMHXkR3uZm+C7cp5BeLFcYexL/Z2PdGb4TElY3EjqMxShtaf
         7JTA==
X-Forwarded-Encrypted: i=1; AFNElJ9Y+XNe09V3gw3pGrYxOgyhrqzS+0gYIZTkLOS6uAYa3sjboNVbC7wPAejbAfPzw2L04PAVSo1fPUw=@lists.xenproject.org
X-Gm-Message-State: AOJu0Yxk5EzAUl6obmqfUXcYL/t41iHVszAUPUErRemaR2yEv114Q1wo
	uLdOFDdnPj0vNOu97xKQ9u423b4T6fqgyvuxaM+40UNI3UJTUlovDPcTLvoq19Zllg==
X-Gm-Gg: AeBDies1FO9Wqwr4C/JzFq17rKXIB4dEIQJm0q75QXb68c8YadcSkF1ycb29M3QFreR
	+oor4iwwlXiq0LNrKfCmxA1ZGmIwgdJkbfcmkjGunO+gc8r+uIlv1aiNVXYl5LiHS3Km+U40Biz
	jFMxTZlenJlQgkskI1wINp6nqugI540Zbk9Ev03N79RrDzKA46c5xvqpQ1zq7FmBwVPsFzbGUNM
	TOiOd9PhyEt6bLiwJ1lTlnaKLhrm5JwD5bHcmsBM8hCJQyFh5JyemIsKWVVU20WmmpbN7IrEpxI
	Uob2owq7TbhkmAh0BP6URZ9q0GKSPdR9U5fRFJdWfrOJsGY9f1JVXRDhF4XSW9nV2in7w9xtjmt
	9WfvpZJm/rK7HiVNaZeB/QDULG32jZ55R7BH5eDv3EInE4kyCuh0ep0/avnFzrEOq8asCZmOH+S
	/gMLXGeuUBYzmAe1BYfB4/TFRQ60KFaw8uqWV9o1Xc8qY69Ayfz83+72SRU3WfmI/2FsrV5EdRc
	QiWf8eI0198qL4IIHFY+8rvjQ==
X-Received: by 2002:a05:600c:5254:b0:488:8bdd:cfcc with SMTP id 5b1f17b1804b1-488fb6e62a8mr267017505e9.0.1776765871963;
        Tue, 21 Apr 2026 03:04:31 -0700 (PDT)
Message-ID: <16cd27e6-8b29-409e-a431-055df43a5b01@suse.com>
Date: Tue, 21 Apr 2026 12:04:30 +0200
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH] xvmalloc: adjust XVFREE() ordering
From: Jan Beulich <jbeulich@suse.com>
To: Julien Grall <julien@xen.org>, Stefano Stabellini
 <sstabellini@kernel.org>, Michal Orzel <michal.orzel@amd.com>
Cc: Andrew Cooper <andrew.cooper3@citrix.com>,
 Anthony PERARD <anthony.perard@vates.tech>,
 =?UTF-8?Q?Roger_Pau_Monn=C3=A9?= <roger.pau@citrix.com>,
 "xen-devel@lists.xenproject.org" <xen-devel@lists.xenproject.org>
References: <29c2a896-59b4-4804-ade4-362f65ffadfc@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: <29c2a896-59b4-4804-ade4-362f65ffadfc@suse.com>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 7bit
X-purgate-ID: tlsNG-c201ff/1776765872-E1DDB443-7DD972EB/0/0
X-purgate-type: clean
X-purgate-size: 2358

On 16.04.2026 16:32, Jan Beulich wrote:
> What c4f427ec879e ("xen: Swap order of actions in the FREE*() macros") did
> should have been done right away when XVFREE() was introduced.
> 
> Amends: 9102fcd9579f ("mm: introduce xvmalloc() et al and use for grant table allocations")
> Signed-off-by: Jan Beulich <jbeulich@suse.com>

On Arm64, and only for alpine-3.18-gcc-debug-arm64-boot-cpupools, this
reproducibly causes:

diff -u  ./.xen-syms.1.o.sym  ./.xen-syms.2.o.sym
--- ./.xen-syms.1.o.sym
+++ ./.xen-syms.2.o.sym
@@ -7,11 +7,11 @@
 0000000000000000 l    d  .bss	0000000000000000 .bss
 0000000000000000 l    d  .rodata	0000000000000000 .rodata
 0000000000000000 l    d  .note.GNU-stack	0000000000000000 .note.GNU-stack
-0000000000000000 g     O .rodata	0000000000004dd8 .hidden symbols_addresses
-0000000000004dd8 g     O .rodata	0000000000000004 .hidden symbols_num_addrs
-0000000000004ddc g     O .rodata	0000000000007721 .hidden symbols_names
-000000000000c500 g     O .rodata	0000000000000028 .hidden symbols_markers
-000000000000c528 g     O .rodata	00000000000003b5 .hidden symbols_token_table
-000000000000c8de g     O .rodata	0000000000000200 .hidden symbols_token_index
+0000000000000000 g     O .rodata	0000000000004de8 .hidden symbols_addresses
+0000000000004de8 g     O .rodata	0000000000000004 .hidden symbols_num_addrs
+0000000000004dec g     O .rodata	0000000000007749 .hidden symbols_names
+000000000000c538 g     O .rodata	0000000000000028 .hidden symbols_markers
+000000000000c560 g     O .rodata	00000000000003b5 .hidden symbols_token_table
+000000000000c916 g     O .rodata	0000000000000200 .hidden symbols_token_index

There are only two uses of XVFREE() in code that is built for Arm. I'll
see if I can repro locally with the exact same .config, but I fear my
chances are slim.

It feels wrong to push the patch nevertheless, but it also feels wrong to
have to keep it out.

Jan

> --- a/xen/include/xen/xvmalloc.h
> +++ b/xen/include/xen/xvmalloc.h
> @@ -71,8 +71,9 @@ void *_xvrealloc(void *va, size_t size,
>  
>  /* Free an allocation, and zero the pointer to it. */
>  #define XVFREE(p) do { \
> -    xvfree(p);         \
> +    void *_ptr_ = (p); \
>      (p) = NULL;        \
> +    xvfree(_ptr_);     \
>  } while ( false )
>  
>  static inline void *_xvmalloc_array(



From xen-devel-bounces@lists.xenproject.org Tue Apr 21 10:19:03 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 21 Apr 2026 10:19:03 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1288781.1569022 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wF8C2-00045k-Gi; Tue, 21 Apr 2026 10:18:58 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1288781.1569022; Tue, 21 Apr 2026 10:18: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 1wF8C2-00045d-Da; Tue, 21 Apr 2026 10:18:58 +0000
Received: by outflank-mailman (input) for mailman id 1288781;
 Tue, 21 Apr 2026 10:18:57 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92) id 1wF8C1-00045V-19
 for xen-devel@lists.xenproject.org; Tue, 21 Apr 2026 10:18:57 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wF8Bz-00E6S9-S2
 for xen-devel@lists.xenproject.org; Tue, 21 Apr 2026 12:18:55 +0200
Received: from [10.42.69.6] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <oleksii.kurochko@gmail.com>)
 id 69e74f08-e002-0a2a0a5209dd-0a2a4506a582-26
 for <xen-devel@lists.xenproject.org>; Tue, 21 Apr 2026 12:18:55 +0200
Received: from [209.85.167.44] (helo=mail-lf1-f44.google.com)
 by tlsNG-16d1c6.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.1)
 (envelope-from <oleksii.kurochko@gmail.com>)
 id 69e74f0f-7371-0a2a45060019-d155a72ca5f1-3
 for <xen-devel@lists.xenproject.org>; Tue, 21 Apr 2026 12:18:55 +0200
Received: by mail-lf1-f44.google.com with SMTP id
 2adb3069b0e04-5a415fd6bceso4495468e87.1
 for <xen-devel@lists.xenproject.org>; Tue, 21 Apr 2026 03:18:55 -0700 (PDT)
Received: from fedora (user-109-243-69-121.play-internet.pl. [109.243.69.121])
 by smtp.gmail.com with ESMTPSA id
 2adb3069b0e04-5a4187e12e0sm3564564e87.51.2026.04.21.03.18.53
 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
 Tue, 21 Apr 2026 03:18:53 -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=20251104 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=20251104; t=1776766735; x=1777371535; 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;
        bh=U1jc54BGtToaT12LTQTuzf+wdJ5L1Gzc0Hnuk+KSU3E=;
        b=fD+JmlI+AXOUVNf51VrV8JbEdfz+fH+yGUX4vdMTEPKBjG7Q7ztMl8JnSPW2gfbfjP
         VxrNLYj12kYkadFwnad3MIhFypIgNstlSxtU4Ddk1sWclDuKfOsoCcmv3KXChj4OXxuL
         j1KHMF6RRBagAlHDt/kORLIBq449X0YVs/sVcyk3F5fji5F1cLbPHyW2ChW8NrPAZsby
         PgZkBmmIqF0kYXLeR5FTIWf0siwt0cpi5fiZnj/N6JcfCnkD19k7c2D0N3UJUKikqvMr
         e0jde7AmqdkGNzx2zLus9bCPUlHmc026yFSmFpPNSMU8g3ddmZPp3Zo0ScBjiNnhbjVl
         Rx4A==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20251104; t=1776766735; x=1777371535;
        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;
        bh=U1jc54BGtToaT12LTQTuzf+wdJ5L1Gzc0Hnuk+KSU3E=;
        b=COwKmjNZOo95DZuGwa3MuOgH9MwDrK04SIWHhibv/bQ1YxaQhASL3c2e1MjYAlbceK
         9X+DVY3T+xQdCSsm+QTBAqYIAKlOzNuBXWStorJucTaHox+NaeABBGjl0SmqqrfKueje
         Hq0K4LxdAAzxCwRMJc7A7T0Jb5elemHDJJgIDOzD0V5ZMQdShbQkPoNAgZuCDWaTkVzp
         2nI4HdG8xBEolrRHMWKLQCT+mvbrX3AQJFlTzshnVxQJXhhCH7HBgdmQt+7QLOkkNTFF
         GK5gNABz9DzFF7jlFReLixdlbTyPMcYYnNG7/w8hCYtZrVxGzayXRkCpbk96z7/n2SIq
         zXCA==
X-Gm-Message-State: AOJu0YzYDagfQDHqCu4B1N3dd5OMXutl8NnElIjBqnFszLt5qha7WYfg
	eB9JZhTJmbLlJ8UwXhgPSVtboJUtTVy0daGiOOaoko5q2vzzxGXoAd0CuynvvQ==
X-Gm-Gg: AeBDiesV0IafGx+/ij/To3gHOqequx9F3xC+ux8l8AVlgVyZRYsbpvhd2R4fz3DdFgu
	7mR9G989Nnubc2mLhKmz5a6i/c+UNKHgHhhhMOOOD4q/KH+1QB59z8kBK2M5DOODyvB91g4RGw4
	IryNLvXvvOWpbRGjj5cMjk6gm/9IxlXnz5ur+3xXeTwitj5w+8WneBnuy0ke37cveQElxA9ciJ5
	mzd/oDzkt/RmfIs6xWuUlAFKhMc7j2f9Y9k+XNfq7EyFWt/iJ5ZuJT+jnHSZZeFRUBOC5xUMnaV
	Qnv6rmMSLrV41+rqNICwGe4wRg/0ipMwhoZ+eaBON/NXkFkwun0Nefe6T6NrzBF+FKsJrI3yzev
	zeiL4slY33ibEv6pXU+9mtgQQBki53LYjTxKNoAevg/sjurhRB56ertBUo5ANK/UlpkcMJTqGSL
	FqvMczTM0OBWAVeuCoBCnxMy8srEHlOl4Jjd2fsveMIZ+ywd2poPCrgbQYf9hpnH/d3FoAKWmVz
	e1o
X-Received: by 2002:a05:6512:138c:b0:5a4:6f3:e0a with SMTP id 2adb3069b0e04-5a417174ccamr5585750e87.8.1776766734014;
        Tue, 21 Apr 2026 03:18:54 -0700 (PDT)
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>,
	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.pau@citrix.com>,
	Stefano Stabellini <sstabellini@kernel.org>,
	Romain Caritey <Romain.Caritey@microchip.com>
Subject: [PATCH v5] xen/riscv: allow Xen to use SSTC while hiding it from guests
Date: Tue, 21 Apr 2026 12:18:45 +0200
Message-ID: <2d5892447d6b6ad72962b8bbcb7c4d865b9e9989.1776765651.git.oleksii.kurochko@gmail.com>
X-Mailer: git-send-email 2.53.0
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit
X-purgate-ID: tlsNG-16d1c6/1776766735-90670D75-4D5EE2F0/10/73395122804
X-purgate-type: spam
X-purgate-size: 13991

OpenSBI currently does not advertise the SSTC extension via the device
tree, so if SSTC support is detected by Xen the riscv_isa bitmap is updated
manually. Furthermore, removing the "sstc" string from riscv,isa is not
a reliable way to disable SSTC, because OpenSBI probes support by
attempting to access CSR_STIMECMP.

Introduce a runtime probe in Xen to determine whether SSTC is available.
The probe attempts to read CSR_STIMECMP using csr_read_safe(). If the
access succeeds, SSTC is considered available; if a trap occurs, it is
treated as unsupported.

When SSTC is detected, Xen may use it internally to program timers.
However, the extension is not exposed to guests because the required
context switch handling for the SSTC CSRs is not yet implemented.

Note: clearing RISCV_ISA_EXT_sstc from the DTS riscv,isa property is
deferred to a follow-up patch. Also, the corresponding HENVCFG bit is
not set so guests fall back to the SBI timer interface. Timer requests
are then handled by Xen via the usual SBI interception path.

Introduce set_xen_timer() to abstract how the timer is programmed,
either via the SSTC extension or an SBI call.

Drop sbi_set_timer() as it is more than enough to have only introduced
set_xen_timer().

Drop "SBI v0.2 TIME extension detected" message to avoid confusion
which set timer function is really used.

Signed-off-by: Oleksii Kurochko <oleksii.kurochko@gmail.com>
----
Changes in v5:
 - Update defintion of csr_write64() to avoid compilation issue.
----
Changes in v4:
 - Introduce csr_write64() and __csr_write32h().
 - Sort numericaly definitions of CSR_VSTIMECMP{H}.
---
Changes in v3:
 - Reword print message when SSTC extension is detected.
 - s/__clear_bit/__set_bit() for the case when SSTC is detected in
   riscv_fill_hwcap().
   Update also the comment above __set_bit().
 - Drop BUG_ON()s in vtimer.c.
 - s/printk/dprintk for the message: SSTC detected...
 - Drop sbi_set_timer global variable, it is enough just to have set_xen_timer.
 - As we set bit in riscv_isa bitmap there is no need to use csr_read_safe(CSR_STIMECMP) second time.
 - Move init of CSR_VSTIMECMP in preinit_xen_time as it looks more correct place.
 - Update the commit message.
---
Changes in v2:
 - Minor style fixes.
 - Drop from vcpu_csr_init() setting of SSTC bit in HENVCFG register. Add it
   back when SSTC for guests will be available.
 - Add static to set_xen_timer function pointer.
 - Refactor sstc_set_xen_timer().
 - s/csr_allowed_read/csr_read_safe()
---
 xen/arch/riscv/cpufeature.c                 | 18 +++++++++
 xen/arch/riscv/include/asm/cpufeature.h     |  1 +
 xen/arch/riscv/include/asm/csr.h            | 15 ++++++++
 xen/arch/riscv/include/asm/riscv_encoding.h |  2 +
 xen/arch/riscv/include/asm/sbi.h            | 18 ---------
 xen/arch/riscv/include/asm/time.h           |  3 ++
 xen/arch/riscv/sbi.c                        | 29 +++++++++++---
 xen/arch/riscv/time.c                       | 42 +++++++++++++--------
 xen/arch/riscv/vtimer.c                     |  1 +
 9 files changed, 90 insertions(+), 39 deletions(-)

diff --git a/xen/arch/riscv/cpufeature.c b/xen/arch/riscv/cpufeature.c
index 03e27b037be0..92235fdfd5ab 100644
--- a/xen/arch/riscv/cpufeature.c
+++ b/xen/arch/riscv/cpufeature.c
@@ -17,6 +17,7 @@
 #include <xen/sections.h>
 
 #include <asm/cpufeature.h>
+#include <asm/csr.h>
 
 #ifdef CONFIG_ACPI
 # error "cpufeature.c functions should be updated to support ACPI"
@@ -139,6 +140,7 @@ const struct riscv_isa_ext_data __initconst riscv_isa_ext[] = {
     RISCV_ISA_EXT_DATA(smaia),
     RISCV_ISA_EXT_DATA(smstateen),
     RISCV_ISA_EXT_DATA(ssaia),
+    RISCV_ISA_EXT_DATA(sstc),
     RISCV_ISA_EXT_DATA(svade),
     RISCV_ISA_EXT_DATA(svpbmt),
 };
@@ -483,6 +485,7 @@ void __init riscv_fill_hwcap(void)
     unsigned int i;
     const size_t req_extns_amount = ARRAY_SIZE(required_extensions);
     bool all_extns_available = true;
+    unsigned long tmp;
 
     riscv_fill_hwcap_from_isa_string();
 
@@ -495,6 +498,21 @@ void __init riscv_fill_hwcap(void)
         panic("HW capabilities parsing failed: %s\n", failure_msg);
     }
 
+    if ( csr_read_safe(CSR_STIMECMP, &tmp) )
+    {
+        dprintk(XENLOG_DEBUG,
+                "SSTC detected; supported for Xen use, but not for guests\n");
+
+        /*
+         * As there is no any guarantee that SSTC will be added to riscv,isa
+         * property by OpenSBI(it doesn't add it now) or whatever ran before
+         * Xen, it is needed to set this bit manually.
+         *
+         * Guest isolation is maintained by not setting ENVCFG_STCE in henvcfg.
+         */
+        __set_bit(RISCV_ISA_EXT_sstc, riscv_isa);
+    }
+
     for ( i = 0; i < req_extns_amount; i++ )
     {
         const struct riscv_isa_ext_data ext = required_extensions[i];
diff --git a/xen/arch/riscv/include/asm/cpufeature.h b/xen/arch/riscv/include/asm/cpufeature.h
index ef02a3e26d2c..0c48d57a03bb 100644
--- a/xen/arch/riscv/include/asm/cpufeature.h
+++ b/xen/arch/riscv/include/asm/cpufeature.h
@@ -38,6 +38,7 @@ enum riscv_isa_ext_id {
     RISCV_ISA_EXT_smaia,
     RISCV_ISA_EXT_smstateen,
     RISCV_ISA_EXT_ssaia,
+    RISCV_ISA_EXT_sstc,
     RISCV_ISA_EXT_svade,
     RISCV_ISA_EXT_svpbmt,
     RISCV_ISA_EXT_MAX
diff --git a/xen/arch/riscv/include/asm/csr.h b/xen/arch/riscv/include/asm/csr.h
index 27d4b7942f6b..888d6a2a86d6 100644
--- a/xen/arch/riscv/include/asm/csr.h
+++ b/xen/arch/riscv/include/asm/csr.h
@@ -32,6 +32,21 @@
                            : "memory" );                        \
 })
 
+#ifdef CONFIG_RISCV_32
+#define csr_write64(csr, val)       \
+({                                  \
+    uint64_t v_ = (val);            \
+    csr_write(csr, v_);             \
+    csr_write(csr ## H, v_ >> 32);  \
+})
+#else
+#define csr_write64(csr, val)       \
+({                                  \
+    csr_write(csr, val);            \
+    (void)csr ## H;                 \
+})
+#endif
+
 #define csr_swap(csr, val)                                      \
 ({                                                              \
     unsigned long __v = (unsigned long)(val);                   \
diff --git a/xen/arch/riscv/include/asm/riscv_encoding.h b/xen/arch/riscv/include/asm/riscv_encoding.h
index dd15731a86fa..03e186bcdb8c 100644
--- a/xen/arch/riscv/include/asm/riscv_encoding.h
+++ b/xen/arch/riscv/include/asm/riscv_encoding.h
@@ -395,6 +395,8 @@
 #define CSR_VSCAUSE			0x242
 #define CSR_VSTVAL			0x243
 #define CSR_VSIP			0x244
+#define CSR_VSTIMECMP		0x24d
+#define CSR_VSTIMECMPH		0x25d
 #define CSR_VSATP			0x280
 
 /* Virtual Interrupts and Interrupt Priorities (H-extension with AIA) */
diff --git a/xen/arch/riscv/include/asm/sbi.h b/xen/arch/riscv/include/asm/sbi.h
index ed7af200288f..1952868e963c 100644
--- a/xen/arch/riscv/include/asm/sbi.h
+++ b/xen/arch/riscv/include/asm/sbi.h
@@ -13,7 +13,6 @@
 #define ASM__RISCV__SBI_H
 
 #include <xen/cpumask.h>
-#include <xen/sections.h>
 
 /* SBI-defined implementation ID */
 #define SBI_XEN_IMPID 7
@@ -139,23 +138,6 @@ int sbi_remote_hfence_gvma(const cpumask_t *cpu_mask, vaddr_t start,
 int sbi_remote_hfence_gvma_vmid(const cpumask_t *cpu_mask, vaddr_t start,
                                 size_t size, unsigned long vmid);
 
-/*
- * Programs the clock for next event at (or after) stime_value. stime_value is
- * in absolute time. This function must clear the pending timer interrupt bit
- * as well.
- *
- * If the supervisor wishes to clear the timer interrupt without scheduling the
- * next timer event, it can either request a timer interrupt infinitely far
- * into the future (i.e., (uint64_t)-1), or it can instead mask the timer
- * interrupt by clearing sie.STIE CSR bit.
- *
- * The stime_value parameter represents absolute time measured in ticks.
- *
- * This SBI call returns 0 upon success or an implementation specific negative
- * error code.
- */
-extern int (* __ro_after_init sbi_set_timer)(uint64_t stime_value);
-
 /*
  * Initialize SBI library
  *
diff --git a/xen/arch/riscv/include/asm/time.h b/xen/arch/riscv/include/asm/time.h
index be3875b9984e..4d68900151a7 100644
--- a/xen/arch/riscv/include/asm/time.h
+++ b/xen/arch/riscv/include/asm/time.h
@@ -4,6 +4,7 @@
 
 #include <xen/bug.h>
 #include <xen/muldiv64.h>
+#include <xen/sections.h>
 
 #include <asm/csr.h>
 
@@ -26,6 +27,8 @@ static inline cycles_t get_cycles(void)
 
 void preinit_xen_time(void);
 
+extern int (* __ro_after_init set_xen_timer)(uint64_t deadline);
+
 #endif /* ASM__RISCV__TIME_H */
 
 /*
diff --git a/xen/arch/riscv/sbi.c b/xen/arch/riscv/sbi.c
index b4a7ae6940c1..3576e26033a5 100644
--- a/xen/arch/riscv/sbi.c
+++ b/xen/arch/riscv/sbi.c
@@ -22,6 +22,7 @@
 
 #include <asm/processor.h>
 #include <asm/sbi.h>
+#include <asm/time.h>
 
 static unsigned long __ro_after_init sbi_spec_version = SBI_SPEC_VERSION_DEFAULT;
 
@@ -249,6 +250,21 @@ static int (* __ro_after_init sbi_rfence)(unsigned long fid,
                                           unsigned long arg4,
                                           unsigned long arg5);
 
+/*
+ * Programs the clock for next event at (or after) stime_value. stime_value is
+ * in absolute time. This function must clear the pending timer interrupt bit
+ * as well.
+ *
+ * If the supervisor wishes to clear the timer interrupt without scheduling the
+ * next timer event, it can either request a timer interrupt infinitely far
+ * into the future (i.e., (uint64_t)-1), or it can instead mask the timer
+ * interrupt by clearing sie.STIE CSR bit.
+ *
+ * The stime_value parameter represents absolute time measured in ticks.
+ *
+ * This SBI call returns 0 upon success or an implementation specific negative
+ * error code.
+ */
 static int cf_check sbi_set_timer_v02(uint64_t stime_value)
 {
     struct sbiret ret;
@@ -264,6 +280,10 @@ static int cf_check sbi_set_timer_v02(uint64_t stime_value)
     return sbi_err_map_xen_errno(ret.error);
 }
 
+/*
+ * Legacy SBI v0.1 SET_TIMER; functionally equivalent to sbi_set_timer_v02
+ * from Xen's perspective.
+ */
 static int cf_check sbi_set_timer_v01(uint64_t stime_value)
 {
     struct sbiret ret;
@@ -279,8 +299,6 @@ static int cf_check sbi_set_timer_v01(uint64_t stime_value)
     return sbi_err_map_xen_errno(ret.error);
 }
 
-int (* __ro_after_init sbi_set_timer)(uint64_t stime_value) = sbi_set_timer_v01;
-
 int sbi_remote_sfence_vma(const cpumask_t *cpu_mask, vaddr_t start,
                           size_t size)
 {
@@ -360,10 +378,9 @@ int __init sbi_init(void)
         }
 
         if ( sbi_probe_extension(SBI_EXT_TIME) > 0 )
-        {
-            sbi_set_timer = sbi_set_timer_v02;
-            dprintk(XENLOG_INFO, "SBI v0.2 TIME extension detected\n");
-        }
+            set_xen_timer = sbi_set_timer_v02;
+        else
+            set_xen_timer = sbi_set_timer_v01;
     }
     else
         panic("Ooops. SBI spec version 0.1 detected. Need to add support");
diff --git a/xen/arch/riscv/time.c b/xen/arch/riscv/time.c
index 698ab49d1292..8769709e5227 100644
--- a/xen/arch/riscv/time.c
+++ b/xen/arch/riscv/time.c
@@ -7,12 +7,21 @@
 #include <xen/time.h>
 #include <xen/types.h>
 
+#include <asm/cpufeature.h>
 #include <asm/csr.h>
-#include <asm/sbi.h>
 
 unsigned long __ro_after_init cpu_khz; /* CPU clock frequency in kHz. */
 uint64_t __ro_after_init boot_clock_cycles;
 
+static int cf_check sstc_set_xen_timer(uint64_t deadline)
+{
+    csr_write64(CSR_STIMECMP, deadline);
+
+    return 0;
+}
+
+int (* __ro_after_init set_xen_timer)(uint64_t deadline);
+
 s_time_t get_s_time(void)
 {
     uint64_t ticks = get_cycles() - boot_clock_cycles;
@@ -61,20 +70,7 @@ int reprogram_timer(s_time_t timeout)
     if ( deadline <= now )
         return 0;
 
-    /*
-     * TODO: When the SSTC extension is supported, it would be preferable to
-     *       use the supervisor timer registers directly here for better
-     *       performance, since an SBI call and mode switch would no longer
-     *       be required.
-     *
-     *       This would also reduce reliance on a specific SBI implementation.
-     *       For example, it is not ideal to panic() if sbi_set_timer() returns
-     *       a non-zero value. Currently it can return 0 or -ENOSUPP, and
-     *       without SSTC we still need an implementation because only the
-     *       M-mode timer is available, and it can only be programmed in
-     *       M-mode.
-     */
-    if ( (rc = sbi_set_timer(deadline)) )
+    if ( (rc = set_xen_timer(deadline)) )
         panic("%s: timer wasn't set because: %d\n", __func__, rc);
 
     /* Enable timer interrupt */
@@ -91,4 +87,20 @@ void __init preinit_xen_time(void)
         panic("%s: ACPI isn't supported\n", __func__);
 
     boot_clock_cycles = get_cycles();
+
+    /* set_xen_timer must have been set by sbi_init() already */
+    ASSERT(set_xen_timer);
+
+    if ( riscv_isa_extension_available(NULL, RISCV_ISA_EXT_sstc) )
+    {
+        set_xen_timer = sstc_set_xen_timer;
+
+        /*
+         * A VS-timer interrupt becomes pending whenever the value of
+         * (time + htimedelta) is greater than or equal to vstimecmp CSR.
+         * Thereby to avoid spurious VS-timer irqs set vstimecmp CSR to
+         * ULONG_MAX.
+         */
+        csr_write64(CSR_STIMECMP, ULONG_MAX);
+    }
 }
diff --git a/xen/arch/riscv/vtimer.c b/xen/arch/riscv/vtimer.c
index afd8a53a7387..d5a8dfcb2edb 100644
--- a/xen/arch/riscv/vtimer.c
+++ b/xen/arch/riscv/vtimer.c
@@ -4,6 +4,7 @@
 #include <xen/sched.h>
 #include <xen/timer.h>
 
+#include <asm/cpufeature.h>
 #include <asm/vtimer.h>
 
 static void vtimer_expired(void *data)
-- 
2.53.0



From xen-devel-bounces@lists.xenproject.org Tue Apr 21 10:22:53 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 21 Apr 2026 10:22:53 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1288790.1569031 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wF8Fn-0005xP-0a; Tue, 21 Apr 2026 10:22:51 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1288790.1569031; Tue, 21 Apr 2026 10:22: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 1wF8Fm-0005xI-TR; Tue, 21 Apr 2026 10:22:50 +0000
Received: by outflank-mailman (input) for mailman id 1288790;
 Tue, 21 Apr 2026 10:22:50 +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 1wF8Fm-0005xC-1u
 for xen-devel@lists.xenproject.org; Tue, 21 Apr 2026 10:22:50 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wF8Fl-00E7n3-Ei
 for xen-devel@lists.xenproject.org; Tue, 21 Apr 2026 12:22:49 +0200
Received: from [10.42.69.11] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <andrew.cooper@citrix.com>)
 id 69e74fe7-5cb7-0a2a0a5109dd-0a2a450be6ee-44
 for <xen-devel@lists.xenproject.org>; Tue, 21 Apr 2026 12:22:49 +0200
Received: from [52.101.62.53]
 (helo=DM5PR21CU001.outbound.protection.outlook.com)
 by tlsNG-42698a.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.1)
 (envelope-from <andrew.cooper@citrix.com>)
 id 69e74ff7-212f-0a2a450b0019-34653e352fd1-4
 for <xen-devel@lists.xenproject.org>; Tue, 21 Apr 2026 12:22:48 +0200
Received: from CH8PR03MB8275.namprd03.prod.outlook.com (2603:10b6:610:2b9::7)
 by PH8PR03MB989185.namprd03.prod.outlook.com (2603:10b6:510:3b2::23)
 with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9846.16; Tue, 21 Apr
 2026 10:22:46 +0000
Received: from CH8PR03MB8275.namprd03.prod.outlook.com
 ([fe80::a70d:dc32:bba8:ce37]) by CH8PR03MB8275.namprd03.prod.outlook.com
 ([fe80::a70d:dc32:bba8:ce37%6]) with mapi id 15.20.9818.033; Tue, 21 Apr 2026
 10:22: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=zKc2cJcwiEzvCjBbcIB4XEIeKMHZw0XNrAPHwb6SAlwvRWo1N5FvFcUedppxF//kulmbVDy0WEuy3vqIxxzrqkZ53cAVDEiaj/bCLNZJ4KT7V/Noq9MC7uRGydI/ry2GXm5iDxRQS4YUew8UXwCh6C9BvPJXS+Zy/Y8YS5jTFlAcNn0bkd9ueKnn1AbFmc9GSRwJJkjMLrZQcUGHJFUOHmRb/BT8BytQePl/cY3xhqVA1LPwpB344CS0dC4H8Fv0EYcpjf+yt+FFwFAGTpqU+eVDQWAGzCdfPYP29k/nAq4N8YqueA94YbphwaoHpH6A/6NYNpLGS0oyI4U6raB74A==
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com;
 s=arcselector10001;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1;
 bh=C6QJr1WLo1JqSz348tl6tU8vhCnaDTrwQ4Itub6EcsY=;
 b=wk6/7mdsety65IcVas6ZKm+VhfAqPX2AiJiaBblQuMBe9vkXj8hkrbFFKMOPqs7W1ByU/XkTuFDXyk8Jq/RTRjneVNKqCzgwTYAla8sbAQ7757lIuWslbsw494qW3PKISI/19s5XgsnjeDNFefRu5YF6at3FsOMULHkq2R48GWHXpiJnU9n0nL9bCHATFklTKZ9bHkMcxrN1s6HET2GJ1r35v450IDn+f4a0Wk+3yyah3mdzzCp0f8BtGRgL8jU8HEn4VN5QCaf3VHbk2NLZUdw3UytaM3Wdq40hfTKry0oD5HA+2aXFFELpbqzC+HBporTsrk8zUFCXbHzTGn2c7g==
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=C6QJr1WLo1JqSz348tl6tU8vhCnaDTrwQ4Itub6EcsY=;
 b=hgN7OOWG8ymPFLoAEmw76w4lCRlH4KjvvBkop9D37ubkkIRNHKWrSQfDOvHzpBaPP12ShFhXgs4QcqHGJa+cbiUKyci0RG9WLagXQT9vAMPOUqomkfQGiSciM6jn1Vkce0kBpR+tnNvKFh3LYYgFt7ExQy7kZvwEcDIjybLX41o=
Authentication-Results: dkim=none (message not signed)
 header.d=none;dmarc=none action=none header.from=citrix.com;
Message-ID: <e7257423-bc5e-4a71-9c23-d9b939464b67@citrix.com>
Date: Tue, 21 Apr 2026 11:22:42 +0100
User-Agent: Mozilla Thunderbird
Cc: Andrew Cooper <andrew.cooper3@citrix.com>,
 =?UTF-8?Q?Roger_Pau_Monn=C3=A9?= <roger.pau@citrix.com>,
 Teddy Astie <teddy.astie@vates.tech>,
 Xen-devel <xen-devel@lists.xenproject.org>
Subject: Re: [PATCH Xen 4.20] x86/apic: Fix asm() constraints in TMICT
 calculation
To: Jan Beulich <jbeulich@suse.com>
References: <20260420174605.706329-1-andrew.cooper3@citrix.com>
 <85fa4bf2-e288-4376-aa74-c3aef511c2b6@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: <85fa4bf2-e288-4376-aa74-c3aef511c2b6@suse.com>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
X-ClientProxiedBy: LO4P265CA0109.GBRP265.PROD.OUTLOOK.COM
 (2603:10a6:600:2c3::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_|PH8PR03MB989185:EE_
X-MS-Office365-Filtering-Correlation-Id: cad178ae-37a9-42a4-de31-08de9f8fee12
X-MS-Exchange-SenderADCheck: 1
X-MS-Exchange-AntiSpam-Relay: 0
X-Microsoft-Antispam:
	BCL:0;ARA:13230040|1800799024|366016|376014|56012099003|18002099003|22082099003;
X-Microsoft-Antispam-Message-Info:
	D6G+LFl3amrPP+Q0+P0JMl438mlL/3Y3xtWPaEHagSmOX+DsyjemUr/KF9y8UT4K3fxmEc1TrEBGXOwUtx5uqCxCXeLrjeqCklMJaBfZBoYi8r88r5x3lhEFe7C9UKlUUQoaPKk4amczEWqVjs3hgjWYet1n69H63A/94K7/J8t2fREdMyJNPpWSjQl67KaYyXGNPqLftgIAo+7q4PULX27hNaSKUrpL7tBmnoxQb5PZCsGrskTvlBAvlsKFn1mGdYfiJcAnry+9TU7+fxRjkl5Glf8bwZD50duHzqzNzH32sKU1X70k5CvnKuVYbzugmSMEbR7kn5ZVDu6VMhA5MxLmkEIVwhGQId5zTglG3fbAOwBB2Id2LfdEPs69cgmV2LJ3/F3u+yFUL2toFagQMbCqfRM/+jizAIjTexQa9lKCcM1stBVK01TpgaPkbFoI0u1t/69SkQOjRFS4rfiixcOYai8TsOfRDCbC8heWk1w6EWoluwZLZ+KFMFw1nyZ1b6V5pqJUYsNybCYtSMyS7znG4x04ELxk6lTcgPQWY6e4CwrnMUtY+BZqWgGdAAdr65UAOCXXw2SrG/e489hkeduCAO5fMOxpEXBSjU6DGd5wD7UByXY+9oM+rXnUvs+L+6QybqtsQA6PcGg0T8oQ/dPm762yiW1+z9pxZNytO07evnR5DQWr2SPxQwjtge76hpVLfKP1+Pk2hDEpePqz5sIg7VO5pE4gU7ZxDXpd7uU=
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)(56012099003)(18002099003)(22082099003);DIR:OUT;SFP:1101;
X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1
X-MS-Exchange-AntiSpam-MessageData-0:
	=?utf-8?B?Wk1ZaW1IdFNQa1NyTzRuRC9Udk9Zalg5eGVEU2tUT2VUalkrU1hqSGZmbDNs?=
 =?utf-8?B?S3dCMktKNlg1RlJoTjVIbDVvbEhJV2lod1VNZzVqOFFPV256eloxYXNGeC9R?=
 =?utf-8?B?bmtxamdSNmtPM3lWM3hXbTloQjBJQVM0UG9oYWx4VFVZR2dZcVBtaVVLd2ZL?=
 =?utf-8?B?YjJLRzBwb1hvWHN2WXgyVFBmNzZCT1c0d1VtWU52WXBUU0hJSEpkKzBEdkxz?=
 =?utf-8?B?LzdVbjkwbE1nZlFZU1l4VUc5Q0xiZ0lqU2wvZy96c1g1dzhSZWpVWjMrelRI?=
 =?utf-8?B?L3duTnlzMFpnYm9NcG5pYTNTeXo2T01tRk1nMzY0SCtOanA3RWJoaDVBU1Vu?=
 =?utf-8?B?NlhDeTJlcHNIc09vK0VZYTVIUHRGWVludld3QU13c29xQmpXNDJSd2lnYUoz?=
 =?utf-8?B?MGJtekxCRUlMQlRKOWJDYUt6KzJGMXIxT0dpRE1KcTNEbEtjWkl3ZkNGQjlo?=
 =?utf-8?B?M0N0Tnl0enp1bkpQZlJycmZ5dG1kTTQ4SzlLcWppbXJvSDJ0T0dlUjJJSk8y?=
 =?utf-8?B?bGZhNFIxaTEwZlFIY0xZRmxIMmdGdHptSWlMOHplR2h1dk5LSUVRZ01iSU96?=
 =?utf-8?B?eERuY3pKRmF2TVgzTWpyOVZYbGdGY2FGVWZrSHdLWisrSEhYL1VRbGRvbXZu?=
 =?utf-8?B?SmxVRWtWVVhnVW1zcDNPNWNJUit5b1h5aGlGNkEzWmM1Qm9aVVN3bWdNZ3c5?=
 =?utf-8?B?WUYvMlY0aEdQdE55eXB2dVR2SHZuRTh2K1ErQllxTjRJbVI5ZXEwT0M5ekVk?=
 =?utf-8?B?ZzY0MHFSNk1RWXJpZEtFTXlNWkpFSXdvamRPdG8wM0YwRVBXSVh4UzVVU213?=
 =?utf-8?B?K1VKQlBlb3E3Umpod0Rkd3VuSlJFOTQ5UDZMYkJBUFFCdGJsc1hmNU9YNGI3?=
 =?utf-8?B?c0ZuV3YvOFZ1YUhTcGZ5YlpoYTY2VjNKUzZBc2FtTjhkTy8yN2tITUgzU0dM?=
 =?utf-8?B?WDJmdTZVbjZpdVlMVU0wNDlEQ2EyRTZQaGRnN1dnL1pkQVlUeXJOU3h3UmJ3?=
 =?utf-8?B?bjlCcHhKOXhBZlFaUVBMNGxlaXpUR1Nld280TllndFJVTXNMMm0wRmxFSjdk?=
 =?utf-8?B?YVU0SjVPR1J4engxT3R0YmVORVVNbEMzUGRYZGpyNDRoOUtYMHVUcm8zMDNJ?=
 =?utf-8?B?Tjh2VnRHdDViSW5UR1RFU3FEQ2NiSmJqUGxpbVV6Y2RIL1crSUsreWRJSHpr?=
 =?utf-8?B?akYvek41TGd4UXMxdDlPVFNHQkgrZjRDWmExcUxUdG80Z0d2RnozNjdhcWxR?=
 =?utf-8?B?UjE2OEhJR3ZCbjg3UjRFTHNmWlN1cDhFei91azlxYlZoVXRKVFlkQlhNRVFT?=
 =?utf-8?B?aXpNUkVYa3FxbGx3RzJZK1ZLSWY5OHkrbXEzNThzVTAwSU1WTDg2UWlYa0RO?=
 =?utf-8?B?bkVjSFgyMUo1SFkvdFFKWkdkdm1qbVZ5V21od3g2ODZMQXNlNExUOURiTWNo?=
 =?utf-8?B?UWlXcHVQSlI0VmdDcTBsY2poSkl1S1gwbW5IMlRpTU9EWXlSaHcvUWJySXI1?=
 =?utf-8?B?VlZVWXZKQzhseUFoVjJSaHh2YWdZV2RPMHpzNm1EcTd6Tk9JQllvT1JMK3lL?=
 =?utf-8?B?NDZmLzVxMUFhS2xyenJINmNZVnhPOXNDOVJWeGV3dGgvVDlVeVpBeXNRVDJ1?=
 =?utf-8?B?cjFlZlJOc2RTamZXd01RaHlXdUJ0NkVoL2ZGMTVtK0RaUnY2eFZKUzNTV1NM?=
 =?utf-8?B?RzhWOGdDM3VIR3VNTWRmaFpOSVA3TGNXbk1pQmZzWWlpZVppOUl2VVpWTm1v?=
 =?utf-8?B?NHQ5R1FIQXpRTE00UFJWRGM5UThzWkRVQktmZ2QvM1BFYkhVb3BSaTVTSGFi?=
 =?utf-8?B?Z0l6L0pKWnk1WWQ5ajZpR1M5ZE9HaWVEYmRjVmxGSEZNTHN2VnVHY005MEZV?=
 =?utf-8?B?dmphRTYwaS81cG55bGhqK0k5OGdWcFdSREUzVVpib0NtVTFQMi8xU3ZzZjhq?=
 =?utf-8?B?aGJFUStvU1JOV3hZZEhqVnFKOU1DVEFUZ0hhRnRXY055bU1qS081cjZDalhC?=
 =?utf-8?B?M3ZBT1NQRTBTTWZjQk4yaWlvSkVJTnBpNkFxRytKMllSSkJpREovSGR3R3NN?=
 =?utf-8?B?SmsyU3U0cDdmSm9mQjJWdW1mWTQ4bHhXRU8yVWI2ZTRWc2RpRUU3N1JlMndU?=
 =?utf-8?B?a2pBcjJRQXpyMDdCbXN4dCs3cGs0YTNLamRoUVozWmhDZVlVRXc2T05zQ21F?=
 =?utf-8?B?OHFjYWFrQjFQaEtmOHVpeWhTVEgrOER0c21qMnFrSTlMYlZ2UFZyR3NSMDBw?=
 =?utf-8?B?R2Eycjg5V0FYdzdTbm8rUG01b1R6VTdPM3NYbGo2eVM5R01URXBTNmVrTHhD?=
 =?utf-8?B?OHJBWGduYlJZNFZWUks4ZGhUc1NmbG81c1diS0ptamZ5R1p0K0NSV2JJbkhI?=
 =?utf-8?Q?NwV01HA55MWPsC7k=3D?=
X-OriginatorOrg: citrix.com
X-MS-Exchange-CrossTenant-Network-Message-Id: cad178ae-37a9-42a4-de31-08de9f8fee12
X-MS-Exchange-CrossTenant-AuthSource: CH8PR03MB8275.namprd03.prod.outlook.com
X-MS-Exchange-CrossTenant-AuthAs: Internal
X-MS-Exchange-CrossTenant-OriginalArrivalTime: 21 Apr 2026 10:22:45.8181
 (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: CgvwhJbbavZlB7MfjWs+sEc22upr65Zw5WDvD0Q6vp56Au0muqZp++WaYvsfvxLVCVDAqFp/xVMFg8YnOq3EEv5rAfvkiLvLDL7ssS1Q6Dw=
X-MS-Exchange-Transport-CrossTenantHeadersStamped: PH8PR03MB989185
X-purgate-ID: tlsNG-42698a/1776766969-7EB70F3B-D4BCD1D6/0/0
X-purgate-type: clean
X-purgate-size: 2159

On 21/04/2026 7:39 am, Jan Beulich wrote:
> On 20.04.2026 19:46, Andrew Cooper wrote:
>> The encoded MUL is 64 bits, so writes %rdx too.  At a minimum, this needs
>> expressing as a clobber.
> I'm embarrassed of missing this.
>
>> Also fix a logical disconnect between 'overflow' being the carry flag not the
>> overflow flag.  CF and OF are always the same for MUL instructions, so use the
>> flag which matches the variable name.
> I don't mind this too much, but the use of CF was deliberate: Imo OF is
> relevant to signed arithmetic only, whereas CF is the flag to use with
> unsigned operations.
>
>> Fixes: d5c70a51bfbe ("x86/APIC: handle overflow in TMICT calculation")
>> Signed-off-by: Andrew Cooper <andrew.cooper3@citrix.com>
> Reviewed-by: Jan Beulich <jbeulich@suse.com>

Thanks.  I could rename the variable to carry instead then?  Either works.

>
>> I've kept this form because it produces best code generation for GCCs which
>> support flag outputs.
>>
>> An alternative would be to capture product_hi and check the nonzero-ness, as
>> that's how OF/CF are produced in hardware, which would be better code
>> generation on very old GCCs.
> We could fit both, by further widening the use of ASM_FLAG_OUT().
>
>> --- a/xen/arch/x86/apic.c
>> +++ b/xen/arch/x86/apic.c
>> @@ -1317,9 +1317,10 @@ int reprogram_timer(s_time_t timeout)
>>  
>>          apic_tmict = UINT32_MAX;
>>          asm ( "mul %[expire]\n\t"
>> -              ASM_FLAG_OUT(, "setc %[cf]")
>> -              : "=a" (product), [cf] ASM_FLAG_OUT("=@ccc", "=qm") (overflow)
>> -              : "0" ((unsigned long)bus_scale), [expire] "r" (expire) );
>> +              ASM_FLAG_OUT(, "seto %[of]")
>> +              : "=a" (product), [of] ASM_FLAG_OUT("=@cco", "=qm") (overflow)
> Noticing only now - for the non-flag-output case this should be "=&a". With
>
>> +              : "0" ((unsigned long)bus_scale), [expire] "r" (expire)
> ... %rax also being an input, there's no risk of the compiler using the
> register for the other input, but still. Would you mind making that adjustment
> as well, while at it?

Ok.

~Andrew


From xen-devel-bounces@lists.xenproject.org Tue Apr 21 10:24:33 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 21 Apr 2026 10:24:33 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1288801.1569039 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wF8HK-0006VX-CU; Tue, 21 Apr 2026 10:24:26 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1288801.1569039; Tue, 21 Apr 2026 10:24: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 1wF8HK-0006VQ-9x; Tue, 21 Apr 2026 10:24:26 +0000
Received: by outflank-mailman (input) for mailman id 1288801;
 Tue, 21 Apr 2026 10:24:24 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92) id 1wF8HI-0006VI-M8
 for xen-devel@lists.xenproject.org; Tue, 21 Apr 2026 10:24:24 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wF8HH-003Jx8-VP
 for xen-devel@lists.xenproject.org; Tue, 21 Apr 2026 12:24:23 +0200
Received: from [10.42.69.9] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <jbeulich@suse.com>)
 id 69e7504e-bab6-0a2a0a5309dd-0a2a4509bd7e-34
 for <xen-devel@lists.xenproject.org>; Tue, 21 Apr 2026 12:24:23 +0200
Received: from [209.85.128.41] (helo=mail-wm1-f41.google.com)
 by tlsNG-bad1c0.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.1)
 (envelope-from <jbeulich@suse.com>)
 id 69e75057-2497-0a2a45090019-d1558029cc86-3
 for <xen-devel@lists.xenproject.org>; Tue, 21 Apr 2026 12:24:23 +0200
Received: by mail-wm1-f41.google.com with SMTP id
 5b1f17b1804b1-48984d29fe3so24225595e9.0
 for <xen-devel@lists.xenproject.org>; Tue, 21 Apr 2026 03:24:23 -0700 (PDT)
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-4891cca5743sm150155185e9.9.2026.04.21.03.24.22
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Tue, 21 Apr 2026 03:24:22 -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=google header.d=suse.com header.i="@suse.com" header.h="Content-Transfer-Encoding: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=1776767063; x=1777371863; darn=lists.xenproject.org;
        h=content-transfer-encoding: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;
        bh=Ds/NgsiTz5/hi/HIUrMoZfylWeyyQZPp8ypQua8kOB0=;
        b=CTl95oidWLIOIqPs8TOVGXxZqFkvPNQKuk8yLZ4o/bP0z5xybMz3Hduqo2zru/MEfN
         E2H5JqthIuXLjJtthr7Pw5+2SxVBYYq7B2jJTQQDYw35N8CngFSGf78ARITbMJPqm+rj
         3hfjOoC6cUgcjPf6zAnCcdDd2cAC2gh94wJZV+rUkXXJmD9mivPpRDk6s3uNH2sCHZLT
         dI6kq6B75wzvxZpjkoQslg/VPs87BojB2vyQGuX3HESHYxt4nQm3EdhvJKBQReYqWOYn
         gTemCkCQymbofl6enHG7h+afwwF67MZp6lInyEPJxnyf+3HXp/TtrqhQOAfY7BJVRQIQ
         rlDQ==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20251104; t=1776767063; x=1777371863;
        h=content-transfer-encoding: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;
        bh=Ds/NgsiTz5/hi/HIUrMoZfylWeyyQZPp8ypQua8kOB0=;
        b=gqDkNGeLhmAITyQtvkHSoqCqFTZJVI7YGtyZKA1+NGcTxvlQhlIPyPvYCLA+j6bDK6
         Sg+0MUnyxRbIFGt1l2WjqXTILDFGufsjVaEK3BvFEKsdZcnakAaXUPwzAaDnJb7FBPYG
         75vz/DX4j+HlpgTXH/ttGEs/a8RmD6nOkiZoDWaQwM8Yvqr5mxBG6tlruoZyY21pmynE
         qh+79GdZtCBlxITBQIgf61diDwxN9eYmnC7560V0zhL19jPat7/A07aLVGFTFnzn5q+r
         vwDBT0h/WmW+TnQNUCe5ZhqoHR7RYtnIU7CvrsSCLpj/CCHVnMhgHR7b7cIIVDusWA2j
         bvag==
X-Forwarded-Encrypted: i=1; AFNElJ+O4HNEW729qaflzeqLrSQ+stT/wo/GyAGa1VtJGcZ+tkE1nFyOc2PfzpO9qipWzNTynBKqamFEGC8=@lists.xenproject.org
X-Gm-Message-State: AOJu0YwbPK9fifz7Y8N0moVQoRDodR40OLqfU/9ciAfu3XYRb0vz2ymC
	oAcG+GlXyOw4Tzg3L83KHlSkvt0TYprjhme4aYCufKXcy9LgIMoiIC2FC+EkqXghEw==
X-Gm-Gg: AeBDiev/ysFeETtk4i74kSW8RlFjxAUY0lDwfRTqlRAwHqYJfNzM9SfFz8tj86d4Voj
	GZ7ldVyDwa/6xTr24YjE6dMJWATGuy61ffbs4WddaOhSbR0fNkkR7+i00VlHkx/mqmCicJoG4EI
	1gVT5GdkmvV08OXkEn0tOwB07zoiqlqbSYwMGdOA2EahC2RwntKFEg7T1UU5qMbE3NUdBXvWxrG
	v/MsM6BFlZPOLxlh4muXIpic5VpkNZYSoRNumSzVTxRW20vLiLUUL7eLU+OjHZKLV475mjoUY4L
	luHSwM2dEpmYjKKsTM/L5fxf8dHnEQQj2t2QCoMvz2NTCcuxEHEzvDSu9BeiKoBuVBsuiK1X2/c
	1dKuxBT3fkAn/K0DNyE69OXUd8tdpxfXqiZiBOd72QsBA1m3vQ6rtAY29tVym8Wd4vE94pEgadY
	cTKVGiZDi7MHwXitqSI0hcS+CbD+y7rTI/VlTS7hNnF+2SpvRL1AtgYHAcTttUziAdbnIpyZHKB
	19HEVAXfIsUXt8zthx4k6yOAw==
X-Received: by 2002:a05:600c:4e4f:b0:488:d6eb:e63c with SMTP id 5b1f17b1804b1-488fb778703mr252973015e9.15.1776767063174;
        Tue, 21 Apr 2026 03:24:23 -0700 (PDT)
Message-ID: <a6d09913-3de1-463f-8143-69911af0150e@suse.com>
Date: Tue, 21 Apr 2026 12:24:21 +0200
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH v3 11/12] xen/riscv: add definition of guest RAM banks
To: Oleksii Kurochko <oleksii.kurochko@gmail.com>
Cc: Romain Caritey <Romain.Caritey@microchip.com>,
 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.pau@citrix.com>,
 Stefano Stabellini <sstabellini@kernel.org>, xen-devel@lists.xenproject.org
References: <cover.1775836193.git.oleksii.kurochko@gmail.com>
 <8280fe1a5effacd595d3dd69b2b11e06226411b2.1775836193.git.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: <8280fe1a5effacd595d3dd69b2b11e06226411b2.1775836193.git.oleksii.kurochko@gmail.com>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
X-purgate-ID: tlsNG-bad1c0/1776767063-416B0A53-5C2EA19A/10/73395122804
X-purgate-type: spam
X-purgate-size: 1373

On 10.04.2026 17:54, Oleksii Kurochko wrote:
> The dom0less solution uses defined RAM banks as compile-time constants,
> so introduce macros to describe guest RAM banks.
> 
> The reason for 2 banks is that there is typically always a use case for
> low memory under 4 GB, but the bank under 4 GB ends up being small because
> there are other things under 4 GB it can conflict with (interrupt
> controller, PCI BARs, etc.). So a second bank is added above that MMIO
> region (starting at 8 GiB) to provide the remaining RAM; the gap between
> the two banks also exercises code paths handling discontiguous memory.
> For Sv32 guests (34-bit GPA, 16 GiB addressable), bank0 provides 2 GB
> (2–4 GB) and the first 8 GB of bank1 (8–16 GB) is accessible.
> 
> Extended regions are useful for RISC-V: they could be used to provide a
> "space" for Linux to map grant mappings.
> 
> Despite the fact that for every guest MMU mode the GPA could be up
> to 56 bits wide (except Sv32 whose GPA is 34 bits), the combined size
> of both banks is limited to 1018 GB as it is more than enough for most
> use cases.
> 
> Add inclusion of asm/guest-layout.h to asm/domain.h to make dom0less
> common code build happy.
> 
> Signed-off-by: Oleksii Kurochko <oleksii.kurochko@gmail.com>

Again pretty hesitantly:
Acked-by: Jan Beulich <jbeulich@suse.com>

Jan


From xen-devel-bounces@lists.xenproject.org Tue Apr 21 10:26:09 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 21 Apr 2026 10:26:09 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1288811.1569049 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wF8Iy-00070x-Mg; Tue, 21 Apr 2026 10:26:08 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1288811.1569049; Tue, 21 Apr 2026 10:26: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 1wF8Iy-00070q-JX; Tue, 21 Apr 2026 10:26:08 +0000
Received: by outflank-mailman (input) for mailman id 1288811;
 Tue, 21 Apr 2026 10:26:07 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <jbeulich@suse.com>) id 1wF8Ix-00070i-9d
 for xen-devel@lists.xenproject.org; Tue, 21 Apr 2026 10:26:07 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wF8Iw-00BiZU-MM
 for xen-devel@lists.xenproject.org; Tue, 21 Apr 2026 12:26:06 +0200
Received: from [10.42.69.4] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <jbeulich@suse.com>)
 id 69e750ba-e002-0a2a0a5209dd-0a2a4504b67e-26
 for <xen-devel@lists.xenproject.org>; Tue, 21 Apr 2026 12:26:06 +0200
Received: from [209.85.221.50] (helo=mail-wr1-f50.google.com)
 by tlsNG-ebf023.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.1)
 (envelope-from <jbeulich@suse.com>)
 id 69e750be-1dec-0a2a45040019-d155dd32c153-3
 for <xen-devel@lists.xenproject.org>; Tue, 21 Apr 2026 12:26:06 +0200
Received: by mail-wr1-f50.google.com with SMTP id
 ffacd0b85a97d-43eb05b1875so2378287f8f.3
 for <xen-devel@lists.xenproject.org>; Tue, 21 Apr 2026 03:26:06 -0700 (PDT)
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-43fe4e4ffa8sm36112655f8f.35.2026.04.21.03.26.05
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Tue, 21 Apr 2026 03:26:05 -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=google header.d=suse.com header.i="@suse.com" header.h="Content-Transfer-Encoding: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=1776767166; x=1777371966; darn=lists.xenproject.org;
        h=content-transfer-encoding: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;
        bh=BbRLHLdW0tSJiPhfulYap5Dp2mQa0kMGShwBkPU6auc=;
        b=c0kBnE8jg7hrQKrurgaw+IDhb3KLZwgRs0N/MO8tiIf9nLnTpNvLwt+HpdKTW2Vwle
         geGiEAcYdQQTA5j2EiBD0G2xB/nTK7ww+9k/J7pWj4mJpPSKYO34JODpUixbi234cDC0
         fGuSXBXxzmMoDJeQHQYTjmO9RgHEWL+QzcE0A2XnipBY6VNfYSK0ByYVk2DY3bKPGQ89
         yJYwwNWZPX7IsfR1Ca+1LCD9v86KfREk1a45IMZJm9aQuxLDBRUo0HETciMtmLXlaW/P
         LJeFgDIMGYvMbSm7uuKjpCvMBDfPY2e0/nIBYeHttS1wsFJPFioAl0et8Tx6B4KmgOyg
         bjNg==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20251104; t=1776767166; x=1777371966;
        h=content-transfer-encoding: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;
        bh=BbRLHLdW0tSJiPhfulYap5Dp2mQa0kMGShwBkPU6auc=;
        b=RZr9XxrY+byY8XfaKNomRgbZr8kRTisHN3ouQx0z3IK4Iic7Gvw5uMxHLQwiK06+gE
         Yg08MZD0lAJqhhTXZTZFa6XntLDOTIsHcDsRRgXxxQIgSA93a5J36HOH0jEkjfDmF3O0
         eRdyKnpE2hOHetuSFj8rw3D3HRCRLWo6bWxVXrvdE02lfEFJJANFDWG131D9uk6mYoy4
         Jg+zUF1pIeNGLihCHri/xFst4yMUugv3hmcY/V+iSYEjyA5yklqp2mGYrwm+i247XtN1
         4q4zt4NW1b5WushBh3iF6F2bunw2Ra98Evk5NJ//YZz3Ix7nffPKHff68dspyGTY3vu5
         o6dQ==
X-Forwarded-Encrypted: i=1; AFNElJ9Jq4Qd4YvEUDG7mHZVL9gFnb9KDcO29CoilC0zEtKXhfDZGev3OlstAZwAYlOOzCW2AkuUgB1hXk8=@lists.xenproject.org
X-Gm-Message-State: AOJu0Yzb8jh8cHW2Xa4ugpWAa7bjLX+jfvICoDXw5UqVNu+XSvL7O1jp
	xEv9VOBKjoQUU76WyTplCuUaOm2y/NLjS1DKxbBySBgXSC2NdiB70/egiPjBrpOReg==
X-Gm-Gg: AeBDievlTjlFYtWCcDmc8/BqNwcFSS2pT777SCxLWBzv9XI9gO+tHYLXxYWwLh6jqnH
	me3pv/OYaW8AbVxh0C2Dgg0jSmArh6uunJRaYMixh+eVFnQdc00hihqCPQopoj1VVlOQrI8EsHx
	8P0Yy8q80xn78eklk4Zmq47OwbLXBOtmEmJRrT7gxbyMXCgkCdYRnglh5vO8oL4rjsCjRp/viK1
	W/a20RkNsNvWoudiM7fyUEfuSD7AyuDlf2i9DBZ9oaDKLwjKUYYCz7JMGJXXfQTMPAw+fzDQbOn
	bMNJHwC1jSYPZoelkngGsFWgDAYn9jaj2RNlGAIVKrFpzQj0EMMGcktbQ4OSBUeTaKwGj950NHl
	aHsYvTqHLc+pDPwS1bou3uT8OavBurh3l3wE1oDuGP2j23FFxMwQbzOCNKViEJRJ/b1/LJ7mwkV
	lIiR2/QQ/YMXmy/wkRp0XoWqGFNyeGGW8Tu/WjQHw/AyK3ZyQv9/y7IIltGraNk9fC7JRPJDrOj
	A4JPNQeQgZpgLog6AeR/cLx4w==
X-Received: by 2002:a05:6000:2888:b0:439:c299:4d8f with SMTP id ffacd0b85a97d-43fe3dc61e3mr26209578f8f.17.1776767165814;
        Tue, 21 Apr 2026 03:26:05 -0700 (PDT)
Message-ID: <287cbd05-869d-40b2-b4c1-179f44534fff@suse.com>
Date: Tue, 21 Apr 2026 12:26:04 +0200
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH Xen 4.20] x86/apic: Fix asm() constraints in TMICT
 calculation
To: Andrew Cooper <andrew.cooper3@citrix.com>
Cc: =?UTF-8?Q?Roger_Pau_Monn=C3=A9?= <roger.pau@citrix.com>,
 Teddy Astie <teddy.astie@vates.tech>,
 Xen-devel <xen-devel@lists.xenproject.org>
References: <20260420174605.706329-1-andrew.cooper3@citrix.com>
 <85fa4bf2-e288-4376-aa74-c3aef511c2b6@suse.com>
 <e7257423-bc5e-4a71-9c23-d9b939464b67@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: <e7257423-bc5e-4a71-9c23-d9b939464b67@citrix.com>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
X-purgate-ID: tlsNG-ebf023/1776767166-2AD643FF-FB2B7A93/0/0
X-purgate-type: clean
X-purgate-size: 1006

On 21.04.2026 12:22, Andrew Cooper wrote:
> On 21/04/2026 7:39 am, Jan Beulich wrote:
>> On 20.04.2026 19:46, Andrew Cooper wrote:
>>> The encoded MUL is 64 bits, so writes %rdx too.  At a minimum, this needs
>>> expressing as a clobber.
>> I'm embarrassed of missing this.
>>
>>> Also fix a logical disconnect between 'overflow' being the carry flag not the
>>> overflow flag.  CF and OF are always the same for MUL instructions, so use the
>>> flag which matches the variable name.
>> I don't mind this too much, but the use of CF was deliberate: Imo OF is
>> relevant to signed arithmetic only, whereas CF is the flag to use with
>> unsigned operations.
>>
>>> Fixes: d5c70a51bfbe ("x86/APIC: handle overflow in TMICT calculation")
>>> Signed-off-by: Andrew Cooper <andrew.cooper3@citrix.com>
>> Reviewed-by: Jan Beulich <jbeulich@suse.com>
> 
> Thanks.  I could rename the variable to carry instead then?  Either works.

I'd slightly prefer that alternative, yes.

Thanks, Jan


From xen-devel-bounces@lists.xenproject.org Tue Apr 21 10:28:16 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 21 Apr 2026 10:28:16 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1288820.1569057 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wF8L1-00082m-2W; Tue, 21 Apr 2026 10:28:15 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1288820.1569057; Tue, 21 Apr 2026 10:28: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 1wF8L0-00082f-WA; Tue, 21 Apr 2026 10:28:14 +0000
Received: by outflank-mailman (input) for mailman id 1288820;
 Tue, 21 Apr 2026 10:28:13 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92) id 1wF8Kz-00082Y-PZ
 for xen-devel@lists.xenproject.org; Tue, 21 Apr 2026 10:28:13 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wF8Kz-00GeKC-6P
 for xen-devel@lists.xenproject.org; Tue, 21 Apr 2026 12:28:13 +0200
Received: from [10.42.69.7] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <jbeulich@suse.com>)
 id 69e7512e-2eae-0a2a0a5409dd-0a2a45079470-24
 for <xen-devel@lists.xenproject.org>; Tue, 21 Apr 2026 12:28:13 +0200
Received: from [209.85.128.53] (helo=mail-wm1-f53.google.com)
 by tlsNG-ef75cf.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.1)
 (envelope-from <jbeulich@suse.com>)
 id 69e7513d-229c-0a2a45070019-d1558035e87b-3
 for <xen-devel@lists.xenproject.org>; Tue, 21 Apr 2026 12:28:13 +0200
Received: by mail-wm1-f53.google.com with SMTP id
 5b1f17b1804b1-488ff90d6c7so30984845e9.2
 for <xen-devel@lists.xenproject.org>; Tue, 21 Apr 2026 03:28:13 -0700 (PDT)
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-488fc1cfbf2sm371587475e9.15.2026.04.21.03.28.11
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Tue, 21 Apr 2026 03:28:11 -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=google header.d=suse.com header.i="@suse.com" header.h="Content-Transfer-Encoding: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=1776767292; x=1777372092; darn=lists.xenproject.org;
        h=content-transfer-encoding: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;
        bh=+yA9uuPRTggtI3vfSlk1mEZeJ+vSAsakm0Eo+IC9+wQ=;
        b=VacsBTftq0GUVCWr0Ubr8j3zy5iKeZ8yVc3kQMKZvU5hFJuK1SkLgFcJpm3cLQdUgx
         hmGpMn3L6Q5Qkg0getKOOUvfQStj46Qaik+I97iL/O7CIGhYzAaqYdD1ndK6ukd88eea
         Lw5UVhkvWMabfxLldU8gErrifrtbprZC3yf0McozObJrFB3YPZJ8zIGKc+dHoyTNqCqf
         wukPAOeIKgBG6YiTdHFklOnHM1Nlo6YGuZh0FazcVjVN7xtfkoUsgCCZPbR4dYOxB6sO
         t6og1B2/OYpFQlig855NxokFGLAfR+WCoIe23ULhKa6aEalkx35oWgfVmpItht51+OY7
         XeEg==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20251104; t=1776767292; x=1777372092;
        h=content-transfer-encoding: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;
        bh=+yA9uuPRTggtI3vfSlk1mEZeJ+vSAsakm0Eo+IC9+wQ=;
        b=FMtTN2Y3tGXNFP3vji+/c43Zaz6ER7v2WsvHWMnoazn76Wb/EJPj5a5wjp5kpYKdyM
         ZxBlEfL4F9djlVJnD+fLUuGbLxFLLHDChMvNBFvHSUgI8pIoex/9g3FAUaSstRjoR8vV
         f29cOC1XZ4tvMnUrocEFVkOpxilQqfbrqOXJRKAst/Qo/AFA8TYYreEYpgNMASLL8H2r
         1J+KWQXx7oprP5Q6Jmog5j2ok4gW+1y+F6QaMY8yJawfIphgLG4I7He7ObUT6hwB4NFB
         QPvD+uq+9U5KcrKHZCYOO3jzM9IJGxqs4N9A3zAO/ihM2Iej/rh36aMrvcectXfLrg7N
         IL+Q==
X-Forwarded-Encrypted: i=1; AFNElJ+M0+03df5jmznIWdu+hh40dtXjo8qtfrProv81My9ChK9weGHf798Y11ub+mgoVbzfvR3ue/r1ovM=@lists.xenproject.org
X-Gm-Message-State: AOJu0YyDyYw19IYIOUYFVkWQFEZsfBngWPdwPJwO8pEVKjy3gRbQhX/g
	nkm36CCAFBynpL6kdqMseSxq499jxgC31sIX8QT6D2OhXsr6bmUlqstNTL72t8ZRmA==
X-Gm-Gg: AeBDieu+SISZ7c6bik4ft2u2IKMmg8DJY+9vSagaBrO2404djS4K8cdFp9E5yvZYJGz
	8rfy1xCFxUhL+Pel4GBU8JQZmPxM7bjaO2HT3skmFUKnN0M5ymwAYxY6BRbpt3YMyNIk/sBuv+K
	e/knb6Seys2vJJ7XG4/caZlRNpo1i34lfyOyk8CQuWAux14zVV7vRlYQapZymddp6Jj7id/LRnb
	uDgXmiRxYouXgTAFG4/SXKFhBY54VoJNdMQUEjegaWPujHWKpMVeyXNze5zCjio5GWsDhoeQK07
	8R9rMkrw9J68hxwEhLJE8zk+6PYzVz4m/1lL9993pKck2CZ+Mq2qK1UTsM4fgF6DHCvMAATSJ6v
	MSyZzFfRn8cTpAIDszhFvl0rA2lwv8tT8RWOP3D1aCStHXowl7Op+IAdoNpHQ4v8b1G4O1Omtql
	Ks1dGysegr5OxasGnO0SD56M9nJm2k80mNSw6FM8WFNfzK12O/0YzD8CIX0H2iT0R4NGHBlPUwt
	IswT1PaGBqRjjNQ4ISuE4Z7726tSjlzq7uE
X-Received: by 2002:a05:600c:3e1a:b0:489:1ca2:eafd with SMTP id 5b1f17b1804b1-4891ca2ee65mr112590685e9.11.1776767292001;
        Tue, 21 Apr 2026 03:28:12 -0700 (PDT)
Message-ID: <a7143b08-5355-42cf-b9c9-fcc8781708ed@suse.com>
Date: Tue, 21 Apr 2026 12:28:10 +0200
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH v5] xen/riscv: allow Xen to use SSTC while hiding it from
 guests
To: Oleksii Kurochko <oleksii.kurochko@gmail.com>
Cc: 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.pau@citrix.com>,
 Stefano Stabellini <sstabellini@kernel.org>,
 Romain Caritey <Romain.Caritey@microchip.com>, xen-devel@lists.xenproject.org
References: <2d5892447d6b6ad72962b8bbcb7c4d865b9e9989.1776765651.git.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: <2d5892447d6b6ad72962b8bbcb7c4d865b9e9989.1776765651.git.oleksii.kurochko@gmail.com>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 7bit
X-purgate-ID: tlsNG-ef75cf/1776767293-1505AC48-4914A7CB/10/73395122804
X-purgate-type: spam
X-purgate-size: 1592

On 21.04.2026 12:18, Oleksii Kurochko wrote:
> OpenSBI currently does not advertise the SSTC extension via the device
> tree, so if SSTC support is detected by Xen the riscv_isa bitmap is updated
> manually. Furthermore, removing the "sstc" string from riscv,isa is not
> a reliable way to disable SSTC, because OpenSBI probes support by
> attempting to access CSR_STIMECMP.
> 
> Introduce a runtime probe in Xen to determine whether SSTC is available.
> The probe attempts to read CSR_STIMECMP using csr_read_safe(). If the
> access succeeds, SSTC is considered available; if a trap occurs, it is
> treated as unsupported.
> 
> When SSTC is detected, Xen may use it internally to program timers.
> However, the extension is not exposed to guests because the required
> context switch handling for the SSTC CSRs is not yet implemented.
> 
> Note: clearing RISCV_ISA_EXT_sstc from the DTS riscv,isa property is
> deferred to a follow-up patch. Also, the corresponding HENVCFG bit is
> not set so guests fall back to the SBI timer interface. Timer requests
> are then handled by Xen via the usual SBI interception path.
> 
> Introduce set_xen_timer() to abstract how the timer is programmed,
> either via the SSTC extension or an SBI call.
> 
> Drop sbi_set_timer() as it is more than enough to have only introduced
> set_xen_timer().
> 
> Drop "SBI v0.2 TIME extension detected" message to avoid confusion
> which set timer function is really used.
> 
> Signed-off-by: Oleksii Kurochko <oleksii.kurochko@gmail.com>

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



From xen-devel-bounces@lists.xenproject.org Tue Apr 21 10:28:40 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 21 Apr 2026 10:28:40 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1288828.1569066 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wF8LQ-0008Tg-A5; Tue, 21 Apr 2026 10:28:40 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1288828.1569066; Tue, 21 Apr 2026 10:28: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 1wF8LQ-0008TZ-7L; Tue, 21 Apr 2026 10:28:40 +0000
Received: by outflank-mailman (input) for mailman id 1288828;
 Tue, 21 Apr 2026 10:28:39 +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 1wF8LP-0008TN-9s
 for xen-devel@lists.xenproject.org; Tue, 21 Apr 2026 10:28:39 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wF8LO-00E8bz-Mr
 for xen-devel@lists.xenproject.org; Tue, 21 Apr 2026 12:28:38 +0200
Received: from [10.42.69.1] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <andrew.cooper@citrix.com>)
 id 69e75156-5cb7-0a2a0a5109dd-0a2a4501bdfc-0
 for <xen-devel@lists.xenproject.org>; Tue, 21 Apr 2026 12:28:38 +0200
Received: from [40.93.198.13]
 (helo=CY7PR03CU001.outbound.protection.outlook.com)
 by tlsNG-d62444.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.1)
 (envelope-from <andrew.cooper@citrix.com>)
 id 69e75154-c1f2-0a2a45010019-285dc60d3895-4
 for <xen-devel@lists.xenproject.org>; Tue, 21 Apr 2026 12:28:38 +0200
Received: from CH8PR03MB8275.namprd03.prod.outlook.com (2603:10b6:610:2b9::7)
 by SA1PR03MB989204.namprd03.prod.outlook.com (2603:10b6:806:4de::8)
 with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9846.16; Tue, 21 Apr
 2026 10:28: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%6]) with mapi id 15.20.9818.033; Tue, 21 Apr 2026
 10:28: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=sGSeaMa7G6ZloMVhCEuz6Q9We8IRz5XMH9QOejluZWrDiQYDt0xVc02IUeGdzS+NzTI42uVwr4fXogs5D7c+5wjUTMqKWxpv1mxynX6tCa8Iti/iWS+Ag8+XICAeuuzuDNejDij9yau31Ry2GzOKBOT4yvsX21rafY/YQsa8U6Wdf+XlBZ08tdA/tBjqtsO26be1mQps76pyfTBL++0V8zPelW10OFDVks1jQPnPQFpipJc18MitA5jEsXf+pPGdsfIkD7E8onYN2CW24sK4eLF6LvKoZNyQlL8u0SEJ1xg6VBnqSAELEIE1auBJ3kyAH0Lc90MGgMyf+pebFuRBTw==
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com;
 s=arcselector10001;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1;
 bh=REY8vBd5U172RlIBJPRvkNnG6pMvDq7I5it2hL6vetE=;
 b=ougdkxddTGaE0S9RmxzvyX4R2MjSUozNkVHY+hlm93k+MIYcf9aM1lnqPD5xk3msCOPkdM3dfvUQHikaAkCqAqKBsT2pTdVhl79mCid+3U11bVo++VhaQo1XG45q48A/6HplAELllO5vb632FQBgPquwHARuAMg7BU4JcgTcnx3I8hdARrH0OUkdfqkJGwTSmd1OLu5zZXqF0dzXgMPQDn8HRZQkFwcZkpu+ZRLac/2P8tCGGd+fGAQvYbXqER0w2mmSPv98ADzMyyx3HCF3YU7ioSODK512X6qqHhXtG3JkyWJMN42YPqly2OR7RzICmdz0Lr6dM/JgrMnV8tHY9w==
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=REY8vBd5U172RlIBJPRvkNnG6pMvDq7I5it2hL6vetE=;
 b=G+fWY0vX3vX5xTuR4QVCzumUfNA/PGWF9VW4Qm8G7D8FKc+9OfrmPz1UlneOH9k7Y/BBPLEIHpANCRhLt4sX5T2+8t+A7ZWHGqK/bx/TzwVwvCRIBHUcClqhAbFVd6hqT/KOLWTuHjSDFjSDoosHq2G1Fm3lYoP8ZM5aH+OSGLA=
Authentication-Results: dkim=none (message not signed)
 header.d=none;dmarc=none action=none header.from=citrix.com;
Message-ID: <0e523b85-a2c6-4507-a376-872f85852883@citrix.com>
Date: Tue, 21 Apr 2026 11:28:30 +0100
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>, =?UTF-8?Q?Roger_Pau_Monn=C3=A9?=
 <roger.pau@citrix.com>, Teddy Astie <teddy.astie@vates.tech>
Subject: Re: [PATCH 0/2] move KB() etc to make it usable by x86'es mkelf32
To: Jan Beulich <jbeulich@suse.com>,
 "xen-devel@lists.xenproject.org" <xen-devel@lists.xenproject.org>
References: <5f299d7a-be1b-4bdb-a10b-37c334606bdf@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: <5f299d7a-be1b-4bdb-a10b-37c334606bdf@suse.com>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 7bit
X-ClientProxiedBy: PA7P264CA0208.FRAP264.PROD.OUTLOOK.COM
 (2603:10a6:102:36d::10) To CH8PR03MB8275.namprd03.prod.outlook.com
 (2603:10b6:610:2b9::7)
MIME-Version: 1.0
X-MS-PublicTrafficType: Email
X-MS-TrafficTypeDiagnostic: CH8PR03MB8275:EE_|SA1PR03MB989204:EE_
X-MS-Office365-Filtering-Correlation-Id: 2abf7898-71b2-4774-a793-08de9f90be5c
X-MS-Exchange-SenderADCheck: 1
X-MS-Exchange-AntiSpam-Relay: 0
X-Microsoft-Antispam:
	BCL:0;ARA:13230040|1800799024|366016|376014|56012099003|18002099003|22082099003;
X-Microsoft-Antispam-Message-Info:
	rdaCQOXnHTbiod1fKySNXGpDR6mBc32yRwhgbnZibqaN1Y8KE9xwPUe3caoOQfFicFQ85+s42THHpE2UWXov8y9sPdiYZOBitkAnkALXNLNlL59/K+M5+bPntz4jLzvbLzHLdW+kpQS9N/jqOwWg7w0xoALLPi9xWEmVGszKSMkolAiQ6wuvsJ74Z6AlBughVCq+jXEiXiT7GmtOyMimqW+dTUPSJd2k19HTyxLVAHCU3GubC1A6JCVJgFpCXdqcygrktVejDdfIivCKn9mPc1d8FqtRUgT7ETVzmQThwyhHRXX51eDh3qUdfA7OBEbPPBx/r7gmbLwcweye2XG1bpBe8oFpYIGQ66ttNx36dSW8yGZlHB61Hrrug3e6VpYq8yyk5pxW48kXxCfxNAA0J8Tj04bv+SrqdKbBQYi88Hv0mmcO7Ykxcp9TyEfD0IawHax65W+HJbjuk6pP7zg24JCHXhrAsAuAf61b2tUaUkxIrXXQovWkqgQbpDqjts6fXSodnf9bQXcvhhJ70o3+gW/vZxYtH7w4/HVTF24yHlV1jA7up007I5gOq8S8Ze+LBrAAQ6/AHap3Nx4AB56buFd4WGTrPkCguYtHd6Oj0dCHIs5HgiTvo8mLyk6Gc5j5GiS1KmtBbtg3lF5wEZ19AM1T/ptIQyY+M0+VYeb6h385tAcq6g6fItLqQXaspw7kAiuu5tt3Ppyv0iVADekFbWL9TQ5Q2iPeFcu32Y2uM6k=
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)(56012099003)(18002099003)(22082099003);DIR:OUT;SFP:1101;
X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1
X-MS-Exchange-AntiSpam-MessageData-0:
	=?utf-8?B?cjd2R3lmMGVyNUZ1dk1jQ1FGZ000eWFZaFdyRHhkbVF3MTQ1UVk0MkMvNXh2?=
 =?utf-8?B?aDdEYmt5aktURDBZbi9MRHMyQkluS0xhZENyYi9tQkRJMzVmUDFZNVF3UCtR?=
 =?utf-8?B?dTUrRVpNc01rY0VkTkxBNUEvT2xvY2JlclFva3E4OERsdkczaG5mRkg0MTl5?=
 =?utf-8?B?ajFxUVNJTmE5KzUwdVlzaEJFRzlqMDBsd3lZNG45ZVU5Sk1YSTAyTEpZTTg3?=
 =?utf-8?B?K3ZlWGxDeG0rU0IzZ1p1SEZUMWNXYis1RDd3b1JoZjh5cjU5eTNBOVlnYXRX?=
 =?utf-8?B?eHA0emFnL0VDdVphYlhiUlpzY212M2p5NTZkZXN2U2Y5OWdRdzBEcFEvRXcx?=
 =?utf-8?B?NVc5MEpmbjJrWDl6QmxHaGducStNUTJtRmkxY2l6R0RKay9kb0RlUFpaWVRD?=
 =?utf-8?B?MmIxN3Q4algvb0x4cjVLL0M0RkU4Y00xdllMZlJnaU40S2RLY1hmRGpJSDlO?=
 =?utf-8?B?VS94VmVKVyttMFBJaGJmOStKbytVakwwL0IxTHV2Z3dVZmtpVCtrNkJwWDB0?=
 =?utf-8?B?a1B4d1NXa2J0TXZVbnNBeXZ3VjRTU2RUN3gxZ25GbkRISHJaRlo1MUpxY210?=
 =?utf-8?B?cFcyOEYvb2R2aW55YVdWdWx6aGp2SlU3SDlsZ0hZNHhiVU94dWRQYXRPYUpx?=
 =?utf-8?B?aWRwdHZONkVJVXh3R0h5ckJxUDI5YVJpTHFsUVFQdXJCa0txbmR4RTVHcnpz?=
 =?utf-8?B?b1NmaDgzVFlORWZqQW1nOUhFSHo0Z1lpZFcyS0xVeUlWRDRtNXlESkNGMUxS?=
 =?utf-8?B?SW1tRWtyZEtqU0FCK1JRLzlNd0xHSWtXL1RFTWlqendKYkVXS0pqNkxoNFl6?=
 =?utf-8?B?di8rQjg3UWNiUkJqVzB3aGpFRXd4RnRKalVwTUZUbkdWazcvR1h4ZktzSjA3?=
 =?utf-8?B?OXRoZTd3Ny9LWjM4QzU0emtyTUVVK28vYXVsMStiNWJ5V0hyWDJsbHFldmgz?=
 =?utf-8?B?SWhVUkkxT29jS1JIRHp3T2U1cFZ5UDVCQ0QrTHFmeExZR3dQTkxnaUxab09F?=
 =?utf-8?B?UXhlUTY3bVB0dXRDc0dodHRpT2V5eW1FRllmbjd3aHdaY0NSWlp0ZGtPV1kr?=
 =?utf-8?B?ZUJaamExZFdaUWFFQWJZdWtjZWYyeGpTWGx2Wm0vYXg4c2NGVkI1Q090dzFE?=
 =?utf-8?B?a2ZlUTU3ZFFUUWpjb0JCR1pwY05PY1ZWbEg0VVhtblVzbmNwa21rbFdraGlX?=
 =?utf-8?B?RFR0c2g3V3R4eWVTS3Q2djJNUWg0L2EwRkdBb254V2w2Mmc2TWJsRXpGVXVO?=
 =?utf-8?B?aVVGNlhQa21qUkd5OUhSRkJFUmMvV2FpQmZSNEZHd0pMRi9PRjJrWFUwQ1NI?=
 =?utf-8?B?Sng1dFJUaFFFb2E0dVdqVUc0SmFraGE2OHJhbnQyandodnRiK2Rld3h4ZUtp?=
 =?utf-8?B?RnFxclowL1JNbS9MREZ0TjhCNDZSZytYUEF3dkZDbUlUN1hXQko2SkFvdmEv?=
 =?utf-8?B?Z2gzVGdWUzVTdGZVb2VtdFU3bjdJbW8xZnhzZVUvMHRJTWUrNk1TdlFDZ0Iy?=
 =?utf-8?B?aUpWQnlXckppc09yR01OWlJkczB4aFdBWXliNnhlZDZ4TkxucHBIK1pwMWJZ?=
 =?utf-8?B?NEdiczhmMFFscWV6cS9palgxMW44RHJTaENBTkJYK213NWNCQUUyM2RYRFEw?=
 =?utf-8?B?STBuWTZ5NnBkbHlCL3Y5WHQ2eFJSeFRlMjAzMnJML00wY3VGSC9pWFV4L3lj?=
 =?utf-8?B?ZkpFNXdlclo0VmozeXZGSDMxNmpHUkFlL0V3VzVpQzJwanhpTGVCenhPd0Ju?=
 =?utf-8?B?R0p4VnB6NVMwaTBxM2lURVhXbmJJUFRLRWwweDlXREhlVnpGTXppMnpBUHRX?=
 =?utf-8?B?cWhOWnJVSjZ5VlB2MkwrNnVLb0RQNG9LWDBzZzhtTEFpaHNLWXp1WVNXVDlD?=
 =?utf-8?B?VHd6M3ljR2Flc3ZicmcyNWhINVV0UXI2MG1XbGVvcnl2enpWUlFYb2tZTEUy?=
 =?utf-8?B?RUFuUGE3cElLenV3RUFJUXdtTTY0bmFPdGNzcGVOekVzckNKUG9ZbXd2VVJz?=
 =?utf-8?B?eU91V3lTWFZ0ZGdRTUhRdjZIN1pmQlRaVW1sb0kvNGI5RTAyQVRHRXY0dXN2?=
 =?utf-8?B?SjZsOUxhcVBpUlRsRGZXOHpwdzV2eUpIcnZ3UnVQSmpPeXlPdngrUFpmNmRn?=
 =?utf-8?B?K2Vqakp2M2RaRW5jZVBsT1ZxVklmME9iSmVZVE8wb0NXRGtCQXo2Z0o1aHNx?=
 =?utf-8?B?MmozMEpFblhyc2RvK2t0a2dYMFUrRU8yUXB2cVJ4eTN1OGhDbU80MGVINTls?=
 =?utf-8?B?Q205UW9tUmMrU2Q2eVdpUlgxZENIZE1xMzQ4QWZVdFppeG1mTlJzaVNjc3ph?=
 =?utf-8?B?RTMvczJpZU5DY00vWUluNEtHcVA3WnE0NyszRUpmRWlJS3ZERlNrWnlCM3ZB?=
 =?utf-8?Q?rbXRD/zRNhq/C0Lc=3D?=
X-OriginatorOrg: citrix.com
X-MS-Exchange-CrossTenant-Network-Message-Id: 2abf7898-71b2-4774-a793-08de9f90be5c
X-MS-Exchange-CrossTenant-AuthSource: CH8PR03MB8275.namprd03.prod.outlook.com
X-MS-Exchange-CrossTenant-AuthAs: Internal
X-MS-Exchange-CrossTenant-OriginalArrivalTime: 21 Apr 2026 10:28:35.1677
 (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: spABmKhG88jBSUa5f0G67/XmTZYsKjIMvyfSmbUlv90945qhq8Ebb6wPJhhznz0dRD15dYsQDK51p9UWhkZQuEEL95d6FfxFymQ89MpblEs=
X-MS-Exchange-Transport-CrossTenantHeadersStamped: SA1PR03MB989204
X-purgate-ID: tlsNG-d62444/1776767318-BFC74FF4-4C0A2D48/0/0
X-purgate-type: clean
X-purgate-size: 384

On 21/04/2026 9:35 am, Jan Beulich wrote:
> mkelf32.c doesn't want to include config.h; if anything, it would probably be
> autoconf.h which it might include if so needed.
>
> 1: include: move KB() etc to macros.h
> 2: x86/mkelf32: use xen/macros.h

Ah yes, I've been wanting to move them out of config.h for a while.

Reviewed-by: Andrew Cooper <andrew.cooper3@citrix.com>


From xen-devel-bounces@lists.xenproject.org Tue Apr 21 10:34:04 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 21 Apr 2026 10:34:04 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1288842.1569076 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wF8QZ-0001iA-1X; Tue, 21 Apr 2026 10:33:59 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1288842.1569076; Tue, 21 Apr 2026 10:33: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 1wF8QY-0001i3-Uh; Tue, 21 Apr 2026 10:33:58 +0000
Received: by outflank-mailman (input) for mailman id 1288842;
 Tue, 21 Apr 2026 10:33:58 +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 1wF8QX-0001hx-QH
 for xen-devel@lists.xenproject.org; Tue, 21 Apr 2026 10:33:58 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wF8QX-003IaE-75
 for xen-devel@lists.xenproject.org; Tue, 21 Apr 2026 12:33:57 +0200
Received: from [10.42.69.2] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <Michal.Orzel@amd.com>)
 id 69e75291-bab6-0a2a0a5309dd-0a2a45029a20-22
 for <xen-devel@lists.xenproject.org>; Tue, 21 Apr 2026 12:33:56 +0200
Received: from [52.101.43.30]
 (helo=SJ2PR03CU001.outbound.protection.outlook.com)
 by tlsNG-720697.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.1)
 (envelope-from <Michal.Orzel@amd.com>)
 id 69e75291-af86-0a2a45020019-34652b1efb6c-4
 for <xen-devel@lists.xenproject.org>; Tue, 21 Apr 2026 12:33:55 +0200
Received: from CH2PR19CA0013.namprd19.prod.outlook.com (2603:10b6:610:4d::23)
 by BN7PPF3C1137D8A.namprd12.prod.outlook.com
 (2603:10b6:40f:fc02::6cd) with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9818.20; Tue, 21 Apr
 2026 10:33:49 +0000
Received: from CH2PEPF0000009C.namprd02.prod.outlook.com
 (2603:10b6:610:4d:cafe::ad) by CH2PR19CA0013.outlook.office365.com
 (2603:10b6:610:4d::23) with Microsoft SMTP Server (version=TLS1_3,
 cipher=TLS_AES_256_GCM_SHA384) id 15.20.9791.48 via Frontend Transport; Tue,
 21 Apr 2026 10:33:48 +0000
Received: from satlexmb08.amd.com (165.204.84.17) by
 CH2PEPF0000009C.mail.protection.outlook.com (10.167.244.24) with Microsoft
 SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id
 15.20.9791.48 via Frontend Transport; Tue, 21 Apr 2026 10:33:48 +0000
Received: from SATLEXMB03.amd.com (10.181.40.144) by satlexmb08.amd.com
 (10.181.42.217) with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.2.2562.17; Tue, 21 Apr
 2026 05:33:48 -0500
Received: from satlexmb08.amd.com (10.181.42.217) by SATLEXMB03.amd.com
 (10.181.40.144) with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2507.39; Tue, 21 Apr
 2026 05:33:48 -0500
Received: from [10.252.147.171] (10.180.168.240) by satlexmb08.amd.com
 (10.181.42.217) with Microsoft SMTP Server id 15.2.2562.17 via Frontend
 Transport; Tue, 21 Apr 2026 05:33:46 -0500
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@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=NbeTWD0poOGL/jD6lJmAGOstYfXbpo9LYns9Nt8SuoW0gVD9TuOZ5H4+Tk0zTZjbhvX2OHI2aGUrg0kbTybemDEQnahRuECKRns0q63PI96e/2CiyolBilDBPw15dVCWpyQheFNnJ1NPd6OV7WdFLXTU8ZyjLDuRBRzv/SWueQDWhFxVdLloZwv2VXogcc+U6joaPFrErI9Ztb2fWQB3/bWSIBnX4VIMuhc/5Qj8O9AwWKo+zR+xKH+qCx8ix0ALOaEQvMYyyCjjkn+OdmvGQazeRTXGSZi6zp9PlBZEXzi9xoQ+/4Kjkf0e7vucjOrfmNWjbSG3drsOEXKB2o6mRQ==
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com;
 s=arcselector10001;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1;
 bh=VxmIw3KmI0vcN0/yo8LF+iFhya3BDpRME4P4eJ4t2CA=;
 b=rQ2V5px5ucAxiMVF3mX7IOf5IM+8710M+DERFhCW+4v3wBDvHUpLO+S4N5uM3s8TSwFk4ukl0VOtRgR6aYVRuVLpPowWSesC/XHLb4D7pNzsmfT50ufLp+J1nOJz34yqvX36Qt29QgGh4UAKZa3DO+0bPrfKMguufq+rXPbYgF8dI6pca+5xCtTKgsNC/v8WKeBijXFKqjt+3ZqmiBzUf0Oa7D59SY8eTymrGyL/7LvVtgXxqLaLFkX7kU1coBpjY3jFFYcHm9sxOcHl7HybKRrQ1EEbPVlfkxr2bq101A/kquo4uHCFtraJTa+KdW6zWEBv18yA10+v/znlEmQLwg==
ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass (sender ip is
 165.204.84.17) smtp.rcpttodomain=arm.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=VxmIw3KmI0vcN0/yo8LF+iFhya3BDpRME4P4eJ4t2CA=;
 b=gzGrVij+sWFmCYLQ35DoqqI5hUZUCAqvteVvvRIlfOXDoKYvLRiH/ehmqAPMtJ5TcabIj5gtVWil039xXxtGIby9cXo8bs2thGK3HLp1h7GXDBW0TGqVwA1ioxHBwvevEJqQmF6qs9/lz7ZXy81T+Kc9OjPqenEA2HnRa3B+eC4=
X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 165.204.84.17)
 smtp.mailfrom=amd.com; dkim=none (message not signed)
 header.d=none;dmarc=pass action=none header.from=amd.com;
Received-SPF: Pass (protection.outlook.com: domain of amd.com designates
 165.204.84.17 as permitted sender) receiver=protection.outlook.com;
 client-ip=165.204.84.17; helo=satlexmb08.amd.com; pr=C
Message-ID: <6a6aefa7-530b-4221-b2b3-65ca3298aef1@amd.com>
Date: Tue, 21 Apr 2026 12:33:46 +0200
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH] xen/arm: skip holes in physical address space when
 setting up frametable
To: Luca Fancellu <Luca.Fancellu@arm.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>, Volodymyr Babchuk
	<Volodymyr_Babchuk@epam.com>
References: <20260417091124.39552-1-michal.orzel@amd.com>
 <DB4CBEA0-B901-466E-80AE-483FE00A1282@arm.com>
 <10ef543f-ec21-47ae-aeb2-f569f8d48e27@amd.com>
 <F79D2A76-9FD3-4E6F-A26F-286B57E87BD8@arm.com>
From: "Orzel, Michal" <michal.orzel@amd.com>
Content-Language: en-US
In-Reply-To: <F79D2A76-9FD3-4E6F-A26F-286B57E87BD8@arm.com>
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: 8bit
Received-SPF: None (SATLEXMB03.amd.com: michal.orzel@amd.com does not
 designate permitted sender hosts)
X-EOPAttributedMessage: 0
X-MS-PublicTrafficType: Email
X-MS-TrafficTypeDiagnostic: CH2PEPF0000009C:EE_|BN7PPF3C1137D8A:EE_
X-MS-Office365-Filtering-Correlation-Id: 42e78135-147f-4f2d-5b91-08de9f917953
X-MS-Exchange-SenderADCheck: 1
X-MS-Exchange-AntiSpam-Relay: 0
X-Microsoft-Antispam:
	BCL:0;ARA:13230040|82310400026|36860700016|376014|1800799024|18002099003|18096099003|22082099003|56012099003;
X-Microsoft-Antispam-Message-Info:
	/E+5nfcShUtcKyNJZ5RbA9GommDTLC5mJBKEjg2iP3yX/QIMd/IXbaecatdHc3HxDPFkWa6WDjv+lkvSrmH9US+2maJU1M0LuO9OAuMv8ZTRWH7gztWAl2Q6aXCpe4Hbt2T/GiwnHtzrZ4enEHU+dxSsuXv8HNUEThXz4HeMoNjFfY2tFJ+2IVBBakFCMnLUc2cjewikODX0nYqM9+w9UzBp+4Xy89nScWnHzTRtr4pkZ2pUHiGYLK6dIwyZ/xscjrz1r4ADE9cb1uCB0SvZwR6rw5MAksE+huTYuEsCmpuE4jr81i70R+UD7S7Atqg8pvLECKxzHeMhqFf20wlDwX1KSWYeZx25A3DAypD37vkdm9l6afQ0IEwN1Qf8sM+LhxcAVr6cJ8X2iX27J0choHWwx8cvjIStHf4D4Skrshx9fF2ZRb/9pfONhdWjApTxRFwIHzWazSuV5FpNPiIde53Rs0ivwola2ZN7V/EBk8ThOOXhuiElyvql4tqwXoq4mpD2F97RWHxMB9IC5zyry0WKUUHhzqbvInabC+TwPFFuRlWbyeSqGRW9CxOjqqazoh+U6vQC6jNj7Y1iLIYYZqtDyg4pJWKTkhK6bMsNGWWpbQjD4vSXUGxVtD0V9vi1vxaoMARmsTRDwb6cQvDSI0oMqIHSQ4O6TTQ/vIlaXAIIwDA4vbctda5CCdEeSWIDLzXnlgAVeWCJ4GLDCubXatzF2FFNtpzKqFpvpHm+t6+kVpt+qMLeBFJfEMrDfKJXSeqx5X/QWVi74CgwDN7FxQ==
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)(376014)(1800799024)(18002099003)(18096099003)(22082099003)(56012099003);DIR:OUT;SFP:1101;
X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1
X-MS-Exchange-AntiSpam-MessageData-0:
	Bx/7z7wPkdGsL8/M8UgVN3UJrgUf579tNNBCv+KafMPU4ta2kV/zq84BZR3LAt4rdtv3xwqknaWihZ4zEE61EOD3UwZROS42LoQxygwSJMfuHg2AKEqu/Pj7BGEguwYXxdLOH07R6xmkO1lGMy1Fxla5Om3OsPQyMj8bYxht/m4t77VWdTwGWjpmCVkRp4q9KEnOecg/G08celjjIufN+jmVn3eQAFyHrCRYFDEpXrhepbwfEYPK/lzMj/ZLBxSKwvKdFZAzuttoQKcFpS8RM1zcIujtmI+JFFr7+2dzDN5TihDY2gWNPdKQPEzb+K/fDMF6nC1TMrnzydRC4U7S4wS2GhW3+846Kj1jFBQRqEyE+5uFrYtd4YLLGDggdHEInjb009ZPuhndqAIQN8bJ0Tc2KrKOltYhMdWhjxiYH6agXVR/o/xTTIFW/tT6JXQs
X-OriginatorOrg: amd.com
X-MS-Exchange-CrossTenant-OriginalArrivalTime: 21 Apr 2026 10:33:48.7222
 (UTC)
X-MS-Exchange-CrossTenant-Network-Message-Id: 42e78135-147f-4f2d-5b91-08de9f917953
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:
	CH2PEPF0000009C.namprd02.prod.outlook.com
X-MS-Exchange-CrossTenant-AuthAs: Anonymous
X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem
X-MS-Exchange-Transport-CrossTenantHeadersStamped: BN7PPF3C1137D8A
X-purgate-ID: tlsNG-720697/1776767636-82374161-C161E082/0/0
X-purgate-type: clean
X-purgate-size: 3976



On 20/04/2026 16:06, Luca Fancellu wrote:
> HI Michal,
> 
>>>> +void __init init_frametable(paddr_t ram_start)
>>>> +{
>>>> +    unsigned int sidx, nidx, max_idx;
>>>>
>>>>    /*
>>>>     * The size of paddr_t should be sufficient for the complete range of
>>>> @@ -26,24 +47,34 @@ void __init setup_frametable_mappings(paddr_t ps, paddr_t pe)
>>>>    BUILD_BUG_ON((sizeof(paddr_t) * BITS_PER_BYTE) < PADDR_BITS);
>>>>    BUILD_BUG_ON(sizeof(struct page_info) != PAGE_INFO_SIZE);
>>>>
>>>> -    if ( frametable_size > FRAMETABLE_SIZE )
>>>> -        panic("The frametable cannot cover the physical region %#"PRIpaddr" - %#"PRIpaddr"\n",
>>>> -              ps, pe);
>>>> +    max_idx = DIV_ROUND_UP(max_pdx, PDX_GROUP_COUNT);
>>>> +    frametable_base_pdx = mfn_to_pdx(maddr_to_mfn(ram_start));
>>>>
>>>> -    frametable_base_pdx = mfn_to_pdx(maddr_to_mfn(ps));
>>>> -    /* Round up to 2M or 32M boundary, as appropriate. */
>>>> -    frametable_size = ROUNDUP(frametable_size, mapping_size);
>>>> -    base_mfn = alloc_boot_pages(frametable_size >> PAGE_SHIFT, 32<<(20-12));
>>>> +    /*
>>>> +     * pdx_to_page(pdx_s) in init_frametable_chunk must be page-aligned
>>>> +     * for map_pages_to_xen(). Aligning to PDX_GROUP_COUNT guarantees this
>>>> +     * because PDX_GROUP_COUNT * sizeof(page_info) is always a multiple of
>>>> +     * PAGE_SIZE by construction.
>>>> +     */
>>>> +    frametable_base_pdx = ROUNDDOWN(frametable_base_pdx, PDX_GROUP_COUNT);
>>>
>>> We are now rounding down frametable_base_pdx which before this patch it was the start of the ram,
>>> but in xen/xen/arch/arm/include/asm/mm.h, mfn_valid(mfn) is using frametable_base_pdx to check for
>>> mfn validity, this means that we could pass an mfn before the start of the ram and if __mfn_valid is happy,
>>> we are getting a regression.
>>>
>>> Can this happen or am I missing something?
>> mfn_valid() can indeed return true for an MFN below ram_start that falls
>> in the same PDX group, but this is safe. init_frametable_chunk() maps
>> and zeroes the frametable for that range, so mfn_to_page() won't fault.
>> The zeroed page_info has count_info == 0 and no owner, so any get_page()
>> call on it will fail — the page is effectively inert.
> 
> Yes, I’ve checked and many path relying on mfn_valid() go also through mfn_to_page()
> and/or get_page(), there is only one in process_shm() that potentially could add a shared memory page
> given that we are relaxing mfn_valid now.
We are not relaxing mfn_valid now. It has never meant to mean RAM. It means the
MFN has a corresponding frame table entry with struct page_info. This is what
it's comment says.

Static shmem is safe for ghost MFN. In prepare_staticmem_pages() we have a check
for count_info that for ghost MFN is 0.

> 
> I’m trying also to follow is_iomem_page(), to check if subsequent mfn_to_page() fail safely, but I think that depending
> on that (mfn_valid) the page will be only treated differently, not sure if it’s a latent bug to leave mfn_valid() as it is.\
On Arm, is_iomem_page() is just !mfn_valid(), so yes, ghost MFNs
would be classified as not IOMEM. But this is harmless because is_iomem_page()
on ARM is only called from grant table paths that operate on pages obrtained by
get_page(), so no Arm code can reach is_iomem_page with a ghost MFN.

> 
> Would it be valid to have something like mfn_to_page() != 0 to be part of mfn_valid() to ensure it’s a real host ram page?
> I’m truly asking here because I didn’t check if it’s doable.
As already said, mfn_valid was never supposed to mean RAM page. It is just that
on ARM the two happened to coincide until this patch.

> 
> Otherwise we could split the round down and the frametable_base_pdx in this way maybe?
I don't think we need this extra complexity for something that is safe and has
always been in use. We've never had mfn_valid == RAM guarantee.

~Michal



From xen-devel-bounces@lists.xenproject.org Tue Apr 21 10:43:12 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 21 Apr 2026 10:43:12 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1288853.1569084 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wF8ZP-0003pC-Qb; Tue, 21 Apr 2026 10:43:07 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1288853.1569084; Tue, 21 Apr 2026 10:43: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 1wF8ZP-0003p5-NC; Tue, 21 Apr 2026 10:43:07 +0000
Received: by outflank-mailman (input) for mailman id 1288853;
 Tue, 21 Apr 2026 10:43:06 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <Luca.Fancellu@arm.com>) id 1wF8ZN-0003oz-KL
 for xen-devel@lists.xenproject.org; Tue, 21 Apr 2026 10:43:06 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wF8ZN-003OAl-0q
 for xen-devel@lists.xenproject.org; Tue, 21 Apr 2026 12:43:05 +0200
Received: from [10.42.69.8] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <Luca.Fancellu@arm.com>)
 id 69e754a5-2eae-0a2a0a5409dd-0a2a4508d9c2-38
 for <xen-devel@lists.xenproject.org>; Tue, 21 Apr 2026 12:43:04 +0200
Received: from [40.107.162.19]
 (helo=PA4PR04CU001.outbound.protection.outlook.com)
 by tlsNG-c1860d.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.1)
 (envelope-from <Luca.Fancellu@arm.com>)
 id 69e754b7-63b5-0a2a45080019-286ba213e22c-3
 for <xen-devel@lists.xenproject.org>; Tue, 21 Apr 2026 12:43:03 +0200
Received: from AS4P190CA0044.EURP190.PROD.OUTLOOK.COM (2603:10a6:20b:5d1::8)
 by GVXPR08MB10587.eurprd08.prod.outlook.com (2603:10a6:150:15c::11) with
 Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9818.32; Tue, 21 Apr
 2026 10:42:54 +0000
Received: from AMS0EPF000001AF.eurprd05.prod.outlook.com
 (2603:10a6:20b:5d1:cafe::ee) by AS4P190CA0044.outlook.office365.com
 (2603:10a6:20b:5d1::8) with Microsoft SMTP Server (version=TLS1_3,
 cipher=TLS_AES_256_GCM_SHA384) id 15.20.9791.48 via Frontend Transport; Tue,
 21 Apr 2026 10:42:54 +0000
Received: from outbound-uk1.az.dlp.m.darktrace.com (4.158.2.129) by
 AMS0EPF000001AF.mail.protection.outlook.com (10.167.16.155) with Microsoft
 SMTP Server (version=TLS1_3, cipher=TLS_AES_256_GCM_SHA384) id 15.20.9791.48
 via Frontend Transport; Tue, 21 Apr 2026 10:42:54 +0000
Received: from DU2PR08MB7272.eurprd08.prod.outlook.com (2603:10a6:10:2d7::16)
 by PAWPR08MB9518.eurprd08.prod.outlook.com (2603:10a6:102:2ed::19)
 with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9846.16; Tue, 21 Apr
 2026 10:41:50 +0000
Received: from DU2PR08MB7272.eurprd08.prod.outlook.com
 ([fe80::5d34:206f:373:a323]) by DU2PR08MB7272.eurprd08.prod.outlook.com
 ([fe80::5d34:206f:373:a323%6]) with mapi id 15.20.9818.032; Tue, 21 Apr 2026
 10:41: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=arm.com header.i="@arm.com" header.h="From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck"; dkim=pass header.s=selector1 header.d=arm.com header.i="@arm.com" header.h="From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck"
ARC-Seal: i=2; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=pass;
 b=LefkrvrH5DIPzLUBzd+zoOLoSAF9F+lCSOAX6Zd+//MUAFU96wkvQ8kELgOCpQqsvyejEn1QT5SeY71oed8DJeqdbedPir9X0fYXLN88InqyxA4ywDWPXEAL3GFy+50RpPgJIvvVwwc6fG1Igd9vpm3W8bDgBp+RdlY1srdoWvaeBPkShKt+gwj8PBOty+EnTMIIqXgUeQSvimSIpAXVhZnonBVgFf7necV7I9l/WZ/NWMHW7rzw/AV3BoK3xL6sxA1pJtT4Xjl8mmlJzV47k2QANH5Euso8upYbUgb0vgs8WZAlTgQ3wq2shIrB2+Kn2eViJPoxkVrWc47nH7uYrA==
ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com;
 s=arcselector10001;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1;
 bh=p72l46oHHumCb46GB/T/xSFovc1gGQdn9po47lRcqsE=;
 b=N3amsmHNhe4SXZvJ3ltNpWTw8MOTgQui5T+tg46cVLPZaDNTa1pgTjcVewfFCozBoO090FQbjUzhhYEdOeYdTsnczS60v9ZpPgX+2x/PEA5lNgP2C7193d1af1Bv0fMERAzW9D91dZsYJXo4303qQ105fAdVdiVu86fMAoZnJXoMk441P9SnpupYih+pWhgtKTTyRExcOZoeNjmspvn8tuFR4rJJw8kN2naGt2ecikl0FMmRl5/zpuLCP2AyF6WjwHBA8hZhz4nohVyPxzoQcviUxwik+63d+hG5O4hXK7FGPF/0rrUmXYQ4Kd2NGN7g+Hn7raVGQd9YMrOlaue/EQ==
ARC-Authentication-Results: i=2; mx.microsoft.com 1; spf=pass (sender ip is
 4.158.2.129) smtp.rcpttodomain=amd.com smtp.mailfrom=arm.com; dmarc=pass
 (p=none sp=none pct=100) action=none header.from=arm.com; dkim=pass
 (signature was verified) header.d=arm.com; arc=pass (0 oda=1 ltdi=1
 spf=[1,1,smtp.mailfrom=arm.com] dkim=[1,1,header.d=arm.com]
 dmarc=[1,1,header.from=arm.com])
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=arm.com; s=selector1;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck;
 bh=p72l46oHHumCb46GB/T/xSFovc1gGQdn9po47lRcqsE=;
 b=Oyu1EagTkIO8V85eM6t641VC5IQxiMTzRF5UeEoFPUsywSFc6HPhTWu2nOjXzrr5YS3ePEPEAjclwAmEGeRPgL0ucXXRDQkQ5ZOhzAzmtrhXIjgYvUb+CUZyszrkHf6zeouxRdgESvrquGM3zyh6C1ABE5yE0qtxrhUT+PB9Knk=
X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 4.158.2.129)
 smtp.mailfrom=arm.com; dkim=pass (signature was verified)
 header.d=arm.com;dmarc=pass action=none header.from=arm.com;
Received-SPF: Pass (protection.outlook.com: domain of arm.com designates
 4.158.2.129 as permitted sender) receiver=protection.outlook.com;
 client-ip=4.158.2.129; helo=outbound-uk1.az.dlp.m.darktrace.com; pr=C
ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none;
 b=oRyqNKviY8WHKTP7MTmnxEfVj67uWxXH8G3o6pGbhOmQgujzOhNzJGF8031ZUYl8i1vmTbXsSWdQOGLNOwZM5KHIRPFBWzZUhCLhwYJGe2KoGG1hdovdf1hsUohn22lFC0D5EtQya1rb1NjoTPbCw2CKSLwlcs0qmlx1Ce+Kh0q/ukIVr4V9jy4Ds4QxK9q1eFC/WJaPB0Yx5BsPuAM3eReEND6e2rR/StFHsD5GCCCGkxedVOhaW/oBXAHIedzSXzeSWseQbVPuT1zxXsyxTDVrzmyd1HM1ksW7KYnQTVz6rZNXtDGHzKIIPikQDL0IhYeZOaEo5nZmmp2QRwLIrg==
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com;
 s=arcselector10001;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1;
 bh=p72l46oHHumCb46GB/T/xSFovc1gGQdn9po47lRcqsE=;
 b=HfryHPze25mQ7VIXq2fYYdsQcH+W2iXiATAclLIt8Sh8LpoWfq78l5oDVNDbPYdkB2umwZnmLcyI8xLUWgNWe5kKbb8ZJS04YL0C27Y/fn4NNeHQYZPCVm7GcdbO5CUtGgWR4mFb8ryF80q74sZq5q4FFIT8RVW8RONrtq9WWvb6beMQe2V5NXjC608KTsgHI6dz7qLAJ4se9eyRE/CyVY6MxgjMLxoK+9ZTWHHJyub+Y9L7XMiAvWR3anZhAkCO4/5hIxJOTBCIPYoZtF8zqUkpNaB0b+F+uX2PRMnAf/0SMF4WbEgk2EZnCLgoWYaWvfqTuwLgMmznZ/v2wlgMDw==
ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass
 smtp.mailfrom=arm.com; dmarc=pass action=none header.from=arm.com; dkim=pass
 header.d=arm.com; arc=none
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=arm.com; s=selector1;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck;
 bh=p72l46oHHumCb46GB/T/xSFovc1gGQdn9po47lRcqsE=;
 b=Oyu1EagTkIO8V85eM6t641VC5IQxiMTzRF5UeEoFPUsywSFc6HPhTWu2nOjXzrr5YS3ePEPEAjclwAmEGeRPgL0ucXXRDQkQ5ZOhzAzmtrhXIjgYvUb+CUZyszrkHf6zeouxRdgESvrquGM3zyh6C1ABE5yE0qtxrhUT+PB9Knk=
From: Luca Fancellu <Luca.Fancellu@arm.com>
To: "Orzel, Michal" <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>, Volodymyr Babchuk
	<Volodymyr_Babchuk@epam.com>
Subject: Re: [PATCH] xen/arm: skip holes in physical address space when
 setting up frametable
Thread-Topic: [PATCH] xen/arm: skip holes in physical address space when
 setting up frametable
Thread-Index: AQHczko4909b0LdR6E6hEGKgM2/tzrXjJWsAgAASSYCABMl7gIABVuYAgAACHIA=
Date: Tue, 21 Apr 2026 10:41:49 +0000
Message-ID: <E42EF2D6-F806-4AF3-B736-76134E443767@arm.com>
References: <20260417091124.39552-1-michal.orzel@amd.com>
 <DB4CBEA0-B901-466E-80AE-483FE00A1282@arm.com>
 <10ef543f-ec21-47ae-aeb2-f569f8d48e27@amd.com>
 <F79D2A76-9FD3-4E6F-A26F-286B57E87BD8@arm.com>
 <6a6aefa7-530b-4221-b2b3-65ca3298aef1@amd.com>
In-Reply-To: <6a6aefa7-530b-4221-b2b3-65ca3298aef1@amd.com>
Accept-Language: en-GB, en-US
Content-Language: en-US
X-MS-Has-Attach:
X-MS-TNEF-Correlator:
x-mailer: Apple Mail (2.3826.700.81.1.6)
Authentication-Results-Original: dkim=none (message not signed)
 header.d=none;dmarc=none action=none header.from=arm.com;
x-ms-traffictypediagnostic:
	DU2PR08MB7272:EE_|PAWPR08MB9518:EE_|AMS0EPF000001AF:EE_|GVXPR08MB10587:EE_
X-MS-Office365-Filtering-Correlation-Id: f532c18b-b895-4752-fd02-08de9f92be73
x-checkrecipientrouted: true
nodisclaimer: true
X-MS-Exchange-SenderADCheck: 1
X-MS-Exchange-AntiSpam-Relay: 0
X-Microsoft-Antispam-Untrusted:
 BCL:0;ARA:13230040|1800799024|366016|376014|38070700021|18096099003|18002099003|56012099003|22082099003;
X-Microsoft-Antispam-Message-Info-Original:
 VJro56F3A3JDgn6n3CIU/w+f2EZDudEctGUk+0F3YHaZG4xuBLeha0FaMArlRfisepvxxrsZNxvp1UQJwptFQFmBEDeLyngfmCKHg+qDyGUB+ggxGCkw9sx9i1NqzrLo6Vlw9TaCudjwUNVg9lUcmbRVHY5lQ3OQtEdX93U2lZHqZlxncfS8ZfowllB7KfHvRNtghsIGcnbBUYGgFc2doHNjckUrZBdW7nUP9QdVy8QnzO/07OK+kIZZCreMBtCt1riWJHbdrU1pMQejnwrT5gGVEhtKTccFlNnuj6z8NSo0SRV8mPG+9UzobcXTi5mSYGbO/NcT0OUCyjoF65D4lg8XT/Xcrp/bhJ5YsK07AK0tVvsx8AyVxcO1FKncSYBNpPZinPoaZxZ5bVp4YKJ3d7KdMX+zNt+ygiGiTpP0xinRKM7UpZxuHOk1tjNdTyUhXhnB7FO0YDmi5TfKPL28FC8t8FQ8xXpmdTW821R2V0wR42y4SO7vt0lbyFfveYIUsMrbxn2hNZRO995ijSwQ1M/FtWdK6YbkUz9G7t7B3IhuiYxpiGTEI3mfMBiZnivVNPinoi9wWd42j9pnDmo6kMMMC0Zs0bo98WeAKGu59tdWSThJDYe8dUZeLjJzdvJcnkesAhAyqXt8PCL8wThu/nsXVQ6DrLZE3LKim5JFpsEGJptlBc2mAL3uQXGaeJ0ghxrVChN75kZh/iMWTjIy+3j/xLGGGaYUjB+u6yIwRZpyXVeK5LpGDgOQ2JeJ4LtHvFmBnPnXTjaK7zI0xjrjjNJiB+4LesNk/E41dfXzy0I=
X-Forefront-Antispam-Report-Untrusted:
 CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:DU2PR08MB7272.eurprd08.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(1800799024)(366016)(376014)(38070700021)(18096099003)(18002099003)(56012099003)(22082099003);DIR:OUT;SFP:1101;
Content-Type: text/plain; charset="utf-8"
Content-ID: <29F1D4A8D168664A8F6151AEF19C0328@eurprd08.prod.outlook.com>
Content-Transfer-Encoding: base64
MIME-Version: 1.0
X-Exchange-RoutingPolicyChecked:
 ITYQOdflpzHncRHqJwSU807FYD4oL1I/poetzekCo3O1canU6GFiD3TiuaiOO3gECfgJBZs8s9qbLaGeewfTXcRRJdWaM/Da1XCMjOrqGQmeBSSAduMxYS8lagCg5yoaZUxSMd7htjvNSxc36MBcEsJaefaE9ycq9uhOJrozJ4RHxXavEM/XRTaEAzrNtT2hsKRn8iHJWDD8pDmx4wdggyFGznNbgI4ErZp9p7FdkuwAxF6VaZni3bg/BtyhvR5+eHtPdsvLqzsurronl0I0z0rJeepyDAozhRBZPg/4ltpGGH1UWh5vTFRfAgDtc2knNmvD0gemiwWPXzsZOdj8WA==
X-MS-Exchange-Transport-CrossTenantHeadersStamped: PAWPR08MB9518
X-EOPAttributedMessage: 0
X-MS-Exchange-Transport-CrossTenantHeadersStripped:
 AMS0EPF000001AF.eurprd05.prod.outlook.com
X-MS-PublicTrafficType: Email
X-MS-Office365-Filtering-Correlation-Id-Prvs:
	e5080313-447c-43de-6d52-08de9f929803
X-Microsoft-Antispam:
	BCL:0;ARA:13230040|82310400026|35042699022|14060799003|36860700016|376014|1800799024|56012099003|18096099003|18002099003|22082099003;
X-Microsoft-Antispam-Message-Info:
	E0aEM8qK5MiB/oLYqpLyKDQkI59ED92Ym2r5vSjZky8lIHBQEk5Sh7kwGp6dJbxTEAKpoOKzA7OjZ+r6avSJ3nPmEc0ggCDFrMbzjlPSE9CI1/7UFfR8AbjZ50kRW926ALqmXKEt3ZN4JaCYutaV1/W4JsRBbVhty+KSfK9MVDHD+Sb1dSvxUHkeoxfdNGWMCXC0vZTLhwyUT6eHOEYiiYaCoJyeTF8rgXIL8s5sclleUozBENZvCy4sY09aKz9yLIm7wJeNc7iY8sOBXLx47wUuVVOWYk29JW7DjwOPclYOR9hBS2ccgnewlx0k6wosh6EWKk139UANOsCrP4ZVpf2u7gTmctus+4nALZ3RVggIUyMb+4Q+WV/rxuSpYMlX4SM+/GNz7v4s1ZGIe6W1uPxph1U6S3YQLGKWPnYF3yBhyotTPorbqQ0pxmnNHRBabJPgBsWDvKCWCt1fpGVmBOVUlq9LDM07FbQsGlrbVAamAEeWDOm8PtDz3YtwTrmzrrH7TG87xdJfmQTEY/8ntZvLkE5SSha0Ta+DNI83ABMElmMeNWiT+yCwNJRwFLfuxfCqB4h4P0G5kq9+RF5lhC7pyhNjqJboAA3ScwBOPnNEJfpNff/tBD5ZhMqxN/qPv4TkV6bKUkaa8bw3aqpcpwwT8deN9upRLCAwsVa6+D6G/Oz1sZms67gDqjkgzFY+jA+xlHFSHRm+8F70J+Me8V2NJzllCM45fBWaM6NxnF7ZEzodjXC8LSvhBtz1EPuEgBhVBkmb+bqH+/gV7o7rFQ==
X-Forefront-Antispam-Report:
	CIP:4.158.2.129;CTRY:GB;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:outbound-uk1.az.dlp.m.darktrace.com;PTR:InfoDomainNonexistent;CAT:NONE;SFS:(13230040)(82310400026)(35042699022)(14060799003)(36860700016)(376014)(1800799024)(56012099003)(18096099003)(18002099003)(22082099003);DIR:OUT;SFP:1101;
X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1
X-MS-Exchange-AntiSpam-MessageData-0:
	AgmxUL48XHFvO7VstECenLlXGsJigcTHK1+jIsJRcbYHM+cP1j569rENGOEAd0/3HdhamIEGsJiuKAtHSbu0N3gdsnCRFvlMswm6gs66DEjy0zeHp5fvTLXvt9l/ezBz61l9vxtji5sh4TJS13iBOYrkPBSiCj0cYfst9e86ItLLvC15novMr2IOlwmVuAWcUNEZNUX5PckpqrQ9VpJWsNH8crbe0QHSrh8jIJQj7w9J1gFCK2kNyzxs6k6JN/5RGkWGPXC0CiKCyHnFvT5CrV8WeX8fYZuKXY8CcqTFqlAA2ZBLTQwhcNe8nYtkLsO+UCMAxU6BFGiXefVF5/70+TKzjzERhkpexG/XvDT+rMNDIG8alNZ7FdsXCRqxm3Y/Ef5ZTiB5SkmkUn4paxk7eKuHGdXOkkcSqw9eqrz5jDW4OXI0kEVBsw+GDPiSpksg
X-OriginatorOrg: arm.com
X-MS-Exchange-CrossTenant-OriginalArrivalTime: 21 Apr 2026 10:42:54.1516
 (UTC)
X-MS-Exchange-CrossTenant-Network-Message-Id: f532c18b-b895-4752-fd02-08de9f92be73
X-MS-Exchange-CrossTenant-Id: f34e5979-57d9-4aaa-ad4d-b122a662184d
X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=f34e5979-57d9-4aaa-ad4d-b122a662184d;Ip=[4.158.2.129];Helo=[outbound-uk1.az.dlp.m.darktrace.com]
X-MS-Exchange-CrossTenant-AuthSource:
	AMS0EPF000001AF.eurprd05.prod.outlook.com
X-MS-Exchange-CrossTenant-AuthAs: Anonymous
X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem
X-MS-Exchange-Transport-CrossTenantHeadersStamped: GVXPR08MB10587
X-purgate-ID: tlsNG-c1860d/1776768184-C0F62DB1-733A94C7/0/0
X-purgate-type: clean
X-purgate-size: 6134

SGkgTWljaGFsLA0KDQo+IE9uIDIxIEFwciAyMDI2LCBhdCAxMTozMywgT3J6ZWwsIE1pY2hhbCA8
TWljaGFsLk9yemVsQGFtZC5jb20+IHdyb3RlOg0KPiANCj4gDQo+IA0KPiBPbiAyMC8wNC8yMDI2
IDE2OjA2LCBMdWNhIEZhbmNlbGx1IHdyb3RlOg0KPj4gSEkgTWljaGFsLA0KPj4gDQo+Pj4+PiAr
dm9pZCBfX2luaXQgaW5pdF9mcmFtZXRhYmxlKHBhZGRyX3QgcmFtX3N0YXJ0KQ0KPj4+Pj4gK3sN
Cj4+Pj4+ICsgICAgdW5zaWduZWQgaW50IHNpZHgsIG5pZHgsIG1heF9pZHg7DQo+Pj4+PiANCj4+
Pj4+ICAgLyoNCj4+Pj4+ICAgICogVGhlIHNpemUgb2YgcGFkZHJfdCBzaG91bGQgYmUgc3VmZmlj
aWVudCBmb3IgdGhlIGNvbXBsZXRlIHJhbmdlIG9mDQo+Pj4+PiBAQCAtMjYsMjQgKzQ3LDM0IEBA
IHZvaWQgX19pbml0IHNldHVwX2ZyYW1ldGFibGVfbWFwcGluZ3MocGFkZHJfdCBwcywgcGFkZHJf
dCBwZSkNCj4+Pj4+ICAgQlVJTERfQlVHX09OKChzaXplb2YocGFkZHJfdCkgKiBCSVRTX1BFUl9C
WVRFKSA8IFBBRERSX0JJVFMpOw0KPj4+Pj4gICBCVUlMRF9CVUdfT04oc2l6ZW9mKHN0cnVjdCBw
YWdlX2luZm8pICE9IFBBR0VfSU5GT19TSVpFKTsNCj4+Pj4+IA0KPj4+Pj4gLSAgICBpZiAoIGZy
YW1ldGFibGVfc2l6ZSA+IEZSQU1FVEFCTEVfU0laRSApDQo+Pj4+PiAtICAgICAgICBwYW5pYygi
VGhlIGZyYW1ldGFibGUgY2Fubm90IGNvdmVyIHRoZSBwaHlzaWNhbCByZWdpb24gJSMiUFJJcGFk
ZHIiIC0gJSMiUFJJcGFkZHIiXG4iLA0KPj4+Pj4gLSAgICAgICAgICAgICAgcHMsIHBlKTsNCj4+
Pj4+ICsgICAgbWF4X2lkeCA9IERJVl9ST1VORF9VUChtYXhfcGR4LCBQRFhfR1JPVVBfQ09VTlQp
Ow0KPj4+Pj4gKyAgICBmcmFtZXRhYmxlX2Jhc2VfcGR4ID0gbWZuX3RvX3BkeChtYWRkcl90b19t
Zm4ocmFtX3N0YXJ0KSk7DQo+Pj4+PiANCj4+Pj4+IC0gICAgZnJhbWV0YWJsZV9iYXNlX3BkeCA9
IG1mbl90b19wZHgobWFkZHJfdG9fbWZuKHBzKSk7DQo+Pj4+PiAtICAgIC8qIFJvdW5kIHVwIHRv
IDJNIG9yIDMyTSBib3VuZGFyeSwgYXMgYXBwcm9wcmlhdGUuICovDQo+Pj4+PiAtICAgIGZyYW1l
dGFibGVfc2l6ZSA9IFJPVU5EVVAoZnJhbWV0YWJsZV9zaXplLCBtYXBwaW5nX3NpemUpOw0KPj4+
Pj4gLSAgICBiYXNlX21mbiA9IGFsbG9jX2Jvb3RfcGFnZXMoZnJhbWV0YWJsZV9zaXplID4+IFBB
R0VfU0hJRlQsIDMyPDwoMjAtMTIpKTsNCj4+Pj4+ICsgICAgLyoNCj4+Pj4+ICsgICAgICogcGR4
X3RvX3BhZ2UocGR4X3MpIGluIGluaXRfZnJhbWV0YWJsZV9jaHVuayBtdXN0IGJlIHBhZ2UtYWxp
Z25lZA0KPj4+Pj4gKyAgICAgKiBmb3IgbWFwX3BhZ2VzX3RvX3hlbigpLiBBbGlnbmluZyB0byBQ
RFhfR1JPVVBfQ09VTlQgZ3VhcmFudGVlcyB0aGlzDQo+Pj4+PiArICAgICAqIGJlY2F1c2UgUERY
X0dST1VQX0NPVU5UICogc2l6ZW9mKHBhZ2VfaW5mbykgaXMgYWx3YXlzIGEgbXVsdGlwbGUgb2YN
Cj4+Pj4+ICsgICAgICogUEFHRV9TSVpFIGJ5IGNvbnN0cnVjdGlvbi4NCj4+Pj4+ICsgICAgICov
DQo+Pj4+PiArICAgIGZyYW1ldGFibGVfYmFzZV9wZHggPSBST1VORERPV04oZnJhbWV0YWJsZV9i
YXNlX3BkeCwgUERYX0dST1VQX0NPVU5UKTsNCj4+Pj4gDQo+Pj4+IFdlIGFyZSBub3cgcm91bmRp
bmcgZG93biBmcmFtZXRhYmxlX2Jhc2VfcGR4IHdoaWNoIGJlZm9yZSB0aGlzIHBhdGNoIGl0IHdh
cyB0aGUgc3RhcnQgb2YgdGhlIHJhbSwNCj4+Pj4gYnV0IGluIHhlbi94ZW4vYXJjaC9hcm0vaW5j
bHVkZS9hc20vbW0uaCwgbWZuX3ZhbGlkKG1mbikgaXMgdXNpbmcgZnJhbWV0YWJsZV9iYXNlX3Bk
eCB0byBjaGVjayBmb3INCj4+Pj4gbWZuIHZhbGlkaXR5LCB0aGlzIG1lYW5zIHRoYXQgd2UgY291
bGQgcGFzcyBhbiBtZm4gYmVmb3JlIHRoZSBzdGFydCBvZiB0aGUgcmFtIGFuZCBpZiBfX21mbl92
YWxpZCBpcyBoYXBweSwNCj4+Pj4gd2UgYXJlIGdldHRpbmcgYSByZWdyZXNzaW9uLg0KPj4+PiAN
Cj4+Pj4gQ2FuIHRoaXMgaGFwcGVuIG9yIGFtIEkgbWlzc2luZyBzb21ldGhpbmc/DQo+Pj4gbWZu
X3ZhbGlkKCkgY2FuIGluZGVlZCByZXR1cm4gdHJ1ZSBmb3IgYW4gTUZOIGJlbG93IHJhbV9zdGFy
dCB0aGF0IGZhbGxzDQo+Pj4gaW4gdGhlIHNhbWUgUERYIGdyb3VwLCBidXQgdGhpcyBpcyBzYWZl
LiBpbml0X2ZyYW1ldGFibGVfY2h1bmsoKSBtYXBzDQo+Pj4gYW5kIHplcm9lcyB0aGUgZnJhbWV0
YWJsZSBmb3IgdGhhdCByYW5nZSwgc28gbWZuX3RvX3BhZ2UoKSB3b24ndCBmYXVsdC4NCj4+PiBU
aGUgemVyb2VkIHBhZ2VfaW5mbyBoYXMgY291bnRfaW5mbyA9PSAwIGFuZCBubyBvd25lciwgc28g
YW55IGdldF9wYWdlKCkNCj4+PiBjYWxsIG9uIGl0IHdpbGwgZmFpbCDigJQgdGhlIHBhZ2UgaXMg
ZWZmZWN0aXZlbHkgaW5lcnQuDQo+PiANCj4+IFllcywgSeKAmXZlIGNoZWNrZWQgYW5kIG1hbnkg
cGF0aCByZWx5aW5nIG9uIG1mbl92YWxpZCgpIGdvIGFsc28gdGhyb3VnaCBtZm5fdG9fcGFnZSgp
DQo+PiBhbmQvb3IgZ2V0X3BhZ2UoKSwgdGhlcmUgaXMgb25seSBvbmUgaW4gcHJvY2Vzc19zaG0o
KSB0aGF0IHBvdGVudGlhbGx5IGNvdWxkIGFkZCBhIHNoYXJlZCBtZW1vcnkgcGFnZQ0KPj4gZ2l2
ZW4gdGhhdCB3ZSBhcmUgcmVsYXhpbmcgbWZuX3ZhbGlkIG5vdy4NCj4gV2UgYXJlIG5vdCByZWxh
eGluZyBtZm5fdmFsaWQgbm93LiBJdCBoYXMgbmV2ZXIgbWVhbnQgdG8gbWVhbiBSQU0uIEl0IG1l
YW5zIHRoZQ0KPiBNRk4gaGFzIGEgY29ycmVzcG9uZGluZyBmcmFtZSB0YWJsZSBlbnRyeSB3aXRo
IHN0cnVjdCBwYWdlX2luZm8uIFRoaXMgaXMgd2hhdA0KPiBpdCdzIGNvbW1lbnQgc2F5cy4NCg0K
VGhhbmtzIGZvciB0aGUgY2xhcmlmaWNhdGlvbiwgSSB3YXMgdW5kZXIgdGhlIGltcHJlc3Npb24g
dGhhdCBvbiBBcm0gaXQgc2lnbmlmaWVkIG1mbiBwb2ludHMgdG8gYSByZWFsIGhvc3QgcmFtDQpw
b3J0aW9uLCB0aGUgY29tbWVudCBhYm92ZSBBcm0gaW1wbGVtZW50YXRpb24gZG9lc27igJl0IGhl
bHAgZWl0aGVyIDopDQoNCj4gDQo+IFN0YXRpYyBzaG1lbSBpcyBzYWZlIGZvciBnaG9zdCBNRk4u
IEluIHByZXBhcmVfc3RhdGljbWVtX3BhZ2VzKCkgd2UgaGF2ZSBhIGNoZWNrDQo+IGZvciBjb3Vu
dF9pbmZvIHRoYXQgZm9yIGdob3N0IE1GTiBpcyAwLg0KPiANCj4+IA0KPj4gSeKAmW0gdHJ5aW5n
IGFsc28gdG8gZm9sbG93IGlzX2lvbWVtX3BhZ2UoKSwgdG8gY2hlY2sgaWYgc3Vic2VxdWVudCBt
Zm5fdG9fcGFnZSgpIGZhaWwgc2FmZWx5LCBidXQgSSB0aGluayB0aGF0IGRlcGVuZGluZw0KPj4g
b24gdGhhdCAobWZuX3ZhbGlkKSB0aGUgcGFnZSB3aWxsIGJlIG9ubHkgdHJlYXRlZCBkaWZmZXJl
bnRseSwgbm90IHN1cmUgaWYgaXTigJlzIGEgbGF0ZW50IGJ1ZyB0byBsZWF2ZSBtZm5fdmFsaWQo
KSBhcyBpdCBpcy5cDQo+IE9uIEFybSwgaXNfaW9tZW1fcGFnZSgpIGlzIGp1c3QgIW1mbl92YWxp
ZCgpLCBzbyB5ZXMsIGdob3N0IE1GTnMNCj4gd291bGQgYmUgY2xhc3NpZmllZCBhcyBub3QgSU9N
RU0uIEJ1dCB0aGlzIGlzIGhhcm1sZXNzIGJlY2F1c2UgaXNfaW9tZW1fcGFnZSgpDQo+IG9uIEFS
TSBpcyBvbmx5IGNhbGxlZCBmcm9tIGdyYW50IHRhYmxlIHBhdGhzIHRoYXQgb3BlcmF0ZSBvbiBw
YWdlcyBvYnJ0YWluZWQgYnkNCj4gZ2V0X3BhZ2UoKSwgc28gbm8gQXJtIGNvZGUgY2FuIHJlYWNo
IGlzX2lvbWVtX3BhZ2Ugd2l0aCBhIGdob3N0IE1GTi4NCj4gDQo+PiANCj4+IFdvdWxkIGl0IGJl
IHZhbGlkIHRvIGhhdmUgc29tZXRoaW5nIGxpa2UgbWZuX3RvX3BhZ2UoKSAhPSAwIHRvIGJlIHBh
cnQgb2YgbWZuX3ZhbGlkKCkgdG8gZW5zdXJlIGl04oCZcyBhIHJlYWwgaG9zdCByYW0gcGFnZT8N
Cj4+IEnigJltIHRydWx5IGFza2luZyBoZXJlIGJlY2F1c2UgSSBkaWRu4oCZdCBjaGVjayBpZiBp
dOKAmXMgZG9hYmxlLg0KPiBBcyBhbHJlYWR5IHNhaWQsIG1mbl92YWxpZCB3YXMgbmV2ZXIgc3Vw
cG9zZWQgdG8gbWVhbiBSQU0gcGFnZS4gSXQgaXMganVzdCB0aGF0DQo+IG9uIEFSTSB0aGUgdHdv
IGhhcHBlbmVkIHRvIGNvaW5jaWRlIHVudGlsIHRoaXMgcGF0Y2guDQo+IA0KPj4gDQo+PiBPdGhl
cndpc2Ugd2UgY291bGQgc3BsaXQgdGhlIHJvdW5kIGRvd24gYW5kIHRoZSBmcmFtZXRhYmxlX2Jh
c2VfcGR4IGluIHRoaXMgd2F5IG1heWJlPw0KPiBJIGRvbid0IHRoaW5rIHdlIG5lZWQgdGhpcyBl
eHRyYSBjb21wbGV4aXR5IGZvciBzb21ldGhpbmcgdGhhdCBpcyBzYWZlIGFuZCBoYXMNCj4gYWx3
YXlzIGJlZW4gaW4gdXNlLiBXZSd2ZSBuZXZlciBoYWQgbWZuX3ZhbGlkID09IFJBTSBndWFyYW50
ZWUuDQoNClRoYW5rcyBmb3IgY2hlY2tpbmcgbXkgcG9pbnRzLCBJIHRoaW5rIGl04oCZcyBhbGwg
Y2xlYXIgdG8gbWUgbm93Lg0KDQpSZXZpZXdlZC1ieTogTHVjYSBGYW5jZWxsdSA8bHVjYS5mYW5j
ZWxsdUBhcm0uY29tPg0KDQpDaGVlcnMsDQpMdWNhDQoNCg==


From xen-devel-bounces@lists.xenproject.org Tue Apr 21 10:48:16 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 21 Apr 2026 10:48:16 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1288865.1569093 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wF8e9-0004uF-EB; Tue, 21 Apr 2026 10:48:01 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1288865.1569093; Tue, 21 Apr 2026 10: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 1wF8e9-0004u8-Bb; Tue, 21 Apr 2026 10:48:01 +0000
Received: by outflank-mailman (input) for mailman id 1288865;
 Tue, 21 Apr 2026 10:48:00 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92) id 1wF8e8-0004u2-4L
 for xen-devel@lists.xenproject.org; Tue, 21 Apr 2026 10:48:00 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wF8e7-00ECQx-5s
 for xen-devel@lists.xenproject.org; Tue, 21 Apr 2026 12:47:59 +0200
Received: from [10.42.69.4] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <oleksii.kurochko@gmail.com>)
 id 69e755da-5cb7-0a2a0a5109dd-0a2a4504d46c-32
 for <xen-devel@lists.xenproject.org>; Tue, 21 Apr 2026 12:47:59 +0200
Received: from [209.85.167.54] (helo=mail-lf1-f54.google.com)
 by tlsNG-ebf023.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.1)
 (envelope-from <oleksii.kurochko@gmail.com>)
 id 69e755de-1dec-0a2a45040019-d155a736e1cc-3
 for <xen-devel@lists.xenproject.org>; Tue, 21 Apr 2026 12:47:58 +0200
Received: by mail-lf1-f54.google.com with SMTP id
 2adb3069b0e04-59dcdf60427so3665870e87.3
 for <xen-devel@lists.xenproject.org>; Tue, 21 Apr 2026 03:47:58 -0700 (PDT)
Received: from [192.168.1.6] (user-109-243-69-121.play-internet.pl.
 [109.243.69.121]) by smtp.gmail.com with ESMTPSA id
 2adb3069b0e04-5a4185ad0fdsm3633203e87.13.2026.04.21.03.47.57
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Tue, 21 Apr 2026 03:47:57 -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=20251104 header.d=gmail.com header.i="@gmail.com" header.h="Content-Transfer-Encoding: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=20251104; t=1776768478; x=1777373278; darn=lists.xenproject.org;
        h=content-transfer-encoding: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;
        bh=5YmlL2hT0KtsZVaCj5CBsqfzKc6l01c1MMkDFyMd+5g=;
        b=avVGPwbGW+AWOIdNmQ46Nwq6r692NizuuP9MBzezOWuVP5SycO1waluuUrhc3yDxiP
         jPa6NxfB8mzEhnQ4UDGDtX+bJSgiI8iUDwcrFBDWxk6bRV66UpoGBsLsqehmZnobLcf1
         TsWY/bfDdC6v5iW6Bd+ccs0E5BcwrhMVwKu0yGnyLuJBxY/wCZSM8xlpqFfAWu7ZY58R
         GXZ9eY2iRsr++OSpt4g7El/pYraIHLoeffOPxTk70UBoJNIjyTTSRBDH/5aNHiVeSU8d
         3oBgaoQA2nZGPZreKksuWIXWuSFF/9bP/ITez35aT/WxFie2oFSpsp8PA1hv1enVlCTK
         65Hg==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20251104; t=1776768478; x=1777373278;
        h=content-transfer-encoding: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;
        bh=5YmlL2hT0KtsZVaCj5CBsqfzKc6l01c1MMkDFyMd+5g=;
        b=JflUfacqPAa/PPoHTHIBF7+nRAHRU1/+exY+BO4TWDHJKDcuHIDEdCFtyMtNHM3R2U
         i98xFOWB4J/EtbDvEXEWU6IWzRzOxS8dh7xtM1jYzftdfukZ04+f0U2nLF2bRJTgvLoY
         khAwkKbCDMCQDJAtw+hKVmz4WsZJe0f4IMsvqbi9JQVKP24Tw5xWf7w3oC0ZBHF9kA6w
         FI12btTc737KiTgVW8PgjZqAZm1rSFtxEF4LtbhSn8yM5i5ZLB90QG+fxpG6KoA/LHSe
         X8kjDYgDxXW/yslke6uPoI5rH37fsM5AgRUJuGsmNhhitvFhOMcO11EltHZbYSOAVvqO
         WSYA==
X-Forwarded-Encrypted: i=1; AFNElJ+1BT3W5C3w5S4u7b+H3IB4OnoePZb0zNzGs1a+QyOjco4BHGIJcI4di7gew+4p4OvemXqvlNHzbA8=@lists.xenproject.org
X-Gm-Message-State: AOJu0YzVYYdOM0BcISuFzJPjJE9SvAcY8jArgkqvC/uDKkNocPEH+4AP
	WtSvcB7A3M4D5ukyqYOsY2qIJrZHhX7ceiWrE8E5fn47runCppsZnVKO
X-Gm-Gg: AeBDievGY65ETJNxXQB47b6H/gkviJmx/XsGlq/GWEfzbxSHlE1BxOV1F2syJUu05LA
	ZHiswf58jTKIonbsfsksF1xFo74iD0kfiS5cAtCww82qMSiL5Mb0O1BS5cqDyBdmal31s2ofiDv
	y3DUfEZjcDJD5uSvOYsBpEVUD8QFoHJnU0BgjZUQ2TQd62dGOBg26YuYVauwwj95dnCHPf5hqNi
	7Tzf3uiEfWb7H+MZt7HTIvkY2XThHS9bVdC4tlPxf7VS9RrmRmNROkACRnvWFMNoEHf1eRTHgoK
	S6AalZtwV4nJWMKT/As6jZcrg2D2jHwPSmdMr8Xi4sVrb0dBsVKpjRo6UTKStBfkB2pyfgCRpM9
	bG6vR3TY9fDtezJw02dHgsu8190zRqvRj9N3lyDbqJcx55TKboVzaVtuY8ahVkEMwZAR+K0NQyY
	SgRGmo3yVfdHJb/4BK316VnSc33D+Uae1oMMhZeGDfrxONWA2fFRLSekbG6+MT8pt16NYSTYpud
	a0gugUglj1T6lT49xDgdL6X
X-Received: by 2002:a05:6512:1287:b0:5a2:bef4:5e8a with SMTP id 2adb3069b0e04-5a4172d368bmr5752769e87.18.1776768477811;
        Tue, 21 Apr 2026 03:47:57 -0700 (PDT)
Message-ID: <120bdb84-4f1d-4e26-aff7-2832fde245a1@gmail.com>
Date: Tue, 21 Apr 2026 12:47:56 +0200
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH v1 1/3] xen/dom0less: introduce free_phandle in struct
 kernel_info
To: "Orzel, Michal" <michal.orzel@amd.com>, xen-devel@lists.xenproject.org
Cc: Stefano Stabellini <sstabellini@kernel.org>, Julien Grall
 <julien@xen.org>, Bertrand Marquis <bertrand.marquis@arm.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.pau@citrix.com>
References: <cover.1776340422.git.oleksii.kurochko@gmail.com>
 <58f59a071f6329acac610688a6c25b67b30e5b92.1776340422.git.oleksii.kurochko@gmail.com>
 <6188df37-47f1-4b46-8b4a-56316221b86c@amd.com>
Content-Language: en-US
From: Oleksii Kurochko <oleksii.kurochko@gmail.com>
In-Reply-To: <6188df37-47f1-4b46-8b4a-56316221b86c@amd.com>
Content-Type: text/plain; charset=UTF-8; format=flowed
Content-Transfer-Encoding: 7bit
X-purgate-ID: tlsNG-ebf023/1776768479-291763FF-B9E29561/10/73395122804
X-purgate-type: spam
X-purgate-size: 1621



On 4/20/26 9:26 AM, Orzel, Michal wrote:
> On 16/04/2026 16:20, Oleksii Kurochko wrote:
>> There are cases where it is necessary to know the next available phandle
>> number in order to generate phandles for guest device nodes.
>>
>> When a partial FDT (pfdt) is provided, special care is needed during
>> initialization of free_phandle, as the pfdt may already contain a dummy
>> interrupt controller node with a phandle assigned to it.  free_phandle
>> must therefore be initialized to one past the highest phandle already
>> present in the pfdt, to avoid collisions.
>>
>> Since free_phandle may be needed for the very first guest node generated,
> I would prefer next_phandle rather than free_phandle given that it always holds
> the *next* phandle to be allocated. Free is implied.

I am okay with such naming as I had it before and decided to change at 
last minute.

> 
>> domain_handle_dtb_boot_module() is moved earlier in prepare_dtb_domU().
>> The new call site also aligns better with the existing comment stating
>> that domain_handle_dtb_boot_module() must be called before the rest of
>> the device tree is generated.
>>
>> Introduce get_next_free_phandle() to ensure that phandles allocated for
> The name is a bit confusing. It reads as "get the next one after the current
> free phandle" but it actually returns the current value of free_phandle and post
> increments it. Let's call it alloc_phandle(). This will also make it clear to
> use the return value of this function instead of directly kinfo value.

alloc_phandle() sounds good to me.

Thanks.

~ Oleksii


From xen-devel-bounces@lists.xenproject.org Tue Apr 21 10:48:52 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 21 Apr 2026 10:48:52 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1288872.1569103 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wF8ey-0005M2-N0; Tue, 21 Apr 2026 10:48:52 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1288872.1569103; Tue, 21 Apr 2026 10:48: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 1wF8ey-0005Lv-KJ; Tue, 21 Apr 2026 10:48:52 +0000
Received: by outflank-mailman (input) for mailman id 1288872;
 Tue, 21 Apr 2026 10:48:51 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92) id 1wF8ex-0005Lk-KY
 for xen-devel@lists.xenproject.org; Tue, 21 Apr 2026 10:48:51 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wF8ex-0076m1-1B
 for xen-devel@lists.xenproject.org; Tue, 21 Apr 2026 12:48:51 +0200
Received: from [10.42.69.5] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <oleksii.kurochko@gmail.com>)
 id 69e7560a-e002-0a2a0a5209dd-0a2a4505b9a8-26
 for <xen-devel@lists.xenproject.org>; Tue, 21 Apr 2026 12:48:51 +0200
Received: from [209.85.208.182] (helo=mail-lj1-f182.google.com)
 by tlsNG-c201ff.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.1)
 (envelope-from <oleksii.kurochko@gmail.com>)
 id 69e75612-aaa8-0a2a45050019-d155d0b6b08b-3
 for <xen-devel@lists.xenproject.org>; Tue, 21 Apr 2026 12:48:50 +0200
Received: by mail-lj1-f182.google.com with SMTP id
 38308e7fff4ca-38e91b06006so33424231fa.2
 for <xen-devel@lists.xenproject.org>; Tue, 21 Apr 2026 03:48:50 -0700 (PDT)
Received: from [192.168.1.6] (user-109-243-69-121.play-internet.pl.
 [109.243.69.121]) by smtp.gmail.com with ESMTPSA id
 2adb3069b0e04-5a4185c8b57sm3612425e87.37.2026.04.21.03.48.49
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Tue, 21 Apr 2026 03:48:49 -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=20251104 header.d=gmail.com header.i="@gmail.com" header.h="Content-Transfer-Encoding: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=20251104; t=1776768530; x=1777373330; darn=lists.xenproject.org;
        h=content-transfer-encoding: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;
        bh=r7dfEqXjFOI806a7YVa+NUHKbsxapeHBxldkN1O9/k4=;
        b=NwYZ1Q1cIt0lD52gUXcubbJqMyrij6j69kLyCzoGKOREvhig15q8rI4fT4K0v1My1d
         lgEUd8OcI2OZbRQAZM06h8D0j1MnF/yEhlw+m5TsTriMeFNUtuov3w22QJ8oCCI6oYUV
         X3sTrjGFRc8Wo2t642p6khMKAdKvUOpjUAnSTfy1YCU+jV8Hu8I1fCFojUusfZaUxQTx
         WlD/FT/Pa+eXP+Vmra66JT8g488rxuXFtHzgTU3bVKlUK8jQwEFldmbVIU/qTg1/afWU
         cQGTXNrXWJbYhVkVs3NMolGhuYJI83oWDFY1GdGMdby4V0xN7OXtDPl5xNw5JMEceMr2
         LLMw==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20251104; t=1776768530; x=1777373330;
        h=content-transfer-encoding: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;
        bh=r7dfEqXjFOI806a7YVa+NUHKbsxapeHBxldkN1O9/k4=;
        b=oUveOOYpvQFXMuQ+Fowr8SVfq0ew9gag7TU2hUQ1Uf0D4KmkWcfoFXK/2w0PtFgZoG
         NSBQ7HGIMYySEcr4tGgPxOG6mPyDxPPhxlGhhWtjKW1Y1ZDe6EswPz9uKQQzrDHcYisJ
         2s5vdj/bO++UFG4nuoZFg6sjFanE0v9GNZ9d6WVDhXpiOQwdwyETrfKGLmY35/sgtIlC
         3o5iviuqgFoQRy/Pc5Om1pDxmqoIZDuP+XeQdpcVUcKtRUT9sKUKCmhzERbsST9253NQ
         lBHkcsdSo4hHCuFXdD5baCi2IndrU0M/F5xp2of0JEMUzgMN7C+fiBYgnzKniBf0dEcb
         /nMQ==
X-Forwarded-Encrypted: i=1; AFNElJ+58LjZe4L4Fo9hOqHg0nLBqnwvPOuOH4pZIYdpuOhywxgwWRbCoL/TI2bfahGcJWGPp2TouLVd+gw=@lists.xenproject.org
X-Gm-Message-State: AOJu0YztfF7pf7CizFD89hAe/OpqqszeKdCrQNu7kZxzTz9NAfvnMjOh
	sumaSV0mnybuLC01/+M/dRMTADuz1UIZ2xe6aOqPJq5ME9VWPYpx0oO1
X-Gm-Gg: AeBDievoJwLazKv7xQV8aqBWGumReGRGShqoCBYmFr1E9yVRvKO2n5VUb2z79J57QO5
	YPwZmsVFixfUQRhtc91hkceRcqPESj/HZE0NgObVxeU85BXvsmshHp64o8Yr8PTrKoKugMR0jFw
	8TNhZb6APhqe21eoerJM7wwWqcnHXFwga08pYHzHN5AjMbw/oVhI/1PgFUG9piTVD0+GXkXTt4e
	Z6mbaogPoK0lYBMenzj8FBKSRMsOevbyCXNRaNlY0OlYCD82HXG1g19x+cJnsc7fdfdmnbLTLkV
	en/Mo0xrYnprBZEQcwJ+ld0rgZkt19RMN67gKQofMXzU0FvtXXxIpaqIe1eGOHQeRRhE2hEsN4t
	XVGPVFO/loXqiTNoQ8GkBZ3r4XxbHVzFfNsS/1L/NxOJG45V4TcW/qdzfQ9H/K/ggcP2PRqSoj5
	dE3duLF32T8tICOEXpEW1c00PA0ME9+KAMNdqw48GDU4WrhiGCDaL4KBlZdeDwXgnkOP0QSufZw
	Zj1vkNGnjL1/A==
X-Received: by 2002:a05:6512:10cc:b0:5a3:cd94:df73 with SMTP id 2adb3069b0e04-5a4172e7f45mr6753956e87.38.1776768529991;
        Tue, 21 Apr 2026 03:48:49 -0700 (PDT)
Message-ID: <5f6fdec5-1ad7-40c5-b346-8177f639c52a@gmail.com>
Date: Tue, 21 Apr 2026 12:48:48 +0200
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH v1 2/3] xen/dom0less: pass kernel_info struct instead of
 fdt to make_cpus_node()
To: "Orzel, Michal" <michal.orzel@amd.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>,
 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.pau@citrix.com>
References: <cover.1776340422.git.oleksii.kurochko@gmail.com>
 <a897d880738f5b3be2d6fc5ec2b6cab1fd8b9dc4.1776340422.git.oleksii.kurochko@gmail.com>
 <b97cbb48-5bd9-4887-bb1e-24b7f001e5a5@amd.com>
Content-Language: en-US
From: Oleksii Kurochko <oleksii.kurochko@gmail.com>
In-Reply-To: <b97cbb48-5bd9-4887-bb1e-24b7f001e5a5@amd.com>
Content-Type: text/plain; charset=UTF-8; format=flowed
Content-Transfer-Encoding: 7bit
X-purgate-ID: tlsNG-c201ff/1776768531-E3563443-85CD6779/10/73395122804
X-purgate-type: spam
X-purgate-size: 1660



On 4/20/26 9:29 AM, Orzel, Michal wrote:
> 
> 
> On 16/04/2026 16:20, Oleksii Kurochko wrote:
>> There are two reasons of this change:
>> 1. Align prototype with what other make_*_node() are passed.
>> 2. A follow-up RISC-V patch will call get_next_free_phandle() inside
>>     make_cpus_node(), requiring mutable access to kinfo->free_phandle.
>>
>> Signed-off-by: Oleksii Kurochko <oleksii.kurochko@gmail.com>
>> ---
>>   xen/arch/arm/domain_build.c             | 5 +++--
>>   xen/common/device-tree/dom0less-build.c | 2 +-
>>   xen/include/xen/fdt-domain-build.h      | 2 +-
>>   3 files changed, 5 insertions(+), 4 deletions(-)
>>
>> diff --git a/xen/arch/arm/domain_build.c b/xen/arch/arm/domain_build.c
>> index 60a7cbf915a5..6740da3d324b 100644
>> --- a/xen/arch/arm/domain_build.c
>> +++ b/xen/arch/arm/domain_build.c
>> @@ -1164,7 +1164,7 @@ int __init make_psci_node(void *fdt)
>>       return res;
>>   }
>>   
>> -int __init make_cpus_node(const struct domain *d, void *fdt)
>> +int __init make_cpus_node(const struct domain *d, struct kernel_info *kinfo)
>>   {
>>       int res;
>>       const struct dt_device_node *cpus = dt_find_node_by_path("/cpus");
>> @@ -1178,6 +1178,7 @@ int __init make_cpus_node(const struct domain *d, void *fdt)
>>       /* Keep the compiler happy with -Og */
>>       bool clock_valid = false;
>>       uint64_t mpidr_aff;
>> +    void *fdt = kinfo;
> You're assigning kinfo to fdt pointer which is a bug.
> Instead, you should do:
> void *fdt = kinfo->fdt

Oh, right. Missed apply changes properly. As you noticed it was fixed in 
the next patch.

Thanks.

~ Oleksii


From xen-devel-bounces@lists.xenproject.org Tue Apr 21 11:06:32 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 21 Apr 2026 11:06:32 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1288890.1569128 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wF8vy-0000Id-9p; Tue, 21 Apr 2026 11:06:26 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1288890.1569128; Tue, 21 Apr 2026 11:06: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 1wF8vy-0000IW-78; Tue, 21 Apr 2026 11:06:26 +0000
Received: by outflank-mailman (input) for mailman id 1288890;
 Tue, 21 Apr 2026 11:06:24 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92) id 1wF8vw-0000IQ-Ix
 for xen-devel@lists.xenproject.org; Tue, 21 Apr 2026 11:06:24 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wF8vv-00AmrS-Vl
 for xen-devel@lists.xenproject.org; Tue, 21 Apr 2026 13:06:23 +0200
Received: from [10.42.69.1] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <oleksii.kurochko@gmail.com>)
 id 69e75a29-5cb7-0a2a0a5109dd-0a2a450195d4-18
 for <xen-devel@lists.xenproject.org>; Tue, 21 Apr 2026 13:06:23 +0200
Received: from [209.85.208.171] (helo=mail-lj1-f171.google.com)
 by tlsNG-d62444.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.1)
 (envelope-from <oleksii.kurochko@gmail.com>)
 id 69e75a2f-c1f2-0a2a45010019-d155d0abc4a5-3
 for <xen-devel@lists.xenproject.org>; Tue, 21 Apr 2026 13:06:23 +0200
Received: by mail-lj1-f171.google.com with SMTP id
 38308e7fff4ca-38e8292423fso35634001fa.0
 for <xen-devel@lists.xenproject.org>; Tue, 21 Apr 2026 04:06:23 -0700 (PDT)
Received: from [192.168.1.6] (user-109-243-69-121.play-internet.pl.
 [109.243.69.121]) by smtp.gmail.com with ESMTPSA id
 2adb3069b0e04-5a4187ebf2asm3606031e87.80.2026.04.21.04.06.21
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Tue, 21 Apr 2026 04:06:22 -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=20251104 header.d=gmail.com header.i="@gmail.com" header.h="Content-Transfer-Encoding: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=20251104; t=1776769583; x=1777374383; darn=lists.xenproject.org;
        h=content-transfer-encoding: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;
        bh=KiEvJ8H1MuAp/gg1BGQo5ANPAKcmffzYcWPbz/6DG30=;
        b=a5/B9rONnNCMGSGFZU2NSko36BdU4ld5cMDJo9VwIwio9F1C0O/scVBX4EAnhd4DcB
         r4UeX0RZEaxUVb9xxfVNWm4XEKl1jSg5dU3xFuyMCrfkrcM0ZyzCLpg4Ir1B2loygzT3
         VA9/ha4XjBR08R5oJslDw3u+kQ7RFY7GK4M18iihhW1n6jEcXj9JZPO8XIYSLxUlGIr4
         i3+Nw8V6bRQDlNdotXzRdJhw9khnQgPovlZLN9xHqTqGDa0hJUlUVBkgqp3/W05UTUin
         x1+klaIQMgF8FMe7l3W4lcY4B4EIfIkhJQzjnuAZzJ5v2T3oEOxZkrjeikLPIiMlEU2o
         ZO4A==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20251104; t=1776769583; x=1777374383;
        h=content-transfer-encoding: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;
        bh=KiEvJ8H1MuAp/gg1BGQo5ANPAKcmffzYcWPbz/6DG30=;
        b=U0mNvu/74wbFJXVbdN7+8GQrVBzFXB2gcdIPj2FUOM8QujqUeU2P8ZpVl8wWOh1xgr
         +D0WzVwibto1XQBsAeH1WATNsWe3RLFSpxX4UDVGk+tq+mxCPJv3KmlmnWn3V/ZxF9FJ
         EbHSRsYnz5feRg5WPpSfN4VhVLh2w5EGSiRH2e4JBgeBs6VYrGI2xZ6ot3hM9FUB3Q2d
         MHBLOyqkWT3ygxojPCDYOi7xOHaECXnGfRmymCNhvs8nGr/dYmepshx+uZGHeQW7iTD/
         j660bDScGCEovJ10Pz2roPZDikq16Unu+yD85dwEy2kXwC0bSLiqDvxrrmxc5MhwI0to
         NtYw==
X-Forwarded-Encrypted: i=1; AFNElJ/FU0tYDTgdtZZOXjDV2mqoWsqMWV63vCQ+WHuzj6IUDb/9WNrB3aA+HW2PtvbcXoMOZW5cjMPKj+Y=@lists.xenproject.org
X-Gm-Message-State: AOJu0YwwHxDULyens6jXBye1zVc3jy/6r06Fb3kFuMldDeCOIQ3n2LZc
	s3yMg5JtJj3a3iSDZ0LKcYIfkLtm5RrDJNf2NDBjqBgeNwPK0XokV6Tg
X-Gm-Gg: AeBDiev7AXadjBhaGXrl6ebaz3yj8+txBg/l6ysAgZukCzSe9gwA6e13Yy8PsQy7C2G
	M9t9MJx5zUqAHAxxHLtdCMNCb/y+Dgxl6K7R9sZ2vU4o+O2O2PaM9w12DcNbDOAif354DLqIH0k
	1n4gY3JJzt8njI6eThNk6BOrFDLzfB+DVovVOC1ticqab1EheODVShX6OuJNoZlSvNLyUX6PBH4
	ILMXMOqMcL3PslUSi+IqE6k6uHI6KoLXNw2S62dsb63TjF9KW5zEtuggKMlYtdIcWcl8i3hWMWZ
	sIDs8rkRH8j1/7rl6CrYptgxCr9KDxp8Iqp4Ob2IpUjMpndLvImOpeWBtQ9nSO7VHn4zav0Mj0K
	e+ZAQayi5JojI2LMJfh+YvR1uZpE7vWrgYIQZRxUuGLpBVstT3qttAqpX26yR6cjApx7Ln6GhU2
	qHzgwsJXeVAwDgiIHkts+s4bKu8O4q2WnGHra76IVmJNdtGUoSde8+zOUXJbAeeirYaBzu8/0Q0
	+Gfe+n12AcJXA==
X-Received: by 2002:a05:6512:31d6:b0:5a4:6a5:9904 with SMTP id 2adb3069b0e04-5a4172e4778mr6608234e87.31.1776769582738;
        Tue, 21 Apr 2026 04:06:22 -0700 (PDT)
Message-ID: <aa51f23b-0e2f-4666-93ee-038430f661ab@gmail.com>
Date: Tue, 21 Apr 2026 13:06:21 +0200
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH v1 3/3] xen: introduce CONFIG_HAS_DOMAIN_TYPE
To: "Orzel, Michal" <michal.orzel@amd.com>, xen-devel@lists.xenproject.org
Cc: Andrew Cooper <andrew.cooper3@citrix.com>,
 Anthony PERARD <anthony.perard@vates.tech>, 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>,
 Bertrand Marquis <bertrand.marquis@arm.com>,
 Volodymyr Babchuk <Volodymyr_Babchuk@epam.com>
References: <cover.1776340422.git.oleksii.kurochko@gmail.com>
 <e5ffcdecb0ca3c87b46965449601ff20116fecc0.1776340422.git.oleksii.kurochko@gmail.com>
 <c5003b0c-04e1-4081-b931-bfcb9ab1b739@amd.com>
Content-Language: en-US
From: Oleksii Kurochko <oleksii.kurochko@gmail.com>
In-Reply-To: <c5003b0c-04e1-4081-b931-bfcb9ab1b739@amd.com>
Content-Type: text/plain; charset=UTF-8; format=flowed
Content-Transfer-Encoding: 7bit
X-purgate-ID: tlsNG-d62444/1776769583-BDA69FF4-114C7F1D/10/73395122804
X-purgate-type: spam
X-purgate-size: 875



On 4/20/26 10:03 AM, Orzel, Michal wrote:
> 
> 
> On 16/04/2026 16:21, Oleksii Kurochko wrote:
>> As domain type is part of common code now there is no any reason
>> to have architecture-specific set_domain_type() functions so
>> it is dropped.
>>
>> The CONFIG_ARM_64 guard in xen/arch/arm/domain_build.c is intentionally
>> left unchanged: it is ARM-specific code, and ARM_64 selects
>> HAS_DOMAIN_TYPE, so the semantics are identical.
>>
>> x86 with CONFIG_64BIT=y shouldn't use is_{32,64}bit_domain() as
>> x86 doesn't have support of CONFIG_HAS_DOMAIN_TYPE. For x86_32
>> it is fine to follow generic is_{32,64}_bit_domain() implementations.
> I thought x86_32 Xen no longer builds. This means the fallback is only for arm32.

Will you be okay with
   Since x86_32 Xen no longer builds, the fallback is currently only 
relevant for arm32.

?



From xen-devel-bounces@lists.xenproject.org Tue Apr 21 11:08:56 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 21 Apr 2026 11:08:56 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1288900.1569136 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wF8yM-0000rv-LZ; Tue, 21 Apr 2026 11:08:54 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1288900.1569136; Tue, 21 Apr 2026 11:08: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 1wF8yM-0000ro-Ix; Tue, 21 Apr 2026 11:08:54 +0000
Received: by outflank-mailman (input) for mailman id 1288900;
 Tue, 21 Apr 2026 11:08:53 +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 1wF8yK-0000rg-WA
 for xen-devel@lists.xenproject.org; Tue, 21 Apr 2026 11:08:53 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wF8yI-00BWGn-78
 for xen-devel@lists.xenproject.org; Tue, 21 Apr 2026 13:08:52 +0200
Received: from [10.42.69.8] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <lkp@intel.com>)
 id 69e75ab6-5cb7-0a2a0a5109dd-0a2a4508819e-32
 for <xen-devel@lists.xenproject.org>; Tue, 21 Apr 2026 13:08:50 +0200
Received: from [192.198.163.8] (helo=mgamail.intel.com)
 by tlsNG-c1860d.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.1)
 (envelope-from <lkp@intel.com>)
 id 69e75ac0-63b5-0a2a45080019-c0c6a308a67c-3
 for <xen-devel@lists.xenproject.org>; Tue, 21 Apr 2026 13:08:50 +0200
Received: from fmviesa001.fm.intel.com ([10.60.135.141])
 by fmvoesa102.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384;
 21 Apr 2026 04:08:47 -0700
Received: from lkp-server01.sh.intel.com (HELO 7e48d0ff8e22) ([10.239.97.150])
 by fmviesa001.fm.intel.com with ESMTP; 21 Apr 2026 04:08:46 -0700
Received: from kbuild by 7e48d0ff8e22 with local (Exim 4.98.2)
 (envelope-from <lkp@intel.com>) id 1wF8yB-000000003Qa-3dGO;
 Tue, 21 Apr 2026 11:08: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=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=1776769729; x=1808305729;
  h=date:from:to:cc:subject:message-id:references:
   mime-version:in-reply-to;
  bh=OeDNHRU79WaG0ZKrqxuZJYzFNK66hcB5aJigefNW67s=;
  b=c/qrtmhZfh9R/ls2F6Zxb/JIsutBUJzFnqz38XNDCoopkaIxak21qTBR
   8VSKfRYYNsovpKyr4oEYP+mKwUn+HrpqlcoSGozq9/unAwgh9mJHBjCxb
   FnwXQV89wuV6KYa13eajG9mtcqe1h4o2nrZZnb3Z63OtVDsJ0N4boTwi0
   EH7iByg4a4E37jpGKn6JcrCxK/7b9cUwYVp5Y/hhz61iNC20kktSKuDZD
   oXsh3uMKQMuRlBvjKVUoljdeK4bsqEP3Y81CcxDtYupwbo54f1wupQWpQ
   9foAIYScgD0SnKV8f6hJ1Eb+y2Qo+aG9UzGyRQ8rP8i7FUlqIsRGgTylE
   A==;
X-CSE-ConnectionGUID: nC9Y4b84R4at0C3monpQpQ==
X-CSE-MsgGUID: 5tWbveVwS3CV+041hxC5yQ==
X-IronPort-AV: E=McAfee;i="6800,10657,11762"; a="95257951"
X-IronPort-AV: E=Sophos;i="6.23,191,1770624000"; 
   d="scan'208";a="95257951"
X-CSE-ConnectionGUID: gUCRgVilQF+/8zgWNJVDBw==
X-CSE-MsgGUID: h5r2wrwxT16rd+Nk+oK+MQ==
X-ExtLoop1: 1
X-IronPort-AV: E=Sophos;i="6.23,191,1770624000"; 
   d="scan'208";a="255473858"
Date: Tue, 21 Apr 2026 19:08:06 +0800
From: kernel test robot <lkp@intel.com>
To: zhaoguohan@kylinos.cn, jgross@suse.com, sstabellini@kernel.org
Cc: oe-kbuild-all@lists.linux.dev, oleksandr_tyshchenko@epam.com,
	xen-devel@lists.xenproject.org, linux-kernel@vger.kernel.org,
	GuoHan Zhao <zhaoguohan@kylinos.cn>
Subject: Re: [PATCH] xen/manage: unwind partial shutdown watcher setup on
 error
Message-ID: <202604211801.rqptlYaS-lkp@intel.com>
References: <20260407022443.12971-1-zhaoguohan@kylinos.cn>
MIME-Version: 1.0
Content-Type: text/plain; charset=us-ascii
Content-Disposition: inline
In-Reply-To: <20260407022443.12971-1-zhaoguohan@kylinos.cn>
X-purgate-ID: tlsNG-c1860d/1776769730-C2169DB1-E575909F/0/0
X-purgate-type: clean
X-purgate-size: 3615

Hi,

kernel test robot noticed the following build warnings:

[auto build test WARNING on v7.0]
[cannot apply to xen-tip/linux-next linus/master next-20260420]
[If your patch is applied to the wrong git tree, kindly drop us a note.
And when submitting patch, we suggest to use '--base' as documented in
https://git-scm.com/docs/git-format-patch#_base_tree_information]

url:    https://github.com/intel-lab-lkp/linux/commits/zhaoguohan-kylinos-cn/xen-manage-unwind-partial-shutdown-watcher-setup-on-error/20260416-185003
base:   v7.0
patch link:    https://lore.kernel.org/r/20260407022443.12971-1-zhaoguohan%40kylinos.cn
patch subject: [PATCH] xen/manage: unwind partial shutdown watcher setup on error
config: arm64-randconfig-002-20260421 (https://download.01.org/0day-ci/archive/20260421/202604211801.rqptlYaS-lkp@intel.com/config)
compiler: aarch64-linux-gcc (GCC) 13.4.0
reproduce (this is a W=1 build): (https://download.01.org/0day-ci/archive/20260421/202604211801.rqptlYaS-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/202604211801.rqptlYaS-lkp@intel.com/

All warnings (new ones prefixed by >>):

   drivers/xen/manage.c: In function 'setup_shutdown_watcher':
>> drivers/xen/manage.c:380:1: warning: label 'err_unregister_shutdown' defined but not used [-Wunused-label]
     380 | err_unregister_shutdown:
         | ^~~~~~~~~~~~~~~~~~~~~~~
   drivers/xen/manage.c: In function 'shutdown_event':
   drivers/xen/manage.c:357:60: warning: '%s' directive output may be truncated writing up to 71 bytes into a region of size 12 [-Wformat-truncation=]
     357 |                 snprintf(node, FEATURE_PATH_SIZE, "feature-%s",
         |                                                            ^~
   In function 'setup_shutdown_watcher',
       inlined from 'shutdown_event' at drivers/xen/manage.c:389:2:
   drivers/xen/manage.c:357:17: note: 'snprintf' output between 9 and 80 bytes into a destination of size 20
     357 |                 snprintf(node, FEATURE_PATH_SIZE, "feature-%s",
         |                 ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
     358 |                          shutdown_handlers[idx].command);
         |                          ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~


vim +/err_unregister_shutdown +380 drivers/xen/manage.c

   353	
   354		for (idx = 0; idx < ARRAY_SIZE(shutdown_handlers); idx++) {
   355			if (!shutdown_handlers[idx].flag)
   356				continue;
   357			snprintf(node, FEATURE_PATH_SIZE, "feature-%s",
   358				 shutdown_handlers[idx].command);
   359			err = xenbus_printf(XBT_NIL, "control", node, "%u", 1);
   360			if (err) {
   361				pr_err("%s: Error %d writing %s\n", __func__,
   362					err, node);
   363				goto err_remove_features;
   364			}
   365		}
   366	
   367		return 0;
   368	
   369	err_remove_features:
   370		while (--idx >= 0) {
   371			if (!shutdown_handlers[idx].flag)
   372				continue;
   373			snprintf(node, FEATURE_PATH_SIZE, "feature-%s",
   374				 shutdown_handlers[idx].command);
   375			xenbus_rm(XBT_NIL, "control", node);
   376		}
   377	#ifdef CONFIG_MAGIC_SYSRQ
   378		unregister_xenbus_watch(&sysrq_watch);
   379	#endif
 > 380	err_unregister_shutdown:
   381		unregister_xenbus_watch(&shutdown_watch);
   382		return err;
   383	}
   384	

-- 
0-DAY CI Kernel Test Service
https://github.com/intel/lkp-tests/wiki


From xen-devel-bounces@lists.xenproject.org Tue Apr 21 11:53:59 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 21 Apr 2026 11:53:59 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1288914.1569145 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wF9fj-0000Sv-Sq; Tue, 21 Apr 2026 11:53:43 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1288914.1569145; Tue, 21 Apr 2026 11:53: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 1wF9fj-0000So-QA; Tue, 21 Apr 2026 11:53:43 +0000
Received: by outflank-mailman (input) for mailman id 1288914;
 Tue, 21 Apr 2026 11:53:42 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92) id 1wF9fi-0000Si-Ca
 for xen-devel@lists.xenproject.org; Tue, 21 Apr 2026 11:53:42 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wF9fh-007J4d-Aa
 for xen-devel@lists.xenproject.org; Tue, 21 Apr 2026 13:53:41 +0200
Received: from [10.42.69.9] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <oleksii.kurochko@gmail.com>)
 id 69e7653d-bab6-0a2a0a5309dd-0a2a4509e0da-30
 for <xen-devel@lists.xenproject.org>; Tue, 21 Apr 2026 13:53:41 +0200
Received: from [209.85.167.47] (helo=mail-lf1-f47.google.com)
 by tlsNG-bad1c0.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.1)
 (envelope-from <oleksii.kurochko@gmail.com>)
 id 69e76544-2497-0a2a45090019-d155a72fa57e-3
 for <xen-devel@lists.xenproject.org>; Tue, 21 Apr 2026 13:53:41 +0200
Received: by mail-lf1-f47.google.com with SMTP id
 2adb3069b0e04-5a415fd6bceso4579889e87.1
 for <xen-devel@lists.xenproject.org>; Tue, 21 Apr 2026 04:53:41 -0700 (PDT)
Received: from [192.168.1.6] (user-109-243-69-121.play-internet.pl.
 [109.243.69.121]) by smtp.gmail.com with ESMTPSA id
 2adb3069b0e04-5a4187e12e0sm3618031e87.51.2026.04.21.04.53.38
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Tue, 21 Apr 2026 04:53:39 -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=20251104 header.d=gmail.com header.i="@gmail.com" header.h="Content-Transfer-Encoding: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=20251104; t=1776772420; x=1777377220; darn=lists.xenproject.org;
        h=content-transfer-encoding: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;
        bh=GnI1w8VHFLuYA/q/nQKT8b1hWlYdiduy2GEHg/0m0UQ=;
        b=rfLp1CSjPVQVTF8X5dhZ9ywCLG7BwPPS0j/Sr1CfK47QWRECzH10X48dCyc4Z4rp0I
         2g3zZ0ymuF6MYSCLQ9v/eEvGB/OtcKFBLwZXDMk4UBy4mCbR+02ec7CXZrgg0ILwwa7f
         uL2XLCzZj9w5Dxr0rZHuT59ygz24yJ/s2J5kkBmSXZjZRPSPHkbLt7FH0HyfBnOTm2ZN
         K9JgJ88CtaWI/V5C1gY4gqWrPB0cZrdPtZQ4Q9dNknf+2zhSr6nkd1zOXKzGdKksgY2w
         uZLYwDipNRIEiGO63hVFHsY+GECIEuH4IBQ5nSXzayqSoHLqT2Ql5GJJg8iPF5siQbdk
         lNvg==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20251104; t=1776772420; x=1777377220;
        h=content-transfer-encoding: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;
        bh=GnI1w8VHFLuYA/q/nQKT8b1hWlYdiduy2GEHg/0m0UQ=;
        b=KcwfHJXTSMJZbCIJwZEdviAmeP5BCSUZBd74jcIsCM+Z7q53MXHhFck2nLU0Z7Ppt4
         uoqB+geK/THuD/1D2ewjfDVLzT5s5Fkirp/cM+f/Q68b2pbUp+vCUeDsqQIEvy1jF9rN
         wtAEu6369sbznzs1b9Muit6I7Ydj/V9e/qfRVWMHWFAPHpdKaAenB9mowmja27aoHLB5
         2s3mDFOZcMTM0lGAV3LVZMWhtYnQwHsRSVkg8zFTXaoSJ6r0Y0ozErYnvo9WFqMMUIHL
         wn80Dax4FLgp2LXUhJyCnLzzkgtf++4Zr0m3i1dPJ0b623JjtVtJAiDzDSfuKUFUVVf9
         941A==
X-Forwarded-Encrypted: i=1; AFNElJ+VCM7S2/7zET2P7+ASXOi+E2qW8WXaYhkEzNYYe9AcvZP1+N66z6lu6dQl6dKLhKNZW1tMQwkU+B8=@lists.xenproject.org
X-Gm-Message-State: AOJu0Yzwgj5N8MtEXQswLO5Zwt8WMdemETnvxrWA7SqBb/RqdFT6fkmP
	uKVHWdt915PI7j5zgiZ+AyqvEYAO7FdtUpdubMHrmgWk1DWMoaSVsuTP
X-Gm-Gg: AeBDietYNtURUmBZIL6btMkOH9A3myRbHhkG0Qfi44BvI94SCv1aOc4CdI42iCQokxt
	7q4knPGGanlkuFNTNal2jH3PbiKgmx++A5b+IKBSdb3c1rZuh9Zglq2pA7FfLVo+ODphEt56s1Z
	Rjl4uz1qQMQ9q9DScWicl2k9+rZ0rWzDbnTLX9LRVUjVKDZjB/YN1aedjMjWBtEQ6RRH1+EVlwd
	odIQQMlexowp76aFFAMfwq+kaxyh+WRTUvPfeKPu0lXgtgOMBZnhMlRMZzVW6DDQTtz3dTALZKh
	gXuhoo6Zsa93LJtziXO7SxySUOBy9FDh5idSJHGsUXVE2cgCH07x5glmxi6kJC3NYq0u9mXv7kt
	MNebgCmujSf4pG4ypzxUgoFkfY4VBrjqYOlkoxjL9I7pgy8X2A9TAK+gUKOM3OllZR6agbPOpJR
	OCayH+eEveviTWJ1wJ8J2hbxevFLRyF1sS4QNCLIRplqOLK0IJfdgbMIsbcp+EHYMNCQWZ2PADt
	b31tiJrXrmO8g==
X-Received: by 2002:a05:6512:3c99:b0:5a4:1b6:dd31 with SMTP id 2adb3069b0e04-5a417299948mr4954946e87.13.1776772420041;
        Tue, 21 Apr 2026 04:53:40 -0700 (PDT)
Message-ID: <62fe5597-4230-48d1-8b3d-35715fc824c8@gmail.com>
Date: Tue, 21 Apr 2026 13:53:38 +0200
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH v1 3/3] xen: introduce CONFIG_HAS_DOMAIN_TYPE
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>,
 =?UTF-8?Q?Roger_Pau_Monn=C3=A9?= <roger.pau@citrix.com>,
 Stefano Stabellini <sstabellini@kernel.org>,
 Bertrand Marquis <bertrand.marquis@arm.com>,
 Volodymyr Babchuk <Volodymyr_Babchuk@epam.com>,
 xen-devel@lists.xenproject.org
References: <cover.1776340422.git.oleksii.kurochko@gmail.com>
 <e5ffcdecb0ca3c87b46965449601ff20116fecc0.1776340422.git.oleksii.kurochko@gmail.com>
 <f5c7006d-a6ed-4c92-962b-d5f4b27a5c6d@suse.com>
Content-Language: en-US
From: Oleksii Kurochko <oleksii.kurochko@gmail.com>
In-Reply-To: <f5c7006d-a6ed-4c92-962b-d5f4b27a5c6d@suse.com>
Content-Type: text/plain; charset=UTF-8; format=flowed
Content-Transfer-Encoding: 7bit
X-purgate-ID: tlsNG-bad1c0/1776772421-48CADA53-2664506C/10/73395122804
X-purgate-type: spam
X-purgate-size: 6360



On 4/20/26 10:22 AM, Jan Beulich wrote:
> On 16.04.2026 16:21, Oleksii Kurochko wrote:
>> As domain type is part of common code now there is no any reason
>> to have architecture-specific set_domain_type() functions so
>> it is dropped.
>>
>> The CONFIG_ARM_64 guard in xen/arch/arm/domain_build.c is intentionally
>> left unchanged: it is ARM-specific code, and ARM_64 selects
>> HAS_DOMAIN_TYPE, so the semantics are identical.
> 
> Still I think it would better be updated, for consistency's sake.

I can update that. Just tried to keep changes smaller.

> 
>> x86 with CONFIG_64BIT=y shouldn't use is_{32,64}bit_domain() as
>> x86 doesn't have support of CONFIG_HAS_DOMAIN_TYPE. For x86_32
>> it is fine to follow generic is_{32,64}_bit_domain() implementations.
> 
> As Michal has also alluded to, the use of x86_32 here needs some further
> qualification, as Xen hasn't been possible to be built for that target
> for many years. Quite possibly you mean guest type there, but then it's
> unclear why you would restrict the explanation to 32-bit guests.

I suggested to rephrase that part to: "Since x86_32 Xen no longer 
builds, the fallback is currently only relevant for arm32."

> 
>> Generally it probably would be better to introduce CONFIG_32BIT
>> and use it to define is_{32,64}bit_domain() as if one day
>> CONFIG_128BIT will be introduced is_{32,64}bit_domain() will be
>> defined incorrectly but considering that CONFIG_64BIT is maximum
>> supported bitness it is fine to define in this way.
> 
> Many things will need adjustment for a future CONFIG_128BIT. Imo this
> kind of statement doesn't belong in a patch description; it could be a
> post-commit-message remark.

I will drop that part of the message.

> 
>> --- a/xen/arch/Kconfig
>> +++ b/xen/arch/Kconfig
>> @@ -1,6 +1,9 @@
>>   config 64BIT
>>   	bool
>>   
>> +config HAS_DOMAIN_TYPE
>> +	bool
>> +
>>   config PHYS_ADDR_T_32
>>   	bool
> 
> Why here rather than where the bulk of the other HAS_* are?

Because it is a little arch-specific now as not all arch-s support it.

I can move it to xen/common/Kconfig.

> 
>> --- a/xen/arch/arm/domain_build.c
>> +++ b/xen/arch/arm/domain_build.c
>> @@ -1178,7 +1178,7 @@ int __init make_cpus_node(const struct domain *d, struct kernel_info *kinfo)
>>       /* Keep the compiler happy with -Og */
>>       bool clock_valid = false;
>>       uint64_t mpidr_aff;
>> -    void *fdt = kinfo;
>> +    void *fdt = kinfo->fdt;
>>   
>>       dt_dprintk("Create cpus node\n");
>>   
>> @@ -1774,13 +1774,13 @@ int __init construct_domain(struct domain *d, struct kernel_info *kinfo)
>>   
>>   #ifdef CONFIG_ARM_64
>>       /* if aarch32 mode is not supported at EL1 do not allow 32-bit domain */
>> -    if ( !(cpu_has_el1_32) && kinfo->arch.type == DOMAIN_32BIT )
>> +    if ( !(cpu_has_el1_32) && kinfo->type == DOMAIN_32BIT )
> 
> I'm not an Arm maintainer; if I was, I'd ask for the stray parentheses to be
> dropped on this occasion.

They could be dropped. Should be then it mentioned in commit message?

> 
>> @@ -1896,7 +1896,7 @@ int __init construct_hwdom(struct kernel_info *kinfo,
>>   
>>   #ifdef CONFIG_ARM_64
>>       /* type must be set before allocate_memory */
>> -    d->arch.type = kinfo->arch.type;
>> +    d->type = kinfo->type;
>>   #endif
> 
> I wonder why this doesn't use set_domain_type() (see also below).

I assume that domain_build.c could be used for both dom0 and dom0less 
but set_domain_type() was used for dom0less. But generally I think it 
shouldn't be a problem to re-use it in construct_hwdom().

If it is fine to ...


> 
>> --- a/xen/common/device-tree/dom0less-build.c
>> +++ b/xen/common/device-tree/dom0less-build.c
>> @@ -809,7 +809,10 @@ static int __init construct_domU(struct kernel_info *kinfo,
>>       if ( rc < 0 )
>>           return rc;
>>   
>> -    set_domain_type(d, kinfo);
>> +#ifdef CONFIG_HAS_DOMAIN_TYPE
>> +    /* type must be set before allocate memory */
> 
> Nit: Comment style.
> 
>> +    d->type = kinfo->type;
>> +#endif
> 
> Imo it would be preferable to retain set_domain_type(), to avoid #ifdef-ary
> here and in construct_hwdom(). Of course its implementation would need to
> move. Couldn't it be ...
> 
>> --- a/xen/include/xen/dom0less-build.h
>> +++ b/xen/include/xen/dom0less-build.h
>> @@ -57,8 +57,6 @@ int init_vuart(struct domain *d, struct kernel_info *kinfo,
>>   int make_intc_domU_node(struct kernel_info *kinfo);
>>   int make_arch_nodes(struct kernel_info *kinfo);
>>   
>> -void set_domain_type(struct domain *d, struct kernel_info *kinfo);
> 
> ... an inline function here?

... move set_domain_type() to <xen/fdt-domain-build.h> then it would be 
fine for me to have the following implementation:

static void inline set_domain_type(struct domain *d, struct kernel_info 
*kinfo)
{
#ifdef CONFIG_HAS_DOMAIN
     /* type must be set before allocate memory */
     d->arch.type = kinfo->arch.type;
#endif
}

and re-use it everywhere it is needed.

> 
>> --- a/xen/include/xen/sched.h
>> +++ b/xen/include/xen/sched.h
>> @@ -668,6 +668,10 @@ struct domain
>>       struct page_info *pending_scrub;
>>       unsigned int pending_scrub_order;
>>       unsigned int pending_scrub_index;
>> +
>> +#ifdef CONFIG_HAS_DOMAIN_TYPE
>> +    enum domain_type type;
>> +#endif
>>   } __aligned(PAGE_SIZE);
> 
> I'm not quite happy with all new fields getting put at the bottom, when
> better options may exist. If the enum was a packed one, it could go next
> to domain_id (where 16 bits of padding presently exist). The five *_pages
> fields also have a padding field following them (unless MEM_SHARING !=
> MEM_PAGING).

Just to be sure that I understand correctly what you meant:

enum __attribute__((packed)) domain_type {
     DOMAIN_32BIT,
     DOMAIN_64BIT,
};

struct domain
{
     domid_t          domain_id;

#ifdef CONFIG_HAS_DOMAIN_TYPE
     enum domain_type type;
#endif
  ....

It is what you suggested?

I thought that it make sense only for struct and unions to remove 
padding between members.

Maybe do you mean just declare type member as uint16_t or even uint8_t, 
place it after domain_id and and keep the enum as symbolic constants?

Thanks.

~ Oleksii


From xen-devel-bounces@lists.xenproject.org Tue Apr 21 11:55:31 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 21 Apr 2026 11:55:31 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1288927.1569155 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wF9hR-0000zw-9a; Tue, 21 Apr 2026 11:55:29 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1288927.1569155; Tue, 21 Apr 2026 11:55: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 1wF9hR-0000zp-6g; Tue, 21 Apr 2026 11:55:29 +0000
Received: by outflank-mailman (input) for mailman id 1288927;
 Tue, 21 Apr 2026 11:55:28 +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 1wF9hQ-0000zj-5O
 for xen-devel@lists.xenproject.org; Tue, 21 Apr 2026 11:55:28 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wF9hP-00EPbx-II
 for xen-devel@lists.xenproject.org; Tue, 21 Apr 2026 13:55:27 +0200
Received: from [10.42.69.2] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <Michal.Orzel@amd.com>)
 id 69e765aa-bab6-0a2a0a5309dd-0a2a4502e1ec-48
 for <xen-devel@lists.xenproject.org>; Tue, 21 Apr 2026 13:55:27 +0200
Received: from [52.101.201.44]
 (helo=PH7PR06CU001.outbound.protection.outlook.com)
 by tlsNG-720697.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.1)
 (envelope-from <Michal.Orzel@amd.com>)
 id 69e765ad-af86-0a2a45020019-3465c92c819a-3
 for <xen-devel@lists.xenproject.org>; Tue, 21 Apr 2026 13:55:26 +0200
Received: from SJ0PR13CA0113.namprd13.prod.outlook.com (2603:10b6:a03:2c5::28)
 by CH2PR12MB4136.namprd12.prod.outlook.com (2603:10b6:610:a4::14)
 with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9846.16; Tue, 21 Apr
 2026 11:55:21 +0000
Received: from CO1PEPF000075ED.namprd03.prod.outlook.com
 (2603:10b6:a03:2c5:cafe::3) by SJ0PR13CA0113.outlook.office365.com
 (2603:10b6:a03:2c5::28) with Microsoft SMTP Server (version=TLS1_3,
 cipher=TLS_AES_256_GCM_SHA384) id 15.20.9846.15 via Frontend Transport; Tue,
 21 Apr 2026 11:55:21 +0000
Received: from satlexmb07.amd.com (165.204.84.17) by
 CO1PEPF000075ED.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.20.9791.48 via Frontend Transport; Tue, 21 Apr 2026 11:55:21 +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.17; Tue, 21 Apr
 2026 06:55:20 -0500
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.17; Tue, 21 Apr
 2026 06:55:20 -0500
Received: from [10.252.147.171] (10.180.168.240) by satlexmb08.amd.com
 (10.181.42.217) with Microsoft SMTP Server id 15.2.2562.17 via Frontend
 Transport; Tue, 21 Apr 2026 06:55:18 -0500
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@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=b8HPzld+JtV6cPym+11U/veem2ccdaMt7ffVtekV7xFTxQXzFzwsYABjj3hmKgNwtyyWGDO6FXk+Gm6OJsm2FbACQEBQOu4F9Mdezuk7m4SBjsBsmdvcbRYRDfvNNbJZp3w8TfQg98hIUUSvT5oy/mhHiPsZIqoUFo0hX2twS9u04IF7RWwFuKohbl7V39zWfrG14zcBLXL5YObk8DbSIP4ACNTIUH8S95W0qf74sdyD9zEQbwCH16eWJVaITJQIb+KC33AXChSIR9Xo3AhedCz4QGr3CQGM64D+aysyNejFMV85LXquPGn9eHGZqDNIK7UCx0b+HmZRsUqqQo//pg==
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com;
 s=arcselector10001;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1;
 bh=tps6sBPh3bcNJWiwP/HKZ78/QClVFItbNQVw+grFdbo=;
 b=sYAehtareVuPV5dxgrg6riazFel3pORhcsn0nAw9Uile3D0zdcu6p5WADP7abF8aunP4uwnTyZAbkEJYV2TtAoBTXW5+fGh7RJtMamL95XrHBJrtInOTho9U9yELxQ5O1BbobfyJ/+H3rGQ8nNht/kt/775K4Mn8KADBi5DDkQq+TthXDqC/BpW1jduAPqCd/1BrvckpenzAvHcm1TXK45dWyurWSsM9SsWPdxpX9PxaA5/aa+QwXaufvpdq4fLbHEC2Yl7kWvREBuyy6hthcf1S7BLiX6ZyWbx06+W3eTUJUBJOjrwPUOvZifLwx9r+bmWOtBWpI2MstvM7tR5Wcw==
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=tps6sBPh3bcNJWiwP/HKZ78/QClVFItbNQVw+grFdbo=;
 b=fK1UrLSrlTaNoFAj0vix9JOkIg6ybdQc0EeVoWpxWuQStCJfkH97b3foJeYEhsDeWdYA2kKnvzpty3cioaXPhx917zmgQh5PzgqRbr7eTNGQ1XUW+GMbbFGrSjrQmMxs/7Vddl4kOtxRFsdqsQB/iNWhgAlVk0rUhJiS51wdyNM=
X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 165.204.84.17)
 smtp.mailfrom=amd.com; dkim=none (message not signed)
 header.d=none;dmarc=pass action=none header.from=amd.com;
Received-SPF: Pass (protection.outlook.com: domain of amd.com designates
 165.204.84.17 as permitted sender) receiver=protection.outlook.com;
 client-ip=165.204.84.17; helo=satlexmb07.amd.com; pr=C
Message-ID: <1eeb93a1-bb57-4ac8-a280-2b78b045fc2f@amd.com>
Date: Tue, 21 Apr 2026 13:55:18 +0200
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH v1 3/3] xen: introduce CONFIG_HAS_DOMAIN_TYPE
To: Oleksii Kurochko <oleksii.kurochko@gmail.com>,
	<xen-devel@lists.xenproject.org>
CC: Andrew Cooper <andrew.cooper3@citrix.com>, Anthony PERARD
	<anthony.perard@vates.tech>, 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>, Bertrand Marquis
	<bertrand.marquis@arm.com>, Volodymyr Babchuk <Volodymyr_Babchuk@epam.com>
References: <cover.1776340422.git.oleksii.kurochko@gmail.com>
 <e5ffcdecb0ca3c87b46965449601ff20116fecc0.1776340422.git.oleksii.kurochko@gmail.com>
 <c5003b0c-04e1-4081-b931-bfcb9ab1b739@amd.com>
 <aa51f23b-0e2f-4666-93ee-038430f661ab@gmail.com>
From: "Orzel, Michal" <michal.orzel@amd.com>
Content-Language: en-US
In-Reply-To: <aa51f23b-0e2f-4666-93ee-038430f661ab@gmail.com>
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: 7bit
X-EOPAttributedMessage: 0
X-MS-PublicTrafficType: Email
X-MS-TrafficTypeDiagnostic: CO1PEPF000075ED:EE_|CH2PR12MB4136:EE_
X-MS-Office365-Filtering-Correlation-Id: ae48f8c6-946d-42c2-8aad-08de9f9cdd89
X-MS-Exchange-SenderADCheck: 1
X-MS-Exchange-AntiSpam-Relay: 0
X-Microsoft-Antispam:
	BCL:0;ARA:13230040|82310400026|36860700016|7416014|1800799024|376014|18002099003|56012099003|22082099003;
X-Microsoft-Antispam-Message-Info:
	06vQnzg3Yqk3fZjbrg6r9wm0M69lhX32QP5i3HlgNsI+g0XT6duaVvHrsfgBdNQb9yaC4LISO0j6wQFECzS9HbTf8DUlMCFyi5NOlbWJiw7Zg4q/eAnPxCs5yKTg08Gd0VtLo6OctHlbZmWd6AAZJlq4aagxaN1G42fzSDb7gYv/0KqdtfmoiPiCjElRZhOWzTGloNjoYVrY7vABJjI+SGjO+ST0SdX7Y51xn4ag1dk1TlSenLOpw2kXH/rlt8nfLCNZwCbsS0FhTWzOykI7EXw86ID+UFVxnPmw1QDmP0Qh/7aRM/1Fuyppry0MVM8inoXb6KzrUlN68j0e5JwueAjht+Qfcah0Qj8rTOMo1GIgBqjhFHc6hp+67om98Ih7CBz1y4ZyFqtojacRRPTv5veEayEE8LrI2SLaaEdzZc9YPb2KG9KGMM/uDn8DZixKwcFN+VecuYxwSPVb4gkwb0zUTlqP2ZDy8R+mBWQc1xa1YYBbrAyh/0DGjVDrgdx065aTftSlb3pJrGbSvGfVxmXvsN4vfjLRpFYCo2V/jsSZxntXy/3lL9LrlV+tDPILlM9kK8NaY9JHYQXKZszfUjMDhlnnE+thkToZ/QWdUdOEgVOsPIlzNU1uuSLZB2Q7pC/DHeiBaZNffQD47exubOzkHfQplY0hHa2qta8+WIPFNki4VhTAPukG16/C9oG6fMRfb4npC1Y9rLcRfuKKb/KO+jEHrmwDf5tB0aYrwFB6heGOcbc9gojjyB6r6ureCZJhbTO9RysBqkVRYrAtBw==
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)(7416014)(1800799024)(376014)(18002099003)(56012099003)(22082099003);DIR:OUT;SFP:1101;
X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1
X-MS-Exchange-AntiSpam-MessageData-0:
	4uOe6sSZld2TuaaPpQhniUFETrGQ/7LyxQsreInOrEc6ODXGWFMyT41ZhVdNZkeYzVKCe0Wr1fmkEiSLZKwRVTnmV/KABT1n1FSp1Eb2N2wPnugoQXb8/e3i57A4/zTXT8H18C6kROclhZOn4HwsjqnNPSB4Wv7HuWxUboKMlloBMt9L3saRV/FcCtgbFbRRci/ns3v1/UQw4n4CoDYi1MBlp4YmxhP/qE5gqccYzPfQDXCcop4Tl68svmwHQQlc2Eu47VdlYPSRdXaJfVlhTVRWdLSymbE69F3Uvmanj8NjB9HYNIxmjfGSeohPKQbVxBAkOg32f7l9poT6xtstEsvpgJp+1Qin3YDu+sX3WdiHfMEtuqD8108sv8b+YJtmDzRjnPI38w/RLAPwoVyf1xJudMruL+/H/ZKrJqSNGkFhylPe+LyYUkPsoFCXgx/9
X-OriginatorOrg: amd.com
X-MS-Exchange-CrossTenant-OriginalArrivalTime: 21 Apr 2026 11:55:21.2332
 (UTC)
X-MS-Exchange-CrossTenant-Network-Message-Id: ae48f8c6-946d-42c2-8aad-08de9f9cdd89
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:
	CO1PEPF000075ED.namprd03.prod.outlook.com
X-MS-Exchange-CrossTenant-AuthAs: Anonymous
X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem
X-MS-Exchange-Transport-CrossTenantHeadersStamped: CH2PR12MB4136
X-purgate-ID: tlsNG-720697/1776772527-80979161-50E45FB4/0/0
X-purgate-type: clean
X-purgate-size: 973



On 21/04/2026 13:06, Oleksii Kurochko wrote:
> 
> 
> On 4/20/26 10:03 AM, Orzel, Michal wrote:
>>
>>
>> On 16/04/2026 16:21, Oleksii Kurochko wrote:
>>> As domain type is part of common code now there is no any reason
>>> to have architecture-specific set_domain_type() functions so
>>> it is dropped.
>>>
>>> The CONFIG_ARM_64 guard in xen/arch/arm/domain_build.c is intentionally
>>> left unchanged: it is ARM-specific code, and ARM_64 selects
>>> HAS_DOMAIN_TYPE, so the semantics are identical.
>>>
>>> x86 with CONFIG_64BIT=y shouldn't use is_{32,64}bit_domain() as
>>> x86 doesn't have support of CONFIG_HAS_DOMAIN_TYPE. For x86_32
>>> it is fine to follow generic is_{32,64}_bit_domain() implementations.
>> I thought x86_32 Xen no longer builds. This means the fallback is only for arm32.
> 
> Will you be okay with
>    Since x86_32 Xen no longer builds, the fallback is currently only 
> relevant for arm32.
Yes. I would.

~Michal



From xen-devel-bounces@lists.xenproject.org Tue Apr 21 12:41:51 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 21 Apr 2026 12:41:51 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1288948.1569167 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wFAQC-0000Vs-Mf; Tue, 21 Apr 2026 12:41:44 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1288948.1569167; Tue, 21 Apr 2026 12:41: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 1wFAQC-0000Vl-Jf; Tue, 21 Apr 2026 12:41:44 +0000
Received: by outflank-mailman (input) for mailman id 1288948;
 Tue, 21 Apr 2026 12:41:43 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <tamas@tklengyel.com>) id 1wFAQB-0000Vf-5c
 for xen-devel@lists.xenproject.org; Tue, 21 Apr 2026 12:41:43 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wFAQA-003noz-HJ
 for xen-devel@lists.xenproject.org; Tue, 21 Apr 2026 14:41:42 +0200
Received: from [10.42.69.9] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <tamas@tklengyel.com>)
 id 69e7707e-e002-0a2a0a5209dd-0a2a4509c27a-26
 for <xen-devel@lists.xenproject.org>; Tue, 21 Apr 2026 14:41:42 +0200
Received: from [136.143.188.12] (helo=sender4-op-o12.zoho.com)
 by tlsNG-bad1c0.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.1)
 (envelope-from <tamas@tklengyel.com>)
 id 69e77084-2497-0a2a45090019-888fbc0c4353-3
 for <xen-devel@lists.xenproject.org>; Tue, 21 Apr 2026 14:41:41 +0200
Received: by mx.zohomail.com with SMTPS id 1776775296437583.6720455353529;
 Tue, 21 Apr 2026 05:41:36 -0700 (PDT)
Received: by mail-oa1-f53.google.com with SMTP id
 586e51a60fabf-415e568a7ecso1732685fac.0
 for <xen-devel@lists.xenproject.org>; Tue, 21 Apr 2026 05:41: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=zmail header.d=tklengyel.com header.i="tamas@tklengyel.com" header.h="MIME-Version:References:In-Reply-To:From:Date:Message-ID:Subject:To:Cc:Content-Type"
ARC-Seal: i=1; a=rsa-sha256; t=1776775298; cv=none; 
	d=zohomail.com; s=zohoarc; 
	b=dCyPkP/THytrH7lXQA3DSh0pSS3eezlWEivjYAhLcqcRThpG2evEhq5XXU+NZdjIVlODw/mS60WjTWzNdrXOf06DOSfjPrgzwaIQdteSuCu8O6JXnP30Oj6h/UIlw4htCV3r1cht+5fi3EjfHvrQt7cqWbe09MfT97hy5we/KME=
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; 
	t=1776775298; h=Content-Type:Cc:Cc:Date:Date:From:From:In-Reply-To:MIME-Version:Message-ID:References:Subject:Subject:To:To:Message-Id:Reply-To; 
	bh=LlkMuZfQjLigKOcgc4RUDQi/iQqyZKZyTcPalzo85jo=; 
	b=CkQK138KOqwn+0BsJnsSN/zpDkAQZF1iN6ZoihXHhQW7t34+672qpDnCdFVFuGd1NXX01MwRjyB83Viuo2Pbs4MfSsZvW7VQ7dlJ8qkcfYw7bNEpwjo332QEAPcbIrdv0EA3HVWXl6WdBOHlttFegJk6blVp+b7p7GsUby6/U9Y=
ARC-Authentication-Results: i=1; mx.zohomail.com;
	dkim=pass  header.i=tklengyel.com;
	spf=pass  smtp.mailfrom=tamas@tklengyel.com;
	dmarc=pass header.from=<tamas@tklengyel.com>
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; t=1776775298;
	s=zmail; d=tklengyel.com; i=tamas@tklengyel.com;
	h=MIME-Version:References:In-Reply-To:From:From:Date:Date:Message-ID:Subject:Subject:To:To:Cc:Cc:Content-Type:Message-Id:Reply-To;
	bh=LlkMuZfQjLigKOcgc4RUDQi/iQqyZKZyTcPalzo85jo=;
	b=GE0IjCdshD/1hK6pNuDLfWERhwgR566rCDwiqChmcBLMc4y4HfGe9q/PqnKdcGRV
	A7g0OIxaG/v5T632idc1cR7GEuEAA71brWh1aZSne1lWA9cQA6Mu0sYR5AuXkualgej
	+L1Ff6/4mQR774l/tE4vINnuj5d7Zg7zKKq9WYDQ=
X-Gm-Message-State: AOJu0YzFqpZCvU/KlB/SYmpQOqrFkE1A0KGCU1z/boNoUaQNRYjno5yp
	SaM+0RjdCPHGvW2vASy9pE7cZC6fwiOtKzHJsMP88XCYVZ33QAn70PdiLk60dQWH68zlKpBTG6D
	g77Ozflla/pxBBP2NtDVdrrPRWFrQaTA=
X-Received: by 2002:a05:6871:384e:b0:42c:2464:4ec3 with SMTP id
 586e51a60fabf-42c2466f612mr1665283fac.38.1776775295584; Tue, 21 Apr 2026
 05:41:35 -0700 (PDT)
MIME-Version: 1.0
References: <20260420213206.208750-1-Rose.Spangler@elektrobit.com> <20260420213206.208750-9-Rose.Spangler@elektrobit.com>
In-Reply-To: <20260420213206.208750-9-Rose.Spangler@elektrobit.com>
From: Tamas K Lengyel <tamas@tklengyel.com>
Date: Tue, 21 Apr 2026 08:40:59 -0400
X-Gmail-Original-Message-ID: <CABfawh=trqX6Gx3udVpaYDiLRcG+99SHNmK4s9f5pjmNbCMM1A@mail.gmail.com>
X-Gm-Features: AQROBzDgFampPPP5f09O2e0AsTkKwKS-saSa1R-zl-sMd6o37GUCmh3nTwJbHo8
Message-ID: <CABfawh=trqX6Gx3udVpaYDiLRcG+99SHNmK4s9f5pjmNbCMM1A@mail.gmail.com>
Subject: Re: [RFC PATCH v6 08/43] altp2m: Rename p2m_*_altp2m functions and
 move declarations out of p2m.h
To: Rose Spangler <Rose.Spangler@elektrobit.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>, 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.pau@citrix.com>, 
	Teddy Astie <teddy.astie@vates.tech>
Content-Type: multipart/alternative; boundary="00000000000056d194064ff7bc21"
X-purgate-ID: tlsNG-bad1c0/1776775301-484A9A53-23B6948E/0/0
X-purgate-type: clean
X-purgate-size: 1078

--00000000000056d194064ff7bc21
Content-Type: text/plain; charset="UTF-8"

The following function names could reasonably drop the _altp2m suffix:


> - p2m_get_altp2m -> altp2m_get_altp2m
> - p2m_set_altp2m -> altp2m_set_altp2m
> - p2m_reset_altp2m -> altp2m_reset_altp2m
> - p2m_activate_altp2m -> altp2m_activate_altp2m


Tamas

--00000000000056d194064ff7bc21
Content-Type: text/html; charset="UTF-8"
Content-Transfer-Encoding: quoted-printable

<div dir=3D"ltr"><div class=3D"gmail_quote gmail_quote_container"><div><br>=
</div><div>The following function names could reasonably drop the _altp2m s=
uffix:</div><div>=C2=A0</div><blockquote class=3D"gmail_quote" style=3D"mar=
gin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1=
ex">
- p2m_get_altp2m -&gt; altp2m_get_altp2m<br>
- p2m_set_altp2m -&gt; altp2m_set_altp2m<br>
- p2m_reset_altp2m -&gt; altp2m_reset_altp2m<br>
- p2m_activate_altp2m -&gt; altp2m_activate_altp2m</blockquote><div><br></d=
iv><div>Tamas=C2=A0</div></div></div>

--00000000000056d194064ff7bc21--


From xen-devel-bounces@lists.xenproject.org Tue Apr 21 13:13:02 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 21 Apr 2026 13:13:02 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1288960.1569189 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wFAuK-0005id-39; Tue, 21 Apr 2026 13:12:52 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1288960.1569189; Tue, 21 Apr 2026 13: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 1wFAuJ-0005iW-Vm; Tue, 21 Apr 2026 13:12:51 +0000
Received: by outflank-mailman (input) for mailman id 1288960;
 Tue, 21 Apr 2026 13:12:50 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <jbeulich@suse.com>) id 1wFAuI-0005iP-MW
 for xen-devel@lists.xenproject.org; Tue, 21 Apr 2026 13:12:50 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wFAuG-003qkM-Od
 for xen-devel@lists.xenproject.org; Tue, 21 Apr 2026 15:12:48 +0200
Received: from [10.42.69.9] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <jbeulich@suse.com>)
 id 69e777c7-2eae-0a2a0a5409dd-0a2a4509a164-14
 for <xen-devel@lists.xenproject.org>; Tue, 21 Apr 2026 15:12:48 +0200
Received: from [209.85.221.54] (helo=mail-wr1-f54.google.com)
 by tlsNG-bad1c0.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.1)
 (envelope-from <jbeulich@suse.com>)
 id 69e777d0-2497-0a2a45090019-d155dd36bc1d-3
 for <xen-devel@lists.xenproject.org>; Tue, 21 Apr 2026 15:12:48 +0200
Received: by mail-wr1-f54.google.com with SMTP id
 ffacd0b85a97d-43d7e23defbso2741571f8f.0
 for <xen-devel@lists.xenproject.org>; Tue, 21 Apr 2026 06:12:48 -0700 (PDT)
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-43fe4e3a18csm42361798f8f.20.2026.04.21.06.12.47
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Tue, 21 Apr 2026 06:12:47 -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=google header.d=suse.com header.i="@suse.com" header.h="Content-Transfer-Encoding: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=1776777168; x=1777381968; darn=lists.xenproject.org;
        h=content-transfer-encoding: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;
        bh=XBEaOXB90p+Nyqc8OrsnYrTPK6OTDL0dszBzT2+YWEo=;
        b=PvhU9gT35uJPMMHeYZ2neMAiZ35PnX7CfTpO0vnHmZ820xlTRqqgcCYHFYolFFgrtR
         TV4NCRJvBByt1IbD3MqPwDyj4fuscjtjlLtNDSwfqj3xyEuGaYgJLh8g6H6//i5dwvLY
         HjwY+loJHhDCpvvJsjWGdNNEvJERncCesGm8095o598H9rzuKqiEJF2XeX5ibuK7KSnU
         ho1n8kjpJOjJ41DJ2REfvPN2HoWwiMzDYiwJLyXZWKyAEVD4fjitgT8BmEeF0I0ycpqj
         WCe4Q5sRfEWtQ5xYm5KyR5lp1mX5I3WKxCHfqlTVMZ5dkny1X30kqlH61bfkj3sNaR6k
         wv/Q==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20251104; t=1776777168; x=1777381968;
        h=content-transfer-encoding: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;
        bh=XBEaOXB90p+Nyqc8OrsnYrTPK6OTDL0dszBzT2+YWEo=;
        b=QNgxNQtq1dM1F+N5KXrTcFm4iUlsdpxRdsdVPifqpaz8yAQ6oy02WvheY93FOym0Hv
         j02JWZMUwV4K81KQNVyIQqq3uo0/hHqmO/bQofA5d5GkgCvu5k1txqUxOsALat/xndyv
         T1V+8xixGDhTMPNG27lovbl2IHrt4dyxzkP+j2558mAoMcPUXAZn4b4RZxZNNpRG0FmI
         eRXcD3LPS1h2mckKhkWTQMkj8T+1fwVshx5aJ8UdVG9vulCNo9a+TWifjMNR2bjIvsPS
         9Q408saDbip0R6G4VBnKGaXpun7d/zcI96zorpBImd/QmdT+Qpq0aTUItyCG+qI/F2QB
         Jztg==
X-Forwarded-Encrypted: i=1; AFNElJ/5bqMO/SZi/FLPB67nZNmScXqngyDYyOZKHwgkLqpgJ9flODFvRo2sgetXMZ4/GMebDWNuF6RjwUY=@lists.xenproject.org
X-Gm-Message-State: AOJu0YwI6wUC9d/gJBg4HfybUSZOAt+2uR253VilzD+s3UT7q3A+OVXk
	8wJdsiztaz13BgULapOeYdBXDvLs/VIWToCs6KbKf0/htn6yHnArZXcSIcMvjR2bZA==
X-Gm-Gg: AeBDieuVOXS6vLdZ9HuHSOywjcLxHJu4k5xCDVBNDT4H2T4aqIAx7gyKpDbR6YxWyC8
	Vf3BK3Zr0vCAORzJwgob7Fm/LMSz7j8z3T2HOdRq6lQRsZPsTOhKK3Sg+Ji2hJxxjKDG6Ea0B04
	vV8ZPK1TZKb++45Aeiz4+AHgEZ5ItgVJNF6lWbgt65t80z0kbPXOR3KH92n4BDlCADzF7RoeLZu
	moheM0KyIcr+y1TLUlan57IsQz0TP35K60xnCtdyiW8GBYoFpiaSQO/n8WHKf2PpAKT6AP7YDkV
	+55/TrwktygBR/ZK68SVGP+TrymUGWpjxqcAAptYIeQy3z4ijz+vM8x/AjOje/yqUzHvPCv4Dj+
	8kxWGxb0xB/Jxsf1QjpaDVhHWDiti0bOgVlXzzhhbHF+/v5uF3lIf3b0QlpLw13EHfAlXYD72xs
	jKWDzG3F0Zcz59h5pUqDe7cThO86F/6iUZE28DL5sQ5Z8ZRFd0a4xHB849fw5qtYrYqjhLkq7h3
	i/Ry39Nwtk0kZZi9y/VN5WZCg==
X-Received: by 2002:a05:6000:144d:b0:43d:60e:6aff with SMTP id ffacd0b85a97d-43fe3dc63ebmr26754410f8f.15.1776777167957;
        Tue, 21 Apr 2026 06:12:47 -0700 (PDT)
Message-ID: <807ef6ce-5115-402f-81f9-26674ad5dfe0@suse.com>
Date: Tue, 21 Apr 2026 15:12:46 +0200
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH v1 3/3] xen: introduce CONFIG_HAS_DOMAIN_TYPE
To: Oleksii Kurochko <oleksii.kurochko@gmail.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.pau@citrix.com>,
 Stefano Stabellini <sstabellini@kernel.org>,
 Bertrand Marquis <bertrand.marquis@arm.com>,
 Volodymyr Babchuk <Volodymyr_Babchuk@epam.com>,
 xen-devel@lists.xenproject.org
References: <cover.1776340422.git.oleksii.kurochko@gmail.com>
 <e5ffcdecb0ca3c87b46965449601ff20116fecc0.1776340422.git.oleksii.kurochko@gmail.com>
 <f5c7006d-a6ed-4c92-962b-d5f4b27a5c6d@suse.com>
 <62fe5597-4230-48d1-8b3d-35715fc824c8@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: <62fe5597-4230-48d1-8b3d-35715fc824c8@gmail.com>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 7bit
X-purgate-ID: tlsNG-bad1c0/1776777168-93374A53-164CFC87/0/0
X-purgate-type: clean
X-purgate-size: 3182

On 21.04.2026 13:53, Oleksii Kurochko wrote:
> On 4/20/26 10:22 AM, Jan Beulich wrote:
>> On 16.04.2026 16:21, Oleksii Kurochko wrote:
>>> --- a/xen/arch/Kconfig
>>> +++ b/xen/arch/Kconfig
>>> @@ -1,6 +1,9 @@
>>>   config 64BIT
>>>   	bool
>>>   
>>> +config HAS_DOMAIN_TYPE
>>> +	bool
>>> +
>>>   config PHYS_ADDR_T_32
>>>   	bool
>>
>> Why here rather than where the bulk of the other HAS_* are?
> 
> Because it is a little arch-specific now as not all arch-s support it.

Most HAS_* are there to deal with per-arch differences.

> I can move it to xen/common/Kconfig.

Please do.

>>> --- a/xen/arch/arm/domain_build.c
>>> +++ b/xen/arch/arm/domain_build.c
>>> @@ -1178,7 +1178,7 @@ int __init make_cpus_node(const struct domain *d, struct kernel_info *kinfo)
>>>       /* Keep the compiler happy with -Og */
>>>       bool clock_valid = false;
>>>       uint64_t mpidr_aff;
>>> -    void *fdt = kinfo;
>>> +    void *fdt = kinfo->fdt;
>>>   
>>>       dt_dprintk("Create cpus node\n");
>>>   
>>> @@ -1774,13 +1774,13 @@ int __init construct_domain(struct domain *d, struct kernel_info *kinfo)
>>>   
>>>   #ifdef CONFIG_ARM_64
>>>       /* if aarch32 mode is not supported at EL1 do not allow 32-bit domain */
>>> -    if ( !(cpu_has_el1_32) && kinfo->arch.type == DOMAIN_32BIT )
>>> +    if ( !(cpu_has_el1_32) && kinfo->type == DOMAIN_32BIT )
>>
>> I'm not an Arm maintainer; if I was, I'd ask for the stray parentheses to be
>> dropped on this occasion.
> 
> They could be dropped. Should be then it mentioned in commit message?

For something this small I wouldn't insist. But recall that I'm not the one
to ack this part of the change.

>>> --- a/xen/include/xen/sched.h
>>> +++ b/xen/include/xen/sched.h
>>> @@ -668,6 +668,10 @@ struct domain
>>>       struct page_info *pending_scrub;
>>>       unsigned int pending_scrub_order;
>>>       unsigned int pending_scrub_index;
>>> +
>>> +#ifdef CONFIG_HAS_DOMAIN_TYPE
>>> +    enum domain_type type;
>>> +#endif
>>>   } __aligned(PAGE_SIZE);
>>
>> I'm not quite happy with all new fields getting put at the bottom, when
>> better options may exist. If the enum was a packed one, it could go next
>> to domain_id (where 16 bits of padding presently exist). The five *_pages
>> fields also have a padding field following them (unless MEM_SHARING !=
>> MEM_PAGING).
> 
> Just to be sure that I understand correctly what you meant:
> 
> enum __attribute__((packed)) domain_type {
>      DOMAIN_32BIT,
>      DOMAIN_64BIT,
> };
> 
> struct domain
> {
>      domid_t          domain_id;
> 
> #ifdef CONFIG_HAS_DOMAIN_TYPE
>      enum domain_type type;
> #endif
>   ....
> 
> It is what you suggested?

Yes, just without open-coding of __packed.

> I thought that it make sense only for struct and unions to remove 
> padding between members.

That's the attribute's effect on struct / union, yes. The effect is
different for enum.

> Maybe do you mean just declare type member as uint16_t or even uint8_t, 
> place it after domain_id and and keep the enum as symbolic constants?

Preferably use the real type for the field.

Jan


From xen-devel-bounces@lists.xenproject.org Tue Apr 21 13:26:10 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 21 Apr 2026 13:26:10 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1288969.1569198 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wFB77-0007jG-5C; Tue, 21 Apr 2026 13:26:05 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1288969.1569198; Tue, 21 Apr 2026 13:26: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 1wFB77-0007j9-2G; Tue, 21 Apr 2026 13:26:05 +0000
Received: by outflank-mailman (input) for mailman id 1288969;
 Tue, 21 Apr 2026 13:26:03 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <Luca.Fancellu@arm.com>) id 1wFB75-0007j3-F5
 for xen-devel@lists.xenproject.org; Tue, 21 Apr 2026 13:26:03 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wFB74-00ElK0-Ih
 for xen-devel@lists.xenproject.org; Tue, 21 Apr 2026 15:26:02 +0200
Received: from [10.42.69.3] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <Luca.Fancellu@arm.com>)
 id 69e77ae4-e002-0a2a0a5209dd-0a2a4503c1c2-14
 for <xen-devel@lists.xenproject.org>; Tue, 21 Apr 2026 15:26:01 +0200
Received: from [52.101.70.69]
 (helo=AS8PR04CU009.outbound.protection.outlook.com)
 by tlsNG-33051d.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.1)
 (envelope-from <Luca.Fancellu@arm.com>)
 id 69e77ae9-672d-0a2a45030019-34654645c859-3
 for <xen-devel@lists.xenproject.org>; Tue, 21 Apr 2026 15:26:01 +0200
Received: from AM6PR0202CA0072.eurprd02.prod.outlook.com
 (2603:10a6:20b:3a::49) by PA6PR08MB11262.eurprd08.prod.outlook.com
 (2603:10a6:102:513::8) with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9818.33; Tue, 21 Apr
 2026 13:25:57 +0000
Received: from AMS1EPF00000049.eurprd04.prod.outlook.com
 (2603:10a6:20b:3a:cafe::c8) by AM6PR0202CA0072.outlook.office365.com
 (2603:10a6:20b:3a::49) with Microsoft SMTP Server (version=TLS1_3,
 cipher=TLS_AES_256_GCM_SHA384) id 15.20.9791.48 via Frontend Transport; Tue,
 21 Apr 2026 13:25:57 +0000
Received: from outbound-uk1.az.dlp.m.darktrace.com (4.158.2.129) by
 AMS1EPF00000049.mail.protection.outlook.com (10.167.16.133) with Microsoft
 SMTP Server (version=TLS1_3, cipher=TLS_AES_256_GCM_SHA384) id 15.20.9791.48
 via Frontend Transport; Tue, 21 Apr 2026 13:25:57 +0000
Received: from DU2PR08MB7272.eurprd08.prod.outlook.com (2603:10a6:10:2d7::16)
 by PA4PR08MB6063.eurprd08.prod.outlook.com (2603:10a6:102:ed::16)
 with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9846.16; Tue, 21 Apr
 2026 13:24:53 +0000
Received: from DU2PR08MB7272.eurprd08.prod.outlook.com
 ([fe80::5d34:206f:373:a323]) by DU2PR08MB7272.eurprd08.prod.outlook.com
 ([fe80::5d34:206f:373:a323%6]) with mapi id 15.20.9818.032; Tue, 21 Apr 2026
 13:24: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=arm.com header.i="@arm.com" header.h="From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck"; dkim=pass header.s=selector1 header.d=arm.com header.i="@arm.com" header.h="From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck"
ARC-Seal: i=2; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=pass;
 b=f+y16iM0ACWtrCyXZzPCMKEyCRil39/bSx/xZ9mpsLLqtnewfTggq2YIfIbaxzAnOVMTiTvOPzUyIPNe81X5rGfn01LneNKiJtxbJQC8z66gtU8A0e2OaxSdATjQxmPk2a5RiwO6np3MRHrTG169DNEe9HGIQZalG/ZnMLe9ZDdaRt43SM/FYm7rJ9WK/xlCj6XDtGYUzjK2k+E+Rjb9Ldp53CY8nxuolXA0YsWr7OzUuxJamrK+ZjqTEVsYZxRWp/QBUaMPOOs+NdT1zewPt5Pbi7clWlVXpGQfiYyJY+ym7Yt7F12p4lx+XI9OZPg7KLnh+WG6ToSDjEvNcNKbzA==
ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com;
 s=arcselector10001;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1;
 bh=CpGVs+CZAb05IuNP22MMkQS8t0793vH3LX8eKdVjC9g=;
 b=s0sIBJBH8esbafd+IbijHmMcPxdY8ZVbOm48O8Lk6f5lCcOAY8c3GpkVKD5TDY6Y+Kll8LhQM0qIqKr5th/ipLf0g0VIg66hTGCDcv3rxJZumwRX8PiN6q/OtkA21qyoJEJ2X6sSLgTUpoAcXE9R/HCx3xpfbT0y0kfCpSrDN30c6fwdVzNSiKm5CuWvCUNwhJ3EHP7MyOnHEXeBkLfflTiIyY0aWYvBqCB9tAwF/6x2k7LQ95ccgtGVJHt9U8wWY+O6KzOK5vSrRszkUmVynF2XBl6SFE7vnlMwROvLWXEh9LRyuE4LGzgB2xxz+3aFDMtTYQk38sKVj2hvRLaB2A==
ARC-Authentication-Results: i=2; mx.microsoft.com 1; spf=pass (sender ip is
 4.158.2.129) smtp.rcpttodomain=gmail.com smtp.mailfrom=arm.com; dmarc=pass
 (p=none sp=none pct=100) action=none header.from=arm.com; dkim=pass
 (signature was verified) header.d=arm.com; arc=pass (0 oda=1 ltdi=1
 spf=[1,1,smtp.mailfrom=arm.com] dkim=[1,1,header.d=arm.com]
 dmarc=[1,1,header.from=arm.com])
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=arm.com; s=selector1;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck;
 bh=CpGVs+CZAb05IuNP22MMkQS8t0793vH3LX8eKdVjC9g=;
 b=FNcM3LOPVt2G3S6YaJxhw7SKDrPVpfgHkgT9t7oFBfXGUFXcFqiJUV1091Ym9NWVE4cu0uSHtRpL4UAm3gkwwTwkt9rBRJzW3gEBBCaLSdW3l3G9HY+0Ose/Gu1LRozcqNrtgROJo/YGOnoLS1HD4l+Sk0Rrc7koka+k451gWGk=
X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 4.158.2.129)
 smtp.mailfrom=arm.com; dkim=pass (signature was verified)
 header.d=arm.com;dmarc=pass action=none header.from=arm.com;
Received-SPF: Pass (protection.outlook.com: domain of arm.com designates
 4.158.2.129 as permitted sender) receiver=protection.outlook.com;
 client-ip=4.158.2.129; helo=outbound-uk1.az.dlp.m.darktrace.com; pr=C
ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none;
 b=T0iwkWHIY6U9i2r8j118hbKqPzY5S+GifMcR8TgiGv/VpnhkeWDCG3a/POxbxuGl2wJFhi0WSkGlYnkODlcuYizPHfbYCT9cYapCBuaN0EiVmxpBTAodN3e7Sl0PKE2V5EqhMiTta5A0wU/v6m759QmFgjlP0OaiyY6rYoqn3iKI5sTjkFG+IZVDFphGkxE3/P2fBkAB88dDOEprEMOSm91Jk0DRWEGY0JXCol6tBQWRmezQeh41UxLHZ9mB2X30ahUaJK1X5ZodmmyRtOTOeG5wcHc1Mvl1UblgKV23E/HdI3A++/tjsYnVM+FSg0PY/COlzt01VjkjL8QGtDa85Q==
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com;
 s=arcselector10001;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1;
 bh=CpGVs+CZAb05IuNP22MMkQS8t0793vH3LX8eKdVjC9g=;
 b=XKwz5rvHXuhvji5WRIZNo/1OW6R37+oc7zoiaO696WOvho3gTNMYdUDbJUiDwJVoY+DCEMCmO6zpn7i5b8tzy8BYYNNfs9lXRyF80jXAbmZC7excswRVRdivb1gXrUTPAwLAY8IDf0BeXXVSEhqWpUIMtHlcq1P4DPEv6iGpVODZgMFWnvVuTj+hO93sHrjXfs2zHW/SLZ7XGT4E0QTSdI4AZZhnSS4TWGquTlP/fRtVPUqzs8nobGU0aIZV539RYoSuClCUAMi9CD5W8L6ykz5Eo5FHxM0eBR/s03NvKuL3rIHmt7VMN6Kb+74TGjZYCu958xjcu8GebVghW2lQqA==
ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass
 smtp.mailfrom=arm.com; dmarc=pass action=none header.from=arm.com; dkim=pass
 header.d=arm.com; arc=none
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=arm.com; s=selector1;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck;
 bh=CpGVs+CZAb05IuNP22MMkQS8t0793vH3LX8eKdVjC9g=;
 b=FNcM3LOPVt2G3S6YaJxhw7SKDrPVpfgHkgT9t7oFBfXGUFXcFqiJUV1091Ym9NWVE4cu0uSHtRpL4UAm3gkwwTwkt9rBRJzW3gEBBCaLSdW3l3G9HY+0Ose/Gu1LRozcqNrtgROJo/YGOnoLS1HD4l+Sk0Rrc7koka+k451gWGk=
From: Luca Fancellu <Luca.Fancellu@arm.com>
To: Mykola Kvach <xakep.amatop@gmail.com>
CC: "xen-devel@lists.xenproject.org" <xen-devel@lists.xenproject.org>, 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>
Subject: Re: [PATCH v8 02/13] xen/arm: gic-v2: Implement GIC suspend/resume
 functions
Thread-Topic: [PATCH v8 02/13] xen/arm: gic-v2: Implement GIC suspend/resume
 functions
Thread-Index: AQHc0ZI74iA20ItBV0OKtUp08vt6Qg==
Date: Tue, 21 Apr 2026 13:24:51 +0000
Message-ID: <EB3F884F-FCD6-4AE7-84FA-79ABF31EA88E@arm.com>
References: <cover.1775125380.git.mykola_kvach@epam.com>
 <5e1951e1c17037e020de9c0eecb5fba94edcd9dd.1775125380.git.mykola_kvach@epam.com>
In-Reply-To:
 <5e1951e1c17037e020de9c0eecb5fba94edcd9dd.1775125380.git.mykola_kvach@epam.com>
Accept-Language: en-GB, en-US
Content-Language: en-US
X-MS-Has-Attach:
X-MS-TNEF-Correlator:
x-mailer: Apple Mail (2.3826.700.81.1.6)
Authentication-Results-Original: dkim=none (message not signed)
 header.d=none;dmarc=none action=none header.from=arm.com;
x-ms-traffictypediagnostic:
	DU2PR08MB7272:EE_|PA4PR08MB6063:EE_|AMS1EPF00000049:EE_|PA6PR08MB11262:EE_
X-MS-Office365-Filtering-Correlation-Id: 723b41c2-c55b-4944-12f7-08de9fa98586
x-checkrecipientrouted: true
nodisclaimer: true
X-MS-Exchange-SenderADCheck: 1
X-MS-Exchange-AntiSpam-Relay: 0
X-Microsoft-Antispam-Untrusted:
 BCL:0;ARA:13230040|366016|1800799024|376014|18002099003|56012099003|22082099003|38070700021;
X-Microsoft-Antispam-Message-Info-Original:
 ZGfHfguCmyULddfm8Y+wL+3T2jC6VMJustPSYMezCPkDDBfuSgxLefjBXy8Yjbqbv2PfxSk835/D+RD1uzXysdfYuRqovUSLBVWAbdQ2GRFvKzqbpZG5khurC+I/FrIHBDo0JUuvceIiDnG0N/6qxcru0/wZ0CoSVVZoeQjDLCicsIsWbJUB/ITWkkTyui4e2OHpbMjrFhmIHqZirlY8CgeMds1Fc1bl933Yffns28tb4G2InvbYvoKX8POmgZ8fip33xgFRn1l3cBq2Jzj85C8xa64rfHTMS1TKV58tBDMjoFjkK+5a6QTtRdirH9L4GZI0XuFggmbliWvH+jr/f7bAUGhUPTBTrRKcv/wjfz6hngk7S6kdppXW4SHGb390f3ADd5KptwGk9I0yyey7jqXQPiM6iM+Jec3K7hcRGpiJrntanOPebFZSO8inoQTBiLlat107uqm/qRAnkjNVEil/gu4/XM13JyQEv/X7C7lzVboJZi6GqoWg47ry4M6F2BlLlQ7bFH5KAIHPtIfcoe7d4nROMRQNfuirbVZp3Cb5ApKb+waF0B0XL3A41GI5uJbR64Yi6hY+1RX2dqapEeTvQt3Zy+/05VTT4iHRii8bYr1DJ+52umjrEi3gp1Lb8hT1ju04NuXVW0h+1LFqndQBvMkHkalNxndhd+b6jrMPgICsJkLs+9eCBua9fd0PlUHXFdkBddf7968GkX57FDOff6FgUpNq586wjo4SW38xKhBcGZ0HBAHIZteceHaQxY33AcAWCWKegRGR1OcNOij9FdQ7WOY9ANvuGX9m1SQ=
X-Forefront-Antispam-Report-Untrusted:
 CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:DU2PR08MB7272.eurprd08.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(366016)(1800799024)(376014)(18002099003)(56012099003)(22082099003)(38070700021);DIR:OUT;SFP:1101;
Content-Type: text/plain; charset="utf-8"
Content-ID: <2A6C4C87A06B4C4AA07F70BCAE311DA5@eurprd08.prod.outlook.com>
Content-Transfer-Encoding: base64
MIME-Version: 1.0
X-Exchange-RoutingPolicyChecked:
 YkHvva8MGuks601OSjWKwOymXPn5OFwL6J2q4WXNBRdiT4c9TV4xtglC9UVvriOKyOhQGXQemn3QA68g8dj4V1QPbOu2HzSCoc/S1Z/eoWJuwjR6RzbPeS2CCAB0SIWDEzBC9mM1IeAYk648XVG6iKAFNHxWi2LF65kwx0UyQNcq0qgh1PvpoidVggRFnrrlyst3p0D93YMEKIy3MZVFATY8qLfyjnGe6Z5VBWAXK5NKokFed6wyhfbAShqevG6TPIfhSKfh/EKoHha6NZgR2l05FWvkqTUgsX4SPBpw57opXqaB+8/0Vzv9kluwMtt5gaZhgLMYtfyVRnSICQ9azw==
X-MS-Exchange-Transport-CrossTenantHeadersStamped: PA4PR08MB6063
X-EOPAttributedMessage: 0
X-MS-Exchange-Transport-CrossTenantHeadersStripped:
 AMS1EPF00000049.eurprd04.prod.outlook.com
X-MS-PublicTrafficType: Email
X-MS-Office365-Filtering-Correlation-Id-Prvs:
	726819cf-8871-4039-a588-08de9fa95e82
X-Microsoft-Antispam:
	BCL:0;ARA:13230040|36860700016|376014|1800799024|14060799003|82310400026|35042699022|13003099007|18002099003|56012099003|22082099003;
X-Microsoft-Antispam-Message-Info:
	y8FjttOZluJWmzfbb37C0zCk38XhLTVKyXy48fcUx8tcaDYwzx8jGvxSXJN9XZzl0HGcKfRg3w5WYHocAEXl0sqm8jtu6NNI+QZBhzORP73JVoKsCgPugbFagbC5MOW3Pw4qUgjKsCzMxh0zwPt3zAS3cXqmPh8soutHr+bBwtVdJ+j4maiExRGTWhhRb8AdxjztywL1a/G2cmfVA6y2fNyOsyX7UnBWShgU5O1IiBwyw4V9IPDtt8exBeFwDeUNytauSv1fPNF09OVB7wrkJgNVZt+BGX6SmiDkm8lBhtjWQbEfSTsjiMgnIhcX1/DFUIy7Hxgq75NdhLIoVW8zGipwBtCn7/A6o8hbXI+wbqZEhI+D5d5ZWlG3VNEjNNoXZsn3UHhI0zeUJB7BYNigjFCB19rS81acZXRrtjijLwAREwOjTFmzCckpDhXwru3/auVmGkWN039pDzQUYA6nvApQMR0+tzxu4bjZ519lU4z4H9v+wxKuuvGNVTzsjYMbhXFrIAu76+Qpsln5ayw85zn6HOBdN70ooU+gUZpOLTpIM2Gl/R8dGnFajbKlElDRUbAA5mSfWwVSCqElb6x7DotPWvpI+ZLN2mRum2MVF5HaibkAefXaOAxBS72aqbb0JxnuMdWYv4kF35Iqxc0niYLshCzrKC2w16SbGlXuIwjH4eCdFohIovhb2u3oF2Xv35i7T3bSrqKV9qEeAsHRmFR7p3Cg4jXwjUgXDeTZq+NskayJGQfKaxSjJea0bsOy5EC5wBhMoNOQ+ZVBTsKWRQ==
X-Forefront-Antispam-Report:
	CIP:4.158.2.129;CTRY:GB;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:outbound-uk1.az.dlp.m.darktrace.com;PTR:InfoDomainNonexistent;CAT:NONE;SFS:(13230040)(36860700016)(376014)(1800799024)(14060799003)(82310400026)(35042699022)(13003099007)(18002099003)(56012099003)(22082099003);DIR:OUT;SFP:1101;
X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1
X-MS-Exchange-AntiSpam-MessageData-0:
	jrZpoOdsrIjkjWlEHU7UoXQF9ZWmGXj8RMzPEdPREAxFMq4VcF3z970Ojb/wrcbZauqFvSKpkD7Em4d49MEdZAd7kriHYL+Zk8qwRGgRKQ981GJKfG3cPT3fo8l/eS8eSYZpURXFuojVxgStAg8bFTyTOD9+TjqtZPyb9DSI9ibOrkdoq85MkvJBnGWqFnUTJ4sf4RRDKroh31ccaryVebBdqFbhExqEwWOqYgnEBurBZT3q4zLUuY8jgz1t365wtoN6cWBspp3YuHwJDEQiURvnlXZSOOQE0NcJN64Emc/qYVG616pOS4ybmu5YOyOCBURcQAP/omfVhNSZpmADTN3VlN+nPxbYL584FlamvyTRGPY1Y6+J7t0HDtIwKRkuCltbE5Nc1F99KIaHXk526kuEWyvM7bsghwi3O5ri3Nv5t+/buYMemjlENZW/r0MF
X-OriginatorOrg: arm.com
X-MS-Exchange-CrossTenant-OriginalArrivalTime: 21 Apr 2026 13:25:57.0642
 (UTC)
X-MS-Exchange-CrossTenant-Network-Message-Id: 723b41c2-c55b-4944-12f7-08de9fa98586
X-MS-Exchange-CrossTenant-Id: f34e5979-57d9-4aaa-ad4d-b122a662184d
X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=f34e5979-57d9-4aaa-ad4d-b122a662184d;Ip=[4.158.2.129];Helo=[outbound-uk1.az.dlp.m.darktrace.com]
X-MS-Exchange-CrossTenant-AuthSource:
	AMS1EPF00000049.eurprd04.prod.outlook.com
X-MS-Exchange-CrossTenant-AuthAs: Anonymous
X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem
X-MS-Exchange-Transport-CrossTenantHeadersStamped: PA6PR08MB11262
X-purgate-ID: tlsNG-33051d/1776777961-2A179938-0A1E4A87/0/0
X-purgate-type: clean
X-purgate-size: 6602

SGkgTXlrb2xhLA0KDQo+IA0KPiBkaWZmIC0tZ2l0IGEveGVuL2FyY2gvYXJtL2dpYy12Mi5jIGIv
eGVuL2FyY2gvYXJtL2dpYy12Mi5jDQo+IGluZGV4IGIyM2U3MmEzZDAuLmRiZmY0NzA5NjIgMTAw
NjQ0DQo+IC0tLSBhL3hlbi9hcmNoL2FybS9naWMtdjIuYw0KPiArKysgYi94ZW4vYXJjaC9hcm0v
Z2ljLXYyLmMNCj4gQEAgLTEwOTgsNiArMTA5OCwxMjkgQEAgc3RhdGljIGludCBnaWN2Ml9pb21l
bV9kZW55X2FjY2VzcyhzdHJ1Y3QgZG9tYWluICpkKQ0KPiAgICAgcmV0dXJuIGlvbWVtX2Rlbnlf
YWNjZXNzKGQsIG1mbiwgbWZuICsgbnIpOw0KPiB9DQo+IA0KPiArI2lmZGVmIENPTkZJR19TWVNU
RU1fU1VTUEVORA0KPiArDQo+ICsvKiBUaGlzIHN0cnVjdCByZXByZXNlbnRzIGJsb2NrIG9mIDMy
IElSUXMgKi8NCj4gK3N0cnVjdCBpcnFfYmxvY2sgew0KPiArICAgIHVpbnQzMl90IGljZmdyWzJd
OyAvKiAyIHJlZ2lzdGVycyBvZiAxNiBJUlFzIGVhY2ggKi8NCj4gKyAgICB1aW50MzJfdCBpcHJp
b3JpdHlyWzhdOw0KPiArICAgIHVpbnQzMl90IGlzZW5hYmxlcjsNCj4gKyAgICB1aW50MzJfdCBp
c2FjdGl2ZXI7DQo+ICsgICAgdWludDMyX3QgaXRhcmdldHNyWzhdOw0KPiArfTsNCj4gKw0KPiAr
LyogR0lDdjIgcmVnaXN0ZXJzIHRvIGJlIHNhdmVkL3Jlc3RvcmVkIG9uIHN5c3RlbSBzdXNwZW5k
L3Jlc3VtZSAqLw0KPiArc3RydWN0IGdpY3YyX2NvbnRleHQgew0KPiArICAgIC8qIEdJQ0MgY29u
dGV4dCAqLw0KPiArICAgIHN0cnVjdCBjcHVfY3R4IHsNCj4gKyAgICAgICAgdWludDMyX3QgY3Rs
cjsNCj4gKyAgICAgICAgdWludDMyX3QgcG1yOw0KPiArICAgICAgICB1aW50MzJfdCBicHI7DQo+
ICsgICAgfSBjcHU7DQo+ICsNCj4gKyAgICAvKiBHSUNEIGNvbnRleHQgKi8NCj4gKyAgICBzdHJ1
Y3QgZGlzdF9jdHggew0KPiArICAgICAgICB1aW50MzJfdCBjdGxyOw0KPiArICAgICAgICAvKiBJ
bmNsdWRlcyBiYW5rZWQgU0dJL1BQSSBzdGF0ZSBmb3IgdGhlIGJvb3QgQ1BVLiAqLw0KPiArICAg
ICAgICBzdHJ1Y3QgaXJxX2Jsb2NrICppcnFzOw0KPiArICAgIH0gZGlzdDsNCj4gK307DQo+ICsN
Cj4gK3N0YXRpYyBzdHJ1Y3QgZ2ljdjJfY29udGV4dCBnaWNfY3R4Ow0KPiArDQo+ICtzdGF0aWMg
aW50IGdpY3YyX3N1c3BlbmQodm9pZCkNCj4gK3sNCj4gKyAgICB1bnNpZ25lZCBpbnQgaSwgYmxv
Y2tzID0gRElWX1JPVU5EX1VQKGdpY3YyX2luZm8ubnJfbGluZXMsIDMyKTsNCj4gKw0KPiArICAg
IC8qIFNhdmUgR0lDQ19DVExSIGNvbmZpZ3VyYXRpb24uICovDQo+ICsgICAgZ2ljX2N0eC5jcHUu
Y3RsciA9IHJlYWRsX2dpY2MoR0lDQ19DVExSKTsNCj4gKw0KPiArICAgIC8qIFF1aWVzY2UgdGhl
IEdJQyBDUFUgaW50ZXJmYWNlIGJlZm9yZSBzdXNwZW5kLiAqLw0KPiArICAgIGdpY3YyX2NwdV9k
aXNhYmxlKCk7DQo+ICsNCj4gKyAgICAvKiBTYXZlIEdJQ0QgY29uZmlndXJhdGlvbiAqLw0KPiAr
ICAgIGdpY19jdHguZGlzdC5jdGxyID0gcmVhZGxfZ2ljZChHSUNEX0NUTFIpOw0KPiArICAgIHdy
aXRlbF9naWNkKDAsIEdJQ0RfQ1RMUik7DQo+ICsNCj4gKyAgICBnaWNfY3R4LmNwdS5wbXIgPSBy
ZWFkbF9naWNjKEdJQ0NfUE1SKTsNCj4gKyAgICBnaWNfY3R4LmNwdS5icHIgPSByZWFkbF9naWNj
KEdJQ0NfQlBSKTsNCj4gKw0KPiArICAgIGZvciAoIGkgPSAwOyBpIDwgYmxvY2tzOyBpKysgKQ0K
PiArICAgIHsNCj4gKyAgICAgICAgc3RydWN0IGlycV9ibG9jayAqaXJxcyA9IGdpY19jdHguZGlz
dC5pcnFzICsgaTsNCj4gKyAgICAgICAgc2l6ZV90IGosIG9mZiA9IGkgKiBzaXplb2YoaXJxcy0+
aXNlbmFibGVyKTsNCj4gKw0KPiArICAgICAgICBpcnFzLT5pc2VuYWJsZXIgPSByZWFkbF9naWNk
KEdJQ0RfSVNFTkFCTEVSICsgb2ZmKTsNCj4gKyAgICAgICAgaXJxcy0+aXNhY3RpdmVyID0gcmVh
ZGxfZ2ljZChHSUNEX0lTQUNUSVZFUiArIG9mZik7DQo+ICsNCj4gKyAgICAgICAgb2ZmID0gaSAq
IHNpemVvZihpcnFzLT5pcHJpb3JpdHlyKTsNCj4gKyAgICAgICAgZm9yICggaiA9IDA7IGogPCBB
UlJBWV9TSVpFKGlycXMtPmlwcmlvcml0eXIpOyBqKysgKQ0KPiArICAgICAgICB7DQo+ICsgICAg
ICAgICAgICBpcnFzLT5pcHJpb3JpdHlyW2pdID0gcmVhZGxfZ2ljZChHSUNEX0lQUklPUklUWVIg
KyBvZmYgKyBqICogNCk7DQo+ICsgICAgICAgICAgICBpcnFzLT5pdGFyZ2V0c3Jbal0gPSByZWFk
bF9naWNkKEdJQ0RfSVRBUkdFVFNSICsgb2ZmICsgaiAqIDQpOw0KDQpyZWdhcmRpbmcgR0lDRF9J
VEFSR0VUU1IgLi4uDQoNCj4gKyAgICAgICAgfQ0KPiArDQo+ICsgICAgICAgIG9mZiA9IGkgKiBz
aXplb2YoaXJxcy0+aWNmZ3IpOw0KPiArICAgICAgICBmb3IgKCBqID0gMDsgaiA8IEFSUkFZX1NJ
WkUoaXJxcy0+aWNmZ3IpOyBqKysgKQ0KPiArICAgICAgICAgICAgaXJxcy0+aWNmZ3Jbal0gPSBy
ZWFkbF9naWNkKEdJQ0RfSUNGR1IgKyBvZmYgKyBqICogNCk7DQo+ICsgICAgfQ0KPiArDQo+ICsg
ICAgcmV0dXJuIDA7DQo+ICt9DQo+ICsNCj4gK3N0YXRpYyB2b2lkIGdpY3YyX3Jlc3VtZSh2b2lk
KQ0KPiArew0KPiArICAgIHVuc2lnbmVkIGludCBpLCBibG9ja3MgPSBESVZfUk9VTkRfVVAoZ2lj
djJfaW5mby5ucl9saW5lcywgMzIpOw0KPiArDQo+ICsgICAgZ2ljdjJfY3B1X2Rpc2FibGUoKTsN
Cj4gKyAgICAvKiBEaXNhYmxlIGRpc3RyaWJ1dG9yICovDQo+ICsgICAgd3JpdGVsX2dpY2QoMCwg
R0lDRF9DVExSKTsNCj4gKw0KPiArICAgIGZvciAoIGkgPSAwOyBpIDwgYmxvY2tzOyBpKysgKQ0K
PiArICAgIHsNCj4gKyAgICAgICAgc3RydWN0IGlycV9ibG9jayAqaXJxcyA9IGdpY19jdHguZGlz
dC5pcnFzICsgaTsNCj4gKyAgICAgICAgc2l6ZV90IGosIG9mZiA9IGkgKiBzaXplb2YoaXJxcy0+
aXNlbmFibGVyKTsNCj4gKw0KPiArICAgICAgICB3cml0ZWxfZ2ljZChHRU5NQVNLKDMxLCAwKSwg
R0lDRF9JQ0VOQUJMRVIgKyBvZmYpOw0KPiArICAgICAgICB3cml0ZWxfZ2ljZChpcnFzLT5pc2Vu
YWJsZXIsIEdJQ0RfSVNFTkFCTEVSICsgb2ZmKTsNCj4gKw0KPiArICAgICAgICB3cml0ZWxfZ2lj
ZChHRU5NQVNLKDMxLCAwKSwgR0lDRF9JQ0FDVElWRVIgKyBvZmYpOw0KPiArICAgICAgICB3cml0
ZWxfZ2ljZChpcnFzLT5pc2FjdGl2ZXIsIEdJQ0RfSVNBQ1RJVkVSICsgb2ZmKTsNCj4gKw0KPiAr
ICAgICAgICBvZmYgPSBpICogc2l6ZW9mKGlycXMtPmlwcmlvcml0eXIpOw0KPiArICAgICAgICBm
b3IgKCBqID0gMDsgaiA8IEFSUkFZX1NJWkUoaXJxcy0+aXByaW9yaXR5cik7IGorKyApDQo+ICsg
ICAgICAgIHsNCj4gKyAgICAgICAgICAgIHdyaXRlbF9naWNkKGlycXMtPmlwcmlvcml0eXJbal0s
IEdJQ0RfSVBSSU9SSVRZUiArIG9mZiArIGogKiA0KTsNCj4gKyAgICAgICAgICAgIHdyaXRlbF9n
aWNkKGlycXMtPml0YXJnZXRzcltqXSwgR0lDRF9JVEFSR0VUU1IgKyBvZmYgKyBqICogNCk7DQoN
CuKApiBwbGVhc2UgbGV0IG1lIGtub3cgaWYgSSByZWFkIGNvcnJlY3RseSB0aGlzIGxvb3AsIGJ1
dCBoZXJlIEdJQ0RfSVRBUkdFVFNSMCDigKYgNw0KYXJlIHJlc3RvcmVkIHdoZW4gaT0wLCBidXQg
dGhlIHNwZWNpZmljYWl0b25zIHNheXMgdGhhdCB0aGlzIGJsb2NrIGlzIHJlYWQgb25seSBvbg0K
bXVsdGlwcm9jZXNzb3IsIHNvIHdlIHNob3VsZCBza2lwIHRoZSByZXN0b3JlIHBhcnQuDQpBbHNv
IHNhdmluZyBpdCBjb3VsZCBiZSBza2lwcGVkIGJlY2F1c2UgZWFjaCBmaWVsZCByZXR1cm5zIGEg
dmFsdWUgdGhhdCBjb3JyZXNwb25kcw0Kb25seSB0byB0aGUgcHJvY2Vzc29yIHJlYWRpbmcgdGhl
IHJlZ2lzdGVyLg0KDQo0LjMuMTIgVXNlciBjb25zdHJhaW50cyBbMV0NCg0KPiArICAgICAgICB9
DQo+ICsNCj4gKyAgICAgICAgb2ZmID0gaSAqIHNpemVvZihpcnFzLT5pY2Zncik7DQo+ICsgICAg
ICAgIGZvciAoIGogPSAwOyBqIDwgQVJSQVlfU0laRShpcnFzLT5pY2Zncik7IGorKyApDQo+ICsg
ICAgICAgICAgICB3cml0ZWxfZ2ljZChpcnFzLT5pY2ZncltqXSwgR0lDRF9JQ0ZHUiArIG9mZiAr
IGogKiA0KTsNCj4gKyAgICB9DQo+ICsNCj4gKyAgICAvKiBNYWtlIHN1cmUgYWxsIHJlZ2lzdGVy
cyBhcmUgcmVzdG9yZWQgYW5kIGVuYWJsZSBkaXN0cmlidXRvciAqLw0KPiArICAgIHdyaXRlbF9n
aWNkKGdpY19jdHguZGlzdC5jdGxyLCBHSUNEX0NUTFIpOw0KPiArDQo+ICsgICAgLyogUmVzdG9y
ZSBHSUMgQ1BVIGludGVyZmFjZSBjb25maWd1cmF0aW9uICovDQo+ICsgICAgd3JpdGVsX2dpY2Mo
Z2ljX2N0eC5jcHUucG1yLCBHSUNDX1BNUik7DQo+ICsgICAgd3JpdGVsX2dpY2MoZ2ljX2N0eC5j
cHUuYnByLCBHSUNDX0JQUik7DQo+ICsNCj4gKyAgICAvKiBFbmFibGUgR0lDIENQVSBpbnRlcmZh
Y2UgKi8NCj4gKyAgICB3cml0ZWxfZ2ljYyhnaWNfY3R4LmNwdS5jdGxyLCBHSUNDX0NUTFIpOw0K
PiArfQ0KPiArDQoNCkkgYWxzbyBzZWUgdGhhdCB3ZSBkb27igJl0IHNhdmUgcGVuZGluZyBTR0lz
IHN0YXRlIChieSBHSUNEX0NQRU5EU0dJUm4vR0lDRF9TUEVORFNHSVJuKSBvciBBY3RpdmUgUHJp
b3JpdGllcyByZWdpc3RlcnMNCnN0YXRlIChHSUNDX0FQUm4vR0lDQ19OU0FQUm4gW2xhdHRlciBp
ZiBzZWN1cml0eSBleHRlbnNpb24gYXJlIHRoZXJlXSkgYXMgd3JpdHRlbiBpbiBbMV0g4oCcNC41
IFByZXNlcnZpbmcgYW5kIHJlc3RvcmluZyBHSUMgc3RhdGXigJ0sDQp3YXMgaXQgaW50ZW50aW9u
YWw/DQoNClsxXSBodHRwczovL2RldmVsb3Blci5hcm0uY29tL2RvY3VtZW50YXRpb24vaWhpMDA0
OC9iYi8/bGFuZz1lbg0KDQpDaGVlcnMsDQpMdWNhDQoNCg0K


From xen-devel-bounces@lists.xenproject.org Tue Apr 21 13:30:45 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 21 Apr 2026 13:30:45 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1288977.1569206 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wFBBb-0001Mi-Qv; Tue, 21 Apr 2026 13:30:43 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1288977.1569206; Tue, 21 Apr 2026 13: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 1wFBBb-0001Mb-Nq; Tue, 21 Apr 2026 13:30:43 +0000
Received: by outflank-mailman (input) for mailman id 1288977;
 Tue, 21 Apr 2026 13:30:42 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92) id 1wFBBa-0001MV-97
 for xen-devel@lists.xenproject.org; Tue, 21 Apr 2026 13:30:42 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wFBBY-00C2TS-0I
 for xen-devel@lists.xenproject.org; Tue, 21 Apr 2026 15:30:41 +0200
Received: from [10.42.69.3] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <oleksii.kurochko@gmail.com>)
 id 69e77bf7-e002-0a2a0a5209dd-0a2a4503b67c-20
 for <xen-devel@lists.xenproject.org>; Tue, 21 Apr 2026 15:30:41 +0200
Received: from [209.85.208.175] (helo=mail-lj1-f175.google.com)
 by tlsNG-33051d.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.1)
 (envelope-from <oleksii.kurochko@gmail.com>)
 id 69e77c01-672d-0a2a45030019-d155d0afb52a-3
 for <xen-devel@lists.xenproject.org>; Tue, 21 Apr 2026 15:30:41 +0200
Received: by mail-lj1-f175.google.com with SMTP id
 38308e7fff4ca-3870778358aso31694441fa.1
 for <xen-devel@lists.xenproject.org>; Tue, 21 Apr 2026 06:30:41 -0700 (PDT)
Received: from [192.168.1.6] (user-109-243-69-121.play-internet.pl.
 [109.243.69.121]) by smtp.gmail.com with ESMTPSA id
 2adb3069b0e04-5a4187e7dfesm3651086e87.71.2026.04.21.06.30.39
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Tue, 21 Apr 2026 06:30:39 -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=20251104 header.d=gmail.com header.i="@gmail.com" header.h="Content-Transfer-Encoding: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=20251104; t=1776778240; x=1777383040; darn=lists.xenproject.org;
        h=content-transfer-encoding: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;
        bh=rVu4BB+0F9xZP5VgtvZi5WxnVWMLIcqmlZ2Ib9ieOSc=;
        b=aqccD+s31GCSqO3U8E9r4qFRQ8nsTSEbOR0M57Rm6/a/ZhrivzgvLWU67c42bzRuay
         2ak36bZDxRvxm93nO8fgeDnCbvJI9RuPEFB2U/diX2hkvu5DuniMuJe3p7IIV7idbRkC
         RRN6SGKn/B0JTWGpnTTKU2CrsQc7fLkNssBB47xhcM+R0JTcACGMa71ipipOG7bCXh2g
         qhY2LvfxOcRQd96Pk4uScUgN55rHOKP1hxDHUfKnpHeNrOzVotzVVBs8kzXAwv3zixi/
         5+MA3mzE5gixZsqS7vKz7v0fYyKlDwHk5Q7XLN+xAnezEvSzPr1OpQFVq3l8udv00Ino
         vBTw==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20251104; t=1776778240; x=1777383040;
        h=content-transfer-encoding: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;
        bh=rVu4BB+0F9xZP5VgtvZi5WxnVWMLIcqmlZ2Ib9ieOSc=;
        b=lg2wmpkDDheBT+7xH+cnd9bCQGfHUELx6q+d5JOhqfGW9ek74E95NFg++YP97s62vg
         kBsLGw5MkdClbHT3u2QVy4R2li7tz0IzLjJj+JtXGXXYz428LnKL9AZ0tzWhHSZNxdG+
         kPLXIxA92fDXiJTx33ffFeAKzZEjPaP5wvsPpUBO3SyLk0n2d+bjnBF+r4vnrQyvSWQ+
         Qe8e1d+HPycrti2d9+IXTfR6dZGtBQtm22AkWG3D6LuUixXOP+VzqLNm7qjH8GfYAXax
         syG9a8DwBr5ERKwWZE0XdFGytBcryMRJQ+Mnlt/+MOVafrgZ61/59OOhiny46QZM0hlw
         dfxQ==
X-Forwarded-Encrypted: i=1; AFNElJ/X6a/9atOIQT0QoWi6TYB9f6VPwpxWZYIt1hJTtNps0BJBsIETqW6dwkxWOPMUnw2FkaGCHsO7+M4=@lists.xenproject.org
X-Gm-Message-State: AOJu0Yy6Pmhj/9L0xYnw3udx0CxxUBvSuLfRSG4N0rVmSITZesDLs2NV
	AM/r6aKPwVpn34R0OsrCTIepCjnTIDzgiYUdf7/OjMTU6jqQtAOZsmmH
X-Gm-Gg: AeBDieusaZWOc7GiJRo5R8dW51Sp50tkKKY5efKv3NCxGXyLFs30oUsygtuI2XctTV/
	PLG/gEjpW/N378tX1+YuR6DAxdLt+t8xAOveKQZZknhpgdns3/378+2DVy42C0AZjHV1W8dg+z8
	5xomA2gmmnCl8kVxrdUH5JPRHDLHSKGsYIOd7F0hEQUnRw/10zNbA7a+KUXATlCeK4VDd+ZaUS8
	LybwN/ItVqtPxli6fThHSHrFRlpI72OTvrtJcjwmftYXULRkpGDNlu6eGCvzMztnOT0/XKDHTWq
	3nz3S7Ju8dB2VqQIJjS9cl5mEP3Pz0Q9K/uTH9uCIlJe74pI2kjhSr0niDU6adRsGH7FAiAYTAA
	H7tXaEVKlxK7TMrywJ0DxYZ7B5LfuYYcDbqm4ypiGgwd68KO8dijNW4BUPC+L1sNmVfz2wW0gPW
	/LdpQHdPDgkiOYam/+GHsGI7KUA//U4n2Em5zZm6+0dFjqCxBUyKfMDxF8hdOezzXM7pmtteEhb
	bCOePLIz5CMRQ==
X-Received: by 2002:a05:6512:108c:b0:5a2:c962:59f2 with SMTP id 2adb3069b0e04-5a4172e1c03mr5225058e87.22.1776778240216;
        Tue, 21 Apr 2026 06:30:40 -0700 (PDT)
Message-ID: <5ae7ad4f-e7ef-462c-8a90-755d6f5936b6@gmail.com>
Date: Tue, 21 Apr 2026 15:30:38 +0200
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH] xen/arm: skip holes in physical address space when
 setting up frametable
To: Michal Orzel <michal.orzel@amd.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>,
 Luca Fancellu <Luca.Fancellu@arm.com>
References: <20260417091124.39552-1-michal.orzel@amd.com>
Content-Language: en-US
From: Oleksii Kurochko <oleksii.kurochko@gmail.com>
In-Reply-To: <20260417091124.39552-1-michal.orzel@amd.com>
Content-Type: text/plain; charset=UTF-8; format=flowed
Content-Transfer-Encoding: 8bit
X-purgate-ID: tlsNG-33051d/1776778241-28776938-852DFE62/10/73395122804
X-purgate-type: spam
X-purgate-size: 1676

Hello Michał,

On 4/17/26 11:11 AM, Michal Orzel wrote:
> Refactor setup_frametable_mappings() into init_frametable(), modeled
> after x86's implementation. Instead of mapping one contiguous frametable
> covering ram_start to ram_end (including holes), iterate the
> pdx_group_valid bitmap to allocate and map frametable memory only for
> valid PDX groups, skipping gaps in the physical address space. At the
> moment we don't really take into account pdx_group_valid bitmap.
> 
> This reduces memory consumption on systems with sparse RAM layouts by
> not allocating frametable entries for non-existent memory regions.
> 
> A file-local pdx_to_page() override is needed because the generic macro
> in xen/include/xen/pdx.h does not account for ARM's non-zero
> frametable_base_pdx.
> 
> Update the MPU implementation to match the new init_frametable()
> signature. Since MPU has no virtual address translation (ma == va),
> hole-skipping is not possible and the frametable remains a single
> contiguous allocation.
> 
> Signed-off-by: Michal Orzel<michal.orzel@amd.com>
> ---
> We've been using this approach at AMD for a while now. Without this we would not
> be able to boot some of our boards that have huge holes in the PA space, so I
> consider this patch a great improvement.
> 
> Two things to consider as a follow-up in the future:
>   - change generic pdx_to_page, page_to_pdx to take into account offset that
>     on x86 is zero but on other arches it is not. The page list code is
>     for now unaffected because the offset cancels out,
>   - use the same on RISCV.

Do you have such plans to do that for RISC-V?

~ Oleksii


From xen-devel-bounces@lists.xenproject.org Tue Apr 21 13:34:54 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 21 Apr 2026 13:34:54 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1288985.1569216 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wFBFZ-0001u4-9Y; Tue, 21 Apr 2026 13:34:49 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1288985.1569216; Tue, 21 Apr 2026 13:34: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 1wFBFZ-0001tx-6w; Tue, 21 Apr 2026 13:34:49 +0000
Received: by outflank-mailman (input) for mailman id 1288985;
 Tue, 21 Apr 2026 13:34:48 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <jbeulich@suse.com>) id 1wFBFY-0001tr-Au
 for xen-devel@lists.xenproject.org; Tue, 21 Apr 2026 13:34:48 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wFBFX-007fFw-DD
 for xen-devel@lists.xenproject.org; Tue, 21 Apr 2026 15:34:47 +0200
Received: from [10.42.69.7] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <jbeulich@suse.com>)
 id 69e77cf1-e002-0a2a0a5209dd-0a2a4507b86e-18
 for <xen-devel@lists.xenproject.org>; Tue, 21 Apr 2026 15:34:47 +0200
Received: from [209.85.128.41] (helo=mail-wm1-f41.google.com)
 by tlsNG-ef75cf.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.1)
 (envelope-from <jbeulich@suse.com>)
 id 69e77cf7-229c-0a2a45070019-d1558029b59e-3
 for <xen-devel@lists.xenproject.org>; Tue, 21 Apr 2026 15:34:47 +0200
Received: by mail-wm1-f41.google.com with SMTP id
 5b1f17b1804b1-488b150559bso33589655e9.1
 for <xen-devel@lists.xenproject.org>; Tue, 21 Apr 2026 06:34:47 -0700 (PDT)
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-488fc0f8188sm390113645e9.2.2026.04.21.06.34.46
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Tue, 21 Apr 2026 06:34:46 -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=google header.d=suse.com header.i="@suse.com" header.h="Content-Transfer-Encoding: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=1776778487; x=1777383287; darn=lists.xenproject.org;
        h=content-transfer-encoding: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;
        bh=kiknjX2Ay3mBLby+d1elOlQocFNxZsEw/GVELKW8si0=;
        b=KS3xCQaK4oCxtLNk/GQy7CO+fjAXksv9MMvbm3tYAdC1o0enpGky8fZqCzKWFThSq3
         Y754CLb/fkviA85KsXctQ8fpMoVQHGfLM6E4yAw6ipxd7YvGMcDwZAsabrZzhJSMfWBy
         7Ut847F7KupdFk66xxsDvUW0v73wMbQ4BwBV8kn2iBq79hqAzNLO305qTxD0rLxGuJ4Y
         wYT7R8mmFoUPltsIpmgR5T8scjtODnnf2lBsCyMQ1OwJZ3JrWP/B+nybHodfzx/Yj3i9
         AqmoLImQ8DFl/8VLG+g+Hyjm6FLwoR+YKBU3X1ug/7hKhNwfJ0ARLQ3ax0OFCQ4zfiYn
         sIhw==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20251104; t=1776778487; x=1777383287;
        h=content-transfer-encoding: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;
        bh=kiknjX2Ay3mBLby+d1elOlQocFNxZsEw/GVELKW8si0=;
        b=Kjk+ca7GE2dM6yToo6SkT/LMDjlwrDn1IfyUEXcgbReJRjn66b/R3aXB+Fh3vqdpOl
         sTOPZ3vpCEQ8sb/RPLJD71ll5vboIij770/NVIhPCsICYW2YkdELnqCA+lNvZmkpI/4U
         gppfsk+KQWAp/yv/jEfINTwu3/76kmwYLrZrXPyn3iDhv2Scvg/HqdBmp0X2G7kJPmig
         234znNfACm79jda5Zh/xoFWrfgWyLFgdjOoet4c5+6+LF7pO6Kvx3zME/qaM3kYFJx+b
         +q2NOhOyBZWAptJlCTpRE7xcDjcmKHBR4iWhn8qTN6izJU6hxmMXJIkt4OgNq3B5K1rb
         rYFA==
X-Forwarded-Encrypted: i=1; AFNElJ+ApOjO+In09HPKP23jleMhBqdd2ItEcCSRmz+qn1KaUE2AtKcer+mr9KeL4TrzhscgAAzwuHreDqc=@lists.xenproject.org
X-Gm-Message-State: AOJu0Yxp3pDFacoNcFoi8sIMIVA41KH+FZu20lJLQB4XG2zVMZ/K3dFy
	do2S80KeFvhzO7YYxcHNSTqK6N29yxAVLu0+25pOZS5nuDi9yylE7adB9ZvySJI86Q==
X-Gm-Gg: AeBDieuZOxI/kIb3w580XOkxzr51ZP3m6UcmlFhIY3M53DCG/YPCVLgZbKxVAA1i9XC
	1LNtXXNxTSLMrqO+7m3o9roYCjquhNKENZQdddTH7cAg8fmP+AvGIya6tWcYMCrt9qMfS0FLgIM
	m8cOoX8lc7R/y380MUhvgzgzVtExQA90XsprI0F+iBbIpQW4U8RD+2EERbosE/ZMRNrTEzAMYxR
	x5hrqRziSDDqsE/vizUnPPx6qTL1mJOucGb/faWaeKL7QKAo6yEIu33+M+axp2Gd2ziW4gxs0ft
	FAe6P0QGfvM+EwmPh8IyOHhOjXquoDn00SRvLs5LlGiNS9YbUjgHTEm0K3K7ENJ5lxUOUSEM6nD
	Gn9Nu3cjPSolCP5HZ0QOiqDDXJLxpnmem6/PAbtOn1EC82AI2W5b29nDnqLqIolFUvk/HAwD88Q
	sqdcrSjAC7dyvtneysHhsKcCBaTtafZLX59Flez3MbhpQwsVCfdPcu7fSc86f+Cr5SpuRryxTf1
	MZ6H45EGVxsGFXWuukFHtGgpQ==
X-Received: by 2002:a05:600c:a108:b0:488:a82f:bbb4 with SMTP id 5b1f17b1804b1-488fb78a0famr220642855e9.26.1776778486586;
        Tue, 21 Apr 2026 06:34:46 -0700 (PDT)
Message-ID: <da157511-9977-4024-abf7-38556b942106@suse.com>
Date: Tue, 21 Apr 2026 15:34:45 +0200
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH v4 4/4] vpci: allow 32-bit BAR writes with memory decoding
 enabled
To: Stewart Hildebrand <stewart.hildebrand@amd.com>
Cc: =?UTF-8?Q?Roger_Pau_Monn=C3=A9?= <roger.pau@citrix.com>,
 xen-devel@lists.xenproject.org
References: <20260406191203.97662-1-stewart.hildebrand@amd.com>
 <20260406191203.97662-5-stewart.hildebrand@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: <20260406191203.97662-5-stewart.hildebrand@amd.com>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 7bit
X-purgate-ID: tlsNG-ef75cf/1776778487-15255C48-6B54B943/0/0
X-purgate-type: clean
X-purgate-size: 2291

On 06.04.2026 21:11, Stewart Hildebrand wrote:
> --- a/xen/drivers/vpci/header.c
> +++ b/xen/drivers/vpci/header.c
> @@ -670,6 +670,7 @@ static void cf_check bar_write(
>  {
>      struct vpci_bar *bar = data;
>      bool hi = false;
> +    uint16_t cmd = 0;
>  
>      ASSERT(is_hardware_domain(pdev->domain));
>  
> @@ -683,19 +684,29 @@ static void cf_check bar_write(
>          val &= PCI_BASE_ADDRESS_MEM_MASK;
>  
>      /*
> -     * Xen only cares whether the BAR is mapped into the p2m, so allow BAR
> -     * writes as long as the BAR is not mapped into the p2m.
> +     * Allow 64-bit BAR writes only when the BAR is not mapped in p2m. Always
> +     * allow 32-bit BAR writes.
>       */
>      if ( bar->enabled )
>      {
> -        /* If the value written is the current one avoid printing a warning. */
> -        if ( val != (uint32_t)(bar->addr >> (hi ? 32 : 0)) )
> -            gprintk(XENLOG_WARNING,
> -                    "%pp: ignored BAR %zu write while mapped\n",
> -                    &pdev->sbdf, bar - pdev->vpci->header.bars + hi);
> -        return;
> -    }
> +        if ( bar->type == VPCI_BAR_MEM32 )
> +        {
> +            if ( val == bar->addr )
> +                return;
>  
> +            cmd = pci_conf_read16(pdev->sbdf, PCI_COMMAND);
> +            modify_bars(pdev, cmd, false, false);
> +        }
> +        else
> +        {
> +            /* If the value written is the same avoid printing a warning. */
> +            if ( val != (uint32_t)(bar->addr >> (hi ? 32 : 0)) )
> +                gprintk(XENLOG_WARNING,
> +                        "%pp: ignored BAR %zu write while mapped\n",
> +                        &pdev->sbdf, bar - pdev->vpci->header.bars + hi);
> +            return;
> +        }
> +    }
>  
>      /*
>       * Update the cached address, so that when memory decoding is enabled
> @@ -715,6 +726,9 @@ static void cf_check bar_write(
>      }
>  
>      pci_conf_write32(pdev->sbdf, reg, val);
> +
> +    if ( bar->enabled )
> +        modify_bars(pdev, cmd, false, true);
>  }
>  
>  static void cf_check guest_mem_bar_write(const struct pci_dev *pdev,

While this all looks plausible, isn't something similar needed in rom_write()
then as well?

Jan


From xen-devel-bounces@lists.xenproject.org Tue Apr 21 13:55:01 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 21 Apr 2026 13:55:01 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1288999.1569225 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wFBZ1-0005Zo-TK; Tue, 21 Apr 2026 13:54:55 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1288999.1569225; Tue, 21 Apr 2026 13:54: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 1wFBZ1-0005Zh-PZ; Tue, 21 Apr 2026 13:54:55 +0000
Received: by outflank-mailman (input) for mailman id 1288999;
 Tue, 21 Apr 2026 13:54: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 1wFBZ0-0005ZZ-3W
 for xen-devel@lists.xenproject.org; Tue, 21 Apr 2026 13:54:54 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wFBYz-00COMb-G4
 for xen-devel@lists.xenproject.org; Tue, 21 Apr 2026 15:54:53 +0200
Received: from [10.42.69.7] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <Jason.Andryuk@amd.com>)
 id 69e781ad-5cb7-0a2a0a5109dd-0a2a4507936a-0
 for <xen-devel@lists.xenproject.org>; Tue, 21 Apr 2026 15:54:53 +0200
Received: from [40.93.196.69]
 (helo=SA9PR02CU001.outbound.protection.outlook.com)
 by tlsNG-ef75cf.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.1)
 (envelope-from <Jason.Andryuk@amd.com>)
 id 69e781ab-229c-0a2a45070019-285dc445bc13-3
 for <xen-devel@lists.xenproject.org>; Tue, 21 Apr 2026 15:54:52 +0200
Received: from CH2PR17CA0003.namprd17.prod.outlook.com (2603:10b6:610:53::13)
 by MN0PR12MB6173.namprd12.prod.outlook.com (2603:10b6:208:3c6::16)
 with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9846.15; Tue, 21 Apr
 2026 13:54:47 +0000
Received: from CH1PEPF0000A348.namprd04.prod.outlook.com
 (2603:10b6:610:53:cafe::2) by CH2PR17CA0003.outlook.office365.com
 (2603:10b6:610:53::13) with Microsoft SMTP Server (version=TLS1_3,
 cipher=TLS_AES_256_GCM_SHA384) id 15.20.9791.48 via Frontend Transport; Tue,
 21 Apr 2026 13:54:47 +0000
Received: from satlexmb08.amd.com (165.204.84.17) by
 CH1PEPF0000A348.mail.protection.outlook.com (10.167.244.4) with Microsoft
 SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id
 15.20.9791.48 via Frontend Transport; Tue, 21 Apr 2026 13:54:47 +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.17; Tue, 21 Apr
 2026 08:54:47 -0500
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.17; Tue, 21 Apr
 2026 08:54:46 -0500
Received: from [172.28.123.27] (10.180.168.240) by satlexmb08.amd.com
 (10.181.42.217) with Microsoft SMTP Server id 15.2.2562.17 via Frontend
 Transport; Tue, 21 Apr 2026 08:54:46 -0500
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@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=do651v2B7k03aYhERZ+XUILETVfNgFws8TRFJ4gHc6p+N2fZAjW7c9MZ+vKjbXtmkJmpulmY2R4Qm2rVDWlv0NH9h4ml0yZGrNEptYX62mndohait9e6XClGhRjF7s3JaL/S3Sjz89jjwVMqQoL75gRiAijSRuSD25923tKY3/mxqNEZeCCpOIiKMuMcGk7Z9QOOyFI/Lgf8kNla2V164874Tgh3xHg4vlsbMNpfmhOUFXOe7cEy59CcOj9aLh+Vkow7OCXFeLIJp8qSUbgOI24aW2H1WS3m0vD4YwLjcDuYD5MDE8tdYXtvlDx1FenNoHGZTKobP7fuhOUdJbHKcQ==
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com;
 s=arcselector10001;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1;
 bh=eRyuYiYcK7B3hZM900kyl7tC80qmQh7ZvMisYRDPC2M=;
 b=VGhn21B4CL12zIKGLF+Db/8ovlp9XoM877+nabSdvJcrzNUTeh0yQYdURzt5elR636/KjHFjXOdfKyco/Fdxrh7HQydCcxceW+qTGHSKNpd241x/iE58GvHVIV/hiPvLCdBsSGL3a0piu+2lh/W/ZU4V17inAOST48HQO9LUlVNg+OBCCJSpV7QWQnWY7d5wIMOnQnvUlbFpI51R6D/HfnwGPRbL5GSvzhqYEB1dh0TX2SW8UyHQ3S0wkG5/mnoNZI5He8HkoZmR+3l26HDskC+QWKFa6e2hdiBTMR1jvQAh2vZcAghjm29Xl6b6o4n8NJC7kBK2ACB+g0643smirA==
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=eRyuYiYcK7B3hZM900kyl7tC80qmQh7ZvMisYRDPC2M=;
 b=SHLXm20B9cfTY7Xjl34oMTHcn7Petwat7Ag9j3jdsM4fU55i0r5Hq1MBbgTIHbYLLMJXZq+VctNeQXQ931YIACY5gbtU6N3RogPiWeI+y8rHARkP7yrW0FdVchLIGT7Ub/mBErSO4OZU296MO+59+SS8For3puuja62e3ev02N8=
X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 165.204.84.17)
 smtp.mailfrom=amd.com; dkim=none (message not signed)
 header.d=none;dmarc=pass action=none header.from=amd.com;
Received-SPF: Pass (protection.outlook.com: domain of amd.com designates
 165.204.84.17 as permitted sender) receiver=protection.outlook.com;
 client-ip=165.204.84.17; helo=satlexmb08.amd.com; pr=C
Message-ID: <df1be497-ff9b-4f08-ad83-54df9799dd1b@amd.com>
Date: Tue, 21 Apr 2026 09:54:46 -0400
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH v2 3/9] tools/libs/store: add support to use watches with
 a depth parameter
To: Juergen Gross <jgross@suse.com>, <xen-devel@lists.xenproject.org>
CC: Anthony PERARD <anthony.perard@vates.tech>, Julien Grall <julien@xen.org>
References: <20260421074211.308473-1-jgross@suse.com>
 <20260421074211.308473-4-jgross@suse.com>
Content-Language: en-US
From: Jason Andryuk <jason.andryuk@amd.com>
In-Reply-To: <20260421074211.308473-4-jgross@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: CH1PEPF0000A348:EE_|MN0PR12MB6173:EE_
X-MS-Office365-Filtering-Correlation-Id: cb5d97c5-35e1-4eed-291a-08de9fad8cca
X-MS-Exchange-SenderADCheck: 1
X-MS-Exchange-AntiSpam-Relay: 0
X-Microsoft-Antispam:
	BCL:0;ARA:13230040|36860700016|82310400026|376014|1800799024|56012099003|18002099003|22082099003;
X-Microsoft-Antispam-Message-Info:
	C7RfGo4ue3hvyxakVJ9c+CzVJ6J/nDd9Yun/ByVwXBjYRml/d+eAse+PvkauVFc/fwQR+tnUhiiC5Mj3175NZcOuedJ/bDcf1I84rcFGVa/kRDupAytkD4UAXgTGa2g59mrfhuR8XLrSvGr0dVtEXk3ol4R1bSIy74l3zukd8lyNaAjmRycQbPMOjPBwOJ7/e0SG/QFNO27qCbmO5cQmQm8eQJHAjQ+j1Kf83Vzhv8tiNewzvbqmMJg69IJ1q7VIvBp6s2jCkHD3CzPYnGZxNbirgCDZBBeX6suMi/YLm5Jq4t4iNcsX496gEvq/1yRCa4nepTu78yaI7HM2ZaA5ZcndDJvEk9ehgoOB0hfPgFyQl1/qvO1UsnEDEz4THpm18oIrZAlgrfXjENh6v+cVlrRytznKyIfqhzLMfiALl6FNMTCM0TfvoSXMnO7VmiGsXQNRW+uDfCjCOZeSyW7H5g3HTArj88pdYw9H+2coGD0WACyvy4nflNVuNEzwA5S7kqZwJed5m5kzbCkXGojzLQbVe3hTZPmLl/aFNnga0XwwAE9exGq+cESe9vXhipFgps4Hjo84EcKQ1Rf69fZE4eYVjviyGEYykRiBAeB74Ib3O2OdSn4zS7LnLzPTt4+luR3rUrixmH7PM4F47s12YwQ1HT9Ngyvps4qKysjw6YGeuLY1SXpRyHrYjMevW1JXM0EwiAg0sVbpfyq2N2DUAsBuVtQOYt/Y9Pa46QTzTsrMPKVUwdGWdt38+eRk4eSmTxcQ96a6zDlCOQ0BWbG43A==
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)(1800799024)(56012099003)(18002099003)(22082099003);DIR:OUT;SFP:1101;
X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1
X-MS-Exchange-AntiSpam-MessageData-0:
	9CmnsaMm6/uDRHD244WkTeDBXkL+56daKi1lpVJMIDC1V8WHvfw05j6KQYYrg8vr4gBuQho1wKcUHVr31TseTUwHLt3coxutEefOb2QMttP5OTjtGprT61fZNTbmd85rmExqQ2VieKRl/fFmJUi/wkQHnu8OK7glnF36dki0LG0dZsCaai7QKFxa61Fkd/JRaXoWjuyAijIezZsG0eWq7KOenwPSPrHx2VvxuidMmE3HtouKXztREPCYLTHnWsiN/D/X0w/ggMrwKdB5wh/o0Y1QxWDlZ0Lz+1hu0PbqupDLT8Xeh0Aa288Vx1K/6rGtorThvb7Nr31go10evGfFRTpx5BEIx4tAt36rWSnuYIXBqyMOrVZbNKXFnK8YfCClRyV8Dkj3ndfboFUDEnRtIFEELFn8DoAXOm+Aha/obd/hYEMhjFnm0OzkYtNsX5ir
X-OriginatorOrg: amd.com
X-MS-Exchange-CrossTenant-OriginalArrivalTime: 21 Apr 2026 13:54:47.3120
 (UTC)
X-MS-Exchange-CrossTenant-Network-Message-Id: cb5d97c5-35e1-4eed-291a-08de9fad8cca
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:
	CH1PEPF0000A348.namprd04.prod.outlook.com
X-MS-Exchange-CrossTenant-AuthAs: Anonymous
X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem
X-MS-Exchange-Transport-CrossTenantHeadersStamped: MN0PR12MB6173
X-purgate-ID: tlsNG-ef75cf/1776779693-AF77AC48-E656B825/0/0
X-purgate-type: clean
X-purgate-size: 1514

On 2026-04-21 03:42, Juergen Gross wrote:
> Add a new xs_watch_depth() function to libxenstore allowing to limit
> the scope of a Xenstore watch. It can be used only in case Xenstore is
> supporting the XENSTORE_SERVER_FEATURE_WATCHDEPTH feature.
> 
> For convenience add a xs_watch_try_depth() wrapper, which will call
> xs_watch_depth() if supported and xs_watch() otherwise.
> 
> Cache the supported features of Xenstore in order not having to get
> them from Xenstore for each call of one of the new functions.
> 
> Signed-off-by: Juergen Gross <jgross@suse.com>


> diff --git a/tools/libs/store/xs.c b/tools/libs/store/xs.c
> index 06462445e0..cb3508a86a 100644
> --- a/tools/libs/store/xs.c
> +++ b/tools/libs/store/xs.c

> @@ -1001,8 +993,8 @@ bool xs_watch(struct xs_handle *h, const char *path, const char *token)
>   # define PTHREAD_STACK_MIN 0
>   #endif
>   
> -#define READ_THREAD_STACKSIZE 					\
> -	((DEFAULT_THREAD_STACKSIZE < PTHREAD_STACK_MIN) ? 	\
> +#define READ_THREAD_STACKSIZE					\
> +	((DEFAULT_THREAD_STACKSIZE < PTHREAD_STACK_MIN) ?	\

This is an unrelated whitespace change, and not mentioned in the commit 
message.  It should probably be dropped since the surrounding lines are 
no longer touched.  Alternatively kept and mentioned.  With either of those:

Reviewed-by: Jason Andryuk <jason.andryuk@amd.com>

Thanks,
Jason

>   	 PTHREAD_STACK_MIN : DEFAULT_THREAD_STACKSIZE)
>   
>   	/* We dynamically create a reader thread on demand. */


From xen-devel-bounces@lists.xenproject.org Tue Apr 21 14:04:33 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 21 Apr 2026 14:04:33 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1289008.1569238 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wFBiH-0007lz-Ob; Tue, 21 Apr 2026 14:04:29 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1289008.1569238; Tue, 21 Apr 2026 14: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 1wFBiH-0007lr-LI; Tue, 21 Apr 2026 14:04:29 +0000
Received: by outflank-mailman (input) for mailman id 1289008;
 Tue, 21 Apr 2026 14:04:27 +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.19db05b44aa000f373@swg.vates.tech>)
 id 1wFBiF-0007lj-7Q
 for xen-devel@lists.xenproject.org; Tue, 21 Apr 2026 14:04:27 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wFBiE-007mSI-KV
 for xen-devel@lists.xenproject.org; Tue, 21 Apr 2026 16:04:26 +0200
Received: from [10.42.69.3] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1) (envelope-from
 <prod-mta-13.8631fc262581453bbf619ec5b2062170.19db05b44aa000f373@swg.vates.tech>)
 id 69e783dd-2eae-0a2a0a5409dd-0a2a4503cbc4-34
 for <xen-devel@lists.xenproject.org>; Tue, 21 Apr 2026 16:04:26 +0200
Received: from [185.255.28.34] (helo=prod-mta-13.swg-srv.net)
 by tlsNG-33051d.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.1)
 (envelope-from
 <prod-mta-13.8631fc262581453bbf619ec5b2062170.19db05b44aa000f373@swg.vates.tech>)
 id 69e783ea-672d-0a2a45030019-b9ff1c229759-3
 for <xen-devel@lists.xenproject.org>; Tue, 21 Apr 2026 16:04:26 +0200
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
 19db05b44aa000f373.005 for <xen-devel@lists.xenproject.org>
 (version=TLSv1.3 cipher=TLS_AES_256_GCM_SHA384);
 Tue, 21 Apr 2026 14:04:24 +0000
Received: from [192.168.1.18] (88-175-170-134.subs.proxad.net [88.175.170.134])
 (Authenticated sender: teddy.astie)
 by mail2.vates.fr (Postfix) with ESMTPSA id DCC248747F;
 Tue, 21 Apr 2026 16:04:23 +0200 (CEST)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@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=MB/m/ZZNg4unA9O5EHjaJEeR/qWt44l6z4I1gSVJ4dk=;
 h=from:subject:date:message-id:to:cc:mime-version:content-type:in-reply-to:references:feedback-id;
 b=TOaVLUo48manl0zBOhikmTndS8SRmxCYo/SVIfMXhxAmDpqDSRquYdrAmuvStYy0K+3ZzB/hz
 vbZZSMFd8hk6aZgZwB5d7AzxXF1KClJgQ8YbEqAi75SInffl0jUq0THAt+XSmkXpUrby+JBkDno
 Y0DbY/SzCQmmep0A+W9IIByyWoClaCmGAFhYI+3IRmiXTAwNXLlLHECdb+aJ2qX1Issu7AnmsSo
 okPHy5DfOHP3cIgxZYotBkChG4y/isshSDZpC/cebEOouDe3NSDJlBXOJbUa5862Czuyv/GxX8Z
 Dtz/XYF7Wy8Qs8CfKPeV8XOOyY1SFKCQ626fiTQ93YDA==
X-Zone-Loop: 3fc5128abaea35f35050ab85e6d5e76fcaf417e7d227
x-campaign-type: default
x-transaction-id: e53f060e-b64b-4739-82cc-34a2e2128896
x-swg-uid: 01-cc4ac554-f169-4f4d-9b60-469fa7643f91
X-Mailer: Sweego
Message-ID:
 <1776780264.8631fc262581453bbf619ec5b2062170.19db05b44aa000f373@vates.tech>
x-swg-bid: 1776780264.8631fc262581453bbf619ec5b2062170.19db05b44aa000f373
Feedback-ID: default:8631fc262581453bbf619ec5b2062170:Sweego
x-campaign-id: default
x-client-id: 8631fc262581453bbf619ec5b2062170
X-Originating-IP: [37.26.189.201]
Date: Tue, 21 Apr 2026 16:04:23 +0200
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH v5 2/2] x86/svm: Use the virtual NMI when available
To: Abdelkareem Abdelsaamad <abdelkareem.abdelsaamad@citrix.com>,
 andrew.cooper3@citrix.com, xen-devel@lists.xenproject.org
Cc: roger.pau@citrix.com, jbeulich@suse.com, jason.andryuk@amd.com
References: <cover.1772109484.git.abdelkareem.abdelsaamad@citrix.com>
 <29068558780bd9c6182d7bd74b357acc44409bfe.1772109484.git.abdelkareem.abdelsaamad@citrix.com>
Content-Language: en-US
From: Teddy Astie <teddy.astie@vates.tech>
In-Reply-To: <29068558780bd9c6182d7bd74b357acc44409bfe.1772109484.git.abdelkareem.abdelsaamad@citrix.com>
X-BM-Disclaimer: Yes
Content-Type: multipart/alternative; boundary="-=Part.2489.c2540df3f714e6ac.19db05b4251.729abd03c36de791=-"
X-Bm-Milter-Handled: 4ffbd6c1-ee69-4e1b-aabd-f977039bd3e2
X-Bm-Transport-Timestamp: 1776780264017
X-purgate-ID: tlsNG-33051d/1776780266-A3161938-1411CCFA/0/0
X-purgate-type: clean
X-purgate-size: 3025

---=Part.2489.c2540df3f714e6ac.19db05b4251.729abd03c36de791=-
Content-Type: text/plain; charset=utf-8
Content-Transfer-Encoding: quoted-printable

Le 26/02/2026 =C3=A0 14:23, Abdelkareem Abdelsaamad a =C3=A9crit=C2=A0:
> With the Virtual NMI (vNMI), the pending NMI is simply stuffed into the =
VMCB
> and handed off to the hardware=2E There is no need for the artificial tr=
acking
> of the NMI handling completion with the IRET instruction interception=2E
>=20
> Adjust the svm_inject_nmi to rather inject the NMIs using the vNMI Hardw=
are
> accelerated feature when the AMD platform supports the vNMI=2E
>=20
> Signed-off-by: Abdelkareem Abdelsaamad <abdelkareem=2Eabdelsaamad@citrix=
=2Ecom>
> ---
>   xen/arch/x86/hvm/svm/intr=2Ec | 6 ++++++
>   xen/arch/x86/hvm/svm/svm=2Ec  | 1 +
>   xen/arch/x86/hvm/svm/vmcb=2Ec | 2 ++
>   3 files changed, 9 insertions(+)
>=20
> diff --git a/xen/arch/x86/hvm/svm/intr=2Ec b/xen/arch/x86/hvm/svm/intr=
=2Ec
> index 6453a46b85=2E=2E112a393211 100644
> --- a/xen/arch/x86/hvm/svm/intr=2Ec
> +++ b/xen/arch/x86/hvm/svm/intr=2Ec
> @@ -33,6 +33,12 @@ static void svm_inject_nmi(struct vcpu *v)
>       u32 general1_intercepts =3D vmcb_get_general1_intercepts(vmcb);
>       intinfo_t event;
>  =20
> +    if ( vmcb->_vintr=2Efields=2Evnmi_enable )
> +    {
> +        vmcb->_vintr=2Efields=2Evnmi_pending =3D 1;
> +        return;
> +    }
> +
>       event=2Eraw =3D 0;
>       event=2Ev =3D true;
>       event=2Etype =3D X86_ET_NMI;
> diff --git a/xen/arch/x86/hvm/svm/svm=2Ec b/xen/arch/x86/hvm/svm/svm=2Ec
> index 18ba837738=2E=2E815565c33f 100644
> --- a/xen/arch/x86/hvm/svm/svm=2Ec
> +++ b/xen/arch/x86/hvm/svm/svm=2Ec
> @@ -2524,6 +2524,7 @@ const struct hvm_function_table * __init start_svm=
(void)
>       P(cpu_has_tsc_ratio, "TSC Rate MSR");
>       P(cpu_has_svm_sss, "NPT Supervisor Shadow Stack");
>       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");
>   #undef P
>  =20
> diff --git a/xen/arch/x86/hvm/svm/vmcb=2Ec b/xen/arch/x86/hvm/svm/vmcb=
=2Ec
> index e583ef8548=2E=2Ee90bbac332 100644
> --- a/xen/arch/x86/hvm/svm/vmcb=2Ec
> +++ b/xen/arch/x86/hvm/svm/vmcb=2Ec
> @@ -184,6 +184,8 @@ static int construct_vmcb(struct vcpu *v)
>       if ( default_xen_spec_ctrl =3D=3D SPEC_CTRL_STIBP )
>           v->arch=2Emsrs->spec_ctrl=2Eraw =3D SPEC_CTRL_STIBP;
>  =20
> +    vmcb->_vintr=2Efields=2Evnmi_enable =3D cpu_has_svm_vnmi;
> +
>       return 0;
>   }
>  =20

What is the status of this ?

IIRC the main concern was regarding whether or not the vnmi_pending bit=20
requires to set the clean_bits=2E But it seems it is not the case here=2E

Do we have a official confirmation on that ?

Teddy


-- 
Teddy Astie | Vates XCP-ng Developer

XCP-ng & Xen Orchestra - Vates s=
olutions

web: https://vates=2Etech
---=Part.2489.c2540df3f714e6ac.19db05b4251.729abd03c36de791=---


From xen-devel-bounces@lists.xenproject.org Tue Apr 21 14:07:29 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 21 Apr 2026 14:07:29 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1289016.1569247 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wFBl9-0008Oi-8G; Tue, 21 Apr 2026 14:07:27 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1289016.1569247; Tue, 21 Apr 2026 14:07: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 1wFBl9-0008Ob-55; Tue, 21 Apr 2026 14:07:27 +0000
Received: by outflank-mailman (input) for mailman id 1289016;
 Tue, 21 Apr 2026 14:07:26 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <Rose.Spangler@elektrobit.com>) id 1wFBl8-0008OV-F5
 for xen-devel@lists.xenproject.org; Tue, 21 Apr 2026 14:07:26 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wFBl7-00BTel-Ov
 for xen-devel@lists.xenproject.org; Tue, 21 Apr 2026 16:07:25 +0200
Received: from [10.42.69.12] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <Rose.Spangler@elektrobit.com>)
 id 69e78493-2eae-0a2a0a5409dd-0a2a450ceb08-30
 for <xen-devel@lists.xenproject.org>; Tue, 21 Apr 2026 16:07:25 +0200
Received: from [52.101.43.137]
 (helo=SJ2PR03CU001.outbound.protection.outlook.com)
 by tlsNG-d25034.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.1)
 (envelope-from <Rose.Spangler@elektrobit.com>)
 id 69e7849b-62f1-0a2a450c0019-34652b89b4c3-3
 for <xen-devel@lists.xenproject.org>; Tue, 21 Apr 2026 16:07:25 +0200
Received: from SJ0PR13CA0227.namprd13.prod.outlook.com (2603:10b6:a03:2c1::22)
 by DS0PR08MB10938.namprd08.prod.outlook.com (2603:10b6:8:312::14)
 with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9846.16; Tue, 21 Apr
 2026 14:07:20 +0000
Received: from SJ5PEPF000001EC.namprd05.prod.outlook.com
 (2603:10b6:a03:2c1:cafe::2e) by SJ0PR13CA0227.outlook.office365.com
 (2603:10b6:a03:2c1::22) with Microsoft SMTP Server (version=TLS1_3,
 cipher=TLS_AES_256_GCM_SHA384) id 15.20.9846.15 via Frontend Transport; Tue,
 21 Apr 2026 14:07:20 +0000
Received: from usbth1es003.ebgroup.elektrobit.com (4.79.107.243) by
 SJ5PEPF000001EC.mail.protection.outlook.com (10.167.242.200) with Microsoft
 SMTP Server (version=TLS1_3, cipher=TLS_AES_256_GCM_SHA384) id 15.20.9791.48
 via Frontend Transport; Tue, 21 Apr 2026 14:07:19 +0000
Received: from usbth1es003 (localhost [127.0.0.1])
 by usbth1es003.ebgroup.elektrobit.com (Postfix) with SMTP id 4g0PLb1kcWz1wdM; 
 Tue, 21 Apr 2026 07:07:19 -0700 (PDT)
Received: from DS2PR08CU001.outbound.protection.outlook.com
 (mail-ds2pr08cu00100.outbound.protection.outlook.com [40.93.13.72])
 (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)
 key-exchange secp384r1) (No client certificate requested)
 by usbth1es003.ebgroup.elektrobit.com (Postfix) with ESMTPS;
 Tue, 21 Apr 2026 07:07:18 -0700 (PDT)
Received: from CH3PR08MB8735.namprd08.prod.outlook.com (2603:10b6:610:160::11)
 by CH3PR08MB9275.namprd08.prod.outlook.com (2603:10b6:610:1c0::5)
 with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9846.16; Tue, 21 Apr
 2026 14:07:09 +0000
Received: from CH3PR08MB8735.namprd08.prod.outlook.com
 ([fe80::f5d2:ef47:3ccd:92fb]) by CH3PR08MB8735.namprd08.prod.outlook.com
 ([fe80::f5d2:ef47:3ccd:92fb%7]) with mapi id 15.20.9818.033; Tue, 21 Apr 2026
 14:07: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=elektrobit.com header.i="@elektrobit.com" header.h="From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck"; dkim=pass header.s=selector1 header.d=elektrobit.com header.i="@elektrobit.com" header.h="From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck"
ARC-Seal: i=2; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=pass;
 b=ohk4ZpoRy70VEe5dKDdppBaATqt8JiIrLub2bzLX5CA55aL3p3nDNGA0+il8EZfExeLx6sdYeeon/qiu3AWgfROQhm1PlxRhtgbojYkzAjTYRZCgfd66XYAxzbyIevf6LUqj72OF0EQpcuTORTq6kKEFQGQo3puDsIK9gZXmpgwvgmqZ8kKYOwgebLUkbU+oz/uMh173hq5Zc7Ky1uk7oDGVHw1aqPzUo1L7DRJu37gTh/eGYjkaCShQPfkWdZ1+VKu0eV08YhRX/M48TuzCx+GT1nGSpdLCcOOT3p5V+sBAv5j2XSk5PmYY6DxUTRbCdYBtVTLXB8dWp3OURLVJYw==
ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com;
 s=arcselector10001;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1;
 bh=rMAbdzkmZ5IVwEOyN/4S2RtyRj/t40Q5Se0zwlSipfc=;
 b=GQwGxP7/W4BIBRDXWwo7DGMOL3lCAIU3DIPP8pEe7rotSn8VstbAZFzKHlY7zn/sCUCWoU2II+kh0kDOd7z5433C9gQa0dsCSh44RiDCEZkbnsrLfccG2hA7DL8dvmZlvqBG8OuLlwnv/jiPK+rjvmHwkgvLmJo21GDtS8o9VS9laxvSbYrgdbCbJFmruisGwzd1VXBO/xpqOZP11Z/S6SJkZN6oM/6AS9NL+mf2CXujOvhth+L/EH7gs/RtGzxlc7xNDs61XedDHfqIhfxDsfHX9k0Lw7NU2/vUGpQ4pxWqp+D6c3nJIFFAzm4yzgOTP85LtmO1T5xir49Or35eRw==
ARC-Authentication-Results: i=2; mx.microsoft.com 1; spf=pass (sender ip is
 40.93.13.72) smtp.rcpttodomain=amd.com smtp.mailfrom=elektrobit.com;
 dmarc=pass (p=quarantine sp=none pct=100) action=none
 header.from=elektrobit.com; dkim=pass (signature was verified)
 header.d=elektrobit.com; arc=pass (0 oda=1 ltdi=1
 spf=[1,1,smtp.mailfrom=elektrobit.com] dkim=[1,1,header.d=elektrobit.com]
 dmarc=[1,1,header.from=elektrobit.com])
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=elektrobit.com;
 s=selector1;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck;
 bh=rMAbdzkmZ5IVwEOyN/4S2RtyRj/t40Q5Se0zwlSipfc=;
 b=GMjt5lBIh4iB+TpZD719z1AJYza7nPMFhTYse8QVnC3I+byKU5woR5HWqbswMpp1m5sCipUvI5yF3WNYZ14eY1zjoaCp3RG+l14IUBeta1EE1B9KpQ5Unq5Ag0RHS9epxBeCIYeFX3dxI4zFmP0veht6ZlztbY/WtJRdfP0eYOU=
X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 40.93.13.72)
 smtp.mailfrom=elektrobit.com; dkim=pass (signature was verified)
 header.d=elektrobit.com;dmarc=pass action=none header.from=elektrobit.com;
Received-SPF: Pass (protection.outlook.com: domain of elektrobit.com
 designates 40.93.13.72 as permitted sender) receiver=protection.outlook.com;
 client-ip=40.93.13.72; helo=DS2PR08CU001.outbound.protection.outlook.com;
 pr=C
ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none;
 b=Eza6aFsbNfGxfxgIflKMn1QYcVsIPU2fYEcPELTv9Lr4QUaXco2k+CAeMNBGqjRpEQcE0OI+zDr8fWa2Wb5RSxaum8xDQkNF7lwfGppo0CYUkSDsjJkfUoFxnM2rk6Yp6s3kx/6HFkTgLwv/ZwA7R4eYgA6UXuysY0eYPox4b0kBDzSz5+nKR2vSwplpdGAAwhGwPZ7kYEFcFyqK3PBZiHasXMFI3Icx0raxF80sInZZzCFc5D8m784voFAhq5bO+KM+2V/v92ybz+u9tWFxgpwVVa7SV0jDK0dVl7KRCR8YhZdxXAd46KvxhmGZWw3FEr2Dk5FpK5Jesa3bcG3ICw==
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com;
 s=arcselector10001;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1;
 bh=rMAbdzkmZ5IVwEOyN/4S2RtyRj/t40Q5Se0zwlSipfc=;
 b=yQ6v1vi8Q8fAEhJUnJ+aT7+J8FtPlonCOy1u/2XHleh3A5u/RzlNLRlaQNHLPahWcY0nCMIWVF4Q7+xKlad16Fgvr76jdgO+c+vokKGICmGxVGP7+W+B/hT/1ij/l9nukzz07u2gITUqVZI5Opa2fDJPqYaTvQ4bTzPJAfwgAmqD4tf+MBxBLSD8dJULdRTeEM7G0R3pN/sfjjbd0W9fOMLEXzkVGXqvbhaitlymPvAYVOlSqv0HqIEpeZjsmb5bUyIm5CrHfeVl8gQ7hhFVMCtvr9J7y0HHOQtalCA9lOSRX+/fAh2jtoC00YPnnwtAinN8SdeCkRbaX3GgkvSBQw==
ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass
 smtp.mailfrom=elektrobit.com; dmarc=pass action=none
 header.from=elektrobit.com; dkim=pass header.d=elektrobit.com; arc=none
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=elektrobit.com;
 s=selector1;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck;
 bh=rMAbdzkmZ5IVwEOyN/4S2RtyRj/t40Q5Se0zwlSipfc=;
 b=GMjt5lBIh4iB+TpZD719z1AJYza7nPMFhTYse8QVnC3I+byKU5woR5HWqbswMpp1m5sCipUvI5yF3WNYZ14eY1zjoaCp3RG+l14IUBeta1EE1B9KpQ5Unq5Ag0RHS9epxBeCIYeFX3dxI4zFmP0veht6ZlztbY/WtJRdfP0eYOU=
From: "Spangler, Rose" <Rose.Spangler@elektrobit.com>
To: Tamas K Lengyel <tamas@tklengyel.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>,
	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.pau@citrix.com>, Teddy Astie <teddy.astie@vates.tech>
Subject: Re: [RFC PATCH v6 08/43] altp2m: Rename p2m_*_altp2m functions and
 move declarations out of p2m.h
Thread-Topic: [RFC PATCH v6 08/43] altp2m: Rename p2m_*_altp2m functions and
 move declarations out of p2m.h
Thread-Index: AQHc0Q08g9UjbgeVPU23tPISZnL/sLXpdhuAgAAVnXI=
Date: Tue, 21 Apr 2026 14:07:09 +0000
Message-ID:
 <CH3PR08MB8735846D3C525C40DE983AAC912C2@CH3PR08MB8735.namprd08.prod.outlook.com>
References: <20260420213206.208750-1-Rose.Spangler@elektrobit.com>
 <20260420213206.208750-9-Rose.Spangler@elektrobit.com>
 <CABfawh=trqX6Gx3udVpaYDiLRcG+99SHNmK4s9f5pjmNbCMM1A@mail.gmail.com>
In-Reply-To:
 <CABfawh=trqX6Gx3udVpaYDiLRcG+99SHNmK4s9f5pjmNbCMM1A@mail.gmail.com>
Accept-Language: en-US
Content-Language: en-US
X-MS-Has-Attach:
X-MS-TNEF-Correlator:
msip_labels:
Authentication-Results-Original: dkim=none (message not signed)
 header.d=none;dmarc=none action=none header.from=elektrobit.com;
x-ms-traffictypediagnostic:
	CH3PR08MB8735:EE_|CH3PR08MB9275:EE_|SJ5PEPF000001EC:EE_|DS0PR08MB10938:EE_
X-MS-Office365-Filtering-Correlation-Id: 46fc4ad9-f930-41ab-e4cd-08de9faf4d63
X-SM-outgoing: yes
X-MS-Exchange-SenderADCheck: 1
X-MS-Exchange-AntiSpam-Relay: 0
X-Microsoft-Antispam-Untrusted:
 BCL:0;ARA:13230040|366016|1800799024|7416014|376014|38070700021|22082099003|56012099003|18002099003;
X-Microsoft-Antispam-Message-Info-Original:
 Va2uBBWZfPoCZh6Vlp1g85DgHDjLh4UiVflYNFNb0Lem8Ku/6AtISkZr7DCdY/nKxUJzSFhUbMofWz6naJ6CMxPq7NCP/X5wSgX5hCaRb/mH7leNV+gb+JMZ8WpdrzNVf+YtM3p3IWyM1TvqHuUghiA7a3yoaPu6S2WeTeBNVnUGx90UtRTjsUs4DacV4BYV6ED6K9x+WA/o35ePEB+zFQoxUSopU5c0raWRSINbVxB1Fs239Wn0BJpvCGwC1iHOJ5El5akSXzxA7PhaKJ51kGpmVV8bBEQm7ZByejh5Nx0IzzLkgODnlZLuKySeKekWbMi+iJlh29qdR3HQjzsEeeqsr3M6YOzn1R9CL8Sqa67dITTQTSex/VBEFEVZdo4nUpB9spCMrrG++e0Wj4Sv3Zwk57UM2B9oC5G4kr6zgimCnSVSfm3pc5IaYw2VqvW1l+i1gxsD44rXfLZqPxeCu5SmJvHvsqEMcJmmbPWFdAd3shnN61kap2r+CXN+h+UM0ZZKCN5GLbzQiByuWr/zvP2zygMsF9a7mcAobNHfUh8KpKyJ21qfxn7CRnSahDLICDdP9poDwGoddPEyJ+vtg0AfGsuAl5UWFxqPlKix3XAS5ByU9feyO+gZATMFacmPV1JCnJRz4e70n2Hg8s5dpNOhySuWVQZGLy6ji3UuV5LJbo1H7peI5iGxlL4UJwiXgDaBYTRpjwgslfd13Wew5wvFHC5d0Zx1edPUv8bAOAHTndV7xf+BpphXI2bdYtlIS9m/1xfGh1DIwrvRLiqc73JlTqbA4t6IAeu7zYXCs6o=
X-Forefront-Antispam-Report-Untrusted:
 CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:CH3PR08MB8735.namprd08.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(366016)(1800799024)(7416014)(376014)(38070700021)(22082099003)(56012099003)(18002099003);DIR:OUT;SFP:1102;
Content-Type: text/plain; charset="iso-8859-1"
Content-Transfer-Encoding: quoted-printable
MIME-Version: 1.0
X-Exchange-RoutingPolicyChecked:
 hN3HgwlLo6agyIAoGJ323jfvDgQDcnaxRVkLGzhxOXHTfU7nmrAAoWn65xquMv8syk0QeX9WObrZiixIJIAviHC3Ww2SfWG+jSnID1jxKF2C10yB53gT7WmNEV/Pc9oS86tIQg/aHqG0bdiDEx2u5WwBB/Io7lCDuD63p4a6zqDh2qrSwbP4x0LxVe04LQ92c/mdBZUXWvJXNGEGr9huI9wBrs0Wn9IH8ZUxRjFFjqcLDiq2FrjZdXGuqqVqJ3leAeFtDSsjOMWXBF9pevd8ErBKbVO4tMZZOd1IetSkO+uOLLCwhcWgF7ykbctlWs3ZhPMnog56i3R7z9rzpgU4Pw==
X-MS-Exchange-Transport-CrossTenantHeadersStamped: CH3PR08MB9275
X-EOPAttributedMessage: 0
X-MS-Exchange-SkipListedInternetSender:
 ip=[40.93.13.72];domain=DS2PR08CU001.outbound.protection.outlook.com
X-MS-Exchange-ExternalOriginalInternetSender:
 ip=[40.93.13.72];domain=DS2PR08CU001.outbound.protection.outlook.com
X-MS-Exchange-Transport-CrossTenantHeadersStripped:
 SJ5PEPF000001EC.namprd05.prod.outlook.com
X-MS-PublicTrafficType: Email
X-MS-Office365-Filtering-Correlation-Id-Prvs:
	062531d0-de48-4225-80d9-08de9faf474c
X-Microsoft-Antispam:
	BCL:0;ARA:13230040|704162011799003|1800799024|376014|7416014|14060799003|82310400026|156008|36860700016|35042699022|22082099003|18002099003|56012099003;
X-Microsoft-Antispam-Message-Info:
	=?iso-8859-1?Q?nKI6DqFWh+odrzMjNcNAS7sLkVRDzsXLtlcYC4xKr9VXtbgadBnIhnIO6m?=
 =?iso-8859-1?Q?DHAGuz5Z2exXaPbgn0/hZgzj3TlSsm3xGcLAxnKquutkWV14xKLFCSHyFJ?=
 =?iso-8859-1?Q?mDpl75X4fPcGX1VPbajBSIptZMFCT9GNquRYEfbssB8bSBOFIF4RweNRmN?=
 =?iso-8859-1?Q?nCyw4kniGS2VB6ZsafKJI4SfAAMpMl9QFDNK8tgztezcNPI43ZBAMSnk/8?=
 =?iso-8859-1?Q?THPf9Fk9Oi9h+gRsUbdFHuAlWshVBSvEhYK+BAOIax/iago3uHomZ6+rry?=
 =?iso-8859-1?Q?QCQWaftdeiUH+bWPNX/9JmSOZzb2f27/fwjNfyeqIOLYO/BcWnRCn6tKOO?=
 =?iso-8859-1?Q?IN6cAj9C9I56AMG9PFWfZEgy6C9bxrpk8f+CRt4E/ZSV0Xp5iX5r2/vrtX?=
 =?iso-8859-1?Q?DbPBL1E+iTC3ivqr88Si0uSbgTjWTD70yLYeF77Q2+8dqB7+n2/HMqP3Mh?=
 =?iso-8859-1?Q?mmY8ii71abbOxFJ5AJhhPBhbsDGDDDYL1xy2Ej/RsGYXZa1NiM3sBvtd8g?=
 =?iso-8859-1?Q?jzhleUXSPObEOc4iS5MvaVNFtwnBmwvEL7erNSdoM9+B6x8E0cVva3X/fY?=
 =?iso-8859-1?Q?BbEH5CaYxUocjmVgeCoOPsJMpa+rsGKDYodn11Gu0g7I8ePn8V8P3VxjWE?=
 =?iso-8859-1?Q?I9n7OqqDvNlTs3evEePVmefZM5N/jOoYjuBR8fKqZzdhEjrTmBBfWSBTb0?=
 =?iso-8859-1?Q?mj+21px0i6oEhAJcufHQs2Q5U/Twjvm/12qnhU9XDlqILZRf+PpG+vYgCb?=
 =?iso-8859-1?Q?UlmU/KteayIiuE2/Li/bAYF34Yc6buDSls9MlmOnWeCkJHfwCZGlbhWPJU?=
 =?iso-8859-1?Q?K6AIBEhPl34Lf9hDaoHPm207t9iTm61R10CYg8uvM3LnSehVdOk7kVLWqS?=
 =?iso-8859-1?Q?RU031NxRfxPWhx46xgub1XskSG8jh3eMBE40Avf3B1744tdZIVmwcfzcVH?=
 =?iso-8859-1?Q?dt0Z72z3DLbOK5acMrN11gU9db0d7zjwchpiMlGx8d/KJ+c36p4UbsN8+l?=
 =?iso-8859-1?Q?Er4di2Qd0TsPm93nc9Mku7nL+AqYqxvXWLLz/uMdYsetVgcnyTpykOUeM/?=
 =?iso-8859-1?Q?GPsOz95jRtWRXkUN8T30mi0x6/DPVvMNTA/AOOW+tkYVgfz7TWH4f7hM61?=
 =?iso-8859-1?Q?kTwnhkuSJ3zp66VSlN3ieO6CW1hJA=3D?=
X-Forefront-Antispam-Report:
	CIP:4.79.107.243;CTRY:US;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:DS2PR08CU001.outbound.protection.outlook.com;PTR:mail-ds2pr08cu00100.outbound.protection.outlook.com;CAT:NONE;SFS:(13230040)(704162011799003)(1800799024)(376014)(7416014)(14060799003)(82310400026)(156008)(36860700016)(35042699022)(22082099003)(18002099003)(56012099003);DIR:OUT;SFP:1102;
X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1
X-MS-Exchange-AntiSpam-MessageData-0:
	JNh/0st8fKYb7DQsFRzW67MZZJDatAoJzEoRp4DErSbFtyEFEQdiHBLrkxE0KlKjx4qdS4c8DcWhDxAZmSSnd9WSTp/o2/yTRki6gTf415MRjQPTIGPw6PJA8UmNjisV1Mq+yiRDyt/+WDItM5OOB9X2/3S7fdXmYt2J0zZKsmBnHuzWWyEQVoFcgUuBTU/lr3QJgTvC2GPhufGvcatr56WlHSQj6tmtZQ9Y5iiiOsmVc30cXMpHo7TxmsHc3Qom143dHtd/LUYJghOcGv2AsblXT2HfIONHHkPZtlwg04CwcSyuhrhgh3TQ8TaG2xSeSAcDzSNNLXGxlvyLXQwtFgUU+0SMM6eXTXR2si63PN32AZPmPfq5zBzW7tnawO79Pqv7W2oD+lChEOaljDEnYDW9cRsTHF4I6vBMNK4YJOscX2C9OX6ujVMrQvZDYR9C
X-OriginatorOrg: elektrobit.com
X-MS-Exchange-CrossTenant-OriginalArrivalTime: 21 Apr 2026 14:07:19.7089
 (UTC)
X-MS-Exchange-CrossTenant-Network-Message-Id: 46fc4ad9-f930-41ab-e4cd-08de9faf4d63
X-MS-Exchange-CrossTenant-Id: e764c36b-012e-4216-910d-8fd16283182d
X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=e764c36b-012e-4216-910d-8fd16283182d;Ip=[4.79.107.243];Helo=[usbth1es003.ebgroup.elektrobit.com]
X-MS-Exchange-CrossTenant-AuthAs: Internal
X-MS-Exchange-CrossTenant-AuthSource: TreatMessagesAsInternal-SJ5PEPF000001EC.namprd05.prod.outlook.com
X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem
X-MS-Exchange-Transport-CrossTenantHeadersStamped: DS0PR08MB10938
X-purgate-ID: tlsNG-d25034/1776780445-F7C1FCF5-7301F3AC/0/0
X-purgate-type: clean
X-purgate-size: 998

>The following function names could reasonably drop the _altp2m suffix:=0A=
>=0A=
>=0A=
>> - p2m_get_altp2m -> altp2m_get_altp2m=0A=
>> - p2m_set_altp2m -> altp2m_set_altp2m=0A=
>> - p2m_reset_altp2m -> altp2m_reset_altp2m=0A=
>> - p2m_activate_altp2m -> altp2m_activate_altp2m=0A=
=0A=
I used these names to try to differentiate between these functions, which=
=0A=
operate on a single altp2m view, and the altp2m_init / altp2m_teardown /=0A=
altp2m_flush functions, which operate on all the views of a domain. For exa=
mple,=0A=
without the suffix I don't think it's necessarily immediately obvious that=
=0A=
"altp2m_activate" or "altp2m_reset" operate on only a single view. That bei=
ng=0A=
said, some of the other functions such as "altp2m_change_gfn" and=0A=
"altp2m_get_or_propagate" don't follow this convention so I could go either=
 way=0A=
on this, I just think the suffix /could/ provide a bit more clarity for the=
se=0A=
functions.=0A=
=0A=
Best,=0A=
Rose=


From xen-devel-bounces@lists.xenproject.org Tue Apr 21 14:23:41 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 21 Apr 2026 14:23:41 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1289029.1569257 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wFC0a-0003LN-G7; Tue, 21 Apr 2026 14:23:24 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1289029.1569257; Tue, 21 Apr 2026 14:23: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 1wFC0a-0003LG-Bk; Tue, 21 Apr 2026 14:23:24 +0000
Received: by outflank-mailman (input) for mailman id 1289029;
 Tue, 21 Apr 2026 14:23:23 +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 1wFC0Z-0003LA-4y
 for xen-devel@lists.xenproject.org; Tue, 21 Apr 2026 14:23:23 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wFC0Y-00433u-FG
 for xen-devel@lists.xenproject.org; Tue, 21 Apr 2026 16:23:22 +0200
Received: from [10.42.69.7] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <andrew.cooper@citrix.com>)
 id 69e78852-bab6-0a2a0a5309dd-0a2a4507cf10-16
 for <xen-devel@lists.xenproject.org>; Tue, 21 Apr 2026 16:23:22 +0200
Received: from [52.101.56.49]
 (helo=BN1PR04CU002.outbound.protection.outlook.com)
 by tlsNG-ef75cf.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.1)
 (envelope-from <andrew.cooper@citrix.com>)
 id 69e78858-229c-0a2a45070019-346538317568-3
 for <xen-devel@lists.xenproject.org>; Tue, 21 Apr 2026 16:23:21 +0200
Received: from CH8PR03MB8275.namprd03.prod.outlook.com (2603:10b6:610:2b9::7)
 by PH7PR03MB7265.namprd03.prod.outlook.com (2603:10b6:510:24c::7)
 with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9846.16; Tue, 21 Apr
 2026 14:23: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%6]) with mapi id 15.20.9846.016; Tue, 21 Apr 2026
 14:23: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=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=QWsrHa7umByzRyC71G+b65BKtd0jophrte0N/HOzsfxTvylmcLvZAoLA1ehVhInKmDCly7N0LjDiPllYBIpbVXAGJAT7zAJoYQ9/o1ri8/o5WrzyY4JZ9WyjLFb5ATS7OJam8q26xSwUOfNloHOYN4ZDERQvz23gil7e3AdsA4Jc4kNQvvTIPUKmifBCkNrfVv2CWAUQHcumvvoWRHzkuE3U3SsqGK5PG7vi3dhRNmd/c6QqXisq/YpKGaqwPmBuSrRKuJGwFguFywpyilyuHnCX5s3ZrB6ovFHB9RR+mPi/k84gBL6oCkb0CdPFlX+PCVboO2wQwOf6fK6TvWzreg==
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com;
 s=arcselector10001;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1;
 bh=JUtIv1ewb4U84lSV8uGYFOlJvG8VvcaZd/pFNzJBrLc=;
 b=YUYrTWIt9vcnHNSla6MhQ8JGBMEFnl79fUScdzvycbdsD+4A164yQSodhi2XuARxu8UwjxiANkUnCV1kR44uvGusbPiNAhhRONlaxQ1CUqAYjzfdjcOIHaa4FQqDDnR/6E7A50+8M0Ya8exBpINbeKit3yrI4tAn4Z/6gAfZjnlJ/CnNdKx9IWMnRdjL7DktZJrJselCVGdt31Oz6MTk5FqAWZiaqkT1MFdgymFzbXOfaAy1x5XRvUF3ukFm2V41wnGY4bziGZa/LZDJIIkr7GZl696em9rSHU4jkMj7dCp4e4sLG9geoqlgnhBG+WGxPK7cI/eIgWFzXv+2leGgog==
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=JUtIv1ewb4U84lSV8uGYFOlJvG8VvcaZd/pFNzJBrLc=;
 b=uiNRNgPw/OYcHA79Onr8u5EkFHjL7yyXmfJqflMB7tymSRuENUHTZVyg0bxHzYLd8HK9zJ7JzfPbFGuzt3DHZ1EVa714YQNbsESRUmovyH0XPdE6zH2BzjGaZJulcxt/fvc99wxKL02IfxKu3J6G7khN9rqf66CeXNn2QwDKY44=
Authentication-Results: dkim=none (message not signed)
 header.d=none;dmarc=none action=none header.from=citrix.com;
Message-ID: <5787a185-0963-4c4f-94d3-d464871a88be@citrix.com>
Date: Tue, 21 Apr 2026 15:23:13 +0100
User-Agent: Mozilla Thunderbird
Cc: Andrew Cooper <andrew.cooper3@citrix.com>, roger.pau@citrix.com,
 jbeulich@suse.com, jason.andryuk@amd.com
Subject: Re: [PATCH v5 2/2] x86/svm: Use the virtual NMI when available
To: Teddy Astie <teddy.astie@vates.tech>,
 Abdelkareem Abdelsaamad <abdelkareem.abdelsaamad@citrix.com>,
 xen-devel@lists.xenproject.org
References: <cover.1772109484.git.abdelkareem.abdelsaamad@citrix.com>
 <29068558780bd9c6182d7bd74b357acc44409bfe.1772109484.git.abdelkareem.abdelsaamad@citrix.com>
 <1776780264.8631fc262581453bbf619ec5b2062170.19db05b44aa000f373@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: <1776780264.8631fc262581453bbf619ec5b2062170.19db05b44aa000f373@vates.tech>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
X-ClientProxiedBy: LO4P302CA0042.GBRP302.PROD.OUTLOOK.COM
 (2603:10a6:600:317::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_|PH7PR03MB7265:EE_
X-MS-Office365-Filtering-Correlation-Id: 8684ae53-a433-4e3e-a23f-08de9fb187d0
X-MS-Exchange-SenderADCheck: 1
X-MS-Exchange-AntiSpam-Relay: 0
X-Microsoft-Antispam:
	BCL:0;ARA:13230040|1800799024|366016|376014|18002099003|22082099003|56012099003;
X-Microsoft-Antispam-Message-Info:
	PI/IJ0fKS20Hi4GquUYNNZkdATQY2JipCsk8Rn8Ab34DZHi2XAtNEVLxO4Glue9qDDOLiq6G59rumo8iL06pcHFKwAyU6JiDi6W19SzbAZXcdLi6LLCxnz9MEkS0BvePoxhHHupST1lZNvqvAB54zTImsEpKpsDeGC0jSSRg3XbSA+pDxcC1BOa5oxTlowCnOMuZo80u6Ux9US2Kf3E+PfgIBmp9xwQ7JGG5oh5zfKg2FpfOGMpht1Zpgysl5lvzACXfmqkUiOjjJeF3XsGzr1/x7kaiR3c2g5QRBkyVYQaruyN8HT1/Rqid8eZZSi24IUML3YGPZRfvbviSVgj2bwFScC/cE/Ab7XY3svAmFcLmCAz54LQ3XctpQU2yb6vx4oIcfe1wZtWRTv8lu7MzjeOb1vGwY1tdW1M2zBuF1nULEgu7qzpBOC2bI88EpiyYFbQYvapvdz1var7NEXI4tmOD7UbpyKo4vaIU/R/BlyvMo+Vs5FvnlBDwYdLvX3pf4i4S+BFk1Dy2A5qfT7jl19RICnjhT0IYx7pXwvtVfcMmDedjafeV30ioIgCQEh6LyLQakZufl5UZCkb2+X+4Cxo9u6PZFYEGJMM6ikaTohTAKMVd+dpYIDvPq7OpxRh+cbI6hxZr4XPadkssHeWZZdvfJAMQfUiQBZGjiqkcbkKrO0Af9Qr3BHti8TB7MCLHYkinmFmEHK0/bpM48VhN38Kcxa+UybhKXWInuzIjDh4=
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)(18002099003)(22082099003)(56012099003);DIR:OUT;SFP:1101;
X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1
X-MS-Exchange-AntiSpam-MessageData-0:
	=?utf-8?B?SVM3aWp1cS9mVXl0Q28ycTJvTThvTWg3NFFtUVA1eUZhaWY4Y0Z4OHlkNEpV?=
 =?utf-8?B?R1NMbDQvUkI4aHJhdGV3bzQrdmdoR3NvSVpScTRCWDUvc1pCUm9BVzFYYm8z?=
 =?utf-8?B?djU3T1dqUDZRekJkd2IvTkZUZUNSM0gzakJXR3ZyNjl3UmhXZnVSRjN4TDEx?=
 =?utf-8?B?MS9MM3o3TzRYU2hQVUV3Mm14L2ptVmhKbi9PRlV4S29GYkxZbjgvbEswTjJo?=
 =?utf-8?B?NlRWbWZTQ00yVklRSThRbGVsKzdRRlNxaFdXblFjRkpOM08rL3ZTSWpNM3Y4?=
 =?utf-8?B?dTdZOXVPeC9QdFJweUVVME9BVktZM2pKb3dsdTVIWk5mVkoyWExxYU1meUtn?=
 =?utf-8?B?WnhmaGxJSVlDQUtLSC9QSTU2ZHZEZDBFNHVzaFdDQTNsUnRTSFFrQk9OaEg1?=
 =?utf-8?B?SDZwUTBON3FmekdjbExnNnByNUF2c2dBMGs4bVNDbXhuUnpESWM0OVB1c2R3?=
 =?utf-8?B?OVpmWXdISXdlWWhDNjdzZEkwcTVmRUhlKzR2UVpLYkh0VmF2OU4vTnVKL25C?=
 =?utf-8?B?R1RvWkpEUEVNSHdSSE5QTjFKMkxZK2t4OTNjMWRuN3d1WDhrMkMwVXN1Nmhp?=
 =?utf-8?B?UjBjUXdyblJuajBPdnNDVGJLMDllQXpJVXVyVGhkamdmcGtQRGc4YUhlekVW?=
 =?utf-8?B?TnZ6dnZLUzFQWU9vSXRoWnNEakJaUXVJVkQ4T0h3eWlsMU41SXkxdWkxSmlQ?=
 =?utf-8?B?cmJ3Q0VrVGhRd1pDc2JvQnFRdzNBUHc2UVZlcHd3VmR5R0xmcmVBajh3UWZv?=
 =?utf-8?B?QU5peEw4am9SODlPYkxreXdDYmpUVk50aXUyVlpuV2tLaUFNWGJYQXB5ZjF4?=
 =?utf-8?B?RUcvQlR2Zi9iZGJuVjQ5WnUzUXF2UHVCY0xWbDh0VnRLWE9SQ09ZVGcxTHdU?=
 =?utf-8?B?WS9KRTk1T1N0Vk1lNlVzQ2VnSDhUeFdxNTJYdTBCWWlWeDYyRWMwRUlGMjk2?=
 =?utf-8?B?dk1ETkJwcXFicks4MTNCVW5MNzB5TjFxLyt6dzgyYW8xRDBhYUNvUXQxY2lG?=
 =?utf-8?B?bWMvY0Q0L08rMFhwV0c4b2RzUEpHZENyYW5vWjRveVpuR3VVZGFHVGZ0Wnhw?=
 =?utf-8?B?elM5U1B5dStja3M4NTFRMTBhUkRVc3dNdEI0UHhKWWY3djBubHA0R0JMdDFC?=
 =?utf-8?B?YXNrbU1DdHc1ZUFFVU96ZnV5MHBBYWtIUzZ4a3ZPK1BTYmVwQjl0VUVvSlV1?=
 =?utf-8?B?OURiZnJGSTBDeFZ0bGZ5OXFWR3BkRlMwNndXMkZPbS9oSWp3ZjE5QWIwaTlW?=
 =?utf-8?B?cVBFNlpuM3pndGhzNjhzVjJ0RkgxSUQ1V1hzVi9zUnNvOXMzK3gzeUZiVk5h?=
 =?utf-8?B?dDBQU2Z1R255dTM4Yy8xQk5xL1RnZjJITlJVQUtsQis0cmdpTVR0QjFxbE9x?=
 =?utf-8?B?d2k1YllVWThoNnBwc0ZteEc5blFWMnBSMnBpRE5zK3A2elRJMk9TeTZpREJh?=
 =?utf-8?B?MTVwb3hiSWtGRDhSTGJYRUhPMDZoRCtKb0U1OUFiazlLVUVUR0VPaDBBRDRv?=
 =?utf-8?B?Y0YrQ3ZJWHF3R0tHVTN3QUVoOVJBaXJZN0Uyemt5Y3F2QmxOYWlTK0Y2S0VE?=
 =?utf-8?B?elh2OXZ6cWhnb2d3NUQwN2xzSmRGbkx1UEMzbWFiWm1TbHg1UmYrT1dsa0dK?=
 =?utf-8?B?dmVmUnZmWkt6SjFyODRaSUNhT3lsdmkvMXlMNWFYVGxtbXprQkxTU3ZGUk55?=
 =?utf-8?B?VGR5bzg0bVFkOXNEUSs2RDU4SFc1bnRDcTJseTZ1ZWUwdW9pSkt4MHFRcFVD?=
 =?utf-8?B?MnoxL3R6UXVTUDRMVmNQaWdzQkl3bXVLSUJyUFlzVzhjMlVEYmR4NE5jclBZ?=
 =?utf-8?B?SWVxcm9JSS9uaWFnUm9JdEVCSCtOMHI3elNjNVlnWEdEVjlJTUJ1dFRyVHJB?=
 =?utf-8?B?YzkrTlFMbXBCYTU2Z0oyRkVhYlF4QUJXbmlJeGdHQlYwK0Y5eWt0VkZCNURz?=
 =?utf-8?B?eXRCbVlmcStpRmtLV2Y4SkRMWXZldkMxN21HTHBRMGdYSCtsbFkxRkMrM0x2?=
 =?utf-8?B?b1kwbkErYUZ2UGJBL0N3MUZadjhmeVIwVnBwa2EzZXJ2T0hoK29Cc09DUDJp?=
 =?utf-8?B?T2tMRmYvTk5tZ3ZZVHJ2UjhEaStab0J2aGNIdUFwK0tPWlc1RWpsRzJCdEhx?=
 =?utf-8?B?djYvTG9oZzdVRU9EeHYzZ2NlZFBnbzVyVFNDL0tRREVWd21pdXRUQkpsSnRI?=
 =?utf-8?B?M1QrWkRJeHREVTJEREg4cGlicHFwdDB1aFlMWG0zT0p2Z0NxazNJMDBXUjN5?=
 =?utf-8?B?ZjdObFZvQWNpMGpJWXN0bG9uMzZHeUFJUkVmQ0RaQk5PUFIwRmpIdVB3THpx?=
 =?utf-8?B?UjZ6MWMwZXhNVURONlM3bGdZN0c0WkJrT093K0RYSnU0VWxXSytsaUdEVU1R?=
 =?utf-8?Q?785bWl/PU27HD61c=3D?=
X-OriginatorOrg: citrix.com
X-MS-Exchange-CrossTenant-Network-Message-Id: 8684ae53-a433-4e3e-a23f-08de9fb187d0
X-MS-Exchange-CrossTenant-AuthSource: CH8PR03MB8275.namprd03.prod.outlook.com
X-MS-Exchange-CrossTenant-AuthAs: Internal
X-MS-Exchange-CrossTenant-OriginalArrivalTime: 21 Apr 2026 14:23:17.0796
 (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: jG578XBhANw5eqxRbOZzjjRdZoERH8y/ev8Qz3qnatLhwqehKyqHPYTMVH5BqPgSfULTeobNhL6pf73O2X3y7TIL6UzBdGkCLg/oK7gA/SY=
X-MS-Exchange-Transport-CrossTenantHeadersStamped: PH7PR03MB7265
X-purgate-ID: tlsNG-ef75cf/1776781402-1505AC48-C223919D/0/0
X-purgate-type: clean
X-purgate-size: 2938

On 21/04/2026 3:04 pm, Teddy Astie wrote:
> Le 26/02/2026 à 14:23, Abdelkareem Abdelsaamad a écrit :
>> With the Virtual NMI (vNMI), the pending NMI is simply stuffed into the VMCB
>> and handed off to the hardware. There is no need for the artificial tracking
>> of the NMI handling completion with the IRET instruction interception.
>>
>> Adjust the svm_inject_nmi to rather inject the NMIs using the vNMI Hardware
>> accelerated feature when the AMD platform supports the vNMI.
>>
>> Signed-off-by: Abdelkareem Abdelsaamad <abdelkareem.abdelsaamad@citrix.com>
>> ---
>>   xen/arch/x86/hvm/svm/intr.c | 6 ++++++
>>   xen/arch/x86/hvm/svm/svm.c  | 1 +
>>   xen/arch/x86/hvm/svm/vmcb.c | 2 ++
>>   3 files changed, 9 insertions(+)
>>
>> diff --git a/xen/arch/x86/hvm/svm/intr.c b/xen/arch/x86/hvm/svm/intr.c
>> index 6453a46b85..112a393211 100644
>> --- a/xen/arch/x86/hvm/svm/intr.c
>> +++ b/xen/arch/x86/hvm/svm/intr.c
>> @@ -33,6 +33,12 @@ static void svm_inject_nmi(struct vcpu *v)
>>       u32 general1_intercepts = vmcb_get_general1_intercepts(vmcb);
>>       intinfo_t event;
>>   
>> +    if ( vmcb->_vintr.fields.vnmi_enable )
>> +    {
>> +        vmcb->_vintr.fields.vnmi_pending = 1;
>> +        return;
>> +    }
>> +
>>       event.raw = 0;
>>       event.v = true;
>>       event.type = X86_ET_NMI;
>> diff --git a/xen/arch/x86/hvm/svm/svm.c b/xen/arch/x86/hvm/svm/svm.c
>> index 18ba837738..815565c33f 100644
>> --- a/xen/arch/x86/hvm/svm/svm.c
>> +++ b/xen/arch/x86/hvm/svm/svm.c
>> @@ -2524,6 +2524,7 @@ const struct hvm_function_table * __init start_svm(void)
>>       P(cpu_has_tsc_ratio, "TSC Rate MSR");
>>       P(cpu_has_svm_sss, "NPT Supervisor Shadow Stack");
>>       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");
>>   #undef P
>>   
>> diff --git a/xen/arch/x86/hvm/svm/vmcb.c b/xen/arch/x86/hvm/svm/vmcb.c
>> index e583ef8548..e90bbac332 100644
>> --- a/xen/arch/x86/hvm/svm/vmcb.c
>> +++ b/xen/arch/x86/hvm/svm/vmcb.c
>> @@ -184,6 +184,8 @@ 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;
>> +
>>       return 0;
>>   }
>>   
> What is the status of this ?
>
> IIRC the main concern was regarding whether or not the vnmi_pending bit 
> requires to set the clean_bits. But it seems it is not the case here.
>
> Do we have a official confirmation on that ?

The status is it's waiting on me to do some additional testing as part
of reviewing.

I think it's correct now, but I want to confirm some corner cases.

I have confirmation from AMD in private, and there is not a cleanbit
involved.  No ETA on if/when the docs will be adjusted.

~Andrew


From xen-devel-bounces@lists.xenproject.org Tue Apr 21 14:27:12 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 21 Apr 2026 14:27:12 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1289041.1569265 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wFC4E-0003vI-WC; Tue, 21 Apr 2026 14:27:10 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1289041.1569265; Tue, 21 Apr 2026 14:27: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 1wFC4E-0003vB-TX; Tue, 21 Apr 2026 14:27:10 +0000
Received: by outflank-mailman (input) for mailman id 1289041;
 Tue, 21 Apr 2026 14:27:09 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <thuth@redhat.com>) id 1wFC4D-0003v5-No
 for xen-devel@lists.xenproject.org; Tue, 21 Apr 2026 14:27:09 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wFC4C-00BXYE-W5
 for xen-devel@lists.xenproject.org; Tue, 21 Apr 2026 16:27:09 +0200
Received: from [10.42.69.5] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <thuth@redhat.com>)
 id 69e78937-e002-0a2a0a5209dd-0a2a4505e5dc-20
 for <xen-devel@lists.xenproject.org>; Tue, 21 Apr 2026 16:27:08 +0200
Received: from [170.10.129.124] (helo=us-smtp-delivery-124.mimecast.com)
 by tlsNG-c201ff.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.1)
 (envelope-from <thuth@redhat.com>)
 id 69e7893b-aaa8-0a2a45050019-aa0a817cdedf-3
 for <xen-devel@lists.xenproject.org>; Tue, 21 Apr 2026 16:27:08 +0200
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-673-aNzvu0kYNpe-BCfSi7bC5Q-1; Tue,
 21 Apr 2026 10:27:05 -0400
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 95FF91956089; Tue, 21 Apr 2026 14:27:04 +0000 (UTC)
Received: from thuth-p1g4.redhat.com (unknown [10.44.49.140])
 by mx-prod-int-06.mail-002.prod.us-west-2.aws.redhat.com (Postfix) with ESMTP
 id 7BDB4180047F; Tue, 21 Apr 2026 14:27: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=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=1776781627;
	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=K8OFS7cyWvYenINAYlZhvmiwwCjJ2oV+n9qF7Hqe8c0=;
	b=YnNi/rLOPBxSPkcE5Yw2A8hO/PgYOV7w5jLvQTQ9FEfIIjmqsKe8bLBILwAPWt/ONFRYjl
	n7PdplwSNwrc9TxA0mkKHsszuhnt/YLBvW73JdziqdbeA1FCwklvI9OkzuZh0izWH3Tnwm
	5gta37YlAHXmt4r/h0V1gj0ilR4eQEo=
X-MC-Unique: aNzvu0kYNpe-BCfSi7bC5Q-1
X-Mimecast-MFC-AGG-ID: aNzvu0kYNpe-BCfSi7bC5Q_1776781624
From: Thomas Huth <thuth@redhat.com>
To: Juergen Gross <jgross@suse.com>,
	Stefano Stabellini <sstabellini@kernel.org>
Cc: Oleksandr Tyshchenko <oleksandr_tyshchenko@epam.com>,
	xen-devel@lists.xenproject.org,
	linux-kernel@vger.kernel.org
Subject: [PATCH] xen/arm: Replace __ASSEMBLY__ with __ASSEMBLER__ in interface.h
Date: Tue, 21 Apr 2026 16:27:01 +0200
Message-ID: <20260421142701.548978-1-thuth@redhat.com>
MIME-Version: 1.0
X-Scanned-By: MIMEDefang 3.4.1 on 10.30.177.93
X-Mimecast-MFC-PROC-ID: Fo9w7dORjlthjzKwaPWORily0J5vC8aJ69GQ_ePpzDg_1776781624
X-Mimecast-Originator: redhat.com
Content-Transfer-Encoding: 8bit
content-type: text/plain; charset="US-ASCII"; x-default=true
X-purgate-ID: tlsNG-c201ff/1776781628-E09AD443-79164B1D/0/0
X-purgate-type: clean
X-purgate-size: 1269

From: Thomas Huth <thuth@redhat.com>

While the GCC and Clang compilers already define __ASSEMBLER__
automatically when compiling assembly code, __ASSEMBLY__ is a
macro that only gets defined by the Makefiles in the kernel.
This can be very confusing when switching between userspace
and kernelspace coding, or when dealing with uapi headers that
rather should use __ASSEMBLER__ instead. So let's standardize now
on the __ASSEMBLER__ macro that is provided by the compilers.

Signed-off-by: Thomas Huth <thuth@redhat.com>
---
 Note: This patch has been split from an earlier patch series of mine
 to ease reviewing.

 include/xen/arm/interface.h | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/include/xen/arm/interface.h b/include/xen/arm/interface.h
index c3eada2642aa9..61360b89da405 100644
--- a/include/xen/arm/interface.h
+++ b/include/xen/arm/interface.h
@@ -30,7 +30,7 @@
 
 #define __HYPERVISOR_platform_op_raw __HYPERVISOR_platform_op
 
-#ifndef __ASSEMBLY__
+#ifndef __ASSEMBLER__
 /* Explicitly size integers that represent pfns in the interface with
  * Xen so that we can have one ABI that works for 32 and 64 bit guests.
  * Note that this means that the xen_pfn_t type may be capable of
-- 
2.53.0



From xen-devel-bounces@lists.xenproject.org Tue Apr 21 14:30:42 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 21 Apr 2026 14:30:42 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1289049.1569274 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wFC7Z-0005rh-Ep; Tue, 21 Apr 2026 14:30:37 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1289049.1569274; Tue, 21 Apr 2026 14: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 1wFC7Z-0005ra-B7; Tue, 21 Apr 2026 14:30:37 +0000
Received: by outflank-mailman (input) for mailman id 1289049;
 Tue, 21 Apr 2026 14:30:35 +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 1wFC7X-0005rR-Lo
 for xen-devel@lists.xenproject.org; Tue, 21 Apr 2026 14:30:35 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wFC7W-00BYS1-Nz
 for xen-devel@lists.xenproject.org; Tue, 21 Apr 2026 16:30:34 +0200
Received: from [10.42.69.6] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <Michal.Orzel@amd.com>)
 id 69e789ff-2eae-0a2a0a5409dd-0a2a4506e23e-26
 for <xen-devel@lists.xenproject.org>; Tue, 21 Apr 2026 16:30:34 +0200
Received: from [40.107.200.58]
 (helo=CH5PR02CU005.outbound.protection.outlook.com)
 by tlsNG-16d1c6.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.1)
 (envelope-from <Michal.Orzel@amd.com>)
 id 69e78a08-7371-0a2a45060019-286bc83a879b-3
 for <xen-devel@lists.xenproject.org>; Tue, 21 Apr 2026 16:30:34 +0200
Received: from CH2PR14CA0016.namprd14.prod.outlook.com (2603:10b6:610:60::26)
 by IA4PR12MB9811.namprd12.prod.outlook.com (2603:10b6:208:54e::18)
 with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9846.16; Tue, 21 Apr
 2026 14:30:29 +0000
Received: from DS2PEPF000061C3.namprd02.prod.outlook.com
 (2603:10b6:610:60:cafe::af) by CH2PR14CA0016.outlook.office365.com
 (2603:10b6:610:60::26) with Microsoft SMTP Server (version=TLS1_3,
 cipher=TLS_AES_256_GCM_SHA384) id 15.20.9791.48 via Frontend Transport; Tue,
 21 Apr 2026 14:30:29 +0000
Received: from satlexmb07.amd.com (165.204.84.17) by
 DS2PEPF000061C3.mail.protection.outlook.com (10.167.23.70) with Microsoft
 SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id
 15.20.9846.18 via Frontend Transport; Tue, 21 Apr 2026 14:30:29 +0000
Received: from SATLEXMB04.amd.com (10.181.40.145) by satlexmb07.amd.com
 (10.181.42.216) with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.2.2562.17; Tue, 21 Apr
 2026 09:30:28 -0500
Received: from satlexmb08.amd.com (10.181.42.217) by SATLEXMB04.amd.com
 (10.181.40.145) with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2507.39; Tue, 21 Apr
 2026 09:30:28 -0500
Received: from [10.252.147.171] (10.180.168.240) by satlexmb08.amd.com
 (10.181.42.217) with Microsoft SMTP Server id 15.2.2562.17 via Frontend
 Transport; Tue, 21 Apr 2026 09:30:26 -0500
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@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=fTtwaSw+aVl4SH51/el9lBT2yK1EcyEyr6lqy2TgWq5PItBDL0caSo9y6CYfn8nOpAsaKQumNCq6F2mESw10nVCUDEzO4S7oJaP9HFvf/CBta2KJUf6qDlaZDabqMzU1Fl4VaVKya45tJp5iO4QFwYVRVERU4ziRXnA5vGzG/zXllUQLfiY+6CIsgC6qDo3pEmPY/eMlziminOoVRXLXE3orVSZTMrpQdm6TX+9j05VkaypMvtQnGcisGdQu2nN9zLFSOnk7nmrGGBxEnhBN5Fj8ynpAp63kXWvL1Zzd5JPKAHQcJOenPdfJt4fyEHTeMrfEMfZj2nf4NnZRPNvUzQ==
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com;
 s=arcselector10001;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1;
 bh=Rt4Cg6ARxQ+ti9bjvQsDIwEWRrHzxjbCHaD1tjnpnOQ=;
 b=KRs+BD7WeNONiIzAZdQuWy6cP2ulGv2IrS2jmyN+226KQrd6++clA9MGkHUcDsl6CaGGndstHqJt5zce6e0yrRzlN6ydo8oZiAukJJCTynoJ1PgTV5y0JrgKy6teJVju2tOQfpF/zkbXBm21jDLGNNIPaocVquYdoHnAplt+a7d/ufRVyeHFKTPCHnzjY+KWuuDNaKt/8UjN5ADh4zF0xGYQHH5EGII414vQZATYAr1GnLC1LQSTIcHVNFkb39eWipl60gYT5LkNH0HK9qsipKHG5p6MSAnEZ5S72y/5UqUbtCYO+JHKj/PmaV6PWBuatZKmB56bsvNQkWRgnNmYSw==
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=Rt4Cg6ARxQ+ti9bjvQsDIwEWRrHzxjbCHaD1tjnpnOQ=;
 b=VF5K6Ou4uhicmzF+4kwgag2e/gQDHhQe3Q0UxAUzaDbTz4O11X0YwqhZkNucAG0NW4k/rf3kHi9+YGXKb5+c4aFvTGLi7vxkLs5DzVGBFiiDHskR2DNDXPmNqSscYU1fZwfrq3qCmpetp4dLNiQG+0xYgM+qpCQidb4YNPtnSTs=
X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 165.204.84.17)
 smtp.mailfrom=amd.com; dkim=none (message not signed)
 header.d=none;dmarc=pass action=none header.from=amd.com;
Received-SPF: Pass (protection.outlook.com: domain of amd.com designates
 165.204.84.17 as permitted sender) receiver=protection.outlook.com;
 client-ip=165.204.84.17; helo=satlexmb07.amd.com; pr=C
Message-ID: <9c54e3e2-949c-4f50-887e-9f98888c81f6@amd.com>
Date: Tue, 21 Apr 2026 16:30:25 +0200
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH] xen/arm: skip holes in physical address space when
 setting up frametable
To: Oleksii Kurochko <oleksii.kurochko@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>, Luca Fancellu <Luca.Fancellu@arm.com>
References: <20260417091124.39552-1-michal.orzel@amd.com>
 <5ae7ad4f-e7ef-462c-8a90-755d6f5936b6@gmail.com>
From: "Orzel, Michal" <michal.orzel@amd.com>
Content-Language: en-US
In-Reply-To: <5ae7ad4f-e7ef-462c-8a90-755d6f5936b6@gmail.com>
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: 8bit
Received-SPF: None (SATLEXMB04.amd.com: michal.orzel@amd.com does not
 designate permitted sender hosts)
X-EOPAttributedMessage: 0
X-MS-PublicTrafficType: Email
X-MS-TrafficTypeDiagnostic: DS2PEPF000061C3:EE_|IA4PR12MB9811:EE_
X-MS-Office365-Filtering-Correlation-Id: 3af373f1-8df9-4e3c-0c39-08de9fb2898c
X-MS-Exchange-SenderADCheck: 1
X-MS-Exchange-AntiSpam-Relay: 0
X-Microsoft-Antispam:
	BCL:0;ARA:13230040|36860700016|1800799024|376014|82310400026|56012099003|22082099003|18002099003;
X-Microsoft-Antispam-Message-Info:
	PTuBCgkEGfGybaatzH+ElB9N3/lMWfmlN2cpiTZNDJYsEmsTsBAPhvRpUhNvVZ22CToKpT49raXpIPdVREdCuehCAgwZY9GR9CvfTmZj/lSJJhPlpI/KcKaB4cEocT8tvZQqyF0UtOfIt7ytYGCa3XsIxdY3f7jK4oNsWg3N80t/rtCq0J41dqRfzkSI2o33NktOcL7NPLOWlOvuhF4ynwiCZYc9ErfzbPVTTI6LCW6CLoVdbLAHDkcGYSzvmb4xh4sg/PHXvsNI5CIbdUuJfg7DowAHH4ILqmQzWg9qS56cJzT+D9JGUT/FJSnyw2y27cBrnGHTUH8c8LF9SW9DOdbgo0uSka43eDRQc7tM4gHZMbRLV3SZxHWD57TmBYyjEapzj1nQJag0MllGqaJ1CbGAd8x0eTKWu4gol2u7Qd6gqhives0AMLFLAJv4bzaIlJiUJrVft125wMhNddER95PoUIkSF+qSBwnPMDvgcHtTeZvydfr8hW1OmcTCgryn6Eb9CPmSlH4RlC6YS01IyiyRJE1m43paoreWdhWW2bwgtTxY+kqSqrIAAmUV7rOKPxFPnAmS/YC9hjRXy9gmZ9CLnyK7tqQapuoVjecEzI5zNeaP3Q5bAbTIRf4nDNppXPh7DR7nZiSBD1oaVqkMm4y86Kg/gzCToy4rZV9Y8/cSgffXS6ZUCLm/bygO4RS0Pal3fB3ii0mDVu1p31IVmk8YWXP+MUrNUT+6NblupXvm4s2SCX+hoZ+aiLnNj5DUjp51g5tlg5YjdZSkZC/cBQ==
X-Forefront-Antispam-Report:
	CIP:165.204.84.17;CTRY:US;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:satlexmb07.amd.com;PTR:InfoDomainNonexistent;CAT:NONE;SFS:(13230040)(36860700016)(1800799024)(376014)(82310400026)(56012099003)(22082099003)(18002099003);DIR:OUT;SFP:1101;
X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1
X-MS-Exchange-AntiSpam-MessageData-0:
	Ona3yVn+fNktJ1KaWDji91Croo5WOO98HpSBgotTXE0rQfofOmRt3Q7qcYIVe84TXeW65OhMc0R5yeutHFchcxuKwF3MtaPdhe60OQplNpAiA+1eclU8yjB2Bx98bX5F1Y3t94gNJf9V03sM8c6NBYzLAF7Zk7Ew3nnuTG9fa4mDcRk2MLZnbALdt9mDgvzipFm6Ji0a40ltHb0rpQYggdqi2gkHCqdWhyEJEw+q+xIkRivNF9OO4OozPL/ijOab3KLUwiX6YoT1AzIGGRrsBYS4KtBmvuE9vSun/ixem3tHtfi+Pt7nAqwHzL1FcGYP/VJwpKFPOY4NgjyQSboP/O9r25ffgQ/X70nTzSxzlUbI9Jdphyu6NJf7KYSzrVSlrO2T/Uar0+no4bZi/mYA0VzHBD8c2Ih3Gy1RAeUyg7o9MWmrc2GJMXA59X0yR27Q
X-OriginatorOrg: amd.com
X-MS-Exchange-CrossTenant-OriginalArrivalTime: 21 Apr 2026 14:30:29.3102
 (UTC)
X-MS-Exchange-CrossTenant-Network-Message-Id: 3af373f1-8df9-4e3c-0c39-08de9fb2898c
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:
	DS2PEPF000061C3.namprd02.prod.outlook.com
X-MS-Exchange-CrossTenant-AuthAs: Anonymous
X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem
X-MS-Exchange-Transport-CrossTenantHeadersStamped: IA4PR12MB9811
X-purgate-ID: tlsNG-16d1c6/1776781834-50158D75-64DC150B/0/0
X-purgate-type: clean
X-purgate-size: 1991



On 21/04/2026 15:30, Oleksii Kurochko wrote:
> Hello Michał,
> 
> On 4/17/26 11:11 AM, Michal Orzel wrote:
>> Refactor setup_frametable_mappings() into init_frametable(), modeled
>> after x86's implementation. Instead of mapping one contiguous frametable
>> covering ram_start to ram_end (including holes), iterate the
>> pdx_group_valid bitmap to allocate and map frametable memory only for
>> valid PDX groups, skipping gaps in the physical address space. At the
>> moment we don't really take into account pdx_group_valid bitmap.
>>
>> This reduces memory consumption on systems with sparse RAM layouts by
>> not allocating frametable entries for non-existent memory regions.
>>
>> A file-local pdx_to_page() override is needed because the generic macro
>> in xen/include/xen/pdx.h does not account for ARM's non-zero
>> frametable_base_pdx.
>>
>> Update the MPU implementation to match the new init_frametable()
>> signature. Since MPU has no virtual address translation (ma == va),
>> hole-skipping is not possible and the frametable remains a single
>> contiguous allocation.
>>
>> Signed-off-by: Michal Orzel<michal.orzel@amd.com>
>> ---
>> We've been using this approach at AMD for a while now. Without this we would not
>> be able to boot some of our boards that have huge holes in the PA space, so I
>> consider this patch a great improvement.
>>
>> Two things to consider as a follow-up in the future:
>>   - change generic pdx_to_page, page_to_pdx to take into account offset that
>>     on x86 is zero but on other arches it is not. The page list code is
>>     for now unaffected because the offset cancels out,
>>   - use the same on RISCV.
> 
> Do you have such plans to do that for RISC-V?
My plan for this release cycle is to do this for Arm as we can observe great
improvement in space management. Other things that I mentioned I planned for the
future. I don't want to add new things on our plate in this release.

~Michal



From xen-devel-bounces@lists.xenproject.org Tue Apr 21 14:43:40 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 21 Apr 2026 14:43:40 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1289060.1569283 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wFCK4-0007x8-Fr; Tue, 21 Apr 2026 14:43:32 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1289060.1569283; Tue, 21 Apr 2026 14: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 1wFCK4-0007x1-Cp; Tue, 21 Apr 2026 14:43:32 +0000
Received: by outflank-mailman (input) for mailman id 1289060;
 Tue, 21 Apr 2026 14:43:30 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <jbeulich@suse.com>) id 1wFCK2-0007wv-P1
 for xen-devel@lists.xenproject.org; Tue, 21 Apr 2026 14:43:30 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wFCK2-007ug8-5n
 for xen-devel@lists.xenproject.org; Tue, 21 Apr 2026 16:43:30 +0200
Received: from [10.42.69.3] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <jbeulich@suse.com>)
 id 69e78cfe-5cb7-0a2a0a5109dd-0a2a45039320-42
 for <xen-devel@lists.xenproject.org>; Tue, 21 Apr 2026 16:43:30 +0200
Received: from [209.85.221.52] (helo=mail-wr1-f52.google.com)
 by tlsNG-33051d.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.1)
 (envelope-from <jbeulich@suse.com>)
 id 69e78d11-672d-0a2a45030019-d155dd34e892-3
 for <xen-devel@lists.xenproject.org>; Tue, 21 Apr 2026 16:43:29 +0200
Received: by mail-wr1-f52.google.com with SMTP id
 ffacd0b85a97d-43cf7683a28so2969269f8f.2
 for <xen-devel@lists.xenproject.org>; Tue, 21 Apr 2026 07:43:29 -0700 (PDT)
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-43fe4e3a174sm42278601f8f.18.2026.04.21.07.43.28
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Tue, 21 Apr 2026 07:43:28 -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=google header.d=suse.com header.i="@suse.com" header.h="Content-Transfer-Encoding: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=1776782609; x=1777387409; darn=lists.xenproject.org;
        h=content-transfer-encoding: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;
        bh=kScOhYjXmwFJgN4m8kBjWwOXFEoFlDk5G23Q0aVMLsE=;
        b=Xbg+4VC/4lTUAS2/7ZeHHGic18cDuwHeP1iuNKWV6FjUSVGYeO6d7356NGJBDd2SHL
         tLXrpaza3mIvgxHERBjZDy6YQyixoOhM3knvCeLXbip/ZjdYlu58r2ERtiGgWrdTE+2L
         lI5sd6DKOqGKCBUzVnErBFF956qMOxz5JXxFpKJrGJ72ra7KlxL8gL2ADYw61SKZ1QJN
         Hs0mV9ii0PxEH/L2ECiUeLOf6vmUodV4IH5b21vj9tKZt3N0VKdYWGljHYndfk+oF5Mb
         EoNGpp8ozEg/LJz0QsHBtJsn5uFGFHyDJrREiqSLKxNUn4TpHxQCBtXw5o0Tr8MU1fNR
         4J3w==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20251104; t=1776782609; x=1777387409;
        h=content-transfer-encoding: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;
        bh=kScOhYjXmwFJgN4m8kBjWwOXFEoFlDk5G23Q0aVMLsE=;
        b=SdYg1e4cRJgX630o6bIowHiL25e6ga9x3xdzcl7BS/9uWYmqZ/FDXCPnO/s/TUKQYA
         ZPl5GR8oE6dO9zCEEA4WRcqk66a/XigfJ10Oz/gWWuCGbQLUGvAf/yr1l2VUfF/Grliy
         d2BKJocAcEMEfhRFwgu1OqCaurmYtWqOQqXoZpgXqWl6L+cLTEfj5N838ql/5T76r8+0
         m1xyc9qk4vnECcjiPaPL4JTthhtY4SzqlxEihNh5BEH3ANx7sVcfBefkPUxxR+4PIXLl
         8Xr4obMAN3miIIlHzIXPdhC99OJrAxLyhqnKUCVLARh2C+tlh5pKHuZIvPoOkWRg/h24
         h+nA==
X-Forwarded-Encrypted: i=1; AFNElJ8MnMtpAGWWkET6ndEasK73gjYUdhY2pPsnF4K0uZsaA3HYJMqKAvTz0Q4IAevlDc9w493AI6573RU=@lists.xenproject.org
X-Gm-Message-State: AOJu0YyVFT4gTF28Fp7R4PJAHihSXdffRwXCUFoUHfUhV/KNrxy9mzFN
	0PzrcGXUhhUGOnIAkePBuUu22LpuxkZ5Yawiuqb7Xcerf3I/IP7o+9yVHsVg7Xx+TQ==
X-Gm-Gg: AeBDietpkM2Q9wKGJH+gsp1rPK7+hS3bH7i2wyqJNRqJ9dkSAabXu14ZVqygL+DKVPp
	+mucQi0iP8i0YYtTos0B29g20Sv7QG+A9ZFg7vRAfP+28ITiDc2IY+/H8oJohcBjTAGS3hylCtZ
	2F+mVRjBeHtztvVpRVov8iqQeh5xIwn+ArQzwo+OHkY48+pqB/l0T5J2fZYaTlB+utW8Al1n8h+
	VNAqvVYKE51dMxXGzZAmaFcLFaeIedDt/j10JuBmJmb0lpQW19dPd/xIMlMF69xNXPvMVd4qOLX
	2QC77+jQMTQCY3OddiDfwwhsQgsChPpMEY9lWxlcYX1B7SZp1gwHd8wh8UfR8Lf6S24joOrSkxq
	U4zEpRaVXqqkX0j5CXsVBnRT8gn8pF0AuYfb2iLfIJNeUsamAoKdCk4WsUCt0EDiYzPTbeltSCF
	rSVUWpSyjXa8O0a00H+FWCzPI2iLi+N3l/9LKPswtuZXQqIQ/6NxxR+m9SGqa/5ReQHvfzIcQuK
	DJqunkPEZs3LAeDvR5h1Ruqwg==
X-Received: by 2002:a05:6000:184d:b0:43d:e31:68d1 with SMTP id ffacd0b85a97d-43fe3dd958amr29287479f8f.21.1776782609257;
        Tue, 21 Apr 2026 07:43:29 -0700 (PDT)
Message-ID: <5efddecc-3665-4a53-9eaa-b117370cc0e4@suse.com>
Date: Tue, 21 Apr 2026 16:43:27 +0200
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH v3 5/7] vpci: add SR-IOV support for PVH Dom0
To: Mykyta Poturai <Mykyta_Poturai@epam.com>,
 Stewart Hildebrand <stewart.hildebrand@amd.com>
Cc: =?UTF-8?Q?Roger_Pau_Monn=C3=A9?= <roger.pau@citrix.com>,
 "Daniel P. Smith" <dpsmith@apertussolutions.com>,
 "xen-devel@lists.xenproject.org" <xen-devel@lists.xenproject.org>
References: <cover.1775742115.git.mykyta_poturai@epam.com>
 <a0abd984989237d2f36e1628db577fb25af1cdbe.1775742115.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: <a0abd984989237d2f36e1628db577fb25af1cdbe.1775742115.git.mykyta_poturai@epam.com>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
X-purgate-ID: tlsNG-33051d/1776782609-A1F7A938-DAF3DDC5/0/0
X-purgate-type: clean
X-purgate-size: 8962

On 09.04.2026 16:01, Mykyta Poturai wrote:
> From: Stewart Hildebrand <stewart.hildebrand@amd.com>
> 
> This code is expected to only be used by privileged domains,
> unprivileged domains should not get access to the SR-IOV capability.
> 
> Implement RW handlers for PCI_SRIOV_CTRL register to dynamically
> map/unmap VF BARS. Recalculate BAR sizes before mapping VFs to account
> for possible changes in the system page size register. Also force VFs to
> always use emulated reads for command register, this is needed to
> prevent some drivers accidentally unmapping BARs.

This apparently refers to the change to vpci_init_header(). Writes are
already intercepted. How would a read lead to accidental BAR unmap? Even
for writes I don't see how a VF driver could accidentally unmap BARs, as
the memory decode bit there is hardwired to 0.

> Discovery of VFs is
> done by Dom0, which must register them with Xen.

If we intercept control register writes, why would we still require
Dom0 to report the VFs that appear?

> Signed-off-by: Roger Pau Monné <roger.pau@citrix.com>
> Signed-off-by: Stewart Hildebrand <stewart.hildebrand@amd.com>
> Signed-off-by: Mykyta Poturai <mykyta_poturai@epam.com>

First S-o-b doesn't match From: - is that correct?

> --- a/xen/drivers/vpci/Makefile
> +++ b/xen/drivers/vpci/Makefile
> @@ -1,3 +1,4 @@
>  obj-y += cap.o
>  obj-y += vpci.o header.o rebar.o
> +obj-y += sriov.o
>  obj-$(CONFIG_HAS_PCI_MSI) += msi.o msix.o

I understand the one line with multiple objects is unhelpful here, but
for new additions (like was the case with cap.o) I think we want to
respect alphabetical ordering, excluding the one odd line.

> --- /dev/null
> +++ b/xen/drivers/vpci/sriov.c
> @@ -0,0 +1,314 @@
> +/* SPDX-License-Identifier: GPL-2.0-only */
> +/*
> + * Handlers for accesses to the SR-IOV capability structure.
> + *
> + * Copyright (C) 2026 Citrix Systems R&D
> + */
> +
> +#include <xen/sched.h>
> +#include <xen/vpci.h>
> +#include <xsm/xsm.h>
> +#include "private.h"
> +
> +static int vf_init_bars(const struct pci_dev *vf_pdev)
> +{
> +    int vf_idx;
> +    unsigned int i;
> +    const struct pci_dev *pf_pdev = vf_pdev->pf_pdev;
> +    struct vpci_bar *bars = vf_pdev->vpci->header.bars;
> +    struct vpci_bar *physfn_vf_bars = pf_pdev->vpci->sriov->vf_bars;
> +    unsigned int sriov_pos = pci_find_ext_capability(pf_pdev,
> +                                                     PCI_EXT_CAP_ID_SRIOV);
> +    uint16_t offset = pci_conf_read16(pf_pdev->sbdf,
> +                                      sriov_pos + PCI_SRIOV_VF_OFFSET);
> +    uint16_t stride = pci_conf_read16(pf_pdev->sbdf,
> +                                      sriov_pos + PCI_SRIOV_VF_STRIDE);
> +
> +    vf_idx = vf_pdev->sbdf.sbdf - (pf_pdev->sbdf.sbdf + offset);
> +    if ( vf_idx < 0 )
> +        return -EINVAL;

Why is underflow checked for, but too large a value isn't?

> +    if ( stride )
> +    {
> +        if ( vf_idx % stride )
> +            return -EINVAL;
> +        vf_idx /= stride;
> +    }

What if stride is 0 and there are multiple VFs?

> +    /*
> +     * Set up BARs for this VF out of PF's VF BARs taking into account
> +     * the index of the VF.
> +     */
> +    for ( i = 0; i < PCI_SRIOV_NUM_BARS; i++ )
> +    {
> +        bars[i].addr = physfn_vf_bars[i].addr + vf_idx * physfn_vf_bars[i].size;
> +        bars[i].guest_addr = bars[i].addr;
> +        bars[i].size = physfn_vf_bars[i].size;
> +        bars[i].type = physfn_vf_bars[i].type;
> +        bars[i].prefetchable = physfn_vf_bars[i].prefetchable;

This may end up quite a bit easier to read if &bar[i] and &physfn_vf_bars[i]
were latched into local variables. It might further help if the = were all
aligned with one another.

> +static int map_vfs(const struct pci_dev *pf_pdev, uint16_t cmd)
> +{
> +    struct pci_dev *vf_pdev;
> +    int rc;
> +
> +    ASSERT(rw_is_write_locked(&pf_pdev->domain->pci_lock));
> +
> +    list_for_each_entry(vf_pdev, &pf_pdev->vf_list, vf_list)
> +    {
> +        rc = vpci_modify_bars(vf_pdev, cmd, false);
> +        if ( rc )
> +        {
> +            gprintk(XENLOG_ERR, "failed to %s VF %pp: %d\n",
> +                    (cmd & PCI_COMMAND_MEMORY) ? "map" : "unmap",
> +                    &vf_pdev->sbdf, rc);
> +            return rc;
> +        }
> +
> +        vf_pdev->vpci->header.guest_cmd &= ~PCI_COMMAND_MEMORY;
> +        vf_pdev->vpci->header.guest_cmd |= (cmd & PCI_COMMAND_MEMORY);

As mentioned elsewhere as well, this bit is supposed to be 0 for VFs.

> +static void cf_check control_write(const struct pci_dev *pdev, unsigned int reg,
> +                                   uint32_t val, void *data)
> +{
> +    unsigned int sriov_pos = reg - PCI_SRIOV_CTRL;
> +    struct vpci_sriov *sriov = pdev->vpci->sriov;
> +    uint16_t control = pci_conf_read16(pdev->sbdf, reg);
> +    bool mem_enabled = control & PCI_SRIOV_CTRL_MSE;
> +    bool new_mem_enabled = val & PCI_SRIOV_CTRL_MSE;
> +    bool enabled = control & PCI_SRIOV_CTRL_VFE;
> +    bool new_enabled = val & PCI_SRIOV_CTRL_VFE;
> +    int rc;
> +
> +    ASSERT(!pdev->info.is_virtfn);
> +
> +    if ( new_enabled == enabled && new_mem_enabled == mem_enabled )
> +    {
> +        pci_conf_write16(pdev->sbdf, reg, val);
> +        return;
> +    }
> +
> +    if ( mem_enabled && !new_mem_enabled )
> +        map_vfs(pdev, 0);

Why are {new_,}enabled not also taken into account here?

> +    if ( !enabled && new_enabled )
> +    {
> +        size_vf_bars(pdev, sriov_pos, (uint64_t *)data);

(The cast is generally unnecessary here. If you want to keep it, I
think a comment is needed.)

> +        /*
> +         * Only update the number of active VFs when enabling, when
> +         * disabling use the cached value in order to always remove the same
> +         * number of VFs that were active.
> +         */
> +        sriov->num_vfs = pci_conf_read16(pdev->sbdf,
> +                                         sriov_pos + PCI_SRIOV_NUM_VF);
> +    }
> +
> +    if ( !mem_enabled && new_mem_enabled )
> +    {
> +        rc = map_vfs(pdev, PCI_COMMAND_MEMORY);

Same here.

> +        if ( rc )
> +            map_vfs(pdev, 0);
> +    }
> +
> +    pci_conf_write16(pdev->sbdf, reg, val);
> +}
> +
> +int vpci_vf_init_header(struct pci_dev *vf_pdev)

I think this would better move (up or down), to not sit in the middle of
PF functions.

> +{
> +    const struct pci_dev *pf_pdev;
> +    unsigned int sriov_pos;
> +    int rc = 0;
> +    uint16_t ctrl;
> +
> +    ASSERT(rw_is_write_locked(&vf_pdev->domain->pci_lock));
> +
> +    if ( !vf_pdev->info.is_virtfn )
> +        return 0;

Looking at the sole call site, this apparently wants to be an assertion.

> +    pf_pdev = vf_pdev->pf_pdev;
> +    ASSERT(pf_pdev);

The caller doesn't guarantee this, does it?

> +    rc = vf_init_bars(vf_pdev);
> +    if ( rc )
> +        return rc;
> +
> +    sriov_pos = pci_find_ext_capability(pf_pdev, PCI_EXT_CAP_ID_SRIOV);
> +    ctrl = pci_conf_read16(pf_pdev->sbdf, sriov_pos + PCI_SRIOV_CTRL);
> +
> +    if ( (pf_pdev->domain == vf_pdev->domain) && (ctrl & PCI_SRIOV_CTRL_MSE) )
> +    {
> +        rc = vpci_modify_bars(vf_pdev, PCI_COMMAND_MEMORY, false);

Doesn't VF enable also need to be set for the BARs to be mapped?

> +        if ( rc )
> +            return rc;
> +
> +        vf_pdev->vpci->header.guest_cmd |= PCI_COMMAND_MEMORY;

But the bit is required to be zero in the VF command register.

> +    }
> +
> +    return rc;
> +}
> +
> +static int cf_check init_sriov(struct pci_dev *pdev)
> +{
> +    unsigned int pos;
> +
> +    ASSERT(!pdev->info.is_virtfn);

Where's the check that prevents this from triggering? Aiui if
vpci_init_capabilities() finds an SR-IOV capability in a VF's config
space, it'll call here.

> +    pos = pci_find_ext_capability(pdev, PCI_EXT_CAP_ID_SRIOV);
> +
> +    if ( !pos )
> +        return 0;

Can't this be an assertion? (In fact I was wondering why the caller,
which already had to find the capability, doesn't pass the position.)

> +static int cf_check cleanup_sriov(const struct pci_dev *pdev, bool hide)
> +{
> +    unsigned int pos;
> +    int rc;
> +
> +    if ( !pdev->vpci->sriov )
> +        return 0;
> +
> +    ASSERT(!pdev->info.is_virtfn);
> +    ASSERT(list_empty(&pdev->vf_list));

What guarantees this latter property?

> +    if ( !hide )
> +    {
> +        XFREE(pdev->vpci->sriov);
> +        return 0;
> +    }
> +
> +    pos = pci_find_ext_capability(pdev, PCI_EXT_CAP_ID_SRIOV);

As was explained in 9ebba62ca843 ("vPCI/ReBAR: improve cleanup") and
d734babf8bc3 ("vPCI: re-init extended-capabilities when MMCFG
availability changed"), you may not call this function during cleanup.

Jan


From xen-devel-bounces@lists.xenproject.org Tue Apr 21 14:55:34 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 21 Apr 2026 14:55:34 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1289074.1569291 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wFCVd-0001fs-Jb; Tue, 21 Apr 2026 14:55:29 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1289074.1569291; Tue, 21 Apr 2026 14:55: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 1wFCVd-0001fl-Gr; Tue, 21 Apr 2026 14:55:29 +0000
Received: by outflank-mailman (input) for mailman id 1289074;
 Tue, 21 Apr 2026 14:55:28 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <jbeulich@suse.com>) id 1wFCVc-0001ff-J3
 for xen-devel@lists.xenproject.org; Tue, 21 Apr 2026 14:55:28 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wFCVb-00F1Wq-VN
 for xen-devel@lists.xenproject.org; Tue, 21 Apr 2026 16:55:27 +0200
Received: from [10.42.69.10] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <jbeulich@suse.com>)
 id 69e78fd6-5cb7-0a2a0a5109dd-0a2a450ab12e-42
 for <xen-devel@lists.xenproject.org>; Tue, 21 Apr 2026 16:55:27 +0200
Received: from [209.85.128.47] (helo=mail-wm1-f47.google.com)
 by tlsNG-4011c0.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.1)
 (envelope-from <jbeulich@suse.com>)
 id 69e78fdf-56b3-0a2a450a0019-d155802fe89e-3
 for <xen-devel@lists.xenproject.org>; Tue, 21 Apr 2026 16:55:27 +0200
Received: by mail-wm1-f47.google.com with SMTP id
 5b1f17b1804b1-488ff90d6c7so33874735e9.2
 for <xen-devel@lists.xenproject.org>; Tue, 21 Apr 2026 07:55:27 -0700 (PDT)
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-488fc14a61asm345752095e9.15.2026.04.21.07.55.26
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Tue, 21 Apr 2026 07:55:26 -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=google header.d=suse.com header.i="@suse.com" header.h="Content-Transfer-Encoding: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=1776783327; x=1777388127; darn=lists.xenproject.org;
        h=content-transfer-encoding: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;
        bh=zHfte+xahonG06KYROzQ3LxkaMuMBihoL8iwVLaq1EA=;
        b=XEc4gnzoH3cUSKmyAJeV0xAAyQAvH++WrDlkrkzZ8sm8i9vsw17rTatm8Zw1CBtEGd
         C5tlX17DPm1pQXjivcwIeaYjaqJkRRlRTF3FyNXfq5H/P4KHvd8EVVsxcNJyhWcLcTqf
         8YoTHqdhX7y6lnUT7HGuwEZ0Z70iffKw+Oy2ygu14JpagYKVBr/LLZQ4XrvgGq8zYUMC
         5swKkd7GaVP0QyYQ/CjoaIQt32mpIDq7tbe2EOsiw1bxhRcAO8rX/oWgIEkrPU3drWZ3
         /t/XnPuNGwXTMA6B3vnkE3gkEhTEjY+SPl0pQwC5uSWNEz5zO/FvKS8qDEbindWOTuju
         N88A==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20251104; t=1776783327; x=1777388127;
        h=content-transfer-encoding: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;
        bh=zHfte+xahonG06KYROzQ3LxkaMuMBihoL8iwVLaq1EA=;
        b=l3x0pe9hzjVkban/Eeq2dzHhOpLpAPop9WSeQOVRkllv/R5ek4bdhxdbhdIm055a0c
         AzV65zca/sGCsvC4Pxu+i18gV/93o2ghHn2NDiaF6HufSNuVVJg9hBN3sJSGPimVMEAb
         yXk4JXBmZOyRR2LmsKYnHW2oNZKCYIb8R7pBtZbSTgvHv99ZdeeGrUXaIKkwWwJKk+om
         QeRucNEAHzCG2L6XZEyiaY+yAWrxCtds0H5lhBNm42xEPSMY0YulU/5NgoGl3ndKWPyY
         vqVXjijDBxhm9rEkuX99svfuWqD4HWGNRKvJlduoYQAyLdUN98s0NCuybxCYjnYpIn56
         JFjQ==
X-Forwarded-Encrypted: i=1; AFNElJ9nyiCudsRMy+NfKi/R8yEVMj+MfajrIFZq0163nv9LtJVtkTOZx/3i9eABd5xJaQuPFNSwh9d8G90=@lists.xenproject.org
X-Gm-Message-State: AOJu0YyoCr3uFJs/LAMCcpHaxsz/0zBxJi0QyMZs7ECJj/7JfqfhjIWo
	MYLA2IbFaIIOMxVfRK82TSYhJUDT/Z3oVSxJVcnzyD8g1DGTj3aKXOBTtE08pJcoMw==
X-Gm-Gg: AeBDiev7nAx6Nvr0o8KRZgi3hxfn5MJ3spCzjJ9qErwouxc6vxQyxyAcf4Z0SezWw9Y
	V4dU+vsRcmuJOt6Zo0og7jBukAYSM7z/Vt+VQJQgd/p3/lgUeoW8BEj56hPyuD/sFj/CKJp5Jgo
	VjlMqoxK1Hra3hcKJPsXFzByohhbiNphUx08R1XD7/YvDTR965NAEX7DlW8F+x2dAHHP5CUCq30
	v2AVeQ9V61AB2ZeXjo04gjyzdWHvycLwqC1PYfoj0ygTfkn6gOUba+sK5AO+rJNUfBdrzCQpiNl
	U3Aiqf4xpw+7yzceVJj+U8CyHxAdMZcE0/QAOqoeWtPDOaS6NphvRSqLwvWKaPj4GvUgG8gEVmu
	fxpmwQFJQQDQ0zXfSMwhvAefg1nGHuvwZksut20gAdnXxyhwhvq1bwc8UPWR8W5khsOlpWNiyBR
	Oj9lQIIR1q4NTNC4O9mtoDoazcXRPlLKMCSh550a5UbyHuqTqAekYOx8bsc+RL+dEt8zcwY4bHs
	+K/cbbluk233SQBuVa8y8TAvA==
X-Received: by 2002:a05:600c:4f0c:b0:489:1c1f:35e6 with SMTP id 5b1f17b1804b1-4891c1f38c8mr142508635e9.6.1776783327164;
        Tue, 21 Apr 2026 07:55:27 -0700 (PDT)
Message-ID: <c8e664fd-59f8-482d-ad48-99ff59842682@suse.com>
Date: Tue, 21 Apr 2026 16:55:25 +0200
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH v3 6/7] vpci: add SR-IOV support for DomUs
To: Mykyta Poturai <Mykyta_Poturai@epam.com>,
 Stewart Hildebrand <stewart.hildebrand@amd.com>
Cc: =?UTF-8?Q?Roger_Pau_Monn=C3=A9?= <roger.pau@citrix.com>,
 "xen-devel@lists.xenproject.org" <xen-devel@lists.xenproject.org>
References: <cover.1775742115.git.mykyta_poturai@epam.com>
 <1aaf1a087ca0003d943d43c55500b3ab84195cf5.1775742115.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: <1aaf1a087ca0003d943d43c55500b3ab84195cf5.1775742115.git.mykyta_poturai@epam.com>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 7bit
X-purgate-ID: tlsNG-4011c0/1776783327-CFD788B7-EC7F7163/0/0
X-purgate-type: clean
X-purgate-size: 848

On 09.04.2026 16:01, Mykyta Poturai wrote:
> From: Stewart Hildebrand <stewart.hildebrand@amd.com>
> 
> Emulate guest BAR register values based on PF BAR values for VFs.
> This allows creating a guest view of the normal BAR registers and emulates
> the size and properties as it is done during PCI device enumeration by
> the guest.
> 
> Expose VID/DID and class/revision to the guest.
> 
> Note, that VFs ROM BAR is read-only and is all zeros, but VF may provide
> access to the PFs ROM via emulation and is not implemented.
> 
> Signed-off-by: Stewart Hildebrand <stewart.hildebrand@amd.com>
> Signed-off-by: Mykyta Poturai <mykyta_poturai@epam.com>

So this change is merely to avoid having yet another gap on the road to
DomU support in vPCI? I.e. there's no claim or expectation that VFs
could now be used in DomU-s?

Jan


From xen-devel-bounces@lists.xenproject.org Tue Apr 21 14:56:25 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 21 Apr 2026 14:56:25 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1289083.1569301 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wFCWX-000282-Tu; Tue, 21 Apr 2026 14:56:25 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1289083.1569301; Tue, 21 Apr 2026 14:56: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 1wFCWX-00027v-QP; Tue, 21 Apr 2026 14:56:25 +0000
Received: by outflank-mailman (input) for mailman id 1289083;
 Tue, 21 Apr 2026 14:56:25 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <jbeulich@suse.com>) id 1wFCWX-00027N-5t
 for xen-devel@lists.xenproject.org; Tue, 21 Apr 2026 14:56:25 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wFCWW-0047PZ-Il
 for xen-devel@lists.xenproject.org; Tue, 21 Apr 2026 16:56:24 +0200
Received: from [10.42.69.1] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <jbeulich@suse.com>)
 id 69e79002-bab6-0a2a0a5309dd-0a2a45019d3e-40
 for <xen-devel@lists.xenproject.org>; Tue, 21 Apr 2026 16:56:24 +0200
Received: from [209.85.128.50] (helo=mail-wm1-f50.google.com)
 by tlsNG-d62444.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.1)
 (envelope-from <jbeulich@suse.com>)
 id 69e79018-c1f2-0a2a45010019-d1558032b883-3
 for <xen-devel@lists.xenproject.org>; Tue, 21 Apr 2026 16:56:24 +0200
Received: by mail-wm1-f50.google.com with SMTP id
 5b1f17b1804b1-488a88aeec9so59400745e9.2
 for <xen-devel@lists.xenproject.org>; Tue, 21 Apr 2026 07:56:24 -0700 (PDT)
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-488fb75a913sm114955355e9.12.2026.04.21.07.56.22
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Tue, 21 Apr 2026 07:56:23 -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=google header.d=suse.com header.i="@suse.com" header.h="Content-Transfer-Encoding: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=1776783384; x=1777388184; darn=lists.xenproject.org;
        h=content-transfer-encoding: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;
        bh=pBh+l/Zh+Pjzy9kEOtP6QRpBsBjh/2RwCcttvpuOGoU=;
        b=fSFgzcfzYWgB6eqt2bFsXHobdVdMbBhIg7v33Iwz3lofuZ1YGEnUapgGsjl1IXXPSw
         jU2hv44DLi6GYqp40Z6otlx8AokB4SYGcc0K07cmBGZxEvYlohMOx5ue8B+EQuoIMwQT
         cNPIXvJkLZoAIM8shm6GQPG/5AxeVgBNemfOJAKII/4Qw/UHaQZyoqlGEFKSLnak3nNV
         iuh8p4NAxXbDsEGRZXBUGhjw4W4ASWDPiquq50I3xuXE7x7OgNdjAK/yBCtwq0zQBwnn
         xsSFpBZ3EkdSiBV5flzQSzdpNekZcNiQu1/q3kKhdl3XHj5wF7VH0wQZNoJe4f2gO2UC
         umvA==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20251104; t=1776783384; x=1777388184;
        h=content-transfer-encoding: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;
        bh=pBh+l/Zh+Pjzy9kEOtP6QRpBsBjh/2RwCcttvpuOGoU=;
        b=R7pYr36NlRmg4UQoiQXam9uKEj4ovoVx+7ZIV8iAE2NHJ0MzeDFmgQVeI6nByJ+IQS
         J4pa2IvH3kS5aQCqpzmqnmdMu8TDBoYiqgCQYQS7ENnxLqigIe/IOglTDrZFYzhAaYqY
         /cT2CH4zzq1RdiE66WYTxzUZ3RlD/ZM2IVV84bWhjaUfwZKnaC9Ha3e7pe8KO2nI7Osc
         az/fqDHY/7HjPi4Ij+rvPGMSNDn2BZABIAj7l678G3bp5H9y7ZyCWycPTki9eqITp+OY
         y8rGvhBAJ+veGlnHBN40u+qryJ3YjqzZnOfOV0Tek6fgAx5nrn6iNuTdlCUeSrYOXWN+
         H9fg==
X-Forwarded-Encrypted: i=1; AFNElJ82yqHc0YWnZLXvVPSPYdxSTDL9bhRUGKMk1BA/k8QDyAKLUy5ArVPbMiKxj3K88coBN4KQc1bEm/c=@lists.xenproject.org
X-Gm-Message-State: AOJu0Yzxct2RZJhVARR3nXAM3A4VJH38lNrVLrLpXnqux8NhwbeBS8U2
	eZtTiw3KhRAXKtuIdJaQB483x4pgrmZuKjEtsOR2xGK33vJHUI9un1On4wXE/HzTIA==
X-Gm-Gg: AeBDievBnl2UcuqCJeVmutIk5k5T9QT6w3DFjWKrdgJsV/mDJd16nFtVYbYy1Zv0wDC
	7RYGIuUmKilxCOOA4EcMd+KCTJ3uHjkUt0MzgE3kET6FpZDFwGLQz2v9N5P6T3M+lYO/58SmhNm
	k+xci5Yjjbwj7XezZ/p5Epm8yTVKcMk6noheiQcsQQy4epeZ/zvGYmu8pGPXBRV054GfP15nho2
	uDajm1m6sFwoLP6sefYrcYnMYasn7fgO29Gz57QDTm2m+niH8ixPEj80+6shVuhc4e8VTF3vk46
	BnGwcQC3uXn3QxHT/fuGUxlX3/gGrDMYJrnJ5/4CV8Pyn4x9hllECvifwo+iEeaGdXJ4u/d8yDa
	RdvBLNAEv6wzVJ2oWYBx5lMJL/X8g8SpuHWhU21Q0CSBzIAcjDyj4sO1MI9QEDCXESFwMTxchlP
	ph13HA5ecYfHf/MgFUpwJDB4WSNLV1dc3DKArnMMuSVnQsYL2oyX2aFdx0v50NjXFOd2X25HB1l
	nFAad1CWZ/rbCWJMEtv0DXAWy3Ly9TYv3nE
X-Received: by 2002:a05:600c:1da1:b0:488:bc6a:528d with SMTP id 5b1f17b1804b1-488fb785204mr301838635e9.22.1776783383433;
        Tue, 21 Apr 2026 07:56:23 -0700 (PDT)
Message-ID: <53130f8e-fbb0-4162-93eb-c95ae1d5af38@suse.com>
Date: Tue, 21 Apr 2026 16:56:21 +0200
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: [PATCH v3 7/7] docs: Update SR-IOV support status
To: Mykyta Poturai <Mykyta_Poturai@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.pau@citrix.com>,
 Stefano Stabellini <sstabellini@kernel.org>,
 "xen-devel@lists.xenproject.org" <xen-devel@lists.xenproject.org>
References: <cover.1775742115.git.mykyta_poturai@epam.com>
 <65100dbbd16c10a76d2b1847f8fd77850f134559.1775742115.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: <65100dbbd16c10a76d2b1847f8fd77850f134559.1775742115.git.mykyta_poturai@epam.com>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 7bit
X-purgate-ID: tlsNG-d62444/1776783384-B5C64FF4-6A90D5FC/0/0
X-purgate-type: clean
X-purgate-size: 453

On 09.04.2026 16:01, Mykyta Poturai wrote:
> Signed-off-by: Mykyta Poturai <mykyta_poturai@epam.com>

Might this better be part of patch 5?

Jan

> --- a/SUPPORT.md
> +++ b/SUPPORT.md
> @@ -170,8 +170,6 @@ unexpected behavior or issues on some hardware.
>  
>  At least the following features are missing on a PVH dom0:
>  
> -  * PCI SR-IOV.
> -
>    * Native NMI forwarding (nmi=dom0 command line option).
>  
>    * MCE handling.



From xen-devel-bounces@lists.xenproject.org Tue Apr 21 15:33:21 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 21 Apr 2026 15:33:21 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1289105.1569310 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wFD5z-0000IK-IJ; Tue, 21 Apr 2026 15:33:03 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1289105.1569310; Tue, 21 Apr 2026 15:33: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 1wFD5z-0000ID-FM; Tue, 21 Apr 2026 15:33:03 +0000
Received: by outflank-mailman (input) for mailman id 1289105;
 Tue, 21 Apr 2026 15:33:01 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <roger.pau@citrix.com>) id 1wFD5x-0000I6-H7
 for xen-devel@lists.xenproject.org; Tue, 21 Apr 2026 15:33:01 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wFD5v-00CQAw-1z
 for xen-devel@lists.xenproject.org; Tue, 21 Apr 2026 17:33:00 +0200
Received: from [10.42.69.6] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <roger.pau@citrix.com>)
 id 69e798a0-e002-0a2a0a5209dd-0a2a45069d4a-18
 for <xen-devel@lists.xenproject.org>; Tue, 21 Apr 2026 17:33:00 +0200
Received: from [52.101.48.2]
 (helo=MW6PR02CU001.outbound.protection.outlook.com)
 by tlsNG-16d1c6.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.1)
 (envelope-from <roger.pau@citrix.com>)
 id 69e798a6-7371-0a2a45060019-3465300220a2-3
 for <xen-devel@lists.xenproject.org>; Tue, 21 Apr 2026 17:32:56 +0200
Received: from CH7PR03MB7860.namprd03.prod.outlook.com (2603:10b6:610:24e::14)
 by SJ2PR03MB7332.namprd03.prod.outlook.com (2603:10b6:a03:566::16)
 with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9846.16; Tue, 21 Apr
 2026 15:32:52 +0000
Received: from CH7PR03MB7860.namprd03.prod.outlook.com
 ([fe80::f5ba:35df:1c9f:b343]) by CH7PR03MB7860.namprd03.prod.outlook.com
 ([fe80::f5ba:35df:1c9f:b343%4]) with mapi id 15.20.9818.033; Tue, 21 Apr 2026
 15:32: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=leCdwQGxIw1icIqtJy/Ts0kTAXrteOxOZfH3tJQnjFEFAtdpJj8IwqCYgOFXJZa7IUXJMwC1wYn2IK04rLf+Br4adAk+IpJqzXbP7anDCzXo5zf8XkJhvQBSgAea0fbue4Z+RdTJr8NiAAYYyvaOUaXVIemJJWOQ/KB5l5kmkeGkbMQAnVx7/eU2qTf1SMB8BP+qGjeJuwbj7el5ZOK3B0U4DXdkSAAz/vFoPayiKODRyF+0wh1mrVEFdRg1tB+S1LXOWUUTNIfLzqPa/AGxJp+16rcZucO1sTcLLgDV/2/UmArrvhnnPQ48RkfPH3uZ9o7u0CuvJ/tShtXrKpvFKQ==
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com;
 s=arcselector10001;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1;
 bh=TVw05xE/J8bBGrEM6+0jSt3r+aIt4XgzxTGKohABEzM=;
 b=brb5bqkiSMcB6KiXFcCQ4JTwCKNdLT9cpU1t/Stpzd1leKCpZHs3hofie7AZ5E1Q8MLTHD9BuRSKM736aZX2T/Ex9Q4jvSoG8Y1E7xuSaxM9N2m+mvRBqwlM2pSJl0WNfm/EhPv+wgiOxTkqA6/eF0bzv3YbKBYE783LFhCuLV0+s0s2JROEk+913cNDcJ8DIyg7q9ts980Yof4yEpI53kLwqS2eXAszmQEPHIq1/SgXUqINKoH9WK3Hs6+U8R3czFTJduQY5D6jQPLkDVG9OafMQrOeuvk3bu5fHa2RX6lz8ZC7tVWsUp300cPq4mCHC3VRH025IBYD9KhAWdUluQ==
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=TVw05xE/J8bBGrEM6+0jSt3r+aIt4XgzxTGKohABEzM=;
 b=bWEFq7TiX+S4lpJXtlShaFC7+9a4M3gLMb0Diec2TN0/imyi/1MBm3/CcbQJnFyi+6TjyGT8oqKFAeAaMCihhWeEFkCePHJMFy14BrbBck9wjRszr6YriKVmxRXp+NM56Cz7oOe6pwybfMuBiCLjoY43Zax0Eu33pQEHyA4AgnA=
Authentication-Results: dkim=none (message not signed)
 header.d=none;dmarc=none action=none header.from=citrix.com;
From: Roger Pau Monne <roger.pau@citrix.com>
To: xen-devel@lists.xenproject.org
Cc: Roger Pau Monne <roger.pau@citrix.com>,
	Anthony PERARD <anthony.perard@vates.tech>
Subject: [PATCH] tools/xenpm: fix FreeBSD build
Date: Tue, 21 Apr 2026 17:32:24 +0200
Message-ID: <20260421153224.36368-1-roger.pau@citrix.com>
X-Mailer: git-send-email 2.53.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
X-ClientProxiedBy: MA2P292CA0001.ESPP292.PROD.OUTLOOK.COM
 (2603:10a6:250:1::17) To CH7PR03MB7860.namprd03.prod.outlook.com
 (2603:10b6:610:24e::14)
MIME-Version: 1.0
X-MS-PublicTrafficType: Email
X-MS-TrafficTypeDiagnostic: CH7PR03MB7860:EE_|SJ2PR03MB7332:EE_
X-MS-Office365-Filtering-Correlation-Id: afe2de1b-fed4-4202-0c01-08de9fbb4064
X-MS-Exchange-SenderADCheck: 1
X-MS-Exchange-AntiSpam-Relay: 0
X-Microsoft-Antispam:
	BCL:0;ARA:13230040|1800799024|376014|366016|18002099003|56012099003;
X-Microsoft-Antispam-Message-Info:
	ZnRmHteGn6aerwEVEguR1uNNOWgrq/7ktbRQw8thEz9C8pogF10Lz7nr72wwmwXmcKNwRg+kw2HQNlmsNLzlNpvkiekiI72mhjBQvT4qy3a/U76WiyR9ZKlingh6C4m+3ypddK6K3Sg0tAvNEOjs6tsufct9BLwoN0Js8NF1x0iWp5p5BM0spcTh4eN7p6Xof+kC/HO9uT/VO36zzS6hOZnl3Q36Yq24XFgBizBDUIUL67Dx9vP/JXHasRR21ru2vniQUaHQCcV+96UOYvSqDRZCFc6swgFPIx8neydp9FZdE9ps3tedO6/hJ2RLdwBo6iETolP9bKVmP9QFfodNEhrpNyC6sAqNHmApiXjOfmBxYDn7NPYmiJ4M2o4r8zVp8LTN6YK+frbY8kdRVY0V1b+QZzeJj96z04xoKp4pBbYI3iaz7Qe7uq9u4ioNDFtl/pT5amOz4iJv/9wg7HYjudCZas+AgI7Jm3QuGPzxHOKMEtSM809fmLrA5W4s4HPaNGaZ5/DxRNWa27inCwuMFVL9QiaPgDgUZb5cb9yua6ZkHTZh9NgqIcAm8/CMpkQLOdGMdD8pq4LrXZifnXR33LzP4zoAkpcj6d4bYMy+LhwpomtMlo60oh+fWTb361/A47Wyy9oWxycsNKuNYHrZTfXge+wokoLUcE5gNEJ38yXdM6h5hoh+5vcfvElFd7xKxrHPzGqr7gQ4J2N8jEABXlmfMjTzRHh+ENl0qg9ws5k=
X-Forefront-Antispam-Report:
	CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:CH7PR03MB7860.namprd03.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(1800799024)(376014)(366016)(18002099003)(56012099003);DIR:OUT;SFP:1101;
X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1
X-MS-Exchange-AntiSpam-MessageData-0:
	=?utf-8?B?WHR3bWlGNUQwZWp5K1d3R3FpUzA4ZWxrbjFTRVEwMyttc0QxYk54TmV1WDg0?=
 =?utf-8?B?VmhJZ2grZ0ZMV3JCNVAvK2dSQ0laVlczdm5VVWcyS3MybWV1UGt6L0FsWjFF?=
 =?utf-8?B?OGU5Rk9wcHUwb3UvYkd1RFFmSmNGL1ZacmlaV01RU21ZUlZQbEcyd3drQ2Fj?=
 =?utf-8?B?S3hwVXZ6U0kzYWNtcWs5UHJjS29nT3VKNWpLd2JsbHNHMktIcmRjTGtqc1F0?=
 =?utf-8?B?b01qT2dDdkh6bnhqbXU4ZWhVMEIrS2VDbWlPU1BDL3JOL0VRdjVFRXdnMG9h?=
 =?utf-8?B?V3BYSWQ4ZmRBTGdQcDNQVzhXY1lVM3hRdEtIOWJFQTVIbnY2a0l3dWR6MFgz?=
 =?utf-8?B?VllMWklISXB2aGIyMmw2Slk3V1JEMmJsM2FiUUJhcURRZUtDSzhISEtWVTla?=
 =?utf-8?B?RGplQzBkaUtUNWx5N1VMUCt2L21xN1M3YkIvODc0bVp2aElEU1dDZE9IVUkv?=
 =?utf-8?B?UGpGRVVJWml5NWZ4UnR6WWw5WDhjVnZaOUlaMW90ZzlCYUlERGtyK0dNMkht?=
 =?utf-8?B?V01VZ1UyQ2FpZ1dPeld3ZDJjNUZmYjZwcEtrSUhYVHF2SDhBaXFFYWQwcVZ4?=
 =?utf-8?B?MytwVGhaRjlmOVMvTG5GT21tSExSMkZmRVF6ajh2bHNxRnU5bFEwN05oWmtx?=
 =?utf-8?B?cmR4a3dRZ1VNOWE1bUJWNS9qS1ZKSHRwT2hlYytJRURlamtJb3BwNnZNRWNT?=
 =?utf-8?B?aVJhalNHYXRPOHhmU2FwNVltZ1pZY0NHRlkyT2JLbUhqZkJYalJUR2NEdnhk?=
 =?utf-8?B?TUdZL2FibmxmS0xsRExrWnhac3UwTkwvYmU0ZHg3VHZMVjFvckVCbHlWUTJu?=
 =?utf-8?B?bDB2WlBHZFROZFdsZHRkN0g4Wmc3WTI0T1FibXJTUVRRT0ZKYlJMMFM4MUh5?=
 =?utf-8?B?RXRxTnQ5TnlRbWxHTXpwcjJNdkZVTlRqaDlQdXgrTGNocHhMUFJJRlNMbG5G?=
 =?utf-8?B?ME91MHYvRVR4dWR0L0lLbFZZdWw4SnpoaHFwOTdUNjlTalgxa3p5SmpKOGsw?=
 =?utf-8?B?dDhYb3FaY3R0NE95clBNdW45SG15ZnFyUDJoTFlNQ0FuRzZrWDhOeTBGYngw?=
 =?utf-8?B?QUttZGRRUjJ2MVV5RkFrR2I4eTczZklUdDV2M0dvQjhLVy91UDQ4UTFhd3dH?=
 =?utf-8?B?MWxxSFBDdHVtbGUyazVpQmhNWDZYWGhhMUdKUU5sOEV0SzR5QXVuVmFTUXNm?=
 =?utf-8?B?dE9heWZTcEFHU1VBUjcxSk9FclQ4TnhDR29nOTZFaU8rRU50eWh5YllKMmY3?=
 =?utf-8?B?WVFjOWoxejVuT0FLaTF0Qkg1NU5JanpwVVJodDZ6OGxudlFjaGYvVnJyaTBX?=
 =?utf-8?B?ckYvM20wamdqNU1PVHh5THFCaUhrQnIyZWFuaGdjUVhocHBKb3JTZjRlTCt5?=
 =?utf-8?B?eVc1SmhPY3pBZmo5bDlZa2dSVjZKRkUwR2oxTTVTZUhzSDg5TVlCVTY3alYr?=
 =?utf-8?B?dnlHdU91K1pBVGpkVWY5M1J0akhKTm5tM3g5ZnpVZWxKSG8wb2xoaW9LYlYv?=
 =?utf-8?B?bFZkbUlGMVhsd0NjUlNGMDFoVytzWmtWY0p1Sy8wZHNjVllzbjB4eVpNUFd2?=
 =?utf-8?B?aUtILzUxOU1nN0Y0R0RJVVlSa3JlODE2YUtOQkh5M2ZlR3RPZ0FueiszQ3Az?=
 =?utf-8?B?QkVzYlpDYmhxMm5CeFI1Ykw1Z21lQWRPTjArQ3hTVG04cG5FK0daVmJPWjBj?=
 =?utf-8?B?WmFUcGNUWWVIY0dPcHlUdmVVeTg0TDhaSmcvdGNnYy9PWXp3d0R3RjNJWG9D?=
 =?utf-8?B?bS96RW14T1BSOVJjK0RzcVY4YkpiVWUvWDR4M2NZL0ZnV2ZEek5ZbGp4TVhu?=
 =?utf-8?B?MTRTUUlKbG9leWFaVWZ6ZHd0QWxJSkhRRTYwUHZQZ2t5eHVTSk02K2hxbHNH?=
 =?utf-8?B?ZlA2dGRXMFlCNzJ4L291ZUFCS1ViTHdzczRxTXZURnQzZEVuMmcwMkkzMmVr?=
 =?utf-8?B?aWErSXlydnA2UzJPNHlkMzlKVzhCNG9mNVhNdURFMlVZRTdNSm1OZ1JIaHNL?=
 =?utf-8?B?eU03TTIzS0R0SGlVUXgvSEhzS1ZsN1J1dDRBaEJXa3BDSWZmbWRGWVFEbDRE?=
 =?utf-8?B?MDRVOVBvelVBWTRraE9sUlVnMXJRdUV3Y3dETWZueUdlRSt6OTR1MWdPSnJl?=
 =?utf-8?B?ZFBYMktVSTJya3lWdmZvdWhuUS9RVE4rbXY5dzl5cDh0L291d3lPOEE4bVdI?=
 =?utf-8?B?TFBmRzNQdmZkUjdTN3EwNnpBUkp2ajBWaUQzMjBSbUJNQmtwUFlJNHhGVncz?=
 =?utf-8?B?aGQ3ZnErbUZFK0ROZWpqcDZERGttWEttWGxQY3dWRUZYZ2ZNaDVDeWIzemE5?=
 =?utf-8?B?M1NNcWNNcURQS25NaUN1RkRTVGE3bWVyVXVxMlhlREJrYzRQcnJRZz09?=
X-OriginatorOrg: citrix.com
X-MS-Exchange-CrossTenant-Network-Message-Id: afe2de1b-fed4-4202-0c01-08de9fbb4064
X-MS-Exchange-CrossTenant-AuthSource: CH7PR03MB7860.namprd03.prod.outlook.com
X-MS-Exchange-CrossTenant-AuthAs: Internal
X-MS-Exchange-CrossTenant-OriginalArrivalTime: 21 Apr 2026 15:32:52.2676
 (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: DOuE7kRcmbK33TCPLfdqCI6jQTqzdLB70sjOmu6F9vZ6UedScDDMp2j94gRbMCmlLcVGf8kDuecUDmHdpHfY9Q==
X-MS-Exchange-Transport-CrossTenantHeadersStamped: SJ2PR03MB7332
X-purgate-ID: tlsNG-16d1c6/1776785576-CF371D75-C5CCF5DD/0/0
X-purgate-type: clean
X-purgate-size: 826

ENODATA is not defined on FreeBSD:

xenpm.c:1380:17: error: use of undeclared identifier 'ENODATA'
 1380 |         errno = ENODATA;
      |                 ^
1 error generated.

Fixes: edb657887a60 ("xenpm: Add get-core-temp subcommand")
Signed-off-by: Roger Pau Monné <roger.pau@citrix.com>
---
 tools/misc/xenpm.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/tools/misc/xenpm.c b/tools/misc/xenpm.c
index 87107bd6c617..ecb39c911d84 100644
--- a/tools/misc/xenpm.c
+++ b/tools/misc/xenpm.c
@@ -1377,7 +1377,7 @@ static int fetch_dts_temp(xc_interface *xch, uint32_t cpu, bool package, int *te
     {
     case 0:
         /* This CPU isn't online or can't query this MSR */
-        errno = ENODATA;
+        errno = ENODEV;
         return -1;
 
     case 1:
-- 
2.53.0



From xen-devel-bounces@lists.xenproject.org Tue Apr 21 15:35:01 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 21 Apr 2026 15:35:01 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1289113.1569318 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wFD7q-0000mS-Tu; Tue, 21 Apr 2026 15:34:58 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1289113.1569318; Tue, 21 Apr 2026 15: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 1wFD7q-0000mL-Ql; Tue, 21 Apr 2026 15:34:58 +0000
Received: by outflank-mailman (input) for mailman id 1289113;
 Tue, 21 Apr 2026 15:34:57 +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 1wFD7p-0000mF-PJ
 for xen-devel@lists.xenproject.org; Tue, 21 Apr 2026 15:34:57 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wFD7p-00F7oS-2Y
 for xen-devel@lists.xenproject.org; Tue, 21 Apr 2026 17:34:57 +0200
Received: from [10.42.69.11] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <andrew.cooper@citrix.com>)
 id 69e7991e-5cb7-0a2a0a5109dd-0a2a450b99c4-8
 for <xen-devel@lists.xenproject.org>; Tue, 21 Apr 2026 17:34:56 +0200
Received: from [52.101.53.22]
 (helo=BL0PR03CU003.outbound.protection.outlook.com)
 by tlsNG-42698a.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.1)
 (envelope-from <andrew.cooper@citrix.com>)
 id 69e7991f-212f-0a2a450b0019-346535164ad9-3
 for <xen-devel@lists.xenproject.org>; Tue, 21 Apr 2026 17:34:56 +0200
Received: from CH8PR03MB8275.namprd03.prod.outlook.com (2603:10b6:610:2b9::7)
 by CO1PR03MB5681.namprd03.prod.outlook.com (2603:10b6:303:99::19)
 with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9846.16; Tue, 21 Apr
 2026 15:34: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%6]) with mapi id 15.20.9846.016; Tue, 21 Apr 2026
 15: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=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=br8VvePRetJqNP7sv9EfD0iI5us5OpX24dd5uFPFfshcQKgRIgBJ5oDWLoQ3XXGLa3puIHNAypk9osavZT1tkg2HdAztSQEW53KFmLkRktdm8CEM6AkK1e4Yie9KQqNLHC7FtQCTCSXa7js/reAy/ENUSda71yOguoFobBsm+V5jn+eHYkdfmhMUVMSGbMRB3QjYjEqWlSMgD2EaRZeQfFy6gH2Nu+JeuWn++kGljca2gpjbQuEWKu/LVj/zzTZHuVrGPMjWqz7j3OJMs5liZHmrfxJmLl6I8GhWaEwuHDve+4xQLemzAasOLLOUcH1NLuM142DFZwjB25gTpFucyQ==
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com;
 s=arcselector10001;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1;
 bh=ef9ukOWNE1nSd8UB2YnxHAj09gZ7yEPq7flJ8AcMkSI=;
 b=IJDvo5m3HbZxqph5X38sNWDj6MSlHhGDqgrgVUs1D1xOXnLPFyZGg5zcI/GMQdCcndGW5nhCMnwyNAWj3Rk5Unt365zYU/y9jqJulhRRNEHuFa9GBimKKD7MW+2h+To9KcYi4Nlc/RyFqXb7B1wMNxYV07jwCrxL8whdk4GUk5QTrifnGiQVki3qzeb/yCbTM8pkxloMPlQOmdDYoYdzKYNe1E6Uzdx6S6IJkPQ1f+4eHfwbv0F5KJ8/w5+kSUlmhg49SMEZ3wNTuZr+RU0KaHMG4FJ+FFjwJbqB0+CViPEIRxDH9viOyJ8bP/L53mg9tpMSVX5vY58AUBOmQemEGA==
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=ef9ukOWNE1nSd8UB2YnxHAj09gZ7yEPq7flJ8AcMkSI=;
 b=iEXxdkO7NMUpsqiGOJhpXKPwSNwRBxLajtbgQUjNdtDzNCUE71oYQowtO7FC/NNbIkal1NeFya7NCsXy3utyeiKhsBhq/TLowQ+aMn410hXNGCMUZ/orrRhUoaTO0heOAMFZQJFuVTwWf0yvted2DK619uIHwetZIHnYQ4kfePY=
Authentication-Results: dkim=none (message not signed)
 header.d=none;dmarc=none action=none header.from=citrix.com;
Message-ID: <6e4ddb85-c6e0-4e5f-ac27-caca06c26774@citrix.com>
Date: Tue, 21 Apr 2026 16:34:49 +0100
User-Agent: Mozilla Thunderbird
Cc: Andrew Cooper <andrew.cooper3@citrix.com>,
 Anthony PERARD <anthony.perard@vates.tech>
Subject: Re: [PATCH] tools/xenpm: fix FreeBSD build
To: Roger Pau Monne <roger.pau@citrix.com>, xen-devel@lists.xenproject.org
References: <20260421153224.36368-1-roger.pau@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: <20260421153224.36368-1-roger.pau@citrix.com>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
X-ClientProxiedBy: LO4P123CA0060.GBRP123.PROD.OUTLOOK.COM
 (2603:10a6:600:153::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_|CO1PR03MB5681:EE_
X-MS-Office365-Filtering-Correlation-Id: 47965348-44ea-4450-595a-08de9fbb8807
X-MS-Exchange-SenderADCheck: 1
X-MS-Exchange-AntiSpam-Relay: 0
X-Microsoft-Antispam:
	BCL:0;ARA:13230040|366016|376014|1800799024|18002099003|22082099003|56012099003;
X-Microsoft-Antispam-Message-Info:
	/p2tqkWZDNhZ/xH0XYByS7XYGUIdHmzOhfP6WnKY8GH7/uoDpZBiCm7amW2GLDydY40iXpEixIfQD+8y280/GX8+7JyLjD96tj7KD3HQca4+NMdZobdwimtoVzcCDassaBE0xNZBIHTX+g+cU0Cgh6oFqW92t5IuKddkzG4Lj+ZpZBXJxDxQS5DceSOgagwL6w3z05vjy+BEqZmKGvRR0l3rmF0Z82v8wBXrq2AVkSsiFwuPNgYzCyS20G4xt+HdVBrgFfXNOjMGmQPKs5ZVM2BAUU0OEms+ZnwbX6ICmU1iwU17dy7e32mXWuk/NsW1eN3iS5ty0nkl4mNZkU1FEaaSmEsbR1JQA64s7a9UB/kivF9h23//IhYCURJtBCZRHTKeHZYLiJPJxp+iqL7xInb3ymrJU1KHs8IaFeYdYTUA4rKKvwA0cAd7ywSXTxWA8DL0ZI6meYYKlPNQIj90AIm5/mMZFCL7O5B9uruWeOOT21/PW+TYPgiGecJBMCaPH2yPUc0lj4lhtpaOlIUBxck+yW4xSEMW8haAuEtkQidq+PXoLausFchSpXETOHqSqTXXIBZK4dsp9cvUJVj9QM0KKGbTVOCM043qrA2wHoQ5kqalFtyzdng8ZRW+0OQSBDyZovD/uHxkbUsHbeXiefRm4PM3zqz16fwtI5SD3wBf5zRcmLwAGkVs6szYV1uZrtBTGNtPOsoTSSc4hYylNmBpZ/U0CAnn/tBmpkZQRrU=
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)(1800799024)(18002099003)(22082099003)(56012099003);DIR:OUT;SFP:1101;
X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1
X-MS-Exchange-AntiSpam-MessageData-0:
	=?utf-8?B?NzlIaUJJN0QveWkrUm5LbVhzd2VLVlpOMVRTTFNlVS8wL09CK1hsY0wzTkVv?=
 =?utf-8?B?QUljRmdNQ0N4VTBudWpKTmpzT2FLSG8zZ1JBaUZudElZT2c4eGQvaHA3QzRo?=
 =?utf-8?B?b1JJTmwwLzFMZmY5cjR0a2dvZ3UwcDNnbEpiUkhSSnF5S2ZpaDZXNXppeDhY?=
 =?utf-8?B?cUU2RmJXVmZDZlR6b0ZoWDd5Znh3dm5xRnRwckpzeU1TdS9oQWszcHdYazJx?=
 =?utf-8?B?R1JjTnJzNDgvZi8xbE9UYVpld0s1djg5ZjJpcGlNSzV0QzR5T3piajRTWURN?=
 =?utf-8?B?YzVhSHpIeDMzejRTQVExMGJ3SUYvbnhVVjViaGl5SUZzWTBxZ2xIMnNrK2ox?=
 =?utf-8?B?eDJBU1VsdVRJK3IrMnpVNkVuVU1rYWYzWmFpd2IzVnVEcFcxSFNsR2k1NlJG?=
 =?utf-8?B?TG52OFNuZHR6SFVUWkIxdTNzOFJ1bzdYa21RVGdRWWl5Ykt1d2VqNkxTelhR?=
 =?utf-8?B?NlhCcVA1N3IvMm5OVVNpdjZvU1lLVVBUZGNJY1M2TDg2YXYxM3hpQzFQL2NN?=
 =?utf-8?B?d2ovOVNXbTVjdTR0VENWY1RuMng3RStjMWpiWlY0NTZDSXBPLzE1U0lMaXdJ?=
 =?utf-8?B?RThTN2Nvb1JQV3N4T3l1RUw5Z1ZCUDlSNHBOZ1NKaVUxcnNQRjFtcnR4WHgv?=
 =?utf-8?B?Y2ZGc2hDQjg2Vk9NNzl4SlJpRUxoZXpqa3pYQmQyN01VVWVSWXpkQUNBenBC?=
 =?utf-8?B?LzlBelhoeWZEZUlrOWhNVTNzY0JaR3FCQlh6cHJycjEyeklacU9aUW9jQUNr?=
 =?utf-8?B?QmFINnk2bitPajAwSUtMdTViOHR2VEFMZDBCRXpJNzlkZnZCaGZqMm84N1NH?=
 =?utf-8?B?TzZ6elJBZG53Y0piZUltL2dGY1JKSldGNTFqclgrbG9lNHJML1FDbFhCMnlY?=
 =?utf-8?B?L2FvN3A0YlpGNXJ1QnZ1NEpYT1Ura0tlNXNWZWhOYnR2ckMrNTVCTWcyQVkv?=
 =?utf-8?B?NWlhdkVSSGxmYjA4aTdSLzVBNEtjY0x2NlJkRUthMm5vbXY4SWJhc3BySjFr?=
 =?utf-8?B?ZGJYbUxOWU5RaHEwcUgyZWdjZFhqZFNNMUpRVTRHblFsaUY3T1BvSS9zVDB1?=
 =?utf-8?B?RkNURlRCMkZUMm04Qmt2b3doRGVBczM2QVp0U1BkdlpLK3dnVm15NXhubEd3?=
 =?utf-8?B?VWdzWm9WRGx3RnNCdzNuemM1L2JIYmNHei9uSVhVd2gvMllrdDdZVzV4Nm4r?=
 =?utf-8?B?MVNQSjZ0TVYrRklUQ09ma1JnSzQ4TUI2NDhYWHF3bjByMVEvb0d4VzFFZGFs?=
 =?utf-8?B?eUoxVll1ZGZVRTRDRTZFSnFXUm1oaVVuemZwaFNKekVlbTJxSUtvb1N1Z3Jy?=
 =?utf-8?B?c243a29IWmdLK2xqckpvREhoRnNLalNXWitCZUtEL3JlUmIveGZLV3hIR1pm?=
 =?utf-8?B?b25PQWh3MHd5Vnhjb3JPb291bkVXaEtIWlB2a0dKcHl6YWFkZFVwYXBDbmZJ?=
 =?utf-8?B?RTBDUUxwUlhmTjh1RTh2MWQvWWM0cHVGSDF1MlFpK1pRUDhKOFNzUTlVeFdu?=
 =?utf-8?B?eE9jdWMyZU1pcmhmM1JaMmdsYkM5UGR1WDdwZjFGdjkwTFhCV3lkZHRHV2hK?=
 =?utf-8?B?WHY5VjhJQVJXMDNzL2lTZkhRNFhKQXFvTE55UlhFMytiUThqV2s0WmJmZHo1?=
 =?utf-8?B?eXIvZWU5d2Q4SEhhZXRqZkx3TUVueWlDMFdqaHFUM256UC85MjBmcnVWWG9V?=
 =?utf-8?B?UWQ2WVdDTFhXY2p0Nm5IZktIendXaDd0VktBT20zNkxEZVpsdFNwN3hsMVhw?=
 =?utf-8?B?ZE1pMG5jNUs2VVl5OExsSHpaWExuZ2VFdXpObXczWU5FWGsydEVTa3BsOWV6?=
 =?utf-8?B?L1g0VXJ4aTcrRnpYdXRrWmtQNUtSaCtPK1Z1QnNCd0JVKzY5VXVPOHQ4Z0Jr?=
 =?utf-8?B?aVFXY3IwdktKNW1kMHF5YVJCY0I5c3pzTG83WmhkZXVMdkEvTS9yMDA1ZHg4?=
 =?utf-8?B?SkxJSk9tbXNSYlNwMUlCTkJQMGhYRXVzMGgyOWRVWFcvd0tOT2dBM0FPeS8z?=
 =?utf-8?B?YTN1V2RkcW1YSEZsMWdkMDNVS1R1VWtsN05OQ1BQY0FNUXpoVk85Ym82ZEh0?=
 =?utf-8?B?UjVQL0hxYUxxWTlBSk50Nm5LbVIvOExPak1DcjVHeTdQVGpMeVR4Vk5sc0d0?=
 =?utf-8?B?UEg5WHRvNXZzZ3dWTS9jdFMwUWNPYm1xZ245UWJ2TXZqdlMwSGpHTEVUd0M5?=
 =?utf-8?B?YS81K3dGY0RhT0hWbEFBb3cvMDJPamh6T0NXL2VNQXhndktlZlR3aWY3NW90?=
 =?utf-8?B?RHkzdXl5OSt2UHZTVkFzNUdMaU1vWFluVUY3YkcrZklnNWlBaVBuZzlaeGdq?=
 =?utf-8?B?MEFGVm1Hc3E1MFNJV242ckZKQyt4bU9RUk5aZlZRY0cySlRZckpmd3RtM3c5?=
 =?utf-8?Q?ikKuPXq5Tut72D6w=3D?=
X-OriginatorOrg: citrix.com
X-MS-Exchange-CrossTenant-Network-Message-Id: 47965348-44ea-4450-595a-08de9fbb8807
X-MS-Exchange-CrossTenant-AuthSource: CH8PR03MB8275.namprd03.prod.outlook.com
X-MS-Exchange-CrossTenant-AuthAs: Internal
X-MS-Exchange-CrossTenant-OriginalArrivalTime: 21 Apr 2026 15:34:52.4255
 (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: Pa3xZ2qLMIfY/qrxTk15k3kihImBSAmqX4btjXDhiu25z+Ny9ugj4w4ksgJLtk1Kl3/+Jpzrbr4/4zexgwYVtL8oWYz0jdma/vg31MzNzIo=
X-MS-Exchange-Transport-CrossTenantHeadersStamped: CO1PR03MB5681
X-purgate-ID: tlsNG-42698a/1776785696-04D67F3B-5913FFC1/0/0
X-purgate-type: clean
X-purgate-size: 420

On 21/04/2026 4:32 pm, Roger Pau Monne wrote:
> ENODATA is not defined on FreeBSD:
>
> xenpm.c:1380:17: error: use of undeclared identifier 'ENODATA'
>  1380 |         errno = ENODATA;
>       |                 ^
> 1 error generated.
>
> Fixes: edb657887a60 ("xenpm: Add get-core-temp subcommand")
> Signed-off-by: Roger Pau Monné <roger.pau@citrix.com>

Acked-by: Andrew Cooper <andrew.cooper3@citrix.com>


From xen-devel-bounces@lists.xenproject.org Tue Apr 21 15:36:03 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 21 Apr 2026 15:36:03 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1289124.1569327 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wFD8r-0001Kb-9U; Tue, 21 Apr 2026 15:36:01 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1289124.1569327; Tue, 21 Apr 2026 15:36: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 1wFD8r-0001KU-6g; Tue, 21 Apr 2026 15:36:01 +0000
Received: by outflank-mailman (input) for mailman id 1289124;
 Tue, 21 Apr 2026 15:36:00 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <jbeulich@suse.com>) id 1wFD8q-0001KM-OY
 for xen-devel@lists.xenproject.org; Tue, 21 Apr 2026 15:36:00 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wFD8q-0007q2-5b
 for xen-devel@lists.xenproject.org; Tue, 21 Apr 2026 17:36:00 +0200
Received: from [10.42.69.11] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <jbeulich@suse.com>)
 id 69e79958-bab6-0a2a0a5309dd-0a2a450bae2c-24
 for <xen-devel@lists.xenproject.org>; Tue, 21 Apr 2026 17:36:00 +0200
Received: from [209.85.128.48] (helo=mail-wm1-f48.google.com)
 by tlsNG-42698a.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.1)
 (envelope-from <jbeulich@suse.com>)
 id 69e7995f-212f-0a2a450b0019-d1558030a5ca-3
 for <xen-devel@lists.xenproject.org>; Tue, 21 Apr 2026 17:36:00 +0200
Received: by mail-wm1-f48.google.com with SMTP id
 5b1f17b1804b1-48a3e9862f0so13848895e9.1
 for <xen-devel@lists.xenproject.org>; Tue, 21 Apr 2026 08:35:59 -0700 (PDT)
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-43fe4cc375dsm34898334f8f.14.2026.04.21.08.35.58
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Tue, 21 Apr 2026 08:35:58 -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=google header.d=suse.com header.i="@suse.com" header.h="Content-Transfer-Encoding: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=1776785759; x=1777390559; darn=lists.xenproject.org;
        h=content-transfer-encoding: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;
        bh=l6/61KmdCX4yGoKelBKeS/S3OXlgVgoqJPO2Ng/df3Q=;
        b=McOEZWrCOckaVKTvtDjw8RFQiRbrTa5XeMck0M/1TvcZRNjHj+ILUpLnkg8F+QpDUJ
         KkZiAwf73B3Lu4eUK3rU9nyhmmhJe9fJsW4QScaU/auHyAuSZRxWrtL3vNbs28qQxx/x
         cHSzF+gT7UgMixPuum4qx7Ys3O0yfRdrVdza00kJtUjJnCg/VebMgc6/OXQ0+4ho20wt
         3SzJRy1hXwPlHVj11eNsfOigFC3ZYd73oBlsU0Ti+4mM9W/tDkheh5tkPt8tUfFqlDts
         LV0eK80wB6yZoZTTp+kQN0X9+M3ucC4n2mvyC7VNy23GiCA3V889q2pnxX+SKs4uUcuN
         BPhw==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20251104; t=1776785759; x=1777390559;
        h=content-transfer-encoding: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;
        bh=l6/61KmdCX4yGoKelBKeS/S3OXlgVgoqJPO2Ng/df3Q=;
        b=qigXKNh9RyzIB/mh/ccLc7mEScf3HIlZF+/K7WbshYAq7AJ6NJBTVLGq1SD8TmJ1Js
         GWtwg9MRB2houZB//c09SVgrh7qAFv+Zaet6MO/rAg5q/rQxwfGGTlWS6VFfkjZni0im
         CNhR/d30tFmKhrRBRDL05lT3EMOg6kw6ScB0DcLZ8dQ3zdvWBztXLmHPWNWhjG29Gjwh
         ZQOtWZ7IweaFxFdrjusGbKOTGJfqICV45JyTMGECuMaWrC1HOHAPh+/YRNuka3c5lmv/
         AVluojFhkrVbM0gpqf+0P3nsisXDXIFgWQaHEyCA4QThVpCeq586H32iqXShtDiSjO8q
         b0MA==
X-Forwarded-Encrypted: i=1; AFNElJ8bAsV1WwwWmM4lCOlV2QvO0lgwxxsfpNn7+eJaommsU4p4Mk7Y650s1Ov/DkJoEF8MymMSTB6BzhE=@lists.xenproject.org
X-Gm-Message-State: AOJu0Yx64BXkQKSp2mjTacgCpfcIT6nVZK2oDkySfNRo10KqGfmuTkcd
	GU7X+S7mUoYPKyw0GvTXN8eLQ3qRJyrhbDV/G9mALDZHRSnJkbyIvP2cKioIdmZKsQ==
X-Gm-Gg: AeBDieuPt6iaDegrRg+qNg7GG4w77wGZLQUEYEm0TJGOS/DFDfas5uz1Nd5l2ZH3hMd
	xzfOOLAOz32nNrXt8aGK0gGuYBQLongjYFS9vLUJZKHEL6q5nW1rSYwZtcSzZFz7sTgcipcoIRV
	0FE/zNZxbKM83hk/NXbi5KkB86G5mfUN4uNYEYexK6sd3MfuLEKos0yCeBG0V0dnxTkjQ2iGdwa
	iygF9q9CeG+/RzUDeBr1OUiSlu14YYNsuYAydBxPMcVvtIAJLHaP6/GYHtMIC25OSt6UoN6eAKF
	hZDqm7LLlPsm2WletOebiMXlShffmcc8HYN6kucDxhQgn8J4ybJeQUGe5WrSn21AHSci2Mr6DDg
	ujVMO7YUXsBKudC75nDlb8RJe4qfbGatq6f6oz/C09mN46WmHx8cqOLDPBWBOCpaURZ5zstCBQC
	L3t8SRGtClRdGz/Z9Pdk6PBPJUVlPTuqrzJSUyUqlMxqf6NHLqBCDpgLkoAgUJ/85E0q+eWI3pd
	b+EbMkNxuW5zig4CMdVwvdoxw==
X-Received: by 2002:a05:600c:1988:b0:489:1e5e:2cc with SMTP id 5b1f17b1804b1-4891e6d485cmr120595785e9.9.1776785759384;
        Tue, 21 Apr 2026 08:35:59 -0700 (PDT)
Message-ID: <2204fbae-be5b-4f56-ad2a-cd5692db81cb@suse.com>
Date: Tue, 21 Apr 2026 17:35:57 +0200
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH] tools/xenpm: fix FreeBSD build
To: Roger Pau Monne <roger.pau@citrix.com>
Cc: Anthony PERARD <anthony.perard@vates.tech>, xen-devel@lists.xenproject.org
References: <20260421153224.36368-1-roger.pau@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: <20260421153224.36368-1-roger.pau@citrix.com>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
X-purgate-ID: tlsNG-42698a/1776785760-0757BF3B-3A8C9D87/0/0
X-purgate-type: clean
X-purgate-size: 1109

On 21.04.2026 17:32, Roger Pau Monne wrote:
> ENODATA is not defined on FreeBSD:
> 
> xenpm.c:1380:17: error: use of undeclared identifier 'ENODATA'
>  1380 |         errno = ENODATA;
>       |                 ^
> 1 error generated.
> 
> Fixes: edb657887a60 ("xenpm: Add get-core-temp subcommand")
> Signed-off-by: Roger Pau Monné <roger.pau@citrix.com>
> ---
>  tools/misc/xenpm.c | 2 +-
>  1 file changed, 1 insertion(+), 1 deletion(-)
> 
> diff --git a/tools/misc/xenpm.c b/tools/misc/xenpm.c
> index 87107bd6c617..ecb39c911d84 100644
> --- a/tools/misc/xenpm.c
> +++ b/tools/misc/xenpm.c
> @@ -1377,7 +1377,7 @@ static int fetch_dts_temp(xc_interface *xch, uint32_t cpu, bool package, int *te
>      {
>      case 0:
>          /* This CPU isn't online or can't query this MSR */
> -        errno = ENODATA;
> +        errno = ENODEV;
>          return -1;

"No such device", however, isn't quite what we want to convey here. If no
better error code can be found that's available on FreeBSD and Linux, I'm
inclined to suggest that we stick to ENODATA where available.

Jan


From xen-devel-bounces@lists.xenproject.org Tue Apr 21 15:51:51 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 21 Apr 2026 15:51:51 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1289137.1569337 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wFDO5-0004rW-K6; Tue, 21 Apr 2026 15:51:45 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1289137.1569337; Tue, 21 Apr 2026 15:51: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 1wFDO5-0004rP-Gc; Tue, 21 Apr 2026 15:51:45 +0000
Received: by outflank-mailman (input) for mailman id 1289137;
 Tue, 21 Apr 2026 15:51:44 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <roger.pau@citrix.com>) id 1wFDO4-0004rJ-LR
 for xen-devel@lists.xenproject.org; Tue, 21 Apr 2026 15:51:44 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wFDO3-00FApN-Um
 for xen-devel@lists.xenproject.org; Tue, 21 Apr 2026 17:51:43 +0200
Received: from [10.42.69.6] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <roger.pau@citrix.com>)
 id 69e79cf0-5cb7-0a2a0a5109dd-0a2a4506a6f4-38
 for <xen-devel@lists.xenproject.org>; Tue, 21 Apr 2026 17:51:43 +0200
Received: from [52.101.43.15]
 (helo=SJ2PR03CU001.outbound.protection.outlook.com)
 by tlsNG-16d1c6.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.1)
 (envelope-from <roger.pau@citrix.com>)
 id 69e79d0d-7371-0a2a45060019-34652b0f463e-3
 for <xen-devel@lists.xenproject.org>; Tue, 21 Apr 2026 17:51:43 +0200
Received: from CH7PR03MB7860.namprd03.prod.outlook.com (2603:10b6:610:24e::14)
 by DM6PR03MB5306.namprd03.prod.outlook.com (2603:10b6:5:243::7) with
 Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9818.33; Tue, 21 Apr
 2026 15:51:39 +0000
Received: from CH7PR03MB7860.namprd03.prod.outlook.com
 ([fe80::f5ba:35df:1c9f:b343]) by CH7PR03MB7860.namprd03.prod.outlook.com
 ([fe80::f5ba:35df:1c9f:b343%4]) with mapi id 15.20.9818.033; Tue, 21 Apr 2026
 15:51: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=KPtlFWinBpdKFTI8bQVNXc8BMskr14bVh6oKKyvmE0YTxo3rvQtmwPGooAVyvEGbOgoWoHhSf2MPeuthq8TY3vq1k3o6WFC0lVe1RC7DV3mjAc6r9LXj8FSGsgDXmdL8cE2FNN9L57cR/0mguo8ClZWf+N+9Rf0eXzeLtwwUmjYEM8Juqe99SWU+0KUIR5I+VdtRlqCavETPRaK+ClpoOyFvn2GZdAWJHhztnnbBWwTR0ZzBQ7RrDkqCYRHkQRofY4bwNskZleq4iANTg+vvqETl0V2l4y6b7Pgbl4R7oTXKzs1v+GCDmbJ0JGcPxAucZeJhqQIDSRt9ae+a1GQBxw==
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com;
 s=arcselector10001;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1;
 bh=TpZknm63C3UCr1JhTs56RiX4HA+vYrjymingqcNFx6Y=;
 b=nIZizQ/G0CuFoWk80EUBLKazBdGDQzJGdqp02gPHdmGrEJNqBaL5Avdp12lC4muQQAHDeRs17t31gwf0zQD6LEnHBZ1dvF393xXZGl/cpmVhQ1MIlWPOLRH6O7Ie5Z9H6AkI6X5wScgbElDh9dEgA1ISvZigpnWWbiy7joAKa+cAqcbit+LaV8QlXnzmrT08Oo1TR1hBfvng2A5dr93VV+02Ruzw4NvCMUTyqO43oJtfyMHCYQ25xPG0unFOnNqR6NiX3mVhl7Po1kOwc2T4bqmukjUvd9byDfMDRqrYPzgVUiTIqAfNurNecgSacFjxQskRwlAazSc712aWZ99lEw==
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=TpZknm63C3UCr1JhTs56RiX4HA+vYrjymingqcNFx6Y=;
 b=LwOrkODIh0XHX8cBpWPQ2nl8ND27jlKC0K4AmUYCb4bLbdKknLrNIriueBrhCZfpoFrU84vbubUxIC1ibPN2NhmE0UK8Hf/s3X3bZfe/WlH2aO8FNDhvuxFSM4JXNzhr4oom+JiyvIAdhwaZdG/4yJWuPNZycDGsDohQx6Bzmvk=
Authentication-Results: dkim=none (message not signed)
 header.d=none;dmarc=none action=none header.from=citrix.com;
Date: Tue, 21 Apr 2026 17:51:35 +0200
From: Roger Pau =?utf-8?B?TW9ubsOp?= <roger.pau@citrix.com>
To: Jan Beulich <jbeulich@suse.com>
Cc: Anthony PERARD <anthony.perard@vates.tech>,
	xen-devel@lists.xenproject.org
Subject: Re: [PATCH] tools/xenpm: fix FreeBSD build
Message-ID: <aeedB31aEBJb2Pa8@macbook.local>
References: <20260421153224.36368-1-roger.pau@citrix.com>
 <2204fbae-be5b-4f56-ad2a-cd5692db81cb@suse.com>
Content-Type: text/plain; charset=utf-8
Content-Disposition: inline
Content-Transfer-Encoding: 8bit
In-Reply-To: <2204fbae-be5b-4f56-ad2a-cd5692db81cb@suse.com>
X-ClientProxiedBy: MA3P292CA0027.ESPP292.PROD.OUTLOOK.COM
 (2603:10a6:250:47::13) To CH7PR03MB7860.namprd03.prod.outlook.com
 (2603:10b6:610:24e::14)
MIME-Version: 1.0
X-MS-PublicTrafficType: Email
X-MS-TrafficTypeDiagnostic: CH7PR03MB7860:EE_|DM6PR03MB5306:EE_
X-MS-Office365-Filtering-Correlation-Id: d74373a9-2e7a-40e5-fb94-08de9fbde01d
X-MS-Exchange-SenderADCheck: 1
X-MS-Exchange-AntiSpam-Relay: 0
X-Microsoft-Antispam:
	BCL:0;ARA:13230040|1800799024|366016|376014|56012099003|22082099003|18002099003;
X-Microsoft-Antispam-Message-Info:
	woQI7jIBWQh36dwmOpe72cz5UrrlCAUJb4JefadqSBmCUjEY0bV2RuQl9M9sjjjHP7XGYgNgYWLgK47zh8SaWoTDRggIukSOwhwl15zmKbN67PlumXVDFZJjuxIKJhXyxYq86qz/hmUwofvFZ/Lve9hJkvS113kMbcZdNh/89WMUboJEiwRkmUQpBGa5VWw/ltdEnnO7PK+tdv5I3DufY5blcR+jD11wqhxcq2hBK9pU6JH5oFR7ub27mWn2PwtBbZfocK6rV/k+bkT6GLjEbvna8xzOwHNbanx7cR9wHqQx75qI5Irqt/docw3/7/mlSgmpZ+fl95GQX6MVn94imiVLo2yxOW+GmxE6Rh1C5E3QgWBFUaAKL0QfURwrWoMZJlnKlw5+JS2FPWRjVh/fBG/7pfzyWyd6QFHKLTMA6cT9IHrn/QO4N2W6VnfFHocoyy3loH0d+IDH8rIgxKYFn9t6+BXyVsNTSXkk/myWjS3oIZ6SJtX1yR1jJMlbOVLaxUycNSJMdSbje/2HklLPMuKqGYY/BK3qLbuYWqfNyaRVQBoSXsYC8y4MkxDd7kdTWqauZiiApLw6Vv+Oni6TNoGEUzwQByFENgfBjdKuwzQX0Te2nZBmXMzt8epJtoIKChkkf13IZiE9ZbmgjOJk6z9JtfaHjGiLWWo+hFRXv93bRFTBqqz/WvDI1JZk7DlZw9/3epTFvtOSkZIqd9WiPbhZWJlBk0BDsU82VvdgTpY=
X-Forefront-Antispam-Report:
	CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:CH7PR03MB7860.namprd03.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(1800799024)(366016)(376014)(56012099003)(22082099003)(18002099003);DIR:OUT;SFP:1101;
X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1
X-MS-Exchange-AntiSpam-MessageData-0:
	=?utf-8?B?MmFIZnBiNEZjQU02eXdMUlNPWWRRQ1IwZHFOYjVMMFFHalNYdTJTZzVxcWtO?=
 =?utf-8?B?dEoxVVRFSkJNRFZzMGRyVCtGQ2RUUWVnQnFWNnlMRUs2b2t2elNSdnRCTU5a?=
 =?utf-8?B?SWk3a1BwM0ZjMVA5RHhkanVNNU9Dc0ZjVEpFZnpKbVVKT3pBNGRqd3hjc1VT?=
 =?utf-8?B?bTNsRk9Xb1R5NlpxSzBudHdlS3hFU3FKbVBMMCtsRGJyUWFHekV2enRYd0NN?=
 =?utf-8?B?bXNibEtDOWZoSlpYSFQ0dWJoUGtpckJ4WTI2cDVGVUNsWE9uNXNnUFc4aXEx?=
 =?utf-8?B?SHJXOVIvNmY0YUo2WElVcFVFSktyazJQb3FJYjdkS2RiOEVWdzI2SSt2RW5S?=
 =?utf-8?B?MTltV2hnNXNWeWd2OWNXZmgvOGlhdUJBU0ovUXU0UzNIZDZSWGk4VWtHZzhH?=
 =?utf-8?B?NlYzT3FraXFtVUwxcWlwQndqK29jK1FOSGhsR0tMQlBxVndPdHRRaXY5Sld0?=
 =?utf-8?B?QnJvYXQ5NENFTUx6R3BHVnVudDQ2d1JMV0pTalhMb3RSY2wwZXVxS0UvNnh3?=
 =?utf-8?B?UjNiNlZVUG5pRng3Y3VXNE9rTHBEKzdRVmdaVFUzUnBOUEZIREdGOERMbTRJ?=
 =?utf-8?B?bmxHMVh5TkdiOVdCdkJtVFBhN0pmNm1heGlmbXlQakN5SVJ2YmZRQi9kdWRD?=
 =?utf-8?B?MEsvekI3M3hpRHpoQnQ2c1FaZFNzd0ZIOU9wVEZFUFZPa1RLQ2Nad3NpWHg5?=
 =?utf-8?B?TksreDljZ2hNN0twMWhCMUI3OTJDZ2VnYXY4TmdRQXVXSDFIZjlaSWFrVHo5?=
 =?utf-8?B?MkEyU0dnSzA5YitLZXBVQnY2VlduZnZ4c085Vk9kd054SWliTVhZRE9WSFlv?=
 =?utf-8?B?MUJvc1djODc2UEwzVGJJVVZQdFZWSGpUVC9DWGtDRXdaSWZ4TVJwVnlJMHdN?=
 =?utf-8?B?Q0lmcm5kdXczQlYzV0M5TGJ0aGNJZEtBaHFGZUpXeXVBWkttLzZjTW9McEFy?=
 =?utf-8?B?RzBhTlU2eEpuWWp4UEtpNS9xc3ZLZzVYZFlTczAyQVI0QjZVdkpZY0dBTEJF?=
 =?utf-8?B?aWhDYzhaeDBVRVVmNUNTZ2craTJiSXJhREVSN0dDUzd6TXZTSllvWTVLWjZw?=
 =?utf-8?B?U0lQNi9BOWcxN2hWWC80THo4N1RxWUxqUEhRUkdlbStreEhFUTlWMVJlV2RT?=
 =?utf-8?B?UG96S3FJQ3A4a2phS0ppZ2dOaXp2dGZkc0FTM2Y5b1lDYy9VZDJWMnpsbXNz?=
 =?utf-8?B?eE92R2dnSHZtNklyUGd1Nk1lVFkvSUQyOHUrL1pmVTVvT2p0OXk0NFJuRHV4?=
 =?utf-8?B?bGgwT1NXUnJSaVh4ZWlidW9YT3ZCaUVheWJKZ1g4bHJxaXRLSGdpdkdWN3oy?=
 =?utf-8?B?NStzQVRzemFhZk04UlpPNWhLazliYjJieTNGSExLRWRidkVBZkI0UWxrbHVY?=
 =?utf-8?B?YlNPRDcvWnBQZEtTMm15YVd6TW5UQWtkMGR2b1pBZG9IN0hLWWI2OW4weXBr?=
 =?utf-8?B?c3Bha1dySHVtUms1UDdNYjNOYmxRZ3MxSU1WMnl1cTZMWG0zdUlZK0FTOCtE?=
 =?utf-8?B?OHJ0N2drQlRPdkdvdmhCbVVaVFpVcEt5SnNMbHpQS25aOVhRR2VPVlRnTEZ2?=
 =?utf-8?B?dVdib2c4dmcwQ2hxYUUvY0ZkNnIzbkhPVEZMMzNLVG9oUlljQTVta2ZTdzRz?=
 =?utf-8?B?bVlCclBPWjhQQ0gvNU4xMERyeVNsNmI2YmJtQkp1b3VVV3VIMVZjdDU1QkNV?=
 =?utf-8?B?RTJIT292Z0tEWFBuQVo5Z2w5UkpSMDc4Z2w0cEozbndESXhhVE11N0x5N0Ni?=
 =?utf-8?B?SWM0dEdaVFJaNnpybUhaaEdhM21HOEx6QldBcGZxa3FpcEIzR2Z6UU5mY3p4?=
 =?utf-8?B?eFRQZ0h0UEU0RFNpM3g2bjJJWmFlWXJjNVNEUjBHeTdTOUczczFCcU5hanph?=
 =?utf-8?B?NEpreVJrRkxDb2lJMmQ3amMvYi9JdUthQzZRckczTXBDdGZmQkxla2U1MGJG?=
 =?utf-8?B?NllTUWVLTkpEbnFwYmNsSUdMeHJ6SXlNbmJjbyswRjFLVk1YT2xiNWpyRDho?=
 =?utf-8?B?TWpvQUh2UlRaaisyaWxldjIwMTlYUU1qOWlvOGI5aW10UGp5dEZScG9TbmE1?=
 =?utf-8?B?eTNyMGpsOW5oVnFxTHhNZ2xPRmlmc3hSWGs3Wmc5TlhiUVdGd2FFQzZpZGRG?=
 =?utf-8?B?YnhyTlV6K2ZVOWJUNkZxQWlZQjZtZWk5Rlhwbk5laGpQV3Yxa3F4U0hkdTVa?=
 =?utf-8?B?VkpqLzJaRXMwSDFmV0ZpZXFRcko1b3BFK3IwaFlmM0syZ09WZFRtWjRwNjlH?=
 =?utf-8?B?cUtFOHZDK1pnV1lmREpZYkw2VUQ2SnlDOHgrU2FIcmdCRER5WExubkFNbTNQ?=
 =?utf-8?B?eDI0UGdKeUlDOXVDZXZzdkpZTjNCZU0vbHBYUmxoRTc0cy9rdjB1QT09?=
X-OriginatorOrg: citrix.com
X-MS-Exchange-CrossTenant-Network-Message-Id: d74373a9-2e7a-40e5-fb94-08de9fbde01d
X-MS-Exchange-CrossTenant-AuthSource: CH7PR03MB7860.namprd03.prod.outlook.com
X-MS-Exchange-CrossTenant-AuthAs: Internal
X-MS-Exchange-CrossTenant-OriginalArrivalTime: 21 Apr 2026 15:51:39.4348
 (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: dqTC/rZrcl7XZSFuQ6q8W6aLw0EUNjGcXsjFCuuCv+O56bbZztL3ssCZOlM/FBFTrKYspzb8CL9iOf6lrYCTfw==
X-MS-Exchange-Transport-CrossTenantHeadersStamped: DM6PR03MB5306
X-purgate-ID: tlsNG-16d1c6/1776786703-CFB7DD75-A6E482BB/0/0
X-purgate-type: clean
X-purgate-size: 1619

On Tue, Apr 21, 2026 at 05:35:57PM +0200, Jan Beulich wrote:
> On 21.04.2026 17:32, Roger Pau Monne wrote:
> > ENODATA is not defined on FreeBSD:
> > 
> > xenpm.c:1380:17: error: use of undeclared identifier 'ENODATA'
> >  1380 |         errno = ENODATA;
> >       |                 ^
> > 1 error generated.
> > 
> > Fixes: edb657887a60 ("xenpm: Add get-core-temp subcommand")
> > Signed-off-by: Roger Pau Monné <roger.pau@citrix.com>
> > ---
> >  tools/misc/xenpm.c | 2 +-
> >  1 file changed, 1 insertion(+), 1 deletion(-)
> > 
> > diff --git a/tools/misc/xenpm.c b/tools/misc/xenpm.c
> > index 87107bd6c617..ecb39c911d84 100644
> > --- a/tools/misc/xenpm.c
> > +++ b/tools/misc/xenpm.c
> > @@ -1377,7 +1377,7 @@ static int fetch_dts_temp(xc_interface *xch, uint32_t cpu, bool package, int *te
> >      {
> >      case 0:
> >          /* This CPU isn't online or can't query this MSR */
> > -        errno = ENODATA;
> > +        errno = ENODEV;
> >          return -1;
> 
> "No such device", however, isn't quite what we want to convey here. If no
> better error code can be found that's available on FreeBSD and Linux, I'm
> inclined to suggest that we stick to ENODATA where available.

Seems like a lot of complexity, for very limited usefulness.  The only
usage of errno is to be printed in the error message, and for the
purposes of this function ENODEV is already unique in the function, as
ENODATA was.

FWIW, I think ENODEV is not that far fetched: the CPU being offline
or the MSR not being present seems like what you would convey by using
ENODEV.

Thanks, Roger.


From xen-devel-bounces@lists.xenproject.org Tue Apr 21 15:58:14 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 21 Apr 2026 15:58:14 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1289147.1569345 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wFDUH-0005rt-6p; Tue, 21 Apr 2026 15:58:09 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1289147.1569345; Tue, 21 Apr 2026 15:58: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 1wFDUH-0005rm-4I; Tue, 21 Apr 2026 15:58:09 +0000
Received: by outflank-mailman (input) for mailman id 1289147;
 Tue, 21 Apr 2026 15:58:08 +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.19db0c3520e000f373@swg.vates.tech>)
 id 1wFDUF-0005rg-Vp
 for xen-devel@lists.xenproject.org; Tue, 21 Apr 2026 15:58:07 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wFDUE-000C16-Sz
 for xen-devel@lists.xenproject.org; Tue, 21 Apr 2026 17:58:06 +0200
Received: from [10.42.69.11] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1) (envelope-from
 <prod-mta-13.8631fc262581453bbf619ec5b2062170.19db0c3520e000f373@swg.vates.tech>)
 id 69e79e8e-e002-0a2a0a5209dd-0a2a450bb83c-0
 for <xen-devel@lists.xenproject.org>; Tue, 21 Apr 2026 17:58:06 +0200
Received: from [185.255.28.34] (helo=prod-mta-13.swg-srv.net)
 by tlsNG-42698a.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.1)
 (envelope-from
 <prod-mta-13.8631fc262581453bbf619ec5b2062170.19db0c3520e000f373@swg.vates.tech>)
 id 69e79e8e-212f-0a2a450b0019-b9ff1c22b133-3
 for <xen-devel@lists.xenproject.org>; Tue, 21 Apr 2026 17:58:06 +0200
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
 19db0c3520e000f373.002 for <xen-devel@lists.xenproject.org>
 (version=TLSv1.3 cipher=TLS_AES_256_GCM_SHA384);
 Tue, 21 Apr 2026 15:58:03 +0000
Received: from [192.168.1.18] (88-175-170-134.subs.proxad.net [88.175.170.134])
 (Authenticated sender: teddy.astie)
 by mail2.vates.fr (Postfix) with ESMTPSA id 2C0D487412;
 Tue, 21 Apr 2026 17:58:03 +0200 (CEST)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@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=JM13Gw6w4R8wxXoYrniZxEvDfakgM/fcbZGm4Wqt84Y=;
 h=from:subject:date:message-id:to:cc:mime-version:content-type:in-reply-to:references:feedback-id;
 b=DjgDaKtqMpeUdTKKNsz0krM6fmHvC6pX4SOuaKVn6pC6waPb+MHXO4m9io/fUMdGl1ULp/BJw
 yHxc2hiPxa2/ezvRpb3TeAyHg7PoOeuu2MyQOhH2z+wj0S8LXP16SEOO2VXvXElvZu/WyZ5zor5
 juHIh05S1G9Tv0zsbhMyAVowfiwYh80SuD2lGBjpsmW62BO3bpO0dcDOchHpHYBwp5/2C+kvrLv
 E/E8pn+p+D4fK5sJplDePNJEixZPlK+673f2lyjQqreVq39AZuCi3xAUeSEsXe7GYJ1404LM+Yj
 zvIjrSMkJI8KeNszxrB1IsPhw3n7NPioYplHiyPABV+g==
X-Zone-Loop: b1bbe22708f74e1c3708b643a51d8294da5fa711da23
x-campaign-type: default
x-transaction-id: 3dc07649-3f99-4fd7-a025-5116eac5ece5
x-swg-uid: 01-0f43bdf8-a9db-44b2-b510-442e6f416311
X-Mailer: Sweego
Message-ID:
 <1776787083.8631fc262581453bbf619ec5b2062170.19db0c3520e000f373@vates.tech>
x-swg-bid: 1776787083.8631fc262581453bbf619ec5b2062170.19db0c3520e000f373
Feedback-ID: default:8631fc262581453bbf619ec5b2062170:Sweego
x-campaign-id: default
x-client-id: 8631fc262581453bbf619ec5b2062170
X-Originating-IP: [37.26.189.201]
Date: Tue, 21 Apr 2026 17:58:02 +0200
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH] tools/xenpm: fix FreeBSD build
To: Roger Pau Monne <roger.pau@citrix.com>, xen-devel@lists.xenproject.org
Cc: Anthony PERARD <anthony.perard@vates.tech>
References: <20260421153224.36368-1-roger.pau@citrix.com>
Content-Language: en-US
From: Teddy Astie <teddy.astie@vates.tech>
In-Reply-To: <20260421153224.36368-1-roger.pau@citrix.com>
X-BM-Disclaimer: Yes
Content-Type: multipart/alternative; boundary="-=Part.24d7.5d37ca5e4ae1a4ca.19db0c34ff1.5ebb0072a08026e5=-"
X-Bm-Milter-Handled: 4ffbd6c1-ee69-4e1b-aabd-f977039bd3e2
X-Bm-Transport-Timestamp: 1776787083250
X-purgate-ID: tlsNG-42698a/1776787086-0415DF3B-727D99DF/0/0
X-purgate-type: clean
X-purgate-size: 1507

---=Part.24d7.5d37ca5e4ae1a4ca.19db0c34ff1.5ebb0072a08026e5=-
Content-Type: text/plain; charset=utf-8
Content-Transfer-Encoding: quoted-printable

Le 21/04/2026 =C3=A0 17:36, Roger Pau Monne a =C3=A9crit=C2=A0:
> ENODATA is not defined on FreeBSD:
>=20
> xenpm=2Ec:1380:17: error: use of undeclared identifier 'ENODATA'
>   1380 |         errno =3D ENODATA;
>        |                 ^
> 1 error generated=2E
>=20
> Fixes: edb657887a60 ("xenpm: Add get-core-temp subcommand")
> Signed-off-by: Roger Pau Monn=C3=A9 <roger=2Epau@citrix=2Ecom>
> ---
>   tools/misc/xenpm=2Ec | 2 +-
>   1 file changed, 1 insertion(+), 1 deletion(-)
>=20
> diff --git a/tools/misc/xenpm=2Ec b/tools/misc/xenpm=2Ec
> index 87107bd6c617=2E=2Eecb39c911d84 100644
> --- a/tools/misc/xenpm=2Ec
> +++ b/tools/misc/xenpm=2Ec
> @@ -1377,7 +1377,7 @@ static int fetch_dts_temp(xc_interface *xch, uint3=
2_t cpu, bool package, int *te
>       {
>       case 0:
>           /* This CPU isn't online or can't query this MSR */
> -        errno =3D ENODATA;
> +        errno =3D ENODEV;
>           return -1;
>  =20
>       case 1:

I wasn't aware ENODATA wasn't available on some BSDs=2E Even though it's=
=20
supposed to be a part of POSIX=2E

Regardless,
Reviewed-by: Teddy Astie <teddy=2Eastie@vates=2Etech>


-- 
Teddy Astie | Vates XCP-ng Developer

XCP-ng & Xen Orchestra - Vates s=
olutions

web: https://vates=2Etech
---=Part.24d7.5d37ca5e4ae1a4ca.19db0c34ff1.5ebb0072a08026e5=---


From xen-devel-bounces@lists.xenproject.org Tue Apr 21 16:00:39 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 21 Apr 2026 16:00:39 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1289154.1569354 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wFDWf-0007tl-Hp; Tue, 21 Apr 2026 16:00:37 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1289154.1569354; Tue, 21 Apr 2026 16:00: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 1wFDWf-0007te-FE; Tue, 21 Apr 2026 16:00:37 +0000
Received: by outflank-mailman (input) for mailman id 1289154;
 Tue, 21 Apr 2026 16:00:35 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <roger.pau@citrix.com>) id 1wFDWd-0007tV-Ny
 for xen-devel@lists.xenproject.org; Tue, 21 Apr 2026 16:00:35 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wFDWd-00FC9m-4F
 for xen-devel@lists.xenproject.org; Tue, 21 Apr 2026 18:00:35 +0200
Received: from [10.42.69.6] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <roger.pau@citrix.com>)
 id 69e79f14-bab6-0a2a0a5309dd-0a2a45068e62-36
 for <xen-devel@lists.xenproject.org>; Tue, 21 Apr 2026 18:00:35 +0200
Received: from [52.101.53.57]
 (helo=BL0PR03CU003.outbound.protection.outlook.com)
 by tlsNG-16d1c6.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.1)
 (envelope-from <roger.pau@citrix.com>)
 id 69e79f21-7371-0a2a45060019-34653539d9b3-3
 for <xen-devel@lists.xenproject.org>; Tue, 21 Apr 2026 18:00:34 +0200
Received: from CH7PR03MB7860.namprd03.prod.outlook.com (2603:10b6:610:24e::14)
 by CH4PR03MB7745.namprd03.prod.outlook.com (2603:10b6:610:243::22)
 with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9846.16; Tue, 21 Apr
 2026 16:00:31 +0000
Received: from CH7PR03MB7860.namprd03.prod.outlook.com
 ([fe80::f5ba:35df:1c9f:b343]) by CH7PR03MB7860.namprd03.prod.outlook.com
 ([fe80::f5ba:35df:1c9f:b343%4]) with mapi id 15.20.9818.033; Tue, 21 Apr 2026
 16:00: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=PUn+o14qziw57VsQPhhN3jzr+lmLSkuQ6HXNAnxL7tFMY/qh8ffFfDc84P6j6ira3R9Br4gMaexkfo30ZS4RX+QLQVUIcwhoHBKRKGJCnF8wl5wtqV5vU0Fjcq+54uHa0lR5kHg/HWh+atfICh1xqLqTRzuGhlRRL3/1mjZ/xF5diAWmH3LTGKWAD48uSiU0q43saMWq+PF3cEgslaR/bStwFblUnR/zff5cLyg3PHWy/Rrnhi4j55X/JGdqTQM50U2HtGJdC3xgrSEwK4+LmNaMacnA1yMLONJxy9OA1KwDliYWGV6esaVAOSWwYm+ZxA8k+epMQNY4VAZlOZRfIw==
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com;
 s=arcselector10001;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1;
 bh=HcuE4DhWVgFQwYKSSn/LhiSzXgWL0NKT55XH9CJAbWQ=;
 b=i3k0T2SKLi01PYxYF/F81rrH7TH+c8NuIcRmfqGVQD+xox5hcTCmQ+bQChHiYrzKzDnQFVTSB5zYMCXBmiHdTS84UPvIsfZOlhciRd73oh9dTHo/t1KP74Fh5RBizbrNm9WU3pXToty875w2mt8TvoExPxIc5Ukjz9pZ2XDE6OTYbWbJj18PW5knOQht4ENVVZraUsNNclyaOHN6L7HPhG9rKKSASgDKE8TgRAiS6jwb5vhHlJidu8iHg5x5LJK4MdteiY6SRML/ID2tGxaJByStBqbFTVrEiESAb2QlBFfDbrVmmwPqfQguESsJyDQirVpbN7LtdaUXtsh4xqAYdg==
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=HcuE4DhWVgFQwYKSSn/LhiSzXgWL0NKT55XH9CJAbWQ=;
 b=NA4y99IzmSRQjwmXUilFV9Me7za3HOjxzHDka4wesyRqPJ1NA2/0nQ1wJSJz2fu2EbVzhc9o+pLkpnR1tpIkgCA54bF3E5tfBC/rAgiQT4WjvCvpFXCGqHn6JxPO9o5RPTkDQMlYmtAWW1Dy3MqyaqCEiXI7eR6FusrhdXfsuJU=
Authentication-Results: dkim=none (message not signed)
 header.d=none;dmarc=none action=none header.from=citrix.com;
Date: Tue, 21 Apr 2026 18:00:26 +0200
From: Roger Pau =?utf-8?B?TW9ubsOp?= <roger.pau@citrix.com>
To: Teddy Astie <teddy.astie@vates.tech>
Cc: xen-devel@lists.xenproject.org,
	Anthony PERARD <anthony.perard@vates.tech>
Subject: Re: [PATCH] tools/xenpm: fix FreeBSD build
Message-ID: <aeefGjsN0EAVsvxp@macbook.local>
References: <20260421153224.36368-1-roger.pau@citrix.com>
 <1776787083.8631fc262581453bbf619ec5b2062170.19db0c3520e000f373@vates.tech>
Content-Type: text/plain; charset=utf-8
Content-Disposition: inline
Content-Transfer-Encoding: 8bit
In-Reply-To: <1776787083.8631fc262581453bbf619ec5b2062170.19db0c3520e000f373@vates.tech>
X-ClientProxiedBy: MR1P264CA0216.FRAP264.PROD.OUTLOOK.COM
 (2603:10a6:501:56::14) To CH7PR03MB7860.namprd03.prod.outlook.com
 (2603:10b6:610:24e::14)
MIME-Version: 1.0
X-MS-PublicTrafficType: Email
X-MS-TrafficTypeDiagnostic: CH7PR03MB7860:EE_|CH4PR03MB7745:EE_
X-MS-Office365-Filtering-Correlation-Id: 355c37c0-ebeb-4467-eeec-08de9fbf1d09
X-MS-Exchange-SenderADCheck: 1
X-MS-Exchange-AntiSpam-Relay: 0
X-Microsoft-Antispam:
	BCL:0;ARA:13230040|366016|1800799024|376014|18002099003|56012099003|22082099003;
X-Microsoft-Antispam-Message-Info:
	4tMMIGIQvWlvg0qRXCfdglKvWx4RqOOj7hIY1Xc0MDAY6o694rMnuL6y4Rb21ATF7eY/rAkSNNGfRGY2tceBGkP7GQCwtCLcTg2bhmtbHE12582fQNo4INUyqN+iSQo4ovOMNlHOccEt90o3eY60RfGUJtBQ0VKasQ/irynK9Bdj/S9+XP/bSPsmKjGQB8jzz2N++8IYNeJ0pZ1gWLcsMkzPJLrt5KuW3ZgLigcEF/0gl2ClUkzZYk1sG9JRomPIEuF4Wc3EaZe7lE5P68BmUoBJAABoMNocthqptUpUVrA7eAdknytc2rewB1Diu7TtnLx56DT5pnVwHlJLB5ACyJWVSi6yk08PGvG7QZfoC1a5TnUc4T199/LiQlvQIleVPnkGOER7ZGEezAMvvh7Hc8is5Vw0jX6UnyYx8s9urnmQSKuK4aK5IKc62kutk4kqpXXUnmjq0DNdUoySrjknJaXQ2HNnMDbLaRE9QPbs2dSbL5KiyfeXJLBetiV0R+/UDJgmvuuWrsmdbCuLFTfLlKl58AVOIN0TMFcTLKPQlNVbASFVadlwLXAqK31jfWpniofHpvtqDSRjsS35Mc6p93ihI7jA36INnF3NihEVhZpCtNV/Zx1FUldubccu0azFr676Zm7ft19gcXAzdPoToEoCLTQE3zVoX2ukU9PT0+aW4fm7g+LGhNAsp+nu7f84
X-Forefront-Antispam-Report:
	CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:CH7PR03MB7860.namprd03.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(366016)(1800799024)(376014)(18002099003)(56012099003)(22082099003);DIR:OUT;SFP:1101;
X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1
X-MS-Exchange-AntiSpam-MessageData-0:
	=?utf-8?B?MjRSemViSkd6cnRPTDdoeXY5Tm9rNENmTUpWVVBPamRoem0wdEpzc2xUZlZS?=
 =?utf-8?B?TjdQRkg4eTJmNk1HUGcwblRhUUxGRE1vSEROdDZTalNHczNLN3o3bC80VFVl?=
 =?utf-8?B?M0V5V3h1MThiU2hZYk14QzVQY0xUZS9Nc2sxaDdxL1EwdmxscFNpaXJNV2xY?=
 =?utf-8?B?bWlTSEFJOHFOMEZ1YkZ2RXFlcFJQb0FiSWZObHdqL0J6ZDZaSDJPdis4TUxt?=
 =?utf-8?B?Qk9DakUrZHpDdWNtaGVrVG0wZHZYNFlIUWt0cGE4YlpHVG1PcFA5Y1QyQlN3?=
 =?utf-8?B?blFGa1M5WXI4WnFMWGFzZGhNTEdzVmp0UVNNR3QwYnNSNnJVcmFSUUVHK3hX?=
 =?utf-8?B?L2RvaHVqYVh0Uk5OS21kdmpCbFhUSERCbU5sem50WjVuWGMvWUZ5Vm9tZEdr?=
 =?utf-8?B?TUwxUlp6cldTOGY1QmhuMlhzN3BLQjRkQUQwai9Pa1JvUk14RUcvRDEwdk1E?=
 =?utf-8?B?RXFpQVZwWTNPOG9VRVRxRUpWMFNpSlQ5dmU2M3RIRVZoZFpCMWNVVVdmRktU?=
 =?utf-8?B?Nk9wRmM5N2lkdGFLczZxWGl5LzBrNGRaQjJvUjlCTW9Hdm1TbW5Henk4S0FG?=
 =?utf-8?B?dXhvczN5UU1NNkFhWU1WZjZSL2xqTnlwNlVEcGxUejliaUNBcS9vUE1QOHZu?=
 =?utf-8?B?cTN0TjQ0SHU4UkFEcDZldGQ3WEwrUUpPenkwSXVFTktpRGJTRW5ZSitYUkcw?=
 =?utf-8?B?QUliU1F2dE5ZK25YbEFmS0J2V0ZHZ2pYSHNYOHEraDU3QU51RzMyNmh6UWxX?=
 =?utf-8?B?SGs0ZVk1ZFZNbjFLdk5aRFlycER2dWYxOGJUYmU0Yy9mSjdBUHdQdGJnSFpi?=
 =?utf-8?B?WWNzaVR5WnVVOUlHTUhodWxCbFpoWE40eWxOeUM2Y0g2THVvRlFjQ1paSDBR?=
 =?utf-8?B?NjMzNUo4dUtueFhNbSttUnNTMG5KNmIvcFArMWd5UzRXQUpmU0QxbTBKUUJW?=
 =?utf-8?B?cHFzR1lGUi90Um9yLzUvNVE1WFpSbFp0dXF2N2Mxd2dHUG94di9JYmpnZTVD?=
 =?utf-8?B?UW4yanRpUDk2VEJvVmsrd2xKbG05ZnQ1M0FuU2pmek1LYnBBeDVhcmpheWky?=
 =?utf-8?B?RWorT0kzbVUrQnpieG5UaE8rZTZ4bXVsZ2RmUmJDUkdLVEJVZmtoNjd3S1Iz?=
 =?utf-8?B?aHhhWEdlOGdtL1IwWmp5cHg2WVRGRHdWUG1MUWVJemNQWDJsRmMrVUV5bVZG?=
 =?utf-8?B?TXFJaldWSHVsU0xCYngwVWRMRW80cnpMVDFOeXNRVVN6Qy94dGFSNEJGNHBE?=
 =?utf-8?B?aFN0NzJUT2ZvNU0yUm5WNmpHRzRzcWM1YTF2TSsvV1FpaTArOFlhNHlXZlNJ?=
 =?utf-8?B?dUdCZldUMG1yb01TMlJQMXlDQ0p2REhnMVh1Y3kxSTBYNUpNYjlCTHkzVHZS?=
 =?utf-8?B?WDIreEY0YXEwN2p4UlBUM3FTUDh3ZlpqUGVwVzU1SGJ6cmFtNHJGeVpnYlF6?=
 =?utf-8?B?dFBVSVFkQjZkcVd5Zis2SFBkb29yZDFTdmI4a1N3VXFoS1c1Rk1kcHlkNnJv?=
 =?utf-8?B?NHA0bVIrQkpRVEdNcWNrTUNVMkF4TEVpaWNGcEFIN3htVEVxMUZidTV0TFRp?=
 =?utf-8?B?Szgycnpoc1RGSHJ2WWpFMmNiYU5mazJwb0diejJmVi9KelpzTjFLcE5xV09N?=
 =?utf-8?B?VU9pRnJreHZ4WitHT1BPUDRCUngzTGJVTjdWZU1ZNW9kdFFMYU1WcFhCZFFK?=
 =?utf-8?B?ZFo0VnNhU1crcHNkZ3ZKTVI2MVVYcjZzbDNlRDJ5NnpzYmJOb2xJbWlXdm1o?=
 =?utf-8?B?NXJRY1JPeE1wczIyaEZEYTF3aVJ1d1BaZ01xYm03STBvKzgyVUVKSWtGclFL?=
 =?utf-8?B?dVNVMHRvZmxrRjl3UWhwemtRVWljcHArZlhQREVONWFwbWxJYysyMnpzZU1N?=
 =?utf-8?B?WEdseEV0Qk41dTQ3YmpPU3RlN0hURkh1SjloUDB3V05FdHlCdEYvTjgzNXlz?=
 =?utf-8?B?WGFwTUU4dml6Z2hZbUl2NXJNRk8rZTVvMC95Sml2M09JK1lOTCtBbjVLS0RK?=
 =?utf-8?B?SEFxenBManFJcjdYcWJKYnhIOUhZQkJGdlc5TW5GbWVpNndXYXRoMkEwbGZU?=
 =?utf-8?B?RjN4OEZwc1NwS3RlUHpXS2U2VFcyeWYzZjhlZzByYjVGNkdCcU9LekUweTFJ?=
 =?utf-8?B?M2RPZkVaeGhJem1hVUZXaVdOL29TSmtxL0VMZURNNEtoNEhtb1hTajNjNDY2?=
 =?utf-8?B?VFVycGJlYkdNbXBUcGx6MmhlWmF2dUh5dElQM2d4Uy9RY0o0dVlscHpKMkxx?=
 =?utf-8?B?MzN1dnhkbE1mQTdZRDdqbGk4REFaMGVUUTVVR1ZZelN1bUtKMTdSZDlwTnM4?=
 =?utf-8?B?QXh0Ry94S2REcHdvTnNpM3JmamJuQWxQMTNUaGJYVHRkd1I2dElEQT09?=
X-OriginatorOrg: citrix.com
X-MS-Exchange-CrossTenant-Network-Message-Id: 355c37c0-ebeb-4467-eeec-08de9fbf1d09
X-MS-Exchange-CrossTenant-AuthSource: CH7PR03MB7860.namprd03.prod.outlook.com
X-MS-Exchange-CrossTenant-AuthAs: Internal
X-MS-Exchange-CrossTenant-OriginalArrivalTime: 21 Apr 2026 16:00:31.0756
 (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: d8MeiTK+Se2eU27vuYtQVYvbFXeDogv6sz2B9eUh7+OJmibabd99kaR0bFdCNmciKJ+n2Z2C2qf4/N6NHplC4g==
X-MS-Exchange-Transport-CrossTenantHeadersStamped: CH4PR03MB7745
X-purgate-ID: tlsNG-16d1c6/1776787234-91D83D75-A8E38BEC/0/0
X-purgate-type: clean
X-purgate-size: 1285

On Tue, Apr 21, 2026 at 05:58:02PM +0200, Teddy Astie wrote:
> Le 21/04/2026 à 17:36, Roger Pau Monne a écrit :
> > ENODATA is not defined on FreeBSD:
> > 
> > xenpm.c:1380:17: error: use of undeclared identifier 'ENODATA'
> >   1380 |         errno = ENODATA;
> >        |                 ^
> > 1 error generated.
> > 
> > Fixes: edb657887a60 ("xenpm: Add get-core-temp subcommand")
> > Signed-off-by: Roger Pau Monné <roger.pau@citrix.com>
> > ---
> >   tools/misc/xenpm.c | 2 +-
> >   1 file changed, 1 insertion(+), 1 deletion(-)
> > 
> > diff --git a/tools/misc/xenpm.c b/tools/misc/xenpm.c
> > index 87107bd6c617..ecb39c911d84 100644
> > --- a/tools/misc/xenpm.c
> > +++ b/tools/misc/xenpm.c
> > @@ -1377,7 +1377,7 @@ static int fetch_dts_temp(xc_interface *xch, uint32_t cpu, bool package, int *te
> >       {
> >       case 0:
> >           /* This CPU isn't online or can't query this MSR */
> > -        errno = ENODATA;
> > +        errno = ENODEV;
> >           return -1;
> >   
> >       case 1:
> 
> I wasn't aware ENODATA wasn't available on some BSDs. Even though it's 
> supposed to be a part of POSIX.

Not in the last version I think?

https://pubs.opengroup.org/onlinepubs/9799919799/basedefs/errno.h.html

Regards, Roger.


From xen-devel-bounces@lists.xenproject.org Tue Apr 21 16:08:16 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 21 Apr 2026 16:08:16 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1289169.1569364 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wFDdy-0000Zg-CY; Tue, 21 Apr 2026 16:08:10 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1289169.1569364; Tue, 21 Apr 2026 16:08: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 1wFDdy-0000ZZ-8z; Tue, 21 Apr 2026 16:08:10 +0000
Received: by outflank-mailman (input) for mailman id 1289169;
 Tue, 21 Apr 2026 16:08:08 +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 1wFDdw-0000ZQ-MR
 for xen-devel@lists.xenproject.org; Tue, 21 Apr 2026 16:08:08 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wFDdv-00Bpkb-Hc
 for xen-devel@lists.xenproject.org; Tue, 21 Apr 2026 18:08:07 +0200
Received: from [10.42.69.4] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <jgross@suse.com>)
 id 69e7a0e0-2eae-0a2a0a5409dd-0a2a4504aab6-10
 for <xen-devel@lists.xenproject.org>; Tue, 21 Apr 2026 18:08:07 +0200
Received: from [209.85.218.52] (helo=mail-ej1-f52.google.com)
 by tlsNG-ebf023.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.1)
 (envelope-from <jgross@suse.com>)
 id 69e7a0e7-1dec-0a2a45040019-d155da34e18f-3
 for <xen-devel@lists.xenproject.org>; Tue, 21 Apr 2026 18:08:07 +0200
Received: by mail-ej1-f52.google.com with SMTP id
 a640c23a62f3a-ba699316b42so434391466b.3
 for <xen-devel@lists.xenproject.org>; Tue, 21 Apr 2026 09:08:07 -0700 (PDT)
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
 a640c23a62f3a-ba451210e26sm461865166b.8.2026.04.21.09.08.06
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Tue, 21 Apr 2026 09:08: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=google header.d=suse.com header.i="@suse.com" header.h="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=1776787687; x=1777392487; darn=lists.xenproject.org;
        h=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;
        bh=DpUR3zpwNe6NYFxvptwhn5vqTKVHQ8cRrINo7qEViDQ=;
        b=LtP/oI7SEgBpsJgn7Azw2R4yM+zcszav+fB7foJgnd5v82EVO7PaTO65C0Wy3nX6uR
         1ORUGyrUPamYqJXCYrH+VtyY2c3eIfS/vZ6ORSZUMRT348oRWG+Q/RnhbxPtz0vLx+5n
         FVQ95pz/2f1aBV/zh1HHUvUeH8hfRhkKIIOrEe8K6i6hxzv++xS01aK8uybPnPLiQ+jl
         aPZU+tF4CqltdCZlTaDniEQnuFMwsTlFHebkSR1fKx4TArbHmsrzZ+F5C61ouszWxFd/
         eXsHBtuwwshcKVcyuyq68XKzOsZh8n6IsN+H38sJONNMSPNFTKs0Vq5a1TvBM5ZIl9Mq
         AzXA==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20251104; t=1776787687; x=1777392487;
        h=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;
        bh=DpUR3zpwNe6NYFxvptwhn5vqTKVHQ8cRrINo7qEViDQ=;
        b=AZTgBWAfI9/WX0RuSIoDdnXRb/V0Nntm6kK0iHnWoZwWNgwQ0FLJmA+vRyiwFTVg7n
         tzIBVkRdhnTHNj1SEqad9GWfO+JSPbEkwVQP07X+uNJPU/Ls3loFHjoU4kuuTiXAllMM
         iMou6tyrMaGI5UVDsrb4+na2g1DrlolZ98ja31lz5KvqF0IVng/a0Xb5j0ukwuHj6vye
         q4sTKLB9xI0kSVsl64/efa9TGfVfOJA3iQLnsZYqd74mWLljRN5ruM2lzAwTImeJKigY
         h7j1HVcj7dzVtqDOxkbSzIp7MHxr+jzg4Vh/U4AiAp5ra31qRE1Y4Hk7BCS9LJ0SXuH8
         sU7w==
X-Forwarded-Encrypted: i=1; AFNElJ//AR0krzlNoe/KBG71prhUBfJzIC527Rr6HTDiMLIPRDxGo/krVwdMadtMChpiHz5NzTK5lFt4Cmk=@lists.xenproject.org
X-Gm-Message-State: AOJu0YxHm9HZKDO0MrHVziHeHkQgCrl2jGJMMSJWHvohvTVR39jk5pcr
	yADtM6PJcen0FO7bNbq+s+ORMS8kA9N4/zijASY05NEKYFAmK6qSpQ+3vVAlAe287VMismV/FOU
	Nd6FniVw=
X-Gm-Gg: AeBDies+Fikbrqsm7oqdlVeTbs6hOyRPj3F9Ftplzht/IaftgHXsDy/MxUzBMIXyW2Q
	uWklj2ky0ktbKNCAPa62+4ntFkDVj/tHau3dRB1ah/dbKMDKdOH0JdoZJ3WBVkj+XzYy942TSRU
	l0LjfY4D9+80U+92ooNXPym1s335RGv2TChz+7Gja302v08XjRZBSpHicAb2pYySdF3vdUQ3HwC
	JCJwkslacGdSUp1HGJywV+8wRf03OwCd6ClCG1eMLV/xoMSFDvOw3phVF00Y/jVA6tc371IZ3tP
	ejIYkw0MX9n4bqGS5zvsQTYEy/gFgwR6Aja6KBaq64DZ45D4oNjjzjjmvYiANU6WtAup03ZjUYV
	/hgQvffpx8O/HtGyWc0dm+THQR02t2iKGJkFXFIO8riW4ovyxmogaMZ6QRljxqHU7RhdetgggSu
	haakKcGwpjnjVNgrfQ0cf86iT5xljLomnH+8T4nXll5DzAzY+SVY52oe0M/y8T8iAW4W52i0cxH
	Dv9obbEIyd4p0F9Q0NzN0A6m1fd8o8elNxQ7NVuMfm+eK8DCHFwCoZApKxLmAOVdroJ6t4ZdYY=
X-Received: by 2002:a17:907:3c89:b0:ba8:8094:f7af with SMTP id a640c23a62f3a-ba88094fbc4mr374198766b.18.1776787686549;
        Tue, 21 Apr 2026 09:08:06 -0700 (PDT)
Message-ID: <be385a95-79ed-486d-8676-9a83dc2c7799@suse.com>
Date: Tue, 21 Apr 2026 18:08:05 +0200
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH v2 3/9] tools/libs/store: add support to use watches with
 a depth parameter
To: Jason Andryuk <jason.andryuk@amd.com>, xen-devel@lists.xenproject.org
Cc: Anthony PERARD <anthony.perard@vates.tech>, Julien Grall <julien@xen.org>
References: <20260421074211.308473-1-jgross@suse.com>
 <20260421074211.308473-4-jgross@suse.com>
 <df1be497-ff9b-4f08-ad83-54df9799dd1b@amd.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: <df1be497-ff9b-4f08-ad83-54df9799dd1b@amd.com>
Content-Type: multipart/signed; micalg=pgp-sha256;
 protocol="application/pgp-signature";
 boundary="------------tNrAKuoyg0AsY90OCqZRp0zv"
X-purgate-ID: tlsNG-ebf023/1776787687-324733FF-75D075D2/0/0
X-purgate-type: clean
X-purgate-size: 8371

This is an OpenPGP/MIME signed message (RFC 4880 and 3156)
--------------tNrAKuoyg0AsY90OCqZRp0zv
Content-Type: multipart/mixed; boundary="------------pkBYri3VE4GWdcG0NY5QG9D6";
 protected-headers="v1"
From: =?UTF-8?B?SsO8cmdlbiBHcm/Dnw==?= <jgross@suse.com>
To: Jason Andryuk <jason.andryuk@amd.com>, xen-devel@lists.xenproject.org
Cc: Anthony PERARD <anthony.perard@vates.tech>, Julien Grall <julien@xen.org>
Message-ID: <be385a95-79ed-486d-8676-9a83dc2c7799@suse.com>
Subject: Re: [PATCH v2 3/9] tools/libs/store: add support to use watches with
 a depth parameter
References: <20260421074211.308473-1-jgross@suse.com>
 <20260421074211.308473-4-jgross@suse.com>
 <df1be497-ff9b-4f08-ad83-54df9799dd1b@amd.com>
In-Reply-To: <df1be497-ff9b-4f08-ad83-54df9799dd1b@amd.com>

--------------pkBYri3VE4GWdcG0NY5QG9D6
Content-Type: multipart/mixed; boundary="------------x2aiDDPG0TzvigxCyVX2DDy8"

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

T24gMjEuMDQuMjYgMTU6NTQsIEphc29uIEFuZHJ5dWsgd3JvdGU6DQo+IE9uIDIwMjYtMDQt
MjEgMDM6NDIsIEp1ZXJnZW4gR3Jvc3Mgd3JvdGU6DQo+PiBBZGQgYSBuZXcgeHNfd2F0Y2hf
ZGVwdGgoKSBmdW5jdGlvbiB0byBsaWJ4ZW5zdG9yZSBhbGxvd2luZyB0byBsaW1pdA0KPj4g
dGhlIHNjb3BlIG9mIGEgWGVuc3RvcmUgd2F0Y2guIEl0IGNhbiBiZSB1c2VkIG9ubHkgaW4g
Y2FzZSBYZW5zdG9yZSBpcw0KPj4gc3VwcG9ydGluZyB0aGUgWEVOU1RPUkVfU0VSVkVSX0ZF
QVRVUkVfV0FUQ0hERVBUSCBmZWF0dXJlLg0KPj4NCj4+IEZvciBjb252ZW5pZW5jZSBhZGQg
YSB4c193YXRjaF90cnlfZGVwdGgoKSB3cmFwcGVyLCB3aGljaCB3aWxsIGNhbGwNCj4+IHhz
X3dhdGNoX2RlcHRoKCkgaWYgc3VwcG9ydGVkIGFuZCB4c193YXRjaCgpIG90aGVyd2lzZS4N
Cj4+DQo+PiBDYWNoZSB0aGUgc3VwcG9ydGVkIGZlYXR1cmVzIG9mIFhlbnN0b3JlIGluIG9y
ZGVyIG5vdCBoYXZpbmcgdG8gZ2V0DQo+PiB0aGVtIGZyb20gWGVuc3RvcmUgZm9yIGVhY2gg
Y2FsbCBvZiBvbmUgb2YgdGhlIG5ldyBmdW5jdGlvbnMuDQo+Pg0KPj4gU2lnbmVkLW9mZi1i
eTogSnVlcmdlbiBHcm9zcyA8amdyb3NzQHN1c2UuY29tPg0KPiANCj4gDQo+PiBkaWZmIC0t
Z2l0IGEvdG9vbHMvbGlicy9zdG9yZS94cy5jIGIvdG9vbHMvbGlicy9zdG9yZS94cy5jDQo+
PiBpbmRleCAwNjQ2MjQ0NWUwLi5jYjM1MDhhODZhIDEwMDY0NA0KPj4gLS0tIGEvdG9vbHMv
bGlicy9zdG9yZS94cy5jDQo+PiArKysgYi90b29scy9saWJzL3N0b3JlL3hzLmMNCj4gDQo+
PiBAQCAtMTAwMSw4ICs5OTMsOCBAQCBib29sIHhzX3dhdGNoKHN0cnVjdCB4c19oYW5kbGUg
KmgsIGNvbnN0IGNoYXIgKnBhdGgsIA0KPj4gY29uc3QgY2hhciAqdG9rZW4pDQo+PiDCoCAj
IGRlZmluZSBQVEhSRUFEX1NUQUNLX01JTiAwDQo+PiDCoCAjZW5kaWYNCj4+IC0jZGVmaW5l
IFJFQURfVEhSRUFEX1NUQUNLU0laRcKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg
wqDCoMKgwqAgXA0KPj4gLcKgwqDCoCAoKERFRkFVTFRfVEhSRUFEX1NUQUNLU0laRSA8IFBU
SFJFQURfU1RBQ0tfTUlOKSA/wqDCoMKgwqAgXA0KPj4gKyNkZWZpbmUgUkVBRF9USFJFQURf
U1RBQ0tTSVpFwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgXA0KPj4g
K8KgwqDCoCAoKERFRkFVTFRfVEhSRUFEX1NUQUNLU0laRSA8IFBUSFJFQURfU1RBQ0tfTUlO
KSA/wqDCoMKgIFwNCj4gDQo+IFRoaXMgaXMgYW4gdW5yZWxhdGVkIHdoaXRlc3BhY2UgY2hh
bmdlLCBhbmQgbm90IG1lbnRpb25lZCBpbiB0aGUgY29tbWl0IA0KPiBtZXNzYWdlLsKgIEl0
IHNob3VsZCBwcm9iYWJseSBiZSBkcm9wcGVkIHNpbmNlIHRoZSBzdXJyb3VuZGluZyBsaW5l
cyBhcmUgbm8gDQo+IGxvbmdlciB0b3VjaGVkLsKgIEFsdGVybmF0aXZlbHkga2VwdCBhbmQg
bWVudGlvbmVkLsKgIFdpdGggZWl0aGVyIG9mIHRob3NlOg0KPiANCj4gUmV2aWV3ZWQtYnk6
IEphc29uIEFuZHJ5dWsgPGphc29uLmFuZHJ5dWtAYW1kLmNvbT4NCg0KVGhhbmtzLg0KDQpX
aG9ldmVyIGlzIGNvbW1pdHRpbmcgdGhpczogSSdkIHJhdGhlciBleHBhbmQgdGhlIGNvbW1p
dCBtZXNzYWdlIHdpdGg6DQoNCldoaWxlIHRvdWNoaW5nIHRoZSBmaWxlIGZpeCBhIHdoaXRl
c3BhY2UgaXNzdWUuDQoNClNoYWxsIEkgcmVzdWJtaXQgdGhpcyBwYXRjaCwgb3IgY2FuIHRo
aXMgYmUgYW1lbmRlZCB3aGlsZSBjb21taXR0aW5nPw0KDQoNCkp1ZXJnZW4NCg==
--------------x2aiDDPG0TzvigxCyVX2DDy8
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-----

--------------x2aiDDPG0TzvigxCyVX2DDy8--

--------------pkBYri3VE4GWdcG0NY5QG9D6--

--------------tNrAKuoyg0AsY90OCqZRp0zv
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/Ey8FAmnnoOUFAwAAAAAACgkQsN6d1ii/Ey+E
UQf6AvimrCjT+qeS/EMALzX54pVz4XVR4Ic+oP0KoC9I6M1lZDdj/u47Q8df8+eKMm7E7Skcx/M3
/yV4ISbhNbJjo4F87ZAcPvhhHhdjEA9G/mMjORYdynKdpTaCZ+ARhv9wfOkBABsG4nQ2vnZjNb7O
oWLJvtqusHz+AzCzm++NE0C/MO6aulSoLvXYiLAUD58jZdHRBFsPNCSsDn/QHtMeLlkBq9beJPnR
pvHQ/+Ll+kbqyD8d2SMMb/TKAMHiQYK4mxgHRZ9klAAdHHXaOEWoRvi6GuMg6hb3Qm3vtFcIQo9x
GiGWltqXWTMqYURuZARJAYIpVIB+0/8QwWUrzqD1yA==
=E4br
-----END PGP SIGNATURE-----

--------------tNrAKuoyg0AsY90OCqZRp0zv--


From xen-devel-bounces@lists.xenproject.org Tue Apr 21 16:16:21 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 21 Apr 2026 16:16:21 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1289180.1569373 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wFDln-00026z-3b; Tue, 21 Apr 2026 16:16:15 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1289180.1569373; Tue, 21 Apr 2026 16:16: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 1wFDln-00026s-0T; Tue, 21 Apr 2026 16:16:15 +0000
Received: by outflank-mailman (input) for mailman id 1289180;
 Tue, 21 Apr 2026 16:16:13 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <bernhard.kaindl@citrix.com>) id 1wFDlk-00026m-Uh
 for xen-devel@lists.xenproject.org; Tue, 21 Apr 2026 16:16:12 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wFDlk-00CoEo-Bm
 for xen-devel@lists.xenproject.org; Tue, 21 Apr 2026 18:16:12 +0200
Received: from [10.42.69.5] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <bernhard.kaindl@citrix.com>)
 id 69e7a2b5-bab6-0a2a0a5309dd-0a2a4505c4d2-40
 for <xen-devel@lists.xenproject.org>; Tue, 21 Apr 2026 18:16:12 +0200
Received: from [160.101.131.9] (helo=na1pdmzitismtp02.tibco.com)
 by tlsNG-c201ff.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.1)
 (envelope-from <bernhard.kaindl@citrix.com>)
 id 69e7a2cb-aaa8-0a2a45050019-a0658309a4bc-3
 for <xen-devel@lists.xenproject.org>; Tue, 21 Apr 2026 18:16:12 +0200
Received: from debian.eng.citrite.net (unknown [10.113.40.46])
 by na1pdmzitismtp02.tibco.com (Postfix) with ESMTP id 8849981B9152;
 Tue, 21 Apr 2026 12:15:14 -0400 (EDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-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: Bernhard Kaindl <bernhard.kaindl@citrix.com>
To: xen-devel@lists.xenproject.org
Cc: Bernhard Kaindl <bernhard.kaindl@citrix.com>,
	"Daniel P. Smith" <dpsmith@apertussolutions.com>,
	=?UTF-8?q?Marek=20Marczykowski-G=C3=B3recki?= <marmarek@invisiblethingslab.com>,
	Jan Beulich <jbeulich@suse.com>
Subject: [PATCH 1/1] xen/efi: Config parsing: Free the same page count as allocated.
Date: Tue, 21 Apr 2026 17:13:50 +0100
Message-Id: <127e7a4e0bf360d7ffe8be94022840a353a307b2.1776787216.git.bernhard.kaindl@citrix.com>
X-Mailer: git-send-email 2.39.5
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit
X-purgate-ID: tlsNG-c201ff/1776788172-E07AE443-785AB7C8/0/0
X-purgate-type: clean
X-purgate-size: 4121

When reading the config file or the config section, we may need to append
a terminating NUL byte to the config buffer if the last byte is not a
control character.

This may cause an additional page to be allocated by efi_bs->AllocatePages()
if the config file or config section size is a multiple of the page size.

For this case, increment file->size by one so the number of pages to be
freed by efi_bs->FreePages() is the same as the number of pages allocated
by efi_bs->AllocatePages() when the additional byte is allocated.

I moved the dcache flush after the NUL termination so the flushed range
covers the final buffer contents.

I didn't add a dcache flush for the copied cfg buffer in read_section():
that buffer is created by memcpy() and then consumed only by normal CPU
reads in the EFI loader, so there is no non-coherent producer or other
observer that would require cache maintenance.

Fixes: df75f77092c1 ("EFI: avoid OOB config file reads")
Signed-off-by: Bernhard Kaindl <bernhard.kaindl@citrix.com>

----
PS: The same fix applies to its backport to 4.21 and other branches,
for example:

stable-4.21:
Fixes: feb99494bf59 ("EFI: avoid OOB config file reads")

stable-4.20:
Fixes: 05b8f716aa32 ("EFI: avoid OOB config file reads")

PPS: A review using GPT-5.4 (just a data point for review) confirms what
I've found by manual code inspection:

> The fix in boot.c:882-886 and boot.c:913-928 is consistent with the existing
> free sites at boot.c:790-797, boot.c:1564-1567, and boot.c:1638-1641: Once the
> config buffer gets an extra terminating byte, using the incremented size for
> PFN_UP during FreePages is the right fix.
>
> I also checked the parser helpers at boot.c:584-641; they already operate on
> a bounded buffer and treat NUL/control bytes as terminators, so the synthetic
> extra byte does not create an obvious parsing regression.
---
 xen/common/efi/boot.c | 14 +++++++++-----
 1 file changed, 9 insertions(+), 5 deletions(-)

diff --git a/xen/common/efi/boot.c b/xen/common/efi/boot.c
index b44762878be4..94461b113180 100644
--- a/xen/common/efi/boot.c
+++ b/xen/common/efi/boot.c
@@ -858,7 +858,8 @@ static bool __init read_file(EFI_FILE_HANDLE dir_handle, CHAR16 *name,
     what = L"Allocation";
     file->addr = min(1UL << (32 + PAGE_SHIFT),
                      HYPERVISOR_VIRT_END - DIRECTMAP_VIRT_START);
-    /* For config files allocate an extra byte to put a NUL there. */
+
+    /* For config file buffers, allocate space for the terminating NUL byte */
     ret = efi_bs->AllocatePages(AllocateMaxAddress, EfiLoaderData,
                                 PFN_UP(size + (file == &cfg)), &file->addr);
     if ( EFI_ERROR(ret) )
@@ -877,10 +878,12 @@ static bool __init read_file(EFI_FILE_HANDLE dir_handle, CHAR16 *name,
 
     FileHandle->Close(FileHandle);
 
-    efi_arch_flush_dcache_area(file->ptr, file->size);
-
     if ( file == &cfg )
-        file->str[file->size] = 0;
+    {
+        file->str[file->size] = 0; /* NUL-terminate the config data buffer. */
+        file->size += 1;           /* Free the same page count as allocated. */
+    }
+    efi_arch_flush_dcache_area(file->ptr, file->size);
 
     return true;
 
@@ -907,9 +910,9 @@ static bool __init read_section(const EFI_LOADED_IMAGE *image,
 
     file->ptr = ptr;
 
-    /* For cfg file, if necessary allocate space to put an extra NUL there. */
     if ( file == &cfg && file->size && !iscntrl(file->str[file->size - 1]) )
     {
+        /* Create a copy the config section for terminating the config buffer */
         EFI_PHYSICAL_ADDRESS addr;
         EFI_STATUS ret = efi_bs->AllocatePages(AllocateMaxAddress,
                                                EfiLoaderData,
@@ -922,6 +925,7 @@ static bool __init read_section(const EFI_LOADED_IMAGE *image,
         file->addr = addr;
         file->need_to_free = true;
         file->str[file->size] = 0;
+        file->size += 1; /* Free the same page count as allocated. */
     }
 
     handle_file_info(name, file, options);
-- 
2.39.5



From xen-devel-bounces@lists.xenproject.org Tue Apr 21 16:55:36 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 21 Apr 2026 16:55:36 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1289227.1569382 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wFENe-00008b-Ud; Tue, 21 Apr 2026 16:55:22 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1289227.1569382; Tue, 21 Apr 2026 16:55: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 1wFENe-00008T-Rk; Tue, 21 Apr 2026 16:55:22 +0000
Received: by outflank-mailman (input) for mailman id 1289227;
 Tue, 21 Apr 2026 16:55:21 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <val@invisiblethingslab.com>) id 1wFENd-00008N-It
 for xen-devel@lists.xenproject.org; Tue, 21 Apr 2026 16:55:21 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wFENc-00FJfv-QV
 for xen-devel@lists.xenproject.org; Tue, 21 Apr 2026 18:55:20 +0200
Received: from [10.42.69.10] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <val@invisiblethingslab.com>)
 id 69e7abf5-e002-0a2a0a5209dd-0a2a450acc28-10
 for <xen-devel@lists.xenproject.org>; Tue, 21 Apr 2026 18:55:20 +0200
Received: from [103.168.172.155] (helo=fhigh-a4-smtp.messagingengine.com)
 by tlsNG-4011c0.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.1)
 (envelope-from <val@invisiblethingslab.com>)
 id 69e7abf7-56b3-0a2a450a0019-67a8ac9bad83-3
 for <xen-devel@lists.xenproject.org>; Tue, 21 Apr 2026 18:55:20 +0200
Received: from phl-compute-06.internal (phl-compute-06.internal [10.202.2.46])
 by mailfhigh.phl.internal (Postfix) with ESMTP id 376C814000A9;
 Tue, 21 Apr 2026 12:55:19 -0400 (EDT)
Received: from phl-frontend-03 ([10.202.2.162])
 by phl-compute-06.internal (MEProxy); Tue, 21 Apr 2026 12:55:19 -0400
Received: by mail.messagingengine.com (Postfix) with ESMTPA; Tue,
 21 Apr 2026 12:55:17 -0400 (EDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@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-Transfer-Encoding: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-Transfer-Encoding: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-transfer-encoding
	: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=1776790519; x=1776876919; bh=2zn4a4qW9U
	F0PfDVNgzFec7Aa/HkeyvZuozs7DNUuLM=; b=lVy4WTu772b39w3Jf/ZEzgXq1T
	WawhPX4Qeosv+NJoTEn1ZBBainBg+/s98I4FRoA+hzUqWuZZsPivu3I1c/f56l2Z
	HHFxZU49WXmAmPUPOU8VLDStywmhl7RyRN3tiLPg9w+o9JiVEzw3oojJD6/eqmfq
	zdS9J8nLfr4tqT/zTp/H+pFCIVYFw8Z8E+3i6zjLxW0IyKzX6rHcqKnmi4zwwkDD
	70Co+RGwXEA3kGv1AIkVdZQGMF0F53/JIbZJEVv5hG2iiI0cGgL5aRUL8Hfahx3x
	hPSLok3fFcMpfeCZch3/vxEfWpclbWbY1AKXUxKQ6yRmpRTdtd2k6hKDlSAw==
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=
	messagingengine.com; h=cc:cc:content-transfer-encoding
	: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=1776790519; x=
	1776876919; bh=2zn4a4qW9UF0PfDVNgzFec7Aa/HkeyvZuozs7DNUuLM=; b=u
	iTLpeQVGWudbY5PhHOM8kiMrZMBYQLyD7FlDvGqN+4xFotyMxPwaTSXpkyBe0EYI
	uNe0o9YFQvxAG3KzGR7jqk1s/LofN6yfem3+BXn/8F4YiHjoCHOfa4KcPPTI/B29
	mnOh35i5/lDuEEtQ/SGuhO1M3Ic8fQgbF1ytDfiap51UW5ig3DETz3QOKryIoa6K
	tMLWogdJbqiel15GgVYI80av39eBhEqy9Qo1iVmN0rtSkdlHHBNoCw2FQn4t7fQ2
	p75u4yOj1VTb2f9th9Uz1o9HSw6YKtl9WiwxSgyYthXg/N7VQyLC7fbRzc02axo3
	zmpJZOVTqeXjw+Y4vaBVw==
X-ME-Sender: <xms:9qvnaYjznKArJo5qJExq7I_TN-X40gMjw6mvZ3vvvKNblVJtmOyolg>
    <xme:9qvnabFATSmSrPd7AYlfIbbcUvLeiNbKXiNl7cE9Fwdno1YFpibRa_bDTXrK_Izoh
    UIa-DxpVb_YCZZ70vzlw2nWCfHTusZ_2gEmL7YTSXoFRvq0ZW0F>
X-ME-Received: <xmr:9qvnaf_sCZPzdWc8St9FuPfcExt4H8pHK4UaOFISHKWWbZoc5D0dn3aNS7NmwpOYby-jffg0a5VTvY5JMVHzku5IvL2PO7MJww>
X-ME-Proxy-Cause: gggruggvucftvghtrhhoucdtuddrgeefhedrtddtgdeiudelvdcutefuodetggdotefrod
    ftvfcurfhrohhfihhlvgemucfhrghsthforghilhdpuffrtefokffrpgfnqfghnecuuegr
    ihhlohhuthemuceftddtnecusecvtfgvtghiphhivghnthhsucdlqddutddtmdenucfjug
    hrpefkffggfgfuvfevfhfhjggtgfesthekredttddvjeenucfhrhhomhepgggrlhcurfgr
    tghkvghtthcuoehvrghlsehinhhvihhsihgslhgvthhhihhnghhslhgrsgdrtghomheqne
    cuggftrfgrthhtvghrnhepheekgfefveetkeethffhgeeivdffkeegueevkeefveeltefg
    leehffegudegkedvnecuffhomhgrihhnpehgihhthhhusgdrtghomhenucevlhhushhtvg
    hrufhiiigvpedtnecurfgrrhgrmhepmhgrihhlfhhrohhmpehvrghlsehinhhvihhsihgs
    lhgvthhhihhnghhslhgrsgdrtghomhdpnhgspghrtghpthhtohepjedpmhhouggvpehsmh
    htphhouhhtpdhrtghpthhtohepuggvmhhiohgsvghnohhurhesghhmrghilhdrtghomhdp
    rhgtphhtthhopegthhhrihhsthhirghnrdhkohgvnhhighesrghmugdrtghomhdprhgtph
    htthhopegurhhiqdguvghvvghlsehlihhsthhsrdhfrhgvvgguvghskhhtohhprdhorhhg
    pdhrtghpthhtohepgigvnhdquggvvhgvlheslhhishhtshdrgigvnhhprhhojhgvtghtrd
    horhhgpdhrtghpthhtoheplhhinhhugidqmhgvughirgesvhhgvghrrdhkvghrnhgvlhdr
    ohhrghdprhgtphhtthhopehsuhhmihhtrdhsvghmfigrlheslhhinhgrrhhordhorhhgpd
    hrtghpthhtohepphhivghrrhgvqdgvrhhitgdrphgvlhhlohhugidqphhrrgihvghrsegr
    mhgurdgtohhm
X-ME-Proxy: <xmx:9qvnaaz9o7Hhwkq9a4l-PDlhylhfTROJthGoElg-_zoQs8iVwNiqfw>
    <xmx:9qvnaTNI2I604FqF2c3PDY9CyH5bIxDaVObcYaq_ig56r2IzpYwQFA>
    <xmx:9qvnaX-t4WDK-HI82ohdvRWuV0p8MbUKoTT8EQUcDbn7HRx5UKLrtQ>
    <xmx:9qvnaY6HST0z1SO8cDSMNe8ssP_1YKmoAzoB3dpiCUMwhjT0UE6d9A>
    <xmx:96vnae-UbyH_244q_LhhTyJHJQO3NdqoDTPCrQ0h1nsigFMViaq0ow6_>
Feedback-ID: i001e48d0:Fastmail
Message-ID: <de6777c1-1165-4ace-a5a7-3004aa9ea8c5@invisiblethingslab.com>
Date: Tue, 21 Apr 2026 13:55:14 -0300
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: Pinned, non-revocable mappings of VRAM: will bad things happen?
To: Demi Marie Obenour <demiobenour@gmail.com>,
 =?UTF-8?Q?Christian_K=C3=B6nig?= <christian.koenig@amd.com>,
 dri-devel@lists.freedesktop.org,
 Xen developer discussion <xen-devel@lists.xenproject.org>,
 linux-media@vger.kernel.org
Cc: Suwit Semal <sumit.semwal@linaro.org>,
 "Pelloux-Prayer, Pierre-Eric" <Pierre-eric.Pelloux-prayer@amd.com>
References: <a06133f7-3093-4733-9786-bc46c1453e06@gmail.com>
 <b8d04414-18b5-40f7-9ea2-88b30ff5bea0@amd.com>
 <c7865b27-6bf1-4df1-9520-c9ef6b3ef368@gmail.com>
 <4751cf03-d3c1-4d5d-af8e-39ad7c8ffb84@amd.com>
 <7472bfcf-8c22-4ac7-b903-a883cdb8f1c6@gmail.com>
 <8fe8b78b-5294-4319-af92-a4fb00527417@amd.com>
 <8846bac5-77ff-4439-ac5c-c33cdb4a94e3@gmail.com>
 <964c3670-fad3-44ce-bd93-2057bca2dcb8@amd.com>
 <08ad2301-3163-4497-8869-fa4cea30b384@gmail.com>
 <e5c00f2c-0819-48b4-b66e-71b9a40a7235@amd.com>
 <686713fc-c762-4b1b-88b2-d486d4f38ac6@gmail.com>
Content-Language: en-US
From: Val Packett <val@invisiblethingslab.com>
Autocrypt: addr=val@invisiblethingslab.com; keydata=
 xm8EaFTEiRMFK4EEACIDAwQ+qzawvLuE95iu+QkRqp8P9z6XvFopWtYOaEnYf/nE8KWCnsCD
 jz82tdbKBpmVOdR6ViLD9tzHvaZ1NqZ9mbrszMXq09VfefoCfZp8jnA2yCT8Y4ykmv6902Ne
 NnlkVwrNKFZhbCBQYWNrZXR0IDx2YWxAaW52aXNpYmxldGhpbmdzbGFiLmNvbT7CswQTEwkA
 OxYhBAFMrro+oMGIFPc7Uc87uZxqzalRBQJoVMSJAhsDBQsJCAcCAiICBhUKCQgLAgQWAgMB
 Ah4HAheAAAoJEM87uZxqzalRlIIBf0cujzfSLhvib9iY8LBh8Tirgypm+hJHoY563xhP0YRS
 pmqZ6goIuSGpEKcW5mV3egF/TLLAOjsfroWae4giImTVOJvLOsUycxAP4O5b1Qiy+cCGsHKA
 nCRzrvqnPkyf4OeRznMEaFTEiRIFK4EEACIDAwSffe3tlMmmg3eKVp7SJ+CNZLN0M5qzHSCV
 dBBkIVvEJo+8SDg4jrx/832rxpvMCz2+x7+OHaeBHKafhOWUccYBLKqV/3nBftxCkbzXDbfY
 d02BY9H4wBIn0Y3GnwoIXRgDAQkJwpgEGBMJACAWIQQBTK66PqDBiBT3O1HPO7mcas2pUQUC
 aFTEiQIbDAAKCRDPO7mcas2pUaptAX9f7yUJLGU4C6XjMJvXd8Sz6cGTyxkngPtUyFiNqtad
 /GXBi3vHKYNfSrdqJ8wmZ8MBgOqWaaa1wE4/3qZU8d4RNR8mF7O40WYK/wdf1ycq1uGad8PN
 UDOwAqdfvuF3w8QMPw==
In-Reply-To: <686713fc-c762-4b1b-88b2-d486d4f38ac6@gmail.com>
Content-Type: text/plain; charset=UTF-8; format=flowed
Content-Transfer-Encoding: 8bit
X-purgate-ID: tlsNG-4011c0/1776790520-45F698B7-5C0A7948/0/0
X-purgate-type: clean
X-purgate-size: 6599


On 4/20/26 4:12 PM, Demi Marie Obenour wrote:
> On 4/20/26 14:53, Christian König wrote:
>> On 4/20/26 20:46, Demi Marie Obenour wrote:
>>> On 4/20/26 13:58, Christian König wrote:
>>>> On 4/20/26 19:03, Demi Marie Obenour wrote:
>>>>> On 4/20/26 04:49, Christian König wrote:
>>>>>> On 4/17/26 21:35, Demi Marie Obenour wrote:
>>>> ...
>>>>>>> Are any of the following reasonable options?
>>>>>>>
>>>>>>> 1. Change the guest kernel to only map (and thus pin) a small subset
>>>>>>>     of VRAM at any given time.  If unmapped VRAM is accessed the guest
>>>>>>>     traps the page fault, evicts an old VRAM mapping, and creates a
>>>>>>>     new one.
>>>>>> Yeah, that could potentially work.
>>>>>>
>>>>>> This is basically what we do on the host kernel driver when we can't resize the BAR for some reason. In that use case VRAM buffers are shuffled in and out of the CPU accessible window of VRAM on demand.
>>>>> How much is this going to hurt performance?
>>>> Hard to say, resizing the BAR can easily give you 10-15% more performance on some use cases.
>>>>
>>>> But that involves physically transferring the data using a DMA. For this solution we basically only have to we basically only have to transfer a few messages between host and guest.
>>>>
>>>> No idea how performant that is.
>>> In this use-case, 20-30% performance penalties are likely to be
>>> "business as usual".
>> Well that is quite a bit.
>>
>>> Close to native performance would be ideal, but
>>> to be useful it just needs to beat software rendering by a wide margin,
>>> and not cause data corruption or vulnerabilities.
>> That should still easily be the case, even trivial use cases are multiple magnitudes faster on GPUs compared to software rendering.
> Makes sense.  If only GPUs supported easy and flexible virtualization the way CPUs do :(.
>
>>>>>> But I have one question: When XEN has a problem handling faults from the guest on the host then how does that work for system memory mappings?
>>>>>>
>>>>>> There is really no difference between VRAM and system memory in the handling for the GPU driver stack.
>>>>>>
>>>>>> Regards,
>>>>>> Christian.
>>>>> Generally, Xen makes the frontend (usually an unprivileged VM)
>>>>> responsible for providing mappings to the backend (usually the host).
>>>>> That is possible with system RAM but not with VRAM, because Xen has
>>>>> no awareness of VRAM.  To Xen, VRAM is just a PCI BAR.
>>>> No, that doesn't work with system memory allocations of GPU drivers either.
>>>>
>>>> We already had it multiple times that people tried to be clever and incremented the page reference counter on driver allocated system memory and were totally surprised that this can result in security issues and data corruption.
>>>>
>>>> I seriously hope that this isn't the case here again. As far as I know XEN already has support for accessing VMAs with VM_PFN or otherwise I don't know how driver allocated system memory access could potentially work.
>>>>
>>>> Accessing VRAM is pretty much the same use case as far as I can see.
>>>>
>>>> Regards,
>>>> Christian.
>>> The Xen-native approach would be for system memory allocations to
>>> be made using the Xen driver and then imported into the virtio-GPU
>>> driver via dmabuf.  Is there any chance this could be made to happen?
>> That could be. Adding Pierre-Eric to comment since he knows that use much better than I do.
>>
>>> If it's a lost cause, then how much is the memory overhead of pinning
>>> everything ever used in a dmabuf?  It should be possible to account
>>> pinned host memory against a guest's quota, but if that leads to an
>>> unusable system it isn't going to be good.
>> That won't work at all.
>>
>> We have use cases where you *must* migrate a DMA-buf to VRAM or otherwise the GPU can't use it.
>>
>> A simple scanout to a monitor is such an use case for example, that is usually not possible from system memory.
> Direct scanout isn't a concern here.
>
>>> Is supporting page faults in Xen the only solution that will be viable
>>> long-term, considering the tolerance for very substantial performance
>>> overheads compared to native?  AAA gaming isn't the initial goal here.
>>> Qubes OS already supports PCI passthrough for that.
>> We have AAA gaming working on XEN through native context working for quite a while.
>>
>> Pierre-Eric can tell you more about that.
>>
>> Regards,
>> Christian.
> I've heard of that, but last I checked it required downstream patches
> to Xen, Linux, and QEMU.  I don't know if any of those have been
> upstreamed since, but I believe that upstreaming the Xen and Linux
> patches (or rewriting them and upstreaming the rewritten version) would
> be necessary.  Qubes OS (which I don't work for anymore but still want
> to help with this) almost certainly won't be using QEMU for GPU stuff.

Yeah, our plan is to use xen-vhost-frontend[1] + vhost-device-gpu, 
ported/extended/modified as necessary. (I already have 
xen-vhost-frontend itself working on amd64 PVH with purely xenbus-based 
hotplug/configuration, currently working on cleaning up and submitting 
the necessary patches.)

I'm curious to hear more details about how AMD has it working but last 
time I checked, there weren't any missing pieces in Xen or Linux that 
we'd need.. The AMD downstream changes were mostly related to QEMU.

As for the memory management concerns, I would like to remind everyone 
once again that the pinning of GPU dmabufs in regular graphics workloads 
would be *very* short-term. In GPU paravirtualization (native contexts 
or venus or whatever else) the guest mostly operates on *opaque handles* 
that refer to buffers owned by the host GPU process. The typical 
rendering process (roughly) only involves submitting commands to the GPU 
that refer to memory using these handles. Only upon mmap() would a 
buffer be pinned/granted to the guest, and those are typically only used 
for *uploads* where the guest immediately does its memcpy() and unmaps 
the buffer.

So I'm not worried about (unintentionally) pinning too much GPU driver 
memory.

In terms of deliberate denial-of-service attacks from the guest to the 
host, the only reasonable response is:

¯\_(ツ)_/¯

CPU-mapping lots of GPU memory is far from the only DoS vector, the GPU 
commands themselves can easily wedge the GPU core in a million ways (and 
last time I checked amdgpu was noooot so good at recovering from hangs).


[1]: https://github.com/vireshk/xen-vhost-frontend

~val



From xen-devel-bounces@lists.xenproject.org Tue Apr 21 17:44:01 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 21 Apr 2026 17:44:01 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1289260.1569391 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wFF8b-0007zI-BH; Tue, 21 Apr 2026 17:43:53 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1289260.1569391; Tue, 21 Apr 2026 17:43: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 1wFF8b-0007zB-8N; Tue, 21 Apr 2026 17:43:53 +0000
Received: by outflank-mailman (input) for mailman id 1289260;
 Tue, 21 Apr 2026 17:43:52 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <Christian.Koenig@amd.com>) id 1wFF8Z-0007z5-So
 for xen-devel@lists.xenproject.org; Tue, 21 Apr 2026 17:43:52 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wFF8Z-008LGe-9s
 for xen-devel@lists.xenproject.org; Tue, 21 Apr 2026 19:43:51 +0200
Received: from [10.42.69.12] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <Christian.Koenig@amd.com>)
 id 69e7b744-2eae-0a2a0a5409dd-0a2a450cd4a8-4
 for <xen-devel@lists.xenproject.org>; Tue, 21 Apr 2026 19:43:50 +0200
Received: from [40.107.209.60]
 (helo=PH8PR06CU001.outbound.protection.outlook.com)
 by tlsNG-d25034.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.1)
 (envelope-from <Christian.Koenig@amd.com>)
 id 69e7b755-62f1-0a2a450c0019-286bd13cf869-3
 for <xen-devel@lists.xenproject.org>; Tue, 21 Apr 2026 19:43:50 +0200
Received: from PH7PR12MB5685.namprd12.prod.outlook.com (2603:10b6:510:13c::22)
 by CY8PR12MB9035.namprd12.prod.outlook.com (2603:10b6:930:77::11)
 with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9846.16; Tue, 21 Apr
 2026 17:43:46 +0000
Received: from PH7PR12MB5685.namprd12.prod.outlook.com
 ([fe80::ce69:cfae:774d:a65c]) by PH7PR12MB5685.namprd12.prod.outlook.com
 ([fe80::ce69:cfae:774d:a65c%5]) with mapi id 15.20.9846.016; Tue, 21 Apr 2026
 17:43: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=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=SZwvTrAloADlkrK62GVftDHR9MlSoXn226+3QrUbKK1fA6E5NoNRybv+THU7lZrNk5et7u1FSkupo34azI4VJvGU2OigOazYliHJ/vTY9BhgQRepLvbQGYkgdaixWaWGi3KM9bF7PwR0HFXSb9Jj5GXj4vRFirIJ8eoqKk0eG4FV5fDC8OfTgP0Dl3+r3K4rVo1VClVawla7jEmZmgK+6gSwyZJp0Kf24mi4etsR9z2i9xRnGOY0x0YM45zLaLPEHDsTTS4FH0UmbwFCw39YxIJf/encmNd7/fd18uNblzCNHd3TitD+VkoXxLIwY/8KDsfztVaEo3kD7mWNzstgMg==
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com;
 s=arcselector10001;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1;
 bh=/d20sBKFlUaHRpoAKBBhzJ1Qu39OZv02Y2A0bpdBgCg=;
 b=nZJx9pJTwYmVkb9qOQ2qQHz2cdcI5s105lKNSBoft/rCciaFLDHmuxb5LY9UyRLJxcZsqTHd5eNZn4DqWyod19MRXSGO/r7uEochmRSblWB41U7jTvIBv+uw4fXHKCw0KoCh9Ua9NJUy/BV0fcF9yYbrOXOol98EJV7PF0tLDFBOf4Hcyo4o7qT40BZ6Qeme2WWHcGdsaB7KjG1xicivcct/Dl8jaCC9hKUt96mZS83nKH3lnYuf0xYE2TyZ/xDrSnUuPqVquwrZJwLRx5SZSe4tnz/oTfmOiwna9W0I3jGsdrAt2sLJ7kcfE2SgX2J7qN9Al9n+wSBw9mBvnVu7LQ==
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=/d20sBKFlUaHRpoAKBBhzJ1Qu39OZv02Y2A0bpdBgCg=;
 b=f+qv87RIhx6KVnFhweSYxVlB1nHVX9xOiFzGR7RfO20Aj9bjh5ENJ4Mv+JpFQyM3brlGxU6QDYCOMtbkNiMu50BiFThMmNAQcWwVjuw6DJt4JMNACxuGwfMbU0qPfSk5W54of/goMuW83VtODLPQS9JeZznBHagQotYiy3farao=
Authentication-Results: dkim=none (message not signed)
 header.d=none;dmarc=none action=none header.from=amd.com;
Message-ID: <e58a23d8-8cf8-41e8-ab87-d22eb04bbfde@amd.com>
Date: Tue, 21 Apr 2026 19:43:42 +0200
User-Agent: Mozilla Thunderbird
Subject: Re: Pinned, non-revocable mappings of VRAM: will bad things happen?
To: Val Packett <val@invisiblethingslab.com>,
 Demi Marie Obenour <demiobenour@gmail.com>, dri-devel@lists.freedesktop.org,
 Xen developer discussion <xen-devel@lists.xenproject.org>,
 linux-media@vger.kernel.org
Cc: Suwit Semal <sumit.semwal@linaro.org>,
 "Pelloux-Prayer, Pierre-Eric" <Pierre-eric.Pelloux-prayer@amd.com>
References: <a06133f7-3093-4733-9786-bc46c1453e06@gmail.com>
 <b8d04414-18b5-40f7-9ea2-88b30ff5bea0@amd.com>
 <c7865b27-6bf1-4df1-9520-c9ef6b3ef368@gmail.com>
 <4751cf03-d3c1-4d5d-af8e-39ad7c8ffb84@amd.com>
 <7472bfcf-8c22-4ac7-b903-a883cdb8f1c6@gmail.com>
 <8fe8b78b-5294-4319-af92-a4fb00527417@amd.com>
 <8846bac5-77ff-4439-ac5c-c33cdb4a94e3@gmail.com>
 <964c3670-fad3-44ce-bd93-2057bca2dcb8@amd.com>
 <08ad2301-3163-4497-8869-fa4cea30b384@gmail.com>
 <e5c00f2c-0819-48b4-b66e-71b9a40a7235@amd.com>
 <686713fc-c762-4b1b-88b2-d486d4f38ac6@gmail.com>
 <de6777c1-1165-4ace-a5a7-3004aa9ea8c5@invisiblethingslab.com>
Content-Language: en-US
From: =?UTF-8?Q?Christian_K=C3=B6nig?= <christian.koenig@amd.com>
In-Reply-To: <de6777c1-1165-4ace-a5a7-3004aa9ea8c5@invisiblethingslab.com>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
X-ClientProxiedBy: BL1PR13CA0195.namprd13.prod.outlook.com
 (2603:10b6:208:2be::20) To PH7PR12MB5685.namprd12.prod.outlook.com
 (2603:10b6:510:13c::22)
MIME-Version: 1.0
X-MS-PublicTrafficType: Email
X-MS-TrafficTypeDiagnostic: PH7PR12MB5685:EE_|CY8PR12MB9035:EE_
X-MS-Office365-Filtering-Correlation-Id: 4672b4d2-3c9f-49a1-b93e-08de9fcd89e3
X-MS-Exchange-SenderADCheck: 1
X-MS-Exchange-AntiSpam-Relay: 0
X-Microsoft-Antispam:
	BCL:0;ARA:13230040|376014|1800799024|366016|18096099003|56012099003|18002099003|22082099003;
X-Microsoft-Antispam-Message-Info:
	/G3WwiHIwoWF0esv1BdCSV0tuIc47JMPYYWVIvGPAQpX6LQOacaqlhlx0b9d3paD2RSZ4RBFEdyYHCHr/1tFWdgJVJHQ5vPCO4e7DH30dc3zALey4D/2qJu87PLGQgz5do4RAMyWrEfHfYtFikGxG9vOBwNjJgZ/7boBJeO4YmmbVocYSt2BtHX3P9T+F0JITFWlw73QYyCO+WgfkOATA4vx7dTcGqvPHG4ps8fmTF/HVhkVeWfJIs7B/AMP5hpVLoqvL+3AumwWQ0bDFs34VEk16Y+Gkda/qGQQQ713bbfeMP7EYNNL2LwOhTxcLlVgwUBKSM39eFqjBNdz/wPbgz0DDvhTp1edzSTZCu14COnBMddq6Nq3qAsLlqDw+Aymx23owXIxW05PHhbkJf3imQrYZ48ZS5Ea0Vds4ytjxqqtaZtuuacqQusxxPlb0ibS2nH5G9ofkWFOy/TAGgXYthce99XdOouwjKWu8hHk/0Lhv8cur57QdHPfgjYr0SDx4ewD9UKEWy4+/dmR2YzYV9NLZpexgWVTTR+GckQnycoGSRlhmXUjBomE8Y2SkdULut0Qut00L3cDn0ZMHChf9Fh4Ns6taZApQvwgZ2Bt83QTRqobZJZh4G7SMVtX17/jRlwpE8WIODFufey0HcWji5ZZ/6Nr2+oqfr+d2TiJ1CDkyB1xrUphCIpI/qwRIQJ3XN6csJ+dKYOkfK7FRJ/vThwBDvWQGHprXA0QY42PRJDjLp1XArtWPg3UyA2aTIPV
X-Forefront-Antispam-Report:
	CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:PH7PR12MB5685.namprd12.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(376014)(1800799024)(366016)(18096099003)(56012099003)(18002099003)(22082099003);DIR:OUT;SFP:1101;
X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1
X-MS-Exchange-AntiSpam-MessageData-0:
	=?utf-8?B?ZkZ2MnEzMjdFL3hoWllEWSszMTc2OXlGdGFrclVERHVEMjJlY2kwRlZSM2xo?=
 =?utf-8?B?MFBrdUEwUTBTQ0JBOCs1Zm9LVUJCazRkOXFxbWI1RzJ4U3dXTXVESU0vb0l5?=
 =?utf-8?B?cERzY0diZ3M0KzdBOC8rL2hlZzZBRnoreDBWNmZZMHpXcFAxZGFnbHo5YUkw?=
 =?utf-8?B?VjZxNStVa3JpaktXdStseGdJNWROY2krUUVwTUJZSTd2SmN6N0xsaTRQbVJz?=
 =?utf-8?B?cmNRTkhXaDRLVlhncnFKbzVKRFlPd2hBdVZ0RnRZWlVreUZSK21vN0pSM1ZH?=
 =?utf-8?B?YWg3WWV1eWQwcThPNXFpeXByTGdGMG5DcXBkUGpOTVdwK3lwMmtlS2tLMjlV?=
 =?utf-8?B?Tm1uK3BFdThORUxqTWtzSVBzczVSN20xb3dJUkhjQVdvbzlYajgrV0dZOVpz?=
 =?utf-8?B?QUcrN1l2ZDFGbE9RVitIRVgzZmxNdkt6UWdyMzlmalFacDltRVFPaWhDUll2?=
 =?utf-8?B?dmxiSG5SMndjTkNsYzBGaCtoWEx6eTk1emZmVk1LVWlBdHNlYjBhSU9iaGI4?=
 =?utf-8?B?eXJiKytWNU9RWmk0SkNvZUU2ZldpRmtqMUVETlpjZFFHeDR4WlNPWlZlQ1Qx?=
 =?utf-8?B?bkZwTyttVHFrV00zQ0Zxa2FLdlo2bmpRZStXTVkxeGg5R0xucHZqMDh4bFlF?=
 =?utf-8?B?MXJCK1JXWmVSeDI3eVFLL3ZObVlhRVhxVlZ5QnhNMWwyRGJEZTlLTzJtNnMr?=
 =?utf-8?B?ZzlLVVlBcDhyZ3lONzY0bkZpTnhOWFR6aVhsalYxbkdLVlNFNVp0aWpSWjhv?=
 =?utf-8?B?VXZ1VU4vVEI1cDA1Q0N3anRJSEFScmtJSVBUM0lwd1ZVSXlPaHJHcm5VRkdr?=
 =?utf-8?B?TVhwLzhmMVl6R1FDd25ONWg3UGdDRzh3OExQa01JSzZBT0UzMjM4ejJrbjdT?=
 =?utf-8?B?UFNSaUdVVEhjYldGR0t6M3lQYi9PUmVXZk0rY1VLd1ZlN3pQenpDL0VUSGFp?=
 =?utf-8?B?NHRRcHp2bm5yb2k3RjNEd1BGZ3ZkdGtXWWFKQ2NWeFZjSnBQLzN6OG16UTlw?=
 =?utf-8?B?eHcySE1VUUR5NnNQejZzckgyUHhJVlc3Y3YxK29IalBUTlZ5cmlXVnVJSCt0?=
 =?utf-8?B?Q2U2Q3BTcStBNDF3UlF4ZDlzR2Z5ZlVOQm02L2dwdUhEVzNQeDBnVXB4QnBn?=
 =?utf-8?B?d3pOQkNRQnBuS0hRT1I3VjJaMWJBQnVTYkdDdGNJL1RXajdJTXFmZGl5dFEr?=
 =?utf-8?B?YjlnUmszY1ozUzZ5Q1J6b3JIelo5V0Z6M0pINGtBMXBGSVpGdjZtWTU2MmUr?=
 =?utf-8?B?ZjJDZktaTUVzODQwTzgxU2FhbERTaTg5TmVkMGl0eU1INlBXQ3l6WXMrd2Z0?=
 =?utf-8?B?QjhhV2NHdU52N1NIZWNqRkNPNUVoaEZwSzBOcEdWdS9NVHVTLzRuc0VRblIx?=
 =?utf-8?B?eDhUR1NZNHlMU0phKzNFNlFaVHhZOFJ4eVhTQkc1bEt1bkpteS9QQUU2Tm1p?=
 =?utf-8?B?VkI0amFPaHAzWS9NZ1JIL3E4L3IyNm5FQXdSY2U2c1M2Q2Nzekk4VkwrSU1k?=
 =?utf-8?B?bXpmdkthaGZ5NlorV2p4MGxoRk5mdXZ2aHJVR3ZuNlhBL2Z3VXNUbVJkN2hw?=
 =?utf-8?B?TTJKMGY4Qk9zK2J5ZWNLcHh3R1B0TUZCMTJEZDJUWVVhRDUvc283VnZaa1Zl?=
 =?utf-8?B?dngzU0JjZ2pyNXpkLytibG1FNGt5Yzk4SWNBa3ZvVmFNMHp0TEVsYWZseTVH?=
 =?utf-8?B?c1ZBR2lvL1NaOGsySGJpSEZuMlZCS1JxRTZVbzI3ZkhuelBVKytkVnFIUThG?=
 =?utf-8?B?STBqMHRYU3hOQUZCcXlTbG1mWkt1bVR6bUVtcjdTTDVJaDFEdTBBRGVZMERZ?=
 =?utf-8?B?WDcwN0NIVVRaMXF6aHNCT1I2YjdyQnFSUDVHbmE0VXlVYlYyd3JKc3M3UVNp?=
 =?utf-8?B?QmJ5TERUTzNsQzA4V3QycTUzMnZKK2RjeXd4M3dwQjhPSGdwZWRhMXZybVJS?=
 =?utf-8?B?QUVkL1JRb2tuNE13YlNSaXVVd0RFUVhyelFLdVJqRHZwcFNyQjgvOHpjYlRW?=
 =?utf-8?B?ZWJoQnowTVB4L1BGNDdUci9BQWhZREZpNWJHNmJxMFBaSWhkRS9aR1Fudlh4?=
 =?utf-8?B?djhZK3ByaGF4ZFZEOEM0c3BjeDZ4M3krUkc5TjBYZlh5U3hBYkFCQ0x6Q3hX?=
 =?utf-8?B?d09vY0RrMWZVUmszbHVSb2g3SmNZQkRNV0V2eFdCY3lLdFphTFYxaFZzL1kv?=
 =?utf-8?B?ZDUyR1BjbnhZazBqcnlaK09OZzdjZ0ZmK1E0YWNsbk9wZ3JkOVF2T21zNVF4?=
 =?utf-8?B?MjBSYVU0NDFOdDNvMzF1VkpzSjFDekh2SUsraCsybC9UT0t5clhTenZaRUpq?=
 =?utf-8?Q?E9DpzJSgtvpXsGeB+i?=
X-OriginatorOrg: amd.com
X-MS-Exchange-CrossTenant-Network-Message-Id: 4672b4d2-3c9f-49a1-b93e-08de9fcd89e3
X-MS-Exchange-CrossTenant-AuthSource: PH7PR12MB5685.namprd12.prod.outlook.com
X-MS-Exchange-CrossTenant-AuthAs: Internal
X-MS-Exchange-CrossTenant-OriginalArrivalTime: 21 Apr 2026 17:43:46.5330
 (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: qvBf2nc9gczw8QGiYqC+HvqaBWflgkmhXn2eq8uldEPT/CzX/jlMRI2lXoOIsVMs
X-MS-Exchange-Transport-CrossTenantHeadersStamped: CY8PR12MB9035
X-purgate-ID: tlsNG-d25034/1776793430-6EF72CF5-CDC2BBAD/0/0
X-purgate-type: clean
X-purgate-size: 7014

On 4/21/26 18:55, Val Packett wrote:
> 
> On 4/20/26 4:12 PM, Demi Marie Obenour wrote:
>> On 4/20/26 14:53, Christian König wrote:
>>> On 4/20/26 20:46, Demi Marie Obenour wrote:
>>>> On 4/20/26 13:58, Christian König wrote:
>>>>> On 4/20/26 19:03, Demi Marie Obenour wrote:
>>>>>> On 4/20/26 04:49, Christian König wrote:
>>>>>>> On 4/17/26 21:35, Demi Marie Obenour wrote:
>>>>> ...
>>>>>>>> Are any of the following reasonable options?
>>>>>>>>
>>>>>>>> 1. Change the guest kernel to only map (and thus pin) a small subset
>>>>>>>>     of VRAM at any given time.  If unmapped VRAM is accessed the guest
>>>>>>>>     traps the page fault, evicts an old VRAM mapping, and creates a
>>>>>>>>     new one.
>>>>>>> Yeah, that could potentially work.
>>>>>>>
>>>>>>> This is basically what we do on the host kernel driver when we can't resize the BAR for some reason. In that use case VRAM buffers are shuffled in and out of the CPU accessible window of VRAM on demand.
>>>>>> How much is this going to hurt performance?
>>>>> Hard to say, resizing the BAR can easily give you 10-15% more performance on some use cases.
>>>>>
>>>>> But that involves physically transferring the data using a DMA. For this solution we basically only have to we basically only have to transfer a few messages between host and guest.
>>>>>
>>>>> No idea how performant that is.
>>>> In this use-case, 20-30% performance penalties are likely to be
>>>> "business as usual".
>>> Well that is quite a bit.
>>>
>>>> Close to native performance would be ideal, but
>>>> to be useful it just needs to beat software rendering by a wide margin,
>>>> and not cause data corruption or vulnerabilities.
>>> That should still easily be the case, even trivial use cases are multiple magnitudes faster on GPUs compared to software rendering.
>> Makes sense.  If only GPUs supported easy and flexible virtualization the way CPUs do :(.
>>
>>>>>>> But I have one question: When XEN has a problem handling faults from the guest on the host then how does that work for system memory mappings?
>>>>>>>
>>>>>>> There is really no difference between VRAM and system memory in the handling for the GPU driver stack.
>>>>>>>
>>>>>>> Regards,
>>>>>>> Christian.
>>>>>> Generally, Xen makes the frontend (usually an unprivileged VM)
>>>>>> responsible for providing mappings to the backend (usually the host).
>>>>>> That is possible with system RAM but not with VRAM, because Xen has
>>>>>> no awareness of VRAM.  To Xen, VRAM is just a PCI BAR.
>>>>> No, that doesn't work with system memory allocations of GPU drivers either.
>>>>>
>>>>> We already had it multiple times that people tried to be clever and incremented the page reference counter on driver allocated system memory and were totally surprised that this can result in security issues and data corruption.
>>>>>
>>>>> I seriously hope that this isn't the case here again. As far as I know XEN already has support for accessing VMAs with VM_PFN or otherwise I don't know how driver allocated system memory access could potentially work.
>>>>>
>>>>> Accessing VRAM is pretty much the same use case as far as I can see.
>>>>>
>>>>> Regards,
>>>>> Christian.
>>>> The Xen-native approach would be for system memory allocations to
>>>> be made using the Xen driver and then imported into the virtio-GPU
>>>> driver via dmabuf.  Is there any chance this could be made to happen?
>>> That could be. Adding Pierre-Eric to comment since he knows that use much better than I do.
>>>
>>>> If it's a lost cause, then how much is the memory overhead of pinning
>>>> everything ever used in a dmabuf?  It should be possible to account
>>>> pinned host memory against a guest's quota, but if that leads to an
>>>> unusable system it isn't going to be good.
>>> That won't work at all.
>>>
>>> We have use cases where you *must* migrate a DMA-buf to VRAM or otherwise the GPU can't use it.
>>>
>>> A simple scanout to a monitor is such an use case for example, that is usually not possible from system memory.
>> Direct scanout isn't a concern here.
>>
>>>> Is supporting page faults in Xen the only solution that will be viable
>>>> long-term, considering the tolerance for very substantial performance
>>>> overheads compared to native?  AAA gaming isn't the initial goal here.
>>>> Qubes OS already supports PCI passthrough for that.
>>> We have AAA gaming working on XEN through native context working for quite a while.
>>>
>>> Pierre-Eric can tell you more about that.
>>>
>>> Regards,
>>> Christian.
>> I've heard of that, but last I checked it required downstream patches
>> to Xen, Linux, and QEMU.  I don't know if any of those have been
>> upstreamed since, but I believe that upstreaming the Xen and Linux
>> patches (or rewriting them and upstreaming the rewritten version) would
>> be necessary.  Qubes OS (which I don't work for anymore but still want
>> to help with this) almost certainly won't be using QEMU for GPU stuff.
> 
> Yeah, our plan is to use xen-vhost-frontend[1] + vhost-device-gpu, ported/extended/modified as necessary. (I already have xen-vhost-frontend itself working on amd64 PVH with purely xenbus-based hotplug/configuration, currently working on cleaning up and submitting the necessary patches.)
> 
> I'm curious to hear more details about how AMD has it working but last time I checked, there weren't any missing pieces in Xen or Linux that we'd need.. The AMD downstream changes were mostly related to QEMU.
> 
> As for the memory management concerns, I would like to remind everyone once again that the pinning of GPU dmabufs in regular graphics workloads would be *very* short-term. In GPU paravirtualization (native contexts or venus or whatever else) the guest mostly operates on *opaque handles* that refer to buffers owned by the host GPU process. The typical rendering process (roughly) only involves submitting commands to the GPU that refer to memory using these handles. Only upon mmap() would a buffer be pinned/granted to the guest, and those are typically only used for *uploads* where the guest immediately does its memcpy() and unmaps the buffer.

No that is not correct at all. CPU mapping a buffers for GPUs are pretty much permanent through the whole lifetime of the buffer.
Otherwise you can completely forget running any halve way modern workloads.

> So I'm not worried about (unintentionally) pinning too much GPU driver memory.
> 
> In terms of deliberate denial-of-service attacks from the guest to the host, the only reasonable response is:
> 
> ¯\_(ツ)_/¯
> 
> CPU-mapping lots of GPU memory is far from the only DoS vector, the GPU commands themselves can easily wedge the GPU core in a million ways (and last time I checked amdgpu was noooot so good at recovering from hangs).

Yeah that is certainly true :)

Regards,
Christian.

> 
> 
> [1]: https://github.com/vireshk/xen-vhost-frontend
> 
> ~val
> 



From xen-devel-bounces@lists.xenproject.org Tue Apr 21 18:42:56 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 21 Apr 2026 18:42:56 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1289287.1569400 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wFG3R-0000aS-FH; Tue, 21 Apr 2026 18:42:37 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1289287.1569400; Tue, 21 Apr 2026 18:42: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 1wFG3R-0000aL-CM; Tue, 21 Apr 2026 18:42:37 +0000
Received: by outflank-mailman (input) for mailman id 1289287;
 Tue, 21 Apr 2026 18:42:36 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <Rose.Spangler@elektrobit.com>) id 1wFG3Q-0000aF-Jy
 for xen-devel@lists.xenproject.org; Tue, 21 Apr 2026 18:42:36 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wFG3Q-00C8jN-0a
 for xen-devel@lists.xenproject.org; Tue, 21 Apr 2026 20:42:36 +0200
Received: from [10.42.69.7] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <Rose.Spangler@elektrobit.com>)
 id 69e7c50d-5cb7-0a2a0a5109dd-0a2a4507ca94-22
 for <xen-devel@lists.xenproject.org>; Tue, 21 Apr 2026 20:42:35 +0200
Received: from [52.101.57.132]
 (helo=BN8PR05CU002.outbound.protection.outlook.com)
 by tlsNG-ef75cf.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.1)
 (envelope-from <Rose.Spangler@elektrobit.com>)
 id 69e7c518-229c-0a2a45070019-346539846e19-3
 for <xen-devel@lists.xenproject.org>; Tue, 21 Apr 2026 20:42:33 +0200
Received: from BL1PR13CA0356.namprd13.prod.outlook.com (2603:10b6:208:2c6::31)
 by CH3PR08MB8942.namprd08.prod.outlook.com (2603:10b6:610:1cf::13)
 with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9846.16; Tue, 21 Apr
 2026 18:42:23 +0000
Received: from BN2PEPF000044A9.namprd04.prod.outlook.com
 (2603:10b6:208:2c6:cafe::76) by BL1PR13CA0356.outlook.office365.com
 (2603:10b6:208:2c6::31) with Microsoft SMTP Server (version=TLS1_3,
 cipher=TLS_AES_256_GCM_SHA384) id 15.20.9846.15 via Frontend Transport; Tue,
 21 Apr 2026 18:42:23 +0000
Received: from usbth1es003.ebgroup.elektrobit.com (4.79.107.243) by
 BN2PEPF000044A9.mail.protection.outlook.com (10.167.243.103) with Microsoft
 SMTP Server (version=TLS1_3, cipher=TLS_AES_256_GCM_SHA384) id 15.20.9846.18
 via Frontend Transport; Tue, 21 Apr 2026 18:42:22 +0000
Received: from usbth1es003 (localhost [127.0.0.1])
 by usbth1es003.ebgroup.elektrobit.com (Postfix) with SMTP id 4g0WRx46b5z1wdM; 
 Tue, 21 Apr 2026 11:42:21 -0700 (PDT)
Received: from BL2PR08CU001.outbound.protection.outlook.com
 (mail-bl2pr08cu00104.outbound.protection.outlook.com [40.93.4.12])
 (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)
 key-exchange secp384r1 server-signature RSA-PSS (2048 bits) server-digest
 SHA256) (No client certificate requested)
 by usbth1es003.ebgroup.elektrobit.com (Postfix) with ESMTPS;
 Tue, 21 Apr 2026 11:42:21 -0700 (PDT)
Received: from CH3PR08MB8735.namprd08.prod.outlook.com (2603:10b6:610:160::11)
 by PH7PR08MB8819.namprd08.prod.outlook.com (2603:10b6:510:2eb::18)
 with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9818.32; Tue, 21 Apr
 2026 18:42:13 +0000
Received: from CH3PR08MB8735.namprd08.prod.outlook.com
 ([fe80::f5d2:ef47:3ccd:92fb]) by CH3PR08MB8735.namprd08.prod.outlook.com
 ([fe80::f5d2:ef47:3ccd:92fb%7]) with mapi id 15.20.9818.033; Tue, 21 Apr 2026
 18:42: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=elektrobit.com header.i="@elektrobit.com" header.h="From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck"; dkim=pass header.s=selector1 header.d=elektrobit.com header.i="@elektrobit.com" header.h="From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck"
ARC-Seal: i=2; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=pass;
 b=ZktkJG42FToYIf+eiNQqYWSFSnUIc6+JM9ZwHvCdGPKr5B3sduzANYNH8iQzj2s2jv56rqa6nm4yKUfO8b+HklMq3YgwcOLgkWb9d+thR4c5HXmb0PqPRXf06QS6uAl/0h7W0s5TRxkeg+rVPSdMGznhrevN9rIKgOAQ63uAAJHuYJrTwhMebgoA4MfV6qWjIDRa3egqVykMsIIfwTGgPybGo9fWq7VF8IpAx7rHyahmfq3EzDf+VoAv9QvWPXfhr9YPQ37cUMdcGj7+QhCSvivzMuWViUbxBy6eCZn4r2E+OLnNOPd5e7UVFupCKhGa8SMaiGwv7F3sTafC7Cfaqg==
ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com;
 s=arcselector10001;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1;
 bh=zePeV6JogWVgPOLkUovX0ZChv8qdRTuH59k7XA3IYow=;
 b=J5p9zuvIC4o0c+hPio3K4CKPGmPpDGuMI05oki25DpazqizwuIKPJQ4JMmmUQjINfoBvB7IK1rwRqMHoWa1qzl5SMMkAwXFvHhBpEbxBvGiF6E/oOap6PdMB/65uJscTesyGkWHdDZQ3NwKj74ma0RJ/7rz04NQoczz9j5s2Vej61PqaPCHaWYLpmhlD8gqNAAQYy/9yr+HRMNG6kybbFhm4CXAO2VTnIkegbqgZB3xiJBHigbQGXH9O7Pmh5MWy6uKE862b3UEqQgO6lQMusWn02jFkf/UcYAzKwOe7kwkCz3aExTPpaV8sKfRlu0GHR7I4AndjUWHUUu2s7D3Pwg==
ARC-Authentication-Results: i=2; mx.microsoft.com 1; spf=pass (sender ip is
 40.93.4.12) smtp.rcpttodomain=amd.com smtp.mailfrom=elektrobit.com;
 dmarc=pass (p=quarantine sp=none pct=100) action=none
 header.from=elektrobit.com; dkim=pass (signature was verified)
 header.d=elektrobit.com; arc=pass (0 oda=1 ltdi=1
 spf=[1,1,smtp.mailfrom=elektrobit.com] dkim=[1,1,header.d=elektrobit.com]
 dmarc=[1,1,header.from=elektrobit.com])
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=elektrobit.com;
 s=selector1;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck;
 bh=zePeV6JogWVgPOLkUovX0ZChv8qdRTuH59k7XA3IYow=;
 b=SmYU/shCUdSusMovNzAvmTF3BqouFgiUt9KF/awkCmvbxSAvbEOBSk93qJfekcqPmNLmnaliS4tlsVtQshV1vuJHvdMxx9dEJbr4LoFBVR4qFNmrAhgFHd9rAPbo/VK/Fkds+gqBuz4Y5P2pVXoPCMWQpURSmmdLsU4u5UDIhZQ=
X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 40.93.4.12)
 smtp.mailfrom=elektrobit.com; dkim=pass (signature was verified)
 header.d=elektrobit.com;dmarc=pass action=none header.from=elektrobit.com;
Received-SPF: Pass (protection.outlook.com: domain of elektrobit.com
 designates 40.93.4.12 as permitted sender) receiver=protection.outlook.com;
 client-ip=40.93.4.12; helo=BL2PR08CU001.outbound.protection.outlook.com; pr=C
ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none;
 b=jrXkpfs7wvnaPSlcS6hJvU2j4c29MEZUBOw/xOoR45KKPHNnhvyYkRq3SrGcevZRTGmx7+HhsXg6MRnAfc+6aEu1fyVvxB8vkiCtlmdwawbTzz3MOzHlzoOd3HqEK75cvaRfSY/OnJ9aR5TKk0Zso9Hlfff1NWriYVffvNpXykzX8M1pITuPRZWQfhkeu+mltjQOtV/pFV+KFVTiMCrbe75jNhNhJ7W6zVpHcf5Qk1XbGzr9GD3hRSYckUg1s7P/WePx3wClBLzgx16dH5ITonhIlHqNPHD+/nc+DHqfSPK5ZsBfxFyOEO5YnAKGpy0ZH5qk9J2VJTOYIxLYzHwCVA==
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com;
 s=arcselector10001;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1;
 bh=zePeV6JogWVgPOLkUovX0ZChv8qdRTuH59k7XA3IYow=;
 b=HJKZKWSyWqrorWg/jr53wJ208IHkczKiiNRuBA7+m4Sm0J3MH3HzEQhvsrFGGda2+/Hlyp4o+svSsrKcHKy6SxLZEXlETK0yE34plTBMfFXEgGORLEPU6zBxfOm1zt2z29rHVepfmVW9uo/j+SLu3yFCFrhrvcE+pKk2CHHXdqgPxqgobAo2Zv1kyTO3ZnhXiwvr5HwJR6T6RHswoKCTmb0rjfdVv1BiyazWfOKFikHiSl5sCHUGIwLmRYurEl+IxDlyZGtCR+BsAXzryn88SI2MSn/B/vuhXVaCBgYEvZiuGdW3seFrpZWlf7NMIJ1BCneU0WejJc0elhYC0TVsYg==
ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass
 smtp.mailfrom=elektrobit.com; dmarc=pass action=none
 header.from=elektrobit.com; dkim=pass header.d=elektrobit.com; arc=none
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=elektrobit.com;
 s=selector1;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck;
 bh=zePeV6JogWVgPOLkUovX0ZChv8qdRTuH59k7XA3IYow=;
 b=SmYU/shCUdSusMovNzAvmTF3BqouFgiUt9KF/awkCmvbxSAvbEOBSk93qJfekcqPmNLmnaliS4tlsVtQshV1vuJHvdMxx9dEJbr4LoFBVR4qFNmrAhgFHd9rAPbo/VK/Fkds+gqBuz4Y5P2pVXoPCMWQpURSmmdLsU4u5UDIhZQ=
From: "Spangler, Rose" <Rose.Spangler@elektrobit.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>, 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.pau@citrix.com>, Stefano Stabellini
	<sstabellini@kernel.org>
Subject: Re: [RFC PATCH v6 42/43] arm/altp2m: Add support for altp2m_flush
Thread-Topic: [RFC PATCH v6 42/43] arm/altp2m: Add support for altp2m_flush
Thread-Index: AQHc0Q1aXIo1jphIuU6k06S1vKsaS7Xp2JVR
Date: Tue, 21 Apr 2026 18:42:12 +0000
Message-ID:
 <CH3PR08MB87355E6A8BF87F54584EAD20912C2@CH3PR08MB8735.namprd08.prod.outlook.com>
References: <20260420213206.208750-1-Rose.Spangler@elektrobit.com>
 <20260420213206.208750-43-Rose.Spangler@elektrobit.com>
In-Reply-To: <20260420213206.208750-43-Rose.Spangler@elektrobit.com>
Accept-Language: en-US
Content-Language: en-US
X-MS-Has-Attach:
X-MS-TNEF-Correlator:
msip_labels:
Authentication-Results-Original: dkim=none (message not signed)
 header.d=none;dmarc=none action=none header.from=elektrobit.com;
x-ms-traffictypediagnostic:
	CH3PR08MB8735:EE_|PH7PR08MB8819:EE_|BN2PEPF000044A9:EE_|CH3PR08MB8942:EE_
X-MS-Office365-Filtering-Correlation-Id: 9a5b859d-4f90-436d-4508-08de9fd5b9ef
X-SM-outgoing: yes
X-MS-Exchange-SenderADCheck: 1
X-MS-Exchange-AntiSpam-Relay: 0
X-Microsoft-Antispam-Untrusted:
 BCL:0;ARA:13230040|1800799024|366016|376014|22082099003|56012099003|18002099003|38070700021;
X-Microsoft-Antispam-Message-Info-Original:
 +mMRr2vSMcyf8Ei22OSPBGzycQW/vadDUak7j8uz0S5yFeJKeQ/lPoLMlQ/cyy8mjiY2nhBhnXdyJaptKSeJOr830cdpFBrY3v3NTF79mgur8tF9oiHRPIiEIRP13LEDdClxoTSFTE5bszIKnElsT0EKkZD1SlAkaSNguI/KBbiUok/CzhSLZf/VsuATBeVcT0SwE5SuCDdtPWKIc8lw98EOdE6PQPxKZmgYarJgKyn/8oEa1BM9tTMjLXilN97ytcvZasr0H5LMlmlrzMjepk9znzkBTEeVKHUOQugFsgFFiXUG3gH2P84FP3zeVi+WwOalTBuo1DR2O8KkVXAdz98fM6yRseQSS3v3ProU2g6w/ySJacVphjXACdq3pjU1UQORthRpsEf6ENfyZOOrJyXe1//rz2wEDobfMORwVykNzjO94yGLVXOEl4P5EHOgp+QWGDN8/NHT66M0mrG1AQWpXzntwg8cwmW6V6GrP/rqFU8H1kr1/fszbJEZCmNjEI+VpIn1P0hXdTEO0bO0zSDPmwzXCUcOTWZ5aLFkCM8pTxHQ3d/M3yxXgjf6HFrAcXTrWcrapuwANU7WWOHjHsKtIWXmDGHUdtN9B+3RA+kz3yJjRa3hjpUdoSpwMuVTFAZbDeZVOWuXIbMAd64xyXqtSSpw4TUzzCEFwlUhVTyx3OVGqViNsjfYdShcOJJku9n0q1kuj9HiSVOUzr0C7qtFMxvLVrV56wFuh+LnN6z+gQt6FJG2NcKWUIRsfVqV/YvlFp/7v3DRdVpO5b3mZTqBPqU7Bh6JT+rDhnJapRE=
X-Forefront-Antispam-Report-Untrusted:
 CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:CH3PR08MB8735.namprd08.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(1800799024)(366016)(376014)(22082099003)(56012099003)(18002099003)(38070700021);DIR:OUT;SFP:1102;
Content-Type: text/plain; charset="iso-8859-1"
Content-Transfer-Encoding: quoted-printable
MIME-Version: 1.0
X-Exchange-RoutingPolicyChecked:
 ATu4YCbDHihEy1KItdVHqJP6guNHRIA2S2mWxQPGTxznfRggD1ifWMZPrBE8PtOMDDH4txquRLjmJgsEvMtbKqOoNoe0Q9pAoKado29BYXHEEyxU18yeIIj7eSlJOxRVJK4ld/bcPPyrAW2sGt1eqzPD9Xe6GBoWXAGUQBq06OkTPVf9Lg4DUtlLzkmcBUpOa8sTAgLsZu2yMY73RI1Y0r8+3eSkDCBzyt2MbQUWgYuLX4JT24VUoje3YeHWELzw4XUUupQan8gkQW9nWHdL4RCgqe4U1Mazm2Zg/+tywIpzk6CWPa2Ka8jXXTLxvUrkBr0IybiAoLhGiowC6PfeIQ==
X-MS-Exchange-Transport-CrossTenantHeadersStamped: PH7PR08MB8819
X-EOPAttributedMessage: 0
X-MS-Exchange-SkipListedInternetSender:
 ip=[40.93.4.12];domain=BL2PR08CU001.outbound.protection.outlook.com
X-MS-Exchange-ExternalOriginalInternetSender:
 ip=[40.93.4.12];domain=BL2PR08CU001.outbound.protection.outlook.com
X-MS-Exchange-Transport-CrossTenantHeadersStripped:
 BN2PEPF000044A9.namprd04.prod.outlook.com
X-MS-PublicTrafficType: Email
X-MS-Office365-Filtering-Correlation-Id-Prvs:
	1d557483-3f66-4dfc-a7f6-08de9fd5b3bd
X-Microsoft-Antispam:
	BCL:0;ARA:13230040|35042699022|82310400026|156008|1800799024|376014|36860700016|14060799003|22082099003|18002099003|56012099003;
X-Microsoft-Antispam-Message-Info:
	=?iso-8859-1?Q?d7HUiL+Ji8/CmGvqfGmR2Gx0bFSuMyq0rgTL9fimJrYuHx2Smi4peYZPwc?=
 =?iso-8859-1?Q?WNnjO+3Tbo9wtQZmPSozvpejTNU3ISvu6YraiSViX1glqgRLQIKKbur0CU?=
 =?iso-8859-1?Q?VceSISqSv0ngWNujMoBuUFN/wQ3Wd4ktu0XrAqviygD78jj5pWE8b6qY2g?=
 =?iso-8859-1?Q?l2cK93+Km6fNTzmy0NUoGrkZLozGSDy1pRWyIatX4dIVP5uLSiNCq5MiRY?=
 =?iso-8859-1?Q?f9XhMPY008e7G6XBdzObviYbyoAFZ4bDg+BQHiCZ/nZeahmYoLHsnFzZH6?=
 =?iso-8859-1?Q?AhprtGpVILMtgt9rps10e5ah4Erby/wWpTyWbkmdENjaLwOBteD6GXtjNa?=
 =?iso-8859-1?Q?EGwKBeEuZo2XC8xfOhMP4BKhVvfeAmrKwMIGWeQOPF7sszZ++9IoSdf+pO?=
 =?iso-8859-1?Q?W2VsSzPy0YaJK0aPojdlQVdvYF0y2szZKo1oiAXrqcqkyzaoBr7UDQKjfg?=
 =?iso-8859-1?Q?/zKlTBFGaK56dSz6t6bVaHetMm7+c0anYEKAuZXguvZpZlqpU2Bnkmm3En?=
 =?iso-8859-1?Q?mz3bqgGYE17rM7GdG3Upa+RMJdQl77DXewpeGbL1BSTQj9HiWaw5RUPXeV?=
 =?iso-8859-1?Q?7ENCu8G11ZycGWLFzmbftw7/06KOKYh/BFVkKf1eSdAR7V/pAtch5kGkGL?=
 =?iso-8859-1?Q?opeBe63e9LJh23SEOV6d//zA2V17TCoiRD3r+HLUBrqVKzgdzbzTGtH+l9?=
 =?iso-8859-1?Q?uEt/frzEuxSJcTT4jDbEWoxp12Z+8R8DRpI7SmQ5lEgJj45Qa8n9CNUlT9?=
 =?iso-8859-1?Q?dxcTj+QStvlOqNoxagMC5aP0Zu78BFFqlbiApLXjaIXZ/lPtVC/01jvjKh?=
 =?iso-8859-1?Q?U93XaEX1WWWsFdzN1bo2FI4Ljang7u/lCRClKML7Uyh4HB1q5G211fxiPC?=
 =?iso-8859-1?Q?+1IQQkZIWjO6n6IghDZYIFkPbEqvpK3nqo7o2LxplvJioTUtjyRRrM7hlD?=
 =?iso-8859-1?Q?C3QujE5WQnzRZHz6wtegQJa94GHGUANWP8oX2kIvvbmdjl+N8luKGMUOOC?=
 =?iso-8859-1?Q?2VbSE0OwuD32BzTfV0dIS2n6Iw7M6fPTxEe/HYn6k1VG5flw5nM9jsNucB?=
 =?iso-8859-1?Q?7oa7vHE1dftk2ZZjVw6Ply17VToBwKjdXTme02oDxNtHV5Pxq4vawP6PTs?=
 =?iso-8859-1?Q?xYCbUOwJqJKp8/rVGCYsmkXJ88IXY7/ATju/Q6aapBirtHEQLJxTR/egFv?=
 =?iso-8859-1?Q?0MaWJahJ2WxHr9O6MdOc+B+aUZpO4NlhXOTnxVNrq4cMOUyWDQM6rJAPSh?=
 =?iso-8859-1?Q?8G65apQrmN1yqvVdU4RA=3D=3D?=
X-Forefront-Antispam-Report:
	CIP:4.79.107.243;CTRY:US;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:BL2PR08CU001.outbound.protection.outlook.com;PTR:mail-bl2pr08cu00104.outbound.protection.outlook.com;CAT:NONE;SFS:(13230040)(35042699022)(82310400026)(156008)(1800799024)(376014)(36860700016)(14060799003)(22082099003)(18002099003)(56012099003);DIR:OUT;SFP:1102;
X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1
X-MS-Exchange-AntiSpam-MessageData-0:
	CSXeqFW6ZKiJeWzIw6Zkhi0kFu04IdXBAOhl3Q6hUf192YCk1d02cdjKA8QblYEMvTfSHQJprf0icTWnjMs+LYcZggriJHy7RfJDBig7Fl98/qirKKFzWpTP/F2r8Df6etCCehwc9TDaCsEtjgDv1ui30Jvg7IgbzAb0LtiUaw49sgKcMBAWppvZ0Lu4Xe2wd5z3wC2sIbs32NYnjY6ubagFHVb2y4/n+qtufvQEbyVLs0P/l5AC4ZKXdHPajJAn4+PoA+T9scX+Q6mgMotUzYC42SL6dWhgNArEdqbVSS0f3YkjHYdJXxO1IMtfgwcsQSP8WxFQPMW/L992rNEiNWkhe2oscCMnNpdEVxSTL/o3o/JmEs9xKi7TvFlDVeoMJz6krZfF4qQUu5JjDN/vl5qKW70OiH5sGKbSXJ0PtgzS9IZHERjd7mNWYgtaroLH
X-OriginatorOrg: elektrobit.com
X-MS-Exchange-CrossTenant-OriginalArrivalTime: 21 Apr 2026 18:42:22.5481
 (UTC)
X-MS-Exchange-CrossTenant-Network-Message-Id: 9a5b859d-4f90-436d-4508-08de9fd5b9ef
X-MS-Exchange-CrossTenant-Id: e764c36b-012e-4216-910d-8fd16283182d
X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=e764c36b-012e-4216-910d-8fd16283182d;Ip=[4.79.107.243];Helo=[usbth1es003.ebgroup.elektrobit.com]
X-MS-Exchange-CrossTenant-AuthAs: Internal
X-MS-Exchange-CrossTenant-AuthSource: TreatMessagesAsInternal-BN2PEPF000044A9.namprd04.prod.outlook.com
X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem
X-MS-Exchange-Transport-CrossTenantHeadersStamped: CH3PR08MB8942
X-purgate-ID: tlsNG-ef75cf/1776796953-14052C48-48E2FF6B/0/0
X-purgate-type: clean
X-purgate-size: 1193

> =A0=A0=A0=A0=A0=A0=A0 altp2m_reset_altp2m(d, i, ALTP2M_DEACTIVATE);=0A=
>-=A0=A0=A0=A0=A0=A0=A0 d->arch.altp2m_eptp[i] =3D mfn_x(INVALID_MFN);=0A=
>-=A0=A0=A0=A0=A0=A0=A0 d->arch.altp2m_visible_eptp[i] =3D mfn_x(INVALID_MF=
N);=0A=
>+=A0 =A0=A0=A0=A0=A0=A0altp2m_set_view_visibility_locked(d, i, 0);=0A=
=0A=
While implementing altp2m_destroy_view_by_id, I realized that I set the=0A=
visibility of the views here instead of actually making them invalid. I've =
fixed=0A=
this in my working branch by adding a new arch-specific function,=0A=
altp2m_deactivate_altp2m, which both calls altp2m_reset_altp2m and sets the=
=0A=
views as invalid by setting the eptp/visible_eptp values to INVALID_MFN on =
x86,=0A=
and sets the altp2m_state value to ALTP2M_INVALID on ARM.=0A=
=0A=
A side effect of this is that altp2m_reset_altp2m doesn't actually need to =
be=0A=
callable from common code anymore, so the concern I raised previously about=
=0A=
ARM's altp2m_reset_altp2m implementation needing a useless altp2m_reset_typ=
e=0A=
parameter is no longer an issue. altp2m_reset_altp2m is used in=0A=
altp2m_propagate_change however, so this issue might pop back up later.=


From xen-devel-bounces@lists.xenproject.org Tue Apr 21 19:33:50 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 21 Apr 2026 19:33:50 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1289304.1569410 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wFGqu-0008VM-7P; Tue, 21 Apr 2026 19:33:44 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1289304.1569410; Tue, 21 Apr 2026 19:33: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 1wFGqu-0008VF-30; Tue, 21 Apr 2026 19:33:44 +0000
Received: by outflank-mailman (input) for mailman id 1289304;
 Tue, 21 Apr 2026 19:33:43 +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 1wFGqs-0008V9-MC
 for xen-devel@lists.xenproject.org; Tue, 21 Apr 2026 19:33:42 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wFGqs-008XTO-2v
 for xen-devel@lists.xenproject.org; Tue, 21 Apr 2026 21:33:42 +0200
Received: from [10.42.69.6] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <lkp@intel.com>)
 id 69e7d0d0-2eae-0a2a0a5409dd-0a2a4506e0e6-42
 for <xen-devel@lists.xenproject.org>; Tue, 21 Apr 2026 21:33:40 +0200
Received: from [192.198.163.19] (helo=mgamail.intel.com)
 by tlsNG-16d1c6.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.1)
 (envelope-from <lkp@intel.com>)
 id 69e7d112-7371-0a2a45060019-c0c6a3130b03-3
 for <xen-devel@lists.xenproject.org>; Tue, 21 Apr 2026 21:33:39 +0200
Received: from fmviesa004.fm.intel.com ([10.60.135.144])
 by fmvoesa113.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384;
 21 Apr 2026 12:33:37 -0700
Received: from lkp-server01.sh.intel.com (HELO 7e48d0ff8e22) ([10.239.97.150])
 by fmviesa004.fm.intel.com with ESMTP; 21 Apr 2026 12:33:35 -0700
Received: from kbuild by 7e48d0ff8e22 with local (Exim 4.98.2)
 (envelope-from <lkp@intel.com>) id 1wFGqi-000000003u8-3I28;
 Tue, 21 Apr 2026 19:33: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=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=1776800020; x=1808336020;
  h=date:from:to:cc:subject:message-id:references:
   mime-version:in-reply-to;
  bh=EodzOw099fBLPHA+FoPk6IybrQpy3PL/jN5TTS/wIZM=;
  b=HnPfWDarnevhbmxhtAS/mLv3pYI2maYxKC7RHp2sZwfpDN55H2Kan2Ml
   GoAXU4X0cAfneIfp5v0Z/Y1RN0tsILmUVsmWxGhN/3vmWQQYdDGJcegw6
   mYR0kEk+rj2E8beBOaClsJgTPZc0ZE/0FYhRpzsl2KwScZwOZnpAU0BYQ
   68nX8i6Mc7W8RkOUishSbzeQiHPlfe8Jaw3wzgSJgNJhX9XI6oD9RiqzI
   yWyHbv1/FjNNFVqEkA7oiMjbksDXl4mU2g5GmphMCqLIczaK748bu33x7
   VoqoXowH+q811r78wN5a20Uvy65ovGzkn0aAl29E6T9AWf7RGCt5j7+Mi
   A==;
X-CSE-ConnectionGUID: rJUJfUqqSMSZocOybOL/fg==
X-CSE-MsgGUID: iatpzdGxTbGb91jGuXZ9Zw==
X-IronPort-AV: E=McAfee;i="6800,10657,11763"; a="76780802"
X-IronPort-AV: E=Sophos;i="6.23,192,1770624000"; 
   d="scan'208";a="76780802"
X-CSE-ConnectionGUID: ljT4FAQ4RNGrLowVQzmhyw==
X-CSE-MsgGUID: 0Yl7qQdVRAutyyQJGhYAig==
X-ExtLoop1: 1
X-IronPort-AV: E=Sophos;i="6.23,192,1770624000"; 
   d="scan'208";a="233904186"
Date: Wed, 22 Apr 2026 03:33:26 +0800
From: kernel test robot <lkp@intel.com>
To: zhaoguohan@kylinos.cn, jgross@suse.com, sstabellini@kernel.org
Cc: llvm@lists.linux.dev, oe-kbuild-all@lists.linux.dev,
	oleksandr_tyshchenko@epam.com, xen-devel@lists.xenproject.org,
	linux-kernel@vger.kernel.org, GuoHan Zhao <zhaoguohan@kylinos.cn>
Subject: Re: [PATCH] xen/manage: unwind partial shutdown watcher setup on
 error
Message-ID: <202604220332.2gWBxnrF-lkp@intel.com>
References: <20260407022443.12971-1-zhaoguohan@kylinos.cn>
MIME-Version: 1.0
Content-Type: text/plain; charset=us-ascii
Content-Disposition: inline
In-Reply-To: <20260407022443.12971-1-zhaoguohan@kylinos.cn>
X-purgate-ID: tlsNG-16d1c6/1776800020-90C7BD75-836F12F8/0/0
X-purgate-type: clean
X-purgate-size: 2766

Hi,

kernel test robot noticed the following build warnings:

[auto build test WARNING on v7.0]
[cannot apply to xen-tip/linux-next linus/master next-20260421]
[If your patch is applied to the wrong git tree, kindly drop us a note.
And when submitting patch, we suggest to use '--base' as documented in
https://git-scm.com/docs/git-format-patch#_base_tree_information]

url:    https://github.com/intel-lab-lkp/linux/commits/zhaoguohan-kylinos-cn/xen-manage-unwind-partial-shutdown-watcher-setup-on-error/20260416-185003
base:   v7.0
patch link:    https://lore.kernel.org/r/20260407022443.12971-1-zhaoguohan%40kylinos.cn
patch subject: [PATCH] xen/manage: unwind partial shutdown watcher setup on error
config: arm64-randconfig-001-20260421 (https://download.01.org/0day-ci/archive/20260422/202604220332.2gWBxnrF-lkp@intel.com/config)
compiler: clang version 23.0.0git (https://github.com/llvm/llvm-project 5bac06718f502014fade905512f1d26d578a18f3)
reproduce (this is a W=1 build): (https://download.01.org/0day-ci/archive/20260422/202604220332.2gWBxnrF-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/202604220332.2gWBxnrF-lkp@intel.com/

All warnings (new ones prefixed by >>):

>> drivers/xen/manage.c:380:1: warning: unused label 'err_unregister_shutdown' [-Wunused-label]
     380 | err_unregister_shutdown:
         | ^~~~~~~~~~~~~~~~~~~~~~~~
   1 warning generated.


vim +/err_unregister_shutdown +380 drivers/xen/manage.c

   353	
   354		for (idx = 0; idx < ARRAY_SIZE(shutdown_handlers); idx++) {
   355			if (!shutdown_handlers[idx].flag)
   356				continue;
   357			snprintf(node, FEATURE_PATH_SIZE, "feature-%s",
   358				 shutdown_handlers[idx].command);
   359			err = xenbus_printf(XBT_NIL, "control", node, "%u", 1);
   360			if (err) {
   361				pr_err("%s: Error %d writing %s\n", __func__,
   362					err, node);
   363				goto err_remove_features;
   364			}
   365		}
   366	
   367		return 0;
   368	
   369	err_remove_features:
   370		while (--idx >= 0) {
   371			if (!shutdown_handlers[idx].flag)
   372				continue;
   373			snprintf(node, FEATURE_PATH_SIZE, "feature-%s",
   374				 shutdown_handlers[idx].command);
   375			xenbus_rm(XBT_NIL, "control", node);
   376		}
   377	#ifdef CONFIG_MAGIC_SYSRQ
   378		unregister_xenbus_watch(&sysrq_watch);
   379	#endif
 > 380	err_unregister_shutdown:
   381		unregister_xenbus_watch(&shutdown_watch);
   382		return err;
   383	}
   384	

-- 
0-DAY CI Kernel Test Service
https://github.com/intel/lkp-tests/wiki


From xen-devel-bounces@lists.xenproject.org Tue Apr 21 20:50:44 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 21 Apr 2026 20:50:44 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1289354.1569417 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wFI3A-0003i6-Gv; Tue, 21 Apr 2026 20:50:28 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1289354.1569417; Tue, 21 Apr 2026 20: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 1wFI3A-0003hz-Dy; Tue, 21 Apr 2026 20:50:28 +0000
Received: by outflank-mailman (input) for mailman id 1289354;
 Tue, 21 Apr 2026 20:50:27 +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 1wFI39-0003hs-Gs
 for xen-devel@lists.xenproject.org; Tue, 21 Apr 2026 20:50:27 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wFI38-008fJH-EW
 for xen-devel@lists.xenproject.org; Tue, 21 Apr 2026 22:50:26 +0200
Received: from [10.42.69.7] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <sstabellini@kernel.org>)
 id 69e7e2fa-2eae-0a2a0a5409dd-0a2a4507bf4a-10
 for <xen-devel@lists.xenproject.org>; Tue, 21 Apr 2026 22:50:26 +0200
Received: from [172.234.252.31] (helo=sea.source.kernel.org)
 by tlsNG-ef75cf.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.1)
 (envelope-from <sstabellini@kernel.org>)
 id 69e7e310-229c-0a2a45070019-aceafc1f9ad2-3
 for <xen-devel@lists.xenproject.org>; Tue, 21 Apr 2026 22:50:26 +0200
Received: from smtp.kernel.org (transwarp.subspace.kernel.org [100.75.92.58])
 by sea.source.kernel.org (Postfix) with ESMTP id C3634442D5;
 Tue, 21 Apr 2026 20:50:23 +0000 (UTC)
Received: by smtp.kernel.org (Postfix) with ESMTPSA id 6E5D9C2BCB0;
 Tue, 21 Apr 2026 20:50: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=k20201202 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/simple; d=kernel.org;
	s=k20201202; t=1776804623;
	bh=Fec1iEqDKYnxd6w5Ro5mBeDLbHPHRYMts/hOlSeHe5w=;
	h=Date:From:To:cc:Subject:In-Reply-To:References:From;
	b=kBRlwtk7qsxs2+Mx6JxLl/9NAOwQ65OiNOke71tpNJxJu65MTW20SgLeBng4bRC68
	 5Qw1S4vRi7S50sNBMqjiWlXVQwr0VqakJvIBS8cx0zsCedWgXwNGebI7a6Fi26GhmC
	 Jj7KdXd/23Dw6EOisXa9TgLZh6GFJFvU9gmeIGUOMCJjMBxT7Gvvo12bUE3dkW/fhZ
	 kP2YA43oGq8hr86kMF+oIScr0Y7iwSeQrxeclSiSWKtwb+xWhRsYFKWCj/DOfE8PVv
	 tzVvfiQlx6dRQNvFMB5UPX1ckMe9FxfI3iwOVlaIKXIr6UKTgL+QXFyJM5UdRdgidx
	 Ql1gV3v1yRDyA==
Date: Tue, 21 Apr 2026 13:50:20 -0700 (PDT)
From: Stefano Stabellini <sstabellini@kernel.org>
X-X-Sender: sstabellini@ubuntu-linux-20-04-desktop
To: Luca Fancellu <Luca.Fancellu@arm.com>
cc: "Orzel, Michal" <Michal.Orzel@amd.com>, 
    "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] device-tree: Improve hwdom memory allocation for DMA
In-Reply-To: <78440FF6-499A-4997-AA60-AB7EEC6AF67E@arm.com>
Message-ID: <alpine.DEB.2.22.394.2604211350130.2712345@ubuntu-linux-20-04-desktop>
References: <20260417091155.39653-1-michal.orzel@amd.com> <412A9DF8-6F5C-402D-AEBD-88E6DE139E07@arm.com> <137bd391-926d-4047-a760-638f2e58b99f@amd.com> <78440FF6-499A-4997-AA60-AB7EEC6AF67E@arm.com>
User-Agent: Alpine 2.22 (DEB 394 2020-01-19)
MIME-Version: 1.0
Content-Type: multipart/mixed; boundary="8323329-833083000-1776804623=:2712345"
X-purgate-ID: tlsNG-ef75cf/1776804626-AF374C48-B981353B/0/0
X-purgate-type: clean
X-purgate-size: 1078

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

--8323329-833083000-1776804623=:2712345
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8BIT

On Tue, 21 Apr 2026, Luca Fancellu wrote:
> >> It looks ok to me, the only thing is that if we have many smaller banks < 128 Mb before reaching
> >> one that is at least 128 Mb, we won’t allocate them and loose them forever.
> >> 
> >> It feels only a corner case so for me it’s ok
> > Yes, that's something documented in the commit msg, so if we ever face upon the
> > issue due to that we could revisit the implementation. For now, we haven't
> > observed any issues.
> > 
> >> 
> >> Reviewed-by: Luca Fancellu <luca.fancellu@arm.com <mailto:luca.fancellu@arm.com>>
> > Thanks.
> 
> I realised my mail client messed up the tag:
> 
> Reviewed-by: Luca Fancellu <luca.fancellu@arm.com>

Acked-by: Stefano Stabellini <sstabellini@kernel.org>
--8323329-833083000-1776804623=:2712345--


From xen-devel-bounces@lists.xenproject.org Tue Apr 21 20:51:24 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 21 Apr 2026 20:51:24 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1289361.1569426 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wFI44-0004A3-Oy; Tue, 21 Apr 2026 20:51:24 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1289361.1569426; Tue, 21 Apr 2026 20: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 1wFI44-00049w-MI; Tue, 21 Apr 2026 20:51:24 +0000
Received: by outflank-mailman (input) for mailman id 1289361;
 Tue, 21 Apr 2026 20:51:23 +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 1wFI43-00049k-MK
 for xen-devel@lists.xenproject.org; Tue, 21 Apr 2026 20:51:23 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wFI43-004mvp-3C
 for xen-devel@lists.xenproject.org; Tue, 21 Apr 2026 22:51:23 +0200
Received: from [10.42.69.1] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <sstabellini@kernel.org>)
 id 69e7e304-5cb7-0a2a0a5109dd-0a2a4501af86-48
 for <xen-devel@lists.xenproject.org>; Tue, 21 Apr 2026 22:51:23 +0200
Received: from [172.105.4.254] (helo=tor.source.kernel.org)
 by tlsNG-d62444.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.1)
 (envelope-from <sstabellini@kernel.org>)
 id 69e7e34a-c1f2-0a2a45010019-ac6904fe9c60-3
 for <xen-devel@lists.xenproject.org>; Tue, 21 Apr 2026 22:51:22 +0200
Received: from smtp.kernel.org (transwarp.subspace.kernel.org [100.75.92.58])
 by tor.source.kernel.org (Postfix) with ESMTP id 5CC4E61335;
 Tue, 21 Apr 2026 20:51:21 +0000 (UTC)
Received: by smtp.kernel.org (Postfix) with ESMTPSA id CC88EC2BCB0;
 Tue, 21 Apr 2026 20:51: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=k20201202 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/simple; d=kernel.org;
	s=k20201202; t=1776804681;
	bh=gRmE5P/xqA0B49fPpP73v8SZCSrWIw7Xn5tY9bP7e3o=;
	h=Date:From:To:cc:Subject:In-Reply-To:References:From;
	b=fl9IN31nX8VMmbis2euxwy9B92RizBapt/fGy2jMJzJ4h90pIXZxx3CtrZpbXKPBP
	 9jXbgFKqxxEofueIMM1I+uwELGFz+zxY/v1FhQmM4SYsgAjNsD9T3Ieosz4BpeLXck
	 lncoXgGBS53we36i8xHgNSkgbNf6TMYeVPGWYBztjyV0ks2fVtpwjUqVECSz1aItIj
	 7X6ZB0WPQfFTPsqRWkYNBRI4ar1VgZWhcTX/5sk5ell9F3dEwWq9MHRoYd+8PFb9wV
	 g/ybMD9I4jYIpWRnbnd11894qGz2KjRZUYCjeIHuJTQB0Om0xdszZGfzlQqpsexvL6
	 4uFcd+iSwwhQA==
Date: Tue, 21 Apr 2026 13:51:20 -0700 (PDT)
From: Stefano Stabellini <sstabellini@kernel.org>
X-X-Sender: sstabellini@ubuntu-linux-20-04-desktop
To: Luca Fancellu <Luca.Fancellu@arm.com>
cc: "Orzel, Michal" <Michal.Orzel@amd.com>, 
    "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>, 
    Volodymyr Babchuk <Volodymyr_Babchuk@epam.com>
Subject: Re: [PATCH] xen/arm: skip holes in physical address space when
 setting up frametable
In-Reply-To: <E42EF2D6-F806-4AF3-B736-76134E443767@arm.com>
Message-ID: <alpine.DEB.2.22.394.2604211351100.2712345@ubuntu-linux-20-04-desktop>
References: <20260417091124.39552-1-michal.orzel@amd.com> <DB4CBEA0-B901-466E-80AE-483FE00A1282@arm.com> <10ef543f-ec21-47ae-aeb2-f569f8d48e27@amd.com> <F79D2A76-9FD3-4E6F-A26F-286B57E87BD8@arm.com> <6a6aefa7-530b-4221-b2b3-65ca3298aef1@amd.com>
 <E42EF2D6-F806-4AF3-B736-76134E443767@arm.com>
User-Agent: Alpine 2.22 (DEB 394 2020-01-19)
MIME-Version: 1.0
Content-Type: multipart/mixed; boundary="8323329-768840311-1776804681=:2712345"
X-purgate-ID: tlsNG-d62444/1776804683-BCC6CFF4-0DBDB590/0/0
X-purgate-type: clean
X-purgate-size: 793

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

--8323329-768840311-1776804681=:2712345
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8BIT

On Tue, 21 Apr 2026, Luca Fancellu wrote:
> >> Otherwise we could split the round down and the frametable_base_pdx in this way maybe?
> > I don't think we need this extra complexity for something that is safe and has
> > always been in use. We've never had mfn_valid == RAM guarantee.
> 
> Thanks for checking my points, I think it’s all clear to me now.
> 
> Reviewed-by: Luca Fancellu <luca.fancellu@arm.com>

Acked-by: Stefano Stabellini <sstabellini@kernel.org>
--8323329-768840311-1776804681=:2712345--


From xen-devel-bounces@lists.xenproject.org Tue Apr 21 22:16:06 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 21 Apr 2026 22:16:06 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1289503.1569435 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wFJNo-0008ET-Do; Tue, 21 Apr 2026 22:15:52 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1289503.1569435; Tue, 21 Apr 2026 22:15: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 1wFJNo-0008EM-Av; Tue, 21 Apr 2026 22:15:52 +0000
Received: by outflank-mailman (input) for mailman id 1289503;
 Tue, 21 Apr 2026 22:15:50 +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 1wFJNm-0008EG-RT
 for xen-devel@lists.xenproject.org; Tue, 21 Apr 2026 22:15:50 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wFJNm-004wr3-4u
 for xen-devel@lists.xenproject.org; Wed, 22 Apr 2026 00:15:50 +0200
Received: from [10.42.69.1] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <sstabellini@kernel.org>)
 id 69e7f713-e002-0a2a0a5209dd-0a2a4501e340-2
 for <xen-devel@lists.xenproject.org>; Wed, 22 Apr 2026 00:15:50 +0200
Received: from [172.234.252.31] (helo=sea.source.kernel.org)
 by tlsNG-d62444.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.1)
 (envelope-from <sstabellini@kernel.org>)
 id 69e7f714-c1f2-0a2a45010019-aceafc1faaa0-3
 for <xen-devel@lists.xenproject.org>; Wed, 22 Apr 2026 00:15:49 +0200
Received: from smtp.kernel.org (transwarp.subspace.kernel.org [100.75.92.58])
 by sea.source.kernel.org (Postfix) with ESMTP id D0B924398A;
 Tue, 21 Apr 2026 22:15:47 +0000 (UTC)
Received: by smtp.kernel.org (Postfix) with ESMTPSA id 7C38AC2BCB0;
 Tue, 21 Apr 2026 22:15:47 +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=k20201202 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/simple; d=kernel.org;
	s=k20201202; t=1776809747;
	bh=NfBjnF3RMsUTEmScq9PdBZRS6CXEDdg+7HmbQnO8qxo=;
	h=Date:From:To:cc:Subject:In-Reply-To:References:From;
	b=R2bYwOXyngl7K8YMlwELC+H3KmwMPxDNGPvAnwtynguqOQLPwx0rEmH+fRKumO7+H
	 iDWROpX0Qc91c3+KZq/1QDz0FzBU6q7H0O0T2NQ9Ybq7l9PFAeOGx0aS7Jkfanx2+o
	 y2vUnnV424ZqgVusAhXqlcAKeWswdbO0fuURUIgRrN5rboJLT+aqnkQJptyRB+SmxD
	 M4FNIqxLmpnDfz6dUmPYuBWjavgWolv7wpnSIeJCqvejWkHZgFiE6At8aCtPS5SKMD
	 CazwAbbxj584SiM49PRLUYOW9YqhJ5uMCXW3SPHeBQogSlr3WwtEsaS8q+4XrMAjlO
	 hnz4oWHY6GHjg==
Date: Tue, 21 Apr 2026 15:15:44 -0700 (PDT)
From: Stefano Stabellini <sstabellini@kernel.org>
X-X-Sender: sstabellini@ubuntu-linux-20-04-desktop
To: Thomas Huth <thuth@redhat.com>
cc: Juergen Gross <jgross@suse.com>, 
    Stefano Stabellini <sstabellini@kernel.org>, 
    Oleksandr Tyshchenko <oleksandr_tyshchenko@epam.com>, 
    xen-devel@lists.xenproject.org, linux-kernel@vger.kernel.org
Subject: Re: [PATCH] xen/arm: Replace __ASSEMBLY__ with __ASSEMBLER__ in
 interface.h
In-Reply-To: <20260421142701.548978-1-thuth@redhat.com>
Message-ID: <alpine.DEB.2.22.394.2604211513030.2712345@ubuntu-linux-20-04-desktop>
References: <20260421142701.548978-1-thuth@redhat.com>
User-Agent: Alpine 2.22 (DEB 394 2020-01-19)
MIME-Version: 1.0
Content-Type: text/plain; charset=US-ASCII
X-purgate-ID: tlsNG-d62444/1776809750-BD66FFF4-29793DDF/0/0
X-purgate-type: clean
X-purgate-size: 1743

On Tue, 21 Apr 2026, Thomas Huth wrote:
> From: Thomas Huth <thuth@redhat.com>
> 
> While the GCC and Clang compilers already define __ASSEMBLER__
> automatically when compiling assembly code, __ASSEMBLY__ is a
> macro that only gets defined by the Makefiles in the kernel.
> This can be very confusing when switching between userspace
> and kernelspace coding, or when dealing with uapi headers that
> rather should use __ASSEMBLER__ instead. So let's standardize now
> on the __ASSEMBLER__ macro that is provided by the compilers.
> 
> Signed-off-by: Thomas Huth <thuth@redhat.com>

I haven't been closely following the __ASSEMBLER__ vs __ASSEMBLY__
discussion. If there is general agreement to use __ASSEMBLER__ in
headers, I am happy to go along with that. Currently, I see more than
140 uses of __ASSEMBLY__ compared to fewer than 20 uses of
__ASSEMBLER__, but I'll defer to your judgment if the project is moving
in that direction.


> ---
>  Note: This patch has been split from an earlier patch series of mine
>  to ease reviewing.
> 
>  include/xen/arm/interface.h | 2 +-
>  1 file changed, 1 insertion(+), 1 deletion(-)
> 
> diff --git a/include/xen/arm/interface.h b/include/xen/arm/interface.h
> index c3eada2642aa9..61360b89da405 100644
> --- a/include/xen/arm/interface.h
> +++ b/include/xen/arm/interface.h
> @@ -30,7 +30,7 @@
>  
>  #define __HYPERVISOR_platform_op_raw __HYPERVISOR_platform_op
>  
> -#ifndef __ASSEMBLY__
> +#ifndef __ASSEMBLER__
>  /* Explicitly size integers that represent pfns in the interface with
>   * Xen so that we can have one ABI that works for 32 and 64 bit guests.
>   * Note that this means that the xen_pfn_t type may be capable of
> -- 
> 2.53.0
> 


From xen-devel-bounces@lists.xenproject.org Tue Apr 21 22:17:28 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 21 Apr 2026 22:17:28 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1289511.1569445 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wFJPL-0000g7-Mi; Tue, 21 Apr 2026 22:17:27 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1289511.1569445; Tue, 21 Apr 2026 22:17: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 1wFJPL-0000g0-K1; Tue, 21 Apr 2026 22:17:27 +0000
Received: by outflank-mailman (input) for mailman id 1289511;
 Tue, 21 Apr 2026 22:17:26 +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 1wFJPK-0000IM-Ml
 for xen-devel@lists.xenproject.org; Tue, 21 Apr 2026 22:17:26 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wFJPH-00FslP-TK
 for xen-devel@lists.xenproject.org; Wed, 22 Apr 2026 00:17:23 +0200
Received: from [10.42.69.2] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <sstabellini@kernel.org>)
 id 69e7f6ec-5cb7-0a2a0a5109dd-0a2a450285d8-48
 for <xen-devel@lists.xenproject.org>; Wed, 22 Apr 2026 00:17:23 +0200
Received: from [172.234.252.31] (helo=sea.source.kernel.org)
 by tlsNG-720697.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.1)
 (envelope-from <sstabellini@kernel.org>)
 id 69e7f772-af86-0a2a45020019-aceafc1fa924-3
 for <xen-devel@lists.xenproject.org>; Wed, 22 Apr 2026 00:17:23 +0200
Received: from smtp.kernel.org (transwarp.subspace.kernel.org [100.75.92.58])
 by sea.source.kernel.org (Postfix) with ESMTP id C9D7C4027F;
 Tue, 21 Apr 2026 22:17:21 +0000 (UTC)
Received: by smtp.kernel.org (Postfix) with ESMTPSA id 28B88C2BCB0;
 Tue, 21 Apr 2026 22:17: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=k20201202 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/simple; d=kernel.org;
	s=k20201202; t=1776809841;
	bh=xn3A0NuiXervtpsnojkWIHY+IxM7mxFsV2qRaCcwuBw=;
	h=Date:From:To:cc:Subject:In-Reply-To:References:From;
	b=KtkGvelEDf1hG0x8PyI9REg7xzzQaxMRvWbeJOoOnx1VK9XlOV/dnFn9qBOFQSmRX
	 9JqSmfS+j1Tu48/gjLu+/w1V0p0eEfX0H4KYeJ/RfGnktJ7aCGn/8Kfe6fTif0YHmF
	 ry2VzX72a4Bo7ZmGOZKA8dhKg481w6hqJDtc6Lnr7pFwWsiRau27MzI9eTNPyTZKKU
	 XREwupqJbtttt/HVlvxSP8TGrrFKd3ruUgd+hBE5tMEXJHtLQwzdi5AiDJAOVMWcuR
	 sHuxp1PTJgo8GdYDOHO4Yel17ObEmwI/zQMuGDtDnDP+w87Qtpsr3IeWXGczP8a4q1
	 fCYMiFIscQ/Jg==
Date: Tue, 21 Apr 2026 15:17:20 -0700 (PDT)
From: Stefano Stabellini <sstabellini@kernel.org>
X-X-Sender: sstabellini@ubuntu-linux-20-04-desktop
To: Luca Fancellu <Luca.Fancellu@arm.com>
cc: Michal Orzel <michal.orzel@amd.com>, 
    "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>, 
    Gyujeong Jin <wlsrbwjd7232@gmail.com>
Subject: Re: [PATCH 1/6] xen/dt-overlay: fix double-free of rangesets on
 attach failure
In-Reply-To: <A0CD5D33-67D7-4A69-A5C3-C7C37F72830C@arm.com>
Message-ID: <alpine.DEB.2.22.394.2604211517140.2712345@ubuntu-linux-20-04-desktop>
References: <20260415113700.107915-1-michal.orzel@amd.com> <20260415113700.107915-2-michal.orzel@amd.com> <A0CD5D33-67D7-4A69-A5C3-C7C37F72830C@arm.com>
User-Agent: Alpine 2.22 (DEB 394 2020-01-19)
MIME-Version: 1.0
Content-Type: text/plain; charset=US-ASCII
X-purgate-ID: tlsNG-720697/1776809843-82B68161-A53F0E86/0/0
X-purgate-type: clean
X-purgate-size: 1002

On Wed, 15 Apr 2026, Luca Fancellu wrote:
> Hi Michal,
> 
> > On 15 Apr 2026, at 12:36, Michal Orzel <michal.orzel@amd.com> wrote:
> > 
> > handle_attach_overlay_nodes() destroys the IRQ and IOMEM rangesets on
> > failure but leaves the pointers dangling in the tracker entry. A
> > subsequent handle_remove_overlay_nodes() for the same overlay will call
> > rangeset_consume_ranges() on freed memory followed by a second
> > rangeset_destroy(), resulting in use-after-free and double-free.
> > 
> > NULL the pointers after rangeset_destroy() so that remove_nodes() and
> > handle_remove_overlay_nodes() skip the stale entries.
> > 
> > Fixes: 4c733873b5c2 ("xen/arm: Add XEN_DOMCTL_dt_overlay and device attachment to domains")
> > Reported-by: Gyujeong Jin <wlsrbwjd7232@gmail.com>
> > Signed-off-by: Michal Orzel <michal.orzel@amd.com>
> > ---
> 
> Looks ok to me
> 
> Reviewed-by: Luca Fancellu <luca.fancellu@arm.com>

Acked-by: Stefano Stabellini <sstabellini@kernel.org>


From xen-devel-bounces@lists.xenproject.org Tue Apr 21 22:17:38 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 21 Apr 2026 22:17:38 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1289513.1569454 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wFJPW-0000xi-UH; Tue, 21 Apr 2026 22:17:38 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1289513.1569454; Tue, 21 Apr 2026 22:17: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 1wFJPW-0000xb-QJ; Tue, 21 Apr 2026 22:17:38 +0000
Received: by outflank-mailman (input) for mailman id 1289513;
 Tue, 21 Apr 2026 22:17:37 +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 1wFJPV-0000x3-LV
 for xen-devel@lists.xenproject.org; Tue, 21 Apr 2026 22:17:37 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wFJPV-004wxQ-2Z
 for xen-devel@lists.xenproject.org; Wed, 22 Apr 2026 00:17:37 +0200
Received: from [10.42.69.5] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <sstabellini@kernel.org>)
 id 69e7f77a-e002-0a2a0a5209dd-0a2a4505a99a-4
 for <xen-devel@lists.xenproject.org>; Wed, 22 Apr 2026 00:17:37 +0200
Received: from [172.234.252.31] (helo=sea.source.kernel.org)
 by tlsNG-c201ff.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.1)
 (envelope-from <sstabellini@kernel.org>)
 id 69e7f77f-aaa8-0a2a45050019-aceafc1fbc22-3
 for <xen-devel@lists.xenproject.org>; Wed, 22 Apr 2026 00:17:36 +0200
Received: from smtp.kernel.org (transwarp.subspace.kernel.org [100.75.92.58])
 by sea.source.kernel.org (Postfix) with ESMTP id 5415840ABC;
 Tue, 21 Apr 2026 22:17:35 +0000 (UTC)
Received: by smtp.kernel.org (Postfix) with ESMTPSA id D5D01C2BCB0;
 Tue, 21 Apr 2026 22:17: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=k20201202 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/simple; d=kernel.org;
	s=k20201202; t=1776809855;
	bh=vXU7Zt2l4M8G60BE1c8ZN9B628h/QdmUsGy42HqenXo=;
	h=Date:From:To:cc:Subject:In-Reply-To:References:From;
	b=FNdtPAUoIer4gcLCjIByRdrBvDT6mt2BUhuh9N7PzxY3Bm6MNQblen6BwAv0C+wga
	 EWIpZR5P/KaWuWN2ETOoR7dM7HeumTUPg/2ywgYZHflZMNlTUF1q5XEdWBfarAdR/U
	 d1JZi3n17cyy/3YatGNfLk/CEVrhf0aUIw4nvgpZvNS0RYEr/jP61YgLMFMmJrD+Oo
	 MfFimqrNMYjjhTSxNxyF6yDH2L7ACDxpWIv7d3EgOSwyvY24rbpJcbU8MDGshz2vc4
	 M7jVq+yarMY0t2+R2dILVK0ZzIEn6ZUK1zYrWUtqqgcv1IA4ZuRGX4yIlQSLTFGDaj
	 5daxqncPX/U+g==
Date: Tue, 21 Apr 2026 15:17:34 -0700 (PDT)
From: Stefano Stabellini <sstabellini@kernel.org>
X-X-Sender: sstabellini@ubuntu-linux-20-04-desktop
To: Luca Fancellu <Luca.Fancellu@arm.com>
cc: Michal Orzel <michal.orzel@amd.com>, 
    "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>, 
    Jan Beulich <jbeulich@suse.com>
Subject: Re: [PATCH 2/6] xen/dt-overlay: fix rangeset leak and dead code in
 domctl path
In-Reply-To: <33C5577E-F6AE-4FC2-BE53-879BA4EB6198@arm.com>
Message-ID: <alpine.DEB.2.22.394.2604211517270.2712345@ubuntu-linux-20-04-desktop>
References: <20260415113700.107915-1-michal.orzel@amd.com> <20260415113700.107915-3-michal.orzel@amd.com> <33C5577E-F6AE-4FC2-BE53-879BA4EB6198@arm.com>
User-Agent: Alpine 2.22 (DEB 394 2020-01-19)
MIME-Version: 1.0
Content-Type: text/plain; charset=US-ASCII
X-purgate-ID: tlsNG-c201ff/1776809857-E8BAC443-83659651/0/0
X-purgate-type: clean
X-purgate-size: 939

On Wed, 15 Apr 2026, Luca Fancellu wrote:
> Hi Michal,
> 
> > On 15 Apr 2026, at 12:36, Michal Orzel <michal.orzel@amd.com> wrote:
> > 
> > handle_attach_overlay_nodes() unconditionally creates new rangesets
> > without checking whether they already exist from a prior attach. A
> > repeated attach for the same overlay leaks the original pair. Reject the
> > operation with -EEXIST if rangesets are already present.
> > 
> > Also, dt_overlay_domctl() early-returns -EOPNOTSUPP for any operation
> > other than ATTACH, making the if/else at the bottom unreachable. Remove
> > the dead branch.
> > 
> > Fixes: 4c733873b5c2 ("xen/arm: Add XEN_DOMCTL_dt_overlay and device attachment to domains")
> > Reported-by: Jan Beulich <jbeulich@suse.com>
> > Signed-off-by: Michal Orzel <michal.orzel@amd.com>
> > ---
> 
> Reviewed-by: Luca Fancellu <luca.fancellu@arm.com>

Acked-by: Stefano Stabellini <sstabellini@kernel.org>


From xen-devel-bounces@lists.xenproject.org Tue Apr 21 22:17:50 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 21 Apr 2026 22:17:50 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1289521.1569462 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wFJPi-0001Pk-7y; Tue, 21 Apr 2026 22:17:50 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1289521.1569462; Tue, 21 Apr 2026 22:17: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 1wFJPi-0001Pd-53; Tue, 21 Apr 2026 22:17:50 +0000
Received: by outflank-mailman (input) for mailman id 1289521;
 Tue, 21 Apr 2026 22:17:49 +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 1wFJPh-0001PC-PE
 for xen-devel@lists.xenproject.org; Tue, 21 Apr 2026 22:17:49 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wFJPh-000y8Y-5r
 for xen-devel@lists.xenproject.org; Wed, 22 Apr 2026 00:17:49 +0200
Received: from [10.42.69.10] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <sstabellini@kernel.org>)
 id 69e7f767-e002-0a2a0a5209dd-0a2a450abba8-16
 for <xen-devel@lists.xenproject.org>; Wed, 22 Apr 2026 00:17:49 +0200
Received: from [172.234.252.31] (helo=sea.source.kernel.org)
 by tlsNG-4011c0.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.1)
 (envelope-from <sstabellini@kernel.org>)
 id 69e7f78b-56b3-0a2a450a0019-aceafc1fa868-3
 for <xen-devel@lists.xenproject.org>; Wed, 22 Apr 2026 00:17:48 +0200
Received: from smtp.kernel.org (transwarp.subspace.kernel.org [100.75.92.58])
 by sea.source.kernel.org (Postfix) with ESMTP id 6C3BE4171F;
 Tue, 21 Apr 2026 22:17:47 +0000 (UTC)
Received: by smtp.kernel.org (Postfix) with ESMTPSA id 1D3DFC2BCB0;
 Tue, 21 Apr 2026 22:17:47 +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=k20201202 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/simple; d=kernel.org;
	s=k20201202; t=1776809867;
	bh=LPo7tVyH/24wj01Stx7zcbN5lhedJIwpaXTZlSeA/dM=;
	h=Date:From:To:cc:Subject:In-Reply-To:References:From;
	b=nnyuU6QspuxnUbGajZmzv9QgzBbvfcz4RSflKs2crXmSSFgCZu8Vep4o6mj7taCm9
	 VCdv92qVvINYDxC0dC2QKBQPCbpy43OcBAA0T9Uv7HBTESKoTSPg39vb0/C/iCDSZ5
	 2PjtFUctBMofjhm28m0Uz1OheuzKlQPhvjIa6eFjw9JE5eEriWoTNSazPjSCVpgw1P
	 KRWB1jRKyfahdt2mOxumLydHyEc+eBXYRRGO1qcdNAhlhfZUNY1o8u3WVdExKdSotB
	 7HJ/zHkRzBdgILXyEdIBURhM6EiUxLggf2nkxz6noc6ULiBab/gQ9e/qA+jXOKZ/8A
	 dW5+dnU0We6IA==
Date: Tue, 21 Apr 2026 15:17:46 -0700 (PDT)
From: Stefano Stabellini <sstabellini@kernel.org>
X-X-Sender: sstabellini@ubuntu-linux-20-04-desktop
To: Luca Fancellu <Luca.Fancellu@arm.com>
cc: Michal Orzel <michal.orzel@amd.com>, 
    "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 3/6] xen/dt-overlay: check overlay size before memcmp in
 tracker lookup
In-Reply-To: <BFE6762A-7A1B-484C-B69B-43D9FB13B47E@arm.com>
Message-ID: <alpine.DEB.2.22.394.2604211517400.2712345@ubuntu-linux-20-04-desktop>
References: <20260415113700.107915-1-michal.orzel@amd.com> <20260415113700.107915-4-michal.orzel@amd.com> <BFE6762A-7A1B-484C-B69B-43D9FB13B47E@arm.com>
User-Agent: Alpine 2.22 (DEB 394 2020-01-19)
MIME-Version: 1.0
Content-Type: text/plain; charset=US-ASCII
X-purgate-ID: tlsNG-4011c0/1776809869-44F618B7-82C6F0C9/0/0
X-purgate-type: clean
X-purgate-size: 964

On Wed, 15 Apr 2026, Luca Fancellu wrote:
> Hi Michal,
> 
> > On 15 Apr 2026, at 12:36, Michal Orzel <michal.orzel@amd.com> wrote:
> > 
> > find_track_entry_from_tracker() compares overlay_fdt_size bytes of the
> > stored overlay against the input without verifying that the stored
> > overlay is at least that large. If the input is larger, memcmp reads
> > past the stored allocation. If smaller, a prefix match could falsely
> > succeed.
> > 
> > Compare fdt_totalsize() of the stored overlay against overlay_fdt_size
> > first. Both values are validated by check_overlay_fdt() at their
> > respective entry points, so no additional field in overlay_track is
> > needed.
> > 
> > Fixes: 7e5c4a8b86f1 ("xen/arm: Implement device tree node removal functionalities")
> > Signed-off-by: Michal Orzel <michal.orzel@amd.com>
> > ---
> 
> Reviewed-by: Luca Fancellu <luca.fancellu@arm.com>

Acked-by: Stefano Stabellini <sstabellini@kernel.org>


From xen-devel-bounces@lists.xenproject.org Tue Apr 21 22:18:00 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 21 Apr 2026 22:18:00 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1289529.1569472 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wFJPs-0001t6-Fq; Tue, 21 Apr 2026 22:18:00 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1289529.1569472; Tue, 21 Apr 2026 22:18: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 1wFJPs-0001sv-CR; Tue, 21 Apr 2026 22:18:00 +0000
Received: by outflank-mailman (input) for mailman id 1289529;
 Tue, 21 Apr 2026 22:17:59 +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 1wFJPr-0001qx-CA
 for xen-devel@lists.xenproject.org; Tue, 21 Apr 2026 22:17:59 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wFJPq-00CV3J-PU
 for xen-devel@lists.xenproject.org; Wed, 22 Apr 2026 00:17:58 +0200
Received: from [10.42.69.2] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <sstabellini@kernel.org>)
 id 69e7f774-bab6-0a2a0a5309dd-0a2a4502dd44-22
 for <xen-devel@lists.xenproject.org>; Wed, 22 Apr 2026 00:17:58 +0200
Received: from [172.105.4.254] (helo=tor.source.kernel.org)
 by tlsNG-720697.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.1)
 (envelope-from <sstabellini@kernel.org>)
 id 69e7f795-af86-0a2a45020019-ac6904febb14-3
 for <xen-devel@lists.xenproject.org>; Wed, 22 Apr 2026 00:17:58 +0200
Received: from smtp.kernel.org (transwarp.subspace.kernel.org [100.75.92.58])
 by tor.source.kernel.org (Postfix) with ESMTP id 4A45161335;
 Tue, 21 Apr 2026 22:17:57 +0000 (UTC)
Received: by smtp.kernel.org (Postfix) with ESMTPSA id C9617C2BCB0;
 Tue, 21 Apr 2026 22:17:56 +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=k20201202 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/simple; d=kernel.org;
	s=k20201202; t=1776809877;
	bh=J9vaM3OKaCkqhTApqyllVmpe1yCscLm46h/f+zHtfjE=;
	h=Date:From:To:cc:Subject:In-Reply-To:References:From;
	b=QsfthhKFZc4jFzf4IQB7RQYeI52PkWCTCojBlyBFd/xsOICz1L921HShVeRLl5h19
	 WRX87wCY0iT9XVoI6bCUNDxXwAfSMmU1Vt7DU+zoWrXJSeN8Udz870zLiQjbN3K92/
	 wGh0G7Cp9ziExB20h1/vVEKeDnMsTK2VfME0nmF3M3bnAmQ8/il6FQI2tJrsSWAlxr
	 qOYjpI3wwIVUfII0VdM+KzFFaNmaQoLLo0grLyvCC7ORA1763GWJgdWIGT1zgWmYnW
	 7oWjdb7JrRcahhPex9wksibOYTx6W6qRGwqcR+gI51wYOK8JscQGTiY63AzWaXoISQ
	 L0lYybZONX1Fw==
Date: Tue, 21 Apr 2026 15:17:56 -0700 (PDT)
From: Stefano Stabellini <sstabellini@kernel.org>
X-X-Sender: sstabellini@ubuntu-linux-20-04-desktop
To: Luca Fancellu <Luca.Fancellu@arm.com>
cc: Michal Orzel <michal.orzel@amd.com>, 
    "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 4/6] xen/dt-overlay: fix silent success in
 dt_overlay_remove_node
In-Reply-To: <30CCBA3C-D43C-4516-9DB7-9333428AE277@arm.com>
Message-ID: <alpine.DEB.2.22.394.2604211517510.2712345@ubuntu-linux-20-04-desktop>
References: <20260415113700.107915-1-michal.orzel@amd.com> <20260415113700.107915-5-michal.orzel@amd.com> <30CCBA3C-D43C-4516-9DB7-9333428AE277@arm.com>
User-Agent: Alpine 2.22 (DEB 394 2020-01-19)
MIME-Version: 1.0
Content-Type: text/plain; charset=US-ASCII
X-purgate-ID: tlsNG-720697/1776809878-83B60161-B5CB9EEB/0/0
X-purgate-type: clean
X-purgate-size: 872

On Wed, 15 Apr 2026, Luca Fancellu wrote:
> Hi Michal,
> 
> > On 15 Apr 2026, at 12:36, Michal Orzel <michal.orzel@amd.com> wrote:
> > 
> > dt_overlay_remove_node() silently returns 0 when the target node is not
> > found in the parent's sibling list.  The loop simply exits without
> > matching and falls through to "return 0", making the caller believe the
> > node was successfully removed.
> > 
> > Return -ENODEV after the loop when no match is found, and change the
> > found-path from break to an explicit return 0 so the two outcomes are
> > distinct.
> > 
> > Fixes: 7e5c4a8b86f1 ("xen/arm: Implement device tree node removal functionalities")
> > Signed-off-by: Michal Orzel <michal.orzel@amd.com>
> > ---
> 
> Looks ok to me
> 
> Reviewed-by: Luca Fancellu <luca.fancellu@arm.com>


Acked-by: Stefano Stabellini <sstabellini@kernel.org>


From xen-devel-bounces@lists.xenproject.org Tue Apr 21 22:18:16 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 21 Apr 2026 22:18:16 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1289544.1569481 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wFJQ7-0002Uo-My; Tue, 21 Apr 2026 22:18:15 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1289544.1569481; Tue, 21 Apr 2026 22:18: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 1wFJQ7-0002Uh-Jb; Tue, 21 Apr 2026 22:18:15 +0000
Received: by outflank-mailman (input) for mailman id 1289544;
 Tue, 21 Apr 2026 22:18:14 +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 1wFJQ6-0002RD-5o
 for xen-devel@lists.xenproject.org; Tue, 21 Apr 2026 22:18:14 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wFJQ5-00CV3J-Iw
 for xen-devel@lists.xenproject.org; Wed, 22 Apr 2026 00:18:13 +0200
Received: from [10.42.69.12] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <sstabellini@kernel.org>)
 id 69e7f795-bab6-0a2a0a5309dd-0a2a450cc294-16
 for <xen-devel@lists.xenproject.org>; Wed, 22 Apr 2026 00:18:13 +0200
Received: from [172.234.252.31] (helo=sea.source.kernel.org)
 by tlsNG-d25034.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.1)
 (envelope-from <sstabellini@kernel.org>)
 id 69e7f7a4-62f1-0a2a450c0019-aceafc1f8c9a-3
 for <xen-devel@lists.xenproject.org>; Wed, 22 Apr 2026 00:18:13 +0200
Received: from smtp.kernel.org (transwarp.subspace.kernel.org [100.75.92.58])
 by sea.source.kernel.org (Postfix) with ESMTP id 921DD442F6;
 Tue, 21 Apr 2026 22:18:11 +0000 (UTC)
Received: by smtp.kernel.org (Postfix) with ESMTPSA id 40D2FC2BCB0;
 Tue, 21 Apr 2026 22: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=k20201202 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/simple; d=kernel.org;
	s=k20201202; t=1776809891;
	bh=2xeBObuedmJATaRuUNLkyPnDkO0LC0/L6UFg5lUnibI=;
	h=Date:From:To:cc:Subject:In-Reply-To:References:From;
	b=ryPDxwZGTu0dKSqz6U10NYCRcfQ7FTiz80TfcN8ceh1r3zXykUeLEhqSJK6rwlROE
	 oE9ES3QGJ2XfWm5341uSLnuOnRUe0Iku5m5nA4Y2zj+vpQWq5lUjWgwd7ho6OJraWX
	 +9fsMvzXUFtANqGDuj6MNIOuEd5nwhkWmk7fCmTpnxUVvjENp+wq9qe43qV4WKeMRg
	 CgMivQSG8zlsdeQklXt5cfMTgTQTN2vEp8sQYXEbqjbnQL/P7NjcTUNB3vfqo2ox+6
	 uK3IvD6SAXmt0i2upZaY7+Q4vympL62s5TdGyZorhYBLBKEIT4IkR3ItKDo9OQJ/3y
	 6+83NCuKaPjSA==
Date: Tue, 21 Apr 2026 15:18:10 -0700 (PDT)
From: Stefano Stabellini <sstabellini@kernel.org>
X-X-Sender: sstabellini@ubuntu-linux-20-04-desktop
To: Luca Fancellu <Luca.Fancellu@arm.com>
cc: "Orzel, Michal" <Michal.Orzel@amd.com>, 
    "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 5/6] xen/dt-overlay: support phandle-based targeting in
 overlay_get_nodes_info
In-Reply-To: <2CD46F3B-C978-47F3-ACBC-BF2F39985B42@arm.com>
Message-ID: <alpine.DEB.2.22.394.2604211518000.2712345@ubuntu-linux-20-04-desktop>
References: <20260415113700.107915-1-michal.orzel@amd.com> <20260415113700.107915-6-michal.orzel@amd.com> <519E2133-12B9-4E51-A7A5-FDBADF82159E@arm.com> <1ab0c888-e890-490e-adad-938222f31a62@amd.com> <6E811F82-6F9F-4894-B2A3-03AA166E78F4@arm.com>
 <de3ed940-c788-480b-8820-66afb3c8dc82@amd.com> <2CD46F3B-C978-47F3-ACBC-BF2F39985B42@arm.com>
User-Agent: Alpine 2.22 (DEB 394 2020-01-19)
MIME-Version: 1.0
Content-Type: multipart/mixed; boundary="8323329-2027018740-1776809891=:2712345"
X-purgate-ID: tlsNG-d25034/1776809893-6FB7CCF5-2F89B701/0/0
X-purgate-type: clean
X-purgate-size: 745

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

--8323329-2027018740-1776809891=:2712345
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8BIT

On Thu, 16 Apr 2026, Luca Fancellu wrote:
> >> Ok, do we also want to print a warning in case of malformed properties instead
> >> of ignoring and continue?
> > That's really a matter of taste. I would not do it unless you really want to.
> 
> I’ll leave this to the other maintainer, with the fix above:
> 
> Reviewed-by: Luca Fancellu <luca.fancellu@arm.com>

Acked-by: Stefano Stabellini <sstabellini@kernel.org>
--8323329-2027018740-1776809891=:2712345--


From xen-devel-bounces@lists.xenproject.org Tue Apr 21 22:18:27 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 21 Apr 2026 22:18:27 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1289552.1569489 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wFJQI-0002uy-UC; Tue, 21 Apr 2026 22:18:26 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1289552.1569489; Tue, 21 Apr 2026 22: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 1wFJQI-0002ur-RX; Tue, 21 Apr 2026 22:18:26 +0000
Received: by outflank-mailman (input) for mailman id 1289552;
 Tue, 21 Apr 2026 22:18:25 +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 1wFJQH-0002tW-4A
 for xen-devel@lists.xenproject.org; Tue, 21 Apr 2026 22:18:25 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wFJQG-00CVAL-HN
 for xen-devel@lists.xenproject.org; Wed, 22 Apr 2026 00:18:24 +0200
Received: from [10.42.69.2] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <sstabellini@kernel.org>)
 id 69e7f774-bab6-0a2a0a5309dd-0a2a4502dd44-44
 for <xen-devel@lists.xenproject.org>; Wed, 22 Apr 2026 00:18:24 +0200
Received: from [172.234.252.31] (helo=sea.source.kernel.org)
 by tlsNG-720697.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.1)
 (envelope-from <sstabellini@kernel.org>)
 id 69e7f7af-af86-0a2a45020019-aceafc1fc04c-3
 for <xen-devel@lists.xenproject.org>; Wed, 22 Apr 2026 00:18:24 +0200
Received: from smtp.kernel.org (transwarp.subspace.kernel.org [100.75.92.58])
 by sea.source.kernel.org (Postfix) with ESMTP id BC30D44346;
 Tue, 21 Apr 2026 22:18:22 +0000 (UTC)
Received: by smtp.kernel.org (Postfix) with ESMTPSA id 5BED6C2BCB0;
 Tue, 21 Apr 2026 22: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=k20201202 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/simple; d=kernel.org;
	s=k20201202; t=1776809902;
	bh=xY5cI7DXMyU9Nx2r71/2aeXZWERBlGLgKOcoLddlEAY=;
	h=Date:From:To:cc:Subject:In-Reply-To:References:From;
	b=J+8PdrNNgP2NOr9wFVWGRxTvihCzC05lYl5/sncLZI3U2ASpYR+6L5S8FYYizI3VE
	 EzoinrKsC/IWeIqUt55qxs8dZAqg8m9U7a+p36VnMoPRVzRtXUFhvwtqQyzTo2sGz9
	 0YdqrsKX4tfDhnOv93bJpDvY9m7qfMe3/y3q3k2mCfOrTqY58KODoCbaDpzslciiC4
	 Bl06feLTkzBJAD4Qq/QFBMZpIyGjUzWC4IYRlR27YJgpMzVGQmjRP0YL8IZJjO+UNc
	 UHzFnI+QrKBcTPMF0j5oAPppTzulXulcC6reOx5V06mEQ/xoG0uzaEAdAx1qcOWTBz
	 x4Mpkt+sVLS3Q==
Date: Tue, 21 Apr 2026 15:18:21 -0700 (PDT)
From: Stefano Stabellini <sstabellini@kernel.org>
X-X-Sender: sstabellini@ubuntu-linux-20-04-desktop
To: Luca Fancellu <Luca.Fancellu@arm.com>
cc: Michal Orzel <michal.orzel@amd.com>, 
    "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 6/6] xen/dt-overlay: attach resources for child nodes in
 overlay
In-Reply-To: <399078B8-E138-4689-AF98-8BDC6052C080@arm.com>
Message-ID: <alpine.DEB.2.22.394.2604211518140.2712345@ubuntu-linux-20-04-desktop>
References: <20260415113700.107915-1-michal.orzel@amd.com> <20260415113700.107915-7-michal.orzel@amd.com> <399078B8-E138-4689-AF98-8BDC6052C080@arm.com>
User-Agent: Alpine 2.22 (DEB 394 2020-01-19)
MIME-Version: 1.0
Content-Type: text/plain; charset=US-ASCII
X-purgate-ID: tlsNG-720697/1776809904-8137C161-35518EB2/0/0
X-purgate-type: clean
X-purgate-size: 1224

On Wed, 15 Apr 2026, Luca Fancellu wrote:
> Hi Michal,
> 
> > On 15 Apr 2026, at 12:37, Michal Orzel <michal.orzel@amd.com> wrote:
> > 
> > handle_attach_overlay_nodes() only calls handle_device() on the
> > top-level overlay nodes tracked in entry->nodes_address[].  Child nodes
> > that have their own reg, interrupts, or iommus properties are never
> > processed, so their IRQs are not routed, MMIO regions are not mapped,
> > and IOMMU setup is skipped.
> > 
> > Introduce handle_device_and_children() which recursively walks the
> > subtree rooted at each overlay node and calls handle_device() on every
> > descendant, ensuring all resources in the overlay are properly attached.
> > 
> > Note that the attach error path has a pre-existing bug: on partial
> > failure, the tracking rangesets are destroyed without first revoking the
> > IRQ/MMIO permissions and IOMMU assignments that were already granted by
> > the successful handle_device() calls.  Add a TODO comment to flag this.
> > 
> > Signed-off-by: Michal Orzel <michal.orzel@amd.com>
> > ---
> > 
> 
> Looks ok to me
> 
> Reviewed-by: Luca Fancellu <luca.fancellu@arm.com>

Acked-by: Stefano Stabellini <sstabellini@kernel.org>


From xen-devel-bounces@lists.xenproject.org Tue Apr 21 23:42:10 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 21 Apr 2026 23:42:10 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1289702.1569498 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wFKj4-0000WA-KW; Tue, 21 Apr 2026 23:41:54 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1289702.1569498; Tue, 21 Apr 2026 23:41: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 1wFKj4-0000W3-Hn; Tue, 21 Apr 2026 23:41:54 +0000
Received: by outflank-mailman (input) for mailman id 1289702;
 Tue, 21 Apr 2026 23:41:53 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <joan.bae@boeing.com>) id 1wFKj2-0000Vw-MB
 for xen-devel@lists.xenproject.org; Tue, 21 Apr 2026 23:41:53 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wFKj1-008xB6-5m
 for xen-devel@lists.xenproject.org; Wed, 22 Apr 2026 01:41:51 +0200
Received: from [10.42.69.5] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <joan.bae@boeing.com>)
 id 69e80aea-bab6-0a2a0a5309dd-0a2a4505b9b0-40
 for <xen-devel@lists.xenproject.org>; Wed, 22 Apr 2026 01:41:50 +0200
Received: from [130.76.144.163] (helo=clt-mbsout-02.mbs.boeing.net)
 by tlsNG-c201ff.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.1)
 (envelope-from <joan.bae@boeing.com>)
 id 69e80b3c-aaa8-0a2a45050019-824c90a3eddb-3
 for <xen-devel@lists.xenproject.org>; Wed, 22 Apr 2026 01:41:49 +0200
Received: from localhost (localhost [127.0.0.1])
 by clt-mbsout-02.mbs.boeing.net (8.15.2/8.15.2/DOWNSTREAM_MBSOUT) with SMTP id
 63LNfkaU022457; Tue, 21 Apr 2026 19:41:47 -0400
Received: from XCH16-09-08.nos.boeing.com (xch16-09-08.nos.boeing.com
 [144.115.66.156])
 by clt-mbsout-02.mbs.boeing.net (8.15.2/8.15.2/8.15.2/UPSTREAM_MBSOUT) with
 ESMTPS id 63LNfddd022411
 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NO);
 Tue, 21 Apr 2026 19:41:40 -0400
Received: from XCH19-03-07.nos.boeing.com (144.115.66.115) by
 XCH16-09-08.nos.boeing.com (144.115.66.156) with Microsoft SMTP Server
 (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id
 15.1.2507.58; Tue, 21 Apr 2026 16:41:39 -0700
Received: from XCH19-EDGE-C01.nos.boeing.com (130.76.144.197) by
 XCH19-03-07.nos.boeing.com (144.115.66.115) with Microsoft SMTP Server
 (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id
 15.2.2562.37 via Frontend Transport; Tue, 21 Apr 2026 16:41:39 -0700
Received: from USG02-BN3-obe.outbound.protection.office365.us (23.103.199.146)
 by boeing.com (130.76.144.197) with Microsoft SMTP Server
 (version=TLS1_2, 
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.1748.39; Tue, 21 Apr
 2026 16:41:37 -0700
Received: from SA1P110MB1614.NAMP110.PROD.OUTLOOK.COM (2001:489a:200:196::15)
 by BN0P110MB1530.NAMP110.PROD.OUTLOOK.COM (2001:489a:200:185::6) with
 Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9769.55; Tue, 21 Apr
 2026 23:41:37 +0000
Received: from SA1P110MB1614.NAMP110.PROD.OUTLOOK.COM
 ([fe80::452a:f17:6196:8976]) by SA1P110MB1614.NAMP110.PROD.OUTLOOK.COM
 ([fe80::452a:f17:6196:8976%4]) with mapi id 15.20.9769.053; Tue, 21 Apr 2026
 23:41: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=boeing-s1912 header.d=boeing.com header.i="@boeing.com" header.h="From:To:CC:Subject:Date:References:In-Reply-To"; dkim=pass header.s=selector1-boeing-onmicrosoft-com header.d=boeing.onmicrosoft.com header.i="@boeing.onmicrosoft.com" header.h="From:Date:Subject:Message-ID:Content-Type:MIME-Version:x-ms-exchange-senderadcheck"
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=boeing.com;
	s=boeing-s1912; t=1776814907;
	bh=RaE2bzzx7I0+KXwrYhGKyMgM6Gd7tv85z6P9lL1CL9E=;
	h=From:To:CC:Subject:Date:References:In-Reply-To:From;
	b=NVrgwd79wYYwNZnCuzr9VPvuaHyKQlL7oq8FWCMIKN33tWQAgLVeua+w92Zmw9cr5
	 hlPX3HAtYnSR35Cyot6IXVv038drSVkAbXFLekwd/F9JNvHNBERQyPfiAedixAvQ5e
	 w4r9iJbjfiLntn1cNobcgCbKS0wj/2po8OKyJuh8vvNZe3KHbNQVeiJAHlrJcjG0Wn
	 RcDN0hn7p83bFXEtgn/N43XrXpaj6Ppb87aWGOS+t2HmyHaiQyWbgYxfds1MGmr/yA
	 1ztHUs4OQ5RqYF3+Wv8J1knWOkkxu8y9Fp0uv3AR8bCnq0oT+7lmD6XVCEGA8NBQFP
	 gcuicCMeC7FRw==
ARC-Seal: i=1; a=rsa-sha256; s=arcselector5401; d=microsoft.com; cv=none;
 b=itBK2dSQd70qmbTY9Qb+ulVLRFOtxaWIEH3lwAKorZ2fjFuFX0aU4dZ0YVWBDw/Sdez89uFzuQMQF9y5WvZwWGHwt6RfqzXV1sPEsZFXy75+53WJCNBIDJniWCn0KL7HJ+HaWClKjxXvhcd3XYrF1EHOzsqm9kRJW8AZdfo4DewQj3OmNv9fxjJQmMom0FZ+GEgkYdcgpklUkrhmyBW9a3FUKj2aJb+Zu8ZrNqVOzgxZBc81qnKxB3gt1N5EQLW7YDROAMUcfcH2Zr/hTEMt0juwH2EnTWpf/rgzUrfog2VBLhI8dl/ac21dHynpptNfoMS34L0AFQ4cOjz3wxXdAg==
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com;
 s=arcselector5401;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1;
 bh=RaE2bzzx7I0+KXwrYhGKyMgM6Gd7tv85z6P9lL1CL9E=;
 b=KfL5opRJHcHVPJ+F4UPgoA1ZvsyOHKJgD5kxSFTu/mTGD+4S+P5q5QRYYPEd72DBJUJ+KQTPbHuM1AAMeCFrf6nh8M3q/OOQepDqonzMtdE2RlJ7ExwKrOH1MJSdIRLIaV3fcPZXZhCgIx/rGdlihfi0lX93K+O+9UJCowCjoOt6Prehvy6laDTDRORMgf5+7Mo5M81iupNN0j/U5moXW4S3F6BGeCPwId7ji778ylvOwholxqq+xoyL6l49CtSvfGRAlC3Cfm1LB0ne7ywHz7+Zvk2y0TXt1KIkElICLJqMpjdxuotmzuGfRTGtEzdD+3QUC4eAub3SlX9Dnd8vRA==
ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass
 smtp.mailfrom=boeing.com; dmarc=pass action=none header.from=boeing.com;
 dkim=pass header.d=boeing.com; arc=none
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
 d=boeing.onmicrosoft.com; s=selector1-boeing-onmicrosoft-com;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck;
 bh=RaE2bzzx7I0+KXwrYhGKyMgM6Gd7tv85z6P9lL1CL9E=;
 b=WVJ6kpRh3lxHBdnJn1pO8yjyb3e8crCkNLWc3V5cTp9NdBY7/gYizmX/tCy5cP2DhdjfB/T9NQ4kkijR7f+uH29ry96xECIUv9WugR0zKzB+ZLAOPB3/HqtXzU3CFxLPmBOvQ8NE9PhgiWIuik6R9FVH2wL9qqsFRN5rsrhs/Mo=
From: "Bae, Joan" <joan.bae@boeing.com>
To: Julien Grall <julien@xen.org>,
        "xen-devel@lists.xenproject.org"
	<xen-devel@lists.xenproject.org>
CC: Stefano Stabellini <sstabellini@kernel.org>,
        Bertrand Marquis
	<bertrand.marquis@arm.com>,
        Michal Orzel <michal.orzel@amd.com>
Subject: RE: [EXTERNAL] Re: [XEN PATCH] xen/common: validate shared memory
 guest address overlap with guest RAM
Thread-Topic: [EXTERNAL] Re: [XEN PATCH] xen/common: validate shared memory
 guest address overlap with guest RAM
Thread-Index: AQHcy6n8SUKFV8ls/kGsGA5q0Nlt0bXdycCAgAGZ18CACtTL4A==
Date: Tue, 21 Apr 2026 23:41:37 +0000
Message-ID: <SA1P110MB1614959CBF6F54BFB37ECD1AFF2CA@SA1P110MB1614.NAMP110.PROD.OUTLOOK.COM>
References: <59dcd094173791926fff212f3f2b86df50b0dc12.1776060772.git.joan.bae@boeing.com>
 <cfe8b6ae-2f52-47c4-862d-52d648d41895@xen.org>
 <SA1P110MB16142073986E51B11EF98CD9FF22A@SA1P110MB1614.NAMP110.PROD.OUTLOOK.COM>
In-Reply-To: <SA1P110MB16142073986E51B11EF98CD9FF22A@SA1P110MB1614.NAMP110.PROD.OUTLOOK.COM>
Accept-Language: en-US
Content-Language: en-US
X-MS-Has-Attach:
X-MS-TNEF-Correlator:
authentication-results: dkim=none (message not signed)
 header.d=none;dmarc=none action=none header.from=boeing.com;
x-ms-publictraffictype: Email
x-ms-traffictypediagnostic: SA1P110MB1614:EE_|BN0P110MB1530:EE_
x-ms-office365-filtering-correlation-id: 11a18b7a-4628-4642-9237-08de9fff8784
x-ms-exchange-senderadcheck: 1
x-microsoft-antispam: BCL:0;ARA:13230040|366016|1800799024|22082099003|18002099003|56012099003|38070700021;
x-microsoft-antispam-message-info: wqs4fRCoG1U/+ydBqI82P9mVuPrSUdTMQhlPKD5QqgmC2ceNwtyTcqaSFCTz6Ch9Xg7yjIGYebQmnAP22AZJVFy4SEDdZEksFyFYUuWquql2VBg9cxjhz+OZY+HqDvesI12vF6+Ubsc8H7F/OCfVyAWIK1cUorBmPeV5TC+TjRlXiR9KiwTkfJi6O+4bFR5tGleaU006maXq23waD4FLTKJM5+cEKFgDeo09073SDtk7v6y/SsUloEmLUY1xPbKflwj5Nji/AjjGlAF/3YZtHlkeNTKnRg4bYgGnuExz4bZcqmx0KVdCM9iEW2iPtPHQ2YSJTp6lbTVOOIck5N9zkK1bQ5FIVZgt8b0pwkB+Q6S/NtkYJo/OoGUNvoGBBjOWLDy539cOiynGYgppaSMp/MBQFbzWGKqhKDMDcpmtm8HRdilEinfLJTP3jZUThiEki9m7z95Y7NC+CKL1ueRIPvnl7KyA9XCs5EtIG1VTi4Fry27TbT61A3KyRgMIpT79vI++BbbIdYHWYgXuyiJUyohb8gB0C3wF+MOSV233DXaq7HGIf2VmazpnbVBBE0Ao1eecv5CIJIhZCadTUqPO/rJi6AyKM25RFWzLW73AMn7elArD3V7cZWHwKGvQgthq8sjpUcggkaPF9DTuTnE9vSmJdlkatte1POq5za9mZ00P9PyqSFCazhDa7FSsnn1+0813KMDMV0bdQfXp2kIa4xow/lqYmhAYepTxMtFykPCDJ6PI87VvriHTJRMC8+W4DBJcDDbsyA6Ek+Gs5EyQlp+yvOnKDkuJM4gQNlYpYpY=
x-forefront-antispam-report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:SA1P110MB1614.NAMP110.PROD.OUTLOOK.COM;PTR:;CAT:NONE;SFS:(13230040)(366016)(1800799024)(22082099003)(18002099003)(56012099003)(38070700021);DIR:OUT;SFP:1101;
x-ms-exchange-antispam-messagedata-chunkcount: 1
x-ms-exchange-antispam-messagedata-0: =?utf-8?B?dVRjL2Jwdk1iMW5Vbkp2RzJOYVdoWHlJZ1dQMHRxUUFEK1lsaU9uQjR6Q3JG?=
 =?utf-8?B?eUhKM09rUnRXaEMzOW94eldSWUk4YnEycmFNamU4b3FYaGpjZS83UEF3L3k4?=
 =?utf-8?B?ZnJ3UlZHZG1qdmV0N3NYSElJTGVjYzRBUTF6R0d5WmFuY1dHMjBrdXJZRGtH?=
 =?utf-8?B?UmdNMHJnN1ppamlQNW1VR0Q0R2M1ZGU1SVNhMk4zeHorSThmWERsUFVZOUR5?=
 =?utf-8?B?VWJpTkplc3V3a3VnTHpFWjFXUlZQVm1JSWxIRmpWb0dIRGcwQVN1S0I0STJ4?=
 =?utf-8?B?dy9HUmhqNEF3L3grUEp0OHJNSUw5amdGZlhDN1BvQlIycE1CRncyUnVnNmZl?=
 =?utf-8?B?ZDk2cDFCN2t1VFQzcldwTXRKOVBjOElSbkp2MVV5b2tUdExCNDBPZGo1RU9O?=
 =?utf-8?B?WjQwQnRaY0VQQ2h6cnVKYnEvUjdlSEoza2pLYWQrc1ZjUlhYVGI0emxkVExt?=
 =?utf-8?B?blk4d2lRM0V3UlhNQmZtRGZkK09uT0pHc2ZmYW9BbjQyYkM2NWYyelNKSmFJ?=
 =?utf-8?B?OW05cStIeWVreEROWnBoY1Izc3JLa2l6MDVZMTgycEVVZDlSbTd2WUN5TXdh?=
 =?utf-8?B?WG5KNmhNa1JIa3ZWKzBUKzJ3d0R4WUxncTMxSU52NXNsbnlqdkJBbGlKdWZ0?=
 =?utf-8?B?YVdZMHNiYUVlM1FXd3l0WXFReHNwaGYyLzB6dmduVlJNTnBudTNMMUZ1RGEw?=
 =?utf-8?B?bDdtWGJwUmVvMUJqa092dG9JUTRpMUxYa1FLZk11dE9aeFNBVzVFTE1xdTRq?=
 =?utf-8?B?b1NLYXhQdUlXTUVOdWZGcFo4Y2c3cy9Xbmg1aW9MVXh5NjFGVHBWdDZXUUdH?=
 =?utf-8?B?YzVFOUJOb2ppK0NjL0U0bGR4QW9rQVhsQ3N1QmRnZm5QUXlpN2dTSEZnTDE0?=
 =?utf-8?B?QVJtNEZjZWZvQk5aSTYzQlRIT1lHRk5IUSsyWkw4MXRLSDNVSjlqTzI2TWNl?=
 =?utf-8?B?Tm5oNDNScUxWT1hjQUJOTDlPZUJxWlJURWNkdlp2dUFpNU5kNnBrYkxIUlgy?=
 =?utf-8?B?QmxPQmhibzhqdDVzSGpzU04zaUlqWDNCSmJ3dk81ZmxHa2laSUZHT0krcGtD?=
 =?utf-8?B?MWJkR25ZeGpYNUszOERiazFsY2pqelVHYU5DYTI1c0MvRFBTNlhnaGhkMHl3?=
 =?utf-8?B?Nkh2ZEtRVVEzR2d1VXQ5MEVhNWcwSzlVNmpLc2MvbTJ3TVRRSFRzamQ4SllW?=
 =?utf-8?B?QjBmNnFkNGxPZC9ITHdmS0lWT0VTWi9RUXFZanNTQkI1Und2NUNCVnc0SEZK?=
 =?utf-8?B?Q1VxNHJ3UVVldTIzNTVSZHJBVVh1NVF5SXpLN2lhekUrNXpMakRDMzEzVjQ4?=
 =?utf-8?B?di9sT3dnTmtHb3NFTEtFNmo5SUU3RXhodlpnOFdFMVMzR3M0TFVnVHozRXpZ?=
 =?utf-8?B?dGlSWWs1SVJEL0NTNHVIM213NHNwdHRUNXB0Zm42WWtlUmNRMTlxaWtMVnZX?=
 =?utf-8?B?WkhtMXN6ZHkvNG8rTzU1cXRBTnA4dURnYk9BTVdzbkZLNUNuT1hEVWlObXdv?=
 =?utf-8?B?eURWWkFvRE9hRkZ5aENXY0xaL0VNSUVwNFpQVG5BaCtYcmFYRGQ0SmcrSFF0?=
 =?utf-8?B?R29sdDVQdXlFKzhSZENCYWVsazVoZWdqV0d6Rzg2dTZleUFKd1BZOUJOd2w0?=
 =?utf-8?B?MFluaWRCSkVSdDBUT2VJMENna3hLR1VUNEd0M1ppUllxWHdkcFR1QURmK1c5?=
 =?utf-8?B?M3RQRTBwKzJ1UDJ3bHliaDdZcnhRcnc2V1RuNUxqSEdXYlZTa3plWUlrYTNT?=
 =?utf-8?B?SUtoZTNtd2dJeC9seHNhSXFKc3R1c0VmUEdiVkNSOXVzUmhNZVE1KzQ5NThY?=
 =?utf-8?B?bm9vVEkvZzZGbkFVQktmblI0Q2pRL3hQa2NCcCs1eGpSdG5IVzY5TWlyS3Vz?=
 =?utf-8?B?N2o2RnBoWFZtSDhmWXY2eVdENDI2Uyt2UU5zVEd1di9IdWRSMkNKcTdySGNM?=
 =?utf-8?B?NEZiL2taSlVveXQ0djExRzltVm1zWDl4MXkrNVR1eFVJbWdVSmxKWUNhN0F3?=
 =?utf-8?B?MmowZWhzQ0c2WXUwTlFQT2JJbTFVY0JFVU5BbnJpbnJubUd3b2hzSmNxb3Nr?=
 =?utf-8?B?N0NXd003SHpnTk02Z0N6NURMc2pVRys2ZkYxQTRIR0lLTy9jNTFZb3JGQWV1?=
 =?utf-8?B?R2tTOWVEWUNLNEY5M0ttTHgzR0NtcmFIOENBcENKTVFWVlk2a2ZQMkFYQUo0?=
 =?utf-8?Q?9VajpzShim/FSS305BILUG6wIvfosUVV6b2bSuG7NRD9?=
Content-Type: text/plain; charset="utf-8"
Content-Transfer-Encoding: base64
MIME-Version: 1.0
X-MS-Exchange-CrossTenant-AuthAs: Internal
X-MS-Exchange-CrossTenant-AuthSource: SA1P110MB1614.NAMP110.PROD.OUTLOOK.COM
X-MS-Exchange-CrossTenant-Network-Message-Id: 11a18b7a-4628-4642-9237-08de9fff8784
X-MS-Exchange-CrossTenant-originalarrivaltime: 21 Apr 2026 23:41:37.1844
 (UTC)
X-MS-Exchange-CrossTenant-fromentityheader: Hosted
X-MS-Exchange-CrossTenant-id: bcf48bba-4d6f-4dee-a0d2-7df59cc36629
X-MS-Exchange-Transport-CrossTenantHeadersStamped: BN0P110MB1530
X-OriginatorOrg: boeing.com
X-TM-AS-GCONF: 00
X-purgate-ID: tlsNG-c201ff/1776814910-2AF6E443-58E5D11F/0/0
X-purgate-type: clean
X-purgate-size: 4028

SGkgSnVsaWVuLA0KDQo+IEhpIEp1bGllbiwNCj4gDQo+IFRoYW5rIHlvdSBmb3IgdGhlIHJldmll
dy4gSSBhZ3JlZSB0aGF0IHRoZSBvdmVybGFwIGlzc3VlIGlzIG5vdCBsaW1pdGVkIHRvIHNoYXJl
ZA0KPiBtZW1vcnkgb3ZlcmxhcHBpbmcgd2l0aCBSQU0uIEl0IGNvdWxkIGhhcHBlbiB3aXRoIGFu
eSBQMk0gbWFwcGluZw0KPiBkdXJpbmcgZG9tYWluIGNvbnN0cnVjdGlvbi4NCj4gDQo+IEkgcmVz
ZWFyY2hlZCB0aGUgY2FsbGVycyBvZiBwMm1fc2V0X2VudHJ5KCkuIEF0IGEgaGlnaGVyIGxldmVs
LA0KPiBwMm1faW5zZXJ0X21hcHBpbmcoKSBjYWxsZXJzIGNhbiBiZSBjYXRlZ29yaXplZCBpbnRv
IHR3byBncm91cHM6IHJ1bnRpbWUNCj4gaHlwZXJjYWxscyBhbmQgZG9tYWluIGNvbnN0cnVjdGlv
bi4NCj4gDQo+IFJ1bnRpbWUgaHlwZXJjYWxscyBzdWNoIGFzIFhFTk1FTV9wb3B1bGF0ZV9waHlz
bWFwIHJlbHkgb24gb3ZlcndyaXRpbmcNCj4gZXhpc3RpbmcgbWFwcGluZ3MsIHNvIHRoZXkgbXVz
dCBhbGxvdyBpdC4gT24gdGhlIG90aGVyIGhhbmQsIGRvbWFpbg0KPiBjb25zdHJ1Y3Rpb24gY2Fs
bGVycyBzdWNoIGFzIGd1ZXN0X3BoeXNtYXBfYWRkX3BhZ2VzKCkgc2hvdWxkIG5vdCBhbGxvdw0K
PiBvdmVyd3JpdGluZyBleGlzdGluZyBtYXBwaW5ncy4NCj4gDQo+IFNpbmNlIGJvdGggY2F0ZWdv
cmllcyBkZXBlbmQgb24gcDJtX3NldF9lbnRyeSgpLCBhZGRpbmcgYSBibGFua2V0IGNoZWNrDQo+
IHRoZXJlIHdvdWxkIGJyZWFrIHRoZSBydW50aW1lIGh5cGVyY2FsbCBwYXRocy4NCj4gDQo+IE15
IHBsYW4gZm9yIHYyIGlzIHRvIGFkZCBhIGNoZWNrZWQgdmFyaWFudCBvZiBwMm1faW5zZXJ0X21h
cHBpbmcoKSAobmFtZWQNCj4gYXMgcDJtX2luc2VydF9tYXBwaW5nX2NoZWNrZWQpIHRoYXQgdmVy
aWZpZXMgbm8gZXhpc3RpbmcgbWFwcGluZyBpcyBwcmVzZW50DQo+IGJlZm9yZSBpbnNlcnRpbmcu
IERvbWFpbiBidWlsZCBwYXRocyB3b3VsZCB1c2UgdGhlIGNoZWNrZWQgdmVyc2lvbiwgd2hpbGUN
Cj4gcnVudGltZSBoeXBlcmNhbGwgcGF0aHMgcmVtYWluIHVuY2hhbmdlZC4NCj4gDQo+IEkgYWxz
byBub3RpY2VkIGEgcmVsYXRlZCBUT0RPIGluIHAybS5oOg0KPiAvKiBUT0RPOiBBZGQgYSBjaGVj
ayBpbiBfX3AybV9zZXRfZW50cnkoKSB0byBhdm9pZCBjcmVhdGluZyBhIG1hcHBpbmcgaW4NCj4g
KiBhcmNoX2RvbWFpbl9jcmVhdGUoKSB0aGF0IHJlcXVpcmVzIHAybV9wdXRfbDNfcGFnZSgpIHRv
IGJlIGNhbGxlZC4gLw0KPiANCj4gVGhpcyBzZWVtcyB0byBiZSBhZGRyZXNzaW5nIGEgc2ltaWxh
ciBjb25jZXJuLiBXb3VsZCB0aGUgYXBwcm9hY2ggb2YgYQ0KPiBjaGVja2VkIHdyYXBwZXIgYXQg
dGhlIHAybV9pbnNlcnRfbWFwcGluZygpIGxldmVsIGJlIGFjY2VwdGFibGUsIG9yIHdvdWxkDQo+
IHlvdSBwcmVmZXIgdGhlIGNoZWNrIGF0IGEgZGlmZmVyZW50IGxldmVsPw0KPiANCj4gVGhhbmsg
eW91LA0KPiBKb2FuDQo+IA0KPj4gRVhUIGVtYWlsOiBiZSBtaW5kZnVsIG9mIGxpbmtzL2F0dGFj
aG1lbnRzLg0KPj4gDQo+PiBIaSBKb2FuLA0KPj4gDQo+PiBUaGFuayB5b3UgZm9yIHRoZSBwYXRj
aC4NCj4+IA0KPj4gT24gMTQvMDQvMjAyNiAwOTo1OSwgSm9hbiBCYWUgd3JvdGU6DQo+Pj4gQ3Vy
cmVudGx5LCBwcm9jZXNzX3NobSgpIGRvZXMgbm90IGNoZWNrIHdoZXRoZXIgdGhlIGd1ZXN0IHBo
eXNpY2FsDQo+Pj4gYWRkcmVzcyBvZiBhIHNoYXJlZCBtZW1vcnkgcmVnaW9uIG92ZXJsYXBzIHdp
dGggdGhlIGRvbWFpbidzDQo+Pj4gYWxsb2NhdGVkIFJBTSBiYW5rcy4gTmVpdGhlciBwcm9jZXNz
X3NobSgpIG5vciBwMm1fc2V0X2VudHJ5KCkgY2hlY2tzDQo+Pj4gZm9yIGV4aXN0aW5nIG1hcHBp
bmdzLCBzbyB0aGUgUkFNIG1hcHBpbmcgaXMgc2lsZW50bHkgb3ZlcndyaXR0ZW4gaWYNCj4+PiBh
IHVzZXIgc3BlY2lmaWVzIGEgZ3Vlc3QgcGh5c2ljYWwgYWRkcmVzcyB0aGF0IGZhbGxzIHdpdGhp
biB0aGUgZ3Vlc3QNCj4+PiBSQU0gcmFuZ2UuIFNpbmNlIGNvbnN0cnVjdF9kb21haW4oKSBsb2Fk
cyB0aGUga2VybmVsIGFmdGVyDQo+Pj4gcHJvY2Vzc19zaG0oKSwgdGhlIGtlcm5lbCBjYW4gZW5k
IHVwIGluIHNoYXJlZCBtZW1vcnkgcGFnZXMuIFRoaXMgY2FuDQo+Pj4gY2F1c2U6IC0gQW5vdGhl
ciBkb21haW4gY29ycnVwdGluZyB0aGUga2VybmVsIHZpYSBzaGFyZWQgbWVtb3J5IHdyaXRlDQo+
Pj4gLSBTaWxlbnQgZ3Vlc3QgY3Jhc2ggd2l0aCBubyBlcnJvciBtZXNzYWdlIGZyb20gWGVuDQo+
PiANCj4+IFRoaXMgc2VlbXMgdG8gYmUgc29sdmluZyBvbmUgc3BlY2lmaWMgaXNzdWUgKFJBTSBj
bGFzaGluZyB3aXRoIHNoYXJlZA0KPj4gbWVtb3J5KSBidXQgSSBiZWxpZXZlIHRoaXMgY291bGQg
YWxzbyBoYXBwZW4gd2l0aCBvdGhlciBraW5kIG9mDQo+PiBtYXBwaW5ncyBiZWNhdXNlLCBhcyB5
b3Ugc2FpZCwgcDJtX3NldF9lbnRyeSgpIGRvZXNuJ3QgY2hlY2sgYW55IG92ZXJsYXAuDQo+PiAN
Cj4+IFNvIEkgd291bGQgcmF0aGVyIHByZWZlciBpZiB3ZSBzb2x2ZSB0aGUgcHJvYmxlbSBvbmNl
IGFuZCBmb3IgYWxsLg0KPj4gVGhpcyB3b3VsZCBtZWFuIG1vZGlmeWluZyBwMm1fc2V0X2VudHJ5
KCkgKG9yIG9uZSBvZiBpdHMgdG9wIGNhbGxlcikuDQo+PiBBbHRob3VnaCwgd2Ugd291bGQgbmVl
ZCB0byBiZSBjYXJlZnVsIHRvIG5vdCBicmVhayBtZW1vcnkgaHlwZXJjYWxscw0KPj4gd2hpY2gg
bWF5IHJlbHkgb24gb3ZlcndyaXRpbmcgZXhpc3RpbmcgbWFwcGluZ3MuDQo+PiANCj4+IENoZWVy
cywNCj4+IA0KPiANCj4gVGhhbmtzLA0KPiBKb2FuIEJhZQ0KPg0KDQpHZW50bGUgcGluZyBvbiB0
aGlzIG9uZS4gUGxlYXNlIGxldCBtZSBrbm93IGlmIHRoZSBwcm9wb3NlZCBkaXJlY3Rpb24gbG9v
a3MgcmlnaHQuDQoNClRoYW5rcywNCkpvYW4gQmFlDQoNCg0K


From xen-devel-bounces@lists.xenproject.org Wed Apr 22 00:03:10 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 22 Apr 2026 00:03:10 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1289731.1569508 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wFL3X-0004jS-QS; Wed, 22 Apr 2026 00:03:03 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1289731.1569508; Wed, 22 Apr 2026 00:03: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 1wFL3X-0004jL-Mu; Wed, 22 Apr 2026 00:03:03 +0000
Received: by outflank-mailman (input) for mailman id 1289731;
 Wed, 22 Apr 2026 00:03:02 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <tamas@tklengyel.com>) id 1wFL3W-0004jF-An
 for xen-devel@lists.xenproject.org; Wed, 22 Apr 2026 00:03:02 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wFL3V-00G3UU-Nr
 for xen-devel@lists.xenproject.org; Wed, 22 Apr 2026 02:03:01 +0200
Received: from [10.42.69.7] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <tamas@tklengyel.com>)
 id 69e81033-e002-0a2a0a5209dd-0a2a4507bf9e-4
 for <xen-devel@lists.xenproject.org>; Wed, 22 Apr 2026 02:03:01 +0200
Received: from [136.143.188.12] (helo=sender4-op-o12.zoho.com)
 by tlsNG-ef75cf.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.1)
 (envelope-from <tamas@tklengyel.com>)
 id 69e81033-229c-0a2a45070019-888fbc0c433e-3
 for <xen-devel@lists.xenproject.org>; Wed, 22 Apr 2026 02:03:01 +0200
Received: by mx.zohomail.com with SMTPS id 1776816174730416.17740676882624;
 Tue, 21 Apr 2026 17:02:54 -0700 (PDT)
Received: by mail-oa1-f41.google.com with SMTP id
 586e51a60fabf-40974bf7781so4567563fac.0
 for <xen-devel@lists.xenproject.org>; Tue, 21 Apr 2026 17:02:54 -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=zmail header.d=tklengyel.com header.i="tamas@tklengyel.com" header.h="MIME-Version:References:In-Reply-To:From:Date:Message-ID:Subject:To:Cc:Content-Type"
ARC-Seal: i=1; a=rsa-sha256; t=1776816177; cv=none; 
	d=zohomail.com; s=zohoarc; 
	b=XYspWC+D5MzDrC+8xxyKTK8tuHjqyGEtSHIeqIbHWSZKgInkEeYQH6oNkIMvpJQOsGXoBSMtc67znWGkL5eSf+Rsj4YwvHzoUHF2fg+vBr/VL8YQb6WRFEz63FA24dD7zbmX/Rw92I6MXD/R8g5hWE0sVXZpK8JpNrdOBLetOYE=
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; 
	t=1776816177; h=Content-Type:Cc:Cc:Date:Date:From:From:In-Reply-To:MIME-Version:Message-ID:References:Subject:Subject:To:To:Message-Id:Reply-To; 
	bh=zd1lEyRoFzTLgQItSNg7tNN3pcIh4yEX3S7ffIydiQA=; 
	b=hRYDwffcaA+LuNSxSr4Lz1gvB38Iv03r6Vuzsqi1pzp3QfOh2yMm2vCerzLeuNO0iWotWZV1Ot9fu15IXPccmy/09Qxb7H14Rso/HEZui5FuQIllj0SMrIPwQRTjRYJ/GSweSCI9N9t/3H/jl6SW8UgdcorHBM43WyaRdnoKvCA=
ARC-Authentication-Results: i=1; mx.zohomail.com;
	dkim=pass  header.i=tklengyel.com;
	spf=pass  smtp.mailfrom=tamas@tklengyel.com;
	dmarc=pass header.from=<tamas@tklengyel.com>
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; t=1776816177;
	s=zmail; d=tklengyel.com; i=tamas@tklengyel.com;
	h=MIME-Version:References:In-Reply-To:From:From:Date:Date:Message-ID:Subject:Subject:To:To:Cc:Cc:Content-Type:Message-Id:Reply-To;
	bh=zd1lEyRoFzTLgQItSNg7tNN3pcIh4yEX3S7ffIydiQA=;
	b=TGAKTmlXQTmlDVWVPVPJykUgLf/ts6wjvLOiV5totqIfKLirECauU8X8Jy91m+59
	j2uIIGrYxBvcuyeBo9c3aNmTE/HcvBLTIx/8H5xw3Y+eMi0oaKGyT4z9uYGJRQB4Cw/
	vRBz1itX3YNgMo1/Y+xWuXrq9yclRytaueG3SbyY=
X-Gm-Message-State: AOJu0Yxfd83/eGrC53x9AZVhjPWCLWNtRxVEUgxDSjxMA3iqdkfhDqhh
	QG7TbyLYiiD3g5HUDW45QUEWJ+9Y+l5TxuYxMA2e2twcVPCySNIjd5kbzrgTUkKQogAH4ieH1qi
	HJukd83i8LM3KPlNjekTQFwUhoYnGqMk=
X-Received: by 2002:a05:6870:a793:b0:41c:9797:d1e6 with SMTP id
 586e51a60fabf-42a99ab682bmr9703095fac.14.1776816173961; Tue, 21 Apr 2026
 17:02:53 -0700 (PDT)
MIME-Version: 1.0
References: <20260420213206.208750-1-Rose.Spangler@elektrobit.com>
 <20260420213206.208750-9-Rose.Spangler@elektrobit.com> <CABfawh=trqX6Gx3udVpaYDiLRcG+99SHNmK4s9f5pjmNbCMM1A@mail.gmail.com>
 <CH3PR08MB8735846D3C525C40DE983AAC912C2@CH3PR08MB8735.namprd08.prod.outlook.com>
In-Reply-To: <CH3PR08MB8735846D3C525C40DE983AAC912C2@CH3PR08MB8735.namprd08.prod.outlook.com>
From: Tamas K Lengyel <tamas@tklengyel.com>
Date: Tue, 21 Apr 2026 20:02:17 -0400
X-Gmail-Original-Message-ID: <CABfawhkeMkzaJSPXxGqQ+m-7J1gozrKJaiR-99AWTQ6ZmsdaqA@mail.gmail.com>
X-Gm-Features: AQROBzDXqVm6cwC8bc6fH7GkxSh6NHqMx_eWB2LQdtm-V9_1G1YHiTFScZJ4JC0
Message-ID: <CABfawhkeMkzaJSPXxGqQ+m-7J1gozrKJaiR-99AWTQ6ZmsdaqA@mail.gmail.com>
Subject: Re: [RFC PATCH v6 08/43] altp2m: Rename p2m_*_altp2m functions and
 move declarations out of p2m.h
To: "Spangler, Rose" <Rose.Spangler@elektrobit.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>, 
	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.pau@citrix.com>, 
	Teddy Astie <teddy.astie@vates.tech>
Content-Type: multipart/alternative; boundary="000000000000e157ef065001400f"
X-purgate-ID: tlsNG-ef75cf/1776816181-ADF6EC48-A70332E5/0/0
X-purgate-type: clean
X-purgate-size: 2666

--000000000000e157ef065001400f
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: quoted-printable

On Tue, Apr 21, 2026 at 10:07=E2=80=AFAM Spangler, Rose <
Rose.Spangler@elektrobit.com> wrote:

> >The following function names could reasonably drop the _altp2m suffix:
> >
> >
> >> - p2m_get_altp2m -> altp2m_get_altp2m
> >> - p2m_set_altp2m -> altp2m_set_altp2m
> >> - p2m_reset_altp2m -> altp2m_reset_altp2m
> >> - p2m_activate_altp2m -> altp2m_activate_altp2m
>
> I used these names to try to differentiate between these functions, which
> operate on a single altp2m view, and the altp2m_init / altp2m_teardown /
> altp2m_flush functions, which operate on all the views of a domain. For
> example,
> without the suffix I don't think it's necessarily immediately obvious tha=
t
> "altp2m_activate" or "altp2m_reset" operate on only a single view.


How about you add the _view suffix for these? I think it would help
disambiguate them and also read better than the current _altp2m suffix ones=
.

Tamas

--000000000000e157ef065001400f
Content-Type: text/html; charset="UTF-8"
Content-Transfer-Encoding: quoted-printable

<div dir=3D"ltr"><div dir=3D"ltr"><br></div><br><div class=3D"gmail_quote g=
mail_quote_container"><div dir=3D"ltr" class=3D"gmail_attr">On Tue, Apr 21,=
 2026 at 10:07=E2=80=AFAM Spangler, Rose &lt;<a href=3D"mailto:Rose.Spangle=
r@elektrobit.com">Rose.Spangler@elektrobit.com</a>&gt; wrote:<br></div><blo=
ckquote class=3D"gmail_quote" style=3D"margin:0px 0px 0px 0.8ex;border-left=
:1px solid rgb(204,204,204);padding-left:1ex">&gt;The following function na=
mes could reasonably drop the _altp2m suffix:<br>
&gt;<br>
&gt;<br>
&gt;&gt; - p2m_get_altp2m -&gt; altp2m_get_altp2m<br>
&gt;&gt; - p2m_set_altp2m -&gt; altp2m_set_altp2m<br>
&gt;&gt; - p2m_reset_altp2m -&gt; altp2m_reset_altp2m<br>
&gt;&gt; - p2m_activate_altp2m -&gt; altp2m_activate_altp2m<br>
<br>
I used these names to try to differentiate between these functions, which<b=
r>
operate on a single altp2m view, and the altp2m_init / altp2m_teardown /<br=
>
altp2m_flush functions, which operate on all the views of a domain. For exa=
mple,<br>
without the suffix I don&#39;t think it&#39;s necessarily immediately obvio=
us that<br>
&quot;altp2m_activate&quot; or &quot;altp2m_reset&quot; operate on only a s=
ingle view.</blockquote><div><br></div><div>How about you add the _view suf=
fix for these? I think it would help disambiguate them and also read better=
 than the current _altp2m suffix ones.</div><div><br></div><div>Tamas=C2=A0=
</div></div></div>

--000000000000e157ef065001400f--


From xen-devel-bounces@lists.xenproject.org Wed Apr 22 01:27:38 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 22 Apr 2026 01:27:38 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1289804.1569516 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wFMN7-0007ur-Is; Wed, 22 Apr 2026 01:27:21 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1289804.1569516; Wed, 22 Apr 2026 01:27: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 1wFMN7-0007uj-FS; Wed, 22 Apr 2026 01:27:21 +0000
Received: by outflank-mailman (input) for mailman id 1289804;
 Wed, 22 Apr 2026 01:27:21 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <demiobenour@gmail.com>) id 1wFMN6-0007ud-OJ
 for xen-devel@lists.xenproject.org; Wed, 22 Apr 2026 01:27:21 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wFMN5-00ComD-Ei
 for xen-devel@lists.xenproject.org; Wed, 22 Apr 2026 03:27:19 +0200
Received: from [10.42.69.8] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <demiobenour@gmail.com>)
 id 69e823bf-e002-0a2a0a5209dd-0a2a4508df78-28
 for <xen-devel@lists.xenproject.org>; Wed, 22 Apr 2026 03:27:19 +0200
Received: from [74.125.224.43] (helo=mail-yx1-f43.google.com)
 by tlsNG-c1860d.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.1)
 (envelope-from <demiobenour@gmail.com>)
 id 69e823f6-63b5-0a2a45080019-4a7de02bc186-3
 for <xen-devel@lists.xenproject.org>; Wed, 22 Apr 2026 03:27:19 +0200
Received: by mail-yx1-f43.google.com with SMTP id
 956f58d0204a3-649278a69c5so3763717d50.3
 for <xen-devel@lists.xenproject.org>; Tue, 21 Apr 2026 18:27:18 -0700 (PDT)
Received: from [10.138.34.110]
 (h69-131-150-190.cncrtn.broadband.dynamic.tds.net. [69.131.150.190])
 by smtp.gmail.com with ESMTPSA id
 956f58d0204a3-65314b7d42bsm7570306d50.8.2026.04.21.18.27.15
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Tue, 21 Apr 2026 18:27:16 -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=20251104 header.d=gmail.com header.i="@gmail.com" header.h="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=gmail.com; s=20251104; t=1776821237; x=1777426037; darn=lists.xenproject.org;
        h=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;
        bh=m9fhkqi5RYYYf8jtou/uXhqtRGhljUy8t+WuNuRPkCY=;
        b=rzMfidDA15UmJCdjN0rcwBzZyjroHG4URCPfmnYrkQdsiRk1PPBYKuw0pb8y5E1XHO
         QtxSAGUPd4UD8MY1f4DLSntHfURnXy6+uUAEl6I7FukC7xO9zjAYarf3tLeatytccMI3
         bDrsaJPqe0foR8bN/XpnmYRAra1qjjd5MYqlNmZwdKB8NMqwjjS1K3TQlDLWiOq4DgKI
         5HljS1h3j6fXK+X0hDCWu/ingfc0unEJqr2OzzDZp5lFH8Z1UwniI0tLvelAXXEYytre
         wcfPeECUb9F3NgBNIp5FjoAIrlaXHjyj9IxL3H+UwpGIyd5ES2q33EjdxIW44G8M3wBN
         WUsA==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20251104; t=1776821237; x=1777426037;
        h=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;
        bh=m9fhkqi5RYYYf8jtou/uXhqtRGhljUy8t+WuNuRPkCY=;
        b=GcpsjNUQraIfaustIIZE5R8DLRRcntjZS6McumlA7rgmFDi8FIj+ujagdGK6IMznNg
         JzlUjURtOKNEi6rgPdTIYokSrqIft3NM1k3631SNtjIFwXUqrZcvcjhiTqFdqN2hpfYu
         Cz9sWHqs6o8u14opDHq9EHvQeG8mZl8zAnvbGp61UvGMA9KrrVGi+pOVW26Y5udFdMVb
         ot90p6BY2AhHe3nVo7SYoi7rjf/pOvK5rOOTJPUaLfaWdE1nw89peeun9rfdpxJ061VL
         laK/7hAri7P7xkwb++upon93oxfFH3xBRsvsPesODAJBq4nxef+iT1pdF7HWnEW/bKmV
         M6bg==
X-Forwarded-Encrypted: i=1; AFNElJ9g1+rjw6RcqHii+xmjIUdiGuGes7INWwm9+6Y+RmNckofR2JH+Z1aWY+tr8gIuUGJSRyEMM4x9qwc=@lists.xenproject.org
X-Gm-Message-State: AOJu0YzXlO/cinivFmMhlNNGY9AVs47dQ7F+Kv4v0bTb+KLZS6qkaPPy
	rVP4nZaZMd0Qqxrwqv7+vD7uzhKNQMPJuZ85C/pXcQEdVvygkH4+lmka
X-Gm-Gg: AeBDievlnzacmbFU0QvQWVPekRXO3wI59KVFKeJLEG7iv13eShXA+tCaqz/iVSmH+tD
	e1C39sletfdvDP/avmiAnznRNjh1IiEx0KEMbVwG6Zw+LswODUYK2IGIVZQ3smlhCJETjeiPXjo
	H7DWn7WywLOSF0AodQ2lkGWY9T+zqwHM9ruLw8cryYbuIIOKp/BIHWDXQA8rTU47GRoVONS99mj
	U5R9+KkUgwJbR12FHMiTfO8bMTjtq/U28xRldnyI3kJcNk0HXI3p5tRFWQarW4/rGl+aVgPI+vq
	6NoA0ppc7kB0hLOvd4xypxjxD17+szVxv1JaWyLnpo3jilENXj3mo2LI9hyzDwsr8cKnn52Iv6R
	dUlFNe8JoxyC22ugmZ629Zhr9sMdv4bC8jwCjZ2y4TQ9m3mL9JP58Etq/rLvMTmBdDYmDWVf8Gz
	2KHckB0fbBt92tY+ac1MVxMwMeDdBKOF0tpOVbYcMGd69ouiSYvodYk6UFsdVwwS3JFhf4fCEq6
	dPeyHl9diemFxNue8K5e7dl1JKhBvgGQxOndaOtO5jxCwFGmhbn
X-Received: by 2002:a05:690e:4844:b0:650:70da:bc25 with SMTP id 956f58d0204a3-65310b44cfbmr12505506d50.58.1776821237271;
        Tue, 21 Apr 2026 18:27:17 -0700 (PDT)
Message-ID: <d045e25d-0bc5-4056-b4a2-9eda73fb5be7@gmail.com>
Date: Tue, 21 Apr 2026 21:27:12 -0400
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: Pinned, non-revocable mappings of VRAM: will bad things happen?
To: Val Packett <val@invisiblethingslab.com>,
 =?UTF-8?Q?Christian_K=C3=B6nig?= <christian.koenig@amd.com>,
 dri-devel@lists.freedesktop.org,
 Xen developer discussion <xen-devel@lists.xenproject.org>,
 linux-media@vger.kernel.org
Cc: Suwit Semal <sumit.semwal@linaro.org>,
 "Pelloux-Prayer, Pierre-Eric" <Pierre-eric.Pelloux-prayer@amd.com>
References: <a06133f7-3093-4733-9786-bc46c1453e06@gmail.com>
 <b8d04414-18b5-40f7-9ea2-88b30ff5bea0@amd.com>
 <c7865b27-6bf1-4df1-9520-c9ef6b3ef368@gmail.com>
 <4751cf03-d3c1-4d5d-af8e-39ad7c8ffb84@amd.com>
 <7472bfcf-8c22-4ac7-b903-a883cdb8f1c6@gmail.com>
 <8fe8b78b-5294-4319-af92-a4fb00527417@amd.com>
 <8846bac5-77ff-4439-ac5c-c33cdb4a94e3@gmail.com>
 <964c3670-fad3-44ce-bd93-2057bca2dcb8@amd.com>
 <08ad2301-3163-4497-8869-fa4cea30b384@gmail.com>
 <e5c00f2c-0819-48b4-b66e-71b9a40a7235@amd.com>
 <686713fc-c762-4b1b-88b2-d486d4f38ac6@gmail.com>
 <de6777c1-1165-4ace-a5a7-3004aa9ea8c5@invisiblethingslab.com>
Content-Language: en-US
From: Demi Marie Obenour <demiobenour@gmail.com>
Autocrypt: addr=demiobenour@gmail.com; keydata=
 xsFNBFp+A0oBEADffj6anl9/BHhUSxGTICeVl2tob7hPDdhHNgPR4C8xlYt5q49yB+l2nipd
 aq+4Gk6FZfqC825TKl7eRpUjMriwle4r3R0ydSIGcy4M6eb0IcxmuPYfbWpr/si88QKgyGSV
 Z7GeNW1UnzTdhYHuFlk8dBSmB1fzhEYEk0RcJqg4AKoq6/3/UorR+FaSuVwT7rqzGrTlscnT
 DlPWgRzrQ3jssesI7sZLm82E3pJSgaUoCdCOlL7MMPCJwI8JpPlBedRpe9tfVyfu3euTPLPx
 wcV3L/cfWPGSL4PofBtB8NUU6QwYiQ9Hzx4xOyn67zW73/G0Q2vPPRst8LBDqlxLjbtx/WLR
 6h3nBc3eyuZ+q62HS1pJ5EvUT1vjyJ1ySrqtUXWQ4XlZyoEFUfpJxJoN0A9HCxmHGVckzTRl
 5FMWo8TCniHynNXsBtDQbabt7aNEOaAJdE7to0AH3T/Bvwzcp0ZJtBk0EM6YeMLtotUut7h2
 Bkg1b//r6bTBswMBXVJ5H44Qf0+eKeUg7whSC9qpYOzzrm7+0r9F5u3qF8ZTx55TJc2g656C
 9a1P1MYVysLvkLvS4H+crmxA/i08Tc1h+x9RRvqba4lSzZ6/Tmt60DPM5Sc4R0nSm9BBff0N
 m0bSNRS8InXdO1Aq3362QKX2NOwcL5YaStwODNyZUqF7izjK4QARAQABzTxEZW1pIE1hcmll
 IE9iZW5vdXIgKGxvdmVyIG9mIGNvZGluZykgPGRlbWlvYmVub3VyQGdtYWlsLmNvbT7CwXgE
 EwECACIFAlp+A0oCGwMGCwkIBwMCBhUIAgkKCwQWAgMBAh4BAheAAAoJELKItV//nCLBhr8Q
 AK/xrb4wyi71xII2hkFBpT59ObLN+32FQT7R3lbZRjVFjc6yMUjOb1H/hJVxx+yo5gsSj5LS
 9AwggioUSrcUKldfA/PKKai2mzTlUDxTcF3vKx6iMXKA6AqwAw4B57ZEJoMM6egm57TV19kz
 PMc879NV2nc6+elaKl+/kbVeD3qvBuEwsTe2Do3HAAdrfUG/j9erwIk6gha/Hp9yZlCnPTX+
 VK+xifQqt8RtMqS5R/S8z0msJMI/ajNU03kFjOpqrYziv6OZLJ5cuKb3bZU5aoaRQRDzkFIR
 6aqtFLTohTo20QywXwRa39uFaOT/0YMpNyel0kdOszFOykTEGI2u+kja35g9TkH90kkBTG+a
 EWttIht0Hy6YFmwjcAxisSakBuHnHuMSOiyRQLu43ej2+mDWgItLZ48Mu0C3IG1seeQDjEYP
 tqvyZ6bGkf2Vj+L6wLoLLIhRZxQOedqArIk/Sb2SzQYuxN44IDRt+3ZcDqsPppoKcxSyd1Ny
 2tpvjYJXlfKmOYLhTWs8nwlAlSHX/c/jz/ywwf7eSvGknToo1Y0VpRtoxMaKW1nvH0OeCSVJ
 itfRP7YbiRVc2aNqWPCSgtqHAuVraBRbAFLKh9d2rKFB3BmynTUpc1BQLJP8+D5oNyb8Ts4x
 Xd3iV/uD8JLGJfYZIR7oGWFLP4uZ3tkneDfYzsFNBFp+A0oBEAC9ynZI9LU+uJkMeEJeJyQ/
 8VFkCJQPQZEsIGzOTlPnwvVna0AS86n2Z+rK7R/usYs5iJCZ55/JISWd8xD57ue0eB47bcJv
 VqGlObI2DEG8TwaW0O0duRhDgzMEL4t1KdRAepIESBEA/iPpI4gfUbVEIEQuqdqQyO4GAe+M
 kD0Hy5JH/0qgFmbaSegNTdQg5iqYjRZ3ttiswalql1/iSyv1WYeC1OAs+2BLOAT2NEggSiVO
 txEfgewsQtCWi8H1SoirakIfo45Hz0tk/Ad9ZWh2PvOGt97Ka85o4TLJxgJJqGEnqcFUZnJJ
 riwoaRIS8N2C8/nEM53jb1sH0gYddMU3QxY7dYNLIUrRKQeNkF30dK7V6JRH7pleRlf+wQcN
 fRAIUrNlatj9TxwivQrKnC9aIFFHEy/0mAgtrQShcMRmMgVlRoOA5B8RTulRLCmkafvwuhs6
 dCxN0GNAORIVVFxjx9Vn7OqYPgwiofZ6SbEl0hgPyWBQvE85klFLZLoj7p+joDY1XNQztmfA
 rnJ9x+YV4igjWImINAZSlmEcYtd+xy3Li/8oeYDAqrsnrOjb+WvGhCykJk4urBog2LNtcyCj
 kTs7F+WeXGUo0NDhbd3Z6AyFfqeF7uJ3D5hlpX2nI9no/ugPrrTVoVZAgrrnNz0iZG2DVx46
 x913pVKHl5mlYQARAQABwsFfBBgBAgAJBQJafgNKAhsMAAoJELKItV//nCLBwNIP/AiIHE8b
 oIqReFQyaMzxq6lE4YZCZNj65B/nkDOvodSiwfwjjVVE2V3iEzxMHbgyTCGA67+Bo/d5aQGj
 gn0TPtsGzelyQHipaUzEyrsceUGWYoKXYyVWKEfyh0cDfnd9diAm3VeNqchtcMpoehETH8fr
 RHnJdBcjf112PzQSdKC6kqU0Q196c4Vp5HDOQfNiDnTf7gZSj0BraHOByy9LEDCLhQiCmr+2
 E0rW4tBtDAn2HkT9uf32ZGqJCn1O+2uVfFhGu6vPE5qkqrbSE8TG+03H8ecU2q50zgHWPdHM
 OBvy3EhzfAh2VmOSTcRK+tSUe/u3wdLRDPwv/DTzGI36Kgky9MsDC5gpIwNbOJP2G/q1wT1o
 Gkw4IXfWv2ufWiXqJ+k7HEi2N1sree7Dy9KBCqb+ca1vFhYPDJfhP75I/VnzHVssZ/rYZ9+5
 1yDoUABoNdJNSGUYl+Yh9Pw9pE3Kt4EFzUlFZWbE4xKL/NPno+z4J9aWemLLszcYz/u3XnbO
 vUSQHSrmfOzX3cV4yfmjM5lewgSstoxGyTx2M8enslgdXhPthZlDnTnOT+C+OTsh8+m5tos8
 HQjaPM01MKBiAqdPgksm1wu2DrrwUi6ChRVTUBcj6+/9IJ81H2P2gJk3Ls3AVIxIffLoY34E
 +MYSfkEjBz0E8CLOcAw7JIwAaeBT
In-Reply-To: <de6777c1-1165-4ace-a5a7-3004aa9ea8c5@invisiblethingslab.com>
Content-Type: multipart/signed; micalg=pgp-sha256;
 protocol="application/pgp-signature";
 boundary="------------SebHAdj8yxVfqcchjV0gaqoc"
X-purgate-ID: tlsNG-c1860d/1776821239-C2B74DB1-65C5C13E/0/0
X-purgate-type: clean
X-purgate-size: 21615

This is an OpenPGP/MIME signed message (RFC 4880 and 3156)
--------------SebHAdj8yxVfqcchjV0gaqoc
Content-Type: multipart/mixed; boundary="------------fCxYjExTx4afN7vZNGscsPeS";
 protected-headers="v1"
Message-ID: <d045e25d-0bc5-4056-b4a2-9eda73fb5be7@gmail.com>
Date: Tue, 21 Apr 2026 21:27:12 -0400
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: Pinned, non-revocable mappings of VRAM: will bad things happen?
To: Val Packett <val@invisiblethingslab.com>,
 =?UTF-8?Q?Christian_K=C3=B6nig?= <christian.koenig@amd.com>,
 dri-devel@lists.freedesktop.org,
 Xen developer discussion <xen-devel@lists.xenproject.org>,
 linux-media@vger.kernel.org
Cc: Suwit Semal <sumit.semwal@linaro.org>,
 "Pelloux-Prayer, Pierre-Eric" <Pierre-eric.Pelloux-prayer@amd.com>
References: <a06133f7-3093-4733-9786-bc46c1453e06@gmail.com>
 <b8d04414-18b5-40f7-9ea2-88b30ff5bea0@amd.com>
 <c7865b27-6bf1-4df1-9520-c9ef6b3ef368@gmail.com>
 <4751cf03-d3c1-4d5d-af8e-39ad7c8ffb84@amd.com>
 <7472bfcf-8c22-4ac7-b903-a883cdb8f1c6@gmail.com>
 <8fe8b78b-5294-4319-af92-a4fb00527417@amd.com>
 <8846bac5-77ff-4439-ac5c-c33cdb4a94e3@gmail.com>
 <964c3670-fad3-44ce-bd93-2057bca2dcb8@amd.com>
 <08ad2301-3163-4497-8869-fa4cea30b384@gmail.com>
 <e5c00f2c-0819-48b4-b66e-71b9a40a7235@amd.com>
 <686713fc-c762-4b1b-88b2-d486d4f38ac6@gmail.com>
 <de6777c1-1165-4ace-a5a7-3004aa9ea8c5@invisiblethingslab.com>
Content-Language: en-US
From: Demi Marie Obenour <demiobenour@gmail.com>
Autocrypt: addr=demiobenour@gmail.com; keydata=
 xsFNBFp+A0oBEADffj6anl9/BHhUSxGTICeVl2tob7hPDdhHNgPR4C8xlYt5q49yB+l2nipd
 aq+4Gk6FZfqC825TKl7eRpUjMriwle4r3R0ydSIGcy4M6eb0IcxmuPYfbWpr/si88QKgyGSV
 Z7GeNW1UnzTdhYHuFlk8dBSmB1fzhEYEk0RcJqg4AKoq6/3/UorR+FaSuVwT7rqzGrTlscnT
 DlPWgRzrQ3jssesI7sZLm82E3pJSgaUoCdCOlL7MMPCJwI8JpPlBedRpe9tfVyfu3euTPLPx
 wcV3L/cfWPGSL4PofBtB8NUU6QwYiQ9Hzx4xOyn67zW73/G0Q2vPPRst8LBDqlxLjbtx/WLR
 6h3nBc3eyuZ+q62HS1pJ5EvUT1vjyJ1ySrqtUXWQ4XlZyoEFUfpJxJoN0A9HCxmHGVckzTRl
 5FMWo8TCniHynNXsBtDQbabt7aNEOaAJdE7to0AH3T/Bvwzcp0ZJtBk0EM6YeMLtotUut7h2
 Bkg1b//r6bTBswMBXVJ5H44Qf0+eKeUg7whSC9qpYOzzrm7+0r9F5u3qF8ZTx55TJc2g656C
 9a1P1MYVysLvkLvS4H+crmxA/i08Tc1h+x9RRvqba4lSzZ6/Tmt60DPM5Sc4R0nSm9BBff0N
 m0bSNRS8InXdO1Aq3362QKX2NOwcL5YaStwODNyZUqF7izjK4QARAQABzTxEZW1pIE1hcmll
 IE9iZW5vdXIgKGxvdmVyIG9mIGNvZGluZykgPGRlbWlvYmVub3VyQGdtYWlsLmNvbT7CwXgE
 EwECACIFAlp+A0oCGwMGCwkIBwMCBhUIAgkKCwQWAgMBAh4BAheAAAoJELKItV//nCLBhr8Q
 AK/xrb4wyi71xII2hkFBpT59ObLN+32FQT7R3lbZRjVFjc6yMUjOb1H/hJVxx+yo5gsSj5LS
 9AwggioUSrcUKldfA/PKKai2mzTlUDxTcF3vKx6iMXKA6AqwAw4B57ZEJoMM6egm57TV19kz
 PMc879NV2nc6+elaKl+/kbVeD3qvBuEwsTe2Do3HAAdrfUG/j9erwIk6gha/Hp9yZlCnPTX+
 VK+xifQqt8RtMqS5R/S8z0msJMI/ajNU03kFjOpqrYziv6OZLJ5cuKb3bZU5aoaRQRDzkFIR
 6aqtFLTohTo20QywXwRa39uFaOT/0YMpNyel0kdOszFOykTEGI2u+kja35g9TkH90kkBTG+a
 EWttIht0Hy6YFmwjcAxisSakBuHnHuMSOiyRQLu43ej2+mDWgItLZ48Mu0C3IG1seeQDjEYP
 tqvyZ6bGkf2Vj+L6wLoLLIhRZxQOedqArIk/Sb2SzQYuxN44IDRt+3ZcDqsPppoKcxSyd1Ny
 2tpvjYJXlfKmOYLhTWs8nwlAlSHX/c/jz/ywwf7eSvGknToo1Y0VpRtoxMaKW1nvH0OeCSVJ
 itfRP7YbiRVc2aNqWPCSgtqHAuVraBRbAFLKh9d2rKFB3BmynTUpc1BQLJP8+D5oNyb8Ts4x
 Xd3iV/uD8JLGJfYZIR7oGWFLP4uZ3tkneDfYzsFNBFp+A0oBEAC9ynZI9LU+uJkMeEJeJyQ/
 8VFkCJQPQZEsIGzOTlPnwvVna0AS86n2Z+rK7R/usYs5iJCZ55/JISWd8xD57ue0eB47bcJv
 VqGlObI2DEG8TwaW0O0duRhDgzMEL4t1KdRAepIESBEA/iPpI4gfUbVEIEQuqdqQyO4GAe+M
 kD0Hy5JH/0qgFmbaSegNTdQg5iqYjRZ3ttiswalql1/iSyv1WYeC1OAs+2BLOAT2NEggSiVO
 txEfgewsQtCWi8H1SoirakIfo45Hz0tk/Ad9ZWh2PvOGt97Ka85o4TLJxgJJqGEnqcFUZnJJ
 riwoaRIS8N2C8/nEM53jb1sH0gYddMU3QxY7dYNLIUrRKQeNkF30dK7V6JRH7pleRlf+wQcN
 fRAIUrNlatj9TxwivQrKnC9aIFFHEy/0mAgtrQShcMRmMgVlRoOA5B8RTulRLCmkafvwuhs6
 dCxN0GNAORIVVFxjx9Vn7OqYPgwiofZ6SbEl0hgPyWBQvE85klFLZLoj7p+joDY1XNQztmfA
 rnJ9x+YV4igjWImINAZSlmEcYtd+xy3Li/8oeYDAqrsnrOjb+WvGhCykJk4urBog2LNtcyCj
 kTs7F+WeXGUo0NDhbd3Z6AyFfqeF7uJ3D5hlpX2nI9no/ugPrrTVoVZAgrrnNz0iZG2DVx46
 x913pVKHl5mlYQARAQABwsFfBBgBAgAJBQJafgNKAhsMAAoJELKItV//nCLBwNIP/AiIHE8b
 oIqReFQyaMzxq6lE4YZCZNj65B/nkDOvodSiwfwjjVVE2V3iEzxMHbgyTCGA67+Bo/d5aQGj
 gn0TPtsGzelyQHipaUzEyrsceUGWYoKXYyVWKEfyh0cDfnd9diAm3VeNqchtcMpoehETH8fr
 RHnJdBcjf112PzQSdKC6kqU0Q196c4Vp5HDOQfNiDnTf7gZSj0BraHOByy9LEDCLhQiCmr+2
 E0rW4tBtDAn2HkT9uf32ZGqJCn1O+2uVfFhGu6vPE5qkqrbSE8TG+03H8ecU2q50zgHWPdHM
 OBvy3EhzfAh2VmOSTcRK+tSUe/u3wdLRDPwv/DTzGI36Kgky9MsDC5gpIwNbOJP2G/q1wT1o
 Gkw4IXfWv2ufWiXqJ+k7HEi2N1sree7Dy9KBCqb+ca1vFhYPDJfhP75I/VnzHVssZ/rYZ9+5
 1yDoUABoNdJNSGUYl+Yh9Pw9pE3Kt4EFzUlFZWbE4xKL/NPno+z4J9aWemLLszcYz/u3XnbO
 vUSQHSrmfOzX3cV4yfmjM5lewgSstoxGyTx2M8enslgdXhPthZlDnTnOT+C+OTsh8+m5tos8
 HQjaPM01MKBiAqdPgksm1wu2DrrwUi6ChRVTUBcj6+/9IJ81H2P2gJk3Ls3AVIxIffLoY34E
 +MYSfkEjBz0E8CLOcAw7JIwAaeBT
In-Reply-To: <de6777c1-1165-4ace-a5a7-3004aa9ea8c5@invisiblethingslab.com>

--------------fCxYjExTx4afN7vZNGscsPeS
Content-Type: multipart/mixed; boundary="------------q9AC06bCVyaPOibqDCDhtYPK"

--------------q9AC06bCVyaPOibqDCDhtYPK
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: quoted-printable

On 4/21/26 12:55, Val Packett wrote:
>=20
> On 4/20/26 4:12 PM, Demi Marie Obenour wrote:
>> On 4/20/26 14:53, Christian K=C3=B6nig wrote:
>>> On 4/20/26 20:46, Demi Marie Obenour wrote:
>>>> On 4/20/26 13:58, Christian K=C3=B6nig wrote:
>>>>> On 4/20/26 19:03, Demi Marie Obenour wrote:
>>>>>> On 4/20/26 04:49, Christian K=C3=B6nig wrote:
>>>>>>> On 4/17/26 21:35, Demi Marie Obenour wrote:
>>>>> ...
>>>>>>>> Are any of the following reasonable options?
>>>>>>>>
>>>>>>>> 1. Change the guest kernel to only map (and thus pin) a small su=
bset
>>>>>>>>     of VRAM at any given time.  If unmapped VRAM is accessed the=
 guest
>>>>>>>>     traps the page fault, evicts an old VRAM mapping, and create=
s a
>>>>>>>>     new one.
>>>>>>> Yeah, that could potentially work.
>>>>>>>
>>>>>>> This is basically what we do on the host kernel driver when we ca=
n't resize the BAR for some reason. In that use case VRAM buffers are shu=
ffled in and out of the CPU accessible window of VRAM on demand.
>>>>>> How much is this going to hurt performance?
>>>>> Hard to say, resizing the BAR can easily give you 10-15% more perfo=
rmance on some use cases.
>>>>>
>>>>> But that involves physically transferring the data using a DMA. For=
 this solution we basically only have to we basically only have to transf=
er a few messages between host and guest.
>>>>>
>>>>> No idea how performant that is.
>>>> In this use-case, 20-30% performance penalties are likely to be
>>>> "business as usual".
>>> Well that is quite a bit.
>>>
>>>> Close to native performance would be ideal, but
>>>> to be useful it just needs to beat software rendering by a wide marg=
in,
>>>> and not cause data corruption or vulnerabilities.
>>> That should still easily be the case, even trivial use cases are mult=
iple magnitudes faster on GPUs compared to software rendering.
>> Makes sense.  If only GPUs supported easy and flexible virtualization =
the way CPUs do :(.
>>
>>>>>>> But I have one question: When XEN has a problem handling faults f=
rom the guest on the host then how does that work for system memory mappi=
ngs?
>>>>>>>
>>>>>>> There is really no difference between VRAM and system memory in t=
he handling for the GPU driver stack.
>>>>>>>
>>>>>>> Regards,
>>>>>>> Christian.
>>>>>> Generally, Xen makes the frontend (usually an unprivileged VM)
>>>>>> responsible for providing mappings to the backend (usually the hos=
t).
>>>>>> That is possible with system RAM but not with VRAM, because Xen ha=
s
>>>>>> no awareness of VRAM.  To Xen, VRAM is just a PCI BAR.
>>>>> No, that doesn't work with system memory allocations of GPU drivers=
 either.
>>>>>
>>>>> We already had it multiple times that people tried to be clever and=
 incremented the page reference counter on driver allocated system memory=
 and were totally surprised that this can result in security issues and d=
ata corruption.
>>>>>
>>>>> I seriously hope that this isn't the case here again. As far as I k=
now XEN already has support for accessing VMAs with VM_PFN or otherwise I=
 don't know how driver allocated system memory access could potentially w=
ork.
>>>>>
>>>>> Accessing VRAM is pretty much the same use case as far as I can see=
=2E
>>>>>
>>>>> Regards,
>>>>> Christian.
>>>> The Xen-native approach would be for system memory allocations to
>>>> be made using the Xen driver and then imported into the virtio-GPU
>>>> driver via dmabuf.  Is there any chance this could be made to happen=
?
>>> That could be. Adding Pierre-Eric to comment since he knows that use =
much better than I do.
>>>
>>>> If it's a lost cause, then how much is the memory overhead of pinnin=
g
>>>> everything ever used in a dmabuf?  It should be possible to account
>>>> pinned host memory against a guest's quota, but if that leads to an
>>>> unusable system it isn't going to be good.
>>> That won't work at all.
>>>
>>> We have use cases where you *must* migrate a DMA-buf to VRAM or other=
wise the GPU can't use it.
>>>
>>> A simple scanout to a monitor is such an use case for example, that i=
s usually not possible from system memory.
>> Direct scanout isn't a concern here.
>>
>>>> Is supporting page faults in Xen the only solution that will be viab=
le
>>>> long-term, considering the tolerance for very substantial performanc=
e
>>>> overheads compared to native?  AAA gaming isn't the initial goal her=
e.
>>>> Qubes OS already supports PCI passthrough for that.
>>> We have AAA gaming working on XEN through native context working for =
quite a while.
>>>
>>> Pierre-Eric can tell you more about that.
>>>
>>> Regards,
>>> Christian.
>> I've heard of that, but last I checked it required downstream patches
>> to Xen, Linux, and QEMU.  I don't know if any of those have been
>> upstreamed since, but I believe that upstreaming the Xen and Linux
>> patches (or rewriting them and upstreaming the rewritten version) woul=
d
>> be necessary.  Qubes OS (which I don't work for anymore but still want=

>> to help with this) almost certainly won't be using QEMU for GPU stuff.=

>=20
> Yeah, our plan is to use xen-vhost-frontend[1] + vhost-device-gpu,=20
> ported/extended/modified as necessary. (I already have=20
> xen-vhost-frontend itself working on amd64 PVH with purely xenbus-based=
=20
> hotplug/configuration, currently working on cleaning up and submitting =

> the necessary patches.)
>=20
> I'm curious to hear more details about how AMD has it working but last =

> time I checked, there weren't any missing pieces in Xen or Linux that=20
> we'd need.. The AMD downstream changes were mostly related to QEMU.
>=20
> As for the memory management concerns, I would like to remind everyone =

> once again that the pinning of GPU dmabufs in regular graphics workload=
s=20
> would be *very* short-term. In GPU paravirtualization (native contexts =

> or venus or whatever else) the guest mostly operates on *opaque handles=
*=20
> that refer to buffers owned by the host GPU process. The typical=20
> rendering process (roughly) only involves submitting commands to the GP=
U=20
> that refer to memory using these handles. Only upon mmap() would a=20
> buffer be pinned/granted to the guest, and those are typically only use=
d=20
> for *uploads* where the guest immediately does its memcpy() and unmaps =

> the buffer.
>=20
> So I'm not worried about (unintentionally) pinning too much GPU driver =

> memory.
>=20
> In terms of deliberate denial-of-service attacks from the guest to the =

> host, the only reasonable response is:
>=20
> =C2=AF\_(=E3=83=84)_/=C2=AF
>=20
> CPU-mapping lots of GPU memory is far from the only DoS vector, the GPU=
=20
> commands themselves can easily wedge the GPU core in a million ways (an=
d=20
> last time I checked amdgpu was noooot so good at recovering from hangs)=
=2E
>=20
>=20
> [1]: https://github.com/vireshk/xen-vhost-frontend
>=20
> ~val

I think it is best to handle things like GPU crashes by giving the guest
some time to unmap its grants, and if that fails, crashing it.  This shou=
ld
be done from a revoke callback, as afterwards the VRAM might get reused.

Does amdgpu call revoke callbacks when the device is reset and VRAM
is lost?  It seems like it at least ought to.

As an aside, Qubes needs to use the process isolation mode of the
amdgpu driver.  This means that only one process will be on the GPU
at a time, so it _should_ be possible to blow away all GPU-resident
state except VRAM without affecting other processes.  Unfortunately,
I think AMD GPUs might have HW or FW limitations that prevent that,
at least on dGPUs.

It might make sense to recommend KDE with GPU acceleration.  KWin can
recover from losing VRAM.
--=20
Sincerely,
Demi Marie Obenour (she/her/hers)
--------------q9AC06bCVyaPOibqDCDhtYPK
Content-Type: application/pgp-keys; name="OpenPGP_0xB288B55FFF9C22C1.asc"
Content-Disposition: attachment; filename="OpenPGP_0xB288B55FFF9C22C1.asc"
Content-Description: OpenPGP public key
Content-Transfer-Encoding: quoted-printable

-----BEGIN PGP PUBLIC KEY BLOCK-----

xsFNBFp+A0oBEADffj6anl9/BHhUSxGTICeVl2tob7hPDdhHNgPR4C8xlYt5q49y
B+l2nipdaq+4Gk6FZfqC825TKl7eRpUjMriwle4r3R0ydSIGcy4M6eb0IcxmuPYf
bWpr/si88QKgyGSVZ7GeNW1UnzTdhYHuFlk8dBSmB1fzhEYEk0RcJqg4AKoq6/3/
UorR+FaSuVwT7rqzGrTlscnTDlPWgRzrQ3jssesI7sZLm82E3pJSgaUoCdCOlL7M
MPCJwI8JpPlBedRpe9tfVyfu3euTPLPxwcV3L/cfWPGSL4PofBtB8NUU6QwYiQ9H
zx4xOyn67zW73/G0Q2vPPRst8LBDqlxLjbtx/WLR6h3nBc3eyuZ+q62HS1pJ5EvU
T1vjyJ1ySrqtUXWQ4XlZyoEFUfpJxJoN0A9HCxmHGVckzTRl5FMWo8TCniHynNXs
BtDQbabt7aNEOaAJdE7to0AH3T/Bvwzcp0ZJtBk0EM6YeMLtotUut7h2Bkg1b//r
6bTBswMBXVJ5H44Qf0+eKeUg7whSC9qpYOzzrm7+0r9F5u3qF8ZTx55TJc2g656C
9a1P1MYVysLvkLvS4H+crmxA/i08Tc1h+x9RRvqba4lSzZ6/Tmt60DPM5Sc4R0nS
m9BBff0Nm0bSNRS8InXdO1Aq3362QKX2NOwcL5YaStwODNyZUqF7izjK4QARAQAB
zTxEZW1pIE9iZW5vdXIgKElUTCBFbWFpbCBLZXkpIDxhdGhlbmFAaW52aXNpYmxl
dGhpbmdzbGFiLmNvbT7CwY4EEwEIADgWIQR2h02fEza6IlkHHHGyiLVf/5wiwQUC
X6YJvQIbAwULCQgHAgYVCgkICwIEFgIDAQIeAQIXgAAKCRCyiLVf/5wiwWRhD/0Y
R+YYC5Kduv/2LBgQJIygMsFiRHbR4+tWXuTFqgrxxFSlMktZ6gQrQCWe38WnOXkB
oY6n/5lSJdfnuGd2UagZ/9dkaGMUkqt+5WshLFly4BnP7pSsWReKgMP7etRTwn3S
zk1OwFx2lzY1EnnconPLfPBc6rWG2moA6l0WX+3WNR1B1ndqpl2hPSjT2jUCBWDV
rGOUSX7r5f1WgtBeNYnEXPBCUUM51pFGESmfHIXQrqFDA7nBNiIVFDJTmQzuEqIy
Jl67pKNgooij5mKzRhFKHfjLRAH4mmWZlB9UjDStAfFBAoDFHwd1HL5VQCNQdqEc
/9lZDApqWuCPadZN+pGouqLysesIYsNxUhJ7dtWOWHl0vs7/3qkWmWun/2uOJMQh
ra2u8nA9g91FbOobWqjrDd6x3ZJoGQf4zLqjmn/P514gb697788e573WN/MpQ5XI
Fl7aM2d6/GJiq6LC9T2gSUW4rbPBiqOCeiUx7Kd/sVm41p9TOA7fEG4bYddCfDsN
xaQJH6VRK3NOuBUGeL+iQEVF5Xs6Yp+U+jwvv2M5Lel3EqAYo5xXTx4ls0xaxDCu
fudcAh8CMMqx3fguSb7Mi31WlnZpk0fDuWQVNKyDP7lYpwc4nCCGNKCj622ZSocH
AcQmX28L8pJdLYacv9pU3jPy4fHcQYvmTavTqowGnM08RGVtaSBNYXJpZSBPYmVu
b3VyIChsb3ZlciBvZiBjb2RpbmcpIDxkZW1pb2Jlbm91ckBnbWFpbC5jb20+wsF4
BBMBAgAiBQJafgNKAhsDBgsJCAcDAgYVCAIJCgsEFgIDAQIeAQIXgAAKCRCyiLVf
/5wiwYa/EACv8a2+MMou9cSCNoZBQaU+fTmyzft9hUE+0d5W2UY1RY3OsjFIzm9R
/4SVccfsqOYLEo+S0vQMIIIqFEq3FCpXXwPzyimotps05VA8U3Bd7yseojFygOgK
sAMOAee2RCaDDOnoJue01dfZMzzHPO/TVdp3OvnpWipfv5G1Xg96rwbhMLE3tg6N
xwAHa31Bv4/Xq8CJOoIWvx6fcmZQpz01/lSvsYn0KrfEbTKkuUf0vM9JrCTCP2oz
VNN5BYzqaq2M4r+jmSyeXLim922VOWqGkUEQ85BSEemqrRS06IU6NtEMsF8EWt/b
hWjk/9GDKTcnpdJHTrMxTspExBiNrvpI2t+YPU5B/dJJAUxvmhFrbSIbdB8umBZs
I3AMYrEmpAbh5x7jEjoskUC7uN3o9vpg1oCLS2ePDLtAtyBtbHnkA4xGD7ar8mem
xpH9lY/i+sC6CyyIUWcUDnnagKyJP0m9ks0GLsTeOCA0bft2XA6rD6aaCnMUsndT
ctrab42CV5XypjmC4U1rPJ8JQJUh1/3P48/8sMH+3krxpJ06KNWNFaUbaMTGiltZ
7x9DngklSYrX0T+2G4kVXNmjaljwkoLahwLla2gUWwBSyofXdqyhQdwZsp01KXNQ
UCyT/Pg+aDcm/E7OMV3d4lf7g/CSxiX2GSEe6BlhSz+Lmd7ZJ3g32M1ARGVtaSBN
YXJpZSBPYmVub3VyIChJVEwgRW1haWwgS2V5KSA8ZGVtaUBpbnZpc2libGV0aGlu
Z3NsYWIuY29tPsLBjgQTAQgAOBYhBHaHTZ8TNroiWQcccbKItV//nCLBBQJgOEV+
AhsDBQsJCAcCBhUKCQgLAgQWAgMBAh4BAheAAAoJELKItV//nCLBKwoP/1WSnFdv
SAD0g7fD0WlF+oi7ISFT7oqJnchFLOwVHK4Jg0e4hGn1ekWsF3Ha5tFLh4V/7UUu
obYJpTfBAA2CckspYBqLtKGjFxcaqjjpO1I2W/jeNELVtSYuCOZICjdNGw2Hl9yH
KRZiBkqc9u8lQcHDZKq4LIpVJj6ZQV/nxttDX90ax2No1nLLQXFbr5wb465LAPpU
lXwunYDij7xJGye+VUASQh9datye6orZYuJvNo8Tr3mAQxxkfR46LzWgxFCPEAZJ
5P56Nc0IMHdJZj0Uc9+1jxERhOGppp5jlLgYGK7faGB/jTV6LaRQ4Ad+xiqokDWp
mUOZsmA+bMbtPfYjDZBz5mlyHcIRKIFpE1l3Y8F7PhJuzzMUKkJi90CYakCV4x/a
Zs4pzk5E96c2VQx01RIEJ7fzHF7lwFdtfTS4YsLtAbQFsKayqwkGcVv2B1AHeqdo
TMX+cgDvjd1ZganGlWA8Sv9RkNSMchn1hMuTwERTyFTr2dKPnQdA1F480+jUap41
ClXgn227WkCIMrNhQGNyJsnwyzi5wS8rBVRQ3BOTMyvGM07j3axUOYaejEpg7wKi
wTPZGLGH1sz5GljD/916v5+v2xLbOo5606j9dWf5/tAhbPuqrQgWv41wuKDi+dDD
EKkODF7DHes8No+QcHTDyETMn1RYm7t0RKR4zsFNBFp+A0oBEAC9ynZI9LU+uJkM
eEJeJyQ/8VFkCJQPQZEsIGzOTlPnwvVna0AS86n2Z+rK7R/usYs5iJCZ55/JISWd
8xD57ue0eB47bcJvVqGlObI2DEG8TwaW0O0duRhDgzMEL4t1KdRAepIESBEA/iPp
I4gfUbVEIEQuqdqQyO4GAe+MkD0Hy5JH/0qgFmbaSegNTdQg5iqYjRZ3ttiswalq
l1/iSyv1WYeC1OAs+2BLOAT2NEggSiVOtxEfgewsQtCWi8H1SoirakIfo45Hz0tk
/Ad9ZWh2PvOGt97Ka85o4TLJxgJJqGEnqcFUZnJJriwoaRIS8N2C8/nEM53jb1sH
0gYddMU3QxY7dYNLIUrRKQeNkF30dK7V6JRH7pleRlf+wQcNfRAIUrNlatj9Txwi
vQrKnC9aIFFHEy/0mAgtrQShcMRmMgVlRoOA5B8RTulRLCmkafvwuhs6dCxN0GNA
ORIVVFxjx9Vn7OqYPgwiofZ6SbEl0hgPyWBQvE85klFLZLoj7p+joDY1XNQztmfA
rnJ9x+YV4igjWImINAZSlmEcYtd+xy3Li/8oeYDAqrsnrOjb+WvGhCykJk4urBog
2LNtcyCjkTs7F+WeXGUo0NDhbd3Z6AyFfqeF7uJ3D5hlpX2nI9no/ugPrrTVoVZA
grrnNz0iZG2DVx46x913pVKHl5mlYQARAQABwsFfBBgBAgAJBQJafgNKAhsMAAoJ
ELKItV//nCLBwNIP/AiIHE8boIqReFQyaMzxq6lE4YZCZNj65B/nkDOvodSiwfwj
jVVE2V3iEzxMHbgyTCGA67+Bo/d5aQGjgn0TPtsGzelyQHipaUzEyrsceUGWYoKX
YyVWKEfyh0cDfnd9diAm3VeNqchtcMpoehETH8frRHnJdBcjf112PzQSdKC6kqU0
Q196c4Vp5HDOQfNiDnTf7gZSj0BraHOByy9LEDCLhQiCmr+2E0rW4tBtDAn2HkT9
uf32ZGqJCn1O+2uVfFhGu6vPE5qkqrbSE8TG+03H8ecU2q50zgHWPdHMOBvy3Ehz
fAh2VmOSTcRK+tSUe/u3wdLRDPwv/DTzGI36Kgky9MsDC5gpIwNbOJP2G/q1wT1o
Gkw4IXfWv2ufWiXqJ+k7HEi2N1sree7Dy9KBCqb+ca1vFhYPDJfhP75I/VnzHVss
Z/rYZ9+51yDoUABoNdJNSGUYl+Yh9Pw9pE3Kt4EFzUlFZWbE4xKL/NPno+z4J9aW
emLLszcYz/u3XnbOvUSQHSrmfOzX3cV4yfmjM5lewgSstoxGyTx2M8enslgdXhPt
hZlDnTnOT+C+OTsh8+m5tos8HQjaPM01MKBiAqdPgksm1wu2DrrwUi6ChRVTUBcj
6+/9IJ81H2P2gJk3Ls3AVIxIffLoY34E+MYSfkEjBz0E8CLOcAw7JIwAaeBTzsFN
BGbyLVgBEACqClxh50hmBepTSVlan6EBq3OAoxhrAhWZYEwN78k+ENhK68KhqC5R
IsHzlL7QHW1gmfVBQZ63GnWiraM6wOJqFTL4ZWvRslga9u28FJ5XyK860mZLgYhK
9BzoUk4s+dat9jVUbq6LpQ1Ot5I9vrdzo2p1jtQ8h9WCIiFxSYy8s8pZ3hHh5T64
GIj1m/kY7lG3VIdUgoNiREGf/iOMjUFjwwE9ZoJ26j9p7p1U+TkKeF6wgswEB1T3
J8KCAtvmRtqJDq558IU5jhg5fgN+xHB8cgvUWulgK9FIF9oFxcuxtaf/juhHWKMO
RtL0bHfNdXoBdpUDZE+mLBUAxF6KSsRrvx6AQyJs7VjgXJDtQVWvH0PUmTrEswgb
49nNU+dLLZQAZagxqnZ9Dp5l6GqaGZCHERJcLmdY/EmMzSf5YazJ6c0vO8rdW27M
kn73qcWAplQn5mOXaqbfzWkAUPyUXppuRHfrjxTDz3GyJJVOeMmMrTxH4uCaGpOX
Z8tN6829J1roGw4oKDRUQsaBAeEDqizXMPRc+6U9vI5FXzbAsb+8lKW65G7JWHym
YPOGUt2hK4DdTA1PmVo0DxH00eWWeKxqvmGyX+Dhcg+5e191rPsMRGsDlH6KihI6
+3JIuc0y6ngdjcp6aalbuvPIGFrCRx3tnRtNc7He6cBWQoH9RPwluwARAQABwsOs
BBgBCgAgFiEEdodNnxM2uiJZBxxxsoi1X/+cIsEFAmbyLVgCGwICQAkQsoi1X/+c
IsHBdCAEGQEKAB0WIQSilC2pUlbVp66j3+yzNoc6synyUwUCZvItWAAKCRCzNoc6
synyU85gD/0T1QDtPhovkGwoqv4jUbEMMvpeYQf+oWgm/TjWPeLwdjl7AtY0G9Ml
ZoyGniYkoHi37Gnn/ShLT3B5vtyI58ap2+SSa8SnGftdAKRLiWFWCiAEklm9FRk8
N3hwxhmSFF1KR/AIDS4g+HIsZn7YEMubBSgLlZZ9zHl4O4vwuXlREBEW97iL/FSt
VownU2V39t7PtFvGZNk+DJH7eLO3jmNRYB0PL4JOyyda3NH/J92iwrFmjFWWmmWb
/Xz8l9DIs+Z59pRCVTTwbBEZhcUc7rVMCcIYL+q1WxBG2e6lMn15OQJ5WfiE6E0I
sGirAEDnXWx92JNGx5l+mMpdpsWhBZ5iGTtttZesibNkQfd48/eCgFi4cxJUC4PT
UQwfD9AMgzwSTGJrkI5XGy+XqxwOjL8UA0iIrtTpMh49zw46uV6kwFQCgkf32jZM
OLwLTNSzclbnA7GRd8tKwezQ/XqeK3dal2n+cOr+o+Eka7yGmGWNUqFbIe8cjj9T
JeF3mgOCmZOwMI+wIcQYRSf+e5VTMO6TNWH5BI3vqeHSt7HkYuPlHT0pGum88d4a
pWqhulH4rUhEMtirX1hYx8Q4HlUOQqLtxzmwOYWkhl1C+yPObAvUDNiHCLf9w28n
uihgEkzHt9J4VKYulyJM9fe3ENcyU6rpXD7iANQqcr87ogKXFxknZ97uEACvSucc
RbnnAgRqZ7GDzgoBerJ2zrmhLkeREZ08iz1zze1JgyW3HEwdr2UbyAuqvSADCSUU
GN0vtQHsPzWl8onRc7lOPqPDF8OO+UfN9NAfA4wl3QyChD1GXl9rwKQOkbvdlYFV
UFx9u86LNi4ssTmU8p9NtHIGpz1SYMVYNoYy9NU7EVqypGMguDCL7gJt6GUmA0sw
p+YCroXiwL2BJ7RwRqTpgQuFL1gShkA17D5jK4mDPEetq1d8kz9rQYvAR/sTKBsR
ImC3xSfn8zpWoNTTB6lnwyP5Ng1bu6esS7+SpYprFTe7ZqGZF6xhvBPf1Ldi9UAm
U2xPN1/eeWxEa2kusidmFKPmN8lcT4miiAvwGxEnY7Oww9CgZlUB+LP4dl5VPjEt
sFeAhrgxLdpVTjPRRwTd9VQF3/XYl83j5wySIQKIPXgT3sG3ngAhDhC8I8GpM36r
8WJJ3x2yVzyJUbBPO0GBhWE2xPNIfhxVoU4cGGhpFqz7dPKSTRDGq++MrFgKKGpI
ZwT3CPTSSKc7ySndEXWkOYArDIdtyxdE1p5/c3aoz4utzUU7NDHQ+vVIwlnZSMiZ
jek2IJP3SZ+COOIHCVxpUaZ4lnzWT4eDqABhMLpIzw6NmGfg+kLBJhouqz81WITr
EtJuZYM5blWncBOJCoWMnBEcTEo/viU3GgcVRw=3D=3D
=3Dx94R
-----END PGP PUBLIC KEY BLOCK-----

--------------q9AC06bCVyaPOibqDCDhtYPK--

--------------fCxYjExTx4afN7vZNGscsPeS--

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

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

iQIzBAEBCgAdFiEEopQtqVJW1aeuo9/sszaHOrMp8lMFAmnoI/AACgkQszaHOrMp
8lM1ahAAjMCbfIDX3RZLxBoBao3MOhrPxNVefEVZKXVfvOE0u5DPp8Y3OxUsaQJe
X3dTRcGanzGu0dV2J6hRInKXH86H+8Jig8XLAVSUozkY2L5OzDwE9U6iN/kSIl7u
ZxWKJt8pZZQ0CX+5BJ75nhAoAZO0/TzIAC0sQ53G9KspZueco2ZUTJ540lL2/kRk
dCyL3ujwDkXZvo5SOvVHnRFV6rDoD96TMRuu0y0GgVMdOX6I+kIrXsKpiM73Ok7W
2IwsciWxucQWBYjsnvPkM1aLtkysMCcUwyLXoMdly1L7jKVY4WaVVzXvVbLl9D2Y
04EcEuhWHcpHG/W1BKbgISlZfWP/BsluE5hTdjJksHDGEBsGrBIdjMNS5y46kTlq
oLfcWl/OIzP483qdFpDfgJJ/TQdLU46aTYGJiiIZPzKXAPCNRUm2ZnplatSjpdiA
JfnZo60JuprDa0oiG9MNFk0VCUghsU79bhkrGAy/FAGc1kpminIyYfh2ypAaS7IK
43diFPyCidJG+1dvGxR39kPFLOAtBx9ZV8Y4voQPrjZXAUAC1V4Yt1ixp3S7OB2O
gEq8juh/2O6CdQ8fkfTdv3GcD8hta3urqT1Ejp+Tmpoxnn00NDukGX9zt/cpC3we
Ss7oSS0X7UEMzrvVAy7hli0989tg8oTNH3RI68pAPhv/UVpkBCA=
=nMSR
-----END PGP SIGNATURE-----

--------------SebHAdj8yxVfqcchjV0gaqoc--


From xen-devel-bounces@lists.xenproject.org Wed Apr 22 02:04:13 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 22 Apr 2026 02:04:13 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1289815.1569527 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wFMwg-0006By-Cq; Wed, 22 Apr 2026 02:04:06 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1289815.1569527; Wed, 22 Apr 2026 02:04: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 1wFMwg-0006Br-9H; Wed, 22 Apr 2026 02:04:06 +0000
Received: by outflank-mailman (input) for mailman id 1289815;
 Wed, 22 Apr 2026 02:04:05 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <alexdeucher@gmail.com>) id 1wFMwf-0006Bl-4u
 for xen-devel@lists.xenproject.org; Wed, 22 Apr 2026 02:04:05 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wFMwe-00DtmP-35
 for xen-devel@lists.xenproject.org; Wed, 22 Apr 2026 04:04:04 +0200
Received: from [10.42.69.7] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <alexdeucher@gmail.com>)
 id 69e82c87-5cb7-0a2a0a5109dd-0a2a4507bc88-10
 for <xen-devel@lists.xenproject.org>; Wed, 22 Apr 2026 04:04:03 +0200
Received: from [74.125.82.171] (helo=mail-dy1-f171.google.com)
 by tlsNG-ef75cf.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.1)
 (envelope-from <alexdeucher@gmail.com>)
 id 69e82c92-229c-0a2a45070019-4a7d52ab9515-3
 for <xen-devel@lists.xenproject.org>; Wed, 22 Apr 2026 04:04:03 +0200
Received: by mail-dy1-f171.google.com with SMTP id
 5a478bee46e88-2bda3b4318dso666386eec.1
 for <xen-devel@lists.xenproject.org>; Tue, 21 Apr 2026 19:04:03 -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=20251104 header.d=gmail.com header.i="@gmail.com" header.h="Content-Transfer-Encoding:Cc:To:Subject:Message-ID:Date:From:In-Reply-To:References:MIME-Version"
ARC-Seal: i=1; a=rsa-sha256; t=1776823441; cv=none;
        d=google.com; s=arc-20240605;
        b=SC+NlWRpaZ9nCQ9vzr4IaFDKZynKybHk0xetJfLMhhOuMUBzp/eArydioeQMARS4zu
         N2EvA7HDNnRAc5Jbl2g6WbqUk9quMpV0NirG+UOMwQ2FzWfwJnESKUnjjVMJ6gP1dnd4
         4J1mH6XEsFtHsSjIYymEnq9Vb6eeA3TPIrrKZRVxP9gFZC1Di9mTNwW6s6UEhF3T6sKs
         K06p9ThSZHqHurL4mbUzxtpXOJaKE5af2mCa+pSZw9aqG2hxXGiUF/rzoVEBK81QgJp6
         ehMdLALsnYMHIUlgej7lopDU2zzYbwmFQUsDqWBAo1O2uS1mLggFYb5IyuXA03ZwV6/Y
         1ECA==
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20240605;
        h=content-transfer-encoding:cc:to:subject:message-id:date:from
         :in-reply-to:references:mime-version:dkim-signature;
        bh=KXwfE/915Iuu5tjJxurXwHhruslbzJKEkqu1zMBps88=;
        fh=CpAw+SYsjEz676Bl6KfZoxXcwV8K0Qi8/4Z/twG/sVI=;
        b=IBSyL1lcGNgf5g3bJsW7r46niTb2cE4h0QG0xyeLskF0wynosVGPMbC5uuw0D2xZSd
         x5Fn+lLoZlE8OTpNJye3R2eatBWCI5IVjxbyy6rckVCbDCyWQ2CjBA+ym0O5rHhFv4u2
         rgILLjFXfhrS9s0bgpjwNRYJuC4FkssVm8o9c1uuoHj+5nCAOqcR7Mi/iZm1hnBiLODI
         YDAWQAdZPn0d35ImQmO+6piwdpaEjMgKRfl7LaNL6ZiKw1jTDUcrPdTZ7+opx07CyQ/I
         3EaHQtAeXCsGyN0kBEmb4ddfN9A/YIIWgUUgSk6pLTzC7ma0fAXj6ZEO8lBzqEOJ1OgE
         EJ8w==;
        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=20251104; t=1776823441; x=1777428241; darn=lists.xenproject.org;
        h=content-transfer-encoding:cc:to:subject:message-id:date:from
         :in-reply-to:references:mime-version:from:to:cc:subject:date
         :message-id:reply-to;
        bh=KXwfE/915Iuu5tjJxurXwHhruslbzJKEkqu1zMBps88=;
        b=sE0FhMJwupGGhzz68BWNt8O3+Fn3CikCVrlmsNsa/87CUvH+SAHeqdRCJP7pUWeo3q
         avlzT+NdiSI43P946NipQz+1w1ivkfGAr3e3FMSbilti6PN2A9eE4YsWO5WTm1M69QMb
         IMd2xv1x94R4X9U1RRhXFsCWMki8RNLGSXrABUHT1qlMTGDIlq17Vjz/n4DD5pXKhdRq
         3/Fk1kRcbhsmA/p5jOtwbdE6GTy7Ay9iJKFUyxRuvD5kyAqhGvS/if1/wxU6EuP89RDP
         kCRtRoeIUL+1sVdUIpu41EotCtY+qchCfcVb4GIyty3qfp/rGREfnpEC1YCjWKk+XGVr
         ITdg==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20251104; t=1776823441; x=1777428241;
        h=content-transfer-encoding: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;
        bh=KXwfE/915Iuu5tjJxurXwHhruslbzJKEkqu1zMBps88=;
        b=cuITAVMsRLvvV4gOAZJ9761tBXATjU21m6aDRHele3zSpg4MYwOaggWDMFHIv/tCxE
         INjYdKNiJ+SKqP+Wxq8qzfoqxFiSzeSj1JW8p3JbIc4TEWtPlohl+JimP0GeWzdkKnoF
         tuwSOuCWJHiE1RzLUYuualLPNVsnGf2ERlQyi/CxSK2o3HCb6Ny09wMa1FaIHPqMmrEz
         IRdPmgG83+DZONLewRN5GuI0RBmLcScBILGuxtpg1TSI4sQ9YqngbvKVt8/hJZGCKBA7
         W20ArEdKrroGrqYVmA0V9s5T9QFgVEBUDjEsGCWZpKJ/wUddOFxGn4ij0j0wDMoltrtJ
         FFWA==
X-Forwarded-Encrypted: i=1; AFNElJ8LFtF1TjBNO4I20y+uhXtnqrn6emCe3lFqRn7r4v+0WiAX11KYOPsDlo8nXaQzdH+Jf5HvYBtJrgc=@lists.xenproject.org
X-Gm-Message-State: AOJu0Ywdyy4tlqom+sfhk9QNYM+J3rmeLQW1c1VI0pXn/f4EXTYB87PK
	jzODf9MS40VrQu0MeeiuyxUcxeqioS3fwPOJfmDghBQ1UVvlKQHkXxz7oCy8W8cZ0h9qgiDmBxp
	/er46nEWD+Ma5Zh0Yk6fBp8391SaxFRM=
X-Gm-Gg: AeBDievMK+IS09bXlmwrdghPzSsU5Xo+HMd2IkVBZ34U9EjYhNgjWMDJ4VAS4CR815/
	acTSGC5FqCTI4JnyzVFyBA4WAx/Du2bgbC7NcDYtlN0Pu9x/ZMHJgtqQ0P+LgTwEiCkTGwCt47b
	oEw8p41SkQgaUErlUviGw9Wg9XF5WwQQlmTWBDkufyE5vqEk5rGYdliZV7RNuN7ijqDIuoUCEye
	QKUdXC1YOF+yEtdX9EVi5+wD6k4GR0kjVQ5Kiob+D6/2nurgIzVMqnXRTQGc1hFc1os6y5WzR2g
	3WUz2rnF4nQGUdSuYmPehGlDgJySKDfFDuKCAhGGOjl632DPGsiK2Tn8nHpMRnB/IJi/Md1NcTJ
	fjsct
X-Received: by 2002:a05:7022:5f01:b0:12d:b654:8180 with SMTP id
 a92af1059eb24-12db65484bfmr455959c88.2.1776823441162; Tue, 21 Apr 2026
 19:04:01 -0700 (PDT)
MIME-Version: 1.0
References: <a06133f7-3093-4733-9786-bc46c1453e06@gmail.com>
 <b8d04414-18b5-40f7-9ea2-88b30ff5bea0@amd.com> <c7865b27-6bf1-4df1-9520-c9ef6b3ef368@gmail.com>
 <4751cf03-d3c1-4d5d-af8e-39ad7c8ffb84@amd.com> <7472bfcf-8c22-4ac7-b903-a883cdb8f1c6@gmail.com>
 <8fe8b78b-5294-4319-af92-a4fb00527417@amd.com> <8846bac5-77ff-4439-ac5c-c33cdb4a94e3@gmail.com>
 <964c3670-fad3-44ce-bd93-2057bca2dcb8@amd.com> <08ad2301-3163-4497-8869-fa4cea30b384@gmail.com>
 <e5c00f2c-0819-48b4-b66e-71b9a40a7235@amd.com> <686713fc-c762-4b1b-88b2-d486d4f38ac6@gmail.com>
 <de6777c1-1165-4ace-a5a7-3004aa9ea8c5@invisiblethingslab.com> <d045e25d-0bc5-4056-b4a2-9eda73fb5be7@gmail.com>
In-Reply-To: <d045e25d-0bc5-4056-b4a2-9eda73fb5be7@gmail.com>
From: Alex Deucher <alexdeucher@gmail.com>
Date: Tue, 21 Apr 2026 22:03:49 -0400
X-Gm-Features: AQROBzCq3JY-5ArkKnDyVVr-Wl_czV3R7nte4oTZblqOBZ3Fd9cc3qiKy3Gryh4
Message-ID: <CADnq5_Og_eAA2QkN_TM=AqY2rz_B6cwbm5tePzwrAXzK3BypGg@mail.gmail.com>
Subject: Re: Pinned, non-revocable mappings of VRAM: will bad things happen?
To: Demi Marie Obenour <demiobenour@gmail.com>
Cc: Val Packett <val@invisiblethingslab.com>, 
	=?UTF-8?Q?Christian_K=C3=B6nig?= <christian.koenig@amd.com>, 
	dri-devel@lists.freedesktop.org, 
	Xen developer discussion <xen-devel@lists.xenproject.org>, linux-media@vger.kernel.org, 
	Suwit Semal <sumit.semwal@linaro.org>, 
	"Pelloux-Prayer, Pierre-Eric" <Pierre-eric.Pelloux-prayer@amd.com>
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: quoted-printable
X-purgate-ID: tlsNG-ef75cf/1776823443-2BB78C48-DC55805D/0/0
X-purgate-type: clean
X-purgate-size: 8296

On Tue, Apr 21, 2026 at 9:34=E2=80=AFPM Demi Marie Obenour
<demiobenour@gmail.com> wrote:
>
> On 4/21/26 12:55, Val Packett wrote:
> >
> > On 4/20/26 4:12 PM, Demi Marie Obenour wrote:
> >> On 4/20/26 14:53, Christian K=C3=B6nig wrote:
> >>> On 4/20/26 20:46, Demi Marie Obenour wrote:
> >>>> On 4/20/26 13:58, Christian K=C3=B6nig wrote:
> >>>>> On 4/20/26 19:03, Demi Marie Obenour wrote:
> >>>>>> On 4/20/26 04:49, Christian K=C3=B6nig wrote:
> >>>>>>> On 4/17/26 21:35, Demi Marie Obenour wrote:
> >>>>> ...
> >>>>>>>> Are any of the following reasonable options?
> >>>>>>>>
> >>>>>>>> 1. Change the guest kernel to only map (and thus pin) a small su=
bset
> >>>>>>>>     of VRAM at any given time.  If unmapped VRAM is accessed the=
 guest
> >>>>>>>>     traps the page fault, evicts an old VRAM mapping, and create=
s a
> >>>>>>>>     new one.
> >>>>>>> Yeah, that could potentially work.
> >>>>>>>
> >>>>>>> This is basically what we do on the host kernel driver when we ca=
n't resize the BAR for some reason. In that use case VRAM buffers are shuff=
led in and out of the CPU accessible window of VRAM on demand.
> >>>>>> How much is this going to hurt performance?
> >>>>> Hard to say, resizing the BAR can easily give you 10-15% more perfo=
rmance on some use cases.
> >>>>>
> >>>>> But that involves physically transferring the data using a DMA. For=
 this solution we basically only have to we basically only have to transfer=
 a few messages between host and guest.
> >>>>>
> >>>>> No idea how performant that is.
> >>>> In this use-case, 20-30% performance penalties are likely to be
> >>>> "business as usual".
> >>> Well that is quite a bit.
> >>>
> >>>> Close to native performance would be ideal, but
> >>>> to be useful it just needs to beat software rendering by a wide marg=
in,
> >>>> and not cause data corruption or vulnerabilities.
> >>> That should still easily be the case, even trivial use cases are mult=
iple magnitudes faster on GPUs compared to software rendering.
> >> Makes sense.  If only GPUs supported easy and flexible virtualization =
the way CPUs do :(.
> >>
> >>>>>>> But I have one question: When XEN has a problem handling faults f=
rom the guest on the host then how does that work for system memory mapping=
s?
> >>>>>>>
> >>>>>>> There is really no difference between VRAM and system memory in t=
he handling for the GPU driver stack.
> >>>>>>>
> >>>>>>> Regards,
> >>>>>>> Christian.
> >>>>>> Generally, Xen makes the frontend (usually an unprivileged VM)
> >>>>>> responsible for providing mappings to the backend (usually the hos=
t).
> >>>>>> That is possible with system RAM but not with VRAM, because Xen ha=
s
> >>>>>> no awareness of VRAM.  To Xen, VRAM is just a PCI BAR.
> >>>>> No, that doesn't work with system memory allocations of GPU drivers=
 either.
> >>>>>
> >>>>> We already had it multiple times that people tried to be clever and=
 incremented the page reference counter on driver allocated system memory a=
nd were totally surprised that this can result in security issues and data =
corruption.
> >>>>>
> >>>>> I seriously hope that this isn't the case here again. As far as I k=
now XEN already has support for accessing VMAs with VM_PFN or otherwise I d=
on't know how driver allocated system memory access could potentially work.
> >>>>>
> >>>>> Accessing VRAM is pretty much the same use case as far as I can see=
.
> >>>>>
> >>>>> Regards,
> >>>>> Christian.
> >>>> The Xen-native approach would be for system memory allocations to
> >>>> be made using the Xen driver and then imported into the virtio-GPU
> >>>> driver via dmabuf.  Is there any chance this could be made to happen=
?
> >>> That could be. Adding Pierre-Eric to comment since he knows that use =
much better than I do.
> >>>
> >>>> If it's a lost cause, then how much is the memory overhead of pinnin=
g
> >>>> everything ever used in a dmabuf?  It should be possible to account
> >>>> pinned host memory against a guest's quota, but if that leads to an
> >>>> unusable system it isn't going to be good.
> >>> That won't work at all.
> >>>
> >>> We have use cases where you *must* migrate a DMA-buf to VRAM or other=
wise the GPU can't use it.
> >>>
> >>> A simple scanout to a monitor is such an use case for example, that i=
s usually not possible from system memory.
> >> Direct scanout isn't a concern here.
> >>
> >>>> Is supporting page faults in Xen the only solution that will be viab=
le
> >>>> long-term, considering the tolerance for very substantial performanc=
e
> >>>> overheads compared to native?  AAA gaming isn't the initial goal her=
e.
> >>>> Qubes OS already supports PCI passthrough for that.
> >>> We have AAA gaming working on XEN through native context working for =
quite a while.
> >>>
> >>> Pierre-Eric can tell you more about that.
> >>>
> >>> Regards,
> >>> Christian.
> >> I've heard of that, but last I checked it required downstream patches
> >> to Xen, Linux, and QEMU.  I don't know if any of those have been
> >> upstreamed since, but I believe that upstreaming the Xen and Linux
> >> patches (or rewriting them and upstreaming the rewritten version) woul=
d
> >> be necessary.  Qubes OS (which I don't work for anymore but still want
> >> to help with this) almost certainly won't be using QEMU for GPU stuff.
> >
> > Yeah, our plan is to use xen-vhost-frontend[1] + vhost-device-gpu,
> > ported/extended/modified as necessary. (I already have
> > xen-vhost-frontend itself working on amd64 PVH with purely xenbus-based
> > hotplug/configuration, currently working on cleaning up and submitting
> > the necessary patches.)
> >
> > I'm curious to hear more details about how AMD has it working but last
> > time I checked, there weren't any missing pieces in Xen or Linux that
> > we'd need.. The AMD downstream changes were mostly related to QEMU.
> >
> > As for the memory management concerns, I would like to remind everyone
> > once again that the pinning of GPU dmabufs in regular graphics workload=
s
> > would be *very* short-term. In GPU paravirtualization (native contexts
> > or venus or whatever else) the guest mostly operates on *opaque handles=
*
> > that refer to buffers owned by the host GPU process. The typical
> > rendering process (roughly) only involves submitting commands to the GP=
U
> > that refer to memory using these handles. Only upon mmap() would a
> > buffer be pinned/granted to the guest, and those are typically only use=
d
> > for *uploads* where the guest immediately does its memcpy() and unmaps
> > the buffer.
> >
> > So I'm not worried about (unintentionally) pinning too much GPU driver
> > memory.
> >
> > In terms of deliberate denial-of-service attacks from the guest to the
> > host, the only reasonable response is:
> >
> > =C2=AF\_(=E3=83=84)_/=C2=AF
> >
> > CPU-mapping lots of GPU memory is far from the only DoS vector, the GPU
> > commands themselves can easily wedge the GPU core in a million ways (an=
d
> > last time I checked amdgpu was noooot so good at recovering from hangs)=
.
> >
> >
> > [1]: https://github.com/vireshk/xen-vhost-frontend
> >
> > ~val
>
> I think it is best to handle things like GPU crashes by giving the guest
> some time to unmap its grants, and if that fails, crashing it.  This shou=
ld
> be done from a revoke callback, as afterwards the VRAM might get reused.
>
> Does amdgpu call revoke callbacks when the device is reset and VRAM
> is lost?  It seems like it at least ought to.
>
> As an aside, Qubes needs to use the process isolation mode of the
> amdgpu driver.  This means that only one process will be on the GPU
> at a time, so it _should_ be possible to blow away all GPU-resident
> state except VRAM without affecting other processes.  Unfortunately,
> I think AMD GPUs might have HW or FW limitations that prevent that,
> at least on dGPUs.

The driver has supported per queue resets for a few kernel releases
now so only the bad app would be affected in that case.

Alex

>
> It might make sense to recommend KDE with GPU acceleration.  KWin can
> recover from losing VRAM.
> --
> Sincerely,
> Demi Marie Obenour (she/her/hers)


From xen-devel-bounces@lists.xenproject.org Wed Apr 22 04:57:44 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 22 Apr 2026 04:57:44 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1289844.1569536 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wFPeS-00037k-5p; Wed, 22 Apr 2026 04:57:28 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1289844.1569536; Wed, 22 Apr 2026 04:57: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 1wFPeS-00037L-0g; Wed, 22 Apr 2026 04:57:28 +0000
Received: by outflank-mailman (input) for mailman id 1289844;
 Wed, 22 Apr 2026 04:57:26 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <thuth@redhat.com>) id 1wFPeQ-0002xO-IM
 for xen-devel@lists.xenproject.org; Wed, 22 Apr 2026 04:57:26 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wFPeP-00GXAT-HE
 for xen-devel@lists.xenproject.org; Wed, 22 Apr 2026 06:57:25 +0200
Received: from [10.42.69.1] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <thuth@redhat.com>)
 id 69e854eb-e002-0a2a0a5209dd-0a2a45018bf4-38
 for <xen-devel@lists.xenproject.org>; Wed, 22 Apr 2026 06:57:25 +0200
Received: from [170.10.129.124] (helo=us-smtp-delivery-124.mimecast.com)
 by tlsNG-d62444.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.1)
 (envelope-from <thuth@redhat.com>)
 id 69e85534-c1f2-0a2a45010019-aa0a817cb619-3
 for <xen-devel@lists.xenproject.org>; Wed, 22 Apr 2026 06:57:25 +0200
Received: from mail-wm1-f70.google.com (mail-wm1-f70.google.com
 [209.85.128.70]) by relay.mimecast.com with ESMTP with STARTTLS
 (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id
 us-mta-453-EgWwrnf3O-K-Uz6AmhK_Wg-1; Wed, 22 Apr 2026 00:57:22 -0400
Received: by mail-wm1-f70.google.com with SMTP id
 5b1f17b1804b1-48a5952c635so5213055e9.2
 for <xen-devel@lists.xenproject.org>; Tue, 21 Apr 2026 21:57:22 -0700 (PDT)
Received: from [192.168.0.9] ([47.64.114.147])
 by smtp.gmail.com with ESMTPSA id
 5b1f17b1804b1-4891c318636sm217434155e9.7.2026.04.21.21.57.19
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Tue, 21 Apr 2026 21:57:19 -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=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:Autocrypt"
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com;
	s=mimecast20190719; t=1776833843;
	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:autocrypt:autocrypt;
	bh=0L9goOndJ0ZNAN3NWrENW0DDl37Vxtxj2sxDGwaEk+o=;
	b=IRU5dhbfT9CD9bdgcpJxiyw3JcL9+YOsBS9L/4AHMLqk53tyNoD04eAKvXnHFn/Dx1eYmr
	rTosr6xM8wN8LKbcW3oMyPsiWtW8Qi1vvelw0e/eTI6CPKLjaK3wVlmh/s0NtT+a32F+F/
	I1yU7GRQaDW42PsUQ5RKXjFM5xUORBc=
X-MC-Unique: EgWwrnf3O-K-Uz6AmhK_Wg-1
X-Mimecast-MFC-AGG-ID: EgWwrnf3O-K-Uz6AmhK_Wg_1776833841
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20251104; t=1776833841; x=1777438641;
        h=content-transfer-encoding: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;
        bh=0L9goOndJ0ZNAN3NWrENW0DDl37Vxtxj2sxDGwaEk+o=;
        b=n3MkAE1MGwmgb7PtVsNu+yWIrXX/H6k9Ej1a7EdSHly5ghI5M1dJOP2a8CN2jUKt6W
         +ndS/DGMXCLyTD8eA96ytg/Daiq+SpKxNVxSmuWHULdxJAVGAGG10zAkdL9fG0PnWQdE
         6rp/yKwN+XBwEvm7qgAqy3dxlAj29sSkWzNkgBxEPYQo6TE1hUyQrXUxhceJ8TIAze7e
         gl0wY9A6Ec9a3yzqRWlBeBfjBjJ9LwCWU0Ep70Q09Dg4l888+10aohRl7rNQWCjeqmYK
         8OJES7J67a0SctcYdc7pvSLRudJ2OvFEa0NC3w/sm6Mj8Ftttkq7cORFuHXBWP3FdhUj
         /t1Q==
X-Forwarded-Encrypted: i=1; AFNElJ8ueBgHyVWWGhnnln8sKK6zLQxQlXro9PvFGSZFZBb+UMyVaA7wXOFwntb13FiqxK0TGUJzmia1ypg=@lists.xenproject.org
X-Gm-Message-State: AOJu0YzLUSkS2cPFO+7wTO8p6VBGB7AdJyWLRcRP/Iu7G4q1gMeKeT1a
	nFBf0ifzl5U7fulHbiCFYnuXtrZJeTG7GIGtAvgTkozUUb19P1bxMtQ0JvJSSNGA/vFoNSA0lIY
	gDd64nJCwJTX56XEAql2SmTUWXnhHl0zblpOVkh2DfE710F8NixbkYAfS70slGP2AgkN0
X-Gm-Gg: AeBDiesWl2vTjyc5UIQN8eN4IBpjn2o12nyyx/HztX41bkG1tJDx+pvOVCy10WS5POY
	DI1/mP1IIV6IpgmAVnDTx+rzme+w1kfbCc3vnqkzIB/eT9uKiJA+dgo7OVcAHobLRf3n03wAnNh
	dS+gyhQM0zjkCEBWEWV2/4qT0kI83OPfRENyAQaQAP4TmfIQjG1/RUoAF4gBFOVWnUex9YGuk6f
	CsYcVtGPzpE96m55bsPBYRqDawCcTnKLi/QjvFUex27ykHKs9gSk9v4OIFPyRocgY+4IC6f4vsL
	/ecxZqpfmmjJDl4L88pMhuCd033Ri726FVEeP2T3gLnYS4zt1oCfBuZHZ5bFnlEaKYB+4HzUXX2
	qQKTvfpxuis6Nf4Gxi9k8EhjoNfpazQ==
X-Received: by 2002:a05:600c:48a1:b0:489:a4:e58a with SMTP id 5b1f17b1804b1-48900a4e881mr160289915e9.19.1776833841093;
        Tue, 21 Apr 2026 21:57:21 -0700 (PDT)
X-Received: by 2002:a05:600c:48a1:b0:489:a4:e58a with SMTP id 5b1f17b1804b1-48900a4e881mr160289815e9.19.1776833840649;
        Tue, 21 Apr 2026 21:57:20 -0700 (PDT)
Message-ID: <68b36ad0-2233-49d0-a3a6-bce053686bf1@redhat.com>
Date: Wed, 22 Apr 2026 06:57:18 +0200
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH] xen/arm: Replace __ASSEMBLY__ with __ASSEMBLER__ in
 interface.h
To: Stefano Stabellini <sstabellini@kernel.org>
Cc: Juergen Gross <jgross@suse.com>,
 Oleksandr Tyshchenko <oleksandr_tyshchenko@epam.com>,
 xen-devel@lists.xenproject.org, linux-kernel@vger.kernel.org
References: <20260421142701.548978-1-thuth@redhat.com>
 <alpine.DEB.2.22.394.2604211513030.2712345@ubuntu-linux-20-04-desktop>
From: Thomas Huth <thuth@redhat.com>
Autocrypt: addr=thuth@redhat.com; keydata=
 xsFNBFH7eUwBEACzyOXKU+5Pcs6wNpKzrlJwzRl3VGZt95VCdb+FgoU9g11m7FWcOafrVRwU
 yYkTm9+7zBUc0sW5AuPGR/dp3pSLX/yFWsA/UB4nJsHqgDvDU7BImSeiTrnpMOTXb7Arw2a2
 4CflIyFqjCpfDM4MuTmzTjXq4Uov1giGE9X6viNo1pxyEpd7PanlKNnf4PqEQp06X4IgUacW
 tSGj6Gcns1bCuHV8OPWLkf4hkRnu8hdL6i60Yxz4E6TqlrpxsfYwLXgEeswPHOA6Mn4Cso9O
 0lewVYfFfsmokfAVMKWzOl1Sr0KGI5T9CpmRfAiSHpthhHWnECcJFwl72NTi6kUcUzG4se81
 O6n9d/kTj7pzTmBdfwuOZ0YUSqcqs0W+l1NcASSYZQaDoD3/SLk+nqVeCBB4OnYOGhgmIHNW
 0CwMRO/GK+20alxzk//V9GmIM2ACElbfF8+Uug3pqiHkVnKqM7W9/S1NH2qmxB6zMiJUHlTH
 gnVeZX0dgH27mzstcF786uPcdEqS0KJuxh2kk5IvUSL3Qn3ZgmgdxBMyCPciD/1cb7/Ahazr
 3ThHQXSHXkH/aDXdfLsKVuwDzHLVSkdSnZdt5HHh75/NFHxwaTlydgfHmFFwodK8y/TjyiGZ
 zg2Kje38xnz8zKn9iesFBCcONXS7txENTzX0z80WKBhK+XSFJwARAQABzR5UaG9tYXMgSHV0
 aCA8dGh1dGhAcmVkaGF0LmNvbT7CwXgEEwECACIFAlVgX6oCGwMGCwkIBwMCBhUIAgkKCwQW
 AgMBAh4BAheAAAoJEC7Z13T+cC21EbIP/ii9cvT2HHGbFRl8HqGT6+7Wkb+XLMqJBMAIGiQK
 QIP3xk1HPTsLfVG0ao4hy/oYkGNOP8+ubLnZen6Yq3zAFiMhQ44lvgigDYJo3Ve59gfe99KX
 EbtB+X95ODARkq0McR6OAsPNJ7gpEUzfkQUUJTXRDQXfG/FX303Gvk+YU0spm2tsIKPl6AmV
 1CegDljzjycyfJbk418MQmMu2T82kjrkEofUO2a24ed3VGC0/Uz//XCR2ZTo+vBoBUQl41BD
 eFFtoCSrzo3yPFS+w5fkH9NT8ChdpSlbNS32NhYQhJtr9zjWyFRf0Zk+T/1P7ECn6gTEkp5k
 ofFIA4MFBc/fXbaDRtBmPB0N9pqTFApIUI4vuFPPO0JDrII9dLwZ6lO9EKiwuVlvr1wwzsgq
 zJTPBU3qHaUO4d/8G+gD7AL/6T4zi8Jo/GmjBsnYaTzbm94lf0CjXjsOX3seMhaE6WAZOQQG
 tZHAO1kAPWpaxne+wtgMKthyPLNwelLf+xzGvrIKvLX6QuLoWMnWldu22z2ICVnLQChlR9d6
 WW8QFEpo/FK7omuS8KvvopFcOOdlbFMM8Y/8vBgVMSsK6fsYUhruny/PahprPbYGiNIhKqz7
 UvgyZVl4pBFjTaz/SbimTk210vIlkDyy1WuS8Zsn0htv4+jQPgo9rqFE4mipJjy/iboDzsFN
 BFH7eUwBEAC2nzfUeeI8dv0C4qrfCPze6NkryUflEut9WwHhfXCLjtvCjnoGqFelH/PE9NF4
 4VPSCdvD1SSmFVzu6T9qWdcwMSaC+e7G/z0/AhBfqTeosAF5XvKQlAb9ZPkdDr7YN0a1XDfa
 +NgA+JZB4ROyBZFFAwNHT+HCnyzy0v9Sh3BgJJwfpXHH2l3LfncvV8rgFv0bvdr70U+On2XH
 5bApOyW1WpIG5KPJlDdzcQTyptOJ1dnEHfwnABEfzI3dNf63rlxsGouX/NFRRRNqkdClQR3K
 gCwciaXfZ7ir7fF0u1N2UuLsWA8Ei1JrNypk+MRxhbvdQC4tyZCZ8mVDk+QOK6pyK2f4rMf/
 WmqxNTtAVmNuZIwnJdjRMMSs4W4w6N/bRvpqtykSqx7VXcgqtv6eqoDZrNuhGbekQA0sAnCJ
 VPArerAZGArm63o39me/bRUQeQVSxEBmg66yshF9HkcUPGVeC4B0TPwz+HFcVhheo6hoJjLq
 knFOPLRj+0h+ZL+D0GenyqD3CyuyeTT5dGcNU9qT74bdSr20k/CklvI7S9yoQje8BeQAHtdV
 cvO8XCLrpGuw9SgOS7OP5oI26a0548M4KldAY+kqX6XVphEw3/6U1KTf7WxW5zYLTtadjISB
 X9xsRWSU+Yqs3C7oN5TIPSoj9tXMoxZkCIHWvnqGwZ7JhwARAQABwsFfBBgBAgAJBQJR+3lM
 AhsMAAoJEC7Z13T+cC21hPAQAIsBL9MdGpdEpvXs9CYrBkd6tS9mbaSWj6XBDfA1AEdQkBOn
 ZH1Qt7HJesk+qNSnLv6+jP4VwqK5AFMrKJ6IjE7jqgzGxtcZnvSjeDGPF1h2CKZQPpTw890k
 fy18AvgFHkVk2Oylyexw3aOBsXg6ukN44vIFqPoc+YSU0+0QIdYJp/XFsgWxnFIMYwDpxSHS
 5fdDxUjsk3UBHZx+IhFjs2siVZi5wnHIqM7eK9abr2cK2weInTBwXwqVWjsXZ4tq5+jQrwDK
 cvxIcwXdUTLGxc4/Z/VRH1PZSvfQxdxMGmNTGaXVNfdFZjm4fz0mz+OUi6AHC4CZpwnsliGV
 ODqwX8Y1zic9viSTbKS01ZNp175POyWViUk9qisPZB7ypfSIVSEULrL347qY/hm9ahhqmn17
 Ng255syASv3ehvX7iwWDfzXbA0/TVaqwa1YIkec+/8miicV0zMP9siRcYQkyTqSzaTFBBmqD
 oiT+z+/E59qj/EKfyce3sbC9XLjXv3mHMrq1tKX4G7IJGnS989E/fg6crv6NHae9Ckm7+lSs
 IQu4bBP2GxiRQ+NV3iV/KU3ebMRzqIC//DCOxzQNFNJAKldPe/bKZMCxEqtVoRkuJtNdp/5a
 yXFZ6TfE1hGKrDBYAm4vrnZ4CXFSBDllL59cFFOJCkn4Xboj/aVxxJxF30bn
In-Reply-To: <alpine.DEB.2.22.394.2604211513030.2712345@ubuntu-linux-20-04-desktop>
X-Mimecast-Spam-Score: 0
X-Mimecast-MFC-PROC-ID: rs0CzFgOnuZPdlIH1-_sPVSL185A7T9HGqq04vD-m7I_1776833841
X-Mimecast-Originator: redhat.com
Content-Language: en-US
Content-Type: text/plain; charset=UTF-8; format=flowed
Content-Transfer-Encoding: 7bit
X-purgate-ID: tlsNG-d62444/1776833845-BC016FF4-4917173E/0/0
X-purgate-type: clean
X-purgate-size: 1443

On 22/04/2026 00.15, Stefano Stabellini wrote:
> On Tue, 21 Apr 2026, Thomas Huth wrote:
>> From: Thomas Huth <thuth@redhat.com>
>>
>> While the GCC and Clang compilers already define __ASSEMBLER__
>> automatically when compiling assembly code, __ASSEMBLY__ is a
>> macro that only gets defined by the Makefiles in the kernel.
>> This can be very confusing when switching between userspace
>> and kernelspace coding, or when dealing with uapi headers that
>> rather should use __ASSEMBLER__ instead. So let's standardize now
>> on the __ASSEMBLER__ macro that is provided by the compilers.
>>
>> Signed-off-by: Thomas Huth <thuth@redhat.com>
> 
> I haven't been closely following the __ASSEMBLER__ vs __ASSEMBLY__
> discussion. If there is general agreement to use __ASSEMBLER__ in
> headers, I am happy to go along with that. Currently, I see more than
> 140 uses of __ASSEMBLY__ compared to fewer than 20 uses of
> __ASSEMBLER__, but I'll defer to your judgment if the project is moving
> in that direction.

I assume you only counted the occurrences in the main include/ folder?
Please also take the arch/*/include/ folders into account:

thuth:~/devel/linux$ grep -r __ASSEMBLER__ arch/*/include/ | wc -l
1492
thuth:~/devel/linux$ grep -r __ASSEMBLY__ arch/*/include/ | wc -l
120

So most spots have been converted already. It would be great if you could 
help with the xen header!

  Thanks,
   Thomas



From xen-devel-bounces@lists.xenproject.org Wed Apr 22 05:15:07 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 22 Apr 2026 05:15:07 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1289854.1569544 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wFPvN-0008Fp-EY; Wed, 22 Apr 2026 05:14:57 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1289854.1569544; Wed, 22 Apr 2026 05:14: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 1wFPvN-0008Fi-BK; Wed, 22 Apr 2026 05:14:57 +0000
Received: by outflank-mailman (input) for mailman id 1289854;
 Wed, 22 Apr 2026 05:14:55 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <Bertrand.Marquis@arm.com>) id 1wFPvL-0008Fc-5y
 for xen-devel@lists.xenproject.org; Wed, 22 Apr 2026 05:14:55 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wFPvI-00Dtay-5w
 for xen-devel@lists.xenproject.org; Wed, 22 Apr 2026 07:14:53 +0200
Received: from [10.42.69.11] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <Bertrand.Marquis@arm.com>)
 id 69e8593a-bab6-0a2a0a5309dd-0a2a450be2b8-48
 for <xen-devel@lists.xenproject.org>; Wed, 22 Apr 2026 07:14:52 +0200
Received: from [52.101.72.2]
 (helo=AM0PR02CU008.outbound.protection.outlook.com)
 by tlsNG-42698a.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.1)
 (envelope-from <Bertrand.Marquis@arm.com>)
 id 69e8594b-212f-0a2a450b0019-3465480220e9-3
 for <xen-devel@lists.xenproject.org>; Wed, 22 Apr 2026 07:14:52 +0200
Received: from DUZPR01CA0135.eurprd01.prod.exchangelabs.com
 (2603:10a6:10:4bc::6) by GVXPR08MB11610.eurprd08.prod.outlook.com
 (2603:10a6:150:326::13) with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9818.32; Wed, 22 Apr
 2026 05:14:48 +0000
Received: from DB1PEPF000509ED.eurprd03.prod.outlook.com
 (2603:10a6:10:4bc:cafe::c1) by DUZPR01CA0135.outlook.office365.com
 (2603:10a6:10:4bc::6) with Microsoft SMTP Server (version=TLS1_3,
 cipher=TLS_AES_256_GCM_SHA384) id 15.20.9791.48 via Frontend Transport; Wed,
 22 Apr 2026 05:14:48 +0000
Received: from outbound-uk1.az.dlp.m.darktrace.com (4.158.2.129) by
 DB1PEPF000509ED.mail.protection.outlook.com (10.167.242.71) with Microsoft
 SMTP Server (version=TLS1_3, cipher=TLS_AES_256_GCM_SHA384) id 15.20.9791.48
 via Frontend Transport; Wed, 22 Apr 2026 05:14:48 +0000
Received: from PR3PR08MB5593.eurprd08.prod.outlook.com (2603:10a6:102:84::13)
 by AS8PR08MB6406.eurprd08.prod.outlook.com (2603:10a6:20b:33c::23)
 with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9769.17; Wed, 22 Apr
 2026 05:13:46 +0000
Received: from PR3PR08MB5593.eurprd08.prod.outlook.com
 ([fe80::aae1:6871:afc4:620e]) by PR3PR08MB5593.eurprd08.prod.outlook.com
 ([fe80::aae1:6871:afc4:620e%5]) with mapi id 15.20.9818.023; Wed, 22 Apr 2026
 05:13: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=arm.com header.i="@arm.com" header.h="From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck"; dkim=pass header.s=selector1 header.d=arm.com header.i="@arm.com" header.h="From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck"
ARC-Seal: i=2; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=pass;
 b=Whv0coskLLhJNDna+qqc7Z8xzqjo5svPv3mG8J9v8I6Dq0xRFyjnrwhDI4jLJF6sSiWEiAIngKi5e/PcL1Wo+nbgGwMM50A8QZoYw84xVg5XovdADgQ414UeziD5iMWpSpnj82MrGPkLqBH2Ue1uZ4B8EWNBuKW5DkUxV6nArPRga4YgpiHClDRzu+PHf6ZOVy9p710oU0QXaZXD9HAkAGfRpfOLzfLsi2EtSUuRJkfYT+R0kYDNIoyZs1/V+qeWQbJVTYO8P0LNELA4WyN+r4k95rDwsGX7KFXPh5jPkk8QyoPHnSFtW3bwcyYSDDwZ6FF9xZDYxVjIoV43H18Xcg==
ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com;
 s=arcselector10001;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1;
 bh=H6XhVuBou+QiAULWpIvVnUfhAOkVWr/dDnjBKEQ+IfM=;
 b=mbGltR81MDmAYrYqjOxtjdmoKnsPQouew2ULW8DAGOirc3yitYrSUTYC3uHyCGfjQ8ZQfEZ7n6Ai49RAQHa+Enu0hsWjQgKx5jOdbuLPyP5ol5M4mAVHaD0cS/CNKgiY28KSUyDHWl1W9cwe9mcHG8/PEVmFQIkKr1lqzYX5caJje7/VIoPaLJlROi/8Nt+egM3hX1cZrS4v9kCyYDk7YcWdxWhXmzJoInWPSWcFeNPpnTH3Xx3RCBOJcO1NXbC+GaHRp2rWK1Ig4zJJlB/POJX2aIR+sCVMw7g3VOipGeqCZu4YhpStZIdmpdLAwI86OeJLyZg34/coAbKNPsIlzA==
ARC-Authentication-Results: i=2; mx.microsoft.com 1; spf=pass (sender ip is
 4.158.2.129) smtp.rcpttodomain=epam.com smtp.mailfrom=arm.com; dmarc=pass
 (p=none sp=none pct=100) action=none header.from=arm.com; dkim=pass
 (signature was verified) header.d=arm.com; arc=pass (0 oda=1 ltdi=1
 spf=[1,1,smtp.mailfrom=arm.com] dkim=[1,1,header.d=arm.com]
 dmarc=[1,1,header.from=arm.com])
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=arm.com; s=selector1;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck;
 bh=H6XhVuBou+QiAULWpIvVnUfhAOkVWr/dDnjBKEQ+IfM=;
 b=ocZ5w4kunbxMyHGHoBpbsO8YgyA0L2tTuwGvWu0CxAZgcR5dGRhbpXVTMbr4qAmh8LQU8iKNvwZMoEy/o/QO6kEzslNacz7Kx0qC+L8qTQvBuUpUeVM4BN+8Ws/ThnnEcUlwsNMPnbBAUfbB6js+RPztfMVFtWkWV5uovTI0O4I=
X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 4.158.2.129)
 smtp.mailfrom=arm.com; dkim=pass (signature was verified)
 header.d=arm.com;dmarc=pass action=none header.from=arm.com;
Received-SPF: Pass (protection.outlook.com: domain of arm.com designates
 4.158.2.129 as permitted sender) receiver=protection.outlook.com;
 client-ip=4.158.2.129; helo=outbound-uk1.az.dlp.m.darktrace.com; pr=C
ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none;
 b=Dt3tef974xQGthckB5XTgv6t2JuNIXqNEa29FMnLrPt4N8m9o1x6qhd/5uURMZSWifZl5nb9eJfaS2ePCaPrsVwY+UFh5mo/u8jBGkPzYkZ3Hly2HYGykFBbVKoYVISzpQ6u++lnTPja8wReC8YTeNYWgS0cq68JH0AXzlcLRX2dE5j9NUU12nxn+xIROvgap6oZgzgchbLAJ7fdVmLfvZceuPKUzsZV3zy/ivfVvwym075+K6/Nq9QpDugBpmVjOyBcvpN/v+3aKjjlAsF8szLR0dM2Wn/PxhZ01PFefeHTtYe0UdPBRuC7v9DfdKN5XY1P3iFaLmsg9mVWh+8icQ==
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com;
 s=arcselector10001;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1;
 bh=H6XhVuBou+QiAULWpIvVnUfhAOkVWr/dDnjBKEQ+IfM=;
 b=qnr7rz9ulHhpHeM7TljytObo3/PIRj9w8tojOf7TcsKiJzJUYcfEN0XodAQL9NRjDJH97sCaJBjohez8Nenwf/WIjrOpqPg4k0y2dDYgQqp09AhLcknEqgH4eTKslWl9V7piW2e0P537J8CaHaCLbCe+zJ2zgmNwOdak4SkJAmuXiu6hfIfdWTT5FckwiEUZHTVVBQQChtwtb6L1QuMaJP/GiLbdYsK+Z+rc4Wt6LxfkO4NaFFt8GlJwDubRhVbDinOsTal3OwsxMvtnkf29cCsP2DUk+4nxs+JfyzywnbCpK0UPbt5N6nW9DDTmfUFjsZOqe00W7k11akacrcy2WQ==
ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass
 smtp.mailfrom=arm.com; dmarc=pass action=none header.from=arm.com; dkim=pass
 header.d=arm.com; arc=none
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=arm.com; s=selector1;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck;
 bh=H6XhVuBou+QiAULWpIvVnUfhAOkVWr/dDnjBKEQ+IfM=;
 b=ocZ5w4kunbxMyHGHoBpbsO8YgyA0L2tTuwGvWu0CxAZgcR5dGRhbpXVTMbr4qAmh8LQU8iKNvwZMoEy/o/QO6kEzslNacz7Kx0qC+L8qTQvBuUpUeVM4BN+8Ws/ThnnEcUlwsNMPnbBAUfbB6js+RPztfMVFtWkWV5uovTI0O4I=
From: Bertrand Marquis <Bertrand.Marquis@arm.com>
To: Dmytro Prokopchuk1 <dmytro_prokopchuk1@epam.com>
CC: "xen-devel@lists.xenproject.org" <xen-devel@lists.xenproject.org>,
	Volodymyr Babchuk <Volodymyr_Babchuk@epam.com>, Jens Wiklander
	<jens.wiklander@linaro.org>, Stefano Stabellini <sstabellini@kernel.org>,
	Julien Grall <julien@xen.org>, Michal Orzel <michal.orzel@amd.com>
Subject: Re: [PATCH] xen/arm: ffa: fix build with clang/ATfE
Thread-Topic: [PATCH] xen/arm: ffa: fix build with clang/ATfE
Thread-Index: AQHc0WbA/s1rIXoAmU6+7rPJ118Z7bXqiryA
Date: Wed, 22 Apr 2026 05:13:46 +0000
Message-ID: <DBA0BC61-C6AD-45D0-970F-0E8FD557EB11@arm.com>
References:
 <581a0752a1af3775fb676a70c4f42e7fb958dadc.1776758025.git.dmytro_prokopchuk1@epam.com>
In-Reply-To:
 <581a0752a1af3775fb676a70c4f42e7fb958dadc.1776758025.git.dmytro_prokopchuk1@epam.com>
Accept-Language: en-GB, en-US
Content-Language: en-US
X-MS-Has-Attach:
X-MS-TNEF-Correlator:
x-mailer: Apple Mail (2.3864.500.181)
Authentication-Results-Original: dkim=none (message not signed)
 header.d=none;dmarc=none action=none header.from=arm.com;
x-ms-traffictypediagnostic:
	PR3PR08MB5593:EE_|AS8PR08MB6406:EE_|DB1PEPF000509ED:EE_|GVXPR08MB11610:EE_
X-MS-Office365-Filtering-Correlation-Id: b9089b2a-f459-4c45-88e0-08dea02e1359
x-checkrecipientrouted: true
nodisclaimer: true
X-MS-Exchange-SenderADCheck: 1
X-MS-Exchange-AntiSpam-Relay: 0
X-Microsoft-Antispam-Untrusted:
 BCL:0;ARA:13230040|366016|376014|1800799024|22082099003|56012099003|18002099003|38070700021;
X-Microsoft-Antispam-Message-Info-Original:
 Vc0Hla8rJxSRm0ZxQv+8is6Mo0EWfOE/S9b0eMhLjROBFNPzqfGFIgFXAJmYZTGhvzZRSEILVhYxObIfOVQAFJ5BePLTizyTSn+ZAEqvZQRtgQzQDMFH0si5xwAzUFu7i8a7E+qD5PxftqndiJ7TS/n8EmRhgF8S6hAU8wYdcx/ci7+fwwQV/+t26RO3HSH6oE2obVc7QQhYiDKzqml/DuBoGPHLLHeO2zH8nszQ44HkU2BCB6RuNUsojLCOOZxrLkk71wcPy6S5XeBsNSkL1rQqJX9BEETciozuW8jBbovGf01kAmrR/NbnK+pCcVYsp9QZRsBZcKvxl7tECdPA8x/xh1EzvhmMDefyQhQ69fQhvcmK+LErdOuG/bEZN1lYMxezNkx0B6yO1Yenh4wARXMc/xogEqAazMqKk5v5SOxhM0EXgQuJRJa2eT6mSrMGLCSB2MuugZRgdvNr+ROEN9PN0UdZiCR4A1tcT54Y0IZTomF3k4XbRzvotCs7ttcLpjh60M/8oxqAZXwKhdPtkHH7wK0DhYMxFtWX2dN23jnNElAuqvmlrWMGk3KoymQ/DI3z4t+r4HePkoIKetklyb3t04sODbr8i1m97D75cd/ewIFHtJFRGucAunnEFRdLVPTA6LWJVlssPAJgoMZDiSlGtsTEp0cjktuvZh8E0KyeO/zTCO7GOp5bpDeUOddNczxHYyru4Y6YQtBjQaAGb1kEoYJR6wSnVeUl9+yHuHWhiYkOjCBvUrn/0ofNG5UGeli/WcZ4fRjN3Q34ezsMYwaMQW3i0gDxPqpTQL7E0Tc=
X-Forefront-Antispam-Report-Untrusted:
 CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:PR3PR08MB5593.eurprd08.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(366016)(376014)(1800799024)(22082099003)(56012099003)(18002099003)(38070700021);DIR:OUT;SFP:1101;
Content-Type: text/plain; charset="us-ascii"
Content-ID: <5A37061ED94FBB41BDFF648E177BD0BF@eurprd08.prod.outlook.com>
Content-Transfer-Encoding: quoted-printable
MIME-Version: 1.0
X-Exchange-RoutingPolicyChecked:
 DDz0OyuGCdSpaVI2X3NxCzVUs87F18sR0tQbaA11EGXje7KCV7Um77P9KV9LsT53fDEt6W2QSEMg6PYSJ/3dVdXNKtSKQbj4hw9vQ2omBPujRmNcniZ6ySSppuabxTuMtd0KzuhgqdyqtHsiz/BCZv4jyuYX5rzubZ9uOxMYIxVWrdqoyv9zjqa2g/bFpczH+P+YTeIc48KgddxzYtkscmbzyuOKHYT0DhKMzPHjahRF+aJQdl5qNeuJJx4vRych3InAoI+2EBASCgyENOxPdA45upSuikYX0aOxs8SHdgufV6VqPHf9Bm1vePe08XGfczYHvl7BorF4Vdaewl3kxg==
X-MS-Exchange-Transport-CrossTenantHeadersStamped: AS8PR08MB6406
X-EOPAttributedMessage: 0
X-MS-Exchange-Transport-CrossTenantHeadersStripped:
 DB1PEPF000509ED.eurprd03.prod.outlook.com
X-MS-PublicTrafficType: Email
X-MS-Office365-Filtering-Correlation-Id-Prvs:
	2cba873a-f337-4cbf-c662-08dea02dee12
X-Microsoft-Antispam:
	BCL:0;ARA:13230040|376014|36860700016|1800799024|82310400026|35042699022|14060799003|13003099007|56012099003|18002099003|22082099003;
X-Microsoft-Antispam-Message-Info:
	oCWFauPKwfubFxSU0P5y6RfzfZYrHAAPxO8NHN11DSZAwm2h0j3/AEvz5nbVCmLXFNVMOGmxlNzZHijTG6b24X/xKrtcJFRT83IWUN2LW21xClj4JG415ip5bzPo6NsgMrugvrdTwGHYk3xImw+gyjweag81SpzfBqQflFbul/RypyKgeBHGsD0ZbxAP6oQasa+u1xplY8vTbsAb5CFOw8HuSffTUIulBCfHcUAWUZSsyiLGX+AV5nHidTrfuywHKonrJwWpH8qawUhzyeT/03HSa4OgzNQjrScHC1aAq5SFez2A0AX5fNXTqt9SzoCw84AEf0iXpPMxEH1Q7B1kiEiWq/ktYIlh976siho/3HCoVWCrMLTakcrShDUPkJ3f8PkHtu1k4Jz88ki5zUpRMUdCISE3rEnXwTWZ1l5YE8fZIPu2QGBV1iGHk4xaFBK3dsNFmUzBvCo4lYvacudXCdN1g+vE2Yf8YdHRDAVyMPyAm5IflYi7jSHTXKERaWL5JkOelGJE1a+O/KbrFLMaQMRZpkxITFRI5c37fU+9IGWdG3HSpGGB4fr8yP+l1BNSLdvU41G8QBavwu/dXCmtpHbCRpYbdZLSwroUQqKhKSNmY5FcIVtqPZZLQl/vQzKuDdQfYaXY85Kvj1lmiiVXtt/MCfAjFgqZp/zDsah/JcjXuBJNXsBltbP3oo37H4La9XMej0i8x4yUAP2yKlfM/zb/DIehE71/ZCitaayZFrLQjJlPFCQazrhdGzU47o/WWdCuh1f8EfUpz8MJlk/oOQ==
X-Forefront-Antispam-Report:
	CIP:4.158.2.129;CTRY:GB;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:outbound-uk1.az.dlp.m.darktrace.com;PTR:InfoDomainNonexistent;CAT:NONE;SFS:(13230040)(376014)(36860700016)(1800799024)(82310400026)(35042699022)(14060799003)(13003099007)(56012099003)(18002099003)(22082099003);DIR:OUT;SFP:1101;
X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1
X-MS-Exchange-AntiSpam-MessageData-0:
	//L9G6O3g3PCVU1NXKMiMiXuG44D2nbJMk6ZuhLV9romtBIgUPbfwpJMjZkH/FQkJdv3a1ZgYtX5hwpWo56wyXY468LzvUttD2jxjG+CA/X61sP+hgAtZY156qaLA9utgZnLEbj2ma/SdY4gMm7DDaY/uZTa3hQs2cNEE93altOTtBwIGuxKCsS1Wy9CjUUrwxk9iZh7wt40xMaMTYn8CsVzQE7yDszx+FDzx7og333jqpdoLgQVzY72sswbHEexwaTgtGgZwX+l7P3cMa0ZBSCMKn32qTW9toONkoyUMG9UZJAQ/JDBcD0/1PafOqqyCOXmxqrwa5xzqCWn4yNKt2UkalSwpdjSqRP6+Jy0FDcHzfBVrWm/uicR+/tf0FhX+Jc+Mq5IpoN7L9H9PexllU8IAg/Qvu64m1EM8P7sly2cZoyt2vo17gC1DWJDwBLq
X-OriginatorOrg: arm.com
X-MS-Exchange-CrossTenant-OriginalArrivalTime: 22 Apr 2026 05:14:48.5758
 (UTC)
X-MS-Exchange-CrossTenant-Network-Message-Id: b9089b2a-f459-4c45-88e0-08dea02e1359
X-MS-Exchange-CrossTenant-Id: f34e5979-57d9-4aaa-ad4d-b122a662184d
X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=f34e5979-57d9-4aaa-ad4d-b122a662184d;Ip=[4.158.2.129];Helo=[outbound-uk1.az.dlp.m.darktrace.com]
X-MS-Exchange-CrossTenant-AuthSource:
	DB1PEPF000509ED.eurprd03.prod.outlook.com
X-MS-Exchange-CrossTenant-AuthAs: Anonymous
X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem
X-MS-Exchange-Transport-CrossTenantHeadersStamped: GVXPR08MB11610
X-purgate-ID: tlsNG-42698a/1776834892-7E16DF3B-EE8DED18/0/0
X-purgate-type: clean
X-purgate-size: 1868

Hi Dmytro,

> On 21 Apr 2026, at 10:13, Dmytro Prokopchuk1 <dmytro_prokopchuk1@epam.com=
> wrote:
>=20
> Clang 22.x.x or Arm Toolchain for Embedded 22.x.x reports:
>=20
> In file included from arch/arm/tee/ffa.c:75:
> arch/arm/tee/ffa_private.h:439:17: error: 'used' attribute ignored on a n=
on-definition declaration [-Werror,-Wignored-attributes]
>  439 | extern uint32_t __ro_after_init ffa_fw_version;
>      |                 ^
>=20
> There is a fix for clang 16 in the git history:
> a1a1e2b7dc4f ("xen/arm: ffa: fix build with clang")
> which was broken by the following commit:
> a90376c6adbc ("xen/arm: ffa: Add FF-A 1.2 endpoint memory access descript=
ors")
>=20
> Remove __ro_after_init from the extern declaration of ffa_fw_version.
> The attribute is already present on the definition in ffa.c, which is
> sufficient and correct.
>=20
> Fixes: a90376c6adbc ("xen/arm: ffa: Add FF-A 1.2 endpoint memory access d=
escriptors")
> Signed-off-by: Dmytro Prokopchuk <dmytro_prokopchuk1@epam.com>

Sounds right to me:

Reviewed-by: Bertrand Marquis <bertrand.marquis@arm.com>

Cheers
Bertrand

> ---
> Test CI pipeline:
> https://gitlab.com/xen-project/people/dimaprkp4k/xen/-/pipelines/24674463=
33
> ---
> xen/arch/arm/tee/ffa_private.h | 2 +-
> 1 file changed, 1 insertion(+), 1 deletion(-)
>=20
> diff --git a/xen/arch/arm/tee/ffa_private.h b/xen/arch/arm/tee/ffa_privat=
e.h
> index c291f32b56..e16bc0d83d 100644
> --- a/xen/arch/arm/tee/ffa_private.h
> +++ b/xen/arch/arm/tee/ffa_private.h
> @@ -436,7 +436,7 @@ struct ffa_ctx {
> };
>=20
> extern DECLARE_BITMAP(ffa_fw_abi_supported, FFA_ABI_BITMAP_SIZE);
> -extern uint32_t __ro_after_init ffa_fw_version;
> +extern uint32_t ffa_fw_version;
>=20
> extern struct list_head ffa_ctx_head;
> extern rwlock_t ffa_ctx_list_rwlock;
> --=20
> 2.43.0



From xen-devel-bounces@lists.xenproject.org Wed Apr 22 05:59:28 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 22 Apr 2026 05:59:28 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1289868.1569553 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wFQcB-00033Y-N3; Wed, 22 Apr 2026 05:59:11 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1289868.1569553; Wed, 22 Apr 2026 05:59: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 1wFQcB-00033R-K1; Wed, 22 Apr 2026 05:59:11 +0000
Received: by outflank-mailman (input) for mailman id 1289868;
 Wed, 22 Apr 2026 05:59:11 +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 1wFQcA-00033L-Rx
 for xen-devel@lists.xenproject.org; Wed, 22 Apr 2026 05:59:11 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wFQc9-005idb-Mk
 for xen-devel@lists.xenproject.org; Wed, 22 Apr 2026 07:59:09 +0200
Received: from [10.42.69.10] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <jgross@suse.com>)
 id 69e863a9-e002-0a2a0a5209dd-0a2a450a9eee-12
 for <xen-devel@lists.xenproject.org>; Wed, 22 Apr 2026 07:59:09 +0200
Received: from [209.85.208.49] (helo=mail-ed1-f49.google.com)
 by tlsNG-4011c0.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.1)
 (envelope-from <jgross@suse.com>)
 id 69e863ad-56b3-0a2a450a0019-d155d031ed7c-3
 for <xen-devel@lists.xenproject.org>; Wed, 22 Apr 2026 07:59:09 +0200
Received: by mail-ed1-f49.google.com with SMTP id
 4fb4d7f45d1cf-676a89de629so2452053a12.1
 for <xen-devel@lists.xenproject.org>; Tue, 21 Apr 2026 22:59:09 -0700 (PDT)
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
 4fb4d7f45d1cf-672c47fe951sm3132510a12.2.2026.04.21.22.59.08
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Tue, 21 Apr 2026 22:59:08 -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=google header.d=suse.com header.i="@suse.com" header.h="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=1776837549; x=1777442349; darn=lists.xenproject.org;
        h=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;
        bh=byadPzDiTVwNwk0JL15svsodJIrHmC5dTiHH9bIA6LY=;
        b=ETkqtBvYTiS3oeCoIzV+OyVvydbaGFj49GoEy8a03dluAtyZzpjPz5GMbf93vJO655
         Nc+OJjhRiXqqQfHdhsXC0KIliH7OywVM1gvVTStpgxnkLUnQMkkDk/ik6O+36hihaaF2
         yVohZpJEkvG3SHNfZ2/OxPuPu0YgEenFUSqXcUbnAEkPr5oE+iW/rgs4xmCmcisvTieC
         M1XTDAJRergBgRlyL/A6GVsNWHA5wIQIzog0KVAP4gpMNDAjQZREQnFtc474rZWivyZE
         5bYpWH8y+l0NwYtdPynKq8q733W69BHkIBQnRR2frZh3v1YELeEI45ZFzje0DIIE9tEn
         3ICQ==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20251104; t=1776837549; x=1777442349;
        h=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;
        bh=byadPzDiTVwNwk0JL15svsodJIrHmC5dTiHH9bIA6LY=;
        b=QgCLlfJcF3LemfTYfcd4K2/GEWspbFsdF/LZdpryVt8b+FHlQBpotuP3GGnigd7Q3h
         Ka5828l4dCCXPaLwrTiK4YNhwlqu6VqiKHXGXDadK6fTD+CNMOAscgqLHCJTNELt12ci
         cLHjFGodExskOp6xKTHBK6SzT8m5Qv6ImE7kr0LAjj9H80rogWM3DwGTY4TOUD7y43vn
         8GvqC5HCQ4HV1JehTX5FeuBbkzAHszZ2mLSjfJ4SPMI5bbUAp4TDSP6EQq/RkPxJBSvk
         5GdvpvYZwk5rU8t+wy3Kf965Ncr67FLjYM4ArSG95jhvaQoeujCSskddt8n34w1fwatu
         3zPw==
X-Forwarded-Encrypted: i=1; AFNElJ+vPVXAmP+FnfumxWa3WpuuuKD0mnXPVk4KspbnOVxht5I5p+3hox5BuGCJfRev+MsCjT0OXayajhc=@lists.xenproject.org
X-Gm-Message-State: AOJu0YzduyB8RdIv5/GzXZ1GVJvv15g72H28Nj/K+sXaYlHE4MxMPbtz
	oFAUu5cQ8RKDCzjifaDT9oycJUs4F/ZpVwM75bwclgv+k0KczRIJEDILok4V47jxh9s=
X-Gm-Gg: AeBDiesFV00tB5KUyRlbj6VZ9adWgG9LWYtu6u21aoxVP0v6J7HICNB2dsFoJM5WVON
	EjlOPka+n3vtiobRWMTiBDMHuSPKwjPl8FuPsmApB+lLyP0urJ4rQrB5SdqszSXy2P54BOWHEDy
	Y9UrxBv7sVHUcM5M0OlPPxaM8azZH/8Biqed0ogbTLfK+49XUpQZ+JMzivV/DGHAA/tjub24+IC
	wNmc/Gb5ZlavM12m2Q8eSLAUAt6f1DqCEJLcv69Q+QeVay7PGp0QNXtx7G6LmOEzv4ehV3UriZu
	KKH5M7wML1rRTOgMuSUXN8O8lEOad8jShvh8jc/pPgOuxw7nONmUP4y/MNVI3+cj9APFw8OmoOB
	rRs1XGf9Gx6EAA6LISV78yui9/CD+H3YzuXOEZjxsEhC5KwDg9jtt62CcHE+1pR1zBkcRN6iX6f
	EABUBm0Ea7083ZV83CetM1XUnTa+LePdhg+i2L313bduF+067ZJLW+elzSN9yPRd01to9HIC/K7
	liWkf64wOKDc3WxjLFMnjY7StE1ZY4+rhQ8I+F/qYkYEiemY1uvVlh+VUxCIiVPIJdQL+KOuDA=
X-Received: by 2002:aa7:cd4d:0:b0:672:a242:5887 with SMTP id 4fb4d7f45d1cf-672bfd9db45mr6152778a12.12.1776837548811;
        Tue, 21 Apr 2026 22:59:08 -0700 (PDT)
Message-ID: <2055c961-4481-4ace-8d3a-c6efe85a5287@suse.com>
Date: Wed, 22 Apr 2026 07:59:07 +0200
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH] xen/arm: Replace __ASSEMBLY__ with __ASSEMBLER__ in
 interface.h
To: Thomas Huth <thuth@redhat.com>,
 Stefano Stabellini <sstabellini@kernel.org>
Cc: Oleksandr Tyshchenko <oleksandr_tyshchenko@epam.com>,
 xen-devel@lists.xenproject.org, linux-kernel@vger.kernel.org
References: <20260421142701.548978-1-thuth@redhat.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: <20260421142701.548978-1-thuth@redhat.com>
Content-Type: multipart/signed; micalg=pgp-sha256;
 protocol="application/pgp-signature";
 boundary="------------OkkA89dOG0lxrXJlvxm95Z7S"
X-purgate-ID: tlsNG-4011c0/1776837549-451628B7-4EB696B0/0/0
X-purgate-type: clean
X-purgate-size: 6783

This is an OpenPGP/MIME signed message (RFC 4880 and 3156)
--------------OkkA89dOG0lxrXJlvxm95Z7S
Content-Type: multipart/mixed; boundary="------------1qrFfpBNqRcR0U7Me0mi1dEE";
 protected-headers="v1"
From: =?UTF-8?B?SsO8cmdlbiBHcm/Dnw==?= <jgross@suse.com>
To: Thomas Huth <thuth@redhat.com>,
 Stefano Stabellini <sstabellini@kernel.org>
Cc: Oleksandr Tyshchenko <oleksandr_tyshchenko@epam.com>,
 xen-devel@lists.xenproject.org, linux-kernel@vger.kernel.org
Message-ID: <2055c961-4481-4ace-8d3a-c6efe85a5287@suse.com>
Subject: Re: [PATCH] xen/arm: Replace __ASSEMBLY__ with __ASSEMBLER__ in
 interface.h
References: <20260421142701.548978-1-thuth@redhat.com>
In-Reply-To: <20260421142701.548978-1-thuth@redhat.com>

--------------1qrFfpBNqRcR0U7Me0mi1dEE
Content-Type: multipart/mixed; boundary="------------9jkNseDjvAyRJ0FmLRKYDD0H"

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

T24gMjEuMDQuMjYgMTY6MjcsIFRob21hcyBIdXRoIHdyb3RlOg0KPiBGcm9tOiBUaG9tYXMg
SHV0aCA8dGh1dGhAcmVkaGF0LmNvbT4NCj4gDQo+IFdoaWxlIHRoZSBHQ0MgYW5kIENsYW5n
IGNvbXBpbGVycyBhbHJlYWR5IGRlZmluZSBfX0FTU0VNQkxFUl9fDQo+IGF1dG9tYXRpY2Fs
bHkgd2hlbiBjb21waWxpbmcgYXNzZW1ibHkgY29kZSwgX19BU1NFTUJMWV9fIGlzIGENCj4g
bWFjcm8gdGhhdCBvbmx5IGdldHMgZGVmaW5lZCBieSB0aGUgTWFrZWZpbGVzIGluIHRoZSBr
ZXJuZWwuDQo+IFRoaXMgY2FuIGJlIHZlcnkgY29uZnVzaW5nIHdoZW4gc3dpdGNoaW5nIGJl
dHdlZW4gdXNlcnNwYWNlDQo+IGFuZCBrZXJuZWxzcGFjZSBjb2RpbmcsIG9yIHdoZW4gZGVh
bGluZyB3aXRoIHVhcGkgaGVhZGVycyB0aGF0DQo+IHJhdGhlciBzaG91bGQgdXNlIF9fQVNT
RU1CTEVSX18gaW5zdGVhZC4gU28gbGV0J3Mgc3RhbmRhcmRpemUgbm93DQo+IG9uIHRoZSBf
X0FTU0VNQkxFUl9fIG1hY3JvIHRoYXQgaXMgcHJvdmlkZWQgYnkgdGhlIGNvbXBpbGVycy4N
Cj4gDQo+IFNpZ25lZC1vZmYtYnk6IFRob21hcyBIdXRoIDx0aHV0aEByZWRoYXQuY29tPg0K
DQpSZXZpZXdlZC1ieTogSnVlcmdlbiBHcm9zcyA8amdyb3NzQHN1c2UuY29tPg0KDQoNCkp1
ZXJnZW4NCg==
--------------9jkNseDjvAyRJ0FmLRKYDD0H
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-----

--------------9jkNseDjvAyRJ0FmLRKYDD0H--

--------------1qrFfpBNqRcR0U7Me0mi1dEE--

--------------OkkA89dOG0lxrXJlvxm95Z7S
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/Ey8FAmnoY6wFAwAAAAAACgkQsN6d1ii/Ey8n
qQf+MitV2rWNdbvNQSQ4wPKjcNbdGwXNsoAfHJectv8luvFwmPXanoIvDxFxuKmofGN7AtBhatHk
5kkUZ1wdqPLfUP7NbvQpyxc8VcJNNmSkyzjtQnZtWzTCdl0IVTyoeaVbKDJ0PgA1WrbcCgkz1IAv
gXCF05u/RuFTsWsEHWK2/iueap5UoXrQFFDNUmEbboXQ237X9mTvpSmKfVh9HmuFAf3Wg0oQK1l5
ACba2rbJ4mXhPIwHf3Pyzr1RN6PI/6+/y+M2hNiLbDUBkHWCETmWdnR8exdKnmInhs7LQ7s5IFA+
vhz2TNeWtWeT5U0RLagblX5qicIjNFKnxLDce6DZOA==
=LnQY
-----END PGP SIGNATURE-----

--------------OkkA89dOG0lxrXJlvxm95Z7S--


From xen-devel-bounces@lists.xenproject.org Wed Apr 22 06:19:49 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 22 Apr 2026 06:19:49 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1289879.1569561 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wFQw3-0008R7-97; Wed, 22 Apr 2026 06:19:43 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1289879.1569561; Wed, 22 Apr 2026 06:19: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 1wFQw3-0008R0-64; Wed, 22 Apr 2026 06:19:43 +0000
Received: by outflank-mailman (input) for mailman id 1289879;
 Wed, 22 Apr 2026 06:19:42 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <jbeulich@suse.com>) id 1wFQw2-0008QS-Ki
 for xen-devel@lists.xenproject.org; Wed, 22 Apr 2026 06:19:42 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wFQw1-00633e-P8
 for xen-devel@lists.xenproject.org; Wed, 22 Apr 2026 08:19:41 +0200
Received: from [10.42.69.11] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <jbeulich@suse.com>)
 id 69e86879-bab6-0a2a0a5309dd-0a2a450ba83a-22
 for <xen-devel@lists.xenproject.org>; Wed, 22 Apr 2026 08:19:41 +0200
Received: from [209.85.221.46] (helo=mail-wr1-f46.google.com)
 by tlsNG-42698a.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.1)
 (envelope-from <jbeulich@suse.com>)
 id 69e8687d-212f-0a2a450b0019-d155dd2ee577-3
 for <xen-devel@lists.xenproject.org>; Wed, 22 Apr 2026 08:19:41 +0200
Received: by mail-wr1-f46.google.com with SMTP id
 ffacd0b85a97d-43d43e09de5so2770046f8f.1
 for <xen-devel@lists.xenproject.org>; Tue, 21 Apr 2026 23:19:41 -0700 (PDT)
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-488fc0f82bbsm709405915e9.3.2026.04.21.23.19.40
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Tue, 21 Apr 2026 23:19:40 -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=google header.d=suse.com header.i="@suse.com" header.h="Content-Transfer-Encoding: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=1776838781; x=1777443581; darn=lists.xenproject.org;
        h=content-transfer-encoding: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;
        bh=f1j3VGZmGl4alO4dFyZPaBT0PwjvTsbbcxOWNsc+MJs=;
        b=clzfIeaQEItwczSxBiLljhXL8Vr5O2O5nACEbgGtkJ2pH3pLN4F+WxuW3Kmrw6kLbs
         7MK6enqnsGSpdArGsS1qMWbxipyURyFPeaocqz7dcZrxakOjDe3E+Q5rD56pcxSV/i9t
         j1NWHhDBWQ9pgcQgMrbOiOneXb3IwTx+hB4Bupan+/bE8HsJOfLlZAgwcCh5IkNEyCzY
         rO/rxoJtXIZTxic6NpF0ese2hrr4wgl2fi59cmVrC6V/yYQa7k3hI+GCx+8UBkW1t4rh
         SVYObVXhWyFVMdGRi1fAWRLexZdCDxwYq4+9SARDLp4ToPM/pMiNF5bIfT7BX8nQGIKT
         6AJA==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20251104; t=1776838781; x=1777443581;
        h=content-transfer-encoding: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;
        bh=f1j3VGZmGl4alO4dFyZPaBT0PwjvTsbbcxOWNsc+MJs=;
        b=iuqEvG8/iMn3vx8R8jZ9AL1wJ6roNHWDvYLSjddXqJWPdCQZObmR5xgaGbRb35XMWq
         io09GAcJCgWenY1LMEh513mcjwNtLa+0+7g7GUGGKaMi/6rcP1l8uYm4UFrMsPa1yxDu
         TrcFzYigg+B/UZLo9dkM8PIJhoiGkFBj5QEm6D1FanNcQbFXuKPc3bAj3/3wOgb/bc3/
         ca0RzR17xqUwH8+7KSBvJEN/XFzNclKfVWIm+Ift9AsnGz0OG2BjQtR8riXHhTAKaGUb
         R+oNEL8Q7EliCj1NDhhC79lmKo2Hn4F6DC6Ajfcwwv3GC7L3llftv1o9ymnE+a3zzsw5
         CLvw==
X-Forwarded-Encrypted: i=1; AFNElJ87ZHeKU78Af+yWcC8VKfJ1ryve8qLniQN2oQHMoqVxOhHjXvSmXrPDx/GF5VlqkbV9fuphnxwaURE=@lists.xenproject.org
X-Gm-Message-State: AOJu0YzMOishmZ0gDRfCB47qysV2/OapAahhLO8Cf2SwQytxBGvOyjgP
	pX1gr1G2NpmdF6n9/8RvWe3I21tHrg/STBnb4krCUUssW4xgSfP/j8zQhCQ9A1d0Pw==
X-Gm-Gg: AeBDietzTWmLj45oWlG+5mJ/gISwnPKZRNkefhuoW9ry8oDosJ/H0hC4ssZbUN1m8nq
	uVwpUeq+C9Zvw0Hs8vtBswv2yNCq52l/ytck6b654rlaQeEtcelBiVwySqaCE4LgIQiV58vizQX
	eIExfCUjNsknxGR4qTDRZAOTcU9y1kbDiJyrX1tLwnsKQSh5cO09YU4Reu7DwV+SipeXP1qoAvv
	uAzxjJ7B2DoCwph26QDUGhbmGHCqIqThD3d0miGvEOGVLvOlQK4IzpXhT9K/ZfElwQOCdIYNndc
	gpurkiMDrrePCfLjl5QB8wjnCCBy2BemXH9+/ApYyBaGJqDZ2c0awdNyKVoc1UWtkhNc3FhiYs0
	fTdzyRNE+4hG329ZIJaH+jib3w6VfGqEz49iDYcvehjtgPwID+DMg5yGEFkB+zW6DKserIGA18J
	sAMry7SVqChvCJVLk/QdglGKvZVKjpMlgfuAvKxRx2PgufxBQAW5OwUnylAzhXzDJ5Q1fn65Lks
	dvDfOP2V6EWNcBq0GY8/CNZo+bbWyeVtQdz
X-Received: by 2002:a05:600c:5295:b0:485:364e:9328 with SMTP id 5b1f17b1804b1-488fb77d12dmr296357505e9.16.1776838781007;
        Tue, 21 Apr 2026 23:19:41 -0700 (PDT)
Message-ID: <0b8e4040-398a-4be5-9fb7-6045bca345a2@suse.com>
Date: Wed, 22 Apr 2026 08:19:39 +0200
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH v2 3/9] tools/libs/store: add support to use watches with
 a depth parameter
To: =?UTF-8?B?SsO8cmdlbiBHcm/Dnw==?= <jgross@suse.com>
Cc: Anthony PERARD <anthony.perard@vates.tech>, Julien Grall
 <julien@xen.org>, Jason Andryuk <jason.andryuk@amd.com>,
 xen-devel@lists.xenproject.org
References: <20260421074211.308473-1-jgross@suse.com>
 <20260421074211.308473-4-jgross@suse.com>
 <df1be497-ff9b-4f08-ad83-54df9799dd1b@amd.com>
 <be385a95-79ed-486d-8676-9a83dc2c7799@suse.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: <be385a95-79ed-486d-8676-9a83dc2c7799@suse.com>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
X-purgate-ID: tlsNG-42698a/1776838781-06D77F3B-10CD3B08/0/0
X-purgate-type: clean
X-purgate-size: 1881

On 21.04.2026 18:08, Jürgen Groß wrote:
> On 21.04.26 15:54, Jason Andryuk wrote:
>> On 2026-04-21 03:42, Juergen Gross wrote:
>>> Add a new xs_watch_depth() function to libxenstore allowing to limit
>>> the scope of a Xenstore watch. It can be used only in case Xenstore is
>>> supporting the XENSTORE_SERVER_FEATURE_WATCHDEPTH feature.
>>>
>>> For convenience add a xs_watch_try_depth() wrapper, which will call
>>> xs_watch_depth() if supported and xs_watch() otherwise.
>>>
>>> Cache the supported features of Xenstore in order not having to get
>>> them from Xenstore for each call of one of the new functions.
>>>
>>> Signed-off-by: Juergen Gross <jgross@suse.com>
>>
>>
>>> diff --git a/tools/libs/store/xs.c b/tools/libs/store/xs.c
>>> index 06462445e0..cb3508a86a 100644
>>> --- a/tools/libs/store/xs.c
>>> +++ b/tools/libs/store/xs.c
>>
>>> @@ -1001,8 +993,8 @@ bool xs_watch(struct xs_handle *h, const char *path, 
>>> const char *token)
>>>   # define PTHREAD_STACK_MIN 0
>>>   #endif
>>> -#define READ_THREAD_STACKSIZE                     \
>>> -    ((DEFAULT_THREAD_STACKSIZE < PTHREAD_STACK_MIN) ?     \
>>> +#define READ_THREAD_STACKSIZE                    \
>>> +    ((DEFAULT_THREAD_STACKSIZE < PTHREAD_STACK_MIN) ?    \
>>
>> This is an unrelated whitespace change, and not mentioned in the commit 
>> message.  It should probably be dropped since the surrounding lines are no 
>> longer touched.  Alternatively kept and mentioned.  With either of those:
>>
>> Reviewed-by: Jason Andryuk <jason.andryuk@amd.com>
> 
> Thanks.
> 
> Whoever is committing this: I'd rather expand the commit message with:
> 
> While touching the file fix a whitespace issue.
> 
> Shall I resubmit this patch, or can this be amended while committing?

Of course it can be.

Jan


From xen-devel-bounces@lists.xenproject.org Wed Apr 22 06:49:10 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 22 Apr 2026 06:49:10 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1289893.1569570 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wFROS-0006yS-Cu; Wed, 22 Apr 2026 06:49:04 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1289893.1569570; Wed, 22 Apr 2026 06:49: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 1wFROS-0006yL-AJ; Wed, 22 Apr 2026 06:49:04 +0000
Received: by outflank-mailman (input) for mailman id 1289893;
 Wed, 22 Apr 2026 06:49:03 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <jbeulich@suse.com>) id 1wFROQ-0006xn-Tr
 for xen-devel@lists.xenproject.org; Wed, 22 Apr 2026 06:49:03 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wFROO-00EAk7-Of
 for xen-devel@lists.xenproject.org; Wed, 22 Apr 2026 08:49:02 +0200
Received: from [10.42.69.3] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <jbeulich@suse.com>)
 id 69e86f5c-e002-0a2a0a5209dd-0a2a4503d654-20
 for <xen-devel@lists.xenproject.org>; Wed, 22 Apr 2026 08:49:02 +0200
Received: from [209.85.128.43] (helo=mail-wm1-f43.google.com)
 by tlsNG-33051d.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.1)
 (envelope-from <jbeulich@suse.com>)
 id 69e86f5d-672d-0a2a45030019-d155802be14d-3
 for <xen-devel@lists.xenproject.org>; Wed, 22 Apr 2026 08:49:02 +0200
Received: by mail-wm1-f43.google.com with SMTP id
 5b1f17b1804b1-488a8ca4aadso69124715e9.3
 for <xen-devel@lists.xenproject.org>; Tue, 21 Apr 2026 23:49:01 -0700 (PDT)
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-488fc0f82bbsm712556195e9.3.2026.04.21.23.49.00
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Tue, 21 Apr 2026 23:49:01 -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=google header.d=suse.com header.i="@suse.com" header.h="Content-Transfer-Encoding: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=1776840541; x=1777445341; darn=lists.xenproject.org;
        h=content-transfer-encoding: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;
        bh=sukIVtaISOCAupv7+uOd75pGbHe8wPJUlRz6/XgoFcM=;
        b=YT4yKZdfkP7fT8V/1c9shy9odTsYhbuuBQhFYufHMR7OS/xoPsgHMZUdSkooONiBDO
         DYu1pOmp3voSQz+3J0VToXc+wc3U7cnr7RysXcGUhHmQzGTo/dOLO9A9S63Z6foDWOju
         dSaBrVYJaeUcb2zzyvlVykSlBInTbjeMlX/+W93SqTRkY4WyzUCZLhpAIjOGzOX9au1/
         wm/AA9H3ei/A2upfcIJu3//YJ1cONer8snwN1elQDuq3p5SmWDpNXXlVsafsw/LEMDVh
         SBhdKVffLZSssk78iwxWsoi4jfZcd7DSvZbXAQjV8pt/6tazJaX+gSlhHz0RxNjEeYFC
         SPxA==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20251104; t=1776840541; x=1777445341;
        h=content-transfer-encoding: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;
        bh=sukIVtaISOCAupv7+uOd75pGbHe8wPJUlRz6/XgoFcM=;
        b=ngpAOa22RKdxQ4fYxBRAJtlNpzeer3OsQO7f0XM1MutydQFBRQW8QKz4Ssxu37KX3v
         PFywCJDVxqUdrQge8ZoDxYFTBUm9jK8MXv3pU6H/Oi7+rzTu10kLP4Lwqtd3pxTGOrQs
         Ej9J0iHsKsP8fk3VfDzSA3cLdVNjbIqSXY0aO2u8ulDC8UQiGQnBHzJMcdlaOboPUDLt
         8kYtoVu+CsOpdRqa3EOz3pG5TpOqmFuwNZ9eRys6sv36FC5OlHUq6a+seaRLl8EPgHUj
         mlHxZZTaX7pyRm2haX4ddh2H1rlMXgNlxI9DOZtEfyiJHZzZ/1PpVpJusFGX7fnwA5Km
         kLYg==
X-Forwarded-Encrypted: i=1; AFNElJ8TYQ1DCh7IjseMRmwA/1i6j/KDRCPgMkQvJdq3hfrM22WzeGCWGK//ZLNs66i4mocZQQQ3GnMGRMU=@lists.xenproject.org
X-Gm-Message-State: AOJu0YzuRQSeb2+YfRoCy8kMdSab83OY84aodk1qAHAV1RyKIqzyeIZi
	tkdfIof7cujAHdePC4LX2T/u8QJHOLcQaTEoXjx0gsGG6/4ZTy9eU2uYLQmkzh0Azw==
X-Gm-Gg: AeBDiescevwqpgbM4UwjoYYbWk1Hd2OBB7W8tQ2TOWupvR4iAkPbBHuC+fCNqyG0kdU
	qMMdNBkKddjr8B/i4SpfsvjxRi8CtiERH/TLHiMdtQqTZ/Dr0b/RQaBdVR43AaVG9MpwuIcCiX+
	f2sgO/Pk7BNVNrraxDaUeOmCbNVZPG6frvUqHk/ER2NOoW22zKSeC15WViIEhH3EY/6Y5727Ycw
	awwsi9pwXOywSLJyhGOlvGv0eODrt6tXdKc+jHbPVeDkiNPtzCruACEj6o0PMAGIs6lrgnk9/jZ
	Lc3XSS5Urv8NS/+SCEtaAKiNkUyD95ngpHOsiRB3ui2y60aMiuOfE32YU5flx/qg2OqqRxTPKjZ
	iv+P4RIbvuJaxCcus9lxQCgt9Mmxx7a2TOosB7dWmZ0wfIbj8z5f/RF7JPQ9g9E+zse3jk1XUvD
	4W6bAeq4gtqK9JDamSEE/j120uaJ28r+PqS7cJVlfbdaNVWXPX4dIAqhnIkNJYnpDYnCoCTxUH4
	0XoiDzjvhkzv+R8IBcI9nGRdQ==
X-Received: by 2002:a05:600c:3110:b0:487:2439:b7be with SMTP id 5b1f17b1804b1-488fb7389dfmr316683005e9.6.1776840541321;
        Tue, 21 Apr 2026 23:49:01 -0700 (PDT)
Message-ID: <170028cb-ce5c-4677-88e4-32f57f372fea@suse.com>
Date: Wed, 22 Apr 2026 08:48:59 +0200
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH 1/1] xen/efi: Config parsing: Free the same page count as
 allocated.
To: Bernhard Kaindl <bernhard.kaindl@citrix.com>
Cc: "Daniel P. Smith" <dpsmith@apertussolutions.com>,
 =?UTF-8?Q?Marek_Marczykowski-G=C3=B3recki?=
 <marmarek@invisiblethingslab.com>, xen-devel@lists.xenproject.org,
 Julien Grall <julien@xen.org>, Stefano Stabellini <sstabellini@kernel.org>,
 Volodymyr Babchuk <volodymyr_babchuk@epam.com>,
 Bertrand Marquis <bertrand.marquis@arm.com>,
 Michal Orzel <michal.orzel@amd.com>
References: <127e7a4e0bf360d7ffe8be94022840a353a307b2.1776787216.git.bernhard.kaindl@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: <127e7a4e0bf360d7ffe8be94022840a353a307b2.1776787216.git.bernhard.kaindl@citrix.com>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 7bit
X-purgate-ID: tlsNG-33051d/1776840542-A396D938-CF2F463F/0/0
X-purgate-type: clean
X-purgate-size: 4749

On 21.04.2026 18:13, Bernhard Kaindl wrote:
> When reading the config file or the config section, we may need to append
> a terminating NUL byte to the config buffer if the last byte is not a
> control character.
> 
> This may cause an additional page to be allocated by efi_bs->AllocatePages()
> if the config file or config section size is a multiple of the page size.
> 
> For this case, increment file->size by one so the number of pages to be
> freed by efi_bs->FreePages() is the same as the number of pages allocated
> by efi_bs->AllocatePages() when the additional byte is allocated.
> 
> I moved the dcache flush after the NUL termination so the flushed range
> covers the final buffer contents.
> 
> I didn't add a dcache flush for the copied cfg buffer in read_section():
> that buffer is created by memcpy() and then consumed only by normal CPU
> reads in the EFI loader, so there is no non-coherent producer or other
> observer that would require cache maintenance.
> 
> Fixes: df75f77092c1 ("EFI: avoid OOB config file reads")
> Signed-off-by: Bernhard Kaindl <bernhard.kaindl@citrix.com>
> 
> ----
> PS: The same fix applies to its backport to 4.21 and other branches,
> for example:
> 
> stable-4.21:
> Fixes: feb99494bf59 ("EFI: avoid OOB config file reads")
> 
> stable-4.20:
> Fixes: 05b8f716aa32 ("EFI: avoid OOB config file reads")
> 
> PPS: A review using GPT-5.4 (just a data point for review) confirms what
> I've found by manual code inspection:
> 
>> The fix in boot.c:882-886 and boot.c:913-928 is consistent with the existing
>> free sites at boot.c:790-797, boot.c:1564-1567, and boot.c:1638-1641: Once the
>> config buffer gets an extra terminating byte, using the incremented size for
>> PFN_UP during FreePages is the right fix.
>>
>> I also checked the parser helpers at boot.c:584-641; they already operate on
>> a bounded buffer and treat NUL/control bytes as terminators, so the synthetic
>> extra byte does not create an obvious parsing regression.

To avoid something non-obvious was why I deliberately left file->size
un-incremented. But yes, I failed to recall that ->FreePages() takes a
size.

> --- a/xen/common/efi/boot.c
> +++ b/xen/common/efi/boot.c
> @@ -858,7 +858,8 @@ static bool __init read_file(EFI_FILE_HANDLE dir_handle, CHAR16 *name,
>      what = L"Allocation";
>      file->addr = min(1UL << (32 + PAGE_SHIFT),
>                       HYPERVISOR_VIRT_END - DIRECTMAP_VIRT_START);
> -    /* For config files allocate an extra byte to put a NUL there. */
> +
> +    /* For config file buffers, allocate space for the terminating NUL byte */
>      ret = efi_bs->AllocatePages(AllocateMaxAddress, EfiLoaderData,
>                                  PFN_UP(size + (file == &cfg)), &file->addr);
>      if ( EFI_ERROR(ret) )

I don't really see why this or the other comment you alter would need
touching. But of course it'll be the EFI maintainers to judge.

> @@ -877,10 +878,12 @@ static bool __init read_file(EFI_FILE_HANDLE dir_handle, CHAR16 *name,
>  
>      FileHandle->Close(FileHandle);
>  
> -    efi_arch_flush_dcache_area(file->ptr, file->size);
> -
>      if ( file == &cfg )
> -        file->str[file->size] = 0;
> +    {
> +        file->str[file->size] = 0; /* NUL-terminate the config data buffer. */
> +        file->size += 1;           /* Free the same page count as allocated. */

_If_ we want to go with incrementing file->size, then I don't see why
it can't be done using the increment operator. That specifically exists
as a shorthand for "+= 1".

As indicated above, I'm not convinced though that we really want to
alter file->size. I'd instead add 1 in the few instances of
"efi_bs->FreePages(cfg.addr, PFN_UP(cfg.size))". Sadly the adding of 1
is conditional in read_section(), so maybe a "need_to_increment"
boolean wants adding next to the need_to_free one? Then a small helper
function may be warranted for those few instances of freeing cfg.addr.

> +    }
> +    efi_arch_flush_dcache_area(file->ptr, file->size);

A separating blank line wants maintaining here. But is this change
really needed at all? Besides being unrelated to the purpose of the
patch, the flushing - aiui - exists so that buffers handed on to
domains (Dom0) are in proper state. The config file isn't exposed to
Dom0, though. (Furthermore I question the effectiveness of this flush:
Speculation and prefetching can easily lead to the data being brought
back into the cache. Such flushing likely requires unmapping first,
and the concept of "unmapping" is a questionable one in the first
place while still running in boot services context. Cc-ing the Arm
maintainers for possible input.)

Jan


From xen-devel-bounces@lists.xenproject.org Wed Apr 22 06:53:39 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 22 Apr 2026 06:53:39 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1289905.1569579 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wFRSs-0000E1-0v; Wed, 22 Apr 2026 06:53:38 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1289905.1569579; Wed, 22 Apr 2026 06:53: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 1wFRSr-0000Dp-UL; Wed, 22 Apr 2026 06:53:37 +0000
Received: by outflank-mailman (input) for mailman id 1289905;
 Wed, 22 Apr 2026 06:53:36 +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 1wFRSq-0000Dj-2R
 for xen-devel@lists.xenproject.org; Wed, 22 Apr 2026 06:53:36 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wFRSp-001yLh-FI
 for xen-devel@lists.xenproject.org; Wed, 22 Apr 2026 08:53:35 +0200
Received: from [10.42.69.5] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <Michal.Orzel@amd.com>)
 id 69e8704e-e002-0a2a0a5209dd-0a2a45059d0c-46
 for <xen-devel@lists.xenproject.org>; Wed, 22 Apr 2026 08:53:35 +0200
Received: from [52.101.85.16]
 (helo=BYAPR05CU005.outbound.protection.outlook.com)
 by tlsNG-c201ff.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.1)
 (envelope-from <Michal.Orzel@amd.com>)
 id 69e8706d-aaa8-0a2a45050019-34655510a518-3
 for <xen-devel@lists.xenproject.org>; Wed, 22 Apr 2026 08:53:34 +0200
Received: from CH2PR12CA0015.namprd12.prod.outlook.com (2603:10b6:610:57::25)
 by DM4PR12MB7575.namprd12.prod.outlook.com (2603:10b6:8:10d::9) with
 Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9846.18; Wed, 22 Apr
 2026 06:53:28 +0000
Received: from CH1PEPF0000AD7A.namprd04.prod.outlook.com
 (2603:10b6:610:57:cafe::d7) by CH2PR12CA0015.outlook.office365.com
 (2603:10b6:610:57::25) with Microsoft SMTP Server (version=TLS1_3,
 cipher=TLS_AES_256_GCM_SHA384) id 15.20.9791.48 via Frontend Transport; Wed,
 22 Apr 2026 06:53:28 +0000
Received: from satlexmb07.amd.com (165.204.84.17) by
 CH1PEPF0000AD7A.mail.protection.outlook.com (10.167.244.59) with Microsoft
 SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id
 15.20.9846.18 via Frontend Transport; Wed, 22 Apr 2026 06:53:28 +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.17; Wed, 22 Apr
 2026 01:53:27 -0500
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.17; Wed, 22 Apr
 2026 01:53:27 -0500
Received: from [10.71.194.215] (10.180.168.240) by satlexmb07.amd.com
 (10.181.42.216) with Microsoft SMTP Server id 15.2.2562.17 via Frontend
 Transport; Wed, 22 Apr 2026 01:53:26 -0500
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@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=JKBqO6jEAD0GNV7B98jmRHr0JFY2BFJw3WzTyyozOhz5GMWqe6vuHtWlY1LJYYHKNYcwGwnEOsSR+HJkRza+2Q8HLJqMD9VDwi+m39h47kjsdWeJ4t1dguOTbrfjo+wxuDdSpW3MFoBoJpStNqjrzxw0/uxr7RehOwXwXlhUXFg+NTyrqKfZELoj9GWRjhznw14YoZZKe9G928rbaDEofzKJn8cgEu+yGsUhQuNA88abKas44xuIcpTT0XI6pc0swjvnTui/JTgsQeqsoz1XAAuO7nEtinmABmWYXZSTxSV7w4n8lJVfSHFdDb7zJCNo4ng3hC6dmL7NDXKfDFB+MQ==
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com;
 s=arcselector10001;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1;
 bh=2poxzXF0QQW3drCBiF/ropyfqrjlnZAVpDc9od2pzNQ=;
 b=O7NRwG2xfhRNODhfgj2nxp53kOToa22uWeNheLv4MVz1oNNOLI9mAowO/JRDwgUF+R/ID8AZBxax++mUuV2+QbdYVKMp0WlqGwZmWSYlOiUWI55cHG0SafWSzHht59AQwHbkNVNxnHRiDMYx9kWjxSGfXBtWtoqSx7FbXxNH/Z6q3Zz9ghrr1HQNI5gcQciZcYu7rTYR/HE8mG6JA2fZ7pyiWe2KGVJCzW4oFZXoxN/9vsCxF7JeBAMs+IbMlLTq5iXPnZUIi965pimgFBFoknBJBw8aBf8rL3BWn5ZLt/bmhQs/ZhprATgoQWOC4Oxd0/yCXS8rq1yknyKRTvLcZQ==
ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass (sender ip is
 165.204.84.17) smtp.rcpttodomain=xen.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=2poxzXF0QQW3drCBiF/ropyfqrjlnZAVpDc9od2pzNQ=;
 b=DrBot6auItuk3tCLymxbb56wftj/7u1f0W+W+aX14PsgYkcUOod6jDEBS6v9KTN77kmoqtSsKLRObDprJEl4RDqCCsr7I4WyuffDl2EWVsEC02Cl5qgFWgHOLkFHsECzOD7yxfudPisFu5fv5hnOf+HB9VeGQ5dYH0Sf76JbBj0=
X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 165.204.84.17)
 smtp.mailfrom=amd.com; dkim=none (message not signed)
 header.d=none;dmarc=pass action=none header.from=amd.com;
Received-SPF: Pass (protection.outlook.com: domain of amd.com designates
 165.204.84.17 as permitted sender) receiver=protection.outlook.com;
 client-ip=165.204.84.17; helo=satlexmb07.amd.com; pr=C
Message-ID: <c43db15c-8cef-4079-8604-80e295e738e5@amd.com>
Date: Wed, 22 Apr 2026 08:53:20 +0200
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH] xen/arm64: flushtlb: Optimize
 ARM64_WORKAROUND_REPEAT_TLBI
To: Julien Grall <julien@xen.org>, <xen-devel@lists.xenproject.org>
CC: Stefano Stabellini <sstabellini@kernel.org>, Bertrand Marquis
	<bertrand.marquis@arm.com>, Volodymyr Babchuk <Volodymyr_Babchuk@epam.com>,
	<Mark.Rutland@arm.com>
References: <20260414081124.48741-1-michal.orzel@amd.com>
 <b249c55a-6982-4b9f-a0fa-2a6bac3da25e@xen.org>
From: "Orzel, Michal" <michal.orzel@amd.com>
Content-Language: en-US
In-Reply-To: <b249c55a-6982-4b9f-a0fa-2a6bac3da25e@xen.org>
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: 7bit
X-EOPAttributedMessage: 0
X-MS-PublicTrafficType: Email
X-MS-TrafficTypeDiagnostic: CH1PEPF0000AD7A:EE_|DM4PR12MB7575:EE_
X-MS-Office365-Filtering-Correlation-Id: 07d4768b-f41b-4e0e-6294-08dea03bdb94
X-MS-Exchange-SenderADCheck: 1
X-MS-Exchange-AntiSpam-Relay: 0
X-Microsoft-Antispam:
	BCL:0;ARA:13230040|82310400026|1800799024|376014|36860700016|18002099003|22082099003|56012099003;
X-Microsoft-Antispam-Message-Info:
	33+EEMpdU6409SxkMJwsEUgxykJOGp9ENqIRNocmYfkehlshg236DwAbN5zm4RbYS+Vpsvo5ndgpuEwrtvGVHN0ku7me4BP6SWgg8Jci6gnU2YApk7fMgL9Hc0whHCZRvoAPE+PNJYIU2r9FTw9dDWwg968pY0yYQ/VbtAWRAOHzP75Snm5jiq1wv1y4T5N495+qYSviy2Yb0PIpVzY9tBsN6QpVXG9cw0RxEyQAFRt0fQLU4jY0mAFRjtbPLy/iT5somSEeB6FoelR4ucV5UhkaNkO6reuShVHRhpo5nAX9F24uCEkoBqTuhNtKnEYNZYHeuhOmzqTqw3mLwjFSrliI2yLMjazLZctsUeTbtZAp3NkznZ3lxizKJGOkhtL22W93qcp+o6dIvmmaI2pap4ZVykvi32suBPHxDiRJbfc8ZjGdLTykiNG+F95VkJuNWyu0Cv3nYg4VXN7UkIiqCKbpIpHKhl3viB1T+9Roz4rvkuRLAidhXAIlJqhUvh05bPtcclaP75ugX4ZIlP4h+bAtpUSQ83M+CoEl00t4RouaA9ooshJ9aFE2xjtOAHYKnn7GZWYVpoC/uEQINV8myUJYyB+vdLdYGbKFylwenmSD7pZsXYSCmsmNPRjmz/XpU5JN2hcZj5Ei6I0m0O2A9CmqDaGyH95/xH253BxaON3YjCraV3wNNara3VgUDmIAQXPybkp4ssaFH8n7Qk9iVju44s4N3IdgHeGh8SZX5rhVhAcfhgZF+8gCURAyF0vFKNqRXYQdXvIY1kmGxyFS6g==
X-Forefront-Antispam-Report:
	CIP:165.204.84.17;CTRY:US;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:satlexmb07.amd.com;PTR:InfoDomainNonexistent;CAT:NONE;SFS:(13230040)(82310400026)(1800799024)(376014)(36860700016)(18002099003)(22082099003)(56012099003);DIR:OUT;SFP:1101;
X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1
X-MS-Exchange-AntiSpam-MessageData-0:
	CjVP4BwPelvTPXQUh4eopOF6Gj2RS+nhPNuxYHISgqGAw35GmsHp/mqDHZ5HeaCF+uF2lNh+Kf33H7gRuwXfAJX5aOMkcDBh6JYbpvBZfrcyM+vqTvT2iuNZm5A1kJeLNFm/P3ISQvo6/jUJ2S6FfH/RO2pEAc3U/yNiIo68nSwZG7nCfg3uk2InGvhf2HLeBXX7oBPpUbDrQcHD0PuAJ9i0/etatGeznen38Klqb9rfnUZYbwW3eSZR2+5OU+LCNagzF1CkEFn+1F3GmnaCFHDv4uRt9T9QaTVdUt6YZA8d9nQB5O+Qy25+T0ZoJzlPO5TfnGdDU0fqsZtnDlzus/yz7TtjsPij0R6NeQqV2H9gZiOpiPl5UyKE3wbZy10xKo9sz6Fi58hkwKl4rDFZFGikiUvgYaAtJ1adWIK+ulMT+eqA9kgktVMuQ2dZlVto
X-OriginatorOrg: amd.com
X-MS-Exchange-CrossTenant-OriginalArrivalTime: 22 Apr 2026 06:53:28.0348
 (UTC)
X-MS-Exchange-CrossTenant-Network-Message-Id: 07d4768b-f41b-4e0e-6294-08dea03bdb94
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:
	CH1PEPF0000AD7A.namprd04.prod.outlook.com
X-MS-Exchange-CrossTenant-AuthAs: Anonymous
X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem
X-MS-Exchange-Transport-CrossTenantHeadersStamped: DM4PR12MB7575
X-purgate-ID: tlsNG-c201ff/1776840815-E01A9443-91EEF6B0/0/0
X-purgate-type: clean
X-purgate-size: 1201



On 21/04/2026 10:59, Julien Grall wrote:
> Hi Michal,
> 
> On 14/04/2026 09:11, Michal Orzel wrote:
>> Rework the workaround logic as follows:
>>   - add TLB_HELPER_LOCAL() to be used for local TLB ops without a
>>     workaround,
>>   - modify TLB_HELPER() workaround to use tlbi vale2is, xzr as a second
>>     TLB,
>>   - drop TLB_HELPER_VA(). It's used only by __flush_xen_tlb_one_local
>>     which is local and does not need workaround and by
>>     __flush_xen_tlb_one. In the latter case, since it's used in a loop,
>>     we don't need a workaround in the middle. Add __tlb_repeat_sync with
>>     a workaround to be used at the end after DSB and before final ISB,
>>   - TLBI VALE2IS passing XZR is used as an additional TLBI. While there is
>>     an identity mapping there, it's used very rarely. The performance
>>     impact is therefore negligible. If things change in the future, we
>>     can revisit the decision.
> 
> Can you document the use of 0 in arch/arm/include/asm/mmu/layout.h as well?
Ok, will do on commit.

> 
>>
>> Signed-off-by: Michal Orzel <michal.orzel@amd.com>
> 
> Reviewed-by: Julien Grall <jgrall@amazon.com>
Thanks.

~Michal



From xen-devel-bounces@lists.xenproject.org Wed Apr 22 07:01:29 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 22 Apr 2026 07:01:29 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1289914.1569588 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wFRaF-0002W1-OP; Wed, 22 Apr 2026 07:01:15 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1289914.1569588; Wed, 22 Apr 2026 07:01: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 1wFRaF-0002Vu-LT; Wed, 22 Apr 2026 07:01:15 +0000
Received: by outflank-mailman (input) for mailman id 1289914;
 Wed, 22 Apr 2026 07:01: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 1wFRaD-0002Vo-OJ
 for xen-devel@lists.xenproject.org; Wed, 22 Apr 2026 07:01:13 +0000
Received: from xenbits.xenproject.org ([104.239.192.120])
 by mail.xenproject.org with esmtp (Exim 4.96)
 (envelope-from <julien@xen.org>) id 1wFRaD-00EB7T-1F;
 Wed, 22 Apr 2026 07:01:13 +0000
Received: from [2a02:8012:3a1:0:a171:8b59:6670:784a]
 by xenbits.xenproject.org with esmtpsa (TLS1.3) tls
 TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (Exim 4.96)
 (envelope-from <julien@xen.org>) id 1wFRaD-00F4Ig-09;
 Wed, 22 Apr 2026 07:01: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>
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=Dz4gErmCIIkM30bY14XeUH7vMfnqt1t5br/PitpWIV8=; b=gRd3lBJtahMFQ+Wgj0i75p7Kd3
	GxEh+AmdSUfYgAxlv4P0SQS3s8aQfhYDKlbFosqWIDWnnAJHMIF4iT0ZqtKRSB5jfP/5t0r+lE/Zh
	Imi4Go8/L3pS+y9QPeHXlV+ahXWaAh0ddeHd2QAwh/BtH8gdWHhanJQp3OCap719vofQ=;
Message-ID: <6a43af84-ca86-41f2-b58d-57be5baf49de@xen.org>
Date: Wed, 22 Apr 2026 08:01:09 +0100
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH] xen/arm: skip holes in physical address space when
 setting up frametable
Content-Language: en-GB
To: Michal Orzel <michal.orzel@amd.com>, xen-devel@lists.xenproject.org
Cc: Stefano Stabellini <sstabellini@kernel.org>,
 Bertrand Marquis <bertrand.marquis@arm.com>,
 Volodymyr Babchuk <Volodymyr_Babchuk@epam.com>,
 Luca Fancellu <Luca.Fancellu@arm.com>
References: <20260417091124.39552-1-michal.orzel@amd.com>
From: Julien Grall <julien@xen.org>
In-Reply-To: <20260417091124.39552-1-michal.orzel@amd.com>
Content-Type: text/plain; charset=UTF-8; format=flowed
Content-Transfer-Encoding: 7bit

Hi Michal,

On 17/04/2026 10:11, Michal Orzel wrote:
> Refactor setup_frametable_mappings() into init_frametable(), modeled
> after x86's implementation. Instead of mapping one contiguous frametable
> covering ram_start to ram_end (including holes), iterate the
> pdx_group_valid bitmap to allocate and map frametable memory only for
> valid PDX groups, skipping gaps in the physical address space. At the
> moment we don't really take into account pdx_group_valid bitmap.
> 
> This reduces memory consumption on systems with sparse RAM layouts by
> not allocating frametable entries for non-existent memory regions.
> 
> A file-local pdx_to_page() override is needed because the generic macro
> in xen/include/xen/pdx.h does not account for ARM's non-zero
> frametable_base_pdx.

Can you provide a bit more details? I am a bit concerned that this could 
result to subttle bug in the future if code within mm.c is expecting the 
original behavior. It would be preferable if the change is either for 
everyone on Arm or the function is renamed to avoid any clash.

[...]

> +void __init init_frametable(paddr_t ram_start)
> +{
> +    unsigned int sidx, nidx, max_idx;
>   
>       /*
>        * The size of paddr_t should be sufficient for the complete range of
> @@ -26,24 +47,34 @@ void __init setup_frametable_mappings(paddr_t ps, paddr_t pe)
>       BUILD_BUG_ON((sizeof(paddr_t) * BITS_PER_BYTE) < PADDR_BITS);
>       BUILD_BUG_ON(sizeof(struct page_info) != PAGE_INFO_SIZE);
>   
> -    if ( frametable_size > FRAMETABLE_SIZE )
> -        panic("The frametable cannot cover the physical region %#"PRIpaddr" - %#"PRIpaddr"\n",
> -              ps, pe);
> +    max_idx = DIV_ROUND_UP(max_pdx, PDX_GROUP_COUNT);
> +    frametable_base_pdx = mfn_to_pdx(maddr_to_mfn(ram_start));
>   
> -    frametable_base_pdx = mfn_to_pdx(maddr_to_mfn(ps));
> -    /* Round up to 2M or 32M boundary, as appropriate. */
> -    frametable_size = ROUNDUP(frametable_size, mapping_size);
> -    base_mfn = alloc_boot_pages(frametable_size >> PAGE_SHIFT, 32<<(20-12));
> +    /*
> +     * pdx_to_page(pdx_s) in init_frametable_chunk must be page-aligned
> +     * for map_pages_to_xen(). Aligning to PDX_GROUP_COUNT guarantees this
> +     * because PDX_GROUP_COUNT * sizeof(page_info) is always a multiple of
> +     * PAGE_SIZE by construction.
> +     */
> +    frametable_base_pdx = ROUNDDOWN(frametable_base_pdx, PDX_GROUP_COUNT);
>   
> -    rc = map_pages_to_xen(FRAMETABLE_VIRT_START, base_mfn,
> -                          frametable_size >> PAGE_SHIFT,
> -                          PAGE_HYPERVISOR_RW | _PAGE_BLOCK);
> -    if ( rc )
> -        panic("Unable to setup the frametable mappings.\n");
> +    if ( (max_pdx - frametable_base_pdx) > FRAMETABLE_NR )
> +        panic("Frametable too small\n");
> +
> +    for ( sidx = (frametable_base_pdx / PDX_GROUP_COUNT); ; sidx = nidx )
> +    {
> +        unsigned int eidx;
> +
> +        eidx = find_next_zero_bit(pdx_group_valid, max_idx, sidx);
> +        nidx = find_next_bit(pdx_group_valid, max_idx, eidx);
> +
> +        if ( nidx >= max_idx )
> +            break;
> +
> +        init_frametable_chunk(sidx * PDX_GROUP_COUNT, eidx * PDX_GROUP_COUNT);

The function will do a round-up the mapping to either a 2MiB or 32MiB 
aligned size. This means we could potentially cover the previous mapped 
region or the next one. I can't seem to find any code to cover this 
use-case. What did I miss?

Cheers,

-- 
Julien Grall



From xen-devel-bounces@lists.xenproject.org Wed Apr 22 07:16:06 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 22 Apr 2026 07:16:06 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1289923.1569597 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wFRoW-0004x7-Ty; Wed, 22 Apr 2026 07:16:00 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1289923.1569597; Wed, 22 Apr 2026 07:16: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 1wFRoW-0004wz-RP; Wed, 22 Apr 2026 07:16:00 +0000
Received: by outflank-mailman (input) for mailman id 1289923;
 Wed, 22 Apr 2026 07:16:00 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <jbeulich@suse.com>) id 1wFRoW-0004wt-4e
 for xen-devel@lists.xenproject.org; Wed, 22 Apr 2026 07:16:00 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wFRoV-00Ecjq-HS
 for xen-devel@lists.xenproject.org; Wed, 22 Apr 2026 09:15:59 +0200
Received: from [10.42.69.7] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <jbeulich@suse.com>)
 id 69e875af-e002-0a2a0a5209dd-0a2a4507b1c8-2
 for <xen-devel@lists.xenproject.org>; Wed, 22 Apr 2026 09:15:59 +0200
Received: from [209.85.221.52] (helo=mail-wr1-f52.google.com)
 by tlsNG-ef75cf.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.1)
 (envelope-from <jbeulich@suse.com>)
 id 69e875af-229c-0a2a45070019-d155dd34a976-3
 for <xen-devel@lists.xenproject.org>; Wed, 22 Apr 2026 09:15:59 +0200
Received: by mail-wr1-f52.google.com with SMTP id
 ffacd0b85a97d-43d75312379so3776815f8f.1
 for <xen-devel@lists.xenproject.org>; Wed, 22 Apr 2026 00:15:59 -0700 (PDT)
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-43fe4e3a79esm45683595f8f.17.2026.04.22.00.15.58
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Wed, 22 Apr 2026 00:15:58 -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=google header.d=suse.com header.i="@suse.com" header.h="Content-Transfer-Encoding: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=1776842159; x=1777446959; darn=lists.xenproject.org;
        h=content-transfer-encoding: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;
        bh=N+9FqO6TkJwggBfMP1KZWhMRhDsZxtXZKwRr3GgLsbc=;
        b=YnbD121XE66IJvB5U/3oqdQtc1ErnRml78NwEVcMz3oL9wvsdCNpt8q7GxWyKVd+AG
         QdZGifNlnmlydyvoWCLvO0ovQ8Olwb3gO0JZ8W2wJKkuYaL30l9P2Sv6xkjNpsMa9mkn
         1Tx5P5gRbTSGChHfnpy6HqylR11dHrfFojCuPM/97IWpxuRWCp0s2Qjje9ji2m5Wlrmi
         lob7d3GI0nECt/zyEqUkmDkWXHAIYo0WMrhDXISBhyTXLZMzvLFKQXiJn9qUan69mF2l
         kLst1eicS/w2cKhBvZECF6RMWFRwx7a+19TX1vM1CWqMgBylVMBzKn6BpYAREJkhj3dL
         ALng==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20251104; t=1776842159; x=1777446959;
        h=content-transfer-encoding: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;
        bh=N+9FqO6TkJwggBfMP1KZWhMRhDsZxtXZKwRr3GgLsbc=;
        b=G0rRrJUcgc5Y/mEV6EkHG5MYC969mo6ZOaTKPMcc7OJVBcTE0vqR+WRITLt4QmJReg
         fWcvucITbtI/a7PNgSmnVGrwi2cJzf1vrG+nnOYiW9n50HpX7NIjD0qZS4V68HSDPxQf
         cHWCTMr2apyxlt7yMsH2/+6OGe3eIULmHCUn5bphw+3fZ/1VVdiCJ42Z7e6kB197/sC4
         JqNgmOFl3chxtlWudOJS7BlX6YnEuy/zQcGVcLndfdpej5Btyw/D8rfRUKlF7J9aNdzL
         HsYCNiBRrYMYTWrebWl9RNble7XCILNZHSwwbydEYtombrtHoGAUwssmZj52mw7aq7Ec
         wYig==
X-Forwarded-Encrypted: i=1; AFNElJ/9Y4sJPlNokTuSwot4wDB0PQBptIYNYOJxnlnd6eNMCeXXx6qAvCHTz8EZfxc39H1L0JsKh1D4ig0=@lists.xenproject.org
X-Gm-Message-State: AOJu0YyaBcOD4/iAZtxgNVHCi9C2Zy1tRCmrFErOSmY0k0qYiTSX3uFq
	iTHMXvqfBW5dxLOLi9mkX+Kq+KRjry/kMAPh/q2IVuyP62Of9DetA364IHolPt2WYXFW2LUg69E
	O6lMy8Q==
X-Gm-Gg: AeBDies8A4yD/JaIymz+WZlHRegV4IgTiBK0FVJnkIxj/OuJ8HyaN2zhGxVaQYAwD9c
	Mj6FFO22fTxnNDAdOtXrjeSqZehLC6IzJ7WcGZ7o407f1mWa1ZTJtfngT+saq0cNFc9SHsVakY6
	V68osLX7Yafm5kbyyIhL5xMj88WZ70lXuZ5kAwbZak1qe9lv8BZIoCyNtBJk2JY7IASlDdcxNz0
	iRz80CvLt/MSW3+3sVmd2U6fY+6CcNv3Gs+KW9H4/HYPA3v5A6nmSe6d269ufiya5subEZhzi31
	i6r/i/FAhAcgk6tKJ9+f8TpgZY7cjIFo3/zEjM8Qmwaswvnyg54HZqbw7sTsIbR9lFAJ3Q5ERvB
	rJ2sNFh55dblNsDIMQV+oCuZdWKHIq5lqoRjhyYeEiwRkfYBFPx1SCAplqcNQ0LtaSi/biamglV
	nvyU6pFHipu/+O4OswLDjzi4x/JgpMDu7r2KHU7mszL0aKJh25xrbNjy0e/xT2GNi1h8kll0B8T
	CkDiq2wBvv6vBkXjKxqln/rSUffb09Jy34V
X-Received: by 2002:a05:6000:290c:b0:43d:772d:2b61 with SMTP id ffacd0b85a97d-43fe4073831mr31046438f8f.15.1776842158618;
        Wed, 22 Apr 2026 00:15:58 -0700 (PDT)
Message-ID: <bb1d52a4-c344-4653-b10f-0781c2900cb0@suse.com>
Date: Wed, 22 Apr 2026 09:15:56 +0200
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH] tools/xenpm: fix FreeBSD build
To: =?UTF-8?Q?Roger_Pau_Monn=C3=A9?= <roger.pau@citrix.com>
Cc: Anthony PERARD <anthony.perard@vates.tech>, xen-devel@lists.xenproject.org
References: <20260421153224.36368-1-roger.pau@citrix.com>
 <2204fbae-be5b-4f56-ad2a-cd5692db81cb@suse.com>
 <aeedB31aEBJb2Pa8@macbook.local>
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: <aeedB31aEBJb2Pa8@macbook.local>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
X-purgate-ID: tlsNG-ef75cf/1776842159-23D7FC48-71BAA9DA/0/0
X-purgate-type: clean
X-purgate-size: 1536

On 21.04.2026 17:51, Roger Pau Monné wrote:
> On Tue, Apr 21, 2026 at 05:35:57PM +0200, Jan Beulich wrote:
>> On 21.04.2026 17:32, Roger Pau Monne wrote:
>>> --- a/tools/misc/xenpm.c
>>> +++ b/tools/misc/xenpm.c
>>> @@ -1377,7 +1377,7 @@ static int fetch_dts_temp(xc_interface *xch, uint32_t cpu, bool package, int *te
>>>      {
>>>      case 0:
>>>          /* This CPU isn't online or can't query this MSR */
>>> -        errno = ENODATA;
>>> +        errno = ENODEV;
>>>          return -1;
>>
>> "No such device", however, isn't quite what we want to convey here. If no
>> better error code can be found that's available on FreeBSD and Linux, I'm
>> inclined to suggest that we stick to ENODATA where available.
> 
> Seems like a lot of complexity, for very limited usefulness.

What's complex about

#ifndef ENODATA
# define ENODATA ENODEV
#endif

(perhaps with a brief comment)?

>  The only
> usage of errno is to be printed in the error message, and for the
> purposes of this function ENODEV is already unique in the function, as
> ENODATA was.

Right, but "No data available" is more precise than "No such device".

> FWIW, I think ENODEV is not that far fetched: the CPU being offline
> or the MSR not being present seems like what you would convey by using
> ENODEV.

Yes, there is a connection. Hence I'm not outright opposed, yet I think
we can do better.

Formally Anthony is the maintainer of the file, so in a case like this
one maybe he ought to have the final say?

Jan


From xen-devel-bounces@lists.xenproject.org Wed Apr 22 08:05:03 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 22 Apr 2026 08:05:03 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1289948.1569608 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wFSZj-0006Eh-PR; Wed, 22 Apr 2026 08:04:47 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1289948.1569608; Wed, 22 Apr 2026 08:04: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 1wFSZj-0006Ea-Jk; Wed, 22 Apr 2026 08:04:47 +0000
Received: by outflank-mailman (input) for mailman id 1289948;
 Wed, 22 Apr 2026 08:04:46 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <jens.wiklander@linaro.org>) id 1wFSZi-0006EU-2B
 for xen-devel@lists.xenproject.org; Wed, 22 Apr 2026 08:04:46 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wFSZh-00A4dO-AF
 for xen-devel@lists.xenproject.org; Wed, 22 Apr 2026 10:04:45 +0200
Received: from [10.42.69.1] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <jens.wiklander@linaro.org>)
 id 69e88118-e002-0a2a0a5209dd-0a2a45019744-22
 for <xen-devel@lists.xenproject.org>; Wed, 22 Apr 2026 10:04:45 +0200
Received: from [209.85.161.54] (helo=mail-oo1-f54.google.com)
 by tlsNG-d62444.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.1)
 (envelope-from <jens.wiklander@linaro.org>)
 id 69e8811b-c1f2-0a2a45010019-d155a136b9de-3
 for <xen-devel@lists.xenproject.org>; Wed, 22 Apr 2026 10:04:44 +0200
Received: by mail-oo1-f54.google.com with SMTP id
 006d021491bc7-69485d0e4beso1132538eaf.3
 for <xen-devel@lists.xenproject.org>; Wed, 22 Apr 2026 01:04:44 -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=google header.d=linaro.org header.i="@linaro.org" header.h="Content-Transfer-Encoding:Cc:To:Subject:Message-ID:Date:From:In-Reply-To:References:MIME-Version"
ARC-Seal: i=1; a=rsa-sha256; t=1776845083; cv=none;
        d=google.com; s=arc-20240605;
        b=QeFhT7zu+TQ8SpWPQ2j2vkq5+wXfz3+w4ct/+k1jTFUW06cG+4ic0tPC+92S/AQmZU
         uapKZrdfVobxabZVHCZ/sFwxM5PevrYCMRp0dQWRiBSFmyxpOr2u15V8gsAnS/ZkYOAn
         tuugwVJPiXkjfHstxws7oI8BZhfZyyneJHVIMRH9bznJNASTpXBtAGoVoGelYgNsxEd8
         ho3e+3j+IATpjpVU0ip5E7gSbuuC0aNIuUc1YbZyV+bNIQGOrMTdN+4edD5q2eknY78J
         Rs2bJPSc6GX3ZqQ9l+RbHk8hlqf7V85DwFQaXWyciZ6Ofsc5nBePitXyaZ1t+Ufap96N
         TRNA==
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20240605;
        h=content-transfer-encoding:cc:to:subject:message-id:date:from
         :in-reply-to:references:mime-version:dkim-signature;
        bh=4rKad+UxzUkxCopKUoZk2Ve1GRQCNyIIC91C5R5IU0E=;
        fh=wNLC6Hyb5Ukz/ErppBRQBwv8vwa/OMsdh6R8bnNsiPU=;
        b=RtGFfiaf70Eey0klBuoJxeZBvIHzAD0u6097Rp4AEfY4ABeqKJbdfFGdfBBpr68tYQ
         W/mJeaHqKylpOn0bXuq+fR7sg5td5YxHo8k2oCIKcgd/NEP3drWAmHiHwVy1vgfQ8qon
         JpE8YlSI3WCGEf6/8xrOD/imQwoENXpYrG6QE4NqPkLJC4SUaOxCIHl9c2ZGG075Wqv0
         MZg5+VZCy4DKSyaoEK3KkHWDcIH2u2EY5d79KwHCkoNurdcHF4g56PigwZJKTY62AJ9b
         EhNvtIwlkcXLQtXFI5lQOeWiy8YGi5WJC8c362igNL8SqcN3HjSDGvOYOqIw1cvaPBj3
         7sHQ==;
        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=linaro.org; s=google; t=1776845083; x=1777449883; darn=lists.xenproject.org;
        h=content-transfer-encoding:cc:to:subject:message-id:date:from
         :in-reply-to:references:mime-version:from:to:cc:subject:date
         :message-id:reply-to;
        bh=4rKad+UxzUkxCopKUoZk2Ve1GRQCNyIIC91C5R5IU0E=;
        b=GirINLjg3ND9wQ4LYfS8hixUuEHeHbzvpW2akstVAj4w7WYb+1czViwg6zu7SCbrWw
         egnckGX2N8cqLmb8xHsypRDh+dnuaW6K4IjTym8P7tZoVQ7olHFuC83eY+9LMFI07xtm
         lWVBO7vXiyoIpqAyC5WU+691BX+GVEj9elSW+6mEZD25aATAuAGCo0weGHxNDWBnXdeY
         pk7uVLjezB3cq+OXuNuBRB8Foh+p7hHN//9xoqmNkxAq/0CacvLPBwDewzDbuPzpOKV3
         iw+uFVVu82fHboeGuHMG+s87KLKclmpA72FSBrLEeH+h7KK3kAnnFfYTLRXWra3iz+EV
         8e5A==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20251104; t=1776845083; x=1777449883;
        h=content-transfer-encoding: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;
        bh=4rKad+UxzUkxCopKUoZk2Ve1GRQCNyIIC91C5R5IU0E=;
        b=lfjrttmi4kKAbrPDjN5ndbQUfbumMZJVPZVTU6IGGmw4KTb82S7oPOI4bWEn3jsKp7
         VL5Vf5CUyN91PXJuS+/rIiScuCW0zT4VmJ0lIHvfmzjCok6OmSYEW215lEojJWNpQqAI
         VJ4Lx/PyVWbMKfHBTTXLlmqiQ1YDS4bls1m0MFCx/7O21uAVOIceC9oV80s6v3qBDGr2
         Eb0+lHZn8prnNiLD4eMbcrMYAQM5eqn9IfQuJEsubNwN+y42bGt9Iyu7fYKWIzlywscV
         Pr/9zYEZZ5vnxRuPBhT+WR5wYdlrrUhE/T2KS5upPBy00K9XJRW5yLhkvcNFIHxmhDJe
         gvbw==
X-Gm-Message-State: AOJu0Ywkz0RePUWkLMbs/tYkqA0icqYbyGPraL4XNuEFP2ilwvt46Zjh
	FbqnkwovCl0FIKYPgaNHxCQePXF7vLRKnk6UgZKXO6yChdoWch7SyQxvWb/6QLWkvhjW/c+9zwC
	nK4lWXMZnmlntw5Y25qBRnc6134sEK4B5rBYA/bkKwQ==
X-Gm-Gg: AeBDiev6x64eaDrQDzTHAHSN70wrUcpz6UVh6Rjgg4sYn/v38t2wEZd+/JYykJ5V4Zo
	u/EHJ9YltLBQRRhoqF4AqKQ+7CNzqf4f+KcE9xAa3KQiRwU1seJTMhkOgwi8DeOWO3G6XA3ajB6
	Xih+AuIBlwC6AzHwoESOQzlLkmqhP545QwCxnrlpUgIsAFtXTUwZOiu6WXCCNrM/5CQtmobA1pw
	41ASt0xEXO/Yi56BPOdXNjKEvrxTSD+0O3zgVt1y10thjJklEzJbVyuEDcl7H/yoAkO3NXU1gKE
	6ex6wkj32RKBaVbLDU69PnTnyT+GZKAP89hTbWe032N5JulUVziRJElS9QE=
X-Received: by 2002:a05:6820:4704:b0:683:70eb:2676 with SMTP id
 006d021491bc7-69462e21612mr8082241eaf.5.1776845083075; Wed, 22 Apr 2026
 01:04:43 -0700 (PDT)
MIME-Version: 1.0
References: <cover.1776266307.git.bertrand.marquis@arm.com> <a755456257eff6e4c5bd042ce4b0edff8f6630c1.1776266307.git.bertrand.marquis@arm.com>
In-Reply-To: <a755456257eff6e4c5bd042ce4b0edff8f6630c1.1776266307.git.bertrand.marquis@arm.com>
From: Jens Wiklander <jens.wiklander@linaro.org>
Date: Wed, 22 Apr 2026 10:04:31 +0200
X-Gm-Features: AQROBzC7bB4FQig0mzTxUpS0in5VDMjc43F87Gjf8I43gViVqd5-DG2514z0Syo
Message-ID: <CAHUa44FwLG1GZwLX4E1v-73=H2RLv=whpDV5cJ3h6oqHyGOqvw@mail.gmail.com>
Subject: Re: [PATCH 1/6] xen/arm: ffa: Fix NPI injection when vcpu0 is offline
To: Bertrand Marquis <bertrand.marquis@arm.com>
Cc: xen-devel@lists.xenproject.org, 
	Volodymyr Babchuk <volodymyr_babchuk@epam.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-d62444/1776845085-B5468FF4-383709DD/0/0
X-purgate-type: clean
X-purgate-size: 3712

Hi Bertrand,

On Fri, Apr 17, 2026 at 3:41=E2=80=AFPM Bertrand Marquis
<bertrand.marquis@arm.com> wrote:
>
> RX-buffer-full notifications currently inject the notification pending
> interrupt through vcpu0 only. Secure notification delivery already walks
> the domain's online vCPUs, but the RX-buffer-full path does not. When
> vcpu0 is offline, the notification remains pending and the guest never
> receives it.
>
> Extract the common notification injection path and reuse it from
> ffa_raise_rx_buffer_full(). The shared helper delivers the global
> notification to the first online vCPU and keeps the existing ratelimited
> debug message when none are online.
>
> Functional impact: RX-buffer-full notifications are delivered even when
> vcpu0 is offline.
>
> Fixes: 3935c705688e ("xen/arm: ffa: Add buffer full notification support"=
)
>
> Signed-off-by: Bertrand Marquis <bertrand.marquis@arm.com>
> ---
>  xen/arch/arm/tee/ffa_notif.c | 45 ++++++++++++++++++++----------------
>  1 file changed, 25 insertions(+), 20 deletions(-)

Looks good:
Reviewed-by: Jens Wiklander <jens.wiklander@linaro.org>

Cheers,
Jens

>
> diff --git a/xen/arch/arm/tee/ffa_notif.c b/xen/arch/arm/tee/ffa_notif.c
> index 186e72641237..07bc5cb3a430 100644
> --- a/xen/arch/arm/tee/ffa_notif.c
> +++ b/xen/arch/arm/tee/ffa_notif.c
> @@ -19,6 +19,29 @@
>  static bool __ro_after_init fw_notif_enabled;
>  static unsigned int __ro_after_init notif_sri_irq;
>
> +static void inject_notif_pending(struct domain *d)
> +{
> +    struct vcpu *v;
> +
> +    /*
> +     * Since we're only delivering global notification, always
> +     * deliver to the first online vCPU. It doesn't matter
> +     * which we chose, as long as it's available.
> +     */
> +    for_each_vcpu(d, v)
> +    {
> +        if ( is_vcpu_online(v) )
> +        {
> +            vgic_inject_irq(d, v, GUEST_FFA_NOTIF_PEND_INTR_ID, true);
> +            return;
> +        }
> +    }
> +
> +    if ( printk_ratelimit() )
> +        printk(XENLOG_G_DEBUG "%pd: ffa: can't inject NPI, all vCPUs off=
line\n",
> +               d);
> +}
> +
>  int32_t ffa_handle_notification_bind(struct cpu_user_regs *regs)
>  {
>      struct domain *d =3D current->domain;
> @@ -190,7 +213,7 @@ void ffa_raise_rx_buffer_full(struct domain *d)
>
>      ACCESS_ONCE(ctx->notif.buff_full_pending) =3D true;
>      if ( !test_and_set_bool(ctx->notif.vm_pending) )
> -        vgic_inject_irq(d, d->vcpu[0], GUEST_FFA_NOTIF_PEND_INTR_ID, tru=
e);
> +        inject_notif_pending(d);
>  }
>  #endif
>
> @@ -238,7 +261,6 @@ static void notif_vm_pend_intr(uint16_t vm_id)
>  {
>      struct ffa_ctx *ctx;
>      struct domain *d;
> -    struct vcpu *v;
>
>      /*
>       * vm_id =3D=3D 0 means a notifications pending for Xen itself, but
> @@ -277,24 +299,7 @@ static void notif_vm_pend_intr(uint16_t vm_id)
>       * it.
>       */
>      ACCESS_ONCE(ctx->notif.secure_pending) =3D true;
> -
> -    /*
> -     * Since we're only delivering global notification, always
> -     * deliver to the first online vCPU. It doesn't matter
> -     * which we chose, as long as it's available.
> -     */
> -    for_each_vcpu(d, v)
> -    {
> -        if ( is_vcpu_online(v) )
> -        {
> -            vgic_inject_irq(d, v, GUEST_FFA_NOTIF_PEND_INTR_ID,
> -                            true);
> -            break;
> -        }
> -    }
> -    if ( !v && printk_ratelimit() )
> -        printk(XENLOG_G_DEBUG "%pd: ffa: can't inject NPI, all vCPUs off=
line\n",
> -               d);
> +    inject_notif_pending(d);
>
>  out_unlock:
>      rcu_unlock_domain(d);
> --
> 2.53.0
>


From xen-devel-bounces@lists.xenproject.org Wed Apr 22 08:15:30 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 22 Apr 2026 08:15:30 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1289962.1569617 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wFSk1-00009y-Nt; Wed, 22 Apr 2026 08:15:25 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1289962.1569617; Wed, 22 Apr 2026 08:15: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 1wFSk1-00009q-KE; Wed, 22 Apr 2026 08:15:25 +0000
Received: by outflank-mailman (input) for mailman id 1289962;
 Wed, 22 Apr 2026 08:15:23 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <jbeulich@suse.com>) id 1wFSjz-00009j-Ta
 for xen-devel@lists.xenproject.org; Wed, 22 Apr 2026 08:15:23 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wFSjy-006VIK-RT
 for xen-devel@lists.xenproject.org; Wed, 22 Apr 2026 10:15:22 +0200
Received: from [10.42.69.10] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <jbeulich@suse.com>)
 id 69e88396-e002-0a2a0a5209dd-0a2a450ad710-2
 for <xen-devel@lists.xenproject.org>; Wed, 22 Apr 2026 10:15:22 +0200
Received: from [209.85.221.53] (helo=mail-wr1-f53.google.com)
 by tlsNG-4011c0.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.1)
 (envelope-from <jbeulich@suse.com>)
 id 69e8839a-56b3-0a2a450a0019-d155dd35d498-3
 for <xen-devel@lists.xenproject.org>; Wed, 22 Apr 2026 10:15:22 +0200
Received: by mail-wr1-f53.google.com with SMTP id
 ffacd0b85a97d-43cfbd17589so4011213f8f.0
 for <xen-devel@lists.xenproject.org>; Wed, 22 Apr 2026 01:15:22 -0700 (PDT)
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-43fe4e46898sm45663054f8f.27.2026.04.22.01.15.21
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Wed, 22 Apr 2026 01:15:21 -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=google header.d=suse.com header.i="@suse.com" header.h="Content-Transfer-Encoding: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=1776845722; x=1777450522; darn=lists.xenproject.org;
        h=content-transfer-encoding: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;
        bh=VWPCivG1FlUDJ/3rHdEGYd3HI1iN1xWTyaPCQgaTcSs=;
        b=ZaaIYt2MgW1IRq5IedErOERsu+p9cOrzTJeG1PA7pZSI1Y1vXCWX17Xp/EXDqQ840e
         x0C5pEPVmOhxo63OBjLhzH3aNaX8ERUOFpYMqJu3w2Z9gdBI9C4aN2tCpHEwuP+Xi06U
         IRzJibCZgzakdSP/xe9H3d40O9PCrusS6sGob45FxPgHSZypFqJVlrLsyNqyfQa/HO8i
         ZnqTKm//PsLMGcx7xlWa7/i6Ew1LLM2KzCQY2fj8DO3SqP60BL9XHprVyMFKuDI+/Smz
         XI6TYSlgupJq5aW4V9xsps0E+b/C4OvSD0SXqT667doLFK2y62ivBiMU4FBkif2TyKIX
         x0bA==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20251104; t=1776845722; x=1777450522;
        h=content-transfer-encoding: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;
        bh=VWPCivG1FlUDJ/3rHdEGYd3HI1iN1xWTyaPCQgaTcSs=;
        b=KOsqAtCczadzW2fKpsbbKwC5821vu1h6pp4j0CIehLd+0hLOiVykAz6HJzqnzpcm5N
         UgIWji+XyWtipsPXjYTWQ1+Ge2Ky2mM8+s3K4NFlGii+UveDSjomkAeXw7qaMXxRZEHh
         +K0vmeW7RdL8jvmp3ty/vIjYrNh16nS7W4gnTTGloTsFt1KjupB/oJ3G+sf2ehdWnbSd
         6Rrzfcp5wF9ajQo5EydV6oo0tXYiNSMptIY0FU5T4u5depAPZowJi9gISOMK15A3Rio3
         0YUv2az/EO3nmEW6tSLYilUNQUpn+G0oj//AwPvYLK3Q9umLPbtIxcspabjrMWZ6AMvE
         nMNw==
X-Forwarded-Encrypted: i=1; AFNElJ+BIL6vwg9WiP/hrUtihUx68RrNbyBxztPWSpFGzNo0p15VmHAAV5NsuxwDoeJWEXSIZA4fj3Bnk04=@lists.xenproject.org
X-Gm-Message-State: AOJu0Yw3Y4PbwF6U4C/z9C1l0bQoVienPFRz9ia2WJ0h2oN8eYKukFFf
	ATNcm/7m3tXNjh5FHgOMS6Y1Qb2MjPmZJA2R1NJY9uIzzOnZnakf0Zatt/XAnHAdbw==
X-Gm-Gg: AeBDieuSYqZC52yxVPpLIfNd1W4k7NWnvmNcmf2lJRzmsyOo0noEkTK9rG3s/9eVEaN
	a5UIlg0tPGFagGNvs29jQCj1rfhe5vYynrwdWJN1M5XXnKlgk34X8HQsUuS+1GbZODG88nOO8Hc
	69dqBJA40PDD6P8mSTBNZksQn5Rt31LAn30iiei5Y6NsYBVDewaDnU7sGyt6wpVXNPKRiCR2AjJ
	twvumh9m68bQKPuTbprkDHtO+/t4jGxhM0ox1BRiSspDALTsV7wN7VnEHDqbORG1pNnzOz3F37d
	tHaEbrme5o9reB6rKtCHpy3DzERIp2r18k8rMygl3z+0RbllNQF8p82hGP6KHncaWMBPW0mILDL
	4Z/jmSme8ZTPSY0S9UI94rN8OZzYcGtXOt4pEjGbiqIEMSqhR1arIwp6d6X9B4d082WHJCkySBd
	uZQkn3of5jiKaIBYSic0ziTrsoPolTEIunM6r8nUl2ILvOO5ugqgwi9A4HGzHPC0zw8MlGAQQBQ
	DzkJCPThy/3PSe2qu2f8WY5tw==
X-Received: by 2002:a05:600c:4707:b0:488:bfc3:efc with SMTP id 5b1f17b1804b1-488fb6e8eb5mr306756625e9.0.1776845721722;
        Wed, 22 Apr 2026 01:15:21 -0700 (PDT)
Message-ID: <6c86f2b0-381c-4c28-8c55-7dddc971fcae@suse.com>
Date: Wed, 22 Apr 2026 10:15:20 +0200
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH v2] x86/vmx: Avoid pausing on HVM_PARAM_IDENT_PT in
 additional cases
To: Teddy Astie <teddy.astie@vates.tech>,
 Andrew Cooper <andrew.cooper3@citrix.com>
Cc: =?UTF-8?Q?Roger_Pau_Monn=C3=A9?= <roger.pau@citrix.com>,
 xen-devel@lists.xenproject.org
References: <10315bf1a012edf4821f7386b3142e56b6c23e34.1776332054.git.teddy.astie@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: <10315bf1a012edf4821f7386b3142e56b6c23e34.1776332054.git.teddy.astie@vates.tech>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 7bit
X-purgate-ID: tlsNG-4011c0/1776845722-4596E8B7-A38C37F6/0/0
X-purgate-type: clean
X-purgate-size: 1511

On 16.04.2026 11:36, Teddy Astie wrote:
> When settings HVM_PARAM_IDENT_PT, skip domain pausing when :
> - there is no vcpu
> - unrestricted guest capability is used
> 
> Signed-off-by: Teddy Astie <teddy.astie@vates.tech>
> ---
> v2:
>  - rebased patches with staging

The main open issue, however, is that Andrew didn't indicate yet whether the
concern he raised on v1 was addressed. I can't very well ack the change with
a pending objection (and we still haven't settled on how to deal with
effectively abandoned ones, i.e. when one was responded to but the response
was never acknowledged).

And then surely you could have noticed yourself that ...

> --- a/xen/arch/x86/hvm/hvm.c
> +++ b/xen/arch/x86/hvm/hvm.c
> @@ -4237,11 +4237,13 @@ static int hvm_set_param(struct domain *d, uint32_t index, uint64_t value)
>              rc = -EINVAL;
>          break;
>      case HVM_PARAM_IDENT_PT:
> +        v = domain_vcpu(d, 0);
> +
>          /*
>           * Only actually required for VT-x lacking unrestricted_guest
>           * capabilities.  Short circuit the pause if possible.
>           */
> -        if ( paging_mode_shadow(d) || !using_vmx() )
> +        if ( paging_mode_shadow(d) || !using_vmx() || !v || vmx_unrestricted_guest(v)  )

... this line is now too long, and there's a stray blank being added ahead
of the final closing parenthesis.

>          {
>              d->arch.hvm.params[index] = value;

Tangential: We don't need this, do we?

Jan


From xen-devel-bounces@lists.xenproject.org Wed Apr 22 08:20:14 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 22 Apr 2026 08:20:14 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1289971.1569625 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wFSoe-0002Fe-83; Wed, 22 Apr 2026 08:20:12 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1289971.1569625; Wed, 22 Apr 2026 08:20: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 1wFSoe-0002FX-4u; Wed, 22 Apr 2026 08:20:12 +0000
Received: by outflank-mailman (input) for mailman id 1289971;
 Wed, 22 Apr 2026 08:20:10 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <jbeulich@suse.com>) id 1wFSoc-0002Ex-K1
 for xen-devel@lists.xenproject.org; Wed, 22 Apr 2026 08:20:10 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wFSoc-00HGtm-0d
 for xen-devel@lists.xenproject.org; Wed, 22 Apr 2026 10:20:10 +0200
Received: from [10.42.69.8] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <jbeulich@suse.com>)
 id 69e884b6-bab6-0a2a0a5309dd-0a2a4508c246-20
 for <xen-devel@lists.xenproject.org>; Wed, 22 Apr 2026 10:20:09 +0200
Received: from [209.85.128.50] (helo=mail-wm1-f50.google.com)
 by tlsNG-c1860d.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.1)
 (envelope-from <jbeulich@suse.com>)
 id 69e884b9-63b5-0a2a45080019-d1558032bdd4-3
 for <xen-devel@lists.xenproject.org>; Wed, 22 Apr 2026 10:20:09 +0200
Received: by mail-wm1-f50.google.com with SMTP id
 5b1f17b1804b1-488b0046078so46782445e9.1
 for <xen-devel@lists.xenproject.org>; Wed, 22 Apr 2026 01:20:09 -0700 (PDT)
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-488fb7bf7besm151891595e9.34.2026.04.22.01.20.08
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Wed, 22 Apr 2026 01:20:08 -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=google header.d=suse.com header.i="@suse.com" header.h="Content-Transfer-Encoding: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=1776846009; x=1777450809; darn=lists.xenproject.org;
        h=content-transfer-encoding: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;
        bh=DzN7vi5GkKbehVfZjnq77eBktSneKx24xQ4r8v+j2N0=;
        b=QyHU8rkL3qLpkTYcmWJagDfROsbjfa3IDeeB912yuVuXYoK/14TyuEAJnvFyBXY314
         iCYQ5vsQKIt96j5ugP8rn6r+ey56oK0APmBxJO5quthIjkaNVA9AXC9qOnsJj7P8sBRm
         LB/MrnC7dT+qypHJmFT2XZsTMuMjXzjZ3eT0T7kxK/IViRlqt/rzPsm55XPm0ibJEKP8
         AbKrVkYLHkzQjpRUJM1yHEqESKGB3RrMPtNbEsdXRe1SLLnpj/XYlNG10zHeOBkOAtWw
         hQEwQxfNIxNa7AKOUNM4dYH26F2UFW8fsl6BZqyrwfs/F8o7+fEhHnl9z+a/R1fXaNfi
         Pyew==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20251104; t=1776846009; x=1777450809;
        h=content-transfer-encoding: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;
        bh=DzN7vi5GkKbehVfZjnq77eBktSneKx24xQ4r8v+j2N0=;
        b=H/09hfRx2lMaiVWL/FPqBVfLODih+MSokIt88okMwlmH6VGNCANFgZ9qgMW0Tv6iyw
         icwr5UfVqVq+xSmzjL3/y/9SrLE/M8GELAR8wSYWabjThflEpQ/EZQJVDUEQECCOuOlV
         23ISeWCEPZoy1Mn3v4w0b9JQjQ9yo9ECOwrTn4OV7GrlyAKesd51gMURUAZXPn617mdR
         z0v1X/uKIVnni5Ay4JON/2QbmCRQEiCJlt7oPAInw8b8kA0KqvgliWPXi3mFBW8KxZOK
         R4zFU7/sy7kZkkKZBcx8DMoeNTUXjTnsZsG+9Ek1BrawKImus+UUfUKmsWmwff4H/aYA
         a6mA==
X-Forwarded-Encrypted: i=1; AFNElJ9cvgYWw4jvfw/VK1rzGu0dYRKcjSf+GKG5Rt0r8CyDVt33LdQu5Ah4r/fj8cjnJgq23REwU/wBpfk=@lists.xenproject.org
X-Gm-Message-State: AOJu0Yxw+lx0VtQFd1LWry6hQDzU/21wBSTUTGq+s/n5O38VakKijfJG
	8TpJnzt5sLll92DCZfCElJ9q0E5myutYG7LDqvFLoxfALmP828yap2N5Mb8f1gf0Hw==
X-Gm-Gg: AeBDietYwU4qGnYqsuhGa1V4AuwvE0TIIi8cpgolv8I4UEc9aPPzAg2jUABEC5S24+w
	emGw8bBPLQc7TORmHIN/yLYwzxWTi0pDH4u+4qZ7PKEdMuaQG9/FOx6uBHu9x79O0VCJ7bmqXwm
	zOv5sp73thFLdUmeP9R+bsTQD0Bc9ry5biwCXXm9t/PGdnVpGPRFykpPswZQOFQuTpCKaokH0eg
	ObYP1zLSOvJgrXtWkpe+fYnoNL9BmYuEIAQpZ+fHr5StmuKDPWseHBFOhq8ouzie/Ok1oXIpzJ4
	vQ1Zlei54XD/Qypf7gmIYUfyX2sUjFzKhb3n1B+RM2YKB1W3UYSpKjezl1pzz2GTpIl9U2o2LDF
	OsGdpG8FdJZ5u7ZQ17uX9KCnPWfb4EnkYI3P/tZERgX1/BO0GiTOUFJhDv1H7hRp+9EjUtD+OeV
	A3EMiyw4QUsWSRGvPe1ZkIQDdiue9ZpaqY1ne9KplAZF/mr21Fg13/2HXLpPFz5pJ5umnlF4NF5
	KpxnW60uyaqe3Y4Zpo2ZiH1Ow==
X-Received: by 2002:a05:600c:1d86:b0:48a:53ea:1405 with SMTP id 5b1f17b1804b1-48a53ea14f5mr110606135e9.12.1776846009175;
        Wed, 22 Apr 2026 01:20:09 -0700 (PDT)
Message-ID: <52c21d8a-f2ba-42e4-aa63-ddf65d460401@suse.com>
Date: Wed, 22 Apr 2026 10:20:07 +0200
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH 1/1] xen/efi: Config parsing: Free the same page count as
 allocated.
From: Jan Beulich <jbeulich@suse.com>
To: Bernhard Kaindl <bernhard.kaindl@citrix.com>
Cc: "Daniel P. Smith" <dpsmith@apertussolutions.com>,
 =?UTF-8?Q?Marek_Marczykowski-G=C3=B3recki?=
 <marmarek@invisiblethingslab.com>, xen-devel@lists.xenproject.org,
 Julien Grall <julien@xen.org>, Stefano Stabellini <sstabellini@kernel.org>,
 Volodymyr Babchuk <volodymyr_babchuk@epam.com>,
 Bertrand Marquis <bertrand.marquis@arm.com>,
 Michal Orzel <michal.orzel@amd.com>
References: <127e7a4e0bf360d7ffe8be94022840a353a307b2.1776787216.git.bernhard.kaindl@citrix.com>
 <170028cb-ce5c-4677-88e4-32f57f372fea@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: <170028cb-ce5c-4677-88e4-32f57f372fea@suse.com>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 7bit
X-purgate-ID: tlsNG-c1860d/1776846009-3A169DB1-E8F34408/0/0
X-purgate-type: clean
X-purgate-size: 4296

On 22.04.2026 08:48, Jan Beulich wrote:
> On 21.04.2026 18:13, Bernhard Kaindl wrote:
>> When reading the config file or the config section, we may need to append
>> a terminating NUL byte to the config buffer if the last byte is not a
>> control character.
>>
>> This may cause an additional page to be allocated by efi_bs->AllocatePages()
>> if the config file or config section size is a multiple of the page size.
>>
>> For this case, increment file->size by one so the number of pages to be
>> freed by efi_bs->FreePages() is the same as the number of pages allocated
>> by efi_bs->AllocatePages() when the additional byte is allocated.
>>
>> I moved the dcache flush after the NUL termination so the flushed range
>> covers the final buffer contents.
>>
>> I didn't add a dcache flush for the copied cfg buffer in read_section():
>> that buffer is created by memcpy() and then consumed only by normal CPU
>> reads in the EFI loader, so there is no non-coherent producer or other
>> observer that would require cache maintenance.
>>
>> Fixes: df75f77092c1 ("EFI: avoid OOB config file reads")
>> Signed-off-by: Bernhard Kaindl <bernhard.kaindl@citrix.com>
>>
>> ----
>> PS: The same fix applies to its backport to 4.21 and other branches,
>> for example:
>>
>> stable-4.21:
>> Fixes: feb99494bf59 ("EFI: avoid OOB config file reads")
>>
>> stable-4.20:
>> Fixes: 05b8f716aa32 ("EFI: avoid OOB config file reads")
>>
>> PPS: A review using GPT-5.4 (just a data point for review) confirms what
>> I've found by manual code inspection:
>>
>>> The fix in boot.c:882-886 and boot.c:913-928 is consistent with the existing
>>> free sites at boot.c:790-797, boot.c:1564-1567, and boot.c:1638-1641: Once the
>>> config buffer gets an extra terminating byte, using the incremented size for
>>> PFN_UP during FreePages is the right fix.
>>>
>>> I also checked the parser helpers at boot.c:584-641; they already operate on
>>> a bounded buffer and treat NUL/control bytes as terminators, so the synthetic
>>> extra byte does not create an obvious parsing regression.
> 
> To avoid something non-obvious was why I deliberately left file->size
> un-incremented. But yes, I failed to recall that ->FreePages() takes a
> size.
> 
>> --- a/xen/common/efi/boot.c
>> +++ b/xen/common/efi/boot.c
>> @@ -858,7 +858,8 @@ static bool __init read_file(EFI_FILE_HANDLE dir_handle, CHAR16 *name,
>>      what = L"Allocation";
>>      file->addr = min(1UL << (32 + PAGE_SHIFT),
>>                       HYPERVISOR_VIRT_END - DIRECTMAP_VIRT_START);
>> -    /* For config files allocate an extra byte to put a NUL there. */
>> +
>> +    /* For config file buffers, allocate space for the terminating NUL byte */
>>      ret = efi_bs->AllocatePages(AllocateMaxAddress, EfiLoaderData,
>>                                  PFN_UP(size + (file == &cfg)), &file->addr);
>>      if ( EFI_ERROR(ret) )
> 
> I don't really see why this or the other comment you alter would need
> touching. But of course it'll be the EFI maintainers to judge.
> 
>> @@ -877,10 +878,12 @@ static bool __init read_file(EFI_FILE_HANDLE dir_handle, CHAR16 *name,
>>  
>>      FileHandle->Close(FileHandle);
>>  
>> -    efi_arch_flush_dcache_area(file->ptr, file->size);
>> -
>>      if ( file == &cfg )
>> -        file->str[file->size] = 0;
>> +    {
>> +        file->str[file->size] = 0; /* NUL-terminate the config data buffer. */
>> +        file->size += 1;           /* Free the same page count as allocated. */
> 
> _If_ we want to go with incrementing file->size, then I don't see why
> it can't be done using the increment operator. That specifically exists
> as a shorthand for "+= 1".
> 
> As indicated above, I'm not convinced though that we really want to
> alter file->size. I'd instead add 1 in the few instances of
> "efi_bs->FreePages(cfg.addr, PFN_UP(cfg.size))". Sadly the adding of 1
> is conditional in read_section(), so maybe a "need_to_increment"
> boolean wants adding next to the need_to_free one? Then a small helper
> function may be warranted for those few instances of freeing cfg.addr.

Actually, no separate flag looks to be needed. If for the cfg file we set
->need_to_free, we know we allocated the one extra byte.

Jan


From xen-devel-bounces@lists.xenproject.org Wed Apr 22 08:26:04 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 22 Apr 2026 08:26:04 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1289993.1569673 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wFSuF-0003K8-6G; Wed, 22 Apr 2026 08:25:59 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1289993.1569673; Wed, 22 Apr 2026 08:25: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 1wFSuF-0003K1-3f; Wed, 22 Apr 2026 08:25:59 +0000
Received: by outflank-mailman (input) for mailman id 1289993;
 Wed, 22 Apr 2026 08:25:58 +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 1wFSuD-0003Jv-PQ
 for xen-devel@lists.xenproject.org; Wed, 22 Apr 2026 08:25:57 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wFSuD-00H70f-6B
 for xen-devel@lists.xenproject.org; Wed, 22 Apr 2026 10:25:57 +0200
Received: from [10.42.69.10] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <Michal.Orzel@amd.com>)
 id 69e8860f-5cb7-0a2a0a5109dd-0a2a450a85e4-22
 for <xen-devel@lists.xenproject.org>; Wed, 22 Apr 2026 10:25:56 +0200
Received: from [40.107.200.2]
 (helo=CH5PR02CU005.outbound.protection.outlook.com)
 by tlsNG-4011c0.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.1)
 (envelope-from <Michal.Orzel@amd.com>)
 id 69e88613-56b3-0a2a450a0019-286bc8026651-3
 for <xen-devel@lists.xenproject.org>; Wed, 22 Apr 2026 10:25:56 +0200
Received: from PH7P223CA0016.NAMP223.PROD.OUTLOOK.COM (2603:10b6:510:338::23)
 by DS0PR12MB7802.namprd12.prod.outlook.com (2603:10b6:8:145::5) with
 Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9846.18; Wed, 22 Apr
 2026 08:25:51 +0000
Received: from MW1PEPF0001615E.namprd21.prod.outlook.com
 (2603:10b6:510:338:cafe::fb) by PH7P223CA0016.outlook.office365.com
 (2603:10b6:510:338::23) with Microsoft SMTP Server (version=TLS1_3,
 cipher=TLS_AES_256_GCM_SHA384) id 15.20.9791.48 via Frontend Transport; Wed,
 22 Apr 2026 08:25:50 +0000
Received: from satlexmb07.amd.com (165.204.84.17) by
 MW1PEPF0001615E.mail.protection.outlook.com (10.167.249.89) with Microsoft
 SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id
 15.20.9870.4 via Frontend Transport; Wed, 22 Apr 2026 08:25: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.17; Wed, 22 Apr
 2026 03:25:49 -0500
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.17; Wed, 22 Apr
 2026 03:25:49 -0500
Received: from [10.71.194.215] (10.180.168.240) by satlexmb08.amd.com
 (10.181.42.217) with Microsoft SMTP Server id 15.2.2562.17 via Frontend
 Transport; Wed, 22 Apr 2026 03:25:48 -0500
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@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=PQcdmBTTwJ7gfgJelah4T1/4orDHKJMsdGbF5nXPfP5bPtkAihhugDr7s8Zu4sjgWDvnT5Wlli/5k+9InkHnqJl5VhALeLtd6RAM3/TIZWhhz8TItZOzYHOPaltuLElhtQnRRBMh6XXdTTnqdgSUGObTQANX2/+6FfgqlPptzydCZaRLeeijapNlFkAj1Unq/b265ZAr453iddFaAJJFZDtfem9sZz+iJ3Ix13Xcj9NCyda8/AHWvAzSRb2PY5P2+ezCg6TCB1nxQU6fxlRc0DhGpVqipqZzfLG0Zzt7BGufsnEF+EzDNjBibOScLXFCpjZzKh/DK1/w6hyYouO0ew==
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com;
 s=arcselector10001;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1;
 bh=pPaZejoR446CmFJSSpqOycV/xusB3cs2ho6iO59XoN8=;
 b=LhA7CoLDliU1FC/jMbvYYV/Gq48vvBI+KnFoyOeqFD3gMoq+B4jaoIEVV+bo53F4DHssLwj35WSiuzdCu2ByYNOof5J+O3jGNx1vQFkLUJdipMqSImK2qaNLUXwXwfh/fNyZzkYMZA34pltb3Fw0Tx7LUYACOcYw0lr1ZU+bB2oCUq1YFsiRWvHs3w6oYzOMuYo8XxS82aAxO9H7Fy+bZiZD4m3whean0RXEYg4NYn1tpG6aOp0qiuEz9NegL3Jj+utZ3nebl1aRIOlaFFnY/5ygRjLsNmgNk5GwvH67RISO5pPPi20qNWGFKrl2sBjVqOHeYPCua80PMsjn8Ffh9w==
ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass (sender ip is
 165.204.84.17) smtp.rcpttodomain=xen.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=pPaZejoR446CmFJSSpqOycV/xusB3cs2ho6iO59XoN8=;
 b=fsyHHQP6x4pZ7gbYsDFvl2x6Fum/qG/rc1Q6IhNtiKERA0iCXKLig0qrkVM7/RFpQ7C1FLJIX9+Qni2Dr/c8aIIxvqjk53JcaL+5d++778nlMqsSc2uundrm83iHRUCCxLzigxM0VgyPP/ZQauNekNxObdxi+W24YpxApXrN2ik=
X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 165.204.84.17)
 smtp.mailfrom=amd.com; dkim=none (message not signed)
 header.d=none;dmarc=pass action=none header.from=amd.com;
Received-SPF: Pass (protection.outlook.com: domain of amd.com designates
 165.204.84.17 as permitted sender) receiver=protection.outlook.com;
 client-ip=165.204.84.17; helo=satlexmb07.amd.com; pr=C
Message-ID: <d023e89c-6670-4604-92db-6796d200a988@amd.com>
Date: Wed, 22 Apr 2026 10:25:48 +0200
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH] xen/arm: skip holes in physical address space when
 setting up frametable
To: Julien Grall <julien@xen.org>, <xen-devel@lists.xenproject.org>
CC: Stefano Stabellini <sstabellini@kernel.org>, Bertrand Marquis
	<bertrand.marquis@arm.com>, Volodymyr Babchuk <Volodymyr_Babchuk@epam.com>,
	Luca Fancellu <Luca.Fancellu@arm.com>
References: <20260417091124.39552-1-michal.orzel@amd.com>
 <6a43af84-ca86-41f2-b58d-57be5baf49de@xen.org>
From: "Orzel, Michal" <michal.orzel@amd.com>
Content-Language: en-US
In-Reply-To: <6a43af84-ca86-41f2-b58d-57be5baf49de@xen.org>
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: 7bit
X-EOPAttributedMessage: 0
X-MS-PublicTrafficType: Email
X-MS-TrafficTypeDiagnostic: MW1PEPF0001615E:EE_|DS0PR12MB7802:EE_
X-MS-Office365-Filtering-Correlation-Id: 82fdca39-a71d-41be-fd6d-08dea048c312
X-MS-Exchange-SenderADCheck: 1
X-MS-Exchange-AntiSpam-Relay: 0
X-Microsoft-Antispam:
	BCL:0;ARA:13230040|82310400026|36860700016|1800799024|376014|18096099003|56012099003|22082099003|18002099003;
X-Microsoft-Antispam-Message-Info:
	dDkcE0BgaooLq/Ux9xe2dGpnBwjGPah5oazwnG4aylfZ9Om7SqONuGkqgjHDh3VmjN2RhvURVj9Ckv9DlpVI3JDELNAyC+qJqZFJylGZ3WK3Js5FhATfBPfEEYjD78o9JhfIpd7urTsLm81uSPTx5g5sDhpMN3FF301ZaPsN+nQO9w5BjPdMfJlikihcXKRDiEhvSjzRMaIS7h1oRC0kyAueaobCWeXqsDf+ADWja/ti7TzvpHsnpbPclx6BGxrFLAHJfSYUiOdaH3tGimxTTMeYIcoR6MiBgtAl5ut0tMsTPmAnKBBKixWQ2HwzE0wbfyY07wYsmiyuXHJyY8QsLnqy/EFkLEDPPybiFRj0y3i/JmjTdgKJ5mGjbUrkhzNcKllu/U+B93oMNAS5ouhPgXUleG6pSH5lQZZtdMTtV3QsG7y/dGXrOb0cHQ+VmcEqUOdTBp0+oB6BQGtTLBpo34Vy1JVIf65SEXFWfof3pwClKcFLhzD3GILjeSK/U+xO9BzzfdYkBQDBV0y5t/nLbPaiNvDtztcq1JDRhKas9fIgP3ACo4ydvqr0rW0JrPQB5gODWBM1+b58kMERQH4lvljfEDGEYkGsh0gS1EvNEDg9gpCTu8fOw/bTAydhy80gFhTi8EJPxbHTN6lbTxl31fGh6om1Od/RkKpRgEGEqRFFyOSlAbbqyOkp6144GZX3i54qRpgehVyqjvFFusJ2V/6VGY5b8VVqZn6ZcHytl92bIsXdhVQwpB/+Q8nufMaWrYffIXCrfkB5QotMPugAhg==
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)(1800799024)(376014)(18096099003)(56012099003)(22082099003)(18002099003);DIR:OUT;SFP:1101;
X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1
X-MS-Exchange-AntiSpam-MessageData-0:
	RPJ79BiP0B7vKWImwLE+leo2lavhMy3zpi6IhAWsimMWFf2iGIVs435UYlDabtUyk4uMBQivmRTYMGIh+vw4FjbL3zo+j5zVUdZ2G4keDhLX25Mz/ZWgNDZEtOn9RjRV/WeL5MGwUk/EyGcmvSI+a3GiBtfLp7ZS49+WgkB4C/91QrrjcqBG3V81hlaQqh7rikQMaFQtY8Q604vA9Dc+906bipOnJit9MgsRt6J7lAFGRIGwR4sv4SB2tiHB45upHbTPxse/1Ca/Jorplz5rMnx3wOrz5pEHXR19+oFEwOoqajnIZeHFJzHjwA6hXRLWHcLZiFvNf/6DIapUqVCRGHopyIT57IexeKsh4xo/5gykXdCXY9IOdVMfMO6k5eDG94rV+o30uCPWCHed2fBBm61etGJnchRBFytyt7HYSMMIO7CP57JueN2TytU3vU6M
X-OriginatorOrg: amd.com
X-MS-Exchange-CrossTenant-OriginalArrivalTime: 22 Apr 2026 08:25:50.2755
 (UTC)
X-MS-Exchange-CrossTenant-Network-Message-Id: 82fdca39-a71d-41be-fd6d-08dea048c312
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:
	MW1PEPF0001615E.namprd21.prod.outlook.com
X-MS-Exchange-CrossTenant-AuthAs: Anonymous
X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem
X-MS-Exchange-Transport-CrossTenantHeadersStamped: DS0PR12MB7802
X-purgate-ID: tlsNG-4011c0/1776846356-815848B7-2E916D50/0/0
X-purgate-type: clean
X-purgate-size: 4706



On 22/04/2026 09:01, Julien Grall wrote:
> Hi Michal,
> 
> On 17/04/2026 10:11, Michal Orzel wrote:
>> Refactor setup_frametable_mappings() into init_frametable(), modeled
>> after x86's implementation. Instead of mapping one contiguous frametable
>> covering ram_start to ram_end (including holes), iterate the
>> pdx_group_valid bitmap to allocate and map frametable memory only for
>> valid PDX groups, skipping gaps in the physical address space. At the
>> moment we don't really take into account pdx_group_valid bitmap.
>>
>> This reduces memory consumption on systems with sparse RAM layouts by
>> not allocating frametable entries for non-existent memory regions.
>>
>> A file-local pdx_to_page() override is needed because the generic macro
>> in xen/include/xen/pdx.h does not account for ARM's non-zero
>> frametable_base_pdx.
> 
> Can you provide a bit more details? I am a bit concerned that this could 
> result to subttle bug in the future if code within mm.c is expecting the 
> original behavior. It would be preferable if the change is either for 
> everyone on Arm or the function is renamed to avoid any clash.
The generic pdx_to_page macro does not account for offset which is something I
mentioned in the footer and I'm willing to work on in the future. As of today,
this macro is *unused* on Arm. It's only used by x86 in some special big mem
related scenario. Using generic pdx_to_page on Arm would be wrong, so a future
patch doing that would be wrong (the fact that this patch adds a local redefine
does not change anything). Do we need a rename for a local redefine in a file
that is only related to frametable? Maybe a comment and a TODO would be ok?

> 
> [...]
> 
>> +void __init init_frametable(paddr_t ram_start)
>> +{
>> +    unsigned int sidx, nidx, max_idx;
>>   
>>       /*
>>        * The size of paddr_t should be sufficient for the complete range of
>> @@ -26,24 +47,34 @@ void __init setup_frametable_mappings(paddr_t ps, paddr_t pe)
>>       BUILD_BUG_ON((sizeof(paddr_t) * BITS_PER_BYTE) < PADDR_BITS);
>>       BUILD_BUG_ON(sizeof(struct page_info) != PAGE_INFO_SIZE);
>>   
>> -    if ( frametable_size > FRAMETABLE_SIZE )
>> -        panic("The frametable cannot cover the physical region %#"PRIpaddr" - %#"PRIpaddr"\n",
>> -              ps, pe);
>> +    max_idx = DIV_ROUND_UP(max_pdx, PDX_GROUP_COUNT);
>> +    frametable_base_pdx = mfn_to_pdx(maddr_to_mfn(ram_start));
>>   
>> -    frametable_base_pdx = mfn_to_pdx(maddr_to_mfn(ps));
>> -    /* Round up to 2M or 32M boundary, as appropriate. */
>> -    frametable_size = ROUNDUP(frametable_size, mapping_size);
>> -    base_mfn = alloc_boot_pages(frametable_size >> PAGE_SHIFT, 32<<(20-12));
>> +    /*
>> +     * pdx_to_page(pdx_s) in init_frametable_chunk must be page-aligned
>> +     * for map_pages_to_xen(). Aligning to PDX_GROUP_COUNT guarantees this
>> +     * because PDX_GROUP_COUNT * sizeof(page_info) is always a multiple of
>> +     * PAGE_SIZE by construction.
>> +     */
>> +    frametable_base_pdx = ROUNDDOWN(frametable_base_pdx, PDX_GROUP_COUNT);
>>   
>> -    rc = map_pages_to_xen(FRAMETABLE_VIRT_START, base_mfn,
>> -                          frametable_size >> PAGE_SHIFT,
>> -                          PAGE_HYPERVISOR_RW | _PAGE_BLOCK);
>> -    if ( rc )
>> -        panic("Unable to setup the frametable mappings.\n");
>> +    if ( (max_pdx - frametable_base_pdx) > FRAMETABLE_NR )
>> +        panic("Frametable too small\n");
>> +
>> +    for ( sidx = (frametable_base_pdx / PDX_GROUP_COUNT); ; sidx = nidx )
>> +    {
>> +        unsigned int eidx;
>> +
>> +        eidx = find_next_zero_bit(pdx_group_valid, max_idx, sidx);
>> +        nidx = find_next_bit(pdx_group_valid, max_idx, eidx);
>> +
>> +        if ( nidx >= max_idx )
>> +            break;
>> +
>> +        init_frametable_chunk(sidx * PDX_GROUP_COUNT, eidx * PDX_GROUP_COUNT);
> 
> The function will do a round-up the mapping to either a 2MiB or 32MiB 
> aligned size. This means we could potentially cover the previous mapped 
> region or the next one. I can't seem to find any code to cover this 
> use-case. What did I miss?
Hmm, I think I calculated something wrong here. Anyway, how about using 2MB
mapping size all the time? PDX group size is 2MB, in-loop chunks are multiple of
2MB, there is no roundup needed - zero overshoot. The last chunk may have ~2MB
overshoot but it does not matter as there is nothing after it to conflict with.
The downside is more TLB pressure.

Alternatively, we could reduce the mapping size closer to boundaries (x86
choice) but that would require a bit more work.

~Michal



From xen-devel-bounces@lists.xenproject.org Wed Apr 22 08:40:05 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 22 Apr 2026 08:40:05 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1290009.1569683 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wFT7n-0006I0-Fj; Wed, 22 Apr 2026 08:39:59 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1290009.1569683; Wed, 22 Apr 2026 08:39: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 1wFT7n-0006Ht-Cb; Wed, 22 Apr 2026 08:39:59 +0000
Received: by outflank-mailman (input) for mailman id 1290009;
 Wed, 22 Apr 2026 08:39:57 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <jbeulich@suse.com>) id 1wFT7l-0006Hn-Fd
 for xen-devel@lists.xenproject.org; Wed, 22 Apr 2026 08:39:57 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wFT7k-002Ots-SQ
 for xen-devel@lists.xenproject.org; Wed, 22 Apr 2026 10:39:56 +0200
Received: from [10.42.69.10] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <jbeulich@suse.com>)
 id 69e88954-bab6-0a2a0a5309dd-0a2a450ab3ee-30
 for <xen-devel@lists.xenproject.org>; Wed, 22 Apr 2026 10:39:56 +0200
Received: from [209.85.128.54] (helo=mail-wm1-f54.google.com)
 by tlsNG-4011c0.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.1)
 (envelope-from <jbeulich@suse.com>)
 id 69e8895c-56b3-0a2a450a0019-d1558036e1f0-3
 for <xen-devel@lists.xenproject.org>; Wed, 22 Apr 2026 10:39:56 +0200
Received: by mail-wm1-f54.google.com with SMTP id
 5b1f17b1804b1-488a8ca4aadso70622115e9.3
 for <xen-devel@lists.xenproject.org>; Wed, 22 Apr 2026 01:39:56 -0700 (PDT)
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-48a55dc9f58sm253482405e9.6.2026.04.22.01.39.55
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Wed, 22 Apr 2026 01:39:55 -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=google header.d=suse.com header.i="@suse.com" header.h="Content-Transfer-Encoding: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=1776847196; x=1777451996; darn=lists.xenproject.org;
        h=content-transfer-encoding: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;
        bh=pG42mQeGdhgDwTtyHozzxy32oJ8iDpDNOgLgEi8D3UY=;
        b=c3e8x2jjJCq22gWxqJCjpwX0+vnsi219LojZ7O9Eq8VeUwfK3ap8MW+DIBMdCx3kFO
         LUWcIs+8kJpF1wifaRCK2bVeJB0c3xR0iMNhA2yZFNONUYEpbf61kccEz1lB5rXTwegN
         bAOob6H0LTzRQtvwFAFwB2oy1JRX+pP/Xu89njXyVMcVPqeZreONltsFe1xb/BmbCAEC
         O1+PTLAh67i4cpgpDhW8sPFoP3JA9TBHe4JiPS7ikkvyqyJpw5zrvYaMUbRmNtOmjyQ7
         87lFeqWLtXvOJW3jmZN84Apy3yodvX+gOLx8obzpS5A5oZ74kDbI6IUVZYKP3N2l0fsy
         NHwQ==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20251104; t=1776847196; x=1777451996;
        h=content-transfer-encoding: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;
        bh=pG42mQeGdhgDwTtyHozzxy32oJ8iDpDNOgLgEi8D3UY=;
        b=fyFHqxgv7HpwzSNZRXQpWrt8Bkjexc0dxCxbF7S1LdZXYnqRK98MlUTdaoH9o2tn5C
         FJlcNISk+h7Jfa8053RjI0aVyZ83Mja1Epm44FWHqO6hkJuv9Bm2k1EwIQGzQc+LFvnN
         fZzlyl2hDxyzA12qxp0o2bb9wppe6H0tU1BigtDRQN5pMr5k12tmINyCnMGHFpU+Em46
         8nvy8HhwHJtO4TfdI0rLVvw0UVAF17fPOUfi7/hRuitVf+s2elecceshxSqIyS7iFFyM
         aIPdltttEd7+Q2SPi7yH0fLEk6fTMd1l6tsGUWKDbFrMaV8sUOBKxk1NhSd1PkMWCRZ1
         /Elw==
X-Forwarded-Encrypted: i=1; AFNElJ9G+K7kgHLD0r1suAmtOE39q+vch56X0fN17SMcLnQES5SlpRDFAlOW3sV9ln6qfOGkS4Nw9gAKW34=@lists.xenproject.org
X-Gm-Message-State: AOJu0YxzaMbxF9Dyle7irki8CDF/6Pfr076/N6N+cOneppO9ciuJ0MTA
	HSnE0NR/8oLJRZVkGOS7e7vQILF3JMG4TcXEwlwrHSJeQi7gjSpRL/xv3rXPrWEvW6UyfORS+4o
	a7Z6PJg==
X-Gm-Gg: AeBDieshn5q3hA4a5CioYaGtmaY4dS9H+GzD4guyoye/vcUOvc93aTMI5KueLYT7KeF
	MWKmmlpOMfMGE5l6nVG+ePaDXPYT/JbfAVgTL3gAgA/CPcDcSUIJNE8KnZ22nA4Dx+nK9YQltLh
	XivPRvf7TFdSI2IRxsAl3gEl1XjR7S/zy1x6ErEO720xPQ60voDlTdQEIfqRZgZ8jwXNCz43JKk
	f7OpcJWwH+CML6iGZiLzowifm3kYJSaT8FseFx9EkVxN04L9FNeqwyKFzPhZjrieeFygbK0dQVW
	E3saKX2hXER6aeO5yN9c3owY3Upu5YET/kWGAWEshJ1sAO008D+lu22JQaDEB+eUrAKANFLlhQk
	QKijxtqG5d7Mo8CFnWIaopwXQXdjW0279/tVitmEUDBI4XohZ6voz+olRJLju9OqKaWQGKvWHXu
	waDHzMwIbB78VVYtcb7UWin+j+EWdyGJJ/FpUrqvWtzXoJkj5lNl4cX3oWKTnaHarQN/Haj4Huu
	TagNDyupWDMVjz47qYBKbD5Vg==
X-Received: by 2002:a05:600c:1da1:b0:488:f453:b976 with SMTP id 5b1f17b1804b1-488fb7844c5mr340575075e9.27.1776847195842;
        Wed, 22 Apr 2026 01:39:55 -0700 (PDT)
Message-ID: <3df7352b-7502-4c2a-bc3f-0cb4fa7014cf@suse.com>
Date: Wed, 22 Apr 2026 10:39:54 +0200
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH v6 1/7] xen/mm: Refactor claim deduction for later
 functional changes
To: Bernhard Kaindl <bernhard.kaindl@citrix.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.pau@citrix.com>,
 Stefano Stabellini <sstabellini@kernel.org>, xen-devel@lists.xenproject.org
References: <cover.1776172526.git.bernhard.kaindl@citrix.com>
 <5302d33e7e896347acc7a8212df4f28ea098e28e.1776172526.git.bernhard.kaindl@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: <5302d33e7e896347acc7a8212df4f28ea098e28e.1776172526.git.bernhard.kaindl@citrix.com>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 7bit
X-purgate-ID: tlsNG-4011c0/1776847196-4616A8B7-46D3BF0D/0/0
X-purgate-type: clean
X-purgate-size: 2427

On 14.04.2026 15:22, Bernhard Kaindl wrote:
> Refactor claim deduction to make the claims accounting model easier to
> follow ahead of later functional changes.
> 
> Three new callers will need to deduct claims, and two of them will also
> need the number of pages deducted to be returned.
> 
> No functional change.
> 
> Signed-off-by: Bernhard Kaindl <bernhard.kaindl@citrix.com>
> ---
> History:
> 
> Functionally unchanged since v4, only minor cleanups have been applied and:
> - Updated the function name deduct_global_claims() to follow standard naming.
> - Moved the other function into another commit as it had no users here.

Is this true? In v4 ...

> --- a/xen/common/page_alloc.c
> +++ b/xen/common/page_alloc.c
> @@ -518,6 +518,19 @@ unsigned long domain_adjust_tot_pages(struct domain *d, long pages)
>      return d->tot_pages;
>  }
>  
> +/* Deduct up to the given amount of pages from the global claims of a domain */
> +static unsigned long deduct_global_claims(struct domain *d,
> +                                          unsigned long reduction)
> +{
> +    reduction = min(reduction, d->outstanding_pages + 0UL);
> +    ASSERT(reduction <= outstanding_claims);

... this was still BUG_ON(), matching ...

> @@ -1067,11 +1079,7 @@ 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);
> -
> -        BUG_ON(outstanding > outstanding_claims);

... the original code. Changing this may be okay (albeit I'm unconvinced),
but it would want justifying in the description then.

As to the rename to deduct_global_claims(): With that, wouldn't its 2nd
parameter then better also change to "deduction"? Furthermore, "global" in
the name is ambiguous: It may mean "not per-node", but it may also mean
"not per-domain". The v4 name didn't have such an issue.

One other, wider aspect (which I may or may not have mentioned before):
The mix of unsigned long vs unsigned int for page counts is concerning. It
is why the not overly nice "+ 0UL" is needed. I wonder if we wouldn't do
ourselves a favor if we first normalized all that. Considering that
systems (and hence guests) only ever get larger, it likely should all be
unsigned long.

Jan


From xen-devel-bounces@lists.xenproject.org Wed Apr 22 08:46:59 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 22 Apr 2026 08:46:59 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1290018.1569693 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wFTEU-0007pb-66; Wed, 22 Apr 2026 08:46:54 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1290018.1569693; Wed, 22 Apr 2026 08:46: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 1wFTEU-0007pU-24; Wed, 22 Apr 2026 08:46:54 +0000
Received: by outflank-mailman (input) for mailman id 1290018;
 Wed, 22 Apr 2026 08:46:52 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <bernhard.kaindl@citrix.com>) id 1wFTES-0007pM-Kk
 for xen-devel@lists.xenproject.org; Wed, 22 Apr 2026 08:46:52 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wFTER-002Q7b-QV
 for xen-devel@lists.xenproject.org; Wed, 22 Apr 2026 10:46:51 +0200
Received: from [10.42.69.11] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <bernhard.kaindl@citrix.com>)
 id 69e88af1-bab6-0a2a0a5309dd-0a2a450b973e-18
 for <xen-devel@lists.xenproject.org>; Wed, 22 Apr 2026 10:46:51 +0200
Received: from [40.93.198.56]
 (helo=CY7PR03CU001.outbound.protection.outlook.com)
 by tlsNG-42698a.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.1)
 (envelope-from <bernhard.kaindl@citrix.com>)
 id 69e88afa-212f-0a2a450b0019-285dc6384d50-3
 for <xen-devel@lists.xenproject.org>; Wed, 22 Apr 2026 10:46:51 +0200
Received: from LV3PR03MB7707.namprd03.prod.outlook.com (2603:10b6:408:28b::21)
 by SA6PR03MB7735.namprd03.prod.outlook.com (2603:10b6:806:43c::20)
 with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9846.21; Wed, 22 Apr
 2026 08:46:47 +0000
Received: from LV3PR03MB7707.namprd03.prod.outlook.com
 ([fe80::97e8:ef9c:9031:e2bf]) by LV3PR03MB7707.namprd03.prod.outlook.com
 ([fe80::97e8:ef9c:9031:e2bf%6]) with mapi id 15.20.9846.019; Wed, 22 Apr 2026
 08:46: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=g6MG05fQmg/SiM7he6nm4Oo0GDTADvdGsUhJvocpkp5B0IYv5/3ljkK0CK/zzMP4fzmkAIgQkLoVM5vill6tpfr73VDd28NUSwdWxxqJJ2F+0YBNeZz8ZVh7ZYdWoC8sxpXbFcWw1xgThRoqADKrq3fqBnqRoNxMrN/SbhTG1bV4i5t2dOo/MImEmnUjzu6FseWVc83OWD3eRTVzZ4paqJ0fZzlGRk1q8XLQscA8hKhPLcNVx7weJFAoF5eV7suVhn2enOTJ/9OBvtyYD7/ss9b1I9HOmCQAweMGObo69laGvMXvbrf7GuUeMRMsmZwEbAdltneEkH8s0xIJ7XNBZg==
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com;
 s=arcselector10001;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1;
 bh=8a1RXM1tQDcGMOWLsBO8l1ptl3QnA8qqh+dA2O0n26c=;
 b=b8kitPCN5s4Eh6h/soQpqUb1Joo7owVua7lke997wbHfEkzLe6usZSNcQnLifNRZVRhdQwULwJIkdvlco/PzPB4fBNvqaDuPSBUCKWl3I+jG70KTgxJ+SLXuuqzeIkU+3VONkfuRg2FiLF9/vuklzAlWN8KsPnpaaydgvIxhydYEZY2Z/7zS4QyIU231zXuoi5cnsI8izo7PFH6WfcsD1Nx6RnxS15lbjsS4ZebtTx5GA/wcGNVuW4pdLXoghsNuLdgOTKUbJh/luK2QUhWtaO/I6GD/IKeQiS8PooV5vW4wvH3qs23BIHuTbTPk5z8LEvQxQ/SJF98E0A7xL8zAfQ==
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=8a1RXM1tQDcGMOWLsBO8l1ptl3QnA8qqh+dA2O0n26c=;
 b=Hv6JvbklwON707Q0DasfYtezdDkBdel27aMZiTZIrL+gbMdlscKj+PhiFQmtyNhlIQzK16UgeTNO9aRR29OtKjIJ2jE9qSTcRXyxPiaB5vx0bK2+HdmoSWvF/ezRt7JCFjdirzMlEbPD3Z+2ldPCpGCZk44BGYHqzn/XtEL4gH8=
From: Bernhard Kaindl <bernhard.kaindl@citrix.com>
To: Jan Beulich <jbeulich@suse.com>
CC: "Daniel P. Smith" <dpsmith@apertussolutions.com>,
	=?utf-8?B?TWFyZWsgTWFyY3p5a293c2tpLUfDs3JlY2tp?=
	<marmarek@invisiblethingslab.com>, "xen-devel@lists.xenproject.org"
	<xen-devel@lists.xenproject.org>, Julien Grall <julien@xen.org>, Stefano
 Stabellini <sstabellini@kernel.org>, Volodymyr Babchuk
	<volodymyr_babchuk@epam.com>, Bertrand Marquis <bertrand.marquis@arm.com>,
	Michal Orzel <michal.orzel@amd.com>
Subject: RE: [PATCH 1/1] xen/efi: Config parsing: Free the same page count as
 allocated.
Thread-Topic: [PATCH 1/1] xen/efi: Config parsing: Free the same page count as
 allocated.
Thread-Index: AQHc0aotn+eeGsDBDUy6ubJIW0SdtbXqpN2AgAAZdoCAAAJOoA==
Date: Wed, 22 Apr 2026 08:46:47 +0000
Message-ID:
 <LV3PR03MB7707C25AD7EBF0118B2CAE65872D2@LV3PR03MB7707.namprd03.prod.outlook.com>
References:
 <127e7a4e0bf360d7ffe8be94022840a353a307b2.1776787216.git.bernhard.kaindl@citrix.com>
 <170028cb-ce5c-4677-88e4-32f57f372fea@suse.com>
 <52c21d8a-f2ba-42e4-aa63-ddf65d460401@suse.com>
In-Reply-To: <52c21d8a-f2ba-42e4-aa63-ddf65d460401@suse.com>
Accept-Language: en-GB, en-US
Content-Language: en-GB
X-MS-Has-Attach:
X-MS-TNEF-Correlator:
authentication-results: dkim=none (message not signed)
 header.d=none;dmarc=none action=none header.from=citrix.com;
x-ms-publictraffictype: Email
x-ms-traffictypediagnostic: LV3PR03MB7707:EE_|SA6PR03MB7735:EE_
x-ms-office365-filtering-correlation-id: 39432b76-e61e-4b2d-e68f-08dea04bb06b
x-ms-exchange-senderadcheck: 1
x-ms-exchange-antispam-relay: 0
x-microsoft-antispam:
 BCL:0;ARA:13230040|10070799003|366016|1800799024|376014|38070700021|56012099003|18002099003|17002099007|22082099003;
x-microsoft-antispam-message-info:
 mtuSuvj5dEG4qW/HwP1aKR6aogHVzGhglcLAbru9GNFbAbixnIBTdsqSnQ3e+xPp2QCeu8iwqwITiSzEz0edPsDrnv5Q965N069X9WKnwUx/EOMZeEFc0p1UsNlTueyf5io49/fzH6ltHJ1tQOeJNm4+Uvd21VpjDWmKS589iqmRwzF2nzD69jSDxZfrPLzqNyoRx1wx73MxZKOodv7W9yh37iQueHOsFFXO94zsqrs251Bu6skgJIXGWoxJKDoLk8UgcGyLsHEwFW/M7R2XYeTNXISb0AvAYeu/gHJQ7HVltfbmO3VjngfSo27KpM1Dd9cpzYzuRaLkTY638WefiTDd6qZY33vVCorLWhkgwgNMGJZoKPQaWMXMANeytJZYCT8SccmM/EKi4/3VKQW5CKWU9dFWjeGR/EzO99jwejg7VE9363TfppM3xmVFjlyK6GbJMVdixuuSsVhhN35fyvWdRVC8IfuNi9kwuaQu7AUjdHXJmiXZf17oM3fWRnuBh41QAorHJkn2fZW9cP54OdIAbnvnhq4Ub7lsw8XFfpCWpYiDP3SjuqrvwZSCGeAVVaiuoNdp6egrOA0+cpXfu9hNMGUXKundxseybpbbX1T+kaC6eS7rjkMCAwhI+hNr7PP+SwDTQ/upoa48qQtUqyhPa1L4kLa8dw3ATwRc/eOyl9/Zqb9oYPJVmBUY1NPKkUoq6bSsUG75+tnZveGTgHOaM6z2nS4RAqn6wB5q61McQzooIteTe0OBqsxDo8jEovE2DmOW0CtNm6wH7ji4iosWAxB8s9qCbfdQr0Kca0I=
x-forefront-antispam-report:
 CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:LV3PR03MB7707.namprd03.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(10070799003)(366016)(1800799024)(376014)(38070700021)(56012099003)(18002099003)(17002099007)(22082099003);DIR:OUT;SFP:1101;
x-ms-exchange-antispam-messagedata-chunkcount: 2
x-ms-exchange-antispam-messagedata-0:
 =?utf-8?B?RndJY1hTNzFUb2JLSENXYi9lYXEyL3hoU2dLTmNkNkMrZXlIdjZuMVJPampR?=
 =?utf-8?B?YjhmVXFmWm5nNS9mS0U1OEVJZG1PNWt4YU9LeXhtREFYODBhTkNyTm1XZlhL?=
 =?utf-8?B?aGR4MTlrTHJYcWVFMWNGQlk1bHhGcEZTOXJoZW4zTWhFTE1PTERGdnFZeXA2?=
 =?utf-8?B?enp0NzRFTG45UGtEb25KOURITENUS2tySWpwTnBjUm82WElhYlBtY3ppQzFu?=
 =?utf-8?B?T09zUW9WL2tnNGUvY2h5bG81bmhVYUxRemVLdnRKc3VXdUZVUWJFbjU3NEQ1?=
 =?utf-8?B?eUE3WllQS2VUb3VFbGhmWFlzUnVNblhmQlFudEIrOGVyRnFlMHJmWmVFVXpo?=
 =?utf-8?B?MlNNNFdTdzdJM1MxVVBMT0xONUNPVFhPWGZQSExaYkxHR0lMOFZJVDkvcXR1?=
 =?utf-8?B?dkZQUWFwaTgvTERtY2E5OHZtRDJ4YnM0cWNPNS9Hbmw0QXI1OVNib2hqK3Bl?=
 =?utf-8?B?OCs5MzNSL1JkTGtrR042c2ljQXdPai9tb1RweC9scm9jTWdRNU1yVWFwQVgv?=
 =?utf-8?B?SjhrQitpWkQyU2UreWlPcXlJakFmKzlFcGFlV0ZTNGxXR2YzWlZFbzVVcm9a?=
 =?utf-8?B?cEREMUV0MEUzZUovZ3ZOeG1wbjhFUHNwSlRVeXUzRU9ZSTRBNlhjK2ZpNHdJ?=
 =?utf-8?B?bUFsMm5SWXU5ZE4rUzk4OTJIQkEyUk9SVGVoT0RDWmdmTUgzYmVLb1luV0l3?=
 =?utf-8?B?VCtjd09mWitmczBMUnlGU2FyS1VQWW8vVURFTWlSSEsyZitrc1VBckxES3VN?=
 =?utf-8?B?Tko4Mi91a2lWbVhDTHJGc2g3cENHUTcwOFVFWEkyTTEzV1g4LzAva1NaT1pM?=
 =?utf-8?B?U1JTWTNPNmZkYVJ2cWZIQ2NMbkRCaWdFbGtTT0psQW1iRnAzeXpWRC9YWXVl?=
 =?utf-8?B?TTlBYVdZdC9zYk43OHl0dDNFcWRQcExkUjYzRU9ZQkIzRTUwYXBNZmlabnVZ?=
 =?utf-8?B?RnRQZVM3cDEzZXJXOVJuaTdMQ2pZYWErcElXRml3a0pDQTR2MlAyN00yaGhr?=
 =?utf-8?B?N3BiUDEwRU1Vcy9HVnh2WmNmcnFGb2thaVoxNkJFTVBFaEs1Y25kT2ZtZXJs?=
 =?utf-8?B?MHJRSFhpbEI1Z2xySmU1Z2pOQitveG9Qa2czdk4vUTU1T3JDUndaYzZsZlVT?=
 =?utf-8?B?ZW56ZHJWeEh6YlROdHJBcXB3L0tkQVF0eXEzekxKdjVVSXJqbkJvZlA5d3pF?=
 =?utf-8?B?U2ZxV09kdkI4eVVxTU5KRDRlU2RwR1N4Uyt5TGwzZmVNeDdBWExoT05US3gy?=
 =?utf-8?B?di9ORjd1cHdQZTZkSDRZTG1rblViV3UxOFBLRHVYa09RUzJmdG5vT3lXYTlT?=
 =?utf-8?B?SFBDTThLSll2cnIvei9TMmZUUWtvenJtUlNsVzAxWmo5N2NxaytJcm9leHJJ?=
 =?utf-8?B?MzRqN1hRS3VEaWtsN0ozaEVGRzlxZEtZeEE3QmJHazA4RWNOaXcyTzV6a2tJ?=
 =?utf-8?B?cVF3c0s4MUEvQzV5VGVXYVpjanVDUFRyT0dENmQza3pWaU4vNE04R1FHV0Yv?=
 =?utf-8?B?YlcwNTN0NEJtZ1Z3b0ZYemVIUmZxK05QSktqTDdlaEpPWDYwRW93VFR2emJ1?=
 =?utf-8?B?RW1xTTFJRTdNYjE2Vy9RUE1ZOHRwaWl2Q0NvQmM4N3QxT3ZoL0FEYXN3RDh2?=
 =?utf-8?B?aHVLTUU4QjZvTnEyK1d4VjBYdG4zeCtITGs1bVdFMXh6aWp6ZjRzUFAzZUJL?=
 =?utf-8?B?QzlNUDhidWwwZ2t1L3ZzZjlYalZmWWY3dURMNkVHUnN2T05FdHNGOEdEWUQx?=
 =?utf-8?B?S1RzM3NYN1lPc2pSem1icXpadEpRWkFJL2NLUWNGc2VpN2xDTnpod3pXSUY5?=
 =?utf-8?B?NEE2S0NXaHdhKzRwSFE4TG5CaTVNTEE5T0haMjNlQlhkYi9LSGMzRndOWEVi?=
 =?utf-8?B?aG1GZDMvNE9UbmJPaWhaLzZMLzNEbndZT1lmVkoxQ1pSYUJXQlRrTlh5bSsz?=
 =?utf-8?B?YVA4MkpINm5oQXBNV0JXcmlqY1gra2NGcXV1SkNBNzRmRjlid1V6TVh4TDdy?=
 =?utf-8?B?RmgwVXZoZ0srTjlRTUdmaWRVOWdIZVp3dzdrVThtNTY2Ymk2VUdlVGxYUVFZ?=
 =?utf-8?B?RWJvQmFkczJGakNUUmVHQm95Z0lnS2dlZ3ZSMFBPZ2ticFB6OFozRkc2UTNU?=
 =?utf-8?B?VlUycjVhbitYNjhaUzV2UWVaa0pIejJFUlp2aElkUGcwWVRUSFdkcVFCcVh1?=
 =?utf-8?B?azFkVFNJMERSUVA4UGNyZ2FoNlJNeTRNU2VRTjFzNEJnTWZMbU1mQnRNOFhp?=
 =?utf-8?B?eCtON3NrZHAwUTZ5L3VLcHVoTFFqOEN1QndqVGl6WnFxQnNnOGJNZjVMZ2Rk?=
 =?utf-8?B?QVFiM2JicWwybWZabGc3dFVObEgzYzNYeldWd1lBcDhYeWI4UUZZRGlVM01l?=
 =?utf-8?Q?iAUn3zD4LAdnCuTRE7gfupztCHJd3BsZPa2yGWsBlcu/8?=
x-ms-exchange-antispam-messagedata-1: k3GVLKoRxLGX9Q==
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: LV3PR03MB7707.namprd03.prod.outlook.com
X-MS-Exchange-CrossTenant-Network-Message-Id: 39432b76-e61e-4b2d-e68f-08dea04bb06b
X-MS-Exchange-CrossTenant-originalarrivaltime: 22 Apr 2026 08:46:47.6019
 (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: B6vwXu2uB5v9thrXgY1F5kuwzaBVtwPQN/uHR1UibjSFEjdxylVnnuwr28Pq53ixBi+wUxMLooejCEiwlma8vQ8cIOx+HoFitNly2s7ZnaY=
X-MS-Exchange-Transport-CrossTenantHeadersStamped: SA6PR03MB7735
X-purgate-ID: tlsNG-42698a/1776847611-05B68F3B-06185F3B/0/0
X-purgate-type: clean
X-purgate-size: 2000

SmFuIEJldWxpY2ggd3JvdGUgYXQgMTA6MjA6DQo+IE9uIDIyLjA0LjIwMjYgMDg6NDgsIEphbiBC
ZXVsaWNoIHdyb3RlOg0KPg0KPiA+IEFzIGluZGljYXRlZCBhYm92ZSwgSSdtIG5vdCBjb252aW5j
ZWQgdGhvdWdoIHRoYXQgd2UgcmVhbGx5IHdhbnQgdG8NCj4gPiBhbHRlciBmaWxlLT5zaXplLiBJ
J2QgaW5zdGVhZCBhZGQgMSBpbiB0aGUgZmV3IGluc3RhbmNlcyBvZg0KPiA+ICJlZmlfYnMtPkZy
ZWVQYWdlcyhjZmcuYWRkciwgUEZOX1VQKGNmZy5zaXplKSkiLiBTYWRseSB0aGUgYWRkaW5nIG9m
IDENCj4gPiBpcyBjb25kaXRpb25hbCBpbiByZWFkX3NlY3Rpb24oKSwgc28gbWF5YmUgYSAibmVl
ZF90b19pbmNyZW1lbnQiDQo+ID4gYm9vbGVhbiB3YW50cyBhZGRpbmcgbmV4dCB0byB0aGUgbmVl
ZF90b19mcmVlIG9uZT8gVGhlbiBhIHNtYWxsIGhlbHBlcg0KPiA+IGZ1bmN0aW9uIG1heSBiZSB3
YXJyYW50ZWQgZm9yIHRob3NlIGZldyBpbnN0YW5jZXMgb2YgZnJlZWluZyBjZmcuYWRkci4NCj4g
DQo+IEFjdHVhbGx5LCBubyBzZXBhcmF0ZSBmbGFnIGxvb2tzIHRvIGJlIG5lZWRlZC4gSWYgZm9y
IHRoZSBjZmcgZmlsZSB3ZSBzZXQNCj4gLT5uZWVkX3RvX2ZyZWUsIHdlIGtub3cgd2UgYWxsb2Nh
dGVkIHRoZSBvbmUgZXh0cmEgYnl0ZS4NCg0KTm8sIGFsc28gY2ZnLT5uZWVkX3RvX2ZyZWUgaXMg
YWx3YXlzIHNldCB3aGVuIEFsbG9jYXRlUGFnZXMgd2FzIHN1Y2Nlc3NmdWwsDQp4ZW4vY29tbW9u
L2VmaS9ib290LmMsIHJlYWRfZmlsZSgpLCBsaW5lcyA4NjIgdG8gODY3Og0KDQogICAgcmV0ID0g
ZWZpX2JzLT5BbGxvY2F0ZVBhZ2VzKEFsbG9jYXRlTWF4QWRkcmVzcywgRWZpTG9hZGVyRGF0YSwN
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUEZOX1VQKHNpemUgKyAoZmlsZSA9PSAm
Y2ZnKSksICZmaWxlLT5hZGRyKTsNCiAgICBpZiAoIEVGSV9FUlJPUihyZXQpICkNCiAgICAgICAg
Z290byBmYWlsOw0KDQogICAgZmlsZS0+bmVlZF90b19mcmVlID0gdHJ1ZTsNCg0KR2l2ZW4gdGhh
dCwgSSB0aGluayB0aGUgRUZJIG1haW50YWluZXJzIHNob3VsZCBzdGF0ZSB0aGVpciBwcmVmZXJl
bmNlIG9uIGhvdw0KdG8gZnJlZSB0aGUgYWxsb2NhdGVkIHBhZ2VzLiBJdCBsb29rcyBzYWZlc3Qg
dG8gYWRkIGZpbGUtPm5yX2FsbG9jYXRlZF9wYWdlcy4NCg0KVGhlbiB3ZSBoYXZlIGEgY2xlYW4s
IGRlZGljYXRlZCB2YWx1ZS4gSSBjYW4gdXBkYXRlIGl0IGluIHRoaXMgd2F5LCBidXQgSSdsbA0K
cHJvYmFibHkgd2FpdCBmb3IgdGhlIG9waW5pb24gb2YgdGhlIEVGSSBtYWludGFpbmVycy4gSXQg
d291bGQgYmUgY2xlYW5lci4NCiANCkJlcm5oYXJkDQoNClBTOiBJJ20gbGVhdmluZyB0aGlzIGZv
ciB0aGUgRUZJIG1haW50YWluZXJzIGZvciBub3csIGFzIEkgbmVlZCB0byBmb2N1cyBvbg0KdGhl
IHJldmlldyBvZiB0aGUgTlVNQSBjbGFpbXMgc2VyaWVzLg0K


From xen-devel-bounces@lists.xenproject.org Wed Apr 22 08:50:38 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 22 Apr 2026 08:50:38 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1290026.1569700 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wFTI4-0001RN-JI; Wed, 22 Apr 2026 08:50:36 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1290026.1569700; Wed, 22 Apr 2026 08:50: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 1wFTI4-0001RG-Gb; Wed, 22 Apr 2026 08:50:36 +0000
Received: by outflank-mailman (input) for mailman id 1290026;
 Wed, 22 Apr 2026 08:50:35 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <jbeulich@suse.com>) id 1wFTI3-0001RA-Do
 for xen-devel@lists.xenproject.org; Wed, 22 Apr 2026 08:50:35 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wFTI2-00EzmT-QV
 for xen-devel@lists.xenproject.org; Wed, 22 Apr 2026 10:50:34 +0200
Received: from [10.42.69.6] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <jbeulich@suse.com>)
 id 69e88bd7-2eae-0a2a0a5409dd-0a2a4506ac78-44
 for <xen-devel@lists.xenproject.org>; Wed, 22 Apr 2026 10:50:34 +0200
Received: from [209.85.128.43] (helo=mail-wm1-f43.google.com)
 by tlsNG-16d1c6.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.1)
 (envelope-from <jbeulich@suse.com>)
 id 69e88bda-7371-0a2a45060019-d155802bc83d-3
 for <xen-devel@lists.xenproject.org>; Wed, 22 Apr 2026 10:50:34 +0200
Received: by mail-wm1-f43.google.com with SMTP id
 5b1f17b1804b1-4891e5b9c1fso30782485e9.2
 for <xen-devel@lists.xenproject.org>; Wed, 22 Apr 2026 01:50:34 -0700 (PDT)
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-488fc0f82bbsm725708545e9.3.2026.04.22.01.50.33
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Wed, 22 Apr 2026 01:50:33 -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=google header.d=suse.com header.i="@suse.com" header.h="Content-Transfer-Encoding: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=1776847834; x=1777452634; darn=lists.xenproject.org;
        h=content-transfer-encoding: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;
        bh=K7yX+GLINpCu4eGgR6SOGfycLZuo//yasWtLNvgdumU=;
        b=V2qp6ETURiXk+QyUjEFbsrb9NSbFNvivBABBJXgQLF8BTif0jHpzkHbMDZ0xDD4Ks1
         Y0gYf9Xl+f7XEWu3mmgzG0qLZpMX7F5lggIJaSfttxAPI18PIwujPXff2mrVI1tJvcwC
         eajwNdyjLPmskX5wjPUsBt+c/j9mgnpez1Lhy23GoE7KI078YYwJMsKT6LDuN9alTk4H
         9SiLt38cM1SeyH5ee/1IjF6Q9GtAU41Wu8wMBhPl71+4L6bkUdlzynSyYwGV/T/rlONy
         VR1R/9yaYl6l8PllNXk0mVHC+IxBsnoNgJiZjS8sWWXGiV+zYT1NEw486FKzlqSSbq+5
         LJFw==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20251104; t=1776847834; x=1777452634;
        h=content-transfer-encoding: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;
        bh=K7yX+GLINpCu4eGgR6SOGfycLZuo//yasWtLNvgdumU=;
        b=TjeepfyXNl3zJ3+aJsMm7D59qiabE33CgrLAFD0I3T9UHV1mzWIqv4JguDh1yd83Tz
         hb38c6t6HVrNvKI5rRwO4FW4k4V86YDWcgYMrWpRmKe7y+ChLHeSryA0uL3T80UZI8g8
         u0uvjazeWHfTW01kWbPY0qS3TtLHJAn6IOnhTxdSmuGV3XReF/c6MAqTeNUrUWvs5GPH
         b4bVt17sUtAEIP2gMZj6silELWb+OcjLQ6n5pshgqXtQHHyhMXYPFMT/30xK1fuvxM3s
         3yV2lf/Zk/v/LqaQVHf2+bNf6LXaMUVQgyo294HJwZ9lYqsfWQ+8/OptqScrWEnM8ekW
         SLHw==
X-Forwarded-Encrypted: i=1; AFNElJ91RHRMxxRinYcwLW6H4ICFHHxh0wNHpfqnLjeXuicf21aFAFfz7LWKK4drprXA936jz9SKCsiVd64=@lists.xenproject.org
X-Gm-Message-State: AOJu0YwKSjB3p5CfmV6WuWgGSsV5KQayge7kLXtOLem3RfEewiieGCVs
	znlsZjSKo+LE3nOLiZylv4Jx3s+b/+7+rRSTdcGopx7sNPw71CkePG2h1oprNhzRmA==
X-Gm-Gg: AeBDieum9pqGHY1gOUSHi3zO4DUswVGLc1XGDQSPh7QM8lKCNxeqAaerrBBenR02KUf
	J2cvDt7xJLKStw4ekgBnyJ1+fKO1VG6GdketeWij+K0TcFC43x+F5XY4MArThliKFfIcr5UVtII
	EvcgKZYk3MlLDIxpx4BmuMJIq4MN8ZTA9PnKykBwavSS2h3KdIoH5c0iJYM9KIKBpT4+kXtMd5f
	AZ83esVxEMQoFBe2YFtu/E7LBvfojtaJnFooAogtcTuqCKjhHY9tKQgX4ld2E5D/geIe25MjhYA
	it6/2Ei1uVWSqLWO3PmAcEyCLEpigCCAZ16pgvnjYmUY15kki6LWjsiOVffTNIysD/vmKxmt11z
	ERbnHTxa+r4JvY+wfDWG5smozYt7F2nxk4C/rbr2yGkOZUsJY1LV0n60SFzrzSmuylXDE27mjs0
	3ybcq42EaJ5GaROQ38AwLmVAQ0QkukN5jfH3nNUZTAO0KG3b/LrkuOwMtieOAeiUYZ/QZKgF1sc
	Wym+au5DqkMZJjjQEzdNZW8tLTIhYu/yqRI
X-Received: by 2002:a05:600c:2d91:b0:48a:5301:bb5c with SMTP id 5b1f17b1804b1-48a5301bc69mr73375085e9.16.1776847834015;
        Wed, 22 Apr 2026 01:50:34 -0700 (PDT)
Message-ID: <85effc67-9c6b-497b-83d8-c809733cbe48@suse.com>
Date: Wed, 22 Apr 2026 10:50:32 +0200
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH v2] x86/vmx: Avoid pausing on HVM_PARAM_IDENT_PT in
 additional cases
To: Teddy Astie <teddy.astie@vates.tech>
Cc: Andrew Cooper <andrew.cooper3@citrix.com>,
 =?UTF-8?Q?Roger_Pau_Monn=C3=A9?= <roger.pau@citrix.com>,
 xen-devel@lists.xenproject.org
References: <10315bf1a012edf4821f7386b3142e56b6c23e34.1776332054.git.teddy.astie@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: <10315bf1a012edf4821f7386b3142e56b6c23e34.1776332054.git.teddy.astie@vates.tech>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 7bit
X-purgate-ID: tlsNG-16d1c6/1776847834-52B75D75-5B52AD73/0/0
X-purgate-type: clean
X-purgate-size: 843

On 16.04.2026 11:36, Teddy Astie wrote:
> --- a/xen/arch/x86/hvm/hvm.c
> +++ b/xen/arch/x86/hvm/hvm.c
> @@ -4237,11 +4237,13 @@ static int hvm_set_param(struct domain *d, uint32_t index, uint64_t value)
>              rc = -EINVAL;
>          break;
>      case HVM_PARAM_IDENT_PT:
> +        v = domain_vcpu(d, 0);
> +
>          /*
>           * Only actually required for VT-x lacking unrestricted_guest
>           * capabilities.  Short circuit the pause if possible.
>           */
> -        if ( paging_mode_shadow(d) || !using_vmx() )
> +        if ( paging_mode_shadow(d) || !using_vmx() || !v || vmx_unrestricted_guest(v)  )
>          {
>              d->arch.hvm.params[index] = value;
>              break;

Btw, considering the use in vmx_update_guest_cr(), why not also when
!hvm_paging_enabled(v)?

Jan


From xen-devel-bounces@lists.xenproject.org Wed Apr 22 09:17:17 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 22 Apr 2026 09:17:17 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1290047.1569709 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wFThf-0005Gu-Kt; Wed, 22 Apr 2026 09:17:03 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1290047.1569709; Wed, 22 Apr 2026 09:17: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 1wFThf-0005Gn-Hv; Wed, 22 Apr 2026 09:17:03 +0000
Received: by outflank-mailman (input) for mailman id 1290047;
 Wed, 22 Apr 2026 09:17:03 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <roger.pau@citrix.com>) id 1wFThe-0005Gh-SF
 for xen-devel@lists.xenproject.org; Wed, 22 Apr 2026 09:17:02 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wFThe-00ALkI-8u
 for xen-devel@lists.xenproject.org; Wed, 22 Apr 2026 11:17:02 +0200
Received: from [10.42.69.12] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <roger.pau@citrix.com>)
 id 69e89208-5cb7-0a2a0a5109dd-0a2a450c847c-44
 for <xen-devel@lists.xenproject.org>; Wed, 22 Apr 2026 11:17:02 +0200
Received: from [52.101.62.25]
 (helo=DM5PR21CU001.outbound.protection.outlook.com)
 by tlsNG-d25034.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.1)
 (envelope-from <roger.pau@citrix.com>)
 id 69e8920c-62f1-0a2a450c0019-34653e1917f9-4
 for <xen-devel@lists.xenproject.org>; Wed, 22 Apr 2026 11:17:01 +0200
Received: from CH7PR03MB7860.namprd03.prod.outlook.com (2603:10b6:610:24e::14)
 by SA0PR03MB5387.namprd03.prod.outlook.com (2603:10b6:806:b3::9) with
 Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9818.25; Wed, 22 Apr
 2026 09:16:58 +0000
Received: from CH7PR03MB7860.namprd03.prod.outlook.com
 ([fe80::f5ba:35df:1c9f:b343]) by CH7PR03MB7860.namprd03.prod.outlook.com
 ([fe80::f5ba:35df:1c9f:b343%4]) with mapi id 15.20.9846.016; Wed, 22 Apr 2026
 09:16: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=Z7tCRNbIc4yTh4Nd8f4C2fDU7EHyfci1aU9XNI5TmqgVuTtfN/ZziwEqrS+YJhSjV2wiBj0C/jSNi/iX+TzSVLd2pf4ct0TnLZ4EWKw/ur6dtu8Deo/bsIuezCxFv3TSyOIfCg9jO4cpNb3dLjcWbbMEyE9lkpqw/u3mNrkbdAXxBwrjak+WeKcuSYXCpPqsDzYBclRaxhWUFZMsHE2eln/KGXs4ImPelUQYWMHfA1eQ38FKulIWjnDRWlq6S9GTqbVZr07YpbIT5sQ87STyQm9jtjkzdRj3RpBNLK1RkmhPBVfo70Xvj5GDBz5sxTC3kg6SiSOTW9OHJYTUZdj6fw==
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com;
 s=arcselector10001;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1;
 bh=0g+DKLwwSWmGv/p05bqXC3pdcOBiysUhfepuiPPNkAA=;
 b=qzNKR9W5MPKg8UvdhtuWW2V2eYZ6VoOR6BhtaF4fgZwhUrrJah5XcS4ezIlG//RYgfU8vfpUN6QAs/XGT+nwKTB93pi4VxJ05ZtZeWnWmRy5GJiyfzIpAR6M3buu0yuWlxS7SJYPXHqFxp08zjaXxxKwGGrIY0GmPYmsPISajqserK2+ZoxOnD+Ek16hN+6bxjbaqqbwWwo7rj2MGB09Ycur1+yAQ8zz6wOnSxYUPhupjt7AJfXSwb1w3DL9yY6WqeULoXvmSh2bMVm55ObXGVeEe14045jXkiaDFPHViHUDbsiZo9Ils/v/eZqw/xg4T/KI3tB3AT5jtVPzpyzZSg==
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=0g+DKLwwSWmGv/p05bqXC3pdcOBiysUhfepuiPPNkAA=;
 b=NHzuZGkp+UCZ/P5MOSKpKYE41Vjc3+UpZO3YUHQ5Y/JqV0wJiIeVoGwl/GL7ttFU35rVf+j31/vZWgWmFFO1dLwPhZGLR3h5mS4QKr0fwNm6SU2LI2RTf8EkoNKpy8R8gYn9etB4lCDU0PsRqv4n/9wy7q9Q9dWfr+b5Q1sHpFE=
Authentication-Results: dkim=none (message not signed)
 header.d=none;dmarc=none action=none header.from=citrix.com;
Date: Wed, 22 Apr 2026 11:16:48 +0200
From: Roger Pau =?utf-8?B?TW9ubsOp?= <roger.pau@citrix.com>
To: Jan Beulich <jbeulich@suse.com>,
	Anthony PERARD <anthony.perard@vates.tech>
Cc: xen-devel@lists.xenproject.org
Subject: Re: [PATCH] tools/xenpm: fix FreeBSD build
Message-ID: <aeiSAFy_P1QoIBaP@macbook.local>
References: <20260421153224.36368-1-roger.pau@citrix.com>
 <2204fbae-be5b-4f56-ad2a-cd5692db81cb@suse.com>
 <aeedB31aEBJb2Pa8@macbook.local>
 <bb1d52a4-c344-4653-b10f-0781c2900cb0@suse.com>
Content-Type: text/plain; charset=utf-8
Content-Disposition: inline
Content-Transfer-Encoding: 8bit
In-Reply-To: <bb1d52a4-c344-4653-b10f-0781c2900cb0@suse.com>
X-ClientProxiedBy: MR1P264CA0089.FRAP264.PROD.OUTLOOK.COM
 (2603:10a6:501:3f::22) To CH7PR03MB7860.namprd03.prod.outlook.com
 (2603:10b6:610:24e::14)
MIME-Version: 1.0
X-MS-PublicTrafficType: Email
X-MS-TrafficTypeDiagnostic: CH7PR03MB7860:EE_|SA0PR03MB5387:EE_
X-MS-Office365-Filtering-Correlation-Id: 5604b4bc-2d46-4bf4-31c9-08dea04fe415
X-MS-Exchange-SenderADCheck: 1
X-MS-Exchange-AntiSpam-Relay: 0
X-Microsoft-Antispam:
	BCL:0;ARA:13230040|1800799024|366016|376014|56012099003|18002099003|22082099003;
X-Microsoft-Antispam-Message-Info:
	iMQgjnb2iselAWYdSeN+Ero5SEDezs788RVSrPHt45cmFraRITQ83Irx6eoQeQhhZeHnJLAQjbTzMLsZ2Hzk3qGPJBynM2NVWNA49SfjCa2LWtfoTZLEmWBlYRmf2k1IbZKt1o32Rn//d6Z0f340Mva0CCe+9pCE0egPMegucnX2oE/iZtHwUb7ncGNENqlwkjzRUsa3+mzGgEX6ZjVRMXFd91uPrl/ro8qQY3WInJ9lha0VoGSZYlxDovL+BRiw0DKDnJzQbpvYfkRQ75UaCWL7QequXwu3QPN6/UBKsbXKdozdXb51pOCQVkR/wkoLQjJ8LMdEL3uNaIpCSwruelh1jpomVu3/KUtAb1Kq8mdw8Lx2c7ximUjmH1588gyWIvMTfTXBR+Azf4oKgNp+IRT/Ob4Hlp47Y1uL7ZgIVh0ZosSl8y/3f/GvX+rFtwCJDxccfqrhQAwfBbTfD1LZ1tgBD0hQjmhHSu/y14aQdidkDiZ+Fku2pYS9dqVyHT4E7f9tGQCqBVdh/JboZY+TQfoYNlvw3S+Yt4MN6Pb4CRCbsIXNkR0RxmtO1upCF0WFtsX2yi5SPML+95flWid0BYXJeNM40fGgSktHHqnPyn0wLGV5ZWeBF6kDe1OKf69IJsQ4/XKJWDTstfCfjBo4AmwvM0h+kVI2llJG7vlc0wGqoMH4hAySl57BJ3jZAbhfDEBm8I26XRTzTvmeUjtDkAkLPvWkPnCwTX/+HOMg2mc=
X-Forefront-Antispam-Report:
	CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:CH7PR03MB7860.namprd03.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(1800799024)(366016)(376014)(56012099003)(18002099003)(22082099003);DIR:OUT;SFP:1101;
X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1
X-MS-Exchange-AntiSpam-MessageData-0:
	=?utf-8?B?QmlMWk1VRWw4Q2ZlWm44dVR3YlJ6aVhTQmVYMGdoSkY2YUFOa0dURlVrTkZr?=
 =?utf-8?B?M2pSUkNsK2JNOTFKZm5vcnU1THRsYXdmNnVtakgzeENYWGU4N2pQei8vbEtk?=
 =?utf-8?B?VCtZKzVnUEpOTTN1eS9GM1IwZ0RvNDVMV01rMkRKSUlQaEFlTldnc3ExRmV3?=
 =?utf-8?B?VkFUL21HK1k0QU9KNTB0NzlZdjBFRnJRL1pnUy9ZVUVyTE1pVTkwaHZWSG90?=
 =?utf-8?B?UitWYmtCOVpCL0JybDE3amhyMnBPdkJQUk5FSVFYaVYySHdTYmQ4MExjNWtQ?=
 =?utf-8?B?WGV5REpubUtUUVBrWHZzNERsNlA4T2JVdTlhYjNVRTBxUWdEZWxlaEtKM0xm?=
 =?utf-8?B?THFSNHFGTEQ4d3I1b3pmb3Z1VmxPN1hhRUQzbUJkblNNTUcyN08zMXV6OTdG?=
 =?utf-8?B?akh1T3Brc0VOdWJUQzhVd1NHZ0o0Qmw3WEg2eWFMQWpqQ3cwRDRub0ZaVnR3?=
 =?utf-8?B?RzRsM1R0T1RkanhNVWU4UW5RNG9iRFlueU9sY0p3eXBFZm9DWXVqZm5lT29V?=
 =?utf-8?B?NENXVndTY2lHY3FUTmVkNnZDWDk3WUtnQldlNVgvblFCZDl5ZXFIMW1WbXN6?=
 =?utf-8?B?VWdMTnRhNUpuZ0JNbk1za3E3WFJCVzg1VWFqaHltS2p2bXZmb1gwZXh3d1py?=
 =?utf-8?B?bEVxbklQSG84UFF1WDdON2tGSlEvbGdTS3IxVGhhMjloNkQ1dXVic0dNNTdt?=
 =?utf-8?B?U21aT2Q4anNnZVJuOWtxWG5WU0Mwc1JlUXRpWGRMcDZZTXZrRHJhZklEQTl2?=
 =?utf-8?B?d3E3ODdJc2dkSmpRUm5jWUU2MEJuRGtDbUFhR3dNZk1TM0JWVTNXR3dMNFhp?=
 =?utf-8?B?cXBGNytDWHpIZ21za0d5aWxjYWFieFM5VmFvMVI0VVBGU0hhdnlBWWg5NnVO?=
 =?utf-8?B?M3lMQXp4MFJoSEk2WVZIWHk5WE9VVTN3dk1SVDVyTTV1cDJ6bXZrVnFZWllT?=
 =?utf-8?B?MHZNcDRtbFZ2VDJZc1dmZlM4Q2Q4bVZiMlQySzhXWG1zV01wNTBuMTJrQlBl?=
 =?utf-8?B?bjNVYUVtRHJ4S3Q3TFg0VmxjcngwYUpZMU5tQzFzK0EvQjVXcVplaWlWY3BQ?=
 =?utf-8?B?K2xVUE1TL01HWkQ0dGJSVDlqN0NoSXNiSUhyOTJabXhXeGx5ZFlkOTB5T015?=
 =?utf-8?B?S1VxU1pCSzl6b1JEY2pjM1RYNHpjcytWZDByeGpFb2cxd3hJZ2xXSjlQckRO?=
 =?utf-8?B?N0JpbVpGSWRnT0pJbVRmY05TN0xnWVAvekszQlVIaldwYUp4TG1LQ3lHM1dn?=
 =?utf-8?B?VFpCeFVsdzdGTXRSQUhKUVJCKzZqbkJxSExGcTY0cElLRGJzMTdyakhkK2VY?=
 =?utf-8?B?VnJ2SzJjbXhldGhkWlVYY253VXg1ancvV3pGek5LcnlZZmcxeUN6RGc4WTln?=
 =?utf-8?B?VHJKbnFwbUpJc3RsdEo5RTRLWUVMczM4VllyQU1JOUc3YXJOTHZ4UkFlM2RU?=
 =?utf-8?B?Qk9VUXkxWXpvVnZBeEFCQXM3dU5ubitBOHpuNzAwM3VBRXR3dUNKVHNKSW9s?=
 =?utf-8?B?cnRZZE1GaEdOMzFRb242dzhZbmNsWE0rcEdVUkVkRElPMnA1YS9xVXNUYVFv?=
 =?utf-8?B?ekZwLy9vLzJ2TmJFTDlRcm5JQk9md0pXUVlnRlcvTkR5M21xMjh1R1gwdkdE?=
 =?utf-8?B?TXBPeEJHMjdRNURIZ29od1hTRzc1cEg0ZkZmenpxU0J0TXRycnFnVG5CcEtG?=
 =?utf-8?B?dGpCcElGK2g2b3BtMjlaMmFHZmZMT3ZHWEd1ajdvOW9wZDZ3YmthMXJHSjlB?=
 =?utf-8?B?Y0ZsVU5FV0ZGVzF2NjAvNHh2eG9ucjY5a2g0YXVQTmZIWUJWRFp2clRiN21R?=
 =?utf-8?B?N0tNekFRRUVuT3hldVB2QUNnOWQyWWFwR3ErUHlUQm85dFBjd00xblBzdUVH?=
 =?utf-8?B?MmNPTHZ4aERVMW1TSk9RSkdZK2ZuZVVscjVXd1Rpb2E3eW5vNHdvTW8rMzVk?=
 =?utf-8?B?dS9XOFUvblpzYjg1MktDREszUzRpODlrdzRmd0svT29EbUxDNDhnK3ZiQXJ2?=
 =?utf-8?B?bGNheFhSWGRqQk8rc08wSC9kS1hWYXl1bE9Fajd6b3RWR0wyV2pyL0hWYmpH?=
 =?utf-8?B?K3V5eitNTUlQV0hScWFKNzR4clhZbU9DT0wvSERFYjM3L1B0ZGlydkZqM1BE?=
 =?utf-8?B?VjlkOHFkU1l0RDRJcVRGRC9OMjJFMTVGdzI0QjVONERsNkRHR3NEV0xjWXda?=
 =?utf-8?B?ckRCSElpTjI1aHFSNXZOSWZYWXNzemswdzYwYWpDNkJNVWc1MXoyc204dXVz?=
 =?utf-8?B?bHIwaDZ5WWNRK2NTL2tuUnBTSmhkODg2ekE0N01FT2JEbll4eG9hRWZ5L2Nj?=
 =?utf-8?B?Y250dDNyQnNheFVPdlcwOHNQSE1wZHQ2V01ialFZcU11K1ZFcWdoUT09?=
X-OriginatorOrg: citrix.com
X-MS-Exchange-CrossTenant-Network-Message-Id: 5604b4bc-2d46-4bf4-31c9-08dea04fe415
X-MS-Exchange-CrossTenant-AuthSource: CH7PR03MB7860.namprd03.prod.outlook.com
X-MS-Exchange-CrossTenant-AuthAs: Internal
X-MS-Exchange-CrossTenant-OriginalArrivalTime: 22 Apr 2026 09:16:52.5256
 (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: hVMwASjO2PIh2gkoTQcimd0Yy57hiqXEKRO10CiW0MNmNgBEa5AHxDK61saBZeF2SULo6t7nTIZHRcKhQrhhmg==
X-MS-Exchange-Transport-CrossTenantHeadersStamped: SA0PR03MB5387
X-purgate-ID: tlsNG-d25034/1776849421-F5E0ECF5-248B9789/0/0
X-purgate-type: clean
X-purgate-size: 2104

On Wed, Apr 22, 2026 at 09:15:56AM +0200, Jan Beulich wrote:
> On 21.04.2026 17:51, Roger Pau Monné wrote:
> > On Tue, Apr 21, 2026 at 05:35:57PM +0200, Jan Beulich wrote:
> >> On 21.04.2026 17:32, Roger Pau Monne wrote:
> >>> --- a/tools/misc/xenpm.c
> >>> +++ b/tools/misc/xenpm.c
> >>> @@ -1377,7 +1377,7 @@ static int fetch_dts_temp(xc_interface *xch, uint32_t cpu, bool package, int *te
> >>>      {
> >>>      case 0:
> >>>          /* This CPU isn't online or can't query this MSR */
> >>> -        errno = ENODATA;
> >>> +        errno = ENODEV;
> >>>          return -1;
> >>
> >> "No such device", however, isn't quite what we want to convey here. If no
> >> better error code can be found that's available on FreeBSD and Linux, I'm
> >> inclined to suggest that we stick to ENODATA where available.
> > 
> > Seems like a lot of complexity, for very limited usefulness.
> 
> What's complex about
> 
> #ifndef ENODATA
> # define ENODATA ENODEV
> #endif
> 
> (perhaps with a brief comment)?

IMO it's best if we can avoid instances of ENODATA in the toolstack
code base, specially if it's individual ones like this that can be
fixed.  Otherwise new instances might appear elsewhere, and we don't
want to be adding this bodge everywhere if avoidable.

If we had a sizable usage of ENODATA in the code base I would indeed
recommend such define approach.

> >  The only
> > usage of errno is to be printed in the error message, and for the
> > purposes of this function ENODEV is already unique in the function, as
> > ENODATA was.
> 
> Right, but "No data available" is more precise than "No such device".
> 
> > FWIW, I think ENODEV is not that far fetched: the CPU being offline
> > or the MSR not being present seems like what you would convey by using
> > ENODEV.
> 
> Yes, there is a connection. Hence I'm not outright opposed, yet I think
> we can do better.
> 
> Formally Anthony is the maintainer of the file, so in a case like this
> one maybe he ought to have the final say?

I'm fine with letting Anthony resolve.

Thanks, Roger.


From xen-devel-bounces@lists.xenproject.org Wed Apr 22 09:33:21 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 22 Apr 2026 09:33:21 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1290083.1569777 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wFTxP-00016q-41; Wed, 22 Apr 2026 09:33:19 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1290083.1569777; Wed, 22 Apr 2026 09:33: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 1wFTxP-00014q-0S; Wed, 22 Apr 2026 09:33:19 +0000
Received: by outflank-mailman (input) for mailman id 1290083;
 Wed, 22 Apr 2026 09:33:17 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <Oleksii_Moisieiev@epam.com>) id 1wFTxM-0000qu-Rm
 for xen-devel@lists.xenproject.org; Wed, 22 Apr 2026 09:33:16 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wFTxM-00HYU2-8F
 for xen-devel@lists.xenproject.org; Wed, 22 Apr 2026 11:33:16 +0200
Received: from [10.42.69.10] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <Oleksii_Moisieiev@epam.com>)
 id 69e895d9-5cb7-0a2a0a5109dd-0a2a450abbdc-18
 for <xen-devel@lists.xenproject.org>; Wed, 22 Apr 2026 11:33:16 +0200
Received: from [52.101.72.72]
 (helo=AM0PR02CU008.outbound.protection.outlook.com)
 by tlsNG-4011c0.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.1)
 (envelope-from <Oleksii_Moisieiev@epam.com>)
 id 69e895db-56b3-0a2a450a0019-346548484ad9-6
 for <xen-devel@lists.xenproject.org>; Wed, 22 Apr 2026 11:33:16 +0200
Received: from DU5PR03MB10263.eurprd03.prod.outlook.com (2603:10a6:10:519::5)
 by AM9PR03MB7710.eurprd03.prod.outlook.com (2603:10a6:20b:41f::22)
 with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9846.19; Wed, 22 Apr
 2026 09:33:14 +0000
Received: from DU5PR03MB10263.eurprd03.prod.outlook.com
 ([fe80::8c9e:b301:61c0:3908]) by DU5PR03MB10263.eurprd03.prod.outlook.com
 ([fe80::8c9e:b301:61c0:3908%5]) with mapi id 15.20.9846.016; Wed, 22 Apr 2026
 09:33: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=dnDgQtjIk5mjUzWBH84HHV1XHL1DX9kNXewpHWWG+gR38xOc9N8yembUMnQhVI2F8nNCchaxVe2pxnnwVUXV7OHwWoH9nAGCfd5gfF0fvVzy6VEjkcRap51FYMGI+PhTWaTOJ8BgIvk0Z11TOkf9VWr6uCaS9xca3dI0AvA0SWLqnkj0Q5cx0lv5vM4XDLN6TW7TcfJnHrAAenrhI+iSpU2EGYyHEfbGaYJ/eaYG2+qTvKvjwqGTFkLsKhWJjaxpTZq1qnEbEe3Qeus3Vpkt13K8+cWxQGn6ivu83JcFjEduDFeIyLmnglz7FZMkG+HC61EjguKhxBUVBWoF4Avz0Q==
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com;
 s=arcselector10001;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1;
 bh=pZFIzJHIEhj0/DcfLKHa9Srjz1IUu8KC+j6B9uuxT7A=;
 b=eCtyB872bUfTOnXKpeGynGhsiFvkrs9gzArU1jnYqXm+XLRSaxV5uLNPYFgpKK8tGHzxcWA4Ok6JIdmfWqTm77SbmJ2Ryzl7gigkiVrEW3J/ENyycKmZMaeqCWidKc33bnueY/p31WLz1ZO7iGkK2+Qy770mjY75Ru0x4msaTI4yeXAKtvYoXjinNfQRQVbLkxGDCUis9TJw2vEYbqzf8CIJhcixb4VMo3RFg2zCLSCoET3GOkZTTvF10Cyyjmq/ZLULq0Lxf3Nqow0QEj8UsbnhNxfoDRaEJ02H6y6CBpPcSII7VS5luAUXGe9XxIqtnC8/GB2hWf97O5h+hj7EzQ==
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=pZFIzJHIEhj0/DcfLKHa9Srjz1IUu8KC+j6B9uuxT7A=;
 b=YQzckkDQjcd8cJl9Un+HCEwL/RSyHbNYiUMdtPq7aedmWyvkuMHuiR4O1CJu1usBXikysgn6b7NDfTeGvYi/7yePJQGTKiDRfR2EBr2yIlStT4v8+Ji4isbZU/xL+/nITmk5GN/z2ZXfzQOiz3KXCXP2sDkO3Z+WMFgy3v2dGPFGzl8i9T1McXpFJ995Z3PE3U5mkQENvOVHFvK24pQysGaYk6IUqcayUSaXZHgpLFyexxiESZhgFGdsh/XvwvW5H8/LQsVnbCWlDi/HJKmeJbhwUCu7GNPmS1826AjQc+iYE/k8KNnw9ncG5CU1AaOlCf7lfhVHrhlnzod/vn7ZBA==
From: Oleksii Moisieiev <Oleksii_Moisieiev@epam.com>
To: "xen-devel@lists.xenproject.org" <xen-devel@lists.xenproject.org>
CC: Bertrand Marquis <bertrand.marquis@arm.com>, Julien Grall
	<julien@xen.org>, Michal Orzel <michal.orzel@amd.com>, Stefano Stabellini
	<sstabellini@kernel.org>, Volodymyr Babchuk <Volodymyr_Babchuk@epam.com>,
	Oleksii Moisieiev <Oleksii_Moisieiev@epam.com>
Subject: [PATCH v3 3/4] xen/drivers/char/cadence-uart: fix IRQ registration
 failure propagation
Thread-Topic: [PATCH v3 3/4] xen/drivers/char/cadence-uart: fix IRQ
 registration failure propagation
Thread-Index: AQHc0jsKDUGFeFpJykGixIc8urTLVg==
Date: Wed, 22 Apr 2026 09:33:14 +0000
Message-ID:
 <fc65ea2c9dcc7c3bc632c8c1a9f14eeb5de6d9b9.1776850201.git.oleksii_moisieiev@epam.com>
References: <cover.1776850201.git.oleksii_moisieiev@epam.com>
In-Reply-To: <cover.1776850201.git.oleksii_moisieiev@epam.com>
Accept-Language: en-US
Content-Language: en-US
X-MS-Has-Attach:
X-MS-TNEF-Correlator:
authentication-results: dkim=none (message not signed)
 header.d=none;dmarc=none action=none header.from=epam.com;
x-ms-publictraffictype: Email
x-ms-traffictypediagnostic: DU5PR03MB10263:EE_|AM9PR03MB7710:EE_
x-ms-office365-filtering-correlation-id: 1e421a2a-4a1d-4eb8-cc13-08dea0522d76
x-ms-exchange-senderadcheck: 1
x-ms-exchange-antispam-relay: 0
x-microsoft-antispam:
 BCL:0;ARA:13230040|376014|1800799024|366016|38070700021|56012099003|22082099003|18002099003;
x-microsoft-antispam-message-info:
 vU5X5BYh5+FQgee4CHMZg9N3WUbsjtf2WGRkt8v/GvadazB7P7MqyFCWmpPwKjc54ppad4Xf0Y4Yg2/G4hNPS05hHE6rn9K4YfNeIhgbRCC9qfE0OWVzt/yU1xHzf1SeZkSw001RTw2IkfuL6n1NPauVrgx591Lou1I+SfLW00/YRGFVBwTsnT1eqzKNTHatuay2wt6Du+SxEOyhEbxRdnaHkZFeX+x52kLdaS1GeNmQG0nxmIAQPbcVRAWvOic+uEYNuoch378c905ew290K9Noh0U/RGUD40CdRs5MaGFaMdCtiviY4+GqHSunL6Jv/uUoOWThYpQSHyrLm4zVpBU30pQPV2/nLk/yatEtzkyOJQJbi40RmeXXJumJy62Vdh/VVHvo6B3JHiZ8i7GdMbtwq8lsHWE/7AqSO0BKfYtXiUIBdXXK7khrPHeS9H3Q60rM0H02ENEsBP4vt80afxlfAdRg7iPUS4X/aVtESHQy5pPL9e8z5jKF7DQL9unmzxWzNe8AgPOYwnh/bq9Z/p3b+WwL6ooXJmtfUxyUv7bdtomWAY/uSwKordaIla+gFQs9ACOU1r0FsJgfvSjg7ALWJnK6Qzf80JeO3F98KKr9hy1L+KB1wzZyTU5zdpukk0GEc6Pqpnc8bWQqxjdafS/H260PzC1FR82ZeezejWYEO0D/eYBTJlQVNwx2Ub7Xhmn4eXZKaG5VI7cTHhUZu624UB3D8vU5N1YJKYEEsaiTfWq5vCxE81p6wyKFTA9bNr6M0FPnddQVOnPrQHeyCjAfi+SzC1XRpEXi4ll/n6g=
x-forefront-antispam-report:
 CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:DU5PR03MB10263.eurprd03.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(376014)(1800799024)(366016)(38070700021)(56012099003)(22082099003)(18002099003);DIR:OUT;SFP:1102;
x-ms-exchange-antispam-messagedata-chunkcount: 1
x-ms-exchange-antispam-messagedata-0:
 =?iso-8859-1?Q?N8GMvou/uNo5S7jOjhvTlppR/XSB4L1bEosdS9gqXf9pUTuYtfi8EPcJjx?=
 =?iso-8859-1?Q?PaIFHMwwaA00iszkRahO2oCTjELsLQaFuUP+pEHX2UlqE1LoUaJlPIw1VM?=
 =?iso-8859-1?Q?pF7SuhXtPghZp6y/NiO8lzreX6021KRFHsWtynEXk57XojH6tKcp93jyaQ?=
 =?iso-8859-1?Q?i3sJD54MzkZ9fiAm5PJBxh6ysbuji/o9oZK2YWkf1HK59JQGrxlTBgwjBi?=
 =?iso-8859-1?Q?y2PnLmInS7fEN7gIiK2Ht/LbXd2zZxvoOeZ0pP8SqyJQfaBZtht+E25cAK?=
 =?iso-8859-1?Q?FazjDnsOI/ysIrxV2Q2ppuH+JcKbvep/ptFvNUXnEh0VJlri87av0jAMSS?=
 =?iso-8859-1?Q?e3ZREyo5+vSEKJrgupUymdf05g5K1hI2HHK8XsIrLXQLHjwTzKp2ElLYMh?=
 =?iso-8859-1?Q?lVyPg/ICC7JpnLcyG0YP2DnIRf4RuL+Vw+ODkT+J6ZGkX03X34/SGgdP7t?=
 =?iso-8859-1?Q?Q+l/ZCY353NhTh5h8WHrUSDAW6MH/Co2En8qmfX84huKC3VmeVkMFtXJf2?=
 =?iso-8859-1?Q?uMJbvrlbc98PKTMy1es/dhl3zZ25+YMNQUg7h0v8CPhOrU/+h7rF/lC3eP?=
 =?iso-8859-1?Q?MAuZPC1c3NXQZXUMFDX5qEWhWrGEKesUGgr6y3xriufO8dkZT/t+2lnVuD?=
 =?iso-8859-1?Q?CHwnyL1VQrSCiubwOFJf2RfT+zScgP2J0zltpAgSqcGO+oz2dzluLJ9Vgc?=
 =?iso-8859-1?Q?WLlG6pb2cHNPwjxUXgEDUKFYhe6NgKwdqd/4jd5ud7QVQrOKnRlEXz5ZDy?=
 =?iso-8859-1?Q?vqXfwDQ3DssIwtoEbD5Mvil7H1A8QYm2wGzpJatvYHNeCdCZT5uM7glWWF?=
 =?iso-8859-1?Q?hW+Hw9hTqYfZZxoLHCC4NHgwzajJgv8DcIhglUQh4NA5j9Db96h6oo7duO?=
 =?iso-8859-1?Q?wjQHLKKAzGIkHNBxbyifX97lXbsVxxvwo8QG4OhrX0uILKqV0TmpPScX/0?=
 =?iso-8859-1?Q?YapsjCuKT45O8s5jiBetzMRXxET6C7wQkSU+9+goMCgDzaQYyj1pIzw+wF?=
 =?iso-8859-1?Q?AAwLqLgeU5aDME3d5Vdvram8X68BDPa7QNfOa6A3wEEhK8VtKKO7Ghpl+6?=
 =?iso-8859-1?Q?V8mb/qhScPDEAb/b4VThuic2NSqclnvy2XsimYQRXLe0+YZGny5zp7gPYT?=
 =?iso-8859-1?Q?r4fpx9Nkjz/YPbp3W4VIbMGHfsn3gUC2MxEUmAYc+48a2jD12FGWIj0aAf?=
 =?iso-8859-1?Q?Ubqm0GxP22GzqSVsF2wgjVUHR5MTR/TRw46ym1JYTdgpP65Bd6QfihuoMP?=
 =?iso-8859-1?Q?QMAGrXeRdCP2SH2TQOPsiWPOKdzr9tFrJxmLnOL40PSf/orG9TEGTuxAT9?=
 =?iso-8859-1?Q?+wF2nLDTo4TXiCqhZoTlRu3L1jpxcStaE9BB85O+6AeboYXjGDc7Od5CpQ?=
 =?iso-8859-1?Q?ZQUb44EfccanSx0iPvoNUwGYBC91BArGxpS3PjQ2wsZN5KX0a4gvFmtX5A?=
 =?iso-8859-1?Q?pjzBkaVaWLhSH8V7CoEA+f3ZYn4GK/vPwo9Q24kQP5rd7sJ3VmGlzsoGJL?=
 =?iso-8859-1?Q?PulrcO3jfp0miichGtQv7kp5x9j4ME/zFs7vq0UnkC4U7b4/QetJzDUobx?=
 =?iso-8859-1?Q?YBD2Dd28Mh6xMtN8Vh3KDnygXnvnlX/3f41q+knIXwQAdAygKgZJ6DfVPn?=
 =?iso-8859-1?Q?zgtzk3K1U07B6vUTdnKbQGVctLgU4Cj3QsupN3z2z4yAZMTLVjZ/9109uY?=
 =?iso-8859-1?Q?G1tFz8u9F25CMWWpsrk+3lrdiNhhkso2ifIfEvC7jFhM78BFr27H5Dau9T?=
 =?iso-8859-1?Q?Qe4Mo1TqLxj09JpGsn7Z0GRDT2q+wmNLWJ2ZrDieml1z9s0SrV4IfnhGe4?=
 =?iso-8859-1?Q?hOUwhNSiZ/Xfq5I6Uhj/Ya/koPF9n1g=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: DU5PR03MB10263.eurprd03.prod.outlook.com
X-MS-Exchange-CrossTenant-Network-Message-Id: 1e421a2a-4a1d-4eb8-cc13-08dea0522d76
X-MS-Exchange-CrossTenant-originalarrivaltime: 22 Apr 2026 09:33:14.3355
 (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: ZKswPy/+HuWuXumqhpQTEsYXxoI0UguotPh5LEUd9dSAeMjr1jNaZAaS4GuloBmIAV89jsDc30zPKGr3WOicrrOquW5bZzaqsn5rj5GmZPM=
X-MS-Exchange-Transport-CrossTenantHeadersStamped: AM9PR03MB7710
X-purgate-ID: tlsNG-4011c0/1776850396-45F698B7-E2206A9F/0/0
X-purgate-type: clean
X-purgate-size: 2667

In cuart_init_postirq(), two code paths could reach the
interrupt-enable write to IER without a handler being registered:

- When no valid IRQ number was provided (uart->irq <=3D 0), the original
  positive-condition guard (if uart->irq > 0) skipped the irqaction
  setup but still fell through to the IER write, enabling the receive
  data interrupt with no handler installed.

- When setup_irq() returned an error, only an error message was
  printed and execution continued to the IER write, arming the
  receive hardware interrupt line with no handler to service it. On
  platforms where the GIC receives this asserted line, the result is
  either repeated spurious-interrupt warnings or an unhandled
  interrupt fault.

Restructure cuart_init_postirq() to use early returns in both error
paths.

Signed-off-by: Oleksii Moisieiev <oleksii_moisieiev@epam.com>
---

Changes in v3:
- clear pending error interrupts before setup_irq call for cadence uart
- change uart->irq <=3D 0 to uart->irq =3D=3D 0 since irq is unsigned

 xen/drivers/char/cadence-uart.c | 22 ++++++++++++++--------
 1 file changed, 14 insertions(+), 8 deletions(-)

diff --git a/xen/drivers/char/cadence-uart.c b/xen/drivers/char/cadence-uar=
t.c
index b2f379833f..8961d39de1 100644
--- a/xen/drivers/char/cadence-uart.c
+++ b/xen/drivers/char/cadence-uart.c
@@ -72,19 +72,25 @@ static void __init cuart_init_postirq(struct serial_por=
t *port)
     struct cuart *uart =3D port->uart;
     int rc;
=20
-    if ( uart->irq > 0 )
-    {
-        uart->irqaction.handler =3D cuart_interrupt;
-        uart->irqaction.name    =3D "cadence-uart";
-        uart->irqaction.dev_id  =3D port;
-        if ( (rc =3D setup_irq(uart->irq, 0, &uart->irqaction)) !=3D 0 )
-            printk("ERROR: Failed to allocate cadence-uart IRQ %d\n", uart=
->irq);
-    }
+    /* Don't unmask interrupts if no valid irq was provided */
+    if ( uart->irq =3D=3D 0 )
+        return;
+
+    uart->irqaction.handler =3D cuart_interrupt;
+    uart->irqaction.name    =3D "cadence-uart";
+    uart->irqaction.dev_id  =3D port;
=20
     /* Clear pending error interrupts */
     cuart_write(uart, R_UART_RTRIG, 1);
     cuart_write(uart, R_UART_CISR, ~0);
=20
+    if ( (rc =3D setup_irq(uart->irq, 0, &uart->irqaction)) !=3D 0 )
+    {
+        printk("ERROR: Failed to allocate cadence-uart IRQ %d\n", uart->ir=
q);
+        /* Do not unmask interrupts if irq handler wasn't set */
+        return;
+    }
+
     /* Unmask interrupts */
     cuart_write(uart, R_UART_IDR, ~0);
     cuart_write(uart, R_UART_IER, UART_SR_INTR_RTRIG);
--=20
2.43.0


From xen-devel-bounces@lists.xenproject.org Wed Apr 22 09:33:21 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 22 Apr 2026 09:33:21 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1290082.1569774 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wFTxO-0000y6-UV; Wed, 22 Apr 2026 09:33:18 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1290082.1569774; Wed, 22 Apr 2026 09:33: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 1wFTxO-0000wP-ND; Wed, 22 Apr 2026 09:33:18 +0000
Received: by outflank-mailman (input) for mailman id 1290082;
 Wed, 22 Apr 2026 09:33:16 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <Oleksii_Moisieiev@epam.com>) id 1wFTxM-0000qp-Lj
 for xen-devel@lists.xenproject.org; Wed, 22 Apr 2026 09:33:16 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wFTxM-00HYU2-2Q
 for xen-devel@lists.xenproject.org; Wed, 22 Apr 2026 11:33:16 +0200
Received: from [10.42.69.10] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <Oleksii_Moisieiev@epam.com>)
 id 69e895d9-5cb7-0a2a0a5109dd-0a2a450abbdc-16
 for <xen-devel@lists.xenproject.org>; Wed, 22 Apr 2026 11:33:16 +0200
Received: from [52.101.72.72]
 (helo=AM0PR02CU008.outbound.protection.outlook.com)
 by tlsNG-4011c0.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.1)
 (envelope-from <Oleksii_Moisieiev@epam.com>)
 id 69e895db-56b3-0a2a450a0019-346548484ad9-5
 for <xen-devel@lists.xenproject.org>; Wed, 22 Apr 2026 11:33:16 +0200
Received: from DU5PR03MB10263.eurprd03.prod.outlook.com (2603:10a6:10:519::5)
 by AM9PR03MB7710.eurprd03.prod.outlook.com (2603:10a6:20b:41f::22)
 with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9846.19; Wed, 22 Apr
 2026 09:33:14 +0000
Received: from DU5PR03MB10263.eurprd03.prod.outlook.com
 ([fe80::8c9e:b301:61c0:3908]) by DU5PR03MB10263.eurprd03.prod.outlook.com
 ([fe80::8c9e:b301:61c0:3908%5]) with mapi id 15.20.9846.016; Wed, 22 Apr 2026
 09:33: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=Mc1L7OodYJLH/U/RtB9sH6osP3vKbUei9kiYh33JYenxEzUbOEOYoUjxtPVPFo5j81lJxOT8oM8Y0NHY0RPSOq64dud1ADK03GsJrU1fTTcc8+O4OC2omNdhRtOquSGklvz1KfAmHwaxZmLLMOeAzVcbuVywpnpqbAnS3p8RKZnVKJo31OF2SZY3wvp8ZyfKVNyYHbUq5wWzmSd7hfQh3PJvt0e9Q2kw9VHNmVQERVIssovLkNk57uAocLilBZktY0rdkj1nkdjganNGoUfFtCgv5JbSwyQzkAlcGoHDZyVYIAdIEWjxG7uY4UkTmHTQd7x7lgI7ByAnLSxhy36qjA==
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com;
 s=arcselector10001;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1;
 bh=CFQIFsP5+diQWT/tmHpgEU6ehFAOV8r9AIbIJgv6aIE=;
 b=ex7elLNLK6Gvp60ey6HaE9Blf/9wWei6VAqDO37o7wC8myxejgtFwc8kCPE1wEWnVDOumJhCOoYeohcoVNzSuGkDQ+igR9KZHO/IwfrKa5E/HJfCiGcVwRqzrHXf9FWPSqp6aHromZzAYAbYKbRTv9VlO9hinDJNAZDgtF4rcJPUrqwliOa/go838P6qh8XXyQP2WWPrH0wRpXaR3CyOBn1i0GALSVc0x3KRUNkgzNpxONMYMxYkobZTEI//mhSQMqyPDPlmHXS6mvSfWRsePzY0FuGe6wn11QTrMbBQvWeEoQeDmu+BxjMf67UZ4j2dHOlKUX3GizcDpHTakB0zQw==
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=CFQIFsP5+diQWT/tmHpgEU6ehFAOV8r9AIbIJgv6aIE=;
 b=FnhRXs2tngTum8OgrlHNa2iun/7aRZuRPRbfGSjSZSiVFsPURqRM9qOAjit3mNuPowRX4wHFfMbzvmPfQAGKiCfAhVFhq5jv3TA5lap+S0GKbyLiQHRZ1+stjE4CMr0+IVGprs7vFgh6yEM7NmckJ4bz8QEBic3e7CGjOG1zdicD3pS5FhcttI1UoOABJEJJeEtNGcEXRj8JFYeOg5HGEM1WdnfkwXbzrjLmKoXB62+upFZeCRvmHVGQ0DOLZRNJKg1SHiaePbHW479uRd/EdxpQ5y8aaxmp89y2y6HdY40WsLL9qn4j1au0XHqnK6FbhpCTAoO2XVchhgmnTmmU9w==
From: Oleksii Moisieiev <Oleksii_Moisieiev@epam.com>
To: "xen-devel@lists.xenproject.org" <xen-devel@lists.xenproject.org>
CC: Bertrand Marquis <bertrand.marquis@arm.com>, Julien Grall
	<julien@xen.org>, Michal Orzel <michal.orzel@amd.com>, Stefano Stabellini
	<sstabellini@kernel.org>, Volodymyr Babchuk <Volodymyr_Babchuk@epam.com>,
	Oleksii Moisieiev <Oleksii_Moisieiev@epam.com>
Subject: [PATCH v3 2/4] xen/drivers/char/pl011: fix IRQ registration failure
 propagation
Thread-Topic: [PATCH v3 2/4] xen/drivers/char/pl011: fix IRQ registration
 failure propagation
Thread-Index: AQHc0jsKoK+EtepSVECSPLBLZ3eygQ==
Date: Wed, 22 Apr 2026 09:33:13 +0000
Message-ID:
 <6945fddd3a6df7ed9d9ca9efa7c126ab210d0420.1776850201.git.oleksii_moisieiev@epam.com>
References: <cover.1776850201.git.oleksii_moisieiev@epam.com>
In-Reply-To: <cover.1776850201.git.oleksii_moisieiev@epam.com>
Accept-Language: en-US
Content-Language: en-US
X-MS-Has-Attach:
X-MS-TNEF-Correlator:
authentication-results: dkim=none (message not signed)
 header.d=none;dmarc=none action=none header.from=epam.com;
x-ms-publictraffictype: Email
x-ms-traffictypediagnostic: DU5PR03MB10263:EE_|AM9PR03MB7710:EE_
x-ms-office365-filtering-correlation-id: 07b75fff-a301-4f0b-dec0-08dea0522d46
x-ms-exchange-senderadcheck: 1
x-ms-exchange-antispam-relay: 0
x-microsoft-antispam:
 BCL:0;ARA:13230040|376014|1800799024|366016|38070700021|56012099003|22082099003|18002099003;
x-microsoft-antispam-message-info:
 TTgieKNx6ekKibWYb3xUCep6gyneisNg0BnjULac7iG/HqnxSUcJGj1vg8gwNOB0/gqKukaoPgjRjO0skdjeIITmXmgxtcJdWcRrm+IC5L4T7A74fhZf1MWq85L5P9A3wjYKCJL1WyDOy/TgC/EUjtwBHzxkCViVr98S31fzqqmeA7dv7bhvWwjr5jdTPvTYah4+FfZXF8uNWDfkHyJ1fvPQ/DIB+TrkKbXttjMcyp7ol7XZxA5WtVqNESStXx/5aNhPEQzhTEo2ZA61EtVNgYCw4qASQ3lIYVZm/IjacmUPVranDYWp9E0bq/4sztDpIByCPwIpwnOK7cXU7bq63hUP9KPHwjn6d5xlkZ6f4G3Tnngrplf2wO0g7kaVCppftMy1MWv4tou4iGVvHdSlcuhwCa4vWggs/j6QYqHCe4/U1jaL781SiKRUyzUqZtKIWgck5ISgGe7nBxjV/hc5k93dnewrb3eLeQz7TsxKyribJ2V0+wX29WQr86HdiJS04rtxB7k2hrMLFO9OP+4aOhrhJjjv+1rfnfHDPjKeg3zvnl9NlB7jHBLf3yEn0BrnpIWfyPG2wqdSviIIL+MZPbEMArjPPXq5TxFSuGCVs7Y7Qis7umZJbRo9sQS4VNRNuXfZfVIAbOFtbFBHnYUa3Wm7U/KwDrYfWJXVjCrw5ovnZn8HVL1ooKcyHOnnMsyHYmY/GO6I7NQ4r19Fki0vDgobsbNbjrVf0B80z2SPtL5FRprrhwtD5yBOBcagJZuOijxypts+LvEC8GLwbN3xxGFw/s2nr25fqnHJT8jUvUA=
x-forefront-antispam-report:
 CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:DU5PR03MB10263.eurprd03.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(376014)(1800799024)(366016)(38070700021)(56012099003)(22082099003)(18002099003);DIR:OUT;SFP:1102;
x-ms-exchange-antispam-messagedata-chunkcount: 1
x-ms-exchange-antispam-messagedata-0:
 =?iso-8859-1?Q?CkKrIX9931ClTE9Oq+XiYXMlKeeGnepLUzcSflklOaW+sEBNkt1IP6sgEq?=
 =?iso-8859-1?Q?bnQ3pZRSdigu3uD0RI5Lc3Dq9gPfdG/DKExX1tO1jMPXbokgraOkH+LcwX?=
 =?iso-8859-1?Q?mTjx2ybteZbZeSM879syAN2NIoAS+LQQTmcvJ++NsnpHD0uC08G69H9gIV?=
 =?iso-8859-1?Q?Jinz9MYhChgoXAKE3g0iRsiXIY0Pu+/GJs5yVNR3M7sd4w2Iy4TpqgbBI+?=
 =?iso-8859-1?Q?xl/bAIYQkT3ACRfk2Ph286yd5x/mIGCw7hdBGP5NPsWYCi9fKohcgd7DlV?=
 =?iso-8859-1?Q?9t5z07mYOFEvPdjCidkYRkAXbBqbX1wKkJHy1jBiu39EkVEOFPiBM40lvJ?=
 =?iso-8859-1?Q?YV+lKkvILnzpO09oqhD9UrfH1T0DcoDBcelMFb2Jq2KChi04M1nshDrFR1?=
 =?iso-8859-1?Q?N9KFmIx58Ky0H7C4Yt8VfXrAdhS3n4wns4KJtHOyWr+wF1XqX4IJ2j2qOo?=
 =?iso-8859-1?Q?rURZBSBPE5IxnFWCz3Rm6+ZlBem6DOPnFOVWh46CcGlhI3uhaolBKGfTgW?=
 =?iso-8859-1?Q?J3pnEb0dvSODWbiBYBIFdjX57R2G4mqJpGkLQfcwpVwSJvo5paWi4mmbx8?=
 =?iso-8859-1?Q?K7896yjVAyx8jkFFSFjR1jGjeNTI1YnB6Jw5I9Fnihe7QUnGqeb0Jy9/15?=
 =?iso-8859-1?Q?bqN9dlCCP8fq5R+TpqUsCQUbO/7UxPH62YXjEDQSaOn/WRtqWSbAZoicAS?=
 =?iso-8859-1?Q?nV6aPfMjolQy56zG9RdsK6kUEyHQ6N5dfIxldx+E+6NgD1XX8QrY+udY8/?=
 =?iso-8859-1?Q?IxFd36eqt4Bev/Q80KqCZQkQQs6b+7uhGEoAmQQCEXUiLHSVlu84CnjG0n?=
 =?iso-8859-1?Q?rBYSxGMgR4VyNIErcrWHccH7jw/FuPNlEKDnjQ01t4uC1OX4esQOHbQN+Q?=
 =?iso-8859-1?Q?wrCM5sFJDdWIz49Im1kiZpMqPYWoUsJxfniF9hkSFNEreux6QWoy0cr0uG?=
 =?iso-8859-1?Q?VDPVFyfiTaLw89nw8Fwka5gKmU7KkfmVHSQdmYUo4TgcZqmJqpdIGxMcYv?=
 =?iso-8859-1?Q?aJIBIE2552pOcAgnJyfYiMsjEpo6TAd35ZrZz79SviDNMixD8RGzhueSeL?=
 =?iso-8859-1?Q?zAko1JvABak1aVT7hypZ3tQCD7fiytmq2k+RLPqpwJ/1RXqM4I3QiirvpY?=
 =?iso-8859-1?Q?fVE29Nmvga6BpnES+azJj5HZLFd3v5D4alRxf8Zn7TzEZMnwAtjCQxPYjH?=
 =?iso-8859-1?Q?3G45CdtmCZd0qUzADlCv0VYuagJPfvNsXWcercNCOxv31qq5vFhEkxYyH0?=
 =?iso-8859-1?Q?TJiwD3uPPWzbCRGqchnk+jD9G+N/fQv+Ih2FGJxbrmyB1vEYApglaVPSVN?=
 =?iso-8859-1?Q?h9CsvDGNRSrp4fk1LCaApZ7biVt1e2r2SE1hK/H/qVTESqaXwf++wDhm0J?=
 =?iso-8859-1?Q?UfH12ogdBj/PR7lbnUJeoDxltFJh1Gv2T8XFI6cPlilAN+W8qDZLKfW5zw?=
 =?iso-8859-1?Q?6S5ASCZEE3eq6gxjWATQJAdcRIU5cvexzh76T61boUKHmtPT9ncjjDc/hN?=
 =?iso-8859-1?Q?XC0cTcO2y3J3TUeMrX3XKKSvmnbJSPNPm/hvGuHYPk+HMaxRD9f60oQiS2?=
 =?iso-8859-1?Q?2PZwSn2JT0LdF0ZTPX4zwkNNsgEC06cNjWGC9tDKXPt4chKuLoA0GM+Osa?=
 =?iso-8859-1?Q?pzOP4b24JP2AqCKT4Fa+9KhaUYuFSxnD8dM3MOK8yzvPnelPJVyG218kkf?=
 =?iso-8859-1?Q?eN1PnyFLicc1Hvd49JTjjguqogI0SJDYTZ6kQ03FTQL8lKHCQVmx3WZTgu?=
 =?iso-8859-1?Q?VRZCo+qzFE9fUDnOF65fA9r4ueR9SpgQzIXGLu9sdAETvZ8KV/dsLi2wiu?=
 =?iso-8859-1?Q?LH85lmvy0QLiOVKe6jVQz6YhKD5QUGY=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: DU5PR03MB10263.eurprd03.prod.outlook.com
X-MS-Exchange-CrossTenant-Network-Message-Id: 07b75fff-a301-4f0b-dec0-08dea0522d46
X-MS-Exchange-CrossTenant-originalarrivaltime: 22 Apr 2026 09:33:14.0000
 (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: M2WDQRhRHo05/l+j528oiPgc3D6a8bWxvNUcDwnatDkr2sLNiX91V1nNiM3nh4VoVgPay6MFBazLHukXK5z3plFPghX8hQh4n+VG/KgDbgM=
X-MS-Exchange-Transport-CrossTenantHeadersStamped: AM9PR03MB7710
X-purgate-ID: tlsNG-4011c0/1776850396-CE36B8B7-1CB6F78A/0/0
X-purgate-type: clean
X-purgate-size: 2617

In pl011_init_postirq(), two code paths could reach the
interrupt-unmask write to IMSC without a handler being registered:

- When no valid IRQ number was provided (uart->irq <=3D 0), the original
  positive-condition guard (if uart->irq > 0) skipped the irqaction
  setup but still fell through to the IMSC write, unmasking
  RTI|OEI|BEI|PEI|FEI|TXI|RXI with no handler installed.

- When setup_irq() returned an error, only an error message was
  printed and execution continued to the IMSC write, arming all
  hardware interrupt lines with no handler to service them. On
  platforms where the GIC receives these asserted lines, the result
  is either repeated spurious-interrupt warnings or an unhandled
  interrupt fault.

Restructure pl011_init_postirq() to use early returns: return
immediately when no valid IRQ is provided, and return after logging
the error when setup_irq() fails. The interrupt-enable write to IMSC
is only reached when IRQ registration succeeds.

Signed-off-by: Oleksii Moisieiev <oleksii_moisieiev@epam.com>
---

Changes in v3:
- clear pending error interrupts before setup_irq for pl011

 xen/drivers/char/pl011.c | 22 ++++++++++++++--------
 1 file changed, 14 insertions(+), 8 deletions(-)

diff --git a/xen/drivers/char/pl011.c b/xen/drivers/char/pl011.c
index 5f9913367d..9e308f4936 100644
--- a/xen/drivers/char/pl011.c
+++ b/xen/drivers/char/pl011.c
@@ -150,18 +150,24 @@ static void __init pl011_init_postirq(struct serial_p=
ort *port)
     struct pl011 *uart =3D port->uart;
     int rc;
=20
-    if ( uart->irq > 0 )
-    {
-        uart->irqaction.handler =3D pl011_interrupt;
-        uart->irqaction.name    =3D "pl011";
-        uart->irqaction.dev_id  =3D port;
-        if ( (rc =3D setup_irq(uart->irq, 0, &uart->irqaction)) !=3D 0 )
-            printk("ERROR: Failed to allocate pl011 IRQ %d\n", uart->irq);
-    }
+    /* Don't unmask interrupts if no valid irq was provided */
+    if ( uart->irq <=3D 0 )
+        return;
+
+    uart->irqaction.handler =3D pl011_interrupt;
+    uart->irqaction.name    =3D "pl011";
+    uart->irqaction.dev_id  =3D port;
=20
     /* Clear pending error interrupts */
     pl011_write(uart, ICR, OEI|BEI|PEI|FEI);
=20
+    if ( (rc =3D setup_irq(uart->irq, 0, &uart->irqaction)) !=3D 0 )
+    {
+        printk("ERROR: Failed to allocate pl011 IRQ %d\n", uart->irq);
+        /* Do not unmask interrupts if irq handler wasn't set */
+        return;
+    }
+
     /* Unmask interrupts */
     pl011_write(uart, IMSC, RTI|OEI|BEI|PEI|FEI|TXI|RXI);
 }
--=20
2.43.0


From xen-devel-bounces@lists.xenproject.org Wed Apr 22 09:33:21 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 22 Apr 2026 09:33:21 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1290080.1569763 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wFTxO-0000rJ-DQ; Wed, 22 Apr 2026 09:33:18 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1290080.1569763; Wed, 22 Apr 2026 09:33: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 1wFTxO-0000rC-Ar; Wed, 22 Apr 2026 09:33:18 +0000
Received: by outflank-mailman (input) for mailman id 1290080;
 Wed, 22 Apr 2026 09:33:16 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <Oleksii_Moisieiev@epam.com>) id 1wFTxM-0000qi-69
 for xen-devel@lists.xenproject.org; Wed, 22 Apr 2026 09:33:16 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wFTxL-00HYU2-Ix
 for xen-devel@lists.xenproject.org; Wed, 22 Apr 2026 11:33:15 +0200
Received: from [10.42.69.10] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <Oleksii_Moisieiev@epam.com>)
 id 69e895d9-5cb7-0a2a0a5109dd-0a2a450abbdc-12
 for <xen-devel@lists.xenproject.org>; Wed, 22 Apr 2026 11:33:15 +0200
Received: from [52.101.72.72]
 (helo=AM0PR02CU008.outbound.protection.outlook.com)
 by tlsNG-4011c0.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.1)
 (envelope-from <Oleksii_Moisieiev@epam.com>)
 id 69e895db-56b3-0a2a450a0019-346548484ad9-3
 for <xen-devel@lists.xenproject.org>; Wed, 22 Apr 2026 11:33:15 +0200
Received: from DU5PR03MB10263.eurprd03.prod.outlook.com (2603:10a6:10:519::5)
 by AM9PR03MB7710.eurprd03.prod.outlook.com (2603:10a6:20b:41f::22)
 with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9846.19; Wed, 22 Apr
 2026 09:33:13 +0000
Received: from DU5PR03MB10263.eurprd03.prod.outlook.com
 ([fe80::8c9e:b301:61c0:3908]) by DU5PR03MB10263.eurprd03.prod.outlook.com
 ([fe80::8c9e:b301:61c0:3908%5]) with mapi id 15.20.9846.016; Wed, 22 Apr 2026
 09:33: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=DOb1vgAfDHNtV4HEBB4NP7onTlbomv8gRM+Fxldc0NjcG0y8LLx0medXfzSZYprdMOsAMBqhdH0nZasSLcmblbkPB06PXHPfG3En2bkkJT7GH9FeolkbXBUdY7WgR2PmBCZP4nm+byV5OYwuRQscFQG3dJH4XDcG7GggF33Pj6JnRb2CAqg/dnjuPBjaraTdHv/+BxdUnOSZdQYZ7Ocl/vyon2eq7YCfSOkXuYDmYb5dJZE1LwfaI9Rv2sSoa7kproQZJdGNNHajjf2V9CM4fZxtHORYS0RPoIQjT9C/xZRtt+6Kga8dw36hTDaaJ0VSoE3ynt3qBnajgmGRCOlUbA==
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com;
 s=arcselector10001;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1;
 bh=cD6oYWPhNvkMVdavA9thDpcJ99Ili6JHLMWkKlDCncY=;
 b=SiqVIF3V9Q5yWH4avJxj+oY+2oD+4PPZHC2MNJjBEDK4h+13QVrMzJfV95yIKLtSo84gHau7yW2rGmGSsTYzQb8lftGiLshk1qFsg1eMPISGk4s5lzj238gHIPppA+Wzdfsodq0w/utaMiCTB4jlnq9SNRXe2MdS3dAr5gxdM/mRdq8zU3qj/mlIvqHHcNFWNRF+C4Ckx8EVuk79V2MP5C2G1nlKMkUHGcbVGLSAfbbMsBJa/gNuxJM6Q9CkT9zRqFHeleOQLf9ZEAD98hANfqo6eNLhP1j8npubAHpwu2LbDO7nL8xLx18pL92yaxbCN03TkNYX6jRd5A+o7PtKsw==
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=cD6oYWPhNvkMVdavA9thDpcJ99Ili6JHLMWkKlDCncY=;
 b=u80AFmYawfm22rXF8YndzZiuFYeM8AOhwwXdWLGWaEVnZnzoEUiJJJJKAAK9RjPNnBsJA/usoF/+GEY4/pqigZeOWW4F/85un0U+413E0I0oFFfICtN2PRm6CV2LuCVoVlXB+3IPOnJOUKghsGB/7plZtZYHhCz+DKZuP2XEkSZ949TQTzZ8qFQUSJ7zQ/IOi+P6sFDUmpvGhSZ9E/UewtReagGViT1Gn0Vrv28GMxMUDtF3mQNnrMA/lv0EInAQZGbfKXEGs23VW13kJvZ/5vBt5Osk0bdiPo6dsfNQHod82qHa0ZBaTtSJ2b/tQHdHgUpoMxCtskRkMkHT2e/OqQ==
From: Oleksii Moisieiev <Oleksii_Moisieiev@epam.com>
To: "xen-devel@lists.xenproject.org" <xen-devel@lists.xenproject.org>
CC: Bertrand Marquis <bertrand.marquis@arm.com>, Julien Grall
	<julien@xen.org>, Michal Orzel <michal.orzel@amd.com>, Stefano Stabellini
	<sstabellini@kernel.org>, Volodymyr Babchuk <Volodymyr_Babchuk@epam.com>,
	Oleksii Moisieiev <Oleksii_Moisieiev@epam.com>
Subject: [PATCH v3 0/4] xen/drivers/char: fix IRQ registration failure
 propagation
Thread-Topic: [PATCH v3 0/4] xen/drivers/char: fix IRQ registration failure
 propagation
Thread-Index: AQHc0jsKINuSTAnYQkaUPLk67EYWSw==
Date: Wed, 22 Apr 2026 09:33:13 +0000
Message-ID: <cover.1776850201.git.oleksii_moisieiev@epam.com>
Accept-Language: en-US
Content-Language: en-US
X-MS-Has-Attach:
X-MS-TNEF-Correlator:
authentication-results: dkim=none (message not signed)
 header.d=none;dmarc=none action=none header.from=epam.com;
x-ms-publictraffictype: Email
x-ms-traffictypediagnostic: DU5PR03MB10263:EE_|AM9PR03MB7710:EE_
x-ms-office365-filtering-correlation-id: 5000c751-deae-45db-07c0-08dea0522cc0
x-ms-exchange-senderadcheck: 1
x-ms-exchange-antispam-relay: 0
x-microsoft-antispam:
 BCL:0;ARA:13230040|376014|1800799024|366016|38070700021|56012099003|18002099003;
x-microsoft-antispam-message-info:
 95LvC5K4lEEvlF16Ko/zr/2ouqSMx/qaq0Dx3SzB7O09xg+G0jzwYo2uy8LOOc83YneP68wDcyWfwqT+znqdTy6qsQmz46v66I5lY82IAeWI4mgukUN8gHzu1FZO05LNlGGEumsd8FuGRO6VMNp7G/UPq6DDYvFiYxGGTKxOFgwpibqyqnXl7P9Ld7jL6eevf6O3uzxg31y2rpYKbab1E2d3Qo+zy5i3MbXJ8LlXUGAvBYkcx10wVhSTxQXsuaP8rdgd/Qn6dNYCVnV10qSoPQGT0bUry3dm8QFhA4d3XO0PzbYHenzSBHyCeF4cjp4jEHdA4eoDTkv4ciLHj2R8GWFo1S5KnDc2ecoGD1o+4WnJ8W/vsH5kZ9yz8lh6mqPfRFueK2rTcVPXyH08zerCfCXquQFvTlrgD3p80Gw8nz+DjKB+LQ/BWUW6XYvVSLz4QQkdodLxoV0PwURaHls3k5JADFATjkukNeupTgpDuBvgBKcgMv8qOZtOu5JZiakonvyokRXUGH/i6iBPTyxc6torl8yKX4PLlvLNqByIy99Duq3kxTiAR/AKlLx2FJRXEa1Lmyk/8VOHt8WcHQXgZPJSGDoH2ugxkL39yKDnn5fg4o/Ir6Xk67vMSWl7m+fZVMR+QcZUrcb9SgoGGlpuTv/aLu4pM4eJqr+BHI/ddPEvNg6Pw7O4fDEQH4t6cIFJEh3qLwYFi8h88Ov/XDBo+WGmqjeVHZNG7WNmV2FG6Bu/7eaLCPUjW/z0gKmqPAX9lYr9xjru8cBZyLT8xt8wcHx2MGa/4O9tx973fc6GlOg=
x-forefront-antispam-report:
 CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:DU5PR03MB10263.eurprd03.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(376014)(1800799024)(366016)(38070700021)(56012099003)(18002099003);DIR:OUT;SFP:1102;
x-ms-exchange-antispam-messagedata-chunkcount: 1
x-ms-exchange-antispam-messagedata-0:
 =?iso-8859-1?Q?7bb04ywxXl7xVQWC/UVpGP2K458AZdXYzmNrkVWbGh5SEKgeVPcxMpodw2?=
 =?iso-8859-1?Q?BCZGN4KAn5NXYG1OzL6homfxlB8WuGYJFi5CgTQ9UioPz3+wtqqKWuhc/e?=
 =?iso-8859-1?Q?11o2lzgh7YQ/WvKy+/Xdh4crKdh0wj+EByAxWZZgq17I8PqgcdpADLRohp?=
 =?iso-8859-1?Q?Bv09hjR3zDDPoG33b6/UL39kIMo76BkFE+KdU+rxgsLMQD1vjSDanCpAMt?=
 =?iso-8859-1?Q?nKuVZCUDQzU6rfupojhBBNzNS42THKYKWBbNIAxTEt+FQEmcan++5ku58E?=
 =?iso-8859-1?Q?GJMvWnUs5VtJ0JWQkbJ6G09OVFUdM+k0HgWFEBvzSUhxdC+2qUPoCdIxqC?=
 =?iso-8859-1?Q?uMwEEROc8EZroD1MM/S6K6vSKzV3RWGzoH33VNmVMStAcJf3EYVpeIOIvp?=
 =?iso-8859-1?Q?fYmznBH8pyQzSZdZNVCyLR4ogP0+DgkVxhQ4fE+bVj9WVWZTZ4kLReS23I?=
 =?iso-8859-1?Q?cCLQKqS6EBNAhcEgarYcXlrTumvWRQAkVdc6Gsd1DwHny8c3oSI+a78M/A?=
 =?iso-8859-1?Q?KpIlCZpF8qumgWvaEa1YR8HqQ/CQwkvcaBmQ16qOiG81i6ELY54WKEANOL?=
 =?iso-8859-1?Q?RmicBTOZJljbwJoAeN5V/qw1dKHiuVqXfVkc1fdFJDq5u1d5hE7riHCwlA?=
 =?iso-8859-1?Q?9KCCUxo6aogJQZURyWYCCmqnfoByRGLD9bFDR7fqAS9lA1wdQ5281b6J4W?=
 =?iso-8859-1?Q?gGqgZl85txUqlNP0534I6wLG6ib/DdBgHDBP3WdS1Uj63wU1BVu/WQJ7UZ?=
 =?iso-8859-1?Q?Wf5nfwOSMDAhe4Z9l1gCVmlnxp+6xBywyYoyFCNjl5RSvsfh4JV0Z3NrI8?=
 =?iso-8859-1?Q?qyYXSA9/QPC9FT4OH49TCQ4v8B5sDkIefV4Go9fzJPwpNjVVwhvMwqe3aA?=
 =?iso-8859-1?Q?q6YWtUYHOtmky+p1B5iIWeGDhhkwQaNjx1LTkRLkEPEwDwNV6FBeOpjprR?=
 =?iso-8859-1?Q?MfWfDkD+XRlvRIzrkFak4xzwcwCNO9yhw/EFMZSVBgvZJPMrKbZ5iZzo3s?=
 =?iso-8859-1?Q?GiBTalk1I12M4Afi0xVxWPFQa5hKXxxRh4FY8L6rZOx3Mq9XbEWuySJYTz?=
 =?iso-8859-1?Q?M/PyqNGSc5Ke/iMzFstR8I1Tg0NZuSUkriWx7jrZlWgF9X0SpqGsjF40pv?=
 =?iso-8859-1?Q?/ELjC3fmrCUyQzDJZkFtYziJH/BkZtvwldEFueheVdu5kjA2Znx6cE2xwL?=
 =?iso-8859-1?Q?8vb2fG9ndrYM74ilDLfqu0HJeQrJL81U6mNZQ40NcPTzTpVPauGU3wxa5B?=
 =?iso-8859-1?Q?xOtTtJ/w1I722C2y+jH4Vj1MkqBiSH/wxmFAuKMIz6/1ZFGoyGlPMqDfVH?=
 =?iso-8859-1?Q?Z81BbWt7R1X6y/qxqfb/w64srDxjehKqu34kHVMxO89kqJvXPvnQ7vzDLb?=
 =?iso-8859-1?Q?yona07owDlx9DPmuc8IMdU67TU2BEXe70TQ9n1ybp+bFxfvgTBPLb/IL33?=
 =?iso-8859-1?Q?6gSXCEj7A8CT6Zjd0KnAiuoI9lViIViuViojqzNwi6owOHLRV+EKkifOPi?=
 =?iso-8859-1?Q?Lr0lvLjzYpqnqp1QBUb0rJAiTuD1fK0nYz5NaiF8fR+xuMAIEAUe2ugqin?=
 =?iso-8859-1?Q?ZyWkW6XXEAxj4TejaWDa7ADwwNCPWF1bSPJFR+kTg3EKtIhTNwuzu6XVfq?=
 =?iso-8859-1?Q?ptp4TEGK6gzR6LOZKaeA89TRlO7Xjk3qxZNS+kwTfGs9xaeDIv43uZ88DV?=
 =?iso-8859-1?Q?pXi3+kkUnPli0aLSDLfUSXsnfsK6E0kE+1OanJlm6TaE+qHTSe2Mjk3YCE?=
 =?iso-8859-1?Q?0Dyi3DFhP7FoZA50OKvkPKW2TtmdF0uxZ/gsQ5OGJAp/9drOnxHsj8VS+5?=
 =?iso-8859-1?Q?PQeqTKyxuzqKuBlCcgAVIcACg9vPmJ8=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: DU5PR03MB10263.eurprd03.prod.outlook.com
X-MS-Exchange-CrossTenant-Network-Message-Id: 5000c751-deae-45db-07c0-08dea0522cc0
X-MS-Exchange-CrossTenant-originalarrivaltime: 22 Apr 2026 09:33:13.1405
 (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: bzWcpDqqkLCIwq0n7AKvo0EGQAly5kOZ3XU7ITyzU7nclt+YbScIy6+2tclJyIZYSCZaUE3kKQSMu2L3stLnbBv2Gtq0TwsWpReTV9nA10E=
X-MS-Exchange-Transport-CrossTenantHeadersStamped: AM9PR03MB7710
X-purgate-ID: tlsNG-4011c0/1776850395-CF97E8B7-BB155827/0/0
X-purgate-type: clean
X-purgate-size: 2200

This series fixes a common bug pattern found in several Xen UART drivers:
when setup_irq() fails during post-IRQ initialization, drivers log the
error but continue executing and unconditionally unmask hardware
interrupt lines with no handler registered. On platforms where the GIC
receives these asserted lines, the result is either repeated
spurious-interrupt warnings or an unhandled interrupt fault.

Patch 1, originally submitted as a standalone fix in v1, addresses
the issue in the SCIF driver and moves the hardware error-flag clearing
sequence to before the setup_irq() call so that stale error bits are
cleared unconditionally. Patches 2-4 apply the same early-return fix to
the pl011, cadence-uart, and exynos4210-uart drivers.

The pl011 and cadence-uart drivers additionally had a positive-condition
IRQ guard (if uart->irq > 0) that could fall through to the interrupt
unmask even when no valid IRQ was provided. Both are restructured to
use the early-return idiom.

Changes in v3:
- clear pending error interrupts before setup_irq for pl011
- clear pending error interrupts before setup_irq call for cadence uart
- change uart->irq <=3D 0 to uart->irq =3D=3D 0 since irq is unsigned
- skip clearing pending interrupts if setup_irq was failed because
according to the 13.4.1.13 of the RM: it must be cleared after
cleaning interrupt pending in INTC.

Changes in v2:
- Extend fix to pl011, cadence-uart and exynos4210
- fix typo in patch 1 description

Oleksii Moisieiev (4):
  xen/drivers/char: fix SCIF IRQ registration failure propagation
  xen/drivers/char/pl011: fix IRQ registration failure propagation
  xen/drivers/char/cadence-uart: fix IRQ registration failure
    propagation
  xen/drivers/char: fix exynos4210 IRQ registration failure propagation

 xen/drivers/char/cadence-uart.c    | 22 ++++++++++++++--------
 xen/drivers/char/exynos4210-uart.c |  4 ++++
 xen/drivers/char/pl011.c           | 22 ++++++++++++++--------
 xen/drivers/char/scif-uart.c       | 16 ++++++++++++----
 4 files changed, 44 insertions(+), 20 deletions(-)

--=20
2.43.0

base-commit: 077dcf9841ad7df4e63c718249d8ac95f8a709ff
branch: amoi_dfmea_scifv3=


From xen-devel-bounces@lists.xenproject.org Wed Apr 22 09:33:21 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 22 Apr 2026 09:33:21 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1290084.1569785 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wFTxP-0001FB-Hh; Wed, 22 Apr 2026 09:33:19 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1290084.1569785; Wed, 22 Apr 2026 09:33: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 1wFTxP-0001Cm-Ae; Wed, 22 Apr 2026 09:33:19 +0000
Received: by outflank-mailman (input) for mailman id 1290084;
 Wed, 22 Apr 2026 09:33:17 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <Oleksii_Moisieiev@epam.com>) id 1wFTxN-0000r0-0y
 for xen-devel@lists.xenproject.org; Wed, 22 Apr 2026 09:33:17 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wFTxM-00HYU2-Dn
 for xen-devel@lists.xenproject.org; Wed, 22 Apr 2026 11:33:16 +0200
Received: from [10.42.69.10] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <Oleksii_Moisieiev@epam.com>)
 id 69e895d9-5cb7-0a2a0a5109dd-0a2a450abbdc-22
 for <xen-devel@lists.xenproject.org>; Wed, 22 Apr 2026 11:33:16 +0200
Received: from [52.101.72.72]
 (helo=AM0PR02CU008.outbound.protection.outlook.com)
 by tlsNG-4011c0.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.1)
 (envelope-from <Oleksii_Moisieiev@epam.com>)
 id 69e895db-56b3-0a2a450a0019-346548484ad9-7
 for <xen-devel@lists.xenproject.org>; Wed, 22 Apr 2026 11:33:16 +0200
Received: from DU5PR03MB10263.eurprd03.prod.outlook.com (2603:10a6:10:519::5)
 by AM9PR03MB7710.eurprd03.prod.outlook.com (2603:10a6:20b:41f::22)
 with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9846.19; Wed, 22 Apr
 2026 09:33:15 +0000
Received: from DU5PR03MB10263.eurprd03.prod.outlook.com
 ([fe80::8c9e:b301:61c0:3908]) by DU5PR03MB10263.eurprd03.prod.outlook.com
 ([fe80::8c9e:b301:61c0:3908%5]) with mapi id 15.20.9846.016; Wed, 22 Apr 2026
 09:33: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=rDk0OVqKEV2XzJ8TjXkuBQn6iKAkuNQwhx2wlRxIDH72B6P6w/rpgGHa+5MaJ0Apg9EgzM0osMvRoBXC5YsopDK4nq96ykKDibNcArzppbbNBBgaGXc6/P4H3sbWMOdKVHKSsrFyXMzLTacprgyxm0tsmNcRRAOdhyuppSx0AZ+MnXuKkbUKNVQ1UwqH0mDQCKxI2Vlh9ESm8cShANXG2frckxfAsVglFGgDHDiF2OZKAE4dbdyYtFpaYWt/GvZyb9MwG5nFsZ1hSpqYhz4ML2bbcXzBWUyqPQyNoamFXk9XddKMWbwZhHVDRXcaSvJYbTc/TcQ35zuidOYfclRbzA==
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com;
 s=arcselector10001;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1;
 bh=sua2lHyPv7A2Nh5zyXGRUWTpGAlugF2OyFrgHX3AWNk=;
 b=ZA4BkVc+0/c7uurY0Q4b1JqrKWCnadDCOU0NCEfZ8eSlOZ3DBMWuQ0c+ZmVpyDCeldOQSFk04BgEafGv6RFfRjCn/9daa0kT6ifrZS2MMtLrxe2TT/9eOuerNyVqUz4c76K8DWcB+O9VRk97pUZxQ3iBGAt2Qakp1Q7mqfmOyI9KceucIRSjqpnZviWY+ANRKV9ZabxFa1I2QJ31cwO5qX8r/hRoXUxqVS+zySJO/HStamu3yN0fNXV0Amyg1O5nfbQeIqo52TW+Ua93UYheyAJnhtgw2DBW4GRWA3hoxmxbSwGypel6UFvpm0pde2Jhz5kE46vpnqERMYigD9/1xg==
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=sua2lHyPv7A2Nh5zyXGRUWTpGAlugF2OyFrgHX3AWNk=;
 b=POxJHVEWZHi1reuW7uIDqKDFYt8W2FodhYcsxXqU2CjtPTFIUu0W/VdcXFykH6S7VOmrw/FYMgn/ZkR5szXhIq7prmvEXqIPUN9Ss0h0axxyR7E95/0qobApl3HLTStFwVnGAlLBkH1pL/iZNh69qmoexEiHQrPb7PwgFjsPsARiBPsr4BuokJpxpY3z+/5H8ROu9bBpDs2UgQ2dYVlJUt9EgOGwJpz+mJ6tRQ53zAAbDfVa+aEv2XbHv3lFwZvUwE+9XOSKubYw8DetaSixMlsnArV4j1lmfrc+2GzbXDJ2N6mME0QNJg0eUSCu1Oqa7I6uJRkYTJZfhq09fAfTXw==
From: Oleksii Moisieiev <Oleksii_Moisieiev@epam.com>
To: "xen-devel@lists.xenproject.org" <xen-devel@lists.xenproject.org>
CC: Bertrand Marquis <bertrand.marquis@arm.com>, Julien Grall
	<julien@xen.org>, Michal Orzel <michal.orzel@amd.com>, Stefano Stabellini
	<sstabellini@kernel.org>, Volodymyr Babchuk <Volodymyr_Babchuk@epam.com>,
	Oleksii Moisieiev <Oleksii_Moisieiev@epam.com>
Subject: [PATCH v3 4/4] xen/drivers/char: fix exynos4210 IRQ registration
 failure propagation
Thread-Topic: [PATCH v3 4/4] xen/drivers/char: fix exynos4210 IRQ registration
 failure propagation
Thread-Index: AQHc0jsL+9q0JLBsskmBWrh+PQuj8g==
Date: Wed, 22 Apr 2026 09:33:14 +0000
Message-ID:
 <e15f6ef27470724fd987f0c5d248315abb1d2c55.1776850201.git.oleksii_moisieiev@epam.com>
References: <cover.1776850201.git.oleksii_moisieiev@epam.com>
In-Reply-To: <cover.1776850201.git.oleksii_moisieiev@epam.com>
Accept-Language: en-US
Content-Language: en-US
X-MS-Has-Attach:
X-MS-TNEF-Correlator:
authentication-results: dkim=none (message not signed)
 header.d=none;dmarc=none action=none header.from=epam.com;
x-ms-publictraffictype: Email
x-ms-traffictypediagnostic: DU5PR03MB10263:EE_|AM9PR03MB7710:EE_
x-ms-office365-filtering-correlation-id: 1bcbeea7-831e-4d47-c909-08dea0522dd6
x-ms-exchange-senderadcheck: 1
x-ms-exchange-antispam-relay: 0
x-microsoft-antispam:
 BCL:0;ARA:13230040|376014|1800799024|366016|38070700021|56012099003|22082099003|18002099003;
x-microsoft-antispam-message-info:
 de6vCvQ10fYkyHkdmnzvkwqy35JQAzD/I3UWPdYX32TJm1ExLejcqcQq+kqj+GPyliKAsCRrTcrWnaOKRSDqFUbXDASFlffQbMfEi8p0MXykruJaKipZLjznyQtBI9TwriLHt2ckPN10sim0EeVbMpMOLoXnf2CpgqPY+ffaaFxZmDc910UqpMGanTvmYEDTw0LfqkRFoCZCmQ+9/8zHw3A6jrgxzWslfEif8BSO6dwSmNWRM1Y7XXZRgzDARmdl5n9/hCm/HSN/eWnmYJg+e577cZYYwKP6jBwgj5tHj77O6urTTBvPh0QsGS1XPtyxXYwONo2c/zL9LuBOc6060dL9SrhAV80/y8rlOCKVVFflqvYY4k53GNDdAjoBQAOXBmMnSCn5W8RZh81Is6+GyfaxGbvxtXf+z9fg4KXqL6EYXGmZfYFcCzKV0ZMya8aIDnStvVONw2JBdAI//TY6d8piGQJrRh1SEHARpqvJvP1/EPDHZLZLA28Qp2bog7q3Unc5ORxuaDB01BbwgCaYJb6iqkgd2BrMm3enSMilnSkHJf55osoDpDtQ03YeVbW9vBAt/Lm6vynd2XsCeDDXH85lAUjfyWTNsHp1iV45cIjmQzVrxMBwzqCWRZZOWX7I9oG+Q75kgQi8q3LtUCZpDULWSRVyhQRvdkqrOvbQaExou7o7rAE53KuTN92BUBO/P04iwAue/xpydlOCPRbBegXKScSkaY+DVJO1TltIr8u/lCSEle0HxqKx04cRBilBVwk1r3EiORBqnHwBJ4n8Bd9hWdCc7m1IHVSiV3/zl0k=
x-forefront-antispam-report:
 CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:DU5PR03MB10263.eurprd03.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(376014)(1800799024)(366016)(38070700021)(56012099003)(22082099003)(18002099003);DIR:OUT;SFP:1102;
x-ms-exchange-antispam-messagedata-chunkcount: 1
x-ms-exchange-antispam-messagedata-0:
 =?iso-8859-1?Q?GLgMjNWzlL3W5zZngGfXzUeDEI0zB64PTI6Oj5s26Ax9Hq8K0GG6LHZcEX?=
 =?iso-8859-1?Q?rOZEq3Xqy4rJjHUKWACeT2UK2ph2c3UcNd8Tw7Fo7dpUlC1NsL30Zer9Xf?=
 =?iso-8859-1?Q?YKkp/sspz+Oz7Ca4eAL8ttEgIJCI0pBbR5cIUkpLkl5AIPQY4FS0fI4jZ5?=
 =?iso-8859-1?Q?dTbllJodhFCoKd3tHbJU0iFtlXMNvmFYv0Ky5S4K+zLku1OHcAyIkBeGj/?=
 =?iso-8859-1?Q?XjlDkLYE9HKMHuuGOx9r0byF4Wd1dYORVjQGhlQfP78GntMNzv6a4suyiL?=
 =?iso-8859-1?Q?gXmCTLFDUIGusVeGceclH7R9zdfbWAFVUM2DyTUUz8YX+4edR7vitw7JoK?=
 =?iso-8859-1?Q?10vdehb/T77r/hmvC40cw7vqTrCZX3zhlu9XOllAQfeav16YEbWR3VA0LY?=
 =?iso-8859-1?Q?JnKHnNjn1EyU1UPFxockX1g2tfGUSmArbn/dUDewLwS0LVGCNUs0pk32P2?=
 =?iso-8859-1?Q?9puXeY6pMf1lxviKNwfPYrWM/o59iPeTeyLhQacUrVC4ahdsBd3vzrTnly?=
 =?iso-8859-1?Q?eUCVXJPUWgipAMv12aeGvkzBsnflkQXGpXsWxVnllL4Qbgfxl85ta8N5Tj?=
 =?iso-8859-1?Q?14gnIQvzbzVwFNVlg0Y6dzyQpP7tCvWPO/Adh/P/hWSj+796BYQHzts2of?=
 =?iso-8859-1?Q?QQEZ1NvoyirQYXQuwWPxfs7yE83oRnmiaCMZUtjWaUdpd2zFHXYe4Ox80+?=
 =?iso-8859-1?Q?4SCn8fRhTwhoOqa9kyucWcFgooIRBXjyISk/1UagGqo/YwK8HLsrhOFikr?=
 =?iso-8859-1?Q?jZdEr+mVeWlLvx6Y4LbxdWQsZMdJN0uLMU+rz+zOIVpFZ4zXJjc3lvI+hX?=
 =?iso-8859-1?Q?yq4dIcCWDKNhtYzzmRlomQKu5W6pDLM/UQ4qCDLHKxt4grk2fMMYHGsHRp?=
 =?iso-8859-1?Q?9snBZbb5KTWENW/yY7NGUKaBxdv1zHIIQaPAOaJhDIQkdavhATzSwTz7f+?=
 =?iso-8859-1?Q?wdkvZTPkdlwrNJ1V8wcwsCltP4A/Q5TSuM7V2+F3uoWiaQLJ5bLKd7HzZ1?=
 =?iso-8859-1?Q?mQv8jh3B7peA43sBcxc5LoILvHETdD01XZWtQZ4ChOUKZkoqwncyozuHBu?=
 =?iso-8859-1?Q?LkZWp0Kv6KdoE0oTUSpO/W9WUpvuvQT1Jbi9ZNfrZVDtclqFXgjFDeMlPi?=
 =?iso-8859-1?Q?gt0711Lv+cvCWnjjpv4RfQ6e2vHiuAXAYJI3vJ5C/jMFHtZOSowhwYSwoN?=
 =?iso-8859-1?Q?3Sncu/w8u5dpCWqhp8JSxO1ttCndwkaiQzCRqYCMplXQbZJp/eJ3oW7sLW?=
 =?iso-8859-1?Q?PfAVxGM1/yg3wFIRkp8kEB5/xadNKEQw9DB7PQ2fjKO3r0Spzi6mUBIFmW?=
 =?iso-8859-1?Q?xBEYM4/GH1ctlZskWWIuVTCjuZ4aF/o0YeUfoYPD/j2JDMrAsJVfGhoVS8?=
 =?iso-8859-1?Q?Rn5OtfT6ydl+B7slXrtCNfqHnkAvvdeW03EEKFhpFq2baMkswunJlzTHtz?=
 =?iso-8859-1?Q?hRMLmdx7R+Af1ogQ1y6wVSSExH4Rl9fUUkhAYaX1U+MjWLKT/aL94+2Fk1?=
 =?iso-8859-1?Q?PNNHngZ6sgeQFJkYsZzDI9vnWaEcamM/9MfTMOdBkG5ITm5mxXgbo5JDju?=
 =?iso-8859-1?Q?OPTOQsqMzXfmiKi3p7lWZiuAIRxPjPQtt/cEsiPYNKuw0ztJ0mofpferyU?=
 =?iso-8859-1?Q?OSf6EJwCN4vgs8mFnsUwb3Vloxja+oiA2wwAqwXPPR+B5/sq2Iopof3tue?=
 =?iso-8859-1?Q?8lk62Zqf/1OmyzORWjGQz83Qz6jEOt5X5s+z7Au/MhiUF6+CIZKajGPmZx?=
 =?iso-8859-1?Q?Bpx3o/wDm35Thk/iceXfEXFGdY8y319MZLKF3kOfvl0Rc1LTQGfw09ztH+?=
 =?iso-8859-1?Q?3/OyDrdBTL/oHfEsCCjrZehwSZjh7fw=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: DU5PR03MB10263.eurprd03.prod.outlook.com
X-MS-Exchange-CrossTenant-Network-Message-Id: 1bcbeea7-831e-4d47-c909-08dea0522dd6
X-MS-Exchange-CrossTenant-originalarrivaltime: 22 Apr 2026 09:33:14.9617
 (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: SBCvcigsaohM8T65ZEV56R3NvDn/wOKJdpsTXihQCyeVlKOPlU/UhkeJFDZETaygCcXZ48MAGQ8wNYjfleKQbzbQoTWWY1hOQTbp440QFUc=
X-MS-Exchange-Transport-CrossTenantHeadersStamped: AM9PR03MB7710
X-purgate-ID: tlsNG-4011c0/1776850396-473738B7-89EAAD5C/0/0
X-purgate-type: clean
X-purgate-size: 1655

In exynos4210_uart_init_postirq(), when setup_irq() returns an error
the failure was only logged via dprintk() and execution continued,
unconditionally clearing UINTM and setting UMCON_INT_EN. This enabled
receive and transmit interrupt lines with no handler registered. On
platforms where the GIC receives these asserted lines, the result is
either repeated spurious-interrupt warnings or an unhandled interrupt
fault.

Add an early return in the setup_irq() error branch so that the
interrupt-enable writes to UINTM and UMCON are skipped when IRQ
registration fails.

Signed-off-by: Oleksii Moisieiev <oleksii_moisieiev@epam.com>
---

Changes in v3:
- skip clearing pending interrupts if setup_irq was failed because
according to the 13.4.1.13 of the RM: it must be cleared after
cleaning interrupt pending in INTC.

 xen/drivers/char/exynos4210-uart.c | 4 ++++
 1 file changed, 4 insertions(+)

diff --git a/xen/drivers/char/exynos4210-uart.c b/xen/drivers/char/exynos42=
10-uart.c
index 58901df554..2e5860ea2b 100644
--- a/xen/drivers/char/exynos4210-uart.c
+++ b/xen/drivers/char/exynos4210-uart.c
@@ -199,8 +199,12 @@ static void __init exynos4210_uart_init_postirq(struct=
 serial_port *port)
     uart->irqaction.dev_id  =3D port;
=20
     if ( (rc =3D setup_irq(uart->irq, 0, &uart->irqaction)) !=3D 0 )
+    {
         dprintk(XENLOG_ERR, "Failed to allocated exynos4210_uart IRQ %d\n"=
,
                 uart->irq);
+        /* Don't enable interrupts if irq setup was failed */
+        return;
+    }
=20
     /* Unmask interrupts */
     exynos4210_write(uart, UINTM, ~UINTM_ALLI);
--=20
2.43.0


From xen-devel-bounces@lists.xenproject.org Wed Apr 22 09:33:22 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 22 Apr 2026 09:33:22 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1290081.1569766 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wFTxO-0000uH-JJ; Wed, 22 Apr 2026 09:33:18 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1290081.1569766; Wed, 22 Apr 2026 09:33: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 1wFTxO-0000tQ-Gb; Wed, 22 Apr 2026 09:33:18 +0000
Received: by outflank-mailman (input) for mailman id 1290081;
 Wed, 22 Apr 2026 09:33:16 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <Oleksii_Moisieiev@epam.com>) id 1wFTxM-0000qj-Fw
 for xen-devel@lists.xenproject.org; Wed, 22 Apr 2026 09:33:16 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wFTxL-00HYU2-QM
 for xen-devel@lists.xenproject.org; Wed, 22 Apr 2026 11:33:15 +0200
Received: from [10.42.69.10] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <Oleksii_Moisieiev@epam.com>)
 id 69e895d9-5cb7-0a2a0a5109dd-0a2a450abbdc-14
 for <xen-devel@lists.xenproject.org>; Wed, 22 Apr 2026 11:33:15 +0200
Received: from [52.101.72.72]
 (helo=AM0PR02CU008.outbound.protection.outlook.com)
 by tlsNG-4011c0.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.1)
 (envelope-from <Oleksii_Moisieiev@epam.com>)
 id 69e895db-56b3-0a2a450a0019-346548484ad9-4
 for <xen-devel@lists.xenproject.org>; Wed, 22 Apr 2026 11:33:15 +0200
Received: from DU5PR03MB10263.eurprd03.prod.outlook.com (2603:10a6:10:519::5)
 by AM9PR03MB7710.eurprd03.prod.outlook.com (2603:10a6:20b:41f::22)
 with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9846.19; Wed, 22 Apr
 2026 09:33:13 +0000
Received: from DU5PR03MB10263.eurprd03.prod.outlook.com
 ([fe80::8c9e:b301:61c0:3908]) by DU5PR03MB10263.eurprd03.prod.outlook.com
 ([fe80::8c9e:b301:61c0:3908%5]) with mapi id 15.20.9846.016; Wed, 22 Apr 2026
 09:33: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=PWLzPj9MnfT3kxCioJLRHzqqu4T4HdQCj4kQgR/Rj4xvrhIE786Jl/MCxgSX1UNuSgBiEjpLSMuE0s0g9VM9W1VgKW16qE7LIz2lKnauL2LO7yoJATGRtCrbSRaC+p3N6en1TTf5m8ZfSLwzPS4sRL87M6uTJdvpFzMIujOeg03LaI38KNhEyrUHlcnNjN5MfkZFqVUslC5pIP8IKgIEA0UUAGIzzE4znG8ZRdRyxEl7uNeCYMVRaRrSqny75mV3VpLykzvEzTOZU6uTX5ZAWa27z0Hn/zOVz+IGeOAWe3ZKwdfNRjFbIdnhUwZutCPEu7bbHYyp6J24d6LyCrOgXA==
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com;
 s=arcselector10001;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1;
 bh=4DcNez1M3Dn6MN/zRL82fATol+87hIm7jRp25fQVXYQ=;
 b=ZgnOrW92592B6aOrYq9HxH+fWrpLEFU5hWBARLDFjuOdeqEPz/abEBgS4uybfornSrJpcieUKRoonwqaxS4+wj+XJkXbmsFqyu6fbvvKLKZJ2LgieHu2UssdE7xEBpJYMqXFxN77/rlnL2ukWat9v+1rMqm4pWVwI13Xtd/jb0MTxEevFbUIZwRvnJgNjXc+J56HLSg1AbY3itNtd6L4GCBr0NW5LbKLNRRP71SuC4sO10ah+4MLE9ByVp42Oov0DelcjSlndATreNWLhxrZI4bxfelnRugwFnHcKhZnl0M5irgZdOxapxXpOE6ecgEv6piCgse5/aIdqIJK01rETA==
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=4DcNez1M3Dn6MN/zRL82fATol+87hIm7jRp25fQVXYQ=;
 b=u+AGlzYNwb/GPvpce0So+D6GZHdbva6W3iODdBEgdJnhDKGLOpKG2D02CGQGeWXVuIuJAErz69g7hhIEhcqeoBTLMQOvp+RyNtbP4UTROKqcAPZUgtS+PdMM7KMFp36ww1j7Lw5cCGls8LPMX0KBrL3CA6R92LHj+nLgrJTJW//myxI+qT1gOfZRokSdwxWA9o/QWYj+aPkg2dgrZgPGoHY0Y6H9Adbx/UwZ2acCszePeZtSHdSzWBYa4zgAVuFNu4MBTXTlpewJHAPJaptgltmkhC2c8l/xLwsFVJ29by1ES6ZOBvCWbun+qLCo7hKfdpC0LeCk327rkKp70TLT3Q==
From: Oleksii Moisieiev <Oleksii_Moisieiev@epam.com>
To: "xen-devel@lists.xenproject.org" <xen-devel@lists.xenproject.org>
CC: Bertrand Marquis <bertrand.marquis@arm.com>, Julien Grall
	<julien@xen.org>, Michal Orzel <michal.orzel@amd.com>, Stefano Stabellini
	<sstabellini@kernel.org>, Volodymyr Babchuk <Volodymyr_Babchuk@epam.com>,
	Oleksii Moisieiev <Oleksii_Moisieiev@epam.com>
Subject: [PATCH v3 1/4] xen/drivers/char: fix SCIF IRQ registration failure
 propagation
Thread-Topic: [PATCH v3 1/4] xen/drivers/char: fix SCIF IRQ registration
 failure propagation
Thread-Index: AQHc0jsKUadkzPilIka4irnnhKul9A==
Date: Wed, 22 Apr 2026 09:33:13 +0000
Message-ID:
 <519488a3f63d3bb6af9a6fb794b85e9960710b23.1776850201.git.oleksii_moisieiev@epam.com>
References: <cover.1776850201.git.oleksii_moisieiev@epam.com>
In-Reply-To: <cover.1776850201.git.oleksii_moisieiev@epam.com>
Accept-Language: en-US
Content-Language: en-US
X-MS-Has-Attach:
X-MS-TNEF-Correlator:
authentication-results: dkim=none (message not signed)
 header.d=none;dmarc=none action=none header.from=epam.com;
x-ms-publictraffictype: Email
x-ms-traffictypediagnostic: DU5PR03MB10263:EE_|AM9PR03MB7710:EE_
x-ms-office365-filtering-correlation-id: 40a909f0-720c-4429-84e7-08dea0522d03
x-ms-exchange-senderadcheck: 1
x-ms-exchange-antispam-relay: 0
x-microsoft-antispam:
 BCL:0;ARA:13230040|376014|1800799024|366016|38070700021|56012099003|22082099003|18002099003;
x-microsoft-antispam-message-info:
 uyrXlmIH4MpujhIg4OHJd9il9/FqOokyIxJdDl4BJbrQAAEfo3knonzCh1r3Ba4aJcRvB1rIyCD4M4x4yPIro0LnA7o/S45ySPVFhrozijjVGRLuXHYzsAtCwRf6ET+rO9ST5Q22YbPKUqylBR+2gOJVLaKlwzpdvWF8PRHjJD765V0gus6z0SRt4qvzO22Y6+3D+Q7Xirg0zDWY4ZjwxPK3MhyxVz61u18Szhdzmg4NYcUGr55nHbxc4AEqKrdZZ1eWJDYr9LhDbveIXc+Fa1AudG4+arXd+KwOX273sY2bVLAO+83xXGOwIC2xb+oDM+sqJ9gtvx+yGCgfaHOj7NP3/poZBFVHa8R3z2Pcr45D7/yXq1TQl7thkXS1NdlWvzE200PYa8USY5BiBoq/c4W5HZnK8N8yDOtJLvPHqtvm1TIZAYFv94E7cMwlTBRXp0QV9T47eowKhqVxRaW0Aebm6QYZYXdCGV6lZKmvlSYLl5fGgmhNT32SyiIbzwUFu9vZqu+7ys95WQzKQNr2PhPhNG+eYZ8hhY+FUSzVYT/qG3xYnKnFNG4GN5Us8rIRfLDIWnKCq5IDTnAkNn0h2PphBOWlX9RuE3+FLjUofkndLxRsXwh0SAX8k3RPiUpLTXk8id7rwF3zKnfMrD0XcTq2wEqTKaMSZ10/G9wQKN6dfJiDNhWiyZMz4uNB+HFC6zcNO1gCy/V5qSsmrUwZHrRNPCn8IuKpexD96kpvSF7ZcAxlog+SicLbmhz36tLy1Bvf8heXIgRhg8FfNAaXMqgBxaXoNiugvkvnAn4jQQE=
x-forefront-antispam-report:
 CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:DU5PR03MB10263.eurprd03.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(376014)(1800799024)(366016)(38070700021)(56012099003)(22082099003)(18002099003);DIR:OUT;SFP:1102;
x-ms-exchange-antispam-messagedata-chunkcount: 1
x-ms-exchange-antispam-messagedata-0:
 =?iso-8859-1?Q?ME/9BiZA5j+vMG1jj/oGm+ui0xqYcs+956nIuurIUJffHZj26CUEgSzNN+?=
 =?iso-8859-1?Q?X0odMhVxjbZWOf1gcLQFrSWOrx85aDcsYPS2tbMJFeMKLx/f49nsIuro/s?=
 =?iso-8859-1?Q?og7VBjA+PNkRbkHIdi9B/S8RX3W63qeGNInadih7S5ldeRxTHgyT/wx8yb?=
 =?iso-8859-1?Q?dsHDVyMvvIhmJ67mfs+GP6UTLr9vRYRZnKBUCytiQOFqnWFkEVWnPS+L4T?=
 =?iso-8859-1?Q?wnUxOipb7vnoLjWsdWYybB13gn1JuIgNECWMyjKrONl08WNJZyaGSlFNvA?=
 =?iso-8859-1?Q?Of4Ke9y3j7A/uKCi/cmsLKrUxCRH8mtIsVByc2UqgEjW7OURMG/g6zNaCT?=
 =?iso-8859-1?Q?OokIyAXztJAcPGrTLCV2+EWCxL9mwiRIgz/PfJRTrtEbN8PHuDe7SbcD49?=
 =?iso-8859-1?Q?nc1luDQ9VcVxWMYexm3HoxZI8aX40wQdzrPmmgAxhpk6+FeFuXVWdtKVDe?=
 =?iso-8859-1?Q?j6Xj7+tokmRzFOkIUQYI6x7m+uy5805G1VfnEhfL7fF1YVV2+iKDeSoW8U?=
 =?iso-8859-1?Q?QbXgaFgDf+bSL1Acry1MI1PM31tEjGjlEQYkckL5mWkrmu0YGqSY6Bcxty?=
 =?iso-8859-1?Q?nWmEAzdAdlekouorBJFL3t6AJ7yTHyfXSGKxVADD9C7B1aZjekEIMdMmpH?=
 =?iso-8859-1?Q?CePqKDc73alI018okhRjw5RB5YB2uw9NQk2Fj5A51QLRgd1gGGMowxoV4+?=
 =?iso-8859-1?Q?hMVLfInMju9YzuHl7b6VPxtuUy4T+VjHD40l50J9gD5BlbBTwwRVjzXI2i?=
 =?iso-8859-1?Q?dTygnJJMR0fdXPYrsPk/yvUVY/ycUHWXfL3rL3iE9pq4ocdadsxK4ZR4/j?=
 =?iso-8859-1?Q?HDE3/BVHOw/7RmsE9LBxrnNVv793IuYjCQov+9L3A1hgxVeeVa4LllHeKP?=
 =?iso-8859-1?Q?rT3tEzaUqg7+X88RDPFeTt/lEsrQLuvQ2U0m2DSQUDm6Q1Dfn3kpvnFQzf?=
 =?iso-8859-1?Q?imFPTjQPvZwnsBV0NAlqv3wcY5sfYQ5t3dEjhUFhc3GQwxIyI3P1s5AzW8?=
 =?iso-8859-1?Q?sJB1PQXjrPUfYWKWcMaWzdqL2NxVUReYQo44v2s4oZY35kcREu5LzmwRnZ?=
 =?iso-8859-1?Q?jj33toowbTRc6YvLiIuKTBQRnAYp+uj89Ach9E11BaooZKRL0uWjbnC42X?=
 =?iso-8859-1?Q?Xa4MTLBvoW1AF1hsYi8Fr7sdC5AfmbIYSXibGysdFKcmuCphJPFZF/QByt?=
 =?iso-8859-1?Q?pNN5JeCsdJUw2Osz/m7Hyumi6tUqCFOOAHPi47GOeFWGaJp0q6wh3U8tq7?=
 =?iso-8859-1?Q?H5pXCdjaFOUR2KIWGJPSwe6ucdwyxsPJuk/i9iv53IVnq4vdKRdfqirJBC?=
 =?iso-8859-1?Q?Euvnzq6K8ZtUztRu9lG0RgPGKdmjxlJ+GkcZKOIRj5YJbeHNeh9kkIVWhd?=
 =?iso-8859-1?Q?TF5umi+ph58bGbqTYjIDakgrpW4jvqrGzgNueQe6qBiMlhgRaSjlUGjyTi?=
 =?iso-8859-1?Q?T2okLTVE40ce9z2sV3fOfpOjjGO7N8rCLvyL98d/TzZajwEv5Bj98hmAEH?=
 =?iso-8859-1?Q?HbjiPkFmDysMaUuEeEbpXBXzUiId/A9/UNsscqkzFQ76u+n1EqDfvtDTs3?=
 =?iso-8859-1?Q?p1t2fZrEBFddgt15lRNQYWUSi8OUIbfc1X65GCEtP84UrqXmh0Rv/bv8Pk?=
 =?iso-8859-1?Q?rVYWwELRdwtEKP2rv3X0X7Ot87MuFQ3ciSnFKIL96BO9WSg2c8op4kzngP?=
 =?iso-8859-1?Q?VVzpoL6bnOumbE+gOGJ/LG3n5t1boNgvWfIj4hruTSi42GmuvGnsWXadxP?=
 =?iso-8859-1?Q?LqYiLaeHQ0GCHAbqY0d/qbCylsqSdMP6+suTVM0aJfc5Cm5CIFD5yqmBHe?=
 =?iso-8859-1?Q?ZZithb95xCdndYhWyWexiJ8Vk2/m+SM=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: DU5PR03MB10263.eurprd03.prod.outlook.com
X-MS-Exchange-CrossTenant-Network-Message-Id: 40a909f0-720c-4429-84e7-08dea0522d03
X-MS-Exchange-CrossTenant-originalarrivaltime: 22 Apr 2026 09:33:13.6031
 (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: ulqNtfuQBBUJ+pn98mgs5l4dSKIRdQ3V6MRkh0vYRGKjU92HeTlUTN3DFP5vjmwuV2oIPelJSuxcmYGUw3xs5xIN1RVcuo/A5SVDT/G+wEo=
X-MS-Exchange-Transport-CrossTenantHeadersStamped: AM9PR03MB7710
X-purgate-ID: tlsNG-4011c0/1776850395-815848B7-4717532A/0/0
X-purgate-type: clean
X-purgate-size: 3042

In scif_uart_init_postirq(), when setup_irq() returns an error the
failure was only logged via dprintk() and execution continued,
unconditionally writing TIE|RIE|REIE into the Serial Control Register
(SCSCR). This armed all three hardware interrupt lines (TX FIFO empty,
RX data ready, receive error) with no handler registered to service
them. On platforms where the GIC receives these asserted lines, the
result is either repeated spurious-interrupt warnings or an unhandled
interrupt fault.

The fix adds an early return inside the error branch. The
interrupt-enable write to SCSCR is skipped entirely when no handler is
registered.

SCIF TX continues to operate correctly after this change. The Xen
serial framework never calls serial_async_transmit() for SCIF, so
port->txbuf is always NULL. This causes __serial_putc() to take the
synchronous finite-capacity path, which polls the SCFSR_TDFE hardware
flag directly and does not depend on the interrupt mechanism. RX
wouldn't work if irq wasn't registered.

As a secondary clean-up, the hardware error-flag clearing sequence is
moved to before the setup_irq() call so that error bits accumulated
since init_preirq() are cleared unconditionally, regardless of whether
IRQ registration succeeds.

Signed-off-by: Oleksii Moisieiev <oleksii_moisieiev@epam.com>
---

(no changes since v2)

Changes in v2:
- Extend fix to pl011, cadence-uart and exynos4210
- fix typo in patch 1 description

 xen/drivers/char/scif-uart.c | 16 ++++++++++++----
 1 file changed, 12 insertions(+), 4 deletions(-)

diff --git a/xen/drivers/char/scif-uart.c b/xen/drivers/char/scif-uart.c
index 888821a3b8..673a2d3800 100644
--- a/xen/drivers/char/scif-uart.c
+++ b/xen/drivers/char/scif-uart.c
@@ -187,16 +187,24 @@ static void __init scif_uart_init_postirq(struct seri=
al_port *port)
     uart->irqaction.name    =3D "scif_uart";
     uart->irqaction.dev_id  =3D port;
=20
-    if ( (rc =3D setup_irq(uart->irq, 0, &uart->irqaction)) !=3D 0 )
-        dprintk(XENLOG_ERR, "Failed to allocated scif_uart IRQ %d\n",
-                uart->irq);
-
     /* Clear all errors */
     if ( scif_readw(uart, params->status_reg) & params->error_mask )
         scif_writew(uart, params->status_reg, ~params->error_mask);
     if ( scif_readw(uart, params->overrun_reg) & params->overrun_mask )
         scif_writew(uart, params->overrun_reg, ~params->overrun_mask);
=20
+    if ( (rc =3D setup_irq(uart->irq, 0, &uart->irqaction)) !=3D 0 )
+    {
+        dprintk(XENLOG_ERR, "Failed to allocated scif_uart IRQ %d\n",
+                uart->irq);
+        /*
+         * If the IRQ handler could not be installed (setup_irq failed),
+         * do not enable TX/RX or error interrupts. Serial transmit will
+         * fall back to polling mode.
+         */
+        return;
+    }
+
     /* Enable TX/RX and Error Interrupts  */
     scif_writew(uart, SCIF_SCSCR, scif_readw(uart, SCIF_SCSCR) |
                 params->irq_flags);
--=20
2.43.0


From xen-devel-bounces@lists.xenproject.org Wed Apr 22 09:34:44 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 22 Apr 2026 09:34:44 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1290125.1569807 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wFTyl-0003Ml-8q; Wed, 22 Apr 2026 09:34:43 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1290125.1569807; Wed, 22 Apr 2026 09: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 1wFTyl-0003Me-6G; Wed, 22 Apr 2026 09:34:43 +0000
Received: by outflank-mailman (input) for mailman id 1290125;
 Wed, 22 Apr 2026 09:34:41 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <jens.wiklander@linaro.org>) id 1wFTyj-0003MV-Ox
 for xen-devel@lists.xenproject.org; Wed, 22 Apr 2026 09:34:41 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wFTyh-00Em4Z-K1
 for xen-devel@lists.xenproject.org; Wed, 22 Apr 2026 11:34:41 +0200
Received: from [10.42.69.2] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <jens.wiklander@linaro.org>)
 id 69e89625-2eae-0a2a0a5409dd-0a2a4502a7d6-22
 for <xen-devel@lists.xenproject.org>; Wed, 22 Apr 2026 11:34:41 +0200
Received: from [209.85.167.182] (helo=mail-oi1-f182.google.com)
 by tlsNG-720697.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.1)
 (envelope-from <jens.wiklander@linaro.org>)
 id 69e8962f-af86-0a2a45020019-d155a7b6d980-3
 for <xen-devel@lists.xenproject.org>; Wed, 22 Apr 2026 11:34:40 +0200
Received: by mail-oi1-f182.google.com with SMTP id
 5614622812f47-479d9b155deso1025502b6e.3
 for <xen-devel@lists.xenproject.org>; Wed, 22 Apr 2026 02:34:40 -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=google header.d=linaro.org header.i="@linaro.org" header.h="Content-Transfer-Encoding:Cc:To:Subject:Message-ID:Date:From:In-Reply-To:References:MIME-Version"
ARC-Seal: i=1; a=rsa-sha256; t=1776850479; cv=none;
        d=google.com; s=arc-20240605;
        b=NltxZV6Kyu05P/ejc5gB3yFbLwlQcGYflgtcqodM3cLry+VB+WobdQU3bh6FikaHMH
         P9976gtnigY09zWId8KzcuwklLeFZBSwFLh0nk1DqkbH43s7OI1an3KdlZOXtQHyxPTg
         W8qPftT4VylPXcqFpeQfKYb10TsoPWU4BY1L8qxnVmOyg48/fdEs7IH3T/XUp/zU0gik
         Q9uDhQMtdIyuQE0/Aw57LxLsFUHpKFjD5uROqy/7GYIm34TV7TkqSMRuO/kSEfB8UpO+
         hauGLk3xsATL5lOoqNVvoq5eWJccc2gdtLmt3IVmoIvNwhhwL3mM3oNe0X3v0gJO3p7Z
         Ngpw==
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20240605;
        h=content-transfer-encoding:cc:to:subject:message-id:date:from
         :in-reply-to:references:mime-version:dkim-signature;
        bh=IjGNLzZoVRcnaqKTCMBdzdnt+nQoxCffNoAezlXriWA=;
        fh=wNLC6Hyb5Ukz/ErppBRQBwv8vwa/OMsdh6R8bnNsiPU=;
        b=XIAndFaDmQZnTMfrlp0TKQhG0KCU/wtNX35Mm8jCbwpfKQDSbGwtlGC0ocr2cD9ni3
         xKHoH/wNkisE3sAw+7xf1xKR4i1dXFsWB/ccVkFUmLGVGdkuD2UG3JplhZRWIfbRYApR
         MroCYx18APy+4j3sRP9o0J5iEb0p1T3BiJ2jbv+kJTrs7KGzuBMOjTtV/+nUJCdboV1G
         sH050Hj3Cv3QiWPgz3zftlnER379uiYZtBJfcEwMIhnffFBxWY5r1A5ps+JlQHIPkH0X
         xmGgZtauqL0kDZfWkDpRAiKsHHY2geKwJ+UMLX3ikR4+PDC/pU5kORp23gna/n4Pus9g
         pyXA==;
        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=linaro.org; s=google; t=1776850479; x=1777455279; darn=lists.xenproject.org;
        h=content-transfer-encoding:cc:to:subject:message-id:date:from
         :in-reply-to:references:mime-version:from:to:cc:subject:date
         :message-id:reply-to;
        bh=IjGNLzZoVRcnaqKTCMBdzdnt+nQoxCffNoAezlXriWA=;
        b=pALyDpJJxCFMyT5X+OgCx/0hpeZK3ORPubfMu3ljCG79F+x2etGPcsELPp+NPtlDSM
         A7PU9SfzxIhqu9iFXavpWA7WCEAlmluxCZ41cAz1HCYxBiyzcv7rWgR0jOz7v2grgAQm
         H4EWEevpEeXJ1+8E00XQ/aE6E5dMsOZFO1JGIK341wupEmqbMNnyOIUxMCBGeWMUaUTm
         FsCRNOhpdbF7bNErdFlgaqdn4TLZDLVViiZrZt1+Uxh/cX58XtaXgYezFfesGRLTJ+cW
         E3kpIs2Y8oDBqmHe+0hmwyu+TRXHDoRBgN8+VvKrNagmGB1a+eF5fi+Fai2U/bWW/paP
         zJ3Q==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20251104; t=1776850479; x=1777455279;
        h=content-transfer-encoding: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;
        bh=IjGNLzZoVRcnaqKTCMBdzdnt+nQoxCffNoAezlXriWA=;
        b=Hkr8sJlfVXP04rhYOibwDU5bJShxZehnOH4S9C2zpaUey36cW6pUDIfbQpLZIhpTpM
         kQs88sJ2NBb5f2+TkA1WlSBbdyRxMyGHWD+3mMxsd6mhBqr1YYBkvyQoZVldMBWAYb4z
         9ou400ZoWTRljEHTsu/XlvjrrcPrZLwH0J6xq6ozn9l7rWP5N4U/tuVRMDAUVa1o9scN
         r/nY2gtuQhQ+4ULOzYy476Nk9UcuuO7Te6TCSFFtBzuUhY2g2LLtYaKvNKmK94z/fWw0
         wpIRRnlCaePfGXp7JNXIFiPGn8NwY4jhz7y2L7oQUkynDC0cgZDFeZB5mqB5B9pTp0fc
         mDhA==
X-Gm-Message-State: AOJu0YyxHURTa8lAKuzLmFuqwgdWFjs6SNpNqskFQ9QDaFqsTGdBshhO
	y16xCxyz7QD17979J0Wun/BlFwWhLAAvWEZ/3WXz21KYAQ6t2kvmLy1Eys16UdVSink0eIQ6HEc
	3M1R0HjniGYHobdwpE4YBYj5uT5a/ewiKVMmkrtYWGHEYu1TOiT25SVBb7g==
X-Gm-Gg: AeBDiesGv8SRusDkIxuABqlbnMH8WApWy5cB0SBL8g7XvsumYLMFzvLKFbSWoh43L8v
	VNFMXG88vptxnMtEsIUwh8aZL3rCy8kpRo/f68SahbDlmOa2qBj/hROkp9GGSNR7dnEBHlQHHl4
	4EvRSFonjf9AjpqV6VlcY9myvq4Qtl4LglHShZIUSQPTb2N1lGjIaLaWn+3IT+h07zlhqsiEg2j
	qf0gVO3zt+oD9qxsdm+2qn+pOxNUbLz2qofo3wcwAtKED8J1/bZJar3hLWj+mRNwmPlXrnvfQkg
	DEdMKiayN3oa5nsMVXY9MU0gBXtWpwkfEBxO3R8r7QkK2OGL
X-Received: by 2002:a05:6820:c2cc:10b0:689:dfc8:5e3c with SMTP id
 006d021491bc7-69462e21091mr7845143eaf.3.1776850479020; Wed, 22 Apr 2026
 02:34:39 -0700 (PDT)
MIME-Version: 1.0
References: <cover.1776266307.git.bertrand.marquis@arm.com> <7053b8c14bbe50cc855dad0a82cde2bb10153d2b.1776266307.git.bertrand.marquis@arm.com>
In-Reply-To: <7053b8c14bbe50cc855dad0a82cde2bb10153d2b.1776266307.git.bertrand.marquis@arm.com>
From: Jens Wiklander <jens.wiklander@linaro.org>
Date: Wed, 22 Apr 2026 11:34:27 +0200
X-Gm-Features: AQROBzCz5_jC5njY6PS3Hdagxogu3g53p99f8Avu2f8VjavqSIrjuDcbIdWOC9k
Message-ID: <CAHUa44HaFjLf9CcSJMDD5O-R24_Kq_7zabw2Op2X=P1gj+85Sw@mail.gmail.com>
Subject: Re: [PATCH 2/6] xen/arm: ffa: Track hypervisor notifications in a bitmap
To: Bertrand Marquis <bertrand.marquis@arm.com>
Cc: xen-devel@lists.xenproject.org, 
	Volodymyr Babchuk <volodymyr_babchuk@epam.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-720697/1776850481-83961161-D049620E/0/0
X-purgate-type: clean
X-purgate-size: 5630

Hi Bertrand,

On Fri, Apr 17, 2026 at 3:41=E2=80=AFPM Bertrand Marquis
<bertrand.marquis@arm.com> wrote:
>
> Hypervisor notifications are currently tracked with a dedicated
> buff_full_pending boolean. That state only represents a single HYP
> notification bit and keeps HYP bitmap handling tied to single-purpose
> bookkeeping.
>
> Replace the boolean with a hypervisor notification bitmap protected by
> notif_lock. INFO_GET reports pending when the bitmap is non-zero, GET
> returns and clears the HYP bitmap under the lock, and RX-buffer-full
> sets FFA_NOTIF_RX_BUFFER_FULL in the bitmap instead of updating
> separate state.
>
> Initialize and clear the bitmap during domain lifecycle handling, and
> use ctx->ffa_id for bitmap create and destroy so the notification state
> stays tied to the cached FF-A endpoint ID.
>
> No functional changes.
>
> Signed-off-by: Bertrand Marquis <bertrand.marquis@arm.com>
> ---
>  xen/arch/arm/tee/ffa_notif.c   | 46 ++++++++++++++++++++++++++--------
>  xen/arch/arm/tee/ffa_private.h |  9 +++++--
>  2 files changed, 43 insertions(+), 12 deletions(-)
>
> diff --git a/xen/arch/arm/tee/ffa_notif.c b/xen/arch/arm/tee/ffa_notif.c
> index 07bc5cb3a430..d15119409a25 100644
> --- a/xen/arch/arm/tee/ffa_notif.c
> +++ b/xen/arch/arm/tee/ffa_notif.c
> @@ -94,8 +94,15 @@ void ffa_handle_notification_info_get(struct cpu_user_=
regs *regs)
>
>      notif_pending =3D test_and_clear_bool(ctx->notif.secure_pending);
>      if ( IS_ENABLED(CONFIG_FFA_VM_TO_VM) )
> +    {
>          notif_pending |=3D test_and_clear_bool(ctx->notif.vm_pending);
>
> +        spin_lock(&ctx->notif.notif_lock);
> +        if ( ctx->notif.hyp_pending )
> +            notif_pending =3D true;
> +        spin_unlock(&ctx->notif.notif_lock);

Isn't this a functional change? Before this patch, we didn't consider
ctx->notif.buff_full_pending here. Am I missing something?

> +    }
> +
>      if ( notif_pending )
>      {
>          /* A pending global notification for the guest */
> @@ -174,12 +181,17 @@ void ffa_handle_notification_get(struct cpu_user_re=
gs *regs)
>              w6 =3D resp.a6;
>      }
>
> -    if ( IS_ENABLED(CONFIG_FFA_VM_TO_VM) &&
> -          flags & FFA_NOTIF_FLAG_BITMAP_HYP &&
> -          test_and_clear_bool(ctx->notif.buff_full_pending) )
> +    if ( IS_ENABLED(CONFIG_FFA_VM_TO_VM) )
>      {
> -        ACCESS_ONCE(ctx->notif.vm_pending) =3D false;
> -        w7 =3D FFA_NOTIF_RX_BUFFER_FULL;
> +        spin_lock(&ctx->notif.notif_lock);
> +
> +        if ( (flags & FFA_NOTIF_FLAG_BITMAP_HYP) && ctx->notif.hyp_pendi=
ng )
> +        {
> +            w7 =3D ctx->notif.hyp_pending;
> +            ctx->notif.hyp_pending =3D 0;
> +        }
> +
> +        spin_unlock(&ctx->notif.notif_lock);
>      }
>
>      ffa_set_regs(regs, FFA_SUCCESS_32, 0, w2, w3, w4, w5, w6, w7);
> @@ -207,12 +219,17 @@ int32_t ffa_handle_notification_set(struct cpu_user=
_regs *regs)
>  void ffa_raise_rx_buffer_full(struct domain *d)
>  {
>      struct ffa_ctx *ctx =3D d->arch.tee;
> +    uint32_t prev_bitmap;
>
>      if ( !ctx )
>          return;
>
> -    ACCESS_ONCE(ctx->notif.buff_full_pending) =3D true;
> -    if ( !test_and_set_bool(ctx->notif.vm_pending) )
> +    spin_lock(&ctx->notif.notif_lock);
> +    prev_bitmap =3D ctx->notif.hyp_pending;
> +    ctx->notif.hyp_pending |=3D FFA_NOTIF_RX_BUFFER_FULL;
> +    spin_unlock(&ctx->notif.notif_lock);
> +
> +    if ( !(prev_bitmap & FFA_NOTIF_RX_BUFFER_FULL) )

Do we need to check for FFA_NOTIF_RX_BUFFER_FULL? Isn't !prev_bitmap
more accurate, if any other bit would ever be used in the bitmap?

Cheers,
Jens

>          inject_notif_pending(d);
>  }
>  #endif
> @@ -426,12 +443,15 @@ void ffa_notif_init(void)
>
>  int ffa_notif_domain_init(struct domain *d)
>  {
> +    struct ffa_ctx *ctx =3D d->arch.tee;
>      int32_t res;
>
> +    spin_lock_init(&ctx->notif.notif_lock);
> +    ctx->notif.hyp_pending =3D 0;
> +
>      if ( fw_notif_enabled )
>      {
> -
> -        res =3D ffa_notification_bitmap_create(ffa_get_vm_id(d), d->max_=
vcpus);
> +        res =3D ffa_notification_bitmap_create(ctx->ffa_id, d->max_vcpus=
);
>          if ( res )
>              return -ENOMEM;
>      }
> @@ -441,10 +461,16 @@ int ffa_notif_domain_init(struct domain *d)
>
>  void ffa_notif_domain_destroy(struct domain *d)
>  {
> +    struct ffa_ctx *ctx =3D d->arch.tee;
> +
> +    spin_lock(&ctx->notif.notif_lock);
> +    ctx->notif.hyp_pending =3D 0;
> +    spin_unlock(&ctx->notif.notif_lock);
> +
>      /*
>       * Call bitmap_destroy even if bitmap create failed as the SPMC will
>       * return a DENIED error that we will ignore.
>       */
>      if ( fw_notif_enabled )
> -        ffa_notification_bitmap_destroy(ffa_get_vm_id(d));
> +        ffa_notification_bitmap_destroy(ctx->ffa_id);
>  }
> diff --git a/xen/arch/arm/tee/ffa_private.h b/xen/arch/arm/tee/ffa_privat=
e.h
> index c291f32b56ff..5693772481ed 100644
> --- a/xen/arch/arm/tee/ffa_private.h
> +++ b/xen/arch/arm/tee/ffa_private.h
> @@ -340,9 +340,14 @@ struct ffa_ctx_notif {
>      bool vm_pending;
>
>      /*
> -     * True if domain has buffer full notification pending
> +     * Lock protecting the hypervisor-managed notification state.
>       */
> -    bool buff_full_pending;
> +    spinlock_t notif_lock;
> +
> +    /*
> +     * Bitmap of pending hypervisor notifications (for HYP bitmap querie=
s).
> +     */
> +    uint32_t hyp_pending;
>  };
>
>  struct ffa_ctx {
> --
> 2.53.0
>


From xen-devel-bounces@lists.xenproject.org Wed Apr 22 09:44:37 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 22 Apr 2026 09:44:37 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1290140.1569832 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wFU8J-0005tS-LE; Wed, 22 Apr 2026 09:44:35 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1290140.1569832; Wed, 22 Apr 2026 09:44: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 1wFU8J-0005st-FK; Wed, 22 Apr 2026 09:44:35 +0000
Received: by outflank-mailman (input) for mailman id 1290140;
 Wed, 22 Apr 2026 09:44:34 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92) id 1wFU8H-0005eC-VF
 for xen-devel@lists.xenproject.org; Wed, 22 Apr 2026 09:44:34 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wFU8H-00E82D-By
 for xen-devel@lists.xenproject.org; Wed, 22 Apr 2026 11:44:33 +0200
Received: from [10.42.69.3] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <oleksii.kurochko@gmail.com>)
 id 69e89879-5cb7-0a2a0a5109dd-0a2a4503bf1a-48
 for <xen-devel@lists.xenproject.org>; Wed, 22 Apr 2026 11:44:33 +0200
Received: from [209.85.167.46] (helo=mail-lf1-f46.google.com)
 by tlsNG-33051d.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.1)
 (envelope-from <oleksii.kurochko@gmail.com>)
 id 69e89880-672d-0a2a45030019-d155a72ed0f4-3
 for <xen-devel@lists.xenproject.org>; Wed, 22 Apr 2026 11:44:32 +0200
Received: by mail-lf1-f46.google.com with SMTP id
 2adb3069b0e04-5a41099fa86so4655054e87.2
 for <xen-devel@lists.xenproject.org>; Wed, 22 Apr 2026 02:44:32 -0700 (PDT)
Received: from fedora (user-109-243-69-121.play-internet.pl. [109.243.69.121])
 by smtp.gmail.com with ESMTPSA id
 2adb3069b0e04-5a41cc7f832sm3494193e87.28.2026.04.22.02.44.30
 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
 Wed, 22 Apr 2026 02:44:30 -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=20251104 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=20251104; t=1776851071; x=1777455871; 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;
        bh=ccoFJqXqscTgy/LGmtQbJuqk+NDolzkDBynx/48/gkQ=;
        b=BRTsnYl6l1eIx8r4worWJuyYK81brhYITiHMRnc8oxiNCQNSkbxUduOo8TYoLDGACi
         drO9JHSl+Qk7M60+uWkLPl1u5eaO3jGHVWyAUCN9SVg3LE9M0LzVYcXpoiTAfTQuJPRp
         5ss5ClrD4qTU69I8bttnMT5GDGe0Ra0fVg+JS9G5DRz9r19yNvFT1vcYTLK8yiOx0YHN
         HEe7xHrNedis7OJQH1/SdWHjzDRqz3aC9d8BAM1RaGB7mo1LwmAsjYrNdwyKlW2Q+p+t
         nJOvp0E+hdy4IXZppQoIEdhELrbR7k2vUhn7IpfX7sdpyBUMybVksoESXB15Yklnd7Rj
         bA+A==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20251104; t=1776851071; x=1777455871;
        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;
        bh=ccoFJqXqscTgy/LGmtQbJuqk+NDolzkDBynx/48/gkQ=;
        b=p43sB5Ovwl7oW3EyyY4nk9IEEZo45fjWudEoAtq1y3VrHpkGNOi6sMLF/SfL9f5I/K
         i5cUWaeR/w6B4EM8l7AQazf9rDVo69vhiKEGs1rCS3txTF1bYvL95l9BOiRtbbC2SeKD
         umkVDnxD8YuXNOcS6NcgnLHuMVhYZvzpz0MHU5DNmg12qEQ0zoIld/zBw4seKasaS+B4
         nJlrwQp3t/3/a/XP7TrQXBIlkdIBp/AIXUYZ4xbOqHQ0zvV5lck14hhADyEMKszljU/t
         2GCovbA9Xvs5Aq96u0g0bUsDvwWuEjYsJipu44P7eaNSr2hcPQyYQ2GAbS+A2qCGZ450
         rdZw==
X-Gm-Message-State: AOJu0YxONHfeNrH3ddNtgtTQVPr1l5xvvEhGMEknPs+Ep0rhDtr39uCE
	0Xz5gFg5zW566TJgowjkj201JexbHMfqbx5+4wIV1Zc6AJkhfS6f49CPy3wtsw==
X-Gm-Gg: AeBDievB0AQzvaSZ8lwVCsIJBR622peiKDRoUiHYjTtrdocc3MmO0PeBFMy/OBl6pkr
	8NIWePQ998DUyp3C7RR0YcP5s4GNxJ0865LqBZYg6zz63KP05wAiyoLU48axeDyP6PydL5nJH4s
	DfZRKiOrnsUBfYbN3IAx6aHt4T8yYUp+CYsA/94umuJQr+yol6QmvGSJQVU4+viW0gaots58K4t
	GO4xymu41oY8XmLqDVExOJGXp/pr7C9j2yL9XV/hmqakrFFCzpTAx8p+Pcwom2sZ0cqTMhVDeef
	qiujaLjC8K6GT57nzY7/2nowyoXkt8Q77SEwUAS+APgJTJnhyD/86rz1KgXARX4dRavWzX5pz0y
	hao6PRq7E13olkto75TdwPR98+qtnoMg0sDwL+8h4uxyS8e1u0Wib0TV5h6iHbwrtyIWwTdUarJ
	YJ8kvummHs/UYBtDEj2mqb+Xxlq0GyCICNONXYu7VLyFm56f4ClVAkLbulNwHvc2hsC/n4d4JG2
	H9B
X-Received: by 2002:a05:6512:308f:b0:5a2:8495:965f with SMTP id 2adb3069b0e04-5a4172bfedcmr8378917e87.15.1776851071013;
        Wed, 22 Apr 2026 02:44:31 -0700 (PDT)
From: Oleksii Kurochko <oleksii.kurochko@gmail.com>
To: xen-devel@lists.xenproject.org
Cc: Oleksii Kurochko <oleksii.kurochko@gmail.com>,
	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?q?Roger=20Pau=20Monn=C3=A9?= <roger.pau@citrix.com>
Subject: [PATCH v2 1/3] xen/dom0less: introduce next_phandle in struct kernel_info
Date: Wed, 22 Apr 2026 11:44:17 +0200
Message-ID: <4a9d79a9ef2bf25e904c9f49ddef7d5a3f3a4ac2.1776780944.git.oleksii.kurochko@gmail.com>
X-Mailer: git-send-email 2.53.0
In-Reply-To: <cover.1776780944.git.oleksii.kurochko@gmail.com>
References: <cover.1776780944.git.oleksii.kurochko@gmail.com>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit
X-purgate-ID: tlsNG-33051d/1776851072-2A567938-522BEE5E/10/73395122804
X-purgate-type: spam
X-purgate-size: 6042

There are cases where it is necessary to know the next available phandle
number in order to generate phandles for guest device nodes.

When a partial FDT (pfdt) is provided, special care is needed during
initialization of next_phandle, as the pfdt may already contain a dummy
interrupt controller node with a phandle assigned to it. next_phandle
must therefore be initialized to one past the highest phandle already
present in the pfdt, to avoid collisions.

Since next_phandle may be needed for the very first guest node generated,
domain_handle_dtb_boot_module() is moved earlier in prepare_dtb_domU().
The new call site also aligns better with the existing comment stating
that domain_handle_dtb_boot_module() must be called before the rest of
the device tree is generated.

Introduce alloc_phandle() to ensure that phandles allocated for guest
nodes do not overlap the Xen-reserved phandle range.  This helper will
be used by subsequent patches (by RISC-V at the moment).

Signed-off-by: Oleksii Kurochko <oleksii.kurochko@gmail.com>
---
Here is an example of generated guest DTB:
    cpus {
    ...
      cpu@0 {
    ...
        interrupt-controller {
          compatible = "riscv,cpu-intc";
          #interrupt-cells = <0x1>;
          interrupt-controller;
          phandle = <0xfdea>;
        };
      };
    };

    /soc/imsics@28000000 {

      interrupts-extended = <0xfdea 0x9 >;

      phandle = <0xfdeb>;
    };

    /soc/aplic@d000000 {
    ...
      msi-parent = <0xfdeb>;
      phandle = <0x1>;
    };

Note that phandle is generated in this example not by get_next_free_phandle().

For non RISC-V people, APLIC is an interrupt controller (something like GIC in
Arm), IMSIC it is interrupt controller which provides MSI and connects to
each CPU.

[1] https://www.kernel.org/doc/Documentation/devicetree/bindings/interrupt-controller/riscv%2Ccpu-intc.txt
---
Changes in v2:
 - s/free_phandle/next_phandle.
 - s/get_next_free_phandle/alloc_phandle.
---
 xen/common/device-tree/dom0less-build.c | 44 ++++++++++++++++++-------
 xen/include/xen/fdt-domain-build.h      |  6 ++++
 xen/include/xen/fdt-kernel.h            |  3 ++
 3 files changed, 41 insertions(+), 12 deletions(-)

diff --git a/xen/common/device-tree/dom0less-build.c b/xen/common/device-tree/dom0less-build.c
index 840d14419da2..ca3ac84a3ef3 100644
--- a/xen/common/device-tree/dom0less-build.c
+++ b/xen/common/device-tree/dom0less-build.c
@@ -389,6 +389,24 @@ static int __init domain_handle_dtb_boot_module(struct domain *d,
     if ( res < 0 )
         goto out;
 
+    /*
+     * Find the highest phandle in the partial FDT so next_phandle starts
+     * above it, avoiding collisions with pfdt's own phandle assignments.
+     */
+    res = fdt_generate_phandle(pfdt, &kinfo->next_phandle);
+    if ( res )
+    {
+        res = (res == -FDT_ERR_NOPHANDLES) ? -EOVERFLOW : -EINVAL;
+        goto out;
+    }
+
+    if ( kinfo->next_phandle >= GUEST_PHANDLE_GIC )
+    {
+        dprintk(XENLOG_ERR, "Phandle allocation overlaps Xen reserved range\n");
+        res = -EOVERFLOW;
+        goto out;
+    }
+
     for ( node_next = fdt_first_subnode(pfdt, 0);
           node_next > 0;
           node_next = fdt_next_subnode(pfdt, node_next) )
@@ -459,6 +477,8 @@ static int __init prepare_dtb_domU(struct domain *d, struct kernel_info *kinfo)
     BUILD_BUG_ON(DOMU_DTB_SIZE > SZ_2M);
 
     kinfo->phandle_intc = GUEST_PHANDLE_GIC;
+    kinfo->next_phandle = 1;
+    BUILD_BUG_ON(GUEST_PHANDLE_GIC == 1);
 
 #ifdef CONFIG_GRANT_TABLE
     kinfo->gnttab_start = GUEST_GNTTAB_BASE;
@@ -499,6 +519,18 @@ static int __init prepare_dtb_domU(struct domain *d, struct kernel_info *kinfo)
     if ( ret )
         goto err;
 
+    /*
+     * domain_handle_dtb_boot_module() must be called before the rest of the
+     * device tree is generated because it sets phandle_intc and next_phandle,
+     * which subsequent node generation depends on.
+     */
+    if ( kinfo->dtb )
+    {
+        ret = domain_handle_dtb_boot_module(d, kinfo);
+        if ( ret )
+            goto err;
+    }
+
     ret = make_chosen_node(kinfo);
     if ( ret )
         goto err;
@@ -516,18 +548,6 @@ static int __init prepare_dtb_domU(struct domain *d, struct kernel_info *kinfo)
     if ( ret )
         goto err;
 
-    /*
-     * domain_handle_dtb_boot_module has to be called before the rest of
-     * the device tree is generated because it depends on the value of
-     * the field phandle_intc.
-     */
-    if ( kinfo->dtb )
-    {
-        ret = domain_handle_dtb_boot_module(d, kinfo);
-        if ( ret )
-            goto err;
-    }
-
     ret = make_intc_domU_node(kinfo);
     if ( ret )
         goto err;
diff --git a/xen/include/xen/fdt-domain-build.h b/xen/include/xen/fdt-domain-build.h
index 1d9e77df0eb3..a604f3983fe6 100644
--- a/xen/include/xen/fdt-domain-build.h
+++ b/xen/include/xen/fdt-domain-build.h
@@ -63,6 +63,12 @@ int find_unallocated_memory(const struct kernel_info *kinfo,
                                       unsigned long e_gfn,
                                       void *data));
 
+/* Return 0 (invalid phandle) if the Xen-reserved range has been reached */
+static inline uint32_t alloc_phandle(struct kernel_info *kinfo)
+{
+    return kinfo->next_phandle >= GUEST_PHANDLE_GIC ? 0 : kinfo->next_phandle++;
+}
+
 #endif /* __XEN_FDT_DOMAIN_BUILD_H__ */
 
 /*
diff --git a/xen/include/xen/fdt-kernel.h b/xen/include/xen/fdt-kernel.h
index aa977a50f4fc..438adfe3855b 100644
--- a/xen/include/xen/fdt-kernel.h
+++ b/xen/include/xen/fdt-kernel.h
@@ -44,6 +44,9 @@ struct kernel_info {
     /* Interrupt controller phandle */
     uint32_t phandle_intc;
 
+    /* Next free phandle available for assigning to guest device nodes */
+    uint32_t next_phandle;
+
     /* loader to use for this kernel */
     void (*load)(struct kernel_info *info);
 
-- 
2.53.0



From xen-devel-bounces@lists.xenproject.org Wed Apr 22 09:44:37 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 22 Apr 2026 09:44:37 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1290141.1569837 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wFU8K-00063P-3x; Wed, 22 Apr 2026 09:44:36 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1290141.1569837; Wed, 22 Apr 2026 09:44: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 1wFU8J-00062U-Tx; Wed, 22 Apr 2026 09:44:35 +0000
Received: by outflank-mailman (input) for mailman id 1290141;
 Wed, 22 Apr 2026 09:44:35 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92) id 1wFU8J-0005rJ-86
 for xen-devel@lists.xenproject.org; Wed, 22 Apr 2026 09:44:35 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wFU8I-00E82D-LI
 for xen-devel@lists.xenproject.org; Wed, 22 Apr 2026 11:44:34 +0200
Received: from [10.42.69.2] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <oleksii.kurochko@gmail.com>)
 id 69e89880-5cb7-0a2a0a5109dd-0a2a4502b5ae-12
 for <xen-devel@lists.xenproject.org>; Wed, 22 Apr 2026 11:44:34 +0200
Received: from [209.85.208.178] (helo=mail-lj1-f178.google.com)
 by tlsNG-720697.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.1)
 (envelope-from <oleksii.kurochko@gmail.com>)
 id 69e89882-af86-0a2a45020019-d155d0b2a8a6-3
 for <xen-devel@lists.xenproject.org>; Wed, 22 Apr 2026 11:44:34 +0200
Received: by mail-lj1-f178.google.com with SMTP id
 38308e7fff4ca-38dd9f0fdc6so65609271fa.0
 for <xen-devel@lists.xenproject.org>; Wed, 22 Apr 2026 02:44:34 -0700 (PDT)
Received: from fedora (user-109-243-69-121.play-internet.pl. [109.243.69.121])
 by smtp.gmail.com with ESMTPSA id
 2adb3069b0e04-5a41cc7f832sm3494193e87.28.2026.04.22.02.44.32
 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
 Wed, 22 Apr 2026 02:44:32 -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=20251104 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=20251104; t=1776851073; x=1777455873; 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;
        bh=QdrnKw1Nlrntb+VNA/letozKDP4oOCl6jEuvPSlVYk8=;
        b=Y3sMvdCND6IDq5Mj7XAiwD5w7VzHeVcDKyVMsNbALvrTbAi8o+cb3EI18sCodetykM
         LLSplgYQD8pnnFmsC75sSbBo2L2oeAYoI7DHSg1rPTt9U9GENoi4uPJacPwjTHZBpPrq
         r3hA1dz5/+w/SH28OpFSA31/Z17Chefbb801AFRLu5PiLpgrD+UUu8KxiHuEtoj+BW7f
         cfLsDdbCdIFr7avCRMHM5a+VjvQVkB+BlEpbNUw+pwdGyX8xpqhG2ZcPUU5iCU52lytm
         u30k8Iy8oamREKBgW+87EOynqLlHLdEFVMr42FkW0Z1iGANGJ8V3XoL4Zc2p5vmLMCPh
         n0RA==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20251104; t=1776851073; x=1777455873;
        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;
        bh=QdrnKw1Nlrntb+VNA/letozKDP4oOCl6jEuvPSlVYk8=;
        b=TRlnUruI8NcAVLndQbR+r0BOHRI7TwmOqNOytqJIkh4PN7hlZsA6XxmQWKSCqWtci4
         BxV+aHri6DTqy/Wk/UatlkODMl2ZUTu9iEAZT9EDisJGFIJg1NM9XnuqtSQpdugGouaT
         nkXnon8h7ZYt7iJcQX0ztFzWkRVXJmK/w4tk4WhFHRynZZDaU/wElaessicIDmT3vcy4
         rNBHAnWFlxIgSyjhewy6D3pfZMJum2sKimnl2T3oSRK46EhBJ9QK7hz6Bt710EjKC0FP
         KEGf2NxI+a81ZIiwO0uzNvMpBiyFRa+CIUn5lNooa7vSCMe5eJsYxbIORA7IqK2SPZWQ
         5ZoQ==
X-Gm-Message-State: AOJu0Yzz9e2MxL1jJEPGeJEZ75VxHHZy+O5IRwUPOHZFq1GCTHBUyE24
	uSSPUi+4NZSETkuCAiZYY6MgNljljkdSpvsdXFIjyC7V9lXw1ZXTY7CZ0pXRwQ==
X-Gm-Gg: AeBDiesWLOaPsufrk5eoUM7QlgnDI6NtWI4AsX7WxtZE4SlHjwavGxhI5gr/+XGeuGB
	FNooakBYLJSW4FXGDtyfkJwEqQYJYMm5wvAMJXRtCBDZvYTU1TPtw0r6YK+kcVLrWPyGk9SRAJ1
	aEncwBbXTOTvPUjD4/QLqxMSrQWgP2Z6S5DbnuRSXHFctCF4Pv0dQCQgH9HY7taSaK5hjWiqm6j
	V7zPaBJdMFcK8RcY0F21DjmE1EvcevPkcjwqiF/wztsayc9QwiEWcvMYRPqXCMnXVijWeVwMFzW
	135bGOR/lqm+/RbXKp0i+d9xxpbUH085P2YQ4K7+VLIVsY7Y20ygvBSf6WTKJ2OY/JlDaTu8F8Z
	2rFHU1x6BCc14JLwmGouCiRJ/enUjwf0DbOOhGFeMdmyAp+zWfYHzOvHXCgmNomv9Pc1D0v7mHL
	rf7oKPIEMvL9vH2d9P8uBevR1pd6EW4lClm8rFIuHv4dz8Ngm+cA8X2x7gEyntpT4odEYVM0qcE
	6zY
X-Received: by 2002:a05:6512:31d3:b0:5a4:156:aea3 with SMTP id 2adb3069b0e04-5a417174a77mr6977256e87.7.1776851073183;
        Wed, 22 Apr 2026 02:44:33 -0700 (PDT)
From: Oleksii Kurochko <oleksii.kurochko@gmail.com>
To: xen-devel@lists.xenproject.org
Cc: Oleksii Kurochko <oleksii.kurochko@gmail.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?q?Roger=20Pau=20Monn=C3=A9?= <roger.pau@citrix.com>
Subject: [PATCH v2 3/3] xen: introduce CONFIG_HAS_DOMAIN_TYPE
Date: Wed, 22 Apr 2026 11:44:19 +0200
Message-ID: <61c33c15d046110b5c99490f54191facf18068e1.1776780944.git.oleksii.kurochko@gmail.com>
X-Mailer: git-send-email 2.53.0
In-Reply-To: <cover.1776780944.git.oleksii.kurochko@gmail.com>
References: <cover.1776780944.git.oleksii.kurochko@gmail.com>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit
X-purgate-ID: tlsNG-720697/1776851074-898C3161-DB3835E2/10/73395122804
X-purgate-type: spam
X-purgate-size: 11008

As domain type is part of common code now there is no any reason
to have architecture-specific set_domain_type() functions so
it is dropped.

Change the guard around access of kinfo->type to CONFIG_HAS_DOMAIN_TYPE
for consistency. Also, drop and add some parentheses to be aligned
with the similar if() below.

x86 with CONFIG_64BIT=y shouldn't use is_{32,64}bit_domain() as
x86 doesn't have support of CONFIG_HAS_DOMAIN_TYPE. Since x86_32 Xen no
longer builds, the fallback is currently only relevant for arm32.

Signed-off-by: Oleksii Kurochko <oleksii.kurochko@gmail.com>
---
Changes in v2:
 - Update the commit message.
 - Move HAS_DOMAIN_TYPE to xen/common/Kconfig.
 - Return set_domain_type(), move it to xen/fdt-domain-build.h and make it
   static inline.
 - s/CONFIG_ARM_64/CONFIG_HAS_DOMAIN for the places where kinfo->type is used.
 - Drop parantethes around cpu_has_el1_32 in if() and add around
   (kinfo->type == DOMAIN_32BIT) to be consistent with the similar check below.
 - Fix comment code style.
 - Add __packed to definition of enum domain_type
---
 xen/arch/arm/Kconfig               |  1 +
 xen/arch/arm/arm64/domctl.c        |  4 ++--
 xen/arch/arm/dom0less-build.c      | 14 --------------
 xen/arch/arm/domain_build.c        | 12 +++++-------
 xen/arch/arm/include/asm/domain.h  | 12 ------------
 xen/arch/arm/include/asm/kernel.h  |  4 ----
 xen/arch/arm/kernel.c              | 16 ++++++++--------
 xen/common/Kconfig                 |  3 +++
 xen/include/xen/dom0less-build.h   |  2 --
 xen/include/xen/domain.h           | 13 +++++++++++++
 xen/include/xen/fdt-domain-build.h |  9 +++++++++
 xen/include/xen/fdt-kernel.h       |  5 +++++
 xen/include/xen/sched.h            |  4 ++++
 13 files changed, 50 insertions(+), 49 deletions(-)

diff --git a/xen/arch/arm/Kconfig b/xen/arch/arm/Kconfig
index 2f2b501fdac4..79622b46a10d 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_DOMAIN_TYPE
 	select HAS_FAST_MULTIPLY
 	select HAS_VPCI_GUEST_SUPPORT if PCI_PASSTHROUGH
 
diff --git a/xen/arch/arm/arm64/domctl.c b/xen/arch/arm/arm64/domctl.c
index 8720d126c97d..9e9a29eb1e78 100644
--- a/xen/arch/arm/arm64/domctl.c
+++ b/xen/arch/arm/arm64/domctl.c
@@ -21,10 +21,10 @@ static long switch_mode(struct domain *d, enum domain_type type)
         return -EINVAL;
     if ( domain_tot_pages(d) != 0 )
         return -EBUSY;
-    if ( d->arch.type == type )
+    if ( d->type == type )
         return 0;
 
-    d->arch.type = type;
+    d->type = type;
 
     if ( is_64bit_domain(d) )
         for_each_vcpu(d, v)
diff --git a/xen/arch/arm/dom0less-build.c b/xen/arch/arm/dom0less-build.c
index 4181c105389a..6f73c65e5151 100644
--- a/xen/arch/arm/dom0less-build.c
+++ b/xen/arch/arm/dom0less-build.c
@@ -237,20 +237,6 @@ int __init make_arch_nodes(struct kernel_info *kinfo)
     return 0;
 }
 
-/* TODO: make arch.type generic ? */
-#ifdef CONFIG_ARM_64
-void __init set_domain_type(struct domain *d, struct kernel_info *kinfo)
-{
-    /* type must be set before allocate memory */
-    d->arch.type = kinfo->arch.type;
-}
-#else
-void __init set_domain_type(struct domain *d, struct kernel_info *kinfo)
-{
-    /* Nothing to do */
-}
-#endif
-
 int __init init_vuart(struct domain *d, struct kernel_info *kinfo,
                       const struct dt_device_node *node)
 {
diff --git a/xen/arch/arm/domain_build.c b/xen/arch/arm/domain_build.c
index 98f5dab35e83..1efddc60ef0a 100644
--- a/xen/arch/arm/domain_build.c
+++ b/xen/arch/arm/domain_build.c
@@ -1772,15 +1772,15 @@ int __init construct_domain(struct domain *d, struct kernel_info *kinfo)
     BUG_ON(d->vcpu[0] == NULL);
     BUG_ON(v->is_initialised);
 
-#ifdef CONFIG_ARM_64
+#ifdef CONFIG_HAS_DOMAIN_TYPE
     /* if aarch32 mode is not supported at EL1 do not allow 32-bit domain */
-    if ( !(cpu_has_el1_32) && kinfo->arch.type == DOMAIN_32BIT )
+    if ( !cpu_has_el1_32 && (kinfo->type == DOMAIN_32BIT) )
     {
         printk("Platform does not support 32-bit domain\n");
         return -EINVAL;
     }
 
-    if ( is_sve_domain(d) && (kinfo->arch.type == DOMAIN_32BIT) )
+    if ( is_sve_domain(d) && (kinfo->type == DOMAIN_32BIT) )
     {
         printk("SVE is not available for 32-bit domain\n");
         return -EINVAL;
@@ -1894,10 +1894,8 @@ int __init construct_hwdom(struct kernel_info *kinfo,
 
     iommu_hwdom_init(d);
 
-#ifdef CONFIG_ARM_64
-    /* type must be set before allocate_memory */
-    d->arch.type = kinfo->arch.type;
-#endif
+    set_domain_type(d, kinfo);
+
     find_gnttab_region(d, kinfo);
     if ( is_domain_direct_mapped(d) )
         allocate_memory_11(d, kinfo);
diff --git a/xen/arch/arm/include/asm/domain.h b/xen/arch/arm/include/asm/domain.h
index f95ad1285e6e..2d4c1bdecb66 100644
--- a/xen/arch/arm/include/asm/domain.h
+++ b/xen/arch/arm/include/asm/domain.h
@@ -18,18 +18,6 @@ struct hvm_domain
     uint64_t              params[HVM_NR_PARAMS];
 };
 
-#ifdef CONFIG_ARM_64
-enum domain_type {
-    DOMAIN_32BIT,
-    DOMAIN_64BIT,
-};
-#define is_32bit_domain(d) ((d)->arch.type == DOMAIN_32BIT)
-#define is_64bit_domain(d) ((d)->arch.type == DOMAIN_64BIT)
-#else
-#define is_32bit_domain(d) (1)
-#define is_64bit_domain(d) (0)
-#endif
-
 struct vtimer {
     struct vcpu *v;
     int irq;
diff --git a/xen/arch/arm/include/asm/kernel.h b/xen/arch/arm/include/asm/kernel.h
index 7c3b7fde5b64..21f4273fa1b5 100644
--- a/xen/arch/arm/include/asm/kernel.h
+++ b/xen/arch/arm/include/asm/kernel.h
@@ -10,10 +10,6 @@
 
 struct arch_kernel_info
 {
-#ifdef CONFIG_ARM_64
-    enum domain_type type;
-#endif
-
     /* Enable pl011 emulation */
     bool vpl011;
 };
diff --git a/xen/arch/arm/kernel.c b/xen/arch/arm/kernel.c
index 3c613cdb233f..a5554714cd7b 100644
--- a/xen/arch/arm/kernel.c
+++ b/xen/arch/arm/kernel.c
@@ -100,8 +100,8 @@ static paddr_t __init kernel_zimage_place(struct kernel_info *info)
     const struct membanks *mem = kernel_info_get_mem(info);
     paddr_t load_addr;
 
-#ifdef CONFIG_ARM_64
-    if ( (info->arch.type == DOMAIN_64BIT) && (info->image.start == 0) )
+#ifdef CONFIG_HAS_DOMAIN_TYPE
+    if ( (info->type == DOMAIN_64BIT) && (info->image.start == 0) )
         return mem->bank[0].start + info->image.text_offset;
 #endif
 
@@ -268,14 +268,14 @@ int __init kernel_uimage_probe(struct kernel_info *info,
 
     info->load = kernel_zimage_load;
 
-#ifdef CONFIG_ARM_64
+#ifdef CONFIG_HAS_DOMAIN_TYPE
     switch ( uimage.arch )
     {
     case IH_ARCH_ARM:
-        info->arch.type = DOMAIN_32BIT;
+        info->type = DOMAIN_32BIT;
         break;
     case IH_ARCH_ARM64:
-        info->arch.type = DOMAIN_64BIT;
+        info->type = DOMAIN_64BIT;
         break;
     default:
         printk(XENLOG_ERR "Unsupported uImage arch type %d\n", uimage.arch);
@@ -345,7 +345,7 @@ static int __init kernel_zimage64_probe(struct kernel_info *info,
 
     info->load = kernel_zimage_load;
 
-    info->arch.type = DOMAIN_64BIT;
+    info->type = DOMAIN_64BIT;
 
     return 0;
 }
@@ -396,8 +396,8 @@ static int __init kernel_zimage32_probe(struct kernel_info *info,
 
     info->load = kernel_zimage_load;
 
-#ifdef CONFIG_ARM_64
-    info->arch.type = DOMAIN_32BIT;
+#ifdef CONFIG_HAS_DOMAIN_TYPE
+    info->type = DOMAIN_32BIT;
 #endif
 
     return 0;
diff --git a/xen/common/Kconfig b/xen/common/Kconfig
index 0a20aa0a1249..ab62e9b07546 100644
--- a/xen/common/Kconfig
+++ b/xen/common/Kconfig
@@ -29,6 +29,9 @@ config DOM0LESS_BOOT
 config DOMAIN_BUILD_HELPERS
 	bool
 
+config HAS_DOMAIN_TYPE
+	bool
+
 config GRANT_TABLE
 	bool "Grant table support" if EXPERT
 	default y
diff --git a/xen/include/xen/dom0less-build.h b/xen/include/xen/dom0less-build.h
index faaf660424b2..4118dec76c0a 100644
--- a/xen/include/xen/dom0less-build.h
+++ b/xen/include/xen/dom0less-build.h
@@ -57,8 +57,6 @@ int init_vuart(struct domain *d, struct kernel_info *kinfo,
 int make_intc_domU_node(struct kernel_info *kinfo);
 int make_arch_nodes(struct kernel_info *kinfo);
 
-void set_domain_type(struct domain *d, struct kernel_info *kinfo);
-
 int init_intc_phandle(struct kernel_info *kinfo, const char *name,
                       const int node_next, const void *pfdt);
 
diff --git a/xen/include/xen/domain.h b/xen/include/xen/domain.h
index 93c0fd00c1d7..fcb6dc136517 100644
--- a/xen/include/xen/domain.h
+++ b/xen/include/xen/domain.h
@@ -13,6 +13,19 @@ struct guest_area {
     void *map;
 };
 
+#ifdef CONFIG_HAS_DOMAIN_TYPE
+enum __packed domain_type {
+    DOMAIN_32BIT,
+    DOMAIN_64BIT,
+};
+#define is_32bit_domain(d) ((d)->type == DOMAIN_32BIT)
+#define is_64bit_domain(d) ((d)->type == DOMAIN_64BIT)
+#elif !defined(CONFIG_64BIT)
+/* On 32-bit-only platforms all domains are 32-bit. */
+#define is_32bit_domain(d) (true)
+#define is_64bit_domain(d) (false)
+#endif
+
 #include <asm/domain.h>
 
 typedef union {
diff --git a/xen/include/xen/fdt-domain-build.h b/xen/include/xen/fdt-domain-build.h
index b7f6b1fc36a9..6ad9e8fd1642 100644
--- a/xen/include/xen/fdt-domain-build.h
+++ b/xen/include/xen/fdt-domain-build.h
@@ -7,6 +7,7 @@
 #include <xen/device_tree.h>
 #include <xen/fdt-kernel.h>
 #include <xen/mm.h>
+#include <xen/sched.h>
 #include <xen/types.h>
 
 struct domain;
@@ -69,6 +70,14 @@ static inline uint32_t alloc_phandle(struct kernel_info *kinfo)
     return kinfo->next_phandle >= GUEST_PHANDLE_GIC ? 0 : kinfo->next_phandle++;
 }
 
+static inline void set_domain_type(struct domain *d, struct kernel_info *kinfo)
+{
+#ifdef CONFIG_HAS_DOMAIN_TYPE
+    /* Type must be set before allocate memory */
+    d->type = kinfo->type;
+#endif
+}
+
 #endif /* __XEN_FDT_DOMAIN_BUILD_H__ */
 
 /*
diff --git a/xen/include/xen/fdt-kernel.h b/xen/include/xen/fdt-kernel.h
index 438adfe3855b..8bcc9471814b 100644
--- a/xen/include/xen/fdt-kernel.h
+++ b/xen/include/xen/fdt-kernel.h
@@ -9,6 +9,7 @@
 
 #include <xen/bootinfo.h>
 #include <xen/device_tree.h>
+#include <xen/domain.h>
 #include <xen/types.h>
 
 #if __has_include(<asm/kernel.h>)
@@ -69,6 +70,10 @@ struct kernel_info {
         } image;
     };
 
+#ifdef CONFIG_HAS_DOMAIN_TYPE
+    enum domain_type type;
+#endif
+
 #if __has_include(<asm/kernel.h>)
     struct arch_kernel_info arch;
 #endif
diff --git a/xen/include/xen/sched.h b/xen/include/xen/sched.h
index 212c7d765c3e..00db1da12f21 100644
--- a/xen/include/xen/sched.h
+++ b/xen/include/xen/sched.h
@@ -386,6 +386,10 @@ struct domain
 {
     domid_t          domain_id;
 
+#ifdef CONFIG_HAS_DOMAIN_TYPE
+    enum domain_type type;
+#endif
+
     unsigned int     max_vcpus;
 
     uint64_t         unique_id;       /* Unique domain identifier */
-- 
2.53.0



From xen-devel-bounces@lists.xenproject.org Wed Apr 22 09:44:37 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 22 Apr 2026 09:44:37 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1290138.1569818 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wFU8I-0005eP-6k; Wed, 22 Apr 2026 09:44:34 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1290138.1569818; Wed, 22 Apr 2026 09:44: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 1wFU8I-0005eI-1p; Wed, 22 Apr 2026 09:44:34 +0000
Received: by outflank-mailman (input) for mailman id 1290138;
 Wed, 22 Apr 2026 09:44:32 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92) id 1wFU8G-0005e6-Bz
 for xen-devel@lists.xenproject.org; Wed, 22 Apr 2026 09:44:32 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wFU8F-00E7y7-Ox
 for xen-devel@lists.xenproject.org; Wed, 22 Apr 2026 11:44:31 +0200
Received: from [10.42.69.3] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <oleksii.kurochko@gmail.com>)
 id 69e89879-5cb7-0a2a0a5109dd-0a2a4503bf1a-32
 for <xen-devel@lists.xenproject.org>; Wed, 22 Apr 2026 11:44:31 +0200
Received: from [209.85.208.174] (helo=mail-lj1-f174.google.com)
 by tlsNG-33051d.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.1)
 (envelope-from <oleksii.kurochko@gmail.com>)
 id 69e8987f-672d-0a2a45030019-d155d0aef1cd-3
 for <xen-devel@lists.xenproject.org>; Wed, 22 Apr 2026 11:44:31 +0200
Received: by mail-lj1-f174.google.com with SMTP id
 38308e7fff4ca-38be5e86918so60322231fa.3
 for <xen-devel@lists.xenproject.org>; Wed, 22 Apr 2026 02:44:31 -0700 (PDT)
Received: from fedora (user-109-243-69-121.play-internet.pl. [109.243.69.121])
 by smtp.gmail.com with ESMTPSA id
 2adb3069b0e04-5a41cc7f832sm3494193e87.28.2026.04.22.02.44.29
 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
 Wed, 22 Apr 2026 02:44:29 -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=20251104 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=20251104; t=1776851070; x=1777455870; 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;
        bh=59nOSJ/eSpPdRp/1SigW9kXTuYhnBN61vpESbRh4HAI=;
        b=Tw10reV76rQJnSXc8ck+jIiTDAWjO8K/dNe2JcEDb8s+V2V3hFtA1XMjs2ygvHyZ2a
         3BkSf+42IJ8+SD6Zu835ciUQVq1zOpeUAMawr88scXBRR/ZVFjNpRNPPWD9e0vJYcn3m
         FHkR15rCZVS3PL/yyDzoV0WNaS5sYXA5ZTAyvPbyZvdQ3KaEtZtJrz/7lcaMHRO2WeiK
         b14GFVJ7kcu7M5glF98QKMJG3UalkWlZ0PYP5MI4u6YnP+oBfgyDYC5OARYajI7SUGwD
         Wwu9dxGyJQaEYoMV8S6mMtmiY47E6NqN7hlKsSXCdky2ZNBnAmngXHAOIfCjOubGzq6k
         AJkg==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20251104; t=1776851070; x=1777455870;
        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;
        bh=59nOSJ/eSpPdRp/1SigW9kXTuYhnBN61vpESbRh4HAI=;
        b=BbEVYnRfHKeiKK2I87jXBv20IuRVNLXBg4pD9Ew3HXSHTadB2OxfNBrTJG/0ySWBXH
         qM0g0hEHKwpCvgg+ZXoL6BNGL9PqlJmMjTVjEOsr4TR2dz6CBoafKu2a0T6+mjQNJoDD
         KVhssOTVGab2GdBz9BJpzRq7S/bxDD02pKMu7sGUUquEdv1JCNhKhgYaGrJyrVhAHNUp
         lXmsz75qe1wfIoWCSONUinL0Jskyg68/iwtLXOfZfbBaZlegsTDCJqbyb0JDnB5xvpt7
         DrLmpwpgB0mt+kYWaab4/QmLvlHczF6udw3rStnF1LJCP/xTPCpwWA9esfiqBo2lERnY
         VrVw==
X-Gm-Message-State: AOJu0YxNXRjmL1AXYnk1ZjpNXQU9x5Isf+ovTq65DYCAyfX3JAlkTy0v
	0XxBOQSmoaeI7gXTGtWs6DeJY4YsEDYxXqif4eKcMxz6iqJ2o989/ltGSspMLQ==
X-Gm-Gg: AeBDievNW/lyBqRUXWcpWBgTayvVW5fqdyd1VoyJ4/CImMGswwKdTDpUCv+XyX+fy1G
	4vynSTaf7GKsOTzErOdfUagANsO7urr4rr/2W88ho87S97aK+INwyfkcCllwPZkZtyDGOIgkEhX
	MEDeekqvUe+3Z+cZYBomRuIMngpIQ5a02gKHsdiOVzq3hsWkQxBdeBBuKz0I5PuIs71LHAVIAWR
	KJYjwB+8FQWTHzBpGBezeHmDQGCVqZiKP4v5DFiTNNdriLI0TM9+minl9sH+YSbYLDnDg2ZW0Jd
	haTig58KMcwA0RoyUNxkgNb2Z5TFhGEOwCeFrbgsZxyP2xW0a8PwRLWQVODgfdYlwUCB3KyFEHp
	Il5fFQfS3gSIAIiBg5zPOvtiJbq4kJDG8L3ZpANXuD9D8a9U/RyRFf9HsznDYaJ7csCGafeRh9W
	Muy75kyA/vEXlpuUer8qsAV2VYHf/Gty8LLUjz1qn8fkoxekB/eeDxlRNpDepqlCmi/rhmhKy3A
	kj/
X-Received: by 2002:a05:6512:3090:b0:5a4:10b5:624c with SMTP id 2adb3069b0e04-5a4172f63f6mr6945395e87.23.1776851070148;
        Wed, 22 Apr 2026 02:44:30 -0700 (PDT)
From: Oleksii Kurochko <oleksii.kurochko@gmail.com>
To: xen-devel@lists.xenproject.org
Cc: Oleksii Kurochko <oleksii.kurochko@gmail.com>,
	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?q?Roger=20Pau=20Monn=C3=A9?= <roger.pau@citrix.com>,
	Volodymyr Babchuk <Volodymyr_Babchuk@epam.com>
Subject: [PATCH v2 0/3]  dom0less: various updates
Date: Wed, 22 Apr 2026 11:44:16 +0200
Message-ID: <cover.1776780944.git.oleksii.kurochko@gmail.com>
X-Mailer: git-send-email 2.53.0
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit
X-purgate-ID: tlsNG-33051d/1776851071-489A9938-D04BA2F6/10/73395122804
X-purgate-type: spam
X-purgate-size: 3897

This patch series introduces a new field to track not-yet-used phandles as there
are some use cases where RISC-V needs to know which phandle number could
be used for generating a device tree node.

For example, on the RISC-V side in make_cpus_node() [1] it is necessary to know
which phandle number is unused to use it for device tree node generation.

Here is an example of generated guest DTB:
    cpus {
    ...
      cpu@0 {
    ...
        interrupt-controller {
          compatible = "riscv,cpu-intc";
          #interrupt-cells = <0x1>;
          interrupt-controller;
          phandle = <0xfdea>;
        };
      };
    };

    /soc/imsics@28000000 {

      interrupts-extended = <0xfdea 0x9 >;

      phandle = <0xfdeb>;
    };

    /soc/aplic@d000000 {
    ...
      msi-parent = <0xfdeb>;
      phandle = <0x1>;
    };

Note that phandles for imsic and riscv,cpu-intc are generated in this example
not by get_next_free_phandle(), that is why they have such big numbers.

For non-RISC-V people, APLIC is an interrupt controller (something like GIC in
Arm), IMSIC is an interrupt controller that provides MSI and connects to
each CPU.

So (based on the DTS above) for APLIC, kinfo->phandle_intc is reused, which
will also be re-used for the device node's interrupt property. For all others, I
just introduced GUEST_PHANDLE_LAST [2] and used it for generation [3]. But I expect
that it could be useful for other architectures too so I just moved it to common
and re-use pfdt to understand what the maximum used phandle is.

[1] https://www.kernel.org/doc/Documentation/devicetree/bindings/interrupt-controller/riscv%2Ccpu-intc.txt
[2] https://lore.kernel.org/xen-devel/ccd6d21b224b478c88ca5f2fdd2d1dd507671510.1773157782.git.oleksii.kurochko@gmail.com/
[3] https://lore.kernel.org/xen-devel/fd64b8526a23e9d7775b9b48c5a933b0673c4fba.1773157782.git.oleksii.kurochko@gmail.com/
           *************************************

Another thing introduced in this patch series is moving domain type to common
code as several architectures (ARM and RISC-V for now) use them and it
looks pretty architecture-independent. Also, is_64bit_domain() is used by
dom0less common code, so I found it useful also to move is_{32,64}bit_domain
macros to common code.

           *************************************

And the last thing is changing the prototype of make_cpus_node() to be aligned
with other make_*_node() and since RISC-V will need access to the free_phandle field
(even if it will be moved to kinfo->arch.free_phandle) and for the reason that
this ->free_phandle is updated in make_*_node(), the kinfo argument is passed as
non-const.

CI: https://gitlab.com/xen-project/people/olkur/xen/-/pipelines/2468475835

---
Changes in v2:
 - Address the comments from ML.
---

Oleksii Kurochko (3):
  xen/dom0less: introduce next_phandle in struct kernel_info
  xen/dom0less: pass kernel_info struct instead of fdt to
    make_cpus_node()
  xen: introduce CONFIG_HAS_DOMAIN_TYPE

 xen/arch/arm/Kconfig                    |  1 +
 xen/arch/arm/arm64/domctl.c             |  4 +--
 xen/arch/arm/dom0less-build.c           | 14 --------
 xen/arch/arm/domain_build.c             | 17 +++++----
 xen/arch/arm/include/asm/domain.h       | 12 -------
 xen/arch/arm/include/asm/kernel.h       |  4 ---
 xen/arch/arm/kernel.c                   | 16 ++++-----
 xen/common/Kconfig                      |  3 ++
 xen/common/device-tree/dom0less-build.c | 46 ++++++++++++++++++-------
 xen/include/xen/dom0less-build.h        |  2 --
 xen/include/xen/domain.h                | 13 +++++++
 xen/include/xen/fdt-domain-build.h      | 17 ++++++++-
 xen/include/xen/fdt-kernel.h            |  8 +++++
 xen/include/xen/sched.h                 |  4 +++
 14 files changed, 96 insertions(+), 65 deletions(-)

-- 
2.53.0



From xen-devel-bounces@lists.xenproject.org Wed Apr 22 09:44:38 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 22 Apr 2026 09:44:38 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1290139.1569826 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wFU8J-0005rT-Cv; Wed, 22 Apr 2026 09:44:35 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1290139.1569826; Wed, 22 Apr 2026 09:44: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 1wFU8J-0005rM-8q; Wed, 22 Apr 2026 09:44:35 +0000
Received: by outflank-mailman (input) for mailman id 1290139;
 Wed, 22 Apr 2026 09:44:34 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92) id 1wFU8H-0005eD-VS
 for xen-devel@lists.xenproject.org; Wed, 22 Apr 2026 09:44:33 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wFU8H-006sRK-CS
 for xen-devel@lists.xenproject.org; Wed, 22 Apr 2026 11:44:33 +0200
Received: from [10.42.69.6] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <oleksii.kurochko@gmail.com>)
 id 69e89881-2eae-0a2a0a5409dd-0a2a4506d542-0
 for <xen-devel@lists.xenproject.org>; Wed, 22 Apr 2026 11:44:33 +0200
Received: from [209.85.167.42] (helo=mail-lf1-f42.google.com)
 by tlsNG-16d1c6.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.1)
 (envelope-from <oleksii.kurochko@gmail.com>)
 id 69e89881-7371-0a2a45060019-d155a72ac892-3
 for <xen-devel@lists.xenproject.org>; Wed, 22 Apr 2026 11:44:33 +0200
Received: by mail-lf1-f42.google.com with SMTP id
 2adb3069b0e04-59e4a04f059so5864904e87.2
 for <xen-devel@lists.xenproject.org>; Wed, 22 Apr 2026 02:44:33 -0700 (PDT)
Received: from fedora (user-109-243-69-121.play-internet.pl. [109.243.69.121])
 by smtp.gmail.com with ESMTPSA id
 2adb3069b0e04-5a41cc7f832sm3494193e87.28.2026.04.22.02.44.31
 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
 Wed, 22 Apr 2026 02:44:31 -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=20251104 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=20251104; t=1776851072; x=1777455872; 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;
        bh=nGnMzW9+BkykHD5n+WLa+P6dRUGCjGxLUe0gqWqrB9w=;
        b=DTKI43cFmWzOX9EQhcs1yh7CGi1npJH5N0TAriT5SMgNEH5KRpnQ6hyE4UlK6yVwLD
         Vk6hnIEKzd3afNn/mKnR7qrv2YKtQKc5p/GuMYpE+MZWIpg0D87juJaO3/1jJW2V1iVS
         M3MDDhYn0UOKaFFzy9vsC3XSrdztuxq5805z+6lRo/ew53Z/Coxr1Tee/aiMD3Ux/W5H
         dLqKUS9oL10q3/49FIu2Z7QPCQgAVXS/g6q7ZcjDwipWSyx8W9UyvC4p+3kksd33Zhij
         2+CnKQhaBICo3DWzHmLXCY1ojk6Yw3kDGGodY3wdqWdbPyHAEx2Gif2tHbFWZajnwiUJ
         4GYg==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20251104; t=1776851072; x=1777455872;
        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;
        bh=nGnMzW9+BkykHD5n+WLa+P6dRUGCjGxLUe0gqWqrB9w=;
        b=HOXcXH7n8zzo/wFYQlNBa2/iaBUHflNYM8PI1jggHGLvAgvnIDRbIJqBNb2ySgwKfo
         LHprTNn66sNNZHNaoNETJkWYWyIh9NcSkoj+m98e5vDpoNaFa1gtUNx75Q8yKy7WzAzT
         y9aGm7piT/ge15XvW4XC/seZysuNxAcsJRFJsMj0sr9c3Fj8LfyOPhOE2fEOk562CRuH
         cPI3Q9CIHzmOWdAQexJPeaynxfD5QbbggOKM6OjoGChykgcXsA64ZqyQKd/53zM5hiTW
         AVWirYa9dZU1s+TK2y9D9GNZjsOb7YFGc1S0UJjTHN4hJ8EfLSo40RzW9ETFUkUY8+GM
         +bGA==
X-Gm-Message-State: AOJu0YwxC17unZY7RsO4ZM8ol/Qr+1NyoGHERl/DOj39pDrdUvFG65yu
	Eg5tz0uklSff9qpanazBSjZzMmf1quFRS1W4tWjp4sp01BwD1pH0ebn0wHFwtw==
X-Gm-Gg: AeBDietfLp7S3UIZhBSHUUshZshDOzrxW9C1LDGI7q/5ZW7ATPUVhf1CL+ExI5S1ZHa
	rDkeuU62NCiuxE7RWoQrypi7Hq7h/UODduxV9oZNs6V+FWHEyhVlcoWfxT0nYjDU42pGTA6S30y
	qdY9leLQGx0QcNqdICzUOngUdJ1liTtQ5qIX49G8hfPrqbsR/RSX1DOyQ2/GDXA6F8nwjie6XMw
	PaUXWB7RvwgXrgcEK83NExTbLlPdklnPSQJ/glqB69dMQgYBeFEg2aRsHTW19dXJJWWxh6IyXEU
	GSsWNESfYvo/jeyBopK7DycLLWd7TPJwYZTZ8LiCcaARv2no7MtEFZVwzgR5q1dAiWr2VzmrGwm
	9JD8z+dYlMdnvJquRBrew6lQueeSghBCnACUNYj5X5BYT9AInMRE7MPutxB4RCIkH9/q/T2+Ac8
	o+g3Ca98K/GPlQRKMJ+1BnUh9j78dGIKQhR9zAnLJXh1cFmPytW068sYd0K5x1Od6vEH4//c/7x
	a6B
X-Received: by 2002:a05:6512:398c:b0:5a4:7ed:3e4d with SMTP id 2adb3069b0e04-5a4172de851mr8467999e87.27.1776851071830;
        Wed, 22 Apr 2026 02:44:31 -0700 (PDT)
From: Oleksii Kurochko <oleksii.kurochko@gmail.com>
To: xen-devel@lists.xenproject.org
Cc: Oleksii Kurochko <oleksii.kurochko@gmail.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?q?Roger=20Pau=20Monn=C3=A9?= <roger.pau@citrix.com>
Subject: [PATCH v2 2/3] xen/dom0less: pass kernel_info struct instead of fdt to make_cpus_node()
Date: Wed, 22 Apr 2026 11:44:18 +0200
Message-ID: <2617586205ec7b07a302fcb8dd9dd39f3eb2c5ed.1776780944.git.oleksii.kurochko@gmail.com>
X-Mailer: git-send-email 2.53.0
In-Reply-To: <cover.1776780944.git.oleksii.kurochko@gmail.com>
References: <cover.1776780944.git.oleksii.kurochko@gmail.com>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit
X-purgate-ID: tlsNG-16d1c6/1776851073-91587D75-018CB061/10/73395122804
X-purgate-type: spam
X-purgate-size: 3065

There are two reasons of this change:
1. Align prototype with what other make_*_node() are passed.
2. A follow-up RISC-V patch will call get_next_free_phandle() inside
   make_cpus_node(), requiring mutable access to kinfo->free_phandle.

Signed-off-by: Oleksii Kurochko <oleksii.kurochko@gmail.com>
---
Look at the footer to the prev. patch to understand why phandle is needed
inside cpu node.
---
Changes in v2:
 - Properly initialize local variable fdt in Arm's
   make_cpus_node().
---
 xen/arch/arm/domain_build.c             | 5 +++--
 xen/common/device-tree/dom0less-build.c | 2 +-
 xen/include/xen/fdt-domain-build.h      | 2 +-
 3 files changed, 5 insertions(+), 4 deletions(-)

diff --git a/xen/arch/arm/domain_build.c b/xen/arch/arm/domain_build.c
index 60a7cbf915a5..98f5dab35e83 100644
--- a/xen/arch/arm/domain_build.c
+++ b/xen/arch/arm/domain_build.c
@@ -1164,7 +1164,7 @@ int __init make_psci_node(void *fdt)
     return res;
 }
 
-int __init make_cpus_node(const struct domain *d, void *fdt)
+int __init make_cpus_node(const struct domain *d, struct kernel_info *kinfo)
 {
     int res;
     const struct dt_device_node *cpus = dt_find_node_by_path("/cpus");
@@ -1178,6 +1178,7 @@ int __init make_cpus_node(const struct domain *d, void *fdt)
     /* Keep the compiler happy with -Og */
     bool clock_valid = false;
     uint64_t mpidr_aff;
+    void *fdt = kinfo->fdt;
 
     dt_dprintk("Create cpus node\n");
 
@@ -1626,7 +1627,7 @@ static int __init handle_node(struct domain *d, struct kernel_info *kinfo,
         if ( res )
             return res;
 
-        res = make_cpus_node(d, kinfo->fdt);
+        res = make_cpus_node(d, kinfo);
         if ( res )
             return res;
 
diff --git a/xen/common/device-tree/dom0less-build.c b/xen/common/device-tree/dom0less-build.c
index ca3ac84a3ef3..f8b1166e4169 100644
--- a/xen/common/device-tree/dom0less-build.c
+++ b/xen/common/device-tree/dom0less-build.c
@@ -535,7 +535,7 @@ static int __init prepare_dtb_domU(struct domain *d, struct kernel_info *kinfo)
     if ( ret )
         goto err;
 
-    ret = make_cpus_node(d, kinfo->fdt);
+    ret = make_cpus_node(d, kinfo);
     if ( ret )
         goto err;
 
diff --git a/xen/include/xen/fdt-domain-build.h b/xen/include/xen/fdt-domain-build.h
index a604f3983fe6..b7f6b1fc36a9 100644
--- a/xen/include/xen/fdt-domain-build.h
+++ b/xen/include/xen/fdt-domain-build.h
@@ -25,7 +25,7 @@ int construct_domain(struct domain *d, struct kernel_info *kinfo);
 int construct_hwdom(struct kernel_info *kinfo,
                     const struct dt_device_node *node);
 int make_chosen_node(const struct kernel_info *kinfo);
-int make_cpus_node(const struct domain *d, void *fdt);
+int make_cpus_node(const struct domain *d, struct kernel_info *kinfo);
 int make_hypervisor_node(struct domain *d, const struct kernel_info *kinfo,
                          int addrcells, int sizecells);
 int make_memory_node(const struct kernel_info *kinfo, int addrcells,
-- 
2.53.0



From xen-devel-bounces@lists.xenproject.org Wed Apr 22 09:57:59 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 22 Apr 2026 09:57:59 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1290186.1569854 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wFULB-0001aV-3P; Wed, 22 Apr 2026 09:57:53 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1290186.1569854; Wed, 22 Apr 2026 09: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 1wFULA-0001aO-W0; Wed, 22 Apr 2026 09:57:52 +0000
Received: by outflank-mailman (input) for mailman id 1290186;
 Wed, 22 Apr 2026 09: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 1wFUL9-0001Z9-EY
 for xen-devel@lists.xenproject.org; Wed, 22 Apr 2026 09:57:51 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wFUL8-006vHZ-QK
 for xen-devel@lists.xenproject.org; Wed, 22 Apr 2026 11:57:50 +0200
Received: from [10.42.69.11] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <Mykyta_Poturai@epam.com>)
 id 69e89b8e-2eae-0a2a0a5409dd-0a2a450b9c54-40
 for <xen-devel@lists.xenproject.org>; Wed, 22 Apr 2026 11:57:50 +0200
Received: from [52.101.65.139]
 (helo=DU2PR03CU002.outbound.protection.outlook.com)
 by tlsNG-42698a.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.1)
 (envelope-from <Mykyta_Poturai@epam.com>)
 id 69e89b9e-212f-0a2a450b0019-3465418b1c46-3
 for <xen-devel@lists.xenproject.org>; Wed, 22 Apr 2026 11:57:50 +0200
Received: from PAVPR03MB10102.eurprd03.prod.outlook.com
 (2603:10a6:102:30d::12) by DU4PR03MB10597.eurprd03.prod.outlook.com
 (2603:10a6:10:58d::22) with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9846.18; Wed, 22 Apr
 2026 09:57:49 +0000
Received: from PAVPR03MB10102.eurprd03.prod.outlook.com
 ([fe80::b8c6:f37a:987a:beb]) by PAVPR03MB10102.eurprd03.prod.outlook.com
 ([fe80::b8c6:f37a:987a:beb%5]) with mapi id 15.20.9818.033; Wed, 22 Apr 2026
 09: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=WPQ3Bv8RD8iZYK4yznJ+jITF+1anfYmAUgPg5/ULTGHXfSQRG2RkesQDp3EFL40YT5us+xwCCikAh1EofzuaaitJUTcJgeuEX28IpD5eXi71rMyWELirCIUmGY7syKvPJqDTxzs2vCsnvepdS3Xf8xiYAR3B0EDXG08R0zoAWEygxAucrrua4c21brCHypF6YRB4wrTl6v/D3OmVM9OOZ/vUX0B8u8fdbGCCCcaptHvIAb0eElMMHhtJJycAKqYX2VyjHC+v3ORsXOKJ7Z3Ox0ZIr0XaDhv0VHJ6mznnEglO4wbZOJmJuzTb9sjDp5ATN2ZOJx6fqBBba06hzVFRIA==
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com;
 s=arcselector10001;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1;
 bh=XQQyWDXhHF3VLbDeoZxXTRSe1JvDvOtpXS6zqyAfK4s=;
 b=U6jrNA8y6SxMf2BgRqvu6vUTCFAwqCQkcnbPLBw0B/8hPnVPy6J566Y5ZKQ5NL8yMj8aOupe04COCGs6Ii62+qvMvD/VdYHSvmH0hq/+uJQgxDyN4QsItAir52Mczo6TE8yj23jK5ZxP4bRDwgtWDqBSb3Hzypykkc+Y9H34pAIirFQNEZJF9VjSBy4E0Sty0HrJkDkiOP7ACSi/zvzqgHm2Qg7MMTuMMRKgC3z1m18Ct0pmlw0alxJrcGtmmCIBPJqFnkwWzBOA+frLAa1V+bayosmyGNXAmwVogr2eI7WOkKryPjx+/rDpg9feLJ/C+ccbDU2qjfDfhVJoXfCLNw==
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=XQQyWDXhHF3VLbDeoZxXTRSe1JvDvOtpXS6zqyAfK4s=;
 b=qmb1uNGe4XUSrpwkseq2Bct1eAFC9lHXT8uKcFt4Kh2ld32hNvnSDdWHFgz5Gvr6RdnMlwLG9S29RVeM/t6DPfVTGJDAvt+GFrcJGYuVkAEQCs1GTA4/qgttrGTJczv2s7d/eH/osFIHsKTutwMztFJu1a25+5TLqkxkoXYd+G9SBPRoBoRhIl/ZhD4MnMVZ+RrR7NpWlgT9En8AGVMQ5G3LktHzpItVpbPIugaT6R1CnY+aPliQmDRgYRj2siREfvXC/0xtcJRZTQAYVEa39fLkV3FHrsZPkodwBhBNsgdRz58cbRKIt58WMqAKXCWiJTpmhPMRd/P5TfPWscwWoQ==
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>, Rahul Singh <rahul.singh@arm.com>
Subject: [PATCH v3] xen/arm: smmuv3: Add support for removing devices
Thread-Topic: [PATCH v3] xen/arm: smmuv3: Add support for removing devices
Thread-Index: AQHc0j55GUlr8UPy3U2zLlIUZUxNrQ==
Date: Wed, 22 Apr 2026 09:57:48 +0000
Message-ID:
 <d9f90d511208d17f0a98db5d858955f8adfecc03.1776851790.git.mykyta_poturai@epam.com>
Accept-Language: en-US
Content-Language: en-US
X-MS-Has-Attach:
X-MS-TNEF-Correlator:
authentication-results: dkim=none (message not signed)
 header.d=none;dmarc=none action=none header.from=epam.com;
x-ms-publictraffictype: Email
x-ms-traffictypediagnostic: PAVPR03MB10102:EE_|DU4PR03MB10597:EE_
x-ms-office365-filtering-correlation-id: 645f12f4-bd57-4f23-f05d-08dea0559c3e
x-ms-exchange-senderadcheck: 1
x-ms-exchange-antispam-relay: 0
x-microsoft-antispam:
 BCL:0;ARA:13230040|376014|1800799024|366016|38070700021|56012099003|18002099003;
x-microsoft-antispam-message-info:
 ZLg8uTQALZXmywx7qoARTfwq2eFer52b9r9fDnLyJefcch4WHQQ+kDogwkm8xz8D2T3E6qqnM4lPVsfOUXF5Jf3MKC5+BRusts1Z0djBC7jhG+SfZ/JUWhlsR973/NOrmMkhoaiDXCJlNgU3lmJpzhMjKYukQYv5GMsE2JjrEpfSv2GWrvp8KAb9NH8yOW3dURZT3vu9tqLMwqA+CkzDaPqyycAFIjJiKGVgB8ca7sZh7QpTg45amXak+BKwvjs3xxNml4M/XgipQ2JngT+Z/FubXZUPuUOuQjSICKcvVV5njceihSOOhTvSrH/xZPSINokOHCCz1kX4bBzBcAukxFPpjuubtj3kE1SVzImVnEpMP7xd0LGYc6NYli2egkqByGaf0FJQrjJ8PJYtO1dYuBa/dTq0f5UdD1dghWE2Q8OWCbtKC9g80Xd2kRgz3oldsGtXmemYVBDjW4H7B4SzR8gO5CX/i56tZYH6GSbKJv3mMKEGQsOl6vFMAQ6iatYf6OcIifaqmk2u0tEG/W4hIw9U3UkmwWrBTQcKFbxxxpBpZAsV+OYqL+hGkQ9pccpEgYeS9Ntz/XQULJT28lFrjtLHJejXwTmHHbrXSC5FS6apAdk1qW4/Apf3kFE6T3SSL2L+56FZKTmXe536mv8j3oWyNxuF6fEI7JRRVwRW0Fj1I3sBgy4KOtLKt0NuORRX9dC+69L2UlJWSFV+O19ZzJnjJV1MMPXLM4AcVI1VoQWxKFGCzkekW1YN8xbXjck+
x-forefront-antispam-report:
 CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:PAVPR03MB10102.eurprd03.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(376014)(1800799024)(366016)(38070700021)(56012099003)(18002099003);DIR:OUT;SFP:1102;
x-ms-exchange-antispam-messagedata-chunkcount: 1
x-ms-exchange-antispam-messagedata-0:
 =?iso-8859-1?Q?Mf4HeTsRCQhbGci5tAi7Vbv7D0eyfUqSjyItpWXKITuHuvUb6vvwJlBiRG?=
 =?iso-8859-1?Q?mAtdq5koeKrbhHERqbOp0w9OoT40Bnz3xsIMBnPDOFqLCcaTUltChzxJeA?=
 =?iso-8859-1?Q?ozywh2SpfkcNvoYLEEwkV/V31DUaVo3/75NIOOFp552Tr/heCBdXR38ge3?=
 =?iso-8859-1?Q?rIEtl/W2m3QyJHN7CHO9nSTixfadQpFfKuc17vCkcD2i4WO2k38107tC3g?=
 =?iso-8859-1?Q?ujZRWaaMklUzzrbvnrpEuCf9tZMfKx8QuEFl90gxdgZgnSUPPNzobGwtBi?=
 =?iso-8859-1?Q?Yx+J6pAO8k5ye5kiEUWTjKaXj55h0CYEx19R4pReqLjD5pkBP+KirlqNU9?=
 =?iso-8859-1?Q?4yRnxdM43w0PlVLB4Evyp7ZVsf4i8venx2JmV4ZfewEBQ3yBlJA2r8EuvU?=
 =?iso-8859-1?Q?zgwxK7uiDd0zSEt6aJ9IwWTKUPNPFeF/YTh1GJ5TbmQKGlHEDgdK0s6l0J?=
 =?iso-8859-1?Q?L4bBRwcS9CSMQUzAjSQdKO3WrBrHO7SQFeuQJc8VGpIXz9tNKKSj5RaUld?=
 =?iso-8859-1?Q?24OZYcU0jQoFjDkw+6GjdPHMlDoqBIThrsHeHxdGm3WRasiiONbMJYRNht?=
 =?iso-8859-1?Q?VV0ELZ17qBLbe8qVU2zEAA/jn+tMopNkrFbNzHBhgu9ClCjfnBE/yNCQcn?=
 =?iso-8859-1?Q?/Vz1h3HNQqG47oQod0jDPxeL4T+VyCYOBwtNR+D+ofIa7fSO6gP0lix9Vg?=
 =?iso-8859-1?Q?Bo/CeDwGnaDaLw7mpd+I4tigH2q/5f7Hn3ngXfCzzB1wSuxIbsOKvMPcia?=
 =?iso-8859-1?Q?s9PiQGQIhHqjJs0BauyWcPh54LBBQrU7Aif91bJfJQRPnYUAIzFeY1LGSZ?=
 =?iso-8859-1?Q?XuybaBITZ++CcMHBbQnPBCcgew15sxKQHD4j1I+1/OVswou3UJVonRODKd?=
 =?iso-8859-1?Q?JF+itRpaLCvEM+4Epalp00gwO0//5hjTm56CEStE1Bs79GL5lm6lZOT+c1?=
 =?iso-8859-1?Q?EjZAomWlQFC40WNTQ50XDiIyPbDMJKOuE46vkYAz3K5Xr4x75qU9StURad?=
 =?iso-8859-1?Q?wUQGz9diQH7QtwOvdaMvPfky48Ycxrm2XTK+yRgc5gOgkU4Ob67NeK3Tvi?=
 =?iso-8859-1?Q?Qvzdk+eEbPDiWDpgKjAmFl9pJW/uI4hUiXpNMaB2VPMbRNQDccHxbWz1qp?=
 =?iso-8859-1?Q?EGaSejApEzcqfFp1X0+a74+2eusQDtsbnVSji+P6xbvfjY18RiNR4YyZP/?=
 =?iso-8859-1?Q?l9QWngqiylHYOWg0FeK1s9BYcJiyhbYWKw9EP1kJHUrh/Kj6tupcVT80AI?=
 =?iso-8859-1?Q?JYRbLWAsV5TwoVLvKbxc95Lz/n1ShoWFbV2ClNP+XysoGFCMhtWJ3vcKMN?=
 =?iso-8859-1?Q?AA9iWmedOWB/4rtX/PkSrNbUIbFR5C3fUriD6YKHlgS1dKQjCObM8XpXcs?=
 =?iso-8859-1?Q?w7GXQTEtl88kiLJtnBFmFMtPhpPk7vScPeZz+J26XgXzUHU0v5/czSsweK?=
 =?iso-8859-1?Q?bqBs5u6kmuTYzpiqxQpDFZdEJKF9zY5FJ/pD0Siabky0fiuZQL/xtd2X5l?=
 =?iso-8859-1?Q?ORATZ9uYGgiErZuvcaLnTC6nF6RudPlxer1i+1JDm3GEHbByXlR5M7+zn6?=
 =?iso-8859-1?Q?Q+Y1LBI16Gg2JLhRwTSTxfQePpnhKn3bvY5x4dGxeZ0zeV/eE3o+cgoC8W?=
 =?iso-8859-1?Q?u6QaLSgCMjG+hg9XjTOuCNCxvMHQsfA4Air2X6nDX43Tc9dzC1Dh2ZSaDk?=
 =?iso-8859-1?Q?DFSmluBOaWVu75/mpwuHxbyBIuIxc3Qs5C3rfNA37hbTJ2V9WDxdzDxMnV?=
 =?iso-8859-1?Q?LXycghfzyASXvBHh6qWnfTYKfrmp3UWeW4AKM6ZNGSub+WTXaxjnBBiFSF?=
 =?iso-8859-1?Q?hbbRvbkeXc+puEXdBRTDRz0Va1HbV4A=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: PAVPR03MB10102.eurprd03.prod.outlook.com
X-MS-Exchange-CrossTenant-Network-Message-Id: 645f12f4-bd57-4f23-f05d-08dea0559c3e
X-MS-Exchange-CrossTenant-originalarrivaltime: 22 Apr 2026 09:57:48.6636
 (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: NzirEGj5FKaYzJOhLPwA1GpNcxoP2eUjQk/u6vUu3jQKn0PJXH/8gPCY2WgRh3uoaY7FObsKZs9oAk5njiIWKQ==
X-MS-Exchange-Transport-CrossTenantHeadersStamped: DU4PR03MB10597
X-purgate-ID: tlsNG-42698a/1776851870-0777AF3B-3ED51FD0/0/0
X-purgate-type: clean
X-purgate-size: 6015

Allow for removing devices from SMMUv3. arm_smmu_deassign_dev handles
most of the work by disabling ATS and zeroing STEs. Additionally, unset
the dt_device_is_protected flag and free no longer needed smmu_master.
Free iommu_fwspec for PCI devices only, for DT devices it is handled by
generic IOMMU layer.

Rework dt_device_set_protected to accept a boolean parameter, update
callsites.

Signed-off-by: Mykyta Poturai <mykyta_poturai@epam.com>
---
Tested on QEMU with SRIOV series[1] by repeatedly enabling/disabling
VFs.

[1]: https://patchew.org/Xen/cover.1772806036.git.mykyta._5Fpoturai@epam.co=
m/

V2->V3:
* free fwspec for pci devices
* remove testing note from commit message

V1->V2:
* check for phantom functions
* simplify pci/dt device split
* improve error handling
* don't try to free master for unprotected devices
* rework dt_device_set_protected
---
 xen/drivers/passthrough/arm/ipmmu-vmsa.c |  2 +-
 xen/drivers/passthrough/arm/smmu-v3.c    | 65 +++++++++++++++++++++++-
 xen/drivers/passthrough/arm/smmu.c       |  4 +-
 xen/include/xen/device_tree.h            |  5 +-
 4 files changed, 70 insertions(+), 6 deletions(-)

diff --git a/xen/drivers/passthrough/arm/ipmmu-vmsa.c b/xen/drivers/passthr=
ough/arm/ipmmu-vmsa.c
index fa9ab9cb13..0648f9b407 100644
--- a/xen/drivers/passthrough/arm/ipmmu-vmsa.c
+++ b/xen/drivers/passthrough/arm/ipmmu-vmsa.c
@@ -1367,7 +1367,7 @@ static int ipmmu_add_device(u8 devfn, struct device *=
dev)
         }
=20
         /* Let Xen know that the master device is protected by an IOMMU. *=
/
-        dt_device_set_protected(dev_to_dt(dev));
+        dt_device_set_protected(dev_to_dt(dev), true);
     }
 #ifdef CONFIG_HAS_PCI
     if ( dev_is_pci(dev) )
diff --git a/xen/drivers/passthrough/arm/smmu-v3.c b/xen/drivers/passthroug=
h/arm/smmu-v3.c
index bf153227db..a46c421399 100644
--- a/xen/drivers/passthrough/arm/smmu-v3.c
+++ b/xen/drivers/passthrough/arm/smmu-v3.c
@@ -1493,6 +1493,68 @@ static int arm_smmu_assign_dev(struct domain *d, u8 =
devfn, struct device *dev,
 static int arm_smmu_deassign_dev(struct domain *d, uint8_t devfn,
 				 struct device *dev);
=20
+static int arm_smmu_remove_device(u8 devfn, struct device *dev)
+{
+	struct arm_smmu_master *master;
+	struct iommu_fwspec *fwspec;
+	struct domain *d =3D NULL;
+
+	fwspec =3D dev_iommu_fwspec_get(dev);
+	if ( !fwspec )
+		return -ENODEV;
+
+	master =3D dev_iommu_priv_get(dev);
+	if ( !master )
+		return -ENODEV;
+
+	if ( IS_ENABLED(CONFIG_HAS_PCI) && dev_is_pci(dev) )
+	{
+		struct pci_dev *pdev =3D dev_to_pci(dev);
+
+		/* Ignore calls for phantom functions */
+		if ( devfn !=3D pdev->devfn )
+			return 0;
+
+		d =3D pdev->domain;
+	}
+	else
+	{
+		if ( !dt_device_is_protected(dev_to_dt(dev)) )
+		{
+			dev_err(dev, "Not added to SMMUv3\n");
+			return -ENODEV;
+		}
+
+		dt_device_set_protected(dev_to_dt(dev), false);
+		if ( master->domain && master->domain->d )
+			d =3D master->domain->d;
+	}
+
+	if ( d )
+	{
+		int ret =3D arm_smmu_deassign_dev(d, devfn, dev);
+		/* This should never fail because we already checked the domain */
+		ASSERT(!ret);
+	}
+
+	arm_smmu_disable_pasid(master);
+
+	dev_info(dev, "Removed master device (SMMUv3 %s StreamIds %u)\n",
+		 dev_name(fwspec->iommu_dev), fwspec->num_ids);
+
+	xfree(master);
+	dev_iommu_priv_set(dev, NULL);
+
+	/*
+	 * For DT devices the fwspec is freed by iommu subsystem, but for PCI
+	 * devices we need to free it here
+	 */
+	if ( IS_ENABLED(CONFIG_HAS_PCI) && dev_is_pci(dev) )
+	    iommu_fwspec_free(dev);
+
+	return 0;
+}
+
 static int arm_smmu_add_device(u8 devfn, struct device *dev)
 {
 	int i, ret;
@@ -1571,7 +1633,7 @@ static int arm_smmu_add_device(u8 devfn, struct devic=
e *dev)
 		}
=20
 		/* Let Xen know that the master device is protected by an IOMMU. */
-		dt_device_set_protected(dev_to_dt(dev));
+		dt_device_set_protected(dev_to_dt(dev), true);
 	}
=20
 	dev_info(dev, "Added master device (SMMUv3 %s StreamIds %u)\n",
@@ -2867,6 +2929,7 @@ static const struct iommu_ops arm_smmu_iommu_ops =3D =
{
 	.unmap_page		=3D arm_iommu_unmap_page,
 	.dt_xlate		=3D arm_smmu_dt_xlate,
 	.add_device		=3D arm_smmu_add_device,
+	.remove_device		=3D arm_smmu_remove_device,
 };
=20
 static __init int arm_smmu_dt_init(struct dt_device_node *dev,
diff --git a/xen/drivers/passthrough/arm/smmu.c b/xen/drivers/passthrough/a=
rm/smmu.c
index d63c901551..4d2f71f152 100644
--- a/xen/drivers/passthrough/arm/smmu.c
+++ b/xen/drivers/passthrough/arm/smmu.c
@@ -825,7 +825,7 @@ static int arm_smmu_dt_add_device_legacy(struct arm_smm=
u_device *smmu,
 	if ( !dev_is_pci(dev) )
 	{
 		/* Xen: Let Xen know that the device is protected by an SMMU */
-		dt_device_set_protected(dev_node);
+		dt_device_set_protected(dev_node, true);
 	}
=20
 	for (i =3D 0; i < fwspec->num_ids; ++i) {
@@ -862,7 +862,7 @@ static int arm_smmu_dt_remove_device_legacy(struct arm_=
smmu_device *smmu,
=20
 	if ( !dev_is_pci(dev) )
 		/* Protected by dt_host_lock and dtdevs_lock as caller holds these locks=
. */
-		dev_node->is_protected =3D false;
+		dt_device_set_protected(dev_node, false);
=20
 	kfree(master);
 	return 0;
diff --git a/xen/include/xen/device_tree.h b/xen/include/xen/device_tree.h
index 06d7643622..76ae1e674a 100644
--- a/xen/include/xen/device_tree.h
+++ b/xen/include/xen/device_tree.h
@@ -300,9 +300,10 @@ static inline domid_t dt_device_used_by(const struct d=
t_device_node *device)
     return device->used_by;
 }
=20
-static inline void dt_device_set_protected(struct dt_device_node *device)
+static inline void dt_device_set_protected(struct dt_device_node *device,
+                                           bool protected)
 {
-    device->is_protected =3D true;
+    device->is_protected =3D protected;
 }
=20
 static inline bool dt_device_is_protected(const struct dt_device_node *dev=
ice)
--=20
2.51.2


From xen-devel-bounces@lists.xenproject.org Wed Apr 22 10:02:10 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 22 Apr 2026 10:02:10 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1290199.1569862 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wFUPJ-0003U3-LX; Wed, 22 Apr 2026 10:02:09 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1290199.1569862; Wed, 22 Apr 2026 10:02: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 1wFUPJ-0003Tw-Ho; Wed, 22 Apr 2026 10:02:09 +0000
Received: by outflank-mailman (input) for mailman id 1290199;
 Wed, 22 Apr 2026 10:02:07 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92) id 1wFUPH-0003Tq-Pb
 for xen-devel@lists.xenproject.org; Wed, 22 Apr 2026 10:02:07 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wFUPH-00EDky-1O
 for xen-devel@lists.xenproject.org; Wed, 22 Apr 2026 12:02:07 +0200
Received: from [10.42.69.10] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <oleksii.kurochko@gmail.com>)
 id 69e89c9a-e002-0a2a0a5209dd-0a2a450ae558-28
 for <xen-devel@lists.xenproject.org>; Wed, 22 Apr 2026 12:02:07 +0200
Received: from [209.85.208.177] (helo=mail-lj1-f177.google.com)
 by tlsNG-4011c0.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.1)
 (envelope-from <oleksii.kurochko@gmail.com>)
 id 69e89c9e-56b3-0a2a450a0019-d155d0b1bd3a-3
 for <xen-devel@lists.xenproject.org>; Wed, 22 Apr 2026 12:02:06 +0200
Received: by mail-lj1-f177.google.com with SMTP id
 38308e7fff4ca-38e12c67a6fso51334771fa.1
 for <xen-devel@lists.xenproject.org>; Wed, 22 Apr 2026 03:02:06 -0700 (PDT)
Received: from [192.168.1.6] (user-109-243-69-121.play-internet.pl.
 [109.243.69.121]) by smtp.gmail.com with ESMTPSA id
 38308e7fff4ca-38ecb4f5119sm32544131fa.2.2026.04.22.03.02.04
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Wed, 22 Apr 2026 03:02:05 -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=20251104 header.d=gmail.com header.i="@gmail.com" header.h="Content-Transfer-Encoding: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=20251104; t=1776852126; x=1777456926; darn=lists.xenproject.org;
        h=content-transfer-encoding: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;
        bh=xy+ApHmByFuc1t0vGq2pFeEBqU6k6Tlo57xhbmenYgk=;
        b=HXaJwlBxarQJ7qgWeT210XJY/hFRqfTG8Mo5Z7Zt3TK1/lS/bY5yADH8kIwlTT7V9m
         hv3UpV8ZGZ+J9zO5Hnk2eVWeGOooRz2DuLk6BLVMBsglkj+QVG7HCimbTx75DeCljrCC
         N8hK17wjrjC0kxJE8Jr4KHgPPDpTIHmd7LTTaXlFOL/Vse/6AFek/4epFQnvE/D4PLTQ
         CSwhyWGtZrOPc08E1qt9gbK+bPj/NswgX8074he87Z1YNT+CFj9aK177wfPAvuC3XcvM
         FftQW/nSG3N0J0fwxrydDOZzIIujhcF+UHkG7qUBuVxyT9PJ4eytd6VuhJlinz4lPxjf
         tTLA==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20251104; t=1776852126; x=1777456926;
        h=content-transfer-encoding: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;
        bh=xy+ApHmByFuc1t0vGq2pFeEBqU6k6Tlo57xhbmenYgk=;
        b=sknPQLFQOuajfedM07o1FCtWvHzVUrwku5yw0hIPTIaMrvKy39fEFnjC+II2vWi+5g
         Ux7yV5xqyc9AXQ49AC0rrdfxCnP5oMUGOfCJi5JTU80Eyv6Xzd8q9muXH1XMHZ34XkzK
         YwE8adf0xTFBZfSh+TAMtrb8MDw9p/0fwh7QZu7blZ8l/vkdyki9yPHWwgC8tyXJUlK1
         JDaNVWB30hdpzAs8oKOYWva7lkzzuM2rBRzmfTs4fX1pv8ByJNhp8Vldu33KmZJTF9UJ
         ix8YCmj9YpmAUOdWpt9M28HqnuzL+r5DhaQ36IANAwZlCIjVA59pKJaKy4JXIn6gGE3o
         uSoQ==
X-Forwarded-Encrypted: i=1; AFNElJ+7jBi9UstIhoDOCkMhsl2/BQlJSjT3NN3n4nd8D1T2ZOSTM51WrJl8QH0varHzKZpcPoH5QGinO6E=@lists.xenproject.org
X-Gm-Message-State: AOJu0YztPAuuSjAfDuuj1jUjUmt/bA22gDRXm5JFAkdTUSANsBhhDzha
	PucjA2TeWzb5yI6hoQ/+26zcTpE3Nfu6662ePdsI4pheWV6e4QkA3V0L
X-Gm-Gg: AeBDieszfWpJIBuT7f2guUznQiov7ACILsu2rQwcvOVaYWcAFPU/qFLPZTPnTE9uG7B
	D9fKNtS4wfckZBeXcfZp9gyl0vzeICI3mv8c6moivmySW06Ml9q+bFfdapnW/k5/clf1Ccqa6BS
	R/a91V6EkzXzxKwiFymi7nQV5rErbD8yhYZIp12k1FTpYe1rWzrInB0UqAFXqaAerQKo2t9NpZt
	cn2Y9S4y7hIYSsUOw8xXxlXqaLtFkQ+Gg0voXO7+jPhgFyznaWBpuPzVylqftzraYk4YG0S49uC
	pnhrGr77CIqRYGwfcx1tkROG4pm5Y2o3czvrQovrUXK7/F78oUNjhCPhBiwjEMXYoth9bUq28rk
	mBRnILkx6Vz8YcmEGLQ+Iz+YcWAxHJr+UtzAd+86NbLOk0mIrwkCbYkRok0KWWd8Pzd/Pjqz7/i
	kh6PLEu4D7OXlVkcTFw9qoqmSAyAiQ6v44m9apTMouY+tGTMV+LKAwdfGcjPjtebHL4+XWNdtPp
	onqf7a+aKKYQYuJ5Zp4xpK9
X-Received: by 2002:a05:651c:54f:b0:38e:48fb:cf65 with SMTP id 38308e7fff4ca-38ec77fb141mr66374671fa.1.1776852125898;
        Wed, 22 Apr 2026 03:02:05 -0700 (PDT)
Message-ID: <c08b9944-d64b-4ae2-85aa-75c978d9a7ab@gmail.com>
Date: Wed, 22 Apr 2026 12:02:04 +0200
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH v3 02/12] xen: fix len type for guest copy functions
To: Jan Beulich <jbeulich@suse.com>
Cc: Romain Caritey <Romain.Caritey@microchip.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.pau@citrix.com>,
 xen-devel@lists.xenproject.org
References: <cover.1775836193.git.oleksii.kurochko@gmail.com>
 <9154aea41a11bc0ba95ad15c217db79d029dd119.1775836193.git.oleksii.kurochko@gmail.com>
 <d942bf90-6f8d-4389-90e6-a486ac510e1b@suse.com>
Content-Language: en-US
From: Oleksii Kurochko <oleksii.kurochko@gmail.com>
In-Reply-To: <d942bf90-6f8d-4389-90e6-a486ac510e1b@suse.com>
Content-Type: text/plain; charset=UTF-8; format=flowed
Content-Transfer-Encoding: 7bit
X-purgate-ID: tlsNG-4011c0/1776852127-47D788B7-5B0C380E/10/73395122804
X-purgate-type: spam
X-purgate-size: 1394



On 4/20/26 5:44 PM, Jan Beulich wrote:
> On 10.04.2026 17:54, Oleksii Kurochko wrote:
>> Widen the len argument of copy_to_guest_phys_flush_dcache() and the
>> copy_to_guest_phys_cb typedef from unsigned int to unsigned long, as
>> the function can be used to copy large blobs such as the initrd which
>> may exceed 4GB. Update the internal copy_guest() len argument to
>> unsigned long accordingly.
>>
>> Change the type for local variable size in copy_guest() to avoid
>> compilation error because of type mismatch.
>>
>> raw_* wrappers above copy_guest() keep returning unsigned long to
>> avoid type narrowing; it is not an issue for raw_*'s len argument
>> to remain 'unsigned int' since the assignment to copy_guest()'s wider
>> unsigned long parameter is safe and there is no raw_* users who
>> are using a value bigger than what can fit into 'unsigned int'.
>>
>> Reported-by: Jan Beulich <jbeulich@suse.com>
>> Signed-off-by: Oleksii Kurochko <oleksii.kurochko@gmail.com>
> 
> Actually: You say "fix" in the subject. How about sorting out a correct
> Fixes: tag then?

I will add then before Reported-by:

Fixes: 2986481b3d9e6 ("xen/arm: guest_copy: Extend the prototype to pass 
the vCPU")
Fixes: 5302bd490bea7 ("xen/arm: Introduce copy_to_guest_phys_flush_dcache")
Fixes: d07b7369aa65b ("xen/common: dom0less: introduce common 
domain-build.c")




From xen-devel-bounces@lists.xenproject.org Wed Apr 22 10:27:51 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 22 Apr 2026 10:27:51 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1290228.1569871 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wFUnx-0007qK-He; Wed, 22 Apr 2026 10:27:37 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1290228.1569871; Wed, 22 Apr 2026 10:27: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 1wFUnx-0007qD-Ev; Wed, 22 Apr 2026 10:27:37 +0000
Received: by outflank-mailman (input) for mailman id 1290228;
 Wed, 22 Apr 2026 10:27:36 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <roger.pau@citrix.com>) id 1wFUnw-0007pV-2h
 for xen-devel@lists.xenproject.org; Wed, 22 Apr 2026 10:27:36 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wFUnv-006nB1-FW
 for xen-devel@lists.xenproject.org; Wed, 22 Apr 2026 12:27:35 +0200
Received: from [10.42.69.7] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <roger.pau@citrix.com>)
 id 69e8a297-bab6-0a2a0a5309dd-0a2a4507b6de-0
 for <xen-devel@lists.xenproject.org>; Wed, 22 Apr 2026 12:27:35 +0200
Received: from [40.107.200.57]
 (helo=CH5PR02CU005.outbound.protection.outlook.com)
 by tlsNG-ef75cf.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.1)
 (envelope-from <roger.pau@citrix.com>)
 id 69e8a296-229c-0a2a45070019-286bc839f262-3
 for <xen-devel@lists.xenproject.org>; Wed, 22 Apr 2026 12:27:35 +0200
Received: from CH7PR03MB7860.namprd03.prod.outlook.com (2603:10b6:610:24e::14)
 by BY5PR03MB5251.namprd03.prod.outlook.com (2603:10b6:a03:22b::20)
 with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9769.48; Wed, 22 Apr
 2026 10:27:29 +0000
Received: from CH7PR03MB7860.namprd03.prod.outlook.com
 ([fe80::f5ba:35df:1c9f:b343]) by CH7PR03MB7860.namprd03.prod.outlook.com
 ([fe80::f5ba:35df:1c9f:b343%4]) with mapi id 15.20.9846.016; Wed, 22 Apr 2026
 10:27: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=F7l9QXZEEovabm8X/6ezGHvwSjvmQcOfeeNuPfs83fZd8Vj0ytElCUJBMDclt53YT9Cp2Zn9H+8nHybI35/hXgPlwTK1PTzJbjDTTQEa1tVxzsybYYvyJ8ktOj4a15lsP+5dKPV5R8At4uw7N0XjpPhNe7/7zouioiUO1hYbGl8y/wUE0dxwT3aL0iZAYufvv6bIcCDjQPc0HecP6AA1h2ezuDPGak35NS3XOAo54oXstS5qLJBoAKUylUWr12icsCu0RS+1hJS4qhvrqpLX8+LpjsA43uBqyfGZZikDrQi3utYCu4O+j4roIZJ469jumrNASw56CM1MIH1wggNMvA==
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com;
 s=arcselector10001;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1;
 bh=NPpR9LAK3a8IX9sxYpGyRv2J62/E71yO4bObAKY0j2I=;
 b=o8+3KJGp/eEWkbGT4tTA3zTdZY/MMadfc8lyUQVmrDru8HIbNk0l5d9wJU84q3xkI4CYXKjHemsXzL6RA7zXwB8TNOy90AquLN5fWqS+5QgJoUDQufHUEGphWObHx6NPpqD0tbzqohBYw3mB3OUUnMoeSAKXUaJVwjMTXlxSllh3FXD/RugINe/Va/Fk/ss54CxQoV9a3JhBIWYQuFRbTpYGai2+mLL1Xnsc1fSzv/Tz7qCYc4DgJBh8as2c7mggb6NOtPn2EtxYg2RPszZGWsoaFqApJlrA2kNey1+A+8EudfmK3XVU8z512vQQKowe5YgY/DHyEq0gxpWY75G+dA==
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=NPpR9LAK3a8IX9sxYpGyRv2J62/E71yO4bObAKY0j2I=;
 b=EwTWz9KfUQCXcnkr8dus11sAeX16gl0+TrqbA5+kG0vBszqA03PDkTl6TIZCoWgJmpk4hTGGbOgqGPAlbry3M25yqkniBq9B0DR9gwfUdHGOkyqba814GFVa8OV44wXHWyLSiOFoYw+ACUEmrm9u5xJl2y81erEMYJBvNKfEoZI=
Authentication-Results: dkim=none (message not signed)
 header.d=none;dmarc=none action=none header.from=citrix.com;
Date: Wed, 22 Apr 2026 12:27:19 +0200
From: Roger Pau =?utf-8?B?TW9ubsOp?= <roger.pau@citrix.com>
To: Mykyta Poturai <Mykyta_Poturai@epam.com>
Cc: "xen-devel@lists.xenproject.org" <xen-devel@lists.xenproject.org>,
	Stewart Hildebrand <stewart.hildebrand@amd.com>,
	Teddy Astie <teddy.astie@vates.tech>
Subject: Re: [PATCH v3 2/7] vpci: rename and export
 vpci_guest_mem_bar_{read,write}
Message-ID: <aeiih6d3_YpHolrl@macbook.local>
References: <cover.1775742115.git.mykyta_poturai@epam.com>
 <904786c642136845234f94fb522a0a0d0fc8a1d5.1775742115.git.mykyta_poturai@epam.com>
Content-Type: text/plain; charset=utf-8
Content-Disposition: inline
In-Reply-To: <904786c642136845234f94fb522a0a0d0fc8a1d5.1775742115.git.mykyta_poturai@epam.com>
X-ClientProxiedBy: MA4P292CA0015.ESPP292.PROD.OUTLOOK.COM
 (2603:10a6:250:2d::8) To CH7PR03MB7860.namprd03.prod.outlook.com
 (2603:10b6:610:24e::14)
MIME-Version: 1.0
X-MS-PublicTrafficType: Email
X-MS-TrafficTypeDiagnostic: CH7PR03MB7860:EE_|BY5PR03MB5251:EE_
X-MS-Office365-Filtering-Correlation-Id: fcc747e9-45d4-4ade-1374-08dea059bd91
X-MS-Exchange-SenderADCheck: 1
X-MS-Exchange-AntiSpam-Relay: 0
X-Microsoft-Antispam:
	BCL:0;ARA:13230040|366016|1800799024|376014|56012099003|22082099003|18002099003;
X-Microsoft-Antispam-Message-Info:
	+lgT91V7qQq6WbbHQlCdanvcsou2hb6wkcI6uO3Qs3uGs7AN6ZGeXW8MLNXXvCvRHNWMLQ0YaPyt9J5X+d+ti2YtbX+sa1RAMQNlhHgEo/6zeqnEB72ou/0ro/1s5UGJnc1oupuO9hG70+Le69OzFCb0mKkO1ssvZoOco+CeDdlHSlXS6YuBP5w2JDZ7Bs3g74rnKUmn+dB9ytnRpPbRN/mbHjslIWU67JMlCHv/U4e1fBUgd3lkw4uRB1iHIS84+sE0IXBKQJCTNI+cPhSgGzVjToXL025xyhLi5Vx8kaBvmzSzrIFvifWK9DgDV+A+O+qCSPr945rI6FhTuAEtXZKvzFsWubopqJUY9ic3iY8yrBgUtRkYbf5BVs4yiecx2S/xAa0+JC+3EimsmtRE6lhw0PpbnYXapTs90A3+BLZpOD/MlHyZuBFTJ7PgprusdbLswh1JuFqDJGptlUdvipKw9Ehmrd2gZdHKBn15xiKMAa6lnBS0k95uDPceo1XgMezOjhMAs+qZITRrt1W7rt2XhsEkh/qy/bZpttMlAnRiH42VUx8BOhp5GX6lvFxeKajveTmdEFZcKW/rdMlhmHoBUNTQ14I+vqa07EWajsz5um56cRUvsrz6MNEx0C9cegyWIdKXIWqXyzzj2eHiUxC82RG13MvfZuc+imcCDF2iPOoMtMrpyzXZe526NWw1hfHE5tsDS/tAVwTW0/lyMVDihhN18QhNHEN0ZJLTqF4=
X-Forefront-Antispam-Report:
	CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:CH7PR03MB7860.namprd03.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(366016)(1800799024)(376014)(56012099003)(22082099003)(18002099003);DIR:OUT;SFP:1101;
X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1
X-MS-Exchange-AntiSpam-MessageData-0:
	=?utf-8?B?UDhMNVFDZ1VPVnR2WVBvL0JpNTViYjh3UzdYei9vbmZCVjdUMFRFMDdsMEVB?=
 =?utf-8?B?ZG5rWm4vb3pwYThobFpSKyszMlo1VHNsTVY1UWZaZTNhMFpoUWN3ODZnV2U5?=
 =?utf-8?B?NitNMkcwdnpoaDJpRDNkSkpaSURmV2F0Zm9STzNVaUNOdHhDQ09xdkZjaC8w?=
 =?utf-8?B?ZU1QeldKZXZqbDF2ZVlrNkFmcGNSdG9hdy9EckJDZ21tM2treVdTYkh2dFU5?=
 =?utf-8?B?R093N25sS1NvOWFoVHdRQXhjMEc2SW50NUxqKzhpZmttQ1hOMnZvclI5L1FC?=
 =?utf-8?B?dFZ2eWtBeGZMSUpPTE94Z1FNbStxaGpISm9UclpkdVBEcWV1VEZsNlBqMWVn?=
 =?utf-8?B?TVhMTDlqSDc0MCtaR3ZBQ1VuZ3dlNURJSWNCYjZ3RXhOVkRiUnJ0d1U4TG9u?=
 =?utf-8?B?VStyRVlxVlVOVnArQVcyV0hWOEExZTdYaWtyWXkvK3Vja3QvUWVkRXRiaEFs?=
 =?utf-8?B?RzFKS0FKUHJUMjBwU3RaSjBxalQzQlRNMk5UTHBSeTNOQ1Y1UzFpbUs4RjBB?=
 =?utf-8?B?K1NVTVdDTXk3S1prd1hjZnYzL0IvclkvMmt5REFKQU1DbDBBeUlPNC90b0ZV?=
 =?utf-8?B?L0o5RU9jaGhJeTUzNHBXWmlldW1Qak1PZGhNa09BS3E4aGlQNWRHaWh4UjdB?=
 =?utf-8?B?dFRoL0NpZDRLWnpPTU9hWitqU29PZTd6VzJLdTF2dml5NnlTMEJDMy93M09D?=
 =?utf-8?B?enN0R1hLVVhBYWFoeksrWW1zbVlaRzJ2VTgzdHg0dzdpcjIwUHM5UllFMzVh?=
 =?utf-8?B?cE5qNys2Mm1qUENpNnFTUlJJamhvSmVXSHpnczg5c1VvNGk0d216ek9lanEr?=
 =?utf-8?B?MDVIb2Y0U1RWQnE3OXBJaUU3MERYbnk4ajZyc2Z0ZUZVcU5LeW1uODZWNVpv?=
 =?utf-8?B?UEg2UDJlZzFrYU5HSlF6ZURFT2lxa1QzczJTcVViOXdxak9WMW1scmFmWC9i?=
 =?utf-8?B?M0ZYejdyWGVZV2xoeFA2V0lld1g1eUxkYThBcUlqbW53ZlduN0hEY2FwSm5J?=
 =?utf-8?B?eTljRzJiQjM4ejVJUFFnNnBkNTlrWTZCYmxSdWlEeDFkYnhBcDVlMDVuOUVl?=
 =?utf-8?B?bnRFMEk2c3c1YlpWRHN1ejRSTEcxSVJwOU5GdXlkcEFsSGY4M0ZOeFZJbVly?=
 =?utf-8?B?Y1VEYU92R0VLZUpFZjZWOFgvRG4wMkZZTUpWS25FTXJtR2xjMnFIM28xd0NH?=
 =?utf-8?B?a2toNEZNVWl2WnFaY2YyZnpwVXVoZHpWL0VEU1VmVnRlN2dodzAvSzlSM2Vx?=
 =?utf-8?B?ZjdEam9kVmI3M3JvNWJFUnVoRkx6Q20wc09pK1JnM3JuZzdlU2g3akVNY3pV?=
 =?utf-8?B?akE0UE0vRHdBdFlqeEcza3loU2NKa3dKeXlLS24rYlpJcDFJSWF5WmNvd1Vx?=
 =?utf-8?B?QjZ0WGZMZmhnektXanNra0RtdlY5b3ZHQmhkd3BJYlNUbXZ2dmg3NGIvTExD?=
 =?utf-8?B?UUZVd2h1ajNYV3kzMHNMQzd1UC9aamZKbkR3cktEcWtYWGhQL2Y5aHc2dGU5?=
 =?utf-8?B?ZnRQY1F1Nmo2RVUwMEhQT3NDd29DT2Rwb3k5VFViTkFvcXVHTkVFVlJwclhr?=
 =?utf-8?B?T1hzVkdQbmM4MFNybVNWY2kzR3pkTUw1TDFtS01MMUhNMjFMYSthTUpDSFdE?=
 =?utf-8?B?ejZwZk5jalpkSlBVenQ0NnR1emQ1Nm52TU01WE80ajlXTnNaN3dYV2o3VUtr?=
 =?utf-8?B?YS9KQzE4dTRKd3J4SGp4T2Z2dWdOM1d0cjBqdG9HRmhPYmdnSEhkQ1RmN3Zs?=
 =?utf-8?B?SjV3MlZTRHV5LzRJSytuSk9WeGNVa0pvQThrYUc5ekJ6ekE1djdXcjVBTGNJ?=
 =?utf-8?B?aGZTUW5Zbk9KRHdUaWswYXJNK3dCV2txaHJraUJsTllBdklLbi84Kys2MzN6?=
 =?utf-8?B?bnhnV1RDOStSL2JhcVIyVzBzYnFmTUFZMDM0YkNVS0d5S0tqNnZXVlNSaTNY?=
 =?utf-8?B?bXRQOHRacWlGN3BpQ3RPd1VSb1JEY3ZJN2xTNkFKbmVYcXplTW9mL2RvTGtw?=
 =?utf-8?B?M21sVGVncU9lbjhTblN6TzBiYmlWWlVySWo4VUZjSjdtSFRCS0I3bWlOZUtr?=
 =?utf-8?B?cmErNjRObjN3QU5jMkhUZkNjSlFjWkI1VGFRcDFoRlB2emdLY1hRTFYzMjgz?=
 =?utf-8?B?Z2Y0S3R3STZHKyszTlJZK0dwS0t4ZmFTTkVIQ0ZEc1ZzTCtFb054QVJQSXN4?=
 =?utf-8?B?NjhDT3BTK3lBY1JHeGhRNjlCdldOWTBJOGEvQjRyN3Q4WjVhSHhHa09sWjkw?=
 =?utf-8?B?a2VBaDFTVWEreGhla0hUUW92R2p2WnVZVytrTThlbWNJWGlKQVRyWTFYdTJv?=
 =?utf-8?B?SFg0azJDNGx3MkFZQ1BpRDc2bm1MbVhmaCtQQXBGWlJOcDB0TmtqZz09?=
X-OriginatorOrg: citrix.com
X-MS-Exchange-CrossTenant-Network-Message-Id: fcc747e9-45d4-4ade-1374-08dea059bd91
X-MS-Exchange-CrossTenant-AuthSource: CH7PR03MB7860.namprd03.prod.outlook.com
X-MS-Exchange-CrossTenant-AuthAs: Internal
X-MS-Exchange-CrossTenant-OriginalArrivalTime: 22 Apr 2026 10:27:22.7430
 (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: sW0TKLpPzZtkFAbtEYXxUF2AxUR3rZTKGyo/qe33+kV4FA+cUxmgH7uxlkCulzMJGIUEX4NrAAgAcKaRC+u7NQ==
X-MS-Exchange-Transport-CrossTenantHeadersStamped: BY5PR03MB5251
X-purgate-ID: tlsNG-ef75cf/1776853655-ADB68C48-11D196C7/0/0
X-purgate-type: clean
X-purgate-size: 508

On Thu, Apr 09, 2026 at 02:01:32PM +0000, Mykyta Poturai wrote:
> From: Stewart Hildebrand <stewart.hildebrand@amd.com>
> 
> Export functions required for SR-IOV support.
> 
> Signed-off-by: Stewart Hildebrand <stewart.hildebrand@amd.com>
> Signed-off-by: Mykyta Poturai <mykyta_poturai@epam.com>
> Reviewed-by: Teddy Astie <teddy.astie@vates.tech>

FWIW, you could possibly squash patch 1 and 2 into a single patch.
Both changes are just exporting functions from the same file.

Thanks, Roger.


From xen-devel-bounces@lists.xenproject.org Wed Apr 22 10:37:24 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 22 Apr 2026 10:37:24 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1290240.1569880 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wFUxL-0001Pd-Cv; Wed, 22 Apr 2026 10:37:19 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1290240.1569880; Wed, 22 Apr 2026 10: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 1wFUxL-0001PV-9P; Wed, 22 Apr 2026 10:37:19 +0000
Received: by outflank-mailman (input) for mailman id 1290240;
 Wed, 22 Apr 2026 10:37:19 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <jbeulich@suse.com>) id 1wFUxK-0001PP-V1
 for xen-devel@lists.xenproject.org; Wed, 22 Apr 2026 10:37:18 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wFUxJ-002tN5-Tc
 for xen-devel@lists.xenproject.org; Wed, 22 Apr 2026 12:37:17 +0200
Received: from [10.42.69.4] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <jbeulich@suse.com>)
 id 69e8a4d2-e002-0a2a0a5209dd-0a2a4504ce1e-38
 for <xen-devel@lists.xenproject.org>; Wed, 22 Apr 2026 12:37:17 +0200
Received: from [209.85.128.54] (helo=mail-wm1-f54.google.com)
 by tlsNG-ebf023.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.1)
 (envelope-from <jbeulich@suse.com>)
 id 69e8a4dd-1dec-0a2a45040019-d1558036b02e-3
 for <xen-devel@lists.xenproject.org>; Wed, 22 Apr 2026 12:37:17 +0200
Received: by mail-wm1-f54.google.com with SMTP id
 5b1f17b1804b1-483487335c2so52563415e9.2
 for <xen-devel@lists.xenproject.org>; Wed, 22 Apr 2026 03:37:17 -0700 (PDT)
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-488fc0f82bbsm738025775e9.3.2026.04.22.03.37.16
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Wed, 22 Apr 2026 03:37:16 -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=google header.d=suse.com header.i="@suse.com" header.h="Content-Transfer-Encoding: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=1776854237; x=1777459037; darn=lists.xenproject.org;
        h=content-transfer-encoding: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;
        bh=IGBynXRuBkvVB54EFm5nxzikcVRMwdEyO1/v1LRBc90=;
        b=MnNLbEEqeokJHr0+E1fuhCBBeYI0k3pSy+nEQQiLVycF4cH/Co7FMvOEhjlDs4RMMi
         RPYiWTLjqCsjgd7EtJ3ODn1D8f/YQ0vuMnmZEeULZvyJHLNT+gf2vALCQMns6TCLoxvS
         k5+jg2yjpycWTC5/FiAh7VXBAm2wXNbYd74TNFzjUI5hiuZePtNt7dY2pxp4wbgoowvm
         zp+viTvdRFsbdNvGNxvZBAPPHNv+YMoZRh9hWDR0aMuDu9Xg3Ij6zkM7fnw50LMHOB7p
         RFPut3bVOlwovevePdwm4TtFsjWX7oBNG1Y4LBSHKIVw/0CIuNupsSOZ/Eqqt9Tajp/x
         fpAA==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20251104; t=1776854237; x=1777459037;
        h=content-transfer-encoding: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;
        bh=IGBynXRuBkvVB54EFm5nxzikcVRMwdEyO1/v1LRBc90=;
        b=Dh6vhMADLrTxgSL7JLGuw8wq0QJ0XjHmxb/kFKoXPr/kTiOGyKbwrPKtdtOoz9Gaf2
         zCk+vHrfQ84abeb6RR2I5T7iA+NXSkVayFn3emgOf1pk73mZewXM1uyklSkjSGDIj98U
         E2E76/BuJbqjsnf9/B/mfsAOnlJIOBRlf4yHlyhth5lG7ACXIpkpjie1UeeqWOyiKHzh
         qpS3giNYnKHp5zj4WpAABplVX3wjNwm6nbODHKCvUOtqnfb/r5qtSKCitzvaRnpbqHRv
         e7+W3RbDmNvhvcOXIpbTU/MnBG1V16OWj0C9Vi87DUhcFMpMnGffMhWGnWcrQCM+wl3e
         AJwA==
X-Forwarded-Encrypted: i=1; AFNElJ/G+Hep/sKgQEgeyDcgX4INarOHq/0mRxJpgvxWKgJ3nYFuxz9Q6tOegCosO/ycpWfwaAvMZTcJkEw=@lists.xenproject.org
X-Gm-Message-State: AOJu0YyntxMRa1WQCVrg+Bu0mkrs3wWmWdIFUO41yL6bTS1QH8vMb8/4
	G1Sa16Z5CV3aah8CDB0oMCKp+w/HsNBFB2cwQkbgp6P61w4uLWrX2sO/M92idwYtyw==
X-Gm-Gg: AeBDievphXbkAVFcYwp6nALMQeKnJpJT9iun87gzAzidOypkLZAsJqvSbSFbNgMiEmm
	IlEmNUGF1dUrzFAdyk1rrAEgx01Lbq/W1fKPmIMlcLv2hDeay3EDsj73x3xX/WIBlH0cWTS85Y0
	lAWiILIe8e9nEBfXlJCQhsD6EsH/sM3uBJUr5fJx45iBO3basWPFRy7IERpm6LWNCNAPR4TBzdP
	Xzfz8brtUnSt3++GYt8WaiQ9hrVER8ziFStlcWlRekevMq/f5scX8bELIqhaWYnfRdDEkVDC/GF
	pD4n8sCIqLSUlVWnTrfKcLphQ8OHNWid/ADsxwAEg5pScW3Hb6eLsrEr2UGiJlBZSb8rWQaXogk
	lP2D7hDz4wNsiLJTjDkvntgtSsWPpdi2NXTxNJF9y9sm8aY5Hs9siPpIVXrwLB8Q6kwWtURwk78
	NdWTAEAJ8/UHZm/7C6KWYXHidIgMTzsq7CnnYbLIDueQyVVWtJAcxRdbLI2xS4NxG3xoMjDe290
	pUXcHREH+sLWlA4o+zTaD27Qw==
X-Received: by 2002:a05:600c:8b8c:b0:489:1d74:56d with SMTP id 5b1f17b1804b1-4891d7406famr186705405e9.29.1776854237221;
        Wed, 22 Apr 2026 03:37:17 -0700 (PDT)
Message-ID: <f2ad01dc-0f8b-4514-b35f-24b254c9b2ee@suse.com>
Date: Wed, 22 Apr 2026 12:37:15 +0200
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH v2 3/3] xen: introduce CONFIG_HAS_DOMAIN_TYPE
To: Oleksii Kurochko <oleksii.kurochko@gmail.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.pau@citrix.com>,
 xen-devel@lists.xenproject.org
References: <cover.1776780944.git.oleksii.kurochko@gmail.com>
 <61c33c15d046110b5c99490f54191facf18068e1.1776780944.git.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: <61c33c15d046110b5c99490f54191facf18068e1.1776780944.git.oleksii.kurochko@gmail.com>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 7bit
X-purgate-ID: tlsNG-ebf023/1776854237-43D6C3FF-4A741CE9/0/0
X-purgate-type: clean
X-purgate-size: 1181

On 22.04.2026 11:44, Oleksii Kurochko wrote:
> --- a/xen/common/Kconfig
> +++ b/xen/common/Kconfig
> @@ -29,6 +29,9 @@ config DOM0LESS_BOOT
>  config DOMAIN_BUILD_HELPERS
>  	bool
>  
> +config HAS_DOMAIN_TYPE
> +	bool
> +
>  config GRANT_TABLE
>  	bool "Grant table support" if EXPERT
>  	default y

Looks like I need to repeat my v1 comment: "Why here rather than where
the bulk of the other HAS_* are?" They are (or at least are suppoosed to
be) sorted, so that finding a particular entry (e.g. while checking for
name clashes) is easy.

> --- a/xen/include/xen/domain.h
> +++ b/xen/include/xen/domain.h
> @@ -13,6 +13,19 @@ struct guest_area {
>      void *map;
>  };
>  
> +#ifdef CONFIG_HAS_DOMAIN_TYPE
> +enum __packed domain_type {
> +    DOMAIN_32BIT,
> +    DOMAIN_64BIT,
> +};
> +#define is_32bit_domain(d) ((d)->type == DOMAIN_32BIT)
> +#define is_64bit_domain(d) ((d)->type == DOMAIN_64BIT)
> +#elif !defined(CONFIG_64BIT)
> +/* On 32-bit-only platforms all domains are 32-bit. */

Btw, while this may be true in practice right now, it is not given. A
32-bit hypervisor can in principle be capable of running 64-bit guests.

Jan


From xen-devel-bounces@lists.xenproject.org Wed Apr 22 10:48:42 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 22 Apr 2026 10:48:42 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1290253.1569890 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wFV8E-000461-A5; Wed, 22 Apr 2026 10:48:34 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1290253.1569890; Wed, 22 Apr 2026 10:48: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 1wFV8E-00045u-5W; Wed, 22 Apr 2026 10:48:34 +0000
Received: by outflank-mailman (input) for mailman id 1290253;
 Wed, 22 Apr 2026 10:48:32 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <jbeulich@suse.com>) id 1wFV8C-00045o-Na
 for xen-devel@lists.xenproject.org; Wed, 22 Apr 2026 10:48:32 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wFV8C-00781B-4D
 for xen-devel@lists.xenproject.org; Wed, 22 Apr 2026 12:48:32 +0200
Received: from [10.42.69.9] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <jbeulich@suse.com>)
 id 69e8a76a-e002-0a2a0a5209dd-0a2a4509df02-44
 for <xen-devel@lists.xenproject.org>; Wed, 22 Apr 2026 12:48:32 +0200
Received: from [209.85.128.52] (helo=mail-wm1-f52.google.com)
 by tlsNG-bad1c0.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.1)
 (envelope-from <jbeulich@suse.com>)
 id 69e8a77f-2497-0a2a45090019-d1558034c045-3
 for <xen-devel@lists.xenproject.org>; Wed, 22 Apr 2026 12:48:32 +0200
Received: by mail-wm1-f52.google.com with SMTP id
 5b1f17b1804b1-488a9033b2cso59524625e9.2
 for <xen-devel@lists.xenproject.org>; Wed, 22 Apr 2026 03:48:32 -0700 (PDT)
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-4891978ef6bsm112376715e9.4.2026.04.22.03.48.30
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Wed, 22 Apr 2026 03:48:31 -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=google header.d=suse.com header.i="@suse.com" header.h="Content-Transfer-Encoding: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=1776854911; x=1777459711; darn=lists.xenproject.org;
        h=content-transfer-encoding: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;
        bh=6tx9jbdpinew4yDHwaxKss7KZnzno1jUKuWkAieus00=;
        b=XVtgsULRmRdsVCxbt7lmDbT0gorQAfArK8+6T7wRsikOjaK19D1I4xJWFO2h+AIJq9
         w3wuQnC5whWzwJG+WEfrgVw5pRK2ISDwHmLJQsTUyHmlMnE/caNnXCeWumaqGKmhMVNI
         LzPBPYtFacqGFHeP2eTAd4eVABeIac5BPYFnGkop/LK09ohG3hWxJpLhgcru0KAirb11
         m7ywNV8t46j+byf5ilisStgU5SuutjISAheStrxtKY7hILJlbl1qSWEwPo0I8SYxFJNV
         Z+jeqorFCgSiYVnh0iVUTdYFtoDbtl4+XWsqPznWdmuVWuJBdT2xHdmuWipaKKtWMjbg
         +IfA==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20251104; t=1776854911; x=1777459711;
        h=content-transfer-encoding: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;
        bh=6tx9jbdpinew4yDHwaxKss7KZnzno1jUKuWkAieus00=;
        b=JGHB+88pRjOjGYLWVUS2JcV12kDGiuOx7EITvRv5FfD67WtgfAyRAZ+VgtxK4e8vdJ
         ih1mxzgSHTiQtixDLANcJZ55LqDe3KKUjFH1Y6zS+D4ilXgVz6lJZj1SEGBrh+/0zRdM
         strLB0McvxIMEEbWTPtfU0QsKBFMej5lHrDEpqpvd4PsENHkVjateF3Uz+j7UryGS/S0
         oI+P02U2czgk1tfO3fwGU47AKqMV4yfoQSuUPEzTTwPv5mOiqYpBPJczrYEtxgrVkohG
         lLqBQsl88beQAa9wcsjbZM4Kok+JRHabvmX4LTbbA9Og6NyilqPZ6a7B77ty13Wc1jVU
         40sA==
X-Forwarded-Encrypted: i=1; AFNElJ+9BcC5RCem1CQxsBqnIax08bs/s5s7MiWU0cZoHcDqN523W/mklYfsviBucGLyyHuwMPFHR3vQtRg=@lists.xenproject.org
X-Gm-Message-State: AOJu0YyW1Rw8HN1F0i3+cUcEgkPrrrAnje4VSbyik4ffjWPCptaoOajO
	4drpgGZU34powFdHSiICCDkhJmwgH99zaICSMuFqhaO/1gDBgX7LsRK5EKA1GU/FlA==
X-Gm-Gg: AeBDietLsPUznMQghViVaYzbgrPRUBRCwBr3FwnKJDg4+1u4tsi+v42iD09/fwcHgjR
	Yf2cR6Vw2gO/rtt85rfGpJfmecHzkJe0smr49mqiT8boLxfaevTXWcjzjcIg6U8WCYD1DcqPgUh
	djOsPOcysLBOb/YndrUztpy2qA8ExNTImf8ELkvNrWFF5oda0xaKoW402BsBuSGTGUJOXGLdiwt
	HkRfUQBpiYmpL1GW+aP8xdtDHzK7ZmrY6GgJk5BAkp/giTpArA8iOpGuJfym1Ot4lX4Rh9vA1R5
	DC2ZbXh4dmcPmkvZGQ85MFkhFJg28kk6cstkqYAbY1xhiCqK10NGkpDLAWEVds9Upr3688taEQP
	jc/95jQ2iInAuZyv3wh6cR//29yJHLxJBe3PP1c6+tz4FtgZ2ry589yNuaH1Rqe0pxqMW5HZwdp
	3QMXzEAnHSCy0UjQ8bUHprnW70n/Qzq1VHCROMO/JHk1Frw3eJWnNc02wTMzwJLadd89wWXscOm
	lQ0JyAnPQL4UFyaEcHuYoDpWg==
X-Received: by 2002:a05:600c:c090:b0:488:c744:49b with SMTP id 5b1f17b1804b1-488fb74a53dmr228037865e9.7.1776854911460;
        Wed, 22 Apr 2026 03:48:31 -0700 (PDT)
Message-ID: <14bf7225-25de-4fb0-8b68-082192929ace@suse.com>
Date: Wed, 22 Apr 2026 12:48:29 +0200
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH 1/1] xen/efi: Config parsing: Free the same page count as
 allocated.
To: Bernhard Kaindl <bernhard.kaindl@citrix.com>
Cc: "Daniel P. Smith" <dpsmith@apertussolutions.com>,
 =?UTF-8?Q?Marek_Marczykowski-G=C3=B3recki?=
 <marmarek@invisiblethingslab.com>,
 "xen-devel@lists.xenproject.org" <xen-devel@lists.xenproject.org>,
 Julien Grall <julien@xen.org>, Stefano Stabellini <sstabellini@kernel.org>,
 Volodymyr Babchuk <volodymyr_babchuk@epam.com>,
 Bertrand Marquis <bertrand.marquis@arm.com>,
 Michal Orzel <michal.orzel@amd.com>
References: <127e7a4e0bf360d7ffe8be94022840a353a307b2.1776787216.git.bernhard.kaindl@citrix.com>
 <170028cb-ce5c-4677-88e4-32f57f372fea@suse.com>
 <52c21d8a-f2ba-42e4-aa63-ddf65d460401@suse.com>
 <LV3PR03MB7707C25AD7EBF0118B2CAE65872D2@LV3PR03MB7707.namprd03.prod.outlook.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: <LV3PR03MB7707C25AD7EBF0118B2CAE65872D2@LV3PR03MB7707.namprd03.prod.outlook.com>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 7bit
X-purgate-ID: tlsNG-bad1c0/1776854912-4236CA53-BE5D1C75/0/0
X-purgate-type: clean
X-purgate-size: 1235

On 22.04.2026 10:46, Bernhard Kaindl wrote:
> Jan Beulich wrote at 10:20:
>> On 22.04.2026 08:48, Jan Beulich wrote:
>>
>>> As indicated above, I'm not convinced though that we really want to
>>> alter file->size. I'd instead add 1 in the few instances of
>>> "efi_bs->FreePages(cfg.addr, PFN_UP(cfg.size))". Sadly the adding of 1
>>> is conditional in read_section(), so maybe a "need_to_increment"
>>> boolean wants adding next to the need_to_free one? Then a small helper
>>> function may be warranted for those few instances of freeing cfg.addr.
>>
>> Actually, no separate flag looks to be needed. If for the cfg file we set
>> ->need_to_free, we know we allocated the one extra byte.
> 
> No, also cfg->need_to_free is always set when AllocatePages was successful,
> xen/common/efi/boot.c, read_file(), lines 862 to 867:
> 
>     ret = efi_bs->AllocatePages(AllocateMaxAddress, EfiLoaderData,
>                                 PFN_UP(size + (file == &cfg)), &file->addr);
>     if ( EFI_ERROR(ret) )
>         goto fail;
> 
>     file->need_to_free = true;

Of course. And for the cfg file (and only that) it means there's one more
byte allocated. So cfg file buffer freeing can uniformly add 1.

Jan


From xen-devel-bounces@lists.xenproject.org Wed Apr 22 11:01:14 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 22 Apr 2026 11:01:14 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1290273.1569897 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wFVKO-0006mB-B3; Wed, 22 Apr 2026 11:01:08 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1290273.1569897; Wed, 22 Apr 2026 11:01: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 1wFVKO-0006m4-8T; Wed, 22 Apr 2026 11:01:08 +0000
Received: by outflank-mailman (input) for mailman id 1290273;
 Wed, 22 Apr 2026 11:01:07 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <roger.pau@citrix.com>) id 1wFVKN-0006ly-2H
 for xen-devel@lists.xenproject.org; Wed, 22 Apr 2026 11:01:07 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wFVKM-00AijY-ER
 for xen-devel@lists.xenproject.org; Wed, 22 Apr 2026 13:01:06 +0200
Received: from [10.42.69.3] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <roger.pau@citrix.com>)
 id 69e8aa65-2eae-0a2a0a5409dd-0a2a4503809c-32
 for <xen-devel@lists.xenproject.org>; Wed, 22 Apr 2026 13:01:06 +0200
Received: from [40.93.198.65]
 (helo=CY7PR03CU001.outbound.protection.outlook.com)
 by tlsNG-33051d.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.1)
 (envelope-from <roger.pau@citrix.com>)
 id 69e8aa70-672d-0a2a45030019-285dc6416a6a-3
 for <xen-devel@lists.xenproject.org>; Wed, 22 Apr 2026 13:01:05 +0200
Received: from CH7PR03MB7860.namprd03.prod.outlook.com (2603:10b6:610:24e::14)
 by MN2PR03MB5101.namprd03.prod.outlook.com (2603:10b6:208:1b0::15)
 with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9846.20; Wed, 22 Apr
 2026 11:01:02 +0000
Received: from CH7PR03MB7860.namprd03.prod.outlook.com
 ([fe80::f5ba:35df:1c9f:b343]) by CH7PR03MB7860.namprd03.prod.outlook.com
 ([fe80::f5ba:35df:1c9f:b343%4]) with mapi id 15.20.9846.016; Wed, 22 Apr 2026
 11:01: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=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=l6zeL37Z5UJCHN7MH/M+H99NphorwF59/kwCypoJAKc+Es1a0ovD15sEdjruVnOsRrUc0Z8Gq4FEZweerFtTekIse6YOnp74u5O9zAJrDlcq4BM0xysjFZN8SLOskyZeNPP/FbNxL3qaui7HJrADzeTO0+0Fby9ABONicQExmhq4nwzYf7GOgN0/Jhd7CT5y/2yyvYvllmbN96NXRg61MC2UbgZknFt9MO7pmZ+Q35rz/cDT9y7zX5YJ8/l8ULHBOhAIbg4esWHP+liLpC2zNSs8+/1mmtekB2wFI9a9PjcR1lrQlNXvPvZ/JLBBV8Dz1cR2kjnoihoML8Wt7mOsDQ==
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com;
 s=arcselector10001;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1;
 bh=lCepYLEywSqiYahjV2c6+lsNMx0TrGfpuUvVztQBYZc=;
 b=e3MH+1UhvYYy3AKPiflkaRN2vuE7hWMI+X+B9qSX+ONjuPViDdG+h1UrTe0/z/pHp/ZiPbC30WHwDgbhvvtAUKeRqTETLUZGv90kpAbp58V5gV8Ln7leTE8JRQHTHxi5/DXvjEDmgsXsSajRf7KonrNUGOPnnKY5Ge8pI5wOTvGgznt6fqxFJMZ7CqDPnj56wAbSfPLWhwNyaXndqT8r2rhqrX4/ZztmpQebL9j4Awe+EwlCMJM1Huu4xwZvHOpbbZAAMCgPGZMWHbJuJtWRIhbpJ9C/2FAl+35RpNCNgcv3h5YIZMcrWgkoxDLIVG9zco125ehIbPi2Nzdv5B//oA==
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=lCepYLEywSqiYahjV2c6+lsNMx0TrGfpuUvVztQBYZc=;
 b=hpvOXaJvMDufMQKPN7SX+Z5KIwm8b8Q0ZGe19wts9oyLtoC1RncvVNpuHC7kvnH2/Y+srqSMj1Dmk97UP4j4zvFkDyt4f4uSkSdJXf2HCwcxtonSH2bjfWsP7KDtCIZunz5+SOqDpheA9hLkktxZPc4Oc+CwiwRdWNNNNcTFkvs=
Authentication-Results: dkim=none (message not signed)
 header.d=none;dmarc=none action=none header.from=citrix.com;
Date: Wed, 22 Apr 2026 13:00:59 +0200
From: Roger Pau =?utf-8?B?TW9ubsOp?= <roger.pau@citrix.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>,
	Stefano Stabellini <sstabellini@kernel.org>,
	Stewart Hildebrand <stewart.hildebrand@amd.com>
Subject: Re: [PATCH v3 3/7] vpci: Use pervcpu ranges for BAR mapping
Message-ID: <aeiqayUd4sLNEPGG@macbook.local>
References: <cover.1775742115.git.mykyta_poturai@epam.com>
 <51223761a1f2b8f1e901062d1e59dad934300f0e.1775742115.git.mykyta_poturai@epam.com>
Content-Type: text/plain; charset=utf-8
Content-Disposition: inline
In-Reply-To: <51223761a1f2b8f1e901062d1e59dad934300f0e.1775742115.git.mykyta_poturai@epam.com>
X-ClientProxiedBy: BN9P220CA0027.NAMP220.PROD.OUTLOOK.COM
 (2603:10b6:408:13e::32) To CH7PR03MB7860.namprd03.prod.outlook.com
 (2603:10b6:610:24e::14)
MIME-Version: 1.0
X-MS-PublicTrafficType: Email
X-MS-TrafficTypeDiagnostic: CH7PR03MB7860:EE_|MN2PR03MB5101:EE_
X-MS-Office365-Filtering-Correlation-Id: 8a4433f5-823d-4d2f-a3ab-08dea05e7105
X-MS-Exchange-SenderADCheck: 1
X-MS-Exchange-AntiSpam-Relay: 0
X-Microsoft-Antispam:
	BCL:0;ARA:13230040|376014|1800799024|366016|56012099003|18002099003|22082099003;
X-Microsoft-Antispam-Message-Info:
	hh0IfO69xJijgZ0EFu5+G/5N9WfWP9VtIS74qEV0n/yWhZNUOCRbyRDvwW92KCsC6gLO8a6iTrtiEynIvZEn8hZFtciBCK/kn1DEWqf5El1L1sFXdxYIZjfRTu9ffrof0gZQzjgWh06JQJHOUi4zRjJ+KW+hX1qFGg1/FW7+n7BrYeBgyhxEDAYBqI9L9x8D5ru3Z86oSo/KreWXm5QmBfmArkbbMGc3ofzCQs4RIOOz+n6pZ3NPM0wqc1IvVytNGV2tFl4QYUGLsQN9+vY44r5QQcmpiHt7NgSuWZqDXa3cnwzlz+iKtvFptTk+9/4VmxTl/rRFpqDdnWpPB5Oi/EbVQMFlvMN4Qb5R0WDhF29l8TLZ5gXkz3ZiVBEl2o6bXu7TouvdzgWIB9hvDEKSQTmxkVZDccRNjO8lMR7jPJK9rBVPw0C5kQWZlRjWYq9Rx8+8ctntO2OotxDiJ6jRM3YeqLt8hD6X05UNR7yCz2XUDfsYLcquUT/N8bQGshENN/e5bMIUP/XdP7x8I7jUsXdK20SPUKO3YRGHwCIpf6Deb/guF0RZjzj/cNiLsJVcGp0tM90qY079DTO/5hotbETFScic1ctu7+7xYzStGkVdQmhyd+4pYKw/3zaeGFKY/eKg5NgYikN8TkOLy0C4tg3x9ws55QydfFCr8OwsDp3SunXVSekGF8q6ADciLfq1
X-Forefront-Antispam-Report:
	CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:CH7PR03MB7860.namprd03.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(376014)(1800799024)(366016)(56012099003)(18002099003)(22082099003);DIR:OUT;SFP:1101;
X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1
X-MS-Exchange-AntiSpam-MessageData-0:
	=?utf-8?B?aGE5eVBjZ2VUSmJzRnUrVkEzL0JlVVBZRHJ6ZkgyQ1ZTdlE4WjBxdlpSNFRk?=
 =?utf-8?B?NmtVRUJUU1JMMDZ0RmFvOEtzb0Q0TXM2OTRnL2llSnRUYjVJR0lPUnBCeGxt?=
 =?utf-8?B?dElGODVCT3JObG1ZRXh0cFdxUGJxUVBJbUEyMjJ4VS9lUHB1d2t6NU8vczc2?=
 =?utf-8?B?U3o3VVJKbVB0cWlpdnRwUFhiS0I2WlFBejBWYkVobERpSTc1YXBUaS9jS2Jt?=
 =?utf-8?B?alQwUDRiMlhyWW9ZbHczRURNV2YreGFCMUVhYVM0alFhdEZxOWdCUVM1MG16?=
 =?utf-8?B?cU1kdGtQZkY1dHJieU9NTC9ZdDhMRWdNRHdMbjVabmJ3M0N2WDc2OEhnT05N?=
 =?utf-8?B?ZVFTRFZndzJhVHBBK1V1ZlBWOXVReVVBUzlwZnNyMkM5ZktsaE9zVkszaVAw?=
 =?utf-8?B?eUtMbWt5T0Z2dEVGc2I5Q2wxSVc1MzdsRXJJVFRYZEpaL0lMa0UvZzR6YnZK?=
 =?utf-8?B?L3dLVDdxKzhYenNraHZxaHU4MEFpekFQMmRxOWxacjVXbWszZ3JjT1FIZ010?=
 =?utf-8?B?MTJpN3FFdDVOWW1Zd2xDVU5sS1NiUjY1WGd6a3htVjd4QzZRcDRqT21OdElD?=
 =?utf-8?B?MlBBVjFIbExpOGYxVmpxQXFnVnI2S1VrZ21uRDhGdDdzNHNSOUhJRUZSSGtY?=
 =?utf-8?B?eE1BS01OM3ZMQy9IMzY2S1lGN0c3NUxrUnNqMjJmejJHLytIL3htMERMUXpZ?=
 =?utf-8?B?TW41YzVjSVRBbTArUWFmUU4rcDg5SVBKTnAzaSszSzFLMWQrQUwrUlZDb3dU?=
 =?utf-8?B?QmFGN1haU3V0YmFzeksyc0tONTF0SkVkZGxDVGF6TDYvRXZqYWsycTMrQzlK?=
 =?utf-8?B?azh3UkNiSVR5bWlPQWtFVzlEYmN4clNXa2NTeG5hemlHV1I2UzljTDZHNGZq?=
 =?utf-8?B?NElBOGg2aldMN2xvQXA0QmZ3VzhpYk5aUlZKT2pyVGJsSVNXcVRUNUdrc1ZI?=
 =?utf-8?B?RHFHbEhURHBqWDRmKzhGTVJCckoyUkhHcHBwaDBJdU5IV3R5bmtFUzU1NmVT?=
 =?utf-8?B?dkZvUGQvblcxdXFRdExWY0NLMG1uanQybU5wSWhhR2J3Y0RvVFlTM0xEUTNL?=
 =?utf-8?B?VkJkbGV6Sk1xRlp4dDBKenE4MThPYmJEY3IwdldUeWMwTjBaOVZLVmFDMG55?=
 =?utf-8?B?US92Vlo3RVE1a3BINGNMNjRta0o1bWg3L3dSVmlqbUJHSFgwckV1Wm1DelVy?=
 =?utf-8?B?ekhOREdYSElqU3ZzeXh0WWg2WnBtazdLc0prdjYwVDB6NTBHdHVqZ1FaUEtP?=
 =?utf-8?B?Ky9YMk1pV3YyV091UWhJU0VSb0R5RWRwM1dyWEpSbVRxNkFWRkZHMU91Qlhi?=
 =?utf-8?B?VjJ2eVVIY2xTem1ORFMrcjZ6a2RVV0pYUkI2Qis3UE1obG0rYW1RTk5JNUtn?=
 =?utf-8?B?TXg0bGlab1JvZ1RPcWdVUG9ZYUxtaWdpVTdTYTlJWUtGU2xsdEMvKzVWTXFn?=
 =?utf-8?B?dkNlOCtPSVQvNEJrM1RYSEFhRmF0OFdoWHpKdHB4QVA2QzhWNDk4WWYrUW9L?=
 =?utf-8?B?ZTk1MWNzYUsyL0p4OW54akkrTmhZK1lwdXQvZ3pjaWl5Y3ZUNjEvN2RWSHVB?=
 =?utf-8?B?OHZjVThla1NVOExSdHRVODEzSEN6d1BqbzZlS0ZoMXExNlRNeFB1aCtVTE5t?=
 =?utf-8?B?czNYamdXSnc3MFNtY0ZCaWpxYmtJZ0ZVMW04Ni9YNERNL3l5N3M3eCtIMW9q?=
 =?utf-8?B?K3VjaEtWRE9NdlpZNlFlWUhXSzZCRnNGK3A1ZVBCK3U0cEtXY2xOcHc5MzZ0?=
 =?utf-8?B?RlRSb1hOcUJ5V0tJRnBFMTR6NWNvaWV4WXVqcjNkUllyaDVZZGp6aGFkQVlm?=
 =?utf-8?B?ZklJOGFPTTIrWkFJaWRFYmg0c0ZGRnhITERXV2txajFPV1ZDT2R3VHNzZUlS?=
 =?utf-8?B?MGx2WXNFRVhrci9zVDlnSzRDTi9PekZvb2U2cG1UTDZCUWtZN2QwMmlDSGR3?=
 =?utf-8?B?dGp5bjVCYWdGMzE4RkZCYlJUWEZMK205ZTQzcTh6MGJkSmR3NWI2eTllZlUr?=
 =?utf-8?B?cXVFckM3WWpVZHl6YnhTSkoxQUZWdG56WEsxOUQvZC9kL1hPTDc5UVFCcW40?=
 =?utf-8?B?Vk1YZ3AydmNjb1JTSXl0ZUdzTEhPTnJRYWxrKzJMTkNmN3BUbWQybytUT3BE?=
 =?utf-8?B?VUZkYkFoTlloVi93ZnJGUDF1Z0w3TTl4VUZXY1o2NU5pU2d0S0tBMGgzVlFL?=
 =?utf-8?B?TTIyb0dTK1RsRCtOamtFZlQ3cnNSYzQwbC9YMVhaemtOQXdQaWY0d3lKaHJn?=
 =?utf-8?B?cldrMGZlWklPYnNwZTd5clJoekV3L0RubzdPQTQzWjJBdmVVS2hvbCtaOWtt?=
 =?utf-8?B?WnRhNTJtbHE0SWpMUmdTSFhoKzYrcE90elEyVDZqWkVRemNDQTgyQT09?=
X-OriginatorOrg: citrix.com
X-MS-Exchange-CrossTenant-Network-Message-Id: 8a4433f5-823d-4d2f-a3ab-08dea05e7105
X-MS-Exchange-CrossTenant-AuthSource: CH7PR03MB7860.namprd03.prod.outlook.com
X-MS-Exchange-CrossTenant-AuthAs: Internal
X-MS-Exchange-CrossTenant-OriginalArrivalTime: 22 Apr 2026 11:01:01.9360
 (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: To7wV7gIozPLTVSxMD8tLZTpnq02Zzj1kDpXO1xI6+EqLkvq+rIdRI7k7UHTF/vZMjdYm5DXBuv92LK+iPvC3g==
X-MS-Exchange-Transport-CrossTenantHeadersStamped: MN2PR03MB5101
X-purgate-ID: tlsNG-33051d/1776855666-28149938-64029194/0/0
X-purgate-type: clean
X-purgate-size: 14210

On Thu, Apr 09, 2026 at 02:01:33PM +0000, Mykyta Poturai wrote:
> From: Mykyta Poturai <Mykyta_Poturai@epam.com>
> 
> There is no need to store ranges for each PCI device, as they are only
> used during the mapping/unmapping process and can be reused for each
> device. This also allows to avoid the need to allocate and destroy
> rangesets for each device.
> 
> Move the rangesets from struct vpci_bar to struct vpci_vcpu and perform
> (de-)allocation with vcpu (de-)allocation. Introduce RANGESET_DESTROY()
> macro to free a rangeset and set the pointer to NULL.

While this obviously has advantatges when multiple PCI devices are
assigned to a single domain (ie: for the hardware domain), it's
actually consuming more memory in the domU case if a single device is
assigned to the domain, and it has more than one vCPU.

I'm not saying it's bad per-se, but it's not obviously such an
improvement IMO.  With the current approach we know Xen will allocate
an amount of rangesets that's bound to the amount of PCI devices
(nr_rangesets = nr_pci_devs * NR_BARS), but with this approach the
amount of allocated rangesets depends on the number of vCPUs, and
hence it's no longer bound by the hardware anymore.

I assume that this will change further to support SR-IOV devices that
might have even more VF BARs per PF, so I have to look at further
patches.

> Amends: 622bdd962822 ("vpci/header: handle p2m range sets per BAR")
> Signed-off-by: Mykyta Poturai <mykyta_poturai@epam.com>
> Signed-off-by: Stewart Hildebrand <stewart.hildebrand@amd.com>
> ---
> v2->v3:
> * synced with BAR write with memory decoding enabled series[1]
> * add Amends tag
> * remove unused variable i due to rebasing over 998060dd9101 ("vPCI:
>   move vpci_init_capabilities() to a separate file")
> * enclose entire struct vpci_vcpu inside #ifdef __XEN__
> * s/bar_mem/mem/
> * use ARRAY_SIZE
> * put init/destroy in functions
> * only allocate for domains with vPCI and idle domain
> * replace 'if ( !mem ) continue;' with ASSERT
> 
> v1->v2
> * new patch
> 
> [1]: https://patchew.org/Xen/20260406191203.97662-1-stewart.hildebrand@amd.com/
> ---
>  xen/common/domain.c        |  5 +++
>  xen/drivers/vpci/header.c  | 67 ++++++++++++++------------------------
>  xen/drivers/vpci/vpci.c    | 34 ++++++++++++++++---
>  xen/include/xen/rangeset.h |  7 ++++
>  xen/include/xen/vpci.h     | 10 ++++--
>  5 files changed, 73 insertions(+), 50 deletions(-)
> 
> diff --git a/xen/common/domain.c b/xen/common/domain.c
> index bb9e210c28..5ef7db8f09 100644
> --- a/xen/common/domain.c
> +++ b/xen/common/domain.c
> @@ -455,6 +455,8 @@ static int vcpu_teardown(struct vcpu *v)
>   */
>  static void vcpu_destroy(struct vcpu *v)
>  {
> +    vpci_vcpu_destroy(v);
> +
>      free_vcpu_struct(v);
>  }
>  
> @@ -512,6 +514,9 @@ struct vcpu *vcpu_create(struct domain *d, unsigned int vcpu_id)
>      if ( arch_vcpu_create(v) != 0 )
>          goto fail_sched;
>  
> +    if ( vpci_vcpu_init(v) )
> +        goto fail_sched;
> +
>      d->vcpu[vcpu_id] = v;
>      if ( vcpu_id != 0 )
>      {
> diff --git a/xen/drivers/vpci/header.c b/xen/drivers/vpci/header.c
> index 5d5ba5c016..5bfb541b6a 100644
> --- a/xen/drivers/vpci/header.c
> +++ b/xen/drivers/vpci/header.c
> @@ -196,6 +196,7 @@ bool vpci_process_pending(struct vcpu *v)
>      for ( i = 0; i < ARRAY_SIZE(header->bars); i++ )
>      {
>          struct vpci_bar *bar = &header->bars[i];
> +        struct rangeset *mem = v->vpci.mem[i];
>          struct map_data data = {
>              .d = v->domain,
>              .map = v->vpci.cmd & PCI_COMMAND_MEMORY,
> @@ -203,10 +204,10 @@ bool vpci_process_pending(struct vcpu *v)
>          };
>          int rc;
>  
> -        if ( rangeset_is_empty(bar->mem) )
> +        if ( rangeset_is_empty(mem) )
>              continue;
>  
> -        rc = rangeset_consume_ranges(bar->mem, map_range, &data);
> +        rc = rangeset_consume_ranges(mem, map_range, &data);
>  
>          if ( rc == -ERESTART )
>          {
> @@ -224,8 +225,8 @@ bool vpci_process_pending(struct vcpu *v)
>  
>              /* Clean all the rangesets */
>              for ( i = 0; i < ARRAY_SIZE(header->bars); i++ )
> -                if ( !rangeset_is_empty(header->bars[i].mem) )
> -                     rangeset_purge(header->bars[i].mem);
> +                if ( !rangeset_is_empty(v->vpci.mem[i]) )
> +                     rangeset_purge(v->vpci.mem[i]);
>  
>              v->vpci.pdev = NULL;
>  
> @@ -260,13 +261,14 @@ static int __init apply_map(struct domain *d, const struct pci_dev *pdev,
>      for ( i = 0; i < ARRAY_SIZE(header->bars); i++ )
>      {
>          struct vpci_bar *bar = &header->bars[i];
> +        struct rangeset *mem = current->vpci.mem[i];
>          struct map_data data = { .d = d, .map = true, .bar = bar };
>  
> -        if ( rangeset_is_empty(bar->mem) )
> +        if ( rangeset_is_empty(mem) )
>              continue;
>  
> -        while ( (rc = rangeset_consume_ranges(bar->mem, map_range,
> -                                              &data)) == -ERESTART )
> +        while ( (rc = rangeset_consume_ranges(mem, map_range, &data)) ==
> +                -ERESTART )
>          {
>              /*
>               * It's safe to drop and reacquire the lock in this context
> @@ -331,13 +333,13 @@ int vpci_modify_bars(const struct pci_dev *pdev, uint16_t cmd, bool rom_only)
>      for ( i = 0; i < ARRAY_SIZE(header->bars); i++ )
>      {
>          struct vpci_bar *bar = &header->bars[i];
> +        struct rangeset *mem = current->vpci.mem[i];
>          unsigned long start = PFN_DOWN(bar->addr);
>          unsigned long end = PFN_DOWN(bar->addr + bar->size - 1);
>          unsigned long start_guest = PFN_DOWN(bar->guest_addr);
>          unsigned long end_guest = PFN_DOWN(bar->guest_addr + bar->size - 1);
>  
> -        if ( !bar->mem )
> -            continue;
> +        ASSERT(mem);
>  
>          if ( !MAPPABLE_BAR(bar) ||
>               (rom_only ? bar->type != VPCI_BAR_ROM
> @@ -354,7 +356,7 @@ int vpci_modify_bars(const struct pci_dev *pdev, uint16_t cmd, bool rom_only)
>              continue;
>          }
>  
> -        ASSERT(rangeset_is_empty(bar->mem));
> +        ASSERT(rangeset_is_empty(mem));
>  
>          /*
>           * Make sure that the guest set address has the same page offset
> @@ -369,7 +371,7 @@ int vpci_modify_bars(const struct pci_dev *pdev, uint16_t cmd, bool rom_only)
>              return -EINVAL;
>          }
>  
> -        rc = rangeset_add_range(bar->mem, start_guest, end_guest);
> +        rc = rangeset_add_range(mem, start_guest, end_guest);
>          if ( rc )
>          {
>              printk(XENLOG_G_WARNING "Failed to add [%lx, %lx]: %d\n",
> @@ -380,12 +382,12 @@ int vpci_modify_bars(const struct pci_dev *pdev, uint16_t cmd, bool rom_only)
>          /* Check for overlap with the already setup BAR ranges. */
>          for ( j = 0; j < i; j++ )
>          {
> -            struct vpci_bar *prev_bar = &header->bars[j];
> +            struct rangeset *prev_mem = current->vpci.mem[j];
>  
> -            if ( rangeset_is_empty(prev_bar->mem) )
> +            if ( rangeset_is_empty(prev_mem) )
>                  continue;
>  
> -            rc = rangeset_remove_range(prev_bar->mem, start_guest, end_guest);
> +            rc = rangeset_remove_range(prev_mem, start_guest, end_guest);
>              if ( rc )
>              {
>                  gprintk(XENLOG_WARNING,
> @@ -395,7 +397,7 @@ int vpci_modify_bars(const struct pci_dev *pdev, uint16_t cmd, bool rom_only)
>              }
>          }
>  
> -        rc = pci_sanitize_bar_memory(bar->mem);
> +        rc = pci_sanitize_bar_memory(mem);
>          if ( rc )
>          {
>              gprintk(XENLOG_WARNING,
> @@ -412,14 +414,14 @@ int vpci_modify_bars(const struct pci_dev *pdev, uint16_t cmd, bool rom_only)
>          unsigned long end = PFN_DOWN(vmsix_table_addr(pdev->vpci, i) +
>                                       vmsix_table_size(pdev->vpci, i) - 1);
>  
> -        for ( j = 0; j < ARRAY_SIZE(header->bars); j++ )
> +        for ( j = 0; j < ARRAY_SIZE(current->vpci.mem); j++ )

You make a non-trivial use of current in vpci_modify_bars(), maybe you
should consider introducing a local variable for it:

struct *vcpu curr = current;

current expands to a call to get_cpu_info(9, which is better to avoid
doing repeatedly, specially in the context above which is used as a
loop upper bound.

>          {
> -            const struct vpci_bar *bar = &header->bars[j];
> +            struct rangeset *mem = current->vpci.mem[j];
>  
> -            if ( rangeset_is_empty(bar->mem) )
> +            if ( rangeset_is_empty(mem) )
>                  continue;
>  
> -            rc = rangeset_remove_range(bar->mem, start, end);
> +            rc = rangeset_remove_range(mem, start, end);
>              if ( rc )
>              {
>                  gprintk(XENLOG_WARNING,
> @@ -469,8 +471,9 @@ int vpci_modify_bars(const struct pci_dev *pdev, uint16_t cmd, bool rom_only)
>                  for ( j = 0; j < ARRAY_SIZE(header->bars); j++)
>                  {
>                      const struct vpci_bar *bar = &header->bars[j];
> +                    struct rangeset *mem = current->vpci.mem[j];
>  
> -                    if ( !rangeset_overlaps_range(bar->mem, start, end) ||
> +                    if ( !rangeset_overlaps_range(mem, start, end) ||
>                           /*
>                            * If only the ROM enable bit is toggled check against
>                            * other BARs in the same device for overlaps, but not
> @@ -481,7 +484,7 @@ int vpci_modify_bars(const struct pci_dev *pdev, uint16_t cmd, bool rom_only)
>                            bar->type == VPCI_BAR_ROM) )
>                          continue;
>  
> -                    rc = rangeset_remove_range(bar->mem, start, end);
> +                    rc = rangeset_remove_range(mem, start, end);
>                      if ( rc )
>                      {
>                          gprintk(XENLOG_WARNING,
> @@ -734,18 +737,6 @@ static void cf_check rom_write(
>      }
>  }
>  
> -static int bar_add_rangeset(const struct pci_dev *pdev, struct vpci_bar *bar,
> -                            unsigned int i)
> -{
> -    char str[32];
> -
> -    snprintf(str, sizeof(str), "%pp:BAR%u", &pdev->sbdf, i);
> -
> -    bar->mem = rangeset_new(pdev->domain, str, RANGESETF_no_print);
> -
> -    return !bar->mem ? -ENOMEM : 0;
> -}
> -
>  int vpci_init_header(struct pci_dev *pdev)
>  {
>      uint16_t cmd;
> @@ -856,10 +847,6 @@ int vpci_init_header(struct pci_dev *pdev)
>          else
>              bars[i].type = VPCI_BAR_MEM32;
>  
> -        rc = bar_add_rangeset(pdev, &bars[i], i);
> -        if ( rc )
> -            goto fail;
> -
>          rc = pci_size_mem_bar(pdev->sbdf, reg, &addr, &size,
>                                (i == num_bars - 1) ? PCI_BAR_LAST : 0);
>          if ( rc < 0 )
> @@ -913,12 +900,6 @@ int vpci_init_header(struct pci_dev *pdev)
>                                 4, rom);
>          if ( rc )
>              rom->type = VPCI_BAR_EMPTY;
> -        else
> -        {
> -            rc = bar_add_rangeset(pdev, rom, num_bars);
> -            if ( rc )
> -                goto fail;
> -        }
>      }
>      else if ( !is_hwdom )
>      {
> diff --git a/xen/drivers/vpci/vpci.c b/xen/drivers/vpci/vpci.c
> index 0ac9ec8b04..d069ca6d9c 100644
> --- a/xen/drivers/vpci/vpci.c
> +++ b/xen/drivers/vpci/vpci.c
> @@ -24,6 +24,35 @@
>  
>  #ifdef __XEN__
>  
> +void vpci_vcpu_destroy(struct vcpu *v)
> +{
> +    if ( !has_vpci(v->domain) && !is_idle_domain(v->domain) )
> +        return;
> +
> +    for ( unsigned int i = 0; i < ARRAY_SIZE(v->vpci.mem); i++ )
> +        RANGESET_DESTROY(v->vpci.mem[i]);
> +}
> +
> +int vpci_vcpu_init(struct vcpu *v)
> +{
> +    unsigned int i;
> +
> +    if ( !has_vpci(v->domain) && !is_idle_domain(v->domain) )
> +        return 0;
> +
> +    for ( i = 0; i < ARRAY_SIZE(v->vpci.mem); i++ )
> +    {
> +        char str[32];
> +
> +        snprintf(str, sizeof(str), "%pv:BAR%u", v, i);
> +        v->vpci.mem[i] = rangeset_new(v->domain, str, RANGESETF_no_print);
> +        if ( !v->vpci.mem[i] )
> +            return -ENOMEM;
> +    }
> +
> +    return 0;
> +}
> +
>  #ifdef CONFIG_HAS_VPCI_GUEST_SUPPORT
>  static int assign_virtual_sbdf(struct pci_dev *pdev)
>  {
> @@ -89,8 +118,6 @@ struct vpci_register *vpci_get_register(const struct vpci *vpci,
>  
>  void vpci_deassign_device(struct pci_dev *pdev)
>  {
> -    unsigned int i;
> -
>      ASSERT(rw_is_write_locked(&pdev->domain->pci_lock));
>  
>      if ( !has_vpci(pdev->domain) || !pdev->vpci )
> @@ -116,9 +143,6 @@ void vpci_deassign_device(struct pci_dev *pdev)
>      }
>      spin_unlock(&pdev->vpci->lock);
>  
> -    for ( i = 0; i < ARRAY_SIZE(pdev->vpci->header.bars); i++ )
> -        rangeset_destroy(pdev->vpci->header.bars[i].mem);
> -
>      xfree(pdev->vpci);
>      pdev->vpci = NULL;
>  }
> diff --git a/xen/include/xen/rangeset.h b/xen/include/xen/rangeset.h
> index 817505badf..f01e00ec92 100644
> --- a/xen/include/xen/rangeset.h
> +++ b/xen/include/xen/rangeset.h
> @@ -40,6 +40,13 @@ struct rangeset *rangeset_new(
>  void rangeset_destroy(
>      struct rangeset *r);
>  
> +/* Destroy a rangeset, and zero the pointer to it. */
> +#define RANGESET_DESTROY(r)  \
> +    ({                       \
> +        rangeset_destroy(r); \
> +        (r) = NULL;          \

You want to use a construct similar to what XFREE() does:

#define RANGESET_DESTROY(r) do {            \
    struct rangeset *_r_ = (r);             \
    (r) = NULL;                             \
    rangeset_destroy(_r_);                  \
} while ( false )

After the GhostRace vulnerability we NULL the variable before freeing
the data associated with it.

Thanks, Roger.


From xen-devel-bounces@lists.xenproject.org Wed Apr 22 11:23:24 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 22 Apr 2026 11:23:24 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1290290.1569906 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wFVfq-0002hv-1S; Wed, 22 Apr 2026 11:23:18 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1290290.1569906; Wed, 22 Apr 2026 11:23: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 1wFVfp-0002ho-UX; Wed, 22 Apr 2026 11:23:17 +0000
Received: by outflank-mailman (input) for mailman id 1290290;
 Wed, 22 Apr 2026 11:23:16 +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 1wFVfo-0002hi-3i
 for xen-devel@lists.xenproject.org; Wed, 22 Apr 2026 11:23:16 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wFVfn-00AnSm-CS
 for xen-devel@lists.xenproject.org; Wed, 22 Apr 2026 13:23:15 +0200
Received: from [10.42.69.8] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <Michal.Orzel@amd.com>)
 id 69e8af90-e002-0a2a0a5209dd-0a2a450893f0-32
 for <xen-devel@lists.xenproject.org>; Wed, 22 Apr 2026 13:23:14 +0200
Received: from [52.101.85.20]
 (helo=BYAPR05CU005.outbound.protection.outlook.com)
 by tlsNG-c1860d.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.1)
 (envelope-from <Michal.Orzel@amd.com>)
 id 69e8afa0-63b5-0a2a45080019-34655514b8f8-3
 for <xen-devel@lists.xenproject.org>; Wed, 22 Apr 2026 13:23:14 +0200
Received: from IA1P220CA0005.NAMP220.PROD.OUTLOOK.COM (2603:10b6:208:461::13)
 by MW4PR12MB6753.namprd12.prod.outlook.com (2603:10b6:303:1ec::15)
 with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9846.18; Wed, 22 Apr
 2026 11:23:03 +0000
Received: from BL02EPF0001A102.namprd05.prod.outlook.com
 (2603:10b6:208:461:cafe::45) by IA1P220CA0005.outlook.office365.com
 (2603:10b6:208:461::13) with Microsoft SMTP Server (version=TLS1_3,
 cipher=TLS_AES_256_GCM_SHA384) id 15.20.9791.48 via Frontend Transport; Wed,
 22 Apr 2026 11:23:03 +0000
Received: from satlexmb07.amd.com (165.204.84.17) by
 BL02EPF0001A102.mail.protection.outlook.com (10.167.241.134) with Microsoft
 SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id
 15.20.9846.18 via Frontend Transport; Wed, 22 Apr 2026 11:23:01 +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.17; Wed, 22 Apr
 2026 06:22:56 -0500
Received: from [10.71.194.215] (10.180.168.240) by satlexmb07.amd.com
 (10.181.42.216) with Microsoft SMTP Server id 15.2.2562.17 via Frontend
 Transport; Wed, 22 Apr 2026 06:22:39 -0500
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@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=DHw/P4yk9anFQZ33L/SMpMZ0m1bC4EflRzRbcrYq2x93PrGykqeJiDNS38ErAzIqUk++gcbRLgLKJKMEyF3RRmYn5k4sgAubff8yG2+fgAalVGwyPoj9/v+JM6S97PeLSMf8TTTLy8/thwilHLUsGUaevjP7xAOL6EYxIeQpCi1buizWQufm9H3PpoOPyhvu5v9xp9E05YMgYW5SrlhdQrNDk98RvX+c2oIzcuzzCGQAdtj1V5qGGVTpnlCJSuLgRQbZsuoqRveAxvGVUq6bE2XluZMt1lBJ7Haak3M7P0mSvpRx6cp3J1dz5Zp8mgwAhCYGnWrzwaZLxMnp0zct0Q==
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com;
 s=arcselector10001;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1;
 bh=fWXmh2Ux0eSa3Of68oEOgnlsUVp+WgHkf37ef/ws9lU=;
 b=f+wpxPidQ9fd1TATzQ9fDMdsRs6LyOMJQiQijoJn5nL9GUeeoLZpMcxJwlYYF4EZLe8kXDxvSToG4ZYv+MmICpi6XC3+YU0IH5DAHfkOF/4eYVI82pDQv0CAmJttwjxHkWZ9Op2ead2i7j7CJ0MGO08/W8v1XFFmwZudKhe6L2JLyzmUfV+5BbT3D8K5bQ+m8FaWXbM/0R6iU/+ODzACvZdhELyzN+oMhqrhpiMtlxMsdiifoh1AGHAG8BoNiWmP1WnxzYTDpy2GoZIkufZPXNYWBJIal0DUGN5sjXqfuuQ+7bm44URGIiQai8dxEJxlqHr8LTtEBwb1PO+19C/7Ug==
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=fWXmh2Ux0eSa3Of68oEOgnlsUVp+WgHkf37ef/ws9lU=;
 b=iye/9YXLqLqnFwspmeJjE/bl0A39Iht8hoev+jG3+BBDi/8T3nd6dO58FCbMnp6MIKpHEDmuAuZEtZo23WtN7BewL6g4a+wsoZyFeCCYTT01IZh0obRZbkKO7sGtovELJZH/tSRYp/p5zPoIwf7NEndWdf5YjkoskBx7hhcRa7w=
X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 165.204.84.17)
 smtp.mailfrom=amd.com; dkim=none (message not signed)
 header.d=none;dmarc=pass action=none header.from=amd.com;
Received-SPF: Pass (protection.outlook.com: domain of amd.com designates
 165.204.84.17 as permitted sender) receiver=protection.outlook.com;
 client-ip=165.204.84.17; helo=satlexmb07.amd.com; pr=C
Message-ID: <26a29e71-bc47-43ab-ada0-19dc1d2a3f1c@amd.com>
Date: Wed, 22 Apr 2026 13:22:28 +0200
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH v3 2/4] xen/drivers/char/pl011: fix IRQ registration
 failure propagation
To: Oleksii Moisieiev <Oleksii_Moisieiev@epam.com>,
	"xen-devel@lists.xenproject.org" <xen-devel@lists.xenproject.org>
CC: Bertrand Marquis <bertrand.marquis@arm.com>, Julien Grall
	<julien@xen.org>, Stefano Stabellini <sstabellini@kernel.org>, Volodymyr
 Babchuk <Volodymyr_Babchuk@epam.com>
References: <cover.1776850201.git.oleksii_moisieiev@epam.com>
 <6945fddd3a6df7ed9d9ca9efa7c126ab210d0420.1776850201.git.oleksii_moisieiev@epam.com>
From: "Orzel, Michal" <michal.orzel@amd.com>
Content-Language: en-US
In-Reply-To: <6945fddd3a6df7ed9d9ca9efa7c126ab210d0420.1776850201.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: BL02EPF0001A102:EE_|MW4PR12MB6753:EE_
X-MS-Office365-Filtering-Correlation-Id: ff57c5a4-383c-4bb5-525a-08dea06183a6
X-MS-Exchange-SenderADCheck: 1
X-MS-Exchange-AntiSpam-Relay: 0
X-Microsoft-Antispam:
	BCL:0;ARA:13230040|1800799024|36860700016|376014|82310400026|22082099003|18002099003|56012099003;
X-Microsoft-Antispam-Message-Info:
	g3fidY6LPBtgWPK9evnlSuuCsJ7GKJeU0pb04Xli0wNm98K7/axCwS+5x8t86tQWY0Qm+5bjPtF705B4DG9wOMRhGzvMzVBQhmPT39coCVj2IMXNiQvIjVdwAxpE9xOuOlCuzVTShONgyd8bwajmXjg9okZpUwvzngcyYOyr8yOh8SzHnMszKQv2dgkRAdWSKl3NwtoVKQr62eSKoxQ5QUGwjxN8bN63GF2yPsqGyewJb7GP9h1et7bVXd0NLGv//wbDzShu1p5e5yyzmt2pf5+bq07xKTAdDa6VZ/SxmtbdEa9CA5+cXZzXJ2kzyfSPWDbyxyFUlNvblpAA79TIG7/8eYiNWy/sTdOlZFlsF9E0EPCQOKUbb1T08Q+A8f1n6eHwrqa/L4XZ1GQE57jgqfGO7t74YDPEids2SHlO4b3VHa8B09TdtptWu2ogaCJo3tbOvjezpxVJOglPJo9spxtRuEyQZCUKjWwqkaMZiJZSnq5vF5ZWsWTA5mXn1uR4Wb4f0MwiI2RcSlMk2fBU36nE4DCHfpCRik/80PDvbQNxPXaTW0+PpKAO61gIdpW0PLeZ+TvSdu1bWxpwnXvHWUTWMxLMesDLbNItaHjHDFLvBtbKxi1tQGz5tA0j8/u5zmTQ5dVgozyxUPehJSmy8jvP243oBGJf+WCfS7VRPyXb6Seo80iHbtNZZTqjL2GM35DJGpWfNroDCaQh1dfibekDUz/ra7gx8GBtIf3BTaElGymZ4VHRRnFyBep2T/Ok8FEpgMS3WFh517Yev46mkw==
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)(36860700016)(376014)(82310400026)(22082099003)(18002099003)(56012099003);DIR:OUT;SFP:1101;
X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1
X-MS-Exchange-AntiSpam-MessageData-0:
	Lf38PclPFbhwnndJt4hEU5mvK5/JY5FXa2Aj7XiGrZrCLXhf02QrWxEumYjRyBGKXM5+sAHS8C1f5kLMwz7XMx5rGcR7yhyNZZc4NzymptmWeul2eMlU0As99b6qA6llzodjcPIQ/+Rz4cYW7kFH6i6VkVnTrxYIGQeNNvsXj2n/oqLvA5QG2Ll/Eqk68KPI3Zr8o9ewCj66PfsmV3SoFmFOiaUUh25h92/DNI7E1FmVe7CSmcOrQLVC5T8xuBFltrta5Um58mTQQO/d1jQjTWO0C2gpgx+RLEnyQ8Uq9gXzli37zHzJUwq+6LNJzPMa953twle4isRfSqzdnuHsmNzt8IaOJEMeqq3KnQPw/87Jf9THbDjgYYrjzOn3hAYzKYBrf/G2OLhefKTPqeuIgrG2eYWZpM7J2Whaav/plJC9urjj2xgCgxyEXkww/CfI
X-OriginatorOrg: amd.com
X-MS-Exchange-CrossTenant-OriginalArrivalTime: 22 Apr 2026 11:23:01.3741
 (UTC)
X-MS-Exchange-CrossTenant-Network-Message-Id: ff57c5a4-383c-4bb5-525a-08dea06183a6
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:
	BL02EPF0001A102.namprd05.prod.outlook.com
X-MS-Exchange-CrossTenant-AuthAs: Anonymous
X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem
X-MS-Exchange-Transport-CrossTenantHeadersStamped: MW4PR12MB6753
X-purgate-ID: tlsNG-c1860d/1776856994-38567DB1-45CDB93E/0/0
X-purgate-type: clean
X-purgate-size: 2273



On 22/04/2026 11:33, Oleksii Moisieiev wrote:
> In pl011_init_postirq(), two code paths could reach the
> interrupt-unmask write to IMSC without a handler being registered:
> 
> - When no valid IRQ number was provided (uart->irq <= 0), the original
>   positive-condition guard (if uart->irq > 0) skipped the irqaction
>   setup but still fell through to the IMSC write, unmasking
>   RTI|OEI|BEI|PEI|FEI|TXI|RXI with no handler installed.
> 
> - When setup_irq() returned an error, only an error message was
>   printed and execution continued to the IMSC write, arming all
>   hardware interrupt lines with no handler to service them. On
>   platforms where the GIC receives these asserted lines, the result
>   is either repeated spurious-interrupt warnings or an unhandled
>   interrupt fault.
> 
> Restructure pl011_init_postirq() to use early returns: return
> immediately when no valid IRQ is provided, and return after logging
> the error when setup_irq() fails. The interrupt-enable write to IMSC
> is only reached when IRQ registration succeeds.
> 
> Signed-off-by: Oleksii Moisieiev <oleksii_moisieiev@epam.com>
> ---
> 
> Changes in v3:
> - clear pending error interrupts before setup_irq for pl011
> 
>  xen/drivers/char/pl011.c | 22 ++++++++++++++--------
>  1 file changed, 14 insertions(+), 8 deletions(-)
> 
> diff --git a/xen/drivers/char/pl011.c b/xen/drivers/char/pl011.c
> index 5f9913367d..9e308f4936 100644
> --- a/xen/drivers/char/pl011.c
> +++ b/xen/drivers/char/pl011.c
> @@ -150,18 +150,24 @@ static void __init pl011_init_postirq(struct serial_port *port)
>      struct pl011 *uart = port->uart;
>      int rc;
>  
> -    if ( uart->irq > 0 )
> -    {
> -        uart->irqaction.handler = pl011_interrupt;
> -        uart->irqaction.name    = "pl011";
> -        uart->irqaction.dev_id  = port;
> -        if ( (rc = setup_irq(uart->irq, 0, &uart->irqaction)) != 0 )
> -            printk("ERROR: Failed to allocate pl011 IRQ %d\n", uart->irq);
> -    }
> +    /* Don't unmask interrupts if no valid irq was provided */
> +    if ( uart->irq <= 0 )
uart->irq is unsigned, so it should be compared to 0. Can be fixed on commit.

Reviewed-by: Michal Orzel <michal.orzel@amd.com>

~Michal



From xen-devel-bounces@lists.xenproject.org Wed Apr 22 11:26:51 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 22 Apr 2026 11:26:51 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1290301.1569917 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wFVjE-0003Hx-J1; Wed, 22 Apr 2026 11:26:48 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1290301.1569917; Wed, 22 Apr 2026 11:26: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 1wFVjE-0003Hq-FC; Wed, 22 Apr 2026 11:26:48 +0000
Received: by outflank-mailman (input) for mailman id 1290301;
 Wed, 22 Apr 2026 11:26:47 +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 1wFVjD-0003Hk-7c
 for xen-devel@lists.xenproject.org; Wed, 22 Apr 2026 11:26:47 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wFVjC-00AoP0-Ki
 for xen-devel@lists.xenproject.org; Wed, 22 Apr 2026 13:26:46 +0200
Received: from [10.42.69.10] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <Michal.Orzel@amd.com>)
 id 69e8b066-2eae-0a2a0a5409dd-0a2a450ab728-48
 for <xen-devel@lists.xenproject.org>; Wed, 22 Apr 2026 13:26:46 +0200
Received: from [40.107.208.1]
 (helo=PH0PR06CU001.outbound.protection.outlook.com)
 by tlsNG-4011c0.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.1)
 (envelope-from <Michal.Orzel@amd.com>)
 id 69e8b074-56b3-0a2a450a0019-286bd0015bed-3
 for <xen-devel@lists.xenproject.org>; Wed, 22 Apr 2026 13:26:46 +0200
Received: from BN9PR03CA0519.namprd03.prod.outlook.com (2603:10b6:408:131::14)
 by PH7PR12MB6977.namprd12.prod.outlook.com (2603:10b6:510:1b7::9)
 with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9846.16; Wed, 22 Apr
 2026 11:26:40 +0000
Received: from BN2PEPF00004FBA.namprd04.prod.outlook.com
 (2603:10b6:408:131:cafe::72) by BN9PR03CA0519.outlook.office365.com
 (2603:10b6:408:131::14) with Microsoft SMTP Server (version=TLS1_3,
 cipher=TLS_AES_256_GCM_SHA384) id 15.20.9791.48 via Frontend Transport; Wed,
 22 Apr 2026 11:26:39 +0000
Received: from satlexmb08.amd.com (165.204.84.17) by
 BN2PEPF00004FBA.mail.protection.outlook.com (10.167.243.180) with Microsoft
 SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id
 15.20.9846.18 via Frontend Transport; Wed, 22 Apr 2026 11:26:39 +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.17; Wed, 22 Apr
 2026 06:26:39 -0500
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.17; Wed, 22 Apr
 2026 04:26:38 -0700
Received: from [10.71.194.215] (10.180.168.240) by satlexmb08.amd.com
 (10.181.42.217) with Microsoft SMTP Server id 15.2.2562.17 via Frontend
 Transport; Wed, 22 Apr 2026 06:26:28 -0500
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@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=x2ei8T955erKzQrVXpmNOhj4yFkUpr+ZjZQRCFTgJLKKXn6/x2CddfsKGe1AjQxsoPmr7x0tLfnKW0PCPABClE0SU0ibHi8Lx9sWwtnJxGdT14J7m1KMqomcxCb+DDAOnjCdZYQk/+E8KYcWCq5NeOWl3CzNiZ9LwR6ez70g8roRPx9F1LoNHCsbWJAPYgO2kfQL4Jo8/ubqcN2hPdNlRxfm2GgBwFhD8tpf5zJ5xRkZePDQzFv+tcIOHd/wO1dROSAtXhxhlKRrvT35+W3pmrp3lzNMmJNa/5tldPaziwmMijeONF81Cjg70tQRxjh7F7uQs1kDKJ+ekWP1pa1JFQ==
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com;
 s=arcselector10001;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1;
 bh=Mcud/qhJpljdbjPwtApNDzmwotYsEHs7Q7isGPtEHG0=;
 b=QgUta9F0bdOcu+w3XakpVjcfIfS4LXwBCruL1kzpMsePA9F69SZ2vCsPL3r3V21c2cJvMZOrzeCeYCkPugvAhp6ghANa9orbCVvFkHA606wcuT8jGEPVSW5Mjk2cBQKzZuT9byD7lXHtINfXmiQBlhGAeK4TJmVyoSazWknZ4wg2KzeoQF4dy12AOaZ9W2DFCUt/CmpZ+82FgSUfui1nZwQwYfqB8o1Fiz1V1IxNZAVJtZ0tvkQQU3DXq7FARDv0gE/Jw75xLPSNZ8WDjfP7H6CxcUnPKFSEDMOsp+Ib8pecJ/kGDjgWF0HrptInMSQzkawkDi565WJjZ0dDOlG8lA==
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=Mcud/qhJpljdbjPwtApNDzmwotYsEHs7Q7isGPtEHG0=;
 b=les+MVLQuoqonlsoJ5JVtybJ3DksJDNs3+UtjoFhGCki3vFtLiAkGPnKgfsUX6PqQIiWpKA08agPv4ZN/2bR4xzEPBWF4XU7iAAKMLZVkcA05uJx0UeqQOVKHuY7dPnnSHXVHY/QAn5fOS3QKrjaHvB/DeyWTqoHODa7xTBbIrY=
X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 165.204.84.17)
 smtp.mailfrom=amd.com; dkim=none (message not signed)
 header.d=none;dmarc=pass action=none header.from=amd.com;
Received-SPF: Pass (protection.outlook.com: domain of amd.com designates
 165.204.84.17 as permitted sender) receiver=protection.outlook.com;
 client-ip=165.204.84.17; helo=satlexmb08.amd.com; pr=C
Message-ID: <9200d75d-1f5a-441c-9e69-a1764eeed81b@amd.com>
Date: Wed, 22 Apr 2026 13:26:24 +0200
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH v3 3/4] xen/drivers/char/cadence-uart: fix IRQ
 registration failure propagation
To: Oleksii Moisieiev <Oleksii_Moisieiev@epam.com>,
	"xen-devel@lists.xenproject.org" <xen-devel@lists.xenproject.org>
CC: Bertrand Marquis <bertrand.marquis@arm.com>, Julien Grall
	<julien@xen.org>, Stefano Stabellini <sstabellini@kernel.org>, "Volodymyr
 Babchuk" <Volodymyr_Babchuk@epam.com>
References: <cover.1776850201.git.oleksii_moisieiev@epam.com>
 <fc65ea2c9dcc7c3bc632c8c1a9f14eeb5de6d9b9.1776850201.git.oleksii_moisieiev@epam.com>
From: "Orzel, Michal" <michal.orzel@amd.com>
Content-Language: en-US
In-Reply-To: <fc65ea2c9dcc7c3bc632c8c1a9f14eeb5de6d9b9.1776850201.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: BN2PEPF00004FBA:EE_|PH7PR12MB6977:EE_
X-MS-Office365-Filtering-Correlation-Id: ac9f5c77-7278-4ae2-5fda-08dea06205d6
X-MS-Exchange-SenderADCheck: 1
X-MS-Exchange-AntiSpam-Relay: 0
X-Microsoft-Antispam:
	BCL:0;ARA:13230040|1800799024|376014|82310400026|36860700016|56012099003|18002099003|22082099003;
X-Microsoft-Antispam-Message-Info:
	ph6PHYBDVbYcZaNyJuXdzqj0SDaSRbnUEnPfqG+D7Dnozt/ZWf172poTasf+gYOZSbOV2QpwbgASEOplIcX9V0fU07MgCSqEDBhHPF3mYPMQUhQBfOjBL6pQFSna95h4CuwYKsekgWNkV2unL7hDH6DXcSMGImePrebS1UTXi5KMlatDKhUxR7uy0fteXIe0FI191MaPQPW8JQZBF97d93DGOKtF5YoOAdywpVNiFk5lh76zZ+efRhNbCTC7VqU5NybT5FVonLy4DN4EIT5U+baHdDbOosikXB+qa4pKers9hJbWvi25iqi0R+COg45Mxkk9UaGiIeOgi4Q9kMVFCdXKnvhxpsTJRoTsmnj4RBj+uwaKtjl5pplsbHJNCbJMmXeYpuLUm5Geg/hEiCM0SQNNNjYenZMNLnwjVBDatfWou+4ETF9pLxIppfuZvPBLQWHsNFbRreb6s+qVw/YFDSOKpAS39SfSK0CuGa8P8eUdXHu/yYZguvxX0ZrH46MHjx9iQzTvcQ3o42Mc0pwgkbq2Vf7wHh0QAhydCHhZve1hxoUBwE3c9Gpwyn9Nsdu4nMYDOqWBEmcaf7CHaXXcl5wtAZ4QxmqK78dQxlQNJzqspO0LiQGuL/HvnOWGmFN8LJlbyTpDU3G4uAxdrYGJDYftBFk/ifRoAE9SzR4ZCWJMqob7vn4gDDfNVViOINbmDzvO0ylDLNQTVhaV8yAEuhB7R2ZjLGX9vneFMMCt9Hknbau+8NCwhlYwR0IDePUh98xvUacS19PDWp0Q2c2ZgA==
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)(82310400026)(36860700016)(56012099003)(18002099003)(22082099003);DIR:OUT;SFP:1101;
X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1
X-MS-Exchange-AntiSpam-MessageData-0:
	z41JlxH8iIhA7kpleMFgCoJPlVnYVWYsNeA8sJsrlbfUkAdaT6RmMCzb1WMwIagR1x4Ea1+DlF36sTqo0+n4lNP0mleWMLDAgoCGkAV2NqpPt7Km/8aYh7mBqhC1LBBQJcSAVsoufUxnz/Mg4R9oKx1JgESHrCPFJoMLo9MaPV4uG+plVIVULhfhGNO2jAzonNI46vDsCxcU8w2PKGMHZtu6JEgJM1dnLB2/6fVthwu80H9cNf25S5AAupP949RuqzS/KLqx+2OuOzggucnZHKkSyveQi28JSbdY/8VYGWUgYfiXQf2czNYcQGLxTZDs8rCnYZjZYAOFZ/xg9Utas+2+RCI0gk72jo7yPGq6zJHjrjCEECChGKXlvTM9HOh7j/UQdiUjO92jKqPNid6Jq8830VyvPNsu3ULIWA4iCQJh8xP1aAmPl51YUEJmRTPC
X-OriginatorOrg: amd.com
X-MS-Exchange-CrossTenant-OriginalArrivalTime: 22 Apr 2026 11:26:39.7930
 (UTC)
X-MS-Exchange-CrossTenant-Network-Message-Id: ac9f5c77-7278-4ae2-5fda-08dea06205d6
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:
	BN2PEPF00004FBA.namprd04.prod.outlook.com
X-MS-Exchange-CrossTenant-AuthAs: Anonymous
X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem
X-MS-Exchange-Transport-CrossTenantHeadersStamped: PH7PR12MB6977
X-purgate-ID: tlsNG-4011c0/1776857206-CF1728B7-0E295FA9/0/0
X-purgate-type: clean
X-purgate-size: 1032



On 22/04/2026 11:33, Oleksii Moisieiev wrote:
> In cuart_init_postirq(), two code paths could reach the
> interrupt-enable write to IER without a handler being registered:
> 
> - When no valid IRQ number was provided (uart->irq <= 0), the original
>   positive-condition guard (if uart->irq > 0) skipped the irqaction
>   setup but still fell through to the IER write, enabling the receive
>   data interrupt with no handler installed.
> 
> - When setup_irq() returned an error, only an error message was
>   printed and execution continued to the IER write, arming the
>   receive hardware interrupt line with no handler to service it. On
>   platforms where the GIC receives this asserted line, the result is
>   either repeated spurious-interrupt warnings or an unhandled
>   interrupt fault.
> 
> Restructure cuart_init_postirq() to use early returns in both error
> paths.
> 
> Signed-off-by: Oleksii Moisieiev <oleksii_moisieiev@epam.com>
Reviewed-by: Michal Orzel <michal.orzel@amd.com>

~Michal



From xen-devel-bounces@lists.xenproject.org Wed Apr 22 11:27:14 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 22 Apr 2026 11:27:14 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1290309.1569925 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wFVje-0003hl-Pt; Wed, 22 Apr 2026 11:27:14 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1290309.1569925; Wed, 22 Apr 2026 11:27: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 1wFVje-0003he-Mi; Wed, 22 Apr 2026 11:27:14 +0000
Received: by outflank-mailman (input) for mailman id 1290309;
 Wed, 22 Apr 2026 11:27:13 +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.19db4f19bfb000f373@swg.vates.tech>)
 id 1wFVjc-0003hQ-Kj
 for xen-devel@lists.xenproject.org; Wed, 22 Apr 2026 11:27:12 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wFVjb-007Gm0-KT
 for xen-devel@lists.xenproject.org; Wed, 22 Apr 2026 13:27:11 +0200
Received: from [10.42.69.11] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1) (envelope-from
 <prod-mta-13.8631fc262581453bbf619ec5b2062170.19db4f19bfb000f373@swg.vates.tech>)
 id 69e8b08e-e002-0a2a0a5209dd-0a2a450bc23e-12
 for <xen-devel@lists.xenproject.org>; Wed, 22 Apr 2026 13:27:11 +0200
Received: from [185.255.28.34] (helo=prod-mta-13.swg-srv.net)
 by tlsNG-42698a.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.1)
 (envelope-from
 <prod-mta-13.8631fc262581453bbf619ec5b2062170.19db4f19bfb000f373@swg.vates.tech>)
 id 69e8b08f-212f-0a2a450b0019-b9ff1c2284c5-3
 for <xen-devel@lists.xenproject.org>; Wed, 22 Apr 2026 13:27:11 +0200
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
 19db4f19bfb000f373.002 for <xen-devel@lists.xenproject.org>
 (version=TLSv1.3 cipher=TLS_AES_256_GCM_SHA384);
 Wed, 22 Apr 2026 11:27:06 +0000
Received: from l14 (lfbn-lyo-1-414-55.w2-7.abo.wanadoo.fr [2.7.24.55])
 (Authenticated sender: anthony.perard)
 by mail2.vates.fr (Postfix) with ESMTPSA id 8550E8109B;
 Wed, 22 Apr 2026 13:27:05 +0200 (CEST)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@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=8ZWCJ8XJGt/kkm5qvDNUOLmiI7V87axTpQnRjjcZ+cg=;
 h=from:subject:date:message-id:to:cc:mime-version:content-type:in-reply-to:references:feedback-id;
 b=gPjWNnsecyvqLtewSXYvFuUw4uCwhPYhF/WX9TyNLZFeCzvEDLiQNC7lBVDIrdvLQvIWqr60R
 QbErDWDppi6g1wFPnJTIqv9kCfE9KF7JrsQipB+IokYiAZD+eYskEh8LOnE32wrj8pOvz/Ud2zn
 4yb3m+Jlh5JmNqFpS+znfPZcFX+vSmj3Bt2LNnRbD5KpCTC9CivorNW+adPuluspZqymwkq9L4F
 xGg1dxe0AVJ4KvaHnQO3gcv0zmbTowfRVhxLo6Cvw7Nt372U6LI4msJ3Vz2vf31l4Ym/5TfKbB6
 BFpVH8Esx86cQ+ZO823As8pXIaKSS3UCIZFIDafjg9PQ==
X-Zone-Loop: b66acdbdfb35d9c841289f9d34cb577c64089a752c08
x-campaign-type: default
x-transaction-id: ee6e6152-d5b6-4c3b-b821-0fb8b826899b
x-swg-uid: 01-37bc3583-9b50-43ef-8bde-189d1569f1fe
X-Mailer: Sweego
Message-ID:
 <1776857226.8631fc262581453bbf619ec5b2062170.19db4f19bfb000f373@vates.tech>
x-swg-bid: 1776857226.8631fc262581453bbf619ec5b2062170.19db4f19bfb000f373
Feedback-ID: default:8631fc262581453bbf619ec5b2062170:Sweego
x-campaign-id: default
x-client-id: 8631fc262581453bbf619ec5b2062170
X-Originating-IP: [37.26.189.201]
Date: Wed, 22 Apr 2026 13:27:05 +0200
From: Anthony PERARD <anthony.perard@vates.tech>
To: Roger Pau =?iso-8859-1?Q?Monn=E9?= <roger.pau@citrix.com>
Cc: Jan Beulich <jbeulich@suse.com>, xen-devel@lists.xenproject.org
Subject: Re: [PATCH] tools/xenpm: fix FreeBSD build
References: <20260421153224.36368-1-roger.pau@citrix.com>
 <2204fbae-be5b-4f56-ad2a-cd5692db81cb@suse.com>
 <aeedB31aEBJb2Pa8@macbook.local>
 <bb1d52a4-c344-4653-b10f-0781c2900cb0@suse.com>
 <aeiSAFy_P1QoIBaP@macbook.local>
MIME-Version: 1.0
Content-Disposition: inline
In-Reply-To: <aeiSAFy_P1QoIBaP@macbook.local>
X-BM-Disclaimer: Yes
Content-Type: multipart/alternative; boundary="-=Part.257d.d1266fe5980cbbd5.19db4f199d2.c29e57fdea891acb=-"
X-Bm-Milter-Handled: 4ffbd6c1-ee69-4e1b-aabd-f977039bd3e2
X-Bm-Transport-Timestamp: 1776857225686
X-purgate-ID: tlsNG-42698a/1776857231-7E573F3B-72E6A5C3/0/0
X-purgate-type: clean
X-purgate-size: 2244

---=Part.257d.d1266fe5980cbbd5.19db4f199d2.c29e57fdea891acb=-
Content-Type: text/plain; charset=utf-8
Content-Transfer-Encoding: quoted-printable

On Wed, Apr 22, 2026 at 11:16:48AM +0200, Roger Pau Monn=C3=A9 wrote:
> On Wed, Apr 22, 2026 at 09:15:56AM +0200, Jan Beulich wrote:
> > On 21=2E04=2E2026 17:51, Roger Pau Monn=C3=A9 wrote:
> > > On Tue, Apr 21, 2026 at 05:35:57PM +0200, Jan Beulich wrote:
> > >> On 21=2E04=2E2026 17:32, Roger Pau Monne wrote:
> > >>> --- a/tools/misc/xenpm=2Ec
> > >>> +++ b/tools/misc/xenpm=2Ec
> > >>> @@ -1377,7 +1377,7 @@ static int fetch_dts_temp(xc_interface *xch,=
 uint32_t cpu, bool package, int *te
> > >>>      {
> > >>>      case 0:
> > >>>          /* This CPU isn't online or can't query this MSR */
> > >>> -        errno =3D ENODATA;
> > >>> +        errno =3D ENODEV;
> > >>>          return -1;
> > >>
> > >> "No such device", however, isn't quite what we want to convey here=
=2E If no
> > >> better error code can be found that's available on FreeBSD and Linu=
x, I'm
> > >> inclined to suggest that we stick to ENODATA where available=2E
> > >=20
> > > Seems like a lot of complexity, for very limited usefulness=2E
> >=20
> > What's complex about
> >=20
> > #ifndef ENODATA
> > # define ENODATA ENODEV
> > #endif
> >=20
> > (perhaps with a brief comment)?
>=20
> IMO it's best if we can avoid instances of ENODATA in the toolstack
> code base, specially if it's individual ones like this that can be
> fixed=2E  Otherwise new instances might appear elsewhere, and we don't
> want to be adding this bodge everywhere if avoidable=2E
>=20
> If we had a sizable usage of ENODATA in the code base I would indeed
> recommend such define approach=2E

Yeah, let's just use ENODEV on every platform in this case=2E

We already have ENODATA translated to ENOENT in libxl (for privcmd), so
let's not add a different translation here=2E

So patch looks fine to me as is:
Acked-by: Anthony PERARD <anthony=2Eperard@vates=2Etech>

As for the error message, patch welcome ;-)=2E

Thanks,


-- 
 | Vates 

XCP-ng & Xen Orchestra - Vates solutions

web: https://vate=
s=2Etech
---=Part.257d.d1266fe5980cbbd5.19db4f199d2.c29e57fdea891acb=---


From xen-devel-bounces@lists.xenproject.org Wed Apr 22 11:34:11 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 22 Apr 2026 11:34:11 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1290320.1569934 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wFVq9-0005vg-Ea; Wed, 22 Apr 2026 11:33:57 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1290320.1569934; Wed, 22 Apr 2026 11:33: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 1wFVq9-0005vZ-Bp; Wed, 22 Apr 2026 11:33:57 +0000
Received: by outflank-mailman (input) for mailman id 1290320;
 Wed, 22 Apr 2026 11:33:56 +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 1wFVq8-0005vS-9f
 for xen-devel@lists.xenproject.org; Wed, 22 Apr 2026 11:33:56 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wFVq7-000LL0-Mg
 for xen-devel@lists.xenproject.org; Wed, 22 Apr 2026 13:33:55 +0200
Received: from [10.42.69.9] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <Michal.Orzel@amd.com>)
 id 69e8b223-bab6-0a2a0a5309dd-0a2a4509a396-0
 for <xen-devel@lists.xenproject.org>; Wed, 22 Apr 2026 13:33:55 +0200
Received: from [52.101.53.3]
 (helo=BL0PR03CU003.outbound.protection.outlook.com)
 by tlsNG-bad1c0.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.1)
 (envelope-from <Michal.Orzel@amd.com>)
 id 69e8b222-2497-0a2a45090019-34653503469c-3
 for <xen-devel@lists.xenproject.org>; Wed, 22 Apr 2026 13:33:55 +0200
Received: from BL1P223CA0010.NAMP223.PROD.OUTLOOK.COM (2603:10b6:208:2c4::15)
 by DM4PR12MB6567.namprd12.prod.outlook.com (2603:10b6:8:8e::20) with
 Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9846.20; Wed, 22 Apr
 2026 11:33:50 +0000
Received: from BL6PEPF00020E61.namprd04.prod.outlook.com
 (2603:10b6:208:2c4:cafe::66) by BL1P223CA0010.outlook.office365.com
 (2603:10b6:208:2c4::15) with Microsoft SMTP Server (version=TLS1_3,
 cipher=TLS_AES_256_GCM_SHA384) id 15.20.9791.48 via Frontend Transport; Wed,
 22 Apr 2026 11:33:49 +0000
Received: from satlexmb08.amd.com (165.204.84.17) by
 BL6PEPF00020E61.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.20.9846.18 via Frontend Transport; Wed, 22 Apr 2026 11:33:49 +0000
Received: from SATLEXMB04.amd.com (10.181.40.145) by satlexmb08.amd.com
 (10.181.42.217) with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.2.2562.17; Wed, 22 Apr
 2026 06:33:49 -0500
Received: from satlexmb08.amd.com (10.181.42.217) by SATLEXMB04.amd.com
 (10.181.40.145) with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2507.39; Wed, 22 Apr
 2026 06:33:49 -0500
Received: from [10.71.194.215] (10.180.168.240) by satlexmb08.amd.com
 (10.181.42.217) with Microsoft SMTP Server id 15.2.2562.17 via Frontend
 Transport; Wed, 22 Apr 2026 06:33:45 -0500
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@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=h2RL/S1vmcawRkyWqF7ltm6ZnTTIPl9a72Bx6UwNC/quOMNYJihJuC4A5zTWSZ/ppfB7aZAsUtUSCHjvzZ/TDBGTt8gmtWUk2XmrxAZX749I29yhtknZ2fxqjjWvN87k/OPy5AkFhCZ6b9VlEUNnVknFQ02U9SWbvXh8+T0H3lCXAARteZnjHE/0fMV7N23L+fbgx+0Alqmllh746cCmjCnF8La0MeEICSm6nSIHRL7655HeZaNLDDkIlZrgi+txTM3Su5mFExkeP2DR0ou+sfbdPSB2qWdvAv/vsK4r6uw/xouSyCesH0NMDMZY0RxnKP1tJBhUIBTYj0+wcNE0Bw==
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com;
 s=arcselector10001;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1;
 bh=eZMZXDDbbPO0GfoVZ0EsLEYY/U/YhZXetgZxk6vOxiM=;
 b=clPq1i/pMQn3DbT4QGg03jmznuNY6RnIcaARNl5UjJ26lfC9mDrC29J0SQTfZMZS3LrbEunh3MtUuMS1UtBq4LR+GLY59G1sK/VtsQACSQrp7pYIS0vCJ3dvG8BAK4LBPmaD4iRpMnnvsN8l6r1VJ/r/uR0VjJ7o5mV8Lmq5j3a85DZmnyz7Ph43rjT9yvwg1IkF5XAJbxzmfY7SCxTMl7+mRR/fpuO9Qk0anRuq2P903k91PQb6Fvj6lE4abGCFzwwLGb+HVs+MmR01eFy0y8YBBIqROiTrCSE1hkfc9ubWVi3rQ60eM5fBSxrai/BWecRwTez6aVZ5RnV+RYooyg==
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=eZMZXDDbbPO0GfoVZ0EsLEYY/U/YhZXetgZxk6vOxiM=;
 b=JI1YUBVY7cS4TqWueco8m2iL99BX+5zITkv/ZnAcVLR3f//6y+pNAYDnl5tI5q4HxyaMro7Auefze227i61IbHA1aOipu5tHAOeaWHDY8XWRhJzGHXGSmNPxkioyuPHASypcu5iZZ/SH8O7+ZUCnvnX8jUKRCOL+vTBQGZXgkjU=
X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 165.204.84.17)
 smtp.mailfrom=amd.com; dkim=none (message not signed)
 header.d=none;dmarc=pass action=none header.from=amd.com;
Received-SPF: Pass (protection.outlook.com: domain of amd.com designates
 165.204.84.17 as permitted sender) receiver=protection.outlook.com;
 client-ip=165.204.84.17; helo=satlexmb08.amd.com; pr=C
Message-ID: <eb609076-bd0d-4a62-a259-fbe0e4b19a26@amd.com>
Date: Wed, 22 Apr 2026 13:33:40 +0200
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH v3 4/4] xen/drivers/char: fix exynos4210 IRQ registration
 failure propagation
To: Oleksii Moisieiev <Oleksii_Moisieiev@epam.com>,
	"xen-devel@lists.xenproject.org" <xen-devel@lists.xenproject.org>
CC: Bertrand Marquis <bertrand.marquis@arm.com>, Julien Grall
	<julien@xen.org>, Stefano Stabellini <sstabellini@kernel.org>, "Volodymyr
 Babchuk" <Volodymyr_Babchuk@epam.com>
References: <cover.1776850201.git.oleksii_moisieiev@epam.com>
 <e15f6ef27470724fd987f0c5d248315abb1d2c55.1776850201.git.oleksii_moisieiev@epam.com>
From: "Orzel, Michal" <michal.orzel@amd.com>
Content-Language: en-US
In-Reply-To: <e15f6ef27470724fd987f0c5d248315abb1d2c55.1776850201.git.oleksii_moisieiev@epam.com>
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: 7bit
Received-SPF: None (SATLEXMB04.amd.com: michal.orzel@amd.com does not
 designate permitted sender hosts)
X-EOPAttributedMessage: 0
X-MS-PublicTrafficType: Email
X-MS-TrafficTypeDiagnostic: BL6PEPF00020E61:EE_|DM4PR12MB6567:EE_
X-MS-Office365-Filtering-Correlation-Id: ce3230aa-e574-4ab3-15e3-08dea063061d
X-MS-Exchange-SenderADCheck: 1
X-MS-Exchange-AntiSpam-Relay: 0
X-Microsoft-Antispam:
	BCL:0;ARA:13230040|1800799024|82310400026|376014|36860700016|18002099003|22082099003|56012099003;
X-Microsoft-Antispam-Message-Info:
	wN7UL2JSiWaKFIBppSRlKmH5usD/3AECyqBkL2Epk+qOH4VqcznrarrqlnvWri05w2EXCpq341cHXA2j3Ha2HemYiOy3M6QlSaO05+957vUuxEXGI7P8R7trq9J9qwFHxB2DWQ5ZlC3vd1lIkowJ7GBL7MNilyFWJiuS9luYLeCgvBM63JLlt49W+tbFx+VpO7RgLQtzCFapaf2M88yG/HE0cM5c/ffLz+Ot8NZ+t8tVrG1fC+cr64ITQZfUjzDIo3G+2VxMVyJqEM4ju/CEaKbkNPjOypnyA27UPBavIq9rfj1ynXjE2NsX3RhisXGIKTKJn2aB5jtgfJ+zrXY5HlULqmLzMy1OG8tDEoeV+bRRyFFkun6VIrGmWAu54iUrNCWKUidqJClPNkmwk76TR2Kj6UJO168VOnxQ1iCfnq11XN0nETS0kqbzn9/iXPnwICT0LzT8uyvEa8Da7U4T5kXvoqU4kjgKeTl8kbt1WhLYoNoq2lkeB4rbavThf8KzmCHnWBYHmmbCSZnl2rz2qbMRWZ2/S8YJsmfIX9aVtGc5bc0kyaOTVa14WecfJQ+subAbHnT+u3tPCNLS/z6KB6WiL327qH2uZaufdrC7odSVwicLxOnZWuOTIs9oGGCWAn2CU3usEB3KM1cJv+siwLFBMeEK1/mf8JI+R/hkRvtFqpS/X7u4AKAaPOjGpwFuiswEUlf+scitxmaBflb8gE7uaUhH7n6lHKhpfd7G/+mRm0Z2W1vIqSQi1ad6Z8QtbKNo22J18xSIOAgtLlqxhQ==
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)(36860700016)(18002099003)(22082099003)(56012099003);DIR:OUT;SFP:1101;
X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1
X-MS-Exchange-AntiSpam-MessageData-0:
	gOY9cAUEhhUubEFeArgXUGNPxoEg0YmSKprzybe4ZRA2cCxzNcwVgAKX6kV5MqQYxrOqBXYUwgGgItoTqCgbzkMwYheQFEQUdLL2gNwVFXyHCZoYrktvyPWk72WAkkegsMKSiYdoDyVhz/0fmgmhnfK3OiRc8ch1pc8UTE9tFyqL9eOsclA+3Zi7sQzTSEeNOSpVdrt7oY+jMEIdvXWpaYSHFirEBxYr6vLe//gFi1tWqg4RgkvtCVrAGtd2V1bJUrrz2pR81HwOxsxXduCj62ERyH0DSf0UxI28V9/jSgLEXa5Bpu9Rd3q06nYGgBCK7iQzk8slpkLHFl1X04S4KHcRN7T9yAPBeMXiXi47BDQgO0v/N/VZb9zQBW3FwWcLXjcmicKKRO/fUGTqP+d8gwQcaKa7CZUcaTeVFZJAvX1zy9/goM67gKAYQGg4s5//
X-OriginatorOrg: amd.com
X-MS-Exchange-CrossTenant-OriginalArrivalTime: 22 Apr 2026 11:33:49.7532
 (UTC)
X-MS-Exchange-CrossTenant-Network-Message-Id: ce3230aa-e574-4ab3-15e3-08dea063061d
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:
	BL6PEPF00020E61.namprd04.prod.outlook.com
X-MS-Exchange-CrossTenant-AuthAs: Anonymous
X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem
X-MS-Exchange-Transport-CrossTenantHeadersStamped: DM4PR12MB6567
X-purgate-ID: tlsNG-bad1c0/1776857635-43B78A53-EB5491FD/0/0
X-purgate-type: clean
X-purgate-size: 1806



On 22/04/2026 11:33, Oleksii Moisieiev wrote:
> In exynos4210_uart_init_postirq(), when setup_irq() returns an error
> the failure was only logged via dprintk() and execution continued,
> unconditionally clearing UINTM and setting UMCON_INT_EN. This enabled
> receive and transmit interrupt lines with no handler registered. On
> platforms where the GIC receives these asserted lines, the result is
> either repeated spurious-interrupt warnings or an unhandled interrupt
> fault.
> 
> Add an early return in the setup_irq() error branch so that the
> interrupt-enable writes to UINTM and UMCON are skipped when IRQ
> registration fails.
> 
> Signed-off-by: Oleksii Moisieiev <oleksii_moisieiev@epam.com>
> ---
> 
> Changes in v3:
> - skip clearing pending interrupts if setup_irq was failed because
> according to the 13.4.1.13 of the RM: it must be cleared after
> cleaning interrupt pending in INTC.
> 
>  xen/drivers/char/exynos4210-uart.c | 4 ++++
>  1 file changed, 4 insertions(+)
> 
> diff --git a/xen/drivers/char/exynos4210-uart.c b/xen/drivers/char/exynos4210-uart.c
> index 58901df554..2e5860ea2b 100644
> --- a/xen/drivers/char/exynos4210-uart.c
> +++ b/xen/drivers/char/exynos4210-uart.c
> @@ -199,8 +199,12 @@ static void __init exynos4210_uart_init_postirq(struct serial_port *port)
>      uart->irqaction.dev_id  = port;
>  
>      if ( (rc = setup_irq(uart->irq, 0, &uart->irqaction)) != 0 )
> +    {
>          dprintk(XENLOG_ERR, "Failed to allocated exynos4210_uart IRQ %d\n",
>                  uart->irq);
> +        /* Don't enable interrupts if irq setup was failed */
NIT: Not sure why this comment differs from one patch to another. Preferably
they should all be the same.

Reviewed-by: Michal Orzel <michal.orzel@amd.com>

~Michal



From xen-devel-bounces@lists.xenproject.org Wed Apr 22 11:36:38 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 22 Apr 2026 11:36:38 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1290332.1569943 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wFVsi-0006Rb-QK; Wed, 22 Apr 2026 11:36:36 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1290332.1569943; Wed, 22 Apr 2026 11:36: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 1wFVsi-0006RU-Nc; Wed, 22 Apr 2026 11:36:36 +0000
Received: by outflank-mailman (input) for mailman id 1290332;
 Wed, 22 Apr 2026 11:36:35 +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 1wFVsh-0006RM-JF
 for xen-devel@lists.xenproject.org; Wed, 22 Apr 2026 11:36:35 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wFVsf-00F6II-EV
 for xen-devel@lists.xenproject.org; Wed, 22 Apr 2026 13:36:35 +0200
Received: from [10.42.69.3] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <Michal.Orzel@amd.com>)
 id 69e8b2ba-5cb7-0a2a0a5109dd-0a2a4503ab06-38
 for <xen-devel@lists.xenproject.org>; Wed, 22 Apr 2026 13:36:34 +0200
Received: from [40.93.194.2]
 (helo=SN4PR0501CU005.outbound.protection.outlook.com)
 by tlsNG-33051d.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.1)
 (envelope-from <Michal.Orzel@amd.com>)
 id 69e8b2c1-672d-0a2a45030019-285dc2028aa8-3
 for <xen-devel@lists.xenproject.org>; Wed, 22 Apr 2026 13:36:34 +0200
Received: from BL0PR02CA0048.namprd02.prod.outlook.com (2603:10b6:207:3d::25)
 by SJ2PR12MB9116.namprd12.prod.outlook.com (2603:10b6:a03:557::18)
 with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9846.16; Wed, 22 Apr
 2026 11:36:27 +0000
Received: from BL6PEPF00020E5F.namprd04.prod.outlook.com
 (2603:10b6:207:3d:cafe::4e) by BL0PR02CA0048.outlook.office365.com
 (2603:10b6:207:3d::25) with Microsoft SMTP Server (version=TLS1_3,
 cipher=TLS_AES_256_GCM_SHA384) id 15.20.9791.48 via Frontend Transport; Wed,
 22 Apr 2026 11:36:26 +0000
Received: from satlexmb08.amd.com (165.204.84.17) by
 BL6PEPF00020E5F.mail.protection.outlook.com (10.167.249.20) with Microsoft
 SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id
 15.20.9846.18 via Frontend Transport; Wed, 22 Apr 2026 11:36:25 +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.17; Wed, 22 Apr
 2026 06:36:25 -0500
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.17; Wed, 22 Apr
 2026 06:36:25 -0500
Received: from [10.71.194.215] (10.180.168.240) by satlexmb08.amd.com
 (10.181.42.217) with Microsoft SMTP Server id 15.2.2562.17 via Frontend
 Transport; Wed, 22 Apr 2026 06:36:17 -0500
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@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=fZAU6ujdx7WePrTZnw0XAwgM4EwGyBAq8h4eGyAYGaOGOMVcUutASuAHdQyH8MLjVrS99wj2I0dg+T/fZ5BLEcFWI4/lL7EMZuAJrashEkuK7KrbzUOSA/G8sQPnCXKYmVKJseUdQpE1QwrQn6WfFb+Co6Y5EtA0HtHWhaI5nzjdSifWF4PVRDkRuY7RPahyzEn2/2CduPLmEg0caK88ddpnM5ITp+eps5HLiTYBfz+n1FNbae8s6p2PXuYAJ4TDU/lrw4tqeYqQssc6iYxZ9x0L19k7l4ASBiY20zotLGFqruBLMnPQvubrlB3gvy67fkQf/LlsELR8KvCcPsicKw==
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com;
 s=arcselector10001;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1;
 bh=YtZknnB3j+p6kCpU06Y2tA1kcaZqJJozcwn/O4Q4q+E=;
 b=UZ18axeAOE7oYBceYrVYS6vumZrcST9XYpn+3mCjJLkb6LpYDv8m3WcRPMD9q8czO9M4+gCOo7aq0GVLhhjV/v1EQ9ZepFAGk3dwdatcoB09m2iiDA1be1OXvjfsG3xkovp5ldq4SzmbC18OkncDveFk5Tsg/NSRyM+W7NNg1xBUkmVEmxAKGLNXy2JUu+xM16rOI/xH0UCZTom5o3BvRK1z10oG/Sv/4W+nccKCcbVGZdhqixi9KV3JY4JVhT9a0lsYcNOOJkI/BGYQfKZaqfe0OCkZja7wS85Tk6s0/aShbV2KurzE1GYgNsY2OnSoKTWeYdMS9VEkdMg6i80ztA==
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=YtZknnB3j+p6kCpU06Y2tA1kcaZqJJozcwn/O4Q4q+E=;
 b=JE3KFdRpe0Va+Ni0bRC6honaHysKzmJRG5ONRikxb7WHZgyn5KYp3U6/+f7GzF/MtXMJh82/KOh4gLt8Uzl4fytCPXf6sHbs/XSohFVS/Y8OPKxXeyzHg/9TUpvOywuGRKQwcLr/yUiu0D8w0UfrqWJb8HCCiJiUa3IoUPmxAp8=
X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 165.204.84.17)
 smtp.mailfrom=amd.com; dkim=none (message not signed)
 header.d=none;dmarc=pass action=none header.from=amd.com;
Received-SPF: Pass (protection.outlook.com: domain of amd.com designates
 165.204.84.17 as permitted sender) receiver=protection.outlook.com;
 client-ip=165.204.84.17; helo=satlexmb08.amd.com; pr=C
Message-ID: <c6f48ecd-df34-46fb-9ec2-31adc9a13db1@amd.com>
Date: Wed, 22 Apr 2026 13:36:16 +0200
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH v3 1/4] xen/drivers/char: fix SCIF IRQ registration
 failure propagation
To: Oleksii Moisieiev <Oleksii_Moisieiev@epam.com>,
	"xen-devel@lists.xenproject.org" <xen-devel@lists.xenproject.org>
CC: Bertrand Marquis <bertrand.marquis@arm.com>, Julien Grall
	<julien@xen.org>, Stefano Stabellini <sstabellini@kernel.org>, "Volodymyr
 Babchuk" <Volodymyr_Babchuk@epam.com>
References: <cover.1776850201.git.oleksii_moisieiev@epam.com>
 <519488a3f63d3bb6af9a6fb794b85e9960710b23.1776850201.git.oleksii_moisieiev@epam.com>
From: "Orzel, Michal" <michal.orzel@amd.com>
Content-Language: en-US
In-Reply-To: <519488a3f63d3bb6af9a6fb794b85e9960710b23.1776850201.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: BL6PEPF00020E5F:EE_|SJ2PR12MB9116:EE_
X-MS-Office365-Filtering-Correlation-Id: 2e47876f-1a7d-4f8c-6c12-08dea063632d
X-MS-Exchange-SenderADCheck: 1
X-MS-Exchange-AntiSpam-Relay: 0
X-Microsoft-Antispam:
	BCL:0;ARA:13230040|1800799024|376014|82310400026|36860700016|56012099003|18002099003|22082099003;
X-Microsoft-Antispam-Message-Info:
	zS4sf/XiNRP9aB6eQ5Sl9W+hZhQMhWCkbYS8v3DwSIWHdvQgU5+enQCVngSPR671O8DJFYaaQ2plcC8xM9tdrJ+7kWttbX6ikrDLfPXbgEGNEc99nXcsi7PcOhSSxbdK8gHl1eUlerq++X8jL+wHJaVlC/bR9jimhgef4rbiZ28X38jU1anQq8j1MnitXPY3FIULHNlJAm3VCFeAC3FJm6Qxl1+OBUKDXBrQTBYix3pO3V0xacWivLqKicvlfD0RKW/dYELFLOh3L595Zq/SwChk4nSpfYK7UtYC9n+HeXhzL7kpnoXQkAI1S4f2F0dfIxUOWgBLxwj4FYcAJnDBOYqX9MqeURd6or7f8U88GBXIC5y/TU74DNfLchYnceZsw2Xhcx9cPosnCCVl/2G72FhVh3nC+cJy7vAgImCSmq+gpYMup5QJuGaZNhauMxn8QCHQNXWOjRSf5FTMuKPHOewYJO/h7KlTvfaNLdRANx7ef2d4DE5AO4K2o4qGu0O4LDleiqXxKkRY/mNb166dPhvRtp15eue0Y+HmsO4nFYtpVoHQX3ACjqooGhwIDWcgyzH28K+EQCYKrHUiQFk0jlZcqVCEWbHGES+hmWXis0gd1KlA/RVouGkFivB13S2cqoLyNlTq5TJ3adA4weOG+ipDJQd1u5GPd/bZO6sUZ0e9yaJ+UqfJpL+Ve0wr5EuvB60394naLhzlvHYrDL3O2a9SXyPq/FtbdZJfrjw7hKLy8IaZQUkyiFHCLzFJBpLdFH8rFXngCDL/K7DUWszp7g==
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)(82310400026)(36860700016)(56012099003)(18002099003)(22082099003);DIR:OUT;SFP:1101;
X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1
X-MS-Exchange-AntiSpam-MessageData-0:
	R3Z6fM0n1XGPDtJbsur+sVkuh9siU2QWDJXYKFOB/zugbRPtVV3u5WQeweXex0aIkNtb75jATxqL/DW3oMCUReCaAw+feZ4F6+xXhV3ObDXh68qQ/IoXRkenvRYpUkwcnTlUQRYEeU0r30LoW3WEk+WaYMtrJqHEUYeXMdneHZB0W+9Xcd23Dyh5Pf9te6K20gUKexrO5CsTbcjmXCLaT8ykeFMW/Ni9wL6R+/g+00VgkELzDEwZgs3qi/q4YuyXrX8xsKICKtEmfXityqBiFsXFpHFvbcZfVv+/6KaKLSUuVXQ6pv6lli0Wb9VgClCIjmmnp6vRGOG2T5er031tyJO/A+4rdnwZImcNUnRJMDZbLdSIWk0cLtyGwTo8lOzEAYB2Ww69+VX6Nsce48iByX8jWjUAPekhOLHmXQoTz3b1Er7h493PMo6k79HkDQ9T
X-OriginatorOrg: amd.com
X-MS-Exchange-CrossTenant-OriginalArrivalTime: 22 Apr 2026 11:36:25.8873
 (UTC)
X-MS-Exchange-CrossTenant-Network-Message-Id: 2e47876f-1a7d-4f8c-6c12-08dea063632d
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:
	BL6PEPF00020E5F.namprd04.prod.outlook.com
X-MS-Exchange-CrossTenant-AuthAs: Anonymous
X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem
X-MS-Exchange-Transport-CrossTenantHeadersStamped: SJ2PR12MB9116
X-purgate-ID: tlsNG-33051d/1776857794-A1B7C938-E11713F6/0/0
X-purgate-type: clean
X-purgate-size: 3274



On 22/04/2026 11:33, Oleksii Moisieiev wrote:
> In scif_uart_init_postirq(), when setup_irq() returns an error the
> failure was only logged via dprintk() and execution continued,
> unconditionally writing TIE|RIE|REIE into the Serial Control Register
> (SCSCR). This armed all three hardware interrupt lines (TX FIFO empty,
> RX data ready, receive error) with no handler registered to service
> them. On platforms where the GIC receives these asserted lines, the
> result is either repeated spurious-interrupt warnings or an unhandled
> interrupt fault.
> 
> The fix adds an early return inside the error branch. The
> interrupt-enable write to SCSCR is skipped entirely when no handler is
> registered.
> 
> SCIF TX continues to operate correctly after this change. The Xen
> serial framework never calls serial_async_transmit() for SCIF, so
> port->txbuf is always NULL. This causes __serial_putc() to take the
> synchronous finite-capacity path, which polls the SCFSR_TDFE hardware
> flag directly and does not depend on the interrupt mechanism. RX
> wouldn't work if irq wasn't registered.
> 
> As a secondary clean-up, the hardware error-flag clearing sequence is
> moved to before the setup_irq() call so that error bits accumulated
> since init_preirq() are cleared unconditionally, regardless of whether
> IRQ registration succeeds.
> 
> Signed-off-by: Oleksii Moisieiev <oleksii_moisieiev@epam.com>
> ---
> 
> (no changes since v2)
> 
> Changes in v2:
> - Extend fix to pl011, cadence-uart and exynos4210
> - fix typo in patch 1 description
> 
>  xen/drivers/char/scif-uart.c | 16 ++++++++++++----
>  1 file changed, 12 insertions(+), 4 deletions(-)
> 
> diff --git a/xen/drivers/char/scif-uart.c b/xen/drivers/char/scif-uart.c
> index 888821a3b8..673a2d3800 100644
> --- a/xen/drivers/char/scif-uart.c
> +++ b/xen/drivers/char/scif-uart.c
> @@ -187,16 +187,24 @@ static void __init scif_uart_init_postirq(struct serial_port *port)
>      uart->irqaction.name    = "scif_uart";
>      uart->irqaction.dev_id  = port;
>  
> -    if ( (rc = setup_irq(uart->irq, 0, &uart->irqaction)) != 0 )
> -        dprintk(XENLOG_ERR, "Failed to allocated scif_uart IRQ %d\n",
> -                uart->irq);
> -
>      /* Clear all errors */
>      if ( scif_readw(uart, params->status_reg) & params->error_mask )
>          scif_writew(uart, params->status_reg, ~params->error_mask);
>      if ( scif_readw(uart, params->overrun_reg) & params->overrun_mask )
>          scif_writew(uart, params->overrun_reg, ~params->overrun_mask);
>  
> +    if ( (rc = setup_irq(uart->irq, 0, &uart->irqaction)) != 0 )
> +    {
> +        dprintk(XENLOG_ERR, "Failed to allocated scif_uart IRQ %d\n",
> +                uart->irq);
> +        /*
> +         * If the IRQ handler could not be installed (setup_irq failed),
> +         * do not enable TX/RX or error interrupts. Serial transmit will
> +         * fall back to polling mode.
> +         */
As mentioned before, why do these comments differ depending on the patch. I
would suggest to just add:
/* Don't enable interrupts if irq handler was not set. Fall back to polling */

Other than that:
Reviewed-by: Michal Orzel <michal.orzel@amd.com>

~Michal



From xen-devel-bounces@lists.xenproject.org Wed Apr 22 11:36:50 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 22 Apr 2026 11:36:50 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1290335.1569952 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wFVsw-0006lE-58; Wed, 22 Apr 2026 11:36:50 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1290335.1569952; Wed, 22 Apr 2026 11: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 1wFVsw-0006l4-1x; Wed, 22 Apr 2026 11:36:50 +0000
Received: by outflank-mailman (input) for mailman id 1290335;
 Wed, 22 Apr 2026 11:36:48 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <jens.wiklander@linaro.org>) id 1wFVsu-0006kP-Kv
 for xen-devel@lists.xenproject.org; Wed, 22 Apr 2026 11:36:48 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wFVss-00F6KO-Fa
 for xen-devel@lists.xenproject.org; Wed, 22 Apr 2026 13:36:48 +0200
Received: from [10.42.69.12] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <jens.wiklander@linaro.org>)
 id 69e8b2ce-2eae-0a2a0a5409dd-0a2a450ce240-6
 for <xen-devel@lists.xenproject.org>; Wed, 22 Apr 2026 13:36:47 +0200
Received: from [209.85.210.50] (helo=mail-ot1-f50.google.com)
 by tlsNG-d25034.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.1)
 (envelope-from <jens.wiklander@linaro.org>)
 id 69e8b2ce-62f1-0a2a450c0019-d155d232f121-3
 for <xen-devel@lists.xenproject.org>; Wed, 22 Apr 2026 13:36:47 +0200
Received: by mail-ot1-f50.google.com with SMTP id
 46e09a7af769-7dbec19732eso4647757a34.3
 for <xen-devel@lists.xenproject.org>; Wed, 22 Apr 2026 04:36:47 -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=google header.d=linaro.org header.i="@linaro.org" header.h="Content-Transfer-Encoding:Cc:To:Subject:Message-ID:Date:From:In-Reply-To:References:MIME-Version"
ARC-Seal: i=1; a=rsa-sha256; t=1776857806; cv=none;
        d=google.com; s=arc-20240605;
        b=JHM5It/r+JWKfEdVOy1eKP10aX4P0qKO+SogNW84yOzg2wAk6AtgCJzpQImpsboQgm
         W0iiGiQkDztS5qXsxcqOJRnvffBQtolsZw0VCTXHSAhb65LPUlLpyZcsLqoFvf1T+Icq
         3LvRDMF+UQIVmUU35L9K/iJ2e5RtWUvWvMo2iyE/XTPe+EU0rWajKvuVp8HAETG5066K
         LI4sr9LUQatC4CBFMKc2p+kvGKAONVUjIVhFUf1aTa9i/5F35L1gj9UMZn5q2SWIRXsM
         B/KgXUkhbxtDOYW/JmJ2sihBXATc0/MDxMHf0KB7STor1VboMeJ+V65THsI8erqxKMUb
         CfQQ==
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20240605;
        h=content-transfer-encoding:cc:to:subject:message-id:date:from
         :in-reply-to:references:mime-version:dkim-signature;
        bh=jEZNxUnk2Oq7Xdr2TCQhDKMYigTcFQmDeD+SVScAU64=;
        fh=wNLC6Hyb5Ukz/ErppBRQBwv8vwa/OMsdh6R8bnNsiPU=;
        b=TB1+fQpe3P0SZZDy8Fp99deSnZWr0EDHtSnhM9ADV4meqS1TRoqLKxkjSLkPOWJt7E
         JcstwWikIWYuMN9bpiExilI7U1nrjAnaBOvtuEStonhai744ymYMGfnthK5KZbq93ZIT
         d+Mk/xhpBN8WCASGN/mjKc/GSnDj6OdHT0tOpK+yZb1jmWPX6a7TuHlr2QL8e57xqulP
         eaSN2bYPWhjRxp3AWU/rA6wX6oxxLEghHTbctmbSLuY6qNsXSHbrXsBhnXbA1WIp79Zu
         JmA7kYq5H8EEEJn9Kk86iB3SRvOdDWluTy1R2GmHqicnd9Jezmcnm/pmlF1Xlv4ifPvz
         IYcQ==;
        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=linaro.org; s=google; t=1776857806; x=1777462606; darn=lists.xenproject.org;
        h=content-transfer-encoding:cc:to:subject:message-id:date:from
         :in-reply-to:references:mime-version:from:to:cc:subject:date
         :message-id:reply-to;
        bh=jEZNxUnk2Oq7Xdr2TCQhDKMYigTcFQmDeD+SVScAU64=;
        b=Vk5fCOzu/M9GZHdP/uBF+3FjHFlnBHHTw7K96XuSWOujpyDhQUyfs02wdz9DJY+zx4
         VKbc/y1dojPgkgvIzokRNo/TovYa3oALm9OpkhUCeKYmwOeTbKqT1+RhRrTC73aqThUq
         MJpa1x0zMrLyA0f+piDDHTL2khbpjr7Zy76rtC3gYYzrFC3Wk1WEyV3+YB+lOXGnO4FA
         ssYHeCWw9oxsybzMf49NiaGzmgyfTpLjF4UFUcZELlWnkkKlC5g5z/REURFZsxAFwaz8
         DxbPwrGFIyEgcy52I5OYF0HMDXPV3NiHZ28TkbZVKuS839w6uGIrWBg0OW22PtVyd4ET
         fNqQ==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20251104; t=1776857806; x=1777462606;
        h=content-transfer-encoding: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;
        bh=jEZNxUnk2Oq7Xdr2TCQhDKMYigTcFQmDeD+SVScAU64=;
        b=fKTh8U/IKR6ftDxTerMkF8eWilKRVK4NVpBqDRpbbpS7fpU1jy53Lm/p+mN5PMIII9
         CMFvk+tgf66jd90xA+i7rsZvKEqwYxwQeCPMhScVC6sP8i7XPxI5lMJ8pdOmqhlbFeSp
         IBawbSz2SbE4aBJlWDFyVRlGwvFw4z6I0u4SiMV0kKcu5BYuj6PO/QaLajczNpxnZjut
         S7XDxdFmothDNE8Hg1j7LMBmxMt0Nvzv+E/1JZVSq1FAsgKPUiGNKYI3xYXWsWO7mA0Y
         njIRLvDe69cV9YEJRBUzM+uX3TTTtXTA5UvTRVBMrFraN0NQip7Rxq7GJFuguDqBO8na
         tYkQ==
X-Gm-Message-State: AOJu0YwVj//ZVl2j7TicIbYo7jf4B+tBSCcukZPh4RErjgIMpjDRP4H8
	dxrC2hMu+qVCgLOik8/1978Hxryc+MsPdkiUgTo7QeBfQq/VcpuwQCVU5zC4MF5InrCdy7d44QU
	MMU6RWw21ffUo1tE0h2OrDiiUtcbt7oiLq4lAGTEjfA==
X-Gm-Gg: AeBDiev4LPtYvbpgX6caWUvHG2nWzzb8TL3QQoCG62SzKxudOwi9RcvDI/JJBg1sa0D
	VFl025Uhgbj5lJNQ6wPf8ctr5xJrqWREs/Wjh/VJ6/JyQ3vW6c5PduwDzZ4xw4CyI5GAJxvnPzF
	2PUbicO6Jjjhumbjx1zqTK6j+x7PqdX9GGdZx5eWQ094Ul04IGBLHY83bnWmcESl1zfxmoCph6j
	wuOLaMVnBPrMtq+EnNy2JA9n8LS0OBJSX52uqnWxQbUcPa3eDb4AiJQjU8/xA7acxwECWEwirGp
	G9D+XTGvOKTNYEQJkMC87/G7U3A6eK4ulnT5f3DBfyQ4rTzTl36HE56qKxk=
X-Received: by 2002:a05:6820:2002:b0:694:9a8a:2ce with SMTP id
 006d021491bc7-6949a8a0f5amr3057210eaf.8.1776857806031; Wed, 22 Apr 2026
 04:36:46 -0700 (PDT)
MIME-Version: 1.0
References: <cover.1776266307.git.bertrand.marquis@arm.com> <1036add9199c6304eb649854024c74dd0f0192cc.1776266307.git.bertrand.marquis@arm.com>
In-Reply-To: <1036add9199c6304eb649854024c74dd0f0192cc.1776266307.git.bertrand.marquis@arm.com>
From: Jens Wiklander <jens.wiklander@linaro.org>
Date: Wed, 22 Apr 2026 13:36:34 +0200
X-Gm-Features: AQROBzAOXCNcY7bb7hC9K-lRPBfgdi3ML2NV-noLI-5or5WRnEjH5_DjKHBVsdk
Message-ID: <CAHUa44FdbLqNRVzjy6Y3qMp5ez9PS-3tY_VjMJMXHRs+=AKVKg@mail.gmail.com>
Subject: Re: [PATCH 3/6] xen/arm: ffa: Tighten notification parameter validation
To: Bertrand Marquis <bertrand.marquis@arm.com>
Cc: xen-devel@lists.xenproject.org, 
	Volodymyr Babchuk <volodymyr_babchuk@epam.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/1776857807-6DF6ACF5-CAA67ECE/0/0
X-purgate-type: clean
X-purgate-size: 6539

Hi Bertand,

On Fri, Apr 17, 2026 at 3:41=E2=80=AFPM Bertrand Marquis
<bertrand.marquis@arm.com> wrote:
>
> The notification handlers still validate overlapping subsets of their
> inputs. BIND, UNBIND, and SET each decode caller and destination IDs
> locally, GET still accepts a non-zero receiver vCPU ID and reserved flag
> bits, and SET still accepts non-zero NS-virtual flags. BIND also treats
> unsupported non-zero flag encodings as a supported-feature failure
> instead of as malformed input.
>
> Add ffa_notif_parse_params() and use it to centralize the common
> caller/destination and non-zero bitmap checks for BIND, UNBIND, and SET.
> Also reject malformed GET and SET requests locally before touching
> cached state or forwarding anything to the SPMC. Keep BIND limited to
> global notifications and reject unsupported non-zero flag encodings with
> INVALID_PARAMETERS.
>
> - add a shared parameter parser for notification caller/destination
>   validation
> - wire BIND and UNBIND through the shared parser and reject unsupported
>   bind flag encodings with INVALID_PARAMETERS
> - reject non-zero receiver vCPU and reserved flag bits in
>   FFA_NOTIFICATION_GET
> - reject non-zero flags in the NS-virtual FFA_NOTIFICATION_SET path
>
> Functional impact: malformed notification requests are rejected
> consistently earlier in the mediator.
>
> Signed-off-by: Bertrand Marquis <bertrand.marquis@arm.com>
> ---
>  xen/arch/arm/tee/ffa_notif.c | 61 +++++++++++++++++++++++++++++-------
>  1 file changed, 50 insertions(+), 11 deletions(-)
>
> diff --git a/xen/arch/arm/tee/ffa_notif.c b/xen/arch/arm/tee/ffa_notif.c
> index d15119409a25..491db3b04df5 100644
> --- a/xen/arch/arm/tee/ffa_notif.c
> +++ b/xen/arch/arm/tee/ffa_notif.c
> @@ -42,21 +42,40 @@ static void inject_notif_pending(struct domain *d)
>                 d);
>  }
>
> +static int32_t ffa_notif_parse_params(uint16_t dom_id, uint16_t caller_i=
d,
> +                                      uint16_t dest_id, uint32_t bitmap_=
lo,
> +                                      uint32_t bitmap_hi)

Nit: I would have picked ffa_notif_validate_params() or
ffa_notif_check_params(), but that might be more a matter of taste.
Anyway, looks good:
Reviewed-by: Jens Wiklander <jens.wiklander@linaro.org>

Cheers,
Jens

> +{
> +    if ( caller_id !=3D dom_id || dest_id =3D=3D dom_id || !dest_id )
> +        return FFA_RET_INVALID_PARAMETERS;
> +
> +    if ( !bitmap_lo && !bitmap_hi )
> +        return FFA_RET_INVALID_PARAMETERS;
> +
> +    return FFA_RET_OK;
> +}
> +
>  int32_t ffa_handle_notification_bind(struct cpu_user_regs *regs)
>  {
>      struct domain *d =3D current->domain;
> +    struct ffa_ctx *ctx =3D d->arch.tee;
> +    int32_t ret;
>      uint32_t src_dst =3D get_user_reg(regs, 1);
>      uint32_t flags =3D get_user_reg(regs, 2);
>      uint32_t bitmap_lo =3D get_user_reg(regs, 3);
>      uint32_t bitmap_hi =3D get_user_reg(regs, 4);
> +    uint16_t caller_id =3D src_dst & GENMASK(15, 0);
> +    uint16_t dest_id =3D src_dst >> 16;
>
> -    if ( (src_dst & GENMASK(15, 0)) !=3D ffa_get_vm_id(d) )
> +    if ( flags )    /* Only global notifications are supported */
>          return FFA_RET_INVALID_PARAMETERS;
>
> -    if ( flags )    /* Only global notifications are supported */
> -        return FFA_RET_DENIED;
> +    ret =3D ffa_notif_parse_params(ctx->ffa_id, caller_id, dest_id, bitm=
ap_lo,
> +                                 bitmap_hi);
> +    if ( ret )
> +        return ret;
>
> -    if ( FFA_ID_IS_SECURE(src_dst >> 16) && fw_notif_enabled )
> +    if ( FFA_ID_IS_SECURE(dest_id) && fw_notif_enabled )
>          return ffa_simple_call(FFA_NOTIFICATION_BIND, src_dst, flags,
>                                 bitmap_lo, bitmap_hi);
>
> @@ -66,16 +85,22 @@ int32_t ffa_handle_notification_bind(struct cpu_user_=
regs *regs)
>  int32_t ffa_handle_notification_unbind(struct cpu_user_regs *regs)
>  {
>      struct domain *d =3D current->domain;
> +    struct ffa_ctx *ctx =3D d->arch.tee;
> +    int32_t ret;
>      uint32_t src_dst =3D get_user_reg(regs, 1);
>      uint32_t bitmap_lo =3D get_user_reg(regs, 3);
>      uint32_t bitmap_hi =3D get_user_reg(regs, 4);
> +    uint16_t caller_id =3D src_dst & GENMASK(15, 0);
> +    uint16_t dest_id =3D src_dst >> 16;
>
> -    if ( (src_dst & GENMASK(15, 0)) !=3D ffa_get_vm_id(d) )
> -        return FFA_RET_INVALID_PARAMETERS;
> +    ret =3D ffa_notif_parse_params(ctx->ffa_id, caller_id, dest_id, bitm=
ap_lo,
> +                                 bitmap_hi);
> +    if ( ret )
> +        return ret;
>
> -    if ( FFA_ID_IS_SECURE(src_dst >> 16) && fw_notif_enabled )
> -        return  ffa_simple_call(FFA_NOTIFICATION_UNBIND, src_dst, 0, bit=
map_lo,
> -                                bitmap_hi);
> +    if ( FFA_ID_IS_SECURE(dest_id) && fw_notif_enabled )
> +        return ffa_simple_call(FFA_NOTIFICATION_UNBIND, src_dst, 0, bitm=
ap_lo,
> +                               bitmap_hi);
>
>      return FFA_RET_NOT_SUPPORTED;
>  }
> @@ -142,6 +167,12 @@ void ffa_handle_notification_get(struct cpu_user_reg=
s *regs)
>          return;
>      }
>
> +    if ( recv >> 16 || (flags & GENMASK(31, 4)) )
> +    {
> +        ffa_set_regs_error(regs, FFA_RET_INVALID_PARAMETERS);
> +        return;
> +    }
> +
>      if ( fw_notif_enabled && (flags & ( FFA_NOTIF_FLAG_BITMAP_SP |
>                                          FFA_NOTIF_FLAG_BITMAP_SPM )) )
>      {
> @@ -204,11 +235,19 @@ int32_t ffa_handle_notification_set(struct cpu_user=
_regs *regs)
>      uint32_t flags =3D get_user_reg(regs, 2);
>      uint32_t bitmap_lo =3D get_user_reg(regs, 3);
>      uint32_t bitmap_hi =3D get_user_reg(regs, 4);
> +    uint16_t caller_id =3D src_dst >> 16;
> +    uint16_t dest_id =3D src_dst & GENMASK(15, 0);
> +    int32_t ret;
> +
> +    ret =3D ffa_notif_parse_params(ffa_get_vm_id(d), caller_id, dest_id,
> +                                 bitmap_lo, bitmap_hi);
> +    if ( ret )
> +        return ret;
>
> -    if ( (src_dst >> 16) !=3D ffa_get_vm_id(d) )
> +    if ( flags )
>          return FFA_RET_INVALID_PARAMETERS;
>
> -    if ( FFA_ID_IS_SECURE(src_dst & GENMASK(15, 0)) && fw_notif_enabled =
)
> +    if ( FFA_ID_IS_SECURE(dest_id) && fw_notif_enabled )
>          return ffa_simple_call(FFA_NOTIFICATION_SET, src_dst, flags, bit=
map_lo,
>                                 bitmap_hi);
>
> --
> 2.53.0
>


From xen-devel-bounces@lists.xenproject.org Wed Apr 22 11:38:45 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 22 Apr 2026 11:38:45 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1290354.1569961 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wFVum-0008C8-Ft; Wed, 22 Apr 2026 11:38:44 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1290354.1569961; Wed, 22 Apr 2026 11:38: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 1wFVum-0008C1-D4; Wed, 22 Apr 2026 11:38:44 +0000
Received: by outflank-mailman (input) for mailman id 1290354;
 Wed, 22 Apr 2026 11:38:42 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <roger.pau@citrix.com>) id 1wFVuk-0008Bs-8J
 for xen-devel@lists.xenproject.org; Wed, 22 Apr 2026 11:38:42 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wFVui-00F6tt-3R
 for xen-devel@lists.xenproject.org; Wed, 22 Apr 2026 13:38:41 +0200
Received: from [10.42.69.5] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <roger.pau@citrix.com>)
 id 69e8b33f-e002-0a2a0a5209dd-0a2a4505df3e-10
 for <xen-devel@lists.xenproject.org>; Wed, 22 Apr 2026 13:38:41 +0200
Received: from [52.101.61.54]
 (helo=DM1PR04CU001.outbound.protection.outlook.com)
 by tlsNG-c201ff.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.1)
 (envelope-from <roger.pau@citrix.com>)
 id 69e8b33f-aaa8-0a2a45050019-34653d362499-3
 for <xen-devel@lists.xenproject.org>; Wed, 22 Apr 2026 13:38:41 +0200
Received: from CH7PR03MB7860.namprd03.prod.outlook.com (2603:10b6:610:24e::14)
 by CY1PR03MB8148.namprd03.prod.outlook.com (2603:10b6:930:105::19)
 with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9846.20; Wed, 22 Apr
 2026 11:38:37 +0000
Received: from CH7PR03MB7860.namprd03.prod.outlook.com
 ([fe80::f5ba:35df:1c9f:b343]) by CH7PR03MB7860.namprd03.prod.outlook.com
 ([fe80::f5ba:35df:1c9f:b343%4]) with mapi id 15.20.9846.016; Wed, 22 Apr 2026
 11: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=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=jlvc1dipUSw14Rck/s6sIfmOiv+yl8wNJxaYSksvvtM9prQalDYiI62HCFAF5XdNsqeVNX/obOMWqRwENib5QpbNckxtWTnwsS/Fpf6dby3wRPeERJtoS+LhMj/PynuOoZoD+cmBk8A0iDxtb4LNyDOrJQltC2Lp60V6orTpYVKL1aU1XrJ5yXfBoK9vJ6gwKY1rkWN/6UOI5VcxhVZ1cb8JkJYgfCiuTtO71FC0yA9XlGQhkS68M8HkqG6U3oYcr7Y6MIpVpY/a28tNyRJAOwccT40nYNofPz2zTSx3xM3mwXpbD5FD3sG9R4ueRNrMY4lPH55MnavFc30nJZ1h8Q==
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com;
 s=arcselector10001;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1;
 bh=7PdaqyKxYbueegbEhherWhj+6VgJE9+E5z6YUh+hXGU=;
 b=XZdOjeDrNQdzia7DETfPu0fG6b+SfloBJXxbFeyLigftbq35c4OiSK/Npexz4sZFtByLXtE5+nOH7Ic4vaxK7yVF6biaXIfJEx64mA187lK58YQPVxXs7Z7R/IsRU2jxAllg93RGxKF9TcGaqTpilnvZj5mfVx5whBtmDnOJNJ88nld3OXb7pKD2p7ImqAIwGLNcEw1f/Wb1amjmG92z3x2MKMK7b2TUdYZBLhyIRtuoHeif8rdYxV5KrGnJRovGWa+vkbvkgiV9nG4kkk7lgI8jNZyuVkI7W1scQ2SbOLyBCt4tenFTTISjmhTuqfJEMWUJlAIomG3r7yDwPcN7fg==
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=7PdaqyKxYbueegbEhherWhj+6VgJE9+E5z6YUh+hXGU=;
 b=dy43aJyY0mnC8LUiNTJydv1p2e/k7BoGS78fUcjf+54aBEcy97En9JA/CN73uRE610XHGiQWkrRy+SA3Sv/0yHu18K3THb3Z4awznp3Npym1JHQ0cTIeNnlA3ugT/NEx7/RrO3CF5J3p5ULiuEnfI7YHYCrsNl9JammOBlkfYVg=
Authentication-Results: dkim=none (message not signed)
 header.d=none;dmarc=none action=none header.from=citrix.com;
Date: Wed, 22 Apr 2026 13:38:33 +0200
From: Roger Pau =?utf-8?B?TW9ubsOp?= <roger.pau@citrix.com>
To: Mykyta Poturai <Mykyta_Poturai@epam.com>
Cc: "xen-devel@lists.xenproject.org" <xen-devel@lists.xenproject.org>,
	Stewart Hildebrand <stewart.hildebrand@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>,
	Stefano Stabellini <sstabellini@kernel.org>
Subject: Re: [PATCH v3 4/7] vpci: allow queueing of mapping operations
Message-ID: <aeizOTxvSXlLKGHX@macbook.local>
References: <cover.1775742115.git.mykyta_poturai@epam.com>
 <97e3323363ab442ccb21a00d5ed0488b6672870a.1775742115.git.mykyta_poturai@epam.com>
Content-Type: text/plain; charset=utf-8
Content-Disposition: inline
In-Reply-To: <97e3323363ab442ccb21a00d5ed0488b6672870a.1775742115.git.mykyta_poturai@epam.com>
X-ClientProxiedBy: MA4P292CA0013.ESPP292.PROD.OUTLOOK.COM
 (2603:10a6:250:2d::11) To CH7PR03MB7860.namprd03.prod.outlook.com
 (2603:10b6:610:24e::14)
MIME-Version: 1.0
X-MS-PublicTrafficType: Email
X-MS-TrafficTypeDiagnostic: CH7PR03MB7860:EE_|CY1PR03MB8148:EE_
X-MS-Office365-Filtering-Correlation-Id: 2ca57e98-e3bd-461b-81cc-08dea063b126
X-MS-Exchange-SenderADCheck: 1
X-MS-Exchange-AntiSpam-Relay: 0
X-Microsoft-Antispam:
	BCL:0;ARA:13230040|376014|1800799024|366016|18002099003|22082099003|56012099003;
X-Microsoft-Antispam-Message-Info:
	L6jCo6dxWaXbFN9EefCN6y9WpelRvxeE0xHh5vMiCHp+izEBbUu2pdtLwN03qMOJLj3PRbsnDSq5cCpZ+/y+Ichuq2x/K3cbzh7McMOkIjv5oEb/GsFjrMw9zhQtvwXbK7prNI7/z+EjB4o9/BDa2vMLidNVA4L5vpZudIr0DgE5TQigX+NIQhZ8ahkkTOZ3kEccHJJfLpQAEq5RqlXrBkl+BppjbRzemigdb8A9vKzpVe4xLdEUYrehuUpBFCEnLJoc7nV6plMTHyN/+iEfuQzNaV84IWX4Ii5WiwWVkr7iwfkEiOmKwFDuzPx5Nu5Ghb29CyLb5i0zYH8J90/+HC7mO+c6CijQ1Wkz/pEh3C9Lc2xOaP2f2EHn4sGQHOuTv3ESgB06C+IhGNYHeMN42nrc2eCg3uZdAr92rQdEYUJJ2s7HLB1qRQuXv/vws/0hslfRqugFF/krbebJfB4I1mMB7uFuJ3/VawdcHXBqRcOZ/rLETCD3OWOMMy9VCNC5D6U3kuqRheOtPfgsP8GmV3MvhVjBKyTeyi8aCRMNA/syQPvKJGCavrZIFY/14unz73VN29Rz0TVvP2uJeIlvYEuiDRTd7Ygs+Ac6lxJ7b+lQ9Puqub1Z96Jp6N3WxXBIkfBpOspJO7SH9xKJlr/mmYunk5vyGVQJgqk+w9ZdZA/Rx3jli5JvD1YgVnGV1w13
X-Forefront-Antispam-Report:
	CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:CH7PR03MB7860.namprd03.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(376014)(1800799024)(366016)(18002099003)(22082099003)(56012099003);DIR:OUT;SFP:1101;
X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1
X-MS-Exchange-AntiSpam-MessageData-0:
	=?utf-8?B?NWxJODVKQWJacHdCdkNzQ29qL1BQSjRZcXJTdEhSUHA0cjJTdldSa1hYd0xl?=
 =?utf-8?B?bXhKN0JTYllNM1NuZmc4YUh1b0xuR1VKZkJJdDgzdHcwNlRWWFJzSm9acUdF?=
 =?utf-8?B?QU5DSzBzRkJKbkQwQ0xVM1lhZGhNdVorRkFHdi9nZjFKWTFDQldwU0pESDFq?=
 =?utf-8?B?QnN3NjhTcWJaNXJCRVJ1UkxrenA1Nm4rTklIZUhPU0hGbnMzQVlrU3czdVNn?=
 =?utf-8?B?dzRVTjd0L3EwVnQ1M29YaFl2cktmYk1zc0xWSEEySE9nV1NsZUVFSzN2VXhl?=
 =?utf-8?B?d01YbXYwcUgxRGw4S0JpWS9vQ3owSTFoMy9CS09peVZFdXNaQVVEMVlnYUdz?=
 =?utf-8?B?VHNWZTBJMkhmdkJBVnhLZnN6Z3pVSUh3ekRpWkFGMmhmTDF1YVc3cWdqTmxJ?=
 =?utf-8?B?VlU0YTlHWlROK3kxS1dJWWZ5bDZxTkFHMEhEL01vU3krU0JsY2ZVNTVxQUVM?=
 =?utf-8?B?RDlTNUZEZTdMV2swdUFRRHl0cm5LcDNzVUNEamovK2FvWmR2cWI3K0FxaVdz?=
 =?utf-8?B?bmREQStUcEpTdTU5MEpHUFpCZGFWQXY0MnRGYUdudDhHc3dyTUFBRmd3REkx?=
 =?utf-8?B?d2V2dnNBZysvbVA4cGNFdFV4eVljdnA1dkxlUlUrTlNTQnJkci9CcW9NQ09r?=
 =?utf-8?B?YVNSVWwxSWNwa2tSa2xsMnY4SXZzZ0JXTVlORGhBUUxpV1U2czJYTVhOU1Vz?=
 =?utf-8?B?S216SFd3M1R6eTZCLzExZER0NkhackM2UWtXaW1mTVVSeWNFOGNWMnZKdWhN?=
 =?utf-8?B?eC9qZllkRHdMSXo0YTBxQXB6ZWIrTDFmU2xscThvcndRMTd2QlJJdjdRb3pX?=
 =?utf-8?B?bHlKRWhLVk92UFRya245WHFSbTBMdEgyVTM3aTk5SjV5SWhlZng3ZXAwOUhD?=
 =?utf-8?B?UGFkYVVUamdtaDdoUDkrQnowRnFRMG5hd0tLdmJYVUFBcGFDMmhlQU56RHpn?=
 =?utf-8?B?UXRiVFNlcG5SZEFoTWpZVlhTUUNob0diWXVUUlZvSzIwR01mU1l5UlhVM0lM?=
 =?utf-8?B?ODBWSURBRmRhZHYralJob3JmaXR5SmdJdnZjVUttYnNiRk1EbktiaTVuM0pE?=
 =?utf-8?B?dnNyYitKYjQweDhFZ3JlcUI4WDlVRGFzaWloU1MxVnBIcE9sejh1Ylh5d2Zk?=
 =?utf-8?B?cklsRHptamZjREoybHNiZWhIVXBsVXlNN3J5TnIzZU5HcnE5Yjd1T1JPOTZB?=
 =?utf-8?B?MS9xb3BheWtQZ2MycGpYT3NnTGxsYlFMc21OMVBXaTlCOTA4c0I3V1hFYSsw?=
 =?utf-8?B?dElGRW0yeGVGbXJTRUQ4aDRuelh0OWNsNktxeEZobERVZ3Mzb0hLZktENng1?=
 =?utf-8?B?R2c1Q3o4RmVYblh4eEN5aXBWaWN4M0RtRU1ESGIzQjRyUU1DWnpTUTU2S0l5?=
 =?utf-8?B?NXZQK2xLL2hEV2wzYXR3VUFmUXhHeWp1cTh3RzNYVUFPY2Q0RHUxQ2dHMzZL?=
 =?utf-8?B?RktIbG5pa29kNmg1QzVibVhINnRQUjlXNmdBYktHR05jVGJrSzNEYjJaVnFq?=
 =?utf-8?B?SEEwa1JSbktEeE1PNnpoM2VvQ3RBSUFEVi9zUmM5bkppRStxRHFRbkpBUkpW?=
 =?utf-8?B?eUFtMElqTmt5VExZUVhYUTV4UmM5YkkwMEluTTRuRkd4b1FPeWpjYjI3VlBO?=
 =?utf-8?B?UXdZYnN2YVBlZzcvQkZ5TUZkWHhTUlAxZU4yZGZyNjRjQjRya1hjT1pIeVU3?=
 =?utf-8?B?djhrb0V3MW1FeWFlQmlIMkZFZyt6b0lVTTV0MUVwZHc2RDlyWjFuS3hhMExy?=
 =?utf-8?B?RnNuMkdudk9VNjdsU05ILzVBWVVnd08wbzdkRk5LTWRueWFaQnA0bGpTZGVS?=
 =?utf-8?B?NzhHNVBST3FIaEhCcUNURm94dHBpUEMvTXlXVG93RmlEd21ockx3NGNBVGZO?=
 =?utf-8?B?WEVKQ1RKZWY2YjFzYUZKU3RxNnpnV1Qzd1czc1FJNlhUOXNuUEl0cDAvS3BV?=
 =?utf-8?B?MUNpZERUQ3FWdzVVUnlFYlQ2MTU1d0xCeGtIM0hJYy9RaUJDLzVaaW8zcVNt?=
 =?utf-8?B?S1NMN1BpRGs4WkRPK280TTcwVHVwRTFxT0dHUEVhcHdWbXFxeDlva0RHWllD?=
 =?utf-8?B?SHdzcGlkT1QxVitxNnZTSlpDLzNNcHFuT0crOHpKTVFGZGZmZjhuSmwrdDlU?=
 =?utf-8?B?di9SZXR5RkNGNVMrUnprbEJ6T1UydGMwNjZlbjNHbDM2emF6dVNLZjhzQVZS?=
 =?utf-8?B?TkpNaTYxalA2NEZyUkVZZHFENDdVWWNqaFlYTzR2MWFXQUk2dVVqUUE2RkJh?=
 =?utf-8?B?SGs0UmFiSU8xaWxwUGNBdGdGbzZHUkcybDZYS3RLRDQrNWpETVZmS2NncllS?=
 =?utf-8?B?aGFSV1VpUjNRRUN4QTBXczJZZTQzemgrTzNIa2Z6QkJ3M0h0ZUs5UT09?=
X-OriginatorOrg: citrix.com
X-MS-Exchange-CrossTenant-Network-Message-Id: 2ca57e98-e3bd-461b-81cc-08dea063b126
X-MS-Exchange-CrossTenant-AuthSource: CH7PR03MB7860.namprd03.prod.outlook.com
X-MS-Exchange-CrossTenant-AuthAs: Internal
X-MS-Exchange-CrossTenant-OriginalArrivalTime: 22 Apr 2026 11:38:36.9226
 (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: AWkzxUsEUSPccQaAsceBAySJoBUV3hRYhpL9ZCR6RwWRhK+zt8Cs4meg/20pfZ0TY27nGywCnErTn2BJPEVB8A==
X-MS-Exchange-Transport-CrossTenantHeadersStamped: CY1PR03MB8148
X-purgate-ID: tlsNG-c201ff/1776857921-E09AD443-E3C232EE/0/0
X-purgate-type: clean
X-purgate-size: 20943

On Thu, Apr 09, 2026 at 02:01:33PM +0000, Mykyta Poturai wrote:
> From: Stewart Hildebrand <stewart.hildebrand@amd.com>
> 
> Introduce vPCI BAR mapping task queue. Store information needed to
> map/unmap BARs in struct vpci_map_task. Allow queueing of BAR map/unmap
> operations in a list, thus making it possible to perform multiple p2m
> operations associated with single PCI device.

I would replace "single PCI device" with "single PCI config space
register access", it's more specific.

> This is preparatory work for further changes that need to perform
> multiple unmap/map operations before returning to guest.
> 
> At the moment, only a single operation will be queued. However, when
> multiple operations are queued, there is a check in modify_bars() to
> skip BARs already in the requested state that will no longer be
> accurate. Remove this check in preparation of upcoming changes.
> 
> Signed-off-by: Stewart Hildebrand <stewart.hildebrand@amd.com>
> Message-ID: <20260406191203.97662-3-stewart.hildebrand@amd.com>

I think you also need to add your SoB if you add it to your series.

> ---
> v2->v3:
> * new patch in this series, borrowed from [1]
> 
> [1]: https://patchew.org/Xen/20260406191203.97662-1-stewart.hildebrand@amd.com/20260406191203.97662-3-stewart.hildebrand@amd.com/
> ---
>  xen/common/domain.c        |   5 +-
>  xen/drivers/vpci/header.c  | 227 ++++++++++++++++++++++++++-----------
>  xen/drivers/vpci/vpci.c    |  28 +----
>  xen/include/xen/rangeset.h |   7 --
>  xen/include/xen/vpci.h     |  21 ++--
>  5 files changed, 179 insertions(+), 109 deletions(-)
> 
> diff --git a/xen/common/domain.c b/xen/common/domain.c
> index 5ef7db8f09..b1931be987 100644
> --- a/xen/common/domain.c
> +++ b/xen/common/domain.c
> @@ -455,8 +455,6 @@ static int vcpu_teardown(struct vcpu *v)
>   */
>  static void vcpu_destroy(struct vcpu *v)
>  {
> -    vpci_vcpu_destroy(v);
> -
>      free_vcpu_struct(v);
>  }
>  
> @@ -514,8 +512,7 @@ struct vcpu *vcpu_create(struct domain *d, unsigned int vcpu_id)
>      if ( arch_vcpu_create(v) != 0 )
>          goto fail_sched;
>  
> -    if ( vpci_vcpu_init(v) )
> -        goto fail_sched;
> +    vpci_vcpu_init(v);
>  
>      d->vcpu[vcpu_id] = v;
>      if ( vcpu_id != 0 )
> diff --git a/xen/drivers/vpci/header.c b/xen/drivers/vpci/header.c
> index 5bfb541b6a..451cdd3a6f 100644
> --- a/xen/drivers/vpci/header.c
> +++ b/xen/drivers/vpci/header.c
> @@ -23,6 +23,7 @@
>  #include <xen/lib.h>
>  #include <xen/sched.h>
>  #include <xen/softirq.h>
> +#include <xen/xvmalloc.h>
>  
>  #include <xsm/xsm.h>
>  
> @@ -35,7 +36,7 @@
>  
>  struct map_data {
>      struct domain *d;
> -    const struct vpci_bar *bar;
> +    const struct vpci_bar_map *bar;
>      bool map;
>  };
>  
> @@ -174,32 +175,20 @@ static void modify_decoding(const struct pci_dev *pdev, uint16_t cmd,
>          ASSERT_UNREACHABLE();
>  }
>  
> -bool vpci_process_pending(struct vcpu *v)
> +static int vpci_process_map_task(const struct pci_dev *pdev,
> +                                 struct vpci_map_task *task)
>  {
> -    const struct pci_dev *pdev = v->vpci.pdev;
> -    struct vpci_header *header = NULL;
>      unsigned int i;
>  
> -    if ( !pdev )
> -        return false;
> -
> -    read_lock(&v->domain->pci_lock);
> -
> -    if ( !pdev->vpci || (v->domain != pdev->domain) )
> -    {
> -        v->vpci.pdev = NULL;
> -        read_unlock(&v->domain->pci_lock);
> -        return false;
> -    }
> +    ASSERT(rw_is_locked(&pdev->domain->pci_lock));
>  
> -    header = &pdev->vpci->header;
> -    for ( i = 0; i < ARRAY_SIZE(header->bars); i++ )
> +    for ( i = 0; i < ARRAY_SIZE(task->bars); i++ )
>      {
> -        struct vpci_bar *bar = &header->bars[i];
> -        struct rangeset *mem = v->vpci.mem[i];
> +        struct vpci_bar_map *bar = &task->bars[i];
> +        struct rangeset *mem = bar->mem;
>          struct map_data data = {
> -            .d = v->domain,
> -            .map = v->vpci.cmd & PCI_COMMAND_MEMORY,
> +            .d = pdev->domain,
> +            .map = task->cmd & PCI_COMMAND_MEMORY,
>              .bar = bar,
>          };
>          int rc;
> @@ -210,58 +199,116 @@ bool vpci_process_pending(struct vcpu *v)
>          rc = rangeset_consume_ranges(mem, map_range, &data);
>  
>          if ( rc == -ERESTART )
> -        {
> -            read_unlock(&v->domain->pci_lock);
> -            return true;
> -        }
> +            return rc;
>  
>          if ( rc )
>          {
>              spin_lock(&pdev->vpci->lock);
>              /* Disable memory decoding unconditionally on failure. */
> -            modify_decoding(pdev, v->vpci.cmd & ~PCI_COMMAND_MEMORY,
> -                            false);
> +            modify_decoding(pdev, task->cmd & ~PCI_COMMAND_MEMORY, false);
>              spin_unlock(&pdev->vpci->lock);
>  
> -            /* Clean all the rangesets */
> -            for ( i = 0; i < ARRAY_SIZE(header->bars); i++ )
> -                if ( !rangeset_is_empty(v->vpci.mem[i]) )
> -                     rangeset_purge(v->vpci.mem[i]);
> +            if ( !is_hardware_domain(pdev->domain) )
> +                domain_crash(pdev->domain);
> +
> +            return rc;
> +        }
> +    }
> +
> +    spin_lock(&pdev->vpci->lock);
> +    modify_decoding(pdev, task->cmd, task->rom_only);
> +    spin_unlock(&pdev->vpci->lock);
> +
> +    return 0;
> +}
> +
> +static void destroy_map_task(struct vpci_map_task *task)
> +{
> +    unsigned int i;
> +
> +    if ( !task )
> +    {
> +        ASSERT_UNREACHABLE();
> +        return;
> +    }
> +
> +    for ( i = 0; i < ARRAY_SIZE(task->bars); i++ )
> +        rangeset_destroy(task->bars[i].mem);
> +
> +    xvfree(task);
> +}
> +
> +static void clear_map_queue(struct vcpu *v)
> +{
> +    struct vpci_map_task *task;
> +
> +    while ( (task = list_first_entry_or_null(&v->vpci.task_queue,
> +                                             struct vpci_map_task,
> +                                             next)) != NULL )
> +    {
> +        list_del(&task->next);
> +        destroy_map_task(task);
> +    }
> +}
> +
> +bool vpci_process_pending(struct vcpu *v)
> +{
> +    const struct pci_dev *pdev = v->vpci.pdev;
> +    struct vpci_map_task *task;
>  
> -            v->vpci.pdev = NULL;
> +    if ( !pdev )
> +        return false;
>  
> +    read_lock(&v->domain->pci_lock);
> +
> +    if ( !pdev->vpci || (v->domain != pdev->domain) )
> +    {
> +        clear_map_queue(v);
> +        v->vpci.pdev = NULL;
> +        read_unlock(&v->domain->pci_lock);
> +        return false;
> +    }
> +
> +    while ( (task = list_first_entry_or_null(&v->vpci.task_queue,
> +                                             struct vpci_map_task,
> +                                             next)) != NULL )
> +    {
> +        int rc = vpci_process_map_task(pdev, task);
> +
> +        if ( rc == -ERESTART )
> +        {
>              read_unlock(&v->domain->pci_lock);
> +            return true;
> +        }
>  
> -            if ( !is_hardware_domain(v->domain) )
> -                domain_crash(v->domain);
> +        list_del(&task->next);
> +        destroy_map_task(task);
>  
> -            return false;
> +        if ( rc )
> +        {
> +            clear_map_queue(v);
> +            break;
>          }
>      }
>      v->vpci.pdev = NULL;
>  
> -    spin_lock(&pdev->vpci->lock);
> -    modify_decoding(pdev, v->vpci.cmd, v->vpci.rom_only);
> -    spin_unlock(&pdev->vpci->lock);
> -
>      read_unlock(&v->domain->pci_lock);
>  
>      return false;
>  }
>  
>  static int __init apply_map(struct domain *d, const struct pci_dev *pdev,
> -                            uint16_t cmd)
> +                            struct vpci_map_task *task)
>  {
> -    struct vpci_header *header = &pdev->vpci->header;
>      int rc = 0;
>      unsigned int i;
>  
>      ASSERT(rw_is_write_locked(&d->pci_lock));
>  
> -    for ( i = 0; i < ARRAY_SIZE(header->bars); i++ )
> +    for ( i = 0; i < ARRAY_SIZE(task->bars); i++ )
>      {
> -        struct vpci_bar *bar = &header->bars[i];
> -        struct rangeset *mem = current->vpci.mem[i];
> +        struct vpci_bar_map *bar = &task->bars[i];
> +        struct rangeset *mem = bar->mem;
>          struct map_data data = { .d = d, .map = true, .bar = bar };
>  
>          if ( rangeset_is_empty(mem) )
> @@ -281,15 +328,52 @@ static int __init apply_map(struct domain *d, const struct pci_dev *pdev,
>          }
>      }
>      if ( !rc )
> -        modify_decoding(pdev, cmd, false);
> +        modify_decoding(pdev, task->cmd, false);
>  
>      return rc;
>  }
>  
> -static void defer_map(const struct pci_dev *pdev, uint16_t cmd, bool rom_only)
> +static struct vpci_map_task *alloc_map_task(const struct pci_dev *pdev,
> +                                            uint16_t cmd, bool rom_only)
> +{
> +    struct vpci_map_task *task;
> +    unsigned int i;
> +
> +    task = xvzalloc(struct vpci_map_task);
> +
> +    if ( !task )
> +        return NULL;
> +
> +    for ( i = 0; i < ARRAY_SIZE(task->bars); i++ )
> +    {
> +        if ( !MAPPABLE_BAR(&pdev->vpci->header.bars[i]) )
> +            continue;
> +
> +        task->bars[i].mem = rangeset_new(pdev->domain, NULL,
> +                                         RANGESETF_no_print);
> +
> +        if ( !task->bars[i].mem )
> +        {
> +            destroy_map_task(task);
> +            return NULL;
> +        }
> +
> +        task->bars[i].addr = pdev->vpci->header.bars[i].addr;
> +        task->bars[i].guest_addr = pdev->vpci->header.bars[i].guest_addr;
> +    }
> +
> +    task->cmd = cmd;
> +    task->rom_only = rom_only;
> +
> +    return task;
> +}
> +
> +static void defer_map(const struct pci_dev *pdev, struct vpci_map_task *task)
>  {
>      struct vcpu *curr = current;
>  
> +    ASSERT(!curr->vpci.pdev || curr->vpci.pdev == pdev);
> +
>      /*
>       * FIXME: when deferring the {un}map the state of the device should not
>       * be trusted. For example the enable bit is toggled after the device
> @@ -297,8 +381,8 @@ static void defer_map(const struct pci_dev *pdev, uint16_t cmd, bool rom_only)
>       * started for the same device if the domain is not well-behaved.
>       */
>      curr->vpci.pdev = pdev;
> -    curr->vpci.cmd = cmd;
> -    curr->vpci.rom_only = rom_only;
> +    list_add_tail(&task->next, &curr->vpci.task_queue);
> +
>      /*
>       * Raise a scheduler softirq in order to prevent the guest from resuming
>       * execution with pending mapping operations, to trigger the invocation
> @@ -313,11 +397,17 @@ int vpci_modify_bars(const struct pci_dev *pdev, uint16_t cmd, bool rom_only)
>      struct pci_dev *tmp;
>      const struct domain *d;
>      const struct vpci_msix *msix = pdev->vpci->msix;
> +    struct vpci_map_task *task;
>      unsigned int i, j;
>      int rc;
>  
>      ASSERT(rw_is_write_locked(&pdev->domain->pci_lock));
>  
> +    task = alloc_map_task(pdev, cmd, rom_only);
> +
> +    if ( !task )
> +        return -ENOMEM;
> +
>      /*
>       * Create a rangeset per BAR that represents the current device memory
>       * region and compare it against all the currently active BAR memory
> @@ -333,19 +423,18 @@ int vpci_modify_bars(const struct pci_dev *pdev, uint16_t cmd, bool rom_only)
>      for ( i = 0; i < ARRAY_SIZE(header->bars); i++ )
>      {
>          struct vpci_bar *bar = &header->bars[i];
> -        struct rangeset *mem = current->vpci.mem[i];
> +        struct rangeset *mem = task->bars[i].mem;
>          unsigned long start = PFN_DOWN(bar->addr);
>          unsigned long end = PFN_DOWN(bar->addr + bar->size - 1);
>          unsigned long start_guest = PFN_DOWN(bar->guest_addr);
>          unsigned long end_guest = PFN_DOWN(bar->guest_addr + bar->size - 1);
>  
> -        ASSERT(mem);
> +        if ( !mem )
> +            continue;
>  
>          if ( !MAPPABLE_BAR(bar) ||
>               (rom_only ? bar->type != VPCI_BAR_ROM
> -                       : (bar->type == VPCI_BAR_ROM && !header->rom_enabled)) ||
> -             /* Skip BARs already in the requested state. */
> -             bar->enabled == !!(cmd & PCI_COMMAND_MEMORY) )
> +                       : (bar->type == VPCI_BAR_ROM && !header->rom_enabled)) )
>              continue;
>  
>          if ( !pci_check_bar(pdev, _mfn(start), _mfn(end)) )
> @@ -368,7 +457,8 @@ int vpci_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(mem, start_guest, end_guest);
> @@ -376,13 +466,13 @@ int vpci_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. */
>          for ( j = 0; j < i; j++ )
>          {
> -            struct rangeset *prev_mem = current->vpci.mem[j];
> +            struct rangeset *prev_mem = task->bars[j].mem;
>  
>              if ( rangeset_is_empty(prev_mem) )
>                  continue;
> @@ -393,7 +483,7 @@ int vpci_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;
>              }
>          }
>  
> @@ -403,7 +493,7 @@ int vpci_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;
>          }
>      }
>  
> @@ -414,9 +504,9 @@ int vpci_modify_bars(const struct pci_dev *pdev, uint16_t cmd, bool rom_only)
>          unsigned long end = PFN_DOWN(vmsix_table_addr(pdev->vpci, i) +
>                                       vmsix_table_size(pdev->vpci, i) - 1);
>  
> -        for ( j = 0; j < ARRAY_SIZE(current->vpci.mem); j++ )
> +        for ( j = 0; j < ARRAY_SIZE(task->bars); j++ )
>          {
> -            struct rangeset *mem = current->vpci.mem[j];
> +            struct rangeset *mem = task->bars[j].mem;
>  
>              if ( rangeset_is_empty(mem) )
>                  continue;
> @@ -427,7 +517,7 @@ int vpci_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;
>              }
>          }
>      }
> @@ -471,7 +561,7 @@ int vpci_modify_bars(const struct pci_dev *pdev, uint16_t cmd, bool rom_only)
>                  for ( j = 0; j < ARRAY_SIZE(header->bars); j++)
>                  {
>                      const struct vpci_bar *bar = &header->bars[j];
> -                    struct rangeset *mem = current->vpci.mem[j];
> +                    struct rangeset *mem = task->bars[j].mem;
>  
>                      if ( !rangeset_overlaps_range(mem, start, end) ||
>                           /*
> @@ -490,7 +580,7 @@ int vpci_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;
>                      }
>                  }
>              }
> @@ -513,12 +603,19 @@ int vpci_modify_bars(const struct pci_dev *pdev, uint16_t cmd, bool rom_only)
>           * will always be to establish mappings and process all the BARs.
>           */
>          ASSERT((cmd & PCI_COMMAND_MEMORY) && !rom_only);
> -        return apply_map(pdev->domain, pdev, cmd);
> +        rc = apply_map(pdev->domain, pdev, task);
> +        destroy_map_task(task);
> +        return rc;
>      }
>  
> -    defer_map(pdev, cmd, rom_only);
> +    defer_map(pdev, task);
>  
>      return 0;
> +
> + fail:
> +    destroy_map_task(task);
> +
> +    return rc;
>  }
>  
>  static void cf_check cmd_write(
> diff --git a/xen/drivers/vpci/vpci.c b/xen/drivers/vpci/vpci.c
> index d069ca6d9c..ce9fb5b357 100644
> --- a/xen/drivers/vpci/vpci.c
> +++ b/xen/drivers/vpci/vpci.c
> @@ -24,33 +24,9 @@
>  
>  #ifdef __XEN__
>  
> -void vpci_vcpu_destroy(struct vcpu *v)
> +void vpci_vcpu_init(struct vcpu *v)
>  {
> -    if ( !has_vpci(v->domain) && !is_idle_domain(v->domain) )
> -        return;
> -
> -    for ( unsigned int i = 0; i < ARRAY_SIZE(v->vpci.mem); i++ )
> -        RANGESET_DESTROY(v->vpci.mem[i]);
> -}
> -
> -int vpci_vcpu_init(struct vcpu *v)
> -{
> -    unsigned int i;
> -
> -    if ( !has_vpci(v->domain) && !is_idle_domain(v->domain) )
> -        return 0;
> -
> -    for ( i = 0; i < ARRAY_SIZE(v->vpci.mem); i++ )
> -    {
> -        char str[32];
> -
> -        snprintf(str, sizeof(str), "%pv:BAR%u", v, i);
> -        v->vpci.mem[i] = rangeset_new(v->domain, str, RANGESETF_no_print);
> -        if ( !v->vpci.mem[i] )
> -            return -ENOMEM;
> -    }
> -
> -    return 0;
> +    INIT_LIST_HEAD(&v->vpci.task_queue);
>  }
>  
>  #ifdef CONFIG_HAS_VPCI_GUEST_SUPPORT
> diff --git a/xen/include/xen/rangeset.h b/xen/include/xen/rangeset.h
> index f01e00ec92..817505badf 100644
> --- a/xen/include/xen/rangeset.h
> +++ b/xen/include/xen/rangeset.h
> @@ -40,13 +40,6 @@ struct rangeset *rangeset_new(
>  void rangeset_destroy(
>      struct rangeset *r);
>  
> -/* Destroy a rangeset, and zero the pointer to it. */
> -#define RANGESET_DESTROY(r)  \
> -    ({                       \
> -        rangeset_destroy(r); \
> -        (r) = NULL;          \
> -    })

You introduce this in the previous patch, and removing it in the next
patch?  Please try to avoid such spurious usage, it's not good to
waste effort reviewing newly introduced code that's to be removed by
a patch in the same series.

Unless very special cases, we usually recommend submitters to attempt
to make sure code introduced in a patch series is consistent, so that
we don't end up in a situation like this where you are removing a lot
of code that was introduced by the previous patch.

You likely want to split the changes slightly differently here, maybe
the previous patch should introduce the non-functional changes, like
the change to use mem instead of bar->mem or similar, and one patch
that introduces the usage of the linked-list task queue.

> -
>  /*
>   * Set a limit on the number of ranges that may exist in set @r.
>   * NOTE: This must be called while @r is empty.
> diff --git a/xen/include/xen/vpci.h b/xen/include/xen/vpci.h
> index b55bacbe6e..e34f7abe6d 100644
> --- a/xen/include/xen/vpci.h
> +++ b/xen/include/xen/vpci.h
> @@ -19,8 +19,7 @@
>   */
>  #define VPCI_MAX_VIRT_DEV       (PCI_SLOT(~0) + 1)
>  
> -void vpci_vcpu_destroy(struct vcpu *v);
> -int vpci_vcpu_init(struct vcpu *v);
> +void vpci_vcpu_init(struct vcpu *v);
>  
>  /* Assign vPCI to device by adding handlers. */
>  int __must_check vpci_assign_device(struct pci_dev *pdev);
> @@ -155,14 +154,23 @@ struct vpci {
>  };
>  
>  #ifdef __XEN__
> -struct vpci_vcpu {
> +struct vpci_map_task {
>      /* Per-vcpu structure to store state while {un}mapping of PCI BARs. */
> -    const struct pci_dev *pdev;
> -    struct rangeset *mem[ARRAY_SIZE(((struct vpci_header *)NULL)->bars)];
> +    struct list_head next;
> +    struct vpci_bar_map {
> +        uint64_t addr;
> +        uint64_t guest_addr;
> +        struct rangeset *mem;
> +    } bars[ARRAY_SIZE(((struct vpci_header *)NULL)->bars)];

I'm a bit puzzled (possibly missing something), but why are you
keeping this vpci_bar_map array here?  AFAICT map tasks are allocated
on-demand after this change (by using {alloc,destroy}_map_task()).

Thanks, Roger.


From xen-devel-bounces@lists.xenproject.org Wed Apr 22 11:43:03 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 22 Apr 2026 11:43:03 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1290368.1569970 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wFVyt-0001LT-4M; Wed, 22 Apr 2026 11:42:59 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1290368.1569970; Wed, 22 Apr 2026 11:42: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 1wFVyt-0001LK-1V; Wed, 22 Apr 2026 11:42:59 +0000
Received: by outflank-mailman (input) for mailman id 1290368;
 Wed, 22 Apr 2026 11:42:58 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92) id 1wFVys-0001LE-FF
 for xen-devel@lists.xenproject.org; Wed, 22 Apr 2026 11:42:58 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wFVyr-0071tJ-S5
 for xen-devel@lists.xenproject.org; Wed, 22 Apr 2026 13:42:57 +0200
Received: from [10.42.69.1] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <Michal.Orzel@amd.com>)
 id 69e8b43e-5cb7-0a2a0a5109dd-0a2a4501cfbe-6
 for <xen-devel@lists.xenproject.org>; Wed, 22 Apr 2026 13:42:57 +0200
Received: from [40.93.195.59]
 (helo=SN4PR2101CU001.outbound.protection.outlook.com)
 by tlsNG-d62444.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.1)
 (envelope-from <Michal.Orzel@amd.com>)
 id 69e8b43f-c1f2-0a2a45010019-285dc33bb79c-4
 for <xen-devel@lists.xenproject.org>; Wed, 22 Apr 2026 13:42:57 +0200
Received: from PH8PR02CA0016.namprd02.prod.outlook.com (2603:10b6:510:2d0::25)
 by MW6PR12MB8950.namprd12.prod.outlook.com (2603:10b6:303:24a::8)
 with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9846.20; Wed, 22 Apr
 2026 11:42:52 +0000
Received: from CY4PEPF0000EE37.namprd05.prod.outlook.com
 (2603:10b6:510:2d0:cafe::72) by PH8PR02CA0016.outlook.office365.com
 (2603:10b6:510:2d0::25) with Microsoft SMTP Server (version=TLS1_3,
 cipher=TLS_AES_256_GCM_SHA384) id 15.20.9791.48 via Frontend Transport; Wed,
 22 Apr 2026 11:42:50 +0000
Received: from satlexmb07.amd.com (165.204.84.17) by
 CY4PEPF0000EE37.mail.protection.outlook.com (10.167.242.43) with Microsoft
 SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id
 15.20.9846.18 via Frontend Transport; Wed, 22 Apr 2026 11:42:49 +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.17; Wed, 22 Apr
 2026 06:42:49 -0500
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.17; Wed, 22 Apr
 2026 04:42:40 -0700
Received: from [10.71.194.215] (10.180.168.240) by satlexmb07.amd.com
 (10.181.42.216) with Microsoft SMTP Server id 15.2.2562.17 via Frontend
 Transport; Wed, 22 Apr 2026 06:42:21 -0500
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@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=lF0O8gMa8DID+fTgMBvI+g0D3D2COPpUeJx7U20+MwGrzyoZuXl91O3hfZ168Fd1k2x+nuVimlAKwuQ//wiG3+3ADaFJUXds0IEqFMCNYI5mKlI+zBQLeYKNv0SG2WhQ++OrLzgwUHTHuu5b31Tyi5DfVKj/wQLxsRLVCZgfiQiDIH5OMSwq48seb9DgCXeJNJ7LCaWloC1KJOMT6EiFphQCw4S6ZTbwH8uO6IFBu4hg+B3PrYIkiigbP1j7inGHf8zMy3RrqWRxkk+EbiVA9575sG5a3HWXIHMPG4NXp+xUdUjqH9rDn42OX5BY50eNtWPF/iTjmqB9HTR+t4Zp0g==
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com;
 s=arcselector10001;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1;
 bh=hZw/CmPc1QOD6ePZ9wEN5SKcOWeF5ECPU5BRMNQFpfQ=;
 b=T/D606EZ+5x09Lh7trEN5rw3tKd1D0SeKC38CLIPYzfb7lPKfSahG0Bq5HEFGG3TCmMCKP21vdKNTkZZaKpLqcBGu3/RXSpgAmGVk4EiZzTyPsqmoikbYyNU7RZoj7oB/xkxSh8+VY3lMDyE0lqYRY7MJeFFWFM+WT+CEu5KmxdcpiSac5NoTc8KSqUvs4BW+2FaU6abEGnVtN8l207zGlBVmx7ME9YzM0mpsd50aku4AwAVQ/NEIQJHm6HRPN737zY91yzjcShO7+ggV1nvrjX9aiZueVGUKgHrhK/x0cUJnq1ty6drtWtrYnNwkErAOJoR49/zCUYSt+HyG2xt3A==
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=hZw/CmPc1QOD6ePZ9wEN5SKcOWeF5ECPU5BRMNQFpfQ=;
 b=MdZCZNXN/FNaJXoAPEArEP7DTHU5CwdxdC8EIxzurAB9UZZ4X9wYZ9LO/QRyuys5I4ksdcAX9nnqW+eeRFeRFOweayEgDeOh50cTVjAWjYdpU4eQCThW7pDwJfalvIJg/rWRSlqMIS/EXXixY395n7taRwb+59IdF52hvuQfGOU=
X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 165.204.84.17)
 smtp.mailfrom=amd.com; dkim=none (message not signed)
 header.d=none;dmarc=pass action=none header.from=amd.com;
Received-SPF: Pass (protection.outlook.com: domain of amd.com designates
 165.204.84.17 as permitted sender) receiver=protection.outlook.com;
 client-ip=165.204.84.17; helo=satlexmb07.amd.com; pr=C
Message-ID: <6c02e12a-e091-4416-980b-5a7a24ba71d8@amd.com>
Date: Wed, 22 Apr 2026 13:42:18 +0200
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH v2 1/3] xen/dom0less: introduce next_phandle in struct
 kernel_info
To: Oleksii Kurochko <oleksii.kurochko@gmail.com>,
	<xen-devel@lists.xenproject.org>
CC: Stefano Stabellini <sstabellini@kernel.org>, Julien Grall
	<julien@xen.org>, Bertrand Marquis <bertrand.marquis@arm.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.pau@citrix.com>
References: <cover.1776780944.git.oleksii.kurochko@gmail.com>
 <4a9d79a9ef2bf25e904c9f49ddef7d5a3f3a4ac2.1776780944.git.oleksii.kurochko@gmail.com>
From: "Orzel, Michal" <michal.orzel@amd.com>
Content-Language: en-US
In-Reply-To: <4a9d79a9ef2bf25e904c9f49ddef7d5a3f3a4ac2.1776780944.git.oleksii.kurochko@gmail.com>
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: 7bit
X-EOPAttributedMessage: 0
X-MS-PublicTrafficType: Email
X-MS-TrafficTypeDiagnostic: CY4PEPF0000EE37:EE_|MW6PR12MB8950:EE_
X-MS-Office365-Filtering-Correlation-Id: 447daf32-85ea-4dde-70ff-08dea06447f2
X-MS-Exchange-SenderADCheck: 1
X-MS-Exchange-AntiSpam-Relay: 0
X-Microsoft-Antispam:
	BCL:0;ARA:13230040|82310400026|36860700016|1800799024|376014|13003099007|56012099003|18002099003|22082099003;
X-Microsoft-Antispam-Message-Info:
	ecDK+eY72jJKfPPpwOve1ttCfCqN9eFB45YV2gbB5DXQTKyiWwo1mPqUJJfma9xFSUNECTy7EeLRJyNUMnJqkllGXavc2EB5khU7hybSUbow4ER/L0ouz/j8O19t4zNGboK+EIbdeF7r8BwGMkxGHiV3zVSDFryP2E1D55zRh0JajB1NKG1zfMAdRkaOYW0atIKwos5WmcUTC6dIM6WWmV58/Z37VG0oQrcd/PzXy1lK9UOm0iosJFZ2RQNUmQzqe7OfjlhfRHb+GZ/B6nLl0SbEH+w250BgVktSRIaoRvwMULatui7UsVq165grMKV3CAgB0FPs2OmhpR0XVgNavGyq4eB35SJJ6R5tWsFPhmQ6DAgpuRBiUEdq8a8gVx8nYykIWz6DdlTnyqgaRa5skae/M4z9lF6O/mUuovsohQ2YQ502WnTvk+JjbnsvHaSa4NirW6+HU9i/9PzWQzgOA5/vdVLKR+NY6YM4NjfupWdsIuh25eYqPkUiwroq+9ccukPuxmPTp7nXQbMq5frXQIipg0tqQp+h5hMh7r42j+dXLntCY+GBkKtd2tYBAhcve+SFdM4uH3OKcLEa7U0Y4DMhJoVTPHoQHCIqZ7onIG7DqET52e38GDG2HOw/O9beQGwvtHEDOBbLD4KiVScJXwRrl5RPrTuHuGTdn81l+tIQbumUPrqsUp2PxZq6oSsz+vNptZcwT+YfPMMXFTKBh7N7E9ymGLf+djf/lnHfLzNvJzxas89XwmRhIP/+zdkVbx/CW/WJvbEdX0dFh2xYhg==
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)(1800799024)(376014)(13003099007)(56012099003)(18002099003)(22082099003);DIR:OUT;SFP:1101;
X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1
X-MS-Exchange-AntiSpam-MessageData-0:
	kSBXeR025ufhbY7/pzFham5FQbdaT2vzOnvVIj/9fJ5HU1pHdiWPdeAA4MnW5T0aa2Oaj2YvqisQ1TzYk5vwFWn8aDj592fl6elmjGyHXq/Lw66nPF89HNST5L7ATxS9Nl7OUAPsrPvHMILVUvMw5aD0712A5WcQKFdqdxZ6m5QFfdVSZPL7Hb2Sjztcf0dXR7ip8HcCurDeKxJucZHOL/8rT1HuHTd5kFYOoCvk/V4i5XS8+bFcsdhqT5fTFErVkfhLjbwX8REFJMpXKB0b69Y1aHIR1W2EBl6oTkVMHC+jFsQYoApaAlGobvrBvpMpu17QCRcKBgnas4aLEYh0vLDVhsbdoWN3A70tkmqpH0NnIXvK4RPMw9EEYtBDOn1aS6kLLBuZuCeuniFztnXiiMAqbLkkI/5S5RbhVzNK/qmeB0QqzYtcE6Kd9DO0AUn3
X-OriginatorOrg: amd.com
X-MS-Exchange-CrossTenant-OriginalArrivalTime: 22 Apr 2026 11:42:49.6558
 (UTC)
X-MS-Exchange-CrossTenant-Network-Message-Id: 447daf32-85ea-4dde-70ff-08dea06447f2
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:
	CY4PEPF0000EE37.namprd05.prod.outlook.com
X-MS-Exchange-CrossTenant-AuthAs: Anonymous
X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem
X-MS-Exchange-Transport-CrossTenantHeadersStamped: MW6PR12MB8950
X-purgate-ID: tlsNG-d62444/1776858177-B5E6BFF4-2E385CF7/10/73395122804
X-purgate-type: spam
X-purgate-size: 6758



On 22/04/2026 11:44, Oleksii Kurochko wrote:
> There are cases where it is necessary to know the next available phandle
> number in order to generate phandles for guest device nodes.
> 
> When a partial FDT (pfdt) is provided, special care is needed during
> initialization of next_phandle, as the pfdt may already contain a dummy
> interrupt controller node with a phandle assigned to it. next_phandle
> must therefore be initialized to one past the highest phandle already
> present in the pfdt, to avoid collisions.
> 
> Since next_phandle may be needed for the very first guest node generated,
> domain_handle_dtb_boot_module() is moved earlier in prepare_dtb_domU().
> The new call site also aligns better with the existing comment stating
> that domain_handle_dtb_boot_module() must be called before the rest of
> the device tree is generated.
> 
> Introduce alloc_phandle() to ensure that phandles allocated for guest
> nodes do not overlap the Xen-reserved phandle range.  This helper will
> be used by subsequent patches (by RISC-V at the moment).
> 
> Signed-off-by: Oleksii Kurochko <oleksii.kurochko@gmail.com>
> ---
> Here is an example of generated guest DTB:
>     cpus {
>     ...
>       cpu@0 {
>     ...
>         interrupt-controller {
>           compatible = "riscv,cpu-intc";
>           #interrupt-cells = <0x1>;
>           interrupt-controller;
>           phandle = <0xfdea>;
>         };
>       };
>     };
> 
>     /soc/imsics@28000000 {
> 
>       interrupts-extended = <0xfdea 0x9 >;
> 
>       phandle = <0xfdeb>;
>     };
> 
>     /soc/aplic@d000000 {
>     ...
>       msi-parent = <0xfdeb>;
>       phandle = <0x1>;
>     };
> 
> Note that phandle is generated in this example not by get_next_free_phandle().
> 
> For non RISC-V people, APLIC is an interrupt controller (something like GIC in
> Arm), IMSIC it is interrupt controller which provides MSI and connects to
> each CPU.
> 
> [1] https://www.kernel.org/doc/Documentation/devicetree/bindings/interrupt-controller/riscv%2Ccpu-intc.txt
> ---
> Changes in v2:
>  - s/free_phandle/next_phandle.
>  - s/get_next_free_phandle/alloc_phandle.
> ---
>  xen/common/device-tree/dom0less-build.c | 44 ++++++++++++++++++-------
>  xen/include/xen/fdt-domain-build.h      |  6 ++++
>  xen/include/xen/fdt-kernel.h            |  3 ++
>  3 files changed, 41 insertions(+), 12 deletions(-)
> 
> diff --git a/xen/common/device-tree/dom0less-build.c b/xen/common/device-tree/dom0less-build.c
> index 840d14419da2..ca3ac84a3ef3 100644
> --- a/xen/common/device-tree/dom0less-build.c
> +++ b/xen/common/device-tree/dom0less-build.c
> @@ -389,6 +389,24 @@ static int __init domain_handle_dtb_boot_module(struct domain *d,
>      if ( res < 0 )
>          goto out;
>  
> +    /*
> +     * Find the highest phandle in the partial FDT so next_phandle starts
> +     * above it, avoiding collisions with pfdt's own phandle assignments.
> +     */
> +    res = fdt_generate_phandle(pfdt, &kinfo->next_phandle);
> +    if ( res )
> +    {
> +        res = (res == -FDT_ERR_NOPHANDLES) ? -EOVERFLOW : -EINVAL;
> +        goto out;
> +    }
> +
> +    if ( kinfo->next_phandle >= GUEST_PHANDLE_GIC )
> +    {
> +        dprintk(XENLOG_ERR, "Phandle allocation overlaps Xen reserved range\n");
> +        res = -EOVERFLOW;
> +        goto out;
> +    }
> +
>      for ( node_next = fdt_first_subnode(pfdt, 0);
>            node_next > 0;
>            node_next = fdt_next_subnode(pfdt, node_next) )
> @@ -459,6 +477,8 @@ static int __init prepare_dtb_domU(struct domain *d, struct kernel_info *kinfo)
>      BUILD_BUG_ON(DOMU_DTB_SIZE > SZ_2M);
>  
>      kinfo->phandle_intc = GUEST_PHANDLE_GIC;
> +    kinfo->next_phandle = 1;
> +    BUILD_BUG_ON(GUEST_PHANDLE_GIC == 1);
I'm not sure that we need this. It does not seem to be useful. If you want to
keep it though, I think you want to compare to next_phandle, not opencoding it's
initial value.

>  
>  #ifdef CONFIG_GRANT_TABLE
>      kinfo->gnttab_start = GUEST_GNTTAB_BASE;
> @@ -499,6 +519,18 @@ static int __init prepare_dtb_domU(struct domain *d, struct kernel_info *kinfo)
>      if ( ret )
>          goto err;
>  
> +    /*
> +     * domain_handle_dtb_boot_module() must be called before the rest of the
> +     * device tree is generated because it sets phandle_intc and next_phandle,
> +     * which subsequent node generation depends on.
> +     */
> +    if ( kinfo->dtb )
> +    {
> +        ret = domain_handle_dtb_boot_module(d, kinfo);
> +        if ( ret )
> +            goto err;
> +    }
> +
>      ret = make_chosen_node(kinfo);
>      if ( ret )
>          goto err;
> @@ -516,18 +548,6 @@ static int __init prepare_dtb_domU(struct domain *d, struct kernel_info *kinfo)
>      if ( ret )
>          goto err;
>  
> -    /*
> -     * domain_handle_dtb_boot_module has to be called before the rest of
> -     * the device tree is generated because it depends on the value of
> -     * the field phandle_intc.
> -     */
> -    if ( kinfo->dtb )
> -    {
> -        ret = domain_handle_dtb_boot_module(d, kinfo);
> -        if ( ret )
> -            goto err;
> -    }
> -
>      ret = make_intc_domU_node(kinfo);
>      if ( ret )
>          goto err;
> diff --git a/xen/include/xen/fdt-domain-build.h b/xen/include/xen/fdt-domain-build.h
> index 1d9e77df0eb3..a604f3983fe6 100644
> --- a/xen/include/xen/fdt-domain-build.h
> +++ b/xen/include/xen/fdt-domain-build.h
> @@ -63,6 +63,12 @@ int find_unallocated_memory(const struct kernel_info *kinfo,
>                                        unsigned long e_gfn,
>                                        void *data));
>  
> +/* Return 0 (invalid phandle) if the Xen-reserved range has been reached */
> +static inline uint32_t alloc_phandle(struct kernel_info *kinfo)
> +{
> +    return kinfo->next_phandle >= GUEST_PHANDLE_GIC ? 0 : kinfo->next_phandle++;
> +}
> +
>  #endif /* __XEN_FDT_DOMAIN_BUILD_H__ */
>  
>  /*
> diff --git a/xen/include/xen/fdt-kernel.h b/xen/include/xen/fdt-kernel.h
> index aa977a50f4fc..438adfe3855b 100644
> --- a/xen/include/xen/fdt-kernel.h
> +++ b/xen/include/xen/fdt-kernel.h
> @@ -44,6 +44,9 @@ struct kernel_info {
>      /* Interrupt controller phandle */
>      uint32_t phandle_intc;
>  
> +    /* Next free phandle available for assigning to guest device nodes */
I would mention not to use this value directly but rather obtain from
alloc_phandle. This value should only really be used by alloc_phandle.

~Michal

> +    uint32_t next_phandle;
> +
>      /* loader to use for this kernel */
>      void (*load)(struct kernel_info *info);
>  



From xen-devel-bounces@lists.xenproject.org Wed Apr 22 11:45:26 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 22 Apr 2026 11:45:26 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1290377.1569978 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wFW1E-0001qo-HD; Wed, 22 Apr 2026 11:45:24 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1290377.1569978; Wed, 22 Apr 2026 11:45: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 1wFW1E-0001qh-EB; Wed, 22 Apr 2026 11:45:24 +0000
Received: by outflank-mailman (input) for mailman id 1290377;
 Wed, 22 Apr 2026 11:45:23 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92) id 1wFW1D-0001qa-8S
 for xen-devel@lists.xenproject.org; Wed, 22 Apr 2026 11:45:23 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wFW1C-0072Du-L9
 for xen-devel@lists.xenproject.org; Wed, 22 Apr 2026 13:45:22 +0200
Received: from [10.42.69.1] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <oleksii.kurochko@gmail.com>)
 id 69e8b4c8-e002-0a2a0a5209dd-0a2a45018634-36
 for <xen-devel@lists.xenproject.org>; Wed, 22 Apr 2026 13:45:22 +0200
Received: from [209.85.167.50] (helo=mail-lf1-f50.google.com)
 by tlsNG-d62444.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.1)
 (envelope-from <oleksii.kurochko@gmail.com>)
 id 69e8b4d2-c1f2-0a2a45010019-d155a732e9b8-3
 for <xen-devel@lists.xenproject.org>; Wed, 22 Apr 2026 13:45:22 +0200
Received: by mail-lf1-f50.google.com with SMTP id
 2adb3069b0e04-5a62f43b76aso490940e87.3
 for <xen-devel@lists.xenproject.org>; Wed, 22 Apr 2026 04:45:22 -0700 (PDT)
Received: from [192.168.1.6] (user-109-243-69-121.play-internet.pl.
 [109.243.69.121]) by smtp.gmail.com with ESMTPSA id
 2adb3069b0e04-5a4185ad2f4sm4422725e87.17.2026.04.22.04.45.20
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Wed, 22 Apr 2026 04:45:20 -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=20251104 header.d=gmail.com header.i="@gmail.com" header.h="Content-Transfer-Encoding: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=20251104; t=1776858322; x=1777463122; darn=lists.xenproject.org;
        h=content-transfer-encoding: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;
        bh=Mxc3bw+Q/4PVWhagym0pXVDPmcGoQqi1agjC6d3LSL0=;
        b=q4AYJopdVIs4Q0Z0Yt0nw9aSAUym96O6EbmHOnU2lyP4voA8TdJr77d4FFT6AXNw8w
         K15dHF4aDnz3Sqe1tMqcqluTxNYtbnVpyMLSTp5RIwpQbNQJe9wrt0h3kP4NxLjv0m1H
         eSVZTQwWHIH9eVr93EtgdyI4QU/f0H+y6/OBRYJRV+b5Osrzow+O2W9eJtaoGoNA8n4I
         BSr1nBgzJJJeTlm9znaJbxJuOocuAV/2Oih0CX8W77rvsI2w+/3SVyXTyCpCMr6PFcVb
         nvsOY1X3oncYrS3m1R2q/Zpu5VF6IHDaUTYRz9cJSr/LtNJHWyAG/RwixDO+Rk2BEHwB
         5/Eg==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20251104; t=1776858322; x=1777463122;
        h=content-transfer-encoding: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;
        bh=Mxc3bw+Q/4PVWhagym0pXVDPmcGoQqi1agjC6d3LSL0=;
        b=De2UaVNhzY8ZU1Om3z83wdK59QWRG5QNlbo3R1Z9YSV9NVN/xg2nP3Xkp6iJxCI3go
         OK3Z4tqhqbZCjiaYrxBZxEU3A0dRCjHjA3Zms2Yy9+TKASzPkoa3wpJEEPjTY0dYu8CZ
         CKN2ifjgeGgszxcAenNIzeSyD19AS7dKOYRGQDX3GzRw0z6GdJBaHFXbWyY2C5TFGque
         BqcjXRd9qocY8LWdIxhbj46UQSOFxzXVgHYauzAcCdnBdYcC2lLCKY3ZIb+U1ddarVP4
         uuEvfMmbYT2er1CoW4FdR3V9KPWhzLNJJSUMhHbINt0ZdcZDJmmjzRd+yz/J1IKRBqQo
         MgEw==
X-Forwarded-Encrypted: i=1; AFNElJ+G/yQ8H6gY5jMl/s7L4gLvzkCLT+ehsqYRyQltM6DS2KoLFPYDWFOkIkzXrUytG2ZoMFtt6tEBARY=@lists.xenproject.org
X-Gm-Message-State: AOJu0Ywk/jBgh8lO5VxwirA0ZtEDAR8y3FwUnNtnTzFN9mxb1TZmwjNt
	IbfLGRAjeWm6nr74GTWo1+QpcHzqNaGmr7+M2i3b/XRs0xmoSY+2D3Sp
X-Gm-Gg: AeBDieuEwNwJz1yA96NgXIKzNofRLB1kAUa3GvvTQ8/E8GIHlv3m7I6/cYBlcTeibn+
	esSm8McplVLZFkEii1nhbfOQGXEWHeOmk9jyqwl6RYOnmy0vngBXj9AkXq2C6qFJOdCxd8E26bR
	8jt2j/+TKi8FzfAqwFi+NePbrP9ShqzcyRyYE06ylCGItb1/mRuckGqZ5f9ChICvddRytGx1eez
	2zPVO4Rbu8K6+4xfOCuVNUQXNp8w/2HO0ZPWR/ON9SUr2SUm4dDBmWzgGRzMAI+H7xYGt968YXq
	Ib6In75ciHsss/Trjfav1s4oFtovcZES6XDanq6IC8wBEJlmjqCSswCJJjYcilqYLZZuS7HBM9O
	XcHgFcMlA5pc9pcUnCZgMBu4DO2TwhLClXCx2J82Z+GkWQmiy85KBX5212cKR9978b4n8SPUmjG
	hb15ZZ7d2Cx7xYjOStf12ov25PceW4KP/6UdldRIQDarOsArPvEYIRL6fOgg4BKYXvZ89ua4Cji
	r/pbVOGrBjxOg==
X-Received: by 2002:a05:6512:3b8e:b0:5a4:1133:c30c with SMTP id 2adb3069b0e04-5a4172de2e7mr6599018e87.28.1776858321253;
        Wed, 22 Apr 2026 04:45:21 -0700 (PDT)
Message-ID: <b6c4a111-6c37-4850-962a-5b401a4a5655@gmail.com>
Date: Wed, 22 Apr 2026 13:45:19 +0200
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH v3 05/12] xen/riscv: add kernel loading support
To: Jan Beulich <jbeulich@suse.com>
Cc: Romain Caritey <Romain.Caritey@microchip.com>,
 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.pau@citrix.com>,
 Stefano Stabellini <sstabellini@kernel.org>, xen-devel@lists.xenproject.org
References: <cover.1775836193.git.oleksii.kurochko@gmail.com>
 <29ec8e444792caa925ba92cdc406ef8c0b3bd678.1775836193.git.oleksii.kurochko@gmail.com>
 <6af89a34-3bf1-40cb-a4c5-e9a16ee31295@suse.com>
Content-Language: en-US
From: Oleksii Kurochko <oleksii.kurochko@gmail.com>
In-Reply-To: <6af89a34-3bf1-40cb-a4c5-e9a16ee31295@suse.com>
Content-Type: text/plain; charset=UTF-8; format=flowed
Content-Transfer-Encoding: 7bit
X-purgate-ID: tlsNG-d62444/1776858322-BFC74FF4-D7DA5EAD/10/73395122804
X-purgate-type: spam
X-purgate-size: 9793



On 4/21/26 10:57 AM, Jan Beulich wrote:
> On 10.04.2026 17:54, Oleksii Kurochko wrote:
>> --- a/xen/arch/riscv/include/asm/config.h
>> +++ b/xen/arch/riscv/include/asm/config.h
>> @@ -151,6 +151,19 @@
>>   extern unsigned long phys_offset; /* = load_start - XEN_VIRT_START */
>>   #endif
>>   
>> +/*
>> + * KERNEL_LOAD_ADDR_ALIGNMENT is defined based on paragraph of
>> + * "Kernel location" of boot.rst:
>> + * https://docs.kernel.org/arch/riscv/boot.html#kernel-location
> 
> I.e. this is entirely Linux-centric? If so, maybe the patch subject should
> then reflect this?

At least. for now - yes. I will add Linux kernel to the patch subject.

> 
>> --- /dev/null
>> +++ b/xen/arch/riscv/kernel.c
>> @@ -0,0 +1,230 @@
>> +/* SPDX-License-Identifier: GPL-2.0-only */
>> +
>> +#include <xen/bug.h>
>> +#include <xen/compiler.h>
>> +#include <xen/errno.h>
>> +#include <xen/fdt-kernel.h>
>> +#include <xen/guest_access.h>
>> +#include <xen/init.h>
>> +#include <xen/libfdt/libfdt.h>
>> +#include <xen/mm.h>
>> +#include <xen/types.h>
>> +#include <xen/vmap.h>
>> +
>> +#include <asm/setup.h>
>> +
>> +#define IMAGE64_MAGIC_V2 0x05435352 /* Magic number 2, le, "RSC\x05" */
>> +
>> +static void __init place_modules(struct kernel_info *info, paddr_t kernbase,
>> +                                 paddr_t kernend)
>> +{
>> +    const struct boot_module *mod = info->bd.initrd;
>> +    const struct membanks *banks = kernel_info_get_mem_const(info);
>> +    const paddr_t initrd_len = ROUNDUP(mod ? mod->size : 0,
>> +                                       KERNEL_LOAD_ADDR_ALIGNMENT);
>> +    const paddr_t dtb_len = ROUNDUP(fdt_totalsize(info->fdt),
>> +                                    KERNEL_LOAD_ADDR_ALIGNMENT);
>> +    const paddr_t modsize = initrd_len + dtb_len;
>> +    int bi;
> 
> Please can variables used for array indexing be of unsigned types? The use ...
> 
>> +    BUG_ON(modsize < initrd_len);
>> +
>> +    /*
>> +     * Place modules as high in RAM as possible, scanning banks from
>> +     * last to first so that the end of the last bank is preferred.
>> +     */
>> +    for ( bi = banks->nr_banks - 1; bi >= 0; bi-- )
> 
> ... here can easily be replaced:
> 
>      for ( bi = banks->nr_banks; bi-- > 0; )
> 
> Or you could have
> 
>      unsigned int bi = banks->nr_banks;
>      ...
>      while ( bi-- > 0 )
> 
> .

I will use while() form.

> 
>> +    {
>> +        const struct membank *bank = &banks->bank[bi];
>> +        const paddr_t bank_end = bank->start + bank->size;
>> +        paddr_t modbase;
>> +
>> +        if ( modsize > bank->size )
>> +            continue;
>> +
>> +        modbase = ROUNDDOWN(bank_end - modsize, KERNEL_LOAD_ADDR_ALIGNMENT);
>> +
>> +        if ( modbase < bank->start )
>> +            continue;
>> +
>> +        /*
>> +         * If the kernel resides in this bank, ensure modules do not
>> +         * overlap with it.
>> +         */
>> +        if ( (kernbase >= bank->start) && (kernbase < bank_end) &&
>> +             (modbase < ROUNDUP(kernend, KERNEL_LOAD_ADDR_ALIGNMENT)) &&
>> +             (modbase + modsize > kernbase) )
>> +            continue;
> 
> Can't this be had with only two comparisons? Same bank or not doesn't really
> matter - if it's different banks, there'll be no overlap anyway. So all you
> need here is that the module range doesn't overlap the kernel range, entirely
> independent of the bank.
> 
> What is dependent on the bank is that the bank may fit both kernel and module
> even if there is an overlap as per your current calculation: You may be able
> to place the module below the kernel if it doesn't fit above.

I will drop the first check and update the comment:
         /*
          * If modules would overlap the kernel, try placing them below it.
          */
         if ( (modbase < ROUNDUP(kernend, KERNEL_LOAD_ADDR_ALIGNMENT)) &&
              (modbase + modsize > kernbase) )
         {
             modbase = ROUNDDOWN(kernbase - modsize, 
KERNEL_LOAD_ADDR_ALIGNMENT);
             if ( modbase < bank->start )
                 continue;
         }

>> +static paddr_t __init kernel_image_place(struct kernel_info *info)
>> +{
>> +    paddr_t load_addr = INVALID_PADDR;
>> +    uint64_t image_size = info->image.image_size ?: info->image.len;
>> +    const struct membanks *banks = kernel_info_get_mem_const(info);
>> +    unsigned int nr_banks = banks->nr_banks;
>> +    unsigned int bi;
>> +
>> +    dprintk(XENLOG_DEBUG, "nr_banks(%u)\n", nr_banks);
>> +
>> +    /*
>> +     * At the moment, RISC-V's Linux kernel should be always position
>> +     * independent based on "Per-MMU execution" of boot.rst:
>> +     *   https://docs.kernel.org/arch/riscv/boot.html#pre-mmu-execution
>> +     *
>> +     * But just for the case when RISC-V's Linux kernel isn't position
>> +     * independent it is needed to take load address from
>> +     * info->image.start.
>> +     *
>> +     * If `start` is zero, the Image is position independent.
>> +     */
>> +    if ( likely(!info->image.start) )
>> +    {
>> +        for ( bi = 0; bi != nr_banks; bi++ )
>> +        {
>> +            const struct membank *bank = &banks->bank[bi];
>> +            paddr_t bank_start = bank->start;
>> +            /*
>> +             * According to boot.rst kernel load address should be properly
>> +             * aligned:
>> +             *   https://docs.kernel.org/arch/riscv/boot.html#kernel-location
>> +             *
>> +             * As Image in this case is PIC we can ignore
>> +             * info->image.text_offset.
>> +             */
>> +            paddr_t aligned_start = ROUNDUP(bank_start, KERNEL_LOAD_ADDR_ALIGNMENT);
>> +            paddr_t bank_end = bank_start + bank->size;
>> +            paddr_t bank_size;
>> +
>> +            if ( aligned_start > bank_end )
>> +                continue;
>> +
>> +            bank_size = bank_end - aligned_start;
>> +
>> +            dprintk(XENLOG_DEBUG, "bank[%u].start=%"PRIpaddr"\n", bi, bank->start);
>> +
>> +            if ( image_size <= bank_size )
>> +            {
>> +                load_addr = aligned_start;
>> +                break;
>> +            }
>> +        }
>> +    }
>> +    else
>> +    {
>> +        load_addr = info->image.start + info->image.text_offset;
> 
> Why does stuff ahead of text_offset not need loading?

Here we just calculating only a place where kernel will be loaded. The 
full kernel image will be loaded in kernel_image_load().

> 
>> +        WARN_ON(!IS_ALIGNED(load_addr, KERNEL_LOAD_ADDR_ALIGNMENT));
>> +
>> +        for ( bi = 0; bi != nr_banks; bi++ )
>> +        {
>> +            const struct membank *bank = &banks->bank[bi];
>> +            paddr_t bank_start = bank->start;
>> +            paddr_t bank_end = bank_start + bank->size;
>> +
>> +            if ( (load_addr >= bank_start) && (load_addr < bank_end) &&
>> +                 (bank_end - load_addr) >= image_size )
> 
> Do we have to fear overflow? (If so, shouldn't such an image be rejected
> rather than an attempt being made to place it?) If not, simply:

Just for a case. As a user may control load_addr and image_size it could 
be some combination which will lead to overflow here.

> 
>              if ( (load_addr >= bank_start) &&
>                   (load_addr + image_size <= bank_end) )

I will add the following:
         /*
          * Reject a malformed image before the loop to avoid wrapping
          * load_addr + image_size in the per-bank check below.
          *
          * image_size covers the kernel from _start (placed at load_addr =
          * start + text_offset) through _end.  The alignment gap
          * [start, load_addr) is padding and need not lie within a bank.
          */
         if ( image_size > (paddr_t)-1 - load_addr )
             bi = nr_banks;
         else
             for ( bi = 0; bi != nr_banks; bi++ )
             {
                 const struct membank *bank = &banks->bank[bi];
                 paddr_t bank_start = bank->start;
                 paddr_t bank_end = bank_start + bank->size;

                 if ( (load_addr >= bank_start) &&
                      (load_addr + image_size <= bank_end) )
                     break;
             }

> 
> Also, does image_size really only cover space starting from .text_offset,
> rather than from .start?

image_size covers total memory the kernel occupies at runtime.

> 
>> +static void __init kernel_image_load(struct kernel_info *info)
>> +{
>> +    int rc;
>> +    paddr_t load_addr = kernel_image_place(info);
>> +    paddr_t paddr = info->image.kernel_addr;
>> +    paddr_t len = info->image.len;
>> +    paddr_t effective_size = info->image.image_size ?: len;
>> +    void *kernel;
>> +
>> +    place_modules(info, load_addr, load_addr + effective_size);
>> +
>> +    printk("Loading Image from %"PRIpaddr" to %"PRIpaddr"-%"PRIpaddr"\n",
>> +            paddr, load_addr, load_addr + effective_size);
> 
> As on earlier occasions: Please represent ranges as mathematical ones, to
> disambiguate whether the bounds (the upper one in particular) are inclusive
> or exclusive.

I will change to "... [%"PRIpaddr",%"PRIpaddr")\n".

> 
>> +int __init kernel_image_probe(struct kernel_info *info, paddr_t addr,
>> +                              paddr_t size)
>> +{
>> +#ifdef CONFIG_RISCV_64
>> +    return kernel_image64_probe(info, addr, size);
>> +#else
>> +    return -EOPNOTSUPP;
> 
> Better #error, as you have it elsewhere (iirc)?

Makes sense use:

#   error "Only 64-bit RISC-V is supported"

Thanks.

~ Oleksii


From xen-devel-bounces@lists.xenproject.org Wed Apr 22 11:47:27 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 22 Apr 2026 11:47:27 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1290390.1569989 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wFW3B-0002Rf-Vs; Wed, 22 Apr 2026 11:47:25 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1290390.1569989; Wed, 22 Apr 2026 11:47: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 1wFW3B-0002RY-Ru; Wed, 22 Apr 2026 11:47:25 +0000
Received: by outflank-mailman (input) for mailman id 1290390;
 Wed, 22 Apr 2026 11:47:24 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92) id 1wFW3A-0002RP-DT
 for xen-devel@lists.xenproject.org; Wed, 22 Apr 2026 11:47:24 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wFW39-0072p0-CI
 for xen-devel@lists.xenproject.org; Wed, 22 Apr 2026 13:47:23 +0200
Received: from [10.42.69.1] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <Michal.Orzel@amd.com>)
 id 69e8b549-2eae-0a2a0a5409dd-0a2a4501a632-18
 for <xen-devel@lists.xenproject.org>; Wed, 22 Apr 2026 13:47:23 +0200
Received: from [40.93.198.11]
 (helo=CY7PR03CU001.outbound.protection.outlook.com)
 by tlsNG-d62444.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.1)
 (envelope-from <Michal.Orzel@amd.com>)
 id 69e8b548-c1f2-0a2a45010019-285dc60b2dd2-4
 for <xen-devel@lists.xenproject.org>; Wed, 22 Apr 2026 13:47:22 +0200
Received: from BL1P221CA0029.NAMP221.PROD.OUTLOOK.COM (2603:10b6:208:2c5::25)
 by LV0PR12MB999070.namprd12.prod.outlook.com (2603:10b6:408:32a::15)
 with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9846.15; Wed, 22 Apr
 2026 11:47:18 +0000
Received: from BL02EPF0001A106.namprd05.prod.outlook.com
 (2603:10b6:208:2c5:cafe::4c) by BL1P221CA0029.outlook.office365.com
 (2603:10b6:208:2c5::25) with Microsoft SMTP Server (version=TLS1_3,
 cipher=TLS_AES_256_GCM_SHA384) id 15.20.9791.48 via Frontend Transport; Wed,
 22 Apr 2026 11:47:18 +0000
Received: from satlexmb08.amd.com (165.204.84.17) by
 BL02EPF0001A106.mail.protection.outlook.com (10.167.241.139) with Microsoft
 SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id
 15.20.9846.18 via Frontend Transport; Wed, 22 Apr 2026 11:47:18 +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.17; Wed, 22 Apr
 2026 06:47:17 -0500
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.17; Wed, 22 Apr
 2026 06:47:16 -0500
Received: from [10.71.194.215] (10.180.168.240) by satlexmb07.amd.com
 (10.181.42.216) with Microsoft SMTP Server id 15.2.2562.17 via Frontend
 Transport; Wed, 22 Apr 2026 06:46:59 -0500
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@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=YHEaMe+afAPcBU0bHlYIm+HKkgFL7io7FK7jwjovGmbrqD1NSCHHlXbzK1xIRMabXV81ZhhJw9nAq6OaBv+AHnRf8OAkg9h7Sv3yF0CkqpBraRb7Rvt2dYf+JhIBOC+sLse4AqGo8CqIWtutWCIWd4vRNqQe0ISjUsTluWv0nZdFXC0rUXweVExXOWYLRT6KaS2o53hcVfsHIERvx2mlarwcAE6Bu4dN0bGywN1Go2K/OGx6JiHYUNJ7Ys90lkXfmJkUJjz8xuXZ1VuxlKgcIvthkJyICitOW38AZLcEL/IiTwSB12L2nyqm9vDTvsoKgijcOezkbWnI43Y90zgWEw==
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com;
 s=arcselector10001;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1;
 bh=6KPNaKAHkGK41G1lb5YPQ7/mCKPBwAtQ3GmXqW0Zwcc=;
 b=C/ElT6Bdg8Psk3GozyJyPd3r6+7JikAUKwKuTywIoe67GjVuq65Ins/ifJY8ufer2R13t3Q4IPdAIUzUL2iCqPI6CTM9h48fKJYnlinpJwLaO0GMP0fEzciGrzq3PBwrWoGi6P49bnH+95FWINCsKPbh7w3EclK8Jk/QlE2cdVTFZpxNKu8e5N00uMFw7pb38huTpVOtpPlm/0SK/rEg6cV6TlxKGwTjsmlcZmk2owYrRmfsW2vwc+JjPqPDGJ2+IKEazO3cl8NfSE+0xESqOY9vFDmSzVTF8C07CjM7BqpSc2twZXi926MZAVy/pFniW54Wubk+RBEe9/uWUEtJVg==
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=6KPNaKAHkGK41G1lb5YPQ7/mCKPBwAtQ3GmXqW0Zwcc=;
 b=F+Vnwqc4tigVlnZdw/VQyzsijDmFzRtlpVzfsPqDPGl4nwZMECqO0f47aGprV2qhPj9dXvVVKBiSzA0BlxlNPY7CrJM+d4qbQE1WtBCci5dY7wvPBQiI9StISMBQXq4tv0ZGUjDUdGPVM5YnucjhWBhaBqAoKAJH1/87TC0fv08=
X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 165.204.84.17)
 smtp.mailfrom=amd.com; dkim=none (message not signed)
 header.d=none;dmarc=pass action=none header.from=amd.com;
Received-SPF: Pass (protection.outlook.com: domain of amd.com designates
 165.204.84.17 as permitted sender) receiver=protection.outlook.com;
 client-ip=165.204.84.17; helo=satlexmb08.amd.com; pr=C
Message-ID: <a4f8660d-fd77-46af-85c1-db2be27429a8@amd.com>
Date: Wed, 22 Apr 2026 13:46:51 +0200
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH v2 2/3] xen/dom0less: pass kernel_info struct instead of
 fdt to make_cpus_node()
To: Oleksii Kurochko <oleksii.kurochko@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>, 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.pau@citrix.com>
References: <cover.1776780944.git.oleksii.kurochko@gmail.com>
 <2617586205ec7b07a302fcb8dd9dd39f3eb2c5ed.1776780944.git.oleksii.kurochko@gmail.com>
From: "Orzel, Michal" <michal.orzel@amd.com>
Content-Language: en-US
In-Reply-To: <2617586205ec7b07a302fcb8dd9dd39f3eb2c5ed.1776780944.git.oleksii.kurochko@gmail.com>
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: 7bit
X-EOPAttributedMessage: 0
X-MS-PublicTrafficType: Email
X-MS-TrafficTypeDiagnostic: BL02EPF0001A106:EE_|LV0PR12MB999070:EE_
X-MS-Office365-Filtering-Correlation-Id: c5c07f73-50af-4478-aff8-08dea064e800
X-MS-Exchange-SenderADCheck: 1
X-MS-Exchange-AntiSpam-Relay: 0
X-Microsoft-Antispam:
	BCL:0;ARA:13230040|36860700016|376014|7416014|82310400026|1800799024|56012099003|22082099003|18002099003;
X-Microsoft-Antispam-Message-Info:
	3d2b9XXod1XtwWYlOedlO1+Qn6yePBS0NIj1ymAbsuXoGJAKNijkJDEj1ajDC8H2OsZ94Mz59EtsgIeTiw3M/zlgq9zfmpxxEb+XGkS9zQ1KxWgiVm7n9XOnmymeqTFTDbeyTLJAhcz2GE05zkMSktjvq9kkxvRV7Dm8JQU+m683+cUfpimwvK0O+bpZx/kSwXHpdRn9ERl11wGua4XoA/02zbEi7JJwZ3KDeVF0nV1dEVXgsuKmwwJvI6R5W+URD75RCb6qQcKVM/1Zpqbr5FQq0CzEwm7JZSTEHw4i4g8FKQHCKkQXuQiIHBIh4ABmUq6ZunJFYtmV9nW+hduL8P4BIcMjbcCU4ABjRWblljqxva2fmHm8/RLf14SGUMQ7Bz5eTeedDRFTVc2gCnAN1g6CGcGDS+3yG7NMsX5pjAhpMNSvGThgf6jNRwNz8/F9ReoGxR6oVokpbxaKudmlZvrclmbRT5J1dGuc30Pz1MPWXgT0F8ly8XOgEuyEW62CBovJfc6vsX7glWJ6YYn1mxEJ0khRKPr82KAW03EwQHsfGoI5V3s5mXp96zwcSXzZS3qqANdnByRSlDurk9gXRSOr8JqiENq+dTcbZjz48QYL+kfzU7VP7AVHEEWDQ3U//p0MmQTfRfodRtxh5NGjrX47gitbdUCX0uvZKlTkCDNfdOYNEwlx7oFinxsPpF8nokWZz72w7qw7opsk217vKw86QcFDvSMb1Fz1yvf1+ZrWN6T4+XAWoECj34dEbgJMqNXi1TEyBLzzkY9oQaOK1w==
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)(376014)(7416014)(82310400026)(1800799024)(56012099003)(22082099003)(18002099003);DIR:OUT;SFP:1101;
X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1
X-MS-Exchange-AntiSpam-MessageData-0:
	4byrWqZdr+vjTnAH95hbjQnJvvS6muMBDSHY0cvj3P1YMNpCw+gAO/noHCY4Nbs/GNderUyCoQmR0OGVEsxoDrkd5g9XMMOLpulNDDsahRIiSc+SlgsNeHbmriot6Oo8l1EBmoSf8/9NdvdxtZtFh6J+6Q7o1mG5A/nP5GuDkZ+jsW+A411kzhUJ/V4FDeNIeEhi8JQEQ6L0z3kj/fQu+y6lvqTmBC9Fg4ENQnh6ThE5gHRayx4pm29087fR0jDH9Nctc1VpklNrzwUV6nJTn+yGACpy2LJC+f+P/uTS/RGVA2TMyqxwNnboi6wyLP9lJ483DKqGWRy+Zy3RlIm4ixS250QjLCf45TwWIKy/FZHOiFhSwSAXEtJaGjbyAbwdK53HUJGrrunILXpYkqmQvyq+8zzOGH3fN7C3wDa95dYelJgzyX3oHg3gHGC8zuZa
X-OriginatorOrg: amd.com
X-MS-Exchange-CrossTenant-OriginalArrivalTime: 22 Apr 2026 11:47:18.2273
 (UTC)
X-MS-Exchange-CrossTenant-Network-Message-Id: c5c07f73-50af-4478-aff8-08dea064e800
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:
	BL02EPF0001A106.namprd05.prod.outlook.com
X-MS-Exchange-CrossTenant-AuthAs: Anonymous
X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem
X-MS-Exchange-Transport-CrossTenantHeadersStamped: LV0PR12MB999070
X-purgate-ID: tlsNG-d62444/1776858443-B7C74FF4-341877B3/10/73395122804
X-purgate-type: spam
X-purgate-size: 431



On 22/04/2026 11:44, Oleksii Kurochko wrote:
> There are two reasons of this change:
> 1. Align prototype with what other make_*_node() are passed.
> 2. A follow-up RISC-V patch will call get_next_free_phandle() inside
>    make_cpus_node(), requiring mutable access to kinfo->free_phandle.
> 
> Signed-off-by: Oleksii Kurochko <oleksii.kurochko@gmail.com>
Reviewed-by: Michal Orzel <michal.orzel@amd.com>

~Michal



From xen-devel-bounces@lists.xenproject.org Wed Apr 22 11:51:34 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 22 Apr 2026 11:51:34 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1290399.1570002 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wFW77-0004dU-Ge; Wed, 22 Apr 2026 11:51:29 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1290399.1570002; Wed, 22 Apr 2026 11:51: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 1wFW77-0004dM-CG; Wed, 22 Apr 2026 11:51:29 +0000
Received: by outflank-mailman (input) for mailman id 1290399;
 Wed, 22 Apr 2026 11:51:27 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <jbeulich@suse.com>) id 1wFW75-0004dG-IR
 for xen-devel@lists.xenproject.org; Wed, 22 Apr 2026 11:51:27 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wFW74-007LX8-VN
 for xen-devel@lists.xenproject.org; Wed, 22 Apr 2026 13:51:26 +0200
Received: from [10.42.69.1] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <jbeulich@suse.com>)
 id 69e8b63e-bab6-0a2a0a5309dd-0a2a45019628-0
 for <xen-devel@lists.xenproject.org>; Wed, 22 Apr 2026 13:51:26 +0200
Received: from [209.85.128.49] (helo=mail-wm1-f49.google.com)
 by tlsNG-d62444.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.1)
 (envelope-from <jbeulich@suse.com>)
 id 69e8b63e-c1f2-0a2a45010019-d1558031e5c5-3
 for <xen-devel@lists.xenproject.org>; Wed, 22 Apr 2026 13:51:26 +0200
Received: by mail-wm1-f49.google.com with SMTP id
 5b1f17b1804b1-48334ee0aeaso55412125e9.1
 for <xen-devel@lists.xenproject.org>; Wed, 22 Apr 2026 04:51:26 -0700 (PDT)
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-488fc1c773fsm499178525e9.12.2026.04.22.04.51.25
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Wed, 22 Apr 2026 04:51:25 -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=google header.d=suse.com header.i="@suse.com" header.h="Content-Transfer-Encoding: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=1776858686; x=1777463486; darn=lists.xenproject.org;
        h=content-transfer-encoding:autocrypt:subject:from:cc:to
         :content-language:user-agent:mime-version:date:message-id:from:to:cc
         :subject:date:message-id:reply-to;
        bh=LcPZJ0EX4CLd90I+zIvaHrXZTmlFhTQJEkz1RmDvJwA=;
        b=AP7fjmqPaUS7Rz1UZgzjDA+/7pE4qkLPg7hfkJ+Rii4O/juAHFcGSFFN7Cv5hxN4mQ
         JlydiHnXtKWllH9uF3+8YmDAam/xZ7EX49U2OZ1ho4/Y7nYUp+SlhtsbikgxuuHOY2jM
         Hx0C6SS1wiftxTRoisZKBiFNCtO4x3/aeifdq9tuz+fgFe9s4si8ct+OuMB18mMep+Rl
         mdz2hwTDr6L75t5Nd6yMX+9/v1bWwlEptvj8Km7D5woF1/O3noH9o0v/klbdyhigmJeb
         CBrJfD/S5dzzQe8qGmfjf3zlyDcA4tOJSMTCzYz+XbcFTSUimMPzG5fofKqiml+hg+rC
         mbgQ==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20251104; t=1776858686; x=1777463486;
        h=content-transfer-encoding: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;
        bh=LcPZJ0EX4CLd90I+zIvaHrXZTmlFhTQJEkz1RmDvJwA=;
        b=LeXiTwOEMLx8GrGuavH1u4hihImSbye+Bn2l8cOqNfpRVnQPe4OBH4+vPWbt5C0n+S
         jS1ljFMvNxw8hnjQDHJcQAMDgVR/BkeX1tQEqPOuaLSXCLPHytHMw81/IQGwI9mR9awE
         /zwAClTg9hZ3A3itVCvRlIXtp8zTz31oSTZ63GUrppiM04rq0dg5n3/Ooy7zNBykDWRX
         bRNtBbUAdU56kddY+jO06ETwYVE/flcjANDxEsWSyp3XBWoZ6s0t+mLecqi1ILE6+5i/
         QfLNyjeZfXG6MOyk4I8LdC5hM0S8Jz6eXL9933/3UUfGzZtcqfRX2H03TGEyGc/vXcBV
         D6sA==
X-Gm-Message-State: AOJu0YyLZKUtvjh4RyKr3dl3s8wKWeS/+JqP3YSNyqPVx3Iwf0gnrnYC
	PtYgtPOs7QGB3PQVwCTh1aZMwvamvV/QXUsyy3geMhlpA5wpqFFdLUUpYbyDi2QWjqA0OupOLwu
	k3OIHFQ==
X-Gm-Gg: AeBDietmEk6Yfzbr7Qd0rRoVLrvk8eSC2YKt0p0gzI3CdGmTB0IlLPMSoJPspNXsni/
	9T45Imumk6j87+y0jKMBrb9rsnw97UZkGwb/XwqoZCEY4r0DA/b7H33wNJrYOSDLLvKTXM3XT3x
	PMJRe5c4e/dNKLIIB9w2GUSzbllx6lqrRvfuBjqblbu2gyNC76O4USRCVZS4CEp6+b6kpu2xfXA
	zrAKW22S9GEwep8SyG3HHIAODzQVN5zje5ls7+05hNeLzX9b4wI2Z4z+mhYEL6s7xc/WIgiHw2K
	ukoevZ7JHpUT7Q0yPglWpNlAPZQ+JqGo4H8L3aHvr32rLgtbSCb/5j1dLG89Wx/aFXxlEdmhwnW
	/ML4Fv2ULLTpV5m056oDMBJl4EyHt+NV0tCN4VwxRmp0lyerqnGYGnWbaJ6Z6ontso6miKBtJYU
	iyfyxgzj7ri1IzQ9lFazZfpEXmflmYzdwRiHI3A/hfWXOjyDARrxRs6WuoFHUEdjdir1uJ7IsKV
	S8lpOxEMHgmzKadbXDJ+o9JwQ==
X-Received: by 2002:a05:600c:46cb:b0:488:ac01:72de with SMTP id 5b1f17b1804b1-488fb7451e4mr315545115e9.5.1776858686144;
        Wed, 22 Apr 2026 04:51:26 -0700 (PDT)
Message-ID: <bf990673-83c3-44c3-a76a-3b0c36108ec5@suse.com>
Date: Wed, 22 Apr 2026 13:51:24 +0200
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Content-Language: en-US
To: "xen-devel@lists.xenproject.org" <xen-devel@lists.xenproject.org>
Cc: Marek Marczykowski <marmarek@invisiblethingslab.com>,
 Daniel Smith <dpsmith@apertussolutions.com>,
 Bernhard Kaindl <bernhard.kaindl@citrix.com>
From: Jan Beulich <jbeulich@suse.com>
Subject: [PATCH] EFI: adjust cfg file buffer freeing
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-d62444/1776858686-BF87AFF4-9F281D5D/0/0
X-purgate-type: clean
X-purgate-size: 2423

The boot services FreePages() needs passing the size. Since we allocated
one more byte to put a trailing nul there, we also need to bump the size
passed there. Make a small helper function to centralize this.

Note that there's no permanent memory leak because of the oversight: The
allocation is done using EfiLoaderData, and all memory of that type is
later reclaimed anyway.

Fixes: df75f77092c1 ("EFI: avoid OOB config file reads")
Reported-by: Bernhard Kaindl <bernhard.kaindl@citrix.com>
Signed-off-by: Jan Beulich <jbeulich@suse.com>
---
This is an alternative proposal to
https://lists.xen.org/archives/html/xen-devel/2026-04/msg01044.html.

--- a/xen/common/efi/boot.c
+++ b/xen/common/efi/boot.c
@@ -778,6 +778,16 @@ static void __init efi_relocate_esrt(EFI
  */
 #include "efi-boot.h"
 
+static void __init free_cfg(void)
+{
+    if ( !cfg.need_to_free )
+        return;
+
+    /* One extra byte was allocated to put a nul character there. */
+    efi_bs->FreePages(cfg.addr, PFN_UP(cfg.size + 1));
+    cfg.need_to_free = false;
+}
+
 void __init noreturn blexit(const CHAR16 *str)
 {
     if ( str )
@@ -787,8 +797,7 @@ void __init noreturn blexit(const CHAR16
     if ( !efi_bs )
         efi_arch_halt();
 
-    if ( cfg.need_to_free )
-        efi_bs->FreePages(cfg.addr, PFN_UP(cfg.size));
+    free_cfg();
     if ( kernel.need_to_free )
         efi_bs->FreePages(kernel.addr, PFN_UP(kernel.size));
     if ( ramdisk.need_to_free )
@@ -1557,11 +1566,7 @@ void EFIAPI __init noreturn efi_start(EF
             name.s = get_value(&cfg, "global", "chain");
             if ( !name.s )
                 break;
-            if ( cfg.need_to_free )
-            {
-                efi_bs->FreePages(cfg.addr, PFN_UP(cfg.size));
-                cfg.need_to_free = false;
-            }
+            free_cfg();
             if ( !read_file(dir_handle, s2w(&name), &cfg, NULL) )
             {
                 PrintStr(L"Chained configuration file '");
@@ -1631,11 +1636,7 @@ void EFIAPI __init noreturn efi_start(EF
 
         efi_arch_cfg_file_late(loaded_image, dir_handle, section.s);
 
-        if ( cfg.need_to_free )
-        {
-            efi_bs->FreePages(cfg.addr, PFN_UP(cfg.size));
-            cfg.need_to_free = false;
-        }
+        free_cfg();
 
         if ( dir_handle )
             dir_handle->Close(dir_handle);


From xen-devel-bounces@lists.xenproject.org Wed Apr 22 11:57:53 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 22 Apr 2026 11:57:53 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1290407.1570010 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wFWDE-0005X5-3c; Wed, 22 Apr 2026 11:57:48 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1290407.1570010; Wed, 22 Apr 2026 11:57: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 1wFWDD-0005WG-WF; Wed, 22 Apr 2026 11:57:48 +0000
Received: by outflank-mailman (input) for mailman id 1290407;
 Wed, 22 Apr 2026 11:57:46 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <jbeulich@suse.com>) id 1wFWDC-0005Vw-Ns
 for xen-devel@lists.xenproject.org; Wed, 22 Apr 2026 11:57:46 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wFWDB-00Fegp-Q1
 for xen-devel@lists.xenproject.org; Wed, 22 Apr 2026 13:57:45 +0200
Received: from [10.42.69.6] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <jbeulich@suse.com>)
 id 69e8b7b3-e002-0a2a0a5209dd-0a2a4506e848-16
 for <xen-devel@lists.xenproject.org>; Wed, 22 Apr 2026 13:57:45 +0200
Received: from [209.85.221.54] (helo=mail-wr1-f54.google.com)
 by tlsNG-16d1c6.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.1)
 (envelope-from <jbeulich@suse.com>)
 id 69e8b7b9-7371-0a2a45060019-d155dd36c8e4-3
 for <xen-devel@lists.xenproject.org>; Wed, 22 Apr 2026 13:57:45 +0200
Received: by mail-wr1-f54.google.com with SMTP id
 ffacd0b85a97d-43d77f6092eso3683383f8f.2
 for <xen-devel@lists.xenproject.org>; Wed, 22 Apr 2026 04:57:45 -0700 (PDT)
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-43fe4cb1405sm44837387f8f.4.2026.04.22.04.57.44
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Wed, 22 Apr 2026 04:57:44 -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=google header.d=suse.com header.i="@suse.com" header.h="Content-Transfer-Encoding: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=1776859065; x=1777463865; darn=lists.xenproject.org;
        h=content-transfer-encoding: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;
        bh=GSk8rVEDKF8QMfakJ7DVBlI1SofoX5vaDroyYmD281Y=;
        b=PnA3Bj3ctghUnKh2xQcGnbzl1IJN3wrz7xbcDlM5kmo77X+oI7eioRwZfDoUf0DFHC
         fKpJHcX4bSGUWX+DvxdTf9Q/9dRo+a0DNGBPBWeXqN+5kRD/1g9NXGnT0WKHwI/tk1rH
         uyKk3F6ONmOv2yFrmEDvYymrMtqpLrUOcopx8nHmR4uj3Y2VDWqZIEkLxo+2037jGRGn
         PMi5cizfvyeJ2WaMisLldWtI7l4+iEj7Z0jFIEqaJHUm2IHTjFoIm03/z3dAFxu/zPj/
         NYXXk/Q9zqM5vWwkKy7c7YTH/F7XIlSb3o+xe4vy/deL15+M/Ok63T/XpHIN+0RUxTm9
         gWEw==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20251104; t=1776859065; x=1777463865;
        h=content-transfer-encoding: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;
        bh=GSk8rVEDKF8QMfakJ7DVBlI1SofoX5vaDroyYmD281Y=;
        b=Zsw/D8wl+g2wWIZcEaGKT3bHbCG1h8XOKSfp7/feuwTYUPFYlf+ZxLkhKo4TbKRPbT
         8R3ML27Jk5i06lZI8KzUUARLFAZTmh5bP0oxCGd5Nx2Yu9bRORLrB51GXf01HLY3SbLz
         fL++VzC9iMAammIZxGYHrqF9oaLI4ypmiAchxSypzNYz3DK3mIIkjeIxAIu7ddFUGaQc
         WLcczggT1AO2r5CWPR4LsGsq1Dd3r6QI4TKcqTn/0dUHlK2oQ4Vbmq9UgsFliHeB/Db1
         ZPDOTibUHPTP/Tl9eOpSXKgzqb+9NtLUKTAtdP24672SwlDpwMaFxu+IbjUtoIvk4TTl
         Lj1g==
X-Forwarded-Encrypted: i=1; AFNElJ9ui6yDK2yyP0iBZtfn9bKQdCNv5RJQnMl34hbWxwuAbByHsi63K+0OVha8/gcJrNyAv54Rytv0HCo=@lists.xenproject.org
X-Gm-Message-State: AOJu0Yw6EX3laOKyofOUDuyiL5r6UIc3aH2dTwOIzVlcAKVXreOFUZIf
	vWSxXGsshukusntjtFZsX3+RDgtAwkwv3Ey5Le/uNdeThFWdj5UD+Qmv013azxsp2g==
X-Gm-Gg: AeBDietqBByMF2QUCkbc/zYfzMUZ9wTqWNaJDc7gMMKx1iYInW9/0Tb62tF28HKj0Rl
	GBlT4+VpcHEGRi85wyJ/cFGkKCBlacQH8zGjEz4Vp2AlCPRUEE+G4CWu67s4eYh882j3xzU26rj
	2954qgFeut7mVTj757E/MOY+v7bww+IyrU8SnUKjrmeQxpeab/P6lDJ1vwb88/MXLpsOqbjP/xf
	7TR6jNX3bF37MZzTW3OU9OdxbOSiCOEgZFl6OWQkUAJEPtsql0VRSGwOq3gkn4YLpqfFok8CqMp
	gF0kCEOkMT++4qNYkPAdutLgs0smRgCeZg2ubfJsATyiYjU0aC8EUN3/7HErH/WvvNZpEltvu15
	NtRz/PdRJlhhIDx9AuKijC9gwt1NHlh/FBRUmh27aVuYSIabznxW3EVqKGNGjIj/kYIe8Tg3uwM
	hgzeLZLrCZLQW4FIG4vO2uG/qDYAAM7MEWxFz6ghuUG9NMNB2ZoTcJQNfs70NJasZe2NEN1Kc/w
	kpODNSzUtdd/R72hljfNobDww==
X-Received: by 2002:a05:6000:22c5:b0:43d:4b00:9ee7 with SMTP id ffacd0b85a97d-43fe3e10b0dmr33929492f8f.33.1776859064953;
        Wed, 22 Apr 2026 04:57:44 -0700 (PDT)
Message-ID: <d493eee4-bc83-4a44-8568-3a18ddc90d4c@suse.com>
Date: Wed, 22 Apr 2026 13:57:43 +0200
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH v3 05/12] xen/riscv: add kernel loading support
To: Oleksii Kurochko <oleksii.kurochko@gmail.com>
Cc: Romain Caritey <Romain.Caritey@microchip.com>,
 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.pau@citrix.com>,
 Stefano Stabellini <sstabellini@kernel.org>, xen-devel@lists.xenproject.org
References: <cover.1775836193.git.oleksii.kurochko@gmail.com>
 <29ec8e444792caa925ba92cdc406ef8c0b3bd678.1775836193.git.oleksii.kurochko@gmail.com>
 <6af89a34-3bf1-40cb-a4c5-e9a16ee31295@suse.com>
 <b6c4a111-6c37-4850-962a-5b401a4a5655@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: <b6c4a111-6c37-4850-962a-5b401a4a5655@gmail.com>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 7bit
X-purgate-ID: tlsNG-16d1c6/1776859065-51361D75-6307B915/0/0
X-purgate-type: clean
X-purgate-size: 5046

On 22.04.2026 13:45, Oleksii Kurochko wrote:
> On 4/21/26 10:57 AM, Jan Beulich wrote:
>> On 10.04.2026 17:54, Oleksii Kurochko wrote:
>>> +static paddr_t __init kernel_image_place(struct kernel_info *info)
>>> +{
>>> +    paddr_t load_addr = INVALID_PADDR;
>>> +    uint64_t image_size = info->image.image_size ?: info->image.len;
>>> +    const struct membanks *banks = kernel_info_get_mem_const(info);
>>> +    unsigned int nr_banks = banks->nr_banks;
>>> +    unsigned int bi;
>>> +
>>> +    dprintk(XENLOG_DEBUG, "nr_banks(%u)\n", nr_banks);
>>> +
>>> +    /*
>>> +     * At the moment, RISC-V's Linux kernel should be always position
>>> +     * independent based on "Per-MMU execution" of boot.rst:
>>> +     *   https://docs.kernel.org/arch/riscv/boot.html#pre-mmu-execution
>>> +     *
>>> +     * But just for the case when RISC-V's Linux kernel isn't position
>>> +     * independent it is needed to take load address from
>>> +     * info->image.start.
>>> +     *
>>> +     * If `start` is zero, the Image is position independent.
>>> +     */
>>> +    if ( likely(!info->image.start) )
>>> +    {
>>> +        for ( bi = 0; bi != nr_banks; bi++ )
>>> +        {
>>> +            const struct membank *bank = &banks->bank[bi];
>>> +            paddr_t bank_start = bank->start;
>>> +            /*
>>> +             * According to boot.rst kernel load address should be properly
>>> +             * aligned:
>>> +             *   https://docs.kernel.org/arch/riscv/boot.html#kernel-location
>>> +             *
>>> +             * As Image in this case is PIC we can ignore
>>> +             * info->image.text_offset.
>>> +             */
>>> +            paddr_t aligned_start = ROUNDUP(bank_start, KERNEL_LOAD_ADDR_ALIGNMENT);
>>> +            paddr_t bank_end = bank_start + bank->size;
>>> +            paddr_t bank_size;
>>> +
>>> +            if ( aligned_start > bank_end )
>>> +                continue;
>>> +
>>> +            bank_size = bank_end - aligned_start;
>>> +
>>> +            dprintk(XENLOG_DEBUG, "bank[%u].start=%"PRIpaddr"\n", bi, bank->start);
>>> +
>>> +            if ( image_size <= bank_size )
>>> +            {
>>> +                load_addr = aligned_start;
>>> +                break;
>>> +            }
>>> +        }
>>> +    }
>>> +    else
>>> +    {
>>> +        load_addr = info->image.start + info->image.text_offset;
>>
>> Why does stuff ahead of text_offset not need loading?
> 
> Here we just calculating only a place where kernel will be loaded. The 
> full kernel image will be loaded in kernel_image_load().

Okay, but if you calculate an address where the full image won't fit,
how are things going to work?

>>> +        WARN_ON(!IS_ALIGNED(load_addr, KERNEL_LOAD_ADDR_ALIGNMENT));
>>> +
>>> +        for ( bi = 0; bi != nr_banks; bi++ )
>>> +        {
>>> +            const struct membank *bank = &banks->bank[bi];
>>> +            paddr_t bank_start = bank->start;
>>> +            paddr_t bank_end = bank_start + bank->size;
>>> +
>>> +            if ( (load_addr >= bank_start) && (load_addr < bank_end) &&
>>> +                 (bank_end - load_addr) >= image_size )
>>
>> Do we have to fear overflow? (If so, shouldn't such an image be rejected
>> rather than an attempt being made to place it?) If not, simply:
> 
> Just for a case. As a user may control load_addr and image_size it could 
> be some combination which will lead to overflow here.
> 
>>
>>              if ( (load_addr >= bank_start) &&
>>                   (load_addr + image_size <= bank_end) )
> 
> I will add the following:
>          /*
>           * Reject a malformed image before the loop to avoid wrapping
>           * load_addr + image_size in the per-bank check below.
>           *
>           * image_size covers the kernel from _start (placed at load_addr =
>           * start + text_offset) through _end.  The alignment gap
>           * [start, load_addr) is padding and need not lie within a bank.
>           */
>          if ( image_size > (paddr_t)-1 - load_addr )
>              bi = nr_banks;
>          else
>              for ( bi = 0; bi != nr_banks; bi++ )
>              {
>                  const struct membank *bank = &banks->bank[bi];
>                  paddr_t bank_start = bank->start;
>                  paddr_t bank_end = bank_start + bank->size;
> 
>                  if ( (load_addr >= bank_start) &&
>                       (load_addr + image_size <= bank_end) )
>                      break;
>              }

Please consider getting away without "else" (and hence with one level
less of indentation):

         bi = image_size <= (paddr_t)-1 - load_addr ? 0 : nr_banks;
         for ( ; bi != nr_banks; bi++ )
         ...

>> Also, does image_size really only cover space starting from .text_offset,
>> rather than from .start?
> 
> image_size covers total memory the kernel occupies at runtime.

Which emphasizes the remark further up.

Jan


From xen-devel-bounces@lists.xenproject.org Wed Apr 22 11:59:36 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 22 Apr 2026 11:59:36 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1290419.1570019 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wFWEw-0006UR-Hs; Wed, 22 Apr 2026 11:59:34 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1290419.1570019; Wed, 22 Apr 2026 11:59: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 1wFWEw-0006UK-EN; Wed, 22 Apr 2026 11:59:34 +0000
Received: by outflank-mailman (input) for mailman id 1290419;
 Wed, 22 Apr 2026 11:59:33 +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 1wFWEv-0006UC-NE
 for xen-devel@lists.xenproject.org; Wed, 22 Apr 2026 11:59:33 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wFWEv-00Ecnb-3m
 for xen-devel@lists.xenproject.org; Wed, 22 Apr 2026 13:59:33 +0200
Received: from [10.42.69.5] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <andrew.cooper@citrix.com>)
 id 69e8b825-e002-0a2a0a5209dd-0a2a4505bb0e-0
 for <xen-devel@lists.xenproject.org>; Wed, 22 Apr 2026 13:59:33 +0200
Received: from [52.101.61.49]
 (helo=DM1PR04CU001.outbound.protection.outlook.com)
 by tlsNG-c201ff.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.1)
 (envelope-from <andrew.cooper@citrix.com>)
 id 69e8b823-aaa8-0a2a45050019-34653d31b2f0-3
 for <xen-devel@lists.xenproject.org>; Wed, 22 Apr 2026 13:59:32 +0200
Received: from CH8PR03MB8275.namprd03.prod.outlook.com (2603:10b6:610:2b9::7)
 by DS7PR03MB5480.namprd03.prod.outlook.com (2603:10b6:5:2d1::21) with
 Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9846.20; Wed, 22 Apr
 2026 11:59: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%6]) with mapi id 15.20.9846.019; Wed, 22 Apr 2026
 11:59: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=uekD+EC73qBRAVBh3mgML3J47C06l9RGMDc4eV1gTsSXCnAE3lSmFlTIs1qu1nxRL0T3KqZhUZugQTjqrk2T3qodraYmRk3h3ZVj19B5oLBJo6/oMjLXimR25cpCOLmfKmdh8zFjSpVjxc3r3K4IWZdZaD6uXznLYPdTBHZcfAmZ+E3uzjTtIB3l0E1my8IcOA9Yf84EA6b6g4YMi5483N6DGeJIIvNE+UR6yZcPCT+pHIdvI/cuU7SZQeGQOwTbn0c/tL8olK4ibS1GCUrVdfl5GPgPRsOUKe3r0IWHsZBGCLzT4Y0k7OYFjFhlZsKma1YCEYLfNU1iH4T6AujJ0g==
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com;
 s=arcselector10001;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1;
 bh=vz0lG9odJQg8SnoQqf4E0pd0+0LnX1UAlpptmlhug5g=;
 b=sb8QGuzQxZEZ3rjBm+pVby5yfXVtCCi26m1hx116nSZeT9qYXIJ3pQ3ZYEIj3NIyCX6/GcwagtNZBmU57LZgxxDpgTX+O4QAXi6nVHY49aox0hyv/0BUArTV8/6l3A5jRaySYnfVoqUbFZ/ffRP0IZdsRmoYBr7RiAEQtfMh/oBGz3E3zksBStFwLk7Er0dEztBI2HfOchygHBrSoQ96yfy6+031uSvS/hbuasV+orldi24yWdH8qSjb6TPaN1JZGoMCnW5AbpkcljsGEdQifA9DwV05/3DQ5vwBXlRHmx6uXp8bSG08CFWs0P2E2niKubgfmaHwkEyPDUn5u2GKwQ==
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=vz0lG9odJQg8SnoQqf4E0pd0+0LnX1UAlpptmlhug5g=;
 b=fALxY3szKmRADhh3MAHi5DkV7Cfw/cfsHtfrEZdJubHFe25ou8Lw3UTGBkbXRmXJeM+S3A4Ihco52qADOzdVExLD6RpLZDJaBZTeBRz6Guv3cu9uSNYHuCAZbSJs/FG1ydoytoeFjYVZ8fSHLw+NwSfT+w+l+yNHd+yKEMP0Nrk=
Authentication-Results: dkim=none (message not signed)
 header.d=none;dmarc=none action=none header.from=citrix.com;
Message-ID: <77234acb-4539-4efe-9c30-03cb7a389912@citrix.com>
Date: Wed, 22 Apr 2026 12:59:25 +0100
User-Agent: Mozilla Thunderbird
Cc: Andrew Cooper <andrew.cooper3@citrix.com>,
 Marek Marczykowski <marmarek@invisiblethingslab.com>,
 Daniel Smith <dpsmith@apertussolutions.com>,
 Bernhard Kaindl <bernhard.kaindl@citrix.com>
Subject: Re: [PATCH] EFI: adjust cfg file buffer freeing
To: Jan Beulich <jbeulich@suse.com>,
 "xen-devel@lists.xenproject.org" <xen-devel@lists.xenproject.org>
References: <bf990673-83c3-44c3-a76a-3b0c36108ec5@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: <bf990673-83c3-44c3-a76a-3b0c36108ec5@suse.com>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 7bit
X-ClientProxiedBy: PA7P264CA0357.FRAP264.PROD.OUTLOOK.COM
 (2603:10a6:102:37c::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_|DS7PR03MB5480:EE_
X-MS-Office365-Filtering-Correlation-Id: c53a3075-55da-4dd2-8c53-08dea0669b97
X-MS-Exchange-SenderADCheck: 1
X-MS-Exchange-AntiSpam-Relay: 0
X-Microsoft-Antispam:
	BCL:0;ARA:13230040|1800799024|366016|376014|18002099003|56012099003|22082099003;
X-Microsoft-Antispam-Message-Info:
	aQbPoZisxoOI/OoYxTSF4Uug1kcvnaFALsqBzIcxe519C8mNIzBn/yiFt93dRmCD3vFITS7DS0vbPfv1JzWNtI5Nk8e73TmJz7D2LN/On6naWgcsA2oOCIeTFS/tn/WBeeH6JpiWEXcAaTO4ise5bpUUx+VFilsw5SSZn5P4K1r6cJd9OZGN+jxBHIIrOpUlIRAe86B3saiZeOVLu3JrVOef70Z49Z3wSPNMyBlvPQulpNiPV0XWq4r2+EIOnzVl2kpgX2tznwIwvsjA3W0u/VBfsq4Axa5MDpjxqkdTswJ68XJAfqe2eCYcZx9eppHtUWguhfx2Z06EPHpRjItn92Pb2dVOSm3JZ7HAQoVY3RgZtJkWHy0IulxnzIWu2EytsbRiH7UZf3S4tmHxuI8Sd6O2TElq4qNsPbjDgV5QSRAlAOzoVflZDm7N0whv52oUAAst4KA0Z2G5j5/OE2v3JdbO5Ng5qRM3qKU+V0gg0mUf6VrkYP+my8quv9GlmCfSqxfn5l5a5MGx60IAWYCAgfWlz80z2RPdV/JWd7bdhrA1gCYwWHYLMEgMwSHIEJZxbohMOoWrddhirja5R8r+Eavjy4xUhZaDDbC3+2JZhyhUljVmk0k8Rh4ct44ksCjJCtbxi69NuKO9IbyELfMKdbAXs4LxeYvKzQRmDmHvLBHoa9JBRoA9J/ytwEXTFjOF3Y8PoK2f+yyVrwrydnf+csoWmoFqjP6pPwxZ+idydld0hqNqg3tKSvxY0l4B+LPk
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)(18002099003)(56012099003)(22082099003);DIR:OUT;SFP:1101;
X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1
X-MS-Exchange-AntiSpam-MessageData-0:
	=?utf-8?B?WnhHb2lERmF5K0pjbkpEQkk0YlViRlNTaFZ4M0hES201b2JxMHExZk15U0Uv?=
 =?utf-8?B?NXJnSVU2cGp3RE4xWEZ4K3p6VFZhSzVuOFJtek02TGhnSW1vYzB3Z3EvZ1Ri?=
 =?utf-8?B?bEFOUm1LNzJvZVFNTTd0bjhZWGxDYWdjZXhBQm52L21hWmRZYTVNbTBTS040?=
 =?utf-8?B?TUtlNGdXek52TWxDS3pRR25aOWpvekNvekJxQWRnTTB0NHJ1Szg4bGRiWTl5?=
 =?utf-8?B?Q3VwYmtKNGxndk5SYXZDS1J5ZWhzWUFCTVcwMk5kMis1VldMdUhIMG1YMFRZ?=
 =?utf-8?B?Mmh0aWxsTWYzSU1qajQ1S0tlZ1VVWXZkd3UwUUcrSEVpYjBWZ2pVVEtvVEsx?=
 =?utf-8?B?dXByejI3VWR5N3BtU1FGVzEwaE9rN3J6TmVMbm9rWlc3b2wwRTZlL0tNZHUv?=
 =?utf-8?B?NllEWkgySVhNRWlYMzNPaWxpZHdIWHNUc3JMT2VqanVtbFZUYUhKdHQxZS82?=
 =?utf-8?B?QWVWQ2JlQVVzR0VHdzJqUjB3aDVDRjRpaldsTU9NbHlzVUFMQ0UrMVNiVEl6?=
 =?utf-8?B?dHIxV25HQXVIQTFnZ1pKaVJlV3FDcnZoWkl2b1krQ1RtY0M4WUd1bnBrazlv?=
 =?utf-8?B?Z2d1V0ptTGhJZVZQc2Jkb1ZlcUhRN2Q4UUYySmJzbzVUb1dDQ2hxU3NSYjQw?=
 =?utf-8?B?YkhsMTQyTjJQd2hYcEVMczJzQ0tDU1llMjhxeDlJdXN2REJ0c0FRdUdBSGh4?=
 =?utf-8?B?Uk1US285eE9IMy9uVGtmNWtHWG5ndUQ5ckY1WVpZNXdLcW5VMHgyeE0rbklJ?=
 =?utf-8?B?UHRKQ2drWE1ZaXpyeUJFWHg0M3Zjc0dWVGgwRi9ZaU5jRFMyaytLdS9vTUVZ?=
 =?utf-8?B?QUlZYmVlN2lLZlBkLzhMZzVyUGJCNitVTWtVOWg5eG1ZSU03WkJaanlDdllK?=
 =?utf-8?B?MmhVeXhGeGRGajVCWld4ajZnRmZmWjZZbytPTDU1dkVJdmFRdFdLRHAya3ZZ?=
 =?utf-8?B?MTZaQ2I5VU1rdmJTNmdHaW9HTzlyRk9wK3h5bFpEejVMOTdKS0o3WE5BNFJE?=
 =?utf-8?B?WkRscFhPZmw1Kzc1d05WU1V4SThVZ3czcEtURnFpSk5PeDZsdGRsdCs3V2Nr?=
 =?utf-8?B?YnZnZWNEUThkS2FNWVJmMGtQbC9uQTdSZ1JNcjdXTkxRY2lvYnpXTmNWY1RU?=
 =?utf-8?B?bzMwSjQ3UmRucTdrWVZIK0U1QnFtZldIek5UbUVRaTBQZjBFb212TEUwQUNS?=
 =?utf-8?B?Z0haS05xRCtHaGNCZTRjVktrM1dGYS9WSEF5dStIc25QL3FPeE4weEQwck5k?=
 =?utf-8?B?L29kSjNqVFBFeEdFcmxVc0ZqZUdSVVVHciszMmtVMEpBYjRlRHN3Tm05dU9s?=
 =?utf-8?B?YmhwWDlIQ1liZ3BVZXBpNWszVEVISm1lK3Fxd3BUNEVSNUYvRTE1RkZkb21q?=
 =?utf-8?B?NkVvWis3RXI5YjFUNHQwV0IrTWNkSHNmQlRmZk1Ia0tBTkN1SFU3RGpMOVVr?=
 =?utf-8?B?YVMvcVh0OThrdkV0bWdzbGtuTm1vN08yQ0xkODUrUnlDV0Q3VzROeEpXM2F2?=
 =?utf-8?B?USsvb3FDSTB0alBycVR5VnFicTZxSEhjR3h0NWhPMUJEekk5dFBPQUVCVHBi?=
 =?utf-8?B?Sm12TFpxYzZIVm54TS9saFEzd0MyQXMxSlVrNnk3QlhnVmF1bWhPQXlLdHE1?=
 =?utf-8?B?OEVlWndLd2xmbXdrN01PM0lySHVrUldtdUpCZjVLcnkxaEVUVGNZL0JDMGZn?=
 =?utf-8?B?Z3A0TXJQZFQyYWkzV2dVS01VVkFvY3VLOFBKRTkvcGNmbVVzMEl0OVZjRkY5?=
 =?utf-8?B?akswMC9OdDd0RjBQTkNXWm1PRitkcHVydFgwVkRqbExqNGJGRTRMMjBkUENC?=
 =?utf-8?B?ZDRIa1JqdjJ4cmwxVmI4MFdMT0pGckh3QStmRUY5dkpLVGFxNVpwMUpXc3FI?=
 =?utf-8?B?TnZtL2IwY0xFT1lLRUtYYktMbDJaUG52Ymk2Y1F4T044Y3dHYkMrUk81L20y?=
 =?utf-8?B?SW9nLzE5U2pOUnpPZXpYcnBpQkN5VXRiZ1JmR2RKNU9vbmg5dzEvMVhUVlRr?=
 =?utf-8?B?clRQZlZkNlJqV2s0eDRWWlljeE9RZUNqcU5PODh2UERHb0tUOTdnUE5VNFpw?=
 =?utf-8?B?dy9mYnRMTFYrbjFWQ0lvdHQxdDJsOGExNjVjLy96YmJkT2lyOUVuRW5ORTZH?=
 =?utf-8?B?ZGRMMjNLTjdsVG9MNjl0SjIzUlpkWEdpMmdpTkh6MDdPSlpBL2lGdUpINUp0?=
 =?utf-8?B?THlrYThJYnJoNEh4VUV5amE0TVVtU2YxdTBEQjc4MSs5VlJKQUdZcGZqdTlz?=
 =?utf-8?B?bHc2emJuQ0xlT0R5ZjRUSVRzRTRxcS9mSVpKMDlhY1NiR1g4T2R0NHVwSXFw?=
 =?utf-8?B?Qk1HL1c2ckJpMkg2MCtBaThpb3FyajUwalh4MjdOWkhyU2tLSHNNYU1rRHNh?=
 =?utf-8?Q?hrwxu1eRJYlLszGY=3D?=
X-OriginatorOrg: citrix.com
X-MS-Exchange-CrossTenant-Network-Message-Id: c53a3075-55da-4dd2-8c53-08dea0669b97
X-MS-Exchange-CrossTenant-AuthSource: CH8PR03MB8275.namprd03.prod.outlook.com
X-MS-Exchange-CrossTenant-AuthAs: Internal
X-MS-Exchange-CrossTenant-OriginalArrivalTime: 22 Apr 2026 11:59:29.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: JFsQc5SzRFxZet3uaMlzHFR1eQcjlTAESefT+sb7rNEJQxLez4hf4h1cZ7jcUCdvZ6S2BhVxU+Z+fy/cqxCy18fZf7aXo1s1ngvxaOeoB0k=
X-MS-Exchange-Transport-CrossTenantHeadersStamped: DS7PR03MB5480
X-purgate-ID: tlsNG-c201ff/1776859173-E87AE443-BA1D2CF2/0/0
X-purgate-type: clean
X-purgate-size: 1097

On 22/04/2026 12:51 pm, Jan Beulich wrote:
> The boot services FreePages() needs passing the size. Since we allocated
> one more byte to put a trailing nul there, we also need to bump the size
> passed there. Make a small helper function to centralize this.
>
> Note that there's no permanent memory leak because of the oversight: The
> allocation is done using EfiLoaderData, and all memory of that type is
> later reclaimed anyway.

This depends on -mapbs at a minimum.

>
> Fixes: df75f77092c1 ("EFI: avoid OOB config file reads")
> Reported-by: Bernhard Kaindl <bernhard.kaindl@citrix.com>
> Signed-off-by: Jan Beulich <jbeulich@suse.com>
> ---
> This is an alternative proposal to
> https://lists.xen.org/archives/html/xen-devel/2026-04/msg01044.html.

One thing this patch does not do is fix the boundary passed to
efi_arch_flush_dcache_area().

I find it hard to believe that cache maintenance is actually needed, but
given it is present in the code currently it needs to stay correct.

Or, if it's not needed, it should be dropped in a separate patch.

~Andrew


From xen-devel-bounces@lists.xenproject.org Wed Apr 22 12:05:08 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 22 Apr 2026 12:05:08 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1290435.1570029 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wFWKG-00087c-7x; Wed, 22 Apr 2026 12:05:04 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1290435.1570029; Wed, 22 Apr 2026 12:05: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 1wFWKG-00087V-3r; Wed, 22 Apr 2026 12:05:04 +0000
Received: by outflank-mailman (input) for mailman id 1290435;
 Wed, 22 Apr 2026 12:05:03 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <jbeulich@suse.com>) id 1wFWKF-00087L-33
 for xen-devel@lists.xenproject.org; Wed, 22 Apr 2026 12:05:03 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wFWKE-00Fgde-Fv
 for xen-devel@lists.xenproject.org; Wed, 22 Apr 2026 14:05:02 +0200
Received: from [10.42.69.6] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <jbeulich@suse.com>)
 id 69e8b96d-e002-0a2a0a5209dd-0a2a4506a970-8
 for <xen-devel@lists.xenproject.org>; Wed, 22 Apr 2026 14:05:02 +0200
Received: from [209.85.128.53] (helo=mail-wm1-f53.google.com)
 by tlsNG-16d1c6.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.1)
 (envelope-from <jbeulich@suse.com>)
 id 69e8b96e-7371-0a2a45060019-d1558035a469-3
 for <xen-devel@lists.xenproject.org>; Wed, 22 Apr 2026 14:05:02 +0200
Received: by mail-wm1-f53.google.com with SMTP id
 5b1f17b1804b1-4891f625344so36969845e9.0
 for <xen-devel@lists.xenproject.org>; Wed, 22 Apr 2026 05:05:02 -0700 (PDT)
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-488fb755938sm186606195e9.3.2026.04.22.05.05.01
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Wed, 22 Apr 2026 05:05:01 -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=google header.d=suse.com header.i="@suse.com" header.h="Content-Transfer-Encoding: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=1776859502; x=1777464302; darn=lists.xenproject.org;
        h=content-transfer-encoding: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;
        bh=Oymmmdo0Z7+TImqTXYQBEjW81JQ5Cl2/XBeWf5xJv7o=;
        b=N4Ik8l6gP4jtbkr6QVTTsC4Mhdbp/93YzziJYHt/Qk2tR1ws1lC8Bri1xTcFVtzdN8
         MVwOx0hAB9240iObkBGstwV6aGx+RGdXinHVHz1nw8xrBMgNdGOZIXVfOsAdb8V2cwtF
         t99Gf6Fpwa9QG0ws+SVLx9eMlOEh/dsOLxF/dkkjsTVun6+/gNgdPXASZ/RBzsdZ3DyJ
         2m+cZeFjso+Gk7r2uszHVMLvcIIcy23FdPEHtnMO5SwQzGGvFjc9ab+VJkw1kFoxOUxF
         IraBNQMKD1FVN4nr+kbpFFiKXu26E1mXjM3pUF/Ih/KBUPiww3isy1jVdV1hDCTr4wiG
         BRHQ==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20251104; t=1776859502; x=1777464302;
        h=content-transfer-encoding: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;
        bh=Oymmmdo0Z7+TImqTXYQBEjW81JQ5Cl2/XBeWf5xJv7o=;
        b=pwkSSwE9Thip7r8cmS8ODal4ypG2/WcDy6yWApCIKOFVc6lxzsB5ZzZDFgxES06/CG
         MPVx7VSGOSn7Zv4qDABY60sW5q7fMFAjH497qrQF1csFvhovJPXNdKY9jj9MYaL/+Jh9
         Dtcvvv1Oe/qdKy88yG8o00M8SntomSBp1hTEW3sKj1XInXLHKTDQb4twHt6Z+jyksNuT
         868YZR3QEitRL90VBYcEn79/5j3gQmmM/pWx+hbe9r2f+oK/pVcMvJlZXNXdNGxpH0MU
         8ib7ur4EMf+nPb2JfhkIAdHWijeIX8LqBBeVdgQsLI9YPVEnh/pLKwBeD2LAiQQl2ZwN
         Yqog==
X-Gm-Message-State: AOJu0YwipWXXZh2qCK6/JOvGyGVE8FGbe+1+rX6wIscfdqZ9TcmqwpqC
	t9jPNehJd/B2Ylm4f+33Mk2U4MzsJQXbpRsOjY3aGX5fHs74GeJH5FHONNNjmiR0gg==
X-Gm-Gg: AeBDiesGypHhgthIA14Bzifip4rqK3MhjOPB6slX9ppcE4Xq5coJVPXPhFemmUpBUnL
	zx8N177uF+DaqYYc65ZDMiEZZ/IrVKO3I5kqxBh8s4TSrESosxF9U2Y7JxpculoSzzOph9SKk+X
	qpoQwq1aYDXRHDne8D31VR2HlxWjJ+TBrDXvKah8ADyYLWhqK2WVCcxJwPP9M+qM2Vbcfz5ocag
	qbd/ZEfGVkk1BZfxwYPAZJk1NBOK9SYKSbf6I/PAXw2rMQcgfHZBbZpESj3TaxU96lNMK0UsjXq
	0s3aoFyAFTFmrfxT1DhOp8l6TuBAxKRatzN0zYDF7Eq6DlQBbx+TwhTBBUdzRcl+1hBRVGSLb0+
	q9XLyIKEa7AEBbNj7/rOtcL9aOmyxnlx2C/RCOev5Jz+zdd5ytDAE6QLKRLY5F5HDsvDqRZvxfz
	Yc1pAc/OK68C6+Ja0f8ulWuky++e1MtoiGwdlNW0sbe7DE/2f+AnoTRFugNUP50xT0h8ApKsniH
	wYrGuPAMDN/eX47/KqdMfPm6Q==
X-Received: by 2002:a05:600c:3b2a:b0:48a:534a:eed8 with SMTP id 5b1f17b1804b1-48a534af0ffmr121366385e9.1.1776859501682;
        Wed, 22 Apr 2026 05:05:01 -0700 (PDT)
Message-ID: <5854f2f8-21b6-4462-a9bb-86345a436f6f@suse.com>
Date: Wed, 22 Apr 2026 14:04:59 +0200
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH v3 3/7] vpci: Use pervcpu ranges for BAR mapping
To: =?UTF-8?Q?Roger_Pau_Monn=C3=A9?= <roger.pau@citrix.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>, Julien Grall <julien@xen.org>,
 Stefano Stabellini <sstabellini@kernel.org>,
 Stewart Hildebrand <stewart.hildebrand@amd.com>,
 Mykyta Poturai <Mykyta_Poturai@epam.com>
References: <cover.1775742115.git.mykyta_poturai@epam.com>
 <51223761a1f2b8f1e901062d1e59dad934300f0e.1775742115.git.mykyta_poturai@epam.com>
 <aeiqayUd4sLNEPGG@macbook.local>
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: <aeiqayUd4sLNEPGG@macbook.local>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
X-purgate-ID: tlsNG-16d1c6/1776859502-52777D75-11245440/0/0
X-purgate-type: clean
X-purgate-size: 1021

On 22.04.2026 13:00, Roger Pau Monné wrote:
> On Thu, Apr 09, 2026 at 02:01:33PM +0000, Mykyta Poturai wrote:
>> @@ -412,14 +414,14 @@ int vpci_modify_bars(const struct pci_dev *pdev, uint16_t cmd, bool rom_only)
>>          unsigned long end = PFN_DOWN(vmsix_table_addr(pdev->vpci, i) +
>>                                       vmsix_table_size(pdev->vpci, i) - 1);
>>  
>> -        for ( j = 0; j < ARRAY_SIZE(header->bars); j++ )
>> +        for ( j = 0; j < ARRAY_SIZE(current->vpci.mem); j++ )
> 
> You make a non-trivial use of current in vpci_modify_bars(), maybe you
> should consider introducing a local variable for it:
> 
> struct *vcpu curr = current;

Without any intention to negate this, ...

> current expands to a call to get_cpu_info(9, which is better to avoid
> doing repeatedly, specially in the context above which is used as a
> loop upper bound.

... I'd like to point out that "current" isn't evaluated when used by
ARRAY_SIZE() (resolving to two uses of sizeof()).

Jan


From xen-devel-bounces@lists.xenproject.org Wed Apr 22 12:12:52 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 22 Apr 2026 12:12:52 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1290445.1570036 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wFWRh-0001ww-UQ; Wed, 22 Apr 2026 12:12:45 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1290445.1570036; Wed, 22 Apr 2026 12:12: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 1wFWRh-0001wp-Rq; Wed, 22 Apr 2026 12:12:45 +0000
Received: by outflank-mailman (input) for mailman id 1290445;
 Wed, 22 Apr 2026 12:12:44 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <jbeulich@suse.com>) id 1wFWRg-0001wj-AQ
 for xen-devel@lists.xenproject.org; Wed, 22 Apr 2026 12:12:44 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wFWRf-000T04-K3
 for xen-devel@lists.xenproject.org; Wed, 22 Apr 2026 14:12:43 +0200
Received: from [10.42.69.10] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <jbeulich@suse.com>)
 id 69e8bb35-e002-0a2a0a5209dd-0a2a450ae5da-26
 for <xen-devel@lists.xenproject.org>; Wed, 22 Apr 2026 14:12:43 +0200
Received: from [209.85.221.46] (helo=mail-wr1-f46.google.com)
 by tlsNG-4011c0.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.1)
 (envelope-from <jbeulich@suse.com>)
 id 69e8ba87-56b3-0a2a450a0019-d155dd2eac0f-3
 for <xen-devel@lists.xenproject.org>; Wed, 22 Apr 2026 14:09:43 +0200
Received: by mail-wr1-f46.google.com with SMTP id
 ffacd0b85a97d-43d70b3e159so2711879f8f.0
 for <xen-devel@lists.xenproject.org>; Wed, 22 Apr 2026 05:09:43 -0700 (PDT)
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-43fe4cb1176sm46753609f8f.3.2026.04.22.05.09.42
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Wed, 22 Apr 2026 05:09:42 -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=google header.d=suse.com header.i="@suse.com" header.h="Content-Transfer-Encoding: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=1776859783; x=1777464583; darn=lists.xenproject.org;
        h=content-transfer-encoding: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;
        bh=1T+yJ5lV7gcGcLpzVGqXyOjFPnFt4xhCOY5pVEHRXFM=;
        b=FjkjnFxEfvYg0uN46l8TzKOUfwk1ovWADFIfJhxO1JHbSp9ZeDylYWqXLWBsw7fbxN
         04VlfdUXaonQpABC0eLDshVV6AN0Zl19i8a5FvqG+gScd5dih50+o4yHEsBE2gkI0mqK
         qQaTxjEXMy14DZU3LJRqB4HbWweYOA1YGOdCRHIHZj7IPIKJfa+EbHc5hTcyA2YLuhXn
         FJZJghzMNc+K/koRR9uZuqvb91QyRb011zylcusRkK673+515Q3TRrhImzGmDP4ud+6d
         W5XVPJNeWFWznHRx2uLOofcjmZN2ZKEYYcme1gsu8r3M9wKXZdnqamw2LRdpHc2007z/
         Btcw==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20251104; t=1776859783; x=1777464583;
        h=content-transfer-encoding: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;
        bh=1T+yJ5lV7gcGcLpzVGqXyOjFPnFt4xhCOY5pVEHRXFM=;
        b=Xgdu0SQKf6tydfBfhKekSTvOG07haZzPppwO/0oJgRZd9YYH8BmHal6NaoZ89rfsFV
         P/JIBBNyqwiVmbT1TnacqbxlbmOoFerTFf1c7XRe2KLWPr12eytjNhTF1ZIUskTcEHOR
         uVsDbdXjvlDBXzZFdFYuh7svuq3g7NI/HZGWUTLMIuf1GLtL60Vyxpi3gnhdzixQH7sc
         b2J++gyiK4LIkBj2LuJM72u15j/qetoPXkfLpjnkVeEbIwV/1UXt+T/eans9sbExbSqD
         x7xQ58jHo4KYPe/J9uDZHpXVlZDZksN+q8Fy53AmrPjVAfizbOkwsULa7Ma0UbVP+hL6
         kt2Q==
X-Forwarded-Encrypted: i=1; AFNElJ+DiakJFTcoPrrB4YWa+z1N1qDQBf5d1BAEdHWzVPfQPS4bRg5JcO3d/fbRkGDE7/lGlmyTw01TS4o=@lists.xenproject.org
X-Gm-Message-State: AOJu0YyLFUzDZW+Qo/mSYwVDVOhKHGjp8qNH4xyeqg9CNJlK+I6IVv27
	z0VwuvALyko3FR5diRlOeCtnyjBapPVXIpvNOnbkgPuSl7En8gzkpySUwTWMAkGKdA==
X-Gm-Gg: AeBDietDlUjwsMIDSzyRStJgkj8LQYkO4dHYfcokMq1lKhXofaJjVFkbw/sAtfO+9ll
	dbpKOYGeqegRJOE0PqKgrRYXIb4/90T2ozrl0nJxgDf7g5yhFEnE1H9D+2lErLhD0cI+WtxHZJ2
	9kKn7eXPlO+o+gfDY9zvqg6clZmbkHlhrLH0bBruHRa1s1JaLl4TsnzMVDe4TRXBiVlKDOUWmPQ
	l8V7zfISIb7Y6u2wLeV6HW+W9QCROpoUH0tn7wmw0JXlwKgXUHDdNS94mUfJNsgEWJ1AKRsrAMb
	OdOnwG5oDBI7nqJaFXC1I+hr6gxM4QAOy8cfP80u0GQ4wJaRCTatcEBYLi4s0li9dPVcMJJCIpF
	NIOhkyFkuSlWmVzdmsn5ND/6XqvE419yku8yNtc8BNbatdhxlivKPHXl7rMLlWJfcCOhKHITUjE
	LDAkj74HqBnJyU11ojebRQLuK6KNm/fnZG5iVAiJCLt+fAwrHJjGdMNnPpXoBSC1S2M8gEtFX5L
	o3ntr+Y+IurjObYjsrN9rKAoQ==
X-Received: by 2002:a5d:6751:0:b0:43e:a69b:d805 with SMTP id ffacd0b85a97d-43fe3dfbd18mr22034167f8f.27.1776859782577;
        Wed, 22 Apr 2026 05:09:42 -0700 (PDT)
Message-ID: <f91fae0b-7d3b-4ca6-a5ed-72de50daee9c@suse.com>
Date: Wed, 22 Apr 2026 14:09:41 +0200
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH] EFI: adjust cfg file buffer freeing
To: Andrew Cooper <andrew.cooper3@citrix.com>
Cc: Marek Marczykowski <marmarek@invisiblethingslab.com>,
 Daniel Smith <dpsmith@apertussolutions.com>,
 Bernhard Kaindl <bernhard.kaindl@citrix.com>,
 "xen-devel@lists.xenproject.org" <xen-devel@lists.xenproject.org>
References: <bf990673-83c3-44c3-a76a-3b0c36108ec5@suse.com>
 <77234acb-4539-4efe-9c30-03cb7a389912@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: <77234acb-4539-4efe-9c30-03cb7a389912@citrix.com>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 7bit
X-purgate-ID: tlsNG-4011c0/1776859783-CE9768B7-8B7D92DB/13/0
X-purgate-type: clean
X-purgate-size: 1419

On 22.04.2026 13:59, Andrew Cooper wrote:
> On 22/04/2026 12:51 pm, Jan Beulich wrote:
>> The boot services FreePages() needs passing the size. Since we allocated
>> one more byte to put a trailing nul there, we also need to bump the size
>> passed there. Make a small helper function to centralize this.
>>
>> Note that there's no permanent memory leak because of the oversight: The
>> allocation is done using EfiLoaderData, and all memory of that type is
>> later reclaimed anyway.
> 
> This depends on -mapbs at a minimum.

But that's affecting only EfiBootServices{Code,Data}, isn't it?

>> Fixes: df75f77092c1 ("EFI: avoid OOB config file reads")
>> Reported-by: Bernhard Kaindl <bernhard.kaindl@citrix.com>
>> Signed-off-by: Jan Beulich <jbeulich@suse.com>
>> ---
>> This is an alternative proposal to
>> https://lists.xen.org/archives/html/xen-devel/2026-04/msg01044.html.
> 
> One thing this patch does not do is fix the boundary passed to
> efi_arch_flush_dcache_area().

Deliberately so, and I commented to this effect in reply to Bernhard's
patch. I do think ...

> I find it hard to believe that cache maintenance is actually needed, but
> given it is present in the code currently it needs to stay correct.
> 
> Or, if it's not needed, it should be dropped in a separate patch.

... this is the way to go, but it'll need input from Arm folks (as
requested there).

Jan


From xen-devel-bounces@lists.xenproject.org Wed Apr 22 12:33:19 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 22 Apr 2026 12:33:19 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1290464.1570045 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wFWlT-0005tO-Es; Wed, 22 Apr 2026 12:33:11 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1290464.1570045; Wed, 22 Apr 2026 12:33: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 1wFWlT-0005tH-CN; Wed, 22 Apr 2026 12:33:11 +0000
Received: by outflank-mailman (input) for mailman id 1290464;
 Wed, 22 Apr 2026 12:33:09 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <jbeulich@suse.com>) id 1wFWlR-0005t8-Ir
 for xen-devel@lists.xenproject.org; Wed, 22 Apr 2026 12:33:09 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wFWlQ-00B3a9-LA
 for xen-devel@lists.xenproject.org; Wed, 22 Apr 2026 14:33:08 +0200
Received: from [10.42.69.3] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <jbeulich@suse.com>)
 id 69e8bff8-bab6-0a2a0a5309dd-0a2a45039e06-32
 for <xen-devel@lists.xenproject.org>; Wed, 22 Apr 2026 14:33:08 +0200
Received: from [209.85.128.44] (helo=mail-wm1-f44.google.com)
 by tlsNG-33051d.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.1)
 (envelope-from <jbeulich@suse.com>)
 id 69e8c004-672d-0a2a45030019-d155802cace9-3
 for <xen-devel@lists.xenproject.org>; Wed, 22 Apr 2026 14:33:08 +0200
Received: by mail-wm1-f44.google.com with SMTP id
 5b1f17b1804b1-488a14c31eeso42416665e9.0
 for <xen-devel@lists.xenproject.org>; Wed, 22 Apr 2026 05:33:08 -0700 (PDT)
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-488fc14a61asm413757565e9.15.2026.04.22.05.33.07
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Wed, 22 Apr 2026 05:33:07 -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=google header.d=suse.com header.i="@suse.com" header.h="Content-Transfer-Encoding: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=1776861188; x=1777465988; darn=lists.xenproject.org;
        h=content-transfer-encoding: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;
        bh=UMY5gm1Nj4tlgzffEyXZ3vdWRk8gGg5mqTSMtNw0cCQ=;
        b=b79K/nDa5DG5bcOAJ8PFLw2+WdqVg6z+82SltxP0UvfHrpZN+xvmunf9xYJ+pw6QTh
         fj0iXLVApiUZp+zHL+IBi3QIKxF4yePQ8ZQbIh/VBzng42qD0PEQUlKKwhTEshHb0a/Z
         CeyptANj23a28hs1ACUnz67GUr4Enl67FlJ1xy8UPCBQpnB9wPCT94fF8qa0zH7R5h1Y
         rETm7V6Q6cguo6C1i9pxcMA6k/5t/rtC9B7WGi0KYA1izgMy00OrHIe/8OXYvhbO5MM+
         gDMYPmRKGAQStXKl/D+vyCzGWBhe6AJSYQEGZWBtoKJGuZGnhuFYerZLtICm/tCcyvNw
         XokQ==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20251104; t=1776861188; x=1777465988;
        h=content-transfer-encoding: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;
        bh=UMY5gm1Nj4tlgzffEyXZ3vdWRk8gGg5mqTSMtNw0cCQ=;
        b=k2oLbYl1yFODsAhmyoRCeAqjDkU5UJ+kB4FRTT/yjfmoj3McCc8ONUSf5LqtqcaIhV
         +oo9CnocGhP1qVmG+euFg4iplioUfyb15UxJ2UnaOIZd5J1SxIT/MBKpRcGB3EB/Sy0Q
         zBtCXbw4ADf7Mk0/hwyX7K3p29C8vkiJReM6mKSYOI0WYwpj5IyXewdG3lKNdpxW+9SI
         g7y6hE+snANvppjTIfX4V2JA+VTz2pFeMs5DKHJHDyvFwInDwz16La9bKX6eA3XX26uh
         Sx/HJ8rSObvecRXEZiR8EmEVASOlOidc6bu5G6jLT97L/Qfnsh+GFpRzQQEQ7ciakdGR
         tFVA==
X-Forwarded-Encrypted: i=1; AFNElJ+E+IlNFvj73OZ7oZtu1Lkcg3FsJhSCjhFrkzI9acd8xAv+NwnVOYGCZ9wzjbr0Af7jGnbMOyERWYw=@lists.xenproject.org
X-Gm-Message-State: AOJu0Yy4ot6Jx9jVuHk/LFsdclUdJ/EOxxS+U4YsBevSwZni16NIr+m0
	SSs2aiQaKl6lewgLZq65mtJ2pnJLeGMEKHo8FGWmAoZocIELIFgxUsxki5/ZxWfh5A==
X-Gm-Gg: AeBDieu+hdkTlmGXWYdl9TR+u3Jp1IO2axqRbsbHL/WlWGvfRusSA6IpIqSRyCzCNIB
	XyoN0+i5GXPwqjSWz3QL7mA2zJv1nLVgRf0Kzn9nDbBA4xJYNpr3veHhCnAITW/paky+sfrXatM
	F6eEi4v7cIwa5aeHyjuz3a1dWzl0BlHuDQH7Tlc2rOkWstXexgqd6egDGq2xye1xjF7mKkBlomr
	l5HqkNq5aXSKDakUS22hUoFvT8ipLUcZyykIrMlfEeprs8NPWu/tqQvvINDe9z0bWDa1PyKrVBy
	ipEQW82Dp4nFxFcYq3eVOUky1lA9reoqRLXQe/UjBu8nHZQOTZAQvjJ3wXYhokDNljXjhWwQJNj
	TLTRbtrCyAgIqZ0RmBBdp9k7u08cXqawRm/xaj+g2bpOjh+VLG2lMejr8apJ9KUPEnsjh1VtfEr
	Smg8esgot8jUGs/Aw9AgRiwQbFQOZl3IHrh6CVeY7kIqi+bpBPsxnf6gaXPvRTK9SrEekbfygi+
	V+3Mbh+lsFIPkreGVjoQETAUg==
X-Received: by 2002:a05:600c:c177:b0:486:fb0b:ad79 with SMTP id 5b1f17b1804b1-488fb78129emr290350715e9.20.1776861187802;
        Wed, 22 Apr 2026 05:33:07 -0700 (PDT)
Message-ID: <081743b1-e57b-4e06-9cc9-20f1ee01afe9@suse.com>
Date: Wed, 22 Apr 2026 14:33:06 +0200
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH v6 2/7] xen/mm: Allow free pages to cover a claims
 shortfall
To: Bernhard Kaindl <bernhard.kaindl@citrix.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.pau@citrix.com>,
 Stefano Stabellini <sstabellini@kernel.org>, xen-devel@lists.xenproject.org
References: <cover.1776172526.git.bernhard.kaindl@citrix.com>
 <5d1e06a0fcaee4520bf79d58199e447194f84fe8.1776172526.git.bernhard.kaindl@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: <5d1e06a0fcaee4520bf79d58199e447194f84fe8.1776172526.git.bernhard.kaindl@citrix.com>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 7bit
X-purgate-ID: tlsNG-33051d/1776861188-2AD63938-3B0C9AC6/0/0
X-purgate-type: clean
X-purgate-size: 2360

On 14.04.2026 15:22, Bernhard Kaindl wrote:
> Allow an allocation to proceed when free, unclaimed memory can cover a
> claims shortfall.
> 
> In preparation for NUMA-aware claims, refactor this check into a
> reusable helper so the same logic can be applied to NUMA nodes.
> 
> Suggested-by: Jan Beulich <jbeulich@suse.com>
> Signed-off-by: Bernhard Kaindl <bernhard.kaindl@citrix.com>
> 
> ---
> 
> Changes since v4: Extracted into a dedicated patch and merged the
> formerly separate functions into one, as suggested by Jan Beulich.

I did ask for the splitting out, no question. I can't find anything towards
the functional change though in my v4 replies, and with that being the main
aspect here I think Suggested-by: would credit me for something I didn't do
or say.

> --- a/xen/common/page_alloc.c
> +++ b/xen/common/page_alloc.c
> @@ -868,6 +868,42 @@ static void check_and_stop_scrub(struct page_info *head)
>      }
>  }
>  
> +/*
> + * Allow the request when unclaimed pages suffice, or when a refcounted
> + * domain's outstanding claims cover the shortfall.

Nit: It's not the domain which is refcounted here (the refcounting there is
something entirely different), but the allocation.

> + */
> +static bool claims_permit_request(const struct domain *d,
> +                                  unsigned long avail_pages,
> +                                  unsigned long competing_claims,
> +                                  unsigned int memflags,
> +                                  unsigned long requested_pages)

I think it is good practice to have the main input parameter(s) first.
That would be "requested_pages" here plus perhaps "memflags". The rest is
auxiliary data to perform the needed calculation.

May I further suggest to drop _pages everywhere?

I'm further not happy about "competing" in the parameter name: This
includes claims for this very domain as well, and if there's no other
claim then there's nothing "competing" at all.

> +{
> +    unsigned long unclaimed_pages;
> +
> +    ASSERT(spin_is_locked(&heap_lock));
> +    ASSERT(avail_pages >= competing_claims);
> +
> +    /* Start from the free pages not already claimed by other domains. */
> +    unclaimed_pages = avail_pages - competing_claims;

This could easily be the initializer of the variable.

Jan


From xen-devel-bounces@lists.xenproject.org Wed Apr 22 12:46:10 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 22 Apr 2026 12:46:10 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1290478.1570054 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wFWxo-00084U-GE; Wed, 22 Apr 2026 12:45:56 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1290478.1570054; Wed, 22 Apr 2026 12:45: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 1wFWxo-00084N-Dd; Wed, 22 Apr 2026 12:45:56 +0000
Received: by outflank-mailman (input) for mailman id 1290478;
 Wed, 22 Apr 2026 12:45:54 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <jens.wiklander@linaro.org>) id 1wFWxm-00084H-Jy
 for xen-devel@lists.xenproject.org; Wed, 22 Apr 2026 12:45:54 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wFWxm-000QLW-0F
 for xen-devel@lists.xenproject.org; Wed, 22 Apr 2026 14:45:54 +0200
Received: from [10.42.69.6] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <jens.wiklander@linaro.org>)
 id 69e8c2fc-2eae-0a2a0a5409dd-0a2a4506be72-16
 for <xen-devel@lists.xenproject.org>; Wed, 22 Apr 2026 14:45:53 +0200
Received: from [209.85.167.169] (helo=mail-oi1-f169.google.com)
 by tlsNG-16d1c6.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.1)
 (envelope-from <jens.wiklander@linaro.org>)
 id 69e8c300-7371-0a2a45060019-d155a7a9dcd8-3
 for <xen-devel@lists.xenproject.org>; Wed, 22 Apr 2026 14:45:53 +0200
Received: by mail-oi1-f169.google.com with SMTP id
 5614622812f47-45f053b7b90so3041437b6e.0
 for <xen-devel@lists.xenproject.org>; Wed, 22 Apr 2026 05:45:53 -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=google header.d=linaro.org header.i="@linaro.org" header.h="Content-Transfer-Encoding:Cc:To:Subject:Message-ID:Date:From:In-Reply-To:References:MIME-Version"
ARC-Seal: i=1; a=rsa-sha256; t=1776861952; cv=none;
        d=google.com; s=arc-20240605;
        b=NSGI9wXZQyV/ehWnkogX+Vy1mYxmujhLgEo59yyyjdvYratZyi4A22I9hWK4fhUi/D
         tnW/TIm/4Ow34wz1X5LW5DsbX0mvoatUFkaAMR6JMhJezyNWidSRNtdhJWPFc/NE69CP
         pQ232u9b4bZbxfy3lTyEhhbUXhBUFvAUWmmLuEWre6myGA4e2k2X46TwcROnmK8pZAsL
         JA6dWFmJ6ILq/pEQnLhVzloF18HALnAFoUmPw3wFy3eHPcMvJzEFy4ThSvAa9/p/Gq/e
         2z+oNi2fD38UrnbB80lC5KLntnvimfQFFbYPugdNmxvol9w49y9IMxnUDhKe0/wms6WT
         TKKQ==
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20240605;
        h=content-transfer-encoding:cc:to:subject:message-id:date:from
         :in-reply-to:references:mime-version:dkim-signature;
        bh=6CRmPzKF3K9QyQEexRPq5aH4kw0kNjI7Ou5yzweCuOQ=;
        fh=wNLC6Hyb5Ukz/ErppBRQBwv8vwa/OMsdh6R8bnNsiPU=;
        b=JC/eCnUC9/BJKRUe7f4s4L0P0MruAYr2wPKCAWY56wQaV5yIONpaaZtOmKobv1DTwc
         ine+aOcL7hEFj7vbxyWl63aafKRlbk0OYRD7tf5hSdJdgWumZz5sphBDLX9MygGLsTKD
         78iFvA89Iq0V/qmxVsfA6wtjVUoAFqe/pk7PNVweNQMDwH+Y52RTE4VgkbSEpY5SVv9j
         dCGB9nCVagloz+Z/6UaZS1xqQJdCb9adSP+GKjAf0lRCF6sGHTNkeZGNcJeiN3dxoHg0
         jI73Aw39PM8EUtcWdNW2K3Ppjtff9PidW+kl6kp7HXBiM77VR2JfES6Q63tlYDE4Y5rC
         x18Q==;
        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=linaro.org; s=google; t=1776861952; x=1777466752; darn=lists.xenproject.org;
        h=content-transfer-encoding:cc:to:subject:message-id:date:from
         :in-reply-to:references:mime-version:from:to:cc:subject:date
         :message-id:reply-to;
        bh=6CRmPzKF3K9QyQEexRPq5aH4kw0kNjI7Ou5yzweCuOQ=;
        b=PVR/DeO4koFAbE/PpI2JIPvtGGWJ64lwL+wLbcdQ+ZSCRcZBW7ohK+n+I6hWby3rAY
         u8biEbx/rcQAD4WU+V8wYsyxEydThu7efD1S1y/vqmnP6JD7UUu5ODm5CYfRKPIm4iy7
         x+w7CTEPOd6IC6KVfZ8kLQ/8Ne1Rn+37NtN7RWpgGsdgfYNqK5mOmGg3qJI0EukWRcRH
         18ruigsNCC7BGVCjyBq3ucXISE44y8mVvWoINloehG0EJw4OieZ0Aa4krs4EZLdRUT2K
         O01Q3CxQYIVgboVK+xLdx+xe5r3DT8T8eTpwl0wKQfGzpTj9/GQur0fQaKljabnGE2nN
         6X+A==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20251104; t=1776861952; x=1777466752;
        h=content-transfer-encoding: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;
        bh=6CRmPzKF3K9QyQEexRPq5aH4kw0kNjI7Ou5yzweCuOQ=;
        b=Bl2iVSsKaIr38aiDobkTa/i9XBYgluETRMWFIjHr5jHeccgpvPBwY7sO6dgWRnJ+SL
         Y1UQ+rzD8yEO0yY8HtDrvVYH3zhHp8XTXojMRMKJjAjI6PIAXQVUgBzeI5d9QnY+I2On
         0X8gk4w5z+O4diy9IeiqWEwzjgAlmDynY6lF4lE2zNTAuu30JPfUJjej2VnSqjQ0t9n2
         rVGG0VFuNd2rUwjOg+gDtbjMcDBcFQlghLPekZVgMrgQxW5YFxemht8ZQsaf7weu7gw1
         ZI5kjPRIIbNXGK9UCCwh12OlFs/3ePxC/UxZ30P9oUQqB9ZOpHevbkSJppIrcV7smoO5
         i5Lw==
X-Gm-Message-State: AOJu0YyJfkF57xxYZhI7U6xAyMwwgTsOz7fK6wlMlIi2BBcPMarv7oId
	TKo8OWH9dhPD+3d2FQAK8+wRLCHJeb0D4lk0oBv2v3/DfuQz8Y/i5jWF/iP6N0s02jy4lRqhr5r
	GRJacqH61nQdBPbfRBnnmPu3z2J2MSkQtnMMxk42PYQ==
X-Gm-Gg: AeBDiesfcpRIer0Z8QrUNfrXArIuLsJ2Qg8GoPn+i2G8+4YxeTJeGpzMObWgsW09hfP
	gbGZwo1cj1Rdp7zIuI17Jgvzxgl581se5KolMR3ULX2S34/7cnE8GRBo5XKdp236hLIrexgJXKW
	gzRVOWUeUTQOTNA61AW3W4Hvl44WTKLKDVghgaIy2jXKx1N9vYWbM1NezNbYUvT09bIWRw4AIb/
	Rzs+YRV1j6YZ1bJY09UG2Jj12LccniCJoiEEKBjcQ3WKs3gB/LO0C0IR5872zZage2bYWSnN1dL
	io9uymdqn5Mcl1mbU7mVFP5KTYayrxXoJZ4W9LJ3FrmGgp17KiAg3Ck1SR8=
X-Received: by 2002:a4a:e905:0:b0:694:6d72:9fd0 with SMTP id
 006d021491bc7-6946d72a2f8mr10755778eaf.16.1776861951969; Wed, 22 Apr 2026
 05:45:51 -0700 (PDT)
MIME-Version: 1.0
References: <cover.1776266307.git.bertrand.marquis@arm.com> <5b9ce4a4a3927ce2287ec4db7f864174f53b8f17.1776266307.git.bertrand.marquis@arm.com>
In-Reply-To: <5b9ce4a4a3927ce2287ec4db7f864174f53b8f17.1776266307.git.bertrand.marquis@arm.com>
From: Jens Wiklander <jens.wiklander@linaro.org>
Date: Wed, 22 Apr 2026 14:45:40 +0200
X-Gm-Features: AQROBzCGOIBzjZ3Xfz9x00948t7ArGxeMrG9x-UdM514xcfd3fZvVtFJbdnI6yE
Message-ID: <CAHUa44FnKKpZOZ_oVKXZdaznmAcPC5Y3iF2MJ_o2o3i5M1+mFw@mail.gmail.com>
Subject: Re: [PATCH 4/6] xen/arm: ffa: Preserve secure notification state when
 polling SPMC
To: Bertrand Marquis <bertrand.marquis@arm.com>
Cc: xen-devel@lists.xenproject.org, 
	Volodymyr Babchuk <volodymyr_babchuk@epam.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-16d1c6/1776861953-51F6BD75-2D8E3FA1/0/0
X-purgate-type: clean
X-purgate-size: 7755

Hi Bertrand,

On Fri, Apr 17, 2026 at 3:41=E2=80=AFPM Bertrand Marquis
<bertrand.marquis@arm.com> wrote:
>
> Secure pending state is latched when the SPMC raises the schedule
> receiver interrupt, but Xen currently clears that latch too aggressively.
> Guest FFA_NOTIFICATION_INFO_GET consumes secure_pending even though it
> only reports pending state, and secure FFA_NOTIFICATION_GET only clears
> the latch when both SP and SPM bitmaps are requested together. This can
> drop a pending indication before the receiver retrieves secure
> notifications, or keep INFO_GET reporting stale secure pending state
> after a successful GET.
>
> Keep secure_pending as a latched indication until secure notifications
> are actually retrieved. Guest FFA_NOTIFICATION_INFO_GET now reports the
> latched state without clearing it, while a successful secure
> FFA_NOTIFICATION_GET clears the latch regardless of which secure bitmap
> flags were requested. Also protect secure_pending with notif_lock,
> serialize SPMC INFO_GET polling behind notif_info_lock, and preserve the
> caller-visible INFO_GET success width.
>
> Functional impact: guest INFO_GET preserves the secure pending
> indication until secure notifications are retrieved, and successful
> secure GET clears the guest-visible pending latch.
>
> Signed-off-by: Bertrand Marquis <bertrand.marquis@arm.com>
> ---
>  xen/arch/arm/tee/ffa_notif.c | 54 +++++++++++++++++++++++-------------
>  1 file changed, 35 insertions(+), 19 deletions(-)
>
> diff --git a/xen/arch/arm/tee/ffa_notif.c b/xen/arch/arm/tee/ffa_notif.c
> index 491db3b04df5..fff00ca2baec 100644
> --- a/xen/arch/arm/tee/ffa_notif.c
> +++ b/xen/arch/arm/tee/ffa_notif.c
> @@ -18,6 +18,7 @@
>
>  static bool __ro_after_init fw_notif_enabled;
>  static unsigned int __ro_after_init notif_sri_irq;
> +static DEFINE_SPINLOCK(notif_info_lock);
>
>  static void inject_notif_pending(struct domain *d)
>  {
> @@ -109,6 +110,7 @@ void ffa_handle_notification_info_get(struct cpu_user=
_regs *regs)
>  {
>      struct domain *d =3D current->domain;
>      struct ffa_ctx *ctx =3D d->arch.tee;
> +    uint32_t fid =3D get_user_reg(regs, 0);
>      bool notif_pending;
>
>      if ( !IS_ENABLED(CONFIG_FFA_VM_TO_VM) && !fw_notif_enabled )
> @@ -117,7 +119,10 @@ void ffa_handle_notification_info_get(struct cpu_use=
r_regs *regs)
>          return;
>      }
>
> -    notif_pending =3D test_and_clear_bool(ctx->notif.secure_pending);
> +    spin_lock(&ctx->notif.notif_lock);
> +    notif_pending =3D ctx->notif.secure_pending;
> +    spin_unlock(&ctx->notif.notif_lock);
> +
>      if ( IS_ENABLED(CONFIG_FFA_VM_TO_VM) )
>      {
>          notif_pending |=3D test_and_clear_bool(ctx->notif.vm_pending);
> @@ -131,7 +136,9 @@ void ffa_handle_notification_info_get(struct cpu_user=
_regs *regs)
>      if ( notif_pending )
>      {
>          /* A pending global notification for the guest */
> -        ffa_set_regs(regs, FFA_SUCCESS_64, 0,
> +        ffa_set_regs(regs,
> +                     smccc_is_conv_64(fid) ? FFA_SUCCESS_64 : FFA_SUCCES=
S_32,
> +                     0,
>                       1U << FFA_NOTIF_INFO_GET_ID_COUNT_SHIFT, ffa_get_vm=
_id(d),
>                       0, 0, 0, 0);
>      }
> @@ -154,6 +161,8 @@ void ffa_handle_notification_get(struct cpu_user_regs=
 *regs)
>      uint32_t w5 =3D 0;
>      uint32_t w6 =3D 0;
>      uint32_t w7 =3D 0;
> +    uint32_t secure_flags =3D flags & ( FFA_NOTIF_FLAG_BITMAP_SP |
> +                                      FFA_NOTIF_FLAG_BITMAP_SPM );
>
>      if ( !IS_ENABLED(CONFIG_FFA_VM_TO_VM) && !fw_notif_enabled )
>      {
> @@ -173,27 +182,16 @@ void ffa_handle_notification_get(struct cpu_user_re=
gs *regs)
>          return;
>      }
>
> -    if ( fw_notif_enabled && (flags & ( FFA_NOTIF_FLAG_BITMAP_SP |
> -                                        FFA_NOTIF_FLAG_BITMAP_SPM )) )
> +    if ( fw_notif_enabled && secure_flags )
>      {
>          struct arm_smccc_1_2_regs arg =3D {
>              .a0 =3D FFA_NOTIFICATION_GET,
>              .a1 =3D recv,
> -            .a2 =3D flags & ( FFA_NOTIF_FLAG_BITMAP_SP |
> -                            FFA_NOTIF_FLAG_BITMAP_SPM ),
> +            .a2 =3D secure_flags,
>          };
>          struct arm_smccc_1_2_regs resp;
>          int32_t e;
>
> -        /*
> -         * Clear secure pending if both FFA_NOTIF_FLAG_BITMAP_SP and
> -         * FFA_NOTIF_FLAG_BITMAP_SPM are set since secure world can't ha=
ve
> -         * any more pending notifications.
> -         */
> -        if ( ( flags  & FFA_NOTIF_FLAG_BITMAP_SP ) &&
> -             ( flags & FFA_NOTIF_FLAG_BITMAP_SPM ) )
> -            ACCESS_ONCE(ctx->notif.secure_pending) =3D false;
> -
>          arm_smccc_1_2_smc(&arg, &resp);
>          e =3D ffa_get_ret_code(&resp);
>          if ( e )
> @@ -210,6 +208,10 @@ void ffa_handle_notification_get(struct cpu_user_reg=
s *regs)
>
>          if ( flags & FFA_NOTIF_FLAG_BITMAP_SPM )
>              w6 =3D resp.a6;
> +
> +        spin_lock(&ctx->notif.notif_lock);
> +        ctx->notif.secure_pending =3D false;
> +        spin_unlock(&ctx->notif.notif_lock);
>      }
>
>      if ( IS_ENABLED(CONFIG_FFA_VM_TO_VM) )
> @@ -354,7 +356,10 @@ static void notif_vm_pend_intr(uint16_t vm_id)
>       * guarantees that the data structure isn't freed while we're access=
ing
>       * it.
>       */
> -    ACCESS_ONCE(ctx->notif.secure_pending) =3D true;
> +    spin_lock(&ctx->notif.notif_lock);
> +    ctx->notif.secure_pending =3D true;
> +    spin_unlock(&ctx->notif.notif_lock);
> +
>      inject_notif_pending(d);
>
>  out_unlock:
> @@ -373,11 +378,18 @@ static void notif_sri_action(void *unused)
>      unsigned int n;
>      int32_t res;
>
> -    do {
> +    if ( !fw_notif_enabled )
> +        return;

Can this ever happen? Am I missing something?

Cheers,
Jens

> +
> +    spin_lock(&notif_info_lock);
> +
> +    do
> +    {
>          arm_smccc_1_2_smc(&arg, &resp);
>          res =3D ffa_get_ret_code(&resp);
>          if ( res )
>          {
> +            spin_unlock(&notif_info_lock);
>              if ( res !=3D FFA_RET_NO_DATA && printk_ratelimit() )
>                  printk(XENLOG_WARNING
>                         "ffa: notification info get failed: error %d\n", =
res);
> @@ -391,7 +403,7 @@ static void notif_sri_action(void *unused)
>          id_pos =3D 0;
>          for ( n =3D 0; n < list_count; n++ )
>          {
> -            unsigned int count =3D ((ids_count >> 2 * n) & 0x3) + 1;
> +            unsigned int count =3D ((ids_count >> (2 * n)) & 0x3) + 1;
>              uint16_t vm_id =3D get_id_from_resp(&resp, id_pos);
>
>              notif_vm_pend_intr(vm_id);
> @@ -399,7 +411,9 @@ static void notif_sri_action(void *unused)
>              id_pos +=3D count;
>          }
>
> -    } while (resp.a2 & FFA_NOTIF_INFO_GET_MORE_FLAG);
> +    } while ( resp.a2 & FFA_NOTIF_INFO_GET_MORE_FLAG );
> +
> +    spin_unlock(&notif_info_lock);
>  }
>
>  static DECLARE_TASKLET(notif_sri_tasklet, notif_sri_action, NULL);
> @@ -486,6 +500,7 @@ int ffa_notif_domain_init(struct domain *d)
>      int32_t res;
>
>      spin_lock_init(&ctx->notif.notif_lock);
> +    ctx->notif.secure_pending =3D false;
>      ctx->notif.hyp_pending =3D 0;
>
>      if ( fw_notif_enabled )
> @@ -503,6 +518,7 @@ void ffa_notif_domain_destroy(struct domain *d)
>      struct ffa_ctx *ctx =3D d->arch.tee;
>
>      spin_lock(&ctx->notif.notif_lock);
> +    ctx->notif.secure_pending =3D false;
>      ctx->notif.hyp_pending =3D 0;
>      spin_unlock(&ctx->notif.notif_lock);
>
> --
> 2.53.0
>


From xen-devel-bounces@lists.xenproject.org Wed Apr 22 12:48:44 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 22 Apr 2026 12:48:44 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1290490.1570064 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wFX0U-0000hl-W5; Wed, 22 Apr 2026 12:48:42 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1290490.1570064; Wed, 22 Apr 2026 12:48: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 1wFX0U-0000he-TD; Wed, 22 Apr 2026 12:48:42 +0000
Received: by outflank-mailman (input) for mailman id 1290490;
 Wed, 22 Apr 2026 12:48:41 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <jbeulich@suse.com>) id 1wFX0T-0000hY-Lv
 for xen-devel@lists.xenproject.org; Wed, 22 Apr 2026 12:48:41 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wFX0T-000aYZ-2h
 for xen-devel@lists.xenproject.org; Wed, 22 Apr 2026 14:48:41 +0200
Received: from [10.42.69.8] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <jbeulich@suse.com>)
 id 69e8c3a6-bab6-0a2a0a5309dd-0a2a4508882a-8
 for <xen-devel@lists.xenproject.org>; Wed, 22 Apr 2026 14:48:40 +0200
Received: from [209.85.128.51] (helo=mail-wm1-f51.google.com)
 by tlsNG-c1860d.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.1)
 (envelope-from <jbeulich@suse.com>)
 id 69e8c3a8-63b5-0a2a45080019-d1558033cc7a-3
 for <xen-devel@lists.xenproject.org>; Wed, 22 Apr 2026 14:48:40 +0200
Received: by mail-wm1-f51.google.com with SMTP id
 5b1f17b1804b1-48984d29fe3so45381575e9.0
 for <xen-devel@lists.xenproject.org>; Wed, 22 Apr 2026 05:48:40 -0700 (PDT)
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-43fe4cb1176sm46976861f8f.3.2026.04.22.05.48.39
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Wed, 22 Apr 2026 05:48:39 -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=google header.d=suse.com header.i="@suse.com" header.h="Content-Transfer-Encoding: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=1776862120; x=1777466920; darn=lists.xenproject.org;
        h=content-transfer-encoding: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;
        bh=tSuTHtUS0dWcOOAJWlPom7MnGrM9QcHnLmLoUOPjDik=;
        b=O5+NKk3Yjqx1XlQ7eBm06oPzXWZh5qssZiBgjGK0fhXeSZSCxuMmiLfSNW/n3h1liY
         0EqIRsxxsAtD9XR9mutJmbw43ysF/kJUP98RVhtwWfwTsqkkn1oxjMN8yPLbcYdLkuJU
         OMCstBDIIR1OSlLbOOjA1gEfXix98iYdLJk15mtUKiCXBiNNYAq5MM00GGbPxOMrjq0n
         C0z8lQwOW3GVPN3vyiAT4YMTcuFVUj76C77YaNAruGDjDlH/dRS7Z2tdGbEqp2AGZIOJ
         bZx0BOjV9tGlKyRlnNX0Wb9y8cfYq6qg8/njKHd3mTe2clQ703IoR33+NPVNHY9I0puY
         E2uw==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20251104; t=1776862120; x=1777466920;
        h=content-transfer-encoding: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;
        bh=tSuTHtUS0dWcOOAJWlPom7MnGrM9QcHnLmLoUOPjDik=;
        b=HwVRqQ0tksexXC1lAu0KRGuxw9I2Aw6tK+EsNL0pj1vb6br+hnbFBCDu+/C9xL/w8z
         ze4JHILX6XbihfBrsOD4H4r4Z+2Rt1ael/GPKqZ3A0y1DXhWySd4+moSwOy6s6f0rQ1D
         IqgHB9aPjQ9UY+TSxRSXjOBehZ868prt/m1xr/65P5eKYlzb8FstqFOou0xkCWiiEffc
         O7mOsla3/nmebmB0WulzBZFpzQBvLewEDSPczHzfVhh4194l/+YnqYjYHorUtt9164JK
         fNa+ODvuMy8yGURg5W5nwLXirsRRT2ywgPuHljZ2lTO4MRVHj6Kq0+ktebmi4ACz+Pn0
         QRJA==
X-Forwarded-Encrypted: i=1; AFNElJ+LVp+Nrrps7V4n9frtyuoV2c4++2u+gItdyJN+cmB7dp1WH0B1Cq9QR2sgg3rlorXDWPnvwZAdq+Y=@lists.xenproject.org
X-Gm-Message-State: AOJu0Yzb4msE9yoPr2TCrTCOIVwVP0Y5CUBoeWBAkZrE/u14de7FAETD
	riZrzdc2wxvqezL0QLxvX9xwD22+Djiw6vkuxwPWsHZBDGF4obqzMCiK12PakeGNIw==
X-Gm-Gg: AeBDiesseDUaNbFtVhFpadZYQKIJMXPY+DlUgoyUIIerWamJay2FDPUzoNJOjmxO1gh
	W0Hidp+PLbeIQ711+Av6ycsEMKAYN0jglYcPMSdhcpczqrQ9X4mCTP5WIFXbeYKVGTdz0+aCW1s
	IidQFzpn4GVN3lt31Nq081CDVnoeH1R2iLki6O8egw3nPzjq1NrJx9sTMc/5v0HOM5WF2N4SuEL
	0djEGkMnDPNjBUiv9bTwQRr9QQB1Ikx9o2nE9ZJG1kuf9xmlyw6ab4weIar+tel+I6BFfwAK4T7
	9Ikn21IQ271dC28T1jHHwn11PYdh+fFnW7CCF6YcDAZNjejeuVVw1bMFL1hGWP9+c1Rx3ftXbUb
	MGcpvOgphA9qzcdLlWMSv0AE0avsB+OqbhWUYNL1D1lnMDDkN00twk1c1RWy4VuQYzWRJE+iEeh
	v5xt1C6vkWDX/ewuMoXsWdLD+xKtl0FhYdsVQtHKlJPmZrmrxTuDuj7tItV+LULbJJuMtYSnuAl
	FAk/lEsFg/9ZGbvpkncdBfFVw==
X-Received: by 2002:a05:600c:3f0c:b0:48a:563c:c8e0 with SMTP id 5b1f17b1804b1-48a563cd16bmr89412465e9.1.1776862120271;
        Wed, 22 Apr 2026 05:48:40 -0700 (PDT)
Message-ID: <a2cbb69e-e86c-4d84-b8b5-8cbe3f91cbfd@suse.com>
Date: Wed, 22 Apr 2026 14:48:38 +0200
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH v6 4/7] xen/mm: Split outstanding claims into global and
 node totals
To: Bernhard Kaindl <bernhard.kaindl@citrix.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.pau@citrix.com>,
 Stefano Stabellini <sstabellini@kernel.org>, xen-devel@lists.xenproject.org
References: <cover.1776172526.git.bernhard.kaindl@citrix.com>
 <e7e95f2476f1f6636f2f31618891be6c087996de.1776172526.git.bernhard.kaindl@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: <e7e95f2476f1f6636f2f31618891be6c087996de.1776172526.git.bernhard.kaindl@citrix.com>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 7bit
X-purgate-ID: tlsNG-c1860d/1776862120-C2B74DB1-9FB3C687/0/0
X-purgate-type: clean
X-purgate-size: 4882

On 14.04.2026 15:22, Bernhard Kaindl wrote:
> Replace d->outstanding_pages with d->global_claims and add
> d->node_claims as the aggregate of the domain's node-specific claims.
> 
> Keep the allocator hot path efficient and report the combined claims
> state using the two new fields.

The truly new field (node_claims) is in fact dead code (as per Misra's
definition of the term). It therefore doesn't feel quite right that it
is being introduced without (really) being used.

> @@ -552,8 +552,7 @@ int domain_set_outstanding_pages(struct domain *d, unsigned long pages)
>      /*
>       * Two locks are needed here:
>       *  - d->page_alloc_lock: protects accesses to d->{tot,max,extra}_pages.
> -     *  - heap_lock: protects accesses to d->outstanding_pages, total_avail_pages
> -     *    and outstanding_claims.
> +     *  - heap_lock: Protects accesses to the claims and avail_pages state.
>       */
>      nrspin_lock(&d->page_alloc_lock);
>      spin_lock(&heap_lock);

By removing the use of d-> from the bullet point, you make the result appear
to all be only global state. Imo the fields still wants mentioning like it
was before.

> @@ -561,13 +560,13 @@ int domain_set_outstanding_pages(struct domain *d, unsigned long pages)
>      /* pages==0 means "unset" the claim. */
>      if ( pages == 0 )
>      {
> -        deduct_global_claims(d, d->outstanding_pages);
> +        deduct_global_claims(d, d->global_claims);
>          ret = 0;
>          goto out;
>      }
>  
> -    /* only one active claim per domain please */
> -    if ( d->outstanding_pages )
> +    /* Reject updating global claims and we can't update node claims */
> +    if ( d->global_claims || d->node_claims )
>      {
>          ret = -EINVAL;
>          goto out;

Is there anything wrong with the original comment (apart from style)?
Especially the new "we can't" feels misleading - if we indeed can't,
this is something that could be fixed. Isn't more like we may not
fiddle with node claims here? Plus mentioning node claims when they
aren't a thing yet is somewhat odd, too. Remember: Patches in a series
may go if with arbitrarily large gaps in between.

> @@ -891,7 +890,7 @@ static bool claims_permit_request(const struct domain *d,
>                                    unsigned int memflags,
>                                    unsigned long requested_pages)
>  {
> -    unsigned long unclaimed_pages;
> +    unsigned long unclaimed_pages, applicable_claims;
>  
>      ASSERT(spin_is_locked(&heap_lock));
>      ASSERT(avail_pages >= competing_claims);
> @@ -910,11 +909,13 @@ static bool claims_permit_request(const struct domain *d,
>      if ( !d || (memflags & MEMF_no_refcount) )
>          return false;
>  
> +    applicable_claims = d->global_claims;
> +
>      /*
>       * Allow the request to proceed when combination of unclaimed pages and the
>       * claims held by the domain cover the shortfall for the requested_pages.
>       */
> -    return requested_pages <= unclaimed_pages + d->outstanding_pages;
> +    return requested_pages <= unclaimed_pages + applicable_claims;
>  }

I don't follow what use these two hunks are here.

> @@ -1112,18 +1113,16 @@ static struct page_info *alloc_heap_pages(
>      total_avail_pages -= request;
>      ASSERT(total_avail_pages >= 0);
>  
> -    if ( d && d->outstanding_pages && !(memflags & MEMF_no_refcount) )
> +    if ( d && d->global_claims && !(memflags & MEMF_no_refcount) )
>      {
>          /*
>           * Adjust claims in the same locked region where total_avail_pages is
>           * adjusted, not doing so would lead to a window where the amount of
>           * free memory (avail - claimed) would be incorrect.
>           *
> -         * Note that by adjusting the claimed amount here it's possible for
> -         * pages to fail to be assigned to the claiming domain while already
> -         * having been subtracted from d->outstanding_pages.  Such claimed
> -         * amount is then lost, as the pages that fail to be assigned to the
> -         * domain are freed without replenishing the claim.  This is fine given
> +         * Note, after redeeming claims for the allocation here, assign_pages()
> +         * could fail. The domain looses The redeemed claims as the not assigned

Nit: ... loses the ...

> +         * pages are freed without replenishing the claim.  This is fine given
>           * claims are only to be used during physmap population as part of
>           * domain build, and any failure in assign_pages() there will result in
>           * the domain being destroyed before creation is finished.  Losing part

I'm not convinced this comment needs fiddling with. There's nothing obviously
wrong, and I don't see an obvious improvement from the changes. 

Jan


From xen-devel-bounces@lists.xenproject.org Wed Apr 22 12:52:54 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 22 Apr 2026 12:52:54 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1290499.1570073 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wFX4R-0002DG-Ff; Wed, 22 Apr 2026 12:52:47 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1290499.1570073; Wed, 22 Apr 2026 12:52: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 1wFX4R-0002D9-D0; Wed, 22 Apr 2026 12:52:47 +0000
Received: by outflank-mailman (input) for mailman id 1290499;
 Wed, 22 Apr 2026 12:52:46 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <jbeulich@suse.com>) id 1wFX4Q-0002D3-0E
 for xen-devel@lists.xenproject.org; Wed, 22 Apr 2026 12:52:46 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wFX4P-00Fr5i-9n
 for xen-devel@lists.xenproject.org; Wed, 22 Apr 2026 14:52:45 +0200
Received: from [10.42.69.6] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <jbeulich@suse.com>)
 id 69e8c490-bab6-0a2a0a5309dd-0a2a4506b998-24
 for <xen-devel@lists.xenproject.org>; Wed, 22 Apr 2026 14:52:45 +0200
Received: from [209.85.221.45] (helo=mail-wr1-f45.google.com)
 by tlsNG-16d1c6.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.1)
 (envelope-from <jbeulich@suse.com>)
 id 69e8c49d-7371-0a2a45060019-d155dd2dbc0d-3
 for <xen-devel@lists.xenproject.org>; Wed, 22 Apr 2026 14:52:45 +0200
Received: by mail-wr1-f45.google.com with SMTP id
 ffacd0b85a97d-43d7e23defbso3445684f8f.0
 for <xen-devel@lists.xenproject.org>; Wed, 22 Apr 2026 05:52:45 -0700 (PDT)
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-43fe4cc0f31sm45375880f8f.12.2026.04.22.05.52.44
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Wed, 22 Apr 2026 05:52:44 -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=google header.d=suse.com header.i="@suse.com" header.h="Content-Transfer-Encoding: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=1776862365; x=1777467165; darn=lists.xenproject.org;
        h=content-transfer-encoding:autocrypt:subject:from:cc:to
         :content-language:user-agent:mime-version:date:message-id:from:to:cc
         :subject:date:message-id:reply-to;
        bh=UZ8mO8g3hglIER/xsLIhvT+FXM2GbC4nDNPRgpt6PiY=;
        b=Ov9XsnkbSB1Nip5aC0VSKKOX3gyCXD6KpSSxr9Evbq0H1tPgPAbXiUs9Il3WziTEmu
         ZQ8rAh38XqidDPZnqLWhoXO+zszCpRH+6cqwECBF2JPiPRIhyXxUQZntlEh5sSrHMqkx
         kYUaASakJhUWQjNEUGx0bTmEtopQVMgwMM6J0ds5qYGIsREtvMnqgy/Wl8Albc7obbWM
         ywxYGSn8+u0Noh0iep+EXgzXk30MpGQb7nfG1MKreHr5pQPxWTX44g68LcdReff1LS4V
         kj8rxNJLMVeR4pB3wk7gEDYQ2+QodVuXWppyzzLN0hUEenC5JJJhmKN0RKujic32UNE6
         Wiuw==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20251104; t=1776862365; x=1777467165;
        h=content-transfer-encoding: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;
        bh=UZ8mO8g3hglIER/xsLIhvT+FXM2GbC4nDNPRgpt6PiY=;
        b=iKaHdlD4J3F0YbOtkQ5muhSR2YeU3eczaJQr/OjCdhG5vBm0Cb1dfDaN6HFm1IMU3C
         3OWpfiC/YWOeyABb19PFe2zLmGlsvg5l1b70GhdRP/dipF0LOI5xDU1l6dqrGSUWagpD
         xzRHdFewOfTICnqhTgjTu8JJE2qjaXOb2Qi8MvQfnaWU97m7LljI+Iu/lCur7BjyG2B9
         eTeJHvieR4E23NIYsjMiJAg27+LCZlfhqaQN/0hQvGhpHjTndMwcnyDYvG9jd8gn50aj
         m4iqJ9Gii3BKTD/iVM7nn4g/gnhnLpqUP0+BQ1tFZUHo5hwnmKFt6Ufqsni0uS02g6e8
         0TNw==
X-Gm-Message-State: AOJu0YxudjhYMaWfV0PO+6GwJE8MHgSmQl2B91O0Mh0OMYx577gGD7HG
	ZzGg42ndvFdp5Jw7ui8SqT5sSOnPhYIWXgRfhX7Vg0zlMk2Ht6xSZRrZVM4NW6ZOn4aamjtB1QM
	rYn9N+Q==
X-Gm-Gg: AeBDietT0sT2FvqUYVEQrbzdZJKfklkByKtTxXAOFlqFmXQQOQOja0aFzGfOKOBDheS
	zEbq8E7MQ1JJrY2rDXEHhqliNSYqj4YudW7lBI6MZncWfpgIKKHTkYLf9sHXralZrR44790PInu
	i/Ex2KOPZk29KlU9l59Xg93qTaXMyDMIZL0RvvTllcr4P5TtxW3u9cufQ4iXQ2qSaYLOSWgqj8E
	iqhmjWZLGplH7HbF6SnttteXnJH1rGD3HsWHCf9A3S3rc+kLJZzoBsUn4eWIr9/zirfA7mMVoIo
	bmVu7Hb8Rx8oTw+jc0NI53y4azylUmj0x+5O38kP1rAsSlLBFCtUv5yZx+1buw+nXPv37W6BY83
	pijcmoDHEWdicNzgfY4rb/hYEWtEFiji6tj1EFTeCntlSy6E0QRFGcCV7FGXgO2IHkKQWZS2kJV
	SQXodGQgzz4VrsbZGAEPgwiaoTwIwsPmRiSkEcU8YYOPFK10G02DAxvHl/+YrUK6F+6cQTr9RAS
	JQxh2H/ImFCD8fLzebt3anqkg167p39lhEe
X-Received: by 2002:a05:6000:200e:b0:43b:8fa4:1937 with SMTP id ffacd0b85a97d-43fe3db3cfbmr35169612f8f.5.1776862364570;
        Wed, 22 Apr 2026 05:52:44 -0700 (PDT)
Message-ID: <a84daa8c-8481-40cb-9150-956ab5dc56fb@suse.com>
Date: Wed, 22 Apr 2026 14:52:43 +0200
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>,
 =?UTF-8?Q?Roger_Pau_Monn=C3=A9?= <roger.pau@citrix.com>,
 Teddy Astie <teddy.astie@vates.tech>
From: Jan Beulich <jbeulich@suse.com>
Subject: [PATCH] x86/HVM: drop dead code from HVM_PARAM_IDENT_PT setting
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-16d1c6/1776862365-CDF6BD75-E5E30AD8/0/0
X-purgate-type: clean
X-purgate-size: 666

The setting of d->arch.hvm.params[] will uniformly happen at the bottom of
hvm_set_param(), hence as per Misra's classification redundantly doing so
earlier is "dead code".

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

--- a/xen/arch/x86/hvm/hvm.c
+++ b/xen/arch/x86/hvm/hvm.c
@@ -4242,10 +4242,7 @@ static int hvm_set_param(struct domain *
          * capabilities.  Short circuit the pause if possible.
          */
         if ( paging_mode_shadow(d) || !using_vmx() )
-        {
-            d->arch.hvm.params[index] = value;
             break;
-        }
 
         /*
          * Update GUEST_CR3 in each VMCS to point at identity map.


From xen-devel-bounces@lists.xenproject.org Wed Apr 22 13:16:39 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 22 Apr 2026 13:16:39 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1290515.1570082 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wFXRQ-0005xr-8R; Wed, 22 Apr 2026 13:16:32 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1290515.1570082; Wed, 22 Apr 2026 13:16: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 1wFXRQ-0005xk-57; Wed, 22 Apr 2026 13:16:32 +0000
Received: by outflank-mailman (input) for mailman id 1290515;
 Wed, 22 Apr 2026 13:16:30 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <bernhard.kaindl@citrix.com>) id 1wFXRO-0005xe-D6
 for xen-devel@lists.xenproject.org; Wed, 22 Apr 2026 13:16:30 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wFXRN-00Fwo2-K4
 for xen-devel@lists.xenproject.org; Wed, 22 Apr 2026 15:16:29 +0200
Received: from [10.42.69.7] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <bernhard.kaindl@citrix.com>)
 id 69e8ca25-2eae-0a2a0a5409dd-0a2a4507ec60-48
 for <xen-devel@lists.xenproject.org>; Wed, 22 Apr 2026 15:16:29 +0200
Received: from [52.101.62.51]
 (helo=DM5PR21CU001.outbound.protection.outlook.com)
 by tlsNG-ef75cf.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.1)
 (envelope-from <bernhard.kaindl@citrix.com>)
 id 69e8ca2b-229c-0a2a45070019-34653e33a038-3
 for <xen-devel@lists.xenproject.org>; Wed, 22 Apr 2026 15:16:29 +0200
Received: from LV3PR03MB7707.namprd03.prod.outlook.com (2603:10b6:408:28b::21)
 by PH7PR03MB7512.namprd03.prod.outlook.com (2603:10b6:510:2ea::10)
 with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9846.16; Wed, 22 Apr
 2026 13:16:25 +0000
Received: from LV3PR03MB7707.namprd03.prod.outlook.com
 ([fe80::97e8:ef9c:9031:e2bf]) by LV3PR03MB7707.namprd03.prod.outlook.com
 ([fe80::97e8:ef9c:9031:e2bf%6]) with mapi id 15.20.9846.019; Wed, 22 Apr 2026
 13:16: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=TITNnOKI5BiWYZPELQm4sA5xSYh0FHrFDMnZFSmwWc+cnIEbQ9Fd/jd0lT2EZWJ//oT0fFFApl7S98yXJJ1QXsyYnAfPQ0kktpArLDNGBBhxb56dmmSfI0Looz/u0UQRKOn4sQqijOoyZnVMCfVB4R1OAeMlUUiF8QdUhab+bP2le6YX4My9cUgiJVzdy4IhPreH7Seu/4vyFP6lDzICX/1/A/jnsKXuo3ltNsbaapRsMunbg2gmIsVTrRH2pcwbKh6yKIIqPnCCOE7kYtR3KETWearyn0fwjizj0/iRtRI6OpC8XQQGHuv2IMe25xkwnp70Wp1bcd0e+7utSMDP6g==
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com;
 s=arcselector10001;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1;
 bh=OPKHL7ulMU68IHF/Gjux5C7Qbow/sNHcRqxsgC/+gKU=;
 b=L6uA3/G1hYACECaxK6Ipalof2x+GWapnzFbmBiwPbPcY+MPJPmmHF6A0vAEIN4EwlDP4JJ2na5qpcWERaQv46UvzFbFatUauam0DrVEqlNJ3QBSvLtNdAvJX1fGQaPoxow7JDoJfXLCjJtlJhZfAA9UlQUda74CQ2lc99i3Zzup+DIalzTpkERlurdkBXHgyj1NkSkrZV42OpGav8iSbz6PZPhr3RLvIit5MDgl1TZHIQ1Eg4+x9alutAgy320RbXOm2X72DcEIZ4MScphTFbHnnLS20lskEkMyNOXZkTN0nmftmyDRAwcyh4NyqN8dfb5BRwXeMkCBieTQdM325Pg==
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=OPKHL7ulMU68IHF/Gjux5C7Qbow/sNHcRqxsgC/+gKU=;
 b=FvOpQlsUL0JJPIsSozdxS5Fu9mfOTXIyepEjurLabzI0TO2YBxdkOAEtjcIZxb7TL6+UiuJhKXAqAkit+JwS6URaWSUYxROPAWmZQiiRmLOl0VazPwXV4yvN9rP0xMQynwMuMLO3UiMuitDrKvnfZStyRGh61E9Z6hUtzDRDLAk=
From: Bernhard Kaindl <bernhard.kaindl@citrix.com>
To: Jan Beulich <jbeulich@suse.com>, Andrew Cooper <andrew.cooper@citrix.com>
CC: Marek Marczykowski <marmarek@invisiblethingslab.com>, Daniel Smith
	<dpsmith@apertussolutions.com>, "xen-devel@lists.xenproject.org"
	<xen-devel@lists.xenproject.org>
Subject: RE: [PATCH] EFI: adjust cfg file buffer freeing
Thread-Topic: [PATCH] EFI: adjust cfg file buffer freeing
Thread-Index: AQHc0k5cFvUCG2dzRUObAr32ScQca7Xq+lCAgAAC34CAAAA1oA==
Date: Wed, 22 Apr 2026 13:16:24 +0000
Message-ID:
 <LV3PR03MB7707D62ACB8254123F4CB136872D2@LV3PR03MB7707.namprd03.prod.outlook.com>
References: <bf990673-83c3-44c3-a76a-3b0c36108ec5@suse.com>
 <77234acb-4539-4efe-9c30-03cb7a389912@citrix.com>
 <f91fae0b-7d3b-4ca6-a5ed-72de50daee9c@suse.com>
In-Reply-To: <f91fae0b-7d3b-4ca6-a5ed-72de50daee9c@suse.com>
Accept-Language: en-GB, en-US
Content-Language: en-GB
X-MS-Has-Attach:
X-MS-TNEF-Correlator:
authentication-results: dkim=none (message not signed)
 header.d=none;dmarc=none action=none header.from=citrix.com;
x-ms-publictraffictype: Email
x-ms-traffictypediagnostic: LV3PR03MB7707:EE_|PH7PR03MB7512:EE_
x-ms-office365-filtering-correlation-id: fd463b03-218f-460b-9c02-08dea0715af5
x-ms-exchange-senderadcheck: 1
x-ms-exchange-antispam-relay: 0
x-microsoft-antispam:
 BCL:0;ARA:13230040|10070799003|366016|1800799024|376014|38070700021|22082099003|56012099003|18002099003|17002099007;
x-microsoft-antispam-message-info:
 Rk0ECydanqcW/7ACbeBGfUQ0yfR1uWJtQ3E6UMHY2H5ZmYXOfV6kQzIhn9yE/hqUSmN4nSR6MSmK4aumqX7BIpRQtFI/yvfT/Btz7muNIBAH0Ol1XrDHf/LkjhGuR6t47DKBcw8+UBW6p+4hYMBF35NKeqr8iWQQmWP/RnqhPnWBZmR3TS2IPAApoA9QARmWZNFKqw/W3/f4PvtrD2r8UMtx8gqLVRTeUGgF9kMViiCWYJ/JiUIotU8lNfvTgkTcGwUoWnueHpcZQ7QCx3FS62bgHu0QxwU864ZUXDNbAEc4I+4Z7lvHnNLkatCDL+iD6+OCmIT5YFCS8GQwtCg4zh5sKKlslaJNP3+9CyrTwi6SozFyUq65oNvK/4pxSNv2ETPHShxFWmxXi2SVT+1SiSM+TOC0yjNQc1f9OZHffRsNjphvW2UDcucQaSe/tVyZz2jnL2vk6w2xfUn3OMrkN5bZ4Ik2tc2jWYYptzg4S3umyOF4jLdap2X1V7P3xbmJ/vgFDAuWSYVIQgMcaaNLvtSjIRkhe6R6Upt1W9WItEtlUQnuceQ71hVdAhJcv0yiMCGaQLv9xeEaTY/5LiTo4tMc5/LCaIChUQZSVoEglJqFM84K/AdWIA6A5+BjBIx3SFh7DRYEKhBjWLFpFOUm8/avWAI6WFhNbT65DV7cRkNW4xk+H3Gw0QcwzQPGd23OBAAah0hqZux9cCM5L5dWOyRzvz5tvddyZVzR3JxZe2zJAIMfQ/SSnf4t48iLysRR
x-forefront-antispam-report:
 CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:LV3PR03MB7707.namprd03.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(10070799003)(366016)(1800799024)(376014)(38070700021)(22082099003)(56012099003)(18002099003)(17002099007);DIR:OUT;SFP:1101;
x-ms-exchange-antispam-messagedata-chunkcount: 2
x-ms-exchange-antispam-messagedata-0:
 =?utf-8?B?ZmplZisrbjA5clJkYVhqN3o1SGVDYVRsLzFvbXlDei93RXVLZENjcmVJRHd3?=
 =?utf-8?B?QVc3cTNnVjVDRDl6K2JQWGlPdDJ5OTkxWjRPSU9XMG1ua3RsL1dTSmFVTjhD?=
 =?utf-8?B?c1hyRFNVbk9TOUVCQzJoSDNPczltc1hwUVNVcEp6Zk9mMFpReFJsZWpxZ3Vt?=
 =?utf-8?B?bUZHZGhMRU02d3EvL3k1YUpRM0k1bURQNklGZWFFaDk0Q1Voa2ZTeTdyNzJG?=
 =?utf-8?B?SElaVGl3WVBjaURncjNWWEZRcHRkaWZPU2dQTUlVQ0lEY0J3ZmljM0JwSHc4?=
 =?utf-8?B?dSsvazZua0JUL3Y4Y1hzQ3VkTndjd3QvM04rUjd6eVBFTEZ4SUJGbENOdWNK?=
 =?utf-8?B?bjgzMlJsMWxWZndZNGRmMnRWNzZlNzdicXU3b0M3ZmJXd21kRlBHNWp0WW1u?=
 =?utf-8?B?Q0V2MFFLMk5IRWc0cmg4azZybmZCNmxVZWF0c0JydndZSXZ1L2RuS2xtK3hX?=
 =?utf-8?B?cXVVaEx6QnF5N3o0dHM5RmhEZXlBellicHAwVEJVWEJWNkFmbStLRVlTYjR4?=
 =?utf-8?B?Szd0NjdQcWUzb3VjT2pzU0dhK0JHTm9uRDZ5emUwd3E2SDJwUy9LaGhDRUsy?=
 =?utf-8?B?STZmMW40UVZXZER3bUJoV3RnQWV3VEo1TFdSRnNuRUY5TUxoTWx5eUYvWlFU?=
 =?utf-8?B?aVNVdmk3TmMwQ053Nmx1eFErR3p4SGIvM2VuZVZ6alZPY21iOVZramdGb0tX?=
 =?utf-8?B?TGZEQUlPYlNlWkJFRDFpZld1MjRPdmxFc2pheE1DSm5sT3JmM0tQM3BDNzZC?=
 =?utf-8?B?amxZSWUzRHdlMisrYldPcTlmUGJUSmhsTDhnVDY3TVBaTjVqSUlrRW4zU2ZF?=
 =?utf-8?B?OThLWXo4WXhNL0V2NitvazNlQnZpRjdDd0dxWCtEd2U0SWFLUUNRSkt0NE1l?=
 =?utf-8?B?b2VFNVZ5UE9mZktKUjZMQzVzYTBPWVhaR3lDY2trb1JlVGhFWkxWNUhmb0Qx?=
 =?utf-8?B?QWxwSXZ3QVcyRThWZDlXU3N3SEtDVmZ4MUpwdFNveHRNWGlpUXp5NWoyR2pI?=
 =?utf-8?B?THI3RjdpYmpaSDF0ZmdRaE1CcDJlMkdHSjJKOEtjZW5FMjRtR1FZUkRqUDIv?=
 =?utf-8?B?aE5QRUJWSHlmbG9sK1RSaGxvUFpuRGJkMTJvZU5uNTNFQTdoeC9Pa1NvdU1p?=
 =?utf-8?B?WFp3ME40dkIzNEJUaWJqTk1uSkhYbDhiZjV2cWQza3l4T3pidmpEWjk5TWtX?=
 =?utf-8?B?dndUMG5WL0NiOGpqVzRNYzB4ckEwdTltK09rNm1DVUplZys5andPcEdWWkNo?=
 =?utf-8?B?RUE0NStKRkxaOHZzQ2FVclVMTFdESGpQUHNVYnN1QjFkS3kyalNYanRManMw?=
 =?utf-8?B?OWp4K1Y1U2VBUkVjemZVdUE1K1FZSHlvQXltWDByYWlzYWhuSnMzTGthQTQ2?=
 =?utf-8?B?c0E4SG1IaXdRL3RWdGhXNkw1MVMvYmJwZHhYaE9IbWdDNVJIN2tSd3Z0a3Y2?=
 =?utf-8?B?Tmc4QTFQYm1nbjJlZDVKM2RoMEo2d2FJeHd3Y08vZnVvRldPVThKVGV5OWFw?=
 =?utf-8?B?QStqQzR3VE5nSjBvSkYvWHVmN3NXUCthOGIvOXpjYnlPeWI3ajduQm9CSHRX?=
 =?utf-8?B?bE9SQWVnQ0puRm8yVzhjSlduSnBpVENMdGxmNW9oTkJLc2xQd1gxZk8yenA0?=
 =?utf-8?B?eHFnMFdDdFh4NGFxZXNsT2Vhc3ZZVWFCV05xd2piR1pzaFAwaktHMm5ZbUFS?=
 =?utf-8?B?cWdWRE9NRW5Hd01pSG4wMlA3b0R3Wi9wcjJWY21TWDhzbjQyR3ptWHNRWFRh?=
 =?utf-8?B?R2U1dDlTcG1GWC81SkFwbENuelFzMU1rbGRWb01BNmlNT0lSUm1sVVV3Tzc4?=
 =?utf-8?B?R25KdHZtZFVCdzZTTUxBQWUwSmZ5dnZteTM2VTVNWlNOSWxwTjFiV0VRdytx?=
 =?utf-8?B?V2NHQ3JwOVdIWU04dzh1VG5NeU9NRkYrVkZmWXFtSCtaTE1zVThmbnc2dE1P?=
 =?utf-8?B?YlJTcUdVZ3dURUdoYVpYRkNrSkdFb2pyOWdEZXlDNldGWUVrTmNmQ1VmRFpn?=
 =?utf-8?B?cERGYmFGQ3BOMWlXN1pLbnpSMy9mT2pWQmJaODZZK21NTmNIZXFyUDk3MEJm?=
 =?utf-8?B?cVR2QVJCRXV5akJBd0RQbXluRUFZeDdjMXZFWHJMUHdXWE9LSmNUT3kvQ3NN?=
 =?utf-8?B?aEhMRm04citQQ2JpblFCaTNMSkRJTCtnNWRZeHNFUlRNWllIN3RMUXdhdGdu?=
 =?utf-8?B?OXBTN05ySEpuYkVpTWVTZlZiM0RvVFJ1OGp0NTRxZ2tEZWJnZ0Rmd1hHajEz?=
 =?utf-8?B?REhDZzE2djRiOWQrL1lUTTk3MkF3eVdMMFMrbG5OaG9jWWxTd3NqWDZFN2tr?=
 =?utf-8?B?RitkNE5jMUhxK25ZWGFtek5Cbys0bGYweWlqRCtEOG8yMXFMQmFaOE1SOFUw?=
 =?utf-8?Q?eplRSByJi4sPW79hmVolI8SWiN/ShCfBDmbHEWHRNm+co?=
x-ms-exchange-antispam-messagedata-1: UX+0HFRg8tF7EQ==
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: LV3PR03MB7707.namprd03.prod.outlook.com
X-MS-Exchange-CrossTenant-Network-Message-Id: fd463b03-218f-460b-9c02-08dea0715af5
X-MS-Exchange-CrossTenant-originalarrivaltime: 22 Apr 2026 13:16:24.9781
 (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: JenjTtB3oVYQ9GB/HeFQPVZ1KHUNcfvC57woPJzUD3Jq+oPekmJOzhzp8/B8lYtkPb15aHOH5TnxJ2Sq9rsOduUofOPv5EVaSclJ7JDRWw0=
X-MS-Exchange-Transport-CrossTenantHeadersStamped: PH7PR03MB7512
X-purgate-ID: tlsNG-ef75cf/1776863789-ADD6FC48-64EF9196/0/0
X-purgate-type: clean
X-purgate-size: 5728

SmFuIEJldWxpY2ggd3JvdGU6DQo+IE9uIDIyLjA0LjIwMjYgMTM6NTksIEFuZHJldyBDb29wZXIg
d3JvdGU6DQo+ID4gT24gMjIvMDQvMjAyNiAxMjo1MSBwbSwgSmFuIEJldWxpY2ggd3JvdGU6DQo+
ID4+IFRoZSBib290IHNlcnZpY2VzIEZyZWVQYWdlcygpIG5lZWRzIHBhc3NpbmcgdGhlIHNpemUu
IFNpbmNlIHdlIGFsbG9jYXRlZA0KPiA+PiBvbmUgbW9yZSBieXRlIHRvIHB1dCBhIHRyYWlsaW5n
IG51bCB0aGVyZSwgd2UgYWxzbyBuZWVkIHRvIGJ1bXAgdGhlIHNpemUNCj4gPj4gcGFzc2VkIHRo
ZXJlLiBNYWtlIGEgc21hbGwgaGVscGVyIGZ1bmN0aW9uIHRvIGNlbnRyYWxpemUgdGhpcy4NCj4g
Pj4NCj4gPj4gTm90ZSB0aGF0IHRoZXJlJ3Mgbm8gcGVybWFuZW50IG1lbW9yeSBsZWFrIGJlY2F1
c2Ugb2YgdGhlIG92ZXJzaWdodDogVGhlDQo+ID4+IGFsbG9jYXRpb24gaXMgZG9uZSB1c2luZyBF
ZmlMb2FkZXJEYXRhLCBhbmQgYWxsIG1lbW9yeSBvZiB0aGF0IHR5cGUgaXMNCj4gPj4gbGF0ZXIg
cmVjbGFpbWVkIGFueXdheS4NCj4gPg0KPiA+IFRoaXMgZGVwZW5kcyBvbiAtbWFwYnMgYXQgYSBt
aW5pbXVtLg0KDQpUaGlzIG1lbW9yeSBpcyBhbGxvY2F0ZWQgYWxsb2NhdGVkIHVzaW5nIEVmaUxv
YWRlckRhdGEgYW5kICdtYXBfYnMnIGlzIGZvcg0KRWZpQm9vdFNlcnZpY2VzQ29kZSBhbmQgRGF0
YSwgc28gYXQgbGVhc3QgdGhpcyBjYXNlIGRvZXMgbm90IGFwcGx5IHRvIGl0Og0KDQogICAgICAg
IGNhc2UgRWZpQm9vdFNlcnZpY2VzQ29kZToNCiAgICAgICAgY2FzZSBFZmlCb290U2VydmljZXNE
YXRhOg0KICAgICAgICAgICAgaWYgKCBtYXBfYnMgKQ0KICAgICAgICAgICAgew0KICAgICAgICAg
ICAgICAgIHR5cGUgPSBFODIwX1JFU0VSVkVEOw0KICAgICAgICAgICAgICAgIGJyZWFrOw0KICAg
ICAgICAgICAgfQ0KDQo+IEJ1dCB0aGF0J3MgYWZmZWN0aW5nIG9ubHkgRWZpQm9vdFNlcnZpY2Vz
e0NvZGUsRGF0YX0sIGlzbid0IGl0Pw0KDQpBcyBhbGxvY2F0ZWQgdXNpbmcgRWZpTG9hZGVyRGF0
YSwgYWZ0ZXIgRXhpdEJvb3RTZXJ2aWNlcywgaXQgd2lsbCBzaG93IHVwDQphcyBFZmlMb2FkZXJE
YXRhLCBhbmQgd2lsbCBiZSBwcm9jZXNzZWQgd2hlbiBpdGVyYXRpbmcgb3ZlciB0aGUgbWVtb3J5
DQphcmVhcyBkdXJpbmcgYm9vdC4NCg0KT24geDg2LCBYZW4gdXNlcyBlZmlfYXJjaF9wcm9jZXNz
X21lbW9yeV9tYXAoKSBmb3IgdGhpcywgd2hpY2ggaGFuZGxlcyBpdA0KbGlrZSBFZmlDb252ZW50
aW9uYWxNZW1vcnksIHdoZXJlLCBpZiBpdCBoYXMgZGVzYy0+QXR0cmlidXRlICYgRUZJX01FTU9S
WV9XQiwNCih3aGljaCBpdCBzaG91bGQgYmUgYXMgaXQgaXMgcmVndWxhciBSQU0pIGl0IGlzIHNl
dCB0byB0eXBlIEU4MjBfUkFNIGJ5IFhlbi4NCg0KVW5sZXNzIG1lcmdlZCB3aXRoIGFkamFjZW50
IGFyZWFzIGl0IHdvdWxkIHNob3cgaW4gdGhlIEU4MjAgbWFwIGFzIFJBTS4NCkFGQUlDUywgaXQg
d291bGQgYmUgcmVjbGFpbWVkIGJ5IFhlbi94ODYgdGhpcyB3YXkuIE9uIEFSTSwgRWZpTG9hZGVy
RGF0YQ0KaXMgYWRkZWQgdXNpbmcgbWVtaW5mb19hZGRfYmFuaygpLCBzbyBpdCB3b3VsZCBiZSBh
ZGRlZCBhcyBhIG1lbW9yeSBiYW5rLg0KDQo+ID4+IEZpeGVzOiBkZjc1Zjc3MDkyYzEgKCJFRkk6
IGF2b2lkIE9PQiBjb25maWcgZmlsZSByZWFkcyIpDQo+ID4+IFJlcG9ydGVkLWJ5OiBCZXJuaGFy
ZCBLYWluZGwgPGJlcm5oYXJkLmthaW5kbEBjaXRyaXguY29tPg0KPiA+PiBTaWduZWQtb2ZmLWJ5
OiBKYW4gQmV1bGljaCA8amJldWxpY2hAc3VzZS5jb20+DQo+ID4+IC0tLQ0KPiA+PiBUaGlzIGlz
IGFuIGFsdGVybmF0aXZlIHByb3Bvc2FsIHRvDQo+ID4+IGh0dHBzOi8vbGlzdHMueGVuLm9yZy9h
cmNoaXZlcy9odG1sL3hlbi1kZXZlbC8yMDI2LTA0L21zZzAxMDQ0Lmh0bWwuDQo+ID4NCj4gPiBP
bmUgdGhpbmcgdGhpcyBwYXRjaCBkb2VzIG5vdCBkbyBpcyBmaXggdGhlIGJvdW5kYXJ5IHBhc3Nl
ZCB0bw0KPiA+IGVmaV9hcmNoX2ZsdXNoX2RjYWNoZV9hcmVhKCkuDQo+IA0KPiBEZWxpYmVyYXRl
bHkgc28sIGFuZCBJIGNvbW1lbnRlZCB0byB0aGlzIGVmZmVjdCBpbiByZXBseSB0byBCZXJuaGFy
ZCdzDQo+IHBhdGNoLiBJIGRvIHRoaW5rIC4uLg0KPiANCj4gPiBJIGZpbmQgaXQgaGFyZCB0byBi
ZWxpZXZlIHRoYXQgY2FjaGUgbWFpbnRlbmFuY2UgaXMgYWN0dWFsbHkgbmVlZGVkLCBidXQNCj4g
PiBnaXZlbiBpdCBpcyBwcmVzZW50IGluIHRoZSBjb2RlIGN1cnJlbnRseSBpdCBuZWVkcyB0byBz
dGF5IGNvcnJlY3QuDQo+ID4NCj4gPiBPciwgaWYgaXQncyBub3QgbmVlZGVkLCBpdCBzaG91bGQg
YmUgZHJvcHBlZCBpbiBhIHNlcGFyYXRlIHBhdGNoLg0KPiANCj4gLi4uIHRoaXMgaXMgdGhlIHdh
eSB0byBnbywgYnV0IGl0J2xsIG5lZWQgaW5wdXQgZnJvbSBBcm0gZm9sa3MgKGFzDQo+IHJlcXVl
c3RlZCB0aGVyZSkuDQoNCklmIGluIGRvdWJ0LCB5b3UgbWF5IGNvbnN1bHQgdGhlIGdpdHdlYiBz
ZWFyY2ggKHNlZSBiZWxvdykgZm9yIHRoZSBmdW5jdGlvbg0KYW5kIHRha2UgdGhlIHNhZmUgcm91
dGUgb2Ygbm90IHJlbW92aW5nIGl0Lg0KDQpGbHVzaGluZyB0aGUgZGNhY2hlIG1heSBhbHNvIGJl
IG5lZWRlZCBvbiBDUFVzIHdpdGggYSBzcGxpdCBEL0ktY2FjaGUgYW5kDQp3aGVuIHVzaW5nIHNw
ZWNpYWwgY29kZSBvciBIVyBvbiB0aGUgU29DIG9yIGJvYXJkKGUuZy4gYSBETUEgZW5naW5lKSBv
cg0Kc29tZXRoaW5nIGVsc2UgZXh0ZXJuYWwgdG8gdGhlIGRjYWNoZSB0byBhY2Nlc3MgdGhlIGxv
YWRlZCBkYXRhLg0KDQpPcmRlcmluZyBlZmlfYXJjaF9mbHVzaF9kY2FjaGVfYXJlYSgpIGJlZm9y
ZSByZS1kaXJ0eWluZyB0aGUgZGNhY2hlIGxvb2tzDQpjb3VudGVyLWludHVpdGl2ZSB3aGljaCBp
cyB3aHkgSSB1cGRhdGVkIHRoZSBvcmRlciB0byBtYXRjaCB0aGUgbG9naWNhbCBmbG93DQpvZiBm
bHVzaGluZyB0aGUgZGNhY2hlIGFmdGVyIHRoZSBsYXN0IGNoYW5nZS4NCg0KUGVyIHRoZSBnaXQg
aGlzdG9yeSAoc2VlIGJlbG93KSwgaXQgd2FzIG5lZWRlZCBmb3IgY29weV9mcm9tX3BhZGRyKCkg
b24gQVJNLg0KDQpZb3UgbWlnaHQgc2tpcCBmaXhpbmcgdXAgdGhlIGNhY2hlIGZsdXNoaW5nIG9y
ZGVyLiBJdCB3YXMganVzdCBhICJ3aGlsZSBhdCBpdCINCnRvIGJlIHNhZmUuDQoNCkFzIHdlIGRv
bid0IHVzZSBjb3B5X2Zyb21fcGFkZHIoKSBvciBzaW1pbGFyIHRvIHJlYWQgb3IgY29weSB0aGUg
Y29uZmlnLiBIb3dldmVyLA0KaWYgY29weV9mcm9tX3BhZGRyKCkgd291bGQgYmUgdXNlZCBmb3Ig
dGhlIGNvbmZpZywgYXQgdGhpcyBwb2ludCwgdGhlIGRjYWNoZQ0KZmx1c2ggd291bGQgYmUgYSBm
YWN0b3IgdG8gYmUgZG9uZSByaWdodCAoYWNjb3JkaW5nIHRvIHRoZSBnaXQgaGlzdG9yeSkuDQoN
Ck1vdmluZyB0aGUgdHdvIGNhbGxzIHRvIEZyZWVQYWdlcygpIGZvciBjZmcgaXMgYSBnb29kIGNs
ZWFudXAgZm9yIG1lLCBzbzoNCg0KUmV2aWV3ZWQtYnk6IEJlcm5oYXJkIEthaW5kbCA8YmVybmhh
cmQua2FpbmRsQGNpdHJpeC5jb20+DQoNCkJlcm5oYXJkDQoNClBTOiBHaXR3ZWIgZmluZHMgdGhp
cyBjb21taXQgZm9yIGFkZGluZyB0aGUgZnVuY3Rpb246DQoNCmh0dHBzOi8veGVuYml0cy54ZW4u
b3JnL2dpdHdlYi8/cD14ZW4uZ2l0O2E9Y29tbWl0O2g9MGQ2YTNjNzU1Mzc0ZjA0ZjZkZDI1Mzcz
ZGEyODI5MWE4ZjM1YmVkZQ0KDQplZmk6IGludHJvZHVjZSBlZmlfYXJjaF9mbHVzaF9kY2FjaGVf
YXJlYQ0KDQpPYmplY3RzIGxvYWRlZCBieSBGaWxlSGFuZGxlLT5SZWFkIG5lZWQgdG8gYmUgZmx1
c2hlZCBmcm9tIGRjYWNoZSwNCm90aGVyd2lzZSBjb3B5X2Zyb21fcGFkZHIgd2lsbCByZWFkIHN0
YWxlIGRhdGEgd2hlbiBjb3B5aW5nIHRoZSBrZXJuZWwsDQpjYXVzaW5nIGEgZmFpbHVyZSB0byBi
b290Lg0KDQpJbnRyb2R1Y2UgZWZpX2FyY2hfZmx1c2hfZGNhY2hlX2FyZWEgYW5kIGNhbGwgaXQg
ZnJvbSByZWFkX2ZpbGUuDQoNClRoaXMgY29tbWl0IGludHJvZHVjZXMgbm8gZnVuY3Rpb25hbCBj
aGFuZ2VzIG9uIHg4Ni4NCg0KUmVwb3J0ZWQtYnk6IE1hcmsgUnV0bGFuZCA8bWFyay5ydXRsYW5k
QGFybS5jb20+DQpTaWduZWQtb2ZmLWJ5OiBTdGVmYW5vIFN0YWJlbGxpbmkgPHN0ZWZhbm8uc3Rh
YmVsbGluaUBldS5jaXRyaXguY29tPg0K


From xen-devel-bounces@lists.xenproject.org Wed Apr 22 13:22:19 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 22 Apr 2026 13:22:19 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1290529.1570091 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wFXWx-00082a-0s; Wed, 22 Apr 2026 13:22:15 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1290529.1570091; Wed, 22 Apr 2026 13:22: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 1wFXWw-00082T-Tu; Wed, 22 Apr 2026 13:22:14 +0000
Received: by outflank-mailman (input) for mailman id 1290529;
 Wed, 22 Apr 2026 13:22:13 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <jens.wiklander@linaro.org>) id 1wFXWv-00082N-DO
 for xen-devel@lists.xenproject.org; Wed, 22 Apr 2026 13:22:13 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wFXWu-000ZnF-Q3
 for xen-devel@lists.xenproject.org; Wed, 22 Apr 2026 15:22:12 +0200
Received: from [10.42.69.10] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <jens.wiklander@linaro.org>)
 id 69e8cb68-bab6-0a2a0a5309dd-0a2a450a950e-32
 for <xen-devel@lists.xenproject.org>; Wed, 22 Apr 2026 15:22:12 +0200
Received: from [209.85.160.51] (helo=mail-oa1-f51.google.com)
 by tlsNG-4011c0.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.1)
 (envelope-from <jens.wiklander@linaro.org>)
 id 69e8cb83-56b3-0a2a450a0019-d155a033e11a-3
 for <xen-devel@lists.xenproject.org>; Wed, 22 Apr 2026 15:22:12 +0200
Received: by mail-oa1-f51.google.com with SMTP id
 586e51a60fabf-41708f6c3feso3518147fac.3
 for <xen-devel@lists.xenproject.org>; Wed, 22 Apr 2026 06:22:12 -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=google header.d=linaro.org header.i="@linaro.org" header.h="Content-Transfer-Encoding:Cc:To:Subject:Message-ID:Date:From:In-Reply-To:References:MIME-Version"
ARC-Seal: i=1; a=rsa-sha256; t=1776864131; cv=none;
        d=google.com; s=arc-20240605;
        b=bzdij10dWWIlonLfp9s7GIAtFzxpz3wLRIZ9JtVQQ0b+PH3TqvwhLcjn6Nt+Gl/t3z
         qBsSbYrrBd1N54tEDAjkCnXb9gXdJBz1iXVKBX7snaXZ46/fGdWe/LRLRWr+NiH1b+rG
         gMJbeuIVhGFBS/NSiTiOFppwcdB3+7JtHBUxCTfkBoTjc6mxdYdRG268d10sOKsvSTeR
         6SP5AS3v1n6gQmC2eNOo2UN2oeTKa8PypgKGeF61YTb5LIpXbynFegt8yreb/D8fNM+y
         BgMEbzKKSOLH8+ZClfhyUk9so0vCkVxdBQpPoyRk1wuGq+ExNk3kEN7TaURB1uOw2XOR
         joGA==
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20240605;
        h=content-transfer-encoding:cc:to:subject:message-id:date:from
         :in-reply-to:references:mime-version:dkim-signature;
        bh=f0F3oZ8mp3d3dSf4u2eAOTbRoWum3oUzSMdZnoDb07c=;
        fh=wNLC6Hyb5Ukz/ErppBRQBwv8vwa/OMsdh6R8bnNsiPU=;
        b=Oihu5mspc8THzaHHIuSfsj9AO5LYNpLY9BnZSTGoD1ZMTotlJnRryqkK967Nl0jJPD
         KkFALTEknNPSF9DlRjNcIWyglW9VtxMsMBcmf9WciGcxmMsNX27MOQwb5VAthJ+xv3Da
         wRYul4CbWTn3lkiwfvM4Yd7b93gCxPHKRYsLGWzJlQZfipXEQRuYCsIZ+S9CUM2gQcdu
         q9hHgmRWdK2YXX1VVZfGpLlE2ZGyZ2Iu5NpKOpqlyHuioi+impLr23uqeyInjVniB6Zf
         5sELeYdObspouZ2NjBkGlkVllgpyMrJ+9Tao8a6K7c9nBXL2OLvwLfTl3q9GbpDO1Y7y
         isGQ==;
        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=linaro.org; s=google; t=1776864131; x=1777468931; darn=lists.xenproject.org;
        h=content-transfer-encoding:cc:to:subject:message-id:date:from
         :in-reply-to:references:mime-version:from:to:cc:subject:date
         :message-id:reply-to;
        bh=f0F3oZ8mp3d3dSf4u2eAOTbRoWum3oUzSMdZnoDb07c=;
        b=mk398bmHdnq3+5JOZD5aqxyXfG0cKkrcSNPpXn9mz08Aqan2K+wTFhI4TzDKusMLf1
         dCc4N35vbhSWDIvHdqanIKbgXfq3Zv3Nb27g9oFyYqu5VoZHNIoRm5mylVd/IEgekoFo
         zo8htTpaojHF4Kc1qZynBcHmBy+PV3FoXQoaEVm1fttoChGLMrqaIYdNjIOe8IW/PP7g
         mk2/fiAaQa7Q+B4/I5c+1YZ1ew1+VOMAckf7MMavaejyXortXHft4d9sZqLhjV6ouGyw
         eQwndjMFcUNqHAvjQ0+spOTB4NPdPJ3v0ZOZ/ZAOkGAWsP3xhQKWIVksQiFcdg3QV+OH
         vWqA==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20251104; t=1776864131; x=1777468931;
        h=content-transfer-encoding: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;
        bh=f0F3oZ8mp3d3dSf4u2eAOTbRoWum3oUzSMdZnoDb07c=;
        b=fmrUYlqqQgiPlL4ZjZiDxB5NFRkGRLfiP6gi7wzYTpzkfT/FO/0eGv4nFmWkFk6BZg
         25KPaYM7a2oc1usJ9SMJmUR7C2rWmMQGwg1Brg7N05uLONKoAZ/trXoihDIEtPlk/xbp
         VcnLgIPuqhfnqIzIVdM5rO9o5qn4sR9OaLGbZ7qN7xEz31MLtRZ9RMRSm3T08DCQmEpQ
         dr7Uxl77UFOdLPl/Eqy/Jokn2A0iaXwx9tOJXJe88Ymjs+6ZQwKB26Ma2Pd7Grx0Wkn8
         uVaOZIgWMR0P8fVNginNT6WkTRwxFG5jqIDvpyML3IBIJRvsGyyVeGbUymIZKLlEMNnP
         YRlQ==
X-Gm-Message-State: AOJu0Yy2ZKC361OYQOJkfuKRiUxXXFy08KaBvj3SVMU4aUGU37v2dEEz
	g5hHUb/AyYpHZ4Mce87Yx1L86MI1rJ2Q8rebElgu1I8PL42+ISknFYU49a8N3VYAJZZaJMI5+G1
	1r1w2XECWI+zFYi2npbWUe70a3USVsbf//PE7zPJPdQ==
X-Gm-Gg: AeBDievgCAZHABzUxtYNKBE6jFJRU1uun+Leelde4IhoNMwX16XVa4IAy2WfbsO3Ibu
	dX4qM656Yo5Ik2T10Lyyxho4q98Xr2+hANXO0/OegCp69tJtnQ4SKiuE+WnQfbQuC0OCSNyEctT
	gRkN/AymXRk0lre2OPr/cfjCIMBjE2n3M5ItLom1EnBGUGXszfTYtQT5i3587QNzng5aSRy5Mrt
	bO+nhk2W/Ke6hNiBja3RYvTGze4j7XgaUA4zgMke45PDfOsGORBU6qiuzPdZ5mWWyhCNB5PPgjx
	y58KkjqxWSvifjVaOxkLIFfzG1AmFTp6bsR4eJOJcWPUq5Ofs5AWNyb4xMY=
X-Received: by 2002:a4a:e903:0:b0:694:9f32:11 with SMTP id 006d021491bc7-6949f3202e9mr2826813eaf.5.1776864130648;
 Wed, 22 Apr 2026 06:22:10 -0700 (PDT)
MIME-Version: 1.0
References: <cover.1776266307.git.bertrand.marquis@arm.com> <a3e689abc6695c0adbe294ebce7ee0a77bd4b7bf.1776266307.git.bertrand.marquis@arm.com>
In-Reply-To: <a3e689abc6695c0adbe294ebce7ee0a77bd4b7bf.1776266307.git.bertrand.marquis@arm.com>
From: Jens Wiklander <jens.wiklander@linaro.org>
Date: Wed, 22 Apr 2026 15:21:58 +0200
X-Gm-Features: AQROBzBKQVL6zQvr3FCIfYlQ6vhvNnWfQ5N49pVyGmS3J7xHS8LLWBnnR4QMJtI
Message-ID: <CAHUa44EnUgxzyY7z53pfOhB5Xps8KWOV2FdZiTEF0gufrfQcdQ@mail.gmail.com>
Subject: Re: [PATCH 5/6] xen/arm: ffa: Track VM notification bindings locally
To: Bertrand Marquis <bertrand.marquis@arm.com>
Cc: xen-devel@lists.xenproject.org, 
	Volodymyr Babchuk <volodymyr_babchuk@epam.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-4011c0/1776864132-45F698B7-B7A7B868/0/0
X-purgate-type: clean
X-purgate-size: 8132

Hi Bertrand,

On Fri, Apr 17, 2026 at 3:41=E2=80=AFPM Bertrand Marquis
<bertrand.marquis@arm.com> wrote:
>
> VM-to-VM notifications need receiver-side bind state so Xen can validate
> which sender owns each notification bit. Non-secure BIND and UNBIND
> requests currently have no local state and cannot enforce that contract.
>
> Add per-bit VM notification binding state to struct ffa_ctx_notif and
> use it to handle non-secure BIND and UNBIND requests when
> CONFIG_FFA_VM_TO_VM is enabled. The update helper validates the whole
> request under notif_lock before mutating anything, denies bind or
> unbind when a bit is pending, rejects rebinding to a different sender,
> and keeps rebinding to the same sender idempotent.
>
> Promote vm_pending to a bitmap so the bind logic can reason per
> notification ID, use that bitmap directly when reporting pending state,
> and initialize and clear the new VM notification state during domain
> init and teardown.
>
> Functional impact: when CONFIG_FFA_VM_TO_VM is enabled, Xen tracks VM
> notification bindings locally and validates non-secure bind and unbind
> requests against that state.
>
> Signed-off-by: Bertrand Marquis <bertrand.marquis@arm.com>
> ---
>  xen/arch/arm/tee/ffa_notif.c   | 97 ++++++++++++++++++++++++++++++----
>  xen/arch/arm/tee/ffa_private.h | 15 ++++--
>  2 files changed, 99 insertions(+), 13 deletions(-)
>
> diff --git a/xen/arch/arm/tee/ffa_notif.c b/xen/arch/arm/tee/ffa_notif.c
> index fff00ca2baec..4def701f0130 100644
> --- a/xen/arch/arm/tee/ffa_notif.c
> +++ b/xen/arch/arm/tee/ffa_notif.c
> @@ -56,6 +56,54 @@ static int32_t ffa_notif_parse_params(uint16_t dom_id,=
 uint16_t caller_id,
>      return FFA_RET_OK;
>  }
>
> +static int32_t ffa_notif_update_vm_binding(struct ffa_ctx *ctx,
> +                                           uint16_t dest_id, uint64_t bi=
tmap,
> +                                           bool bind)
> +{
> +    unsigned int id;
> +    int32_t ret =3D FFA_RET_OK;
> +
> +    spin_lock(&ctx->notif.notif_lock);
> +
> +    for ( id =3D 0; id < FFA_NUM_VM_NOTIF; id++ )
> +    {
> +        if ( !(bitmap & BIT(id, ULL)) )
> +            continue;
> +
> +        if ( ctx->notif.vm_pending & BIT(id, ULL) )
> +        {
> +            ret =3D FFA_RET_DENIED;
> +            goto out_unlock;
> +        }
> +
> +        if ( bind )
> +        {
> +            if ( ctx->notif.vm_bind[id] !=3D 0 &&
> +                 ctx->notif.vm_bind[id] !=3D dest_id )
> +            {
> +                ret =3D FFA_RET_DENIED;
> +                goto out_unlock;
> +            }
> +        }
> +        else if ( ctx->notif.vm_bind[id] !=3D dest_id )
> +        {
> +            ret =3D FFA_RET_DENIED;
> +            goto out_unlock;
> +        }
> +    }
> +
> +    for ( id =3D 0; id < FFA_NUM_VM_NOTIF; id++ )
> +    {
> +        if ( bitmap & BIT(id, ULL) )
> +            ctx->notif.vm_bind[id] =3D bind ? dest_id : 0;
> +    }
> +
> +out_unlock:
> +    spin_unlock(&ctx->notif.notif_lock);
> +
> +    return ret;
> +}
> +
>  int32_t ffa_handle_notification_bind(struct cpu_user_regs *regs)
>  {
>      struct domain *d =3D current->domain;
> @@ -76,11 +124,21 @@ int32_t ffa_handle_notification_bind(struct cpu_user=
_regs *regs)
>      if ( ret )
>          return ret;
>
> -    if ( FFA_ID_IS_SECURE(dest_id) && fw_notif_enabled )
> -        return ffa_simple_call(FFA_NOTIFICATION_BIND, src_dst, flags,
> -                               bitmap_lo, bitmap_hi);
> +    if ( FFA_ID_IS_SECURE(dest_id) )
> +    {
> +        if ( fw_notif_enabled )
> +            return ffa_simple_call(FFA_NOTIFICATION_BIND, src_dst, flags=
,
> +                                   bitmap_lo, bitmap_hi);
>
> -    return FFA_RET_NOT_SUPPORTED;
> +        return FFA_RET_NOT_SUPPORTED;
> +    }
> +
> +    if ( !IS_ENABLED(CONFIG_FFA_VM_TO_VM) )
> +        return FFA_RET_NOT_SUPPORTED;
> +
> +    return ffa_notif_update_vm_binding(ctx, dest_id,
> +                                       ((uint64_t)bitmap_hi << 32) | bit=
map_lo,
> +                                       true);
>  }
>
>  int32_t ffa_handle_notification_unbind(struct cpu_user_regs *regs)
> @@ -99,11 +157,21 @@ int32_t ffa_handle_notification_unbind(struct cpu_us=
er_regs *regs)
>      if ( ret )
>          return ret;
>
> -    if ( FFA_ID_IS_SECURE(dest_id) && fw_notif_enabled )
> -        return ffa_simple_call(FFA_NOTIFICATION_UNBIND, src_dst, 0, bitm=
ap_lo,
> -                               bitmap_hi);
> +    if ( FFA_ID_IS_SECURE(dest_id) )
> +    {
> +        if ( fw_notif_enabled )
> +            return ffa_simple_call(FFA_NOTIFICATION_UNBIND, src_dst, 0,
> +                                   bitmap_lo, bitmap_hi);
>
> -    return FFA_RET_NOT_SUPPORTED;
> +        return FFA_RET_NOT_SUPPORTED;
> +    }
> +
> +    if ( !IS_ENABLED(CONFIG_FFA_VM_TO_VM) )
> +        return FFA_RET_NOT_SUPPORTED;
> +
> +    return ffa_notif_update_vm_binding(ctx, dest_id,
> +                                       ((uint64_t)bitmap_hi << 32) | bit=
map_lo,
> +                                       false);
>  }
>
>  void ffa_handle_notification_info_get(struct cpu_user_regs *regs)
> @@ -125,9 +193,10 @@ void ffa_handle_notification_info_get(struct cpu_use=
r_regs *regs)
>
>      if ( IS_ENABLED(CONFIG_FFA_VM_TO_VM) )
>      {
> -        notif_pending |=3D test_and_clear_bool(ctx->notif.vm_pending);
> -
>          spin_lock(&ctx->notif.notif_lock);
> +        if ( ctx->notif.vm_pending )
> +            notif_pending =3D true;
> +
>          if ( ctx->notif.hyp_pending )
>              notif_pending =3D true;
>          spin_unlock(&ctx->notif.notif_lock);
> @@ -497,10 +566,14 @@ void ffa_notif_init(void)
>  int ffa_notif_domain_init(struct domain *d)
>  {
>      struct ffa_ctx *ctx =3D d->arch.tee;
> +    unsigned int i;
>      int32_t res;
>
>      spin_lock_init(&ctx->notif.notif_lock);
>      ctx->notif.secure_pending =3D false;
> +    ctx->notif.vm_pending =3D 0;
> +    for ( i =3D 0; i < FFA_NUM_VM_NOTIF; i++ )
> +        ctx->notif.vm_bind[i] =3D 0;
>      ctx->notif.hyp_pending =3D 0;
>
>      if ( fw_notif_enabled )
> @@ -516,9 +589,13 @@ int ffa_notif_domain_init(struct domain *d)
>  void ffa_notif_domain_destroy(struct domain *d)
>  {
>      struct ffa_ctx *ctx =3D d->arch.tee;
> +    unsigned int i;
>
>      spin_lock(&ctx->notif.notif_lock);
>      ctx->notif.secure_pending =3D false;
> +    ctx->notif.vm_pending =3D 0;
> +    for ( i =3D 0; i < FFA_NUM_VM_NOTIF; i++ )
> +        ctx->notif.vm_bind[i] =3D 0;

Why not memset(ctx->notif.vm_bind, 0, sizeof(ctx->notif.vm_bind)?

>      ctx->notif.hyp_pending =3D 0;
>      spin_unlock(&ctx->notif.notif_lock);
>
> diff --git a/xen/arch/arm/tee/ffa_private.h b/xen/arch/arm/tee/ffa_privat=
e.h
> index 5693772481ed..6d83afb3d00a 100644
> --- a/xen/arch/arm/tee/ffa_private.h
> +++ b/xen/arch/arm/tee/ffa_private.h
> @@ -236,6 +236,11 @@
>  #define FFA_NOTIF_INFO_GET_ID_COUNT_MASK    0x1F
>
>  #define FFA_NOTIF_RX_BUFFER_FULL        BIT(0, U)
> +#define FFA_NUM_VM_NOTIF                64U
> +
> +#if FFA_NUM_VM_NOTIF > 64
> +#error "FFA_NUM_VM_NOTIF must be <=3D 64"
> +#endif

BUILD_BUG_ON(FFA_NUM_VM_NOTIF > 64) ?

Cheers,
Jens

>
>  /* Feature IDs used with FFA_FEATURES */
>  #define FFA_FEATURE_NOTIF_PEND_INTR     0x1U
> @@ -334,10 +339,14 @@ struct ffa_ctx_notif {
>      bool secure_pending;
>
>      /*
> -     * True if domain is reported by FFA_NOTIFICATION_INFO_GET to have
> -     * pending notifications from VMs (including framework ones).
> +     * Bitmap of pending notifications from VMs (including framework one=
s).
> +     */
> +    uint64_t vm_pending;
> +
> +    /*
> +     * Source endpoint bound to each VM notification ID (0 means unbound=
).
>       */
> -    bool vm_pending;
> +    uint16_t vm_bind[FFA_NUM_VM_NOTIF];
>
>      /*
>       * Lock protecting the hypervisor-managed notification state.
> --
> 2.53.0
>


From xen-devel-bounces@lists.xenproject.org Wed Apr 22 13:23:10 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 22 Apr 2026 13:23:10 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1290538.1570099 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wFXXq-0008WV-8y; Wed, 22 Apr 2026 13:23:10 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1290538.1570099; Wed, 22 Apr 2026 13:23: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 1wFXXq-0008WO-6M; Wed, 22 Apr 2026 13:23:10 +0000
Received: by outflank-mailman (input) for mailman id 1290538;
 Wed, 22 Apr 2026 13:23:08 +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 1wFXXo-0008WD-Ls
 for xen-devel@lists.xenproject.org; Wed, 22 Apr 2026 13:23:08 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wFXXo-007MYT-2Z
 for xen-devel@lists.xenproject.org; Wed, 22 Apr 2026 15:23:08 +0200
Received: from [10.42.69.4] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <Jason.Andryuk@amd.com>)
 id 69e8cbba-2eae-0a2a0a5409dd-0a2a4504a4aa-4
 for <xen-devel@lists.xenproject.org>; Wed, 22 Apr 2026 15:23:07 +0200
Received: from [52.101.62.19]
 (helo=DM5PR21CU001.outbound.protection.outlook.com)
 by tlsNG-ebf023.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.1)
 (envelope-from <Jason.Andryuk@amd.com>)
 id 69e8cbb9-1dec-0a2a45040019-34653e1325b9-3
 for <xen-devel@lists.xenproject.org>; Wed, 22 Apr 2026 15:23:07 +0200
Received: from CH0PR03CA0320.namprd03.prod.outlook.com (2603:10b6:610:118::25)
 by MN2PR12MB4223.namprd12.prod.outlook.com (2603:10b6:208:1d3::18)
 with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9846.16; Wed, 22 Apr
 2026 13:23:02 +0000
Received: from CH1PEPF0000AD79.namprd04.prod.outlook.com
 (2603:10b6:610:118:cafe::3e) by CH0PR03CA0320.outlook.office365.com
 (2603:10b6:610:118::25) with Microsoft SMTP Server (version=TLS1_3,
 cipher=TLS_AES_256_GCM_SHA384) id 15.20.9791.48 via Frontend Transport; Wed,
 22 Apr 2026 13:23:02 +0000
Received: from satlexmb07.amd.com (165.204.84.17) by
 CH1PEPF0000AD79.mail.protection.outlook.com (10.167.244.57) with Microsoft
 SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id
 15.20.9846.18 via Frontend Transport; Wed, 22 Apr 2026 13:23:01 +0000
Received: from SATLEXMB04.amd.com (10.181.40.145) by satlexmb07.amd.com
 (10.181.42.216) with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.2.2562.17; Wed, 22 Apr
 2026 08:23:00 -0500
Received: from satlexmb07.amd.com (10.181.42.216) by SATLEXMB04.amd.com
 (10.181.40.145) with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2507.39; Wed, 22 Apr
 2026 08:23:00 -0500
Received: from [172.29.169.138] (10.180.168.240) by satlexmb07.amd.com
 (10.181.42.216) with Microsoft SMTP Server id 15.2.2562.17 via Frontend
 Transport; Wed, 22 Apr 2026 08:23:00 -0500
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@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=lkYdj9Wle8kXYbmW3hsIcMB9Xo5JtBTBjWQdLxOoBJFEmwvyD+X79jH2zjXn4xP6r6pHuE4ZOkdXyvBkcLKGMcrE2g9YJZv9SlE1mDGI0yxv14sgGbgxLD2ihvmnRXKjC3/QFra7aW5sX4pNyNeswQ6gogjJS1UdSqa+axg7lX7Ak8/EitND3Xx2hewhDj4Qp1cHdk2/cmXH/EUHvRr3PQyWHkN8OBFj5gZlF2Bm7uzJYkF0RtI/67JhZSIOj/mMHAg8t0h3aLPNMxfbxD/2B0LdYb315MjrJcreu4sdiDNcc42ryT7wgtB3mcTO5aPgK5zLFTyijSIjc9ldJodogg==
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com;
 s=arcselector10001;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1;
 bh=QCebRR3E+3XOTHOD3xaKmkxFWSweV4rtrn6h2sO0FGk=;
 b=paYs4UbbX+vr4npf6cGm1uJyNaqXQ8+tvGuuHBwZNZV9+tVhE9M8VQNe7XwAE+Ind3oeNmY0Q9JJG3Yww204OPyxwpmLnRBFb7pV3h63YtQVY4TgverzIye0I67kVB2uYqyHKRqOJKa0sN8QzM5lHyY1/+qMCz1rSJvzhJD8lQXFTNu/DK4LT9zTDcYiJD7pInZ222EUKMepb6Gv8xlSDJ8Ailg/mRxwPuC7QsM0msCYJZxivX08o+gPt0eEr2t3HZV82C16He1V5pg+1Q6nBJ4kGin96BcDtgUGW3Acc6Rr+6sJiG07IlM9m8Qutb82iC7drGPOXnIKVg7onjOAoQ==
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=QCebRR3E+3XOTHOD3xaKmkxFWSweV4rtrn6h2sO0FGk=;
 b=UotpT+spUt+AiQAq4h85e2nOu0Zwm/AgcSJ4de+50mQUZLbaEm1nS61eGLn1YLbcK8q6/gZWirH2R6M/bewVqOtwgdehQGTVnj4nU9I7bS6Rq0RShZX4Rvtz0oNhK3Ho+aoTbJJK1wwAODYCaXmRAOg8CRa0xSdOFiULKSo1k5k=
X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 165.204.84.17)
 smtp.mailfrom=amd.com; dkim=none (message not signed)
 header.d=none;dmarc=pass action=none header.from=amd.com;
Received-SPF: Pass (protection.outlook.com: domain of amd.com designates
 165.204.84.17 as permitted sender) receiver=protection.outlook.com;
 client-ip=165.204.84.17; helo=satlexmb07.amd.com; pr=C
Message-ID: <11a2f814-984b-4766-a62e-2af059c6b63f@amd.com>
Date: Wed, 22 Apr 2026 09:22:59 -0400
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH v2] tools/xenstored: remove unneeded check in
 create_node()
To: Juergen Gross <jgross@suse.com>, <xen-devel@lists.xenproject.org>
CC: Julien Grall <julien@xen.org>, Anthony PERARD <anthony.perard@vates.tech>
References: <20260421071510.222547-1-jgross@suse.com>
Content-Language: en-US
From: Jason Andryuk <jason.andryuk@amd.com>
In-Reply-To: <20260421071510.222547-1-jgross@suse.com>
Content-Type: text/plain; charset="UTF-8"; format=flowed
Content-Transfer-Encoding: 7bit
Received-SPF: None (SATLEXMB04.amd.com: jason.andryuk@amd.com does not
 designate permitted sender hosts)
X-EOPAttributedMessage: 0
X-MS-PublicTrafficType: Email
X-MS-TrafficTypeDiagnostic: CH1PEPF0000AD79:EE_|MN2PR12MB4223:EE_
X-MS-Office365-Filtering-Correlation-Id: b36bd5aa-f267-46cb-1763-08dea072478a
X-MS-Exchange-SenderADCheck: 1
X-MS-Exchange-AntiSpam-Relay: 0
X-Microsoft-Antispam:
	BCL:0;ARA:13230040|1800799024|376014|82310400026|36860700016|22082099003|56012099003|18002099003;
X-Microsoft-Antispam-Message-Info:
	RR4qGfhR1BG2L9+cr+PLw3py5D7RIM5NuHfcxY2YlpioQ+oj1jHdl5FTY6KEwdYwjVPWsaCaF+GLPZbd3ACELxSA5O86VifuL5SVyty1ZSmq9jmIwC20kXrYuqbW9fEu8WvMeV/HPxhPjipYVSP8ThsM9xGQCL63ks6i+4q8tvo8Ck1UjKC7VGDfxGDMmgXOnkR+6kGZEbIIlaQQNYCPdLUIqbrNzR0Fu3IMQKkP/pH38Y9mB4Sb4bc2Qh2k/uVrZQSmD4oSn/I2T6SP42xZewuBfocsXLJw6BxKEkM1+y1gAIsYbhmUzzALk1OqYEnPkAzcb3OxrII4KyScOw1hPFfSlMBex23hk04ZcMO17fmvJTuo3j8JpZZDDmalsowMl2Cqiw/5pdVKQ8GbdiddWwi01rc43hVlCdHyUr3n1CVvXMUF54XP99i4xQ1lkfYlPtobIu+pFFKO5kjkSQmZdpETDIAkDnWDRkXM5Oi//vjokoEfoJx7kz/XU0SLPA/tm9xpZr78WTpSRzUpqff4lx+/W6l6DH6ElUT2vv6eoM6rrobi4ZW2roWH4fABDK3kYmEMUMIz9Dp9s5HP+ednSyAtOdStp6Z2TO3CbqAL+Xwda0BH1/YdzzgB7g3W1zpcCklotFVGq6E3wz8xUlw+QxE6ELPXwyedTaMAgDNznrm7iyzD6bvzvTiYtC8X/l+/OepIpSxrB9EiyJV/iI6ZPcUMl6xLWZ6bkjK6Cpqp/uIvUQ52z6cSnsItAWuIH7wAGcgsrvqfJ2dr0th/54cI2g==
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)(82310400026)(36860700016)(22082099003)(56012099003)(18002099003);DIR:OUT;SFP:1101;
X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1
X-MS-Exchange-AntiSpam-MessageData-0:
	ADGAAH3Bmv16KQffGKpWH65tjYcPH7WQqcruD9E1/RHT8vRZZDMeqXiw7SwlmrZKCSGolidWf4I0nyYZW+uzV1CA2vfbmH6xw8+LJW5z7SzDbld8H4yHnMiHtQySFriFKi5S0GhuOED/aiqoBmkv6N98/lRAkuFOSS5Cfa47mdfpnZ5NIRnhwYL5srX3+BSwDJ2JkEK4GkUD4Epg7JxVD6WWbX6CpBOd9eUxuxtgOlDHEz8qvMZ6UQMr6Qj44AwgHFKk1hVrN7p5WiC5/bARKu98PBLVuDpdj1wg2RagBI8YKXusoECB/37G9KBjj+eV/OmHJeUd6S2N6mDs3oVny2xJMUwL7Kl5aem22asS1MjAlCFwr+pZ4i5OfqtDXqLRyQZQULUJPuyNqo6hekc+1krKWmrb25mM6ZcOYCaFIR1T/6G3m2dWlV4PQl8sLTYF
X-OriginatorOrg: amd.com
X-MS-Exchange-CrossTenant-OriginalArrivalTime: 22 Apr 2026 13:23:01.9565
 (UTC)
X-MS-Exchange-CrossTenant-Network-Message-Id: b36bd5aa-f267-46cb-1763-08dea072478a
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:
	CH1PEPF0000AD79.namprd04.prod.outlook.com
X-MS-Exchange-CrossTenant-AuthAs: Anonymous
X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem
X-MS-Exchange-Transport-CrossTenantHeadersStamped: MN2PR12MB4223
X-purgate-ID: tlsNG-ebf023/1776864187-32C773FF-6BC6489F/0/0
X-purgate-type: clean
X-purgate-size: 343

On 2026-04-21 03:15, Juergen Gross wrote:
> create_node() is called only for issued xenstore commands. This means
> that the "conn" parameter is never NULL.
> 
> Remove checking whether "conn" is not NULL.
> 
> Coverity ID: 1690859
> Signed-off-by: Juergen Gross <jgross@suse.com>

Reviewed-by: Jason Andryuk <jason.andryuk@amd.com>


From xen-devel-bounces@lists.xenproject.org Wed Apr 22 13:23:21 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 22 Apr 2026 13:23:21 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1290539.1570108 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wFXY0-0000MS-GW; Wed, 22 Apr 2026 13:23:20 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1290539.1570108; Wed, 22 Apr 2026 13:23: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 1wFXY0-0000MJ-Dc; Wed, 22 Apr 2026 13:23:20 +0000
Received: by outflank-mailman (input) for mailman id 1290539;
 Wed, 22 Apr 2026 13:23:19 +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 1wFXXz-0000Lf-1S
 for xen-devel@lists.xenproject.org; Wed, 22 Apr 2026 13:23:19 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wFXXy-000j9P-Ea
 for xen-devel@lists.xenproject.org; Wed, 22 Apr 2026 15:23:18 +0200
Received: from [10.42.69.7] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <Jason.Andryuk@amd.com>)
 id 69e8cbc4-e002-0a2a0a5209dd-0a2a4507cfca-6
 for <xen-devel@lists.xenproject.org>; Wed, 22 Apr 2026 15:23:18 +0200
Received: from [40.107.209.13]
 (helo=PH8PR06CU001.outbound.protection.outlook.com)
 by tlsNG-ef75cf.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.1)
 (envelope-from <Jason.Andryuk@amd.com>)
 id 69e8cbc4-229c-0a2a45070019-286bd10db11b-3
 for <xen-devel@lists.xenproject.org>; Wed, 22 Apr 2026 15:23:17 +0200
Received: from CH0PR03CA0312.namprd03.prod.outlook.com (2603:10b6:610:118::21)
 by DS0PR12MB7728.namprd12.prod.outlook.com (2603:10b6:8:13a::10) with
 Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9846.20; Wed, 22 Apr
 2026 13:23:09 +0000
Received: from CH1PEPF0000AD79.namprd04.prod.outlook.com
 (2603:10b6:610:118:cafe::a9) by CH0PR03CA0312.outlook.office365.com
 (2603:10b6:610:118::21) with Microsoft SMTP Server (version=TLS1_3,
 cipher=TLS_AES_256_GCM_SHA384) id 15.20.9791.48 via Frontend Transport; Wed,
 22 Apr 2026 13:23:09 +0000
Received: from satlexmb07.amd.com (165.204.84.17) by
 CH1PEPF0000AD79.mail.protection.outlook.com (10.167.244.57) with Microsoft
 SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id
 15.20.9846.18 via Frontend Transport; Wed, 22 Apr 2026 13:23:09 +0000
Received: from SATLEXMB04.amd.com (10.181.40.145) by satlexmb07.amd.com
 (10.181.42.216) with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.2.2562.17; Wed, 22 Apr
 2026 08:23:06 -0500
Received: from satlexmb07.amd.com (10.181.42.216) by SATLEXMB04.amd.com
 (10.181.40.145) with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2507.39; Wed, 22 Apr
 2026 08:23:06 -0500
Received: from [172.29.169.138] (10.180.168.240) by satlexmb07.amd.com
 (10.181.42.216) with Microsoft SMTP Server id 15.2.2562.17 via Frontend
 Transport; Wed, 22 Apr 2026 08:23:06 -0500
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@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=ExGahnoJLFOJ94rK7s+RNdz3r5jIVKYQVNO/uxLvb+Y9KtlZIMbwd4nZvRJVsJ19whRGSxZkxYCpPL5f6UHKG3b1uKyKFYLTN1k1DJZn2Gac3LnmF4cS6WwrAt8TKkbnA3808itDdWjFVowj/2njk703R9g+ZQcuMoS/+q2tlD2dZhFrkRYHiJq9U0pzgK8H8lAvnzuHbO3lFJLXYiETibMyLHw5xYJp/2T8Je9mc7NxlzZ62S69DsBQ+rQjJRMVb8PJqotvFhTIbA1FMgM5UdJ5oE9qk2jaou+iuNwjCllXgOn6wn8XOB2ARwFcPlr/FsiP0KZTCxmGHaSmQOUfvg==
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com;
 s=arcselector10001;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1;
 bh=3umMdhVkgCNqepYjY15vJLuZCYc113+SuafNa6V7Aq4=;
 b=AWsx3LLP9ktW1ACTNSjt3IgRMALtRJ0BXh/Rj0DBksR9G9FqqR6meeK6FNiwvXb6X6/E+yKaO+rnDJjKVHKv30UQJ9n/uV5FNuZNCrzi+iOFmOjHsd/1ViJj5O4rCLuxKamv0/d4gzttYbfNlWZsqrONcN4stU3xGoduMKV9pjSxHeRSrSjAUi/GE/EB9eSJsmICYbOgtw8dVC0ZbHVSIu/D+ZWGWhP+DB2mBna7S1xUzKaSekkeoM67GHleX9PavhZeyYv+rfMPzgrU9wVi2/567FxPaZ7AuNFRT7H2IzSGT8snmSoyvEXV9mwiZpub5kUq1I4jgogd7pIQJrcKYQ==
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=3umMdhVkgCNqepYjY15vJLuZCYc113+SuafNa6V7Aq4=;
 b=MpNXEdLWYdI24jfqSqhSQLUemaoF58QI5hqYbT0ilNkEMwojOASpHPBIUZ2fVTEyuclIPg3XglvZNzxPN73fMKsWiejhGeM4RIZ4iXG77NxixtMxcbmEaaDYCLGl/HOpaRmadD0pM/HaoSAZUSmlo33zYgj5MLKun1frg5FGqMg=
X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 165.204.84.17)
 smtp.mailfrom=amd.com; dkim=none (message not signed)
 header.d=none;dmarc=pass action=none header.from=amd.com;
Received-SPF: Pass (protection.outlook.com: domain of amd.com designates
 165.204.84.17 as permitted sender) receiver=protection.outlook.com;
 client-ip=165.204.84.17; helo=satlexmb07.amd.com; pr=C
Message-ID: <bb57b532-20a2-45c8-9d2c-e33705c6bc2c@amd.com>
Date: Wed, 22 Apr 2026 09:23:05 -0400
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH] x86/HVM: drop dead code from HVM_PARAM_IDENT_PT setting
To: Jan Beulich <jbeulich@suse.com>, "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.pau@citrix.com>, Teddy Astie
	<teddy.astie@vates.tech>
References: <a84daa8c-8481-40cb-9150-956ab5dc56fb@suse.com>
Content-Language: en-US
From: Jason Andryuk <jason.andryuk@amd.com>
In-Reply-To: <a84daa8c-8481-40cb-9150-956ab5dc56fb@suse.com>
Content-Type: text/plain; charset="UTF-8"; format=flowed
Content-Transfer-Encoding: 7bit
Received-SPF: None (SATLEXMB04.amd.com: jason.andryuk@amd.com does not
 designate permitted sender hosts)
X-EOPAttributedMessage: 0
X-MS-PublicTrafficType: Email
X-MS-TrafficTypeDiagnostic: CH1PEPF0000AD79:EE_|DS0PR12MB7728:EE_
X-MS-Office365-Filtering-Correlation-Id: 99e10c39-b783-429a-3d47-08dea0724c11
X-MS-Exchange-SenderADCheck: 1
X-MS-Exchange-AntiSpam-Relay: 0
X-Microsoft-Antispam:
	BCL:0;ARA:13230040|36860700016|1800799024|376014|82310400026|22082099003|18002099003|56012099003;
X-Microsoft-Antispam-Message-Info:
	G77raTWr9w7hlejt4qUKap/MDJ9Y8OGA0sAUgjCoiSXUc2S3xABh0qIKUmIaX/lvtGV84KwiP5r7uEFuFMB/pwRz1LCJxq7fXz32Ai6Qs+oTmid/59C/yzV5IZzUfkoTiP/LErGpLOgj62PDHKkbqwj7n05fdIm2/aqK8vvO3DVhT7okvO+pvHrAM0QPVD61g01ZTkVsoUOQNAQLinASXHReuOGfFtteA/bAFEI+tjtbilB1VADJX9S9xeJo9U/k2pQaE6gRGsldPYq8MxSc5NbTBTHsccdjtEPXjUKP6XeNyYIxYJBcM9yZmz+eCvbylnX9AazBERMwUlUeEpZMTy43rwoejEM9HcO1vRjc7jvvRBtETGhhMeybGbfeKy5i0zAJiayo9Q4X7JnvYBkHWjyMC0US0rzLBOM2K1XbEPIOwjE5ZpH1NVYVm3fXXkVgxGaobFa9g59K6/lJhEa1Zct/ynHwvFJM+LdyI7v1kBUGbq7yFyHUXp5wqUUJsNVzbfQH5ba+b3FNa29sQ2Jj0AFKqcea7cE3qrBl2kP8WvpbpPmK+Q85VUYEZA8KHIyBe/sveIp+H4geLC2yirS/3wDTFgkQ2EX/61NqrS1GwaA5ACHkqI7gAAc+3XJRMZvmkT8w2SkSNn1ENKm5l7Sw7SBUfDGZij2Whco7MdOQgk6kGxg/ewU6M44XSgX1SdHMdTmIgHQGtllRnuFMMvfVKBtAjqkAIleQL/Go4YOcdMalRwnCnx9uKka/54tYFIfgM+FiA/45OaIuFqATZ62i8Q==
X-Forefront-Antispam-Report:
	CIP:165.204.84.17;CTRY:US;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:satlexmb07.amd.com;PTR:InfoDomainNonexistent;CAT:NONE;SFS:(13230040)(36860700016)(1800799024)(376014)(82310400026)(22082099003)(18002099003)(56012099003);DIR:OUT;SFP:1101;
X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1
X-MS-Exchange-AntiSpam-MessageData-0:
	r4qhSdTEAXwFz4+5/NqLgL6WfXmIeYZn5YW6ZYszo+hTPyLMcqw4f7zwCbu8sAJDgXxdZQAS5zFXT7kZY9BHfl2OY1ER/MEtgOQ1+nRZtLY2dXjVaYfs90eUoh2J11sogZKEFJR0OpQmMp6Hvp/7ONASyjgNGi8o+HC9XyMIqI0bwB++9tnBd9//YGDCdbQVbsra7UlW01RN5BPUeY7c0xwFLIFY5Vg3XKAgStfevdmOh1g7lxVDW5n8mlNA6UOhiAOkr0Msl/i6vnlXLkpIpNTByw40ZTWxnKPUHVuNYYhf7YHxVqsDaRlqi1HOSOzfCftKGvcmKGCSWdpru5eD5ZZzp7I71gZpXgfMSiTX5OWa7TgSRcvI2RXPcDSG27WycUM+nQYrlmjggl8aDPWyYPtszG279K7WEJI4+eGMYyI7InynfHB88cCrkIEwkG0J
X-OriginatorOrg: amd.com
X-MS-Exchange-CrossTenant-OriginalArrivalTime: 22 Apr 2026 13:23:09.5556
 (UTC)
X-MS-Exchange-CrossTenant-Network-Message-Id: 99e10c39-b783-429a-3d47-08dea0724c11
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:
	CH1PEPF0000AD79.namprd04.prod.outlook.com
X-MS-Exchange-CrossTenant-AuthAs: Anonymous
X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem
X-MS-Exchange-Transport-CrossTenantHeadersStamped: DS0PR12MB7728
X-purgate-ID: tlsNG-ef75cf/1776864198-ADD6FC48-BE901E8C/0/0
X-purgate-type: clean
X-purgate-size: 331

On 2026-04-22 08:52, Jan Beulich wrote:
> The setting of d->arch.hvm.params[] will uniformly happen at the bottom of
> hvm_set_param(), hence as per Misra's classification redundantly doing so
> earlier is "dead code".
> 
> Signed-off-by: Jan Beulich <jbeulich@suse.com>

Reviewed-by: Jason Andryuk <jason.andryuk@amd.com>


From xen-devel-bounces@lists.xenproject.org Wed Apr 22 13:23:51 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 22 Apr 2026 13:23:51 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1290553.1570118 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wFXYU-0000zd-S7; Wed, 22 Apr 2026 13:23:50 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1290553.1570118; Wed, 22 Apr 2026 13:23: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 1wFXYU-0000zT-OZ; Wed, 22 Apr 2026 13:23:50 +0000
Received: by outflank-mailman (input) for mailman id 1290553;
 Wed, 22 Apr 2026 13:23:49 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <olekstysh@gmail.com>) id 1wFXYS-0000z2-Uo
 for xen-devel@lists.xenproject.org; Wed, 22 Apr 2026 13:23:49 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wFXYS-00EvsZ-Ba
 for xen-devel@lists.xenproject.org; Wed, 22 Apr 2026 15:23:48 +0200
Received: from [10.42.69.1] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <olekstysh@gmail.com>)
 id 69e8cbd9-bab6-0a2a0a5309dd-0a2a4501a3da-28
 for <xen-devel@lists.xenproject.org>; Wed, 22 Apr 2026 15:23:48 +0200
Received: from [209.85.128.52] (helo=mail-wm1-f52.google.com)
 by tlsNG-d62444.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.1)
 (envelope-from <olekstysh@gmail.com>)
 id 69e8cbe4-c1f2-0a2a45010019-d1558034e8e5-3
 for <xen-devel@lists.xenproject.org>; Wed, 22 Apr 2026 15:23:48 +0200
Received: by mail-wm1-f52.google.com with SMTP id
 5b1f17b1804b1-488ff90d6c7so43640625e9.2
 for <xen-devel@lists.xenproject.org>; Wed, 22 Apr 2026 06:23:48 -0700 (PDT)
Received: from [192.168.0.112] ([91.123.151.42])
 by smtp.gmail.com with ESMTPSA id
 5b1f17b1804b1-48919f54572sm100493985e9.26.2026.04.22.06.23.46
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Wed, 22 Apr 2026 06:23:46 -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=20251104 header.d=gmail.com header.i="@gmail.com" header.h="Content-Transfer-Encoding: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=20251104; t=1776864228; x=1777469028; darn=lists.xenproject.org;
        h=content-transfer-encoding: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;
        bh=0CSJXqi+NNpnhRUP92imoxfIAnz+2xe96byWgVzB3gA=;
        b=pPzt/zXLeVyChbIhLNz1sShHQSrOuyIJuVxmbpfn5E49/dn9fNtNYidC/P5JKIfqTH
         nmt4C4nzFO5bjaxA0Xqw5b/mUtYrpVHI4lCGOrZL1O9yjLEPvWISNeIQjQ1tHBz9Bfbg
         W9RJSJbXW3LOXN1lrHGKr4AmEt5Hg/+bx3IEhk+dUnVo0blZWSSvZ2/emFlA/ejbLV46
         XlgG+5xtvc3aqD+4xHY3xwZzI+ut3EwaEJFob46z2CWkYPrSq81j3HvMH9V/aWt7ZaYF
         RCJhnnPQPyFFl53KWspt2DOgOQlP82x/n9d30dV8RwlqurOspeqe779DNvekQIn8dici
         GTRA==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20251104; t=1776864228; x=1777469028;
        h=content-transfer-encoding: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;
        bh=0CSJXqi+NNpnhRUP92imoxfIAnz+2xe96byWgVzB3gA=;
        b=qGTZtvwpyiBXonrzVEd2xDMS6+B9/c9r1NEnGy0VuFtrNGD1CXJutDITJhvL4E3txC
         lqldhp+34+lsJ9aQGTA9641kClsZXF0l33dB2HflGiD2yUrmWT8B23s/ppEpMccphgUi
         XG1kJ1qpGbN6ikvZ8WFKOI+v4oLQZITexfNunHF18D+7bbn69crX22Ouy3H8axx0Pt/q
         N+ct3kq3oZsTEZpxPIWIqBgtsXXezTWY8fkjztBOiQ2yn1AYqaOT8EfESVLHzq2A6VTy
         K52Vg1DL77/a7ny70HtVg9s/eQB/5iV0SAt4Ob6gxKYJgwqjUJrelWoHXJ2PDdUafOpr
         4mMw==
X-Forwarded-Encrypted: i=1; AFNElJ/fiGlRwTruF2WcyqEQ1VW7hCIyr5Tw0F6CFRsmTonGvf5r7Qn1z/PXs7fBpEqvXHgWatkvE945zLo=@lists.xenproject.org
X-Gm-Message-State: AOJu0YxZ/H5Cw9db5l7lVN1AmuomvBFAS2XnPQn6ZwY7Wy9pLu4UoPvy
	GdvuInE0AFgOH4id+qwxXS+j6VY7RJcWqCWv4q2cpRNMSe92VxO7oQ8O
X-Gm-Gg: AeBDievGgD3qJbN2aR/NrjcScKNRDiFDkEPjrBCDMXSNvj15OpnR/62d3s6wbuM4rcS
	0uy5UKU4PJAt0KY9rw/ArXlDbdcIlzIivxmG43KJniVW2b9tf1oT5QQrnvluLAXUZKOwyWXBpV/
	TD5GSMUsgZK5izT7L2MRd6HlcuMgRy3eCJ6vSS6E3Mtp/+V1HGMLzDLRdKtXaYmv9YpPVohHZx2
	3q0/mZlt7bYKslMG0E90er78qeEvaamemT7AwJH7CwLPOzBgHdeXSlvv+9dIiAGZEYcQQw7Oj1g
	KHxmDgmyikEroEgGgJ5B51Ix3xnxI3CfM7qy5gVS1d9e0ohWMnZ1/R7DUnCTy01BkLTuJoc86aq
	FA1pX7BuOTi4ClkaskCbRAUOQJtB8+tfLi4LGRTyt1wjM4VfgurNKj3hAJ4Iy8gEIy+kCzfwCi3
	ZlhlEdmVLIpxCroaiTZMl88gfOG1kfwoUhsbHYJqypZZfu6Jw=
X-Received: by 2002:a05:600c:4f0c:b0:489:1c1f:35e6 with SMTP id 5b1f17b1804b1-4891c1f38c8mr203621665e9.6.1776864227400;
        Wed, 22 Apr 2026 06:23:47 -0700 (PDT)
Message-ID: <f28e9fa5-66fb-4c80-b616-2a9b3226d8be@gmail.com>
Date: Wed, 22 Apr 2026 16:23:45 +0300
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [RFC PATCH 2/2] plat/rcar: Add region id support for PCI
To: Mykyta Poturai <Mykyta_Poturai@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>
References: <cover.1776756291.git.mykyta_poturai@epam.com>
 <ad5caa92e36b0e0f104a14b46396037505080f4f.1776756291.git.mykyta_poturai@epam.com>
Content-Language: en-US
From: Oleksandr Tyshchenko <olekstysh@gmail.com>
In-Reply-To: <ad5caa92e36b0e0f104a14b46396037505080f4f.1776756291.git.mykyta_poturai@epam.com>
Content-Type: text/plain; charset=UTF-8; format=flowed
Content-Transfer-Encoding: 8bit
X-purgate-ID: tlsNG-d62444/1776864228-BFE7BFF4-D12484CF/0/0
X-purgate-type: clean
X-purgate-size: 5774



On 4/21/26 10:57, Mykyta Poturai wrote:

Hello Mykyta

> With Region ID enabled, all CPU memory accesses need to have rgid bits
> set in the physical address. This creates a problem for PCI BAR
> accesses, as it would require all BARs to be 64bit. Implement fixup_bar
> callback to add rgid bits to the address before mapping it to the
> guests.

For context. When Region ID support is enabled, the RGID value is 
encoded in the upper bits of physical addresses for both RAM and device 
MMIO in host device tree. From Xen's perspective, these are just regular 
physical addresses, and ideally Xen should not need to be RGID-aware at 
all. But I understand what this series is trying to solve.

It is worth mentioning that when Region ID support is enabled, there 
will be no 32-bit addresses in the host device tree anymore, since 
encoding the RGID effectively moves every address beyond the 4GB 
boundary (unless the RGID is 0). This might break any code in Xen that 
relies on 32-bit address space for some reason, e.g. 
HOST_ITS_WORKAROUND_32BIT_ADDR which requires 32-bit addresses for 
in-memory data structures (refer gicv3_its_enable_quirk_gen4()).


> 
> Add Kconfig options to enable region id support and set the rgid value
> and physical address space size.
> 
> Signed-off-by: Mykyta Poturai <mykyta_poturai@epam.com>
> ---
>   xen/arch/arm/pci/pci-host-rcar4.c | 15 +++++++++++++++
>   xen/arch/arm/platforms/Kconfig    | 21 +++++++++++++++++++++
>   2 files changed, 36 insertions(+)
> 
> diff --git a/xen/arch/arm/pci/pci-host-rcar4.c b/xen/arch/arm/pci/pci-host-rcar4.c
> index e1e8eb0ee1..50400c04c4 100644
> --- a/xen/arch/arm/pci/pci-host-rcar4.c
> +++ b/xen/arch/arm/pci/pci-host-rcar4.c
> @@ -43,6 +43,12 @@ struct rcar4_pcie_priv {
>       DECLARE_BITMAP(osid_regs, NUM_OSID_REGS);
>   };
>   
> +#define ULL(X) _AC(X, ULL)
> +#define MADDR_RGID(a)    (ULL(a) << CONFIG_RCAR_PA_BITS)
> +#define MADDR_PA_MASK    ((1ULL << CONFIG_RCAR_PA_BITS) - 1)

NIT: MADDR_PA_MASK is defined but never used ...

> +
> +#define MADDR_ENCODE_RGID(a)    (MADDR_RGID(CONFIG_RCAR_RGID) | (a))
> +
>   /*
>    * PCI host bridges often have different ways to access the root and child
>    * bus config spaces:
> @@ -61,6 +67,14 @@ static int __init rcar4_child_cfg_reg_index(struct dt_device_node *np)
>       return dt_property_match_string(np, "reg-names", "config");
>   }
>   
> +static void rcar4_pcie_fixup_bar(struct pci_host_bridge *bridge,
> +                                 unsigned int bar_num,
> +                                 paddr_t *addr)
> +{
> +    if ( IS_ENABLED(CONFIG_RCAR_REGION_ID_SUPPORT) )
> +        *addr = MADDR_ENCODE_RGID(*addr);
> +}
> +
>   /* ECAM ops */
>   static const struct pci_ecam_ops rcar4_pcie_ops = {
>       .bus_shift  = 20,
> @@ -71,6 +85,7 @@ static const struct pci_ecam_ops rcar4_pcie_ops = {
>           .write                  = pci_generic_config_write,
>           .need_p2m_hwdom_mapping = pci_ecam_need_p2m_hwdom_mapping,
>           .init_bus_range         = pci_generic_init_bus_range,
> +        .fixup_bar              = rcar4_pcie_fixup_bar,
>       }
>   };
>   
> diff --git a/xen/arch/arm/platforms/Kconfig b/xen/arch/arm/platforms/Kconfig
> index 888d0b85d5..db096952c8 100644
> --- a/xen/arch/arm/platforms/Kconfig
> +++ b/xen/arch/arm/platforms/Kconfig
> @@ -64,6 +64,27 @@ config NO_PLAT
>   
>   endchoice
>   
> +menu "RCar Region ID Support"
> +    visible if RCAR4
> +
> +config RCAR_REGION_ID_SUPPORT
> +	bool "Renesas Region ID support for R-Car Gen4 platforms" if EXPERT
> +	depends on RCAR4
> +	help
> +	  Enable experimental Region ID support for R-Car Gen4 platforms
> +
> +config RCAR_RGID
> +	int "Region ID encoded in physical address"
> +	depends on RCAR_REGION_ID_SUPPORT
> +	default 0
> +
> +config RCAR_PA_BITS
> +	int "Physical address space size"
> +	depends on RCAR_REGION_ID_SUPPORT
> +	default 36

Options RCAR_RGID and RCAR_PA_BITS lack range constraints. A 
misconfigured options might cause undefined shift behavior at compile 
time. However, I see a valid request in a separate email to consider 
using a firmware table to pass these values, so just ignore this comment.

*****

I was wondering whether the RGID could be extracted at runtime from an
address that already carries it. Do addresses in the host device tree 
(e.g., device MMIO ranges, host bridge windows, etc) already contain 
RGID bits? If so, then in rcar4_pcie_fixup_bar() you could obtain the 
RGID from the bridge instance that is already passed as a parameter.

Something like below:

#define MADDR_GET_RGID(addr)  ((addr) >> CONFIG_RCAR_PA_BITS)

paddr_t rgid = 
MADDR_GET_RGID(bridge->some_hw_addr_as_it_is_specified_in_dt);
*addr = (rgid << CONFIG_RCAR_PA_BITS) | (*addr & MADDR_PA_MASK);

This would eliminate CONFIG_RCAR_RGID entirely by deducing it from
existing platform data rather than requiring it to be passed explicitly
via the device tree.

As for CONFIG_RCAR_PA_BITS, I think it could remain as-is since it is
constant across an SoC generation, unless I am mistaken. As far as I am 
aware, on Gen4 the RGID occupies 4 bits (0–15) starting at bit 36, and 
on Gen5 it occupies 5 bits (0–31) starting at bit 43.
Since Xen can identify the hardware it is running on (thanks to the 
compatible string), the appropriate #define-s could be applied.

Would the above approach work, or is it better to pass all these values 
explicitly?

Please note, I am not 100% sure whether this is the right and reliable 
approach, but it should be considered.



> +
> +endmenu
> +
>   config ALL64_PLAT
>   	bool
>   	default (ALL_PLAT && ARM_64)



From xen-devel-bounces@lists.xenproject.org Wed Apr 22 13:30:06 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 22 Apr 2026 13:30:06 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1290565.1570126 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wFXeU-0002Zp-Fe; Wed, 22 Apr 2026 13:30:02 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1290565.1570126; Wed, 22 Apr 2026 13:30: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 1wFXeU-0002ZE-Cd; Wed, 22 Apr 2026 13:30:02 +0000
Received: by outflank-mailman (input) for mailman id 1290565;
 Wed, 22 Apr 2026 13:30:01 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92) id 1wFXeS-0002P1-UD
 for xen-devel@lists.xenproject.org; Wed, 22 Apr 2026 13:30:01 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wFXeS-00BEmx-An
 for xen-devel@lists.xenproject.org; Wed, 22 Apr 2026 15:30:00 +0200
Received: from [10.42.69.9] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <oleksii.kurochko@gmail.com>)
 id 69e8cd43-2eae-0a2a0a5409dd-0a2a4509e23a-32
 for <xen-devel@lists.xenproject.org>; Wed, 22 Apr 2026 15:30:00 +0200
Received: from [209.85.208.178] (helo=mail-lj1-f178.google.com)
 by tlsNG-bad1c0.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.1)
 (envelope-from <oleksii.kurochko@gmail.com>)
 id 69e8cd57-2497-0a2a45090019-d155d0b2a8ef-3
 for <xen-devel@lists.xenproject.org>; Wed, 22 Apr 2026 15:30:00 +0200
Received: by mail-lj1-f178.google.com with SMTP id
 38308e7fff4ca-38dd9f0fdc6so67959481fa.0
 for <xen-devel@lists.xenproject.org>; Wed, 22 Apr 2026 06:30:00 -0700 (PDT)
Received: from [192.168.1.6] (user-109-243-69-121.play-internet.pl.
 [109.243.69.121]) by smtp.gmail.com with ESMTPSA id
 2adb3069b0e04-5a4187e7a3fsm4393165e87.59.2026.04.22.06.29.58
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Wed, 22 Apr 2026 06:29:58 -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=20251104 header.d=gmail.com header.i="@gmail.com" header.h="Content-Transfer-Encoding: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=20251104; t=1776864599; x=1777469399; darn=lists.xenproject.org;
        h=content-transfer-encoding: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;
        bh=H4KxM0NFypP5msvC8Vz7WTim2hOA+uexqxg991xDo9I=;
        b=IXcbO2cMWgIHPucxbE/flhB1u+Yx8w3OywQxp/06AqIZEZ1e2yVve5q3uYpa640nKb
         BXOCApKVcIVKSxPfYo29L57BzNYPC8jQOQYzugDP1dmuG8LZ+rjVx6vD1RS6Cl7ueAUD
         OTwTzzTpCx1SiK45x9rNQzeyJ5IBCzzLaWJet39VA3vbHo5yAFA9SHgWtGCCOz+jV8iI
         5aKbFpOV71+mei6hrs1Q0Kv7Eq32r5PyHFEBLSHZ8vfQh4t83qGkp0ZAbRhvL5YXSjUF
         IbvEPxggHqywugsiyXDs89h4hXwkEXRH1KFTq7TGokuqv9CsmpEoZ6j0fO+gFrL6yzi2
         rxEw==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20251104; t=1776864599; x=1777469399;
        h=content-transfer-encoding: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;
        bh=H4KxM0NFypP5msvC8Vz7WTim2hOA+uexqxg991xDo9I=;
        b=obl1B3WyvRLaGKs4yuZSZ17R5mT+5mVRNHPyPLO16kyMsHCHigv70lWMEptDfDOdaq
         xTZKM0lBnofBz4+O2l82KyGA+36HqULbS6tHNc035FK2qQTHoY5HLGoYhDdkhJxKYaHa
         IVUDWERD2YF+XlAXR7U8f+RM2G2jj5aV2ac3596338L3NXddQNcZyfG8XuDjRqrTZOJ0
         giLx3v5UDCc5uRzqIlTf0TbdIdBuDmG2x/QznDpteNcxYegwnSzdlBUFFDRLHsZCOMgz
         CTxlsUWfk1cj4scIER27ZIsaCqzWeGaA5wnF3iDlYZ+/Kf/u0JuhCL2FeQU3W9EdvuIs
         ddWg==
X-Forwarded-Encrypted: i=1; AFNElJ9bYT+6HPc5Oz+5Qcmvz2ih4cAfNI2HpYC89yzz4CwiAj4JDjrDlI7DbM47gJ9ryViXsqFwQneOzVE=@lists.xenproject.org
X-Gm-Message-State: AOJu0YwYQujTf/5FS8AMO4O+mehjtmDlFLiCXjutiUpYP+JJGv1jfhef
	ayzgYAqTO7WOBjQzm4HzJQqCNIkRhW1uAnxeZaGhBtCnp971uyBmhkWV
X-Gm-Gg: AeBDietLWFIylQoMAig5GOwHJMeD5ra5vL/VJuCKSfAlKi9ORmVJCjcIlvn59bRGvNC
	vQKHMKN9aQoSXwcsPlYu9ZfgUry7CZeITiqQVkzl4W/KWVFYY3Ww6mA6PxKlnvA27itRqUJKSvn
	LXBWby70hq3gPVOr00W5R8jgT0bsn7JeOfrF3oIumzi1PftHw83KiV4qvj+BaINktBKEUh29/8O
	l46vrKCrtAAUoyc/8IfH+hmoBK8OWRwXjyJUgejFWiXSWE1PespWmUS9je1fQ7MIRKapsSsqhVP
	CfjChP3KLqnAbJcgd1hoj3onx5MDe2SNYeJSblk4K/eenBEBZ64WgxWLJEbcgtjJDsN0XxXZq4X
	iCBimvAVgNp4YZRA7LUWiSwxhVInP7eBN21dT5ryVWZB4eV2DujVvX3LpGGUS46XdF74+d/300Y
	uigGVoBKoHqmq/96ck9qDju6mxJL6KwYqsdINqj910NkRVl31id9FYs2OlEuq7ZFDX1m5iqWC7R
	ASIQQYcRawS3w==
X-Received: by 2002:a05:6512:15a8:b0:5a1:5994:2773 with SMTP id 2adb3069b0e04-5a41729a1edmr6375683e87.14.1776864599087;
        Wed, 22 Apr 2026 06:29:59 -0700 (PDT)
Message-ID: <b2e23765-82ca-4a2a-8501-8990f1662a88@gmail.com>
Date: Wed, 22 Apr 2026 15:29:57 +0200
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH v2 1/3] xen/dom0less: introduce next_phandle in struct
 kernel_info
To: "Orzel, Michal" <michal.orzel@amd.com>, xen-devel@lists.xenproject.org
Cc: Stefano Stabellini <sstabellini@kernel.org>, Julien Grall
 <julien@xen.org>, Bertrand Marquis <bertrand.marquis@arm.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.pau@citrix.com>
References: <cover.1776780944.git.oleksii.kurochko@gmail.com>
 <4a9d79a9ef2bf25e904c9f49ddef7d5a3f3a4ac2.1776780944.git.oleksii.kurochko@gmail.com>
 <6c02e12a-e091-4416-980b-5a7a24ba71d8@amd.com>
Content-Language: en-US
From: Oleksii Kurochko <oleksii.kurochko@gmail.com>
In-Reply-To: <6c02e12a-e091-4416-980b-5a7a24ba71d8@amd.com>
Content-Type: text/plain; charset=UTF-8; format=flowed
Content-Transfer-Encoding: 7bit
X-purgate-ID: tlsNG-bad1c0/1776864600-93F7EA53-2DC10C7A/10/73395122804
X-purgate-type: spam
X-purgate-size: 5327



On 4/22/26 1:42 PM, Orzel, Michal wrote:
> 
> 
> On 22/04/2026 11:44, Oleksii Kurochko wrote:
>> There are cases where it is necessary to know the next available phandle
>> number in order to generate phandles for guest device nodes.
>>
>> When a partial FDT (pfdt) is provided, special care is needed during
>> initialization of next_phandle, as the pfdt may already contain a dummy
>> interrupt controller node with a phandle assigned to it. next_phandle
>> must therefore be initialized to one past the highest phandle already
>> present in the pfdt, to avoid collisions.
>>
>> Since next_phandle may be needed for the very first guest node generated,
>> domain_handle_dtb_boot_module() is moved earlier in prepare_dtb_domU().
>> The new call site also aligns better with the existing comment stating
>> that domain_handle_dtb_boot_module() must be called before the rest of
>> the device tree is generated.
>>
>> Introduce alloc_phandle() to ensure that phandles allocated for guest
>> nodes do not overlap the Xen-reserved phandle range.  This helper will
>> be used by subsequent patches (by RISC-V at the moment).
>>
>> Signed-off-by: Oleksii Kurochko <oleksii.kurochko@gmail.com>
>> ---
>> Here is an example of generated guest DTB:
>>      cpus {
>>      ...
>>        cpu@0 {
>>      ...
>>          interrupt-controller {
>>            compatible = "riscv,cpu-intc";
>>            #interrupt-cells = <0x1>;
>>            interrupt-controller;
>>            phandle = <0xfdea>;
>>          };
>>        };
>>      };
>>
>>      /soc/imsics@28000000 {
>>
>>        interrupts-extended = <0xfdea 0x9 >;
>>
>>        phandle = <0xfdeb>;
>>      };
>>
>>      /soc/aplic@d000000 {
>>      ...
>>        msi-parent = <0xfdeb>;
>>        phandle = <0x1>;
>>      };
>>
>> Note that phandle is generated in this example not by get_next_free_phandle().
>>
>> For non RISC-V people, APLIC is an interrupt controller (something like GIC in
>> Arm), IMSIC it is interrupt controller which provides MSI and connects to
>> each CPU.
>>
>> [1] https://www.kernel.org/doc/Documentation/devicetree/bindings/interrupt-controller/riscv%2Ccpu-intc.txt
>> ---
>> Changes in v2:
>>   - s/free_phandle/next_phandle.
>>   - s/get_next_free_phandle/alloc_phandle.
>> ---
>>   xen/common/device-tree/dom0less-build.c | 44 ++++++++++++++++++-------
>>   xen/include/xen/fdt-domain-build.h      |  6 ++++
>>   xen/include/xen/fdt-kernel.h            |  3 ++
>>   3 files changed, 41 insertions(+), 12 deletions(-)
>>
>> diff --git a/xen/common/device-tree/dom0less-build.c b/xen/common/device-tree/dom0less-build.c
>> index 840d14419da2..ca3ac84a3ef3 100644
>> --- a/xen/common/device-tree/dom0less-build.c
>> +++ b/xen/common/device-tree/dom0less-build.c
>> @@ -389,6 +389,24 @@ static int __init domain_handle_dtb_boot_module(struct domain *d,
>>       if ( res < 0 )
>>           goto out;
>>   
>> +    /*
>> +     * Find the highest phandle in the partial FDT so next_phandle starts
>> +     * above it, avoiding collisions with pfdt's own phandle assignments.
>> +     */
>> +    res = fdt_generate_phandle(pfdt, &kinfo->next_phandle);
>> +    if ( res )
>> +    {
>> +        res = (res == -FDT_ERR_NOPHANDLES) ? -EOVERFLOW : -EINVAL;
>> +        goto out;
>> +    }
>> +
>> +    if ( kinfo->next_phandle >= GUEST_PHANDLE_GIC )
>> +    {
>> +        dprintk(XENLOG_ERR, "Phandle allocation overlaps Xen reserved range\n");
>> +        res = -EOVERFLOW;
>> +        goto out;
>> +    }
>> +
>>       for ( node_next = fdt_first_subnode(pfdt, 0);
>>             node_next > 0;
>>             node_next = fdt_next_subnode(pfdt, node_next) )
>> @@ -459,6 +477,8 @@ static int __init prepare_dtb_domU(struct domain *d, struct kernel_info *kinfo)
>>       BUILD_BUG_ON(DOMU_DTB_SIZE > SZ_2M);
>>   
>>       kinfo->phandle_intc = GUEST_PHANDLE_GIC;
>> +    kinfo->next_phandle = 1;
>> +    BUILD_BUG_ON(GUEST_PHANDLE_GIC == 1);
> I'm not sure that we need this. It does not seem to be useful. If you want to
> keep it though, I think you want to compare to next_phandle, not opencoding it's
> initial value.

Agree, alloc_phandle() will catch that. I will drop that.

>>   
>> +/* Return 0 (invalid phandle) if the Xen-reserved range has been reached */
>> +static inline uint32_t alloc_phandle(struct kernel_info *kinfo)
>> +{
>> +    return kinfo->next_phandle >= GUEST_PHANDLE_GIC ? 0 : kinfo->next_phandle++;
>> +}
>> +
>>   #endif /* __XEN_FDT_DOMAIN_BUILD_H__ */
>>   
>>   /*
>> diff --git a/xen/include/xen/fdt-kernel.h b/xen/include/xen/fdt-kernel.h
>> index aa977a50f4fc..438adfe3855b 100644
>> --- a/xen/include/xen/fdt-kernel.h
>> +++ b/xen/include/xen/fdt-kernel.h
>> @@ -44,6 +44,9 @@ struct kernel_info {
>>       /* Interrupt controller phandle */
>>       uint32_t phandle_intc;
>>   
>> +    /* Next free phandle available for assigning to guest device nodes */
> I would mention not to use this value directly but rather obtain from
> alloc_phandle. This value should only really be used by alloc_phandle.

     /*
      * Next free phandle for guest device nodes; do not access 
directly, use
      * alloc_phandle().
      */
     uint32_t next_phandle;

Thanks.

~ Oleksii



From xen-devel-bounces@lists.xenproject.org Wed Apr 22 13:38:21 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 22 Apr 2026 13:38:21 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1290575.1570136 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wFXmR-0004dl-6D; Wed, 22 Apr 2026 13:38:15 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1290575.1570136; Wed, 22 Apr 2026 13:38: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 1wFXmR-0004de-3L; Wed, 22 Apr 2026 13:38:15 +0000
Received: by outflank-mailman (input) for mailman id 1290575;
 Wed, 22 Apr 2026 13:38:13 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92) id 1wFXmO-0004dX-VQ
 for xen-devel@lists.xenproject.org; Wed, 22 Apr 2026 13:38:12 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wFXmO-000dtP-5W
 for xen-devel@lists.xenproject.org; Wed, 22 Apr 2026 15:38:12 +0200
Received: from [10.42.69.5] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <oleksii.kurochko@gmail.com>)
 id 69e8cf3f-e002-0a2a0a5209dd-0a2a4505c518-12
 for <xen-devel@lists.xenproject.org>; Wed, 22 Apr 2026 15:38:12 +0200
Received: from [209.85.208.174] (helo=mail-lj1-f174.google.com)
 by tlsNG-c201ff.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.1)
 (envelope-from <oleksii.kurochko@gmail.com>)
 id 69e8cf43-aaa8-0a2a45050019-d155d0aee531-3
 for <xen-devel@lists.xenproject.org>; Wed, 22 Apr 2026 15:38:11 +0200
Received: by mail-lj1-f174.google.com with SMTP id
 38308e7fff4ca-38ce8a5bc20so59390661fa.1
 for <xen-devel@lists.xenproject.org>; Wed, 22 Apr 2026 06:38:11 -0700 (PDT)
Received: from [192.168.1.6] (user-109-243-69-121.play-internet.pl.
 [109.243.69.121]) by smtp.gmail.com with ESMTPSA id
 38308e7fff4ca-38ecb5f652asm34587111fa.12.2026.04.22.06.38.10
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Wed, 22 Apr 2026 06:38:10 -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=20251104 header.d=gmail.com header.i="@gmail.com" header.h="Content-Transfer-Encoding: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=20251104; t=1776865091; x=1777469891; darn=lists.xenproject.org;
        h=content-transfer-encoding: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;
        bh=QC4eHEOEbVaYywNbf+ZVU97CJ3kZzG2ulmfLQUFsk+0=;
        b=Xrik2mbDk6tkpcdc+3DNx84vOjPxU2MTJYSJ4S4orLdTHX1SIqWSyEbWcHEZuZNuIz
         vTVEzxyhhWOKihrIpRwn6U0dQXRlq5EJE7bWLo1nCdKzlRw3m5GbcQw8TNOfUO8ScsJJ
         3TyOX9MAgQ0w0BUoJhfSeMtNwoIMq/4dOnJKevavbfbFI8dTebsUMb3lJQJyEUxYreUf
         KuFuvGEsy+ohTqbWSVgNYM/idZgQtqe/K/pWtzE9zc6vV3wnkPriy9J2JLFdgWnMRlwH
         42ODiLY8L+Cp5ugJTyj2poUcXs376HMPB7xBckhWtpVUX9r5OKWLYSbAwGCHQPyEjtp2
         3v2A==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20251104; t=1776865091; x=1777469891;
        h=content-transfer-encoding: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;
        bh=QC4eHEOEbVaYywNbf+ZVU97CJ3kZzG2ulmfLQUFsk+0=;
        b=aU6dw/3L6uqtv5n2fyn6395+n5KH6IglQkGX0XRKLNjfVPQSmgoIO6HZthV9puottd
         mQwt4sMZR3Aj6F9pUvcOrm+3yulrLMOqn4NP9CRWIc5FL9ytKlZ7F+jQ7yBitZpQDoCM
         P7j9Z9uq+xIn8BLAXQ4UrJ2qzq122wYIK543jNv2ygBP4S6BsH/dHFkmVkSauAHvFpQC
         QPgNzjni3l4bTYXFmrbxhNsy966bsZ9B7V/9DMydogXGKnQRHuud3xbvdceV2KVoO/PL
         yJjBRJgs46+AGuc5e+tAZupcBUxtnltftl9AI5/qJUKXiSFs750q0aDUGI26tPsAmWI+
         /ugg==
X-Forwarded-Encrypted: i=1; AFNElJ/HtKn5qx/EWQlnai9iExD3Sa94D34v2+sfO5IwtzWRO4KIaXdanblybFgJ9DK/GdyNG98FtM7B6L8=@lists.xenproject.org
X-Gm-Message-State: AOJu0YxXC2itjdfsoyW2uAmM4K/MY/qDApCG3dny+F+V//UZZlI2h4oB
	fU3xNbGObgL4jfFTQc7hx9qkg7q7oJ9gWqF8IWgznRwptxwxBg7uEVQI
X-Gm-Gg: AeBDiesOUSczF9H8+KkxQar6KoCc5QQhn28mpCK/Aeg4/E7OEJWadGxh6oXLbSWKi+i
	OvW8QzDQKE0Yr+Q1TbFylX1+TXoPkuHWKPGUojCcSxPuGrfS5XcFTgt8joGueTLvePXhgHng0zn
	viBS+gYQgSNr2wtkZlfy+H3qLvOiUtBL2jdHsxdJIzGbZByBaSJAUy5BXc4AWXyYlwvs69O3tau
	BUGGqeCyi5JDq1Gz55wmg7npAcJia2lr/sNNyPoze2Uop2dssVxrQ4XkjkB98GGlwmDR/FqQDsG
	Ll0KrOM/9kRJui2wQaHFWSeTnNAyWaJ4DKOlVClzCd+eARyicVohnx64pHM0OjbOrt9g96FuiED
	u34557hwpXk2VJnIWbf060cCJ0cW0n931knjTShfzOKRQnJLNltPzznTE7rnTdwc3Hjl1kLYA6T
	1hfZr0fnKVm/0CrtbhDb+KWxmgZX7OIusvEM4ACZ6WkvT+PQ2IB38VOdM0C74Sa6OlTvx3kbqAP
	QbOiuF7Cyl4JA==
X-Received: by 2002:a05:651c:421b:b0:38e:9e34:786e with SMTP id 38308e7fff4ca-38ec78103b6mr69334211fa.12.1776865090797;
        Wed, 22 Apr 2026 06:38:10 -0700 (PDT)
Message-ID: <d2070fa5-dce3-46e4-ac23-7d1956d0bc65@gmail.com>
Date: Wed, 22 Apr 2026 15:38:09 +0200
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH v2 3/3] xen: introduce CONFIG_HAS_DOMAIN_TYPE
To: Jan Beulich <jbeulich@suse.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.pau@citrix.com>,
 xen-devel@lists.xenproject.org
References: <cover.1776780944.git.oleksii.kurochko@gmail.com>
 <61c33c15d046110b5c99490f54191facf18068e1.1776780944.git.oleksii.kurochko@gmail.com>
 <f2ad01dc-0f8b-4514-b35f-24b254c9b2ee@suse.com>
Content-Language: en-US
From: Oleksii Kurochko <oleksii.kurochko@gmail.com>
In-Reply-To: <f2ad01dc-0f8b-4514-b35f-24b254c9b2ee@suse.com>
Content-Type: text/plain; charset=UTF-8; format=flowed
Content-Transfer-Encoding: 7bit
X-purgate-ID: tlsNG-c201ff/1776865092-E0FA2443-AB9B6437/10/73395122804
X-purgate-type: spam
X-purgate-size: 1531



On 4/22/26 12:37 PM, Jan Beulich wrote:
> On 22.04.2026 11:44, Oleksii Kurochko wrote:
>> --- a/xen/common/Kconfig
>> +++ b/xen/common/Kconfig
>> @@ -29,6 +29,9 @@ config DOM0LESS_BOOT
>>   config DOMAIN_BUILD_HELPERS
>>   	bool
>>   
>> +config HAS_DOMAIN_TYPE
>> +	bool
>> +
>>   config GRANT_TABLE
>>   	bool "Grant table support" if EXPERT
>>   	default y
> 
> Looks like I need to repeat my v1 comment: "Why here rather than where
> the bulk of the other HAS_* are?" They are (or at least are suppoosed to
> be) sorted, so that finding a particular entry (e.g. while checking for
> name clashes) is easy.

Sorry, old version of this patch. I put it through the other HAS_* in 
this file just after HAS_DOM0LESS.

> 
>> --- a/xen/include/xen/domain.h
>> +++ b/xen/include/xen/domain.h
>> @@ -13,6 +13,19 @@ struct guest_area {
>>       void *map;
>>   };
>>   
>> +#ifdef CONFIG_HAS_DOMAIN_TYPE
>> +enum __packed domain_type {
>> +    DOMAIN_32BIT,
>> +    DOMAIN_64BIT,
>> +};
>> +#define is_32bit_domain(d) ((d)->type == DOMAIN_32BIT)
>> +#define is_64bit_domain(d) ((d)->type == DOMAIN_64BIT)
>> +#elif !defined(CONFIG_64BIT)
>> +/* On 32-bit-only platforms all domains are 32-bit. */
> 
> Btw, while this may be true in practice right now, it is not given. A
> 32-bit hypervisor can in principle be capable of running 64-bit guests.

Agree that it could be.

Do you prefer to change this comment to "At the moment ... are expected 
to be 32-bit."?

Thanks.

~ Oleksii


From xen-devel-bounces@lists.xenproject.org Wed Apr 22 13:41:25 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 22 Apr 2026 13:41:25 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1290585.1570144 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wFXpR-00067k-Ii; Wed, 22 Apr 2026 13:41:21 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1290585.1570144; Wed, 22 Apr 2026 13:41: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 1wFXpR-00067d-GB; Wed, 22 Apr 2026 13:41:21 +0000
Received: by outflank-mailman (input) for mailman id 1290585;
 Wed, 22 Apr 2026 13:41:20 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <jbeulich@suse.com>) id 1wFXpQ-00067X-Jl
 for xen-devel@lists.xenproject.org; Wed, 22 Apr 2026 13:41:20 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wFXpP-003U76-Lo
 for xen-devel@lists.xenproject.org; Wed, 22 Apr 2026 15:41:19 +0200
Received: from [10.42.69.9] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <jbeulich@suse.com>)
 id 69e8cff5-2eae-0a2a0a5409dd-0a2a4509eb5c-46
 for <xen-devel@lists.xenproject.org>; Wed, 22 Apr 2026 15:41:19 +0200
Received: from [209.85.128.52] (helo=mail-wm1-f52.google.com)
 by tlsNG-bad1c0.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.1)
 (envelope-from <jbeulich@suse.com>)
 id 69e8cfff-2497-0a2a45090019-d1558034c8b8-3
 for <xen-devel@lists.xenproject.org>; Wed, 22 Apr 2026 15:41:19 +0200
Received: by mail-wm1-f52.google.com with SMTP id
 5b1f17b1804b1-4891e5b9c1fso34288515e9.2
 for <xen-devel@lists.xenproject.org>; Wed, 22 Apr 2026 06:41:19 -0700 (PDT)
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-488fc1c01cfsm468483285e9.10.2026.04.22.06.41.18
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Wed, 22 Apr 2026 06:41:18 -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=google header.d=suse.com header.i="@suse.com" header.h="Content-Transfer-Encoding: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=1776865279; x=1777470079; darn=lists.xenproject.org;
        h=content-transfer-encoding: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;
        bh=m0YyVE+2wesXUglYaRjkXixoVcbzQpUU6jfy/QdrwgA=;
        b=SUzDQv0UZrptLqVT/oRW3i9L1C7Q6TxhLB/qjP21IJVvaPYYiMMDDxZYUze9vv+6X8
         usknDS2RMsUYGYb6PqYGKTd1NwYfn1/LzthE31mTayJ3uaqEvQzWgoKKcOCrDQpdjvqx
         iZyRGDrs7QvoVECXykRoIAo2nXu6HnwvDYb7Mi5EORwM3aVMK9J5wiM9rGHjaiaNQWQE
         FDRmySWVCfgCbjlwg3n9W2WdbmFpFgsOARNlIux7mW6NNElTYu67naUjXN2xc3hHSnOp
         x9h1vQrNTCorfwPK6zYgak78TY4+Z4e0UzJDXfRuDQddFfyERbpOIEMla/NQCE67TZZk
         w8Ew==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20251104; t=1776865279; x=1777470079;
        h=content-transfer-encoding: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;
        bh=m0YyVE+2wesXUglYaRjkXixoVcbzQpUU6jfy/QdrwgA=;
        b=Xzwym9WUdRdnK44kaJPQl6HCT4MrgThgQ5GG4W43UaQPCrbpUL0FBKzwd7EAcBxsz5
         g4+OoQk/2bwn109fAT8PamdtFU5B1ax29tHp1CiFMzNxO4D/0x99iPqWyhjN5CfnxNxr
         rqYsPC4Ri5Kq/L7ocIYvXUVbNQjaw2psTHvRA9GAbs1GCsK2Rpw04ouN5sqgfbfxnQHb
         gZO5B71rJY/yPRVoriNfCERSIUZ/LVWAJ3QMz7s0vl3zM8ew64k1qjKi1RfY51e6K/gt
         9wXUWQfbKO5oYzU63HlrzTAhLK4SycKTMc1VMUJ57dNujuCChZNnXG8zW+plpL45F9HC
         zEdQ==
X-Forwarded-Encrypted: i=1; AFNElJ9qBGMG1nymnKHkBl96+bf1uypu1tZkkJnWdEsRqJVhuv2pmCktEOuErYWaD8uztzN3JWsKIucr9cw=@lists.xenproject.org
X-Gm-Message-State: AOJu0YxK8gbYv7dITYxKuWqWogAojJPdLOGV8FvBhGiuS1BVLVxG2Zxs
	ZFkvXIvnF55ZnhKJPmXBQ6EGsIZbmKklJQY9FtHJi6zQzC8Q3BBxQ/ddbnMdvylnOg==
X-Gm-Gg: AeBDievFjXDi8elwf2pTjBaBQXuV4QAcrjP/PEi/fkzSSVt69SMoFbiGJND0c+qBtT7
	m6Mm6TcqhJi4u7nS0IWoG4XbcyFvz/DOADiczJr+jtZjmrBMidfNxn1vG6qXk8Uv684s8gstUcI
	nS2eeM7zlRUzz6WmSiHsHiBNTO4ak4SOHZH1jloYU4fJKC8wLLZl43D9tYqobhA5ggvIrGQdwdU
	caYgvmEZz1yTnbvCGym3ZEpRpIw+1ro2WdLDSJUyQLp9vVK8QUOntInw5/Yhq2bWYjSUtuyI7A7
	GFA/Jl9bdluR5mpNY2qVTmZnKXvSS+f2BJoHLN/jS2N9xxxhNzWDQCFQ1ishxA1PZaWFhO09mlt
	T7BAZhzi95Jb5pg0LXecscdPHh/UfzO9EIT0dUVdzMVWWSYHYkIAY75EiKP4XNNHAy0ULsNvM70
	dkWAMDHx8/r5Gqu6i/7MOTgWuUB2QDDzMub4DB3hH1ctGnqX/39P2WaXd2MJMVqfpHSfk6ta2V2
	xYmrTFzZ2d8xMdW4u9HSsaAdA==
X-Received: by 2002:a05:600c:8b4b:b0:489:1ff1:74f4 with SMTP id 5b1f17b1804b1-4891ff17707mr149897055e9.4.1776865278927;
        Wed, 22 Apr 2026 06:41:18 -0700 (PDT)
Message-ID: <475e977a-a433-47a5-a91e-8a61405b923d@suse.com>
Date: Wed, 22 Apr 2026 15:41:17 +0200
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH] EFI: adjust cfg file buffer freeing
To: Bernhard Kaindl <bernhard.kaindl@citrix.com>,
 Stefano Stabellini <sstabellini@kernel.org>
Cc: Marek Marczykowski <marmarek@invisiblethingslab.com>,
 Daniel Smith <dpsmith@apertussolutions.com>,
 "xen-devel@lists.xenproject.org" <xen-devel@lists.xenproject.org>,
 Andrew Cooper <andrew.cooper@citrix.com>
References: <bf990673-83c3-44c3-a76a-3b0c36108ec5@suse.com>
 <77234acb-4539-4efe-9c30-03cb7a389912@citrix.com>
 <f91fae0b-7d3b-4ca6-a5ed-72de50daee9c@suse.com>
 <LV3PR03MB7707D62ACB8254123F4CB136872D2@LV3PR03MB7707.namprd03.prod.outlook.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: <LV3PR03MB7707D62ACB8254123F4CB136872D2@LV3PR03MB7707.namprd03.prod.outlook.com>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 7bit
X-purgate-ID: tlsNG-bad1c0/1776865279-43F7EA53-DE008AD3/0/0
X-purgate-type: clean
X-purgate-size: 1000

On 22.04.2026 15:16, Bernhard Kaindl wrote:
> Jan Beulich wrote:
> PS: Gitweb finds this commit for adding the function:
> 
> https://xenbits.xen.org/gitweb/?p=xen.git;a=commit;h=0d6a3c755374f04f6dd25373da28291a8f35bede
> 
> efi: introduce efi_arch_flush_dcache_area
> 
> Objects loaded by FileHandle->Read need to be flushed from dcache,
> otherwise copy_from_paddr will read stale data when copying the kernel,
> causing a failure to boot.

I.e. irrelevant to the cfg file buffer. So what we could do there to
make things less questionable (as to ordering) is

    if ( file == &cfg )
        file->str[file->size] = 0;
    else
        efi_arch_flush_dcache_area(file->ptr, file->size);

> Introduce efi_arch_flush_dcache_area and call it from read_file.
> 
> This commit introduces no functional changes on x86.
> 
> Reported-by: Mark Rutland <mark.rutland@arm.com>
> Signed-off-by: Stefano Stabellini <stefano.stabellini@eu.citrix.com>

Stefano, any thoughts?

Jan


From xen-devel-bounces@lists.xenproject.org Wed Apr 22 13:44:07 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 22 Apr 2026 13:44:07 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1290597.1570153 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wFXs0-0006j7-26; Wed, 22 Apr 2026 13:44:00 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1290597.1570153; Wed, 22 Apr 2026 13: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 1wFXrz-0006j0-Vj; Wed, 22 Apr 2026 13:43:59 +0000
Received: by outflank-mailman (input) for mailman id 1290597;
 Wed, 22 Apr 2026 13:43:59 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <jbeulich@suse.com>) id 1wFXrz-0006iu-10
 for xen-devel@lists.xenproject.org; Wed, 22 Apr 2026 13:43:59 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wFXry-00F0FH-EA
 for xen-devel@lists.xenproject.org; Wed, 22 Apr 2026 15:43:58 +0200
Received: from [10.42.69.2] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <jbeulich@suse.com>)
 id 69e8d07f-e002-0a2a0a5209dd-0a2a4502e1be-34
 for <xen-devel@lists.xenproject.org>; Wed, 22 Apr 2026 15:43:58 +0200
Received: from [209.85.128.53] (helo=mail-wm1-f53.google.com)
 by tlsNG-720697.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.1)
 (envelope-from <jbeulich@suse.com>)
 id 69e8d09e-af86-0a2a45020019-d1558035d57d-3
 for <xen-devel@lists.xenproject.org>; Wed, 22 Apr 2026 15:43:58 +0200
Received: by mail-wm1-f53.google.com with SMTP id
 5b1f17b1804b1-488ba840146so50403095e9.1
 for <xen-devel@lists.xenproject.org>; Wed, 22 Apr 2026 06:43:58 -0700 (PDT)
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-4891bb3d121sm391052345e9.14.2026.04.22.06.43.56
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Wed, 22 Apr 2026 06:43:57 -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=google header.d=suse.com header.i="@suse.com" header.h="Content-Transfer-Encoding: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=1776865438; x=1777470238; darn=lists.xenproject.org;
        h=content-transfer-encoding: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;
        bh=UfD0R2QSBo+nfzE7Rs3ruGGWE2Ag0B+vEBaytHV/A1w=;
        b=NHpO7L1AlQHBcIp7AJceNQfa1+VWNJ8Nq/ahfBRmzs35TRjpmRp65cYCqJm2SFMZmP
         WwUr/ILgKqceXIfcVlGlTFzyPAG7GD44wGF0z5D055zjTcvXC732MB9LIySxgIGJdYU/
         KfVrwyavI62ITt7kcjg3M8iT3Rg3VouCTKHR2GYb1kL+Gw7+kVriY9VrvcTJVLOGUjMX
         7BoKqC7yGVzPs7RvuPMrY770yLhPK2B7fYAy9YjvPv4F9G5fPagnyWhZjWauOdKJnBW7
         B5S++mvLPKbFD6qVcfxt7s+5g4SfUmXGyrba1rwk9Z3kHghWEDc3VVIt6z+JFI3FS1d8
         n58w==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20251104; t=1776865438; x=1777470238;
        h=content-transfer-encoding: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;
        bh=UfD0R2QSBo+nfzE7Rs3ruGGWE2Ag0B+vEBaytHV/A1w=;
        b=SnvToUvAUIUWpoHv12FP/v+TSz8/zz7QxhLhBdxngHNxKZzZB5Y9pJR4PTO4KV+5b/
         HQvuOyRzeFlWeSCglhvpRjRIrk7LZ/sLQuzZjgFuDBa6E5LfDrsO2zUKU0/wTLD5jRGV
         MlC6XKZ5sp4/ECr9y89kj7lGu4wiitbbxJTuYzkVgu26DPEGZGDw+tEknBpAyyujIg7n
         P7tQIeSmAI8K0Ik0b17WkOrsR2KE7H2LxiejnjQUa7nJcwERdfSZnvV31/Y4M+9X786/
         YQn3J1i7z6XM5S2y1+Zzh4z3Y/oGBt2UXTaLtxFg7G4THRv9P85EHYEWAS5C36Cag6EO
         MkNQ==
X-Forwarded-Encrypted: i=1; AFNElJ+r5T+lkLdvUYRA4e7hSDxa0SxOjlZGgsqStO7F4T9hBOJwaCv/WgP6t0HPPvtRcbPAHI5/HTRDYNM=@lists.xenproject.org
X-Gm-Message-State: AOJu0Yyn2XOVYquWQWssMTkC9BiZKUXz6hOoDwTHxBb5qh0juH6dCm4v
	Ea21uOUtr7jFNca0p/fkUCLiAccwpMlBQ2EFsP/WjUTQ3C8zUnsqir2zeklePBvob+P3QmZCJu/
	LL+Ra+g==
X-Gm-Gg: AeBDievPhs0C4NdOZ6d6tW81VcXI0264O4GX4arBKIo4sRXjVTBE4sxrFGgrUWesmq7
	aAgV1+QZVyi47V2Se8suzoX3ddHqU+23NFopZwWdGuK6HuFp7LmLNsIss5JrnNFPdRQjpEppMn1
	RHsI1pPB/IxmkLdu8m0MmVb46HNJAc2bqeFTFuQjnfcsEwEIx/D8Gox0+F17nR+2I0J+0lvcpeC
	Pls45KhO67lr3aUgtnJpCFxw/G2XvRXI89NNxYI2gYZYFrAIswAcGOsN45H91Rn6IpxKcqboaY7
	OYKKte0OwwClkXTY/VRmBhuu/XOpzmRgu8d9XUSz0KOIJlPOpPfT8G1gd84LStOyAtiTbCYArvK
	mNRdI8He7CKDUYDma6JM2nU6ac81x4yNxzkasDQ+6S2saUjTvE3Bkj8rqk76mKFV8fjtw+un8PN
	g3NukN+6TSLbSGl0Kaxbz2v3ggFF6/f9GX5alCuQfad864zbTqW0A0PYAElQBiFfvT7XVPfdM4n
	6TzQCId8YszlzVjKjWou8rXuA==
X-Received: by 2002:a05:600c:c085:b0:488:c530:48a0 with SMTP id 5b1f17b1804b1-488fb784843mr247257245e9.24.1776865437568;
        Wed, 22 Apr 2026 06:43:57 -0700 (PDT)
Message-ID: <cdc6e123-592b-40bd-9c34-05d157e8ef9a@suse.com>
Date: Wed, 22 Apr 2026 15:43:55 +0200
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH v2 3/3] xen: introduce CONFIG_HAS_DOMAIN_TYPE
To: Oleksii Kurochko <oleksii.kurochko@gmail.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.pau@citrix.com>,
 xen-devel@lists.xenproject.org
References: <cover.1776780944.git.oleksii.kurochko@gmail.com>
 <61c33c15d046110b5c99490f54191facf18068e1.1776780944.git.oleksii.kurochko@gmail.com>
 <f2ad01dc-0f8b-4514-b35f-24b254c9b2ee@suse.com>
 <d2070fa5-dce3-46e4-ac23-7d1956d0bc65@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: <d2070fa5-dce3-46e4-ac23-7d1956d0bc65@gmail.com>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 7bit
X-purgate-ID: tlsNG-720697/1776865438-82175161-BEB70187/0/0
X-purgate-type: clean
X-purgate-size: 1009

On 22.04.2026 15:38, Oleksii Kurochko wrote:
> On 4/22/26 12:37 PM, Jan Beulich wrote:
>> On 22.04.2026 11:44, Oleksii Kurochko wrote:
>>> --- a/xen/include/xen/domain.h
>>> +++ b/xen/include/xen/domain.h
>>> @@ -13,6 +13,19 @@ struct guest_area {
>>>       void *map;
>>>   };
>>>   
>>> +#ifdef CONFIG_HAS_DOMAIN_TYPE
>>> +enum __packed domain_type {
>>> +    DOMAIN_32BIT,
>>> +    DOMAIN_64BIT,
>>> +};
>>> +#define is_32bit_domain(d) ((d)->type == DOMAIN_32BIT)
>>> +#define is_64bit_domain(d) ((d)->type == DOMAIN_64BIT)
>>> +#elif !defined(CONFIG_64BIT)
>>> +/* On 32-bit-only platforms all domains are 32-bit. */
>>
>> Btw, while this may be true in practice right now, it is not given. A
>> 32-bit hypervisor can in principle be capable of running 64-bit guests.
> 
> Agree that it could be.
> 
> Do you prefer to change this comment to "At the moment ... are expected 
> to be 32-bit."?

Something like this, yes, please. I wouldn't mind "expected" to be omitted.

Jan


From xen-devel-bounces@lists.xenproject.org Wed Apr 22 13:47:34 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 22 Apr 2026 13:47:34 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1290607.1570163 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wFXvI-0007Gw-GM; Wed, 22 Apr 2026 13:47:24 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1290607.1570163; Wed, 22 Apr 2026 13:47: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 1wFXvI-0007Gp-Cu; Wed, 22 Apr 2026 13:47:24 +0000
Received: by outflank-mailman (input) for mailman id 1290607;
 Wed, 22 Apr 2026 13:47:22 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92) id 1wFXvG-0007Gg-GL
 for xen-devel@lists.xenproject.org; Wed, 22 Apr 2026 13:47:22 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wFXvF-00F0zt-TC
 for xen-devel@lists.xenproject.org; Wed, 22 Apr 2026 15:47:21 +0200
Received: from [10.42.69.5] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <oleksii.kurochko@gmail.com>)
 id 69e8d169-2eae-0a2a0a5409dd-0a2a450589c8-6
 for <xen-devel@lists.xenproject.org>; Wed, 22 Apr 2026 15:47:21 +0200
Received: from [209.85.167.50] (helo=mail-lf1-f50.google.com)
 by tlsNG-c201ff.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.1)
 (envelope-from <oleksii.kurochko@gmail.com>)
 id 69e8d169-aaa8-0a2a45050019-d155a732ade0-3
 for <xen-devel@lists.xenproject.org>; Wed, 22 Apr 2026 15:47:21 +0200
Received: by mail-lf1-f50.google.com with SMTP id
 2adb3069b0e04-5a4113ab355so5740036e87.1
 for <xen-devel@lists.xenproject.org>; Wed, 22 Apr 2026 06:47:21 -0700 (PDT)
Received: from [192.168.1.6] (user-109-243-69-121.play-internet.pl.
 [109.243.69.121]) by smtp.gmail.com with ESMTPSA id
 2adb3069b0e04-5a4185bc297sm4405160e87.18.2026.04.22.06.47.19
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Wed, 22 Apr 2026 06:47:20 -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=20251104 header.d=gmail.com header.i="@gmail.com" header.h="Content-Transfer-Encoding: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=20251104; t=1776865641; x=1777470441; darn=lists.xenproject.org;
        h=content-transfer-encoding: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;
        bh=+Sh8JFYTv4GSVzJBxmzWjFaYvbu9BNzX7XqJOFt+qGI=;
        b=C3PyEj1t5Pxrl72D2Tb7Y0ZU+Cmk1siCMpp1cJ346O6mG4stR6BHAskv/AjLeJu39W
         bOC31skbpnI/GEVwcl4AFUauoGVxmHYlCaw+hDLTpLcIwMVGF6xSu8VITSIBlACtzvW1
         D4V4jC1/9lxXVoFRZ7vWcTHZ4i/qUwdNP1u0g6Kr4JCIiFEgbJaXC4ZVlKJDaNjjxZut
         dZfMx3A+2FNJb0qinoiZuu5EsRBMvjuGoNnaD5A4zQM7Um5vnvf/W2nL6cEJPa1hy7yI
         vI4tnTwTZ2OZ/CE9CWLEeYSO86vEfra/wBanu76VvtHsfw+FIRojNbsqzY5hwWPfF/4i
         cqDQ==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20251104; t=1776865641; x=1777470441;
        h=content-transfer-encoding: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;
        bh=+Sh8JFYTv4GSVzJBxmzWjFaYvbu9BNzX7XqJOFt+qGI=;
        b=iX225vrQiCnVmX83ApLuCUzVglVvA0v0c6CjyW7ortEuPr0g2idt8LmCk7jVRgMkeu
         xbHhMD0kNkw2ka4Mt1WzKo+5CEdqOb9Y9gHQ/hXRzt518r+xvoYgtPxBMfQztKqJ5xYO
         2lJ1jja41qUAgGpA36W2yjTnsSW262JmjoBKi/HdUkliqitHs4YMHSB1mMIm+1MN/TLZ
         7yD6CY8ynxMgTRSpR8BTR/2gKipqANukmujGxSnBeaRYRm7ChAjrW6hf8FkdEz7EVlNV
         e+I8ewztoef22wfC86df28QczVAfWv8k4MtMii/g5IOy7Riz30/KZkXIdwOAKKEQcmr5
         +9XQ==
X-Forwarded-Encrypted: i=1; AFNElJ9HkMUBDgd/jEIT6Dp/xIysJPPJpZmXjw7p5QkQnLNWUMehUj5J1rxOtpKFFukXLVPadXIButDtmUE=@lists.xenproject.org
X-Gm-Message-State: AOJu0Yzj425ArSBULMctZc+tS1ifPp8Q0y7/icv4/W0lkZEJTD9eEhJT
	05aw43WMvRWP9LayyDDwCtNLQv1UaRHWlu/sHEkYX0bpbrVChVaIvryf
X-Gm-Gg: AeBDiesYRlswOIwO5rsBbN99tigNqCFzboh83ImnD+wWDctyzWjfADW+Qe2wwV41LO6
	Rgwr7QKlJ45DJ7aj6WOV72XAxS2l6Qx82/2Ngyt50LE/SAtBYtbYvaJbNfHJBBnUbjHf9e+pIyy
	Xdl4amz+uBhedy2MHQa0vXq2XvUAFt0Xxm2W5EMIgksvCxt2VGhnPo34bdu0Oore4NRrTUN421z
	Z6ISX2wY+Kn3DQdJFisJhI/83psIMp4IV0WngqVbQI+I8ouF5fvgn+bWxBwuR4VJMME6zXjWKfh
	cEd3SDxoJiHooUsqXAnrRwl4PW0xq4a3D+ZijlcbhgRMviBdRadbKvWoH1+ei8UisbBvEs1I9vo
	KWpJZyqf4xdDrLMdE0zcEUsdPCV2M0gGWgiqNhyaFQZ4eQQWskPbM6n+lJ9h1KcqudNNwbf17Fj
	m4mCTWgMq7ImTYH0fArKViI41uAMnvnvbOBnYHWyyCAk9i4E9sNNXjvZ+X9AWN05a7iQ4W8PFT0
	a03mAi+Cn/zvw==
X-Received: by 2002:a05:6512:3c8f:b0:5a2:c3e4:6c1 with SMTP id 2adb3069b0e04-5a4172e2556mr8658269e87.34.1776865640795;
        Wed, 22 Apr 2026 06:47:20 -0700 (PDT)
Message-ID: <14562fd3-a29c-4a53-8778-79818467695f@gmail.com>
Date: Wed, 22 Apr 2026 15:47:19 +0200
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH v3 05/12] xen/riscv: add kernel loading support
To: Jan Beulich <jbeulich@suse.com>
Cc: Romain Caritey <Romain.Caritey@microchip.com>,
 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.pau@citrix.com>,
 Stefano Stabellini <sstabellini@kernel.org>, xen-devel@lists.xenproject.org
References: <cover.1775836193.git.oleksii.kurochko@gmail.com>
 <29ec8e444792caa925ba92cdc406ef8c0b3bd678.1775836193.git.oleksii.kurochko@gmail.com>
 <6af89a34-3bf1-40cb-a4c5-e9a16ee31295@suse.com>
 <b6c4a111-6c37-4850-962a-5b401a4a5655@gmail.com>
 <d493eee4-bc83-4a44-8568-3a18ddc90d4c@suse.com>
Content-Language: en-US
From: Oleksii Kurochko <oleksii.kurochko@gmail.com>
In-Reply-To: <d493eee4-bc83-4a44-8568-3a18ddc90d4c@suse.com>
Content-Type: text/plain; charset=UTF-8; format=flowed
Content-Transfer-Encoding: 7bit
X-purgate-ID: tlsNG-c201ff/1776865641-E97A6443-16740444/10/73395122804
X-purgate-type: spam
X-purgate-size: 5595



On 4/22/26 1:57 PM, Jan Beulich wrote:
> On 22.04.2026 13:45, Oleksii Kurochko wrote:
>> On 4/21/26 10:57 AM, Jan Beulich wrote:
>>> On 10.04.2026 17:54, Oleksii Kurochko wrote:
>>>> +static paddr_t __init kernel_image_place(struct kernel_info *info)
>>>> +{
>>>> +    paddr_t load_addr = INVALID_PADDR;
>>>> +    uint64_t image_size = info->image.image_size ?: info->image.len;
>>>> +    const struct membanks *banks = kernel_info_get_mem_const(info);
>>>> +    unsigned int nr_banks = banks->nr_banks;
>>>> +    unsigned int bi;
>>>> +
>>>> +    dprintk(XENLOG_DEBUG, "nr_banks(%u)\n", nr_banks);
>>>> +
>>>> +    /*
>>>> +     * At the moment, RISC-V's Linux kernel should be always position
>>>> +     * independent based on "Per-MMU execution" of boot.rst:
>>>> +     *   https://docs.kernel.org/arch/riscv/boot.html#pre-mmu-execution
>>>> +     *
>>>> +     * But just for the case when RISC-V's Linux kernel isn't position
>>>> +     * independent it is needed to take load address from
>>>> +     * info->image.start.
>>>> +     *
>>>> +     * If `start` is zero, the Image is position independent.
>>>> +     */
>>>> +    if ( likely(!info->image.start) )
>>>> +    {
>>>> +        for ( bi = 0; bi != nr_banks; bi++ )
>>>> +        {
>>>> +            const struct membank *bank = &banks->bank[bi];
>>>> +            paddr_t bank_start = bank->start;
>>>> +            /*
>>>> +             * According to boot.rst kernel load address should be properly
>>>> +             * aligned:
>>>> +             *   https://docs.kernel.org/arch/riscv/boot.html#kernel-location
>>>> +             *
>>>> +             * As Image in this case is PIC we can ignore
>>>> +             * info->image.text_offset.
>>>> +             */
>>>> +            paddr_t aligned_start = ROUNDUP(bank_start, KERNEL_LOAD_ADDR_ALIGNMENT);
>>>> +            paddr_t bank_end = bank_start + bank->size;
>>>> +            paddr_t bank_size;
>>>> +
>>>> +            if ( aligned_start > bank_end )
>>>> +                continue;
>>>> +
>>>> +            bank_size = bank_end - aligned_start;
>>>> +
>>>> +            dprintk(XENLOG_DEBUG, "bank[%u].start=%"PRIpaddr"\n", bi, bank->start);
>>>> +
>>>> +            if ( image_size <= bank_size )
>>>> +            {
>>>> +                load_addr = aligned_start;
>>>> +                break;
>>>> +            }
>>>> +        }
>>>> +    }
>>>> +    else
>>>> +    {
>>>> +        load_addr = info->image.start + info->image.text_offset;
>>>
>>> Why does stuff ahead of text_offset not need loading?
>>
>> Here we just calculating only a place where kernel will be loaded. The
>> full kernel image will be loaded in kernel_image_load().
> 
> Okay, but if you calculate an address where the full image won't fit,
> how are things going to work?

If the full image won't fit than the necessary bank won't be found in 
for() loop below and so this kernel will be rejected.

I expect that in the case when info->image.start is not 0 (so isn't 
Image isn't PIC) Image want to be specifically load to info->image.start 
+ info->image.text_offset. Is it wrong statement?

~ Oleksii

> 
>>>> +        WARN_ON(!IS_ALIGNED(load_addr, KERNEL_LOAD_ADDR_ALIGNMENT));
>>>> +
>>>> +        for ( bi = 0; bi != nr_banks; bi++ )
>>>> +        {
>>>> +            const struct membank *bank = &banks->bank[bi];
>>>> +            paddr_t bank_start = bank->start;
>>>> +            paddr_t bank_end = bank_start + bank->size;
>>>> +
>>>> +            if ( (load_addr >= bank_start) && (load_addr < bank_end) &&
>>>> +                 (bank_end - load_addr) >= image_size )
>>>
>>> Do we have to fear overflow? (If so, shouldn't such an image be rejected
>>> rather than an attempt being made to place it?) If not, simply:
>>
>> Just for a case. As a user may control load_addr and image_size it could
>> be some combination which will lead to overflow here.
>>
>>>
>>>               if ( (load_addr >= bank_start) &&
>>>                    (load_addr + image_size <= bank_end) )
>>
>> I will add the following:
>>           /*
>>            * Reject a malformed image before the loop to avoid wrapping
>>            * load_addr + image_size in the per-bank check below.
>>            *
>>            * image_size covers the kernel from _start (placed at load_addr =
>>            * start + text_offset) through _end.  The alignment gap
>>            * [start, load_addr) is padding and need not lie within a bank.
>>            */
>>           if ( image_size > (paddr_t)-1 - load_addr )
>>               bi = nr_banks;
>>           else
>>               for ( bi = 0; bi != nr_banks; bi++ )
>>               {
>>                   const struct membank *bank = &banks->bank[bi];
>>                   paddr_t bank_start = bank->start;
>>                   paddr_t bank_end = bank_start + bank->size;
>>
>>                   if ( (load_addr >= bank_start) &&
>>                        (load_addr + image_size <= bank_end) )
>>                       break;
>>               }
> 
> Please consider getting away without "else" (and hence with one level
> less of indentation):
> 
>           bi = image_size <= (paddr_t)-1 - load_addr ? 0 : nr_banks;
>           for ( ; bi != nr_banks; bi++ )
>           ...
> 
>>> Also, does image_size really only cover space starting from .text_offset,
>>> rather than from .start?
>>
>> image_size covers total memory the kernel occupies at runtime.
> 
> Which emphasizes the remark further up.
> 
> Jan



From xen-devel-bounces@lists.xenproject.org Wed Apr 22 13:54:34 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 22 Apr 2026 13:54:34 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1290618.1570171 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wFY29-00016u-4e; Wed, 22 Apr 2026 13:54:29 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1290618.1570171; Wed, 22 Apr 2026 13:54: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 1wFY29-00016n-1y; Wed, 22 Apr 2026 13:54:29 +0000
Received: by outflank-mailman (input) for mailman id 1290618;
 Wed, 22 Apr 2026 13:54:27 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <jbeulich@suse.com>) id 1wFY27-00016h-Fw
 for xen-devel@lists.xenproject.org; Wed, 22 Apr 2026 13:54:27 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wFY26-007oGY-Ss
 for xen-devel@lists.xenproject.org; Wed, 22 Apr 2026 15:54:26 +0200
Received: from [10.42.69.7] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <jbeulich@suse.com>)
 id 69e8d30f-bab6-0a2a0a5309dd-0a2a4507dea8-12
 for <xen-devel@lists.xenproject.org>; Wed, 22 Apr 2026 15:54:26 +0200
Received: from [209.85.128.54] (helo=mail-wm1-f54.google.com)
 by tlsNG-ef75cf.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.1)
 (envelope-from <jbeulich@suse.com>)
 id 69e8d312-229c-0a2a45070019-d1558036c96e-3
 for <xen-devel@lists.xenproject.org>; Wed, 22 Apr 2026 15:54:26 +0200
Received: by mail-wm1-f54.google.com with SMTP id
 5b1f17b1804b1-488b8bc6bc9so38983125e9.3
 for <xen-devel@lists.xenproject.org>; Wed, 22 Apr 2026 06:54:26 -0700 (PDT)
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-48a557412eesm59464975e9.9.2026.04.22.06.54.25
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Wed, 22 Apr 2026 06:54:25 -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=google header.d=suse.com header.i="@suse.com" header.h="Content-Transfer-Encoding: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=1776866066; x=1777470866; darn=lists.xenproject.org;
        h=content-transfer-encoding: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;
        bh=CnzmWXdA1VAvCrRIpc+AigSt1tAvsWFN1DqzKa5v82I=;
        b=ULN75vtnXv5o9sR0VBzdO0y+/Jhtufm/U7B+dlPBrUuUmJy+zga/4H1Xhewg+PB3nf
         EdBiOsOmR8wIIZOHW2z7wsWoPn7kpTYg+SoePcoZaHrYUbb/epXYINRb68PTzSxWATGa
         5CZqPEvdofwdYkFwwcOLPueb4F3RUD27hes14wglOIVA+XOFyFudZ6LTzpS6U1lLdoHh
         ZiobwBfXV3JXk2Mwi2A1mDu7J30b9s4jqqRq81RFBaGeItBitYq9daHgh6J7iJxFCXpb
         35PfgRcD76cP+recfBXXI8mp4H+LIBo/WmX0G0Fd4CPuGjg7t9wALnIH1UVkH24P6FFs
         qd/g==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20251104; t=1776866066; x=1777470866;
        h=content-transfer-encoding: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;
        bh=CnzmWXdA1VAvCrRIpc+AigSt1tAvsWFN1DqzKa5v82I=;
        b=mQADuRkjWbU2TFTGRX07qLA90/GKHfUPw/PRRKd/HFcjoMmO2JGGRbOPbv3YBeCEKT
         AGqJuys+Hym/+QICTNrrYtSqfW+TWWqawbO9AGfDhdemT4KEkL0cdiEOK2+hpAcYPLmw
         tCMnTra8jMF0GFFAJB6DVad9XzFUZrCpJBLb5g/xlblcy0ioRHXYsy1z1mdeLktypcE6
         pvHS53rUL0ULTeiE9S0uWdRkBCW3fjwNtTJXzJIv7ss6XMkrglTC+Ge9RM0eRYug9WFp
         4sjvSANVXTjseXHal5i1v5HGW0j25I7+gcv7WVe9WVOqTg4l7EUSUTmFDeWQklSPIu9m
         atNA==
X-Forwarded-Encrypted: i=1; AFNElJ/FQTA44lnpzHYsbNs5w1Q+6JdUeISYjv+FQEL9122AixuE8zf66IPYcUCdy4xJdIToqkCHsHinh1U=@lists.xenproject.org
X-Gm-Message-State: AOJu0YyGELXW9+CwoAm04UHdN0QLDrlH6+NRMQX9VxAUtDzP5DMeE6+2
	pHyAwqf5tvdi0JsSp2vRucTUb2FInWBdg+mSVQTkdJDkmICOSO3/tOlBM614D8ya4g==
X-Gm-Gg: AeBDieug4eTae8mE25WbmN9BoiNnrBuQAt1Q0l337agLwaoLGJh3r2bjKUm9axmFa9J
	lvxSxZQ+8D5ZeUfn347e/C9r3uIcbUC7fDAp1f+EB/m/0AlTxx1sDLsON8dSDk8Z6INQrfLbwxG
	1T0+g4UpGl6XHwlZ2Z5WxsT9t4PNRSb0oJhucLZCO8eatnKrhln156rXYpue71W2MFIUesNCuFt
	3ay5WkdppU48jD+LrX71TgtTYDw3/GM1mPu8DWhuntebelJHX6+uKHUxH9QzsXQZhZx2RIDPSk2
	vUlWcjiWc3Ay9zRcnpHInrBwfytGAXWC+2t9yc50R22X+VVTKVWAzbpJN1Z4M98YtBZuIoNN8Z/
	DSY2BhfEjlcpf/xf0V24zJ/8oIKH44+zI0UA+0JFZ0ast2hUe76xeL6C0hZkslMzJkixMSbRhVi
	4qX3zydE+Utk/NrIb/SqhctG+gONmAGM4pA0WsyDwv+oM3sVjn9b57B4ilodkF1rRelAeA97rf3
	IuHQiCCSABRbCBfqFhgkM7Kg1qfgugnTfeB
X-Received: by 2002:a05:600c:a103:b0:48a:58e1:6d17 with SMTP id 5b1f17b1804b1-48a58e16ee0mr57065135e9.20.1776866066111;
        Wed, 22 Apr 2026 06:54:26 -0700 (PDT)
Message-ID: <51ac0fb6-6111-4364-9781-bf8dde3df979@suse.com>
Date: Wed, 22 Apr 2026 15:54:23 +0200
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH v3 05/12] xen/riscv: add kernel loading support
To: Oleksii Kurochko <oleksii.kurochko@gmail.com>
Cc: Romain Caritey <Romain.Caritey@microchip.com>,
 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.pau@citrix.com>,
 Stefano Stabellini <sstabellini@kernel.org>, xen-devel@lists.xenproject.org
References: <cover.1775836193.git.oleksii.kurochko@gmail.com>
 <29ec8e444792caa925ba92cdc406ef8c0b3bd678.1775836193.git.oleksii.kurochko@gmail.com>
 <6af89a34-3bf1-40cb-a4c5-e9a16ee31295@suse.com>
 <b6c4a111-6c37-4850-962a-5b401a4a5655@gmail.com>
 <d493eee4-bc83-4a44-8568-3a18ddc90d4c@suse.com>
 <14562fd3-a29c-4a53-8778-79818467695f@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: <14562fd3-a29c-4a53-8778-79818467695f@gmail.com>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 7bit
X-purgate-ID: tlsNG-ef75cf/1776866066-16E67C48-D2063E84/0/0
X-purgate-type: clean
X-purgate-size: 3450

On 22.04.2026 15:47, Oleksii Kurochko wrote:
> On 4/22/26 1:57 PM, Jan Beulich wrote:
>> On 22.04.2026 13:45, Oleksii Kurochko wrote:
>>> On 4/21/26 10:57 AM, Jan Beulich wrote:
>>>> On 10.04.2026 17:54, Oleksii Kurochko wrote:
>>>>> +static paddr_t __init kernel_image_place(struct kernel_info *info)
>>>>> +{
>>>>> +    paddr_t load_addr = INVALID_PADDR;
>>>>> +    uint64_t image_size = info->image.image_size ?: info->image.len;
>>>>> +    const struct membanks *banks = kernel_info_get_mem_const(info);
>>>>> +    unsigned int nr_banks = banks->nr_banks;
>>>>> +    unsigned int bi;
>>>>> +
>>>>> +    dprintk(XENLOG_DEBUG, "nr_banks(%u)\n", nr_banks);
>>>>> +
>>>>> +    /*
>>>>> +     * At the moment, RISC-V's Linux kernel should be always position
>>>>> +     * independent based on "Per-MMU execution" of boot.rst:
>>>>> +     *   https://docs.kernel.org/arch/riscv/boot.html#pre-mmu-execution
>>>>> +     *
>>>>> +     * But just for the case when RISC-V's Linux kernel isn't position
>>>>> +     * independent it is needed to take load address from
>>>>> +     * info->image.start.
>>>>> +     *
>>>>> +     * If `start` is zero, the Image is position independent.
>>>>> +     */
>>>>> +    if ( likely(!info->image.start) )
>>>>> +    {
>>>>> +        for ( bi = 0; bi != nr_banks; bi++ )
>>>>> +        {
>>>>> +            const struct membank *bank = &banks->bank[bi];
>>>>> +            paddr_t bank_start = bank->start;
>>>>> +            /*
>>>>> +             * According to boot.rst kernel load address should be properly
>>>>> +             * aligned:
>>>>> +             *   https://docs.kernel.org/arch/riscv/boot.html#kernel-location
>>>>> +             *
>>>>> +             * As Image in this case is PIC we can ignore
>>>>> +             * info->image.text_offset.
>>>>> +             */
>>>>> +            paddr_t aligned_start = ROUNDUP(bank_start, KERNEL_LOAD_ADDR_ALIGNMENT);
>>>>> +            paddr_t bank_end = bank_start + bank->size;
>>>>> +            paddr_t bank_size;
>>>>> +
>>>>> +            if ( aligned_start > bank_end )
>>>>> +                continue;
>>>>> +
>>>>> +            bank_size = bank_end - aligned_start;
>>>>> +
>>>>> +            dprintk(XENLOG_DEBUG, "bank[%u].start=%"PRIpaddr"\n", bi, bank->start);
>>>>> +
>>>>> +            if ( image_size <= bank_size )
>>>>> +            {
>>>>> +                load_addr = aligned_start;
>>>>> +                break;
>>>>> +            }
>>>>> +        }
>>>>> +    }
>>>>> +    else
>>>>> +    {
>>>>> +        load_addr = info->image.start + info->image.text_offset;
>>>>
>>>> Why does stuff ahead of text_offset not need loading?
>>>
>>> Here we just calculating only a place where kernel will be loaded. The
>>> full kernel image will be loaded in kernel_image_load().
>>
>> Okay, but if you calculate an address where the full image won't fit,
>> how are things going to work?
> 
> If the full image won't fit than the necessary bank won't be found in 
> for() loop below and so this kernel will be rejected.
> 
> I expect that in the case when info->image.start is not 0 (so isn't 
> Image isn't PIC) Image want to be specifically load to info->image.start 
> + info->image.text_offset. Is it wrong statement?

I don't know, but the adding in of .text_offset looks questionable to me.
I simply don't know why such offsetting would be wanted / needed.

Jan


From xen-devel-bounces@lists.xenproject.org Wed Apr 22 14:04:24 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 22 Apr 2026 14:04:24 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1290631.1570180 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wFYBf-0003XL-2C; Wed, 22 Apr 2026 14:04:19 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1290631.1570180; Wed, 22 Apr 2026 14:04: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 1wFYBe-0003XE-VO; Wed, 22 Apr 2026 14:04:18 +0000
Received: by outflank-mailman (input) for mailman id 1290631;
 Wed, 22 Apr 2026 14:04:17 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <jens.wiklander@linaro.org>) id 1wFYBd-0003X8-8K
 for xen-devel@lists.xenproject.org; Wed, 22 Apr 2026 14:04:17 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wFYBc-000rZB-Ks
 for xen-devel@lists.xenproject.org; Wed, 22 Apr 2026 16:04:16 +0200
Received: from [10.42.69.2] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <jens.wiklander@linaro.org>)
 id 69e8d557-e002-0a2a0a5209dd-0a2a4502d804-40
 for <xen-devel@lists.xenproject.org>; Wed, 22 Apr 2026 16:04:16 +0200
Received: from [209.85.161.41] (helo=mail-oo1-f41.google.com)
 by tlsNG-720697.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.1)
 (envelope-from <jens.wiklander@linaro.org>)
 id 69e8d55f-af86-0a2a45020019-d155a129e4d8-3
 for <xen-devel@lists.xenproject.org>; Wed, 22 Apr 2026 16:04:16 +0200
Received: by mail-oo1-f41.google.com with SMTP id
 006d021491bc7-67e0d3f288aso3472587eaf.0
 for <xen-devel@lists.xenproject.org>; Wed, 22 Apr 2026 07:04:16 -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=google header.d=linaro.org header.i="@linaro.org" header.h="Content-Transfer-Encoding:Cc:To:Subject:Message-ID:Date:From:In-Reply-To:References:MIME-Version"
ARC-Seal: i=1; a=rsa-sha256; t=1776866655; cv=none;
        d=google.com; s=arc-20240605;
        b=g5J3CY3eNpJci3mNW0sTvZ8cDVOXXcD7JfGDOMcqcweopxL4NPdmvnZebSlRc40fNG
         G8AIGLLn9H8NoM0qaI/6QwfHANoOdWwo937WXQh/jDNhSb4f5JOEjji5DiPPyYp1ikM9
         k1zdXOaxiImq/LNJdjxpxJu/NMJS9yiUnC2N/jbs7m6Ac1AplvPST4op9RFId6+xtBW/
         lNoGQf9UpoZGqZjwTPrz9QNGMZIszv7m2HaW7V8oP1AECziQjhd2yKO90ocn5GWOx1Oy
         sWwgQ1gQU7dJSdbVfkQjOAepipBpVmDNy7EOK4hbalkXeSuyEtGwePu5SDp19VkPP885
         0bYQ==
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20240605;
        h=content-transfer-encoding:cc:to:subject:message-id:date:from
         :in-reply-to:references:mime-version:dkim-signature;
        bh=SZbVa42LBrVIvv19c71FIcjtgICz5v6MXlpF0LMZ+PM=;
        fh=wNLC6Hyb5Ukz/ErppBRQBwv8vwa/OMsdh6R8bnNsiPU=;
        b=awT2RvHwDPA++jI3ltppRrn3Y//tyF9xjOKjGNQixWYyxfnf1b04om8S8SkvfDcgWN
         St2OQBj/a6k8lh/JG8g1mD399z3JLjKsXwS7AlEDLuO0d2KWI3iohJ1Ht+C4FTyEO4Hk
         LEvRGWjp2H63V6fhi2u+R661k2OWaWnFVxM4Cm1ElnjEkEg38GLMoxCvmawRjphfkXXP
         /Nn2O5cM2OKbtR0Z2WIjTXwrCfJHEJ3qD4+fZsTJWYFrEN8XkrD1/R3I6CWyjbirFpg7
         vuPP9cMw+TXVdVJ4CuUMR630ESzNEZv1x5lWsNEydM4pXAcAaupzyYQof4jT2cHP+X+N
         5ahA==;
        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=linaro.org; s=google; t=1776866655; x=1777471455; darn=lists.xenproject.org;
        h=content-transfer-encoding:cc:to:subject:message-id:date:from
         :in-reply-to:references:mime-version:from:to:cc:subject:date
         :message-id:reply-to;
        bh=SZbVa42LBrVIvv19c71FIcjtgICz5v6MXlpF0LMZ+PM=;
        b=Y9cvFOBg19KypRBdpM2j1/XozVY43/RoTkOU9Sg/GgnJprgucnaHZk+pCXDksAC8Fm
         4ZWZRtZIcbsxTXv0YkL3VwSeQ1G1TJIIqXWcGqoKlKmtGrw9NKDnubUxP2v6IBMirycP
         Tg2f/ObXIyRzTdOuvvSTl5grqwmIqXt+CtgtgqJ3sBVMzdccudLwa365mhebQKRBSDG+
         yPcLTGCP6OQ5zTyfhC9D+Gvnku+tgFbHUb7AHgaknAxVWGmZXDB5tNuPEBB5P11Y0Gjn
         emK4mVGBwz4U2HFSf4+Z13Zg25uSP7KJL/jL43wOhsZv/zCLSj9fK/K14Dfd+VWV6vSc
         QWcQ==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20251104; t=1776866655; x=1777471455;
        h=content-transfer-encoding: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;
        bh=SZbVa42LBrVIvv19c71FIcjtgICz5v6MXlpF0LMZ+PM=;
        b=pCekpo/Lb6fujpUmMKz5jGuipXa47PhzLZRpe2ASRex1EopJUTsiqy3x4uwfgJ0tFO
         HuIdc7Goy8rnL8A8PImEWpG7mdPqpmyZkeOawTMF8I6qSJzfT1c9fuK1jHMskw5fG9aU
         hxlrczQvz0h99MrTRhCm95cq13MWUgIvr6hLNB3PcH0SPCuRnBUN+mK955Bwz4soKKjM
         6iGakPISJ/t0F2nwGtY6pDBsi8rlQ8aQ2HzueorgABZrVSu8QYQJceGI1j8Yn3w3Bc1g
         eSC3kVtoSE5t/sjj6YObfcJy/YgP9OUi+pwl1RFAqmFJm2pYH/7Ih1PQ8oT8ZBvNdoGi
         bAtg==
X-Gm-Message-State: AOJu0YyRiZK4V5FUisxLBAqgMnHLGG55NUzSRLBgbeFcBn9gypti/Fhi
	TaOKUPJ+df7LYiCY9NBRSEPXJbwW0Z0jhsxzJi0T0EMODTdN7DVtP6rdLJPdHT86bLisS7OM20I
	5wu0Qp9vTVp0/UUdhjIKYLmEiM29qP3IHAcBLc+wT2w==
X-Gm-Gg: AeBDiev6y09iTM8A+Sqo1bCIIlBONglznxuVl/pJfhUhQAJJYJaqBaXpqLzRKZtzuqG
	AvD+FnPVkw3R9QWyoFS/VZ8x7gen6al33+bqqQuscilg0F54a3iP2V2e8jKdUbH3y5DrspIsvp1
	Ptawl1cITGHi9YMENvz3Lc+oU9h0xy0A6Amoy2ya8XYerCIlYkGWqWiYRMrzVtqsCSIOg8YGDhS
	qixwk+pU0naesJ9oJNOubnWOM/E8lED45cpQ84Cm+sUnOUABNlyrfAn5/A14lx10PSUQpxfhq/8
	x1oaM7DrsCp+qKR5LysGicZmB5EMUNW9wk5EWTzmkgHGk3BD
X-Received: by 2002:a05:6820:8303:b0:694:852a:28b3 with SMTP id
 006d021491bc7-694852a2e8emr5169175eaf.10.1776866654463; Wed, 22 Apr 2026
 07:04:14 -0700 (PDT)
MIME-Version: 1.0
References: <cover.1776266307.git.bertrand.marquis@arm.com> <e85d0ef9733f091e09f520c2e0598f13cb7af06a.1776266307.git.bertrand.marquis@arm.com>
In-Reply-To: <e85d0ef9733f091e09f520c2e0598f13cb7af06a.1776266307.git.bertrand.marquis@arm.com>
From: Jens Wiklander <jens.wiklander@linaro.org>
Date: Wed, 22 Apr 2026 16:04:02 +0200
X-Gm-Features: AQROBzD4LaPZwDV8-tF5y0H9VSwgHEF2ba1iT0SZO4NQVav6K5VQ7LXkYN-XrMI
Message-ID: <CAHUa44GbUQRfFzBqpAX94FSioYzT9tx5oP7C8fOvnWmMTV4-SQ@mail.gmail.com>
Subject: Re: [PATCH 6/6] xen/arm: ffa: Deliver VM-to-VM notifications locally
To: Bertrand Marquis <bertrand.marquis@arm.com>
Cc: xen-devel@lists.xenproject.org, 
	Volodymyr Babchuk <volodymyr_babchuk@epam.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-720697/1776866656-80F7E161-D52F125B/0/0
X-purgate-type: clean
X-purgate-size: 13283

Hi Bertrand,

On Fri, Apr 17, 2026 at 3:41=E2=80=AFPM Bertrand Marquis
<bertrand.marquis@arm.com> wrote:
>
> VM notification binding and pending tracking exist for non-secure
> endpoints, but FFA_NOTIFICATION_SET still only forwards secure
> destinations to the SPMC. Non-secure VMs therefore cannot receive
> notifications from other VMs. Local NPI delivery also needs explicit
> re-arm tracking so repeated raises are not lost while the interrupt is
> already pending.
>
> Add a local VM notification delivery path for non-secure destinations.
> notification_set_vm() resolves the destination endpoint, verifies that
> every requested bit is bound to the sender, sets the receiver's
> vm_pending bitmap under notif_lock, and raises an NPI only when the
> receiver transitions from no local pending notifications to some.
>
> Track whether a local NPI is already armed with notif_irq_raised, clear
> that state once both VM and hypervisor pending bitmaps are drained, and
> roll back newly-added VM pending bits if no destination vCPU is online.
> Also expose firmware notification availability so FFA_FEATURES only
> advertises notification support when it is actually provided by the
> firmware or by CONFIG_FFA_VM_TO_VM.
>
> Functional impact: when CONFIG_FFA_VM_TO_VM is enabled, non-secure
> FFA_NOTIFICATION_SET delivers VM-to-VM notifications locally and keeps
> NPI delivery reliable across repeated raises.
>
> Signed-off-by: Bertrand Marquis <bertrand.marquis@arm.com>
> ---
>  xen/arch/arm/tee/ffa.c         |  24 +++++--
>  xen/arch/arm/tee/ffa_notif.c   | 126 +++++++++++++++++++++++++++++++--
>  xen/arch/arm/tee/ffa_private.h |  11 ++-
>  3 files changed, 147 insertions(+), 14 deletions(-)
>
> diff --git a/xen/arch/arm/tee/ffa.c b/xen/arch/arm/tee/ffa.c
> index 1fe33f26454a..7fe021049cba 100644
> --- a/xen/arch/arm/tee/ffa.c
> +++ b/xen/arch/arm/tee/ffa.c
> @@ -39,8 +39,13 @@
>   * o FFA_MSG_SEND_DIRECT_REQ:
>   *   - only supported from a VM to an SP
>   * o FFA_NOTIFICATION_*:
> + *   - only supported when firmware notifications are enabled or VM-to-V=
M
> + *     support is built in
>   *   - only supports global notifications, that is, per vCPU notificatio=
ns
> - *     are not supported
> + *     are not supported and secure per-vCPU notification information is
> + *     not forwarded
> + *   - the source endpoint ID reported for a notification may no longer
> + *     exist by the time the receiver consumes it
>   *   - doesn't support signalling the secondary scheduler of pending
>   *     notification for secure partitions
>   *   - doesn't support notifications for Xen itself
> @@ -245,6 +250,8 @@ static void handle_features(struct cpu_user_regs *reg=
s)
>      uint32_t a1 =3D get_user_reg(regs, 1);
>      struct domain *d =3D current->domain;
>      struct ffa_ctx *ctx =3D d->arch.tee;
> +    bool notif_supported =3D IS_ENABLED(CONFIG_FFA_VM_TO_VM) ||
> +                           ffa_notif_fw_enabled();
>
>      /*
>       * FFA_FEATURES defines w2 as input properties only for specific
> @@ -343,10 +350,16 @@ static void handle_features(struct cpu_user_regs *r=
egs)
>
>          break;
>      case FFA_FEATURE_NOTIF_PEND_INTR:
> -        ffa_set_regs_success(regs, GUEST_FFA_NOTIF_PEND_INTR_ID, 0);
> +        if ( notif_supported )
> +            ffa_set_regs_success(regs, GUEST_FFA_NOTIF_PEND_INTR_ID, 0);
> +        else
> +            ffa_set_regs_error(regs, FFA_RET_NOT_SUPPORTED);
>          break;
>      case FFA_FEATURE_SCHEDULE_RECV_INTR:
> -        ffa_set_regs_success(regs, GUEST_FFA_SCHEDULE_RECV_INTR_ID, 0);
> +        if ( notif_supported )
> +            ffa_set_regs_success(regs, GUEST_FFA_SCHEDULE_RECV_INTR_ID, =
0);
> +        else
> +            ffa_set_regs_error(regs, FFA_RET_NOT_SUPPORTED);
>          break;
>      case FFA_PARTITION_INFO_GET_REGS:
>          if ( ACCESS_ONCE(ctx->guest_vers) >=3D FFA_VERSION_1_2 )
> @@ -361,7 +374,10 @@ static void handle_features(struct cpu_user_regs *re=
gs)
>      case FFA_NOTIFICATION_SET:
>      case FFA_NOTIFICATION_INFO_GET_32:
>      case FFA_NOTIFICATION_INFO_GET_64:
> -        ffa_set_regs_success(regs, 0, 0);
> +        if ( notif_supported )
> +            ffa_set_regs_success(regs, 0, 0);
> +        else
> +            ffa_set_regs_error(regs, FFA_RET_NOT_SUPPORTED);
>          break;
>      default:
>          ffa_set_regs_error(regs, FFA_RET_NOT_SUPPORTED);
> diff --git a/xen/arch/arm/tee/ffa_notif.c b/xen/arch/arm/tee/ffa_notif.c
> index 4def701f0130..e77321244926 100644
> --- a/xen/arch/arm/tee/ffa_notif.c
> +++ b/xen/arch/arm/tee/ffa_notif.c
> @@ -20,7 +20,12 @@ static bool __ro_after_init fw_notif_enabled;
>  static unsigned int __ro_after_init notif_sri_irq;
>  static DEFINE_SPINLOCK(notif_info_lock);
>
> -static void inject_notif_pending(struct domain *d)
> +bool ffa_notif_fw_enabled(void)
> +{
> +    return fw_notif_enabled;
> +}
> +
> +static bool inject_notif_pending(struct domain *d)
>  {
>      struct vcpu *v;
>
> @@ -34,13 +39,15 @@ static void inject_notif_pending(struct domain *d)
>          if ( is_vcpu_online(v) )
>          {
>              vgic_inject_irq(d, v, GUEST_FFA_NOTIF_PEND_INTR_ID, true);
> -            return;
> +            return true;
>          }
>      }
>
>      if ( printk_ratelimit() )
>          printk(XENLOG_G_DEBUG "%pd: ffa: can't inject NPI, all vCPUs off=
line\n",
>                 d);
> +
> +    return false;
>  }
>
>  static int32_t ffa_notif_parse_params(uint16_t dom_id, uint16_t caller_i=
d,
> @@ -104,6 +111,73 @@ out_unlock:
>      return ret;
>  }
>
> +/*
> + * Deliver a VM-to-VM notification. ctx->notif.notif_lock protects
> + * vm_bind/vm_pending so callers must not hold it already.
> + */
> +static int32_t notification_set_vm(uint16_t dst_id, uint16_t src_id,
> +                                   uint32_t flags, uint64_t bitmap)
> +{
> +    struct domain *dst_d;
> +    struct ffa_ctx *dst_ctx;
> +    unsigned int id;
> +    int32_t ret;
> +    uint64_t prev_bitmap =3D 0;
> +    uint64_t new_bitmap;
> +    bool inject =3D false;
> +
> +    if ( flags )
> +        return FFA_RET_INVALID_PARAMETERS;
> +
> +    ret =3D ffa_endpoint_domain_lookup(dst_id, &dst_d, &dst_ctx);
> +    if ( ret )
> +        return ret;
> +
> +    ret =3D FFA_RET_OK;
> +
> +    spin_lock(&dst_ctx->notif.notif_lock);
> +
> +    for ( id =3D 0; id < FFA_NUM_VM_NOTIF; id++ )
> +    {
> +        if ( !(bitmap & BIT(id, ULL)) )
> +            continue;
> +
> +        if ( dst_ctx->notif.vm_bind[id] !=3D src_id )
> +        {
> +            ret =3D FFA_RET_DENIED;
> +            goto out_unlock;
> +        }
> +    }
> +
> +    prev_bitmap =3D dst_ctx->notif.vm_pending;
> +    dst_ctx->notif.vm_pending |=3D bitmap;
> +    if ( !dst_ctx->notif.notif_irq_raised &&
> +         (dst_ctx->notif.vm_pending || dst_ctx->notif.hyp_pending) )
> +    {
> +        dst_ctx->notif.notif_irq_raised =3D true;
> +        inject =3D true;
> +    }
> +
> +out_unlock:
> +    spin_unlock(&dst_ctx->notif.notif_lock);
> +
> +    new_bitmap =3D bitmap & ~prev_bitmap;
> +    if ( ret =3D=3D FFA_RET_OK && inject && new_bitmap &&
> +         !inject_notif_pending(dst_d) )
> +    {
> +        spin_lock(&dst_ctx->notif.notif_lock);
> +        dst_ctx->notif.vm_pending &=3D ~new_bitmap;

There's a window above when dst_ctx->notif.notif_lock is unlocked.
What if another CPU has modified dst_ctx->notif.vm_pending during that
window?

Cheers,
Jens

> +        if ( !(dst_ctx->notif.vm_pending || dst_ctx->notif.hyp_pending) =
)
> +            dst_ctx->notif.notif_irq_raised =3D false;
> +        spin_unlock(&dst_ctx->notif.notif_lock);
> +        ret =3D FFA_RET_DENIED;
> +    }
> +
> +    rcu_unlock_domain(dst_d);
> +
> +    return ret;
> +}
> +
>  int32_t ffa_handle_notification_bind(struct cpu_user_regs *regs)
>  {
>      struct domain *d =3D current->domain;
> @@ -285,6 +359,8 @@ void ffa_handle_notification_get(struct cpu_user_regs=
 *regs)
>
>      if ( IS_ENABLED(CONFIG_FFA_VM_TO_VM) )
>      {
> +        bool pending;
> +
>          spin_lock(&ctx->notif.notif_lock);
>
>          if ( (flags & FFA_NOTIF_FLAG_BITMAP_HYP) && ctx->notif.hyp_pendi=
ng )
> @@ -293,6 +369,18 @@ void ffa_handle_notification_get(struct cpu_user_reg=
s *regs)
>              ctx->notif.hyp_pending =3D 0;
>          }
>
> +        if ( (flags & FFA_NOTIF_FLAG_BITMAP_VM) && ctx->notif.vm_pending=
 )
> +        {
> +            w4 =3D (uint32_t)(ctx->notif.vm_pending & GENMASK(31, 0));
> +            w5 =3D (uint32_t)((ctx->notif.vm_pending >> 32) & GENMASK(31=
, 0));
> +            ctx->notif.vm_pending =3D 0;
> +        }
> +
> +        pending =3D (ctx->notif.hyp_pending !=3D 0) ||
> +                  (ctx->notif.vm_pending !=3D 0);
> +        if ( !pending )
> +            ctx->notif.notif_irq_raised =3D false;
> +
>          spin_unlock(&ctx->notif.notif_lock);
>      }
>
> @@ -318,9 +406,17 @@ int32_t ffa_handle_notification_set(struct cpu_user_=
regs *regs)
>      if ( flags )
>          return FFA_RET_INVALID_PARAMETERS;
>
> -    if ( FFA_ID_IS_SECURE(dest_id) && fw_notif_enabled )
> -        return ffa_simple_call(FFA_NOTIFICATION_SET, src_dst, flags, bit=
map_lo,
> -                               bitmap_hi);
> +    if ( FFA_ID_IS_SECURE(dest_id) )
> +    {
> +        if ( fw_notif_enabled )
> +            return ffa_simple_call(FFA_NOTIFICATION_SET, src_dst, flags,
> +                                   bitmap_lo, bitmap_hi);
> +    }
> +    else if ( IS_ENABLED(CONFIG_FFA_VM_TO_VM) )
> +    {
> +        return notification_set_vm(dest_id, caller_id, flags,
> +                                   ((uint64_t)bitmap_hi << 32) | bitmap_=
lo);
> +    }
>
>      return FFA_RET_NOT_SUPPORTED;
>  }
> @@ -330,6 +426,7 @@ void ffa_raise_rx_buffer_full(struct domain *d)
>  {
>      struct ffa_ctx *ctx =3D d->arch.tee;
>      uint32_t prev_bitmap;
> +    bool inject =3D false;
>
>      if ( !ctx )
>          return;
> @@ -337,10 +434,23 @@ void ffa_raise_rx_buffer_full(struct domain *d)
>      spin_lock(&ctx->notif.notif_lock);
>      prev_bitmap =3D ctx->notif.hyp_pending;
>      ctx->notif.hyp_pending |=3D FFA_NOTIF_RX_BUFFER_FULL;
> +    if ( !ctx->notif.notif_irq_raised &&
> +         (ctx->notif.vm_pending || ctx->notif.hyp_pending) )
> +    {
> +        ctx->notif.notif_irq_raised =3D true;
> +        inject =3D true;
> +    }
>      spin_unlock(&ctx->notif.notif_lock);
>
> -    if ( !(prev_bitmap & FFA_NOTIF_RX_BUFFER_FULL) )
> -        inject_notif_pending(d);
> +    if ( inject && !(prev_bitmap & FFA_NOTIF_RX_BUFFER_FULL) &&
> +         !inject_notif_pending(d) )
> +    {
> +        spin_lock(&ctx->notif.notif_lock);
> +        ctx->notif.hyp_pending &=3D ~FFA_NOTIF_RX_BUFFER_FULL;
> +        if ( !(ctx->notif.vm_pending || ctx->notif.hyp_pending) )
> +            ctx->notif.notif_irq_raised =3D false;
> +        spin_unlock(&ctx->notif.notif_lock);
> +    }
>  }
>  #endif
>
> @@ -572,6 +682,7 @@ int ffa_notif_domain_init(struct domain *d)
>      spin_lock_init(&ctx->notif.notif_lock);
>      ctx->notif.secure_pending =3D false;
>      ctx->notif.vm_pending =3D 0;
> +    ctx->notif.notif_irq_raised =3D false;
>      for ( i =3D 0; i < FFA_NUM_VM_NOTIF; i++ )
>          ctx->notif.vm_bind[i] =3D 0;
>      ctx->notif.hyp_pending =3D 0;
> @@ -594,6 +705,7 @@ void ffa_notif_domain_destroy(struct domain *d)
>      spin_lock(&ctx->notif.notif_lock);
>      ctx->notif.secure_pending =3D false;
>      ctx->notif.vm_pending =3D 0;
> +    ctx->notif.notif_irq_raised =3D false;
>      for ( i =3D 0; i < FFA_NUM_VM_NOTIF; i++ )
>          ctx->notif.vm_bind[i] =3D 0;
>      ctx->notif.hyp_pending =3D 0;
> diff --git a/xen/arch/arm/tee/ffa_private.h b/xen/arch/arm/tee/ffa_privat=
e.h
> index 6d83afb3d00a..5bb19bd11dd0 100644
> --- a/xen/arch/arm/tee/ffa_private.h
> +++ b/xen/arch/arm/tee/ffa_private.h
> @@ -344,13 +344,17 @@ struct ffa_ctx_notif {
>      uint64_t vm_pending;
>
>      /*
> -     * Source endpoint bound to each VM notification ID (0 means unbound=
).
> +     * Tracks whether an NPI has been raised for local pending notificat=
ions.
> +     * Protected by notif_lock.
>       */
> -    uint16_t vm_bind[FFA_NUM_VM_NOTIF];
> +    bool notif_irq_raised;
>
>      /*
> -     * Lock protecting the hypervisor-managed notification state.
> +     * Source endpoint bound to each VM notification ID (0 means unbound=
).
>       */
> +    uint16_t vm_bind[FFA_NUM_VM_NOTIF];
> +
> +    /* Lock protecting local notification state. */
>      spinlock_t notif_lock;
>
>      /*
> @@ -493,6 +497,7 @@ void ffa_notif_init(void);
>  void ffa_notif_init_interrupt(void);
>  int ffa_notif_domain_init(struct domain *d);
>  void ffa_notif_domain_destroy(struct domain *d);
> +bool ffa_notif_fw_enabled(void);
>
>  int32_t ffa_handle_notification_bind(struct cpu_user_regs *regs);
>  int32_t ffa_handle_notification_unbind(struct cpu_user_regs *regs);
> --
> 2.53.0
>


From xen-devel-bounces@lists.xenproject.org Wed Apr 22 14:08:08 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 22 Apr 2026 14:08:08 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1290641.1570190 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wFYFK-0004Xz-Gd; Wed, 22 Apr 2026 14:08:06 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1290641.1570190; Wed, 22 Apr 2026 14: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 1wFYFK-0004Xs-Dg; Wed, 22 Apr 2026 14:08:06 +0000
Received: by outflank-mailman (input) for mailman id 1290641;
 Wed, 22 Apr 2026 14:08: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.19db584dbc0000f373@swg.vates.tech>)
 id 1wFYFJ-0004Xm-E1
 for xen-devel@lists.xenproject.org; Wed, 22 Apr 2026 14:08:05 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wFYFI-00F59Y-NT
 for xen-devel@lists.xenproject.org; Wed, 22 Apr 2026 16:08:04 +0200
Received: from [10.42.69.11] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1) (envelope-from
 <prod-mta-13.8631fc262581453bbf619ec5b2062170.19db584dbc0000f373@swg.vates.tech>)
 id 69e8d627-2eae-0a2a0a5409dd-0a2a450b9098-36
 for <xen-devel@lists.xenproject.org>; Wed, 22 Apr 2026 16:08:04 +0200
Received: from [185.255.28.34] (helo=prod-mta-13.swg-srv.net)
 by tlsNG-42698a.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.1)
 (envelope-from
 <prod-mta-13.8631fc262581453bbf619ec5b2062170.19db584dbc0000f373@swg.vates.tech>)
 id 69e8d644-212f-0a2a450b0019-b9ff1c22b0bb-3
 for <xen-devel@lists.xenproject.org>; Wed, 22 Apr 2026 16:08:04 +0200
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
 19db584dbc0000f373.006 for <xen-devel@lists.xenproject.org>
 (version=TLSv1.3 cipher=TLS_AES_256_GCM_SHA384);
 Wed, 22 Apr 2026 14:07:56 +0000
Received: from l14 (lfbn-lyo-1-414-55.w2-7.abo.wanadoo.fr [2.7.24.55])
 (Authenticated sender: anthony.perard)
 by mail2.vates.fr (Postfix) with ESMTPSA id 8C9A4874C4;
 Wed, 22 Apr 2026 16:07:55 +0200 (CEST)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@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=U/O52EMYDG9BkfcUKNlOTjcARL9Tp0yR3Eawkx9V5AU=;
 h=from:subject:date:message-id:to:cc:mime-version:content-type:in-reply-to:references:feedback-id;
 b=t0WvHTaOEyyIwQiXfk+KHYaen36zacYGZW11Uq8bEX3IZUo+D2M9cE/u0rXbMBJb0eJnWujdo
 Up9sh6/XsglbOP8z1mO0Kjxs8WFIrT1hqq/TD742rBsaJ646AlwdbmF2677OYgdBCDlOCtSf5EL
 igIBqSabhj7lyJEpwfZJAWdcZsg6fNmBToNdeyH14AX46Ep1gHl6YpXlvORK7o40QVLzwnslh9N
 YyMyNFMDxoZkunuHWcGGseqa70UAeOmFcI1BqEYGDr8XhzNNb6JQSi4v0lgP1Dxc8GLn0MAAB2K
 BGHipxw4S3UitJaKuA+t6hIAOP4aiVfrNliNO5mKl1ng==
X-Zone-Loop: 3c13f8e142c1ba25486a9c0469e6ddc7296e9c8c80bb
x-campaign-type: default
x-transaction-id: 52209e87-3a29-4ffd-a534-0b9761ee4b1f
x-swg-uid: 01-eedb9e38-ae11-4177-a258-4a048fa3bbc8
X-Mailer: Sweego
Message-ID:
 <1776866876.8631fc262581453bbf619ec5b2062170.19db584dbc0000f373@vates.tech>
x-swg-bid: 1776866876.8631fc262581453bbf619ec5b2062170.19db584dbc0000f373
Feedback-ID: default:8631fc262581453bbf619ec5b2062170:Sweego
x-campaign-id: default
x-client-id: 8631fc262581453bbf619ec5b2062170
X-Originating-IP: [37.26.189.201]
Date: Wed, 22 Apr 2026 16:07:55 +0200
From: Anthony PERARD <anthony.perard@vates.tech>
To: dmukhin@ford.com
Cc: xen-devel@lists.xenproject.org, andrew.cooper3@citrix.com,
	jbeulich@suse.com, julien@xen.org, michal.orzel@amd.com,
	roger.pau@citrix.com, sstabellini@kernel.org
Subject: Re: [PATCH v7] xen/domain: introduce DOMID_ANY
References: <20260408234046.1314021-1-dmukhin@ford.com>
MIME-Version: 1.0
Content-Disposition: inline
In-Reply-To: <20260408234046.1314021-1-dmukhin@ford.com>
X-BM-Disclaimer: Yes
Content-Type: multipart/alternative; boundary="-=Part.25bc.af5ba2750434f175.19db584d979.3ffb772d6e87de25=-"
X-Bm-Milter-Handled: 4ffbd6c1-ee69-4e1b-aabd-f977039bd3e2
X-Bm-Transport-Timestamp: 1776866875773
X-purgate-ID: tlsNG-42698a/1776866884-7EB70F3B-8430A055/0/0
X-purgate-type: clean
X-purgate-size: 2991

---=Part.25bc.af5ba2750434f175.19db584d979.3ffb772d6e87de25=-
Content-Type: text/plain; charset=utf-8
Content-Transfer-Encoding: quoted-printable

On Wed, Apr 08, 2026 at 04:40:46PM -0700, dmukhin@ford=2Ecom wrote:
> From: Denis Mukhin <dmukhin@ford=2Ecom>=20
>=20
> Add a new symbol DOMID_ANY to improve the readability of the code=2E
>=20
> Update all relevant domid_alloc() call sites and harden the domid_alloc(=
)
> input value check=2E
>=20
> Also, fix problem with passing invalid domain IDs in
> XEN_DOMCTL_createdomain: turns out libxl__domain_make() (toolstack)
> uses 0xffff as domain ID=2E
>=20
> Amends: 2d5065060710 ("xen/domain: unify domain ID allocation")
> Signed-off-by: Denis Mukhin <dmukhin@ford=2Ecom>
> ---
> Changes since v6:
> - fixed libxl_domid_valid_guest() check in libxl_create=2Ec
> - Link to v6: https://lore=2Ekernel=2Eorg/xen-devel/20260307025451=2E314=
8078-2-dmukhin@ford=2Ecom/
> - CI: https://gitlab=2Ecom/xen-project/people/dmukhin/xen/-/pipelines/24=
38790748

Unfortunattly, this patch breaks tests in tools/tests, see
    https://gitlab=2Ecom/xen-project/hardware/xen-staging/-/pipelines/2471=
684142

The tests produces this:

    Running /usr/lib/xen/tests/test-mem-claim
    Memory claims tests
    Free pages: 3059012, Oustanding claims: 0
      Domain create failure: 17 - File exists
    FAILED: /usr/lib/xen/tests/test-mem-claim

    Running /usr/lib/xen/tests/test-paging-mempool
    Paging mempool tests
      Domain create failure: 17 - File exists
    FAILED: /usr/lib/xen/tests/test-paging-mempool

    Running /usr/lib/xen/tests/test-resource
    XENMEM_acquire_resource tests
    Test x86 PV
      Domain create failure: 17 - File exists
    Test x86 PVH
      Domain create failure: 17 - File exists
    FAILED: /usr/lib/xen/tests/test-resource

    Running /usr/lib/xen/tests/test-tsx
    TSX tests
      Host: RTM 0, HLE 0, TSX_FORCE_ABORT 0, RTM_ALWAYS_ABORT 0, TSX_CTRL =
0
      Got 16 CPUs
    Testing MSR_TSX_FORCE_ABORT consistency
    Testing MSR_TSX_CTRL consistency
    Testing MSR_MCU_OPT_CTRL consistency
    Testing RTM behaviour
      Got #UD
    Testing PV default/max policies
      Max: RTM 0, HLE 0, TSX_FORCE_ABORT 0, RTM_ALWAYS_ABORT 0, TSX_CTRL 0
      Def: RTM 0, HLE 0, TSX_FORCE_ABORT 0, RTM_ALWAYS_ABORT 0, TSX_CTRL 0
    Testing HVM default/max policies
      Max: RTM 0, HLE 0, TSX_FORCE_ABORT 0, RTM_ALWAYS_ABORT 0, TSX_CTRL 0
      Def: RTM 0, HLE 0, TSX_FORCE_ABORT 0, RTM_ALWAYS_ABORT 0, TSX_CTRL 0
    Testing PV guest
      Domain create failure: 17 - File exists
    Testing HVM guest
      Domain create failure: 17 - File exists
    FAILED: /usr/lib/xen/tests/test-tsx

At least, the domid test passes :-)
    Running /usr/lib/xen/tests/test-domid
    PASSED


-- 
 | Vates 

XCP-ng & Xen Orchestra - Vates solutions

web: https://vate=
s=2Etech
---=Part.25bc.af5ba2750434f175.19db584d979.3ffb772d6e87de25=---


From xen-devel-bounces@lists.xenproject.org Wed Apr 22 14:19:52 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 22 Apr 2026 14:19:52 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1290656.1570199 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wFYQb-0006vK-HG; Wed, 22 Apr 2026 14:19:45 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1290656.1570199; Wed, 22 Apr 2026 14: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 1wFYQb-0006vD-E3; Wed, 22 Apr 2026 14:19:45 +0000
Received: by outflank-mailman (input) for mailman id 1290656;
 Wed, 22 Apr 2026 14:19:44 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <roger.pau@citrix.com>) id 1wFYQa-0006v7-8A
 for xen-devel@lists.xenproject.org; Wed, 22 Apr 2026 14:19:44 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wFYQZ-007tLK-HX
 for xen-devel@lists.xenproject.org; Wed, 22 Apr 2026 16:19:43 +0200
Received: from [10.42.69.3] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <roger.pau@citrix.com>)
 id 69e8d8f4-2eae-0a2a0a5409dd-0a2a4503994c-40
 for <xen-devel@lists.xenproject.org>; Wed, 22 Apr 2026 16:19:43 +0200
Received: from [52.101.43.70]
 (helo=SJ2PR03CU001.outbound.protection.outlook.com)
 by tlsNG-33051d.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.1)
 (envelope-from <roger.pau@citrix.com>)
 id 69e8d8fd-672d-0a2a45030019-34652b46ad1c-3
 for <xen-devel@lists.xenproject.org>; Wed, 22 Apr 2026 16:19:42 +0200
Received: from CH7PR03MB7860.namprd03.prod.outlook.com (2603:10b6:610:24e::14)
 by SJ0PR03MB5791.namprd03.prod.outlook.com (2603:10b6:a03:2d4::23)
 with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9846.16; Wed, 22 Apr
 2026 14:19:39 +0000
Received: from CH7PR03MB7860.namprd03.prod.outlook.com
 ([fe80::f5ba:35df:1c9f:b343]) by CH7PR03MB7860.namprd03.prod.outlook.com
 ([fe80::f5ba:35df:1c9f:b343%4]) with mapi id 15.20.9846.016; Wed, 22 Apr 2026
 14:19: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=GCduPcCOWVAgHUoxnAq2boO8z1V0Y0foi1/vNbV8O/XMCVb1Esy0Szw6sYXWbrMBWrKe/WuRzCk1Yr2qqIeHKYLxbPbPA2G3JiHND0v64MhyR4ecSaOgm6rtj00HvdgxaKCdmwOrLvs89ilIKCtDbTv25u+YMXTeOoKrLladBCZn8i7w+hKEtneIvFRoWF1GJ0JWGoMr70eEn71yZ0xoy5FdCGF+FmOnL/IpN3N7QqmzbzMEbB/R23nna5JiAANvaEm8y55XyINSsCu80S9ymuQxBDhmYdEdRngAmUO+D/w/ZVjIvUkmd2FUHYQZZ86Yx2OWMhZRQXgYKqUlQM61uQ==
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com;
 s=arcselector10001;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1;
 bh=BCWdf7kdFNNEmO5/CmYzwKI1Qzb7AolfmAXvxEFfn14=;
 b=x4zcN33yj+E/rsdAEXBrU/qdWYJNvwB/ndsDTFQR4E2pxWVXF45iwEpWkgX0EWgaZK211naskye0DD7OqG+EJX39O5tlVluVtjqcA1UyoLRKNd+mIxYF0hFYIHpiCIIim2TMIqfNtvXqS0qpqjtnTzWKp9gwIgw5tx8BdErA8B29y/WNDHursy8DsqhzOHB40MPNuRTfDP63kIiDqbOHlcH7md4ZKuXL+yI534McYyyOsnGeqi2WkQgEmHZSQn9mpqwvd2AbPNI+wq5s6NaqA32ophEb5m8DXEhLMRQ9/F2YkvTGc0QPLRL2Mys3r6oc/HgxAYnXAFln1kE7letFKg==
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=BCWdf7kdFNNEmO5/CmYzwKI1Qzb7AolfmAXvxEFfn14=;
 b=XmAPYqFFth9aGN2hX6kjiXDVMhhZyyYn77RfvJO8Plxf4/dE9y4+/fiohzsZkpyhOk9f/S0FrHPrLdO5/Cko8N1W2TQ9wSUMMCIX3Wkrxmna9m15ABmny/cKgDqFfvWc+xJ5dDWwtK1aXDR6HGhZCATi0VOHgk6qQV0rprBOJjs=
Authentication-Results: dkim=none (message not signed)
 header.d=none;dmarc=none action=none header.from=citrix.com;
Date: Wed, 22 Apr 2026 16:19:35 +0200
From: Roger Pau =?utf-8?B?TW9ubsOp?= <roger.pau@citrix.com>
To: Mykyta Poturai <Mykyta_Poturai@epam.com>
Cc: "xen-devel@lists.xenproject.org" <xen-devel@lists.xenproject.org>,
	Stewart Hildebrand <stewart.hildebrand@amd.com>,
	"Daniel P. Smith" <dpsmith@apertussolutions.com>
Subject: Re: [PATCH v3 5/7] vpci: add SR-IOV support for PVH Dom0
Message-ID: <aejY9zq8tEQIfUJ6@macbook.local>
References: <cover.1775742115.git.mykyta_poturai@epam.com>
 <a0abd984989237d2f36e1628db577fb25af1cdbe.1775742115.git.mykyta_poturai@epam.com>
Content-Type: text/plain; charset=utf-8
Content-Disposition: inline
Content-Transfer-Encoding: 8bit
In-Reply-To: <a0abd984989237d2f36e1628db577fb25af1cdbe.1775742115.git.mykyta_poturai@epam.com>
X-ClientProxiedBy: MA3P292CA0050.ESPP292.PROD.OUTLOOK.COM
 (2603:10a6:250:48::17) To CH7PR03MB7860.namprd03.prod.outlook.com
 (2603:10b6:610:24e::14)
MIME-Version: 1.0
X-MS-PublicTrafficType: Email
X-MS-TrafficTypeDiagnostic: CH7PR03MB7860:EE_|SJ0PR03MB5791:EE_
X-MS-Office365-Filtering-Correlation-Id: 984db426-888d-4912-a2f6-08dea07a302b
X-MS-Exchange-SenderADCheck: 1
X-MS-Exchange-AntiSpam-Relay: 0
X-Microsoft-Antispam:
	BCL:0;ARA:13230040|366016|1800799024|376014|22082099003|56012099003|18002099003;
X-Microsoft-Antispam-Message-Info:
	lWJJ3B3ECAFynaIxXpMfLDpR1utBb+YkRUvFhQxi91fwry8W266PdPeL9Xy++RbYrG07CvTVBqJtuqUdKkjKVeYk7U6Wo21jHDl/28gQ2MKX/a20smvP74nkHa6TsHjN+9Y1j8brfNH8FwL906L5oD13XJhoD9OzbtjfRzYZLNJCs3ksLYXOn4EalH61jt4EHWaTuBWHFsBK3WN0U1yf9CUJ0zZ6aGXLR7pvPPmVsbgt91fHKQVJ9dsqRcfkHhaWLhUu5NQOntVPFzasa9MEdJ9LhgYyHMlAJ3kR3shmgxBzq+yAHuXOm3z17ICbxgvPd4VQ2DztZZUIS10V4V6PLWQgMUCmYOb8KWanrIAbrJHHr0UYpTAPfUcmi++81iEObfPGkKPH3huF10t6fgl8UaX0vV8aUoK2f4RZ4JUkVr/pXzyeBLo34DhE2/G+WN7up0jtEWvgg9IU7DksbVswPUTsdrBpxRE9KMvj0KKysraJs2Re24azcMMXwqVGRd2nE2KiBGy8amOmsKjkEQdcKPCA3kBLspgfCqJk4JSd4frlZwiRJCToCRKWotMSZzIFBGbRCG0kvnAh/IKj39hSPaalkn53AUZhrqESXPFTOcQfVw0YV4HfhGqrphQTrOA1zly0PZ6hBS2DFbgRCasEkYG9FPEknwMGCrTN3BuxkMvjHZ/1WGwOOn6w9n9vrpJTgUtlx3baL7mV3IUjYV6cWiV8n7YqAq/f1m/LOTcyDwQ=
X-Forefront-Antispam-Report:
	CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:CH7PR03MB7860.namprd03.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(366016)(1800799024)(376014)(22082099003)(56012099003)(18002099003);DIR:OUT;SFP:1101;
X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1
X-MS-Exchange-AntiSpam-MessageData-0:
	=?utf-8?B?MVFsMllLV0xHNFIvYmVIVVpiQ3pjajVnWXNBajZVblE4a1A4UmdjVCtBUUtp?=
 =?utf-8?B?aU5lNzNXRWM4WGZpenZ5U3ZjNzdQTHJueUNtcVhuVmhsUDZUcmR2YXRIR1h2?=
 =?utf-8?B?dHNWbkY0MWo4N1V2WUxaL0JKZ2g5VWRlRTgxOUR3OHNqbG9nVG1qR1NCdGFV?=
 =?utf-8?B?a1RWd25LQlhGa1VDbnFYNzg1ZFg4Rm16Wm90a05WWjdjL0l6aHA0ei8yOHFy?=
 =?utf-8?B?RjNkbm5ZWmpwZDFjZDJ4aXFibmxaOUw3Ry82My8wbjlra2xHMCtCaldxTkFG?=
 =?utf-8?B?QmYvcnQ3cXZtdTAzbjJjVENUR1h2SmxBYXhvL21YVjFVWmJPUGhHOElPc01T?=
 =?utf-8?B?YTB0ektrbmU3WlRxZ2pra2EvV1VtSDZkK0xLTmJFV0s1a2x4Qzh4WllFK0gz?=
 =?utf-8?B?WDB4blpHS2lvZzVKZTR3OUFyckEzMi9jNWo1ZVdKUWdkWUxyakVOWS9MakE0?=
 =?utf-8?B?d2dHY0QxbVRWVUIyS0Y1ZjF1elJxTFMxRExTZFJxM0hwaTdmV2syNWpTUTUw?=
 =?utf-8?B?S09XWTQ5UklORXF5OEI4U2x5WVpRKzlicWsrVEExcFo1eVRwNXRjTXd4SUll?=
 =?utf-8?B?WkJoUm9tVWtCRnRla3FhYVRJZHliUkZpMUNkMjZCNXQ2WWVUN29EVStUNlZB?=
 =?utf-8?B?RkFSZ0dCUDJSVzNFU2dncmk5RnlkaWlnZ0JuQll1TlBmVjlQR2RkNXNJQWhW?=
 =?utf-8?B?aDRBZW9VQ0FzMklleFdqaGlDZ1VJRzI2VWswQVFRRlZMb05JcmNiMWlPOThF?=
 =?utf-8?B?K0c4N0xJa1FMbm5PemRBb0ZGWTlNRXpKM1d1Y1h1SVU5K21tS3dtNVZLaURz?=
 =?utf-8?B?d0RMSWNRbTlaMlBmYUZZcGxZdlZ4SG1EcTRYZTRwL1dLUVZNcWFweWxQdG9H?=
 =?utf-8?B?TlN1dGlqTldpdmlBRyt5OHB0U0FOc0M2R0NPWU90enZ6YThzbnhRaFliWjhs?=
 =?utf-8?B?ZEw4MVhaZi9ob2NHM205OUVpZlZWVDMzeGNPeFgrR2hNL1BLOGZrKzlzRGRZ?=
 =?utf-8?B?MGV4YlF4cEJQSXJ3bnpGVENOSG9McGlSNEFnellITGJCQTFQcVA1QVdEWWNT?=
 =?utf-8?B?c25PdWROb2puWmJOVkgrK1drbERCMFA5NlZTdmdKRzFjUEc3ZG5xRy93cVoy?=
 =?utf-8?B?ZTNWQzFDeDBkZkRMQWFVM2l3YU50VkZtdXE3RXNMRkJ0L1k5VjBjMmxJWmNF?=
 =?utf-8?B?aUROSGZWTzJHOXFDL0dpV1M4YWY0d2tnMTRhL0FBUG1mK0pUN1RQdEo1Smlv?=
 =?utf-8?B?c3hUcHR1RWJqN2htbVMzS0lvZzRzZnV2bmxneGdjdk1RTFhpS0c0M1BURUI3?=
 =?utf-8?B?UzQ3YkN2UTZxUVVIZ2ZnOW02VXdDVE1KdFVMUUdsN3Y3eCtXLy84SzFhZTZV?=
 =?utf-8?B?RGtsMkhtRmF4SVpJeEJKMDZqdFNlQ00yVm0xMGhUdzJoWXhQVW02RWMvYk1r?=
 =?utf-8?B?SzAvVjVaUWpsdlZUdXJNdTFNTkVkZllBOFNaWVhPN0FlWlFEczdlaGxKb3Fi?=
 =?utf-8?B?c0RDSzMxMVI1UUpUYklEVENMT2ZDdTc0cllFRWFMR2tTRzl0MW9Lc3pTQzNx?=
 =?utf-8?B?RkpFdlBsbzVBVzlCVWtMd3RkSmhCMDNIR0EyZWlXZXlETG94U3BxRk9ZclJW?=
 =?utf-8?B?cXorc2w3Z1VqY2dLRFBLbzg1SGVZZHFNNDg5TVFCVEtWcWJrZ1lsR2hyWlQr?=
 =?utf-8?B?aXh4RHVsMjlMYTJhanJtV0NQNTFaNzM1NUptMHJnekhJSkNPaUU5azhFTmow?=
 =?utf-8?B?NGFmZW81MzR4YXZid2VLZGxqdkJtWW1ka2t0bWJ5R3BkdXQvZlQ3dW0rUUlu?=
 =?utf-8?B?aVZMYm4wMWxBQ0pxTGJXUTZXaTNjZytxcFdKZUJvQklJOXI5aXRadWhhbTZZ?=
 =?utf-8?B?WU9UWE5MU1hKaklXRk50eUV1b1M1UFpMYUtKZ3ZYNmdpZ00rOWF4dE83NGsz?=
 =?utf-8?B?S0YxUldpbHNHZW15YzRKWm5Zd1Z1YzR6Skh2ZmFSZTBldkRnbzdKc1Z0Ky9m?=
 =?utf-8?B?RnRDeS9hRlQvZVdFaldRM1hzNjhObFo4TlB4QzgwYzNlU2RBWGtoRXJmblBG?=
 =?utf-8?B?dytRZ1JmUFpGajljcHJwSGd3d3V4bFJsMEN1c3ZsdTQvZlAwVko4VGtqTFE5?=
 =?utf-8?B?bjhGRFBQa2VDY0NuZzlNT2l4Rko5Q3pUZjFqSGVlTmtGK1dIQmlPZVhwMzdm?=
 =?utf-8?B?TjZNK1JrbTM5VDdOZUFmZ3ZNWDJtWmJLeXYyK25ncEx3K3BnTGVUNDZPZlBQ?=
 =?utf-8?B?c3hVUzV1MlFUYkN0K0FmbU0ySWZ5YWhhMFdTN29ZaHY2MC9jWGlLS2c4Umpw?=
 =?utf-8?B?NUkzd05QT2NzOVFzR2tzUXBKWEVqZDlscnQzYTNMUFM4QnhoTTRLdz09?=
X-OriginatorOrg: citrix.com
X-MS-Exchange-CrossTenant-Network-Message-Id: 984db426-888d-4912-a2f6-08dea07a302b
X-MS-Exchange-CrossTenant-AuthSource: CH7PR03MB7860.namprd03.prod.outlook.com
X-MS-Exchange-CrossTenant-AuthAs: Internal
X-MS-Exchange-CrossTenant-OriginalArrivalTime: 22 Apr 2026 14:19:38.9766
 (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: DyqE8EEJ6rnp5XWzaOURu98BZknokZQ5Zpotb950Y//zx40JQLzhsk5Hw9cL0QyUBzGo3ZUj681GscR1MD2RUQ==
X-MS-Exchange-Transport-CrossTenantHeadersStamped: SJ0PR03MB5791
X-purgate-ID: tlsNG-33051d/1776867583-2B161938-323535BB/0/0
X-purgate-type: clean
X-purgate-size: 15976

On Thu, Apr 09, 2026 at 02:01:34PM +0000, Mykyta Poturai wrote:
> From: Stewart Hildebrand <stewart.hildebrand@amd.com>

The "From" should match the first SoB IIRC.

> This code is expected to only be used by privileged domains,
> unprivileged domains should not get access to the SR-IOV capability.
> 
> Implement RW handlers for PCI_SRIOV_CTRL register to dynamically
> map/unmap VF BARS. Recalculate BAR sizes before mapping VFs to account
> for possible changes in the system page size register. Also force VFs to
> always use emulated reads for command register, this is needed to
> prevent some drivers accidentally unmapping BARs. Discovery of VFs is
> done by Dom0, which must register them with Xen.
> 
> Signed-off-by: Roger Pau Monné <roger.pau@citrix.com>
> Signed-off-by: Stewart Hildebrand <stewart.hildebrand@amd.com>
> Signed-off-by: Mykyta Poturai <mykyta_poturai@epam.com>
> ---
> v2->v3:
> * rework adding VFs with multiple mapping operations support
> * use private.h
> * style fixes
> * fixup cleanup_sriov
> * emulate command register read for VFs
> 
> v1->v2:
> * switch to VF discovery by Xen
> * fix sequential vpci_modify_bars calls
> * move documentation changes to a separate commit
> ---
>  xen/drivers/vpci/Makefile  |   1 +
>  xen/drivers/vpci/header.c  |   6 +-
>  xen/drivers/vpci/private.h |   1 +
>  xen/drivers/vpci/sriov.c   | 314 +++++++++++++++++++++++++++++++++++++
>  xen/include/xen/vpci.h     |   7 +-
>  5 files changed, 327 insertions(+), 2 deletions(-)
>  create mode 100644 xen/drivers/vpci/sriov.c
> 
> diff --git a/xen/drivers/vpci/Makefile b/xen/drivers/vpci/Makefile
> index 9793a4f9b0..8b0e3c03a7 100644
> --- a/xen/drivers/vpci/Makefile
> +++ b/xen/drivers/vpci/Makefile
> @@ -1,3 +1,4 @@
>  obj-y += cap.o
>  obj-y += vpci.o header.o rebar.o
> +obj-y += sriov.o
>  obj-$(CONFIG_HAS_PCI_MSI) += msi.o msix.o
> diff --git a/xen/drivers/vpci/header.c b/xen/drivers/vpci/header.c
> index 451cdd3a6f..a36285672e 100644
> --- a/xen/drivers/vpci/header.c
> +++ b/xen/drivers/vpci/header.c
> @@ -869,7 +869,8 @@ int vpci_init_header(struct pci_dev *pdev)
>       * PCI_COMMAND_PARITY, PCI_COMMAND_SERR, and PCI_COMMAND_FAST_BACK.
>       */
>      rc = vpci_add_register_mask(pdev->vpci,
> -                                is_hwdom ? vpci_hw_read16 : guest_cmd_read,
> +                                is_hwdom && !pdev->info.is_virtfn
> +                                ? vpci_hw_read16 : guest_cmd_read,

Why are you using the guest command register handler for VFs?  A
hardware domain should still be able to read the native VF hardware
value, as it knows it's a VF.  Otherwise this needs a comment
explaining why it's needed.

>                                  cmd_write, PCI_COMMAND, 2, header, 0, 0,
>                                  is_hwdom ? 0
>                                           : PCI_COMMAND_RSVDP_MASK |
> @@ -900,6 +901,9 @@ int vpci_init_header(struct pci_dev *pdev)
>  
>      header->guest_cmd = cmd;
>  
> +    if ( pdev->info.is_virtfn )
> +        return vpci_vf_init_header(pdev);
> +
>      /* Disable memory decoding before sizing. */
>      if ( !is_hwdom || (cmd & PCI_COMMAND_MEMORY) )
>          pci_conf_write16(pdev->sbdf, PCI_COMMAND, cmd & ~PCI_COMMAND_MEMORY);
> diff --git a/xen/drivers/vpci/private.h b/xen/drivers/vpci/private.h
> index f012fd160d..8e0043ddbe 100644
> --- a/xen/drivers/vpci/private.h
> +++ b/xen/drivers/vpci/private.h
> @@ -45,6 +45,7 @@ typedef struct {
>      REGISTER_VPCI_CAPABILITY(PCI_EXT_CAP_ID_##name, name, finit, fclean, true)
>  
>  int __must_check vpci_init_header(struct pci_dev *pdev);
> +int __must_check vpci_vf_init_header(struct pci_dev *pdev);
>  
>  int vpci_init_capabilities(struct pci_dev *pdev, bool ext_only);
>  void vpci_cleanup_capabilities(struct pci_dev *pdev, bool ext_only);
> diff --git a/xen/drivers/vpci/sriov.c b/xen/drivers/vpci/sriov.c
> new file mode 100644
> index 0000000000..ec6a7b84d5
> --- /dev/null
> +++ b/xen/drivers/vpci/sriov.c
> @@ -0,0 +1,314 @@
> +/* SPDX-License-Identifier: GPL-2.0-only */
> +/*
> + * Handlers for accesses to the SR-IOV capability structure.
> + *
> + * Copyright (C) 2026 Citrix Systems R&D
> + */
> +
> +#include <xen/sched.h>
> +#include <xen/vpci.h>

Newline here ...

> +#include <xsm/xsm.h>

... and here preferably.

> +#include "private.h"
> +
> +static int vf_init_bars(const struct pci_dev *vf_pdev)

For sanity sake, vf_pdev shouldn't be const here.  We modify it, it's
just that the modified fields are different allocations (pdev->vpci).

> +{
> +    int vf_idx;
> +    unsigned int i;
> +    const struct pci_dev *pf_pdev = vf_pdev->pf_pdev;
> +    struct vpci_bar *bars = vf_pdev->vpci->header.bars;
> +    struct vpci_bar *physfn_vf_bars = pf_pdev->vpci->sriov->vf_bars;
> +    unsigned int sriov_pos = pci_find_ext_capability(pf_pdev,
> +                                                     PCI_EXT_CAP_ID_SRIOV);
> +    uint16_t offset = pci_conf_read16(pf_pdev->sbdf,
> +                                      sriov_pos + PCI_SRIOV_VF_OFFSET);
> +    uint16_t stride = pci_conf_read16(pf_pdev->sbdf,
> +                                      sriov_pos + PCI_SRIOV_VF_STRIDE);
> +
> +    vf_idx = vf_pdev->sbdf.sbdf - (pf_pdev->sbdf.sbdf + offset);
> +    if ( vf_idx < 0 )
> +        return -EINVAL;
> +
> +    if ( stride )
> +    {
> +        if ( vf_idx % stride )
> +            return -EINVAL;
> +        vf_idx /= stride;
> +    }
> +
> +    /*
> +     * Set up BARs for this VF out of PF's VF BARs taking into account
> +     * the index of the VF.
> +     */
> +    for ( i = 0; i < PCI_SRIOV_NUM_BARS; i++ )
> +    {
> +        bars[i].addr = physfn_vf_bars[i].addr + vf_idx * physfn_vf_bars[i].size;

You only want to set .addr if the BAR is populated? IOW: if the BAR is
of type VPCI_BAR_MEM{32,64_LO}.  Otherwise we are populating the .addr
field with junk.

> +        bars[i].guest_addr = bars[i].addr;
> +        bars[i].size = physfn_vf_bars[i].size;
> +        bars[i].type = physfn_vf_bars[i].type;
> +        bars[i].prefetchable = physfn_vf_bars[i].prefetchable;
> +    }
> +
> +    return 0;
> +}
> +
> +static int map_vfs(const struct pci_dev *pf_pdev, uint16_t cmd)
> +{
> +    struct pci_dev *vf_pdev;
> +    int rc;
> +
> +    ASSERT(rw_is_write_locked(&pf_pdev->domain->pci_lock));
> +
> +    list_for_each_entry(vf_pdev, &pf_pdev->vf_list, vf_list)
> +    {
> +        rc = vpci_modify_bars(vf_pdev, cmd, false);
> +        if ( rc )
> +        {
> +            gprintk(XENLOG_ERR, "failed to %s VF %pp: %d\n",
> +                    (cmd & PCI_COMMAND_MEMORY) ? "map" : "unmap",
> +                    &vf_pdev->sbdf, rc);
> +            return rc;
> +        }
> +
> +        vf_pdev->vpci->header.guest_cmd &= ~PCI_COMMAND_MEMORY;
> +        vf_pdev->vpci->header.guest_cmd |= (cmd & PCI_COMMAND_MEMORY);

You shouldn't be modifying the guest_cmd here, the hardware domain
should see the native VF command register.  Hardware domain knows it's
a VF.

> +    }
> +
> +    return 0;
> +}
> +
> +static int size_vf_bars(const struct pci_dev *pf_pdev, unsigned int sriov_pos,
> +                        uint64_t *vf_rlen)
> +{
> +    struct vpci_bar *bars;
> +    unsigned int i;
> +    int rc = 0;
> +
> +    ASSERT(rw_is_write_locked(&pf_pdev->domain->pci_lock));
> +    ASSERT(!pf_pdev->info.is_virtfn);
> +    ASSERT(pf_pdev->vpci->sriov);
> +
> +    /* Read BARs for VFs out of PF's SR-IOV extended capability. */
> +    bars = pf_pdev->vpci->sriov->vf_bars;

You can do the initialization at variable definition.

> +    /* Set the BARs addresses and size. */
> +    for ( i = 0; i < PCI_SRIOV_NUM_BARS; i += rc )
> +    {
> +        unsigned int idx = sriov_pos + PCI_SRIOV_BAR + i * 4;
> +        uint32_t bar;
> +        uint64_t addr, size;
> +
> +        bar = pci_conf_read32(pf_pdev->sbdf, idx);
> +
> +        rc = pci_size_mem_bar(pf_pdev->sbdf, idx, &addr, &size,
> +                              PCI_BAR_VF |
> +                              ((i == PCI_SRIOV_NUM_BARS - 1) ? PCI_BAR_LAST
> +                                                             : 0));
> +
> +        /*
> +         * Update vf_rlen on the PF. According to the spec the size of
> +         * the BARs can change if the system page size register is
> +         * modified, so always update rlen when enabling VFs.
> +         */
> +        vf_rlen[i] = size;
> +
> +        if ( !size )
> +        {
> +            bars[i].type = VPCI_BAR_EMPTY;
> +            continue;
> +        }
> +
> +        bars[i].addr = addr;
> +        bars[i].guest_addr = addr;
> +        bars[i].size = size;
> +        bars[i].prefetchable = bar & PCI_BASE_ADDRESS_MEM_PREFETCH;
> +
> +        switch ( rc )
> +        {
> +        case 1:
> +            bars[i].type = VPCI_BAR_MEM32;
> +            break;
> +
> +        case 2:
> +            bars[i].type = VPCI_BAR_MEM64_LO;
> +            bars[i + 1].type = VPCI_BAR_MEM64_HI;
> +            break;
> +
> +        default:
> +            ASSERT_UNREACHABLE();

While ASSERT_UNREACHABLE() is fine here, you still need to make sure the
code makes progress on non-debug builds, and hence rc should be set
to 1 so that the loop moves into processing the next BAR.

> +        }
> +    }
> +
> +    rc = rc > 0 ? 0 : rc;

This will only take into account the return code of the last
pci_size_mem_bar() call.  It might be best to either properly
accumulate errors, or simply make the function void, seeing as the
only caller ignores the return value.

> +
> +    return rc;
> +}
> +
> +static void cf_check control_write(const struct pci_dev *pdev, unsigned int reg,
> +                                   uint32_t val, void *data)
> +{
> +    unsigned int sriov_pos = reg - PCI_SRIOV_CTRL;
> +    struct vpci_sriov *sriov = pdev->vpci->sriov;
> +    uint16_t control = pci_conf_read16(pdev->sbdf, reg);
> +    bool mem_enabled = control & PCI_SRIOV_CTRL_MSE;
> +    bool new_mem_enabled = val & PCI_SRIOV_CTRL_MSE;
> +    bool enabled = control & PCI_SRIOV_CTRL_VFE;
> +    bool new_enabled = val & PCI_SRIOV_CTRL_VFE;
> +    int rc;
> +
> +    ASSERT(!pdev->info.is_virtfn);
> +
> +    if ( new_enabled == enabled && new_mem_enabled == mem_enabled )
> +    {
> +        pci_conf_write16(pdev->sbdf, reg, val);
> +        return;
> +    }
> +
> +    if ( mem_enabled && !new_mem_enabled )
> +        map_vfs(pdev, 0);
> +
> +    if ( !enabled && new_enabled )
> +    {
> +        size_vf_bars(pdev, sriov_pos, (uint64_t *)data);
> +
> +        /*
> +         * Only update the number of active VFs when enabling, when
> +         * disabling use the cached value in order to always remove the same
> +         * number of VFs that were active.
> +         */
> +        sriov->num_vfs = pci_conf_read16(pdev->sbdf,
> +                                         sriov_pos + PCI_SRIOV_NUM_VF);
> +    }
> +
> +    if ( !mem_enabled && new_mem_enabled )
> +    {
> +        rc = map_vfs(pdev, PCI_COMMAND_MEMORY);
> +
> +        if ( rc )
> +            map_vfs(pdev, 0);
> +    }
> +
> +    pci_conf_write16(pdev->sbdf, reg, val);
> +}
> +
> +int vpci_vf_init_header(struct pci_dev *vf_pdev)
> +{
> +    const struct pci_dev *pf_pdev;
> +    unsigned int sriov_pos;
> +    int rc = 0;
> +    uint16_t ctrl;
> +
> +    ASSERT(rw_is_write_locked(&vf_pdev->domain->pci_lock));
> +
> +    if ( !vf_pdev->info.is_virtfn )
> +        return 0;
> +
> +    pf_pdev = vf_pdev->pf_pdev;
> +    ASSERT(pf_pdev);
> +
> +    rc = vf_init_bars(vf_pdev);
> +    if ( rc )
> +        return rc;
> +
> +    sriov_pos = pci_find_ext_capability(pf_pdev, PCI_EXT_CAP_ID_SRIOV);
> +    ctrl = pci_conf_read16(pf_pdev->sbdf, sriov_pos + PCI_SRIOV_CTRL);
> +
> +    if ( (pf_pdev->domain == vf_pdev->domain) && (ctrl & PCI_SRIOV_CTRL_MSE) )
> +    {
> +        rc = vpci_modify_bars(vf_pdev, PCI_COMMAND_MEMORY, false);
> +        if ( rc )
> +            return rc;
> +
> +        vf_pdev->vpci->header.guest_cmd |= PCI_COMMAND_MEMORY;
> +    }
> +
> +    return rc;
> +}
> +
> +static int cf_check init_sriov(struct pci_dev *pdev)
> +{
> +    unsigned int pos;
> +
> +    ASSERT(!pdev->info.is_virtfn);
> +
> +    pos = pci_find_ext_capability(pdev, PCI_EXT_CAP_ID_SRIOV);
> +
> +    if ( !pos )
> +        return 0;
> +
> +    if ( xsm_resource_setup_pci(XSM_PRIV, pdev->sbdf.bdf) )
> +    {
> +        printk(XENLOG_ERR
> +               "%pp: SR-IOV configuration unsupported for unpriv %pd\n",
> +               &pdev->sbdf, pdev->domain);
> +        return -EACCES;
> +    }
> +
> +    pdev->vpci->sriov = xzalloc(struct vpci_sriov);
> +    if ( !pdev->vpci->sriov )
> +        return -ENOMEM;
> +
> +    /*
> +     * We need to modify vf_rlen in control_write but we can't do it cleanly
> +     * from pdev because write callback only accepts const pdev. Moving vf_rlen
> +     * inside of struct vpci_sriov is also not possible because it is used
> +     * before vpci init. So pass it here as additional data to not require
> +     * dropping const in control_write.
> +     */
> +    return vpci_add_register(pdev->vpci, vpci_hw_read16, control_write,
> +                             pos + PCI_SRIOV_CTRL, 2, &pdev->physfn.vf_rlen);
> +}
> +
> +static int cf_check cleanup_sriov(const struct pci_dev *pdev, bool hide)
> +{
> +    unsigned int pos;
> +    int rc;
> +
> +    if ( !pdev->vpci->sriov )
> +        return 0;
> +
> +    ASSERT(!pdev->info.is_virtfn);
> +    ASSERT(list_empty(&pdev->vf_list));
> +
> +    if ( !hide )
> +    {
> +        XFREE(pdev->vpci->sriov);
> +        return 0;
> +    }
> +
> +    pos = pci_find_ext_capability(pdev, PCI_EXT_CAP_ID_SRIOV);

You need to rework this a bit, after some recent changes access to the
ECAM space could disappear if dom0 signals that it's not OK to use
whatever memory range Xen was using.  Hence the position of the SR-IOV
capability needs to be cached at init time, so it can be removed here
regardless of whether access to ECAM has been lost/revoked.

> +    rc = vpci_remove_registers(pdev->vpci, pos + PCI_SRIOV_CTRL, 2);
> +    if ( rc )
> +    {
> +        printk(XENLOG_ERR "%pd %pp: fail to remove SRIOV handlers rc=%d\n",
> +                pdev->domain, &pdev->sbdf, rc);
> +        ASSERT_UNREACHABLE();
> +        return rc;
> +    }
> +    XFREE(pdev->vpci->sriov);
> +
> +    /*
> +     * Unprivileged domains have a deny by default register access policy, no
> +     * need to add any further handlers for them.
> +     */
> +    if ( !is_hardware_domain(pdev->domain) )
> +        return 0;
> +
> +    rc = vpci_add_register(pdev->vpci, vpci_hw_read16, NULL,
> +                           pos + PCI_SRIOV_CTRL, 2, NULL);
> +    if ( rc )
> +        printk(XENLOG_ERR "%pd %pp: fail to add SRIOV ctrl handler rc=%d\n",
> +               pdev->domain, &pdev->sbdf, rc);
> +
> +    return rc;
> +}
> +
> +REGISTER_VPCI_EXTCAP(SRIOV, init_sriov, cleanup_sriov);
> +
> +/*
> + * Local variables:
> + * mode: C
> + * c-file-style: "BSD"
> + * c-basic-offset: 4
> + * tab-width: 4
> + * indent-tabs-mode: nil
> + * End:
> + */
> diff --git a/xen/include/xen/vpci.h b/xen/include/xen/vpci.h
> index e34f7abe6d..fc8a943abe 100644
> --- a/xen/include/xen/vpci.h
> +++ b/xen/include/xen/vpci.h
> @@ -84,7 +84,6 @@ struct vpci {
>           * upon to know whether BARs are mapped into the guest p2m.
>           */
>          bool bars_mapped      : 1;
> -        /* FIXME: currently there's no support for SR-IOV. */

You want to add a note to CHANGELOG also to note the SR-IOV support
addition.

Thanks, Roger.


From xen-devel-bounces@lists.xenproject.org Wed Apr 22 14:20:51 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 22 Apr 2026 14:20:51 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1290665.1570207 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wFYRe-0008OV-TU; Wed, 22 Apr 2026 14:20:50 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1290665.1570207; Wed, 22 Apr 2026 14:20: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 1wFYRe-0008OO-Qs; Wed, 22 Apr 2026 14:20:50 +0000
Received: by outflank-mailman (input) for mailman id 1290665;
 Wed, 22 Apr 2026 14:20:49 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <roger.pau@citrix.com>) id 1wFYRd-0008OI-BH
 for xen-devel@lists.xenproject.org; Wed, 22 Apr 2026 14:20:49 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wFYRb-00FbSC-6c
 for xen-devel@lists.xenproject.org; Wed, 22 Apr 2026 16:20:48 +0200
Received: from [10.42.69.10] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <roger.pau@citrix.com>)
 id 69e8d934-2eae-0a2a0a5409dd-0a2a450a8580-46
 for <xen-devel@lists.xenproject.org>; Wed, 22 Apr 2026 16:20:48 +0200
Received: from [52.101.61.25]
 (helo=DM1PR04CU001.outbound.protection.outlook.com)
 by tlsNG-4011c0.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.1)
 (envelope-from <roger.pau@citrix.com>)
 id 69e8d93f-56b3-0a2a450a0019-34653d19e217-3
 for <xen-devel@lists.xenproject.org>; Wed, 22 Apr 2026 16:20:48 +0200
Received: from CH7PR03MB7860.namprd03.prod.outlook.com (2603:10b6:610:24e::14)
 by SJ0PR03MB5791.namprd03.prod.outlook.com (2603:10b6:a03:2d4::23)
 with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9846.16; Wed, 22 Apr
 2026 14:20:44 +0000
Received: from CH7PR03MB7860.namprd03.prod.outlook.com
 ([fe80::f5ba:35df:1c9f:b343]) by CH7PR03MB7860.namprd03.prod.outlook.com
 ([fe80::f5ba:35df:1c9f:b343%4]) with mapi id 15.20.9846.016; Wed, 22 Apr 2026
 14: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>
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=JMp9Pgpz6ecvM+2c9QzDLLI2dH/oqVDwFavNeTQYmCuYHu/vXZqsdhJvPCMKnusEJQwgw5QpNTV3MhjDgTKa6Adx4l7/th72SLi8CZyvSxNygQC+MbAWex6RNGdTBZsQJMVOigMD9LN/bS7Bxk7XX7+lEQTvTjUWaM93n7ud7JTZiNo7hU5gAGX0MO3KIaQSvzqiP2myVKfsnJT5TMcPnp7a0WwRSYxhHKMM50V1ja9km+JxaVus+Zujlfor4kfF8VFIOrJq+vcTn7NJlVYEyXsMrV59P2MT0xms1RpJykiZ04aUHA5Lp1XX3wJCMEVDJxFYtAWM+2Tda7ZR/EqFFQ==
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com;
 s=arcselector10001;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1;
 bh=99OiKGDnxp4LBctIajbTg5YIo2P4crnt3EVyBBz3HMo=;
 b=sXtzLHZ05NspeuLJ3TBJ1e2ldD8NE0bgGW5HdGnQagaP77ebhI61PHMW+d2JJBz4Ib5EpwrgIiwmMljKb+ePdfz+E2hXKQkprlreEmn7BycAO1+y21/y31LS45AY+6glZhtjJzpJkz89wzAYclLVnWg7vQbbwF1VWgQAv4FsSL8ESMAi/HcQZPSmz8nwZkW3iCHCj9XIquwXYSB0e/h1W2SBDITeM/e2YgiNNlLmqoYLmWtSYawLyRU+WEIoTYvzh0mRW8ZmQd9YnUZatA3LsqKFH5up5nlp8WTm70ZXzIXjDLv4oNmSdEG5zt/SrZxF7Syl+WlAVe+e4icJZdyhSA==
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=99OiKGDnxp4LBctIajbTg5YIo2P4crnt3EVyBBz3HMo=;
 b=c5zuqbxWMjp8wzUPim/ONEwMTy2hMdFd+0ANclevlnFwJrIU80/8EDsvEgaJguW9RadVL+u5ivFm1HSbMLGPq3YkNkL/0S8uQZ4iFSdktCKia5DhVY0K/SuXfSWeWf8h6A2RN3HOJJYpL+rKCrpwJ4QwwP51PFo738/V1/x+FTE=
Authentication-Results: dkim=none (message not signed)
 header.d=none;dmarc=none action=none header.from=citrix.com;
Date: Wed, 22 Apr 2026 16:20:41 +0200
From: Roger Pau =?utf-8?B?TW9ubsOp?= <roger.pau@citrix.com>
To: Jan Beulich <jbeulich@suse.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>, Julien Grall <julien@xen.org>,
	Stefano Stabellini <sstabellini@kernel.org>,
	Stewart Hildebrand <stewart.hildebrand@amd.com>,
	Mykyta Poturai <Mykyta_Poturai@epam.com>
Subject: Re: [PATCH v3 3/7] vpci: Use pervcpu ranges for BAR mapping
Message-ID: <aejZOaUsoN3n6CMb@macbook.local>
References: <cover.1775742115.git.mykyta_poturai@epam.com>
 <51223761a1f2b8f1e901062d1e59dad934300f0e.1775742115.git.mykyta_poturai@epam.com>
 <aeiqayUd4sLNEPGG@macbook.local>
 <5854f2f8-21b6-4462-a9bb-86345a436f6f@suse.com>
Content-Type: text/plain; charset=utf-8
Content-Disposition: inline
Content-Transfer-Encoding: 8bit
In-Reply-To: <5854f2f8-21b6-4462-a9bb-86345a436f6f@suse.com>
X-ClientProxiedBy: MN2PR18CA0013.namprd18.prod.outlook.com
 (2603:10b6:208:23c::18) To CH7PR03MB7860.namprd03.prod.outlook.com
 (2603:10b6:610:24e::14)
MIME-Version: 1.0
X-MS-PublicTrafficType: Email
X-MS-TrafficTypeDiagnostic: CH7PR03MB7860:EE_|SJ0PR03MB5791:EE_
X-MS-Office365-Filtering-Correlation-Id: bfa9e5d1-a5ee-4383-8670-08dea07a572a
X-MS-Exchange-SenderADCheck: 1
X-MS-Exchange-AntiSpam-Relay: 0
X-Microsoft-Antispam:
	BCL:0;ARA:13230040|366016|1800799024|376014|22082099003|56012099003|18002099003;
X-Microsoft-Antispam-Message-Info:
	+zDj51+Nw5ANI6mRX6B3RhhmpeX0M7nR50t1ePu4Tb6ykBCgJKyE81R0A39uNk4LEOFInljKnvDNgzvrQCkjV7aLKj9YxhIgJgYoNUvfDNthU05Z6IG5Q3g7lBN9//XJs7eTOiWlXdjJS/8pIqnaL0xu+xxOq3KVExU8p42Xz/NfCxZEGl/4sGkB6/5Z0KV+YAjMNLQj6Lzm/JvUlOS32Eg/Wmm2t98JHkGdA26pn/gdZpgkAmN9gJPYwOd0D91VgC2Ki1yK7Duwg7OxDRwkhGv3ju/d+KDbmJFWlEyxOHcKIC+farH8ORbE9eDFDw6fiGxK/l04XfvkbcL+wKpzN4XWsGPNWQOqeQPCrckrAeQ2Ld4IHYmbI9+mHlFJ3DgC85ZRylIuiIqQ+rkP3xrQJeQRwCan1bBLiNrVPiD1U8cUcEb5d1bPbXdCzAiBPpVqRqgz/mHhQPwYmPuaWuVM2aRZb959xguQAKXf0IxksR4HdJWS+DQpzs1X0zTufMN9o4Sl66tT2c9DfbhF1HZ+QoL8AHu3ajyoSMzTaPmRUQIr97MJKQg7oZeA76fKkaoaV6SqtB9/YCPe4IqmodtY7AwCDt52BS9+iDhvRNg+YhHvcDwK4tTaTMw7P3H/pGpFXe7/5ejrBWSxeooFuP3uPnnhhKWg1bk6MaYnZu1GgJ7uvHOQI5i3njrNkb/bIzA/ny7uJzfJrJDqJwPn0hoRcmqlCYSWD25BEJPrH5K7hP8=
X-Forefront-Antispam-Report:
	CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:CH7PR03MB7860.namprd03.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(366016)(1800799024)(376014)(22082099003)(56012099003)(18002099003);DIR:OUT;SFP:1101;
X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1
X-MS-Exchange-AntiSpam-MessageData-0:
	=?utf-8?B?eDFJeHNWRjR0eUwzNXFnQVFMZHU5Q0VoSW4yb3B3b3MySHhvZFJaaDUvWVpj?=
 =?utf-8?B?S2JSQTRmOHVTWm9NNWpidXdEWWJDM0pWQUhmbFppanpXdTczZnNUR3hGb2FQ?=
 =?utf-8?B?bTVDYmR0K2pOZGxwMlR5ZW5MV1BlTnFTMy9PZXF1RHRKTFFRMS9wZzFqRWR0?=
 =?utf-8?B?RWFMaHNwWGl0cHNKRkRUTUJiNFpnUEVQWm1rVHZvb2JlaVhjelNDQVdvQVRR?=
 =?utf-8?B?aUw2aTNlREVxS3N0MEtzZlJsVlFSeGVjTU1iTzlEbkV1V2pKbjNRNHVuMjR1?=
 =?utf-8?B?M0FudEdFR0RnaFhqMEw4elhyUVBVYmJUb3JiM3NVWmcyMTYya1FRT3RMUXFG?=
 =?utf-8?B?YXFuSmlETHNTT3BSS0g3QjdYUWpiTTNvSlMzSzBDSzBZSUt2SGhzL2Fnblo3?=
 =?utf-8?B?ZUU3Y1crTXVwWmtzNUR6N25BL2l2UHB1NlhFdytNdTdJdUoyRUlCenZSdmJz?=
 =?utf-8?B?QWRaWHVnVitpcSs5QWpHa0pRaGNGT1AvR0VLS01GYUt5MWcybldhWFBrL1pF?=
 =?utf-8?B?NzIyN0JQV3A3Vm5ZQUwwSDRtY3VwSlM5UjVlbkxENGw4dEdoMVdPOTJSaDc0?=
 =?utf-8?B?UGpxN0h3TXlZcDRXbDhOemt6OXJzZVBpaUpNdFQweldlMDJldGVraXljWGJi?=
 =?utf-8?B?SGFMblVBaEtOWitxMjRNNVMwK09XaGp1QXhvWVBlR3BITlkweFA1S29rS0ha?=
 =?utf-8?B?bm9IVjRkU2Irc0ZJdktUV3NDVzlSN1AwdnBITmJHQTVkTm0wS3l6T1hsS0Zz?=
 =?utf-8?B?RWg4MEpYMUZSN2paNWc0ZzVIK0VZSHNadUMvYk80Y2NRNHBqdzV4Z3hUVWtp?=
 =?utf-8?B?NFRPZU9laUpUS0JLQWtvcXhwRmlxYXdMSElOU0VYQjFyWTBTSHEvdjBlRHJz?=
 =?utf-8?B?ZVMwcjBPWnVyaUptMTJrTC8rdTkvRTZSWE00Y0ZyUVI4STVxcFI5N0ZCMHRx?=
 =?utf-8?B?YldXSTZLbUpWSnlkK2JYVmVIL3pWK1pEK0lNQ1MxaURjbngxSXhMUFN1RTdh?=
 =?utf-8?B?S2VlU2ZpM3BRNUVHWFRkU3Q1aFZwSEtkMTFoK0xmNGRZVWJIZ0YybXJzdzZy?=
 =?utf-8?B?M0lrTlFFbzVZYUtHdWJHcWFUOHF2Mk43Nkt5Mng2RWorMWZLcFRlYTR2OHM2?=
 =?utf-8?B?Y2xqSllwUVgzcHlhbkhqdWx1ZnRndmxkdWkwQytkcWJ2eVdCb0VQdGFDM212?=
 =?utf-8?B?dEJQQTYzdEZ6dEd6OHRGc1VscnR4TkNocXVQREp4d3hBN3lmVGdOazJEbG12?=
 =?utf-8?B?ZVN3SnpVakNTWUZlOHJ5RVRqQ0xjLzhRcjBWOHdDd2xidm1vTXl2aDdHNzYz?=
 =?utf-8?B?NDZEaVVjT09KRUFDU3crWlFhZVJnU0dHNWJnVXB3SVhtdHdDVEUwRGFFampv?=
 =?utf-8?B?TzRSMzZuemJKWVpaUmNERld5bkJQZ3JHcDM0UzR1OHRCMVRIazNSL1dLSzhJ?=
 =?utf-8?B?cjBFcXVxcG9tcWUyUDdlSkJMVGhOb1hLSzlJN2hCdU1OcXNtYnhrUUhmTXNx?=
 =?utf-8?B?ZllIVk5DYzI4U2UvS1hEVVRmaUhoQ1FXQU1lUE1RNkdEZUlaRXFETGNmOXdM?=
 =?utf-8?B?dlhTTVpYaitsc0h5a1ZuT2pIOU1YKzJCSFFQck9qbTZ3TFpTV1o3QjFwcXpk?=
 =?utf-8?B?b0YraUdjdzR4S0tEdDcyZHdyR0JFYVQvKzd2ZnFQR1hSazFrVzZKcms5bXJs?=
 =?utf-8?B?bTRzaExXbHhZaEZqbk0zQWNsTERCYzE0L2pPNEgwbGNJQlhteFlpVzQ2TWxo?=
 =?utf-8?B?cEg3V25uUDZhWEh4aEZJT3kyVEU0YU5TRllwZ0xJQ0s2TnRmYW1raGJJdnBE?=
 =?utf-8?B?K213NkVERUpxa3ovZzdHaXJ0ZCtVYjBUUWU5T0c3ajlTTDBhU05sZzNBalo5?=
 =?utf-8?B?ZjVRdnh1eTFWeTlhM0p0Rmh1N1dlRTZnR0xjMFV3ekVnNjhRNFAxUTUzRkts?=
 =?utf-8?B?UHRCQlZwVHRiK2luSERyQmVHQTdrZDFmQnVuN1lUVlJiZjk2UFA5TEcwSVVI?=
 =?utf-8?B?ZlVPeGRHVzRsbTlDa1E3Nzh4ZGxhb0VUL084VlBCZ0VDcEhzejZGK3NtSVMy?=
 =?utf-8?B?L0hGN3AwNlVGK3ZlUTZ1cTRra1ZmeVRxbWVwQXkxYTFPZ0ZuTGpTNksxTTJu?=
 =?utf-8?B?emJqOUpkdjAxSE5aL1RNTDdHSjBQbHRYdTJ4ZjlBb2Uvb24rQ0VZYWlMSGZS?=
 =?utf-8?B?VlNZazFWQjAyZGZ6S0Z6Wm05SlZFZExFYndueTkvQm5JbTBaM1hCQ3ZELzRa?=
 =?utf-8?B?b2E0eTI0WmRsOFZtcGFHRVNXcDl4cmVZSTZEQVY0cUdUTlVFM0cyVXFxVUJ0?=
 =?utf-8?B?TmFHZkxENWt2dGIxc3BPejlGYnkwYkhmbmt3TnI2Ump2YURWeGYydz09?=
X-OriginatorOrg: citrix.com
X-MS-Exchange-CrossTenant-Network-Message-Id: bfa9e5d1-a5ee-4383-8670-08dea07a572a
X-MS-Exchange-CrossTenant-AuthSource: CH7PR03MB7860.namprd03.prod.outlook.com
X-MS-Exchange-CrossTenant-AuthAs: Internal
X-MS-Exchange-CrossTenant-OriginalArrivalTime: 22 Apr 2026 14:20:44.6171
 (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: 6PDWbmGsGNd+pUuyUnl12HrzF6U74pT54dDt6KDCtlcnKnopAIMWoRODPlwnHk6UbIkpCiG3ZGKePEjo7UQ17g==
X-MS-Exchange-Transport-CrossTenantHeadersStamped: SJ0PR03MB5791
X-purgate-ID: tlsNG-4011c0/1776867648-8047C8B7-186E1E90/0/0
X-purgate-type: clean
X-purgate-size: 1187

On Wed, Apr 22, 2026 at 02:04:59PM +0200, Jan Beulich wrote:
> On 22.04.2026 13:00, Roger Pau Monné wrote:
> > On Thu, Apr 09, 2026 at 02:01:33PM +0000, Mykyta Poturai wrote:
> >> @@ -412,14 +414,14 @@ int vpci_modify_bars(const struct pci_dev *pdev, uint16_t cmd, bool rom_only)
> >>          unsigned long end = PFN_DOWN(vmsix_table_addr(pdev->vpci, i) +
> >>                                       vmsix_table_size(pdev->vpci, i) - 1);
> >>  
> >> -        for ( j = 0; j < ARRAY_SIZE(header->bars); j++ )
> >> +        for ( j = 0; j < ARRAY_SIZE(current->vpci.mem); j++ )
> > 
> > You make a non-trivial use of current in vpci_modify_bars(), maybe you
> > should consider introducing a local variable for it:
> > 
> > struct *vcpu curr = current;
> 
> Without any intention to negate this, ...
> 
> > current expands to a call to get_cpu_info(9, which is better to avoid
> > doing repeatedly, specially in the context above which is used as a
> > loop upper bound.
> 
> ... I'd like to point out that "current" isn't evaluated when used by
> ARRAY_SIZE() (resolving to two uses of sizeof()).

Oh indeed, this is just for getting the type.

Thanks, Roger.


From xen-devel-bounces@lists.xenproject.org Wed Apr 22 14:23:56 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 22 Apr 2026 14:23:56 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1290672.1570218 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wFYUc-0000Wy-CA; Wed, 22 Apr 2026 14:23:54 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1290672.1570218; Wed, 22 Apr 2026 14:23: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 1wFYUc-0000Wr-7L; Wed, 22 Apr 2026 14:23:54 +0000
Received: by outflank-mailman (input) for mailman id 1290672;
 Wed, 22 Apr 2026 14:23:52 +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 1wFYUa-0000Wi-M9
 for xen-devel@lists.xenproject.org; Wed, 22 Apr 2026 14:23:52 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wFYUa-007YCj-2q
 for xen-devel@lists.xenproject.org; Wed, 22 Apr 2026 16:23:52 +0200
Received: from [10.42.69.12] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <jgross@suse.com>)
 id 69e8d9f3-2eae-0a2a0a5409dd-0a2a450c800a-4
 for <xen-devel@lists.xenproject.org>; Wed, 22 Apr 2026 16:23:52 +0200
Received: from [209.85.218.51] (helo=mail-ej1-f51.google.com)
 by tlsNG-d25034.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.1)
 (envelope-from <jgross@suse.com>)
 id 69e8d9f7-62f1-0a2a450c0019-d155da33ccee-3
 for <xen-devel@lists.xenproject.org>; Wed, 22 Apr 2026 16:23:51 +0200
Received: by mail-ej1-f51.google.com with SMTP id
 a640c23a62f3a-baa8c78ac7fso211595166b.0
 for <xen-devel@lists.xenproject.org>; Wed, 22 Apr 2026 07:23:51 -0700 (PDT)
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
 a640c23a62f3a-ba451210e49sm567647166b.10.2026.04.22.07.23.49
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Wed, 22 Apr 2026 07:23:50 -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=google header.d=suse.com header.i="@suse.com" header.h="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=1776867831; x=1777472631; darn=lists.xenproject.org;
        h=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;
        bh=WCfyiIcvp3WhdAG7xWq8cf0+9Do9BN8IgUjxfRwwRQg=;
        b=CALBc0kLTl0Y4U6sm9EYjrIX+Kmv/+rtohXzTNYtXsatiUkKQ8Qz0zwh5A3qD969ib
         GHmNpsY2kCCCzBLDz5pCMinrkfYKif8C5wtK//seKaImktAF+3fazn/N3yfxCz9Qy752
         bxM/fMv5huOnM70FeXJfVv8WVugxf44JLEoLwCvG4h3T9dPhl+ZxLV08gSPdd9tld1g5
         XorkJDJe3ytd97ZMANWuRuYgaftSoOlBaeo9ZFyAndESnF9mR03jEpJLs8jgqXfjaXnf
         n8VBRFr+X8nNpozHJf/Pu+OkDTwSsjHbOCCGvUIyyGJolBIWjsDA1NEKIJgsIrVoSHFp
         gSpg==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20251104; t=1776867831; x=1777472631;
        h=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;
        bh=WCfyiIcvp3WhdAG7xWq8cf0+9Do9BN8IgUjxfRwwRQg=;
        b=FNiHIuDF5V9qwA+sMcW+htKdUGSXX4zvPUNE6qh41+OX0L5JIuFIQ/5YZ6Z2X0YMQ/
         mLNgdWHHMN1jZWXm2nljGZdR/5IjnrrRLg6Z1SHDgLI856zL+oIuTZov4f1rfJaQ75Zr
         m3I54k8qf8ggaLys0hnvYwwM+jIrjcp6JGii5rL8hk+9a2Hb2rUG2llSOwZg9qhyzeWc
         79LJCOyrbzevGLE7/OCc6RHBdMrk/SJBp06dfDij2aWINC7ieBnVyFgyMd4zPmeVGKq9
         ufJAI254V4jR17IOc7V4AA/vEnfrf7/EYY7Zo8Nb57BW1EDFR/jOE9ACFyqogoPlJreF
         RETw==
X-Gm-Message-State: AOJu0YxH33lBQnyWTygAZ7nDoey7j7rYhm44AgP7Zk9iYtbedDCO2vdU
	mFAI73FBaxzWmJmaP+YmMr29gauJAaiYS2f6zsJUPScnWtjXZUp7pJD2Sp7gkP8aJQw=
X-Gm-Gg: AeBDiev5AaWDlXCZZGfDDu+5Rmgenye8v207CmsjEZoYNdmjSADPFotqOiwiscd3rmI
	oKn9hdSCiDIA1j3u5CIOrDXs299Ru0MsFtPkx1msSzat5FXRqrex8qRPmwd+xlyMuGASXF8+ujo
	lGoB4jOUp7xhponU9xC1PzYkcHQC53y4Bg/e4fWx7tDGILkGaime/Q++EBcz3yp/6JSNyoMDCtu
	bwqWQgj9w0bNiS5uIpnS4LYfOgMqc09bC94LEWeVtYfn+b/sMBIWIJcm2I2aidBOY3J0nwXZyam
	H6X9xuvGykqscUBKX5ykBnuZ6OzfuP3BeUV5xTMkitJQ8rVBbsKut6fakVv1JdzKRWdIKNf7PnA
	EzW4Lb4/cuWkhO3I6PNEE9iP5RSK4zxmm1IFZ/aPaS6Qgt7QbbnhDfQCCxX1JgvahjAEeqOCG9m
	QTgCvA0rxKtVzAR0/mhwtgEzO5ks5hcHB7EOUtJyRRBNxDnf5RBGFjvAADfN9LzN/32oLXBfzlj
	WgQ5nU+T0Q/XF7LvSWJyht9FUPERE1nKYysNPCqvPuljr+AH/X2wKilu4Os5YpCOg6YlU0A60c=
X-Received: by 2002:a17:907:d40e:b0:ba2:e022:c146 with SMTP id a640c23a62f3a-ba41b3e451amr1190778066b.43.1776867830373;
        Wed, 22 Apr 2026 07:23:50 -0700 (PDT)
Message-ID: <92df43ee-10d5-44a2-95db-40ba6d50be79@suse.com>
Date: Wed, 22 Apr 2026 16:23:49 +0200
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH v7] xen/domain: introduce DOMID_ANY
To: Anthony PERARD <anthony.perard@vates.tech>, dmukhin@ford.com
Cc: xen-devel@lists.xenproject.org, andrew.cooper3@citrix.com,
 jbeulich@suse.com, julien@xen.org, michal.orzel@amd.com,
 roger.pau@citrix.com, sstabellini@kernel.org
References: <20260408234046.1314021-1-dmukhin@ford.com>
 <1776866876.8631fc262581453bbf619ec5b2062170.19db584dbc0000f373@vates.tech>
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: <1776866876.8631fc262581453bbf619ec5b2062170.19db584dbc0000f373@vates.tech>
Content-Type: multipart/signed; micalg=pgp-sha256;
 protocol="application/pgp-signature";
 boundary="------------ZVvIS81M8DFT0VBmW25XLMYd"
X-purgate-ID: tlsNG-d25034/1776867831-F6809CF5-889F0C03/0/0
X-purgate-type: clean
X-purgate-size: 10226

This is an OpenPGP/MIME signed message (RFC 4880 and 3156)
--------------ZVvIS81M8DFT0VBmW25XLMYd
Content-Type: multipart/mixed; boundary="------------dNXgFXAAhol0vXtEpcV0ui5x";
 protected-headers="v1"
From: Juergen Gross <jgross@suse.com>
To: Anthony PERARD <anthony.perard@vates.tech>, dmukhin@ford.com
Cc: xen-devel@lists.xenproject.org, andrew.cooper3@citrix.com,
 jbeulich@suse.com, julien@xen.org, michal.orzel@amd.com,
 roger.pau@citrix.com, sstabellini@kernel.org
Message-ID: <92df43ee-10d5-44a2-95db-40ba6d50be79@suse.com>
Subject: Re: [PATCH v7] xen/domain: introduce DOMID_ANY
References: <20260408234046.1314021-1-dmukhin@ford.com>
 <1776866876.8631fc262581453bbf619ec5b2062170.19db584dbc0000f373@vates.tech>
In-Reply-To: <1776866876.8631fc262581453bbf619ec5b2062170.19db584dbc0000f373@vates.tech>
Autocrypt-Gossip: 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
 Y2ggPGpiZXVsaWNoQHN1c2UuY29tPsJ3BBMRAgAgBQJZN5xEAhsDBgsJCAcDAgQVAggDBBYC
 AwECHgECF4AAIQkQoDSui/t3IH4WIQQ+pJkfkcoLMCa4X6CgNK6L+3cgfgn7AJ9DmMd0SMJE
 ePbc7/m22D2v04iu7ACffXTdZQhNl557tJuDXZSBxDmW/tLOwU0EWTecRBAIAIK5OMKMU5R2
 Lk2bbjgX7vyQuCFFyKf9rC/4itNwhYWFSlKzVj3WJBDsoi2KvPm7AI+XB6NIkNAkshL5C0kd
 pcNd5Xo0jRR5/WE/bT7LyrJ0OJWS/qUit5eNNvsO+SxGAk28KRa1ieVLeZi9D03NL0+HIAtZ
 tecfqwgl3Y72UpLUyt+r7LQhcI/XR5IUUaD4C/chB4Vq2QkDKO7Q8+2HJOrFIjiVli4lU+Sf
 OBp64m//Y1xys++Z4ODoKh7tkh5DxiO3QBHG7bHK0CSQsJ6XUvPVYubAuy1XfSDzSeSBl//C
 v78Fclb+gi9GWidSTG/4hsEzd1fY5XwCZG/XJJY9M/sAAwUH/09Ar9W2U1Qm+DwZeP2ii3Ou
 14Z9VlVVPhcEmR/AFykL9dw/OV2O/7cdi52+l00reUu6Nd4Dl8s4f5n8b1YFzmkVVIyhwjvU
 jxtPyUgDOt6DRa+RaDlXZZmxQyWcMv2anAgYWGVszeB8Myzsw8y7xhBEVV1S+1KloCzw4V8Z
 DSJrcsZlyMDoiTb7FyqxwQnM0f6qHxWbmOOnbzJmBqpNpFuDcz/4xNsymJylm6oXiucHQBAP
 Xb/cE1YNHpuaH4SRhIxwQilCYEznWowQphNAbJtEKOmcocY7EbSt8VjXTzmYENkIfkrHRyXQ
 dUm5AoL51XZljkCqNwrADGkTvkwsWSvCSQQYEQIACQUCWTecRAIbDAAKCRCgNK6L+3cgfuef
 AJ9wlZQNQUp0KwEf8Tl37RmcxCL4bQCcC5alCSMzUBJ5DBIcR4BY+CyQFAs=

--------------dNXgFXAAhol0vXtEpcV0ui5x
Content-Type: multipart/mixed; boundary="------------cWyudUJ2BoKiiVXBV8bvfkrt"

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

T24gMjIuMDQuMjYgMTY6MDcsIEFudGhvbnkgUEVSQVJEIHdyb3RlOg0KPiBPbiBXZWQsIEFw
ciAwOCwgMjAyNiBhdCAwNDo0MDo0NlBNIC0wNzAwLCBkbXVraGluQGZvcmQuY29tIHdyb3Rl
Og0KPj4gRnJvbTogRGVuaXMgTXVraGluIDxkbXVraGluQGZvcmQuY29tPg0KPj4NCj4+IEFk
ZCBhIG5ldyBzeW1ib2wgRE9NSURfQU5ZIHRvIGltcHJvdmUgdGhlIHJlYWRhYmlsaXR5IG9m
IHRoZSBjb2RlLg0KPj4NCj4+IFVwZGF0ZSBhbGwgcmVsZXZhbnQgZG9taWRfYWxsb2MoKSBj
YWxsIHNpdGVzIGFuZCBoYXJkZW4gdGhlIGRvbWlkX2FsbG9jKCkNCj4+IGlucHV0IHZhbHVl
IGNoZWNrLg0KPj4NCj4+IEFsc28sIGZpeCBwcm9ibGVtIHdpdGggcGFzc2luZyBpbnZhbGlk
IGRvbWFpbiBJRHMgaW4NCj4+IFhFTl9ET01DVExfY3JlYXRlZG9tYWluOiB0dXJucyBvdXQg
bGlieGxfX2RvbWFpbl9tYWtlKCkgKHRvb2xzdGFjaykNCj4+IHVzZXMgMHhmZmZmIGFzIGRv
bWFpbiBJRC4NCj4+DQo+PiBBbWVuZHM6IDJkNTA2NTA2MDcxMCAoInhlbi9kb21haW46IHVu
aWZ5IGRvbWFpbiBJRCBhbGxvY2F0aW9uIikNCj4+IFNpZ25lZC1vZmYtYnk6IERlbmlzIE11
a2hpbiA8ZG11a2hpbkBmb3JkLmNvbT4NCj4+IC0tLQ0KPj4gQ2hhbmdlcyBzaW5jZSB2NjoN
Cj4+IC0gZml4ZWQgbGlieGxfZG9taWRfdmFsaWRfZ3Vlc3QoKSBjaGVjayBpbiBsaWJ4bF9j
cmVhdGUuYw0KPj4gLSBMaW5rIHRvIHY2OiBodHRwczovL2xvcmUua2VybmVsLm9yZy94ZW4t
ZGV2ZWwvMjAyNjAzMDcwMjU0NTEuMzE0ODA3OC0yLWRtdWtoaW5AZm9yZC5jb20vDQo+PiAt
IENJOiBodHRwczovL2dpdGxhYi5jb20veGVuLXByb2plY3QvcGVvcGxlL2RtdWtoaW4veGVu
Ly0vcGlwZWxpbmVzLzI0Mzg3OTA3NDgNCj4gDQo+IFVuZm9ydHVuYXR0bHksIHRoaXMgcGF0
Y2ggYnJlYWtzIHRlc3RzIGluIHRvb2xzL3Rlc3RzLCBzZWUNCj4gICAgICBodHRwczovL2dp
dGxhYi5jb20veGVuLXByb2plY3QvaGFyZHdhcmUveGVuLXN0YWdpbmcvLS9waXBlbGluZXMv
MjQ3MTY4NDE0Mg0KPiANCj4gVGhlIHRlc3RzIHByb2R1Y2VzIHRoaXM6DQo+IA0KPiAgICAg
IFJ1bm5pbmcgL3Vzci9saWIveGVuL3Rlc3RzL3Rlc3QtbWVtLWNsYWltDQo+ICAgICAgTWVt
b3J5IGNsYWltcyB0ZXN0cw0KPiAgICAgIEZyZWUgcGFnZXM6IDMwNTkwMTIsIE91c3RhbmRp
bmcgY2xhaW1zOiAwDQo+ICAgICAgICBEb21haW4gY3JlYXRlIGZhaWx1cmU6IDE3IC0gRmls
ZSBleGlzdHMNCj4gICAgICBGQUlMRUQ6IC91c3IvbGliL3hlbi90ZXN0cy90ZXN0LW1lbS1j
bGFpbQ0KPiANCj4gICAgICBSdW5uaW5nIC91c3IvbGliL3hlbi90ZXN0cy90ZXN0LXBhZ2lu
Zy1tZW1wb29sDQo+ICAgICAgUGFnaW5nIG1lbXBvb2wgdGVzdHMNCj4gICAgICAgIERvbWFp
biBjcmVhdGUgZmFpbHVyZTogMTcgLSBGaWxlIGV4aXN0cw0KPiAgICAgIEZBSUxFRDogL3Vz
ci9saWIveGVuL3Rlc3RzL3Rlc3QtcGFnaW5nLW1lbXBvb2wNCg0KSSd2ZSBsb29rZWQgaW50
byB0aGlzIG9uZS4gVGhlIGlucHV0IGRvbWlkIGlzIDAgaGVyZSwgd2hpY2ggd2lsbCBiZSBy
ZWplY3RlZA0Kbm93Lg0KDQpJIGd1ZXNzIHRoZSBvdGhlciBmYWlsaW5nIGNhc2VzIGhhdmUg
dGhlIHNhbWUgaXNzdWUuDQoNCkkgaGF2ZSBvbmUgcmVxdWVzdDogY291bGQgdGhlIGRlZmlu
aXRpb24gb2YgRE9NSURfQU5ZIGJlIHNwbGl0IG91dCBpbnRvIGENCnBhdGNoIG9mIGl0cyBv
d24/IEkgaGF2ZSBhIHNlY3VyaXR5IHJlbGF0ZWQgcGF0Y2ggc2VyaWVzIHBlbmRpbmcgd2hp
Y2gNCndvdWxkIG5lZWQgdGhhdCBkZWZpbml0aW9uIGZvciBhbm90aGVyIHB1cnBvc2UgKG5v
dCBhbiBYU0EsIHRob3VnaCkuDQoNCg0KSnVlcmdlbg0K
--------------cWyudUJ2BoKiiVXBV8bvfkrt
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-----

--------------cWyudUJ2BoKiiVXBV8bvfkrt--

--------------dNXgFXAAhol0vXtEpcV0ui5x--

--------------ZVvIS81M8DFT0VBmW25XLMYd
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/Ey8FAmno2fUFAwAAAAAACgkQsN6d1ii/Ey9J
Nwf9GYln88oVVwRdAHk/fn7SF9hVVGc3zQLVPva0nVj6JS/4iXIQuHAWUiFO66ncPCI/sX8R55Zj
AmVTTDf/0zv/2TWxLf+PmRsMMrHt3efjV6wQxRcLdT6SQh4/Y85eLpKwDm0sJeeGGyKbkPUp6Q9T
cIMO0yAHafdTO/ga7siBEJa24h5nXFHNxK5a6OYG7qmlY4iTEOCZyQvB3GP5MboNgettQBO1vAOh
4xviXHt3Nf4iMVPFmBcxn6NLxfvDPsDhvv4F5FLxGDbv7wUbfNTNmZLMxiXXRbf/TOQ5w1MAkpWL
dZieY7/1nn9JIGZIPalD5Q4EmmvEmvxZt/loaGG7aw==
=WWWh
-----END PGP SIGNATURE-----

--------------ZVvIS81M8DFT0VBmW25XLMYd--


From xen-devel-bounces@lists.xenproject.org Wed Apr 22 14:32:52 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 22 Apr 2026 14:32:52 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1290699.1570225 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wFYdE-0002qd-3Z; Wed, 22 Apr 2026 14:32:48 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1290699.1570225; Wed, 22 Apr 2026 14:32: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 1wFYdE-0002qW-0z; Wed, 22 Apr 2026 14:32:48 +0000
Received: by outflank-mailman (input) for mailman id 1290699;
 Wed, 22 Apr 2026 14:32:46 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92) id 1wFYdC-0002qQ-Dd
 for xen-devel@lists.xenproject.org; Wed, 22 Apr 2026 14:32:46 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wFYdB-007w62-Qk
 for xen-devel@lists.xenproject.org; Wed, 22 Apr 2026 16:32:45 +0200
Received: from [10.42.69.6] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <oleksii.kurochko@gmail.com>)
 id 69e8dc06-5cb7-0a2a0a5109dd-0a2a4506c60c-48
 for <xen-devel@lists.xenproject.org>; Wed, 22 Apr 2026 16:32:45 +0200
Received: from [209.85.167.48] (helo=mail-lf1-f48.google.com)
 by tlsNG-16d1c6.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.1)
 (envelope-from <oleksii.kurochko@gmail.com>)
 id 69e8dc0d-7371-0a2a45060019-d155a730bcd7-3
 for <xen-devel@lists.xenproject.org>; Wed, 22 Apr 2026 16:32:45 +0200
Received: by mail-lf1-f48.google.com with SMTP id
 2adb3069b0e04-5a0ff30b240so8404494e87.0
 for <xen-devel@lists.xenproject.org>; Wed, 22 Apr 2026 07:32:45 -0700 (PDT)
Received: from [192.168.1.6] (user-109-243-69-121.play-internet.pl.
 [109.243.69.121]) by smtp.gmail.com with ESMTPSA id
 2adb3069b0e04-5a4187ebe31sm4407228e87.75.2026.04.22.07.32.43
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Wed, 22 Apr 2026 07:32:44 -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=20251104 header.d=gmail.com header.i="@gmail.com" header.h="Content-Transfer-Encoding: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=20251104; t=1776868365; x=1777473165; darn=lists.xenproject.org;
        h=content-transfer-encoding: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;
        bh=oxjfFnFK9MBmCcc1oDKSqlhMdh6CfSW9PMPDhk2kGIQ=;
        b=mCs5D8cvk6qmYuRuYolkc0/p/KapTmue+irCWvtnL1/3Fhrq4VCqMs4nf+IbBoZhNa
         FYzwhcR3vkU5amE7mBOjFvNklEPARUy/k0g4dTPTnBA8gbTyTOsDc9scSCGDjMvhZxId
         zXNQOVd9cjbLVGLWBLPkSJen5TrPduJklqbJ6lQMs9quVti2EuMz9UcfhSt86GXU+Gzk
         huxQ2oAWysp1b7yiSsaJOmcrdP8SAexNb79yLC5OAQ+kc8kjEQQ4cgY0jx0A/Zk6SqQT
         ov9QFuMKFHf8Aegyb31KOjqQ5+aJLT5jkGIE+JOEWiEE6EMiu4Tv40AEVkhfvkaH5Dof
         JLQg==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20251104; t=1776868365; x=1777473165;
        h=content-transfer-encoding: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;
        bh=oxjfFnFK9MBmCcc1oDKSqlhMdh6CfSW9PMPDhk2kGIQ=;
        b=maolOOUZkFIakIasSOUwW3rUBsbyVWTuDdpz2qy8DD5/BF37u+T/H8CUx5zt8GWwYM
         9kcXCsfszK0myU6HdJHSBs5T5p3zKG0O3zfimrZOfvSLfKZANFYFbSgB44XnCQRPOVfL
         Z7ii/RnIrh2sEbfFs91U1BJNSTig0hHWZh1MhJYu7gqbdv6rybtL+nzgrtj8WVdH+OYd
         R1hjUENK0dezPGxX4uFSijQhWEb7DJxN5Cyg/0scdzU52H+5sjkdp5TWP3pgZ31eKKFf
         kwTf6ErtavOnVqYuRYNloYvtUfFL5umL8xh4oYR+J3rHh4i8Xi0sfVlObMsejklXVnrB
         8o5w==
X-Forwarded-Encrypted: i=1; AFNElJ9zy0BZJyIp7Ut0sc4dQTxZGrYmtAGszD3wOd0MDlamb08QF8yebVDcFrlJDY30pfSXmkHNjl4fCb4=@lists.xenproject.org
X-Gm-Message-State: AOJu0Yxazzd6q0gp1mrP94MgBanDFhvvV4CH43gix3oBIIgx6x4vRgOO
	65xqHMRtGyQ826NU3wWbw/fmfs58Bl9OuYoIYsRX+WqdkweIaqULWmJ6
X-Gm-Gg: AeBDietZqzdFHy9m/TJEyj5pW6TpU8TA23A6QWS0abdH8BKQqvphTV6TzQOHI+n9XUR
	oSysK0PU5qPf+PLRwHBUjhrfpnUkk/+oIiUbp0fA0J7g0rzC2wEc4MJghPlieJSnlu4iHPDs0xB
	O18PeXAJrO5pjSFrPCDGB5v9N/BTSHQO2dHkFmWzcFIFZJWAYr9nqrEsG2teGeaDqRqtu8be/1W
	vSeQip9QRhC5LxtvrFM/+t9iOKhiRsRcCzU5XNKxqboa1pXR9jJHQJ0/pIdyA8/lVqmIsqOa2/f
	sbAaMAas8taTbxsbnYkkRiXTgrPQp12SYHn8WU9s54hoxpuzA+HTEI1WbdZhFgWMcpm8BygecVQ
	BzGfhXeh7JSs3hAlc9caHkgKf3CVOeMfmIw6i3/JLojfCuX6uSuWgjBo91BnWuN+KLoY64fgiju
	WIE6NoYQdiZ18eAZDrG8L6/25YVT+gO/EYBEzT0RsIR/ZbC6bI5hy/dRpMOzTuIeksqpi2JLmau
	n/stDt2Bse2TA==
X-Received: by 2002:a05:6512:33c8:b0:5a4:2b2:75e3 with SMTP id 2adb3069b0e04-5a4172cd812mr7204146e87.18.1776868364683;
        Wed, 22 Apr 2026 07:32:44 -0700 (PDT)
Message-ID: <8415009c-9b4b-46f3-8aec-17313c19df0e@gmail.com>
Date: Wed, 22 Apr 2026 16:32:43 +0200
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH v3 05/12] xen/riscv: add kernel loading support
To: Jan Beulich <jbeulich@suse.com>
Cc: Romain Caritey <Romain.Caritey@microchip.com>,
 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.pau@citrix.com>,
 Stefano Stabellini <sstabellini@kernel.org>, xen-devel@lists.xenproject.org
References: <cover.1775836193.git.oleksii.kurochko@gmail.com>
 <29ec8e444792caa925ba92cdc406ef8c0b3bd678.1775836193.git.oleksii.kurochko@gmail.com>
 <6af89a34-3bf1-40cb-a4c5-e9a16ee31295@suse.com>
 <b6c4a111-6c37-4850-962a-5b401a4a5655@gmail.com>
 <d493eee4-bc83-4a44-8568-3a18ddc90d4c@suse.com>
 <14562fd3-a29c-4a53-8778-79818467695f@gmail.com>
 <51ac0fb6-6111-4364-9781-bf8dde3df979@suse.com>
Content-Language: en-US
From: Oleksii Kurochko <oleksii.kurochko@gmail.com>
In-Reply-To: <51ac0fb6-6111-4364-9781-bf8dde3df979@suse.com>
Content-Type: text/plain; charset=UTF-8; format=flowed
Content-Transfer-Encoding: 7bit
X-purgate-ID: tlsNG-16d1c6/1776868365-90071D75-C9B08113/10/73395122804
X-purgate-type: spam
X-purgate-size: 4634



On 4/22/26 3:54 PM, Jan Beulich wrote:
> On 22.04.2026 15:47, Oleksii Kurochko wrote:
>> On 4/22/26 1:57 PM, Jan Beulich wrote:
>>> On 22.04.2026 13:45, Oleksii Kurochko wrote:
>>>> On 4/21/26 10:57 AM, Jan Beulich wrote:
>>>>> On 10.04.2026 17:54, Oleksii Kurochko wrote:
>>>>>> +static paddr_t __init kernel_image_place(struct kernel_info *info)
>>>>>> +{
>>>>>> +    paddr_t load_addr = INVALID_PADDR;
>>>>>> +    uint64_t image_size = info->image.image_size ?: info->image.len;
>>>>>> +    const struct membanks *banks = kernel_info_get_mem_const(info);
>>>>>> +    unsigned int nr_banks = banks->nr_banks;
>>>>>> +    unsigned int bi;
>>>>>> +
>>>>>> +    dprintk(XENLOG_DEBUG, "nr_banks(%u)\n", nr_banks);
>>>>>> +
>>>>>> +    /*
>>>>>> +     * At the moment, RISC-V's Linux kernel should be always position
>>>>>> +     * independent based on "Per-MMU execution" of boot.rst:
>>>>>> +     *   https://docs.kernel.org/arch/riscv/boot.html#pre-mmu-execution
>>>>>> +     *
>>>>>> +     * But just for the case when RISC-V's Linux kernel isn't position
>>>>>> +     * independent it is needed to take load address from
>>>>>> +     * info->image.start.
>>>>>> +     *
>>>>>> +     * If `start` is zero, the Image is position independent.
>>>>>> +     */
>>>>>> +    if ( likely(!info->image.start) )
>>>>>> +    {
>>>>>> +        for ( bi = 0; bi != nr_banks; bi++ )
>>>>>> +        {
>>>>>> +            const struct membank *bank = &banks->bank[bi];
>>>>>> +            paddr_t bank_start = bank->start;
>>>>>> +            /*
>>>>>> +             * According to boot.rst kernel load address should be properly
>>>>>> +             * aligned:
>>>>>> +             *   https://docs.kernel.org/arch/riscv/boot.html#kernel-location
>>>>>> +             *
>>>>>> +             * As Image in this case is PIC we can ignore
>>>>>> +             * info->image.text_offset.
>>>>>> +             */
>>>>>> +            paddr_t aligned_start = ROUNDUP(bank_start, KERNEL_LOAD_ADDR_ALIGNMENT);
>>>>>> +            paddr_t bank_end = bank_start + bank->size;
>>>>>> +            paddr_t bank_size;
>>>>>> +
>>>>>> +            if ( aligned_start > bank_end )
>>>>>> +                continue;
>>>>>> +
>>>>>> +            bank_size = bank_end - aligned_start;
>>>>>> +
>>>>>> +            dprintk(XENLOG_DEBUG, "bank[%u].start=%"PRIpaddr"\n", bi, bank->start);
>>>>>> +
>>>>>> +            if ( image_size <= bank_size )
>>>>>> +            {
>>>>>> +                load_addr = aligned_start;
>>>>>> +                break;
>>>>>> +            }
>>>>>> +        }
>>>>>> +    }
>>>>>> +    else
>>>>>> +    {
>>>>>> +        load_addr = info->image.start + info->image.text_offset;
>>>>>
>>>>> Why does stuff ahead of text_offset not need loading?
>>>>
>>>> Here we just calculating only a place where kernel will be loaded. The
>>>> full kernel image will be loaded in kernel_image_load().
>>>
>>> Okay, but if you calculate an address where the full image won't fit,
>>> how are things going to work?
>>
>> If the full image won't fit than the necessary bank won't be found in
>> for() loop below and so this kernel will be rejected.
>>
>> I expect that in the case when info->image.start is not 0 (so isn't
>> Image isn't PIC) Image want to be specifically load to info->image.start
>> + info->image.text_offset. Is it wrong statement?
> 
> I don't know, but the adding in of .text_offset looks questionable to me.
> I simply don't know why such offsetting would be wanted / needed.

In the <linux>/Documentation/arch/riscv/boot-image-header.rst:

This header format is compliant with PE/COFF header and largely inspired 
from ARM64 header. Thus, both ARM64 & RISC-V header can be combined into 
one common header in future.

Than if to look at the comment near text_offset it is mentioned that:
/* Image load offset, little endian */

So it is basically Image load offset and that is why I expect it should 
be added to calculation of load_addr.

Considering that boot image header is based on Arm64 I assume that an 
explanation regarding text_offset for Arm64 
(<linux>/Documentation/arch/arm64/booting.rst:) should be true for RISC-V:
```
The Image must be placed text_offset bytes from a 2MB aligned base
address anywhere in usable system RAM and called there. The region
between the 2 MB aligned base address and the start of the image has no
special significance to the kernel, and may be used for other purposes.
At least image_size bytes from the start of the image must be free for
use by the kernel.
```

~ Oleksii


From xen-devel-bounces@lists.xenproject.org Wed Apr 22 14:35:49 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 22 Apr 2026 14:35:49 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1290710.1570234 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wFYg7-0003QA-KG; Wed, 22 Apr 2026 14:35:47 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1290710.1570234; Wed, 22 Apr 2026 14:35: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 1wFYg7-0003Q3-HG; Wed, 22 Apr 2026 14:35:47 +0000
Received: by outflank-mailman (input) for mailman id 1290710;
 Wed, 22 Apr 2026 14:35:46 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <bernhard.kaindl@citrix.com>) id 1wFYg6-0003Px-Qe
 for xen-devel@lists.xenproject.org; Wed, 22 Apr 2026 14:35:46 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wFYg6-00GD5h-3G
 for xen-devel@lists.xenproject.org; Wed, 22 Apr 2026 16:35:46 +0200
Received: from [10.42.69.12] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <bernhard.kaindl@citrix.com>)
 id 69e8dcc0-5cb7-0a2a0a5109dd-0a2a450ca41a-4
 for <xen-devel@lists.xenproject.org>; Wed, 22 Apr 2026 16:35:46 +0200
Received: from [52.101.61.31]
 (helo=DM1PR04CU001.outbound.protection.outlook.com)
 by tlsNG-d25034.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.1)
 (envelope-from <bernhard.kaindl@citrix.com>)
 id 69e8dcc0-62f1-0a2a450c0019-34653d1fd212-3
 for <xen-devel@lists.xenproject.org>; Wed, 22 Apr 2026 16:35:45 +0200
Received: from LV3PR03MB7707.namprd03.prod.outlook.com (2603:10b6:408:28b::21)
 by SJ0PR03MB6520.namprd03.prod.outlook.com (2603:10b6:a03:394::7)
 with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9846.20; Wed, 22 Apr
 2026 14:35:42 +0000
Received: from LV3PR03MB7707.namprd03.prod.outlook.com
 ([fe80::97e8:ef9c:9031:e2bf]) by LV3PR03MB7707.namprd03.prod.outlook.com
 ([fe80::97e8:ef9c:9031:e2bf%6]) with mapi id 15.20.9846.019; Wed, 22 Apr 2026
 14:35: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=dcGhqvLGqw9PrYMqIw+FsI7o5KYHUaQMuJNT1TbjjUgI23nfNGNWUhNarNMeYvLLgvOoggSi7YLaOK5jVSWumWhXzf9Fy+TRdEuZM+tRo6ZaRmTfMyILm1IW57v0E0VjeXb2+Aivre8WyYMuEccBhnDo8B1Kb9tCwGIQ/v+fA9yA/7x7zgjiKNHNqzKSx3WjS/S/WEU8KIq4n4wtws2rfPyLH3yDkzf9ysujN38wO3lD68du/HIgJ4TaIX7HZDap0jQlngN4HtWq8KQX1Hz0+wDDVhJSMmtYHr3EtagrWVQBM5KmJBAZ2h97pe6jwerr6mWO1TGbHhOgF2aN9ZpfqA==
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com;
 s=arcselector10001;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1;
 bh=6ktO3UcHswmV91HJ+wET0XHDvqR95Tm/WaYN8IWe+J8=;
 b=liGVhZsk3C1davACBE41mn5RdL2gF3353HfVaoyFnkKBM0MbrzsT/xXZng0uDV3kpVy2rrSOCQlTMjzgJeYMHNnh58f8GdRKIHeLG8+17zPW/ZQIzMVTXQAvD5Aqc5fV+l63HCVHOzQMxdoDfmBhP3/QrpoZpE97nYHVQq4v0BBXZjXP0exDOt3QR1PDcbsX/Qtc3QiEU7PsOjnWlERDrYKivzgXzjkUQ9VRv72vF1r9JPCc5glS6b6Xt6ciyB57D2xjhwzgpvI9haNrpNK0xWB1uf2y3F19qQ8cw9qELz629pg3Vgf+AjE6dmPDRUGT4YC2VfiPscU3FZbI1b8dDg==
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=6ktO3UcHswmV91HJ+wET0XHDvqR95Tm/WaYN8IWe+J8=;
 b=MvpkTki/2o/4dbNX906gpn0l+SwlIkvueAYKj4uUmT56kYAw2HombN+QSNr+uIcUNIHyeoGPUg2unJT9Om4w7NR7XHDsdaLNOe1spDlvvKgeB309J5DX9DZ83ZMmT26EJS3W3sM/LfNLw/FFMpv59yqvpR+nBg1zjwewB6A3ADk=
From: Bernhard Kaindl <bernhard.kaindl@citrix.com>
To: Jan Beulich <jbeulich@suse.com>
CC: Andrew Cooper <andrew.cooper@citrix.com>, Anthony PERARD
	<anthony.perard@vates.tech>, Michal Orzel <michal.orzel@amd.com>, Julien
 Grall <julien@xen.org>, Roger Pau Monne <roger.pau@citrix.com>, Stefano
 Stabellini <sstabellini@kernel.org>, "xen-devel@lists.xenproject.org"
	<xen-devel@lists.xenproject.org>
Subject: RE: [PATCH v6 1/7] xen/mm: Refactor claim deduction for later
 functional changes
Thread-Topic: [PATCH v6 1/7] xen/mm: Refactor claim deduction for later
 functional changes
Thread-Index: AQHczBIVjQaUKhelwUCYpZQxzVcChrXqzwoAgABXiPA=
Date: Wed, 22 Apr 2026 14:35:40 +0000
Message-ID:
 <LV3PR03MB7707C0637B5F73CA26E3F4D4872D2@LV3PR03MB7707.namprd03.prod.outlook.com>
References: <cover.1776172526.git.bernhard.kaindl@citrix.com>
 <5302d33e7e896347acc7a8212df4f28ea098e28e.1776172526.git.bernhard.kaindl@citrix.com>
 <3df7352b-7502-4c2a-bc3f-0cb4fa7014cf@suse.com>
In-Reply-To: <3df7352b-7502-4c2a-bc3f-0cb4fa7014cf@suse.com>
Accept-Language: en-GB, en-US
Content-Language: en-GB
X-MS-Has-Attach:
X-MS-TNEF-Correlator:
authentication-results: dkim=none (message not signed)
 header.d=none;dmarc=none action=none header.from=citrix.com;
x-ms-publictraffictype: Email
x-ms-traffictypediagnostic: LV3PR03MB7707:EE_|SJ0PR03MB6520:EE_
x-ms-office365-filtering-correlation-id: 85f0d846-0f21-4e4b-a669-08dea07c6db6
x-ms-exchange-senderadcheck: 1
x-ms-exchange-antispam-relay: 0
x-microsoft-antispam:
 BCL:0;ARA:13230040|366016|1800799024|376014|10070799003|38070700021|22082099003|56012099003|18002099003;
x-microsoft-antispam-message-info:
 JvIZXYrrhwm0+kVatlFFLT8f/xFXuEj2VcXMW9qfX9pYYLlE6MaOR1WAU1w3Js7e3MvESuNGrbToy6WZkAGPrJzJfj5jXaaU2BO2D5HG5Ti0B58Yp7NksSUJ5RIh55RTSlCmlK+UXu+jolAkUkNCt5sFeK+pVX9fiyJ0+RecjAU2EcMLuwQB3CYUZxTdMFF1RL6WYUOSBIfvpZa8/3aENr2Pw0Q3N6wx44xr2P9JDRQV9teKyPC/JPNtrGboDeutsFCnVHL+t5MxigvqjUWJESxqAFNQp92HcS7/qMUSepNIOaligZ1fXfl36wEygtuylUY6sBJbZx0diXM2bkzj8f8nuIL0ugKI+om5DyNem1mkge1PRmTypMCMBfDooMaxxVdKQMbnrEvWIgbia0qdue7G3UEhh9xEz5z4H8Sl9J0JlGoLCHnEoYjZeAQX9GzoETvWjgNcWVBa2dczKsUy7rsBP8SgOe6ojEM1qlmgua/l9QU94CDWsxYpMo0rKT4hyDgOjAwe8XRgs5l1yfhxiMDpORCUSdGptLZ+q8XA/YDucl/i62fHH9MO/B/fAkZ0nui37Z142hpXvmg4IGisowp6J83tjKKlxfHuMuet0Ea6xc6TphLiE3HUBdWRWkmGIL0gSdYYwttbTeeSeMyqG5E/JcrmL/mQ1Trze14P5TNFUbUnNwrO8f35hYZDzYCIQbUArNHzNewlfotwfxoLvNC89BPE+8sTbNYzhQnatAhIdZfs/1K90GAWpZBBBWZbHLvLTlnRebxgUBrdk5LxNjwHBpVmJ4e3XOR0W74POCc=
x-forefront-antispam-report:
 CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:LV3PR03MB7707.namprd03.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(366016)(1800799024)(376014)(10070799003)(38070700021)(22082099003)(56012099003)(18002099003);DIR:OUT;SFP:1101;
x-ms-exchange-antispam-messagedata-chunkcount: 2
x-ms-exchange-antispam-messagedata-0:
 =?utf-8?B?WVZkSlhlc3k0WTZ0blhNRW01NFc5KzQxUGVhNWlZZmVOT0Uwbit4c2VjNUpR?=
 =?utf-8?B?N1l2Z21hUm9aa3lIRjd1TjlSdTNpaTVoYmNLTmxkQllvRjBJbmdKS0E1c3V5?=
 =?utf-8?B?Tm1VQTB5b3V3S0xUazB6Ym9tdFE4U0dSaDhrZXV5TnJTR2lFV0ZWOVEzN3RO?=
 =?utf-8?B?MHczTjZhYUQ0UklLQ3pIZjgvYWJ2YXJPWHF5NmFmTncwTVdxeWw1NzBxcy9u?=
 =?utf-8?B?SkFVc1RkamFSMGF2UjF4bXk0UHN0RHFQZGhDVkdXM3NpaHcrR29kYW94YUFo?=
 =?utf-8?B?N2N0SjNDbVQxKzc3d0k0WkJpYjM0RUduaUcvTnRRdUk2N3UwSUlhUm5IdFNX?=
 =?utf-8?B?R0xRcWNnOEUrUkpiYkY2WExNUFQraHAxMjRsMEVIYjErdDJkS2o2UFpYb29l?=
 =?utf-8?B?Mkg5SzV0V3ppV1dXRHNKbUYrTE41dDBDc0swMitUMVJZelhBN05rTEtYVHVI?=
 =?utf-8?B?enFLdmlrZ2U2ekR3S3RsWmEwZUhzTlJuM21KKzJLME0yNGI5bHVLNU1wQXNz?=
 =?utf-8?B?NHNMYzBTUTdvakRseDVaM0dORXhweDJkR2YwZGhja09jclIzNjYvd3BWazlz?=
 =?utf-8?B?WG51TFFWYVRmU1IrWS9OMytRbS9GTXpJUHFhWUdaU1V5ZDlxYWdvQWdGd2Ir?=
 =?utf-8?B?M1ZacDVhdUFHanJkZzU5cEdzTFJMbklndWxNMTRCYzAwR3V2UE1rM3JyZ3F5?=
 =?utf-8?B?QnVKWUp6MFJtT1NhL2lYbTF2NDRjSmpKZEZSUlhLeCtKUnREM1NtNkE4SjBV?=
 =?utf-8?B?NThoc2syYjlmL3VXMDE2S1YzeHU0V092NnVmaEFMTk1MRlFjMnlydGZMNC85?=
 =?utf-8?B?a2NjL3phVUlheWFiM2xWTURFNG5HOE4rRHRDRlM1aFpTRWxCU2dGaDVsSVR5?=
 =?utf-8?B?RFNCU1lSUGlNTUp1VDZtTTlQOHdMM0YvRXBXeTNSK1JkT25KKytVNUsvcVF1?=
 =?utf-8?B?WDVKbURDYTI3RWlYNUNkbkxoaWp2d1FSYkI0emJnOEJ5ZnVBdXdIemhmNHht?=
 =?utf-8?B?cHdMaVRYZXhNbVlzN3hWMXM2NENEOEpjay8vSGsxUDlKWGdJYmZkVlB1anZ6?=
 =?utf-8?B?SWFpbVFHMDM1U3JwcEwxc2JLSE43WWtJaUJIUmw5bFRMZHpSQU43cGRWVWs3?=
 =?utf-8?B?M2pCVGhRUlNtVjhrdzYzKzBhWFUvTmF3ZVJZUm5NWDBqS2R3YlcvdFN5T1N0?=
 =?utf-8?B?WTB3VWhqRFZMeEZTblgva3dYKzdjZmJkbDB3MU9mMERvdERNcGZsQXJYMnla?=
 =?utf-8?B?ZzRwaytSeFIxSm5kNjlxRW9PWHRTQ3k1cWVIZ3dETG83YlVIYWNpc3ROWEdm?=
 =?utf-8?B?RGxpY0lCWlcwVGtyaDZuR1BKcTFuNnN0cHRtZ2JHWWk5aHdkaWZyVXJ2SHUx?=
 =?utf-8?B?MjNrMnVubjcwNUgrQXg4bitTZ0c1K29icmZiQzJrYVpKYy9kcE9nclZYYlkx?=
 =?utf-8?B?bER5VWJZRHhxKzhWelRweTl5b1BrYXNScHVYa0pxS3pnMHZaYlM2NXNxbzUy?=
 =?utf-8?B?WVJhTUlOb3JyRysyYTlEUXBUekU5eHk3SUtaRHNQT2ZVNmtVRTd2L1FYYWJD?=
 =?utf-8?B?TzZRWml6OUNKM3djNitEOUZOb1orS2hSQlN0eW9SVktkczJMdGYrdFpJUVkw?=
 =?utf-8?B?VDFhSjNlZEJ1S1djTHhRNmFyQjdHSWJXenJUdUgycEdDY0JBTGdMZ05jTk51?=
 =?utf-8?B?SEhNVGtIc1FDNHhnTWRCNjdvVFZIci9GbjQ1ZlhDeVdsSUhrNmhETjROdnZD?=
 =?utf-8?B?VnlwRlVMU3NEVEluTFRiV1lWUzVFckJpS0N3QWVYTVlubVFIVmlPc0JPemNN?=
 =?utf-8?B?d2U4Ryt4QXZQd0ZiSWtSRVBuTE9USi9zeFluNmNFaGI3Y0c5ZWhKenQvQUZl?=
 =?utf-8?B?M213MHFEZGFPbVBiYzBPam5MSTNsR0ZTdXNRVmk1M2hUa2JWcG11RDB3bWUz?=
 =?utf-8?B?aXFiRFBjSHpMaE1FWjdGaGNkdHZOREpmUnk0UnVFcGxWaTVZYjhEajJocEFP?=
 =?utf-8?B?NDZybHVWTEd6MzM5dGRHNmN2dTVkV2N2Mit2dndaZHZIb05vdXFhZUs3TXlr?=
 =?utf-8?B?KzV5YWVhUXFhbDZRcWVBTkZidVZaYVdNVjYrbDE2OExCV0MrTDN4eE5WNERw?=
 =?utf-8?B?aG83bVUxelI1RFlPZlhoemNqeGRpZGhnaUNnNmtTUUlYRy96OEcvSlI1a0ww?=
 =?utf-8?B?Wk9MSStaaFpmeTZvdWdiMmtoczdHRVNXRDIxblJZaDZ5MHVMaXlnYk1DdlpL?=
 =?utf-8?B?WkIrUXp4Z2pUU1BEYnhjVUFaWDJ0WDVsVlVic2lKWmJLOVNnbHhkVWZqRlhN?=
 =?utf-8?B?cnZNc1dDMVZYUmNYb3ZpeWJUbkdrMGlqNDE2SEdSa08rVlpvNEVndkp1S2hh?=
 =?utf-8?Q?V4xNDN0Q1AHHgMETr1ufRjQvS5/QkudlvYoR9AKT1HGCP?=
x-ms-exchange-antispam-messagedata-1: I8XBDSYidSO1Ig==
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: LV3PR03MB7707.namprd03.prod.outlook.com
X-MS-Exchange-CrossTenant-Network-Message-Id: 85f0d846-0f21-4e4b-a669-08dea07c6db6
X-MS-Exchange-CrossTenant-originalarrivaltime: 22 Apr 2026 14:35:41.0099
 (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: uZ/Zhm3f6ybzpqnvMcnQBd4itPzdnimUn4e1Snm7aoAkaaRz17DjR6iMYA1P6IGT7lvPL4OpXiM2TLFQRvqmKY+6ms8fYwJvb1PUaZRYvv4=
X-MS-Exchange-Transport-CrossTenantHeadersStamped: SJ0PR03MB6520
X-purgate-ID: tlsNG-d25034/1776868546-6E776CF5-4CA3A4F4/0/0
X-purgate-type: clean
X-purgate-size: 3384

DQpKYW4gQmV1bGljaCB3cm90ZToNCg0KPiBBcyB0byB0aGUgcmVuYW1lIHRvIGRlZHVjdF9nbG9i
YWxfY2xhaW1zKCk6IFdpdGggdGhhdCwgd291bGRuJ3QgaXRzIDJuZA0KPiBwYXJhbWV0ZXIgdGhl
biBiZXR0ZXIgYWxzbyBjaGFuZ2UgdG8gImRlZHVjdGlvbiI/IEZ1cnRoZXJtb3JlLCAiZ2xvYmFs
IiBpbg0KPiB0aGUgbmFtZSBpcyBhbWJpZ3VvdXM6IEl0IG1heSBtZWFuICJub3QgcGVyLW5vZGUi
LCBidXQgaXQgbWF5IGFsc28gbWVhbg0KPiAibm90IHBlci1kb21haW4iLiBUaGUgdjQgbmFtZSBk
aWRuJ3QgaGF2ZSBzdWNoIGFuIGlzc3VlLg0KDQpJIHNlZSB0aGUgcG9pbnQgYWJvdXQgJ2dsb2Jh
bCcuIFdoaWxlIHRoZSBzdHJ1Y3QgZG9tYWluIGFyZ3VtZW50IHByb3ZpZGVzDQpjb250ZXh0LCB0
aGUgdGVybSBpcyBpbmRlZWQgdG9vIGdlbmVyaWMuDQoNCkluIHRoaXMgbG9naWMsICdnbG9iYWwn
IHdhcyBpbnRlbmRlZCB0byByZWZlciB0byB0aGUgb3Bwb3NpdGUgb2YNCm5vZGUtc3BlY2lmaWMg
Y2xhaW1zLiBXaGlsZSB0aGUgbGVnYWN5IGNvZGViYXNlIHVzZXMgJ25vLW5vZGUnIG9yDQpOVU1B
X05PX05PREUgYXMgYSBzZW50aW5lbCwgSSBmaW5kIHRob3NlIHRlcm1zIGFtYmlndW91cyBmb3Ig
dGhpcyBuZXcNCmxvZ2ljOyB0aGV5IG9mdGVuIGltcGx5IGEgIm1pc3NpbmciIGFzc2lnbm1lbnQg
cmF0aGVyIHRoYW4gYW4gZXhwbGljaXQNCiJhbnktbm9kZSIgcG9saWN5Lg0KDQonTm9kZS1hZ25v
c3RpYycgYmV0dGVyIGRlc2NyaWJlcyB0aGUgYXJjaGl0ZWN0dXJhbCBpbnRlbnQ6IHRoYXQgdGhl
c2UNCmNsYWltcyBhcmUgdmFsaWQgcmVnYXJkbGVzcyBvZiBub2RlIGxvY2FsaXR5LiBUbyByZXNv
bHZlIHRoZSBhbWJpZ3VpdHksDQpJIHdpbGwgcmVwbGFjZSAnZ2xvYmFsJyB3aXRoICdub2RlLWFn
bm9zdGljJyBhY3Jvc3MgdGhlIGJvYXJkIChkZXNpZ24NCmRvY3VtZW50YXRpb24sIGNvZGUsIGFu
ZCB0ZXN0cykuDQoNClNwZWNpZmljYWxseSwgSSB3aWxsOg0KDQogICAgUmVuYW1lIHRoZSBmdW5j
dGlvbiB0byBkZWR1Y3Rfbm9kZV9hZ25vc3RpY19jbGFpbXMoKS4NCg0KICAgIFVwZGF0ZSB0aGUg
c2Vjb25kIHBhcmFtZXRlciB0byAnZGVkdWN0aW9uJyBmb3IgY29uc2lzdGVuY3kuDQoNCiAgICBV
cGRhdGUgdGhlIGZ1bmN0aW9uIGNvbW1lbnQgdG8gZXhwbGljaXRseSBkZWZpbmUgdGhlIHNjb3Bl
Lg0KDQovKiBEZWR1Y3QgZnJvbSB0aGUgZG9tYWluJ3Mgbm9kZS1hZ25vc3RpYyAobm9uLXBlci1u
b2RlKSBjbGFpbXMgcG9vbCAqLw0Kc3RhdGljIHVuc2lnbmVkIGxvbmcgZGVkdWN0X25vZGVfYWdu
b3N0aWNfY2xhaW1zKHN0cnVjdCBkb21haW4gKmQsDQogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgbG9uZyBkZWR1Y3Rpb24pDQoNCldoaWxl
ICdnbG9iYWwnIHdhcyBzaG9ydGVyLCAnbm9kZS1hZ25vc3RpYycgaXMgbXVjaCBtb3JlIGRlc2Ny
aXB0aXZlIG9mDQp0aGUgYWN0dWFsIGxvZ2ljIGFuZCB0aGUgbm9kZS1sb2NhbGl0eSAob3IgbGFj
ayB0aGVyZW9mKSBiZWluZyBhZGRyZXNzZWQsDQphdm9pZGluZyB0aGUgcG90ZW50aWFsIGNvbmZ1
c2lvbiBhc3NvY2lhdGVkIHdpdGggJ25vLW5vZGUnLg0KDQpGb3IgY29uc2lzdGVuY3ksIHRoZSBj
b3JyZXNwb25kaW5nIHJlbmFtZXMgYWNyb3NzIHRoZSBzZXJpZXMgd2lsbCBiZToNCg0KKy0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLSsNCnwgT3JpZ2luYWwgVGVybSAgICAgICAgICAgICAgICAgIHwgTmV3IFRlcm0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8DQorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKw0KfCAiZ2xv
YmFsIGNsYWltcyIgICAgICAgICAgICAgICAgfCAibm9kZS1hZ25vc3RpYyBjbGFpbXMiICAgICAg
ICAgICAgICAgIHwNCnwgZC0+Z2xvYmFsX2NsYWltcyAgICAgICAgICAgICAgIHwgZC0+bm9kZV9h
Z25vc3RpY19jbGFpbXMgICAgICAgICAgICAgICB8DQp8IFhFTl9ET01DVExfQ0xBSU1fTUVNT1JZ
X0dMT0JBTCB8IFhFTl9ET01DVExfQ0xBSU1fTUVNT1JZX05PREVfQUdOT1NUSUMgfA0KfCBkZWR1
Y3RfZ2xvYmFsX2NsYWltcygpICAgICAgICAgfCBkZWR1Y3Rfbm9kZV9hZ25vc3RpY19jbGFpbXMo
KSAgICAgICAgIHwNCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rDQoNCkkgYmVsaWV2ZSB0aGVzZSBjaGFuZ2Vz
IHJlc3VsdCBpbiBsZXNzIGFtYmlndW91cyBsYW5ndWFnZSB1bml2ZXJzYWxseS4NCkphbiwgY291
bGQgeW91IEFjayB0aGVzZSByZW5hbWVzIGZvciB0aGUgbmV4dCB2ZXJzaW9uIG9mIHRoZSBzZXJp
ZXM/DQoNCkJlcm5oYXJkDQoNCg==


From xen-devel-bounces@lists.xenproject.org Wed Apr 22 14:39:02 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 22 Apr 2026 14:39:02 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1290720.1570243 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wFYj9-0004hD-0j; Wed, 22 Apr 2026 14:38:55 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1290720.1570243; Wed, 22 Apr 2026 14:38: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 1wFYj8-0004h6-UA; Wed, 22 Apr 2026 14:38:54 +0000
Received: by outflank-mailman (input) for mailman id 1290720;
 Wed, 22 Apr 2026 14:38:53 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92) id 1wFYj7-0004gy-SF
 for xen-devel@lists.xenproject.org; Wed, 22 Apr 2026 14:38:53 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wFYj7-003f2T-9E
 for xen-devel@lists.xenproject.org; Wed, 22 Apr 2026 16:38:53 +0200
Received: from [10.42.69.2] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <oleksii.kurochko@gmail.com>)
 id 69e8dd6c-2eae-0a2a0a5409dd-0a2a4502dfa2-20
 for <xen-devel@lists.xenproject.org>; Wed, 22 Apr 2026 16:38:53 +0200
Received: from [209.85.167.46] (helo=mail-lf1-f46.google.com)
 by tlsNG-720697.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.1)
 (envelope-from <oleksii.kurochko@gmail.com>)
 id 69e8dd7c-af86-0a2a45020019-d155a72eac0d-3
 for <xen-devel@lists.xenproject.org>; Wed, 22 Apr 2026 16:38:53 +0200
Received: by mail-lf1-f46.google.com with SMTP id
 2adb3069b0e04-5a0faa0d15cso5424868e87.0
 for <xen-devel@lists.xenproject.org>; Wed, 22 Apr 2026 07:38:53 -0700 (PDT)
Received: from [192.168.1.6] (user-109-243-69-121.play-internet.pl.
 [109.243.69.121]) by smtp.gmail.com with ESMTPSA id
 2adb3069b0e04-5a4187ebf2asm4493897e87.80.2026.04.22.07.38.51
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Wed, 22 Apr 2026 07:38:51 -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=20251104 header.d=gmail.com header.i="@gmail.com" header.h="Content-Transfer-Encoding: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=20251104; t=1776868732; x=1777473532; darn=lists.xenproject.org;
        h=content-transfer-encoding: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;
        bh=SQRMRHTjpS2tKlDulaUwvlqdBl8ZjW8ncPDYcuyZIlc=;
        b=MGH6x7jTJ/hNDhD7CByfgwZIYsK4hpXc0J2417+BmcmgKCoGq5r6cipTM4nqSDCiGR
         vfgWjA+ds/veLwZG1x3wGVbyhWvUGYQmMWSCnQLn6gTqPosmmB1It6Z5FbMM+2PGRmHK
         lEgRlQlDQBegx3L8a9D3DeMfESF4o2mTos7GTc39lqj6wl+H9ncfRu2QtHoKXt5VPITg
         mxeB87DWEPU9nzTzs0oXpmrpM8UU03rsjriC87+qXS9xH+8f8cVBOuZXAEpQExr5vgYc
         ELhyGJm48PUyZitBizMkJKWAjEDLYDuyY13jVd+rjf9RfEBOkCvdtKVrCxjOo9KJ/kq+
         HsAA==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20251104; t=1776868732; x=1777473532;
        h=content-transfer-encoding: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;
        bh=SQRMRHTjpS2tKlDulaUwvlqdBl8ZjW8ncPDYcuyZIlc=;
        b=kVMFYrNwVG1jRPjWKAKvn8eai1ZLmHKdKUi3KS4zYF8/wie0IOSwg39bdBx9EH2p+r
         GgPJcOi4aLwDb5p/QFD2DXZi00GVysPTYikN0ZdWILYPWDjoOldkOtWGFB4AXL/KxIhP
         ov0cCL/sb/5VMCT0RE6K+uWXUv7WminUSlrZaZsqj2ozkNXkFbKtROIJF85Fgnu9JXeE
         j+v/6kZ+dVSJJr7LF3sQJ2jLlGCLXjEgNizZB9SvX61VZQJEP95KNNyNGINKn8GNkHHo
         zc0AadDJk/OncJPT+ernD3PRlGiD4353Wr6ZxuhlvRUb5ZUB1NaMD3DZvK9Ys7thUNrY
         +TMw==
X-Forwarded-Encrypted: i=1; AFNElJ8WDMVLRiIgRz3ZIbNRZLZlooN4bO5Yz8YiACY7IUSrUG7bMbnvkFDEjNqeIBFd8RQx5mazAYaxbGI=@lists.xenproject.org
X-Gm-Message-State: AOJu0Yw2RxUQ1BQNOpo186PqnL/H1AIijPCinTRb2qB6zZt1xMMt5OQy
	kcy/g3ewtUE83VChy/N3pN1Dm72z0L7PRWLEXlUyjLtjlKLWofUiKE5f
X-Gm-Gg: AeBDieuKR7a57lC7JCXZ3uNwQKRbcUx85Kpg4NvRCahxRGHCBK0+CIpH0IWMXUwBUdT
	fIQ1GLI9KNARdR2P+UNaOebkOytW2T9QbX6XHg7LqMF3B6pX5fZxi7KHfMomDNluGe3b6Rt7jGx
	mmJ2O01KovfTJBjqis4Ndm5itDwQx5E0+fBugQMbz7tlWopkqDu7AvsmWgc+UMo5wWZXZeGT2Zn
	iOfVvULcH6B6E/YB6zH+RMGYrSMWMksOkpyMTm6CiDNNlYPp74cyJ8et3+lB6IDvndadla6K+vC
	UTIjdhrKa0HzR9fmf/g7ifEJo1DnvfNpON8cIfPcDO6FYUDHJQNXTqzj1VJy3AyDG/JsLXq1mkb
	DRZyKMKFvWXAErtePD0Sm6lVAm/er8Us8zVjOUNFY750RZGYSpRDFjmwmWHvzPuAIhGIZ+ZXkL/
	bUvEfWIkWfqTPEUvPaG3FjqpZjNck2nJVs5NfL5CbZymJOydYUbXB6XhppuGepaYHvewsfpD1P0
	uwnAxWcn5pk7g==
X-Received: by 2002:a05:6512:692:b0:5a4:2bf:28b9 with SMTP id 2adb3069b0e04-5a4172ea032mr9070160e87.43.1776868732241;
        Wed, 22 Apr 2026 07:38:52 -0700 (PDT)
Message-ID: <37332fde-7996-4370-b126-9faa62e39ac5@gmail.com>
Date: Wed, 22 Apr 2026 16:38:50 +0200
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH v3 07/12] xen: introduce domain-layout.h with common
 domain_use_host_layout()
To: Jan Beulich <jbeulich@suse.com>
Cc: Romain Caritey <Romain.Caritey@microchip.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.pau@citrix.com>,
 xen-devel@lists.xenproject.org
References: <cover.1775836193.git.oleksii.kurochko@gmail.com>
 <2057380b431df202adedf852ad492dd0f156f863.1775836193.git.oleksii.kurochko@gmail.com>
 <702045f6-a342-4662-9eaa-76f7be1df8fa@suse.com>
Content-Language: en-US
From: Oleksii Kurochko <oleksii.kurochko@gmail.com>
In-Reply-To: <702045f6-a342-4662-9eaa-76f7be1df8fa@suse.com>
Content-Type: text/plain; charset=UTF-8; format=flowed
Content-Transfer-Encoding: 7bit
X-purgate-ID: tlsNG-720697/1776868733-80F7E161-1A6DC50D/10/73395122804
X-purgate-type: spam
X-purgate-size: 1908



On 4/21/26 11:20 AM, Jan Beulich wrote:
> On 10.04.2026 17:54, Oleksii Kurochko wrote:
>> --- /dev/null
>> +++ b/xen/include/xen/domain-layout.h
>> @@ -0,0 +1,28 @@
>> +#ifndef __XEN_DOMAIN_LAYOUT_H__
>> +#define __XEN_DOMAIN_LAYOUT_H__
>> +
>> +#include <xen/domain.h>
>> +#include <xen/paging.h>
>> +#include <xen/sched.h>
>> +
>> +/*
>> + * Is a domain using the host memory layout?
>> + *
>> + * domain_use_host_layout() is always False for PV guests.
>> + *
>> + * Direct-mapped domains (autotranslated domains with memory allocated
>> + * contiguously and mapped 1:1 so that GFN == MFN) are always using the
>> + * host memory layout to avoid address clashes.
> 
> What is "to avoid address clashes" about? If GFN == MFN, how could there
> be clashes?
> 
>> + * The hardware domain will use the host layout (regardless of
>> + * direct-mapped) because some OS may rely on specific address ranges
>> + * for the devices. PV Dom0, like any other PV guests, has
>> + * domain_use_host_layout() returning False.
> 
> This last sentence is somewhat redundant and somewhat in conflict with
> what is said further up. If you did s/guests/domains (including Dom0)/
> there, imo this sentence would best be dropped from down here.

I will change the comment to:

/*
  * Is a domain using the host memory layout?
  *
  * domain_use_host_layout() is always False for PV domains (including 
Dom0).
  *
  * Direct-mapped domains (autotranslated domains with memory allocated
  * contiguously and mapped 1:1 so that GFN == MFN) must use the host
  * memory layout since GFN == MFN by definition.
  *
  * The hardware domain will use the host layout (regardless of
  * direct-mapped) because some OS may rely on specific address ranges
  * for the devices.
  */

> 
> With these adjustments:
> Acked-by: Jan Beulich <jbeulich@suse.com>

Thanks.

~ Oleksii


From xen-devel-bounces@lists.xenproject.org Wed Apr 22 14:52:18 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 22 Apr 2026 14:52:18 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1290734.1570253 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wFYvv-00081f-43; Wed, 22 Apr 2026 14:52:07 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1290734.1570253; Wed, 22 Apr 2026 14:52: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 1wFYvv-00081Y-13; Wed, 22 Apr 2026 14:52:07 +0000
Received: by outflank-mailman (input) for mailman id 1290734;
 Wed, 22 Apr 2026 14:52:05 +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 1wFYvt-00081S-Cl
 for xen-devel@lists.xenproject.org; Wed, 22 Apr 2026 14:52:05 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wFYvs-00FD4E-PN
 for xen-devel@lists.xenproject.org; Wed, 22 Apr 2026 16:52:04 +0200
Received: from [10.42.69.6] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <jgross@suse.com>)
 id 69e8e085-bab6-0a2a0a5309dd-0a2a4506cadc-24
 for <xen-devel@lists.xenproject.org>; Wed, 22 Apr 2026 16:52:04 +0200
Received: from [209.85.208.54] (helo=mail-ed1-f54.google.com)
 by tlsNG-16d1c6.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.1)
 (envelope-from <jgross@suse.com>)
 id 69e8e094-7371-0a2a45060019-d155d036b050-3
 for <xen-devel@lists.xenproject.org>; Wed, 22 Apr 2026 16:52:04 +0200
Received: by mail-ed1-f54.google.com with SMTP id
 4fb4d7f45d1cf-67389cf78b0so9926077a12.2
 for <xen-devel@lists.xenproject.org>; Wed, 22 Apr 2026 07:52:04 -0700 (PDT)
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
 4fb4d7f45d1cf-672c480e31bsm3376184a12.11.2026.04.22.07.52.03
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Wed, 22 Apr 2026 07:52:03 -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=google header.d=suse.com header.i="@suse.com" header.h="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=1776869524; x=1777474324; darn=lists.xenproject.org;
        h=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;
        bh=ZU3v2upR7Ya8ZiRWJFkhvr6VnE2YwbFdi4wsSfXJjoU=;
        b=ZCwxPvKOcOtSDhKzaZtJf6T1jVfVM05Vtr39xytQ/j2KRXOzPYfwTHxA2Fj/1Eb8ub
         j0I6nTl5VL7KtyE/yYn57l1nnrKC60PYr4MlEWjQL0xPrNYtrTF1rFSzVmenBHcn2yDl
         DUCtIuXC2AWHXu+279ijJTaELhHDh7azyeZJwOeFDmop+7OfzNChKLXi1X/QVdPkKZ5C
         Vi2B0HD2C8q8uSnzdon9tbN+fhNhGh1FBhCM+m3srWRgsLWr3Dg7DaJHZr3Yt+L5H5XK
         3yK4r6r2K1D5pda2rmEu52NPks/ua7Lp7UhYBPol2BgAtfVr0LY4yQEkKRUKc/Seez+3
         TZBQ==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20251104; t=1776869524; x=1777474324;
        h=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;
        bh=ZU3v2upR7Ya8ZiRWJFkhvr6VnE2YwbFdi4wsSfXJjoU=;
        b=Dvilr5vktQ/dkeSWk/gbUxaqiWOLqrHi6+VreCruGzRm5Qu+rZp3bcyEH0TzuyjaP6
         JwngppwdupzkWrs6gkwvJ6l7hrYXFV78bFfV069TVtK3vL2xajN67MEOiJfYvdmon5nk
         hh5wymcdr9jWRRko3JPP9/ZeXUqqBz1k3JXGYnuwpEN9KPwPTXSQcgGHhQvmaNDnh/XM
         4H4N87KgipKpY5MbNvFEp6fqoZ66T4pqnOJR7NFy8Q2/n8bYKzbh/huhY/5yrt6NGjVr
         tukFGUZ33Afjc4eRTBD5+bXqV1NSCXyuAysoZXn6OOjE/MkfPD/JafXpmTh7yelGWgKO
         NFfw==
X-Forwarded-Encrypted: i=1; AFNElJ/R5rLX+g4GIlJB6yOIIJ3w+24RRmIXTjnQA08rfeLLDjtuvn33DMSoKb3+PYjIBC9PukkqTLWdscM=@lists.xenproject.org
X-Gm-Message-State: AOJu0YzaqcE/QgNdikseezU/bojsSnbCZE39GGoysCVDRX5qYbmyIZ3f
	jc/iLwZ43WguLKJqLgW+gQRwOpiNfoujXJGALJLYNPnfYCiqvJLmgLM+oqZKtaDUoTQ=
X-Gm-Gg: AeBDieuP3GZ54tpz4vdCcvqtiYzsGO4eDuOWtnjEzN3zJW3om6mK+e1aPgLtno9GDk4
	m+jQNeEK14vD3XlXIk7o9hw+fobHZpX38cWH23sjzVedy1+lvEhv8VMIA7HHedPTVCvBoPynCGv
	xtDUEFcvsoP+G8ubo94zT7oRUwB7Mka9rj2gjm1MdPSlj6Di5SgikTCnsrmGwsQ/dcpCrfIFlcV
	XY1NAqo41lD8NXoyOAPUAwNZFCYVbMXkCPxXVUR+Li4x/4F+hgjeXmwXiIR1FMx/zQd81oSPmoH
	ws2Dg0konKYT8LCkwwbxhfkIdqR57/OiYRb4Jb4y3UC8flqALPMRcnXSEpIlS+EP8J4kH5+noxu
	of7S1D1N3OL4JnXh3GJuaIOQJFo0gM0RncFtRcIbJnXdN2kbW1hcTf5CW03zsQs+qMTGbKEF3E8
	TPVifS7o5MuZRc849sFfKMEhg7D7uHDGxp0e3D7mU9DA5i87RjwDI0QBlG1oWeD3WlQuUc4iKhL
	C6NgdA2e+1mwLyv5w/pqCqM3IQSFACA+qJcQFnCwufbR9mLBDGJSbqnVB6Rd5H4
X-Received: by 2002:a05:6402:2792:b0:66b:582b:720a with SMTP id 4fb4d7f45d1cf-672bfd85cd9mr9791809a12.3.1776869523938;
        Wed, 22 Apr 2026 07:52:03 -0700 (PDT)
Message-ID: <560b6d87-87d0-4c6c-ac66-cd0d8a429792@suse.com>
Date: Wed, 22 Apr 2026 16:52:02 +0200
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH v7] xen/domain: introduce DOMID_ANY
To: dmukhin@ford.com, 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.pau@citrix.com,
 sstabellini@kernel.org
References: <20260408234046.1314021-1-dmukhin@ford.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: <20260408234046.1314021-1-dmukhin@ford.com>
Content-Type: multipart/signed; micalg=pgp-sha256;
 protocol="application/pgp-signature";
 boundary="------------F3bzep3e9CEmUPeyVniLGaG7"
X-purgate-ID: tlsNG-16d1c6/1776869524-52576D75-37240957/0/0
X-purgate-type: clean
X-purgate-size: 17471

This is an OpenPGP/MIME signed message (RFC 4880 and 3156)
--------------F3bzep3e9CEmUPeyVniLGaG7
Content-Type: multipart/mixed; boundary="------------4hZedzfjvbrFB305UgoRENdi";
 protected-headers="v1"
From: Juergen Gross <jgross@suse.com>
To: dmukhin@ford.com, 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.pau@citrix.com,
 sstabellini@kernel.org
Message-ID: <560b6d87-87d0-4c6c-ac66-cd0d8a429792@suse.com>
Subject: Re: [PATCH v7] xen/domain: introduce DOMID_ANY
References: <20260408234046.1314021-1-dmukhin@ford.com>
In-Reply-To: <20260408234046.1314021-1-dmukhin@ford.com>
Autocrypt-Gossip: 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
 Y2ggPGpiZXVsaWNoQHN1c2UuY29tPsJ3BBMRAgAgBQJZN5xEAhsDBgsJCAcDAgQVAggDBBYC
 AwECHgECF4AAIQkQoDSui/t3IH4WIQQ+pJkfkcoLMCa4X6CgNK6L+3cgfgn7AJ9DmMd0SMJE
 ePbc7/m22D2v04iu7ACffXTdZQhNl557tJuDXZSBxDmW/tLOwU0EWTecRBAIAIK5OMKMU5R2
 Lk2bbjgX7vyQuCFFyKf9rC/4itNwhYWFSlKzVj3WJBDsoi2KvPm7AI+XB6NIkNAkshL5C0kd
 pcNd5Xo0jRR5/WE/bT7LyrJ0OJWS/qUit5eNNvsO+SxGAk28KRa1ieVLeZi9D03NL0+HIAtZ
 tecfqwgl3Y72UpLUyt+r7LQhcI/XR5IUUaD4C/chB4Vq2QkDKO7Q8+2HJOrFIjiVli4lU+Sf
 OBp64m//Y1xys++Z4ODoKh7tkh5DxiO3QBHG7bHK0CSQsJ6XUvPVYubAuy1XfSDzSeSBl//C
 v78Fclb+gi9GWidSTG/4hsEzd1fY5XwCZG/XJJY9M/sAAwUH/09Ar9W2U1Qm+DwZeP2ii3Ou
 14Z9VlVVPhcEmR/AFykL9dw/OV2O/7cdi52+l00reUu6Nd4Dl8s4f5n8b1YFzmkVVIyhwjvU
 jxtPyUgDOt6DRa+RaDlXZZmxQyWcMv2anAgYWGVszeB8Myzsw8y7xhBEVV1S+1KloCzw4V8Z
 DSJrcsZlyMDoiTb7FyqxwQnM0f6qHxWbmOOnbzJmBqpNpFuDcz/4xNsymJylm6oXiucHQBAP
 Xb/cE1YNHpuaH4SRhIxwQilCYEznWowQphNAbJtEKOmcocY7EbSt8VjXTzmYENkIfkrHRyXQ
 dUm5AoL51XZljkCqNwrADGkTvkwsWSvCSQQYEQIACQUCWTecRAIbDAAKCRCgNK6L+3cgfuef
 AJ9wlZQNQUp0KwEf8Tl37RmcxCL4bQCcC5alCSMzUBJ5DBIcR4BY+CyQFAs=

--------------4hZedzfjvbrFB305UgoRENdi
Content-Type: multipart/mixed; boundary="------------cgY2VWHnRRUfWJ6RKGT2hzPN"

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

T24gMDkuMDQuMjYgMDE6NDAsIGRtdWtoaW5AZm9yZC5jb20gd3JvdGU6DQo+IEZyb206IERl
bmlzIE11a2hpbiA8ZG11a2hpbkBmb3JkLmNvbT4NCj4gDQo+IEFkZCBhIG5ldyBzeW1ib2wg
RE9NSURfQU5ZIHRvIGltcHJvdmUgdGhlIHJlYWRhYmlsaXR5IG9mIHRoZSBjb2RlLg0KPiAN
Cj4gVXBkYXRlIGFsbCByZWxldmFudCBkb21pZF9hbGxvYygpIGNhbGwgc2l0ZXMgYW5kIGhh
cmRlbiB0aGUgZG9taWRfYWxsb2MoKQ0KPiBpbnB1dCB2YWx1ZSBjaGVjay4NCj4gDQo+IEFs
c28sIGZpeCBwcm9ibGVtIHdpdGggcGFzc2luZyBpbnZhbGlkIGRvbWFpbiBJRHMgaW4NCj4g
WEVOX0RPTUNUTF9jcmVhdGVkb21haW46IHR1cm5zIG91dCBsaWJ4bF9fZG9tYWluX21ha2Uo
KSAodG9vbHN0YWNrKQ0KPiB1c2VzIDB4ZmZmZiBhcyBkb21haW4gSUQuDQo+IA0KPiBBbWVu
ZHM6IDJkNTA2NTA2MDcxMCAoInhlbi9kb21haW46IHVuaWZ5IGRvbWFpbiBJRCBhbGxvY2F0
aW9uIikNCj4gU2lnbmVkLW9mZi1ieTogRGVuaXMgTXVraGluIDxkbXVraGluQGZvcmQuY29t
Pg0KPiAtLS0NCj4gQ2hhbmdlcyBzaW5jZSB2NjoNCj4gLSBmaXhlZCBsaWJ4bF9kb21pZF92
YWxpZF9ndWVzdCgpIGNoZWNrIGluIGxpYnhsX2NyZWF0ZS5jDQo+IC0gTGluayB0byB2Njog
aHR0cHM6Ly9sb3JlLmtlcm5lbC5vcmcveGVuLWRldmVsLzIwMjYwMzA3MDI1NDUxLjMxNDgw
NzgtMi1kbXVraGluQGZvcmQuY29tLw0KPiAtIENJOiBodHRwczovL2dpdGxhYi5jb20veGVu
LXByb2plY3QvcGVvcGxlL2RtdWtoaW4veGVuLy0vcGlwZWxpbmVzLzI0Mzg3OTA3NDgNCj4g
LS0tDQo+ICAgdG9vbHMvbGlicy9saWdodC9saWJ4bF9jcmVhdGUuYyAgICAgICAgIHwgIDQg
KysrLQ0KPiAgIHRvb2xzL3Rlc3RzL2RvbWlkL2hhcm5lc3MuaCAgICAgICAgICAgICB8ICAx
ICsNCj4gICB0b29scy90ZXN0cy9kb21pZC90ZXN0LWRvbWlkLmMgICAgICAgICAgfCAxMiAr
KysrKystLS0tLS0NCj4gICB4ZW4vY29tbW9uL2RldmljZS10cmVlL2RvbTBsZXNzLWJ1aWxk
LmMgfCAgMiArLQ0KPiAgIHhlbi9jb21tb24vZG9tY3RsLmMgICAgICAgICAgICAgICAgICAg
ICB8ICAzICstLQ0KPiAgIHhlbi9jb21tb24vZG9taWQuYyAgICAgICAgICAgICAgICAgICAg
ICB8ICA1ICsrKystDQo+ICAgeGVuL2luY2x1ZGUvcHVibGljL3hlbi5oICAgICAgICAgICAg
ICAgIHwgIDcgKysrKysrKw0KPiAgIDcgZmlsZXMgY2hhbmdlZCwgMjMgaW5zZXJ0aW9ucygr
KSwgMTEgZGVsZXRpb25zKC0pDQo+IA0KPiBkaWZmIC0tZ2l0IGEvdG9vbHMvbGlicy9saWdo
dC9saWJ4bF9jcmVhdGUuYyBiL3Rvb2xzL2xpYnMvbGlnaHQvbGlieGxfY3JlYXRlLmMNCj4g
aW5kZXggYmZjOTE0OTA5NmEzLi42ZmQ2MmQxNDAzODkgMTAwNjQ0DQo+IC0tLSBhL3Rvb2xz
L2xpYnMvbGlnaHQvbGlieGxfY3JlYXRlLmMNCj4gKysrIGIvdG9vbHMvbGlicy9saWdodC9s
aWJ4bF9jcmVhdGUuYw0KPiBAQCAtNjgxLDggKzY4MSwxMCBAQCBpbnQgbGlieGxfX2RvbWFp
bl9tYWtlKGxpYnhsX19nYyAqZ2MsIGxpYnhsX2RvbWFpbl9jb25maWcgKmRfY29uZmlnLA0K
PiAgICAgICAgICAgICAgICAgICAgICAgY29udGludWU7DQo+ICAgDQo+ICAgICAgICAgICAg
ICAgICAgIGxvY2FsX2RvbWlkID0gdjsNCj4gKyAgICAgICAgICAgIH0gZWxzZSBpZiAobGli
eGxfZG9taWRfdmFsaWRfZ3Vlc3QoaW5mby0+ZG9taWQpKSB7DQo+ICsgICAgICAgICAgICAg
ICAgbG9jYWxfZG9taWQgPSBpbmZvLT5kb21pZDsNCj4gICAgICAgICAgICAgICB9IGVsc2Ug
ew0KPiAtICAgICAgICAgICAgICAgIGxvY2FsX2RvbWlkID0gaW5mby0+ZG9taWQ7IC8qIE1h
eSBub3QgYmUgdmFsaWQgKi8NCj4gKyAgICAgICAgICAgICAgICBsb2NhbF9kb21pZCA9IERP
TUlEX0FOWTsNCj4gICAgICAgICAgICAgICB9DQo+ICAgDQo+ICAgICAgICAgICAgICAgcmV0
ID0geGNfZG9tYWluX2NyZWF0ZShjdHgtPnhjaCwgJmxvY2FsX2RvbWlkLCAmY3JlYXRlKTsN
Cj4gZGlmZiAtLWdpdCBhL3Rvb2xzL3Rlc3RzL2RvbWlkL2hhcm5lc3MuaCBiL3Rvb2xzL3Rl
c3RzL2RvbWlkL2hhcm5lc3MuaA0KPiBpbmRleCAxN2ViMjJhOWE4NTQuLjY1ZGEwZDA3NWEy
YiAxMDA2NDQNCj4gLS0tIGEvdG9vbHMvdGVzdHMvZG9taWQvaGFybmVzcy5oDQo+ICsrKyBi
L3Rvb2xzL3Rlc3RzL2RvbWlkL2hhcm5lc3MuaA0KPiBAQCAtNDEsNiArNDEsNyBAQCBleHRl
cm4gdW5zaWduZWQgbG9uZyBmaW5kX25leHRfemVyb19iaXQoY29uc3QgdW5zaWduZWQgbG9u
ZyAqYWRkciwNCj4gICANCj4gICAjZGVmaW5lIERPTUlEX0ZJUlNUX1JFU0VSVkVEICAgICAg
ICAgICAgKDEwMCkNCj4gICAjZGVmaW5lIERPTUlEX0lOVkFMSUQgICAgICAgICAgICAgICAg
ICAgKDEwMSkNCj4gKyNkZWZpbmUgRE9NSURfQU5ZICAgICAgICAgICAgICAgICAgICAgICAo
MTAyKQ0KPiAgIA0KPiAgICNlbmRpZiAvKiBfVEVTVF9IQVJORVNTXyAqLw0KPiAgIA0KPiBk
aWZmIC0tZ2l0IGEvdG9vbHMvdGVzdHMvZG9taWQvdGVzdC1kb21pZC5jIGIvdG9vbHMvdGVz
dHMvZG9taWQvdGVzdC1kb21pZC5jDQo+IGluZGV4IDU5MTVjNDY5OWE1Yy4uNzFjYzRlN2Zk
ODZkIDEwMDY0NA0KPiAtLS0gYS90b29scy90ZXN0cy9kb21pZC90ZXN0LWRvbWlkLmMNCj4g
KysrIGIvdG9vbHMvdGVzdHMvZG9taWQvdGVzdC1kb21pZC5jDQo+IEBAIC00MSwyMCArNDEs
MjAgQEAgaW50IG1haW4oaW50IGFyZ2MsIGNoYXIgKiphcmd2KQ0KPiAgICAgICAgICAgZG9t
aWRfZnJlZShleHBlY3RlZCk7DQo+ICAgDQo+ICAgICAgIC8qDQo+IC0gICAgICogVGVzdCB0
aGF0IHRoYXQgdHdvIGNvbnNlY3V0aXZlIGNhbGxzIG9mIGRvbWlkX2FsbG9jKERPTUlEX0lO
VkFMSUQpDQo+ICsgICAgICogVGVzdCB0aGF0IHRoYXQgdHdvIGNvbnNlY3V0aXZlIGNhbGxz
IG9mIGRvbWlkX2FsbG9jKERPTUlEX0FOWSkNCj4gICAgICAgICogd2lsbCBuZXZlciByZXR1
cm4gdGhlIHNhbWUgSUQuDQo+ICAgICAgICAqIE5COiBJRCMwIGlzIHJlc2VydmVkIGFuZCBz
aGFsbCBub3QgYmUgYWxsb2NhdGVkIGJ5DQo+IC0gICAgICogZG9taWRfYWxsb2MoRE9NSURf
SU5WQUxJRCkuDQo+ICsgICAgICogZG9taWRfYWxsb2MoRE9NSURfQU5ZKS4NCj4gICAgICAg
ICovDQo+ICAgICAgIGZvciAoIGV4cGVjdGVkID0gMTsgZXhwZWN0ZWQgPCBET01JRF9GSVJT
VF9SRVNFUlZFRDsgZXhwZWN0ZWQrKyApDQo+ICAgICAgIHsNCj4gLSAgICAgICAgYWxsb2Nh
dGVkID0gZG9taWRfYWxsb2MoRE9NSURfSU5WQUxJRCk7DQo+ICsgICAgICAgIGFsbG9jYXRl
ZCA9IGRvbWlkX2FsbG9jKERPTUlEX0FOWSk7DQo+ICAgICAgICAgICB2ZXJpZnkoYWxsb2Nh
dGVkID09IGV4cGVjdGVkLA0KPiAgICAgICAgICAgICAgICAgICJURVNUIDM6IGV4cGVjdGVk
ICV1IGFsbG9jYXRlZCAldVxuIiwgZXhwZWN0ZWQsIGFsbG9jYXRlZCk7DQo+ICAgICAgIH0N
Cj4gICAgICAgZm9yICggZXhwZWN0ZWQgPSAxOyBleHBlY3RlZCA8IERPTUlEX0ZJUlNUX1JF
U0VSVkVEOyBleHBlY3RlZCsrICkNCj4gICAgICAgew0KPiAtICAgICAgICBhbGxvY2F0ZWQg
PSBkb21pZF9hbGxvYyhET01JRF9JTlZBTElEKTsNCj4gKyAgICAgICAgYWxsb2NhdGVkID0g
ZG9taWRfYWxsb2MoRE9NSURfQU5ZKTsNCj4gICAgICAgICAgIHZlcmlmeShhbGxvY2F0ZWQg
PT0gRE9NSURfSU5WQUxJRCwNCj4gICAgICAgICAgICAgICAgICAiVEVTVCA0OiBleHBlY3Rl
ZCAldSBhbGxvY2F0ZWQgJXVcbiIsIERPTUlEX0lOVkFMSUQsIGFsbG9jYXRlZCk7DQo+ICAg
ICAgIH0NCj4gQEAgLTY0LDcgKzY0LDcgQEAgaW50IG1haW4oaW50IGFyZ2MsIGNoYXIgKiph
cmd2KQ0KPiAgICAgICAgICAgZG9taWRfZnJlZShleHBlY3RlZCk7DQo+ICAgICAgIGZvciAo
IGV4cGVjdGVkID0gMTsgZXhwZWN0ZWQgPCBET01JRF9GSVJTVF9SRVNFUlZFRCAvIDI7IGV4
cGVjdGVkKysgKQ0KPiAgICAgICB7DQo+IC0gICAgICAgIGFsbG9jYXRlZCA9IGRvbWlkX2Fs
bG9jKERPTUlEX0lOVkFMSUQpOw0KPiArICAgICAgICBhbGxvY2F0ZWQgPSBkb21pZF9hbGxv
YyhET01JRF9BTlkpOw0KPiAgICAgICAgICAgdmVyaWZ5KGFsbG9jYXRlZCA9PSBleHBlY3Rl
ZCwNCj4gICAgICAgICAgICAgICAgICAiVEVTVCA1OiBleHBlY3RlZCAldSBhbGxvY2F0ZWQg
JXVcbiIsIGV4cGVjdGVkLCBhbGxvY2F0ZWQpOw0KPiAgICAgICB9DQo+IEBAIC03Miw3ICs3
Miw3IEBAIGludCBtYWluKGludCBhcmdjLCBjaGFyICoqYXJndikNCj4gICAgICAgLyogUmUt
YWxsb2NhdGUgbGFzdCBJRCBmcm9tIFsxLi5ET01JRF9GSVJTVF9SRVNFUlZFRCAtIDFdLiAq
Lw0KPiAgICAgICBleHBlY3RlZCA9IERPTUlEX0ZJUlNUX1JFU0VSVkVEIC0gMTsNCj4gICAg
ICAgZG9taWRfZnJlZShET01JRF9GSVJTVF9SRVNFUlZFRCAtIDEpOw0KPiAtICAgIGFsbG9j
YXRlZCA9IGRvbWlkX2FsbG9jKERPTUlEX0lOVkFMSUQpOw0KPiArICAgIGFsbG9jYXRlZCA9
IGRvbWlkX2FsbG9jKERPTUlEX0FOWSk7DQo+ICAgICAgIHZlcmlmeShhbGxvY2F0ZWQgPT0g
ZXhwZWN0ZWQsDQo+ICAgICAgICAgICAgICAiVEVTVCA2OiBleHBlY3RlZCAldSBhbGxvY2F0
ZWQgJXVcbiIsIGV4cGVjdGVkLCBhbGxvY2F0ZWQpOw0KPiAgIA0KPiBkaWZmIC0tZ2l0IGEv
eGVuL2NvbW1vbi9kZXZpY2UtdHJlZS9kb20wbGVzcy1idWlsZC5jIGIveGVuL2NvbW1vbi9k
ZXZpY2UtdHJlZS9kb20wbGVzcy1idWlsZC5jDQo+IGluZGV4IDg0MGQxNDQxOWRhMi4uM2Mx
OGRhZTVlNjI1IDEwMDY0NA0KPiAtLS0gYS94ZW4vY29tbW9uL2RldmljZS10cmVlL2RvbTBs
ZXNzLWJ1aWxkLmMNCj4gKysrIGIveGVuL2NvbW1vbi9kZXZpY2UtdHJlZS9kb20wbGVzcy1i
dWlsZC5jDQo+IEBAIC04NTIsNyArODUyLDcgQEAgdm9pZCBfX2luaXQgY3JlYXRlX2RvbVVz
KHZvaWQpDQo+ICAgICAgICAgICBpZiAoIChtYXhfaW5pdF9kb21pZCArIDEpID49IERPTUlE
X0ZJUlNUX1JFU0VSVkVEICkNCj4gICAgICAgICAgICAgICBwYW5pYygiTm8gbW9yZSBkb21h
aW4gSURzIGF2YWlsYWJsZVxuIik7DQo+ICAgDQo+IC0gICAgICAgIGRvbWlkID0gZG9taWRf
YWxsb2MoRE9NSURfSU5WQUxJRCk7DQo+ICsgICAgICAgIGRvbWlkID0gZG9taWRfYWxsb2Mo
RE9NSURfQU5ZKTsNCj4gICAgICAgICAgIGlmICggZG9taWQgPT0gRE9NSURfSU5WQUxJRCAp
DQo+ICAgICAgICAgICAgICAgcGFuaWMoIkVycm9yIGFsbG9jYXRpbmcgSUQgZm9yIGRvbWFp
biAlc1xuIiwgZHRfbm9kZV9uYW1lKG5vZGUpKTsNCj4gICANCj4gZGlmZiAtLWdpdCBhL3hl
bi9jb21tb24vZG9tY3RsLmMgYi94ZW4vY29tbW9uL2RvbWN0bC5jDQo+IGluZGV4IDkzNzM4
OTMxYzU3NS4uYjk2OWY1YWRhNmNjIDEwMDY0NA0KPiAtLS0gYS94ZW4vY29tbW9uL2RvbWN0
bC5jDQo+ICsrKyBiL3hlbi9jb21tb24vZG9tY3RsLmMNCj4gQEAgLTQwOSw4ICs0MDksNyBA
QCBsb25nIGRvX2RvbWN0bChYRU5fR1VFU1RfSEFORExFX1BBUkFNKHhlbl9kb21jdGxfdCkg
dV9kb21jdGwpDQo+ICAgDQo+ICAgICAgIGNhc2UgWEVOX0RPTUNUTF9jcmVhdGVkb21haW46
DQo+ICAgICAgIHsNCj4gLSAgICAgICAgLyogTkI6IElEIzAgaXMgcmVzZXJ2ZWQsIGZpbmQg
dGhlIGZpcnN0IHN1aXRhYmxlIElEIGluc3RlYWQuICovDQo+IC0gICAgICAgIGRvbWlkX3Qg
ZG9taWQgPSBkb21pZF9hbGxvYyhvcC0+ZG9tYWluID86IERPTUlEX0lOVkFMSUQpOw0KPiAr
ICAgICAgICBkb21pZF90IGRvbWlkID0gZG9taWRfYWxsb2Mob3AtPmRvbWFpbik7DQo+ICAg
DQo+ICAgICAgICAgICBpZiAoIGRvbWlkID09IERPTUlEX0lOVkFMSUQgKQ0KPiAgICAgICAg
ICAgew0KPiBkaWZmIC0tZ2l0IGEveGVuL2NvbW1vbi9kb21pZC5jIGIveGVuL2NvbW1vbi9k
b21pZC5jDQo+IGluZGV4IDIzODdkZGIwODMwMC4uYjAyNThlNDc3YzFhIDEwMDY0NA0KPiAt
LS0gYS94ZW4vY29tbW9uL2RvbWlkLmMNCj4gKysrIGIveGVuL2NvbW1vbi9kb21pZC5jDQo+
IEBAIC0xOSw3ICsxOSw3IEBAIHN0YXRpYyBERUNMQVJFX0JJVE1BUChkb21pZF9iaXRtYXAs
IERPTUlEX0ZJUlNUX1JFU0VSVkVEKTsNCj4gICAgKiBAcGFyYW0gZG9taWQgRG9tYWluIElE
IGhpbnQ6DQo+ICAgICogLSBJZiBhbiBleHBsaWNpdCBkb21haW4gSUQgaXMgcHJvdmlkZWQs
IHZlcmlmeSBpdHMgYXZhaWxhYmlsaXR5IGFuZCB1c2UgaXQNCj4gICAgKiAgIGlmIElEIGlz
IG5vdCB1c2VkOw0KPiAtICogLSBJZiBET01JRF9JTlZBTElEIGlzIHByb3ZpZGVkLCBzZWFy
Y2ggWzEuLkRPTUlEX0ZJUlNUX1JFU0VSVkVELTFdIHJhbmdlLA0KPiArICogLSBJZiBET01J
RF9BTlkgaXMgcHJvdmlkZWQsIHNlYXJjaCBbMS4uRE9NSURfRklSU1RfUkVTRVJWRUQtMV0g
cmFuZ2UsDQo+ICAgICogICBzdGFydGluZyBmcm9tIHRoZSBsYXN0IHVzZWQgSUQuIEltcGxl
bWVudGF0aW9uIGd1YXJhbnRlZXMgdGhhdCB0d28NCj4gICAgKiAgIGNvbnNlY3V0aXZlIGNh
bGxzIHdpbGwgbmV2ZXIgcmV0dXJuIHRoZSBzYW1lIElELiBJRCMwIGlzIHJlc2VydmVkIGZv
cg0KPiAgICAqICAgdGhlIGZpcnN0IGJvb3QgZG9tYWluIChjdXJyZW50bHksIGRvbTApIGFu
ZCBleGNsdWRlZCBmcm9tIHRoZSBhbGxvY2F0aW9uDQo+IEBAIC0zMSw2ICszMSw5IEBAIGRv
bWlkX3QgZG9taWRfYWxsb2MoZG9taWRfdCBkb21pZCkNCj4gICB7DQo+ICAgICAgIHN0YXRp
YyBkb21pZF90IGRvbWlkX2xhc3Q7DQo+ICAgDQo+ICsgICAgaWYgKCBkb21pZCA+PSBET01J
RF9GSVJTVF9SRVNFUlZFRCAmJiBkb21pZCAhPSBET01JRF9BTlkgKQ0KPiArICAgICAgICBy
ZXR1cm4gRE9NSURfSU5WQUxJRDsNCj4gKw0KDQpXaXRob3V0IGNoYW5naW5nIHRvb2xzL2hl
bHBlcnMvaW5pdC14ZW5zdG9yZS1kb21haW4uYyB0byB1c2UgRE9NSURfQU5ZDQppbnN0ZWFk
IG9mIH4wIGFzIGlucHV0IGRvbWlkIHRoaXMgd2lsbCBicmVhayB4ZW5zdG9yZS1zdHViZG9t
IGNyZWF0aW9uLg0KDQpBbm90aGVyIG9wdGlvbiB3b3VsZCBiZSB0byBtb2RpZnkgeGNfZG9t
YWluX2NyZWF0ZSgpIHRvIHVzZSBET01JRF9BTlkNCmluIGNhc2UgZG9taWQgd2FzIHNwZWNp
ZmllZCBhcyAwIG9yID49IERPTUlEX0ZJUlNUX1JFU0VSVkVELiBUaGlzIHdvdWxkDQphdCBv
bmNlIGZpeCB0aGUgdGVzdCBjYXNlcyBBbnRob255IHNhdyBmYWlsaW5nLiBJJ20gbm90IHN1
cmUgdGhpcyBpcw0KYSBtb2RpZmljYXRpb24gYmVpbmcgYWNjZXB0ZWQsIHRob3VnaC4NCg0K
DQpKdWVyZ2VuDQo=
--------------cgY2VWHnRRUfWJ6RKGT2hzPN
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-----

--------------cgY2VWHnRRUfWJ6RKGT2hzPN--

--------------4hZedzfjvbrFB305UgoRENdi--

--------------F3bzep3e9CEmUPeyVniLGaG7
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/Ey8FAmno4JMFAwAAAAAACgkQsN6d1ii/Ey+B
eAf+JVZcN79xZTf4pv4JkygPrSPvVRiGzFoINO+pIz3TkHR3XglFAt/0YxJhx0/k23rawDnQv57R
b5YXf4KpCTT787XOvVMSYq4LP2kAsL7KL2RL61cW5EqczuNG36IvB7ezt/4JgqMhurtvFzi27G28
aDefVoW5SqsQ6EgObIsszRXCFtan5FLKNCx1TnVO/zYyMcHW2DzB5wWtVzaeJMTksgbZPmWU6wNC
ZYwxOf9U/YwCXRD48sQh20eogZThTe1DFZw6co/q/wbE9rW0CnEEJFGm1eml6eTq8pHbDCrIQz7x
xlFYyi2e09lAvr9ypVelUJcFu216pHlRtQocekncJQ==
=7dNz
-----END PGP SIGNATURE-----

--------------F3bzep3e9CEmUPeyVniLGaG7--


From xen-devel-bounces@lists.xenproject.org Wed Apr 22 15:01:41 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 22 Apr 2026 15:01:41 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1290754.1570262 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wFZ55-0001yg-15; Wed, 22 Apr 2026 15:01:35 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1290754.1570262; Wed, 22 Apr 2026 15:01: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 1wFZ54-0001yZ-UJ; Wed, 22 Apr 2026 15:01:34 +0000
Received: by outflank-mailman (input) for mailman id 1290754;
 Wed, 22 Apr 2026 15:01:33 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <xakep.amatop@gmail.com>) id 1wFZ53-0001yT-44
 for xen-devel@lists.xenproject.org; Wed, 22 Apr 2026 15:01:33 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wFZ52-007ecC-Gq
 for xen-devel@lists.xenproject.org; Wed, 22 Apr 2026 17:01:32 +0200
Received: from [10.42.69.11] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <xakep.amatop@gmail.com>)
 id 69e8e2c0-bab6-0a2a0a5309dd-0a2a450b8da4-36
 for <xen-devel@lists.xenproject.org>; Wed, 22 Apr 2026 17:01:32 +0200
Received: from [209.85.208.178] (helo=mail-lj1-f178.google.com)
 by tlsNG-42698a.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.1)
 (envelope-from <xakep.amatop@gmail.com>)
 id 69e8e2cc-212f-0a2a450b0019-d155d0b2c82a-3
 for <xen-devel@lists.xenproject.org>; Wed, 22 Apr 2026 17:01:32 +0200
Received: by mail-lj1-f178.google.com with SMTP id
 38308e7fff4ca-38e936caafeso55385951fa.2
 for <xen-devel@lists.xenproject.org>; Wed, 22 Apr 2026 08:01:32 -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=20251104 header.d=gmail.com header.i="@gmail.com" header.h="Content-Transfer-Encoding:Cc:To:Subject:Message-ID:Date:From:In-Reply-To:References:MIME-Version"
ARC-Seal: i=1; a=rsa-sha256; t=1776870092; cv=none;
        d=google.com; s=arc-20240605;
        b=iPahnxZM8rOR/7LbiUb25qA1gc4xYf4IppJjdmKBybZ3npO93ZeZ6eAdfURLbvcV36
         SFD2+20na4QTRZp/p7AoAas1MMb/I7ERBv20blRyOKyDl/JDjgcvT1YKQ2efpWV7uZ5K
         kTmigdab6TviJpjjukV7qNPaDF1vlATbR8qxDAyDXjYpoJMEVfSFCtjPmm/ilRaTMe0u
         4BqdSOOaldmk9JWIIQ/1q+nZ6BfJ3unXzShc41wWy1qReLP7wWVMx8vlzGz6G1hYsH+S
         mWP8AGdjjVoang76fYolSGuxxvE0QjSSiaJ+6q+L4HQztVPhxwJdOPoP6Aw4gpCm2dzZ
         qvZg==
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20240605;
        h=content-transfer-encoding:cc:to:subject:message-id:date:from
         :in-reply-to:references:mime-version:dkim-signature;
        bh=tjg9IwgC3tR3fMbuIgriuAtu056atsUqX2gwrY6GQYM=;
        fh=zL8KVAj6rSaYbk/102rEWeOa69wm5cw+i9nXMzeM8z8=;
        b=TSGl+xxy84oXPrrtLMHTKkw+wYWycUgCWicBxVcEQXIC2Y5pRhkBaF9URvS6HDC6zF
         7R+yoSYb8KEjyWPdefk4FRPfXOAS7YKBCbfmbS7ICzWCvIEmh7qA/kg8rSBcOAemIQud
         aSe/MmTEpMzUvDqXNkLufrBzdomwoMYJKlmeVvML4ImA5p8jU8UsuxuNkbyMTFLg0xDT
         0uc6xDjgJ38omkdVV7yAddAYI+H1QSvDj9KnMBWlr5q8fvXhqqdylqOep3dkSmqhe2z9
         3E1cFSsB4gxODRdn65lq3LDk1hhfzrsY+teO69JjamUaVYm4UZnQeo86GMY/4/lyv/Ps
         tzdg==;
        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=20251104; t=1776870092; x=1777474892; darn=lists.xenproject.org;
        h=content-transfer-encoding:cc:to:subject:message-id:date:from
         :in-reply-to:references:mime-version:from:to:cc:subject:date
         :message-id:reply-to;
        bh=tjg9IwgC3tR3fMbuIgriuAtu056atsUqX2gwrY6GQYM=;
        b=mA0hEFAZcSVLPQADne2yx/4N4hjGb5gmgAqRk2ztZAr+gkJUiwHD52ernfJ+H5VqIS
         tDck30lWCRm+pIH5+qxc/SLvK312hSygkxww3SWmobU9sL61/iUS/J9FnO0v/L4Ixd1e
         tD2wjiITLCJ/MYMJbjmySvBb/SdemQNsQ8+cqzgn5cAbxnuxnTvdNHfXHAWp1rKsY/b3
         uR2sefLeXDKE44G/nSweMm8ue04gXwPzWlXCrjAnmGQ4iTtCxGkAPWW7gkkkdiO/3xnJ
         tcSnJN42VwZVdGS2aImonXXoyn5fjM+QmNfq0v+jNPG43HWJvTbv2p+EMdo20xalqUGu
         sHmg==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20251104; t=1776870092; x=1777474892;
        h=content-transfer-encoding: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;
        bh=tjg9IwgC3tR3fMbuIgriuAtu056atsUqX2gwrY6GQYM=;
        b=eIvnFW63hm3Er8HoS1Ht694sNr64ZV66tEJOJ+FahPYojCv/LecB9JG0qhRxlmmuLn
         /cD65DE83Cn1rH7Qkw4L37up+ETTyQIpvlEu9QEZzn8ArejleserzF8gIqch6ymk9YTY
         It/+6GkpWwVzOm9xqf/2iHzYXGVyeqhaPD4wrGiTZqGCvDWKndk6YYNzjq23PKJfbDvX
         uDZztbfVDgLb84Jdkt/asKeiL+s+krcBGokde51jP8/5t+s1J5kr7HOnRDngjKgGU3+W
         6a8cSC2Hn8cUJVY8fJ7MdSxMd26aDo0wh6d9p5K2VPxgKCcRwK023Lli/rGlcaISCLlJ
         DyUg==
X-Gm-Message-State: AOJu0Yz4nwTe8bIE8KiYyoQqSBnKSQYVycBk/v6dVw9i85/vHcojrelx
	dkscSZcJe+gq7l7/8stHj3nxEnLy9GhAnK8X+Quc++RcCssuBTAsYmyjD77b84t/ZN3QA5QxWa7
	LLgpdlSL+U+79nV3glrxvKtKUns9mj8c=
X-Gm-Gg: AeBDieuNDiCxaCbnb2PZloCpN2IBu87A5jCcCzyasQWKsruKfS3EGAlAUy39WsYOff3
	SIwuIHt9BIDL1E11UmSq3MCb/UC6fHc0Asv7B9A5DQFoqbXO0B/JVMWFV6kJC9nUqM4ZScMj+cQ
	BfaBT2IMkzh6XFY3WlM446JRXIn8MBTT4F+YxI9sN0FK7n+dIQ6RX8hPvZFMKBD25t+xqylAmtV
	ehVsz1vWqyOGq+fbXrbseiW/ohJXjBSu9HPn8H9afb+EFZ20DBPCYTkz1F1kWm9ZLqr3y/Ov6Cm
	KglzJKlupIDGG5BA
X-Received: by 2002:a2e:320b:0:b0:38b:dbcf:a29f with SMTP id
 38308e7fff4ca-38ec7b4c6eemr57495811fa.28.1776870091164; Wed, 22 Apr 2026
 08:01:31 -0700 (PDT)
MIME-Version: 1.0
References: <459cf46204e86ed3a2ffd79ae649b1a2051f5204.1775812563.git.mykola_kvach@epam.com>
 <c30e0162-aea4-41fe-a077-cb7c6e6b4d33@amd.com>
In-Reply-To: <c30e0162-aea4-41fe-a077-cb7c6e6b4d33@amd.com>
From: Mykola Kvach <xakep.amatop@gmail.com>
Date: Wed, 22 Apr 2026 18:00:00 +0300
X-Gm-Features: AQROBzD7bgypQk-e0GQKP_KOPKEgD-zypoZyZJU9-IiXfPHN04O4Kyn5ASiX8NY
Message-ID: <CAGeoDV9hQrpTdOUQPOx2a+T_6TF=g0DOeeDpzZghgceRFMRvMA@mail.gmail.com>
Subject: Re: [PATCH] xen/arm: gic-v2: disable interrupt bypass on CPU shutdown
To: "Orzel, Michal" <michal.orzel@amd.com>
Cc: xen-devel@lists.xenproject.org, Mykola Kvach <mykola_kvach@epam.com>, 
	Stefano Stabellini <sstabellini@kernel.org>, Julien Grall <julien@xen.org>, 
	Bertrand Marquis <bertrand.marquis@arm.com>, Volodymyr Babchuk <Volodymyr_Babchuk@epam.com>
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: quoted-printable
X-purgate-ID: tlsNG-42698a/1776870092-24CB8F3B-BDF2C1CA/0/0
X-purgate-type: clean
X-purgate-size: 2165

Hi Michal,

Thank you for the review.

On Mon, Apr 20, 2026 at 11:38=E2=80=AFAM Orzel, Michal <michal.orzel@amd.co=
m> wrote:
>
> Hmm, this landed in my junk folder.
>
> On 10/04/2026 11:36, Mykola Kvach wrote:
> > From: Mykola Kvach <mykola_kvach@epam.com>
> >
> > The GICv2 CPU shutdown path currently writes 0 to GICC_CTLR.
> >
> > Per IHI0048B.b section 2.3.1, clearing IRQBypDisGrp{0,1} and
> > FIQBypDisGrp{0,1} selects bypass rather than deasserted interrupt
> > outputs when the CPU interface stops driving them. Tables 2-2 and 2-3
> > show that a zeroed GICC_CTLR can fall back to the legacy IRQ/FIQ inputs
> > instead of fully disabling the interface.
> >
> > Fix this by reading GICC_CTLR, setting the bypass-disable bits, and
> > clearing both group-enable bits before writing the value back. Keep the
> > existing GICC_CTL_ENABLE definition for the init path and use a separat=
e
> > mask for the shutdown-side group-enable handling.
> IIUC we don't need to worry about not setting the bypass-disable bits in =
cpu
> init (we only set group 0 and EOI) because they are relevant only when th=
e bit 0
> is disabled i.e. the path this patch changes?

Yes, that is my understanding as well.

In cpu_init(), Xen enables the CPU interface by programming
GICC_CTL_ENABLE | GICC_CTL_EOI. In that state, the GIC CPU interface
drives the interrupt outputs, so leaving the bypass-disable bits clear
does not cause fallback to the legacy bypass path.

The issue is specific to cpu_disable(): once the group-enable bits are
cleared, leaving the bypass-disable bits clear can select the legacy
IRQ/FIQ bypass inputs instead of fully deasserting the outputs.

>
> >
> > Section 2.3.2 also states that wakeup event signals remain available
> > even when both GIC interrupt signaling and interrupt bypass are
> > disabled, so disabling bypass does not break the power-management use
> > case, i.e. suspend modes.
> >
> > Fixes: 5e40a1b4351e ("arm: SMP CPU shutdown")
> > Signed-off-by: Mykola Kvach <mykola_kvach@epam.com>
> Reviewed-by: Michal Orzel <michal.orzel@amd.com>
>
> ~Michal
>

Best regards,
Mykola


From xen-devel-bounces@lists.xenproject.org Wed Apr 22 15:36:02 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 22 Apr 2026 15:36:02 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1290771.1570270 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wFZcI-0007bW-FV; Wed, 22 Apr 2026 15:35:54 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1290771.1570270; Wed, 22 Apr 2026 15:35: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 1wFZcI-0007bP-Ct; Wed, 22 Apr 2026 15:35:54 +0000
Received: by outflank-mailman (input) for mailman id 1290771;
 Wed, 22 Apr 2026 15:35:53 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <bernhard.kaindl@citrix.com>) id 1wFZcH-0007bJ-2E
 for xen-devel@lists.xenproject.org; Wed, 22 Apr 2026 15:35:53 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wFZcG-000yiV-Ed
 for xen-devel@lists.xenproject.org; Wed, 22 Apr 2026 17:35:52 +0200
Received: from [10.42.69.12] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <bernhard.kaindl@citrix.com>)
 id 69e8ead4-5cb7-0a2a0a5109dd-0a2a450ccc52-2
 for <xen-devel@lists.xenproject.org>; Wed, 22 Apr 2026 17:35:52 +0200
Received: from [160.101.131.8] (helo=na1pdmzitismtp01.tibco.com)
 by tlsNG-d25034.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.1)
 (envelope-from <bernhard.kaindl@citrix.com>)
 id 69e8ead7-62f1-0a2a450c0019-a0658308dfdc-3
 for <xen-devel@lists.xenproject.org>; Wed, 22 Apr 2026 17:35:52 +0200
Received: from debian.eng.citrite.net (unknown [10.113.40.46])
 by na1pdmzitismtp01.tibco.com (Postfix) with ESMTP id 84C56429A6B6;
 Wed, 22 Apr 2026 11:35:04 -0400 (EDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-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: Bernhard Kaindl <bernhard.kaindl@citrix.com>
To: xen-devel@lists.xenproject.org
Cc: Bernhard Kaindl <bernhard.kaindl@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.pau@citrix.com>,
	Stefano Stabellini <sstabellini@kernel.org>
Subject: [PATCH 1/1] xen/mm: normalize page count types to unsigned long
Date: Wed, 22 Apr 2026 16:33:23 +0100
Message-Id: <6fd2be46d934688b19b5c84c53c745230cd345d6.1776871968.git.bernhard.kaindl@citrix.com>
X-Mailer: git-send-email 2.39.5
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit
X-purgate-ID: tlsNG-d25034/1776872152-F48F9CF5-A9757B97/0/0
X-purgate-type: clean
X-purgate-size: 2296

The current use of long for total_avail_pages and outstanding_claims
creates an unnecessary mix of signed and unsigned types during page
allocation calculations. This necessitates awkward constructs
like '+ 0UL' to satisfy type matching in macros such as min().

Address this by normalizing `total_avail_pages` and `outstanding_claims`
from `long` to `unsigned long`.

As a direct consequence of making `total_avail_pages` unsigned, the
post-decrement assertions checking for `>= 0` are no longer logically
sound. Adjust those assertions to pre-decrement checks.

No functional change intended.

Suggested-by: Jan Beulich <jbeulich@suse.com>
Signed-off-by: Bernhard Kaindl <bernhard.kaindl@citrix.com>
---
 xen/common/page_alloc.c | 9 +++++----
 1 file changed, 5 insertions(+), 4 deletions(-)

diff --git a/xen/common/page_alloc.c b/xen/common/page_alloc.c
index b1edef87124f..541a2171c4c5 100644
--- a/xen/common/page_alloc.c
+++ b/xen/common/page_alloc.c
@@ -484,10 +484,11 @@ static heap_by_zone_and_order_t *_heap[MAX_NUMNODES];
 static unsigned long node_need_scrub[MAX_NUMNODES];
 
 static unsigned long *avail[MAX_NUMNODES];
-static long total_avail_pages;
+static unsigned long total_avail_pages;
 
 static DEFINE_SPINLOCK(heap_lock);
-static long outstanding_claims; /* total outstanding claims by all domains */
+/* total outstanding claims by all domains */
+static unsigned long outstanding_claims;
 
 static unsigned long avail_heap_pages(
     unsigned int zone_lo, unsigned int zone_hi, unsigned int node)
@@ -1047,8 +1048,8 @@ 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(total_avail_pages >= 0);
 
     if ( d && d->outstanding_pages && !(memflags & MEMF_no_refcount) )
     {
@@ -1240,8 +1241,8 @@ static int reserve_offlined_page(struct page_info *head)
             continue;
 
         avail[node][zone]--;
+        ASSERT(total_avail_pages > 0);
         total_avail_pages--;
-        ASSERT(total_avail_pages >= 0);
 
         page_list_add_tail(cur_head,
                            test_bit(_PGC_broken, &cur_head->count_info) ?
-- 
2.39.5



From xen-devel-bounces@lists.xenproject.org Wed Apr 22 15:36:18 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 22 Apr 2026 15:36:18 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1290786.1570280 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wFZcg-0007yb-N5; Wed, 22 Apr 2026 15:36:18 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1290786.1570280; Wed, 22 Apr 2026 15:36: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 1wFZcg-0007yU-Jy; Wed, 22 Apr 2026 15:36:18 +0000
Received: by outflank-mailman (input) for mailman id 1290786;
 Wed, 22 Apr 2026 15:36:17 +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.19db5d5a953000f373@swg.vates.tech>)
 id 1wFZcf-0007xw-40
 for xen-devel@lists.xenproject.org; Wed, 22 Apr 2026 15:36:17 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wFZcc-00FpQN-TO
 for xen-devel@lists.xenproject.org; Wed, 22 Apr 2026 17:36:16 +0200
Received: from [10.42.69.1] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1) (envelope-from
 <prod-mta-13.8631fc262581453bbf619ec5b2062170.19db5d5a953000f373@swg.vates.tech>)
 id 69e8eadb-2eae-0a2a0a5409dd-0a2a4501dc76-46
 for <xen-devel@lists.xenproject.org>; Wed, 22 Apr 2026 17:36:16 +0200
Received: from [185.255.28.34] (helo=prod-mta-13.swg-srv.net)
 by tlsNG-d62444.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.1)
 (envelope-from
 <prod-mta-13.8631fc262581453bbf619ec5b2062170.19db5d5a953000f373@swg.vates.tech>)
 id 69e8eaf0-c1f2-0a2a45010019-b9ff1c2283c7-3
 for <xen-devel@lists.xenproject.org>; Wed, 22 Apr 2026 17:36:16 +0200
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
 19db5d5a953000f373.005 for <xen-devel@lists.xenproject.org>
 (version=TLSv1.3 cipher=TLS_AES_256_GCM_SHA384);
 Wed, 22 Apr 2026 15:36:11 +0000
Received: from l14 (lfbn-lyo-1-414-55.w2-7.abo.wanadoo.fr [2.7.24.55])
 (Authenticated sender: anthony.perard)
 by mail2.vates.fr (Postfix) with ESMTPSA id 2831486AED;
 Wed, 22 Apr 2026 17:36:11 +0200 (CEST)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@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=RMdXDWOqjRmmYJbO94LXDJeVD1bT0MotR/jczO+vBFE=;
 h=from:subject:date:message-id:to:cc:mime-version:content-type:in-reply-to:references:feedback-id;
 b=krs/lAxNHtWD8ZJgDDGLFYOnomQICeAtF94DmZa1aPaJkEFiyVFUHhRNJVvmPTO372sG8CDqz
 HckFfaFvameSep0MqPHGmt6FZ8cIdtTlT4xWFwiliJp10jeAjVlCv7k4FUZLCrgYDj01HoZ6V3Y
 KWph8BR4sW5tV3BU7ZwfA7EP40t0euxpbvFfD9bSrv5oRVtXIdRQwSYAeiUJ1vEyHE1x3HBs5eM
 lHxpOGGXO+48kOWjKsfYAV2m5TRW+qauLVH3c9O9e6L12T8RvbSQiGkW8T5UIeu7THtGCSrASom
 COzjjAyBb8QfnWwNVFwX+0Bh8Wk0cDr/TOrPzdkcAIfw==
X-Zone-Loop: 23a0342a037226df6fbbd9eddedb8f8340e888be72aa
x-campaign-type: default
x-transaction-id: f2a89e3a-cd6c-44b1-b4f0-833cb43b91dc
x-swg-uid: 01-57b12bd8-2ebe-466c-8c31-5786b712f82e
X-Mailer: Sweego
Message-ID:
 <1776872171.8631fc262581453bbf619ec5b2062170.19db5d5a953000f373@vates.tech>
x-swg-bid: 1776872171.8631fc262581453bbf619ec5b2062170.19db5d5a953000f373
Feedback-ID: default:8631fc262581453bbf619ec5b2062170:Sweego
x-campaign-id: default
x-client-id: 8631fc262581453bbf619ec5b2062170
X-Originating-IP: [37.26.189.201]
Date: Wed, 22 Apr 2026 17:36:10 +0200
From: Anthony PERARD <anthony.perard@vates.tech>
To: Marek =?iso-8859-1?Q?Marczykowski-G=F3recki?= <marmarek@invisiblethingslab.com>
Cc: xen-devel@lists.xenproject.org,
	Andrew Cooper <andrew.cooper3@citrix.com>,
	Stefano Stabellini <sstabellini@kernel.org>,
	Roger Pau =?iso-8859-1?Q?Monn=E9?= <roger.pau@citrix.com>
Subject: Re: [PATCH test-artifacts v3 09/13] Add trigger-test job, to run
 test on a Linux built from a branch/tag
References: <cover.bd2e5bd58e4b316c9c1042b1ca8db51b81fb7ea7.1774999132.git-series.marmarek@invisiblethingslab.com>
 <9893108225500bb841a39918942bc9267e62b6af.1774999132.git-series.marmarek@invisiblethingslab.com>
 <ad-WTdnAdOzcUkze@l14>
 <ad_Ng5TryP3Nj6em@mail-itl>
MIME-Version: 1.0
Content-Disposition: inline
In-Reply-To: <ad_Ng5TryP3Nj6em@mail-itl>
X-BM-Disclaimer: Yes
Content-Type: multipart/alternative; boundary="-=Part.25e8.5edc5adbba897eb8.19db5d5a70b.50242c239d631519=-"
X-Bm-Milter-Handled: 4ffbd6c1-ee69-4e1b-aabd-f977039bd3e2
X-Bm-Transport-Timestamp: 1776872171276
X-purgate-ID: tlsNG-d62444/1776872176-BE667FF4-526ECA59/0/0
X-purgate-type: clean
X-purgate-size: 3235

---=Part.25e8.5edc5adbba897eb8.19db5d5a70b.50242c239d631519=-
Content-Type: text/plain; charset=utf-8
Content-Transfer-Encoding: quoted-printable

On Wed, Apr 15, 2026 at 07:40:19PM +0200, Marek Marczykowski-G=C3=B3recki w=
rote:
> On Wed, Apr 15, 2026 at 01:44:47PM +0000, Anthony PERARD wrote:
> > On Wed, Apr 01, 2026 at 01:21:59AM +0200, Marek Marczykowski-G=C3=B3re=
cki wrote:
> > > +trigger-test:
> > > +  stage: deploy
> > > +  trigger:
> > > +    project: $TEST_TRIGGER_REPO
> > > +    branch: $TEST_TRIGGER_BRANCH
> > > +    strategy: mirror
> > > +  variables:
> > > +    ARTIFACTS_REPO: $CI_PROJECT_PATH
> > > +    ARTIFACTS_BRANCH: $CI_COMMIT_REF_NAME
> > > +    LINUX_JOB_X86_64: linux-git-x86_64
> > > +    LINUX_JOB_ARM64: linux-git-arm64
> > > +    BUILD_FOR_TESTS_ONLY: 1
> >=20
> > Can we add this?
> >   inherit:
> >     variables: false
> >=20
> > Otherwise, as I understand, the triggered pipeline will also use the
> > global variables, like TEST_TRIGGER_REPO, LINUX_GIT_VERSION, =2E=2E=2E=
 Or I
> > could be wrong because we don't set a default value and the are only
> > manual/scheduled pipeline variable=2E
> >=20
> > https://docs=2Egitlab=2Ecom/ci/yaml/#trigger
> > > CI/CD variables defined in a top-level variables section (globally) =
or
> > > in the trigger job are forwarded to the downstream pipeline as trigg=
er
> > > variables=2E
> >=20
> > https://docs=2Egitlab=2Ecom/ci/pipelines/downstream_pipelines/#prevent=
-default-variables-from-being-passed
>=20
> Hm, yes, inherit:variables:false might be needed if we'd want to avoid
> passing those variables=2E But, TBH I'm not sure if we want to avoid tha=
t
> - it might be useful at some point to get LINUX_GIT_VERSION there, for
> example=2E=20

I've run a test and I don't see LINUX_GIT_VERSION value in the
trigger pipeline, only the default value=2E

See https://gitlab=2Ecom/xen-project/people/anthonyper/xen/-/jobs/14042314=
690/viewer

    $ echo triggered by ${LINUX_GIT_URL} and ${LINUX_GIT_VERSION};
    triggered by and
    $ env
    REGISTRY=3Dregistry=2Egitlab=2Ecom/xen-project/people/anthonyper/test-=
artifacts
    XEN_REGISTRY=3Dregistry=2Egitlab=2Ecom/xen-project/xen
    LINUX_GIT_VERSION=3D
    LINUX_GIT_URL=3D
    TEST_TRIGGER_REPO=3D
    TEST_TRIGGER_BRANCH=3D
    ARTIFACTS_REPO=3Dxen-project/people/anthonyper/test-artifacts
    LINUX_JOB_X86_64=3Dlinux-git-x86_64
    =2E=2E=2E

So, the triggered pipeline got the value of the variable as set in
`=2Egitlab-ci=2Eyml` `variables` section, and the values of the variables
set in the trigger job=2E But the value set via push-variable are missing=
=2E
So far, the triggered pipeline doesn't get the useful variable values,
beside the needed ones=2E And my main issue would be with the REGISTRY or
XEN_REGISTRY variables, if we rename one into the other, the triggered
pipeline could fail=2E

So I think we should use inherit:variables:false, and explicitly
passthrough the variables we want=2E

Cheers,


-- 
Anthony Perard | Vates XCP-ng Developer

XCP-ng & Xen Orchestra - Vate=
s solutions

web: https://vates=2Etech
---=Part.25e8.5edc5adbba897eb8.19db5d5a70b.50242c239d631519=---


From xen-devel-bounces@lists.xenproject.org Wed Apr 22 15:42:11 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 22 Apr 2026 15:42:11 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1290813.1570288 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wFZiI-0001lC-9d; Wed, 22 Apr 2026 15:42:06 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1290813.1570288; Wed, 22 Apr 2026 15:42: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 1wFZiI-0001l5-6d; Wed, 22 Apr 2026 15:42:06 +0000
Received: by outflank-mailman (input) for mailman id 1290813;
 Wed, 22 Apr 2026 15:42:05 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <Rose.Spangler@elektrobit.com>) id 1wFZiG-0001ky-VU
 for xen-devel@lists.xenproject.org; Wed, 22 Apr 2026 15:42:05 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wFZiG-00BcmE-C5
 for xen-devel@lists.xenproject.org; Wed, 22 Apr 2026 17:42:04 +0200
Received: from [10.42.69.3] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <Rose.Spangler@elektrobit.com>)
 id 69e8ec18-bab6-0a2a0a5309dd-0a2a45038c3e-38
 for <xen-devel@lists.xenproject.org>; Wed, 22 Apr 2026 17:42:04 +0200
Received: from [40.93.196.111]
 (helo=SA9PR02CU001.outbound.protection.outlook.com)
 by tlsNG-33051d.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.1)
 (envelope-from <Rose.Spangler@elektrobit.com>)
 id 69e8ec4a-672d-0a2a45030019-285dc46fd0f0-3
 for <xen-devel@lists.xenproject.org>; Wed, 22 Apr 2026 17:42:03 +0200
Received: from BN0PR04CA0004.namprd04.prod.outlook.com (2603:10b6:408:ee::9)
 by LV3PR08MB9525.namprd08.prod.outlook.com (2603:10b6:408:21b::14) with
 Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9846.20; Wed, 22 Apr
 2026 15:41:56 +0000
Received: from BL6PEPF00020E61.namprd04.prod.outlook.com
 (2603:10b6:408:ee:cafe::29) by BN0PR04CA0004.outlook.office365.com
 (2603:10b6:408:ee::9) with Microsoft SMTP Server (version=TLS1_3,
 cipher=TLS_AES_256_GCM_SHA384) id 15.20.9791.48 via Frontend Transport; Wed,
 22 Apr 2026 15:41:56 +0000
Received: from usbth1es003.ebgroup.elektrobit.com (4.79.107.243) by
 BL6PEPF00020E61.mail.protection.outlook.com (10.167.249.22) with Microsoft
 SMTP Server (version=TLS1_3, cipher=TLS_AES_256_GCM_SHA384) id 15.20.9846.18
 via Frontend Transport; Wed, 22 Apr 2026 15:41:55 +0000
Received: from usbth1es003 (localhost [127.0.0.1])
 by usbth1es003.ebgroup.elektrobit.com (Postfix) with SMTP id 4g13PG6NJ8z1wdM; 
 Wed, 22 Apr 2026 08:41:54 -0700 (PDT)
Received: from BYAPR08CU003.outbound.protection.outlook.com
 (mail-byapr08cu00300.outbound.protection.outlook.com [40.93.1.104])
 (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)
 key-exchange secp384r1 server-signature RSA-PSS (2048 bits) server-digest
 SHA256) (No client certificate requested)
 by usbth1es003.ebgroup.elektrobit.com (Postfix) with ESMTPS;
 Wed, 22 Apr 2026 08:41:54 -0700 (PDT)
Received: from CH3PR08MB8735.namprd08.prod.outlook.com (2603:10b6:610:160::11)
 by LV2PR08MB972923.namprd08.prod.outlook.com (2603:10b6:408:3a0::8)
 with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9846.16; Wed, 22 Apr
 2026 15:41:47 +0000
Received: from CH3PR08MB8735.namprd08.prod.outlook.com
 ([fe80::f5d2:ef47:3ccd:92fb]) by CH3PR08MB8735.namprd08.prod.outlook.com
 ([fe80::f5d2:ef47:3ccd:92fb%7]) with mapi id 15.20.9846.016; Wed, 22 Apr 2026
 15:41: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=elektrobit.com header.i="@elektrobit.com" header.h="From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck"; dkim=pass header.s=selector1 header.d=elektrobit.com header.i="@elektrobit.com" header.h="From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck"
ARC-Seal: i=2; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=pass;
 b=aV1ScJ4TaHUmbv2yu7yNOfMUehSH6nKNvWg8d8FzHQGW5YOI8cjEZN4V5uKeley7H5w67Or023iat4RbkJLwtrwwPkUDFUvHoX2rsfpV4C0yslxUfFFUVsOw9sMYXZ0zMElBYtIIg6o5e/ncOSPDOuiP7U1+96yCwr862hXedvf1XoCJsgd2zSwWP3syQOIf0IH/MlH5I4UeGQ6IVJsKn70Eb29qPBUh+kQiC2C23ZhcSk5ggzCMi0DdnoUxWujX+eRz1vC/rDpCu1w0xOonAzkz1mjGG1yKZ4SDLW9M1CWL2Fc3FTl5NkUE6ANB1Gts7bRYkqVyT1MNI1zJ1I9kug==
ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com;
 s=arcselector10001;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1;
 bh=Dewy3yij8UHd+pINT8TLmCIKDxm3p6wVWaUkqQr6+Go=;
 b=njf9QGuqLCs/XpR+eyvJOmykx7Z/z7fIvGGWqgdwcJWwI4ys1J/7t9yDWvGYSnkCtpWK1MIBg8u/E/GYZeUAjcsMQg9D8dAvUVYEUyej3TwtwPm+vFdHHXkJtEAeYL4E02hnQVHdZIt0iV5UHdrz/Xuf1h6piZ05Bj8heQ7qjkFTs8OEOygPtxZOZmskYuN3unxkIODEyv6ZlMnpKv4JM4+UU5zNq8U5zw+/4j7EJ1SmnoaMvzB1rOQLFoqrnOZ0kfJqzn8JujXIojY+hMwN6bU3OBQ812TQPphLe9feU49YvOTWP/ZyN8z6WKLtam3emi8jtVS79V/2cjXa44hZhA==
ARC-Authentication-Results: i=2; mx.microsoft.com 1; spf=pass (sender ip is
 40.93.1.104) smtp.rcpttodomain=amd.com smtp.mailfrom=elektrobit.com;
 dmarc=pass (p=quarantine sp=none pct=100) action=none
 header.from=elektrobit.com; dkim=pass (signature was verified)
 header.d=elektrobit.com; arc=pass (0 oda=1 ltdi=1
 spf=[1,1,smtp.mailfrom=elektrobit.com] dkim=[1,1,header.d=elektrobit.com]
 dmarc=[1,1,header.from=elektrobit.com])
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=elektrobit.com;
 s=selector1;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck;
 bh=Dewy3yij8UHd+pINT8TLmCIKDxm3p6wVWaUkqQr6+Go=;
 b=R2N4le5Z1CXQRWuluy1f5bERN192zLfcWod94odGYzy3lughEvv5EJ6qjjRZEEcGoD+3LeYGnS9Ln0kH7iP+OfmYqF2GWH8NWyxVE1i4zysWpbecUAlsSGloumGzkbpQuK5b6AQyRkrUOod592X7ui9SSGK+gyJFHencimFIvqQ=
X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 40.93.1.104)
 smtp.mailfrom=elektrobit.com; dkim=pass (signature was verified)
 header.d=elektrobit.com;dmarc=pass action=none header.from=elektrobit.com;
Received-SPF: Pass (protection.outlook.com: domain of elektrobit.com
 designates 40.93.1.104 as permitted sender) receiver=protection.outlook.com;
 client-ip=40.93.1.104; helo=BYAPR08CU003.outbound.protection.outlook.com;
 pr=C
ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none;
 b=KYovBVMFo4CkwTrGP+XvohJpeBd6VuN++WLLZ6BevMUFgXgy/Tp+GXWpvSrGPgrFi4XOexGwkOpWmzimuQ+MWVYkTzgyi8BQM+VDjxFelf2chQN8T0wxTPEvUQUVtEmducVRidlOYCIEtWK3SmbeQHGmVrcB/NKCaWxBUbbF8IeRcD4NbURaLJ9d1SlVl3UiMf6n7tkmx+2YVcZ2sK49HcueoLA1lqpiSi6V5A/PJa/Z6qSluhr0dYLpy/lWI7ANwrUOPoHAx6CgjA3Q5gkYkeRx5aK3c5OXMw7wTPWzZIacP50BLi5WDUcbNHQvQLOo1gtsPuHQo74vPKZSzcKIdg==
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com;
 s=arcselector10001;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1;
 bh=Dewy3yij8UHd+pINT8TLmCIKDxm3p6wVWaUkqQr6+Go=;
 b=Pk90LLx8Sn79PBp7abq6B/bgiwK3HxWqBshXzC/sEg17ob4Yw8+pkO0eY24aeGQHp5F6cuxMK8k7CHPtINEbJp8767gEqNdBYfrhSVfVUYL18eXavWv9TSF4vIPtI8Wwh3tA7YSRh6Qjl8xkgPVotTPnmVVdP6LWce5lVJ+gWZR0Z5jwX8guRCnFwN9/NUDmcAXx77+Z1sGpeaiBqZIF2FWpi3E82mui70pturU92n608pMfSzpjgjtFJP8Sbyj0UxkeaZqc0+MBCQuIROkUR0Q6+P4bV+kJcxlVCNzhr7CaEz/5irCsB2bYm7ztB2fWBIz4VQsHe4gjlg3CNm5YYg==
ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass
 smtp.mailfrom=elektrobit.com; dmarc=pass action=none
 header.from=elektrobit.com; dkim=pass header.d=elektrobit.com; arc=none
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=elektrobit.com;
 s=selector1;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck;
 bh=Dewy3yij8UHd+pINT8TLmCIKDxm3p6wVWaUkqQr6+Go=;
 b=R2N4le5Z1CXQRWuluy1f5bERN192zLfcWod94odGYzy3lughEvv5EJ6qjjRZEEcGoD+3LeYGnS9Ln0kH7iP+OfmYqF2GWH8NWyxVE1i4zysWpbecUAlsSGloumGzkbpQuK5b6AQyRkrUOod592X7ui9SSGK+gyJFHencimFIvqQ=
From: "Spangler, Rose" <Rose.Spangler@elektrobit.com>
To: Tamas K Lengyel <tamas@tklengyel.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>,
	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.pau@citrix.com>, Teddy Astie <teddy.astie@vates.tech>
Subject: Re: [RFC PATCH v6 08/43] altp2m: Rename p2m_*_altp2m functions and
 move declarations out of p2m.h
Thread-Topic: [RFC PATCH v6 08/43] altp2m: Rename p2m_*_altp2m functions and
 move declarations out of p2m.h
Thread-Index: AQHc0Q08g9UjbgeVPU23tPISZnL/sLXpdhuAgAAVnXKAAKi9gIABBgbq
Date: Wed, 22 Apr 2026 15:41:47 +0000
Message-ID:
 <CH3PR08MB8735B986731BB631A25DA70B912D2@CH3PR08MB8735.namprd08.prod.outlook.com>
References: <20260420213206.208750-1-Rose.Spangler@elektrobit.com>
 <20260420213206.208750-9-Rose.Spangler@elektrobit.com>
 <CABfawh=trqX6Gx3udVpaYDiLRcG+99SHNmK4s9f5pjmNbCMM1A@mail.gmail.com>
 <CH3PR08MB8735846D3C525C40DE983AAC912C2@CH3PR08MB8735.namprd08.prod.outlook.com>
 <CABfawhkeMkzaJSPXxGqQ+m-7J1gozrKJaiR-99AWTQ6ZmsdaqA@mail.gmail.com>
In-Reply-To:
 <CABfawhkeMkzaJSPXxGqQ+m-7J1gozrKJaiR-99AWTQ6ZmsdaqA@mail.gmail.com>
Accept-Language: en-US
Content-Language: en-US
X-MS-Has-Attach:
X-MS-TNEF-Correlator:
msip_labels:
Authentication-Results-Original: dkim=none (message not signed)
 header.d=none;dmarc=none action=none header.from=elektrobit.com;
x-ms-traffictypediagnostic:
	CH3PR08MB8735:EE_|LV2PR08MB972923:EE_|BL6PEPF00020E61:EE_|LV3PR08MB9525:EE_
X-MS-Office365-Filtering-Correlation-Id: 63b4cb2b-5c16-447c-29dc-08dea085af14
X-SM-outgoing: yes
X-MS-Exchange-SenderADCheck: 1
X-MS-Exchange-AntiSpam-Relay: 0
X-Microsoft-Antispam-Untrusted:
 BCL:0;ARA:13230040|1800799024|366016|376014|7416014|38070700021|18002099003|22082099003|56012099003;
X-Microsoft-Antispam-Message-Info-Original:
 DZfQ0isilGCVyh3QD/d/sGixjjHPXeMPanvheWEPihrUXiXFKpVR8eK5LapY17AKpFNlhc30T7WFtK+wl91asuuG8EEcRB8TtAeS/gHOtbeVQ+EmJsVAI3LGrfIIGWvZzdsXpTdYFuCzd7o1Y/7lmmSgCEC90upkgvY8x+rrcYTmQSrXLbho1h8FNzchR0qGKs7ZPFJslrLnKAD6D1fJsPW35fiUfWzvp9SgAyuvpz7Lq4dw+afnnKhjgEc3EXzfClxF+8h8YhTf0eLLFEa2WtkezwzQJP06/IOVUp2Nqu+isQmbqj4SlLHIA6Oy0gRpjQYOJn49v3YzX5VbBGmzF1v9TdIrOZ3S0I3NclTG0Ml+tRpNKsgGYGcRdrY6LGJoAfG0o23FVncDAK3xW9THN4+zbWt7JkYq8Vm+b2OQHGIjMb3nsbmzS9IyIE/Lm9BtGHbs8qMU8LK+UExMYbA3SijcZlDWHeMb3+QZRHogyPyFrafRMxBvabZ10gWT5DynZ64pDm7Bymy+X7ZEBwCH/hcLkW+ephm7Uf96ZKEvBxhS0obGVkcsTK3oUc+Tdvf87f2Dm+US7DjZaCCZQ154GyKyjvXt8cSVuVr0XwvqfTJJ0+iS3Ekdi90U/uai+qY+IkcF2I+KWAUM0iM5R7na5p0ByjJRMdQ1bA8wA99Go2x6DdCQGDtc/zk66rwFe+JmbuYTpHsyf/mD0bAaJKmM0yKsW65aria8mAGC0xSp9JiK1l/B64kGJKXk8kqnf0ktlVp3HMNzUfXYLWbdqszllPVx5j2Wqwi7yHPY2qDmgWo=
X-Forefront-Antispam-Report-Untrusted:
 CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:CH3PR08MB8735.namprd08.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(1800799024)(366016)(376014)(7416014)(38070700021)(18002099003)(22082099003)(56012099003);DIR:OUT;SFP:1102;
Content-Type: text/plain; charset="iso-8859-1"
Content-Transfer-Encoding: quoted-printable
MIME-Version: 1.0
X-Exchange-RoutingPolicyChecked:
 dSDk1B7NKLxU92eypHvnSP1g5pmOWGeJ79Y7nOAGdXsSBPsKFjOesetU8lNom06ZYFKJUIW49LUT2GaNcbkyD+sgtmwhX6b3YL5Cu6lPVFQF4A/dXdHule3fqnVS3Z6pZtM7aZStT/DmbSsWtJ0V2dyi9lf78KkD6L0H6yTffIeu+5uS27eKL8wf1ABSVT0MVvVCllT/JQi/mvyGDWYV51hAH4WCpO7Q9NVv406OxzVuodmtSF4S0q6EqNfM8WJzmdE7EtJR0djM2TUOkTxV2kApM+uxCdrUBKAr0XPMj+tdQoHm9n/MLMC18LI+2ZRMg3bga1hCGgPf1MrTPcQ0Lw==
X-MS-Exchange-Transport-CrossTenantHeadersStamped: LV2PR08MB972923
X-EOPAttributedMessage: 0
X-MS-Exchange-SkipListedInternetSender:
 ip=[40.93.1.104];domain=BYAPR08CU003.outbound.protection.outlook.com
X-MS-Exchange-ExternalOriginalInternetSender:
 ip=[40.93.1.104];domain=BYAPR08CU003.outbound.protection.outlook.com
X-MS-Exchange-Transport-CrossTenantHeadersStripped:
 BL6PEPF00020E61.namprd04.prod.outlook.com
X-MS-PublicTrafficType: Email
X-MS-Office365-Filtering-Correlation-Id-Prvs:
	8f17159a-12b4-47e5-309e-08dea085a9dc
X-Microsoft-Antispam:
	BCL:0;ARA:13230040|36860700016|1800799024|14060799003|376014|7416014|156008|82310400026|35042699022|18002099003|56012099003|22082099003;
X-Microsoft-Antispam-Message-Info:
	=?iso-8859-1?Q?wm4SR1ixKrp8sCQUzp0SyCiI9UAw5eYlCvHc9z1yX1mDyAgzbriN1JHO8y?=
 =?iso-8859-1?Q?cWEDEMIsz8gRJnrhPXuokdIuchoNtV32Sh/F+m7cYwNoVpWOlN+NQjbI2R?=
 =?iso-8859-1?Q?ECXRRia2eoalHLE0RFi8IcVOZxbMIP0n1VeSyEt+G/rLYidLAfysJ1DsaK?=
 =?iso-8859-1?Q?4ugua/mmrqrZI5drcVjJkoxtg+gf0i70WIYcFIpycIc+iNxX8fe/j3jEtp?=
 =?iso-8859-1?Q?wojmpQrc4QU8Ok8qUD8vTZQW+Rx2423BTQNmFPznFPqN+mPK0OEaXmOTp8?=
 =?iso-8859-1?Q?bcQp/nZJqLzcC3Tsz1zjIHshKyfsB7maOYKdSs+8mBeTUSNcTfybhnAcg/?=
 =?iso-8859-1?Q?xIZv64uTPACtCJR4dArDIbDU8IicrJUDANvon8lVrGOQSBz0hOIbvB57bi?=
 =?iso-8859-1?Q?z6DLW70zXNuRM/PTPEttRbe46o3jdOnQsAnarAGnbC3fLbY59Hx4ZU7EGP?=
 =?iso-8859-1?Q?Yd00JDPdGv2uPpWBKVBes597ZZ6j+TZ8Vy4MeCviFNAoUKYM1WBbHrMKLX?=
 =?iso-8859-1?Q?HjM5/+Tv9P53l6QgS7/q/SqJYGSCedvFQm0c4UAnijl8W9NxWmhauKsLmL?=
 =?iso-8859-1?Q?CPtiJhkTLFguwu2TSkiZqaOwchVuAHcMl9yDkXAu0aaaHDZGCU29zebfeS?=
 =?iso-8859-1?Q?s/nqJYY9nuXJGA9F31vUK+qBH42vwd5ZwHcx5DDXr/sVauPl7mm8RSxyLK?=
 =?iso-8859-1?Q?+b3KjrkwnZ6fbLurVBmhI86r2W3TNM+10QW95+Hddle0GoCnHSPE9udSwg?=
 =?iso-8859-1?Q?RSsmyuYW2LJaGVdppn2t+M/Yo2cs1kY7cTdT6Hp50kIHz494tHO9fHZX5m?=
 =?iso-8859-1?Q?lBx6FLrfpFHCABGNXqObvYS73gC7QZLEcDg5NRjiYCBRBm9uhrAiI4g0ka?=
 =?iso-8859-1?Q?cRfAz2kh8Yb0FFBycDKqXEeHzZdF7vzqh3bSTu6DiajuhWVkjF+IFD47xg?=
 =?iso-8859-1?Q?9rX/2FRsNHyirMNG6wVwijFE7x0uErjmCaNp8DsdMrGoMA9cXYwyxJseWI?=
 =?iso-8859-1?Q?Ag9cqvy75sVeGf35TSKkifjG2Nyc9rJrKmaCXnyqFu5VIjxNvRRyM0IyJp?=
 =?iso-8859-1?Q?c3EaEIvDK9tkba40m9/FbubWJuAUrLxqqrveRPHJOcpI+FauVD90wf3/4p?=
 =?iso-8859-1?Q?NOMVt+cNV2KjE6F8SU4cMIe8rJQ+g2G+osYHdoGRnmWqJOG+gLvUSvL6jo?=
 =?iso-8859-1?Q?RG/alD7w7dYHnGQWx7BFtEPtevB3d6AdBUYw6Z+8koAFBAVL7Z3VSjX9OD?=
 =?iso-8859-1?Q?P+qf3fsk07uAMZm4iFf1nBBduK+Ie5kdD8bdQhG+8GcvSFEcmYdCq5T7Lj?=
 =?iso-8859-1?Q?eFxg?=
X-Forefront-Antispam-Report:
	CIP:4.79.107.243;CTRY:US;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:BYAPR08CU003.outbound.protection.outlook.com;PTR:mail-byapr08cu00300.outbound.protection.outlook.com;CAT:NONE;SFS:(13230040)(36860700016)(1800799024)(14060799003)(376014)(7416014)(156008)(82310400026)(35042699022)(18002099003)(56012099003)(22082099003);DIR:OUT;SFP:1102;
X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1
X-MS-Exchange-AntiSpam-MessageData-0:
	Oc1uVOBCzJ63As0KrTlvKToA+U2miAplnBg2moy27bBIcEh/AD0RIx9k6bT6PrIydGqAujFD5Kg3wMGx043QiZrWTNeU9HRUwZo6aYzyzSem75eWQ2/BSrbtKfvCJOi/NZ1bvarCGtqiOad7GsnP6EsXamrBvaQksOz2/7YoJz05R+gQXNxMWlAgLEcdlswMNuXU8vm/i4BRIr1V6wwJT7xStoReaMuvjhxkb446Gl/EyAbSXHGeEoboozb4OKx0GUZA5XQXlA2B3lBaMh9S72YihpWfL8VOX02jiLg6SPEfGM9zRIEcfKycVlfAYAdJ9kAhDnniSOXS0eDHc3nPSErM2sT6Aae33DHRudveI5j8lH/kSNzzjdllvGVFXwze8vyZh13dSgsjpVqR9klPa7p0aulIWLRVSFvmxERdeuC5IuoZHziqptw8/ljF+9S4
X-OriginatorOrg: elektrobit.com
X-MS-Exchange-CrossTenant-OriginalArrivalTime: 22 Apr 2026 15:41:55.7375
 (UTC)
X-MS-Exchange-CrossTenant-Network-Message-Id: 63b4cb2b-5c16-447c-29dc-08dea085af14
X-MS-Exchange-CrossTenant-Id: e764c36b-012e-4216-910d-8fd16283182d
X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=e764c36b-012e-4216-910d-8fd16283182d;Ip=[4.79.107.243];Helo=[usbth1es003.ebgroup.elektrobit.com]
X-MS-Exchange-CrossTenant-AuthAs: Internal
X-MS-Exchange-CrossTenant-AuthSource: TreatMessagesAsInternal-BL6PEPF00020E61.namprd04.prod.outlook.com
X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem
X-MS-Exchange-Transport-CrossTenantHeadersStamped: LV3PR08MB9525
X-purgate-ID: tlsNG-33051d/1776872524-2957F938-7C658F50/0/0
X-purgate-type: clean
X-purgate-size: 243

> How about you add the _view suffix for these? I think it would help=0A=
> disambiguate them and also read better than the current _altp2m suffix on=
es.=0A=
=0A=
I think that makes sense, I'll make that change. Thanks!=0A=
=0A=
Rose=


From xen-devel-bounces@lists.xenproject.org Wed Apr 22 15:57:12 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 22 Apr 2026 15:57:12 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1290836.1570299 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wFZwg-0003yt-LW; Wed, 22 Apr 2026 15:56:58 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1290836.1570299; Wed, 22 Apr 2026 15:56: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 1wFZwg-0003ym-HS; Wed, 22 Apr 2026 15:56:58 +0000
Received: by outflank-mailman (input) for mailman id 1290836;
 Wed, 22 Apr 2026 15:56:57 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <Luca.Fancellu@arm.com>) id 1wFZwe-0003yg-L2
 for xen-devel@lists.xenproject.org; Wed, 22 Apr 2026 15:56:57 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wFZwe-00FO8L-1m
 for xen-devel@lists.xenproject.org; Wed, 22 Apr 2026 17:56:56 +0200
Received: from [10.42.69.10] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <Luca.Fancellu@arm.com>)
 id 69e8efbc-5cb7-0a2a0a5109dd-0a2a450aa65e-18
 for <xen-devel@lists.xenproject.org>; Wed, 22 Apr 2026 17:56:55 +0200
Received: from [52.101.69.26]
 (helo=AM0PR83CU005.outbound.protection.outlook.com)
 by tlsNG-4011c0.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.1)
 (envelope-from <Luca.Fancellu@arm.com>)
 id 69e8efc6-56b3-0a2a450a0019-3465451a6890-3
 for <xen-devel@lists.xenproject.org>; Wed, 22 Apr 2026 17:56:54 +0200
Received: from CWLP123CA0212.GBRP123.PROD.OUTLOOK.COM (2603:10a6:400:19d::18)
 by AS2PR08MB9341.eurprd08.prod.outlook.com (2603:10a6:20b:59a::9)
 with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9846.16; Wed, 22 Apr
 2026 15:56:50 +0000
Received: from AM3PEPF00009BA0.eurprd04.prod.outlook.com
 (2603:10a6:400:19d:cafe::5e) by CWLP123CA0212.outlook.office365.com
 (2603:10a6:400:19d::18) with Microsoft SMTP Server (version=TLS1_3,
 cipher=TLS_AES_256_GCM_SHA384) id 15.20.9791.48 via Frontend Transport; Wed,
 22 Apr 2026 15:56:50 +0000
Received: from outbound-uk1.az.dlp.m.darktrace.com (4.158.2.129) by
 AM3PEPF00009BA0.mail.protection.outlook.com (10.167.16.25) with Microsoft
 SMTP Server (version=TLS1_3, cipher=TLS_AES_256_GCM_SHA384) id 15.20.9846.18
 via Frontend Transport; Wed, 22 Apr 2026 15:56:50 +0000
Received: from DU2PR08MB7272.eurprd08.prod.outlook.com (2603:10a6:10:2d7::16)
 by DU0PR08MB9677.eurprd08.prod.outlook.com (2603:10a6:10:447::22)
 with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9846.16; Wed, 22 Apr
 2026 15:55:46 +0000
Received: from DU2PR08MB7272.eurprd08.prod.outlook.com
 ([fe80::5d34:206f:373:a323]) by DU2PR08MB7272.eurprd08.prod.outlook.com
 ([fe80::5d34:206f:373:a323%6]) with mapi id 15.20.9818.032; Wed, 22 Apr 2026
 15:55: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=arm.com header.i="@arm.com" header.h="From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck"; dkim=pass header.s=selector1 header.d=arm.com header.i="@arm.com" header.h="From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck"
ARC-Seal: i=2; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=pass;
 b=R6Is/nUdAqUevF5TEn5Ga8mLBEXHh4nA+mciOS7fh9ZpzgWw+2YMId8rXbF0f73WILmGp3IGy7sJV+/kgTfUWalnqfi90YJYA/FRXTAFSwXM1hDBsqpsZTFEoRffjqKhhfjvljWQgnVBBcEMEMhEnlfbbIMZ6fBPKN2c5BgKdYim8Ot28En60XUtyqZJgvpwsjtxJMEpSoD5Mu9HjdJBjorXK/EgKBsWiVwqzE7265YsGMw7GpK7NOH+ajXB7L1l2zuDc6FFEQhYCTBd76ZgVLJT9vG0ITLBdneD18fMiJsXxzEOfEznidpM2hXPEd584QKm+ih18DY0H7XVt1WGsg==
ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com;
 s=arcselector10001;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1;
 bh=3kl2PJjm4E4GfCJMlcRyVjQlDYOWo6koetR9ZTlZFnI=;
 b=VSwtjXLL2nlYKIAjj9FhDblVWOZGao3I8tJENBU1bHh5LeHFhiLjxqUXnqGUFvgMYA3Nf1HsQjcizPSfd168cnLP9YJwYTOYw49e0tOPEC35Yh7htPTIrgbxqEu8peMhjrFvv/GcEwuW3yN+lFCPya6kNDpQfcejOMqIHcQjdcDeCZXokPrzNkR+iZiujyxwosyUIp3PuV+la1rMtmENqpsSjQyAu5tncXZtFFE/vXYUm+61s607XWDtrp96a8ohNKYhjTagIOoT/1QjawgX+1SnIjv64IHFdIrwmjkgS3hssEJrgqdwp2r+WfEhByHvQ64jfzjNCn1rXW/Npo6/3g==
ARC-Authentication-Results: i=2; mx.microsoft.com 1; spf=pass (sender ip is
 4.158.2.129) smtp.rcpttodomain=gmail.com smtp.mailfrom=arm.com; dmarc=pass
 (p=none sp=none pct=100) action=none header.from=arm.com; dkim=pass
 (signature was verified) header.d=arm.com; arc=pass (0 oda=1 ltdi=1
 spf=[1,1,smtp.mailfrom=arm.com] dkim=[1,1,header.d=arm.com]
 dmarc=[1,1,header.from=arm.com])
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=arm.com; s=selector1;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck;
 bh=3kl2PJjm4E4GfCJMlcRyVjQlDYOWo6koetR9ZTlZFnI=;
 b=TVeuaSmhwmns3qmLOh3XwLcTK5fit5EsLew/16FHhipZfZuS0dr2Qs4UB7H5X6gyAKyYSAFdav2GBlrDvzNtbXoC1Tmp6KgCRtOI3EN7XjdOwGQTBkD6Nc9TftHzN1IZeEwxn9NUkjSYUCks7EiDqYleser6Itp31h1ZJQgVz+0=
X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 4.158.2.129)
 smtp.mailfrom=arm.com; dkim=pass (signature was verified)
 header.d=arm.com;dmarc=pass action=none header.from=arm.com;
Received-SPF: Pass (protection.outlook.com: domain of arm.com designates
 4.158.2.129 as permitted sender) receiver=protection.outlook.com;
 client-ip=4.158.2.129; helo=outbound-uk1.az.dlp.m.darktrace.com; pr=C
ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none;
 b=XK1cQ0DyGEREA2c5G6f8GkXHxZTpY9P2M/JsAgD/eGoLfpiWAZB3LzHlggpKcPEkQhtzkBVBDUTcPwQEEdqJaPPM5Z3W5lk41U1pMpEslwoU3MIJmaKf60jmf731gBBBR4r5sSlL1ELcNpEmGKmVbqmyEjbRU3yvmYCJyLrlGaK/a3tGafCbC8P+myT0tpQRFY9Yfnr7OKeXBITihSmxmJ6iAN4y1c8oSoL+4rM0MPiQV4ZwC5TzLEO6p39h8yHSW/2sERPOoi8V5Y8QRbidclpTUN6exrE3r9NnVgDu1cTNwzO+DaImRuI3pkCvdF1N0kekP2DtqUQqBuRWBAO/Yw==
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com;
 s=arcselector10001;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1;
 bh=3kl2PJjm4E4GfCJMlcRyVjQlDYOWo6koetR9ZTlZFnI=;
 b=hmnT/klqULNHQw/0vayJY6DTgou9SE+46qRfXwDLw0+OsGIFrm7vp79hJrMjGvTvoPjGQy0cl3qDvUozrcIbgmXEhqi7fNZLpifEb9vFXvTNxIZW1PZV6885l62JGYDhl6aKtPO+CvvjtnsymugtVY33FZYaLoOn0cBk+o8iW+QTNbQrZn8/DJMb6aePl3wr25E+/M8gDzt2Q4UBLOkxtQ2i/h8pSH/ZDxqqHWjsQvaTpHS86CpkR0x9CiQ+duNUOEsMd6Vg2VmQNStf0DC5EqRDtuHm1Hr4RWYI/qLXkRLccFPvVz9dnfiBD4rA4zfmK6wWQMBzKoLNtfcrVBOp1Q==
ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass
 smtp.mailfrom=arm.com; dmarc=pass action=none header.from=arm.com; dkim=pass
 header.d=arm.com; arc=none
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=arm.com; s=selector1;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck;
 bh=3kl2PJjm4E4GfCJMlcRyVjQlDYOWo6koetR9ZTlZFnI=;
 b=TVeuaSmhwmns3qmLOh3XwLcTK5fit5EsLew/16FHhipZfZuS0dr2Qs4UB7H5X6gyAKyYSAFdav2GBlrDvzNtbXoC1Tmp6KgCRtOI3EN7XjdOwGQTBkD6Nc9TftHzN1IZeEwxn9NUkjSYUCks7EiDqYleser6Itp31h1ZJQgVz+0=
From: Luca Fancellu <Luca.Fancellu@arm.com>
To: Mykola Kvach <xakep.amatop@gmail.com>
CC: "xen-devel@lists.xenproject.org" <xen-devel@lists.xenproject.org>, 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>
Subject: Re: [PATCH v8 03/13] xen/arm: gic-v3: tolerate retained redistributor
 LPI state across CPU_OFF
Thread-Topic: [PATCH v8 03/13] xen/arm: gic-v3: tolerate retained
 redistributor LPI state across CPU_OFF
Thread-Index: AQHc0nB7rI/mApm2xEOwE7P+RDE1mQ==
Date: Wed, 22 Apr 2026 15:55:46 +0000
Message-ID: <3235FD35-5EF1-4E77-B30E-AABEABCC081C@arm.com>
References: <cover.1775125380.git.mykola_kvach@epam.com>
 <df183c2bc095ec611cff03e15ac1e358f0faa982.1775125380.git.mykola_kvach@epam.com>
In-Reply-To:
 <df183c2bc095ec611cff03e15ac1e358f0faa982.1775125380.git.mykola_kvach@epam.com>
Accept-Language: en-GB, en-US
Content-Language: en-US
X-MS-Has-Attach:
X-MS-TNEF-Correlator:
x-mailer: Apple Mail (2.3826.700.81.1.6)
Authentication-Results-Original: dkim=none (message not signed)
 header.d=none;dmarc=none action=none header.from=arm.com;
x-ms-traffictypediagnostic:
	DU2PR08MB7272:EE_|DU0PR08MB9677:EE_|AM3PEPF00009BA0:EE_|AS2PR08MB9341:EE_
X-MS-Office365-Filtering-Correlation-Id: 135f2502-a38c-4ddd-4e3f-08dea087c43c
x-checkrecipientrouted: true
nodisclaimer: true
X-MS-Exchange-SenderADCheck: 1
X-MS-Exchange-AntiSpam-Relay: 0
X-Microsoft-Antispam-Untrusted:
 BCL:0;ARA:13230040|366016|376014|1800799024|22082099003|56012099003|38070700021|18002099003;
X-Microsoft-Antispam-Message-Info-Original:
 QyqpCChy+peWqDRabtkhpXt9jYdaCdlAxAV25RHuEdYFvwRXqJq7m0a/BweOQjrGljjhE6kb1BPe06+COqNDnFcua3lbXufwscVgY/mexFmpB1QoGSkVWYjHJ2p8TqjTWOC5n5u5iy9Dsn+UXx+G0NPSkNjuvol51pj0kEG+WMAI24m53VPqrRI5WSwDtP4acZM3BOFxz5mVsqckNwltvDsfecoa7keady4aATkrJrepQU6V5MELj7DJwJU46VRUZOB/mM69ZmK3K8K56mOEjABe4AIjE0mLGCH7Y+DQIZe4NbbAYLK71TrdiNrXe9QIUwChnfuJ7p18ryt+ZTgFd62aYcDDtzI2RWR+epPApvAu3HielSCKc3+UTPk8fZX6phOHXqm0VC5hfOQqmPyoOUOAhmW3TBD8SpfDQZIj8huu7s+tQg45z32YRoe/7TNsmmgedylye+6orMPW2TBjXjcm7/q21dALOjZe8mA8eoipseGG9M9RCRpnpTxHPXTiHK8GM7DOAnuKrnCkTReGjNJdzJiy4T+iUBV9mXsBBYhaxKuMwxxd/EMjOSyGXFP46ZX8lOyYXkVhGJSdq1MzJCSlkoH0bYijoOhZQmDhRhmojqruY1n6RMK4nEQwv4WZkOiDHFeWfikb/HulkSGb2nqaffK/w6PTy4hW92BR7C64BONZgP+0F2kwPxZ4Bdw86stqUJnELO97dlHNtDKVnd6qGxd1lk52RQ17xONYGTXO8kI2IPSagH/OxfVqD2Zpjmk5Qwr8Az5OKzMrasQaPCkhsB/fjOCqTxU88FGBiI8=
X-Forefront-Antispam-Report-Untrusted:
 CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:DU2PR08MB7272.eurprd08.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(366016)(376014)(1800799024)(22082099003)(56012099003)(38070700021)(18002099003);DIR:OUT;SFP:1101;
Content-Type: text/plain; charset="utf-8"
Content-ID: <23D06EC015DE68408B0FEBB9F96D92F3@eurprd08.prod.outlook.com>
Content-Transfer-Encoding: base64
MIME-Version: 1.0
X-Exchange-RoutingPolicyChecked:
 J20LnCJ5HWLWQQGEjnfwc2kcviy2C/X79KKn9hV65UJs+m2go5wafb3tvZYgDTSsnAsAAKe2jDFMCuMwINrIcVDSzVup2RDrrMZxHajEYlz7RKkCQNecA2/FgP9js8JXH1YVx3zZhXLf2dePeivoyskTZWiv/9Dgz3sB90ig+Oq3z7JbXE6+xmyssthczh2PgkKAKk5i+rrPmFo8BUz05nB38vPw9N8yy6aJO0JdAkGmoicxvM/59Y/lUIhloP5DKqLOTWqlnVAmftGM5ICrFAJUDcPT4OC3oG/iJT4DKI1vo1wMnbYJ1ypaTGbbKh1wdyVrW5wTF4GcNVzz1ol6nw==
X-MS-Exchange-Transport-CrossTenantHeadersStamped: DU0PR08MB9677
X-EOPAttributedMessage: 0
X-MS-Exchange-Transport-CrossTenantHeadersStripped:
 AM3PEPF00009BA0.eurprd04.prod.outlook.com
X-MS-PublicTrafficType: Email
X-MS-Office365-Filtering-Correlation-Id-Prvs:
	5a2db3f2-e7a3-480f-de2e-08dea0879de1
X-Microsoft-Antispam:
	BCL:0;ARA:13230040|36860700016|376014|14060799003|82310400026|35042699022|1800799024|18002099003|56012099003|22082099003;
X-Microsoft-Antispam-Message-Info:
	yXbstzGyUREnIc/0kH0t5DsTIZY7FkzUY3c+SzmYGLicpvRbXzTgHHOhpd1yWdroXmt4lb58DF5/ECvN8Fks9lWxZHTliYYqkqDXoxR1s7EPa/3uSFmAkmbpgbsda6aC5teW1jQP34po2c+eAwOMEsW2FDk3q/7TkeDziOCaAyDWoI1H08CBz8tUsgdRwyy99EzdjH/oKBu3JjiOCBkiAFs+skwLffbk7XSIBJafaHWn+YlEDhGZSoQxg2tL2nXnWhjy4h4c2uG51Uu7vTlttU6AbW3VlPWS/MihIhQQ4kHpJ9EjwM7p+jNPFWiLKjYGHzjqOXssO+6yR0Onth9hknA85q/M8ihfV9AGZkLPOV51pICmXyALO4yksPrt6n8c9I19cvoTMpPRc3VCSCzM910+tSyy7a9u57sMBx2ozd2QZIH3HRu2TZG3Mr4D/B9rnibCsa7LlDWLMzwpJVGV7pBuL2db9Pb3loYfiCZ4uB2M71yc1S6YOaNyO1wlz6Eb/h+sleVbPNPIxIJjfLAdjVS9NIWJLLM/vgm74tr+xOgOqq+aWy6lPYpE1biKbjoKnH3wY8qmHncXBCEBw9Fwox90XjtqM/wv1La23tqDXVVaTWE9n6+7ELX0Z06jR3wpWz+WwtFmcfKpmY+W+fbazvPcrwCBG1bEj7eiicIZcbVRgZ2vw9I+ABJrUer1FuqqQw9qlYxh147t/20jEvR/OForzdq2FXTU/ooJ5VjW3mAXP/py11+u4x09twDHuUn0eNGGjMmAW/uMp7vO5dgWiA==
X-Forefront-Antispam-Report:
	CIP:4.158.2.129;CTRY:GB;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:outbound-uk1.az.dlp.m.darktrace.com;PTR:InfoDomainNonexistent;CAT:NONE;SFS:(13230040)(36860700016)(376014)(14060799003)(82310400026)(35042699022)(1800799024)(18002099003)(56012099003)(22082099003);DIR:OUT;SFP:1101;
X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1
X-MS-Exchange-AntiSpam-MessageData-0:
	3BhfskbKRdhCnPASVEfnTJrpnp6UxRIlDLq+C3xbKeHoA7Bw5RBawfCs0IKnFP4Flpq6e1ITyLsus9+cxsMBRiU9nVRbpS9zBOmNbFmbaW9gOSaY1l9cq3I18l4XAdsvPCQBvmY3LBgo0f5tJ/7DdR3Pkblj6nbOiNQ4jVwuh9K62sWGuv1eYfyVRY7IoLtDqPrBqdDAJPwI6+a8b6PGD0PxiRIj+C9ITLa3saP2eg0GXW0Mu8Ka23/XR0kQ+OyRO67wb+8IxewFck545TDizf2R5DtbrE8wp/TTdUSHeAA6f8397m1wum06xOoSKGW2/gqMgZ9AK5NFvgrIyp3r9JUnUr0P77Kq2jz7iVEUF/k++oqA7qclO3QtV+wCkIUV7JYRXzX7z+XamNf1Cesn7aGTsde0pWI4IC3jFc+OX48uwtmpGqGi72w+oMMqABS+
X-OriginatorOrg: arm.com
X-MS-Exchange-CrossTenant-OriginalArrivalTime: 22 Apr 2026 15:56:50.5529
 (UTC)
X-MS-Exchange-CrossTenant-Network-Message-Id: 135f2502-a38c-4ddd-4e3f-08dea087c43c
X-MS-Exchange-CrossTenant-Id: f34e5979-57d9-4aaa-ad4d-b122a662184d
X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=f34e5979-57d9-4aaa-ad4d-b122a662184d;Ip=[4.158.2.129];Helo=[outbound-uk1.az.dlp.m.darktrace.com]
X-MS-Exchange-CrossTenant-AuthSource:
	AM3PEPF00009BA0.eurprd04.prod.outlook.com
X-MS-Exchange-CrossTenant-AuthAs: Anonymous
X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem
X-MS-Exchange-Transport-CrossTenantHeadersStamped: AS2PR08MB9341
X-purgate-ID: tlsNG-4011c0/1776873415-449668B7-60825E61/0/0
X-purgate-type: clean
X-purgate-size: 5810

SGkgTXlrb2xhLA0KDQo+ICsNCj4gK3N0YXRpYyBpbnQgZ2ljdjNfbHBpX2Rpc2FibGVfbHBpcyh2
b2lkIF9faW9tZW0gKnJkaXN0X2Jhc2UpDQo+ICt7DQo+ICsgICAgdWludDMyX3QgcmVnID0gcmVh
ZGxfcmVsYXhlZChyZGlzdF9iYXNlICsgR0lDUl9DVExSKTsNCj4gKyAgICBpbnQgcmV0Ow0KPiAr
DQo+ICsgICAgaWYgKCAhKHJlZyAmIEdJQ1JfQ1RMUl9FTkFCTEVfTFBJUykgKQ0KPiArICAgICAg
ICByZXR1cm4gMDsNCj4gKw0KPiArICAgIHdyaXRlbF9yZWxheGVkKHJlZyAmIH5HSUNSX0NUTFJf
RU5BQkxFX0xQSVMsIHJkaXN0X2Jhc2UgKyBHSUNSX0NUTFIpOw0KPiArDQo+ICsgICAgLyoNCj4g
KyAgICAgKiBUaGUgc3BlYyBvbmx5IGd1YXJhbnRlZXMgcHJvZ3JhbW1hYmlsaXR5IHdoZW4gd2Ug
aGF2ZSBvYnNlcnZlZCB0aGUgYml0DQo+ICsgICAgICogY2xlYXJlZC4gV2hlcmUgY2xlYXJpbmcg
aXMgc3VwcG9ydGVkLCBSV1AgbXVzdCByZWFjaCAwIGJlZm9yZSB0b3VjaGluZw0KPiArICAgICAq
IFBST1BCQVNFUi9QRU5EQkFTRVIgYWdhaW4uDQo+ICsgICAgICovDQo+ICsgICAgd21iKCk7DQo+
ICsNCj4gKyAgICByZXQgPSBnaWN2M19kb193YWl0X2Zvcl9yd3AocmRpc3RfYmFzZSk7DQoNCkni
gJltIGxvb2tpbmcgaW50byB0aGUgaW1wbGVtZW50YXRpb24gb2YgZ2ljdjNfZG9fd2FpdF9mb3Jf
cndwKCkgYW5kIEkgc2VlDQppdOKAmXMgcG9sbGluZyBvbiBiaXQgMzEgKFVXUCkgaW5zdGVhZCBv
ZiBiaXQgMyAoUldQKT8NCg0KTm90IHJlbGF0ZWQgdG8gdGhpcyBwYXRjaCBidXQgSSBmZWVsIHdl
IG5lZWQgdG8gcmFpc2UgdGhpcy4NCg0KPiArICAgIGlmICggcmV0ICkNCj4gKyAgICAgICAgcmV0
dXJuIHJldDsNCj4gKw0KPiArICAgIHJlZyA9IHJlYWRsX3JlbGF4ZWQocmRpc3RfYmFzZSArIEdJ
Q1JfQ1RMUik7DQo+ICsgICAgaWYgKCByZWcgJiBHSUNSX0NUTFJfRU5BQkxFX0xQSVMgKQ0KPiAr
ICAgICAgICByZXR1cm4gLUVCVVNZOw0KPiArDQo+ICsgICAgcmV0dXJuIDA7DQo+ICt9DQo+ICsN
Cj4gLyoNCj4gICogVGVsbCBhIHJlZGlzdHJpYnV0b3IgYWJvdXQgdGhlIChzaGFyZWQpIHByb3Bl
cnR5IHRhYmxlLCBhbGxvY2F0aW5nIG9uZQ0KPiAgKiBpZiBub3QgYWxyZWFkeSBkb25lLg0KPiBA
QCAtMzczLDcgKzQzNCwyMSBAQCBpbnQgZ2ljdjNfbHBpX2luaXRfcmRpc3Qodm9pZCBfX2lvbWVt
ICogcmRpc3RfYmFzZSkNCj4gICAgIC8qIE1ha2Ugc3VyZSBMUElzIGFyZSBkaXNhYmxlZCBiZWZv
cmUgc2V0dGluZyB1cCB0aGUgdGFibGVzLiAqLw0KPiAgICAgcmVnID0gcmVhZGxfcmVsYXhlZChy
ZGlzdF9iYXNlICsgR0lDUl9DVExSKTsNCj4gICAgIGlmICggcmVnICYgR0lDUl9DVExSX0VOQUJM
RV9MUElTICkNCj4gLSAgICAgICAgcmV0dXJuIC1FQlVTWTsNCj4gKyAgICB7DQo+ICsgICAgICAg
IGlmICggZ2ljdjNfbHBpX3RhYmxlc19tYXRjaChyZGlzdF9iYXNlKSApDQo+ICsgICAgICAgICAg
ICByZXR1cm4gLUVCVVNZOw0KPiArDQo+ICsgICAgICAgIHJldCA9IGdpY3YzX2xwaV9kaXNhYmxl
X2xwaXMocmRpc3RfYmFzZSk7DQo+ICsgICAgICAgIGlmICggcmV0ID09IC1FQlVTWSApDQo+ICsg
ICAgICAgIHsNCj4gKyAgICAgICAgICAgIHByaW50ayhYRU5MT0dfRVJSDQo+ICsgICAgICAgICAg
ICAgICAgICAgIkdJQ3YzOiBDUFUlZDogTFBJcyBzdGlsbCBlbmFibGVkIHdpdGggdW5leHBlY3Rl
ZCByZWRpc3RyaWJ1dG9yIHRhYmxlc1xuIiwNCj4gKyAgICAgICAgICAgICAgICAgICBzbXBfcHJv
Y2Vzc29yX2lkKCkpOw0KPiArICAgICAgICAgICAgcmV0dXJuIC1FSU5WQUw7DQo+ICsgICAgICAg
IH0NCj4gKyAgICAgICAgaWYgKCByZXQgKQ0KPiArICAgICAgICAgICAgcmV0dXJuIHJldDsNCj4g
KyAgICB9DQo+IA0KPiAgICAgcmV0ID0gZ2ljdjNfbHBpX3NldF9wZW5kdGFibGUocmRpc3RfYmFz
ZSk7DQo+ICAgICBpZiAoIHJldCApDQo+IGRpZmYgLS1naXQgYS94ZW4vYXJjaC9hcm0vZ2ljLXYz
LmMgYi94ZW4vYXJjaC9hcm0vZ2ljLXYzLmMNCj4gaW5kZXggYmMwN2Y5N2MxNi4uMzRmYjA2NWFm
YyAxMDA2NDQNCj4gLS0tIGEveGVuL2FyY2gvYXJtL2dpYy12My5jDQo+ICsrKyBiL3hlbi9hcmNo
L2FybS9naWMtdjMuYw0KPiBAQCAtMjc0LDggKzI3NCw4IEBAIHN0YXRpYyB2b2lkIGdpY3YzX2Vu
YWJsZV9zcmUodm9pZCkNCj4gICAgIGlzYigpOw0KPiB9DQo+IA0KPiAtLyogV2FpdCBmb3IgY29t
cGxldGlvbiBvZiBhIGRpc3RyaWJ1dG9yIGNoYW5nZSAqLw0KPiAtc3RhdGljIHZvaWQgZ2ljdjNf
ZG9fd2FpdF9mb3JfcndwKHZvaWQgX19pb21lbSAqYmFzZSkNCj4gKy8qIFdhaXQgZm9yIGNvbXBs
ZXRpb24gb2YgYSBkaXN0cmlidXRvci9yZWRpc3RyaWJ1dG9yIHdyaXRlLXBlbmRpbmcgY2hhbmdl
LiAqLw0KPiAraW50IGdpY3YzX2RvX3dhaXRfZm9yX3J3cCh2b2lkIF9faW9tZW0gKmJhc2UpDQo+
IHsNCj4gICAgIHVpbnQzMl90IHZhbDsNCj4gICAgIGJvb2wgdGltZW91dCA9IGZhbHNlOw0KPiBA
QCAtMjk1LDE3ICsyOTUsMjIgQEAgc3RhdGljIHZvaWQgZ2ljdjNfZG9fd2FpdF9mb3JfcndwKHZv
aWQgX19pb21lbSAqYmFzZSkNCj4gICAgIH0gd2hpbGUgKCAxICk7DQo+IA0KPiAgICAgaWYgKCB0
aW1lb3V0ICkNCj4gKyAgICB7DQo+ICAgICAgICAgZHByaW50ayhYRU5MT0dfRVJSLCAiUldQIHRp
bWVvdXRcbiIpOw0KPiArICAgICAgICByZXR1cm4gLUVUSU1FRE9VVDsNCj4gKyAgICB9DQo+ICsN
Cj4gKyAgICByZXR1cm4gMDsNCj4gfQ0KPiANCj4gc3RhdGljIHZvaWQgZ2ljdjNfZGlzdF93YWl0
X2Zvcl9yd3Aodm9pZCkNCj4gew0KPiAtICAgIGdpY3YzX2RvX3dhaXRfZm9yX3J3cChHSUNEKTsN
Cj4gKyAgICAodm9pZClnaWN2M19kb193YWl0X2Zvcl9yd3AoR0lDRCk7DQo+IH0NCj4gDQo+IHN0
YXRpYyB2b2lkIGdpY3YzX3JlZGlzdF93YWl0X2Zvcl9yd3Aodm9pZCkNCj4gew0KPiAtICAgIGdp
Y3YzX2RvX3dhaXRfZm9yX3J3cChHSUNEX1JESVNUX0JBU0UpOw0KPiArICAgICh2b2lkKWdpY3Yz
X2RvX3dhaXRfZm9yX3J3cChHSUNEX1JESVNUX0JBU0UpOw0KPiB9DQo+IA0KPiBzdGF0aWMgdm9p
ZCBnaWN2M193YWl0X2Zvcl9yd3AoaW50IGlycSkNCj4gQEAgLTkyNSw3ICs5MzAsNyBAQCBzdGF0
aWMgaW50IF9faW5pdCBnaWN2M19wb3B1bGF0ZV9yZGlzdCh2b2lkKQ0KPiAgICAgICAgICAgICAg
ICAgICAgIGdpY3YzX3NldF9yZWRpc3RfYWRkcmVzcyhyZGlzdF9hZGRyLCBwcm9jbnVtKTsNCj4g
DQo+ICAgICAgICAgICAgICAgICAgICAgcmV0ID0gZ2ljdjNfbHBpX2luaXRfcmRpc3QocHRyKTsN
Cj4gLSAgICAgICAgICAgICAgICAgICAgaWYgKCByZXQgJiYgcmV0ICE9IC1FTk9ERVYgKQ0KPiAr
ICAgICAgICAgICAgICAgICAgICBpZiAoIHJldCAmJiByZXQgIT0gLUVOT0RFViAmJiByZXQgIT0g
LUVCVVNZICkNCj4gICAgICAgICAgICAgICAgICAgICB7DQo+ICAgICAgICAgICAgICAgICAgICAg
ICAgIHByaW50aygiR0lDdjM6IENQVSVkOiBDYW5ub3QgaW5pdGlhbGl6ZSBMUElzOiAldVxu4oCd
LA0KIA0KVGhpcyBzaG91bGQgYmUgdGhlIG90aGVyIHdheSBhcm91bmQ/ICV1IGZvciBzbXBfcHJv
Y2Vzc29yX2lkKCkgYW5kICVkIGZvciByZXQ/DQoNCj4gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHNtcF9wcm9jZXNzb3JfaWQoKSwgcmV0KTsNCj4gZGlmZiAtLWdpdCBhL3hlbi9hcmNo
L2FybS9pbmNsdWRlL2FzbS9naWNfdjNfaXRzLmggYi94ZW4vYXJjaC9hcm0vaW5jbHVkZS9hc20v
Z2ljX3YzX2l0cy5oDQo+IGluZGV4IGZjNWE4NDg5MmMuLjA4MWJkMTkxODAgMTAwNjQ0DQo+IC0t
LSBhL3hlbi9hcmNoL2FybS9pbmNsdWRlL2FzbS9naWNfdjNfaXRzLmgNCj4gKysrIGIveGVuL2Fy
Y2gvYXJtL2luY2x1ZGUvYXNtL2dpY192M19pdHMuaA0KDQpXaHkgdGhpcyBoZWFkZXIgYW5kIG5v
dCBnaWMuaD8NCg0KPiBAQCAtMTMzLDYgKzEzMyw3IEBAIHN0cnVjdCBob3N0X2l0cyB7DQo+IA0K
PiAvKiBNYXAgYSBjb2xsZWN0aW9uIGZvciB0aGlzIGhvc3QgQ1BVIHRvIGVhY2ggaG9zdCBJVFMu
ICovDQo+IGludCBnaWN2M19pdHNfc2V0dXBfY29sbGVjdGlvbih1bnNpZ25lZCBpbnQgY3B1KTsN
Cj4gK2ludCBnaWN2M19kb193YWl0X2Zvcl9yd3Aodm9pZCBfX2lvbWVtICpiYXNlKTsNCj4gDQo+
ICNpZmRlZiBDT05GSUdfSEFTX0lUUw0KPiANCj4gDQoNClRoZSByZXN0IGxvb2tzIG9rIHRvIG1l
IQ0KDQpDaGVlcnMsDQpMdWNhDQoNCg0KDQo=


From xen-devel-bounces@lists.xenproject.org Wed Apr 22 15:58:59 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 22 Apr 2026 15:58:59 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1290844.1570306 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wFZyc-00050v-Uk; Wed, 22 Apr 2026 15:58:58 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1290844.1570306; Wed, 22 Apr 2026 15:58: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 1wFZyc-00050o-S1; Wed, 22 Apr 2026 15:58:58 +0000
Received: by outflank-mailman (input) for mailman id 1290844;
 Wed, 22 Apr 2026 15:58: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.19db5ea67ab000f373@swg.vates.tech>)
 id 1wFZyb-00050i-HX
 for xen-devel@lists.xenproject.org; Wed, 22 Apr 2026 15:58:57 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wFZya-003sCe-Tw
 for xen-devel@lists.xenproject.org; Wed, 22 Apr 2026 17:58:56 +0200
Received: from [10.42.69.11] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1) (envelope-from
 <prod-mta-13.8631fc262581453bbf619ec5b2062170.19db5ea67ab000f373@swg.vates.tech>)
 id 69e8f032-e002-0a2a0a5209dd-0a2a450ba842-32
 for <xen-devel@lists.xenproject.org>; Wed, 22 Apr 2026 17:58:56 +0200
Received: from [185.255.28.34] (helo=prod-mta-13.swg-srv.net)
 by tlsNG-42698a.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.1)
 (envelope-from
 <prod-mta-13.8631fc262581453bbf619ec5b2062170.19db5ea67ab000f373@swg.vates.tech>)
 id 69e8f040-212f-0a2a450b0019-b9ff1c228f2b-3
 for <xen-devel@lists.xenproject.org>; Wed, 22 Apr 2026 17:58:56 +0200
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
 19db5ea67ab000f373.002 for <xen-devel@lists.xenproject.org>
 (version=TLSv1.3 cipher=TLS_AES_256_GCM_SHA384);
 Wed, 22 Apr 2026 15:58:51 +0000
Received: from [192.168.1.18] (88-175-170-134.subs.proxad.net [88.175.170.134])
 (Authenticated sender: teddy.astie)
 by mail2.vates.fr (Postfix) with ESMTPSA id 934948748B;
 Wed, 22 Apr 2026 17:58:50 +0200 (CEST)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@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=gyZFUs5aFRRUxyucIstVItWo3Q2H3S9RHfFu8k4dP2g=;
 h=from:subject:date:message-id:to:cc:mime-version:content-type:feedback-id;
 b=ojLOiJARh00Z+JmQSKC4OHB45z0LDa03MGx/Qzet8fFqbv086FAtWlN4Hve8YmIeNMi0ae6Gf
 x9Mo0v5wLHyuZBDj/GaPrMUMiQUjH5W1r3fN/Zgwr1cS/vMGSgF9EwUrdfW7U8bkXROBLj2ixiz
 /Y+j82AbNVRXXR9AX+2uxQtnlQ4k0UtOz5/bllvmKG2oczjgoLXsyWVh2bkdjW+xbvUrcpS4VcM
 RxlO5hC4nqmRKCinFm4QYurvRaMmdLPqqHAZ75x3pO+yIKPcG0eLCw7lyAtzQaxemAb4lvUMA+k
 j2dsUwA5/pim8ErzrP6tjf9WMPuqAS0Z/cr9IW7/Holw==
X-Zone-Loop: b559f5993fc66329da02f088278f6a4db2b9978dc6ca
x-campaign-type: default
x-transaction-id: 91154bd0-e709-4e30-a690-1f1a071be8f3
x-swg-uid: 01-7b9ca31e-60c7-4000-9de9-77f816e05395
X-Mailer: Sweego
Message-ID:
 <1776873531.8631fc262581453bbf619ec5b2062170.19db5ea67ab000f373@vates.tech>
x-swg-bid: 1776873531.8631fc262581453bbf619ec5b2062170.19db5ea67ab000f373
Feedback-ID: default:8631fc262581453bbf619ec5b2062170:Sweego
x-campaign-id: default
x-client-id: 8631fc262581453bbf619ec5b2062170
X-Originating-IP: [37.26.189.201]
Date: Wed, 22 Apr 2026 17:58:50 +0200
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Content-Language: en-US
To: iommu@lists.linux.dev,
 "linux-kernel@vger.kernel.org" <linux-kernel@vger.kernel.org>
Cc: Xen-devel <xen-devel@lists.xenproject.org>
From: Teddy Astie <teddy.astie@vates.tech>
Subject: How to express "externally managed" IOMMU domains for VFIO/IOMMUFD ?
X-BM-Disclaimer: Yes
Content-Type: multipart/alternative; boundary="-=Part.25ec.d120997fac5ce7ce.19db5ea652d.e879bb6dc3eb451b=-"
X-Bm-Milter-Handled: 4ffbd6c1-ee69-4e1b-aabd-f977039bd3e2
X-Bm-Transport-Timestamp: 1776873530670
X-purgate-ID: tlsNG-42698a/1776873536-05D6FF3B-608975BF/0/0
X-purgate-type: clean
X-purgate-size: 1364

---=Part.25ec.d120997fac5ce7ce.19db5ea652d.e879bb6dc3eb451b=-
Content-Type: text/plain; charset=utf-8
Content-Transfer-Encoding: quoted-printable

Hello,

On Xen, for PV-IOMMU [1], we have IOMMU support in Dom0, which in=20
particular allows using VFIO and IOMMUFD from Dom0=2E

However, its interactions with PCI Passthrough are unclear, and it would=
=20
be preferable to let the kernel handle some of this logic=2E That would=20
for instance avoid situations where toolstack causes Xen and Linux to go=
=20
out of sync on where devices belong=2E

On Xen, we have a dedicated hypercalls for moving a device into another=20
guest (so it no longer belongs in Dom0, at far as DMA is concerned)=2E

But it looks like there are no way to describe that idea of "attach that=
=20
device to this VM" nor "the device is in a VM"; which makes that=20
impracticable=2E

There may be things that could be done with the vIOMMU objects, but=20
there would be no "parent domain" in such case, as said earlier it=20
doesn't exist in the IOMMU subsystem=2E

What is expected to be done instead ?

Teddy

[1] https://www=2Eyoutube=2Ecom/watch?v=3DpLMGRgEJ-Eg


-- 
Teddy Astie | Vates XCP-ng Developer

XCP-ng & Xen Orchestra - Vates s=
olutions

web: https://vates=2Etech
---=Part.25ec.d120997fac5ce7ce.19db5ea652d.e879bb6dc3eb451b=---


From xen-devel-bounces@lists.xenproject.org Wed Apr 22 16:06:56 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 22 Apr 2026 16:06:56 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1290857.1570315 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wFa6D-0007AX-Kq; Wed, 22 Apr 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 1290857.1570315; Wed, 22 Apr 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 1wFa6D-0007AQ-Hm; Wed, 22 Apr 2026 16:06:49 +0000
Received: by outflank-mailman (input) for mailman id 1290857;
 Wed, 22 Apr 2026 16:06:47 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92) id 1wFa6B-0007AK-CV
 for xen-devel@lists.xenproject.org; Wed, 22 Apr 2026 16:06:47 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wFa6A-0013Mu-EE
 for xen-devel@lists.xenproject.org; Wed, 22 Apr 2026 18:06:46 +0200
Received: from [10.42.69.6] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <oleksii.kurochko@gmail.com>)
 id 69e8f206-bab6-0a2a0a5309dd-0a2a45068d9c-18
 for <xen-devel@lists.xenproject.org>; Wed, 22 Apr 2026 18:06:46 +0200
Received: from [209.85.167.42] (helo=mail-lf1-f42.google.com)
 by tlsNG-16d1c6.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.1)
 (envelope-from <oleksii.kurochko@gmail.com>)
 id 69e8f215-7371-0a2a45060019-d155a72ab80b-3
 for <xen-devel@lists.xenproject.org>; Wed, 22 Apr 2026 18:06:46 +0200
Received: by mail-lf1-f42.google.com with SMTP id
 2adb3069b0e04-59e5aa4ca41so5568350e87.2
 for <xen-devel@lists.xenproject.org>; Wed, 22 Apr 2026 09:06:46 -0700 (PDT)
Received: from [192.168.1.6] (user-109-243-69-121.play-internet.pl.
 [109.243.69.121]) by smtp.gmail.com with ESMTPSA id
 2adb3069b0e04-5a41974167fsm4503696e87.60.2026.04.22.09.06.44
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Wed, 22 Apr 2026 09:06:44 -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=20251104 header.d=gmail.com header.i="@gmail.com" header.h="Content-Transfer-Encoding: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=20251104; t=1776874005; x=1777478805; darn=lists.xenproject.org;
        h=content-transfer-encoding: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;
        bh=E2VCIFFdkqyEam0s3fRcy75nsTVdfFenk05cYG41k2o=;
        b=F5KtPh2tICVddZM20co7353GP1hkHKV2EWhX381kOASxcjCxU5a3Mmzo72jJU3m4g4
         nBL3/8Ooo50d3ndOC4PNG7O8FB+JpU0gnVVW9GJHBq9L/siX9OzOU8D4lmKDCEANFp9y
         xHA5BQBzm6++oJKvl/dMzGviMwU/QldLAtOlfanoMRbDAzA48Mlp6/CHVStOWlfPJhTI
         KqIwD4Cz0Fpg6DGfAt6V1+Tde+z+xCxuPjPWV2m3Ixgz08I4Uhf/v54RDz6uXMbygCRu
         bCyqFguYoq80NXvutehC6UacGgTl6pqYzcN/fRu4Wj1xctA/bUdoTFw/N5zhgm8HADws
         0wsg==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20251104; t=1776874005; x=1777478805;
        h=content-transfer-encoding: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;
        bh=E2VCIFFdkqyEam0s3fRcy75nsTVdfFenk05cYG41k2o=;
        b=LX+iViPqA1Ax/zAYvOutxe/oOWvZT9KXhk3z4Q47xL82upCKGt30qArDfz6eadOSN6
         DOpnHshSJJFxdBpsrZoPR+VDMBZSrAcwtVzuT82Km/6YgtfjLnImRrlb7Vs+v4h5q3w3
         eVKztywh4VIVN6yZT4QPH2jImlmGZsAGtn5sKxaB7T9IL4rX8x3gMoSKCjOuul9porMG
         0/1YXU0QpYJUGDPzmi6GKsszYwlR8tI9rAbCcb2GQZRdcMY60oAYFAL5RzjBVBbyudzD
         oP4jF8weVdsoj4qOsxrLZIu+LauRCfTH8opjHo15QyzpWC6rxLBcotdCieiPdGHo0i7n
         tMGA==
X-Forwarded-Encrypted: i=1; AFNElJ8sSXWwKY9tDpo5M3s25Bl/muj6pzypAbRjYhaOderHuSLAZwrjr7HiXY+fFpmb7VmzWbIYwILFGFY=@lists.xenproject.org
X-Gm-Message-State: AOJu0YzJVVfAjYFFpwdi7pmSXECu4/otNp76B0w+6I2aln15HY5CZrDS
	3cH5Vvb8vJEfnPzHr4in21QKt2w7p97vx7+Is9/TJsxVqmCd3kosVFUa
X-Gm-Gg: AeBDietagfCdi881ugqzydp2mNDPLpd2GPfd5enW0Y/aC+VqNeXG9cxVifn662fpbiO
	EAkv4UPy03Z0UvPnX0Q4ZoepT7RwD0+t/R6/7uvEmJU3lEHUIk5NFhJrdmoV4W1mt1iD61NYJTF
	vg/1rE1ouXmEhmICyrUUrGAq+YtmuK45C0C6scf5DOFwM4rvqXtz9VREBSX9JhZ6zE3qah6VC58
	/nwSqd6W4fpQaKQ8ybwGJ+CuieZ+Xm/CcWSgwtQc52uaD00Jxbg1FAYwlANe0wk2864fhjDt6Q/
	wC/mvxZnbMknuc+tfHvT2vN4pdnUXexeeM9AOw/rt1ClQoa3ORAPlBuENXrMF2y7q4U65vIaL2Y
	CiGONgqBiG2PyR7Dwo3USodMXEGM+UXgibdM6reA8E172UDKIIIDUIdYaxNcY+gS8/AHC8fNDQQ
	00r1LkLjZX1CQhYVVv6yXE/PYEEHFgwMP7lmMoMJ7A3B2tRZm2Pd2ep185DujUb1aUqwqcbKFUb
	nvnvAVEOPnVqg==
X-Received: by 2002:a05:6512:1092:b0:5a4:6f3:ddd with SMTP id 2adb3069b0e04-5a4172cc199mr6605137e87.13.1776874005025;
        Wed, 22 Apr 2026 09:06:45 -0700 (PDT)
Message-ID: <ee107b3b-0957-49b4-beb3-8467b9bb7476@gmail.com>
Date: Wed, 22 Apr 2026 18:06:43 +0200
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH v3 08/12] xen/riscv: rework G-stage mode handling
To: Jan Beulich <jbeulich@suse.com>
Cc: Romain Caritey <Romain.Caritey@microchip.com>,
 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.pau@citrix.com>,
 Stefano Stabellini <sstabellini@kernel.org>, xen-devel@lists.xenproject.org
References: <cover.1775836193.git.oleksii.kurochko@gmail.com>
 <94c914766171b732524d2d64c283e566595a4d22.1775836193.git.oleksii.kurochko@gmail.com>
 <d03f915e-8066-42dc-aac0-14ac6eb523f7@suse.com>
Content-Language: en-US
From: Oleksii Kurochko <oleksii.kurochko@gmail.com>
In-Reply-To: <d03f915e-8066-42dc-aac0-14ac6eb523f7@suse.com>
Content-Type: text/plain; charset=UTF-8; format=flowed
Content-Transfer-Encoding: 7bit
X-purgate-ID: tlsNG-16d1c6/1776874006-91F84D75-73310388/10/73395122804
X-purgate-type: spam
X-purgate-size: 1651



On 4/21/26 11:39 AM, Jan Beulich wrote:
> On 10.04.2026 17:54, Oleksii Kurochko wrote:
>> --- a/xen/arch/riscv/p2m.c
>> +++ b/xen/arch/riscv/p2m.c
>> @@ -45,12 +45,27 @@ struct p2m_pte_ctx {
>>       unsigned int level;          /* Paging level at which the PTE resides. */
>>   };
>>   
>> -static struct gstage_mode_desc __ro_after_init max_gstage_mode = {
>> -    .mode = HGATP_MODE_OFF,
>> -    .paging_levels = 0,
>> -    .name = "Bare",
>> +/* Values should be sorted by ->mode in this array */
>> +static const struct gstage_mode_desc modes[] = {
> 
> As before, I'm of the clear opinion that this is too generic an identifier
> for use at file scope.

I can rename it to gstage_modes or p2m_modes to make it better suite 
file scope.

>> --- a/xen/include/public/arch-riscv.h
>> +++ b/xen/include/public/arch-riscv.h
>> @@ -56,6 +56,11 @@ typedef struct vcpu_guest_context vcpu_guest_context_t;
>>   DEFINE_XEN_GUEST_HANDLE(vcpu_guest_context_t);
>>   
>>   struct xen_arch_domainconfig {
>> +    /*
>> +     * G-stage MMU mode for the guest (e.g. "sv39", "sv48", "sv57").
>> +     * Must be set; an empty string is invalid.
>> +     */
>> +    char gstage_mode[8];
>>   };
> 
> I have to say that I find it odd to use a string literal for this purpose.
> Specifying the number of wanted address bits would feel more natural. Plus
> the strings named aren't valid G-stage modes afaict - they lack the x4.

I will change it to unsigned char gstage_mode and put there on of the 
value of HGATP_MODE_SV39X4, HGATP_MODE_SV48X4. Or just address bits as 
you suggested will be fine too.

~ Oleksii




From xen-devel-bounces@lists.xenproject.org Wed Apr 22 16:19:04 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 22 Apr 2026 16:19:04 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1290878.1570325 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wFaHx-0001Ya-Pf; Wed, 22 Apr 2026 16:18:57 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1290878.1570325; Wed, 22 Apr 2026 16:18: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 1wFaHx-0001YT-Mc; Wed, 22 Apr 2026 16:18:57 +0000
Received: by outflank-mailman (input) for mailman id 1290878;
 Wed, 22 Apr 2026 16:18:56 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <bernhard.kaindl@citrix.com>) id 1wFaHw-0001Xv-Dv
 for xen-devel@lists.xenproject.org; Wed, 22 Apr 2026 16:18:56 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wFaHv-008FX4-QV
 for xen-devel@lists.xenproject.org; Wed, 22 Apr 2026 18:18:55 +0200
Received: from [10.42.69.12] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <bernhard.kaindl@citrix.com>)
 id 69e8f4e6-e002-0a2a0a5209dd-0a2a450cb2a4-24
 for <xen-devel@lists.xenproject.org>; Wed, 22 Apr 2026 18:18:55 +0200
Received: from [40.107.201.50]
 (helo=CH4PR04CU002.outbound.protection.outlook.com)
 by tlsNG-d25034.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.1)
 (envelope-from <bernhard.kaindl@citrix.com>)
 id 69e8f4ed-62f1-0a2a450c0019-286bc9322078-3
 for <xen-devel@lists.xenproject.org>; Wed, 22 Apr 2026 18:18:54 +0200
Received: from LV3PR03MB7707.namprd03.prod.outlook.com (2603:10b6:408:28b::21)
 by CY1PR03MB8121.namprd03.prod.outlook.com (2603:10b6:930:106::16)
 with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9846.19; Wed, 22 Apr
 2026 16:18:51 +0000
Received: from LV3PR03MB7707.namprd03.prod.outlook.com
 ([fe80::97e8:ef9c:9031:e2bf]) by LV3PR03MB7707.namprd03.prod.outlook.com
 ([fe80::97e8:ef9c:9031:e2bf%6]) with mapi id 15.20.9846.019; Wed, 22 Apr 2026
 16:18: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=hEMzqtywbgOdSbvboskv/unqJgADlWRDtLxXbZwD8S0S/nrMqy80JLv+r5iujz0Eb6k56ezdG8WgGIwTGVWKfnGtKgCPmYM8EjNeLedbK6wRNMiiHL/TXix0LLsNrn7LjO7tagVHYBPjmnRAjLlvHJm0+D6ljY19xachFA+jx318YorvuD9WQgKXKmezjEMuTpfT1/6f3v+M0hBjSQckvFVL55HK5oLzQF3JYaWA+b2keUBbZcfKTXctO5iGKowgwKX3KO8Us23HdepZaQkTH1zO+x1hJsCIBkDkuZ3QBmIX/PuuoQYxxpGBoCzU1nxNnf13750Ia/v3yjyDBPB/0A==
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com;
 s=arcselector10001;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1;
 bh=3dhHE4C2V+S7vfTWecnNFpItzw+ypjnH2myp4j86ApY=;
 b=cKAJ2wrMXuPFYUXi2rMNzkuuUsBw4VyPUoFrbVCLGDCc5CDkAMVKg1/abbgf8YB2Ufqf01C03g8TBRO7+ao0ex1rECLNnNXwp/+ty+kDtGWF3jG8jZu6khdujtnNoRxaZGjbBkVRxwv9dZSnCScGttfBXuTGqkkblT21LB0p5Wn58/fASOyu+zjUEjEPYSF53JfCQbq3YWl4dK2Ki67U08ZkpmFQ4QfVXNEC0dTBNbYfCMNrXF5h90Jeumfz0/1LFqNkWVbxEnasP9tDXl7O9LN6HAgNoCKcA+56GNLOca0D7eKNULLpQzyxXtsYUpn47Y9h3nbMSPZMfW7iEnk16w==
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=3dhHE4C2V+S7vfTWecnNFpItzw+ypjnH2myp4j86ApY=;
 b=GuURv9JDW5bo8Pt9KpHkcA2xDWTbhaRSZIYPyOfRsb3Hn1TN+9vyTHgafHrCg4/2HWNSLPOyW0Miwh+ZmpagY7Fi/yKA+C2e8BTpl7gvT9jHfVTtaGAX6vH6+7utlXYxiFPHqf4QIiVyA69z5MgeBzjF64hIkt4PBq/VErRZJLQ=
From: Bernhard Kaindl <bernhard.kaindl@citrix.com>
To: Jan Beulich <jbeulich@suse.com>
CC: Andrew Cooper <andrew.cooper@citrix.com>, Anthony PERARD
	<anthony.perard@vates.tech>, Michal Orzel <michal.orzel@amd.com>, Julien
 Grall <julien@xen.org>, Roger Pau Monne <roger.pau@citrix.com>, Stefano
 Stabellini <sstabellini@kernel.org>, "xen-devel@lists.xenproject.org"
	<xen-devel@lists.xenproject.org>
Subject: RE: [PATCH v6 1/7] xen/mm: Refactor claim deduction for later
 functional changes
Thread-Topic: [PATCH v6 1/7] xen/mm: Refactor claim deduction for later
 functional changes
Thread-Index: AQHczBIVjQaUKhelwUCYpZQxzVcChrXqzwoAgAB242A=
Date: Wed, 22 Apr 2026 16:18:50 +0000
Message-ID:
 <LV3PR03MB77073133E13DA7F0CE5CA983872D2@LV3PR03MB7707.namprd03.prod.outlook.com>
References: <cover.1776172526.git.bernhard.kaindl@citrix.com>
 <5302d33e7e896347acc7a8212df4f28ea098e28e.1776172526.git.bernhard.kaindl@citrix.com>
 <3df7352b-7502-4c2a-bc3f-0cb4fa7014cf@suse.com>
In-Reply-To: <3df7352b-7502-4c2a-bc3f-0cb4fa7014cf@suse.com>
Accept-Language: en-GB, en-US
Content-Language: en-GB
X-MS-Has-Attach:
X-MS-TNEF-Correlator:
authentication-results: dkim=none (message not signed)
 header.d=none;dmarc=none action=none header.from=citrix.com;
x-ms-publictraffictype: Email
x-ms-traffictypediagnostic: LV3PR03MB7707:EE_|CY1PR03MB8121:EE_
x-ms-office365-filtering-correlation-id: 703b5426-2240-45e6-36e1-08dea08ad73f
x-ms-exchange-senderadcheck: 1
x-ms-exchange-antispam-relay: 0
x-microsoft-antispam:
 BCL:0;ARA:13230040|1800799024|10070799003|366016|376014|38070700021|18002099003|56012099003|22082099003;
x-microsoft-antispam-message-info:
 b2kcKnB9QX4ARusuevpiWLTIDmwqDi//VFxUGCpzboq2odhZdRrNC67t0/9GpB3gQz1Vb5Jti+Kir8EBLOv8vbD77agAu2/mzHhrDbPVy75FHD8lDk8Vg+U2lFKg2GqM0hSf2G5BTc8jJtesp173yygykwHEMKdeNI9MSuBpeYeDn26bRGm5aRNA9f0FCal7vZj1eGbk0F5jLgq2ORJlAIXbLr2fLM3/VyiH5K3CpgGz3/ELZ3R009zlzb1DNrqWQtRX3728+29Hf9Jj7hP69Mivj5i2rfEa5AtL1OiBobXn6mqko4Xx+kbz+9n7LL/pfL4eBA66gpBY8GCqU28LA0IAQpWLoM0+hc1N5ECETHI9+D4Hux8FHzOlWIeP20Tz7t7HqB+FS8RbLTjl+e6oBrfyHHhqNkz5Am683MUjJj/bX8cwUPLMXg9Pe+T3Roub5Dkml+oA/+kHomiE48d65KF2+8ebf/yLN94M0dlAYlGaBh6uEU/Ffi+8g+8zFMX0I4EYF6TqbdXc7U8EB7NaiB4gyjwYVF1MPHiHaLZrLKRq4CER8CU1lCIEuL/u3zvDM+1QqAaBw5GpucFik8d8kmNrUKwq1LY6bAwyO7a6nXwBGQ7t6u2V/e5Y1D8pAmxuEsTwCDK/Uqnb7FLhnh+T9LoupvtkzCAVHRU4+gkO8vRQd61FOCYKzP2I4spI3AfnyWmctncuKXW1lfaNOMJJXCQNfI2pMIVEltlPMfOIuB+NDMh+xhtRbK22qtGQuzTCOCzfk94piFFG/VP/eukEVgmkb+Yrci16d5i0JveZSHo=
x-forefront-antispam-report:
 CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:LV3PR03MB7707.namprd03.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(1800799024)(10070799003)(366016)(376014)(38070700021)(18002099003)(56012099003)(22082099003);DIR:OUT;SFP:1101;
x-ms-exchange-antispam-messagedata-chunkcount: 2
x-ms-exchange-antispam-messagedata-0:
 =?utf-8?B?ZVhEVUVLTVErTHI1L1pyLzFsZVdSU0VQdG9hT2lMVDBFZXpYMDdLRmp2a1Ax?=
 =?utf-8?B?TDJpKzZKa2JzRWU2bzFrUjZlSGoxTDVwMG15eTQ2QXRZaGMzTjF0bkNna05s?=
 =?utf-8?B?NE5mMjErbEx5ajZCNllxK1oxOHdWUkQ3alVJeXBsMXo3Q3hOMnZhZlNYaEhv?=
 =?utf-8?B?VFJ4d3ZKSkVqTlNQTGNjSmkzampVZG9OWVI3ZmlJZzV1YTJZNVZzeW4xUTVn?=
 =?utf-8?B?TXBEOUQ5U3lLNUgwTjJKWVVMVkJkVi9UVFFBNmxSaHR5c0lPZExBNDFJQy9T?=
 =?utf-8?B?QnEycmtXckNvdEhzcS9aaDlWZllSaVdmekVMaitRa0lpemIwcVpmOEtsZW0w?=
 =?utf-8?B?RVpsaFArcTVQaWFjRHdRRDdTNDdiU3dlS2Jva2pURUoybzl6YzBWeUxFdzNT?=
 =?utf-8?B?dThBL3FVR0kzelNKbmxuRkxnYnQza0F2L1JSbEl0L2ZpSXZWZlVSczlRQkRp?=
 =?utf-8?B?NXVTQ3BMT1phMkNOejBnWElkb2w0Z25QdHJ3U3grTG1uQkVMSFdHd1lodFY3?=
 =?utf-8?B?TG9Rc0xvSDd2RTY1aTYyR2hNeFJsaW9vVUliN05LeitXVjZPVkZVVmZjSG1M?=
 =?utf-8?B?b2xZNGJjcld5QzM0TExLR1UyU214K3VnQjI4Mkl6MkVvZHlwRFVMMWZleUNz?=
 =?utf-8?B?TnYydXhrL1VYWHZNM2FxUEhpbldrczJUTTQwakpTeW0wT0FHMld3Ky8zZTZH?=
 =?utf-8?B?cjUyZ1Izb2wzc2xjTERMRFRwQnhEVllFd1VxaFVWb2s4MTEvNGs5QUhNM1lF?=
 =?utf-8?B?S2djeWVwY1BGOWpMQzFsYWMyWTZ0dC9vNHE0czVNaCthTGV3Ykh3SGVBRUhs?=
 =?utf-8?B?Sy9vdnVPWWswaTFZN1FBdFVuOE9NU3BQZmFxT1NiQUxRKytWY0xremlRZ0Vy?=
 =?utf-8?B?aGY5MWRBbFRXeG1EWGNUbjRoV2M0Z3lmUm83bGszTTluMHh5alMvbEJ2RkhW?=
 =?utf-8?B?cEYreXBFS2Z1Q0JHZDdnRFh0Mmx1NzRYalRWZHd2ZHl4bGZzV2xMUjJmZmN2?=
 =?utf-8?B?RTUrUXcrQlhBUWJEVzBQVHAySVBGZFVod2JSbkZYNW9kanB5OEwvN24vYXpp?=
 =?utf-8?B?QzFyNm5hcFZJT29zaHNFeTZnSnFZbUs5UTZvbE9QVE1VMnFLQXZHUGxTQ0dr?=
 =?utf-8?B?MURhZkszSXBHbGdDTEthOUNpYUxTY3V1ejJxSmlqbFRpWkRXM1N1eW8zZmIy?=
 =?utf-8?B?UzUyQlNmOFRqQnhYcDQvUy9yM0R2dU1SeURPM2pQN0VidlN2eUZ2aFo0amE1?=
 =?utf-8?B?bWtOeWQzRTlpMlZ5bzladDB2cldxanhqZGFoQ1pmSHdRc3NCY25sZHgweXJS?=
 =?utf-8?B?SkZweTNwRjNTbVFVcDRxbnI2ZkVzNlM3c2ZKL2Q5bFJtYXU3b3lHNzZwWTgz?=
 =?utf-8?B?NXV1T2gwUmpyRmtLMnpSY0VnQnp6WjlmdlNKNDQxT0p0ek13MEV6cTVEOHVv?=
 =?utf-8?B?OXR4L2JpY3YvVEhDMmxSalBRSjI2cDc0NlhGd3dDSm5iU0RhcDU0VmxRako0?=
 =?utf-8?B?b1FJNmdYZENmSjdkK3dKa0FqdDdCT1paQUhTQkQ1VW5oSFlOaTVZMVFsVWVn?=
 =?utf-8?B?cWUyQ0NCN0x3SmZjY3J1MFh2MDg1ano2NUxFN21udlRrdEtNMWs0cmIza0Nv?=
 =?utf-8?B?am9xSVZ5dmo3R0NSaW5TbTd0bjJHYlFNUG93OE5JM2N1a0FHVk5DSUg5RjRM?=
 =?utf-8?B?bHM3bmVlQmRYYU1xOFFzakpNcXZSYWlVQ3lySm1YOThGZXVnajJPVHRadldm?=
 =?utf-8?B?UksycnBDLzlLdHVucHBZc1hQNFZaRmV4ajJTMFQ3aWxVUTlCVlZML1ZhUGJF?=
 =?utf-8?B?c1Z2U2puZ3p4enpMVGFaT2NFL1EzWDhLdjNad0NQeU52eVpoeFE3ZjArNEpm?=
 =?utf-8?B?Slg2RHBLM1FYeEVEK0R5UzRFYm5DQkVGdW5TODVrMGFGTzRDcWNaSWNHMDFZ?=
 =?utf-8?B?akprNTBZdlI5UnZCWFNUbHkrT0loWk1jdWZCVlNwMFc5bHhLcHpManBLcVkz?=
 =?utf-8?B?T2xNVFEzOEhIbk10aFoxTnozeFZFY3pBV1NTek15VkJrREpScWxoYWxJVk5T?=
 =?utf-8?B?Z0YwSEFCTU8zbTZrOVc5ZFlhZ093aHlHeDRHeE1oSGxVN243N2owZHVwYVlZ?=
 =?utf-8?B?cTh2WG9kaGVRMVRlei9MKzZVWG1iRU1laVJVWVJ6bkdSb3M0N1haUHlWc1pR?=
 =?utf-8?B?TTlvQytDbXJLV1gzNnFDSmZab3RtSE5EaE1ZU3VibURaWEdGdXVZbm5ONEV1?=
 =?utf-8?B?OUkyTkVxNzFPS2cwa1kwa0syYk1YOUZyRVBQaStVVFRUSFJqaHRWZ1Q0WEN3?=
 =?utf-8?B?L3ZGZDQrcEhRWXZsUGVtVzNBNTl0V2Nocmo5NGNsdjczakovOGNpbXFhU3Ny?=
 =?utf-8?Q?6ZVNJPeXj74WjwjRLHM2Kn4xrn/4U9R+oEMWatum64Wd3?=
x-ms-exchange-antispam-messagedata-1: qP28DKMwqzLAhw==
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: LV3PR03MB7707.namprd03.prod.outlook.com
X-MS-Exchange-CrossTenant-Network-Message-Id: 703b5426-2240-45e6-36e1-08dea08ad73f
X-MS-Exchange-CrossTenant-originalarrivaltime: 22 Apr 2026 16:18:51.0109
 (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: nLzh2XrdYyN8OEgRxFQPml/EVzButmtF0rfOAJW5+9vKpawJz5h/n7Od1H0fSNUZ+uYnzCEzw90sh+65ZT53LOLYGkGjA7I8vAaTc9hdER8=
X-MS-Exchange-Transport-CrossTenantHeadersStamped: CY1PR03MB8121
X-purgate-ID: tlsNG-d25034/1776874734-6D76ECF5-C7B82B23/0/0
X-purgate-type: clean
X-purgate-size: 1084

SGkgSmFuLA0KDQogICAgVGhlIG1peCBvZiB1bnNpZ25lZCBsb25nIHZzIHVuc2lnbmVkIGludCBm
b3IgcGFnZSBjb3VudHMgaXMgY29uY2VybmluZy4NCiAgICBbLi4uXQ0KICAgIEkgd29uZGVyIGlm
IHdlIHdvdWxkbid0IGRvIG91cnNlbHZlcyBhIGZhdm9yIGlmIHdlIGZpcnN0IG5vcm1hbGl6ZWQg
YWxsIHRoYXQuDQoNCkkgYWdyZWUuIFdoaWxlIEkgb21pdHRlZCB0aGlzIGZyb20gdjUvdjYgdG8g
a2VlcCB0aGVzZSBjbGFpbXMgc2VyaWVzIG1pbmltYWwNCihJIGhhZCBpbiBpbiB2NCksIGFkZHJl
c3NpbmcgdGhlIHR5cGUgaW5jb25zaXN0ZW5jeSBmaXJzdCBpcyB0aGUgY2xlYW5lciBwYXRoLg0K
DQpJIGhhdmUgc3VibWl0dGVkIGEgc3RhbmRhbG9uZSBwcmVyZXF1aXNpdGUgcGF0Y2ggaGVyZToN
Cmh0dHBzOi8vbGlzdHMueGVucHJvamVjdC5vcmcvYXJjaGl2ZXMvaHRtbC94ZW4tZGV2ZWwvMjAy
Ni0wNC9tc2cwMTEzNC5odG1sDQoNCkFzIG5vdGVkIGluIHRoYXQgc3VibWlzc2lvbiwgdGhpcyBj
b252ZXJ0cyB0b3RhbF9hdmFpbF9wYWdlcyBhbmQgb3V0c3RhbmRpbmdfY2xhaW1zDQp0byB1bnNp
Z25lZCBsb25nIGFuZCBhZGp1c3RzIHRoZSBBU1NFUlQoKSBsb2dpYyB0byBhY2NvdW50IGZvciB0
aGUgbW92ZSBhd2F5IGZyb20NCnNpZ25lZCB0eXBlcy4NCg0KT25jZSB0aGUgc3RhbmRhbG9uZSBw
YXRjaCBpcyBhY2NlcHRlZCwgSSBjYW4gc2VuZCBhIHY3IG9mIHRoZSBjbGFpbXMgc2VyaWVzDQpi
dWlsdCBvbiB0b3Agb2YgaXQuDQoNCkJlc3QgcmVnYXJkcywNCkJlcm5oYXJkDQoNCg==


From xen-devel-bounces@lists.xenproject.org Wed Apr 22 16:45:37 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 22 Apr 2026 16:45:37 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1290905.1570342 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wFahf-0006Mw-Pg; Wed, 22 Apr 2026 16:45:31 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1290905.1570342; Wed, 22 Apr 2026 16: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 1wFahf-0006Mp-MH; Wed, 22 Apr 2026 16:45:31 +0000
Received: by outflank-mailman (input) for mailman id 1290905;
 Wed, 22 Apr 2026 16:45:30 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <Edgar.Iglesias@amd.com>) id 1wFahe-0006Mj-3x
 for xen-devel@lists.xenproject.org; Wed, 22 Apr 2026 16:45:30 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wFahd-0018xp-DE
 for xen-devel@lists.xenproject.org; Wed, 22 Apr 2026 18:45:29 +0200
Received: from [10.42.69.7] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <Edgar.Iglesias@amd.com>)
 id 69e8fb14-bab6-0a2a0a5309dd-0a2a4507bf0a-40
 for <xen-devel@lists.xenproject.org>; Wed, 22 Apr 2026 18:45:28 +0200
Received: from [52.101.46.5]
 (helo=CO1PR03CU002.outbound.protection.outlook.com)
 by tlsNG-ef75cf.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.1)
 (envelope-from <Edgar.Iglesias@amd.com>)
 id 69e8fb27-229c-0a2a45070019-34652e0580b2-3
 for <xen-devel@lists.xenproject.org>; Wed, 22 Apr 2026 18:45:28 +0200
Received: from PH8PR12MB6771.namprd12.prod.outlook.com (2603:10b6:510:1c6::6)
 by MW5PR12MB5649.namprd12.prod.outlook.com (2603:10b6:303:19d::13)
 with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9846.19; Wed, 22 Apr
 2026 16:45:23 +0000
Received: from PH8PR12MB6771.namprd12.prod.outlook.com
 ([fe80::6536:1008:9f96:f3eb]) by PH8PR12MB6771.namprd12.prod.outlook.com
 ([fe80::6536:1008:9f96:f3eb%4]) with mapi id 15.20.9846.016; Wed, 22 Apr 2026
 16:45: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=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=hzT4oI68ElZo1p+9Skwi86f4MbIO+sciucspNiurSe97fRT0I+Ks0WCiyX6TIA/WufWEbgudPyIs/MfE3CWglcPFPJtzaMpqlAhP+tP3uhMc6HTFOSs96fm1pmJ2KEPPCPeQEbo+HTpuHyzAz6uU50HcWT+REJMGbwT08he8YOxLOu/Y4Z4WbYuCHepWiIZqEwehQWEU6UNVIcNKdm8dJgT+rQtEtmTulsvtFICbfHFp5i7M6PS26b5FLxH97eSn9N9nDDBaZ848rGjFcuvP9Io+o9ipj7X/VQmbnf4mIbTlt3F0AhCid8VSlCF7DePQDMF3KYyvCw5NDcZY7Z6VxQ==
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com;
 s=arcselector10001;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1;
 bh=dXYTPr286/vW4QR7rsApjLMHIj/fupcV6bZIGJ5DvLc=;
 b=AwoKZKBGuDmBGxJrL0YqW85I+p1CryVLe2FRystXQ2urqjrnrzuh996Pm26zDsUFzBmk++zxMcF9vrzYZ3xG13SsAh4WmHRHoygPiaZtMOJB+XVYbqYuSLG1sf5QPfS4+Ne/2bSEooy3M2stVOG6LhSiXSqobw2LC4YcIpByJP8vHDfVCd7CrQFL5r5ACgQQ7twOFdgCgyIbqfRAxR2XQhZKxTtLDAKhiG/imUU9IZb1mU9TU8iLRYKDWHrBDYlCxLVR+Jwl1mrLcuUaVuipagDv33O/1Pf8WkodHQ8Sq6THUFJvPw4q9ZXJTMvk0mH1XndyY0P96QKt0DYNHmI90g==
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=dXYTPr286/vW4QR7rsApjLMHIj/fupcV6bZIGJ5DvLc=;
 b=a4ocRZXOzgutPfbc3+geljuQ9iEWugCRsjG4NptekteQQDLYD0nHreIslEFI08SuxaaLbo6p0qHP5wGQhIiKO6RYChizXBmJho60b5wb6Zid8i/8ofuahR0sgxt8RIqk/UfvHciiZpP86DwRXNkrqY4Jp8ZZzEZp2Oh34t+vBYU=
Authentication-Results: dkim=none (message not signed)
 header.d=none;dmarc=none action=none header.from=amd.com;
From: "Edgar E. Iglesias" <edgar.iglesias@amd.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,
	edgar.iglesias@amd.com
Subject: [PATCH v1 0/1] arm64/insn: Avoid undefined behaviour in branch offset decode
Date: Wed, 22 Apr 2026 18:45:05 +0200
Message-ID: <20260422164506.2234095-1-edgar.iglesias@amd.com>
X-Mailer: git-send-email 2.43.0
Content-Transfer-Encoding: 8bit
Content-Type: text/plain
X-ClientProxiedBy: MA3P292CA0055.ESPP292.PROD.OUTLOOK.COM
 (2603:10a6:250:48::13) To PH8PR12MB6771.namprd12.prod.outlook.com
 (2603:10b6:510:1c6::6)
MIME-Version: 1.0
X-MS-PublicTrafficType: Email
X-MS-TrafficTypeDiagnostic: PH8PR12MB6771:EE_|MW5PR12MB5649:EE_
X-MS-Office365-Filtering-Correlation-Id: a787fbe6-8a2b-4eff-01b1-08dea08e8c28
X-MS-Exchange-SenderADCheck: 1
X-MS-Exchange-AntiSpam-Relay: 0
X-Microsoft-Antispam:
	BCL:0;ARA:13230040|1800799024|366016|376014|18002099003|56012099003;
X-Microsoft-Antispam-Message-Info:
	ZJBHSs4m0LMgQ666TLQIv5jEeDF4iz6vbf291JgeiKE2Tb+o/R/UG78tx2SQDs9snMnQ94ZMvFRozjCcsOr4OIjtMW29jKZg9sDDgnDq8x26OQmC7Ynx5X7/MtN1snzTN/jdeMBPEkOP/druF7ZmU4cPBrJY+D0FDTdKL8LP0krMRCm10Iu1ZfSOx/9yDzJREhXb4i5w4Dm4yDLbdzDCTGJJUX69qwc7cKIAsbODhurCO2xugUjFi+1oFzbTesCvbZD4+8DNCZmmp6LlqO6ugjjDEJLna4TCNoia71IqaW+kTScMhZJhkHSUq1Sza8eWeEfFWwQp4ETtNhfxM89PQC3uBqJ/hSDms8KsJC+kVmA1WIBL18UdYnYmx2B5GOWfRmWN2xdcFhrODmlDLRJj5gpfhEuPublcEaoh/a5PggG+N3US6KK6duRzZ63VSp9OuzxLnQ/wV486iVG+tT8P7xmI6LuRmTTYHPy0Wg5c9jjm568uSS2uqh/Cb7U1DrmoQXSbrTwJPp31WQvQbAwqvEkW4PcCUF2t1ev/d1EHdbSRthzBxKM+wCEOJYCxhQ2DZFbxAK7Gp5VaECl6HVzJO/yIZo/giQ9tea0zAXEkXrpvUfB8w4s7pdqo6WsmkGJ1T51qCBpvr58fiEJSbBTu6ZoM/HjcCI8rhU4YjVHDqaje6u0P/qOlhYzo1YX/h3inFlQmuspErL4bxzh78C3tMCqh31j2pvSr6e/9i2aTfNQ=
X-Forefront-Antispam-Report:
	CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:PH8PR12MB6771.namprd12.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(1800799024)(366016)(376014)(18002099003)(56012099003);DIR:OUT;SFP:1101;
X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1
X-MS-Exchange-AntiSpam-MessageData-0:
	=?us-ascii?Q?qLVAiSvXcgOtHzE8JEJoBNwUGZxE+YDiVNjoVXKDbmMf3OewoUMyz+1JO6C1?=
 =?us-ascii?Q?IHQHh5A8R32js8CU6K6Jh1e7OZVijLq6nE768pSSuepY+OPCmG1JyKouvGO2?=
 =?us-ascii?Q?y4cK3ElZz3/Z/DZZmx+NLl0LxjKhQqoruqsHwVJPHrjwuofD3tlS857ACrMH?=
 =?us-ascii?Q?CF6hgLJxadGlkE5dqrHT8uxsY7W+CwtIVDYFHjxpmAxL9qJBPIyY6ei9zUke?=
 =?us-ascii?Q?835KRJuwLEWmQaYoLPf6OK4haKyZhaXTFF8Hx7u53uMvrd141jEi4nm5NQ7l?=
 =?us-ascii?Q?TKxd4ugswgohkPnx/Xo8w9tac/0HKLLACu8U4ArMkTNBf5RCfjc+NM9foEVZ?=
 =?us-ascii?Q?bT0WY5TKJCDvmH8/0NTLbIkaJC5wkP1HSZT8bXA6gvNX/TT2mjQgP8XuDeCD?=
 =?us-ascii?Q?nGROXr+hD209qAj/D/XN2fPwtkP08r5yaCN3uvrLzD/kUoAxp+K+j6xYK9Zt?=
 =?us-ascii?Q?CT3Aa3BaIHEq6a0PgvpDKMjIK+eTJMAH2zLwbxIThRiJ4J6XUh8/54kevuBA?=
 =?us-ascii?Q?9CV4bDKzbhV4EvZWsx9SE9Io7Z+IzYif7t01l9WruVQh6LrBCFV8YI2wrQIO?=
 =?us-ascii?Q?0uM9qX4jbx6+rM8HFOewXpXM+R3wNSuZBVb4VtFUrhpzAg0m3qcF6G1/HpPv?=
 =?us-ascii?Q?cJTRVRFbTwWij4PvoK0YtBHRY8IGQ2/PpNaswP+F7+vzz5UUWNKGF6OyI6dH?=
 =?us-ascii?Q?gHoT+Zwe3bVWqqmfL2ozsKxGwL0XLyMTCznhRSQkhWXyGqS8W0ZGaI7T3H9n?=
 =?us-ascii?Q?xHd46cnjyYGJz0KnVuwk4elmTmmnP9PanCgBcaTVmSf7QZNRjZC7gIGBr7wN?=
 =?us-ascii?Q?PcEisJlvqNT/lkH08X7WBwJ6SyLvau5jVOz1k1wbzA5l2KGU8oeBy5501Kbd?=
 =?us-ascii?Q?olF1EQt8xUUmsHFCFFudgpKDNrFlGtZiMi6oglhCZug4oAkBbIkXwAKwYHnp?=
 =?us-ascii?Q?FhFg+XNzpF9pPLu+vQH31UFoqqQoLGlN8KPs3TvY4WJ3vsH4dVVdzPbl08CK?=
 =?us-ascii?Q?+g8+jExTJpuxmxvtJoDc6ILOGe+De6TwURJjslHis4GQ2yEU2SBbRPLjs32f?=
 =?us-ascii?Q?HnbVuphe1pd0n/k5UF3RISqXwtO4eWguiOSpsuNW0MqwSk5xtdt/GqlMvGur?=
 =?us-ascii?Q?DxAQ8Nw65OSE0cuYRBj70tfHwIzDqxcamsaYDZius3fbu3kdXngtuHFr3vP3?=
 =?us-ascii?Q?kc7/XSdwWLsIJiZsOblqSy19UfwMjx9frMAWmB8DbzZrZmMUKc9Xf077NryL?=
 =?us-ascii?Q?p4kDYQKcvBryl53TWZfzM+3kEmebLXagVRYMPr1QsG1489Wu0K6jIBOI7Uuz?=
 =?us-ascii?Q?D+yafPlAZuVxKJBM6T71CGwEOrrACbVI/TOnx/ehJ+JNL0zQmflC6hw7LHxu?=
 =?us-ascii?Q?JTBFu2GaSRQ+Xk2JQMCvq6WKGFf5lw7GP0TreXI2HrDNKqj6GsMtJGiNrS8R?=
 =?us-ascii?Q?feZMMCQneKIYVR5bQHCrAzgPIDTp4m015AyZ+wqX2HaH7m8BMsIorzjPVSK5?=
 =?us-ascii?Q?n8Wi/myQIP3j4HrkqxMxkGe0hmaPIUF+2bQru3D2iTkn13tw/Bio6LdxAQao?=
 =?us-ascii?Q?p1jM/rUsNzHDEuCWqGALBjethBtVyfJNnGMbnCYPQdiPpkAdBjIcb05L8W/x?=
 =?us-ascii?Q?TskQjEYf2e1z5fBdfgpOKBklkTcr5Jqg6l8OdEICnb/O75nH6wd7NGC4BHbI?=
 =?us-ascii?Q?vIC3mCY0KovWc3mNcquKp5Ljy35GIEvxMmoSgyDsXeXqf+S/?=
X-OriginatorOrg: amd.com
X-MS-Exchange-CrossTenant-Network-Message-Id: a787fbe6-8a2b-4eff-01b1-08dea08e8c28
X-MS-Exchange-CrossTenant-AuthSource: PH8PR12MB6771.namprd12.prod.outlook.com
X-MS-Exchange-CrossTenant-AuthAs: Internal
X-MS-Exchange-CrossTenant-OriginalArrivalTime: 22 Apr 2026 16:45:23.1869
 (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: 69qjXs9G+Z6SB/XzanXbmNlrhVCHTkZN9qCqEbwPz3qxSuDZ2fLWbv1pP0hFUmgP
X-MS-Exchange-Transport-CrossTenantHeadersStamped: MW5PR12MB5649
X-purgate-ID: tlsNG-ef75cf/1776876328-ACF66C48-23A4F23C/0/0
X-purgate-type: clean
X-purgate-size: 1225

I hit a UBSAN failure while alternatives patching decoded a branch with
a negative offset.

The branch offset helper sign-extends the decoded immediate by shifting
it left into bit 31 and back again. Doing the left shift in the signed
domain trips UBSAN on negative offsets, so switch the intermediate to
uint32_t and cast back to int32_t only for the final right shift.

(XEN) alternatives: Patching with alt table 00000a00005e7298 -> 00000a00005e8894
(XEN) ================================================================================
(XEN) UBSAN: Undefined behaviour in arch/arm/arm64/insn.c:232:15
(XEN) left shift of 66621055 by 6 places cannot be represented in type 'int'
(XEN) Xen WARN at common/ubsan/ubsan.c:176
(XEN) ----[ Xen-4.21.0  arm64  debug=y ubsan=y  Not tainted ]----
(XEN) CPU:    0
(XEN) PC:     00000a00003432e0 ubsan.c#ubsan_epilogue+0x14/0xec
(XEN) LR:     00000a0000344a58
(XEN) SP:     00000a000061fbd0
(XEN) CPSR:   00000000400002c9 MODE:64-bit EL2h (Hypervisor, handler)


Edgar E. Iglesias (1):
  arm64/insn: Avoid undefined behaviour in branch offset decode

 xen/arch/arm/arm64/insn.c | 8 ++++----
 1 file changed, 4 insertions(+), 4 deletions(-)

-- 
2.43.0



From xen-devel-bounces@lists.xenproject.org Wed Apr 22 16:45:37 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 22 Apr 2026 16:45:37 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1290906.1570351 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wFahh-0006Zy-VM; Wed, 22 Apr 2026 16:45:33 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1290906.1570351; Wed, 22 Apr 2026 16:45: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 1wFahh-0006Zr-Sm; Wed, 22 Apr 2026 16:45:33 +0000
Received: by outflank-mailman (input) for mailman id 1290906;
 Wed, 22 Apr 2026 16:45:32 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <Edgar.Iglesias@amd.com>) id 1wFahg-0006WO-Gb
 for xen-devel@lists.xenproject.org; Wed, 22 Apr 2026 16:45:32 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wFahf-00FUdH-Tk
 for xen-devel@lists.xenproject.org; Wed, 22 Apr 2026 18:45:31 +0200
Received: from [10.42.69.5] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <Edgar.Iglesias@amd.com>)
 id 69e8fb1c-2eae-0a2a0a5409dd-0a2a4505dcc6-10
 for <xen-devel@lists.xenproject.org>; Wed, 22 Apr 2026 18:45:31 +0200
Received: from [40.107.209.15]
 (helo=PH8PR06CU001.outbound.protection.outlook.com)
 by tlsNG-c201ff.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.1)
 (envelope-from <Edgar.Iglesias@amd.com>)
 id 69e8fb2a-aaa8-0a2a45050019-286bd10fe491-3
 for <xen-devel@lists.xenproject.org>; Wed, 22 Apr 2026 18:45:31 +0200
Received: from PH8PR12MB6771.namprd12.prod.outlook.com (2603:10b6:510:1c6::6)
 by PH8PR12MB7231.namprd12.prod.outlook.com (2603:10b6:510:225::9)
 with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9846.20; Wed, 22 Apr
 2026 16:45:26 +0000
Received: from PH8PR12MB6771.namprd12.prod.outlook.com
 ([fe80::6536:1008:9f96:f3eb]) by PH8PR12MB6771.namprd12.prod.outlook.com
 ([fe80::6536:1008:9f96:f3eb%4]) with mapi id 15.20.9846.016; Wed, 22 Apr 2026
 16:45: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=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=JNgelDCm9qID5tDiUkEXq5qJDj4H+6aHBLztkQSierCi9AALe+7orKgEG59e9j7GBawoCUYu77mKoL6HyTWxIQXMze69FBow2a6yD/ChVX1oxYz5S+8u92MWOk/tyM4BCUDBDaWWjOR9oPLXMGgw3j9falpmKFKHApji6ZE6fekjmfoP89rRV+kNI+s1NjUuOcg4eGqi6xXLXjobawFfZxWLaSDNHcune0JBZjuWZxorAo59ZfGn6zoCg4YzqRby8KlRq2fgetALYS4YyYQDy6yiPnaUBkPe0DV67yib1DEkqrNmnpTSMwsTDJbNwNjynSUfuqlTB/RCBq/uT9obXQ==
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com;
 s=arcselector10001;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1;
 bh=l1L0cHhYhKWukItgG6Pv/iZnhnVGXxoiCqOifSqAFSQ=;
 b=GrSB39WrvxWtA/jSGuqRgBO4VBmJpnyESRFQQiYxozJ3tke5CYLnkfv4fDKbSk4HzEao+vpAimzhaNs6eC1r9ODkC5SBzzaC3Ga9t6C65blUheEDDGci1Tiqm48FtL8LTur2aeHGH8lpSNRdlij+4KkETFLGUE1/2NiFKoJhe7DzcNCiZ7rk/yXQ2FAH0ns7m13U9rwOiwqUDGy/P4TSs7f0phTvwtWXf4ACGX3s8TbCD02dFifzs6L0BD+pQRlCWnGVFyVLw/ai7ntVLXdQdXhrCMggVPG4ZXso9DCbNqh+Oa6nA6zpcfEXZaxU8VaJ34xxmw5erHn8IBDFAU7mzw==
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=l1L0cHhYhKWukItgG6Pv/iZnhnVGXxoiCqOifSqAFSQ=;
 b=CpUNWeHU7fnyWAdxLH+ZU4lf26Lp6SDgsbsgBlBDbkLM8XasyJxKQKcBMZu7zaIaN1BOaxZeBgaaoEmiJk5kHYvIcwtJ0rdElRm4uCkZzzpLI2cIWjPsMoXRz48Rza7DTtPtDssBwWFYDX67XL0MuNveWBfHMRjDwLJEY9dYXXc=
Authentication-Results: dkim=none (message not signed)
 header.d=none;dmarc=none action=none header.from=amd.com;
From: "Edgar E. Iglesias" <edgar.iglesias@amd.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,
	edgar.iglesias@amd.com
Subject: [PATCH v1 1/1] arm64/insn: Avoid undefined behaviour in branch offset decode
Date: Wed, 22 Apr 2026 18:45:06 +0200
Message-ID: <20260422164506.2234095-2-edgar.iglesias@amd.com>
X-Mailer: git-send-email 2.43.0
In-Reply-To: <20260422164506.2234095-1-edgar.iglesias@amd.com>
References: <20260422164506.2234095-1-edgar.iglesias@amd.com>
Content-Transfer-Encoding: 8bit
Content-Type: text/plain
X-ClientProxiedBy: MA3P292CA0069.ESPP292.PROD.OUTLOOK.COM
 (2603:10a6:250:49::9) To PH8PR12MB6771.namprd12.prod.outlook.com
 (2603:10b6:510:1c6::6)
MIME-Version: 1.0
X-MS-PublicTrafficType: Email
X-MS-TrafficTypeDiagnostic: PH8PR12MB6771:EE_|PH8PR12MB7231:EE_
X-MS-Office365-Filtering-Correlation-Id: 26160dec-af7b-4d6d-b262-08dea08e8ddf
X-MS-Exchange-SenderADCheck: 1
X-MS-Exchange-AntiSpam-Relay: 0
X-Microsoft-Antispam:
	BCL:0;ARA:13230040|1800799024|376014|366016|56012099003|22082099003|18002099003;
X-Microsoft-Antispam-Message-Info:
	i7Rt8H65KhBaBpoD2I40a12R3Fkm7vSsVaq9ajKPzpTgKccO707ZL1FranQSxvESvrT33Xozigj+1e6fxbV8rFkieED9fTRHXpbRW1GMSKjkKaFhWZsf45FLXm0YnW/bVcn18K3rP8OL8aV2BZc2Cx+zA2AkdL14vrnB8KmoIP8M+NU3RQqjtACMNfd71/+hgFdq2T3GULr66e+JaHtRX+BtvmQUgok8gI9id/XHFv89oqZMdCbE8XMurLNyZMUxmQ0FxH3ZvynWi+28A/b2XA7eqm04Y4iGHNQFaUztgmGblBly6d9K82uOrTZcoDMg3JC0CSBMUw/UvRmW0iHqg4weHZ22sC0/qSZge6I7siSPpnJVq41EYwPzoUBdGi6xqnyiHEX9+ZTrnkSrqfz4zZ8Hq3ywtgGZ0+iCbwMJ5H9SJVImcMDHk03YU9JumB9lPkGFjLQy2q/Y1F1gUv9Ljl9V4Bfl7K6PB83y3rAeWpkWbErVY6MNQtWLh3wSUvRX0qaJmMoDnMKz7fuE87cRdFb1isNUjF0Od175iaSp/3gzUcySsN4MkUZl2rJveDOgABm4mZDvVb4IQmJYaTdC5die3FnEM2EYVNHDZdvNUdHPiJXyRaLdvA7BeUI1vdJrU4MwI5euEZt5XzKuoDruM0q1NTSstysJl/hh1Mihwq9HoQomYBdHzqr4QcUVi7Src+g8Lv+9P2R0yMUyZgQ5dR13cYqk/kTXfJKyOrjAlP0=
X-Forefront-Antispam-Report:
	CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:PH8PR12MB6771.namprd12.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(1800799024)(376014)(366016)(56012099003)(22082099003)(18002099003);DIR:OUT;SFP:1101;
X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1
X-MS-Exchange-AntiSpam-MessageData-0:
	=?us-ascii?Q?jnNUzmfjhXkNmD0iAMIW3qKg2Bt+JnwriejaI7NIHycmwtMim+h7q2OWuaBE?=
 =?us-ascii?Q?aLJTgEzvlV0zvoW6WxCNmsbOjuYmzNyMC6kvU9vf7rKbMjYBulsDfWNQeRNO?=
 =?us-ascii?Q?DEMAMcBabXIXFHw9Y6vu8qmJZcrP89qcUaAU0r8JoWvpkrVEdV0JPDVfFidy?=
 =?us-ascii?Q?fHEf6YTWObXTaAylpQgP8k8awknvTeeBzjEaL1B4QRKQQLjKSzn3JbbJ7xeD?=
 =?us-ascii?Q?9rwa6tqeLoIIqVCFhINe++cZTkTnAG6AXAlSgcYQjHC9P/owsEzu3O+Nbt2B?=
 =?us-ascii?Q?mdQ4qW39671YH8QtTBH7iJ4uKBJLncXEoKyhB1yOjQnC5MiO92W1zt9MUULw?=
 =?us-ascii?Q?932hlAE9MMsehkhPG45/LDPNHFk2d/EakP9DrqS2qKYRXedFe28sAfnSmzMV?=
 =?us-ascii?Q?r0EiqvoStpjhm8gEiuPPxd3ZOqFE7UVGaDDpNHsU/u3AYKBuJT3m4Fj6NM6T?=
 =?us-ascii?Q?qejqIpU3Yh67zMV3qTkiw+eMeGVvBHaK9mCouenDtELyyt/V6ui9OXJRaZxe?=
 =?us-ascii?Q?IlS0a8gAExquwBlLar4dPn2aVxtRO7kRo8WAO7BQYG7Pz3cRz58MxcXU9TID?=
 =?us-ascii?Q?Kn3PUFoJKcO+rl54jgUmNrpBOmM4zhc6BrscHtX/8H5oSIM8c2dM+UjQTOwD?=
 =?us-ascii?Q?cieXsrQdEuhLW+gc7IlLV2XlaXpm+3MUIGz1kv0D9pO4ASuw3LOi3qRdffuI?=
 =?us-ascii?Q?icnpXd3we6a1cZGM2jC5Ok3dqwHZReOAsJwgWU0+059pLXDmYO1rwCfos9HW?=
 =?us-ascii?Q?YqioMrjzd2zXh6OHQ6/UqmSmAj8LjvH/rVrNPNz8tOjPStLjVUzn65KJwIP9?=
 =?us-ascii?Q?CziEILbXuTGjp5ldAq+Z1IXk4kDdIlaHTn3DR+BPHQCUMn6slDZ9hs9h9xFP?=
 =?us-ascii?Q?/fXDXWtPdqflUa9ZvdFftTP1mz84t/MfeRowrjbOYczUHlmd4arFPT/HdvVy?=
 =?us-ascii?Q?ReF8onePrbOlNvbMr11VBoCz7RRhhGoKZ8z00wxXQBCN87pTbNQk2j9lQsEJ?=
 =?us-ascii?Q?9wHzByl3KkfS3nVlgweLv+0trFH+IMOQG2drfC4biW3+hPu7FcMLnKNtRYkn?=
 =?us-ascii?Q?MZapwnSJd2a1r/OL7jTVILygIDGou4IqNdNxsewTxIGBK1QyTUn+Rs+qZTNz?=
 =?us-ascii?Q?PNijnWnM27SNVprbJn2Z6oyGRPEBdPGrjvfz3w6ags/VdZdHi7/cy/lyBypt?=
 =?us-ascii?Q?SIo6PHYxthaitJYB0vzYvg4ymT5vG0Xn89cGBjoTujljeQnJEBJWytr6Zhit?=
 =?us-ascii?Q?3eqdw8QKnlPCJU1iyi9tu00hm3BzPZ3vKGJ4V5ZpBy3Xnu3bR+xnHxpBdVht?=
 =?us-ascii?Q?nHqwrPC8OIp6jmEHB9JDMHCCtL87+p7HX48+cE1WrxJsiXvo7zAiu4ORfzYI?=
 =?us-ascii?Q?pyLpNW+q/qpQsU31Zn10hRWWIAhS1tSNbOXXJxeDK//teVaY7Y5qXgXFHbXJ?=
 =?us-ascii?Q?cRxif5LXXmW1aw0i7hR34MCKVjV+nQEgcWd3e6FczUG+BcrNR1KfScyCheq/?=
 =?us-ascii?Q?vtvmyLA7ALGKG6gzcgMA7qVBHDW+1WI+dFju/seVrWwSlvoxxyPKEplzzB4Y?=
 =?us-ascii?Q?Ro1bJRaPkoQP/Rbl48xtY80MTiyeMYKZBneLbTnamCvjK4Itn7RagUutVced?=
 =?us-ascii?Q?7ifvtZuJu3Iioz45agfhf5ZOWUyeCfSDUhRuRzFHxWPRYwkrMaPTnC3dAmK7?=
 =?us-ascii?Q?w8kj9XVrnmgBUAaV8f3RPkbLnOjxogYoGadOAD/IHnD+QqF1?=
X-OriginatorOrg: amd.com
X-MS-Exchange-CrossTenant-Network-Message-Id: 26160dec-af7b-4d6d-b262-08dea08e8ddf
X-MS-Exchange-CrossTenant-AuthSource: PH8PR12MB6771.namprd12.prod.outlook.com
X-MS-Exchange-CrossTenant-AuthAs: Internal
X-MS-Exchange-CrossTenant-OriginalArrivalTime: 22 Apr 2026 16:45:26.1179
 (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: I3b97cvISfc9wthMQFvsmnjd0sGUNH3ZOZuXNJyNAtx4ypmMsrik3fJIHg0DWe/4
X-MS-Exchange-Transport-CrossTenantHeadersStamped: PH8PR12MB7231
X-purgate-ID: tlsNG-c201ff/1776876331-E336C443-AA7481D5/0/0
X-purgate-type: clean
X-purgate-size: 1520

Branch offset decoding sign-extends the immediate by shifting it left into
bit 31 and back. Perform the left shift in uint32_t and cast to int32_t
only for the final right shift to avoid UBSAN failures on negative offsets.

Fixes: 6dbf3f0e3074 ("xen/arm: arm64: Add helpers to decode and encode branch instructions")
Signed-off-by: Edgar E. Iglesias <edgar.iglesias@amd.com>
---
 xen/arch/arm/arm64/insn.c | 8 ++++----
 1 file changed, 4 insertions(+), 4 deletions(-)

diff --git a/xen/arch/arm/arm64/insn.c b/xen/arch/arm/arm64/insn.c
index 81f7914610..6b97a84ba7 100644
--- a/xen/arch/arm/arm64/insn.c
+++ b/xen/arch/arm/arm64/insn.c
@@ -225,22 +225,22 @@ u32 __kprobes aarch64_insn_gen_nop(void)
  */
 int32_t aarch64_get_branch_offset(uint32_t insn)
 {
-	int32_t imm;
+	uint32_t imm;
 
 	if (aarch64_insn_is_b(insn) || aarch64_insn_is_bl(insn)) {
 		imm = aarch64_insn_decode_immediate(AARCH64_INSN_IMM_26, insn);
-		return (imm << 6) >> 4;
+		return (int32_t)(imm << 6) >> 4;
 	}
 
 	if (aarch64_insn_is_cbz(insn) || aarch64_insn_is_cbnz(insn) ||
 	    aarch64_insn_is_bcond(insn)) {
 		imm = aarch64_insn_decode_immediate(AARCH64_INSN_IMM_19, insn);
-		return (imm << 13) >> 11;
+		return (int32_t)(imm << 13) >> 11;
 	}
 
 	if (aarch64_insn_is_tbz(insn) || aarch64_insn_is_tbnz(insn)) {
 		imm = aarch64_insn_decode_immediate(AARCH64_INSN_IMM_14, insn);
-		return (imm << 18) >> 16;
+		return (int32_t)(imm << 18) >> 16;
 	}
 
 	/* Unhandled instruction */
-- 
2.43.0



From xen-devel-bounces@lists.xenproject.org Wed Apr 22 17:00:08 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 22 Apr 2026 17:00:08 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1290937.1570359 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wFavZ-0001Gv-8r; Wed, 22 Apr 2026 16:59:53 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1290937.1570359; Wed, 22 Apr 2026 16:59: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 1wFavZ-0001Go-5y; Wed, 22 Apr 2026 16:59:53 +0000
Received: by outflank-mailman (input) for mailman id 1290937;
 Wed, 22 Apr 2026 16:59:51 +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.19db6223737000f373@swg.vates.tech>)
 id 1wFavX-0001Gi-Cx
 for xen-devel@lists.xenproject.org; Wed, 22 Apr 2026 16:59:51 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wFavW-001Hpq-Pz
 for xen-devel@lists.xenproject.org; Wed, 22 Apr 2026 18:59:50 +0200
Received: from [10.42.69.2] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1) (envelope-from
 <prod-mta-13.8631fc262581453bbf619ec5b2062170.19db6223737000f373@swg.vates.tech>)
 id 69e8fe7d-2eae-0a2a0a5409dd-0a2a4502a690-16
 for <xen-devel@lists.xenproject.org>; Wed, 22 Apr 2026 18:59:50 +0200
Received: from [185.255.28.34] (helo=prod-mta-13.swg-srv.net)
 by tlsNG-720697.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.1)
 (envelope-from
 <prod-mta-13.8631fc262581453bbf619ec5b2062170.19db6223737000f373@swg.vates.tech>)
 id 69e8fe86-af86-0a2a45020019-b9ff1c22b50b-3
 for <xen-devel@lists.xenproject.org>; Wed, 22 Apr 2026 18:59:50 +0200
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
 19db6223737000f373.005 for <xen-devel@lists.xenproject.org>
 (version=TLSv1.3 cipher=TLS_AES_256_GCM_SHA384);
 Wed, 22 Apr 2026 16:59:48 +0000
Received: from localhost.localdomain (88-175-170-134.subs.proxad.net
 [88.175.170.134]) (Authenticated sender: teddy.astie@vates.tech)
 by mail2.vates.fr (Postfix) with ESMTPSA id 2E0A9812CF;
 Wed, 22 Apr 2026 18:59:48 +0200 (CEST)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@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=RYW9LEhTjgrrty/Kgi/iBI7ELi7kv90yjoE0T2nBmwo=;
 h=from:subject:date:message-id:to:cc:mime-version:content-type:feedback-id;
 b=NvhoYzIQDvS9yJ0ocD/Jm33hoy5MMidIdf9ggu2ulh3p3I766Uno3mz7EM3n1irVF42zijL1g
 sMX+VD3QgrZwLTlAu2BscANFN3LAXulY27nu08DMnwEB0+DDEkSanVhhyJ//JqdqMd/ygIoLlFQ
 WqaO9YfYii9yXwPXGohFV6Oq2q9f5uqbnyqKmUYnrM5gr06bMpvyOLF7AXmHzIGbpQ6w1JZ3vDQ
 c8rR1tvVeWJZZ3sAbMdsGCXiX9q9FEvqCdyOQhq9DJ0USPwtezWRIlzCbRBo75IDsmiUNpmG/3Q
 plDhd/OdX1yGxTUdQ8so1gSHEDuyOCCvjOBYaFM+gWlQ==
X-Zone-Loop: 1cf038f0cfac31ff9d52a162034aab7002f8486a3398
x-campaign-type: default
x-transaction-id: 923cbf1c-426c-489d-9b5d-9383b5133609
x-swg-uid: 01-8f7c7fb4-76b1-4cac-a66e-d138f73c7fcb
X-Mailer: Sweego
Message-ID:
 <1776877188.8631fc262581453bbf619ec5b2062170.19db6223737000f373@vates.tech>
x-swg-bid: 1776877188.8631fc262581453bbf619ec5b2062170.19db6223737000f373
Feedback-ID: default:8631fc262581453bbf619ec5b2062170:Sweego
x-campaign-id: default
x-client-id: 8631fc262581453bbf619ec5b2062170
X-Originating-IP: [37.26.189.201]
From: Teddy Astie <teddy.astie@vates.tech>
To: xen-devel@lists.xenproject.org
Cc: Teddy Astie <teddy.astie@vates.tech>,
	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.pau@citrix.com>,
	Stefano Stabellini <sstabellini@kernel.org>
Subject: [PATCH] x86/amd: Drop allow_unsafe parameter, tune down XSA-9 mitigations
Date: Wed, 22 Apr 2026 18:58:06 +0200
MIME-Version: 1.0
X-BM-Disclaimer: Yes
Content-Type: multipart/alternative; boundary="-=Part.25f9.4f43d121d0e65c6c.19db6223500.165d7aa55d327c7c=-"
X-Bm-Milter-Handled: 4ffbd6c1-ee69-4e1b-aabd-f977039bd3e2
X-Bm-Transport-Timestamp: 1776877188352
X-purgate-ID: tlsNG-720697/1776877190-80B78161-84CD3524/0/0
X-purgate-type: clean
X-purgate-size: 5218

---=Part.25f9.4f43d121d0e65c6c.19db6223500.165d7aa55d327c7c=-
Content-Type: text/plain; charset=utf-8
Content-Transfer-Encoding: quoted-printable

XSA-9 mitigations prevents Xen from properly running if a affected CPU
is detected=2E While the vulnerability has no mitigations (aside not runni=
ng
64-bits PV guests), it's only outcome is a DoS=2E

There is no real point in preventing Xen from working here and it would
be preferable to just log the vulnerability to the user so it can act
appropriately=2E

Also reword the errata message regarding that it only affects PV64 guests=
=2E

Signed-off-by: Teddy Astie <teddy=2Eastie@vates=2Etech>
---
It's hard to tell whether or not we would want to drop allow_unsafe, but
currently, Xen is allowed to boot with XSA-304 mitigations disabled
(intentionnaly) which has a similar outcome than this one=2E

>From a user standpoint, preventing the system to boot or starting guests i=
s
too extreme and would be in practice seen as a bug, even if it's justified
policy which can be overriden=2E

 docs/misc/xen-command-line=2Epandoc | 12 ------------
 xen/arch/x86/cpu/amd=2Ec            | 21 +++++----------------
 xen/arch/x86/domain=2Ec             | 14 --------------
 xen/arch/x86/include/asm/amd=2Eh    |  2 --
 4 files changed, 5 insertions(+), 44 deletions(-)

diff --git a/docs/misc/xen-command-line=2Epandoc b/docs/misc/xen-command-l=
ine=2Epandoc
index 6c77129732=2E=2E04d206f919 100644
--- a/docs/misc/xen-command-line=2Epandoc
+++ b/docs/misc/xen-command-line=2Epandoc
@@ -133,18 +133,6 @@ resume=2E
 `s3_mode` instructs Xen to set up the boot time (option `vga=3D`) video
 mode during S3 resume=2E
=20
-### allow_unsafe (x86)
-> `=3D <boolean>`
-
-> Default: `false`
-
-Force boot on potentially unsafe systems=2E By default Xen will refuse
-to boot on systems with the following errata:
-
-* AMD Erratum 121=2E Processors with this erratum are subject to a guest
-  triggerable Denial of Service=2E Override only if you trust all of
-  your PV guests=2E
-
 ### altp2m (Intel)
 > `=3D <boolean>`
=20
diff --git a/xen/arch/x86/cpu/amd=2Ec b/xen/arch/x86/cpu/amd=2Ec
index 712734a6e7=2E=2Ef1f4a25754 100644
--- a/xen/arch/x86/cpu/amd=2Ec
+++ b/xen/arch/x86/cpu/amd=2Ec
@@ -20,10 +20,6 @@
=20
 #include "cpu=2Eh"
=20
-/* 1 =3D allow, 0 =3D don't allow guest creation, -1 =3D don't allow boot=
 */
-int8_t __read_mostly opt_allow_unsafe;
-boolean_param("allow_unsafe", opt_allow_unsafe);
-
 /* Signal whether the ACPI C1E quirk is required=2E */
 bool __read_mostly amd_acpi_c1e_quirk;
 bool __ro_after_init amd_legacy_ssbd;
@@ -1205,19 +1201,12 @@ static void cf_check init_amd(struct cpuinfo_x86 *=
c)
 	if (c->family =3D=3D 0x10)
 		__clear_bit(X86_FEATURE_MONITOR, c->x86_capability);
=20
-	if (!cpu_has_amd_erratum(c, AMD_ERRATUM_121))
-		opt_allow_unsafe =3D 1;
-	else if (opt_allow_unsafe < 0)
-		panic("Xen will not boot on this CPU for security reasons"
-		      "Pass \"allow_unsafe\" if you're trusting all your"
-		      " (PV) guest kernels=2E\n");
-	else if (!opt_allow_unsafe && c =3D=3D &boot_cpu_data)
+	if (cpu_has_amd_erratum(c, AMD_ERRATUM_121))
+	{
 		printk(KERN_WARNING
-		       "*** Xen will not allow creation of DomU-s on"
-		       " this CPU for security reasons=2E ***\n"
-		       KERN_WARNING
-		       "*** Pass \"allow_unsafe\" if you're trusting"
-		       " all your (PV) guest kernels=2E ***\n");
+			   "*** This CPU is affected with erratum 121"
+			   " 64-bits PV guests are able to cause a DoS (XSA-9) ***\n");
+	}
=20
 	if (c->family =3D=3D 0x16 && c->model <=3D 0xf) {
 		if (c =3D=3D &boot_cpu_data) {
diff --git a/xen/arch/x86/domain=2Ec b/xen/arch/x86/domain=2Ec
index 1d458f1372=2E=2E1d3b99cd50 100644
--- a/xen/arch/x86/domain=2Ec
+++ b/xen/arch/x86/domain=2Ec
@@ -833,20 +833,6 @@ int arch_domain_create(struct domain *d,
=20
     spin_lock_init(&d->arch=2Ee820_lock);
=20
-    if ( d->domain_id && cpu_has_amd_erratum(&boot_cpu_data, AMD_ERRATUM_=
121) )
-    {
-        if ( !opt_allow_unsafe )
-        {
-            printk(XENLOG_G_ERR
-                   "%pd: will not create domU on this CPU for security re=
asons\n",
-                   d);
-            return -EPERM;
-        }
-        printk(XENLOG_G_WARNING
-               "%pd: may compromise security on this CPU\n",
-               d);
-    }
-
     emflags =3D config->arch=2Eemulation_flags;
=20
     if ( is_hardware_domain(d) && is_pv_domain(d) )
diff --git a/xen/arch/x86/include/asm/amd=2Eh b/xen/arch/x86/include/asm/a=
md=2Eh
index d21df0741a=2E=2Ed8d9cd175e 100644
--- a/xen/arch/x86/include/asm/amd=2Eh
+++ b/xen/arch/x86/include/asm/amd=2Eh
@@ -74,8 +74,6 @@
 struct cpuinfo_x86;
 int cpu_has_amd_erratum(const struct cpuinfo_x86 *cpu, int osvw_id, =2E=
=2E=2E);
=20
-extern int8_t opt_allow_unsafe;
-
 void fam10h_check_enable_mmcfg(void);
 void check_enable_amd_mmconf_dmi(void);
=20
--=20
2=2E52=2E0



-- 
Teddy Astie | Vates XCP-ng Developer

XCP-ng & Xen Orchestra - Vates s=
olutions

web: https://vates=2Etech
---=Part.25f9.4f43d121d0e65c6c.19db6223500.165d7aa55d327c7c=---


From xen-devel-bounces@lists.xenproject.org Wed Apr 22 19:42:55 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 22 Apr 2026 19:42:55 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1291076.1570393 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wFdSz-0003tD-Nh; Wed, 22 Apr 2026 19:42:33 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1291076.1570393; Wed, 22 Apr 2026 19:42: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 1wFdSz-0003t6-KW; Wed, 22 Apr 2026 19:42:33 +0000
Received: by outflank-mailman (input) for mailman id 1291076;
 Wed, 22 Apr 2026 19:42:32 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <olekstysh@gmail.com>) id 1wFdSy-0003t0-S2
 for xen-devel@lists.xenproject.org; Wed, 22 Apr 2026 19:42:32 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wFdSx-008fMw-R0
 for xen-devel@lists.xenproject.org; Wed, 22 Apr 2026 21:42:31 +0200
Received: from [10.42.69.12] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <olekstysh@gmail.com>)
 id 69e9245c-2eae-0a2a0a5409dd-0a2a450ce53e-32
 for <xen-devel@lists.xenproject.org>; Wed, 22 Apr 2026 21:42:31 +0200
Received: from [209.85.128.43] (helo=mail-wm1-f43.google.com)
 by tlsNG-d25034.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.1)
 (envelope-from <olekstysh@gmail.com>)
 id 69e924a7-62f1-0a2a450c0019-d155802bb91b-3
 for <xen-devel@lists.xenproject.org>; Wed, 22 Apr 2026 21:42:31 +0200
Received: by mail-wm1-f43.google.com with SMTP id
 5b1f17b1804b1-48374014a77so76527205e9.3
 for <xen-devel@lists.xenproject.org>; Wed, 22 Apr 2026 12:42:31 -0700 (PDT)
Received: from [192.168.0.112] ([91.123.151.42])
 by smtp.gmail.com with ESMTPSA id
 5b1f17b1804b1-4891df9e50asm209401935e9.0.2026.04.22.12.42.29
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Wed, 22 Apr 2026 12:42:30 -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=20251104 header.d=gmail.com header.i="@gmail.com" header.h="Content-Transfer-Encoding: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=20251104; t=1776886951; x=1777491751; darn=lists.xenproject.org;
        h=content-transfer-encoding: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;
        bh=DdOI7i9//vMAJ++YhZ6iQpMcPC2SjZ3th+2CW8i/nvU=;
        b=S1ia/3ZzXuBXlr/DH2PdU4SC7LbITSuKyGzwfeJgaz2EunDewIQL0CU+9fb46jxd5z
         f2mBgCD2rNttrTn4Ay73QDL947lq59f60dLHwH3Jml7T7PxZCZEXH9KAEqhDUS17pQXo
         0Q0Abm2TCpnuw4CFuv9gQcoS8gPEXAq9amhqWGMULazhyzfAmTx6vQBnSjgVM78Q3mNK
         G/IQ9woSc16yGtx4lQr5Ufpgk0wDclMl6I5JjuONIu1G4Jnyk+as2tlWMfO5GFUC9+Dj
         YbD09udR9gIutiGHM21K8HLov0ngnvOMShEDWnKOAa25mv5ls/lUr5/jLtmDfTn24xb7
         vCLA==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20251104; t=1776886951; x=1777491751;
        h=content-transfer-encoding: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;
        bh=DdOI7i9//vMAJ++YhZ6iQpMcPC2SjZ3th+2CW8i/nvU=;
        b=D4RfTCokDZhgu6+JgbQGDB+t3IdgewhO8Ftr75uWkGJmgFjGgTWXErj51TfA8yPtNz
         ipzxuSELjWxaoTEXZWUIwsWDCCK3OG9KC9x/HXD1AvFk3+3tsuXSWCq8QYci++HFyLZx
         niOaEIio/txGfy0p/sXMJSYn4fX5C3ZKBxVWZxNRrTNo9/+mwq8Mbg6tWistTBBmXsLz
         kbEfLkuGpMuHN6vpz9McV2Dh8zFLujtaOMXJ3BfkuJX5VWm468DjpeB6l1L6jFro43B3
         NM4WxUa/huLRE1SMwd5ap/8DvbPnLFcJSrpITzFyfNeUBkRMN+Edhg12LF+r7UOJiDf6
         VLTQ==
X-Forwarded-Encrypted: i=1; AFNElJ9Eie3KbMM9PPEzHLt2QIF8PPepD3m0QQcHpvKZb/qEcsqYS+zzH8kqGbayDovxaA43HS9oNR7PE/U=@lists.xenproject.org
X-Gm-Message-State: AOJu0Yy75YMQTTfaNuTnLWKR4a8HcV43pimEY6vKcpexFkrU/Y/ka+C4
	Ukg70slsiCJgBXYxG2wQWcKeWOiyo+1O6GxT1siBsbxXAKQGSL5uJDQb
X-Gm-Gg: AeBDiesYtV1JPG3ORsiuzB8EQz0niWccp8KOCpSMMCLhabWIiOhds+n42WDnwamliOz
	WU0HJawy9k7PIq8bCEJYzKv3Utzrexks3HVJoblwrWZY5tmS1bt9IzQSC2z5oK2lk5ucCE51j+C
	UAjInn686zRHmadlIx8g8FcrBiz/goQH1l94FoEjFUiVOHp+ZKWoP01/bzeFJbvWIx0ObydSwub
	LPmffxieGCMSeljthDl1MgFxrzZa/pnowuV7aQrc1+TUQbIpGPVyfWRwJ1nRkSrAYloCNfCdAMe
	cjYXTCEangCaTwF4K5ZXMYlJr6J3LkhTpUP6J15Edruq1b52FbPorQEUTdWj8uyoRElJKXiGijZ
	2OewUejDvc3omegpCPDXr+f3oEe9Wp7TAdCssLidvlbEhrru7+WBWnVlmgJ+rogrl9DWQ8JuI1V
	3d+vBaDjwV1hGJSx5led2uB+JFcw62fgbrM3PhEon/49O2zEg=
X-Received: by 2002:a05:600c:8483:b0:488:7ff6:1f75 with SMTP id 5b1f17b1804b1-488fb782d91mr357959195e9.21.1776886951015;
        Wed, 22 Apr 2026 12:42:31 -0700 (PDT)
Message-ID: <5357f1a2-8585-4e39-adec-962b365c176f@gmail.com>
Date: Wed, 22 Apr 2026 22:42:28 +0300
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH v3 3/4] xen/drivers/char/cadence-uart: fix IRQ
 registration failure propagation
To: Oleksii Moisieiev <Oleksii_Moisieiev@epam.com>,
 "xen-devel@lists.xenproject.org" <xen-devel@lists.xenproject.org>
Cc: Bertrand Marquis <bertrand.marquis@arm.com>, Julien Grall
 <julien@xen.org>, Michal Orzel <michal.orzel@amd.com>,
 Stefano Stabellini <sstabellini@kernel.org>,
 Volodymyr Babchuk <Volodymyr_Babchuk@epam.com>
References: <cover.1776850201.git.oleksii_moisieiev@epam.com>
 <fc65ea2c9dcc7c3bc632c8c1a9f14eeb5de6d9b9.1776850201.git.oleksii_moisieiev@epam.com>
Content-Language: en-US
From: Oleksandr Tyshchenko <olekstysh@gmail.com>
In-Reply-To: <fc65ea2c9dcc7c3bc632c8c1a9f14eeb5de6d9b9.1776850201.git.oleksii_moisieiev@epam.com>
Content-Type: text/plain; charset=UTF-8; format=flowed
Content-Transfer-Encoding: 7bit
X-purgate-ID: tlsNG-d25034/1776886951-6D56FCF5-86CEAA84/0/0
X-purgate-type: clean
X-purgate-size: 3035



On 4/22/26 12:33, Oleksii Moisieiev wrote:

Hello Oleksii

> In cuart_init_postirq(), two code paths could reach the
> interrupt-enable write to IER without a handler being registered:
> 
> - When no valid IRQ number was provided (uart->irq <= 0), the original
>    positive-condition guard (if uart->irq > 0) skipped the irqaction
>    setup but still fell through to the IER write, enabling the receive
>    data interrupt with no handler installed.
> 
> - When setup_irq() returned an error, only an error message was
>    printed and execution continued to the IER write, arming the
>    receive hardware interrupt line with no handler to service it. On
>    platforms where the GIC receives this asserted line, the result is
>    either repeated spurious-interrupt warnings or an unhandled
>    interrupt fault.
> 
> Restructure cuart_init_postirq() to use early returns in both error
> paths.
> 
> Signed-off-by: Oleksii Moisieiev <oleksii_moisieiev@epam.com>
> ---
> 
> Changes in v3:
> - clear pending error interrupts before setup_irq call for cadence uart
> - change uart->irq <= 0 to uart->irq == 0 since irq is unsigned

Reviewed-by: Oleksandr Tyshchenko <oleksandr_tyshchenko@epam.com>
with NIT (could probably be fixed on commit) ...

> 
>   xen/drivers/char/cadence-uart.c | 22 ++++++++++++++--------
>   1 file changed, 14 insertions(+), 8 deletions(-)
> 
> diff --git a/xen/drivers/char/cadence-uart.c b/xen/drivers/char/cadence-uart.c
> index b2f379833f..8961d39de1 100644
> --- a/xen/drivers/char/cadence-uart.c
> +++ b/xen/drivers/char/cadence-uart.c
> @@ -72,19 +72,25 @@ static void __init cuart_init_postirq(struct serial_port *port)
>       struct cuart *uart = port->uart;
>       int rc;
>   
> -    if ( uart->irq > 0 )
> -    {
> -        uart->irqaction.handler = cuart_interrupt;
> -        uart->irqaction.name    = "cadence-uart";
> -        uart->irqaction.dev_id  = port;
> -        if ( (rc = setup_irq(uart->irq, 0, &uart->irqaction)) != 0 )
> -            printk("ERROR: Failed to allocate cadence-uart IRQ %d\n", uart->irq);
> -    }
> +    /* Don't unmask interrupts if no valid irq was provided */
> +    if ( uart->irq == 0 )
> +        return;
> +
> +    uart->irqaction.handler = cuart_interrupt;
> +    uart->irqaction.name    = "cadence-uart";
> +    uart->irqaction.dev_id  = port;
>   
>       /* Clear pending error interrupts */
>       cuart_write(uart, R_UART_RTRIG, 1);
>       cuart_write(uart, R_UART_CISR, ~0);
>   
> +    if ( (rc = setup_irq(uart->irq, 0, &uart->irqaction)) != 0 )
> +    {
> +        printk("ERROR: Failed to allocate cadence-uart IRQ %d\n", uart->irq);

    ... the format specifier should be %u instead of %d since the value 
is unsigned.

> +        /* Do not unmask interrupts if irq handler wasn't set */
> +        return;
> +    }
> +
>       /* Unmask interrupts */
>       cuart_write(uart, R_UART_IDR, ~0);
>       cuart_write(uart, R_UART_IER, UART_SR_INTR_RTRIG);



From xen-devel-bounces@lists.xenproject.org Wed Apr 22 20:55:02 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 22 Apr 2026 20:55:02 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1291140.1570401 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wFear-0006SS-Tn; Wed, 22 Apr 2026 20:54:45 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1291140.1570401; Wed, 22 Apr 2026 20:54: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 1wFear-0006SL-R2; Wed, 22 Apr 2026 20:54:45 +0000
Received: by outflank-mailman (input) for mailman id 1291140;
 Wed, 22 Apr 2026 20:54:44 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <david.laight.linux@gmail.com>) id 1wFeaq-0006Rw-Cm
 for xen-devel@lists.xenproject.org; Wed, 22 Apr 2026 20:54:44 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wFeap-00H3E8-Pf
 for xen-devel@lists.xenproject.org; Wed, 22 Apr 2026 22:54:43 +0200
Received: from [10.42.69.1] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <david.laight.linux@gmail.com>)
 id 69e93593-e002-0a2a0a5209dd-0a2a45018b5e-0
 for <xen-devel@lists.xenproject.org>; Wed, 22 Apr 2026 22:54:43 +0200
Received: from [209.85.221.51] (helo=mail-wr1-f51.google.com)
 by tlsNG-d62444.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.1)
 (envelope-from <david.laight.linux@gmail.com>)
 id 69e93593-c1f2-0a2a45010019-d155dd33c161-3
 for <xen-devel@lists.xenproject.org>; Wed, 22 Apr 2026 22:54:43 +0200
Received: by mail-wr1-f51.google.com with SMTP id
 ffacd0b85a97d-43eb05b1875so3504329f8f.3
 for <xen-devel@lists.xenproject.org>; Wed, 22 Apr 2026 13:54:43 -0700 (PDT)
Received: from pumpkin (82-69-66-36.dsl.in-addr.zen.co.uk. [82.69.66.36])
 by smtp.gmail.com with ESMTPSA id
 ffacd0b85a97d-43fe4e44f69sm50195066f8f.25.2026.04.22.13.54.42
 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
 Wed, 22 Apr 2026 13:54:42 -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=20251104 header.d=gmail.com header.i="@gmail.com" header.h="Content-Transfer-Encoding:MIME-Version:References:In-Reply-To:Message-ID:Subject:Cc:To:From:Date"
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=gmail.com; s=20251104; t=1776891283; x=1777496083; darn=lists.xenproject.org;
        h=content-transfer-encoding:mime-version:references:in-reply-to
         :message-id:subject:cc:to:from:date:from:to:cc:subject:date
         :message-id:reply-to;
        bh=BdbNxflSk7ifnlaOODr8r5GA8Z4c6VemJtceNGAv6Fw=;
        b=Vo7XX16ejjA59pvPiQIr/Ki1FhSQxdorVyASfUHVAC/JNXNXyGPSOQIo49jk/kn+Ph
         m0nbR0KVGeOL8JHQiIaTynOKaV5IMkc1v7BIqP4QSHNOzIy4EqWtk5JGL4K/ITzAFbUe
         EmOK5YB1joRFj+U7hoBBEzFkOpfIzCxYs2ZsOkiRKv2iTH8G23CbamXiyx1TEhln9aEY
         5EgKsL3HqesdLkt/8mv7me+NvzNEDuhxnreyXpHpthXIZS6aA/3QjDoUZ2iN3Q9/B2D0
         4mBsroAcn7ALhwTigOiPZDPcxZRLsPOyJVqQ+nJNXFUvk8Kc4GNsqETTjR9dBzPrSWIr
         C+Jg==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20251104; t=1776891283; x=1777496083;
        h=content-transfer-encoding:mime-version:references:in-reply-to
         :message-id:subject:cc:to:from:date:x-gm-gg:x-gm-message-state:from
         :to:cc:subject:date:message-id:reply-to;
        bh=BdbNxflSk7ifnlaOODr8r5GA8Z4c6VemJtceNGAv6Fw=;
        b=qRE3KIkQ6BrbHM+DXriADscgVO1N3ZeEZ5U5Ypz5xEDtqUNP9IOMNfhWTluNd/64cm
         ZCLVwmybuwCwP4eGzlQ4rW8f1l37c9QZ13r5hg7F/7J/AhgzwrMiAHSKR/qhQPUfUVgy
         /LMi+b2pfa4GiO/8LJlpvu7IkvL8yswXnowZhKPBAKrdrF3rTKC14uY32V6my+tqqayy
         YQdv6B2gFZk9qDyo/tJ0XzNRUHGuccMZUQaBQcVRbz0ktfyckfS1RjZ7jsBrnOr+7YY8
         MEbxRtopjaPJ/WSzhjHZdo0UAnolhS3roNlgskVGghg9MGyKSbR8kyD5zDOJeXgEidpX
         c3Og==
X-Forwarded-Encrypted: i=1; AFNElJ9cnMD020qsAe+ffLyiTGGRcNw3H08+djx7/NNlbtfr7QlL8+v5lqm+MQyUO/5Zyf2QNGnzbqvaWT0=@lists.xenproject.org
X-Gm-Message-State: AOJu0Yza2HPP20v23UkjpLZ52+l8AbH1HQ37pwpK+43MWCUnsF3oDzsu
	QSIQVD8cSxC+u+7jr9Pj9KFNO4ChrGWRZ8WB0N4aYpLtJJIyHlwWbR8P
X-Gm-Gg: AeBDieuSnWGzr8GjH3sLs2nqPqgq29QmZJbLJlt6LjjdHeILaERM/XHcJwx+5hoABe/
	rvkXh4TPzwZstgw7lfBRB2mGgcfN1+hcYY7CorT2LasB70hJ0Y0lk5qzzkLlioyM/8hGgbEwJ+R
	Vsu8DR3O8l7YozeqAFOuMFiXO+ihlRClavd2cSWmRUzMeJsgj2yu0dC8af9zAM2OVTf/Jb2UX2g
	V86o87cQPGGp7xmzsV9FeqvgcR1R2+oRaIKODY7VYQKsH68WAx9gcfH552V6EXPcXfmBIHNAqMY
	V8MoZqNMLu86WwTW7U/FYxckEBUWo2aw0RL3/+OsDqBgkk6iWcQLiWZouzpNxb0xclGtHBlZ3kP
	gcnQVPVUqYDG60ei2IWmVdiUmA9TP12GYb18SRAIHAfV1v9uoySzFclxPziXwGSNukaUpvxt2JY
	QjdWfqa8LWvHFK4bTgsXcspsCk5F1pY6yNNbNkbSsUAXdXvBEdyULac8x7g1DTM59rxb3KAcKYW
	LM=
X-Received: by 2002:a05:6000:4203:b0:43d:242:b9bb with SMTP id ffacd0b85a97d-43fe3dc5c80mr36772655f8f.18.1776891283082;
        Wed, 22 Apr 2026 13:54:43 -0700 (PDT)
Date: Wed, 22 Apr 2026 21:54:41 +0100
From: David Laight <david.laight.linux@gmail.com>
To: Mauricio Faria de Oliveira <mfo@igalia.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>, Juergen Gross
 <jgross@suse.com>, Alexey Dobriyan <adobriyan@gmail.com>, Boris Ostrovsky
 <boris.ostrovsky@oracle.com>, kernel-dev@igalia.com,
 linux-kernel@vger.kernel.org, xen-devel@lists.xenproject.org
Subject: Re: [PATCH 1/3] x86/asm, x86/boot: Expose inline memcmp
Message-ID: <20260422215441.4204c142@pumpkin>
In-Reply-To: <20260422-pvh-kasan-inline-v1-1-7e6194344c92@igalia.com>
References: <20260422-pvh-kasan-inline-v1-0-7e6194344c92@igalia.com>
	<20260422-pvh-kasan-inline-v1-1-7e6194344c92@igalia.com>
X-Mailer: Claws Mail 4.1.1 (GTK 3.24.38; arm-unknown-linux-gnueabihf)
MIME-Version: 1.0
Content-Type: text/plain; charset=US-ASCII
Content-Transfer-Encoding: 7bit
X-purgate-ID: tlsNG-d62444/1776891283-BFC74FF4-37BD296C/0/0
X-purgate-type: clean
X-purgate-size: 2483

On Wed, 22 Apr 2026 17:07:45 -0300
Mauricio Faria de Oliveira <mfo@igalia.com> wrote:

> Move the inline memcmp function, currently only available to boot code
> (boot/string.c), into the header with similar inline string functions
> (include/asm/string.h) so it may be reused.

This needs a comment/warning that it is incompatible with normal memcmp()
because it only returns 0/1 not -1/0/1.
Most callers don't care.

	David


> 
> Add a _SETUP guard in string.h so not to include the 32/64-bit specific
> string headers in boot/ code (16-bit, real mode) and avoid build errors.
> 
> Signed-off-by: Mauricio Faria de Oliveira <mfo@igalia.com>
> ---
>  arch/x86/boot/string.c        |  6 ++----
>  arch/x86/include/asm/string.h | 11 +++++++++++
>  2 files changed, 13 insertions(+), 4 deletions(-)
> 
> diff --git a/arch/x86/boot/string.c b/arch/x86/boot/string.c
> index b25c6a9303b7314d5caf5c9306239811705294fe..bbee78637b349e42e9281d8df50d89d48f4490b9 100644
> --- a/arch/x86/boot/string.c
> +++ b/arch/x86/boot/string.c
> @@ -15,6 +15,7 @@
>  #include <linux/errno.h>
>  #include <linux/limits.h>
>  #include <asm/asm.h>
> +#include <asm/string.h>
>  #include "ctype.h"
>  #include "string.h"
>  
> @@ -31,10 +32,7 @@
>  
>  int memcmp(const void *s1, const void *s2, size_t len)
>  {
> -	bool diff;
> -	asm("repe cmpsb"
> -	    : "=@ccnz" (diff), "+D" (s1), "+S" (s2), "+c" (len));
> -	return diff;
> +	return __inline_memcmp(s1, s2, len);
>  }
>  
>  /*
> diff --git a/arch/x86/include/asm/string.h b/arch/x86/include/asm/string.h
> index 9cb5aae7fba9ffcf0f5af8f939d30467750ccaa9..736a6f6a31f0a68281b4f17415aba0fcd95dc228 100644
> --- a/arch/x86/include/asm/string.h
> +++ b/arch/x86/include/asm/string.h
> @@ -2,11 +2,13 @@
>  #ifndef _ASM_X86_STRING_H
>  #define _ASM_X86_STRING_H
>  
> +#ifndef _SETUP
>  #ifdef CONFIG_X86_32
>  # include <asm/string_32.h>
>  #else
>  # include <asm/string_64.h>
>  #endif
> +#endif
>  
>  static __always_inline void *__inline_memcpy(void *to, const void *from, size_t len)
>  {
> @@ -29,4 +31,13 @@ static __always_inline void *__inline_memset(void *s, int v, size_t n)
>  	return ret;
>  }
>  
> +static __always_inline int __inline_memcmp(const void *s1, const void *s2, size_t len)
> +{
> +	bool diff;
> +
> +	asm("repe cmpsb"
> +	    : "=@ccnz" (diff), "+D" (s1), "+S" (s2), "+c" (len));
> +	return diff;
> +}
> +
>  #endif /* _ASM_X86_STRING_H */
> 



From xen-devel-bounces@lists.xenproject.org Wed Apr 22 22:02:57 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 22 Apr 2026 22:02:57 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1291219.1570410 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wFfec-0000DM-Ja; Wed, 22 Apr 2026 22:02:42 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1291219.1570410; Wed, 22 Apr 2026 22:02: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 1wFfec-0000DF-H2; Wed, 22 Apr 2026 22:02:42 +0000
Received: by outflank-mailman (input) for mailman id 1291219;
 Wed, 22 Apr 2026 22:02:41 +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 1wFfeb-0000D9-DA
 for xen-devel@lists.xenproject.org; Wed, 22 Apr 2026 22:02:41 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wFfea-00CMMP-QA
 for xen-devel@lists.xenproject.org; Thu, 23 Apr 2026 00:02:40 +0200
Received: from [10.42.69.12] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <sstabellini@kernel.org>)
 id 69e9456b-2eae-0a2a0a5409dd-0a2a450ca3b6-18
 for <xen-devel@lists.xenproject.org>; Thu, 23 Apr 2026 00:02:40 +0200
Received: from [172.105.4.254] (helo=tor.source.kernel.org)
 by tlsNG-d25034.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.1)
 (envelope-from <sstabellini@kernel.org>)
 id 69e9457f-62f1-0a2a450c0019-ac6904fe9f98-3
 for <xen-devel@lists.xenproject.org>; Thu, 23 Apr 2026 00:02:40 +0200
Received: from smtp.kernel.org (transwarp.subspace.kernel.org [100.75.92.58])
 by tor.source.kernel.org (Postfix) with ESMTP id 14C2461334;
 Wed, 22 Apr 2026 22:02:39 +0000 (UTC)
Received: by smtp.kernel.org (Postfix) with ESMTPSA id 84666C19425;
 Wed, 22 Apr 2026 22:02: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=k20201202 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/simple; d=kernel.org;
	s=k20201202; t=1776895358;
	bh=eVqQbhtcmM6jxGXcwZAWX+7cU7dFEViGdbj3XrFpMfI=;
	h=Date:From:To:cc:Subject:In-Reply-To:References:From;
	b=KXPm/YAkF+EWCndYuDOVyTtmRkH99JTl8+MfrluMxcDpLi/LfTZ0QN7g0xHO7hvda
	 +CMXRUvclh4UnQG+UGAyeVPSuriNPkuEETGHAQtdcJnk5Om/b4n5S75NtGDzSPJj0y
	 1iAydKabdDoF+BNPsunrHPoV81RDff+OCQqe9bzmnJyx2lLW8Rc0NFIxE1UwTNX5qi
	 MGI3IpzG0oW8X0HlulQB+2U4OvC3m3ErzLWecagh/VUSKAnJMoiy8oPZHyS1AtThZh
	 EorK23wz+xUOgI42pZfVlPFBhqb9vMD3MJy2yMBmrVPGbJ9EURbVh1DbYOYMASHvEB
	 NPTENeL0uLgXw==
Date: Wed, 22 Apr 2026 15:02:37 -0700 (PDT)
From: Stefano Stabellini <sstabellini@kernel.org>
X-X-Sender: sstabellini@ubuntu-linux-20-04-desktop
To: "Edgar E. Iglesias" <edgar.iglesias@amd.com>
cc: xen-devel@lists.xenproject.org, sstabellini@kernel.org, julien@xen.org, 
    bertrand.marquis@arm.com, michal.orzel@amd.com, Volodymyr_Babchuk@epam.com
Subject: Re: [PATCH v1 1/1] arm64/insn: Avoid undefined behaviour in branch
 offset decode
In-Reply-To: <20260422164506.2234095-2-edgar.iglesias@amd.com>
Message-ID: <alpine.DEB.2.22.394.2604221502320.2712345@ubuntu-linux-20-04-desktop>
References: <20260422164506.2234095-1-edgar.iglesias@amd.com> <20260422164506.2234095-2-edgar.iglesias@amd.com>
User-Agent: Alpine 2.22 (DEB 394 2020-01-19)
MIME-Version: 1.0
Content-Type: text/plain; charset=US-ASCII
X-purgate-ID: tlsNG-d25034/1776895360-F4C07CF5-2527E894/0/0
X-purgate-type: clean
X-purgate-size: 1717

On Wed, 22 Apr 2026, Edgar E. Iglesias wrote:
> Branch offset decoding sign-extends the immediate by shifting it left into
> bit 31 and back. Perform the left shift in uint32_t and cast to int32_t
> only for the final right shift to avoid UBSAN failures on negative offsets.
> 
> Fixes: 6dbf3f0e3074 ("xen/arm: arm64: Add helpers to decode and encode branch instructions")
> Signed-off-by: Edgar E. Iglesias <edgar.iglesias@amd.com>

Reviewed-by: Stefano Stabellini <sstabellini@kernel.org>

> ---
>  xen/arch/arm/arm64/insn.c | 8 ++++----
>  1 file changed, 4 insertions(+), 4 deletions(-)
> 
> diff --git a/xen/arch/arm/arm64/insn.c b/xen/arch/arm/arm64/insn.c
> index 81f7914610..6b97a84ba7 100644
> --- a/xen/arch/arm/arm64/insn.c
> +++ b/xen/arch/arm/arm64/insn.c
> @@ -225,22 +225,22 @@ u32 __kprobes aarch64_insn_gen_nop(void)
>   */
>  int32_t aarch64_get_branch_offset(uint32_t insn)
>  {
> -	int32_t imm;
> +	uint32_t imm;
>  
>  	if (aarch64_insn_is_b(insn) || aarch64_insn_is_bl(insn)) {
>  		imm = aarch64_insn_decode_immediate(AARCH64_INSN_IMM_26, insn);
> -		return (imm << 6) >> 4;
> +		return (int32_t)(imm << 6) >> 4;
>  	}
>  
>  	if (aarch64_insn_is_cbz(insn) || aarch64_insn_is_cbnz(insn) ||
>  	    aarch64_insn_is_bcond(insn)) {
>  		imm = aarch64_insn_decode_immediate(AARCH64_INSN_IMM_19, insn);
> -		return (imm << 13) >> 11;
> +		return (int32_t)(imm << 13) >> 11;
>  	}
>  
>  	if (aarch64_insn_is_tbz(insn) || aarch64_insn_is_tbnz(insn)) {
>  		imm = aarch64_insn_decode_immediate(AARCH64_INSN_IMM_14, insn);
> -		return (imm << 18) >> 16;
> +		return (int32_t)(imm << 18) >> 16;
>  	}
>  
>  	/* Unhandled instruction */
> -- 
> 2.43.0
> 


From xen-devel-bounces@lists.xenproject.org Thu Apr 23 04:57:08 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 23 Apr 2026 04:57:08 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1291541.1570420 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wFm7P-000217-Ov; Thu, 23 Apr 2026 04:56:51 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1291541.1570420; Thu, 23 Apr 2026 04:56: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 1wFm7P-00020x-K9; Thu, 23 Apr 2026 04:56:51 +0000
Received: by outflank-mailman (input) for mailman id 1291541;
 Thu, 23 Apr 2026 04:56:50 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <xakep.amatop@gmail.com>) id 1wFm7O-000206-8R
 for xen-devel@lists.xenproject.org; Thu, 23 Apr 2026 04:56:50 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wFm7M-009Cya-KX
 for xen-devel@lists.xenproject.org; Thu, 23 Apr 2026 06:56:48 +0200
Received: from [10.42.69.12] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <xakep.amatop@gmail.com>)
 id 69e9a689-2eae-0a2a0a5409dd-0a2a450ccf8c-6
 for <xen-devel@lists.xenproject.org>; Thu, 23 Apr 2026 06:56:48 +0200
Received: from [209.85.208.170] (helo=mail-lj1-f170.google.com)
 by tlsNG-d25034.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.1)
 (envelope-from <xakep.amatop@gmail.com>)
 id 69e9a690-62f1-0a2a450c0019-d155d0aad008-3
 for <xen-devel@lists.xenproject.org>; Thu, 23 Apr 2026 06:56:48 +0200
Received: by mail-lj1-f170.google.com with SMTP id
 38308e7fff4ca-38e7c3a2deaso40081661fa.2
 for <xen-devel@lists.xenproject.org>; Wed, 22 Apr 2026 21:56:48 -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=20251104 header.d=gmail.com header.i="@gmail.com" header.h="Content-Transfer-Encoding:Cc:To:Subject:Message-ID:Date:From:In-Reply-To:References:MIME-Version"
ARC-Seal: i=1; a=rsa-sha256; t=1776920208; cv=none;
        d=google.com; s=arc-20240605;
        b=dWOFG4uy9fQ/SwOdmUqnDoX8mPPhy/656U/I2TUHwNwAzXkEfUfaChMw7prsRFg3hr
         B6aNsm++jFezjDmd6YpK4TO+Y1jLLZlTtnU6vteGqHlAFypGamr5ECHmSDoGqhgUIIEH
         vE6wJcWQksd24rlqi51wE6mbeqr7mLAOKIPkvVt3ei60DU+JwWXr5ieNA3rC6KQDANEx
         ZkisEON1Tucu7/eteD2AK9te9eiwyDUvAfK0460/6LaoqcZRiTLilEmnJ96J3R3B6TFg
         7TSmk4q1y0zQBamI92RbkncNCoew6X3HPS5/I6YaTPt3YIFn+OF8CJsz/hAblEWP2TCi
         IyMQ==
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20240605;
        h=content-transfer-encoding:cc:to:subject:message-id:date:from
         :in-reply-to:references:mime-version:dkim-signature;
        bh=5KwT/fUkg/49QeXPZ+rNcQAo69ZuuG32yU8uuats7eQ=;
        fh=uAzoxIkY79cy0zES8IqO07ArU7DBG3jlr2bg4XRVkR0=;
        b=EVX5+wCfPx5blnRV/+HMruGweTJpKbFBSvPL9Y9+KddOHVyepbObfi7wrGfwUKwdmD
         h5pXRY4e0SQrR6C225cfGGUS48C5tuqtRl50IzPuIem45OL24KxOjA50b/Yt5eK7NxU/
         52bInPKQj9ZL3HTuLSzK+GHiYD9aqVm4nb+uLGY4NVXnEUI6DDbwfWh0eDjmM5sX3PLd
         yrpXFvyuXuwNeQoMh2qJP6XLoFF40C2dnhJI7yQDi79GG0f7tm19G2sadsLT1kDAFxKA
         s7AjYwI+7bNhqratPTeBHOnkCJowynoh7NYz7Sa14nzitjjfNvZsPDek60iXKCyhsMlS
         CbsA==;
        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=20251104; t=1776920208; x=1777525008; darn=lists.xenproject.org;
        h=content-transfer-encoding:cc:to:subject:message-id:date:from
         :in-reply-to:references:mime-version:from:to:cc:subject:date
         :message-id:reply-to;
        bh=5KwT/fUkg/49QeXPZ+rNcQAo69ZuuG32yU8uuats7eQ=;
        b=oopAz4UjlWY13JyrxM0ZLRVUgdX0J8mChqxZHbT3xuO1UGuQkQtc+vLcMhoHtC7MOF
         kbD/l9kDz3xKONeJiQe7ORkOTXr3T2k2OejYfbFvxhDTouXmlnxDime+3djBjil0zF1a
         Y84n7fOMhujY09c868bG9CMtWIqAJqjXGl1ZDwbV3aD0JEE/vqbdcpOk/WICiT4i807e
         MhMZrgcLU/dynDeOcxJ6Q42opMW5Cn8VGUOnytbnu0WsieTKYu0pP6IoSPcS8jE15mqd
         A32BQhbUN+ZCsO7ovssArK+rXdath5jzCYeMoEc2RZtYqg/AhpLbe5jOp5pPyQ0DndQE
         tq2A==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20251104; t=1776920208; x=1777525008;
        h=content-transfer-encoding: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;
        bh=5KwT/fUkg/49QeXPZ+rNcQAo69ZuuG32yU8uuats7eQ=;
        b=BHom9gP2fzDOmhAUaKs+0ZqCw9a6+R0oer+YdXeuhcFxEkSnmt/Hk48j6Uk1Fbc4si
         oJ+VyGT+N03WT/tegqNBfW9Eb2DSMaoXSgwutK+2kKq5b6i08Lb4YM+0ixZOcrXDwxgU
         +rbysgqcvbid91tNXv473mzIZhwXsiMHmRkQI9vs1WZ81HpOeRmfAIXLTySp/eTCcuCx
         G2B/m0iuHhxqqimyQywWdaz51hITCPidr89aKk4AZdazYbAsQBzHF3PNJ53rg3XnVZP9
         WcDR//FOco9w/MMRWKE9bZAw3pW4btW97eKHWAkBosN2nvx8oM/zSQWea+3Y5o3z9gjc
         Yfrw==
X-Gm-Message-State: AOJu0Yz2dZdy1UFq8amouKeB1SkChJlpqe/nfouNtUZ7sN+a2jlkAcSG
	Qy2CMRRkXx88u72FVVzi7q+oAzOdpmd9fGYjDE5XSHF8FS+ev0L31P3Cpeq36QdAymORV5EhC8K
	AUiW2/QBbT84O7QnIhRYWDnJIck7oVTI=
X-Gm-Gg: AeBDieuchA6mMK3sR5leqJafX8nSNs836PbM0hSVu68fSVUv2In2MQpXkwnufcYLqwJ
	JvTOqKI9z+ritOEZYqECnQc0tH5mJog+y5VANt6Pi7y7Di1bW+fe0DV1HgOivqBuMKK+xEMe7+C
	XN83nA9M8XgwMwrwmThZs5OqZ3Uq0i9F5wcpaUSqF4rwIvhIMuF8icW5VJgrXF0Wa02YFhwe35R
	x+UQuPhsopa/WB4SKEICY5rgP/UfO5lc2R9FmY3U4NvkLo2EEx4I4jUm3WnSDEH5Y6sWFO+uQIu
	AxiEcpXehacuAl0T
X-Received: by 2002:a05:6512:3b8d:b0:5a2:9bd8:838d with SMTP id
 2adb3069b0e04-5a4172b7afcmr7322763e87.6.1776920207443; Wed, 22 Apr 2026
 21:56:47 -0700 (PDT)
MIME-Version: 1.0
References: <459cf46204e86ed3a2ffd79ae649b1a2051f5204.1775812563.git.mykola_kvach@epam.com>
 <1E7985CB-EE4C-4769-B23C-EDEF2E75EF08@arm.com>
In-Reply-To: <1E7985CB-EE4C-4769-B23C-EDEF2E75EF08@arm.com>
From: Mykola Kvach <xakep.amatop@gmail.com>
Date: Thu, 23 Apr 2026 07:56:36 +0300
X-Gm-Features: AQROBzA_6YhCxBiY5UFhFwOcd474jGOjYElGn8qjtn5rBjcCecKWeG4-BJWo4LQ
Message-ID: <CAGeoDV92in0kypsU8K_qR+amfo6iMi7VzGT=YxatcU68yffZSg@mail.gmail.com>
Subject: Re: [PATCH] xen/arm: gic-v2: disable interrupt bypass on CPU shutdown
To: Luca Fancellu <Luca.Fancellu@arm.com>
Cc: "xen-devel@lists.xenproject.org" <xen-devel@lists.xenproject.org>, 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>
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: quoted-printable
X-purgate-ID: tlsNG-d25034/1776920208-F40FDCF5-12E222B6/0/0
X-purgate-type: clean
X-purgate-size: 2793

Hi Luca,

Thank you for the review.


On Mon, Apr 20, 2026 at 2:42=E2=80=AFPM Luca Fancellu <Luca.Fancellu@arm.co=
m> wrote:
>
> Hi Mykola,
>
> > On 10 Apr 2026, at 10:36, Mykola Kvach <xakep.amatop@gmail.com> wrote:
> >
> > From: Mykola Kvach <mykola_kvach@epam.com>
> >
> > The GICv2 CPU shutdown path currently writes 0 to GICC_CTLR.
> >
> > Per IHI0048B.b section 2.3.1, clearing IRQBypDisGrp{0,1} and
> > FIQBypDisGrp{0,1} selects bypass rather than deasserted interrupt
> > outputs when the CPU interface stops driving them. Tables 2-2 and 2-3
> > show that a zeroed GICC_CTLR can fall back to the legacy IRQ/FIQ inputs
> > instead of fully disabling the interface.
> >
> > Fix this by reading GICC_CTLR, setting the bypass-disable bits, and
> > clearing both group-enable bits before writing the value back. Keep the
> > existing GICC_CTL_ENABLE definition for the init path and use a separat=
e
> > mask for the shutdown-side group-enable handling.
> >
> > Section 2.3.2 also states that wakeup event signals remain available
> > even when both GIC interrupt signaling and interrupt bypass are
> > disabled, so disabling bypass does not break the power-management use
> > case, i.e. suspend modes.
> >
> > Fixes: 5e40a1b4351e ("arm: SMP CPU shutdown")
> > Signed-off-by: Mykola Kvach <mykola_kvach@epam.com>
> > ---
> > xen/arch/arm/gic-v2.c          |  7 ++++++-
> > xen/arch/arm/include/asm/gic.h | 21 +++++++++++++++++++--
> > 2 files changed, 25 insertions(+), 3 deletions(-)
> >
> > diff --git a/xen/arch/arm/gic-v2.c b/xen/arch/arm/gic-v2.c
> > index b23e72a3d0..22aa25bad0 100644
> > --- a/xen/arch/arm/gic-v2.c
> > +++ b/xen/arch/arm/gic-v2.c
> > @@ -408,7 +408,12 @@ static void gicv2_cpu_init(void)
> >
> > static void gicv2_cpu_disable(void)
> > {
> > -    writel_gicc(0x0, GICC_CTLR);
> > +    uint32_t ctlr =3D readl_gicc(GICC_CTLR);
> > +
> > +    ctlr |=3D GICC_CTL_BYP_DIS_MASK;
>
> If the GIC v2 implementation includes the Security Extensions, the bit 7-=
8
> are reserved, but now we are unconditionally writing on them.

You are right.

I had assumed that, since these bits are reserved in that view, writing
them would be harmless. However, the specification does not say that
they are WI, so this is not something the patch should rely on.

Looking at it again, there may be a similar layout-dependent issue in
cpu_init() as well, since the current write there also forces all other
bits to zero apart from the ones explicitly set.

I will rework this patch accordingly so that cpu_disable() only updates
the bits that are architecturally defined for the current GICC_CTLR
layout, and I will take another look at the init path separately.


Best regards,
Mykola

>
> Cheers,
> Luca
>


From xen-devel-bounces@lists.xenproject.org Thu Apr 23 05:13:36 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 23 Apr 2026 05:13:36 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1291549.1570429 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wFmNX-0006E4-0n; Thu, 23 Apr 2026 05:13:31 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1291549.1570429; Thu, 23 Apr 2026 05:13: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 1wFmNW-0006Dx-U3; Thu, 23 Apr 2026 05:13:30 +0000
Received: by outflank-mailman (input) for mailman id 1291549;
 Thu, 23 Apr 2026 05:13:30 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <xakep.amatop@gmail.com>) id 1wFmNW-0006Dr-5k
 for xen-devel@lists.xenproject.org; Thu, 23 Apr 2026 05:13:30 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wFmNV-00D8ch-1k
 for xen-devel@lists.xenproject.org; Thu, 23 Apr 2026 07:13:29 +0200
Received: from [10.42.69.4] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <xakep.amatop@gmail.com>)
 id 69e9aa5b-bab6-0a2a0a5309dd-0a2a4504a378-20
 for <xen-devel@lists.xenproject.org>; Thu, 23 Apr 2026 07:13:28 +0200
Received: from [209.85.208.175] (helo=mail-lj1-f175.google.com)
 by tlsNG-ebf023.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.1)
 (envelope-from <xakep.amatop@gmail.com>)
 id 69e9aa78-1dec-0a2a45040019-d155d0afddfd-3
 for <xen-devel@lists.xenproject.org>; Thu, 23 Apr 2026 07:13:28 +0200
Received: by mail-lj1-f175.google.com with SMTP id
 38308e7fff4ca-38df1889fb9so60214751fa.1
 for <xen-devel@lists.xenproject.org>; Wed, 22 Apr 2026 22:13:28 -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=20251104 header.d=gmail.com header.i="@gmail.com" header.h="Content-Transfer-Encoding:Cc:To:Subject:Message-ID:Date:From:In-Reply-To:References:MIME-Version"
ARC-Seal: i=1; a=rsa-sha256; t=1776921208; cv=none;
        d=google.com; s=arc-20240605;
        b=V34aY9Tt7nIkJ6dz42cy6j7ERhmwrDwzLSOT2mZzMymc9j6vXNEPK19771WGsA7og2
         a3ItGu2sIq0sS1C+pWBrQRRsIJlQ7p/BzSer5K6YD6NQ4zl4GfeOzqfZDU2rVFT5o1Cs
         hnQxGBOArAaJQdmUMiL9JcLq1qJ8QsJnNVQ1LyZ+ptWyS1CJYF4mWqxqSiSdaqrJYYFg
         DvpnpYPQNdCYGkrSNrfqfpDWIJKFD0S5wxJdqOEbOsIFoTY5b99a31X0r9jWsR4t1rsP
         /szdT3p4BTfUtJZp2PpObz36Y+2vpwrCI/68XFMTxFe1SZcmYuhDAn3+44xq7N+ZHSD0
         J7Jw==
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20240605;
        h=content-transfer-encoding:cc:to:subject:message-id:date:from
         :in-reply-to:references:mime-version:dkim-signature;
        bh=KCcfFoHP27cOrCoeHgAVx9tKLrioXkp942qiP418YI8=;
        fh=eMY2E6GaL/ZbzNsFM96x8qs39WPSLTuppOzw4R8QM3w=;
        b=Me66Q8NIzhB2atZ5+fMMEje5vQBdTqCNe6JKYU6mWmX84dpOAG2zPrwpGe5KpweKkf
         m5SDs0739abPYIJRo/qNA/O9OQWDPHSCYWbS4wZO4nB6yVAiv8H2RS6Ov3kFHWiB26Ag
         PHOLrkoyxc931PfwpHeM2XXxk6UjsH1t32JzgB4eOlBEIzTg+pMYRuue4X7PgGjcNZr5
         QM0FsIxnPFtZA2mCw+n6C85gI3X+1T2kFmTUy57C1jqiehu0JI8M6GaPP2gfCkYxJDpD
         PmcOW6TGUQd91BkGoBGtaSHbZ/LsCu5RjNqK8/yml0A5ugPAUBa1IKhx793UQWHmZXdM
         0YYw==;
        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=20251104; t=1776921208; x=1777526008; darn=lists.xenproject.org;
        h=content-transfer-encoding:cc:to:subject:message-id:date:from
         :in-reply-to:references:mime-version:from:to:cc:subject:date
         :message-id:reply-to;
        bh=KCcfFoHP27cOrCoeHgAVx9tKLrioXkp942qiP418YI8=;
        b=I18R+8tpj2Gdnv9RE1DvY2nXuceqZjLccm3zsTfKWqf8b+cLoK06CtyE9+k1eXQClx
         MrFZVM2JeIAF8O9TlRU2cHC9xhSXJDk9ST8lpAJdtk0oZgfNf2kP+pcxyKxIk632xgzx
         DGzxLH3q7pguJ4Na193DC6P3Dwb/pl7/ebBK0lgvI7HRktriF419LW/4lRTfuHfia2PV
         F9Qqy5oH9uBy6f0NN9wk+fAjqsz+hQds0spY7RLG0FqSylSCgbYilfNZVYY8Pet5o1te
         MfaLWseF1oLNKUZeaMQhM/TpPo3nd/7ZZlJWzrSLKXv4me8dpqIeh/btTC8L9BC3duzh
         37ZQ==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20251104; t=1776921208; x=1777526008;
        h=content-transfer-encoding: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;
        bh=KCcfFoHP27cOrCoeHgAVx9tKLrioXkp942qiP418YI8=;
        b=OsqSMYSOCI08ddfrVTm+IpCMAouvv3fof13x2X57Pgevg7ecpJoz69HO3/Xchf0JLE
         M229Dvi1SANe9z6wMinXb0eIBLFiW+UqHRezZG6QXiIAd4m7ok/h+g6sq/4A6MUP0BhT
         n1oHwK6MSaeUgtnWhPRW7MKBz/zM+GE4Nbys5q7qJOs8FOPobug6+2tXu5mbxK4VFqOX
         Z+3xyZ9o26ImagIRekCB/LJs4F8dxhwE9WYeBCyv0lmZzDpE4O8wBs3c3W2Owq6mKr5s
         nQK0rEnacIav9dQsx/e6Il0STsMzO6b7dQK92S2/YV34ZubVJ/y5FgsmxKCTLqfSRByF
         6xCg==
X-Forwarded-Encrypted: i=1; AFNElJ9mTDOb802c2CMpVLh/mUsiC4sPtAO+Rwe+0P0i35lIG0LySahPbpqKZvMt10WRSFxDBQV9KMlGxGs=@lists.xenproject.org
X-Gm-Message-State: AOJu0YxIUxzZRaquX2DUCffkJfhpx6c8RSp7C7j9FGSoMKhhv0osUqD4
	ptpgB7kzcMUBxMdGM8YJHDO8HLQuNo8NHihw0pSt7+wXCHniELdm3Zqrd9gZd2bkMAAnFN7CC9g
	vxLcn0Rv/VL6/PVonMjAawFnt+TE/tJc=
X-Gm-Gg: AeBDievISmzEDg1IoJ0F8szDAiDFkCZPY+74sEBJqL/QERWkaZKoT7OHF594TPeZGmF
	feTlBKjFpcBWAsxN49H8cKXPXmX0q8w0yLoF4zlNRnniN6h2uL9eYyo1rEzyTBBQlaKlW34nGw+
	muuthy72Yw8issRvTdC2fXwaBaUteSILQOqSc/8bHaIiNTe4QQpYkZku7Jj+VRPFlkHyzWm3Zhp
	X5xwWSOLgMYjMQQ8td5b9z1yecR90pqqWtSXhruqEqNsMJvBgLIQHSU4R+sKUMfFYh0PAqvE7WC
	HxCI9/CvArEUvD/5
X-Received: by 2002:a05:651c:41d7:b0:38e:84d3:f2c9 with SMTP id
 38308e7fff4ca-38ec77f5dd2mr73866311fa.7.1776921207633; Wed, 22 Apr 2026
 22:13:27 -0700 (PDT)
MIME-Version: 1.0
References: <e1d18d55557ebe232fd62174f186b1cf228e48e5.1774981189.git.mykola_kvach@epam.com>
 <dc5550d7-5a2d-4ca1-85de-5a17c24aeac4@suse.com> <CAGeoDV-ffZsOW+Cu0-oPA1obBOv_1nWU8_PAdaqaoy6=YUHGig@mail.gmail.com>
 <5b16e00e-9a4d-4a18-8a5e-dde10b42a043@suse.com> <CAGeoDV_Cdpa6beFemKaVcCguwmo95x0g0rsRYbS1x5dAUxFPLQ@mail.gmail.com>
 <5fb9b5ee-ee71-49ec-b545-62c8ec27fc15@suse.com> <CAGeoDV-HCKUXZ-CZBASLik=xkR02w-n=5+HVsYGwfDf4zD-3zA@mail.gmail.com>
 <425cdc68-5e25-4e01-b5d9-6469e2d08abb@suse.com> <DDF9A244-22CB-416E-A855-D85FECE0A3C2@arm.com>
In-Reply-To: <DDF9A244-22CB-416E-A855-D85FECE0A3C2@arm.com>
From: Mykola Kvach <xakep.amatop@gmail.com>
Date: Thu, 23 Apr 2026 08:13:15 +0300
X-Gm-Features: AQROBzDLgaf4ettKLUBXexSNAAtxl3rUW9JKJ58G8GEbqkXZa-IOfnnF7Sg4TzQ
Message-ID: <CAGeoDV_0r8_-dB33G5U81+Q1yncgzgLgMF5Ar_rmVt5h8-rgZQ@mail.gmail.com>
Subject: Re: [PATCH v3] xen/arm: vpsci: ignore upper 32 bits for SMC32 PSCI arguments
To: Bertrand Marquis <Bertrand.Marquis@arm.com>
Cc: Jan Beulich <jbeulich@suse.com>, Mykola Kvach <mykola_kvach@epam.com>, 
	Stefano Stabellini <sstabellini@kernel.org>, Julien Grall <julien@xen.org>, 
	Michal Orzel <michal.orzel@amd.com>, Volodymyr Babchuk <Volodymyr_Babchuk@epam.com>, 
	"xen-devel@lists.xenproject.org" <xen-devel@lists.xenproject.org>
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: quoted-printable
X-purgate-ID: tlsNG-ebf023/1776921208-2BD6C3FF-85B1205F/0/0
X-purgate-type: clean
X-purgate-size: 7695

Hi Bertrand,

On Wed, Apr 15, 2026 at 3:31=E2=80=AFPM Bertrand Marquis
<Bertrand.Marquis@arm.com> wrote:
>
> Hi Jan and Mykola,
>
> > On 1 Apr 2026, at 14:24, Jan Beulich <jbeulich@suse.com> wrote:
> >
> > On 01.04.2026 11:51, Mykola Kvach wrote:
> >> On Wed, Apr 1, 2026 at 12:22=E2=80=AFPM Jan Beulich <jbeulich@suse.com=
> wrote:
> >>> On 01.04.2026 10:49, Mykola Kvach wrote:
> >>>> On Wed, Apr 1, 2026 at 11:14=E2=80=AFAM Jan Beulich <jbeulich@suse.c=
om> wrote:
> >>>>> On 01.04.2026 09:13, Mykola Kvach wrote:
> >>>>>> On Wed, Apr 1, 2026 at 9:29=E2=80=AFAM Jan Beulich <jbeulich@suse.=
com> wrote:
> >>>>>>> On 31.03.2026 20:31, Mykola Kvach wrote:
> >>>>>>>> From: Mykola Kvach <mykola_kvach@epam.com>
> >>>>>>>>
> >>>>>>>> SMCCC DEN0028G, section 3.1, states that for AArch64 SMC/HVC cal=
ls
> >>>>>>>> using Wn, only the least significant 32 bits are significant and=
 the
> >>>>>>>> upper 32 bits must be ignored by the implementation.
> >>>>>>>>
> >>>>>>>> So for SMC32 PSCI calls, Xen must not treat non-zero upper bits =
in the
> >>>>>>>> argument registers as an error. Instead, they should be discarde=
d when
> >>>>>>>> decoding the arguments.
> >>>>>>>>
> >>>>>>>> Arm ARM DDI 0487J.a (D1-5406) also notes that the upper 32 bits =
may be
> >>>>>>>> implementation defined when entering from AArch32. Xen zeros the=
m on
> >>>>>>>> entry, but that guarantee is only relevant for 32-bit domains.
> >>>>>>>>
> >>>>>>>> Update PSCI v0.2+ CPU_ON, CPU_SUSPEND, AFFINITY_INFO and SYSTEM_=
SUSPEND
> >>>>>>>> to read SMC32 arguments via PSCI_ARG32(), while keeping the SMC6=
4
> >>>>>>>> handling unchanged.
> >>>>>>>>
> >>>>>>>> No functional change is intended for PSCI 0.1.
> >>>>>>>>
> >>>>>>>> Suggested-by: Julien Grall <julien@xen.org>
> >>>>>>>> Signed-off-by: Mykola Kvach <mykola_kvach@epam.com>
> >>>>>>>> Reviewed-by: Bertrand Marquis <bertrand.marquis@arm.com>
> >>>>>>>
> >>>>>>> I thought I might as well include this in my next commit sweep, b=
ut isn't
> >>>>>>> this R-b being invalidated by ...
> >>>>>>>
> >>>>>>>> ---
> >>>>>>>> v3:
> >>>>>>>> - use PSCI_ARG_CONV for SYSTEM_SUSPEND
> >>>>>>>
> >>>>>>> ... this change. That's ...
> >>>>>>>
> >>>>>>>> @@ -422,14 +427,8 @@ bool do_vpsci_0_2_call(struct cpu_user_regs=
 *regs, uint32_t fid)
> >>>>>>>>     case PSCI_1_0_FN32_SYSTEM_SUSPEND:
> >>>>>>>>     case PSCI_1_0_FN64_SYSTEM_SUSPEND:
> >>>>>>>>     {
> >>>>>>>> -        register_t epoint =3D PSCI_ARG(regs, 1);
> >>>>>>>> -        register_t cid =3D PSCI_ARG(regs, 2);
> >>>>>>>> -
> >>>>>>>> -        if ( fid =3D=3D PSCI_1_0_FN32_SYSTEM_SUSPEND )
> >>>>>>>> -        {
> >>>>>>>> -            epoint &=3D GENMASK(31, 0);
> >>>>>>>> -            cid &=3D GENMASK(31, 0);
> >>>>>>>> -        }
> >>>>>>>> +        register_t epoint =3D PSCI_ARG_CONV(regs, 1, is_conv_64=
);
> >>>>>>>> +        register_t cid =3D PSCI_ARG_CONV(regs, 2, is_conv_64);
> >>>>>>>>
> >>>>>>>>         perfc_incr(vpsci_system_suspend);
> >>>>>>>>         PSCI_SET_RESULT(regs, do_psci_1_0_system_suspend(epoint,=
 cid));
> >>>>>>>
> >>>>>>> ... this hunk aiui, which is far from merely cosmetic imo. While
> >>>>>>
> >>>>>> Nobody said that the change had to be purely cosmetic in order to =
keep
> >>>>>> the tag. I understood it differently from the official Xen
> >>>>>> documentation pages.
> >>>>>>
> >>>>>>> behavior looks to remain the same for PSCI_1_0_FN32_SYSTEM_SUSPEN=
D, it
> >>>>>>
> >>>>>> Exactly. If the changes are not substantial, I do not see a reason=
 to
> >>>>>> drop the tag ...
> >>>>>>
> >>>>>>> clearly changes for PSCI_1_0_FN64_SYSTEM_SUSPEND. That may be int=
ended
> >>>>>>> and for the better, but the change clearly wasn't reviewed by Ber=
trand,
> >>>>>>> nor - when offering the R-b - did he ask for this extra change.
> >>>>>>
> >>>>>> ... and this is also how I understood the Xen patch submission
> >>>>>> guidelines [1], which say:
> >>>>>>
> >>>>>> "Note that if there are several revisions of a patch, you ought to
> >>>>>> copy tags that have accumulated during the review. For example, if
> >>>>>> person A and person B added a Reviewed-by: tag to v1 of your patch=
,
> >>>>>> include it into v2 of your patch. If you make substantial changes
> >>>>>> after certain tags were already applied, you will want to consider
> >>>>>> which ones are no longer applicable (and may require re-providing)=
."
> >>>>>>
> >>>>>> So my understanding was that tags should normally be kept across
> >>>>>> revisions, unless the changes are substantial enough to make them =
no
> >>>>>> longer applicable.
> >>>>>
> >>>>> Maybe our understanding of "substantial" differs. To me that's anyt=
hing
> >>>>> changing functionality. Style adjustments, typo corrections, and al=
ike
> >>>>> generally aren't substantial (albeit even then there may be excepti=
ons).
> >>>>
> >>>> Thanks for clarifying what you consider substantial.
> >>>>
> >>>> Even under that interpretation, I do not see a functionality change
> >>>> here. "Refactoring" seems like the more accurate term in this case:
> >>>> the internal form changes, but the intended external behavior does
> >>>> not.
> >>>>
> >>>> It may be that we are using "functional change" in slightly differen=
t
> >>>> senses here.
> >>>>
> >>>> For v3, the switch to PSCI_ARG_CONV() in SYSTEM_SUSPEND was meant to
> >>>> make this case consistent with the helper-based argument decoding us=
ed
> >>>> elsewhere, not to change behavior.
> >>>>
> >>>> In particular, I do not see a functional change for
> >>>> PSCI_1_0_FN64_SYSTEM_SUSPEND: v2 used PSCI_ARG(regs, 1/2), and in v3
> >>>> PSCI_ARG_CONV(regs, 1/2, is_conv_64) should resolve to the same thin=
g
> >>>> when is_conv_64 is true.
> >>>
> >>> Isn't the whole point of the patch to alter behavior when is_conv_64 =
is
> >>> false? For that case PSCI_1_0_FN64_SYSTEM_SUSPEND behavior looks to
> >>> change in v3, when it didn't in v2. Whereas for
> >>> PSCI_1_0_FN32_SYSTEM_SUSPEND the v3 change indeed only eliminates ope=
n-
> >>> coding, which one may or may not regard as "substantial".
> >>
> >> I think the point I was trying to make is slightly narrower: in this
> >> code path, is_conv_64 is derived directly from fid via
> >> smccc_is_conv_64(fid) before the switch (fid).
> >>
> >> So for PSCI_1_0_FN64_SYSTEM_SUSPEND, I do not see how
> >> is_conv_64 =3D=3D false could arise here: if we are in the FN64 case,
> >> the function ID already encodes the 64-bit convention.
> >>
> >> Conversely, if is_conv_64 is false here, then this cannot be the
> >> FN64 case.
> >
> > Ah, I see. To figure that out, I would have had to do a proper review. =
I
> > was after committing only, which ought to be an entirely mechanical ste=
p.
> >
> >> On that basis, I do not see a behavioral change for the FN64
> >> SYSTEM_SUSPEND case in v3.
> >
> > I agree (now). I'm still not going to pick up that patch, but rather
> > leave it to the Arm maintainers. While not as clear cut as it first
> > seemed to me, I still consider it within the grey area.
>
> Sorry for the delay, this felt through in my filters as it was reviewed-b=
y already.
>
> I am ok with the changes done which make sense (mask is now done
> directly).
>
> Reviewed-by: Bertrand Marquis <bertrand.marquis@arm.com>

Thank you for taking another look.

With your Reviewed-by in place, and since I do not expect any further
changes from my side, I believe this patch should now be ready for the
Arm maintainers to pick up.

Best regards,
Mykola

>
> Cheers
> Bertrand
>
> >
> > Jan
>
>


From xen-devel-bounces@lists.xenproject.org Thu Apr 23 06:02:43 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 23 Apr 2026 06:02:43 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1291561.1570438 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wFn8v-0000An-Dc; Thu, 23 Apr 2026 06:02:29 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1291561.1570438; Thu, 23 Apr 2026 06:02: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 1wFn8v-0000Ag-AX; Thu, 23 Apr 2026 06:02:29 +0000
Received: by outflank-mailman (input) for mailman id 1291561;
 Thu, 23 Apr 2026 06:02:28 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <xakep.amatop@gmail.com>) id 1wFn8t-0000Aa-OE
 for xen-devel@lists.xenproject.org; Thu, 23 Apr 2026 06:02:27 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wFn8t-00DGoq-1E
 for xen-devel@lists.xenproject.org; Thu, 23 Apr 2026 08:02:27 +0200
Received: from [10.42.69.7] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <xakep.amatop@gmail.com>)
 id 69e9b5ef-bab6-0a2a0a5309dd-0a2a45078fe8-14
 for <xen-devel@lists.xenproject.org>; Thu, 23 Apr 2026 08:02:26 +0200
Received: from [209.85.167.41] (helo=mail-lf1-f41.google.com)
 by tlsNG-ef75cf.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.1)
 (envelope-from <xakep.amatop@gmail.com>)
 id 69e9b5f2-229c-0a2a45070019-d155a729dc46-3
 for <xen-devel@lists.xenproject.org>; Thu, 23 Apr 2026 08:02:26 +0200
Received: by mail-lf1-f41.google.com with SMTP id
 2adb3069b0e04-5a3fcb2c718so5292779e87.0
 for <xen-devel@lists.xenproject.org>; Wed, 22 Apr 2026 23:02:26 -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=20251104 header.d=gmail.com header.i="@gmail.com" header.h="Content-Transfer-Encoding:Cc:To:Subject:Message-ID:Date:From:In-Reply-To:References:MIME-Version"
ARC-Seal: i=1; a=rsa-sha256; t=1776924146; cv=none;
        d=google.com; s=arc-20240605;
        b=hMjEb9weXROHPQM+rmOR0GGi+G+PlD/iR4jEFGYoStG39xChCalN0g7aSzGnGex836
         Bvi9Mf7gVK1MKh/pwPBu71pTHj1x0ISWQWptMi89Wabt+JIk7bBNiQ/qOoaOVcFi/vYc
         janWTv+nTRLGCxJnh7M1tEw+yWnou/FItNG4dVPQFy6C932mS2sl0S0ANZVkjF6YHncq
         ySDgiIprtf/O4wAJ0NWTnO1zNI5Y2Bs8y3vvLfXjs/k3xDw3E+RQvxhvwkFf0Md2We4C
         OgzmQzzPT7DR2qRu2aP0Bbe8ks2rgkGpOX5s6ZIbOOYv1XRAl5EpepEar0kmLkRhPDnT
         D9lw==
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20240605;
        h=content-transfer-encoding:cc:to:subject:message-id:date:from
         :in-reply-to:references:mime-version:dkim-signature;
        bh=nl7cIH8Ft8KrXNepYu/GHtaIZIBfWGZDLBrbsxutfCw=;
        fh=lnG/EjedhIb/IfplijZjNTuDmIWktIpSdwgeAb6fZ6k=;
        b=jbpoR02C0gU/a8MID/XbWgmKf2vUNWApjWe5n/BomRt6QsEOWWRxjCRGlkFPLk3xE+
         OEhaliE0CWOzHKB6U4qXlB7zMbN6X9bTnVzK9aYj7dEC4kX09o/o41hnhKg4ZhPoJG9m
         quYEtYWm7Vk7Q0otzCeipcvLCOCYRIYyE94+YI7QZAWrCEsr+9s3hQ+g7f9KN7l7fDXv
         mYELhnIRIpFnjGOqJi5zfYFy1YHK7KTnxIOc2pceLhfPsBZ/uLxV7rEVEHTw9azYK49V
         r50FIdzdpSMo+BUHnvGOMM8K1C1IBJM8MMwVQ3LLfLA0Cc1end7ezNz0+6DzMEE1Q5ZZ
         Vi2w==;
        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=20251104; t=1776924146; x=1777528946; darn=lists.xenproject.org;
        h=content-transfer-encoding:cc:to:subject:message-id:date:from
         :in-reply-to:references:mime-version:from:to:cc:subject:date
         :message-id:reply-to;
        bh=nl7cIH8Ft8KrXNepYu/GHtaIZIBfWGZDLBrbsxutfCw=;
        b=WAnyPxb7FAMCXfYq/weamzwH9wchPYYZrd277UK8QVgh/I5AE2fwnMJmPvRiYpxq89
         vTz73QJHVu70FdUc5m9sAjv/WWgCKy2fVfAA4WsNdstcVoYImIi9FIQGq6vVbgkgAJ8e
         vjIqqtKjBr8+XiqwFjam/+PURZjWuw/b7ChyRGwkbh1W/G8K1zUBV26X/XWHh53EOzDe
         DQub5y6niMYbI0Wdy52/qt3JRgGMJW/99KFoOgvKMaZwSknSvRfUeEeqS5U7zIDBGucA
         JWRBOJGdfqeByljyPd9+3b/XCG4eP7mdqrvs4omegZIA8foHK8RZYcI3WqNz7t4gLruC
         k6yQ==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20251104; t=1776924146; x=1777528946;
        h=content-transfer-encoding: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;
        bh=nl7cIH8Ft8KrXNepYu/GHtaIZIBfWGZDLBrbsxutfCw=;
        b=CbuF4UzjvRE2r/7e1y/cm+KaEXY/28frOBeGEt0KTbiCjuixl/EzW8VrbrDzi1ult3
         LT9wgkJUgynuxmD2xnLRHDLi+X6sVJ6uuDvA6yxbtMe+AWEQqtgZTObX+ISuT/Ep3GvE
         jDLnFvX55/fjiahrkjHusoE3MQwT8PlF2qGxhBG7YHMJvSbpzzEhPP++xOPYPaApgw42
         +W9iPfSvOzNRWMfcreXV6i+mLRozPdKhOqj2wBpXYO7nOlSTkw2GTXPWFoaNK8AAqYBQ
         he8EDDRR+X6lM3dQ1r9wT3il9v3WFMEsL0CoAtUeZE2jhoYVTGtuu/5YgaGL4tzQiVdF
         v8vg==
X-Gm-Message-State: AOJu0YxP1yXPW3IYN5oKCDnsZyvOcdNMmPiv8iMQNQ/uPFsMBgNXKxgK
	Pro0VHIvJjgvkO4emotExBe5p1eqAhJTAeszJ3KjSq8SkmzUxFog3IiJGX6+7GzMgd8plP7ql5Q
	VPCgP/O5kq6xOIjjqlIyoh7eiYHJ9LMU=
X-Gm-Gg: AeBDiet44kLLl4iECRuVJrlpd3QGnqB9hUbir9+ZwE0l1U5DwQGJvDnWYt9/5hK26qB
	NMrOWOO+evRBXAbrkU0hwQujFHvA5HkhYFyczQpTLx5o3uadJ9RpV04hijk9pRY8QU1mn1A/Ygf
	ziZNhOmouEr4VDCx4lsyJrAHcEbAQhSvNGc/NmqvjyRd54U7cOFntA8ynnP1LFk8jdW7fMU0fVe
	WLCIB4sVQv6eyIg+gqkBbofB2qSEfYlpuI/nsZisFm2/ZN0nGTjcEpKQhdFmvEpXICD7gmteB82
	0cyLmznjSgvFH/Rh
X-Received: by 2002:a05:6512:1189:b0:5a2:b59a:5e99 with SMTP id
 2adb3069b0e04-5a4172e7bdemr8494688e87.22.1776924145838; Wed, 22 Apr 2026
 23:02:25 -0700 (PDT)
MIME-Version: 1.0
References: <7c20230fcd388ebe398ce19a21a1cd3c2c73d5fa.1775839987.git.mykola_kvach@epam.com>
 <9cd3e2f1-1b6f-4946-86c2-ff72f34ba138@amd.com>
In-Reply-To: <9cd3e2f1-1b6f-4946-86c2-ff72f34ba138@amd.com>
From: Mykola Kvach <xakep.amatop@gmail.com>
Date: Thu, 23 Apr 2026 09:02:14 +0300
X-Gm-Features: AQROBzCNmduihI4PEKZsBSneyCVeFzRWeRZvzdf9Oyv5svjzLUrGsGIoBl9eQsg
Message-ID: <CAGeoDV_79OHToZi3+woaGaMGqZZsQq32neEamxVNQ6RdMp502w@mail.gmail.com>
Subject: Re: [PATCH v2] arm/gicv3: Decode cacheability fields before comparing
To: "Orzel, Michal" <michal.orzel@amd.com>
Cc: xen-devel@lists.xenproject.org, Mykola Kvach <mykola_kvach@epam.com>, 
	Stefano Stabellini <sstabellini@kernel.org>, Julien Grall <julien@xen.org>, 
	Bertrand Marquis <bertrand.marquis@arm.com>, Volodymyr Babchuk <Volodymyr_Babchuk@epam.com>, 
	Mykyta Poturai <mykyta_poturai@epam.com>
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: quoted-printable
X-purgate-ID: tlsNG-ef75cf/1776924146-2B979C48-5202E71C/0/0
X-purgate-type: clean
X-purgate-size: 4396

Hi Michal,

Thank you for the review.

On Mon, Apr 13, 2026 at 12:28=E2=80=AFPM Orzel, Michal <michal.orzel@amd.co=
m> wrote:
>
>
>
> On 10/04/2026 19:34, Mykola Kvach wrote:
> > From: Mykola Kvach <mykola_kvach@epam.com>
> >
> > GITS_BASER_INNER_CACHEABILITY_MASK and
> > GICR_PROPBASER_INNER_CACHEABILITY_MASK are shifted masks. Comparing the
> > masked but unshifted values against GIC_BASER_CACHE_nC, which is an
> > unshifted enum value, leads to incorrect detection of non-cacheable
> > GITS_CBASER command queue, GITS_BASER tables, and GICR_PROPBASER
> > mappings.
> >
> > Use MASK_EXTR() to decode these cacheability fields before comparing
> > against GIC_BASER_CACHE_nC, so the backing memory is flushed when
> > required.
> >
> > Fixes: 8ed8d21373be ("ARM: GICv3 ITS: map ITS command buffer")
> > Fixes: 05238012b86d ("ARM: GICv3 ITS: allocate device and collection ta=
ble")
> > Fixes: c9b939863c89 ("ARM: GICv3: allocate LPI pending and property tab=
le")
> > Signed-off-by: Mykyta Poturai <mykyta_poturai@epam.com>
> > Signed-off-by: Mykola Kvach <mykola_kvach@epam.com>
> > ---
> > Changes in v2:
> > - use MASK_EXTR() instead of open-coding the BASER field shift
> > - fix the analogous PROPBASER cacheability comparison in
> >   gicv3_lpi_set_proptable()
> > - fix the CBASER command queue cacheability check as well
> > ---
> >  xen/arch/arm/gic-v3-its.c | 6 ++++--
> >  xen/arch/arm/gic-v3-lpi.c | 3 ++-
> >  2 files changed, 6 insertions(+), 3 deletions(-)
> >
> > diff --git a/xen/arch/arm/gic-v3-its.c b/xen/arch/arm/gic-v3-its.c
> > index 9ba068c46f..e87465d2ff 100644
> > --- a/xen/arch/arm/gic-v3-its.c
> > +++ b/xen/arch/arm/gic-v3-its.c
> > @@ -424,7 +424,8 @@ static void *its_map_cbaser(struct host_its *its)
> >       * If the command queue memory is mapped as uncached, we need to f=
lush
> >       * it on every access.
> >       */
> > -    if ( !(reg & GITS_BASER_INNER_CACHEABILITY_MASK) )
> You don't seem to mention this change. This one does not compare to
> GIC_BASER_CACHE_nC and checks against 0, which means we are on the safe s=
ide. If
> you still want to change it, then you should also look few lines above wh=
ere we
> have:
> if ( (reg & GITS_BASER_SHAREABILITY_MASK) =3D=3D 0 )
>
> > +    if ( MASK_EXTR(reg, GITS_BASER_INNER_CACHEABILITY_MASK) <=3D
> > +         GIC_BASER_CACHE_nC )
> This is a functional change. Previously we where comparing against 0 and =
now you
> compare against <=3D 1

You are right, the CBASER hunk is not fixing the same shifted-mask
comparison bug as the BASER/PROPBASER hunks.

My intention was to also handle InnerCache =3D=3D 0b001, which is Normal
Inner Non-cacheable, so the command queue should need flushing in that
case as well. I agree this is a separate functional change.

I will drop the CBASER hunk from this patch to keep it focused on the
BASER/PROPBASER shifted-mask fix. I will send the CBASER change
separately with a dedicated explanation.

Best regards,
Mykola

>
> ~Michal
>
> >      {
> >          its->flags |=3D HOST_ITS_FLUSH_CMD_QUEUE;
> >          printk(XENLOG_WARNING "using non-cacheable ITS command queue\n=
");
> > @@ -496,7 +497,8 @@ retry:
> >          }
> >          attr =3D regc & BASER_ATTR_MASK;
> >      }
> > -    if ( (regc & GITS_BASER_INNER_CACHEABILITY_MASK) <=3D GIC_BASER_CA=
CHE_nC )
> > +    if ( MASK_EXTR(regc, GITS_BASER_INNER_CACHEABILITY_MASK) <=3D
> > +         GIC_BASER_CACHE_nC )
> >          clean_and_invalidate_dcache_va_range(buffer, table_size);
> >
> >      /* If the host accepted our page size, we are done. */
> > diff --git a/xen/arch/arm/gic-v3-lpi.c b/xen/arch/arm/gic-v3-lpi.c
> > index de5052e5cf..9ee338edc2 100644
> > --- a/xen/arch/arm/gic-v3-lpi.c
> > +++ b/xen/arch/arm/gic-v3-lpi.c
> > @@ -351,7 +351,8 @@ static int gicv3_lpi_set_proptable(void __iomem * r=
dist_base)
> >      }
> >
> >      /* Remember that we have to flush the property table if non-cachea=
ble. */
> > -    if ( (reg & GICR_PROPBASER_INNER_CACHEABILITY_MASK) <=3D GIC_BASER=
_CACHE_nC )
> > +    if ( MASK_EXTR(reg, GICR_PROPBASER_INNER_CACHEABILITY_MASK) <=3D
> > +         GIC_BASER_CACHE_nC )
> >      {
> >          lpi_data.flags |=3D LPI_PROPTABLE_NEEDS_FLUSHING;
> >          /* Update the redistributors knowledge about the attributes. *=
/
>


From xen-devel-bounces@lists.xenproject.org Thu Apr 23 06:21:31 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 23 Apr 2026 06:21:31 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1291095.1570456 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wFnRI-0004Gj-H4; Thu, 23 Apr 2026 06:21:28 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1291095.1570456; Thu, 23 Apr 2026 06: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 1wFnRI-0004F0-BW; Thu, 23 Apr 2026 06:21:28 +0000
Received: by outflank-mailman (input) for mailman id 1291095;
 Wed, 22 Apr 2026 20:08:36 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <mfo@igalia.com>) id 1wFdsA-0007sT-Sp
 for xen-devel@lists.xenproject.org; Wed, 22 Apr 2026 20:08:36 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wFdsA-008j3F-61
 for xen-devel@lists.xenproject.org; Wed, 22 Apr 2026 22:08:34 +0200
Received: from [10.42.69.3] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <mfo@igalia.com>)
 id 69e92ab5-2eae-0a2a0a5409dd-0a2a4503e434-14
 for <xen-devel@lists.xenproject.org>; Wed, 22 Apr 2026 22:08:34 +0200
Received: from [213.97.179.56] (helo=fanzine2.igalia.com)
 by tlsNG-33051d.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.1)
 (envelope-from <mfo@igalia.com>)
 id 69e92abf-672d-0a2a45030019-d561b3388958-3
 for <xen-devel@lists.xenproject.org>; Wed, 22 Apr 2026 22:08:32 +0200
Received: from 186-249-145-131.shared.desktop.com.br ([186.249.145.131]
 helo=[192.168.1.66]) by fanzine2.igalia.com with esmtpsa 
 (Cipher TLS1.3:ECDHE_X25519__RSA_PSS_RSAE_SHA256__AES_256_GCM:256) (Exim)
 id 1wFdrj-000QN6-Os; Wed, 22 Apr 2026 22:08:07 +0200
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
Authentication-Results: eu.smtp.expurgate.cloud; dkim=pass header.s=20170329 header.d=igalia.com header.i="@igalia.com" header.h="Cc:To:Content-Transfer-Encoding:Content-Type:MIME-Version:Message-Id:Date:Subject:From"
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=igalia.com;
	s=20170329; h=Cc:To:Content-Transfer-Encoding:Content-Type:MIME-Version:
	Message-Id:Date:Subject:From:Sender:Reply-To:Content-ID:Content-Description:
	Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID:
	In-Reply-To:References:List-Id:List-Help:List-Unsubscribe:List-Subscribe:
	List-Post:List-Owner:List-Archive;
	bh=fOcKShGpyamYd19c2wC1bpR06ZCKPaumZuCXRyi0A2k=; b=WCjRkL064rCYl0/d/6M6kNKAwK
	qbbjwO6GJiq1i+9WUkZ4U5PPwSVlVII+oSEVdi0oixTOxG15dArpwdMl4PWTAfLGuJAv2h6aUnjYg
	Qo928sjxfInUKrtFZ4k61psYYigIJuJD+Rb1YTE9F88lwX0geRJTlWe5BAbigLh6zs79CIpmriXki
	/cll629FxBfJ40wBfx4tQBGG5hDsepJxIZYEkDXUUNfvp6IZD/45rEE5A3jmegFFn1vlbkmLHRnj1
	o8tYO4CHVtspI2ssvKbEZPf/bO7FX7vQkwPLWxKd7DwFfGHr01ONcqSHvJHYR4Qz5dDWlTSq4yx6z
	ccoLukYg==;
From: Mauricio Faria de Oliveira <mfo@igalia.com>
Subject: [PATCH 0/3] x86/pvh: fix unbootable VMs again (PVH + KASAN)
Date: Wed, 22 Apr 2026 17:07:44 -0300
Message-Id: <20260422-pvh-kasan-inline-v1-0-7e6194344c92@igalia.com>
MIME-Version: 1.0
Content-Type: text/plain; charset="utf-8"
Content-Transfer-Encoding: 7bit
X-B4-Tracking: v=1; b=H4sIAJAq6WkC/x3MMQqAMAxA0atIZgMaxIJXEYeoqQYllhaKIN7d4
 viG/x9IElUSDNUDUbImvaygrStYdrZNUNdioIb6piPCkHc8OLGh2qkm2IvnxTnfzuSgZCGK1/t
 fjtP7frOSTJRiAAAA
X-Change-ID: 20260422-pvh-kasan-inline-6efac77f1b27
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>, 
 Juergen Gross <jgross@suse.com>, Alexey Dobriyan <adobriyan@gmail.com>, 
 Boris Ostrovsky <boris.ostrovsky@oracle.com>
Cc: kernel-dev@igalia.com, linux-kernel@vger.kernel.org, 
 xen-devel@lists.xenproject.org, Mauricio Faria de Oliveira <mfo@igalia.com>
X-Mailer: b4 0.14.2
X-purgate-ID: tlsNG-33051d/1776888513-A3161938-613DC583/0/0
X-purgate-type: clean
X-purgate-size: 5364

The issue of unbootable VMs with CONFIG_PVH due to CONFIG_KASAN is back.

Booting directly from vmlinux (instead of bzImage) now fails with gcc-14/15
(but works with gcc-12/13) if CONFIG_KASAN_GENERIC is set, on Ubuntu 25.10.

The PVH code is required/supposed not to hit the KASAN memory access check
in the kernel entry point as KASAN has not yet been setup, or an exception
is hit and the boot fails.

This was previously described and addressed with __builtin_mem{cmp,set}():
- commit 661362e3dcab ("xen, pvh: fix unbootable VMs (PVH + KASAN - AMD_MEM_ENCRYPT)")
- commit 416a33c9afce ("x86/cpu: fix unbootable VMs by inlining memcmp() in hypervisor_cpuid_base()")
- commit fbe5a6dfe492 ("xen, pvh: fix unbootable VMs by inlining memset() in xen_prepare_pvh()")

However, even with __builtin the compiler may decide to use the out of line
function instead of the inline implementation. So, that does not really fix
the issue unconditionally, as it's being seen (details below).

In order to address this, it's required to switch to inline implementations
that do not depend on the compiler.

There's such a memset in <asm/string.h> and memcmp in 'boot/string.c', now
exposed in <asm/string.h> too. Use them instead of builtins in PVH entry.

Testing:

- Booting from vmlinux (fixed) and bzImage (still works) using
  allnoconfig + CONFIG_PVH + CONFIG_KASAN with gcc-12/13/14/15.

- Building allyesconfig (check for issues with <asm/string.h>).

Details/Debugging:

- Only CONFIG_PVH (works):

  make allnoconfig
  ./scripts/config \
    -e 64BIT -e HYPERVISOR_GUEST -e PVH \
    -e SERIAL_8250 -e SERIAL_8250_CONSOLE
  make olddefconfig
  make -j$(nproc) vmlinux

  qemu-system-x86_64 \
    -accel kvm -nodefaults -nographic -serial stdio \
    -kernel vmlinux -append 'console=ttyS0'
  ...
  SeaBIOS (version ...)
  Booting from ROM...
  Linux version ...
  ...
  <Ctrl-C>

- With CONFIG_KASAN (fails)
  
  ./scripts/config -e KASAN
  make olddefconfig
  make -j$(nproc) vmlinux

  qemu-system-x86_64 \
    -accel kvm -nodefaults -nographic -serial stdio \
    -kernel vmlinux -append 'console=ttyS0'
  ...
  SeaBIOS (version ...)
  Booting from ROM...
  <QEMU reboot loop, flashing the text above>

- Debugging:

  Enable debug info and rebuild.

  QEMU: enable and wait for GDB, stop rebooting, remain running.

  qemu-system-x86_64 \
    -s -S -no-reboot -no-shutdown \
    <other options>

  gdb vmlinux
  (gdb) target remote localhost:1234
  ...
  (gdb) c
  ...
  Thread 2 received signal SIGQUIT, Quit.
  ...
  (gdb) info threads
    Id   Target Id                    Frame
    1    Thread 1.1 (CPU#0 [running]) bytes_is_nonzero (
      start=0xfffffbfff031eebe <error: Cannot access memory at address 0xfffffbfff031eebe>, size=1)
      at .../linux/mm/kasan/generic.c:98
  * 2    Thread 1.2 (CPU#1 [halted ]) 0x00000000000fd0a9 in ?? ()
  ...
  (gdb) thr 1
  ...
  (gdb) bt
  #0  bytes_is_nonzero (start=0xfffffbfff031eebe <error: Cannot access memory at address 0xfffffbfff031eebe>, size=1)
      at .../linux/mm/kasan/generic.c:98
  #1  memory_is_nonzero (start=0xfffffbfff031eebe, end=0xfffffbfff031eebf) at .../linux/mm/kasan/generic.c:115
  #2  memory_is_poisoned_n (addr=0xffffffff818f75f0, size=8) at .../linux/mm/kasan/generic.c:140
  #3  memory_is_poisoned (addr=0xffffffff818f75f0, size=8) at .../linux/mm/kasan/generic.c:172
  #4  check_region_inline (addr=0xffffffff818f75f0, size=8, write=false, ret_ip=18446744071585002062)
      at .../linux/mm/kasan/generic.c:191
  #5  kasan_check_range (addr=addr@entry=0xffffffff818f75f0, size=size@entry=8, write=write@entry=false,
      ret_ip=18446744071585002062) at .../linux/mm/kasan/generic.c:200
  #6  0xffffffff813eb283 in __asan_loadN (addr=addr@entry=0xffffffff818f75f0, size=size@entry=8)
      at .../linux/mm/kasan/generic.c:278
  #7  0xffffffff815df24e in memcmp (cs=cs@entry=0xffffffff818f75f0, ct=ct@entry=0x1be2fe4, count=<optimized out>,
      count@entry=12) at .../linux/lib/string.c:683
  #8  0xffffffff81ba2323 in cpuid_base_hypervisor (sig=0xffffffff818f75f0 "XenVMMXenVMM", leaves=2)
      at .../linux/arch/x86/include/asm/cpuid/api.h:206
  #9  xen_cpuid_base () at .../linux/arch/x86/include/asm/xen/hypervisor.h:46
  #10 xen_prepare_pvh () at .../linux/arch/x86/platform/pvh/enlighten.c:119
  #11 0x0000000001ba2588 in ?? ()
  #12 0x0000000000000000 in ?? ()
  (gdb)

  Frames #7-#8 show the non-builtin memcmp() (lib/string.c) was called
  even with __builtin_memcmp() being used in cpuid_base_hypervisor().

Signed-off-by: Mauricio Faria de Oliveira <mfo@igalia.com>
---
Mauricio Faria de Oliveira (3):
      x86/asm, x86/boot: Expose inline memcmp
      x86/cpuid: fix unbootable VMs by really inlining memcmp() in hypervisor_cpuid_base()
      x86/pvh: fix unbootable VMs by really inlining memset() in xen_prepare_pvh()

 arch/x86/boot/string.c            |  6 ++----
 arch/x86/include/asm/cpuid/api.h  |  2 +-
 arch/x86/include/asm/string.h     | 11 +++++++++++
 arch/x86/platform/pvh/enlighten.c |  3 ++-
 4 files changed, 16 insertions(+), 6 deletions(-)
---
base-commit: 6596a02b207886e9e00bb0161c7fd59fea53c081
change-id: 20260422-pvh-kasan-inline-6efac77f1b27

Best regards,
-- 
Mauricio Faria de Oliveira <mfo@igalia.com>



From xen-devel-bounces@lists.xenproject.org Thu Apr 23 06:21:31 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 23 Apr 2026 06:21:31 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1291094.1570450 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wFnRI-0004BT-7b; Thu, 23 Apr 2026 06:21:28 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1291094.1570450; Thu, 23 Apr 2026 06: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 1wFnRI-0004BJ-4f; Thu, 23 Apr 2026 06:21:28 +0000
Received: by outflank-mailman (input) for mailman id 1291094;
 Wed, 22 Apr 2026 20:08:36 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <mfo@igalia.com>) id 1wFdsB-0007sW-Uv
 for xen-devel@lists.xenproject.org; Wed, 22 Apr 2026 20:08:35 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wFdsB-008IiL-Bq
 for xen-devel@lists.xenproject.org; Wed, 22 Apr 2026 22:08:35 +0200
Received: from [10.42.69.7] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <mfo@igalia.com>)
 id 69e92ac1-2eae-0a2a0a5409dd-0a2a4507c2ea-6
 for <xen-devel@lists.xenproject.org>; Wed, 22 Apr 2026 22:08:35 +0200
Received: from [213.97.179.56] (helo=fanzine2.igalia.com)
 by tlsNG-ef75cf.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.1)
 (envelope-from <mfo@igalia.com>)
 id 69e92ac2-229c-0a2a45070019-d561b338b3d2-3
 for <xen-devel@lists.xenproject.org>; Wed, 22 Apr 2026 22:08:35 +0200
Received: from 186-249-145-131.shared.desktop.com.br ([186.249.145.131]
 helo=[192.168.1.66]) by fanzine2.igalia.com with esmtpsa 
 (Cipher TLS1.3:ECDHE_X25519__RSA_PSS_RSAE_SHA256__AES_256_GCM:256) (Exim)
 id 1wFdrw-000QN6-VY; Wed, 22 Apr 2026 22:08:20 +0200
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
Authentication-Results: eu.smtp.expurgate.cloud; dkim=pass header.s=20170329 header.d=igalia.com header.i="@igalia.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; q=dns/txt; c=relaxed/relaxed; d=igalia.com;
	s=20170329; h=Cc:To:In-Reply-To:References:Message-Id:
	Content-Transfer-Encoding:Content-Type:MIME-Version:Subject:Date:From:Sender:
	Reply-To:Content-ID:Content-Description:Resent-Date:Resent-From:Resent-Sender
	:Resent-To:Resent-Cc:Resent-Message-ID:List-Id:List-Help:List-Unsubscribe:
	List-Subscribe:List-Post:List-Owner:List-Archive;
	bh=ugLYSHBb5Q9RwOF8EB3ofOp/JXnqmVAR7KYDCMKM5ok=; b=eA7Kx7ySJ0fQcyxXseR3wwYRQu
	BaEOoFBaNOeh2tfFgcRa50/ij6NjkDTNHHLPE/MI4ZVUjkoRfNxSHFT67t5yp85A1LceddlEU1pgW
	xktLdlpLLYEu6lKePNxiWQb5UERyLw64kBiutUmbe3ozGTvFOf1C3nsFc2RKL6wnDxtMhbooPjHey
	OE1+WLBHxqaAOcceUEPEgpjPgilanir0vWxXJ1ZR2lw0UHtCgaK7Fs7+6lhmZejMVzzuJCtPq5bcN
	PDxEaalcmUl8q1AYY5W10ZTFDQ4HUSsdZbRGOohFirJk5AE4JeizDZRrtyCwdzA3WDpFQJvqwi9J0
	0siPg/ow==;
From: Mauricio Faria de Oliveira <mfo@igalia.com>
Date: Wed, 22 Apr 2026 17:07:47 -0300
Subject: [PATCH 3/3] x86/pvh: fix unbootable VMs by really inlining
 memset() in xen_prepare_pvh()
MIME-Version: 1.0
Content-Type: text/plain; charset="utf-8"
Content-Transfer-Encoding: 7bit
Message-Id: <20260422-pvh-kasan-inline-v1-3-7e6194344c92@igalia.com>
References: <20260422-pvh-kasan-inline-v1-0-7e6194344c92@igalia.com>
In-Reply-To: <20260422-pvh-kasan-inline-v1-0-7e6194344c92@igalia.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>, 
 Juergen Gross <jgross@suse.com>, Alexey Dobriyan <adobriyan@gmail.com>, 
 Boris Ostrovsky <boris.ostrovsky@oracle.com>
Cc: kernel-dev@igalia.com, linux-kernel@vger.kernel.org, 
 xen-devel@lists.xenproject.org, Mauricio Faria de Oliveira <mfo@igalia.com>
X-Mailer: b4 0.14.2
X-purgate-ID: tlsNG-ef75cf/1776888515-AC961C48-D89686DA/0/0
X-purgate-type: clean
X-purgate-size: 1428

Even with __builtin the compiler may decide to use the out of line function
instead of the inline implementation.

This particular one (still) generated the inline implementation as expected
(at least in these compiler versions), but this is not guaranteed to remain
the case, as seen with the previous commit.

Switch the builtin to the inline implementation to prevent a similar issue.

Fixes: fbe5a6dfe492 ("xen, pvh: fix unbootable VMs by inlining memset() in xen_prepare_pvh()")
Signed-off-by: Mauricio Faria de Oliveira <mfo@igalia.com>
---
 arch/x86/platform/pvh/enlighten.c | 3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)

diff --git a/arch/x86/platform/pvh/enlighten.c b/arch/x86/platform/pvh/enlighten.c
index f2053cbe9b0ce3d2178938269607c652ae8f528e..cb442cbd9d828619421babb281bfe9759edbca8a 100644
--- a/arch/x86/platform/pvh/enlighten.c
+++ b/arch/x86/platform/pvh/enlighten.c
@@ -8,6 +8,7 @@
 #include <asm/hypervisor.h>
 #include <asm/e820/api.h>
 #include <asm/x86_init.h>
+#include <asm/string.h>
 
 #include <asm/xen/interface.h>
 
@@ -129,7 +130,7 @@ void __init xen_prepare_pvh(void)
 	 * This must not compile to "call memset" because memset() may be
 	 * instrumented.
 	 */
-	__builtin_memset(&pvh_bootparams, 0, sizeof(pvh_bootparams));
+	__inline_memset(&pvh_bootparams, 0, sizeof(pvh_bootparams));
 
 	hypervisor_specific_init(xen_guest);
 

-- 
2.51.0



From xen-devel-bounces@lists.xenproject.org Thu Apr 23 06:21:31 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 23 Apr 2026 06:21:31 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1291093.1570446 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wFnRI-00048N-0r; Thu, 23 Apr 2026 06:21:28 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1291093.1570446; Thu, 23 Apr 2026 06: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 1wFnRH-00048G-Tm; Thu, 23 Apr 2026 06:21:27 +0000
Received: by outflank-mailman (input) for mailman id 1291093;
 Wed, 22 Apr 2026 20:08:35 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <mfo@igalia.com>) id 1wFdsA-0007sU-TR
 for xen-devel@lists.xenproject.org; Wed, 22 Apr 2026 20:08:35 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wFdsA-001TrF-6p
 for xen-devel@lists.xenproject.org; Wed, 22 Apr 2026 22:08:34 +0200
Received: from [10.42.69.12] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <mfo@igalia.com>)
 id 69e92aa5-bab6-0a2a0a5309dd-0a2a450ca2b4-20
 for <xen-devel@lists.xenproject.org>; Wed, 22 Apr 2026 22:08:34 +0200
Received: from [213.97.179.56] (helo=fanzine2.igalia.com)
 by tlsNG-d25034.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.1)
 (envelope-from <mfo@igalia.com>)
 id 69e92ac0-62f1-0a2a450c0019-d561b338b1ee-3
 for <xen-devel@lists.xenproject.org>; Wed, 22 Apr 2026 22:08:33 +0200
Received: from 186-249-145-131.shared.desktop.com.br ([186.249.145.131]
 helo=[192.168.1.66]) by fanzine2.igalia.com with esmtpsa 
 (Cipher TLS1.3:ECDHE_X25519__RSA_PSS_RSAE_SHA256__AES_256_GCM:256) (Exim)
 id 1wFdro-000QN6-2I; Wed, 22 Apr 2026 22:08:11 +0200
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
Authentication-Results: eu.smtp.expurgate.cloud; dkim=pass header.s=20170329 header.d=igalia.com header.i="@igalia.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; q=dns/txt; c=relaxed/relaxed; d=igalia.com;
	s=20170329; h=Cc:To:In-Reply-To:References:Message-Id:
	Content-Transfer-Encoding:Content-Type:MIME-Version:Subject:Date:From:Sender:
	Reply-To:Content-ID:Content-Description:Resent-Date:Resent-From:Resent-Sender
	:Resent-To:Resent-Cc:Resent-Message-ID:List-Id:List-Help:List-Unsubscribe:
	List-Subscribe:List-Post:List-Owner:List-Archive;
	bh=CG+f99gT7Cze+FGPfBLcF87S5O/36isH7njf38xR63Q=; b=OKwd6A5xLH1bJcdBLDOnv8XZ2i
	lWl1UWUVu3h86BrLtoFeWCBfpU2bihQEf8FeBcOQ56n6T2kTO/ZzQUVxOh60BnBY8zmH4WsOo9sj2
	pj1egl1mFkGBZBpZjIrH6aFWFOXTkaJNPiNANr8YsKfqigBdRd3T9/vUw8gN8237zaR//pMRs3Aaw
	VocJZgfgNK8hun7DHMiw8Y1CSA9E1pK4stZ9xNZkDaLwX+fuBeO+TdkzZwpK5qP8ojYf4hbMqpRir
	CmX0EGP6b5coLgijMwibBWxbpOAG/HMpmCvfk0rdAWbiuJqQjaebumMcZrYfQB7G1OFqOqKt1X4HB
	i0BgXmbA==;
From: Mauricio Faria de Oliveira <mfo@igalia.com>
Date: Wed, 22 Apr 2026 17:07:45 -0300
Subject: [PATCH 1/3] x86/asm, x86/boot: Expose inline memcmp
MIME-Version: 1.0
Content-Type: text/plain; charset="utf-8"
Content-Transfer-Encoding: 7bit
Message-Id: <20260422-pvh-kasan-inline-v1-1-7e6194344c92@igalia.com>
References: <20260422-pvh-kasan-inline-v1-0-7e6194344c92@igalia.com>
In-Reply-To: <20260422-pvh-kasan-inline-v1-0-7e6194344c92@igalia.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>, 
 Juergen Gross <jgross@suse.com>, Alexey Dobriyan <adobriyan@gmail.com>, 
 Boris Ostrovsky <boris.ostrovsky@oracle.com>
Cc: kernel-dev@igalia.com, linux-kernel@vger.kernel.org, 
 xen-devel@lists.xenproject.org, Mauricio Faria de Oliveira <mfo@igalia.com>
X-Mailer: b4 0.14.2
X-purgate-ID: tlsNG-d25034/1776888514-6E776CF5-316B6DE4/0/0
X-purgate-type: clean
X-purgate-size: 2108

Move the inline memcmp function, currently only available to boot code
(boot/string.c), into the header with similar inline string functions
(include/asm/string.h) so it may be reused.

Add a _SETUP guard in string.h so not to include the 32/64-bit specific
string headers in boot/ code (16-bit, real mode) and avoid build errors.

Signed-off-by: Mauricio Faria de Oliveira <mfo@igalia.com>
---
 arch/x86/boot/string.c        |  6 ++----
 arch/x86/include/asm/string.h | 11 +++++++++++
 2 files changed, 13 insertions(+), 4 deletions(-)

diff --git a/arch/x86/boot/string.c b/arch/x86/boot/string.c
index b25c6a9303b7314d5caf5c9306239811705294fe..bbee78637b349e42e9281d8df50d89d48f4490b9 100644
--- a/arch/x86/boot/string.c
+++ b/arch/x86/boot/string.c
@@ -15,6 +15,7 @@
 #include <linux/errno.h>
 #include <linux/limits.h>
 #include <asm/asm.h>
+#include <asm/string.h>
 #include "ctype.h"
 #include "string.h"
 
@@ -31,10 +32,7 @@
 
 int memcmp(const void *s1, const void *s2, size_t len)
 {
-	bool diff;
-	asm("repe cmpsb"
-	    : "=@ccnz" (diff), "+D" (s1), "+S" (s2), "+c" (len));
-	return diff;
+	return __inline_memcmp(s1, s2, len);
 }
 
 /*
diff --git a/arch/x86/include/asm/string.h b/arch/x86/include/asm/string.h
index 9cb5aae7fba9ffcf0f5af8f939d30467750ccaa9..736a6f6a31f0a68281b4f17415aba0fcd95dc228 100644
--- a/arch/x86/include/asm/string.h
+++ b/arch/x86/include/asm/string.h
@@ -2,11 +2,13 @@
 #ifndef _ASM_X86_STRING_H
 #define _ASM_X86_STRING_H
 
+#ifndef _SETUP
 #ifdef CONFIG_X86_32
 # include <asm/string_32.h>
 #else
 # include <asm/string_64.h>
 #endif
+#endif
 
 static __always_inline void *__inline_memcpy(void *to, const void *from, size_t len)
 {
@@ -29,4 +31,13 @@ static __always_inline void *__inline_memset(void *s, int v, size_t n)
 	return ret;
 }
 
+static __always_inline int __inline_memcmp(const void *s1, const void *s2, size_t len)
+{
+	bool diff;
+
+	asm("repe cmpsb"
+	    : "=@ccnz" (diff), "+D" (s1), "+S" (s2), "+c" (len));
+	return diff;
+}
+
 #endif /* _ASM_X86_STRING_H */

-- 
2.51.0



From xen-devel-bounces@lists.xenproject.org Thu Apr 23 06:21:32 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 23 Apr 2026 06:21:32 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1291096.1570463 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wFnRI-0004LE-Nc; Thu, 23 Apr 2026 06:21:28 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1291096.1570463; Thu, 23 Apr 2026 06: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 1wFnRI-0004Is-J6; Thu, 23 Apr 2026 06:21:28 +0000
Received: by outflank-mailman (input) for mailman id 1291096;
 Wed, 22 Apr 2026 20:08:36 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <mfo@igalia.com>) id 1wFdsA-0007sV-TL
 for xen-devel@lists.xenproject.org; Wed, 22 Apr 2026 20:08:36 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wFdsA-008j3F-71
 for xen-devel@lists.xenproject.org; Wed, 22 Apr 2026 22:08:34 +0200
Received: from [10.42.69.3] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <mfo@igalia.com>)
 id 69e92ab5-2eae-0a2a0a5409dd-0a2a4503e434-16
 for <xen-devel@lists.xenproject.org>; Wed, 22 Apr 2026 22:08:34 +0200
Received: from [213.97.179.56] (helo=fanzine2.igalia.com)
 by tlsNG-33051d.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.1)
 (envelope-from <mfo@igalia.com>)
 id 69e92abf-672d-0a2a45030019-d561b338d522-3
 for <xen-devel@lists.xenproject.org>; Wed, 22 Apr 2026 22:08:32 +0200
Received: from 186-249-145-131.shared.desktop.com.br ([186.249.145.131]
 helo=[192.168.1.66]) by fanzine2.igalia.com with esmtpsa 
 (Cipher TLS1.3:ECDHE_X25519__RSA_PSS_RSAE_SHA256__AES_256_GCM:256) (Exim)
 id 1wFdrs-000QN6-Bw; Wed, 22 Apr 2026 22:08:15 +0200
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
Authentication-Results: eu.smtp.expurgate.cloud; dkim=pass header.s=20170329 header.d=igalia.com header.i="@igalia.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; q=dns/txt; c=relaxed/relaxed; d=igalia.com;
	s=20170329; h=Cc:To:In-Reply-To:References:Message-Id:
	Content-Transfer-Encoding:Content-Type:MIME-Version:Subject:Date:From:Sender:
	Reply-To:Content-ID:Content-Description:Resent-Date:Resent-From:Resent-Sender
	:Resent-To:Resent-Cc:Resent-Message-ID:List-Id:List-Help:List-Unsubscribe:
	List-Subscribe:List-Post:List-Owner:List-Archive;
	bh=RA9NCRHvRWMZ05HmtRD7P4PIYRmUdNmDK10V6p6BTbQ=; b=qJLi6sDvBTykCu2V8Pd4qiCQVV
	7vsQw17QfzL0Kd/rdPHndsLnjzOhC9NdKRQcQNne0ubu+VDjY5lsuANYoBbMjZSVEWutiW9L1U2SK
	SBIY0W4fETq7msjk2j3pMscO4SslxkzD22pw4pvg2cIxaSQzGlZ+sqlGHpcclXdsdBWENIz132d4J
	Nsi26hCgoCcVbwcgolgMHladKClBFenB2PGUlZU2Xp0JCIMyckvkeKXPtI8ZilBbIH+xrFxIb4KTs
	Ht8lL8s7FFDZmXgkHfLbmkg0jRwpl0tYPY8/XE/8EDGiyvd6hS4nYGX6CYNTPqwoMRIYHKG/MprEg
	hKcx6o/Q==;
From: Mauricio Faria de Oliveira <mfo@igalia.com>
Date: Wed, 22 Apr 2026 17:07:46 -0300
Subject: [PATCH 2/3] x86/cpuid: fix unbootable VMs by really inlining
 memcmp() in hypervisor_cpuid_base()
MIME-Version: 1.0
Content-Type: text/plain; charset="utf-8"
Content-Transfer-Encoding: 7bit
Message-Id: <20260422-pvh-kasan-inline-v1-2-7e6194344c92@igalia.com>
References: <20260422-pvh-kasan-inline-v1-0-7e6194344c92@igalia.com>
In-Reply-To: <20260422-pvh-kasan-inline-v1-0-7e6194344c92@igalia.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>, 
 Juergen Gross <jgross@suse.com>, Alexey Dobriyan <adobriyan@gmail.com>, 
 Boris Ostrovsky <boris.ostrovsky@oracle.com>
Cc: kernel-dev@igalia.com, linux-kernel@vger.kernel.org, 
 xen-devel@lists.xenproject.org, Mauricio Faria de Oliveira <mfo@igalia.com>
X-Mailer: b4 0.14.2
X-purgate-ID: tlsNG-33051d/1776888513-A1D7B938-99EF6E98/0/0
X-purgate-type: clean
X-purgate-size: 1412

Even with __builtin the compiler may decide to use the out of line function
instead of the inline implementation.

The existing code is broken with gcc-14/15 but not gcc-12/13 (Ubuntu 25.10)
and vmlinux no longer boots with CONFIG_PVH if CONFIG_KASAN_GENERIC is set.

For testing purposes, if the size argument is reduced from 12 to 8 then the
compiler decides to use the inline implementation; that shows results vary.

Switch the builtin to the inline implementation to address it.

Fixes: 416a33c9afce ("x86/cpu: fix unbootable VMs by inlining memcmp() in hypervisor_cpuid_base()")
Signed-off-by: Mauricio Faria de Oliveira <mfo@igalia.com>
---
 arch/x86/include/asm/cpuid/api.h | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/arch/x86/include/asm/cpuid/api.h b/arch/x86/include/asm/cpuid/api.h
index 44fa82e1267ce98c7f5f92f69b58f79e235f7261..c3bd1e51067346e817240b484dc0d0e5f02dcc4f 100644
--- a/arch/x86/include/asm/cpuid/api.h
+++ b/arch/x86/include/asm/cpuid/api.h
@@ -203,7 +203,7 @@ static inline u32 cpuid_base_hypervisor(const char *sig, u32 leaves)
 		 * from PVH early boot code before instrumentation is set up
 		 * and memcmp() itself may be instrumented.
 		 */
-		if (!__builtin_memcmp(sig, signature, 12) &&
+		if (!__inline_memcmp(sig, signature, 12) &&
 		    (leaves == 0 || ((eax - base) >= leaves)))
 			return base;
 	}

-- 
2.51.0



From xen-devel-bounces@lists.xenproject.org Thu Apr 23 07:04:59 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 23 Apr 2026 07:04:59 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1291616.1570482 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wFo7A-0006iV-Qc; Thu, 23 Apr 2026 07:04:44 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1291616.1570482; Thu, 23 Apr 2026 07:04: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 1wFo7A-0006iO-Nw; Thu, 23 Apr 2026 07:04:44 +0000
Received: by outflank-mailman (input) for mailman id 1291616;
 Thu, 23 Apr 2026 07:04:43 +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 1wFo78-0006ht-Vv
 for xen-devel@lists.xenproject.org; Thu, 23 Apr 2026 07:04:43 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wFo76-00HZdx-NL
 for xen-devel@lists.xenproject.org; Thu, 23 Apr 2026 09:04:42 +0200
Received: from [10.42.69.3] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <Michal.Orzel@amd.com>)
 id 69e9c482-5cb7-0a2a0a5109dd-0a2a4503dd0e-32
 for <xen-devel@lists.xenproject.org>; Thu, 23 Apr 2026 09:04:41 +0200
Received: from [52.101.85.66]
 (helo=BYAPR05CU005.outbound.protection.outlook.com)
 by tlsNG-33051d.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.1)
 (envelope-from <Michal.Orzel@amd.com>)
 id 69e9c488-672d-0a2a45030019-34655542f719-3
 for <xen-devel@lists.xenproject.org>; Thu, 23 Apr 2026 09:04:41 +0200
Received: from PH8P220CA0053.NAMP220.PROD.OUTLOOK.COM (2603:10b6:510:2d9::26)
 by SJ2PR12MB8784.namprd12.prod.outlook.com (2603:10b6:a03:4d0::11)
 with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9846.21; Thu, 23 Apr
 2026 07:04:34 +0000
Received: from SA2PEPF00003F62.namprd04.prod.outlook.com
 (2603:10b6:510:2d9:cafe::2f) by PH8P220CA0053.outlook.office365.com
 (2603:10b6:510:2d9::26) with Microsoft SMTP Server (version=TLS1_3,
 cipher=TLS_AES_256_GCM_SHA384) id 15.20.9791.48 via Frontend Transport; Thu,
 23 Apr 2026 07:04:34 +0000
Received: from satlexmb08.amd.com (165.204.55.251) by
 SA2PEPF00003F62.mail.protection.outlook.com (10.167.248.37) with Microsoft
 SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id
 15.20.9846.18 via Frontend Transport; Thu, 23 Apr 2026 07:04:33 +0000
Received: from SATLEXMB03.amd.com (10.181.40.144) by satlexmb08.amd.com
 (10.181.42.217) with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.2.2562.17; Thu, 23 Apr
 2026 02:04:33 -0500
Received: from satlexmb07.amd.com (10.181.42.216) by SATLEXMB03.amd.com
 (10.181.40.144) with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2507.39; Thu, 23 Apr
 2026 02:04:33 -0500
Received: from [10.252.147.171] (10.180.168.240) by satlexmb07.amd.com
 (10.181.42.216) with Microsoft SMTP Server id 15.2.2562.17 via Frontend
 Transport; Thu, 23 Apr 2026 02:04:31 -0500
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@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=vK8LMdjbdx3p1m0cbEZhMPlKMrjPU9zMSri5y8Oeip2oqckDVm+MlBMnPpiPv8q+yS+19d+vluKqaEZwH5ymO7nV6uY7+Z71NnXE7w6ZF5aMvfS6gNaCRr30XT/V2BL6fgjV3VhWbWxyQuthYRXu6O+xiT2NSLizS9sw/6DoP76r39Ag8GZ0+FmkoEKRpW68KRndmQGvJBswu8cDX7zPEB5ECCupLE4DXy+lJWupo1+rDPWFPFGtrq1PSkIDZCACmajjQmyW/LGBpL+mh8P1ptQ4y/xLGLPAOp5+I4XqsynecJ33QGzeoViw1ayiOkQA9AHURBigU07+HeXxwYt3MQ==
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com;
 s=arcselector10001;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1;
 bh=7Z6V0vxoVpbh7739XmUgT+IFt6qAMu1fDUIzhMI2wsY=;
 b=g+r/9IZZ4TJGJ4QOFtJnMTc7ERDwVgBvKbuB5lK+HaoSM7D0dO5NrCErHz0cMD6fJl4zuM7HOrUmdsM6ia4JV5MA5GAdDA+d/HNQjTmqJkOa2sAjoyw/gOElIfm+mhO8kcILy6kvSqbj2zbTGcFX7dVQjDkE2HGaf5mE4pmLj8rDJtTTZGcoVtT74vhK1zKaWbcmI8NZok8tyzKYODYE5EsAgFrsY/sGnEJ29IQ5JVRl0nC+QyCiNeHa92OnJABbWNUt9vUgrPzRal9JBM6+966512PwFq96X9JfIpnFHTpGsKrxmsER6w5pn2V4+/loiASKbnzbGsBUZY7bBE3mYA==
ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=softfail (sender ip
 is 165.204.55.251) smtp.rcpttodomain=suse.com smtp.mailfrom=amd.com;
 dmarc=fail (p=quarantine sp=quarantine pct=100) action=quarantine
 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=7Z6V0vxoVpbh7739XmUgT+IFt6qAMu1fDUIzhMI2wsY=;
 b=397Ddub/TkC5Fz4hGTXX7E9PG2l7aNqrmQBKw+b+N4TNKqJYXOgyxUO7t2StQw1eL8veDnjWRY7qT/8uidiucxSqaf/vGVEKXuNPYRL0v7FdgVEHmx2UIjXlnQ+rdJ9MPVHBXHZ9EWFi0hhCm/1X2ofWu6ejwEmY5Flya8T0n8g=
X-MS-Exchange-Authentication-Results: spf=softfail (sender IP is
 165.204.55.251) smtp.mailfrom=amd.com; dkim=none (message not signed)
 header.d=none;dmarc=fail action=quarantine header.from=amd.com;
Received-SPF: SoftFail (protection.outlook.com: domain of transitioning
 amd.com discourages use of 165.204.55.251 as permitted sender)
Message-ID: <9bfbd603-57a2-4a9b-a4be-5594c15ec8a3@amd.com>
Date: Thu, 23 Apr 2026 09:04:31 +0200
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH] Arm: device.c is init-only when OVERLAY_DTB=n
To: Jan Beulich <jbeulich@suse.com>, Andrew Cooper <andrew.cooper3@citrix.com>
CC: Julien Grall <julien@xen.org>, Stefano Stabellini
	<sstabellini@kernel.org>, Volodymyr Babchuk <volodymyr_babchuk@epam.com>,
	Bertrand Marquis <bertrand.marquis@arm.com>, "xen-devel@lists.xenproject.org"
	<xen-devel@lists.xenproject.org>
References: <c50219c1-5a23-46d0-bbe3-ab4a871a935b@suse.com>
 <53b251a1-948d-4c9c-ba0c-6f4fd99b1d6a@citrix.com>
 <a4345272-872c-4967-92e1-bbf74bf65ac1@suse.com>
From: "Orzel, Michal" <michal.orzel@amd.com>
Content-Language: en-US
In-Reply-To: <a4345272-872c-4967-92e1-bbf74bf65ac1@suse.com>
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: 7bit
Received-SPF: None (SATLEXMB03.amd.com: michal.orzel@amd.com does not
 designate permitted sender hosts)
X-EOPAttributedMessage: 0
X-MS-PublicTrafficType: Email
X-MS-TrafficTypeDiagnostic: SA2PEPF00003F62:EE_|SJ2PR12MB8784:EE_
X-MS-Office365-Filtering-Correlation-Id: 50547a52-443b-4721-1c35-08dea10692ee
X-MS-Exchange-SenderADCheck: 1
X-MS-Exchange-AntiSpam-Relay: 0
X-Microsoft-Antispam:
	BCL:0;ARA:13230040|1800799024|36860700016|376014|82310400026|18002099003|22082099003|56012099003;
X-Microsoft-Antispam-Message-Info:
	8IhQ3FaTvIpRd+HE0e2aFI48xjS7UsaF9AUFHr73Z0w7A/i8j3Hu8HQSyRT11lRkCACRW6cdlRxGGH4VRE/FJJqegOLNHsHyCqhO1FsSYRwmzxLDXmD//BN3PJVyGLJmdALrYVkEiOs8WLuPGb8eqpUdRyuLK2rl4NQ0Bj06uSRtVZMxtubV2GVo6in4KpPhNFQs9/9ACT+RHlXO/Jubh1+KXlNgxCkUBynIi5lSAQB5m6F/DC3rQB1fM5OyIqS42pQ2ZfgS8btCnxdTxDnybnVfuR1YxfUsFgJEdbtzpw8kf27vWZf6BcbXZwpdq7MQq76eh8oijVtKplPXpW19VmLbUt5xD/hSycPqd41Sc+ICkCSwJi/mss3lZdgeVA8X8YbboaNujr5hlciCXaIuJJ2zeehDDVESzO/SDjLzPVcn3yhCqLljssawsQrcU33Obf8zfVLcUkAW7/vQL1e6yOxuQaA94izrwAoEsWgaW+jVc8TRnFzsqu3yqGxv0q2onoIHIhe+zADudokQkJ7qJvCbMaKxb8Mxe+Yd7kFKQS1BEaod3maiDYjTTxXI1w3PS3hkN/5c6/H9YDPFcdzIfMlISiEyJkcAoyRljVmGJuTnp6t6YqYp2RBiGBlj3fMkkV1ltB6Yvdnvo4iSJjdsPgYlOVLA6Y8Qd8QfwmCweOx4KxIOnnczXVGGNL2CaZMTGlM/DX9gUydeTj29NLde/2dbW+vq6ll2hJAhhj8L1/82lHpydfdl8787REXrB9N10RlVgzt6cDl2eAzyjhUZoQ==
X-Forefront-Antispam-Report:
	CIP:165.204.55.251;CTRY:CA;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:satlexmb08.amd.com;PTR:InfoDomainNonexistent;CAT:NONE;SFS:(13230040)(1800799024)(36860700016)(376014)(82310400026)(18002099003)(22082099003)(56012099003);DIR:OUT;SFP:1101;
X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1
X-MS-Exchange-AntiSpam-MessageData-0:
	+rtKFzmECy7qsGsOapfbHuQyq5I2Kc3g/WnSADp5rIGQLsx0Z0RjJsrluwi+v0PjL6HnInO6CsBmyAhe8zyOAaJtF9VCKqkhnoNb0QTmBo4YS1zw2mg9cPyOFGIpnrzGLwzUeZDUfOfD9P5SVnQFfYotqCZf0GWUmfYoCRCcsoNqC1FHBIx4g+lM89VqHcRc2SpGUi1cwJcZ2qE14mifYgekZOFDfrgL21NCPpfR5zB9hFQrA3fzbzgH6oqMox/o+4fXMzG6qCOmkFSsbmRUmA9na3ZwXICogiCJ0OBeGzMdj/ZC2VeQwxp7RUnzu2lFI4PjjBhR6FsmdrDsue/GpIDrz/ScR++bhViKyzjJqensAS6JQtPyceyQljXHCVVJn5d77vyUQmgBjLpPeE3NSFlFNt7m3z6uuu5v8MY3YljsWKOh0zbsR9Ky5LFVtYAI
X-OriginatorOrg: amd.com
X-MS-Exchange-CrossTenant-OriginalArrivalTime: 23 Apr 2026 07:04:33.7731
 (UTC)
X-MS-Exchange-CrossTenant-Network-Message-Id: 50547a52-443b-4721-1c35-08dea10692ee
X-MS-Exchange-CrossTenant-Id: 3dd8961f-e488-4e60-8e11-a82d994e183d
X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=3dd8961f-e488-4e60-8e11-a82d994e183d;Ip=[165.204.55.251];Helo=[satlexmb08.amd.com]
X-MS-Exchange-CrossTenant-AuthSource:
	SA2PEPF00003F62.namprd04.prod.outlook.com
X-MS-Exchange-CrossTenant-AuthAs: Anonymous
X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem
X-MS-Exchange-Transport-CrossTenantHeadersStamped: SJ2PR12MB8784
X-purgate-ID: tlsNG-33051d/1776927881-2A766938-17B3421E/0/0
X-purgate-type: clean
X-purgate-size: 1374



On 27/02/2026 07:50, Jan Beulich wrote:
> On 26.02.2026 18:14, Andrew Cooper wrote:
>> On 26/02/2026 4:28 pm, Jan Beulich wrote:
>>> --- a/xen/arch/arm/Makefile
>>> +++ b/xen/arch/arm/Makefile
>>> @@ -15,7 +15,9 @@ obj-$(CONFIG_HAS_ALTERNATIVE) += alterna
>>>  obj-y += cpuerrata.o
>>>  obj-y += cpufeature.o
>>>  obj-y += decode.o
>>> -obj-y += device.o
>>> +device-y := device.init.o
>>> +device-$(CONFIG_OVERLAY_DTB) := device.o
>>> +obj-y += $(device-y)
>>
>> I know we've argued over this before and not come to a conclusion, but I
>> still firmly believe this to be an anti-pattern we should expunge.
>>
>> obj-y += $(if $(CONFIG_OVERLAY_DTB),device.o,device.init.o)
> 
> Whereas I think this one (in its adjusted form to really only accept 'y')
> is, firmly believing that the "lists everywhere" approach is the more
> readable and, more importantly, more scalable one. The form you suggest
> quickly gets to its limits when multiple CONFIG_* need dealing with.
I must admit that I prefer Andrew approach. It took me less time to understand
what the line does compared to your solution. I don't want to get involved in a
discussion about consistency here (for me we can use both depending on number of
CONFIG_ options), but with the line changed to what Andrew suggests:

Reviewed-by: Michal Orzel <michal.orzel@amd.com>

~Michal



From xen-devel-bounces@lists.xenproject.org Thu Apr 23 07:30:18 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 23 Apr 2026 07:30:18 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1291634.1570491 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wFoVo-0003Iy-QD; Thu, 23 Apr 2026 07:30:12 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1291634.1570491; Thu, 23 Apr 2026 07:30: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 1wFoVo-0003Ir-NN; Thu, 23 Apr 2026 07:30:12 +0000
Received: by outflank-mailman (input) for mailman id 1291634;
 Thu, 23 Apr 2026 07:30:12 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <Bertrand.Marquis@arm.com>) id 1wFoVn-0003Ij-Me
 for xen-devel@lists.xenproject.org; Thu, 23 Apr 2026 07:30:12 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wFoVn-00352B-35
 for xen-devel@lists.xenproject.org; Thu, 23 Apr 2026 09:30:11 +0200
Received: from [10.42.69.6] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <Bertrand.Marquis@arm.com>)
 id 69e9ca82-bab6-0a2a0a5309dd-0a2a4506bc70-4
 for <xen-devel@lists.xenproject.org>; Thu, 23 Apr 2026 09:30:10 +0200
Received: from [52.101.69.22]
 (helo=AM0PR83CU005.outbound.protection.outlook.com)
 by tlsNG-16d1c6.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.1)
 (envelope-from <Bertrand.Marquis@arm.com>)
 id 69e9ca82-7371-0a2a45060019-346545166e50-3
 for <xen-devel@lists.xenproject.org>; Thu, 23 Apr 2026 09:30:10 +0200
Received: from DU7P191CA0020.EURP191.PROD.OUTLOOK.COM (2603:10a6:10:54e::30)
 by AS2PR08MB9714.eurprd08.prod.outlook.com (2603:10a6:20b:606::16) with
 Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9818.33; Thu, 23 Apr
 2026 07:30:02 +0000
Received: from DB1PEPF000509EB.eurprd03.prod.outlook.com
 (2603:10a6:10:54e:cafe::7e) by DU7P191CA0020.outlook.office365.com
 (2603:10a6:10:54e::30) with Microsoft SMTP Server (version=TLS1_3,
 cipher=TLS_AES_256_GCM_SHA384) id 15.20.9846.21 via Frontend Transport; Thu,
 23 Apr 2026 07:30:00 +0000
Received: from outbound-uk1.az.dlp.m.darktrace.com (4.158.2.129) by
 DB1PEPF000509EB.mail.protection.outlook.com (10.167.242.69) with Microsoft
 SMTP Server (version=TLS1_3, cipher=TLS_AES_256_GCM_SHA384) id 15.20.9791.48
 via Frontend Transport; Thu, 23 Apr 2026 07:30:00 +0000
Received: from PR3PR08MB5593.eurprd08.prod.outlook.com (2603:10a6:102:84::13)
 by PAVPR08MB9137.eurprd08.prod.outlook.com (2603:10a6:102:30e::11)
 with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9846.21; Thu, 23 Apr
 2026 07:28:57 +0000
Received: from PR3PR08MB5593.eurprd08.prod.outlook.com
 ([fe80::aae1:6871:afc4:620e]) by PR3PR08MB5593.eurprd08.prod.outlook.com
 ([fe80::aae1:6871:afc4:620e%5]) with mapi id 15.20.9818.023; Thu, 23 Apr 2026
 07:28: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=arm.com header.i="@arm.com" header.h="From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck"; dkim=pass header.s=selector1 header.d=arm.com header.i="@arm.com" header.h="From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck"
ARC-Seal: i=2; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=pass;
 b=eXenImqPe/JdeeS9zF7uudVmvIVD7nADY/aY3mdi/KmPEJbLEQ7aJuHK9cijFQZLq886Vs9iQ0Zqr2lWnGxVxDJGmGyG9Yqr2mLX36qbDNFKu+sNmPWJz3+/AlzjjgPUuYeMp6XltbJzpqIQXiJ0e/5lbqf5I8YnEqikw0CgVk9QKpNm4qC18OJoazpZQjAEv/yAIu3tcyOwimsUoLZ+S3cPjwWWg9kVFKEVz7wuaqnQTMgG84cKueRdP8nJ18fTrLT2TyRo//fLROFKF06mXOPx43HWvNZP76Q4ZvqM8wWMZoOgTbU9+IuzdMNlDG1dzLAFuUBXvMts5DkRaQy51w==
ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com;
 s=arcselector10001;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1;
 bh=HLyiN/FAFpwQ0RQ2aScfSoW1m4aPkH9o72AQn/JfGhU=;
 b=lwLRS64qz+G4gca4onkUkFAVFPXl3FUgcztFsdnl7xlAJyjj3gJKs5N0zQik/mTh9Jz/2FxHiVxjkXYRi+jbATl2WXneEoAyBwgG76COoHEvSegHXQTBaFzXE6gGdeQDtu8RntP8B5EdTjZX0eJ2gSpdNwLRz9c/thI3dfx3v6zkc8rOZ3Mg2yjGKJY68WfKS82h03nyAYmiYivjw/1RtQ/idZZbPs9/N5o05gMXZLbt+na6MjmwM5yWXWbLPGIB5k2dRqKSz5X7g16mBIi4a1FnD6juK5xS3bSdNZF3S8oHmg5ghTRvXqYGP/6l1BfRLU0bLZ8T7PX3hkjQZNrYvA==
ARC-Authentication-Results: i=2; mx.microsoft.com 1; spf=pass (sender ip is
 4.158.2.129) smtp.rcpttodomain=linaro.org smtp.mailfrom=arm.com; dmarc=pass
 (p=none sp=none pct=100) action=none header.from=arm.com; dkim=pass
 (signature was verified) header.d=arm.com; arc=pass (0 oda=1 ltdi=1
 spf=[1,1,smtp.mailfrom=arm.com] dkim=[1,1,header.d=arm.com]
 dmarc=[1,1,header.from=arm.com])
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=arm.com; s=selector1;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck;
 bh=HLyiN/FAFpwQ0RQ2aScfSoW1m4aPkH9o72AQn/JfGhU=;
 b=OZm0eRC8yoT1IbEx0l9MS6yK7z2cfnhYnmD1+ppw3xGUsCG76bqAZqCsctvqHSEqEEf2aBL+gpb1DDsB7n048pXm56b/MxBaf60wSvlGRT2rKIzq0XsBrFg7HLbH6W9QxfVpWg3WkUcuXTwI67bM2ckflo2eHHOc+yJQMx8z4BI=
X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 4.158.2.129)
 smtp.mailfrom=arm.com; dkim=pass (signature was verified)
 header.d=arm.com;dmarc=pass action=none header.from=arm.com;
Received-SPF: Pass (protection.outlook.com: domain of arm.com designates
 4.158.2.129 as permitted sender) receiver=protection.outlook.com;
 client-ip=4.158.2.129; helo=outbound-uk1.az.dlp.m.darktrace.com; pr=C
ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none;
 b=bHZznqnNRfHAvL9J1fnQPkPSXgS+vX2CO0qpy3F6Etv2OgBongeX+tj5JGzKJ6mIdS9xgmFvBKTEWgXAMn2ZFUn8c2IgYl3HW1rF2SQMcogxwk7NX8gv1rIN55O845JETodY3JDNntiZO13nwM3Nr2xiMVeGEjOO+q7imR0s+xvHX+PFPIaiI8BCC+CLGmTd3vQf/a3WB4i6VBwTXhOg39MB85eM2R7TdiMZysueIQE6x/E3LXOw9UaQDpsAl/BAOFy3vVmRfxWHd/2fhpop5O943RGaaVCKDlgDksXk+zaCeet69tTu6lfuG1Iwhb6k6L4IrgVfcCrSbrv1OJ7Ytg==
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com;
 s=arcselector10001;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1;
 bh=HLyiN/FAFpwQ0RQ2aScfSoW1m4aPkH9o72AQn/JfGhU=;
 b=VdmBMa1GqUJ8J9vnCl8Zf6XDvlBStmGZ77ZoMM77nUjUXBVzigczYuLJUfw3Esnh/oWWKKtM0yuynOX5NXSAIu8qfrRXQQuSDHGoWdbqr+6bBUL+OZaOiUtjiHfUZqBH1BpOxAm00gtrbygypsuC3Lsqqz1oq7rMV5sUAAXersJly13POL04FHNy3pYBnf+TmnCtuk348kwvh8vEUAMlxvBNg+zjOLMvE08+C58EL0JZqU67LtSLBbAPezooqV8Q6ueynwkpUsdxJQKrUA+c1vNf/2/eSvXS1iAGmgTz10ZkXDSFhCbc39I5mWpjQ2fREZcMx5eQUhrbc9VgiwrBtg==
ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass
 smtp.mailfrom=arm.com; dmarc=pass action=none header.from=arm.com; dkim=pass
 header.d=arm.com; arc=none
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=arm.com; s=selector1;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck;
 bh=HLyiN/FAFpwQ0RQ2aScfSoW1m4aPkH9o72AQn/JfGhU=;
 b=OZm0eRC8yoT1IbEx0l9MS6yK7z2cfnhYnmD1+ppw3xGUsCG76bqAZqCsctvqHSEqEEf2aBL+gpb1DDsB7n048pXm56b/MxBaf60wSvlGRT2rKIzq0XsBrFg7HLbH6W9QxfVpWg3WkUcuXTwI67bM2ckflo2eHHOc+yJQMx8z4BI=
From: Bertrand Marquis <Bertrand.Marquis@arm.com>
To: Jens Wiklander <jens.wiklander@linaro.org>
CC: "xen-devel@lists.xenproject.org" <xen-devel@lists.xenproject.org>,
	Volodymyr Babchuk <volodymyr_babchuk@epam.com>, Stefano Stabellini
	<sstabellini@kernel.org>, Julien Grall <julien@xen.org>, Michal Orzel
	<michal.orzel@amd.com>
Subject: Re: [PATCH 2/6] xen/arm: ffa: Track hypervisor notifications in a
 bitmap
Thread-Topic: [PATCH 2/6] xen/arm: ffa: Track hypervisor notifications in a
 bitmap
Thread-Index: AQHcznAWfT9UE3mepUCzg5x2vENfULXq2YyAgAFvNoA=
Date: Thu, 23 Apr 2026 07:28:56 +0000
Message-ID: <6D745E55-2BBB-49CC-AE8D-D75E9704ED8D@arm.com>
References: <cover.1776266307.git.bertrand.marquis@arm.com>
 <7053b8c14bbe50cc855dad0a82cde2bb10153d2b.1776266307.git.bertrand.marquis@arm.com>
 <CAHUa44HaFjLf9CcSJMDD5O-R24_Kq_7zabw2Op2X=P1gj+85Sw@mail.gmail.com>
In-Reply-To:
 <CAHUa44HaFjLf9CcSJMDD5O-R24_Kq_7zabw2Op2X=P1gj+85Sw@mail.gmail.com>
Accept-Language: en-GB, en-US
Content-Language: en-US
X-MS-Has-Attach:
X-MS-TNEF-Correlator:
x-mailer: Apple Mail (2.3864.500.181)
Authentication-Results-Original: dkim=none (message not signed)
 header.d=none;dmarc=none action=none header.from=arm.com;
x-ms-traffictypediagnostic:
	PR3PR08MB5593:EE_|PAVPR08MB9137:EE_|DB1PEPF000509EB:EE_|AS2PR08MB9714:EE_
X-MS-Office365-Filtering-Correlation-Id: dc7d3db1-1d8c-4fc2-7ee0-08dea10a20c0
x-checkrecipientrouted: true
nodisclaimer: true
X-MS-Exchange-SenderADCheck: 1
X-MS-Exchange-AntiSpam-Relay: 0
X-Microsoft-Antispam-Untrusted:
 BCL:0;ARA:13230040|1800799024|366016|376014|18002099003|38070700021|56012099003|22082099003;
X-Microsoft-Antispam-Message-Info-Original:
 ytzhvA24rTVg4W+pjMnpkbeKgCLOzGg4/Ye9iblNMrcH6JMTCiRLhsKM4tiZvU/fZuycXMz+HRwm5x2jX1WfKQaVYLIUakrLNAxgyi9gKxwLl4OaHOxT9Atz8jcODB0PlIbbWWetFfer48Ufy/QkFo1ami6Lst5ZXpfaX33X0Tan0kLlGtnle4fezS0V3givYus1UCVZ+3nLuyezYaaL3xfeqT/xr7KFc70qsfWCUeZ/DV7ffmTnLDlNgH0IWqchBSEN7X9Bon66/1+eqtXBTwx9sIxtfO212yzugUgFMJeDnTzHEDGxv8jOonFpJW8mU2gCf773vJC7vIoW/ErE4BkZXW/W/3SeonjXqpPMBl8PxL+7vDbAIB0g000JMCYCkrrhBHZAgsHjgQU1AqTnD10O37MuxIR7bns/CqE3HaxcCvMmNVe94aJ19QD/2oRj9543GGos16g10GNEYuPYNA9esaf0FI7s9wDuT3MFnRMBsXwp/fYj5Fo7kMzJ02ruECsl7uZb2TXxDXXCN+ZOW3MN+xLNEM0YaumtbNzyWMpsGN3y/lQOCCrhQiLgbWbmWrR3Oe/tFWpGOHzN+Ju1QvLhkeYJpZLMX/JwcC5NyqJ7eo2Nxh7TCeKxl80j3kO2udpsuVGzxjoK6AIj1KMHLO8OTefsd+y/511VmCrsPH5/ii4tElemttt/ICBkp3ZV/jFTzJcPQVj/7ZETW9MdB6msPV0rxxCEhw8jLM73eNc4Xu95pxilpEDsubnwV+5bFQ7m/y/s0P6/Q+UHdjNqaeQfsMei14bd+BIlUFMjTWM=
X-Forefront-Antispam-Report-Untrusted:
 CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:PR3PR08MB5593.eurprd08.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(1800799024)(366016)(376014)(18002099003)(38070700021)(56012099003)(22082099003);DIR:OUT;SFP:1101;
Content-Type: text/plain; charset="utf-8"
Content-ID: <C6E12F763E8F3543B484161C1E602AEA@eurprd08.prod.outlook.com>
Content-Transfer-Encoding: base64
MIME-Version: 1.0
X-Exchange-RoutingPolicyChecked:
 bTrjupX//8orI2TTi6gSkOeyHtCk+PEQZO+kM0Y0mSYFftAfLx7VxuaG1NxP6K2FR1Wa9w4kK2rtNqiML90Jh3M0O6Ib8Fp0G2nVafSLiqHWfSMY4o5dwUjiD9kI5uAqJ0mQrq7AwdPYkQg1yTlgZScUtA30udjdJtKiNh14KgM2DbFlSpt1tllNhEO1g3e2U+SpsHMep2HnTrgzH3Cruhk+4nysoSybAXTjt+EL0DTHmlaikmHn60vL8tibEog5csBj+WBgKWfj0K4x70lzDbn6GDiNz8qDXM/woRa1Fq3EdRvgZMUVP2Ah869UaV/VQ8X58Vt9mAaqcEuFa9bF3Q==
X-MS-Exchange-Transport-CrossTenantHeadersStamped: PAVPR08MB9137
X-EOPAttributedMessage: 0
X-MS-Exchange-Transport-CrossTenantHeadersStripped:
 DB1PEPF000509EB.eurprd03.prod.outlook.com
X-MS-PublicTrafficType: Email
X-MS-Office365-Filtering-Correlation-Id-Prvs:
	f3da666a-45c3-4b9e-e971-08dea109fa99
X-Microsoft-Antispam:
	BCL:0;ARA:13230040|36860700016|376014|1800799024|35042699022|82310400026|14060799003|56012099003|18002099003|22082099003;
X-Microsoft-Antispam-Message-Info:
	OgUKfHzD14SaJtmoE9FOjNuPkSLJO9td03CThBrtpRBPVEoyIXbWdIQ3pDcEAyz/X7SntvJzero8A6WW98DVFp5x5Xl5Vj7wEP08gHkSuvtwUiJpt+KELtpdlyWvW1EFnWKi2GWUlAdWfba2SlkDTTjQFMGsvNvIg93IjMGOzt6Sk6d4eR9N5x914DEhU9gt4tz6rwtl8V6Eq7PKl092iR4CG79IRFoC0+/P/g0gPhwpZ4OmtwqkKM5w8oL+49qkPHDKt2HGP1cReozIMorn0E9sOvheW8cOGpe967eRLA+qAXppiWjRI0Cr2y29UeQOYYZLBW7jeca2rXEEc9jjEg5q2ut6OQaaBUdEGjx1L6kjn21jx9scvr619WgxJqJSzff7vu+hvudXRgmejTj+ORpdLJefhEFsqVsECpp2plRoH+1pXANcl8X1xCRsAbpolcu8WkYYC2O8DTPoXv/GcY2Eifo+GyfsLcUPmDgTsj27yK5EAZ4PxXX/VFaYA1jNo95HN0e8fC43gMkEuMMwYwMMHdWFxz7T+DDvOFdLzyFmcWcApnohRDgJS8up5GWXXQ3plp01eAE0bL3zc8H+gxxy2tDMBCyP/mPoGb8Psk4rYIpCUsq8VI4JwgF0JZV0x5GZDC88AB5qHQnanNnLE2h22voliwjTSOSKXkCE00TTVDmJ58w687ozxAZMoF98al5FpRN38XHdF+rDjcPd5+rZoqQFiwl80t3JP/bt4aZYjPkfRsSzVJ90GoncJwb/+/r8XLRTT2/FHDbXEvQPMA==
X-Forefront-Antispam-Report:
	CIP:4.158.2.129;CTRY:GB;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:outbound-uk1.az.dlp.m.darktrace.com;PTR:InfoDomainNonexistent;CAT:NONE;SFS:(13230040)(36860700016)(376014)(1800799024)(35042699022)(82310400026)(14060799003)(56012099003)(18002099003)(22082099003);DIR:OUT;SFP:1101;
X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1
X-MS-Exchange-AntiSpam-MessageData-0:
	7SMN+XioucG4QQxfFNTvozxnCONWuYALv2j12bfEsLpapVEsJ2zik8RB8GbwlAZaJrSJVBS5OAf8lx8M319Ni4rQxvQ8Pgo50O4aiicygr4Vf87ECafUe3/bytzR9sLX36fBt+RoF8oUToN10c4eXuWTsvJGEh1UsrsBPQuVTQ9pW9HaBdPOPoW4YYYNoSS9YC5842yfLNmuSgPC0WxKQZQ41Ws/hj8l1nXng1LBjUHqBp2Qmimuc+iQ/1ESv75/KdFDEClku2vE0+/Tzogym/dz/+UfoQDebd84BEjivzdPB1OLeIqva9+wCg+KWWRgVcZxSneXr4JDt+OCPHmDhR4uRY3TLQcrId0tR+jVkgQlZGa9buyiChgPIf3R7bHfAhZe01pMWtQSzOXvWh1f6eRljYbAksvDKTvzJbOngN5ANPbGwAFiy+0/Agv6s6um
X-OriginatorOrg: arm.com
X-MS-Exchange-CrossTenant-OriginalArrivalTime: 23 Apr 2026 07:30:00.3251
 (UTC)
X-MS-Exchange-CrossTenant-Network-Message-Id: dc7d3db1-1d8c-4fc2-7ee0-08dea10a20c0
X-MS-Exchange-CrossTenant-Id: f34e5979-57d9-4aaa-ad4d-b122a662184d
X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=f34e5979-57d9-4aaa-ad4d-b122a662184d;Ip=[4.158.2.129];Helo=[outbound-uk1.az.dlp.m.darktrace.com]
X-MS-Exchange-CrossTenant-AuthSource:
	DB1PEPF000509EB.eurprd03.prod.outlook.com
X-MS-Exchange-CrossTenant-AuthAs: Anonymous
X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem
X-MS-Exchange-Transport-CrossTenantHeadersStamped: AS2PR08MB9714
X-purgate-ID: tlsNG-16d1c6/1776929410-53B7DD75-AAF9A100/0/0
X-purgate-type: clean
X-purgate-size: 6844

SGkgSmVucywNCg0KVGhhbmtzIGEgbG90IGZvciB0aGUgcmV2aWV3Lg0KDQo+IE9uIDIyIEFwciAy
MDI2LCBhdCAxMTozNCwgSmVucyBXaWtsYW5kZXIgPGplbnMud2lrbGFuZGVyQGxpbmFyby5vcmc+
IHdyb3RlOg0KPiANCj4gSGkgQmVydHJhbmQsDQo+IA0KPiBPbiBGcmksIEFwciAxNywgMjAyNiBh
dCAzOjQx4oCvUE0gQmVydHJhbmQgTWFycXVpcw0KPiA8YmVydHJhbmQubWFycXVpc0Bhcm0uY29t
PiB3cm90ZToNCj4+IA0KPj4gSHlwZXJ2aXNvciBub3RpZmljYXRpb25zIGFyZSBjdXJyZW50bHkg
dHJhY2tlZCB3aXRoIGEgZGVkaWNhdGVkDQo+PiBidWZmX2Z1bGxfcGVuZGluZyBib29sZWFuLiBU
aGF0IHN0YXRlIG9ubHkgcmVwcmVzZW50cyBhIHNpbmdsZSBIWVANCj4+IG5vdGlmaWNhdGlvbiBi
aXQgYW5kIGtlZXBzIEhZUCBiaXRtYXAgaGFuZGxpbmcgdGllZCB0byBzaW5nbGUtcHVycG9zZQ0K
Pj4gYm9va2tlZXBpbmcuDQo+PiANCj4+IFJlcGxhY2UgdGhlIGJvb2xlYW4gd2l0aCBhIGh5cGVy
dmlzb3Igbm90aWZpY2F0aW9uIGJpdG1hcCBwcm90ZWN0ZWQgYnkNCj4+IG5vdGlmX2xvY2suIElO
Rk9fR0VUIHJlcG9ydHMgcGVuZGluZyB3aGVuIHRoZSBiaXRtYXAgaXMgbm9uLXplcm8sIEdFVA0K
Pj4gcmV0dXJucyBhbmQgY2xlYXJzIHRoZSBIWVAgYml0bWFwIHVuZGVyIHRoZSBsb2NrLCBhbmQg
UlgtYnVmZmVyLWZ1bGwNCj4+IHNldHMgRkZBX05PVElGX1JYX0JVRkZFUl9GVUxMIGluIHRoZSBi
aXRtYXAgaW5zdGVhZCBvZiB1cGRhdGluZw0KPj4gc2VwYXJhdGUgc3RhdGUuDQo+PiANCj4+IElu
aXRpYWxpemUgYW5kIGNsZWFyIHRoZSBiaXRtYXAgZHVyaW5nIGRvbWFpbiBsaWZlY3ljbGUgaGFu
ZGxpbmcsIGFuZA0KPj4gdXNlIGN0eC0+ZmZhX2lkIGZvciBiaXRtYXAgY3JlYXRlIGFuZCBkZXN0
cm95IHNvIHRoZSBub3RpZmljYXRpb24gc3RhdGUNCj4+IHN0YXlzIHRpZWQgdG8gdGhlIGNhY2hl
ZCBGRi1BIGVuZHBvaW50IElELg0KPj4gDQo+PiBObyBmdW5jdGlvbmFsIGNoYW5nZXMuDQo+PiAN
Cj4+IFNpZ25lZC1vZmYtYnk6IEJlcnRyYW5kIE1hcnF1aXMgPGJlcnRyYW5kLm1hcnF1aXNAYXJt
LmNvbT4NCj4+IC0tLQ0KPj4geGVuL2FyY2gvYXJtL3RlZS9mZmFfbm90aWYuYyAgIHwgNDYgKysr
KysrKysrKysrKysrKysrKysrKysrKystLS0tLS0tLQ0KPj4geGVuL2FyY2gvYXJtL3RlZS9mZmFf
cHJpdmF0ZS5oIHwgIDkgKysrKystLQ0KPj4gMiBmaWxlcyBjaGFuZ2VkLCA0MyBpbnNlcnRpb25z
KCspLCAxMiBkZWxldGlvbnMoLSkNCj4+IA0KPj4gZGlmZiAtLWdpdCBhL3hlbi9hcmNoL2FybS90
ZWUvZmZhX25vdGlmLmMgYi94ZW4vYXJjaC9hcm0vdGVlL2ZmYV9ub3RpZi5jDQo+PiBpbmRleCAw
N2JjNWNiM2E0MzAuLmQxNTExOTQwOWEyNSAxMDA2NDQNCj4+IC0tLSBhL3hlbi9hcmNoL2FybS90
ZWUvZmZhX25vdGlmLmMNCj4+ICsrKyBiL3hlbi9hcmNoL2FybS90ZWUvZmZhX25vdGlmLmMNCj4+
IEBAIC05NCw4ICs5NCwxNSBAQCB2b2lkIGZmYV9oYW5kbGVfbm90aWZpY2F0aW9uX2luZm9fZ2V0
KHN0cnVjdCBjcHVfdXNlcl9yZWdzICpyZWdzKQ0KPj4gDQo+PiAgICAgbm90aWZfcGVuZGluZyA9
IHRlc3RfYW5kX2NsZWFyX2Jvb2woY3R4LT5ub3RpZi5zZWN1cmVfcGVuZGluZyk7DQo+PiAgICAg
aWYgKCBJU19FTkFCTEVEKENPTkZJR19GRkFfVk1fVE9fVk0pICkNCj4+ICsgICAgew0KPj4gICAg
ICAgICBub3RpZl9wZW5kaW5nIHw9IHRlc3RfYW5kX2NsZWFyX2Jvb2woY3R4LT5ub3RpZi52bV9w
ZW5kaW5nKTsNCj4+IA0KPj4gKyAgICAgICAgc3Bpbl9sb2NrKCZjdHgtPm5vdGlmLm5vdGlmX2xv
Y2spOw0KPj4gKyAgICAgICAgaWYgKCBjdHgtPm5vdGlmLmh5cF9wZW5kaW5nICkNCj4+ICsgICAg
ICAgICAgICBub3RpZl9wZW5kaW5nID0gdHJ1ZTsNCj4+ICsgICAgICAgIHNwaW5fdW5sb2NrKCZj
dHgtPm5vdGlmLm5vdGlmX2xvY2spOw0KPiANCj4gSXNuJ3QgdGhpcyBhIGZ1bmN0aW9uYWwgY2hh
bmdlPyBCZWZvcmUgdGhpcyBwYXRjaCwgd2UgZGlkbid0IGNvbnNpZGVyDQo+IGN0eC0+bm90aWYu
YnVmZl9mdWxsX3BlbmRpbmcgaGVyZS4gQW0gSSBtaXNzaW5nIHNvbWV0aGluZz8NCg0KV2UgZGlk
IGNvbnNpZGVyIGl0IGltcGxpY2l0bHkgdGhyb3VnaCB2bV9wZW5kaW5nLg0KDQpUaGlzIHBhdGNo
IG1ha2VzIHRoYXQgY2xlYW5lciBieSB1c2luZyBoeXBfcGVuZGluZyBmb3IgdGhlIEh5cGVydmlz
b3INCmZyYW1ld29yayBub3RpZmljYXRpb24gaXRzZWxmLiBQcmV2aW91c2x5LCBSWC1idWZmZXIt
ZnVsbCB3YXMgbWFkZSB2aXNpYmxlDQppbmRpcmVjdGx5IHZpYSB2bV9wZW5kaW5nLCBhbmQgRkZB
X05PVElGSUNBVElPTl9JTkZPX0dFVCANCmNsZWFyZWQgdGhhdCBzdW1tYXJ5IHN0YXRlLg0KDQpB
cyBhIHJlc3VsdCwgdGhlIGd1ZXN0LXZpc2libGUgcGVuZGluZyBpbmRpY2F0aW9uIGNvdWxkIGJl
IGxvc3QgYmVmb3JlDQp0aGUgSHlwZXJ2aXNvciBub3RpZmljYXRpb24gd2FzIGFjdHVhbGx5IHJl
dHJpZXZlZCB3aXRoDQpGRkFfTk9USUZJQ0FUSU9OX0dFVC4NCg0KV2l0aCB0aGlzIGNoYW5nZSwg
dGhlIHBlbmRpbmcgc3RhdGUgaXMgdHJhY2tlZCBpbiBoeXBfcGVuZGluZyBhbmQgaXMgb25seQ0K
Y2xlYXJlZCB3aGVuIHRoZSBIeXBlcnZpc29yIG5vdGlmaWNhdGlvbnMgYXJlIHJldHJpZXZlZCB0
aHJvdWdoDQpGRkFfTk9USUZJQ0FUSU9OX0dFVC4NCg0KSSB3aWxsIHJld29yZCB0aGUgY29tbWl0
IG1lc3NhZ2UgdG8gbWFrZSB0aGF0IGNsZWFyZXIuDQoNCj4gDQo+PiArICAgIH0NCj4+ICsNCj4+
ICAgICBpZiAoIG5vdGlmX3BlbmRpbmcgKQ0KPj4gICAgIHsNCj4+ICAgICAgICAgLyogQSBwZW5k
aW5nIGdsb2JhbCBub3RpZmljYXRpb24gZm9yIHRoZSBndWVzdCAqLw0KPj4gQEAgLTE3NCwxMiAr
MTgxLDE3IEBAIHZvaWQgZmZhX2hhbmRsZV9ub3RpZmljYXRpb25fZ2V0KHN0cnVjdCBjcHVfdXNl
cl9yZWdzICpyZWdzKQ0KPj4gICAgICAgICAgICAgdzYgPSByZXNwLmE2Ow0KPj4gICAgIH0NCj4+
IA0KPj4gLSAgICBpZiAoIElTX0VOQUJMRUQoQ09ORklHX0ZGQV9WTV9UT19WTSkgJiYNCj4+IC0g
ICAgICAgICAgZmxhZ3MgJiBGRkFfTk9USUZfRkxBR19CSVRNQVBfSFlQICYmDQo+PiAtICAgICAg
ICAgIHRlc3RfYW5kX2NsZWFyX2Jvb2woY3R4LT5ub3RpZi5idWZmX2Z1bGxfcGVuZGluZykgKQ0K
Pj4gKyAgICBpZiAoIElTX0VOQUJMRUQoQ09ORklHX0ZGQV9WTV9UT19WTSkgKQ0KPj4gICAgIHsN
Cj4+IC0gICAgICAgIEFDQ0VTU19PTkNFKGN0eC0+bm90aWYudm1fcGVuZGluZykgPSBmYWxzZTsN
Cj4+IC0gICAgICAgIHc3ID0gRkZBX05PVElGX1JYX0JVRkZFUl9GVUxMOw0KPj4gKyAgICAgICAg
c3Bpbl9sb2NrKCZjdHgtPm5vdGlmLm5vdGlmX2xvY2spOw0KPj4gKw0KPj4gKyAgICAgICAgaWYg
KCAoZmxhZ3MgJiBGRkFfTk9USUZfRkxBR19CSVRNQVBfSFlQKSAmJiBjdHgtPm5vdGlmLmh5cF9w
ZW5kaW5nICkNCj4+ICsgICAgICAgIHsNCj4+ICsgICAgICAgICAgICB3NyA9IGN0eC0+bm90aWYu
aHlwX3BlbmRpbmc7DQo+PiArICAgICAgICAgICAgY3R4LT5ub3RpZi5oeXBfcGVuZGluZyA9IDA7
DQo+PiArICAgICAgICB9DQo+PiArDQo+PiArICAgICAgICBzcGluX3VubG9jaygmY3R4LT5ub3Rp
Zi5ub3RpZl9sb2NrKTsNCj4+ICAgICB9DQo+PiANCj4+ICAgICBmZmFfc2V0X3JlZ3MocmVncywg
RkZBX1NVQ0NFU1NfMzIsIDAsIHcyLCB3MywgdzQsIHc1LCB3NiwgdzcpOw0KPj4gQEAgLTIwNywx
MiArMjE5LDE3IEBAIGludDMyX3QgZmZhX2hhbmRsZV9ub3RpZmljYXRpb25fc2V0KHN0cnVjdCBj
cHVfdXNlcl9yZWdzICpyZWdzKQ0KPj4gdm9pZCBmZmFfcmFpc2VfcnhfYnVmZmVyX2Z1bGwoc3Ry
dWN0IGRvbWFpbiAqZCkNCj4+IHsNCj4+ICAgICBzdHJ1Y3QgZmZhX2N0eCAqY3R4ID0gZC0+YXJj
aC50ZWU7DQo+PiArICAgIHVpbnQzMl90IHByZXZfYml0bWFwOw0KPj4gDQo+PiAgICAgaWYgKCAh
Y3R4ICkNCj4+ICAgICAgICAgcmV0dXJuOw0KPj4gDQo+PiAtICAgIEFDQ0VTU19PTkNFKGN0eC0+
bm90aWYuYnVmZl9mdWxsX3BlbmRpbmcpID0gdHJ1ZTsNCj4+IC0gICAgaWYgKCAhdGVzdF9hbmRf
c2V0X2Jvb2woY3R4LT5ub3RpZi52bV9wZW5kaW5nKSApDQo+PiArICAgIHNwaW5fbG9jaygmY3R4
LT5ub3RpZi5ub3RpZl9sb2NrKTsNCj4+ICsgICAgcHJldl9iaXRtYXAgPSBjdHgtPm5vdGlmLmh5
cF9wZW5kaW5nOw0KPj4gKyAgICBjdHgtPm5vdGlmLmh5cF9wZW5kaW5nIHw9IEZGQV9OT1RJRl9S
WF9CVUZGRVJfRlVMTDsNCj4+ICsgICAgc3Bpbl91bmxvY2soJmN0eC0+bm90aWYubm90aWZfbG9j
ayk7DQo+PiArDQo+PiArICAgIGlmICggIShwcmV2X2JpdG1hcCAmIEZGQV9OT1RJRl9SWF9CVUZG
RVJfRlVMTCkgKQ0KPiANCj4gRG8gd2UgbmVlZCB0byBjaGVjayBmb3IgRkZBX05PVElGX1JYX0JV
RkZFUl9GVUxMPyBJc24ndCAhcHJldl9iaXRtYXANCj4gbW9yZSBhY2N1cmF0ZSwgaWYgYW55IG90
aGVyIGJpdCB3b3VsZCBldmVyIGJlIHVzZWQgaW4gdGhlIGJpdG1hcD8NCg0KICBJIHdvdWxkIGtl
ZXAgdGhlIGJpdC1zcGVjaWZpYyBjaGVjayBoZXJlLCBpZiB0aGF0IGlzIE9LIHdpdGggeW91Lg0K
DQogVGhpcyBmdW5jdGlvbiBpcyBhYm91dCByYWlzaW5nIHRoZSBSWCBidWZmZXIgZnVsbCBub3Rp
ZmljYXRpb24sDQogc28gSSB0aGluayBpdCBpcyBjbGVhcmVyIHRvIGNoZWNrIHdoZXRoZXIgdGhh
dCBiaXQgd2FzIG5ld2x5DQogcGVuZGVkIHJhdGhlciB0aGFuIHdoZXRoZXIgdGhlIHdob2xlIEh5
cGVydmlzb3IgYml0bWFwDQogd2FzIHByZXZpb3VzbHkgZW1wdHkuDQoNClVzaW5nICFwcmV2X2Jp
dG1hcCB3b3VsZCBhbHNvIG1ha2UgdGhlIGNvbmRpdGlvbiBkZXBlbmQgb24NCnVucmVsYXRlZCBI
eXBlcnZpc29yIG5vdGlmaWNhdGlvbnMgYmVpbmcgcGVuZGluZy4NCg0KVGVsbCBtZSBpZiB5b3Ug
YXJlIG9rIHdpdGggdGhhdC4NCg0KQ2hlZXJzDQpCZXJ0cmFuZA0KDQo=


From xen-devel-bounces@lists.xenproject.org Thu Apr 23 07:32:00 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 23 Apr 2026 07:32:00 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1291641.1570501 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wFoXX-00043M-4b; Thu, 23 Apr 2026 07:31:59 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1291641.1570501; Thu, 23 Apr 2026 07:31: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 1wFoXX-00043F-1R; Thu, 23 Apr 2026 07:31:59 +0000
Received: by outflank-mailman (input) for mailman id 1291641;
 Thu, 23 Apr 2026 07:31:57 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <Bertrand.Marquis@arm.com>) id 1wFoXV-0003pr-N0
 for xen-devel@lists.xenproject.org; Thu, 23 Apr 2026 07:31:57 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wFoXT-0005ga-Hm
 for xen-devel@lists.xenproject.org; Thu, 23 Apr 2026 09:31:57 +0200
Received: from [10.42.69.5] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <Bertrand.Marquis@arm.com>)
 id 69e9cae0-e002-0a2a0a5209dd-0a2a4505e782-32
 for <xen-devel@lists.xenproject.org>; Thu, 23 Apr 2026 09:31:57 +0200
Received: from [52.101.69.71]
 (helo=AM0PR83CU005.outbound.protection.outlook.com)
 by tlsNG-c201ff.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.1)
 (envelope-from <Bertrand.Marquis@arm.com>)
 id 69e9caec-aaa8-0a2a45050019-346545478779-3
 for <xen-devel@lists.xenproject.org>; Thu, 23 Apr 2026 09:31:56 +0200
Received: from DB8PR04CA0001.eurprd04.prod.outlook.com (2603:10a6:10:110::11)
 by AS2PR08MB9271.eurprd08.prod.outlook.com (2603:10a6:20b:59c::22)
 with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9846.21; Thu, 23 Apr
 2026 07:31:53 +0000
Received: from DB1PEPF000509ED.eurprd03.prod.outlook.com
 (2603:10a6:10:110:cafe::d1) by DB8PR04CA0001.outlook.office365.com
 (2603:10a6:10:110::11) with Microsoft SMTP Server (version=TLS1_3,
 cipher=TLS_AES_256_GCM_SHA384) id 15.20.9846.21 via Frontend Transport; Thu,
 23 Apr 2026 07:31:53 +0000
Received: from outbound-uk1.az.dlp.m.darktrace.com (4.158.2.129) by
 DB1PEPF000509ED.mail.protection.outlook.com (10.167.242.71) with Microsoft
 SMTP Server (version=TLS1_3, cipher=TLS_AES_256_GCM_SHA384) id 15.20.9791.48
 via Frontend Transport; Thu, 23 Apr 2026 07:31:52 +0000
Received: from PR3PR08MB5593.eurprd08.prod.outlook.com (2603:10a6:102:84::13)
 by GV1PR08MB11167.eurprd08.prod.outlook.com (2603:10a6:150:1ed::8)
 with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9846.21; Thu, 23 Apr
 2026 07:30:49 +0000
Received: from PR3PR08MB5593.eurprd08.prod.outlook.com
 ([fe80::aae1:6871:afc4:620e]) by PR3PR08MB5593.eurprd08.prod.outlook.com
 ([fe80::aae1:6871:afc4:620e%5]) with mapi id 15.20.9818.023; Thu, 23 Apr 2026
 07: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=arm.com header.i="@arm.com" header.h="From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck"; dkim=pass header.s=selector1 header.d=arm.com header.i="@arm.com" header.h="From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck"
ARC-Seal: i=2; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=pass;
 b=bvVSD+/uLeLtrrbLvRGkRX63CWL+5Ryd6OinsWdbC7s3+UOD5joisztdwAJCgD4hPOknjlTPxWLFmRsNWcTRye2CxXknCQl1g3GDrXGYHlGpH3z58tLkydEbXOzC9BYu3b1GbhU12lcjfTW9g2bWcKGhM9A+5zfksTaAIB/vB6v6mPKooHysoVEamkoVMO8pnKgGhW3XBWmkScnkGw2NrQhkHNB6WQD7QYQ7cD6IJDLEUzrCutoZkCWQETGcmvD/XQvmUghXRPQRAGDW1azckTIDQqNYW2kL3hw3yWjx3RYfR2uqLveQekVVA0GyWMpGauUK+qw/65tEskbZqm/cng==
ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com;
 s=arcselector10001;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1;
 bh=A+U4ZTCNpG/zKUfH/DZUWbWWykBY0TObICukbdViixg=;
 b=ABfPSj9dzYQ5EAqXiaBJY2QxtiVy7wVhV+HcHwtW6NScPPlgv0igQ0EZcYu382jzZBvPsg5A/+TfTLwlIjDTe36gvGm2cXvY0bIJeeiyiDefN2EnQ5974JFZPD2HDQchWMMszbMjMYSZKV2mNn1niuv253PEd1ispo4lFJ4K1dAzm943Vwd0AJgJTSkUtRIbKLYTsp7m2ODi30/yicWUhoNpJbZQ3BeQhvnRO5nzyMQZb4PmU/8dlgANwDAjdi6KBLQIvWaNSk/xtror37Ar+1m3Tq1IFePcYsy9z5tL5VKIaa2mgYp4g1Kx6oxmbMnBJOBqRuoxfk5RsRJoK1hzKg==
ARC-Authentication-Results: i=2; mx.microsoft.com 1; spf=pass (sender ip is
 4.158.2.129) smtp.rcpttodomain=linaro.org smtp.mailfrom=arm.com; dmarc=pass
 (p=none sp=none pct=100) action=none header.from=arm.com; dkim=pass
 (signature was verified) header.d=arm.com; arc=pass (0 oda=1 ltdi=1
 spf=[1,1,smtp.mailfrom=arm.com] dkim=[1,1,header.d=arm.com]
 dmarc=[1,1,header.from=arm.com])
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=arm.com; s=selector1;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck;
 bh=A+U4ZTCNpG/zKUfH/DZUWbWWykBY0TObICukbdViixg=;
 b=VR9b+MmPfWMVvEQM/dXx+IIDR8eRAZWCIXIirSxJWcgQeYotLdMAAaYQVJGz5mRS9wheUcKz9DxfGC75nmOweYwQRrpRnhO81VqBCPjpULv1IfVBw6EDrx4jGZCmwuzpdk00OX+emkom9XZFuT9x/X32N4BbNXU65uLSTH6EyG4=
X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 4.158.2.129)
 smtp.mailfrom=arm.com; dkim=pass (signature was verified)
 header.d=arm.com;dmarc=pass action=none header.from=arm.com;
Received-SPF: Pass (protection.outlook.com: domain of arm.com designates
 4.158.2.129 as permitted sender) receiver=protection.outlook.com;
 client-ip=4.158.2.129; helo=outbound-uk1.az.dlp.m.darktrace.com; pr=C
ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none;
 b=B7I+ZJj6J+Np1rrPrRw4ko8AviMPV/OWD5nruY1nsNnTqGv7BeCOp7sQh3mQbp8p1xVmfXtvVZkIZGiA+buNDN/sdyZPBmOI0v0mkurw6ns9zQtyCUiwv+fL4bBOWjP439zsm9Dcaya1oMKr6OjKOq4qc17lA/2BRZrL4V1kEStA0Gp35SQvurrbsmR4UyopXhuqec0FhabWA8H7Y9jFi0bKwnRNPj3x39SqXbhCe0VmOKJw3J8jQSCFVEQr2mvP48AtMeqGjkOlbLjinUirMCngSen+kdEWh254mf9Xs3ZGG/GASVCdQnwwKCvOhbwJrn0jlfbzQqvVEzKAc+TUyQ==
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com;
 s=arcselector10001;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1;
 bh=A+U4ZTCNpG/zKUfH/DZUWbWWykBY0TObICukbdViixg=;
 b=Bwiap8u9WX/PKNQQyxYiP2Awbd0AgDaJkTnEMW/mlmh+XzTazFOPzftUdHwUADkvpDBJ566gzF5M5mpr8zUV+C9MHyAYoY7UiyKixmCqpClUwW37QLti8Eh6u+kLdADlifZgffl6Orn8ng1CXj5pB0B0ZgvH97VHw+RNdN1DXcYRWEVhXWxmJpzQoxHNs8lZEkmeoGlpexxYtLnygmEc8A3BBi/8Kgjei5NOv6xR/y8KShu+5VkqxgwuDTTl2RjGZHKiWyNcUuFHcPTGc1S+5bnWuLdFooAulhOz6i5x0qpi3i9HTdsA3n/Naz3qBpOf6QAHjCW9lAYOYl0LrJNE3g==
ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass
 smtp.mailfrom=arm.com; dmarc=pass action=none header.from=arm.com; dkim=pass
 header.d=arm.com; arc=none
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=arm.com; s=selector1;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck;
 bh=A+U4ZTCNpG/zKUfH/DZUWbWWykBY0TObICukbdViixg=;
 b=VR9b+MmPfWMVvEQM/dXx+IIDR8eRAZWCIXIirSxJWcgQeYotLdMAAaYQVJGz5mRS9wheUcKz9DxfGC75nmOweYwQRrpRnhO81VqBCPjpULv1IfVBw6EDrx4jGZCmwuzpdk00OX+emkom9XZFuT9x/X32N4BbNXU65uLSTH6EyG4=
From: Bertrand Marquis <Bertrand.Marquis@arm.com>
To: Jens Wiklander <jens.wiklander@linaro.org>
CC: "xen-devel@lists.xenproject.org" <xen-devel@lists.xenproject.org>,
	Volodymyr Babchuk <volodymyr_babchuk@epam.com>, Stefano Stabellini
	<sstabellini@kernel.org>, Julien Grall <julien@xen.org>, Michal Orzel
	<michal.orzel@amd.com>
Subject: Re: [PATCH 3/6] xen/arm: ffa: Tighten notification parameter
 validation
Thread-Topic: [PATCH 3/6] xen/arm: ffa: Tighten notification parameter
 validation
Thread-Index: AQHcznAJmFfrrKKQhkqwUOWc2qiMrLXq+6oAgAFNnoA=
Date: Thu, 23 Apr 2026 07:30:47 +0000
Message-ID: <6269430C-DD6C-49AE-8F20-C7FB73280E3E@arm.com>
References: <cover.1776266307.git.bertrand.marquis@arm.com>
 <1036add9199c6304eb649854024c74dd0f0192cc.1776266307.git.bertrand.marquis@arm.com>
 <CAHUa44FdbLqNRVzjy6Y3qMp5ez9PS-3tY_VjMJMXHRs+=AKVKg@mail.gmail.com>
In-Reply-To:
 <CAHUa44FdbLqNRVzjy6Y3qMp5ez9PS-3tY_VjMJMXHRs+=AKVKg@mail.gmail.com>
Accept-Language: en-GB, en-US
Content-Language: en-US
X-MS-Has-Attach:
X-MS-TNEF-Correlator:
x-mailer: Apple Mail (2.3864.500.181)
Authentication-Results-Original: dkim=none (message not signed)
 header.d=none;dmarc=none action=none header.from=arm.com;
x-ms-traffictypediagnostic:
	PR3PR08MB5593:EE_|GV1PR08MB11167:EE_|DB1PEPF000509ED:EE_|AS2PR08MB9271:EE_
X-MS-Office365-Filtering-Correlation-Id: 229da350-7b86-4ce3-ba4d-08dea10a63dd
x-checkrecipientrouted: true
nodisclaimer: true
X-MS-Exchange-SenderADCheck: 1
X-MS-Exchange-AntiSpam-Relay: 0
X-Microsoft-Antispam-Untrusted:
 BCL:0;ARA:13230040|366016|1800799024|376014|18002099003|38070700021|56012099003|22082099003;
X-Microsoft-Antispam-Message-Info-Original:
 e4Si/TS0hHB/JnuvK6qr2yHgSQ0C4iPyTR788xsxG9xaQUuvss3+YMOMsrT3FCJ4s9mjKlvNKXeeEBYiN4cH8IXlVeEtim702uF2IiLdxo+c0xyGq+VqjTTSOxlcvRuKTqLxCxFBM7ECH/sTLjpdX0XaqhKKXlMLuCUz5NWO5TOklA2IuDLQvvppPKWEPwEMMvV9IqgkDhYzyVA6633JyYYPLzJL0lXZBLOG/z67S7iwj4VEzusY4cKOer7OgkvYMDj2A4/8tiiGtr3kM09QbC0DAtVtzStMTvZInUrAoqqxqWhH70EMM+0tAZazsyS6y1YT0J95OV4CbszEi9oNYKeazghA5ljzrlI8IK7SumYXuDPDpajiQJL/nnh9rYvmfeMR5G5Er62qf8/T68rs00FSUg/eck9znzhP1G+h6ZvlfMRL6U5LwNvHLuwtcy1HptmchV0jxrnEJ3kcOKxYFIMYyUysQCZCcNQpp2Bq89n/IQtyU+I+IHU/098saUaMnMO5dNUpFuHkawjvFoLlvtRD0Z3/MtS7lCL7MR9Nasum2NRst/g0SNuSK/mWKMZdhnUuf0lAjuPYUJL99ckF7TyoO1aAPbH4JXYpFS1lg8dy0eP0KT3NSMZ3vrFRn6nxjFKVgiPmCw+7Bt9Q+B23TIebqs11QmiOhgl4NL1bPKGe9xATrJ84CcZiqgXMBNvDE6k0rqpmbfcNKPpO+Zav7D504VPrRZwl0VnRp2Td0Cy4Vb8OFEqPvBEvO8bKRbDPC1vo8ieT1yXsgZvuKBMW1PXVNe2fpuOzQf/QX/Q3spE=
X-Forefront-Antispam-Report-Untrusted:
 CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:PR3PR08MB5593.eurprd08.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(366016)(1800799024)(376014)(18002099003)(38070700021)(56012099003)(22082099003);DIR:OUT;SFP:1101;
Content-Type: text/plain; charset="utf-8"
Content-ID: <03DE80EF664CE949B62939200B67877A@eurprd08.prod.outlook.com>
Content-Transfer-Encoding: base64
MIME-Version: 1.0
X-Exchange-RoutingPolicyChecked:
 s9ANxr5zgwU9XTG6zW6GtnKHYhzs63Ftp6MuxF77EbzgUhf2jkotb00GE9tc4X7LS6IwfTcmqk/rv/h3Qv7xfM5xMfHJus1HahXoc47ARoFEDRlpwcequOtwdFNxKNZCRnvO/mcZahGZRMFeGjoTcHoV0gQPsOIX7d04ugmL0Yb4mGZdFLukTMybTQ1D7nu3EpRNjjaqcfL/ozsn4Fz1QIto8XNyDJqg9Ha7EIaC8FnktZXVZsIRsoS3zKFKTvMCPNL9Nw2j82S58Rj7RNp1L2Eog0hnEwzufHyoIPJVovSfk93B9n8KJV+SZWze12dnId0ce+qZ7UXLvyodqDti/w==
X-MS-Exchange-Transport-CrossTenantHeadersStamped: GV1PR08MB11167
X-EOPAttributedMessage: 0
X-MS-Exchange-Transport-CrossTenantHeadersStripped:
 DB1PEPF000509ED.eurprd03.prod.outlook.com
X-MS-PublicTrafficType: Email
X-MS-Office365-Filtering-Correlation-Id-Prvs:
	999e0d0d-9837-469e-c0a1-08dea10a3cda
X-Microsoft-Antispam:
	BCL:0;ARA:13230040|36860700016|376014|82310400026|1800799024|14060799003|35042699022|56012099003|18002099003|22082099003;
X-Microsoft-Antispam-Message-Info:
	ppf3k/67CjnXVTpjqX510yoEdPS7/VYZ9QPICAtkLOWHkC1ZWYoz2f6ynfD7bxczu+hu32T9BiFGP9aLtnHGBFDVhulWBv1m95SZGiHbjlbMiKKuNLDse99EPLn/IHRr/f2t1zV8bRFmsURIRsjl0gSsh47+NIcONOUZT+wEQ6PfhYHSP77pP/clbVUwf6A5EONtIaude12tjxiLZBL7QV8zivIizW/oQHAhziXQ2JTdYW5g+eQieIteFdW6XBTjri4Hscw7p/8rzsWX2qaeCOuFNC/GlHTsz495T6VpMDuOPHl/D4+pp5jcLOjATd1Xy+P3vv5PJ2h1fpSTdLt2L0wEzcFdVKc7IDsX7RAg0i2bw+2T3iOEGnt+zCxjXfnjNChZXy0HbpeoturNmJwcf5t4dVyb6/oXFsUohrpVIGPVjzljqxjAnGOfrsIxPov+TbKCfqVbN+BiLnjVVjFr83b0H7zRCTViW3XcHRHF57B1OrnwftNnwMXKKrWzsdeBaVIHgbshVjyIqsOqdcpdCpFPnxomk0gq5h834I28Ofp9YKzrRNNiBq6vyQuEBdN5bq2Tkas5wKmMq9r5EdtA9MnkV61a3DFWbUR2GH9kDJtMKxqKhxzI4B8AzuRRakYi8o5w/2vBWTR5JNgc6ErRPNpUd4stcXSVfbGokYDZNotY+zYdUDVNcIQZf55Q6sefBGdhxntMbY2/EzM1DH6OkMFHI1whXsc9aqgw6/mQEOhYzXu8/DP0/WQmFEGPeHWbfq4vAVeEluJs3YdgHuT0zA==
X-Forefront-Antispam-Report:
	CIP:4.158.2.129;CTRY:GB;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:outbound-uk1.az.dlp.m.darktrace.com;PTR:InfoDomainNonexistent;CAT:NONE;SFS:(13230040)(36860700016)(376014)(82310400026)(1800799024)(14060799003)(35042699022)(56012099003)(18002099003)(22082099003);DIR:OUT;SFP:1101;
X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1
X-MS-Exchange-AntiSpam-MessageData-0:
	x8sgPsVFHxp+xXV5/+AEP1ixhJQy7fCVEr24zpEuq6Yti422lHq1ze/WYgikbafh66Rvy66L5IGLHtFl6R0KypB5u/urH3s9UErDpe/OKIn3BNXMPoylDvTbFDd/+R++1s/ffbUAreQ+vapxjG8Xy+622fhk7moLkBUSu/AtFN0wjuBcuDy5+oLJ1SJbZPPUEVLea8mnYt37IiKUNLcoM+SMdKAjZFzvdgHGADtuBWFjyEGmCpZ5WjDkNBsZg4Rqjjq8dIK2+yRxCJ/IsYPTGYbLbU5YjfoWN6Wux0zW/bbItASgub5lDoaQy++oZPLFAbPdsmC6Gfkbmc1SJxjeNINA95y/7137YLXBbzELk+As1lKrzeDwhZ8l+Z1oe5vTFvxA/+2JXTx/oEaRZtY5nefnbyX8jp3rQh7LdvhcrTGTTUAEVsIuNKuU0bIG9mSs
X-OriginatorOrg: arm.com
X-MS-Exchange-CrossTenant-OriginalArrivalTime: 23 Apr 2026 07:31:52.9343
 (UTC)
X-MS-Exchange-CrossTenant-Network-Message-Id: 229da350-7b86-4ce3-ba4d-08dea10a63dd
X-MS-Exchange-CrossTenant-Id: f34e5979-57d9-4aaa-ad4d-b122a662184d
X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=f34e5979-57d9-4aaa-ad4d-b122a662184d;Ip=[4.158.2.129];Helo=[outbound-uk1.az.dlp.m.darktrace.com]
X-MS-Exchange-CrossTenant-AuthSource:
	DB1PEPF000509ED.eurprd03.prod.outlook.com
X-MS-Exchange-CrossTenant-AuthAs: Anonymous
X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem
X-MS-Exchange-Transport-CrossTenantHeadersStamped: AS2PR08MB9271
X-purgate-ID: tlsNG-c201ff/1776929516-E93A0443-2C6D5A5A/0/0
X-purgate-type: clean
X-purgate-size: 3474

SGkgSmVucywNCg0KPiBPbiAyMiBBcHIgMjAyNiwgYXQgMTM6MzYsIEplbnMgV2lrbGFuZGVyIDxq
ZW5zLndpa2xhbmRlckBsaW5hcm8ub3JnPiB3cm90ZToNCj4gDQo+IEhpIEJlcnRhbmQsDQo+IA0K
PiBPbiBGcmksIEFwciAxNywgMjAyNiBhdCAzOjQx4oCvUE0gQmVydHJhbmQgTWFycXVpcw0KPiA8
YmVydHJhbmQubWFycXVpc0Bhcm0uY29tPiB3cm90ZToNCj4+IA0KPj4gVGhlIG5vdGlmaWNhdGlv
biBoYW5kbGVycyBzdGlsbCB2YWxpZGF0ZSBvdmVybGFwcGluZyBzdWJzZXRzIG9mIHRoZWlyDQo+
PiBpbnB1dHMuIEJJTkQsIFVOQklORCwgYW5kIFNFVCBlYWNoIGRlY29kZSBjYWxsZXIgYW5kIGRl
c3RpbmF0aW9uIElEcw0KPj4gbG9jYWxseSwgR0VUIHN0aWxsIGFjY2VwdHMgYSBub24temVybyBy
ZWNlaXZlciB2Q1BVIElEIGFuZCByZXNlcnZlZCBmbGFnDQo+PiBiaXRzLCBhbmQgU0VUIHN0aWxs
IGFjY2VwdHMgbm9uLXplcm8gTlMtdmlydHVhbCBmbGFncy4gQklORCBhbHNvIHRyZWF0cw0KPj4g
dW5zdXBwb3J0ZWQgbm9uLXplcm8gZmxhZyBlbmNvZGluZ3MgYXMgYSBzdXBwb3J0ZWQtZmVhdHVy
ZSBmYWlsdXJlDQo+PiBpbnN0ZWFkIG9mIGFzIG1hbGZvcm1lZCBpbnB1dC4NCj4+IA0KPj4gQWRk
IGZmYV9ub3RpZl9wYXJzZV9wYXJhbXMoKSBhbmQgdXNlIGl0IHRvIGNlbnRyYWxpemUgdGhlIGNv
bW1vbg0KPj4gY2FsbGVyL2Rlc3RpbmF0aW9uIGFuZCBub24temVybyBiaXRtYXAgY2hlY2tzIGZv
ciBCSU5ELCBVTkJJTkQsIGFuZCBTRVQuDQo+PiBBbHNvIHJlamVjdCBtYWxmb3JtZWQgR0VUIGFu
ZCBTRVQgcmVxdWVzdHMgbG9jYWxseSBiZWZvcmUgdG91Y2hpbmcNCj4+IGNhY2hlZCBzdGF0ZSBv
ciBmb3J3YXJkaW5nIGFueXRoaW5nIHRvIHRoZSBTUE1DLiBLZWVwIEJJTkQgbGltaXRlZCB0bw0K
Pj4gZ2xvYmFsIG5vdGlmaWNhdGlvbnMgYW5kIHJlamVjdCB1bnN1cHBvcnRlZCBub24temVybyBm
bGFnIGVuY29kaW5ncyB3aXRoDQo+PiBJTlZBTElEX1BBUkFNRVRFUlMuDQo+PiANCj4+IC0gYWRk
IGEgc2hhcmVkIHBhcmFtZXRlciBwYXJzZXIgZm9yIG5vdGlmaWNhdGlvbiBjYWxsZXIvZGVzdGlu
YXRpb24NCj4+ICB2YWxpZGF0aW9uDQo+PiAtIHdpcmUgQklORCBhbmQgVU5CSU5EIHRocm91Z2gg
dGhlIHNoYXJlZCBwYXJzZXIgYW5kIHJlamVjdCB1bnN1cHBvcnRlZA0KPj4gIGJpbmQgZmxhZyBl
bmNvZGluZ3Mgd2l0aCBJTlZBTElEX1BBUkFNRVRFUlMNCj4+IC0gcmVqZWN0IG5vbi16ZXJvIHJl
Y2VpdmVyIHZDUFUgYW5kIHJlc2VydmVkIGZsYWcgYml0cyBpbg0KPj4gIEZGQV9OT1RJRklDQVRJ
T05fR0VUDQo+PiAtIHJlamVjdCBub24temVybyBmbGFncyBpbiB0aGUgTlMtdmlydHVhbCBGRkFf
Tk9USUZJQ0FUSU9OX1NFVCBwYXRoDQo+PiANCj4+IEZ1bmN0aW9uYWwgaW1wYWN0OiBtYWxmb3Jt
ZWQgbm90aWZpY2F0aW9uIHJlcXVlc3RzIGFyZSByZWplY3RlZA0KPj4gY29uc2lzdGVudGx5IGVh
cmxpZXIgaW4gdGhlIG1lZGlhdG9yLg0KPj4gDQo+PiBTaWduZWQtb2ZmLWJ5OiBCZXJ0cmFuZCBN
YXJxdWlzIDxiZXJ0cmFuZC5tYXJxdWlzQGFybS5jb20+DQo+PiAtLS0NCj4+IHhlbi9hcmNoL2Fy
bS90ZWUvZmZhX25vdGlmLmMgfCA2MSArKysrKysrKysrKysrKysrKysrKysrKysrKysrKy0tLS0t
LS0NCj4+IDEgZmlsZSBjaGFuZ2VkLCA1MCBpbnNlcnRpb25zKCspLCAxMSBkZWxldGlvbnMoLSkN
Cj4+IA0KPj4gZGlmZiAtLWdpdCBhL3hlbi9hcmNoL2FybS90ZWUvZmZhX25vdGlmLmMgYi94ZW4v
YXJjaC9hcm0vdGVlL2ZmYV9ub3RpZi5jDQo+PiBpbmRleCBkMTUxMTk0MDlhMjUuLjQ5MWRiM2Iw
NGRmNSAxMDA2NDQNCj4+IC0tLSBhL3hlbi9hcmNoL2FybS90ZWUvZmZhX25vdGlmLmMNCj4+ICsr
KyBiL3hlbi9hcmNoL2FybS90ZWUvZmZhX25vdGlmLmMNCj4+IEBAIC00MiwyMSArNDIsNDAgQEAg
c3RhdGljIHZvaWQgaW5qZWN0X25vdGlmX3BlbmRpbmcoc3RydWN0IGRvbWFpbiAqZCkNCj4+ICAg
ICAgICAgICAgICAgIGQpOw0KPj4gfQ0KPj4gDQo+PiArc3RhdGljIGludDMyX3QgZmZhX25vdGlm
X3BhcnNlX3BhcmFtcyh1aW50MTZfdCBkb21faWQsIHVpbnQxNl90IGNhbGxlcl9pZCwNCj4+ICsg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVpbnQxNl90IGRlc3RfaWQsIHVp
bnQzMl90IGJpdG1hcF9sbywNCj4+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHVpbnQzMl90IGJpdG1hcF9oaSkNCj4gDQo+IE5pdDogSSB3b3VsZCBoYXZlIHBpY2tlZCBm
ZmFfbm90aWZfdmFsaWRhdGVfcGFyYW1zKCkgb3INCj4gZmZhX25vdGlmX2NoZWNrX3BhcmFtcygp
LCBidXQgdGhhdCBtaWdodCBiZSBtb3JlIGEgbWF0dGVyIG9mIHRhc3RlLg0KDQpBZ3JlZSwgSSB3
aWxsIHJlbmFtZSBpdCB0byB2YWxpZGF0ZV9wYXJhbXMuDQoNCg0KPiBBbnl3YXksIGxvb2tzIGdv
b2Q6DQo+IFJldmlld2VkLWJ5OiBKZW5zIFdpa2xhbmRlciA8amVucy53aWtsYW5kZXJAbGluYXJv
Lm9yZz4NCg0KVGhhbmtzDQpCZXJ0cmFuZA0KDQo=


From xen-devel-bounces@lists.xenproject.org Thu Apr 23 07:34:12 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 23 Apr 2026 07:34:12 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1291653.1570511 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wFoZf-0004us-J0; Thu, 23 Apr 2026 07:34:11 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1291653.1570511; Thu, 23 Apr 2026 07:34: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 1wFoZf-0004uk-F8; Thu, 23 Apr 2026 07:34:11 +0000
Received: by outflank-mailman (input) for mailman id 1291653;
 Thu, 23 Apr 2026 07:34:10 +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.19db942a614000f373@swg.vates.tech>)
 id 1wFoZd-0004ua-3H
 for xen-devel@lists.xenproject.org; Thu, 23 Apr 2026 07:34:10 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wFoZa-0006ZV-Fy
 for xen-devel@lists.xenproject.org; Thu, 23 Apr 2026 09:34:08 +0200
Received: from [10.42.69.2] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1) (envelope-from
 <prod-mta-13.8631fc262581453bbf619ec5b2062170.19db942a614000f373@swg.vates.tech>)
 id 69e9cb67-5cb7-0a2a0a5109dd-0a2a450282e6-46
 for <xen-devel@lists.xenproject.org>; Thu, 23 Apr 2026 09:34:07 +0200
Received: from [185.255.28.34] (helo=prod-mta-13.swg-srv.net)
 by tlsNG-720697.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.1)
 (envelope-from
 <prod-mta-13.8631fc262581453bbf619ec5b2062170.19db942a614000f373@swg.vates.tech>)
 id 69e9cb6f-af86-0a2a45020019-b9ff1c22836d-3
 for <xen-devel@lists.xenproject.org>; Thu, 23 Apr 2026 09:34:07 +0200
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
 19db942a614000f373.003 for <xen-devel@lists.xenproject.org>
 (version=TLSv1.3 cipher=TLS_AES_256_GCM_SHA384);
 Thu, 23 Apr 2026 07:34:06 +0000
Received: from [192.168.1.18] (88-175-170-134.subs.proxad.net [88.175.170.134])
 (Authenticated sender: teddy.astie)
 by mail2.vates.fr (Postfix) with ESMTPSA id 5449980C28;
 Thu, 23 Apr 2026 09:34:05 +0200 (CEST)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@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=iqKyDE4yAoANFonETay2qpP2yXOlRoZkJJFp7OjGNc8=;
 h=from:subject:date:message-id:to:cc:mime-version:content-type:in-reply-to:references:feedback-id;
 b=nrTgpaL7eztkdlCFbQIkY+TPMXTK8uAOekP5rWhRLNasQigDy0USblpXhBZJRRWBSLyKgcR+c
 ff87A9wlcgNGHmL1pv/O40m9siU+aIWxOq1j+ZJH3W+h0Qy9DaqUGY3iwfIZlyfgHy44hCslYru
 IICH7J7CgAY/vGYemcZ8oy0nlDcz5zXXF+hmScMSWIKeG7Z12VqszxCCwENB0qg7GLHKMJO1Xeu
 uJjRWC9TDTrqogbsiqF42w2HRZPSLLB/r1mxe1LauGMU9Rl6hKKJhf19Z5PdiX00uEXwM+93mTr
 lmcqjx8653W+5vzwJ8X83y2TJoP4WJD/CZflwzNGT9pA==
X-Zone-Loop: d3851645cb241673af1114c93b68980cf4cb5268568b
x-campaign-type: default
x-transaction-id: 0bd0b6ba-738f-4205-b0b9-758db9041adf
x-swg-uid: 01-fcc5ed98-0882-498a-90a8-e7fca6a33735
X-Mailer: Sweego
Message-ID:
 <1776929646.8631fc262581453bbf619ec5b2062170.19db942a614000f373@vates.tech>
x-swg-bid: 1776929646.8631fc262581453bbf619ec5b2062170.19db942a614000f373
Feedback-ID: default:8631fc262581453bbf619ec5b2062170:Sweego
x-campaign-id: default
x-client-id: 8631fc262581453bbf619ec5b2062170
X-Originating-IP: [37.26.189.201]
Date: Thu, 23 Apr 2026 09:34:04 +0200
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [RFC PATCH 2/2] vtd: Replace macros with bitfield
To: Jan Beulich <jbeulich@suse.com>
Cc: Andrew Cooper <andrew.cooper3@citrix.com>,
 =?UTF-8?Q?Roger_Pau_Monn=C3=A9?= <roger.pau@citrix.com>,
 xen-devel@lists.xenproject.org
References: <815edfd0db90859a4ce270d833d9d721ff66e31c.1775814143.git.teddy.astie@vates.tech>
 <3182da144d0cb998c9ae897b55285b7e408cd972.1775814143.git.teddy.astie@vates.tech>
 <ec24d32d-9378-4a07-b84d-aaebfd46f517@suse.com>
Content-Language: en-US
From: Teddy Astie <teddy.astie@vates.tech>
In-Reply-To: <ec24d32d-9378-4a07-b84d-aaebfd46f517@suse.com>
X-BM-Disclaimer: Yes
Content-Type: multipart/alternative; boundary="-=Part.2641.95305ad117c55529.19db942a372.78ef5b47f81d8135=-"
X-Bm-Milter-Handled: 4ffbd6c1-ee69-4e1b-aabd-f977039bd3e2
X-Bm-Transport-Timestamp: 1776929645426
X-purgate-ID: tlsNG-720697/1776929647-8137C161-C1214151/0/0
X-purgate-type: clean
X-purgate-size: 3044

---=Part.2641.95305ad117c55529.19db942a372.78ef5b47f81d8135=-
Content-Type: text/plain; charset=utf-8
Content-Transfer-Encoding: quoted-printable

Le 20/04/2026 =C3=A0 15:54, Jan Beulich a =C3=A9crit=C2=A0:
> On 10=2E04=2E2026 12:09, Teddy Astie wrote:
>> Replace macros with bitfield to allow simplyfing the code and be
>> less error prone when manipulating PTEs=2E
>>
>> It also has the effect of directly exposing the mfn in the pte struct
>> instead of derivating it from the raw pte value using dma_pte_addr()=2E
>>
>> Signed-off-by: Teddy Astie <teddy=2Eastie@vates=2Etech>
>> ---
>> It allows nicer constructs like
>>
>>    new=2Esnp =3D iommu_snoop;
>>
>> instead of
>>
>>    if ( iommu_snoop )
>>      dma_set_pte_snp(new);
>>
>> A lot of simplifications could be done afterward when switching the
>> logic from maddrs to mfns i=2Ee remove many maddr-mfn conversions=2E
>=20
> There's no real open question here, so it's not quite clear why this is
> marked RFC=2E We did do the same on the AMD side a while back, at least
> partly (I don't think we got all of it converted yet), so doing the
> conversion here surely is a good thing=2E The slightly larger =2E=2E=2E
>=20
>> bloat-o-meter (along with the previous change)
>>
>> add/remove: 0/0 grow/shrink: 7/3 up/down: 227/-45 (182)
>> Function                                     old     new   delta
>> addr_to_dma_page_maddr                       949    1058    +109
>> vtd_dump_page_table_level                    197     233     +36
>> fill_qpt                                    1151    1178     +27
>> print_vtd_entries                            486     504     +18
>> domain_context_mapping_one                  2098    2114     +16
>> intel_iommu_map_page                         909     921     +12
>> intel_iommu_unmap_page                       731     740      +9
>> intel_iommu_lookup_page                      185     176      -9
>> queue_free_pt                                442     425     -17
>> vtd_dump_page_table_level=2Ecold                86      67     -19
>> Total: Before=3D18446744073715636162, After=3D18446744073715636344, chg=
 +0=2E00%
>=20
> =2E=2E=2E code size shouldn't be much of a concern, albeit you may want =
to at
> least mention the (presumed) reason for some of the bigger increases,
> after comparing the generated code=2E
>=20
> (As an aside, the two values after Total: look entirely bogus=2E)
>=20
>> I guess using mfns 'everywhere' would improve the bloat-o-meter picture=
=2E
>=20
> It's not quite clear to me what you mean here=2E
>=20

There are many mfn<->maddr conversions done at various places which can=20
be eliminated=2E I guess some of the "bloat" is coming from there=2E

I may try in another patch to adjust some of the types to make that better=
=2E

> Jan
>=20



-- 
Teddy Astie | Vates XCP-ng Developer

XCP-ng & Xen Orchestra - Vates s=
olutions

web: https://vates=2Etech
---=Part.2641.95305ad117c55529.19db942a372.78ef5b47f81d8135=---


From xen-devel-bounces@lists.xenproject.org Thu Apr 23 07:38:28 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 23 Apr 2026 07:38:28 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1291660.1570518 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wFodk-0006TD-0m; Thu, 23 Apr 2026 07:38:24 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1291660.1570518; Thu, 23 Apr 2026 07:38: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 1wFodj-0006T6-U8; Thu, 23 Apr 2026 07:38:23 +0000
Received: by outflank-mailman (input) for mailman id 1291660;
 Thu, 23 Apr 2026 07:38:22 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <Bertrand.Marquis@arm.com>) id 1wFodi-0006T0-Nu
 for xen-devel@lists.xenproject.org; Thu, 23 Apr 2026 07:38:22 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wFodi-000nXx-4C
 for xen-devel@lists.xenproject.org; Thu, 23 Apr 2026 09:38:22 +0200
Received: from [10.42.69.4] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <Bertrand.Marquis@arm.com>)
 id 69e9cc63-5cb7-0a2a0a5109dd-0a2a4504db3c-22
 for <xen-devel@lists.xenproject.org>; Thu, 23 Apr 2026 09:38:21 +0200
Received: from [52.101.72.12]
 (helo=AM0PR02CU008.outbound.protection.outlook.com)
 by tlsNG-ebf023.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.1)
 (envelope-from <Bertrand.Marquis@arm.com>)
 id 69e9cc6b-1dec-0a2a45040019-3465480cb6fb-3
 for <xen-devel@lists.xenproject.org>; Thu, 23 Apr 2026 09:38:19 +0200
Received: from AM9P195CA0020.EURP195.PROD.OUTLOOK.COM (2603:10a6:20b:21f::25)
 by GV2PR08MB11372.eurprd08.prod.outlook.com (2603:10a6:150:2b0::17)
 with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9846.18; Thu, 23 Apr
 2026 07:38:15 +0000
Received: from AM3PEPF0000A79B.eurprd04.prod.outlook.com
 (2603:10a6:20b:21f:cafe::85) by AM9P195CA0020.outlook.office365.com
 (2603:10a6:20b:21f::25) with Microsoft SMTP Server (version=TLS1_3,
 cipher=TLS_AES_256_GCM_SHA384) id 15.20.9846.21 via Frontend Transport; Thu,
 23 Apr 2026 07:38:14 +0000
Received: from outbound-uk1.az.dlp.m.darktrace.com (4.158.2.129) by
 AM3PEPF0000A79B.mail.protection.outlook.com (10.167.16.106) with Microsoft
 SMTP Server (version=TLS1_3, cipher=TLS_AES_256_GCM_SHA384) id 15.20.9846.18
 via Frontend Transport; Thu, 23 Apr 2026 07:38:14 +0000
Received: from PR3PR08MB5593.eurprd08.prod.outlook.com (2603:10a6:102:84::13)
 by DU0PR08MB8397.eurprd08.prod.outlook.com (2603:10a6:10:407::17)
 with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9846.21; Thu, 23 Apr
 2026 07:37:10 +0000
Received: from PR3PR08MB5593.eurprd08.prod.outlook.com
 ([fe80::aae1:6871:afc4:620e]) by PR3PR08MB5593.eurprd08.prod.outlook.com
 ([fe80::aae1:6871:afc4:620e%5]) with mapi id 15.20.9818.023; Thu, 23 Apr 2026
 07: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=selector1 header.d=arm.com header.i="@arm.com" header.h="From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck"; dkim=pass header.s=selector1 header.d=arm.com header.i="@arm.com" header.h="From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck"
ARC-Seal: i=2; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=pass;
 b=fBfbvL8WElHladD60ZhiqEc3tKNTCD7XPHCf11q2AFqb0Ks8J4+e5AARJ4KPU6ym4CTHgpYzdb/gSKfuo+NF1Gwe275wP7qtBmeZwaR+SbPk33bLcYEkQlIzdwsVVvs0NTaDrXrRD+CE4wZV4VLU2PtOzzdNHiDGDrH72ZDjvhJAJYLfpP35VbBIgy56BRNgcRrkQDpN8QkTx1uqYgI+gkq7XquLPLoFQFGY/mSSfWMBKXdTEfcsTerSH4uvlZd+4+SmsSyu9t2P/2nLrE88GkL+5klompKbKonWuLg/WUN/CW5ut0bhh2hAbukf/e5lhbTdhSMVEHVICFpb/QRKYg==
ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com;
 s=arcselector10001;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1;
 bh=eOEyCtVTDiTHP6KYDLe6GNrDm6269DXbzWkQrDASJlk=;
 b=cFB4dHsPZZe64SdOxwFvsCU0GiU8KODoEiO+zLD58Vlaw0Rt75Eh8Ge4zxsJCQ+JISMsPav2oy0Jh8QPVIx4rePVn8ygG5zwCN1lCoytlwk86U+fN3lyNLbEnEL5q+f38sm2RyV2+ARR9cdIETDZOLaHVCM8tx7oe3Zcfa1r2bJhCOnhUBtlIMNYRAyLk5eWi51NPNgIfx232lX/XOXaXMbhWwpilgbTNC+04SSUeYLnMQuMfAFj8u9TxRyhwT/VFOxdcl90PAYXp1aN5sZdrXPvmQC2zWY2t+48yD5GWYMfjf9+iTjV6hesUHg/gkxFG8mMliSrYr0Lw00P5Iy1wA==
ARC-Authentication-Results: i=2; mx.microsoft.com 1; spf=pass (sender ip is
 4.158.2.129) smtp.rcpttodomain=linaro.org smtp.mailfrom=arm.com; dmarc=pass
 (p=none sp=none pct=100) action=none header.from=arm.com; dkim=pass
 (signature was verified) header.d=arm.com; arc=pass (0 oda=1 ltdi=1
 spf=[1,1,smtp.mailfrom=arm.com] dkim=[1,1,header.d=arm.com]
 dmarc=[1,1,header.from=arm.com])
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=arm.com; s=selector1;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck;
 bh=eOEyCtVTDiTHP6KYDLe6GNrDm6269DXbzWkQrDASJlk=;
 b=Bt5er/AQeUjaceTtKiKEllI78ve8bp7oRRWoi0Uhh4ZQk8X8YJ7/0SX4LWmTM5/tvZdRT3Ol0u1g1cHTVHtafj0APrJq51wJJmLmtSP5kcwrfY/Ol90sTwMFVW56VZnMwZx+bSd2MHD5ShPIREsVYIBhDVhyawyBCzNIq7Hk1Zo=
X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 4.158.2.129)
 smtp.mailfrom=arm.com; dkim=pass (signature was verified)
 header.d=arm.com;dmarc=pass action=none header.from=arm.com;
Received-SPF: Pass (protection.outlook.com: domain of arm.com designates
 4.158.2.129 as permitted sender) receiver=protection.outlook.com;
 client-ip=4.158.2.129; helo=outbound-uk1.az.dlp.m.darktrace.com; pr=C
ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none;
 b=dLKBBtUhFRqpf26BFlYL4J3jUdlCUHy/VpvXY54cA8IUQmXLbsidIAGQ5tQqwWpejqgJVAAygT0gcVhsyF6zH6wVNzjfb7yCZmklrfes85/8DcNwkTqlNooP5FuGqCLo3XhoZ2UVH19MfoBFF0aIArDhEsYuQuk4fDKiE419Mz+6QmB3upwiQIPk3sCHddG+Fqi2qowxcxFSQCo0nV7FXwyNso8CISeCm+29piX3r5FO9H8gXXfn/HpcaLjZP8pa28uemmJKu7yjKDmxhbzvzextil8geln4uNY4h9hsc4VZDnZDY1nrMKbVxZoxZOFt3g4NbI6muWaHbdXRqth97Q==
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com;
 s=arcselector10001;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1;
 bh=eOEyCtVTDiTHP6KYDLe6GNrDm6269DXbzWkQrDASJlk=;
 b=bDPyYXfRB34jjVm5uBt/f5oMvDhrylQe9/SwtWJmqDG58dpf2vFP5zqyGpJHqAmb0YhZtaquP+Z3whaG6yKL0DjI28NUDXVm8vrLRiGfOSLSaNkE0MrKew6UdmJIO2FJgtg1ao86Jz+jDEfI/FLgzBoYsPGdPUCjMm/6upGgKF9I4m9AmyYSrjyPbeTE6WlDqeIsblVpLkGf4yyMliN5cEqhNI9EhWNR9u5SwebwHvQ+AZ3KL7+2X+UyPZpX7d6BHdp9UrBm9TPQkUotzMVN5bYIPOpnb6Fzv2sriED+ZIb8P5+0YRjaBn0VZ5jSeD8Ht4epLsFDgZnyuFt8c9FmVg==
ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass
 smtp.mailfrom=arm.com; dmarc=pass action=none header.from=arm.com; dkim=pass
 header.d=arm.com; arc=none
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=arm.com; s=selector1;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck;
 bh=eOEyCtVTDiTHP6KYDLe6GNrDm6269DXbzWkQrDASJlk=;
 b=Bt5er/AQeUjaceTtKiKEllI78ve8bp7oRRWoi0Uhh4ZQk8X8YJ7/0SX4LWmTM5/tvZdRT3Ol0u1g1cHTVHtafj0APrJq51wJJmLmtSP5kcwrfY/Ol90sTwMFVW56VZnMwZx+bSd2MHD5ShPIREsVYIBhDVhyawyBCzNIq7Hk1Zo=
From: Bertrand Marquis <Bertrand.Marquis@arm.com>
To: Jens Wiklander <jens.wiklander@linaro.org>
CC: "xen-devel@lists.xenproject.org" <xen-devel@lists.xenproject.org>,
	Volodymyr Babchuk <volodymyr_babchuk@epam.com>, Stefano Stabellini
	<sstabellini@kernel.org>, Julien Grall <julien@xen.org>, Michal Orzel
	<michal.orzel@amd.com>
Subject: Re: [PATCH 4/6] xen/arm: ffa: Preserve secure notification state when
 polling SPMC
Thread-Topic: [PATCH 4/6] xen/arm: ffa: Preserve secure notification state
 when polling SPMC
Thread-Index: AQHcznAPe0xl1K1kNkahcHWHCVllLLXrDvkAgAE8FwA=
Date: Thu, 23 Apr 2026 07:37:10 +0000
Message-ID: <9422D87F-8E49-46BF-8335-F425DD669C19@arm.com>
References: <cover.1776266307.git.bertrand.marquis@arm.com>
 <5b9ce4a4a3927ce2287ec4db7f864174f53b8f17.1776266307.git.bertrand.marquis@arm.com>
 <CAHUa44FnKKpZOZ_oVKXZdaznmAcPC5Y3iF2MJ_o2o3i5M1+mFw@mail.gmail.com>
In-Reply-To:
 <CAHUa44FnKKpZOZ_oVKXZdaznmAcPC5Y3iF2MJ_o2o3i5M1+mFw@mail.gmail.com>
Accept-Language: en-GB, en-US
Content-Language: en-US
X-MS-Has-Attach:
X-MS-TNEF-Correlator:
x-mailer: Apple Mail (2.3864.500.181)
Authentication-Results-Original: dkim=none (message not signed)
 header.d=none;dmarc=none action=none header.from=arm.com;
x-ms-traffictypediagnostic:
	PR3PR08MB5593:EE_|DU0PR08MB8397:EE_|AM3PEPF0000A79B:EE_|GV2PR08MB11372:EE_
X-MS-Office365-Filtering-Correlation-Id: 7a2dc686-b215-4682-d569-08dea10b4738
x-checkrecipientrouted: true
nodisclaimer: true
X-MS-Exchange-SenderADCheck: 1
X-MS-Exchange-AntiSpam-Relay: 0
X-Microsoft-Antispam-Untrusted:
 BCL:0;ARA:13230040|366016|1800799024|376014|18002099003|38070700021|56012099003|22082099003;
X-Microsoft-Antispam-Message-Info-Original:
 I3xQOOuThpt7SR4oCfyBrkrtMcopnNXxVnzSGWr/AgsM1pbRuCFG1gI9YvpZiWId7rMJApfe357J2OPDI+fYgClH6jAvMrcPgiXlrAND//fEqcB7ywzPhBMP/WwIwBijx4rvCF0epz7hSxdIP8OGEeu7yC3KGT5OBL8VQwb6zfZg3+AXBG+HC8iIN/Nh8F8GBbM7Yq3eoz/7SgLrd5foZv7wFAT+gO2OlG4dne47U3AXrx0Beou6pGC80IKuyNqszic+pYTGkJlAZ3Lj91Cb+GSM420Yauz9zo3qLRXBVIkRBtvbeJMp6FS8FgkVkxQLpqucMhENLU/aQMcs4h8odcgEn0Ha7GuOyiy0dXdZt6HRBCkzPh0/y/y6fsmbYdlyf+H63P9T+i6FPdnv8Mxey1mzF1WtsS1+H91tYPShqDqffrAfJpY9Irq5AguHP9d72L8Zp+Fc0q3koKKSQocYztuGK9XfBQrL62h/hllCq8FPphTSm2Pn92oLvNq/+AbEFVubzeG0qcNQZtKbMsFMcFNx4fUVNl8FOan5gtjjZ0BzDU9UE5WjO0PY8BrTYEcbCQu3mA0XjvpKDoiFA1gZRESewvpylPJt7eZyVIN7h4TBXsctlYx9APEH71cJRfNRYWj0Z34AwAfqtbXxvPut2rwn8eJVHFbjZoI/WD252C5PAIS9TKzg1qSgdsI1z7iaJo0MYj+oqZwwFy06eSf27MXQA5H+JjvIxEASu0O35T3yeHzlPuqnBF02SbJuJ53hmNdXYybVv/KLnWIPdpvaTElUEe2Q5/Aai5Uro8k0k2w=
X-Forefront-Antispam-Report-Untrusted:
 CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:PR3PR08MB5593.eurprd08.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(366016)(1800799024)(376014)(18002099003)(38070700021)(56012099003)(22082099003);DIR:OUT;SFP:1101;
Content-Type: text/plain; charset="utf-8"
Content-ID: <2F385DC9F03EE04BB28208E40FC2FCFC@eurprd08.prod.outlook.com>
Content-Transfer-Encoding: base64
MIME-Version: 1.0
X-Exchange-RoutingPolicyChecked:
 WXit3GodzCmgHDfRIgq4ZUe+qHSfIOGSe6jal7vD+dNtVuzk1xvMw9hpY9fIdQW1QkzzWgnDAFebOsuaog/VVJWzwcMa5BuEzXmi3iMBEP9X3SN9Bj5Wvn0UtFlvrEHf98XMn/ei2ug8NBSiK1hxd+QOTlJnam4MEDDhY2iaTcL3nKDABL492igv5IrQQ9C/+VU1iezm7rF6t5xjAqyu0Mfa2CVesvdy69gSQMgCaH7VBsvVqdt9vMHPZhhgoh9fw58wQ/mpcBZeL+5xkVcC7xUOBC5cYJMzEx/IBAB5qU4I+OJ58xwNsq6Iv268NzNgkeHP2E3Tv6/iOwKhULfywg==
X-MS-Exchange-Transport-CrossTenantHeadersStamped: DU0PR08MB8397
X-EOPAttributedMessage: 0
X-MS-Exchange-Transport-CrossTenantHeadersStripped:
 AM3PEPF0000A79B.eurprd04.prod.outlook.com
X-MS-PublicTrafficType: Email
X-MS-Office365-Filtering-Correlation-Id-Prvs:
	eef55975-a355-4e51-d57f-08dea10b212f
X-Microsoft-Antispam:
	BCL:0;ARA:13230040|14060799003|36860700016|1800799024|376014|35042699022|82310400026|56012099003|18002099003|22082099003;
X-Microsoft-Antispam-Message-Info:
	qVFPBZhCZ8PU/VFg34paslUQGsfIey3n2adv9BkzZd05glb5hYTFU4MuLGyMTjX8LXGQLIkA7AwB2uyO54RBEM1OBTNea8eG9c4BYm275sZI+nMi+UukDp9UoZvgni90EL7eTPqOuGDuTcBSMpqP8cDk7TmprXGBxeZyyhsRpIoKacov7aED+gbicHsJl3Q+XrT5Y+mtziTRIFqgd4OffK2GwPqRQjfwOfOwjnxtI/1dSrbQrC9C2R87ifF+2NjKwXK2TWZD3LWS9TaXjVCaHDA18U1H98nyxzqbcZn9oLjdYA6MRWn5LiF6y94qfc2H4LgcQzUFQml0ptwlQy4QLMvdiamEpV1wH9/pYNxtOO3a+X6Uwc20fYdM7fxKpAN2i1Pku4LQd/fYqefzwaOWpu+I7RUVwSfWCsBxQ3aUhpzFP5IuD8ZQIvfYiPDG4LISnFKlrtTAJu99pz7R3JgYkb7t+ERsQ4UeiF/HvYcmmRxXvt1frq9UFqHg8+Y7L1DCeEKwGnH2ld0JmjoQToLyAU2UGAKHX0SNGil3QR/vf/g976VQVsFE618LmhDt0cP2kmBFj22l9Y1FJToCQkC5PF7mN1A25ozVUXhlXAWOeqvck6379ajGDEptHHJbNDjvKTEXCwzn2M5hi7heJTRGQMYOQwvSXrBZkJZdarDSGuOxtH+jQVJk7lTwBZt2J8Iwcq64puGtl7RrUKLVdbArdt5dFbWsQCcErtI/GbSU06K8U0ArfQi2CVk/ajIBBbf4FY2URcmjK8UCWngA3M2J0g==
X-Forefront-Antispam-Report:
	CIP:4.158.2.129;CTRY:GB;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:outbound-uk1.az.dlp.m.darktrace.com;PTR:InfoDomainNonexistent;CAT:NONE;SFS:(13230040)(14060799003)(36860700016)(1800799024)(376014)(35042699022)(82310400026)(56012099003)(18002099003)(22082099003);DIR:OUT;SFP:1101;
X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1
X-MS-Exchange-AntiSpam-MessageData-0:
	XXaz704pX/9zIcF9hTkNtH9gEkUFjQprymV7mE3zSZie8j2MQLEiWCIpd/C4vZ5LzIg1xiwxsccHs7/X3UbKvpvjHKBsOB/m6bccQ1ytSeWt4Km62j4GjBdx8U5AwkD8fnkGxdkWFqXhoU20r6k9g+1dqHNW/2zqtU/V2KgPV7hHkJGCYQOj1JoWWd7gsLEBg+suPrM1lbukzc2GvS4IBGAZZps0hh/58Bpks3nbfJQ6RU2ZwHbGa2N28TaoHbWx9gCz0y3Cc7ziKyi6jsyoLbFpQ9spY/vwVKMu5Zi309Y5DK2PRsmjwTOWGh3EhvwbJvtVXOjHS38CAuhTXA4KoAvECnIXiMdl3kwO0AszhpREiPpvEPULdSyAK9kEb0jgO2Fg/omJiA72MrO+6kq3SRnmDLqH1PEmCnpPZSdcm+Zoc9oGs9pFmAnrXs5KLS3b
X-OriginatorOrg: arm.com
X-MS-Exchange-CrossTenant-OriginalArrivalTime: 23 Apr 2026 07:38:14.3821
 (UTC)
X-MS-Exchange-CrossTenant-Network-Message-Id: 7a2dc686-b215-4682-d569-08dea10b4738
X-MS-Exchange-CrossTenant-Id: f34e5979-57d9-4aaa-ad4d-b122a662184d
X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=f34e5979-57d9-4aaa-ad4d-b122a662184d;Ip=[4.158.2.129];Helo=[outbound-uk1.az.dlp.m.darktrace.com]
X-MS-Exchange-CrossTenant-AuthSource:
	AM3PEPF0000A79B.eurprd04.prod.outlook.com
X-MS-Exchange-CrossTenant-AuthAs: Anonymous
X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem
X-MS-Exchange-Transport-CrossTenantHeadersStamped: GV2PR08MB11372
X-purgate-ID: tlsNG-ebf023/1776929899-2A9623FF-14552335/0/0
X-purgate-type: clean
X-purgate-size: 8540

SEkgSmVucywNCg0KPiBPbiAyMiBBcHIgMjAyNiwgYXQgMTQ6NDUsIEplbnMgV2lrbGFuZGVyIDxq
ZW5zLndpa2xhbmRlckBsaW5hcm8ub3JnPiB3cm90ZToNCj4gDQo+IEhpIEJlcnRyYW5kLA0KPiAN
Cj4gT24gRnJpLCBBcHIgMTcsIDIwMjYgYXQgMzo0MeKAr1BNIEJlcnRyYW5kIE1hcnF1aXMNCj4g
PGJlcnRyYW5kLm1hcnF1aXNAYXJtLmNvbT4gd3JvdGU6DQo+PiANCj4+IFNlY3VyZSBwZW5kaW5n
IHN0YXRlIGlzIGxhdGNoZWQgd2hlbiB0aGUgU1BNQyByYWlzZXMgdGhlIHNjaGVkdWxlDQo+PiBy
ZWNlaXZlciBpbnRlcnJ1cHQsIGJ1dCBYZW4gY3VycmVudGx5IGNsZWFycyB0aGF0IGxhdGNoIHRv
byBhZ2dyZXNzaXZlbHkuDQo+PiBHdWVzdCBGRkFfTk9USUZJQ0FUSU9OX0lORk9fR0VUIGNvbnN1
bWVzIHNlY3VyZV9wZW5kaW5nIGV2ZW4gdGhvdWdoIGl0DQo+PiBvbmx5IHJlcG9ydHMgcGVuZGlu
ZyBzdGF0ZSwgYW5kIHNlY3VyZSBGRkFfTk9USUZJQ0FUSU9OX0dFVCBvbmx5IGNsZWFycw0KPj4g
dGhlIGxhdGNoIHdoZW4gYm90aCBTUCBhbmQgU1BNIGJpdG1hcHMgYXJlIHJlcXVlc3RlZCB0b2dl
dGhlci4gVGhpcyBjYW4NCj4+IGRyb3AgYSBwZW5kaW5nIGluZGljYXRpb24gYmVmb3JlIHRoZSBy
ZWNlaXZlciByZXRyaWV2ZXMgc2VjdXJlDQo+PiBub3RpZmljYXRpb25zLCBvciBrZWVwIElORk9f
R0VUIHJlcG9ydGluZyBzdGFsZSBzZWN1cmUgcGVuZGluZyBzdGF0ZQ0KPj4gYWZ0ZXIgYSBzdWNj
ZXNzZnVsIEdFVC4NCj4+IA0KPj4gS2VlcCBzZWN1cmVfcGVuZGluZyBhcyBhIGxhdGNoZWQgaW5k
aWNhdGlvbiB1bnRpbCBzZWN1cmUgbm90aWZpY2F0aW9ucw0KPj4gYXJlIGFjdHVhbGx5IHJldHJp
ZXZlZC4gR3Vlc3QgRkZBX05PVElGSUNBVElPTl9JTkZPX0dFVCBub3cgcmVwb3J0cyB0aGUNCj4+
IGxhdGNoZWQgc3RhdGUgd2l0aG91dCBjbGVhcmluZyBpdCwgd2hpbGUgYSBzdWNjZXNzZnVsIHNl
Y3VyZQ0KPj4gRkZBX05PVElGSUNBVElPTl9HRVQgY2xlYXJzIHRoZSBsYXRjaCByZWdhcmRsZXNz
IG9mIHdoaWNoIHNlY3VyZSBiaXRtYXANCj4+IGZsYWdzIHdlcmUgcmVxdWVzdGVkLiBBbHNvIHBy
b3RlY3Qgc2VjdXJlX3BlbmRpbmcgd2l0aCBub3RpZl9sb2NrLA0KPj4gc2VyaWFsaXplIFNQTUMg
SU5GT19HRVQgcG9sbGluZyBiZWhpbmQgbm90aWZfaW5mb19sb2NrLCBhbmQgcHJlc2VydmUgdGhl
DQo+PiBjYWxsZXItdmlzaWJsZSBJTkZPX0dFVCBzdWNjZXNzIHdpZHRoLg0KPj4gDQo+PiBGdW5j
dGlvbmFsIGltcGFjdDogZ3Vlc3QgSU5GT19HRVQgcHJlc2VydmVzIHRoZSBzZWN1cmUgcGVuZGlu
Zw0KPj4gaW5kaWNhdGlvbiB1bnRpbCBzZWN1cmUgbm90aWZpY2F0aW9ucyBhcmUgcmV0cmlldmVk
LCBhbmQgc3VjY2Vzc2Z1bA0KPj4gc2VjdXJlIEdFVCBjbGVhcnMgdGhlIGd1ZXN0LXZpc2libGUg
cGVuZGluZyBsYXRjaC4NCj4+IA0KPj4gU2lnbmVkLW9mZi1ieTogQmVydHJhbmQgTWFycXVpcyA8
YmVydHJhbmQubWFycXVpc0Bhcm0uY29tPg0KPj4gLS0tDQo+PiB4ZW4vYXJjaC9hcm0vdGVlL2Zm
YV9ub3RpZi5jIHwgNTQgKysrKysrKysrKysrKysrKysrKysrKystLS0tLS0tLS0tLS0tDQo+PiAx
IGZpbGUgY2hhbmdlZCwgMzUgaW5zZXJ0aW9ucygrKSwgMTkgZGVsZXRpb25zKC0pDQo+PiANCj4+
IGRpZmYgLS1naXQgYS94ZW4vYXJjaC9hcm0vdGVlL2ZmYV9ub3RpZi5jIGIveGVuL2FyY2gvYXJt
L3RlZS9mZmFfbm90aWYuYw0KPj4gaW5kZXggNDkxZGIzYjA0ZGY1Li5mZmYwMGNhMmJhZWMgMTAw
NjQ0DQo+PiAtLS0gYS94ZW4vYXJjaC9hcm0vdGVlL2ZmYV9ub3RpZi5jDQo+PiArKysgYi94ZW4v
YXJjaC9hcm0vdGVlL2ZmYV9ub3RpZi5jDQo+PiBAQCAtMTgsNiArMTgsNyBAQA0KPj4gDQo+PiBz
dGF0aWMgYm9vbCBfX3JvX2FmdGVyX2luaXQgZndfbm90aWZfZW5hYmxlZDsNCj4+IHN0YXRpYyB1
bnNpZ25lZCBpbnQgX19yb19hZnRlcl9pbml0IG5vdGlmX3NyaV9pcnE7DQo+PiArc3RhdGljIERF
RklORV9TUElOTE9DSyhub3RpZl9pbmZvX2xvY2spOw0KPj4gDQo+PiBzdGF0aWMgdm9pZCBpbmpl
Y3Rfbm90aWZfcGVuZGluZyhzdHJ1Y3QgZG9tYWluICpkKQ0KPj4gew0KPj4gQEAgLTEwOSw2ICsx
MTAsNyBAQCB2b2lkIGZmYV9oYW5kbGVfbm90aWZpY2F0aW9uX2luZm9fZ2V0KHN0cnVjdCBjcHVf
dXNlcl9yZWdzICpyZWdzKQ0KPj4gew0KPj4gICAgIHN0cnVjdCBkb21haW4gKmQgPSBjdXJyZW50
LT5kb21haW47DQo+PiAgICAgc3RydWN0IGZmYV9jdHggKmN0eCA9IGQtPmFyY2gudGVlOw0KPj4g
KyAgICB1aW50MzJfdCBmaWQgPSBnZXRfdXNlcl9yZWcocmVncywgMCk7DQo+PiAgICAgYm9vbCBu
b3RpZl9wZW5kaW5nOw0KPj4gDQo+PiAgICAgaWYgKCAhSVNfRU5BQkxFRChDT05GSUdfRkZBX1ZN
X1RPX1ZNKSAmJiAhZndfbm90aWZfZW5hYmxlZCApDQo+PiBAQCAtMTE3LDcgKzExOSwxMCBAQCB2
b2lkIGZmYV9oYW5kbGVfbm90aWZpY2F0aW9uX2luZm9fZ2V0KHN0cnVjdCBjcHVfdXNlcl9yZWdz
ICpyZWdzKQ0KPj4gICAgICAgICByZXR1cm47DQo+PiAgICAgfQ0KPj4gDQo+PiAtICAgIG5vdGlm
X3BlbmRpbmcgPSB0ZXN0X2FuZF9jbGVhcl9ib29sKGN0eC0+bm90aWYuc2VjdXJlX3BlbmRpbmcp
Ow0KPj4gKyAgICBzcGluX2xvY2soJmN0eC0+bm90aWYubm90aWZfbG9jayk7DQo+PiArICAgIG5v
dGlmX3BlbmRpbmcgPSBjdHgtPm5vdGlmLnNlY3VyZV9wZW5kaW5nOw0KPj4gKyAgICBzcGluX3Vu
bG9jaygmY3R4LT5ub3RpZi5ub3RpZl9sb2NrKTsNCj4+ICsNCj4+ICAgICBpZiAoIElTX0VOQUJM
RUQoQ09ORklHX0ZGQV9WTV9UT19WTSkgKQ0KPj4gICAgIHsNCj4+ICAgICAgICAgbm90aWZfcGVu
ZGluZyB8PSB0ZXN0X2FuZF9jbGVhcl9ib29sKGN0eC0+bm90aWYudm1fcGVuZGluZyk7DQo+PiBA
QCAtMTMxLDcgKzEzNiw5IEBAIHZvaWQgZmZhX2hhbmRsZV9ub3RpZmljYXRpb25faW5mb19nZXQo
c3RydWN0IGNwdV91c2VyX3JlZ3MgKnJlZ3MpDQo+PiAgICAgaWYgKCBub3RpZl9wZW5kaW5nICkN
Cj4+ICAgICB7DQo+PiAgICAgICAgIC8qIEEgcGVuZGluZyBnbG9iYWwgbm90aWZpY2F0aW9uIGZv
ciB0aGUgZ3Vlc3QgKi8NCj4+IC0gICAgICAgIGZmYV9zZXRfcmVncyhyZWdzLCBGRkFfU1VDQ0VT
U182NCwgMCwNCj4+ICsgICAgICAgIGZmYV9zZXRfcmVncyhyZWdzLA0KPj4gKyAgICAgICAgICAg
ICAgICAgICAgIHNtY2NjX2lzX2NvbnZfNjQoZmlkKSA/IEZGQV9TVUNDRVNTXzY0IDogRkZBX1NV
Q0NFU1NfMzIsDQo+PiArICAgICAgICAgICAgICAgICAgICAgMCwNCj4+ICAgICAgICAgICAgICAg
ICAgICAgIDFVIDw8IEZGQV9OT1RJRl9JTkZPX0dFVF9JRF9DT1VOVF9TSElGVCwgZmZhX2dldF92
bV9pZChkKSwNCj4+ICAgICAgICAgICAgICAgICAgICAgIDAsIDAsIDAsIDApOw0KPj4gICAgIH0N
Cj4+IEBAIC0xNTQsNiArMTYxLDggQEAgdm9pZCBmZmFfaGFuZGxlX25vdGlmaWNhdGlvbl9nZXQo
c3RydWN0IGNwdV91c2VyX3JlZ3MgKnJlZ3MpDQo+PiAgICAgdWludDMyX3QgdzUgPSAwOw0KPj4g
ICAgIHVpbnQzMl90IHc2ID0gMDsNCj4+ICAgICB1aW50MzJfdCB3NyA9IDA7DQo+PiArICAgIHVp
bnQzMl90IHNlY3VyZV9mbGFncyA9IGZsYWdzICYgKCBGRkFfTk9USUZfRkxBR19CSVRNQVBfU1Ag
fA0KPj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRkZBX05PVElGX0ZM
QUdfQklUTUFQX1NQTSApOw0KPj4gDQo+PiAgICAgaWYgKCAhSVNfRU5BQkxFRChDT05GSUdfRkZB
X1ZNX1RPX1ZNKSAmJiAhZndfbm90aWZfZW5hYmxlZCApDQo+PiAgICAgew0KPj4gQEAgLTE3Mywy
NyArMTgyLDE2IEBAIHZvaWQgZmZhX2hhbmRsZV9ub3RpZmljYXRpb25fZ2V0KHN0cnVjdCBjcHVf
dXNlcl9yZWdzICpyZWdzKQ0KPj4gICAgICAgICByZXR1cm47DQo+PiAgICAgfQ0KPj4gDQo+PiAt
ICAgIGlmICggZndfbm90aWZfZW5hYmxlZCAmJiAoZmxhZ3MgJiAoIEZGQV9OT1RJRl9GTEFHX0JJ
VE1BUF9TUCB8DQo+PiAtICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZG
QV9OT1RJRl9GTEFHX0JJVE1BUF9TUE0gKSkgKQ0KPj4gKyAgICBpZiAoIGZ3X25vdGlmX2VuYWJs
ZWQgJiYgc2VjdXJlX2ZsYWdzICkNCj4+ICAgICB7DQo+PiAgICAgICAgIHN0cnVjdCBhcm1fc21j
Y2NfMV8yX3JlZ3MgYXJnID0gew0KPj4gICAgICAgICAgICAgLmEwID0gRkZBX05PVElGSUNBVElP
Tl9HRVQsDQo+PiAgICAgICAgICAgICAuYTEgPSByZWN2LA0KPj4gLSAgICAgICAgICAgIC5hMiA9
IGZsYWdzICYgKCBGRkFfTk9USUZfRkxBR19CSVRNQVBfU1AgfA0KPj4gLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBGRkFfTk9USUZfRkxBR19CSVRNQVBfU1BNICksDQo+PiArICAgICAgICAg
ICAgLmEyID0gc2VjdXJlX2ZsYWdzLA0KPj4gICAgICAgICB9Ow0KPj4gICAgICAgICBzdHJ1Y3Qg
YXJtX3NtY2NjXzFfMl9yZWdzIHJlc3A7DQo+PiAgICAgICAgIGludDMyX3QgZTsNCj4+IA0KPj4g
LSAgICAgICAgLyoNCj4+IC0gICAgICAgICAqIENsZWFyIHNlY3VyZSBwZW5kaW5nIGlmIGJvdGgg
RkZBX05PVElGX0ZMQUdfQklUTUFQX1NQIGFuZA0KPj4gLSAgICAgICAgICogRkZBX05PVElGX0ZM
QUdfQklUTUFQX1NQTSBhcmUgc2V0IHNpbmNlIHNlY3VyZSB3b3JsZCBjYW4ndCBoYXZlDQo+PiAt
ICAgICAgICAgKiBhbnkgbW9yZSBwZW5kaW5nIG5vdGlmaWNhdGlvbnMuDQo+PiAtICAgICAgICAg
Ki8NCj4+IC0gICAgICAgIGlmICggKCBmbGFncyAgJiBGRkFfTk9USUZfRkxBR19CSVRNQVBfU1Ag
KSAmJg0KPj4gLSAgICAgICAgICAgICAoIGZsYWdzICYgRkZBX05PVElGX0ZMQUdfQklUTUFQX1NQ
TSApICkNCj4+IC0gICAgICAgICAgICBBQ0NFU1NfT05DRShjdHgtPm5vdGlmLnNlY3VyZV9wZW5k
aW5nKSA9IGZhbHNlOw0KPj4gLQ0KPj4gICAgICAgICBhcm1fc21jY2NfMV8yX3NtYygmYXJnLCAm
cmVzcCk7DQo+PiAgICAgICAgIGUgPSBmZmFfZ2V0X3JldF9jb2RlKCZyZXNwKTsNCj4+ICAgICAg
ICAgaWYgKCBlICkNCj4+IEBAIC0yMTAsNiArMjA4LDEwIEBAIHZvaWQgZmZhX2hhbmRsZV9ub3Rp
ZmljYXRpb25fZ2V0KHN0cnVjdCBjcHVfdXNlcl9yZWdzICpyZWdzKQ0KPj4gDQo+PiAgICAgICAg
IGlmICggZmxhZ3MgJiBGRkFfTk9USUZfRkxBR19CSVRNQVBfU1BNICkNCj4+ICAgICAgICAgICAg
IHc2ID0gcmVzcC5hNjsNCj4+ICsNCj4+ICsgICAgICAgIHNwaW5fbG9jaygmY3R4LT5ub3RpZi5u
b3RpZl9sb2NrKTsNCj4+ICsgICAgICAgIGN0eC0+bm90aWYuc2VjdXJlX3BlbmRpbmcgPSBmYWxz
ZTsNCj4+ICsgICAgICAgIHNwaW5fdW5sb2NrKCZjdHgtPm5vdGlmLm5vdGlmX2xvY2spOw0KPj4g
ICAgIH0NCj4+IA0KPj4gICAgIGlmICggSVNfRU5BQkxFRChDT05GSUdfRkZBX1ZNX1RPX1ZNKSAp
DQo+PiBAQCAtMzU0LDcgKzM1NiwxMCBAQCBzdGF0aWMgdm9pZCBub3RpZl92bV9wZW5kX2ludHIo
dWludDE2X3Qgdm1faWQpDQo+PiAgICAgICogZ3VhcmFudGVlcyB0aGF0IHRoZSBkYXRhIHN0cnVj
dHVyZSBpc24ndCBmcmVlZCB3aGlsZSB3ZSdyZSBhY2Nlc3NpbmcNCj4+ICAgICAgKiBpdC4NCj4+
ICAgICAgKi8NCj4+IC0gICAgQUNDRVNTX09OQ0UoY3R4LT5ub3RpZi5zZWN1cmVfcGVuZGluZykg
PSB0cnVlOw0KPj4gKyAgICBzcGluX2xvY2soJmN0eC0+bm90aWYubm90aWZfbG9jayk7DQo+PiAr
ICAgIGN0eC0+bm90aWYuc2VjdXJlX3BlbmRpbmcgPSB0cnVlOw0KPj4gKyAgICBzcGluX3VubG9j
aygmY3R4LT5ub3RpZi5ub3RpZl9sb2NrKTsNCj4+ICsNCj4+ICAgICBpbmplY3Rfbm90aWZfcGVu
ZGluZyhkKTsNCj4+IA0KPj4gb3V0X3VubG9jazoNCj4+IEBAIC0zNzMsMTEgKzM3OCwxOCBAQCBz
dGF0aWMgdm9pZCBub3RpZl9zcmlfYWN0aW9uKHZvaWQgKnVudXNlZCkNCj4+ICAgICB1bnNpZ25l
ZCBpbnQgbjsNCj4+ICAgICBpbnQzMl90IHJlczsNCj4+IA0KPj4gLSAgICBkbyB7DQo+PiArICAg
IGlmICggIWZ3X25vdGlmX2VuYWJsZWQgKQ0KPj4gKyAgICAgICAgcmV0dXJuOw0KPiANCj4gQ2Fu
IHRoaXMgZXZlciBoYXBwZW4/IEFtIEkgbWlzc2luZyBzb21ldGhpbmc/DQoNCk5vIGluIGZhY3Qg
aXQgY2Fubm90IHlvdSBhcmUgcmlnaHQsIHdlIHdpbGwgbmV2ZXIgZ2V0DQphbiBTUkkgaWYgZmly
bXdhcmUgbm90aWZpY2F0aW9ucyBhcmUgbm90IGVuYWJsZWQgc28NCkkgd2lsbCByZW1vdmUgdGhh
dC4NCg0KQ2hlZXJzDQpCZXJ0cmFuZA0KDQo=


From xen-devel-bounces@lists.xenproject.org Thu Apr 23 07:45:33 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 23 Apr 2026 07:45:33 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1291670.1570528 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wFokX-0008NL-NY; Thu, 23 Apr 2026 07:45:25 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1291670.1570528; Thu, 23 Apr 2026 07:45: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 1wFokX-0008NE-K7; Thu, 23 Apr 2026 07:45:25 +0000
Received: by outflank-mailman (input) for mailman id 1291670;
 Thu, 23 Apr 2026 07:45:23 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <Bertrand.Marquis@arm.com>) id 1wFokV-0008N7-Lw
 for xen-devel@lists.xenproject.org; Thu, 23 Apr 2026 07:45:23 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wFokU-000onz-V7
 for xen-devel@lists.xenproject.org; Thu, 23 Apr 2026 09:45:22 +0200
Received: from [10.42.69.11] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <Bertrand.Marquis@arm.com>)
 id 69e9ce09-e002-0a2a0a5209dd-0a2a450bbf7a-26
 for <xen-devel@lists.xenproject.org>; Thu, 23 Apr 2026 09:45:22 +0200
Received: from [52.101.84.39]
 (helo=DB3PR0202CU003.outbound.protection.outlook.com)
 by tlsNG-42698a.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.1)
 (envelope-from <Bertrand.Marquis@arm.com>)
 id 69e9ce10-212f-0a2a450b0019-34655427ef8a-3
 for <xen-devel@lists.xenproject.org>; Thu, 23 Apr 2026 09:45:22 +0200
Received: from AS4P191CA0043.EURP191.PROD.OUTLOOK.COM (2603:10a6:20b:657::10)
 by AS8PR08MB9549.eurprd08.prod.outlook.com (2603:10a6:20b:61e::16)
 with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9846.17; Thu, 23 Apr
 2026 07:45:14 +0000
Received: from AM1PEPF000252E0.eurprd07.prod.outlook.com
 (2603:10a6:20b:657:cafe::83) by AS4P191CA0043.outlook.office365.com
 (2603:10a6:20b:657::10) with Microsoft SMTP Server (version=TLS1_3,
 cipher=TLS_AES_256_GCM_SHA384) id 15.20.9846.21 via Frontend Transport; Thu,
 23 Apr 2026 07:45:14 +0000
Received: from outbound-uk1.az.dlp.m.darktrace.com (4.158.2.129) by
 AM1PEPF000252E0.mail.protection.outlook.com (10.167.16.58) with Microsoft
 SMTP Server (version=TLS1_3, cipher=TLS_AES_256_GCM_SHA384) id 15.20.9846.18
 via Frontend Transport; Thu, 23 Apr 2026 07:45:14 +0000
Received: from PR3PR08MB5593.eurprd08.prod.outlook.com (2603:10a6:102:84::13)
 by AM8PR08MB6498.eurprd08.prod.outlook.com (2603:10a6:20b:364::11)
 with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9846.21; Thu, 23 Apr
 2026 07:44:12 +0000
Received: from PR3PR08MB5593.eurprd08.prod.outlook.com
 ([fe80::aae1:6871:afc4:620e]) by PR3PR08MB5593.eurprd08.prod.outlook.com
 ([fe80::aae1:6871:afc4:620e%5]) with mapi id 15.20.9818.023; Thu, 23 Apr 2026
 07:44: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=arm.com header.i="@arm.com" header.h="From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck"; dkim=pass header.s=selector1 header.d=arm.com header.i="@arm.com" header.h="From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck"
ARC-Seal: i=2; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=pass;
 b=v+EEsAE8EvI0QaTmJeGnAitilw7IUNk8FvGJgxCV/4NWHJgkoKejOEFx85Ba+m8ZnKT7Kbh7b7dcdcZb+R9dXKROQTxwCIueFcPyY9udKPH2Avh5fTuzNlDV3mmmRJh0AzGyx08l2mu/HAxyL2XDY2jifwqlDE63Ot4pPFEu/OJI9emw+cPgA/vWM+4/IqfQyly5rm8X3aN3bWjxegG/RlBDMpc0rX5jxbJsmqcJEuSKqHnx6dh1ldx0Evqc+dHU6aXzxvzfoaO0fSCU+IBfARbmiooZAu2TMgj0kKOv1EUiZci9NEMdHSRYoOe4r6C4jRA1JW/1eOb7CpUtXJWRbA==
ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com;
 s=arcselector10001;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1;
 bh=4fVyrfeACI5cUP5mPal2D/GFOoj38PCJBF36dY0hRdg=;
 b=TkObDwUcDZhQHXPvSkAiBtsYmzPjoG+X/+Dmbpli13SlcwkbqKF0+zNGiUIPvZua8X7hI/Q5DLnm5d6tEmOAmzm2PiNYyxuVZof8RAqfq4IRAwOyY7fgaS3JSeKiidIOR9CcQpwY9Jn1zgjO9G5HbAxIqhVfz9EoJVYlgQq/yawq7X8H2+Tqj4D1wduhRnwBv7/BxIYzyO/7bxoeCNkDgQ8s5KjikTL8L4/Gx/3d9GuWk8iZocR36eF2cLgfBerQ5LWeGK7Z64dn0kpSgV3ycEVPYGDXNfy4Zg6AFQfdo719CT4hpCqKDOFRXoN77z4I5vFkMvfnOS88Ttj56xSQDw==
ARC-Authentication-Results: i=2; mx.microsoft.com 1; spf=pass (sender ip is
 4.158.2.129) smtp.rcpttodomain=linaro.org smtp.mailfrom=arm.com; dmarc=pass
 (p=none sp=none pct=100) action=none header.from=arm.com; dkim=pass
 (signature was verified) header.d=arm.com; arc=pass (0 oda=1 ltdi=1
 spf=[1,1,smtp.mailfrom=arm.com] dkim=[1,1,header.d=arm.com]
 dmarc=[1,1,header.from=arm.com])
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=arm.com; s=selector1;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck;
 bh=4fVyrfeACI5cUP5mPal2D/GFOoj38PCJBF36dY0hRdg=;
 b=ibd1oMLPltLGpYze3+gQ4oz6Q+I/nZ1rKQ4hN2LDHp94+jBvjDpoG03vOnhon8p2PpnQleNBLikgQ1KqhXfFqMDbXgmOWvh0abzDr/kbzCRmsIsnjH1TDzRo5Bc326szvvRBXT7eAAa9NSdImGUOE3USi3IJSSJhyuhNbtyleU4=
X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 4.158.2.129)
 smtp.mailfrom=arm.com; dkim=pass (signature was verified)
 header.d=arm.com;dmarc=pass action=none header.from=arm.com;
Received-SPF: Pass (protection.outlook.com: domain of arm.com designates
 4.158.2.129 as permitted sender) receiver=protection.outlook.com;
 client-ip=4.158.2.129; helo=outbound-uk1.az.dlp.m.darktrace.com; pr=C
ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none;
 b=f+zyj5hbQNkaOBzZ7R8p1r8L24jQCE8agEjMOOTtJMBiLFNeRFFlNzsMN4VE/bVHQcKuNZsS1nXRegRvC2xjSfWDLr58oAqA+ZdX92MQ5jtb8myFl03kUQRWIBEUo6JHaU0V/GYSdRBo3pc8JC5iY3n0m/4COWSbV6H8EGzYgts8mSvcgWzU4Ip6vkHNS9a+LTkL5q/6j9Jl/EBA2VdpFYN2yhDX9IqgZMdOXW7xx6trj++ipbPcKljp0UO+Mn7Riu192VkKqK5hkd2OXOdoSpiuvc04CdZY8bILyNkFuLwdzjJuiylleURLRcElPQrBRTr/Fo9vnQq+msjp6ALpGw==
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com;
 s=arcselector10001;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1;
 bh=4fVyrfeACI5cUP5mPal2D/GFOoj38PCJBF36dY0hRdg=;
 b=EAJlAQEq7mGrwUG9NzgcsfaujKn76sSN7kojt6PkGjKOPtyggeiYDO/YnyF/pFA6v4Hf6fvX4PzaaWyIUkfm1llJN4yhGr+ITng4EQ4haBXWCb07Tj/Czrj96ZBD7/f+gu+zIrDhCX6xb8WJl2BIMSRHanWPkx42xb59kKpN0KwjahRieOSA/icVQWXuf1QA/f+k1puDSbLSpUzEq3qtz5ML60DK2NETDqL3/IRq0NnspBOoXKVwUJtw8/Ksz6hPv4kQXLGjGJqdFUebGB+wNCEj97729h+cWwu7utem9aY+tyRZ2Ra0lDfcztPLWyme4tEoIvuiB3NRCXQ0hkgXHA==
ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass
 smtp.mailfrom=arm.com; dmarc=pass action=none header.from=arm.com; dkim=pass
 header.d=arm.com; arc=none
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=arm.com; s=selector1;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck;
 bh=4fVyrfeACI5cUP5mPal2D/GFOoj38PCJBF36dY0hRdg=;
 b=ibd1oMLPltLGpYze3+gQ4oz6Q+I/nZ1rKQ4hN2LDHp94+jBvjDpoG03vOnhon8p2PpnQleNBLikgQ1KqhXfFqMDbXgmOWvh0abzDr/kbzCRmsIsnjH1TDzRo5Bc326szvvRBXT7eAAa9NSdImGUOE3USi3IJSSJhyuhNbtyleU4=
From: Bertrand Marquis <Bertrand.Marquis@arm.com>
To: Jens Wiklander <jens.wiklander@linaro.org>
CC: "xen-devel@lists.xenproject.org" <xen-devel@lists.xenproject.org>,
	Volodymyr Babchuk <volodymyr_babchuk@epam.com>, Stefano Stabellini
	<sstabellini@kernel.org>, Julien Grall <julien@xen.org>, Michal Orzel
	<michal.orzel@amd.com>
Subject: Re: [PATCH 5/6] xen/arm: ffa: Track VM notification bindings locally
Thread-Topic: [PATCH 5/6] xen/arm: ffa: Track VM notification bindings locally
Thread-Index: AQHcznArOQx42qP1+k2R4bBbbIb5Y7XrGR0AgAEz6AA=
Date: Thu, 23 Apr 2026 07:44:12 +0000
Message-ID: <535A06EE-BB9C-4D97-9C8D-2C571E753640@arm.com>
References: <cover.1776266307.git.bertrand.marquis@arm.com>
 <a3e689abc6695c0adbe294ebce7ee0a77bd4b7bf.1776266307.git.bertrand.marquis@arm.com>
 <CAHUa44EnUgxzyY7z53pfOhB5Xps8KWOV2FdZiTEF0gufrfQcdQ@mail.gmail.com>
In-Reply-To:
 <CAHUa44EnUgxzyY7z53pfOhB5Xps8KWOV2FdZiTEF0gufrfQcdQ@mail.gmail.com>
Accept-Language: en-GB, en-US
Content-Language: en-US
X-MS-Has-Attach:
X-MS-TNEF-Correlator:
x-mailer: Apple Mail (2.3864.500.181)
Authentication-Results-Original: dkim=none (message not signed)
 header.d=none;dmarc=none action=none header.from=arm.com;
x-ms-traffictypediagnostic:
	PR3PR08MB5593:EE_|AM8PR08MB6498:EE_|AM1PEPF000252E0:EE_|AS8PR08MB9549:EE_
X-MS-Office365-Filtering-Correlation-Id: 8ad7c0c6-35e6-4264-4217-08dea10c41af
x-checkrecipientrouted: true
nodisclaimer: true
X-MS-Exchange-SenderADCheck: 1
X-MS-Exchange-AntiSpam-Relay: 0
X-Microsoft-Antispam-Untrusted:
 BCL:0;ARA:13230040|376014|366016|1800799024|38070700021|22082099003|56012099003|18002099003;
X-Microsoft-Antispam-Message-Info-Original:
 jpRdHgSlgYrKfduE7395i98L1FW9ZXAA5pjyspU0YR/YcSQ4G9FiKzW69LzPx3Qk6EkRDkQn5oxg8YFEnLI10KNpLO/2w/YSKeF9Knit7qOuzoYEzjZV+go2pPQEP3VXgUgf8nHJarbO2Pn2fliilIw5ky9hKQBhsh6T1nZMIIqc4D9b78dum3bIhOZnNu3pi5vdacSY0zIdWY3y+MM5IfyEir7NM5aPY30bYmvXDVOpQzo1m1vZLt2ihOoSa+wJ/AgqgaXZTTKZg7mQZezUYsABovRelQ2HxUhTEesHfo8SqymhO3KMyQHxVeaSlWgxiAakTmuwguyWD/iu3V+rw2qCm3QYh4v4GX+9qlivSCuWn/Tad6/9Ci5mAMrD18NoQW0GvrnNpR+lhsKP9wtxqwUMemaw0LKJX/f+/1ar4eIbJUd35DiDTEryqdfdHdCUxoI9kulLa2I6+vCsndf+TDy1YPlc8rbwbKP10KLUarmNXBlW4XbBCwqR0D2TXQe1yRPXZUcwIIj6gYmpcj4AVQDf4UQNOZZ7BbVYivPGvOBVxHHIv54rIckL5BBd+B3a10yhZIm8JA0TYtLM/Vlft+fqGx6iKf7dsceGHCnJurVgeV8NwhEmFMRPTgHxS+at3rJo7bqqVPMh/8XYnb8CmNgWjasZdCueQmmK+2O2+Br/fjCrLRVi9dnUaxybfeAzY5CVOhkukIgfxN1G/TUO0pr5THZ9/ZX3Y91CiPSWrB0GYEShf5s9SPSXH8KNoBOq91+pI1WxOo15PlqRkI6Smf3QQEfU2GNIQEamFRnbVHA=
X-Forefront-Antispam-Report-Untrusted:
 CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:PR3PR08MB5593.eurprd08.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(376014)(366016)(1800799024)(38070700021)(22082099003)(56012099003)(18002099003);DIR:OUT;SFP:1101;
Content-Type: text/plain; charset="utf-8"
Content-ID: <A238FBC162C49C48B85B80DE12544BA2@eurprd08.prod.outlook.com>
Content-Transfer-Encoding: base64
MIME-Version: 1.0
X-Exchange-RoutingPolicyChecked:
 ST5fzN/exA6YbXpFtz8F4fINzP1Vy+yNQot6j94K8p5tGEbeykRrwfjFh52uLPWl1krx9rRz1YiNvC7c9q89QhRukXsVfdN+Qa2SRLiGoJcCumk5o85+kq58uuNIedFGdFPNWuXHhgmmai0y3gEGkMGo5olQoGXDg7ifSp++dYUamIx7cn2Hzjl6SH08+BErZEDGebKWdCu4DqSs7ti7s2+XKLta9d3i76TWGUi2swFpNT2vqNwlnU4HbUjY1zz4iKPfQ2P0DaEUjbb19aI/s0w2iHSeBNfvnW0EUITy58py5MbU3prOvEKem2WoeopMj1FD93htsEh8H7v3fhyGMw==
X-MS-Exchange-Transport-CrossTenantHeadersStamped: AM8PR08MB6498
X-EOPAttributedMessage: 0
X-MS-Exchange-Transport-CrossTenantHeadersStripped:
 AM1PEPF000252E0.eurprd07.prod.outlook.com
X-MS-PublicTrafficType: Email
X-MS-Office365-Filtering-Correlation-Id-Prvs:
	64dc2b8c-0516-4f2b-9497-08dea10c1c69
X-Microsoft-Antispam:
	BCL:0;ARA:13230040|36860700016|1800799024|14060799003|376014|82310400026|35042699022|56012099003|22082099003|18002099003;
X-Microsoft-Antispam-Message-Info:
	DFAvOEKejLXVpZR3w2/N8b4Trc/GqTB8VJ2hOPY7eHegbNAaT8KV6Crvu+FbJwpf/FN53X/hRiPRlxuspkpWBYoBNlK8VUP8WCgMLPn0kWygrP+MbqzPooXwVqfn6nJWo3jJfqZ4mnMyK6mVknJYQ1jZ4zqJeYiQ57suzQ7yyQVtaSAIhXbX7Du6CsmffYgmsOWv9m11tbxdC4mh1miYrgRRVPTtn017beYd4OOg08ioCQc+XPPogTFq6tXC4624KYUYOSjAqkHUMEbTjJB5ansY0mM3xRCQLOxG9ytvBXYuoeUxi6B1L/5YAo4IFmdueC12VZqYIWF5uqkeANZXvCoJkttYZqFGZ82ipp7irP+u8pjuM0rUSKvkWS5B21NV5sLeIipo0L5iqa19eF4rWHNEFZ75J2JdJ2+hlpAht3717W21h7L3YGAW5akqBnmC07RgMHWr516DfknhV+XRyzHi7WT7d6f6wxQE9ap26NzE3EF6+XBs805CR9jZ5xHbxoQz66Ovw8xLqF5y1z7QarNjpdP7bquEL1cEqUHsp5iaEeutavDuhsM4bdRridiTIwTWX+AsqsM02nmOC93yBO0M6Cri8uuCqlqZTw3eYsbVtLYh4TjPZvM8xGciftUV3NAr6OcWx8+6PLZLrIXYY2r5mIGZr84JJeFkma2AilTLhWSPGA1vYeE12AHTtM31BCLZfL4yPeD6GP/HdMKBHra6o2g0hqxsaJPKuAI8B3DrqjgKlvbUkC7kY2+ET9IzeCw5u39xIrGY5S6twPJiag==
X-Forefront-Antispam-Report:
	CIP:4.158.2.129;CTRY:GB;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:outbound-uk1.az.dlp.m.darktrace.com;PTR:InfoDomainNonexistent;CAT:NONE;SFS:(13230040)(36860700016)(1800799024)(14060799003)(376014)(82310400026)(35042699022)(56012099003)(22082099003)(18002099003);DIR:OUT;SFP:1101;
X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1
X-MS-Exchange-AntiSpam-MessageData-0:
	WU+acXVNanqe19i9y/oX7AT7d9ytNzpJTsz0DmysREk/+nD23NTBA4qn4ueWYehyt3h3Pw/fEYDnCnrfqWRI5V1SkDnp8X7BjEWM+AC/8WKSZFwWzN6HNsXpNhpRmHI4GLKv+zqSnmBtQ167Ik8+S2yLy3jfQRz0Mz+BHAekDxqiP/o+W6IJzfHSCcXNXgl3m/GrmPVqK0W6JpwNqQurLl8cFc7kkjP+vEFzYG20tnPEnDGkA/qbKtvWXAEkjhTNTcVqBPcc9rBiJs5I/4OuUTAgGZeGwQ9D2HD7C4l4HN5eNlgxoi89SG8GEC77yq9B1DwaCBvHboo5cu09AgeKo8LF/bApQXcsITiqBuuwek2HfDAe/dyc1XqGYq2jHlozf0jucyff5b0weIJHaa86DfHAH+WwzmJjXL9WBdxXR1MAvBZNUxUimw3hMWyO1pBZ
X-OriginatorOrg: arm.com
X-MS-Exchange-CrossTenant-OriginalArrivalTime: 23 Apr 2026 07:45:14.5906
 (UTC)
X-MS-Exchange-CrossTenant-Network-Message-Id: 8ad7c0c6-35e6-4264-4217-08dea10c41af
X-MS-Exchange-CrossTenant-Id: f34e5979-57d9-4aaa-ad4d-b122a662184d
X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=f34e5979-57d9-4aaa-ad4d-b122a662184d;Ip=[4.158.2.129];Helo=[outbound-uk1.az.dlp.m.darktrace.com]
X-MS-Exchange-CrossTenant-AuthSource:
	AM1PEPF000252E0.eurprd07.prod.outlook.com
X-MS-Exchange-CrossTenant-AuthAs: Anonymous
X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem
X-MS-Exchange-Transport-CrossTenantHeadersStamped: AS8PR08MB9549
X-purgate-ID: tlsNG-42698a/1776930322-06B70F3B-4D55E246/0/0
X-purgate-type: clean
X-purgate-size: 10678

SGkgSmVucywNCg0KPiBPbiAyMiBBcHIgMjAyNiwgYXQgMTU6MjEsIEplbnMgV2lrbGFuZGVyIDxq
ZW5zLndpa2xhbmRlckBsaW5hcm8ub3JnPiB3cm90ZToNCj4gDQo+IEhpIEJlcnRyYW5kLA0KPiAN
Cj4gT24gRnJpLCBBcHIgMTcsIDIwMjYgYXQgMzo0MeKAr1BNIEJlcnRyYW5kIE1hcnF1aXMNCj4g
PGJlcnRyYW5kLm1hcnF1aXNAYXJtLmNvbT4gd3JvdGU6DQo+PiANCj4+IFZNLXRvLVZNIG5vdGlm
aWNhdGlvbnMgbmVlZCByZWNlaXZlci1zaWRlIGJpbmQgc3RhdGUgc28gWGVuIGNhbiB2YWxpZGF0
ZQ0KPj4gd2hpY2ggc2VuZGVyIG93bnMgZWFjaCBub3RpZmljYXRpb24gYml0LiBOb24tc2VjdXJl
IEJJTkQgYW5kIFVOQklORA0KPj4gcmVxdWVzdHMgY3VycmVudGx5IGhhdmUgbm8gbG9jYWwgc3Rh
dGUgYW5kIGNhbm5vdCBlbmZvcmNlIHRoYXQgY29udHJhY3QuDQo+PiANCj4+IEFkZCBwZXItYml0
IFZNIG5vdGlmaWNhdGlvbiBiaW5kaW5nIHN0YXRlIHRvIHN0cnVjdCBmZmFfY3R4X25vdGlmIGFu
ZA0KPj4gdXNlIGl0IHRvIGhhbmRsZSBub24tc2VjdXJlIEJJTkQgYW5kIFVOQklORCByZXF1ZXN0
cyB3aGVuDQo+PiBDT05GSUdfRkZBX1ZNX1RPX1ZNIGlzIGVuYWJsZWQuIFRoZSB1cGRhdGUgaGVs
cGVyIHZhbGlkYXRlcyB0aGUgd2hvbGUNCj4+IHJlcXVlc3QgdW5kZXIgbm90aWZfbG9jayBiZWZv
cmUgbXV0YXRpbmcgYW55dGhpbmcsIGRlbmllcyBiaW5kIG9yDQo+PiB1bmJpbmQgd2hlbiBhIGJp
dCBpcyBwZW5kaW5nLCByZWplY3RzIHJlYmluZGluZyB0byBhIGRpZmZlcmVudCBzZW5kZXIsDQo+
PiBhbmQga2VlcHMgcmViaW5kaW5nIHRvIHRoZSBzYW1lIHNlbmRlciBpZGVtcG90ZW50Lg0KPj4g
DQo+PiBQcm9tb3RlIHZtX3BlbmRpbmcgdG8gYSBiaXRtYXAgc28gdGhlIGJpbmQgbG9naWMgY2Fu
IHJlYXNvbiBwZXINCj4+IG5vdGlmaWNhdGlvbiBJRCwgdXNlIHRoYXQgYml0bWFwIGRpcmVjdGx5
IHdoZW4gcmVwb3J0aW5nIHBlbmRpbmcgc3RhdGUsDQo+PiBhbmQgaW5pdGlhbGl6ZSBhbmQgY2xl
YXIgdGhlIG5ldyBWTSBub3RpZmljYXRpb24gc3RhdGUgZHVyaW5nIGRvbWFpbg0KPj4gaW5pdCBh
bmQgdGVhcmRvd24uDQo+PiANCj4+IEZ1bmN0aW9uYWwgaW1wYWN0OiB3aGVuIENPTkZJR19GRkFf
Vk1fVE9fVk0gaXMgZW5hYmxlZCwgWGVuIHRyYWNrcyBWTQ0KPj4gbm90aWZpY2F0aW9uIGJpbmRp
bmdzIGxvY2FsbHkgYW5kIHZhbGlkYXRlcyBub24tc2VjdXJlIGJpbmQgYW5kIHVuYmluZA0KPj4g
cmVxdWVzdHMgYWdhaW5zdCB0aGF0IHN0YXRlLg0KPj4gDQo+PiBTaWduZWQtb2ZmLWJ5OiBCZXJ0
cmFuZCBNYXJxdWlzIDxiZXJ0cmFuZC5tYXJxdWlzQGFybS5jb20+DQo+PiAtLS0NCj4+IHhlbi9h
cmNoL2FybS90ZWUvZmZhX25vdGlmLmMgICB8IDk3ICsrKysrKysrKysrKysrKysrKysrKysrKysr
KysrKy0tLS0NCj4+IHhlbi9hcmNoL2FybS90ZWUvZmZhX3ByaXZhdGUuaCB8IDE1ICsrKystLQ0K
Pj4gMiBmaWxlcyBjaGFuZ2VkLCA5OSBpbnNlcnRpb25zKCspLCAxMyBkZWxldGlvbnMoLSkNCj4+
IA0KPj4gZGlmZiAtLWdpdCBhL3hlbi9hcmNoL2FybS90ZWUvZmZhX25vdGlmLmMgYi94ZW4vYXJj
aC9hcm0vdGVlL2ZmYV9ub3RpZi5jDQo+PiBpbmRleCBmZmYwMGNhMmJhZWMuLjRkZWY3MDFmMDEz
MCAxMDA2NDQNCj4+IC0tLSBhL3hlbi9hcmNoL2FybS90ZWUvZmZhX25vdGlmLmMNCj4+ICsrKyBi
L3hlbi9hcmNoL2FybS90ZWUvZmZhX25vdGlmLmMNCj4+IEBAIC01Niw2ICs1Niw1NCBAQCBzdGF0
aWMgaW50MzJfdCBmZmFfbm90aWZfcGFyc2VfcGFyYW1zKHVpbnQxNl90IGRvbV9pZCwgdWludDE2
X3QgY2FsbGVyX2lkLA0KPj4gICAgIHJldHVybiBGRkFfUkVUX09LOw0KPj4gfQ0KPj4gDQo+PiAr
c3RhdGljIGludDMyX3QgZmZhX25vdGlmX3VwZGF0ZV92bV9iaW5kaW5nKHN0cnVjdCBmZmFfY3R4
ICpjdHgsDQo+PiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVp
bnQxNl90IGRlc3RfaWQsIHVpbnQ2NF90IGJpdG1hcCwNCj4+ICsgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgYm9vbCBiaW5kKQ0KPj4gK3sNCj4+ICsgICAgdW5zaWdu
ZWQgaW50IGlkOw0KPj4gKyAgICBpbnQzMl90IHJldCA9IEZGQV9SRVRfT0s7DQo+PiArDQo+PiAr
ICAgIHNwaW5fbG9jaygmY3R4LT5ub3RpZi5ub3RpZl9sb2NrKTsNCj4+ICsNCj4+ICsgICAgZm9y
ICggaWQgPSAwOyBpZCA8IEZGQV9OVU1fVk1fTk9USUY7IGlkKysgKQ0KPj4gKyAgICB7DQo+PiAr
ICAgICAgICBpZiAoICEoYml0bWFwICYgQklUKGlkLCBVTEwpKSApDQo+PiArICAgICAgICAgICAg
Y29udGludWU7DQo+PiArDQo+PiArICAgICAgICBpZiAoIGN0eC0+bm90aWYudm1fcGVuZGluZyAm
IEJJVChpZCwgVUxMKSApDQo+PiArICAgICAgICB7DQo+PiArICAgICAgICAgICAgcmV0ID0gRkZB
X1JFVF9ERU5JRUQ7DQo+PiArICAgICAgICAgICAgZ290byBvdXRfdW5sb2NrOw0KPj4gKyAgICAg
ICAgfQ0KPj4gKw0KPj4gKyAgICAgICAgaWYgKCBiaW5kICkNCj4+ICsgICAgICAgIHsNCj4+ICsg
ICAgICAgICAgICBpZiAoIGN0eC0+bm90aWYudm1fYmluZFtpZF0gIT0gMCAmJg0KPj4gKyAgICAg
ICAgICAgICAgICAgY3R4LT5ub3RpZi52bV9iaW5kW2lkXSAhPSBkZXN0X2lkICkNCj4+ICsgICAg
ICAgICAgICB7DQo+PiArICAgICAgICAgICAgICAgIHJldCA9IEZGQV9SRVRfREVOSUVEOw0KPj4g
KyAgICAgICAgICAgICAgICBnb3RvIG91dF91bmxvY2s7DQo+PiArICAgICAgICAgICAgfQ0KPj4g
KyAgICAgICAgfQ0KPj4gKyAgICAgICAgZWxzZSBpZiAoIGN0eC0+bm90aWYudm1fYmluZFtpZF0g
IT0gZGVzdF9pZCApDQo+PiArICAgICAgICB7DQo+PiArICAgICAgICAgICAgcmV0ID0gRkZBX1JF
VF9ERU5JRUQ7DQo+PiArICAgICAgICAgICAgZ290byBvdXRfdW5sb2NrOw0KPj4gKyAgICAgICAg
fQ0KPj4gKyAgICB9DQo+PiArDQo+PiArICAgIGZvciAoIGlkID0gMDsgaWQgPCBGRkFfTlVNX1ZN
X05PVElGOyBpZCsrICkNCj4+ICsgICAgew0KPj4gKyAgICAgICAgaWYgKCBiaXRtYXAgJiBCSVQo
aWQsIFVMTCkgKQ0KPj4gKyAgICAgICAgICAgIGN0eC0+bm90aWYudm1fYmluZFtpZF0gPSBiaW5k
ID8gZGVzdF9pZCA6IDA7DQo+PiArICAgIH0NCj4+ICsNCj4+ICtvdXRfdW5sb2NrOg0KPj4gKyAg
ICBzcGluX3VubG9jaygmY3R4LT5ub3RpZi5ub3RpZl9sb2NrKTsNCj4+ICsNCj4+ICsgICAgcmV0
dXJuIHJldDsNCj4+ICt9DQo+PiArDQo+PiBpbnQzMl90IGZmYV9oYW5kbGVfbm90aWZpY2F0aW9u
X2JpbmQoc3RydWN0IGNwdV91c2VyX3JlZ3MgKnJlZ3MpDQo+PiB7DQo+PiAgICAgc3RydWN0IGRv
bWFpbiAqZCA9IGN1cnJlbnQtPmRvbWFpbjsNCj4+IEBAIC03NiwxMSArMTI0LDIxIEBAIGludDMy
X3QgZmZhX2hhbmRsZV9ub3RpZmljYXRpb25fYmluZChzdHJ1Y3QgY3B1X3VzZXJfcmVncyAqcmVn
cykNCj4+ICAgICBpZiAoIHJldCApDQo+PiAgICAgICAgIHJldHVybiByZXQ7DQo+PiANCj4+IC0g
ICAgaWYgKCBGRkFfSURfSVNfU0VDVVJFKGRlc3RfaWQpICYmIGZ3X25vdGlmX2VuYWJsZWQgKQ0K
Pj4gLSAgICAgICAgcmV0dXJuIGZmYV9zaW1wbGVfY2FsbChGRkFfTk9USUZJQ0FUSU9OX0JJTkQs
IHNyY19kc3QsIGZsYWdzLA0KPj4gLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBiaXRt
YXBfbG8sIGJpdG1hcF9oaSk7DQo+PiArICAgIGlmICggRkZBX0lEX0lTX1NFQ1VSRShkZXN0X2lk
KSApDQo+PiArICAgIHsNCj4+ICsgICAgICAgIGlmICggZndfbm90aWZfZW5hYmxlZCApDQo+PiAr
ICAgICAgICAgICAgcmV0dXJuIGZmYV9zaW1wbGVfY2FsbChGRkFfTk9USUZJQ0FUSU9OX0JJTkQs
IHNyY19kc3QsIGZsYWdzLA0KPj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
Yml0bWFwX2xvLCBiaXRtYXBfaGkpOw0KPj4gDQo+PiAtICAgIHJldHVybiBGRkFfUkVUX05PVF9T
VVBQT1JURUQ7DQo+PiArICAgICAgICByZXR1cm4gRkZBX1JFVF9OT1RfU1VQUE9SVEVEOw0KPj4g
KyAgICB9DQo+PiArDQo+PiArICAgIGlmICggIUlTX0VOQUJMRUQoQ09ORklHX0ZGQV9WTV9UT19W
TSkgKQ0KPj4gKyAgICAgICAgcmV0dXJuIEZGQV9SRVRfTk9UX1NVUFBPUlRFRDsNCj4+ICsNCj4+
ICsgICAgcmV0dXJuIGZmYV9ub3RpZl91cGRhdGVfdm1fYmluZGluZyhjdHgsIGRlc3RfaWQsDQo+
PiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCh1aW50NjRfdCliaXRt
YXBfaGkgPDwgMzIpIHwgYml0bWFwX2xvLA0KPj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHRydWUpOw0KPj4gfQ0KPj4gDQo+PiBpbnQzMl90IGZmYV9oYW5kbGVfbm90
aWZpY2F0aW9uX3VuYmluZChzdHJ1Y3QgY3B1X3VzZXJfcmVncyAqcmVncykNCj4+IEBAIC05OSwx
MSArMTU3LDIxIEBAIGludDMyX3QgZmZhX2hhbmRsZV9ub3RpZmljYXRpb25fdW5iaW5kKHN0cnVj
dCBjcHVfdXNlcl9yZWdzICpyZWdzKQ0KPj4gICAgIGlmICggcmV0ICkNCj4+ICAgICAgICAgcmV0
dXJuIHJldDsNCj4+IA0KPj4gLSAgICBpZiAoIEZGQV9JRF9JU19TRUNVUkUoZGVzdF9pZCkgJiYg
Zndfbm90aWZfZW5hYmxlZCApDQo+PiAtICAgICAgICByZXR1cm4gZmZhX3NpbXBsZV9jYWxsKEZG
QV9OT1RJRklDQVRJT05fVU5CSU5ELCBzcmNfZHN0LCAwLCBiaXRtYXBfbG8sDQo+PiAtICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGJpdG1hcF9oaSk7DQo+PiArICAgIGlmICggRkZBX0lE
X0lTX1NFQ1VSRShkZXN0X2lkKSApDQo+PiArICAgIHsNCj4+ICsgICAgICAgIGlmICggZndfbm90
aWZfZW5hYmxlZCApDQo+PiArICAgICAgICAgICAgcmV0dXJuIGZmYV9zaW1wbGVfY2FsbChGRkFf
Tk9USUZJQ0FUSU9OX1VOQklORCwgc3JjX2RzdCwgMCwNCj4+ICsgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGJpdG1hcF9sbywgYml0bWFwX2hpKTsNCj4+IA0KPj4gLSAgICByZXR1
cm4gRkZBX1JFVF9OT1RfU1VQUE9SVEVEOw0KPj4gKyAgICAgICAgcmV0dXJuIEZGQV9SRVRfTk9U
X1NVUFBPUlRFRDsNCj4+ICsgICAgfQ0KPj4gKw0KPj4gKyAgICBpZiAoICFJU19FTkFCTEVEKENP
TkZJR19GRkFfVk1fVE9fVk0pICkNCj4+ICsgICAgICAgIHJldHVybiBGRkFfUkVUX05PVF9TVVBQ
T1JURUQ7DQo+PiArDQo+PiArICAgIHJldHVybiBmZmFfbm90aWZfdXBkYXRlX3ZtX2JpbmRpbmco
Y3R4LCBkZXN0X2lkLA0KPj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICgodWludDY0X3QpYml0bWFwX2hpIDw8IDMyKSB8IGJpdG1hcF9sbywNCj4+ICsgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZSk7DQo+PiB9DQo+PiANCj4+IHZvaWQg
ZmZhX2hhbmRsZV9ub3RpZmljYXRpb25faW5mb19nZXQoc3RydWN0IGNwdV91c2VyX3JlZ3MgKnJl
Z3MpDQo+PiBAQCAtMTI1LDkgKzE5MywxMCBAQCB2b2lkIGZmYV9oYW5kbGVfbm90aWZpY2F0aW9u
X2luZm9fZ2V0KHN0cnVjdCBjcHVfdXNlcl9yZWdzICpyZWdzKQ0KPj4gDQo+PiAgICAgaWYgKCBJ
U19FTkFCTEVEKENPTkZJR19GRkFfVk1fVE9fVk0pICkNCj4+ICAgICB7DQo+PiAtICAgICAgICBu
b3RpZl9wZW5kaW5nIHw9IHRlc3RfYW5kX2NsZWFyX2Jvb2woY3R4LT5ub3RpZi52bV9wZW5kaW5n
KTsNCj4+IC0NCj4+ICAgICAgICAgc3Bpbl9sb2NrKCZjdHgtPm5vdGlmLm5vdGlmX2xvY2spOw0K
Pj4gKyAgICAgICAgaWYgKCBjdHgtPm5vdGlmLnZtX3BlbmRpbmcgKQ0KPj4gKyAgICAgICAgICAg
IG5vdGlmX3BlbmRpbmcgPSB0cnVlOw0KPj4gKw0KPj4gICAgICAgICBpZiAoIGN0eC0+bm90aWYu
aHlwX3BlbmRpbmcgKQ0KPj4gICAgICAgICAgICAgbm90aWZfcGVuZGluZyA9IHRydWU7DQo+PiAg
ICAgICAgIHNwaW5fdW5sb2NrKCZjdHgtPm5vdGlmLm5vdGlmX2xvY2spOw0KPj4gQEAgLTQ5Nywx
MCArNTY2LDE0IEBAIHZvaWQgZmZhX25vdGlmX2luaXQodm9pZCkNCj4+IGludCBmZmFfbm90aWZf
ZG9tYWluX2luaXQoc3RydWN0IGRvbWFpbiAqZCkNCj4+IHsNCj4+ICAgICBzdHJ1Y3QgZmZhX2N0
eCAqY3R4ID0gZC0+YXJjaC50ZWU7DQo+PiArICAgIHVuc2lnbmVkIGludCBpOw0KPj4gICAgIGlu
dDMyX3QgcmVzOw0KPj4gDQo+PiAgICAgc3Bpbl9sb2NrX2luaXQoJmN0eC0+bm90aWYubm90aWZf
bG9jayk7DQo+PiAgICAgY3R4LT5ub3RpZi5zZWN1cmVfcGVuZGluZyA9IGZhbHNlOw0KPj4gKyAg
ICBjdHgtPm5vdGlmLnZtX3BlbmRpbmcgPSAwOw0KPj4gKyAgICBmb3IgKCBpID0gMDsgaSA8IEZG
QV9OVU1fVk1fTk9USUY7IGkrKyApDQo+PiArICAgICAgICBjdHgtPm5vdGlmLnZtX2JpbmRbaV0g
PSAwOw0KPj4gICAgIGN0eC0+bm90aWYuaHlwX3BlbmRpbmcgPSAwOw0KPj4gDQo+PiAgICAgaWYg
KCBmd19ub3RpZl9lbmFibGVkICkNCj4+IEBAIC01MTYsOSArNTg5LDEzIEBAIGludCBmZmFfbm90
aWZfZG9tYWluX2luaXQoc3RydWN0IGRvbWFpbiAqZCkNCj4+IHZvaWQgZmZhX25vdGlmX2RvbWFp
bl9kZXN0cm95KHN0cnVjdCBkb21haW4gKmQpDQo+PiB7DQo+PiAgICAgc3RydWN0IGZmYV9jdHgg
KmN0eCA9IGQtPmFyY2gudGVlOw0KPj4gKyAgICB1bnNpZ25lZCBpbnQgaTsNCj4+IA0KPj4gICAg
IHNwaW5fbG9jaygmY3R4LT5ub3RpZi5ub3RpZl9sb2NrKTsNCj4+ICAgICBjdHgtPm5vdGlmLnNl
Y3VyZV9wZW5kaW5nID0gZmFsc2U7DQo+PiArICAgIGN0eC0+bm90aWYudm1fcGVuZGluZyA9IDA7
DQo+PiArICAgIGZvciAoIGkgPSAwOyBpIDwgRkZBX05VTV9WTV9OT1RJRjsgaSsrICkNCj4+ICsg
ICAgICAgIGN0eC0+bm90aWYudm1fYmluZFtpXSA9IDA7DQo+IA0KPiBXaHkgbm90IG1lbXNldChj
dHgtPm5vdGlmLnZtX2JpbmQsIDAsIHNpemVvZihjdHgtPm5vdGlmLnZtX2JpbmQpPw0KDQpEZWZp
bml0ZWx5IGJldHRlciB0byB1c2UgbWVtc2V0LCBJIHdpbGwgdXNlIGl0IGhlcmUgYW5kIGluIGRv
bWFpbl9pbml0DQppbnN0ZWFkIG9mIGFuIGV4cGxpY2l0IGxvb3AuDQoNCj4gDQo+PiAgICAgY3R4
LT5ub3RpZi5oeXBfcGVuZGluZyA9IDA7DQo+PiAgICAgc3Bpbl91bmxvY2soJmN0eC0+bm90aWYu
bm90aWZfbG9jayk7DQo+PiANCj4+IGRpZmYgLS1naXQgYS94ZW4vYXJjaC9hcm0vdGVlL2ZmYV9w
cml2YXRlLmggYi94ZW4vYXJjaC9hcm0vdGVlL2ZmYV9wcml2YXRlLmgNCj4+IGluZGV4IDU2OTM3
NzI0ODFlZC4uNmQ4M2FmYjNkMDBhIDEwMDY0NA0KPj4gLS0tIGEveGVuL2FyY2gvYXJtL3RlZS9m
ZmFfcHJpdmF0ZS5oDQo+PiArKysgYi94ZW4vYXJjaC9hcm0vdGVlL2ZmYV9wcml2YXRlLmgNCj4+
IEBAIC0yMzYsNiArMjM2LDExIEBADQo+PiAjZGVmaW5lIEZGQV9OT1RJRl9JTkZPX0dFVF9JRF9D
T1VOVF9NQVNLICAgIDB4MUYNCj4+IA0KPj4gI2RlZmluZSBGRkFfTk9USUZfUlhfQlVGRkVSX0ZV
TEwgICAgICAgIEJJVCgwLCBVKQ0KPj4gKyNkZWZpbmUgRkZBX05VTV9WTV9OT1RJRiAgICAgICAg
ICAgICAgICA2NFUNCj4+ICsNCj4+ICsjaWYgRkZBX05VTV9WTV9OT1RJRiA+IDY0DQo+PiArI2Vy
cm9yICJGRkFfTlVNX1ZNX05PVElGIG11c3QgYmUgPD0gNjQiDQo+PiArI2VuZGlmDQo+IA0KPiBC
VUlMRF9CVUdfT04oRkZBX05VTV9WTV9OT1RJRiA+IDY0KSA/DQoNClllcyB0aGF0IHdvdWxkIGJl
IGNsZWFuZXIuDQpJIHdpbGwgcHV0IGl0IGluIGZmYV9ub3RpZl9kb21haW5faW5pdCBhbmQgcmVt
b3ZlIHRoYXQNCmZyb20gdGhlIGhlYWRlci4NCg0KQ2hlZXJzDQpCZXJ0cmFuZA0KDQo=


From xen-devel-bounces@lists.xenproject.org Thu Apr 23 08:02:07 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 23 Apr 2026 08:02:07 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1291693.1570537 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wFp0a-0004Fq-FD; Thu, 23 Apr 2026 08:02:00 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1291693.1570537; Thu, 23 Apr 2026 08: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 1wFp0a-0004Fj-BG; Thu, 23 Apr 2026 08:02:00 +0000
Received: by outflank-mailman (input) for mailman id 1291693;
 Thu, 23 Apr 2026 08:01:59 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <kevin.tian@intel.com>) id 1wFp0Z-0004Fd-8F
 for xen-devel@lists.xenproject.org; Thu, 23 Apr 2026 08:01:59 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wFp0Y-000tNz-5c
 for xen-devel@lists.xenproject.org; Thu, 23 Apr 2026 10:01:58 +0200
Received: from [10.42.69.12] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <kevin.tian@intel.com>)
 id 69e9d1ed-e002-0a2a0a5209dd-0a2a450ca2d2-16
 for <xen-devel@lists.xenproject.org>; Thu, 23 Apr 2026 10:01:56 +0200
Received: from [198.175.65.10] (helo=mgamail.intel.com)
 by tlsNG-d25034.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.1)
 (envelope-from <kevin.tian@intel.com>)
 id 69e9d1f2-62f1-0a2a450c0019-c6af410a0661-3
 for <xen-devel@lists.xenproject.org>; Thu, 23 Apr 2026 10:01:56 +0200
Received: from orviesa008.jf.intel.com ([10.64.159.148])
 by orvoesa102.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384;
 23 Apr 2026 01:01:55 -0700
Received: from fmsmsx902.amr.corp.intel.com ([10.18.126.91])
 by orviesa008.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384;
 23 Apr 2026 01:01:54 -0700
Received: from FMSMSX902.amr.corp.intel.com (10.18.126.91) by
 fmsmsx902.amr.corp.intel.com (10.18.126.91) with Microsoft SMTP Server
 (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id
 15.2.2562.37; Thu, 23 Apr 2026 01:01:53 -0700
Received: from fmsedg902.ED.cps.intel.com (10.1.192.144) by
 FMSMSX902.amr.corp.intel.com (10.18.126.91) with Microsoft SMTP Server
 (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id
 15.2.2562.37 via Frontend Transport; Thu, 23 Apr 2026 01:01:53 -0700
Received: from CY7PR03CU001.outbound.protection.outlook.com (40.93.198.51) by
 edgegateway.intel.com (192.55.55.82) with Microsoft SMTP Server
 (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id
 15.2.2562.37; Thu, 23 Apr 2026 01:01:53 -0700
Received: from BN9PR11MB5276.namprd11.prod.outlook.com (2603:10b6:408:135::18)
 by SA1PR11MB7699.namprd11.prod.outlook.com (2603:10b6:806:338::11)
 with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9846.15; Thu, 23 Apr
 2026 08:01:50 +0000
Received: from BN9PR11MB5276.namprd11.prod.outlook.com
 ([fe80::f997:762f:f079:134f]) by BN9PR11MB5276.namprd11.prod.outlook.com
 ([fe80::f997:762f:f079:134f%5]) with mapi id 15.20.9846.016; Thu, 23 Apr 2026
 08:01: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=Intel header.d=intel.com header.i="@intel.com" header.h="From:To:CC:Subject:Date:Message-ID:References: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=1776931317; x=1808467317;
  h=from:to:cc:subject:date:message-id:references:
   in-reply-to:content-transfer-encoding:mime-version;
  bh=mI8UwAD7OHI7ISiSB9HEpm60Fqupw13CdiWlOlqt3DM=;
  b=Bc2rATZqVlujupKtA1JPCtzmbEw6Yk+xgjOlTYla3Qd/8VQpUnQz9X3A
   0kcMHMCfUC68n6/zV7k3yQHRxmw3KGkGpAHDMrPGTTRHXg/nM2D2sUPri
   gOwb5LtZtKv17EVgM2P0MUohAugJgOGB4DBMCKnnIut0v+ZzH82EaGSgs
   LnkXwrgXZhEO6ODi2jc2ZxxRCKZGQOPytB5JUZ46Qjsyv1Ye51Wj+cwod
   yWgeRWoH0HjSkmr/A6fT4Utdo5PrvHr++pPz7Hr1/U5pJEba5Ys3Uylqj
   LtMgNLVyGBkZm68878H8zj0+92sBZihU3y7Mo2M8Aecwzb9SY0npZqT9T
   Q==;
X-CSE-ConnectionGUID: vkr802zhQpObnkPt9fCbiA==
X-CSE-MsgGUID: 64oPC4ifSoCu2iPZFuZ6xQ==
X-IronPort-AV: E=McAfee;i="6800,10657,11764"; a="95307889"
X-IronPort-AV: E=Sophos;i="6.23,194,1770624000"; 
   d="scan'208";a="95307889"
X-CSE-ConnectionGUID: 7faCaAwcTiWhieb4LcXYzg==
X-CSE-MsgGUID: r5IeB5O3QAigGExXzVswuw==
X-ExtLoop1: 1
X-IronPort-AV: E=Sophos;i="6.23,194,1770624000"; 
   d="scan'208";a="232501565"
ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none;
 b=jkLgOjstDWEMofQogmzbHn+LPiBHYeaYyRN8VYmP6Ffyh0hf1SuOsQLijgZ2EaoBYoqYNCe89RDWxEKuvwPbVm+2YKzAbE1pFEINjormZYn1x7vZEVdgK23sZ8NuNRb4A7r84CZCqj5xUPjHQCjzJGftmhZ3PvbOE20HhRPeDwF1Mnj4IUEk9dnUcl7bjhw690V2SCZtlKtqCl+8cgOSSf1yIwicfHSa5B/hYJUdX359tp1ns3KW9xnl0e20JDNpXvAryND6TmelIq0ts3rlzNyeLlwZrwCBgq0pWL8Yk15d/GMrWAsbwJd1MOBTiJE2C0jKHvQX9aAsDkVb/7miMA==
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com;
 s=arcselector10001;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1;
 bh=mI8UwAD7OHI7ISiSB9HEpm60Fqupw13CdiWlOlqt3DM=;
 b=IAttDLV/6be2ZgoCY8jmS23lzxT3d1A002gmrU1jZyOUkssKbSMiUq5+LVJtApdg65RaChpC0wtevi8LVuqiffD5GhDAnKgwRgwv4/IL8OR6uqnytiw4zGm5zn5JSxBOgHnGU8BPVUnvs3iN7QfjYlustmHgiXj8pKpOfzMayz0puGZmsxJ3SplXI6q2cuOXUpF6gDV/oVK4m80ul9Os5xuqD/2AkxEtlBHI4Ws43RJvoQ4H1fn9dIoNl/jFsfc4vXV9ddBNvlCDDiPh50GqGmoMQosBKrEwJ61IRqP7x/6znUxI4cPy3vDI/98p+dfrSMcxn7muMngVvENzkHj6Ig==
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
From: "Tian, Kevin" <kevin.tian@intel.com>
To: Teddy Astie <teddy.astie@vates.tech>, "iommu@lists.linux.dev"
	<iommu@lists.linux.dev>, "linux-kernel@vger.kernel.org"
	<linux-kernel@vger.kernel.org>
CC: Xen-devel <xen-devel@lists.xenproject.org>
Subject: RE: How to express "externally managed" IOMMU domains for
 VFIO/IOMMUFD ?
Thread-Topic: How to express "externally managed" IOMMU domains for
 VFIO/IOMMUFD ?
Thread-Index: AQHc0nD/HbUzotrTgkKZyZa10hSZGrXsSRwA
Date: Thu, 23 Apr 2026 08:01:50 +0000
Message-ID: <BN9PR11MB5276B3A829AD624A7E1AB4408C2A2@BN9PR11MB5276.namprd11.prod.outlook.com>
References: <1776873531.8631fc262581453bbf619ec5b2062170.19db5ea67ab000f373@vates.tech>
In-Reply-To: <1776873531.8631fc262581453bbf619ec5b2062170.19db5ea67ab000f373@vates.tech>
Accept-Language: en-US
Content-Language: en-US
X-MS-Has-Attach:
X-MS-TNEF-Correlator:
authentication-results: dkim=none (message not signed)
 header.d=none;dmarc=none action=none header.from=intel.com;
x-ms-publictraffictype: Email
x-ms-traffictypediagnostic: BN9PR11MB5276:EE_|SA1PR11MB7699:EE_
x-ms-office365-filtering-correlation-id: 0fddad7f-59d3-41ab-4944-08dea10e933d
x-ms-exchange-senderadcheck: 1
x-ms-exchange-antispam-relay: 0
x-microsoft-antispam: BCL:0;ARA:13230040|376014|366016|1800799024|38070700021|56012099003|22082099003|18002099003;
x-microsoft-antispam-message-info: PLJf+pqvR3n8CJr9o7OLcLrYpPQrCCVfNHYt2peujULl86EDJAKPwRIxmX7Lort+gn/GCY6FtePlq5SDNa04SgjemFPEmie7BWU8yy600fsWAhAoXcVKhwI2fIZ3TPlRLNJFwGV3WoH0CmHFcb4ckwW6+H8EvEi8b3fFUD2XDvc/OYBelf7kuFJ4/0u5TNNyAMWPa9Kdpj3w3K9fs1oPEfy/75J0V+hOwVJ3Dy8Pf6H49yFwTja3yxoMHCykZP1wYCwp946rTdIZJ41isd6BYy6XEtuL5wj+V5RE5iCTpiQQ5WycuUQlhDGn5LRvmxUqpofd08PR8jKyS3DlJYOeICRlmMOlZYMjlZ+AcTI0HwUcJa16lr2O1yxJ79xbZ8PhHv+015vnegbthSJqJ1D2KCNrm+Y9rCsbMWVM4XuKo+jwegWpxVK9iXa6IEm7kX4+UQyZY3NPkcuFSK+BNkARjnyWiJeSqJltvhmXfdsW3Qr1ntAYDFoc//0CmVsZTz6dtmhZuE5quZhAMn0yMDFtzQAQmtfFT4JWgaDTcYdLK18UiZvhW2Efj1upq/0/S+C0xVQiHmnW1Acp1v1UqtsdRnBpDKX3qd8O16/gp8qJ52P2C7zlkE75rPS0deF1Wue6vioRKajLdeHAXcW1/UcKXxpSEA+tC2V/YWLTk6Q1YZuB752q9zds3X8BU39QhvfRe8ZoZlNP4cWnyYLpkNwo8IcuOXAA3pIK130HZwBjmRn6dWWsm27+LqC+CdJE42YT
x-forefront-antispam-report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:BN9PR11MB5276.namprd11.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(376014)(366016)(1800799024)(38070700021)(56012099003)(22082099003)(18002099003);DIR:OUT;SFP:1101;
x-ms-exchange-antispam-messagedata-chunkcount: 1
x-ms-exchange-antispam-messagedata-0: =?utf-8?B?Z0hsRzhDUUN0T2dMSzVDMHlQKy9BR3Zya01WcGl3Y0dFSlpncTVKdWFmMHdN?=
 =?utf-8?B?Q1hjQ1pZUGZpckpxNUcwMjJocGFnVlFZMTQ0QS9CVE1QWkw4Q25hb08wUC8y?=
 =?utf-8?B?WEY5d1NVZWh1cW1SQ2dBSnhpdVJCYytZUlN3YWFrWTczRkdGbDJNNWpLa1RF?=
 =?utf-8?B?NGNMRnpHYmtVYmkvSGVVMnllbmsvaWQ5WWs3SFkxM1FwMXlTSGNrOWRXK1h3?=
 =?utf-8?B?ZDUyS00rMWRaeXYyNytmZmFOa0EzWUd4cUpFVi9IazJicjF5VGNPVXA3UFll?=
 =?utf-8?B?dW5YbnpaaUFYbUFzcVcxZWZjNURob1E5aW9qcGpKTTZ3NjlLTXRKTWswamFT?=
 =?utf-8?B?VE9rSFdoRWxBcGkvV05CN2ZDKzNWWE5PekI0VUtvQzRGeWF2eHdmbkZ2Z3Fr?=
 =?utf-8?B?ck9ZZXdSdjczakNUYStGWjRNd3BDeGhpcGpiUGU2dzQzekRjWWVPcDlOR2s5?=
 =?utf-8?B?Mk5INnAvNTZDVE4rZG1SdEx0Z2pnRHNOY3FnYzZCUVE1Kzc0TTlnUWsydFVs?=
 =?utf-8?B?UFVPZEl5b21CQUUrdTVacmtyeGRCdTIxc2tnMGRvalZvTVhmR2FsamV4WlNR?=
 =?utf-8?B?Y0RTWWtTdEU2MHZjMUMrWmFBbWdEUUF6NzRacGMySGJ0Qmg0N0J0V2phS3ha?=
 =?utf-8?B?UzdLdUwvZlA4MWJkT212UDdxeXN5Y0xYUmNJeFRWQXJqdUZSTXdpOHpSYnR4?=
 =?utf-8?B?YWJMa2hIQjRsczMvWmw4YkxycGo3M3MxN282ZWF6UTZyYkN6dE9KejcyM3dz?=
 =?utf-8?B?MXN4MlZJNSt2dnJvUDFYMDFEQkxZVlpIQitzQUdwQUZ5VDBHdmJQemVseVdo?=
 =?utf-8?B?TmlmV3Vaa2todndnSGFOdmxHeGlrTDZjTjdGZmwzcVkzUVUzbnBIbkFpNVVl?=
 =?utf-8?B?WXVReS9sdGg5bmUybzRibG1nNU5Kd0JIaFYyOE4weFhBMkVxMG5iQjFNMTZj?=
 =?utf-8?B?S3FQOTdYWWoxWDJYdFBQUlQxRmk4cWVDT2luZnducWNZVFd4N3BXN1c1M1FQ?=
 =?utf-8?B?dW16YUV0SEp3MTc3eFdIdTEvYnNlODJ0dVd6eHlYbnFDdjlWcGtSS1VuZis4?=
 =?utf-8?B?RFJpTXRKZlVjUmhQWVNuQ3d0blFZMnBvWCtvSjB5QVYxbm5FZmZ1dS81cVVj?=
 =?utf-8?B?a0RTTHFzMWJiMW9rRlhDdkM0Z3QzUkRMdGFGeGd5MG9MQnBENkhOb1ZlSHVJ?=
 =?utf-8?B?RDFnQXlVNW0yYk5KbURzWTRqY3Q2TGxNTmRDMXZ0bW5CblhhRjVLei9vUkkv?=
 =?utf-8?B?VEt2dWgrVDVGNkNyaW1TMWpKUEh4aXoxblNCTmFiam5RTmJ4Y2R0ZE9GckRI?=
 =?utf-8?B?UEsyOUg1a2poOThYL2ZTYlV0VWZKSjBsUFBFY28xV1NyaFdlR09weHhYYWl2?=
 =?utf-8?B?ejlQdzlWZmZub000MHZGcVgySWlsOWhkR3JJcXZ4Vmkwd050MlZkU2RDV3Ex?=
 =?utf-8?B?RW1RODhEMUExdnhXZ2Q1RkFDSVNBYWpEYzVkcXNVVzZQZGpJdm9YV3BXTkFt?=
 =?utf-8?B?Y2dZN0FJY3g5WHFKbjRrNlBwSlFwMmMzc0JkR0x6V3ZTMG5WMWJmNkY2L0V1?=
 =?utf-8?B?amdCWm50QU5PM09LcWdoV09mdmJDQmo1NWZrVFlqWXk3a1g1czRmQW9yamxi?=
 =?utf-8?B?ZFBXVlkwcktKemFWcFBtRE1OOTlGaCtJYkpZY3MyYVNVQjU4bVBGV3ljcnNR?=
 =?utf-8?B?cVpTYVRIemgrMjZQT2JHTlFHLzdNbWx4MnA5bG52TW5WdENTL0YwZ013RTBJ?=
 =?utf-8?B?STlUcVVWU2hhdGJYUjdqNDNxMVVJTnJzVGFFTjdoaGxzVzNVSFNQSXNBN0ha?=
 =?utf-8?B?UStndURuTTZ5ZGdQeHBnVzhxMFRXZm1JY1FlZ0QvRVN0UGRlNXUwT0FVMnNC?=
 =?utf-8?B?T1lZenVyUFFmTjV6OHBmaFdNTWhDVWwyaVA0dFQ5RFM1c3Y2RjJPbW95aWRD?=
 =?utf-8?B?UXRyOVl1dUpKUFA0bzB0d3ZIdUEwUkdKbitZQmVVTFZBUlBOOWQ2a01pWTFq?=
 =?utf-8?B?bm9ic3Z5RzBzRk1WUU5tMkpGazc2VHF6VGhCeS9iM01VZ2pNdGVqWHptbWlF?=
 =?utf-8?B?SHB0UXRhcEp6cjBwNXNjOUNaNkNFT1UrN3Z3c2hlS2lEQWM4YlhlSVRvV0Zn?=
 =?utf-8?B?alNWcGFZMUdVVkhobmhBWWM1ZldwUjhRNFBTaVVIQXd1cjQrUnpEZWZYc3Zt?=
 =?utf-8?B?VzlETTRoNmg1YVVBTGpqc0g5TkZWUlA0WHlncE5kSEtRT3E2cldPbUoxZ0pV?=
 =?utf-8?B?YjdXYmdDWE1BQXNPMzVvcFBYci9USU5Yd215UExOU1dKeFVsTEZReFBhbVhC?=
 =?utf-8?Q?jjoj7vGvKxNhPHKHhi?=
Content-Type: text/plain; charset="utf-8"
Content-Transfer-Encoding: base64
MIME-Version: 1.0
X-Exchange-RoutingPolicyChecked: mEu9NuZgGkNiNOnu4T2PwKIPHzdNZKGhStAmDtKAtgf2tS4KjfmuQDWwKl98UMpELN11WyvGKQtAz+J3uYyoPeRKZhyCw7O8HblP7FjeCE4b9MpDABeyykWc9Zq/BDMCMZq8s7hBcwWzX/HdCmggR+nolR3ipd+zd1DtqShwxcs8g4iST4TJZl6gv0GYkCH5DmISMRBFMc63tyKxWF8u/4gQ+TUgyC88Tx3LJpnrTpyVDRG7AR9QbUjTOt7cMyy2OR09pVXKVU+EOO+sPE0QdHYdnhUe2M/FgIR7NK42GDkoIDEw/Zz2BzXwIi55IbJM9KEu8bZN0fvcQtsV/+oQ7A==
X-MS-Exchange-CrossTenant-AuthAs: Internal
X-MS-Exchange-CrossTenant-AuthSource: BN9PR11MB5276.namprd11.prod.outlook.com
X-MS-Exchange-CrossTenant-Network-Message-Id: 0fddad7f-59d3-41ab-4944-08dea10e933d
X-MS-Exchange-CrossTenant-originalarrivaltime: 23 Apr 2026 08:01:50.4580
 (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: FGchrOip4a1nXxVeqiN6TpeWoETqqyBe3J28Ft+SWIDDY8wxdwkfMLWK8TgDigkrmoglDPF6mL4+gA/IdilkTQ==
X-MS-Exchange-Transport-CrossTenantHeadersStamped: SA1PR11MB7699
X-OriginatorOrg: intel.com
X-purgate-ID: tlsNG-d25034/1776931316-F7C1FCF5-FA5DB98D/0/0
X-purgate-type: clean
X-purgate-size: 1964

PiBGcm9tOiBUZWRkeSBBc3RpZQ0KPiBTZW50OiBXZWRuZXNkYXksIEFwcmlsIDIyLCAyMDI2IDEx
OjU5IFBNDQo+IA0KPiBIZWxsbywNCj4gDQo+IE9uIFhlbiwgZm9yIFBWLUlPTU1VIFsxXSwgd2Ug
aGF2ZSBJT01NVSBzdXBwb3J0IGluIERvbTAsIHdoaWNoIGluDQo+IHBhcnRpY3VsYXIgYWxsb3dz
IHVzaW5nIFZGSU8gYW5kIElPTU1VRkQgZnJvbSBEb20wLg0KPiANCj4gSG93ZXZlciwgaXRzIGlu
dGVyYWN0aW9ucyB3aXRoIFBDSSBQYXNzdGhyb3VnaCBhcmUgdW5jbGVhciwgYW5kIGl0IHdvdWxk
DQoNClZGSU8gbWFuYWdlcyBQQ0kgcGFzc3Rocm91Z2guIHNpbmNlIGl0J3MgYWxyZWFkeSBhbGxv
d2VkIHdoaWNoIHBhcnQgb2YNCmludGVyYWN0aW9uIGlzIHVuY2xlYXI/DQoNCj4gYmUgcHJlZmVy
YWJsZSB0byBsZXQgdGhlIGtlcm5lbCBoYW5kbGUgc29tZSBvZiB0aGlzIGxvZ2ljLiBUaGF0IHdv
dWxkDQo+IGZvciBpbnN0YW5jZSBhdm9pZCBzaXR1YXRpb25zIHdoZXJlIHRvb2xzdGFjayBjYXVz
ZXMgWGVuIGFuZCBMaW51eCB0byBnbw0KPiBvdXQgb2Ygc3luYyBvbiB3aGVyZSBkZXZpY2VzIGJl
bG9uZy4NCg0Kd2hhdCBpcyAnc29tZSBvZiB0aGlzIGxvZ2ljJyBhbmQgd2hhdCBpcyB0aGUgZXhh
Y3Qgb3V0LW9mLXN5bmMgc2NlbmFyaW8/DQoNCj4gDQo+IE9uIFhlbiwgd2UgaGF2ZSBhIGRlZGlj
YXRlZCBoeXBlcmNhbGxzIGZvciBtb3ZpbmcgYSBkZXZpY2UgaW50byBhbm90aGVyDQo+IGd1ZXN0
IChzbyBpdCBubyBsb25nZXIgYmVsb25ncyBpbiBEb20wLCBhdCBmYXIgYXMgRE1BIGlzIGNvbmNl
cm5lZCkuDQo+IA0KPiBCdXQgaXQgbG9va3MgbGlrZSB0aGVyZSBhcmUgbm8gd2F5IHRvIGRlc2Ny
aWJlIHRoYXQgaWRlYSBvZiAiYXR0YWNoIHRoYXQNCj4gZGV2aWNlIHRvIHRoaXMgVk0iIG5vciAi
dGhlIGRldmljZSBpcyBpbiBhIFZNIjsgd2hpY2ggbWFrZXMgdGhhdA0KPiBpbXByYWN0aWNhYmxl
Lg0KPiANCj4gVGhlcmUgbWF5IGJlIHRoaW5ncyB0aGF0IGNvdWxkIGJlIGRvbmUgd2l0aCB0aGUg
dklPTU1VIG9iamVjdHMsIGJ1dA0KPiB0aGVyZSB3b3VsZCBiZSBubyAicGFyZW50IGRvbWFpbiIg
aW4gc3VjaCBjYXNlLCBhcyBzYWlkIGVhcmxpZXIgaXQNCj4gZG9lc24ndCBleGlzdCBpbiB0aGUg
SU9NTVUgc3Vic3lzdGVtLg0KPiANCj4gV2hhdCBpcyBleHBlY3RlZCB0byBiZSBkb25lIGluc3Rl
YWQgPw0KPiANCj4gVGVkZHkNCj4gDQo+IFsxXSBodHRwczovL3d3dy55b3V0dWJlLmNvbS93YXRj
aD92PXBMTUdSZ0VKLUVnDQo+IA0KDQpJdCdkIGJlIG11Y2ggZWFzaWVyIHRvIGNvbGxlY3QgY29t
bWVudHMgaWYgeW91IGNhbiBwdXQgcGxhaW4gd29yZHMNCnRvIGV4cGxhaW4gdGhlIHByb2JsZW0g
cmF0aGVyIHRoYW4gZXhwZWN0aW5nIG90aGVyIGZvbGtzIHRvIHdhdGNoDQp0aGUgdmlkZW8gZmly
c3QuLi4NCg==


From xen-devel-bounces@lists.xenproject.org Thu Apr 23 08:09:00 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 23 Apr 2026 08:09:00 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1291708.1570564 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wFp7M-00063G-Gm; Thu, 23 Apr 2026 08:09:00 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1291708.1570564; Thu, 23 Apr 2026 08:09: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 1wFp7M-000637-DB; Thu, 23 Apr 2026 08:09:00 +0000
Received: by outflank-mailman (input) for mailman id 1291708;
 Thu, 23 Apr 2026 08:08:58 +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 1wFp7K-00061r-NF
 for xen-devel@lists.xenproject.org; Thu, 23 Apr 2026 08:08:58 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wFp7K-000vLh-3W
 for xen-devel@lists.xenproject.org; Thu, 23 Apr 2026 10:08:58 +0200
Received: from [10.42.69.5] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <jgross@suse.com>)
 id 69e9d38e-e002-0a2a0a5209dd-0a2a4505da76-38
 for <xen-devel@lists.xenproject.org>; Thu, 23 Apr 2026 10:08:58 +0200
Received: from [195.135.223.131] (helo=smtp-out2.suse.de)
 by tlsNG-c201ff.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.1)
 (envelope-from <jgross@suse.com>)
 id 69e9d399-aaa8-0a2a45050019-c387df83d8fc-3
 for <xen-devel@lists.xenproject.org>; Thu, 23 Apr 2026 10:08:57 +0200
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 1F3E75BCFD;
 Thu, 23 Apr 2026 08:08: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 EED32593A3;
 Thu, 23 Apr 2026 08:08: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 35k3OZbT6WkAXgAAD6G6ig
 (envelope-from <jgross@suse.com>); Thu, 23 Apr 2026 08:08: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-Transfer-Encoding:In-Reply-To:References"; dkim=pass header.s=susede1 header.d=suse.com header.i="@suse.com" header.h="From:Date:Message-ID:To:Cc:MIME-Version:Content-Transfer-Encoding:In-Reply-To:References"
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=suse.com; s=susede1;
	t=1776931736; h=from:from:reply-to:date:date:message-id:message-id:to:to:cc:cc:
	 mime-version:mime-version:
	 content-transfer-encoding:content-transfer-encoding:
	 in-reply-to:in-reply-to:references:references;
	bh=CPBzawWX2g0dpZag7OUw1T+x+kMtwYFiewTeIGA7K/o=;
	b=bht6oFQjCvijEG82j7+TrxXWjGaD7mp+mdMIov/n+lxBL47Za6FGF+G2DeJv0kc4g1hXwU
	wIsx39JIy7PnXyx7dAOoAdc/R2Gs0H6lbb1yIgmnItARlIpJZX5NNHGyP2RDZSSe+JPPIf
	j+3ek9l4qkwpkJUpmuULoeQIIxxPaxs=
Authentication-Results: smtp-out2.suse.de;
	dkim=pass header.d=suse.com header.s=susede1 header.b=Qkirx6S0
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=suse.com; s=susede1;
	t=1776931735; h=from:from:reply-to:date:date:message-id:message-id:to:to:cc:cc:
	 mime-version:mime-version:
	 content-transfer-encoding:content-transfer-encoding:
	 in-reply-to:in-reply-to:references:references;
	bh=CPBzawWX2g0dpZag7OUw1T+x+kMtwYFiewTeIGA7K/o=;
	b=Qkirx6S0tb+jXp7zMwAk9P/B47ZppVQUjk5pHDIFa9gOKi1rchok6xyGUPpYPhuDy78tbV
	EIUtUhdqBmCNSBKa9H5blHujl0jRkqUC/DJoc7CKeWBGTlmFUH4ydEY4IDyjnrqvkPbE3P
	D7hQrwWx+chtG36WrLnCufWz2C69nIo=
From: Juergen Gross <jgross@suse.com>
To: xen-devel@lists.xenproject.org
Cc: dmukhin@ford.com,
	Juergen Gross <jgross@suse.com>,
	Anthony PERARD <anthony.perard@vates.tech>,
	Julien Grall <julien@xen.org>
Subject: [PATCH 2/4] tools/xenstored: add support for "all domains" node permission
Date: Thu, 23 Apr 2026 10:08:38 +0200
Message-ID: <20260423080840.530547-3-jgross@suse.com>
X-Mailer: git-send-email 2.53.0
In-Reply-To: <20260423080840.530547-1-jgross@suse.com>
References: <20260423080840.530547-1-jgross@suse.com>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit
X-Rspamd-Action: no action
X-Rspamd-Server: rspamd2.dmz-prg2.suse.org
X-Spamd-Result: default: False [-3.01 / 50.00];
	BAYES_HAM(-3.00)[100.00%];
	NEURAL_HAM_LONG(-1.00)[-1.000];
	MID_CONTAINS_FROM(1.00)[];
	R_MISSING_CHARSET(0.50)[];
	R_DKIM_ALLOW(-0.20)[suse.com:s=susede1];
	NEURAL_HAM_SHORT(-0.20)[-1.000];
	MIME_GOOD(-0.10)[text/plain];
	MX_GOOD(-0.01)[];
	ARC_NA(0.00)[];
	RBL_SPAMHAUS_BLOCKED_OPENRESOLVER(0.00)[2a07:de40:b281:104:10:150:64:97:from];
	RCVD_COUNT_TWO(0.00)[2];
	MIME_TRACE(0.00)[0:+];
	RCVD_VIA_SMTP_AUTH(0.00)[];
	SPAMHAUS_XBL(0.00)[2a07:de40:b281:104:10:150:64:97:from];
	TO_DN_SOME(0.00)[];
	FUZZY_RATELIMITED(0.00)[rspamd.com];
	RECEIVED_SPAMHAUS_BLOCKED_OPENRESOLVER(0.00)[2a07:de40:b281:106:10:150:64:167:received];
	FROM_HAS_DN(0.00)[];
	TO_MATCH_ENVRCPT_ALL(0.00)[];
	DBL_BLOCKED_OPENRESOLVER(0.00)[suse.com:dkim,suse.com:mid,suse.com:email,imap1.dmz-prg2.suse.org:helo,imap1.dmz-prg2.suse.org:rdns];
	RCVD_TLS_ALL(0.00)[];
	FROM_EQ_ENVFROM(0.00)[];
	RCPT_COUNT_FIVE(0.00)[5];
	DKIM_SIGNED(0.00)[suse.com:s=susede1];
	DKIM_TRACE(0.00)[suse.com:+]
X-Rspamd-Queue-Id: 1F3E75BCFD
X-Spam-Flag: NO
X-Spam-Score: -3.01
X-Spam-Level: 
X-purgate-ID: tlsNG-c201ff/1776931737-E9BA4443-AAF74673/0/0
X-purgate-type: clean
X-purgate-size: 5892

Add support for using DOMID_ANY in node permissions to indicate that
all domains are allowed to access the node.

Add a new feature bit for indicating the support of DOMID_ANY.

Signed-off-by: Juergen Gross <jgross@suse.com>
---
 docs/man/xl.cfg.5.pod.in        |  4 ++++
 tools/xenstored/core.c          | 19 ++++++++++++++-----
 tools/xenstored/domain.c        | 16 ++++++++++++++--
 tools/xenstored/domain.h        |  3 ++-
 xen/include/public/io/xs_wire.h |  2 ++
 5 files changed, 36 insertions(+), 8 deletions(-)

diff --git a/docs/man/xl.cfg.5.pod.in b/docs/man/xl.cfg.5.pod.in
index 2f77016ecf..d34951edb9 100644
--- a/docs/man/xl.cfg.5.pod.in
+++ b/docs/man/xl.cfg.5.pod.in
@@ -746,6 +746,10 @@ Xenstore supports to set watches with a limited depth (depth 0 matches
 only the watched node, depth 1 matches the node and its direct children,
 etc.).
 
+=item B<0x00000008>
+
+Xenstore supports the B<all domains> node access permission.
+
 =back
 
 The features supported by the running Xenstore instance can be retrieved
diff --git a/tools/xenstored/core.c b/tools/xenstored/core.c
index f92fca6e9e..5a621f53ba 100644
--- a/tools/xenstored/core.c
+++ b/tools/xenstored/core.c
@@ -882,6 +882,16 @@ static int write_node(struct connection *conn, struct node *node,
 	return ret;
 }
 
+/* Check one node permission to match a connection. */
+static bool perm_allows_conn(const struct connection *conn,
+			     const struct xs_permissions *p)
+{
+	if (p->id == conn->id || (conn->target && p->id == conn->target->id))
+		return true;
+
+	return p->id == DOMID_ANY;
+}
+
 unsigned int perm_for_conn(struct connection *conn,
 			   const struct node_perms *perms)
 {
@@ -889,14 +899,13 @@ unsigned int perm_for_conn(struct connection *conn,
 	unsigned int mask = XS_PERM_READ|XS_PERM_WRITE|XS_PERM_OWNER;
 
 	/* Owners and tools get it all... */
-	if (!domain_is_unprivileged(conn) || perms->p[0].id == conn->id
-                || (conn->target && perms->p[0].id == conn->target->id))
+	if (!domain_is_unprivileged(conn) ||
+	    perm_allows_conn(conn, perms->p))
 		return (XS_PERM_READ|XS_PERM_WRITE|XS_PERM_OWNER) & mask;
 
 	for (i = 1; i < perms->num; i++)
 		if (!(perms->p[i].perms & XS_PERM_IGNORE) &&
-		    (perms->p[i].id == conn->id ||
-		     (conn->target && perms->p[i].id == conn->target->id)))
+		    perm_allows_conn(conn, perms->p + i))
 			return perms->p[i].perms & mask;
 
 	return perms->p[0].perms & mask;
@@ -1832,7 +1841,7 @@ static int do_set_perms(const void *ctx, struct connection *conn,
 	if (!xenstore_strings_to_perms(perms.p, perms.num, permstr))
 		return errno;
 
-	if (domain_alloc_permrefs(&perms))
+	if (domain_alloc_permrefs(conn, &perms))
 		return ENOMEM;
 	if (perms.p[0].perms & XS_PERM_IGNORE)
 		return ENOENT;
diff --git a/tools/xenstored/domain.c b/tools/xenstored/domain.c
index 00875d6b5c..0bd2a1891a 100644
--- a/tools/xenstored/domain.c
+++ b/tools/xenstored/domain.c
@@ -44,7 +44,8 @@
 #endif
 
 #define XENSTORE_FEATURES	(XENSTORE_SERVER_FEATURE_ERROR |	\
-				 XENSTORE_SERVER_FEATURE_WATCHDEPTH)
+				 XENSTORE_SERVER_FEATURE_WATCHDEPTH |	\
+				 XENSTORE_SERVER_FEATURE_DOMID_ANY)
 
 static xenmanage_handle *xm_handle;
 xengnttab_handle **xgt_handle;
@@ -1754,8 +1755,12 @@ static bool chk_domain_generation(unsigned int domid, uint64_t gen)
  * Allocate all missing struct domain referenced by a permission set.
  * Any permission entries for not existing domains will be marked to be
  * ignored.
+ * An DOMID_ANY entry will be marked to be ignored, if the writing
+ * domain doesn't have the XENSTORE_SERVER_FEATURE_DOMID_ANY enabled. Note
+ * that Xen tools will never set DOMID_ANY for a guest owned node.
  */
-int domain_alloc_permrefs(struct node_perms *perms)
+int domain_alloc_permrefs(const struct connection *conn,
+			  struct node_perms *perms)
 {
 	unsigned int i, domid;
 	struct domain *d;
@@ -1763,6 +1768,12 @@ int domain_alloc_permrefs(struct node_perms *perms)
 
 	for (i = 0; i < perms->num; i++) {
 		domid = perms->p[i].id;
+		if (domid == DOMID_ANY) {
+			if (!(conn->domain->features &
+			      XENSTORE_SERVER_FEATURE_DOMID_ANY))
+				perms->p[i].perms |= XS_PERM_IGNORE;
+			continue;
+		}
 		d = find_domain_struct(domid);
 		if (!d) {
 			if (xenmanage_get_domain_info(xm_handle, domid, NULL,
@@ -1788,6 +1799,7 @@ int domain_adjust_node_perms(struct node *node)
 
 	for (i = 1; i < node->hdr.num_perms; i++) {
 		if ((perms[i].perms & XS_PERM_IGNORE) ||
+		    perms[i].id == DOMID_ANY ||
 		    chk_domain_generation(perms[i].id, node->hdr.generation))
 			continue;
 
diff --git a/tools/xenstored/domain.h b/tools/xenstored/domain.h
index b1cfb5cd82..7dad4849a0 100644
--- a/tools/xenstored/domain.h
+++ b/tools/xenstored/domain.h
@@ -116,7 +116,8 @@ const char *get_implicit_path(const struct connection *conn);
  */
 int domain_adjust_node_perms(struct node *node);
 
-int domain_alloc_permrefs(struct node_perms *perms);
+int domain_alloc_permrefs(const struct connection *conn,
+			  struct node_perms *perms);
 
 /* Quota manipulation */
 int domain_nbentry_inc(struct connection *conn, unsigned int domid);
diff --git a/xen/include/public/io/xs_wire.h b/xen/include/public/io/xs_wire.h
index 2e763bc877..d6533a8452 100644
--- a/xen/include/public/io/xs_wire.h
+++ b/xen/include/public/io/xs_wire.h
@@ -126,6 +126,8 @@ struct xenstore_domain_interface {
 #define XENSTORE_SERVER_FEATURE_ERROR        2
 /* The XS_WATCH command can be used with a <depth> parameter */
 #define XENSTORE_SERVER_FEATURE_WATCHDEPTH   4
+/* The capability to use DOMID_ANY for node permissions */
+#define XENSTORE_SERVER_FEATURE_DOMID_ANY    8
 
 /* Valid values for the connection field */
 #define XENSTORE_CONNECTED 0 /* the steady-state */
-- 
2.53.0



From xen-devel-bounces@lists.xenproject.org Thu Apr 23 08:09:00 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 23 Apr 2026 08:09:00 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1291707.1570554 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wFp7G-0005mr-8S; Thu, 23 Apr 2026 08:08:54 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1291707.1570554; Thu, 23 Apr 2026 08:08: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 1wFp7G-0005mi-5n; Thu, 23 Apr 2026 08:08:54 +0000
Received: by outflank-mailman (input) for mailman id 1291707;
 Thu, 23 Apr 2026 08:08:52 +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 1wFp7E-0005mQ-Mh
 for xen-devel@lists.xenproject.org; Thu, 23 Apr 2026 08:08:52 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wFp7E-000vM8-3G
 for xen-devel@lists.xenproject.org; Thu, 23 Apr 2026 10:08:52 +0200
Received: from [10.42.69.9] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <jgross@suse.com>)
 id 69e9d389-bab6-0a2a0a5309dd-0a2a450988ea-22
 for <xen-devel@lists.xenproject.org>; Thu, 23 Apr 2026 10:08:52 +0200
Received: from [195.135.223.131] (helo=smtp-out2.suse.de)
 by tlsNG-bad1c0.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.1)
 (envelope-from <jgross@suse.com>)
 id 69e9d393-2497-0a2a45090019-c387df83acb4-3
 for <xen-devel@lists.xenproject.org>; Thu, 23 Apr 2026 10:08:51 +0200
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 A4EA85BD52;
 Thu, 23 Apr 2026 08:08:49 +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 6A9E8593A3;
 Thu, 23 Apr 2026 08:08:49 +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 DIPtGJHT6Wn6XQAAD6G6ig
 (envelope-from <jgross@suse.com>); Thu, 23 Apr 2026 08:08: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=susede1 header.d=suse.com header.i="@suse.com" header.h="From:Date:Message-ID:To:Cc:MIME-Version:Content-Transfer-Encoding:In-Reply-To:References"; dkim=pass header.s=susede1 header.d=suse.com header.i="@suse.com" header.h="From:Date:Message-ID:To:Cc:MIME-Version:Content-Transfer-Encoding:In-Reply-To:References"
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=suse.com; s=susede1;
	t=1776931729; h=from:from:reply-to:date:date:message-id:message-id:to:to:cc:cc:
	 mime-version:mime-version:
	 content-transfer-encoding:content-transfer-encoding:
	 in-reply-to:in-reply-to:references:references;
	bh=7U7QJ030xhKjZghEjJ0m4/ia2XnyEiFESLJvHSV1fHs=;
	b=sNjPuSxWVfwXjBuoUfhrRbuwtRg2anglf4C/npN7NYezjmxdIlQYR5qc4YCMIVaTsWtIBk
	dnULHiwqF1X1elyFd8bA8anBEYrwmJTUkmPf+43V23U53USanBMT0KUY0zZP2mnssHLN+v
	v5mFTj7soRGwNmYFqFFmhkDfEwzdALo=
Authentication-Results: smtp-out2.suse.de;
	none
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=suse.com; s=susede1;
	t=1776931729; h=from:from:reply-to:date:date:message-id:message-id:to:to:cc:cc:
	 mime-version:mime-version:
	 content-transfer-encoding:content-transfer-encoding:
	 in-reply-to:in-reply-to:references:references;
	bh=7U7QJ030xhKjZghEjJ0m4/ia2XnyEiFESLJvHSV1fHs=;
	b=sNjPuSxWVfwXjBuoUfhrRbuwtRg2anglf4C/npN7NYezjmxdIlQYR5qc4YCMIVaTsWtIBk
	dnULHiwqF1X1elyFd8bA8anBEYrwmJTUkmPf+43V23U53USanBMT0KUY0zZP2mnssHLN+v
	v5mFTj7soRGwNmYFqFFmhkDfEwzdALo=
From: Juergen Gross <jgross@suse.com>
To: xen-devel@lists.xenproject.org
Cc: dmukhin@ford.com,
	Juergen Gross <jgross@suse.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.pau@citrix.com>,
	Stefano Stabellini <sstabellini@kernel.org>
Subject: [PATCH 1/4] xen/public: introduce DOMID_ANY
Date: Thu, 23 Apr 2026 10:08:37 +0200
Message-ID: <20260423080840.530547-2-jgross@suse.com>
X-Mailer: git-send-email 2.53.0
In-Reply-To: <20260423080840.530547-1-jgross@suse.com>
References: <20260423080840.530547-1-jgross@suse.com>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit
X-Spamd-Result: default: False [-2.80 / 50.00];
	BAYES_HAM(-3.00)[99.99%];
	NEURAL_HAM_LONG(-1.00)[-1.000];
	MID_CONTAINS_FROM(1.00)[];
	R_MISSING_CHARSET(0.50)[];
	NEURAL_HAM_SHORT(-0.20)[-1.000];
	MIME_GOOD(-0.10)[text/plain];
	TO_MATCH_ENVRCPT_ALL(0.00)[];
	ARC_NA(0.00)[];
	RCVD_VIA_SMTP_AUTH(0.00)[];
	FROM_HAS_DN(0.00)[];
	MIME_TRACE(0.00)[0:+];
	DBL_BLOCKED_OPENRESOLVER(0.00)[suse.com:mid,suse.com:email,imap1.dmz-prg2.suse.org:helo];
	FUZZY_RATELIMITED(0.00)[rspamd.com];
	RCPT_COUNT_SEVEN(0.00)[10];
	RCVD_COUNT_TWO(0.00)[2];
	FROM_EQ_ENVFROM(0.00)[];
	DKIM_SIGNED(0.00)[suse.com:s=susede1];
	TO_DN_SOME(0.00)[];
	RCVD_TLS_ALL(0.00)[]
X-Spam-Flag: NO
X-Spam-Score: -2.80
X-Spam-Level: 
X-purgate-ID: tlsNG-bad1c0/1776931732-48AAEA53-03F03C49/0/0
X-purgate-type: clean
X-purgate-size: 1192

Add DOMID_ANY to xen/include/public/xen.h meant to be a wildcard for
domids.

Signed-off-by: Denis Mukhin <dmukhin@ford.com>
Signed-off-by: Juergen Gross <jgross@suse.com>
---
This is based on Denis Mukhin's patch "xen/domain: introduce DOMID_ANY".
As my series is another use case for DOMID_ANY and it is a backport
candidate, I've split out the definition of DOMID_ANY from Denis'
patch in order to make progress for my series.
---
 xen/include/public/xen.h | 7 +++++++
 1 file changed, 7 insertions(+)

diff --git a/xen/include/public/xen.h b/xen/include/public/xen.h
index b12fd10e63..f35a6f21f0 100644
--- a/xen/include/public/xen.h
+++ b/xen/include/public/xen.h
@@ -608,6 +608,13 @@ DEFINE_XEN_GUEST_HANDLE(mmuext_op_t);
 /* DOMID_INVALID is used to identify pages with unknown owner. */
 #define DOMID_INVALID        xen_mk_uint(0x7FF4)
 
+/*
+ * DOMID_ANY is used to signal no specific domain ID requested.
+ * Handler should pick a valid ID, or handle it as a broadcast value
+ * depending on the context.
+ */
+#define DOMID_ANY            xen_mk_uint(0x7FF5)
+
 /* Idle domain. */
 #define DOMID_IDLE           xen_mk_uint(0x7FFF)
 
-- 
2.53.0



From xen-devel-bounces@lists.xenproject.org Thu Apr 23 08:09:00 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 23 Apr 2026 08:09:00 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1291706.1570546 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wFp7C-0005ZG-1v; Thu, 23 Apr 2026 08:08:50 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1291706.1570546; Thu, 23 Apr 2026 08: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 1wFp7B-0005Z9-VG; Thu, 23 Apr 2026 08:08:49 +0000
Received: by outflank-mailman (input) for mailman id 1291706;
 Thu, 23 Apr 2026 08:08:49 +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 1wFp7B-0005Yb-2w
 for xen-devel@lists.xenproject.org; Thu, 23 Apr 2026 08:08:49 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wFp7A-009pf8-FU
 for xen-devel@lists.xenproject.org; Thu, 23 Apr 2026 10:08:48 +0200
Received: from [10.42.69.12] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <jgross@suse.com>)
 id 69e9d38d-2eae-0a2a0a5409dd-0a2a450c85fc-14
 for <xen-devel@lists.xenproject.org>; Thu, 23 Apr 2026 10:08:48 +0200
Received: from [195.135.223.131] (helo=smtp-out2.suse.de)
 by tlsNG-d25034.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.1)
 (envelope-from <jgross@suse.com>)
 id 69e9d38e-62f1-0a2a450c0019-c387df83be5c-3
 for <xen-devel@lists.xenproject.org>; Thu, 23 Apr 2026 10:08:46 +0200
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 24EF45BD17;
 Thu, 23 Apr 2026 08:08:44 +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 D83A3593A3;
 Thu, 23 Apr 2026 08:08:43 +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 hjieM4vT6WnyXQAAD6G6ig
 (envelope-from <jgross@suse.com>); Thu, 23 Apr 2026 08:08: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=susede1 header.d=suse.com header.i="@suse.com" header.h="From:Date:Message-ID:To:Cc:MIME-Version:Content-Transfer-Encoding"; dkim=pass header.s=susede1 header.d=suse.com header.i="@suse.com" header.h="From:Date:Message-ID:To:Cc:MIME-Version:Content-Transfer-Encoding"
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=suse.com; s=susede1;
	t=1776931725; h=from:from:reply-to:date:date:message-id:message-id:to:to:cc:cc:
	 mime-version:mime-version:  content-transfer-encoding:content-transfer-encoding;
	bh=W1IJxzbrwQvZUomJgk2VyUnqUajgTY2+LEjFkzuFZnU=;
	b=ZFfPx9hJWvXNfAcR7HjJqr1QkoXki0I1puT7Fi2Zu7c2J7UPJ6QbEVeU8y63n5A7eufAef
	HNMMY3vOcw8Fo2wYbABN+4a9Ad+OqM86C0TRIcAOoptMhzdMPlZ6N9EO2Yp7l1cp5nH3IR
	Oeo4vF3xeKVe2bHjwclxdjQWpFGoDAg=
Authentication-Results: smtp-out2.suse.de;
	dkim=pass header.d=suse.com header.s=susede1 header.b=dwG7Y5Wm
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=suse.com; s=susede1;
	t=1776931724; h=from:from:reply-to:date:date:message-id:message-id:to:to:cc:cc:
	 mime-version:mime-version:  content-transfer-encoding:content-transfer-encoding;
	bh=W1IJxzbrwQvZUomJgk2VyUnqUajgTY2+LEjFkzuFZnU=;
	b=dwG7Y5Wmtnqh3PUaooY8fQr/2/J6i8fyMJYHFYLxx7KSrWr7Ao2cVH/tmrDfDKrAhsOPSm
	IIlaabc247ChEudFQNZQu/wMubS9aWapA39qrZ+CxwcRbWUgS46kP2+Zr/w0hiBSLY2bLh
	zisKNrt+WQkrP7GHleJRAexp5j1V0+I=
From: Juergen Gross <jgross@suse.com>
To: xen-devel@lists.xenproject.org
Cc: dmukhin@ford.com,
	Juergen Gross <jgross@suse.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.pau@citrix.com>,
	Stefano Stabellini <sstabellini@kernel.org>
Subject: [PATCH 0/4] tools/xenstore: fix issue related to XSA-417
Date: Thu, 23 Apr 2026 10:08:36 +0200
Message-ID: <20260423080840.530547-1-jgross@suse.com>
X-Mailer: git-send-email 2.53.0
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit
X-Rspamd-Action: no action
X-Rspamd-Server: rspamd2.dmz-prg2.suse.org
X-Spamd-Result: default: False [-3.01 / 50.00];
	BAYES_HAM(-3.00)[100.00%];
	NEURAL_HAM_LONG(-1.00)[-1.000];
	MID_CONTAINS_FROM(1.00)[];
	R_MISSING_CHARSET(0.50)[];
	R_DKIM_ALLOW(-0.20)[suse.com:s=susede1];
	NEURAL_HAM_SHORT(-0.20)[-1.000];
	MIME_GOOD(-0.10)[text/plain];
	MX_GOOD(-0.01)[];
	ARC_NA(0.00)[];
	RCVD_VIA_SMTP_AUTH(0.00)[];
	RCVD_COUNT_TWO(0.00)[2];
	RBL_SPAMHAUS_BLOCKED_OPENRESOLVER(0.00)[2a07:de40:b281:104:10:150:64:97:from];
	MIME_TRACE(0.00)[0:+];
	FUZZY_RATELIMITED(0.00)[rspamd.com];
	TO_DN_SOME(0.00)[];
	FROM_HAS_DN(0.00)[];
	RECEIVED_SPAMHAUS_BLOCKED_OPENRESOLVER(0.00)[2a07:de40:b281:106:10:150:64:167:received];
	RCPT_COUNT_SEVEN(0.00)[10];
	TO_MATCH_ENVRCPT_ALL(0.00)[];
	DBL_BLOCKED_OPENRESOLVER(0.00)[imap1.dmz-prg2.suse.org:helo,imap1.dmz-prg2.suse.org:rdns,suse.com:dkim,suse.com:mid];
	RCVD_TLS_ALL(0.00)[];
	FROM_EQ_ENVFROM(0.00)[];
	SPAMHAUS_XBL(0.00)[2a07:de40:b281:104:10:150:64:97:from];
	DKIM_SIGNED(0.00)[suse.com:s=susede1];
	DKIM_TRACE(0.00)[suse.com:+]
X-Rspamd-Queue-Id: 24EF45BD17
X-Spam-Flag: NO
X-Spam-Score: -3.01
X-Spam-Level: 
X-purgate-ID: tlsNG-d25034/1776931726-6DD6BCF5-714F34B4/0/0
X-purgate-type: clean
X-purgate-size: 2836

There is one corner case of XSA-417 which wasn't handled completely
with the patches back then.

The XSA-417 fixes tried to solve the problem, that a new domU would
inherit access permissions to access Xenstore entries with that domid
listed in the access rights. In order not to make it easy for a domU
to query existence of a domid, adding permission for a non-existing
domain is not rejected by Xenstore. The XSA-417 patches solved that
problem by adding a flag to a permission entry referencing a not
existing domain, indicating that the permission should not be
effective for Xenstore.

One corner case was not handled:

Consider guest 1 and guest 2 running. Guest 1 adds guest 2 to be able
to access a Xenstore entry. Now guest 2 is removed from the system and
a new guest 3 with the same domid as guest 2 had is being created.

When guest 3 would try now to access the Xenstore entry, it would fail,
as Xenstore would see that the Xenstore entry is older than guest 3.

But if guest 1 is modifying the permissions of the Xenstore entry
again, e.g. by adding another domain, the permission entry for guest 2
would lose its "special flag", resulting in guest 3 now really gaining
access to the Xenstore entry.

This series is fixing this problem by the following means:

- In order to allow guests to know that a Xenstore entry permission
  might have gone stale, allow unprivileged guests to receive
  @releaseDomain watch events. This doesn't open a security hole, as
  the only knowledge which can by gathered from that change is that a
  domain is gone, not that a domain with a specific domid is existing.

- When a domain is removed, remove all permissions relating to this
  domain from all Xenstore entries.

Note that this issue was discussed by the Xen security team and we
decided not to issue an XSA, as there are no known use cases where one
unprivileged guest would grant access to its Xenstore nodes to more
than one other unprivileged guests.

We decided to delay this patch series until the watch depth feature has
been committed, as with that feature available it is now possible for
a guest to handle the death of a specific domain in a sane way.

Juergen Gross (4):
  xen/public: introduce DOMID_ANY
  tools/xenstored: add support for "all domains" node permission
  tools/xenstored: allow @releaseDomain watch for all domains
  tools/xenstored: remove permissions related to dead domain

 docs/man/xl.cfg.5.pod.in        |  4 ++
 tools/xenstored/core.c          | 45 ++++++++++++++-----
 tools/xenstored/domain.c        | 77 +++++++++++++++++++++------------
 tools/xenstored/domain.h        |  3 +-
 xen/include/public/io/xs_wire.h |  2 +
 xen/include/public/xen.h        |  7 +++
 6 files changed, 99 insertions(+), 39 deletions(-)

-- 
2.53.0



From xen-devel-bounces@lists.xenproject.org Thu Apr 23 08:09:07 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 23 Apr 2026 08:09:07 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1291715.1570573 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wFp7T-0006OJ-Sd; Thu, 23 Apr 2026 08:09:07 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1291715.1570573; Thu, 23 Apr 2026 08:09: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 1wFp7T-0006O3-OA; Thu, 23 Apr 2026 08:09:07 +0000
Received: by outflank-mailman (input) for mailman id 1291715;
 Thu, 23 Apr 2026 08:09:07 +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 1wFp7T-0006NT-8D
 for xen-devel@lists.xenproject.org; Thu, 23 Apr 2026 08:09:07 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wFp7S-000vQl-KM
 for xen-devel@lists.xenproject.org; Thu, 23 Apr 2026 10:09:06 +0200
Received: from [10.42.69.6] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <jgross@suse.com>)
 id 69e9d39c-e002-0a2a0a5209dd-0a2a450688f4-28
 for <xen-devel@lists.xenproject.org>; Thu, 23 Apr 2026 10:09:06 +0200
Received: from [195.135.223.131] (helo=smtp-out2.suse.de)
 by tlsNG-16d1c6.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.1)
 (envelope-from <jgross@suse.com>)
 id 69e9d3a2-7371-0a2a45060019-c387df83b19c-3
 for <xen-devel@lists.xenproject.org>; Thu, 23 Apr 2026 10:09:06 +0200
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 0B3A95BCFD;
 Thu, 23 Apr 2026 08:09:06 +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 DC22C593B0;
 Thu, 23 Apr 2026 08:09:05 +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 BK6qNKHT6WkJXgAAD6G6ig
 (envelope-from <jgross@suse.com>); Thu, 23 Apr 2026 08:09: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=susede1 header.d=suse.com header.i="@suse.com" header.h="From:Date:Message-ID:To:Cc:MIME-Version:Content-Transfer-Encoding:In-Reply-To:References"; dkim=pass header.s=susede1 header.d=suse.com header.i="@suse.com" header.h="From:Date:Message-ID:To:Cc:MIME-Version:Content-Transfer-Encoding:In-Reply-To:References"
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=suse.com; s=susede1;
	t=1776931746; h=from:from:reply-to:date:date:message-id:message-id:to:to:cc:cc:
	 mime-version:mime-version:
	 content-transfer-encoding:content-transfer-encoding:
	 in-reply-to:in-reply-to:references:references;
	bh=UsqG9+X/SlnL7BdCX9NqfxTSD27zTpZHRZjBmI+WZ58=;
	b=sOcM2DmO3hCcSkkSOQqMDHZYE7hbZLXGjCFTeAxkZHtd2fSEBs7jJH1udglCJDU4Xc1oEf
	bRFKKGOf8H7wUjbiLqbNGg2lyNFRyMFDwZTfpc7g+EEmdsP+y0Hf2gbpJy8OYnFhhxOT+Z
	VLReKxDQvom9d3+23Tx3fShk69h33+o=
Authentication-Results: smtp-out2.suse.de;
	none
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=suse.com; s=susede1;
	t=1776931746; h=from:from:reply-to:date:date:message-id:message-id:to:to:cc:cc:
	 mime-version:mime-version:
	 content-transfer-encoding:content-transfer-encoding:
	 in-reply-to:in-reply-to:references:references;
	bh=UsqG9+X/SlnL7BdCX9NqfxTSD27zTpZHRZjBmI+WZ58=;
	b=sOcM2DmO3hCcSkkSOQqMDHZYE7hbZLXGjCFTeAxkZHtd2fSEBs7jJH1udglCJDU4Xc1oEf
	bRFKKGOf8H7wUjbiLqbNGg2lyNFRyMFDwZTfpc7g+EEmdsP+y0Hf2gbpJy8OYnFhhxOT+Z
	VLReKxDQvom9d3+23Tx3fShk69h33+o=
From: Juergen Gross <jgross@suse.com>
To: xen-devel@lists.xenproject.org
Cc: dmukhin@ford.com,
	Juergen Gross <jgross@suse.com>,
	Julien Grall <julien@xen.org>,
	Anthony PERARD <anthony.perard@vates.tech>
Subject: [PATCH 4/4] tools/xenstored: remove permissions related to dead domain
Date: Thu, 23 Apr 2026 10:08:40 +0200
Message-ID: <20260423080840.530547-5-jgross@suse.com>
X-Mailer: git-send-email 2.53.0
In-Reply-To: <20260423080840.530547-1-jgross@suse.com>
References: <20260423080840.530547-1-jgross@suse.com>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit
X-Spamd-Result: default: False [-2.80 / 50.00];
	BAYES_HAM(-3.00)[100.00%];
	NEURAL_HAM_LONG(-1.00)[-1.000];
	MID_CONTAINS_FROM(1.00)[];
	R_MISSING_CHARSET(0.50)[];
	NEURAL_HAM_SHORT(-0.20)[-1.000];
	MIME_GOOD(-0.10)[text/plain];
	TO_MATCH_ENVRCPT_ALL(0.00)[];
	FROM_HAS_DN(0.00)[];
	ARC_NA(0.00)[];
	MIME_TRACE(0.00)[0:+];
	TO_DN_SOME(0.00)[];
	DBL_BLOCKED_OPENRESOLVER(0.00)[suse.com:mid,suse.com:email,imap1.dmz-prg2.suse.org:helo];
	RCVD_VIA_SMTP_AUTH(0.00)[];
	FROM_EQ_ENVFROM(0.00)[];
	RCVD_COUNT_TWO(0.00)[2];
	FUZZY_RATELIMITED(0.00)[rspamd.com];
	DKIM_SIGNED(0.00)[suse.com:s=susede1];
	RCPT_COUNT_FIVE(0.00)[5];
	RCVD_TLS_ALL(0.00)[]
X-Spam-Flag: NO
X-Spam-Score: -2.80
X-Spam-Level: 
X-purgate-ID: tlsNG-16d1c6/1776931746-50767D75-5A35755B/0/0
X-purgate-type: clean
X-purgate-size: 3648

Wit unprivileged domains now capable to use the @releaseDomain watch,
there is no reason not to remove any node permissions which relate to
a domain which has been removed.

This resolves a complex scenario where a new domain could inherit the
permissions of an old one with the same domid.

Signed-off-by: Juergen Gross <jgross@suse.com>
---
 tools/xenstored/domain.c | 61 ++++++++++++++++++++++++----------------
 1 file changed, 36 insertions(+), 25 deletions(-)

diff --git a/tools/xenstored/domain.c b/tools/xenstored/domain.c
index 0bd2a1891a..6fbb5c061a 100644
--- a/tools/xenstored/domain.c
+++ b/tools/xenstored/domain.c
@@ -569,24 +569,10 @@ static int domain_tree_remove_sub(const void *ctx, struct connection *conn,
 				  struct node *node, void *arg)
 {
 	struct domain *domain = arg;
-	int ret = WALK_TREE_OK;
-
-	if (node->perms[0].id != domain->domid)
-		return WALK_TREE_OK;
+	bool node_changed = false;
+	unsigned int i;
 
-	if (keep_orphans) {
-		domain_nbentry_dec(NULL, domain->domid);
-		node->perms[0].id = priv_domid;
-		node->acc.memory = 0;
-		domain_nbentry_inc(NULL, priv_domid);
-		if (write_node_raw(NULL, node->name, node, NODE_MODIFY, true)) {
-			/* That's unfortunate. We only can try to continue. */
-			syslog(LOG_ERR,
-			       "error when moving orphaned node %s to dom0\n",
-			       node->name);
-		} else
-			trace("orphaned node %s moved to dom0\n", node->name);
-	} else {
+	if (node->perms[0].id == domain->domid && !keep_orphans) {
 		if (rm_node(NULL, ctx, node->name)) {
 			/* That's unfortunate. We only can try to continue. */
 			syslog(LOG_ERR,
@@ -596,10 +582,38 @@ static int domain_tree_remove_sub(const void *ctx, struct connection *conn,
 			trace("orphaned node %s deleted\n", node->name);
 
 		/* Skip children in all cases in order to avoid more errors. */
-		ret = WALK_TREE_SKIP_CHILDREN;
+		return WALK_TREE_SKIP_CHILDREN;
 	}
 
-	return domain->acc_val[ACC_NODES] ? ret : WALK_TREE_SUCCESS_STOP;
+	if (node->perms[0].id == domain->domid) {
+		domain_nbentry_dec(NULL, domain->domid);
+		node->perms[0].id = priv_domid;
+		node->acc.memory = 0;
+		domain_nbentry_inc(NULL, priv_domid);
+		trace("moving orphaned node %s to dom0\n", node->name);
+		node_changed = true;
+	}
+
+	for (i = 1; i < node->hdr.num_perms; i++) {
+		if (node->perms[i].id != domain->domid)
+			continue;
+		memmove(node->perms + i, node->perms + i + 1,
+			sizeof(*node->perms) * (node->hdr.num_perms - i - 1));
+		node->hdr.num_perms--;
+		i--;
+		node_changed = true;
+	}
+
+	if (node_changed) {
+		if (write_node_raw(NULL, node->name, node, NODE_MODIFY, true)) {
+			/* That's unfortunate. We only can try to continue. */
+			syslog(LOG_ERR,
+			       "error when writing modified node %s\n",
+			       node->name);
+		}
+	}
+
+	return WALK_TREE_OK;
 }
 
 static void domain_tree_remove(struct domain *domain)
@@ -607,12 +621,9 @@ static void domain_tree_remove(struct domain *domain)
 	int ret;
 	struct walk_funcs walkfuncs = { .enter = domain_tree_remove_sub };
 
-	if (domain->acc_val[ACC_NODES]) {
-		ret = walk_node_tree(domain, NULL, "/", &walkfuncs, domain);
-		if (ret == WALK_TREE_ERROR_STOP)
-			syslog(LOG_ERR,
-			       "error when looking for orphaned nodes\n");
-	}
+	ret = walk_node_tree(domain, NULL, "/", &walkfuncs, domain);
+	if (ret == WALK_TREE_ERROR_STOP)
+		syslog(LOG_ERR, "error when looking for orphaned nodes\n");
 
 	walk_node_tree(domain, NULL, "@releaseDomain", &walkfuncs, domain);
 	walk_node_tree(domain, NULL, "@introduceDomain", &walkfuncs, domain);
-- 
2.53.0



From xen-devel-bounces@lists.xenproject.org Thu Apr 23 08:09:09 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 23 Apr 2026 08:09:09 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1291716.1570581 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wFp7V-0006eB-37; Thu, 23 Apr 2026 08:09:09 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1291716.1570581; Thu, 23 Apr 2026 08:09: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 1wFp7U-0006e0-Uv; Thu, 23 Apr 2026 08:09:08 +0000
Received: by outflank-mailman (input) for mailman id 1291716;
 Thu, 23 Apr 2026 08:09:07 +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 1wFp7T-0006Ny-Ol
 for xen-devel@lists.xenproject.org; Thu, 23 Apr 2026 08:09:07 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wFp7T-009pmL-5G
 for xen-devel@lists.xenproject.org; Thu, 23 Apr 2026 10:09:07 +0200
Received: from [10.42.69.9] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <jgross@suse.com>)
 id 69e9d39e-2eae-0a2a0a5409dd-0a2a4509aeac-16
 for <xen-devel@lists.xenproject.org>; Thu, 23 Apr 2026 10:09:07 +0200
Received: from [195.135.223.130] (helo=smtp-out1.suse.de)
 by tlsNG-bad1c0.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.1)
 (envelope-from <jgross@suse.com>)
 id 69e9d3a2-2497-0a2a45090019-c387df82c062-3
 for <xen-devel@lists.xenproject.org>; Thu, 23 Apr 2026 10:09:07 +0200
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 9617E6A81E;
 Thu, 23 Apr 2026 08:09:00 +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 6EF76593A3;
 Thu, 23 Apr 2026 08:09:00 +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 r7kHGpzT6WkEXgAAD6G6ig
 (envelope-from <jgross@suse.com>); Thu, 23 Apr 2026 08:09: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=susede1 header.d=suse.com header.i="@suse.com" header.h="From:Date:Message-ID:To:Cc:MIME-Version:Content-Transfer-Encoding:In-Reply-To:References"; dkim=pass header.s=susede1 header.d=suse.com header.i="@suse.com" header.h="From:Date:Message-ID:To:Cc:MIME-Version:Content-Transfer-Encoding:In-Reply-To:References"
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=suse.com; s=susede1;
	t=1776931741; h=from:from:reply-to:date:date:message-id:message-id:to:to:cc:cc:
	 mime-version:mime-version:
	 content-transfer-encoding:content-transfer-encoding:
	 in-reply-to:in-reply-to:references:references;
	bh=mye3eCQVSlEbkJEnkWGbsqAfuNKV6b0HpEvbptC1tVQ=;
	b=sPZf6KqqJRs24isDTQ3Kms4qAjjRhGoIKm66ukA1cIV1y945/3NRA2RegytzyEVa9AQLuD
	FP0D0BomlwISbMcjxjjIXLVllHLi3lcs3GIFIeyIzdeerDPIR+46fB8fWFlU3ciME2ASqt
	AuzhPVG3swBKXn6zCZFHFdUpe05mjE0=
Authentication-Results: smtp-out1.suse.de;
	dkim=pass header.d=suse.com header.s=susede1 header.b=AgfXxE44
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=suse.com; s=susede1;
	t=1776931740; h=from:from:reply-to:date:date:message-id:message-id:to:to:cc:cc:
	 mime-version:mime-version:
	 content-transfer-encoding:content-transfer-encoding:
	 in-reply-to:in-reply-to:references:references;
	bh=mye3eCQVSlEbkJEnkWGbsqAfuNKV6b0HpEvbptC1tVQ=;
	b=AgfXxE44EPVmap4ZnIVWJtN9LpKEhQY9msq5nMBi1S9lBSMXtQBiigKT45Y5QpJDKvQFhM
	tKI0BRllurFsX1ml8neyfELHMKsl+9wJk9GM56MwN0LIklNoQhTa4WdpfUXgy8qMN8RwZL
	P2Uxz4krBpnib2eAupPqs2A36OL7wjc=
From: Juergen Gross <jgross@suse.com>
To: xen-devel@lists.xenproject.org
Cc: dmukhin@ford.com,
	Juergen Gross <jgross@suse.com>,
	Julien Grall <julien@xen.org>,
	Anthony PERARD <anthony.perard@vates.tech>
Subject: [PATCH 3/4] tools/xenstored: allow @releaseDomain watch for all domains
Date: Thu, 23 Apr 2026 10:08:39 +0200
Message-ID: <20260423080840.530547-4-jgross@suse.com>
X-Mailer: git-send-email 2.53.0
In-Reply-To: <20260423080840.530547-1-jgross@suse.com>
References: <20260423080840.530547-1-jgross@suse.com>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit
X-Rspamd-Action: no action
X-Rspamd-Server: rspamd2.dmz-prg2.suse.org
X-Spamd-Result: default: False [-3.01 / 50.00];
	BAYES_HAM(-3.00)[100.00%];
	MID_CONTAINS_FROM(1.00)[];
	NEURAL_HAM_LONG(-1.00)[-1.000];
	R_MISSING_CHARSET(0.50)[];
	R_DKIM_ALLOW(-0.20)[suse.com:s=susede1];
	NEURAL_HAM_SHORT(-0.20)[-1.000];
	MIME_GOOD(-0.10)[text/plain];
	MX_GOOD(-0.01)[];
	MIME_TRACE(0.00)[0:+];
	FUZZY_RATELIMITED(0.00)[rspamd.com];
	DKIM_SIGNED(0.00)[suse.com:s=susede1];
	TO_DN_SOME(0.00)[];
	RBL_SPAMHAUS_BLOCKED_OPENRESOLVER(0.00)[2a07:de40:b281:104:10:150:64:97:from];
	SPAMHAUS_XBL(0.00)[2a07:de40:b281:104:10:150:64:97:from];
	ARC_NA(0.00)[];
	RCVD_COUNT_TWO(0.00)[2];
	TO_MATCH_ENVRCPT_ALL(0.00)[];
	FROM_HAS_DN(0.00)[];
	RECEIVED_SPAMHAUS_BLOCKED_OPENRESOLVER(0.00)[2a07:de40:b281:106:10:150:64:167:received];
	FROM_EQ_ENVFROM(0.00)[];
	MAILSPIKE_FAIL(0.00)[2a07:de40:b281:104:10:150:64:97:query timed out];
	RCVD_VIA_SMTP_AUTH(0.00)[];
	RCVD_TLS_ALL(0.00)[];
	DKIM_TRACE(0.00)[suse.com:+];
	RCPT_COUNT_FIVE(0.00)[5];
	DBL_BLOCKED_OPENRESOLVER(0.00)[imap1.dmz-prg2.suse.org:helo,imap1.dmz-prg2.suse.org:rdns,suse.com:dkim,suse.com:mid,suse.com:email]
X-Rspamd-Queue-Id: 9617E6A81E
X-Spam-Flag: NO
X-Spam-Score: -3.01
X-Spam-Level: 
X-purgate-ID: tlsNG-bad1c0/1776931747-492B2A53-5C4844DD/0/0
X-purgate-type: clean
X-purgate-size: 2636

Currently the @releaseDomain watch is allowed for dom0 only. This is
problematic for guests which want to give other domains access to
Xenstore entries, as they have no simple way to tell when such a
domain is stopped.

Allow @releaseDomain to be usable by all domains as the default.

Signed-off-by: Juergen Gross <jgross@suse.com>
---
 tools/xenstored/core.c | 26 ++++++++++++++++++++------
 1 file changed, 20 insertions(+), 6 deletions(-)

diff --git a/tools/xenstored/core.c b/tools/xenstored/core.c
index 5a621f53ba..421f227ff1 100644
--- a/tools/xenstored/core.c
+++ b/tools/xenstored/core.c
@@ -2279,19 +2279,19 @@ struct connection *get_connection_by_id(unsigned int conn_id)
 }
 
 /* We create initial nodes manually. */
-static void manual_node(const char *name, const char *child)
+static void manual_node_perms(const char *name, const char *child,
+			      struct xs_permissions *perms,
+			      unsigned int n_perms)
 {
 	struct node *node;
-	struct xs_permissions perms = { .id = priv_domid,
-					.perms = XS_PERM_NONE };
 
 	node = talloc_zero(NULL, struct node);
 	if (!node)
 		barf_perror("Could not allocate initial node %s", name);
 
 	node->name = name;
-	node->perms = &perms;
-	node->hdr.num_perms = 1;
+	node->perms = perms;
+	node->hdr.num_perms = n_perms;
 	node->children = (char *)child;
 	if (child)
 		node->hdr.childlen = strlen(child) + 1;
@@ -2301,6 +2301,14 @@ static void manual_node(const char *name, const char *child)
 	talloc_free(node);
 }
 
+static void manual_node(const char *name, const char *child)
+{
+	struct xs_permissions perms = { .id = priv_domid,
+					.perms = XS_PERM_NONE };
+
+	manual_node_perms(name, child, &perms, 1);
+}
+
 static unsigned int hash_from_key_fn(const void *k)
 {
 	const char *str = k;
@@ -2320,6 +2328,11 @@ static int keys_equal_fn(const void *key1, const void *key2)
 
 void setup_structure(bool live_update)
 {
+	struct xs_permissions perms[] = {
+		{ .id = priv_domid,	.perms = XS_PERM_NONE },
+		{ .id = DOMID_ANY,	.perms = XS_PERM_READ },
+	};
+
 	nodes = create_hashtable(NULL, "nodes", hash_from_key_fn, keys_equal_fn,
 				 HASHTABLE_FREE_KEY | HASHTABLE_FREE_VALUE);
 	if (!nodes)
@@ -2331,7 +2344,8 @@ void setup_structure(bool live_update)
 		manual_node("/", "tool");
 		manual_node("/tool", "xenstored");
 		manual_node("/tool/xenstored", NULL);
-		manual_node("@releaseDomain", NULL);
+		manual_node_perms("@releaseDomain", NULL,
+				  perms, ARRAY_SIZE(perms));
 		manual_node("@introduceDomain", NULL);
 		domain_nbentry_fix(priv_domid, 5);
 	}
-- 
2.53.0



From xen-devel-bounces@lists.xenproject.org Thu Apr 23 08:17:21 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 23 Apr 2026 08:17:21 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1291752.1570591 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wFpFL-0001QA-Sc; Thu, 23 Apr 2026 08:17:15 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1291752.1570591; Thu, 23 Apr 2026 08:17: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 1wFpFL-0001Q2-Oz; Thu, 23 Apr 2026 08:17:15 +0000
Received: by outflank-mailman (input) for mailman id 1291752;
 Thu, 23 Apr 2026 08:17:14 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <Bertrand.Marquis@arm.com>) id 1wFpFK-0001Oh-6T
 for xen-devel@lists.xenproject.org; Thu, 23 Apr 2026 08:17:14 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wFpFI-000G8q-1T
 for xen-devel@lists.xenproject.org; Thu, 23 Apr 2026 10:17:13 +0200
Received: from [10.42.69.10] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <Bertrand.Marquis@arm.com>)
 id 69e9d586-bab6-0a2a0a5309dd-0a2a450aaf64-22
 for <xen-devel@lists.xenproject.org>; Thu, 23 Apr 2026 10:17:13 +0200
Received: from [40.107.162.68]
 (helo=PA4PR04CU001.outbound.protection.outlook.com)
 by tlsNG-4011c0.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.1)
 (envelope-from <Bertrand.Marquis@arm.com>)
 id 69e9d589-56b3-0a2a450a0019-286ba244f361-4
 for <xen-devel@lists.xenproject.org>; Thu, 23 Apr 2026 10:17:13 +0200
Received: from AM9P250CA0020.EURP250.PROD.OUTLOOK.COM (2603:10a6:20b:21c::25)
 by DU0PR08MB8495.eurprd08.prod.outlook.com (2603:10a6:10:404::8) with
 Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9846.16; Thu, 23 Apr
 2026 08:17:02 +0000
Received: from AMS0EPF00000198.eurprd05.prod.outlook.com
 (2603:10a6:20b:21c:cafe::7) by AM9P250CA0020.outlook.office365.com
 (2603:10a6:20b:21c::25) with Microsoft SMTP Server (version=TLS1_3,
 cipher=TLS_AES_256_GCM_SHA384) id 15.20.9791.48 via Frontend Transport; Thu,
 23 Apr 2026 08:17:02 +0000
Received: from outbound-uk1.az.dlp.m.darktrace.com (4.158.2.129) by
 AMS0EPF00000198.mail.protection.outlook.com (10.167.16.244) with Microsoft
 SMTP Server (version=TLS1_3, cipher=TLS_AES_256_GCM_SHA384) id 15.20.9846.18
 via Frontend Transport; Thu, 23 Apr 2026 08:17:02 +0000
Received: from PR3PR08MB5593.eurprd08.prod.outlook.com (2603:10a6:102:84::13)
 by AS2PR08MB9942.eurprd08.prod.outlook.com (2603:10a6:20b:545::16)
 with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9846.21; Thu, 23 Apr
 2026 08:15:56 +0000
Received: from PR3PR08MB5593.eurprd08.prod.outlook.com
 ([fe80::aae1:6871:afc4:620e]) by PR3PR08MB5593.eurprd08.prod.outlook.com
 ([fe80::aae1:6871:afc4:620e%5]) with mapi id 15.20.9818.023; Thu, 23 Apr 2026
 08:15: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=arm.com header.i="@arm.com" header.h="From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck"; dkim=pass header.s=selector1 header.d=arm.com header.i="@arm.com" header.h="From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck"
ARC-Seal: i=2; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=pass;
 b=Lem1mdvuEVefGFTMb2dRI2oIGwRciBLMMbcaZZzfYGt3ZzVTLYDDJgZPXMkLqP/ePH8ZECWqcZsxJASbXn4MdMpax8AcyNmWpl3C+mFwGUa3nUZiiwtiMOtCyZr2H2NNfeStmOyLgyo4Z2Qx7JfAmzCcC1Tp+7N2GvlGwQzNUkfUhDDncrnd7BwZsUNzcujsVwIbZr34GpOiPv/OETSNqHBabuLYdNmBSIlSrbZMJSCQJ5zEBYZ83bpAlExgI7eXk7BivbM0ghNK7ARPWJurAhxD80DMftdj7VDWsTu58yJuvy6WknEir1fwV1/EIlCsHhp2AlR0H3KiGM0UeIoGPA==
ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com;
 s=arcselector10001;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1;
 bh=QOBKO70A7UAdzofvuc/7jl3g1FJVWXfR6RJN+nYkYwI=;
 b=NYaEX+2bCsInHzkqGYgPcIfPYf4wODqknEfdA5b0QD+PKVDUV7j5PpEB+FtpQqMsA1g+Lzs2ZM0pNbOocfXFaQLVevaqjgIn0K2JZaDpba49PH64tPBC8BWSkpSgM8ejuSYjzXrKgSNeCq5gXTO42eahnBy74VXBG/y88rvQ59huV8YbZqFaQwOSvRZZvwCLDuuDVVbowW4zC0467f2xBa5JYtmiBGMQ8yp/PduS0oxZdPLOT/kJoVfqRVdJy7Z/c17KyssklnwoJgulXvxz7oucopEvmLXysYQ4gAO9fKTj6d75kLzpb03lzxCdY8fXP1xnxdb3JMCu6G5YoBWx1w==
ARC-Authentication-Results: i=2; mx.microsoft.com 1; spf=pass (sender ip is
 4.158.2.129) smtp.rcpttodomain=linaro.org smtp.mailfrom=arm.com; dmarc=pass
 (p=none sp=none pct=100) action=none header.from=arm.com; dkim=pass
 (signature was verified) header.d=arm.com; arc=pass (0 oda=1 ltdi=1
 spf=[1,1,smtp.mailfrom=arm.com] dkim=[1,1,header.d=arm.com]
 dmarc=[1,1,header.from=arm.com])
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=arm.com; s=selector1;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck;
 bh=QOBKO70A7UAdzofvuc/7jl3g1FJVWXfR6RJN+nYkYwI=;
 b=C339owpm2qeTLv/f7JjdlGnv86KQ0AM+o/UBzKngDzsHLrScxWpdEmu0Y20Nop3NBuSKP9wIJBHwsMgFmrnVxgzFVdSUUTjGQySEasMBAF9n4tTcpoZPKDOj+WxbA+MfK7jAIp/xZTXxOsLYTUsttHoNlC2ptEhYyaahQygUdzA=
X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 4.158.2.129)
 smtp.mailfrom=arm.com; dkim=pass (signature was verified)
 header.d=arm.com;dmarc=pass action=none header.from=arm.com;
Received-SPF: Pass (protection.outlook.com: domain of arm.com designates
 4.158.2.129 as permitted sender) receiver=protection.outlook.com;
 client-ip=4.158.2.129; helo=outbound-uk1.az.dlp.m.darktrace.com; pr=C
ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none;
 b=nqlur0K93d2zHx3JPQloUzWFIrN5pGzhNiNfJuFVcU5dLEelLhm1NuMDTg7MHnkMO+PjmaQoHCYMEJ2BhBKY1VzL8WIpxGIEOqeCsROnAcjbjxX0HifZfWZNgIwtZRInk7w4IoBkKOcgll7JCn2pxfZIw2xlzmripjO0NxI3nZJxrMZBHyrUV9qTFm5BOcpdSwzcG6G/ROHli3QiBSbae3SMlC2eWK2jJli6bALqjF8sFJL32kqFfcN6RPfSQu0IilAhwDivrdsoei33Vko0hQmuWpt2qfcPyf5egLE+WcMi7VwTzv+tMx2dQDYS7Jsf5HdXYcskBvY247JKzigAOA==
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com;
 s=arcselector10001;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1;
 bh=QOBKO70A7UAdzofvuc/7jl3g1FJVWXfR6RJN+nYkYwI=;
 b=GwktKifoxI7fUHDEhf1qjfrDsPSC5z2pEMux3LnKFx+wvbWrXkhNeeoshKL9wJgt0mikG28bSOyUPMbFsU6Ay9n4LbK4TSSUeU7o6fhk+smLjMFj1YE69sMVhnIkE0XQlcJ2utLyOn9ZQZNlOKfR8+0irbtlh1nUvScgleyprmuKwTOxFvTtvha9XFij0THeoLYXg4jVNvtktSGEDyWI4TynmD+yiTIsbmXu/XGuWqoADIW4l2yj/leKJs/3pkL069PajWV1As+wCuBnsI1U8nCqpPZFtKxzUOkJO0jCxC0pLSBgb81qsT4GJfeJUIkcR0q45DeX5pFoTgqbzy9KGg==
ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass
 smtp.mailfrom=arm.com; dmarc=pass action=none header.from=arm.com; dkim=pass
 header.d=arm.com; arc=none
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=arm.com; s=selector1;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck;
 bh=QOBKO70A7UAdzofvuc/7jl3g1FJVWXfR6RJN+nYkYwI=;
 b=C339owpm2qeTLv/f7JjdlGnv86KQ0AM+o/UBzKngDzsHLrScxWpdEmu0Y20Nop3NBuSKP9wIJBHwsMgFmrnVxgzFVdSUUTjGQySEasMBAF9n4tTcpoZPKDOj+WxbA+MfK7jAIp/xZTXxOsLYTUsttHoNlC2ptEhYyaahQygUdzA=
From: Bertrand Marquis <Bertrand.Marquis@arm.com>
To: Jens Wiklander <jens.wiklander@linaro.org>
CC: "xen-devel@lists.xenproject.org" <xen-devel@lists.xenproject.org>,
	Volodymyr Babchuk <volodymyr_babchuk@epam.com>, Stefano Stabellini
	<sstabellini@kernel.org>, Julien Grall <julien@xen.org>, Michal Orzel
	<michal.orzel@amd.com>
Subject: Re: [PATCH 6/6] xen/arm: ffa: Deliver VM-to-VM notifications locally
Thread-Topic: [PATCH 6/6] xen/arm: ffa: Deliver VM-to-VM notifications locally
Thread-Index: AQHcznAj5bksQAE/uU+1luHutLjHlrXrJN4AgAExA4A=
Date: Thu, 23 Apr 2026 08:15:53 +0000
Message-ID: <263B26DA-15D5-43A6-90D8-AA42AF8C391B@arm.com>
References: <cover.1776266307.git.bertrand.marquis@arm.com>
 <e85d0ef9733f091e09f520c2e0598f13cb7af06a.1776266307.git.bertrand.marquis@arm.com>
 <CAHUa44GbUQRfFzBqpAX94FSioYzT9tx5oP7C8fOvnWmMTV4-SQ@mail.gmail.com>
In-Reply-To:
 <CAHUa44GbUQRfFzBqpAX94FSioYzT9tx5oP7C8fOvnWmMTV4-SQ@mail.gmail.com>
Accept-Language: en-GB, en-US
Content-Language: en-US
X-MS-Has-Attach:
X-MS-TNEF-Correlator:
x-mailer: Apple Mail (2.3864.500.181)
Authentication-Results-Original: dkim=none (message not signed)
 header.d=none;dmarc=none action=none header.from=arm.com;
x-ms-traffictypediagnostic:
	PR3PR08MB5593:EE_|AS2PR08MB9942:EE_|AMS0EPF00000198:EE_|DU0PR08MB8495:EE_
X-MS-Office365-Filtering-Correlation-Id: 7397d6f9-e126-4846-7552-08dea110b2ff
x-checkrecipientrouted: true
nodisclaimer: true
X-MS-Exchange-SenderADCheck: 1
X-MS-Exchange-AntiSpam-Relay: 0
X-Microsoft-Antispam-Untrusted:
 BCL:0;ARA:13230040|1800799024|376014|366016|38070700021|56012099003|18002099003|22082099003;
X-Microsoft-Antispam-Message-Info-Original:
 GhE67Tff+WsfdHS3UsU0YS/VnEFq0FuT4vOS61HwRYf5tQj0mDtG4/jRE1sXXTZJLy8V26YhVlFP/AmsTABEc4Pu9HGfgKFZiqWxzj5Zao41X8MdObxLv4VszUs3NUQNORn0qSfdsB9rOQzvY4Yyi3+hHXp8xuJ1Sm1EHU+n72Vp2JIsPPd4KWE3l4Yi9UbYxqidf6s9+VE8qwWWlC5iwxHB1ldKywPkrKhTDRHizDLOhY6bJYhNRM7+X5vfrcwhovUUK3s2AYltqUhmIshnMKiUTbV+Atj8Fp+9u3pZCHKe2gGxONeqLUFUXxN3CHNPgbq76j9iaqBflKBDeyF6GyhDr1aILj35WujVaXn9c6d+yGyEGr/mpILWXM4sJx06XBo6uE4d6zfl3F3GO3lg9ttiIXr72Zy3Zvvhn048BzeChzTTbUpx4ySQTFZu+xpNtVOIZxc5MtN5l1OeIP1tfCRFddKKufkA4L5ig5tZkYFUDDZW8QX/DqQwNRM0jylL6GhNrZhoZZDCLy7CMwvspTQMlxgX6uky7sbCcVYFF9FzzeM7VZlMDuY0zDobzMteLvQntPk+xS1qEBsaMXSNAQDP6ncpzCVew79WXnaYeg5+IFdSK+FkiF/ivXitYZwLjR4JJlE3VFf3EfXNZaW7rvBthuDaROaha+Y9oozsGf/8S8WcR2lvPce7jv69dIjNZ+lACyeHXn6ZRwS0taHC1ipViW+PF91Fat6pxqCb5Vm5uqofVShB65L/GIHJG50KcqwdxJqPUfHpWuJoxq82bZWoQwhP6Tp0rgk2xysWhN0=
X-Forefront-Antispam-Report-Untrusted:
 CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:PR3PR08MB5593.eurprd08.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(1800799024)(376014)(366016)(38070700021)(56012099003)(18002099003)(22082099003);DIR:OUT;SFP:1101;
Content-Type: text/plain; charset="utf-8"
Content-ID: <79422F588C3CA748846A8F994F25660B@eurprd08.prod.outlook.com>
Content-Transfer-Encoding: base64
MIME-Version: 1.0
X-Exchange-RoutingPolicyChecked:
 QW217cXh+OV1nAVXAEkuY92E31mdDPaVhDLz+qUMmdAMePkT98gVVLzU7DjQtdSNi3OWVDfdgRmZskdZDHjWC2EGGN1q+6O5CddK7zQukcTkcIwu6LGykOaYJ0oxPqMWcYxIcpUi0cEksEZyK5FsQxDqWC+JYZkm3THqYuJfo59tutNIgbRdXyQkMwPlQlOvaojMzmWH7RO3PL3NhOWDrgd836L0nAwi4CDLI5zSWv01tKgOncKKmHrb0NEe22W/ZzQFUJaFTHI18jxP7+qw+uBWzdgTBrzflGFgQQgGO+SQ5yWYx6GHC/V4Q4CSIrwOFZveM0/xapXHoYmo9VxfvA==
X-MS-Exchange-Transport-CrossTenantHeadersStamped: AS2PR08MB9942
X-EOPAttributedMessage: 0
X-MS-Exchange-Transport-CrossTenantHeadersStripped:
 AMS0EPF00000198.eurprd05.prod.outlook.com
X-MS-PublicTrafficType: Email
X-MS-Office365-Filtering-Correlation-Id-Prvs:
	eaad1835-930c-4612-25e1-08dea11089f5
X-Microsoft-Antispam:
	BCL:0;ARA:13230040|1800799024|376014|36860700016|82310400026|35042699022|14060799003|22082099003|18002099003|56012099003;
X-Microsoft-Antispam-Message-Info:
	XF6zqJ64YGBCwZ1qC3No8NcekiuNdzolzMG6HciTQeL3nAjbVw0mCBwhEzriDc+8yjKLfOv/yqwVwsrwfS8a23Hx3JqtGYBYR0vABray96Gbvi+hFCfwvmmCoFIrQIRqwtwDrNpXzqjScA80+gHaXxRGillz8gzG5EQuv+QZUAOLA9P0+KEm4x5o6g+nEJ1t+SiF1FS6ruA5+V+oM6vYTL9FVxAVJGqVbK8l1mSeMsTLKkqs8s/WemkgftNk1C4ph944n8pPi3HYOQc8YUn/dQT/79EnLMGs1ww6+z4uXzPIHTQGpritjSbd4kwVhC60M8xz2Fgc56ad9GBD3QQ4zGYFjvX/UpzlSnovlNLzBDNvbnUHZw4WgpXQEntRfbTKirM4rhft750xBB8zrOysxsY1UdzJBQkHUkzO09iv7sdnZI2n96aYV/IXZucn/k1vnjHGOIg35+ghGgY7Ht3ef6GXUvFYMu7zbmhLtFykys9ljuaItMDbX6mY1135zuJDFTok5Nm/L6NRkgF9F0CtQsIJiGitvRk8AnVN22FK8826Y/ZMIPHzOkmXQGTu1/1QfwA+iCBL7HocKZxWpogww6DJiTLcsjmf2ovlmio/3SBk2Xi1Wwahqv15gcEPqGM4ddGBrSZJ4tkdtMkep7fyvHxvdGwf9waOaYIbQKlWxeyhDNO3lY66pI+727YnblmvQfAqg/PSTVn4ZOvtNcgy9WebUgrsosamTqLfQ1FbX5cKBBrQrnE+rrcjuniIUrwhEvhGotskSDi4eElb9hYUAg==
X-Forefront-Antispam-Report:
	CIP:4.158.2.129;CTRY:GB;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:outbound-uk1.az.dlp.m.darktrace.com;PTR:InfoDomainNonexistent;CAT:NONE;SFS:(13230040)(1800799024)(376014)(36860700016)(82310400026)(35042699022)(14060799003)(22082099003)(18002099003)(56012099003);DIR:OUT;SFP:1101;
X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1
X-MS-Exchange-AntiSpam-MessageData-0:
	sZBXPxiqNsT8L9uweKNwQRSgiqqS0ZrlBC33LqlKNGpBr92Tr3AU45jxe+MWiE7P53vrZY/pgIJUavo0NC8/VJj81NOpN69HIG7B10M2IFp0v1cGcgzhN6kmHnq78fhXz1/Q10vvfNhPB+RC2f/N2iALyZZyOzFUIWpUALDoWUD0+7YcKH0gZhr147OM220mn7Sw7YY2YORegux3a0VeCXposFaV8WkKODIBM8/aiDnhUi4za6Ue250Vc4chg8AeMytZolyTD0JTNgVQ+yMs69K1oRdTc5TWhT7H/3kHdHZgrEtEmZ2XyhKjk9gVIE5WH+KGD4sNULn8ya0uYClG2pTQzGSuv/e0Nn9bIS4OY+9Lo9wOQH0J3rlLqihaeESlHA/vfe2H6GK48vMsN68Lb/vz9dvPbFLReG0Bd1q3fxJp8LAXwmHJpNsD3ocg5FL4
X-OriginatorOrg: arm.com
X-MS-Exchange-CrossTenant-OriginalArrivalTime: 23 Apr 2026 08:17:02.6895
 (UTC)
X-MS-Exchange-CrossTenant-Network-Message-Id: 7397d6f9-e126-4846-7552-08dea110b2ff
X-MS-Exchange-CrossTenant-Id: f34e5979-57d9-4aaa-ad4d-b122a662184d
X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=f34e5979-57d9-4aaa-ad4d-b122a662184d;Ip=[4.158.2.129];Helo=[outbound-uk1.az.dlp.m.darktrace.com]
X-MS-Exchange-CrossTenant-AuthSource:
	AMS0EPF00000198.eurprd05.prod.outlook.com
X-MS-Exchange-CrossTenant-AuthAs: Anonymous
X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem
X-MS-Exchange-Transport-CrossTenantHeadersStamped: DU0PR08MB8495
X-purgate-ID: tlsNG-4011c0/1776932233-465748B7-478EDB42/0/0
X-purgate-type: clean
X-purgate-size: 12030

SGkgSmVucywNCg0KPiBPbiAyMiBBcHIgMjAyNiwgYXQgMTY6MDQsIEplbnMgV2lrbGFuZGVyIDxq
ZW5zLndpa2xhbmRlckBsaW5hcm8ub3JnPiB3cm90ZToNCj4gDQo+IEhpIEJlcnRyYW5kLA0KPiAN
Cj4gT24gRnJpLCBBcHIgMTcsIDIwMjYgYXQgMzo0MeKAr1BNIEJlcnRyYW5kIE1hcnF1aXMNCj4g
PGJlcnRyYW5kLm1hcnF1aXNAYXJtLmNvbT4gd3JvdGU6DQo+PiANCj4+IFZNIG5vdGlmaWNhdGlv
biBiaW5kaW5nIGFuZCBwZW5kaW5nIHRyYWNraW5nIGV4aXN0IGZvciBub24tc2VjdXJlDQo+PiBl
bmRwb2ludHMsIGJ1dCBGRkFfTk9USUZJQ0FUSU9OX1NFVCBzdGlsbCBvbmx5IGZvcndhcmRzIHNl
Y3VyZQ0KPj4gZGVzdGluYXRpb25zIHRvIHRoZSBTUE1DLiBOb24tc2VjdXJlIFZNcyB0aGVyZWZv
cmUgY2Fubm90IHJlY2VpdmUNCj4+IG5vdGlmaWNhdGlvbnMgZnJvbSBvdGhlciBWTXMuIExvY2Fs
IE5QSSBkZWxpdmVyeSBhbHNvIG5lZWRzIGV4cGxpY2l0DQo+PiByZS1hcm0gdHJhY2tpbmcgc28g
cmVwZWF0ZWQgcmFpc2VzIGFyZSBub3QgbG9zdCB3aGlsZSB0aGUgaW50ZXJydXB0IGlzDQo+PiBh
bHJlYWR5IHBlbmRpbmcuDQo+PiANCj4+IEFkZCBhIGxvY2FsIFZNIG5vdGlmaWNhdGlvbiBkZWxp
dmVyeSBwYXRoIGZvciBub24tc2VjdXJlIGRlc3RpbmF0aW9ucy4NCj4+IG5vdGlmaWNhdGlvbl9z
ZXRfdm0oKSByZXNvbHZlcyB0aGUgZGVzdGluYXRpb24gZW5kcG9pbnQsIHZlcmlmaWVzIHRoYXQN
Cj4+IGV2ZXJ5IHJlcXVlc3RlZCBiaXQgaXMgYm91bmQgdG8gdGhlIHNlbmRlciwgc2V0cyB0aGUg
cmVjZWl2ZXIncw0KPj4gdm1fcGVuZGluZyBiaXRtYXAgdW5kZXIgbm90aWZfbG9jaywgYW5kIHJh
aXNlcyBhbiBOUEkgb25seSB3aGVuIHRoZQ0KPj4gcmVjZWl2ZXIgdHJhbnNpdGlvbnMgZnJvbSBu
byBsb2NhbCBwZW5kaW5nIG5vdGlmaWNhdGlvbnMgdG8gc29tZS4NCj4+IA0KPj4gVHJhY2sgd2hl
dGhlciBhIGxvY2FsIE5QSSBpcyBhbHJlYWR5IGFybWVkIHdpdGggbm90aWZfaXJxX3JhaXNlZCwg
Y2xlYXINCj4+IHRoYXQgc3RhdGUgb25jZSBib3RoIFZNIGFuZCBoeXBlcnZpc29yIHBlbmRpbmcg
Yml0bWFwcyBhcmUgZHJhaW5lZCwgYW5kDQo+PiByb2xsIGJhY2sgbmV3bHktYWRkZWQgVk0gcGVu
ZGluZyBiaXRzIGlmIG5vIGRlc3RpbmF0aW9uIHZDUFUgaXMgb25saW5lLg0KPj4gQWxzbyBleHBv
c2UgZmlybXdhcmUgbm90aWZpY2F0aW9uIGF2YWlsYWJpbGl0eSBzbyBGRkFfRkVBVFVSRVMgb25s
eQ0KPj4gYWR2ZXJ0aXNlcyBub3RpZmljYXRpb24gc3VwcG9ydCB3aGVuIGl0IGlzIGFjdHVhbGx5
IHByb3ZpZGVkIGJ5IHRoZQ0KPj4gZmlybXdhcmUgb3IgYnkgQ09ORklHX0ZGQV9WTV9UT19WTS4N
Cj4+IA0KPj4gRnVuY3Rpb25hbCBpbXBhY3Q6IHdoZW4gQ09ORklHX0ZGQV9WTV9UT19WTSBpcyBl
bmFibGVkLCBub24tc2VjdXJlDQo+PiBGRkFfTk9USUZJQ0FUSU9OX1NFVCBkZWxpdmVycyBWTS10
by1WTSBub3RpZmljYXRpb25zIGxvY2FsbHkgYW5kIGtlZXBzDQo+PiBOUEkgZGVsaXZlcnkgcmVs
aWFibGUgYWNyb3NzIHJlcGVhdGVkIHJhaXNlcy4NCj4+IA0KPj4gU2lnbmVkLW9mZi1ieTogQmVy
dHJhbmQgTWFycXVpcyA8YmVydHJhbmQubWFycXVpc0Bhcm0uY29tPg0KPj4gLS0tDQo+PiB4ZW4v
YXJjaC9hcm0vdGVlL2ZmYS5jICAgICAgICAgfCAgMjQgKysrKystLQ0KPj4geGVuL2FyY2gvYXJt
L3RlZS9mZmFfbm90aWYuYyAgIHwgMTI2ICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKyst
LQ0KPj4geGVuL2FyY2gvYXJtL3RlZS9mZmFfcHJpdmF0ZS5oIHwgIDExICsrLQ0KPj4gMyBmaWxl
cyBjaGFuZ2VkLCAxNDcgaW5zZXJ0aW9ucygrKSwgMTQgZGVsZXRpb25zKC0pDQo+PiANCj4+IGRp
ZmYgLS1naXQgYS94ZW4vYXJjaC9hcm0vdGVlL2ZmYS5jIGIveGVuL2FyY2gvYXJtL3RlZS9mZmEu
Yw0KPj4gaW5kZXggMWZlMzNmMjY0NTRhLi43ZmUwMjEwNDljYmEgMTAwNjQ0DQo+PiAtLS0gYS94
ZW4vYXJjaC9hcm0vdGVlL2ZmYS5jDQo+PiArKysgYi94ZW4vYXJjaC9hcm0vdGVlL2ZmYS5jDQo+
PiBAQCAtMzksOCArMzksMTMgQEANCj4+ICAqIG8gRkZBX01TR19TRU5EX0RJUkVDVF9SRVE6DQo+
PiAgKiAgIC0gb25seSBzdXBwb3J0ZWQgZnJvbSBhIFZNIHRvIGFuIFNQDQo+PiAgKiBvIEZGQV9O
T1RJRklDQVRJT05fKjoNCj4+ICsgKiAgIC0gb25seSBzdXBwb3J0ZWQgd2hlbiBmaXJtd2FyZSBu
b3RpZmljYXRpb25zIGFyZSBlbmFibGVkIG9yIFZNLXRvLVZNDQo+PiArICogICAgIHN1cHBvcnQg
aXMgYnVpbHQgaW4NCj4+ICAqICAgLSBvbmx5IHN1cHBvcnRzIGdsb2JhbCBub3RpZmljYXRpb25z
LCB0aGF0IGlzLCBwZXIgdkNQVSBub3RpZmljYXRpb25zDQo+PiAtICogICAgIGFyZSBub3Qgc3Vw
cG9ydGVkDQo+PiArICogICAgIGFyZSBub3Qgc3VwcG9ydGVkIGFuZCBzZWN1cmUgcGVyLXZDUFUg
bm90aWZpY2F0aW9uIGluZm9ybWF0aW9uIGlzDQo+PiArICogICAgIG5vdCBmb3J3YXJkZWQNCj4+
ICsgKiAgIC0gdGhlIHNvdXJjZSBlbmRwb2ludCBJRCByZXBvcnRlZCBmb3IgYSBub3RpZmljYXRp
b24gbWF5IG5vIGxvbmdlcg0KPj4gKyAqICAgICBleGlzdCBieSB0aGUgdGltZSB0aGUgcmVjZWl2
ZXIgY29uc3VtZXMgaXQNCj4+ICAqICAgLSBkb2Vzbid0IHN1cHBvcnQgc2lnbmFsbGluZyB0aGUg
c2Vjb25kYXJ5IHNjaGVkdWxlciBvZiBwZW5kaW5nDQo+PiAgKiAgICAgbm90aWZpY2F0aW9uIGZv
ciBzZWN1cmUgcGFydGl0aW9ucw0KPj4gICogICAtIGRvZXNuJ3Qgc3VwcG9ydCBub3RpZmljYXRp
b25zIGZvciBYZW4gaXRzZWxmDQo+PiBAQCAtMjQ1LDYgKzI1MCw4IEBAIHN0YXRpYyB2b2lkIGhh
bmRsZV9mZWF0dXJlcyhzdHJ1Y3QgY3B1X3VzZXJfcmVncyAqcmVncykNCj4+ICAgICB1aW50MzJf
dCBhMSA9IGdldF91c2VyX3JlZyhyZWdzLCAxKTsNCj4+ICAgICBzdHJ1Y3QgZG9tYWluICpkID0g
Y3VycmVudC0+ZG9tYWluOw0KPj4gICAgIHN0cnVjdCBmZmFfY3R4ICpjdHggPSBkLT5hcmNoLnRl
ZTsNCj4+ICsgICAgYm9vbCBub3RpZl9zdXBwb3J0ZWQgPSBJU19FTkFCTEVEKENPTkZJR19GRkFf
Vk1fVE9fVk0pIHx8DQo+PiArICAgICAgICAgICAgICAgICAgICAgICAgICAgZmZhX25vdGlmX2Z3
X2VuYWJsZWQoKTsNCj4+IA0KPj4gICAgIC8qDQo+PiAgICAgICogRkZBX0ZFQVRVUkVTIGRlZmlu
ZXMgdzIgYXMgaW5wdXQgcHJvcGVydGllcyBvbmx5IGZvciBzcGVjaWZpYw0KPj4gQEAgLTM0Mywx
MCArMzUwLDE2IEBAIHN0YXRpYyB2b2lkIGhhbmRsZV9mZWF0dXJlcyhzdHJ1Y3QgY3B1X3VzZXJf
cmVncyAqcmVncykNCj4+IA0KPj4gICAgICAgICBicmVhazsNCj4+ICAgICBjYXNlIEZGQV9GRUFU
VVJFX05PVElGX1BFTkRfSU5UUjoNCj4+IC0gICAgICAgIGZmYV9zZXRfcmVnc19zdWNjZXNzKHJl
Z3MsIEdVRVNUX0ZGQV9OT1RJRl9QRU5EX0lOVFJfSUQsIDApOw0KPj4gKyAgICAgICAgaWYgKCBu
b3RpZl9zdXBwb3J0ZWQgKQ0KPj4gKyAgICAgICAgICAgIGZmYV9zZXRfcmVnc19zdWNjZXNzKHJl
Z3MsIEdVRVNUX0ZGQV9OT1RJRl9QRU5EX0lOVFJfSUQsIDApOw0KPj4gKyAgICAgICAgZWxzZQ0K
Pj4gKyAgICAgICAgICAgIGZmYV9zZXRfcmVnc19lcnJvcihyZWdzLCBGRkFfUkVUX05PVF9TVVBQ
T1JURUQpOw0KPj4gICAgICAgICBicmVhazsNCj4+ICAgICBjYXNlIEZGQV9GRUFUVVJFX1NDSEVE
VUxFX1JFQ1ZfSU5UUjoNCj4+IC0gICAgICAgIGZmYV9zZXRfcmVnc19zdWNjZXNzKHJlZ3MsIEdV
RVNUX0ZGQV9TQ0hFRFVMRV9SRUNWX0lOVFJfSUQsIDApOw0KPj4gKyAgICAgICAgaWYgKCBub3Rp
Zl9zdXBwb3J0ZWQgKQ0KPj4gKyAgICAgICAgICAgIGZmYV9zZXRfcmVnc19zdWNjZXNzKHJlZ3Ms
IEdVRVNUX0ZGQV9TQ0hFRFVMRV9SRUNWX0lOVFJfSUQsIDApOw0KPj4gKyAgICAgICAgZWxzZQ0K
Pj4gKyAgICAgICAgICAgIGZmYV9zZXRfcmVnc19lcnJvcihyZWdzLCBGRkFfUkVUX05PVF9TVVBQ
T1JURUQpOw0KPj4gICAgICAgICBicmVhazsNCj4+ICAgICBjYXNlIEZGQV9QQVJUSVRJT05fSU5G
T19HRVRfUkVHUzoNCj4+ICAgICAgICAgaWYgKCBBQ0NFU1NfT05DRShjdHgtPmd1ZXN0X3ZlcnMp
ID49IEZGQV9WRVJTSU9OXzFfMiApDQo+PiBAQCAtMzYxLDcgKzM3NCwxMCBAQCBzdGF0aWMgdm9p
ZCBoYW5kbGVfZmVhdHVyZXMoc3RydWN0IGNwdV91c2VyX3JlZ3MgKnJlZ3MpDQo+PiAgICAgY2Fz
ZSBGRkFfTk9USUZJQ0FUSU9OX1NFVDoNCj4+ICAgICBjYXNlIEZGQV9OT1RJRklDQVRJT05fSU5G
T19HRVRfMzI6DQo+PiAgICAgY2FzZSBGRkFfTk9USUZJQ0FUSU9OX0lORk9fR0VUXzY0Og0KPj4g
LSAgICAgICAgZmZhX3NldF9yZWdzX3N1Y2Nlc3MocmVncywgMCwgMCk7DQo+PiArICAgICAgICBp
ZiAoIG5vdGlmX3N1cHBvcnRlZCApDQo+PiArICAgICAgICAgICAgZmZhX3NldF9yZWdzX3N1Y2Nl
c3MocmVncywgMCwgMCk7DQo+PiArICAgICAgICBlbHNlDQo+PiArICAgICAgICAgICAgZmZhX3Nl
dF9yZWdzX2Vycm9yKHJlZ3MsIEZGQV9SRVRfTk9UX1NVUFBPUlRFRCk7DQo+PiAgICAgICAgIGJy
ZWFrOw0KPj4gICAgIGRlZmF1bHQ6DQo+PiAgICAgICAgIGZmYV9zZXRfcmVnc19lcnJvcihyZWdz
LCBGRkFfUkVUX05PVF9TVVBQT1JURUQpOw0KPj4gZGlmZiAtLWdpdCBhL3hlbi9hcmNoL2FybS90
ZWUvZmZhX25vdGlmLmMgYi94ZW4vYXJjaC9hcm0vdGVlL2ZmYV9ub3RpZi5jDQo+PiBpbmRleCA0
ZGVmNzAxZjAxMzAuLmU3NzMyMTI0NDkyNiAxMDA2NDQNCj4+IC0tLSBhL3hlbi9hcmNoL2FybS90
ZWUvZmZhX25vdGlmLmMNCj4+ICsrKyBiL3hlbi9hcmNoL2FybS90ZWUvZmZhX25vdGlmLmMNCj4+
IEBAIC0yMCw3ICsyMCwxMiBAQCBzdGF0aWMgYm9vbCBfX3JvX2FmdGVyX2luaXQgZndfbm90aWZf
ZW5hYmxlZDsNCj4+IHN0YXRpYyB1bnNpZ25lZCBpbnQgX19yb19hZnRlcl9pbml0IG5vdGlmX3Ny
aV9pcnE7DQo+PiBzdGF0aWMgREVGSU5FX1NQSU5MT0NLKG5vdGlmX2luZm9fbG9jayk7DQo+PiAN
Cj4+IC1zdGF0aWMgdm9pZCBpbmplY3Rfbm90aWZfcGVuZGluZyhzdHJ1Y3QgZG9tYWluICpkKQ0K
Pj4gK2Jvb2wgZmZhX25vdGlmX2Z3X2VuYWJsZWQodm9pZCkNCj4+ICt7DQo+PiArICAgIHJldHVy
biBmd19ub3RpZl9lbmFibGVkOw0KPj4gK30NCj4+ICsNCj4+ICtzdGF0aWMgYm9vbCBpbmplY3Rf
bm90aWZfcGVuZGluZyhzdHJ1Y3QgZG9tYWluICpkKQ0KPj4gew0KPj4gICAgIHN0cnVjdCB2Y3B1
ICp2Ow0KPj4gDQo+PiBAQCAtMzQsMTMgKzM5LDE1IEBAIHN0YXRpYyB2b2lkIGluamVjdF9ub3Rp
Zl9wZW5kaW5nKHN0cnVjdCBkb21haW4gKmQpDQo+PiAgICAgICAgIGlmICggaXNfdmNwdV9vbmxp
bmUodikgKQ0KPj4gICAgICAgICB7DQo+PiAgICAgICAgICAgICB2Z2ljX2luamVjdF9pcnEoZCwg
diwgR1VFU1RfRkZBX05PVElGX1BFTkRfSU5UUl9JRCwgdHJ1ZSk7DQo+PiAtICAgICAgICAgICAg
cmV0dXJuOw0KPj4gKyAgICAgICAgICAgIHJldHVybiB0cnVlOw0KPj4gICAgICAgICB9DQo+PiAg
ICAgfQ0KPj4gDQo+PiAgICAgaWYgKCBwcmludGtfcmF0ZWxpbWl0KCkgKQ0KPj4gICAgICAgICBw
cmludGsoWEVOTE9HX0dfREVCVUcgIiVwZDogZmZhOiBjYW4ndCBpbmplY3QgTlBJLCBhbGwgdkNQ
VXMgb2ZmbGluZVxuIiwNCj4+ICAgICAgICAgICAgICAgIGQpOw0KPj4gKw0KPj4gKyAgICByZXR1
cm4gZmFsc2U7DQo+PiB9DQo+PiANCj4+IHN0YXRpYyBpbnQzMl90IGZmYV9ub3RpZl9wYXJzZV9w
YXJhbXModWludDE2X3QgZG9tX2lkLCB1aW50MTZfdCBjYWxsZXJfaWQsDQo+PiBAQCAtMTA0LDYg
KzExMSw3MyBAQCBvdXRfdW5sb2NrOg0KPj4gICAgIHJldHVybiByZXQ7DQo+PiB9DQo+PiANCj4+
ICsvKg0KPj4gKyAqIERlbGl2ZXIgYSBWTS10by1WTSBub3RpZmljYXRpb24uIGN0eC0+bm90aWYu
bm90aWZfbG9jayBwcm90ZWN0cw0KPj4gKyAqIHZtX2JpbmQvdm1fcGVuZGluZyBzbyBjYWxsZXJz
IG11c3Qgbm90IGhvbGQgaXQgYWxyZWFkeS4NCj4+ICsgKi8NCj4+ICtzdGF0aWMgaW50MzJfdCBu
b3RpZmljYXRpb25fc2V0X3ZtKHVpbnQxNl90IGRzdF9pZCwgdWludDE2X3Qgc3JjX2lkLA0KPj4g
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdWludDMyX3QgZmxhZ3MsIHVpbnQ2
NF90IGJpdG1hcCkNCj4+ICt7DQo+PiArICAgIHN0cnVjdCBkb21haW4gKmRzdF9kOw0KPj4gKyAg
ICBzdHJ1Y3QgZmZhX2N0eCAqZHN0X2N0eDsNCj4+ICsgICAgdW5zaWduZWQgaW50IGlkOw0KPj4g
KyAgICBpbnQzMl90IHJldDsNCj4+ICsgICAgdWludDY0X3QgcHJldl9iaXRtYXAgPSAwOw0KPj4g
KyAgICB1aW50NjRfdCBuZXdfYml0bWFwOw0KPj4gKyAgICBib29sIGluamVjdCA9IGZhbHNlOw0K
Pj4gKw0KPj4gKyAgICBpZiAoIGZsYWdzICkNCj4+ICsgICAgICAgIHJldHVybiBGRkFfUkVUX0lO
VkFMSURfUEFSQU1FVEVSUzsNCj4+ICsNCj4+ICsgICAgcmV0ID0gZmZhX2VuZHBvaW50X2RvbWFp
bl9sb29rdXAoZHN0X2lkLCAmZHN0X2QsICZkc3RfY3R4KTsNCj4+ICsgICAgaWYgKCByZXQgKQ0K
Pj4gKyAgICAgICAgcmV0dXJuIHJldDsNCj4+ICsNCj4+ICsgICAgcmV0ID0gRkZBX1JFVF9PSzsN
Cj4+ICsNCj4+ICsgICAgc3Bpbl9sb2NrKCZkc3RfY3R4LT5ub3RpZi5ub3RpZl9sb2NrKTsNCj4+
ICsNCj4+ICsgICAgZm9yICggaWQgPSAwOyBpZCA8IEZGQV9OVU1fVk1fTk9USUY7IGlkKysgKQ0K
Pj4gKyAgICB7DQo+PiArICAgICAgICBpZiAoICEoYml0bWFwICYgQklUKGlkLCBVTEwpKSApDQo+
PiArICAgICAgICAgICAgY29udGludWU7DQo+PiArDQo+PiArICAgICAgICBpZiAoIGRzdF9jdHgt
Pm5vdGlmLnZtX2JpbmRbaWRdICE9IHNyY19pZCApDQo+PiArICAgICAgICB7DQo+PiArICAgICAg
ICAgICAgcmV0ID0gRkZBX1JFVF9ERU5JRUQ7DQo+PiArICAgICAgICAgICAgZ290byBvdXRfdW5s
b2NrOw0KPj4gKyAgICAgICAgfQ0KPj4gKyAgICB9DQo+PiArDQo+PiArICAgIHByZXZfYml0bWFw
ID0gZHN0X2N0eC0+bm90aWYudm1fcGVuZGluZzsNCj4+ICsgICAgZHN0X2N0eC0+bm90aWYudm1f
cGVuZGluZyB8PSBiaXRtYXA7DQo+PiArICAgIGlmICggIWRzdF9jdHgtPm5vdGlmLm5vdGlmX2ly
cV9yYWlzZWQgJiYNCj4+ICsgICAgICAgICAoZHN0X2N0eC0+bm90aWYudm1fcGVuZGluZyB8fCBk
c3RfY3R4LT5ub3RpZi5oeXBfcGVuZGluZykgKQ0KPj4gKyAgICB7DQo+PiArICAgICAgICBkc3Rf
Y3R4LT5ub3RpZi5ub3RpZl9pcnFfcmFpc2VkID0gdHJ1ZTsNCj4+ICsgICAgICAgIGluamVjdCA9
IHRydWU7DQo+PiArICAgIH0NCj4+ICsNCj4+ICtvdXRfdW5sb2NrOg0KPj4gKyAgICBzcGluX3Vu
bG9jaygmZHN0X2N0eC0+bm90aWYubm90aWZfbG9jayk7DQo+PiArDQo+PiArICAgIG5ld19iaXRt
YXAgPSBiaXRtYXAgJiB+cHJldl9iaXRtYXA7DQo+PiArICAgIGlmICggcmV0ID09IEZGQV9SRVRf
T0sgJiYgaW5qZWN0ICYmIG5ld19iaXRtYXAgJiYNCj4+ICsgICAgICAgICAhaW5qZWN0X25vdGlm
X3BlbmRpbmcoZHN0X2QpICkNCj4+ICsgICAgew0KPj4gKyAgICAgICAgc3Bpbl9sb2NrKCZkc3Rf
Y3R4LT5ub3RpZi5ub3RpZl9sb2NrKTsNCj4+ICsgICAgICAgIGRzdF9jdHgtPm5vdGlmLnZtX3Bl
bmRpbmcgJj0gfm5ld19iaXRtYXA7DQo+IA0KPiBUaGVyZSdzIGEgd2luZG93IGFib3ZlIHdoZW4g
ZHN0X2N0eC0+bm90aWYubm90aWZfbG9jayBpcyB1bmxvY2tlZC4NCj4gV2hhdCBpZiBhbm90aGVy
IENQVSBoYXMgbW9kaWZpZWQgZHN0X2N0eC0+bm90aWYudm1fcGVuZGluZyBkdXJpbmcgdGhhdA0K
PiB3aW5kb3c/DQoNCllvdSBhcmUgcmlnaHQsIHRoZXJlIGlzIGEgcmFjZSBpbiB0aGF0IHdpbmRv
dy4gVGhhbmtzIGZvciB0aGUgZmluZGluZyA6LSkNCg0KSSB0aGluayB0aGUgc2ltcGxlc3QgZml4
IGlzIHRvIGtlZXAgbm90aWZfbG9jayBoZWxkIGFjcm9zcyB0aGUgaW5qZWN0aW9uDQphdHRlbXB0
LCBzbyB3ZSBkbyBub3QgZXhwb3NlIHBhcnRpYWxseSB1cGRhdGVkIG5vdGlmaWNhdGlvbiBzdGF0
ZSB3aGlsZSB0aGUNCmludGVycnVwdCBkZWxpdmVyeSBpcyBzdGlsbCBpbiBwcm9ncmVzcy4NCg0K
SSBkbyBub3QgdGhpbmsgd2Ugc2hvdWxkIHJvbGwgdGhlIHBlbmRpbmcgYml0cyBiYWNrIG9uIGlu
amVjdGlvbiBmYWlsdXJlLA0KdGhvdWdoLiBJbiBwcmFjdGljZSB0aGUgY2FzZXMgd2hlcmUgd2Ug
ZmFpbCB0byBpbmplY3QgYXJlIGNhc2VzIHdoZXJlIHRoZQ0KdGFyZ2V0IGNhbm5vdCBjdXJyZW50
bHkgdGFrZSB0aGUgbm90aWZpY2F0aW9uIGFueXdheSwgYW5kIGRyb3BwaW5nIHRoZQ0KcGVuZGlu
ZyBzdGF0ZSB3b3VsZCBiZSB3b3JzZSB0aGFuIGtlZXBpbmcgaXQgcGVuZGluZyBhbmQgbm90IG1h
cmtpbmcgdGhlIElSUQ0KYXMgcmFpc2VkLg0KDQpTbyBteSBwbGFuIHdvdWxkIGJlIHRvIGtlZXAg
dGhlIHBlbmRpbmcgc3RhdGUsIG9ubHkgbWFyayBub3RpZl9pcnFfcmFpc2VkDQp3aGVuIHdlIGFj
dHVhbGx5IGluamVjdCwgYW5kIGtlZXAgdGhlIGV4aXN0aW5nIGRlYnVnIHByaW50IGZvciB0aGUg
Y2FzZXMgd2UNCmNhbiBkZXRlY3QuDQoNCklmIHRoYXQgYXBwcm9hY2ggbG9va3MgT0sgdG8geW91
LCBJIHdpbGwgdXBkYXRlIHRoaXMgcGF0Y2ggYWNjb3JkaW5nbHkuDQoNClRoZSBzYW1lIGlzc3Vl
IGV4aXN0cyBpbiBwYXRjaCAyIGZvciB0aGUgUlgtYnVmZmVyLWZ1bGwgcGF0aCwgc28gSSB3aWxs
IGZpeA0KaXQgdGhlcmUgYXMgd2VsbCBmb3IgdGhlIHNhbWUgcmVhc29uLg0KDQpDaGVlcnMNCkJl
cnRyYW5kDQoNCg==


From xen-devel-bounces@lists.xenproject.org Thu Apr 23 08:27:02 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 23 Apr 2026 08:27:02 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1291767.1570600 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wFpOj-0004Rh-SN; Thu, 23 Apr 2026 08:26:57 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1291767.1570600; Thu, 23 Apr 2026 08:26: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 1wFpOj-0004Ra-Oq; Thu, 23 Apr 2026 08:26:57 +0000
Received: by outflank-mailman (input) for mailman id 1291767;
 Thu, 23 Apr 2026 08:26:56 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <Oleksii_Moisieiev@epam.com>) id 1wFpOi-0004RU-27
 for xen-devel@lists.xenproject.org; Thu, 23 Apr 2026 08:26:56 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wFpOf-000IOu-TG
 for xen-devel@lists.xenproject.org; Thu, 23 Apr 2026 10:26:55 +0200
Received: from [10.42.69.1] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <Oleksii_Moisieiev@epam.com>)
 id 69e9d7c3-e002-0a2a0a5209dd-0a2a4501909e-36
 for <xen-devel@lists.xenproject.org>; Thu, 23 Apr 2026 10:26:55 +0200
Received: from [52.101.84.84]
 (helo=DB3PR0202CU003.outbound.protection.outlook.com)
 by tlsNG-d62444.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.1)
 (envelope-from <Oleksii_Moisieiev@epam.com>)
 id 69e9d7ce-c1f2-0a2a45010019-346554544f92-3
 for <xen-devel@lists.xenproject.org>; Thu, 23 Apr 2026 10:26:55 +0200
Received: from DU5PR03MB10263.eurprd03.prod.outlook.com (2603:10a6:10:519::5)
 by VI1PR0301MB6640.eurprd03.prod.outlook.com (2603:10a6:800:192::19)
 with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9846.21; Thu, 23 Apr
 2026 08:26:51 +0000
Received: from DU5PR03MB10263.eurprd03.prod.outlook.com
 ([fe80::8c9e:b301:61c0:3908]) by DU5PR03MB10263.eurprd03.prod.outlook.com
 ([fe80::8c9e:b301:61c0:3908%5]) with mapi id 15.20.9846.021; Thu, 23 Apr 2026
 08:26: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=uAS3rkNxhnQu0q+oqxpqfJGIZe1EotiiWb+V4n88QLmNOtRd6aNvgbjqSP56iVK0t1WRBNp/MTO9HBmky/5jei8l/5cGtvZDVjH89iTXOlHS0T7YlGdIccOSUSAVqycJG0MDivjKJAnn1UizIEIWsW8PLnKHkZY6PTWg24oN7TgaStGifPMpE3zP8jbulWpSIBGK0vkdOFL7AJxX3l5DZ1qdIgCarbyJTl36RuqI6RkfKFFCJQcIOx7bjjzOhNExrVBjc6Z33IDktG6vxLDI9VjlBg6cwTS1LH4bZAYrKOwPtkAj6hGEUGQrTuF5cZ9GJM0KtFm5iU7AVWcvD984Mg==
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com;
 s=arcselector10001;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1;
 bh=avfNGRJegDCY911DjaNTuGaKuo9exjiT/NHVp4i7TgQ=;
 b=Yxo4UfOJkLhQGc9wLcKrKJ3NASqLGCg71WLjC8CGk7WOlyG74jdtzSRe+IOG9hxkge4FD9+0cxsYAlqEVd6cuo+NAV2sSnBaoRBYgBCxN/GDREL1TzdsCDpC0cdFBGcyCr1E+MCQXPBoQqdhWQKKqfvNE8hAluewr+wvB73lwA5zdMMBDSU068Da+NHx97NXIESZv+o4aBLEYlsGZlnOGlrdAKV190LVJtko91y3rPEAelgR9cw0RLjOJBvEhvPt86ql0yKW6t1TSZy+eL2rJcVPbiY+fFTZuJ9IxpNt7/maPSIOkeHvQfpdR+9QclC90S+aAjBuQymYZAKCXKJtRw==
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=avfNGRJegDCY911DjaNTuGaKuo9exjiT/NHVp4i7TgQ=;
 b=bC0EoQcJqctXtipwUEphcOcI1dce4g4K4XLzRz3GfE3vseNZyScmWXMl8e8/I/2EMvleS9SXC2FYtRFEtrg3I5+kwtdNyVXjeoZjLihSt+EAwDdVnmiXUErGJyFPIBDu8H0iCiUtJE1XL2o7etC+eqNiTTvJ1/+c46pNiyvMnYUhcswRGrettjPglSKLpS605GZBfAHiqLFbV3U5/weizrjaaZy5vr/q2cMa+QlQmRkSWLNJURL6+XSmn6cF9E/6D5cILdCq+PZScBWQIpDvj7HpNJRdW5k8iJ5sNb6hk1UIZgWmKL9xPRBQPsm9ulXyWbpWwKB+Hgf4BBQXa7LAhQ==
Authentication-Results: dkim=none (message not signed)
 header.d=none;dmarc=none action=none header.from=epam.com;
Message-ID: <f305fefc-a703-44fc-95f7-44de2b98baf7@epam.com>
Date: Thu, 23 Apr 2026 11:26:49 +0300
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH v3 4/4] xen/drivers/char: fix exynos4210 IRQ registration
 failure propagation
To: "Orzel, Michal" <michal.orzel@amd.com>,
 "xen-devel@lists.xenproject.org" <xen-devel@lists.xenproject.org>,
 Oleksandr_Tyshchenko@epam.com
Cc: Bertrand Marquis <bertrand.marquis@arm.com>, Julien Grall
 <julien@xen.org>, Stefano Stabellini <sstabellini@kernel.org>,
 Volodymyr Babchuk <Volodymyr_Babchuk@epam.com>
References: <cover.1776850201.git.oleksii_moisieiev@epam.com>
 <e15f6ef27470724fd987f0c5d248315abb1d2c55.1776850201.git.oleksii_moisieiev@epam.com>
 <eb609076-bd0d-4a62-a259-fbe0e4b19a26@amd.com>
Content-Language: en-US
From: Oleksii Moisieiev <oleksii_moisieiev@epam.com>
In-Reply-To: <eb609076-bd0d-4a62-a259-fbe0e4b19a26@amd.com>
Content-Type: text/plain; charset=UTF-8; format=flowed
Content-Transfer-Encoding: 7bit
X-ClientProxiedBy: WA0P291CA0023.POLP291.PROD.OUTLOOK.COM
 (2603:10a6:1d0:1::10) To DU5PR03MB10263.eurprd03.prod.outlook.com
 (2603:10a6:10:519::5)
MIME-Version: 1.0
X-MS-PublicTrafficType: Email
X-MS-TrafficTypeDiagnostic: DU5PR03MB10263:EE_|VI1PR0301MB6640:EE_
X-MS-Office365-Filtering-Correlation-Id: 24b6265c-69c0-47f4-354d-08dea1121193
X-MS-Exchange-SenderADCheck: 1
X-MS-Exchange-AntiSpam-Relay: 0
X-Microsoft-Antispam:
	BCL:0;ARA:13230040|376014|366016|1800799024|18002099003|56012099003|22082099003;
X-Microsoft-Antispam-Message-Info:
	67ps3YLvgePyTe2KtrchDo1yHO9SLMnhurf91Me/Yv/XO2tjW3wMNfFkByURFbf/efb/ChI9jKFP5UPnw0DokStfuEj2gRoC5b/7v9Fehp4y3tXgg9xYvD9B2hjo8M5YLAYOFxkxy0tw2EC5LutDfJbdGV6bp1Q06UBEa8V6TTnfgkfVWn5mkkxfMWfRa4l/uSVnl/W4kL5eyNo1rirVyI1gEAyzz3fqg3Eht4/pvF70Xxj6wU097JXhBddgnNjO64/T1F87Rm9LRFXdb10xLaqMVa0ShXOdySrjK3Rvwm+B1/MPcMv2WOx5fXEaAYUiBzrlm7FVavzI03we3HVuMFA+MX42OoAfaxdxDJN0Ed1XO9+Y+CFKRmyOBTPuzbUjtPXqc/7/HTE9eoBXwLcFdVM9DQpTOMsb8V/KssYVaPHXtd26eXMNHy4jwoVk7TbDdFMt+pHMXtj7S9B/9p52O+gfVksgpsst5z7wFXBIDo41ksbMIVPT5SHjJI9LSEeg7K1TZH2WdlN4fg/RCWE+rygL2xLVthUmhgo8SaQ2+J1Nuc/NxOz6GAQMa6zf3pVOmHHDSGagBOO2J2KP3Ofa1fOaSAD3Bz1Hrh/dCre6k6jWA2+k+J1zVZAbZ59vDR7UwqseyFM2aU5k+KNonBIJoG02c8gsczFrXxzJsxSvYbt19oS8g/S2yYZv3V4gS/Zsaq5FkGOPgHO9T19qMpvPFC35RT0I6HCoFZNbpwzWEAw=
X-Forefront-Antispam-Report:
	CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:DU5PR03MB10263.eurprd03.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(376014)(366016)(1800799024)(18002099003)(56012099003)(22082099003);DIR:OUT;SFP:1102;
X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1
X-MS-Exchange-AntiSpam-MessageData-0:
	=?utf-8?B?V1JhNmNsMWRUK2NTajdpMHdrcCs5Z0c4Q0E1N1RleEtxbnFYK1YvRnJHV2dy?=
 =?utf-8?B?Z0c2djZ3RGxJejRIUnhiaUdzaE1oeFdDZkhVZUYxTytHbmh2U3ZtOUg2V2o3?=
 =?utf-8?B?WnBUMzdZclp2b2NZaTdUajhYTWEvbjJzcUh1b0dWa2JRYVNnbG1PWkVseHVW?=
 =?utf-8?B?ZG9UWXZzNXI2UGR1c2k4ejdsS3dFNzlrS0d0RVNDOUM4OFhsbktiUUxidExJ?=
 =?utf-8?B?ckJLMkZ0Q1J6aUI0UlN4eHhISFZhVWs0WUlYbys2Z2ExSnp3cVcvUjJwYXJD?=
 =?utf-8?B?TVBtMHRvd1JQTjlHVVRva0FwL09NSGFmdUw3TDRnZEJTZ0RlT0hrZlA1bjQ5?=
 =?utf-8?B?Y2kyT2g0VTFvbFQyNnUyakQvMjhDYW5qUDFVb2VHRFQrN05PUlRyVExJRktr?=
 =?utf-8?B?NUxLTW13V2R4Z0ZtVFhiUUdVVG0xKzh0MVMvb2hzY0c3VWNCVVd4ZnI2K3kv?=
 =?utf-8?B?MndEd1J2UzdxT2RpTkIwaHNOczVrc21SRVU5RXI2Z3diVHdJV1g4QnRpU1RX?=
 =?utf-8?B?bFhvNVozVmZ0WTJQazJ0RER2NHVmN0dyVXZQYm56Z2MwM1BXQllZYWl3L0Vz?=
 =?utf-8?B?bGhTU1A2dmxHS09VUGVuNUR1cjkrbmtXUHVjMzNvZWxtVE5JQXpJVG5BTFYr?=
 =?utf-8?B?VzJMYm1ERi9hNC9GeXhCbWVYcUVNN2VocGhGMmNwaFdXY05YZDJTMXh5WEdk?=
 =?utf-8?B?cUtTVWUxN0JWM1JLRmhjNXZGOUlXTDl0ZFNmNFBWRlYvZXkzc0hlb1ZNODA5?=
 =?utf-8?B?NzRybXBucEJwWi84ejlBdGxmbTRJTXJzakJ5eDV1WXdOZEZPaWVuUlc5TzJ1?=
 =?utf-8?B?cjJrUnNVNmJMTlk5a01RY0JSeGFhTUV2b0oxV2dpYnBtYlQyU1BPZzVuZzRh?=
 =?utf-8?B?UENhUXdRNlRrM281a0Z1MXorWUF5S2JqT3JUU2xSUnZsdERWM2kwR0ZoSC9N?=
 =?utf-8?B?TTNHVHpQZE1kZkJLRm9wSVVZQlJmTzgxclhTa21ZUmxNeEZWY1dYUFl5ZDBq?=
 =?utf-8?B?RVNFN0d6dVFySnV3QkJSYkRTRmY0U2t0ZlNkK0JncGhmTmd2NlgwdzI5MEx4?=
 =?utf-8?B?THRIcWxhQWR6aXBqYjNlbUhQa0ZPTUxOWldSeXp5OWxPYURhbXE4bnpvRGRr?=
 =?utf-8?B?MTNFRXErbjAwaTdkeHBkUjhDanNzYXZOZ2V3cGRtQlhFVC9oWjdQdTVsM0FS?=
 =?utf-8?B?RFJlK3h6WHBRSElVUCtwSlVObGNDakNpcncvczlPTkNWVkdDZmxXdi9ERmlV?=
 =?utf-8?B?QzB6bmNHajdVUUo5T2FqN01yajRrbnkwMFdVTk4veC9POXRLbWRWZjYwQWdH?=
 =?utf-8?B?RklSQkM3dVJ0dlBmQTkrdUpTRWxLSzlQY1hpVVFUaWZHMXJxVWQrNENQbzNS?=
 =?utf-8?B?ZElJRWNoZy9DeEtkYVMwK3ZHeW1HQlJCVmN5dStBTEUwUDNoUmF6M28wNmkz?=
 =?utf-8?B?Y1ZtVHE1NjN5dERXV0NjWXdSU295OTAxYUJBMzRTL3JjcUpYQnVncVAvSnc1?=
 =?utf-8?B?ZXhVcm43K05kRU05RzYrY1lZNE10MXlTWGh3cTM1bGx5N3ZUYUxNN1J1b3Nj?=
 =?utf-8?B?LzJkbjVEb0R6TGdnSFR4MURoNHg4ZG5DNVVBRGZlaEVwY2pRdTV3VmdtUzZN?=
 =?utf-8?B?blRwNUVhUnNMZEJMRG9LU21YV1hqeE03N3hWYm5NNkVHcno4TUJveVJGNkpF?=
 =?utf-8?B?VWpDTW1md0tUSFRxekVqc0MrZXJJVW5WMXFraXNRYXdwT3hFbkVDQTh0ck5Y?=
 =?utf-8?B?cjdhMUI3ZVVGV2FTWXNXUUVvc21NcThvUnNTNnhQZXQyQ2luQjVGaVBsbGl6?=
 =?utf-8?B?UkJNOG5qc1BnZGR2cGhScEgreWN6Ujc2YjNtWHowRWlGalRrM2xIUDl3UU03?=
 =?utf-8?B?VHRCb0xqdHdGZnU2RmtwZ3EveGVsUVJDdkZ4MGJDNnhaYWxTOElyUnQyOE1j?=
 =?utf-8?B?OTF5a2RiSmRGRlYzRmU2S2NrTWtkQ25OSGxYRytCSU1vejdPcnJuR1dNSjND?=
 =?utf-8?B?TFF4dURUeHI1WHVNY2poV3VjYndDanRHL1dsWjdJQUVPQ3BEaUpiWVdPams4?=
 =?utf-8?B?NUpqVVNMaE9HM0N3WEc1RGRWZ0RaQjU4OVhjcmhqcUE4YlhiOVZ5cmZjcGRN?=
 =?utf-8?B?ZTNOVXd6K0ZvTDFUMGNmUEJ2MXh0YVh3ZWNGUXpldnRpeVd5OHlIdGhtQTJZ?=
 =?utf-8?B?WG5oUzd1TmkzYUNQdVV6UmNBaVFRVG9USXcvN0E1TTd6RnlHS1UzM05FL1Z2?=
 =?utf-8?B?ZytCbTVnMTRydHBGZ3RZdnFxRHpmT0NoaityOEQ0b1BnVXk5SUJWd3BuaC9j?=
 =?utf-8?B?YXJvNFFvczJEc3JVVHEwR212RE5HWklDWC9aaE5neGl1aElSajBtc00vbEJo?=
 =?utf-8?Q?wBZi83mZDA+0dyzk=3D?=
X-OriginatorOrg: epam.com
X-MS-Exchange-CrossTenant-Network-Message-Id: 24b6265c-69c0-47f4-354d-08dea1121193
X-MS-Exchange-CrossTenant-AuthSource: DU5PR03MB10263.eurprd03.prod.outlook.com
X-MS-Exchange-CrossTenant-AuthAs: Internal
X-MS-Exchange-CrossTenant-OriginalArrivalTime: 23 Apr 2026 08:26:51.0917
 (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: iLfu0s85nvQAqVp+5ayElY2bq8DKH/GujakxgVPnpdB+RnpBCYxUshJlHyAM/bqRIWBHMyAKgoDdROXoDTZcLC9o6yf70avccGR1XfABRbA=
X-MS-Exchange-Transport-CrossTenantHeadersStamped: VI1PR0301MB6640
X-purgate-ID: tlsNG-d62444/1776932815-BD468FF4-53531E52/0/0
X-purgate-type: clean
X-purgate-size: 2235

Hi Michal, Oleksandr

Thank you for the fast review. Well, I don't know why the commit differs 
:). I haven't copied it, just wrote from scratch.

I see that overall it looks good. I can post v4 with nits fixed from you 
and Oleksandr, or they will be fixed on commit.

Which way is more convenient for you?

--

Oleksii.

On 22/04/2026 14:33, Orzel, Michal wrote:
>
> On 22/04/2026 11:33, Oleksii Moisieiev wrote:
>> In exynos4210_uart_init_postirq(), when setup_irq() returns an error
>> the failure was only logged via dprintk() and execution continued,
>> unconditionally clearing UINTM and setting UMCON_INT_EN. This enabled
>> receive and transmit interrupt lines with no handler registered. On
>> platforms where the GIC receives these asserted lines, the result is
>> either repeated spurious-interrupt warnings or an unhandled interrupt
>> fault.
>>
>> Add an early return in the setup_irq() error branch so that the
>> interrupt-enable writes to UINTM and UMCON are skipped when IRQ
>> registration fails.
>>
>> Signed-off-by: Oleksii Moisieiev <oleksii_moisieiev@epam.com>
>> ---
>>
>> Changes in v3:
>> - skip clearing pending interrupts if setup_irq was failed because
>> according to the 13.4.1.13 of the RM: it must be cleared after
>> cleaning interrupt pending in INTC.
>>
>>   xen/drivers/char/exynos4210-uart.c | 4 ++++
>>   1 file changed, 4 insertions(+)
>>
>> diff --git a/xen/drivers/char/exynos4210-uart.c b/xen/drivers/char/exynos4210-uart.c
>> index 58901df554..2e5860ea2b 100644
>> --- a/xen/drivers/char/exynos4210-uart.c
>> +++ b/xen/drivers/char/exynos4210-uart.c
>> @@ -199,8 +199,12 @@ static void __init exynos4210_uart_init_postirq(struct serial_port *port)
>>       uart->irqaction.dev_id  = port;
>>   
>>       if ( (rc = setup_irq(uart->irq, 0, &uart->irqaction)) != 0 )
>> +    {
>>           dprintk(XENLOG_ERR, "Failed to allocated exynos4210_uart IRQ %d\n",
>>                   uart->irq);
>> +        /* Don't enable interrupts if irq setup was failed */
> NIT: Not sure why this comment differs from one patch to another. Preferably
> they should all be the same.
>
> Reviewed-by: Michal Orzel <michal.orzel@amd.com>
>
> ~Michal
>


From xen-devel-bounces@lists.xenproject.org Thu Apr 23 08:30:00 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 23 Apr 2026 08:30:00 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1291779.1570610 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wFpRe-0005m4-BK; Thu, 23 Apr 2026 08:29:58 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1291779.1570610; Thu, 23 Apr 2026 08:29: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 1wFpRe-0005lw-6Z; Thu, 23 Apr 2026 08:29:58 +0000
Received: by outflank-mailman (input) for mailman id 1291779;
 Thu, 23 Apr 2026 08:29:56 +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 1wFpRb-0005lq-Uc
 for xen-devel@lists.xenproject.org; Thu, 23 Apr 2026 08:29:56 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wFpRZ-000JBz-GR
 for xen-devel@lists.xenproject.org; Thu, 23 Apr 2026 10:29:55 +0200
Received: from [10.42.69.12] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <Michal.Orzel@amd.com>)
 id 69e9d879-5cb7-0a2a0a5109dd-0a2a450cddcc-42
 for <xen-devel@lists.xenproject.org>; Thu, 23 Apr 2026 10:29:54 +0200
Received: from [52.101.201.37]
 (helo=PH7PR06CU001.outbound.protection.outlook.com)
 by tlsNG-d25034.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.1)
 (envelope-from <Michal.Orzel@amd.com>)
 id 69e9d87c-62f1-0a2a450c0019-3465c9253969-3
 for <xen-devel@lists.xenproject.org>; Thu, 23 Apr 2026 10:29:51 +0200
Received: from PH8PR07CA0031.namprd07.prod.outlook.com (2603:10b6:510:2cf::11)
 by CH3PR12MB9148.namprd12.prod.outlook.com (2603:10b6:610:19d::12)
 with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9846.16; Thu, 23 Apr
 2026 08:29:44 +0000
Received: from MW1PEPF00016159.namprd21.prod.outlook.com
 (2603:10b6:510:2cf:cafe::fc) by PH8PR07CA0031.outlook.office365.com
 (2603:10b6:510:2cf::11) with Microsoft SMTP Server (version=TLS1_3,
 cipher=TLS_AES_256_GCM_SHA384) id 15.20.9846.21 via Frontend Transport; Thu,
 23 Apr 2026 08:29:43 +0000
Received: from satlexmb08.amd.com (165.204.55.251) by
 MW1PEPF00016159.mail.protection.outlook.com (10.167.249.84) with Microsoft
 SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id
 15.20.9870.4 via Frontend Transport; Thu, 23 Apr 2026 08:29: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.17; Thu, 23 Apr
 2026 03:29:41 -0500
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.17; Thu, 23 Apr
 2026 03:29:41 -0500
Received: from [10.252.147.171] (10.180.168.240) by satlexmb07.amd.com
 (10.181.42.216) with Microsoft SMTP Server id 15.2.2562.17 via Frontend
 Transport; Thu, 23 Apr 2026 03:29:40 -0500
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@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=KsLKJdUOfm0yV8jDj9k87YVkKQqY/OI/Y+5+P6ManSaj4rxTtr9PuvUXirHkrf4S3TXT3mh3yk6ZhVLBcUiYzCXi/Q+lLRuiEdbN6Z+we3j2ia7CgxtSWA2t0y2ICTNGJA7f58zgqZavMOyRyrLzu+tF34ksJkISkbigRWmPSYFhYD6ekdJtwvJZoAIB8fwOuCYMvHFS1KiLiZnl+Us4wg3YUE1nuJumdKe2NKwXEycHBKimyWqo5rRCIfY1ae6WcNHixfxGxS2Ve3ad6lx7lNMzUVsFY6ZHtbn+6dGVGsBIr3qzz5cgGb5/Fi4jiQ/Tj6hFRFfX/nvuo/xEJojrVw==
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com;
 s=arcselector10001;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1;
 bh=kxdQcPxLPDlp1pyCmDltS2zTW8V4jJD+1uFfXjOK/x0=;
 b=fTIccJ8THDsd4hggClfKtSNooran/4Uiyps07O98JeSHRzOSjo9h5WG2sf70CQcUzpMzUIgAARpM0I/Pp+B5oncyl/DibMfy7s6pW48gzMTc9qZW4hzOZZ3xh7tj9EBt1miJGxzEgbIPUrQpPXCDrgKOJ6ggVS2kKYTdE9/h0BZu+ZE5p9ePJTr6+3fFWg/E2H0eldpOF4bmM4uLyFCTrE/kuiF7aUA2IabqseFug8wU6cD9bnYepLQlvsdgglq9hw0+dQZcLOWauXmPgHCNuHOsK/bEtMN75EkIT9uKi8kKmwoL3cGsIiRnEkqw3vS4iszW/20N4+bHuyLEcOh5aQ==
ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=softfail (sender ip
 is 165.204.55.251) smtp.rcpttodomain=epam.com smtp.mailfrom=amd.com;
 dmarc=fail (p=quarantine sp=quarantine pct=100) action=quarantine
 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=kxdQcPxLPDlp1pyCmDltS2zTW8V4jJD+1uFfXjOK/x0=;
 b=JkhnDwM23Ckw/uD3S0lVmxSY2lMJB60gqS7/w2KR9241W1DcGegU2BCUPbjJI9Tr92RqGNry4yCnNMm4IrNcUy5Cl5txh8lHVyslBXkSY3dqIPKEE7ECUfYAGea4okfPc5TNSxATxPTa9RqdnYRX0NkEjGzDjFEqQHTMc9WKl2I=
X-MS-Exchange-Authentication-Results: spf=softfail (sender IP is
 165.204.55.251) smtp.mailfrom=amd.com; dkim=none (message not signed)
 header.d=none;dmarc=fail action=quarantine header.from=amd.com;
Received-SPF: SoftFail (protection.outlook.com: domain of transitioning
 amd.com discourages use of 165.204.55.251 as permitted sender)
Message-ID: <e7453f42-6aaf-44b7-8408-6622c448c989@amd.com>
Date: Thu, 23 Apr 2026 10:29:39 +0200
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH v3 4/4] xen/drivers/char: fix exynos4210 IRQ registration
 failure propagation
To: Oleksii Moisieiev <oleksii_moisieiev@epam.com>,
	"xen-devel@lists.xenproject.org" <xen-devel@lists.xenproject.org>,
	<Oleksandr_Tyshchenko@epam.com>
CC: Bertrand Marquis <bertrand.marquis@arm.com>, Julien Grall
	<julien@xen.org>, Stefano Stabellini <sstabellini@kernel.org>, "Volodymyr
 Babchuk" <Volodymyr_Babchuk@epam.com>
References: <cover.1776850201.git.oleksii_moisieiev@epam.com>
 <e15f6ef27470724fd987f0c5d248315abb1d2c55.1776850201.git.oleksii_moisieiev@epam.com>
 <eb609076-bd0d-4a62-a259-fbe0e4b19a26@amd.com>
 <f305fefc-a703-44fc-95f7-44de2b98baf7@epam.com>
From: "Orzel, Michal" <michal.orzel@amd.com>
Content-Language: en-US
In-Reply-To: <f305fefc-a703-44fc-95f7-44de2b98baf7@epam.com>
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: 7bit
X-EOPAttributedMessage: 0
X-MS-PublicTrafficType: Email
X-MS-TrafficTypeDiagnostic: MW1PEPF00016159:EE_|CH3PR12MB9148:EE_
X-MS-Office365-Filtering-Correlation-Id: 97c11ee4-a3c1-4e21-12af-08dea112784e
X-MS-Exchange-SenderADCheck: 1
X-MS-Exchange-AntiSpam-Relay: 0
X-Microsoft-Antispam:
	BCL:0;ARA:13230040|82310400026|1800799024|36860700016|376014|56012099003|18002099003|22082099003;
X-Microsoft-Antispam-Message-Info:
	4LzQF+k+i/6Cl+p0xulsyasLXLfIHSUQQSpSOm9hSvxWdmMw8XHlu8NQoHoa1hAV+Co6UQFNCxTYaUJnumBpt1GwyveiQi/qsYVRpfTFOaCDG8Yb7PMoXyocQwz5StGwDukyYKS9+BRkDUK1L4/mrFW8k18UDopvd3nbqdspdzX2erBtqHrUwsmqZ/aqWIOWaM9opZmgmSZ7z4Ne20gY0ikIU0dUcyKwMLqMvS8fgo8Om3uIYxeyY4Y7vlbzc5AZ4ucpuMkr6b4+JIBbLGd4Y/bulsamHGfHs2CNpGdLSkgoDrosNU01zLFzdxg4yqZuzUibUxQoLBojVGRVZWY7MydgrmxE8KoxVlSs+M70/IQ2FGo6RzrBstwpmzMQN14zHk077ChoO/lOdKFdGFHErWzHFX/xqMpc2yUrM6vDfn6KjSqVjM1yF0TNhFRPJMhX1oo6ly62pFT/0ccn0lwmuGHZI8K2fkYWMuxkxTFood6F5pxMwe1UeAePe6BpVG61IJOPhkrhl3PfEEr7Nng7FgrtYLZfOPn836WC9ClyjidKc1MB77pzjHawlqYFoteX41l8BXystNAT3LCVzLAj5NOxYkFr9qWNad9jNrUug4444kjwOL12Dea9Il+rTGC7bkXLbIVkXiDFN6NYWj/yQ6zg6iD9C9WAjlXfeYJWgLTkIxFlZb4nkd/+cPZ9rrMRG9iEtyrA/idVYkycVjxtKgZZoytGllyYXmWIoP78vccSjMTRLHi6sfCCWXRjnN1P9PNlH4YUGnSoKKJ9CGW49Q==
X-Forefront-Antispam-Report:
	CIP:165.204.55.251;CTRY:CA;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:satlexmb08.amd.com;PTR:InfoDomainNonexistent;CAT:NONE;SFS:(13230040)(82310400026)(1800799024)(36860700016)(376014)(56012099003)(18002099003)(22082099003);DIR:OUT;SFP:1101;
X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1
X-MS-Exchange-AntiSpam-MessageData-0:
	6NshDjRGfDoaWzKP7uQgYXe2obu0y9Wun+FD+BmMWkvjVl4ScqG8AIoTku5V+3OWmeUwb/DssP4AVPh8l/xL/swys2d1SEEItEXFBiIdi7+MIe1On/1ZNPu7GO/mqhbRMVtrex5hcyUPEAiw4F7jCr6TxB1vQhCbcjAC01GJ/SrOLPCQLQCuvil1PbnGoQXkswnBHObd92ozL/zOJegd2alyszNNU2MlR55XKVVlLWwBtB5yQpskf4D6qXY9f5D0JHikl6VlJTlASHx4spmRmwMpXZ6WUEEep8wTz+3IRsQ8rGfeHkO3oideCfwyJr/xhs0bc/ofswq5fZRpjyeI+LOGzdHFGWSZBUOv3qpNuv0S7xsJhNmkZ9w89j4dVrQ6zIUIV1tfE7H8a1jBWMe3gLu/QyqdGPxubRYMv3aeJ4Yk1BHj9pm+4iRxGKVnqci8
X-OriginatorOrg: amd.com
X-MS-Exchange-CrossTenant-OriginalArrivalTime: 23 Apr 2026 08:29:43.0570
 (UTC)
X-MS-Exchange-CrossTenant-Network-Message-Id: 97c11ee4-a3c1-4e21-12af-08dea112784e
X-MS-Exchange-CrossTenant-Id: 3dd8961f-e488-4e60-8e11-a82d994e183d
X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=3dd8961f-e488-4e60-8e11-a82d994e183d;Ip=[165.204.55.251];Helo=[satlexmb08.amd.com]
X-MS-Exchange-CrossTenant-AuthSource:
	MW1PEPF00016159.namprd21.prod.outlook.com
X-MS-Exchange-CrossTenant-AuthAs: Anonymous
X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem
X-MS-Exchange-Transport-CrossTenantHeadersStamped: CH3PR12MB9148
X-purgate-ID: tlsNG-d25034/1776932992-F5E0ECF5-733113F7/0/0
X-purgate-type: clean
X-purgate-size: 437



On 23/04/2026 10:26, Oleksii Moisieiev wrote:
> Hi Michal, Oleksandr
> 
> Thank you for the fast review. Well, I don't know why the commit differs 
> :). I haven't copied it, just wrote from scratch.
> 
> I see that overall it looks good. I can post v4 with nits fixed from you 
> and Oleksandr, or they will be fixed on commit.
> 
> Which way is more convenient for you?
Please send a respin with tags kept.

~Michal



From xen-devel-bounces@lists.xenproject.org Thu Apr 23 09:06:57 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 23 Apr 2026 09:06:57 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1291811.1570618 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wFq1K-0004oH-Vg; Thu, 23 Apr 2026 09:06:50 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1291811.1570618; Thu, 23 Apr 2026 09:06: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 1wFq1K-0004oA-SJ; Thu, 23 Apr 2026 09:06:50 +0000
Received: by outflank-mailman (input) for mailman id 1291811;
 Thu, 23 Apr 2026 09:06:50 +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.19db99780f2000f373@swg.vates.tech>)
 id 1wFq1K-0004o4-BD
 for xen-devel@lists.xenproject.org; Thu, 23 Apr 2026 09:06:50 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wFq1J-006Fvy-OM
 for xen-devel@lists.xenproject.org; Thu, 23 Apr 2026 11:06:49 +0200
Received: from [10.42.69.7] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1) (envelope-from
 <prod-mta-13.8631fc262581453bbf619ec5b2062170.19db99780f2000f373@swg.vates.tech>)
 id 69e9e123-e002-0a2a0a5209dd-0a2a4507d61e-18
 for <xen-devel@lists.xenproject.org>; Thu, 23 Apr 2026 11:06:49 +0200
Received: from [185.255.28.34] (helo=prod-mta-13.swg-srv.net)
 by tlsNG-ef75cf.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.1)
 (envelope-from
 <prod-mta-13.8631fc262581453bbf619ec5b2062170.19db99780f2000f373@swg.vates.tech>)
 id 69e9e129-229c-0a2a45070019-b9ff1c22a1a9-3
 for <xen-devel@lists.xenproject.org>; Thu, 23 Apr 2026 11:06:49 +0200
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
 19db99780f2000f373.003 for <xen-devel@lists.xenproject.org>
 (version=TLSv1.3 cipher=TLS_AES_256_GCM_SHA384);
 Thu, 23 Apr 2026 09:06:47 +0000
Received: from [192.168.1.18] (88-175-170-134.subs.proxad.net [88.175.170.134])
 (Authenticated sender: teddy.astie)
 by mail2.vates.fr (Postfix) with ESMTPSA id 9BA8F8751B;
 Thu, 23 Apr 2026 11:06:46 +0200 (CEST)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@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=go9+WX/P6oqYtEySQytKG8V8SBsCctPOIK9GQzP43hU=;
 h=from:subject:date:message-id:to:cc:mime-version:content-type:in-reply-to:references:feedback-id;
 b=e7Eh3i5a5Vd2t6iXmZLTZlrnoFEmBNCL0TJaHpzZGRe9QHqKzc0nlR4Zpc8QtI2JuoVN+QQEc
 cfclA/dZXhk3+4cyk38/f2uRWuPnSB+RmpDjy5xGTM3ZSrNaCJoVqm3oFFbJidYHEpWEeH7Xj9I
 XGEYZsoEfNC4NPnJig7zhCJ6oubiiANKTXF5fs1ziclAvfwsMQpn+cfs+bsQ7oQpll8hNseTlFo
 lPwXAHQVoIop1gwBfBsYXXyvQjU6GkvoKPfLEWMiBapumv/tNLWBQaqe/GL5T6N7HHZ7OuINjYd
 FYD0tFaC7QtopeHXrRLN235BjaV8FhZOqQ0/1P4ew/tQ==
X-Zone-Loop: 2fa8092623fdedff30b0dab6bdbda7c872af21492609
x-campaign-type: default
x-transaction-id: 88636dab-3b3e-4762-bfa6-1782a7694db7
x-swg-uid: 01-421f5041-9174-4bec-b48c-7ada9737acc7
X-Mailer: Sweego
Message-ID:
 <1776935207.8631fc262581453bbf619ec5b2062170.19db99780f2000f373@vates.tech>
x-swg-bid: 1776935207.8631fc262581453bbf619ec5b2062170.19db99780f2000f373
Feedback-ID: default:8631fc262581453bbf619ec5b2062170:Sweego
x-campaign-id: default
x-client-id: 8631fc262581453bbf619ec5b2062170
X-Originating-IP: [37.26.189.201]
Date: Thu, 23 Apr 2026 11:06:46 +0200
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: How to express "externally managed" IOMMU domains for
 VFIO/IOMMUFD ?
To: "Tian, Kevin" <kevin.tian@intel.com>,
 "iommu@lists.linux.dev" <iommu@lists.linux.dev>,
 "linux-kernel@vger.kernel.org" <linux-kernel@vger.kernel.org>
Cc: Xen-devel <xen-devel@lists.xenproject.org>
References: <1776873531.8631fc262581453bbf619ec5b2062170.19db5ea67ab000f373@vates.tech>
 <BN9PR11MB5276B3A829AD624A7E1AB4408C2A2@BN9PR11MB5276.namprd11.prod.outlook.com>
Content-Language: en-US
From: Teddy Astie <teddy.astie@vates.tech>
In-Reply-To: <BN9PR11MB5276B3A829AD624A7E1AB4408C2A2@BN9PR11MB5276.namprd11.prod.outlook.com>
X-BM-Disclaimer: Yes
Content-Type: multipart/alternative; boundary="-=Part.268f.f9401862dbe5e1bb.19db9977f45.39413018467b706c=-"
X-Bm-Milter-Handled: 4ffbd6c1-ee69-4e1b-aabd-f977039bd3e2
X-Bm-Transport-Timestamp: 1776935206726
X-purgate-ID: tlsNG-ef75cf/1776935209-AC961C48-18066BAD/0/0
X-purgate-type: clean
X-purgate-size: 3219

---=Part.268f.f9401862dbe5e1bb.19db9977f45.39413018467b706c=-
Content-Type: text/plain; charset=utf-8
Content-Transfer-Encoding: quoted-printable

Hello and thanks for your response=2E

Le 23/04/2026 =C3=A0 10:05, Tian, Kevin a =C3=A9crit=C2=A0:
>> From: Teddy Astie
>> Sent: Wednesday, April 22, 2026 11:59 PM
>>
>> Hello,
>>
>> On Xen, for PV-IOMMU [1], we have IOMMU support in Dom0, which in
>> particular allows using VFIO and IOMMUFD from Dom0=2E
>>
>> However, its interactions with PCI Passthrough are unclear, and it woul=
d
>=20
> VFIO manages PCI passthrough=2E since it's already allowed which part of
> interaction is unclear?
>=20

AIUI, VFIO has no real knowledge of what is a "virtual machine" (at=20
least not in a way that would suffice for us), hence don't really PCI=20
Passthrough on its own=2E

For instance, the DMA remapping aspect of QEMU's PCI Passthrough is=20
implemented by keeping the VFIO DMA mappings in sync with "guest=20
memory", however, we can't really do that in our case as we don't have=20
full control and view of guest memory=2E

>> be preferable to let the kernel handle some of this logic=2E That would
>> for instance avoid situations where toolstack causes Xen and Linux to g=
o
>> out of sync on where devices belong=2E
>=20
> what is 'some of this logic' and what is the exact out-of-sync scenario?
>=20

In the sense of letting the kernel handle the PCI Passthrough lifecycle=2E

For now, the userland ("toolstack") is performing passthrough-related=20
operations on behalf of the kernel, i=2Ee move a device into the guest=2E=
=20
That causes a problem where the Linux IOMMU subsystem thinks the device=20
is in a specific IOMMU domain, while it's actually not=2E
That causes in particular Linux IOMMU logic to misbehave, and the device=
=20
to eventually DMA in the wrong places=2E

The idea isn't really to "fix" this specific case, but more to provide a=
=20
alternative where the kernel orchestrate PCI Passthrough instead=2E So the=
=20
logic would be now orchestrated in one place instead=2E

>>
>> On Xen, we have a dedicated hypercalls for moving a device into another
>> guest (so it no longer belongs in Dom0, at far as DMA is concerned)=2E
>>
>> But it looks like there are no way to describe that idea of "attach tha=
t
>> device to this VM" nor "the device is in a VM"; which makes that
>> impracticable=2E
>>
>> There may be things that could be done with the vIOMMU objects, but
>> there would be no "parent domain" in such case, as said earlier it
>> doesn't exist in the IOMMU subsystem=2E
>>
>> What is expected to be done instead ?
>>
>> Teddy
>>
>> [1] https://www=2Eyoutube=2Ecom/watch?v=3DpLMGRgEJ-Eg
>>
>=20
> It'd be much easier to collect comments if you can put plain words
> to explain the problem rather than expecting other folks to watch
> the video first=2E=2E=2E

The video is more to additional context, it's not really directly=20
related to this issue=2E

Teddy


-- 
Teddy Astie | Vates XCP-ng Developer

XCP-ng & Xen Orchestra - Vates s=
olutions

web: https://vates=2Etech
---=Part.268f.f9401862dbe5e1bb.19db9977f45.39413018467b706c=---


From xen-devel-bounces@lists.xenproject.org Thu Apr 23 09:49:44 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 23 Apr 2026 09:49:44 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1291844.1570627 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wFqgb-0005ZZ-3v; Thu, 23 Apr 2026 09:49:29 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1291844.1570627; Thu, 23 Apr 2026 09:49: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 1wFqgb-0005ZS-0R; Thu, 23 Apr 2026 09:49:29 +0000
Received: by outflank-mailman (input) for mailman id 1291844;
 Thu, 23 Apr 2026 09:49:27 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <jens.wiklander@linaro.org>) id 1wFqgZ-0005ZM-IT
 for xen-devel@lists.xenproject.org; Thu, 23 Apr 2026 09:49:27 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wFqgY-00Agg1-Hf
 for xen-devel@lists.xenproject.org; Thu, 23 Apr 2026 11:49:26 +0200
Received: from [10.42.69.3] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <jens.wiklander@linaro.org>)
 id 69e9eb1f-2eae-0a2a0a5409dd-0a2a4503cf0a-10
 for <xen-devel@lists.xenproject.org>; Thu, 23 Apr 2026 11:49:26 +0200
Received: from [209.85.167.171] (helo=mail-oi1-f171.google.com)
 by tlsNG-33051d.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.1)
 (envelope-from <jens.wiklander@linaro.org>)
 id 69e9eb25-672d-0a2a45030019-d155a7abedd4-3
 for <xen-devel@lists.xenproject.org>; Thu, 23 Apr 2026 11:49:26 +0200
Received: by mail-oi1-f171.google.com with SMTP id
 5614622812f47-479eb8bcacbso1890027b6e.1
 for <xen-devel@lists.xenproject.org>; Thu, 23 Apr 2026 02:49:25 -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=google header.d=linaro.org header.i="@linaro.org" header.h="Content-Transfer-Encoding:Cc:To:Subject:Message-ID:Date:From:In-Reply-To:References:MIME-Version"
ARC-Seal: i=1; a=rsa-sha256; t=1776937764; cv=none;
        d=google.com; s=arc-20240605;
        b=cGSjVgrSBPHy9Hvw2GGSQhAcraIossj786ic1LVvuSquNOPW8AtrRpa2Z4W7/WCYJQ
         5ZqhfaSCroqvlvp7SSSH7W/efEVDn2ietP9oPQsKNQq4CygA4fsCwcbhcq5uGupGeXuK
         4/vpoKtujQkATg+IZrtDe4g3AjAo347sIM7qoKRfDUqiUBYNObCGTQDkVTooED+pJZJ3
         +6G7Wo9udHV8BqLGqDccSJMAA0BmmmbOn33y9et6s8BXN3etMOQBlRdrn1HmukrY1qfC
         2+J+m3fPSqthmbHhn7vF1vTP5qa1JScZjbxUpLndyR1dTHv7oFJO95bctnb722TY+Rr5
         wWwg==
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20240605;
        h=content-transfer-encoding:cc:to:subject:message-id:date:from
         :in-reply-to:references:mime-version:dkim-signature;
        bh=/fZNqAVn4bagQP5iTaHu/LfssAnCl/Ko4AXImy8Rc6I=;
        fh=wB0f5JGUSpWYejuxtnrl8SDqvqyWrEsEaWvC32LbdiU=;
        b=IssusD9Yc0GRoGl7x3oIGrXC012SVqrYaEObL1yWDfZiWWcj5E8fMuvm9FYq8RRtpg
         2cCnjD4T9eJlaNF4k7z0Ou/DRH6w6R4wcvX2qUdB295cthWFT3/ArrowuLC8hUY0F6Q2
         f2a+guyVNcLWwSMM7yxpSC1lWT6jUgmXukbHfKt7Mnig2uD2kOQqRsqNZJ/5qaTYNZ9r
         ezLnh1+hoZ7l93Rzd17nXSaCKhZbeXPeQKvNdyC0L1Cteu669pZvZ/C1af34Ew7ycnE3
         mBrd4/tD3dbmG4bKt4M3hF39H0btbnO3LnOSCTQAjYG48paKy2Oa3AO2weEJWVxmmWS8
         q2ZA==;
        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=linaro.org; s=google; t=1776937764; x=1777542564; darn=lists.xenproject.org;
        h=content-transfer-encoding:cc:to:subject:message-id:date:from
         :in-reply-to:references:mime-version:from:to:cc:subject:date
         :message-id:reply-to;
        bh=/fZNqAVn4bagQP5iTaHu/LfssAnCl/Ko4AXImy8Rc6I=;
        b=GnevYgRytvN8T9GE1TFHWFgIfK6RAAxnDZZrhCoyPZ7NNYzU9FkoRlh7+szhKk2wQM
         Rkc/2ihJbI8wU+DEE+00EkSNfl3nWvC+FTx8bYk3HHRhN24RdpBKk9j5Sq13oUWPdwKk
         JA2loUBfYlq9fAZ2vgmToRKsJLV9JJd6AWMml4EDHwCU7Imkb/KR74vEsA1hEcP+NDqT
         zo4HHcXsefwJ3N1HGGTZqb3TPlJP0spyj7DJkru3vqC8mRQnKtlbcxdSRqITEhfU8Zm/
         8f+NTv1QrVYL1j2178oSyoscDrhDV4MGr4Ni9ybQQFui5KA+CSR9Pmkt8Cnlv7J/t2Uq
         UOhw==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20251104; t=1776937764; x=1777542564;
        h=content-transfer-encoding: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;
        bh=/fZNqAVn4bagQP5iTaHu/LfssAnCl/Ko4AXImy8Rc6I=;
        b=aDKWGhOnOhUdfxhEbfNsI8mHsHJ3GzuXIPhba2gOMgWjSdNpK3FfyHNaYtxjIKPX40
         gtpabUsfVWnUJa/XOXg8F+CbeyiCBGf6mhK3WYHb+Q6+Ln1tv1aErGavb952z9n5KzXU
         sg5SrhhUPFbPoIq2OxckiYgBOQ1zbWZo/U5drEQaPtpA4pra4z9ijn+A9UHWXNy/tkk2
         w7W/ewwgWijVhxGQL4TJn2e6A277nTe478bdqo/cmAZfHZTsm2800P8iqToeOWGLpDLf
         GXk9nYXaBkUVKIO3D8I3AHeXqbYsgsmIfH7G86h3pXRno9JVtS/gDpfkjUrn094qwV8A
         W2/A==
X-Gm-Message-State: AOJu0YxIBpO6mRrMJVJTPwIexYcBfKdHnPGPuE+kdn1MPtq12reJsy2x
	57mS6MLY6P32TzWsWKmnfndGZicV6y0lMTII99yovioRQhVQ0CQh2onOi2QpsOlxJjcaveMmB2G
	jerVw5mE64U1fv0NtJseRt2oaRCuylc7SKk/ZoCfDOQ==
X-Gm-Gg: AeBDievobt1JwCCvP/6S9h6m/Paj0NB/5FIkP/Kh3A/ki4tj9JBgW8FXDf64PgofL2p
	tww9tUqU85q0T7AwcBNn8LgmL8DA3WgYYIMQ1BHz3WN8gsxh6jr3RdLO7xxLKrOMYbl2SgLILtD
	J/CY7ubBSK4J37gymFb7O9XcShLY469w/kqkMAdn7T4az8kdmLsM++rinzdBNhY9lhch2m+k5f9
	i4ZBUH65d0cQKiiTkyajycrHt9R8LUt5e32vFG/Pnhkl1+86R+jtBjVwSCQQc/ArMEei5b6yWUb
	P1H290QZfBFKqgPyCo/gKqPgK8SVXLgK28p/6Jcumirppn9m
X-Received: by 2002:a05:6820:6ae3:b0:694:a362:4b8f with SMTP id
 006d021491bc7-694a3624d01mr4031224eaf.6.1776937764518; Thu, 23 Apr 2026
 02:49:24 -0700 (PDT)
MIME-Version: 1.0
References: <cover.1776266307.git.bertrand.marquis@arm.com>
 <7053b8c14bbe50cc855dad0a82cde2bb10153d2b.1776266307.git.bertrand.marquis@arm.com>
 <CAHUa44HaFjLf9CcSJMDD5O-R24_Kq_7zabw2Op2X=P1gj+85Sw@mail.gmail.com> <6D745E55-2BBB-49CC-AE8D-D75E9704ED8D@arm.com>
In-Reply-To: <6D745E55-2BBB-49CC-AE8D-D75E9704ED8D@arm.com>
From: Jens Wiklander <jens.wiklander@linaro.org>
Date: Thu, 23 Apr 2026 11:49:11 +0200
X-Gm-Features: AQROBzDm2dIYwSRJuUDGevnOpJbu4Yy5WlH3ly2sG0PK-aUkmJjRxt1ggz8smZI
Message-ID: <CAHUa44HGhtnekDiC0GOb0+=gHkCOBwfBJWfwmBxF62ukWr8HDw@mail.gmail.com>
Subject: Re: [PATCH 2/6] xen/arm: ffa: Track hypervisor notifications in a bitmap
To: Bertrand Marquis <Bertrand.Marquis@arm.com>
Cc: "xen-devel@lists.xenproject.org" <xen-devel@lists.xenproject.org>, 
	Volodymyr Babchuk <volodymyr_babchuk@epam.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-33051d/1776937766-A3D6B938-3F5D9061/0/0
X-purgate-type: clean
X-purgate-size: 5467

Hi Bertrand,

On Thu, Apr 23, 2026 at 9:30=E2=80=AFAM Bertrand Marquis
<Bertrand.Marquis@arm.com> wrote:
>
> Hi Jens,
>
> Thanks a lot for the review.
>
> > On 22 Apr 2026, at 11:34, Jens Wiklander <jens.wiklander@linaro.org> wr=
ote:
> >
> > Hi Bertrand,
> >
> > On Fri, Apr 17, 2026 at 3:41=E2=80=AFPM Bertrand Marquis
> > <bertrand.marquis@arm.com> wrote:
> >>
> >> Hypervisor notifications are currently tracked with a dedicated
> >> buff_full_pending boolean. That state only represents a single HYP
> >> notification bit and keeps HYP bitmap handling tied to single-purpose
> >> bookkeeping.
> >>
> >> Replace the boolean with a hypervisor notification bitmap protected by
> >> notif_lock. INFO_GET reports pending when the bitmap is non-zero, GET
> >> returns and clears the HYP bitmap under the lock, and RX-buffer-full
> >> sets FFA_NOTIF_RX_BUFFER_FULL in the bitmap instead of updating
> >> separate state.
> >>
> >> Initialize and clear the bitmap during domain lifecycle handling, and
> >> use ctx->ffa_id for bitmap create and destroy so the notification stat=
e
> >> stays tied to the cached FF-A endpoint ID.
> >>
> >> No functional changes.
> >>
> >> Signed-off-by: Bertrand Marquis <bertrand.marquis@arm.com>
> >> ---
> >> xen/arch/arm/tee/ffa_notif.c   | 46 ++++++++++++++++++++++++++--------
> >> xen/arch/arm/tee/ffa_private.h |  9 +++++--
> >> 2 files changed, 43 insertions(+), 12 deletions(-)
> >>
> >> diff --git a/xen/arch/arm/tee/ffa_notif.c b/xen/arch/arm/tee/ffa_notif=
.c
> >> index 07bc5cb3a430..d15119409a25 100644
> >> --- a/xen/arch/arm/tee/ffa_notif.c
> >> +++ b/xen/arch/arm/tee/ffa_notif.c
> >> @@ -94,8 +94,15 @@ void ffa_handle_notification_info_get(struct cpu_us=
er_regs *regs)
> >>
> >>     notif_pending =3D test_and_clear_bool(ctx->notif.secure_pending);
> >>     if ( IS_ENABLED(CONFIG_FFA_VM_TO_VM) )
> >> +    {
> >>         notif_pending |=3D test_and_clear_bool(ctx->notif.vm_pending);
> >>
> >> +        spin_lock(&ctx->notif.notif_lock);
> >> +        if ( ctx->notif.hyp_pending )
> >> +            notif_pending =3D true;
> >> +        spin_unlock(&ctx->notif.notif_lock);
> >
> > Isn't this a functional change? Before this patch, we didn't consider
> > ctx->notif.buff_full_pending here. Am I missing something?
>
> We did consider it implicitly through vm_pending.
>
> This patch makes that cleaner by using hyp_pending for the Hypervisor
> framework notification itself. Previously, RX-buffer-full was made visibl=
e
> indirectly via vm_pending, and FFA_NOTIFICATION_INFO_GET
> cleared that summary state.
>
> As a result, the guest-visible pending indication could be lost before
> the Hypervisor notification was actually retrieved with
> FFA_NOTIFICATION_GET.
>
> With this change, the pending state is tracked in hyp_pending and is only
> cleared when the Hypervisor notifications are retrieved through
> FFA_NOTIFICATION_GET.
>
> I will reword the commit message to make that clearer.

Thanks

>
> >
> >> +    }
> >> +
> >>     if ( notif_pending )
> >>     {
> >>         /* A pending global notification for the guest */
> >> @@ -174,12 +181,17 @@ void ffa_handle_notification_get(struct cpu_user=
_regs *regs)
> >>             w6 =3D resp.a6;
> >>     }
> >>
> >> -    if ( IS_ENABLED(CONFIG_FFA_VM_TO_VM) &&
> >> -          flags & FFA_NOTIF_FLAG_BITMAP_HYP &&
> >> -          test_and_clear_bool(ctx->notif.buff_full_pending) )
> >> +    if ( IS_ENABLED(CONFIG_FFA_VM_TO_VM) )
> >>     {
> >> -        ACCESS_ONCE(ctx->notif.vm_pending) =3D false;
> >> -        w7 =3D FFA_NOTIF_RX_BUFFER_FULL;
> >> +        spin_lock(&ctx->notif.notif_lock);
> >> +
> >> +        if ( (flags & FFA_NOTIF_FLAG_BITMAP_HYP) && ctx->notif.hyp_pe=
nding )
> >> +        {
> >> +            w7 =3D ctx->notif.hyp_pending;
> >> +            ctx->notif.hyp_pending =3D 0;
> >> +        }
> >> +
> >> +        spin_unlock(&ctx->notif.notif_lock);
> >>     }
> >>
> >>     ffa_set_regs(regs, FFA_SUCCESS_32, 0, w2, w3, w4, w5, w6, w7);
> >> @@ -207,12 +219,17 @@ int32_t ffa_handle_notification_set(struct cpu_u=
ser_regs *regs)
> >> void ffa_raise_rx_buffer_full(struct domain *d)
> >> {
> >>     struct ffa_ctx *ctx =3D d->arch.tee;
> >> +    uint32_t prev_bitmap;
> >>
> >>     if ( !ctx )
> >>         return;
> >>
> >> -    ACCESS_ONCE(ctx->notif.buff_full_pending) =3D true;
> >> -    if ( !test_and_set_bool(ctx->notif.vm_pending) )
> >> +    spin_lock(&ctx->notif.notif_lock);
> >> +    prev_bitmap =3D ctx->notif.hyp_pending;
> >> +    ctx->notif.hyp_pending |=3D FFA_NOTIF_RX_BUFFER_FULL;
> >> +    spin_unlock(&ctx->notif.notif_lock);
> >> +
> >> +    if ( !(prev_bitmap & FFA_NOTIF_RX_BUFFER_FULL) )
> >
> > Do we need to check for FFA_NOTIF_RX_BUFFER_FULL? Isn't !prev_bitmap
> > more accurate, if any other bit would ever be used in the bitmap?
>
>   I would keep the bit-specific check here, if that is OK with you.
>
>  This function is about raising the RX buffer full notification,
>  so I think it is clearer to check whether that bit was newly
>  pended rather than whether the whole Hypervisor bitmap
>  was previously empty.
>
> Using !prev_bitmap would also make the condition depend on
> unrelated Hypervisor notifications being pending.
>
> Tell me if you are ok with that.

I see your point, it's fine.

Cheers,
Jens

>
> Cheers
> Bertrand
>


From xen-devel-bounces@lists.xenproject.org Thu Apr 23 10:12:31 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 23 Apr 2026 10:12:31 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1291871.1570636 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wFr2n-00037m-UV; Thu, 23 Apr 2026 10:12:25 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1291871.1570636; Thu, 23 Apr 2026 10: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 1wFr2n-00037f-RQ; Thu, 23 Apr 2026 10:12:25 +0000
Received: by outflank-mailman (input) for mailman id 1291871;
 Thu, 23 Apr 2026 10:12:24 +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 1wFr2l-00036k-OM
 for xen-devel@lists.xenproject.org; Thu, 23 Apr 2026 10:12:23 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wFr2l-001OHR-4r
 for xen-devel@lists.xenproject.org; Thu, 23 Apr 2026 12:12:23 +0200
Received: from [10.42.69.7] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <Mykyta_Poturai@epam.com>)
 id 69e9f081-bab6-0a2a0a5309dd-0a2a4507d8e4-18
 for <xen-devel@lists.xenproject.org>; Thu, 23 Apr 2026 12:12:23 +0200
Received: from [52.101.70.138]
 (helo=AS8PR04CU009.outbound.protection.outlook.com)
 by tlsNG-ef75cf.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.1)
 (envelope-from <Mykyta_Poturai@epam.com>)
 id 69e9f086-229c-0a2a45070019-3465468ad00b-3
 for <xen-devel@lists.xenproject.org>; Thu, 23 Apr 2026 12:12:22 +0200
Received: from PAVPR03MB10102.eurprd03.prod.outlook.com
 (2603:10a6:102:30d::12) by DBBPR03MB10560.eurprd03.prod.outlook.com
 (2603:10a6:10:531::6) with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9846.21; Thu, 23 Apr
 2026 10:12:20 +0000
Received: from PAVPR03MB10102.eurprd03.prod.outlook.com
 ([fe80::b8c6:f37a:987a:beb]) by PAVPR03MB10102.eurprd03.prod.outlook.com
 ([fe80::b8c6:f37a:987a:beb%5]) with mapi id 15.20.9846.016; Thu, 23 Apr 2026
 10:12: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=JhP97p8uuqmq91ULNZBsYuI970HX+8t94XndEahq+2crKRpcsn0eeAuoIdDSaCq9wvAF0GZ9bZpI5D8Irf1XUMxDjKjpi3y7+RV7mTyouWT4fvHmvbK8eX+qFr6AndCeqBz9zWCvWqfBuPJtbPPdaEiPKtNxiBbhwmcJPvjKqz+cjvLoqWiLGtH9WJiSyizY5KtQZeKR9dHprXRfV+FlbVudRCMZFWEkrQSaPZ++WVQ70bDsoy39lRMESZdnWJv1NN+VUpWbVnFPD7oqxEl3zawG1X6GvgomEanLfqyP5l2306/2pfesLrIw6PFZdo+ghY4QCiE9Aj1w+o2Lwf+WEA==
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com;
 s=arcselector10001;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1;
 bh=zXMm3UYTOZ8IKWLASSbJtUVS5pxKYkGOltztUkOoiOc=;
 b=jb8LIcezhKfe4n1DDCej8pg7+B+cMjAU1bXSv3qaFTyMDWc1JHpDRl9WbkqZYWSrjN5i+/BW1ghxjbj9qh2ezKl1Ui7m5y0112ilpw5mimzxzbb1M9nH0JXtxg7Z+h4uhgbf7EHn4Zt2VUoMYaESVpuh7p4QuLhaPcJtaLn30PpNrBx7/mWrAeqnGoKbkqZbAP/kamr9HVdbIFh1rm2uthnMH3ofFhk7ROCgmnyMUVc7cEIliSMcnmDslRQcE5fD8eCM93K69PD6MHvkaWWiNxCAJ8v9nAO1F3qAty67IY3HUfvn9//KiwASQN7a/k+0ofVUAXVi1KaOeq/fQ/1h9g==
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=zXMm3UYTOZ8IKWLASSbJtUVS5pxKYkGOltztUkOoiOc=;
 b=AIzj3XT3Q/XBWRS7G2HXzlLBB8ZZKf3L7uni5f+Jb8no/yurdusw+107Sz7yaQFXdAIDTzLuwT34hH/EtWV7u0sa31LsQonIUyUlk+eUgbQxScqsHCV7i64e8XfYv6PkTFt/WN18jP9yrcNS1J8rhvkrsbR4qmNqBJo8fY11YY5twdmAdGzLSaJLSWfPsLKd4PZXZXSli+TPr6Xp4RSkdw5UKlYgaOmdnrGSShTM0aWYAzdfi+f/dNuB9g6PEH8WQEwVlfT7wCDo5O5PNKIwIPCeUzFV98m0T4jVj+TrJnFMUMgw2wxZZznzlQ1StbEqYA43c70LhfAlFYAC6GZFHQ==
From: Mykyta Poturai <Mykyta_Poturai@epam.com>
To: Jan Beulich <jbeulich@suse.com>, Stewart Hildebrand
	<stewart.hildebrand@amd.com>
CC: =?utf-8?B?Um9nZXIgUGF1IE1vbm7DqQ==?= <roger.pau@citrix.com>, "Daniel P.
 Smith" <dpsmith@apertussolutions.com>, "xen-devel@lists.xenproject.org"
	<xen-devel@lists.xenproject.org>
Subject: Re: [PATCH v3 5/7] vpci: add SR-IOV support for PVH Dom0
Thread-Topic: [PATCH v3 5/7] vpci: add SR-IOV support for PVH Dom0
Thread-Index: AQHcyClfuk/Yqk/9/E2oGahG1JP+srXpqhqAgALY6YA=
Date: Thu, 23 Apr 2026 10:12:20 +0000
Message-ID: <5168207f-33ed-4fc4-918e-6c3b454b0efa@epam.com>
References: <cover.1775742115.git.mykyta_poturai@epam.com>
 <a0abd984989237d2f36e1628db577fb25af1cdbe.1775742115.git.mykyta_poturai@epam.com>
 <5efddecc-3665-4a53-9eaa-b117370cc0e4@suse.com>
In-Reply-To: <5efddecc-3665-4a53-9eaa-b117370cc0e4@suse.com>
Accept-Language: en-US
Content-Language: en-US
X-MS-Has-Attach:
X-MS-TNEF-Correlator:
authentication-results: dkim=none (message not signed)
 header.d=none;dmarc=none action=none header.from=epam.com;
x-ms-publictraffictype: Email
x-ms-traffictypediagnostic: PAVPR03MB10102:EE_|DBBPR03MB10560:EE_
x-ms-office365-filtering-correlation-id: 8a084104-5da7-426a-26e4-08dea120ce5a
x-ms-exchange-senderadcheck: 1
x-ms-exchange-antispam-relay: 0
x-microsoft-antispam:
 BCL:0;ARA:13230040|366016|376014|1800799024|38070700021|56012099003|18002099003|22082099003;
x-microsoft-antispam-message-info:
 /YqRpOrkk89Q6xogypnFEiVJEKtAJvmJit2XJpgwmtU7kAAoCrbMMtj/WMxXboShNfTXar3xyeSzQjLHjdfti4AwQMtSNdDHkgKvAmsa31+wqrAPIS6M0pINIgb7KxcKAuuWHgh+ypJ+1iY9oAZSSzZXKOQsnVcypLmL3k7Om553kSwY3c6sy5etyAcnvn/gxji2zNVElcBI+8T2MVInsFzdTGQ/xQJCsrDqX+FnPS+43FhAxK9GbU3PucxMPMoGBo1GBjxZ23MYa1IQksJK0lRtqlSujuQgpESksXkQS9AlywTBi6guKCO8vvHE4MDbhi/yQcsixSWYaylVNnCeCfCJpHhUvwq6hOAW8hGRnuF/EBmzNOh3l7a42/Kv5XktiovpsWbMMIFCVuuLGSnfvv57ui3arj2NAh2FplxrIB32cSgVrKwb2bOlrk3MSApr0KVx8TnhD2pGfiPiiuvnHSmnvU3Xq9r0U4Jc7mf87hMKkOBfKRFHXApssYyjraqYXvbK/0RVkHClRgVXi787UNCMEVPPx2PCmbn41YoBrLbXu6J+oMY9GK3Dv0TDHSkG83BberQP2OffUD79SF7pfwevu9wpr0KA+SZoJISoMqKXnvWiGHOHbimp0Ld8UKhDUkZyeSfUxLIMnxw05Zb4ZKcGj8ALndBgQezEcNDnTOBRvQ/dZhucrb+oJeiiVVNmbvAjvUmrDJNcFbntShkJJO6lWKb4yEBR/n8cU7wWvWO10cIAE94+OrIM36AzSvCHfrl+5CHcjwKibOtMMuTfMv2/QL9atsdvc5k05wqwNQ0=
x-forefront-antispam-report:
 CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:PAVPR03MB10102.eurprd03.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(366016)(376014)(1800799024)(38070700021)(56012099003)(18002099003)(22082099003);DIR:OUT;SFP:1102;
x-ms-exchange-antispam-messagedata-chunkcount: 1
x-ms-exchange-antispam-messagedata-0:
 =?utf-8?B?UUFjT1d6NHFjYWdwbEVoOURLR2ViQzlGNGdjVEI5RGIvM2QzNTNuL0h5Z0U5?=
 =?utf-8?B?alhTMFAwUlVuZktzK1lVT01FejhjQW13M2ZnSk5IWWNxRjNyWGFIdE1SRzRk?=
 =?utf-8?B?SXJ1TFpBMTIzdTZSMmVvc3pyRGhqL3RTOFJZSnpGUUtTR0t3eFFtSUp6VndY?=
 =?utf-8?B?cHlTYTdXYVpWRy83Zys0YzNzUTArR3B1aHA5M0JWbUhUSnVWTGJkclNaOUx1?=
 =?utf-8?B?RWtYeURtaVFOQWl0eFR0RHk4dmVUQjBOdjhCeFVBYnZzWnJ2Q2pqSEMvQk1K?=
 =?utf-8?B?YVBGell0N0s1UGoyTU50a2I5b05oVDh2Q1FKUzBQVzBnWXMvS3dLeEV4YmFF?=
 =?utf-8?B?YmlQeTRCb2l5QytCa0ZmUFYyV3UycW05SXFtNTNlWUJuNDZTSzErdCtGVEdi?=
 =?utf-8?B?RGN6VUw0anVjS0pjMXZsVVU0YnBEY2J2eXJDMldRMVJNVkI4dHUzamNxa0o4?=
 =?utf-8?B?d1c0dHFJTzlWSXdQOTlCS3RPUU04YzV3U0pNOHFKVk5ScUduaEhsbjRVTmRi?=
 =?utf-8?B?Ky9VUCtOMkZjbXFWTjFLWUZoanJzV3M2M1BPSnJBdjhCaktFVzU2T29Ba1Fs?=
 =?utf-8?B?VWkzaEJsZStNSFk3VFNWbDJKajNscjF1TFdxUlEvWW5WQ0kzVVQ0YmZPMWdl?=
 =?utf-8?B?MGU4NXY2eE81WG1uZVQwb29SOXE5ekNrVjVWc1ZENEw4R2VVK3VnY21YSnFi?=
 =?utf-8?B?RHM4bTVweDZSMHNaeVM5Wm1MWGR2Yjl0cUhnRHAvOGthOFpCQnFtbzZEZGRq?=
 =?utf-8?B?K1pWSEpLMlZQT1AwMFFvY2htL0NsRUhLQVRlQ2dicTF2aUxncTcrZVJOekVm?=
 =?utf-8?B?c0ZORTFaVHBVNkZrMzV1NWdhQjBOZ2kweVcwQm0rckQ3c2Nudy9MNVBxbmxM?=
 =?utf-8?B?Z0dIdFJRUUdKZzY4aENpY084Tms0R3VxdEJMNFk1QUJsQnRmV0xxOHlaOG03?=
 =?utf-8?B?OElSYTJKR3d3Nm9jc0lvNSsvRlEzQkc5Y1dsMktIN1BlclE3RVVGQ01QcWc1?=
 =?utf-8?B?UVhwaTB1cytGTkJqMWxjRkJKTWowQTRQdGZjbWt3OVVMWWJONS9FQnkwU0gr?=
 =?utf-8?B?UHFPTHdDN3VQUG8zYXNwSHZ4NnRRcHUzVnJSQjB2a2xGb1RBT1F4VHJDOEZ4?=
 =?utf-8?B?aE1rUTA2bmJNUW1HWVJRR3ZUODBKZ3YrWTBjL3pKMDZYNDlnc3p5TFdTMklt?=
 =?utf-8?B?MGlIcjVxcjJkME53UW05TWt5NlB0OUJmOTBJMGFxQXRyNVVJek4yYzVqaHBB?=
 =?utf-8?B?N1RvZmhsSGNsL3hwWFhtMzRIN1lWNCtEQ1dWL3ZORFFxRmx5ZXFMZk84ckti?=
 =?utf-8?B?R1FOU2hGeFh5TUJ6RFRxd3A3RURIWmg2Z01VZVZ5MWF1SE5Sd1ppT3ZpaUNt?=
 =?utf-8?B?SEp2WTdFL1pEMVRqa29lbk5HUXRPYit3YUttWnYxaG45SmJVRmhad1A2N1Zz?=
 =?utf-8?B?WDdXVHBaQm1JK3Qxa3ZsY0xJMkR1Njh2VzBBYU5GRXIwR0RZTnVwSDBRSkc4?=
 =?utf-8?B?bW5UdjdncUltNjJVeDBtZnVLcWFLSDdveEdhZ294aGJ0UWxHVHBwdk5KMnpQ?=
 =?utf-8?B?T0RSalkySVFDU1lhQzZoYldYdVlROHUwVG95TWVIaGZxcTlRelV0U1RZdnY0?=
 =?utf-8?B?ekJDN0lZMG5wU2NhUG12VlpnWkxEY2xjWUpJYmlxSG9IMW42YndmR2hhV3Bp?=
 =?utf-8?B?ZWVKd3ZFWUd4REt3K0JJT0ozclVPelZHNnIzOTIwNmZ0djJDR0NHVXVmMnlw?=
 =?utf-8?B?L2tENkdIWXNpYk5aNmN6TGVUZG5jNlZkWnR6U21lQ0F5MEs3N1ZLUEVrdmJo?=
 =?utf-8?B?UngrWlZJV1RVc2F3OTZyZWp4OG9nd0hhanBNSjkyNUpobnR1SEE2NlRnalVr?=
 =?utf-8?B?Ky9VdUExQm81VDIrNTZBVjVPNW9XWXpUb0dtZFM3WkJ3UG1IL1lBOCtZQUlS?=
 =?utf-8?B?VW5IWlIwSFBkQm5FRzdudU9VTW5EMlBJTWU4d0FTbTZvZDBBYUFOemdOMW9M?=
 =?utf-8?B?OFA3Uk1ZZjJRcmx5RUdHK0t6bXptakhZL1FENmtOS1Q1SStudTJhdWlFZUhu?=
 =?utf-8?B?cXBZY1l4dWpCVUFJNzQ5UUV3ZFUxWXViTHhKVlRJMFZGbzVaS21iQmhCWE0r?=
 =?utf-8?B?R0xVemhQU2NlNDRvZGEvd0ZBMmtMRG5HcWh0YmttQUM0M05ZV1JzMGZHV3Vo?=
 =?utf-8?B?UlFtYm1sR1FDMnVTV0ljRjQ5aDhuTndvWnRsNnFVNlF2enFUQ29qMExQb2F1?=
 =?utf-8?B?V2luWjNUVW8wNEFRa0JJSzFCZE1pcFlEU1lwdlVnRXpCbU5qczdnSCtsMlFL?=
 =?utf-8?B?NFV0QjhHc2wrN0NYd3ltbDVodjVYR3dTTnFXWEF5Ymltd0xpOWhiY293VXdO?=
 =?utf-8?Q?Dp9WhIoae+H3uzpM=3D?=
Content-Type: text/plain; charset="utf-8"
Content-ID: <7019017C62BF5F498FBC5DBE8A5BE765@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: PAVPR03MB10102.eurprd03.prod.outlook.com
X-MS-Exchange-CrossTenant-Network-Message-Id: 8a084104-5da7-426a-26e4-08dea120ce5a
X-MS-Exchange-CrossTenant-originalarrivaltime: 23 Apr 2026 10:12:20.5689
 (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: eCCDVEhiIpZpmS7yOXwM7Krk9ShhcK/hLWBgLM8RoZnjbHnEZgUQWdYz7jot0wqkflsrpT4JluJlHPPlg8+3LQ==
X-MS-Exchange-Transport-CrossTenantHeadersStamped: DBBPR03MB10560
X-purgate-ID: tlsNG-ef75cf/1776939143-17265C48-EAD789C9/0/0
X-purgate-type: clean
X-purgate-size: 5100

T24gNC8yMS8yNiAxNzo0MywgSmFuIEJldWxpY2ggd3JvdGU6DQo+IE9uIDA5LjA0LjIwMjYgMTY6
MDEsIE15a3l0YSBQb3R1cmFpIHdyb3RlOg0KPj4gRnJvbTogU3Rld2FydCBIaWxkZWJyYW5kIDxz
dGV3YXJ0LmhpbGRlYnJhbmRAYW1kLmNvbT4NCj4+DQo+PiBUaGlzIGNvZGUgaXMgZXhwZWN0ZWQg
dG8gb25seSBiZSB1c2VkIGJ5IHByaXZpbGVnZWQgZG9tYWlucywNCj4+IHVucHJpdmlsZWdlZCBk
b21haW5zIHNob3VsZCBub3QgZ2V0IGFjY2VzcyB0byB0aGUgU1ItSU9WIGNhcGFiaWxpdHkuDQo+
Pg0KPj4gSW1wbGVtZW50IFJXIGhhbmRsZXJzIGZvciBQQ0lfU1JJT1ZfQ1RSTCByZWdpc3RlciB0
byBkeW5hbWljYWxseQ0KPj4gbWFwL3VubWFwIFZGIEJBUlMuIFJlY2FsY3VsYXRlIEJBUiBzaXpl
cyBiZWZvcmUgbWFwcGluZyBWRnMgdG8gYWNjb3VudA0KPj4gZm9yIHBvc3NpYmxlIGNoYW5nZXMg
aW4gdGhlIHN5c3RlbSBwYWdlIHNpemUgcmVnaXN0ZXIuIEFsc28gZm9yY2UgVkZzIHRvDQo+PiBh
bHdheXMgdXNlIGVtdWxhdGVkIHJlYWRzIGZvciBjb21tYW5kIHJlZ2lzdGVyLCB0aGlzIGlzIG5l
ZWRlZCB0bw0KPj4gcHJldmVudCBzb21lIGRyaXZlcnMgYWNjaWRlbnRhbGx5IHVubWFwcGluZyBC
QVJzLg0KPiANCj4gVGhpcyBhcHBhcmVudGx5IHJlZmVycyB0byB0aGUgY2hhbmdlIHRvIHZwY2lf
aW5pdF9oZWFkZXIoKS4gV3JpdGVzIGFyZQ0KPiBhbHJlYWR5IGludGVyY2VwdGVkLiBIb3cgd291
bGQgYSByZWFkIGxlYWQgdG8gYWNjaWRlbnRhbCBCQVIgdW5tYXA/IEV2ZW4NCj4gZm9yIHdyaXRl
cyBJIGRvbid0IHNlZSBob3cgYSBWRiBkcml2ZXIgY291bGQgYWNjaWRlbnRhbGx5IHVubWFwIEJB
UnMsIGFzDQo+IHRoZSBtZW1vcnkgZGVjb2RlIGJpdCB0aGVyZSBpcyBoYXJkd2lyZWQgdG8gMC4N
Cj4gDQo+PiBEaXNjb3Zlcnkgb2YgVkZzIGlzDQo+PiBkb25lIGJ5IERvbTAsIHdoaWNoIG11c3Qg
cmVnaXN0ZXIgdGhlbSB3aXRoIFhlbi4NCj4gDQo+IElmIHdlIGludGVyY2VwdCBjb250cm9sIHJl
Z2lzdGVyIHdyaXRlcywgd2h5IHdvdWxkIHdlIHN0aWxsIHJlcXVpcmUNCj4gRG9tMCB0byByZXBv
cnQgdGhlIFZGcyB0aGF0IGFwcGVhcj8NCj4gDQoNClNvcnJ5LCBJIGRvbid0IHVuZGVyc3RhbmQg
dGhpcyBxdWVzdGlvbi4gWW91IHNwZWNpZmljYWxseSByZXF1ZXN0ZWQgdGhpcyANCnRvIGJlIGRv
bmUgdGhpcyB3YXkgaW4gVjIuIFF1b3RpbmcgeW91ciByZXBseSBmcm9tIFYyIGJlbG93Lg0KDQog
PiBBcmVuJ3QgeW91IGVmZmVjdGl2ZWx5IGJ1c3ktd2FpdGluZyBmb3IgdGhlc2UgMTAwbXMsIGJ5
IHNpbXBseSANCnJldHVybmluZyAidHJ1ZSINCiA+IGZyb20gdnBjaV9wcm9jZXNzX3BlbmRpbmco
KSB1bnRpbCB0aGUgdGltZSBoYXMgcGFzc2VkPyBUaGlzIGltbyBpcyBhIA0Kbm8tZ28uIFlvdQ0K
ID4gd2FudCB0byBzZXQgYSB0aW1lciBhbmQgcHV0IHRoZSB2Q1BVIHRvIHNsZWVwLCB0byB3YWtl
IGl0IHVwIGFnYWluIA0Kd2hlbiB0aGUNCiA+IHRpbWVyIGhhcyBleHBpcmVkLiBUaGF0J2xsIHRo
ZW4gZWxpbWluYXRlIHRoZSBuZWVkIGZvciB0aGUgDQpub3Qtc28tbmljZSBwYXRjaCA0Lg0KDQog
PiBRdWVzdGlvbiBpcyB3aGV0aGVyIHdlIG5lZWQgdG8gYWN0dWFsbHkgZ28gdGhpcyBmYXIgKHJp
Z2h0IGF3YXkpLiBJIA0KZXhwZWN0IHlvdQ0KID4gZG9uJ3QgbWVhbiB0byBoYW5kIFBGcyB0byBE
b21VLXMuIEFzIGxvbmcgYXMgd2Uga2VlcCB0aGVtIGluIHRoZSBoYXJkd2FyZQ0KID4gZG9tYWlu
LCBjYW4ndCB3ZSB0cnVzdCBpdCB0byBzZXQgdGhpbmdzIHVwIGNvcnJlY3RseSwganVzdCBsaWtl
IHdlIA0KdHJ1c3QgaXQgaW4NCiA+IGEgbnVtYmVyIG9mIG90aGVyIGFzcGVjdHM/DQoNCiA+IEph
bg0KDQo+PiArc3RhdGljIGludCBtYXBfdmZzKGNvbnN0IHN0cnVjdCBwY2lfZGV2ICpwZl9wZGV2
LCB1aW50MTZfdCBjbWQpDQo+PiArew0KPj4gKyAgICBzdHJ1Y3QgcGNpX2RldiAqdmZfcGRldjsN
Cj4+ICsgICAgaW50IHJjOw0KPj4gKw0KPj4gKyAgICBBU1NFUlQocndfaXNfd3JpdGVfbG9ja2Vk
KCZwZl9wZGV2LT5kb21haW4tPnBjaV9sb2NrKSk7DQo+PiArDQo+PiArICAgIGxpc3RfZm9yX2Vh
Y2hfZW50cnkodmZfcGRldiwgJnBmX3BkZXYtPnZmX2xpc3QsIHZmX2xpc3QpDQo+PiArICAgIHsN
Cj4+ICsgICAgICAgIHJjID0gdnBjaV9tb2RpZnlfYmFycyh2Zl9wZGV2LCBjbWQsIGZhbHNlKTsN
Cj4+ICsgICAgICAgIGlmICggcmMgKQ0KPj4gKyAgICAgICAgew0KPj4gKyAgICAgICAgICAgIGdw
cmludGsoWEVOTE9HX0VSUiwgImZhaWxlZCB0byAlcyBWRiAlcHA6ICVkXG4iLA0KPj4gKyAgICAg
ICAgICAgICAgICAgICAgKGNtZCAmIFBDSV9DT01NQU5EX01FTU9SWSkgPyAibWFwIiA6ICJ1bm1h
cCIsDQo+PiArICAgICAgICAgICAgICAgICAgICAmdmZfcGRldi0+c2JkZiwgcmMpOw0KPj4gKyAg
ICAgICAgICAgIHJldHVybiByYzsNCj4+ICsgICAgICAgIH0NCj4+ICsNCj4+ICsgICAgICAgIHZm
X3BkZXYtPnZwY2ktPmhlYWRlci5ndWVzdF9jbWQgJj0gflBDSV9DT01NQU5EX01FTU9SWTsNCj4+
ICsgICAgICAgIHZmX3BkZXYtPnZwY2ktPmhlYWRlci5ndWVzdF9jbWQgfD0gKGNtZCAmIFBDSV9D
T01NQU5EX01FTU9SWSk7DQo+IA0KPiBBcyBtZW50aW9uZWQgZWxzZXdoZXJlIGFzIHdlbGwsIHRo
aXMgYml0IGlzIHN1cHBvc2VkIHRvIGJlIDAgZm9yIFZGcy4NCg0KVGhlcmUgYXJlIHNvbWUgZGV2
aWNlcyB0aGF0IGV4cG9zZSBWRnMgd2l0aCB0aGUgc2FtZSBWSUQvRElEIGFzIGluIHRoZSANClBG
LCBjYXVzaW5nIExpbnV4IHRvIHVzZSBub3JtYWwgZHJpdmVyIGZvciB0aGVtIGFuZCB0aHJlYXQg
dGhlbSBsaWtlIA0Kbm9ybWFsIGRldmljZXMuIEF0IHNvbWUgcG9pbnQsIHRob3NlIG5vcm1hbCBk
cml2ZXJzIHRyeSB0byBkbyBhIA0KcmVhZC1tb2RpZnktdXBkYXRlIG9mIHRoZSBjb21tYW5kIHJl
Z2lzdGVyIGFuZCBlbmQgdXAgd3JpdGluZyAwIHRvIA0KUENJX0NPTU1BTkRfTUVNT1JZLCBjYXVz
aW5nIGNtZF93cml0ZSB0byB1bm1hcCB0aGUgQkFSUyBvZiB0aGF0IGRldmljZS4gDQpJIGFtIG5v
dCBzdXJlLCBtYXliZSBpdCB3b3VsZCBiZSBiZXR0ZXIgdG8ganVzdCBpZ25vcmUgY21kIHdyaXRl
cyBmb3IgVkZzPw0KDQo+PiArICAgIHNyaW92X3BvcyA9IHBjaV9maW5kX2V4dF9jYXBhYmlsaXR5
KHBmX3BkZXYsIFBDSV9FWFRfQ0FQX0lEX1NSSU9WKTsNCj4+ICsgICAgY3RybCA9IHBjaV9jb25m
X3JlYWQxNihwZl9wZGV2LT5zYmRmLCBzcmlvdl9wb3MgKyBQQ0lfU1JJT1ZfQ1RSTCk7DQo+PiAr
DQo+PiArICAgIGlmICggKHBmX3BkZXYtPmRvbWFpbiA9PSB2Zl9wZGV2LT5kb21haW4pICYmIChj
dHJsICYgUENJX1NSSU9WX0NUUkxfTVNFKSApDQo+PiArICAgIHsNCj4+ICsgICAgICAgIHJjID0g
dnBjaV9tb2RpZnlfYmFycyh2Zl9wZGV2LCBQQ0lfQ09NTUFORF9NRU1PUlksIGZhbHNlKTsNCj4g
DQo+IERvZXNuJ3QgVkYgZW5hYmxlIGFsc28gbmVlZCB0byBiZSBzZXQgZm9yIHRoZSBCQVJzIHRv
IGJlIG1hcHBlZD8NCg0KDQpJIGRvbid0IHRoaW5rIHNvLiBFbmFibGluZyBtZW1vcnkgc3BhY2Ug
bG9naWNhbGx5IG1hcHMgdmVyeSB3ZWxsIHRvIA0KbWFwcGluZyBtZW1vcnkgdG8gdGhlIGd1ZXN0
LiBJIGRvbuKAmXQgc2VlIGFueSBiZW5lZml0IG9mIGFsc28gcmVxdWlyaW5nIA0KVkZFIGJpdCBo
ZXJlLg0KDQoNCi0tIA0KTXlreXRh


From xen-devel-bounces@lists.xenproject.org Thu Apr 23 10:28:19 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 23 Apr 2026 10:28:19 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1291892.1570645 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wFrI5-0007D9-8I; Thu, 23 Apr 2026 10:28:13 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1291892.1570645; Thu, 23 Apr 2026 10:28: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 1wFrI5-0007D2-5Q; Thu, 23 Apr 2026 10:28:13 +0000
Received: by outflank-mailman (input) for mailman id 1291892;
 Thu, 23 Apr 2026 10:28:11 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <Bertrand.Marquis@arm.com>) id 1wFrI2-0007Bd-Mz
 for xen-devel@lists.xenproject.org; Thu, 23 Apr 2026 10:28:11 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wFrI1-001RVp-QR
 for xen-devel@lists.xenproject.org; Thu, 23 Apr 2026 12:28:09 +0200
Received: from [10.42.69.4] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <Bertrand.Marquis@arm.com>)
 id 69e9f439-e002-0a2a0a5209dd-0a2a45049812-4
 for <xen-devel@lists.xenproject.org>; Thu, 23 Apr 2026 12:28:09 +0200
Received: from [40.107.162.16]
 (helo=PA4PR04CU001.outbound.protection.outlook.com)
 by tlsNG-ebf023.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.1)
 (envelope-from <Bertrand.Marquis@arm.com>)
 id 69e9f438-1dec-0a2a45040019-286ba2107984-3
 for <xen-devel@lists.xenproject.org>; Thu, 23 Apr 2026 12:28:08 +0200
Received: from DUZPR01CA0209.eurprd01.prod.exchangelabs.com
 (2603:10a6:10:4b6::22) by DU0PR08MB9418.eurprd08.prod.outlook.com
 (2603:10a6:10:421::17) with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9846.17; Thu, 23 Apr
 2026 10:28:02 +0000
Received: from DB1PEPF000509E9.eurprd03.prod.outlook.com
 (2603:10a6:10:4b6:cafe::d7) by DUZPR01CA0209.outlook.office365.com
 (2603:10a6:10:4b6::22) with Microsoft SMTP Server (version=TLS1_3,
 cipher=TLS_AES_256_GCM_SHA384) id 15.20.9846.21 via Frontend Transport; Thu,
 23 Apr 2026 10:28:02 +0000
Received: from outbound-uk1.az.dlp.m.darktrace.com (4.158.2.129) by
 DB1PEPF000509E9.mail.protection.outlook.com (10.167.242.59) with Microsoft
 SMTP Server (version=TLS1_3, cipher=TLS_AES_256_GCM_SHA384) id 15.20.9791.48
 via Frontend Transport; Thu, 23 Apr 2026 10:28:02 +0000
Received: from PR3PR08MB5593.eurprd08.prod.outlook.com (2603:10a6:102:84::13)
 by DBAPR08MB5607.eurprd08.prod.outlook.com (2603:10a6:10:1ae::13)
 with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9818.33; Thu, 23 Apr
 2026 10:26:59 +0000
Received: from PR3PR08MB5593.eurprd08.prod.outlook.com
 ([fe80::aae1:6871:afc4:620e]) by PR3PR08MB5593.eurprd08.prod.outlook.com
 ([fe80::aae1:6871:afc4:620e%5]) with mapi id 15.20.9818.023; Thu, 23 Apr 2026
 10:26: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=arm.com header.i="@arm.com" header.h="From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck"; dkim=pass header.s=selector1 header.d=arm.com header.i="@arm.com" header.h="From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck"
ARC-Seal: i=2; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=pass;
 b=sk3D0NgDEgGsW2OLKA0vhrSiFVvA3Bgs1z3zRuyeeWadpBwuTUO3/509jMPd4+Ic3DQKatJJoXM7Y5W1w1NZIonrtT+arrSmcPVCASL1Eu6gkRWfbWz/hgA7D6Lg42uz43pNo1KYlxM5fhSvnMFipFg4W6+1wFJlyPTdVyfd01WQ/CSmbgYwb/oK9Kl4ecQzYQaegKQaGa5sXsoykmQLK0i8f9WFpwC50I/SqPh0qTwFXoQqvEtmvIcmTcFZtzacXD2Vk3K4t8r8MqgxLL2X4J2gB8u1ssovMeUq19ZHuseFog09MJ6egdr1OwL9RjhcoaQs1QPVrnFv3km3gUXdgQ==
ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com;
 s=arcselector10001;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1;
 bh=ym//CaW/erLXxXdxEf2Fr+w18mQtRJ5/hELSNT4mQlQ=;
 b=CuFvbFDwrItR/Znb7qskw3iSKjzfgcCAhQU/w0pOFJ35FeoUKF9iXU5+e4Jg7xX/YpfGQNTCuetmvsr08t9w7cqlKFuK57/f+ZadZ2so15Cib1jACJys6mpk+B58imorjtKNYSuvvf6jwqhMUKFp7PRb24A2VuksqpOmM/XcJJVg5NyfnwmyooB3HVAKLPtoP3YtEtoORMbZ/GO+L9OtseMxYeOGuNHtXpfQA7WfEgMHp4LtBxV8R8mJMiXlg36ZjQ5bqyW6CrvKpNMULn0z3u4TFlHpUFCYNsk2IB4+a2z3A04xTaCvBkMNAOOGjrtgVQO2ElNGE89hs3eFdlaEOQ==
ARC-Authentication-Results: i=2; mx.microsoft.com 1; spf=pass (sender ip is
 4.158.2.129) smtp.rcpttodomain=linaro.org smtp.mailfrom=arm.com; dmarc=pass
 (p=none sp=none pct=100) action=none header.from=arm.com; dkim=pass
 (signature was verified) header.d=arm.com; arc=pass (0 oda=1 ltdi=1
 spf=[1,1,smtp.mailfrom=arm.com] dkim=[1,1,header.d=arm.com]
 dmarc=[1,1,header.from=arm.com])
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=arm.com; s=selector1;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck;
 bh=ym//CaW/erLXxXdxEf2Fr+w18mQtRJ5/hELSNT4mQlQ=;
 b=czZ7/NIe3bGJbFPiud+NVpiynGYCT8+XpjDnGKXl4GXUvbCjtjzTPWIyV0pXOvjorG0AboT8hr941SUa3P0ir3zQ/Kd62EDtXv+O8+GeulHJ6SGxJI3s6PpDmwBCIPpKRF8EI7VFUfrx2A3d6TTMFnnecPPSFKAqzLDL5+8qPMw=
X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 4.158.2.129)
 smtp.mailfrom=arm.com; dkim=pass (signature was verified)
 header.d=arm.com;dmarc=pass action=none header.from=arm.com;
Received-SPF: Pass (protection.outlook.com: domain of arm.com designates
 4.158.2.129 as permitted sender) receiver=protection.outlook.com;
 client-ip=4.158.2.129; helo=outbound-uk1.az.dlp.m.darktrace.com; pr=C
ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none;
 b=MeED73EHX9bXepXp5TRLrMDHMXQFHu2eRrWMwHjKlY32cYKONRnKCdkFMqr7FwsYSCLI1NUt6p3ws2RqXmbj6ZFRmfucx2SFJgWIlEDabh8lI4LN6nWCOs6MdTCHGJJu1hVKG9Swjy0Zei4/MzZkrTWr9T7bLuLEqPdvb/FB0OaKzD5KWGHSdNRVnYpoOnxP3lSeteAx/wtnWtrq5azK2mlVm4EHK0fb3pTtdW1R0LNKUEb1w4RVeP4ghfs358NEXunSn87FCx2zSQ/+W0t5VkP4E1SYFc3P3I5EqxPcEGM8lSzdOSG+GWFMno/NCTH4+mbJBaOKpbb3s6Hkjls5NQ==
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com;
 s=arcselector10001;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1;
 bh=ym//CaW/erLXxXdxEf2Fr+w18mQtRJ5/hELSNT4mQlQ=;
 b=JGMIu/Yf+iHDQSTebQxPJTo2NqefHd/MHgqcRS1pMG9+EfBhryDJjY4f7sLlwwURDdHa/+5JdzE2NP8uPePwAIjLv05sq7H1nJ+M8fHMkns96BjnD/MMrKhUZ46iXRW1YyZe4IWn19fN71RH6CL0XjgPWQBkcmQYlW/SB3FWQNx3gMeJUnu82Dsg3MB55RQXsgnLKUdGeGWkP7oUO2OsfFaMs1fdEoeFljGwKlaDhUTDJ3hpzm71ug5rPXEnZoA18etSLd926EC+1c02omVCDq13m0X5iyCZHkABMfmCypZeLidV45lMbb+ilIzsVi4g9+Go+r+lon1jzsPe7jrRfg==
ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass
 smtp.mailfrom=arm.com; dmarc=pass action=none header.from=arm.com; dkim=pass
 header.d=arm.com; arc=none
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=arm.com; s=selector1;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck;
 bh=ym//CaW/erLXxXdxEf2Fr+w18mQtRJ5/hELSNT4mQlQ=;
 b=czZ7/NIe3bGJbFPiud+NVpiynGYCT8+XpjDnGKXl4GXUvbCjtjzTPWIyV0pXOvjorG0AboT8hr941SUa3P0ir3zQ/Kd62EDtXv+O8+GeulHJ6SGxJI3s6PpDmwBCIPpKRF8EI7VFUfrx2A3d6TTMFnnecPPSFKAqzLDL5+8qPMw=
From: Bertrand Marquis <Bertrand.Marquis@arm.com>
To: Jens Wiklander <jens.wiklander@linaro.org>
CC: "xen-devel@lists.xenproject.org" <xen-devel@lists.xenproject.org>,
	Volodymyr Babchuk <volodymyr_babchuk@epam.com>, Stefano Stabellini
	<sstabellini@kernel.org>, Julien Grall <julien@xen.org>, Michal Orzel
	<michal.orzel@amd.com>
Subject: Re: [PATCH 2/6] xen/arm: ffa: Track hypervisor notifications in a
 bitmap
Thread-Topic: [PATCH 2/6] xen/arm: ffa: Track hypervisor notifications in a
 bitmap
Thread-Index: AQHcznAWfT9UE3mepUCzg5x2vENfULXq2YyAgAFvNoCAACc9gIAACoOA
Date: Thu, 23 Apr 2026 10:26:59 +0000
Message-ID: <11248077-23EC-40A3-8576-E3F52DE3682B@arm.com>
References: <cover.1776266307.git.bertrand.marquis@arm.com>
 <7053b8c14bbe50cc855dad0a82cde2bb10153d2b.1776266307.git.bertrand.marquis@arm.com>
 <CAHUa44HaFjLf9CcSJMDD5O-R24_Kq_7zabw2Op2X=P1gj+85Sw@mail.gmail.com>
 <6D745E55-2BBB-49CC-AE8D-D75E9704ED8D@arm.com>
 <CAHUa44HGhtnekDiC0GOb0+=gHkCOBwfBJWfwmBxF62ukWr8HDw@mail.gmail.com>
In-Reply-To:
 <CAHUa44HGhtnekDiC0GOb0+=gHkCOBwfBJWfwmBxF62ukWr8HDw@mail.gmail.com>
Accept-Language: en-GB, en-US
Content-Language: en-US
X-MS-Has-Attach:
X-MS-TNEF-Correlator:
x-mailer: Apple Mail (2.3864.500.181)
Authentication-Results-Original: dkim=none (message not signed)
 header.d=none;dmarc=none action=none header.from=arm.com;
x-ms-traffictypediagnostic:
	PR3PR08MB5593:EE_|DBAPR08MB5607:EE_|DB1PEPF000509E9:EE_|DU0PR08MB9418:EE_
X-MS-Office365-Filtering-Correlation-Id: 1db7b3a1-b0e2-429e-cb43-08dea122ff93
x-checkrecipientrouted: true
nodisclaimer: true
X-MS-Exchange-SenderADCheck: 1
X-MS-Exchange-AntiSpam-Relay: 0
X-Microsoft-Antispam-Untrusted:
 BCL:0;ARA:13230040|366016|1800799024|376014|38070700021|22082099003|18002099003|56012099003;
X-Microsoft-Antispam-Message-Info-Original:
 L27L1/6t42KNd+XoflvIUHtXxbufyY8bImIqW7WppVbaSch20YmN9Ktc/lmkKtdW7lHQCbAgA5HPhhAk5IJ6prw+bevKIF+rYjuCJWZmx5VjSaOWXtcOuXGlmQxqYqV+wDFIeiFJs6viMFVWwbUgVCITE4mbl3ZBjvJj3yCCXDtWxl3Lzpq1/2J1wu83+nnMPeYQQBbxGx2GB9SCy3Bx6sj6XWbX+iM+fGXaBqf2YW55s/tRmr9w1cIV0RelhQTOvMVgnIMt26orjxo/m/aKVStG63JAx8whB8tCyPcWxaZzPIXVeeiwLH+uziFyDSi6BWYgS8s4KwN/kNtHVhL4VWUpDIulOgJ8y7aLp1wU7d7F2ExPjy8kvhQKod+jGUd9zKW0OeSEiqI8A+tyjLdwqlPC14Yv7lw9ZVOvLI3RsKQrAJSM4NhJvUuHhC6E3B2Gcz0WY1Yxl3DV929G8tp5KqYFhmCLvCRgJnp5ZaduZv09u1X/NtoNx5qZvGEhL9UD2DaSY1rW6wmoC/lC7cX+nZCuplplv6rf6XkKb0OxAa1AW/WX886rSyDCPCMHgfyhkIM9l5Enp/+59E+xnEhKjTy/3qkj/0A5rABQ3Wnb+6MWxFIQwBW8YGSVqW3pRf+17kfOaFqDSaPBRKK5FWK+4TDJikX0lUrFhaPIbYyHM8h1HGuMfS8D7+JGEzFUM7ti9Hcc0GrcdGTlAjc+YQajt6oKrIK4aqq4jb4q62Vb5VwC0biXDTmeQdnkYexhJ/SoRIp8JxrLfoJJcY0XVsj81zldGMAegbjs0hcFobS92BM=
X-Forefront-Antispam-Report-Untrusted:
 CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:PR3PR08MB5593.eurprd08.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(366016)(1800799024)(376014)(38070700021)(22082099003)(18002099003)(56012099003);DIR:OUT;SFP:1101;
Content-Type: text/plain; charset="utf-8"
Content-ID: <59FF8E19D3924E4094D6A1D16DD2904A@eurprd08.prod.outlook.com>
Content-Transfer-Encoding: base64
MIME-Version: 1.0
X-Exchange-RoutingPolicyChecked:
 SNb4HK7DSsskh2tiETieowXTXGZjGAixkd6g/uci4HG6jZYOyMFEtXz0fwqiF26MVEa8UkfkKLqQAD6anR6IStxxqbeFQS74MDiXsar46x1LHvXHu98TujMgWUo1yWK/KVmCKa3YJZXL0+pDgOF0VVf0SBszGI3B8FjpcrNeR6KMwHtjIoUlGtoflLqGG8LEk19/532tMvR7cgY1imVzxQNjjhyc2ikjbMJg8FHXV0lI8+aqA5WHIOQWQm1r80k8retrEVDGz6edaml4a5jyZhqTuWH8Li/6pxqXadWnM7u+UscZxLns6apxQx3E3WvYtf4pt7HGFmlxSnh6Ia6QwQ==
X-MS-Exchange-Transport-CrossTenantHeadersStamped: DBAPR08MB5607
X-EOPAttributedMessage: 0
X-MS-Exchange-Transport-CrossTenantHeadersStripped:
 DB1PEPF000509E9.eurprd03.prod.outlook.com
X-MS-PublicTrafficType: Email
X-MS-Office365-Filtering-Correlation-Id-Prvs:
	b79df717-8125-4e88-18c1-08dea122da4e
X-Microsoft-Antispam:
	BCL:0;ARA:13230040|376014|14060799003|1800799024|35042699022|82310400026|36860700016|18002099003|22082099003|56012099003;
X-Microsoft-Antispam-Message-Info:
	cVi4YdQeGAP/cKkk2nvPHnQqXOF4X4oylC6FFhSXmQjz1pHNUKPq3KhqFvxQPhbq3/0/yx07Ohm8rHwpS0m8xlg4oGiY5l5ig+6JTZYBMrsxpIRuz3CUjWOjCyNVwWCKrNW1jSzkgdqpzCW5Rs8msNlVyLJCqPKBnO7/Nycr9HCuKrVyrqf11R5lKsdxD/cj9q1XDXtxWStXew5gPobIuxcrkE8MjO80afn7hJ4SQIBrcZorfEVTUuf/YELuNSGNWMjgZLMq9yFUzJod+yStus26c/pYETETI/Qm2GQOuRBki1X5/RSNdgwn1fx5O8chqC44WvReqTtkV2l6tNs1TCg5KyHSU585CQd3N5A2r9QSzvEX6mjmJVYlUPK1LV2kpmiTcCsoe83PPQEQPRKgaVxvItIzd5oexUHcKQwgW6ZUUCCDw3CDLem4U0iYQ8+Jo9pG+dgA8kAq26LY/p8Qp4suj4Ut8AMhNbnoH7FJrcFen0rf1rXVrcCEsTHPf91+P7AyhrSrsim3GIdOYuWWR/vh+B/plUOhkhB7+3kS2byQfL2oVQFAmlUZq17azuQ8zAJ5YX3gpFtgHCRZri+LujXOLIlGSpyDBQj9yRZxNixGm/NYJ8Hrb30MBQkTISElVP+y468YyN5/zLicfF4vI6C5RFbPhGxCl2i1ONVVzj8Vjd4z9vdkQMfsv4h0tSllLqydvwMkm9XGZrsAIRiw7cjAetsIOGEqW+IYYLfaqpVmBfaI2QllWc5ExfP92zJ48MwrGFKT7Yl1p/Hcm9ojqA==
X-Forefront-Antispam-Report:
	CIP:4.158.2.129;CTRY:GB;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:outbound-uk1.az.dlp.m.darktrace.com;PTR:InfoDomainNonexistent;CAT:NONE;SFS:(13230040)(376014)(14060799003)(1800799024)(35042699022)(82310400026)(36860700016)(18002099003)(22082099003)(56012099003);DIR:OUT;SFP:1101;
X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1
X-MS-Exchange-AntiSpam-MessageData-0:
	zUDalQxNvJIkL2y03/Ejw4O5OMVVbezIKP1bSrESKFD5Opd+BrjQDVmdveuYInrjIa/EIGb6G7acgb9gVE5L+wmocluNeKXpsfZ97FIcMw7yPc71mLsb2CGRTIiXOedvQl8+jMRtU2C6RQ61rxmv1LDb+novdg1eymrwS1iILis2WeNXWePbUfWipjxX/5uQXaintvAWpaRuHe9Op41XiIsY8838zx3UtQjwYFptIS4peWZNx6rnzqeyFe7pqS8QZfvaQ6Yj/zI98gyyAc+sD1tDEpdW1Ho8k1JOfp6AmtxIRLSxl/yYwCICjqiC6UziN28PfE5GSa7nNuXfKJWAO/WCsWEZM/n5xk4RiY5jfCh0rvpeL2cVqj8cF2ApvYnW5WgT5gCXTAakqQOHE9m2eVMXQXuzsZz6iZIc6DbF25dn51UqDIGYNOTWWliPf+fm
X-OriginatorOrg: arm.com
X-MS-Exchange-CrossTenant-OriginalArrivalTime: 23 Apr 2026 10:28:02.0842
 (UTC)
X-MS-Exchange-CrossTenant-Network-Message-Id: 1db7b3a1-b0e2-429e-cb43-08dea122ff93
X-MS-Exchange-CrossTenant-Id: f34e5979-57d9-4aaa-ad4d-b122a662184d
X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=f34e5979-57d9-4aaa-ad4d-b122a662184d;Ip=[4.158.2.129];Helo=[outbound-uk1.az.dlp.m.darktrace.com]
X-MS-Exchange-CrossTenant-AuthSource:
	DB1PEPF000509E9.eurprd03.prod.outlook.com
X-MS-Exchange-CrossTenant-AuthAs: Anonymous
X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem
X-MS-Exchange-Transport-CrossTenantHeadersStamped: DU0PR08MB9418
X-purgate-ID: tlsNG-ebf023/1776940088-2A7613FF-70450AB0/0/0
X-purgate-type: clean
X-purgate-size: 8150

SGkgSmVucywNCg0KPiBPbiAyMyBBcHIgMjAyNiwgYXQgMTE6NDksIEplbnMgV2lrbGFuZGVyIDxq
ZW5zLndpa2xhbmRlckBsaW5hcm8ub3JnPiB3cm90ZToNCj4gDQo+IEhpIEJlcnRyYW5kLA0KPiAN
Cj4gT24gVGh1LCBBcHIgMjMsIDIwMjYgYXQgOTozMOKAr0FNIEJlcnRyYW5kIE1hcnF1aXMNCj4g
PEJlcnRyYW5kLk1hcnF1aXNAYXJtLmNvbT4gd3JvdGU6DQo+PiANCj4+IEhpIEplbnMsDQo+PiAN
Cj4+IFRoYW5rcyBhIGxvdCBmb3IgdGhlIHJldmlldy4NCj4+IA0KPj4+IE9uIDIyIEFwciAyMDI2
LCBhdCAxMTozNCwgSmVucyBXaWtsYW5kZXIgPGplbnMud2lrbGFuZGVyQGxpbmFyby5vcmc+IHdy
b3RlOg0KPj4+IA0KPj4+IEhpIEJlcnRyYW5kLA0KPj4+IA0KPj4+IE9uIEZyaSwgQXByIDE3LCAy
MDI2IGF0IDM6NDHigK9QTSBCZXJ0cmFuZCBNYXJxdWlzDQo+Pj4gPGJlcnRyYW5kLm1hcnF1aXNA
YXJtLmNvbT4gd3JvdGU6DQo+Pj4+IA0KPj4+PiBIeXBlcnZpc29yIG5vdGlmaWNhdGlvbnMgYXJl
IGN1cnJlbnRseSB0cmFja2VkIHdpdGggYSBkZWRpY2F0ZWQNCj4+Pj4gYnVmZl9mdWxsX3BlbmRp
bmcgYm9vbGVhbi4gVGhhdCBzdGF0ZSBvbmx5IHJlcHJlc2VudHMgYSBzaW5nbGUgSFlQDQo+Pj4+
IG5vdGlmaWNhdGlvbiBiaXQgYW5kIGtlZXBzIEhZUCBiaXRtYXAgaGFuZGxpbmcgdGllZCB0byBz
aW5nbGUtcHVycG9zZQ0KPj4+PiBib29ra2VlcGluZy4NCj4+Pj4gDQo+Pj4+IFJlcGxhY2UgdGhl
IGJvb2xlYW4gd2l0aCBhIGh5cGVydmlzb3Igbm90aWZpY2F0aW9uIGJpdG1hcCBwcm90ZWN0ZWQg
YnkNCj4+Pj4gbm90aWZfbG9jay4gSU5GT19HRVQgcmVwb3J0cyBwZW5kaW5nIHdoZW4gdGhlIGJp
dG1hcCBpcyBub24temVybywgR0VUDQo+Pj4+IHJldHVybnMgYW5kIGNsZWFycyB0aGUgSFlQIGJp
dG1hcCB1bmRlciB0aGUgbG9jaywgYW5kIFJYLWJ1ZmZlci1mdWxsDQo+Pj4+IHNldHMgRkZBX05P
VElGX1JYX0JVRkZFUl9GVUxMIGluIHRoZSBiaXRtYXAgaW5zdGVhZCBvZiB1cGRhdGluZw0KPj4+
PiBzZXBhcmF0ZSBzdGF0ZS4NCj4+Pj4gDQo+Pj4+IEluaXRpYWxpemUgYW5kIGNsZWFyIHRoZSBi
aXRtYXAgZHVyaW5nIGRvbWFpbiBsaWZlY3ljbGUgaGFuZGxpbmcsIGFuZA0KPj4+PiB1c2UgY3R4
LT5mZmFfaWQgZm9yIGJpdG1hcCBjcmVhdGUgYW5kIGRlc3Ryb3kgc28gdGhlIG5vdGlmaWNhdGlv
biBzdGF0ZQ0KPj4+PiBzdGF5cyB0aWVkIHRvIHRoZSBjYWNoZWQgRkYtQSBlbmRwb2ludCBJRC4N
Cj4+Pj4gDQo+Pj4+IE5vIGZ1bmN0aW9uYWwgY2hhbmdlcy4NCj4+Pj4gDQo+Pj4+IFNpZ25lZC1v
ZmYtYnk6IEJlcnRyYW5kIE1hcnF1aXMgPGJlcnRyYW5kLm1hcnF1aXNAYXJtLmNvbT4NCj4+Pj4g
LS0tDQo+Pj4+IHhlbi9hcmNoL2FybS90ZWUvZmZhX25vdGlmLmMgICB8IDQ2ICsrKysrKysrKysr
KysrKysrKysrKysrKysrLS0tLS0tLS0NCj4+Pj4geGVuL2FyY2gvYXJtL3RlZS9mZmFfcHJpdmF0
ZS5oIHwgIDkgKysrKystLQ0KPj4+PiAyIGZpbGVzIGNoYW5nZWQsIDQzIGluc2VydGlvbnMoKyks
IDEyIGRlbGV0aW9ucygtKQ0KPj4+PiANCj4+Pj4gZGlmZiAtLWdpdCBhL3hlbi9hcmNoL2FybS90
ZWUvZmZhX25vdGlmLmMgYi94ZW4vYXJjaC9hcm0vdGVlL2ZmYV9ub3RpZi5jDQo+Pj4+IGluZGV4
IDA3YmM1Y2IzYTQzMC4uZDE1MTE5NDA5YTI1IDEwMDY0NA0KPj4+PiAtLS0gYS94ZW4vYXJjaC9h
cm0vdGVlL2ZmYV9ub3RpZi5jDQo+Pj4+ICsrKyBiL3hlbi9hcmNoL2FybS90ZWUvZmZhX25vdGlm
LmMNCj4+Pj4gQEAgLTk0LDggKzk0LDE1IEBAIHZvaWQgZmZhX2hhbmRsZV9ub3RpZmljYXRpb25f
aW5mb19nZXQoc3RydWN0IGNwdV91c2VyX3JlZ3MgKnJlZ3MpDQo+Pj4+IA0KPj4+PiAgICBub3Rp
Zl9wZW5kaW5nID0gdGVzdF9hbmRfY2xlYXJfYm9vbChjdHgtPm5vdGlmLnNlY3VyZV9wZW5kaW5n
KTsNCj4+Pj4gICAgaWYgKCBJU19FTkFCTEVEKENPTkZJR19GRkFfVk1fVE9fVk0pICkNCj4+Pj4g
KyAgICB7DQo+Pj4+ICAgICAgICBub3RpZl9wZW5kaW5nIHw9IHRlc3RfYW5kX2NsZWFyX2Jvb2wo
Y3R4LT5ub3RpZi52bV9wZW5kaW5nKTsNCj4+Pj4gDQo+Pj4+ICsgICAgICAgIHNwaW5fbG9jaygm
Y3R4LT5ub3RpZi5ub3RpZl9sb2NrKTsNCj4+Pj4gKyAgICAgICAgaWYgKCBjdHgtPm5vdGlmLmh5
cF9wZW5kaW5nICkNCj4+Pj4gKyAgICAgICAgICAgIG5vdGlmX3BlbmRpbmcgPSB0cnVlOw0KPj4+
PiArICAgICAgICBzcGluX3VubG9jaygmY3R4LT5ub3RpZi5ub3RpZl9sb2NrKTsNCj4+PiANCj4+
PiBJc24ndCB0aGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2U/IEJlZm9yZSB0aGlzIHBhdGNoLCB3ZSBk
aWRuJ3QgY29uc2lkZXINCj4+PiBjdHgtPm5vdGlmLmJ1ZmZfZnVsbF9wZW5kaW5nIGhlcmUuIEFt
IEkgbWlzc2luZyBzb21ldGhpbmc/DQo+PiANCj4+IFdlIGRpZCBjb25zaWRlciBpdCBpbXBsaWNp
dGx5IHRocm91Z2ggdm1fcGVuZGluZy4NCj4+IA0KPj4gVGhpcyBwYXRjaCBtYWtlcyB0aGF0IGNs
ZWFuZXIgYnkgdXNpbmcgaHlwX3BlbmRpbmcgZm9yIHRoZSBIeXBlcnZpc29yDQo+PiBmcmFtZXdv
cmsgbm90aWZpY2F0aW9uIGl0c2VsZi4gUHJldmlvdXNseSwgUlgtYnVmZmVyLWZ1bGwgd2FzIG1h
ZGUgdmlzaWJsZQ0KPj4gaW5kaXJlY3RseSB2aWEgdm1fcGVuZGluZywgYW5kIEZGQV9OT1RJRklD
QVRJT05fSU5GT19HRVQNCj4+IGNsZWFyZWQgdGhhdCBzdW1tYXJ5IHN0YXRlLg0KPj4gDQo+PiBB
cyBhIHJlc3VsdCwgdGhlIGd1ZXN0LXZpc2libGUgcGVuZGluZyBpbmRpY2F0aW9uIGNvdWxkIGJl
IGxvc3QgYmVmb3JlDQo+PiB0aGUgSHlwZXJ2aXNvciBub3RpZmljYXRpb24gd2FzIGFjdHVhbGx5
IHJldHJpZXZlZCB3aXRoDQo+PiBGRkFfTk9USUZJQ0FUSU9OX0dFVC4NCj4+IA0KPj4gV2l0aCB0
aGlzIGNoYW5nZSwgdGhlIHBlbmRpbmcgc3RhdGUgaXMgdHJhY2tlZCBpbiBoeXBfcGVuZGluZyBh
bmQgaXMgb25seQ0KPj4gY2xlYXJlZCB3aGVuIHRoZSBIeXBlcnZpc29yIG5vdGlmaWNhdGlvbnMg
YXJlIHJldHJpZXZlZCB0aHJvdWdoDQo+PiBGRkFfTk9USUZJQ0FUSU9OX0dFVC4NCj4+IA0KPj4g
SSB3aWxsIHJld29yZCB0aGUgY29tbWl0IG1lc3NhZ2UgdG8gbWFrZSB0aGF0IGNsZWFyZXIuDQo+
IA0KPiBUaGFua3MNCj4gDQo+PiANCj4+PiANCj4+Pj4gKyAgICB9DQo+Pj4+ICsNCj4+Pj4gICAg
aWYgKCBub3RpZl9wZW5kaW5nICkNCj4+Pj4gICAgew0KPj4+PiAgICAgICAgLyogQSBwZW5kaW5n
IGdsb2JhbCBub3RpZmljYXRpb24gZm9yIHRoZSBndWVzdCAqLw0KPj4+PiBAQCAtMTc0LDEyICsx
ODEsMTcgQEAgdm9pZCBmZmFfaGFuZGxlX25vdGlmaWNhdGlvbl9nZXQoc3RydWN0IGNwdV91c2Vy
X3JlZ3MgKnJlZ3MpDQo+Pj4+ICAgICAgICAgICAgdzYgPSByZXNwLmE2Ow0KPj4+PiAgICB9DQo+
Pj4+IA0KPj4+PiAtICAgIGlmICggSVNfRU5BQkxFRChDT05GSUdfRkZBX1ZNX1RPX1ZNKSAmJg0K
Pj4+PiAtICAgICAgICAgIGZsYWdzICYgRkZBX05PVElGX0ZMQUdfQklUTUFQX0hZUCAmJg0KPj4+
PiAtICAgICAgICAgIHRlc3RfYW5kX2NsZWFyX2Jvb2woY3R4LT5ub3RpZi5idWZmX2Z1bGxfcGVu
ZGluZykgKQ0KPj4+PiArICAgIGlmICggSVNfRU5BQkxFRChDT05GSUdfRkZBX1ZNX1RPX1ZNKSAp
DQo+Pj4+ICAgIHsNCj4+Pj4gLSAgICAgICAgQUNDRVNTX09OQ0UoY3R4LT5ub3RpZi52bV9wZW5k
aW5nKSA9IGZhbHNlOw0KPj4+PiAtICAgICAgICB3NyA9IEZGQV9OT1RJRl9SWF9CVUZGRVJfRlVM
TDsNCj4+Pj4gKyAgICAgICAgc3Bpbl9sb2NrKCZjdHgtPm5vdGlmLm5vdGlmX2xvY2spOw0KPj4+
PiArDQo+Pj4+ICsgICAgICAgIGlmICggKGZsYWdzICYgRkZBX05PVElGX0ZMQUdfQklUTUFQX0hZ
UCkgJiYgY3R4LT5ub3RpZi5oeXBfcGVuZGluZyApDQo+Pj4+ICsgICAgICAgIHsNCj4+Pj4gKyAg
ICAgICAgICAgIHc3ID0gY3R4LT5ub3RpZi5oeXBfcGVuZGluZzsNCj4+Pj4gKyAgICAgICAgICAg
IGN0eC0+bm90aWYuaHlwX3BlbmRpbmcgPSAwOw0KPj4+PiArICAgICAgICB9DQo+Pj4+ICsNCj4+
Pj4gKyAgICAgICAgc3Bpbl91bmxvY2soJmN0eC0+bm90aWYubm90aWZfbG9jayk7DQo+Pj4+ICAg
IH0NCj4+Pj4gDQo+Pj4+ICAgIGZmYV9zZXRfcmVncyhyZWdzLCBGRkFfU1VDQ0VTU18zMiwgMCwg
dzIsIHczLCB3NCwgdzUsIHc2LCB3Nyk7DQo+Pj4+IEBAIC0yMDcsMTIgKzIxOSwxNyBAQCBpbnQz
Ml90IGZmYV9oYW5kbGVfbm90aWZpY2F0aW9uX3NldChzdHJ1Y3QgY3B1X3VzZXJfcmVncyAqcmVn
cykNCj4+Pj4gdm9pZCBmZmFfcmFpc2VfcnhfYnVmZmVyX2Z1bGwoc3RydWN0IGRvbWFpbiAqZCkN
Cj4+Pj4gew0KPj4+PiAgICBzdHJ1Y3QgZmZhX2N0eCAqY3R4ID0gZC0+YXJjaC50ZWU7DQo+Pj4+
ICsgICAgdWludDMyX3QgcHJldl9iaXRtYXA7DQo+Pj4+IA0KPj4+PiAgICBpZiAoICFjdHggKQ0K
Pj4+PiAgICAgICAgcmV0dXJuOw0KPj4+PiANCj4+Pj4gLSAgICBBQ0NFU1NfT05DRShjdHgtPm5v
dGlmLmJ1ZmZfZnVsbF9wZW5kaW5nKSA9IHRydWU7DQo+Pj4+IC0gICAgaWYgKCAhdGVzdF9hbmRf
c2V0X2Jvb2woY3R4LT5ub3RpZi52bV9wZW5kaW5nKSApDQo+Pj4+ICsgICAgc3Bpbl9sb2NrKCZj
dHgtPm5vdGlmLm5vdGlmX2xvY2spOw0KPj4+PiArICAgIHByZXZfYml0bWFwID0gY3R4LT5ub3Rp
Zi5oeXBfcGVuZGluZzsNCj4+Pj4gKyAgICBjdHgtPm5vdGlmLmh5cF9wZW5kaW5nIHw9IEZGQV9O
T1RJRl9SWF9CVUZGRVJfRlVMTDsNCj4+Pj4gKyAgICBzcGluX3VubG9jaygmY3R4LT5ub3RpZi5u
b3RpZl9sb2NrKTsNCj4+Pj4gKw0KPj4+PiArICAgIGlmICggIShwcmV2X2JpdG1hcCAmIEZGQV9O
T1RJRl9SWF9CVUZGRVJfRlVMTCkgKQ0KPj4+IA0KPj4+IERvIHdlIG5lZWQgdG8gY2hlY2sgZm9y
IEZGQV9OT1RJRl9SWF9CVUZGRVJfRlVMTD8gSXNuJ3QgIXByZXZfYml0bWFwDQo+Pj4gbW9yZSBh
Y2N1cmF0ZSwgaWYgYW55IG90aGVyIGJpdCB3b3VsZCBldmVyIGJlIHVzZWQgaW4gdGhlIGJpdG1h
cD8NCj4+IA0KPj4gIEkgd291bGQga2VlcCB0aGUgYml0LXNwZWNpZmljIGNoZWNrIGhlcmUsIGlm
IHRoYXQgaXMgT0sgd2l0aCB5b3UuDQo+PiANCj4+IFRoaXMgZnVuY3Rpb24gaXMgYWJvdXQgcmFp
c2luZyB0aGUgUlggYnVmZmVyIGZ1bGwgbm90aWZpY2F0aW9uLA0KPj4gc28gSSB0aGluayBpdCBp
cyBjbGVhcmVyIHRvIGNoZWNrIHdoZXRoZXIgdGhhdCBiaXQgd2FzIG5ld2x5DQo+PiBwZW5kZWQg
cmF0aGVyIHRoYW4gd2hldGhlciB0aGUgd2hvbGUgSHlwZXJ2aXNvciBiaXRtYXANCj4+IHdhcyBw
cmV2aW91c2x5IGVtcHR5Lg0KPj4gDQo+PiBVc2luZyAhcHJldl9iaXRtYXAgd291bGQgYWxzbyBt
YWtlIHRoZSBjb25kaXRpb24gZGVwZW5kIG9uDQo+PiB1bnJlbGF0ZWQgSHlwZXJ2aXNvciBub3Rp
ZmljYXRpb25zIGJlaW5nIHBlbmRpbmcuDQo+PiANCj4+IFRlbGwgbWUgaWYgeW91IGFyZSBvayB3
aXRoIHRoYXQuDQo+IA0KPiBJIHNlZSB5b3VyIHBvaW50LCBpdCdzIGZpbmUuDQoNCkluIGZhY3Qg
d2hpbGUgd29ya2luZyBvbiB0aGlzIGkgZW5kZWQgdXAgaW4gc29tZXRoaW5nIGEgYml0IG1vcmUg
Z2VuZXJpYw0KZHVlIHRvIHlvdXIgcGF0Y2ggNiBmaW5kaW5ncyBhbmQgYXQgdGhlIGVuZCBpIGRv
IG5vdCByYWlzZSBkZXBlbmRpbmcgb24NCnByZXZfYml0bWFwIGFueW1vcmUgYnV0IGp1c3Qgb24g
aWYgYSBub3RpZmljYXRpb24gd2FzIHJhaXNlZCBhbHJlYWR5IG9yDQpub3Qgc2luY2Ugc29tZXRo
aW5nIHdhcyBjaGFuZ2VkIHdoaWNoIGRvZXMgbm90IGRlcGVuZCBvbiBoeXBfcGVuZGluZw0KYW55
bW9yZS4NCg0KSSBhbSB3b3JraW5nIG9uIHYyLCBtaWdodCBiZSBtb3JlIGNsZWFyIHRoZW4gOi0p
DQoNCkNoZWVycw0KQmVydHJhbmQNCg0KPiANCj4gQ2hlZXJzLA0KPiBKZW5zDQo+IA0KPj4gDQo+
PiBDaGVlcnMNCj4+IEJlcnRyYW5kDQoNCg0K


From xen-devel-bounces@lists.xenproject.org Thu Apr 23 11:21:17 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 23 Apr 2026 11:21:17 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1291945.1570654 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wFs7E-00033r-2E; Thu, 23 Apr 2026 11:21:04 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1291945.1570654; Thu, 23 Apr 2026 11:21: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 1wFs7D-00033k-VP; Thu, 23 Apr 2026 11:21:03 +0000
Received: by outflank-mailman (input) for mailman id 1291945;
 Thu, 23 Apr 2026 11:21:02 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <jens.wiklander@linaro.org>) id 1wFs7C-00033e-De
 for xen-devel@lists.xenproject.org; Thu, 23 Apr 2026 11:21:02 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wFs7B-00AXcd-G1
 for xen-devel@lists.xenproject.org; Thu, 23 Apr 2026 13:21:01 +0200
Received: from [10.42.69.11] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <jens.wiklander@linaro.org>)
 id 69ea008f-2eae-0a2a0a5409dd-0a2a450bdc42-22
 for <xen-devel@lists.xenproject.org>; Thu, 23 Apr 2026 13:21:01 +0200
Received: from [209.85.161.52] (helo=mail-oo1-f52.google.com)
 by tlsNG-42698a.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.1)
 (envelope-from <jens.wiklander@linaro.org>)
 id 69ea009c-212f-0a2a450b0019-d155a134cc49-3
 for <xen-devel@lists.xenproject.org>; Thu, 23 Apr 2026 13:21:01 +0200
Received: by mail-oo1-f52.google.com with SMTP id
 006d021491bc7-673ee2a98b1so3621658eaf.0
 for <xen-devel@lists.xenproject.org>; Thu, 23 Apr 2026 04:21:00 -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=google header.d=linaro.org header.i="@linaro.org" header.h="Content-Transfer-Encoding:Cc:To:Subject:Message-ID:Date:From:In-Reply-To:References:MIME-Version"
ARC-Seal: i=1; a=rsa-sha256; t=1776943259; cv=none;
        d=google.com; s=arc-20240605;
        b=CsV7KVb7oAO0+8YeWQBNH7eRG0EG54CNOvYlfexsUelvzeaHJHB176156/5XeQiGc0
         txUGwEtHCFlCbe0ESZswny34d1wQoxEP5BSi9NdbG/7JXxAmcfjRTkrEIGPNB+k1SQ1p
         gsmkbyQL6BlX6K2GLuoflZEpYcd9IuY4VGyFfwDZ5kFoubuP004gTyu7sqrw91d4ob5W
         kXdkBXV9rBVy2BCqy+2YxKHiA+MrRHmAFP/0EjKsA9BI/rFGbuOVpgO0T+00bijGH6tK
         gH5nmTNaLzTS4kyJsrh9wniJtiWNr/3lcNdtsFP47T7h+vdwiZthne/8X4UCN67pxkVt
         /Quw==
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20240605;
        h=content-transfer-encoding:cc:to:subject:message-id:date:from
         :in-reply-to:references:mime-version:dkim-signature;
        bh=0QDXMTjcM4sp3IomM8jvKgkOHnQ+tAa7gG7azNTIOvk=;
        fh=wB0f5JGUSpWYejuxtnrl8SDqvqyWrEsEaWvC32LbdiU=;
        b=iB8HBLit6lwx4AjOnlyunlB0sGZG50rFQc1Zh5s9qmtMPXLrO8KQH5iOvujEhV8Jyn
         HSRRLqqcVL4lfyJMwOMGecPVYnL2VLmWm0GRTQpGd11TQ4COK7MA3Zrr2tQAEu5YG4Z0
         QPIpfkGEpBQ77jh90L3oEGBFT2LU+IroTCZKvH2GsPEUFCYRD+U4AuBQ9Xcuiu/5Clcj
         HLSwahsvXGTKzv7gokul+5psp3YKDMfv6J92eDvMSLfgdXU2FWFKQema/AckZLO48O6r
         iN58JfP5BlrPnMC3fdLCQ8xgRPMdadoUeJUU3TMjgK3Lmms8ZA5lTIw88QLTrLaumPgy
         XYsw==;
        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=linaro.org; s=google; t=1776943259; x=1777548059; darn=lists.xenproject.org;
        h=content-transfer-encoding:cc:to:subject:message-id:date:from
         :in-reply-to:references:mime-version:from:to:cc:subject:date
         :message-id:reply-to;
        bh=0QDXMTjcM4sp3IomM8jvKgkOHnQ+tAa7gG7azNTIOvk=;
        b=tiq8cQH00wqazfneXjDmEJIaGshXgk79u5fU24hJf7soyeZH8CASZluYEupvMphGxr
         sw5WC3KV0NNiB3fkWUfWHkoF2/OjVFWGSwnykFzmFyyfdqR5K5F14SungV9ef6ettxoG
         SPpues60zrCGMZMpTBVXO7Akv1vcTSfLeJi74HL7E1VjAmGfSLbPmBhiT4hrRU/KmSdT
         bMPVc4YsYF2RIgxNIcUHeVMLV7Rxw4mJ5eCCislgPtbn8P1A7xpvVtjT4lN5ou9UGmFN
         ZIe8TPv4ZVfSWwla7LyhCfTLcph2UWXNMMPLAozRAzDMVDBf1IbeRHVZixwkJiio6e65
         q01Q==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20251104; t=1776943259; x=1777548059;
        h=content-transfer-encoding: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;
        bh=0QDXMTjcM4sp3IomM8jvKgkOHnQ+tAa7gG7azNTIOvk=;
        b=OjbH6GozoUfO2xIUKQRvenyNr5tDfFXvwOsopBGSiBFw8bsjSZ2TMvu9bV4MX5/vB3
         GotZzTi+xyR0nUn1ku0xtNMxE5jtZVeL/RyYtilO00q8PEcnDI/qp6qztCSHLFWTx6gK
         kSkJU+rmOvlnrBjedJ9xAKHBkgbuRI9fcjY7shgfQRoOKyn3Up1gTmy86dEw7e8wy3fO
         RtK3d34PIfQSQPkYHIfInJfi9rQHNfaL+NzbCUe0MBKIFQX6AkOSq9u+pYC7QEtO8zW3
         yfZNaYRHwluEunrK5/MU8KIRPVtF0DVAKz2XEhnRFdVXpUd0mA799fRR64oQbPPg7SEn
         uBNA==
X-Gm-Message-State: AOJu0YyzOZlfZYq//L2MIv1PlnqmfGORNAEtvtEwUJFoOrUUkN0ZlXID
	Y0a8CM43Is/Qvi14+Q5dpvY5EtaETaeB+JwbmhIq/1NvP7bDN9f1q05TN4tA84djc+kzszdAhH+
	bUyIblkts6kOYnWz8zJBNbq7mxQrLxwzq3x+DeyfQGw==
X-Gm-Gg: AeBDiettrdNbzCaEp/jp4f82e0xQBjKqhGNwZYnh53PRE1yU/jJsvkHtLw2Mt0LGV9y
	cb8u/mZ8So7KDNRzUh78RClznQjoThXua7kttI2jU4BhbTUOsmB95ACLd5ubLr35p6t3G5KqUVJ
	oWxXANI6I/9M5v7cze7m+HwTtcW2f7eIWE/e1ZhPXWBsPq89iIDvF5UkFygxvPsCwQkfyX4vlsp
	UoSFR92PCVHlksJ2ad2dt5NCh6rtpWJ/6yxABpdgGFhqlm5wV8w0ot74Cz/ULndKcttlVu9CN6E
	2FfoHhzk4Oi9KmEAaNyl3gMkRiRvE4/d1jvITDyzJIijS7ADr4PkhKGo+Go=
X-Received: by 2002:a05:6820:160c:b0:696:1413:496a with SMTP id
 006d021491bc7-69614134ab7mr2707120eaf.17.1776943259378; Thu, 23 Apr 2026
 04:20:59 -0700 (PDT)
MIME-Version: 1.0
References: <cover.1776266307.git.bertrand.marquis@arm.com>
 <e85d0ef9733f091e09f520c2e0598f13cb7af06a.1776266307.git.bertrand.marquis@arm.com>
 <CAHUa44GbUQRfFzBqpAX94FSioYzT9tx5oP7C8fOvnWmMTV4-SQ@mail.gmail.com> <263B26DA-15D5-43A6-90D8-AA42AF8C391B@arm.com>
In-Reply-To: <263B26DA-15D5-43A6-90D8-AA42AF8C391B@arm.com>
From: Jens Wiklander <jens.wiklander@linaro.org>
Date: Thu, 23 Apr 2026 13:20:48 +0200
X-Gm-Features: AQROBzCa-RtBTHXQqjokdyCc5gBlsx7zks-BOcWWP7X4as4jQ1SAxO4LuMKKhLs
Message-ID: <CAHUa44H9u83GAoH33pq32oNK8uXB3q5JaSxtRqrKAoVG8ia+BQ@mail.gmail.com>
Subject: Re: [PATCH 6/6] xen/arm: ffa: Deliver VM-to-VM notifications locally
To: Bertrand Marquis <Bertrand.Marquis@arm.com>
Cc: "xen-devel@lists.xenproject.org" <xen-devel@lists.xenproject.org>, 
	Volodymyr Babchuk <volodymyr_babchuk@epam.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-42698a/1776943261-06772F3B-06E98B4A/0/0
X-purgate-type: clean
X-purgate-size: 9436

Hi Bertrand,

On Thu, Apr 23, 2026 at 10:17=E2=80=AFAM Bertrand Marquis
<Bertrand.Marquis@arm.com> wrote:
>
> Hi Jens,
>
> > On 22 Apr 2026, at 16:04, Jens Wiklander <jens.wiklander@linaro.org> wr=
ote:
> >
> > Hi Bertrand,
> >
> > On Fri, Apr 17, 2026 at 3:41=E2=80=AFPM Bertrand Marquis
> > <bertrand.marquis@arm.com> wrote:
> >>
> >> VM notification binding and pending tracking exist for non-secure
> >> endpoints, but FFA_NOTIFICATION_SET still only forwards secure
> >> destinations to the SPMC. Non-secure VMs therefore cannot receive
> >> notifications from other VMs. Local NPI delivery also needs explicit
> >> re-arm tracking so repeated raises are not lost while the interrupt is
> >> already pending.
> >>
> >> Add a local VM notification delivery path for non-secure destinations.
> >> notification_set_vm() resolves the destination endpoint, verifies that
> >> every requested bit is bound to the sender, sets the receiver's
> >> vm_pending bitmap under notif_lock, and raises an NPI only when the
> >> receiver transitions from no local pending notifications to some.
> >>
> >> Track whether a local NPI is already armed with notif_irq_raised, clea=
r
> >> that state once both VM and hypervisor pending bitmaps are drained, an=
d
> >> roll back newly-added VM pending bits if no destination vCPU is online=
.
> >> Also expose firmware notification availability so FFA_FEATURES only
> >> advertises notification support when it is actually provided by the
> >> firmware or by CONFIG_FFA_VM_TO_VM.
> >>
> >> Functional impact: when CONFIG_FFA_VM_TO_VM is enabled, non-secure
> >> FFA_NOTIFICATION_SET delivers VM-to-VM notifications locally and keeps
> >> NPI delivery reliable across repeated raises.
> >>
> >> Signed-off-by: Bertrand Marquis <bertrand.marquis@arm.com>
> >> ---
> >> xen/arch/arm/tee/ffa.c         |  24 +++++--
> >> xen/arch/arm/tee/ffa_notif.c   | 126 +++++++++++++++++++++++++++++++--
> >> xen/arch/arm/tee/ffa_private.h |  11 ++-
> >> 3 files changed, 147 insertions(+), 14 deletions(-)
> >>
> >> diff --git a/xen/arch/arm/tee/ffa.c b/xen/arch/arm/tee/ffa.c
> >> index 1fe33f26454a..7fe021049cba 100644
> >> --- a/xen/arch/arm/tee/ffa.c
> >> +++ b/xen/arch/arm/tee/ffa.c
> >> @@ -39,8 +39,13 @@
> >>  * o FFA_MSG_SEND_DIRECT_REQ:
> >>  *   - only supported from a VM to an SP
> >>  * o FFA_NOTIFICATION_*:
> >> + *   - only supported when firmware notifications are enabled or VM-t=
o-VM
> >> + *     support is built in
> >>  *   - only supports global notifications, that is, per vCPU notificat=
ions
> >> - *     are not supported
> >> + *     are not supported and secure per-vCPU notification information=
 is
> >> + *     not forwarded
> >> + *   - the source endpoint ID reported for a notification may no long=
er
> >> + *     exist by the time the receiver consumes it
> >>  *   - doesn't support signalling the secondary scheduler of pending
> >>  *     notification for secure partitions
> >>  *   - doesn't support notifications for Xen itself
> >> @@ -245,6 +250,8 @@ static void handle_features(struct cpu_user_regs *=
regs)
> >>     uint32_t a1 =3D get_user_reg(regs, 1);
> >>     struct domain *d =3D current->domain;
> >>     struct ffa_ctx *ctx =3D d->arch.tee;
> >> +    bool notif_supported =3D IS_ENABLED(CONFIG_FFA_VM_TO_VM) ||
> >> +                           ffa_notif_fw_enabled();
> >>
> >>     /*
> >>      * FFA_FEATURES defines w2 as input properties only for specific
> >> @@ -343,10 +350,16 @@ static void handle_features(struct cpu_user_regs=
 *regs)
> >>
> >>         break;
> >>     case FFA_FEATURE_NOTIF_PEND_INTR:
> >> -        ffa_set_regs_success(regs, GUEST_FFA_NOTIF_PEND_INTR_ID, 0);
> >> +        if ( notif_supported )
> >> +            ffa_set_regs_success(regs, GUEST_FFA_NOTIF_PEND_INTR_ID, =
0);
> >> +        else
> >> +            ffa_set_regs_error(regs, FFA_RET_NOT_SUPPORTED);
> >>         break;
> >>     case FFA_FEATURE_SCHEDULE_RECV_INTR:
> >> -        ffa_set_regs_success(regs, GUEST_FFA_SCHEDULE_RECV_INTR_ID, 0=
);
> >> +        if ( notif_supported )
> >> +            ffa_set_regs_success(regs, GUEST_FFA_SCHEDULE_RECV_INTR_I=
D, 0);
> >> +        else
> >> +            ffa_set_regs_error(regs, FFA_RET_NOT_SUPPORTED);
> >>         break;
> >>     case FFA_PARTITION_INFO_GET_REGS:
> >>         if ( ACCESS_ONCE(ctx->guest_vers) >=3D FFA_VERSION_1_2 )
> >> @@ -361,7 +374,10 @@ static void handle_features(struct cpu_user_regs =
*regs)
> >>     case FFA_NOTIFICATION_SET:
> >>     case FFA_NOTIFICATION_INFO_GET_32:
> >>     case FFA_NOTIFICATION_INFO_GET_64:
> >> -        ffa_set_regs_success(regs, 0, 0);
> >> +        if ( notif_supported )
> >> +            ffa_set_regs_success(regs, 0, 0);
> >> +        else
> >> +            ffa_set_regs_error(regs, FFA_RET_NOT_SUPPORTED);
> >>         break;
> >>     default:
> >>         ffa_set_regs_error(regs, FFA_RET_NOT_SUPPORTED);
> >> diff --git a/xen/arch/arm/tee/ffa_notif.c b/xen/arch/arm/tee/ffa_notif=
.c
> >> index 4def701f0130..e77321244926 100644
> >> --- a/xen/arch/arm/tee/ffa_notif.c
> >> +++ b/xen/arch/arm/tee/ffa_notif.c
> >> @@ -20,7 +20,12 @@ static bool __ro_after_init fw_notif_enabled;
> >> static unsigned int __ro_after_init notif_sri_irq;
> >> static DEFINE_SPINLOCK(notif_info_lock);
> >>
> >> -static void inject_notif_pending(struct domain *d)
> >> +bool ffa_notif_fw_enabled(void)
> >> +{
> >> +    return fw_notif_enabled;
> >> +}
> >> +
> >> +static bool inject_notif_pending(struct domain *d)
> >> {
> >>     struct vcpu *v;
> >>
> >> @@ -34,13 +39,15 @@ static void inject_notif_pending(struct domain *d)
> >>         if ( is_vcpu_online(v) )
> >>         {
> >>             vgic_inject_irq(d, v, GUEST_FFA_NOTIF_PEND_INTR_ID, true);
> >> -            return;
> >> +            return true;
> >>         }
> >>     }
> >>
> >>     if ( printk_ratelimit() )
> >>         printk(XENLOG_G_DEBUG "%pd: ffa: can't inject NPI, all vCPUs o=
ffline\n",
> >>                d);
> >> +
> >> +    return false;
> >> }
> >>
> >> static int32_t ffa_notif_parse_params(uint16_t dom_id, uint16_t caller=
_id,
> >> @@ -104,6 +111,73 @@ out_unlock:
> >>     return ret;
> >> }
> >>
> >> +/*
> >> + * Deliver a VM-to-VM notification. ctx->notif.notif_lock protects
> >> + * vm_bind/vm_pending so callers must not hold it already.
> >> + */
> >> +static int32_t notification_set_vm(uint16_t dst_id, uint16_t src_id,
> >> +                                   uint32_t flags, uint64_t bitmap)
> >> +{
> >> +    struct domain *dst_d;
> >> +    struct ffa_ctx *dst_ctx;
> >> +    unsigned int id;
> >> +    int32_t ret;
> >> +    uint64_t prev_bitmap =3D 0;
> >> +    uint64_t new_bitmap;
> >> +    bool inject =3D false;
> >> +
> >> +    if ( flags )
> >> +        return FFA_RET_INVALID_PARAMETERS;
> >> +
> >> +    ret =3D ffa_endpoint_domain_lookup(dst_id, &dst_d, &dst_ctx);
> >> +    if ( ret )
> >> +        return ret;
> >> +
> >> +    ret =3D FFA_RET_OK;
> >> +
> >> +    spin_lock(&dst_ctx->notif.notif_lock);
> >> +
> >> +    for ( id =3D 0; id < FFA_NUM_VM_NOTIF; id++ )
> >> +    {
> >> +        if ( !(bitmap & BIT(id, ULL)) )
> >> +            continue;
> >> +
> >> +        if ( dst_ctx->notif.vm_bind[id] !=3D src_id )
> >> +        {
> >> +            ret =3D FFA_RET_DENIED;
> >> +            goto out_unlock;
> >> +        }
> >> +    }
> >> +
> >> +    prev_bitmap =3D dst_ctx->notif.vm_pending;
> >> +    dst_ctx->notif.vm_pending |=3D bitmap;
> >> +    if ( !dst_ctx->notif.notif_irq_raised &&
> >> +         (dst_ctx->notif.vm_pending || dst_ctx->notif.hyp_pending) )
> >> +    {
> >> +        dst_ctx->notif.notif_irq_raised =3D true;
> >> +        inject =3D true;
> >> +    }
> >> +
> >> +out_unlock:
> >> +    spin_unlock(&dst_ctx->notif.notif_lock);
> >> +
> >> +    new_bitmap =3D bitmap & ~prev_bitmap;
> >> +    if ( ret =3D=3D FFA_RET_OK && inject && new_bitmap &&
> >> +         !inject_notif_pending(dst_d) )
> >> +    {
> >> +        spin_lock(&dst_ctx->notif.notif_lock);
> >> +        dst_ctx->notif.vm_pending &=3D ~new_bitmap;
> >
> > There's a window above when dst_ctx->notif.notif_lock is unlocked.
> > What if another CPU has modified dst_ctx->notif.vm_pending during that
> > window?
>
> You are right, there is a race in that window. Thanks for the finding :-)
>
> I think the simplest fix is to keep notif_lock held across the injection
> attempt, so we do not expose partially updated notification state while t=
he
> interrupt delivery is still in progress.
>
> I do not think we should roll the pending bits back on injection failure,
> though. In practice the cases where we fail to inject are cases where the
> target cannot currently take the notification anyway, and dropping the
> pending state would be worse than keeping it pending and not marking the =
IRQ
> as raised.
>
> So my plan would be to keep the pending state, only mark notif_irq_raised
> when we actually inject, and keep the existing debug print for the cases =
we
> can detect.
>
> If that approach looks OK to you, I will update this patch accordingly.
>
> The same issue exists in patch 2 for the RX-buffer-full path, so I will f=
ix
> it there as well for the same reason.

Sounds good.

Cheers,
Jens


From xen-devel-bounces@lists.xenproject.org Thu Apr 23 11:29:22 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 23 Apr 2026 11:29:22 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1291960.1570664 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wFsFA-0004CU-S9; Thu, 23 Apr 2026 11:29:16 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1291960.1570664; Thu, 23 Apr 2026 11: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 1wFsFA-0004CN-OE; Thu, 23 Apr 2026 11:29:16 +0000
Received: by outflank-mailman (input) for mailman id 1291960;
 Thu, 23 Apr 2026 11:29:15 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <Luca.Fancellu@arm.com>) id 1wFsF9-0004CH-1u
 for xen-devel@lists.xenproject.org; Thu, 23 Apr 2026 11:29:15 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wFsF6-000x9f-Pa
 for xen-devel@lists.xenproject.org; Thu, 23 Apr 2026 13:29:14 +0200
Received: from [10.42.69.8] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <Luca.Fancellu@arm.com>)
 id 69ea0282-e002-0a2a0a5209dd-0a2a45089388-16
 for <xen-devel@lists.xenproject.org>; Thu, 23 Apr 2026 13:29:13 +0200
Received: from [40.107.162.47]
 (helo=PA4PR04CU001.outbound.protection.outlook.com)
 by tlsNG-c1860d.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.1)
 (envelope-from <Luca.Fancellu@arm.com>)
 id 69ea0288-63b5-0a2a45080019-286ba22f836c-3
 for <xen-devel@lists.xenproject.org>; Thu, 23 Apr 2026 13:29:13 +0200
Received: from DB9PR06CA0016.eurprd06.prod.outlook.com (2603:10a6:10:1db::21)
 by AM9PR08MB6020.eurprd08.prod.outlook.com (2603:10a6:20b:2d6::7)
 with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9846.21; Thu, 23 Apr
 2026 11:29:05 +0000
Received: from DU6PEPF00009525.eurprd02.prod.outlook.com
 (2603:10a6:10:1db:cafe::22) by DB9PR06CA0016.outlook.office365.com
 (2603:10a6:10:1db::21) with Microsoft SMTP Server (version=TLS1_3,
 cipher=TLS_AES_256_GCM_SHA384) id 15.20.9846.21 via Frontend Transport; Thu,
 23 Apr 2026 11:29:05 +0000
Received: from outbound-uk1.az.dlp.m.darktrace.com (4.158.2.129) by
 DU6PEPF00009525.mail.protection.outlook.com (10.167.8.6) with Microsoft SMTP
 Server (version=TLS1_3, cipher=TLS_AES_256_GCM_SHA384) id 15.20.9846.18 via
 Frontend Transport; Thu, 23 Apr 2026 11:29:05 +0000
Received: from AS8PR08MB7265.eurprd08.prod.outlook.com (2603:10a6:20b:420::10)
 by PR3PR08MB5578.eurprd08.prod.outlook.com (2603:10a6:102:83::20)
 with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9846.21; Thu, 23 Apr
 2026 11:28:03 +0000
Received: from AS8PR08MB7265.eurprd08.prod.outlook.com
 ([fe80::b001:5eea:7c3e:1a31]) by AS8PR08MB7265.eurprd08.prod.outlook.com
 ([fe80::b001:5eea:7c3e:1a31%6]) with mapi id 15.20.9846.016; Thu, 23 Apr 2026
 11:28: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=arm.com header.i="@arm.com" header.h="From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck"; dkim=pass header.s=selector1 header.d=arm.com header.i="@arm.com" header.h="From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck"
ARC-Seal: i=2; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=pass;
 b=KQu4JD2o7e8wFeIgLLL/g0K7f/Q662huqzChsTevvbfHzgeABNrjtp0qvTBln3QnJ0H4ZKtW1H79yGrPAA1e3l0heXQyOVlmtqS136hFyqbOK2HNCJal+dynLRH8wJggJek6GW4R8D7dd8NRejCp68R0pkEz7Av3UKLPs82VHJe1a5d5mE50wkazGT57GB5zS6Zb0dHD3B5nd5q1mY0Q7897jEiOfe/8ENCOHsTFtRC1OzB8yu2qx3EinKvXabfjvxiieiJJXuR38+OqQ+OvuGbZUcNUvhqD4vU15v2w9zsWQmK0h81RjWJUZ16WHWMPBdQK8ENQGyWraeqGy4On3Q==
ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com;
 s=arcselector10001;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1;
 bh=tcSl7NP8Q+YlLubtET/F9Jdo12hogf6+flRqwg2Rd4w=;
 b=wosHukrrXCgTLs53+GhSkqzRgLW5K83ZXfspV5/6Iox5fQKAwRmovybVzKDfcssqrXQYj5PdMGuz+oqHFS6snOzcONGieWRyRJ4urkurM3hQbqX2yueNYbKmlId73pVg2ByDBOrKyTaqupOHtSND/h1HRvroUUIhtLioKVi6G0CNJp4Yl+rSg4C1tFK1W+Vmv452/wwfQZr3cckYZ/ic3YGGNkMwf+gM3CH/0n3+gUulM+wZRt3T5UCoHxqLHlwWT+/+u4bIrR2OJ9GqFH0Mpjk+zB0Lr9ZkMOm9eMQMRdhSKe0/SwvTMFIp2rgH0VndSwehZ4IO+7cuds5LkRxNmw==
ARC-Authentication-Results: i=2; mx.microsoft.com 1; spf=pass (sender ip is
 4.158.2.129) smtp.rcpttodomain=gmail.com smtp.mailfrom=arm.com; dmarc=pass
 (p=none sp=none pct=100) action=none header.from=arm.com; dkim=pass
 (signature was verified) header.d=arm.com; arc=pass (0 oda=1 ltdi=1
 spf=[1,1,smtp.mailfrom=arm.com] dkim=[1,1,header.d=arm.com]
 dmarc=[1,1,header.from=arm.com])
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=arm.com; s=selector1;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck;
 bh=tcSl7NP8Q+YlLubtET/F9Jdo12hogf6+flRqwg2Rd4w=;
 b=Qqk/tITYEbyRUCBHjC5tDqApc0gvQ9KriIrE9WsVnyNLzvGJUnA1wAUW+Zk5SGPKdcro8jBgp9ve+rjAu5h1jbXF4SrPRiVJfg0JJY0afpQOFgG3PVBpGqIDrZ2tbVPFxubsdduZ9iHOjV7OR2XCV21C447p5IlUrOVfYvP8HlM=
X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 4.158.2.129)
 smtp.mailfrom=arm.com; dkim=pass (signature was verified)
 header.d=arm.com;dmarc=pass action=none header.from=arm.com;
Received-SPF: Pass (protection.outlook.com: domain of arm.com designates
 4.158.2.129 as permitted sender) receiver=protection.outlook.com;
 client-ip=4.158.2.129; helo=outbound-uk1.az.dlp.m.darktrace.com; pr=C
ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none;
 b=JBaYyqPjFJJuvFoHItx0MmTVV7e91xulJmeupVqTgMKGlaamGT2bmdxLOTLXef7GJx0Aj3tN72BcVqk42Zpu9yyqWgDf/YLJT4bH67HDugEhI2wBhoyeASJo9w/27UQdySo6moDWucMjMvKYA1K2+OpMpKHlOo2EKnfeI6QY6r6XRMcyoMUJcT5i8adaM/9Kv2lrpT5ZPlLVtGamf2qmAy29mE9eU4XHn3b3aoZ6zQJYpNpTi1efw1bfqt3SC/6aD4+aeCfJ/Yfn4H06KAyDLEbj84I+q9tKz2pLxTMmaZ8/yf1LEt4No8r8Pd1eDSuP5af1VgN0vo+vhdi3k139fg==
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com;
 s=arcselector10001;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1;
 bh=tcSl7NP8Q+YlLubtET/F9Jdo12hogf6+flRqwg2Rd4w=;
 b=FB41xvQWlnEgdXflhYs0p03Hv+aZq5Zxvz4H5wCJNv8IN+azLHqdVYkVlnFAdBm7WVgjcX1w3SLL9/09/bC0yyQRac97V3FmJ/SP0hnNCiyN+Ux49SDHZ1ZtDy3Y8kpeVaGCssRA33nNG/U0j5qKiXFInCwJxxFv2g49pL+bnM8ExTPrlGSJIqGMXpFvbbZZ5qDIrpTgzckvT5x+qi7nHwDax8RliIFT1Jpk/nPNILMI+ePNIwVfT4S2HzjdPBRebvOz24sMWiUfv0J7oHlWj8rdsFZKRDlqy/qKsiQ88eGf0qOvKm+mkv4RbQnif+/zAhRJayYjCsUEbQ9pyYWt9A==
ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass
 smtp.mailfrom=arm.com; dmarc=pass action=none header.from=arm.com; dkim=pass
 header.d=arm.com; arc=none
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=arm.com; s=selector1;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck;
 bh=tcSl7NP8Q+YlLubtET/F9Jdo12hogf6+flRqwg2Rd4w=;
 b=Qqk/tITYEbyRUCBHjC5tDqApc0gvQ9KriIrE9WsVnyNLzvGJUnA1wAUW+Zk5SGPKdcro8jBgp9ve+rjAu5h1jbXF4SrPRiVJfg0JJY0afpQOFgG3PVBpGqIDrZ2tbVPFxubsdduZ9iHOjV7OR2XCV21C447p5IlUrOVfYvP8HlM=
From: Luca Fancellu <Luca.Fancellu@arm.com>
To: Mykola Kvach <xakep.amatop@gmail.com>
CC: "xen-devel@lists.xenproject.org" <xen-devel@lists.xenproject.org>, 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>
Subject: Re: [PATCH v8 04/13] xen/arm: gic-v3: Implement GICv3 suspend/resume
 functions
Thread-Topic: [PATCH v8 04/13] xen/arm: gic-v3: Implement GICv3 suspend/resume
 functions
Thread-Index: AQHc0xQ/sqjDigt0FUqlQufY17o08A==
Date: Thu, 23 Apr 2026 11:28:02 +0000
Message-ID: <EA1567BB-4ED9-41C7-BDD9-9DABAA2D2855@arm.com>
References: <cover.1775125380.git.mykola_kvach@epam.com>
 <d3398c62b8604bb869c204e3786f0b0246de7375.1775125380.git.mykola_kvach@epam.com>
In-Reply-To:
 <d3398c62b8604bb869c204e3786f0b0246de7375.1775125380.git.mykola_kvach@epam.com>
Accept-Language: en-GB, en-US
Content-Language: en-US
X-MS-Has-Attach:
X-MS-TNEF-Correlator:
x-mailer: Apple Mail (2.3826.700.81.1.6)
Authentication-Results-Original: dkim=none (message not signed)
 header.d=none;dmarc=none action=none header.from=arm.com;
x-ms-traffictypediagnostic:
	AS8PR08MB7265:EE_|PR3PR08MB5578:EE_|DU6PEPF00009525:EE_|AM9PR08MB6020:EE_
X-MS-Office365-Filtering-Correlation-Id: 553d8996-1179-4a6b-0674-08dea12b86f0
x-checkrecipientrouted: true
nodisclaimer: true
X-MS-Exchange-SenderADCheck: 1
X-MS-Exchange-AntiSpam-Relay: 0
X-Microsoft-Antispam-Untrusted:
 BCL:0;ARA:13230040|1800799024|376014|366016|18002099003|38070700021|56012099003|22082099003;
X-Microsoft-Antispam-Message-Info-Original:
 UixvTmlHc3kayNyToygF0ECBNG1/XUNsT6mI0WUWuvEQ2+EHr0aatYDWabjW3yN4xdjXM8gBsU9+ZULx1+RLU7Q/sz2S7YvqbfkGQjd38AP6B9ov3A85uMw9nXy6es7cndAInEPfzRpC0jCNOIfv+m5ob3BTJnFhj7WTdhh747XWl+D0bZgAqvNIGHYEW08C8XkhikWmPvJMKQy8JVOx91td7azoRbSqNZlYUmDh6x9PEQD8RlunBQsnDLtdM4iozrtLFNcKG9/kscHqqDYCuPc31/Nt1eEIdOwmFrlYpOH8P/QkTfEslKnR+VDGoGyHbDd47XYtGjiPnTGvZ5Z3pzB72sNivhTNtcSDgNaVBz2Wmi9VUvnbL7HiwUgW+/jbM6fGjIfHFzZ+55WlCDZTIt1+xKubNWHSp7dufL1ULTHtdSSMTiccb/11drx+AL1xr8ncMYPsbANsCj1skj33Xuyk+k2wfNS7irbiEoGaUXHocxoGZtunR4RHu4Mp0ikx8puAKLfeZCb1tm5EiMY/IqDY5pO07qZ8tj6wA11sN2IPa2CoBu84QS14X5a1Ru7agfz4vX1TdGXUGNrU6vxhuhe2wJBpY6tzaMUMKhxXWBdweFfyrmWudyXaRuysw3W2x0rnyfEPTDsu5zVtWWHAA0lFkMOOGXnewe4Hmtm9GMl55d48rQ3NZv/4EJrlGm32ssNDLE0g+ebm+e97K7tOIih1ghQU1TFhhnv4rFUlPXMKKgbInANBTaCjZoLxlPFqzUlnXp88DWIMlGSXIlvnPbiWnVAgdp9FplLmpwd4ixI=
X-Forefront-Antispam-Report-Untrusted:
 CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:AS8PR08MB7265.eurprd08.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(1800799024)(376014)(366016)(18002099003)(38070700021)(56012099003)(22082099003);DIR:OUT;SFP:1101;
Content-Type: text/plain; charset="utf-8"
Content-ID: <565C708F17858447990417EDD0EF7518@eurprd08.prod.outlook.com>
Content-Transfer-Encoding: base64
MIME-Version: 1.0
X-Exchange-RoutingPolicyChecked:
 XAB9jdMjnvg6PZ2rjl0vZJul9zjjCx2nn6YpwGKXKnRfSGBZt1HjZXrlXISYh9bpgap0aXAez05rBpWTIlmhD4infr2s1gnUZPjb3hok6HJACTdR1IQU3ThlDMU0lGyW7iTkVRsycA1eAZDb2WWEW3jEZ7q+D6FhOswC+xPZqWoKcNp3tL6pxSMOAKbILwuunmYaRHbQgS92jWQ6RbqIj/pSTpof9dNuHRWrCg1/CnDd4ucyUXhan73jhw7D70tl9S+8mvytavkR8H3kWbcA/8+p1yvRNgH3SwAYaNq7kfb8d6nAxozRLyqIIJIUQbMR4DU2DoRDvwzej2EU/kwGuw==
X-MS-Exchange-Transport-CrossTenantHeadersStamped: PR3PR08MB5578
X-EOPAttributedMessage: 0
X-MS-Exchange-Transport-CrossTenantHeadersStripped:
 DU6PEPF00009525.eurprd02.prod.outlook.com
X-MS-PublicTrafficType: Email
X-MS-Office365-Filtering-Correlation-Id-Prvs:
	4ebed97c-0dc5-4c8c-08e4-08dea12b61aa
X-Microsoft-Antispam:
	BCL:0;ARA:13230040|36860700016|1800799024|376014|82310400026|14060799003|35042699022|18002099003|56012099003|22082099003;
X-Microsoft-Antispam-Message-Info:
	HrmE9bcKuKHNFbBfGndyP09+Vzv/a4ptCuHkyU8x3dB/KAigPKZQZazXJIzsLH3n5nFpwFXqdLLPxAu8in3//xiwKO564TJdgNhpRjdCKJFi6Er8CbpJIGlAbL0syWAMml59dg6NZaSdLYUs3iuQknyl6FNowFb6AkL3PVgBRCp7LQRnIXXxrjzNgYSixJor1URUeIZHug1P9drMV7+lBFQZbdPSThjcsdFxfMhDR+TwcQQbi2cWn/oRJlijCblxXTzms/QowXeOOZgFmdnso8IUO46gh2AyI2QP6efDu18iDrznBJ2YfDRNNnGPgZnxgRsterIshJ96uYRlWe//CO0EnSmWZwvZhPK7/ke3FDs05T7+FA6GZZp+mHwxcQMXUg80MOi0wPNIp3Q7EAyk3LCE4C5RLsfPTtT5DGs8EFlll/0BaDrxPGBtyXFEjRMxSzBuqUR7NG0sKyro8dFLnHRjPEkL5sRuoPWZ24k3O2nB8XM0nQviDgkiY7n5ebui3sNB4d+O1CwpBlMU1adsF9BBKnoCwE4x6/eakkhxLSrwfbSci9MZg4E8OVnaymriAGPXgEG8nWTbKh7mpTVB4HcUuL5k8KkugU+1mVVDTmpOBkMlFcoTIsvd3RaD89zqsMFG0Woe711jOGPFA7z9i/VjOMi6O5GtT3s/HPSrAdIrgkg80H3yrZDxNC76mOJXeFAFcQr0ewbo96ZGPzFVFo7KDWNqIyguemE8cHZuJGYd8H/zPnn5U2ZM5IquIstxJqWflvuL1CFAxFaiUjhsTQ==
X-Forefront-Antispam-Report:
	CIP:4.158.2.129;CTRY:GB;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:outbound-uk1.az.dlp.m.darktrace.com;PTR:InfoDomainNonexistent;CAT:NONE;SFS:(13230040)(36860700016)(1800799024)(376014)(82310400026)(14060799003)(35042699022)(18002099003)(56012099003)(22082099003);DIR:OUT;SFP:1101;
X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1
X-MS-Exchange-AntiSpam-MessageData-0:
	7HqkMAm7icYCCH0TIDbM/oJ1cVdyrOHyH9k4SFYihUtY5YG3/pNphXX8Nnb4rH/EZoU8VErmMlPRO3rg1aO44a1C0j6pwSakZTljboepHv0qepN9JWjDkVANf2FxmsxOR9LmipzLHBsvU/NhwdhxrRNTEpew03MR4/HlhI27VGGdAwmjO5J/VEN7vMF5aAKnENcFePPtRJh4fI4tonVCdnCdlgWlcZ1+0DXMTSMaegJ3Fz9KN7Whz+WAoXHLoia8wv+9gwaCshV/o8COyyIRQLhkrjRfPI550kJ8zOw5belfOusbAdlFuFl2nnQT0hS/IuUfdgINloIixLxkzPHqSI208CogJsFhSDWB+zXUBs3BRE4nKGBW1WeNfP37PaxfXxTmTO8GPTsf8ko1Wc51/y1+9YDVR4Tuj3iWs0MMVtWyFlz9DLEdaPAWa+t2jlRe
X-OriginatorOrg: arm.com
X-MS-Exchange-CrossTenant-OriginalArrivalTime: 23 Apr 2026 11:29:05.1618
 (UTC)
X-MS-Exchange-CrossTenant-Network-Message-Id: 553d8996-1179-4a6b-0674-08dea12b86f0
X-MS-Exchange-CrossTenant-Id: f34e5979-57d9-4aaa-ad4d-b122a662184d
X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=f34e5979-57d9-4aaa-ad4d-b122a662184d;Ip=[4.158.2.129];Helo=[outbound-uk1.az.dlp.m.darktrace.com]
X-MS-Exchange-CrossTenant-AuthSource:
	DU6PEPF00009525.eurprd02.prod.outlook.com
X-MS-Exchange-CrossTenant-AuthAs: Anonymous
X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem
X-MS-Exchange-Transport-CrossTenantHeadersStamped: AM9PR08MB6020
X-purgate-ID: tlsNG-c1860d/1776943753-3A577DB1-876E548B/0/0
X-purgate-type: clean
X-purgate-size: 19198

SGkgTXlrb2xhLA0KDQo+IGRpZmYgLS1naXQgYS94ZW4vYXJjaC9hcm0vZ2ljLXYzLmMgYi94ZW4v
YXJjaC9hcm0vZ2ljLXYzLmMNCj4gaW5kZXggMzRmYjA2NWFmYy4uZDE4MmE3MTQ3OCAxMDA2NDQN
Cj4gLS0tIGEveGVuL2FyY2gvYXJtL2dpYy12My5jDQo+ICsrKyBiL3hlbi9hcmNoL2FybS9naWMt
djMuYw0KPiBAQCAtMTA3MiwxMiArMTA3MiwxMiBAQCBvdXQ6DQo+ICAgICByZXR1cm4gcmVzOw0K
PiB9DQo+IA0KPiAtc3RhdGljIHZvaWQgZ2ljdjNfaHlwX2Rpc2FibGUodm9pZCkNCj4gK3N0YXRp
YyB2b2lkIGdpY3YzX2h5cF9lbmFibGUoYm9vbCBlbmFibGUpDQo+IHsNCj4gICAgIHJlZ2lzdGVy
X3QgaGNyOw0KPiANCj4gICAgIGhjciA9IFJFQURfU1lTUkVHKElDSF9IQ1JfRUwyKTsNCj4gLSAg
ICBoY3IgJj0gfkdJQ0hfSENSX0VOOw0KPiArICAgIGhjciA9IGVuYWJsZSA/IChoY3IgfCBHSUNI
X0hDUl9FTikgOiAoaGNyICYgfkdJQ0hfSENSX0VOKTsNCj4gICAgIFdSSVRFX1NZU1JFRyhoY3Is
IElDSF9IQ1JfRUwyKTsNCj4gICAgIGlzYigpOw0KPiB9DQo+IEBAIC0xMTg0LDcgKzExODQsNyBA
QCBzdGF0aWMgdm9pZCBnaWN2M19kaXNhYmxlX2ludGVyZmFjZSh2b2lkKQ0KPiAgICAgc3Bpbl9s
b2NrKCZnaWN2My5sb2NrKTsNCj4gDQo+ICAgICBnaWN2M19jcHVfZGlzYWJsZSgpOw0KPiAtICAg
IGdpY3YzX2h5cF9kaXNhYmxlKCk7DQo+ICsgICAgZ2ljdjNfaHlwX2VuYWJsZShmYWxzZSk7DQo+
IA0KPiAgICAgc3Bpbl91bmxvY2soJmdpY3YzLmxvY2spOw0KPiB9DQo+IEBAIC0xOTIwLDYgKzE5
MjAsMzEzIEBAIHN0YXRpYyBib29sIGdpY19kaXN0X3N1cHBvcnRzX2xwaXModm9pZCkNCj4gICAg
IHJldHVybiAocmVhZGxfcmVsYXhlZChHSUNEICsgR0lDRF9UWVBFUikgJiBHSUNEX1RZUEVfTFBJ
Uyk7DQo+IH0NCj4gDQo+ICsjaWZkZWYgQ09ORklHX1NZU1RFTV9TVVNQRU5EDQo+ICsNCj4gKy8q
IFRoaXMgc3RydWN0IHJlcHJlc2VudCBibG9jayBvZiAzMiBJUlFzICovDQoNCk5JVDogcy9yZXBy
ZXNlbnQvcmVwcmVzZW50cw0KDQo+ICtzdHJ1Y3QgZGlzdF9pcnFfYmxvY2sgew0KPiArICAgIHVp
bnQzMl90IGljZmdyWzJdOw0KPiArICAgIHVpbnQzMl90IGlwcmlvcml0eXJbOF07DQo+ICsgICAg
dWludDY0X3QgaXJvdXRlclszMl07DQo+ICsgICAgdWludDMyX3QgaXNhY3RpdmVyOw0KPiArICAg
IHVpbnQzMl90IGlzZW5hYmxlcjsNCj4gK307DQo+ICsNCj4gK3N0cnVjdCByZWRpc3RfY3R4IHsN
Cj4gKyAgICB1aW50MzJfdCBjdGxyOw0KPiArICAgIHVpbnQzMl90IGljZmdyOyAvKiBvbmx5IFBQ
SXMgc3RvcmVkICovDQo+ICsgICAgdWludDMyX3QgaWdyb3VwcjsNCg0KSSB0aGluayBYZW4gd3Jp
dGVzIGFsc28gR0lDRF9JR1JPVVBSPG4+RSwgd2UgYXJlIG5vdCBzYXZpbmcgaXQgc28gaW4gY2Fz
ZSBvZiBhIHJlc2V0DQp3ZSB3b3VsZCBoYXZlIEdJQ0RfSUdST1VQUjxuPkUgY29udGFpbmluZyB0
aGUgcmVzZXQgdmFsdWUgd2hpY2ggaXMgemVyby4NCk9yIHdlIGNvdWxkIGRlY2lkZSB0byByZS1p
bml0aWFsaXNlIGl0IGluIHRoZSBzYW1lIHdheSBYZW4gZG9lcyAoYWxsIDFzKS4NCg0KPiArICAg
IHVpbnQzMl90IGlwcmlvcml0eXJbOF07DQo+ICsgICAgdWludDMyX3QgaXNhY3RpdmVyOw0KPiAr
ICAgIHVpbnQzMl90IGlzZW5hYmxlcjsNCj4gKw0KPiArICAgIHVpbnQ2NF90IHBlbmRiYXNlOw0K
PiArICAgIHVpbnQ2NF90IHByb3BiYXNlOw0KPiArfTsNCj4gKw0KPiArLyogR0lDdjMgcmVnaXN0
ZXJzIHRvIGJlIHNhdmVkL3Jlc3RvcmVkIG9uIHN5c3RlbSBzdXNwZW5kL3Jlc3VtZSAqLw0KPiAr
c3RydWN0IGdpY3YzX2N0eCB7DQo+ICsgICAgc3RydWN0IGRpc3RfY3R4IHsNCj4gKyAgICAgICAg
dWludDMyX3QgY3RscjsNCj4gKyAgICAgICAgc3RydWN0IGRpc3RfaXJxX2Jsb2NrICppcnFzLCAq
ZXNwaV9pcnFzOw0KDQpOSVQ6IEkgd291bGQgZGVjbGFyZSB0aGVtIG9uZSBhZnRlciB0aGUgb3Ro
ZXIgYW5kIG5vdCBpbiB0aGUgc2FtZSBsaW5lLCBidXQgdGhpcyBpcyBhIG1hdHRlciBvZiB0YXN0
ZQ0KbWF5YmUgc28gSSB3aWxsIGxlYXZlIHRoZSBkZWNpc2lvbiB0byB0aGUgbWFpbnRhaW5lcnMu
DQoNCj4gKyAgICB9IGRpc3Q7DQo+ICsNCj4gKyAgICAvKiBoYXZlIG9ubHkgb25lIHJkaXN0IHN0
cnVjdHVyZSBmb3IgbGFzdCBydW5uaW5nIENQVSBkdXJpbmcgc3VzcGVuZCAqLw0KPiArICAgIHN0
cnVjdCByZWRpc3RfY3R4IHJkaXN0Ow0KPiArDQo+ICsgICAgc3RydWN0IGNwdV9jdHggew0KPiAr
ICAgICAgICB1aW50MzJfdCBjdGxyOw0KPiArICAgICAgICB1aW50MzJfdCBwbXI7DQo+ICsgICAg
ICAgIHVpbnQzMl90IGJwcjsNCj4gKyAgICAgICAgdWludDMyX3Qgc3JlX2VsMjsNCj4gKyAgICAg
ICAgdWludDMyX3QgZ3JwZW47DQo+ICsgICAgfSBjcHU7DQo+ICt9Ow0KPiArDQo+ICtzdGF0aWMg
c3RydWN0IGdpY3YzX2N0eCBnaWN2M19jdHg7DQo+ICsNCj4gK3N0YXRpYyB2b2lkIF9faW5pdCBn
aWN2M19hbGxvY19jb250ZXh0KHZvaWQpDQo+ICt7DQo+ICsgICAgdWludDMyX3QgYmxvY2tzID0g
RElWX1JPVU5EX1VQKGdpY3YzX2luZm8ubnJfbGluZXMsIDMyKTsNCj4gKw0KPiArICAgIC8qIFRo
ZSBzcGVjIGFsbG93cyBmb3Igc3lzdGVtcyB3aXRob3V0IGFueSBTUElzICovDQo+ICsgICAgaWYg
KCBibG9ja3MgPiAxICkNCj4gKyAgICB7DQo+ICsgICAgICAgIGdpY3YzX2N0eC5kaXN0LmlycXMg
PSB4emFsbG9jX2FycmF5KHN0cnVjdCBkaXN0X2lycV9ibG9jaywgYmxvY2tzIC0gMSk7DQo+ICsg
ICAgICAgIGlmICggIWdpY3YzX2N0eC5kaXN0LmlycXMgKQ0KPiArICAgICAgICAgICAgcGFuaWMo
IkZhaWxlZCB0byBhbGxvY2F0ZSBtZW1vcnkgZm9yIEdJQ3YzIHN1c3BlbmQgY29udGV4dFxuIik7
DQo+ICsgICAgfQ0KPiArDQo+ICsjaWZkZWYgQ09ORklHX0dJQ1YzX0VTUEkNCj4gKyAgICBpZiAo
ICFnaWNfbnVtYmVyX2VzcGlzKCkgKQ0KPiArICAgICAgICByZXR1cm47DQo+ICsNCj4gKyAgICBi
bG9ja3MgPSBnaWNfbnVtYmVyX2VzcGlzKCkgLyAzMjsNCj4gKyAgICBnaWN2M19jdHguZGlzdC5l
c3BpX2lycXMgPSB4emFsbG9jX2FycmF5KHN0cnVjdCBkaXN0X2lycV9ibG9jaywgYmxvY2tzKTsN
Cj4gKyAgICBpZiAoICFnaWN2M19jdHguZGlzdC5lc3BpX2lycXMgKQ0KPiArICAgICAgICBwYW5p
YygiRmFpbGVkIHRvIGFsbG9jYXRlIG1lbW9yeSBmb3IgR0lDdjMgZVNQSSBzdXNwZW5kIGNvbnRl
eHRcbiIpOw0KPiArI2VuZGlmDQo+ICt9DQo+ICsNCj4gK3N0YXRpYyBpbnQgZ2ljdjNfZGlzYWJs
ZV9yZWRpc3Qodm9pZCkNCj4gK3sNCj4gKyAgICB2b2lkIF9faW9tZW0gKndha2VyID0gR0lDRF9S
RElTVF9CQVNFICsgR0lDUl9XQUtFUjsNCj4gKyAgICBzX3RpbWVfdCBkZWFkbGluZTsNCj4gKw0K
PiArICAgIC8qDQo+ICsgICAgICogQXZvaWQgaW5maW5pdGUgbG9vcCBpZiBOb24tc2VjdXJlIGRv
ZXMgbm90IGhhdmUgYWNjZXNzIHRvIEdJQ1JfV0FLRVIuDQo+ICsgICAgICogU2VlIEFybSBJSEkg
MDA2OUguYiwgMTIuMTEuNDIgR0lDUl9XQUtFUjoNCj4gKyAgICAgKiAgICAgV2hlbiBHSUNEX0NU
TFIuRFMgPT0gMCBhbmQgYW4gYWNjZXNzIGlzIE5vbi1zZWN1cmUgYWNjZXNzZXMgdG8gdGhpcw0K
PiArICAgICAqICAgICByZWdpc3RlciBhcmUgUkFaL1dJLg0KPiArICAgICAqLw0KPiArICAgIGlm
ICggIShyZWFkbF9yZWxheGVkKEdJQ0QgKyBHSUNEX0NUTFIpICYgR0lDRF9DVExSX0RTKSApDQo+
ICsgICAgICAgIHJldHVybiAwOw0KPiArDQo+ICsgICAgZGVhZGxpbmUgPSBOT1coKSArIE1JTExJ
U0VDUygxMDAwKTsNCj4gKw0KPiArICAgIHdyaXRlbF9yZWxheGVkKHJlYWRsX3JlbGF4ZWQod2Fr
ZXIpIHwgR0lDUl9XQUtFUl9Qcm9jZXNzb3JTbGVlcCwgd2FrZXIpOw0KPiArICAgIHdoaWxlICgg
KHJlYWRsX3JlbGF4ZWQod2FrZXIpICYgR0lDUl9XQUtFUl9DaGlsZHJlbkFzbGVlcCkgPT0gMCAp
DQo+ICsgICAgew0KPiArICAgICAgICBpZiAoIE5PVygpID4gZGVhZGxpbmUgKQ0KPiArICAgICAg
ICB7DQo+ICsgICAgICAgICAgICBwcmludGsoIkdJQ3YzOiBUaW1lb3V0IHdhaXRpbmcgZm9yIHJl
ZGlzdHJpYnV0b3IgdG8gc2xlZXBcbiIpOw0KPiArICAgICAgICAgICAgcmV0dXJuIC1FVElNRURP
VVQ7DQo+ICsgICAgICAgIH0NCj4gKyAgICAgICAgY3B1X3JlbGF4KCk7DQo+ICsgICAgICAgIHVk
ZWxheSgxMCk7DQo+ICsgICAgfQ0KPiArDQo+ICsgICAgcmV0dXJuIDA7DQo+ICt9DQo+ICsNCj4g
KyNkZWZpbmUgR0VUX1NQSV9SRUdfT0ZGU0VUKG5hbWUsIGlzX2VzcGkpIFwNCj4gKyAgICAoKGlz
X2VzcGkpID8gR0lDRF8jI25hbWUjI25FIDogR0lDRF8jI25hbWUpDQo+ICsNCj4gK3N0YXRpYyB2
b2lkIGdpY3YzX3N0b3JlX3NwaV9pcnFfYmxvY2soc3RydWN0IGRpc3RfaXJxX2Jsb2NrICppcnFz
LA0KPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBpbnQg
aSwgYm9vbCBpc19lc3BpKQ0KPiArew0KPiArICAgIHZvaWQgX19pb21lbSAqYmFzZTsNCj4gKyAg
ICB1bnNpZ25lZCBpbnQgaXJxOw0KPiArDQo+ICsgICAgYmFzZSA9IEdJQ0QgKyBHRVRfU1BJX1JF
R19PRkZTRVQoSUNGR1IsIGlzX2VzcGkpICsgaSAqIHNpemVvZihpcnFzLT5pY2Zncik7DQo+ICsg
ICAgaXJxcy0+aWNmZ3JbMF0gPSByZWFkbF9yZWxheGVkKGJhc2UpOw0KPiArICAgIGlycXMtPmlj
ZmdyWzFdID0gcmVhZGxfcmVsYXhlZChiYXNlICsgNCk7DQo+ICsNCj4gKyAgICBiYXNlID0gR0lD
RCArIEdFVF9TUElfUkVHX09GRlNFVChJUFJJT1JJVFlSLCBpc19lc3BpKTsNCj4gKyAgICBiYXNl
ICs9IGkgKiBzaXplb2YoaXJxcy0+aXByaW9yaXR5cik7DQo+ICsgICAgZm9yICggaXJxID0gMDsg
aXJxIDwgQVJSQVlfU0laRShpcnFzLT5pcHJpb3JpdHlyKTsgaXJxKysgKQ0KPiArICAgICAgICBp
cnFzLT5pcHJpb3JpdHlyW2lycV0gPSByZWFkbF9yZWxheGVkKGJhc2UgKyA0ICogaXJxKTsNCj4g
Kw0KPiArICAgIGJhc2UgPSBHSUNEICsgR0VUX1NQSV9SRUdfT0ZGU0VUKElST1VURVIsIGlzX2Vz
cGkpOw0KPiArICAgIGJhc2UgKz0gaSAqIHNpemVvZihpcnFzLT5pcm91dGVyKTsNCj4gKyAgICBm
b3IgKCBpcnEgPSAwOyBpcnEgPCBBUlJBWV9TSVpFKGlycXMtPmlyb3V0ZXIpOyBpcnErKyApDQo+
ICsgICAgICAgIGlycXMtPmlyb3V0ZXJbaXJxXSA9IHJlYWRxX3JlbGF4ZWRfbm9uX2F0b21pYyhi
YXNlICsgOCAqIGlycSk7DQo+ICsNCj4gKyAgICBiYXNlID0gR0lDRCArIEdFVF9TUElfUkVHX09G
RlNFVChJU0FDVElWRVIsIGlzX2VzcGkpOw0KPiArICAgIGJhc2UgKz0gaSAqIHNpemVvZihpcnFz
LT5pc2FjdGl2ZXIpOw0KPiArICAgIGlycXMtPmlzYWN0aXZlciA9IHJlYWRsX3JlbGF4ZWQoYmFz
ZSk7DQo+ICsNCj4gKyAgICBiYXNlID0gR0lDRCArIEdFVF9TUElfUkVHX09GRlNFVChJU0VOQUJM
RVIsIGlzX2VzcGkpOw0KPiArICAgIGJhc2UgKz0gaSAqIHNpemVvZihpcnFzLT5pc2VuYWJsZXIp
Ow0KPiArICAgIGlycXMtPmlzZW5hYmxlciA9IHJlYWRsX3JlbGF4ZWQoYmFzZSk7DQo+ICt9DQo+
ICsNCj4gK3N0YXRpYyB2b2lkIGdpY3YzX3Jlc3RvcmVfc3BpX2lycV9ibG9jayhzdHJ1Y3QgZGlz
dF9pcnFfYmxvY2sgKmlycXMsDQo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgdW5zaWduZWQgaW50IGksIGJvb2wgaXNfZXNwaSkNCj4gK3sNCj4gKyAgICB2b2lkIF9f
aW9tZW0gKmJhc2U7DQo+ICsgICAgdW5zaWduZWQgaW50IGlycTsNCj4gKw0KPiArICAgIGJhc2Ug
PSBHSUNEICsgR0VUX1NQSV9SRUdfT0ZGU0VUKElDRkdSLCBpc19lc3BpKSArIGkgKiBzaXplb2Yo
aXJxcy0+aWNmZ3IpOw0KPiArICAgIHdyaXRlbF9yZWxheGVkKGlycXMtPmljZmdyWzBdLCBiYXNl
KTsNCj4gKyAgICB3cml0ZWxfcmVsYXhlZChpcnFzLT5pY2ZnclsxXSwgYmFzZSArIDQpOw0KPiAr
DQo+ICsgICAgYmFzZSA9IEdJQ0QgKyBHRVRfU1BJX1JFR19PRkZTRVQoSVBSSU9SSVRZUiwgaXNf
ZXNwaSk7DQo+ICsgICAgYmFzZSArPSBpICogc2l6ZW9mKGlycXMtPmlwcmlvcml0eXIpOw0KPiAr
ICAgIGZvciAoIGlycSA9IDA7IGlycSA8IEFSUkFZX1NJWkUoaXJxcy0+aXByaW9yaXR5cik7IGly
cSsrICkNCj4gKyAgICAgICAgd3JpdGVsX3JlbGF4ZWQoaXJxcy0+aXByaW9yaXR5cltpcnFdLCBi
YXNlICsgNCAqIGlycSk7DQo+ICsNCj4gKyAgICBiYXNlID0gR0lDRCArIEdFVF9TUElfUkVHX09G
RlNFVChJUk9VVEVSLCBpc19lc3BpKTsNCj4gKyAgICBiYXNlICs9IGkgKiBzaXplb2YoaXJxcy0+
aXJvdXRlcik7DQo+ICsgICAgZm9yICggaXJxID0gMDsgaXJxIDwgQVJSQVlfU0laRShpcnFzLT5p
cm91dGVyKTsgaXJxKysgKQ0KPiArICAgICAgICB3cml0ZXFfcmVsYXhlZF9ub25fYXRvbWljKGly
cXMtPmlyb3V0ZXJbaXJxXSwgYmFzZSArIDggKiBpcnEpOw0KDQoNClRoZSBbMV0gMTIuOS4yMiBH
SUNEX0lST1VURVI8bj4gc2F5cyAidGhlc2UgcmVnaXN0ZXJzIGFyZSB1c2VkIG9ubHkgd2hlbiBh
ZmZpbml0eSByb3V0aW5nIGlzIGVuYWJsZWQuDQpXaGVuIGFmZmluaXR5IHJvdXRpbmcgaXMgbm90
IGVuYWJsZWQ6IFRoZXNlIHJlZ2lzdGVycyBhcmUgUkVTMC4gQW4gaW1wbGVtZW50YXRpb24gaXMg
cGVybWl0dGVkIHRvIG1ha2UgDQp0aGUgcmVnaXN0ZXIgUkFaL1dJIGluIHRoaXMgY2FzZeKAnQ0K
DQpTbyBJIHRoaW5rIHRoZXNlIG5lZWRzIHRvIGJlIHdyaXR0ZW4gYWZ0ZXIgd2Ugc2V0IEdJQ0Rf
Q1RMUiBvciB3ZSBhcmUgZ29pbmcgdG8gbG9vc2UgYW55dGhpbmcgd3JpdHRlbiB0aGVyZQ0KYW5k
IGFsc28gdGhlIGNvbmZpZ3VyYXRpb24gd29u4oCZdCBiZSByZXN0b3JlZC4NCg0KDQo+ICsNCj4g
KyAgICBiYXNlID0gR0lDRCArIEdFVF9TUElfUkVHX09GRlNFVChJQ0VOQUJMRVIsIGlzX2VzcGkp
ICsgaSAqIDQ7DQo+ICsgICAgd3JpdGVsX3JlbGF4ZWQoR0VOTUFTSygzMSwgMCksIGJhc2UpOw0K
PiArDQo+ICsgICAgYmFzZSA9IEdJQ0QgKyBHRVRfU1BJX1JFR19PRkZTRVQoSVNFTkFCTEVSLCBp
c19lc3BpKTsNCj4gKyAgICBiYXNlICs9IGkgKiBzaXplb2YoaXJxcy0+aXNlbmFibGVyKTsNCj4g
KyAgICB3cml0ZWxfcmVsYXhlZChpcnFzLT5pc2VuYWJsZXIsIGJhc2UpOw0KPiArDQo+ICsgICAg
YmFzZSA9IEdJQ0QgKyBHRVRfU1BJX1JFR19PRkZTRVQoSUNBQ1RJVkVSLCBpc19lc3BpKSArIGkg
KiA0Ow0KPiArICAgIHdyaXRlbF9yZWxheGVkKEdFTk1BU0soMzEsIDApLCBiYXNlKTsNCj4gKw0K
PiArICAgIGJhc2UgPSBHSUNEICsgR0VUX1NQSV9SRUdfT0ZGU0VUKElTQUNUSVZFUiwgaXNfZXNw
aSk7DQo+ICsgICAgYmFzZSArPSBpICogc2l6ZW9mKGlycXMtPmlzYWN0aXZlcik7DQo+ICsgICAg
d3JpdGVsX3JlbGF4ZWQoaXJxcy0+aXNhY3RpdmVyLCBiYXNlKTsNCj4gK30NCj4gKw0KPiArc3Rh
dGljIGludCBnaWN2M19zdXNwZW5kKHZvaWQpDQo+ICt7DQo+ICsgICAgdW5zaWduZWQgaW50IGk7
DQo+ICsgICAgdm9pZCBfX2lvbWVtICpiYXNlOw0KPiArICAgIGludCByZXQ7DQo+ICsgICAgc3Ry
dWN0IHJlZGlzdF9jdHggKnJkaXN0ID0gJmdpY3YzX2N0eC5yZGlzdDsNCj4gKw0KPiArICAgIC8q
IFNhdmUgR0lDQyBjb25maWd1cmF0aW9uICovDQo+ICsgICAgZ2ljdjNfY3R4LmNwdS5jdGxyICAg
ICA9IFJFQURfU1lTUkVHKElDQ19DVExSX0VMMSk7DQo+ICsgICAgZ2ljdjNfY3R4LmNwdS5wbXIg
ICAgICA9IFJFQURfU1lTUkVHKElDQ19QTVJfRUwxKTsNCj4gKyAgICBnaWN2M19jdHguY3B1LmJw
ciAgICAgID0gUkVBRF9TWVNSRUcoSUNDX0JQUjFfRUwxKTsNCj4gKyAgICBnaWN2M19jdHguY3B1
LnNyZV9lbDIgID0gUkVBRF9TWVNSRUcoSUNDX1NSRV9FTDIpOw0KPiArICAgIGdpY3YzX2N0eC5j
cHUuZ3JwZW4gICAgPSBSRUFEX1NZU1JFRyhJQ0NfSUdSUEVOMV9FTDEpOw0KPiArDQo+ICsgICAg
Z2ljdjNfZGlzYWJsZV9pbnRlcmZhY2UoKTsNCg0KdGhpcyBvbmUgaXMgY2FsbGluZyBhbHNvIGdp
Y3YzX2NwdV9kaXNhYmxlKCkgdGhhdCB3aWxsIHplcm8gSUNDX0lHUlBFTjFfRUwxIC4uLg0KDQo+
ICsNCj4gKyAgICByZXQgPSBnaWN2M19kaXNhYmxlX3JlZGlzdCgpOw0KPiArICAgIGlmICggcmV0
ICkNCj4gKyAgICAgICAgZ290byBvdXRfZW5hYmxlX2lmYWNlOw0KDQrigKYgYnV0IHdoZW4gd2Ug
ZmFpbCBoZXJlIC4uLg0KDQo+ICsNCj4gKyAgICAvKiBTYXZlIEdJQ1IgY29uZmlndXJhdGlvbiAq
Lw0KPiArICAgIGdpY3YzX3JlZGlzdF93YWl0X2Zvcl9yd3AoKTsNCj4gKw0KPiArICAgIGJhc2Ug
PSBHSUNEX1JESVNUX0JBU0U7DQo+ICsNCj4gKyAgICByZGlzdC0+Y3RsciA9IHJlYWRsX3JlbGF4
ZWQoYmFzZSArIEdJQ1JfQ1RMUik7DQo+ICsNCj4gKyAgICByZGlzdC0+cHJvcGJhc2UgPSByZWFk
cV9yZWxheGVkKGJhc2UgKyBHSUNSX1BST1BCQVNFUik7DQo+ICsgICAgcmRpc3QtPnBlbmRiYXNl
ID0gcmVhZHFfcmVsYXhlZChiYXNlICsgR0lDUl9QRU5EQkFTRVIpOw0KPiArDQo+ICsgICAgYmFz
ZSA9IEdJQ0RfUkRJU1RfU0dJX0JBU0U7DQo+ICsNCj4gKyAgICAvKiBTYXZlIHByaW9yaXR5IG9u
IFBQSSBhbmQgU0dJIGludGVycnVwdHMgKi8NCj4gKyAgICBmb3IgKCBpID0gMDsgaSA8IE5SX0dJ
Q19MT0NBTF9JUlFTIC8gNDsgaSsrICkNCj4gKyAgICAgICAgcmRpc3QtPmlwcmlvcml0eXJbaV0g
PSByZWFkbF9yZWxheGVkKGJhc2UgKyBHSUNSX0lQUklPUklUWVIwICsgNCAqIGkpOw0KPiArDQo+
ICsgICAgcmRpc3QtPmlzYWN0aXZlciA9IHJlYWRsX3JlbGF4ZWQoYmFzZSArIEdJQ1JfSVNBQ1RJ
VkVSMCk7DQo+ICsgICAgcmRpc3QtPmlzZW5hYmxlciA9IHJlYWRsX3JlbGF4ZWQoYmFzZSArIEdJ
Q1JfSVNFTkFCTEVSMCk7DQo+ICsgICAgcmRpc3QtPmlncm91cHIgICA9IHJlYWRsX3JlbGF4ZWQo
YmFzZSArIEdJQ1JfSUdST1VQUjApOw0KPiArICAgIHJkaXN0LT5pY2ZnciAgICAgPSByZWFkbF9y
ZWxheGVkKGJhc2UgKyBHSUNSX0lDRkdSMSk7DQo+ICsNCj4gKyAgICAvKiBTYXZlIEdJQ0QgY29u
ZmlndXJhdGlvbiAqLw0KPiArICAgIGdpY3YzX2Rpc3Rfd2FpdF9mb3JfcndwKCk7DQo+ICsgICAg
Z2ljdjNfY3R4LmRpc3QuY3RsciA9IHJlYWRsX3JlbGF4ZWQoR0lDRCArIEdJQ0RfQ1RMUik7DQo+
ICsNCj4gKyAgICBmb3IgKCBpID0gMTsgaSA8IERJVl9ST1VORF9VUChnaWN2M19pbmZvLm5yX2xp
bmVzLCAzMik7IGkrKyApDQo+ICsgICAgICAgIGdpY3YzX3N0b3JlX3NwaV9pcnFfYmxvY2soZ2lj
djNfY3R4LmRpc3QuaXJxcyArIGkgLSAxLCBpLCBmYWxzZSk7DQo+ICsNCj4gKyNpZmRlZiBDT05G
SUdfR0lDVjNfRVNQSQ0KPiArICAgIGZvciAoIGkgPSAwOyBpIDwgZ2ljX251bWJlcl9lc3Bpcygp
IC8gMzI7IGkrKyApDQo+ICsgICAgICAgIGdpY3YzX3N0b3JlX3NwaV9pcnFfYmxvY2soZ2ljdjNf
Y3R4LmRpc3QuZXNwaV9pcnFzICsgaSwgaSwgdHJ1ZSk7DQo+ICsjZW5kaWYNCj4gKw0KPiArICAg
IHJldHVybiAwOw0KPiArDQo+ICsgb3V0X2VuYWJsZV9pZmFjZToNCj4gKyAgICBnaWN2M19oeXBf
ZW5hYmxlKHRydWUpOw0KPiArICAgIFdSSVRFX1NZU1JFRyhnaWN2M19jdHguY3B1LmN0bHIsIElD
Q19DVExSX0VMMSk7DQoNCndlIGRvbuKAmXQgcmVjb3ZlciBJQ0NfSUdSUEVOMV9FTDENCg0KPiAr
ICAgIGlzYigpOw0KPiArDQo+ICsgICAgcmV0dXJuIHJldDsNCj4gK30NCj4gKw0KPiArc3RhdGlj
IHZvaWQgZ2ljdjNfcmVzdW1lKHZvaWQpDQo+ICt7DQo+ICsgICAgaW50IHJldDsNCj4gKyAgICB1
bnNpZ25lZCBpbnQgaTsNCj4gKyAgICB2b2lkIF9faW9tZW0gKmJhc2U7DQo+ICsgICAgc3RydWN0
IHJlZGlzdF9jdHggKnJkaXN0ID0gJmdpY3YzX2N0eC5yZGlzdDsNCj4gKw0KPiArICAgIHdyaXRl
bF9yZWxheGVkKDAsIEdJQ0QgKyBHSUNEX0NUTFIpOw0KPiArDQo+ICsgICAgZm9yICggaSA9IE5S
X0dJQ19MT0NBTF9JUlFTOyBpIDwgZ2ljdjNfaW5mby5ucl9saW5lczsgaSArPSAzMiApDQo+ICsg
ICAgICAgIHdyaXRlbF9yZWxheGVkKEdFTk1BU0soMzEsIDApLCBHSUNEICsgR0lDRF9JR1JPVVBS
ICsgKGkgLyAzMikgKiA0KTsNCj4gKw0KPiArICAgIGZvciAoIGkgPSAxOyBpIDwgRElWX1JPVU5E
X1VQKGdpY3YzX2luZm8ubnJfbGluZXMsIDMyKTsgaSsrICkNCj4gKyAgICAgICAgZ2ljdjNfcmVz
dG9yZV9zcGlfaXJxX2Jsb2NrKGdpY3YzX2N0eC5kaXN0LmlycXMgKyBpIC0gMSwgaSwgZmFsc2Up
Ow0KPiArDQo+ICsjaWZkZWYgQ09ORklHX0dJQ1YzX0VTUEkNCj4gKyAgICBmb3IgKCBpID0gMDsg
aSA8IGdpY19udW1iZXJfZXNwaXMoKSAvIDMyOyBpKysgKQ0KPiArICAgICAgICBnaWN2M19yZXN0
b3JlX3NwaV9pcnFfYmxvY2soZ2ljdjNfY3R4LmRpc3QuZXNwaV9pcnFzICsgaSwgaSwgdHJ1ZSk7
DQo+ICsjZW5kaWYNCj4gKw0KPiArICAgIHdyaXRlbF9yZWxheGVkKGdpY3YzX2N0eC5kaXN0LmN0
bHIsIEdJQ0QgKyBHSUNEX0NUTFIpOw0KPiArICAgIGdpY3YzX2Rpc3Rfd2FpdF9mb3JfcndwKCk7
DQo+ICsNCj4gKyAgICByZXQgPSBnaWN2M19scGlfaW5pdF9yZGlzdChHSUNEX1JESVNUX0JBU0Up
Ow0KPiArICAgIC8qDQo+ICsgICAgICogSWYgTFBJcyBhcmUgYWxyZWFkeSBlbmFibGVkLCBhc3N1
bWUgZmlybXdhcmUgb3IgdGhlIHN0aWxsLXBvd2VyZWQNCj4gKyAgICAgKiByZWRpc3RyaWJ1dG9y
IGhhcyB2YWxpZCBQUk9QQkFTRVIvUEVOREJBU0VSIGFuZCBza2lwIHJlcHJvZ3JhbW1pbmcuDQo+
ICsgICAgICogUmV0dXJuIC1FQlVTWSBzbyBjYWxsZXJzIGNhbiBpZ25vcmUgdGhpcyBjYXNlLg0K
PiArICAgICAqLw0KPiArICAgIGlmICggcmV0ICYmIHJldCAhPSAtRU5PREVWICYmIHJldCAhPSAt
RUJVU1kgKQ0KPiArICAgICAgICBwYW5pYygiR0lDdjM6IEZhaWxlZCB0byByZS1pbml0aWFsaXpl
IExQSXMgZHVyaW5nIHJlc3VtZVxuIik7DQo+ICsgICAgZWxzZSBpZiAoIHJldCA9PSAtRUJVU1kg
KSAvKiBleHRyYSBjaGVja3MsIGp1c3QgdG8gYmUgc3VyZSAqLw0KPiArICAgIHsNCj4gKyAgICAg
ICAgYmFzZSA9IEdJQ0RfUkRJU1RfQkFTRTsNCj4gKyAgICAgICAgaWYgKCByZWFkcV9yZWxheGVk
KGJhc2UgKyBHSUNSX1BST1BCQVNFUikgIT0gcmRpc3QtPnByb3BiYXNlIHx8DQo+ICsgICAgICAg
ICAgICAgcmVhZHFfcmVsYXhlZChiYXNlICsgR0lDUl9QRU5EQkFTRVIpICE9IHJkaXN0LT5wZW5k
YmFzZSApDQo+ICsgICAgICAgIHsNCj4gKyAgICAgICAgICAgIHBhbmljKCJHSUN2MzogTFBJcyBh
bHJlYWR5IGVuYWJsZWQgd2l0aCB1bmV4cGVjdGVkIFBST1BCQVNFUi9QRU5EQkFTRVIgZHVyaW5n
IHJlc3VtZVxuIik7DQo+ICsgICAgICAgIH0NCj4gKyAgICB9DQo+ICsNCj4gKyAgICAvKiBSZXN0
b3JlIEdJQ1IgKFJlZGlzdHJpYnV0b3IpIGNvbmZpZ3VyYXRpb24gKi8NCj4gKyAgICBpZiAoIGdp
Y3YzX2VuYWJsZV9yZWRpc3QoKSApDQo+ICsgICAgICAgIHBhbmljKCJHSUN2MzogRmFpbGVkIHRv
IHJlLWVuYWJsZSByZWRpc3RyaWJ1dG9yIGR1cmluZyByZXN1bWVcbiIpOw0KPiArDQo+ICsgICAg
YmFzZSA9IEdJQ0RfUkRJU1RfU0dJX0JBU0U7DQo+ICsNCj4gKyAgICB3cml0ZWxfcmVsYXhlZChH
RU5NQVNLKDMxLCAwKSwgYmFzZSArIEdJQ1JfSUNFTkFCTEVSMCk7DQo+ICsgICAgZ2ljdjNfcmVk
aXN0X3dhaXRfZm9yX3J3cCgpOw0KPiArDQo+ICsgICAgZm9yICggaSA9IDA7IGkgPCBOUl9HSUNf
TE9DQUxfSVJRUyAvIDQ7IGkrKyApDQo+ICsgICAgICAgIHdyaXRlbF9yZWxheGVkKHJkaXN0LT5p
cHJpb3JpdHlyW2ldLCBiYXNlICsgR0lDUl9JUFJJT1JJVFlSMCArIGkgKiA0KTsNCj4gKw0KPiAr
ICAgIHdyaXRlbF9yZWxheGVkKHJkaXN0LT5pc2FjdGl2ZXIsIGJhc2UgKyBHSUNSX0lTQUNUSVZF
UjApOw0KPiArICAgIHdyaXRlbF9yZWxheGVkKHJkaXN0LT5pZ3JvdXByLCAgIGJhc2UgKyBHSUNS
X0lHUk9VUFIwKTsNCj4gKyAgICB3cml0ZWxfcmVsYXhlZChyZGlzdC0+aWNmZ3IsICAgICBiYXNl
ICsgR0lDUl9JQ0ZHUjEpOw0KPiArDQo+ICsgICAgZ2ljdjNfcmVkaXN0X3dhaXRfZm9yX3J3cCgp
Ow0KPiArDQo+ICsgICAgd3JpdGVsX3JlbGF4ZWQocmRpc3QtPmlzZW5hYmxlciwgYmFzZSArIEdJ
Q1JfSVNFTkFCTEVSMCk7DQo+ICsgICAgd3JpdGVsX3JlbGF4ZWQocmRpc3QtPmN0bHIsIEdJQ0Rf
UkRJU1RfQkFTRSArIEdJQ1JfQ1RMUik7DQo+ICsNCj4gKyAgICBnaWN2M19yZWRpc3Rfd2FpdF9m
b3JfcndwKCk7DQo+ICsNCj4gKyAgICBXUklURV9TWVNSRUcoZ2ljdjNfY3R4LmNwdS5zcmVfZWwy
LCBJQ0NfU1JFX0VMMik7DQo+ICsgICAgaXNiKCk7DQo+ICsNCj4gKyAgICAvKiBSZXN0b3JlIENQ
VSBpbnRlcmZhY2UgKFN5c3RlbSByZWdpc3RlcnMpICovDQo+ICsgICAgV1JJVEVfU1lTUkVHKGdp
Y3YzX2N0eC5jcHUucG1yLCAgIElDQ19QTVJfRUwxKTsNCj4gKyAgICBXUklURV9TWVNSRUcoZ2lj
djNfY3R4LmNwdS5icHIsICAgSUNDX0JQUjFfRUwxKTsNCj4gKyAgICBXUklURV9TWVNSRUcoZ2lj
djNfY3R4LmNwdS5jdGxyLCAgSUNDX0NUTFJfRUwxKTsNCj4gKyAgICBXUklURV9TWVNSRUcoZ2lj
djNfY3R4LmNwdS5ncnBlbiwgSUNDX0lHUlBFTjFfRUwxKTsNCj4gKyAgICBpc2IoKTsNCj4gKw0K
PiArICAgIGdpY3YzX2h5cF9pbml0KCk7DQo+ICt9DQo+ICsNCj4gKyNlbmRpZiAvKiBDT05GSUdf
U1lTVEVNX1NVU1BFTkQgKi8NCj4gKw0KPiAvKiBTZXQgdXAgdGhlIEdJQyAqLw0KPiBzdGF0aWMg
aW50IF9faW5pdCBnaWN2M19pbml0KHZvaWQpDQo+IHsNCj4gQEAgLTE5OTQsNiArMjMwMSwxMCBA
QCBzdGF0aWMgaW50IF9faW5pdCBnaWN2M19pbml0KHZvaWQpDQo+IA0KPiAgICAgZ2ljdjNfaHlw
X2luaXQoKTsNCj4gDQo+ICsjaWZkZWYgQ09ORklHX1NZU1RFTV9TVVNQRU5EDQo+ICsgICAgZ2lj
djNfYWxsb2NfY29udGV4dCgpOw0KPiArI2VuZGlmDQo+ICsNCj4gb3V0Og0KPiAgICAgc3Bpbl91
bmxvY2soJmdpY3YzLmxvY2spOw0KPiANCj4gQEAgLTIwMzMsNiArMjM0NCwxMCBAQCBzdGF0aWMg
Y29uc3Qgc3RydWN0IGdpY19od19vcGVyYXRpb25zIGdpY3YzX29wcyA9IHsNCj4gI2VuZGlmDQo+
ICAgICAuaW9tZW1fZGVueV9hY2Nlc3MgICA9IGdpY3YzX2lvbWVtX2RlbnlfYWNjZXNzLA0KPiAg
ICAgLmRvX0xQSSAgICAgICAgICAgICAgPSBnaWN2M19kb19MUEksDQo+ICsjaWZkZWYgQ09ORklH
X1NZU1RFTV9TVVNQRU5EDQo+ICsgICAgLnN1c3BlbmQgICAgICAgICAgICAgPSBnaWN2M19zdXNw
ZW5kLA0KPiArICAgIC5yZXN1bWUgICAgICAgICAgICAgID0gZ2ljdjNfcmVzdW1lLA0KPiArI2Vu
ZGlmDQo+IH07DQo+IA0KPiBzdGF0aWMgaW50IF9faW5pdCBnaWN2M19kdF9wcmVpbml0KHN0cnVj
dCBkdF9kZXZpY2Vfbm9kZSAqbm9kZSwgY29uc3Qgdm9pZCAqZGF0YSkNCj4gZGlmZiAtLWdpdCBh
L3hlbi9hcmNoL2FybS9pbmNsdWRlL2FzbS9naWNfdjNfZGVmcy5oIGIveGVuL2FyY2gvYXJtL2lu
Y2x1ZGUvYXNtL2dpY192M19kZWZzLmgNCj4gaW5kZXggYzM3M2I5NGQxOS4uOTkyYzhmOWMyZiAx
MDA2NDQNCj4gLS0tIGEveGVuL2FyY2gvYXJtL2luY2x1ZGUvYXNtL2dpY192M19kZWZzLmgNCj4g
KysrIGIveGVuL2FyY2gvYXJtL2luY2x1ZGUvYXNtL2dpY192M19kZWZzLmgNCj4gQEAgLTk0LDYg
Kzk0LDcgQEANCj4gI2RlZmluZSBHSUNEX1RZUEVfTFBJUyAgICAgICAgICAgICAgICgxVSA8PCAx
NykNCj4gDQo+ICNkZWZpbmUgR0lDRF9DVExSX1JXUCAgICAgICAgICAgICAgICAoMVVMIDw8IDMx
KQ0KPiArI2RlZmluZSBHSUNEX0NUTFJfRFMgICAgICAgICAgICAgICAgICgxVSA8PCA2KQ0KPiAj
ZGVmaW5lIEdJQ0RfQ1RMUl9BUkVfTlMgICAgICAgICAgICAgKDFVIDw8IDQpDQo+ICNkZWZpbmUg
R0lDRF9DVExSX0VOQUJMRV9HMUEgICAgICAgICAoMVUgPDwgMSkNCj4gI2RlZmluZSBHSUNEX0NU
TFJfRU5BQkxFX0cxICAgICAgICAgICgxVSA8PCAwKQ0KPiANCg0KQ2hlZXJzLA0KTHVjYQ0KDQoN
Cg0KDQo=


From xen-devel-bounces@lists.xenproject.org Thu Apr 23 13:47:40 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 23 Apr 2026 13:47:40 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1292110.1570683 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wFuOr-0000y4-RM; Thu, 23 Apr 2026 13:47:25 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1292110.1570683; Thu, 23 Apr 2026 13:47: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 1wFuOr-0000xx-OM; Thu, 23 Apr 2026 13:47:25 +0000
Received: by outflank-mailman (input) for mailman id 1292110;
 Thu, 23 Apr 2026 13:47:24 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92) id 1wFuOq-0000xo-CK
 for xen-devel@lists.xenproject.org; Thu, 23 Apr 2026 13:47:24 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wFuOp-00BOrw-PI
 for xen-devel@lists.xenproject.org; Thu, 23 Apr 2026 15:47:23 +0200
Received: from [10.42.69.4] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <oleksii.kurochko@gmail.com>)
 id 69ea22ea-e002-0a2a0a5209dd-0a2a4504a594-14
 for <xen-devel@lists.xenproject.org>; Thu, 23 Apr 2026 15:47:23 +0200
Received: from [209.85.167.44] (helo=mail-lf1-f44.google.com)
 by tlsNG-ebf023.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.1)
 (envelope-from <oleksii.kurochko@gmail.com>)
 id 69ea22eb-1dec-0a2a45040019-d155a72cf104-3
 for <xen-devel@lists.xenproject.org>; Thu, 23 Apr 2026 15:47:23 +0200
Received: by mail-lf1-f44.google.com with SMTP id
 2adb3069b0e04-5a62a049c1fso3967626e87.3
 for <xen-devel@lists.xenproject.org>; Thu, 23 Apr 2026 06:47:23 -0700 (PDT)
Received: from [192.168.1.6] (user-109-243-69-121.play-internet.pl.
 [109.243.69.121]) by smtp.gmail.com with ESMTPSA id
 2adb3069b0e04-5a4185bc64bsm5314499e87.31.2026.04.23.06.47.21
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Thu, 23 Apr 2026 06:47:21 -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=20251104 header.d=gmail.com header.i="@gmail.com" header.h="Content-Transfer-Encoding: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=20251104; t=1776952043; x=1777556843; darn=lists.xenproject.org;
        h=content-transfer-encoding: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;
        bh=zL/QTwRekXjkViFAyijHzcrWgAnvayF89IMbugwrwiE=;
        b=WnaieEVUZF0MN2BJR/LW1S9Gt/7B5oC6CoeB17PYp/Kw9ngJddLkDn4VYhhrMCnZw9
         Mx+O2XxctWpuCXRDvVZKewyjxZsDdPay7+n+W59d5neI6nIFQgfzNUjOgO2SUZ4Tj4LS
         uOil1L54jW9oVYZHk33q2hOPzLBmr/v922uvQj2VIw7kKGSq+/GELhI7baQNXeyzwO5q
         1pDf7ie4Jr8Nzeb0i16Zi4YNdCUtvgNJM6blpvhUVm3bsyk03SLM7SfQxw+oB7HATyW0
         g2CNkzzNA+/RyEQvd3nZCjRByzZ+a6xuEfYhe81DvW8YTYfxoEAzn7Exr7LyqMandAZ4
         Y6IQ==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20251104; t=1776952043; x=1777556843;
        h=content-transfer-encoding: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;
        bh=zL/QTwRekXjkViFAyijHzcrWgAnvayF89IMbugwrwiE=;
        b=jroCgr8Igzc/6nFFi/70uyBehowUU92SqpHLGjVoX6kMzbNYRKsHoTxT0fVxrupPL9
         JPtZVDdjffoIYX6vm0udmKeJGPGjlDiqt2Wyjx+kG/yvHqcL16pfFq1VOpwBqcXYwIzf
         uWGciqIhYAU+RkTT3iqLSDC803qIpgxslBHzE5qZ+MAaAqhlnjNlyP8AdiBjPODzzs9n
         FqOMShAWVfU9XL4dMq+lE/hUjZcVkhKOuQEbuBQHHLITsxivFlUhIfN10oEc9oiCeS+b
         0PN72OYIzabJ2ivhUgyAHE7gOu/MJ3LYpnRu1yiy3xoggmwJgUOjM7T4WDXF/RQacakr
         9nhA==
X-Forwarded-Encrypted: i=1; AFNElJ/7pjENu9IZ5fnRypZalmF8YVsgZxXJEhyoJWoBSutSYTfeev2ALqfSWsKPZ3VvF3y7AH3gHkxtzps=@lists.xenproject.org
X-Gm-Message-State: AOJu0Ywbfyn+W39digGhCtkZQlX3fFD0wyXwRR+83H9bu2Wd8PaB3+vG
	hXv2n6BeXs+UQ0e1HC+rCYWDtDwszy3p3yC1egdiJMDp6HupkCQtdgsI
X-Gm-Gg: AeBDievKV6HAGpfFx798MtpOlp5hFdgimxUWSObdgL/k+e4pTNHWp7gMhPnhqDK1UYP
	NpDTGORaRn9W01RSeWbOgq7gv9CRHqoB6bPDXl9kFKEKMdzHbeg+WWa4poolaW0xGj9IOzAzCyE
	+mipOeBfbf10CtrGfVFMiUN/sj4fzWA9VYgTHz7EripEG3UvAFRaTtkYdEujHj/LzO8dcL5NLAZ
	gXRLtCnsgCbl/mkonDVE/I1nQ7sI4EQKYK16K5hD4sqyrQD6QR5OOMVCGUVnZttGyY/FkDBOjs6
	kZQVkuUVQjkpnEZ4SuxbVZ+H2nu6DNZRkhMAuZ3ncd7E9a+VfZeqRJBwBulTL+oqr1hEHGrWEZK
	eKNEOMz0KdJAQRZ7848k0Avgx5TkS88lM2jNbvbC6EMxe22fLVjxpCoRaHhsqKVaCsd9rEu5lC+
	Eky44CIG6Fl4Ua2qouxFsmx5urjAM1MVmQuAK2AHDGh9lm8Y9YTWGTIl9Ip6bUFpLulZKoDkP8T
	96Rs2LNkDZOjA==
X-Received: by 2002:a05:6512:3193:b0:5a3:ed0a:efb4 with SMTP id 2adb3069b0e04-5a417303404mr9216605e87.38.1776952042563;
        Thu, 23 Apr 2026 06:47:22 -0700 (PDT)
Message-ID: <cde7a080-4501-4641-8848-2035e2370ab3@gmail.com>
Date: Thu, 23 Apr 2026 15:47:20 +0200
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH v3 10/12] xen/riscv: introduce p2m_gpa_bits
To: Jan Beulich <jbeulich@suse.com>
Cc: Romain Caritey <Romain.Caritey@microchip.com>,
 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.pau@citrix.com>,
 Stefano Stabellini <sstabellini@kernel.org>, xen-devel@lists.xenproject.org
References: <cover.1775836193.git.oleksii.kurochko@gmail.com>
 <87d8050f252fb76e241a40809763e60d9874e902.1775836193.git.oleksii.kurochko@gmail.com>
 <14ae97df-cb9b-4b43-bb39-6b9395ad918b@suse.com>
Content-Language: en-US
From: Oleksii Kurochko <oleksii.kurochko@gmail.com>
In-Reply-To: <14ae97df-cb9b-4b43-bb39-6b9395ad918b@suse.com>
Content-Type: text/plain; charset=UTF-8; format=flowed
Content-Transfer-Encoding: 7bit
X-purgate-ID: tlsNG-ebf023/1776952043-4B96A3FF-04756393/10/73395122804
X-purgate-type: spam
X-purgate-size: 965



On 4/21/26 11:46 AM, Jan Beulich wrote:
> On 10.04.2026 17:54, Oleksii Kurochko wrote:
>> common/device-tree/domain-build.c uses p2m_gpa_bits to determine the
>> upper bound of the GPA space when searching for unused regions, so it
>> must be defined when CONFIG_DOMAIN_BUILD_HELPERS=y.
>>
>> The variable is initialised to PADDR_BITS and narrowed in p2m_init() to
>> the GPA width of the selected G-stage mode, allowing an external entity
>> (e.g. an IOMMU) to restrict it further if needed.
>>
>> p2m_gpa_bits is a global rather than a per-domain value, which is
>> acceptable for now because all domains are required to use the same
>> G-stage MMU mode, as dom0less common code allocates it per all
>> domains.
>>
>> Signed-off-by: Oleksii Kurochko <oleksii.kurochko@gmail.com>
> 
> Pretty hesitantly:

Could you please clarify what specifically you don't like here?

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

Thanks.

~ Oleksii


From xen-devel-bounces@lists.xenproject.org Thu Apr 23 13:50:59 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 23 Apr 2026 13:50:59 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1292121.1570693 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wFuSH-0002pM-8U; Thu, 23 Apr 2026 13:50:57 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1292121.1570693; Thu, 23 Apr 2026 13:50: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 1wFuSH-0002pF-5W; Thu, 23 Apr 2026 13:50:57 +0000
Received: by outflank-mailman (input) for mailman id 1292121;
 Thu, 23 Apr 2026 13:50:56 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92) id 1wFuSG-0002p9-8z
 for xen-devel@lists.xenproject.org; Thu, 23 Apr 2026 13:50:56 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wFuSF-00BPby-Lr
 for xen-devel@lists.xenproject.org; Thu, 23 Apr 2026 15:50:55 +0200
Received: from [10.42.69.2] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <oleksii.kurochko@gmail.com>)
 id 69ea23b3-2eae-0a2a0a5409dd-0a2a4502bfee-22
 for <xen-devel@lists.xenproject.org>; Thu, 23 Apr 2026 15:50:55 +0200
Received: from [209.85.208.169] (helo=mail-lj1-f169.google.com)
 by tlsNG-720697.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.1)
 (envelope-from <oleksii.kurochko@gmail.com>)
 id 69ea23bf-af86-0a2a45020019-d155d0a9b9b8-3
 for <xen-devel@lists.xenproject.org>; Thu, 23 Apr 2026 15:50:55 +0200
Received: by mail-lj1-f169.google.com with SMTP id
 38308e7fff4ca-38e7b8e3f38so55808571fa.3
 for <xen-devel@lists.xenproject.org>; Thu, 23 Apr 2026 06:50:55 -0700 (PDT)
Received: from [192.168.1.6] (user-109-243-69-121.play-internet.pl.
 [109.243.69.121]) by smtp.gmail.com with ESMTPSA id
 38308e7fff4ca-3905419b4f2sm19914961fa.6.2026.04.23.06.50.53
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Thu, 23 Apr 2026 06:50:54 -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=20251104 header.d=gmail.com header.i="@gmail.com" header.h="Content-Transfer-Encoding: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=20251104; t=1776952255; x=1777557055; darn=lists.xenproject.org;
        h=content-transfer-encoding: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;
        bh=F+xDF5Q/j7k749bHsNpY+XuPQYXix7H4Zz8qtwPDibU=;
        b=HSBjy3WoCqwCWKGWcftbK3hnYQhx47WMZHlb1XLk0+62Nvs4R2PCdzn/PyDorh1zfO
         /jLr4uLH8nqL3AtLnfNvkdL56/s/svhKlyEhQR+puStsQhVwdtSyalJ2J7htHXeDeKeP
         d6VwGY5FEgGx7UTlLcQamRYeSt8mQ2mZWvOK/hfcMce9vBpKfh6XwSaRp5G8EUKQQ8Fu
         zjqY2IqZBig6EJgVlddm5XHMgpEkXxiB9OchwBW7/vCLETFLcDsWn+abBalthRXRlfoZ
         fEHaBl5PrQYAMjNgWgHK9cdhkkO8pHDv/STYgJIywhfOZjfH+ko3CqogZlEyeLNIhR58
         NHcQ==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20251104; t=1776952255; x=1777557055;
        h=content-transfer-encoding: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;
        bh=F+xDF5Q/j7k749bHsNpY+XuPQYXix7H4Zz8qtwPDibU=;
        b=Jnbfzt3xB1ejT5Lxe51dj60tRUfJJYvtW/Hpz7AZbHRUNAObV1RLI1UALceOy77Awk
         BNfs062sceca/+HgCtkCfNwY5OJJJDgDND5toDDR7JrcPTsYcTtCUhUUr+A+exY5nJ5Q
         VM3OwrkhAw6k1pqSsidJJix31hPeWsNSl9KBXzU1FBPXh8netL/2avxcj67MUIlZJJq6
         f7aXQEXxhqk6BvMTPOlxfF36ABxwDgANnttYqWIHhPHWdSLOiC/Vmw5wTN1yu1z/G90K
         ivATXCj0rMvXeuvPdZPtCfpHSSvclqIyYQeZVEFkvqUe0I0+PR41kRtKyidoK1MWaRuR
         uchg==
X-Forwarded-Encrypted: i=1; AFNElJ/O+5gkOJnBeyB82rJiB8zNQg9N4MTMT5VI67sekUG0xscbb57AViSF8zL9G/ZuJAdWPF2edu2sYL4=@lists.xenproject.org
X-Gm-Message-State: AOJu0Ywb+oVv1kVmEJym0IlxZ5cpVHhLJ9X5GHekUNsjuAM0tRN2u1I0
	zAc9kAGySVx6BpkkHp/b8zVu8sttQFdvb2zOPvURkEFXmDh91WgOv9PQ
X-Gm-Gg: AeBDievN3p+iZlePfDXHgyfEBlvIgENyhpNd8S0TMmY0OcgDgE2IuE8Z28jU8/NqblW
	WOdT1YopHXIu7DTT+8tz5gI3DTBCQQjt4jvAsfs1yKI/cupdM1l2ts1VpAvk2YisxctmlY5/TXY
	Vo0hY0ZluyBQzmc+3Vmsw7kJMGT9boLsf0vW4eKUIOXwj7fZuD/XZzyUOMUUt4Gvg5+b9HaMoyU
	TkHHYIzNVhNgG5ByChE4q2+FjviQ8lPxUkDkAqcRsE5C5qEG6XMbK0ajo//LS2WXEGQrLsPzbnv
	wFMkauN2Q75KukvwRbSDD4SwJ/wdnphhOsBA6tzp1Q8JRtxZkwCFwxjW4kgYQbvcGEk5fdfDksL
	N+uJx9jkw9ejZ+MdzGOX8bj2LioJYdsI6zrlbICIfI0PJiuU6lm1csRvKgiCh0vj2ab2W2w5Ni/
	VXv4b6YPGbvJjEi8Bkh05Cky7I0F0cvqCbrcE87dQFKJNcQJOcR0zwahQ1ksLQ9KRk4gJ4vHO2C
	q+DCyXDUyWCjA==
X-Received: by 2002:a05:651c:b10:b0:38e:7c63:57b with SMTP id 38308e7fff4ca-38ec7b4f659mr84741791fa.32.1776952254649;
        Thu, 23 Apr 2026 06:50:54 -0700 (PDT)
Message-ID: <d24ac333-2d09-4a07-89c6-e9c6a642f4ec@gmail.com>
Date: Thu, 23 Apr 2026 15:50:53 +0200
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH v3 11/12] xen/riscv: add definition of guest RAM banks
To: Jan Beulich <jbeulich@suse.com>
Cc: Romain Caritey <Romain.Caritey@microchip.com>,
 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.pau@citrix.com>,
 Stefano Stabellini <sstabellini@kernel.org>, xen-devel@lists.xenproject.org
References: <cover.1775836193.git.oleksii.kurochko@gmail.com>
 <8280fe1a5effacd595d3dd69b2b11e06226411b2.1775836193.git.oleksii.kurochko@gmail.com>
 <a6d09913-3de1-463f-8143-69911af0150e@suse.com>
Content-Language: en-US
From: Oleksii Kurochko <oleksii.kurochko@gmail.com>
In-Reply-To: <a6d09913-3de1-463f-8143-69911af0150e@suse.com>
Content-Type: text/plain; charset=UTF-8; format=flowed
Content-Transfer-Encoding: 8bit
X-purgate-ID: tlsNG-720697/1776952255-8117D161-884621ED/10/73395122804
X-purgate-type: spam
X-purgate-size: 1514



On 4/21/26 12:24 PM, Jan Beulich wrote:
> On 10.04.2026 17:54, Oleksii Kurochko wrote:
>> The dom0less solution uses defined RAM banks as compile-time constants,
>> so introduce macros to describe guest RAM banks.
>>
>> The reason for 2 banks is that there is typically always a use case for
>> low memory under 4 GB, but the bank under 4 GB ends up being small because
>> there are other things under 4 GB it can conflict with (interrupt
>> controller, PCI BARs, etc.). So a second bank is added above that MMIO
>> region (starting at 8 GiB) to provide the remaining RAM; the gap between
>> the two banks also exercises code paths handling discontiguous memory.
>> For Sv32 guests (34-bit GPA, 16 GiB addressable), bank0 provides 2 GB
>> (2–4 GB) and the first 8 GB of bank1 (8–16 GB) is accessible.
>>
>> Extended regions are useful for RISC-V: they could be used to provide a
>> "space" for Linux to map grant mappings.
>>
>> Despite the fact that for every guest MMU mode the GPA could be up
>> to 56 bits wide (except Sv32 whose GPA is 34 bits), the combined size
>> of both banks is limited to 1018 GB as it is more than enough for most
>> use cases.
>>
>> Add inclusion of asm/guest-layout.h to asm/domain.h to make dom0less
>> common code build happy.
>>
>> Signed-off-by: Oleksii Kurochko <oleksii.kurochko@gmail.com>
> 
> Again pretty hesitantly:

I suppose beucase of hard-coded layout, right?

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

Thanks.

~ Oleksii


From xen-devel-bounces@lists.xenproject.org Thu Apr 23 13:59:02 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 23 Apr 2026 13:59:02 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1292137.1570702 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wFua0-0003ta-Vy; Thu, 23 Apr 2026 13:58:56 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1292137.1570702; Thu, 23 Apr 2026 13:58: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 1wFua0-0003tT-Su; Thu, 23 Apr 2026 13:58:56 +0000
Received: by outflank-mailman (input) for mailman id 1292137;
 Thu, 23 Apr 2026 13:58:56 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <olekstysh@gmail.com>) id 1wFua0-0003tN-1c
 for xen-devel@lists.xenproject.org; Thu, 23 Apr 2026 13:58:56 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wFuZz-00BRQ7-EZ
 for xen-devel@lists.xenproject.org; Thu, 23 Apr 2026 15:58:55 +0200
Received: from [10.42.69.7] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <olekstysh@gmail.com>)
 id 69ea2581-bab6-0a2a0a5309dd-0a2a4507d1b8-46
 for <xen-devel@lists.xenproject.org>; Thu, 23 Apr 2026 15:58:55 +0200
Received: from [209.85.128.49] (helo=mail-wm1-f49.google.com)
 by tlsNG-ef75cf.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.1)
 (envelope-from <olekstysh@gmail.com>)
 id 69ea259f-229c-0a2a45070019-d1558031b5bc-3
 for <xen-devel@lists.xenproject.org>; Thu, 23 Apr 2026 15:58:55 +0200
Received: by mail-wm1-f49.google.com with SMTP id
 5b1f17b1804b1-488b150559bso53402695e9.1
 for <xen-devel@lists.xenproject.org>; Thu, 23 Apr 2026 06:58:55 -0700 (PDT)
Received: from [192.168.0.112] ([91.123.151.42])
 by smtp.gmail.com with ESMTPSA id
 ffacd0b85a97d-43fe4e4daf2sm52032005f8f.33.2026.04.23.06.58.53
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Thu, 23 Apr 2026 06:58:53 -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=20251104 header.d=gmail.com header.i="@gmail.com" header.h="Content-Transfer-Encoding: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=20251104; t=1776952735; x=1777557535; darn=lists.xenproject.org;
        h=content-transfer-encoding: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;
        bh=jtOs/FsZMaCwgHfT225WIJoHwl54zjs3xyeZxIUICp4=;
        b=jbT7f1GHIlsjJxvfDOiqN2BGZrWFv+/Onb1N7qwlofZ90gZINP14KbUpbMT250Pngh
         /UdMW9tkIngq47zRPDeghd6RFVYxka6FesF6mkVFp/7ND3BwhfLHTUHZxA29StFQoTIl
         CADhdWvgye5dxW1EFdL6eSn67w5ztbcPlGVuFfWsHaTTZI7Ja3N3CJGbn3gwb5vGNkKC
         cGKDkv/P+j3QoXp88Ugh6pl4YwuMlgcrUfUgrhOzd3CHiMGvFdSgwgdgefng3HPbeHle
         f/t2keoWoPO26nI65yviUGB5x0QP3FK0W+CSF0EQbeQdpIxw6SLrmZz1Og75MoWZ6He2
         88gA==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20251104; t=1776952735; x=1777557535;
        h=content-transfer-encoding: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;
        bh=jtOs/FsZMaCwgHfT225WIJoHwl54zjs3xyeZxIUICp4=;
        b=kQfdMlVhxQZSoDxGSMtiIUCX32NdXVzRFr3FVQ4BSamxO4B4M6ia5R7vkcaA7iLmek
         mnLNcj2lI8AY6DuZz9dXvAo3NUuoW8FqD/RXs6A7Kgw3wsuAS/b3Xh4Z5GB2TmPuRtd/
         gHkm/twW5ZolnZXSNpiZqFcwMOxms7CyzxEbu4q41NdPvQerqS5qHypBOuxEwFWr+g+x
         dGcDrOqK8yvR1LbIUIHNYAf1n1A35BPByITjiXM2JSpbrAawx9wZ6HN0gkHp9YvxpgOC
         o5++HlNIFkz6eZfxEkz9BGer0wU9byEjhNLGmk6wqdF25kT23ZXAtTf7fMvzNsd6bOwC
         wFGA==
X-Forwarded-Encrypted: i=1; AFNElJ/EcJTRH4cdRUdWKO6/bud/klr3/OZvC0AX1g7H6+BCvujgBYJxUqRQGDUmQJMevBM1G5nV7P+NYd0=@lists.xenproject.org
X-Gm-Message-State: AOJu0YyKTsfKhPXvg44g/Z0sguHqtoDia3jqj6NvTX6sSUq56y3VTR0I
	1vKMXtTxfApAK8Aidfp5eYXh1s9LECShLXFl7a/THYRNQgPxNbirG1Om
X-Gm-Gg: AeBDievuZZev7bBCzb0yzwzC8jwVaJGOZ1ona87kbmPmD7U3vJGQzmWCWXaxj35GRgK
	JUPC1cvdn3dDdzTSzVjrdlBumZxnxyBb4U2vfQBy8Nf7nPxtqUwUecWRYlTyXcryyKE8wOQGdAr
	Zxb3UWYzmW+/5GpB1YCdNzGIMJ31Me28Z1cG7R0YBv4p20fEQVMvgT5Dsv+bBmCljv3m+2b65FF
	oO/dLwymFVhQ0k2zEXnXfAZS2bNGmP1m79eePF4goeezTV8+akt/f0SnZG9p1ovHU18HXuHOR3I
	T5BfSxoRRkCtkHyq5fNKCyABFN0y91W+J31wnUJQOV4AlM01zzWuaMOUgOCK6Jrcwo5z1COkIQ3
	8jPbA1Uw3XZnW9MMBYOHEMrPXyH4Xid4WRbsDu1tSWT3eD3gSoJZIf+sFwx9oFLT3t+gQL4cVt6
	0lWl7ychRbd5nwJHoP+tBg96jpGgD5gxOOsYAq
X-Received: by 2002:a05:600d:8408:b0:486:ff92:63e5 with SMTP id 5b1f17b1804b1-488fb73dc6fmr311275065e9.6.1776952734418;
        Thu, 23 Apr 2026 06:58:54 -0700 (PDT)
Message-ID: <166ff356-2f48-4bb6-bb76-96c0f66ba9be@gmail.com>
Date: Thu, 23 Apr 2026 16:58:52 +0300
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH v3] xen/arm: smmuv3: Add support for removing devices
To: Mykyta Poturai <Mykyta_Poturai@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>
References: <d9f90d511208d17f0a98db5d858955f8adfecc03.1776851790.git.mykyta_poturai@epam.com>
Content-Language: en-US
From: Oleksandr Tyshchenko <olekstysh@gmail.com>
In-Reply-To: <d9f90d511208d17f0a98db5d858955f8adfecc03.1776851790.git.mykyta_poturai@epam.com>
Content-Type: text/plain; charset=UTF-8; format=flowed
Content-Transfer-Encoding: 7bit
X-purgate-ID: tlsNG-ef75cf/1776952735-2B57BC48-F0C72AAC/0/0
X-purgate-type: clean
X-purgate-size: 7445



On 4/22/26 12:57, Mykyta Poturai wrote:

Hello Mykyta

> Allow for removing devices from SMMUv3. arm_smmu_deassign_dev handles
> most of the work by disabling ATS and zeroing STEs. Additionally, unset
> the dt_device_is_protected flag and free no longer needed smmu_master.
> Free iommu_fwspec for PCI devices only, for DT devices it is handled by
> generic IOMMU layer.
> 
> Rework dt_device_set_protected to accept a boolean parameter, update
> callsites.
> 
> Signed-off-by: Mykyta Poturai <mykyta_poturai@epam.com>
> ---
> Tested on QEMU with SRIOV series[1] by repeatedly enabling/disabling
> VFs.
> 
> [1]: https://patchew.org/Xen/cover.1772806036.git.mykyta._5Fpoturai@epam.com/
> 
> V2->V3:
> * free fwspec for pci devices
> * remove testing note from commit message
> 
> V1->V2:
> * check for phantom functions
> * simplify pci/dt device split
> * improve error handling
> * don't try to free master for unprotected devices
> * rework dt_device_set_protected

Thanks, this looks much better now. Mostly looks ok to me, but I have 
several comments.


> ---
>   xen/drivers/passthrough/arm/ipmmu-vmsa.c |  2 +-
>   xen/drivers/passthrough/arm/smmu-v3.c    | 65 +++++++++++++++++++++++-
>   xen/drivers/passthrough/arm/smmu.c       |  4 +-
>   xen/include/xen/device_tree.h            |  5 +-
>   4 files changed, 70 insertions(+), 6 deletions(-)
> 
> diff --git a/xen/drivers/passthrough/arm/ipmmu-vmsa.c b/xen/drivers/passthrough/arm/ipmmu-vmsa.c
> index fa9ab9cb13..0648f9b407 100644
> --- a/xen/drivers/passthrough/arm/ipmmu-vmsa.c
> +++ b/xen/drivers/passthrough/arm/ipmmu-vmsa.c
> @@ -1367,7 +1367,7 @@ static int ipmmu_add_device(u8 devfn, struct device *dev)
>           }
>   
>           /* Let Xen know that the master device is protected by an IOMMU. */
> -        dt_device_set_protected(dev_to_dt(dev));
> +        dt_device_set_protected(dev_to_dt(dev), true);
>       }
>   #ifdef CONFIG_HAS_PCI
>       if ( dev_is_pci(dev) )
> diff --git a/xen/drivers/passthrough/arm/smmu-v3.c b/xen/drivers/passthrough/arm/smmu-v3.c
> index bf153227db..a46c421399 100644
> --- a/xen/drivers/passthrough/arm/smmu-v3.c
> +++ b/xen/drivers/passthrough/arm/smmu-v3.c
> @@ -1493,6 +1493,68 @@ static int arm_smmu_assign_dev(struct domain *d, u8 devfn, struct device *dev,
>   static int arm_smmu_deassign_dev(struct domain *d, uint8_t devfn,
>   				 struct device *dev);
>   
> +static int arm_smmu_remove_device(u8 devfn, struct device *dev)

Inconsistent devfn type: arm_smmu_remove_device() uses u8,
but int (*remove_device)(uint8_t devfn, device_t *dev); uses uint8_t.


> +{
> +	struct arm_smmu_master *master;
> +	struct iommu_fwspec *fwspec;
> +	struct domain *d = NULL;
> +
> +	fwspec = dev_iommu_fwspec_get(dev);
> +	if ( !fwspec )
> +		return -ENODEV;
> +
> +	master = dev_iommu_priv_get(dev);
> +	if ( !master )
> +		return -ENODEV;
> +
> +	if ( IS_ENABLED(CONFIG_HAS_PCI) && dev_is_pci(dev) )
> +	{
> +		struct pci_dev *pdev = dev_to_pci(dev);

arm_smmu_assign_dev() has ASSERT(pcidevs_locked()) in its PCI path, 
while arm_smmu_remove_device() does not. pci_remove_device() holds 
pcidevs_lock() before calling iommu_remove_device().

So, I would add the same assertion here to document the requirement and 
guard against future callers.



> +
> +		/* Ignore calls for phantom functions */
> +		if ( devfn != pdev->devfn )
> +			return 0;
> +
> +		d = pdev->domain;
> +	}
> +	else
> +	{
> +		if ( !dt_device_is_protected(dev_to_dt(dev)) )
> +		{
> +			dev_err(dev, "Not added to SMMUv3\n");
> +			return -ENODEV;
> +		}
> +
> +		dt_device_set_protected(dev_to_dt(dev), false);
> +		if ( master->domain && master->domain->d )
> +			d = master->domain->d;

Unless I am mistaken, for DT devices, the deassign logic is unreachable 
dead code. iommu_remove_dt_device() returns -EBUSY if the device is 
still assigned, guaranteeing master->domain == NULL. This means that ...


> +	}
> +
> +	if ( d )
> +	{

  ... this block only has effect for PCI.


I would consider adding a comment and ASSERT, something like:
/*
  * For DT devices, iommu_remove_dt_device() returns -EBUSY if the
  * device is still assigned, so d is always NULL on the DT path.
  */
ASSERT(dev_is_pci(dev));


the rest looks good


> +		int ret = arm_smmu_deassign_dev(d, devfn, dev);
> +		/* This should never fail because we already checked the domain */
> +		ASSERT(!ret);
> +	}
> +
> +	arm_smmu_disable_pasid(master);
> +
> +	dev_info(dev, "Removed master device (SMMUv3 %s StreamIds %u)\n",
> +		 dev_name(fwspec->iommu_dev), fwspec->num_ids);
> +
> +	xfree(master);
> +	dev_iommu_priv_set(dev, NULL);
> +
> +	/*
> +	 * For DT devices the fwspec is freed by iommu subsystem, but for PCI
> +	 * devices we need to free it here
> +	 */
> +	if ( IS_ENABLED(CONFIG_HAS_PCI) && dev_is_pci(dev) )
> +	    iommu_fwspec_free(dev);
> +
> +	return 0;
> +}
> +
>   static int arm_smmu_add_device(u8 devfn, struct device *dev)
>   {
>   	int i, ret;
> @@ -1571,7 +1633,7 @@ static int arm_smmu_add_device(u8 devfn, struct device *dev)
>   		}
>   
>   		/* Let Xen know that the master device is protected by an IOMMU. */
> -		dt_device_set_protected(dev_to_dt(dev));
> +		dt_device_set_protected(dev_to_dt(dev), true);
>   	}
>   
>   	dev_info(dev, "Added master device (SMMUv3 %s StreamIds %u)\n",
> @@ -2867,6 +2929,7 @@ static const struct iommu_ops arm_smmu_iommu_ops = {
>   	.unmap_page		= arm_iommu_unmap_page,
>   	.dt_xlate		= arm_smmu_dt_xlate,
>   	.add_device		= arm_smmu_add_device,
> +	.remove_device		= arm_smmu_remove_device,
>   };
>   
>   static __init int arm_smmu_dt_init(struct dt_device_node *dev,
> diff --git a/xen/drivers/passthrough/arm/smmu.c b/xen/drivers/passthrough/arm/smmu.c
> index d63c901551..4d2f71f152 100644
> --- a/xen/drivers/passthrough/arm/smmu.c
> +++ b/xen/drivers/passthrough/arm/smmu.c
> @@ -825,7 +825,7 @@ static int arm_smmu_dt_add_device_legacy(struct arm_smmu_device *smmu,
>   	if ( !dev_is_pci(dev) )
>   	{
>   		/* Xen: Let Xen know that the device is protected by an SMMU */
> -		dt_device_set_protected(dev_node);
> +		dt_device_set_protected(dev_node, true);
>   	}
>   
>   	for (i = 0; i < fwspec->num_ids; ++i) {
> @@ -862,7 +862,7 @@ static int arm_smmu_dt_remove_device_legacy(struct arm_smmu_device *smmu,
>   
>   	if ( !dev_is_pci(dev) )
>   		/* Protected by dt_host_lock and dtdevs_lock as caller holds these locks. */
> -		dev_node->is_protected = false;
> +		dt_device_set_protected(dev_node, false);
>   
>   	kfree(master);
>   	return 0;
> diff --git a/xen/include/xen/device_tree.h b/xen/include/xen/device_tree.h
> index 06d7643622..76ae1e674a 100644
> --- a/xen/include/xen/device_tree.h
> +++ b/xen/include/xen/device_tree.h
> @@ -300,9 +300,10 @@ static inline domid_t dt_device_used_by(const struct dt_device_node *device)
>       return device->used_by;
>   }
>   
> -static inline void dt_device_set_protected(struct dt_device_node *device)
> +static inline void dt_device_set_protected(struct dt_device_node *device,
> +                                           bool protected)
>   {
> -    device->is_protected = true;
> +    device->is_protected = protected;
>   }
>   
>   static inline bool dt_device_is_protected(const struct dt_device_node *device)



From xen-devel-bounces@lists.xenproject.org Thu Apr 23 14:46:42 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 23 Apr 2026 14:46:42 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1292188.1570715 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wFvK4-0003A8-E0; Thu, 23 Apr 2026 14:46:32 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1292188.1570715; Thu, 23 Apr 2026 14:46: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 1wFvK4-0003A1-A1; Thu, 23 Apr 2026 14:46:32 +0000
Received: by outflank-mailman (input) for mailman id 1292188;
 Thu, 23 Apr 2026 14:46:31 +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.19dbace7684000f373@swg.vates.tech>)
 id 1wFvK2-00039v-Nx
 for xen-devel@lists.xenproject.org; Thu, 23 Apr 2026 14:46:31 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wFvK2-00BDbY-0G
 for xen-devel@lists.xenproject.org; Thu, 23 Apr 2026 16:46:30 +0200
Received: from [10.42.69.2] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1) (envelope-from
 <prod-mta-13.8631fc262581453bbf619ec5b2062170.19dbace7684000f373@swg.vates.tech>)
 id 69ea30bd-bab6-0a2a0a5309dd-0a2a4502d716-28
 for <xen-devel@lists.xenproject.org>; Thu, 23 Apr 2026 16:46:29 +0200
Received: from [185.255.28.34] (helo=prod-mta-13.swg-srv.net)
 by tlsNG-720697.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.1)
 (envelope-from
 <prod-mta-13.8631fc262581453bbf619ec5b2062170.19dbace7684000f373@swg.vates.tech>)
 id 69ea30c5-af86-0a2a45020019-b9ff1c229b7f-3
 for <xen-devel@lists.xenproject.org>; Thu, 23 Apr 2026 16:46:29 +0200
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
 19dbace7684000f373.002 for <xen-devel@lists.xenproject.org>
 (version=TLSv1.3 cipher=TLS_AES_256_GCM_SHA384);
 Thu, 23 Apr 2026 14:46:26 +0000
Received: from xps13-debian.gpn.vates.fr
 (lfbn-mon-1-1130-120.w90-48.abo.wanadoo.fr [90.48.233.120])
 (Authenticated sender: thierry.escande)
 by mail2.vates.fr (Postfix) with ESMTPSA id 8E74B86015;
 Thu, 23 Apr 2026 16:46:25 +0200 (CEST)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@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=lowfzwAIaXv7twmBRREDL/AXqU/wdqNpjErglxPSL1w=;
 h=from:subject:date:message-id:to:cc:mime-version:content-type:feedback-id;
 b=jay++uS1v9fLVAWBVAOzSJPHFlEjkw3LVHwEjVe9U3EfdH1KR5t9CAisfdsFodJpqgyq6c1D+
 Mjq/q6tQYwSaMfDES+oCj4BkZoLRGPVp2bHojKsq4MqJDhvhgEaPlMvbUW9eDvyE/IyVTd17bUX
 e4ko1+16CZFy8vh4AuREvdbJCMlCYge2VQmg2fe+nkaekf4wbBG3FpT4hn0e+F53rg5W0swXOPQ
 trJkxq20eQ4hVqLVwGbTWE/kgI1nq6BRoblBp+iCtP2X3fpfQA5gzFrUFaY3qPlah9Zh/IZGq5H
 5iRaTzkEIY/GU0oojCvbjOdzqaiEa3fb55OJlQozoUFg==
X-Zone-Loop: 5c73c3e7902362cf8a4029f853949f07dbff3d460e1a
x-campaign-type: default
x-transaction-id: 09e24afa-8bc8-4642-bf4c-eb19ce9ac08f
x-swg-uid: 01-ac788c85-1e37-464a-8870-3cc7c4ac7cce
X-Mailer: Sweego
Message-ID:
 <1776955586.8631fc262581453bbf619ec5b2062170.19dbace7684000f373@vates.tech>
x-swg-bid: 1776955586.8631fc262581453bbf619ec5b2062170.19dbace7684000f373
Feedback-ID: default:8631fc262581453bbf619ec5b2062170:Sweego
x-campaign-id: default
x-client-id: 8631fc262581453bbf619ec5b2062170
X-Originating-IP: [37.26.189.201]
From: Thierry Escande <thierry.escande@vates.tech>
To: xen-devel@lists.xenproject.org
Cc: Thierry Escande <thierry.escande@vates.tech>,
	Anthony PERARD <anthony.perard@vates.tech>,
	Juergen Gross <jgross@suse.com>,
	=?UTF-8?q?Daniel=20P=20=2E=20Berrang=C3=A9?= <berrange@redhat.com>,
	=?UTF-8?q?Marek=20Marczykowski-G=C3=B3recki?= <marmarek@invisiblethingslab.com>
Subject: [RFC PATCH v4 0/6] xl: Allow PCI devices to be passthrough'd via Qemu command line
Date: Thu, 23 Apr 2026 16:46:10 +0200
MIME-Version: 1.0
Content-Transfert-Encoding: 8bit
X-BM-Disclaimer: Yes
Content-Type: multipart/alternative; boundary="-=Part.2738.9a73b4bc15a7d56d.19dbace74b2.a262829cedf10721=-"
X-Bm-Milter-Handled: 4ffbd6c1-ee69-4e1b-aabd-f977039bd3e2
X-Bm-Transport-Timestamp: 1776955585714
X-purgate-ID: tlsNG-720697/1776955589-81971161-4D35BBA0/0/0
X-purgate-type: clean
X-purgate-size: 3394

---=Part.2738.9a73b4bc15a7d56d.19dbace74b2.a262829cedf10721=-
Content-Type: text/plain; charset=utf-8
Content-Transfer-Encoding: quoted-printable

This series adds new 'hotplug' option for PCI device passthrough=2E

The current mechanism for device passthrough uses QMP device_add command
to hot-plug PCI devices to the guest Qemu instance=2E This is an issue for
guests running on Q35 chipset (preliminary support posted at [1]) since th=
e
Q35 PCI root bus does not support hotplug=2E Devices could be hotplugged t=
o
a secondary PCI bus but Xen only support 1 PCI bus for now=2E

The 'hotplug' option allows to control how devices are attached to the
guest, either by using the legacy QMP mechanism (this is the default) or b=
y
passing them directly to the Qemu command line using xen-pci-passthrough
device=2E

Example usage in cfg file:
 pci =3D [ "00:03=2E0,seize=3D1,hotplug=3D0" ]

Since Qemu -device option accepts parameters in json format, this
patchset adds a new internal function libxl__device_pci_get_qapi_json() th=
at
generates the device json object used for both QMP hotplug and command lin=
e
passing=2E

Also, to handle the assignable PCI device list, the function
libxl_pci_assignable() is renamed as libxl_device_pci_assignable() and is
made available from libxl=2Eh for access in libxl_dm=2Ec=2E 2 other functi=
ons are
also exported internally: libxl__pciback_dev_is_assigned() and
libxl__device_pci_assignable_add()=2E

This has been successfully tested on Xen 4=2E22-dev and Qemu 10=2E0 runnin=
g
Debian VMs in both Bios and UEFI mode with a passthrough'd nvme disk=2E
Disabling the hotplug mechanism might be made mandatory for Q35 machines
later, once Q35 support is merged upstream=2E

[1] https://lore=2Ekernel=2Eorg/xen-devel/20260313163455=2E790692-1-thierr=
y=2Eescande@vates=2Etech/

Changes in v2:
 - Add support for YAJL json parser

Changes in v3:
 - Move code block of device command line parameters creation
 - Better handling of pci device assignation

Changes in v4:
 - Split the refactoring parts of the 2nd patch
 - Extend libxl__json_object_to_json() and use it to generate the qapi jso=
n
   string

Thierry Escande (6):
  xl: Add an hotplug option for PCI device passthrough
  libxl: Refactor some PCI device handling functions
  libxl: Add libxl__device_pci_get_qapi_json() internal API
  libxl: Extend libxl__json_object_to_json() prototype
  libxl: Allow PCI device passthrough using -device Qemu command line
  docs: provide description for pci hotplug option

 docs/man/xl-pci-configuration=2E5=2Epod | 17 +++++++++
 docs/man/xl=2Ecfg=2E5=2Epod=2Ein            |  6 +++
 tools/include/libxl=2Eh               |  1 +
 tools/libs/light/libxl_dm=2Ec         | 33 +++++++++++++++++
 tools/libs/light/libxl_internal=2Eh   | 12 +++++-
 tools/libs/light/libxl_json=2Ec       | 11 +++++-
 tools/libs/light/libxl_pci=2Ec        | 57 ++++++++++++++++++++---------
 tools/libs/light/libxl_types=2Eidl    |  1 +
 tools/libs/util/libxlu_pci=2Ec        |  2 +
 tools/xl/xl_parse=2Ec                 |  5 +++
 10 files changed, 123 insertions(+), 22 deletions(-)

--=20
2=2E53=2E0



-- 
Thierry Escande | Vates XCP-ng Developer

XCP-ng & Xen Orchestra - Vat=
es solutions

web: https://vates=2Etech
---=Part.2738.9a73b4bc15a7d56d.19dbace74b2.a262829cedf10721=---


From xen-devel-bounces@lists.xenproject.org Thu Apr 23 14:48:11 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 23 Apr 2026 14:48:11 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1292200.1570724 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wFvLY-00048Y-Qs; Thu, 23 Apr 2026 14:48:04 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1292200.1570724; Thu, 23 Apr 2026 14: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 1wFvLY-00048R-Nj; Thu, 23 Apr 2026 14:48:04 +0000
Received: by outflank-mailman (input) for mailman id 1292200;
 Thu, 23 Apr 2026 14:48: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.19dbacfe0b3000f373@swg.vates.tech>)
 id 1wFvLX-00048J-Mn
 for xen-devel@lists.xenproject.org; Thu, 23 Apr 2026 14:48:03 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wFvLX-00BbIO-3Z
 for xen-devel@lists.xenproject.org; Thu, 23 Apr 2026 16:48:03 +0200
Received: from [10.42.69.1] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1) (envelope-from
 <prod-mta-13.8631fc262581453bbf619ec5b2062170.19dbacfe0b3000f373@swg.vates.tech>)
 id 69ea311a-2eae-0a2a0a5409dd-0a2a4501845c-30
 for <xen-devel@lists.xenproject.org>; Thu, 23 Apr 2026 16:48:03 +0200
Received: from [185.255.28.34] (helo=prod-mta-13.swg-srv.net)
 by tlsNG-d62444.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.1)
 (envelope-from
 <prod-mta-13.8631fc262581453bbf619ec5b2062170.19dbacfe0b3000f373@swg.vates.tech>)
 id 69ea3122-c1f2-0a2a45010019-b9ff1c2285a9-3
 for <xen-devel@lists.xenproject.org>; Thu, 23 Apr 2026 16:48:02 +0200
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
 19dbacfe0b3000f373.002 for <xen-devel@lists.xenproject.org>
 (version=TLSv1.3 cipher=TLS_AES_256_GCM_SHA384);
 Thu, 23 Apr 2026 14:47:58 +0000
Received: from l14 (lfbn-lyo-1-414-55.w2-7.abo.wanadoo.fr [2.7.24.55])
 (Authenticated sender: anthony.perard)
 by mail2.vates.fr (Postfix) with ESMTPSA id 21674873B3;
 Thu, 23 Apr 2026 16:47:58 +0200 (CEST)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@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=Wjam52wM4t5fu8hd5y0BF/RarPoTPN27K7lgxJnMIPI=;
 h=from:subject:date:message-id:to:cc:mime-version:content-type:in-reply-to:references:feedback-id;
 b=UZduqRR20nwRJmiN9CcpTBgYdRxY2oZ63RhcjSjxBUSE3gyUhca5N6EDDIuQFEzT0l9bJJzq7
 NYfe8UcRluB5nwDXlSNgDBRK2GZQf6pX28WO0eFVp8F1sVwMhO7RhvQabr9Y/coGItlW6OWE5sk
 Kn+GUqC967J8h1T2lxlgtFtFyr/nZgztBs/KbKE7HP9sP+mdrbS122dpnlpSyO5sE8mrd87/JQh
 0GFUnXUu3G6upzV0mHZt5Ldvpe+2lENmqmUpozUiOplIc3jfm0ev32LxfHSLQjqtDF2vdlJINAN
 rW1Qj+9aFxKHI3MUqtK6RkInReVvMR8YGcEmziAGb4Vg==
X-Zone-Loop: f71bce721eb1bad744635f2c584ac4462fc4330cfc57
x-campaign-type: default
x-transaction-id: e97d7f08-8e9c-4c73-ba48-479999152184
x-swg-uid: 01-264f490e-ffd8-46f0-b60b-b9301dad5ed6
X-Mailer: Sweego
Message-ID:
 <1776955678.8631fc262581453bbf619ec5b2062170.19dbacfe0b3000f373@vates.tech>
x-swg-bid: 1776955678.8631fc262581453bbf619ec5b2062170.19dbacfe0b3000f373
Feedback-ID: default:8631fc262581453bbf619ec5b2062170:Sweego
x-campaign-id: default
x-client-id: 8631fc262581453bbf619ec5b2062170
X-Originating-IP: [37.26.189.201]
Date: Thu, 23 Apr 2026 16:47:57 +0200
From: Anthony PERARD <anthony.perard@vates.tech>
To: Jason Andryuk <jason.andryuk@amd.com>
Cc: Thierry Escande <thierry.escande@vates.tech>,
	xen-devel@lists.xenproject.org, Jan Beulich <jbeulich@suse.com>
Subject: Re: [PATCH v2] install.sh: Preserve symlinks in destination file
 system
References: <20260319165047.900047-1-thierry.escande@vates.tech>
 <c64842e7-9b13-4549-a57c-1a642d7e1803@amd.com>
MIME-Version: 1.0
Content-Disposition: inline
In-Reply-To: <c64842e7-9b13-4549-a57c-1a642d7e1803@amd.com>
X-BM-Disclaimer: Yes
Content-Type: multipart/alternative; boundary="-=Part.273b.47cdd80120cedfb4.19dbacfde1a.a3521e772715a28a=-"
X-Bm-Milter-Handled: 4ffbd6c1-ee69-4e1b-aabd-f977039bd3e2
X-Bm-Transport-Timestamp: 1776955678234
X-purgate-ID: tlsNG-d62444/1776955683-BE265FF4-3B696FE4/0/0
X-purgate-type: clean
X-purgate-size: 1262

---=Part.273b.47cdd80120cedfb4.19dbacfde1a.a3521e772715a28a=-
Content-Type: text/plain; charset=utf-8
Content-Transfer-Encoding: quoted-printable

On Fri, Mar 20, 2026 at 10:04:18AM -0400, Jason Andryuk wrote:
> On 2026-03-19 12:50, Thierry Escande wrote:
> > In various distros (i=2Ee=2E Debian), /lib is a symbolic link=2E The t=
ar
> > command in install=2Esh replaces the /lib symlink with a directory and
> > results in a non-functioning system=2E This has been introduced by the
> > installation of the systemd watchdog sleep script in /lib/systemd=2E
> >=20
> > This patch adds the tar option --dereference (-h for short) to preserv=
e
> > symlinks when extracting the dist archive=2E
> >=20
> > Fixes: e54a6cd6a1f3 ("systemd: Add hooks to stop/start xen-watchdog on=
 suspend/resume")
> > Signed-off-by: Thierry Escande <thierry=2Eescande@vates=2Etech>
>=20
> Reviewed-by: Jason Andryuk <jason=2Eandryuk@amd=2Ecom>
> Tested-by: Jason Andryuk <jason=2Eandryuk@amd=2Ecom>

Acked-by: Anthony PERARD <anthony=2Eperard@vates=2Etech>

Thanks,


-- 
Anthony Perard | Vates XCP-ng Developer

XCP-ng & Xen Orchestra - Vate=
s solutions

web: https://vates=2Etech
---=Part.273b.47cdd80120cedfb4.19dbacfde1a.a3521e772715a28a=---


From xen-devel-bounces@lists.xenproject.org Thu Apr 23 14:50:49 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 23 Apr 2026 14:50:49 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1292209.1570733 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wFvOC-0005dF-7D; Thu, 23 Apr 2026 14:50:48 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1292209.1570733; Thu, 23 Apr 2026 14:50: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 1wFvOC-0005d8-4F; Thu, 23 Apr 2026 14:50:48 +0000
Received: by outflank-mailman (input) for mailman id 1292209;
 Thu, 23 Apr 2026 14:50:47 +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.19dbad2669e000f373@swg.vates.tech>)
 id 1wFvOB-0005d2-2q
 for xen-devel@lists.xenproject.org; Thu, 23 Apr 2026 14:50:47 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wFvOA-00BEO4-FK
 for xen-devel@lists.xenproject.org; Thu, 23 Apr 2026 16:50:46 +0200
Received: from [10.42.69.9] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1) (envelope-from
 <prod-mta-13.8631fc262581453bbf619ec5b2062170.19dbad2669e000f373@swg.vates.tech>)
 id 69ea31ab-e002-0a2a0a5209dd-0a2a4509b0ec-30
 for <xen-devel@lists.xenproject.org>; Thu, 23 Apr 2026 16:50:46 +0200
Received: from [185.255.28.34] (helo=prod-mta-13.swg-srv.net)
 by tlsNG-bad1c0.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.1)
 (envelope-from
 <prod-mta-13.8631fc262581453bbf619ec5b2062170.19dbad2669e000f373@swg.vates.tech>)
 id 69ea31c6-2497-0a2a45090019-b9ff1c22a40f-3
 for <xen-devel@lists.xenproject.org>; Thu, 23 Apr 2026 16:50:46 +0200
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
 19dbad2669e000f373.002 for <xen-devel@lists.xenproject.org>
 (version=TLSv1.3 cipher=TLS_AES_256_GCM_SHA384);
 Thu, 23 Apr 2026 14:50:44 +0000
Received: from xps13-debian.gpn.vates.fr
 (lfbn-mon-1-1130-120.w90-48.abo.wanadoo.fr [90.48.233.120])
 (Authenticated sender: thierry.escande)
 by mail2.vates.fr (Postfix) with ESMTPSA id B8753860B1;
 Thu, 23 Apr 2026 16:50:43 +0200 (CEST)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@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=KBWl2590AHjYullwyX+MHp2jMCGp9Bq1kRreRVpo7Hg=;
 h=from:subject:date:message-id:to:cc:mime-version:content-type:in-reply-to:references:feedback-id;
 b=WV6T6gNn1hnYPsrUiEqoyfOcYYLe4YLq9YH7IiQ0T3gUFOA8uCYDlOzTXzvgPECDmejRAyAjQ
 5DVIE++Bg24jVUcdgY/GTjIBOTRMy5mYYvc/XfQoSUhqE4ldCggb1IqHLfX6TmLu3nZLALamwxy
 DAAMcnuNrxZnWY46LWnYgsU3/KJLDGBeQ1lPdJO41mv1mbsEBlEB8wYJA1iEzgnPmCTIzV6UUvK
 vqE+Ci8hgKLgyYEUiV4vcMf5p0K8qUd+B7lQA4ybQwHYdVKEAPo8Svs1Wc9n6QAHzOvHyOKgZ+x
 5oMk9gCnu4k5VKPf+lJ3OjdodLXhpO2nHGJRuidfrRfw==
X-Zone-Loop: 5d4489ed720da88da7d6f913bcc746860a10914d2ca1
x-campaign-type: default
x-transaction-id: 948046c6-d1f6-40fb-8274-2ede3dbe1a5e
x-swg-uid: 01-d4d72bf3-db56-47c3-ba66-fc4655f3a1ae
X-Mailer: Sweego
Message-ID:
 <1776955844.8631fc262581453bbf619ec5b2062170.19dbad2669e000f373@vates.tech>
x-swg-bid: 1776955844.8631fc262581453bbf619ec5b2062170.19dbad2669e000f373
Feedback-ID: default:8631fc262581453bbf619ec5b2062170:Sweego
x-campaign-id: default
x-client-id: 8631fc262581453bbf619ec5b2062170
X-Originating-IP: [37.26.189.201]
From: Thierry Escande <thierry.escande@vates.tech>
To: xen-devel@lists.xenproject.org
Cc: Thierry Escande <thierry.escande@vates.tech>,
	Anthony PERARD <anthony.perard@vates.tech>,
	Juergen Gross <jgross@suse.com>,
	=?UTF-8?q?Daniel=20P=20=2E=20Berrang=C3=A9?= <berrange@redhat.com>,
	=?UTF-8?q?Marek=20Marczykowski-G=C3=B3recki?= <marmarek@invisiblethingslab.com>
Subject: [RFC PATCH v4 1/6] xl: Add an hotplug option for PCI device passthrough
Date: Thu, 23 Apr 2026 16:50:26 +0200
In-Reply-To: <1776955586.8631fc262581453bbf619ec5b2062170.19dbace7684000f373@vates.tech>
References: <1776955586.8631fc262581453bbf619ec5b2062170.19dbace7684000f373@vates.tech>
MIME-Version: 1.0
Content-Transfert-Encoding: 8bit
X-BM-Disclaimer: Yes
Content-Type: multipart/alternative; boundary="-=Part.273d.964768495393517d.19dbad26532.9289b73646f62651=-"
X-Bm-Milter-Handled: 4ffbd6c1-ee69-4e1b-aabd-f977039bd3e2
X-Bm-Transport-Timestamp: 1776955843890
X-purgate-ID: tlsNG-bad1c0/1776955846-416B0A53-F48FF569/0/0
X-purgate-type: clean
X-purgate-size: 3610

---=Part.273d.964768495393517d.19dbad26532.9289b73646f62651=-
Content-Type: text/plain; charset=utf-8
Content-Transfer-Encoding: quoted-printable

This patch adds a boolean option to the PCI device configuration table
named hotplug=2E This will allow to control how devices are attached to
the guest, either by using the legacy QMP mechanism (this will be the
default) or by passing them directly to the Qemu command line using
xen-pci-passthrough device=2E

Sample use in xl=2Ecfg file:
 pci =3D [ "00:03=2E0,seize=3D1,hotplug=3D0" ]

If not specified, the default behavior is to use hotplug via QMP=2E

This will be needed for Q35 support in guests since the Q35 PCI root bus
doesn't support hotplugging and Xen only support 1 PCI bus for now=2E

Signed-off-by: Thierry Escande <thierry=2Eescande@vates=2Etech>
---
v2: no change

v3: no change

v4:
 - Reword commit message
---
 tools/libs/light/libxl_types=2Eidl | 1 +
 tools/libs/util/libxlu_pci=2Ec     | 2 ++
 tools/xl/xl_parse=2Ec              | 5 +++++
 3 files changed, 8 insertions(+)

diff --git a/tools/libs/light/libxl_types=2Eidl b/tools/libs/light/libxl_t=
ypes=2Eidl
index a7893460f0=2E=2Eaca0e93793 100644
--- a/tools/libs/light/libxl_types=2Eidl
+++ b/tools/libs/light/libxl_types=2Eidl
@@ -922,6 +922,7 @@ libxl_device_pci =3D Struct("device_pci", [
     ("seize", bool),
     ("rdm_policy", libxl_rdm_reserve_policy),
     ("name", string),
+    ("hotplug", bool),
     ])
=20
 libxl_device_rdm =3D Struct("device_rdm", [
diff --git a/tools/libs/util/libxlu_pci=2Ec b/tools/libs/util/libxlu_pci=
=2Ec
index 294482c6d7=2E=2Ef6440c878b 100644
--- a/tools/libs/util/libxlu_pci=2Ec
+++ b/tools/libs/util/libxlu_pci=2Ec
@@ -192,6 +192,8 @@ int xlu_pci_parse_spec_string(XLU_Config *cfg, libxl_d=
evice_pci *pci,
             name_present =3D true;
             pci->name =3D strdup(val);
             if (!pci->name) ret =3D ERROR_NOMEM;
+        } else if (!strcmp(key, "hotplug")) {
+            pci->hotplug =3D atoi(val);
         } else {
             XLU__PCI_ERR(cfg, "Unknown PCI_SPEC_STRING option: %s", key);
             ret =3D ERROR_INVAL;
diff --git a/tools/xl/xl_parse=2Ec b/tools/xl/xl_parse=2Ec
index 48c72dce9c=2E=2E7ea2a76662 100644
--- a/tools/xl/xl_parse=2Ec
+++ b/tools/xl/xl_parse=2Ec
@@ -1361,6 +1361,7 @@ void parse_config_data(const char *config_source,
     int pci_msitranslate =3D 0;
     int pci_permissive =3D 0;
     int pci_seize =3D 0;
+    int pci_hotplug =3D 1;
     int i, e;
     int num_llc_colors;
     int num_xs_quota;
@@ -1699,6 +1700,9 @@ void parse_config_data(const char *config_source,
     if (!xlu_cfg_get_long (config, "pci_seize", &l, 0))
         pci_seize =3D l;
=20
+    if (!xlu_cfg_get_long (config, "pci_hotplug", &l, 0))
+        pci_hotplug =3D l;
+
     if (!xlu_cfg_get_string(config, "rdm", &buf, 0)) {
         libxl_rdm_reserve rdm;
         if (!xlu_rdm_parse(config, &rdm, buf)) {
@@ -1720,6 +1724,7 @@ void parse_config_data(const char *config_source,
             pci->power_mgmt =3D pci_power_mgmt;
             pci->permissive =3D pci_permissive;
             pci->seize =3D pci_seize;
+            pci->hotplug =3D pci_hotplug;
             /*
              * Like other pci option, the per-device policy always follow=
s
              * the global policy by default=2E
--=20
2=2E53=2E0



-- 
Thierry Escande | Vates XCP-ng Developer

XCP-ng & Xen Orchestra - Vat=
es solutions

web: https://vates=2Etech
---=Part.273d.964768495393517d.19dbad26532.9289b73646f62651=---


From xen-devel-bounces@lists.xenproject.org Thu Apr 23 14:50:54 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 23 Apr 2026 14:50:54 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1292210.1570742 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wFvOI-0005rz-F9; Thu, 23 Apr 2026 14:50:54 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1292210.1570742; Thu, 23 Apr 2026 14:50: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 1wFvOI-0005rq-BY; Thu, 23 Apr 2026 14:50:54 +0000
Received: by outflank-mailman (input) for mailman id 1292210;
 Thu, 23 Apr 2026 14:50:52 +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.19dbad2753f000f373@swg.vates.tech>)
 id 1wFvOG-0005r9-Kf
 for xen-devel@lists.xenproject.org; Thu, 23 Apr 2026 14:50:52 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wFvOG-00Bbvl-1M
 for xen-devel@lists.xenproject.org; Thu, 23 Apr 2026 16:50:52 +0200
Received: from [10.42.69.11] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1) (envelope-from
 <prod-mta-13.8631fc262581453bbf619ec5b2062170.19dbad2753f000f373@swg.vates.tech>)
 id 69ea31cb-bab6-0a2a0a5309dd-0a2a450bc17a-4
 for <xen-devel@lists.xenproject.org>; Thu, 23 Apr 2026 16:50:52 +0200
Received: from [185.255.28.34] (helo=prod-mta-13.swg-srv.net)
 by tlsNG-42698a.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.1)
 (envelope-from
 <prod-mta-13.8631fc262581453bbf619ec5b2062170.19dbad2753f000f373@swg.vates.tech>)
 id 69ea31cb-212f-0a2a450b0019-b9ff1c229aa9-3
 for <xen-devel@lists.xenproject.org>; Thu, 23 Apr 2026 16:50:51 +0200
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
 19dbad2753f000f373.002 for <xen-devel@lists.xenproject.org>
 (version=TLSv1.3 cipher=TLS_AES_256_GCM_SHA384);
 Thu, 23 Apr 2026 14:50:48 +0000
Received: from xps13-debian.gpn.vates.fr
 (lfbn-mon-1-1130-120.w90-48.abo.wanadoo.fr [90.48.233.120])
 (Authenticated sender: thierry.escande)
 by mail2.vates.fr (Postfix) with ESMTPSA id 80BBC86015;
 Thu, 23 Apr 2026 16:50:47 +0200 (CEST)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@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=M4JVSGAFCQr9BGBfFiKi3POaf5wdzET+5BsITsVx5po=;
 h=from:subject:date:message-id:to:cc:mime-version:content-type:in-reply-to:references:feedback-id;
 b=JqaJMKPNH1YviJrycRVKp5fNbXqNKJjiwyZNJbjd2b8LCfhQJhFwPKaL3cLCsMg/EyhK2JxRF
 j7zY26MvTbPeCm68d5UEolMWCx8XLdKOX/hOPn64HXivTX5kHVj56AIkVdzo2GF0QaWg9RLdsp4
 F2YgRUSLFrUHgUS4zVAclHTZhGi8dULf29EHWn5JhImjd60FDEKpnOse3LRAncVJ8r8FwkpxdLZ
 5TAvaN9oCNEkO78Z4y2kEs9vmYltYq0qSCoGivPl4PrDlgxGjJ0sRc/MAz95NRlWWKKz2z5HoAo
 j/F0kOk2gHsT5ItNzrXcW7RZ4M3VqP7jXsxqdF+9U9Nw==
X-Zone-Loop: aaaeb6fda2177d8d3162e1ec5b3b614a674890ebc939
x-campaign-type: default
x-transaction-id: fbf8b3c8-c264-4d38-bb08-a34e8c008020
x-swg-uid: 01-1d701107-8de0-4714-af1e-fe5806389a5c
X-Mailer: Sweego
Message-ID:
 <1776955848.8631fc262581453bbf619ec5b2062170.19dbad2753f000f373@vates.tech>
x-swg-bid: 1776955848.8631fc262581453bbf619ec5b2062170.19dbad2753f000f373
Feedback-ID: default:8631fc262581453bbf619ec5b2062170:Sweego
x-campaign-id: default
x-client-id: 8631fc262581453bbf619ec5b2062170
X-Originating-IP: [37.26.189.201]
From: Thierry Escande <thierry.escande@vates.tech>
To: xen-devel@lists.xenproject.org
Cc: Thierry Escande <thierry.escande@vates.tech>,
	Anthony PERARD <anthony.perard@vates.tech>,
	Juergen Gross <jgross@suse.com>,
	=?UTF-8?q?Daniel=20P=20=2E=20Berrang=C3=A9?= <berrange@redhat.com>,
	=?UTF-8?q?Marek=20Marczykowski-G=C3=B3recki?= <marmarek@invisiblethingslab.com>
Subject: [RFC PATCH v4 2/6] libxl: Refactor some PCI device handling functions
Date: Thu, 23 Apr 2026 16:50:27 +0200
In-Reply-To: <1776955586.8631fc262581453bbf619ec5b2062170.19dbace7684000f373@vates.tech>
References: <1776955586.8631fc262581453bbf619ec5b2062170.19dbace7684000f373@vates.tech>
MIME-Version: 1.0
Content-Transfert-Encoding: 8bit
X-BM-Disclaimer: Yes
Content-Type: multipart/alternative; boundary="-=Part.273e.6a96a3d650ac5123.19dbad273e8.28185d46eb971784=-"
X-Bm-Milter-Handled: 4ffbd6c1-ee69-4e1b-aabd-f977039bd3e2
X-Bm-Transport-Timestamp: 1776955847657
X-purgate-ID: tlsNG-42698a/1776955852-0415DF3B-4715CB71/0/0
X-purgate-type: clean
X-purgate-size: 5517

---=Part.273e.6a96a3d650ac5123.19dbad273e8.28185d46eb971784=-
Content-Type: text/plain; charset=utf-8
Content-Transfer-Encoding: quoted-printable

In order to support the new hotplug=3D0 option for PCI device passthrough,
3 functions used to manage the assignable PCI device list need to be
made available from outside of libxl_pci=2Ec=2E

This patch renames the function pciback_dev_is_assigned() as
libxl__pciback_dev_is_assigned() and make it available internally=2E
libxl__device_pci_assignable_add() is also exported internally=2E Finaly,
libxl_pci_assignable() is renamed as libxl_device_pci_assignable() to
match with other libxl_device_pci_*() APIs and exported in libxl=2Eh=2E

Signed-off-by: Thierry Escande <thierry=2Eescande@vates=2Etech>
---
v4: new patch
---
 tools/include/libxl=2Eh             |  1 +
 tools/libs/light/libxl_internal=2Eh |  5 +++++
 tools/libs/light/libxl_pci=2Ec      | 18 +++++++++---------
 3 files changed, 15 insertions(+), 9 deletions(-)

diff --git a/tools/include/libxl=2Eh b/tools/include/libxl=2Eh
index 7c098edab6=2E=2Eefd2664a90 100644
--- a/tools/include/libxl=2Eh
+++ b/tools/include/libxl=2Eh
@@ -2666,6 +2666,7 @@ int libxl_device_pci_assignable_add(libxl_ctx *ctx, =
libxl_device_pci *pci, int r
 int libxl_device_pci_assignable_remove(libxl_ctx *ctx, libxl_device_pci *=
pci, int rebind);
 libxl_device_pci *libxl_device_pci_assignable_list(libxl_ctx *ctx, int *n=
um);
 void libxl_device_pci_assignable_list_free(libxl_device_pci *list, int nu=
m);
+bool libxl_device_pci_assignable(libxl_ctx *ctx, libxl_device_pci *pci);
=20
 /* CPUID handling */
 int libxl_cpuid_parse_config(libxl_cpuid_policy_list *cpuid, const char* =
str);
diff --git a/tools/libs/light/libxl_internal=2Eh b/tools/libs/light/libxl_=
internal=2Eh
index b65e0064b9=2E=2Ee87500bf55 100644
--- a/tools/libs/light/libxl_internal=2Eh
+++ b/tools/libs/light/libxl_internal=2Eh
@@ -1729,6 +1729,11 @@ _hidden int libxl__device_pci_setdefault(libxl__gc =
*gc, uint32_t domid,
                                          libxl_device_pci *pci, bool hotp=
lug);
 _hidden bool libxl__is_igd_vga_passthru(libxl__gc *gc,
                                         const libxl_domain_config *d_conf=
ig);
+_hidden int libxl__pciback_dev_is_assigned(libxl__gc *gc,
+                                           libxl_device_pci *pci);
+_hidden int libxl__device_pci_assignable_add(libxl__gc *gc,
+                                             libxl_device_pci *pci,
+                                             int rebind);
=20
 /* from libxl_dtdev */
=20
diff --git a/tools/libs/light/libxl_pci=2Ec b/tools/libs/light/libxl_pci=
=2Ec
index 49d272d0de=2E=2E5551abe0a2 100644
--- a/tools/libs/light/libxl_pci=2Ec
+++ b/tools/libs/light/libxl_pci=2Ec
@@ -686,7 +686,7 @@ out:
     return rc;
 }
=20
-static int pciback_dev_is_assigned(libxl__gc *gc, libxl_device_pci *pci)
+int libxl__pciback_dev_is_assigned(libxl__gc *gc, libxl_device_pci *pci)
 {
     char * spath;
     int rc;
@@ -755,9 +755,9 @@ static int pciback_dev_unassign(libxl__gc *gc, libxl_d=
evice_pci *pci)
     return 0;
 }
=20
-static int libxl__device_pci_assignable_add(libxl__gc *gc,
-                                            libxl_device_pci *pci,
-                                            int rebind)
+int libxl__device_pci_assignable_add(libxl__gc *gc,
+                                     libxl_device_pci *pci,
+                                     int rebind)
 {
     libxl_ctx *ctx =3D libxl__gc_owner(gc);
     unsigned dom, bus, dev, func;
@@ -798,7 +798,7 @@ static int libxl__device_pci_assignable_add(libxl__gc =
*gc,
     }
=20
     /* Check to see if it's already assigned to pciback */
-    rc =3D pciback_dev_is_assigned(gc, pci);
+    rc =3D libxl__pciback_dev_is_assigned(gc, pci);
     if ( rc < 0 ) {
         return ERROR_FAIL;
     }
@@ -913,7 +913,7 @@ static int libxl__device_pci_assignable_remove(libxl__=
gc *gc,
     }
=20
     /* Unbind from pciback */
-    if ( (rc =3D pciback_dev_is_assigned(gc, pci)) < 0 ) {
+    if ( (rc =3D libxl__pciback_dev_is_assigned(gc, pci)) < 0 ) {
         return ERROR_FAIL;
     } else if ( rc ) {
         pciback_dev_unassign(gc, pci);
@@ -1509,7 +1509,7 @@ int libxl_device_pci_add(libxl_ctx *ctx, uint32_t do=
mid,
     return AO_INPROGRESS;
 }
=20
-static bool libxl_pci_assignable(libxl_ctx *ctx, libxl_device_pci *pci)
+bool libxl_device_pci_assignable(libxl_ctx *ctx, libxl_device_pci *pci)
 {
     libxl_device_pci *pcis;
     int num;
@@ -1572,13 +1572,13 @@ void libxl__device_pci_add(libxl__egc *egc, uint32=
_t domid,
     rc =3D libxl__device_pci_setdefault(gc, domid, pci, !starting);
     if (rc) goto out;
=20
-    if (pci->seize && !pciback_dev_is_assigned(gc, pci)) {
+    if (pci->seize && !libxl__pciback_dev_is_assigned(gc, pci)) {
         rc =3D libxl__device_pci_assignable_add(gc, pci, 1);
         if ( rc )
             goto out;
     }
=20
-    if (!libxl_pci_assignable(ctx, pci)) {
+    if (!libxl_device_pci_assignable(ctx, pci)) {
         LOGD(ERROR, domid, "PCI device %x:%x:%x=2E%x is not assignable",
              pci->domain, pci->bus, pci->dev, pci->func);
         rc =3D ERROR_FAIL;
--=20
2=2E53=2E0



-- 
Thierry Escande | Vates XCP-ng Developer

XCP-ng & Xen Orchestra - Vat=
es solutions

web: https://vates=2Etech
---=Part.273e.6a96a3d650ac5123.19dbad273e8.28185d46eb971784=---


From xen-devel-bounces@lists.xenproject.org Thu Apr 23 14:50:59 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 23 Apr 2026 14:50:59 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1292211.1570750 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wFvON-00069G-Lz; Thu, 23 Apr 2026 14:50:59 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1292211.1570750; Thu, 23 Apr 2026 14:50: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 1wFvON-000697-JC; Thu, 23 Apr 2026 14:50:59 +0000
Received: by outflank-mailman (input) for mailman id 1292211;
 Thu, 23 Apr 2026 14:50:58 +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.19dbad285c5000f373@swg.vates.tech>)
 id 1wFvOM-00068A-DI
 for xen-devel@lists.xenproject.org; Thu, 23 Apr 2026 14:50:58 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wFvOL-00F6TN-QG
 for xen-devel@lists.xenproject.org; Thu, 23 Apr 2026 16:50:57 +0200
Received: from [10.42.69.10] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1) (envelope-from
 <prod-mta-13.8631fc262581453bbf619ec5b2062170.19dbad285c5000f373@swg.vates.tech>)
 id 69ea31c9-5cb7-0a2a0a5109dd-0a2a450ab676-14
 for <xen-devel@lists.xenproject.org>; Thu, 23 Apr 2026 16:50:57 +0200
Received: from [185.255.28.34] (helo=prod-mta-13.swg-srv.net)
 by tlsNG-4011c0.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.1)
 (envelope-from
 <prod-mta-13.8631fc262581453bbf619ec5b2062170.19dbad285c5000f373@swg.vates.tech>)
 id 69ea31d1-56b3-0a2a450a0019-b9ff1c2297ab-3
 for <xen-devel@lists.xenproject.org>; Thu, 23 Apr 2026 16:50:57 +0200
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
 19dbad285c5000f373.002 for <xen-devel@lists.xenproject.org>
 (version=TLSv1.3 cipher=TLS_AES_256_GCM_SHA384);
 Thu, 23 Apr 2026 14:50:52 +0000
Received: from xps13-debian.gpn.vates.fr
 (lfbn-mon-1-1130-120.w90-48.abo.wanadoo.fr [90.48.233.120])
 (Authenticated sender: thierry.escande)
 by mail2.vates.fr (Postfix) with ESMTPSA id B477A860B1;
 Thu, 23 Apr 2026 16:50:51 +0200 (CEST)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@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=KwW4d6fYi0KChvPkn7IffskRpGMBiOLh4S1NpTCLRGk=;
 h=from:subject:date:message-id:to:cc:mime-version:content-type:in-reply-to:references:feedback-id;
 b=HE2coy3cU39TschWJRYdYq8wFbpLpp7h7EjePCUoWR0rV4oUOEoTjHY1F1hLx3ZX0I+TrptgP
 XA0G66L6CEBkO+Q1+Y0G6Ong8tZjL4GIBC97sd2Lrg8J0rPC/LXZtgBl0S8n9YDK9IMU3VEwPO9
 IG38nZWhW7OPBEwspGaKDcvTvj4PN02VOoNzMTq63ftvcs33D3u2MdAzAIGJOVY1lU8hSre4PAd
 TrziJSI8psId/HM8NyUYBY9Zw1smMaGAxuwFDED7Q4fHh0ua9FeAm58JkoFn+N/btW7BZb4wXfx
 yYkAqQ9X/JrZB53lB7GYo1k5x5CTgm+g7p1xsa89I/RQ==
X-Zone-Loop: 0eb424bdcabf1d73c22e5a825d30e8e81a2beb9141bf
x-campaign-type: default
x-transaction-id: ad9a1c9a-cb6a-4453-b392-fd440a969e31
x-swg-uid: 01-527627f9-4b39-4f05-b98a-58bfae657f9f
X-Mailer: Sweego
Message-ID:
 <1776955852.8631fc262581453bbf619ec5b2062170.19dbad285c5000f373@vates.tech>
x-swg-bid: 1776955852.8631fc262581453bbf619ec5b2062170.19dbad285c5000f373
Feedback-ID: default:8631fc262581453bbf619ec5b2062170:Sweego
x-campaign-id: default
x-client-id: 8631fc262581453bbf619ec5b2062170
X-Originating-IP: [37.26.189.201]
From: Thierry Escande <thierry.escande@vates.tech>
To: xen-devel@lists.xenproject.org
Cc: Thierry Escande <thierry.escande@vates.tech>,
	Anthony PERARD <anthony.perard@vates.tech>,
	Juergen Gross <jgross@suse.com>,
	=?UTF-8?q?Daniel=20P=20=2E=20Berrang=C3=A9?= <berrange@redhat.com>,
	=?UTF-8?q?Marek=20Marczykowski-G=C3=B3recki?= <marmarek@invisiblethingslab.com>
Subject: [RFC PATCH v4 3/6] libxl: Add libxl__device_pci_get_qapi_json() internal API
Date: Thu, 23 Apr 2026 16:50:28 +0200
In-Reply-To: <1776955586.8631fc262581453bbf619ec5b2062170.19dbace7684000f373@vates.tech>
References: <1776955586.8631fc262581453bbf619ec5b2062170.19dbace7684000f373@vates.tech>
MIME-Version: 1.0
Content-Transfert-Encoding: 8bit
X-BM-Disclaimer: Yes
Content-Type: multipart/alternative; boundary="-=Part.273f.2e8038414fb5c485.19dbad2845c.4007b31644528610=-"
X-Bm-Milter-Handled: 4ffbd6c1-ee69-4e1b-aabd-f977039bd3e2
X-Bm-Transport-Timestamp: 1776955851868
X-purgate-ID: tlsNG-4011c0/1776955857-8127B8B7-A442E7B6/0/0
X-purgate-type: clean
X-purgate-size: 3366

---=Part.273f.2e8038414fb5c485.19dbad2845c.4007b31644528610=-
Content-Type: text/plain; charset=utf-8
Content-Transfer-Encoding: quoted-printable

This function generates the qapi json object for a PCI device to be
passthrough'd to a guest=2E

With the new option hotplug=3D0 for PCI passthrough, device parameters
will be passed using Qemu -device command line option=2E Since -device
accepts qapi json string, this new function will be used to do so=2E

The code that generates the json object comes from
pci_add_qmp_device_add() which now also uses this new function=2E

Signed-off-by: Thierry Escande <thierry=2Eescande@vates=2Etech>
---
v4: new patch
---
 tools/libs/light/libxl_internal=2Eh |  2 ++
 tools/libs/light/libxl_pci=2Ec      | 26 ++++++++++++++++++--------
 2 files changed, 20 insertions(+), 8 deletions(-)

diff --git a/tools/libs/light/libxl_internal=2Eh b/tools/libs/light/libxl_=
internal=2Eh
index e87500bf55=2E=2Eb6d764ad00 100644
--- a/tools/libs/light/libxl_internal=2Eh
+++ b/tools/libs/light/libxl_internal=2Eh
@@ -1734,6 +1734,8 @@ _hidden int libxl__pciback_dev_is_assigned(libxl__gc=
 *gc,
 _hidden int libxl__device_pci_assignable_add(libxl__gc *gc,
                                              libxl_device_pci *pci,
                                              int rebind);
+_hidden libxl__json_object *libxl__device_pci_get_qapi_json(libxl__gc *gc=
,
+                                                         libxl_device_pci=
 *pci);
=20
 /* from libxl_dtdev */
=20
diff --git a/tools/libs/light/libxl_pci=2Ec b/tools/libs/light/libxl_pci=
=2Ec
index 5551abe0a2=2E=2E5004ca47d9 100644
--- a/tools/libs/light/libxl_pci=2Ec
+++ b/tools/libs/light/libxl_pci=2Ec
@@ -1098,16 +1098,10 @@ out:
     pci_add_dm_done(egc, pas, rc); /* must be last */
 }
=20
-static void pci_add_qmp_device_add(libxl__egc *egc, pci_add_state *pas)
+libxl__json_object *libxl__device_pci_get_qapi_json(libxl__gc *gc,
+                                                    libxl_device_pci *pci=
)
 {
-    STATE_AO_GC(pas->aodev->ao);
     libxl__json_object *args =3D NULL;
-    int rc;
-
-    /* Convenience aliases */
-    libxl_domid domid =3D pas->domid;
-    libxl_device_pci *pci =3D &pas->pci;
-    libxl__ev_qmp *const qmp =3D &pas->qmp;
=20
     libxl__qmp_param_add_string(gc, &args, "driver",
                                 "xen-pci-passthrough");
@@ -1134,6 +1128,22 @@ static void pci_add_qmp_device_add(libxl__egc *egc,=
 pci_add_state *pas)
     if (pci->permissive)
         libxl__qmp_param_add_bool(gc, &args, "permissive", true);
=20
+    return args;
+}
+
+static void pci_add_qmp_device_add(libxl__egc *egc, pci_add_state *pas)
+{
+    STATE_AO_GC(pas->aodev->ao);
+    libxl__json_object *args =3D NULL;
+    int rc =3D 0;
+
+    /* Convenience aliases */
+    libxl_domid domid =3D pas->domid;
+    libxl_device_pci *pci =3D &pas->pci;
+    libxl__ev_qmp *const qmp =3D &pas->qmp;
+
+    args =3D libxl__device_pci_get_qapi_json(gc, pci);
+
     qmp->ao =3D pas->aodev->ao;
     qmp->domid =3D domid;
     qmp->payload_fd =3D -1;
--=20
2=2E53=2E0



-- 
Thierry Escande | Vates XCP-ng Developer

XCP-ng & Xen Orchestra - Vat=
es solutions

web: https://vates=2Etech
---=Part.273f.2e8038414fb5c485.19dbad2845c.4007b31644528610=---


From xen-devel-bounces@lists.xenproject.org Thu Apr 23 14:51:00 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 23 Apr 2026 14:51:00 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1292212.1570757 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wFvOO-0006C1-3C; Thu, 23 Apr 2026 14:51:00 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1292212.1570757; Thu, 23 Apr 2026 14:51: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 1wFvON-0006B6-Qi; Thu, 23 Apr 2026 14:50:59 +0000
Received: by outflank-mailman (input) for mailman id 1292212;
 Thu, 23 Apr 2026 14:50:58 +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.19dbad29220000f373@swg.vates.tech>)
 id 1wFvOM-00068B-Hv
 for xen-devel@lists.xenproject.org; Thu, 23 Apr 2026 14:50:58 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wFvOL-00F6TN-Uw
 for xen-devel@lists.xenproject.org; Thu, 23 Apr 2026 16:50:57 +0200
Received: from [10.42.69.10] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1) (envelope-from
 <prod-mta-13.8631fc262581453bbf619ec5b2062170.19dbad29220000f373@swg.vates.tech>)
 id 69ea31c9-5cb7-0a2a0a5109dd-0a2a450ab676-16
 for <xen-devel@lists.xenproject.org>; Thu, 23 Apr 2026 16:50:57 +0200
Received: from [185.255.28.34] (helo=prod-mta-13.swg-srv.net)
 by tlsNG-4011c0.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.1)
 (envelope-from
 <prod-mta-13.8631fc262581453bbf619ec5b2062170.19dbad29220000f373@swg.vates.tech>)
 id 69ea31d1-56b3-0a2a450a0019-b9ff1c2297ab-4
 for <xen-devel@lists.xenproject.org>; Thu, 23 Apr 2026 16:50:57 +0200
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
 19dbad29220000f373.002 for <xen-devel@lists.xenproject.org>
 (version=TLSv1.3 cipher=TLS_AES_256_GCM_SHA384);
 Thu, 23 Apr 2026 14:50:55 +0000
Received: from xps13-debian.gpn.vates.fr
 (lfbn-mon-1-1130-120.w90-48.abo.wanadoo.fr [90.48.233.120])
 (Authenticated sender: thierry.escande)
 by mail2.vates.fr (Postfix) with ESMTPSA id E0F3F860B1;
 Thu, 23 Apr 2026 16:50:54 +0200 (CEST)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@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=2WxqC/7NDyEsVp5x99Nl9oXXPdTNIp1S8YTZI5ZJbF8=;
 h=from:subject:date:message-id:to:cc:mime-version:content-type:in-reply-to:references:feedback-id;
 b=D3uTwvshadj9pwDd0Op//RUzAJcG+WoCNd+Sit8erp2UzsFQgxFdHHfThbm577EH4kPTbYYX4
 wMx/7MWUvZjK0wcb2ZWmM4y2EDp4HYnBXS9vDd0P3qq7Lrlqt5dpLdtbTGyCAYMRSPiuOmh9wF+
 JpsvJZHHqkXhfKnGWvCFCWL2krhzjTbFnbjDGgvP7VTxw/wyu7LoQjq585J18LW7Qdpup/NBZgH
 RkQFWjHADnEapKUATTb0EtfpjgNNNTedUG/KZxRmvIJUheflsnypFJbN7n836quWNiVqlACaY94
 eFxxR3B5lRNJBfpTAJkSvphRlw+AY82UjYMuEYJAaooA==
X-Zone-Loop: c7871ee5573226db0411b0d5c46a7216be9db6eec7aa
x-campaign-type: default
x-transaction-id: 38361317-4f1f-42b1-9ee4-7288d10deb3c
x-swg-uid: 01-523f3e71-0f87-4311-ad55-fa29c2f674b1
X-Mailer: Sweego
Message-ID:
 <1776955855.8631fc262581453bbf619ec5b2062170.19dbad29220000f373@vates.tech>
x-swg-bid: 1776955855.8631fc262581453bbf619ec5b2062170.19dbad29220000f373
Feedback-ID: default:8631fc262581453bbf619ec5b2062170:Sweego
x-campaign-id: default
x-client-id: 8631fc262581453bbf619ec5b2062170
X-Originating-IP: [37.26.189.201]
From: Thierry Escande <thierry.escande@vates.tech>
To: xen-devel@lists.xenproject.org
Cc: Thierry Escande <thierry.escande@vates.tech>,
	Anthony PERARD <anthony.perard@vates.tech>,
	Juergen Gross <jgross@suse.com>,
	=?UTF-8?q?Daniel=20P=20=2E=20Berrang=C3=A9?= <berrange@redhat.com>,
	=?UTF-8?q?Marek=20Marczykowski-G=C3=B3recki?= <marmarek@invisiblethingslab.com>
Subject: [RFC PATCH v4 4/6] libxl: Extend libxl__json_object_to_json() prototype
Date: Thu, 23 Apr 2026 16:50:29 +0200
In-Reply-To: <1776955586.8631fc262581453bbf619ec5b2062170.19dbace7684000f373@vates.tech>
References: <1776955586.8631fc262581453bbf619ec5b2062170.19dbace7684000f373@vates.tech>
MIME-Version: 1.0
Content-Transfert-Encoding: 8bit
X-BM-Disclaimer: Yes
Content-Type: multipart/alternative; boundary="-=Part.2740.c5deada9ef7a8812.19dbad290c4.414c53236d9cbe01=-"
X-Bm-Milter-Handled: 4ffbd6c1-ee69-4e1b-aabd-f977039bd3e2
X-Bm-Transport-Timestamp: 1776955855045
X-purgate-ID: tlsNG-4011c0/1776955857-46D708B7-FA9CBAE9/0/0
X-purgate-type: clean
X-purgate-size: 3323

---=Part.2740.c5deada9ef7a8812.19dbad290c4.414c53236d9cbe01=-
Content-Type: text/plain; charset=utf-8
Content-Transfer-Encoding: quoted-printable

The function libxl__json_object_to_json() returns a json object as
string in a pretty format=2E With support for the new PCI device
passthrough option hotplug=3D0, the function will be used to generate the
json string passed to qemu -device command line parameter, but the
string needs to be in plain format, i=2Ee=2E without carriage return or ta=
b
characters=2E

This patch adds a 'pretty' parameter to the function to control the
output string format=2E

Signed-off-by: Thierry Escande <thierry=2Eescande@vates=2Etech>
---
v4: new patch
---
 tools/libs/light/libxl_internal=2Eh |  5 +++--
 tools/libs/light/libxl_json=2Ec     | 11 +++++++++--
 2 files changed, 12 insertions(+), 4 deletions(-)

diff --git a/tools/libs/light/libxl_internal=2Eh b/tools/libs/light/libxl_=
internal=2Eh
index b6d764ad00=2E=2Eb87959e44a 100644
--- a/tools/libs/light/libxl_internal=2Eh
+++ b/tools/libs/light/libxl_internal=2Eh
@@ -2270,10 +2270,11 @@ _hidden libxl__json_object *libxl__json_parse(libx=
l__gc *gc_opt, const char *s);
=20
 /* `args` may be NULL */
 _hidden char *libxl__json_object_to_json(libxl__gc *gc,
-                                         const libxl__json_object *args);
+                                         const libxl__json_object *args,
+                                         bool pretty);
 /* Always return a valid string, but invalid json on error=2E */
 #define JSON(o) \
-    (libxl__json_object_to_json(gc, (o)) ? : "<invalid-json-object>")
+    (libxl__json_object_to_json(gc, (o), true) ? : "<invalid-json-object>=
")
=20
   /* Based on /local/domain/$domid/dm-version xenstore key */
 _hidden int libxl__device_model_version_running(libxl__gc *gc, uint32_t d=
omid);
diff --git a/tools/libs/light/libxl_json=2Ec b/tools/libs/light/libxl_json=
=2Ec
index 68f36901c2=2E=2Ec566ec83ff 100644
--- a/tools/libs/light/libxl_json=2Ec
+++ b/tools/libs/light/libxl_json=2Ec
@@ -1527,7 +1527,8 @@ out:
 #endif
=20
 char *libxl__json_object_to_json(libxl__gc *gc,
-                                 const libxl__json_object *args)
+                                 const libxl__json_object *args,
+                                 bool pretty)
 {
 #ifdef HAVE_LIBJSONC
     const char *buf;
@@ -1542,7 +1543,9 @@ char *libxl__json_object_to_json(libxl__gc *gc,
     if (rc)
         goto out;
=20
-    buf =3D json_object_to_json_string_ext(root, JSON_C_TO_STRING_PRETTY)=
;
+    buf =3D json_object_to_json_string_ext(root, pretty ?
+                                               JSON_C_TO_STRING_PRETTY :
+                                               JSON_C_TO_STRING_PLAIN);
     if (!buf)
         goto out;
=20
@@ -1566,6 +1569,10 @@ out:
     if (!hand)
         return NULL;
=20
+#if HAVE_YAJL_V2
+    yajl_gen_config(hand, yajl_gen_beautify, pretty);
+#endif
+
     rc =3D libxl__json_object_to_yajl_gen(gc, hand, args);
     if (rc)
         goto out;
--=20
2=2E53=2E0



-- 
Thierry Escande | Vates XCP-ng Developer

XCP-ng & Xen Orchestra - Vat=
es solutions

web: https://vates=2Etech
---=Part.2740.c5deada9ef7a8812.19dbad290c4.414c53236d9cbe01=---


From xen-devel-bounces@lists.xenproject.org Thu Apr 23 14:51:05 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 23 Apr 2026 14:51:05 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1292216.1570769 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wFvOT-0006ie-Cq; Thu, 23 Apr 2026 14:51:05 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1292216.1570769; Thu, 23 Apr 2026 14: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 1wFvOT-0006iX-8H; Thu, 23 Apr 2026 14:51:05 +0000
Received: by outflank-mailman (input) for mailman id 1292216;
 Thu, 23 Apr 2026 14:51:04 +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.19dbad2a232000f373@swg.vates.tech>)
 id 1wFvOS-0006gd-K9
 for xen-devel@lists.xenproject.org; Thu, 23 Apr 2026 14:51:04 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wFvOS-00F6TN-0q
 for xen-devel@lists.xenproject.org; Thu, 23 Apr 2026 16:51:04 +0200
Received: from [10.42.69.7] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1) (envelope-from
 <prod-mta-13.8631fc262581453bbf619ec5b2062170.19dbad2a232000f373@swg.vates.tech>)
 id 69ea31cb-5cb7-0a2a0a5109dd-0a2a4507892a-38
 for <xen-devel@lists.xenproject.org>; Thu, 23 Apr 2026 16:51:04 +0200
Received: from [185.255.28.34] (helo=prod-mta-13.swg-srv.net)
 by tlsNG-ef75cf.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.1)
 (envelope-from
 <prod-mta-13.8631fc262581453bbf619ec5b2062170.19dbad2a232000f373@swg.vates.tech>)
 id 69ea31d7-229c-0a2a45070019-b9ff1c2288dd-3
 for <xen-devel@lists.xenproject.org>; Thu, 23 Apr 2026 16:51:03 +0200
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
 19dbad2a232000f373.002 for <xen-devel@lists.xenproject.org>
 (version=TLSv1.3 cipher=TLS_AES_256_GCM_SHA384);
 Thu, 23 Apr 2026 14:50:59 +0000
Received: from xps13-debian.gpn.vates.fr
 (lfbn-mon-1-1130-120.w90-48.abo.wanadoo.fr [90.48.233.120])
 (Authenticated sender: thierry.escande)
 by mail2.vates.fr (Postfix) with ESMTPSA id 049C786015;
 Thu, 23 Apr 2026 16:50:59 +0200 (CEST)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@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=Z1+eytwSMTKXppL/bkeDgKPsP7+rKwCxiKHDiZ0OLRs=;
 h=from:subject:date:message-id:to:cc:mime-version:content-type:in-reply-to:references:feedback-id;
 b=alK7gqYGRD+HqkxLviBMDg+XTAToMGJ0ZzJFEK03pnOlIpiM5UyHAYHjDYW4SXKwBvTN9Yodn
 uGnH11u28ynt9a4jAwuuD5cYd0gxwkwjoeyYvJ+ybEeUyPJcEFqOtcVvBZ0wa3GH6RhBul/6dMR
 CkHF0y0tj/9HTvvsgNzALNXc0UFYIaZ+tIWpVUXPnDCcLnvr4qsLE89V4n8iEiWAWVpRuDECOab
 YzZOXYiBVFIvBsa4DfoAy94d+0nvssebwUoupPDPt/Yh2Rs8X81+X4J6G8LEDtcB01P780VLw0Q
 zROQ3+Od2J3hCHe0CYci2M5p3qxI6dQAacq7PvtgZCMg==
X-Zone-Loop: 6538666f2d8b81dc348812ba600f25a9bba8957c5f5e
x-campaign-type: default
x-transaction-id: f53b331b-f1f9-4a35-91a8-33d1289c8542
x-swg-uid: 01-c33a206f-094b-4b05-a72d-b019a2809139
X-Mailer: Sweego
Message-ID:
 <1776955859.8631fc262581453bbf619ec5b2062170.19dbad2a232000f373@vates.tech>
x-swg-bid: 1776955859.8631fc262581453bbf619ec5b2062170.19dbad2a232000f373
Feedback-ID: default:8631fc262581453bbf619ec5b2062170:Sweego
x-campaign-id: default
x-client-id: 8631fc262581453bbf619ec5b2062170
X-Originating-IP: [37.26.189.201]
From: Thierry Escande <thierry.escande@vates.tech>
To: xen-devel@lists.xenproject.org
Cc: Thierry Escande <thierry.escande@vates.tech>,
	Anthony PERARD <anthony.perard@vates.tech>,
	Juergen Gross <jgross@suse.com>,
	=?UTF-8?q?Daniel=20P=20=2E=20Berrang=C3=A9?= <berrange@redhat.com>,
	=?UTF-8?q?Marek=20Marczykowski-G=C3=B3recki?= <marmarek@invisiblethingslab.com>
Subject: [RFC PATCH v4 5/6] libxl: Allow PCI device passthrough using -device Qemu command line
Date: Thu, 23 Apr 2026 16:50:30 +0200
In-Reply-To: <1776955586.8631fc262581453bbf619ec5b2062170.19dbace7684000f373@vates.tech>
References: <1776955586.8631fc262581453bbf619ec5b2062170.19dbace7684000f373@vates.tech>
MIME-Version: 1.0
Content-Transfert-Encoding: 8bit
X-BM-Disclaimer: Yes
Content-Type: multipart/alternative; boundary="-=Part.2741.19abcf34cab5d289.19dbad2a0c7.3e37f28d3be2e66=-"
X-Bm-Milter-Handled: 4ffbd6c1-ee69-4e1b-aabd-f977039bd3e2
X-Bm-Transport-Timestamp: 1776955859143
X-purgate-ID: tlsNG-ef75cf/1776955863-AE36CC48-15548791/0/0
X-purgate-type: clean
X-purgate-size: 5173

---=Part.2741.19abcf34cab5d289.19dbad2a0c7.3e37f28d3be2e66=-
Content-Type: text/plain; charset=utf-8
Content-Transfer-Encoding: quoted-printable

This change makes use of the new option 'hotplug' for host PCI devices
passthrough'd to the guest=2E If hotplug=3D0 is used in the pci device
configuration table, the device will be attached to the guest using the
Qemu command line as '-device xen-pci-passthrough,hostaddr=3D=2E=2E=2E'

The host device configuration is passed to the -device option as a json
array, just like it's done for hotplug using QMP=2E The json array is
created by using libxl__device_pci_get_qapi_json() introduced by the
previous patch=2E

Then, instead of sending the 'device_add' command, the device_add
callback is called to perform the 'query-pci' check to make sure the
passthrough'd device is present=2E

In the same way at shutdown, the device is not removed using QMP and
only the pci_remove_done() function is called=2E

As with QMP, the use of the 'hotplug=3D0' option honors the 'seize' option
by adding the PCI device to the assignable list if needed=2E This mimics
what is done in libxl__device_pci_add() with regards to seize option and
the assignable PCI device list=2E This allows to display a proper error
message if the device is not assignable before Qemu starts=2E

Signed-off-by: Thierry Escande <thierry=2Eescande@vates=2Etech>
---
Changes in v2:
 - Add support for YAJL json parser

Changes in v3:
 - Move code block for device command line parameters creation to a
   correct place=2E
 - Better handling of PCI device assignation check to display the correct
   error message if the device is not assignable=2E

Changes in v4:
 - Move function refactoring parts into their own patches
 - Use libxl__json_object_to_json() that can now return plain json strings
---
 tools/libs/light/libxl_dm=2Ec  | 33 +++++++++++++++++++++++++++++++++
 tools/libs/light/libxl_pci=2Ec | 13 ++++++++++++-
 2 files changed, 45 insertions(+), 1 deletion(-)

diff --git a/tools/libs/light/libxl_dm=2Ec b/tools/libs/light/libxl_dm=2Ec
index 511ec76a65=2E=2Efb0aeea640 100644
--- a/tools/libs/light/libxl_dm=2Ec
+++ b/tools/libs/light/libxl_dm=2Ec
@@ -1798,6 +1798,39 @@ static int libxl__build_device_model_args_new(libxl=
__gc *gc,
             break;
         }
=20
+        if (guest_config->num_pcidevs) {
+            libxl_device_pci *pci;
+            libxl__json_object *qmp_json;
+            char *json_str;
+
+            for (i =3D 0; i < guest_config->num_pcidevs; i++) {
+                pci =3D &guest_config->pcidevs[i];
+
+                if (pci->hotplug)
+                    continue;
+
+                if (pci->seize && !libxl__pciback_dev_is_assigned(gc, pci=
)) {
+                    rc =3D libxl__device_pci_assignable_add(gc, pci, 1);
+                    if (rc)
+                        return rc;
+                }
+
+                if (!libxl_device_pci_assignable(libxl__gc_owner(gc), pci=
)) {
+                    LOGD(ERROR, guest_domid, "PCI device %x:%x:%x=2E%x is=
 not assignable",
+                         pci->domain, pci->bus, pci->dev, pci->func);
+                    return ERROR_FAIL;
+                }
+
+                qmp_json =3D libxl__device_pci_get_qapi_json(gc, pci);
+
+                json_str =3D libxl__json_object_to_json(gc, qmp_json, fal=
se);
+                if (!json_str)
+                    return ERROR_NOMEM;
+
+                flexarray_vappend(dm_args, "-device", json_str, NULL);
+            }
+        }
+
         if (state->dm_runas) {
             if (qemu_opts->have_runwith_user) {
                 flexarray_append_pair(dm_args, "-run-with",
diff --git a/tools/libs/light/libxl_pci=2Ec b/tools/libs/light/libxl_pci=
=2Ec
index 5004ca47d9=2E=2Ef5216f6b33 100644
--- a/tools/libs/light/libxl_pci=2Ec
+++ b/tools/libs/light/libxl_pci=2Ec
@@ -1148,7 +1148,10 @@ static void pci_add_qmp_device_add(libxl__egc *egc,=
 pci_add_state *pas)
     qmp->domid =3D domid;
     qmp->payload_fd =3D -1;
     qmp->callback =3D pci_add_qmp_device_add_cb;
-    rc =3D libxl__ev_qmp_send(egc, qmp, "device_add", args);
+    if (pci->hotplug)
+        rc =3D libxl__ev_qmp_send(egc, qmp, "device_add", args);
+    else
+        pci_add_qmp_device_add_cb(egc, qmp, NULL, 0);
     if (rc) goto out;
     return;
=20
@@ -1830,6 +1833,14 @@ static void do_pci_remove(libxl__egc *egc, pci_remo=
ve_state *prs)
     libxl_domain_type type =3D libxl__domain_type(gc, domid);
     libxl_device_pci *pci =3D &prs->pci;
     int rc, num;
+
+    /* Passthrough'd device has been passed to Qemu command line so there=
 is
+     * no need to remove it via QMP */
+    if (!pci->hotplug) {
+        pci_remove_done(egc, prs, 0);
+        return;
+    }
+
     pcis =3D libxl_device_pci_list(ctx, domid, &num);
     if (!pcis) {
         rc =3D ERROR_FAIL;
--=20
2=2E53=2E0



-- 
Thierry Escande | Vates XCP-ng Developer

XCP-ng & Xen Orchestra - Vat=
es solutions

web: https://vates=2Etech
---=Part.2741.19abcf34cab5d289.19dbad2a0c7.3e37f28d3be2e66=---


From xen-devel-bounces@lists.xenproject.org Thu Apr 23 14:51:05 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 23 Apr 2026 14:51:05 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1292217.1570774 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wFvOT-0006mY-PS; Thu, 23 Apr 2026 14:51:05 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1292217.1570774; Thu, 23 Apr 2026 14: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 1wFvOT-0006m0-JN; Thu, 23 Apr 2026 14:51:05 +0000
Received: by outflank-mailman (input) for mailman id 1292217;
 Thu, 23 Apr 2026 14:51:04 +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.19dbad2afcd000f373@swg.vates.tech>)
 id 1wFvOS-0006hX-Rn
 for xen-devel@lists.xenproject.org; Thu, 23 Apr 2026 14:51:04 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wFvOS-00F6TN-8O
 for xen-devel@lists.xenproject.org; Thu, 23 Apr 2026 16:51:04 +0200
Received: from [10.42.69.7] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1) (envelope-from
 <prod-mta-13.8631fc262581453bbf619ec5b2062170.19dbad2afcd000f373@swg.vates.tech>)
 id 69ea31cb-5cb7-0a2a0a5109dd-0a2a4507892a-40
 for <xen-devel@lists.xenproject.org>; Thu, 23 Apr 2026 16:51:04 +0200
Received: from [185.255.28.34] (helo=prod-mta-13.swg-srv.net)
 by tlsNG-ef75cf.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.1)
 (envelope-from
 <prod-mta-13.8631fc262581453bbf619ec5b2062170.19dbad2afcd000f373@swg.vates.tech>)
 id 69ea31d7-229c-0a2a45070019-b9ff1c2288dd-4
 for <xen-devel@lists.xenproject.org>; Thu, 23 Apr 2026 16:51:04 +0200
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
 19dbad2afcd000f373.002 for <xen-devel@lists.xenproject.org>
 (version=TLSv1.3 cipher=TLS_AES_256_GCM_SHA384);
 Thu, 23 Apr 2026 14:51:02 +0000
Received: from xps13-debian.gpn.vates.fr
 (lfbn-mon-1-1130-120.w90-48.abo.wanadoo.fr [90.48.233.120])
 (Authenticated sender: thierry.escande)
 by mail2.vates.fr (Postfix) with ESMTPSA id 7FAD287363;
 Thu, 23 Apr 2026 16:51:02 +0200 (CEST)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@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=ekNR1/eBd9VQKAzJYZOyOmAkA2MA78ZmCGizisZKN0M=;
 h=from:subject:date:message-id:to:cc:mime-version:content-type:in-reply-to:references:feedback-id;
 b=C3PVivYSKPbRBKJNckmf7OY89A4QHKYhJKt8lwoqIB0Ut8UDzwOR2MYKSjCMx4Uz5C7vJ48NG
 RNfewvskrxW+RavVx0H7fBBIRiXzhL/JApXOk8rSWUGrCrB7FnMnbCADFfU1QkKrAl4sP8hszA/
 0BVQD1ZIZwTKit5DtsAIZH6bvpsoDyjSA6kDJEg5+WopJqDbIqUtGYxMbOT8QFZbD1WG+ZOG0Gy
 tJxMTSlOfPss5N7XcpQqkscmsY7ZU4EweXK6/0z48mM4Memu5gjXuRQDZ+QIOyhcghtbucLtzQ4
 4jKOj9BK7EfJbQ+BgPUzh+NrXmM1S0by22zR9HwXYmyw==
X-Zone-Loop: da510dc4bdea08aa68329b8112877095630cd5904ffc
x-campaign-type: default
x-transaction-id: 2fcc7fec-678c-437b-9538-7259920244f3
x-swg-uid: 01-82fc978a-d581-44e4-9ea4-7620336eb78e
X-Mailer: Sweego
Message-ID:
 <1776955863.8631fc262581453bbf619ec5b2062170.19dbad2afcd000f373@vates.tech>
x-swg-bid: 1776955863.8631fc262581453bbf619ec5b2062170.19dbad2afcd000f373
Feedback-ID: default:8631fc262581453bbf619ec5b2062170:Sweego
x-campaign-id: default
x-client-id: 8631fc262581453bbf619ec5b2062170
X-Originating-IP: [37.26.189.201]
From: Thierry Escande <thierry.escande@vates.tech>
To: xen-devel@lists.xenproject.org
Cc: Thierry Escande <thierry.escande@vates.tech>,
	Anthony PERARD <anthony.perard@vates.tech>,
	Juergen Gross <jgross@suse.com>,
	=?UTF-8?q?Daniel=20P=20=2E=20Berrang=C3=A9?= <berrange@redhat.com>,
	=?UTF-8?q?Marek=20Marczykowski-G=C3=B3recki?= <marmarek@invisiblethingslab.com>
Subject: [RFC PATCH v4 6/6] docs: provide description for pci hotplug option
Date: Thu, 23 Apr 2026 16:50:31 +0200
In-Reply-To: <1776955586.8631fc262581453bbf619ec5b2062170.19dbace7684000f373@vates.tech>
References: <1776955586.8631fc262581453bbf619ec5b2062170.19dbace7684000f373@vates.tech>
MIME-Version: 1.0
Content-Transfert-Encoding: 8bit
X-BM-Disclaimer: Yes
Content-Type: multipart/alternative; boundary="-=Part.2742.424e6f0f84fb42ae.19dbad2ae7d.85e0adc7420a1022=-"
X-Bm-Milter-Handled: 4ffbd6c1-ee69-4e1b-aabd-f977039bd3e2
X-Bm-Transport-Timestamp: 1776955862653
X-purgate-ID: tlsNG-ef75cf/1776955864-AD165C48-992AB3EE/0/0
X-purgate-type: clean
X-purgate-size: 2304

---=Part.2742.424e6f0f84fb42ae.19dbad2ae7d.85e0adc7420a1022=-
Content-Type: text/plain; charset=utf-8
Content-Transfer-Encoding: quoted-printable

This patch adds description for the 'hotplug' PCI option, allowing
devices to be attached to the guest using the legacy QMP hotplug
mechanism or by passing them to the Qemu command line using '-device'=2E

Signed-off-by: Thierry Escande <thierry=2Eescande@vates=2Etech>
---
v2: no change
v3: no change
v4: no change
---
 docs/man/xl-pci-configuration=2E5=2Epod | 17 +++++++++++++++++
 docs/man/xl=2Ecfg=2E5=2Epod=2Ein            |  6 ++++++
 2 files changed, 23 insertions(+)

diff --git a/docs/man/xl-pci-configuration=2E5=2Epod b/docs/man/xl-pci-con=
figuration=2E5=2Epod
index 0691f06ad3=2E=2E8b664173cb 100644
--- a/docs/man/xl-pci-configuration=2E5=2Epod
+++ b/docs/man/xl-pci-configuration=2E5=2Epod
@@ -166,6 +166,23 @@ dom0 without confirmation=2E  Please use with care=2E
=20
 =3Dback
=20
+=3Ditem B<hotplug>=3DI<BOOLEAN>
+
+=3Dover 4
+
+=3Ditem Description
+
+Tells L<xl(1)> to use QMP hotplug mechanism to attach assignable device t=
o
+the guest, or to pass it via Qemu command line using
+'B<-device xen-pci-passthrough,=2E=2E=2E>'=2E The default is to use the l=
egacy QMP
+mechanism=2E
+
+=3Ditem Default Value
+
+1
+
+=3Dback
+
 =3Ditem B<power_mgmt>=3DI<BOOLEAN>
=20
 =3Dover 4
diff --git a/docs/man/xl=2Ecfg=2E5=2Epod=2Ein b/docs/man/xl=2Ecfg=2E5=2Epo=
d=2Ein
index 2f77016ecf=2E=2E09f59f9b9c 100644
--- a/docs/man/xl=2Ecfg=2E5=2Epod=2Ein
+++ b/docs/man/xl=2Ecfg=2E5=2Epod=2Ein
@@ -1236,6 +1236,12 @@ B<(HVM only)> Changes the default value of B<power_=
mgmt> for all PCI
 devices passed through to this VM=2E See B<power_mgmt>
 above=2E
=20
+=3Ditem B<pci_hotplug=3DBOOLEAN>
+
+B<(HVM only)> Changes the default value of B<hotplug> for all PCI
+devices passed through to this VM=2E See L<xl-pci-configuration(5)> for
+more details=2E
+
 =3Ditem B<gfx_passthru=3DBOOLEAN|"STRING">
=20
 Enable graphics device PCI passthrough=2E This option makes an assigned
--=20
2=2E53=2E0



-- 
Thierry Escande | Vates XCP-ng Developer

XCP-ng & Xen Orchestra - Vat=
es solutions

web: https://vates=2Etech
---=Part.2742.424e6f0f84fb42ae.19dbad2ae7d.85e0adc7420a1022=---


From xen-devel-bounces@lists.xenproject.org Thu Apr 23 15:03:26 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 23 Apr 2026 15:03:26 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1292277.1570787 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wFvaK-0001yA-OU; Thu, 23 Apr 2026 15:03:20 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1292277.1570787; Thu, 23 Apr 2026 15:03: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 1wFvaK-0001y3-Kv; Thu, 23 Apr 2026 15:03:20 +0000
Received: by outflank-mailman (input) for mailman id 1292277;
 Thu, 23 Apr 2026 15:03:19 +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.19dbaddd9f8000f373@swg.vates.tech>)
 id 1wFvaJ-0001xx-BO
 for xen-devel@lists.xenproject.org; Thu, 23 Apr 2026 15:03:19 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wFvaI-001I2q-Kf
 for xen-devel@lists.xenproject.org; Thu, 23 Apr 2026 17:03:18 +0200
Received: from [10.42.69.5] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1) (envelope-from
 <prod-mta-13.8631fc262581453bbf619ec5b2062170.19dbaddd9f8000f373@swg.vates.tech>)
 id 69ea34b3-5cb7-0a2a0a5109dd-0a2a4505c416-4
 for <xen-devel@lists.xenproject.org>; Thu, 23 Apr 2026 17:03:18 +0200
Received: from [185.255.28.34] (helo=prod-mta-13.swg-srv.net)
 by tlsNG-c201ff.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.1)
 (envelope-from
 <prod-mta-13.8631fc262581453bbf619ec5b2062170.19dbaddd9f8000f373@swg.vates.tech>)
 id 69ea34b6-aaa8-0a2a45050019-b9ff1c22807f-3
 for <xen-devel@lists.xenproject.org>; Thu, 23 Apr 2026 17:03:18 +0200
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
 19dbaddd9f8000f373.001 for <xen-devel@lists.xenproject.org>
 (version=TLSv1.3 cipher=TLS_AES_256_GCM_SHA384);
 Thu, 23 Apr 2026 15:03:14 +0000
Received: from l14 (lfbn-lyo-1-414-55.w2-7.abo.wanadoo.fr [2.7.24.55])
 (Authenticated sender: anthony.perard)
 by mail2.vates.fr (Postfix) with ESMTPSA id 448428756D;
 Thu, 23 Apr 2026 17:03:12 +0200 (CEST)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@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=u2ZCrL3FKsedINaHM/L0MISkunileTPXOhM7WtGyyCI=;
 h=from:subject:date:message-id:to:cc:mime-version:content-type:in-reply-to:references:feedback-id;
 b=GxUqq3pqEIxr19DoVYDsunJvab8rKl3IEgwhSvufk8DsZb30nKexNHbGYcZgiT9KRiYue3RS9
 wctewyYP+PfriuYmIVGdCpCU7D9LFAOtDxjuQKtDBzDqJJ9VHEz3uFhWH2TTmsMEw97MyDEMzzp
 A9DBXNvxHDvBfduqup/W0S/nnD7brl/qgg3/7UIHam6oiQebu/7ft4hbK5URoIi6z/2JgIQQ07l
 71UQwkMyO3USpqYPi4A932qDaDCbVnCNphb3Qx1JnCfBarrhdMiq04lG34bDTvuptaK8PLKb4X3
 yr070KX2k1Ue9/Jx8oTjT26G4JKvelj6+XqHptTjKVZA==
X-Zone-Loop: e65913d91b9bd9cf5a914c69dd43cca2b55168f4778c
x-campaign-type: default
x-transaction-id: d0af0e29-cfb6-4b71-8d0d-06da5f935818
x-swg-uid: 01-5586f84c-bb51-4f02-9023-2cf5e956083e
X-Mailer: Sweego
Message-ID:
 <1776956594.8631fc262581453bbf619ec5b2062170.19dbaddd9f8000f373@vates.tech>
x-swg-bid: 1776956594.8631fc262581453bbf619ec5b2062170.19dbaddd9f8000f373
Feedback-ID: default:8631fc262581453bbf619ec5b2062170:Sweego
x-campaign-id: default
x-client-id: 8631fc262581453bbf619ec5b2062170
X-Originating-IP: [37.26.189.201]
Date: Thu, 23 Apr 2026 17:03:12 +0200
From: Anthony PERARD <anthony.perard@vates.tech>
To: Elliott Mitchell <ehem+xen@m5p.com>
Cc: xen-devel@lists.xenproject.org
Subject: Re: [PATCH] tools: remove setup_physical_bridge_port() function
References: <abhj_os9fUw0JH1i@mattapan.m5p.com>
MIME-Version: 1.0
Content-Disposition: inline
In-Reply-To: <abhj_os9fUw0JH1i@mattapan.m5p.com>
X-BM-Disclaimer: Yes
Content-Type: multipart/alternative; boundary="-=Part.274c.307635f7b96b90a8.19dbaddd0db.5c662c9c97ee5fde=-"
X-Bm-Milter-Handled: 4ffbd6c1-ee69-4e1b-aabd-f977039bd3e2
X-Bm-Transport-Timestamp: 1776956592347
X-purgate-ID: tlsNG-c201ff/1776956598-E13A0443-1747D564/0/0
X-purgate-type: clean
X-purgate-size: 897

---=Part.274c.307635f7b96b90a8.19dbaddd0db.5c662c9c97ee5fde=-
Content-Type: text/plain; charset=utf-8
Content-Transfer-Encoding: quoted-printable

On Mon, Mar 16, 2026 at 01:11:42PM -0700, Elliott Mitchell wrote:
> Only the setup_virtual_bridge_port() function was used=2E  As such merge
> that with _setup_bridge_port() and leave that as the remaining function=
=2E
>=20
> Signed-off-by: Elliott Mitchell <ehem+xen@m5p=2Ecom>

Do you mind if I add the following to the commit message?

    The last user of setup_physical_bridge_port() was removed in
    9fabe55939a8 ("tools/hotplug: Remove network-*")=2E

With that:
Acked-by: Anthony PERARD <anthony=2Eperard@vates=2Etech>

Thanks,


-- 
Anthony Perard | Vates XCP-ng Developer

XCP-ng & Xen Orchestra - Vate=
s solutions

web: https://vates=2Etech
---=Part.274c.307635f7b96b90a8.19dbaddd0db.5c662c9c97ee5fde=---


From xen-devel-bounces@lists.xenproject.org Thu Apr 23 15:20:15 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 23 Apr 2026 15:20:15 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1292301.1570797 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wFvqb-0005eQ-3v; Thu, 23 Apr 2026 15:20:09 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1292301.1570797; Thu, 23 Apr 2026 15:20: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 1wFvqa-0005eJ-Vy; Thu, 23 Apr 2026 15:20:08 +0000
Received: by outflank-mailman (input) for mailman id 1292301;
 Thu, 23 Apr 2026 15:20:07 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92) id 1wFvqY-0005YN-P0
 for xen-devel@lists.xenproject.org; Thu, 23 Apr 2026 15:20:07 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wFvqY-004Oa5-5o
 for xen-devel@lists.xenproject.org; Thu, 23 Apr 2026 17:20:06 +0200
Received: from [10.42.69.5] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <oleksii.kurochko@gmail.com>)
 id 69ea38a1-2eae-0a2a0a5409dd-0a2a4505d6ec-28
 for <xen-devel@lists.xenproject.org>; Thu, 23 Apr 2026 17:20:06 +0200
Received: from [209.85.208.169] (helo=mail-lj1-f169.google.com)
 by tlsNG-c201ff.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.1)
 (envelope-from <oleksii.kurochko@gmail.com>)
 id 69ea38a5-aaa8-0a2a45050019-d155d0a9e077-3
 for <xen-devel@lists.xenproject.org>; Thu, 23 Apr 2026 17:20:06 +0200
Received: by mail-lj1-f169.google.com with SMTP id
 38308e7fff4ca-38e9653b580so72752781fa.2
 for <xen-devel@lists.xenproject.org>; Thu, 23 Apr 2026 08:20:06 -0700 (PDT)
Received: from [192.168.1.6] (user-109-243-69-121.play-internet.pl.
 [109.243.69.121]) by smtp.gmail.com with ESMTPSA id
 2adb3069b0e04-5a4185ad11fsm5211742e87.14.2026.04.23.08.20.04
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Thu, 23 Apr 2026 08:20:04 -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=20251104 header.d=gmail.com header.i="@gmail.com" header.h="Content-Transfer-Encoding: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=20251104; t=1776957605; x=1777562405; darn=lists.xenproject.org;
        h=content-transfer-encoding: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;
        bh=wmCIC64TEvCqGjCN/BfUc7dGfg3d/i9vHmXqvqQvoe0=;
        b=opTX/eFOZ0rX73KLjfLMjaXfu9z+bcunjewtoKB9fK68p3AJF8MgKvEn/hQVP+doUY
         w4qusTGQ+WqU2TvYZkK9tP7qGkgtIaGfY7QpIh1aU2xIy0uwNOgCAqfk2DJRlfognLrL
         HEUgbc8SVqydRYE9Ui4+fTUwVY9xPdak8YZ6kTjLbEESyEbYhKLqLSXp9Gz8lfzFVPoD
         VaXHuhq4f/lnnS+sJAbo2y7yu+n84K6W4r0uOV85Rg6c8tn5dRpqcenK07T9P3zbDM3V
         fyFv0NV2xgFVC/XNHSyiMaCSsvAZZNv6ONcI2+08hVZeggmypH8dj0RbEjk7TwapsIyU
         7MAg==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20251104; t=1776957605; x=1777562405;
        h=content-transfer-encoding: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;
        bh=wmCIC64TEvCqGjCN/BfUc7dGfg3d/i9vHmXqvqQvoe0=;
        b=Flp3LvcfQl1CR1iM/K6jwcstpvMN/TvbA4fK5n0qWDgo2TLrfgaWMGnaOsdxi+nU90
         l8z9HUeXj2RkGRPAHZbIYPMmdsCTkMIfco9FwC99pdVegmJH4tyrmmw3n8RjH5a0eAUN
         3yMRZJy8wYSq9tRg/ER87oqcJHcUTawnsJMFPcIvmbnpCb+LPNJYE0WIWfGYikYXdUYB
         6YPJw+eEn+qqB/eUq+e6lV8j5pVKcvYDSASu9mtAMWZ07jQ+XCbeTtAKCePq/FpJ273G
         T7rfsZmpuqhQwSttPQGK7cLA+BbRxktgZbY9D5aRkQ0+spbhoYsOgRenLUYKY8I9ZVtv
         ltxA==
X-Forwarded-Encrypted: i=1; AFNElJ8TIrWo0WPC8lOOIXbZm95S5aulNSx4K1hXRHffKvNPFu7o/HBZIoHi6GUOb6L/ecXuDeS0R+QEbH4=@lists.xenproject.org
X-Gm-Message-State: AOJu0YwuJh/W7xUR1Gv7ya6KUD/SV2s+BE00y+m0+ypeMLTDXN7uyUBl
	cJx2fzWP8Fo/tGzy4Ye0ME14z4cDrvypD2XycYHXHOqSW9VTYd5qPeTs
X-Gm-Gg: AeBDieuZjZtx4AoqxsswtFJlz/zA+UTrZkpin2MOy4ON2yI3wunAvYX+n9bla9sUydW
	guolNtM1x9WBI+QzBkHE+3Nw1XJ947Z7aJCQ5PiCao5tGtXSrhaZUzkaL0jChGswGBm5+kLGaXa
	JFruh/y1aArlu9SoW5uRdIojxlMxlI8T3F7QX/TTwOQVGnqmTkH0J2CEZRk0ph8EqrQ+tZ2iKOD
	cYAjbiD7SNdfoekPDbP60+MpSNiMZG7vp1o5iHwDEabMemJ1TS+QrR22G+hX7cl65d8tYDi9lJG
	Op6K5PCyyT+dBWo1eh/LDh19MIY750m2RsK1JBabPbICRuP8YwokHOxZY+eYwTrrcdBJZVzVuIQ
	OjmSPaLKCxGhA60R3+3Lf4HRzEt0uUrIZHjPQ53h+0WNlnyHfrAt8lv7otth1XcjTe+SPsenZr/
	bUBPti0dGhpurY/wbDD5gqXomEubWruSikrjNVSwH7+zgaMA+Y14J75jc4Pfj6bRzKzNEMORA/2
	7TYghsF5jsDCA==
X-Received: by 2002:a05:6512:1189:b0:5a2:b59a:5e99 with SMTP id 2adb3069b0e04-5a4172e7bdemr9283566e87.22.1776957604913;
        Thu, 23 Apr 2026 08:20:04 -0700 (PDT)
Message-ID: <317cac0b-854f-433b-8242-d498cdba6d63@gmail.com>
Date: Thu, 23 Apr 2026 17:20:03 +0200
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [RFC PATCH v4 0/6] xl: Allow PCI devices to be passthrough'd via
 Qemu command line
To: Thierry Escande <thierry.escande@vates.tech>,
 xen-devel@lists.xenproject.org
Cc: Anthony PERARD <anthony.perard@vates.tech>,
 Juergen Gross <jgross@suse.com>, =?UTF-8?Q?Daniel_P_=2E_Berrang=C3=A9?=
 <berrange@redhat.com>,
 =?UTF-8?Q?Marek_Marczykowski-G=C3=B3recki?= <marmarek@invisiblethingslab.com>
References: <1776955586.8631fc262581453bbf619ec5b2062170.19dbace7684000f373@vates.tech>
Content-Language: en-US
From: Oleksii Kurochko <oleksii.kurochko@gmail.com>
In-Reply-To: <1776955586.8631fc262581453bbf619ec5b2062170.19dbace7684000f373@vates.tech>
Content-Type: text/plain; charset=UTF-8; format=flowed
Content-Transfer-Encoding: 7bit
X-purgate-ID: tlsNG-c201ff/1776957606-2BF66443-2BB0F2CB/10/73395122804
X-purgate-type: spam
X-purgate-size: 3281


On 4/23/26 4:46 PM, Thierry Escande wrote:
> This series adds new 'hotplug' option for PCI device passthrough.
> 
> The current mechanism for device passthrough uses QMP device_add command
> to hot-plug PCI devices to the guest Qemu instance. This is an issue for
> guests running on Q35 chipset (preliminary support posted at [1]) since the
> Q35 PCI root bus does not support hotplug. Devices could be hotplugged to
> a secondary PCI bus but Xen only support 1 PCI bus for now.
> 
> The 'hotplug' option allows to control how devices are attached to the
> guest, either by using the legacy QMP mechanism (this is the default) or by
> passing them directly to the Qemu command line using xen-pci-passthrough
> device.
> 
> Example usage in cfg file:
>   pci = [ "00:03.0,seize=1,hotplug=0" ]
> 
> Since Qemu -device option accepts parameters in json format, this
> patchset adds a new internal function libxl__device_pci_get_qapi_json() that
> generates the device json object used for both QMP hotplug and command line
> passing.
> 
> Also, to handle the assignable PCI device list, the function
> libxl_pci_assignable() is renamed as libxl_device_pci_assignable() and is
> made available from libxl.h for access in libxl_dm.c. 2 other functions are
> also exported internally: libxl__pciback_dev_is_assigned() and
> libxl__device_pci_assignable_add().
> 
> This has been successfully tested on Xen 4.22-dev and Qemu 10.0 running
> Debian VMs in both Bios and UEFI mode with a passthrough'd nvme disk.
> Disabling the hotplug mechanism might be made mandatory for Q35 machines
> later, once Q35 support is merged upstream.
> 
> [1] https://lore.kernel.org/xen-devel/20260313163455.790692-1-thierry.escande@vates.tech/
> 
> Changes in v2:
>   - Add support for YAJL json parser
> 
> Changes in v3:
>   - Move code block of device command line parameters creation
>   - Better handling of pci device assignation
> 
> Changes in v4:
>   - Split the refactoring parts of the 2nd patch
>   - Extend libxl__json_object_to_json() and use it to generate the qapi json
>     string
> 
> Thierry Escande (6):
>    xl: Add an hotplug option for PCI device passthrough
>    libxl: Refactor some PCI device handling functions
>    libxl: Add libxl__device_pci_get_qapi_json() internal API
>    libxl: Extend libxl__json_object_to_json() prototype
>    libxl: Allow PCI device passthrough using -device Qemu command line
>    docs: provide description for pci hotplug option
> 
>   docs/man/xl-pci-configuration.5.pod | 17 +++++++++
>   docs/man/xl.cfg.5.pod.in            |  6 +++
>   tools/include/libxl.h               |  1 +
>   tools/libs/light/libxl_dm.c         | 33 +++++++++++++++++
>   tools/libs/light/libxl_internal.h   | 12 +++++-
>   tools/libs/light/libxl_json.c       | 11 +++++-
>   tools/libs/light/libxl_pci.c        | 57 ++++++++++++++++++++---------
>   tools/libs/light/libxl_types.idl    |  1 +
>   tools/libs/util/libxlu_pci.c        |  2 +
>   tools/xl/xl_parse.c                 |  5 +++
>   10 files changed, 123 insertions(+), 22 deletions(-)
> 

I think we also want to add an item to CHANGELOG.md that it is possible 
to passthrough PCI device via QEMU command line.

Thanks.

~ Oleksii


From xen-devel-bounces@lists.xenproject.org Thu Apr 23 15:59:16 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 23 Apr 2026 15:59:16 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1292354.1570826 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wFwSD-0003AS-5i; Thu, 23 Apr 2026 15:59:01 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1292354.1570826; Thu, 23 Apr 2026 15:59: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 1wFwSD-0003AL-1d; Thu, 23 Apr 2026 15:59:01 +0000
Received: by outflank-mailman (input) for mailman id 1292354;
 Thu, 23 Apr 2026 15:58:59 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <mfo@igalia.com>) id 1wFwSB-0003AF-D4
 for xen-devel@lists.xenproject.org; Thu, 23 Apr 2026 15:58:59 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wFwS9-001RvN-U8
 for xen-devel@lists.xenproject.org; Thu, 23 Apr 2026 17:58:58 +0200
Received: from [10.42.69.11] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <mfo@igalia.com>)
 id 69ea41a6-e002-0a2a0a5209dd-0a2a450bc83c-32
 for <xen-devel@lists.xenproject.org>; Thu, 23 Apr 2026 17:58:57 +0200
Received: from [213.97.179.56] (helo=fanzine2.igalia.com)
 by tlsNG-42698a.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.1)
 (envelope-from <mfo@igalia.com>)
 id 69ea41c0-212f-0a2a450b0019-d561b338e004-3
 for <xen-devel@lists.xenproject.org>; Thu, 23 Apr 2026 17:58:56 +0200
Received: from maestria.local.igalia.com ([192.168.10.14] helo=mail.igalia.com)
 by fanzine2.igalia.com with esmtps 
 (Cipher TLS1.3:ECDHE_SECP256R1__RSA_PSS_RSAE_SHA256__AES_256_GCM:256) (Exim)
 id 1wFwRl-001AbI-Gv; Thu, 23 Apr 2026 17:58:32 +0200
Received: from webmail.service.igalia.com ([192.168.21.45])
 by mail.igalia.com with esmtp (Exim)
 id 1wFwRi-002EgO-KM; Thu, 23 Apr 2026 17:58:32 +0200
Received: from localhost ([127.0.0.1] helo=webmail.igalia.com)
 by webmail.service.igalia.com with esmtp (Exim 4.98.2)
 (envelope-from <mfo@igalia.com>) id 1wFwRh-00000000VIN-47KH;
 Thu, 23 Apr 2026 17:58:30 +0200
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
Authentication-Results: eu.smtp.expurgate.cloud; dkim=pass header.s=20170329 header.d=igalia.com header.i="@igalia.com" header.h="Content-Transfer-Encoding:Content-Type:Message-ID:References:In-Reply-To:Subject:Cc:To:From:Date:MIME-Version"
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=igalia.com;
	s=20170329; h=Content-Transfer-Encoding:Content-Type:Message-ID:References:
	In-Reply-To:Subject:Cc:To:From:Date:MIME-Version:Sender:Reply-To:Content-ID:
	Content-Description:Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc
	:Resent-Message-ID:List-Id:List-Help:List-Unsubscribe:List-Subscribe:
	List-Post:List-Owner:List-Archive;
	bh=xdei9ZM7WTccU6AfBRlzsKRTYKtjrdEquFKjWHLZr4Y=; b=iTiYf3Nzj5Np2xldc79/j65JLs
	VjsDJrQ0MdOSXjVwmYndAMc5CnAJyL/qhkfzeFgVSH9oP/iuNoZrJlGwDBRnoNdn3tdnvoys5Ergx
	QAYzIVZiJU5wlHxM9zjXdUkms7dq3RA9wS1oGADO5CXHpkPzA7wmZrUNtIjQS/xz/3bTCsTFqLiGj
	bl7gSF67h3l35cYri9xNAn8Sb6Vod1++ofxhxBe3pltxcKtmqMDZ5odZ8Umc1pGyQ23Zw3xEWfuAF
	yjtpFRvwqnJ0LAc/o5PN2wHBjE3lHZtIU2q72C4U67i5xCkmksAu0QlUoCXis2FXMEERxuMVFGHWa
	ZvBmMFsQ==;
MIME-Version: 1.0
Date: Thu, 23 Apr 2026 12:58:30 -0300
From: Mauricio Faria de Oliveira <mfo@igalia.com>
To: David Laight <david.laight.linux@gmail.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>, Juergen Gross
 <jgross@suse.com>, Alexey Dobriyan <adobriyan@gmail.com>, Boris Ostrovsky
 <boris.ostrovsky@oracle.com>, kernel-dev@igalia.com,
 linux-kernel@vger.kernel.org, xen-devel@lists.xenproject.org
Subject: Re: [PATCH 1/3] x86/asm, x86/boot: Expose inline memcmp
In-Reply-To: <20260422215441.4204c142@pumpkin>
References: <20260422-pvh-kasan-inline-v1-0-7e6194344c92@igalia.com>
 <20260422-pvh-kasan-inline-v1-1-7e6194344c92@igalia.com>
 <20260422215441.4204c142@pumpkin>
Message-ID: <324ef97b16f52e0ccc72f6381d1b5dd2@igalia.com>
X-Sender: mfo@igalia.com
Content-Type: text/plain; charset=US-ASCII
Content-Transfer-Encoding: 7bit
X-Spam-Report: NO, Score=-2.2, Tests=ALL_TRUSTED=-3,BAYES_50=0.8
X-Spam-Score: -21
X-Spam-Bar: --
X-purgate-ID: tlsNG-42698a/1776959937-05D6FF3B-89058958/0/0
X-purgate-type: clean
X-purgate-size: 3135

On 2026-04-22 17:54, David Laight wrote:
> On Wed, 22 Apr 2026 17:07:45 -0300
> Mauricio Faria de Oliveira <mfo@igalia.com> wrote:
> 
>> Move the inline memcmp function, currently only available to boot code
>> (boot/string.c), into the header with similar inline string functions
>> (include/asm/string.h) so it may be reused.
> 
> This needs a comment/warning that it is incompatible with normal memcmp()
> because it only returns 0/1 not -1/0/1.
> Most callers don't care.

Thanks for catching and suggesting this.

I can also change it to -1/0/1 in a later patch, to keep v2 only a fix
and split a behavior change, with something like this (lightly tested):

static __always_inline int __inline_memcmp(const void *s1, const void
*s2, size_t len)
{
        bool above, below;

        asm("repe cmpsb"
            : "+S" (s1), "+D" (s2), "+c" (len),
              "=@cca" (above),
              "=@ccb" (below));

        return above - below;
}

cheers,

> 
> 	David
> 
> 
>> 
>> Add a _SETUP guard in string.h so not to include the 32/64-bit specific
>> string headers in boot/ code (16-bit, real mode) and avoid build errors.
>> 
>> Signed-off-by: Mauricio Faria de Oliveira <mfo@igalia.com>
>> ---
>>  arch/x86/boot/string.c        |  6 ++----
>>  arch/x86/include/asm/string.h | 11 +++++++++++
>>  2 files changed, 13 insertions(+), 4 deletions(-)
>> 
>> diff --git a/arch/x86/boot/string.c b/arch/x86/boot/string.c
>> index b25c6a9303b7314d5caf5c9306239811705294fe..bbee78637b349e42e9281d8df50d89d48f4490b9 100644
>> --- a/arch/x86/boot/string.c
>> +++ b/arch/x86/boot/string.c
>> @@ -15,6 +15,7 @@
>>  #include <linux/errno.h>
>>  #include <linux/limits.h>
>>  #include <asm/asm.h>
>> +#include <asm/string.h>
>>  #include "ctype.h"
>>  #include "string.h"
>>  
>> @@ -31,10 +32,7 @@
>>  
>>  int memcmp(const void *s1, const void *s2, size_t len)
>>  {
>> -	bool diff;
>> -	asm("repe cmpsb"
>> -	    : "=@ccnz" (diff), "+D" (s1), "+S" (s2), "+c" (len));
>> -	return diff;
>> +	return __inline_memcmp(s1, s2, len);
>>  }
>>  
>>  /*
>> diff --git a/arch/x86/include/asm/string.h b/arch/x86/include/asm/string.h
>> index 9cb5aae7fba9ffcf0f5af8f939d30467750ccaa9..736a6f6a31f0a68281b4f17415aba0fcd95dc228 100644
>> --- a/arch/x86/include/asm/string.h
>> +++ b/arch/x86/include/asm/string.h
>> @@ -2,11 +2,13 @@
>>  #ifndef _ASM_X86_STRING_H
>>  #define _ASM_X86_STRING_H
>>  
>> +#ifndef _SETUP
>>  #ifdef CONFIG_X86_32
>>  # include <asm/string_32.h>
>>  #else
>>  # include <asm/string_64.h>
>>  #endif
>> +#endif
>>  
>>  static __always_inline void *__inline_memcpy(void *to, const void *from, size_t len)
>>  {
>> @@ -29,4 +31,13 @@ static __always_inline void *__inline_memset(void *s, int v, size_t n)
>>  	return ret;
>>  }
>>  
>> +static __always_inline int __inline_memcmp(const void *s1, const void *s2, size_t len)
>> +{
>> +	bool diff;
>> +
>> +	asm("repe cmpsb"
>> +	    : "=@ccnz" (diff), "+D" (s1), "+S" (s2), "+c" (len));
>> +	return diff;
>> +}
>> +
>>  #endif /* _ASM_X86_STRING_H */
>>

-- 
Mauricio


From xen-devel-bounces@lists.xenproject.org Thu Apr 23 16:01:26 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 23 Apr 2026 16:01:26 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1292366.1570833 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wFwUW-0005Dt-Gb; Thu, 23 Apr 2026 16:01:24 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1292366.1570833; Thu, 23 Apr 2026 16: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 1wFwUW-0005Dm-Dh; Thu, 23 Apr 2026 16:01:24 +0000
Received: by outflank-mailman (input) for mailman id 1292366;
 Thu, 23 Apr 2026 16:01:23 +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 1wFwUV-0005De-9S
 for xen-devel@lists.xenproject.org; Thu, 23 Apr 2026 16:01:23 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wFwUU-004ruX-Lb
 for xen-devel@lists.xenproject.org; Thu, 23 Apr 2026 18:01:22 +0200
Received: from [10.42.69.11] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <jgross@suse.com>)
 id 69ea4248-2eae-0a2a0a5409dd-0a2a450ba496-42
 for <xen-devel@lists.xenproject.org>; Thu, 23 Apr 2026 18:01:22 +0200
Received: from [209.85.208.49] (helo=mail-ed1-f49.google.com)
 by tlsNG-42698a.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.1)
 (envelope-from <jgross@suse.com>)
 id 69ea4252-212f-0a2a450b0019-d155d031cc9e-3
 for <xen-devel@lists.xenproject.org>; Thu, 23 Apr 2026 18:01:22 +0200
Received: by mail-ed1-f49.google.com with SMTP id
 4fb4d7f45d1cf-678a1642a81so249340a12.0
 for <xen-devel@lists.xenproject.org>; Thu, 23 Apr 2026 09:01:22 -0700 (PDT)
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
 4fb4d7f45d1cf-672c480e21fsm4182272a12.8.2026.04.23.09.01.21
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Thu, 23 Apr 2026 09:01:21 -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=google header.d=suse.com header.i="@suse.com" header.h="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=1776960082; x=1777564882; darn=lists.xenproject.org;
        h=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;
        bh=yJCT8nk48ir51dkw5nhzsqXmaeGMaN+VpQRMB4O4IZI=;
        b=MMN8gWenuII2LTGaLHjAYR22zynEwfytZ+5MTD+0su2LFjCWI8Swh2OTuPuzXT7HVo
         r+MQ6sbP1JHOSRSqSy1Sg++lXBKxfb4mBdfa/avsQrBGRzVVvGTJCeSImeXQfsdVwOTY
         Hlxo0ebFDntT9JCNI1eIYUHZnEDjJ2d7bv6eVvEIAT88wu+rp6HHOf9bYFs8dP6K8Gc3
         CDV8XBJje92MOBZ54lJE4dSS0QhtSQhDA178mj3vR7SibilnFnTBimxDzjWzsXpxtkP7
         +zZ/eUkoMvLvgokYDmJCcDiLjT2K51kkELToekad96EPIZeIiHkqcFQWXCtO7XMDSS11
         LdBA==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20251104; t=1776960082; x=1777564882;
        h=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;
        bh=yJCT8nk48ir51dkw5nhzsqXmaeGMaN+VpQRMB4O4IZI=;
        b=JHmuNDlf1Ikz7zoXMA0DCFggyNwTg67k/KbB1d+RI4dHsYBeiLrKoqFBPhAMZ3TkFP
         T2oySwZPDCDcyv0cSIzTvVJOpn8kScZjcMSRa7iu0T2qQOCWiCMeaExoVqp2Ef/EMPq5
         6i/eXGv4W8o9zM0+unSQIB4tsUR5Wqiwhv5y2px0KTNxRR8BzaHw2LC4UF6Lj+VkCf4s
         96v6PQenFHk3htxteasbHqoWY5nZtr/xg+xw7OzHzNj1v68Jl+Tm/NW/BGfMOe8WjWha
         1ZlwILflvcCTm7J4uGFmMAwzUtHkuN6bq63OTajeVW29MQRradaAcT0w1VcnMqQLuGCd
         7F7Q==
X-Forwarded-Encrypted: i=1; AFNElJ+MNttgl1DVa4uMwT6092Y4wp8JQ12T+8ij7LdpKjn11ymUMxgzx5F1Id6C7ueweNDhLki9r8a1ygc=@lists.xenproject.org
X-Gm-Message-State: AOJu0YzpPiGyqg5afJ2tyHC/NeHqRMfkiTZNqvJBCMbELY1JByg//4qC
	1UjXFKGrnStf4PvN+i/CWtN18hyTQ0p20tHG0wMWxVm1//Rrxgx8CrdQZhN4dKNMD/s=
X-Gm-Gg: AeBDiesgTSb0EYdQQ6OTrcBenfk6jMwrEk0qpo34/MyYSJYL7NNJDBrD2Gxk2L1p5ox
	s3brNvBcbHXmhjnn/uYbol8R67rI4Pcd33xrE4ZajUmkUBMON5DlPg+oBr9qg+ArvI7BLQNrPse
	TStdiw6lKqq8i0lKTXs/hyjNcvE4DnhO0q5zIpZtLdoYUSdMKo20fRUXpwkeJgZ47RnaaNDml0L
	FRWsORyqEjNfNQTNkne0iu7A7f4c0bVf0zsHV4R6BMBVMK4RIgu2PwXH/vYF8hZz7cNO5mYEyIP
	xOson5IQWzY1GQZi9zsEGf2s4i7bnv3Ymcv4o0vxhmOtfioYHwe7Cwoa4U2gFdqUJGBVVttORW5
	Uhmr0Y2YsmAAJ+N+7bcFqCVf4XFA0611o1NkQrUGC1t66ohzRqr6ZamcdovwvPojIphUnkdA8eS
	kxxUsJxyTjg3wNkyqgEupED4X4qlM5jOJafRTTomL5HcGLNZp/losJfE7zMlk/FUSRVskECe+Wc
	IQZb/5lXs6dCMlXXmTBRYdh6sDqadlxry9I9MA/c+V3I0FWmtKjTUbBbU12fumF
X-Received: by 2002:a05:6402:13d1:b0:673:b712:d414 with SMTP id 4fb4d7f45d1cf-673b712d4b0mr11918040a12.10.1776960081713;
        Thu, 23 Apr 2026 09:01:21 -0700 (PDT)
Message-ID: <b1b59238-9530-4d7e-8c1d-032700337503@suse.com>
Date: Thu, 23 Apr 2026 18:01:20 +0200
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH 2/3] x86/cpuid: fix unbootable VMs by really inlining
 memcmp() in hypervisor_cpuid_base()
To: Mauricio Faria de Oliveira <mfo@igalia.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>,
 Alexey Dobriyan <adobriyan@gmail.com>,
 Boris Ostrovsky <boris.ostrovsky@oracle.com>
Cc: kernel-dev@igalia.com, linux-kernel@vger.kernel.org,
 xen-devel@lists.xenproject.org
References: <20260422-pvh-kasan-inline-v1-0-7e6194344c92@igalia.com>
 <20260422-pvh-kasan-inline-v1-2-7e6194344c92@igalia.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: <20260422-pvh-kasan-inline-v1-2-7e6194344c92@igalia.com>
Content-Type: multipart/signed; micalg=pgp-sha256;
 protocol="application/pgp-signature";
 boundary="------------ic78VdLEcBJ5ydvhV0E0ZuV9"
X-purgate-ID: tlsNG-42698a/1776960082-24AB5F3B-DC605153/0/0
X-purgate-type: clean
X-purgate-size: 7309

This is an OpenPGP/MIME signed message (RFC 4880 and 3156)
--------------ic78VdLEcBJ5ydvhV0E0ZuV9
Content-Type: multipart/mixed; boundary="------------oUcxIFxMLsDxx0Ywcue6L02I";
 protected-headers="v1"
From: =?UTF-8?B?SsO8cmdlbiBHcm/Dnw==?= <jgross@suse.com>
To: Mauricio Faria de Oliveira <mfo@igalia.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>,
 Alexey Dobriyan <adobriyan@gmail.com>,
 Boris Ostrovsky <boris.ostrovsky@oracle.com>
Cc: kernel-dev@igalia.com, linux-kernel@vger.kernel.org,
 xen-devel@lists.xenproject.org
Message-ID: <b1b59238-9530-4d7e-8c1d-032700337503@suse.com>
Subject: Re: [PATCH 2/3] x86/cpuid: fix unbootable VMs by really inlining
 memcmp() in hypervisor_cpuid_base()
References: <20260422-pvh-kasan-inline-v1-0-7e6194344c92@igalia.com>
 <20260422-pvh-kasan-inline-v1-2-7e6194344c92@igalia.com>
In-Reply-To: <20260422-pvh-kasan-inline-v1-2-7e6194344c92@igalia.com>

--------------oUcxIFxMLsDxx0Ywcue6L02I
Content-Type: multipart/mixed; boundary="------------c4u0C8tAi4Irszf1o7RDgbLt"

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

T24gMjIuMDQuMjYgMjI6MDcsIE1hdXJpY2lvIEZhcmlhIGRlIE9saXZlaXJhIHdyb3RlOg0K
PiBFdmVuIHdpdGggX19idWlsdGluIHRoZSBjb21waWxlciBtYXkgZGVjaWRlIHRvIHVzZSB0
aGUgb3V0IG9mIGxpbmUgZnVuY3Rpb24NCj4gaW5zdGVhZCBvZiB0aGUgaW5saW5lIGltcGxl
bWVudGF0aW9uLg0KPiANCj4gVGhlIGV4aXN0aW5nIGNvZGUgaXMgYnJva2VuIHdpdGggZ2Nj
LTE0LzE1IGJ1dCBub3QgZ2NjLTEyLzEzIChVYnVudHUgMjUuMTApDQo+IGFuZCB2bWxpbnV4
IG5vIGxvbmdlciBib290cyB3aXRoIENPTkZJR19QVkggaWYgQ09ORklHX0tBU0FOX0dFTkVS
SUMgaXMgc2V0Lg0KPiANCj4gRm9yIHRlc3RpbmcgcHVycG9zZXMsIGlmIHRoZSBzaXplIGFy
Z3VtZW50IGlzIHJlZHVjZWQgZnJvbSAxMiB0byA4IHRoZW4gdGhlDQo+IGNvbXBpbGVyIGRl
Y2lkZXMgdG8gdXNlIHRoZSBpbmxpbmUgaW1wbGVtZW50YXRpb247IHRoYXQgc2hvd3MgcmVz
dWx0cyB2YXJ5Lg0KPiANCj4gU3dpdGNoIHRoZSBidWlsdGluIHRvIHRoZSBpbmxpbmUgaW1w
bGVtZW50YXRpb24gdG8gYWRkcmVzcyBpdC4NCj4gDQo+IEZpeGVzOiA0MTZhMzNjOWFmY2Ug
KCJ4ODYvY3B1OiBmaXggdW5ib290YWJsZSBWTXMgYnkgaW5saW5pbmcgbWVtY21wKCkgaW4g
aHlwZXJ2aXNvcl9jcHVpZF9iYXNlKCkiKQ0KPiBTaWduZWQtb2ZmLWJ5OiBNYXVyaWNpbyBG
YXJpYSBkZSBPbGl2ZWlyYSA8bWZvQGlnYWxpYS5jb20+DQoNClJldmlld2VkLWJ5OiBKdWVy
Z2VuIEdyb3NzIDxqZ3Jvc3NAc3VzZS5jb20+DQoNCg0KSnVlcmdlbg0K
--------------c4u0C8tAi4Irszf1o7RDgbLt
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-----

--------------c4u0C8tAi4Irszf1o7RDgbLt--

--------------oUcxIFxMLsDxx0Ywcue6L02I--

--------------ic78VdLEcBJ5ydvhV0E0ZuV9
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/Ey8FAmnqQlAFAwAAAAAACgkQsN6d1ii/Ey8R
gwgAgXMkjfFG+GbEYhMWBm4Tnxw3bBWf+sgWNu2MsH8fn+plM659Mn7v1ZeWqF10H27KHuICd7E4
yQci3HQnZELnh4FxT0+GDCAck6EiBY7w1vpdJRqwIFv8fNFSGAUBGMfTHvsx7b1UowKNm/OATLTb
7E6uexZbmIE/wewKtUknvmEMRHO5tn6vgBHX9zFJMoJ+9KEFIs0LCl8YSxzFVCljs/aZvyKQJKHZ
PNlxZ54NuXW7BTAcb4Fa748Sz7B16DrX5X6Tv5OA5hHN3ItgmM66dga10L75ODP9SnyLFCYW3kC8
TtyuZc8fIalMEVtI+DyY5C38gfo3glIk4khnNDwSGQ==
=UrVd
-----END PGP SIGNATURE-----

--------------ic78VdLEcBJ5ydvhV0E0ZuV9--


From xen-devel-bounces@lists.xenproject.org Thu Apr 23 16:01:59 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 23 Apr 2026 16:01:59 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1292372.1570843 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wFwV5-0005bI-P6; Thu, 23 Apr 2026 16:01:59 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1292372.1570843; Thu, 23 Apr 2026 16:01: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 1wFwV5-0005bB-MF; Thu, 23 Apr 2026 16:01:59 +0000
Received: by outflank-mailman (input) for mailman id 1292372;
 Thu, 23 Apr 2026 16:01:58 +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 1wFwV3-0005av-Uv
 for xen-devel@lists.xenproject.org; Thu, 23 Apr 2026 16:01:58 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wFwV3-004s8t-Bz
 for xen-devel@lists.xenproject.org; Thu, 23 Apr 2026 18:01:57 +0200
Received: from [10.42.69.5] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <jgross@suse.com>)
 id 69ea4268-2eae-0a2a0a5409dd-0a2a4505be94-44
 for <xen-devel@lists.xenproject.org>; Thu, 23 Apr 2026 18:01:57 +0200
Received: from [209.85.208.54] (helo=mail-ed1-f54.google.com)
 by tlsNG-c201ff.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.1)
 (envelope-from <jgross@suse.com>)
 id 69ea4274-aaa8-0a2a45050019-d155d036b9ae-3
 for <xen-devel@lists.xenproject.org>; Thu, 23 Apr 2026 18:01:56 +0200
Received: by mail-ed1-f54.google.com with SMTP id
 4fb4d7f45d1cf-671c5eb7fb0so8454844a12.3
 for <xen-devel@lists.xenproject.org>; Thu, 23 Apr 2026 09:01:56 -0700 (PDT)
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
 4fb4d7f45d1cf-672c4d4590asm4166136a12.19.2026.04.23.09.01.55
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Thu, 23 Apr 2026 09:01:55 -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=google header.d=suse.com header.i="@suse.com" header.h="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=1776960116; x=1777564916; darn=lists.xenproject.org;
        h=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;
        bh=NgjG39TDSKA6ylzEYt8Mo9D4rrySu1X1DTlV/FlhVOI=;
        b=YqR1g37ooB2yNiHEsyYIbWl8zNGHUC5m+MqxhrLw+0BUM+64/OOzAEEsFuIr31CNHU
         Xxl65p1X7ZMQ7arObqErxBTZTtOLGo5lrKQ/JdlX2+QEXKjyGS4/Fo+pdcdI/DvOqHsk
         mDuYHPBN6WPKGt2a8Bhal6zI4ha9qbejh0+4Ce6gIsKStGwtgfGei+iFvAG/ijI6CRNT
         oiinBcCn5S15AvfpuaRKYGked0+GpcMyudutUmNZAbjvxQdNi9e2leqPaI/DNtHcJggX
         3ztpLtRwLDcnHnBznjVTvB7VS0AUTGJ5wYMvJbUzMJp+aQAIUXyVlCsoz43S4OGa1kI/
         OpAQ==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20251104; t=1776960116; x=1777564916;
        h=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;
        bh=NgjG39TDSKA6ylzEYt8Mo9D4rrySu1X1DTlV/FlhVOI=;
        b=DrNoLhCbKgdZvVIjlIwrOA4seqWBeiWF8O6iAAL1ShxoH5VlXNEqcijhiqtFiCizwX
         POGZ5u3/3jcX2+yblgpIzrrjX/Lhol0Tf63g87K6kLNbmOXw3XLaiNMBuI9dFznakQUp
         /bsW2N2twNhlgMa1OQy05JwdCpbhy0mtQHw7ovsmrxEB+5o09Up3GbF6TOkuqMD9SQM9
         TGjFZpWb1XN2G5VnclZPS0sB26hdpFA2hIZ8mbArCuXXnkHZkMbGRxenfL60kbPib37Z
         7L8EJ7B0wpr9EoRrjf5nspalBWfavYtIuru4c8iDk6T87WzQutI5k6gFN8a6OB23xf6G
         s0xg==
X-Forwarded-Encrypted: i=1; AFNElJ9pvs0BBx6M/0CYsCn2Tg+G3JKBnM2LD/CWZAURanAq82quHgsbjeJ3RtXY41iAGJswYVHiiDLrHPM=@lists.xenproject.org
X-Gm-Message-State: AOJu0Yx4dHvgnuEFBEzDT8L8OTVYdNtSjPU8MHIGmmuaKHZrCk7pQDEA
	Dq7LEoqwxAO/RH+/O874SVp3WHkP7F6fab96yIRVEjvLvTmM2Tgz01IFZiTib75CnIg=
X-Gm-Gg: AeBDiev/8sEsbtupNluh2FljF58/hT2/KS2hTA+MRiVi0qrFDCe4MKS19nDUfZDaD1j
	ZuOwvXT8umkVOSJSKdJeEfM6viYSAB6cxdOQuCBaiHmqUsf7c+yxADtfw+J5cedcrQ306P9s4gY
	27KtYDG9/71EpfArWNAk28KyLxeJj9DnABPyk538/bl95dS+kww9BPbh6PpvnGhwpccNrcBGZu3
	NglklvGHUwwKdYj0h5YJm2Qb5MWDcTwHG+Ymx2EpYqs3IsjCV+muXmgHYiMqWG+R7cyaSqfLlVf
	2sL+Yf33pDNY5VY90KBK1aJxCtlwlf4DyFPmLB/oHmYLfzhVCnvsYwbyzKBZ6ZYyRD/eI5qifry
	mKQkFjXWEQPAUdBvpU081Xcroh/29b5JJv+a6yugD80NaUiCsmuzPxoPDDh9RGSXCRXlyuheB9X
	kWCfdJ+eT3PDTdE1NJeakJn9md7j/QP4fn6f3/XG3BWLERY8G0cHXttksH9eOLB6vLh0JvFDaMI
	R9JvaBhTwxL/hCXuoen8oe/J8gSAjM0RRtYDkQVh+lbJw5agXtHXR3XS9Gmn2si
X-Received: by 2002:a05:6402:2787:b0:674:e53b:f27f with SMTP id 4fb4d7f45d1cf-674e53c4150mr9292067a12.11.1776960116179;
        Thu, 23 Apr 2026 09:01:56 -0700 (PDT)
Message-ID: <cac4a724-e5a4-4aeb-8bcd-e9cb6102746d@suse.com>
Date: Thu, 23 Apr 2026 18:01:55 +0200
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH 3/3] x86/pvh: fix unbootable VMs by really inlining
 memset() in xen_prepare_pvh()
To: Mauricio Faria de Oliveira <mfo@igalia.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>,
 Alexey Dobriyan <adobriyan@gmail.com>,
 Boris Ostrovsky <boris.ostrovsky@oracle.com>
Cc: kernel-dev@igalia.com, linux-kernel@vger.kernel.org,
 xen-devel@lists.xenproject.org
References: <20260422-pvh-kasan-inline-v1-0-7e6194344c92@igalia.com>
 <20260422-pvh-kasan-inline-v1-3-7e6194344c92@igalia.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: <20260422-pvh-kasan-inline-v1-3-7e6194344c92@igalia.com>
Content-Type: multipart/signed; micalg=pgp-sha256;
 protocol="application/pgp-signature";
 boundary="------------Kv9C1D7bZKvIbKJ9eg5VEh4P"
X-purgate-ID: tlsNG-c201ff/1776960116-2B961443-E36E6B2B/0/0
X-purgate-type: clean
X-purgate-size: 7157

This is an OpenPGP/MIME signed message (RFC 4880 and 3156)
--------------Kv9C1D7bZKvIbKJ9eg5VEh4P
Content-Type: multipart/mixed; boundary="------------DZ3PNP0k2SgWR8Urff2c36wG";
 protected-headers="v1"
From: =?UTF-8?B?SsO8cmdlbiBHcm/Dnw==?= <jgross@suse.com>
To: Mauricio Faria de Oliveira <mfo@igalia.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>,
 Alexey Dobriyan <adobriyan@gmail.com>,
 Boris Ostrovsky <boris.ostrovsky@oracle.com>
Cc: kernel-dev@igalia.com, linux-kernel@vger.kernel.org,
 xen-devel@lists.xenproject.org
Message-ID: <cac4a724-e5a4-4aeb-8bcd-e9cb6102746d@suse.com>
Subject: Re: [PATCH 3/3] x86/pvh: fix unbootable VMs by really inlining
 memset() in xen_prepare_pvh()
References: <20260422-pvh-kasan-inline-v1-0-7e6194344c92@igalia.com>
 <20260422-pvh-kasan-inline-v1-3-7e6194344c92@igalia.com>
In-Reply-To: <20260422-pvh-kasan-inline-v1-3-7e6194344c92@igalia.com>

--------------DZ3PNP0k2SgWR8Urff2c36wG
Content-Type: multipart/mixed; boundary="------------bnklDiIPpARtSbRuln9wFmlx"

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

T24gMjIuMDQuMjYgMjI6MDcsIE1hdXJpY2lvIEZhcmlhIGRlIE9saXZlaXJhIHdyb3RlOg0K
PiBFdmVuIHdpdGggX19idWlsdGluIHRoZSBjb21waWxlciBtYXkgZGVjaWRlIHRvIHVzZSB0
aGUgb3V0IG9mIGxpbmUgZnVuY3Rpb24NCj4gaW5zdGVhZCBvZiB0aGUgaW5saW5lIGltcGxl
bWVudGF0aW9uLg0KPiANCj4gVGhpcyBwYXJ0aWN1bGFyIG9uZSAoc3RpbGwpIGdlbmVyYXRl
ZCB0aGUgaW5saW5lIGltcGxlbWVudGF0aW9uIGFzIGV4cGVjdGVkDQo+IChhdCBsZWFzdCBp
biB0aGVzZSBjb21waWxlciB2ZXJzaW9ucyksIGJ1dCB0aGlzIGlzIG5vdCBndWFyYW50ZWVk
IHRvIHJlbWFpbg0KPiB0aGUgY2FzZSwgYXMgc2VlbiB3aXRoIHRoZSBwcmV2aW91cyBjb21t
aXQuDQo+IA0KPiBTd2l0Y2ggdGhlIGJ1aWx0aW4gdG8gdGhlIGlubGluZSBpbXBsZW1lbnRh
dGlvbiB0byBwcmV2ZW50IGEgc2ltaWxhciBpc3N1ZS4NCj4gDQo+IEZpeGVzOiBmYmU1YTZk
ZmU0OTIgKCJ4ZW4sIHB2aDogZml4IHVuYm9vdGFibGUgVk1zIGJ5IGlubGluaW5nIG1lbXNl
dCgpIGluIHhlbl9wcmVwYXJlX3B2aCgpIikNCj4gU2lnbmVkLW9mZi1ieTogTWF1cmljaW8g
RmFyaWEgZGUgT2xpdmVpcmEgPG1mb0BpZ2FsaWEuY29tPg0KDQpSZXZpZXdlZC1ieTogSnVl
cmdlbiBHcm9zcyA8amdyb3NzQHN1c2UuY29tPg0KDQoNCkp1ZXJnZW4NCg==
--------------bnklDiIPpARtSbRuln9wFmlx
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-----

--------------bnklDiIPpARtSbRuln9wFmlx--

--------------DZ3PNP0k2SgWR8Urff2c36wG--

--------------Kv9C1D7bZKvIbKJ9eg5VEh4P
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/Ey8FAmnqQnMFAwAAAAAACgkQsN6d1ii/Ey8W
cQgAmeUmRp13i5PdhuhbRG/JSw11tzZ1fb0W4EaVNfJg7al95qk6tR30vAAERxxPp+Wb5VXxO4Hl
eqcpTCrd71F8HhyCL/EkmBPLqVhv/F9kHfMMBWkKTgCnblicabPm78g/J4cpAGogxLP1ySIhhlzD
bkIF+werXTNfnU3QfDmtggIYwJSUe7R8FUiZQewTzDD4t+qkalrUymd8VWmbamT8PLaGxMsbNJLm
ZYya4Bgt+khwK9JJNnCY/sNqahg0UWI0zuTrJsQiTf2nVM/6824aNAmjABgOVhv8ulacwso97/bf
yCobzkA7oCswynl+8u6a+n+wi7th+2JewlnXrIGiKQ==
=QGQY
-----END PGP SIGNATURE-----

--------------Kv9C1D7bZKvIbKJ9eg5VEh4P--


From xen-devel-bounces@lists.xenproject.org Thu Apr 23 16:07:26 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 23 Apr 2026 16:07:26 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1292387.1570852 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wFwaH-0006Oh-E0; Thu, 23 Apr 2026 16:07:21 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1292387.1570852; Thu, 23 Apr 2026 16:07: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 1wFwaH-0006Oa-BD; Thu, 23 Apr 2026 16:07:21 +0000
Received: by outflank-mailman (input) for mailman id 1292387;
 Thu, 23 Apr 2026 16:07:20 +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 1wFwaG-0006OU-1M
 for xen-devel@lists.xenproject.org; Thu, 23 Apr 2026 16:07:20 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wFwaF-00BoyC-DV
 for xen-devel@lists.xenproject.org; Thu, 23 Apr 2026 18:07:19 +0200
Received: from [10.42.69.11] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <jgross@suse.com>)
 id 69ea43b2-e002-0a2a0a5209dd-0a2a450bdfac-22
 for <xen-devel@lists.xenproject.org>; Thu, 23 Apr 2026 18:07:19 +0200
Received: from [195.135.223.131] (helo=smtp-out2.suse.de)
 by tlsNG-42698a.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.1)
 (envelope-from <jgross@suse.com>)
 id 69ea43b7-212f-0a2a450b0019-c387df83de84-3
 for <xen-devel@lists.xenproject.org>; Thu, 23 Apr 2026 18:07:19 +0200
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 6C33A5BD68;
 Thu, 23 Apr 2026 16:07:17 +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 41920593A3;
 Thu, 23 Apr 2026 16:07:17 +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 aefmDrVD6mmsTgAAD6G6ig
 (envelope-from <jgross@suse.com>); Thu, 23 Apr 2026 16:07: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=susede1 header.d=suse.com header.i="@suse.com" header.h="From:Date:Message-ID:To:Cc:MIME-Version:Content-Transfer-Encoding"; dkim=pass header.s=susede1 header.d=suse.com header.i="@suse.com" header.h="From:Date:Message-ID:To:Cc:MIME-Version:Content-Transfer-Encoding"
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=suse.com; s=susede1;
	t=1776960438; h=from:from:reply-to:date:date:message-id:message-id:to:to:cc:cc:
	 mime-version:mime-version:  content-transfer-encoding:content-transfer-encoding;
	bh=s0555mDVrcS7oKTUpFYI2pXTPDpEXU18+Ox8T0GQtbM=;
	b=ERRIhNHbYQayxisrgc0EUxE99ZucncmsCrjhK8BW3w0Y9aEFbFjCCANm6H2lgDcWqfRqkE
	Dc00xNLgAMm1E/gabotNw7yvlj7sbzdsmxThV1b3z8inoTX1wjE8KiqvBAQoWCC3ylgATb
	xbNlpWS4EIBMlPaRAtYjfinz1rYgICo=
Authentication-Results: smtp-out2.suse.de;
	none
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=suse.com; s=susede1;
	t=1776960437; h=from:from:reply-to:date:date:message-id:message-id:to:to:cc:cc:
	 mime-version:mime-version:  content-transfer-encoding:content-transfer-encoding;
	bh=s0555mDVrcS7oKTUpFYI2pXTPDpEXU18+Ox8T0GQtbM=;
	b=Ml/K+VnhxH8B8UC2XaZgvcYcYKi4cLs0/prDIhdxOHj75Y1K8cCnDhXPsl8PCVDu6xUU4/
	Fur8YxTHv3qZAnhxUI5R8iiG7FW2FHqWLpHE48H18i0ZzdXGlcAZPTYiW4XycYHt1fHruN
	I4y+18ZNOKgCOLuDAVOHWwBDExkq354=
From: Juergen Gross <jgross@suse.com>
To: xen-devel@lists.xenproject.org
Cc: Juergen Gross <jgross@suse.com>,
	Oleksii Kurochko <oleksii.kurochko@gmail.com>,
	Community Manager <community.manager@xenproject.org>
Subject: [PATCH] CHANGELOG: add xenstored watch depth feature
Date: Thu, 23 Apr 2026 18:07:14 +0200
Message-ID: <20260423160714.566313-1-jgross@suse.com>
X-Mailer: git-send-email 2.53.0
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit
X-Spam-Score: -1.30
X-Spam-Level: 
X-Spamd-Result: default: False [-1.30 / 50.00];
	BAYES_HAM(-3.00)[99.99%];
	SUSPICIOUS_RECIPS(1.50)[];
	NEURAL_HAM_LONG(-1.00)[-1.000];
	MID_CONTAINS_FROM(1.00)[];
	R_MISSING_CHARSET(0.50)[];
	NEURAL_HAM_SHORT(-0.20)[-0.999];
	MIME_GOOD(-0.10)[text/plain];
	DBL_BLOCKED_OPENRESOLVER(0.00)[changelog.md:url,imap1.dmz-prg2.suse.org:helo,suse.com:mid,suse.com:email,keepachangelog.com:url];
	RCVD_VIA_SMTP_AUTH(0.00)[];
	FUZZY_RATELIMITED(0.00)[rspamd.com];
	ARC_NA(0.00)[];
	TO_DN_SOME(0.00)[];
	MIME_TRACE(0.00)[0:+];
	TAGGED_RCPT(0.00)[];
	FREEMAIL_CC(0.00)[suse.com,gmail.com,xenproject.org];
	RCVD_TLS_ALL(0.00)[];
	RCVD_COUNT_TWO(0.00)[2];
	TO_MATCH_ENVRCPT_ALL(0.00)[];
	FROM_EQ_ENVFROM(0.00)[];
	FROM_HAS_DN(0.00)[];
	RCPT_COUNT_THREE(0.00)[4];
	DKIM_SIGNED(0.00)[suse.com:s=susede1];
	FREEMAIL_ENVRCPT(0.00)[gmail.com]
X-Spam-Flag: NO
X-purgate-ID: tlsNG-42698a/1776960439-7E971F3B-BF777008/0/0
X-purgate-type: clean
X-purgate-size: 725

Signed-off-by: Juergen Gross <jgross@suse.com>
---
 CHANGELOG.md | 2 ++
 1 file changed, 2 insertions(+)

diff --git a/CHANGELOG.md b/CHANGELOG.md
index bb41d89997..ce46020dbd 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -11,6 +11,8 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/)
 ### Added
  - Support for per-domain Xenstore quota in C xenstored (includes
    xenstore-stubdom), libxl and xl.
+ - Support for Xenstore watch depth feature in C xenstored (includes
+   xenstore-stubdom).
  - On x86:
    - Support for Bus Lock Threshold on AMD Zen5 and later CPUs, used by Xen to
      mitigate (by rate-limiting) the system wide impact of an HVM guest
-- 
2.53.0



From xen-devel-bounces@lists.xenproject.org Thu Apr 23 16:11:33 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 23 Apr 2026 16:11:33 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1292396.1570860 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wFweI-0008MZ-UM; Thu, 23 Apr 2026 16:11:30 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1292396.1570860; Thu, 23 Apr 2026 16:11: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 1wFweI-0008MS-R1; Thu, 23 Apr 2026 16:11:30 +0000
Received: by outflank-mailman (input) for mailman id 1292396;
 Thu, 23 Apr 2026 16:11:30 +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 1wFweH-0008MM-PD
 for xen-devel@lists.xenproject.org; Thu, 23 Apr 2026 16:11:29 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wFweG-004ti3-Rc
 for xen-devel@lists.xenproject.org; Thu, 23 Apr 2026 18:11:28 +0200
Received: from [10.42.69.11] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <ross.lagerwall@citrix.com>)
 id 69ea44a7-5cb7-0a2a0a5109dd-0a2a450bc060-20
 for <xen-devel@lists.xenproject.org>; Thu, 23 Apr 2026 18:11:28 +0200
Received: from [52.101.201.26]
 (helo=PH7PR06CU001.outbound.protection.outlook.com)
 by tlsNG-42698a.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.1)
 (envelope-from <ross.lagerwall@citrix.com>)
 id 69ea44ae-212f-0a2a450b0019-3465c91a55e2-3
 for <xen-devel@lists.xenproject.org>; Thu, 23 Apr 2026 18:11:28 +0200
Received: from CH8PR03MB8274.namprd03.prod.outlook.com (2603:10b6:610:2ba::5)
 by BN8PR03MB4963.namprd03.prod.outlook.com (2603:10b6:408:7e::24)
 with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9846.16; Thu, 23 Apr
 2026 16:11:24 +0000
Received: from CH8PR03MB8274.namprd03.prod.outlook.com
 ([fe80::ebe2:32c1:d2be:a096]) by CH8PR03MB8274.namprd03.prod.outlook.com
 ([fe80::ebe2:32c1:d2be:a096%7]) with mapi id 15.20.9846.019; Thu, 23 Apr 2026
 16:11: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=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=yiPNgPXsaxttcqqTGax4Kf4TllOanvVWEK1oNmD0dXCGHVEzWQN51hYnd5Inn12Im+kdFL6Smj9cvdSJ2LH2Z46o/vjxcBycTWNm0e4nOloaSkG8YCYpSirVm9xhZMgMQRe9supamOWhp5yXxD3G+nBm9uKGxk2VU2aj/xSkoeBU9bkJ31TRjsHTgyRxU/o3XrMUHlH6q6HMF9gLRibU0myhu2cPPlWm8TyNiijwgBG0H9Fti92iyJPVGhPNZW85Me/H7R7T5APVkUbgK77ej+ydznF+kLxKL/waQe8Q0RSR7+z7rY/J/3m35ZNxOiIvGBut6bwHDChmNqFjgt10Pw==
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com;
 s=arcselector10001;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1;
 bh=z2v5tmIHhBOrrj6BIBeW9FFmoLBnaS91AVXvGPW16lk=;
 b=p9dy5m0n7+P1bF4/VaYqeijuAJCAColhHFrXjKeyzUxk/NnOCqbAIyBfGiA9VAOJPDdRhsM5u6KeyPrCg7KjIjJcQ55G/swSQIHgLfKLv4b2oa2s58V7+NHNwH6z7NiZHGr8gJ1rBtSKq8OmtrHP2G0iFK3IWWi8FItLmcj65pDhp8C/xu+2iql7AcUfXa/EVT2808DeEz07KUNpH6VJgCBEBevbj8pXKf4rz0yj1utWNHizwpKATNAH8xtNVQYf4F+O6h5wyEPwCghCrWX1f/Rhi1aYTqiF7ptC74RRxMDevYNsW5hI4VOPxg4uAGP1PwEmelplvUrcOCc4Y4DJvw==
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=z2v5tmIHhBOrrj6BIBeW9FFmoLBnaS91AVXvGPW16lk=;
 b=gf0ezdXwK1lXxn7fJ0htKxNytLpInNVB7akePsatvU2KwnpmuF/K9MGJua3VLZkPzckn1U+fzF9pDIMkDOngqTjJcNjUlTODScKFzbN/rp/ADgjSQqTo8x3BvpVWnLMWo6brfthShUMNSmB8Oaot3uSM6B3WHg5EiMtqsScSFWA=
Authentication-Results: dkim=none (message not signed)
 header.d=none;dmarc=none action=none header.from=citrix.com;
From: Ross Lagerwall <ross.lagerwall@citrix.com>
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.pau@citrix.com>,
	Jason Andryuk <jason.andryuk@amd.com>,
	Teddy Astie <teddy.astie@vates.tech>
Subject: [PATCH] nestedsvm: Clear GIF when injecting VMEXIT
Date: Thu, 23 Apr 2026 17:11:12 +0100
Message-ID: <20260423161112.50221-1-ross.lagerwall@citrix.com>
X-Mailer: git-send-email 2.53.0
Content-Transfer-Encoding: 8bit
Content-Type: text/plain
X-ClientProxiedBy: LO4P265CA0270.GBRP265.PROD.OUTLOOK.COM
 (2603:10a6:600:37a::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_|BN8PR03MB4963:EE_
X-MS-Office365-Filtering-Correlation-Id: 18ce8e1a-350c-49a0-8b1a-08dea152f78b
X-MS-Exchange-SenderADCheck: 1
X-MS-Exchange-AntiSpam-Relay: 0
X-Microsoft-Antispam:
	BCL:0;ARA:13230040|376014|1800799024|366016|56012099003|18002099003;
X-Microsoft-Antispam-Message-Info:
	wYHCdLN9GSysR0LkLDLBtUWKA+X4kuI1o7ROLSI8zCPRbhQvFC7opvKfHcL3umg+JtaspalQPFLDOdAaNzqIDqaTwCxw4hIH5HgmJo+40GiLoeAC8LSifPtabO4laviw7K0ZuQhI5C/7ikhlFdxb/Gl9WJAZzKqpehti+NSzq9HhYOkwOBXIIAQBDeHm74TwxspI/ZQoFd4OR2Y+CSJ/qKhHhzziVWhOXuJC2Mt8nDyFZgl7UUJX+4AQx++q5nX4AEZaRbPzmeTTFauzkIftjDkAb+go7ER46zbuZAbBx3Ijv6w3yg9DZF/pnpv9pZNr7Pjwq1M6QrJDSX2+D4HxBa+J80op11t26xOioENBxwLX9VvMFhVjWsW8J73bYhEOGDnLVxWNv1ckH0uBtL61RapnK2veP9rkcA3K91WB/tMJ+bRXw7vkedFRw7OnM5eDica1011wH49ja7ycmECE24JPFlFMMZqQ6WcLImxcIZP1lIXzA5RibaWcFIEfthgpjBxF3iBUyu322TqBp5pjpl57vESU3j6ABDefxtlmv9I5POp7/fjNYbr0gfX9gMbKquOirslVsJv/w09R5tImpt+GrSQsMEHigZXmn0aeQs9yAUGnNoaI5iQhsH5d92WUbGWtc+16wZOFJ61Ie2I5p21KV6FdPp2zDY7vrwbUTYPGh16RZqOvT3hgg2lHBFOWLcHX/NU65eMHddf3GKLtKtmJ5H7D0zS/D70ysVGR5ik=
X-Forefront-Antispam-Report:
	CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:CH8PR03MB8274.namprd03.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(376014)(1800799024)(366016)(56012099003)(18002099003);DIR:OUT;SFP:1101;
X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1
X-MS-Exchange-AntiSpam-MessageData-0:
	=?us-ascii?Q?fGnm/awDu/XuhK5X44ARrsz1Hw2/QbQ3KSiHhzMjJCjVoU7w7xchlIwGCCgY?=
 =?us-ascii?Q?yqCf3iYQih5GFDLIr3DpPu9iQEJnJaRAFTtNWVSApAVAQ+FpGowU9wkYJC8C?=
 =?us-ascii?Q?dqkzLzam68wYd1vopK8nfckUrXjNkoZs4sckMVgsCMGRAD54TwQ4YFnr5jaB?=
 =?us-ascii?Q?wxCvrVEX/9gFBXVRnUguLfW0dcqr8H/262sfcO8SjsLMRRU3q/L0/T0z/3Kp?=
 =?us-ascii?Q?iLHo8MPqnMrXWnLhtHfAEiCTvTUNypeC56Cflc+bT+54Bt0CeAC90ag3vwDQ?=
 =?us-ascii?Q?EbS66noMJdatBZKO8YtvhR+2rPSUAIyNvjt/vefICdwKHdnTfZiP5cTKPrgM?=
 =?us-ascii?Q?S+T+RnhG04KBy9M9oH2SRImc7ltZm69X/BmXzorCmlL4hJHKu8lbvGHU8KGx?=
 =?us-ascii?Q?LAjYPSSUtOqA1lGugpUpG6IGfGpaVr4gurtKV4pkIX9OYPicGFHXBA4mrKv/?=
 =?us-ascii?Q?p7IkQP6GIX1OYLKdBLksJcKzCr5iyU8hChz9ie8PYg6cfPpPs+usJ39sCwne?=
 =?us-ascii?Q?JftiwMDVakBzN54uLGDlBN8XyRt8F5s8XGZa+dl0RTe5vgxmBOjQVVZ4C/VE?=
 =?us-ascii?Q?Kr29sIbWlCAFmuh9qouAIL5UIhSlvFrk/rUSEoLftR/84iKpFUN210KKd0mX?=
 =?us-ascii?Q?EtM9skczjQpJE1yCvb4MnvFhlC/EDlNUrQ7VvLCsvJ9EsLqYpZO4xFE91b7T?=
 =?us-ascii?Q?9rhDMOFxG5MJqtZf09v4kGAacjdwcsnf/EvcaRSxgyBAs0s/A4oGCnyS4Fuk?=
 =?us-ascii?Q?wdjYZeaoJm60QHE6brR/W1+/G7TlxBEKRyRA0GVfINz9Cy4QHHEwy8uJ7lL/?=
 =?us-ascii?Q?DYUAOolvDZYoA7lOMUA1BS6gJd1xC+fbN7o19wWzHbXthNaNl839qf1l+/xd?=
 =?us-ascii?Q?uxhLWbbS+LU0YP9fL3HWCo4ZbhOwhnjvvHwI9P65SYmfnprKm118HHonjyn0?=
 =?us-ascii?Q?QfLCfdaUWFQLbC37PfO+VckOJwU+E99OqaH6hbzZbMOjiIEJdPZ90lOEOrs1?=
 =?us-ascii?Q?JzHEAnQFZNzWRuEl3Ba14PdiOxTrJ/QNsMwRnqGQbtGC8qFUM9ihQKLbRe0l?=
 =?us-ascii?Q?hO2M8qhorNhLryQMKtmO4XCWdw1fV9e3rsFqSlj+FCdgCgPkMU1cPEKs1HT7?=
 =?us-ascii?Q?6V0ONRp8I08tCQMwAqppsdnZ6vAC93DJ/sGZbctGxbniO/D43NtxbLJTeirA?=
 =?us-ascii?Q?jxWfW+quruDhY9A5QiTDrfnQWHaW+gjGguyfWKPxurWUZq0ZJCTUJ074CUf6?=
 =?us-ascii?Q?4JAjunn4/r9rHQ/18hhGSirjZsRCWWCZKuzKZFuvD5VX128TAOWRjf9NRdcZ?=
 =?us-ascii?Q?R2tQtenHUQcMlI5FrX+JjiFQD9c4MYLD4+MC9lfXU7m/111qvGD4oESK/aKQ?=
 =?us-ascii?Q?xKzMUEtztvGOIjn3Z5azwIsGT3cHymbYMhnJqoV2UD4hoIcRTxV3KSAykHzz?=
 =?us-ascii?Q?MfUtAChZjXzBfpy7s8QusUygHAiDr2T/m5i9R4vyWw7iRkzcZ9GnO95lYdlP?=
 =?us-ascii?Q?9TB6hBZJFxy3CMzkOevo4DXTIMRLp0WmqypNTXL4/EcYpcLqutzI+UNIX1E9?=
 =?us-ascii?Q?p4Kpk0iJQv0xkvpZOsLkulsmpiPdWnKEqLpHkSHNGVSMlvArs1aVe5DhbMhD?=
 =?us-ascii?Q?/CbYUyvGuh6aA/fCUYVvS0tjAJFoRCB95QJmIAQG0AB15jp+NOy2PEPcldat?=
 =?us-ascii?Q?CYMRowrmYTv51vhjWlhENLnVMCGgQAvoWJID4/BTzOBrSYY9Azr6uE115hkh?=
 =?us-ascii?Q?5t8rJbF36rJ99kLdk7v3uRDLTgv1QHU=3D?=
X-OriginatorOrg: citrix.com
X-MS-Exchange-CrossTenant-Network-Message-Id: 18ce8e1a-350c-49a0-8b1a-08dea152f78b
X-MS-Exchange-CrossTenant-AuthSource: CH8PR03MB8274.namprd03.prod.outlook.com
X-MS-Exchange-CrossTenant-AuthAs: Internal
X-MS-Exchange-CrossTenant-OriginalArrivalTime: 23 Apr 2026 16:11:24.6648
 (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: Uf1xi4u9U3VQe7wt302XQxhzOlPm2AlvURw67ruFKvsmjhoMbG5fp3CoxUabU2RLg31sT09DjIE8rMKX39my2iNTFWYMXcytjx5zUWmqTww=
X-MS-Exchange-Transport-CrossTenantHeadersStamped: BN8PR03MB4963
X-purgate-ID: tlsNG-42698a/1776960688-7D76AF3B-A3EFDF6E/0/0
X-purgate-type: clean
X-purgate-size: 1084

If L1 executes VMRUN with the GIF set and it fails consistency checks,
Xen will inject a VMEXIT and fail the assert checking the GIF is cleared.

Instead, clear the GIF when injecting a VMEXIT to match what hardware
does.

Fixes: 9a779e4fc161 ("Implement SVM specific part for Nested Virtualization")
Signed-off-by: Ross Lagerwall <ross.lagerwall@citrix.com>
---
 xen/arch/x86/hvm/svm/nestedsvm.c | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/xen/arch/x86/hvm/svm/nestedsvm.c b/xen/arch/x86/hvm/svm/nestedsvm.c
index ef6fa5d23b67..f89b087a1155 100644
--- a/xen/arch/x86/hvm/svm/nestedsvm.c
+++ b/xen/arch/x86/hvm/svm/nestedsvm.c
@@ -733,9 +733,9 @@ nsvm_vcpu_vmexit_inject(struct vcpu *v, struct cpu_user_regs *regs,
     struct vmcb_struct *vmcb = v->arch.hvm.svm.vmcb;
 
     if ( vmcb->_vintr.fields.vgif_enable )
-        ASSERT(vmcb->_vintr.fields.vgif == 0);
+        vmcb->_vintr.fields.vgif = 0;
     else
-        ASSERT(svm->ns_gif == 0);
+        nestedsvm_vcpu_clgi(v);
 
     ns_vmcb = nv->nv_vvmcx;
 
-- 
2.53.0



From xen-devel-bounces@lists.xenproject.org Thu Apr 23 16:11:47 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 23 Apr 2026 16:11:47 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1292399.1570870 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wFweZ-0000Dj-75; Thu, 23 Apr 2026 16:11:47 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1292399.1570870; Thu, 23 Apr 2026 16:11: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 1wFweZ-0000DZ-34; Thu, 23 Apr 2026 16:11:47 +0000
Received: by outflank-mailman (input) for mailman id 1292399;
 Thu, 23 Apr 2026 16:11:46 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <Oleksii_Moisieiev@epam.com>) id 1wFweX-0000Cu-Vj
 for xen-devel@lists.xenproject.org; Thu, 23 Apr 2026 16:11:46 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wFweX-004X3T-C8
 for xen-devel@lists.xenproject.org; Thu, 23 Apr 2026 18:11:45 +0200
Received: from [10.42.69.11] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <Oleksii_Moisieiev@epam.com>)
 id 69ea44be-5cb7-0a2a0a5109dd-0a2a450bafd8-10
 for <xen-devel@lists.xenproject.org>; Thu, 23 Apr 2026 18:11:45 +0200
Received: from [40.107.159.119]
 (helo=OSPPR02CU001.outbound.protection.outlook.com)
 by tlsNG-42698a.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.1)
 (envelope-from <Oleksii_Moisieiev@epam.com>)
 id 69ea44bf-212f-0a2a450b0019-286b9f772e5a-3
 for <xen-devel@lists.xenproject.org>; Thu, 23 Apr 2026 18:11:45 +0200
Received: from DU5PR03MB10263.eurprd03.prod.outlook.com (2603:10a6:10:519::5)
 by PA4PR03MB6752.eurprd03.prod.outlook.com (2603:10a6:102:ea::24)
 with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9846.21; Thu, 23 Apr
 2026 16:11:41 +0000
Received: from DU5PR03MB10263.eurprd03.prod.outlook.com
 ([fe80::8c9e:b301:61c0:3908]) by DU5PR03MB10263.eurprd03.prod.outlook.com
 ([fe80::8c9e:b301:61c0:3908%5]) with mapi id 15.20.9846.021; Thu, 23 Apr 2026
 16:11: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=YCVqLJ0g1Z4zt+rn+mdQQoradt6iOp83gAelJK9YsN/hRMt8INfcOprG58yqOascraz1De6DJNAc66+HXrmppxbEj3IK8HPQnYBI5QDG6jl1rWreJnN7egedQigcT7HEptdAaUlXF1ZclQCAsev1ZVM4sRcoKmzHNeP0UXBGoFV9+lkdKwYmlhMMpMiFRKAgDGFjkKcwtDsDGipkXvrymnuBVrB/ZKR0rjVcTrlol93n5SQW04eZaRD53o1crBoczd4n0OoSNxqx0XC/VTlg3dBG3+yIQK0haIdZ8SQo1NGgNcq62+SALrOmQ5z0tApFVtEY9ijJrxYkFmoXg+IA8Q==
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com;
 s=arcselector10001;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1;
 bh=KdFX/zBEaG+DaolzH0Zg3jjNCZaaPAZS//IhlyXHsTs=;
 b=MeyFW5yadQofvdkwrRr8xQ9CfwEi+XM1DQzT3LzFoykEAe2JKigz08MRdd5JrxJv3rBr2zZ9wacU3bGpqTpj5Sy/g02MLQ+jb5HjR1PtGjEvbYBPXLIkWeC+KHv1K9Tzu5WL5sxWZHGNVC7zHD+dwU318viRGmOC5/ikSNLorJF6eMtmf0fKwzbinlo4V/F5rctoJ6gNRzfBlxzQdm1ZeIQjsjaQ9t1KJJZzBNY7qlQrhNQcsW+vaaeSOl6qc4W4WYcDNG3ODfkU3/yo+bWbw7WoD6CeKFy6Jckk6ofsFKDRsyAi1cRhP2X+4LX8k78O5dAiImXFpgJGnq0kwBgMvA==
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=KdFX/zBEaG+DaolzH0Zg3jjNCZaaPAZS//IhlyXHsTs=;
 b=SgYprN+IotvEYrjNf96VKIKhTk3K4GwHUKUFa5vqP/VPgj61ciFF0kVdH4q84YwmIWHFdmzQnJt7jxNjXuC6hNvfxycZl1lNHQsBrjQWolslr3uFzxtEVEuoKY1sn+UTpeSra5IlbndEuEB+leaXOH4mXKB6YI3VCrZHW6H2xl6f66mnoAlWnAL+Og7rQ9PIGlnAH21+ZL4quVLIDKen7VPXuq2VQqz+9k+r6iS1kQ+IMubQgQ3tvdssWjA/T7g8qdyUHr/f6280Gb3RJFO2q/0Uzl/ireXjlTigZUAfJGUbr+RkwRMT/upL2W7NNdD+h3UTBuiwOGUCnwtLvfriAA==
From: Oleksii Moisieiev <Oleksii_Moisieiev@epam.com>
To: "xen-devel@lists.xenproject.org" <xen-devel@lists.xenproject.org>
CC: Bertrand Marquis <bertrand.marquis@arm.com>, Julien Grall
	<julien@xen.org>, Michal Orzel <michal.orzel@amd.com>, Stefano Stabellini
	<sstabellini@kernel.org>, Volodymyr Babchuk <Volodymyr_Babchuk@epam.com>,
	Oleksii Moisieiev <Oleksii_Moisieiev@epam.com>
Subject: [PATCH v4 0/4] xen/drivers/char: fix IRQ registration failure
 propagation
Thread-Topic: [PATCH v4 0/4] xen/drivers/char: fix IRQ registration failure
 propagation
Thread-Index: AQHc0zve7DTkuijUTUqUcS5tLdJONg==
Date: Thu, 23 Apr 2026 16:11:40 +0000
Message-ID: <cover.1776960679.git.oleksii_moisieiev@epam.com>
Accept-Language: en-US
Content-Language: en-US
X-MS-Has-Attach:
X-MS-TNEF-Correlator:
authentication-results: dkim=none (message not signed)
 header.d=none;dmarc=none action=none header.from=epam.com;
x-ms-publictraffictype: Email
x-ms-traffictypediagnostic: DU5PR03MB10263:EE_|PA4PR03MB6752:EE_
x-ms-office365-filtering-correlation-id: 5910da64-d40a-494e-bc72-08dea1530161
x-ms-exchange-senderadcheck: 1
x-ms-exchange-antispam-relay: 0
x-microsoft-antispam:
 BCL:0;ARA:13230040|1800799024|366016|376014|18002099003|38070700021|56012099003;
x-microsoft-antispam-message-info:
 51pFzK3zuvDY+hk2/LkJMKiwmYGFjQfFb6kB5uYNi2KASOyFpR9JZ8BnuGeO2aJ1riKglVr2KgP+KAXqndyD3zA83Mb+gK2KX1C3JzZ5LsnczRzHHGN1+GoyE6xtvWwI6HD1G1k/Tlu4+DQ90zXy6hDEldx0yKLAoyuk2UVm5lCbrh0HEr9ip3TEjNU/WgzQY+pXLccZ/+4toRE2s6i1pd/eF3a+i3JH+y9ZAbafqHcDQgmQ3L+7D9xVTiDn+FjdT5di/85vLrTfsFvjWrsHtnaJsvAv6Ik5smfEyrURFjfeaP+ybHgevnSr0IvAJ289DAh/b+Y3OLT26sMZ/3oYOE7VgBJGtOkkyIunKQtJq3Lqq7pcmiw2w0lomRaVEZwtThmL2th3TnwWRPobUv5VuOjlPp4NIq1S/pTvz0HNJGbdyKv7tvUeW98vHOLRlihhDRME60/C5BjnplCypeFXaBl2uQ9FJ5KCFEs+fiGPn9B4mglc5/5B9IWCtkbEjO11P80NFQHI3dzQPDJCjwJqbQpcTE6RJZsdnjtU347EzVfNt50GY+xl0sPKqdqbnGusGSmUwdo2/Re4wLeDbHnTyQleguhg2AnlasJq9uriS62eAWmnKaMbrcebZgAnemBAa+YwjFOPIPZefpTaWuJeD9+McMIJe3/+CQEb37dfXfQ97LJ1gU3E3c2p4g0ftU/sbILIMkyHHeFIn1Z/GtCi84HuS1SmOaawB/lbOp//Ck13/xOSxXYAB+K8JS6+fghDu0dXcHdx2pOIUmlzxRHmFtMCTr2n5SaeKSswpzNv1e4=
x-forefront-antispam-report:
 CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:DU5PR03MB10263.eurprd03.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(1800799024)(366016)(376014)(18002099003)(38070700021)(56012099003);DIR:OUT;SFP:1102;
x-ms-exchange-antispam-messagedata-chunkcount: 1
x-ms-exchange-antispam-messagedata-0:
 =?iso-8859-1?Q?9fJBl7EBfL0+UBORu2gvYJz0aOJf4nxbPzZrvRbPd/xuak+nLUa/HTlTA+?=
 =?iso-8859-1?Q?kEsby5GMsTV45/hJNiLF/9FNBOdAeSa0NtCRdZr6jZOqz9yn/BOgTOcBSx?=
 =?iso-8859-1?Q?kM7FEwDEzTsNBDRUb4r2XoDf97PoHxJOkkz8HDZKwQEKx2hRI3+zCf5s7E?=
 =?iso-8859-1?Q?pJp0dtpT/5ULLjIvD3jbK/CwecneFjizXooqO9KZVDiRrqfPGwuT4wmeSi?=
 =?iso-8859-1?Q?S/UtjazxUf9Erb6Z3ynPgBDXYtdiDdeITiCo1RpCgJW0U4F8zUc4wmlyVP?=
 =?iso-8859-1?Q?G7uQVgO7fbEie+h+XVp3HVLTxfy/1d0ZjkEk1Lb8AOTDVSYjTaHOOhW3Eo?=
 =?iso-8859-1?Q?q+zhI4u5n6t1fCazgU/XQUsRnR0fD4s+1L4roq57tRl4qVjQb62uKwZ1N9?=
 =?iso-8859-1?Q?a0HqczM4a/mkTu1hwSZ0471WPyv9b9LZVpSbNGQJre5qdsanYnojQPIOT2?=
 =?iso-8859-1?Q?gFTqIvN30mrj8n5dKnUrLDsoOvnoI+6nczHHbzZgod3nr3d2n8gs6Jtehc?=
 =?iso-8859-1?Q?mT4i1gKwAuPZxWTj+0rbxZNAQtOzbvWvTfVkHO7ulqvd5ZzfBxDRps5w9l?=
 =?iso-8859-1?Q?kYGEf7KfbcDUksDW6iAo3I+TNYLMQkv5LrISi3f/RaP/V+fvtDDflrFWHP?=
 =?iso-8859-1?Q?f/CDfMiy6RzJTihcmEmCIviFXHVmg49rItTDUtCwE4zR8pHN3TCJAf/mAA?=
 =?iso-8859-1?Q?1xVS7yG7RQrudJSFU7OUyzRjbblUq21IDIDQB0AJ0NdP4tf4Rf2/EagdLC?=
 =?iso-8859-1?Q?wy+xZ8JfYoiJ55yr+otcAV4x9CWndyNSpHkotRDT0kIf8YgYt+J0NOie5L?=
 =?iso-8859-1?Q?4sUmMQjacgSaBrpAeTuKp88HpBjw/D064XxbYTgyi+3vKlADArZUacUaT8?=
 =?iso-8859-1?Q?VbO1bIK6yQ8EeW+qDI6XYcQIZTPxsZqCDFpbYFEqJ9y1CK7rxAGGzP6YUU?=
 =?iso-8859-1?Q?+w5Op43T2xpM4TB77bd9o7Ph3imoZfDuZBicFUxW5NFsKPE/jifwjTgIzZ?=
 =?iso-8859-1?Q?pmNhJF8Yh2JEJQh1JoCv7jEFLX8LWHIT2pjEKmy+Ic2/QBWS0VoZ+5+OdZ?=
 =?iso-8859-1?Q?QIuaPUN7N3dcgCGgbN0nsmjGh/UBo3Y9Y4p5b8c17fNLPXpwXKa82bN8q+?=
 =?iso-8859-1?Q?gg2+KQfdxEoCA0QMHeGRW77FJhgHSA7QDw+5Zd2zGruEs0BlcB4NQK+VyJ?=
 =?iso-8859-1?Q?DkeTL6Vt3bNMYZ5cnuZ5tVB5DybVe6S/3/Yb5OMKq7wOKqUnCPV7S8JVOT?=
 =?iso-8859-1?Q?GMJf0VBg/KGGBp4bzhlchGEvTRtqRtWhGKn8KNEcHWirlQCTurYUd5aiDR?=
 =?iso-8859-1?Q?qhRE7PtNK14CHjfFPuKEvqmcVVKJ1EZy125lTEiho2hecKSanBDMkAAoIw?=
 =?iso-8859-1?Q?T2LdMf/U4jki//T8RX0y7bp2JzqFCsu9B2imEk4j++0TewHmmrxXwJ+y2v?=
 =?iso-8859-1?Q?Bt8wqnmylJaNej35qPF+AhwWt2BKXRb8ymX3QT/w3Pa+TeMq9FNusZLCh+?=
 =?iso-8859-1?Q?umIFAtDQpBvgMbgXXw8ZS6T3/ENKSHzU3NuH1G6wdxjoeMWvhFF8bYDHs5?=
 =?iso-8859-1?Q?/yqumjYcsOA3VT4HxvPT2LsdmTpTvnJZ1tiCvm4GhFkRROds02E2WeQ3ZI?=
 =?iso-8859-1?Q?7ksHKgsLKZgFJIuLPqjgxgqZiS5ATZonsuL8JS5cEdbzadesmBNaNxbFZd?=
 =?iso-8859-1?Q?ZeqKoNEApGXkMRcBBqR9npMtTXr2goCh8GIO0VrRtTB0xxaqbSIvMqaI2A?=
 =?iso-8859-1?Q?ucslM87ihhtrvKFtRuAGjn3SLZ16Iw6LaibM+zAQaepp1q5RF4a2cEaaVA?=
 =?iso-8859-1?Q?tTDqwZ4wumNelgclF3BF1N5piwF/jWM=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: DU5PR03MB10263.eurprd03.prod.outlook.com
X-MS-Exchange-CrossTenant-Network-Message-Id: 5910da64-d40a-494e-bc72-08dea1530161
X-MS-Exchange-CrossTenant-originalarrivaltime: 23 Apr 2026 16:11:41.0640
 (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: Z0kNf7Kr0nte2/Oa7exV9hEqVI06snm+PTCOzTeJoRZmIp0hgWsfKKOh3OvBGZ0FemFD59weZp6+NWOdZX6yBwpr/4nmIUbeQuMqXyzHVrg=
X-MS-Exchange-Transport-CrossTenantHeadersStamped: PA4PR03MB6752
X-purgate-ID: tlsNG-42698a/1776960705-7E971F3B-C2EEDB92/0/0
X-purgate-type: clean
X-purgate-size: 2596

This series fixes a common bug pattern found in several Xen UART drivers:
when setup_irq() fails during post-IRQ initialization, drivers log the
error but continue executing and unconditionally unmask hardware
interrupt lines with no handler registered. On platforms where the GIC
receives these asserted lines, the result is either repeated
spurious-interrupt warnings or an unhandled interrupt fault.

Patch 1, originally submitted as a standalone fix in v1, addresses
the issue in the SCIF driver and moves the hardware error-flag clearing
sequence to before the setup_irq() call so that stale error bits are
cleared unconditionally. Patches 2-4 apply the same early-return fix to
the pl011, cadence-uart, and exynos4210-uart drivers.

The pl011 and cadence-uart drivers additionally had a positive-condition
IRQ guard (if uart->irq > 0) that could fall through to the interrupt
unmask even when no valid IRQ was provided. Both are restructured to
use the early-return idiom.

Changes in v4:
- update comment for setup_irq
- add R-b
- change %d to %u in printk since irq is unsigned
- fix uart->irq <=3D 0 to uart->irq =3D=3D 0 since it's unsigned
- update %d to %u in printk since irq is unsigned
- add r-b
- fix %d to %u since irq is unsigned in cadence uart
- add R-b
- update comment on setup_irq
- change %d to %u since irq is unsigned in exynos
- add r-b

Changes in v3:
- clear pending error interrupts before setup_irq for pl011
- clear pending error interrupts before setup_irq call for cadence uart
- change uart->irq <=3D 0 to uart->irq =3D=3D 0 since irq is unsigned
- skip clearing pending interrupts if setup_irq was failed because
according to the 13.4.1.13 of the RM: it must be cleared after
cleaning interrupt pending in INTC.

Changes in v2:
- Extend fix to pl011, cadence-uart and exynos4210
- fix typo in patch 1 description

Oleksii Moisieiev (4):
  xen/drivers/char: fix SCIF IRQ registration failure propagation
  xen/drivers/char/pl011: fix IRQ registration failure propagation
  xen/drivers/char/cadence-uart: fix IRQ registration failure
    propagation
  xen/drivers/char: fix exynos4210 IRQ registration failure propagation

 xen/drivers/char/cadence-uart.c    | 22 ++++++++++++++--------
 xen/drivers/char/exynos4210-uart.c |  6 +++++-
 xen/drivers/char/pl011.c           | 22 ++++++++++++++--------
 xen/drivers/char/scif-uart.c       | 12 ++++++++----
 4 files changed, 41 insertions(+), 21 deletions(-)

--=20
2.43.0

base-commit: 077dcf9841ad7df4e63c718249d8ac95f8a709ff
branch: amoi_dfmea_scifv4=


From xen-devel-bounces@lists.xenproject.org Thu Apr 23 16:11:47 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 23 Apr 2026 16:11:47 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1292400.1570875 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wFweZ-0000HL-Gp; Thu, 23 Apr 2026 16:11:47 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1292400.1570875; Thu, 23 Apr 2026 16:11: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 1wFweZ-0000Fq-A4; Thu, 23 Apr 2026 16:11:47 +0000
Received: by outflank-mailman (input) for mailman id 1292400;
 Thu, 23 Apr 2026 16:11:46 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <Oleksii_Moisieiev@epam.com>) id 1wFweY-0000D5-Au
 for xen-devel@lists.xenproject.org; Thu, 23 Apr 2026 16:11:46 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wFweX-004X3T-Nq
 for xen-devel@lists.xenproject.org; Thu, 23 Apr 2026 18:11:45 +0200
Received: from [10.42.69.11] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <Oleksii_Moisieiev@epam.com>)
 id 69ea44be-5cb7-0a2a0a5109dd-0a2a450bafd8-12
 for <xen-devel@lists.xenproject.org>; Thu, 23 Apr 2026 18:11:45 +0200
Received: from [40.107.159.119]
 (helo=OSPPR02CU001.outbound.protection.outlook.com)
 by tlsNG-42698a.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.1)
 (envelope-from <Oleksii_Moisieiev@epam.com>)
 id 69ea44bf-212f-0a2a450b0019-286b9f772e5a-4
 for <xen-devel@lists.xenproject.org>; Thu, 23 Apr 2026 18:11:45 +0200
Received: from DU5PR03MB10263.eurprd03.prod.outlook.com (2603:10a6:10:519::5)
 by PA4PR03MB6752.eurprd03.prod.outlook.com (2603:10a6:102:ea::24)
 with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9846.21; Thu, 23 Apr
 2026 16:11:41 +0000
Received: from DU5PR03MB10263.eurprd03.prod.outlook.com
 ([fe80::8c9e:b301:61c0:3908]) by DU5PR03MB10263.eurprd03.prod.outlook.com
 ([fe80::8c9e:b301:61c0:3908%5]) with mapi id 15.20.9846.021; Thu, 23 Apr 2026
 16:11: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=ySiJqrFt3mUe8QGpemROgPJqzREyMdhx2hzmuUbPWi4DrrV1mKOdREChiDvejVo4c1ZTLEBb0+ZZS/vDHgsNahYp8OGSa9yDyu1J9aSn+ru9+q7KK34qbTPenXTovIljm5NeYks0j5eHGVmzHpQWkvYhRVz8/Th2rBtu9dXHZ9VLEMZkVrTiTwtfOedCaOa+L2KBqeqh6t6URyuI/kCkWn25nU1NyOkYCWaKpTv0kuU8mjUsNovsPzIz4W8I+jslXdqYwT4rg7LuOS1WDA8dbgbF7PI19WC7nCbyvDQmSqc3L2JZ6drt4t4MBniIKrnM7cwh7sOrNXyneZfUn0GWgA==
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com;
 s=arcselector10001;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1;
 bh=8XFlwxcfYZJh/uiCumI4nsPxB8Lb0/HADTO3tOS7JAA=;
 b=ew9X2biMpn/9tI6QcFwVhShF9GNedAA1ojjhrVVEbp7LwquSb0udP+s9rKJS/ocLoXGcnlvIPLa7vjeOTQsRJ6WfWqZyBx9c8Oh2pxNsjm9HVtAdxwbpM0skyvyYX2SDeD5ijE4cCR9MGlDLGSWpSpYZEVSoCfCcVBqaTKErTnbsOKP2QRZJf5zhwAqBB5CZ/DEWELxbyF0QiE7xWZtn4k/5DZcguu0kKBlJGdf3g1jGThlczdQEWLhmQc8oOPBdryBm51J9CnSWL/kCWVBxcoNiSfq9x8aR41kD9C++/lpx/6KnQNMn+AtqwQpYeF6HmRktwKLnkm0S16tk10sdWQ==
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=8XFlwxcfYZJh/uiCumI4nsPxB8Lb0/HADTO3tOS7JAA=;
 b=jkT2csH9lUH45wCurczWDd/HfdnPel5e8WBfF+iu5Ofu8P1upV1AWP7Bjhsyp2G0MaRZfGl+0Hx4Sawpx3S+/3Y1k8O4MyBGhZhk3Ph+PAkVhy5ax9XfaG9jRVwdHmLyQa9sPGLaHE6Mfi3qSVZJO1W8nJtKVu+XH7Z/jlZnTOc2k35hTO8wfVfB6Bm5mWB/unawvy6hXnCALFQo9nYMrtb1wyXd5N+QqOc8EahLfPTLf02WhW8s7fRJdCEQc/0ZjzimTmzL7EokTkMpE4Ybb2WmAbPpUE9roJpcs1XVvMrfvA/VWK5MIh366OQh+1CUmP+PE/uofKEcNmN0Zj4xxQ==
From: Oleksii Moisieiev <Oleksii_Moisieiev@epam.com>
To: "xen-devel@lists.xenproject.org" <xen-devel@lists.xenproject.org>
CC: Bertrand Marquis <bertrand.marquis@arm.com>, Julien Grall
	<julien@xen.org>, Michal Orzel <michal.orzel@amd.com>, Stefano Stabellini
	<sstabellini@kernel.org>, Volodymyr Babchuk <Volodymyr_Babchuk@epam.com>,
	Oleksii Moisieiev <Oleksii_Moisieiev@epam.com>
Subject: [PATCH v4 1/4] xen/drivers/char: fix SCIF IRQ registration failure
 propagation
Thread-Topic: [PATCH v4 1/4] xen/drivers/char: fix SCIF IRQ registration
 failure propagation
Thread-Index: AQHc0zvf/bLY5rMgLEeCO+A68ZSaAw==
Date: Thu, 23 Apr 2026 16:11:41 +0000
Message-ID:
 <0d39b0fc5ea8351e660b716cd55da2e677538b09.1776960679.git.oleksii_moisieiev@epam.com>
References: <cover.1776960679.git.oleksii_moisieiev@epam.com>
In-Reply-To: <cover.1776960679.git.oleksii_moisieiev@epam.com>
Accept-Language: en-US
Content-Language: en-US
X-MS-Has-Attach:
X-MS-TNEF-Correlator:
authentication-results: dkim=none (message not signed)
 header.d=none;dmarc=none action=none header.from=epam.com;
x-ms-publictraffictype: Email
x-ms-traffictypediagnostic: DU5PR03MB10263:EE_|PA4PR03MB6752:EE_
x-ms-office365-filtering-correlation-id: 41ec653e-e4d1-4ea1-7d66-08dea153019e
x-ms-exchange-senderadcheck: 1
x-ms-exchange-antispam-relay: 0
x-microsoft-antispam:
 BCL:0;ARA:13230040|1800799024|366016|376014|18002099003|38070700021|56012099003|22082099003;
x-microsoft-antispam-message-info:
 NJFWg7eMr9kO4n3/I9Hl1hHOwHN+cbyFhTRcUa8NuFKh7ZxpfjEWMerJXlBnvFDc5iY1aoo0A2p+aRKgSbYkAbkCwT6FNOEubtg2lJi51YSQhJd0x5zOXBNJ5qM6c/BKiHJGFg5uoIaXNCgwqu6ohceGR1AaMNtp6gp45+VRhLH+06Et2qP8V/dpYVtKT+gk9GM3sX9yZFz5UkOXX5OK2BarLmWhhYXhBI9tYRepBT9Q4tm6jvzFdPes2fBs3PXukDPa6JPJYFA1G3bjTfhG1Tj5b0SBLxHmykjuOnBpUMv1Wgaqu5i8q+GRUYKaJHDUsib3CUyk4Wl26wTtaDwzM/QpCBAPr8dscUBs8EmUPcTusiqIOhcFlbdnwHQv/Xky/6OnLuFKBF6t31D7YsXHK/RtGSiVIr7fo8iRFojthqs6YoOUyC/fb0lBX4K6Ntba8wf8xK008ELoq6THGJlGWfpQ7k2UNJ0JYfyP70f0s5qqU16CYPNUnnXhzriQYf8u5ETqFPTOATwMOpoGd8yRZELCvMgQwvDSeHWyK2LAG8Xvz+R+rAUWGzDNaTJTBCTAY31p+Y3d3BXDebj6dBnwyTDFi5ca4Ow8570157EqD2etCK1UT0t1/fuSruhpeWA4cA5Yh3folHuOamYaCMl/MvlavsU5SejYUXGxW+CaiKtF4G2M+VHAhrZL9KAVDTBQg214odpV8XveN5qoKh35B+G0roCy4WY+BEh7StwENuAUF0WK3O8Cu3j0WIMJzuTIXR+/rtSb5av8HkAnpwCnrb/9rI3O7kvPdUr1YR2kZsY=
x-forefront-antispam-report:
 CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:DU5PR03MB10263.eurprd03.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(1800799024)(366016)(376014)(18002099003)(38070700021)(56012099003)(22082099003);DIR:OUT;SFP:1102;
x-ms-exchange-antispam-messagedata-chunkcount: 1
x-ms-exchange-antispam-messagedata-0:
 =?iso-8859-1?Q?m5RQ1ygqWDEIlkf9mnU4dMl1wI60e0Cpcz20aE8tBZcVXQTCIIlRyQzR6t?=
 =?iso-8859-1?Q?Q7kJsJNmSb5OaA6VwJFIdsv0wFNFvG0jjzrTA4GZY6LAFg79/eyA7a3sC5?=
 =?iso-8859-1?Q?BoSJNEKhUuoxw0ALrGvij/03VL5J/leyHu71Y6wSe2tZcemPV3LZDhtMP6?=
 =?iso-8859-1?Q?53VefnRV3CZm/fhL938jokjWqRUlhVdcL5pI1a+t/PpoPTrir1Nb6zA0+n?=
 =?iso-8859-1?Q?FjoYrYPnCY7My1YKacAwh69VyZ2nOuzwLBbFHd4tzm1yrNc8rhvrHs8b8S?=
 =?iso-8859-1?Q?j0OHedVsA1YtDO7hqpjCsOBr4QB7RGrmaj0+XhqE2rHOUsszDmBzn4/rDj?=
 =?iso-8859-1?Q?hXIJyRUgw5kJzDmS+YT6Ughh36ZzsZXdegKc0uYnEJ5FZ38wAMMqlsGo2i?=
 =?iso-8859-1?Q?uU7gNbtdJx23H5HGKOlwdo4RhUKOR2//BATSTk4ArVGjSvkCRf4a4zEyiJ?=
 =?iso-8859-1?Q?tX7tDIv2AXwo0eD/eaIFclVWU8Q0WOgTFOLgyf8LS7qj+W5z2O7R5mYQo/?=
 =?iso-8859-1?Q?yBjcPBZWFwxKsd2ch/rnKh+lDrze+dL+uD3fAXZ2Ch0i0x0mj1SdJk45WP?=
 =?iso-8859-1?Q?BRS+aRq1LI4FaANeudBgiPNhLX0icMpMaprIK4xlstMKRlzgRujPQQHnkM?=
 =?iso-8859-1?Q?tTa3JdfG01ve1e1phQJWPRzgz/6cEw38bssS6R/kI/NvIMcuvGmmPGMCfp?=
 =?iso-8859-1?Q?FzTVXCCVcQpdYwrHSY6qDpTYz8yIsnIotZCagYtwQYsfElQwsAcGLzDb4E?=
 =?iso-8859-1?Q?LuLXhKkFNIRIDGTt8KWbh5I+jOqgJS9qdExgHta4JNy/2tm1Vx6k6oJ8o9?=
 =?iso-8859-1?Q?clnU3pd1kyU35IrUT2uxRtYWJG7TkluSS0tg6pXyHtzQzoZGW+0polevuI?=
 =?iso-8859-1?Q?LPqfXuNs7GxfyL5xOxn4sIPEzv3SdDZS8R1iVHzXd8Bt1mwaFBL1lbsFea?=
 =?iso-8859-1?Q?50k0o+DrwKeKqGMRxPc/sA/No5Wv8uykpPBvDrzbbbGW3mQTaE4EqTpuiS?=
 =?iso-8859-1?Q?FL8kQK0B1R3q6W4w3b9ChmMDHattcZ3q+W70dipsF7n3GhhNHUuRLQnd5J?=
 =?iso-8859-1?Q?Gzem9BaLLmR8lgNIk3yjauVJHVS9tevTF/Grm2EyR4tNG4F9JSTYCtyeLd?=
 =?iso-8859-1?Q?6fDPUjHXehwio03S2yLY9WJpDnimnIM1veq76hooFC5+bFhU3K2XYFX2it?=
 =?iso-8859-1?Q?bDmrdBor1JfsmSNlcL0uGvmrE8U39e8mubzMb2WD97d61I4ckvMl5j+0Gs?=
 =?iso-8859-1?Q?I61I5+w5Evgi/DjmlJ4hY/keK/enTlF4hAbLmTGsJZYGU1KpC9FZ9ZMmJt?=
 =?iso-8859-1?Q?66FcluG3WZC85JI1veSCxlBkvhwh5LQOu0gUa5XSIH/iDfyLgPgZA+wsGt?=
 =?iso-8859-1?Q?8c+MCixJnTDeBpJkJyd4hpw05dinUpSid/mYeDYV31KbA5wqq0vdDPRT9+?=
 =?iso-8859-1?Q?xL+SiR4zkQNxfdF1Lkg9hcGaViU63Lei95HCIjhrwhkzSh/GcDQxfSnv9v?=
 =?iso-8859-1?Q?eWZaQ11MsawxbcBCvXIV3LK1+gNdO4LQxVGP5VpMMHSpH5YH9NxynIAzxY?=
 =?iso-8859-1?Q?4PR01mIXpodqSGNuxFIgyzEGBrlOtox+EhAynC12Zl5RiYWfevQ2EGCsXG?=
 =?iso-8859-1?Q?oF/8Ub/DiTYc+Lr5qqfjw+fpA8a3iltenKtkHI+JvWkC7DHrNZistD8hpX?=
 =?iso-8859-1?Q?XKSL8JAgctv4jRjGNig9KnFkQhhIxgh+1HCSv9QRjAudM3jC+zjzFYNQSc?=
 =?iso-8859-1?Q?Bvv6IwrlfcaJOvaia1poWJJwfqjmhTqTR4VRoCdZIv7bWegsaOr4tgs+4i?=
 =?iso-8859-1?Q?TQAvw4BJ8Q2b2t0m3fpDpykkKYenVIs=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: DU5PR03MB10263.eurprd03.prod.outlook.com
X-MS-Exchange-CrossTenant-Network-Message-Id: 41ec653e-e4d1-4ea1-7d66-08dea153019e
X-MS-Exchange-CrossTenant-originalarrivaltime: 23 Apr 2026 16:11:41.4272
 (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: 0J8Rc+1ri7W8MxDXAN/dMcHe5M3c6aZ8/XWRDXG5jdMvF66n3rxMPVxTXeTQb7KjH7KIz447Eae9eFqL4bNUomnBGHU3CvvSXndtlqLFVO8=
X-MS-Exchange-Transport-CrossTenantHeadersStamped: PA4PR03MB6752
X-purgate-ID: tlsNG-42698a/1776960705-7D364F3B-5D38FF89/0/0
X-purgate-type: clean
X-purgate-size: 3024

In scif_uart_init_postirq(), when setup_irq() returns an error the
failure was only logged via dprintk() and execution continued,
unconditionally writing TIE|RIE|REIE into the Serial Control Register
(SCSCR). This armed all three hardware interrupt lines (TX FIFO empty,
RX data ready, receive error) with no handler registered to service
them. On platforms where the GIC receives these asserted lines, the
result is either repeated spurious-interrupt warnings or an unhandled
interrupt fault.

The fix adds an early return inside the error branch. The
interrupt-enable write to SCSCR is skipped entirely when no handler is
registered.

SCIF TX continues to operate correctly after this change. The Xen
serial framework never calls serial_async_transmit() for SCIF, so
port->txbuf is always NULL. This causes __serial_putc() to take the
synchronous finite-capacity path, which polls the SCFSR_TDFE hardware
flag directly and does not depend on the interrupt mechanism. RX
wouldn't work if irq wasn't registered.

As a secondary clean-up, the hardware error-flag clearing sequence is
moved to before the setup_irq() call so that error bits accumulated
since init_preirq() are cleared unconditionally, regardless of whether
IRQ registration succeeds.

Signed-off-by: Oleksii Moisieiev <oleksii_moisieiev@epam.com>
Reviewed-by: Michal Orzel <michal.orzel@amd.com>
---

Changes in v4:
- update comment for setup_irq
- add R-b
- change %d to %u in printk since irq is unsigned

Changes in v2:
- Extend fix to pl011, cadence-uart and exynos4210
- fix typo in patch 1 description

 xen/drivers/char/scif-uart.c | 12 ++++++++----
 1 file changed, 8 insertions(+), 4 deletions(-)

diff --git a/xen/drivers/char/scif-uart.c b/xen/drivers/char/scif-uart.c
index 888821a3b8..350d5f14b9 100644
--- a/xen/drivers/char/scif-uart.c
+++ b/xen/drivers/char/scif-uart.c
@@ -187,16 +187,20 @@ static void __init scif_uart_init_postirq(struct seri=
al_port *port)
     uart->irqaction.name    =3D "scif_uart";
     uart->irqaction.dev_id  =3D port;
=20
-    if ( (rc =3D setup_irq(uart->irq, 0, &uart->irqaction)) !=3D 0 )
-        dprintk(XENLOG_ERR, "Failed to allocated scif_uart IRQ %d\n",
-                uart->irq);
-
     /* Clear all errors */
     if ( scif_readw(uart, params->status_reg) & params->error_mask )
         scif_writew(uart, params->status_reg, ~params->error_mask);
     if ( scif_readw(uart, params->overrun_reg) & params->overrun_mask )
         scif_writew(uart, params->overrun_reg, ~params->overrun_mask);
=20
+    if ( (rc =3D setup_irq(uart->irq, 0, &uart->irqaction)) !=3D 0 )
+    {
+        dprintk(XENLOG_ERR, "Failed to allocated scif_uart IRQ %u\n",
+                uart->irq);
+        /* Do not unmask interrupts if irq handler wasn't set */
+        return;
+    }
+
     /* Enable TX/RX and Error Interrupts  */
     scif_writew(uart, SCIF_SCSCR, scif_readw(uart, SCIF_SCSCR) |
                 params->irq_flags);
--=20
2.43.0


From xen-devel-bounces@lists.xenproject.org Thu Apr 23 16:11:48 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 23 Apr 2026 16:11:48 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1292401.1570888 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wFwea-0000hA-PS; Thu, 23 Apr 2026 16:11:48 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1292401.1570888; Thu, 23 Apr 2026 16:11: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 1wFwea-0000gS-Lg; Thu, 23 Apr 2026 16:11:48 +0000
Received: by outflank-mailman (input) for mailman id 1292401;
 Thu, 23 Apr 2026 16:11:46 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <Oleksii_Moisieiev@epam.com>) id 1wFweY-0000D9-KD
 for xen-devel@lists.xenproject.org; Thu, 23 Apr 2026 16:11:46 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wFweY-004X3T-11
 for xen-devel@lists.xenproject.org; Thu, 23 Apr 2026 18:11:46 +0200
Received: from [10.42.69.11] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <Oleksii_Moisieiev@epam.com>)
 id 69ea44be-5cb7-0a2a0a5109dd-0a2a450bafd8-14
 for <xen-devel@lists.xenproject.org>; Thu, 23 Apr 2026 18:11:46 +0200
Received: from [40.107.159.119]
 (helo=OSPPR02CU001.outbound.protection.outlook.com)
 by tlsNG-42698a.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.1)
 (envelope-from <Oleksii_Moisieiev@epam.com>)
 id 69ea44bf-212f-0a2a450b0019-286b9f772e5a-5
 for <xen-devel@lists.xenproject.org>; Thu, 23 Apr 2026 18:11:45 +0200
Received: from DU5PR03MB10263.eurprd03.prod.outlook.com (2603:10a6:10:519::5)
 by PA4PR03MB6752.eurprd03.prod.outlook.com (2603:10a6:102:ea::24)
 with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9846.21; Thu, 23 Apr
 2026 16:11:42 +0000
Received: from DU5PR03MB10263.eurprd03.prod.outlook.com
 ([fe80::8c9e:b301:61c0:3908]) by DU5PR03MB10263.eurprd03.prod.outlook.com
 ([fe80::8c9e:b301:61c0:3908%5]) with mapi id 15.20.9846.021; Thu, 23 Apr 2026
 16:11: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=G2H4HdNfquR99Q4SsTiDtuUd725CnHJ1llXPeZCujd68wb0SvIijOD5Pjphsp5HuPQbjPpB/rI7a3yYDI69IAJmEOclGOuyhh18vz0jE0JZqPePFeef0OpCIyCwNFGVTwB6CGHa+mQw9FgrdMev4REAUYhyTbrzf6Gr/Rl6ORD51iIdvNx7IX0ritqkJlRDudiNsNWurjzdcwdVetEGsrvf7pkQBHvNHRVutcO0a6IIk4blu6Ks1VdknHm2IEYDmACya6rbl+GTimmJSqZxUHHGnjuqn5s0Y8oZ+4otWEC9X0koNBUMblrMZ3RBZ+Vkreyh3VGoRJDdMgaeVRLpL2Q==
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com;
 s=arcselector10001;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1;
 bh=hwLaTMy1vY8qP6h9+hcCU5LH4m+dOUrZTarK3BrxX1w=;
 b=LFXCSpFePUD/ohX6jZZQ8SRt6YF6nece0+GBpghLi3QFnOVTXYPaGWWihxtwg5fmF/j6IJFz1e0N19izTMKFTXUNBcwSRoT54CduZ5RBbrPmGmO7AsQvklt2oWJojb68Y7ygq01GOiqdOxzt7Q/HMd+YZ77tiMd9nYMg5+bTPOEC/tZBY4r9ht7lEEB0CoybhkhNJulNX5VdcckRoGRVliRjCmCN5IgtLZtWzgHpLSDxNfYF1KKz2Uq9YTXiDAEsTyg6dTAIlAzAcmAnEmm6tXokA4aCgnKoJEeHpCXp2KBwGzGpL53fgTLSPhT36bAl2IP4O0TEZUF56DuIjn+ImA==
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=hwLaTMy1vY8qP6h9+hcCU5LH4m+dOUrZTarK3BrxX1w=;
 b=M2hiLI07lsdQ6DeREGtirNKT4/3FwVaOSCFgtesrJCrAqbImotKbNvnEffZetXhYM05TnHYILBXWPkPnTrbxmaPL1FaECaOs/+bg5YCHXvv+/kXMtUh7fC75uQ1tY/DUmw69f0MwI2OyAMmVgdSNaFfcjkBW3J+FIkZtM8enKiTuz1GIAO3MUM2EWTpKepPRy3qixItiEwGD0UujljqiwcIKBB/33uda1rHDrTGPiDf1CHZZRhrZTfxh/SiBOC1wr29mOFmj7YVZy2c3vZAhHdRCoyXF4jzfcUerLHiLXkc1CDdL6cWVXuJIrH5IpYDk/81Jx7tFp02P41+1ESqTKA==
From: Oleksii Moisieiev <Oleksii_Moisieiev@epam.com>
To: "xen-devel@lists.xenproject.org" <xen-devel@lists.xenproject.org>
CC: Bertrand Marquis <bertrand.marquis@arm.com>, Julien Grall
	<julien@xen.org>, Michal Orzel <michal.orzel@amd.com>, Stefano Stabellini
	<sstabellini@kernel.org>, Volodymyr Babchuk <Volodymyr_Babchuk@epam.com>,
	Oleksii Moisieiev <Oleksii_Moisieiev@epam.com>
Subject: [PATCH v4 2/4] xen/drivers/char/pl011: fix IRQ registration failure
 propagation
Thread-Topic: [PATCH v4 2/4] xen/drivers/char/pl011: fix IRQ registration
 failure propagation
Thread-Index: AQHc0zvfp867h1iE6UiP0oRgFR3PCw==
Date: Thu, 23 Apr 2026 16:11:41 +0000
Message-ID:
 <7a3d7e4b73ca1c144ce7687b8494f2a0eb862383.1776960679.git.oleksii_moisieiev@epam.com>
References: <cover.1776960679.git.oleksii_moisieiev@epam.com>
In-Reply-To: <cover.1776960679.git.oleksii_moisieiev@epam.com>
Accept-Language: en-US
Content-Language: en-US
X-MS-Has-Attach:
X-MS-TNEF-Correlator:
authentication-results: dkim=none (message not signed)
 header.d=none;dmarc=none action=none header.from=epam.com;
x-ms-publictraffictype: Email
x-ms-traffictypediagnostic: DU5PR03MB10263:EE_|PA4PR03MB6752:EE_
x-ms-office365-filtering-correlation-id: 11a4c04b-3f44-4545-e675-08dea15301f1
x-ms-exchange-senderadcheck: 1
x-ms-exchange-antispam-relay: 0
x-microsoft-antispam:
 BCL:0;ARA:13230040|1800799024|366016|376014|18002099003|38070700021|56012099003|22082099003;
x-microsoft-antispam-message-info:
 3AMt3qtGqnJsT4Zepe+VBbSAIKYQyfJorTiAkOfCeyEMD/xavRgWF5i3gRipIxHMq/axl6Js7xQrL7jQhGSCdLqen6hJNjYUUw9Kly+LSj8BZ8voOF6SChnay1kmtpSx/pbV4H3mC/fbC+2l8Th9BZJMQRaQ13mnxm7gONX6VTU6BGNEUgr93YT69oWQUlJIylxJDuH4cEC6yYX8MMmh0dGNYKyLEDImOmDVjVY1ZOgpAshcPsozE8sHPy9dE0V4q4jA5OWR0CW0SAOtBvx0CAcHgRm7LyyK6PVwfYuH/KdH/ANTTKfPvwVmoSlkaFnL0wq4dIH7EiiQPC5ZmoT1+TvBpePNnxP1m3S2XPJJOORV15s3lWEhQPIaxwS599rXkT/ZVhm8Stum60RcevABsPAum/8U/+p4ipgM1v6WUbHjh7raoNolIVojyE+ZZ1zV4UxVlpdxWguHmlXJwrnZDbdCOk9IPa0ojnSfuhw+kOJEMZqyLSSXka8a8TdNcjysmUPUKjrNIbnGeF/gD7EVBlWUsPsPLRgYmb3K8KuLgxcjGMs8ge9meQu24YSm73bm/Gjf0PrJlsDM+xq91PlGFN92uOdEIdzs4azDk/yNRTX64YVUnj/gXkr7VmSbiOl/OSoPcOzZ4GfRpsOEH6gBX3o5EOKfx0o7ddTZfy9DNWQAD7xEBZfioZU8GnjO1ZcnrDM+azxejSx9bC1vSJ0PNu1zZL9ddyXvSERyKFpgenU6DjS9RsohU3SvBXc9xsGGtiGfujC0BoPj6JcXCCQuRUiryvQghqm+tusgmdEFmZc=
x-forefront-antispam-report:
 CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:DU5PR03MB10263.eurprd03.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(1800799024)(366016)(376014)(18002099003)(38070700021)(56012099003)(22082099003);DIR:OUT;SFP:1102;
x-ms-exchange-antispam-messagedata-chunkcount: 1
x-ms-exchange-antispam-messagedata-0:
 =?iso-8859-1?Q?ddY3dRJUE/dYBmHlsOmZ0JDfSmMAitK4EEpH/qEeyPm02B//bJIzWd6G/g?=
 =?iso-8859-1?Q?3uu0d7ODr7wUeGO8KgJj9wu1eNDs631rxEgkyio360B9PdIoBnBnVANylx?=
 =?iso-8859-1?Q?MsTx2GwCM/RsYlZRNWUhDebZ9lSZewii6PVaT5xw5IHKKAthHHPRrcApxN?=
 =?iso-8859-1?Q?sHrLv19JKc6zalmcfewqstQARFRHt7ALpl6zBkjSIbZp8uIPiA+0c5IZfZ?=
 =?iso-8859-1?Q?u9T3lysZ96WyR27+qGSownAb4E8aQgC8ZITs7cKwbhqiCtY7xKuIlRU/15?=
 =?iso-8859-1?Q?H2wSuIjeuZXknmmwzkkzl1fuk+daEq9rVULlI9UtLmXSTkCx8rJbFMAYCd?=
 =?iso-8859-1?Q?Ir349MaKHVg6R2WVgr8stSLIDMEJCBFYoN1PeyqM6HXMVa5085Q4S/rDrk?=
 =?iso-8859-1?Q?Mc5X98+6UBTJ+Xy2QvKG8VSYyeMbHIBsqGddIBQ+pNn5BCO5qakTNKhEMJ?=
 =?iso-8859-1?Q?yVy/QxjivO27cnn27PgGHbDELpLAH2O5G23FkVLBLvBH0vw5BotJk5XJoG?=
 =?iso-8859-1?Q?EXB4ZGUiTWo1aCUXvz76zoJAOehLNlYLxE06pNkG00X3ZgPrh80Gl2sFQ9?=
 =?iso-8859-1?Q?IwDKhUOkwDWdjw57In/j+N4igUH3Rug836rucX1wqngen+iKJcNHiUkams?=
 =?iso-8859-1?Q?IHu3DxrwGdGH1OdyrhB5LZDUtNVZJsL2E6zYiWMfARFkK/Ts54eA/9xhpG?=
 =?iso-8859-1?Q?y8BvwedQJQ/vXhR1F0Hp+kvHPd+4DWki0IErXJKdZlNHICKiMcmagnBE5z?=
 =?iso-8859-1?Q?qOLv84yKJm7R3PEnUhgh7pcpMcpcLqWrUU2AiXqmpC9KjWJOYBid1IbNSi?=
 =?iso-8859-1?Q?w2iOnrfLdQAVBSby3So4Be9PAe/GyEJ45UqlxQ7inLqafpkaH9j+c9EaW/?=
 =?iso-8859-1?Q?BnNLoZkxXYlqKalA/gduBZlVMcxzJcr4R9HwNLqO/pnOjnEVH83bKg/69W?=
 =?iso-8859-1?Q?H8Yi0t7u0Px1MZpqCKvO/zSX3c8My+gC4aQ8Dlo320S17LBJVKBPcRxj/7?=
 =?iso-8859-1?Q?AhpFn0eNZG6gapgS8vdfixgKMeayrmtD8wV2rYLkyIohlUY33i1DiXMcpM?=
 =?iso-8859-1?Q?Dx6txytlNttf0lzS4TXbTVpdS+hZXX64S7fj3s8+lWQBdKQq5RST/oIya9?=
 =?iso-8859-1?Q?YTH7VAZR0j/JQ/12sGn6gjPjF1ivZqMBSaAe6s+1G2Bs6KFmwNECLs9qKk?=
 =?iso-8859-1?Q?ICWLO/vzJEu1+5FEo8kQHzJjP6bnooYgExLC43U5m9Fysz3G25UazA8XHr?=
 =?iso-8859-1?Q?SUqg5gj+pOfo6UXCqnzFjIXFWQOqIkR5+xRtS1jv7EpU8eONSHtD/5e5si?=
 =?iso-8859-1?Q?PndvrBgJMNudDqac3K9ZQLevXD9nZ4zmT9ZCzLW6d4MEwbOdMAQy0rQvaC?=
 =?iso-8859-1?Q?bm8n4qlv5/XJaKHg0vn5QX2orVtJk6msdbUenu2Fza2qXlJdUtm4RLn0vx?=
 =?iso-8859-1?Q?A56D+XqUJIuyZOMJHEiVpdgFMulMP2Wk92fI8Q6zbUPkbDr/Jo34x116cP?=
 =?iso-8859-1?Q?ACqf5oPVYXQ9ArV1mMinojvuax1o+vF0RlrS5p+bND49hjA5wiUfWCN3kw?=
 =?iso-8859-1?Q?YYvmNOZuZwtNUfzvUOSSXflLZHsI6+ppe4yacuqjDRAUVWzCA08SLGHvgn?=
 =?iso-8859-1?Q?QvWUncP82peKM/J4HvnBRAjZD6vmSoUhFOG8KXMYvoUp/MMXqyKU5lniH0?=
 =?iso-8859-1?Q?DlPq6n0FNIM+gQmoXYWP8WxJTuFmkJuEGDrUb6DKAyBFe3l5NVIrICEvsm?=
 =?iso-8859-1?Q?j+sX2u6BjUEF0UNaEIUBOakdf4bI4zA3WmLrO3MWQ63FPB0XK0dvrD7TMS?=
 =?iso-8859-1?Q?lbVOTQ9vrh6ccT9BMDXiHMlxrSfeF3k=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: DU5PR03MB10263.eurprd03.prod.outlook.com
X-MS-Exchange-CrossTenant-Network-Message-Id: 11a4c04b-3f44-4545-e675-08dea15301f1
X-MS-Exchange-CrossTenant-originalarrivaltime: 23 Apr 2026 16:11:41.9102
 (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: nCHoJKpAKYqVftbJFQxwpMTkEuXvJhev6mUPG/T3PGTR2AWmuw0EJ/RnR/0+Q2MRR1rA+KBe09hvEGluLcpIo9fCWb+AkVx6B9DKOpc3hMQ=
X-MS-Exchange-Transport-CrossTenantHeadersStamped: PA4PR03MB6752
X-purgate-ID: tlsNG-42698a/1776960705-05165F3B-ED63BCAD/0/0
X-purgate-type: clean
X-purgate-size: 2815

In pl011_init_postirq(), two code paths could reach the
interrupt-unmask write to IMSC without a handler being registered:

- When no valid IRQ number was provided (uart->irq <=3D 0), the original
  positive-condition guard (if uart->irq > 0) skipped the irqaction
  setup but still fell through to the IMSC write, unmasking
  RTI|OEI|BEI|PEI|FEI|TXI|RXI with no handler installed.

- When setup_irq() returned an error, only an error message was
  printed and execution continued to the IMSC write, arming all
  hardware interrupt lines with no handler to service them. On
  platforms where the GIC receives these asserted lines, the result
  is either repeated spurious-interrupt warnings or an unhandled
  interrupt fault.

Restructure pl011_init_postirq() to use early returns: return
immediately when no valid IRQ is provided, and return after logging
the error when setup_irq() fails. The interrupt-enable write to IMSC
is only reached when IRQ registration succeeds.

Signed-off-by: Oleksii Moisieiev <oleksii_moisieiev@epam.com>
Reviewed-by: Michal Orzel <michal.orzel@amd.com>
---

Changes in v4:
- fix uart->irq <=3D 0 to uart->irq =3D=3D 0 since it's unsigned
- update %d to %u in printk since irq is unsigned
- add r-b

Changes in v3:
- clear pending error interrupts before setup_irq for pl011

 xen/drivers/char/pl011.c | 22 ++++++++++++++--------
 1 file changed, 14 insertions(+), 8 deletions(-)

diff --git a/xen/drivers/char/pl011.c b/xen/drivers/char/pl011.c
index 5f9913367d..a336241033 100644
--- a/xen/drivers/char/pl011.c
+++ b/xen/drivers/char/pl011.c
@@ -150,18 +150,24 @@ static void __init pl011_init_postirq(struct serial_p=
ort *port)
     struct pl011 *uart =3D port->uart;
     int rc;
=20
-    if ( uart->irq > 0 )
-    {
-        uart->irqaction.handler =3D pl011_interrupt;
-        uart->irqaction.name    =3D "pl011";
-        uart->irqaction.dev_id  =3D port;
-        if ( (rc =3D setup_irq(uart->irq, 0, &uart->irqaction)) !=3D 0 )
-            printk("ERROR: Failed to allocate pl011 IRQ %d\n", uart->irq);
-    }
+    /* Don't unmask interrupts if no valid irq was provided */
+    if ( uart->irq =3D=3D 0 )
+        return;
+
+    uart->irqaction.handler =3D pl011_interrupt;
+    uart->irqaction.name    =3D "pl011";
+    uart->irqaction.dev_id  =3D port;
=20
     /* Clear pending error interrupts */
     pl011_write(uart, ICR, OEI|BEI|PEI|FEI);
=20
+    if ( (rc =3D setup_irq(uart->irq, 0, &uart->irqaction)) !=3D 0 )
+    {
+        printk("ERROR: Failed to allocate pl011 IRQ %u\n", uart->irq);
+        /* Do not unmask interrupts if irq handler wasn't set */
+        return;
+    }
+
     /* Unmask interrupts */
     pl011_write(uart, IMSC, RTI|OEI|BEI|PEI|FEI|TXI|RXI);
 }
--=20
2.43.0


From xen-devel-bounces@lists.xenproject.org Thu Apr 23 16:11:49 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 23 Apr 2026 16:11:49 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1292402.1570893 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wFweb-0000ks-4P; Thu, 23 Apr 2026 16:11:49 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1292402.1570893; Thu, 23 Apr 2026 16:11: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 1wFwea-0000jb-U2; Thu, 23 Apr 2026 16:11:48 +0000
Received: by outflank-mailman (input) for mailman id 1292402;
 Thu, 23 Apr 2026 16:11:47 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <Oleksii_Moisieiev@epam.com>) id 1wFweY-0000DF-Tl
 for xen-devel@lists.xenproject.org; Thu, 23 Apr 2026 16:11:47 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wFweY-004X3T-AI
 for xen-devel@lists.xenproject.org; Thu, 23 Apr 2026 18:11:46 +0200
Received: from [10.42.69.11] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <Oleksii_Moisieiev@epam.com>)
 id 69ea44be-5cb7-0a2a0a5109dd-0a2a450bafd8-16
 for <xen-devel@lists.xenproject.org>; Thu, 23 Apr 2026 18:11:46 +0200
Received: from [40.107.159.119]
 (helo=OSPPR02CU001.outbound.protection.outlook.com)
 by tlsNG-42698a.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.1)
 (envelope-from <Oleksii_Moisieiev@epam.com>)
 id 69ea44bf-212f-0a2a450b0019-286b9f772e5a-6
 for <xen-devel@lists.xenproject.org>; Thu, 23 Apr 2026 18:11:46 +0200
Received: from DU5PR03MB10263.eurprd03.prod.outlook.com (2603:10a6:10:519::5)
 by PA4PR03MB6752.eurprd03.prod.outlook.com (2603:10a6:102:ea::24)
 with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9846.21; Thu, 23 Apr
 2026 16:11:42 +0000
Received: from DU5PR03MB10263.eurprd03.prod.outlook.com
 ([fe80::8c9e:b301:61c0:3908]) by DU5PR03MB10263.eurprd03.prod.outlook.com
 ([fe80::8c9e:b301:61c0:3908%5]) with mapi id 15.20.9846.021; Thu, 23 Apr 2026
 16:11: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=UdJH5IOkNN37mK9LVnF/Myt14grTjU33TzCdSWJ+4B+fnJkzfTCkIRT+MO9bld1hLVRxSMZ9dAFC/7rgJdEuGZjm0/M8G8dQssJRAZ2McFL2zSM9Alr3LQtVhTaZP+6+7NrLWiWjVms7QzVQUkgGozs3qZR+1vQNypXldWYGGLItm+KbKqqY8yWXDdSy05cHXpRXQrvYy6Esq37e6FmK+on01UMlIPznH51I8Fp/ecsaBbqsprRdOKhNDPgQCUyTcir3t0QCcCmkK0rsvCZaGZiCfXTVEpHEzdQHKInrZ9eYxA5SihdyXSOQjdZzPTilKucAWOBAL2PFbOlni97GXg==
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com;
 s=arcselector10001;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1;
 bh=WGOYorYk5IqETMMU68/1IVtJZAZHO3i8w9NcL6A6PSw=;
 b=wmEX23jMSaMfzqFIlIHK2fkmYTUO7Ol61qsi8uLw9n4/3OtNPbOOQWiYC0xYuCZOXIT13uPqfpupS+6QCoUYkMUmkqNyEp5e6l8jaMayES3YQs5WmX7NPrxrg0f88tUzjsq5HRoeYP4JiQmjkxgllmN/NJfrGjpHZYez9GAPKq2pA1gUKIQx6Cqh2ZgifniygzJogm6FCAYWzFdmofu4JGu2J7h4JhYlPrcYKWyVypy4MjGLHMdmplVo8HBuw3S2KO5MQ6TX3wDV5eIqZQlHK4QMYK2iKUJ/GDq/CfRoCfRBSFNuFu8Mi8gTTRHeiSxXr5dZ4dawQz4uWRRzD42BKg==
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=WGOYorYk5IqETMMU68/1IVtJZAZHO3i8w9NcL6A6PSw=;
 b=HzSRWcStkC+977OP+ovidXBXVczUZZCw016bvMl5gf7y7C8XyUFJCU3GNqtN+zLK9X98uQpKIRr8GL6j4RVySl0xNuPwl4jGgumCoTXIzGz7U5ZEpvaadlcFnasMI7P1sDwsyjY7ewG+tAshweXpDI4H6/JJgrUXJ1SnT56hPUOOV0GdlIo2rg9UUdxl4UQOhVYh1sW66lr/2zHOBx7DsgAKSr1QM4iV6bAJEQBsz1S+ssUAdec0DoQ/7+Tu/48mjll+RD+JsrlPnyXQSyU4u3YGQGhoAytfsJb9AXCp/4HPnT/YsCZJ1UzGB1/LncqTdWH1OfH8yZSzxug0oPNfyg==
From: Oleksii Moisieiev <Oleksii_Moisieiev@epam.com>
To: "xen-devel@lists.xenproject.org" <xen-devel@lists.xenproject.org>
CC: Bertrand Marquis <bertrand.marquis@arm.com>, Julien Grall
	<julien@xen.org>, Michal Orzel <michal.orzel@amd.com>, Stefano Stabellini
	<sstabellini@kernel.org>, Volodymyr Babchuk <Volodymyr_Babchuk@epam.com>,
	Oleksii Moisieiev <Oleksii_Moisieiev@epam.com>
Subject: [PATCH v4 4/4] xen/drivers/char: fix exynos4210 IRQ registration
 failure propagation
Thread-Topic: [PATCH v4 4/4] xen/drivers/char: fix exynos4210 IRQ registration
 failure propagation
Thread-Index: AQHc0zvfSaMcr5qlbkezhiXMQevBTg==
Date: Thu, 23 Apr 2026 16:11:42 +0000
Message-ID:
 <68ce483d6e42a4f7504fb73e5d20fe922f0c22b6.1776960679.git.oleksii_moisieiev@epam.com>
References: <cover.1776960679.git.oleksii_moisieiev@epam.com>
In-Reply-To: <cover.1776960679.git.oleksii_moisieiev@epam.com>
Accept-Language: en-US
Content-Language: en-US
X-MS-Has-Attach:
X-MS-TNEF-Correlator:
authentication-results: dkim=none (message not signed)
 header.d=none;dmarc=none action=none header.from=epam.com;
x-ms-publictraffictype: Email
x-ms-traffictypediagnostic: DU5PR03MB10263:EE_|PA4PR03MB6752:EE_
x-ms-office365-filtering-correlation-id: f122a687-49d6-4e8c-e04a-08dea1530244
x-ms-exchange-senderadcheck: 1
x-ms-exchange-antispam-relay: 0
x-microsoft-antispam:
 BCL:0;ARA:13230040|1800799024|366016|376014|18002099003|38070700021|56012099003|22082099003;
x-microsoft-antispam-message-info:
 Bxq4z49SIkExxfKqeJgX5tZaIsu1GIvEsVQB4d5AYabHB5mnreEfXUoubjIkiQrLim9/YXr5FS3+4tR3lkH8r8xfG8OMIUf96C3UL9rlUTxaV0+5gOhhUSVHXMA8wLK4O36+1/zzKMRpItj4wh+2vpSfSNGiHged/FdrtVv0UfY+pmQ903RngerhlCKARtCex/Mw3hLS+0CkbmVL71PLFQE49jnysH+bJjeX7fGlLl+iiLiLLh8xDvLejOxvJhfyxk8iV7quu1umtjw8v4sQaOqcvGNV0SoK3H7Bl30aA1vQP5e2VXA4yRAipqMAYk1kzSaStN5hSKCuoDeo8/I17SSbn4Unq59Jxs8NUROJN6MY8N2U8r6j5fkSpKHuJimhWPnww5+UwzrFvpOwqI0H1589QZVHGohzUJyPzfJFoUflB+C+mTJwdT0osacZOEIT88jd8jm3MWwLAjjgxSeDYYl8F1il+7mCU08K+tSkzQkt+sjrNmsCgGPFXMGoi5Y7jAhQZwrffpGocLVVMULHJlM0D/4eyvRLrkm//biE5fO7v5eYDSpHNuFFdxFcTw3gXcR65R4YB2ByIttHODbl9t8EigYB2gDo5YJycWRX9z7/W0Y1zq4EuP3CVxMhzRjq6I+ccRus11DViOxSKKfkSTvugl2rjYiK0OEYlovMwWGoOEcDkFZZsOcqH3GoDyZ5hL3ocy/3bF6LIYoA+rh7fztImmqSgorX2f8xTczyZvU9iko5HizbFvr+D5t7U6WTYv7T2TRsHpxh36GgqiLzGoeqkCtKq3ck9hJCUAnTOoI=
x-forefront-antispam-report:
 CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:DU5PR03MB10263.eurprd03.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(1800799024)(366016)(376014)(18002099003)(38070700021)(56012099003)(22082099003);DIR:OUT;SFP:1102;
x-ms-exchange-antispam-messagedata-chunkcount: 1
x-ms-exchange-antispam-messagedata-0:
 =?iso-8859-1?Q?eBftifm1g+RRvki5Af32STODtX3e4nCY5WpJZpVLMbWIB/eUBh4veAZHvu?=
 =?iso-8859-1?Q?aRqplzoxmJrHNU7x/AZwcwaP7Z3ogpPdZ3yp4qlioQ6mnT/ammauxKPuEo?=
 =?iso-8859-1?Q?jsYM7S0FYhhUH9y62HesdAn6kgeUd+da2KVTTumlquoEiShijwT+VNnBzT?=
 =?iso-8859-1?Q?voVZJtHZEu6bGatMdpoPyvviXy0UgGbX2s5LlMCwud3T2QfUi+wbWNIzoo?=
 =?iso-8859-1?Q?H4rNh89i2Z8dk9rQrfDHjfuqHAWAhia7iu9b21fpSficBPtp768dj+IBSm?=
 =?iso-8859-1?Q?/p7+5f0YYHiV0UqLU0CiDvCrb6MLyhZ31Xi6Gye1wbD1qHKLZSfDSJgMFm?=
 =?iso-8859-1?Q?blQm4n70JY3eshYOhm3HT5VarrwBjPceT+zLwVl2KOsXkAQzpRIYpOboUp?=
 =?iso-8859-1?Q?v2L+wvqi0pJCQXvxYzFu45H2D3n+xHp33PhshoA0Z/MdkXQYPFxxMyVDn3?=
 =?iso-8859-1?Q?gf6CH1nNPUO20iVJ//I3TCuzFrfToavq9lWLgs6KbB/SsLIJqVFdT34hHV?=
 =?iso-8859-1?Q?36nuQfnJzQdi4N4gxgkhtW2OIdhwCZ57YgAo7BqiUfsVsJDPD0Wu1ocfG9?=
 =?iso-8859-1?Q?yRMykH041HD6/MUyvYvzguN3Q8g3b5+giJW+EZ8eOXWNdACpnrbyaysic/?=
 =?iso-8859-1?Q?/eXyIw+EpQPvy2LSw+sX18zhIq6WmLLaHp9VGk+vyIweZwdKPSW2C+ejEA?=
 =?iso-8859-1?Q?WUWiZcEgDuwnIrH1MgTyNJXc8Ab0zI2DVdz5sxBpnyUkiXYdpfXZRm51v4?=
 =?iso-8859-1?Q?NISmgTuuOsWfbu2Pz2Vkdu1H1uO/xVqhJVxVbP+fqFAJ2S+XLnF6qTQpEU?=
 =?iso-8859-1?Q?ML/nKpMaTfjN9q5Y3WvcXSawVyBWFbusRnYGKUzHn7bU7v1QsUS3rF7LPG?=
 =?iso-8859-1?Q?PrDzDfKvlIhTBAdJ+dz8tEMGSgaSkEphIJPcZFdNP5CA3lMWoTTEoZYHMv?=
 =?iso-8859-1?Q?szjwt7jnuW/kZnLSLZmpCsTQu+HbV7msILa/iiQO9akIMVcbnr5/jqftL5?=
 =?iso-8859-1?Q?E0GTkOs9V6UcfyUFLUclqHSJMwK5iu4enmxP1GVSfgVQfsO8X/x1x1aZXq?=
 =?iso-8859-1?Q?KomhyxUSaJHsE9jhnfgx040HTj68heaarbwXniEVD0d4/MTU/qq7gzngoq?=
 =?iso-8859-1?Q?J0Z2Jq0OxdqIM1TXjT1vviXUhUwryBL6t79VTmCGlugsPMeqHMv8+CklzG?=
 =?iso-8859-1?Q?0qcYX0+j6fakwfycWzyiLAV86/ZnGJnI8TX2N5JliGRqPneA3IjJtC3HOw?=
 =?iso-8859-1?Q?egpHMhIZ2tFBWsgsztBsFj8dZdSh8Ioqld6QShWnjZIcQVA6yzlcMipBSN?=
 =?iso-8859-1?Q?R1QusXYcDWa83P5FsWVfHgfKMydUtRVP5RmuJ6nhgHTQQC2baRTOYhgUVG?=
 =?iso-8859-1?Q?GhWblnyVrOsOex6csPdYEVM9/49CeP3Q9+lnYdL7iyOVmN5XSfp6KiFUgh?=
 =?iso-8859-1?Q?1onRQH1ltc6lbpvHf5/xVeqaFVavh8YKh5tikPrcpUeZRdzhBgK6DYVWcN?=
 =?iso-8859-1?Q?AXIT9ZKeiuSCS7EHFvi84harnBZE8Ian6sAVSNqc59sLqxy6XScm9meavH?=
 =?iso-8859-1?Q?D59W/AJl9AWP3KZRcDilxPuOcYFG/rSyrjl8ygg0JXb+CCSgRIS/QLEo6c?=
 =?iso-8859-1?Q?mnWhPG6lLelEPXdAl2LbRw6EFZfb8/p/6NURj+lD81dknuAw6k/wUeJqVw?=
 =?iso-8859-1?Q?U5PSMpVs2ke9qC01LW+CPlJAV4tFpt3wtjWX/gZoN2VdqgUzKLdOxYvV59?=
 =?iso-8859-1?Q?ISHWQusiNCoUx44Cf6OUsAKCH+Y3aRycrNd+5MdsY+S+Z2iedxn/mp6DwS?=
 =?iso-8859-1?Q?toS2mYD98ERG8CDV1l99vXFqiFSV2Rs=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: DU5PR03MB10263.eurprd03.prod.outlook.com
X-MS-Exchange-CrossTenant-Network-Message-Id: f122a687-49d6-4e8c-e04a-08dea1530244
X-MS-Exchange-CrossTenant-originalarrivaltime: 23 Apr 2026 16:11:42.4981
 (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: SyP9VIEDA3wOFNpX11xewcI+jGgGx690b65XjIbY6HjOMJ7Oo6BVnzl/toOc8vXvO6rPKPB5radTyAlKCv4JxaaWSCICMZE+dUsZ2PM0yhA=
X-MS-Exchange-Transport-CrossTenantHeadersStamped: PA4PR03MB6752
X-purgate-ID: tlsNG-42698a/1776960706-07979F3B-924B5D52/0/0
X-purgate-type: clean
X-purgate-size: 1917

In exynos4210_uart_init_postirq(), when setup_irq() returns an error
the failure was only logged via dprintk() and execution continued,
unconditionally clearing UINTM and setting UMCON_INT_EN. This enabled
receive and transmit interrupt lines with no handler registered. On
platforms where the GIC receives these asserted lines, the result is
either repeated spurious-interrupt warnings or an unhandled interrupt
fault.

Add an early return in the setup_irq() error branch so that the
interrupt-enable writes to UINTM and UMCON are skipped when IRQ
registration fails.

Signed-off-by: Oleksii Moisieiev <oleksii_moisieiev@epam.com>
Reviewed-by: Michal Orzel <michal.orzel@amd.com>
---

Changes in v4:
- update comment on setup_irq
- change %d to %u since irq is unsigned in exynos
- add r-b

Changes in v3:
- skip clearing pending interrupts if setup_irq was failed because
according to the 13.4.1.13 of the RM: it must be cleared after
cleaning interrupt pending in INTC.

 xen/drivers/char/exynos4210-uart.c | 6 +++++-
 1 file changed, 5 insertions(+), 1 deletion(-)

diff --git a/xen/drivers/char/exynos4210-uart.c b/xen/drivers/char/exynos42=
10-uart.c
index 58901df554..7addc11c2c 100644
--- a/xen/drivers/char/exynos4210-uart.c
+++ b/xen/drivers/char/exynos4210-uart.c
@@ -199,8 +199,12 @@ static void __init exynos4210_uart_init_postirq(struct=
 serial_port *port)
     uart->irqaction.dev_id  =3D port;
=20
     if ( (rc =3D setup_irq(uart->irq, 0, &uart->irqaction)) !=3D 0 )
-        dprintk(XENLOG_ERR, "Failed to allocated exynos4210_uart IRQ %d\n"=
,
+    {
+        dprintk(XENLOG_ERR, "Failed to allocated exynos4210_uart IRQ %u\n"=
,
                 uart->irq);
+        /* Do not unmask interrupts if irq handler wasn't set */
+        return;
+    }
=20
     /* Unmask interrupts */
     exynos4210_write(uart, UINTM, ~UINTM_ALLI);
--=20
2.43.0


From xen-devel-bounces@lists.xenproject.org Thu Apr 23 16:12:00 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 23 Apr 2026 16:12:00 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1292413.1570906 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wFwem-0001Vj-Cz; Thu, 23 Apr 2026 16:12:00 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1292413.1570906; Thu, 23 Apr 2026 16:12: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 1wFwem-0001VW-7u; Thu, 23 Apr 2026 16:12:00 +0000
Received: by outflank-mailman (input) for mailman id 1292413;
 Thu, 23 Apr 2026 16:11:59 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <Oleksii_Moisieiev@epam.com>) id 1wFwel-0001Sy-2A
 for xen-devel@lists.xenproject.org; Thu, 23 Apr 2026 16:11:59 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wFwek-004X8B-Et
 for xen-devel@lists.xenproject.org; Thu, 23 Apr 2026 18:11:58 +0200
Received: from [10.42.69.3] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <Oleksii_Moisieiev@epam.com>)
 id 69ea44cd-5cb7-0a2a0a5109dd-0a2a4503b4ba-2
 for <xen-devel@lists.xenproject.org>; Thu, 23 Apr 2026 18:11:58 +0200
Received: from [52.101.65.82]
 (helo=DU2PR03CU002.outbound.protection.outlook.com)
 by tlsNG-33051d.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.1)
 (envelope-from <Oleksii_Moisieiev@epam.com>)
 id 69ea44ce-672d-0a2a45030019-346541523953-3
 for <xen-devel@lists.xenproject.org>; Thu, 23 Apr 2026 18:11:58 +0200
Received: from DU5PR03MB10263.eurprd03.prod.outlook.com (2603:10a6:10:519::5)
 by PA4PR03MB6752.eurprd03.prod.outlook.com (2603:10a6:102:ea::24)
 with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9846.21; Thu, 23 Apr
 2026 16:11:42 +0000
Received: from DU5PR03MB10263.eurprd03.prod.outlook.com
 ([fe80::8c9e:b301:61c0:3908]) by DU5PR03MB10263.eurprd03.prod.outlook.com
 ([fe80::8c9e:b301:61c0:3908%5]) with mapi id 15.20.9846.021; Thu, 23 Apr 2026
 16:11: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=WaMhlaGHLVRqRK1rmuiHLsU9FNN1BH3/EuraybNZrfFcbaJpltYvLQTBLiDagZxwZIxVmondjR1FVlPozOI51QTByf/GKmH3kGqvpss+xlyiZZCEBLwe0e+agJACjL+ucoxZgJUrQSahuBz8hrGE3tgISYWhOO0sIyv+eHjtIxQHIcECdj08WMxivIph/pJj7mt6tAySViP6x5BEAxHG7A39P98iFZvSUHx3QsHkqfII3TdfEmOciuTUJfUw1FjTvkMMYJBvaM+iHszULuIerYoxjKozg+NeZYXdYVYJHWnCpsi/7XUlci4U/dlplHGcfmwOomAY6Ui+WpA6TN/FEA==
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com;
 s=arcselector10001;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1;
 bh=mvr5mzI9zMbvHinWk6X4HXPCOg0zLvukpXSOGKW0FUg=;
 b=Cc3gTOxEaYjW9SdUCK5XJp5HlhokNH3rY5hLUHI3btX9UBu7VUV2hkQ7H/Gk3vhITz0o0rVbDVHYmEYZVTnSTz+lbj2DagJlRza2+pZVHIBxjTz6Tgr8rwbh3GyKDTKSs64Bq6eM32EBTiqCXn3w7338m4XzY1EUzwzUqpk9KzNFq7Edyl/zudEkM1Zk/qoImhHILtG/jDddTuT/rPnwAB84TOZJwnPuXMrDWqu6I07P8PpgkT89uIFIAISfGZx6YjkEw6tgk4YkZaRvmWk7TGWNinHKH9M3DnpPq4X3zEh+aNbROFX/0kQHnw6xjSTNhuaQM6m3ZNghPzn4Dw6HvA==
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=mvr5mzI9zMbvHinWk6X4HXPCOg0zLvukpXSOGKW0FUg=;
 b=frBAt8e3Y9CReptWl6YW0626v9tI5naQkpsSZmVdhKssjCkJffsiT5r15zBxUM4XeSzJ+jjuJv5UDrN6qAOQwXc51XJ9nmwaH/AWO10lfQenrJZfgBZfjUQElW/TOmOy+d56Yjf0zCc0H9UeigKJhJiDKNsFSXplPYR3/McNS0iXQSe3Nc5F7woC3jTK0cmyJg0yJ0a375povNVljP5zTY39zMk+cqkbfcUlMPUBSSHz9CpUtZA2cGXUS9DzZ0AR+/RYgCu5FQfgtLH8tO/DM02OIgeBNY6hzq+6lG66tYR/dKDXF5Pqpoyi4XZx8b4tvPLy+RirQYv7VjlcVMSLXA==
From: Oleksii Moisieiev <Oleksii_Moisieiev@epam.com>
To: "xen-devel@lists.xenproject.org" <xen-devel@lists.xenproject.org>
CC: Bertrand Marquis <bertrand.marquis@arm.com>, Julien Grall
	<julien@xen.org>, Michal Orzel <michal.orzel@amd.com>, Stefano Stabellini
	<sstabellini@kernel.org>, Volodymyr Babchuk <Volodymyr_Babchuk@epam.com>,
	Oleksii Moisieiev <Oleksii_Moisieiev@epam.com>, Oleksandr Tyshchenko
	<Oleksandr_Tyshchenko@epam.com>
Subject: [PATCH v4 3/4] xen/drivers/char/cadence-uart: fix IRQ registration
 failure propagation
Thread-Topic: [PATCH v4 3/4] xen/drivers/char/cadence-uart: fix IRQ
 registration failure propagation
Thread-Index: AQHc0zvfVnWwKQ/dg0SioeeuT3c8CA==
Date: Thu, 23 Apr 2026 16:11:42 +0000
Message-ID:
 <da5af37c01b39495aac11da15325236904c77a5c.1776960679.git.oleksii_moisieiev@epam.com>
References: <cover.1776960679.git.oleksii_moisieiev@epam.com>
In-Reply-To: <cover.1776960679.git.oleksii_moisieiev@epam.com>
Accept-Language: en-US
Content-Language: en-US
X-MS-Has-Attach:
X-MS-TNEF-Correlator:
authentication-results: dkim=none (message not signed)
 header.d=none;dmarc=none action=none header.from=epam.com;
x-ms-publictraffictype: Email
x-ms-traffictypediagnostic: DU5PR03MB10263:EE_|PA4PR03MB6752:EE_
x-ms-office365-filtering-correlation-id: 301c4b89-c713-4158-644d-08dea153021b
x-ms-exchange-senderadcheck: 1
x-ms-exchange-antispam-relay: 0
x-microsoft-antispam:
 BCL:0;ARA:13230040|1800799024|366016|376014|18002099003|38070700021|56012099003|22082099003;
x-microsoft-antispam-message-info:
 LQgckP5heoKs5Qw65LsHv1hFeOuexpPHetEvmGDCO2I4FefVSw7J9Z6186lXtToldrf5OPTqNYAugtoRGwXDq/ibFHvn28AcmDX3ozol0QwJdV0olwRBfOK6iaDAJ4blJD+/mky6QkqXPGxVpP2N8uL4Ugsqd2JqS6uyIeD1SLBsScfVGMZxb35qrWy8SbNByFPSK4toWpfXl3HxumrTVwilawXanCCUYc5IpYnUOE96v3AqKly5J+v3+iAYVoOrHXq7Qj45oazpRFvLXv+IIQLPeUh2/+omzpdBeyib9Ya43zmK4ZxP8ylLUGBXSdyi6ZyJ7Dj46RgNYvCcbqCm72ndcrtgUV3NRNFz9d5C94pzauhlO5JoINTZnQvyMzbDXvS8HA/PvWhWK4T3P+AoE5LOgSvNsjJ1IXUzFhux/TytIVvT/62dPNP6cFMgLo9SyQLR6T2ez+QlXBJFg9jPCX1/MdxIpUJPhMi67HbD7AX2ALhQF7uHwodTY4uT1SZJZ/bKICye0qncD9NDODvm7xE3imnADFqyy4lggpsv3yjKHBaxr6M1EpAaIpZwUy/CjAn7bCfMwOn7uh9qEwUTxoofvA7szFfnP622a8Xe79jXq9t5LoRbfaCMlmNtV+O66O8q4w87jLTZ+9EagDedJy3FO1GuNLuf3M6eRcyInV89JQW+9mjcwbBh+zVIMRlIdTeC5ySsOVT8PucMjSh+rKMkGi2YP4BOB6r+ZhF6MHCYR5koHtWTmjS1Zh5CEvgDzfuIorI/KzYyXRR9QYhGtUFHFmE6FVCQiCVvxTmKmBI=
x-forefront-antispam-report:
 CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:DU5PR03MB10263.eurprd03.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(1800799024)(366016)(376014)(18002099003)(38070700021)(56012099003)(22082099003);DIR:OUT;SFP:1102;
x-ms-exchange-antispam-messagedata-chunkcount: 1
x-ms-exchange-antispam-messagedata-0:
 =?iso-8859-1?Q?jvKcKlgrBDhh6UEv87etZNSRXnk1JIb7/qPPBw6RUNw+EaZMOycCyA8Kdm?=
 =?iso-8859-1?Q?bXFNEWXUKxWBM1viFi4mpyVmlW3CBjhh96i6IqB2Nm1hk97TlNI5T+QuL1?=
 =?iso-8859-1?Q?5KBAR3jeFvZt7nDiit3JZpnsLOiCyRsNTZCGcO49AokGIa+yrKVh7Y2We7?=
 =?iso-8859-1?Q?AghLRUCT+2NtXqYjoXRJnM8g49blCTKj4GFZAhTzvtWfVkC8eIUdDEYzpP?=
 =?iso-8859-1?Q?ab5KJR/YyRcRIuuLa28/ufrSGZRKOyOACboi8I9zGxY2dGcaoQTzqDpREH?=
 =?iso-8859-1?Q?H2brTfA6ZAmPXmcy2I/AS/Cy6kqCKq0o1zWI1ZmJF6L9nIitU9R29Cqrvi?=
 =?iso-8859-1?Q?DDxBkXz3B8ZyrUtHyJXOzeSGbt45Z4aRhQZmq98SOk07OiVgwXTMuLcIfd?=
 =?iso-8859-1?Q?a4z3Rzx2VMNxWTukWH5mtAO111BhWt6xrn4zbjveolEIHmSAJL+/XS0Pkr?=
 =?iso-8859-1?Q?PftojvC+4ocyvcZR27cUb7Gxf5pY2EfjmedxC4k5BCGpFef84d2JcuqCkA?=
 =?iso-8859-1?Q?D/BhbN20xIX5N8Fk7o1MlUAwFcS6gsJpOqsBT+U0vUtdAkEQC1BvwOQnDO?=
 =?iso-8859-1?Q?IerYn8HAKyEZVT4GVyIWxqAQgp/cX9ul7Hd2/pZ0NPHzJBRIM2Vy6u/nfq?=
 =?iso-8859-1?Q?zGQcuYVUAx76V1nZJgGZPOuK/vPLoIgAVcxLqVWD3xBMDZGX72ANzHHPbM?=
 =?iso-8859-1?Q?wNyMgcY/Pb9GubodAxqssZoZMWal6yuOSLPMVLHhLRq2oczX5WfzKxarYa?=
 =?iso-8859-1?Q?Yu5115eVzgT6J8wXJ3Qp4+jF8B38rGdnoswNHZzxIon9SFitvk7YLqpGjZ?=
 =?iso-8859-1?Q?UrQAEIB50n7pFrwRXRetXz2/jd3FFZPBbwYIgIYojz7wZDemOk9WTAZUt9?=
 =?iso-8859-1?Q?dCVDvaS52ubOuuomkCtAd2CEGF8fYyOlBCmGC2fIyJGO/XSrhKaAYOA5yP?=
 =?iso-8859-1?Q?nQw/gjaDXLxosu2DeMkShaEMCXXngfaXakKgUbIh5UTazn8jb3cVmwriT3?=
 =?iso-8859-1?Q?CA6juof1yO9DATvYWXj2C1umeeV+R8iSFtabC5ow1DFffFvRB9l/oryyAS?=
 =?iso-8859-1?Q?sEbGHNjelsZWdzw131bwk9XfLYrDbHBNqxrh5dD2BAy3JOvodisvHHjgRR?=
 =?iso-8859-1?Q?/1aM5xhpjdXsak4gpbRye4WNIdT1d3SyNUf66OMbjoUFe8RCB7BTCjlqsW?=
 =?iso-8859-1?Q?KoG+j9Bk7aauEoCXuLv9AnxZd1i9eyde6AETiZXWJGTQVJrkA1rXPwVXFs?=
 =?iso-8859-1?Q?Z2r8d5+teCPNaFizdzJQTg8kp/ws8loLBbvzK0BBFUX1kfOrnnFMIeWM94?=
 =?iso-8859-1?Q?Lmr5ERu/CpFqYo6YXGEwUiLTQ6YExKL40wnb9/Z32KF3zw4MPt9prgt+Hr?=
 =?iso-8859-1?Q?E92XtKunJk4yG9rq5myMHi6MlDhKIz29jjOjHkiPl9tYh3oXoL43cVtKha?=
 =?iso-8859-1?Q?p6Ak5nSTz2yYZlhSOoPV+WK4qImCdn6nlSpVhoJQHjzlHGj36CcUfhUosn?=
 =?iso-8859-1?Q?F8NRB+7zw1eHQztlJlKNIqB0wwfMAn1V9m6Sidx851FeWjpLBrfF1Fsoza?=
 =?iso-8859-1?Q?dO72bwoYI46tQlXLH9+xm7iKaOGgfh/LI311gDfbnATyjFRDHZ1/EaHPmR?=
 =?iso-8859-1?Q?GBzciLJF+mz6TOsF7AeGw3u7DKZ7xb3wYp7lrlTzCgVCYXMVhGyi45yg+F?=
 =?iso-8859-1?Q?mIBvoq5s4qlTfyBCUEqCQ2MbF/Z8TeoMGj+wQ+qcX4+au7XlSM8MXrdzt1?=
 =?iso-8859-1?Q?FxqC1LVyJjZDNHoXKusr8bcZepMoAnOkWsYmR3OC9GxIh5fMZj6Fa8+Kp4?=
 =?iso-8859-1?Q?QrTZoiWoztncMyCdYjRAiJQ2O7eRAM8=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: DU5PR03MB10263.eurprd03.prod.outlook.com
X-MS-Exchange-CrossTenant-Network-Message-Id: 301c4b89-c713-4158-644d-08dea153021b
X-MS-Exchange-CrossTenant-originalarrivaltime: 23 Apr 2026 16:11:42.2002
 (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: PmwOBkVQ0B4+RR4dLsLU9a71VTZJNIakFLnZvuJUm6jjeiMqxmrBmbQzMDpdwXLAxdopvH7KJlUJOSS5bcs6uQtlm8SonX8a9hdIqp/yCPg=
X-MS-Exchange-Transport-CrossTenantHeadersStamped: PA4PR03MB6752
X-purgate-ID: tlsNG-33051d/1776960718-2B161938-A244AA8A/0/0
X-purgate-type: clean
X-purgate-size: 2817

In cuart_init_postirq(), two code paths could reach the
interrupt-enable write to IER without a handler being registered:

- When no valid IRQ number was provided (uart->irq <=3D 0), the original
  positive-condition guard (if uart->irq > 0) skipped the irqaction
  setup but still fell through to the IER write, enabling the receive
  data interrupt with no handler installed.

- When setup_irq() returned an error, only an error message was
  printed and execution continued to the IER write, arming the
  receive hardware interrupt line with no handler to service it. On
  platforms where the GIC receives this asserted line, the result is
  either repeated spurious-interrupt warnings or an unhandled
  interrupt fault.

Restructure cuart_init_postirq() to use early returns in both error
paths.

Signed-off-by: Oleksii Moisieiev <oleksii_moisieiev@epam.com>
Reviewed-by: Oleksandr Tyshchenko <oleksandr_tyshchenko@epam.com>
---

Changes in v4:
- fix %d to %u since irq is unsigned in cadence uart
- add R-b

Changes in v3:
- clear pending error interrupts before setup_irq call for cadence uart
- change uart->irq <=3D 0 to uart->irq =3D=3D 0 since irq is unsigned

 xen/drivers/char/cadence-uart.c | 22 ++++++++++++++--------
 1 file changed, 14 insertions(+), 8 deletions(-)

diff --git a/xen/drivers/char/cadence-uart.c b/xen/drivers/char/cadence-uar=
t.c
index b2f379833f..0f1c3dd461 100644
--- a/xen/drivers/char/cadence-uart.c
+++ b/xen/drivers/char/cadence-uart.c
@@ -72,19 +72,25 @@ static void __init cuart_init_postirq(struct serial_por=
t *port)
     struct cuart *uart =3D port->uart;
     int rc;
=20
-    if ( uart->irq > 0 )
-    {
-        uart->irqaction.handler =3D cuart_interrupt;
-        uart->irqaction.name    =3D "cadence-uart";
-        uart->irqaction.dev_id  =3D port;
-        if ( (rc =3D setup_irq(uart->irq, 0, &uart->irqaction)) !=3D 0 )
-            printk("ERROR: Failed to allocate cadence-uart IRQ %d\n", uart=
->irq);
-    }
+    /* Don't unmask interrupts if no valid irq was provided */
+    if ( uart->irq =3D=3D 0 )
+        return;
+
+    uart->irqaction.handler =3D cuart_interrupt;
+    uart->irqaction.name    =3D "cadence-uart";
+    uart->irqaction.dev_id  =3D port;
=20
     /* Clear pending error interrupts */
     cuart_write(uart, R_UART_RTRIG, 1);
     cuart_write(uart, R_UART_CISR, ~0);
=20
+    if ( (rc =3D setup_irq(uart->irq, 0, &uart->irqaction)) !=3D 0 )
+    {
+        printk("ERROR: Failed to allocate cadence-uart IRQ %u\n", uart->ir=
q);
+        /* Do not unmask interrupts if irq handler wasn't set */
+        return;
+    }
+
     /* Unmask interrupts */
     cuart_write(uart, R_UART_IDR, ~0);
     cuart_write(uart, R_UART_IER, UART_SR_INTR_RTRIG);
--=20
2.43.0


From xen-devel-bounces@lists.xenproject.org Thu Apr 23 17:52:33 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 23 Apr 2026 17:52:33 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1292523.1570947 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wFyDs-0002YL-JR; Thu, 23 Apr 2026 17:52:20 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1292523.1570947; Thu, 23 Apr 2026 17:52: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 1wFyDs-0002YE-GP; Thu, 23 Apr 2026 17:52:20 +0000
Received: by outflank-mailman (input) for mailman id 1292523;
 Thu, 23 Apr 2026 17:52:18 +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.19dbb7885c7000f373@swg.vates.tech>)
 id 1wFyDq-0002Y8-1J
 for xen-devel@lists.xenproject.org; Thu, 23 Apr 2026 17:52:18 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wFyDn-0026Y1-SU
 for xen-devel@lists.xenproject.org; Thu, 23 Apr 2026 19:52:17 +0200
Received: from [10.42.69.4] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1) (envelope-from
 <prod-mta-13.8631fc262581453bbf619ec5b2062170.19dbb7885c7000f373@swg.vates.tech>)
 id 69ea5c1f-5cb7-0a2a0a5109dd-0a2a4504c55c-36
 for <xen-devel@lists.xenproject.org>; Thu, 23 Apr 2026 19:52:16 +0200
Received: from [185.255.28.34] (helo=prod-mta-13.swg-srv.net)
 by tlsNG-ebf023.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.1)
 (envelope-from
 <prod-mta-13.8631fc262581453bbf619ec5b2062170.19dbb7885c7000f373@swg.vates.tech>)
 id 69ea5c4f-1dec-0a2a45040019-b9ff1c22b0b3-3
 for <xen-devel@lists.xenproject.org>; Thu, 23 Apr 2026 19:52:16 +0200
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
 19dbb7885c7000f373.003 for <xen-devel@lists.xenproject.org>
 (version=TLSv1.3 cipher=TLS_AES_256_GCM_SHA384);
 Thu, 23 Apr 2026 17:52:11 +0000
Received: from [192.168.1.200] (lfbn-mon-1-1130-120.w90-48.abo.wanadoo.fr
 [90.48.233.120]) (Authenticated sender: thierry.escande)
 by mail2.vates.fr (Postfix) with ESMTPSA id 5D9BC86AED;
 Thu, 23 Apr 2026 19:52:10 +0200 (CEST)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@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=svyh7iABzxNWCIFS+Y8B4puT50eckbDbd1zj5xN4dF4=;
 h=from:subject:date:message-id:to:cc:mime-version:content-type:in-reply-to:references:feedback-id;
 b=LwB4qYqTBBllwaefrBVZqywImaNvR1duENNhbyE8McNl1gsBG3CUCU061ClChwBf3d0IqQcAh
 u4AWR6waK2fN5ACx/ArOFfxKqsm+WP5TCrdMHqA3Rdlac2DFBrf8nTKdvlyCvZSQ0KlFf34GZCF
 5mOd1E9Thr3VotCH/VkHXnprHZ/0qPDzgcf10ZoIKokumiIzjtv5TTqFWNpdoz5t2vxdsSbCbcK
 +kUAHvLlDfuCkvSblLltUSSGNa/odRBrXjZuHITT8LPwvN+MGOAvyj3z0Jtn4PEf+mSg4aEeOkp
 Cu+Kukrga1YYDStxk/Q0Uo5Wyv+KHG5nvPiPDhLFjvPA==
X-Zone-Loop: 32f2c00c9b7d3cf44e56917fcd66f2df1a35843bb680
x-campaign-type: default
x-transaction-id: bf7e314c-f043-4937-a57c-e22cac454199
x-swg-uid: 01-2e9171f1-d310-4d4e-abe9-06a1025971dc
X-Mailer: Sweego
Message-ID:
 <1776966731.8631fc262581453bbf619ec5b2062170.19dbb7885c7000f373@vates.tech>
x-swg-bid: 1776966731.8631fc262581453bbf619ec5b2062170.19dbb7885c7000f373
Feedback-ID: default:8631fc262581453bbf619ec5b2062170:Sweego
x-campaign-id: default
x-client-id: 8631fc262581453bbf619ec5b2062170
X-Originating-IP: [37.26.189.201]
Date: Thu, 23 Apr 2026 19:52:09 +0200
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [RFC PATCH v4 0/6] xl: Allow PCI devices to be passthrough'd via
 Qemu command line
To: Oleksii Kurochko <oleksii.kurochko@gmail.com>,
 xen-devel@lists.xenproject.org
Cc: Anthony PERARD <anthony.perard@vates.tech>,
 Juergen Gross <jgross@suse.com>, =?UTF-8?Q?Daniel_P_=2E_Berrang=C3=A9?=
 <berrange@redhat.com>,
 =?UTF-8?Q?Marek_Marczykowski-G=C3=B3recki?= <marmarek@invisiblethingslab.com>
References: <1776955586.8631fc262581453bbf619ec5b2062170.19dbace7684000f373@vates.tech>
 <317cac0b-854f-433b-8242-d498cdba6d63@gmail.com>
Content-Language: en-US
From: Thierry Escande <thierry.escande@vates.tech>
In-Reply-To: <317cac0b-854f-433b-8242-d498cdba6d63@gmail.com>
X-BM-Disclaimer: Yes
Content-Type: multipart/alternative; boundary="-=Part.27a4.39131a8643359abe.19dbb788311.650115a9ec2631f4=-"
X-Bm-Milter-Handled: 4ffbd6c1-ee69-4e1b-aabd-f977039bd3e2
X-Bm-Transport-Timestamp: 1776966730513
X-purgate-ID: tlsNG-ebf023/1776966736-4B3673FF-38DAFA4B/0/0
X-purgate-type: clean
X-purgate-size: 4499

---=Part.27a4.39131a8643359abe.19dbb788311.650115a9ec2631f4=-
Content-Type: text/plain; charset=utf-8
Content-Transfer-Encoding: quoted-printable



On 4/23/26 17:20, Oleksii Kurochko wrote:
>=20
> On 4/23/26 4:46 PM, Thierry Escande wrote:
>> This series adds new 'hotplug' option for PCI device passthrough=2E
>>
>> The current mechanism for device passthrough uses QMP device_add comman=
d
>> to hot-plug PCI devices to the guest Qemu instance=2E This is an issue =
for
>> guests running on Q35 chipset (preliminary support posted at [1])
>> since the
>> Q35 PCI root bus does not support hotplug=2E Devices could be hotplugge=
d to
>> a secondary PCI bus but Xen only support 1 PCI bus for now=2E
>>
>> The 'hotplug' option allows to control how devices are attached to the
>> guest, either by using the legacy QMP mechanism (this is the default)
>> or by
>> passing them directly to the Qemu command line using xen-pci-passthroug=
h
>> device=2E
>>
>> Example usage in cfg file:
>> =C2=A0 pci =3D [ "00:03=2E0,seize=3D1,hotplug=3D0" ]
>>
>> Since Qemu -device option accepts parameters in json format, this
>> patchset adds a new internal function
>> libxl__device_pci_get_qapi_json() that
>> generates the device json object used for both QMP hotplug and command
>> line
>> passing=2E
>>
>> Also, to handle the assignable PCI device list, the function
>> libxl_pci_assignable() is renamed as libxl_device_pci_assignable() and =
is
>> made available from libxl=2Eh for access in libxl_dm=2Ec=2E 2 other
>> functions are
>> also exported internally: libxl__pciback_dev_is_assigned() and
>> libxl__device_pci_assignable_add()=2E
>>
>> This has been successfully tested on Xen 4=2E22-dev and Qemu 10=2E0 run=
ning
>> Debian VMs in both Bios and UEFI mode with a passthrough'd nvme disk=2E
>> Disabling the hotplug mechanism might be made mandatory for Q35 machine=
s
>> later, once Q35 support is merged upstream=2E
>>
>> [1] https://lore=2Ekernel=2Eorg/xen-devel/20260313163455=2E790692-1-
>> thierry=2Eescande@vates=2Etech/
>>
>> Changes in v2:
>> =C2=A0 - Add support for YAJL json parser
>>
>> Changes in v3:
>> =C2=A0 - Move code block of device command line parameters creation
>> =C2=A0 - Better handling of pci device assignation
>>
>> Changes in v4:
>> =C2=A0 - Split the refactoring parts of the 2nd patch
>> =C2=A0 - Extend libxl__json_object_to_json() and use it to generate the
>> qapi json
>> =C2=A0=C2=A0=C2=A0 string
>>
>> Thierry Escande (6):
>> =C2=A0=C2=A0 xl: Add an hotplug option for PCI device passthrough
>> =C2=A0=C2=A0 libxl: Refactor some PCI device handling functions
>> =C2=A0=C2=A0 libxl: Add libxl__device_pci_get_qapi_json() internal API
>> =C2=A0=C2=A0 libxl: Extend libxl__json_object_to_json() prototype
>> =C2=A0=C2=A0 libxl: Allow PCI device passthrough using -device Qemu com=
mand line
>> =C2=A0=C2=A0 docs: provide description for pci hotplug option
>>
>> =C2=A0 docs/man/xl-pci-configuration=2E5=2Epod | 17 +++++++++
>> =C2=A0 docs/man/xl=2Ecfg=2E5=2Epod=2Ein=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=
=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 |=C2=A0 6 +++
>> =C2=A0 tools/include/libxl=2Eh=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=
=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 |=C2=A0 1 +
>> =C2=A0 tools/libs/light/libxl_dm=2Ec=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=
=A0=C2=A0=C2=A0 | 33 +++++++++++++++++
>> =C2=A0 tools/libs/light/libxl_internal=2Eh=C2=A0=C2=A0 | 12 +++++-
>> =C2=A0 tools/libs/light/libxl_json=2Ec=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=
=A0 | 11 +++++-
>> =C2=A0 tools/libs/light/libxl_pci=2Ec=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=
=A0=C2=A0 | 57 ++++++++++++++++++++---------
>> =C2=A0 tools/libs/light/libxl_types=2Eidl=C2=A0=C2=A0=C2=A0 |=C2=A0 1 +
>> =C2=A0 tools/libs/util/libxlu_pci=2Ec=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=
=A0=C2=A0 |=C2=A0 2 +
>> =C2=A0 tools/xl/xl_parse=2Ec=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=
=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 |=C2=A0 5 +++
>> =C2=A0 10 files changed, 123 insertions(+), 22 deletions(-)
>>
>=20
> I think we also want to add an item to CHANGELOG=2Emd that it is possibl=
e
> to passthrough PCI device via QEMU command line=2E

Sure, will do=2E

Thanks,
Thierry

> Thanks=2E
>=20
> ~ Oleksii



-- 
Thierry Escande | Vates XCP-ng Developer

XCP-ng & Xen Orchestra - Vat=
es solutions

web: https://vates=2Etech
---=Part.27a4.39131a8643359abe.19dbb788311.650115a9ec2631f4=---


From xen-devel-bounces@lists.xenproject.org Thu Apr 23 19:05:36 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 23 Apr 2026 19:05:36 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1292580.1570956 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wFzMZ-0005mj-Le; Thu, 23 Apr 2026 19:05:23 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1292580.1570956; Thu, 23 Apr 2026 19:05: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 1wFzMZ-0005mc-Ig; Thu, 23 Apr 2026 19:05:23 +0000
Received: by outflank-mailman (input) for mailman id 1292580;
 Thu, 23 Apr 2026 19:05:21 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <roger.pau@citrix.com>) id 1wFzMX-0005mV-8b
 for xen-devel@lists.xenproject.org; Thu, 23 Apr 2026 19:05:21 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wFzMW-002tny-FV
 for xen-devel@lists.xenproject.org; Thu, 23 Apr 2026 21:05:20 +0200
Received: from [10.42.69.6] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <roger.pau@citrix.com>)
 id 69ea6d53-5cb7-0a2a0a5109dd-0a2a4506d3c8-34
 for <xen-devel@lists.xenproject.org>; Thu, 23 Apr 2026 21:05:20 +0200
Received: from [40.107.201.66]
 (helo=CH4PR04CU002.outbound.protection.outlook.com)
 by tlsNG-16d1c6.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.1)
 (envelope-from <roger.pau@citrix.com>)
 id 69ea6d6e-7371-0a2a45060019-286bc942a7d3-3
 for <xen-devel@lists.xenproject.org>; Thu, 23 Apr 2026 21:05:20 +0200
Received: from CH7PR03MB7860.namprd03.prod.outlook.com (2603:10b6:610:24e::14)
 by CH4PR03MB7724.namprd03.prod.outlook.com (2603:10b6:610:244::16)
 with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9846.21; Thu, 23 Apr
 2026 19:05:16 +0000
Received: from CH7PR03MB7860.namprd03.prod.outlook.com
 ([fe80::f5ba:35df:1c9f:b343]) by CH7PR03MB7860.namprd03.prod.outlook.com
 ([fe80::f5ba:35df:1c9f:b343%4]) with mapi id 15.20.9846.019; Thu, 23 Apr 2026
 19:05: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=D/lqSSAD1xhAl+wcPEE2LSIyfroVauP8Bny0zSEvtHkzd/Lm0MbzC29lnv0qw/oZDVTFssrXWZ7WOhN2wUgr0RGgqk2zUx8doAmY3GZe5nAeuy5RJdHbO+mqvB0wBbBtXUFuyNw0SzPhBM/tbTVqjc0rSStox/XFiFfOndPKKcw/z2tU21HwqYjx4w5LAjg1V4dj/IaeqRz6WqevKd4u+CC4PT+F+wK9FVxsSopTM8hTnhVmPVSxLTALuVD4DJTot8QEreDrG8iQhCfEKonwpTzQtoEBp5eiU29AzVkHWg/YW3S0UC6oh5M+DDoARBUZRv3xz5ldGnGkDkOny8iOLw==
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com;
 s=arcselector10001;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1;
 bh=TT4SKwuDeacSLN/BvcsFT0MhedM6/CopzU9IpsvlNhU=;
 b=XUjUCpT4ct2aRuTFZU7xb3jS7H8wsufv9Co5mixYYzyObF8XZQfWMpLIAhuMg6iJpVWlVnApowUJR0KYVgrw7KXjDQ2i/Z1fFzOcUnzoghr9QxMx3Q2ezxdJPjobWSkB5GaRl3s6cULjQoCfcyp4NUzgLj3UKozD6WjpiYnWEgHRo6QbP0hif40eZOKBIZs3VxN5JomMvZujXXPPkTdW1krL9nI/B27w9IlsJxsTJ0ikWq0nkt/PG3VtW+qHuae8P7JuXmaDOOFFL/45q4xZZ/7UvMvzW2ClqNFL3YYhRFqNWFGIaefDQnWDEY+/sJ2dlrOFW7InByq3tD127e7zPQ==
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=TT4SKwuDeacSLN/BvcsFT0MhedM6/CopzU9IpsvlNhU=;
 b=kpb4gUKqF6XOUlw6PKM7geWVa+HLPcOhsEJtim9jWbH12hHfaTpFRR34I3WKZmW3WXXpLfCSiTQ+EK0/GRUT0S22O6zF2UHv3BHo06WxGkje1SgJrAJZJuAcCxtG5S1Ek6ppKSoPuAhtB6livF2pFwiIakvgqm9kfa9xynZ82v0=
Authentication-Results: dkim=none (message not signed)
 header.d=none;dmarc=none action=none header.from=citrix.com;
From: Roger Pau Monne <roger.pau@citrix.com>
To: xen-devel@lists.xenproject.org
Cc: Bertrand Marquis <bertrand.marquis@arm.com>,
	Roger Pau Monne <roger.pau@citrix.com>,
	Doug Goldstein <cardoe@cardoe.com>,
	Stefano Stabellini <sstabellini@kernel.org>
Subject: [PATCH] automation/gitlab: introduce macOS build jobs
Date: Thu, 23 Apr 2026 21:04:59 +0200
Message-ID: <20260423190459.93299-1-roger.pau@citrix.com>
X-Mailer: git-send-email 2.53.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
X-ClientProxiedBy: MR1P264CA0137.FRAP264.PROD.OUTLOOK.COM
 (2603:10a6:501:51::21) To CH7PR03MB7860.namprd03.prod.outlook.com
 (2603:10b6:610:24e::14)
MIME-Version: 1.0
X-MS-PublicTrafficType: Email
X-MS-TrafficTypeDiagnostic: CH7PR03MB7860:EE_|CH4PR03MB7724:EE_
X-MS-Office365-Filtering-Correlation-Id: ae05a6a8-8971-4ce7-41d2-08dea16b40c9
X-MS-Exchange-SenderADCheck: 1
X-MS-Exchange-AntiSpam-Relay: 0
X-Microsoft-Antispam:
	BCL:0;ARA:13230040|366016|1800799024|376014|18002099003|56012099003;
X-Microsoft-Antispam-Message-Info:
	nhWViy3buhAySxvO/3TYrS/36Bv5ViWmZXCugIMw54QIwHkSk1mZTtnP0uGuNS1+3tIn/WY9Tfe0UIoWHYumLpGx5OkRTNa/RY/nW+pkqtGg6y+Sgkxiop8gYvDp/zH06QZLX5vev0kKvW36SndVfIEMa0IZFiiCmxTIGD5Gl/enZnOPFoGALOyiSX7+f/e4YU5m0m5z49NR6JcB+bnN2wrPBkHlBJyIR7QEnPTNdh9kcLVB96Z4lYD1Hd9TPX7f4ijhqGWZWP5bsiT+c/TvxgDSv1edgt9N5Gz+6SRkAZxHCBnP/m5iBXi8OxoyClz3MRMaHDXs7FkgJUXVf/ichO/70okl4vZe9SAfWbB6Fq0QMtH2dMuAlT0kLM6dK0hKGqS/ubnllKtEz5cvG8ji4lDuveUbMA/2Ad6Cdca4N+iHU3Nloi69FEOzaA3qjJCbhfTuCb8bRn4EJevo8hbjC/QGp08sLppQBKTBlEZ8VXChp14tZkMElH2U1EAuQ2W8IywI4+2AJDULXGgM5UcQwtFI1fbacGQEN7EA8mYoU2woo51gcEKm0hmAAP33Hb8AVgcOVqt7ieA5sT1GTPGpOdcr3/oXEVwsdjBFR+wuOmrP8dSQbXDCwi+Uzzp8jiawsF7l2gpvzJ0vjMH9GNp0oj+MOPnt1xHX9LqRODETtE9zEQcHqgB01XVbDiwkLJ7/JuilSc8zo8rbvksSwuJ3Bw==
X-Forefront-Antispam-Report:
	CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:CH7PR03MB7860.namprd03.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(366016)(1800799024)(376014)(18002099003)(56012099003);DIR:OUT;SFP:1101;
X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1
X-MS-Exchange-AntiSpam-MessageData-0:
	=?utf-8?B?MmFDUzZjdkx3aEsyODhyVnk4ZkRtalR4L1poYjZRYXJSQVE3SjZvZHpqZnZB?=
 =?utf-8?B?cUQ5R3l0bGVuTTIzNkFxTjNxV0pDVUN5OVNVajhoZUFlRitrSjA4TDVPYWwz?=
 =?utf-8?B?b0FmcWQzTVA3N3JtcERQSGFXVkp2d3pwL3czb3p1Sk1CT2wzdEdQWjJ0VHJ6?=
 =?utf-8?B?ZGkwZ0ptNStxQVZVVUVxN1ZxNHdRTjVKSW5IR280YjdzWkNYZVlQNUpTVDBL?=
 =?utf-8?B?NGQxZTYxK3hIRGMrQmtFcE1JVmdENUVDRVBtK1AzWC83aGJib3ovWmN6V3Bx?=
 =?utf-8?B?QzdrczFQWFBuVGJJbFRiSTlPU1U1ZXRzTFJEVkRjNHQyMDNhWTQydTFJMk9k?=
 =?utf-8?B?amdOY2xUbHVHTndvVGFHUk02dWhod3NRMkhuNGVUM3BZMGN2cDZia0pHUlJv?=
 =?utf-8?B?bWFaRDNRNFlvajRkbExxMGR2cHNkZDE2b3lUaG02U0hlSjkrcERQR1I3U3pS?=
 =?utf-8?B?R052ckRQRytJRG8vZHc3c0hUSkkwanlZYTdqMVNOcU9BTy9MSGhQWHVycEc0?=
 =?utf-8?B?MG10VDNyTStGMUc2M21YdUJSZ3VQMjRVV2JjVmF0N0NLdi9XQkFXaFdhNHRh?=
 =?utf-8?B?L2E4YU5VVWtJejlHNCtyUFZFRDFTa0xOQmJmWUJaTnY5eENTV0ZQMk83anly?=
 =?utf-8?B?Ykc0akhrR3NRYTNYUEx5STFXRXpEWFVEcytwcFJablo3QnJxS0hRalVlSkly?=
 =?utf-8?B?Rm5HazI0WlBrMElGekM3SGpQWWVvUitnUVQvbWJNc2JOdWVNWU9LbHJ2U2ta?=
 =?utf-8?B?ZGVoUStvL0dRR3VHQnNnVnZ5TGsrV0gvTXBzVHhNNGFrendacThNN1JsRmo0?=
 =?utf-8?B?bFNEWTU3WW9YNEMwY01YWFdXZnhxLytoNUEwRjhJTlQ3SlVSNzBweTdXY1c1?=
 =?utf-8?B?eDFJdmU4ZTRFRlB2czgzYkxTMEdCUVd6RUtlRDBvVnFSQjhyUm5nRHFPa0Nm?=
 =?utf-8?B?cWIzWlo4L2kxTmVHMkJ4d0lQZnlCQzQydFhJL3lxbmpCZlVidS9LVU5ZYm1O?=
 =?utf-8?B?Y1ZHNUU5cllOdDFJTloyVWlYUGorNXdhVXFPU0MycWJ1ZDRDaDlKZFh1MC9t?=
 =?utf-8?B?R0tNU3RKaGxmYkR2Z0t1cnZETk1iaW1BRnZmTlJaa2hvNzU5ZC8yVEtHWnJk?=
 =?utf-8?B?QXl0aTR6Mk9ZdWovYkUyQ0xDekRjdjJEZDNaTlRjaDhXUEpjZWIyeVBZKy9j?=
 =?utf-8?B?Z2g3bTl0a21qcTZkemVvSTgrdnN0QnFjYnZicEg3aUNxWEJYcXo5K29sdVpP?=
 =?utf-8?B?RWpXVmNNRnI3S1c0MjNwdEN6S2FCVDhGYTBQd3RZMkN3MHlFUVZpekFJU2lj?=
 =?utf-8?B?TU9PNXBhOC9IdjRUck1RRmVPcVJxTDFNaFQ2ZTc4cU0yMmZwUHBHRE8vOTRo?=
 =?utf-8?B?UFBram0vWThhVE1HcU5rZ2dNV2hjbzJhdG00OTlFNmU2bERxeVNSb0k0QWhX?=
 =?utf-8?B?QzJBdkNkVyt5QlNDRm13Nk5USkRaRGV3elNVQWlaZVFaVEpMRm5iV2NZbkdj?=
 =?utf-8?B?STRKdGtTTCs0TWxUVCtNVzNQWG1abGE1SDRpeUI0MXhjaUZjVVlUZXZGUUVp?=
 =?utf-8?B?WTRwVDc4Q2dTRWFZcXVYZytpWGo1RXBwMlNVb0xlTk5pYkNKcFozTUtBYU1L?=
 =?utf-8?B?REhsU3NBNkhzd09ZUkNETW9RM3oxeG03NE1ZT1BJMm4wa1BOVGNld293dWhl?=
 =?utf-8?B?dVhYQ29uMEdQdU1FM2FIdGcyRmJCdnhtanlBbEVxZjNEZS9YWUx0OXpDVjBt?=
 =?utf-8?B?aDhid0pMZFkzWjBoVmJyZW4yMjZ5WjRyeVZWd20vN0l2TDNrbGo4UklGN1Qv?=
 =?utf-8?B?bS9UWGt1eHlNMGJZcjdkN2FWYmxCbDZLdXAyRk5VNU5KOVdWQzlLbmN3Uks5?=
 =?utf-8?B?aFZ6bzJOZG5OaTJvRnRwbkVScmxkZ1N3dmd0UDMyWHdPQm1lNTR2RkRDYVpT?=
 =?utf-8?B?VnNBZGZFNWpuK3ZkRUoyRlVuYkNqOTk4d1pRT1hZVlhtOGIzNEVxbEpucVcx?=
 =?utf-8?B?Ny90TnkzVWpjVjNYWkNSQmJQOWdMRFNhd3VXREFtckJCaFRHL3lTaWVFODha?=
 =?utf-8?B?MlJTTWMzZXE2d0NUeXUwS0FHT2ZEckR5c1Z6dUpzM3NRQW5hcFZwcTd5UmU0?=
 =?utf-8?B?c0lXOCtLVWxzZHBMcUc2YVV1bjZMUk44czhobVNnMEpXL09hL0tGY1UwaFB4?=
 =?utf-8?B?K2dwd3JPRktPaU1pSDUxVStaVkFYRjRLeFh6RWJqbzBCSXFSK3pkZlVUc3Nn?=
 =?utf-8?B?WTZTWDBDWDRNUnE2QjBWaG5SMEhHd2FtaXpWSVJDMDljN3FPOTRyQUJNQ3JK?=
 =?utf-8?B?MlVKN3FrRGpsdDAveU8wQXhheXlVeHJ6RHFxV01vdnhPT0M5eDROdz09?=
X-OriginatorOrg: citrix.com
X-MS-Exchange-CrossTenant-Network-Message-Id: ae05a6a8-8971-4ce7-41d2-08dea16b40c9
X-MS-Exchange-CrossTenant-AuthSource: CH7PR03MB7860.namprd03.prod.outlook.com
X-MS-Exchange-CrossTenant-AuthAs: Internal
X-MS-Exchange-CrossTenant-OriginalArrivalTime: 23 Apr 2026 19:05:15.6467
 (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: CHK72Xi6WxXDbx+Cx+Lh/96GvOPe3j7muERVgpriPfEv1b/f4NjnI75vKQuMvuujypPnAOU2tJExPVNjo9jvDA==
X-MS-Exchange-Transport-CrossTenantHeadersStamped: CH4PR03MB7724
X-purgate-ID: tlsNG-16d1c6/1776971120-51D6AD75-B9379BC7/0/0
X-purgate-type: clean
X-purgate-size: 1962

With the imminent decommission of CirrusCI we will lose the limited macOS
build testing done there.  Introduce two Gitlab macOS build jobs that
reproduce the ones present on CirrusCI.

According to the "Community programs" Gitlab documentation [0] we get
50,000 compute minutes per month.  The arm64 job takes ~1m 15s, and the
x86_64 one ~2m.  I think it's likely enough given the amount of minutes we
have available.  We might need to reconsider if we add more tasks that
consume compute minutes.

[0] https://docs.gitlab.com/subscriptions/community_programs/#gitlab-for-open-source

Signed-off-by: Roger Pau Monné <roger.pau@citrix.com>
---
Example jobs at:

https://gitlab.com/xen-project/hardware/xen-staging/-/jobs/14064832403
https://gitlab.com/xen-project/hardware/xen-staging/-/jobs/14064832402
---
 automation/gitlab-ci/build.yaml | 30 ++++++++++++++++++++++++++++++
 1 file changed, 30 insertions(+)

diff --git a/automation/gitlab-ci/build.yaml b/automation/gitlab-ci/build.yaml
index eff96beaa5c3..463ed2f96d86 100644
--- a/automation/gitlab-ci/build.yaml
+++ b/automation/gitlab-ci/build.yaml
@@ -815,3 +815,33 @@ debian-13-riscv64-gcc-randconfig:
     KBUILD_DEFCONFIG: tiny64_defconfig
     RANDCONFIG: y
     <<: *riscv-fixed-randconfig
+
+# macOS build jobs
+.macos-26:
+  <<: *build
+  tags:
+    - saas-macos-medium-m1
+  image: macos-26-xcode-26
+  variables:
+    HOMEBREW_NO_AUTO_UPDATE: 1
+    HOSTCC: clang
+    HYPERVISOR_ONLY: y
+    <<: *gcc
+  script:
+    - brew install ${CROSS_COMPILE}gcc ${CROSS_COMPILE}binutils
+    - alias nproc="sysctl -n hw.ncpu"
+    - ./automation/scripts/build 2>&1 | tee build.log
+
+macos-26-x86_64:
+  extends:
+    - .macos-26
+  variables:
+    XEN_TARGET_ARCH: x86_64
+    CROSS_COMPILE: x86_64-elf-
+
+macos-26-arm64:
+  extends:
+    - .macos-26
+  variables:
+    XEN_TARGET_ARCH: arm64
+    CROSS_COMPILE: aarch64-elf-
-- 
2.53.0



From xen-devel-bounces@lists.xenproject.org Thu Apr 23 20:04:26 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 23 Apr 2026 20:04:26 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1292629.1570997 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wG0He-0007wY-2O; Thu, 23 Apr 2026 20:04:22 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1292629.1570997; Thu, 23 Apr 2026 20:04: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 1wG0Hd-0007wC-TN; Thu, 23 Apr 2026 20:04:21 +0000
Received: by outflank-mailman (input) for mailman id 1292629;
 Thu, 23 Apr 2026 20:04:21 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <freddy77@gmail.com>) id 1wG0Hd-0007ic-3T
 for xen-devel@lists.xenproject.org; Thu, 23 Apr 2026 20:04:21 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wG0Hc-008AbV-GX
 for xen-devel@lists.xenproject.org; Thu, 23 Apr 2026 22:04:20 +0200
Received: from [10.42.69.7] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <freddy77@gmail.com>)
 id 69ea7b23-bab6-0a2a0a5309dd-0a2a4507ec64-26
 for <xen-devel@lists.xenproject.org>; Thu, 23 Apr 2026 22:04:20 +0200
Received: from [209.85.221.42] (helo=mail-wr1-f42.google.com)
 by tlsNG-ef75cf.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.1)
 (envelope-from <freddy77@gmail.com>)
 id 69ea7b44-229c-0a2a45070019-d155dd2aa98d-3
 for <xen-devel@lists.xenproject.org>; Thu, 23 Apr 2026 22:04:20 +0200
Received: by mail-wr1-f42.google.com with SMTP id
 ffacd0b85a97d-43d75312379so5163604f8f.1
 for <xen-devel@lists.xenproject.org>; Thu, 23 Apr 2026 13:04:20 -0700 (PDT)
Received: from localhost.localdomain (5.116.208.46.dyn.plus.net.
 [46.208.116.5]) by smtp.gmail.com with ESMTPSA id
 ffacd0b85a97d-43fe4e3a341sm60065442f8f.24.2026.04.23.13.04.18
 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
 Thu, 23 Apr 2026 13:04:18 -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=20251104 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=20251104; t=1776974660; x=1777579460; 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;
        bh=0sgCfk1ugKuxjrB/yyEc4hgcj8W8SrxyN2ccMLOE0JE=;
        b=e8vzlf144FcZgCJw25hC3LekHi/M5vQK86eIo+5Ri5J6+ZM/NOq1EniM9CWWcjsYNI
         +nVwxnbQgxBf+KPIObPrP4hwiabdxob7ckTt05ft+hFga4Wrc6s6vgCv75fgH/Jn7kAA
         spjpWblnr3F4qqaLsLMxnswOvlJNm7P/onx1zvlYUkXZ5KMSdGAadhM6k0Mvx5fTqusO
         Mr4QLHYJaGmi0t8mlaphAPlGQSs2MGmshM5bWh0Z7lpfOHd2kNjwHV+5vZfAdK4F6pNO
         Av5tQ9zivigeTfyuU/o48UwgegZzB3s5wTCjei3HLRl7kWg0Ed2zc31lajadmFIw4bvZ
         LDLg==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20251104; t=1776974660; x=1777579460;
        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;
        bh=0sgCfk1ugKuxjrB/yyEc4hgcj8W8SrxyN2ccMLOE0JE=;
        b=ZuX4xW/SVb7+mgiu9KAEwLiQjMmeJsuAxeD9LMuW/SVJ4SgZEdv4bHLU/+8luhuaV/
         bHhAdMFI7TvKv1dCObbubfByvAxXIKHMqOtmsF+snCi5dxUBWNtLUttWjWnEWeXmBe41
         0Q1OPEjahUR70ClIJg3Sgu41qwdBSgDfjFqeFaIs06hvrEMP+BabBzCXi0SPRF49HRBn
         AEqAevJR9aLkGECdC7PMlz6zT2NoQNJVH4CGbtK5tVn7fY/sc47J2S3rPrM+ujdW7HR4
         Rz7lug1LjnSx9ZRDzLmW+4RFoKiV1bQgOriuBEUoptDNl0gk4QBEbbpJywDmUmuPsCWH
         7b/g==
X-Gm-Message-State: AOJu0YxGdtmx/8cF0hUq5+10+l2Fm6/fzmrYgYtzqcfvKmXi/KH3D92a
	wTn08L6hq5VymhR6DQBNYUr3J0rbWtawqjy4wmremxXdnQY1DJ2l7Db1N6X6P9i9
X-Gm-Gg: AeBDietqcK95+pCC/g74Hlqo89Y43VRwPp28seX7joM69D56wQoQtQFqzNrD3JEFQ9W
	fVYEnnlOof9JTyrNRSn1vpziX35n/4MSGIVah2dJ6UQDvznmleF0BjWqLRuUTxZ4qwHFFl9mAwe
	ne++QlWDeNE03WPVvYUSQ0Iki7T7iC5Szi9UvY2WhlDPiyZo+eutW7vlUiOl+JKmdMoZH0U3snR
	713wz9aNCkWLCBTajfOQbIDyVBfraM2Ik2coh3VD/hHcjYk6CsCGkOrQQJ8etc/VQ4UN91WpkiW
	zQTxqVrV6XvkNhDIUSWbfgI00ST/e/vDKZXJjYhGbCUU0CCyacIcdedLJ3RcRoKLN/5AGoEnpiK
	OvkOyJ/ccUgYl+5YWgXHOYd6usVU0+T5p854yETyRO3drX41CQzW+8aDIV0RbhEviT6NvWaAIdb
	LiIIonoCSXmtzUwI5TB0Z7mMHtJq9kHl3mWCRmJpdN+ZKV8Qa8hYfQdepXf/2Em6VIiuA5z0PuI
	XxeI8AVnnAWfb4=
X-Received: by 2002:a05:6000:471a:b0:441:30d8:f023 with SMTP id ffacd0b85a97d-44130d8f040mr2937021f8f.6.1776974659411;
        Thu, 23 Apr 2026 13:04:19 -0700 (PDT)
From: Frediano Ziglio <freddy77@gmail.com>
X-Google-Original-From: Frediano Ziglio <frediano.ziglio@cloud.com>
To: xen-devel@lists.xenproject.org
Cc: =?UTF-8?q?Edwin=20T=C3=B6r=C3=B6k?= <edwin.torok@citrix.com>,
	Anthony PERARD <anthony.perard@vates.tech>,
	Juergen Gross <jgross@suse.com>,
	Frediano Ziglio <frediano.ziglio@citrix.com>
Subject: [PATCH 4/4] tools/libs/guest: allocate various migration arrays just once
Date: Thu, 23 Apr 2026 21:03:59 +0100
Message-ID: <20260423200406.28178-5-frediano.ziglio@cloud.com>
X-Mailer: git-send-email 2.43.0
In-Reply-To: <20260423200406.28178-1-frediano.ziglio@cloud.com>
References: <20260423200406.28178-1-frediano.ziglio@cloud.com>
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
X-purgate-ID: tlsNG-ef75cf/1776974660-2BD7FC48-7DD3B721/0/0
X-purgate-type: clean
X-purgate-size: 6401

From: Edwin Török <edwin.torok@citrix.com>

Allocate these array just once at the start of migration,
using the maximum batch size, and free them at the end.

Signed-off-by: Edwin Török <edwin.torok@citrix.com>
Signed-off-by: Frediano Ziglio <frediano.ziglio@citrix.com>
---
 tools/libs/guest/xg_sr_common.h | 13 +++++++
 tools/libs/guest/xg_sr_save.c   | 66 +++++++++++++--------------------
 2 files changed, 39 insertions(+), 40 deletions(-)

diff --git a/tools/libs/guest/xg_sr_common.h b/tools/libs/guest/xg_sr_common.h
index f1573aefcb..77312bae9c 100644
--- a/tools/libs/guest/xg_sr_common.h
+++ b/tools/libs/guest/xg_sr_common.h
@@ -209,6 +209,18 @@ static inline int update_blob(struct xc_sr_blob *blob,
     return 0;
 }
 
+struct xc_sr_context_save_buffers
+{
+    xen_pfn_t batch_pfns[MAX_BATCH_SIZE];
+    xen_pfn_t mfns[MAX_BATCH_SIZE];
+    xen_pfn_t types[MAX_BATCH_SIZE];
+    int errors[MAX_BATCH_SIZE];
+    void *guest_data[MAX_BATCH_SIZE];
+    void *local_pages[MAX_BATCH_SIZE];
+    struct iovec iov[MAX_BATCH_SIZE + 2]; /* headers + data */
+    uint64_t rec_pfns[MAX_BATCH_SIZE];
+};
+
 struct xc_sr_context
 {
     xc_interface *xch;
@@ -244,6 +256,7 @@ struct xc_sr_context
             unsigned long *deferred_pages;
             unsigned long nr_deferred_pages;
             xc_hypercall_buffer_t dirty_bitmap_hbuf;
+            struct xc_sr_context_save_buffers *buffers;
         } save;
 
         struct /* Restore data. */
diff --git a/tools/libs/guest/xg_sr_save.c b/tools/libs/guest/xg_sr_save.c
index 1700d81905..64014dcdbd 100644
--- a/tools/libs/guest/xg_sr_save.c
+++ b/tools/libs/guest/xg_sr_save.c
@@ -87,16 +87,16 @@ static int write_checkpoint_record(struct xc_sr_context *ctx)
 static int write_batch(struct xc_sr_context *ctx)
 {
     xc_interface *xch = ctx->xch;
-    xen_pfn_t *mfns = NULL, *types = NULL;
+    xen_pfn_t *mfns, *types;
     void *guest_mapping = NULL;
-    void **guest_data = NULL;
-    void **local_pages = NULL;
-    int *errors = NULL, rc = -1;
+    void **guest_data;
+    void **local_pages;
+    int *errors, rc = -1;
     unsigned int i, p, nr_pages = 0, nr_pages_mapped = 0;
     unsigned int nr_pfns = ctx->save.nr_batch_pfns;
     void *page, *orig_page;
-    uint64_t *rec_pfns = NULL;
-    struct iovec *iov = NULL; int iovcnt = 0;
+    uint64_t *rec_pfns;
+    struct iovec *iov; int iovcnt = 0;
     struct {
         struct xc_sr_rhdr rec;
         struct xc_sr_rec_page_data_header page_data;
@@ -106,26 +106,24 @@ static int write_batch(struct xc_sr_context *ctx)
     };
 
     assert(nr_pfns != 0);
+    assert(nr_pfns <= MAX_BATCH_SIZE);
+    assert(ctx->save.buffers);
 
     /* Mfns of the batch pfns. */
-    mfns = malloc(nr_pfns * sizeof(*mfns));
+    mfns = ctx->save.buffers->mfns;
     /* Types of the batch pfns. */
-    types = malloc(nr_pfns * sizeof(*types));
+    types = ctx->save.buffers->types;
     /* Errors from attempting to map the gfns. */
-    errors = malloc(nr_pfns * sizeof(*errors));
+    errors = ctx->save.buffers->errors;
     /* Pointers to page data to send.  Mapped gfns or local allocations. */
-    guest_data = calloc(nr_pfns, sizeof(*guest_data));
+    guest_data = ctx->save.buffers->guest_data;
+    memset(guest_data, 0, sizeof(*guest_data) * nr_pfns);
     /* Pointers to locally allocated pages.  Need freeing. */
-    local_pages = calloc(nr_pfns, sizeof(*local_pages));
+    local_pages = ctx->save.buffers->local_pages;
+    memset(local_pages, 0, sizeof(*local_pages) * nr_pfns);
     /* iovec[] for writev(). */
-    iov = malloc((nr_pfns + 2) * sizeof(*iov));
-
-    if ( !mfns || !types || !errors || !guest_data || !local_pages || !iov )
-    {
-        ERROR("Unable to allocate arrays for a batch of %u pages",
-              nr_pfns);
-        goto err;
-    }
+    iov = ctx->save.buffers->iov;
+    rec_pfns = ctx->save.buffers->rec_pfns;
 
     for ( i = 0; i < nr_pfns; ++i )
     {
@@ -211,14 +209,6 @@ static int write_batch(struct xc_sr_context *ctx)
         }
     }
 
-    rec_pfns = malloc(nr_pfns * sizeof(*rec_pfns));
-    if ( !rec_pfns )
-    {
-        ERROR("Unable to allocate %zu bytes of memory for page data pfn list",
-              nr_pfns * sizeof(*rec_pfns));
-        goto err;
-    }
-
     hdrs.rec.length = sizeof(hdrs.page_data);
     hdrs.rec.length += nr_pfns * sizeof(*rec_pfns);
     hdrs.rec.length += nr_pages * PAGE_SIZE;
@@ -261,17 +251,13 @@ static int write_batch(struct xc_sr_context *ctx)
     rc = ctx->save.nr_batch_pfns = 0;
 
  err:
-    free(rec_pfns);
     if ( guest_mapping )
         xenforeignmemory_unmap(xch->fmem, guest_mapping, nr_pages_mapped);
     for ( i = 0; local_pages && i < nr_pfns; ++i )
+    {
         free(local_pages[i]);
-    free(iov);
-    free(local_pages);
-    free(guest_data);
-    free(errors);
-    free(types);
-    free(mfns);
+        local_pages[i] = NULL;
+    }
 
     return rc;
 }
@@ -799,18 +785,18 @@ static int setup(struct xc_sr_context *ctx)
 
     dirty_bitmap = xc_hypercall_buffer_alloc_pages(
         xch, dirty_bitmap, NRPAGES(bitmap_size(ctx->save.p2m_size)));
-    ctx->save.batch_pfns = malloc(MAX_BATCH_SIZE *
-                                  sizeof(*ctx->save.batch_pfns));
     ctx->save.deferred_pages = bitmap_alloc(ctx->save.p2m_size);
+    ctx->save.buffers = calloc(1, sizeof(*ctx->save.buffers));
 
-    if ( !ctx->save.batch_pfns || !dirty_bitmap || !ctx->save.deferred_pages )
+    if ( !dirty_bitmap || !ctx->save.deferred_pages || !ctx->save.buffers)
     {
-        ERROR("Unable to allocate memory for dirty bitmaps, batch pfns and"
-              " deferred pages");
+        ERROR("Unable to allocate memory for dirty bitmaps, deferred pages"
+              " and various batch buffers");
         rc = -1;
         errno = ENOMEM;
         goto err;
     }
+    ctx->save.batch_pfns = ctx->save.buffers->batch_pfns;
 
     rc = 0;
 
@@ -834,7 +820,7 @@ static void cleanup(struct xc_sr_context *ctx)
     xc_hypercall_buffer_free_pages(xch, dirty_bitmap,
                                    NRPAGES(bitmap_size(ctx->save.p2m_size)));
     free(ctx->save.deferred_pages);
-    free(ctx->save.batch_pfns);
+    free(ctx->save.buffers);
 }
 
 /*
-- 
2.43.0



From xen-devel-bounces@lists.xenproject.org Thu Apr 23 20:04:26 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 23 Apr 2026 20:04:26 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1292626.1570973 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wG0Hc-0007Sb-3q; Thu, 23 Apr 2026 20:04:20 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1292626.1570973; Thu, 23 Apr 2026 20:04: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 1wG0Hc-0007SQ-10; Thu, 23 Apr 2026 20:04:20 +0000
Received: by outflank-mailman (input) for mailman id 1292626;
 Thu, 23 Apr 2026 20:04:18 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <freddy77@gmail.com>) id 1wG0Ha-0007FJ-J6
 for xen-devel@lists.xenproject.org; Thu, 23 Apr 2026 20:04:18 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wG0HZ-005MS0-W8
 for xen-devel@lists.xenproject.org; Thu, 23 Apr 2026 22:04:18 +0200
Received: from [10.42.69.5] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <freddy77@gmail.com>)
 id 69ea7b40-5cb7-0a2a0a5109dd-0a2a4505d46e-4
 for <xen-devel@lists.xenproject.org>; Thu, 23 Apr 2026 22:04:17 +0200
Received: from [209.85.221.45] (helo=mail-wr1-f45.google.com)
 by tlsNG-c201ff.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.1)
 (envelope-from <freddy77@gmail.com>)
 id 69ea7b41-aaa8-0a2a45050019-d155dd2ddde8-3
 for <xen-devel@lists.xenproject.org>; Thu, 23 Apr 2026 22:04:17 +0200
Received: by mail-wr1-f45.google.com with SMTP id
 ffacd0b85a97d-43d6fbd0954so5585381f8f.1
 for <xen-devel@lists.xenproject.org>; Thu, 23 Apr 2026 13:04:17 -0700 (PDT)
Received: from localhost.localdomain (5.116.208.46.dyn.plus.net.
 [46.208.116.5]) by smtp.gmail.com with ESMTPSA id
 ffacd0b85a97d-43fe4e3a341sm60065442f8f.24.2026.04.23.13.04.16
 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
 Thu, 23 Apr 2026 13:04:16 -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=20251104 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=20251104; t=1776974657; x=1777579457; 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;
        bh=XDfhd227o6gGh3k3sHyBHCTFmn0oVFwYEqgY5uwBNT0=;
        b=UzRiAQxsJHjx+XfeEt5bh3mMBYBaQJOSfi2ngqVL9QnfRV4+8xp9ZWXTCyDW14tB6H
         uWhdUXNoXwhgw1iQWN4V00BsYCaSyiPQ/4eSXPGIxpe3qkhpsrHXDxhhsYjgeM3LjNiZ
         DQkgIFh1AS/TEGND6LpgZtCbLdQ69aoyX7Mu2PJWAx7gepVQb6crg01lOH9kr0mUU2sA
         f5eaagr5SUv9kgXvBfg+tGF7FL4vvUKjugzn2rROqx6/Uvh81S9myPwT7IFk1sF4i4rm
         SChvMe7jljMe8qJuxZJMfskoFG37BqNjPxh9HzK47JFIfuCaqqMnSxkopC6BQu5686Wf
         lqNw==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20251104; t=1776974657; x=1777579457;
        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;
        bh=XDfhd227o6gGh3k3sHyBHCTFmn0oVFwYEqgY5uwBNT0=;
        b=jc38qOmdrdgCBSdj73jYiOA3egfjFZz1f3CYhlzuLjOWUQ9Gy7skOxT58UuioxXxVY
         ez5/Mm2dtJKpXlz1VO5bl6fCy8EZuJzXhd7Z3mRAida95WWlDWiL2jF3pz3UTrGcFLX8
         Y1LR4Dw+/epgpS050ujjuNS4ALbXCGlAfjkUKNcNLXbsNsmMD1Q1t5e9Mse3qu1HBlp8
         +xm8+Hx2X1un7dstYWQRo1IPRqw9f5ZuraJZFrhtJe8XhQ2fX8JBp6EDlgJEKEdifE0x
         DH1vfsTGFUqbZMhWn79sbfzLuBRNf9FiL9w6zpoGu5dol2Tx8wEFwLFS1lVrB4Z5e8Un
         D1jA==
X-Gm-Message-State: AOJu0YyKqpFfN7A1XC9ElI/uu2U0Uuj6LaZdlHHFp108Ms4kc6kE2yfn
	aFWuuPTFuMIhH4TVt2W0Wu6vYNHmFBbfhiYn0Fhy12yXxp15qkkMasLj7oRc2+TA
X-Gm-Gg: AeBDies2e/ROep9y4NvUDkke8+w+GSz1Ase5+XDCZNXvuBG2vBesKceI+K0KKtD2RyZ
	uNyzp6dGr24B2RKrRDmqgb94gj8XWupDvsCAPzcyVhQVLTSDWeHAdMJDFUmNXKNwwc/ViWZtI8q
	zoR1RfPPhTzF5r8JnCwc47hesxC9C2poBSBbaCMoJwfAohAHBPu/kCjc5w6wClh5RxbTIcfKRk6
	phPwV6jSwxpTX0u2B3gbelbd0E9dgaIfmmFYGe61t09dceqMZdbx4nRR7eWfK/1NpHMm4NSnjZN
	ufEVYE8w9hnLrPlY2XcsX8YdAHUuo+OtWZcfLWCfs1nKuRF8Pq3VnsJFU61Uz2rTali7dIjh7fH
	Gt+aHNogSNTWD3Tla2n2K/kYc9RrSkJOChYt3VieqlaNDVA3gTvz8djQ0FtjDRgBdlaTm6Lfglx
	lzwuGdrZ+M81joyYMvvIb/OeNYBGNrkBOFlccd38bzvoBLibXvTBWDePUc7Vjr8G31v7rckHM1L
	UQe
X-Received: by 2002:a5d:64c3:0:b0:43d:309b:9c4f with SMTP id ffacd0b85a97d-43fe3db2d1amr41210620f8f.6.1776974657013;
        Thu, 23 Apr 2026 13:04:17 -0700 (PDT)
From: Frediano Ziglio <freddy77@gmail.com>
X-Google-Original-From: Frediano Ziglio <frediano.ziglio@cloud.com>
To: xen-devel@lists.xenproject.org
Cc: Frediano Ziglio <frediano.ziglio@citrix.com>,
	Anthony PERARD <anthony.perard@vates.tech>,
	Juergen Gross <jgross@suse.com>
Subject: [PATCH 1/4] xenguest: Reduce number of parts in write_split_record
Date: Thu, 23 Apr 2026 21:03:56 +0100
Message-ID: <20260423200406.28178-2-frediano.ziglio@cloud.com>
X-Mailer: git-send-email 2.43.0
In-Reply-To: <20260423200406.28178-1-frediano.ziglio@cloud.com>
References: <20260423200406.28178-1-frediano.ziglio@cloud.com>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit
X-purgate-ID: tlsNG-c201ff/1776974657-2A374443-FBC3E0F8/0/0
X-purgate-type: clean
X-purgate-size: 1576

From: Frediano Ziglio <frediano.ziglio@citrix.com>

Small optimization.
There's no much sense to split the header in 2 pieces, it will
just take more time and space to reassemble them in the final
buffer.
This also avoids truncating combined_length to 32 bit in case of
64 bit machines potentially avoiding following record_length check.
The function become more coherent with following read_record
function.

Signed-off-by: Frediano Ziglio <frediano.ziglio@citrix.com>
---
 tools/libs/guest/xg_sr_common.c | 6 +++---
 1 file changed, 3 insertions(+), 3 deletions(-)

diff --git a/tools/libs/guest/xg_sr_common.c b/tools/libs/guest/xg_sr_common.c
index 7ccdc3b1f6..86c148c62f 100644
--- a/tools/libs/guest/xg_sr_common.c
+++ b/tools/libs/guest/xg_sr_common.c
@@ -59,11 +59,11 @@ int write_split_record(struct xc_sr_context *ctx, struct xc_sr_record *rec,
     static const char zeroes[(1u << REC_ALIGN_ORDER) - 1] = { 0 };
 
     xc_interface *xch = ctx->xch;
-    typeof(rec->length) combined_length = rec->length + sz;
+    size_t combined_length = rec->length + sz;
     size_t record_length = ROUNDUP(combined_length, REC_ALIGN_ORDER);
+    struct xc_sr_rhdr rhdr = { rec->type, combined_length };
     struct iovec parts[] = {
-        { &rec->type,       sizeof(rec->type) },
-        { &combined_length, sizeof(combined_length) },
+        { &rhdr,            sizeof(rhdr) },
         { rec->data,        rec->length },
         { buf,              sz },
         { (void *)zeroes,   record_length - combined_length },
-- 
2.43.0



From xen-devel-bounces@lists.xenproject.org Thu Apr 23 20:04:27 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 23 Apr 2026 20:04:27 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1292627.1570978 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wG0Hc-0007U9-BY; Thu, 23 Apr 2026 20:04:20 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1292627.1570978; Thu, 23 Apr 2026 20:04: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 1wG0Hc-0007Tz-7U; Thu, 23 Apr 2026 20:04:20 +0000
Received: by outflank-mailman (input) for mailman id 1292627;
 Thu, 23 Apr 2026 20:04:19 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <freddy77@gmail.com>) id 1wG0Hb-0007Le-Cq
 for xen-devel@lists.xenproject.org; Thu, 23 Apr 2026 20:04:19 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wG0Ha-008AbV-Pj
 for xen-devel@lists.xenproject.org; Thu, 23 Apr 2026 22:04:18 +0200
Received: from [10.42.69.6] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <freddy77@gmail.com>)
 id 69ea7b42-bab6-0a2a0a5309dd-0a2a4506bad4-0
 for <xen-devel@lists.xenproject.org>; Thu, 23 Apr 2026 22:04:18 +0200
Received: from [209.85.221.43] (helo=mail-wr1-f43.google.com)
 by tlsNG-16d1c6.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.1)
 (envelope-from <freddy77@gmail.com>)
 id 69ea7b42-7371-0a2a45060019-d155dd2bf07e-3
 for <xen-devel@lists.xenproject.org>; Thu, 23 Apr 2026 22:04:18 +0200
Received: by mail-wr1-f43.google.com with SMTP id
 ffacd0b85a97d-43d73422431so6043904f8f.2
 for <xen-devel@lists.xenproject.org>; Thu, 23 Apr 2026 13:04:18 -0700 (PDT)
Received: from localhost.localdomain (5.116.208.46.dyn.plus.net.
 [46.208.116.5]) by smtp.gmail.com with ESMTPSA id
 ffacd0b85a97d-43fe4e3a341sm60065442f8f.24.2026.04.23.13.04.17
 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
 Thu, 23 Apr 2026 13:04:17 -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=20251104 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=20251104; t=1776974658; x=1777579458; 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;
        bh=sVGY1T6hm0/7+FJT6srnaIkpU7DrhVy9HgeD1DDoZUc=;
        b=T4zu/hn2SFtlgE2Up/0X7YzE/jxSHDdB47UA9+e5ysZ6+hV/es7vH0dbFsn3QJFP4m
         q0eiBebPWVIlrPITkRQ3BrdNR5Lu7S3QOILkALHprljTjCVbHLs3nUcYCi7ithhmf4GC
         dEjUvoYu8iDGJyKvhO7QY7UCqlyRROCE/Yfrz+NWG9JEkVZTxiyB2aRkAjRsPZkKtxwG
         Q7lL074ih4vXCf2Sl8CMTTVZXSwUCbK+ADirt+5kMTNwH2KJJN+8J02BU+TT5T9okzfy
         SF3LebeSUwNRT0SX1IDMK3etGD98QiPX2fvoG041jc6f+WK9YmXN7LmfdI9OzCCainUz
         VKrA==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20251104; t=1776974658; x=1777579458;
        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;
        bh=sVGY1T6hm0/7+FJT6srnaIkpU7DrhVy9HgeD1DDoZUc=;
        b=IvE6oagXgE0cfqC+4u6ij2ZPEkt348bQoRUpSNpW/WXx2TynYP48NBpI7moy3I+Ydp
         wAw5Sij/zSJZ/vF76onscfVL5lN0WYE2KDNe7WyiVnmMZQH1pxUJUu1QzXS0U5VxOI5C
         /TWZ3ZkJp7BY1xuYIOfnVxrOBAclHSMq4DFVwYE0N6olrfu6GZ47yOHSFMdv6nljxEtj
         W56iIWmtb+Mj8ncKBBQxXTzo9NAJYFHPeMW/TZH2ZRL7q34n8p5A4Qp1dkgw2UVtlPpV
         BrA4eJAMJzD4tfzkRSlRZu5Ku56gVtWNgBFmoZCX/WxRF2CVg9079OlYPyqFy8GrK2+F
         ynVw==
X-Gm-Message-State: AOJu0YyLqziOJOt5Idsb7MPPkSIKdPrt4JbpQZdEZ7PKbUOmd686ZFgO
	uitlhvHfRE1IJHImsL9wJ50soh51Ai8+xuIvig+SvKjjwTFYanqWJanZXSLwW0f6
X-Gm-Gg: AeBDievuBla+9X0Ho6A9Q+VFV6T89ZiQEQYgAzFNs99LoA25PV9UuiE5HQlRHKJPCV3
	vKuXIfn64YZFlh2+H30KyGuFsnjmLIHRVp0VjTxDHlXxLIF1EjeBRuyhECuoR5CYe5Tj7zoVT29
	uFPcSvn561FU377cb2M3HkbtNY4sAs9GV7045QFlQyrvg0ZAXpqn58d/bkKLUZQRcLqdYpyA8xB
	g0dl5WvWOxjTVlYJ6gPmqAgxGmRr5h5e5SKoB+h3xgCt6NGXTV7rUk+dDQgFfZL6TnNRyDgZrLE
	DiGVN1xYoHc3HpQ13zjmaenyK7zr4PA4OVPSzECx8oxzQHGxbU5elNqEsXJ2rfZMj+BL4Rgu8W2
	gxl97pi9Wt5/ROH6nWCD8Zn7PygMtrz8vTiUNScSEjPFR1W8Ld4Yo+UtDCPPYWYCxHWXto0WAFk
	wkB+BQlTSE7Em/LXIe/ECfJHA3fK/LEy2hdxG7yCyXNbKooSuZ6zVxMAJoOWCiHzhDsq6UlBHWF
	R6Y
X-Received: by 2002:a05:6000:240e:b0:43d:714:34e5 with SMTP id ffacd0b85a97d-43fe3e0d2e3mr44148983f8f.24.1776974657709;
        Thu, 23 Apr 2026 13:04:17 -0700 (PDT)
From: Frediano Ziglio <freddy77@gmail.com>
X-Google-Original-From: Frediano Ziglio <frediano.ziglio@cloud.com>
To: xen-devel@lists.xenproject.org
Cc: Frediano Ziglio <frediano.ziglio@citrix.com>,
	Anthony PERARD <anthony.perard@vates.tech>,
	Juergen Gross <jgross@suse.com>
Subject: [PATCH 2/4] xenguest: Reduce number of I/O vectors in write_batch
Date: Thu, 23 Apr 2026 21:03:57 +0100
Message-ID: <20260423200406.28178-3-frediano.ziglio@cloud.com>
X-Mailer: git-send-email 2.43.0
In-Reply-To: <20260423200406.28178-1-frediano.ziglio@cloud.com>
References: <20260423200406.28178-1-frediano.ziglio@cloud.com>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit
X-purgate-ID: tlsNG-16d1c6/1776974658-52369D75-4AF4319C/0/0
X-purgate-type: clean
X-purgate-size: 2569

From: Frediano Ziglio <frediano.ziglio@citrix.com>

Small optimization.
Reduce number of pieces passed to writev.

Signed-off-by: Frediano Ziglio <frediano.ziglio@citrix.com>
---
 tools/libs/guest/xg_sr_save.c | 35 ++++++++++++++++-------------------
 1 file changed, 16 insertions(+), 19 deletions(-)

diff --git a/tools/libs/guest/xg_sr_save.c b/tools/libs/guest/xg_sr_save.c
index 3b2c5222e4..1700d81905 100644
--- a/tools/libs/guest/xg_sr_save.c
+++ b/tools/libs/guest/xg_sr_save.c
@@ -97,9 +97,12 @@ static int write_batch(struct xc_sr_context *ctx)
     void *page, *orig_page;
     uint64_t *rec_pfns = NULL;
     struct iovec *iov = NULL; int iovcnt = 0;
-    struct xc_sr_rec_page_data_header hdr = { 0 };
-    struct xc_sr_record rec = {
-        .type = REC_TYPE_PAGE_DATA,
+    struct {
+        struct xc_sr_rhdr rec;
+        struct xc_sr_rec_page_data_header page_data;
+    } hdrs = {
+        { .type = REC_TYPE_PAGE_DATA },
+        { 0 },
     };
 
     assert(nr_pfns != 0);
@@ -115,7 +118,7 @@ static int write_batch(struct xc_sr_context *ctx)
     /* Pointers to locally allocated pages.  Need freeing. */
     local_pages = calloc(nr_pfns, sizeof(*local_pages));
     /* iovec[] for writev(). */
-    iov = malloc((nr_pfns + 4) * sizeof(*iov));
+    iov = malloc((nr_pfns + 2) * sizeof(*iov));
 
     if ( !mfns || !types || !errors || !guest_data || !local_pages || !iov )
     {
@@ -216,28 +219,22 @@ static int write_batch(struct xc_sr_context *ctx)
         goto err;
     }
 
-    hdr.count = nr_pfns;
+    hdrs.rec.length = sizeof(hdrs.page_data);
+    hdrs.rec.length += nr_pfns * sizeof(*rec_pfns);
+    hdrs.rec.length += nr_pages * PAGE_SIZE;
 
-    rec.length = sizeof(hdr);
-    rec.length += nr_pfns * sizeof(*rec_pfns);
-    rec.length += nr_pages * PAGE_SIZE;
+    hdrs.page_data.count = nr_pfns;
 
     for ( i = 0; i < nr_pfns; ++i )
         rec_pfns[i] = ((uint64_t)(types[i]) << 32) | ctx->save.batch_pfns[i];
 
-    iov[0].iov_base = &rec.type;
-    iov[0].iov_len = sizeof(rec.type);
+    iov[0].iov_base = &hdrs;
+    iov[0].iov_len = sizeof(hdrs);
 
-    iov[1].iov_base = &rec.length;
-    iov[1].iov_len = sizeof(rec.length);
+    iov[1].iov_base = rec_pfns;
+    iov[1].iov_len = nr_pfns * sizeof(*rec_pfns);
 
-    iov[2].iov_base = &hdr;
-    iov[2].iov_len = sizeof(hdr);
-
-    iov[3].iov_base = rec_pfns;
-    iov[3].iov_len = nr_pfns * sizeof(*rec_pfns);
-
-    iovcnt = 4;
+    iovcnt = 2;
 
     if ( nr_pages )
     {
-- 
2.43.0



From xen-devel-bounces@lists.xenproject.org Thu Apr 23 20:04:27 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 23 Apr 2026 20:04:27 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1292628.1570991 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wG0Hd-0007tN-N9; Thu, 23 Apr 2026 20:04:21 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1292628.1570991; Thu, 23 Apr 2026 20: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 1wG0Hd-0007tG-KF; Thu, 23 Apr 2026 20:04:21 +0000
Received: by outflank-mailman (input) for mailman id 1292628;
 Thu, 23 Apr 2026 20:04:20 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <freddy77@gmail.com>) id 1wG0Hc-0007Ru-0Z
 for xen-devel@lists.xenproject.org; Thu, 23 Apr 2026 20:04:20 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wG0Hb-005MUL-Dg
 for xen-devel@lists.xenproject.org; Thu, 23 Apr 2026 22:04:19 +0200
Received: from [10.42.69.1] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <freddy77@gmail.com>)
 id 69ea7b25-2eae-0a2a0a5409dd-0a2a45019a8a-26
 for <xen-devel@lists.xenproject.org>; Thu, 23 Apr 2026 22:04:19 +0200
Received: from [209.85.128.47] (helo=mail-wm1-f47.google.com)
 by tlsNG-d62444.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.1)
 (envelope-from <freddy77@gmail.com>)
 id 69ea7b43-c1f2-0a2a45010019-d155802fbddc-3
 for <xen-devel@lists.xenproject.org>; Thu, 23 Apr 2026 22:04:19 +0200
Received: by mail-wm1-f47.google.com with SMTP id
 5b1f17b1804b1-488b0046078so63848575e9.1
 for <xen-devel@lists.xenproject.org>; Thu, 23 Apr 2026 13:04:19 -0700 (PDT)
Received: from localhost.localdomain (5.116.208.46.dyn.plus.net.
 [46.208.116.5]) by smtp.gmail.com with ESMTPSA id
 ffacd0b85a97d-43fe4e3a341sm60065442f8f.24.2026.04.23.13.04.17
 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
 Thu, 23 Apr 2026 13:04:18 -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=20251104 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=20251104; t=1776974658; x=1777579458; 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;
        bh=Oxg5mCtqQQ6xjPu85ADP9KtAzh/otnbEOWyjQXNEH9o=;
        b=qCDKa/yPJQv3ZglBr2bNQqMrs0XBQKqTQMMm4Te4/N4vZJGk7Aho/USAR7JhajlmAv
         7cf4+xGOIdjDxJt9JaT+EDMpZekmKOVkL84gtBSiJqXrAuIhJp21Zyh2w9vD1ATyKtJ/
         2WP0u1MsH6YpzO/p550biFcojXFtMt8WZJh4zyLV8Cxf3+vawZ3KcO6xxtulZ/TYWi7N
         wePpUfC0zFxEiNr0lbtUjsuzbYaoFvNS62Bqtsfql0TvE1NB0kNcf7kH4EwM4fXYDrJ2
         LO/apOpBSaNpLwsvAxC7h/Mid3yJ3NvuLRVn2PhnvsmTaiZmH4e1PF4we9ePQc6KLRzA
         ho+g==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20251104; t=1776974658; x=1777579458;
        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;
        bh=Oxg5mCtqQQ6xjPu85ADP9KtAzh/otnbEOWyjQXNEH9o=;
        b=DFYIZ1+BoB+sAOI+jMDWe5mWXW/rQdeu/pFaACQwz2IWYT1b4jdOClLMdelQ2VyiV0
         LXFbVTCkRlTtTb7IaNbv05A8rxEvRUXbnREzqvhsOKk3dqD8pIAihIsADZhUopfqjw2b
         hGP1OsuITNgI5sVvkIgal37WllH7DdaXYD493hVLvsbWLVhZJ+pPYddFsLRSwjmPmx9J
         nW1uB5/UZWEIph7V1WW3fl/WyJflDNUxP3if4R0M4Wsfsn2hwn/Cqkn951IFtu39YRwJ
         Ao1Iyf2FJ8k/2cBZ0twxXY3cORu6zGjEY/cgkNrI1HUlGTRpVNnMZtnS4rX1z4U1sflN
         bQDA==
X-Gm-Message-State: AOJu0YzwvUrjMRwSt3/qffGtsDqatH1ADzWDNxnhlNM1pBd5/cUC6N+p
	tgfLQkyyqSObdtOryXFicgLXb19FU/KV3NacYTbPyxKbbWCENxcqCGoqN6xz0krZ
X-Gm-Gg: AeBDievcX8muDa1N3CEYNreH5E5nxFE/eQConsiAITcjfq1XFWjB+LM+BYpiwLjxdwN
	U+D3Z4NIW/FdQgwF1z4t6gd7MkqqP7zjlq388cvsgegPTxCRtOmLu+evhg+n+wif0L+Pl9Me0a+
	qopU8Oo7BnA1+9p0BW75OPHZJdPIVi9SQeRi2RwdiDQQm7PxjfU2qmQdeiG2xxTxxUOoNX2Aznp
	2DUHpnLaXkOaUy7/e3TLDcf4dW26eYHyD10VdO+nvkbfa23BztsxqtxTnuwz8oVn0w28tw3o8dw
	Gt6g0q/f+dMrhkhMIhAmnISaL6DRkZNt28TvF76d+LaxxV+wFbxDM9YNvy0M25lWORCfUvJkIMn
	/xwampbVlGc3Ml9jDrIC0nNPkZS3CAPWvStL8pXYUF8kI5uM/uy8Bf+xcgbSUMzyQNRke+jRjzb
	6N72gTeOr8VxZcOHRTfZe66yQE8hhhm4ouHj1go8Nr1SRJF0GHGdngik+6Cu93AicCja25zCUkV
	tkb
X-Received: by 2002:a05:6000:178b:b0:43d:7946:bae5 with SMTP id ffacd0b85a97d-43fe3e144cbmr44457096f8f.42.1776974658500;
        Thu, 23 Apr 2026 13:04:18 -0700 (PDT)
From: Frediano Ziglio <freddy77@gmail.com>
X-Google-Original-From: Frediano Ziglio <frediano.ziglio@cloud.com>
To: xen-devel@lists.xenproject.org
Cc: Frediano Ziglio <frediano.ziglio@citrix.com>,
	Anthony PERARD <anthony.perard@vates.tech>,
	Juergen Gross <jgross@suse.com>
Subject: [PATCH 3/4] xenguest: Allows writev_exact to change iov array
Date: Thu, 23 Apr 2026 21:03:58 +0100
Message-ID: <20260423200406.28178-4-frediano.ziglio@cloud.com>
X-Mailer: git-send-email 2.43.0
In-Reply-To: <20260423200406.28178-1-frediano.ziglio@cloud.com>
References: <20260423200406.28178-1-frediano.ziglio@cloud.com>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit
X-purgate-ID: tlsNG-d62444/1776974659-B4617FF4-6AF0E027/0/0
X-purgate-type: clean
X-purgate-size: 3174

From: Frediano Ziglio <frediano.ziglio@citrix.com>

Avoid having to allocate and copy the array if a partial write
happens.
The implementation in tools/libs/store/xs.c already use this
signature and method.

Signed-off-by: Frediano Ziglio <frediano.ziglio@citrix.com>
---
 tools/libs/ctrl/xc_private.c | 26 +++++---------------------
 tools/libs/ctrl/xc_private.h |  2 +-
 2 files changed, 6 insertions(+), 22 deletions(-)

diff --git a/tools/libs/ctrl/xc_private.c b/tools/libs/ctrl/xc_private.c
index bb0f81d6f3..946fc307aa 100644
--- a/tools/libs/ctrl/xc_private.c
+++ b/tools/libs/ctrl/xc_private.c
@@ -635,7 +635,7 @@ int write_exact(int fd, const void *data, size_t size)
 /*
  * MiniOS's libc doesn't know about writev(). Implement it as multiple write()s.
  */
-int writev_exact(int fd, const struct iovec *iov, int iovcnt)
+int writev_exact(int fd, struct iovec *iov, int iovcnt)
 {
     int rc, i;
 
@@ -649,9 +649,8 @@ int writev_exact(int fd, const struct iovec *iov, int iovcnt)
     return 0;
 }
 #else
-int writev_exact(int fd, const struct iovec *iov, int iovcnt)
+int writev_exact(int fd, struct iovec *iov, int iovcnt)
 {
-    struct iovec *local_iov = NULL;
     int rc = 0, iov_idx = 0, saved_errno = 0;
     ssize_t len;
 
@@ -686,23 +685,9 @@ int writev_exact(int fd, const struct iovec *iov, int iovcnt)
                 len -= iov[iov_idx++].iov_len;
             else
             {
-                /* Partial write of iov[iov_idx]. Copy iov so we can adjust
-                 * element iov_idx and resubmit the rest. */
-                if ( !local_iov )
-                {
-                    local_iov = malloc(iovcnt * sizeof(*iov));
-                    if ( !local_iov )
-                    {
-                        saved_errno = ENOMEM;
-                        rc = -1;
-                        goto out;
-                    }
-
-                    iov = memcpy(local_iov, iov, iovcnt * sizeof(*iov));
-                }
-
-                local_iov[iov_idx].iov_base += len;
-                local_iov[iov_idx].iov_len  -= len;
+                /* Partial write of iov[iov_idx]. */
+                iov[iov_idx].iov_base += len;
+                iov[iov_idx].iov_len  -= len;
                 break;
             }
         }
@@ -711,7 +696,6 @@ int writev_exact(int fd, const struct iovec *iov, int iovcnt)
     saved_errno = 0;
 
  out:
-    free(local_iov);
     errno = saved_errno;
     return rc;
 }
diff --git a/tools/libs/ctrl/xc_private.h b/tools/libs/ctrl/xc_private.h
index b5892ae8dc..3af996e900 100644
--- a/tools/libs/ctrl/xc_private.h
+++ b/tools/libs/ctrl/xc_private.h
@@ -383,7 +383,7 @@ int xc_flush_mmu_updates(xc_interface *xch, struct xc_mmu *mmu);
 /* Return 0 on success; -1 on error setting errno. */
 int read_exact(int fd, void *data, size_t size); /* EOF => -1, errno=0 */
 int write_exact(int fd, const void *data, size_t size);
-int writev_exact(int fd, const struct iovec *iov, int iovcnt);
+int writev_exact(int fd, struct iovec *iov, int iovcnt);
 
 int xc_ffs8(uint8_t x);
 int xc_ffs16(uint16_t x);
-- 
2.43.0



From xen-devel-bounces@lists.xenproject.org Thu Apr 23 20:04:27 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 23 Apr 2026 20:04:27 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1292625.1570965 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wG0Ha-0007FW-R1; Thu, 23 Apr 2026 20:04:18 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1292625.1570965; Thu, 23 Apr 2026 20: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 1wG0Ha-0007FP-NS; Thu, 23 Apr 2026 20:04:18 +0000
Received: by outflank-mailman (input) for mailman id 1292625;
 Thu, 23 Apr 2026 20:04:18 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <freddy77@gmail.com>) id 1wG0Ha-0007FE-4i
 for xen-devel@lists.xenproject.org; Thu, 23 Apr 2026 20:04:18 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wG0HZ-008AbV-B5
 for xen-devel@lists.xenproject.org; Thu, 23 Apr 2026 22:04:17 +0200
Received: from [10.42.69.7] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <freddy77@gmail.com>)
 id 69ea7b23-bab6-0a2a0a5309dd-0a2a4507ec64-24
 for <xen-devel@lists.xenproject.org>; Thu, 23 Apr 2026 22:04:17 +0200
Received: from [209.85.128.52] (helo=mail-wm1-f52.google.com)
 by tlsNG-ef75cf.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.1)
 (envelope-from <freddy77@gmail.com>)
 id 69ea7b41-229c-0a2a45070019-d1558034bde0-3
 for <xen-devel@lists.xenproject.org>; Thu, 23 Apr 2026 22:04:17 +0200
Received: by mail-wm1-f52.google.com with SMTP id
 5b1f17b1804b1-488b0046078so63848315e9.1
 for <xen-devel@lists.xenproject.org>; Thu, 23 Apr 2026 13:04:17 -0700 (PDT)
Received: from localhost.localdomain (5.116.208.46.dyn.plus.net.
 [46.208.116.5]) by smtp.gmail.com with ESMTPSA id
 ffacd0b85a97d-43fe4e3a341sm60065442f8f.24.2026.04.23.13.04.15
 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
 Thu, 23 Apr 2026 13:04:15 -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=20251104 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=20251104; t=1776974656; x=1777579456; 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;
        bh=OgPgLrJe3moAhlzkuCpYhzQa4RXKhr2E3EuEQSE1TaA=;
        b=Gvo1N5Ke+BAJHttcdV6TFtSn5UVz1e6S+iNYp6e8uuhOPqr+M9ZnnAyRlk7GQQ/FGD
         AVnCjNcFi5lZZL+pKt72rcofrlBQDwd6HvzN2+qhDkXHrbQ5/CF25ThZy8tTivOnR/VZ
         StL9EXnzpT6LghcBO9TR1/sIPhxF+xm3pbJAZeCvwOqL4fdt2xBFilhsoov2uBufICVw
         Xv1ojWwh9z9ZiuoAD6bVENOf3bQjNbw8SeL48Wrn8ZuWvZSafizBIc6ywqipGSmiNAYa
         yliRedmXSHJOPumZJ8Ir91Juwc69wK8qyUmIML1OGvWRgTDNnCGzxb+6CECX+uNPFVJn
         4yuw==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20251104; t=1776974656; x=1777579456;
        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;
        bh=OgPgLrJe3moAhlzkuCpYhzQa4RXKhr2E3EuEQSE1TaA=;
        b=EtEyMOlYd/6h/2eify09nQe6PXgPkP3d1fU/+lk2tNV3eXSTFVzWQo8i3rVpwWfL9M
         Znml28xWOctYvHUs1JSV8eBKXX9NDLZU6J8O+MM76bT7nR2LUq8vFfGcrdTUgyJwtUNm
         xRYj1xVkd2b+dgtK+xFZr56akH+o8KuyacpkSZ+wV6JbHNN8+NIWng7Hd0IFcSDTxHhd
         RH1XXz3CMk4V7snTLOPrT/f6DqzAXuNU7EhSu3efhnVh7Tj8Vwcl1lWV4Q1IK2Cpd3me
         39aGbQQQ5cAgB6re9/0YjPmGPwlZhPmkCU4NS+zlDctx2+N1bQdnQG5bn2NdcBuigQMS
         oz0g==
X-Gm-Message-State: AOJu0YyygUs72PI++kVT7iItPIfFUFysN5FDMBEpe7w1jo4vwDu8YSv2
	qZyjLzKn9zRzB45xgy57QCVOHbVA65sPwK8BZofv6NN4SAwt85y+oAxYDDJZsrv5
X-Gm-Gg: AeBDieubz/82gWMIHxKdhpqpClHWP4Ed+XK7cuE+Sy59uASP9wdGcfE3xZidiEFxl+x
	cWKrMOUVE46EdteRlNTUSkKyfJKRe8dJFMSB8Hfrk2klXTwhin0Gt0UYBUqFBeUhytg5M7S9++X
	uOSGAMiuWlDwQrB2nQjFSSqAgL3aZRICCAt2qvhoCYLxALbM5JolM9+eKo1KwUyaVNw1vLF9VVt
	OLNT22TlXoVT8kSQ7tjZ3HXDSJHuj8WcB16dpR+d6zI90LDI8QK9M3sqcPjf2Iw1MvVd6CdpPly
	Qu41xstp2bC7FKCq++E1ztDMLxEa1Tl1NSS6HHowA9eMJPqaZxqd3ZODkzZD6t8eChZQJ+K8TBd
	X6AsgGyRCshV/5WpXRdyV1FhMJLA8+uLNH82emph89EpSBZFcUH5i02HNrgGfW67JBhAj72FKDG
	Fi5sXXaVbZsCF31zfSldBUbe0/cvhIvNNMOhGkG4L9Ien8rbfqdhBauV2Iz9CFLeCpADJfqNWyb
	wpy
X-Received: by 2002:a05:600c:8586:b0:489:e49:f766 with SMTP id 5b1f17b1804b1-4890e49f7d8mr206987525e9.17.1776974656302;
        Thu, 23 Apr 2026 13:04:16 -0700 (PDT)
From: Frediano Ziglio <freddy77@gmail.com>
X-Google-Original-From: Frediano Ziglio <frediano.ziglio@cloud.com>
To: xen-devel@lists.xenproject.org
Cc: Frediano Ziglio <frediano.ziglio@cloud.com>,
	Jan Beulich <jbeulich@suse.com>,
	Andrew Cooper <andrew.cooper3@citrix.com>,
	=?UTF-8?q?Roger=20Pau=20Monn=C3=A9?= <roger.pau@citrix.com>,
	Teddy Astie <teddy.astie@vates.tech>,
	Anthony PERARD <anthony.perard@vates.tech>,
	Juergen Gross <jgross@suse.com>
Subject: [PATCH 0/4] Minor xenguest optimisations
Date: Thu, 23 Apr 2026 21:03:55 +0100
Message-ID: <20260423200406.28178-1-frediano.ziglio@cloud.com>
X-Mailer: git-send-email 2.43.0
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
X-purgate-ID: tlsNG-ef75cf/1776974657-ACF66C48-7E9FBD09/0/0
X-purgate-type: clean
X-purgate-size: 754

Reduce some number of parts passed to writev.
Avoid possible allocation sending data with writev.
Reduce number of allocations sending memory state.

Edwin Török (1):
  tools/libs/guest: allocate various migration arrays just once

Frediano Ziglio (3):
  xenguest: Reduce number of parts in write_split_record
  xenguest: Reduce number of I/O vectors in write_batch
  xenguest: Allows writev_exact to change iov array

 tools/libs/ctrl/xc_private.c    | 26 ++-------
 tools/libs/ctrl/xc_private.h    |  2 +-
 tools/libs/guest/xg_sr_common.c |  6 +-
 tools/libs/guest/xg_sr_common.h | 13 +++++
 tools/libs/guest/xg_sr_save.c   | 99 ++++++++++++++-------------------
 5 files changed, 63 insertions(+), 83 deletions(-)

-- 
2.43.0



From xen-devel-bounces@lists.xenproject.org Fri Apr 24 05:57:44 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Fri, 24 Apr 2026 05:57:44 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1293113.1571019 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wG9Xo-0006Fx-JI; Fri, 24 Apr 2026 05:57:40 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1293113.1571019; Fri, 24 Apr 2026 05:57: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 1wG9Xo-0006Fo-Gb; Fri, 24 Apr 2026 05:57:40 +0000
Received: by outflank-mailman (input) for mailman id 1293113;
 Fri, 24 Apr 2026 05:57:39 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <vijayanand.jitta@oss.qualcomm.com>)
 id 1wG9Xn-0006F4-07
 for xen-devel@lists.xenproject.org; Fri, 24 Apr 2026 05:57:39 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wG9Xm-009MMK-D3
 for xen-devel@lists.xenproject.org; Fri, 24 Apr 2026 07:57:38 +0200
Received: from [10.42.69.9] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <vijayanand.jitta@oss.qualcomm.com>)
 id 69eb0642-5cb7-0a2a0a5109dd-0a2a4509e78e-14
 for <xen-devel@lists.xenproject.org>; Fri, 24 Apr 2026 07:57:38 +0200
Received: from [205.220.168.131] (helo=mx0a-0031df01.pphosted.com)
 by tlsNG-bad1c0.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.1)
 (envelope-from <vijayanand.jitta@oss.qualcomm.com>)
 id 69eb0650-2497-0a2a45090019-cddca8838b96-3
 for <xen-devel@lists.xenproject.org>; Fri, 24 Apr 2026 07:57:37 +0200
Received: from pps.filterd (m0279865.ppops.net [127.0.0.1])
 by mx0a-0031df01.pphosted.com (8.18.1.11/8.18.1.11) with ESMTP id
 63O0q6WR2292077
 for <xen-devel@lists.xenproject.org>; Fri, 24 Apr 2026 05:57:36 GMT
Received: from mail-pj1-f72.google.com (mail-pj1-f72.google.com
 [209.85.216.72])
 by mx0a-0031df01.pphosted.com (PPS) with ESMTPS id 4dqxbp8trm-1
 (version=TLSv1.3 cipher=TLS_AES_128_GCM_SHA256 bits=128 verify=NOT)
 for <xen-devel@lists.xenproject.org>; Fri, 24 Apr 2026 05:57:35 +0000 (GMT)
Received: by mail-pj1-f72.google.com with SMTP id
 98e67ed59e1d1-35fbaada0caso6630629a91.3
 for <xen-devel@lists.xenproject.org>; Thu, 23 Apr 2026 22:57:35 -0700 (PDT)
Received: from hu-vjitta-hyd.qualcomm.com ([202.46.23.25])
 by smtp.gmail.com with ESMTPSA id
 41be03b00d2f7-c79770512afsm17288101a12.31.2026.04.23.22.57.23
 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
 Thu, 23 Apr 2026 22:57:33 -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=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="Cc:To:In-Reply-To:References:Message-Id:Content-Transfer-Encoding:MIME-Version:Subject:Date:From"
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=
	QkYW84mNfsxJu25KdM9HhqHWqHHn7yyj15gOr+bOnfo=; b=g7cfeXDVAn3snLm6
	E1quUpkxWxFy4WplkkUVShkx7qxuwSa8rSOoL5CQj0TiunCMKlVceeHnJ1DJA5LA
	bp6L7idWgJBpIEFmCYpTOUOWbQ9+mgBg+IfduEullKSfB7BkALiGYfBNv9GnPeVB
	7sl6a2UzIflDbUnDp9gDH1YtKfab1C1vLw1rnSEWmCWusw52GfaF2/XAow5rAV4u
	zvb/J4VqYDvAOxHKVo9s93kaSVfvCTgslusZ4AWRcVXvWpjd967QbRiN+yNq2IDN
	jiIHmrprUjiFsVfm9uP21SRsU7Wtqzy6u6znqP4vSahr9cI4i7DNkXSOil08nQRY
	+YR/pg==
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=oss.qualcomm.com; s=google; t=1777010255; x=1777615055; darn=lists.xenproject.org;
        h=cc:to:in-reply-to:references:message-id:content-transfer-encoding
         :mime-version:subject:date:from:from:to:cc:subject:date:message-id
         :reply-to;
        bh=QkYW84mNfsxJu25KdM9HhqHWqHHn7yyj15gOr+bOnfo=;
        b=KsLvKjhuoV2l1gnkBNWGf7r/TRMNZLwTL64+3ojQnROLVwKWluxcKnQNe3dyT5hKjP
         AuycFluHHjXiHyWg+lz9v0gYvRdiAFzzFlgOloLUa2xBqJepTDqGnnjUfJyTEPr9YYyH
         UltwV0RFRmxorkOYILM0qfEOiwrz+gI+GvH+CIYX+2aUpuaJYSj9zxSxkp/DNFKiUcRB
         k51ePsIIPMHV9rp5LEbxxH84WAV4rZmaRiJIs/Dhdz2iQy68yPnxKJz8TEaMkWZAE/ps
         lfZVQQeUiC9ZjVNDXqzJuaSaIOCOHtMmAOEPpr9Wv9MgTtfy2EL7EYVohA5PE18tJJwz
         qvrw==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20251104; t=1777010255; x=1777615055;
        h=cc:to:in-reply-to:references:message-id:content-transfer-encoding
         :mime-version:subject:date:from:x-gm-gg:x-gm-message-state:from:to
         :cc:subject:date:message-id:reply-to;
        bh=QkYW84mNfsxJu25KdM9HhqHWqHHn7yyj15gOr+bOnfo=;
        b=Dl096uCWctmfbdY24MkrT0YIwLyeFXoLaiS6j9YS7ULZaN2QxVN3qWF+bz2wSYhKSd
         bUh95GmAUXl4zBf4o2hoNKgO+HARszKc30dM3ZGLAtQMAbZLnqHPxah29EFaP4zWkUbw
         PDpMoK5dviu7imnhWEajqrQ7d07wwzdh3y64UzSiahXGPl8dIjhTJD4356Xf8EQzOqEI
         1NyVt37KLA2msLDS+080IOYPy/1a5W89TEbEJbAtBMMKUt1dMCr4BlpW2NcgOoPlSIp6
         56s66Y+gQByNFL6vT/xrTsewAoW805V+w/kyitUJLl9PLMAc2trQdiPfuhFlR9Ik2Iwx
         /OFA==
X-Forwarded-Encrypted: i=1; AFNElJ8x7+OfwgyzY2J7dX2lj8cw3iNhNfXM4YCAovpFvUfq+u9KaKwaHG+t3Bl84C8s2hXCxub3UG1dlmE=@lists.xenproject.org
X-Gm-Message-State: AOJu0Yywh4fZlw0if4lyFD0I5WmLtFLIV69IvQVagCMlXKBzYUWracaT
	iAslmwGNjjBZnbsIzJjIoU+FFY/GmpEvn9krERiy1c4lIr2msfsNjXuoem9K6FzPFF7djS088jn
	GcGsGfsF2mn+V7sYIzGPjeE3ofUGzgrDkS1mRnVKUvnp1hO1xpSk5IuXvK/LhO6HRPdT5Uw==
X-Gm-Gg: AeBDiesL09KSDz/9G8eSre+LEqT2vUxbCcfwK3x/aAuRcpsZb52DdJ13oRb/bG/gIYc
	bN1+4Kj9SQu+dxJxYHCS0ANmmFhSHkucrm1agA5cKHLQpREJWBhZTwvbK6Lf39oKJ0JYHJPUr5A
	IyxbdxkgMYLEFGk2JDHiOttzoC6ovEKoQBfBa+RWXTOfK8QC43wSwiyk0jNAbdtW8KThtehztNq
	x5ubkPyQUCxw4ppdmBvGL6QaVNEJtQjOI5AY75x1WUDJEEHdb4CAkyvZXJezBCDYIQpSdyGIFIa
	2xuYiXwEPPhT3rUkgHXA4WjBJbu/25GoadiJJ6uc4THeVnqX1olZNsT+wG2oikuvUQwe44W5kRe
	QLUQulv4ze2C9ARP+2yjDtEiMPP5Z+7jQERScxQRGNZwpKfLj0bHEQY6H7epdSpo43p4=
X-Received: by 2002:a05:6a21:9983:b0:39c:12c5:c6f5 with SMTP id adf61e73a8af0-3a08d73bfe5mr32758945637.18.1777010254754;
        Thu, 23 Apr 2026 22:57:34 -0700 (PDT)
X-Received: by 2002:a05:6a21:9983:b0:39c:12c5:c6f5 with SMTP id adf61e73a8af0-3a08d73bfe5mr32758909637.18.1777010254185;
        Thu, 23 Apr 2026 22:57:34 -0700 (PDT)
From: Vijayanand Jitta <vijayanand.jitta@oss.qualcomm.com>
Date: Fri, 24 Apr 2026 11:26:08 +0530
Subject: [PATCH v14 1/3] of: Add convenience wrappers for of_map_id()
MIME-Version: 1.0
Content-Type: text/plain; charset="utf-8"
Content-Transfer-Encoding: 7bit
Message-Id: <20260424-parse_iommu_cells-v14-1-fd02f11b6c38@oss.qualcomm.com>
References: <20260424-parse_iommu_cells-v14-0-fd02f11b6c38@oss.qualcomm.com>
In-Reply-To: <20260424-parse_iommu_cells-v14-0-fd02f11b6c38@oss.qualcomm.com>
To: Nipun Gupta <nipun.gupta@amd.com>, Nikhil Agarwal <nikhil.agarwal@amd.com>,
        Joerg Roedel <joro@8bytes.org>, Will Deacon <will@kernel.org>,
        Robin Murphy <robin.murphy@arm.com>, Marc Zyngier <maz@kernel.org>,
        Lorenzo Pieralisi <lpieralisi@kernel.org>,
        Thomas Gleixner <tglx@kernel.org>,
        Saravana Kannan <saravanak@kernel.org>,
        Richard Zhu <hongxing.zhu@nxp.com>,
        Lucas Stach <l.stach@pengutronix.de>,
        =?utf-8?q?Krzysztof_Wilczy=C5=84ski?= <kwilczynski@kernel.org>,
        Manivannan Sadhasivam <mani@kernel.org>,
        Bjorn Helgaas <bhelgaas@google.com>, Frank Li <Frank.Li@nxp.com>,
        Sascha Hauer <s.hauer@pengutronix.de>,
        Pengutronix Kernel Team <kernel@pengutronix.de>,
        Fabio Estevam <festevam@gmail.com>, Juergen Gross <jgross@suse.com>,
        Stefano Stabellini <sstabellini@kernel.org>,
        Oleksandr Tyshchenko <oleksandr_tyshchenko@epam.com>,
        Dmitry Baryshkov <dmitry.baryshkov@oss.qualcomm.com>,
        Konrad Dybcio <konrad.dybcio@oss.qualcomm.com>,
        Bjorn Andersson <bjorn.andersson@oss.qualcomm.com>,
        Rob Herring <robh@kernel.org>, Conor Dooley <conor+dt@kernel.org>,
        Krzysztof Kozlowski <krzk+dt@kernel.org>,
        Prakash Gupta <prakash.gupta@oss.qualcomm.com>,
        Vikash Garodia <vikash.garodia@oss.qualcomm.com>
Cc: linux-kernel@vger.kernel.org, iommu@lists.linux.dev,
        linux-arm-kernel@lists.infradead.org, devicetree@vger.kernel.org,
        linux-pci@vger.kernel.org, imx@lists.linux.dev,
        xen-devel@lists.xenproject.org, linux-arm-msm@vger.kernel.org,
        Vijayanand Jitta <vijayanand.jitta@oss.qualcomm.com>
X-Mailer: b4 0.15.2
X-Developer-Signature: v=1; a=ed25519-sha256; t=1777010232; l=8620;
 i=vijayanand.jitta@oss.qualcomm.com; s=20260301; h=from:subject:message-id;
 bh=Bsp9hT6sgzNh1NrIZ0uduUy4Yj5U0gq9szC+ECoPqVA=;
 b=8NWpPedhLlqQ7b2HqBvErn44emkQL1+f69yBIykemc4nTU8mhLdWyBM6UrLv2aTheTYRGoULf
 4gmGUfVAgn/Dyc1fN3co5ZAOWZ919HjRTHUr8oPlkiKa+0pRuDTHh2z
X-Developer-Key: i=vijayanand.jitta@oss.qualcomm.com; a=ed25519;
 pk=Lpi7Cs3wHe8KZtqvyci7FTOLzsKpEHKGCaPNZw+1zRI=
X-Proofpoint-GUID: wHUaOPJ4LLCUzmkMWtvjdf0r8JOMZrqy
X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwNDI0MDA1MSBTYWx0ZWRfX24BAzfSz0++b
 tNJ9HJFMu6ekmhxi2NF1FTy8ERPXfOr5iZrG6yQox7SXtRtu5IfA75YYEuWoeN5tGkoyjVOD4OF
 de4abra0AjcKO8NKX94G/DdwOQddKPhlBP68QHqs4MlkU+b81oTIau/JzlABL19ebg2ufQ9umZn
 lD+Sbx6EC3KHgB8FeSi2gID+BJQM2bqLmUPbx7SsTG1taODN4nZDZ26ke24dcHsSpdOe1iEzlxK
 Cml0hQkXAirJwcqLdoAutB0YdoTso1aSos9z4Nu3YF9sUBzrAuhfJrq0hDSUh4e37j/GlosWFsW
 jF4xD1mPh6iXh5ZUEB7HAlMgHVd0H69PUYRhtR1y3a3BhG36I2Qbbs9QodrM2hjs7FrD7O4c4pg
 f2lLG6wyV22vPzUH7kF0tH2wPrQTLSsNBGapaoa71X58nyZwSKUbz+lXVy9HBTtTprwHHdGDk0R
 dHq38L/pBmvc0tfhbBA==
X-Proofpoint-ORIG-GUID: wHUaOPJ4LLCUzmkMWtvjdf0r8JOMZrqy
X-Authority-Analysis: v=2.4 cv=X+li7mTe c=1 sm=1 tr=0 ts=69eb064f cx=c_pps
 a=RP+M6JBNLl+fLTcSJhASfg==:117 a=ZePRamnt/+rB5gQjfz0u9A==:17
 a=IkcTkHD0fZMA:10 a=A5OVakUREuEA:10 a=s4-Qcg_JpJYA:10
 a=VkNPw1HP01LnGYTKEx00:22 a=u7WPNUs3qKkmUXheDGA7:22 a=Um2Pa8k9VHT-vaBCBUpS:22
 a=7CQSdrXTAAAA:8 a=VwQbUJbxAAAA:8 a=8AirrxEcAAAA:8 a=1XWaLZrsAAAA:8
 a=EUspDBNiAAAA:8 a=f4O9XJQV64orvU1ydW8A:9 a=QEXdDO2ut3YA:10
 a=iS9zxrgQBfv6-_F4QbHw:22 a=a-qgeE7W1pNrGK8U0ZQC:22 a=ST-jHhOKWsTCqRlWije3:22
X-Proofpoint-Virus-Version: vendor=baseguard
 engine=ICAP:2.0.293,Aquarius:18.0.1143,Hydra:6.1.51,FMLib:17.12.100.49
 definitions=2026-04-23_03,2026-04-21_02,2025-10-01_01
X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0
 malwarescore=0 adultscore=0 bulkscore=0 priorityscore=1501 suspectscore=0
 clxscore=1015 impostorscore=0 spamscore=0 phishscore=0 lowpriorityscore=0
 classifier=typeunknown authscore=0 authtc= authcc= route=outbound adjust=0
 reason=mlx scancount=1 engine=8.22.0-2604200000 definitions=main-2604240051
X-purgate-ID: tlsNG-bad1c0/1777010258-404A9A53-7A92687C/0/0
X-purgate-type: clean
X-purgate-size: 8667

From: Robin Murphy <robin.murphy@arm.com>

Since we now have quite a few users parsing "iommu-map" and "msi-map"
properties, give them some wrappers to conveniently encapsulate the
appropriate sets of property names. This will also make it easier to
then change of_map_id() to correctly account for specifier cells.

Reviewed-by: Rob Herring (Arm) <robh@kernel.org>
Reviewed-by: Frank Li <Frank.Li@nxp.com>
Acked-by: Marc Zyngier <maz@kernel.org>
Acked-by: Bjorn Helgaas <bhelgaas@google.com>
Signed-off-by: Robin Murphy <robin.murphy@arm.com>
Signed-off-by: Vijayanand Jitta <vijayanand.jitta@oss.qualcomm.com>
---
 drivers/cdx/cdx_msi.c                    |  3 +--
 drivers/iommu/of_iommu.c                 |  4 +---
 drivers/irqchip/irq-gic-its-msi-parent.c |  2 +-
 drivers/of/base.c                        | 38 ++++++++++++++++++++++++++++++++
 drivers/of/irq.c                         |  3 +--
 drivers/pci/controller/dwc/pci-imx6.c    |  6 ++---
 drivers/pci/controller/pcie-apple.c      |  3 +--
 drivers/xen/grant-dma-ops.c              |  3 +--
 include/linux/of.h                       | 18 +++++++++++++++
 9 files changed, 64 insertions(+), 16 deletions(-)

diff --git a/drivers/cdx/cdx_msi.c b/drivers/cdx/cdx_msi.c
index 91b95422b263..63b3544ec997 100644
--- a/drivers/cdx/cdx_msi.c
+++ b/drivers/cdx/cdx_msi.c
@@ -128,8 +128,7 @@ static int cdx_msi_prepare(struct irq_domain *msi_domain,
 	int ret;
 
 	/* Retrieve device ID from requestor ID using parent device */
-	ret = of_map_id(parent->of_node, cdx_dev->msi_dev_id, "msi-map", "msi-map-mask",
-			NULL, &dev_id);
+	ret = of_map_msi_id(parent->of_node, cdx_dev->msi_dev_id, NULL, &dev_id);
 	if (ret) {
 		dev_err(dev, "of_map_id failed for MSI: %d\n", ret);
 		return ret;
diff --git a/drivers/iommu/of_iommu.c b/drivers/iommu/of_iommu.c
index 6b989a62def2..a511ecf21fcd 100644
--- a/drivers/iommu/of_iommu.c
+++ b/drivers/iommu/of_iommu.c
@@ -48,9 +48,7 @@ static int of_iommu_configure_dev_id(struct device_node *master_np,
 	struct of_phandle_args iommu_spec = { .args_count = 1 };
 	int err;
 
-	err = of_map_id(master_np, *id, "iommu-map",
-			 "iommu-map-mask", &iommu_spec.np,
-			 iommu_spec.args);
+	err = of_map_iommu_id(master_np, *id, &iommu_spec.np, iommu_spec.args);
 	if (err)
 		return err;
 
diff --git a/drivers/irqchip/irq-gic-its-msi-parent.c b/drivers/irqchip/irq-gic-its-msi-parent.c
index d36b278ae66c..b63343a227a9 100644
--- a/drivers/irqchip/irq-gic-its-msi-parent.c
+++ b/drivers/irqchip/irq-gic-its-msi-parent.c
@@ -180,7 +180,7 @@ static int of_pmsi_get_msi_info(struct irq_domain *domain, struct device *dev, u
 
 	struct device_node *msi_ctrl __free(device_node) = NULL;
 
-	return of_map_id(dev->of_node, dev->id, "msi-map", "msi-map-mask", &msi_ctrl, dev_id);
+	return of_map_msi_id(dev->of_node, dev->id, &msi_ctrl, dev_id);
 }
 
 static int its_pmsi_prepare(struct irq_domain *domain, struct device *dev,
diff --git a/drivers/of/base.c b/drivers/of/base.c
index 57420806c1a2..ae04487bd614 100644
--- a/drivers/of/base.c
+++ b/drivers/of/base.c
@@ -2201,3 +2201,41 @@ int of_map_id(const struct device_node *np, u32 id,
 	return 0;
 }
 EXPORT_SYMBOL_GPL(of_map_id);
+
+/**
+ * of_map_iommu_id - Translate an ID using "iommu-map" bindings.
+ * @np: root complex device node.
+ * @id: Requester ID of the device (e.g. PCI RID/BDF or a platform
+ *      stream/device ID) used as the lookup key in the iommu-map table.
+ * @target: optional pointer to a target device node.
+ * @id_out: optional pointer to receive the translated ID.
+ *
+ * Convenience wrapper around of_map_id() using "iommu-map" and "iommu-map-mask".
+ *
+ * Return: 0 on success or a standard error code on failure.
+ */
+int of_map_iommu_id(const struct device_node *np, u32 id,
+		    struct device_node **target, u32 *id_out)
+{
+	return of_map_id(np, id, "iommu-map", "iommu-map-mask", target, id_out);
+}
+EXPORT_SYMBOL_GPL(of_map_iommu_id);
+
+/**
+ * of_map_msi_id - Translate an ID using "msi-map" bindings.
+ * @np: root complex device node.
+ * @id: Requester ID of the device (e.g. PCI RID/BDF or a platform
+ *      stream/device ID) used as the lookup key in the msi-map table.
+ * @target: optional pointer to a target device node.
+ * @id_out: optional pointer to receive the translated ID.
+ *
+ * Convenience wrapper around of_map_id() using "msi-map" and "msi-map-mask".
+ *
+ * Return: 0 on success or a standard error code on failure.
+ */
+int of_map_msi_id(const struct device_node *np, u32 id,
+		  struct device_node **target, u32 *id_out)
+{
+	return of_map_id(np, id, "msi-map", "msi-map-mask", target, id_out);
+}
+EXPORT_SYMBOL_GPL(of_map_msi_id);
diff --git a/drivers/of/irq.c b/drivers/of/irq.c
index 6367c67732d2..e37c1b3f8736 100644
--- a/drivers/of/irq.c
+++ b/drivers/of/irq.c
@@ -817,8 +817,7 @@ u32 of_msi_xlate(struct device *dev, struct device_node **msi_np, u32 id_in)
 	 * "msi-map" or an "msi-parent" property.
 	 */
 	for (parent_dev = dev; parent_dev; parent_dev = parent_dev->parent) {
-		if (!of_map_id(parent_dev->of_node, id_in, "msi-map",
-				"msi-map-mask", msi_np, &id_out))
+		if (!of_map_msi_id(parent_dev->of_node, id_in, msi_np, &id_out))
 			break;
 		if (!of_check_msi_parent(parent_dev->of_node, msi_np))
 			break;
diff --git a/drivers/pci/controller/dwc/pci-imx6.c b/drivers/pci/controller/dwc/pci-imx6.c
index a5b8d0b71677..bff8289f804a 100644
--- a/drivers/pci/controller/dwc/pci-imx6.c
+++ b/drivers/pci/controller/dwc/pci-imx6.c
@@ -1144,8 +1144,7 @@ static int imx_pcie_add_lut_by_rid(struct imx_pcie *imx_pcie, u32 rid)
 	u32 sid = 0;
 
 	target = NULL;
-	err_i = of_map_id(dev->of_node, rid, "iommu-map", "iommu-map-mask",
-			  &target, &sid_i);
+	err_i = of_map_iommu_id(dev->of_node, rid, &target, &sid_i);
 	if (target) {
 		of_node_put(target);
 	} else {
@@ -1158,8 +1157,7 @@ static int imx_pcie_add_lut_by_rid(struct imx_pcie *imx_pcie, u32 rid)
 	}
 
 	target = NULL;
-	err_m = of_map_id(dev->of_node, rid, "msi-map", "msi-map-mask",
-			  &target, &sid_m);
+	err_m = of_map_msi_id(dev->of_node, rid, &target, &sid_m);
 
 	/*
 	 *   err_m      target
diff --git a/drivers/pci/controller/pcie-apple.c b/drivers/pci/controller/pcie-apple.c
index 2d92fc79f6dd..a0937b7b3c4d 100644
--- a/drivers/pci/controller/pcie-apple.c
+++ b/drivers/pci/controller/pcie-apple.c
@@ -764,8 +764,7 @@ static int apple_pcie_enable_device(struct pci_host_bridge *bridge, struct pci_d
 	dev_dbg(&pdev->dev, "added to bus %s, index %d\n",
 		pci_name(pdev->bus->self), port->idx);
 
-	err = of_map_id(port->pcie->dev->of_node, rid, "iommu-map",
-			"iommu-map-mask", NULL, &sid);
+	err = of_map_iommu_id(port->pcie->dev->of_node, rid, NULL, &sid);
 	if (err)
 		return err;
 
diff --git a/drivers/xen/grant-dma-ops.c b/drivers/xen/grant-dma-ops.c
index c2603e700178..1b7696b2d762 100644
--- a/drivers/xen/grant-dma-ops.c
+++ b/drivers/xen/grant-dma-ops.c
@@ -325,8 +325,7 @@ static int xen_dt_grant_init_backend_domid(struct device *dev,
 		struct pci_dev *pdev = to_pci_dev(dev);
 		u32 rid = PCI_DEVID(pdev->bus->number, pdev->devfn);
 
-		if (of_map_id(np, rid, "iommu-map", "iommu-map-mask", &iommu_spec.np,
-				iommu_spec.args)) {
+		if (of_map_iommu_id(np, rid, &iommu_spec.np, iommu_spec.args)) {
 			dev_dbg(dev, "Cannot translate ID\n");
 			return -ESRCH;
 		}
diff --git a/include/linux/of.h b/include/linux/of.h
index be6ec4916adf..fe841f3cc747 100644
--- a/include/linux/of.h
+++ b/include/linux/of.h
@@ -465,6 +465,12 @@ int of_map_id(const struct device_node *np, u32 id,
 	       const char *map_name, const char *map_mask_name,
 	       struct device_node **target, u32 *id_out);
 
+int of_map_iommu_id(const struct device_node *np, u32 id,
+		    struct device_node **target, u32 *id_out);
+
+int of_map_msi_id(const struct device_node *np, u32 id,
+		  struct device_node **target, u32 *id_out);
+
 phys_addr_t of_dma_get_max_cpu_address(struct device_node *np);
 
 struct kimage;
@@ -934,6 +940,18 @@ static inline int of_map_id(const struct device_node *np, u32 id,
 	return -EINVAL;
 }
 
+static inline int of_map_iommu_id(const struct device_node *np, u32 id,
+				  struct device_node **target, u32 *id_out)
+{
+	return -EINVAL;
+}
+
+static inline int of_map_msi_id(const struct device_node *np, u32 id,
+				struct device_node **target, u32 *id_out)
+{
+	return -EINVAL;
+}
+
 static inline phys_addr_t of_dma_get_max_cpu_address(struct device_node *np)
 {
 	return PHYS_ADDR_MAX;

-- 
2.34.1



From xen-devel-bounces@lists.xenproject.org Fri Apr 24 05:57:44 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Fri, 24 Apr 2026 05:57:44 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1293112.1571010 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wG9Xd-00060C-Aa; Fri, 24 Apr 2026 05:57:29 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1293112.1571010; Fri, 24 Apr 2026 05:57: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 1wG9Xd-0005zs-4a; Fri, 24 Apr 2026 05:57:29 +0000
Received: by outflank-mailman (input) for mailman id 1293112;
 Fri, 24 Apr 2026 05:57:28 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <vijayanand.jitta@oss.qualcomm.com>)
 id 1wG9Xc-0005zm-Fo
 for xen-devel@lists.xenproject.org; Fri, 24 Apr 2026 05:57:28 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wG9Xb-006WZ5-NU
 for xen-devel@lists.xenproject.org; Fri, 24 Apr 2026 07:57:27 +0200
Received: from [10.42.69.7] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <vijayanand.jitta@oss.qualcomm.com>)
 id 69eb0640-e002-0a2a0a5209dd-0a2a45079180-44
 for <xen-devel@lists.xenproject.org>; Fri, 24 Apr 2026 07:57:27 +0200
Received: from [205.220.168.131] (helo=mx0a-0031df01.pphosted.com)
 by tlsNG-ef75cf.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.1)
 (envelope-from <vijayanand.jitta@oss.qualcomm.com>)
 id 69eb0645-229c-0a2a45070019-cddca88354c4-3
 for <xen-devel@lists.xenproject.org>; Fri, 24 Apr 2026 07:57:27 +0200
Received: from pps.filterd (m0279865.ppops.net [127.0.0.1])
 by mx0a-0031df01.pphosted.com (8.18.1.11/8.18.1.11) with ESMTP id
 63O0phBU2291596
 for <xen-devel@lists.xenproject.org>; Fri, 24 Apr 2026 05:57:25 GMT
Received: from mail-pg1-f199.google.com (mail-pg1-f199.google.com
 [209.85.215.199])
 by mx0a-0031df01.pphosted.com (PPS) with ESMTPS id 4dqxbp8tqx-1
 (version=TLSv1.3 cipher=TLS_AES_128_GCM_SHA256 bits=128 verify=NOT)
 for <xen-devel@lists.xenproject.org>; Fri, 24 Apr 2026 05:57:24 +0000 (GMT)
Received: by mail-pg1-f199.google.com with SMTP id
 41be03b00d2f7-c7989b7cdd0so7500688a12.1
 for <xen-devel@lists.xenproject.org>; Thu, 23 Apr 2026 22:57:24 -0700 (PDT)
Received: from hu-vjitta-hyd.qualcomm.com ([202.46.23.25])
 by smtp.gmail.com with ESMTPSA id
 41be03b00d2f7-c79770512afsm17288101a12.31.2026.04.23.22.57.12
 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
 Thu, 23 Apr 2026 22:57:23 -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=qcppdkim1 header.d=qualcomm.com header.i="@qualcomm.com" header.h="Cc:Content-Transfer-Encoding:Content-Type:Date:From:Message-Id:MIME-Version:Subject:To"; dkim=pass header.s=google header.d=oss.qualcomm.com header.i="@oss.qualcomm.com" header.h="Cc:To:Content-Transfer-Encoding:MIME-Version:Message-Id:Date:Subject:From"
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=qualcomm.com; h=
	cc:content-transfer-encoding:content-type:date:from:message-id
	:mime-version:subject:to; s=qcppdkim1; bh=yTMN2l5WkkkwpWqXhyGv2M
	qcOf1QG4ZJfDdEl00tCos=; b=MQtcYpEUYiNQ6ouvYFCY2hN7w3wo8Buj0qjRiY
	Cs0V26GdDiI+8cixO9L0s0GnotUXPU8KmW2esxPobQoRrgws7mf8/sBbUwqf3/5I
	WX21nQs9JKIAXhCr6frgHg2PJk/Jb19jf+CAxtbdrrrNhuR/io1XbPtLYxWdqeEa
	GKJfQJHDyKrvYvzLyqt3cYfCM8CsDZQUqKTT4rstdydZpL9aM6hzshD3mhGukIFe
	V7fQiubMYXayk0ncykH0WF8j5wU1MozQpfvFgvH/mtA90uk13P83jOB3nAndEZ9a
	LY1am2uRPuODluYYviP6O5n7FjEtVKvm1rHMWgaRl7N9eP8g==
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=oss.qualcomm.com; s=google; t=1777010244; x=1777615044; darn=lists.xenproject.org;
        h=cc:to:content-transfer-encoding:mime-version:message-id:date
         :subject:from:from:to:cc:subject:date:message-id:reply-to;
        bh=yTMN2l5WkkkwpWqXhyGv2MqcOf1QG4ZJfDdEl00tCos=;
        b=RoF2IFIAf1WA+fJ1acYEBk8Jq5HdPA/AdQzt96b9FXmHAwrKZZljMIzaGgNkGg87Uo
         mSWfHt19kPfx163AhpqNDuVAIVypeXPLSo4P2lqY9zzSCxrODLl+2GcA4nC9vctXKsa7
         qGHnFDgAylseitmisZR1VIKPpmvZnkhJhKbwSp17kZ6ga3HForggQKx68GrCxpIKHWGJ
         LklpSZA09bNFGKw0kQ8wHSEE4itFuIn3Kr6X/8YCeqQn0u++ba5MVwLkksQChAIs1Pdm
         0HIxMPyiRGjj0FlxWZyJcfvt8GJMU5aCsUixjufycWNh7ue9Ko7U5lV2VQhxyyVLekzY
         XSOA==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20251104; t=1777010244; x=1777615044;
        h=cc:to:content-transfer-encoding:mime-version:message-id:date
         :subject:from:x-gm-gg:x-gm-message-state:from:to:cc:subject:date
         :message-id:reply-to;
        bh=yTMN2l5WkkkwpWqXhyGv2MqcOf1QG4ZJfDdEl00tCos=;
        b=WhWH9Pwwfzsgvn4zXdVMdclgiVmVxHgxWOq9OrKs69WY0KKcbsS9XGViBA8itqCe3Q
         hsn6udABxXcMJizwkBZY5XPJ/akmFv3rGBWelBUjnyBLhbuwGOMKWOpJIDW3Ctb+krU/
         qU6XTATVz4BhpdNPbwIHzCCSEPGomHGb2XLCf4IsRLrYOfa+RrYJVSKpLdX9IQ3gAwaz
         M9oDpRknwCXDo6Gt4CuTLaRQxAq4EdcL3kQyg4wFwNWb0SlCU5bOXJBMF75liC7fxcKo
         Tac7SKcTqcrVaTw6oqZzp82//Dr8okY3VWs/CfCWCkTWvJz+rq/8ZpA4DUqXmZghu02+
         a/+w==
X-Forwarded-Encrypted: i=1; AFNElJ+//7NS2AHnGx5GlU6jnRDt1d99xAMWrUvigUX2Ae020SfzVMNtL1lq74rDOpd7LgkA1YInBefUVxQ=@lists.xenproject.org
X-Gm-Message-State: AOJu0YxPDPatYevpSX4Lsx8TYqblsfKMcP3WoTrGMcvL7lW295+LKumF
	yLqynf1q+14x4ZUXKzhPWVrvIKrDHcGExVkvQ3cVa5DyIARaYvAjbIjDZq0gnMqEup7bo0c459M
	zn4Yi1KjYylCsQgITEm4RhCfpAHsjN+xbO6ct8GelymNCtx1vbyQjx6CaxigJI9SJzFMUWg==
X-Gm-Gg: AeBDieuYElR1dhlvIsbUDaWyWEkygwFY2K39I4UCB7F0wXalF9z7KpyPsyBR5WTsD26
	eaUZ1gxlqzpSmC6I4keFI4eSKj4G94G6OhOr/q0vF0HN7w70KilHU0tjCxQs4aw05lKPK0IH85V
	XscdHSXm4xLoJdFQhJO5leDPwh2AP61xugieNjKn961fHHvDpGkH7WdBt1Zng2ydgumCi0vB/8u
	jdQ8Shl49Q3QtQlNxYtmwSoEk9MLgIJ/zU6RXfV62H3sFfcJoRU7sjhtTnjyilamDYBQh/raq4/
	OdUCsucWXwqKS9T69+nVd2IefG5AKNA6/NqeJIRXnDHTSKRS9ofIoSLxC8Fo7OMLRD+AIaQhg5D
	Zc6l6BotRAKrFxfUzSwOieaNY0ZgHQupFCLTfy3ubLPVF0eCRRtrAp8ouHekhmLfRdd0=
X-Received: by 2002:a05:6a20:7292:b0:39f:ebf7:5ba6 with SMTP id adf61e73a8af0-3a08d7abf91mr32181508637.25.1777010243942;
        Thu, 23 Apr 2026 22:57:23 -0700 (PDT)
X-Received: by 2002:a05:6a20:7292:b0:39f:ebf7:5ba6 with SMTP id adf61e73a8af0-3a08d7abf91mr32181453637.25.1777010243387;
        Thu, 23 Apr 2026 22:57:23 -0700 (PDT)
From: Vijayanand Jitta <vijayanand.jitta@oss.qualcomm.com>
Subject: [PATCH v14 0/3] of: parsing of multi #{iommu,msi}-cells in maps
Date: Fri, 24 Apr 2026 11:26:07 +0530
Message-Id: <20260424-parse_iommu_cells-v14-0-fd02f11b6c38@oss.qualcomm.com>
MIME-Version: 1.0
Content-Type: text/plain; charset="utf-8"
Content-Transfer-Encoding: 8bit
X-B4-Tracking: v=1; b=H4sIAPgF62kC/33PwW7DIAwG4FepOI8KQ2Bhp73HNFWOMStS2nSwR
 puqvPtoL8uB7GLpt+zP8k0UzomLeNndROY5lTSda4DuaSfoiOcPlinUhtBKO2UUyAvmwoc0nU7
 XA/E4FglkzLPrkYcBRd27ZI7p+4G+vdd8TOVryj+PG7O/d//TZi+V7AIMxExkGV6nUvafVxypT
 u1rEXd0BrWWfEsCVSlyOhKiRQj9FgUrStsmBZWCyBEtKe41bVF6RZnmf6ArFZhiMMoyo9+izB/
 Vqb5JmUpF9BrYa+dgaFDLsvwCdDU36+YBAAA=
X-Change-ID: 20260301-parse_iommu_cells-1c33768aebba
To: Nipun Gupta <nipun.gupta@amd.com>, Nikhil Agarwal <nikhil.agarwal@amd.com>,
        Joerg Roedel <joro@8bytes.org>, Will Deacon <will@kernel.org>,
        Robin Murphy <robin.murphy@arm.com>, Marc Zyngier <maz@kernel.org>,
        Lorenzo Pieralisi <lpieralisi@kernel.org>,
        Thomas Gleixner <tglx@kernel.org>,
        Saravana Kannan <saravanak@kernel.org>,
        Richard Zhu <hongxing.zhu@nxp.com>,
        Lucas Stach <l.stach@pengutronix.de>,
        =?utf-8?q?Krzysztof_Wilczy=C5=84ski?= <kwilczynski@kernel.org>,
        Manivannan Sadhasivam <mani@kernel.org>,
        Bjorn Helgaas <bhelgaas@google.com>, Frank Li <Frank.Li@nxp.com>,
        Sascha Hauer <s.hauer@pengutronix.de>,
        Pengutronix Kernel Team <kernel@pengutronix.de>,
        Fabio Estevam <festevam@gmail.com>, Juergen Gross <jgross@suse.com>,
        Stefano Stabellini <sstabellini@kernel.org>,
        Oleksandr Tyshchenko <oleksandr_tyshchenko@epam.com>,
        Dmitry Baryshkov <dmitry.baryshkov@oss.qualcomm.com>,
        Konrad Dybcio <konrad.dybcio@oss.qualcomm.com>,
        Bjorn Andersson <bjorn.andersson@oss.qualcomm.com>,
        Rob Herring <robh@kernel.org>, Conor Dooley <conor+dt@kernel.org>,
        Krzysztof Kozlowski <krzk+dt@kernel.org>,
        Prakash Gupta <prakash.gupta@oss.qualcomm.com>,
        Vikash Garodia <vikash.garodia@oss.qualcomm.com>
Cc: linux-kernel@vger.kernel.org, iommu@lists.linux.dev,
        linux-arm-kernel@lists.infradead.org, devicetree@vger.kernel.org,
        linux-pci@vger.kernel.org, imx@lists.linux.dev,
        xen-devel@lists.xenproject.org, linux-arm-msm@vger.kernel.org,
        Vijayanand Jitta <vijayanand.jitta@oss.qualcomm.com>,
        Charan Teja Kalla <charan.kalla@oss.qualcomm.com>
X-Mailer: b4 0.15.2
X-Developer-Signature: v=1; a=ed25519-sha256; t=1777010232; l=8281;
 i=vijayanand.jitta@oss.qualcomm.com; s=20260301; h=from:subject:message-id;
 bh=PeFaW7Kdrw7pS2+czBSVD/S1WiB/N+6erzrmdMB/5Y8=;
 b=fEKGmPri8LDYPP4nIodsRoCyeyYT1OGPS0OqEqaH/APENLrZpB+Q8nuTYzbfPqq917ee5aP2w
 JYKMUiobPcFDsrp7EnUv2N9T4k7yYV5sMOp4PQ9MR9EoL3rLLaW0Suj
X-Developer-Key: i=vijayanand.jitta@oss.qualcomm.com; a=ed25519;
 pk=Lpi7Cs3wHe8KZtqvyci7FTOLzsKpEHKGCaPNZw+1zRI=
X-Proofpoint-GUID: MVA2ZHppL958jgTHpoTTyUvflq_9EssH
X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwNDI0MDA1MSBTYWx0ZWRfX4wE4YYlKTwuT
 WmBSQ7FcsVmnIgqtv6iYuZTulA4kjwoaPq/pwT2o+kic9jTDcCwjE3ISrd3q1tcZYjK94Nq4yCA
 HotNY/3zY+sVYwGnjAGvjToyTOOgqH0R56P6XwW/rgOxmvcvlxnMPZZlqgl2Q7l6LnC8ThkZs1E
 waTb+y5VFsHeZsUsFRocNJ2mqZP5z47xcjeqMxN6blLd0SUmIoj2JiHrb9dKHHSypsMnknFOczU
 LPNoehoTt19WQWtd0R01LI2Z9SA4MJJqKevHFk4pQ6eviRJN5z2oksTHLHa2Y8mjEJ3hle57k9l
 1ICWZxWXhB7wyjM5Gr5tK9YoJRknwaR5EF7OXwdIeAySZR1Pp133Fn2gZ0xaRB2Zk85IwONyKsi
 2XMnKpJgDwiIjBP47jdqd3evNFd8t7TNvnt2C/rahi+DVDc0ZbHoc8x7vlcVlZZwaA6+JJAqRW/
 tW8QMkmApBGlugjNAmA==
X-Proofpoint-ORIG-GUID: MVA2ZHppL958jgTHpoTTyUvflq_9EssH
X-Authority-Analysis: v=2.4 cv=X+li7mTe c=1 sm=1 tr=0 ts=69eb0644 cx=c_pps
 a=Oh5Dbbf/trHjhBongsHeRQ==:117 a=ZePRamnt/+rB5gQjfz0u9A==:17
 a=IkcTkHD0fZMA:10 a=A5OVakUREuEA:10 a=s4-Qcg_JpJYA:10
 a=VkNPw1HP01LnGYTKEx00:22 a=u7WPNUs3qKkmUXheDGA7:22 a=Um2Pa8k9VHT-vaBCBUpS:22
 a=VwQbUJbxAAAA:8 a=COk6AnOGAAAA:8 a=NEAV23lmAAAA:8 a=bC-a23v3AAAA:8
 a=EUspDBNiAAAA:8 a=zd2uoN0lAAAA:8 a=tA7aZXjiAAAA:8 a=7CQSdrXTAAAA:8
 a=8AirrxEcAAAA:8 a=1XWaLZrsAAAA:8 a=pGLkceISAAAA:8 a=iox4zFpeAAAA:8
 a=DBfv99YmAAAA:8 a=JfrnYn6hAAAA:8 a=cWRNjhkoAAAA:8 a=fRNrpDd4OrOfg74B-YAA:9
 a=3ZKOabzyN94A:10 a=QEXdDO2ut3YA:10 a=_Vgx9l1VpLgwpw_dHYaR:22
 a=TjNXssC_j7lpFel5tvFf:22 a=FO4_E8m0qiDe52t0p3_H:22 a=kIIFJ0VLUOy1gFZzwZHL:22
 a=a-qgeE7W1pNrGK8U0ZQC:22 a=ST-jHhOKWsTCqRlWije3:22 a=WzC6qhA0u3u7Ye7llzcV:22
 a=1CNFftbPRP8L7MoqJWF3:22 a=sVa6W5Aao32NNC1mekxh:22
X-Proofpoint-Virus-Version: vendor=baseguard
 engine=ICAP:2.0.293,Aquarius:18.0.1143,Hydra:6.1.51,FMLib:17.12.100.49
 definitions=2026-04-23_03,2026-04-21_02,2025-10-01_01
X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0
 malwarescore=0 adultscore=0 bulkscore=0 priorityscore=1501 suspectscore=0
 clxscore=1015 impostorscore=0 spamscore=0 phishscore=0 lowpriorityscore=0
 classifier=typeunknown authscore=0 authtc= authcc= route=outbound adjust=0
 reason=mlx scancount=1 engine=8.22.0-2604200000 definitions=main-2604240051
X-purgate-ID: tlsNG-ef75cf/1777010247-15458C48-54CDD2FD/0/0
X-purgate-type: clean
X-purgate-size: 8283

So far our parsing of {iommu,msi}-map properties has always blindly
assumed that the output specifiers will always have exactly 1 cell.
This typically does happen to be the case, but is not actually enforced
(and the PCI msi-map binding even explicitly states support for 0 or 1
cells) - as a result we've now ended up with dodgy DTs out in the field
which depend on this behaviour to map a 1-cell specifier for a 2-cell
provider, despite that being bogus per the bindings themselves.

Since there is some potential use[1] in being able to map at least
single input IDs to multi-cell output specifiers (and properly support
0-cell outputs as well), add support for properly parsing and using the
target nodes' #cells values, albeit with the unfortunate complication of
still having to work around expectations of the old behaviour too.
							-- Robin.

Unlike single #{}-cell, it is complex to establish a linear relation
between input 'id' and output specifier for multi-cell properties, thus
it is always expected that len never going to be > 1.

These changes have been tested on QEMU for the arm64 architecture.

Since, this would also need update in dt-schema, raised PR[2] for the
same.

[1] https://lore.kernel.org/all/20250627-video_cb-v3-0-51e18c0ffbce@quicinc.com/
[2] PR for iommu-map dtschema: https://github.com/devicetree-org/dt-schema/pull/184

V14:
  - Updated Patch 2 ("of: Factor arguments passed to of_map_id() into a struct") to
    fix below two issues in of_msi_xlate() that were introduced by the API refactoring:

    1) The refactoring changed of_map_id()'s dual-purpose **target parameter to
    an explicit filter_np parameter. In of_msi_xlate(), this caused
    of_map_msi_id() to return 0 (pass-through) instead of -ENODEV when a node
    has no msi-map, terminating the device hierarchy walk prematurely before
    reaching the root complex node that has the msi-map. This broke MSI
    allocation for PCIe endpoint devices (e.g., wcn7850 Wi-Fi on ARM64).

    2) Additionally, fsl_mc_get_msi_id() passes msi_np == NULL to of_msi_xlate(),
    which would dereference NULL with the new API.

  Link to v13:
  https://patch.msgid.link/20260408-parse_iommu_cells-v13-0-fa921e92661b@oss.qualcomm.com

V13:
  - Fix bad_map handling in of_map_id(): 'cells' is re-initialized to 0
    on each loop iteration, so the !bad_map guard was insufficient, cells
    stayed 0 for all entries after the first. Fix by explicitly setting
    cells=1 when bad_map is true on every iteration.
  - Collected Acked-by from Frank Li.

  Link to v12:
  https://patch.msgid.link/20260331-parse_iommu_cells-v12-0-decfd305eea9@oss.qualcomm.com

V12:
  - Call of_node_put() unconditionally in imx_pcie_add_lut_by_rid()
    thereby addressing comments from Bjorn Helgaas.

  Link to v11:
  https://lore.kernel.org/r/20260325-parse_iommu_cells-v11-0-1fefa5c0e82c@oss.qualcomm.com

V11:
  - Added explicit filter_np parameter to of_map_id() and of_map_msi_id()
    per Dmitry Baryshkov's review feedback, making the filter explicit
    instead of overloading arg->np as both input filter and output parameter.
  - Removed of_node_put() from inside of_map_id(), making the caller responsible
    for reference management. Updated of_msi_xlate() to properly handle reference counting.
  - Collected ACKed by tags, and fixed minor typos.
  Link to v10:
  https://lore.kernel.org/r/20260309-parse_iommu_cells-v10-0-c62fcaa5a1d8@oss.qualcomm.com

V10:
  - Move of_map_iommu_id()/of_map_msi_id() from include/linux/of.h to
    drivers/of/base.c as out-of-line helpers per feedback from Marc Zyngier
    and Rob Herring.
  - Add kernel-doc to document both helpers for discoverability and
    usage clarity.
  - Fix of_map_msi_id() wrapper and all its callers (cdx_msi.c,
    irq-gic-its-msi-parent.c, drivers/of/irq.c) to correctly use the new
    struct of_phandle_args-based API with proper of_node_put() handling
    as per feeback from Dmitry.
  Link to v9:
  https://lore.kernel.org/r/20260301-parse_iommu_cells-v9-0-4d1bceecc5e1@oss.qualcomm.com

V9:
  - Updated TO/CC list based on feedback to include all relevant
    maintainers.
  - No functional changes to the patches themselves.

  Link to V8:
  https://lore.kernel.org/all/20260226074245.3098486-1-vijayanand.jitta@oss.qualcomm.com/

V8:
  - Removed mentions of of_map_args from commit message to match code.

  Link to V7:
  https://lore.kernel.org/all/20260210101157.2145113-1-vijayanand.jitta@oss.qualcomm.com/

V7:
  - Removed of_map_id_args structure and replaced it with
    of_phandle_args as suggested by Dmitry.

  Link to V6:
  https://lore.kernel.org/all/20260121055400.937856-1-vijayanand.jitta@oss.qualcomm.com/

V6:
  - Fixed build error reported by kernel test bot.

  Link to V5:
  https://lore.kernel.org/all/20260118181125.1436036-1-vijayanand.jitta@oss.qualcomm.com/

V5:
  - Fixed Build Warnings.
  - Raised PR for iommu-map dtschema: https://github.com/devicetree-org/dt-schema/pull/184

  Link to V4:
  https://lore.kernel.org/all/20251231114257.2382820-1-vijayanand.jitta@oss.qualcomm.com/

V4:
  - Added Reviewed-by tag.
  - Resolved warnings reported by kernel test bot, minor code
    reorganization.

  Link to V3:
  https://lore.kernel.org/all/20251221213602.2413124-1-vijayanand.jitta@oss.qualcomm.com/

V3:
  - Added Reviewed-by tag.
  - Updated of_map_id_args struct as a wrapper to of_phandle_args and
    added comment description as suggested by Rob Herring.

  Link to V2:
  https://lore.kernel.org/all/20251204095530.8627-1-vijayanand.jitta@oss.qualcomm.com/

V2:
  - Incorporated the patches from Robin that does the clean implementation.
  - Dropped the patches the were adding multi-map support from this series
    as suggested.

V1:
 https://lore.kernel.org/all/cover.1762235099.git.charan.kalla@oss.qualcomm.com/

RFC:
 https://lore.kernel.org/all/20250928171718.436440-1-charan.kalla@oss.qualcomm.com/#r

Signed-off-by: Vijayanand Jitta <vijayanand.jitta@oss.qualcomm.com>
---
To: Nipun Gupta <nipun.gupta@amd.com>
To: Nikhil Agarwal <nikhil.agarwal@amd.com>
To: Joerg Roedel <joro@8bytes.org>
To: Will Deacon <will@kernel.org>
To: Robin Murphy <robin.murphy@arm.com>
To: Lorenzo Pieralisi <lpieralisi@kernel.org>
To: Marc Zyngier <maz@kernel.org>
To: Thomas Gleixner <tglx@kernel.org>
To: Rob Herring <robh@kernel.org>
To: Saravana Kannan <saravanak@kernel.org>
To: Richard Zhu <hongxing.zhu@nxp.com>
To: Lucas Stach <l.stach@pengutronix.de>
To: Krzysztof Wilczyński <kwilczynski@kernel.org>
To: Manivannan Sadhasivam <mani@kernel.org>
To: Bjorn Helgaas <bhelgaas@google.com>
To: Frank Li <Frank.Li@nxp.com>
To: Sascha Hauer <s.hauer@pengutronix.de>
To: Pengutronix Kernel Team <kernel@pengutronix.de>
To: Fabio Estevam <festevam@gmail.com>
To: Juergen Gross <jgross@suse.com>
To: Stefano Stabellini <sstabellini@kernel.org>
To: Oleksandr Tyshchenko <oleksandr_tyshchenko@epam.com>
Cc: linux-arm-msm@vger.kernel.org
Cc: linux-kernel@vger.kernel.org
Cc: iommu@lists.linux.dev
Cc: linux-arm-kernel@lists.infradead.org
Cc: devicetree@vger.kernel.org
Cc: linux-pci@vger.kernel.org
Cc: imx@lists.linux.dev
Cc: xen-devel@lists.xenproject.org

---
Charan Teja Kalla (1):
      of: Factor arguments passed to of_map_id() into a struct

Robin Murphy (2):
      of: Add convenience wrappers for of_map_id()
      of: Respect #{iommu,msi}-cells in maps

 drivers/cdx/cdx_msi.c                    |   8 +-
 drivers/iommu/of_iommu.c                 |   6 +-
 drivers/irqchip/irq-gic-its-msi-parent.c |  11 +-
 drivers/of/base.c                        | 215 ++++++++++++++++++++++++-------
 drivers/of/irq.c                         |  31 ++++-
 drivers/pci/controller/dwc/pci-imx6.c    |  34 +++--
 drivers/pci/controller/pcie-apple.c      |   6 +-
 drivers/xen/grant-dma-ops.c              |   5 +-
 include/linux/of.h                       |  30 ++++-
 9 files changed, 257 insertions(+), 89 deletions(-)
---
base-commit: 3fa5e5702a82d259897bd7e209469bc06368bf31
change-id: 20260301-parse_iommu_cells-1c33768aebba

Best regards,
--  
Vijayanand Jitta <vijayanand.jitta@oss.qualcomm.com>



From xen-devel-bounces@lists.xenproject.org Fri Apr 24 05:57:51 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Fri, 24 Apr 2026 05:57:51 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1293120.1571027 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wG9Xz-0006bJ-QX; Fri, 24 Apr 2026 05:57:51 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1293120.1571027; Fri, 24 Apr 2026 05:57: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 1wG9Xz-0006bC-Ni; Fri, 24 Apr 2026 05:57:51 +0000
Received: by outflank-mailman (input) for mailman id 1293120;
 Fri, 24 Apr 2026 05:57:50 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <vijayanand.jitta@oss.qualcomm.com>)
 id 1wG9Xx-0006YZ-Oj
 for xen-devel@lists.xenproject.org; Fri, 24 Apr 2026 05:57:49 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wG9Xx-00Cv3n-5U
 for xen-devel@lists.xenproject.org; Fri, 24 Apr 2026 07:57:49 +0200
Received: from [10.42.69.6] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <vijayanand.jitta@oss.qualcomm.com>)
 id 69eb065b-bab6-0a2a0a5309dd-0a2a4506c9f0-4
 for <xen-devel@lists.xenproject.org>; Fri, 24 Apr 2026 07:57:48 +0200
Received: from [205.220.180.131] (helo=mx0b-0031df01.pphosted.com)
 by tlsNG-16d1c6.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.1)
 (envelope-from <vijayanand.jitta@oss.qualcomm.com>)
 id 69eb065b-7371-0a2a45060019-cddcb483ada0-3
 for <xen-devel@lists.xenproject.org>; Fri, 24 Apr 2026 07:57:48 +0200
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
 63O51ckG010110
 for <xen-devel@lists.xenproject.org>; Fri, 24 Apr 2026 05:57:47 GMT
Received: from mail-pl1-f198.google.com (mail-pl1-f198.google.com
 [209.85.214.198])
 by mx0a-0031df01.pphosted.com (PPS) with ESMTPS id 4dqk17brkq-1
 (version=TLSv1.3 cipher=TLS_AES_128_GCM_SHA256 bits=128 verify=NOT)
 for <xen-devel@lists.xenproject.org>; Fri, 24 Apr 2026 05:57:46 +0000 (GMT)
Received: by mail-pl1-f198.google.com with SMTP id
 d9443c01a7336-2b7aba0af02so14597655ad.2
 for <xen-devel@lists.xenproject.org>; Thu, 23 Apr 2026 22:57:46 -0700 (PDT)
Received: from hu-vjitta-hyd.qualcomm.com ([202.46.23.25])
 by smtp.gmail.com with ESMTPSA id
 41be03b00d2f7-c79770512afsm17288101a12.31.2026.04.23.22.57.34
 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
 Thu, 23 Apr 2026 22:57:44 -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=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="Cc:To:In-Reply-To:References:Message-Id:Content-Transfer-Encoding:MIME-Version:Subject:Date:From"
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=
	muMUt40tNKB60YlRLz7cGJMkl7zWJcvPAhdHfJ4B7Zc=; b=jbUw84GlFC/3S6Dx
	oh7sJ04FqBBCxaOzvCIb/8duPS2GSX9jabQSXglozhM1edlHMhqg/UkDcHZK4WBw
	0TfgA3X+hQnIoztP8ouas3rPH6/hhRkCRDd+79EjpeXeS6Evlumyv5OUpLnE+PDJ
	vHdxODTSiZlPGMtt6mOfEyKKvqWNcGwGvwt5aZu2bFIdn2VkCTrk5RpMYU69zYwN
	+E4sytq7IgcGG/mQ/Lv9QqEPgCdeAxzDi2QwUbMN8StZN0Dsqm9gaLS5z7TFLdjU
	s3Vo1VkwFRQra3GfZa49CYxkAuGVlbQOuZsOR5/Ii7NCc3b3ETo/e5NXsvkfJ7bb
	2z9N/A==
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=oss.qualcomm.com; s=google; t=1777010266; x=1777615066; darn=lists.xenproject.org;
        h=cc:to:in-reply-to:references:message-id:content-transfer-encoding
         :mime-version:subject:date:from:from:to:cc:subject:date:message-id
         :reply-to;
        bh=muMUt40tNKB60YlRLz7cGJMkl7zWJcvPAhdHfJ4B7Zc=;
        b=jabDeEDv3Iw09BhAZ863Y1OKRpCOTX2yfBoTnQ9JVdPV/184uMWPitTYr85MElfXe2
         t6wYrqPjUxZQr0xgQqUoQ3Eo+To3bI07YBOqaBNGDsS8jn5Vlqnqb0U3peO8LhrqOZY/
         hUUbbWL5GXqcXkf2mWi8aCYVfdE5UCICa0uXZWty6CJgf4vCfB61z66bdXEKc/5jIxey
         rO2bPbiSmQoXtIfiCfbnS0zL0MyMq6Ud5iUniKHJKObeZjFe8xd1ew86/owJ8w0sP6en
         rNjmXLABG96fJvveqKiYdxdCtr1CO0LugmliKPk1fHBe0N5dEiEF05HrjW2/86EwQilT
         a5Gw==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20251104; t=1777010266; x=1777615066;
        h=cc:to:in-reply-to:references:message-id:content-transfer-encoding
         :mime-version:subject:date:from:x-gm-gg:x-gm-message-state:from:to
         :cc:subject:date:message-id:reply-to;
        bh=muMUt40tNKB60YlRLz7cGJMkl7zWJcvPAhdHfJ4B7Zc=;
        b=nau+zIzjm2aXXNSCwNxGo5e2Y87DufGKPpsLfZcg95wACWZlbJ/ZYA9y8UgzJ7ONdc
         B4DHzQsC/LVGt50Vs3wv2V71j9ljE9RISA6pAmNDSBXKWFT4av3CY64sJehR3kNCWnaP
         ZQjjjqrbbF9rEy3opQ2rXQAmGsREbndjg7UKyh0dFwRtupTmxw2vUjEi4x5gin/KXCcU
         qvf3MiIaWnkOdSu+XT6439pQaF55PEXoxhlp4mr5tyLgWwLaIm5oziMjHmiNzlms88WI
         bcD67GE0J5jqs5KztRBAS8XRcub5X/aPJ+g14OW/WXzMiCnzj0N8QWu/BxVHCZkow2tv
         JczA==
X-Forwarded-Encrypted: i=1; AFNElJ/2io8KPRdH30FXY/JT+l8hAFX2lycXZlEetHoliLYFkLUoOYQYeNePb+KBeuoBfp5ebqx76V2+0Lg=@lists.xenproject.org
X-Gm-Message-State: AOJu0Ywim4HyqhxSkfH1wieTYVJEN63gkaYdrDnBoqi9/sjg3LnvkZX4
	7R2ViBBF7WlYye0qxYm181GolX3b+N42ZZ7q1MYAIYbAed/vEhiBI95BF6ZM96m2GBlDRlSL3SR
	qsPCO37iwBrYU8c4uMnGMuvhwAfm87eWlfrkmOHZ63DjzJaGo1aR0zGEYPTlJLTBwzDlgiQ==
X-Gm-Gg: AeBDietqAymSCILMqFj5dZrSqbvJBB6B4Pf1/mxkreGmZiAyEGLNrCVrybnGwEnZq6/
	dp+3gOAmte7qkDsdeRuNx5nj1hrl1LhM+tg79GR2V579N1ivyxosy5H/74nF+z5+oIr3X6bZGcx
	vvBUANSt0MhcvbClxE8SCbqytgoC++vtS8p9Y2WB60zMJO//Kut3GKoxyPLaV2JAeOzYrFD7BMm
	jAOXG2HNj9XjNSoKZcS0wieC4Fat14/wTQezeolvSw4zQ16Y0LNSWFWK0gHnylQ8vmi91/5Ya59
	iQAJXzWiJjiSgCYnu+EO2VO9Sgv946xdUSQ+uYjkJLLaO/Y5QSid1RFcDV/9+5gxdC5+A3xFtQ5
	47uXgVXF7sFTLheTm/CYdF4bFAdVmbNhA5s4QYj2VnRDvc/efv4fgU9EBCHkh5YCk1yQ=
X-Received: by 2002:a05:6a21:33a5:b0:3a3:2b7e:a4ab with SMTP id adf61e73a8af0-3a32b7ebae2mr4715401637.44.1777010265694;
        Thu, 23 Apr 2026 22:57:45 -0700 (PDT)
X-Received: by 2002:a05:6a21:33a5:b0:3a3:2b7e:a4ab with SMTP id adf61e73a8af0-3a32b7ebae2mr4715318637.44.1777010265038;
        Thu, 23 Apr 2026 22:57:45 -0700 (PDT)
From: Vijayanand Jitta <vijayanand.jitta@oss.qualcomm.com>
Date: Fri, 24 Apr 2026 11:26:09 +0530
Subject: [PATCH v14 2/3] of: Factor arguments passed to of_map_id() into a
 struct
MIME-Version: 1.0
Content-Type: text/plain; charset="utf-8"
Content-Transfer-Encoding: 7bit
Message-Id: <20260424-parse_iommu_cells-v14-2-fd02f11b6c38@oss.qualcomm.com>
References: <20260424-parse_iommu_cells-v14-0-fd02f11b6c38@oss.qualcomm.com>
In-Reply-To: <20260424-parse_iommu_cells-v14-0-fd02f11b6c38@oss.qualcomm.com>
To: Nipun Gupta <nipun.gupta@amd.com>, Nikhil Agarwal <nikhil.agarwal@amd.com>,
        Joerg Roedel <joro@8bytes.org>, Will Deacon <will@kernel.org>,
        Robin Murphy <robin.murphy@arm.com>, Marc Zyngier <maz@kernel.org>,
        Lorenzo Pieralisi <lpieralisi@kernel.org>,
        Thomas Gleixner <tglx@kernel.org>,
        Saravana Kannan <saravanak@kernel.org>,
        Richard Zhu <hongxing.zhu@nxp.com>,
        Lucas Stach <l.stach@pengutronix.de>,
        =?utf-8?q?Krzysztof_Wilczy=C5=84ski?= <kwilczynski@kernel.org>,
        Manivannan Sadhasivam <mani@kernel.org>,
        Bjorn Helgaas <bhelgaas@google.com>, Frank Li <Frank.Li@nxp.com>,
        Sascha Hauer <s.hauer@pengutronix.de>,
        Pengutronix Kernel Team <kernel@pengutronix.de>,
        Fabio Estevam <festevam@gmail.com>, Juergen Gross <jgross@suse.com>,
        Stefano Stabellini <sstabellini@kernel.org>,
        Oleksandr Tyshchenko <oleksandr_tyshchenko@epam.com>,
        Dmitry Baryshkov <dmitry.baryshkov@oss.qualcomm.com>,
        Konrad Dybcio <konrad.dybcio@oss.qualcomm.com>,
        Bjorn Andersson <bjorn.andersson@oss.qualcomm.com>,
        Rob Herring <robh@kernel.org>, Conor Dooley <conor+dt@kernel.org>,
        Krzysztof Kozlowski <krzk+dt@kernel.org>,
        Prakash Gupta <prakash.gupta@oss.qualcomm.com>,
        Vikash Garodia <vikash.garodia@oss.qualcomm.com>
Cc: linux-kernel@vger.kernel.org, iommu@lists.linux.dev,
        linux-arm-kernel@lists.infradead.org, devicetree@vger.kernel.org,
        linux-pci@vger.kernel.org, imx@lists.linux.dev,
        xen-devel@lists.xenproject.org, linux-arm-msm@vger.kernel.org,
        Vijayanand Jitta <vijayanand.jitta@oss.qualcomm.com>,
        Charan Teja Kalla <charan.kalla@oss.qualcomm.com>
X-Mailer: b4 0.15.2
X-Developer-Signature: v=1; a=ed25519-sha256; t=1777010232; l=18518;
 i=vijayanand.jitta@oss.qualcomm.com; s=20260301; h=from:subject:message-id;
 bh=wiBZojo0J7hwv8jza/KpZ8506QAT1cjvfjOKCApa6Wo=;
 b=dyovb5BdIrhkPQF+mCNMCfJmyuhdwXIWnaGvQc+aQdZ99bljLMJtwDkhvB5KUss3szckMv8f+
 cAYk+DkjlsABxrXW1TO23901phEgBZxg3zuTMcERkBMPC35ZqHH7vUK
X-Developer-Key: i=vijayanand.jitta@oss.qualcomm.com; a=ed25519;
 pk=Lpi7Cs3wHe8KZtqvyci7FTOLzsKpEHKGCaPNZw+1zRI=
X-Proofpoint-GUID: ZePjOCX1nqGqpO9EZqWxtPVuH3_xmaUk
X-Authority-Analysis: v=2.4 cv=R98z39RX c=1 sm=1 tr=0 ts=69eb065b cx=c_pps
 a=MTSHoo12Qbhz2p7MsH1ifg==:117 a=ZePRamnt/+rB5gQjfz0u9A==:17
 a=IkcTkHD0fZMA:10 a=A5OVakUREuEA:10 a=s4-Qcg_JpJYA:10
 a=VkNPw1HP01LnGYTKEx00:22 a=u7WPNUs3qKkmUXheDGA7:22 a=yx91gb_oNiZeI1HMLzn7:22
 a=EUspDBNiAAAA:8 a=8AirrxEcAAAA:8 a=VwQbUJbxAAAA:8 a=YNKo5iN9BcXwmsqDYIQA:9
 a=QEXdDO2ut3YA:10 a=GvdueXVYPmCkWapjIL-Q:22 a=ST-jHhOKWsTCqRlWije3:22
X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwNDI0MDA1MSBTYWx0ZWRfXzqAYPTzUZcrl
 R8HFEgTMp2V2QnHeWMCtedydkW5Gra6JiN0c3tdqgF8258H9bj78xDdPYFhR/FcSbX31LPhx12Z
 CIUo1Sv8fbvA/murojvB9atFiu3pJw9Rga5g8DY1G4zftQf68ce0e98Aa4VNpztli7VNumvNBF+
 y954QV9CtsXV+c5DBQVeVGSffH1JtkOw9ZJ1+z2mWMbJe8OyldZ6TWjZgNMXcjq4M1X7ULhPUZ0
 5Hv5r/unHCYa/Nh76YhFMOshuuRSvGNc1Z5aBL+7kP+hvpapqvZ58JUSeNm6YKYaqo5gT6GpfzB
 t5dloAs/nXgBr49nbTTi6AinWlUKWM85aJBo4kln/Y5unus7FSbWTUACFtxxYcUpdE2QLFqkKJq
 4db0y+rkbbAa52SWFfw8RrMFoSOmzmCQgT/o8h7ThMAmFsycBIJZajBVOiJsRJ+GdGR7U54LGxD
 1Iv3w7Pc3Td3E/5bbBw==
X-Proofpoint-ORIG-GUID: ZePjOCX1nqGqpO9EZqWxtPVuH3_xmaUk
X-Proofpoint-Virus-Version: vendor=baseguard
 engine=ICAP:2.0.293,Aquarius:18.0.1143,Hydra:6.1.51,FMLib:17.12.100.49
 definitions=2026-04-23_03,2026-04-21_02,2025-10-01_01
X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0
 bulkscore=0 spamscore=0 clxscore=1015 priorityscore=1501 phishscore=0
 malwarescore=0 impostorscore=0 adultscore=0 lowpriorityscore=0 suspectscore=0
 classifier=typeunknown authscore=0 authtc= authcc= route=outbound adjust=0
 reason=mlx scancount=1 engine=8.22.0-2604200000 definitions=main-2604240051
X-purgate-ID: tlsNG-16d1c6/1777010268-5357ED75-6D7A8B1E/0/0
X-purgate-type: clean
X-purgate-size: 18579

From: Charan Teja Kalla <charan.kalla@oss.qualcomm.com>

Change of_map_id() to take a pointer to struct of_phandle_args
instead of passing target device node and translated IDs separately.
Update all callers accordingly.

Add an explicit filter_np parameter to of_map_id() and of_map_msi_id()
to separate the filter input from the output. Previously, the target
parameter served dual purpose: as an input filter (if non-NULL, only
match entries targeting that node) and as an output (receiving the
matched node with a reference held). Now filter_np is the explicit
input filter and arg->np is the pure output.

Previously, of_map_id() would call of_node_put() on the matched node
when a filter was provided, making reference ownership inconsistent.
Remove this internal of_node_put() call so that of_map_id() now always
transfers ownership of the matched node reference to the caller via
arg->np. Callers are now consistently responsible for releasing this
reference with of_node_put(arg->np) when done.

Acked-by: Frank Li <Frank.Li@nxp.com>
Suggested-by: Rob Herring (Arm) <robh@kernel.org>
Suggested-by: Dmitry Baryshkov <dmitry.baryshkov@oss.qualcomm.com>
Signed-off-by: Charan Teja Kalla <charan.kalla@oss.qualcomm.com>
Signed-off-by: Vijayanand Jitta <vijayanand.jitta@oss.qualcomm.com>
---
 drivers/cdx/cdx_msi.c                    |  7 ++--
 drivers/iommu/of_iommu.c                 |  4 +-
 drivers/irqchip/irq-gic-its-msi-parent.c | 11 ++++--
 drivers/of/base.c                        | 68 +++++++++++++++++---------------
 drivers/of/irq.c                         | 30 +++++++++++---
 drivers/pci/controller/dwc/pci-imx6.c    | 32 +++++++--------
 drivers/pci/controller/pcie-apple.c      |  5 ++-
 drivers/xen/grant-dma-ops.c              |  4 +-
 include/linux/of.h                       | 14 ++++---
 9 files changed, 104 insertions(+), 71 deletions(-)

diff --git a/drivers/cdx/cdx_msi.c b/drivers/cdx/cdx_msi.c
index 63b3544ec997..6924e07c7528 100644
--- a/drivers/cdx/cdx_msi.c
+++ b/drivers/cdx/cdx_msi.c
@@ -121,22 +121,23 @@ static int cdx_msi_prepare(struct irq_domain *msi_domain,
 			   struct device *dev,
 			   int nvec, msi_alloc_info_t *info)
 {
+	struct of_phandle_args msi_spec = {};
 	struct cdx_device *cdx_dev = to_cdx_device(dev);
 	struct device *parent = cdx_dev->cdx->dev;
 	struct msi_domain_info *msi_info;
-	u32 dev_id;
 	int ret;
 
 	/* Retrieve device ID from requestor ID using parent device */
-	ret = of_map_msi_id(parent->of_node, cdx_dev->msi_dev_id, NULL, &dev_id);
+	ret = of_map_msi_id(parent->of_node, cdx_dev->msi_dev_id, NULL, &msi_spec);
 	if (ret) {
 		dev_err(dev, "of_map_id failed for MSI: %d\n", ret);
 		return ret;
 	}
+	of_node_put(msi_spec.np);
 
 #ifdef GENERIC_MSI_DOMAIN_OPS
 	/* Set the device Id to be passed to the GIC-ITS */
-	info->scratchpad[0].ul = dev_id;
+	info->scratchpad[0].ul = msi_spec.args[0];
 #endif
 
 	msi_info = msi_get_domain_info(msi_domain->parent);
diff --git a/drivers/iommu/of_iommu.c b/drivers/iommu/of_iommu.c
index a511ecf21fcd..a18bb60f6f3d 100644
--- a/drivers/iommu/of_iommu.c
+++ b/drivers/iommu/of_iommu.c
@@ -45,10 +45,10 @@ static int of_iommu_configure_dev_id(struct device_node *master_np,
 				     struct device *dev,
 				     const u32 *id)
 {
-	struct of_phandle_args iommu_spec = { .args_count = 1 };
+	struct of_phandle_args iommu_spec = {};
 	int err;
 
-	err = of_map_iommu_id(master_np, *id, &iommu_spec.np, iommu_spec.args);
+	err = of_map_iommu_id(master_np, *id, &iommu_spec);
 	if (err)
 		return err;
 
diff --git a/drivers/irqchip/irq-gic-its-msi-parent.c b/drivers/irqchip/irq-gic-its-msi-parent.c
index b63343a227a9..dd5f84b6470a 100644
--- a/drivers/irqchip/irq-gic-its-msi-parent.c
+++ b/drivers/irqchip/irq-gic-its-msi-parent.c
@@ -152,6 +152,8 @@ static int its_v5_pci_msi_prepare(struct irq_domain *domain, struct device *dev,
 static int of_pmsi_get_msi_info(struct irq_domain *domain, struct device *dev, u32 *dev_id,
 				phys_addr_t *pa)
 {
+	struct device_node *msi_ctrl __free(device_node) = NULL;
+	struct of_phandle_args msi_spec = {};
 	struct of_phandle_iterator it;
 	int ret;
 
@@ -178,9 +180,12 @@ static int of_pmsi_get_msi_info(struct irq_domain *domain, struct device *dev, u
 		}
 	}
 
-	struct device_node *msi_ctrl __free(device_node) = NULL;
-
-	return of_map_msi_id(dev->of_node, dev->id, &msi_ctrl, dev_id);
+	ret = of_map_msi_id(dev->of_node, dev->id, NULL, &msi_spec);
+	if (!ret) {
+		msi_ctrl = msi_spec.np;
+		*dev_id = msi_spec.args[0];
+	}
+	return ret;
 }
 
 static int its_pmsi_prepare(struct irq_domain *domain, struct device *dev,
diff --git a/drivers/of/base.c b/drivers/of/base.c
index ae04487bd614..b3d002015192 100644
--- a/drivers/of/base.c
+++ b/drivers/of/base.c
@@ -2102,36 +2102,37 @@ int of_find_last_cache_level(unsigned int cpu)
  * @id: device ID to map.
  * @map_name: property name of the map to use.
  * @map_mask_name: optional property name of the mask to use.
- * @target: optional pointer to a target device node.
- * @id_out: optional pointer to receive the translated ID.
+ * @filter_np: optional device node to filter matches by, or NULL to match any.
+ *	If non-NULL, only map entries targeting this node will be matched.
+ * @arg: pointer to a &struct of_phandle_args for the result. On success,
+ *	@arg->args[0] will contain the translated ID. If a map entry was
+ *	matched, @arg->np will be set to the target node with a reference
+ *	held that the caller must release with of_node_put().
  *
  * Given a device ID, look up the appropriate implementation-defined
  * platform ID and/or the target device which receives transactions on that
- * ID, as per the "iommu-map" and "msi-map" bindings. Either of @target or
- * @id_out may be NULL if only the other is required. If @target points to
- * a non-NULL device node pointer, only entries targeting that node will be
- * matched; if it points to a NULL value, it will receive the device node of
- * the first matching target phandle, with a reference held.
+ * ID, as per the "iommu-map" and "msi-map" bindings.
  *
  * Return: 0 on success or a standard error code on failure.
  */
 int of_map_id(const struct device_node *np, u32 id,
 	       const char *map_name, const char *map_mask_name,
-	       struct device_node **target, u32 *id_out)
+	       const struct device_node *filter_np, struct of_phandle_args *arg)
 {
 	u32 map_mask, masked_id;
 	int map_len;
 	const __be32 *map = NULL;
 
-	if (!np || !map_name || (!target && !id_out))
+	if (!np || !map_name || !arg)
 		return -EINVAL;
 
 	map = of_get_property(np, map_name, &map_len);
 	if (!map) {
-		if (target)
+		if (filter_np)
 			return -ENODEV;
 		/* Otherwise, no map implies no translation */
-		*id_out = id;
+		arg->args[0] = id;
+		arg->args_count = 1;
 		return 0;
 	}
 
@@ -2173,18 +2174,14 @@ int of_map_id(const struct device_node *np, u32 id,
 		if (!phandle_node)
 			return -ENODEV;
 
-		if (target) {
-			if (*target)
-				of_node_put(phandle_node);
-			else
-				*target = phandle_node;
-
-			if (*target != phandle_node)
-				continue;
+		if (filter_np && filter_np != phandle_node) {
+			of_node_put(phandle_node);
+			continue;
 		}
 
-		if (id_out)
-			*id_out = masked_id - id_base + out_base;
+		arg->np = phandle_node;
+		arg->args[0] = masked_id - id_base + out_base;
+		arg->args_count = 1;
 
 		pr_debug("%pOF: %s, using mask %08x, id-base: %08x, out-base: %08x, length: %08x, id: %08x -> %08x\n",
 			np, map_name, map_mask, id_base, out_base,
@@ -2193,11 +2190,11 @@ int of_map_id(const struct device_node *np, u32 id,
 	}
 
 	pr_info("%pOF: no %s translation for id 0x%x on %pOF\n", np, map_name,
-		id, target && *target ? *target : NULL);
+		id, filter_np);
 
 	/* Bypasses translation */
-	if (id_out)
-		*id_out = id;
+	arg->args[0] = id;
+	arg->args_count = 1;
 	return 0;
 }
 EXPORT_SYMBOL_GPL(of_map_id);
@@ -2207,17 +2204,19 @@ EXPORT_SYMBOL_GPL(of_map_id);
  * @np: root complex device node.
  * @id: Requester ID of the device (e.g. PCI RID/BDF or a platform
  *      stream/device ID) used as the lookup key in the iommu-map table.
- * @target: optional pointer to a target device node.
- * @id_out: optional pointer to receive the translated ID.
+ * @arg: pointer to a &struct of_phandle_args for the result. On success,
+ *	@arg->args[0] contains the translated ID. If a map entry was matched,
+ *	@arg->np holds a reference to the target node that the caller must
+ *	release with of_node_put().
  *
  * Convenience wrapper around of_map_id() using "iommu-map" and "iommu-map-mask".
  *
  * Return: 0 on success or a standard error code on failure.
  */
 int of_map_iommu_id(const struct device_node *np, u32 id,
-		    struct device_node **target, u32 *id_out)
+		    struct of_phandle_args *arg)
 {
-	return of_map_id(np, id, "iommu-map", "iommu-map-mask", target, id_out);
+	return of_map_id(np, id, "iommu-map", "iommu-map-mask", NULL, arg);
 }
 EXPORT_SYMBOL_GPL(of_map_iommu_id);
 
@@ -2226,16 +2225,21 @@ EXPORT_SYMBOL_GPL(of_map_iommu_id);
  * @np: root complex device node.
  * @id: Requester ID of the device (e.g. PCI RID/BDF or a platform
  *      stream/device ID) used as the lookup key in the msi-map table.
- * @target: optional pointer to a target device node.
- * @id_out: optional pointer to receive the translated ID.
+ * @filter_np: optional MSI controller node to filter matches by, or NULL
+ *	to match any. If non-NULL, only map entries targeting this node will
+ *	be matched.
+ * @arg: pointer to a &struct of_phandle_args for the result. On success,
+ *	@arg->args[0] contains the translated ID. If a map entry was matched,
+ *	@arg->np holds a reference to the target node that the caller must
+ *	release with of_node_put().
  *
  * Convenience wrapper around of_map_id() using "msi-map" and "msi-map-mask".
  *
  * Return: 0 on success or a standard error code on failure.
  */
 int of_map_msi_id(const struct device_node *np, u32 id,
-		  struct device_node **target, u32 *id_out)
+		  const struct device_node *filter_np, struct of_phandle_args *arg)
 {
-	return of_map_id(np, id, "msi-map", "msi-map-mask", target, id_out);
+	return of_map_id(np, id, "msi-map", "msi-map-mask", filter_np, arg);
 }
 EXPORT_SYMBOL_GPL(of_map_msi_id);
diff --git a/drivers/of/irq.c b/drivers/of/irq.c
index e37c1b3f8736..4040467742c4 100644
--- a/drivers/of/irq.c
+++ b/drivers/of/irq.c
@@ -796,19 +796,22 @@ static int of_check_msi_parent(struct device_node *dev_node, struct device_node
 /**
  * of_msi_xlate - map a MSI ID and find relevant MSI controller node
  * @dev: device for which the mapping is to be done.
- * @msi_np: Pointer to target MSI controller node
+ * @msi_np: Pointer to target MSI controller node, or NULL if the caller
+ *           only needs the translated ID without receiving the controller node.
+ *           If non-NULL and pointing to a non-NULL node, only entries targeting
+ *           that node will be matched. If non-NULL and pointing to NULL, it will
+ *           receive the first matching target node with a reference held.
  * @id_in: Device ID.
  *
  * Walk up the device hierarchy looking for devices with a "msi-map"
  * or "msi-parent" property. If found, apply the mapping to @id_in.
- * If @msi_np points to a non-NULL device node pointer, only entries targeting
- * that node will be matched; if it points to a NULL value, it will receive the
- * device node of the first matching target phandle, with a reference held.
  *
  * Returns: The mapped MSI id.
  */
 u32 of_msi_xlate(struct device *dev, struct device_node **msi_np, u32 id_in)
 {
+	struct device_node *local_np = NULL;
+	struct device_node **np = msi_np ?: &local_np;
 	struct device *parent_dev;
 	u32 id_out = id_in;
 
@@ -817,11 +820,26 @@ u32 of_msi_xlate(struct device *dev, struct device_node **msi_np, u32 id_in)
 	 * "msi-map" or an "msi-parent" property.
 	 */
 	for (parent_dev = dev; parent_dev; parent_dev = parent_dev->parent) {
-		if (!of_map_msi_id(parent_dev->of_node, id_in, msi_np, &id_out))
+		struct of_phandle_args msi_spec = {};
+
+		if (!of_map_msi_id(parent_dev->of_node, id_in, *np, &msi_spec)) {
+			/*
+			 * Pass-through result: no msi-map on this node (or no
+			 * matching entry). Keep walking up the hierarchy.
+			 */
+			if (!msi_spec.np)
+				continue;
+			id_out = msi_spec.args[0];
+			if (!*np)
+				*np = msi_spec.np;
+			else
+				of_node_put(msi_spec.np);
 			break;
-		if (!of_check_msi_parent(parent_dev->of_node, msi_np))
+		}
+		if (!of_check_msi_parent(parent_dev->of_node, np))
 			break;
 	}
+	of_node_put(local_np);
 	return id_out;
 }
 EXPORT_SYMBOL_GPL(of_msi_xlate);
diff --git a/drivers/pci/controller/dwc/pci-imx6.c b/drivers/pci/controller/dwc/pci-imx6.c
index bff8289f804a..c0544d9c0921 100644
--- a/drivers/pci/controller/dwc/pci-imx6.c
+++ b/drivers/pci/controller/dwc/pci-imx6.c
@@ -1137,30 +1137,32 @@ static void imx_pcie_remove_lut(struct imx_pcie *imx_pcie, u16 rid)
 
 static int imx_pcie_add_lut_by_rid(struct imx_pcie *imx_pcie, u32 rid)
 {
+	struct of_phandle_args iommu_spec = {};
+	struct of_phandle_args msi_spec = {};
 	struct device *dev = imx_pcie->pci->dev;
-	struct device_node *target;
 	u32 sid_i, sid_m;
 	int err_i, err_m;
 	u32 sid = 0;
 
-	target = NULL;
-	err_i = of_map_iommu_id(dev->of_node, rid, &target, &sid_i);
-	if (target) {
-		of_node_put(target);
-	} else {
+	err_i = of_map_iommu_id(dev->of_node, rid, &iommu_spec);
+	if (!err_i)
+		sid_i = iommu_spec.args[0];
+	of_node_put(iommu_spec.np);
+	if (!err_i && !iommu_spec.np) {
 		/*
-		 * "target == NULL && err_i == 0" means RID out of map range.
-		 * Use 1:1 map RID to streamID. Hardware can't support this
-		 * because the streamID is only 6 bits
+		 * "iommu_spec.np == NULL && err_i == 0" means RID out of map
+		 * range. Use 1:1 map RID to streamID. Hardware can't support
+		 * this because the streamID is only 6 bits.
 		 */
 		err_i = -EINVAL;
 	}
 
-	target = NULL;
-	err_m = of_map_msi_id(dev->of_node, rid, &target, &sid_m);
-
+	err_m = of_map_msi_id(dev->of_node, rid, NULL, &msi_spec);
+	if (!err_m)
+		sid_m = msi_spec.args[0];
+	of_node_put(msi_spec.np);
 	/*
-	 *   err_m      target
+	 *   err_m      msi_spec.np
 	 *	0	NULL		RID out of range. Use 1:1 map RID to
 	 *				streamID, Current hardware can't
 	 *				support it, so return -EINVAL.
@@ -1168,10 +1170,8 @@ static int imx_pcie_add_lut_by_rid(struct imx_pcie *imx_pcie, u32 rid)
 	 *	0	!= NULL		Get correct streamID from RID
 	 *	!= 0	!= NULL		Invalid combination
 	 */
-	if (!err_m && !target)
+	if (!err_m && !msi_spec.np)
 		return -EINVAL;
-	else if (target)
-		of_node_put(target); /* Find streamID map entry for RID in msi-map */
 
 	/*
 	 * msi-map        iommu-map
diff --git a/drivers/pci/controller/pcie-apple.c b/drivers/pci/controller/pcie-apple.c
index a0937b7b3c4d..c2cffc0659f4 100644
--- a/drivers/pci/controller/pcie-apple.c
+++ b/drivers/pci/controller/pcie-apple.c
@@ -755,6 +755,7 @@ static int apple_pcie_enable_device(struct pci_host_bridge *bridge, struct pci_d
 {
 	u32 sid, rid = pci_dev_id(pdev);
 	struct apple_pcie_port *port;
+	struct of_phandle_args iommu_spec = {};
 	int idx, err;
 
 	port = apple_pcie_get_port(pdev);
@@ -764,10 +765,12 @@ static int apple_pcie_enable_device(struct pci_host_bridge *bridge, struct pci_d
 	dev_dbg(&pdev->dev, "added to bus %s, index %d\n",
 		pci_name(pdev->bus->self), port->idx);
 
-	err = of_map_iommu_id(port->pcie->dev->of_node, rid, NULL, &sid);
+	err = of_map_iommu_id(port->pcie->dev->of_node, rid, &iommu_spec);
 	if (err)
 		return err;
 
+	of_node_put(iommu_spec.np);
+	sid = iommu_spec.args[0];
 	mutex_lock(&port->pcie->lock);
 
 	idx = bitmap_find_free_region(port->sid_map, port->sid_map_sz, 0);
diff --git a/drivers/xen/grant-dma-ops.c b/drivers/xen/grant-dma-ops.c
index 1b7696b2d762..2aa1a772a0ff 100644
--- a/drivers/xen/grant-dma-ops.c
+++ b/drivers/xen/grant-dma-ops.c
@@ -319,13 +319,13 @@ static int xen_dt_grant_init_backend_domid(struct device *dev,
 					   struct device_node *np,
 					   domid_t *backend_domid)
 {
-	struct of_phandle_args iommu_spec = { .args_count = 1 };
+	struct of_phandle_args iommu_spec = {};
 
 	if (dev_is_pci(dev)) {
 		struct pci_dev *pdev = to_pci_dev(dev);
 		u32 rid = PCI_DEVID(pdev->bus->number, pdev->devfn);
 
-		if (of_map_iommu_id(np, rid, &iommu_spec.np, iommu_spec.args)) {
+		if (of_map_iommu_id(np, rid, &iommu_spec)) {
 			dev_dbg(dev, "Cannot translate ID\n");
 			return -ESRCH;
 		}
diff --git a/include/linux/of.h b/include/linux/of.h
index fe841f3cc747..8548cd9eb4f1 100644
--- a/include/linux/of.h
+++ b/include/linux/of.h
@@ -463,13 +463,13 @@ bool of_console_check(const struct device_node *dn, char *name, int index);
 
 int of_map_id(const struct device_node *np, u32 id,
 	       const char *map_name, const char *map_mask_name,
-	       struct device_node **target, u32 *id_out);
+	       const struct device_node *filter_np, struct of_phandle_args *arg);
 
 int of_map_iommu_id(const struct device_node *np, u32 id,
-		    struct device_node **target, u32 *id_out);
+		    struct of_phandle_args *arg);
 
 int of_map_msi_id(const struct device_node *np, u32 id,
-		  struct device_node **target, u32 *id_out);
+		  const struct device_node *filter_np, struct of_phandle_args *arg);
 
 phys_addr_t of_dma_get_max_cpu_address(struct device_node *np);
 
@@ -935,19 +935,21 @@ static inline void of_property_clear_flag(struct property *p, unsigned long flag
 
 static inline int of_map_id(const struct device_node *np, u32 id,
 			     const char *map_name, const char *map_mask_name,
-			     struct device_node **target, u32 *id_out)
+			     const struct device_node *filter_np,
+			     struct of_phandle_args *arg)
 {
 	return -EINVAL;
 }
 
 static inline int of_map_iommu_id(const struct device_node *np, u32 id,
-				  struct device_node **target, u32 *id_out)
+				  struct of_phandle_args *arg)
 {
 	return -EINVAL;
 }
 
 static inline int of_map_msi_id(const struct device_node *np, u32 id,
-				struct device_node **target, u32 *id_out)
+				const struct device_node *filter_np,
+				struct of_phandle_args *arg)
 {
 	return -EINVAL;
 }

-- 
2.34.1



From xen-devel-bounces@lists.xenproject.org Fri Apr 24 05:58:02 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Fri, 24 Apr 2026 05:58:02 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1293128.1571037 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wG9YA-00073e-8e; Fri, 24 Apr 2026 05:58:02 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1293128.1571037; Fri, 24 Apr 2026 05:58: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 1wG9YA-00073V-5c; Fri, 24 Apr 2026 05:58:02 +0000
Received: by outflank-mailman (input) for mailman id 1293128;
 Fri, 24 Apr 2026 05:58:00 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <vijayanand.jitta@oss.qualcomm.com>)
 id 1wG9Y8-00072N-FT
 for xen-devel@lists.xenproject.org; Fri, 24 Apr 2026 05:58:00 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wG9Y7-00GqJX-SY
 for xen-devel@lists.xenproject.org; Fri, 24 Apr 2026 07:57:59 +0200
Received: from [10.42.69.1] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <vijayanand.jitta@oss.qualcomm.com>)
 id 69eb065b-5cb7-0a2a0a5109dd-0a2a4501c5d4-34
 for <xen-devel@lists.xenproject.org>; Fri, 24 Apr 2026 07:57:59 +0200
Received: from [205.220.180.131] (helo=mx0b-0031df01.pphosted.com)
 by tlsNG-d62444.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.1)
 (envelope-from <vijayanand.jitta@oss.qualcomm.com>)
 id 69eb0666-c1f2-0a2a45010019-cddcb483eab0-3
 for <xen-devel@lists.xenproject.org>; Fri, 24 Apr 2026 07:57:59 +0200
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
 63O4cpN1009844
 for <xen-devel@lists.xenproject.org>; Fri, 24 Apr 2026 05:57:58 GMT
Received: from mail-pj1-f72.google.com (mail-pj1-f72.google.com
 [209.85.216.72])
 by mx0a-0031df01.pphosted.com (PPS) with ESMTPS id 4dqk17brmh-1
 (version=TLSv1.3 cipher=TLS_AES_128_GCM_SHA256 bits=128 verify=NOT)
 for <xen-devel@lists.xenproject.org>; Fri, 24 Apr 2026 05:57:57 +0000 (GMT)
Received: by mail-pj1-f72.google.com with SMTP id
 98e67ed59e1d1-354490889b6so11279993a91.3
 for <xen-devel@lists.xenproject.org>; Thu, 23 Apr 2026 22:57:57 -0700 (PDT)
Received: from hu-vjitta-hyd.qualcomm.com ([202.46.23.25])
 by smtp.gmail.com with ESMTPSA id
 41be03b00d2f7-c79770512afsm17288101a12.31.2026.04.23.22.57.45
 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
 Thu, 23 Apr 2026 22:57:55 -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=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="Cc:To:In-Reply-To:References:Message-Id:Content-Transfer-Encoding:MIME-Version:Subject:Date:From"
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=
	fOXXFN9mhZ7JxzI+hTQo1c6CYH+05MRwTlhFigPlnEI=; b=n55RZJ6Jw4rv8neg
	xJrqVkFw8uPXRCYWQMWIJ0f5DE4gyZ9SLrHuyvkgYDVvsJjDL9y8WneA2vOalYB6
	VujLJ/jW7MUMvjOcKLMZ9ZxDBR6Ix2aHSF0xtQZeYssCZRolHc6RqF6AhhFXzCq8
	FwKb4clhZXNP08kPn+vJKI9IUa80R51Rd1feVlnDzigW2AFnXM6ryhBkkEXe8PZ8
	4L1gQnJBZEi2ppa4qCFrL+OI51556Lb/5fEIM6NfYQN+Jx/ZnhrYxHDj2W/e2BeK
	sRpWETO/Kxp0WvttNunwhkNH2QrY/Cosf9BgE8TSrd7HS7uK9M55Zl93ztMnLqkY
	9/tNGA==
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=oss.qualcomm.com; s=google; t=1777010276; x=1777615076; darn=lists.xenproject.org;
        h=cc:to:in-reply-to:references:message-id:content-transfer-encoding
         :mime-version:subject:date:from:from:to:cc:subject:date:message-id
         :reply-to;
        bh=fOXXFN9mhZ7JxzI+hTQo1c6CYH+05MRwTlhFigPlnEI=;
        b=RLd5KbQRfbLXcvbbaAiFArxOfU6l9CT9drJFsGuGaNtDm96lEHvQA4BiBXbhpd1f1V
         NqGGXTy75HorpD9nk3oXhQ7gnC8Ja2BJF66F7amJyd5LSg3Eq4TfH9bu0MwzUBS3AB+y
         LQXFIw531c8kwVudPy6EwNAD5PPtbqEMWpTaVOigLFPLgfCVKHGdbgoQxLC5YrBDMhRU
         Z9YyZDdPLqcSSnak1Yv3mTbo3qVPszS4KMtjXYQ/YPXUAIvzd3mdII43iFsQkeRiPPVk
         z8/zLMd+Ctmq8UyB+niGf2x54LBNIzLXmFGNf1c7CqXZHgzXRP65iEc/lO02Q2Mxnh6P
         RrWA==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20251104; t=1777010276; x=1777615076;
        h=cc:to:in-reply-to:references:message-id:content-transfer-encoding
         :mime-version:subject:date:from:x-gm-gg:x-gm-message-state:from:to
         :cc:subject:date:message-id:reply-to;
        bh=fOXXFN9mhZ7JxzI+hTQo1c6CYH+05MRwTlhFigPlnEI=;
        b=BHLmJKsrcLJWAcpNQk1zpMLPPpkS2U898GrHHJzRH5+Bn2CteZRkwe+mBHLY0xgFMX
         gBhXy+j/1fYMhv6bfcpCIsEOWToMvjezbry1Fak3A9su6J3Grj7mlVUVotl3FUSpOzhg
         KOkFwwvj4sY6ldZnVwvsJW4dfLjacIK3JN75kgC77a4D+FNZCy0JNqRDpqnZutut67xv
         6FHNA7UrV18PNu35AHDij/Z+1rlGz/2fwn2Apo3VrAkItjKxTIgm8XkLR9aXSs6RoD/G
         gbjLb6uxP+JrKHfsCMz9741N3Gtyw3+pxRPA0GNh0xVI2kNOKHpifKNSx6x8H2+5yuc6
         YoLA==
X-Forwarded-Encrypted: i=1; AFNElJ9XYNs49YruRDJmwckGQWum776NW14KAqP7WiMMOFhjptvFAAqHrn4PPsvvjzDV6KQL6Doxfe+yxHQ=@lists.xenproject.org
X-Gm-Message-State: AOJu0Yw7RT+nGsbO7yf5DTV0mIRfztZuI3nBdR5LURwXhqtUPpPQbwTb
	Iliotkclv50ihPTvx0+ZyUXclWF8LeOwJ8F46Rmw3YpH+/m2o8LyVVPfYjmTHDC6Xt26Xe56LTh
	jcAwE2K2AMkgHPZ/SO2/ACRqNZb10LMFAkqwR6gV11bDSnTmTWxj+qhWVSRHpaSn3c1qVaA==
X-Gm-Gg: AeBDiev7F4ThFvZ6xmCjitjA4O0M18PWYkfnQlQ1xc3gzbCUNtdm/MccSIukQYktnmT
	AzGGixCDPhy/KpxuBVt8x7rbHbfZbsmqguDuCQcn+HNTw8w4z6bmI29Kt5OuveZhwT2QdKAuE33
	oa8Alcld1J2g0q79fFtqQY00W0t7HcZs64yuuaNg0gZrmrgzVa35EO5RV6x0VQonggN85vo1JIh
	3Mr/KRhq1aupMkRe3AZQsLiEzJ3aRRhYUYElWQrcBkvkZVinMzdPFd89Z9au3oriQNWlKoeDRni
	BSsua7mFHym4mGiXh5ww8FZQdguwWAUmQUJglAFB+eMk3B68QmoeUSH3WDOTFv21CQ+5e3BIdEg
	4vJU7pqWQyi65ZrDFq9LRloWNpeUl6mGcPs4rivlnmWvC3Hq3vC+HFKnYJbuyRoOii8A=
X-Received: by 2002:a05:6300:6cd0:10b0:398:8766:4d0a with SMTP id adf61e73a8af0-3a08d7342b0mr21009096637.19.1777010276426;
        Thu, 23 Apr 2026 22:57:56 -0700 (PDT)
X-Received: by 2002:a05:6300:6cd0:10b0:398:8766:4d0a with SMTP id adf61e73a8af0-3a08d7342b0mr21009075637.19.1777010275875;
        Thu, 23 Apr 2026 22:57:55 -0700 (PDT)
From: Vijayanand Jitta <vijayanand.jitta@oss.qualcomm.com>
Date: Fri, 24 Apr 2026 11:26:10 +0530
Subject: [PATCH v14 3/3] of: Respect #{iommu,msi}-cells in maps
MIME-Version: 1.0
Content-Type: text/plain; charset="utf-8"
Content-Transfer-Encoding: 7bit
Message-Id: <20260424-parse_iommu_cells-v14-3-fd02f11b6c38@oss.qualcomm.com>
References: <20260424-parse_iommu_cells-v14-0-fd02f11b6c38@oss.qualcomm.com>
In-Reply-To: <20260424-parse_iommu_cells-v14-0-fd02f11b6c38@oss.qualcomm.com>
To: Nipun Gupta <nipun.gupta@amd.com>, Nikhil Agarwal <nikhil.agarwal@amd.com>,
        Joerg Roedel <joro@8bytes.org>, Will Deacon <will@kernel.org>,
        Robin Murphy <robin.murphy@arm.com>, Marc Zyngier <maz@kernel.org>,
        Lorenzo Pieralisi <lpieralisi@kernel.org>,
        Thomas Gleixner <tglx@kernel.org>,
        Saravana Kannan <saravanak@kernel.org>,
        Richard Zhu <hongxing.zhu@nxp.com>,
        Lucas Stach <l.stach@pengutronix.de>,
        =?utf-8?q?Krzysztof_Wilczy=C5=84ski?= <kwilczynski@kernel.org>,
        Manivannan Sadhasivam <mani@kernel.org>,
        Bjorn Helgaas <bhelgaas@google.com>, Frank Li <Frank.Li@nxp.com>,
        Sascha Hauer <s.hauer@pengutronix.de>,
        Pengutronix Kernel Team <kernel@pengutronix.de>,
        Fabio Estevam <festevam@gmail.com>, Juergen Gross <jgross@suse.com>,
        Stefano Stabellini <sstabellini@kernel.org>,
        Oleksandr Tyshchenko <oleksandr_tyshchenko@epam.com>,
        Dmitry Baryshkov <dmitry.baryshkov@oss.qualcomm.com>,
        Konrad Dybcio <konrad.dybcio@oss.qualcomm.com>,
        Bjorn Andersson <bjorn.andersson@oss.qualcomm.com>,
        Rob Herring <robh@kernel.org>, Conor Dooley <conor+dt@kernel.org>,
        Krzysztof Kozlowski <krzk+dt@kernel.org>,
        Prakash Gupta <prakash.gupta@oss.qualcomm.com>,
        Vikash Garodia <vikash.garodia@oss.qualcomm.com>
Cc: linux-kernel@vger.kernel.org, iommu@lists.linux.dev,
        linux-arm-kernel@lists.infradead.org, devicetree@vger.kernel.org,
        linux-pci@vger.kernel.org, imx@lists.linux.dev,
        xen-devel@lists.xenproject.org, linux-arm-msm@vger.kernel.org,
        Vijayanand Jitta <vijayanand.jitta@oss.qualcomm.com>,
        Charan Teja Kalla <charan.kalla@oss.qualcomm.com>
X-Mailer: b4 0.15.2
X-Developer-Signature: v=1; a=ed25519-sha256; t=1777010232; l=12022;
 i=vijayanand.jitta@oss.qualcomm.com; s=20260301; h=from:subject:message-id;
 bh=d1eDTLSvaaoV8Pjb6ssN/wlaFmWHAsxlhBaIWB039ns=;
 b=dvjmg1JeV+d2IiPPXLnSyPZS2iXakbo7vH25RJpgfxHMtQvlf6E20k//Y7tUylU/KmB5QpkoN
 p1JKaTx7QpWAoc1ISIZabpuZvStHNGLlT1s7gu6I+nkJ5BwVTldmp0L
X-Developer-Key: i=vijayanand.jitta@oss.qualcomm.com; a=ed25519;
 pk=Lpi7Cs3wHe8KZtqvyci7FTOLzsKpEHKGCaPNZw+1zRI=
X-Proofpoint-GUID: iL-gqe1_gBkvMTKICQLWEwwBbSmZwDC2
X-Authority-Analysis: v=2.4 cv=R98z39RX c=1 sm=1 tr=0 ts=69eb0665 cx=c_pps
 a=RP+M6JBNLl+fLTcSJhASfg==:117 a=ZePRamnt/+rB5gQjfz0u9A==:17
 a=IkcTkHD0fZMA:10 a=A5OVakUREuEA:10 a=s4-Qcg_JpJYA:10
 a=VkNPw1HP01LnGYTKEx00:22 a=u7WPNUs3qKkmUXheDGA7:22 a=yx91gb_oNiZeI1HMLzn7:22
 a=7CQSdrXTAAAA:8 a=EUspDBNiAAAA:8 a=klF1l1D6msg2vEcBgDUA:9 a=QEXdDO2ut3YA:10
 a=iS9zxrgQBfv6-_F4QbHw:22 a=a-qgeE7W1pNrGK8U0ZQC:22
X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwNDI0MDA1MSBTYWx0ZWRfXy/EtbWHp8D1F
 +wDk4M+AUOwl4m1pbY6jRRPVMktClbE8fUT8SljxzIMgzYtayIMUs8rgRuGdECKIArbn18qabJh
 cVw1jNvHFBKRIKWuhu1zunMaTBPLExE5RmmOXlzL2YRTqeYGque3eL0VM/7NK7cSn43w7LULHyM
 KYTYYGwydr0PVVEqyd7q85MfUYcQ5IOHv3iLE1u2bhAd2zp8JgPuRECyhDPj/vBwGTL8AjZxJOd
 LijEHpg/avShopc0Kip5U2gU+IdmpFqe8VJPjfM/DhUmpz8/IgZrGLt/y6NnL30+yV9VUyG/8Yk
 ruHI+u20KNJ6bPSn03UoyjoZ2+8Ngpz8klZJPFIcsi4E2rWwh8orPs9NK4S+FtMijqEPNIMkV1W
 Gc9AbcGqUwOD79Zv4dNpfnQdRVhIyf1CdbUeGvlrS5UNZNnFIjXQZ3r6fjYbvUKwa3i+CPXZnKH
 D8FYaU0akfdkG1mFNrg==
X-Proofpoint-ORIG-GUID: iL-gqe1_gBkvMTKICQLWEwwBbSmZwDC2
X-Proofpoint-Virus-Version: vendor=baseguard
 engine=ICAP:2.0.293,Aquarius:18.0.1143,Hydra:6.1.51,FMLib:17.12.100.49
 definitions=2026-04-23_03,2026-04-21_02,2025-10-01_01
X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0
 bulkscore=0 spamscore=0 clxscore=1015 priorityscore=1501 phishscore=0
 malwarescore=0 impostorscore=0 adultscore=0 lowpriorityscore=0 suspectscore=0
 classifier=typeunknown authscore=0 authtc= authcc= route=outbound adjust=0
 reason=mlx scancount=1 engine=8.22.0-2604200000 definitions=main-2604240051
X-purgate-ID: tlsNG-d62444/1777010279-BD468FF4-86E1E1B9/0/0
X-purgate-type: clean
X-purgate-size: 12069

From: Robin Murphy <robin.murphy@arm.com>

So far our parsing of {iommu,msi}-map properties has always blindly
assumed that the output specifiers will always have exactly 1 cell.
This typically does happen to be the case, but is not actually enforced
(and the PCI msi-map binding even explicitly states support for 0 or 1
cells) - as a result we've now ended up with dodgy DTs out in the field
which depend on this behaviour to map a 1-cell specifier for a 2-cell
provider, despite that being bogus per the bindings themselves.

Since there is some potential use in being able to map at least single
input IDs to multi-cell output specifiers (and properly support 0-cell
outputs as well), add support for properly parsing and using the target
nodes' #cells values, albeit with the unfortunate complication of still
having to work around expectations of the old behaviour too.

Since there are multi-cell output specifiers, the callers of of_map_id()
may need to get the exact cell output value for further processing.
Update of_map_id() to set args_count in the output to reflect the actual
number of output specifier cells.

Signed-off-by: Robin Murphy <robin.murphy@arm.com>
Signed-off-by: Charan Teja Kalla <charan.kalla@oss.qualcomm.com>
Signed-off-by: Vijayanand Jitta <vijayanand.jitta@oss.qualcomm.com>
---
 drivers/of/base.c  | 157 +++++++++++++++++++++++++++++++++++++++++------------
 include/linux/of.h |   6 +-
 2 files changed, 125 insertions(+), 38 deletions(-)

diff --git a/drivers/of/base.c b/drivers/of/base.c
index b3d002015192..2554e4f1a181 100644
--- a/drivers/of/base.c
+++ b/drivers/of/base.c
@@ -2096,18 +2096,48 @@ int of_find_last_cache_level(unsigned int cpu)
 	return cache_level;
 }
 
+/*
+ * Some DTs have an iommu-map targeting a 2-cell IOMMU node while
+ * specifying only 1 cell. Fortunately they all consist of value '1'
+ * as the 2nd cell entry with the same target, so check for that pattern.
+ *
+ * Example:
+ *	IOMMU node:
+ *		#iommu-cells = <2>;
+ *
+ *	Device node:
+ *		iommu-map = <0x0000 &smmu 0x0000 0x1>,
+ *			    <0x0100 &smmu 0x0100 0x1>;
+ */
+static bool of_check_bad_map(const __be32 *map, int len)
+{
+	__be32 phandle = map[1];
+
+	if (len % 4)
+		return false;
+	for (int i = 0; i < len; i += 4) {
+		if (map[i + 1] != phandle || map[i + 3] != cpu_to_be32(1))
+			return false;
+	}
+	return true;
+}
+
 /**
  * of_map_id - Translate an ID through a downstream mapping.
  * @np: root complex device node.
  * @id: device ID to map.
  * @map_name: property name of the map to use.
+ * @cells_name: property name of target specifier cells.
  * @map_mask_name: optional property name of the mask to use.
  * @filter_np: optional device node to filter matches by, or NULL to match any.
  *	If non-NULL, only map entries targeting this node will be matched.
  * @arg: pointer to a &struct of_phandle_args for the result. On success,
- *	@arg->args[0] will contain the translated ID. If a map entry was
- *	matched, @arg->np will be set to the target node with a reference
- *	held that the caller must release with of_node_put().
+ *	@arg->args_count will be set to the number of output specifier cells
+ *	as defined by @cells_name in the target node, and
+ *	@arg->args[0..args_count-1] will contain the translated output
+ *	specifier values. If a map entry was matched, @arg->np will be set
+ *	to the target node with a reference held that the caller must release
+ *	with of_node_put().
  *
  * Given a device ID, look up the appropriate implementation-defined
  * platform ID and/or the target device which receives transactions on that
@@ -2116,17 +2146,19 @@ int of_find_last_cache_level(unsigned int cpu)
  * Return: 0 on success or a standard error code on failure.
  */
 int of_map_id(const struct device_node *np, u32 id,
-	       const char *map_name, const char *map_mask_name,
+	       const char *map_name, const char *cells_name,
+	       const char *map_mask_name,
 	       const struct device_node *filter_np, struct of_phandle_args *arg)
 {
 	u32 map_mask, masked_id;
-	int map_len;
+	int map_bytes, map_len, offset = 0;
+	bool bad_map = false;
 	const __be32 *map = NULL;
 
 	if (!np || !map_name || !arg)
 		return -EINVAL;
 
-	map = of_get_property(np, map_name, &map_len);
+	map = of_get_property(np, map_name, &map_bytes);
 	if (!map) {
 		if (filter_np)
 			return -ENODEV;
@@ -2136,11 +2168,9 @@ int of_map_id(const struct device_node *np, u32 id,
 		return 0;
 	}
 
-	if (!map_len || map_len % (4 * sizeof(*map))) {
-		pr_err("%pOF: Error: Bad %s length: %d\n", np,
-			map_name, map_len);
-		return -EINVAL;
-	}
+	if (map_bytes % sizeof(*map))
+		goto err_map_len;
+	map_len = map_bytes / sizeof(*map);
 
 	/* The default is to select all bits. */
 	map_mask = 0xffffffff;
@@ -2153,39 +2183,84 @@ int of_map_id(const struct device_node *np, u32 id,
 		of_property_read_u32(np, map_mask_name, &map_mask);
 
 	masked_id = map_mask & id;
-	for ( ; map_len > 0; map_len -= 4 * sizeof(*map), map += 4) {
+
+	while (offset < map_len) {
 		struct device_node *phandle_node;
-		u32 id_base = be32_to_cpup(map + 0);
-		u32 phandle = be32_to_cpup(map + 1);
-		u32 out_base = be32_to_cpup(map + 2);
-		u32 id_len = be32_to_cpup(map + 3);
+		u32 id_base, phandle, id_len, id_off, cells = 0;
+		const __be32 *out_base;
+
+		if (map_len - offset < 2)
+			goto err_map_len;
+
+		id_base = be32_to_cpup(map + offset);
 
 		if (id_base & ~map_mask) {
-			pr_err("%pOF: Invalid %s translation - %s-mask (0x%x) ignores id-base (0x%x)\n",
-				np, map_name, map_name,
-				map_mask, id_base);
+			pr_err("%pOF: Invalid %s translation - %s (0x%x) ignores id-base (0x%x)\n",
+			       np, map_name, map_mask_name, map_mask, id_base);
 			return -EFAULT;
 		}
 
-		if (masked_id < id_base || masked_id >= id_base + id_len)
-			continue;
-
+		phandle = be32_to_cpup(map + offset + 1);
 		phandle_node = of_find_node_by_phandle(phandle);
 		if (!phandle_node)
 			return -ENODEV;
 
+		if (bad_map) {
+			cells = 1;
+		} else if (of_property_read_u32(phandle_node, cells_name, &cells)) {
+			pr_err("%pOF: missing %s property\n", phandle_node, cells_name);
+			of_node_put(phandle_node);
+			return -EINVAL;
+		}
+
+		if (map_len - offset < 3 + cells) {
+			of_node_put(phandle_node);
+			goto err_map_len;
+		}
+
+		if (offset == 0 && cells == 2) {
+			bad_map = of_check_bad_map(map, map_len);
+			if (bad_map) {
+				pr_warn_once("%pOF: %s mismatches target %s, assuming extra cell of 0\n",
+					     np, map_name, cells_name);
+				cells = 1;
+			}
+		}
+
+		out_base = map + offset + 2;
+		offset += 3 + cells;
+
+		id_len = be32_to_cpup(map + offset - 1);
+		if (id_len > 1 && cells > 1) {
+			/*
+			 * With 1 output cell we reasonably assume its value
+			 * has a linear relationship to the input; with more,
+			 * we'd need help from the provider to know what to do.
+			 */
+			pr_err("%pOF: Unsupported %s - cannot handle %d-ID range with %d-cell output specifier\n",
+			       np, map_name, id_len, cells);
+			of_node_put(phandle_node);
+			return -EINVAL;
+		}
+		id_off = masked_id - id_base;
+		if (masked_id < id_base || id_off >= id_len) {
+			of_node_put(phandle_node);
+			continue;
+		}
+
 		if (filter_np && filter_np != phandle_node) {
 			of_node_put(phandle_node);
 			continue;
 		}
 
 		arg->np = phandle_node;
-		arg->args[0] = masked_id - id_base + out_base;
-		arg->args_count = 1;
+		for (int i = 0; i < cells; i++)
+			arg->args[i] = id_off + be32_to_cpu(out_base[i]);
+		arg->args_count = cells;
 
 		pr_debug("%pOF: %s, using mask %08x, id-base: %08x, out-base: %08x, length: %08x, id: %08x -> %08x\n",
-			np, map_name, map_mask, id_base, out_base,
-			id_len, id, masked_id - id_base + out_base);
+			np, map_name, map_mask, id_base, be32_to_cpup(out_base),
+			id_len, id, id_off + be32_to_cpup(out_base));
 		return 0;
 	}
 
@@ -2196,6 +2271,10 @@ int of_map_id(const struct device_node *np, u32 id,
 	arg->args[0] = id;
 	arg->args_count = 1;
 	return 0;
+
+err_map_len:
+	pr_err("%pOF: Error: Bad %s length: %d\n", np, map_name, map_bytes);
+	return -EINVAL;
 }
 EXPORT_SYMBOL_GPL(of_map_id);
 
@@ -2205,18 +2284,21 @@ EXPORT_SYMBOL_GPL(of_map_id);
  * @id: Requester ID of the device (e.g. PCI RID/BDF or a platform
  *      stream/device ID) used as the lookup key in the iommu-map table.
  * @arg: pointer to a &struct of_phandle_args for the result. On success,
- *	@arg->args[0] contains the translated ID. If a map entry was matched,
- *	@arg->np holds a reference to the target node that the caller must
- *	release with of_node_put().
+ *	@arg->args_count will be set to the number of output specifier cells
+ *	and @arg->args[0..args_count-1] will contain the translated output
+ *	specifier values. If a map entry was matched, @arg->np holds a
+ *	reference to the target node that the caller must release with
+ *	of_node_put().
  *
- * Convenience wrapper around of_map_id() using "iommu-map" and "iommu-map-mask".
+ * Convenience wrapper around of_map_id() using "iommu-map", "#iommu-cells",
+ * and "iommu-map-mask".
  *
  * Return: 0 on success or a standard error code on failure.
  */
 int of_map_iommu_id(const struct device_node *np, u32 id,
 		    struct of_phandle_args *arg)
 {
-	return of_map_id(np, id, "iommu-map", "iommu-map-mask", NULL, arg);
+	return of_map_id(np, id, "iommu-map", "#iommu-cells", "iommu-map-mask", NULL, arg);
 }
 EXPORT_SYMBOL_GPL(of_map_iommu_id);
 
@@ -2229,17 +2311,20 @@ EXPORT_SYMBOL_GPL(of_map_iommu_id);
  *	to match any. If non-NULL, only map entries targeting this node will
  *	be matched.
  * @arg: pointer to a &struct of_phandle_args for the result. On success,
- *	@arg->args[0] contains the translated ID. If a map entry was matched,
- *	@arg->np holds a reference to the target node that the caller must
- *	release with of_node_put().
+ *	@arg->args_count will be set to the number of output specifier cells
+ *	and @arg->args[0..args_count-1] will contain the translated output
+ *	specifier values. If a map entry was matched, @arg->np holds a
+ *	reference to the target node that the caller must release with
+ *	of_node_put().
  *
- * Convenience wrapper around of_map_id() using "msi-map" and "msi-map-mask".
+ * Convenience wrapper around of_map_id() using "msi-map", "#msi-cells",
+ * and "msi-map-mask".
  *
  * Return: 0 on success or a standard error code on failure.
  */
 int of_map_msi_id(const struct device_node *np, u32 id,
 		  const struct device_node *filter_np, struct of_phandle_args *arg)
 {
-	return of_map_id(np, id, "msi-map", "msi-map-mask", filter_np, arg);
+	return of_map_id(np, id, "msi-map", "#msi-cells", "msi-map-mask", filter_np, arg);
 }
 EXPORT_SYMBOL_GPL(of_map_msi_id);
diff --git a/include/linux/of.h b/include/linux/of.h
index 8548cd9eb4f1..51ac8539f2c3 100644
--- a/include/linux/of.h
+++ b/include/linux/of.h
@@ -462,7 +462,8 @@ const char *of_prop_next_string(const struct property *prop, const char *cur);
 bool of_console_check(const struct device_node *dn, char *name, int index);
 
 int of_map_id(const struct device_node *np, u32 id,
-	       const char *map_name, const char *map_mask_name,
+	       const char *map_name, const char *cells_name,
+	       const char *map_mask_name,
 	       const struct device_node *filter_np, struct of_phandle_args *arg);
 
 int of_map_iommu_id(const struct device_node *np, u32 id,
@@ -934,7 +935,8 @@ static inline void of_property_clear_flag(struct property *p, unsigned long flag
 }
 
 static inline int of_map_id(const struct device_node *np, u32 id,
-			     const char *map_name, const char *map_mask_name,
+			     const char *map_name, const char *cells_name,
+			     const char *map_mask_name,
 			     const struct device_node *filter_np,
 			     struct of_phandle_args *arg)
 {

-- 
2.34.1



From xen-devel-bounces@lists.xenproject.org Fri Apr 24 06:34:26 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Fri, 24 Apr 2026 06:34:26 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1293166.1571046 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wGA7H-0000Ah-U4; Fri, 24 Apr 2026 06:34:19 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1293166.1571046; Fri, 24 Apr 2026 06:34: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 1wGA7H-0000Aa-RC; Fri, 24 Apr 2026 06:34:19 +0000
Received: by outflank-mailman (input) for mailman id 1293166;
 Fri, 24 Apr 2026 06:34:18 +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 1wGA7G-0000AT-J5
 for xen-devel@lists.xenproject.org; Fri, 24 Apr 2026 06:34:18 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wGA7F-009RdE-Qb
 for xen-devel@lists.xenproject.org; Fri, 24 Apr 2026 08:34:17 +0200
Received: from [10.42.69.3] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <Mykyta_Poturai@epam.com>)
 id 69eb0ee1-e002-0a2a0a5209dd-0a2a4503a61a-22
 for <xen-devel@lists.xenproject.org>; Fri, 24 Apr 2026 08:34:17 +0200
Received: from [52.101.66.137]
 (helo=DUZPR83CU001.outbound.protection.outlook.com)
 by tlsNG-33051d.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.1)
 (envelope-from <Mykyta_Poturai@epam.com>)
 id 69eb0ee9-672d-0a2a45030019-3465428966b3-3
 for <xen-devel@lists.xenproject.org>; Fri, 24 Apr 2026 08:34:17 +0200
Received: from PAVPR03MB10102.eurprd03.prod.outlook.com
 (2603:10a6:102:30d::12) by FRWPR03MB11125.eurprd03.prod.outlook.com
 (2603:10a6:d10:1a4::7) with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9846.22; Fri, 24 Apr
 2026 06:34:15 +0000
Received: from PAVPR03MB10102.eurprd03.prod.outlook.com
 ([fe80::b8c6:f37a:987a:beb]) by PAVPR03MB10102.eurprd03.prod.outlook.com
 ([fe80::b8c6:f37a:987a:beb%5]) with mapi id 15.20.9846.021; Fri, 24 Apr 2026
 06:34: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=wa07ll9TbS7ycXJUpGoyjXpliSwE7Q+lx3TLNtn2tqcv0e9woYZVNJu8DIv0lEzQFSLuT15Ytgf48rtFOTMh6YOY6p+Rym5bODOWxKLbWOvK8S4g97/PY2wfBAUPzJwmJ4LPijwTodQui8HnU/jh/2A0vkqtkZqh99U1jrGHYaogOQ54K0g4pIF0/LnfKFoRrXMDXpyYfFUOgcGFC1N/cshghnspDR477rVpl+n8kT9UMZp9mxSrlFJ9feBEfb/emQxhW+6TWvvlxkBzilsN0mevJR1BmyUA+PBxndth8EgI2RI3oU8o4sd9ezNDT9pfHP0Wwmc62QoR4nSqdfNM/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=9dufs4c+GYFiXOiY1rG+JCyLPqXHtv2LGRSLu4XNZ5Y=;
 b=lYvzFkdlv2BZftdvxXd08IYTprcsDJKqTEe4Ee2gqetOj1gF4/XvJifFy5Wk6dpKnXDqvu95UA6jmfwOSVZ3JmEnY886kdPVPSRHe77QYiEWp2Lgt/X0ua8Ii/8urrPjLMNRR19ihkxjhpCDWLcukeaMrHbfxNH+OLjTDsuroowlbNdMkDd4Yndfdv59QCU0pwbWLWVyeXVqt74cvFfx1CUEQsHEpF2wDahBCQfB6kQgLAaLcm/Z4wXrM8E52kAhPtKCw/DeVm+y8fbIyXg82p1ATx+kzYdbFVY1gi5ROrFn83D3WYTiy6Ez8DIqOp8f+12Slj6coToHzWfx/enLhA==
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=9dufs4c+GYFiXOiY1rG+JCyLPqXHtv2LGRSLu4XNZ5Y=;
 b=A+KPXky++/MrNEN3zokhwejfwAocrEcYzeEB40CPc8zt/VG2qQq3v6GbIL9maH7UFirc/2GDQw1hgzNx9J3sGvm0TxwuDp3PbZ6BRgsWEjCCjiUvbSC1VI2tchZBNhhVqIG/Xe8MuUmIElCnVwosh/uIGzP1ZiZA5Ncad34PsnUgztZygpEHxR09vKLP73co2mYRkaz3hGdCQyeYXebKDdQtyxMdcrB/sbZUiwTasvXM4E+t+1ss1MZSrV4KP3jkvxS6jGINl4Shg3ODvO0pODp/4HwPbtPVvd1TBDBuhgmhAGAG8PxqJCiWY3NWMwHqaEaU2+nIjWdl0twGBbr4Ow==
From: Mykyta Poturai <Mykyta_Poturai@epam.com>
To: Jan Beulich <jbeulich@suse.com>, Stewart Hildebrand
	<stewart.hildebrand@amd.com>
CC: =?utf-8?B?Um9nZXIgUGF1IE1vbm7DqQ==?= <roger.pau@citrix.com>,
	"xen-devel@lists.xenproject.org" <xen-devel@lists.xenproject.org>
Subject: Re: [PATCH v3 6/7] vpci: add SR-IOV support for DomUs
Thread-Topic: [PATCH v3 6/7] vpci: add SR-IOV support for DomUs
Thread-Index: AQHcyClgJVtVkM11YECyJKBoUo8yu7XprXKAgAQq9wA=
Date: Fri, 24 Apr 2026 06:34:15 +0000
Message-ID: <285c7a48-f8e0-423d-9630-f4844e74fd0f@epam.com>
References: <cover.1775742115.git.mykyta_poturai@epam.com>
 <1aaf1a087ca0003d943d43c55500b3ab84195cf5.1775742115.git.mykyta_poturai@epam.com>
 <c8e664fd-59f8-482d-ad48-99ff59842682@suse.com>
In-Reply-To: <c8e664fd-59f8-482d-ad48-99ff59842682@suse.com>
Accept-Language: en-US
Content-Language: en-US
X-MS-Has-Attach:
X-MS-TNEF-Correlator:
authentication-results: dkim=none (message not signed)
 header.d=none;dmarc=none action=none header.from=epam.com;
x-ms-publictraffictype: Email
x-ms-traffictypediagnostic: PAVPR03MB10102:EE_|FRWPR03MB11125:EE_
x-ms-office365-filtering-correlation-id: 8541aa67-f031-46e4-1984-08dea1cb8160
x-ms-exchange-senderadcheck: 1
x-ms-exchange-antispam-relay: 0
x-microsoft-antispam:
 BCL:0;ARA:13230040|366016|376014|1800799024|56012099003|22082099003|18002099003|38070700021;
x-microsoft-antispam-message-info:
 DmMUxYUxDoDzVW77vm7tx2PoPY/1gSqveZeLsjZVpdxxy6owy3k9LWlI/vvrwUIoNePwqgKgwdtdUiR9qEoH53CFo5GIcOSBT5hDWHqpDGQ4oY3cbETpvCu4K3cCpCZFspCLibs+1HXCrq43gTp//IIxRmCwP4B7jjsMq4OAGj510Cugk8gPKrDasBfHiroBKGshtMMxvFEnpcLMK2rt1jNFB1zheG6bVRuxj0E5WoB3PIpQ0e7kO68z02NsVMxBPwJImYHWl8duhqKj8Sagq2UWgzfWkpJmk/VlLwl8o73dDZejFlZbiB7ynkZKa5/jHz/Id/Rb7SNd5vW8GT6Lmk4pX2T4AoMvHzUN8VJ2flptkIEIbkBGRDYzfOJ5orqkTKSCZjwjBgkLJ0LwJ47gU8eHf72Aa+935+Ik+yGIZlUz8s2sEV6i25pkkw5q0otW2ZIb2xr+EIV3ty2NhrddH9STOCCIkkhpZaPKvXLs3q06weTTPY+cdR35H/RAT1vk80JpioGWN7jreh3SU6943mRJsiBqvZcXDOZnxH8TesQoLDFMTyFaGeBUArt0DGjgmY3Gt6gZYCUfBnNL70oHcth6xMvvuATFpvEJIMzGsMsSYyHlqs93A2sPobf+ANYk4fEChl5zCLALBfKk7cIowWV1zQsdNFOtnMAv55ZpSfQ3k5ddUsBOC+GgZMsjmSBA8JzMsB07+sKDpD7DV6bqsPHYARp5bhOnpq9OKg3avjlsd478//fMVC+pKaDLKhE5CBsxOpw7pcmltZIoU33ZgQGtamDbJKFHx3ar+cShV5M=
x-forefront-antispam-report:
 CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:PAVPR03MB10102.eurprd03.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(366016)(376014)(1800799024)(56012099003)(22082099003)(18002099003)(38070700021);DIR:OUT;SFP:1102;
x-ms-exchange-antispam-messagedata-chunkcount: 1
x-ms-exchange-antispam-messagedata-0:
 =?utf-8?B?NURpUm9nTHFYQ3JqWEpMalBibkFYVEhkUjVQQ213dCtkd0xzSVZscVVLVk8w?=
 =?utf-8?B?WitwL3RwMTFCVVVjbVZKTm1kV1lXY1lCYXVpVUVRSWZpeFB6ei90OUtaeWZ3?=
 =?utf-8?B?ZnJUaHN3dHFUT0haOWFqdGk4bHRJSkI5eFMzR1MzUGIwaGZTNnE1cGRPLzY5?=
 =?utf-8?B?Mk94N21xenFocjBabWsvMnVlSGRobFRZRC9HN3pVTFpKT2pBKzNGT2dVeVpN?=
 =?utf-8?B?aldQbHd5ZkMwMnhITGV5Rm9UV0JnZ1JBeENQbDNSbno5R3A0NFJ0QXlDZllj?=
 =?utf-8?B?VThaTjVveWF5bUptcUpCU1FLS1ZEZy9FMG41czRweXdJNFdKMDY0UTc0MDN3?=
 =?utf-8?B?dEY0R05veFcrc2tUcmJKUFJ0TGxidnZScHdCVjR3U1V0UllPYjRYa0U5VjFj?=
 =?utf-8?B?YmtjNmFRTisvNjIyWUpONmRUZnZVMVNHbVdFcm4yTW9NUHJ5R1dhQStuRytZ?=
 =?utf-8?B?L25LRDMwbTNOKzF4TkUzSE5Ec2R1WFlwd0wvRDZkU1NncnA2OWIzVEtYekJR?=
 =?utf-8?B?NnpGOG1lVXc4YzZURU5ud0lHMS9CM1JuL1ZWWEttWnRiTFZpTVRGWmhhVnEx?=
 =?utf-8?B?REtsVENlSDVJdDUzcmUyazdXT1ZSVmRvenJERGpDalREY3BPZDNoMkRWTW12?=
 =?utf-8?B?TVdyS0hBZ2h3R3pxZTRPUlRsa3NYbUZHRHU3ZGFZZDlaSWRkaDkwYnRLQTA3?=
 =?utf-8?B?NjNJMVR6d2dFb0t5UTBQRy9DMWtCTENhNUZBMWdhbExhcTJvZ1QrTmRWTksw?=
 =?utf-8?B?elYzNi9lQy8rdTBVNlMzMGp0bWxpMFoxRzRtdkwzdG9lS1lpLzdQc2tkQ0pC?=
 =?utf-8?B?R0VuZTVYMXVwUkdCeFVMaDhIeXBtOWxlVnJKOFlxSnQ5MDdnTmJWTFp1NUNL?=
 =?utf-8?B?SmVZZXM3MGIxZGxtcGlkOUFybVcvV0NhYmE4bWM2SG9XUDBEbEZ0YmRpdFNj?=
 =?utf-8?B?d0Q1OVlOUFVLZTJ6RlQ5TnhvcEV0ZjJBK2oybndaL29ubXZlME1YaXNyblFa?=
 =?utf-8?B?OEpOQ0pJaEdVL2EweHp0dFN1TWthQi82ZmgzcUtHYy9sVjZEcnA5U1NBUDZj?=
 =?utf-8?B?bU1Hbms5TDZ1VVZrY3FtU2Y2QldlTXFIMnlmaFM0elBuL0JwL0pXK0l4Qmpt?=
 =?utf-8?B?YXV0YzhyTVRrbXp5eWlZT0lQRG1UbHJCSi8rSTk3SmY4WjVESmFWR2ZpWldP?=
 =?utf-8?B?OGZYUW8zY3huUzNpQWRLNEpTbVp6MWVJVnByYzhaZkNEZmR6VWt2TUhEVnE5?=
 =?utf-8?B?R01Wb05CT1FoMjZ5OTNybE1TelB6dHFlc2I5U05tM3lvMDhidTN0bGxmQnY3?=
 =?utf-8?B?blNjTG5GSlMxMlhWQy9ydTVjOVdneVVPTWR3c0g4TG15SlMrYzA4aVpNRjFY?=
 =?utf-8?B?MkNpVHQ0T3g3eHBkaWxkTG1lbUtRSGxIZmpBMUo5V2RlL1Y1MURkZzJ0RUtY?=
 =?utf-8?B?OEoxUW5VK21yYTlxTi9IR2gwN3JaQUgwQ1k3MmF6MkRBRE9zYmxURzFkY2p3?=
 =?utf-8?B?SjBSbThvTkJ3K2ZZd21YUyt0SjZ0SXJUMU5BTUtvNldMK3hnMGlRNCtNQ3VW?=
 =?utf-8?B?bnlMR2ROdmlsWFVXR1RxWGsrZlltYW0yY3NDTEpEYWh2MFJBNWJTZXFPVzdp?=
 =?utf-8?B?bzN1bWd6dTgvYkhaV0VnN1V2L0xaT203Sm5meFI5c1R4SUpLbnF5czMvdTdV?=
 =?utf-8?B?U0FGbEUyTVpOTXlRUGc4WjRLSlBrejBhTTlOUm1JZWptbGR0eU9SSHBnQm9q?=
 =?utf-8?B?RndnaEZtSlc4eWNwTTJGZ29QZTBxd1p2MVgzWlhBdWFPK3dMYkd1b3ZUdmZx?=
 =?utf-8?B?cjZFc1E4eEI2eXArN2p2RWxaS1hzOERmMlpFT080VXBIUEorVXBlcXZUbEZz?=
 =?utf-8?B?T05RaWR6b2lNZ2FoZ2Y2VUVET3JKOHdVV1ZYZktHL0hvanYveWpBNGlwcHln?=
 =?utf-8?B?Z0tXbGRYd0JRT1hMZjliZGxXa2QxaDY0UStVWDZXUmF6T1R3Z3VuWnl6WkJO?=
 =?utf-8?B?ZnhFekZiYjBjSU1IbGpVVDdPWEE4WHF2aFdIMlZaV3ptNERXM3VsbjVobmN2?=
 =?utf-8?B?bVZPMlEwUUt1b2hMdE9iSVZPOHJock4yUUlUTVVldmNqcUtBcW8vcjdYZGRN?=
 =?utf-8?B?cG5OQ3E5Y2V2WTZuRno0czlYTVd3LzNCWjVtQlRoRWFWMlBHV1pBdHRwU1pK?=
 =?utf-8?B?SmNZSENscnVWTGR4UFkzZVBuaUVpTzlOZitSY2JTcWJzZmx5L0Y5NWlucUhR?=
 =?utf-8?B?RW5qWTlmWnFLeHBKQndub3R0Z1MyMVF1YXNxamIyZXk1dS9oaGx1SkM2QVJG?=
 =?utf-8?B?TVRONDBJRVVWeFpzWTByR2JZSDhZMFgrNm5jRUlycFp5QTFodk5UWjJ2SVdE?=
 =?utf-8?Q?BpfhfJtwdUVtCiEo=3D?=
Content-Type: text/plain; charset="utf-8"
Content-ID: <747FB941024C104A9866E6C1A05D8CB4@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: PAVPR03MB10102.eurprd03.prod.outlook.com
X-MS-Exchange-CrossTenant-Network-Message-Id: 8541aa67-f031-46e4-1984-08dea1cb8160
X-MS-Exchange-CrossTenant-originalarrivaltime: 24 Apr 2026 06:34:15.3737
 (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: jiah1r/vsxAQn7IWUNVeSaWUZoGZqCPd1txwSEMkL8fhCqJtQkg8TZOg5zjLwANlfCpVeyjgN9MoKBfpdS3a/Q==
X-MS-Exchange-Transport-CrossTenantHeadersStamped: FRWPR03MB11125
X-purgate-ID: tlsNG-33051d/1777012457-A3B6C938-07E73283/0/0
X-purgate-type: clean
X-purgate-size: 1418

T24gNC8yMS8yNiAxNzo1NSwgSmFuIEJldWxpY2ggd3JvdGU6DQo+IE9uIDA5LjA0LjIwMjYgMTY6
MDEsIE15a3l0YSBQb3R1cmFpIHdyb3RlOg0KPj4gRnJvbTogU3Rld2FydCBIaWxkZWJyYW5kIDxz
dGV3YXJ0LmhpbGRlYnJhbmRAYW1kLmNvbT4NCj4+DQo+PiBFbXVsYXRlIGd1ZXN0IEJBUiByZWdp
c3RlciB2YWx1ZXMgYmFzZWQgb24gUEYgQkFSIHZhbHVlcyBmb3IgVkZzLg0KPj4gVGhpcyBhbGxv
d3MgY3JlYXRpbmcgYSBndWVzdCB2aWV3IG9mIHRoZSBub3JtYWwgQkFSIHJlZ2lzdGVycyBhbmQg
ZW11bGF0ZXMNCj4+IHRoZSBzaXplIGFuZCBwcm9wZXJ0aWVzIGFzIGl0IGlzIGRvbmUgZHVyaW5n
IFBDSSBkZXZpY2UgZW51bWVyYXRpb24gYnkNCj4+IHRoZSBndWVzdC4NCj4+DQo+PiBFeHBvc2Ug
VklEL0RJRCBhbmQgY2xhc3MvcmV2aXNpb24gdG8gdGhlIGd1ZXN0Lg0KPj4NCj4+IE5vdGUsIHRo
YXQgVkZzIFJPTSBCQVIgaXMgcmVhZC1vbmx5IGFuZCBpcyBhbGwgemVyb3MsIGJ1dCBWRiBtYXkg
cHJvdmlkZQ0KPj4gYWNjZXNzIHRvIHRoZSBQRnMgUk9NIHZpYSBlbXVsYXRpb24gYW5kIGlzIG5v
dCBpbXBsZW1lbnRlZC4NCj4+DQo+PiBTaWduZWQtb2ZmLWJ5OiBTdGV3YXJ0IEhpbGRlYnJhbmQg
PHN0ZXdhcnQuaGlsZGVicmFuZEBhbWQuY29tPg0KPj4gU2lnbmVkLW9mZi1ieTogTXlreXRhIFBv
dHVyYWkgPG15a3l0YV9wb3R1cmFpQGVwYW0uY29tPg0KPiANCj4gU28gdGhpcyBjaGFuZ2UgaXMg
bWVyZWx5IHRvIGF2b2lkIGhhdmluZyB5ZXQgYW5vdGhlciBnYXAgb24gdGhlIHJvYWQgdG8NCj4g
RG9tVSBzdXBwb3J0IGluIHZQQ0k/IEkuZS4gdGhlcmUncyBubyBjbGFpbSBvciBleHBlY3RhdGlv
biB0aGF0IFZGcw0KPiBjb3VsZCBub3cgYmUgdXNlZCBpbiBEb21VLXM/DQo+IA0KPiBKYW4NCg0K
WWVzLCBhbGwgb2YgbXkgRG9tVSB0ZXN0cyB3ZXJlIGRvbmUgd2l0aCBleHRyYSBwYXRjaGVzIGZv
ciBEb21VIFZQQ0kgDQpzdXBwb3J0IHRoYXQgYXJlIG5vdCB1cHN0cmVhbWVkIHlldC4NCg0KLS0g
DQpNeWt5dGE=


From xen-devel-bounces@lists.xenproject.org Fri Apr 24 06:55:04 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Fri, 24 Apr 2026 06:55:04 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1293185.1571056 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wGARF-0005TX-N6; Fri, 24 Apr 2026 06:54:57 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1293185.1571056; Fri, 24 Apr 2026 06:54: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 1wGARF-0005TQ-IX; Fri, 24 Apr 2026 06:54:57 +0000
Received: by outflank-mailman (input) for mailman id 1293185;
 Fri, 24 Apr 2026 06:54:56 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <peng.fan@oss.nxp.com>) id 1wGARE-0005TK-5d
 for xen-devel@lists.xenproject.org; Fri, 24 Apr 2026 06:54:56 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wGARD-00DfKj-IA
 for xen-devel@lists.xenproject.org; Fri, 24 Apr 2026 08:54:55 +0200
Received: from [10.42.69.11] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <peng.fan@oss.nxp.com>)
 id 69eb13b6-5cb7-0a2a0a5109dd-0a2a450b85b2-12
 for <xen-devel@lists.xenproject.org>; Fri, 24 Apr 2026 08:54:55 +0200
Received: from [52.101.84.23]
 (helo=DB3PR0202CU003.outbound.protection.outlook.com)
 by tlsNG-42698a.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.1)
 (envelope-from <peng.fan@oss.nxp.com>)
 id 69eb13be-212f-0a2a450b0019-346554178876-3
 for <xen-devel@lists.xenproject.org>; Fri, 24 Apr 2026 08:54:55 +0200
Received: from PAXPR04MB8459.eurprd04.prod.outlook.com (2603:10a6:102:1da::15)
 by DU4PR04MB11077.eurprd04.prod.outlook.com (2603:10a6:10:58a::6)
 with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9846.22; Fri, 24 Apr
 2026 06:54:52 +0000
Received: from PAXPR04MB8459.eurprd04.prod.outlook.com
 ([fe80::4972:7eaa:b9f6:7b5e]) by PAXPR04MB8459.eurprd04.prod.outlook.com
 ([fe80::4972:7eaa:b9f6:7b5e%3]) with mapi id 15.20.9846.021; Fri, 24 Apr 2026
 06:54: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-NXP1-onmicrosoft-com header.d=NXP1.onmicrosoft.com header.i="@NXP1.onmicrosoft.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=ONOknKi0dEDjJvvYA1TAf+FZgt2l8vGH78ytJXjQuhLsGFiWKk1+QCJawWOsI7fP9eDtHhG6k0uCgIXk1B2I8IZtkwRwVja2POipYUGu4yyesJgmumOdhWTFHfxCFu/tYZquMQO6XxGyJ7lwL2NdqpKKNaCgLmrVXqJg/4/se4ljp9szE5h5x2y7ZxBbLMin5Xk6jL2yLKferpo+MseE1yHkWHPJV2mOaVZRFQYFqXdyfThwi0yoFA+Uv9NH1ZLQo2Ljch6tjsMYmle+bOH+7b5uIh4tnjDjNlK4C/FZwyN1w500Aq55TZrD2OiZrrLt6a01m9SRkiuMYXUz2n6D1A==
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com;
 s=arcselector10001;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1;
 bh=bKmrSqn3mEOETaFW5rN2OEA5bGxOIbczvq85Q03itfg=;
 b=xIRzdjflIxKIM3fWpoMfb8rv0+8zgtSwnWJu4zOBZ9i73kFGqP1ayKdc9FgCBDKR0gRCbrP3pSytHBmLSIKBmpW2ZsMWC1hiHYTSrVDuXrEB0hl4SWRX+RB8VZ1k+LJt1hhl78EcuDlOCAmgU7Urgmn3Not8TCYdlo4QQq9OfwraWf0ZX7AAsgvymDABPUFQfG9bbuRyFS1xgN6fxSAR8w44YjBVJkRWG1PCHg777yc9gULwNYH1QNVKAsKf8dH48E98XW43wB73nleJTwgiPmkgICazi0x24STNl+/79nBn/cB9akG0p5O0PfsIhohW3tX9OwsDostyc5yqM1nxDQ==
ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass
 smtp.mailfrom=oss.nxp.com; dmarc=pass action=none header.from=oss.nxp.com;
 dkim=pass header.d=oss.nxp.com; arc=none
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=NXP1.onmicrosoft.com;
 s=selector1-NXP1-onmicrosoft-com;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck;
 bh=bKmrSqn3mEOETaFW5rN2OEA5bGxOIbczvq85Q03itfg=;
 b=ALvy0m7ABgaAVIoJxrhyk/Ep5N+apCjembEGcQKN+VvafLZMjVLkLLWdSEOHj6M9KiVwJhu22YIU8y7Mpu/d9SNeXF1TcU4N3s8pfhuZCG9zgTEwvzNvtunEZUYdAxneZaurWiCTzf1FoWkN9GWsUu+5uJ5wvxcU2nT5nam0xI7nnyzVuj8J2BQ2Dk0UyDWivRtiIAB28Vlz+9iN7hNH+QDN4hJx6d7HZUx70RvmavyBEabdm02JpByShdLXJHobIjq9cmkdEs7X8PUPaWGc8RckW9oUqRKDvkDxVDWqXkMlK1DQqcaTPO4nTN500u7/dc//6nARR1ta8J4IDedvgg==
Authentication-Results: dkim=none (message not signed)
 header.d=none;dmarc=none action=none header.from=oss.nxp.com;
Date: Fri, 24 Apr 2026 14:57:19 +0800
From: Peng Fan <peng.fan@oss.nxp.com>
To: Jason Gunthorpe <jgg@ziepe.ca>
Cc: Juergen Gross <jgross@suse.com>,
	Stefano Stabellini <sstabellini@kernel.org>,
	Oleksandr Tyshchenko <oleksandr_tyshchenko@epam.com>,
	xen-devel@lists.xenproject.org, iommu@lists.linux.dev,
	linux-kernel@vger.kernel.org, Peng Fan <peng.fan@nxp.com>
Subject: Re: [PATCH RFC] xen/swiotlb: avoid arch_sync_dma_* on per-device DMA
 memory
Message-ID: <aesUTxAl2qWZiqoT@shlinux89>
References: <20260415-xen-swiotlb-v1-1-de24eda3c0fd@nxp.com>
 <20260420230137.GQ2577880@ziepe.ca>
Content-Type: text/plain; charset=us-ascii
Content-Disposition: inline
In-Reply-To: <20260420230137.GQ2577880@ziepe.ca>
X-ClientProxiedBy: MA5PR01CA0113.INDPRD01.PROD.OUTLOOK.COM
 (2603:1096:a01:1a7::6) To PAXPR04MB8459.eurprd04.prod.outlook.com
 (2603:10a6:102:1da::15)
MIME-Version: 1.0
X-MS-Exchange-MessageSentRepresentingType: 1
X-MS-PublicTrafficType: Email
X-MS-TrafficTypeDiagnostic: PAXPR04MB8459:EE_|DU4PR04MB11077:EE_
X-MS-Office365-Filtering-Correlation-Id: 70c920f1-d542-4ddc-1a63-08dea1ce6212
X-MS-Exchange-SharedMailbox-RoutingAgent-Processed: True
X-MS-Exchange-SenderADCheck: 1
X-MS-Exchange-AntiSpam-Relay: 0
X-Microsoft-Antispam:
	BCL:0;ARA:13230040|366016|52116014|376014|1800799024|19092799006|56012099003|18002099003|22082099003|38350700014;
X-Microsoft-Antispam-Message-Info:
	MiG4tXuphSaEolojpDjuORLcuLfeLX4pLw8UEZ0+xqLVJGCozlrINmK6cP4Xfkt1tQOvr3PRO8dnJgNBXyjXvzHPiUQYmYpS6wIX6kieOh+clNyjsC6Sb5oboZWDoIU6ogyO8yUZHf1Vrx+rKlVoBgvtsgo6Hjq7rf8hSOeQnSwRETNQLqGrAtHQMqnQ3epiDOSidqk6fC4I6uOUUkxTurlSh4fI+KPgZw1Bq7cioXcoYKbTJSIIoEPWS6yB78hw5xo/sex31+4oCQ4S/y3u8DMyd11lxDD79Wj89ClbM/ZoKNPiGl11d3VmF7KNoWyowrvS/X94mPqctL/gHN/GJ7PB/KVJoPjCUaJe2jEfP8Mbgx7P7Y9Ll6uvw3YR2NGwIVUbeakPzx9jogQSiYD8tf9EwAkoMmz9SwPYH1333xH8M6aAAFwzg/P2AXKAk8wjZaX4SnxE10mDOrMwEgxmH8FjE0MQxPIaQWw/orBbJD/Qb7CVuFC9FIzS0mgCT49mQsBmMopAM7I3HPniLVw2zR81Hkjok6P0Xn4LHxesWFJjmckoSgJ0DSOR8A550MlBLdBnvjwKP/OruDFWpVltx5pqsxS8RTcdF72n1punXOgArf2VbbZpfAxPs1k5dA05x+nB2fetLlQha3v92KBlGVqx1FL3DzcQ4m4m5j32vE4tY9XXNFrS3MzmHYixKc7CZY0VOiJd8k0RuMrOMV3iBolKTz+9rKUwWUYOeMOyps1zL+sKDZXXsGnZHUpOYJyrpxJrg7aTy54HUjmaHj2b1zfpiIJSfVyfkcQR/yKS+Ms=
X-Forefront-Antispam-Report:
	CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:PAXPR04MB8459.eurprd04.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(366016)(52116014)(376014)(1800799024)(19092799006)(56012099003)(18002099003)(22082099003)(38350700014);DIR:OUT;SFP:1101;
X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1
X-MS-Exchange-AntiSpam-MessageData-0:
	=?us-ascii?Q?QdzvbSeRXcNlVS+L4bO2cwQUJyXvJSDbbJIqs9OGwnIZO+X8a8TLgli2pECU?=
 =?us-ascii?Q?Q+T7XCaKhb/Xg0NvYK2VoZvHl5t7gz92oA6VYt4eI2OiWqHmQhGdWLVI1j/X?=
 =?us-ascii?Q?uBQnf6HZlOBJ9GXOGtQY6c0VY0Vn2jJuFDlj9FAhiPALGfM2BF7VDWnQPans?=
 =?us-ascii?Q?w+4lFpXbMw2BeUbWxAiJp2tiw+QprOIKFMSobyQvoNXniDilmvDTLs8hyaKu?=
 =?us-ascii?Q?iB0k4ORbJyWNxvMEOrEc7wdSe8liNFTNRhh3FBMKBLab84jpg5NtZK58pmqe?=
 =?us-ascii?Q?odtbrPxGtrlBG8wZkmOOtwrXfLyWIxysXYz1o0J1KOMvyl+/uHBqJL5ApTma?=
 =?us-ascii?Q?0DqjqHJ2/q4tqlTlbmFVnoqCIUOT2uGUGRKOR4Bypfj4Q/GYnD3N9khQcp4S?=
 =?us-ascii?Q?N3eZi0tsTRCVstiLWH64TZ5EYeu61IEJ3BTs35uhPHk556wbUD9dR65FYtI2?=
 =?us-ascii?Q?EnrAOfHzf+gegP/DRrRJlVAo/hiqjwz3QKh8mWDMMntFtRaa3NWmYzU+wLg8?=
 =?us-ascii?Q?QeojJ7X36F4UkJJwR2tfl656cb/Dk+JV2WZ5uaD43ANFYeKR9n93J/dkym1H?=
 =?us-ascii?Q?6YE64m2lQnHb/HNRTp8N+nfG0YhzK53UK9XWgXW9C9HLxXFzUjz8NlgOE8Ma?=
 =?us-ascii?Q?O8aEflSBNXspHJYgQaEn14qXleGtZTqK2NmrfB0Yk1u2nscGwOWkp1vxa6P8?=
 =?us-ascii?Q?XNT8P17LXqtGpNK5aJeMYRClbS5rJM4NHM/61ht0QYntoux7ejMZrM6yx2Dl?=
 =?us-ascii?Q?OelzPE4eYPCVAWh/aVp59UlheFnWwkl9C3TZzlW7QdjULjiI+X5gB03hDYhn?=
 =?us-ascii?Q?EYVOgNboxoi7KwPz/Anh7mArweofNyuPLHd/1Ybc1BlaRbY3BooO5sV8X7Rl?=
 =?us-ascii?Q?x8iNr+D3GhHvn2VYsXb4Rr61Os1q0a63/mE4weLwdTAs+4/1nwuO+UY2zOhi?=
 =?us-ascii?Q?w73y1rkbCGRxmeeRhGsrSB5FPY9fw/KX6VQ8pkG36EdXwbkLQffJ9nzrydCI?=
 =?us-ascii?Q?pVzMLEyBbsNvxqSZboOF1HatjzKoDWqwp9/VumL+T2+mMnDZBIKYMVXb7LIB?=
 =?us-ascii?Q?tDeM3sPGtohJxIvB/pz7s+qY4sQX4E4kLezKr37jP6oEApWWbEH9LQNOTKip?=
 =?us-ascii?Q?rgXEaLLT3hOLcVpYNRUFZVpsFZ32AeY5qr6E279nU/IUgeiaWo88pzLiUWLy?=
 =?us-ascii?Q?XAo7qR//CDfcLkycoQGRIqA79MxwELaDHbIkOtvC6XxZ3kI/HdfI+yMa7bM0?=
 =?us-ascii?Q?uA18ZiNbgABWbH3ZQcYlZnsT/9K8p1w1nUdLYgIkBHBTsILLvTx8EZwmVHz2?=
 =?us-ascii?Q?nZur1PqW9wi1ALE7RlU3WE4ew3pWuj2ZuOIb2+hmjFk7b4BCiWKm/iLfT5Si?=
 =?us-ascii?Q?NiZzdV5m7wfqCb7D/9uFBzW7DGuo3rox8tNfpyKEOTTrvxB+q38aCTfr/EEq?=
 =?us-ascii?Q?7o4qfCVFz/DzA3DYvWRgbot9hyMpNAvcypo0tlgtAPBMBtj6YkRIbZ+me8Gm?=
 =?us-ascii?Q?acnK3Q2pfd/BJDVkh2ndRpq663X3XExrHoQBxokB9YIWCy9YBEeVPXenIC3H?=
 =?us-ascii?Q?9jhhbkqCDHP1vVtTRiQXXlh70Jq5bC1fWxr2LpadHEdlJhLXea805fD6lpXe?=
 =?us-ascii?Q?qFmbry4+xIzIPTnnNHpUFcTonSvkHhZ35sMeOzYOi6B5opfJQ1RkBH2eyPBl?=
 =?us-ascii?Q?beBD3Ek5xLRxvWCGBRLIMhYZXTenUGpz/V2IZrm9iC/Gv2Vl7mw5WAAy7lgD?=
 =?us-ascii?Q?yDOcgEcu+g=3D=3D?=
X-OriginatorOrg: oss.nxp.com
X-MS-Exchange-CrossTenant-Network-Message-Id: 70c920f1-d542-4ddc-1a63-08dea1ce6212
X-MS-Exchange-CrossTenant-AuthSource: PAXPR04MB8459.eurprd04.prod.outlook.com
X-MS-Exchange-CrossTenant-AuthAs: Internal
X-MS-Exchange-CrossTenant-OriginalArrivalTime: 24 Apr 2026 06:54:51.9798
 (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: I2qD6rpJUkb6jxT9Ys5SUz86y7XzC0FkFmNvfCKw3ynjHQ5Nzz7IVXPVqyCsG9Fu8wTRbCnoqr3BMkhpT87dzw==
X-MS-Exchange-Transport-CrossTenantHeadersStamped: DU4PR04MB11077
X-purgate-ID: tlsNG-42698a/1777013695-7F57BF3B-4128ECE1/0/0
X-purgate-type: clean
X-purgate-size: 3019

Hi Jason,

On Mon, Apr 20, 2026 at 08:01:37PM -0300, Jason Gunthorpe wrote:
>On Wed, Apr 15, 2026 at 11:08:36PM +0800, Peng Fan (OSS) wrote:
>> From: Peng Fan <peng.fan@nxp.com>
>> 
>> On ARM64, arch_sync_dma_for_{cpu,device}() assumes that the
>> physical address passed in refers to normal RAM that is part of the
>> kernel linear(direct) mapping, as it unconditionally derives a CPU
>> virtual address via phys_to_virt().
>> 
>> With Xen swiotlb, devices may use per-device coherent DMA memory,
>> such as reserved-memory regions described by 'shared-dma-pool',
>> which are assigned to dev->dma_mem. These regions may be marked
>> no-map in DT and therefore are not part of the kernel linear map.
>> In such cases, pfn_valid() still returns true, but phys_to_virt()
>> is not valid and cache maintenance via arch_sync_dma_* will fault.
>> 
>> Prevent this by excluding devices with a private DMA memory pool
>> (dev->dma_mem) from the arch_sync_dma_* fast path, and always
>> fall back to xen_dma_sync_* for those devices to avoid invalid
>> phys_to_virt() conversions for no-map DMA memory while preserving the
>> existing fast path for normal, linear-mapped RAM.
>
>I think this is the same sort of weirdness the other two CC threads are
>dealing with.. We already have two different flags indicating the
>cache flush should be skipped, it would make more sense to have the
>swiotlb mangle the flags, just like for cc.
>
>https://lore.kernel.org/r/20260420061415.3650870-1-aneesh.kumar@kernel.org
>
>Then you know that the swiotlb was used and it should flow down to
>here.

Xen fully implements dev->dma_ops and does not leak hypervisor-specific
semantics outside of it.

The issue is that the existing DMA attribute model only distinguishes
between "CPU sync required" and "no sync required at all". Xen needs
a third case: CPU cache sync must be skipped, but platform-level DMA
synchronization remains mandatory.

This is not a generic DMA extension but a constraint of Xen's DMA
model when mapping private or foreign memory that is not CPU-mapped.

>
>>   * physical address to use is returned.
>> @@ -262,7 +267,8 @@ static dma_addr_t xen_swiotlb_map_phys(struct device *dev, phys_addr_t phys,
>>  
>>  done:
>>  	if (!dev_is_dma_coherent(dev) && !(attrs & DMA_ATTR_SKIP_CPU_SYNC)) {
>> -		if (pfn_valid(PFN_DOWN(dma_to_phys(dev, dev_addr)))) {
>> +		if (pfn_valid(PFN_DOWN(dma_to_phys(dev, dev_addr))) &&
>> +		    !dev_has_private_dma_pool(dev)) {
>
>Also this pfn_valid() is totally bogus. Unless DMA_ATTR_MMIO the phys
>must have a struct page, be pfn_valid, etc.
>
>This is why you are getting into trouble here, beacuse swiotlb created
>a non-struct page address and passed it to lower layers without
>setting something like DMA_ATTR_MMIO..

See above.
xen swiotlb maybe a bit misleading, it is not kind of linux swiotlb.

Juergen, Stefano,

Please help correct if I am wrong or I may miss something.

Thanks,
Peng

>
>Jason
>


From xen-devel-bounces@lists.xenproject.org Fri Apr 24 07:01:29 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Fri, 24 Apr 2026 07:01:29 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1293194.1571064 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wGAXN-0008A3-AC; Fri, 24 Apr 2026 07:01:17 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1293194.1571064; Fri, 24 Apr 2026 07: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 1wGAXN-00089w-6M; Fri, 24 Apr 2026 07:01:17 +0000
Received: by outflank-mailman (input) for mailman id 1293194;
 Fri, 24 Apr 2026 07:01:16 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <peng.fan@oss.nxp.com>) id 1wGAXL-00089q-Sz
 for xen-devel@lists.xenproject.org; Fri, 24 Apr 2026 07:01:16 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wGAXL-006jNo-6R
 for xen-devel@lists.xenproject.org; Fri, 24 Apr 2026 09:01:15 +0200
Received: from [10.42.69.1] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <peng.fan@oss.nxp.com>)
 id 69eb153a-2eae-0a2a0a5409dd-0a2a4501895a-2
 for <xen-devel@lists.xenproject.org>; Fri, 24 Apr 2026 09:01:14 +0200
Received: from [52.101.70.1]
 (helo=AS8PR04CU009.outbound.protection.outlook.com)
 by tlsNG-d62444.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.1)
 (envelope-from <peng.fan@oss.nxp.com>)
 id 69eb1539-c1f2-0a2a45010019-34654601b784-3
 for <xen-devel@lists.xenproject.org>; Fri, 24 Apr 2026 09:01:14 +0200
Received: from PAXPR04MB8459.eurprd04.prod.outlook.com (2603:10a6:102:1da::15)
 by PA2PR04MB10409.eurprd04.prod.outlook.com (2603:10a6:102:415::5)
 with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9846.22; Fri, 24 Apr
 2026 07:01:10 +0000
Received: from PAXPR04MB8459.eurprd04.prod.outlook.com
 ([fe80::4972:7eaa:b9f6:7b5e]) by PAXPR04MB8459.eurprd04.prod.outlook.com
 ([fe80::4972:7eaa:b9f6:7b5e%3]) with mapi id 15.20.9846.021; Fri, 24 Apr 2026
 07:01: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=fail header.s=selector1-NXP1-onmicrosoft-com header.d=NXP1.onmicrosoft.com header.i="@NXP1.onmicrosoft.com"
ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none;
 b=SJJEWl6eUsg7FJGRHBtb1pqagURtezzozstln08bvrssGQ9TDvlkr7tzjdbw245K7L4Vd7UdRyf6upEeIW8f9X7/sLD1G/70cVegKQtO3u9XZd+sqXL/fTZJQ0MIQ5QdSjG6SDqOb6+59zyCX0y82f2ikUVvcfidGBznQUKRnWgYbK3bjlm6zS9jYNI/uZv7zgAPaJoBwfrkMuO6ZgvvXwOpPTgmvPlSGamUnzsqAoa1ubEf5aNnfpIv/E7NrC1E0Z2BiDCf11hBpTrweIhhJYOpail07EV7N3Z/OUnpW9EW7kYyEtt5NGP0zpI2rR3/5jMIcInIK9NbOGF0JoQ95w==
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com;
 s=arcselector10001;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1;
 bh=yGr2Z9sqmZh4cojztcKkGkFL8NLY0gWLf9f7OmFQdHA=;
 b=yMqc+cnfAtkDmzwxRqDwB2WykFsc8Urk+eh3jZVlZBHfM/p4FGIGofu1WSyKi9RyKR1oVAH3lHyI3yoEo21oPKfBiEr8AnCziJEg17+d6duWy0QCmZPGqCBLfN3KkA37211juYff2qvZmVodOrFZTJCt1IWITUEXSkzMrqdGoKgqChonbObit/f4Tz9NC2OU1hd/Qvx9gcHwhXnVhPabGIMlntzNiP34N+2ZRvrSHkegQ5+dynuOGzXMidABfKjwMQwRsVwhrf+RZDV1Ddjh00Zl4XfkjFraAwq091osSMqG/xsh9kJ5f0wuLdPRuZhk8aB4PWhBSuYd5QLVEKIipQ==
ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass
 smtp.mailfrom=oss.nxp.com; dmarc=pass action=none header.from=oss.nxp.com;
 dkim=pass header.d=oss.nxp.com; arc=none
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=NXP1.onmicrosoft.com;
 s=selector1-NXP1-onmicrosoft-com;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck;
 bh=yGr2Z9sqmZh4cojztcKkGkFL8NLY0gWLf9f7OmFQdHA=;
 b=b1ZNCwxbg0gxjAZOUVzgHg2UbIdapLj36wuO56oIWN2dm8rA3l8mO5iiRhNsT1lCHXmY04oME3aO45Wx1XNJORahs61U3v3SFp1bZyrBhKfXj0g9Len3XKRlTRx56ioXJCjXFi2O5DCOfIyAde3FuWSUtFGtfykNGL29jni1gKtzJmxaakM6OER/PFTR5L8X+5EqsMvhjGK5600iKl6JqQ0Xjyi2Qz5tsZ7vlCe0QgFHRHDZKtYj6HCEVZJ8yIXzWM3adgILqqXYN5LnI758ykRYbCRrMLznnj4tjjXrg57RauBNtV5Mb4QID6pHxXCpH7okI/hzntL/uP3uiHKEHQ==
Authentication-Results: dkim=none (message not signed)
 header.d=none;dmarc=none action=none header.from=oss.nxp.com;
Date: Fri, 24 Apr 2026 15:03:45 +0800
From: Peng Fan <peng.fan@oss.nxp.com>
To: =?iso-8859-1?Q?J=FCrgen_Gro=DF?= <jgross@suse.com>
Cc: Stefano Stabellini <sstabellini@kernel.org>,
	Oleksandr Tyshchenko <oleksandr_tyshchenko@epam.com>,
	xen-devel@lists.xenproject.org, iommu@lists.linux.dev,
	linux-kernel@vger.kernel.org, Peng Fan <peng.fan@nxp.com>
Subject: Re: [PATCH RFC] xen/swiotlb: avoid arch_sync_dma_* on per-device DMA
 memory
Message-ID: <aesV0ai8SM89cb3j@shlinux89>
References: <20260415-xen-swiotlb-v1-1-de24eda3c0fd@nxp.com>
 <f6cf1d46-9d2e-4b52-a6b9-fb45d01b874f@suse.com>
Content-Type: text/plain; charset=iso-8859-1
Content-Disposition: inline
Content-Transfer-Encoding: 8bit
In-Reply-To: <f6cf1d46-9d2e-4b52-a6b9-fb45d01b874f@suse.com>
X-ClientProxiedBy: SG2PR01CA0120.apcprd01.prod.exchangelabs.com
 (2603:1096:4:40::24) To PAXPR04MB8459.eurprd04.prod.outlook.com
 (2603:10a6:102:1da::15)
MIME-Version: 1.0
X-MS-Exchange-MessageSentRepresentingType: 1
X-MS-PublicTrafficType: Email
X-MS-TrafficTypeDiagnostic: PAXPR04MB8459:EE_|PA2PR04MB10409:EE_
X-MS-Office365-Filtering-Correlation-Id: bc8f0303-5185-4b93-8be2-08dea1cf43d2
X-MS-Exchange-SharedMailbox-RoutingAgent-Processed: True
X-MS-Exchange-SenderADCheck: 1
X-MS-Exchange-AntiSpam-Relay: 0
X-Microsoft-Antispam:
	BCL:0;ARA:13230040|1800799024|19092799006|366016|52116014|376014|38350700014|22082099003|18002099003|56012099003;
X-Microsoft-Antispam-Message-Info:
	B0Ryomm9ILjLwzc2JpMtG8XWMGSGT7VPt4mF8rDk6UCtvYXPNj7Hukqp59n5wEq1ZPZLWaH/x/tUB8J3rvNxfQqpJeVGIhDKwPeX715H4yfNvkYDyR5ylsneJFSywV11t7oVojv9Qoo8Kh/n5oLnhwMUQMq3itygS+HLwwO8ZkMN9ZCXieSrIcL1LII03zE5CyFyCXAN95GDvXWnd0qsAnonXoLhkF53/Yne/sO4RTkWJY23XxIhuGp2Dz8NasitzgqFSuPKTBXT4xwyjEtrOZgSxPn7mzVWusnyNgagL4WCYVipTt9DWiiETRlL2mk0VEMZFQNEQIg3y7RUlLzGoA5Rz5NxwgVPb9dqrnI1VPjcAtagd8JnXDMBJZYT/kX7Jve4sXRmMQOSufgVMZgUNVIk2slhPh8w5pUvXa7B5DuvWvsggNmFspS8POZNWp+/eM5Itlqy9HSh/z422PGzRJifZX78BbaNuQemGzF/5mpOHCieDP4xflbA+1afJtWYopys2wBVVaw2/6ixqbSL6ZZVsVttmKSeks2YTk6zrq76kR+lf1/8LKfUFd6jjn3/zN4Kp1nqicSMDuGAbq7huGTonPGAgK+oSxje76Kh3181Vgl5BmZWcLV2sIb9CDST6UBKdjzVykYvHxqq4OfKSaG4xSTgfm7g+JhMx5KA+7XiqaOWZbhpk8PgoUmvaAU19WNRzaJGnL3805+kVHbB0/RpIM+WBZ2pQX6RFDYfJ80IYI8mYcI3TTcm1GWXHvoMObKHVdv+OKDkjI2SRFS7RtTobzDgjjodGlC4o993/VA=
X-Forefront-Antispam-Report:
	CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:PAXPR04MB8459.eurprd04.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(1800799024)(19092799006)(366016)(52116014)(376014)(38350700014)(22082099003)(18002099003)(56012099003);DIR:OUT;SFP:1101;
X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1
X-MS-Exchange-AntiSpam-MessageData-0:
	=?iso-8859-1?Q?a8+nYhl5q7cDIeF+1a7B5U1WZwIHon3qdjbPZ9uW5BPhQbuMVXm5yqLy4s?=
 =?iso-8859-1?Q?OuTlRejUq/XrF69Chv/fwzxYphXohqJ7l1Lrk0A8eQA3+rMCZ2ja43aqRp?=
 =?iso-8859-1?Q?MPdyOaAuJXemrodo/OVtbeG7TfaQ7gtaifVaVjBlHtmNarUh+IxXYbPFWY?=
 =?iso-8859-1?Q?Ksz97qYLtcnoCZIZFmY/T9rWUKjojqhgisU1oWsjkZdzxzjs/0cgXiHD/P?=
 =?iso-8859-1?Q?ite3lV7o4iYBuucG2mzhnAv2CiN+8g+p2ARQqBTN0AXcAIaDMdDprrjKdd?=
 =?iso-8859-1?Q?kM/LcNCokMUSIWQtQzaC3DkJc9gx5T03+QJmL4TE880EWKN1ML4d7EtIT5?=
 =?iso-8859-1?Q?5YrfMEYmQynGXGclzP9L0MueZAfV82qTQlhuTzDW3D98dz5I0yKYakTgUS?=
 =?iso-8859-1?Q?4VS+aVofDfV597EK5pkIs/WJE5ajB88Jjaz1m9c5lyqeuXVZzXi+sszcHF?=
 =?iso-8859-1?Q?JRj+Ib+tYbNFGG1rGa2ZT4QGVWKi3l1Xo5o8S9Wec2C3PCjE55BNYZPbCd?=
 =?iso-8859-1?Q?EUv8r9EurrTy0SJ8h2HjVt8zr31dPcE9qTuQuzuigIaUOjPK2dBLFH92cL?=
 =?iso-8859-1?Q?WXtqTpEAcnZlLHxpsZM0eKzYv/JFzYkHMAYHB+ul9klTDFsIM8A3ntSTki?=
 =?iso-8859-1?Q?ky3XmABgFpfoSWAAPTxVfp4rN8pFqNeeGLcBLOupMcNH8p0y9mNAyaNO1n?=
 =?iso-8859-1?Q?47WxoTHNHPi82feeQ8FIbb2rDPds0Hw94nXWmQS7sxjcB7G+ehrru2M401?=
 =?iso-8859-1?Q?tUICXXCJpy1eTVKnkEMU5pYx3GQ3S/SrRkouzmXRpnpo/b2pCBoZ4HpSuI?=
 =?iso-8859-1?Q?yTmJhUHarod5Q2AumbyrJt/PvrdB+GF8SjynylYXa6Vgl+LAZnzC58j1+u?=
 =?iso-8859-1?Q?TMqyjOG68pLocfS5q/rZcfFy3XsUktB96CfCpvDu4YJzfQ9FAMww48R/EZ?=
 =?iso-8859-1?Q?wxLKgpn6pNMU/lyr/rpRzopNmVQWRmhQhR5QWx7nNbWp29lMvA76Mu6mCj?=
 =?iso-8859-1?Q?Hbw1aUz2gNsE3/ofMdroUs/YhBU+7r4NlzwA3v2h7tm/p5CV4EkoFwXfGI?=
 =?iso-8859-1?Q?O/oMAigYPjF0tHWGzakVIkaTf4QQ6x3kFuCDpuHbAFb+GbkgJzH5XK27Bj?=
 =?iso-8859-1?Q?ii4mQwT/VDNNJxaWbRUPjY3vBu+PkGqk9K3mnOcfhsnQF4s+PAEbyQODX3?=
 =?iso-8859-1?Q?9Er2beVtbJ0BXDazwkZvr+joXnd+kwndonc4WXmhMJ5M71PMRlBXyyK9wo?=
 =?iso-8859-1?Q?6jp5dEbKLUd/nW0XQqmfityHqh61pilq/Q4VYsv+GRC3oYWNvphbieVRcY?=
 =?iso-8859-1?Q?CaieAbw5e4p+9Kzqy4YQnJERC+bqO0dV+Xfy72zJEHDjR+6b+cLKlIvWM/?=
 =?iso-8859-1?Q?CNX1evFEnLQ6RsXS1hbjVOy7u+pIfrKdMBEcl6qaC9Z4pAZhlF3Hr3wOw2?=
 =?iso-8859-1?Q?/CNSiN3uiHBzs8rTkgc0Il8VoT3H2jYK6az/cGai/eUSx4Iif39E+OxZgz?=
 =?iso-8859-1?Q?+5dPRDhQfeOzcinK2jgWctko7BsostCXNanc160+etav1PvdzsZY53ea12?=
 =?iso-8859-1?Q?cD7Hp4Ur57VwXIKro+OaI6NcPVv4HMhVsHVDD5Fe3NdT59XW48E5J24VZs?=
 =?iso-8859-1?Q?wbOjNxgdUkLUvJyhTR4ZRP0cgsAAletV84p522wa5iVFJneVUQp3/vWTBP?=
 =?iso-8859-1?Q?YoktUT8JSJE0um3UoziCtJnf/nxbcogPAjm6BWEvwD2wHNvM+knouXDT0X?=
 =?iso-8859-1?Q?Z41eyHOVUcgY6sVBx5M1gGnNRb0kTiB0gTqqa9vIV9ghUUsBLsuOpjC8QH?=
 =?iso-8859-1?Q?s6j/4cp7Yg=3D=3D?=
X-OriginatorOrg: oss.nxp.com
X-MS-Exchange-CrossTenant-Network-Message-Id: bc8f0303-5185-4b93-8be2-08dea1cf43d2
X-MS-Exchange-CrossTenant-AuthSource: PAXPR04MB8459.eurprd04.prod.outlook.com
X-MS-Exchange-CrossTenant-AuthAs: Internal
X-MS-Exchange-CrossTenant-OriginalArrivalTime: 24 Apr 2026 07:01:10.4403
 (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: RMKcCOlLbrk1wDDTOCW6LCsj4Iyy5vkraUDNrAjRY4tuYjtqbSZaFzG/DWZs5sb6vViwHT8OO8+5J6jxcnW/Fw==
X-MS-Exchange-Transport-CrossTenantHeadersStamped: PA2PR04MB10409
X-purgate-ID: tlsNG-d62444/1777014074-B586AFF4-DB4E70D1/0/0
X-purgate-type: clean
X-purgate-size: 2244

Hi Juergen,

On Mon, Apr 20, 2026 at 02:19:34PM +0200, Jrgen Gro wrote:
>On 15.04.26 17:08, Peng Fan (OSS) wrote:
>> From: Peng Fan <peng.fan@nxp.com>
>> 
>> On ARM64, arch_sync_dma_for_{cpu,device}() assumes that the
>> physical address passed in refers to normal RAM that is part of the
>> kernel linear(direct) mapping, as it unconditionally derives a CPU
>> virtual address via phys_to_virt().
>> 
>> With Xen swiotlb, devices may use per-device coherent DMA memory,
>> such as reserved-memory regions described by 'shared-dma-pool',
>> which are assigned to dev->dma_mem. These regions may be marked
>> no-map in DT and therefore are not part of the kernel linear map.
>> In such cases, pfn_valid() still returns true, but phys_to_virt()
>> is not valid and cache maintenance via arch_sync_dma_* will fault.
>> 
>> Prevent this by excluding devices with a private DMA memory pool
>> (dev->dma_mem) from the arch_sync_dma_* fast path, and always
>> fall back to xen_dma_sync_* for those devices to avoid invalid
>> phys_to_virt() conversions for no-map DMA memory while preserving the
>> existing fast path for normal, linear-mapped RAM.
>> 
>> Signed-off-by: Peng Fan <peng.fan@nxp.com>
>> ---
>>   drivers/xen/swiotlb-xen.c | 17 +++++++++++++----
>>   1 file changed, 13 insertions(+), 4 deletions(-)
>> 
>> diff --git a/drivers/xen/swiotlb-xen.c b/drivers/xen/swiotlb-xen.c
>> index 2cbf2b588f5b20cfbf9e83a8339dc22092c9559a..b1445df99d9a8f1d18a83b8c413bada6e5579209 100644
>> --- a/drivers/xen/swiotlb-xen.c
>> +++ b/drivers/xen/swiotlb-xen.c
>> @@ -195,6 +195,11 @@ xen_swiotlb_free_coherent(struct device *dev, size_t size, void *vaddr,
>>   }
>>   #endif /* CONFIG_X86 */
>> +static inline bool dev_has_private_dma_pool(struct device *dev)
>> +{
>> +	return dev && dev->dma_mem;
>> +}
>> +
>
>I don't think this will compile on x86.

My bad, I only tried the build for ARM64. I use below changes, if it looks
good.

#ifdef CONFIG_ARM64
static inline bool dev_has_private_dma_pool(struct device *dev)
{
	return dev && dev->dma_mem;
}
#else
static inline bool dev_has_private_dma_pool(struct device *dev)
{
	return false;
}
#endif

Thanks,
Peng

>
>
>Juergen







From xen-devel-bounces@lists.xenproject.org Fri Apr 24 07:49:59 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Fri, 24 Apr 2026 07:49:59 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1293215.1571074 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wGBIM-0001Gr-SF; Fri, 24 Apr 2026 07:49:50 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1293215.1571074; Fri, 24 Apr 2026 07:49: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 1wGBIM-0001Gj-LP; Fri, 24 Apr 2026 07:49:50 +0000
Received: by outflank-mailman (input) for mailman id 1293215;
 Fri, 24 Apr 2026 07:49:49 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <roger.pau@citrix.com>) id 1wGBIL-0001Ga-3K
 for xen-devel@lists.xenproject.org; Fri, 24 Apr 2026 07:49:49 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wGBIK-006YKi-ES
 for xen-devel@lists.xenproject.org; Fri, 24 Apr 2026 09:49:48 +0200
Received: from [10.42.69.8] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <roger.pau@citrix.com>)
 id 69eb2098-2eae-0a2a0a5409dd-0a2a4508eb2e-12
 for <xen-devel@lists.xenproject.org>; Fri, 24 Apr 2026 09:49:48 +0200
Received: from [52.101.48.68]
 (helo=MW6PR02CU001.outbound.protection.outlook.com)
 by tlsNG-c1860d.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.1)
 (envelope-from <roger.pau@citrix.com>)
 id 69eb209a-63b5-0a2a45080019-34653044e97b-3
 for <xen-devel@lists.xenproject.org>; Fri, 24 Apr 2026 09:49:48 +0200
Received: from CH7PR03MB7860.namprd03.prod.outlook.com (2603:10b6:610:24e::14)
 by PH0PR03MB6623.namprd03.prod.outlook.com (2603:10b6:510:b3::8) with
 Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9846.22; Fri, 24 Apr
 2026 07:49:43 +0000
Received: from CH7PR03MB7860.namprd03.prod.outlook.com
 ([fe80::f5ba:35df:1c9f:b343]) by CH7PR03MB7860.namprd03.prod.outlook.com
 ([fe80::f5ba:35df:1c9f:b343%4]) with mapi id 15.20.9846.021; Fri, 24 Apr 2026
 07:49: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=sYu9MSUD2aW9LSARKOISFrLNdCB0SoZNVcTYFS0SskW7uDmcj8ey2UdBidvRWQvJ2+3DvA0LpaX6jbzlGsUW1QAVDCpG7ejMa5UKAwT34ROPcedwH9eFbYN6DlVR8tWvoDi7SdTaY5ue98Tc90hhVNyJ+8RGzHSoGgbVxOcmj36+cjsg3fFhZv7RqmLybIk+Av9kWGqTsAvmbWwKN8VlGhNiIpCVtCdZctY3QPDmDS2WaPnjwNCn8jxEagjyEt37uF4EWmbDGWWHtTxABRtLA4WlzkyDI/gWR/1ejKlfnRxa0Pm4GLEin3iuF56DK4i1YjAzNmhu10uSbzQFU0ofEg==
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com;
 s=arcselector10001;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1;
 bh=ufqEaAAoAlubdRoekNwqA4c9sXLgofpIa1/D2IECkm8=;
 b=Z9yVmFu/JRqaSQQmHreny9M6520dqzAgN6b3/Obv0g632VaIZxKzJ/3YHQoY5DBYUfYCtlxdULJWhcJGAAbsB49idLynTN/9cPVH/LLvFMh61BFMiO6/WkArr2i9ifpLiA+hmR/znLkiEjTYQOsujRPJiI+kBz617br1KXFAPQyvt0kmsz01a+ueMX5cHUVwcB7gf2UrU1biUz1VPGlep0CITQA6swIc834hrN2jzNdZ1r3Rz+TKp+yZAhv/ySydfZbz4akCY5OE45XF0gL2L+zuXowAxFNCCntRV6HIr6Z/kQQFPF5Umik5Jg7D2FenojTxhs+R6IUCz7/MsrMrUw==
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=ufqEaAAoAlubdRoekNwqA4c9sXLgofpIa1/D2IECkm8=;
 b=w0dZIp5+qqvu7PlUUzhrVoAzIzfR5A7dwsBzlnwevIlW9kMIG816SKjkN55bH0/Yq1Rx/SobPhU0Luvb9CIxSId6ywo4ZVqAFz74ZxL3wHd7qnYdYt5NaxBnJ0MbkRo4MpqCqWn+M7+IUW+fqR39hC8/e6BzdvBqsyUa6v8riUI=
Authentication-Results: dkim=none (message not signed)
 header.d=none;dmarc=none action=none header.from=citrix.com;
Date: Fri, 24 Apr 2026 09:49:38 +0200
From: Roger Pau =?utf-8?B?TW9ubsOp?= <roger.pau@citrix.com>
To: Jan Beulich <jbeulich@suse.com>
Cc: Stewart Hildebrand <stewart.hildebrand@amd.com>,
	Mykyta Poturai <Mykyta_Poturai@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>,
	Stefano Stabellini <sstabellini@kernel.org>,
	xen-devel@lists.xenproject.org
Subject: Re: [PATCH v4 1/4] vpci: Use pervcpu ranges for BAR mapping
Message-ID: <aesgkm0-b6QTxdUc@macbook.local>
References: <20260406191203.97662-1-stewart.hildebrand@amd.com>
 <20260406191203.97662-2-stewart.hildebrand@amd.com>
 <90f66a3a-4811-4f83-a4df-204b121118c2@suse.com>
Content-Type: text/plain; charset=utf-8
Content-Disposition: inline
In-Reply-To: <90f66a3a-4811-4f83-a4df-204b121118c2@suse.com>
X-ClientProxiedBy: MR1P264CA0104.FRAP264.PROD.OUTLOOK.COM
 (2603:10a6:501:50::27) To CH7PR03MB7860.namprd03.prod.outlook.com
 (2603:10b6:610:24e::14)
MIME-Version: 1.0
X-MS-PublicTrafficType: Email
X-MS-TrafficTypeDiagnostic: CH7PR03MB7860:EE_|PH0PR03MB6623:EE_
X-MS-Office365-Filtering-Correlation-Id: 01cf79ad-af84-4498-fbdf-08dea1d60be7
X-MS-Exchange-SenderADCheck: 1
X-MS-Exchange-AntiSpam-Relay: 0
X-Microsoft-Antispam:
	BCL:0;ARA:13230040|366016|376014|1800799024|56012099003|18002099003|22082099003;
X-Microsoft-Antispam-Message-Info:
	t6D9TbOurLFvi/D1BGNErOepnoDk7eGzw35ztQsstHhKGPGgOJDK/wqoTKMA0LfXnbrlrtNyk1fG2DYPCb08Xqk7AENCtBIrGgCpiLt/aHd8MnPrL3OBct8OL9GpfLeAynKpYDOlXL0uJFl0XnfDYdHm26/MlpuWB6dPu/HrIFTt99aZDnP49O17wmRqH1JLi8N1mu797/GwJQP/7uDJA5gu2kf0/Lox1Pi9unSV6XpMXO8yXjUrgxnOBAKg5nk8mweaf5oKAuRJQVAWbQgzHB43WzWk0jE49hx3hpaoiL2JNYw22MaIyjBxUVexKrSNOLwu9ALJhOM5zErGWx1k56bJbshPlbNx1U8cOXo+vMbH4UK7wbfBvni3Y/M9MIRLV3f8ijZHCRUJPqnzW9sr76AOW0IfZ92UukF7Ip8wCa3ZltwVXrol0Sr3hfi7S5PzjIhmxniYARhA9TFuZAcFar45yf/6XM2kNo/BUOYgzSMkJ4NOAoUDds1kC6ENpVnIteBsM9gdrBfRFjqzuTW8mGqdWOGW8KPHkfXazomJCasc33DZMVsDjMJxA8j8pSS/QAz2oSAROxHIwjaNTXQLmxtsl0TcB393DKeP3krI8vgrfVycfjTAgW5KKgaXNjW0MAu1Mnjhk8qYQ7fUZJBgmx0zPh5DpYINNagrqrmx1PR6MfG7R29hWjJcoH0VkWr8YPiKyhNyTrFBjyfWgMuU9lrOhMv4L5FIjISQKIxf0Fc=
X-Forefront-Antispam-Report:
	CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:CH7PR03MB7860.namprd03.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(366016)(376014)(1800799024)(56012099003)(18002099003)(22082099003);DIR:OUT;SFP:1101;
X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1
X-MS-Exchange-AntiSpam-MessageData-0:
	=?utf-8?B?b2pXdFB4YjB4UXpncG96OEJVeWdRZitLblJQTXo0UXFPdXdCb2I3SlJGekY5?=
 =?utf-8?B?cnBEZys0Z29ybXMzTkFkSFZ2ZVhUN08zK3hDWFRpRkZWTVdIelYyckh6NGV5?=
 =?utf-8?B?WnpzekVDSGRRcU9ES3BabzVXMm1jYy91RmJvRVhTTlZ4Uk15djFmV2EvQzF4?=
 =?utf-8?B?aEhFZXk5OVR4T2gxMVdnVmUyayswaHpMWlU4dUVsa3ZlODJXbmZ0Q1lxc0Vo?=
 =?utf-8?B?REt3TkdRWHFtS0t6Q0VJcXBYdVpUZE5wRTBxWW4vbjJ6MnVXcm9JYmRMbEE1?=
 =?utf-8?B?REZZZS8yRnk5dlZGMXZlNm5SSGpZWlZ5N2tmTEZpeXFFbFF0QmlVVkdLdGc4?=
 =?utf-8?B?aHVuOVdVanZmc3pvb1phSklSN3hmUW1aK2dCdVhvR2FpS3lGdndNODUyZHhx?=
 =?utf-8?B?dTR4QncyWnd4aFhRaDMxMUttTTZXV2trTHVwMTd0aC9pL1Fia1BvM2ZROFVo?=
 =?utf-8?B?SlB2MGJIaWJOa0VTQW8zYWppSm1YRlFiRVdFMDdNT2tRZXIwRTZYL2N5S2x0?=
 =?utf-8?B?TEd0cWpYSEJtb1h0R1g4SGpHMUtOYzZVN3VmMng1V2RDaFpXSlhDQ3FyMVd0?=
 =?utf-8?B?Y25JN0lMdWh6MkJFbGk3N3NzamZOK0U5RVJkUGxodVI3M3pwZXRaSFhGeWc1?=
 =?utf-8?B?SmM0aXhWY0hhaENwQVpLbVlaVytva1Y1Q2FkMVVwMTVCQ2pqSFpOc2ZwcUov?=
 =?utf-8?B?NGhpWDNyM0NORmlSTzczcCtYSnV4RjUvWDhSR2E2WVBGL1MvNDBGUUNiK0tY?=
 =?utf-8?B?VytvZWp0TXJZeTBmTkV5Q2NHdXpCMk02Q3VsV29YRjVKSzVnMnduTFAvbXJz?=
 =?utf-8?B?eGFQZWtuWEx6d1ZTR0tIKzByRW9YbjdRSnFFSExlM2Z2OHVMLzRBRjlkTG84?=
 =?utf-8?B?WFJuWUZraXBOQkl2ZGhxQXlXckpkZ2ZsVjExVDZ0UVlWN2s5R2R1b3BGdDNv?=
 =?utf-8?B?Tjl1QlgxOEl2Q1Y3VVBEbWRJV3o0VFJXL250MzBsOFA2L3JpUG1oZGFic29T?=
 =?utf-8?B?cUZSRmQ4cXZvSlFuZlV1WGNXTFRxa2N5UzNnRWcrcGNsMnlMV0xlTDBWRnlF?=
 =?utf-8?B?OERNcllxSG8rRjRMTXBEdWYxZnhCclNMRURiem4zV2Exbk9HM0tFMDBJRkFR?=
 =?utf-8?B?S215WDF0cVM1dTBqM3VOMnhUUjBCbGx1L2NGVjlIREtPWXFUWnhHTTg5NG5o?=
 =?utf-8?B?bFErU2RlelNleWtGSGhVdXArTFVoMnVRb25EMnVZOGR1eFhlODRRdkN5OWM4?=
 =?utf-8?B?OTNLWGhVM09VemFHZmpxUUloYWNLRFcrOVM5ZUxZeEN1Q1lDRVB3WVRHTlo3?=
 =?utf-8?B?TFVaOGRyUjFoZVBSbTlZTThGOHlrNTVZSmVhSHhwTTBNT1VXMmlRUU1tTFA3?=
 =?utf-8?B?WWdwS1hvOE1oN2lRUlFkdG1HZmdXNzhHeHpySjA2dVZMUmFrV3diRGNCbU5w?=
 =?utf-8?B?aHNVdEJ3cXFCMzkzODFiNzdvYjFLdkpoM0hsdDNJYjlEdTRyTFJKd1JvdHZ0?=
 =?utf-8?B?M0MwaXRSUVZFNlNOVjB2TkVwSFVWSUhrVkRyTEY5ZlRyejVibHJNYTAydTlM?=
 =?utf-8?B?SzNlU2Z6SGFmenZlaGlvaTZFcEZPemE3cU8vY2pJWklGMllKeHduZHZ2N1RV?=
 =?utf-8?B?MkRwSCtnY1VKdlo1VlFGTitVKzFYUm9nWlZHWWs0NEpXdDF3SlRsZ2JYckJV?=
 =?utf-8?B?Qnl4dllvR3JOL1ZIZlY2eGRpV2ZGeGlxQ0Jvb2xwWW1xTUg1UDhFNTFhRWFu?=
 =?utf-8?B?dVB1d1oxK2k2QmE0Vm1UNzQzMVczcjhtZmhXemw4L2thWnJFVnNwRFBoQjU2?=
 =?utf-8?B?TVJrMXh6Vnd1QldNeHcxSmFoMmZZR2ovOExhWG1Ud0srQWJTKytIVXBEK2Rv?=
 =?utf-8?B?emw1NnRmbUdPRHZqZHJOM2lVZ0JkSjhLOFUyNDRBaER5c2xYR1MxNjk2WUhn?=
 =?utf-8?B?ZWo1MngyVjBUenI2SUhNTGVhbDBJajlBQUsrRzd0RjNFVVdNNFFBZUJaT3Jr?=
 =?utf-8?B?eUgzYm1vRUVTUGsvQWQzVDRqUm9kbUFSYWtpaWYvUUg5LzJHRUcyNWYwbXA5?=
 =?utf-8?B?SkFneWtmSGhla01laDhXclFHamZRM0MxRTRPQXVRRWhSa1paT21qYjVjSHJK?=
 =?utf-8?B?VVo4UTV0b1pONzhOYXdYZnVXbko3bXgrOE5sMS9ocFBwMklCWlZndmd1cjBx?=
 =?utf-8?B?YUJMZzlyeVFKZXVvV084RWVwZTUwL2M4d3FnZ2pvMEVMSy9kdEtaUExoSWZu?=
 =?utf-8?B?R1c0dXRTWmVBUDFjcHN3elpHeFpWMjY3TWZVM1dxeTk3OTF1OC9iU09KaUFa?=
 =?utf-8?B?NE9kZWordFp0dm44OUwxajVHMmIyZnBJcGR2RExDZ0puL1pKZ00zQT09?=
X-OriginatorOrg: citrix.com
X-MS-Exchange-CrossTenant-Network-Message-Id: 01cf79ad-af84-4498-fbdf-08dea1d60be7
X-MS-Exchange-CrossTenant-AuthSource: CH7PR03MB7860.namprd03.prod.outlook.com
X-MS-Exchange-CrossTenant-AuthAs: Internal
X-MS-Exchange-CrossTenant-OriginalArrivalTime: 24 Apr 2026 07:49:43.0231
 (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: 5shCCyfao+EALZ9V+w/gtTrF/RFIpAnv+yAS8xy7aPkqfO+Y3R7aXcpN9J2sxcoN5dBT6URzSL3NvyYml+Jmvw==
X-MS-Exchange-Transport-CrossTenantHeadersStamped: PH0PR03MB6623
X-purgate-ID: tlsNG-c1860d/1777016988-C1360DB1-E1A0B5CB/0/0
X-purgate-type: clean
X-purgate-size: 2910

On Thu, Apr 16, 2026 at 05:29:26PM +0200, Jan Beulich wrote:
> On 06.04.2026 21:11, Stewart Hildebrand wrote:
> > From: Mykyta Poturai <Mykyta_Poturai@epam.com>
> > 
> > There is no need to store ranges for each PCI device, as they are only
> > used during the mapping/unmapping process and can be reused for each
> > device. This also allows to avoid the need to allocate and destroy
> > rangesets for each device.
> > 
> > Move the rangesets from struct vpci_bar to struct vpci_vcpu and perform
> > (de-)allocation with vcpu (de-)allocation. Introduce RANGESET_DESTROY()
> > macro to free a rangeset and set the pointer to NULL.
> > 
> > Amends: 622bdd962822 ("vpci/header: handle p2m range sets per BAR")
> > Signed-off-by: Mykyta Poturai <mykyta_poturai@epam.com>
> > Signed-off-by: Stewart Hildebrand <stewart.hildebrand@amd.com>
> > ---
> > It seems a bit awkward to introduce various vpci vcpu alloc/dealloc
> > functions here only to undo most of it in the next patch. Thoughts on
> > folding the next patch into this one?
> > 
> > v3->v4:
> > * no change
> 
> There are some complexities here due to the patch being part of two series.
> Once Mykyta re-submits the SR-IOV series, we'll have two (likely diverging)
> v4-s. Already here ...
> 
> > v2->v3:
> > * new patch in this series, borrowed from [1]
> > * add Amends tag
> > * remove unused variable i due to rebasing over 998060dd9101 ("vPCI:
> >   move vpci_init_capabilities() to a separate file")
> > * enclose entire struct vpci_vcpu inside #ifdef __XEN__
> > * s/bar_mem/mem/
> > * use ARRAY_SIZE
> > * put init/destroy in functions
> > * only allocate for domains with vPCI and idle domain
> > * replace 'if ( !mem ) continue;' with ASSERT
> 
> ... the v3 there has one more item on this ChangeLog list ("* synced with
> BAR write with memory decoding enabled series[1]"), albeit maybe (now that I
> read it again) this merely is the counterpart of the first bullet point here.
> It would be clearer if there the other series' title was supplied verbatim
> and in quotes.

Indeed.  I reviewed the one from Mykyta part of the SR-IOV series.
I see both Jan and myself made similar comments, I'm also a bit
concerned about the claim that moving to per-vCPU ranges is better
than using per-pdev ranges, see the comments on the SR-IOV series.

Overall however it seems to me for the SR-IOV series we will need to
allocate mapping tasks on demand, so we will neither have per-vCPU or
per-pdev per-allocated tasks (that include the rangeset).  I think we
need a pre-series that introduce the map queueing plus the on-demand
allocation of tasks in a clean way (iow: there's no need to introduce
per-vCPU tasks if they need to be replaced with runtime allocation
tasks for the SR-IOV support).

Then both this series and the SR-IOV one should be rebased over that
work.

Thanks, Roger.


From xen-devel-bounces@lists.xenproject.org Fri Apr 24 08:01:36 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Fri, 24 Apr 2026 08:01:36 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1293240.1571082 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wGBTW-0005oD-5c; Fri, 24 Apr 2026 08:01:22 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1293240.1571082; Fri, 24 Apr 2026 08:01: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 1wGBTW-0005o6-2A; Fri, 24 Apr 2026 08:01:22 +0000
Received: by outflank-mailman (input) for mailman id 1293240;
 Fri, 24 Apr 2026 08:01:21 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92) id 1wGBTV-0005o0-4n
 for xen-devel@lists.xenproject.org; Fri, 24 Apr 2026 08:01:21 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wGBTS-003vQi-W9
 for xen-devel@lists.xenproject.org; Fri, 24 Apr 2026 10:01:20 +0200
Received: from [10.42.69.5] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <oleksii.kurochko@gmail.com>)
 id 69eb234a-2eae-0a2a0a5409dd-0a2a4505e1a4-48
 for <xen-devel@lists.xenproject.org>; Fri, 24 Apr 2026 10:01:20 +0200
Received: from [209.85.167.44] (helo=mail-lf1-f44.google.com)
 by tlsNG-c201ff.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.1)
 (envelope-from <oleksii.kurochko@gmail.com>)
 id 69eb2350-aaa8-0a2a45050019-d155a72cd160-3
 for <xen-devel@lists.xenproject.org>; Fri, 24 Apr 2026 10:01:20 +0200
Received: by mail-lf1-f44.google.com with SMTP id
 2adb3069b0e04-5a283c44478so12791903e87.3
 for <xen-devel@lists.xenproject.org>; Fri, 24 Apr 2026 01:01:20 -0700 (PDT)
Received: from [192.168.1.6] (user-109-243-69-121.play-internet.pl.
 [109.243.69.121]) by smtp.gmail.com with ESMTPSA id
 2adb3069b0e04-5a4185bc274sm5839038e87.21.2026.04.24.01.01.18
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Fri, 24 Apr 2026 01:01:18 -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=20251104 header.d=gmail.com header.i="@gmail.com" header.h="Content-Transfer-Encoding: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=20251104; t=1777017680; x=1777622480; darn=lists.xenproject.org;
        h=content-transfer-encoding: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;
        bh=oMqhxigLtjQydo7ejUuee05jkCh2bpHr5rm+RUIgjwQ=;
        b=dI4zn78jGtlf3Slj5XZ9CgOHnSfdUYNezv90GhB8raikx3dM9SZB00EEaxjflQy+Za
         z92XhmD3W3Cc5qEnb86s6mtCVAsT12Yc8r2ImpYDFAQotz0lMz98YiPgsmdJQbtrBaNc
         oL0aLoPKqvcxAIP4cc1GeSKUCBU+HSyBA8/bwXDwXXTqtz5g7EUbQO2Z/HI5pFIxmYRE
         Ji4IgHLkTQ4+i8Enn54TwA4x4raTRbvnB8Z/QcRTClqOivJSKbbENl9rj+BtQDm1XPb8
         TZsSqFm/V/WfpszouJZFmoQUxaRlYWcvc9ATTwO/LUFD7tOoXv7rl1k6W4WWIJaXhzRF
         JwNQ==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20251104; t=1777017680; x=1777622480;
        h=content-transfer-encoding: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;
        bh=oMqhxigLtjQydo7ejUuee05jkCh2bpHr5rm+RUIgjwQ=;
        b=NhYV/QBX/6aY4FYSxa6zCbC6XImMryYYiKYJqwdLJZtPx5S//ZvbBjpSRPYQIsMNCh
         vkuK0AJsp/32v4o48QVYBLaQTe+E23++EiIWF/CC1S0quoITLH0fK4GAYIMXhVMG7iQk
         aCxDmc0fDCv0SwSl3ZJQ35RCL/XIiZ4cynKbPm4SWhXGKG6BnueYa9+wo8XDHFhhcbLT
         +xW44TzgsIFlY/RkqxaerAHIpW+/Ji6DkwVLYbG5oV4QTLdNZaRyDmdtIa7enZxIMmxm
         Rn/WWYcWg7b5MVVfchbSFcEAh/fjQi7hLkGePGM/zWChiMi1Y/GoC9ZZUO1jjvDkRHaC
         3J5g==
X-Forwarded-Encrypted: i=1; AFNElJ8ZZVuprTJmY1RXMC/sAAKy4/OrvBCd0NTm5SRECX9LYiNgG5yMWfDm7oE1ViDBmh4x2NQHhOSl4Fo=@lists.xenproject.org
X-Gm-Message-State: AOJu0Yxzje6tCymzyqYsTLPmwpcbGfNh51cDtuofT6JP9SSDtAXdJy+i
	motdkEfDb/hD9ifKmIWIlXH4mI8OpWZz9X74EFfb7W2EHi8Tv6nmIpanCbFgTg==
X-Gm-Gg: AeBDietOMEZQkq6uXGBPLu1WqZaG6uJpTBXveKynjg6omoaL/Yh3sSM8J/tOKhVM8dk
	LDpEB3RWCgOxmmzC8GlCKFpooCMD/k16i7I81tfWq7y3VNUzF0LGc4kUC5JdmGXdKQZ5cq5Lbj8
	T0AS29VA8ywQ8CblqUP33Qi9lPd5zY6kzIOLTO7xfWXKq9szE+D9FjOGfmoZ4XPO0DRJualf2Gp
	JckKw7ie4/hn2l+SWdCGZwrGFCTSCqS3v/yjwQ4xAab2CJfKBRt0MyYV5Atrh6vJGS4RWfITF6L
	He3OSj7LKC9b5CE5rGIGwhQTQHqjXt0H7M+LKjAoBt2WiVtNv/MLf0KAFl9f1OitxltOx3ZLGCB
	Duxot1tDw46wY2gLLujVUSF7Tk3aMrEEQiPCQDETFVNBe0zqzUjRDrmS6lqZ8vZ1vdtkhqyxL24
	JbMie9fe64N6gLlIz1VoLOZRzabdOdIabvZR3rmA20v5Tgsx7KEW/Lnm63Z/Wcrc70jjEEK6tjR
	Rm1LVviIazawA==
X-Received: by 2002:a05:6512:ad1:b0:5a4:1133:c305 with SMTP id 2adb3069b0e04-5a4172daa96mr9274802e87.26.1777017679189;
        Fri, 24 Apr 2026 01:01:19 -0700 (PDT)
Message-ID: <8fc5563e-9033-44cc-95d5-2bf9b89b01dd@gmail.com>
Date: Fri, 24 Apr 2026 10:01:17 +0200
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH] CHANGELOG: add xenstored watch depth feature
To: Juergen Gross <jgross@suse.com>, xen-devel@lists.xenproject.org
Cc: Community Manager <community.manager@xenproject.org>
References: <20260423160714.566313-1-jgross@suse.com>
Content-Language: en-US
From: Oleksii Kurochko <oleksii.kurochko@gmail.com>
In-Reply-To: <20260423160714.566313-1-jgross@suse.com>
Content-Type: text/plain; charset=UTF-8; format=flowed
Content-Transfer-Encoding: 7bit
X-purgate-ID: tlsNG-c201ff/1777017680-E95A7443-AC0616D6/10/73395122804
X-purgate-type: spam
X-purgate-size: 883



On 4/23/26 6:07 PM, Juergen Gross wrote:
> Signed-off-by: Juergen Gross <jgross@suse.com>
> ---
>   CHANGELOG.md | 2 ++
>   1 file changed, 2 insertions(+)
> 
> diff --git a/CHANGELOG.md b/CHANGELOG.md
> index bb41d89997..ce46020dbd 100644
> --- a/CHANGELOG.md
> +++ b/CHANGELOG.md
> @@ -11,6 +11,8 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/)
>   ### Added
>    - Support for per-domain Xenstore quota in C xenstored (includes
>      xenstore-stubdom), libxl and xl.
> + - Support for Xenstore watch depth feature in C xenstored (includes
> +   xenstore-stubdom).
>    - On x86:
>      - Support for Bus Lock Threshold on AMD Zen5 and later CPUs, used by Xen to
>        mitigate (by rate-limiting) the system wide impact of an HVM guest

Acked-by: Oleksii Kurochko <oleksii.kurochko@gmail.com>

Thanks.

~ Oleksii


From xen-devel-bounces@lists.xenproject.org Fri Apr 24 08:38:21 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Fri, 24 Apr 2026 08:38:21 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1293282.1571091 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wGC3C-0005c1-Qh; Fri, 24 Apr 2026 08:38:14 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1293282.1571091; Fri, 24 Apr 2026 08:38: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 1wGC3C-0005bu-NX; Fri, 24 Apr 2026 08:38:14 +0000
Received: by outflank-mailman (input) for mailman id 1293282;
 Fri, 24 Apr 2026 08:38:13 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <roger.pau@citrix.com>) id 1wGC3B-0005bM-E3
 for xen-devel@lists.xenproject.org; Fri, 24 Apr 2026 08:38:13 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wGC3A-0074i0-Qq
 for xen-devel@lists.xenproject.org; Fri, 24 Apr 2026 10:38:12 +0200
Received: from [10.42.69.12] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <roger.pau@citrix.com>)
 id 69eb2bee-e002-0a2a0a5209dd-0a2a450ca3ee-38
 for <xen-devel@lists.xenproject.org>; Fri, 24 Apr 2026 10:38:12 +0200
Received: from [40.93.194.31]
 (helo=SN4PR0501CU005.outbound.protection.outlook.com)
 by tlsNG-d25034.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.1)
 (envelope-from <roger.pau@citrix.com>)
 id 69eb2bf3-62f1-0a2a450c0019-285dc21f4568-4
 for <xen-devel@lists.xenproject.org>; Fri, 24 Apr 2026 10:38:12 +0200
Received: from CH7PR03MB7860.namprd03.prod.outlook.com (2603:10b6:610:24e::14)
 by DS1PR03MB7918.namprd03.prod.outlook.com (2603:10b6:8:222::10) with
 Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9846.22; Fri, 24 Apr
 2026 08:38:09 +0000
Received: from CH7PR03MB7860.namprd03.prod.outlook.com
 ([fe80::f5ba:35df:1c9f:b343]) by CH7PR03MB7860.namprd03.prod.outlook.com
 ([fe80::f5ba:35df:1c9f:b343%4]) with mapi id 15.20.9846.021; Fri, 24 Apr 2026
 08:38: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=PvntZJdk9W+BrM5VTEpzqQAnliXyhUCT2W2wmHRU9qgiWUQ/NvCxmmebGSl5VBK5iB10kilVVvOGr9cS967GNqTKsfV8XKlI4zNKhhcub/1g2PT1TOYNKUUF7IP4Ye7xTVk/1w5rV+ezAq57leuYlnRW/G9eJPP1YcrvSsDVaTiBCeF3eHZSkpzPEjNdYf1qee5M+Le66dsq5aG6mcljvPm2XBQsltCpKC+y8ph0pEMRfe4leWof5xCG8jMWYy6UefrLfOqQrCPk0YoDiujbpmtbK7ynNSOWmMXpxPt0ii1gcjtdRgcsouPUXJNfZN6tSjlxGueRD/bL3WibIzqzTQ==
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com;
 s=arcselector10001;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1;
 bh=dovTWvXMvbx1uRW13q31Roe/4gyTFgE/R8ddkYUhMjM=;
 b=ny5jqjFz39p2mGp0T++pi9Djw1/arA/nKKQVHyEngn8zcPNC8p5KgTQS7MBJBtUMTmm8wk12Yvi5KBApE2kbez+UN2gVGa3FlfAqEvtZsPBomHq7ZrWNZmfVwEBHVtlOO2Mbm0HuW0N9lxKTRBNibnGq348d0HpWYNYwTAG9Su6AIQUH8wbBJLn3Xn2YItkCY5NdoGd5OwozoIZkvzi752l7reNxnau0FM9GahmiDkzYDDtkUliAnetYkYFuA6XowZJ1xIvKkL8epogsJly3BLfRjQLM06i2/UZnghSTuC3L//HsdWgPA/id9tMw6I62a7Dpieq3K2uV8TV/3snFcA==
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=dovTWvXMvbx1uRW13q31Roe/4gyTFgE/R8ddkYUhMjM=;
 b=ZTVt6dQV0eVpD4EkSjxMXdnItYp5X1D8I7m587pEcW7rGg5xK8HaPdUa+JLdso2rsX0iTuEeITLDVuQmABwVkcYkOj1o/i2hXWlq8Ap0xl5AlujL8Am6a9SszcNI2ibKbHZFbsWBBZuxPvAeC7BNB4o8KKzucKA2RgAeFRAVqd0=
Authentication-Results: dkim=none (message not signed)
 header.d=none;dmarc=none action=none header.from=citrix.com;
Date: Fri, 24 Apr 2026 10:38:05 +0200
From: Roger Pau =?utf-8?B?TW9ubsOp?= <roger.pau@citrix.com>
To: Stewart Hildebrand <stewart.hildebrand@amd.com>
Cc: xen-devel@lists.xenproject.org
Subject: Re: [PATCH v4 3/4] vpci: allow BAR map/unmap without affecting
 memory decoding bit
Message-ID: <aesr7YlOKjJsLTkk@macbook.local>
References: <20260406191203.97662-1-stewart.hildebrand@amd.com>
 <20260406191203.97662-4-stewart.hildebrand@amd.com>
Content-Type: text/plain; charset=utf-8
Content-Disposition: inline
In-Reply-To: <20260406191203.97662-4-stewart.hildebrand@amd.com>
X-ClientProxiedBy: MA3P292CA0052.ESPP292.PROD.OUTLOOK.COM
 (2603:10a6:250:48::8) To CH7PR03MB7860.namprd03.prod.outlook.com
 (2603:10b6:610:24e::14)
MIME-Version: 1.0
X-MS-PublicTrafficType: Email
X-MS-TrafficTypeDiagnostic: CH7PR03MB7860:EE_|DS1PR03MB7918:EE_
X-MS-Office365-Filtering-Correlation-Id: 5038c7b6-ec48-4f6e-20dd-08dea1dcd035
X-MS-Exchange-SenderADCheck: 1
X-MS-Exchange-AntiSpam-Relay: 0
X-Microsoft-Antispam:
	BCL:0;ARA:13230040|366016|376014|1800799024|56012099003|22082099003|18002099003;
X-Microsoft-Antispam-Message-Info:
	VwRTXCwqisY6NIb5kjLm9MvcAIA2uANirJ1mR2OWGeklcVDc2wTHkb3BIS07RJGBCsQ9T4ZAGbpZ1L2PvCJ/8qY3YMOr9qA2dQibpfQhvwdhg02rBEHxIWmAKaqFHbf3RoSBPsR0yQU5IhjP1B7FTJmqs6hvEFOjfggvJjJe8BbwUtVEc21L03aGtHm0fMSjAOoZHrWaO/wCzTwYVwBmVpWF21azthuRO6luYh/Dn2Xw/d/fWupLo0oEWM0y7b40MnX454n3tfORqug1mPjmBmr+VpIUmT4y8MaAtR7nu9lYBpwh55ChtFK6vXe+TSFhbeg3X7EY+sIUVkDK+30AaKV9/s+Xa7q4lj+ydnCPeBdmWSTG5+hLcDu7PItDuSowr+waFdu3AEp1MI4tyrrccvtO5zPVbQhy5GgeOycjdvCZBUpp8G5VuO0UG9R0gldhy4KKwhmCLhdMx3aJ+/ieo7k2ioqhrFc3kYPWHyjHts/YHo6WelYVyW8gEBhG0ef3x1Ys8K7/2v/3AHIMAbHw+V02M0egJyoCn4S5A1C8tMQIHB1RszdOw9p0VOGURw9uNkRqN5m4sN34mTQ9HYi7UkDahRaxErb95wMRNymMoXvVNMeDm5PogLjhZaAlFKu70Co04AqCHIedJJFmhXNc74305zR4p0S9f7Gn/A0RtA1p7IP2PTPgqJqQBAw9WmRxYDXYvoYir0uHOy+svnB9wkVSJ0aGzwuOrqEJIckSjfg=
X-Forefront-Antispam-Report:
	CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:CH7PR03MB7860.namprd03.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(366016)(376014)(1800799024)(56012099003)(22082099003)(18002099003);DIR:OUT;SFP:1101;
X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1
X-MS-Exchange-AntiSpam-MessageData-0:
	=?utf-8?B?UGN2Vk1FUUFBYzRoeUZaOExDQzhIOURaSithSmJtUE5RRHRLWG1OemFyUXJk?=
 =?utf-8?B?ZDFqenZ6K0NrUEt3a013WktEajl6VlRFandlUTBYeFltRVJveFV5elg2YWxz?=
 =?utf-8?B?VXIvd1JmeVZJeGt5ZExmcXgwNUxGd2Y2UG84dWdLa1dOejdaMG5acmwyQzgy?=
 =?utf-8?B?OUJONGI3Znh5N0tGODBVMVB5YWEyT01Famp0OHdBbFpvamhHdmtxOE5Ob3po?=
 =?utf-8?B?MEJkdUVxN29UaWJyUXU2Vk1QaTBRTzFRYTYxbU1JRk85ZU9OQXJvaEkzYUFs?=
 =?utf-8?B?MVJTMGF4em90bG01LzZQZm1TUnFiLytiLzQzQjFDYmV5SFBpMTI4OEZQVUVn?=
 =?utf-8?B?VkRuUE0zQW1KSm5GSVJVYWJKcjFpUExzYmFlZ2tja013REJ1TFdDTUNpTVdp?=
 =?utf-8?B?d2NpbnA0T3cxU01BaUJNQXA0dTNLYUN2b2srVU5NY1F4Zlp1bTc4NTZxUkxE?=
 =?utf-8?B?aE9EeFc0clZua1Jna2JhcEltbXRxcS9BdDEwR0RFei9tV3JNUUd4T3RicE54?=
 =?utf-8?B?MUtZTVdXOHRWcmp3cE5KRU9WNDhRbHNlbVNxREZDTkNCR2FDVThEMlFYYWs0?=
 =?utf-8?B?cldJNkZEUUQ2ZDZleHZ3cVppcE5WdlBWQzNjSndGKzVocm8xam9yOFNqMWF6?=
 =?utf-8?B?bEJIQUZ1UmtRUkZDblprdEpsVGF0ME9yRTlCNEVnUDhQMHV4WGltOTdRR1Fo?=
 =?utf-8?B?blZwenVZakFtbHdraUljV0d3dmZ5M05sNGVJV2VzY0I5MG1nc25PVDNGUWpK?=
 =?utf-8?B?a1ZsUUs0N1RLZzVWRytVU29QUFVnRHhTV0J3NFQ5eUNrLy83UlhCMTJOMmE2?=
 =?utf-8?B?bzhXS2NnVU9CTkozejF4aWdMVWd5VDhsL01YcVo1REx4NzVpUUdFdkhaM2xN?=
 =?utf-8?B?c0d5WDhMR0FZSndIT3FzeUJaUDdiK3gwdWxtSXY2NGlGbkNZY2Vwd0VHYXVI?=
 =?utf-8?B?OWRtdEp3QzNFMGcvOVJtWkpEZW80RUlYQW1pNVU1emhMM1NZZzNHWHZOSWs4?=
 =?utf-8?B?cThaemUvaE5sK0RGOHNtTkJENjg1eTJ2NDNLb3BLL0tUTkszeTZML01LYTF5?=
 =?utf-8?B?RFR0RnhvYzFKUmtZRVVWOXRUY3Y5YlF3TkdYWFA0cWJzNTd0alVaaC93Zit2?=
 =?utf-8?B?bWZrcGtKdGNOTGdCdUF2MzYwY0EzYnZJQUFmc3l1LzNSU1NxUTBqRXJJelRZ?=
 =?utf-8?B?YjZzK0p6bVBXa0UxOWE3SUd3K3BGbStEOUViczgycG0rN3JHSFhWNWg5SUsx?=
 =?utf-8?B?N2NBMnJJQzd6TUM2OUtNV2RXZThxaUM0eFIyMEJ3akpCS0J2YkpFYWljSDBR?=
 =?utf-8?B?a2wzWGczelN2UGdiQ3ljT3Fsd2Z0N3dRbDhaVDlmRGxQL2lFUVhBZEdQWFhQ?=
 =?utf-8?B?Lzdha2ZmaHZEcjk1b1dGL2Q4U3VLNFJ1VjdGVzZ2RHIyTDY4Z0J2cnRlNmVE?=
 =?utf-8?B?czd5OTV2M21QOWtuSGtuV2IwZmxQbktablRUdWR2T3FwMTVkdUF4bDh3Wm5w?=
 =?utf-8?B?bG5DcXowbExrNjJNVU51WmRQYW5EblRDOEVVeE1HdTNHbkFvQk9UeEtnbTZE?=
 =?utf-8?B?UmRsSWFsYVNWbVdnb1dPdzZsSEViUEo5ZENiSFZJUnZheWZjL3g1NmVTU3Rq?=
 =?utf-8?B?M1VLU0hqamc0amZYeE5xT0hIMEVSd29vVGQ0a1h6OUZIcCtLWjlrTWI3UU55?=
 =?utf-8?B?Q0NSS3A0QW0vYW91WmNZc3dMaU8xRUhBSmk5ZkN6aURUNnIxKytQcEVraXRL?=
 =?utf-8?B?aHN1MDVmWUw1cmVBU0FSWDNobWdPWll6UkYxZnBHT1FuWUdRZkh1Y1N1SThE?=
 =?utf-8?B?V1Q4SFMzbUhFR3JjTlRIVm1Jeit6VVQyMW9CNWdvVE5PYWZjdVlnVjluTmgr?=
 =?utf-8?B?SDFUYkxkbjAvNDRDeXgyRWJ2dGJvRmQxbSt0S3BYSkFTWU1XUWlqREsvdzho?=
 =?utf-8?B?NFVja1BoSGJBREJPOVVtRndnTC9wdVJ4c1dxQ3BLdTN2Y1dmMDFxZWkwbmwz?=
 =?utf-8?B?Sk5IL2k3ZWo5TlA3amR5TmFlSStBOU03T205ditieE5jSFRSUC9XSks4WVM1?=
 =?utf-8?B?a1dqZkRVN21PSWZDU0N6UFZiRUZ1OGFuRUN2QW9WcDRCMnpseC9LTUF5VlAz?=
 =?utf-8?B?eXZKUEY3dDRxU3BWaUx5bW11N050OXV6aU9TWmh5eEFVOWtuSDVPTzhPU01D?=
 =?utf-8?B?ZGZQbFFnUjZIQnkrbHR0NGFmdHI0MTJjVWxSQjNJcTV0T2lKaWJ2SytJTHNC?=
 =?utf-8?B?UHFCL1Rsdk1jN0FCZ0tNTzZkeUZFbVNneVJHVHJzSjU0SU9Nejl3RThhYnFr?=
 =?utf-8?B?ZWF1S01wa3RMUVVTRmxCVlFSa2czK1NtZzAyQVQ5VzdiNENIRUlzUT09?=
X-OriginatorOrg: citrix.com
X-MS-Exchange-CrossTenant-Network-Message-Id: 5038c7b6-ec48-4f6e-20dd-08dea1dcd035
X-MS-Exchange-CrossTenant-AuthSource: CH7PR03MB7860.namprd03.prod.outlook.com
X-MS-Exchange-CrossTenant-AuthAs: Internal
X-MS-Exchange-CrossTenant-OriginalArrivalTime: 24 Apr 2026 08:38:09.2523
 (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: 9OFPVr5S9FeYO7lLln0ao/89ueM9ecAmqEPgOVw/pjs4IqxeINMxJ922+w5Pjyog6y0N4G6U3UDx2R4SvfQ2Xg==
X-MS-Exchange-Transport-CrossTenantHeadersStamped: DS1PR03MB7918
X-purgate-ID: tlsNG-d25034/1777019892-6CD63CF5-A7293881/0/0
X-purgate-type: clean
X-purgate-size: 2344

On Mon, Apr 06, 2026 at 03:11:57PM -0400, Stewart Hildebrand wrote:
> Introduce 'bool map' and allow invoking modify_bars() without changing
> the memory decoding bit. This will allow hardware domain to reposition
> BARs without affecting the memory decoding bit.
> 
> Signed-off-by: Stewart Hildebrand <stewart.hildebrand@amd.com>
> ---
> This also lays some groundwork to allow domUs to toggle the guest view
> without affecting hardware, a step toward addressing the FIXME in [1].
> 
> [1] https://lore.kernel.org/xen-devel/20250814160358.95543-4-roger.pau@citrix.com/

The deferred toggling of the command register bits seems overly
complex IMO.  It would be much simpler if domUs simply don't get to
play with the real decoding bits.  For the hardware domain we could
toggle the decoding bits ahead of the mapping operations, so that we
don't have to defer the toggling after mappings have been sorted.

Long term we should aim to remove the cmd field from vpci_map_task
struct.

I don't mind if you want to pick the patch in [1] in your series, as
we could then drop the cmd field and possibly simplify some of the
logic in this patch by no longer requiring the deferred write to the
command register?

> v3->v4:
> * rebase on dynamically allocated map queue
> 
> v2->v3:
> * use bool
> * switch to task->map in more places
> 
> v1->v2:
> * new patch
> ---
>  xen/drivers/vpci/header.c | 43 +++++++++++++++++++++------------------
>  xen/include/xen/vpci.h    |  1 +
>  2 files changed, 24 insertions(+), 20 deletions(-)
> 
> diff --git a/xen/drivers/vpci/header.c b/xen/drivers/vpci/header.c
> index 146915e28c50..20fe380552f4 100644
> --- a/xen/drivers/vpci/header.c
> +++ b/xen/drivers/vpci/header.c
> @@ -117,11 +117,12 @@ static int cf_check map_range(
>   * BAR's enable bit has changed with the memory decoding bit already enabled.
>   * If rom_only is not set then it's the memory decoding bit that changed.
>   */
> -static void modify_decoding(const struct pci_dev *pdev, uint16_t cmd,
> -                            bool rom_only)
> +static void modify_decoding(const struct pci_dev *pdev,
> +                            struct vpci_map_task *task)

task wants to be const here, unless further patches require modifying
task inside of modify_decoding().

Thanks, Roger.


From xen-devel-bounces@lists.xenproject.org Fri Apr 24 08:51:10 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Fri, 24 Apr 2026 08:51:10 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1293304.1571100 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wGCFd-0001Cf-Vh; Fri, 24 Apr 2026 08:51:05 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1293304.1571100; Fri, 24 Apr 2026 08: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 1wGCFd-0001CY-T9; Fri, 24 Apr 2026 08:51:05 +0000
Received: by outflank-mailman (input) for mailman id 1293304;
 Fri, 24 Apr 2026 08:51:04 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <roger.pau@citrix.com>) id 1wGCFb-0001CS-S8
 for xen-devel@lists.xenproject.org; Fri, 24 Apr 2026 08:51:04 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wGCFb-00HSBs-91
 for xen-devel@lists.xenproject.org; Fri, 24 Apr 2026 10:51:03 +0200
Received: from [10.42.69.3] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <roger.pau@citrix.com>)
 id 69eb2eec-2eae-0a2a0a5409dd-0a2a450399c0-42
 for <xen-devel@lists.xenproject.org>; Fri, 24 Apr 2026 10:51:03 +0200
Received: from [40.93.201.37]
 (helo=CY3PR05CU001.outbound.protection.outlook.com)
 by tlsNG-33051d.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.1)
 (envelope-from <roger.pau@citrix.com>)
 id 69eb2ef4-672d-0a2a45030019-285dc925e33b-3
 for <xen-devel@lists.xenproject.org>; Fri, 24 Apr 2026 10:51:02 +0200
Received: from CH7PR03MB7860.namprd03.prod.outlook.com (2603:10b6:610:24e::14)
 by SJ2PR03MB7426.namprd03.prod.outlook.com (2603:10b6:a03:55e::13)
 with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9846.22; Fri, 24 Apr
 2026 08:50:57 +0000
Received: from CH7PR03MB7860.namprd03.prod.outlook.com
 ([fe80::f5ba:35df:1c9f:b343]) by CH7PR03MB7860.namprd03.prod.outlook.com
 ([fe80::f5ba:35df:1c9f:b343%4]) with mapi id 15.20.9846.021; Fri, 24 Apr 2026
 08:50: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=M961YQTdmdWyRiyNhJSfRaTARuVm8nH4lapPcYt9MlHXdVu2kdkIukoNHA+72zUgIlATSgIW/eTQTG9/aXX61duOyCp1K321dVJA9bAX6a7QteVZAQpOykj5989PQUQCQdWbUtbWq6CMcsMspF7+M8bsONMKjKmw09XpVw4cum2P+DkpXsf7X/in1LzL3LAl1bUlH8Ihh232teTs0f7zA24rbaXEuMfPbSI5stsUk02rZ4kEiOeTqQQzbf65yY8f7UcY+pCLmVY3dKh61fFsk5qMNwaNBVy/n4Exer6LWsy64zWcg6fpRhfyGli4VHVhtKZUIb9z6oyYTGvsjBmwPQ==
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com;
 s=arcselector10001;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1;
 bh=NLO52x3nk09yDTf24M+fjxAhARyd8a6AX1TgMY6d+80=;
 b=h1qChGHUL5hbs1iBmyr1rIMSmQgMRoDq8k8qCYQ7GIpkcqVKjPD7eo/WCvoDn/D5QckPhQmXtGwNwPpHcyFbq//uunbTxDTNvyXfxIadI7MMu6eWmOmUcrxcfqqvuRG+B7DM9QQsm2iinl45aqg7aemDP+EUZzE94JnYnW89TkGhH/Psp+m+bmoBLSPmgWFFuw3rqqFG4DlpAg1HZSJsyO7Hv7VALv7ydfvXvqh6OdAMmjQbCWG6YiwvD3mAGsACMvJnPXKe479mDym/uXJbO4Jgfh1MVGwPAG3MrqWecMSpI1fQAfyl9eSERorQcUX1EiKXOM1yNUBsyb/VDCu6Cw==
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=NLO52x3nk09yDTf24M+fjxAhARyd8a6AX1TgMY6d+80=;
 b=HVB7JNoPKD58o0LQOhpoQOX9wOhyffaslNDWLWne+Gz62IKLm2E7dEiWTy5m+oJ8R4PW4RDkCHjAZ3d0ce35LZ9HG8nV17GEcSFBqQceHJLXYlpIrDjgTNONjjiubdnm0+pKteVqH1GTC1X/sixcdtNxSNT4o/P4neclbq4aaOw=
Authentication-Results: dkim=none (message not signed)
 header.d=none;dmarc=none action=none header.from=citrix.com;
Date: Fri, 24 Apr 2026 10:50:54 +0200
From: Roger Pau =?utf-8?B?TW9ubsOp?= <roger.pau@citrix.com>
To: Stewart Hildebrand <stewart.hildebrand@amd.com>
Cc: xen-devel@lists.xenproject.org
Subject: Re: [PATCH v4 4/4] vpci: allow 32-bit BAR writes with memory
 decoding enabled
Message-ID: <aesu7sCLTaodcyWL@macbook.local>
References: <20260406191203.97662-1-stewart.hildebrand@amd.com>
 <20260406191203.97662-5-stewart.hildebrand@amd.com>
Content-Type: text/plain; charset=utf-8
Content-Disposition: inline
In-Reply-To: <20260406191203.97662-5-stewart.hildebrand@amd.com>
X-ClientProxiedBy: BN9PR03CA0218.namprd03.prod.outlook.com
 (2603:10b6:408:f8::13) To CH7PR03MB7860.namprd03.prod.outlook.com
 (2603:10b6:610:24e::14)
MIME-Version: 1.0
X-MS-PublicTrafficType: Email
X-MS-TrafficTypeDiagnostic: CH7PR03MB7860:EE_|SJ2PR03MB7426:EE_
X-MS-Office365-Filtering-Correlation-Id: 1c1783ff-97fd-47f5-a0c8-08dea1de9a07
X-MS-Exchange-SenderADCheck: 1
X-MS-Exchange-AntiSpam-Relay: 0
X-Microsoft-Antispam:
	BCL:0;ARA:13230040|376014|1800799024|366016|18002099003|56012099003|22082099003;
X-Microsoft-Antispam-Message-Info:
	QmRGuhNHA/te5dTCwTZdYqFaxEL7wD07NL719nJMqeJkwlBOb8A/cZsIIY3oWgYpPJZoqpKmTqmp0Fwb4oOASrRBmWOf0EDs/SIfrAJ/PcSAqVCZj55+H5RAUfRGSMJz9Uz3E2OdItYwps5QqPqAMYl/Pg2/MUhMaQ1DS0ICEv6EuhDiovrO2QxrkeOmG+anR8rV/nl7QFj2z+JZoz5W+6KW/OS+N+AWnsiBoJmxgKwAOrP/S2Pfq+QSQ4oAXs/Ike5ppYTSR6qaLMrX9SOpdTdMSlk4qmw+l40QKWBDn03GzDaPpbGVPiCOv9JPdGiteVYcjmg/dNxBNE47WcbYTad42H+6pgKRyGBvfC1P1dvJrMWJUmYc4Z7K0gtLJ1DnSuY7YaucbvpyyYg3R836JswiZNc9JxA/fQ+UmyOW8h6mZrUe8tOHqwqSQUGcwhNE67l17BGRk1GVKA8lLLFvuX9JEaZUsoqIhUxKWuLn5yMsMW1M2Z3w38bf3T+O7A1LvxsnhZUn3xZjWvUB0lW2HgSlJwKYZqOBljF1PCTG4vXENykhLkp24t1BU/wP3R7MHSctl3EYUDW1VBHAkYCYg1ofNhjXZ8zTWb6umlICm1wNCNI55ajs0Xe5c6mCdgRpcmgVaP4tfG95KCtF6IfKfvxT/C/PNh1IG0R5OwmXGsOqTAbkIo7+S60BUBg9UXucOhiS2nnpRDBMAiPyiR545W6qvMZ95+pgE20SwwPzPGD/JFMrC0aOfEeao0S8L1Gb
X-Forefront-Antispam-Report:
	CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:CH7PR03MB7860.namprd03.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(376014)(1800799024)(366016)(18002099003)(56012099003)(22082099003);DIR:OUT;SFP:1101;
X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1
X-MS-Exchange-AntiSpam-MessageData-0:
	=?utf-8?B?VnBHQUVwS0FCbWg5YnJGckFSd1hTSFI1R2o3bitkZWwybENNbjFzK2J5NUk5?=
 =?utf-8?B?RXkzVXF1SEpNVjVEWWtobGRGQWhXN3YzN1lvSnZ3b010ZldjbHhtWjF5OG1s?=
 =?utf-8?B?aWFkMmNONVkxT3hpQ1lUcFQ4UGtqeVJnZE5NSHhGUTF4UzNxV1JVejQ3b1ZK?=
 =?utf-8?B?b0txS3hESUtzQkYyZFJVNytuaUhWUUhJUGN3OXBaMHNSOVRqcEZLZW9TRDRn?=
 =?utf-8?B?ZHp0WERPQUdrVWY4WWxPVXUvcXdBQ1ZFNEtPV0xISGh1N2kyd09Kdm1VR3hz?=
 =?utf-8?B?WHRucytxYkw4SW9EMWpFZ3pkckJHOG5jaGhpQktUMkVmYmNRajRMM0JVVko1?=
 =?utf-8?B?MWtGQ2Y3VE1zalFyR0NRZVh5Nyt5VTVXK05CRGFvbGxldDZ1aTJXQU1jQnVG?=
 =?utf-8?B?ZlVNUXA4UGNMQ09rRTlDNG1MRHdockgvS3RnV0Q5MXZwN0FoV2g2ZG5QUzcx?=
 =?utf-8?B?WTV3cHU4RndCeE9HQVo4S2RPWE1iMld4S3hDMFdXblRCcmQyMHhWRk12R3Rx?=
 =?utf-8?B?S01UeUNLNDVaUldyS0VVam0zcGZGUWIzNUlmRXlYSjJ0TmVNYU1rTU90V0J1?=
 =?utf-8?B?aWJ1SXBYSEk5aXI5eWJ6eUVVQWxQeUlNSW9pZ1U5NGxPWkMxSnJtVEZPN3Ri?=
 =?utf-8?B?YnlVcWdwVE85Tkl1UlZHdWF4clB1ckxIQUcvcE5GQUtZTVp6VE9LdFlrSXkw?=
 =?utf-8?B?bklHbER5aEVzck5NZSttbTJqV09yVzNXUDRnVGZHWmc5eWRBMmdRVGVEVDlI?=
 =?utf-8?B?anhyRUJuMUoyRTl2U094andid09EalZqYkZ6ZVR6bnNlN2Y0c2prRUUzU2k0?=
 =?utf-8?B?SWNQZml3aHVOc2RXQ0g1T215S0RIVit2VEU1T2IvRDdEZm9UdzBXRHVJVGlr?=
 =?utf-8?B?V2tmYVluUGNqLzhNZitUUDBoVGNJSjNqSVlVRG9PdVZITGJ4bElsTXRXWFIr?=
 =?utf-8?B?NjRtUUxxYUJCcDNVMzNRL1lyT0dFTmV3U1ZHMkxpeHlEaktnT2N3MEJtbDJE?=
 =?utf-8?B?WVJWeHRQV0paUHB3cnJmYlVoUnBEWjRtVFF5VHl4emtZTERiSG5ZekJjTjl4?=
 =?utf-8?B?Q2dCS0toakpDNDN3NTd2NGpTMTdoeHRReVgweWNubkVkVWtkL0NqTjlrTzB0?=
 =?utf-8?B?MzdsN0tIZjVQdDVqbU1mR1VOOXJrbjBHM2ZiK0cybmFwbU0wSzFwOEhJWXhr?=
 =?utf-8?B?eDNQVGRoeEtYQnBpZVBTZXV3Ni9za0wwdDB3ZDNtb2VDcDBFQlRzVFl4SlBt?=
 =?utf-8?B?dDN6N1JBSkdCRlNmaE1ZZmpxdzRKUDQyMXRIdnpmNms5N3hNNmZpZUNtYno2?=
 =?utf-8?B?UFRTN1hCMjRpVUhNUXVBbnY5S0ZFS1praHRJK1ZEcG1iTndMTzBrMVZGOGRL?=
 =?utf-8?B?ME13bDBPdmgwWnR4Tm90d2dIZXdFbkk4RkhhcUZkdVlKSmU5WXJWbG9JWFVm?=
 =?utf-8?B?eEY5RkhHT1FiTnBuMGtxVXpVWFNkSk9NbllJMTNpaDNGM1FUNHV1MW5KQWpE?=
 =?utf-8?B?NkZYMFQrQVdMdkhHZDhnNGZjNWYxUGdQajRyaFFvOFNzQ3JJckRrR1FObk5q?=
 =?utf-8?B?eUwranhmWXR6dCtaZGRINFROUGZZVDRVZTdqZVdTWTAyUWx6QlZCbm4rRjNM?=
 =?utf-8?B?eklxRUJWS0hXZmVlbjVaMGxKdFhzNTV5TUlTKzlCdm9pVFVxZmtMMXlaeEJT?=
 =?utf-8?B?R0pQemg0cWhRM3FOQTRVc3NZSmRIQ1VsVDl1bHJNR3RWMHJLV0tKU2E0Y09i?=
 =?utf-8?B?RVlMQkk2MTB1V2VpZkE5ZEhtaTRBRmx3M3U3RnFzUmJQMWc4NXpGK082bGVv?=
 =?utf-8?B?dnZSa3F5SkJ0Y0ZheTQrOVBGZEhoanNOeUV4SEc3R1Rza0pRM0JLbjZ5RG9S?=
 =?utf-8?B?RWdCOCtmOHpQUXpWZlVsaExJWDFhWmVSOVVLcWppek9lNGJCMzhXSk0vdTda?=
 =?utf-8?B?M1grQ01yTFNLdTZtTno3MEllT3JvbDZlMlZrajBrZnRuVk5xWU9DTllqL0M3?=
 =?utf-8?B?azJPaGxQUG5BbERUV0JwNXk3Q3A2Wk44aGhFWkJNVHFUVTI4aFlJZzZWSlRN?=
 =?utf-8?B?K0FLK2NJcCswVlE2ekIvMEJsd2hEUFF3TGw3Q2h4ZEEwQ0RLTzNObVVIR2p1?=
 =?utf-8?B?RDA4Vjg4Z3BNcFhEMDVjUjVrT1EvK2NlY3hvTUN4YWtldzJ6R0VlQ05kVWor?=
 =?utf-8?B?aDdhb1VieVB2VGswQkJwNXN2WC9rbkpENTUydHRKQUtDWkx4WmxHQ3VOK3oz?=
 =?utf-8?B?RS9OVC9KMitmZHJKbDlCem9rRFVwd3d3bExGSHUybzAyRHBrQU9acTB5VmZh?=
 =?utf-8?B?QlpQMVVmdnJYZFBSdGtKNFZaelNuV2VMQmJJL3VQUHBlZytiL1BDdz09?=
X-OriginatorOrg: citrix.com
X-MS-Exchange-CrossTenant-Network-Message-Id: 1c1783ff-97fd-47f5-a0c8-08dea1de9a07
X-MS-Exchange-CrossTenant-AuthSource: CH7PR03MB7860.namprd03.prod.outlook.com
X-MS-Exchange-CrossTenant-AuthAs: Internal
X-MS-Exchange-CrossTenant-OriginalArrivalTime: 24 Apr 2026 08:50:57.4692
 (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: 2XQcZxrMegSAoBEeSzur3S8mGIzawP1IHENhb5RWLPtsFFX/IXLWm8Y6BY380xkxO4mD2AqZXiQ///CHCpfDYw==
X-MS-Exchange-Transport-CrossTenantHeadersStamped: SJ2PR03MB7426
X-purgate-ID: tlsNG-33051d/1777020662-48BA8938-3BBD6C4B/0/0
X-purgate-type: clean
X-purgate-size: 4305

On Mon, Apr 06, 2026 at 03:11:58PM -0400, Stewart Hildebrand wrote:
> Currently, Xen vPCI refuses BAR writes if the BAR is mapped in p2m. If
> firmware initializes a 32-bit BAR to a bad address, Linux may try to
> write a new address to the 32-bit BAR without disabling memory decoding.
> Since Xen refuses such writes, the BAR (and thus PCI device) will be
> non-functional.
> 
> Allow the hardware domain to issue 32-bit BAR writes with memory
> decoding enabled. This increases the compatibility of PVH dom0 with more
> hardware.
> 
> Note that Linux aims at disabling memory decoding before writing 64-bit
> BARs. Continue to refuse 64-bit BAR writes in Xen while those BARs are
> mapped for now to avoid mapping half-updated BARs in p2m.

While Linux does the disabling for 64bit BARs, I wonder if at some we
will need to handle 64bit BAR writes anyway for other OSes, specially
with domU support.

> Resolves: https://gitlab.com/xen-project/xen/-/issues/197
> Signed-off-by: Stewart Hildebrand <stewart.hildebrand@amd.com>
> ---
> v3->v4:
> * rebase on dynamically allocated map queue
> 
> v2->v3:
> * minor tweaks for fixed number of map/unmap slots
> 
> v1->v2:
> * rework on top of queued BAR map/unmap operation machinery
> 
> RFC->v1:
> * keep memory decoding enabled in hardware
> * allow write while memory decoding is enabled for 32-bit BARs only
> * rework BAR mapping machinery to support unmap-then-map operation
> ---
>  xen/drivers/vpci/header.c | 32 +++++++++++++++++++++++---------
>  1 file changed, 23 insertions(+), 9 deletions(-)
> 
> diff --git a/xen/drivers/vpci/header.c b/xen/drivers/vpci/header.c
> index 20fe380552f4..dc4f585b4e40 100644
> --- a/xen/drivers/vpci/header.c
> +++ b/xen/drivers/vpci/header.c
> @@ -670,6 +670,7 @@ static void cf_check bar_write(
>  {
>      struct vpci_bar *bar = data;
>      bool hi = false;
> +    uint16_t cmd = 0;
>  
>      ASSERT(is_hardware_domain(pdev->domain));
>  
> @@ -683,19 +684,29 @@ static void cf_check bar_write(
>          val &= PCI_BASE_ADDRESS_MEM_MASK;
>  
>      /*
> -     * Xen only cares whether the BAR is mapped into the p2m, so allow BAR
> -     * writes as long as the BAR is not mapped into the p2m.
> +     * Allow 64-bit BAR writes only when the BAR is not mapped in p2m. Always
> +     * allow 32-bit BAR writes.
>       */
>      if ( bar->enabled )
>      {
> -        /* If the value written is the current one avoid printing a warning. */
> -        if ( val != (uint32_t)(bar->addr >> (hi ? 32 : 0)) )
> -            gprintk(XENLOG_WARNING,
> -                    "%pp: ignored BAR %zu write while mapped\n",
> -                    &pdev->sbdf, bar - pdev->vpci->header.bars + hi);
> -        return;
> -    }
> +        if ( bar->type == VPCI_BAR_MEM32 )
> +        {
> +            if ( val == bar->addr )
> +                return;
>  
> +            cmd = pci_conf_read16(pdev->sbdf, PCI_COMMAND);
> +            modify_bars(pdev, cmd, false, false);
> +        }
> +        else
> +        {
> +            /* If the value written is the same avoid printing a warning. */
> +            if ( val != (uint32_t)(bar->addr >> (hi ? 32 : 0)) )
> +                gprintk(XENLOG_WARNING,
> +                        "%pp: ignored BAR %zu write while mapped\n",
> +                        &pdev->sbdf, bar - pdev->vpci->header.bars + hi);
> +            return;
> +        }
> +    }
>  
>      /*
>       * Update the cached address, so that when memory decoding is enabled
> @@ -715,6 +726,9 @@ static void cf_check bar_write(
>      }
>  
>      pci_conf_write32(pdev->sbdf, reg, val);

I don't think it matters a lot, but here we are changing the position
of the BAR in the host memory map while the mappings are still active.

> +
> +    if ( bar->enabled )
> +        modify_bars(pdev, cmd, false, true);
>  }
>  
>  static void cf_check guest_mem_bar_write(const struct pci_dev *pdev,

As it's in context here - we possibly want to do something similar
with guest writes now that we can?

While we might not have a user-case for domUs ATM, I think it's vest
if we also fix that use case at the same time that dom0 is fixed
(unless there's something that prevents it).

Thanks, Roger.


From xen-devel-bounces@lists.xenproject.org Fri Apr 24 08:58:37 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Fri, 24 Apr 2026 08:58:37 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1293316.1571109 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wGCMp-0002iA-Pe; Fri, 24 Apr 2026 08:58:31 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1293316.1571109; Fri, 24 Apr 2026 08:58: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 1wGCMp-0002i3-MQ; Fri, 24 Apr 2026 08:58:31 +0000
Received: by outflank-mailman (input) for mailman id 1293316;
 Fri, 24 Apr 2026 08:58:30 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <roger.pau@citrix.com>) id 1wGCMo-0002hx-Ga
 for xen-devel@lists.xenproject.org; Fri, 24 Apr 2026 08:58:30 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wGCMn-00E6Ip-TS
 for xen-devel@lists.xenproject.org; Fri, 24 Apr 2026 10:58:29 +0200
Received: from [10.42.69.1] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <roger.pau@citrix.com>)
 id 69eb30b4-bab6-0a2a0a5309dd-0a2a4501e8b2-6
 for <xen-devel@lists.xenproject.org>; Fri, 24 Apr 2026 10:58:29 +0200
Received: from [52.101.62.21]
 (helo=DM5PR21CU001.outbound.protection.outlook.com)
 by tlsNG-d62444.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.1)
 (envelope-from <roger.pau@citrix.com>)
 id 69eb30b4-c1f2-0a2a45010019-34653e1542b9-3
 for <xen-devel@lists.xenproject.org>; Fri, 24 Apr 2026 10:58:29 +0200
Received: from CH7PR03MB7860.namprd03.prod.outlook.com (2603:10b6:610:24e::14)
 by MN2PR03MB5280.namprd03.prod.outlook.com (2603:10b6:208:19e::17)
 with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9846.22; Fri, 24 Apr
 2026 08:58:25 +0000
Received: from CH7PR03MB7860.namprd03.prod.outlook.com
 ([fe80::f5ba:35df:1c9f:b343]) by CH7PR03MB7860.namprd03.prod.outlook.com
 ([fe80::f5ba:35df:1c9f:b343%4]) with mapi id 15.20.9846.021; Fri, 24 Apr 2026
 08:58: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=mbeiUwyO1E4oQZDP6OqEQ/7ja59QuHZhBdziKRemxq8UCdxJ8FIz6vQwSx2yWZbqMzH7vDLD5ZhTcHA0VKJGQDW4uYOKjQwHgUcTRfW1r+r/9jul/Uy5QD3QSraF3uyzTvNzD4drodLXqEJyDzB7mP7YeZ0x8oUkv3yCZdZOjl11HI2MZ7psU9vnnuD4feZaZgEtkaV2tKNO4Xkl1Deht2nzirLZulMXQlBEcvbpIgxoD5A75cry/01k1BlsKCl3PWu+Qu7F30X7PwdVEzan2lDhu96w56/tz4o0MtRL0FF1t+fK/jB4zZxQ4Z1GThhFMOoXNoOXxuM3YID8i/aBqg==
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com;
 s=arcselector10001;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1;
 bh=q30Qn+m5GPX6SjHc9+OHy2BFyepqWpqFl8i0NVVPmiM=;
 b=JxSbvqO43Fj2+gVUMRDgq9si4X0njwLnuUCx0xJeY9aKPLvkEUM/yugX5FSWtWewW4p4/KEhE3XiZoRB5T4Zi1ll6nrFYiCQ7hmCN3trVHmRDuU/bc8K8jYZUlSkfjrqQwG1wGZa5Q6hjTKvUUxGk+eMLj11FtJEvLj/XXSALPlMs2iihD6o577oOgvEgs44muIHmvnGG71cMH7t034cAocMUxIyMFWG11Q647wsQiTjRYs/ubMhOz3Srb7QQzuIR3u6gKP9zD6vWFrGWLOkA3jZWBRxu+O97EfPRAUIOM91qIy+0jnsbsD86QmdJGrouVcYACmA2itqDGmwa2fdfg==
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=q30Qn+m5GPX6SjHc9+OHy2BFyepqWpqFl8i0NVVPmiM=;
 b=ore26eyFukOfXoGtcgFQ7igxqEGW+sDE/jZR2x1cGOqNki8HVRmP3ayOeV/G0yIS9VgHYTnAs9nlk/Ra4H9PBDnB1kMqXJXQ95eN3i1OthNtQ3RTIbrfBfF3srY8nLEmuYcpxIYUDtLm56YQ/XFD5lFjgjSg/uGCOryJV97D/ds=
Authentication-Results: dkim=none (message not signed)
 header.d=none;dmarc=none action=none header.from=citrix.com;
Date: Fri, 24 Apr 2026 10:58:21 +0200
From: Roger Pau =?utf-8?B?TW9ubsOp?= <roger.pau@citrix.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>,
	Volodymyr Babchuk <Volodymyr_Babchuk@epam.com>,
	Jan Beulich <jbeulich@suse.com>,
	Andrew Cooper <andrew.cooper3@citrix.com>,
	Teddy Astie <teddy.astie@vates.tech>,
	Stewart Hildebrand <stewart.hildebrand@amd.com>
Subject: Re: [RFC PATCH 1/2] pci: Allow platforms to modify BAR adresses
Message-ID: <aeswrXLdbdK1wPMf@macbook.local>
References: <cover.1776756291.git.mykyta_poturai@epam.com>
 <a0f623792497ab92cfb64c50bd17d28138e10b99.1776756291.git.mykyta_poturai@epam.com>
Content-Type: text/plain; charset=utf-8
Content-Disposition: inline
In-Reply-To: <a0f623792497ab92cfb64c50bd17d28138e10b99.1776756291.git.mykyta_poturai@epam.com>
X-ClientProxiedBy: MR1P264CA0099.FRAP264.PROD.OUTLOOK.COM
 (2603:10a6:501:50::22) To CH7PR03MB7860.namprd03.prod.outlook.com
 (2603:10b6:610:24e::14)
MIME-Version: 1.0
X-MS-PublicTrafficType: Email
X-MS-TrafficTypeDiagnostic: CH7PR03MB7860:EE_|MN2PR03MB5280:EE_
X-MS-Office365-Filtering-Correlation-Id: 3525ed14-65e5-4c7b-9c61-08dea1dfa501
X-MS-Exchange-SenderADCheck: 1
X-MS-Exchange-AntiSpam-Relay: 0
X-Microsoft-Antispam:
	BCL:0;ARA:13230040|7416014|376014|366016|1800799024|18002099003|22082099003|56012099003;
X-Microsoft-Antispam-Message-Info:
	GpP6JrR01MUFE/jZ0pIMYyBVbtwDv3tkj111vgmd1v6QxP4fpVKlDiBXoqkqRbI54whoHpcBMhDO3XHaIoN/IHEEzCCq/yj7tDYXCucYcGKXupEs3AOT7rg93hYhYJM9sCr/rweEA5ECrJ0JVnyCMwhACA0ZT8Yuvb8xt/b4NLYxN9lCJnrXOKFsxBsbBBU5VGXyI0nbxreoNtvkOi8czE3xTyRAjczqzf55t/sxSacZ4GlLS08U6SjoI/6s4TTxzXN756lKg/cHIUW9PzaLEozo9o5MTsa454KV3gk9feXgIluewXu+D0+7JFehquia1jczYKRjTXIMz3ua3KeUAU+s7zqCVJzyaJbY5ptPpA+jMMA/jDIN6sNi/D5s8zAoTUCwtw6qDEoTALtnA+pwk90bAF7tG/Y2ZaO2O1/zSFbTtyl4oS2Pab0c9HzFyaC2DGLLnkvBNDmDLEnruBtnyWt2MEAYrPYZyZOuL1oI0IF0trm4rp2rVVME/NZE9S0LDhp9fDyJEbPusX4FIEZrvb3r98qoIbaLiN3tiHkGa/BXsh+V/+UFER7eN446dJO6Wdh5WV2Xwp8a6xZFjgdjRSMRgirKp5hbEsj72/B3WekhAaKskujSz4+WxYUiYcGkkO8J86Z8yhuxDAxrGB0+F7W+AxMG6fwfm3RxPBkDInle9IQKfxVJkm8sArEIfmkbOtaqsDWzIiG6njkCXlyxvV9IRqORXy5XmYMpfIZPjgU=
X-Forefront-Antispam-Report:
	CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:CH7PR03MB7860.namprd03.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(7416014)(376014)(366016)(1800799024)(18002099003)(22082099003)(56012099003);DIR:OUT;SFP:1101;
X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1
X-MS-Exchange-AntiSpam-MessageData-0:
	=?utf-8?B?Yi93MWE2NmtRemEyWEU2UWtnVzdLU1J4RWxCTms5VXY0Lzhmc3NTeWc4TCs4?=
 =?utf-8?B?L1JCQjNTTUFDZXIrVitSRmlOTmY3WmVQZ0ZrV3dyaXBLZzJNaW05bjZVN1lz?=
 =?utf-8?B?S0tuTGJJUnhUbWdmTFRzNG9DcldaaC9Rbm5ad1RlUmhTZVkrTUdGRktzSURx?=
 =?utf-8?B?N1M1USttVG41d2taaDBLSzkrSktpS212eGhsZ1hTOVR3emh0Q004bDVEcmw3?=
 =?utf-8?B?WDIxZUlmK3pXa3UxUjl0LzhqMFhMSS9PRS94YzVpZHFONVJVWTFaWFR4TlRO?=
 =?utf-8?B?dTVrVjFmUlhMbVFuVmN2OE5qT1l3WldGUi9seHU4Zk5XK3BpSmtaQzIvS05j?=
 =?utf-8?B?NFhBeDhxa1VzbUdBcTkxWFFQL0c2cThXclRwRGpvcWhJWTZlbGp6K2xiaG8w?=
 =?utf-8?B?Slk1ZXl1K2tmQUdINyt4Qk9DMzErMWt6NWxkS1dQbGtqU3JwWGI3Q3hZdFI2?=
 =?utf-8?B?Z2pCYzZvbnZLQVlrcWFpb2tJbTBSMmxwY2NWWmRYWkNsb2xKVVdkUk4yalR2?=
 =?utf-8?B?WDIvV2piVGVDM29sdG1zZFhLcjRVa0V0WFZVVjNmQll3ZXM3ZmVTK2RZUGVT?=
 =?utf-8?B?WXpTcEFOT1NsQW9YUmcvQ0t4Nnp5MmtjK3k4QTBRK0toU2hVR0svSHVSZnVj?=
 =?utf-8?B?ZlZKdjB4bDRkejAzZlhvRklQS2gvRlc4d2pyK3JZV0ZZTlF4R3hkbEVySitV?=
 =?utf-8?B?Q2tNaGpqTkRpaVBqdm53Vnd0NjRzeHlTZnRDOHpuUktCOCt1Y0lYanZldUp5?=
 =?utf-8?B?dGw5NGpYZlBUZFhVVWx1RUpkdHV3TlU5UmZQQTVnSHlYbkYvb2tCSUxEeVR0?=
 =?utf-8?B?UDh2T2lPTDJERGpQMlJQYjVpcVNabVVJdERZR0pBeFFTMm04dG5Cdm1Qakcz?=
 =?utf-8?B?ZkF3bkhFK1l5ZXJFV3pMY3ZrQkpQNjZFcHlITU54dHV6MTE1L2NxK1lqL3dm?=
 =?utf-8?B?OWVzNEthTWU0RmNXQkJaL3FjSnVUaW1VZHlwb05rMnFqUkhCMGo2S2xjZEMr?=
 =?utf-8?B?YVFEa0hOdXNCVGN5cVhDRGREVVR6S3NkNkJlemRsRmdiRlZwS3FvS1ZPL1B1?=
 =?utf-8?B?QzBJUDNxclJIcDF3UEhXZXNvYk9GM1d6K1B4SG1OUG04SVBBNjNaUzJ6aW03?=
 =?utf-8?B?cnNJZDBsNjZXWFI0NFR1S0UzSXc5cksvTHJKclUycDA4Wi9VRUo4RWxqZ0Fa?=
 =?utf-8?B?QTYzdXQ0MGh4ZS9BUGZPaVo2Q0JpeDdkQ1NLWmpGU0lqdGVqOGNNaS8yUnFY?=
 =?utf-8?B?aEZKSUd1My9PNXJnTk1VcmQxSkpWU0c0WVRrOEFNMGExZ0hKZXVXSHdwU2d1?=
 =?utf-8?B?Tkd6YnE4Vng1YUwyM1RPZ0tPMTRGQ1VsL1Z5T3hUOEtxZDl4Yk9UZWJ3TWVC?=
 =?utf-8?B?SnJUVVh5SzltNXcvbDZ0WUdRMGo0aUJOVEZrTnFVcnYxV2pORmhHOTl2emtu?=
 =?utf-8?B?Vzh6Mm15MzVNZ2w3Z2xTVXpiUmtOeWkrcDBFSFpKMWh4VUw2aW9tdnRUb1h6?=
 =?utf-8?B?L3hJekJSNFNzWGdXTEloMnhxS3pGVlJnWTU1SzZMU2xMNXVCR2N5SEJyRlVn?=
 =?utf-8?B?QlhvQjJBV3RXdmdvMmM2M1hjSzRGbHcyTjBKdzhHK0VsQ1NwcTRxN3pLSGF2?=
 =?utf-8?B?Y1dacTVuQWNUM0J1VU9mUVJ2TUxyVnRpQTlkQmViTFhlT0h5WDV6dkJwVXZJ?=
 =?utf-8?B?dnBDa294N2Urcnl5N3VOQm9Ec3cyQVIxMHNEMXpJQmRKaHRyLzU4MnJUYjE0?=
 =?utf-8?B?VlVwYVkrcEdPMHNuR1RuUU1QdTVLcllWZGJ0NWR1QUlkWkV0UTFERXA5aTNR?=
 =?utf-8?B?SWtjcjBuU2RGQ1FqNEsvck9Wamo5bnJydjVkYTVpeFJMNTQreVpHRG9GR3k5?=
 =?utf-8?B?Q0V5dkx6NG54RmwvWnA0NEkwSkRya3FQeEJWdWZiL0NrYjY5akN1U0ZyYTBt?=
 =?utf-8?B?THJ4S2JDWWJDOXVMaGswMWY3eXJxZC9YVmt1UERuUXZrNFgvaXhnVzVBcGRz?=
 =?utf-8?B?SExaMlArRmc1YTBVR3NOajYyUCtiVDFJcG03VUdwRlFQMU9EWUdsMkpVTUti?=
 =?utf-8?B?Y050d1lTR2RUMEtrejBkYjFSc1JkVWFZaWRKUmxpZFVxOGlabFo0aityTTBK?=
 =?utf-8?B?SS9rUXEwcjFjSFBnckgwYTR1QjRoaEd4YWROZGtRUjdDZWF4MFFnWVVOcWZ1?=
 =?utf-8?B?K0hQWTg3dDdMc3Vjc0xzUTJQWktaYVh5cTNWaW5FeEhPVXdRWU45aCtGLyt6?=
 =?utf-8?B?ZmlObXE2amhzYXdTUUxiT0ZGUisrNnJsMVhRUGd5ZTFRSitIRzJ0Z3E0YzVa?=
 =?utf-8?B?QjFQVzFMVnJBdHpMSm5zWVFjeFFLZ2wwQ2kwc014RmUyNWFUU2plUT09?=
X-OriginatorOrg: citrix.com
X-MS-Exchange-CrossTenant-Network-Message-Id: 3525ed14-65e5-4c7b-9c61-08dea1dfa501
X-MS-Exchange-CrossTenant-AuthSource: CH7PR03MB7860.namprd03.prod.outlook.com
X-MS-Exchange-CrossTenant-AuthAs: Internal
X-MS-Exchange-CrossTenant-OriginalArrivalTime: 24 Apr 2026 08:58:25.3186
 (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: LPlc/IYa//Vi+1VBzbtmDIMISdw9NsHNnwwRvH+urV9KiuBJVTIhEEZCwUeMH0NV5KAaKXuSJHhtVLaBOqUByA==
X-MS-Exchange-Transport-CrossTenantHeadersStamped: MN2PR03MB5280
X-purgate-ID: tlsNG-d62444/1777021109-BD06EFF4-0B236057/0/0
X-purgate-type: clean
X-purgate-size: 4464

On Tue, Apr 21, 2026 at 07:57:14AM +0000, Mykyta Poturai wrote:
> This patch is a preparatory work for adding Region ID support on Renesas
> R-Car series boards. Add new host bridge op "fixup_bar" that allows
> platforms to modify BAR addresses before they are mapped.
> 
> Because x86 don't have support for PCI Host Bridge drivers, add another
> level of indirection in form of platform_pci_fixup_bar() function, that
> will call host bridge op on ARM and do nothing on x86.
> 
> Signed-off-by: Mykyta Poturai <mykyta_poturai@epam.com>
> ---
>  xen/arch/arm/include/asm/pci.h  |  3 +++
>  xen/arch/arm/include/asm/vpci.h |  9 +++++++++
>  xen/arch/arm/vpci.c             | 12 ++++++++++++
>  xen/arch/x86/include/asm/vpci.h |  6 ++++++
>  xen/drivers/vpci/header.c       |  2 ++
>  5 files changed, 32 insertions(+)
> 
> diff --git a/xen/arch/arm/include/asm/pci.h b/xen/arch/arm/include/asm/pci.h
> index 7c3211823f..398a4eb746 100644
> --- a/xen/arch/arm/include/asm/pci.h
> +++ b/xen/arch/arm/include/asm/pci.h
> @@ -80,6 +80,9 @@ struct pci_ops {
>      void (*init_bus_range)(struct dt_device_node *dev,
>                             struct pci_host_bridge *bridge,
>                             struct pci_config_window *cfg);
> +    void (*fixup_bar)(struct pci_host_bridge *bridge,
> +                      unsigned int bar_num,
> +                      paddr_t *addr);
>  };
>  
>  /*
> diff --git a/xen/arch/arm/include/asm/vpci.h b/xen/arch/arm/include/asm/vpci.h
> index 0cc6f5a105..f5c817a51c 100644
> --- a/xen/arch/arm/include/asm/vpci.h
> +++ b/xen/arch/arm/include/asm/vpci.h
> @@ -16,6 +16,10 @@ struct vpci_arch_msix_entry {
>  
>  int domain_vpci_init(struct domain *d);
>  unsigned int domain_vpci_get_num_mmio_handlers(struct domain *d);
> +
> +void platform_pci_fixup_bar(const struct pci_dev *pdev, unsigned int bar_num,
> +                            paddr_t *addr);
> +
>  #else
>  static inline int domain_vpci_init(struct domain *d)
>  {
> @@ -26,6 +30,11 @@ static inline unsigned int domain_vpci_get_num_mmio_handlers(struct domain *d)
>  {
>      return 0;
>  }
> +
> +static inline void platform_pci_fixup_bar(const struct pci_dev *pdev,
> +                                          unsigned int bar_num,
> +                                          paddr_t *addr)
> +{}
>  #endif /* CONFIG_HAS_VPCI */
>  
>  #endif /* ARM_VPCI_H */
> diff --git a/xen/arch/arm/vpci.c b/xen/arch/arm/vpci.c
> index d41aa383a8..ec6efec22e 100644
> --- a/xen/arch/arm/vpci.c
> +++ b/xen/arch/arm/vpci.c
> @@ -189,6 +189,18 @@ unsigned int domain_vpci_get_num_mmio_handlers(struct domain *d)
>      return 1;
>  }
>  
> +void platform_pci_fixup_bar(const struct pci_dev *pdev,
> +                                          unsigned int bar_num,
> +                                          paddr_t *addr)
> +{
> +    struct pci_host_bridge *bridge = pci_find_host_bridge(pdev->sbdf.seg, pdev->sbdf.bus);
> +
> +    if ( bridge->ops->fixup_bar )
> +    {
> +        bridge->ops->fixup_bar(bridge, bar_num, addr);
> +    }
> +}
> +
>  /*
>   * Local variables:
>   * mode: C
> diff --git a/xen/arch/x86/include/asm/vpci.h b/xen/arch/x86/include/asm/vpci.h
> index c501ff1709..a05b70abbf 100644
> --- a/xen/arch/x86/include/asm/vpci.h
> +++ b/xen/arch/x86/include/asm/vpci.h
> @@ -16,6 +16,12 @@ struct vpci_arch_msix_entry {
>      int pirq;
>  };
>  
> +/* X86 does not require PCI BAR modifications */
> +static inline void platform_pci_fixup_bar(const struct pci_dev *pdev,
> +                                          unsigned int bar_num,
> +                                          paddr_t *addr)
> +{}
> +
>  #endif /* X86_VPCI_H */
>  
>  /*
> diff --git a/xen/drivers/vpci/header.c b/xen/drivers/vpci/header.c
> index a760d8c32f..d89e43354c 100644
> --- a/xen/drivers/vpci/header.c
> +++ b/xen/drivers/vpci/header.c
> @@ -882,6 +882,8 @@ int vpci_init_header(struct pci_dev *pdev)
>          bars[i].size = size;
>          bars[i].prefetchable = val & PCI_BASE_ADDRESS_MEM_PREFETCH;
>  
> +        platform_pci_fixup_bar(pdev, i, &bars[i].addr);

You do this for vpci_init_header(), but don't you also need to do it
for bar_write(), in case dom0 decides to relocate the BAR?

Also - I would assume that both the firmware and dom0 are aware of
this limitation, and hence wonder why you need this fixup in Xen?

Thanks, Roger.


From xen-devel-bounces@lists.xenproject.org Fri Apr 24 09:06:18 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Fri, 24 Apr 2026 09:06:18 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1293323.1571119 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wGCUA-0004mi-IH; Fri, 24 Apr 2026 09:06:06 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1293323.1571119; Fri, 24 Apr 2026 09:06: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 1wGCUA-0004mb-De; Fri, 24 Apr 2026 09:06:06 +0000
Received: by outflank-mailman (input) for mailman id 1293323;
 Fri, 24 Apr 2026 09:06:04 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <roger.pau@citrix.com>) id 1wGCU8-0004m3-PF
 for xen-devel@lists.xenproject.org; Fri, 24 Apr 2026 09:06:04 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wGCU6-00E81O-Oj
 for xen-devel@lists.xenproject.org; Fri, 24 Apr 2026 11:06:02 +0200
Received: from [10.42.69.8] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <roger.pau@citrix.com>)
 id 69eb3272-e002-0a2a0a5209dd-0a2a4508da4a-22
 for <xen-devel@lists.xenproject.org>; Fri, 24 Apr 2026 11:06:02 +0200
Received: from [40.93.201.46]
 (helo=CY3PR05CU001.outbound.protection.outlook.com)
 by tlsNG-c1860d.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.1)
 (envelope-from <roger.pau@citrix.com>)
 id 69eb3278-63b5-0a2a45080019-285dc92e9a93-3
 for <xen-devel@lists.xenproject.org>; Fri, 24 Apr 2026 11:06:01 +0200
Received: from CH7PR03MB7860.namprd03.prod.outlook.com (2603:10b6:610:24e::14)
 by MN6PR03MB7647.namprd03.prod.outlook.com (2603:10b6:208:4fa::20)
 with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9846.22; Fri, 24 Apr
 2026 09:05:59 +0000
Received: from CH7PR03MB7860.namprd03.prod.outlook.com
 ([fe80::f5ba:35df:1c9f:b343]) by CH7PR03MB7860.namprd03.prod.outlook.com
 ([fe80::f5ba:35df:1c9f:b343%4]) with mapi id 15.20.9846.021; Fri, 24 Apr 2026
 09:05: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=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=KQ3L1jZ+PDTBouejRM/TChBS/XbKWhneAzw1g0o+SCXvIa4pBG0lOF2vYd6GAFBRhPF1WiMr+UdXeFBvdlIZ+hhLW9D+pAA+Ie+2UWGS/pGIJ6YZc+H8Xe84wgAuiye2QGDd9rLixmb2kDPhL2Gm5Dmfh1AulbYNvT+H5XWxvR6lQlwBPYgxyTStTxqX+Kza2Gc74THW8V+m3VhU0wB9/UjzbMm2IbEM9g6prEj4+SmeCFGgcg3AHrUF04k2nGU6opdXHRvRUjELfDHt/WbeV7Nq4URzBocOiM7MGERXPGjZRLUM9TKoaspGq9ZqqkFs0uL2mrurqCWgvPTq0GByQg==
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com;
 s=arcselector10001;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1;
 bh=Ji1YEMzP233OD0vlz33sSjZWh80qoEbi1o+wqj7pvJA=;
 b=KBgbyHsT7OHyrWrt8jJPL+Y7MDhJOFQJJOoIGQxU9Yoq6CtuyVO/a/2rSmJyY188BleD4hE4R+YbbI6LE3pTkIxsj3RAW48G+zarbDqlDE5fyp8xl1UNtUKrj1gi4Sk6lXqBBufo6/oas4OrFSnxiOPHeUElvRUgx1Bhj+uc2+is/LctmBkMAAOAHg6CZNEEs0DgZ0nTEGrnhietpsRRS3C2DFNcbq9x8/FJFQLXdGJg9smtgVL3BZQ7Vunrp7jdv9nkA32XZ9KTCjJlmOWqzc82H7+ZCzMoV8hD0C/i/3QOuTlGWtg2jbaB4kk8NJKmi4zigPblntGAccC9mzhZbA==
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=Ji1YEMzP233OD0vlz33sSjZWh80qoEbi1o+wqj7pvJA=;
 b=m3RnXTq3EzreXGUKYr7dr5bIc9ROICPZIze5Wmk/PgDDlHc6t6JU67EPgBAL4lZWUKfXCsyiODHyGCQFB3jOWldkUiCfi0wW1OLpR7lNnK5Vd2ldVftdTROMsRyCuOXSp5oU7/sKEkts6E8gPlsW4rJO99ck9ti6Q/ETli6AreU=
Authentication-Results: dkim=none (message not signed)
 header.d=none;dmarc=none action=none header.from=citrix.com;
Date: Fri, 24 Apr 2026 11:05:56 +0200
From: Roger Pau =?utf-8?B?TW9ubsOp?= <roger.pau@citrix.com>
To: Teddy Astie <teddy.astie@vates.tech>
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>,
	Stefano Stabellini <sstabellini@kernel.org>
Subject: Re: [PATCH] x86/amd: Drop allow_unsafe parameter, tune down XSA-9
 mitigations
Message-ID: <aesydCALj_BSxJ1-@macbook.local>
References: <1776877188.8631fc262581453bbf619ec5b2062170.19db6223737000f373@vates.tech>
Content-Type: text/plain; charset=utf-8
Content-Disposition: inline
In-Reply-To: <1776877188.8631fc262581453bbf619ec5b2062170.19db6223737000f373@vates.tech>
X-ClientProxiedBy: MA2P292CA0002.ESPP292.PROD.OUTLOOK.COM
 (2603:10a6:250:1::18) To CH7PR03MB7860.namprd03.prod.outlook.com
 (2603:10b6:610:24e::14)
MIME-Version: 1.0
X-MS-PublicTrafficType: Email
X-MS-TrafficTypeDiagnostic: CH7PR03MB7860:EE_|MN6PR03MB7647:EE_
X-MS-Office365-Filtering-Correlation-Id: 5ba3fe08-1783-4140-f101-08dea1e0b363
X-MS-Exchange-SenderADCheck: 1
X-MS-Exchange-AntiSpam-Relay: 0
X-Microsoft-Antispam:
	BCL:0;ARA:13230040|366016|376014|1800799024|18002099003|22082099003|56012099003;
X-Microsoft-Antispam-Message-Info:
	uuZq+v5YGZG3AqLxb526Nnw5yVPdF8CX87mzEqx1OoTXGbekd3E/Jz/ZWqLTZ/OsgXdS/evQj/aYXBTyBgwPXMm9gvMqcJ6sJzNePMYMYgzikkXbKlsoga6SuMmqNOthpeyjuoU0/ccud8QNjwwYzk7Nkr9cMFmsn3c0DR7abFc8J2Zb2dgCDFyEXv/uAnuio2laIiFfhQfHK1xTwO5/ibSLkhAkHLHBO5fxRe2NV27FdSv03hkW37eswsIplwVFpNRODqZmd6xcLM0AQSmF/fWUfARJO5cqZ3UMdNM7qTWfrz8EEnfb6UoE0FCYaCyOvwD5d2bjeHN1BKSOYHdkjocvuzS+nDB1llxY7OrpG9hMQ/PwwSJHxtzy4eGFCcZsXQIKFc9O+PYtzWSWoHWzxG+Z2XsMF922JDeYNNOgzvTV+DSI+uiJx6x6mC+u7JhyDEzycjzRweoU6P6B8daJ8H1cESL91Hywks2EfavjuNtKz36rZbz2/y1KCSMERIrMJorxVde7J8vPL8U5MeEozeQm2rj5yKFSfpzotXCqlIGZJfv2dHT7jIonqUhU2FWxKNsdA+jqhcBABKSV8nKBNn3flM2hXuNS6bYVlsM5NZtgyRtM/B8iNb3ZD/x1LbKh1y/rZGZDsoUQt2IdSEnOmY7YClv1KR1bWhSemiKP/NvOP7VcHwFqvjBb6rHt3uayt3DSzQnQA07VHCtC84nldJUbjQIERB2pYxF/NMcxd14=
X-Forefront-Antispam-Report:
	CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:CH7PR03MB7860.namprd03.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(366016)(376014)(1800799024)(18002099003)(22082099003)(56012099003);DIR:OUT;SFP:1101;
X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1
X-MS-Exchange-AntiSpam-MessageData-0:
	=?utf-8?B?blFjSko4NnZPSDY1MUF1dWVlMmcxS25ZQ3R3WGlkRUZTSGtIYU0wMklnbmJ1?=
 =?utf-8?B?Wm4yZFlac3FxNTZWcHhtQ2ZJZzBXMWxHenp1VForM1pycXdEUVgzK1ZCak0r?=
 =?utf-8?B?cWhWSFErZjl5ZnVpeGxhUmdySURqZ2c1NEppOFZRaWM0QkpVRURKNFVnd1Vv?=
 =?utf-8?B?dFFSYW1XbDlnaWRjQzkweDhmZ2NzanFEMGZ3NTlMajhKcm9iVU1OMUhkeTVD?=
 =?utf-8?B?c2lHaXdjSG1SUW81YmwrZ0FXNXFEKy9MY3ZLaEQ4QkJzc2hyZFQ0dFdwZmhz?=
 =?utf-8?B?bktva0pHZ2F1NzRtV0lOMFMzOFhEenVZNXpqd3RyVGVzamVJaGxrbGR4WXRB?=
 =?utf-8?B?L1ZScnAzWG9FaEowaUl3QURXbXVsaTlHeUJXWGFDQTN0bVZkZ3pKR3B2aXZS?=
 =?utf-8?B?WW96RXQ1Q1Z0Q0pZSGhUVitKU3NTV1VLdWlSMXNGcVRGT2dXdmpBL0dZQkgz?=
 =?utf-8?B?bEYxaVlCUUFrQzFtYm1EOEh3dThEV2dnb01ZeEU0VnNsTVE5WnhKRXdXZEZ2?=
 =?utf-8?B?UGxzZ1RMdXNaY0Z0dHRUWUNScEk1RFN5RFdSV1h3VUdIdVRPMFdvZytSYXBI?=
 =?utf-8?B?VEV2Umo2RC9LczExYVB5TlZoZEZocjRkZnZJKzhFNHJXaFVpQm9qSGhhRzh2?=
 =?utf-8?B?QkpLQmRxdTdiMFAwOGR3dnI2dEwvYktidVluUjZBWENXVlphbkVwdzBrcDE1?=
 =?utf-8?B?WHJRTmRHRGxwV2QvNXREL1BpTndIY3IyTXJmUHVoMU1kM1VFMDl6Y09sRmd3?=
 =?utf-8?B?bnJKbG9CRFBqaDFtMFdabFliUkVncExUWDk1K29qVXkxSVZLYkh6dVIrT2Fw?=
 =?utf-8?B?ZExpTm1IUHFRTjcwNnhiMU5zKzUyQ1h1OEx3WmNzR1paeWtCYmhXRU5jaWJn?=
 =?utf-8?B?WHlhc1VxcU9EMlZaTTREdWpqNVdQN2Y4Q29UVmloM25yNnRCL1RMVHJGZytl?=
 =?utf-8?B?V0lUTFQxUXFkSWhjaUZJdW5kc21iQml4Sm5VUml3bVJBNHA1OHRvN3RzZzY5?=
 =?utf-8?B?MkhuQ0RBdGZoajI0bWZTQWo2UUpvd2F4UmkxN25kY2lQV3hheGROUEVIbWRo?=
 =?utf-8?B?blFvUEp1dmd3RnNHWHRHd2p1SlF4WStKSGN5emNnd0RVd3l1SWZXaThRdmtN?=
 =?utf-8?B?dnp3NkdIVUpQVGllMDdFQXN4MmNUZGR0UEl4SWVDRHdwT0ducDdCSU5GUGd4?=
 =?utf-8?B?N2JOazIzN3RZYmY3QVhqZ0U2cktJaU1qRHczMlBja1E1cXZwT2MzcWs2SWJj?=
 =?utf-8?B?UzY2RXYzM01LVUVNV3RvbTVjTjcrR20ycFhDblZHN2dDUEtHcXN4a1pqMWF5?=
 =?utf-8?B?RFI3blZWWEk2ZDRYZVZmOXVMTUxQNUZRcW5aR3c2bHhpS0w4NWswQkNsQi9R?=
 =?utf-8?B?QnN5WW5CcjJNZmNYajJaRnZvNFpvSGlVVnpjVnUydHdvaHVIK2xCTm9SUEJp?=
 =?utf-8?B?WHVzc3RPM1V0OGMrRDZQellqbGluUnNwSUdVcDJwT3dDRkxGNTBDamx0bXpo?=
 =?utf-8?B?RDBmYTZyQkYwRG1ibWRtOVBDcVdUNWEzWWNaVG5MY0Fkb0pTa3pkSk1jREF1?=
 =?utf-8?B?YzBaQm5YSWpNV3F0NVZpKzA0ZmxLRW5ZUlpmNm9VZXNvaFkvMGhJNStHQ05L?=
 =?utf-8?B?TS9RUXVvamFUR0JySjlQUnpHelJDcENvcG9PNHk5KzNjL1BMTlJLQXdOYks0?=
 =?utf-8?B?elRmOEFJdVozZTdGMzducUh0d3RabnNUdFlidnF1aEFVNHQ5ZnZFcnc0WGdh?=
 =?utf-8?B?czZQUWY0NWNvQy94WFZzaVVuWDVES1cwOXBYdFUzc0xFRVVxZmxYMXg0ZmxF?=
 =?utf-8?B?N09YMG8xMEp2OVJ0d01zVUtVamw4ZEFrR2xDMHJvbndsNnREZFZ1bzg5RTVz?=
 =?utf-8?B?STI1Yk9ES29qSFFSUVdIcnhBS2tWNkdhcVNoalZCZ1ByRFd0YnozTU1zcnVD?=
 =?utf-8?B?Vm5XUm8zMVh4dlBacWlsSy8rbkEwaTk0L09XSk1qRUtyekttMEk2ZWhEVm85?=
 =?utf-8?B?VkZVek9qSXdVdTUyeGc3VHhPZEJLZFhaWUdzQzRoRkNJRXgzQTVjcE9qRWdW?=
 =?utf-8?B?cVN0MWJ0SkJRelk4a29nTENhSi9jWmlLckdoN3VmQVRxeFlMOWRpYnZmeUV3?=
 =?utf-8?B?U0wrVC9QTnhtS0RmMTg5SUIvMnNsMzR3MXJrNmpDZWpIdXZvcEcvSmFzMmh3?=
 =?utf-8?B?OEtwSDNmajBDd0lMVkwwSkk4YmxwWEl4QmFMOTgrOWNXTkFmeHFlK0l3U2gz?=
 =?utf-8?B?NGZ5R051MFVzOCttc0h3L3FjYklhT2lMbjBJSXdJSWUzTGJ4d3RpTzVxeVBv?=
 =?utf-8?B?VUJIY2VxOEN1RWpNbm1NamNVbjcxZkQwM3NIT0dUYXRTVGpvWEdXZz09?=
X-OriginatorOrg: citrix.com
X-MS-Exchange-CrossTenant-Network-Message-Id: 5ba3fe08-1783-4140-f101-08dea1e0b363
X-MS-Exchange-CrossTenant-AuthSource: CH7PR03MB7860.namprd03.prod.outlook.com
X-MS-Exchange-CrossTenant-AuthAs: Internal
X-MS-Exchange-CrossTenant-OriginalArrivalTime: 24 Apr 2026 09:05:58.9316
 (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: Iofnkgo5rSNCDxvbPrfl1MV4uKApIrZg5E9jRJmANuz17Lo2m42d12pOmnNiscu+7P0YHARIq+teaxWQScDSvQ==
X-MS-Exchange-Transport-CrossTenantHeadersStamped: MN6PR03MB7647
X-purgate-ID: tlsNG-c1860d/1777021562-39360DB1-B27C5065/0/0
X-purgate-type: clean
X-purgate-size: 3907

On Wed, Apr 22, 2026 at 06:58:06PM +0200, Teddy Astie wrote:
> XSA-9 mitigations prevents Xen from properly running if a affected CPU
> is detected. While the vulnerability has no mitigations (aside not running
> 64-bits PV guests), it's only outcome is a DoS.
> 
> There is no real point in preventing Xen from working here and it would
> be preferable to just log the vulnerability to the user so it can act
> appropriately.
> 
> Also reword the errata message regarding that it only affects PV64 guests.
> 
> Signed-off-by: Teddy Astie <teddy.astie@vates.tech>
> ---
> It's hard to tell whether or not we would want to drop allow_unsafe, but
> currently, Xen is allowed to boot with XSA-304 mitigations disabled
> (intentionnaly) which has a similar outcome than this one.
> 
> From a user standpoint, preventing the system to boot or starting guests is
> too extreme and would be in practice seen as a bug, even if it's justified
> policy which can be overriden.
> 
>  docs/misc/xen-command-line.pandoc | 12 ------------
>  xen/arch/x86/cpu/amd.c            | 21 +++++----------------
>  xen/arch/x86/domain.c             | 14 --------------
>  xen/arch/x86/include/asm/amd.h    |  2 --
>  4 files changed, 5 insertions(+), 44 deletions(-)
> 
> diff --git a/docs/misc/xen-command-line.pandoc b/docs/misc/xen-command-line.pandoc
> index 6c77129732..04d206f919 100644
> --- a/docs/misc/xen-command-line.pandoc
> +++ b/docs/misc/xen-command-line.pandoc
> @@ -133,18 +133,6 @@ resume.
>  `s3_mode` instructs Xen to set up the boot time (option `vga=`) video
>  mode during S3 resume.
>  
> -### allow_unsafe (x86)
> -> `= <boolean>`
> -
> -> Default: `false`
> -
> -Force boot on potentially unsafe systems. By default Xen will refuse
> -to boot on systems with the following errata:
> -
> -* AMD Erratum 121. Processors with this erratum are subject to a guest
> -  triggerable Denial of Service. Override only if you trust all of
> -  your PV guests.
> -
>  ### altp2m (Intel)
>  > `= <boolean>`
>  
> diff --git a/xen/arch/x86/cpu/amd.c b/xen/arch/x86/cpu/amd.c
> index 712734a6e7..f1f4a25754 100644
> --- a/xen/arch/x86/cpu/amd.c
> +++ b/xen/arch/x86/cpu/amd.c
> @@ -20,10 +20,6 @@
>  
>  #include "cpu.h"
>  
> -/* 1 = allow, 0 = don't allow guest creation, -1 = don't allow boot */
> -int8_t __read_mostly opt_allow_unsafe;
> -boolean_param("allow_unsafe", opt_allow_unsafe);
> -
>  /* Signal whether the ACPI C1E quirk is required. */
>  bool __read_mostly amd_acpi_c1e_quirk;
>  bool __ro_after_init amd_legacy_ssbd;
> @@ -1205,19 +1201,12 @@ static void cf_check init_amd(struct cpuinfo_x86 *c)
>  	if (c->family == 0x10)
>  		__clear_bit(X86_FEATURE_MONITOR, c->x86_capability);
>  
> -	if (!cpu_has_amd_erratum(c, AMD_ERRATUM_121))
> -		opt_allow_unsafe = 1;
> -	else if (opt_allow_unsafe < 0)
> -		panic("Xen will not boot on this CPU for security reasons"
> -		      "Pass \"allow_unsafe\" if you're trusting all your"
> -		      " (PV) guest kernels.\n");
> -	else if (!opt_allow_unsafe && c == &boot_cpu_data)
> +	if (cpu_has_amd_erratum(c, AMD_ERRATUM_121))
> +	{
>  		printk(KERN_WARNING
> -		       "*** Xen will not allow creation of DomU-s on"
> -		       " this CPU for security reasons. ***\n"
> -		       KERN_WARNING
> -		       "*** Pass \"allow_unsafe\" if you're trusting"
> -		       " all your (PV) guest kernels. ***\n");
> +			   "*** This CPU is affected with erratum 121"
> +			   " 64-bits PV guests are able to cause a DoS (XSA-9) ***\n");

We try to avoid splitting log messages, so that people can grep easily
for them.

I would also add a add_taint(TAINT_MACHINE_INSECURE); here.

I wonder however if an update of the advisory would also be needed, as
we are modifying the applied fix, and hence the text in the advisory
no longer matches the code in Xen.

Thanks, Roger.


From xen-devel-bounces@lists.xenproject.org Fri Apr 24 09:19:11 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Fri, 24 Apr 2026 09:19:11 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1293339.1571135 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wGCgj-0008Ra-MN; Fri, 24 Apr 2026 09:19:05 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1293339.1571135; Fri, 24 Apr 2026 09:19: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 1wGCgj-0008RT-JE; Fri, 24 Apr 2026 09:19:05 +0000
Received: by outflank-mailman (input) for mailman id 1293339;
 Fri, 24 Apr 2026 09:19:04 +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 1wGCgh-0008RN-VY
 for xen-devel@lists.xenproject.org; Fri, 24 Apr 2026 09:19:04 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wGCgf-004CWq-Qi
 for xen-devel@lists.xenproject.org; Fri, 24 Apr 2026 11:19:03 +0200
Received: from [10.42.69.7] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <andrew.cooper@citrix.com>)
 id 69eb3581-bab6-0a2a0a5309dd-0a2a4507ce90-12
 for <xen-devel@lists.xenproject.org>; Fri, 24 Apr 2026 11:19:03 +0200
Received: from [52.101.85.42]
 (helo=BYAPR05CU005.outbound.protection.outlook.com)
 by tlsNG-ef75cf.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.1)
 (envelope-from <andrew.cooper@citrix.com>)
 id 69eb3585-229c-0a2a45070019-3465552a0f60-3
 for <xen-devel@lists.xenproject.org>; Fri, 24 Apr 2026 11:19:02 +0200
Received: from CH8PR03MB8275.namprd03.prod.outlook.com (2603:10b6:610:2b9::7)
 by CH4PR03MB7697.namprd03.prod.outlook.com (2603:10b6:610:237::20)
 with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9846.22; Fri, 24 Apr
 2026 09:18:59 +0000
Received: from CH8PR03MB8275.namprd03.prod.outlook.com
 ([fe80::a70d:dc32:bba8:ce37]) by CH8PR03MB8275.namprd03.prod.outlook.com
 ([fe80::a70d:dc32:bba8:ce37%6]) with mapi id 15.20.9846.021; Fri, 24 Apr 2026
 09:18: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=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=U//UUp+U1xy/Xs4PKLqNFGsRsLMkU0+CrnEeb9p1od1K6bg6qdsS2BmF33Bdn9CT3O130R/Xr6Kq2riR08mcdjqpMCm+0mgLDfjENYRX7CekkVaY05sdBo71uJZPwCrBX2wdBQzhUWXvRpyHG17rDQvNcBk2U+mFD16GhIFM1TdYHeSSFVLF600mWJ0JWUBzBWNal0lEnOIKxcqxGTG4b7PcQ0+/P6cYLmY6ongU1hx5k/BuulUY90F4+3boCuStQZGnLGy9In9OOolA04dgzN3DSg8Q+nnleOzQxX4Rv71l96ZBv64vFOZJsOUDUIGW/rkOobFQKBf0AgA+vG5TyA==
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com;
 s=arcselector10001;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1;
 bh=vFUNOq35SS9TlXGJ1fGi37ywXBa40Ktwa2HkQYkPPtA=;
 b=wNqASm5AezAzef4+XGGMV3XWWJ9Nyb30q2Lw/ZIlDK+a6dKFlbMHNTnmOvJtICs1wQCF7W4tzV+fiBHhB8FTujtPqmfXkylnvfpM0bepWh0F3kwhrBGcJWsfTZJz1u2WYojZM7iYcQoBK123cVraGwdXuhJ+TA2JybX0UqIWAwhWTBvJlJfoxx/m18bDOcv/3iUQnar+2c+2KQuQAZeXqeJTY/ihE9a7rB6ngmRwFPcnaLPJnkJFhMgCnHqpZS1xQqScnh4OS72C2kUl+78pTipo8eUy12/dMKh2i22NZ9iUYv25ESrodExZ3xznl4XvyBEV3kPCHhwL3IeQpneyMg==
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=vFUNOq35SS9TlXGJ1fGi37ywXBa40Ktwa2HkQYkPPtA=;
 b=arVVJxLwWXVxixkTzxWgz+neYhArkT3NL+Wa8x07Wvc5PyX2kFudKXWKOsUnMS5n4+MsSENcbFmlUhMROG1TMG3K8i/qwxPO0/9RY/7pROpMYjD0QrQmZ5u1aNMzL7MnEtBVN9WvdaRVjrzwYgoAs89rTqcCFoZ8Sed/RTGn/PA=
Authentication-Results: dkim=none (message not signed)
 header.d=none;dmarc=none action=none header.from=citrix.com;
Message-ID: <60c94a2c-a414-4ba5-b22e-54beae3c25f3@citrix.com>
Date: Fri, 24 Apr 2026 10:18:56 +0100
User-Agent: Mozilla Thunderbird
From: Andrew Cooper <andrew.cooper3@citrix.com>
Subject: Re: [PATCH] x86/amd: Drop allow_unsafe parameter, tune down XSA-9
 mitigations
To: Teddy Astie <teddy.astie@vates.tech>, 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.pau@citrix.com>, Stefano Stabellini <sstabellini@kernel.org>
References: <1776877188.8631fc262581453bbf619ec5b2062170.19db6223737000f373@vates.tech>
Content-Language: en-GB
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: <1776877188.8631fc262581453bbf619ec5b2062170.19db6223737000f373@vates.tech>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
X-ClientProxiedBy: LO4P123CA0416.GBRP123.PROD.OUTLOOK.COM
 (2603:10a6:600:18b::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_|CH4PR03MB7697:EE_
X-MS-Office365-Filtering-Correlation-Id: 978621f4-e7f6-4ad9-3620-08dea1e284cf
X-MS-Exchange-SenderADCheck: 1
X-MS-Exchange-AntiSpam-Relay: 0
X-Microsoft-Antispam:
	BCL:0;ARA:13230040|1800799024|366016|376014|18002099003|22082099003|56012099003;
X-Microsoft-Antispam-Message-Info:
	Mde7VDmcvi8qj3JTOLi+pmvf4FE2BQ/rN9zmFKjwFkfOiJAK4K9ZpURkXNNIfc3pPnAZnRjGuFvhdcG5iZQ12X1KQ9RnVBjSvvOgY8swytd1qXdrsZZP1kucV1++3eDob1JA0uXRLVXTW99uu4gyQ7PvL85ZuB6XPOCxEGntFu3DWajXZSFKrTv3h8fIq6assFf6LH/s94CsXTBjcxnAASTETM84e8XV/Py5/FeBsC/7UAMCRCEfnEwoHSQnyhVQ+xHmNq8nHwMeG0l/nqtEuV9gom/NkcsIwDiK9cD89cVQLzEsvUHX+AnOWdv2QQ7pm87oFzj+He5LSaSJ3le1LjULOJpUIBeyp702d5b7OIy6Z9GHRR3OheIas0ndxLqV9NUOMM9Uoq7p7zI3D/OpaLkup5lql7djB2iVZJAAEHFtFs3rInnSLYZXluY5EYGhabmvpMxM+WIdJidahBrcZWyJgFKV+YjcQ/HWbfiofs7ZCEchOFUvfZqitjLRw9QdKMA+zOupbO1hPtZDtMW13ecr+/AUShLGLrT3mei46AofOJKyHxDiVjzFxc8CctVmXgckHOrD7T4KYw7mnbozcpEbWEIc3coH3mlwbtAtHT2AZeHkJ0MYf+7pf320mx83eDNTPXZLntjtVTZSlAflC9CU45+eQ6m0mgSlYbihOKEP/JhbVJRaEwUzt51Kxp1Yr4vowuj0aa0OxEl6BvBwIbjX2jD8GfE6FsjBvr4Rj0A=
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)(18002099003)(22082099003)(56012099003);DIR:OUT;SFP:1101;
X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1
X-MS-Exchange-AntiSpam-MessageData-0:
	=?utf-8?B?cFl3a3E2V2toeHcwcjZ1WmVxNEIyYmxHdExTQVVEdHdtc0pvelNGQks0bjlQ?=
 =?utf-8?B?b2hSUC9oWUdIbmZtTGpkbUFTU1AwRk9yV0poUlNac3BWLy84QlhlT1ZMRk5B?=
 =?utf-8?B?dnMzK2xCcXB6L1VEN2JHWVkvd25RNnc5YmNHZFVOS2xxUE9oaEljbE1yRVVX?=
 =?utf-8?B?YmdRNDlOWkh4NHhsSmpUVmxKV0MzRnY0VXRpL2lQS0RQLzJScmNxcm8yNWp2?=
 =?utf-8?B?SjM2eFZTTmt3a0hpVGVDV3UzMzB4VmpJWTFxT3d6TjFESHN3bTdWU1VLSGti?=
 =?utf-8?B?Zjh5L1FsdmJDdFVmWkc2RUswVVEvY3k2STlyN3NlTWdYck1DZytOMGVNUHlh?=
 =?utf-8?B?dnFqTmM5ZHZiUnU0UzZQaDRPQnVnQmFzNTRITnhpUzdsZi9xc3ZMbGJYTWVI?=
 =?utf-8?B?T2hXS1p6T1Nyb000MGhqS0FJUFpMVVNud3BrODlMYXhWd3pDbVN1c1RxTGd0?=
 =?utf-8?B?d3p6ak5HelhrU2pWYkdEUWZTNVkzNkJXUnp3c00wVCtpM0NGSmdPYVprRXYz?=
 =?utf-8?B?ZG8vbXNFeEcyWkJGUjVSc25MWUZldk9UR3F0NUNIUXRuaGxkUk5rNXpqSDR0?=
 =?utf-8?B?TWYxN25kM2FHM1JRU1FmS1RlcWVxcE5yMnhVdVFmT2xRK0FRY0R0MGM0WEJ6?=
 =?utf-8?B?Wml0aGJENmxwaGlIYkNwaUZEZHFkdy96OExpSittMmZ0QWxCQnZVYXFoUVZj?=
 =?utf-8?B?VWFPaUl0RnJTNWppVmlJQTMvSjRKem9Oalkvem5rUlgxbUFIb3V1bWw0OS9R?=
 =?utf-8?B?bnBGR1RDSlg4QVQ1REs4dmNpUkdQY1lWRmZrU2wyTU9zM1dLOGsrRUc2WTFC?=
 =?utf-8?B?Nmh4NWM5Y0tLY0xCeEp3cjVSN1JGN2JjeWFMem15c1ByVG1Xc2d4MExCRkJy?=
 =?utf-8?B?QVpVdzNoM0tYMFFqNUpNcFB1Wkh4aDgxOFdHdkZ6NW04bFd1SkJsNlh0eXV4?=
 =?utf-8?B?RjRqZFlKM0o5QVVnU2lha3NMaW1LaW1TQm96WDlvYytLTTBRdjIzN1hYYkJo?=
 =?utf-8?B?SU5Udkx5RWsyVml1cVY0TThZRmc2alROTUs5SDd6cDZYcHdhZG1ybFlYelIw?=
 =?utf-8?B?TmZpdG9pOWtQYWFDYjV0VXBpNmNEN0ZtcnRnNVc0SkdKSk5SSTVDZE1uTVNH?=
 =?utf-8?B?dUNYbVdkWHVIZVNMSW5DeG1SSlpGNmtCNXgvSUN2NEdsekJNaC9HNlN5TzVJ?=
 =?utf-8?B?Tyt5LzA1L3J3ZHZGb2RHOGxLSDBxdDhMNWh6ajBsWlBvQmVDdi93eW16L3ZR?=
 =?utf-8?B?UnJGZURybEMwWlhDeC9oR2c3bVY4b1dpQWpHaVdKbDFEY2p1NEk5aWZNSFJa?=
 =?utf-8?B?a2ZTL05FV3dLejFYeDVFWFVFVDVSTW1xSU5OK1NVS2RDUXpEd0V3U3N4REdt?=
 =?utf-8?B?ckZjQnlWNUVrZFMxZFY1VTVVY0pHeTRTUEpnZE9HQUJVdnNsYjB5SXJvRW9H?=
 =?utf-8?B?STV0WjdKeTdLd2o4aXY5KzBMcWt0Q0ZtR3YwWEszUW5sOHJtd0Jid0cwLzNa?=
 =?utf-8?B?Ull4VFZyVThIWkVQVExMcFJyczR4bEhaTVhWTWhPTkxvNDN4aldNNUkzMWxX?=
 =?utf-8?B?Y3JEdGZHNTNTY3c4ZkdKVStJYjJsS0Q1cUxCckMwNXRiRVY2UFJMbjhwemQr?=
 =?utf-8?B?SW1xcGpoMSs1bHYyWjg1TDYwSTJudEtiZG4rcHdGSk11dVZxbWk0QW0yODNN?=
 =?utf-8?B?YmFUazhWWk5nSTViZlF1UFMrOEFwZlR2VkgxM3dhSG9yMk5ld01GTVRzN0p0?=
 =?utf-8?B?TVBjczNXdUwwdXNMaTZwQzRwSm0wZDIySkE0VmRMUEdxeDNRNkVTZUpjQlQ3?=
 =?utf-8?B?RkliNWVUanV5MnNaNzZBMU9PNFhRMjMrTnJ6OVg4M0ZpVVBuMXJmRnlnZ1hI?=
 =?utf-8?B?UGVBcWFydStlU0FRbkVHcnNvQ2pibmZQWHluQWNvcE1JdlJWR3FPL1dDZ29y?=
 =?utf-8?B?L3p3emhGVXM2SlRlMjQ4ODgwYnhheXFKcDZsdmVpNkZGWXBTVUlkVFZIZElo?=
 =?utf-8?B?N3UxaEVFTHhwTUE5V2w1RDZWdG51Qy9kRkQzUERTUG9CUnk4SHEwRmtJbWV4?=
 =?utf-8?B?YTZrNXUzMDhpM3dFSnI2dG91aFhFT2xPd0ZrZG0xN214Rnc5TXExWWs3aVBO?=
 =?utf-8?B?MFFjRHB4R2paU2xGU0loUmZ6Y1E4b3VBSVBlbkFpeVZHUmVzRW5RSXM4TTBL?=
 =?utf-8?B?c1VwN0Z3VXZVTzNTbUd4dkx4U3RiR0dJazhGSm5ZZFFxblk2V05lT2V4U0JW?=
 =?utf-8?B?SElicGVHNzR0ZXJjaW9rWWhBbk5tc1hTdkQ5bUszek56U2ZxT2VCbUx0dW10?=
 =?utf-8?B?Ylp4M2d6MnlHS3JuWkJjUUt6NWdsVkJPd3NnQktMQmFURUY3cXdBd2ttRk41?=
 =?utf-8?Q?tnrrl171+jyNTDVc=3D?=
X-OriginatorOrg: citrix.com
X-MS-Exchange-CrossTenant-Network-Message-Id: 978621f4-e7f6-4ad9-3620-08dea1e284cf
X-MS-Exchange-CrossTenant-AuthSource: CH8PR03MB8275.namprd03.prod.outlook.com
X-MS-Exchange-CrossTenant-AuthAs: Internal
X-MS-Exchange-CrossTenant-OriginalArrivalTime: 24 Apr 2026 09:18:59.6849
 (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: eftfF2xRWUKP5hT0irV4vStcVF5KgmCKr0bckp+tLEVXOvJ7NBaM/GZ0FBvDGQVEpBqfFgcYDHE9SrmMTNDIZ/XIWp6Kw8eeQ5wL8cydTIQ=
X-MS-Exchange-Transport-CrossTenantHeadersStamped: CH4PR03MB7697
X-purgate-ID: tlsNG-ef75cf/1777022343-15458C48-77D3B104/0/0
X-purgate-type: clean
X-purgate-size: 1680

On 22/04/2026 5:58 pm, Teddy Astie wrote:
> XSA-9 mitigations prevents Xen from properly running if a affected CPU
> is detected. While the vulnerability has no mitigations (aside not running
> 64-bits PV guests), it's only outcome is a DoS.
>
> There is no real point in preventing Xen from working here and it would
> be preferable to just log the vulnerability to the user so it can act
> appropriately.
>
> Also reword the errata message regarding that it only affects PV64 guests.
>
> Signed-off-by: Teddy Astie <teddy.astie@vates.tech>
> ---
> It's hard to tell whether or not we would want to drop allow_unsafe, but
> currently, Xen is allowed to boot with XSA-304 mitigations disabled
> (intentionnaly) which has a similar outcome than this one.
>
> From a user standpoint, preventing the system to boot or starting guests is
> too extreme and would be in practice seen as a bug, even if it's justified
> policy which can be overriden.

There is a lot of history here, including for why the panic() is
actually completely unreachable.

I actually have a very similar patch, from almost certainly more than a
decade ago.  The difference is that now I'm a maintainer and in a better
position to say that this logic really shouldn't have been taken;
certainly not in this form.

Perhaps an easier justification is that there have been issues like AMD
erratum #121 prior (e.g. Pentium LOCK CMPXCHG) and post (Zen1 has a
related errata, can't remember it off the top of my head) that went
unaddressed.

There is a reason why most OSes blanket disallow using the page leading
into the non-canonical region.  It's rife with bugs.

~Andrew


From xen-devel-bounces@lists.xenproject.org Fri Apr 24 09:33:24 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Fri, 24 Apr 2026 09:33:24 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1293360.1571144 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wGCuU-0003t5-18; Fri, 24 Apr 2026 09:33:18 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1293360.1571144; Fri, 24 Apr 2026 09:33: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 1wGCuT-0003sy-TU; Fri, 24 Apr 2026 09:33:17 +0000
Received: by outflank-mailman (input) for mailman id 1293360;
 Fri, 24 Apr 2026 09:33:16 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <roger.pau@citrix.com>) id 1wGCuS-0003ss-3E
 for xen-devel@lists.xenproject.org; Fri, 24 Apr 2026 09:33:16 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wGCuP-004FeC-US
 for xen-devel@lists.xenproject.org; Fri, 24 Apr 2026 11:33:15 +0200
Received: from [10.42.69.11] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <roger.pau@citrix.com>)
 id 69eb38d9-bab6-0a2a0a5309dd-0a2a450be0cc-6
 for <xen-devel@lists.xenproject.org>; Fri, 24 Apr 2026 11:33:15 +0200
Received: from [40.107.208.20]
 (helo=PH0PR06CU001.outbound.protection.outlook.com)
 by tlsNG-42698a.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.1)
 (envelope-from <roger.pau@citrix.com>)
 id 69eb38d9-212f-0a2a450b0019-286bd0140e58-3
 for <xen-devel@lists.xenproject.org>; Fri, 24 Apr 2026 11:33:15 +0200
Received: from CH7PR03MB7860.namprd03.prod.outlook.com (2603:10b6:610:24e::14)
 by SA1PR03MB989229.namprd03.prod.outlook.com (2603:10b6:806:4df::24)
 with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9846.22; Fri, 24 Apr
 2026 09:33:12 +0000
Received: from CH7PR03MB7860.namprd03.prod.outlook.com
 ([fe80::f5ba:35df:1c9f:b343]) by CH7PR03MB7860.namprd03.prod.outlook.com
 ([fe80::f5ba:35df:1c9f:b343%4]) with mapi id 15.20.9846.021; Fri, 24 Apr 2026
 09:33: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=OqBsug8pmh7flRmteGQ1CQdRL6P2paqj6vVyxzyxFmbT6OqLJ7VVpJsuIExfbUt0Kn/p7UfQCVVXewY4bFXNwCjV/gbjF7o7QpHl4lKjCwT8ShK1hN2yLRs8YvS/wfA2ui6Uw+5qe53+gk2VJ4Uyp083niWkByjHQjB/KvCzj7hTQPz+TbMEsz4InMT8o+lbVzkrJK1IrV0Vq9mElxPgF4KT+ZEUQjexVjte3eENFgYFO90/6RfRbzkIVYPgq84Zik+wejBUbXrNI9PAm7Q21v6e0CWWVfKcuAI0rT0xnZcPIqPZdW3Q4yVXnQVcFm0PsMfBEYfJ7TnaPaBThkW8Iw==
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com;
 s=arcselector10001;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1;
 bh=2PkjFE5OCtlFkQQ/+7FBEENbQux1J5Go+P3YiSQzl6g=;
 b=KaM2Z8Q9pEU5Ptwq7QvdI+oh42ogjzCgqlvpNF6jUxPXIV46Fn9YT/dpSz4nrgFZZsrrlnbJNwHbo2554wIYDl4a+AEOG4JYc9+ggRCCyvUUAxFIjHTMwfJapJlZYRnc7nt8dJ5v82vzdBsrePKZGyI+y1lPFR/s/xrpZvyFaiDkRTp6iuybdQei7UQvTBabWa7rdEViUAGifmmAjiP8ax8QyJSIZfavxOMKvGMcEz1h4rUmeOWO8rcWiMBrjX1XliNRE4teSVfYoEosmQNqJQcDsfeMSqdOMbhubAOb8MONUq0MMsi42uYYm1ZzHR6+f0FvREalYMJHwd2spiUu3A==
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=2PkjFE5OCtlFkQQ/+7FBEENbQux1J5Go+P3YiSQzl6g=;
 b=cn0NlbJK/9GSQJU++iSwnWeMXZN7nw4ZR4rKgWZM3G5c1oueSDajmgEn2P11AurwEkOtbOMhEqRFRHffLQYcWGsypcsmoMoo5EMrbyf9i8xOO8OzgcK0Ll+60Un3bPAG8jjcjTxs7fu1e5ZZwWEwx0gPPpqW8vwiiXWRsuvomQQ=
Authentication-Results: dkim=none (message not signed)
 header.d=none;dmarc=none action=none header.from=citrix.com;
Date: Fri, 24 Apr 2026 11:33:08 +0200
From: Roger Pau =?utf-8?B?TW9ubsOp?= <roger.pau@citrix.com>
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] x86/cpuidle: split the max_cstate variable
Message-ID: <aes41F8s1XV8soUF@macbook.local>
References: <4b89f640-046a-49c1-95f1-947d98135e5b@suse.com>
 <aeZQ3FcNl_EsPTdE@macbook.local>
 <18030a33-5280-4c15-ae72-159ba2a25018@suse.com>
Content-Type: text/plain; charset=utf-8
Content-Disposition: inline
Content-Transfer-Encoding: 8bit
In-Reply-To: <18030a33-5280-4c15-ae72-159ba2a25018@suse.com>
X-ClientProxiedBy: MA3P292CA0036.ESPP292.PROD.OUTLOOK.COM
 (2603:10a6:250:46::15) To CH7PR03MB7860.namprd03.prod.outlook.com
 (2603:10b6:610:24e::14)
MIME-Version: 1.0
X-MS-PublicTrafficType: Email
X-MS-TrafficTypeDiagnostic: CH7PR03MB7860:EE_|SA1PR03MB989229:EE_
X-MS-Office365-Filtering-Correlation-Id: 76bfaae2-69f5-48ba-ca93-08dea1e48097
X-MS-Exchange-SenderADCheck: 1
X-MS-Exchange-AntiSpam-Relay: 0
X-Microsoft-Antispam:
	BCL:0;ARA:13230040|366016|376014|1800799024|18002099003|22082099003|56012099003;
X-Microsoft-Antispam-Message-Info:
	lTcfrprsuf+yZb2YzJRgwLBiTycMrYOD7WCIb8odx5Dy+GlGcDpYY84MXkRIb5xgaszHNLGUJ/tJSCAG7M+W5FCjyUd838JPl2kYGeHFlfXVXeeOoC6QfRlvTzzOJOv4xyDslLhfJIIn73MPJ/O1ffPZNorCmjeyD7s1S74a4/F2A6hB+uUazY6vFJtFmVErmYgeW/WA0JOiRYUqKCjG1Q6hkrlGPKFpuGK75QqTxDxZYE6muJ+y9kIQe3h3aTnVIAp/r0uUPERa3E0M6ZA6JSNKfu+rxvQJFu5DvRkZVz+pli4F8kGkDocFMM+V6i02W56Hs5d/fXcuQq3mA5/yBdvXE2zovbOjyeX6SgZQFsEhw3YmeIZeS7ImiO3Ucn0tzGeEcbAIDnexTpqyRI2NNg05smiV0P82HudVtIxtOKjKjbtP0jlLYJpvlv/ful2lZfOvawsGAeGtng/7o+1pp1pwOx4IUezmcWwzznw6RPjUb4gGSURGbXh0039oTlctbqbKtfG414iWfVkL4GrQIh0IziGCb7196v2nClazT9ogCuWQwIKJgFEn4ch1OwWY8VniattoKaOeVXtcdfi+l62qxuAUfiJraK10vHSj0C1x3XdMbsD+TfMnZw0WtBhQ4y8/AmT/LYNaxDfxLMbrrXWaGnq1epK+20KhcFKT4RIKAEiVtL2lg/Qh3oAeFucz8TAfU6KIYWDiUPLLEvF+aYGXVsbl9iSlNk4QpI47Y7M=
X-Forefront-Antispam-Report:
	CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:CH7PR03MB7860.namprd03.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(366016)(376014)(1800799024)(18002099003)(22082099003)(56012099003);DIR:OUT;SFP:1101;
X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1
X-MS-Exchange-AntiSpam-MessageData-0:
	=?utf-8?B?WDlmeXhPclExaU9yam03Y1BXZzdEL3RuR3FnVEUyNEQ4QTJSRGtRZjBpclNs?=
 =?utf-8?B?STkzdDI0Y1RHekJadXhKNTE5SDZGaGNpVnI1VDJ2b3MyWWNHMWRzU3NsSzdR?=
 =?utf-8?B?YWdDSGsweVpyT05zVEZWb2ZuWnloVW9yQjcxRGFMMDhudWVaeEtlTThJeElk?=
 =?utf-8?B?YTdmMnAwQUl1MUNHZy9CUFJua1F2bkl4ZjladklieHRaMXA3WFJ6VzA3aW1Y?=
 =?utf-8?B?eWd4RjVFc1ArUFNQbFRMdVZBUVFSMU9qMGhTK3ZNWnZNT0ZVL0ZRM2FZano3?=
 =?utf-8?B?SUhOb2NGOU03TlZKM2ZFRHNGek9INnNaLzROYmxRVnhDbmNSU0cweGJrYjJT?=
 =?utf-8?B?bHRBeVhoVDdldnJJQ2pNeG1MVzdoMk5LZU9jQVJzdzVoRjhKT0RsMmUxY3E3?=
 =?utf-8?B?czNLL294U3RIQzdkQmtCam5HNzZDV212aU56L0JsNWFaTmZmVWJaR0FhQkI0?=
 =?utf-8?B?QjN4MGlNNFUvQXNYZzBYY003MFdtRjJuRmQzOUJ6Z1E5M1NsYkFwdFUvb0oz?=
 =?utf-8?B?OU92enRrcEFRMzJYRU8vdjY4ZXd6Um1MTTVMSEdBN0d4UU9Tc3p0UDNCNVBT?=
 =?utf-8?B?THJrWWdSY2tLVW1HN0VWMDNlU1psNVpZZDlOeEh2UU5DVHd0aUlvMCtVZ0N3?=
 =?utf-8?B?MWpFM21qd2ZyM3R2dC9CVFREOVpBOVh1K2xiTFFmQVZPSTZ0L0YzVmYyTTlC?=
 =?utf-8?B?R3U4OUFoSUo2azU0a2hYeXJkN3llaVFiNTkrbUhqbVpWNnUrQkp2ZUhidEln?=
 =?utf-8?B?WmxYank5NTJnTDNZQW1pVmJTSm1iKzI2d0RhQnJDN0R3ODFvV0YwY1lPa3Fz?=
 =?utf-8?B?SXl2a3c0QUVIckZYOGJVQkVEdmNuTUU1M3BLZVU5SlFPMmlaMzAwSFc2c1E0?=
 =?utf-8?B?YkVaR202emNEckpSNGpLREsvVzVlMW1YUmhqUmZkZGpGNDJKSW5xaVVwakZv?=
 =?utf-8?B?NU8ybExZaDVYUWNDRkRoV1VoaEUyZGI3cFZrOVJPMWxVZXM0bGI0VHUxVVZh?=
 =?utf-8?B?SVFzOHNsTCs3UElJcDljYTVEOEppSm1pTUxQQ0VyRTIyT01WV2VQb1VqVndI?=
 =?utf-8?B?MDZ6bnNSZkRnbkZyT0pFeURMUCtqNkdkOHNXVWR6UzJTWmN4ZE9oQk8rOE1D?=
 =?utf-8?B?dUduZ21KeWtMaHZGdGdyVCs3eVFaRG16bThweTFGaWpsQ0QybXhaeEZEd1Nq?=
 =?utf-8?B?NExHYk1xdVRIOVpmYWVLWHI5blhwNWRhYW5idG13SjdSRVRIYXdrSUZPQmFm?=
 =?utf-8?B?Zjc4dFRFSWYvbzJ1THRuMEpBdWFQbEVTMlQ0ZjVYVVNJcUZDYUlmWEliSEFH?=
 =?utf-8?B?M2tVemx4ellCMVk3VzZ0NitJUUJSOVNEbG5mTmNMTkJOQ0x2dkY1T05QS2h1?=
 =?utf-8?B?eTE1TlQxQmY4allPUjQ5UVZFbTUranNPbFArbC9vT0wvWUlkbjBLYkpwMnJv?=
 =?utf-8?B?RXBqN05qVVVnMFBWM0htcThjUW81d3A5cFlSRW1FWHRZblpKeEtES1g4aHF6?=
 =?utf-8?B?cnpHbXlGVVcwMUtYMlRhZ2hsT2p4aTI5b1krMFUyVFdabS80NE1GWkVTY3F0?=
 =?utf-8?B?enhIZlA2aC8wTGNtbFNEQ3pyTjQ3WDEwOXJmcWw4TXZpT09ncUJHSEZkb0l5?=
 =?utf-8?B?U2xtSWpUT1VNeEZ0Qk4vZFc3eWdDaEpSZ1luL3ZRVUJyMWh0ak5uTlpXZjU5?=
 =?utf-8?B?RmtTSk5uQWxrQ08yUnZwN3VhYW5yRTdsWmFGL3BaanBjeE8raklBcS9UOHRv?=
 =?utf-8?B?SDZmVHprTlF6VWJhWjllL3FubUNlN2U0aFc4ZG9pMkxKOGFWWU10aVcwbHp4?=
 =?utf-8?B?ZjhoMjh2NkNSclNtTEVnd1VZWlI4VWlQLzZVZ3ZSRktHNVV5RXRMNHlmcXNV?=
 =?utf-8?B?NG5URUZuU0Y1QVI4NktldURSS0RZUFp4Q3lJc1ljWXJ3M2tNLzFUUi9lRWdH?=
 =?utf-8?B?VllNVUNodm9SMlZZaURkdmJlNFZLRDZYdkJlS01XdWxPbUx2RE9YSXFCemNN?=
 =?utf-8?B?WnZteWh3amZGQ0J2cktySUFNVXVjSGtSYUs3VzJhaGd2Z21tbDJ5R05PVjIy?=
 =?utf-8?B?aWdNaTR0bVlHdXA4SldYQWF3THdXNEkwdFgxZEpnOVNGMmIxcFhGTEViakVK?=
 =?utf-8?B?RDdyd2ZnSGxuUlk2Umd3TTRjWkZHWEcxb2lFUmNTUldrdUZsWTV0cGNqTWZp?=
 =?utf-8?B?eEhLYWJDNlRUY05la1p3VExjL1h1WUkwcDNFeFhKTFp3cXhWUEdVeWF6RzMr?=
 =?utf-8?B?UDBLdVN3TXhlekJsY29UdGhDNk1ZemxHbTF0a0NHbDRXWFI4ZmFzRGE1MjZD?=
 =?utf-8?B?Und5S3N5Q2gwelByRTZuY0JvaXpqYnQyczRkVlJmdjYzT3NRNVJ6UT09?=
X-OriginatorOrg: citrix.com
X-MS-Exchange-CrossTenant-Network-Message-Id: 76bfaae2-69f5-48ba-ca93-08dea1e48097
X-MS-Exchange-CrossTenant-AuthSource: CH7PR03MB7860.namprd03.prod.outlook.com
X-MS-Exchange-CrossTenant-AuthAs: Internal
X-MS-Exchange-CrossTenant-OriginalArrivalTime: 24 Apr 2026 09:33:11.7272
 (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: 3la+NuXz10L1Uoyg+xcUr4QkT+yTVFJgXHjsTRpDx85vS9fdgVVEIERjke1qbRDxLWJD/FgyWxztHTiYkWL+Cg==
X-MS-Exchange-Transport-CrossTenantHeadersStamped: SA1PR03MB989229
X-purgate-ID: tlsNG-42698a/1777023195-7F57BF3B-EA4A736D/0/0
X-purgate-type: clean
X-purgate-size: 7270

On Tue, Apr 21, 2026 at 09:34:32AM +0200, Jan Beulich wrote:
> On 20.04.2026 18:14, Roger Pau Monné wrote:
> > On Wed, Apr 08, 2026 at 01:34:43PM +0200, Jan Beulich wrote:
> >> @@ -690,18 +694,18 @@ static void cf_check acpi_processor_idle
> >>      u32 exp = 0, pred = 0;
> >>      u32 irq_traced[4] = { 0 };
> >>  
> >> -    if ( max_cstate > 0 && power &&
> >> +    if ( max_cstate() > 0 && power &&
> >>           (next_state = cpuidle_current_governor->select(power)) > 0 )
> >>      {
> >>          unsigned int max_state = sched_has_urgent_vcpu() ? ACPI_STATE_C1
> >> -                                                         : max_cstate;
> >> +                                                         : max_cstate();
> >>  
> >>          do {
> >>              cx = &power->states[next_state];
> >>          } while ( (cx->type > max_state ||
> >>                     cx->entry_method == ACPI_CSTATE_EM_NONE ||
> >>                     (cx->entry_method == ACPI_CSTATE_EM_FFH &&
> >> -                    cx->type == max_cstate &&
> >> +                    cx->type == max_allowed_cstate &&
> > 
> > I'm afraid I'm missing why this uses max_allowed_cstate instead of
> > max_state.
> 
> max_allowed_cstate is what needs using along with ...
> 
> >>                      (cx->address & MWAIT_SUBSTATE_MASK) > max_csubstate)) &&
> 
> ... max_csubstate, as both are driven by the "max_cstate=" command line
> option. Renaming max_csubstate to max_allowed_csubstate would be an
> option, but would incure yet more churn.
> 
> >> --- a/xen/arch/x86/cpu/mwait-idle.c
> >> +++ b/xen/arch/x86/cpu/mwait-idle.c
> >> @@ -1045,15 +1045,16 @@ static void cf_check mwait_idle(void)
> >>  	u64 before, after;
> >>  	u32 exp = 0, pred = 0, irq_traced[4] = { 0 };
> >>  
> >> -	if (max_cstate > 0 && power &&
> >> +	if (max_cstate() > 0 && power &&
> >>  	    (next_state = cpuidle_current_governor->select(power)) > 0) {
> >>  		unsigned int max_state = sched_has_urgent_vcpu() ? ACPI_STATE_C1
> >> -								 : max_cstate;
> >> +								 : max_cstate();
> >>  
> >>  		do {
> >>  			cx = &power->states[next_state];
> >> -		} while ((cx->type > max_state || (cx->type == max_cstate &&
> >> -			  MWAIT_HINT2SUBSTATE(cx->address) > max_csubstate)) &&
> >> +		} while ((cx->type > max_state ||
> >> +                          (cx->type == max_allowed_cstate &&
> > 
> > Indentation is weird for the above line IMO, you should use hard 3
> > tabs plus spaces afterwards, like the surrounding indentation?
> 
> Ouch, indeed.
> 
> >> +			   MWAIT_HINT2SUBSTATE(cx->address) > max_csubstate)) &&
> >>  			 --next_state);
> >>  		if (!next_state)
> >>  			cx = NULL;
> > 
> > Seeing max_cstate() is used in multiple places here, you might want to
> > introduce a local max_cstate variable?
> 
> Except that Misra doesn't like such naming, and any other name would feel
> odd to use.
> 
> >> --- a/xen/include/xen/acpi.h
> >> +++ b/xen/include/xen/acpi.h
> >> @@ -142,30 +142,33 @@ int acpi_gsi_to_irq (u32 gsi, unsigned i
> >>  
> >>  #ifdef	CONFIG_ACPI_CSTATE
> >>  /*
> >> - * max_cstate sets the highest legal C-state.
> >> - * max_cstate = 0: C0 okay, but not C1
> >> - * max_cstate = 1: C1 okay, but not C2
> >> - * max_cstate = 2: C2 okay, but not C3 etc.
> >> -
> >> - * max_csubstate sets the highest legal C-state sub-state. Only applies to the
> >> - * highest legal C-state.
> >> - * max_cstate = 1, max_csubstate = 0 ==> C0, C1 okay, but not C1E
> >> - * max_cstate = 1, max_csubstate = 1 ==> C0, C1 and C1E okay, but not C2
> >> - * max_cstate = 2, max_csubstate = 0 ==> C0, C1, C1E, C2 okay, but not C3
> >> - * max_cstate = 2, max_csubstate = 1 ==> C0, C1, C1E, C2 okay, but not C3
> >> + * max_{allowed,usable}_cstate sets the highest allowed / usable C-state, where
> >> + * "allowed" is command line / sysctl based.
> > 
> > Hm, this is a bit misleading, because max_usable_cstate is also
> > command line based (plus system errata).  What about:
> > 
> > "max_{allowed,usable}_cstate sets the highest allowed / usable C-state.
> > max_usable_cstate can only be set from the command line, while
> > max_allowed_cstate can be set from both command line and systcl."
> 
> Well. While I think I get your point, what I'm trying to get across is that
> max_usable_cstate is internally controlled (bounded by command line setting
> of max_allowed_cstate, but possibly forced lower than that internally). So
> maybe
> 
> "max_{allowed,usable}_cstate sets the highest allowed / usable C-state.
>  max_usable_cstate, while affected by the command line, is internally driven,
>  whereas max_allowed_cstate can be set from both command line and systcl."
> 
> ?

Sure LGTM.

> >> + * max_*_cstate = 0: C0 okay, but not C1
> >> + * max_*_cstate = 1: C1 okay, but not C2
> >> + * max_*_cstate = 2: C2 okay, but not C3 etc.
> >> + *
> >> + * max_csubstate sets the highest allowed C-state sub-state. Only applies to
> >> + * the highest allowed C-state.
> >> + * max_allowed_cstate = 1, max_csubstate = 0 ==> C0, C1 okay, but not C1E
> >> + * max_allowed_cstate = 1, max_csubstate = 1 ==> C0, C1 and C1E okay, but not C2
> >> + * max_allowed_cstate = 2, max_csubstate = 0 ==> C0, C1, C1E, C2 okay, but not C3
> >> + * max_allowed_cstate = 2, max_csubstate = 1 ==> C0, C1, C1E, C2 okay, but not C3
> >>   */
> >>  
> >> -extern unsigned int max_cstate;
> >> +extern unsigned int max_usable_cstate;
> >> +extern unsigned int max_allowed_cstate;
> >>  extern unsigned int max_csubstate;
> >>  
> >> +#define max_cstate() min(max_usable_cstate, max_allowed_cstate)
> > 
> > I would be tempted to drop the ending parenthesis so that you don't
> > need to adjust callers, but that's likely misleading, as then it would
> > need to be uppercase MAX_CSTATE.
> 
> I deliberately want to have the parentheses, to make sure all uses of
> max_cstate (without the parentheses) have been covered (by converting in
> whatever appropriate way). Which extends to possible backports. In a
> subsequent, not to be backported commit we could drop them again if so
> desired.
> 
> >>  static inline unsigned int acpi_get_cstate_limit(void)
> >>  {
> >> -	return max_cstate;
> >> +	return max_allowed_cstate;
> >>  }
> >>  static inline void acpi_set_cstate_limit(unsigned int new_limit)
> >>  {
> >> -	max_cstate = new_limit;
> >> -	return;
> >> +	max_allowed_cstate = new_limit;
> > 
> > Do we want to check the new limit doesn't exceed max_usable_cstate and
> > return -ERANGE or similar on failure?
> > 
> > After this change it's a bit weird to silently ignore invalid values
> > IMO.
> 
> I disagree. Those values may be valid, just not usable (i.e. they are
> still a valid upper bound, but we'd never go as high up). If people wanted
> to use the same settings across their fleet, undue (and confusing) errors
> might result on some of their systems if we did as you suggest. Plus we
> have always accepted arbitrarily large (and hence entirely meaningless)
> values anyway.

OK, fair enough.  With the minor above adjustments (indentation and
comment):

Reviewed-by: Roger Pau Monné <roger.pau@citrix.com>

Thanks, Roger.


From xen-devel-bounces@lists.xenproject.org Fri Apr 24 10:55:07 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Fri, 24 Apr 2026 10:55:07 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1293428.1571153 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wGEBP-0000dW-LO; Fri, 24 Apr 2026 10:54:51 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1293428.1571153; Fri, 24 Apr 2026 10:54: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 1wGEBP-0000dO-Gv; Fri, 24 Apr 2026 10:54:51 +0000
Received: by outflank-mailman (input) for mailman id 1293428;
 Fri, 24 Apr 2026 10:54:50 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <Luca.Fancellu@arm.com>) id 1wGEBO-0000dH-9J
 for xen-devel@lists.xenproject.org; Fri, 24 Apr 2026 10:54:50 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wGEBN-007EJq-MG
 for xen-devel@lists.xenproject.org; Fri, 24 Apr 2026 12:54:49 +0200
Received: from [10.42.69.12] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <Luca.Fancellu@arm.com>)
 id 69eb4bee-5cb7-0a2a0a5109dd-0a2a450cc848-30
 for <xen-devel@lists.xenproject.org>; Fri, 24 Apr 2026 12:54:48 +0200
Received: from [52.101.65.42]
 (helo=DU2PR03CU002.outbound.protection.outlook.com)
 by tlsNG-d25034.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.1)
 (envelope-from <Luca.Fancellu@arm.com>)
 id 69eb4bf8-62f1-0a2a450c0019-3465412a51d0-4
 for <xen-devel@lists.xenproject.org>; Fri, 24 Apr 2026 12:54:48 +0200
Received: from AS4P189CA0030.EURP189.PROD.OUTLOOK.COM (2603:10a6:20b:5db::17)
 by GVXPR08MB10519.eurprd08.prod.outlook.com (2603:10a6:150:152::21)
 with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9846.22; Fri, 24 Apr
 2026 10:54:38 +0000
Received: from AMS1EPF00000047.eurprd04.prod.outlook.com
 (2603:10a6:20b:5db:cafe::ed) by AS4P189CA0030.outlook.office365.com
 (2603:10a6:20b:5db::17) with Microsoft SMTP Server (version=TLS1_3,
 cipher=TLS_AES_256_GCM_SHA384) id 15.20.9846.22 via Frontend Transport; Fri,
 24 Apr 2026 10:54:38 +0000
Received: from outbound-uk1.az.dlp.m.darktrace.com (4.158.2.129) by
 AMS1EPF00000047.mail.protection.outlook.com (10.167.16.135) with Microsoft
 SMTP Server (version=TLS1_3, cipher=TLS_AES_256_GCM_SHA384) id 15.20.9846.18
 via Frontend Transport; Fri, 24 Apr 2026 10:54:38 +0000
Received: from DU2PR08MB7272.eurprd08.prod.outlook.com (2603:10a6:10:2d7::16)
 by DB9PR08MB7794.eurprd08.prod.outlook.com (2603:10a6:10:399::7) with
 Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9846.22; Fri, 24 Apr
 2026 10:53:33 +0000
Received: from DU2PR08MB7272.eurprd08.prod.outlook.com
 ([fe80::5d34:206f:373:a323]) by DU2PR08MB7272.eurprd08.prod.outlook.com
 ([fe80::5d34:206f:373:a323%6]) with mapi id 15.20.9846.021; Fri, 24 Apr 2026
 10:53: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=arm.com header.i="@arm.com" header.h="From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck"; dkim=pass header.s=selector1 header.d=arm.com header.i="@arm.com" header.h="From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck"
ARC-Seal: i=2; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=pass;
 b=WcDJGAZbaBtVB9L/EhNrkcEJNv/QVuEMVBrOL8ahCSprS+xx065wuNTVy1LNzj023/hKtAzS+ATL3yd41NaIi/feg2S84whyaMVQMOWQSRUn/WBKxchh7WcAS+aT/AQW+IxvZKFiiVYlHFlnjsU3Ld3l6TrRo+KtwdslliF/GoOuSgVFVeuotPHLzOS/jihphl6zR4Xky3Q/k37W8S4KH2TcT4Gl74e/TEJoLwRpSBpRfKUiqKBkUFWknUSGX0zDJCbWx+15FRufrQl5OZgOzX3SPfmQ4rb66gBVgXq1Wy3sel4P19v1GCHh7arBCzxM2ajZ42I++k6UmrEHLCquRg==
ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com;
 s=arcselector10001;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1;
 bh=f47WrSA1uLAtltaLJ6GExKhkHoIBde8Adao84rKGPAc=;
 b=VR8Tm/V7kyOvbwUP6GxtZwIIpx3AemQ1EuSSJEEW9k6NcwXGdeNlcoNaZy2r9YxLDrSSO19XJbsGHzhOoMjXlxDgVdp/q3NIfEMfpvzYmbTYaJrzxE4R8A37XWDYLV+/b21ju1iMtNOMHB2dWh3OJYWj4TdIMhAXC1y3APm+Jy4k71iWpqY8ayVh3yroXA7g75xLDQ5MutV618iMMGR5u3WxjTKBLvnpVMldUw+UUd9Qdn2+UkNv5r8e+RyVwADNzwiNE1OMm6++2UrNWS83Oj7qqFRmuB1r1nOvhKy2Nja3hB+RoSbGBcXQFr09NL7DwUVp77mXDYAElVYGHAZ7lA==
ARC-Authentication-Results: i=2; mx.microsoft.com 1; spf=pass (sender ip is
 4.158.2.129) smtp.rcpttodomain=gmail.com smtp.mailfrom=arm.com; dmarc=pass
 (p=none sp=none pct=100) action=none header.from=arm.com; dkim=pass
 (signature was verified) header.d=arm.com; arc=pass (0 oda=1 ltdi=1
 spf=[1,1,smtp.mailfrom=arm.com] dkim=[1,1,header.d=arm.com]
 dmarc=[1,1,header.from=arm.com])
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=arm.com; s=selector1;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck;
 bh=f47WrSA1uLAtltaLJ6GExKhkHoIBde8Adao84rKGPAc=;
 b=MZjSzosfPMCF0uk2tnt3IbXdkl84X9bwHa/5Cu2PZQcTVtQnZlE24PPJE3bg1Ok5ad573FWnU5qQMf7gDQO8XTXemEZGVdaYSYTLkhNjJ25X7xb/wN8mTkI44ZMukWiO5+RuG8g8R5apNpABk6c105h+k+G23ybLKLUeg0X3K9U=
X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 4.158.2.129)
 smtp.mailfrom=arm.com; dkim=pass (signature was verified)
 header.d=arm.com;dmarc=pass action=none header.from=arm.com;
Received-SPF: Pass (protection.outlook.com: domain of arm.com designates
 4.158.2.129 as permitted sender) receiver=protection.outlook.com;
 client-ip=4.158.2.129; helo=outbound-uk1.az.dlp.m.darktrace.com; pr=C
ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none;
 b=MqcN0Nj8GDOja+YiLnrwDobElJnuC+0WgLTIcIeUB4w+fnUQLsW6Jgv67ySbXpWTjeJ1PuqMKuQ7l+w2M965Mf0PpoWTmh6J0HZLmAmHJypqOIGs4QU78Fx9Om2a0ulf3wepVdDpPxZAaaLg3JrkteaE/dm6DNOaLSxtNI+GNY7Vf2n64Wv8iQ2PSokTslgCRJPj+3v7RgYtPGTS1jaW3TV4RkrfDrc3S+XeqXr4A7I95EANtg3a9OtxLJxLNhTfr/VLNUCQjffdhf8BctVDDVBp3jt0pOAFaPDqi7EoTMblUZ6s2pK2iyOdlQZBUHaOPbe32tXLv4LVHXnEQJZHzA==
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com;
 s=arcselector10001;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1;
 bh=f47WrSA1uLAtltaLJ6GExKhkHoIBde8Adao84rKGPAc=;
 b=yWQGqkyCS1dqvyxZtsgjllHTbswP93iOUQpak5GwsmMXhJboRb6r/fv7Z3WR7MSC8pFPPvtYvGbx4TyD01mjoJ+oTLVXHRKZcLFCgvtRHTHQ/swVfRkkBeI5ti6jM0y6jEm2hgXycWDnhrqyIWbT9hPfwl7CfQgVX17hUdYyHHA48X5RWl0K3GO7HEY2Bn+p0C1x82CaQN5DrwQiF6e2UIg/eDLj1y4fwezIp2ZOQc87k5mMCDv7nd42ef9T89rKD0hu1Bex13YLZXMINutXb0mkvtMB5JB0YCTKUyfqYYV+z6qnuNuPnXr8dzEuIKigT8YtLgW8hxCVP+Qp0EyR2g==
ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass
 smtp.mailfrom=arm.com; dmarc=pass action=none header.from=arm.com; dkim=pass
 header.d=arm.com; arc=none
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=arm.com; s=selector1;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck;
 bh=f47WrSA1uLAtltaLJ6GExKhkHoIBde8Adao84rKGPAc=;
 b=MZjSzosfPMCF0uk2tnt3IbXdkl84X9bwHa/5Cu2PZQcTVtQnZlE24PPJE3bg1Ok5ad573FWnU5qQMf7gDQO8XTXemEZGVdaYSYTLkhNjJ25X7xb/wN8mTkI44ZMukWiO5+RuG8g8R5apNpABk6c105h+k+G23ybLKLUeg0X3K9U=
From: Luca Fancellu <Luca.Fancellu@arm.com>
To: Mykola Kvach <xakep.amatop@gmail.com>
CC: "xen-devel@lists.xenproject.org" <xen-devel@lists.xenproject.org>, 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>, Jan Beulich <jbeulich@suse.com>,
	=?utf-8?B?Um9nZXIgUGF1IE1vbm7DqQ==?= <roger.pau@citrix.com>
Subject: Re: [PATCH v8 05/13] xen/arm: gic-v3: add ITS suspend/resume support
Thread-Topic: [PATCH v8 05/13] xen/arm: gic-v3: add ITS suspend/resume support
Thread-Index: AQHc09iXdDokLL12tkS/bPm2SonHDA==
Date: Fri, 24 Apr 2026 10:53:32 +0000
Message-ID: <FDA8FF59-989D-42A8-9E75-1300E0B5EBD0@arm.com>
References: <cover.1775125380.git.mykola_kvach@epam.com>
 <5a42b7c32fadf21262b8342f27e685916d0e5812.1775125380.git.mykola_kvach@epam.com>
In-Reply-To:
 <5a42b7c32fadf21262b8342f27e685916d0e5812.1775125380.git.mykola_kvach@epam.com>
Accept-Language: en-GB, en-US
Content-Language: en-US
X-MS-Has-Attach:
X-MS-TNEF-Correlator:
x-mailer: Apple Mail (2.3826.700.81.1.6)
Authentication-Results-Original: dkim=none (message not signed)
 header.d=none;dmarc=none action=none header.from=arm.com;
x-ms-traffictypediagnostic:
	DU2PR08MB7272:EE_|DB9PR08MB7794:EE_|AMS1EPF00000047:EE_|GVXPR08MB10519:EE_
X-MS-Office365-Filtering-Correlation-Id: cf30627c-726f-4560-0045-08dea1efe13e
x-checkrecipientrouted: true
nodisclaimer: true
X-MS-Exchange-SenderADCheck: 1
X-MS-Exchange-AntiSpam-Relay: 0
X-Microsoft-Antispam-Untrusted:
 BCL:0;ARA:13230040|366016|7416014|376014|1800799024|56012099003|18002099003|22082099003|18096099003|38070700021;
X-Microsoft-Antispam-Message-Info-Original:
 V+s7RtCpjfe4Me41eQPywv9nYSZTzw6s5U4EkOepJDqP71Gdjr08WMTidB+nQkipFunZr7gzwA0TK9/2RXSAwDgZKHHU4X2JVlkEdlHSX40WDDdgJwJKazVdeoTrM7mjlc1CxRBj0dKxOCdxfA1Fin41pKHpa7QAWWd+p1mRjtiTstJR3qvQMh6ofYt8MbEaKBMjBMkCVS1KfFWDkcU61USUq8Wdrda5Vwu0XMv05MNEihrdQ+DRRVHNbmUbLbdnoqND5azoB88Uzss1i/4tpfIAW6zy8tkHakl6pV9kjHOHjRvSJJmSUChW2tShtEzShme1yMHnoXnzSyuI9SjVqK+NkDzQswAtLIfFSLyoYoFwOKNeQz9bxCeyduJcHNVsWUKK0uMKkMwblih6arocu0aU4T2yM0FFwL9n/MkwrfrFuRD8v8dTm+dZp4KfXuFe42C1N+ju4S2pCpMxDueaCurzJod3HCN71uPlzovfWr5tFgXmP4mhPBxW9ZnJF6PhOo4+5egP0ek1TfiOcV8sszabPBhli9i6LFaCVJTQeQ1VOQJ2xuTgIHeMT2a7x1EsLzJIWGngswldwB1aqcB67fRqCT3WlwJ5AgHQvFq84PkTxyOF8xaQGT7yWBD528cZBFk+zXHT8uAUK7goBnA9/LaX0bjbS5goDGFaEocHIs2Y4/NEIqsda+HY8W9OK49kOxy+78FAVqkB2dhQltaX2sESv2VrSFaOhhyuJaADTuEdHk1Q5F681CjnhsvD9TcsZAujItniAXcalIyL+tpAC7tUhE7YDbP6nzwzCCi9zl4=
X-Forefront-Antispam-Report-Untrusted:
 CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:DU2PR08MB7272.eurprd08.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(366016)(7416014)(376014)(1800799024)(56012099003)(18002099003)(22082099003)(18096099003)(38070700021);DIR:OUT;SFP:1101;
Content-Type: text/plain; charset="utf-8"
Content-ID: <8482F0D98432484D9A09F463B157A3F3@eurprd08.prod.outlook.com>
Content-Transfer-Encoding: base64
MIME-Version: 1.0
X-Exchange-RoutingPolicyChecked:
 XZ9yl9FDNQ51WtLKscu8WI5qqF5w6++D9L1HqlzfRe2BpvQmnguTym2em9c4+BYpmditc1rYba0sYuQRYq6giCqy2s4QcT1EbgMi9A6EzCKnJlUxrEcytYoft8wqtSi3NPN3+KyfwlN+u/n0Ppm7mfQzDyue//ei2WMjQ88Akj7pL+7EfNrDIzYcUOdQIWW52lpDdngcsRaVIQAVsZfkM/t86YBGmG1tyIxS7rg4iuHjtXb4vn2HCZOI40A2ZXSkamTVReE7rA61SR0yY5EzcT39ZZflmCcpvfKMdOeMHTnV8snNcRZwlFAiY8v+C1qusoypqXOPgd74eTG7uckA5A==
X-MS-Exchange-Transport-CrossTenantHeadersStamped: DB9PR08MB7794
X-EOPAttributedMessage: 0
X-MS-Exchange-Transport-CrossTenantHeadersStripped:
 AMS1EPF00000047.eurprd04.prod.outlook.com
X-MS-PublicTrafficType: Email
X-MS-Office365-Filtering-Correlation-Id-Prvs:
	4b99e2a7-cd0e-4576-4ede-08dea1efba44
X-Microsoft-Antispam:
	BCL:0;ARA:13230040|7416014|376014|1800799024|82310400026|14060799003|36860700016|35042699022|18002099003|56012099003|22082099003|18096099003;
X-Microsoft-Antispam-Message-Info:
	JZawjjTRmDSRUhBHmTJOLLqJHg6b8WsJCFp+7s17Xp7d60AbmgY8wTWLNJ3Cl6tyBtsHvQC9EbaQKFWxBg5+B5HbO7lOMV09H9jH409Rry1dBWH2cbsD0ea37g/78+1OvVBfViHWSo3NiuHjM2eBLXwut/LRMKfsaJAuuQBGFte7wKpkF3DSO+6wxi/itUinfugZifaNVo7W8LjKeVtp0AHBJwLQqXG0bcrBs2LTFZfG+7QTYGDN6fGn/nxekNFMS90s1VFtlAsnWXBa+dXcXFd8S3m4DcZzrhIPn6pHg0BJD2AGdtomqs+fv/4GRSMv8J4bZd13CLD9pgZLDELTzy0LnrR/KdKqr5GAmj5it++1SMlf7NDaSDbZatzVl6B902n764ynNhLaN2SiLh9bGYvAYuH2Lo2OyzWbzBsYjM0ILzUEYfRSLsOPNuXQr/7EpuNuQxXQ00abTuIl8EUV9sAljgv1NjGs98nd4YOOFOKOliANDVN85ibnMnSlsi77g/0K8wCSzssKx831JM5H4RrdSqjhS1yG8m3aK+QBQxkSWB3A12aqc0JluHf9bro3wzxg6NLMA1my2paAuFJMxHbFXqOdOUvAET30ESQLNhDLADOTr/5SpbDjT1qI+pfGvHWUZMX93GAkDSqlYLeWj6W49stQM4P//s8ZjNIQMIc5HWy+olRxdX2hSVnoXIMWtwNPEkoPgy9tV7a0bJoqCcUX3Bf4zJxi4fuukAvBfOQ+0TsfXlTLNSs2AvJqGo6oK3bBxe9GS99LXQYgGOyfPQ==
X-Forefront-Antispam-Report:
	CIP:4.158.2.129;CTRY:GB;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:outbound-uk1.az.dlp.m.darktrace.com;PTR:InfoDomainNonexistent;CAT:NONE;SFS:(13230040)(7416014)(376014)(1800799024)(82310400026)(14060799003)(36860700016)(35042699022)(18002099003)(56012099003)(22082099003)(18096099003);DIR:OUT;SFP:1101;
X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1
X-MS-Exchange-AntiSpam-MessageData-0:
	TLZBjB66wRw4cbFtQ406DS2UgaIjkiB6MIVN+OQVUnxzmP7sDo0rHgXQn3lOiVFNUgKeyxKVQ+MC5o4OZRKK7KDgQgLtwwhacmytMfYEXwtu8Q8qObEncwY+ARtrv3B4uivYqAxMghyI4ROU7gtNydnXsVJW7Asfv6gVr4zjOHsegsnja7QSmdr8qrTdDyFfkuUlh6QSCAB6WTm0HBzOEHE8izLsgRtHH6a/qwcO4Y+m6Orsv9O7hFV93fDKIR3TIAGARLDPfYpzHJc4t5hFD/HKtopsXwyaJduC4uJtpxucg0hWvR45nvX1Oi473ztk3SEe2B3zlg3mVn8baVJpkS8LrwhUqH2MyTvtuF/iqSibSm3q8J3QthhcteIsfj2G/5PDJCkc9DZO5WiqqmIi+3pYzjyoEv6otynqxYBtAjHVaSP9oKCFJpThyag+XxVe
X-OriginatorOrg: arm.com
X-MS-Exchange-CrossTenant-OriginalArrivalTime: 24 Apr 2026 10:54:38.0198
 (UTC)
X-MS-Exchange-CrossTenant-Network-Message-Id: cf30627c-726f-4560-0045-08dea1efe13e
X-MS-Exchange-CrossTenant-Id: f34e5979-57d9-4aaa-ad4d-b122a662184d
X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=f34e5979-57d9-4aaa-ad4d-b122a662184d;Ip=[4.158.2.129];Helo=[outbound-uk1.az.dlp.m.darktrace.com]
X-MS-Exchange-CrossTenant-AuthSource:
	AMS1EPF00000047.eurprd04.prod.outlook.com
X-MS-Exchange-CrossTenant-AuthAs: Anonymous
X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem
X-MS-Exchange-Transport-CrossTenantHeadersStamped: GVXPR08MB10519
X-purgate-ID: tlsNG-d25034/1777028088-F4E06CF5-550F5613/0/0
X-purgate-type: clean
X-purgate-size: 10374

SGkgTXlrb2xhLA0KDQo+IE9uIDIgQXByIDIwMjYsIGF0IDExOjQ1LCBNeWtvbGEgS3ZhY2ggPHhh
a2VwLmFtYXRvcEBnbWFpbC5jb20+IHdyb3RlOg0KPiANCj4gRnJvbTogTXlrb2xhIEt2YWNoIDxt
eWtvbGFfa3ZhY2hAZXBhbS5jb20+DQo+IA0KPiBIYW5kbGUgc3lzdGVtIHN1c3BlbmQvcmVzdW1l
IGZvciBHSUN2MyB3aXRoIGFuIElUUyBwcmVzZW50IHNvIExQSXMga2VlcA0KPiB3b3JraW5nIGFm
dGVyIGZpcm13YXJlIHBvd2VycyB0aGUgR0lDIGRvd24uIFNuYXBzaG90IHRoZSBDUFUgaW50ZXJm
YWNlLA0KPiBkaXN0cmlidXRvciBhbmQgbGFzdC1DUFUgcmVkaXN0cmlidXRvciBzdGF0ZSwgZGlz
YWJsZSB0aGUgSVRTIHRvIGNhY2hlIGl0cw0KPiBDVExSL0NCQVNFUi9CQVNFUiByZWdpc3RlcnMs
IHRoZW4gcmVzdG9yZSBldmVyeXRoaW5nIGFuZCByZS1hcm0gdGhlDQo+IGNvbGxlY3Rpb24gb24g
cmVzdW1lLg0KPiANCj4gQWRkIGxpc3RfZm9yX2VhY2hfZW50cnlfY29udGludWVfcmV2ZXJzZSgp
IGluIGxpc3QuaCBmb3IgdGhlIElUUyBzdXNwZW5kDQo+IGVycm9yIHBhdGggdGhhdCBuZWVkcyB0
byByb2xsIGJhY2sgcGFydGlhbGx5IHNhdmVkIHN0YXRlLg0KPiANCj4gQmFzZWQgb24gTGludXgg
Y29tbWl0IGRiYTBiYzdiNzZkYyAoImlycWNoaXAvZ2ljLXYzLWl0czogQWRkIGFiaWxpdHkgdG8g
c2F2ZS9yZXN0b3JlIElUUyBzdGF0ZSIpDQo+IFNpZ25lZC1vZmYtYnk6IE15a29sYSBLdmFjaCA8
bXlrb2xhX2t2YWNoQGVwYW0uY29tPg0KPiAtLS0NCj4gQ2hhbmdlcyBpbiBWODoNCj4gLSBSZXdv
cmQgdGhlIENCQVNFUi9DV1JJVEVSIGNvbW1lbnQgdG8gbWF0Y2ggWGVuIGFuZCBkcm9wIHRoZSBz
dGFsZSBMaW51eA0KPiAgY21kX3dyaXRlIHJlZmVyZW5jZS4NCj4gLSBDbGFyaWZ5IHRoZSBsaXN0
X2Zvcl9lYWNoX2VudHJ5X2NvbnRpbnVlX3JldmVyc2UoKSBjb21tZW50Lg0KPiAtIEZhY3RvciBv
dXQgcGVyLUlUUyBoZWxwZXJzIGZvciBjb2xsZWN0aW9uIHNldHVwIGFuZCByZXN1bWUuDQo+IC0g
UmVzdG9yZSBlYWNoIElUUyBhbmQgcmUtZXN0YWJsaXNoIGl0cyBjb2xsZWN0aW9uIG1hcHBpbmcg
aW4gdGhlIHNhbWUNCj4gIGxvb3AsIHNvIGEgZmFpbGVkIElUUyByZXN1bWUgaXMgbm90IGZvbGxv
d2VkIGJ5IE1BUEMvU1lOQyBvbiB0aGF0DQo+ICB1bi1yZXN0b3JlZCBpbnN0YW5jZS4NCj4gLSBw
YW5pYyBpbiBjYXNlIHdoZW4gcmVzdW1lIG9mIGFuIElUUyBmYWlsZWQNCj4gLSBjbGVhbnVwIGJh
c2VyIGNhY2hlIGR1cmluZyBzdXNwZW5kDQo+IC0tLQ0KPiB4ZW4vYXJjaC9hcm0vZ2ljLXYzLWl0
cy5jICAgICAgICAgICAgIHwgMTI2ICsrKysrKysrKysrKysrKysrKysrKysrKy0tDQo+IHhlbi9h
cmNoL2FybS9naWMtdjMuYyAgICAgICAgICAgICAgICAgfCAgMTUgKystDQo+IHhlbi9hcmNoL2Fy
bS9pbmNsdWRlL2FzbS9naWNfdjNfaXRzLmggfCAgMjMgKysrKysNCj4geGVuL2luY2x1ZGUveGVu
L2xpc3QuaCAgICAgICAgICAgICAgICB8ICAxNCArKysNCj4gNCBmaWxlcyBjaGFuZ2VkLCAxNjYg
aW5zZXJ0aW9ucygrKSwgMTIgZGVsZXRpb25zKC0pDQo+IA0KPiBkaWZmIC0tZ2l0IGEveGVuL2Fy
Y2gvYXJtL2dpYy12My1pdHMuYyBiL3hlbi9hcmNoL2FybS9naWMtdjMtaXRzLmMNCj4gaW5kZXgg
OWJhMDY4YzQ2Zi4uZmUyODY1ZWFjOSAxMDA2NDQNCj4gLS0tIGEveGVuL2FyY2gvYXJtL2dpYy12
My1pdHMuYw0KPiArKysgYi94ZW4vYXJjaC9hcm0vZ2ljLXYzLWl0cy5jDQo+IEBAIC0zMzUsNiAr
MzM1LDIyIEBAIHN0YXRpYyBpbnQgaXRzX3NlbmRfY21kX2ludihzdHJ1Y3QgaG9zdF9pdHMgKml0
cywNCj4gICAgIHJldHVybiBpdHNfc2VuZF9jb21tYW5kKGl0cywgY21kKTsNCj4gfQ0KPiANCj4g
K3N0YXRpYyBpbnQgZ2ljdjNfaXRzX3NldHVwX2NvbGxlY3Rpb25fc2luZ2xlKHN0cnVjdCBob3N0
X2l0cyAqaXRzLA0KPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgdW5zaWduZWQgaW50IGNwdSkNCj4gK3sNCj4gKyAgICBpbnQgcmV0Ow0KPiArDQo+ICsgICAg
cmV0ID0gaXRzX3NlbmRfY21kX21hcGMoaXRzLCBjcHUsIGNwdSk7DQo+ICsgICAgaWYgKCByZXQg
KQ0KPiArICAgICAgICByZXR1cm4gcmV0Ow0KPiArDQo+ICsgICAgcmV0ID0gaXRzX3NlbmRfY21k
X3N5bmMoaXRzLCBjcHUpOw0KPiArICAgIGlmICggcmV0ICkNCj4gKyAgICAgICAgcmV0dXJuIHJl
dDsNCj4gKw0KPiArICAgIHJldHVybiBnaWN2M19pdHNfd2FpdF9jb21tYW5kcyhpdHMpOw0KPiAr
fQ0KPiArDQo+IC8qIFNldCB1cCB0aGUgKDE6MSkgY29sbGVjdGlvbiBtYXBwaW5nIGZvciB0aGUg
Z2l2ZW4gaG9zdCBDUFUuICovDQo+IGludCBnaWN2M19pdHNfc2V0dXBfY29sbGVjdGlvbih1bnNp
Z25lZCBpbnQgY3B1KQ0KPiB7DQo+IEBAIC0zNDMsMTUgKzM1OSw3IEBAIGludCBnaWN2M19pdHNf
c2V0dXBfY29sbGVjdGlvbih1bnNpZ25lZCBpbnQgY3B1KQ0KPiANCj4gICAgIGxpc3RfZm9yX2Vh
Y2hfZW50cnkoaXRzLCAmaG9zdF9pdHNfbGlzdCwgZW50cnkpDQo+ICAgICB7DQo+IC0gICAgICAg
IHJldCA9IGl0c19zZW5kX2NtZF9tYXBjKGl0cywgY3B1LCBjcHUpOw0KPiAtICAgICAgICBpZiAo
IHJldCApDQo+IC0gICAgICAgICAgICByZXR1cm4gcmV0Ow0KPiAtDQo+IC0gICAgICAgIHJldCA9
IGl0c19zZW5kX2NtZF9zeW5jKGl0cywgY3B1KTsNCj4gLSAgICAgICAgaWYgKCByZXQgKQ0KPiAt
ICAgICAgICAgICAgcmV0dXJuIHJldDsNCj4gLQ0KPiAtICAgICAgICByZXQgPSBnaWN2M19pdHNf
d2FpdF9jb21tYW5kcyhpdHMpOw0KPiArICAgICAgICByZXQgPSBnaWN2M19pdHNfc2V0dXBfY29s
bGVjdGlvbl9zaW5nbGUoaXRzLCBjcHUpOw0KPiAgICAgICAgIGlmICggcmV0ICkNCj4gICAgICAg
ICAgICAgcmV0dXJuIHJldDsNCj4gICAgIH0NCj4gQEAgLTEyMDksNiArMTIxNywxMDYgQEAgaW50
IGdpY3YzX2l0c19pbml0KHZvaWQpDQo+ICAgICByZXR1cm4gMDsNCj4gfQ0KPiANCj4gKyNpZmRl
ZiBDT05GSUdfU1lTVEVNX1NVU1BFTkQNCj4gK2ludCBnaWN2M19pdHNfc3VzcGVuZCh2b2lkKQ0K
PiArew0KPiArICAgIHN0cnVjdCBob3N0X2l0cyAqaXRzOw0KPiArICAgIGludCByZXQ7DQo+ICsN
Cj4gKyAgICBsaXN0X2Zvcl9lYWNoX2VudHJ5KGl0cywgJmhvc3RfaXRzX2xpc3QsIGVudHJ5KQ0K
DQpOSVQ6IGNvZGVzdHlsZSwgc3BhY2VzIGFmdGVyIGFuZCBiZWZvcmUgdGhlIHBhcmVudGhlc2lz
DQoNCj4gKyAgICB7DQo+ICsgICAgICAgIHVuc2lnbmVkIGludCBpOw0KPiArICAgICAgICB2b2lk
IF9faW9tZW0gKmJhc2UgPSBpdHMtPml0c19iYXNlOw0KPiArDQo+ICsgICAgICAgIGl0cy0+c3Vz
cGVuZF9jdHguY3RsciA9IHJlYWRsX3JlbGF4ZWQoYmFzZSArIEdJVFNfQ1RMUik7DQo+ICsgICAg
ICAgIHJldCA9IGdpY3YzX2Rpc2FibGVfaXRzKGl0cyk7DQoNClRoaXMgaXMgY2FsbGVkIGZyb20g
c3lzdGVtX3N1c3BlbmQoKSwgYWxvbmcgdGhlIHBhdGggaW9tbXVfc3VzcGVuZCBhbmQNCmNvbnNv
bGVfc3VzcGVuZCgpIGFyZSBjYWxsZWQsIGZpbmFsbHkgcmVhY2hpbmcgZ2ljX3N1c3BlbmQoKSBh
bmQgdGhpcyBvbmUuDQoNCkluIHRoZSBJSEkgMDA2OUguYiwgNS42LjIgRGlzYWJsaW5nIGFuIElU
UywgaXQgc2F5czoNCuKAnEVuc3VyZSB0aGF0IGFsbCBpbnRlcnJ1cHRzIHRoYXQgdGFyZ2V0IHRo
ZSBJVFMgdGhhdCBpcyBiZWluZyBwb3dlcmVkIGRvd24gYXJlDQplaXRoZXIgcmVkaXJlY3RlZCBv
ciBkaXNhYmxlZOKAnSwgaXMgaXQgY29ycmVjdCB0byBhc3N1bWUgYWxsIHRoZSBJVFMgdGFyZ2V0
aW5nIHNvdXJjZQ0KYXQgdGhpcyBwb2ludCBhcmUgZGlzYWJsZWQgYmVjYXVzZSBkb21haW5zIHNo
b3VsZCBiZSBhbHJlYWR5IHN1c3BlbmRlZD8NCg0KDQo+ICsgICAgICAgIGlmICggcmV0ICkNCj4g
KyAgICAgICAgew0KPiArICAgICAgICAgICAgd3JpdGVsX3JlbGF4ZWQoaXRzLT5zdXNwZW5kX2N0
eC5jdGxyLCBiYXNlICsgR0lUU19DVExSKTsNCg0KaGVyZSBhbmQgaW4gdGhlIG90aGVyIHBsYWNl
cyB3ZSB3cml0ZSBHSVRTX0NUTFIsIHRoaXMgcmVnIGhhcyBRdWllc2NlbnQgYXMgUk8sDQptYXli
ZSB3ZSBzaG91bGQgbWFzayB0aGUgd3JpdGUgdG8gb25seSB0aGUgb3RoZXIgYml0cyB0aGF0IGFy
ZSB3cml0YWJsZT8NCg0KPiArICAgICAgICAgICAgZ290byBlcnI7DQo+ICsgICAgICAgIH0NCj4g
Kw0KPiArICAgICAgICBpdHMtPnN1c3BlbmRfY3R4LmNiYXNlciA9IHJlYWRxX3JlbGF4ZWQoYmFz
ZSArIEdJVFNfQ0JBU0VSKTsNCj4gKw0KPiArICAgICAgICBmb3IgKGkgPSAwOyBpIDwgR0lUU19C
QVNFUl9OUl9SRUdTOyBpKyspDQoNCk5JVDogY29kZXN0eWxlIG9uIHRoZSBzcGFjZXMgYW5kIHBh
cmVudGhlc2lzDQoNCj4gKyAgICAgICAgew0KPiArICAgICAgICAgICAgdWludDY0X3QgYmFzZXIg
PSByZWFkcV9yZWxheGVkKGJhc2UgKyBHSVRTX0JBU0VSMCArIGkgKiA4KTsNCj4gKw0KPiArICAg
ICAgICAgICAgaXRzLT5zdXNwZW5kX2N0eC5iYXNlcltpXSA9IDA7DQo+ICsNCj4gKyAgICAgICAg
ICAgIGlmICggIShiYXNlciAmIEdJVFNfVkFMSURfQklUKSApDQo+ICsgICAgICAgICAgICAgICAg
Y29udGludWU7DQo+ICsNCj4gKyAgICAgICAgICAgIGl0cy0+c3VzcGVuZF9jdHguYmFzZXJbaV0g
PSBiYXNlcjsNCj4gKyAgICAgICAgfQ0KPiArICAgIH0NCj4gKw0KPiArICAgIHJldHVybiAwOw0K
PiArDQo+ICsgZXJyOg0KPiArICAgIGxpc3RfZm9yX2VhY2hfZW50cnlfY29udGludWVfcmV2ZXJz
ZShpdHMsICZob3N0X2l0c19saXN0LCBlbnRyeSkNCj4gKyAgICAgICAgd3JpdGVsX3JlbGF4ZWQo
aXRzLT5zdXNwZW5kX2N0eC5jdGxyLCBpdHMtPml0c19iYXNlICsgR0lUU19DVExSKTsNCj4gKw0K
PiArICAgIHJldHVybiByZXQ7DQo+ICt9DQo+ICsNCj4gK3N0YXRpYyBpbnQgZ2ljdjNfaXRzX3Jl
c3VtZV9zaW5nbGUoc3RydWN0IGhvc3RfaXRzICppdHMsIHVuc2lnbmVkIGludCBjcHUpDQo+ICt7
DQo+ICsgICAgdm9pZCBfX2lvbWVtICpiYXNlID0gaXRzLT5pdHNfYmFzZTsNCj4gKyAgICB1bnNp
Z25lZCBpbnQgaTsNCj4gKyAgICBpbnQgcmV0Ow0KPiArDQo+ICsgICAgLyoNCj4gKyAgICAgKiBN
YWtlIHN1cmUgdGhhdCB0aGUgSVRTIGlzIGRpc2FibGVkLiBJZiBpdCBmYWlscyB0byBxdWllc2Nl
LA0KPiArICAgICAqIGRvbid0IHJlc3RvcmUgaXQgc2luY2Ugd3JpdGluZyB0byBDQkFTRVIgb3Ig
QkFTRVI8bj4NCj4gKyAgICAgKiByZWdpc3RlcnMgaXMgdW5kZWZpbmVkIGFjY29yZGluZyB0byB0
aGUgR0lDIHYzIElUUw0KPiArICAgICAqIFNwZWNpZmljYXRpb24uDQo+ICsgICAgICovDQo+ICsg
ICAgV0FSTl9PTihyZWFkbF9yZWxheGVkKGJhc2UgKyBHSVRTX0NUTFIpICYgR0lUU19DVExSX0VO
QUJMRSk7DQo+ICsgICAgcmV0ID0gZ2ljdjNfZGlzYWJsZV9pdHMoaXRzKTsNCj4gKyAgICBpZiAo
IHJldCApDQo+ICsgICAgICAgIHJldHVybiByZXQ7DQo+ICsNCj4gKyAgICB3cml0ZXFfcmVsYXhl
ZChpdHMtPnN1c3BlbmRfY3R4LmNiYXNlciwgYmFzZSArIEdJVFNfQ0JBU0VSKTsNCj4gKw0KPiAr
ICAgIC8qDQo+ICsgICAgICogV3JpdGluZyBDQkFTRVIgcmVzZXRzIENSRUFEUiB0byAwLCBzbyBy
ZXNldCBDV1JJVEVSIHRvDQo+ICsgICAgICoga2VlcCB0aGUgY29tbWFuZCBxdWV1ZSBwb2ludGVy
cyBhbGlnbmVkLg0KPiArICAgICAqLw0KPiArICAgIHdyaXRlcV9yZWxheGVkKDAsIGJhc2UgKyBH
SVRTX0NXUklURVIpOw0KPiArDQo+ICsgICAgLyogUmVzdG9yZSBHSVRTX0JBU0VSIGZyb20gdGhl
IHZhbHVlIGNhY2hlLiAqLw0KPiArICAgIGZvciAoIGkgPSAwOyBpIDwgR0lUU19CQVNFUl9OUl9S
RUdTOyBpKysgKQ0KPiArICAgIHsNCj4gKyAgICAgICAgdWludDY0X3QgYmFzZXIgPSBpdHMtPnN1
c3BlbmRfY3R4LmJhc2VyW2ldOw0KPiArDQo+ICsgICAgICAgIGlmICggIShiYXNlciAmIEdJVFNf
VkFMSURfQklUKSApDQo+ICsgICAgICAgICAgICBjb250aW51ZTsNCj4gKw0KPiArICAgICAgICB3
cml0ZXFfcmVsYXhlZChiYXNlciwgYmFzZSArIEdJVFNfQkFTRVIwICsgaSAqIDgpOw0KPiArICAg
IH0NCj4gKw0KPiArICAgIHdyaXRlbF9yZWxheGVkKGl0cy0+c3VzcGVuZF9jdHguY3RsciwgYmFz
ZSArIEdJVFNfQ1RMUik7DQo+ICsNCj4gKyAgICByZXR1cm4gZ2ljdjNfaXRzX3NldHVwX2NvbGxl
Y3Rpb25fc2luZ2xlKGl0cywgY3B1KTsNCj4gK30NCj4gKw0KPiArdm9pZCBnaWN2M19pdHNfcmVz
dW1lKHZvaWQpDQo+ICt7DQo+ICsgICAgc3RydWN0IGhvc3RfaXRzICppdHM7DQo+ICsgICAgdW5z
aWduZWQgaW50IGNwdSA9IHNtcF9wcm9jZXNzb3JfaWQoKTsNCj4gKyAgICBpbnQgcmV0Ow0KPiAr
DQo+ICsgICAgbGlzdF9mb3JfZWFjaF9lbnRyeShpdHMsICZob3N0X2l0c19saXN0LCBlbnRyeSkN
Cj4gKyAgICB7DQo+ICsgICAgICAgIHJldCA9IGdpY3YzX2l0c19yZXN1bWVfc2luZ2xlKGl0cywg
Y3B1KTsNCj4gKyAgICAgICAgaWYgKCByZXQgKQ0KPiArICAgICAgICAgICAgcGFuaWMoIkdJQ3Yz
OiBJVFNAJSJQUklwYWRkciI6IGZhaWxlZCB0byByZXN0b3JlIGR1cmluZyByZXN1bWU6ICVkXG4i
LA0KPiArICAgICAgICAgICAgICAgICAgIGl0cy0+YWRkciwgcmV0KTsNCj4gKyAgICB9DQo+ICt9
DQo+ICsNCj4gKyNlbmRpZiAvKiBDT05GSUdfU1lTVEVNX1NVU1BFTkQgKi8NCj4gDQo+IC8qDQo+
ICAqIExvY2FsIHZhcmlhYmxlczoNCj4gZGlmZiAtLWdpdCBhL3hlbi9hcmNoL2FybS9naWMtdjMu
YyBiL3hlbi9hcmNoL2FybS9naWMtdjMuYw0KPiBpbmRleCBkMTgyYTcxNDc4Li5lZjgzMThkZDUw
IDEwMDY0NA0KPiAtLS0gYS94ZW4vYXJjaC9hcm0vZ2ljLXYzLmMNCj4gKysrIGIveGVuL2FyY2gv
YXJtL2dpYy12My5jDQo+IEBAIC04NjIsNyArODYyLDcgQEAgc3RhdGljIGJvb2wgZ2ljdjNfZW5h
YmxlX2xwaXModm9pZCkNCj4gICAgIHJldHVybiB0cnVlOw0KPiB9DQo+IA0KPiAtc3RhdGljIGlu
dCBfX2luaXQgZ2ljdjNfcG9wdWxhdGVfcmRpc3Qodm9pZCkNCj4gK3N0YXRpYyBpbnQgZ2ljdjNf
cG9wdWxhdGVfcmRpc3Qodm9pZCkNCj4gew0KPiAgICAgaW50IGk7DQo+ICAgICB1aW50MzJfdCBh
ZmY7DQo+IEBAIC05MzIsNyArOTMyLDcgQEAgc3RhdGljIGludCBfX2luaXQgZ2ljdjNfcG9wdWxh
dGVfcmRpc3Qodm9pZCkNCj4gICAgICAgICAgICAgICAgICAgICByZXQgPSBnaWN2M19scGlfaW5p
dF9yZGlzdChwdHIpOw0KPiAgICAgICAgICAgICAgICAgICAgIGlmICggcmV0ICYmIHJldCAhPSAt
RU5PREVWICYmIHJldCAhPSAtRUJVU1kgKQ0KPiAgICAgICAgICAgICAgICAgICAgIHsNCj4gLSAg
ICAgICAgICAgICAgICAgICAgICAgIHByaW50aygiR0lDdjM6IENQVSVkOiBDYW5ub3QgaW5pdGlh
bGl6ZSBMUElzOiAldVxuIiwNCj4gKyAgICAgICAgICAgICAgICAgICAgICAgIHByaW50aygiR0lD
djM6IENQVSVkOiBDYW5ub3QgaW5pdGlhbGl6ZSBMUElzOiAlZFxuIiwNCg0KdGhpcyBpcyB0byBm
aXggdGhlIG1pc3Rha2Ugb2YgYSBwYXRjaCBiZWZvcmUsIA0KDQpDaGVlcnMsDQpMdWNhDQoNCg==


From xen-devel-bounces@lists.xenproject.org Fri Apr 24 11:01:28 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Fri, 24 Apr 2026 11:01:28 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1293443.1571163 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wGEHj-0002jE-Ey; Fri, 24 Apr 2026 11:01:23 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1293443.1571163; Fri, 24 Apr 2026 11: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 1wGEHj-0002j7-9w; Fri, 24 Apr 2026 11:01:23 +0000
Received: by outflank-mailman (input) for mailman id 1293443;
 Fri, 24 Apr 2026 11:01:22 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <Luca.Fancellu@arm.com>) id 1wGEHi-0002j1-45
 for xen-devel@lists.xenproject.org; Fri, 24 Apr 2026 11:01:22 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wGEHh-000KN5-Gv
 for xen-devel@lists.xenproject.org; Fri, 24 Apr 2026 13:01:21 +0200
Received: from [10.42.69.7] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <Luca.Fancellu@arm.com>)
 id 69eb4d7a-2eae-0a2a0a5409dd-0a2a4507df0a-40
 for <xen-devel@lists.xenproject.org>; Fri, 24 Apr 2026 13:01:20 +0200
Received: from [52.101.69.36]
 (helo=AM0PR83CU005.outbound.protection.outlook.com)
 by tlsNG-ef75cf.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.1)
 (envelope-from <Luca.Fancellu@arm.com>)
 id 69eb4d80-229c-0a2a45070019-34654524ac8f-3
 for <xen-devel@lists.xenproject.org>; Fri, 24 Apr 2026 13:01:20 +0200
Received: from CWLP265CA0401.GBRP265.PROD.OUTLOOK.COM (2603:10a6:400:1d6::7)
 by DBBPR08MB6219.eurprd08.prod.outlook.com (2603:10a6:10:20d::10) with
 Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9846.22; Fri, 24 Apr
 2026 11:01:18 +0000
Received: from AM4PEPF00027A61.eurprd04.prod.outlook.com
 (2603:10a6:400:1d6:cafe::b7) by CWLP265CA0401.outlook.office365.com
 (2603:10a6:400:1d6::7) with Microsoft SMTP Server (version=TLS1_3,
 cipher=TLS_AES_256_GCM_SHA384) id 15.20.9846.22 via Frontend Transport; Fri,
 24 Apr 2026 11:01:18 +0000
Received: from outbound-uk1.az.dlp.m.darktrace.com (4.158.2.129) by
 AM4PEPF00027A61.mail.protection.outlook.com (10.167.16.70) with Microsoft
 SMTP Server (version=TLS1_3, cipher=TLS_AES_256_GCM_SHA384) id 15.20.9846.18
 via Frontend Transport; Fri, 24 Apr 2026 11:01:18 +0000
Received: from DU2PR08MB7272.eurprd08.prod.outlook.com (2603:10a6:10:2d7::16)
 by AS8PR08MB8182.eurprd08.prod.outlook.com (2603:10a6:20b:54f::7)
 with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9846.22; Fri, 24 Apr
 2026 10:59:59 +0000
Received: from DU2PR08MB7272.eurprd08.prod.outlook.com
 ([fe80::5d34:206f:373:a323]) by DU2PR08MB7272.eurprd08.prod.outlook.com
 ([fe80::5d34:206f:373:a323%6]) with mapi id 15.20.9846.021; Fri, 24 Apr 2026
 10:59: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=arm.com header.i="@arm.com" header.h="From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck"; dkim=pass header.s=selector1 header.d=arm.com header.i="@arm.com" header.h="From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck"
ARC-Seal: i=2; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=pass;
 b=xq9ocaa82SyvCMr4a+tr+XQT/O/OJPtMoN/L8miAWsX91S4yQWnVZJzBS6h8HLJ8+svcqPCrbmKdYYUdd9dI2mtDxUAxKkKBjEN10GhKdwRML0hWZa0ZWIF+NYhhsiu+BFbj35aoHds6O2OhJNZWOLGZj9ahJKN2AneyJhBahoDBQ+aLyjndw4DxUEC9VJN9hLW2hKHKUvNAfDIPLAcJmo9SmviGkFRt//54+BtI8LAcQSbgKuhRv4+AF8/ap56GSLdH3LsyJYaljzM3CMLYA08Kqt36AuDZzr7cOegIkagX7CIduQYLZV140ieP223B9iIi+Y1X1zUUY5zK9TWCrQ==
ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com;
 s=arcselector10001;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1;
 bh=pClc1SyCOQKZ1GGjSYisodXle1Fg+GHUdenSnzYGUss=;
 b=lkLDRMXqAF9ABfDO+AZ3Bt00IxQ6gbSM/amIwheyluWZ6ythcwbnVnslTfBGk7o64HDuTkSr+VwBeDw7g3e4AuDZZm65dTBQ+IDCfoXwYZuz4uYYrsQkxca6lhdmOEQwzNSmRkw4hd8t7S7MrGayX7VfLmLZEMv2aHzDNEqcN62UfwM8m21BHqPP+aVaFHyRioZPGG74YUOppNxheRvAr0RaZSqAU0gkKhG4Ru0CNaq8Jgoitj/AsGMYjHK6iaqe8+lTQ5AVG04qxXWaTBB0UY6bH/c8YRaWy2V/dyEY7J64lR+6b/QiwIrlXgObUTLAcXenZKwjPl5/FzcyVhHP4w==
ARC-Authentication-Results: i=2; mx.microsoft.com 1; spf=pass (sender ip is
 4.158.2.129) smtp.rcpttodomain=gmail.com smtp.mailfrom=arm.com; dmarc=pass
 (p=none sp=none pct=100) action=none header.from=arm.com; dkim=pass
 (signature was verified) header.d=arm.com; arc=pass (0 oda=1 ltdi=1
 spf=[1,1,smtp.mailfrom=arm.com] dkim=[1,1,header.d=arm.com]
 dmarc=[1,1,header.from=arm.com])
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=arm.com; s=selector1;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck;
 bh=pClc1SyCOQKZ1GGjSYisodXle1Fg+GHUdenSnzYGUss=;
 b=fjw0dDQ+4ITw/OoQeWabkxzDi6jmla3DRaw+YnOdTis7doIsFY5aXEf7hg1zuicITZ7xkn+ZhZfZ7HG4fbBt9lFhSaZSqGy7cmYBDBC5W9z4u/9x5ifKe298uWuP3wRYnMbkj05wXDAw7pMlC5CpJL+YUmhqbBK1CQghiHAb1XU=
X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 4.158.2.129)
 smtp.mailfrom=arm.com; dkim=pass (signature was verified)
 header.d=arm.com;dmarc=pass action=none header.from=arm.com;
Received-SPF: Pass (protection.outlook.com: domain of arm.com designates
 4.158.2.129 as permitted sender) receiver=protection.outlook.com;
 client-ip=4.158.2.129; helo=outbound-uk1.az.dlp.m.darktrace.com; pr=C
ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none;
 b=Iv2ip3brgU1kGp3/YC/gXIueeVVfpQkOF3npztQWrWfXmXwatYJuyCFrhG2/lOhgtCltrjzmQX9REA4xl9Z0pv6MpqHLjhImYaGb3mUFwWCTd6M2PjypXCPjTAk4eTwSCy0baRWsR0WnyAW/LBAhUn5HuLWORUfluQUW6e9qwTKgI3kwie46ffXa9F/VOO+xkSI+bZr6Rk+tQZB9KmXt0LQ8KfrRIdMciZWDWZ+XtkiBfZ5DenM/K4HEn0fo1/q55zxknsk4zOwu0aa8Aff8uiFhmXJtgdhge18gWR9G2qOmh00QTvMscB5HYXZ1GxnvLLucLFCisBkOsPJt/eoa2A==
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com;
 s=arcselector10001;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1;
 bh=pClc1SyCOQKZ1GGjSYisodXle1Fg+GHUdenSnzYGUss=;
 b=H+sJFsYDHr3fPwohVjVGqCD9rOcJszJ682KQPlkSomfhCQUUZ6ioiD/sDGWNZAPjKTXfQ9+0YNIXPfbOb/V9SEuXsZGuPhvunotxjEw+D46yJQiGEfWV9/M8/tKHNJGVP68W3jv68mGJ0e+j+VNryInjCcxtphVpzS7kNZT97uREPfgTlByfC2R8ZP6ChYJ0hdJW1NRxNiZ7YWncjgAJj8Q5b5D0DSR4hPY4D5dVsBeDwVj1FXm3jI4D7mVDVKvIDWAALX7GChp3oAQ4Xfk33T+fj6wrHPa22d2tvALFkx9NIocSWBzv3MEzd6ErZML3pWZBhqV33zuEBcsgX7TLMQ==
ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass
 smtp.mailfrom=arm.com; dmarc=pass action=none header.from=arm.com; dkim=pass
 header.d=arm.com; arc=none
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=arm.com; s=selector1;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck;
 bh=pClc1SyCOQKZ1GGjSYisodXle1Fg+GHUdenSnzYGUss=;
 b=fjw0dDQ+4ITw/OoQeWabkxzDi6jmla3DRaw+YnOdTis7doIsFY5aXEf7hg1zuicITZ7xkn+ZhZfZ7HG4fbBt9lFhSaZSqGy7cmYBDBC5W9z4u/9x5ifKe298uWuP3wRYnMbkj05wXDAw7pMlC5CpJL+YUmhqbBK1CQghiHAb1XU=
From: Luca Fancellu <Luca.Fancellu@arm.com>
To: Mykola Kvach <xakep.amatop@gmail.com>
CC: "xen-devel@lists.xenproject.org" <xen-devel@lists.xenproject.org>, Mykola
 Kvach <mykola_kvach@epam.com>, Volodymyr Babchuk
	<volodymyr_babchuk@epam.com>, Bertrand Marquis <Bertrand.Marquis@arm.com>,
	Jens Wiklander <jens.wiklander@linaro.org>, Stefano Stabellini
	<sstabellini@kernel.org>, Julien Grall <julien@xen.org>, Michal Orzel
	<michal.orzel@amd.com>
Subject: Re: [PATCH v8 06/13] xen/arm: tee: keep init_tee_secondary() for
 hotplug and resume
Thread-Topic: [PATCH v8 06/13] xen/arm: tee: keep init_tee_secondary() for
 hotplug and resume
Thread-Index: AQHc09l+7v4jgDmb+0a+B+BWKNJH7g==
Date: Fri, 24 Apr 2026 10:59:59 +0000
Message-ID: <89B9D5E8-6B30-4948-8375-0B48EED46017@arm.com>
References: <cover.1775125380.git.mykola_kvach@epam.com>
 <666917e8e8e435640c272c19908f412c315b2dc6.1775125380.git.mykola_kvach@epam.com>
In-Reply-To:
 <666917e8e8e435640c272c19908f412c315b2dc6.1775125380.git.mykola_kvach@epam.com>
Accept-Language: en-GB, en-US
Content-Language: en-US
X-MS-Has-Attach:
X-MS-TNEF-Correlator:
x-mailer: Apple Mail (2.3826.700.81.1.6)
Authentication-Results-Original: dkim=none (message not signed)
 header.d=none;dmarc=none action=none header.from=arm.com;
x-ms-traffictypediagnostic:
	DU2PR08MB7272:EE_|AS8PR08MB8182:EE_|AM4PEPF00027A61:EE_|DBBPR08MB6219:EE_
X-MS-Office365-Filtering-Correlation-Id: e8fda640-29da-48c7-2966-08dea1f0cfab
x-checkrecipientrouted: true
nodisclaimer: true
X-MS-Exchange-SenderADCheck: 1
X-MS-Exchange-AntiSpam-Relay: 0
X-Microsoft-Antispam-Untrusted:
 BCL:0;ARA:13230040|366016|376014|1800799024|22082099003|56012099003|18002099003|38070700021;
X-Microsoft-Antispam-Message-Info-Original:
 nSmBOGo9wmaK/V8VjUTaGeK+48HSH9NDrR7g0o6G97ou8pv86QHIKmNFx6FN7QxYm3f5XYSbqSeUNaflGweN40X9Rhw0G5/OtjeG4z5MeyXmz1BdcPgTI0o3Ncv6W8o+CTLpo0hd1ceIj+GJ0gAMNvj0kV9eqotgJKF+HvcqCVd9Rg2JLFkXnGIGOaB/A9/GVNFTHuKkwtPPSsKCV7lSCeuQ3AYxwQLUAq+VQNpc+sg8KFqVZgukG7e1B83OtZrjMdJBIFVYf8odw1KluAU0nxoZt702X/l6JQn2lZg0/fobLWHYPMw2JL8JBs88Prrm94X/OtVYzqs/vJXra1CE/tdJDekVxkAkmu8SSlOROzmD+1WZNfbvx8Hv2FGfEx5NbZqnA35JRKeRzi/lqLbUrc+BU4ZkrHGNLruWJ/R275+Pr0yprfIWpgkSpei/0Z2B/FK4Zoq9IOma5c8B3EVzc2eT4cKMMsAWj0UEbzsU0DVwwHHzgZfbmQFEhcD+nXRyOXSgXHsJwJbF81QsTudxsT9ef5JydovQGPAmDtgluIoNTQWpY6ebzcMAEgLdpYqXE1++0z2/mBwevNKMIQ8pzWMb14Tus+/o5NNZvQPrfLOagjmvqb/oA0TbwqY/KfOZxLWdRK7qGICvw3Se/1UAjZgX2Drpaj2YrurzlCc2hcagoP+Da4B48gKqDvtXWzk0V/oP8Sw5RgWU6LmDwA34schkFL9tpHEzPa2QykBp4WnfWhkvJrJvi3KbjFb+WiSIAUItMeB6uIfhVWyofwVKoG1M+w+sAq3Jv9oyvfTcdyw=
X-Forefront-Antispam-Report-Untrusted:
 CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:DU2PR08MB7272.eurprd08.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(366016)(376014)(1800799024)(22082099003)(56012099003)(18002099003)(38070700021);DIR:OUT;SFP:1101;
Content-Type: text/plain; charset="us-ascii"
Content-ID: <C5236B14D9273740BF812A33698A501A@eurprd08.prod.outlook.com>
Content-Transfer-Encoding: quoted-printable
MIME-Version: 1.0
X-Exchange-RoutingPolicyChecked:
 nqylNRMqsuevXZJJgL94gVFUBzkbi2WyEYrItQpygHZXt81ZPIcCEa2fImgE7oe6IHh4H9THYX2iMRXOQeiDaGD4n/d2FaFNw0Qv2eMMX5Oc/DhMRg2r4vxukdd3AQLnKdjaB9GosN1wbGRG0YE00ZWrsfDDv+gymL35+5ljJAq40HTgrp70Z5FSDZPfBAqLbkckxGZbF3M6NKmGgUSuSHCp0/7R3AujEvD4aeiNj+NQ1v9SjUfmLs79QQ2+cBI3yx5OT7j1/faUistyKNbflQXcFyIR6tp4Lkic9VSLucknnp7kVel7QStN7ViTeKkY7Zl7NlZ0eHC6c9BtVrMsSQ==
X-MS-Exchange-Transport-CrossTenantHeadersStamped: AS8PR08MB8182
X-EOPAttributedMessage: 0
X-MS-Exchange-Transport-CrossTenantHeadersStripped:
 AM4PEPF00027A61.eurprd04.prod.outlook.com
X-MS-PublicTrafficType: Email
X-MS-Office365-Filtering-Correlation-Id-Prvs:
	89bef2cb-e24f-4791-98a6-08dea1f0a0d1
X-Microsoft-Antispam:
	BCL:0;ARA:13230040|82310400026|1800799024|14060799003|35042699022|376014|36860700016|18002099003|22082099003|56012099003;
X-Microsoft-Antispam-Message-Info:
	K09Q2CTvLdXs1UrvVH0KBxqPO4n1MXT6BvDRCQ2VKhRiTNtIsK4nYBu7m+K1WgT9lZjNbpDFr5aTcZiSAesYE1oTYg+R/fFcD0XsdP54ILn502k9FahIXOcvMHWbF7KSIkmbwz8miWGD31iwlVqNHOsVfYxvwHC/PtZUr2qJXY8IVoZxbl61xjnZxg1sYKTzAD78QTwErBnayQ5/Baa8yKso/GFyHZ07srKAE1f7LUsLDU0BayAju57r1p/h8kuiNvWtAO31JgBxMV93bOb0T8DE7znuZyGC0MmXbeGj9ed0CEk+s7VJ56U4a0nimxEp9nmMKp7aQmxfyGugnaBF5yyQ9hDaAO5Hg3JvONTXNFRZCjyoVy2a2qWgR4walwzkbZFvgNt+ZOtRLRkVNWxrkkladA+VoDsBQj2Cp7ILHierxkUJDj2JOvr3MZfXXIWj67Z7p6jI6kofzJN+PfqSlpU6rr7bXkYF24lH6/Zo6xymBBxcDuj3127HEtMF4ZfNykQcAYAZsBozoA9bTCdBLhjeU3NIQtAll4HYmajYBx+8KjSWV4AgkmKJ2TEaf+7A0BUEdfe6fPe+pz2oQaP6HigRD/28cXSvferWNE2CqPg1N39u6Ggxna74GYO/JSPEaZHiVF4Dq+WHdzU2npEvlVKL9Ch+gG5OHmgN+DYzjq1e81UU7TnUdBD3dBxLD8/bUMq48lYpPwusWX9WtvVxvaYSl5UO85QGhakR8BcWPskq+mQK8q4S8Oqv3gSDd60mawPE4KoXnKXU8TFLIhSIeQ==
X-Forefront-Antispam-Report:
	CIP:4.158.2.129;CTRY:GB;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:outbound-uk1.az.dlp.m.darktrace.com;PTR:InfoDomainNonexistent;CAT:NONE;SFS:(13230040)(82310400026)(1800799024)(14060799003)(35042699022)(376014)(36860700016)(18002099003)(22082099003)(56012099003);DIR:OUT;SFP:1101;
X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1
X-MS-Exchange-AntiSpam-MessageData-0:
	6e8KRpG+ePJx54onpbyYfLRBoV/80I2lFCo8Pa5BWyKhHhg4B3cazZ5HZPFHv+JowDBpI77hlb8cwo4EDDawhB4t5wGw41a6mNrMZigCQVyJKGgpS0/fpahivzqV89rgnI6qLz9Jww3bjfOm9r8Do1RX4RmokD/YYE+iK27IWLqMTrIdazv5aMwQEOADGrqIXNAe7UQ/JFrHtoD48BvROjhYeNJu8Tnsh3wBUM5zR9KCFJcE5+Ci1geblKIATCeaHvgkjmEcKc4RPnenOBcJyvbcfhFnN8gUEjlHyMlDfFzsoBD1mlnr/UVBo7QMZ5uf0cVOwLqZoYXVQ93XuEFglIMWJcWhfsSDC/SWSDFDfmkCZjvV8zL3z6PQLE9qE45Elzs4RwCEm3R+43/6OUEVIkGpf/+/hbpVdPrsNY3WyFbjXdbQTYdYmS5x6HyCkBTk
X-OriginatorOrg: arm.com
X-MS-Exchange-CrossTenant-OriginalArrivalTime: 24 Apr 2026 11:01:18.0274
 (UTC)
X-MS-Exchange-CrossTenant-Network-Message-Id: e8fda640-29da-48c7-2966-08dea1f0cfab
X-MS-Exchange-CrossTenant-Id: f34e5979-57d9-4aaa-ad4d-b122a662184d
X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=f34e5979-57d9-4aaa-ad4d-b122a662184d;Ip=[4.158.2.129];Helo=[outbound-uk1.az.dlp.m.darktrace.com]
X-MS-Exchange-CrossTenant-AuthSource:
	AM4PEPF00027A61.eurprd04.prod.outlook.com
X-MS-Exchange-CrossTenant-AuthAs: Anonymous
X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem
X-MS-Exchange-Transport-CrossTenantHeadersStamped: DBBPR08MB6219
X-purgate-ID: tlsNG-ef75cf/1777028480-15458C48-7776A1F2/0/0
X-purgate-type: clean
X-purgate-size: 1101

Hi Mykola,

> On 2 Apr 2026, at 11:45, Mykola Kvach <xakep.amatop@gmail.com> wrote:
>=20
> From: Mykola Kvach <mykola_kvach@epam.com>
>=20
> init_tee_secondary() was marked __init and freed after boot. Calling it
> from the CPU hotplug/resume path then executed discarded code, which
> could crash Xen. Drop __init so the TEE mediator secondary init can run
> safely on hotplugged and resumed CPUs.
>=20
> Signed-off-by: Mykola Kvach <mykola_kvach@epam.com>
> ---
> xen/arch/arm/tee/tee.c | 2 +-
> 1 file changed, 1 insertion(+), 1 deletion(-)
>=20
> diff --git a/xen/arch/arm/tee/tee.c b/xen/arch/arm/tee/tee.c
> index 8501443c8e..00e561fc78 100644
> --- a/xen/arch/arm/tee/tee.c
> +++ b/xen/arch/arm/tee/tee.c
> @@ -128,7 +128,7 @@ static int __init tee_init(void)
>=20
> presmp_initcall(tee_init);
>=20
> -void __init init_tee_secondary(void)
> +void init_tee_secondary(void)
> {
>     if ( cur_mediator && cur_mediator->ops->init_secondary )
>         cur_mediator->ops->init_secondary();
>=20

Reviewed-by: Luca Fancellu <luca.fancellu@arm.com>

Cheers,
Luca



From xen-devel-bounces@lists.xenproject.org Fri Apr 24 12:06:46 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Fri, 24 Apr 2026 12:06:46 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1293485.1571175 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wGFIn-0004Sd-4s; Fri, 24 Apr 2026 12:06:33 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1293485.1571175; Fri, 24 Apr 2026 12: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 1wGFIn-0004SW-22; Fri, 24 Apr 2026 12:06:33 +0000
Received: by outflank-mailman (input) for mailman id 1293485;
 Fri, 24 Apr 2026 12:06:32 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <Luca.Fancellu@arm.com>) id 1wGFIm-0004SQ-IU
 for xen-devel@lists.xenproject.org; Fri, 24 Apr 2026 12:06:32 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wGFIl-007mug-LA
 for xen-devel@lists.xenproject.org; Fri, 24 Apr 2026 14:06:31 +0200
Received: from [10.42.69.6] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <Luca.Fancellu@arm.com>)
 id 69eb5cc4-2eae-0a2a0a5409dd-0a2a45068082-10
 for <xen-devel@lists.xenproject.org>; Fri, 24 Apr 2026 14:06:30 +0200
Received: from [40.107.130.66]
 (helo=MRWPR03CU001.outbound.protection.outlook.com)
 by tlsNG-16d1c6.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.1)
 (envelope-from <Luca.Fancellu@arm.com>)
 id 69eb5cc6-7371-0a2a45060019-286b82423a86-3
 for <xen-devel@lists.xenproject.org>; Fri, 24 Apr 2026 14:06:30 +0200
Received: from CWXP123CA0017.GBRP123.PROD.OUTLOOK.COM (2603:10a6:401:73::29)
 by PAXPR08MB7551.eurprd08.prod.outlook.com (2603:10a6:102:24e::12) with
 Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9846.17; Fri, 24 Apr
 2026 12:06:26 +0000
Received: from AMS0EPF00000199.eurprd05.prod.outlook.com
 (2603:10a6:401:73:cafe::4b) by CWXP123CA0017.outlook.office365.com
 (2603:10a6:401:73::29) with Microsoft SMTP Server (version=TLS1_3,
 cipher=TLS_AES_256_GCM_SHA384) id 15.20.9846.22 via Frontend Transport; Fri,
 24 Apr 2026 12:06:26 +0000
Received: from outbound-uk1.az.dlp.m.darktrace.com (4.158.2.129) by
 AMS0EPF00000199.mail.protection.outlook.com (10.167.16.245) with Microsoft
 SMTP Server (version=TLS1_3, cipher=TLS_AES_256_GCM_SHA384) id 15.20.9846.18
 via Frontend Transport; Fri, 24 Apr 2026 12:06:25 +0000
Received: from DU2PR08MB7272.eurprd08.prod.outlook.com (2603:10a6:10:2d7::16)
 by VI0PR08MB10845.eurprd08.prod.outlook.com (2603:10a6:800:211::12)
 with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9846.22; Fri, 24 Apr
 2026 12:05:19 +0000
Received: from DU2PR08MB7272.eurprd08.prod.outlook.com
 ([fe80::5d34:206f:373:a323]) by DU2PR08MB7272.eurprd08.prod.outlook.com
 ([fe80::5d34:206f:373:a323%6]) with mapi id 15.20.9846.021; Fri, 24 Apr 2026
 12:05: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=arm.com header.i="@arm.com" header.h="From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck"; dkim=pass header.s=selector1 header.d=arm.com header.i="@arm.com" header.h="From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck"
ARC-Seal: i=2; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=pass;
 b=Gb34qduvLFEc94I5CE2neRuLtnQOVeebhWZvu8aVO+POJdfSPVIogYug+KNHzGCpOi0eklncXbYO/Pa71Ig6Gd0xLsU9xEnff7wnF+FPLRBHWRiUHr0VeV+tciqpLjk3TsRuSEZAgdpmHHYQLrcbFj32bOy8zktcdwTBQtZ3yiflR6ucqq5Laoe3zsxkV1MN52bvycDZn8g8OYq0bZujllW0gqNlxmebYTWEIcJsL2br4JNDWqdLTvTh8Wb+wAxi2nbAaELj+XKTNLdGz+l2BSUwDOEvG+Np/JFYt8adWjttzW5O+wUo7D4cfrEnk3HPdP+aEdRPiPFlQiV9P/sheQ==
ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com;
 s=arcselector10001;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1;
 bh=Yq27Eo8uHiSEH/YvYe5xPM6Cm6mTAHNBMYASJ1obzSo=;
 b=yRFD0pmi4GQA+GFPhGWiPa/TfrR7w6WsQXn76W1bqFaWYHR2EgyfOck2RGEXN/iF3ViDAC+mcHgsMYKCK09TWdt/UabS1VwlCkbGXwO+8GYX4yLLoHFJZK7+QPzThh9V33fgBdHvmR5ZqsJlOA7OfkdcmeAgIOZxNx4s4hDJqQiojep6QYrr+RAM7Su9SMrVYKcreyrVlPrIgDrw58Mx9PWEI7g1/Y04D7+euO+E84qP5a6sEdOUEUWbWKs/i/25HqJ2n0bvf43GhjMGGgmaKUE76k70dcnRBwhBdpvyGHbLhyRt/cVFEzP7wMwVBkPdUICo3wgDjSCi7CALw44ZqA==
ARC-Authentication-Results: i=2; mx.microsoft.com 1; spf=pass (sender ip is
 4.158.2.129) smtp.rcpttodomain=gmail.com smtp.mailfrom=arm.com; dmarc=pass
 (p=none sp=none pct=100) action=none header.from=arm.com; dkim=pass
 (signature was verified) header.d=arm.com; arc=pass (0 oda=1 ltdi=1
 spf=[1,1,smtp.mailfrom=arm.com] dkim=[1,1,header.d=arm.com]
 dmarc=[1,1,header.from=arm.com])
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=arm.com; s=selector1;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck;
 bh=Yq27Eo8uHiSEH/YvYe5xPM6Cm6mTAHNBMYASJ1obzSo=;
 b=mH7J9OEs7sWjNert2qXrAb7SPP3OZ9fbCParPM/DbF7t8Tp4ans9DKWiXHrxXMeYOUG4rjy1GXNVDFxpwft7t3zJsj0EhhLjIRY1RIxlJ8U34uv6TAly0AhfpgK4ZDJF1F3dTq7EnYOD9EOlFw7zODNHUA9maT7ifyKPKurhFvQ=
X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 4.158.2.129)
 smtp.mailfrom=arm.com; dkim=pass (signature was verified)
 header.d=arm.com;dmarc=pass action=none header.from=arm.com;
Received-SPF: Pass (protection.outlook.com: domain of arm.com designates
 4.158.2.129 as permitted sender) receiver=protection.outlook.com;
 client-ip=4.158.2.129; helo=outbound-uk1.az.dlp.m.darktrace.com; pr=C
ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none;
 b=BhgebTGP58eWHce2uCBOXxUHZaYAfzLgMLqJt5JLmHOaoJSz06+ZQJsdkqWRsM1smZNPWepLd4/FHNE6bhlBcqIojEapCGaMfGvoo4VUYrIV+5Xdn/6rKcFstydPu15c+Nm+SNUS+kyvHPZfgSGF9bRbtlpd6YFtFGnjaCOEGAdoj7Y3Ct038A6D6sW6Iy4S19FSUOAPF3FKOeRNO20kQS8w61HTghj1rZnDZpU/CGax1/iTigmGuFdkJ9QzrS2VTkpsvHn7qOqQDT/IsEDIC0LPbz9QwB+yg8et/6tW9sKzSYscIGRrgUsdaHceCKYVwfbmaUFbEw0quP7IUyPtuA==
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com;
 s=arcselector10001;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1;
 bh=Yq27Eo8uHiSEH/YvYe5xPM6Cm6mTAHNBMYASJ1obzSo=;
 b=Z7QCozTwJnILVyQE3NULP2QH1xjROYP3ki/uINZwQtraF8XbvZTEm1yKURvsaQRPdG2m4xpzfh0tu6M6vrtpP6tHkA/awmP05PivrDEDlyAODpWArx/1i8DgZSEa67M2NxhgHiRrwpQAKZ4xC85sELwgcqSg52KEZymBXcGEd3DODTgHNi7Bbow577KxjBaArB3UErd1/2ztF7wHayecH1Y8SGhgiNDgM34MD6HlDyM1uobIVFhDnvNIyYkw3KS1wm/LipHtMQ8pctREUfX3t0L6Srubo7Bb25unmnhj206yUpEey6DeFKD9ulo0b/YIG7EOd1KEvwg0lwQFXVFOrg==
ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass
 smtp.mailfrom=arm.com; dmarc=pass action=none header.from=arm.com; dkim=pass
 header.d=arm.com; arc=none
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=arm.com; s=selector1;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck;
 bh=Yq27Eo8uHiSEH/YvYe5xPM6Cm6mTAHNBMYASJ1obzSo=;
 b=mH7J9OEs7sWjNert2qXrAb7SPP3OZ9fbCParPM/DbF7t8Tp4ans9DKWiXHrxXMeYOUG4rjy1GXNVDFxpwft7t3zJsj0EhhLjIRY1RIxlJ8U34uv6TAly0AhfpgK4ZDJF1F3dTq7EnYOD9EOlFw7zODNHUA9maT7ifyKPKurhFvQ=
From: Luca Fancellu <Luca.Fancellu@arm.com>
To: Mykola Kvach <xakep.amatop@gmail.com>
CC: "xen-devel@lists.xenproject.org" <xen-devel@lists.xenproject.org>, Mykola
 Kvach <mykola_kvach@epam.com>, Volodymyr Babchuk
	<volodymyr_babchuk@epam.com>, Bertrand Marquis <Bertrand.Marquis@arm.com>,
	Jens Wiklander <jens.wiklander@linaro.org>, Stefano Stabellini
	<sstabellini@kernel.org>, Julien Grall <julien@xen.org>, Michal Orzel
	<michal.orzel@amd.com>
Subject: Re: [PATCH v8 07/13] xen/arm: ffa: fix notification SRI across CPU
 hotplug/suspend
Thread-Topic: [PATCH v8 07/13] xen/arm: ffa: fix notification SRI across CPU
 hotplug/suspend
Thread-Index: AQHc0+Ke2iP9gJ+Zrk+gev4riLWd2Q==
Date: Fri, 24 Apr 2026 12:05:19 +0000
Message-ID: <6F54C29E-6A3A-4A69-927B-B04A4A0C00D6@arm.com>
References: <cover.1775125380.git.mykola_kvach@epam.com>
 <a977e246d1d0a32a6618efd1385ad178779c2a61.1775125380.git.mykola_kvach@epam.com>
In-Reply-To:
 <a977e246d1d0a32a6618efd1385ad178779c2a61.1775125380.git.mykola_kvach@epam.com>
Accept-Language: en-GB, en-US
Content-Language: en-US
X-MS-Has-Attach:
X-MS-TNEF-Correlator:
x-mailer: Apple Mail (2.3826.700.81.1.6)
Authentication-Results-Original: dkim=none (message not signed)
 header.d=none;dmarc=none action=none header.from=arm.com;
x-ms-traffictypediagnostic:
	DU2PR08MB7272:EE_|VI0PR08MB10845:EE_|AMS0EPF00000199:EE_|PAXPR08MB7551:EE_
X-MS-Office365-Filtering-Correlation-Id: 924ba69d-5177-44e9-58ff-08dea1f9e8dd
x-checkrecipientrouted: true
nodisclaimer: true
X-MS-Exchange-SenderADCheck: 1
X-MS-Exchange-AntiSpam-Relay: 0
X-Microsoft-Antispam-Untrusted:
 BCL:0;ARA:13230040|366016|376014|1800799024|56012099003|22082099003|18002099003|38070700021;
X-Microsoft-Antispam-Message-Info-Original:
 890F0mJDcI99aIKnlBQwQVJ/Ehn8T5f9igzXercXDFErHk024AEWSI4DdS5GFetXsQV7nPZ85LhFTdAvnaIWbjt3zC0IONkyKo3Vam8joCFzUPX7UG+crienG/Wh+90VqDg1dE2AYG0s5KqhRHt31by47ns+D0sDWt4GLlJhq/kYSx7mczBJ0b6XRHCmbPIyW25HUTADLzn8QaCNopKk3XZwkgoNM4oO86vo5fv2DtnW/EdGTM+0jU8s1Z/zFmVKvugWAxvgozVuDHpLbhv4GUDFAE1C2zh5962oU6ZIgXVNAqveoghRMjrY8lsIrTeucMvKNHKteH3U66oZ2ApKV+jvZ85cR8pInhvLL2Eb2vhs4GtBkEd/5iPriRyc8jegMpaHYqm3CwbfYH0mmBdtLxNfj0tOZzdpohsgrMeIJI3dU27so68WTRpT1PhSrd6BfhDVHOrnyv5z8i+9klJWOuiDbF/pHVEU/cWrt9a89PPY/8flOossYgtsTrew6lykSXOW8QCGkexZsVUT4KkvqoGtB+zfx3PP+e7f/av8P+cIuSfT8IGKqYVDQVhd7ENHabxkaFD2CO9k5NTC/iG8s2KS46vyD7v5OnQHrPdcIiKtKLsPrKrQnS5Oz8vfTfXPxOgxpfMfIyni7cIFcF+ER31fAU2UgdbeWOc06JfX8MTXGIboHO2nTTmN4iJy/uSbsW0tSvXp4M4Fyh2mbF6M/HnnqvM0BS/fpgcr1o98rwmaf6fkPwdM3WKXB/M+IADGHFgKRwMobgXc0u1ABXmSe2qj+mmKWnz1CdyUmBa79SE=
X-Forefront-Antispam-Report-Untrusted:
 CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:DU2PR08MB7272.eurprd08.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(366016)(376014)(1800799024)(56012099003)(22082099003)(18002099003)(38070700021);DIR:OUT;SFP:1101;
Content-Type: text/plain; charset="us-ascii"
Content-ID: <03A3AB7A9CE2D348A4F53D9E5BAB8134@eurprd08.prod.outlook.com>
Content-Transfer-Encoding: quoted-printable
MIME-Version: 1.0
X-Exchange-RoutingPolicyChecked:
 TMDBTJb6lOccjJCMCq855n73Kr8xZy6KmbNBgWGDZo5icTNpR2V/W3Yx37JDv0I5UOkADFIkkzRTSwpmX2oCYIhDrEpRQOl49YhHhxbIIiUXhAiEjW2lBGOUIUZvgydnh0x7AQa4QeYfbZ8YnjAQlzMqBBWqqyNqPtrrbksG8xAN8niZKpRxwgKnA6JlpByDD6g6AxpVc7EgirGt8qgg+4oNBwb9Z6b1D7leMRsmLJVTIY7lzlwSor0bp1WbfVEoHcl0dWHyXWjyL0e8YP6ro/fZ8ncdjdHpetdKG3TLBUnsPmDH3rQwES12vMgzpRtkz50gpxbDebgEuvRp/oeBXA==
X-MS-Exchange-Transport-CrossTenantHeadersStamped: VI0PR08MB10845
X-EOPAttributedMessage: 0
X-MS-Exchange-Transport-CrossTenantHeadersStripped:
 AMS0EPF00000199.eurprd05.prod.outlook.com
X-MS-PublicTrafficType: Email
X-MS-Office365-Filtering-Correlation-Id-Prvs:
	ce692d47-5690-4122-4678-08dea1f9c128
X-Microsoft-Antispam:
	BCL:0;ARA:13230040|82310400026|14060799003|376014|1800799024|35042699022|36860700016|22082099003|56012099003|18002099003;
X-Microsoft-Antispam-Message-Info:
	+95brs9t7hUqomEPVgZZ8mjiKAYQAXuHOulS3zDhd/C84QRtQ3Wq6MsNud4DfelPSxwlNFHZwsJvrC37+h64jP2UWN6tjW4/5N4wQ2LGPw+FfCJp9R2oMW1ZAaTqwtGHMx6gGTIdMiW5ri/2vrTOpqQVmdtYrM6jLJejQF/OY0y1Se1iftmka6bJmdoW75bfVfVieXR94KEe/HJ2gP7r3HDKZsdv0TCk+aRLOO4oJNRVEKDxytyYH7kHI+Jo5cR64fAP+4nxYg0/DxjX/gJyUj04c/BTNBdqlbOzf8Ue2FRPBKIuT2P6A8uhRSPF+4HCKjoYMNzEFVT+KOHtF6FhsVMcHPhL3KX1vxFK7FOziTUJWzUy07BgOggo7m+4NwogwzZNxSdguzPpb1ldye0HCfa70miDidsAkGsDDnGZFKFPt+UfuVkk/s+UsTWAOxFQUp8EDP38BttWdqdRG5PlcOxclAytaCK6+PiYZyvrJQXgS2Jg40Y9DoKcsQIz3PKfOhrRWXwB5edAvzp5uiE1tbOuF0MNjliyLgClzCt0aeCYvm6toDA95rybGc3zB3NM6jXpZaRttZcr5Bu/XuxRDjBWBfabE0jVblBx2ZqqR5cuOFqSnc3Bw5FajdBDl9ezEzBaFXCA3ck9KpPprsrBpQOn5e4cSGkmcB3I3jggCEKKuoc6U6hW0hRhIcI/qHIH+CPgAoI1pGYJEe+82wPUYWawYFT5PW38MJm8ttb3BXk8tDRzK5OEq1JG8hXTGYQ7r3IwejthhjEQ3l/Zsh8QHQ==
X-Forefront-Antispam-Report:
	CIP:4.158.2.129;CTRY:GB;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:outbound-uk1.az.dlp.m.darktrace.com;PTR:InfoDomainNonexistent;CAT:NONE;SFS:(13230040)(82310400026)(14060799003)(376014)(1800799024)(35042699022)(36860700016)(22082099003)(56012099003)(18002099003);DIR:OUT;SFP:1101;
X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1
X-MS-Exchange-AntiSpam-MessageData-0:
	SETvcFEHrStvT1tcrZlaS2PpL73BzlblkQohvgtI1vYEmBxlUGO0d0uKwfliFbePhKFdGOl9gPjfI55dR8MAbNcTVl09QbvzgzyDjzLDs6Q3VQoUKIuh6phaN8ibNmAaAtI1JpHW1M2BmJRh3GKZ5GUe++VpGeI9W8If8Yt6v+UBNEw99HgurbZd5D+k8bD/K5dycOlRfxFrViUoWWf0ta+q7NQOc3n9jfPLoAujMSyojR2kfqxi/jPuXJ33CoKFVOco/tr7g81v/WsHUr5kgAig/SCo2WJf14V6kgFGPliyJAhcedOvUFh19CreOEpBgHO0oIjRZCn6m3K/LzSQbYojRViS4NbSC9kfHgRRFWF6JP6t4rV1OtRoar8uvhlkZEWXe/gHoxpIRJ4ZalXaizK0OZQIBMI35rmiuA6+6Ipk4O+W1n0GUdmW4efD/1j3
X-OriginatorOrg: arm.com
X-MS-Exchange-CrossTenant-OriginalArrivalTime: 24 Apr 2026 12:06:25.7974
 (UTC)
X-MS-Exchange-CrossTenant-Network-Message-Id: 924ba69d-5177-44e9-58ff-08dea1f9e8dd
X-MS-Exchange-CrossTenant-Id: f34e5979-57d9-4aaa-ad4d-b122a662184d
X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=f34e5979-57d9-4aaa-ad4d-b122a662184d;Ip=[4.158.2.129];Helo=[outbound-uk1.az.dlp.m.darktrace.com]
X-MS-Exchange-CrossTenant-AuthSource:
	AMS0EPF00000199.eurprd05.prod.outlook.com
X-MS-Exchange-CrossTenant-AuthAs: Anonymous
X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem
X-MS-Exchange-Transport-CrossTenantHeadersStamped: PAXPR08MB7551
X-purgate-ID: tlsNG-16d1c6/1777032390-90A7ED75-D8E74183/0/0
X-purgate-type: clean
X-purgate-size: 560

Hi Mykola,

> On 2 Apr 2026, at 11:45, Mykola Kvach <xakep.amatop@gmail.com> wrote:
>=20
> From: Mykola Kvach <mykola_kvach@epam.com>
>=20
> The FF-A notification SRI interrupt handler was not correctly tied to
> CPU hotplug and suspend/resume. As a result, CPUs going offline and
> back online could end up with stale or missing handlers, breaking
> delivery of FF-A notifications.
>=20
> Signed-off-by: Mykola Kvach <mykola_kvach@epam.com>
> ---
>=20

Looks ok to me

Reviewed-by: Luca Fancellu <luca.fancellu@arm.com>

Cheers,
Luca




From xen-devel-bounces@lists.xenproject.org Fri Apr 24 13:36:23 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Fri, 24 Apr 2026 13:36:23 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1293556.1571184 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wGGhW-0001wb-Ea; Fri, 24 Apr 2026 13:36:10 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1293556.1571184; Fri, 24 Apr 2026 13:36: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 1wGGhW-0001wT-BQ; Fri, 24 Apr 2026 13:36:10 +0000
Received: by outflank-mailman (input) for mailman id 1293556;
 Fri, 24 Apr 2026 13:36:08 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <Luca.Fancellu@arm.com>) id 1wGGhU-0001wN-MH
 for xen-devel@lists.xenproject.org; Fri, 24 Apr 2026 13:36:08 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wGGhU-00EOph-2w
 for xen-devel@lists.xenproject.org; Fri, 24 Apr 2026 15:36:08 +0200
Received: from [10.42.69.2] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <Luca.Fancellu@arm.com>)
 id 69eb71b4-2eae-0a2a0a5409dd-0a2a4502cd7e-22
 for <xen-devel@lists.xenproject.org>; Fri, 24 Apr 2026 15:36:07 +0200
Received: from [52.101.83.40]
 (helo=GVXPR05CU001.outbound.protection.outlook.com)
 by tlsNG-720697.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.1)
 (envelope-from <Luca.Fancellu@arm.com>)
 id 69eb71c7-af86-0a2a45020019-346553287dd3-3
 for <xen-devel@lists.xenproject.org>; Fri, 24 Apr 2026 15:36:07 +0200
Received: from CWLP265CA0427.GBRP265.PROD.OUTLOOK.COM (2603:10a6:400:1d7::14)
 by DB9PR08MB8290.eurprd08.prod.outlook.com (2603:10a6:10:3de::7) with
 Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9846.18; Fri, 24 Apr
 2026 13:36:02 +0000
Received: from AMS1EPF00000045.eurprd04.prod.outlook.com
 (2603:10a6:400:1d7:cafe::47) by CWLP265CA0427.outlook.office365.com
 (2603:10a6:400:1d7::14) with Microsoft SMTP Server (version=TLS1_3,
 cipher=TLS_AES_256_GCM_SHA384) id 15.20.9846.22 via Frontend Transport; Fri,
 24 Apr 2026 13:36:02 +0000
Received: from outbound-uk1.az.dlp.m.darktrace.com (4.158.2.129) by
 AMS1EPF00000045.mail.protection.outlook.com (10.167.16.42) with Microsoft
 SMTP Server (version=TLS1_3, cipher=TLS_AES_256_GCM_SHA384) id 15.20.9846.18
 via Frontend Transport; Fri, 24 Apr 2026 13:36:02 +0000
Received: from DU2PR08MB7272.eurprd08.prod.outlook.com (2603:10a6:10:2d7::16)
 by DB9PR08MB6348.eurprd08.prod.outlook.com (2603:10a6:10:263::24)
 with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9846.22; Fri, 24 Apr
 2026 13:34:59 +0000
Received: from DU2PR08MB7272.eurprd08.prod.outlook.com
 ([fe80::5d34:206f:373:a323]) by DU2PR08MB7272.eurprd08.prod.outlook.com
 ([fe80::5d34:206f:373:a323%6]) with mapi id 15.20.9846.021; Fri, 24 Apr 2026
 13: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=selector1 header.d=arm.com header.i="@arm.com" header.h="From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck"; dkim=pass header.s=selector1 header.d=arm.com header.i="@arm.com" header.h="From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck"
ARC-Seal: i=2; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=pass;
 b=pCfx8Mw3Boe/sE1PCHtPeInu9ELWFJxG0FDiYKb+IECeAiPiMM3Ax/CnW2EvjyKTD96oLxjt3aARPQ1CrIkSfadkSUSB6R6mv7rqO0nzBdgeREgUzsxWH0NKFOA1mXD2AAvN4I+dl0di/X3UfrarjaPnKZwaZi7fb5ExIAejIZ6AyZn5YYxicILm5Igc2Ys2uZSjlSj1z2KYsKkK8pflxAOERVmPrpvZCG2mcH7pMb+Tj6kiN7yUwC/7UtISJDf3XkQ2kHN5Dbl45sI/QidAaoBOSzyjvFRybZJfIGad+JYQA1z88cyeZmBbmOwxBAfj8f1UnA8+9HObi5ItUnltmw==
ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com;
 s=arcselector10001;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1;
 bh=bmy7HzYXvJ10sD3XGH84NxdNdHKo+kCSSsl5RHAIIog=;
 b=N7FNqlSdHvdq7RFcwq7A2e04VOCT5CV2VMYB+A2KSiBtaptUq2Mtd2wJ/x1Nt/EtNndLd77yYmWY6gfdcaeuY6erYXRp/6B03YVkrs7D9ctDw8vAL3l3xju034Xfz4YpGBJpY6JgFm9J5dZaoNaAYRdrJ6zohnCdMW+lneoHTJCR4bf34LiZd+n8UHmEvELGpuREy6Pj/HLL1disE8PWtUOUqyqQCNhzPtLPxzZXEEmMcPLK/Ftiv7IAxKsG7kMKXqnqXGxT5E0FJyIlkGKwqpT1MDxRG3NF6djaNJO45ncIi16HToyiHA/fJgKpQjrLKQ8Xj/KP1zXuXCiyb+4jQg==
ARC-Authentication-Results: i=2; mx.microsoft.com 1; spf=pass (sender ip is
 4.158.2.129) smtp.rcpttodomain=gmail.com smtp.mailfrom=arm.com; dmarc=pass
 (p=none sp=none pct=100) action=none header.from=arm.com; dkim=pass
 (signature was verified) header.d=arm.com; arc=pass (0 oda=1 ltdi=1
 spf=[1,1,smtp.mailfrom=arm.com] dkim=[1,1,header.d=arm.com]
 dmarc=[1,1,header.from=arm.com])
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=arm.com; s=selector1;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck;
 bh=bmy7HzYXvJ10sD3XGH84NxdNdHKo+kCSSsl5RHAIIog=;
 b=ip0SaOXW1i9967G4Y0mkHMH9w8o0EvO1vn0ER82S7IgSMMk08Vcz1akou2H7tkNhh72JEB94QEX77t0oYBOmIbmbxQHAXJALw2V3Bad9iPIT5iNoJCF7YGv0uZhoeDOB3QGAizvFJ1uyoZzAXbQwv8LaJ5Wi2aF1xRqfZdK2zyg=
X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 4.158.2.129)
 smtp.mailfrom=arm.com; dkim=pass (signature was verified)
 header.d=arm.com;dmarc=pass action=none header.from=arm.com;
Received-SPF: Pass (protection.outlook.com: domain of arm.com designates
 4.158.2.129 as permitted sender) receiver=protection.outlook.com;
 client-ip=4.158.2.129; helo=outbound-uk1.az.dlp.m.darktrace.com; pr=C
ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none;
 b=Faj4Z16snzJOt/egmzQYE8d6D20uF+3/dlEdQ0iX/kTkgY1uIu8MDZvFl87DoZAADkJ0cxS/OEUn/E8I5aCD0wVOZXliVBiGFOw1Ddc7JJb6RbpSWisnMhBi+WaveOuFAhoOyvNWdS5Z71ZHxExx8IS7ne6PZ2hZ+YRx60Bd4k5LCSh2+b71lcG1DTNGSpSAF9kNW/yS0YTrkz5YPBWH0qxAXx1yC3rI+PeFeqtpT3yS9Yaw09JqnS4xrvvhB2Bq6c1mruu7+QuE53v+PT2xsUp+onRrOqVjXgf02q/WiXX+AsTNR5dSC+jXEBsnQTVXxjRdDKIP0Nqn4prJ8zknHQ==
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com;
 s=arcselector10001;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1;
 bh=bmy7HzYXvJ10sD3XGH84NxdNdHKo+kCSSsl5RHAIIog=;
 b=TZs7HNrvd7WCYeOo4gN6Hh92X+Akt9eH6/FkG3NFURUW5qOrW8wfIMr5ZujydyUgLgZq25fVNG7nyInF2fgnMbCnNasJ5B2OECeSR8sc7SgGR6J2WwKv9nQQMgXz+Y5mLSh+gDV3Q4MMvQKZLa8xHj54T5nw3cdOhw5vNR8V8Q1Kv47lAjRrvNdyvNIIJNQCsFcCQTGQQlre8dcHFoBvnw1zX5siEaj7RHTuzzk1fC/6BrrTW7Eus4m1O7/BAMtsP22pk6MVHfN1/Yqkeaot526vCaX+IOXkPfdB2aZZlWKJhUd2Z4MZUqoYz81AubysXQoICrMPioZhFq2LneTkTQ==
ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass
 smtp.mailfrom=arm.com; dmarc=pass action=none header.from=arm.com; dkim=pass
 header.d=arm.com; arc=none
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=arm.com; s=selector1;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck;
 bh=bmy7HzYXvJ10sD3XGH84NxdNdHKo+kCSSsl5RHAIIog=;
 b=ip0SaOXW1i9967G4Y0mkHMH9w8o0EvO1vn0ER82S7IgSMMk08Vcz1akou2H7tkNhh72JEB94QEX77t0oYBOmIbmbxQHAXJALw2V3Bad9iPIT5iNoJCF7YGv0uZhoeDOB3QGAizvFJ1uyoZzAXbQwv8LaJ5Wi2aF1xRqfZdK2zyg=
From: Luca Fancellu <Luca.Fancellu@arm.com>
To: Mykola Kvach <xakep.amatop@gmail.com>
CC: "xen-devel@lists.xenproject.org" <xen-devel@lists.xenproject.org>, 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>
Subject: Re: [PATCH v8 08/13] iommu/ipmmu-vmsa: Implement suspend/resume
 callbacks
Thread-Topic: [PATCH v8 08/13] iommu/ipmmu-vmsa: Implement suspend/resume
 callbacks
Thread-Index: AQHc0+8l3+I00g5Ym0qFHM3WPj8anQ==
Date: Fri, 24 Apr 2026 13:34:59 +0000
Message-ID: <55B2462D-41E5-42CB-9525-39CF4843E95E@arm.com>
References: <cover.1775125380.git.mykola_kvach@epam.com>
 <63b219c3cae5201c5db804f69c3b88ac41c9bdf6.1775125380.git.mykola_kvach@epam.com>
In-Reply-To:
 <63b219c3cae5201c5db804f69c3b88ac41c9bdf6.1775125380.git.mykola_kvach@epam.com>
Accept-Language: en-GB, en-US
Content-Language: en-US
X-MS-Has-Attach:
X-MS-TNEF-Correlator:
x-mailer: Apple Mail (2.3826.700.81.1.6)
Authentication-Results-Original: dkim=none (message not signed)
 header.d=none;dmarc=none action=none header.from=arm.com;
x-ms-traffictypediagnostic:
	DU2PR08MB7272:EE_|DB9PR08MB6348:EE_|AMS1EPF00000045:EE_|DB9PR08MB8290:EE_
X-MS-Office365-Filtering-Correlation-Id: 5efcb085-6fad-41e1-7a09-08dea2066d6c
x-checkrecipientrouted: true
nodisclaimer: true
X-MS-Exchange-SenderADCheck: 1
X-MS-Exchange-AntiSpam-Relay: 0
X-Microsoft-Antispam-Untrusted:
 BCL:0;ARA:13230040|366016|376014|1800799024|56012099003|18002099003|22082099003|38070700021;
X-Microsoft-Antispam-Message-Info-Original:
 vfNMt1WM4XhBjmPRgmubHGrxEj3TtyQVrxCQi7UANMlo7waPCcJdWFEG143i6HmDiEYsMv3Q0XAzFduxoiMgn7ZWJbgZze6sQLya1j93tnGQBh9+zJ9o0fIsVPzqIXvwAvaMQi0YC1INVTexzZwjPxdnpUMaDzQSV3Ne2S+wtAcPG0NRVPpkPgBJabFBA7BcE27ZOpD8VXcljzAAIaLz5lCH5B+/OSZsm6vMwiTRx87UdsY+MPCF6UI7FeNTgVkPTHF8vzpdRliQ8hesUpPmcZS6SBAxh9vzMpBfcL43nQ9gbk3kXwb5ko6PEYIJc1bU4QEfeHmn15Vo3zDzG3qU7cYhozjbZR+Ak9WkJK0db318YJNocyqtaSA7Pmra3QuB8pJkT+vZvbIxrOIj5iafqGarrH6ooTjYooE8ZCdvlnIKMxwHCBTZyLsDWER1QFZ0T16eenWSSOUvVa9elA0F6b3qt1wRGOLBpGmuP+olR8WD9OoceQAuzYL0TyscGLMYT0DHXJjavsrbQwTiXDz0PHaUIbPJIAloZV06JT1hEb9QYYoOBvHiWcef4NgmIP2fqE8Ze+H8tbBhrXDKo9UPigYHzD9/glWs9ZrK7dZU+bRQgDgTFQoFtb+sNQ5QujKZWXPeNeYBAIKe7SAVr/GOhxA/Cg/nHJByq7FBuSchXyiHuf+yepdrt+i/NeCuvtMtluhkJlAdDwLdPBBNG1k3GmJr9CdXujdyjumJ2UcDtvp87FeVbRfR5rgt76Iu1v+fAuYHZkaHoT9XlnbT+J0qD/y+bpfflXmsF58emJJazFg=
X-Forefront-Antispam-Report-Untrusted:
 CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:DU2PR08MB7272.eurprd08.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(366016)(376014)(1800799024)(56012099003)(18002099003)(22082099003)(38070700021);DIR:OUT;SFP:1101;
Content-Type: text/plain; charset="utf-8"
Content-ID: <0868DF37AF62664DBE9D306CEFD1984A@eurprd08.prod.outlook.com>
Content-Transfer-Encoding: base64
MIME-Version: 1.0
X-Exchange-RoutingPolicyChecked:
 TqZvac4gRZ+GVWx6ZhHHePk2oTKSmrrNPuw0h/SE+QELUvayA7vlwTb+Irw+6R9zNGtRoNsR2zCQX3ZlU74NjKb+AB1rGmgRLW/8bgexS2ZxvIWj5Ac99/q4mLlo822+Q1o5eGEXQhCOJZtVaTt0SC6/L1TOuaRahB8vTUDpxMCvl1GLbkZ+PPAVBlWnzJUiGMzGJspAJtjWCcWr8nk4FE/A2P0+jO3VGbTJrP/hJqxkILTzIFsZk5qofitkrF3dekkXziZxHjzCgGIMxot+z2jjL6ZzADwHd37hoftrmhgMrfJNClMZmKAfmsCpOsOXtnhN3YvfTPpA+LyZc2LoAQ==
X-MS-Exchange-Transport-CrossTenantHeadersStamped: DB9PR08MB6348
X-EOPAttributedMessage: 0
X-MS-Exchange-Transport-CrossTenantHeadersStripped:
 AMS1EPF00000045.eurprd04.prod.outlook.com
X-MS-PublicTrafficType: Email
X-MS-Office365-Filtering-Correlation-Id-Prvs:
	f96cb27e-4fe9-4dd7-6b7c-08dea20647cc
X-Microsoft-Antispam:
	BCL:0;ARA:13230040|14060799003|1800799024|82310400026|35042699022|376014|36860700016|18002099003|22082099003|56012099003;
X-Microsoft-Antispam-Message-Info:
	MRqE1mp9lpfkQs3O3Ehu28wRfR8KTHsdCMT0AOtC83jqS2styowwkcA8cQt+7u6GgAfH4su1AAXlJWbndu7+DypZEAhWp7tLEnAsRVwwELwRXO26JuBqT5pmmeNSH4EniVg10KmaeIfdJ0boqsCEJa3i/lIgxlbognfNgS9a8IIpKjsHF4A4fH16NTUAVQc5YxqEDgmSDuSOd7OSI34TfglmwYyTNIrz2AfA1NmSy7Tnpg5mbc3rFXhlLDNGHQrd4nAy93qRaDK4VuR6h2PUbEPwUc9xmEwTbIWUSi+2sUPlJfgsX1dk3RXH0Hc3HwtJqc+YdaFX0NeftyU6XIJ/igchWmOOKClplkYVD5/vsX0zVZyjnk/jXxPxFDoyNpx6ZeBE/QIEQ9ypWT+SV1vGq2zOudVpF6xm4Mv+bju3dur/SF7pOyIEWg12zIvw96qlnlQUFF9dqH8YBrvgBsKnQjnVVa7dv8O3HorMl/bH3eKm/mhopK6MNquUVmrHhfiG0GUX2Baww9uvyGtBso14qmn/k2SsObvUQjpq7CiysSloIpN0PhhuIhPCV/iCKvB3XfSQ+vE0xyWUdBv+7AaxjY7FEBR+7HJ/qQyBuJUgeGjPPl0vW/NGj68jVdN0i29ql6SscqV66i7ZB3nek60WBJvv/RxRUuFfgJfcBLhknpglCshWJDhUjsdUHffM+L2JoG9GU9RoJhN2J6vVarDny41NpnXURL6uvkOABZvgSEDi3EXln309U3ZSdlx5UwZMaMRrU5HAPT2n7gFl/OeN2Q==
X-Forefront-Antispam-Report:
	CIP:4.158.2.129;CTRY:GB;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:outbound-uk1.az.dlp.m.darktrace.com;PTR:InfoDomainNonexistent;CAT:NONE;SFS:(13230040)(14060799003)(1800799024)(82310400026)(35042699022)(376014)(36860700016)(18002099003)(22082099003)(56012099003);DIR:OUT;SFP:1101;
X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1
X-MS-Exchange-AntiSpam-MessageData-0:
	XrYnB/99QlEWZ1IeMEDFZlmPPbvqFC9cJQRCQ05LpxFYCSjwK2UW16ler5azHkPGFgIlNERXD6Vq3G24vohER/NZh9Zbaa1d+gV2iJOalBdGRzFEQQezmNWE+dHMO0g2S22HIv1KModyXFVHPQvTYdQOrNK3R9Snl9SzCfL+GxuFkEufF5wBKm+CZmL3eHK2aTvgPB4mTu2XbDbk5c2MBzE7sRagUJDEpkRHgBcFznzqUAoFgsqW6TH6T5RzVPY4cnSDEpBhLaxOD+u8k99CQ234EhQYzaPstXm8wUkMY+8710u2IupCdT9Bg6WQFHWmg5m8PjL8nQ0Q7t7IABexIEwjCeAreROC2QCXEDDgtAg2MD/iZEtwRHTDqyUCAVtDghX0+8v0qVg1vKcUZa2F6SDKUTX+OGO/3hywcsRAsUOpuX8TBdFo18l5iCw1qsTN
X-OriginatorOrg: arm.com
X-MS-Exchange-CrossTenant-OriginalArrivalTime: 24 Apr 2026 13:36:02.1520
 (UTC)
X-MS-Exchange-CrossTenant-Network-Message-Id: 5efcb085-6fad-41e1-7a09-08dea2066d6c
X-MS-Exchange-CrossTenant-Id: f34e5979-57d9-4aaa-ad4d-b122a662184d
X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=f34e5979-57d9-4aaa-ad4d-b122a662184d;Ip=[4.158.2.129];Helo=[outbound-uk1.az.dlp.m.darktrace.com]
X-MS-Exchange-CrossTenant-AuthSource:
	AMS1EPF00000045.eurprd04.prod.outlook.com
X-MS-Exchange-CrossTenant-AuthAs: Anonymous
X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem
X-MS-Exchange-Transport-CrossTenantHeadersStamped: DB9PR08MB8290
X-purgate-ID: tlsNG-720697/1777037767-892CE161-2006E151/0/0
X-purgate-type: clean
X-purgate-size: 3060

SGkgTXlrb2xhLA0KDQo+IE9uIDIgQXByIDIwMjYsIGF0IDExOjQ1LCBNeWtvbGEgS3ZhY2ggPHhh
a2VwLmFtYXRvcEBnbWFpbC5jb20+IHdyb3RlOg0KPiANCj4gRnJvbTogT2xla3NhbmRyIFR5c2hj
aGVua28gPG9sZWtzYW5kcl90eXNoY2hlbmtvQGVwYW0uY29tPg0KPiANCj4gU3RvcmUgYW5kIHJl
c3RvcmUgYWN0aXZlIGNvbnRleHQgYW5kIG1pY3JvLVRMQiByZWdpc3RlcnMuDQo+IA0KPiBUZXN0
ZWQgb24gUi1DYXIgSDMgU3RhcnRlciBLaXQuDQo+IA0KPiBTaWduZWQtb2ZmLWJ5OiBPbGVrc2Fu
ZHIgVHlzaGNoZW5rbyA8b2xla3NhbmRyX3R5c2hjaGVua29AZXBhbS5jb20+DQo+IFNpZ25lZC1v
ZmYtYnk6IE15a29sYSBLdmFjaCA8bXlrb2xhX2t2YWNoQGVwYW0uY29tPg0KPiAtLS0NCj4gQ2hh
bmdlcyBpbiBWNzoNCj4gLSBtb3ZlZCBzdXNwZW5kIGNvbnRleHQgYWxsb2NhdGlvbiBiZWZvcmUg
cGNpIHN0dWZmDQo+IC0tLQ0KPiB4ZW4vZHJpdmVycy9wYXNzdGhyb3VnaC9hcm0vaXBtbXUtdm1z
YS5jIHwgMzA1ICsrKysrKysrKysrKysrKysrKysrKystDQo+IDEgZmlsZSBjaGFuZ2VkLCAyOTgg
aW5zZXJ0aW9ucygrKSwgNyBkZWxldGlvbnMoLSkNCj4gDQo+IGRpZmYgLS1naXQgYS94ZW4vZHJp
dmVycy9wYXNzdGhyb3VnaC9hcm0vaXBtbXUtdm1zYS5jIGIveGVuL2RyaXZlcnMvcGFzc3Rocm91
Z2gvYXJtL2lwbW11LXZtc2EuYw0KPiBpbmRleCBlYTlmYTlkZGYzLi42NzY1YmQzMDgzIDEwMDY0
NA0KPiAtLS0gYS94ZW4vZHJpdmVycy9wYXNzdGhyb3VnaC9hcm0vaXBtbXUtdm1zYS5jDQo+ICsr
KyBiL3hlbi9kcml2ZXJzL3Bhc3N0aHJvdWdoL2FybS9pcG1tdS12bXNhLmMNCj4gQEAgLTcxLDYg
KzcxLDggQEANCj4gfSkNCj4gI2VuZGlmDQo+IA0KPiArI2RlZmluZSBkZXZfZGJnKGRldiwgZm10
LCAuLi4pICAgIFwNCj4gKyAgICBkZXZfcHJpbnQoZGV2LCBYRU5MT0dfREVCVUcsIGZtdCwgIyMg
X19WQV9BUkdTX18pDQo+ICNkZWZpbmUgZGV2X2luZm8oZGV2LCBmbXQsIC4uLikgICAgXA0KPiAg
ICAgZGV2X3ByaW50KGRldiwgWEVOTE9HX0lORk8sIGZtdCwgIyMgX19WQV9BUkdTX18pDQo+ICNk
ZWZpbmUgZGV2X3dhcm4oZGV2LCBmbXQsIC4uLikgICAgXA0KPiBAQCAtMTMwLDYgKzEzMiwyNCBA
QCBzdHJ1Y3QgaXBtbXVfZmVhdHVyZXMgew0KPiAgICAgdW5zaWduZWQgaW50IGltdWN0cl90dHNl
bF9tYXNrOw0KPiB9Ow0KPiANCg0KDQo+IFvigKZdDQoNCg0KPiANCj4gQEAgLTEzNDAsMTAgKzE2
MDgsMTEgQEAgc3RhdGljIGludCBpcG1tdV9hZGRfZGV2aWNlKHU4IGRldmZuLCBzdHJ1Y3QgZGV2
aWNlICpkZXYpDQo+ICAgICBzdHJ1Y3QgaW9tbXVfZndzcGVjICpmd3NwZWM7DQo+IA0KPiAjaWZk
ZWYgQ09ORklHX0hBU19QQ0kNCj4gKyAgICBpbnQgcmV0Ow0KPiArDQo+ICAgICBpZiAoIGRldl9p
c19wY2koZGV2KSApDQo+ICAgICB7DQo+ICAgICAgICAgc3RydWN0IHBjaV9kZXYgKnBkZXYgPSBk
ZXZfdG9fcGNpKGRldik7DQo+IC0gICAgICAgIGludCByZXQ7DQo+IA0KPiAgICAgICAgIGlmICgg
ZGV2Zm4gIT0gcGRldi0+ZGV2Zm4gKQ0KPiAgICAgICAgICAgICByZXR1cm4gMDsNCj4gQEAgLTEz
NzEsNiArMTY0MCwxNSBAQCBzdGF0aWMgaW50IGlwbW11X2FkZF9kZXZpY2UodTggZGV2Zm4sIHN0
cnVjdCBkZXZpY2UgKmRldikNCj4gICAgICAgICAvKiBMZXQgWGVuIGtub3cgdGhhdCB0aGUgbWFz
dGVyIGRldmljZSBpcyBwcm90ZWN0ZWQgYnkgYW4gSU9NTVUuICovDQo+ICAgICAgICAgZHRfZGV2
aWNlX3NldF9wcm90ZWN0ZWQoZGV2X3RvX2R0KGRldikpOw0KPiAgICAgfQ0KPiArDQo+ICsjaWZk
ZWYgQ09ORklHX1NZU1RFTV9TVVNQRU5EDQo+ICsgICAgaWYgKCBpcG1tdV9hbGxvY19jdHhfc3Vz
cGVuZChkZXYpICkNCj4gKyAgICB7DQo+ICsgICAgICAgIGRldl9lcnIoZGV2LCAiRmFpbGVkIHRv
IGFsbG9jYXRlIGNvbnRleHQgZm9yIHN1c3BlbmRcbiIpOw0KPiArICAgICAgICByZXR1cm4gLUVO
T01FTTsNCj4gKyAgICB9DQo+ICsjZW5kaWYNCg0KSWYgdGhpcyBmYWlscyB0aGUgZGV2aWNlIHdp
bGwgcmVtYWluIHByb3RlY3RlZCwgSSBzdWdnZXN0IHdlIG1vdmUgdGhpcyBvbmUgYmVmb3JlIGBp
ZiAoICFkZXZfaXNfcGNpKGRldikgKSB7IOKApiB9YA0KYmxvY2sNCg0KVGhlIHJlc3QgbG9va3Mg
b2sgdG8gbWUsIGJ1dCBJ4oCZbSBub3QgYW4gZXhwZXJ0IG9mIHRoaXMgcGFydC4NCg0KQ2hlZXJz
LA0KTHVjYQ0KDQo=


From xen-devel-bounces@lists.xenproject.org Fri Apr 24 13:37:02 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Fri, 24 Apr 2026 13:37:02 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1293569.1571192 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wGGiM-0002Rv-RK; Fri, 24 Apr 2026 13:37:02 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1293569.1571192; Fri, 24 Apr 2026 13:37: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 1wGGiM-0002Ro-OS; Fri, 24 Apr 2026 13:37:02 +0000
Received: by outflank-mailman (input) for mailman id 1293569;
 Fri, 24 Apr 2026 13:37:00 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92) id 1wGGiK-0002RW-PB
 for xen-devel@lists.xenproject.org; Fri, 24 Apr 2026 13:37:00 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wGGiK-000jjh-65
 for xen-devel@lists.xenproject.org; Fri, 24 Apr 2026 15:37:00 +0200
Received: from [10.42.69.8] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <oleksii.kurochko@gmail.com>)
 id 69eb71f6-5cb7-0a2a0a5109dd-0a2a4508ebfc-26
 for <xen-devel@lists.xenproject.org>; Fri, 24 Apr 2026 15:37:00 +0200
Received: from [209.85.167.53] (helo=mail-lf1-f53.google.com)
 by tlsNG-c1860d.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.1)
 (envelope-from <oleksii.kurochko@gmail.com>)
 id 69eb71fb-63b5-0a2a45080019-d155a735d18f-3
 for <xen-devel@lists.xenproject.org>; Fri, 24 Apr 2026 15:37:00 +0200
Received: by mail-lf1-f53.google.com with SMTP id
 2adb3069b0e04-5a283c44478so13340032e87.3
 for <xen-devel@lists.xenproject.org>; Fri, 24 Apr 2026 06:37:00 -0700 (PDT)
Received: from fedora (user-109-243-69-121.play-internet.pl. [109.243.69.121])
 by smtp.gmail.com with ESMTPSA id
 2adb3069b0e04-5a5241f6583sm3649078e87.39.2026.04.24.06.36.57
 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
 Fri, 24 Apr 2026 06:36:58 -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=20251104 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=20251104; t=1777037819; x=1777642619; 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;
        bh=0NnGgV5M3igXJCiYnxgULWkuy2e7zrxF4KNcDwNtdnc=;
        b=ekDjR4ftQ8AAi0XD/AGNmQ9aU0qs7MGjv5RuyYUWMX1ewbvGdq8m8yH0fY91LNDWBn
         jfdA75G+OSkCRB0OYmuFe6Nros5n8aSVLw+nusEX/v0YRuCwrdjCRxEf0z1FRgGBFbxZ
         tz8Wq5c6At+VLSH7bBIOEPuYtbDAWvmASL6ulQZQRl2W6uvd/GTMvGcBvBZfxRxpERPE
         NXQ7n1AmOk5kaH9w3KJCq94jgHv5w3DN6pacHo6AHj/LgDQOZO+SDYRar5zfV7PmGqXE
         Mlwwf1AFLzNGhx3IOuILRnWdzDhMcVITbG42wsfWjgRcrr1E8TS4b4+qcoTqcWWJy3zt
         urDw==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20251104; t=1777037819; x=1777642619;
        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;
        bh=0NnGgV5M3igXJCiYnxgULWkuy2e7zrxF4KNcDwNtdnc=;
        b=CSc3Au8H7Tqf3zIBkL9m7dzkZjurV41NliyYixMYJlwoSQl9Uijdu7iitiS4PalLZR
         G3KYviVr48QWwdZh3SUI7YZCAQ8c+pnv4iiP2V/GwRuwFlTP+5xNFWdiuCLFY5fMW+UJ
         fKmxabrdXkY9MouXa9Cs0F0AQ3YrzbNGKl6R4/ijeQ/jE5mbS/8jFEi4cWPxjkh/4ZSF
         OFmJtlM8GwZl9v2xYhvDY8r/aZUe9mkQ55Eux6d8ioyTUrPCy1qp7k+hf1dvu7Bv8AXN
         yOPJU3lbf8Iq2E87RNDcRo5Z74zCG+woSVKe4aIea03a2RX8Z7dwG8LRb747H7lmP+rU
         A/Fw==
X-Gm-Message-State: AOJu0Ywz2mdifGlFjzVegAAYxGitaBDH8eGLfmM6XqNbjQcsPKxV/RWy
	kURS+2i2N8hp+LNGYS8PqQm4ud1mNdBXrgvgCk5WbxRWkC/2DUg68OLvoz2y5Q==
X-Gm-Gg: AeBDies3YjhS0kEGgZBIrpgcFQP0hNTOOLnltq8REGUhx7pniBh/X+/ArmAyIiI7e1B
	xh52L+EWt+Sp6GszjSF291zf91lxOfAYyuStZk0KXuvVK3f8XE7ZAVG7seQ0q2mwHoOa4h53a82
	afrGqVwmUs17GlGwq1VAL4quI+5b/6H6SrbnO8MuSqHc0SmvIZot3VkDDSUa8N4QP4tOqouQBN1
	MtlDYxsQ/Kk37iO4nEPolHxbHgRvTf//bW89cP1+t0qt9viY3xPS8av/TOCJisIC2/y8v4WceQu
	1VXt7cbNz8trNpN+elSJRPXR+ubCGoqvrrlCF++PFtdyRjD4XLrAd6rhHYe947ojtwzdbFcsIBs
	4NyoGdMraIfl6fVZimGWVWzeLs62/z+CGQCdee31/iBegUBwmAMAt9vTi488QMI/TTqC9EWpZn1
	YpKJa2w0L17h5+GSGlZ2L9pnAtHYgNSpvVJdac3SyqI33E0la0/Ta800rYdVAfvzuDf6TMuZCBx
	ooT
X-Received: by 2002:ac2:4e0a:0:b0:5a4:1672:59d0 with SMTP id 2adb3069b0e04-5a4172c9267mr9627765e87.19.1777037818744;
        Fri, 24 Apr 2026 06:36:58 -0700 (PDT)
From: Oleksii Kurochko <oleksii.kurochko@gmail.com>
To: xen-devel@lists.xenproject.org
Cc: Romain Caritey <Romain.Caritey@microchip.com>,
	Oleksii Kurochko <oleksii.kurochko@gmail.com>,
	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?q?Roger=20Pau=20Monn=C3=A9?= <roger.pau@citrix.com>,
	Volodymyr Babchuk <Volodymyr_Babchuk@epam.com>
Subject: [PATCH v3 0/3] dom0less: various updates
Date: Fri, 24 Apr 2026 15:36:48 +0200
Message-ID: <cover.1776957840.git.oleksii.kurochko@gmail.com>
X-Mailer: git-send-email 2.53.0
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit
X-purgate-ID: tlsNG-c1860d/1777037820-C0766DB1-20CA3D03/10/73395122804
X-purgate-type: spam
X-purgate-size: 3979

This patch series introduces a new field to track not-yet-used phandles as there
are some use cases where RISC-V needs to know which phandle number could
be used for generating a device tree node.

For example, on the RISC-V side in make_cpus_node() [1] it is necessary to know
which phandle number is unused to use it for device tree node generation.

Here is an example of generated guest DTB:
    cpus {
    ...
      cpu@0 {
    ...
        interrupt-controller {
          compatible = "riscv,cpu-intc";
          #interrupt-cells = <0x1>;
          interrupt-controller;
          phandle = <0xfdea>;
        };
      };
    };

    /soc/imsics@28000000 {

      interrupts-extended = <0xfdea 0x9 >;

      phandle = <0xfdeb>;
    };

    /soc/aplic@d000000 {
    ...
      msi-parent = <0xfdeb>;
      phandle = <0x1>;
    };

Note that phandles for imsic and riscv,cpu-intc are generated in this example
not by get_next_free_phandle(), that is why they have such big numbers.

For non-RISC-V people, APLIC is an interrupt controller (something like GIC in
Arm), IMSIC is an interrupt controller that provides MSI and connects to
each CPU.

So (based on the DTS above) for APLIC, kinfo->phandle_intc is reused, which
will also be re-used for the device node's interrupt property. For all others, I
just introduced GUEST_PHANDLE_LAST [2] and used it for generation [3]. But I expect
that it could be useful for other architectures too so I just moved it to common
and re-use pfdt to understand what the maximum used phandle is.

[1] https://www.kernel.org/doc/Documentation/devicetree/bindings/interrupt-controller/riscv%2Ccpu-intc.txt
[2] https://lore.kernel.org/xen-devel/ccd6d21b224b478c88ca5f2fdd2d1dd507671510.1773157782.git.oleksii.kurochko@gmail.com/
[3] https://lore.kernel.org/xen-devel/fd64b8526a23e9d7775b9b48c5a933b0673c4fba.1773157782.git.oleksii.kurochko@gmail.com/
           *************************************

Another thing introduced in this patch series is moving domain type to common
code as several architectures (ARM and RISC-V for now) use them and it
looks pretty architecture-independent. Also, is_64bit_domain() is used by
dom0less common code, so I found it useful also to move is_{32,64}bit_domain
macros to common code.

           *************************************

And the last thing is changing the prototype of make_cpus_node() to be aligned
with other make_*_node() and since RISC-V will need access to the free_phandle field
(even if it will be moved to kinfo->arch.free_phandle) and for the reason that
this ->free_phandle is updated in make_*_node(), the kinfo argument is passed as
non-const.

CI: https://gitlab.com/xen-project/people/olkur/xen/-/pipelines/2471778654

---
Changes in v3:
 - Rebase on top of staging.
 - Address the comments.
---
Changes in v2:
 - Address the comments from ML.
---


Oleksii Kurochko (3):
  xen/dom0less: introduce next_phandle in struct kernel_info
  xen/dom0less: pass kernel_info struct instead of fdt to
    make_cpus_node()
  xen: introduce CONFIG_HAS_DOMAIN_TYPE

 xen/arch/arm/Kconfig                    |  1 +
 xen/arch/arm/arm64/domctl.c             |  4 +--
 xen/arch/arm/dom0less-build.c           | 14 --------
 xen/arch/arm/domain_build.c             | 17 +++++-----
 xen/arch/arm/include/asm/domain.h       | 12 -------
 xen/arch/arm/include/asm/kernel.h       |  4 ---
 xen/arch/arm/kernel.c                   | 16 ++++-----
 xen/common/Kconfig                      |  3 ++
 xen/common/device-tree/dom0less-build.c | 45 ++++++++++++++++++-------
 xen/include/xen/dom0less-build.h        |  2 --
 xen/include/xen/domain.h                | 13 +++++++
 xen/include/xen/fdt-domain-build.h      | 17 +++++++++-
 xen/include/xen/fdt-kernel.h            | 11 ++++++
 xen/include/xen/sched.h                 |  4 +++
 14 files changed, 98 insertions(+), 65 deletions(-)

-- 
2.53.0



From xen-devel-bounces@lists.xenproject.org Fri Apr 24 13:37:04 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Fri, 24 Apr 2026 13:37:04 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1293570.1571202 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wGGiO-0002fX-2E; Fri, 24 Apr 2026 13:37:04 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1293570.1571202; Fri, 24 Apr 2026 13:37: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 1wGGiN-0002fM-Uk; Fri, 24 Apr 2026 13:37:03 +0000
Received: by outflank-mailman (input) for mailman id 1293570;
 Fri, 24 Apr 2026 13:37:02 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92) id 1wGGiM-0002Rg-6C
 for xen-devel@lists.xenproject.org; Fri, 24 Apr 2026 13:37:02 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wGGiL-000jjh-JA
 for xen-devel@lists.xenproject.org; Fri, 24 Apr 2026 15:37:01 +0200
Received: from [10.42.69.9] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <oleksii.kurochko@gmail.com>)
 id 69eb71fa-5cb7-0a2a0a5109dd-0a2a4509da28-20
 for <xen-devel@lists.xenproject.org>; Fri, 24 Apr 2026 15:37:01 +0200
Received: from [209.85.167.46] (helo=mail-lf1-f46.google.com)
 by tlsNG-bad1c0.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.1)
 (envelope-from <oleksii.kurochko@gmail.com>)
 id 69eb71fd-2497-0a2a45090019-d155a72eac6f-3
 for <xen-devel@lists.xenproject.org>; Fri, 24 Apr 2026 15:37:01 +0200
Received: by mail-lf1-f46.google.com with SMTP id
 2adb3069b0e04-5a0faa0d15cso7756722e87.0
 for <xen-devel@lists.xenproject.org>; Fri, 24 Apr 2026 06:37:01 -0700 (PDT)
Received: from fedora (user-109-243-69-121.play-internet.pl. [109.243.69.121])
 by smtp.gmail.com with ESMTPSA id
 2adb3069b0e04-5a5241f6583sm3649078e87.39.2026.04.24.06.36.58
 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
 Fri, 24 Apr 2026 06:36:59 -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=20251104 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=20251104; t=1777037820; x=1777642620; 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;
        bh=YeUlz7Qpf2B9MkICZ3XhoDDRV4QPAj1kbAZBfKIlP24=;
        b=AYM3+x8i1CyqgPAV+spfNGgmteZh8NLrT9c2BjeeihffZ9QTlsoLIgD/jm1G2RZjSp
         8dW3nUGFGmz8bpFRF7GPNXoJvS1aSZgeYx/8cxilkHsDZp8vPEskvmpWNhyCWEUfT3kf
         scMnDXECjyj7uDUeD2Yxyzz5dUDSMfLBI7w5UISBUeXvZqYTGHOA7OZMs31Ux/Smv6Qa
         y9ddyFuhHEZW6H2NP+UnGQfCPQTWom4d9hd9YK68qLRL/UVXE9JHd6RqMsVRJBS5Bdg7
         42+/VQQ6up5FMHQ0b7O4mpmO8NMOlXeOa7XYY3qJkZc9GVWQ0ff7A8iHN5S3LLodMfbb
         qHzA==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20251104; t=1777037820; x=1777642620;
        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;
        bh=YeUlz7Qpf2B9MkICZ3XhoDDRV4QPAj1kbAZBfKIlP24=;
        b=oyNe639n0aOTOeoVrmtbHDHoAWR+1ylrLIMzFrtv0zexG9o52rizYs2raQpgEoE/hG
         OxI//jpc2qvrk06oPw7ls4hzvDC/+/cvWIonEkK1RW4Ypkp62aH67XEIQByDxcdEhpiT
         KS/7Pj6sslUzxoXoUVnpGjT7gYL80LbE7uoW/QPxXJI3qqhh4HCUVvEAAEJsk2NGNeCJ
         Oqa6YEHcQFWbYlWNU1DK2bUEylD+3vCzYDXlXoPvI85TxTBMhmne6I4Pkdfw8cup1kCe
         TombQfs9fgXnjU/lW//AxV8MylZYi19VUlL/H8xPLGa5tVyK/mrqzIgiCSPt52Kp7xJJ
         e/Uw==
X-Gm-Message-State: AOJu0Yw8MiTY5pSozOQgwefTNr7lXN2RApB3jF1qqJulxKG7SzWf+RWX
	gn8BdeZK3jXEYM1e0C08QN7YntxZIuzvU7oKiTIrBa4HtwSe/emYfl/Au41ZkA==
X-Gm-Gg: AeBDievO15GWn7UwZ5s8C9HgaTJtvtVBgPX3/6Yf+l4pi74SqD8XSi+59AWsBoc6FmW
	HH/2JB/eIjpQUuZAeAwKSu9oxi5yYjD+Wub6viUutzw33sG5oET9qiRGWQQ8GmIMSYLn+EAXyt1
	UIkPQiYHZHqrs03xrGThv6epNF93Wi5+Ui0qX0P8QhUBaeIpzqGYcMwFzpqFXNFY+2/XohYJMbX
	+tncqWnXZ4xxz3ghrW/K7ueuOUymn1tdlMlzIL8wSzZv/XMA+Ce2/effljEIjJeJLLlrtRxhmuK
	pWhQRx5ORtyeDd0F+zq0drY7Jfr6TAPzA5WatnN7XKFTeGF3ki3AgvaiV3ys+Dv/xw0DTjjDEqd
	2rE8Ifj1JMeW4dEw63G8d71N4yy2VQIiJ8HAyYzyIr10RvPG0CaPEDJ5pbwH5NVM7CWpEbeQTBu
	tEUsLSdW2P0g08KTFLFlXGAw3fSudIBD0/MeJMCLusrMvqWClvl+tJJNEJgx3D5FwZT1j9lByN/
	g8S
X-Received: by 2002:a05:6512:1302:b0:5a3:fe60:471c with SMTP id 2adb3069b0e04-5a4172cb33amr11125558e87.16.1777037820163;
        Fri, 24 Apr 2026 06:37:00 -0700 (PDT)
From: Oleksii Kurochko <oleksii.kurochko@gmail.com>
To: xen-devel@lists.xenproject.org
Cc: Romain Caritey <Romain.Caritey@microchip.com>,
	Oleksii Kurochko <oleksii.kurochko@gmail.com>,
	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?q?Roger=20Pau=20Monn=C3=A9?= <roger.pau@citrix.com>
Subject: [PATCH v3 1/3] xen/dom0less: introduce next_phandle in struct kernel_info
Date: Fri, 24 Apr 2026 15:36:49 +0200
Message-ID: <5e3ffb41fab84b5f1b59ea81e6d267def89e2d65.1776957840.git.oleksii.kurochko@gmail.com>
X-Mailer: git-send-email 2.53.0
In-Reply-To: <cover.1776957840.git.oleksii.kurochko@gmail.com>
References: <cover.1776957840.git.oleksii.kurochko@gmail.com>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit
X-purgate-ID: tlsNG-bad1c0/1777037821-92971A53-E7173810/10/73395122804
X-purgate-type: spam
X-purgate-size: 6206

There are cases where it is necessary to know the next available phandle
number in order to generate phandles for guest device nodes.

When a partial FDT (pfdt) is provided, special care is needed during
initialization of next_phandle, as the pfdt may already contain a dummy
interrupt controller node with a phandle assigned to it. next_phandle
must therefore be initialized to one past the highest phandle already
present in the pfdt, to avoid collisions.

Since next_phandle may be needed for the very first guest node generated,
domain_handle_dtb_boot_module() is moved earlier in prepare_dtb_domU().
The new call site also aligns better with the existing comment stating
that domain_handle_dtb_boot_module() must be called before the rest of
the device tree is generated.

Introduce alloc_phandle() to ensure that phandles allocated for guest
nodes do not overlap the Xen-reserved phandle range.  This helper will
be used by subsequent patches (by RISC-V at the moment).

Signed-off-by: Oleksii Kurochko <oleksii.kurochko@gmail.com>
---
Here is an example of generated guest DTB:
    cpus {
    ...
      cpu@0 {
    ...
        interrupt-controller {
          compatible = "riscv,cpu-intc";
          #interrupt-cells = <0x1>;
          interrupt-controller;
          phandle = <0xfdea>;
        };
      };
    };

    /soc/imsics@28000000 {

      interrupts-extended = <0xfdea 0x9 >;

      phandle = <0xfdeb>;
    };

    /soc/aplic@d000000 {
    ...
      msi-parent = <0xfdeb>;
      phandle = <0x1>;
    };

Note that phandle is generated in this example not by get_next_free_phandle().

For non RISC-V people, APLIC is an interrupt controller (something like GIC in
Arm), IMSIC it is interrupt controller which provides MSI and connects to
each CPU.

[1] https://www.kernel.org/doc/Documentation/devicetree/bindings/interrupt-controller/riscv%2Ccpu-intc.txt
---
Changes in v3:
 - Drop BUG_ON(GUEST_PHANDLE_GIC == 1).
 - Update the comment above declaration of next_phandle field of srtuct
   kernel_info.
---
Changes in v2:
 - s/free_phandle/next_phandle.
 - s/get_next_free_phandle/alloc_phandle.
---
---
 xen/common/device-tree/dom0less-build.c | 43 ++++++++++++++++++-------
 xen/include/xen/fdt-domain-build.h      |  6 ++++
 xen/include/xen/fdt-kernel.h            |  6 ++++
 3 files changed, 43 insertions(+), 12 deletions(-)

diff --git a/xen/common/device-tree/dom0less-build.c b/xen/common/device-tree/dom0less-build.c
index 840d14419da2..9787ee264975 100644
--- a/xen/common/device-tree/dom0less-build.c
+++ b/xen/common/device-tree/dom0less-build.c
@@ -389,6 +389,24 @@ static int __init domain_handle_dtb_boot_module(struct domain *d,
     if ( res < 0 )
         goto out;
 
+    /*
+     * Find the highest phandle in the partial FDT so next_phandle starts
+     * above it, avoiding collisions with pfdt's own phandle assignments.
+     */
+    res = fdt_generate_phandle(pfdt, &kinfo->next_phandle);
+    if ( res )
+    {
+        res = (res == -FDT_ERR_NOPHANDLES) ? -EOVERFLOW : -EINVAL;
+        goto out;
+    }
+
+    if ( kinfo->next_phandle >= GUEST_PHANDLE_GIC )
+    {
+        dprintk(XENLOG_ERR, "Phandle allocation overlaps Xen reserved range\n");
+        res = -EOVERFLOW;
+        goto out;
+    }
+
     for ( node_next = fdt_first_subnode(pfdt, 0);
           node_next > 0;
           node_next = fdt_next_subnode(pfdt, node_next) )
@@ -459,6 +477,7 @@ static int __init prepare_dtb_domU(struct domain *d, struct kernel_info *kinfo)
     BUILD_BUG_ON(DOMU_DTB_SIZE > SZ_2M);
 
     kinfo->phandle_intc = GUEST_PHANDLE_GIC;
+    kinfo->next_phandle = 1;
 
 #ifdef CONFIG_GRANT_TABLE
     kinfo->gnttab_start = GUEST_GNTTAB_BASE;
@@ -499,6 +518,18 @@ static int __init prepare_dtb_domU(struct domain *d, struct kernel_info *kinfo)
     if ( ret )
         goto err;
 
+    /*
+     * domain_handle_dtb_boot_module() must be called before the rest of the
+     * device tree is generated because it sets phandle_intc and next_phandle,
+     * which subsequent node generation depends on.
+     */
+    if ( kinfo->dtb )
+    {
+        ret = domain_handle_dtb_boot_module(d, kinfo);
+        if ( ret )
+            goto err;
+    }
+
     ret = make_chosen_node(kinfo);
     if ( ret )
         goto err;
@@ -516,18 +547,6 @@ static int __init prepare_dtb_domU(struct domain *d, struct kernel_info *kinfo)
     if ( ret )
         goto err;
 
-    /*
-     * domain_handle_dtb_boot_module has to be called before the rest of
-     * the device tree is generated because it depends on the value of
-     * the field phandle_intc.
-     */
-    if ( kinfo->dtb )
-    {
-        ret = domain_handle_dtb_boot_module(d, kinfo);
-        if ( ret )
-            goto err;
-    }
-
     ret = make_intc_domU_node(kinfo);
     if ( ret )
         goto err;
diff --git a/xen/include/xen/fdt-domain-build.h b/xen/include/xen/fdt-domain-build.h
index 886a85381651..fd2ba01ff0f4 100644
--- a/xen/include/xen/fdt-domain-build.h
+++ b/xen/include/xen/fdt-domain-build.h
@@ -63,6 +63,12 @@ int find_unallocated_memory(const struct kernel_info *kinfo,
                                       unsigned long e_gfn,
                                       void *data));
 
+/* Return 0 (invalid phandle) if the Xen-reserved range has been reached */
+static inline uint32_t alloc_phandle(struct kernel_info *kinfo)
+{
+    return kinfo->next_phandle >= GUEST_PHANDLE_GIC ? 0 : kinfo->next_phandle++;
+}
+
 #endif /* __XEN_FDT_DOMAIN_BUILD_H__ */
 
 /*
diff --git a/xen/include/xen/fdt-kernel.h b/xen/include/xen/fdt-kernel.h
index 33a60597bb4d..4d0467bb396a 100644
--- a/xen/include/xen/fdt-kernel.h
+++ b/xen/include/xen/fdt-kernel.h
@@ -44,6 +44,12 @@ struct kernel_info {
     /* Interrupt controller phandle */
     uint32_t phandle_intc;
 
+    /*
+     * Next free phandle for guest device nodes; do not access directly, use
+     * alloc_phandle().
+     */
+    uint32_t next_phandle;
+
     /* loader to use for this kernel */
     void (*load)(struct kernel_info *info);
 
-- 
2.53.0



From xen-devel-bounces@lists.xenproject.org Fri Apr 24 13:37:05 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Fri, 24 Apr 2026 13:37:05 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1293571.1571211 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wGGiP-0002tQ-7q; Fri, 24 Apr 2026 13:37:05 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1293571.1571211; Fri, 24 Apr 2026 13:37: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 1wGGiP-0002tG-4i; Fri, 24 Apr 2026 13:37:05 +0000
Received: by outflank-mailman (input) for mailman id 1293571;
 Fri, 24 Apr 2026 13:37:04 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92) id 1wGGiN-0002dY-RT
 for xen-devel@lists.xenproject.org; Fri, 24 Apr 2026 13:37:03 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wGGiN-00EP0d-88
 for xen-devel@lists.xenproject.org; Fri, 24 Apr 2026 15:37:03 +0200
Received: from [10.42.69.11] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <oleksii.kurochko@gmail.com>)
 id 69eb71e7-2eae-0a2a0a5409dd-0a2a450bc858-42
 for <xen-devel@lists.xenproject.org>; Fri, 24 Apr 2026 15:37:03 +0200
Received: from [209.85.167.47] (helo=mail-lf1-f47.google.com)
 by tlsNG-42698a.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.1)
 (envelope-from <oleksii.kurochko@gmail.com>)
 id 69eb71fe-212f-0a2a450b0019-d155a72fa495-3
 for <xen-devel@lists.xenproject.org>; Fri, 24 Apr 2026 15:37:03 +0200
Received: by mail-lf1-f47.google.com with SMTP id
 2adb3069b0e04-5a10d130b37so7847646e87.0
 for <xen-devel@lists.xenproject.org>; Fri, 24 Apr 2026 06:37:03 -0700 (PDT)
Received: from fedora (user-109-243-69-121.play-internet.pl. [109.243.69.121])
 by smtp.gmail.com with ESMTPSA id
 2adb3069b0e04-5a5241f6583sm3649078e87.39.2026.04.24.06.37.00
 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
 Fri, 24 Apr 2026 06:37:00 -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=20251104 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=20251104; t=1777037822; x=1777642622; 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;
        bh=0/RZ80b7VFUK2z86zIRDb2DVaNRf6KFOtP42XANEu1E=;
        b=WWEcydPAnyslEO2fQ2ZRiw3DyvUaSPq/ygEQYBhKHLqOWKo4KV5t9T70OcamQlXLeu
         JZyFxsJqsO5+cmiuXiBNGcDb1URmINFTRLNj8Ido+n+oF9IuhyWuQeIJ7AEb2hai3LGO
         6qZncYVTiuQhrH56SSnKw7yb9bt7MIMqFR+CdF0ri34nkO5F1ERduvKFQ5oYMbAytV/K
         Zpd2VDAqsb/XrHjriPqm0wQJ4aNObI1h3pjJ9MuG0W//d+5jgcZtPMTMt//vYMIp8S5I
         5Fak5VLMvHYAR8BQ1p75PffFt0cwq4AwJGqsCYE3a+7zCi2ASmT6dvDZOlg0cADteXJo
         nClQ==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20251104; t=1777037822; x=1777642622;
        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;
        bh=0/RZ80b7VFUK2z86zIRDb2DVaNRf6KFOtP42XANEu1E=;
        b=Hfi2jPfdUGwlymR1yQL2R5hfy8+3wnSODZaPMLZe6Nje/cqDztZ0g52TIZxquruUVv
         S0JSN2/nMnSxNieBmfiohO23KwHtBRWJ9DaDBnW7jFdrHtO3hPbuDlwJPN6Q3YQ9rQUA
         ohf/jv+TaS4xUBeEo136pHTrMBfZBL3k25vIflpDObaTOP40rbLXbKJrI/gQLl1uneMV
         m3k4I4/0gPcpDCqCT+8RJC2LV89anLLoG4gszaty7FIgKCD0HKpcDsI204kv5q/AVVmG
         xKQxMn+8akFGsW2/1J/+fAbQ8u/2DdirTJkjXJMYtYJPYjgpcT4ZeTyElcn1nxI/La2c
         zDRQ==
X-Gm-Message-State: AOJu0Yz1/1xqvLxk3R/+FQ9Y2BQLrs0Vuzi/CswDizpR3k5+DYveraRx
	kvvrHz4xsrv2Vn21kz3kTtHTxv62DAmYUqa4LNYWs09Iux9MXIK5EzBi/uowCQ==
X-Gm-Gg: AeBDietbQsx3sDIG1qv1rVQB3bVHuWHg3TcuQ9xV90P5eQ6Ad8zSW608Tgc7SZduPEA
	KGv4fg6Qo4sOr8dGmd6hIFEqXZb8JmZXRWavpK8sl/boaG4ryB7pNP33z4UcK7LpcmIfrxkgXvN
	DctdPUsUhUjXXhLaNbKBuSAabZYysPgmQ4b3pcvRYBfoE0/C9FwdGzwc1R3YWk9yi3zj3XMpN20
	Q9Uihl+lD6qBAabAjCHAcCL//g2tT+4S30eUSdLtZCx6w8C6p25joBadTAnl5VmaDOBg3mlO9bk
	AV/eOuoMn27U5eRhEfR7ve4KrqQUhFmEDTgtGd/YzfdsNB4Pplurt9nRc8uakc8dsXFvdiajqiX
	lIHpANhOiS3DgQOpr4xm62mnFxiOwmEMVnM3KTFihtqHKUlvBBevmxsoAWhF+LBYNMaEXLYlk1Y
	ZItt3dRKdmi0NqcmTkIwkIbX/vJCpjD3V8p08/DdJG1Kn5MA/RPS1BNJh0cVr+Z9QysxMoYUNXP
	ROM
X-Received: by 2002:a05:6512:3094:b0:5a4:165:3ddb with SMTP id 2adb3069b0e04-5a417299a02mr10621418e87.12.1777037821762;
        Fri, 24 Apr 2026 06:37:01 -0700 (PDT)
From: Oleksii Kurochko <oleksii.kurochko@gmail.com>
To: xen-devel@lists.xenproject.org
Cc: Romain Caritey <Romain.Caritey@microchip.com>,
	Oleksii Kurochko <oleksii.kurochko@gmail.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?q?Roger=20Pau=20Monn=C3=A9?= <roger.pau@citrix.com>
Subject: [PATCH v3 2/3] xen/dom0less: pass kernel_info struct instead of fdt to make_cpus_node()
Date: Fri, 24 Apr 2026 15:36:50 +0200
Message-ID: <23edbf2f4b102ff68aacdc744ac9968aedbc6854.1776957840.git.oleksii.kurochko@gmail.com>
X-Mailer: git-send-email 2.53.0
In-Reply-To: <cover.1776957840.git.oleksii.kurochko@gmail.com>
References: <cover.1776957840.git.oleksii.kurochko@gmail.com>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit
X-purgate-ID: tlsNG-42698a/1777037823-244B4F3B-88265D88/10/73395122804
X-purgate-type: spam
X-purgate-size: 3199

There are two reasons of this change:
1. Align prototype with what other make_*_node() are passed.
2. A follow-up RISC-V patch will call get_next_free_phandle() inside
   make_cpus_node(), requiring mutable access to kinfo->free_phandle.

Signed-off-by: Oleksii Kurochko <oleksii.kurochko@gmail.com>
Reviewed-by: Michal Orzel <michal.orzel@amd.com>
---
Look at the footer to the prev. patch to understand why phandle is needed
inside cpu node.
---
Changes in v3:
 - Add Reviewed-by: Michal Orzel <michal.orzel@amd.com>.
---
Changes in v2:
 - Properly initialize local variable fdt in Arm's
   make_cpus_node().
---
---
 xen/arch/arm/domain_build.c             | 5 +++--
 xen/common/device-tree/dom0less-build.c | 2 +-
 xen/include/xen/fdt-domain-build.h      | 2 +-
 3 files changed, 5 insertions(+), 4 deletions(-)

diff --git a/xen/arch/arm/domain_build.c b/xen/arch/arm/domain_build.c
index 6c17a84b2633..a3ff70102376 100644
--- a/xen/arch/arm/domain_build.c
+++ b/xen/arch/arm/domain_build.c
@@ -1163,7 +1163,7 @@ int __init make_psci_node(void *fdt)
     return res;
 }
 
-int __init make_cpus_node(const struct domain *d, void *fdt)
+int __init make_cpus_node(const struct domain *d, struct kernel_info *kinfo)
 {
     int res;
     const struct dt_device_node *cpus = dt_find_node_by_path("/cpus");
@@ -1177,6 +1177,7 @@ int __init make_cpus_node(const struct domain *d, void *fdt)
     /* Keep the compiler happy with -Og */
     bool clock_valid = false;
     uint64_t mpidr_aff;
+    void *fdt = kinfo->fdt;
 
     dt_dprintk("Create cpus node\n");
 
@@ -1625,7 +1626,7 @@ static int __init handle_node(struct domain *d, struct kernel_info *kinfo,
         if ( res )
             return res;
 
-        res = make_cpus_node(d, kinfo->fdt);
+        res = make_cpus_node(d, kinfo);
         if ( res )
             return res;
 
diff --git a/xen/common/device-tree/dom0less-build.c b/xen/common/device-tree/dom0less-build.c
index 9787ee264975..6d6882a34b5a 100644
--- a/xen/common/device-tree/dom0less-build.c
+++ b/xen/common/device-tree/dom0less-build.c
@@ -534,7 +534,7 @@ static int __init prepare_dtb_domU(struct domain *d, struct kernel_info *kinfo)
     if ( ret )
         goto err;
 
-    ret = make_cpus_node(d, kinfo->fdt);
+    ret = make_cpus_node(d, kinfo);
     if ( ret )
         goto err;
 
diff --git a/xen/include/xen/fdt-domain-build.h b/xen/include/xen/fdt-domain-build.h
index fd2ba01ff0f4..0d40d8cfa105 100644
--- a/xen/include/xen/fdt-domain-build.h
+++ b/xen/include/xen/fdt-domain-build.h
@@ -25,7 +25,7 @@ int construct_domain(struct domain *d, struct kernel_info *kinfo);
 int construct_hwdom(struct kernel_info *kinfo,
                     const struct dt_device_node *node);
 int make_chosen_node(const struct kernel_info *kinfo);
-int make_cpus_node(const struct domain *d, void *fdt);
+int make_cpus_node(const struct domain *d, struct kernel_info *kinfo);
 int make_hypervisor_node(struct domain *d, const struct kernel_info *kinfo,
                          int addrcells, int sizecells);
 int make_memory_node(const struct kernel_info *kinfo, int addrcells,
-- 
2.53.0



From xen-devel-bounces@lists.xenproject.org Fri Apr 24 13:37:06 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Fri, 24 Apr 2026 13:37:06 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1293572.1571220 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wGGiQ-00037w-HM; Fri, 24 Apr 2026 13:37:06 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1293572.1571220; Fri, 24 Apr 2026 13:37: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 1wGGiQ-00037m-Dh; Fri, 24 Apr 2026 13:37:06 +0000
Received: by outflank-mailman (input) for mailman id 1293572;
 Fri, 24 Apr 2026 13:37:05 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92) id 1wGGiP-0002tN-BN
 for xen-devel@lists.xenproject.org; Fri, 24 Apr 2026 13:37:05 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wGGiO-00EP4D-OV
 for xen-devel@lists.xenproject.org; Fri, 24 Apr 2026 15:37:04 +0200
Received: from [10.42.69.4] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <oleksii.kurochko@gmail.com>)
 id 69eb71e8-e002-0a2a0a5209dd-0a2a4504ab34-34
 for <xen-devel@lists.xenproject.org>; Fri, 24 Apr 2026 15:37:04 +0200
Received: from [209.85.167.42] (helo=mail-lf1-f42.google.com)
 by tlsNG-ebf023.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.1)
 (envelope-from <oleksii.kurochko@gmail.com>)
 id 69eb7200-1dec-0a2a45040019-d155a72ae9d4-3
 for <xen-devel@lists.xenproject.org>; Fri, 24 Apr 2026 15:37:04 +0200
Received: by mail-lf1-f42.google.com with SMTP id
 2adb3069b0e04-5a62f43b76aso2954889e87.3
 for <xen-devel@lists.xenproject.org>; Fri, 24 Apr 2026 06:37:04 -0700 (PDT)
Received: from fedora (user-109-243-69-121.play-internet.pl. [109.243.69.121])
 by smtp.gmail.com with ESMTPSA id
 2adb3069b0e04-5a5241f6583sm3649078e87.39.2026.04.24.06.37.01
 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
 Fri, 24 Apr 2026 06:37:02 -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=20251104 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=20251104; t=1777037823; x=1777642623; 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;
        bh=faxicMWV0pyOsr9LCBEsD50TaZnCHvDt9RPH9o+wZSY=;
        b=gnW5SaxfUqA5z44hed2+oJPnTyMvWxoKkVjd+k+QuKu/U4yrJ5TGLpI3hhWJRN+aJz
         z3aYmvu+0x/OrgCi4URxmkG07ASTsocHQeA97u1mXD2q+1YFyT4KR6cdtf8W1aG3xURT
         Se+nmov+EA881D92OxSgonXHcnlJirzFrYlxC696DMpCZdcH1F7a+f4h16RgdjrndTmx
         m7S2r+SzLvTt62Vx3NFwcjtMDPlD94Mry4QcT9/sPrZZkhgTYJtdA2VlC7lKsns4HB9/
         Clcge+rmo5scP9//mMUCqgY4SX9le9jfsiqCb5kz0XoNLQyBRZBh3oQO6K9Ti7vHsyO+
         6daw==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20251104; t=1777037823; x=1777642623;
        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;
        bh=faxicMWV0pyOsr9LCBEsD50TaZnCHvDt9RPH9o+wZSY=;
        b=le0oslk7A5EeUL/F3AG/kTyXhLjb8gqfprOQEk4ECvp17WRRuDVGiuii+dlBUWaPPU
         i8vArOQdde1GsyzNGHoDCIUiz4mWxArR3Oo0b2YoC23ZabMNsiaJVyBUrWj1IBFe8ujM
         DT9H7N5l4cFeMsng9PrFhE7gJerAkx/kk9aB3UyFPEyP8No9OQzLV3oQH+uAJEMgyMpH
         JJvVBTEQrF0ciZNthaLOuxII1CPfCXvZ7oRxqHRAvdSmnHjG3rcFhQhahECjG1oo3veP
         DvjTggf5EC2t+Xw0n+BP4vdYjXFhHMyoXIXTqsEA02J3XL5tRp9ZEohHkA/DqKhD7/bU
         +CNA==
X-Gm-Message-State: AOJu0YyRL4muV+fHWqR9Y/8TPnjWcDKrR3gfiTEQZN9TwhGi62lj7g9M
	qmmTbFxiku754d4D0rbINGoRjBqaVYRY8JUqX81FnUqDJcLZ2X41tZo9aDh9hg==
X-Gm-Gg: AeBDievMsd0u/0DypvFvUuW0uvNdL69z9+hGs2ZwWJ18/ZbrhjM0bXwssSkTK8JRE6q
	0klCfMQTR/B9wGCp1GKuCJsfNHMru4dcDMXAQKqJgilN2L1NeeZtFOuP7J+8ESNqZfESvdUqdgt
	OGw7F+iAbgknWW0TmPGHC74p9gSgaGUzusEq1TUQS4Ce8+KTJENH7LY5HlWiG9JtsoePoNP46Mz
	jdUgGAv3iniJ2W93qhlge7QPIq1yU59y0pkfmOffddHlfelSx+KFbGrPZxtA8STwUkAwpoBSbt4
	bI8CGu/7Lc9eWyanZaJlA9vJOPMW6QvfDZu3zXSyUh/SPaiWSDXpeT/SBjjQKj0w3JDDaja/tQ3
	hzN5YRUEkBEYQPYK37cEajtAecAi4eTLpjeT8OZGHWWMKGPA1QreRQcbPQwjUahWblN91sbdmwG
	qWFId51wuS70F4QgLGXemk1qLy2vzT43PvKkd8auuwVwRRfluX+D1tJxHiJR1nHAElewWPvad1J
	T49
X-Received: by 2002:a05:6512:154b:20b0:5a3:ff44:f01b with SMTP id 2adb3069b0e04-5a4172e3131mr7107204e87.34.1777037823257;
        Fri, 24 Apr 2026 06:37:03 -0700 (PDT)
From: Oleksii Kurochko <oleksii.kurochko@gmail.com>
To: xen-devel@lists.xenproject.org
Cc: Romain Caritey <Romain.Caritey@microchip.com>,
	Oleksii Kurochko <oleksii.kurochko@gmail.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?q?Roger=20Pau=20Monn=C3=A9?= <roger.pau@citrix.com>
Subject: [PATCH v3 3/3] xen: introduce CONFIG_HAS_DOMAIN_TYPE
Date: Fri, 24 Apr 2026 15:36:51 +0200
Message-ID: <fa2e255e53fe3aef2075ba8457be5fd4ba9156d1.1776957840.git.oleksii.kurochko@gmail.com>
X-Mailer: git-send-email 2.53.0
In-Reply-To: <cover.1776957840.git.oleksii.kurochko@gmail.com>
References: <cover.1776957840.git.oleksii.kurochko@gmail.com>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit
X-purgate-ID: tlsNG-ebf023/1777037824-2B5683FF-798A559E/10/73395122804
X-purgate-type: spam
X-purgate-size: 11153

As domain type is part of common code now there is no any reason
to have architecture-specific set_domain_type() functions so
it is dropped.

Change the guard around access of kinfo->type to CONFIG_HAS_DOMAIN_TYPE
for consistency. Also, drop and add some parentheses to be aligned
with the similar if() below.

x86 with CONFIG_64BIT=y shouldn't use is_{32,64}bit_domain() as
x86 doesn't have support of CONFIG_HAS_DOMAIN_TYPE. Since x86_32 Xen no
longer builds, the fallback is currently only relevant for arm32.

Signed-off-by: Oleksii Kurochko <oleksii.kurochko@gmail.com>
---
Changes in v3:
 - Sort properly HAS_DOMAIN_TYPE in xen/common/Kconfig.
 - Update the comment above is_*bit_domain() macros.
---
Changes in v2:
 - Update the commit message.
 - Move HAS_DOMAIN_TYPE to xen/common/Kconfig.
 - Return set_domain_type(), move it to xen/fdt-domain-build.h and make it
   static inline.
 - s/CONFIG_ARM_64/CONFIG_HAS_DOMAIN for the places where kinfo->type is used.
 - Drop parantethes around cpu_has_el1_32 in if() and add around
   (kinfo->type == DOMAIN_32BIT) to be consistent with the similar check below.
 - Fix comment code style.
 - Add __packed to definition of enum domain_type
---
---
 xen/arch/arm/Kconfig               |  1 +
 xen/arch/arm/arm64/domctl.c        |  4 ++--
 xen/arch/arm/dom0less-build.c      | 14 --------------
 xen/arch/arm/domain_build.c        | 12 +++++-------
 xen/arch/arm/include/asm/domain.h  | 12 ------------
 xen/arch/arm/include/asm/kernel.h  |  4 ----
 xen/arch/arm/kernel.c              | 16 ++++++++--------
 xen/common/Kconfig                 |  3 +++
 xen/include/xen/dom0less-build.h   |  2 --
 xen/include/xen/domain.h           | 13 +++++++++++++
 xen/include/xen/fdt-domain-build.h |  9 +++++++++
 xen/include/xen/fdt-kernel.h       |  5 +++++
 xen/include/xen/sched.h            |  4 ++++
 13 files changed, 50 insertions(+), 49 deletions(-)

diff --git a/xen/arch/arm/Kconfig b/xen/arch/arm/Kconfig
index 2f2b501fdac4..79622b46a10d 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_DOMAIN_TYPE
 	select HAS_FAST_MULTIPLY
 	select HAS_VPCI_GUEST_SUPPORT if PCI_PASSTHROUGH
 
diff --git a/xen/arch/arm/arm64/domctl.c b/xen/arch/arm/arm64/domctl.c
index 8720d126c97d..9e9a29eb1e78 100644
--- a/xen/arch/arm/arm64/domctl.c
+++ b/xen/arch/arm/arm64/domctl.c
@@ -21,10 +21,10 @@ static long switch_mode(struct domain *d, enum domain_type type)
         return -EINVAL;
     if ( domain_tot_pages(d) != 0 )
         return -EBUSY;
-    if ( d->arch.type == type )
+    if ( d->type == type )
         return 0;
 
-    d->arch.type = type;
+    d->type = type;
 
     if ( is_64bit_domain(d) )
         for_each_vcpu(d, v)
diff --git a/xen/arch/arm/dom0less-build.c b/xen/arch/arm/dom0less-build.c
index 4181c105389a..6f73c65e5151 100644
--- a/xen/arch/arm/dom0less-build.c
+++ b/xen/arch/arm/dom0less-build.c
@@ -237,20 +237,6 @@ int __init make_arch_nodes(struct kernel_info *kinfo)
     return 0;
 }
 
-/* TODO: make arch.type generic ? */
-#ifdef CONFIG_ARM_64
-void __init set_domain_type(struct domain *d, struct kernel_info *kinfo)
-{
-    /* type must be set before allocate memory */
-    d->arch.type = kinfo->arch.type;
-}
-#else
-void __init set_domain_type(struct domain *d, struct kernel_info *kinfo)
-{
-    /* Nothing to do */
-}
-#endif
-
 int __init init_vuart(struct domain *d, struct kernel_info *kinfo,
                       const struct dt_device_node *node)
 {
diff --git a/xen/arch/arm/domain_build.c b/xen/arch/arm/domain_build.c
index a3ff70102376..ad665cd3c045 100644
--- a/xen/arch/arm/domain_build.c
+++ b/xen/arch/arm/domain_build.c
@@ -1771,15 +1771,15 @@ int __init construct_domain(struct domain *d, struct kernel_info *kinfo)
     BUG_ON(d->vcpu[0] == NULL);
     BUG_ON(v->is_initialised);
 
-#ifdef CONFIG_ARM_64
+#ifdef CONFIG_HAS_DOMAIN_TYPE
     /* if aarch32 mode is not supported at EL1 do not allow 32-bit domain */
-    if ( !(cpu_has_el1_32) && kinfo->arch.type == DOMAIN_32BIT )
+    if ( !cpu_has_el1_32 && (kinfo->type == DOMAIN_32BIT) )
     {
         printk("Platform does not support 32-bit domain\n");
         return -EINVAL;
     }
 
-    if ( is_sve_domain(d) && (kinfo->arch.type == DOMAIN_32BIT) )
+    if ( is_sve_domain(d) && (kinfo->type == DOMAIN_32BIT) )
     {
         printk("SVE is not available for 32-bit domain\n");
         return -EINVAL;
@@ -1893,10 +1893,8 @@ int __init construct_hwdom(struct kernel_info *kinfo,
 
     iommu_hwdom_init(d);
 
-#ifdef CONFIG_ARM_64
-    /* type must be set before allocate_memory */
-    d->arch.type = kinfo->arch.type;
-#endif
+    set_domain_type(d, kinfo);
+
     find_gnttab_region(d, kinfo);
     if ( is_domain_direct_mapped(d) )
         allocate_memory_11(d, kinfo);
diff --git a/xen/arch/arm/include/asm/domain.h b/xen/arch/arm/include/asm/domain.h
index ffe5d0d9f0a6..e51baa0557bd 100644
--- a/xen/arch/arm/include/asm/domain.h
+++ b/xen/arch/arm/include/asm/domain.h
@@ -18,18 +18,6 @@ struct hvm_domain
     uint64_t              params[HVM_NR_PARAMS];
 };
 
-#ifdef CONFIG_ARM_64
-enum domain_type {
-    DOMAIN_32BIT,
-    DOMAIN_64BIT,
-};
-#define is_32bit_domain(d) ((d)->arch.type == DOMAIN_32BIT)
-#define is_64bit_domain(d) ((d)->arch.type == DOMAIN_64BIT)
-#else
-#define is_32bit_domain(d) (1)
-#define is_64bit_domain(d) (0)
-#endif
-
 /*
  * Is the domain using the host memory layout?
  *
diff --git a/xen/arch/arm/include/asm/kernel.h b/xen/arch/arm/include/asm/kernel.h
index 7c3b7fde5b64..21f4273fa1b5 100644
--- a/xen/arch/arm/include/asm/kernel.h
+++ b/xen/arch/arm/include/asm/kernel.h
@@ -10,10 +10,6 @@
 
 struct arch_kernel_info
 {
-#ifdef CONFIG_ARM_64
-    enum domain_type type;
-#endif
-
     /* Enable pl011 emulation */
     bool vpl011;
 };
diff --git a/xen/arch/arm/kernel.c b/xen/arch/arm/kernel.c
index 7544fd50a20f..9395b5af8745 100644
--- a/xen/arch/arm/kernel.c
+++ b/xen/arch/arm/kernel.c
@@ -100,8 +100,8 @@ static paddr_t __init kernel_zimage_place(struct kernel_info *info)
     const struct membanks *mem = kernel_info_get_mem(info);
     paddr_t load_addr;
 
-#ifdef CONFIG_ARM_64
-    if ( (info->arch.type == DOMAIN_64BIT) && (info->zimage.start == 0) )
+#ifdef CONFIG_HAS_DOMAIN_TYPE
+    if ( (info->type == DOMAIN_64BIT) && (info->zimage.start == 0) )
         return mem->bank[0].start + info->zimage.text_offset;
 #endif
 
@@ -268,14 +268,14 @@ int __init kernel_uimage_probe(struct kernel_info *info,
 
     info->load = kernel_zimage_load;
 
-#ifdef CONFIG_ARM_64
+#ifdef CONFIG_HAS_DOMAIN_TYPE
     switch ( uimage.arch )
     {
     case IH_ARCH_ARM:
-        info->arch.type = DOMAIN_32BIT;
+        info->type = DOMAIN_32BIT;
         break;
     case IH_ARCH_ARM64:
-        info->arch.type = DOMAIN_64BIT;
+        info->type = DOMAIN_64BIT;
         break;
     default:
         printk(XENLOG_ERR "Unsupported uImage arch type %d\n", uimage.arch);
@@ -345,7 +345,7 @@ static int __init kernel_zimage64_probe(struct kernel_info *info,
 
     info->load = kernel_zimage_load;
 
-    info->arch.type = DOMAIN_64BIT;
+    info->type = DOMAIN_64BIT;
 
     return 0;
 }
@@ -396,8 +396,8 @@ static int __init kernel_zimage32_probe(struct kernel_info *info,
 
     info->load = kernel_zimage_load;
 
-#ifdef CONFIG_ARM_64
-    info->arch.type = DOMAIN_32BIT;
+#ifdef CONFIG_HAS_DOMAIN_TYPE
+    info->type = DOMAIN_32BIT;
 #endif
 
     return 0;
diff --git a/xen/common/Kconfig b/xen/common/Kconfig
index 0a20aa0a1249..5ff71480eebe 100644
--- a/xen/common/Kconfig
+++ b/xen/common/Kconfig
@@ -128,6 +128,9 @@ config HAS_DEVICE_TREE_DISCOVERY
 config HAS_DOM0LESS
 	bool
 
+config HAS_DOMAIN_TYPE
+	bool
+
 config HAS_DIT # Data Independent Timing
 	bool
 
diff --git a/xen/include/xen/dom0less-build.h b/xen/include/xen/dom0less-build.h
index faaf660424b2..4118dec76c0a 100644
--- a/xen/include/xen/dom0less-build.h
+++ b/xen/include/xen/dom0less-build.h
@@ -57,8 +57,6 @@ int init_vuart(struct domain *d, struct kernel_info *kinfo,
 int make_intc_domU_node(struct kernel_info *kinfo);
 int make_arch_nodes(struct kernel_info *kinfo);
 
-void set_domain_type(struct domain *d, struct kernel_info *kinfo);
-
 int init_intc_phandle(struct kernel_info *kinfo, const char *name,
                       const int node_next, const void *pfdt);
 
diff --git a/xen/include/xen/domain.h b/xen/include/xen/domain.h
index 93c0fd00c1d7..8c898afe74fc 100644
--- a/xen/include/xen/domain.h
+++ b/xen/include/xen/domain.h
@@ -13,6 +13,19 @@ struct guest_area {
     void *map;
 };
 
+#ifdef CONFIG_HAS_DOMAIN_TYPE
+enum __packed domain_type {
+    DOMAIN_32BIT,
+    DOMAIN_64BIT,
+};
+#define is_32bit_domain(d) ((d)->type == DOMAIN_32BIT)
+#define is_64bit_domain(d) ((d)->type == DOMAIN_64BIT)
+#elif !defined(CONFIG_64BIT)
+/* At the moment on 32-bit-only platforms all domains are 32-bit. */
+#define is_32bit_domain(d) (true)
+#define is_64bit_domain(d) (false)
+#endif
+
 #include <asm/domain.h>
 
 typedef union {
diff --git a/xen/include/xen/fdt-domain-build.h b/xen/include/xen/fdt-domain-build.h
index 0d40d8cfa105..bc7744270c8f 100644
--- a/xen/include/xen/fdt-domain-build.h
+++ b/xen/include/xen/fdt-domain-build.h
@@ -7,6 +7,7 @@
 #include <xen/device_tree.h>
 #include <xen/fdt-kernel.h>
 #include <xen/mm.h>
+#include <xen/sched.h>
 #include <xen/types.h>
 
 struct domain;
@@ -69,6 +70,14 @@ static inline uint32_t alloc_phandle(struct kernel_info *kinfo)
     return kinfo->next_phandle >= GUEST_PHANDLE_GIC ? 0 : kinfo->next_phandle++;
 }
 
+static inline void set_domain_type(struct domain *d, struct kernel_info *kinfo)
+{
+#ifdef CONFIG_HAS_DOMAIN_TYPE
+    /* Type must be set before allocate memory */
+    d->type = kinfo->type;
+#endif
+}
+
 #endif /* __XEN_FDT_DOMAIN_BUILD_H__ */
 
 /*
diff --git a/xen/include/xen/fdt-kernel.h b/xen/include/xen/fdt-kernel.h
index 4d0467bb396a..86a37a13048b 100644
--- a/xen/include/xen/fdt-kernel.h
+++ b/xen/include/xen/fdt-kernel.h
@@ -9,6 +9,7 @@
 
 #include <xen/bootinfo.h>
 #include <xen/device_tree.h>
+#include <xen/domain.h>
 #include <xen/types.h>
 
 #if __has_include(<asm/kernel.h>)
@@ -65,6 +66,10 @@ struct kernel_info {
         } zimage;
     };
 
+#ifdef CONFIG_HAS_DOMAIN_TYPE
+    enum domain_type type;
+#endif
+
 #if __has_include(<asm/kernel.h>)
     struct arch_kernel_info arch;
 #endif
diff --git a/xen/include/xen/sched.h b/xen/include/xen/sched.h
index 212c7d765c3e..00db1da12f21 100644
--- a/xen/include/xen/sched.h
+++ b/xen/include/xen/sched.h
@@ -386,6 +386,10 @@ struct domain
 {
     domid_t          domain_id;
 
+#ifdef CONFIG_HAS_DOMAIN_TYPE
+    enum domain_type type;
+#endif
+
     unsigned int     max_vcpus;
 
     uint64_t         unique_id;       /* Unique domain identifier */
-- 
2.53.0



From xen-devel-bounces@lists.xenproject.org Fri Apr 24 13:44:25 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Fri, 24 Apr 2026 13:44:25 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1293610.1571229 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wGGpQ-0006B4-EA; Fri, 24 Apr 2026 13:44:20 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1293610.1571229; Fri, 24 Apr 2026 13:44: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 1wGGpQ-0006Ax-BH; Fri, 24 Apr 2026 13:44:20 +0000
Received: by outflank-mailman (input) for mailman id 1293610;
 Fri, 24 Apr 2026 13:44:19 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <jgg@ziepe.ca>) id 1wGGpO-0006Ap-JT
 for xen-devel@lists.xenproject.org; Fri, 24 Apr 2026 13:44:19 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wGGpO-00Assh-0C
 for xen-devel@lists.xenproject.org; Fri, 24 Apr 2026 15:44:18 +0200
Received: from [10.42.69.5] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <jgg@ziepe.ca>)
 id 69eb73a7-e002-0a2a0a5209dd-0a2a45058eba-40
 for <xen-devel@lists.xenproject.org>; Fri, 24 Apr 2026 15:44:17 +0200
Received: from [209.85.219.42] (helo=mail-qv1-f42.google.com)
 by tlsNG-c201ff.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.1)
 (envelope-from <jgg@ziepe.ca>)
 id 69eb73b0-aaa8-0a2a45050019-d155db2ab144-3
 for <xen-devel@lists.xenproject.org>; Fri, 24 Apr 2026 15:44:17 +0200
Received: by mail-qv1-f42.google.com with SMTP id
 6a1803df08f44-89fc4147f2eso87346046d6.3
 for <xen-devel@lists.xenproject.org>; Fri, 24 Apr 2026 06:44:17 -0700 (PDT)
Received: from ziepe.ca
 (crbknf0213w-47-54-130-67.pppoe-dynamic.high-speed.nl.bellaliant.net.
 [47.54.130.67]) by smtp.gmail.com with ESMTPSA id
 6a1803df08f44-8b02ac6c3e7sm188611786d6.13.2026.04.24.06.44.15
 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
 Fri, 24 Apr 2026 06:44:15 -0700 (PDT)
Received: from jgg by wakko with local (Exim 4.97)
 (envelope-from <jgg@ziepe.ca>) id 1wGGpL-00000002Zm3-0EMP;
 Fri, 24 Apr 2026 10:44:15 -0300
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@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=ziepe.ca header.i="@ziepe.ca" header.h="In-Reply-To:Content-Disposition:MIME-Version:References:Message-ID:Subject:Cc:To:From:Date"
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=ziepe.ca; s=google; t=1777038256; x=1777643056; darn=lists.xenproject.org;
        h=in-reply-to:content-disposition:mime-version:references:message-id
         :subject:cc:to:from:date:from:to:cc:subject:date:message-id:reply-to;
        bh=Zv88UvTgiwZqXaUOezK9Ft5EGGZMSyJ0Ff2r4iX0Lmc=;
        b=GU6Hwu+EOS9412cO5so1hF0OVMNgRl6YCD9GcixQp0LIMFLrepqs1kYdulpnAlD9j7
         Sy9wp4zTuYkuLApf++FuBBr7PlwnS3eKMfFM1Mg6L93XaG+hqEPsAl+AHvV4jK5EBseI
         4WYLWarhTGOPMfJNeSVGOpgdFmz/TxXVsK+vq701eVg86621VqVeS19P4pdBSq0B9R11
         0ojoB0xPolIn6N1iMFX7PH0/o3lyAaqwfBiLpfVOJSeeJKfP7U9rl2eHTzSO9Xq/ONTG
         89QrV//QAeAP/fxWlhMFO7H7oEbT0XxadTL179KwBIXZ1t/5D9Pk2j+ZZVBYtsve88sT
         lDrw==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20251104; t=1777038256; x=1777643056;
        h=in-reply-to:content-disposition: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;
        bh=Zv88UvTgiwZqXaUOezK9Ft5EGGZMSyJ0Ff2r4iX0Lmc=;
        b=qLZrC4d3/vVg4vLTMcHqXj5J1y+YDWFd5+tB+1TR6kKXkBR2ailiou68njkAvQyQkL
         0NoxuWtDZ28oTHxvC6uroUCIK3JdvPSJCyjL31iOe+vIMk1vkTr9buVTqWZf++Ohr8Yx
         0Do68/LdOEoCjnYYqdpEhsx56TPbvPRvuSV8JSjk1j20edeX946mGRs16NuBqznQS3mC
         K1Oi+cIQhvyijDqvi5VbKxuggJk+TX9PL6ztPzmY3IeJZ3idIRoaglYvlhYLJmu3k4kf
         ZixWwvn8AJyoGZU7qNTaQsBISqbale/ssvSjiJr7Lbor0FX3fdA/eAt3jrWPAqfumKmD
         wesg==
X-Forwarded-Encrypted: i=1; AFNElJ/X3tnbR0aCSwsxlvfHdYerA4gjK6TWjWeqfwlfyIbXj0oQ0jpWHF3VAto9fX80YYtiCEcAIRgdqug=@lists.xenproject.org
X-Gm-Message-State: AOJu0Yz1ucOpdAEiA6Zh8dSupKx1pcqkT3SAJ9JHb1utZYQFHowKmd3i
	32BLeQje0YJ7B4QpBCIUQPpv1Zm5ilsOUu/CVhGhNTyP21u0Hi7hp13TUuyWZstOolA=
X-Gm-Gg: AeBDieu5tKH3adGF1Wp35qzCmSJBdQBgZM9/R+83pwzDOxITXBCcHVmB+XFtiFqyfq5
	cYjxruABBulA0cIbDcVHA78BOzTOr8AGl+Am9KvPG5EJ5VAlnQAgTylslZ9ghaKkiYr539G/5kX
	T1mFKn2hH1owRI+DyFsn+f4BhAwMQ5eQ8V7BVjr4/Lpi+llTfQmbHv34Le12K56u30lSwWrPnXb
	L7hu6cS8oM3l8SfcAu1YQBvgP3/8exFBvogBl5IS8mFC0G6L9j+YCDIhsyPYSzqPSCcNCghwEHj
	8OiDmVNdX1g21hDsXn5bR5IhRKAu3zhm0xrs1sTOmnkpeCczHEQe7ihI8Fy8kAMSlyJ++NfkVqP
	ON7NFX0FHKhTffCuqxFfiZ6Z76e8E80tRweScRF3AezR6iwAO9f/qvJKyf66MCEZj1JWFou4woC
	qPVWW3nLoZCK8QjGri/mEXDWJP8BaKoiJPs+5oANcukC4ZZcgth2MPdfyxd4LzQnmHsOixtOHkb
	RFmmnWHG5DXS7tGcy3Rkzke+xg=
X-Received: by 2002:a05:6214:20a8:b0:8ac:a914:c2cd with SMTP id 6a1803df08f44-8b0280808cfmr513452986d6.20.1777038256324;
        Fri, 24 Apr 2026 06:44:16 -0700 (PDT)
Date: Fri, 24 Apr 2026 10:44:15 -0300
From: Jason Gunthorpe <jgg@ziepe.ca>
To: Peng Fan <peng.fan@oss.nxp.com>
Cc: Juergen Gross <jgross@suse.com>,
	Stefano Stabellini <sstabellini@kernel.org>,
	Oleksandr Tyshchenko <oleksandr_tyshchenko@epam.com>,
	xen-devel@lists.xenproject.org, iommu@lists.linux.dev,
	linux-kernel@vger.kernel.org, Peng Fan <peng.fan@nxp.com>
Subject: Re: [PATCH RFC] xen/swiotlb: avoid arch_sync_dma_* on per-device DMA
 memory
Message-ID: <20260424134415.GZ3611611@ziepe.ca>
References: <20260415-xen-swiotlb-v1-1-de24eda3c0fd@nxp.com>
 <20260420230137.GQ2577880@ziepe.ca>
 <aesUTxAl2qWZiqoT@shlinux89>
MIME-Version: 1.0
Content-Type: text/plain; charset=us-ascii
Content-Disposition: inline
In-Reply-To: <aesUTxAl2qWZiqoT@shlinux89>
X-purgate-ID: tlsNG-c201ff/1777038257-E1DDB443-69B718B2/0/0
X-purgate-type: clean
X-purgate-size: 2065

On Fri, Apr 24, 2026 at 02:57:19PM +0800, Peng Fan wrote:
> Hi Jason,
> 
> On Mon, Apr 20, 2026 at 08:01:37PM -0300, Jason Gunthorpe wrote:
> >On Wed, Apr 15, 2026 at 11:08:36PM +0800, Peng Fan (OSS) wrote:
> >> From: Peng Fan <peng.fan@nxp.com>
> >> 
> >> On ARM64, arch_sync_dma_for_{cpu,device}() assumes that the
> >> physical address passed in refers to normal RAM that is part of the
> >> kernel linear(direct) mapping, as it unconditionally derives a CPU
> >> virtual address via phys_to_virt().
> >> 
> >> With Xen swiotlb, devices may use per-device coherent DMA memory,
> >> such as reserved-memory regions described by 'shared-dma-pool',
> >> which are assigned to dev->dma_mem. These regions may be marked
> >> no-map in DT and therefore are not part of the kernel linear map.
> >> In such cases, pfn_valid() still returns true, but phys_to_virt()
> >> is not valid and cache maintenance via arch_sync_dma_* will fault.
> >> 
> >> Prevent this by excluding devices with a private DMA memory pool
> >> (dev->dma_mem) from the arch_sync_dma_* fast path, and always
> >> fall back to xen_dma_sync_* for those devices to avoid invalid
> >> phys_to_virt() conversions for no-map DMA memory while preserving the
> >> existing fast path for normal, linear-mapped RAM.
> >
> >I think this is the same sort of weirdness the other two CC threads are
> >dealing with.. We already have two different flags indicating the
> >cache flush should be skipped, it would make more sense to have the
> >swiotlb mangle the flags, just like for cc.
> >
> >https://lore.kernel.org/r/20260420061415.3650870-1-aneesh.kumar@kernel.org
> >
> >Then you know that the swiotlb was used and it should flow down to
> >here.
> 
> Xen fully implements dev->dma_ops and does not leak hypervisor-specific
> semantics outside of it.

It may have its own re-implementation but the same remarks apply. The
flags in attrs should be correct and you should not be putting random
boolean checks all over the place to make up for incorrect flags.

Jason


From xen-devel-bounces@lists.xenproject.org Fri Apr 24 14:34:28 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Fri, 24 Apr 2026 14:34:28 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1293667.1571237 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wGHbo-0005z7-W8; Fri, 24 Apr 2026 14:34:20 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1293667.1571237; Fri, 24 Apr 2026 14:34: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 1wGHbo-0005z0-T8; Fri, 24 Apr 2026 14:34:20 +0000
Received: by outflank-mailman (input) for mailman id 1293667;
 Fri, 24 Apr 2026 14:34:19 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <roger.pau@citrix.com>) id 1wGHbn-0005yu-70
 for xen-devel@lists.xenproject.org; Fri, 24 Apr 2026 14:34:19 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wGHbl-005Civ-2H
 for xen-devel@lists.xenproject.org; Fri, 24 Apr 2026 16:34:18 +0200
Received: from [10.42.69.12] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <roger.pau@citrix.com>)
 id 69eb7f5c-e002-0a2a0a5209dd-0a2a450cdea8-12
 for <xen-devel@lists.xenproject.org>; Fri, 24 Apr 2026 16:34:18 +0200
Received: from [40.93.198.62]
 (helo=CY7PR03CU001.outbound.protection.outlook.com)
 by tlsNG-d25034.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.1)
 (envelope-from <roger.pau@citrix.com>)
 id 69eb7f68-62f1-0a2a450c0019-285dc63e379b-4
 for <xen-devel@lists.xenproject.org>; Fri, 24 Apr 2026 16:34:18 +0200
Received: from CH7PR03MB7860.namprd03.prod.outlook.com (2603:10b6:610:24e::14)
 by SJ0PR03MB6581.namprd03.prod.outlook.com (2603:10b6:a03:393::12)
 with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9846.22; Fri, 24 Apr
 2026 14:34:13 +0000
Received: from CH7PR03MB7860.namprd03.prod.outlook.com
 ([fe80::f5ba:35df:1c9f:b343]) by CH7PR03MB7860.namprd03.prod.outlook.com
 ([fe80::f5ba:35df:1c9f:b343%4]) with mapi id 15.20.9846.021; Fri, 24 Apr 2026
 14: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=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=M8wQXJLccYafABNEraAMkCHT388USbpCNzLxcKNAACmxVGBbByCrr3cmG3p7Hzu293KkYUO6yQ3kewyjiqY/LMc32tHIT8ZpVD5KSU8XWNbAdXGxVsvIK8UGn3rATVM2owqMFHuZju5Ap4zG+ko2SK0ohLFuIkmBhBuBynuq+TZ5/DP6SdA7R4r2ns9mpb5lHF89/02LUjlPKfYbTJGY+MCR+USTNEO3hXnPehKXS8Zf7T+iE/poG0XxWQPL8WFbbGVZ5dzJlamoyJBRdm720nv27uSYCtJJfYU/Sh6XK0xCCW5beIykqRBnZWMD1HOmaEKAABlfIw6UN7kP6bXRdQ==
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com;
 s=arcselector10001;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1;
 bh=gIkADVF/UMmjEt2yNFcwUJFEVG0YBO+Enjx1llxOZO4=;
 b=TiHFiyTS6gTAo/J8ickQMCPd5NZf3ToWoaeH5aP6Tt6aaVqU1vdDaRiFrw3eji6WREBjCcWvO+5RBv04W2qjz/tOcAOt1lIvylJUr+VHDCK6NRgaYCZ3keoj0G5O8dAo4vg8uvSyEbfNLIL6lgfoAse5leRBmOutp8l4GtXwq/yuXg+rYRGzV2KM1aS7DaqO5mTpsRS9vp40BwycFdh16wyHJ7d4nT/cakfU2ttxckhDaEAqqvjgygCSZd40mderAzCys4iguScEIYo8jpwILAIDfm22rfimxFgHLlAbgx75kWDW4pKsdQ7UiWTzuTzCSaMAKVSahRcXVMUnyoCv9Q==
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=gIkADVF/UMmjEt2yNFcwUJFEVG0YBO+Enjx1llxOZO4=;
 b=N/J/jPfWazwM1mjaEyixw9543vO9o5db+RQOOGlleivgVYmb6BZkFeRvdNe8IvCBGgi84uzVVXPNwamminHzLOoXPNti0AgpGSjYSpsMdflITiPIXhBSXow6s9OJ838FGrHS4Y+x1iFcCGr+ldWmdjwNtq4hKN5GkIV+l1zfhvE=
Authentication-Results: dkim=none (message not signed)
 header.d=none;dmarc=none action=none header.from=citrix.com;
Date: Fri, 24 Apr 2026 16:34:07 +0200
From: Roger Pau =?utf-8?B?TW9ubsOp?= <roger.pau@citrix.com>
To: Jan Beulich <jbeulich@suse.com>
Cc: "xen-devel@lists.xenproject.org" <xen-devel@lists.xenproject.org>,
	Andrew Cooper <andrew.cooper3@citrix.com>
Subject: Re: [PATCH 1/9] x86/mwait-idle: arrange for BSP MSR adjustments
 during S3 resume
Message-ID: <aet_X0c504QvcqGT@macbook.local>
References: <7b7a677e-a5b9-42c8-beec-3c506b4eac52@suse.com>
 <e5e03239-1d4e-4ab2-8f16-83d280f23b24@suse.com>
Content-Type: text/plain; charset=utf-8
Content-Disposition: inline
In-Reply-To: <e5e03239-1d4e-4ab2-8f16-83d280f23b24@suse.com>
X-ClientProxiedBy: MA3P292CA0002.ESPP292.PROD.OUTLOOK.COM
 (2603:10a6:250:2c::17) To CH7PR03MB7860.namprd03.prod.outlook.com
 (2603:10b6:610:24e::14)
MIME-Version: 1.0
X-MS-PublicTrafficType: Email
X-MS-TrafficTypeDiagnostic: CH7PR03MB7860:EE_|SJ0PR03MB6581:EE_
X-MS-Office365-Filtering-Correlation-Id: 6e077f1e-3204-4a91-5187-08dea20e8c99
X-MS-Exchange-SenderADCheck: 1
X-MS-Exchange-AntiSpam-Relay: 0
X-Microsoft-Antispam:
	BCL:0;ARA:13230040|376014|1800799024|366016|56012099003|22082099003|18002099003;
X-Microsoft-Antispam-Message-Info:
	XHsK+ICLioq+0eYnq/P1bjA6E1xrKHA0QpQSARDOuRXcYOGKuFz6QJCHRSheZ94MwSpo05tTbA9CYqx//e9fz6Y7z0LGFA4iUfK9jVl8gQ6Ql5PzM3roHSBARFuMcUZkJisDoC7Eo/U+LQWhmC7t6R+qxxvFFW9fo2HIpm5GgkDUvPWhotz682LWaJU9wqidurHckcO/I7tDDgMShROpR4K8HFCjrOSP/+ZndRHtpuPAv/jLj4mmEIRDSV8AIMbujZMS0o33xDxHJn+BmwvU7+LObxd/Mopwd/S8j4I2krSbPbF/VMd4xaBvxHEO/EqQ+OnoHZz3xC4WlDZVpDIbDFpOqet3ncgu4ErhSo9OEBQFdICg/HkIJwHRhILN5/k4xLb9fyV1ybK4YhE7yOssigQF/EU5dXTx4TE1Cceq9BfigY66Y8w9sxiA/oP52IQR+Wksb4CE9DUNOrLh2S9zIndFPGUxJAQzx1sm64T0MJiRptt9E5G46ArHlizb7kBILUZabpM5Hbe8rduTi3xcdkLmDZJkbSag+oklMa6HbezYHmxh5IIogeTOs2Hqd0p/WkveF8w0sYTKWwsbPwmZhLvOWKrcmdqymp9skc9gHxl/MjEeQwKkqXYZpj4CAyQbQg6CSZyOYFfEaESjzOWCnUHktiizNyiw9OHbA3q9EM1c0m2nceTVwnLONgEWgcjkthS7wmvHzFxMQ2EQnBLVxDJm7uDK/Bnokm+WxfMh0CY=
X-Forefront-Antispam-Report:
	CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:CH7PR03MB7860.namprd03.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(376014)(1800799024)(366016)(56012099003)(22082099003)(18002099003);DIR:OUT;SFP:1101;
X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1
X-MS-Exchange-AntiSpam-MessageData-0:
	=?utf-8?B?WGFmN25jbHYreHNEdnBSM2tqa2VnTENYdHlLTHVFbnZmUjVnREhIdC9sRVZX?=
 =?utf-8?B?YnExeUtOdGlvOEdBdENib08vWVdwL2p6OGU1UHN3R0hpVTVWK3YwSE9lbGVx?=
 =?utf-8?B?eUhYVUtGRE5ZaUFkRHpsZHN1d1BzeVp6T2F5aUhFOFZlQ29FRVhjWnhwZWtH?=
 =?utf-8?B?UHN2N3ltYjRXMDlqS2wxRitSaTFqNUhleE0xa3VjczZRYkFZYUtYbVM0MXNz?=
 =?utf-8?B?dHQ5Sm1rcGgzenVuWTNnODB0SWlYR0huckdCc0JxeU9UK1RUNy9xVVM2azZ1?=
 =?utf-8?B?dVRSQkpzR0NaWVFYc0JLSWlkbndleTQzYnhoRG5lNktKZ2U4MXg1TFpEL1N3?=
 =?utf-8?B?c2tWZ0ZqeU5MUTFuZXlIbU9OU0hWYWVTR0ppMXc3WVd6bHNRZG9KZnRoWVYv?=
 =?utf-8?B?bFY3R0E4dUM2UnNlOVJuZktERTlnYlhNMEZTUllGMG4ydFZMQnBVazVCTHls?=
 =?utf-8?B?UUx3UWVyeS9uTzRwcmJUbVVJWjRpdkdTUHg1YjVFcWRBUFg2K3ZQc283akJZ?=
 =?utf-8?B?UW1lVmdBRFViRkIrWG5VUElYUnYyUjFRU2FodkY5VUF5U3FaZkRPM25qN3BT?=
 =?utf-8?B?MWFlVnJGTUFMdEJkRXluYm45d1NPS1hQOHFidGRpbjQ0ZldNWHdXVkV6QXdH?=
 =?utf-8?B?SEhyaVJCdXkrRkNTZUpuNXdpcEYvM0wvOGtOc0VaMXo1SmViQ2NXellHb2R1?=
 =?utf-8?B?ZnZiRUJZMlN0Qm9NNmNnR1JWRmZkU1FjOW5QcmtDVjA5Z1VLU2VNOURpcVJ6?=
 =?utf-8?B?U2g5ZVkyeVlWSDBEVEp1dGdvZU16TFRMUFBFTS9vZWl4ZWUyRlgyS0dXM0hk?=
 =?utf-8?B?aVB3RFdueS81aTYxM2pQVVRYTmxXR2FGdy9ZTXQyQTNDMzI5aEZGcklmcHo4?=
 =?utf-8?B?WWNmVDBjUnhNNng5TWtjeUpoYldKQjdJdmY4SGlhU1RrREdPR2tRS0tzc0ZG?=
 =?utf-8?B?ZC9oOHZpSmthd0JuSk52UzVrY3o0ZHluMDVMOUs4M0hQV1pZV2FkVFNrQnhl?=
 =?utf-8?B?eWN5bWZuSFpqdlpOMnYwclhQTkROL3l2VDA4S2FBejkzNnpFa0MyZWY1Mm9X?=
 =?utf-8?B?RHdieGF4bnVDbU9QSk5vSW9SZ29YTUFJTnZYeEpyU0hyc0JwbHhJM2ZoenNG?=
 =?utf-8?B?R2NKdmZ3Q3EwQThSY3dPS0dCVnNCQXJSODNPejlOZWhzTFg3U1ZNUmhSMEY0?=
 =?utf-8?B?eWhUMjJKKzZ6b0lLdG41L3h2RE9WeHBBY1lyQ3pJZWRDTy9MOUVPSmQ0ZFZY?=
 =?utf-8?B?Y3pHUEFmaDBCUkl1dkk3QjFuS3RzeU1sZ2RVeFRzZmpkVFovLzZiMm5FYll3?=
 =?utf-8?B?Z2g1a05aUUhOSEcrNW00S1ZTMzl3VVhBdjRpa1NtTDZlTnFYbkRnWmJkUy9V?=
 =?utf-8?B?SjFuWUcrS205c0FvWXJzUHhnT2IvOWZMVmxtcTJpZkh3bVhhNlYzWE9MY0Vo?=
 =?utf-8?B?RUdnYk5uU05GcTMwVDRmY3d0YnZTak8vRUswMk1seDl3dGxQNkNSbjB3ZFpV?=
 =?utf-8?B?T2dFMTZ0LzNjV2xKRFAyQ2IxYUo4V05ZelFuOGpGUVlRZkFYdVlIZ2huVWE5?=
 =?utf-8?B?dmpQK0QwOE53ZmozR0F5cGVML2crYW1uQzhteHppZHlJc0tsRTZFSjc2Vk9M?=
 =?utf-8?B?VFdTeXlPY3Buc0JsOHo4dVBlSWxsYkkvYnZJZHdaRXdQQmtnSC9SQURPUEdh?=
 =?utf-8?B?VlYwM1ZVcHphN29zN25zYk9FYnM5Z042Q1dyeUl1SkUxeTloTHRVNGJlZGxX?=
 =?utf-8?B?V1RiazJFemJrSHJuNnZtcFpEUlFibEZ2MXRrenFsOG5QOEJSbkI0eVI4SEVh?=
 =?utf-8?B?cGU0b3BhL1M4YTdTV1pPanhRSERBa0M5a0hZK3FyVzJjc2g5WFRHeHN4a3gy?=
 =?utf-8?B?bDhlbUdMNm9wUjJuS1BqcjIwNVpNS01wMUQxcFF5MzlyK3FtRGhsVnhvaFBW?=
 =?utf-8?B?V201bnY1emd2aElBNmdoekJxVlROM2JHR3VpTkxyTlRyRHNLbE9xK1JkNVVP?=
 =?utf-8?B?WjNyWlVLQURzTDVoTWJteFE3MkkyRG1LQWMxaW1aUGJWbjJLVHVtcCtSbk54?=
 =?utf-8?B?WWdUOVBkNG5UWHBaa3VPUlo3SG9TNTVuQVVLVm9LZlZPaGEzejlVd09HVDJ4?=
 =?utf-8?B?UUtWWnQvUEFkQkkybTRGT2FJT2JVbG1XQ0g1VnJzaEJwbkd0d3ZvVEloY1Z0?=
 =?utf-8?B?eDdkaWdCaGFtSzdnTVZFYXp3Ky9JbWw5RHIvUHlzRlIzdkFlZkFBQWVFWWE2?=
 =?utf-8?B?MEpYTVFIeWxMeTlpMXBQRXdaZk92dkxLdWZUUXN2MFpNNU5vbk9WVEl1RkFt?=
 =?utf-8?B?SlZ3T1NoK3hNQlVCUFFXSHpXWHhEbFJta1grcFl2WGdQV2l4M3dVdz09?=
X-OriginatorOrg: citrix.com
X-MS-Exchange-CrossTenant-Network-Message-Id: 6e077f1e-3204-4a91-5187-08dea20e8c99
X-MS-Exchange-CrossTenant-AuthSource: CH7PR03MB7860.namprd03.prod.outlook.com
X-MS-Exchange-CrossTenant-AuthAs: Internal
X-MS-Exchange-CrossTenant-OriginalArrivalTime: 24 Apr 2026 14:34:10.7670
 (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: Wtus9C3d9rgETED7vfrLKSksWy8KLJPP7UaU2D1hurSEreB2i2VjX2TJg33c3/7OHo4f+d3YAAzLe4h4ujTnlw==
X-MS-Exchange-Transport-CrossTenantHeadersStamped: SJ0PR03MB6581
X-purgate-ID: tlsNG-d25034/1777041258-F5C0FCF5-DD4314ED/0/0
X-purgate-type: clean
X-purgate-size: 2779

On Thu, Mar 12, 2026 at 05:54:30PM +0100, Jan Beulich wrote:
> mwait_idle_cpu_init() is only called for APs, yet MSR writes will
> typically need re-doing post-S3 even for the BSP. When multiple cores /
> threads are present (and to come back online) in a package, for package
> scope MSRs this may be covered by APs doing the writes, but we can't rely
> on that.
> 
> Signed-off-by: Jan Beulich <jbeulich@suse.com>
> 
> --- a/xen/arch/x86/acpi/power.c
> +++ b/xen/arch/x86/acpi/power.c
> @@ -28,6 +28,7 @@
>  #include <asm/io_apic.h>
>  #include <asm/irq.h>
>  #include <asm/microcode.h>
> +#include <asm/mwait.h>
>  #include <asm/prot-key.h>
>  #include <asm/spec_ctrl.h>
>  #include <asm/tboot.h>
> @@ -299,6 +300,7 @@ static int enter_state(u32 state)
>      acpi_sleep_post(state);
>      if ( hvm_cpu_up() )
>          BUG();
> +    mwait_idle_resume();
>      cpufreq_add_cpu(0);
>  
>   enable_cpu:
> --- a/xen/arch/x86/cpu/mwait-idle.c
> +++ b/xen/arch/x86/cpu/mwait-idle.c
> @@ -1680,6 +1680,28 @@ static int __init mwait_idle_probe(void)
>  	return 0;
>  }
>  
> +static void mwait_idle_cpu_tweak(unsigned int cpu)
> +{
> +	if (icpu->auto_demotion_disable_flags)
> +		on_selected_cpus(cpumask_of(cpu), auto_demotion_disable, NULL, 1);
> +
> +	if (icpu->byt_auto_demotion_disable_flag)
> +		on_selected_cpus(cpumask_of(cpu), byt_auto_demotion_disable, NULL, 1);
> +
> +	switch (icpu->c1e_promotion) {
> +	case C1E_PROMOTION_DISABLE:
> +		on_selected_cpus(cpumask_of(cpu), c1e_promotion_disable, NULL, 1);
> +		break;
> +
> +	case C1E_PROMOTION_ENABLE:
> +		on_selected_cpus(cpumask_of(cpu), c1e_promotion_enable, NULL, 1);
> +		break;
> +
> +	case C1E_PROMOTION_PRESERVE:
> +		break;
> +	}
> +}
> +
>  static int cf_check mwait_idle_cpu_init(
>      struct notifier_block *nfb, unsigned long action, void *hcpu)
>  {
> @@ -1762,24 +1784,7 @@ static int cf_check mwait_idle_cpu_init(
>  		dev->count++;
>  	}
>  
> -	if (icpu->auto_demotion_disable_flags)
> -		on_selected_cpus(cpumask_of(cpu), auto_demotion_disable, NULL, 1);
> -
> -	if (icpu->byt_auto_demotion_disable_flag)
> -		on_selected_cpus(cpumask_of(cpu), byt_auto_demotion_disable, NULL, 1);
> -
> -	switch (icpu->c1e_promotion) {
> -	case C1E_PROMOTION_DISABLE:
> -		on_selected_cpus(cpumask_of(cpu), c1e_promotion_disable, NULL, 1);
> -		break;
> -
> -	case C1E_PROMOTION_ENABLE:
> -		on_selected_cpus(cpumask_of(cpu), c1e_promotion_enable, NULL, 1);
> -		break;

I'm possibly missing some context here, but why do we use
on_selected_cpus and the CPU_ONLINE hook?  Won't it be easier to use
CPU_STARTING and avoid the use of on_selected_cpus(), as CPU_STARTING
runs in the context of the CPU being onlined.

Thanks, Roger.


From xen-devel-bounces@lists.xenproject.org Fri Apr 24 14:47:35 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Fri, 24 Apr 2026 14:47:35 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1293693.1571247 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wGHoR-0007sK-3h; Fri, 24 Apr 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 1293693.1571247; Fri, 24 Apr 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 1wGHoR-0007sD-0X; Fri, 24 Apr 2026 14:47:23 +0000
Received: by outflank-mailman (input) for mailman id 1293693;
 Fri, 24 Apr 2026 14:47:21 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <roger.pau@citrix.com>) id 1wGHoP-0007s4-NW
 for xen-devel@lists.xenproject.org; Fri, 24 Apr 2026 14:47:21 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wGHoP-004qJY-4W
 for xen-devel@lists.xenproject.org; Fri, 24 Apr 2026 16:47:21 +0200
Received: from [10.42.69.8] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <roger.pau@citrix.com>)
 id 69eb826d-bab6-0a2a0a5309dd-0a2a45089c92-24
 for <xen-devel@lists.xenproject.org>; Fri, 24 Apr 2026 16:47:21 +0200
Received: from [52.101.48.61]
 (helo=MW6PR02CU001.outbound.protection.outlook.com)
 by tlsNG-c1860d.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.1)
 (envelope-from <roger.pau@citrix.com>)
 id 69eb8277-63b5-0a2a45080019-3465303d7bb0-3
 for <xen-devel@lists.xenproject.org>; Fri, 24 Apr 2026 16:47:20 +0200
Received: from CH7PR03MB7860.namprd03.prod.outlook.com (2603:10b6:610:24e::14)
 by CH8PR03MB8250.namprd03.prod.outlook.com (2603:10b6:610:2c3::17)
 with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9846.22; Fri, 24 Apr
 2026 14:47:17 +0000
Received: from CH7PR03MB7860.namprd03.prod.outlook.com
 ([fe80::f5ba:35df:1c9f:b343]) by CH7PR03MB7860.namprd03.prod.outlook.com
 ([fe80::f5ba:35df:1c9f:b343%4]) with mapi id 15.20.9846.021; Fri, 24 Apr 2026
 14:47: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=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=RXeFGuLIkKh5gGAhaLfIrw1rDIPmfYI/fBiBF8lPo3c3zqG9+A15kqfw6HDCZCXCc1nbT/Gu6uPQziglP/3jAG9Cm/w4d4JwGBIvDXhd9FVw+idPk8WdbgjS3vVLLNlqQEpEkE6p85PbZ8Ws6lXmh2mprte2cCc/zYWXCkhTcWQRN8RiRTQjnkfz+GatP1EajHPQ/69JtNXH5ssJ6ta/3wF7IJnlO2xrMC3tId3CFSYSDadmivyzMnPaiyl45stIe/S2HvsICQHi1iQn06btM48cc+TKUNpeLp8CmvIkLj3hFJdcqxv5wpGZEb964jyCjj4YuT/M76eEIjvntMdQtQ==
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com;
 s=arcselector10001;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1;
 bh=LHgAepcKVtIJaI5trQ41l5NK3mEZnXyvkGxPIhCy9IY=;
 b=Wj7q/I1MnP9azHGHFEPrMF51gGHT1Q01esFF+wWOV0B6ryfWMUyoFy2FIUBMBasTSJZTzQpbVHRZX5eNcrVzfCZfp5+WfBVasuRUNc6w1ybkAKdw3/rxfDhChTMQryEYhyjZVJC0Djrvuo3WW2YljXehlg/kLZwis2Z6imo55RGlJfHF0aE2es9ZMU2WsueowZER50lgMJDQIgRnl5lBYwKPmNkH6YrWMXC6kN9mU9ww5dP5U/Osfqt+ryoIwr5Yjq1tsHK1ro+HEst1SBVfA+ow6meX5cgjm7GZ7vhoirHew37bZulOHfZ2t0KqFuDvazW+19kLRrj0kPq6HTzVzA==
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=LHgAepcKVtIJaI5trQ41l5NK3mEZnXyvkGxPIhCy9IY=;
 b=nW5nmQ4PRLIYfwbg03E/KrEvhXFP5XhNZk57NbKpa1dQLap1S9vhQ3OgwC8zjsH2kPZExDD6aY17fDiQYaaiV+SL+jrx7jm1VRqqh/AwWQXGq4lPvuKvkmPPAwY0ZAIBaGmz7g0fOGMqgM0yTfberEjbJS5aAldXYboAoh7j0eY=
Authentication-Results: dkim=none (message not signed)
 header.d=none;dmarc=none action=none header.from=citrix.com;
Date: Fri, 24 Apr 2026 16:47:13 +0200
From: Roger Pau =?utf-8?B?TW9ubsOp?= <roger.pau@citrix.com>
To: Jan Beulich <jbeulich@suse.com>
Cc: "xen-devel@lists.xenproject.org" <xen-devel@lists.xenproject.org>,
	Andrew Cooper <andrew.cooper3@citrix.com>
Subject: Re: [PATCH 2/9] x86/mwait-idle: clean up BYT/CHT auto demotion
 disable
Message-ID: <aeuCcSSBJ4H9UwOB@macbook.local>
References: <7b7a677e-a5b9-42c8-beec-3c506b4eac52@suse.com>
 <b906c3d5-5256-4ddf-9186-b52d8280e2ec@suse.com>
Content-Type: text/plain; charset=utf-8
Content-Disposition: inline
In-Reply-To: <b906c3d5-5256-4ddf-9186-b52d8280e2ec@suse.com>
X-ClientProxiedBy: MR1P264CA0168.FRAP264.PROD.OUTLOOK.COM
 (2603:10a6:501:55::16) To CH7PR03MB7860.namprd03.prod.outlook.com
 (2603:10b6:610:24e::14)
MIME-Version: 1.0
X-MS-PublicTrafficType: Email
X-MS-TrafficTypeDiagnostic: CH7PR03MB7860:EE_|CH8PR03MB8250:EE_
X-MS-Office365-Filtering-Correlation-Id: 2545ee10-9cbb-453b-39c3-08dea2106164
X-MS-Exchange-SenderADCheck: 1
X-MS-Exchange-AntiSpam-Relay: 0
X-Microsoft-Antispam:
	BCL:0;ARA:13230040|1800799024|366016|376014|18002099003|22082099003|56012099003;
X-Microsoft-Antispam-Message-Info:
	CnDF6AegGuWmI+pqTbc3InMwknNIxkScs1puqhr5srawger1zOO2tAcjHKlmSPhryFUiknGGpouA9iJ4A8AajSiw9dqtPJMx4vDVghSjP1UUkflPN2YYHcbB+OKKUJeE03jRK0DPmNvTcYhHDGKPgFQbz/zmwF2+eii/d4/ZRfzYz19YpoeAa3Tp4roRqQxIeJ8B5isrcFPSpxmXLx0Vz/4+6qUX67NTupQwoq1ZHUgNQPESxfoekheHha2l6NXjAI1JjkbukUxuE8IWc5MvUcRAYdBBLWYErlhO/hxg1XZ3KdAMZl1tAcmy4Ph3CPT9jP98iwUEs66RNWXqhNlJ9cewxhEXo5suYiJYoG2Ld/lI6ha/rTLPHypBccbQsSzapypzHXmTC9imjdw3L1CuDbk8C70CNqmLOlf3UIZKRJj7d/v+6TGu8+sHR2K7bn79sYFebRjTxhm633N6EAfgmEq+sBlitT4OulsWW4yFRe439qKfZEcoT+nntOxIRKBacVQKvFBJuJChN+QYcseLpkAAQIv5agcCsTmeSC649GpNuXOmU6VfsOSTrJfam40eQBRTSFYcc6J4KhfNuG+caPbfO9YUTCGGuAA+r0wOsRbP6F+LExaKHu4G64DqGSf+OuvAd40TsJ8KQVmyf0bKTWKTPahKql8Ibh6VP9q2ek2gTPu1yCUqI3C0U5ldciWePPFY8ZePHqph1gck+GwXrT0SBuJwweffJRr5WEXZpbk=
X-Forefront-Antispam-Report:
	CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:CH7PR03MB7860.namprd03.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(1800799024)(366016)(376014)(18002099003)(22082099003)(56012099003);DIR:OUT;SFP:1101;
X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1
X-MS-Exchange-AntiSpam-MessageData-0:
	=?utf-8?B?NzBhT0tTVDQwR0F5cXkzdlltNk1wSnN2SE9IOXFlQ3Z1cHEwN0pjRmM3d0xX?=
 =?utf-8?B?RVg0UFlycU5EbHNQWDh1YWFXV3FoRlBBRUN5eXJmWWMrakMxcTlDZ3lvdkt3?=
 =?utf-8?B?ekRHbWd3SUVodjdSNW5HaWRnSGV3TUhtN3NodFNPMmlNSlFIZnFnSSs1bHJP?=
 =?utf-8?B?WU5MbCtBd05hQ0JKT1VxNEt4Vk1NMTRCeGNRSUM2R3pzZHl4VnBtTFVuNStw?=
 =?utf-8?B?MEtpZk81cnpyTi9nUkExUDY5L1hCU1dZUWNSS0ZlWkFVelVhUHVuSUhEMUxo?=
 =?utf-8?B?NXZTYXdJUnVzM01DN01nMnF2YzZCM2g2c3RoZnFBSEZXa3ZvSnh2K3ZGeWlZ?=
 =?utf-8?B?TU9ka1NySzV1REREbURkUUR1YWxHWEp2a0JldlBVVzhVNzQreUlkaHNzdFpw?=
 =?utf-8?B?Y0VURlhINkdRQXFBKzIzYnJOUlRBYUtKQVZoQ2ZGZHVpb3h2REJ5SXBtbHd5?=
 =?utf-8?B?M3FJL1ZBaUxZcDBYQW1wbHRmeVNLakJTdFkvNUtNZnQyODVhcUhuYm9ZSW81?=
 =?utf-8?B?MGRTZ1RMU0FPZGtRZHlQL0hmenZSN3EvdW1pU0lJSXFBS1p6RFNqK054OVpj?=
 =?utf-8?B?RFVlcXg2MHdDZ1NMamJ0ZkxmWHY3bzFRNjRReHRrcStSc1djR2JTdUhvNE5G?=
 =?utf-8?B?U0JJNWk0aGN3TUZmSWJWVnV1ODJiOWlKTFExc3h4V2dzV0RNUTZ1QjVZNkZ6?=
 =?utf-8?B?ZVFKT0RXd1Z0bEtmcExmUjVROGl0Y0E1clE0RkFWS1ROWUFrOHhWQm9rWm00?=
 =?utf-8?B?MWZzM2F4NEhqZ3BMemloRkcwNUt6aVRyRUoyTit6UU9RL1ZJSldicTM4OWVx?=
 =?utf-8?B?YlNBelZSOWE1TXA1K0VEV3FPSXo1cHg0bFh2V3hSYU42ME94bGZ1cWJhcGJT?=
 =?utf-8?B?RlNhQW1ZRllzeDNyUUdXanpiM2t0Y0lPZC9jOW50dXNZRCsvMi94dUliZldh?=
 =?utf-8?B?bWJwaUlUWFh5U3g2TVdpS1ZNY20rdzBlU0U2cGVLaWdXTVpEWkZxVGZvaGVF?=
 =?utf-8?B?YlhRNnMxWlMzTGJudnFSRzJpcXJ1bERhcTRzTzhKaHBrZWQ4WHhhdDlNU05U?=
 =?utf-8?B?eUhhMUVKYmtHOXJlRHhIK0t3ckVYRTErbldVWHppQ0daUE5TT2VhZFBhaEFt?=
 =?utf-8?B?OVIyZlQzZkVSemp2aW5JZUhwM0w5V01sbExHd0VwanJrTHR1dzNCYWg1SWF0?=
 =?utf-8?B?cC9SdWhUS2dEMC9lRDZWYUh6cE1Sem5QOWxJdjRsajNlaGlEUitVR3VVQ2Zp?=
 =?utf-8?B?WGhmVy9aY0tuSkUvQjZ0VXhjdk1PREZsd1J4OEpzOG0yUlR6WGZRUVgrVkVx?=
 =?utf-8?B?a0p3TFcwZkZsN2U0cTc1WkJybUhBdzFHZ05lWVN4cmxSVUJCa2hQZFpJV0hD?=
 =?utf-8?B?MSs3bUFyUkhJaENqdDh4L3ljS1dCdHVGeWN3SENlRkUzcGVCaEEyMm41TXha?=
 =?utf-8?B?ZFYxRnpiRlVJRnh4MXltUllycWRuTXR6M01ySGxlZDUvRER0L05pSEd6eXAv?=
 =?utf-8?B?cGNmd01ieDI0TDlmckVyWHh2WTYvZDVjazJ3T2hXQWk1K0pCZVVGcjZsb0tz?=
 =?utf-8?B?cWRnZVdrN3lNTmdBVDZqc24wbXN3eHRDM3ZZdzF2cEovNzNEL2k3K3lsK2VJ?=
 =?utf-8?B?RXNwY2pWYWRNWnA4cXA1dVVZU2liUW9UV3pEWDM1UVo1RVpWT2d5dS9DUU9v?=
 =?utf-8?B?S0QrQ3YrQUR0WFdSdFppZjNySFhTeCtDSE1Tc25STkZ2UmJ6MnhjRTNsc3N3?=
 =?utf-8?B?RVdVb1ZWNUFPWkFRQUNZMUJPZ0xteVFwa1JNMkd0WEJ6UnFkLy8wcEY5WS9l?=
 =?utf-8?B?L25qZ21QVk1mMXFoUVFUL0lWVTZHVkVIYjZ4aFNHNGk3OG00NDR0T0Fzd2hZ?=
 =?utf-8?B?K0pZOTBoQzNzU0xKLzBSUUtSd1FaVENsdzRPblAzSEtDbzZVbzcwc3RFNTRx?=
 =?utf-8?B?RjRuZjhMS25ONGRObCtqejR5a3lBc29ZV0tEOE9MTGp6VitTSlM1dm5sVXFj?=
 =?utf-8?B?cTZjY2pBeGRwNlhVQUJOM0lndjc5a0lac0lqK3ZYZDZESXJqRWx5eDJTVlVJ?=
 =?utf-8?B?bTVFOHc0UGdjL1ZuY1RoSlh6cjZLQjAzYzVRa09JSW53alVwYXhGK3JqcWJO?=
 =?utf-8?B?ZU15TFQ0eUhpZFRKMU9yWVBNWG9YbFZ2U3MyYlM4R2ltT01qRHFXcmVjelBp?=
 =?utf-8?B?MW5Fa3dCamdzcWpXM25jbEV4Y3p0ZU0zTy9DRVhyTjFKMWkrODlCY25JUzQw?=
 =?utf-8?B?RG1ENzhkZ2dhbmk3VjBvKzJDZytRb2VraWhNc3ZqUGh3WFFmcVNsUlMyUzJ4?=
 =?utf-8?B?L2xhQ2xacGZnYXVYeHNRamU3N3BJWktHMENadENyd0VPZXR5MkxqZz09?=
X-OriginatorOrg: citrix.com
X-MS-Exchange-CrossTenant-Network-Message-Id: 2545ee10-9cbb-453b-39c3-08dea2106164
X-MS-Exchange-CrossTenant-AuthSource: CH7PR03MB7860.namprd03.prod.outlook.com
X-MS-Exchange-CrossTenant-AuthAs: Internal
X-MS-Exchange-CrossTenant-OriginalArrivalTime: 24 Apr 2026 14:47:17.2804
 (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: 9dkyC92ECiwYsuEom8jOg09bhp71mLA5AbSarJJC3ltoVIi1gF6FF3AaxgTjLVu1RZC/loeFS7zxhOVRDVvZbg==
X-MS-Exchange-Transport-CrossTenantHeadersStamped: CH8PR03MB8250
X-purgate-ID: tlsNG-c1860d/1777042041-C156FDB1-0BF72D7D/0/0
X-purgate-type: clean
X-purgate-size: 3684

On Thu, Mar 12, 2026 at 05:54:56PM +0100, Jan Beulich wrote:
> Bay Trail (BYT) and Cherry Trail (CHT) platforms have a very specific way
> of disabling auto-demotion via specific MSR bits. Clean up the code so that
> BYT/CHT-specifics do not show up in the common 'struct idle_cpu' data
> structure.
> 
> Remove the 'byt_auto_demotion_disable_flag' flag from 'struct idle_cpu',
> because a better coding pattern is to avoid very case-specific fields like
> 'bool byt_auto_demotion_disable_flag' in a common data structure, which is
> used for all platforms, not only BYT/CHT. The code is just more readable
> when common data structures contain only commonly used fields.
> 
> Instead, match BYT/CHT in the 'intel_idle_init_cstates_icpu()' function,
> and introduce a small helper to take care of BYT/CHT auto-demotion. This
> is consistent with how platform-specific things are done for other
> platforms.
> 
> No intended functional changes.
> 
> Inspired by (and description largely taken from) Linux'es c93d13b661a6
> ("intel_idle: clean up BYT/CHT auto demotion disable").
> 
> Signed-off-by: Jan Beulich <jbeulich@suse.com>
> 
> --- a/xen/arch/x86/cpu/mwait-idle.c
> +++ b/xen/arch/x86/cpu/mwait-idle.c
> @@ -104,7 +104,6 @@ struct idle_cpu {
>  	 * Indicate which enable bits to clear here.
>  	 */
>  	unsigned long auto_demotion_disable_flags;
> -	bool byt_auto_demotion_disable_flag;
>  	enum c1e_promotion c1e_promotion;
>  };
>  
> @@ -1144,7 +1143,7 @@ static void cf_check auto_demotion_disab
>  	wrmsrl(MSR_PKG_CST_CONFIG_CONTROL, msr_bits);
>  }
>  
> -static void cf_check byt_auto_demotion_disable(void *dummy)
> +static void byt_cht_auto_demotion_disable(void)
>  {
>  	wrmsrl(MSR_CC6_DEMOTION_POLICY_CONFIG, 0);
>  	wrmsrl(MSR_MC6_DEMOTION_POLICY_CONFIG, 0);
> @@ -1195,13 +1194,11 @@ static const struct idle_cpu idle_cpu_sn
>  static const struct idle_cpu idle_cpu_byt = {
>  	.state_table = byt_cstates,
>  	.c1e_promotion = C1E_PROMOTION_DISABLE,
> -	.byt_auto_demotion_disable_flag = true,
>  };
>  
>  static const struct idle_cpu idle_cpu_cht = {
>  	.state_table = cht_cstates,
>  	.c1e_promotion = C1E_PROMOTION_DISABLE,
> -	.byt_auto_demotion_disable_flag = true,
>  };
>  
>  static const struct idle_cpu idle_cpu_ivb = {
> @@ -1680,14 +1677,11 @@ static int __init mwait_idle_probe(void)
>  	return 0;
>  }
>  
> -static void mwait_idle_cpu_tweak(unsigned int cpu)
> +static void mwait_idle_cpu_tweak(unsigned int cpu, bool bsp)
>  {
>  	if (icpu->auto_demotion_disable_flags)
>  		on_selected_cpus(cpumask_of(cpu), auto_demotion_disable, NULL, 1);
>  
> -	if (icpu->byt_auto_demotion_disable_flag)
> -		on_selected_cpus(cpumask_of(cpu), byt_auto_demotion_disable, NULL, 1);
> -
>  	switch (icpu->c1e_promotion) {
>  	case C1E_PROMOTION_DISABLE:
>  		on_selected_cpus(cpumask_of(cpu), c1e_promotion_disable, NULL, 1);
> @@ -1700,12 +1694,24 @@ static void mwait_idle_cpu_tweak(unsigne
>  	case C1E_PROMOTION_PRESERVE:
>  		break;
>  	}
> +
> +	/* Pkg-scope MSRs on 1-socket-only systems need writing only once. */
> +	if (!bsp)
> +		return;
> +
> +	switch (boot_cpu_data.vfm) {
> +	case INTEL_ATOM_SILVERMONT:
> +	case INTEL_ATOM_AIRMONT:
> +		byt_cht_auto_demotion_disable();
> +		break;
> +	}
>  }
>  
>  static int cf_check mwait_idle_cpu_init(
>      struct notifier_block *nfb, unsigned long action, void *hcpu)
>  {
>  	unsigned int cpu = (unsigned long)hcpu, cstate;
> +	static bool first;

I think you want to init first = true here, so that after the first
call to mwait_idle_cpu_tweak() it gets set to false for future calls?

Thanks, Roger.


From xen-devel-bounces@lists.xenproject.org Fri Apr 24 15:24:41 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Fri, 24 Apr 2026 15:24:41 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1293734.1571256 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wGIOO-0007CK-Rt; Fri, 24 Apr 2026 15:24:32 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1293734.1571256; Fri, 24 Apr 2026 15:24: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 1wGIOO-0007CD-PC; Fri, 24 Apr 2026 15:24:32 +0000
Received: by outflank-mailman (input) for mailman id 1293734;
 Fri, 24 Apr 2026 15:24:31 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <roger.pau@citrix.com>) id 1wGION-0007C7-Fb
 for xen-devel@lists.xenproject.org; Fri, 24 Apr 2026 15:24:31 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wGIOM-005vki-SX
 for xen-devel@lists.xenproject.org; Fri, 24 Apr 2026 17:24:30 +0200
Received: from [10.42.69.7] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <roger.pau@citrix.com>)
 id 69eb8b27-e002-0a2a0a5209dd-0a2a45078176-18
 for <xen-devel@lists.xenproject.org>; Fri, 24 Apr 2026 17:24:30 +0200
Received: from [52.101.57.2]
 (helo=BN8PR05CU002.outbound.protection.outlook.com)
 by tlsNG-ef75cf.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.1)
 (envelope-from <roger.pau@citrix.com>)
 id 69eb8b2d-229c-0a2a45070019-34653902d5ef-3
 for <xen-devel@lists.xenproject.org>; Fri, 24 Apr 2026 17:24:30 +0200
Received: from CH7PR03MB7860.namprd03.prod.outlook.com (2603:10b6:610:24e::14)
 by DS0PR03MB7606.namprd03.prod.outlook.com (2603:10b6:8:1fb::17) with
 Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9846.20; Fri, 24 Apr
 2026 15:24:26 +0000
Received: from CH7PR03MB7860.namprd03.prod.outlook.com
 ([fe80::f5ba:35df:1c9f:b343]) by CH7PR03MB7860.namprd03.prod.outlook.com
 ([fe80::f5ba:35df:1c9f:b343%4]) with mapi id 15.20.9846.021; Fri, 24 Apr 2026
 15:24: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=me/RWdotcxTGx6nbrG0UwCPqcwvvv7f7An/LfTp7dQyfz6pswcobNjKRpUqS5kVrPQXNQl52K6uPnU95pZ5ZnqipW5QWGsNcsmcdvZvEAjnkTbQO+oBbZR5b0rNKViDjyHZX5Dt00N0r5Mux6348Tia6x/H1HqetJXpd6WC3FlavzSNrvIlSgkemSMST4V1zeeKOXOLQq0yS2f+B8H/l1ZNodRminOBxe+gWCQb+40M8XCVDzbhF2t1XYU27o9xMuKxruAe+ZxBVhlW1dU9OL5lVbcbihUB2Eq7WYwI2VJ2alWZMcxSNAcbgiq9290GgNXgajxAFMIBDtU0efcV98A==
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com;
 s=arcselector10001;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1;
 bh=lNhK+c2VMNzcotRRllhYcuFNuh12pdskKP083Umo5d0=;
 b=C4S/JiaVysDyPl4U0cK9lqzHUMc/9iuXCpHMjmbZ7suipAo2fL0qBeJ15o3PbdlWA98mv3J4cr6ou7y9mnd4/w1IpvFpaLNfMZbkyzrdEgdrDt58MD0X6yDUlSBwn81tICwkaJoMb84r2H0fYsvLsD3UBPeoNJosgMwioPmuNq5Qzx0zKjjZ20mayXN0tyZxMGUDp3ytcKrmO/KUl4Z6suf+pwTINayPHrSBynU6kJBxdRACCTvGzfj4Nl4FkYzD+2RYn7M4WnxqoJ+K+eg8fswmFxQvAB7IC3/Gumr0RacKiRIChuT9q2sZBK20rkUFF48dsKjo1qyH66AVNy0dkQ==
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=lNhK+c2VMNzcotRRllhYcuFNuh12pdskKP083Umo5d0=;
 b=oo+EAoOGaVAet09lBCb9fk3Q2AVpUkjDMI8TwiwzgMnJV70EdSxsE+iv5KO4OFUfErKIfxIq3mp7IDhXHXWcVG0bhDF0HhyoqN0QnXczDG97i535fl4d7L4uT95v0p/zTvRf/YVip3i5H7vPekjVVAjOxIRIYQUg3jxZEoDjKZE=
Authentication-Results: dkim=none (message not signed)
 header.d=none;dmarc=none action=none header.from=citrix.com;
Date: Fri, 24 Apr 2026 17:24:21 +0200
From: Roger Pau =?utf-8?B?TW9ubsOp?= <roger.pau@citrix.com>
To: Jan Beulich <jbeulich@suse.com>
Cc: "xen-devel@lists.xenproject.org" <xen-devel@lists.xenproject.org>,
	Andrew Cooper <andrew.cooper3@citrix.com>
Subject: Re: [PATCH 3/9] x86/mwait-idle: latch struct idle_cpu contents
Message-ID: <aeuLJTAb9SBr1VlG@macbook.local>
References: <7b7a677e-a5b9-42c8-beec-3c506b4eac52@suse.com>
 <5d12d537-7c6b-4730-b963-a4a9e13a7413@suse.com>
Content-Type: text/plain; charset=utf-8
Content-Disposition: inline
In-Reply-To: <5d12d537-7c6b-4730-b963-a4a9e13a7413@suse.com>
X-ClientProxiedBy: MR1P264CA0106.FRAP264.PROD.OUTLOOK.COM
 (2603:10a6:501:50::6) To CH7PR03MB7860.namprd03.prod.outlook.com
 (2603:10b6:610:24e::14)
MIME-Version: 1.0
X-MS-PublicTrafficType: Email
X-MS-TrafficTypeDiagnostic: CH7PR03MB7860:EE_|DS0PR03MB7606:EE_
X-MS-Office365-Filtering-Correlation-Id: f06c946f-9b88-4765-d47c-08dea21591cd
X-MS-Exchange-SenderADCheck: 1
X-MS-Exchange-AntiSpam-Relay: 0
X-Microsoft-Antispam:
	BCL:0;ARA:13230040|376014|1800799024|366016|56012099003|22082099003|18002099003;
X-Microsoft-Antispam-Message-Info:
	r9AN2UDIAItJVAk15Ep0/dvZouz8cDbYm6v+Ui1HEXCRGoC4zowmUQKp8LRckSWNvTi8qmR6zYnkGohiydoDBgVfsMWeyLBgqhVqTwu9cTMdzSRdALqtL/5btLidQvFqyXbNxgZhQAsFQlKLhtk5T+0peg7kLVKduM9BN4GYi6hRn/WsPsOqoIqIp8/5vrtNy5h88ofWQ6bn3A+iXHk2tSXcAI8UBGBM8S3aUmhsWt/rWtCbHu9guhKJjr7GkzJhBVl2cVPUQItFSEDBPIoo0cPy2qYdH76azOIn4/6SmbBR8r27rERyNFpPn7Mtk9xlbL+Pw/T7bNp0vBbnA/AbeHepEtquTcOb02WNC69MjhaoIeExuIC39+bJuseIxExqnXTNK0eEG5cdEiuMBi7UAdZQWfeCn6p4/++UdodF3+jrfb48SfAozWo7Qy9wRnK4JDJmZmYkUspBLbX5VntfJRXpX8WDhHP3PmJv6eHoMbA0inzyYZqiqWKGBqsKNjOFVUg5GkJwkiLK5WDzhUxoOP9aOigKHjO1txnu8S6eW7MNW7GT2QWkwDSu6rNbcmVdS+VW3z3Brk3M4eFJWz2aBjqvp7k4oA0sKNuxD4z1YZS0NI1qlfJl9rBCz/6ARRIg7TLeC43kH/fbDOrbkNXd8gLRTJLZan8b2c2VaWSZkDRTANPoKG8R8yfIpSD6UeTT01KXXflAv3F/LTryzeF/iqsQWfRX9uWG1SO6wYokVhs=
X-Forefront-Antispam-Report:
	CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:CH7PR03MB7860.namprd03.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(376014)(1800799024)(366016)(56012099003)(22082099003)(18002099003);DIR:OUT;SFP:1101;
X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1
X-MS-Exchange-AntiSpam-MessageData-0:
	=?utf-8?B?TEpjN2xoVFIzQjhWSU1MWDZDeEJrRHM2Z0ExaXlyUGdCemxOUFpieURUdFJx?=
 =?utf-8?B?ZGVKdzFaK0NhcERXNXgyRFRlcTArbTB2emptMTZxMmVMdFF1Z1pjdXZUSzJ3?=
 =?utf-8?B?WUZrS2xBaTlhN1pCUmEwYVBycThSaTNiRXh1WnJUc1dvVjZqVUJQc2FXRmVp?=
 =?utf-8?B?VCtwYkkvZElVbmdTa1NNd0YwWE1FMjROTEhUUXNuT2lSS25keWwrclczTjVO?=
 =?utf-8?B?MEZUOUJycnBQc3REZnFyU1NlejNpcFRyYkhCeHpidUlRcE5sc0VZQVdXUlBv?=
 =?utf-8?B?V0RyeHBlNndSRFErK2pETnlvRHdvbGhaYXBlMzB5VzhYb1h1QVA4cnFYQWNH?=
 =?utf-8?B?b1FSeGVFNnBLS2VYK3BqOGJkcDhKUmJkbDZhckRIdm1aVXBiL05JcldoVHp1?=
 =?utf-8?B?SVk4UmxGWjdod2dDM0s2ZmkvT1c5Rk9VZDRCRUhleEQ2NEVxVU9VOU5HZjgw?=
 =?utf-8?B?NmRNdDdMR2N3ZWJnNlhFUHMxenR4dW1ScVlqOG1UWkJmZWdzYmM2azJGcEJQ?=
 =?utf-8?B?S0I3RVFuU1FBTk52TWptVTlvaXVaU3ViT3IwZGZocGtkZ1RWMzJ5ZXNLdUU5?=
 =?utf-8?B?QWZ0N1hvaTBUMnYvL1NnbjVyTFlSbFo4VWVhYmNHYm1DK2dYM205Y09DNUJC?=
 =?utf-8?B?cVFwZDVHL3JVQWdhcnBUVlR0UUVCeUxrWWg1K1JUcFNIUnY4NXVoUlF3bHdI?=
 =?utf-8?B?YzBEKzNCQ2NONlBDOW13VjNnc2pQSDFhOGxUWXJuT0NJVjlvRjNNSVA5VHpa?=
 =?utf-8?B?byt5NWpodzNVQ0tDL0tDVnZyMXBuZGFOVzl5Q2Y2NXF6azNhUUtZU1lwYU9R?=
 =?utf-8?B?YThCNmsyVDF3VEN1dXNURkx0Tm5OZHF3SjBBV3FwbkpDbXR1SUVrOXAzYlIy?=
 =?utf-8?B?Y280ZFRvbWQyclgyTzBZWlJ3d3ZUdVlDa2d2VnBOL0V6NVJ0RldveXhXNVFQ?=
 =?utf-8?B?dW1jYkZDNHBvQlNtRHh4UjNhTDBTNEk0SlF2dW9WODJtTXY5TjNUb0t0MHU4?=
 =?utf-8?B?bGtKTzdvekFuR1R3RWNibDg5N2dBWURLWi9kQS9sYkg1OTBnZVg0MkNlUWpX?=
 =?utf-8?B?VllUVmFPeDQwVlRJMmFRT2FOL3JQRFluclg5Q21pRjQ5OGIybTdhWE9wVW1z?=
 =?utf-8?B?VUNhVWRhaTM2MTIxcXk1cCtsRnlEUVVUaDJZVEZEdURvM0oxSTdlNzBJNUQx?=
 =?utf-8?B?RS9IUHJDS1Y5aDRSSkIzckJtRzdWaTRtbkUvZnRFVnYzSkRGbWhSeFRnZmRs?=
 =?utf-8?B?VERlOHY1QnJTdmkvajAvc01nVW41MUs4RzE2Z3lxZm5ydmkrVW53aW1nSUl4?=
 =?utf-8?B?WWYrYVNuSUV5b1NqaVVwZ084REtmb0RaTVNrNkVXNk1DQWl0M1ljTDFJdyt3?=
 =?utf-8?B?cHZWbzZyTGZNL01NQ1FZV2toWCtJdGx5UC9kZkl2bVFwT0NIUUN1T1Nxc29v?=
 =?utf-8?B?bGpIUXhZODZTd01iTkUwdlgrOXZmZFordDZJRDhXRitwODBIWWZoUHlqcTNM?=
 =?utf-8?B?N2k5RnlvSEtVdThDTXFjY3NUUXRlUVB5bFBYTjhkQlVycVlLSHZxaVRLVW1K?=
 =?utf-8?B?dU1BRFR6bkJJcG04SVlpcU9CbWdzVEM2U3dDRFFRa3RBRzBvczVyNnRSeUNL?=
 =?utf-8?B?WGg5V2RVMCsyU0F6RFgxMU5aci9Kb1FMVEJLR1J4M0QzUWlOQVZITDZYNk5W?=
 =?utf-8?B?UzY1MC9URzhEdzVNN1FJbmRHVCtqUHNjbmNGVU5NNlZCb0l6czliVDJnS3hZ?=
 =?utf-8?B?UW5ZVXBDMSt5NmNpaFhBMENiL0FTb21Xb2grZTA2MjQwUitUUmtvaW5udkNR?=
 =?utf-8?B?ZHMzM3QwWTRYUHlsR1ZXRytoREh0ZFl6Sy85ajhFbjVVV0NaNGNDT1RvK2h5?=
 =?utf-8?B?cmJFNytHeWJidXpxQStGM3ZBMkw0M3hYWjlMbTNZdnZmRE9tdHFNUVpaSFY1?=
 =?utf-8?B?ZDVXRHkwVUk3QWQ3enFzS2pGRWtVaHNpK285c1Nlbm1UVXVIdlBubnFKdnpx?=
 =?utf-8?B?WGs5dEh1NmplODJTTFVSQmVrdVZpNEgzc2pYcURBM3BHOGpsNDlEV3E4MlBN?=
 =?utf-8?B?cGpDS1ZoZ1BqMk8rSjQ2YVhjOFFBSVhlTjRFbTBqYXpKeVFCTS8vOTU0R1Az?=
 =?utf-8?B?TUl2cWhXU3RXZVEvWmhUTmd2aWp5eVVjVTRRSEtaR2pFTnBaZC9oMVJyNHow?=
 =?utf-8?B?Zit5RXhnTHNReDBkVkdPVE9qVHZVbW5oTDBPRy81Mm9FSTBidXNIcFdvbmZL?=
 =?utf-8?B?VEZpeVUwYzJQZm1nWG1QM3NOMWRhY1lRUGtLUXdaZGZ3aWZLcndFZTBaM3Jy?=
 =?utf-8?B?cUFLOVFMVWVMTTYrd3dxbjlkSTVCUklXVlFxQTlGUUR1bFoxMUxndz09?=
X-OriginatorOrg: citrix.com
X-MS-Exchange-CrossTenant-Network-Message-Id: f06c946f-9b88-4765-d47c-08dea21591cd
X-MS-Exchange-CrossTenant-AuthSource: CH7PR03MB7860.namprd03.prod.outlook.com
X-MS-Exchange-CrossTenant-AuthAs: Internal
X-MS-Exchange-CrossTenant-OriginalArrivalTime: 24 Apr 2026 15:24:25.9065
 (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: /B5ARbt7MB2SVoAQw+uZgX595qUh68T5mnbl/ddcM/G+SrK1HCutoQ59MslinrcDeGZdZQ5HP8rP8Ie39O4Olg==
X-MS-Exchange-Transport-CrossTenantHeadersStamped: DS0PR03MB7606
X-purgate-ID: tlsNG-ef75cf/1777044270-AFF7EC48-6F0990BD/0/0
X-purgate-type: clean
X-purgate-size: 912

On Thu, Mar 12, 2026 at 05:55:22PM +0100, Jan Beulich wrote:
> Rather than storing a pointer (and needing to keep all struct instances in
> memory post-init), and rather than (like the Linux counterpart has it)
> keeping individual variables, simply copy the respective structure
> instance. By implication, subsequent updates now need doing to the copy.

Shouldn't the aim here be to move the myriad of per-arch cpuidle_state
arrays to the init section, so we can get rid of them after boot?

Overall I wonder whether we would rather attempt to sya in-sync with
what Linux does, simply because it's then easier to pick updates fro
Linux, and less likely to introduce bugs as part of the modification
needs to adapt the Linux code into our fork.

Not saying the change is bad, just wondering whether in general we
would better try to keep the code bases as similar as feasible.

Thanks, Roger.


From xen-devel-bounces@lists.xenproject.org Fri Apr 24 15:34:06 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Fri, 24 Apr 2026 15:34:06 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1293745.1571265 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wGIXZ-0000oc-NH; Fri, 24 Apr 2026 15:34:01 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1293745.1571265; Fri, 24 Apr 2026 15:34: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 1wGIXZ-0000oV-JQ; Fri, 24 Apr 2026 15:34:01 +0000
Received: by outflank-mailman (input) for mailman id 1293745;
 Fri, 24 Apr 2026 15:34:00 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <roger.pau@citrix.com>) id 1wGIXY-0000oP-11
 for xen-devel@lists.xenproject.org; Fri, 24 Apr 2026 15:34:00 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wGIXW-00EhX0-VK
 for xen-devel@lists.xenproject.org; Fri, 24 Apr 2026 17:33:58 +0200
Received: from [10.42.69.1] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <roger.pau@citrix.com>)
 id 69eb8d5c-bab6-0a2a0a5309dd-0a2a45019fae-16
 for <xen-devel@lists.xenproject.org>; Fri, 24 Apr 2026 17:33:58 +0200
Received: from [52.101.61.7]
 (helo=DM1PR04CU001.outbound.protection.outlook.com)
 by tlsNG-d62444.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.1)
 (envelope-from <roger.pau@citrix.com>)
 id 69eb8d65-c1f2-0a2a45010019-34653d07e22b-3
 for <xen-devel@lists.xenproject.org>; Fri, 24 Apr 2026 17:33:58 +0200
Received: from CH7PR03MB7860.namprd03.prod.outlook.com (2603:10b6:610:24e::14)
 by CH4PR03MB7747.namprd03.prod.outlook.com (2603:10b6:610:23a::13)
 with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9846.21; Fri, 24 Apr
 2026 15:33:54 +0000
Received: from CH7PR03MB7860.namprd03.prod.outlook.com
 ([fe80::f5ba:35df:1c9f:b343]) by CH7PR03MB7860.namprd03.prod.outlook.com
 ([fe80::f5ba:35df:1c9f:b343%4]) with mapi id 15.20.9846.021; Fri, 24 Apr 2026
 15:33: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=psi/kyokUD+9wQJVYBdHMchJT0jvdb/Vig2Zssaf0GyC6OhV23lCqwPKRVs+tXI0fy1dGg23XHnC0V5cWPqlvTOEkcFIA+mdaJiaVKLWQsp/ol7tw36jHEzF5KGCNH9nzS/L5JUx966FXDQ31e38QczUFKrDAHVVH+t1K+mBkGdiVN48bWhlNATfORMpGroaeU6aL6jpPynRI2MH2QC9/+zdAc+09jBZltOpCMbdsIxy6THrw2qFj9bdC/aIdqOmWU3WPsGe+Y4Vqy+AxQo/1Wtu7RtgGWVxGuyDBKuU0taBxPJl3u6JxPQu1MXJvzhwXSkn1YA7ZRF/liWNqSXxpw==
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com;
 s=arcselector10001;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1;
 bh=DE/BHIikYq5tbOS2DaaMjqrjw+0xUtVCDg7y0Uqbn+M=;
 b=jRYlR4m7TrjkGe+GcbQ2yqIeCbCe7VG/KlxQiRyE1cC73J4ZsVMTJ1MigXPmQLU8zaQxuYF9NnTmfwU4LK/AE1prKUPQs4gNPlI2IwDb42J6aUJfCA8Y9eunWAPldgAry8lOU4tc7Vu04X7Ck4yj9Nf1OV4/bIevkpxx0K6JGID3y52LcV3W2VqeJfcS/VbFOpywVSeH47oHERfZGFf+P34FRPc1o2lqCpl5NxjFnredZ5XQN1axU31wY+aAi6BhOWCeZLOKv1GhUnkL7OD3cLrGC04k80MViefm0jFxk0E2myCrpFs4UHjG1/038+7tNkIT7PVrXHFCydkjDjbaqw==
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=DE/BHIikYq5tbOS2DaaMjqrjw+0xUtVCDg7y0Uqbn+M=;
 b=rPGIB2EjvgoXE50Uka4jLkhQkV7n9A4K+17DwvdCNGZINNOWQPL2oXWx0PVex0VmesmWjC17kbiqCXP9zyr73nLOOTxNy3aOEsn2ndVEQgtzI1gmcFOsu47/WYq9eCkvucv9dsm6g13K/I/wqO3gVrFXQ9MSrWWvK0PYcFPxkSc=
Authentication-Results: dkim=none (message not signed)
 header.d=none;dmarc=none action=none header.from=citrix.com;
Date: Fri, 24 Apr 2026 17:33:50 +0200
From: Roger Pau =?utf-8?B?TW9ubsOp?= <roger.pau@citrix.com>
To: Jan Beulich <jbeulich@suse.com>
Cc: "xen-devel@lists.xenproject.org" <xen-devel@lists.xenproject.org>,
	Andrew Cooper <andrew.cooper3@citrix.com>
Subject: Re: [PATCH 4/9] x86/mwait-idle: move pre-initialized struct idle_cpu
 instances
Message-ID: <aeuNXj-ub5Kp9UJU@macbook.local>
References: <7b7a677e-a5b9-42c8-beec-3c506b4eac52@suse.com>
 <797f444b-886f-46ed-9672-a0f302d47336@suse.com>
Content-Type: text/plain; charset=utf-8
Content-Disposition: inline
Content-Transfer-Encoding: 8bit
In-Reply-To: <797f444b-886f-46ed-9672-a0f302d47336@suse.com>
X-ClientProxiedBy: MR1P264CA0074.FRAP264.PROD.OUTLOOK.COM
 (2603:10a6:501:3f::29) To CH7PR03MB7860.namprd03.prod.outlook.com
 (2603:10b6:610:24e::14)
MIME-Version: 1.0
X-MS-PublicTrafficType: Email
X-MS-TrafficTypeDiagnostic: CH7PR03MB7860:EE_|CH4PR03MB7747:EE_
X-MS-Office365-Filtering-Correlation-Id: b895d283-f234-41f0-a9f9-08dea216e481
X-MS-Exchange-SenderADCheck: 1
X-MS-Exchange-AntiSpam-Relay: 0
X-Microsoft-Antispam:
	BCL:0;ARA:13230040|366016|376014|1800799024|56012099003|18002099003|22082099003;
X-Microsoft-Antispam-Message-Info:
	8o0qWNBuGKdxJj4Bhl3JjJjszEaz1+k8irvfHJ3T00g/MG1Rg8OQy/mUTC392rk68EZzd6R2OQHLjoXd6yRA6F1zmC/YbFMF1fr5D5T5e1TX0+USUCwZqYguY+MSbtnkYFrPUIlYJfCYtH7DS4a7xvv68yhfF4b6CPg9tPMRyjOc51h+ng95A1LoYExgBtbG1zi+sX8TAfYFNew5ehilitAQn3Pl02YsYBNX/8BLgBlmlN2QTyAchNQZPrS+wCV5hUwqvBdDj90hl5IGSGfruacwy1gtQ12sqkV/+xQCTS20PorKIhKPMyuztYHI9tz6LNfxuu5PWtpMs2MInslpyB7NhA44Rq2TaiqowueSaT19MuSIn66cQLy8YynZkmVQIIANDO47LgpU4uakyrerP7sj4ZBmimkKXUEvmIfn7akbdJytQrA4PpU76pHkoBDeYpsvx6/tcEMYqf0CaofkXVBguULJ0NgHkQyBJlXlHMqynsVHpixzghOXlYVcGfOnfrbBZRHwYfYSnPtNVv94oJmVaC2BSRdehcj5OB30r8ANGOE9PQ+do+GzhUeSqZ3gohyLs6am4JTUeKt0OuoE4hTdgWJm2HQAKPMcEx33pv7OBaJ7sf+/DPfKUN+h7qD0LNvsTYIqo240E+o0cVrRF939Z8CDzUNFty7Og/avKMmFLwONt0cp8yPFoUoJe7oqti27gi1yuYSTDkMylhPhcvMbEv90wLX7UVldCC2rLG8=
X-Forefront-Antispam-Report:
	CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:CH7PR03MB7860.namprd03.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(366016)(376014)(1800799024)(56012099003)(18002099003)(22082099003);DIR:OUT;SFP:1101;
X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1
X-MS-Exchange-AntiSpam-MessageData-0:
	=?utf-8?B?cHhobjEva0d1WVNydFd6QlRmb0hmUDdwNUZYRnZBNTliVHJ3WEdrV2xQZ3R4?=
 =?utf-8?B?Q2E0N3N2eklFdVZPMkpycnQwMENxNWVJc2xwZWl3SFpoT3d2TnFuWVV0U0wr?=
 =?utf-8?B?SVhmZjZReHRxS0d1MVpRSjMzWWE2WDA5R1dsQy9sNkdGOU45c05VVE5IdExn?=
 =?utf-8?B?eTB2cEN6Yi9OSGhsRmc4bzQrdGo0OU9wY25FMnFmT2JSQ3lySFVDMVRqR3Y2?=
 =?utf-8?B?M2JoVis1Z095am1vZitKeWNRR1BBYVhhUXc1RnBodCsrUTRwaThEYUM2bmQw?=
 =?utf-8?B?WlozN0Y5eEdLbm51UFV5cXB5OEUybDY3SmZUNkYzNW1IOExTakk5a2JOb2JQ?=
 =?utf-8?B?QVFnZncrSExlQjRFeDVXUWdDNzhVTzVKNm5WdWtzRDBHYlJYVUt3WmRSTGI0?=
 =?utf-8?B?Q0Zqc2V3LzlCZ0FJMTRZQ3IzdW9SZW9uWkRWMnAyZXhCU0cvZmh6bDVGaEEz?=
 =?utf-8?B?bU5KNURGaTdBZXE3WlpRUHNiSDd1MmZQZ2hrcnU5RnZZZDJTNi9MY3dJYVNt?=
 =?utf-8?B?WkVHQ04vNjhiMVVwcFN6bmNQUk5DVDBUR293cEt5N1lIK0dJdm9NTDU2c2R5?=
 =?utf-8?B?eHJlV0hpZVA3UnZSbDRVQXEwM1FBUm1Oa2Rwc3FWTGEwSGkrMTlLL3E1dXJX?=
 =?utf-8?B?L0l1MGovaGJBeHJRV1FHRVZYOExGUkhOZllzQmdEZlh2VW1nd0IxN0ZnSG91?=
 =?utf-8?B?QzVPMHVQZHJFNndBMDBjWE1aVTdlQzNKQWhrc0xhL2ZHZHJVSXhmZlB4UzBS?=
 =?utf-8?B?d1ltREhWRTUrbTJjbXh0YjR6aEd0UFpPdlNSdDYxT1kwdW1pU0ZEeStvcTV3?=
 =?utf-8?B?Wjd6cCt1ZWU4YVNFOEhRZTNRUkxFMnpJVlFPVnVtRHRRTHd4VjExV0wwSFMz?=
 =?utf-8?B?MTFUb0IwanR0SjZVUGFYcEtMc25qVHVSeG9xUi8vdkR3T1Vyd3drdnl4dnV3?=
 =?utf-8?B?dk5ZSjYyZU1oVzE4TWdjWm9pZGptSWNBdXVXZDdIMmJUajRnSXU3SE8zUzIy?=
 =?utf-8?B?RGNMQ0JCYzZYYW0vUHh5bE5lSU45c3hDUkZHd0ZheVViQUJRQjlDbUdRMHRx?=
 =?utf-8?B?R2JncDl5M3BvNE0zei9STGxHTkFMWDVwQTlLSDZYaTNFRkZCYXhJNGU4Z1Vh?=
 =?utf-8?B?cVNZWVFkT2pUSVQ0dU8wN29lUmIxVXdNdmx0MXZvNGVIb2FCN0dxNWlLenJh?=
 =?utf-8?B?eXdacFR3TXRBNGFGbk9sT3FrT000TTNUYklOQWVPSXovZWkvRGoxdEZTak9j?=
 =?utf-8?B?ZXFIN0IrVmplNjNHRkY0NnR6NnFxK0JZM0hTZkJ1SkUwSFNuRldocEgrTGIy?=
 =?utf-8?B?eDg3d3BmZHdZcC92Sk9EaUdlNXpxSC95YlY4ejRGV2ZaWDl0TWNYWHFkd2lM?=
 =?utf-8?B?TzU2UVI3RkhxMk1QSXRIRFBCUjQwZmFOWENZOEwrZlJ5K0hGQmR5bzJaaVVo?=
 =?utf-8?B?R2twMktlWUpWZ1pGWmY3dTBtNlQyd0JEUkk2Zk5hV1lHMldka2Y5YnorTWNM?=
 =?utf-8?B?Tko1SWo3Yzd6UnlmdnJ4QThaaldZYnpUTDZ0Y3pOaWtnQ0gyWjRadk1IN3JX?=
 =?utf-8?B?K2p3bSsxNTE2TGhMcVl2VVZWZ1BtVVNETmZLOTJoeldqVVIxVFJ0NXA3bmR3?=
 =?utf-8?B?RktwNERnTHhSbkZ1VWN1cVNTSktwZXMrRFh0SEVjb1VETllwMkdjZUdGK1JK?=
 =?utf-8?B?SGZOV0k4cE9UR3ljTUhpWHJKUTNncUVFa0hxcmhaYUhpZkxXU2FuajJQbE1W?=
 =?utf-8?B?RlhaUEI2eTFQUWgyK2RoZEs5MjYvZTRaRTBpMUVMblAwaGRvQkVMK0tDWGFH?=
 =?utf-8?B?clJoeHBnNlcrMmRhc2JPUDNsanBvNkFBSTdBRjR0N0krZFNRYXhPSGJ2a3lV?=
 =?utf-8?B?WElhamZiaDVjbldQOEJkVW5aTGpWcWF6M0kyb2cwV2x5cE5LTG5tMkJJd05Y?=
 =?utf-8?B?NkFRMlowM1ZIZUhQZlFRVU1HVE9BakRuS2lMdDRSUlkyOGFNNnZWVTVqa2VN?=
 =?utf-8?B?bjJERU1sbTJsMGxrZUNRaWlXQW9wbmpoZWpIUUF6K3JHWDZVS1JqRWRIVjU3?=
 =?utf-8?B?eXhtamVQU3Z0MzA5dnVoMkZCVk5zQm1nNXVJaDJrRGJzUjV1VVdya0FFVEs3?=
 =?utf-8?B?TDdZbWVteTJoQklHcDBpQ3JqdnpZSFE0L2xoS0tBcXpLMGtUNHBjS05zUGZs?=
 =?utf-8?B?ZmxSUGFzRUxyTzJsbDR3RXdnMUl0T0QyMTRBSU5vY3NtbUZuTFdJMk1tRjhW?=
 =?utf-8?B?N2JzWEk1bzBQbzNzaXVKN3k2b0RmRnZtdHluOHhYY2pubG1zdm56Qkx4Y3gv?=
 =?utf-8?B?WEFyczNPWlVOdGdDdUtlb3JQalNCMWoyUllZSTZEYW9xQ3lGODJ1dz09?=
X-OriginatorOrg: citrix.com
X-MS-Exchange-CrossTenant-Network-Message-Id: b895d283-f234-41f0-a9f9-08dea216e481
X-MS-Exchange-CrossTenant-AuthSource: CH7PR03MB7860.namprd03.prod.outlook.com
X-MS-Exchange-CrossTenant-AuthAs: Internal
X-MS-Exchange-CrossTenant-OriginalArrivalTime: 24 Apr 2026 15:33:54.2160
 (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: +fofdPLmHnHNZ5OkmyoRXCindSdoymYH7DpmUCnY7LlkcaKxm8n7uuQiJieb1nruIGzzbew2FfHSkRiXoUlfJw==
X-MS-Exchange-Transport-CrossTenantHeadersStamped: CH4PR03MB7747
X-purgate-ID: tlsNG-d62444/1777044838-BDA69FF4-29900B37/0/0
X-purgate-type: clean
X-purgate-size: 650

On Thu, Mar 12, 2026 at 05:55:50PM +0100, Jan Beulich wrote:
> Now that they're not referenced anymore post-init, they can themselves
> move into .init.rodata. (idle_cpu_adl{,_l} can also become const in the
> first place.)
> 
> Signed-off-by: Jan Beulich <jbeulich@suse.com>

Oh, OK, that's what I was missing from the previous patch, then for
this and the previous:

Acked-by: Roger Pau Monné <roger.pau@citrix.com>

Albeit I'm still concerned whether us diverging (further?) from Linux
would causes more work when picking up upstream changes.

FWIW, I would also consider squashing this into the previous patch.

Thanks, Roger.


From xen-devel-bounces@lists.xenproject.org Fri Apr 24 15:35:52 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Fri, 24 Apr 2026 15:35:52 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1293753.1571273 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wGIZK-0001Hl-0K; Fri, 24 Apr 2026 15:35:50 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1293753.1571273; Fri, 24 Apr 2026 15:35: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 1wGIZJ-0001He-Th; Fri, 24 Apr 2026 15:35:49 +0000
Received: by outflank-mailman (input) for mailman id 1293753;
 Fri, 24 Apr 2026 15:35:48 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <roger.pau@citrix.com>) id 1wGIZI-0001HY-A3
 for xen-devel@lists.xenproject.org; Fri, 24 Apr 2026 15:35:48 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wGIZH-00B9oi-Mw
 for xen-devel@lists.xenproject.org; Fri, 24 Apr 2026 17:35:47 +0200
Received: from [10.42.69.8] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <roger.pau@citrix.com>)
 id 69eb8dd0-bab6-0a2a0a5309dd-0a2a4508c03c-2
 for <xen-devel@lists.xenproject.org>; Fri, 24 Apr 2026 17:35:47 +0200
Received: from [52.101.61.21]
 (helo=DM1PR04CU001.outbound.protection.outlook.com)
 by tlsNG-c1860d.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.1)
 (envelope-from <roger.pau@citrix.com>)
 id 69eb8dd2-63b5-0a2a45080019-34653d153008-3
 for <xen-devel@lists.xenproject.org>; Fri, 24 Apr 2026 17:35:47 +0200
Received: from CH7PR03MB7860.namprd03.prod.outlook.com (2603:10b6:610:24e::14)
 by SJ2PR03MB7331.namprd03.prod.outlook.com (2603:10b6:a03:55f::12)
 with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9846.21; Fri, 24 Apr
 2026 15:35:42 +0000
Received: from CH7PR03MB7860.namprd03.prod.outlook.com
 ([fe80::f5ba:35df:1c9f:b343]) by CH7PR03MB7860.namprd03.prod.outlook.com
 ([fe80::f5ba:35df:1c9f:b343%4]) with mapi id 15.20.9846.021; Fri, 24 Apr 2026
 15:35: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=V9NiHyrVuQa+Iklz9MBubYOUY2Z9mIfhTezuwmm54ECWtE1YCT6QetlMNSnN4PqNYTAoQFYi8BlRvc60yjUe34mnW3wMgJDIQ8z/vBYUssczS+3aQBfGYyLzVBRT+c6k0TAnVACkOUooRatsN5xxVlZcHTQ5NGTAvfUVj0iyr7+VB/G8evITuQg4IxWszg6MahGcjohPI2l5PmVKZCYXO9IdayCEevndL5AgkVZZPWq6AaX86uwp/rD1NL8l35PinMiM8TngPNc8XWdbx5+XL654+w14xYi86TOIyvkN/Rt7WgUAksNJaClPXPPcuXknY8PuFVmBaBqjbf/DWVYb4A==
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com;
 s=arcselector10001;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1;
 bh=YtaPLHaQyxJrgjzAo+aoXGBQV02DhQjyXiU+VMw93Ow=;
 b=r1pwJJCOTjmosB2XQ6VvbafD9kYj9fGQl+cLGIBYIZWN2lqNUMjDh5Y24DLYby+8wwtGeK/fwiNG11l7hZYAI5lqSZCUvtDPpWx4ynXJ2fC35UCfzZwq+25Pl5gvfYKzpdkf42AwBqQug+7kdKTzj6RhmD1SbshabT3RKGV/DMwufWcYPGObbJVqa/XvLcOUnP0KC03EjfZ5nxORzBE2an/MGbUvSiE3fU39xC86CaVU/603XhrdK+QQf0ZdM80gLdgysenDgJJ5mSA3m+qJx6xTAv6UC0191dAtRRgl3OXuR3WW70MW5DvWA0IuSWORAfiofcCgZ08ENt/hh5auew==
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=YtaPLHaQyxJrgjzAo+aoXGBQV02DhQjyXiU+VMw93Ow=;
 b=DNT87UyMmASLnjYztA9Xq9gulxx8cqvl/MbDqOz566G7CHT+W5TWXpHgRR7JNYcnbhhgH35CoSRR0eMwdtpgyrlLBVOi7f1AAuHeyXg0KRGOiBTPYiNsg+m60GjJ+GcenHBewCh/wT5hefoEkmlBLdrnQ+28VhYCpCyLuSAJcYY=
Authentication-Results: dkim=none (message not signed)
 header.d=none;dmarc=none action=none header.from=citrix.com;
Date: Fri, 24 Apr 2026 17:35:37 +0200
From: Roger Pau =?utf-8?B?TW9ubsOp?= <roger.pau@citrix.com>
To: Jan Beulich <jbeulich@suse.com>
Cc: "xen-devel@lists.xenproject.org" <xen-devel@lists.xenproject.org>,
	Andrew Cooper <andrew.cooper3@citrix.com>
Subject: Re: [PATCH 5/9] x86/mwait-idle: Remove unused driver version constant
Message-ID: <aeuNyRof1cApCnV4@macbook.local>
References: <7b7a677e-a5b9-42c8-beec-3c506b4eac52@suse.com>
 <d9c97191-853b-470c-9ef1-25eab98c08ba@suse.com>
Content-Type: text/plain; charset=utf-8
Content-Disposition: inline
Content-Transfer-Encoding: 8bit
In-Reply-To: <d9c97191-853b-470c-9ef1-25eab98c08ba@suse.com>
X-ClientProxiedBy: MR1P264CA0158.FRAP264.PROD.OUTLOOK.COM
 (2603:10a6:501:54::18) To CH7PR03MB7860.namprd03.prod.outlook.com
 (2603:10b6:610:24e::14)
MIME-Version: 1.0
X-MS-PublicTrafficType: Email
X-MS-TrafficTypeDiagnostic: CH7PR03MB7860:EE_|SJ2PR03MB7331:EE_
X-MS-Office365-Filtering-Correlation-Id: 8974cd4f-4b98-498f-1718-08dea21724b6
X-MS-Exchange-SenderADCheck: 1
X-MS-Exchange-AntiSpam-Relay: 0
X-Microsoft-Antispam:
	BCL:0;ARA:13230040|376014|366016|1800799024|18002099003|56012099003|22082099003;
X-Microsoft-Antispam-Message-Info:
	0cn0S5CUyH9hMqOHCkHNL81QgwcG7vun83Kmkbd4BmFuLN+SWsUQ06URLEJvmRW4/zeFG8M9VP/V21MdolRrvMYy9HsoKg7iKPP9Q9yeMcYy29UFbKOjZGAs2hsQYkq+ZaDQlNlu7NHLyc9KECrB3N+ZMKt0CBAi9SqCf7iTtF8ES3xaP9lZL5GBEyUeG6D57+hHE6K3qTVo4Ap2YkEi+Q0YI7pdLLuuuHa/ucS7anFxIL3qYDGTF+M8407ZRZkMiSw2Oe4NMa/i9mrsh1bPqJrHQJUHAaF+ott0Goz26Qa8GnFEq+35r7NgC1WHEXYdp8Lu9ugghiCCkkPGKC+ULzOo6E29/bhxYBnoPaDuQiEAPTNIAmuo+dJvs9WG5veDpHm2PLAPBOg9LTsKPqwTL5QEfMIzGX6PXgBEOvkkBc86kpUD2Umhv+G8CzIRKSV3ukoluXWphfbxtWyaaBBoOM/AT/3FUsVopwe+xng12oeXlDgc6EYVodbmvQC9GOeya9xJ2S7N5lcIgos5LUrsc3aN+aNZhh9pIs3NL2M21/CUgMQwJDWdg4Ha9eARKUzZF1ffcGTzpTWXm4ub4OjsxV7YBJPyM4e+1C6Jz+oFMRSnAsknxfDeMgNlyfCZanR9RZb65TYbHXFM0gImCX5DSXm7AC/0myD4F1kPFh5puVHXotrhFPVq4qwjXCZJ0zP/
X-Forefront-Antispam-Report:
	CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:CH7PR03MB7860.namprd03.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(376014)(366016)(1800799024)(18002099003)(56012099003)(22082099003);DIR:OUT;SFP:1101;
X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1
X-MS-Exchange-AntiSpam-MessageData-0:
	=?utf-8?B?ZHNJRE1CYmplb1YvaUtNWTdJUUJLY3MxM253Mk40SE0vcHBDR3hDckF0YmMy?=
 =?utf-8?B?MFdEL0JxSjYrVXdVSkQzdC9WSXdYTUtCNTdIUG5kUjA3UjBpSHJtZE9pdDkz?=
 =?utf-8?B?VnNJeDFuSzNnZWxNc2lDL21zV3V5NFhTYUdjdDM1b0RkK05ZMlN5YTR0OGtB?=
 =?utf-8?B?cXRUcFFTVWxheHM3Q3BkNFpSWGc3NTdvYUorZkdWVUhEWmRyVXpqK0VnSU1s?=
 =?utf-8?B?dlRza2dGZTR3RGJocFNITHlIQzhuZUhvZHpRTmV4QUoxNTl3UDhVeExYWHpI?=
 =?utf-8?B?aTE4ekxUbEIxdUNjcytzV2NPREo1RldGZzF5NldLeTlJb3hzZGpBd0RTcnlM?=
 =?utf-8?B?aVJ0bWdZelpjeUI4aEd3UnpqaGV5dmsveVhMOVBZcHR0UEZORXJqeDZTRjBI?=
 =?utf-8?B?aGpUWjJlWlA0R0RmbnFIODBDUEFZOThLR3pXZTRqZ1BaV1FsdHcwMDltZWdz?=
 =?utf-8?B?TjZrcjIwa3VScVh6YitFSTBvTi9oSTNIaU9OOXZCOWlOaTc5Yi95dGdET3JY?=
 =?utf-8?B?WVVSS3hIS3FEY2tWbldZZ1BqUlFaWStBZUpMWkFGQS9xUEtXVVJIK0cxS0lT?=
 =?utf-8?B?Z0dSeEhJVjdQdDQxaG1TUFBQa2ZhQU5BbGVKV3hqRUFvelE5by9vMFdFZHYx?=
 =?utf-8?B?aVpXVFBoWHR1dXdrZjUza254TVdWZWlJTUhmdWZEazlsWWpEa0dTOTdWZWRB?=
 =?utf-8?B?QlBPVmJFV3ZLUTNuM3FHdFpTVHNUOGVpRXZURHFpN0VMMUNBQnJMRC9OZlZh?=
 =?utf-8?B?YTJLTmhydW5hdmRGRGppMkxNRE9HNng1VGxvN0FMZUROVWxFMllwWjV6MldN?=
 =?utf-8?B?NFhleTlZM0NvSUZlbWFSNk0zSDBXK0dlTUN5cHlVZEJ4OXJWU3A4QWFGZkhp?=
 =?utf-8?B?bmhUNGFhVzkzaEZmYmNtbTBudVZDYUIvN2NRcGJZaWN1Z05ubzkxWkNuanZ3?=
 =?utf-8?B?b3Fzd1ppczhsQTNST0VQWDF2eWtHbGFQWlpuaGFxZUZiK09GM0x3VVRvTTRn?=
 =?utf-8?B?UXlpdURnZzB6cm1qV2Qwc3VtQ0lOMnlCYUxjb0J4MWVmMmhNeUwraldHZWlB?=
 =?utf-8?B?KzNaK3JzcThFTXJFWUlEQkhva2tIM0x0QWRVdGNSRkhBeTJGdUQzK2xpK1Bk?=
 =?utf-8?B?ekVmUDJLUEJ3LzVNNjM1VlRINEw5TGtyVThNR1dQRGRFK3VZWVBTcVNHRmRB?=
 =?utf-8?B?dDJvZnpIQmpIUlRJVGR0MFRCVEQvUlVJSDVoRlp6K0ZHdy8veE4zM3FIUmla?=
 =?utf-8?B?NXByR2JnVUdCdHlLWHBPTWFrNGdsTStHK1ZSR1lLUXZFdHNSNDJlQ093c1Qx?=
 =?utf-8?B?MkRFaXZiV2hEeTFIY1ZzRmR6OEh1cEFoaG92Rmc2aE1XelNSaXlCK3Y1aGZJ?=
 =?utf-8?B?cEg0TVIyRktNNUduU3RuTGw0VHQ1ZHQ1YzR6NXNsVmJlVUFMQXhscnphWkxE?=
 =?utf-8?B?MGxiUTdpUDRPeVoyazFLYmZUM3YxeHZpeFBDNmRHYUxkeDlBNEExaUYzVEMw?=
 =?utf-8?B?cFpETSt4NThaM1ZOV2FKSlduMzBHQU1vcjJEOHA4NXFwNG52M243TXJCdmlk?=
 =?utf-8?B?ZGxrR3oyUUd5WnE5U0RkdFNhdDA2YVl3MTBkSnJRMDhWSDRnTVJYNHZ2Rzdq?=
 =?utf-8?B?NXQ2bmxUTVBiOW5sMTNmYjEyL1gvenplUEthekVRekkvUTArUUdoT2ZwY1dY?=
 =?utf-8?B?bFVVaWdxMzRyNXdTYWw4NmYxaFYzbFVkQW1EZU01NXB6SEpGVFNjbmZ5VlNP?=
 =?utf-8?B?UENHblAvLzI0RDN4M1JkSTYyWUlFbjJpSFhpZFN4bksyTlBOWndHWGNrSlU1?=
 =?utf-8?B?YUlDV0VvQ0g4bVc2TDNyeUYxZVJmWG90WmQ3Vm1sSG5rODYxVzJwZjdqN3Ay?=
 =?utf-8?B?VWFLYkx4WFFYak92TmxLUUFYby84S1FRMkRRcXI5TFFwdm5EUUgwbG1BaWRq?=
 =?utf-8?B?anpWMVA3WWE4VlQ1S0FRMlhhTUx4SnRKQ09ZS3kwSWcySGZmNEQyanlnYjNw?=
 =?utf-8?B?UkxEeVFMK1U1TWdNdzdqT21qazVJOG1Bd3Y1YXBKYmxoVXRqMTkxK2wvdGh0?=
 =?utf-8?B?S0dRcVJpOW9ib0RhQTlwMjJDbTBnRkFkSHhRaG1IZTdLcHp4T05IUGEvQmMy?=
 =?utf-8?B?OHJIZkNZb0MrNHkzOUJMMGN3SzVnVExOcVlsRzNyeEJTZmVMRVNmN2FiYjRJ?=
 =?utf-8?B?Ui8xVGhCbjhLZmNiMmIyMmtnMkpuZitJZDJHbUp0bUJ0TGI2cTJaaXBKbjhL?=
 =?utf-8?B?VDlmcFNLaGx0V1puVUNWUkI3cWdvTXc4Q016MjgxOHEwSm9HQkQ5VkhNUHFo?=
 =?utf-8?B?cFVOSWlDSktsVTdRMm90RS9HalI2b1VQeFdxZnh4L29qTy9sNXZWUT09?=
X-OriginatorOrg: citrix.com
X-MS-Exchange-CrossTenant-Network-Message-Id: 8974cd4f-4b98-498f-1718-08dea21724b6
X-MS-Exchange-CrossTenant-AuthSource: CH7PR03MB7860.namprd03.prod.outlook.com
X-MS-Exchange-CrossTenant-AuthAs: Internal
X-MS-Exchange-CrossTenant-OriginalArrivalTime: 24 Apr 2026 15:35:42.0230
 (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: 1pUZyd2j2WQIbhc2ZcxIDWHVgOZkqX8cN7UeHvUQKMhhJXfJv/OXriJJ8yNa4nk4aQ8jFcdyqwGCygHVx//eJQ==
X-MS-Exchange-Transport-CrossTenantHeadersStamped: SJ2PR03MB7331
X-purgate-ID: tlsNG-c1860d/1777044947-3996DDB1-E1F0F6EE/0/0
X-purgate-type: clean
X-purgate-size: 958

On Thu, Mar 12, 2026 at 05:56:24PM +0100, Jan Beulich wrote:
> From: Artem Bityutskiy <artem.bityutskiy@linux.intel.com>
> 
> The MWAIT_IDLE_VERSION constant has not been updated since 2016 and serves
> no useful purpose. The driver version is implicitly defined by the
> hypervisor version, making this constant redundant.
> 
> Remove the constant to eliminate potential confusion about version
> tracking.
> 
> Signed-off-by: Artem Bityutskiy <artem.bityutskiy@linux.intel.com>
> Reviewed-by: Andy Shevchenko <andriy.shevchenko@intel.com>
> Link: https://patch.msgid.link/20251215111229.132705-1-dedekind1@gmail.com
> Signed-off-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
> Origin: git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git 25ff69011ddf
> 
> Adjust description to fit our code base.
> 
> Signed-off-by: Jan Beulich <jbeulich@suse.com>

Acked-by: Roger Pau Monné <roger.pau@citrix.com>

Thanks, Roger.


From xen-devel-bounces@lists.xenproject.org Fri Apr 24 15:37:14 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Fri, 24 Apr 2026 15:37:14 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1293767.1571284 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wGIae-0001t9-Do; Fri, 24 Apr 2026 15:37:12 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1293767.1571284; Fri, 24 Apr 2026 15:37: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 1wGIae-0001t2-9I; Fri, 24 Apr 2026 15:37:12 +0000
Received: by outflank-mailman (input) for mailman id 1293767;
 Fri, 24 Apr 2026 15:37:10 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <roger.pau@citrix.com>) id 1wGIac-0001ss-6D
 for xen-devel@lists.xenproject.org; Fri, 24 Apr 2026 15:37:10 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wGIaa-005LwC-1Q
 for xen-devel@lists.xenproject.org; Fri, 24 Apr 2026 17:37:09 +0200
Received: from [10.42.69.1] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <roger.pau@citrix.com>)
 id 69eb8e10-2eae-0a2a0a5409dd-0a2a4501b3aa-16
 for <xen-devel@lists.xenproject.org>; Fri, 24 Apr 2026 17:37:09 +0200
Received: from [52.101.201.61]
 (helo=PH7PR06CU001.outbound.protection.outlook.com)
 by tlsNG-d62444.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.1)
 (envelope-from <roger.pau@citrix.com>)
 id 69eb8e23-c1f2-0a2a45010019-3465c93db098-4
 for <xen-devel@lists.xenproject.org>; Fri, 24 Apr 2026 17:37:09 +0200
Received: from CH7PR03MB7860.namprd03.prod.outlook.com (2603:10b6:610:24e::14)
 by SJ0PR03MB6423.namprd03.prod.outlook.com (2603:10b6:a03:38d::21)
 with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9846.20; Fri, 24 Apr
 2026 15:37:05 +0000
Received: from CH7PR03MB7860.namprd03.prod.outlook.com
 ([fe80::f5ba:35df:1c9f:b343]) by CH7PR03MB7860.namprd03.prod.outlook.com
 ([fe80::f5ba:35df:1c9f:b343%4]) with mapi id 15.20.9846.021; Fri, 24 Apr 2026
 15:37: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=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=KCfYx9yyGkjif9se6rRlMtAi8nHnKHfmIzbK/uWlV2WBS8r7hqWTDficXHul+1wAVV2ew1NytIhUrDyFmtf52XOBex2isfzWPNnEwzNk/0TCvCphkSDhu8GPgi0dCDRRzXBbOOlte/URsavX1bCoAAJsFomzQe2xnKubpS6RpcJ5c7ca/v53ldojUCy9HFEKXtGVIHAU9nQpAr4+PiCCLd+CpVodKZmW0pz1Cp38/3HMTYeI56z3aDNmKQPLk/SP1nhJH6ZWSJ5NSf6aeTR7++MNxOTGCkJftwRGx49gw2j/YEoRgib66Nc4sKXGMmMcS8tiY1Pu0t4H+GIywLhRHg==
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com;
 s=arcselector10001;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1;
 bh=EldwU2NDoCOxfFJIeFGWaTwWmfHSg+9wmWF4Tcw4so8=;
 b=c90iIJhOh0wApIP5/cHP8YyHerxF2ySbQJHxEH89ITx2COkPyiQ1orES3/xoMql6kDtE5SKCfPfdazI8kcdrosHoz2iEOj3MZTT8iFf43kkAqqzewGCx32xW11VWopvNBW6B3/Za0mVA9Syn823T/M/Nvo1KAQ3ZNDDcCIyIcr4wckGyRzIt/wtwlvJiW6nSujnHBtrhHANaIQI94Xd9m0gyVD0FKQdZFI6jq9a9bmXZZbOoPBimZwRoCSdHfA27EdPIaVza3FfP2zDKHnynSWmqsNy3IGpRPS5OpGatPteBHmOVIQ22jDTF4xPXIH1ev8NmtuQrEw32XuVlA4ampg==
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=EldwU2NDoCOxfFJIeFGWaTwWmfHSg+9wmWF4Tcw4so8=;
 b=QFdrBXoaNbV6YjLc0WzRGnEp8FB3s+LyujPREmWmHwAfo4GR8yvtCkt+R8ChkCY9flzlN/PTI5rakBTnKfmM21EeNRsz/xQXCfwRcwiMG4lHS1ntoLWAZtt5NwRQtXbAAn370qbP30CtTZvRGnFy+V9Isu0Hg9vmeD/jQP5is44=
Authentication-Results: dkim=none (message not signed)
 header.d=none;dmarc=none action=none header.from=citrix.com;
Date: Fri, 24 Apr 2026 17:37:00 +0200
From: Roger Pau =?utf-8?B?TW9ubsOp?= <roger.pau@citrix.com>
To: Jan Beulich <jbeulich@suse.com>
Cc: "xen-devel@lists.xenproject.org" <xen-devel@lists.xenproject.org>,
	Andrew Cooper <andrew.cooper3@citrix.com>
Subject: Re: [PATCH 6/9] x86/mwait-idle: Remove the 'preferred_cstates'
 parameter
Message-ID: <aeuOHFDI0wkCUKxp@macbook.local>
References: <7b7a677e-a5b9-42c8-beec-3c506b4eac52@suse.com>
 <62702a0e-a43f-4a15-90c7-e5778bbefb4f@suse.com>
Content-Type: text/plain; charset=utf-8
Content-Disposition: inline
Content-Transfer-Encoding: 8bit
In-Reply-To: <62702a0e-a43f-4a15-90c7-e5778bbefb4f@suse.com>
X-ClientProxiedBy: MR1P264CA0109.FRAP264.PROD.OUTLOOK.COM
 (2603:10a6:501:50::20) To CH7PR03MB7860.namprd03.prod.outlook.com
 (2603:10b6:610:24e::14)
MIME-Version: 1.0
X-MS-PublicTrafficType: Email
X-MS-TrafficTypeDiagnostic: CH7PR03MB7860:EE_|SJ0PR03MB6423:EE_
X-MS-Office365-Filtering-Correlation-Id: 7e912fd9-0df2-42e5-5e59-08dea2175637
X-MS-Exchange-SenderADCheck: 1
X-MS-Exchange-AntiSpam-Relay: 0
X-Microsoft-Antispam:
	BCL:0;ARA:13230040|1800799024|376014|366016|18002099003|56012099003|22082099003;
X-Microsoft-Antispam-Message-Info:
	2lhn5nJzfewm22cSeII0URVefK/BB6p6597eStyoGYkmzISwEV//N4PCKUUrJGYcAsZcXZ487Yp4ETOjffcc3MffWGdF2iEufD3qQSjR6Cx07UqQVxJvmJ+ii6iezDlP3BFBzyzMg89IXocCAiqir+OCrDYpGDhNGc91W3U8pzPsz8L3vIHTCZwbSLXzMrKT8E3pKTroOybSeZc1jMv7CfPpM2AnkS/LnoxyzcVqCoBAY8l4Fa9GkjKOitbw8BeoBi4RJYlEMSBDAR7OJ9jZMTJOkdSxGyEwZAJsi3chBbm5E/b0PdtubE/nIWE1aX79bAICzSLnTOyZFZtJ2Ydp/o1K+q8l/XZ8cfNsYVWh4ZYbJbhJUyxAdKy/+kE9NO1LR4D+RFthVRF4/8xKsGplMO93cq2/AOsyK10ms76515UkALKLgeZ1VpLiJZPCzdQ5+oExfqC1F5dAUTLIIVCV5MFqoD5VpbCv2TRetyuDpGW5hqo756ZJ7jBGCmi5H5m6gvXXA+YcM8Bzz81/0z7MQsjgE6ejXq79yV9MaY36/4GSfxaK/54CaDqRcXFPVtrlCeReYINpfsGyBnUv8oWv2UZBs0YXzNrMcp3UOgCnrvywFThZgX7MgyskY+DqbOTSTA8pXZN3SfyazyBkHX7iln+PBVIhWVgFUXpXEF9bKH4eeStddpwoJqTr5YXubAy1
X-Forefront-Antispam-Report:
	CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:CH7PR03MB7860.namprd03.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(1800799024)(376014)(366016)(18002099003)(56012099003)(22082099003);DIR:OUT;SFP:1101;
X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1
X-MS-Exchange-AntiSpam-MessageData-0:
	=?utf-8?B?RUNXY1M1Qms0eVNTNm0vdXdHTFBrNmdySWFNaEZLQnNGYnA5ZjFaeG9LeGhp?=
 =?utf-8?B?UGNESk4wSGora3hRMGxtWlR2TnNjdUI1SU5kYkdLYzlyM28rSW5XNlJRRmxn?=
 =?utf-8?B?UlBVdWkwSkVQUVlIVzF6eERYWnU5T1RDeEQzeFVWL0hLcFM5VkxkYTZaRkdV?=
 =?utf-8?B?eFR1c3Jpa25wRWM4eXZndWNGYkR1RGFoSktZV0xqS3hpeUVWSnhSTXY5Tmdy?=
 =?utf-8?B?QWljdnJrR2pqS2lJV2tEOE9UbFhMZXdXNWhlUUdIeTZQeEdJZElQVlljSkh3?=
 =?utf-8?B?dnF3OEgwNU8vMVROcFdXVUxuWDEvalhMeWVyWDU5R3FuaVFYZ2xoQlRWZVBY?=
 =?utf-8?B?WXVpNXpVMmRUVHdWdDgyUXlrS3V4eElQM20zNnFiVlFsMTkxUFVMeHZ6b1dm?=
 =?utf-8?B?M2dkdkwyWSt2bUdrTXk0clJFTUFIUWxXMGxvTXA3ekxhdHhScUZMUFZrSlh2?=
 =?utf-8?B?aTRlVkRML1NkL2VYaG5xaHpTMXJuYXpSMis2cU43cS9JdHRGaXNYMGtRSHJL?=
 =?utf-8?B?dERtWENOajFRclZzcy9GT1Y1OHJIL0JDWEtDUEpidHlNQ3NKTDhyU0RwUFMx?=
 =?utf-8?B?b3BrRlhzdGFCK2NGVTE4bUdCd2pRcFZOc2VPbHpSdS9pV1NXaCtYT05FODh5?=
 =?utf-8?B?R3UzNHhwZW5sK2NMSzQ0d1grS0JqUVdveE5PdE5EZFByaE5QVU5VTThiZXNy?=
 =?utf-8?B?RE9ic3dlQ2lZODFhbGF0ODV3a0VkYzBqZEVmZmlzRGZNdWNwbnpYd3QwNHBW?=
 =?utf-8?B?aHNPWWorYzMvSjRCWUFhaW1ERS8vbHlITk1LN3FSYlp1dE1OUjV1NDRPQURh?=
 =?utf-8?B?U3d3U1Z2OGdaQjFBWmdDS3l4ZUJlZVZJLzlMV080SzN4VVpjY3lXeVNBLy9H?=
 =?utf-8?B?aE12clBwZVZrTCtpNFRNalJkL3hoUXdzL3V6NTF1a1lINXRjWDFaUHlPSnRH?=
 =?utf-8?B?djF1eFdsZng5eGVkenNqcjBYMHdWWkVST0p6azErMG1LcWx1RE45a3VhTUVz?=
 =?utf-8?B?UTkyWm8zYVlJYVBSNlJhdnpUbG8rdDBzTnJ5bjF5VCtlck1qMEtGV01JTEQw?=
 =?utf-8?B?QVVWQTVZWDlhQXhkTU93KzdXT2VVZitocXVyVjF5R05lNXl3eEFIV0pKcG1E?=
 =?utf-8?B?TjAvS2N3S25QZVE1cDhXeS9qNlo5S2VXNjk1aklLSmtVMVE5WUtJcVVpeWYv?=
 =?utf-8?B?OHM2ZnJuUFBJcHBJenRIMmlGeGRsb1Q0UCtUTW5JL1lTOEFZVHYrNlYwNHF2?=
 =?utf-8?B?YU9ibW9LbG00S2hPNXVidWdNOHcyMFNKUkN1NDg3bDd4SFRHWTRKQkZ1NDNp?=
 =?utf-8?B?L0NMVDJPTUN1Uk16bGtTQithSlZtVHh6aUJzWkxId3hpZVdqYlhqTkNmUEFC?=
 =?utf-8?B?S0hBMGZFd1RVd25TL2laOEd4MmQydTliNVcxNVMxZWZja2lmOEJhQjlLTUo1?=
 =?utf-8?B?WE9ubDJ0ZkgwRFB0bmw4QXVLTlgxMTJxSHVnbnJsWUh2bUR2TUpRSFZIc01M?=
 =?utf-8?B?OVBodnF1bFlPdFVhcTE5NklVUks4Um1ha3JUVzlOT2U0WVNnUENNZWF4VHQz?=
 =?utf-8?B?OFRFaUpBdEJCR1VRd2RwZGlKSEVabzR6RnNvRmlkNGFMUU83cEd6Y1NqMjZv?=
 =?utf-8?B?TFE3dVJERkhETXVmUHFlb2dZelptVlJwMmlCZ3B6WnFUczR0QklXSnVKdFhB?=
 =?utf-8?B?TENReW5wcW9ydXNpUTVsem1pcEVwQVdUK2dwWkNpOWZPdThCdGNpLzExL1VS?=
 =?utf-8?B?VnlFMEZLbFVldDNMQmhCaTRlZUR1QTVMRlNQWS9LVjVGZzVaQ0kvTlcxRGFG?=
 =?utf-8?B?MDU2cHVKVTBJa2VkZXplcTVGOW01cmFqLy9WWW9SRFRMTG9YWGZXY2djTzVQ?=
 =?utf-8?B?UkhtL3FhQlczTzNtWnZUSUdsNk8xQmE1cERuWWVjdWlRWWtveVBNUjdpOFZ2?=
 =?utf-8?B?VVd2STNDRE1Ub1R4UzVKenNubWR4dWxzTXdTQ1QzdDJVOHV5Q09IUTNUZThL?=
 =?utf-8?B?aGVvTlhWVkU0OHVScWcvREdBVWpjVjNxTGdLWnYxZEhldXV3UlQ1ZWNCazJy?=
 =?utf-8?B?WlFJb0d6WHpQUCs5dUg1dnFwUzJjWlN2dUpXTzhSYTVmeGFWOU5YRUxFRzlJ?=
 =?utf-8?B?cjhCV0E5SWllQ3IyWFBHR0pyYkRHNHZ5cEhxMm1VaTJZYlpid0FFbU52MTdN?=
 =?utf-8?B?NDVvQTBWVHJ1UjJRYW91aSs1WVpkcE82bFNNUU9hRmVBWEZNUmlCZjc2MVB5?=
 =?utf-8?B?NFZrMGZWN3o1cXZxRkdMR1Y5bmM4Njc5R1ZaOUhOVUxIaU01VXBNaklNQXRv?=
 =?utf-8?B?VndqbW1yT0VTTlFOVERCdEViL2gyOTBlQnRBSzg0REVPNjBvT3lMdz09?=
X-OriginatorOrg: citrix.com
X-MS-Exchange-CrossTenant-Network-Message-Id: 7e912fd9-0df2-42e5-5e59-08dea2175637
X-MS-Exchange-CrossTenant-AuthSource: CH7PR03MB7860.namprd03.prod.outlook.com
X-MS-Exchange-CrossTenant-AuthAs: Internal
X-MS-Exchange-CrossTenant-OriginalArrivalTime: 24 Apr 2026 15:37:04.9925
 (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: gSuVGMF3pTP8DcwExfLnMNwjeYjiAwQBHE8O26ETSEXfxwia6/PQOGK31HOgbvmqLMDZal+X1EIHXUHLp1Ur0Q==
X-MS-Exchange-Transport-CrossTenantHeadersStamped: SJ0PR03MB6423
X-purgate-ID: tlsNG-d62444/1777045029-B5468FF4-B0652B7F/0/0
X-purgate-type: clean
X-purgate-size: 1789

On Thu, Mar 12, 2026 at 05:56:55PM +0100, Jan Beulich wrote:
> From: Artem Bityutskiy <artem.bityutskiy@linux.intel.com>
> 
> Remove the 'preferred_cstates' module parameter as it is not really useful.
> 
> The parameter currently only affects Alder Lake, where it controls C1/C1E
> preference, with C1E being the default. The parameter does not support any
> other platform. For example, Meteor Lake has a similar C1/C1E limitation,
> but the parameter does not support Meteor Lake. This indicates that the
> parameter is not very useful.
> 
> Generally, independent C1 and C1E are important for server platforms where
> low latency is key. However, they are not as important for client platforms,
> like Alder Lake, where C1E providing better energy savings is generally
> preferred.
> 
> The parameter was originally introduced for Sapphire Rapids Xeon:
> da0e58c038e6 intel_idle: add 'preferred_cstates' module argument
> 
> Later it was added to Alder Lake:
> d1cf8bbfed1ed ("intel_idle: Add AlderLake support")
> 
> But it was removed from Sapphire Rapids when firmware fixed the C1/C1E
> limitation:
> 1548fac47a114 ("intel_idle: make SPR C1 and C1E be independent")
> 
> So Alder Lake is the only platform left where this parameter has any effect.
> Remove this parameter to simplify the driver and reduce maintenance burden.
> 
> Signed-off-by: Artem Bityutskiy <artem.bityutskiy@linux.intel.com>
> Link: https://patch.msgid.link/20251215111300.132803-1-dedekind1@gmail.com
> Signed-off-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
> Origin: git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git a36dc37b5672
> Signed-off-by: Jan Beulich <jbeulich@suse.com>

Acked-by: Roger Pau Monné <roger.pau@citrix.com>

Thanks, Roger.


From xen-devel-bounces@lists.xenproject.org Fri Apr 24 17:58:23 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Fri, 24 Apr 2026 17:58:23 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1293879.1571291 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wGKn2-0008N0-0K; Fri, 24 Apr 2026 17:58:08 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1293879.1571291; Fri, 24 Apr 2026 17: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 1wGKn1-0008Mt-Tx; Fri, 24 Apr 2026 17:58:07 +0000
Received: by outflank-mailman (input) for mailman id 1293879;
 Fri, 24 Apr 2026 17:58:06 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <roger.pau@citrix.com>) id 1wGKn0-0008Mn-4L
 for xen-devel@lists.xenproject.org; Fri, 24 Apr 2026 17:58:06 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wGKmy-001K0f-7q
 for xen-devel@lists.xenproject.org; Fri, 24 Apr 2026 19:58:04 +0200
Received: from [10.42.69.8] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <roger.pau@citrix.com>)
 id 69ebaf1a-2eae-0a2a0a5409dd-0a2a4508a574-14
 for <xen-devel@lists.xenproject.org>; Fri, 24 Apr 2026 19:58:04 +0200
Received: from [52.101.43.71]
 (helo=SJ2PR03CU001.outbound.protection.outlook.com)
 by tlsNG-c1860d.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.1)
 (envelope-from <roger.pau@citrix.com>)
 id 69ebaf2a-63b5-0a2a45080019-34652b4737f8-3
 for <xen-devel@lists.xenproject.org>; Fri, 24 Apr 2026 19:58:03 +0200
Received: from CH7PR03MB7860.namprd03.prod.outlook.com (2603:10b6:610:24e::14)
 by LV9PR03MB8365.namprd03.prod.outlook.com (2603:10b6:408:368::6)
 with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9846.22; Fri, 24 Apr
 2026 17:57:59 +0000
Received: from CH7PR03MB7860.namprd03.prod.outlook.com
 ([fe80::f5ba:35df:1c9f:b343]) by CH7PR03MB7860.namprd03.prod.outlook.com
 ([fe80::f5ba:35df:1c9f:b343%4]) with mapi id 15.20.9846.021; Fri, 24 Apr 2026
 17:57: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=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=hjWntA7rXfkbIK0NyrVM5s2KM1yaYOcuizPSrr0g6ZBAhPBbDCCzQfghcKVPMyqWKe0+wqrrEjDL/nYBRyYYYhIEa6492jaxjY6Mpgt2QrncIV8ezhjQvuNSKFx3jnH5Ty/qAISJY7o5HWZY92vFAk8PSCEngHhPzo/VDAsYiWG4f5JQLw9Lc5IIFeyvmt9dceuGqVwrDHDM9VRoMIDCmO/sewhLCTI9wBF6CNYYSGVje7RucQUd/Fxx50glZ4RlKl5AXaH4uBx6ewTeYZg/vSphDoxxzl0J98QRDuCh68LgeAjYVBym4A6w67iQjs+ZRGDlee7JDR7wPf0p43Kzqw==
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com;
 s=arcselector10001;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1;
 bh=TFayKm8Vk04dKCwrgehM7YqZU9NlVGet3/nd6EQL1ls=;
 b=mPwD9qdReaUKlwIJw0duwu7Rrfvhw4zHG8Rn2vFdxxhY046/q9K6FTv+j/yFsF/XRSKSA5j5qN1Ke9NBcc7n8Aktyp1j66RFbaxX5/B4ZqQHiWvO0UwIpuAAja2dnEx1zNM+XJBfb+ZFCDDaUcqSciwTQ5GAZEt4KFwbGY2asFB2+krGxZGzPSSqfIIWRfC7LFKTNNgHlyEUwRUPXzwFYdG20VfKf7BYjwLUodaj3BDMwJt0sHJ9haxwaMULR8JhAYd+I+8xCR3L7eblPivwEYeye6/L+ADmcsJtV7vtnHMtKWy9JixoMoRnyEPOWuDAUhcXfnXdQSeH8A+xdzfbKw==
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=TFayKm8Vk04dKCwrgehM7YqZU9NlVGet3/nd6EQL1ls=;
 b=DL3YZn9LYez9VAldJ7iwuiGdko5Hy/YoQ9Inp5w/8p6m0i1eTYvjF6xqEUvgcAo1EQfvf/PMDDe2yqw9etGFVri6VYHsxI4X2nk4mkRlnVnD1IsIRwYXWT+jqW2vCHFymCTVCxv9WIgmcVVp++OU5vjLpjoXdLNd+O72pqD2BvI=
Authentication-Results: dkim=none (message not signed)
 header.d=none;dmarc=none action=none header.from=citrix.com;
Date: Fri, 24 Apr 2026 19:57:55 +0200
From: Roger Pau =?utf-8?B?TW9ubsOp?= <roger.pau@citrix.com>
To: Jan Beulich <jbeulich@suse.com>
Cc: "xen-devel@lists.xenproject.org" <xen-devel@lists.xenproject.org>,
	Andrew Cooper <andrew.cooper3@citrix.com>
Subject: Re: [PATCH 7/9] x86/mwait-idle: drop const from struct cpuidle_state
 arrays
Message-ID: <aeuvI_ojCxA9BR36@macbook.local>
References: <7b7a677e-a5b9-42c8-beec-3c506b4eac52@suse.com>
 <5516d0a1-8fac-48ff-bbe1-85726b730e94@suse.com>
Content-Type: text/plain; charset=utf-8
Content-Disposition: inline
Content-Transfer-Encoding: 8bit
In-Reply-To: <5516d0a1-8fac-48ff-bbe1-85726b730e94@suse.com>
X-ClientProxiedBy: MR1P264CA0011.FRAP264.PROD.OUTLOOK.COM
 (2603:10a6:501:2e::16) To CH7PR03MB7860.namprd03.prod.outlook.com
 (2603:10b6:610:24e::14)
MIME-Version: 1.0
X-MS-PublicTrafficType: Email
X-MS-TrafficTypeDiagnostic: CH7PR03MB7860:EE_|LV9PR03MB8365:EE_
X-MS-Office365-Filtering-Correlation-Id: 2424725a-4f69-4024-e91e-08dea22b051f
X-MS-Exchange-SenderADCheck: 1
X-MS-Exchange-AntiSpam-Relay: 0
X-Microsoft-Antispam:
	BCL:0;ARA:13230040|366016|376014|1800799024|56012099003|22082099003|18002099003;
X-Microsoft-Antispam-Message-Info:
	zaQi66kR3g46C0+7jjf27wI+hRdhAraU3eliQzpB4iKHpVvIJXFqickUpZ6gHMMH2r4AIR623fdGF0ntRzbg8iqgTz59xmMX7+8wWlwxrGeV/gJZr55B8XT8eqhV/LAfkV9cBdpr3EjZp8Mel8OxE51JpEsFqymmNihQ5tth8PVIFOwkQzIqPnZDrLeI/Rik7uUmBIVt78nvCURb7wfm1awvF3ogAsh9MJW79j9SDSPv/8BtWAK7VuqzDZO31qYPuhBIMZ/iDPpq1i6krLQexM3aFrdmTwlggEaBEekGZI/DqOYtPXwPqhP790l5yEFy4Z4xQlvCh0mkWAn7QYyR/6pEVrTGlt6KTZlhWEVmKZELQsuZo9J148yE4svoRlP3C0oczJTU451dK/u+FgBK/kaBmB4CBUrQtjYR/Kxny/MhH4zayz6ULqDYEn9EHhD1W/qUlnr9jzyz4xCS+J13IOaxGUQnhg0YBDPhYST2jhsPuWHp9RKEzPphNFFI+xdt4QDX+cniZamUw+JvY1PM6EEfJP1llYuDBkLcztvJDNf8rDxPgAxrkuF9zkW0mytb+9mm9tXoTpsyEPnDripcjoxU3LlsicTITtPgWZ4gCe0CqccAq3HGzDg09+JCnF82MHJhaj5WPWT4i7Qfq8+Ih0+Ut/u9yqsEpwDLL6qiiNqvaoCMiwS3nG1IKeB4q6V5IMwNlx9a8r6A2GvZYJu6axUTQT9Mp9KldGuXzUxEkto=
X-Forefront-Antispam-Report:
	CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:CH7PR03MB7860.namprd03.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(366016)(376014)(1800799024)(56012099003)(22082099003)(18002099003);DIR:OUT;SFP:1101;
X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1
X-MS-Exchange-AntiSpam-MessageData-0:
	=?utf-8?B?YlRXd3Z0SXY0U3ExeU4xTmFhbnVGd2pscjc2emRGdTBURnpMZXZzNG94cnd4?=
 =?utf-8?B?UEhuNUVQSCt2UEhvYnpBZmFic2Q4cTF4ay9WcnRRd2ZJdWNhQVhrS0xHbUx2?=
 =?utf-8?B?UW1xOXJMQzZxTGNBdFNuK09VSEJnT3V3d2lYRHRFcU50SlJoVzNZUFlvRXVQ?=
 =?utf-8?B?d3B3bEhsV1JWQkwzWStDaUVqOXE5b2Q0Q1pYakc2TW5relkvUWx1enNiSDRj?=
 =?utf-8?B?a052M3hEMTQvd2xyeUlRUnplSDV0N01pRlFGa2lOMW4zc3hMM3JQRnlReTJW?=
 =?utf-8?B?ZnRVR2U5ZUk3UXVRS0NHYTRXRHMzY2NLOE1YMnJZdHhUVm1MMjVKYWpkbzl4?=
 =?utf-8?B?M3NHNjB1b0xNNEkvYkk2aGpIV0RIN3l4Y20wa1ZJWWg5MGJFWXBhNW1SNGp6?=
 =?utf-8?B?b1lYNkM1NXF2SkF1cGJOT3RkamxINVorRTZFNEZOWmd2SE9mV0RVcEJ3NThx?=
 =?utf-8?B?ZWo1WjdBNWljSXFrR29JU2QycGRheEY1b0pEVmxZRXNZSVlzYngvcGo4MmMw?=
 =?utf-8?B?YzJBQmZLOG5IeVJOSmVhT2FRNjR1cnRVdGtMMnhxeXU2V29va294UUt0OXNp?=
 =?utf-8?B?QzJUVXlpNlFwVGFXM1pKRUJzL051ZmNPTktpTis5aG1WQXJRek9wd1l3SEpz?=
 =?utf-8?B?YU5vejFGMWtrUXlLY0dpZThvS25xWEFNQkpjRjhGdWxUWXBscTA3RytiNWUz?=
 =?utf-8?B?Vk9zUk12T3N4dVdyVm1xSnZSVWp0QTZpNXRxZlYxRlJjUk9DVzhLaFk3L1JB?=
 =?utf-8?B?Y0IwZkFsdFU2UHlHMEgxQ1hVajdCNjNLMWhyZStueE9rWmZ6MmJSa3R0TnVU?=
 =?utf-8?B?S0JVWVNXeDh3aDRnNFc3T1pYRUNnNGZiTS9xUUxJZy9rVzNORUt5bElrYVJQ?=
 =?utf-8?B?dWhWUldIZzUzcFgyTkNoUzFBNXJ0UFZDcFNpN3kxalN4QWplRmZmUVl0S0gx?=
 =?utf-8?B?YXFTcTdPZ09PZm01cFZyblROVDdCemRkSDc1bUk3RzNoeVI3V2I3RDZwN3Jr?=
 =?utf-8?B?czlTNUVMUmRndnhQREN4aDZrekZiMEJDQnR6cnEvZ2h6M2UrUjJLU1NHUTYr?=
 =?utf-8?B?dUhuTHFsTGVIRXJ6RW1scmsxbncyTFdLN29WeHJtNXhwUyt2d0R3S2pNS2VV?=
 =?utf-8?B?Y01xVVRQbXN6TnZhKzdOcnJ3TU9kRWw4VWNLZmg4Z0JIclVHb045dzZwL0wy?=
 =?utf-8?B?S1NiTlpsY3NHdjYzT2lpcWdEYlM4Z3FlQ21wSzBRTzU4UEt0dXY5V04ra1lv?=
 =?utf-8?B?MEl5K0p0K2ZXYlJwUUxtWkFwKythMHU3bFhsTXBwOWx2M283by9JdlhnOHNt?=
 =?utf-8?B?N3kxL3Y1eWRhUUI1SGFacWYrNTBaKzlpWDFKeGlCVjRyWGJlSVlKSTFHa1M0?=
 =?utf-8?B?Z3JOeEhpaDBmS3dEQnNDbkcwUnRwTEFNSGtjeXBqT3lOdWRSTmQ5UkxWZ3A0?=
 =?utf-8?B?Z09CV2FaUVZLNC81UndHY1k1Tzl6eUFsSXZmNTNVTDRvdlhWeWNBaCt3S3JS?=
 =?utf-8?B?S3NGS1FtY0YzMlM4WllrUUZlaVowZUFuMHhxMDMrc0pNc205V1VlamdIZ1dJ?=
 =?utf-8?B?WnBVSGFkNldmY2E0RkJpT0F0bS90SSt6Z1NLZmJSUy96anArck9LWDdTd25C?=
 =?utf-8?B?SlRuUkNNYUgxT2dYaHNlTFZaakxFeWxzVTNsTHVwUnZFRWN5N21DZi82cFBO?=
 =?utf-8?B?YW9ZYTRmZWlKUXIzKzcyU2FFcmUwcjZjL0wyYzY0akNVNmsyQlV2OFRXWE13?=
 =?utf-8?B?RnVyYXN2OXhYSzNTN2Q5Z2lFUUVFVGZWMWFET0tKR3o5MXlENVlrUkZWaGNS?=
 =?utf-8?B?U2d1Y1lFRitXZ2w1UFFWSGQyWnZ4dVo5T3hld3htVnp2amNGaDR6K3BiWExH?=
 =?utf-8?B?MWVUOVFZdEx1RWYxdzc3VFZFc3prN2t6RHNzS2w5YUVMS1laekF6Wlk3a01k?=
 =?utf-8?B?SjZmTHJYR1VqVXNBaXdSeVdyQnB4SzR3MEVFYTB2eGdBbTQ0cnE3YlhiN0tZ?=
 =?utf-8?B?dEQ4dFp1QmltWjFTU3l2RjN2KzBtQU5YMHhpdG1zTTdndzE1elh6WVRPbjdF?=
 =?utf-8?B?dHRFVnBBc1pkbU9zSzZVUG02Nzh1R2w2MTM5ajdocEg2amU1QTVKQ3JmVVRE?=
 =?utf-8?B?RjJIS2o0ZDVSRmxYRXQybzhNWnErK2VLZnhJdCsvR0hpeGpyeXZTUk81M0NC?=
 =?utf-8?B?TEhuM0t2ZitQVWp5Z3AvaVFIbk41S04xM2N2cDdQR014V0FWWmszNWx2ZzNk?=
 =?utf-8?B?VEY3VkV2VHN0TndzNU14QzJ4QUUrSTJwWm9VTUZsZUJZVDJjNkUydTFHQlRj?=
 =?utf-8?B?S0hYSm42SEgwc0l6cjdUSnZQVWRtZkxGclJvZFRjbkJNWUVEVU43QT09?=
X-OriginatorOrg: citrix.com
X-MS-Exchange-CrossTenant-Network-Message-Id: 2424725a-4f69-4024-e91e-08dea22b051f
X-MS-Exchange-CrossTenant-AuthSource: CH7PR03MB7860.namprd03.prod.outlook.com
X-MS-Exchange-CrossTenant-AuthAs: Internal
X-MS-Exchange-CrossTenant-OriginalArrivalTime: 24 Apr 2026 17:57:58.7773
 (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: Z9/39yH/hsTCQQdtoGv2ElszQ5/x51HVlLNvwEgHIKC512l1C+/1IiMhOFIdzIQG5asK3e+t3GC+bw//1SHS1A==
X-MS-Exchange-Transport-CrossTenantHeadersStamped: LV9PR03MB8365
X-purgate-ID: tlsNG-c1860d/1777053484-C1D6BDB1-2498B14F/0/0
X-purgate-type: clean
X-purgate-size: 483

On Thu, Mar 12, 2026 at 05:57:18PM +0100, Jan Beulich wrote:
> A subsequent change will want to be able to alter them based on a new
> command line option. (Note that some were __ro_after_init already.)
> 
> Signed-off-by: Jan Beulich <jbeulich@suse.com>

I wonder if we could also move all the cstate tables to .init section,
as after boot we would only use one of those.  Anyway, for the change
here:

Acked-by: Roger Pau Monné <roger.pau@citrix.com>

Thanks, Roger.


From xen-devel-bounces@lists.xenproject.org Fri Apr 24 19:11:01 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Fri, 24 Apr 2026 19:11:01 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1293935.1571301 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wGLvK-0003uK-6D; Fri, 24 Apr 2026 19:10:46 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1293935.1571301; Fri, 24 Apr 2026 19:10: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 1wGLvK-0003uD-36; Fri, 24 Apr 2026 19:10:46 +0000
Received: by outflank-mailman (input) for mailman id 1293935;
 Fri, 24 Apr 2026 19:10:45 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <roger.pau@citrix.com>) id 1wGLvI-0003u7-J4
 for xen-devel@lists.xenproject.org; Fri, 24 Apr 2026 19:10:44 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wGLvH-008TAe-Tx
 for xen-devel@lists.xenproject.org; Fri, 24 Apr 2026 21:10:44 +0200
Received: from [10.42.69.10] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <roger.pau@citrix.com>)
 id 69ebbfea-bab6-0a2a0a5309dd-0a2a450aa670-48
 for <xen-devel@lists.xenproject.org>; Fri, 24 Apr 2026 21:10:43 +0200
Received: from [40.107.209.26]
 (helo=PH8PR06CU001.outbound.protection.outlook.com)
 by tlsNG-4011c0.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.1)
 (envelope-from <roger.pau@citrix.com>)
 id 69ebc032-56b3-0a2a450a0019-286bd11a48d1-3
 for <xen-devel@lists.xenproject.org>; Fri, 24 Apr 2026 21:10:43 +0200
Received: from CH7PR03MB7860.namprd03.prod.outlook.com (2603:10b6:610:24e::14)
 by PH0PR03MB6398.namprd03.prod.outlook.com (2603:10b6:510:a8::11)
 with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9846.22; Fri, 24 Apr
 2026 19:10:40 +0000
Received: from CH7PR03MB7860.namprd03.prod.outlook.com
 ([fe80::f5ba:35df:1c9f:b343]) by CH7PR03MB7860.namprd03.prod.outlook.com
 ([fe80::f5ba:35df:1c9f:b343%4]) with mapi id 15.20.9846.021; Fri, 24 Apr 2026
 19:10: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=Ci35T+UdhwI9TL/2W+iEKAbBPKSZYmrbuytTnyOVP0tqjeNYc6ADy6UMe00N5xsESm4sTPRKBjrsqnHFu2A6TPHaBUbPw7hEo3CXJy7FskrK9KmFOIeLUXiTwsDK37ccrzedD8kAefWxt4JCp9vJJMYupFMZeDv22SvwKnmj66RIrn1+MSJS/bWeB24CnodzEtkRy9TKzB4Hd6MkjABFZaMQf2hL9UrzkdFGL5Nnju4ZhFTYmzST0NN652NPDoY4JBc7Zeb+xoNur9atOgCn7DX+TO3IKPJE2KLK6hDPJ+REUHOyVnJMop7xW1cjE7BtJ0kUTnz6AIz7uetzBrmsuw==
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com;
 s=arcselector10001;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1;
 bh=bf/2186CT9cFTU175djuOybmZ7gyNCUYkuHbNec9JrE=;
 b=b2pKhRoVfQetl8qOl42UIM0dtQHreFWQ9lzOR8qbycsvyIw1gUkxijbkGn4JR4TbAdMXyNaY7ND9PY/MikzTAqXaq4Tk/3uqO2h95NyeQvwNqyJYeWfTN3vvIqTuhF6w8NJ9x5idkAm8wISftTdX/eNsyETuW4mb7hDZGqcTg4toVx/1NfrmGrOi5CSvWKiYE6K+DlOSJQebkfGmvS76FUNtTBujkcEar2uzQT3Ps2e/pL7W1njCo/Nu9Gbi2CD4A1O12ean2dWQxJnhB2kLmoQ4y9UM70/PTmb7ktyeQyF81oLkhxldo/lzVzGBabDj/zg8u1sAIg0/hWRCLy3Hsg==
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=bf/2186CT9cFTU175djuOybmZ7gyNCUYkuHbNec9JrE=;
 b=zp71OEuLg1eCO08ODqHlk/QnKbRzrE8XibmsC/ag7XYLS/l1+aptqiq/1BhEyWNdAsKls9/353/9ZBypn1FU363WEIrB7J0xaZSbT3p5m9zQrvwD6Tu4oMJRt9MNilS75j4m5Zx3PmPqe39qWwdaRvmufwCdRimZpDx8nuP8g40=
Authentication-Results: dkim=none (message not signed)
 header.d=none;dmarc=none action=none header.from=citrix.com;
Date: Fri, 24 Apr 2026 21:10:36 +0200
From: Roger Pau =?utf-8?B?TW9ubsOp?= <roger.pau@citrix.com>
To: Jan Beulich <jbeulich@suse.com>
Cc: "xen-devel@lists.xenproject.org" <xen-devel@lists.xenproject.org>,
	Andrew Cooper <andrew.cooper3@citrix.com>
Subject: Re: [PATCH 8/9] x86/mwait-idle: Add cmdline option to adjust
 C-states table
Message-ID: <aevALCPvNRlRf91N@macbook.local>
References: <7b7a677e-a5b9-42c8-beec-3c506b4eac52@suse.com>
 <addfdc9f-7f03-4b84-b998-1fdbef2edc78@suse.com>
Content-Type: text/plain; charset=utf-8
Content-Disposition: inline
In-Reply-To: <addfdc9f-7f03-4b84-b998-1fdbef2edc78@suse.com>
X-ClientProxiedBy: MA3P292CA0033.ESPP292.PROD.OUTLOOK.COM
 (2603:10a6:250:46::11) To CH7PR03MB7860.namprd03.prod.outlook.com
 (2603:10b6:610:24e::14)
MIME-Version: 1.0
X-MS-PublicTrafficType: Email
X-MS-TrafficTypeDiagnostic: CH7PR03MB7860:EE_|PH0PR03MB6398:EE_
X-MS-Office365-Filtering-Correlation-Id: f4c7752b-9770-4872-724b-08dea2352c78
X-MS-Exchange-SenderADCheck: 1
X-MS-Exchange-AntiSpam-Relay: 0
X-Microsoft-Antispam:
	BCL:0;ARA:13230040|366016|376014|1800799024|56012099003|22082099003|18002099003;
X-Microsoft-Antispam-Message-Info:
	sAujNAkNJ8k5GDbEp8kglGDXTEzjPTf48+8OEz/74BCIkoZwYmGeoWJZpLGtVK4W3hes46w+B6NZwmkKvxDaaIkjRgnAQ6AgAReIt0IwfuMYMxxvB4mpEwLZEPB2hXZjhRfX9zs0xzyuDPi8zP1L404bcAH2Boag6Q1bETq8ZGfTR9L9VtAK/oh7+rgP0bzGD0sNYVxB7kY9zswhWMm2R6rE1yabf3YblCVlRfr/k5Gx0uuy4uOghHyA3tSjEmeW85YSe3LGcqfm4EGBazx2AlDZbGSkp4HF/ZPPhpD0rXgoFz2oqHul/hWtf1QiilPfNQ1AdOc+IL5lAkJrhmKPWHelg/O2bqEoGXlRC4F+enaJJH75jz/ORm9dyY9HX1hWHU+Ch/ZXqbr78SrR9w6oBJrPiHjrixSmRH4XDPZyz0pcLC0kQya9uRAZK6FVZuVAJhGrvzuoRqWljVfR7Vuvf+m6L7Uzwz/v1wVRU+qkMn2JxZtfeumvGj1E5n1EbK7wv7oWL2FoouZWr+2kaj0eA20kGxHjH2Km0vsr/6Z8DRIHLa/IBFro1YhZwFW2uCLRhN50PS8czSaYLeUZAucIAe0X2iqvo/WfGLamg/bBjbCDC8VfDW2YsjXBDa7YINLnzCE9Wux0hYB98EElSCa8ELjFpewLZPrUcKZjJDZqHY9LON39oj4ETtI5dQSODKp3
X-Forefront-Antispam-Report:
	CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:CH7PR03MB7860.namprd03.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(366016)(376014)(1800799024)(56012099003)(22082099003)(18002099003);DIR:OUT;SFP:1101;
X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1
X-MS-Exchange-AntiSpam-MessageData-0:
	=?utf-8?B?cmFPV0ZTaGNlemJ4NzZHeUdmQUUxSGorbXEzN2JEb09TNXJDa2lYcThjbHFM?=
 =?utf-8?B?c05QcUN0M2xBUmE4VTFRTURkMkZwUjYreVA0WFBzaHRHekdJREcxd1hjM0NS?=
 =?utf-8?B?N01QVmFBZDVDSGtQUDY3Wmx0NTN1YUR2emJZWVlDQm1kaXVHKzVGUDZsZHEr?=
 =?utf-8?B?MXRhVjZPR0I2QnBUclhjdzhzcGh3c3prd3VrUlY1OUUzNkp1MUlrL0NPOWlS?=
 =?utf-8?B?TWV0OXMyb2NwUmg2Y1dUSGVTRGlhMUtUN2JjT2JkemZKUXlJYmVxVlJXemsx?=
 =?utf-8?B?UE14UkxDVkk1SVIvdndCU0E0dzF0R3hTK0dBdzQyeWZDKzVqaUFxUmtuUTA1?=
 =?utf-8?B?NlI3VzhGelBWaEVwaDk3SndtTmd5UTBGZVFibjVuTWN0KzVxdUJUU2FueUwy?=
 =?utf-8?B?eGE3Slg5WFV4eWZ1WHBsOUc5VUVHaDBRWVVOaFN3QVZWUkpKRHNrQmh3MjZu?=
 =?utf-8?B?UWhlakxDY1V4SkdiTFJ2SVRmcUFjckhWZis1Q1RZamRkWU5mNGZqdEhrTEln?=
 =?utf-8?B?L3gzTWlHSVg0Zjd5L0RHY0xjdTV4aUFiOXpOdnRvakZRUjVvVm1BL29tUXc3?=
 =?utf-8?B?TkVoN0cyU2oxais0Q1RKQm4rZyt0L0Rtd3MzVXhQWHB6cG03ZWd6bnZ4ZlNQ?=
 =?utf-8?B?ZGZFZ0Erdmg5Uk9EQnNBdHJMYmtYT3IzRk9Dd3NxbzJkWFB5MFVKT0grUzNK?=
 =?utf-8?B?UEtqZGJqa3FmMk41dHpsYnJCOTdDQnR0VytGdFpxRXkwQ0lWVTNpZWg4Nys0?=
 =?utf-8?B?ZXpmU282Q1VTVFlPMjdKLzd3Q1RpVDVTWlhNRkZ2NUtqY2s0bVo4N0lwNnNJ?=
 =?utf-8?B?RHdySnA4WHcwYmgxTStMeElTSS8yaVJya3FGR29udmZhcURjQ0pPa1dhV3o2?=
 =?utf-8?B?d200bEw2KzhEQWo0cDFFZWtTTTJZTC9QdzlkbDR5QVFleVNxbmE2ekFWb0VE?=
 =?utf-8?B?SEZTSmh1c3NLTTk4cEVOanhQWWc5WmY3SGpJL3E1L1hSMVZRMUdwVE5lYlhF?=
 =?utf-8?B?TU1wNDZSdHY3bXFkcjk1VkJ1VjlRcHcxMDhhbk1DL25YbmZOYXFBTWdyZk9E?=
 =?utf-8?B?SnZkM1ViRDFkV00wZStCbkRWSzhYN1hqZXZreWtPd2hwcmpWN2xhR24weTFq?=
 =?utf-8?B?bHBMRGRtaVltSGRJVGFaWTB0VDdvU3VFQ21tZEdQYTJ0dFNPSlBOWE5XVGdM?=
 =?utf-8?B?R1IyczVMUzV3c1lhU2ZjRFBNQVE2UlZFR3pZNmEvdFR5L3padTNrZmUxSkYy?=
 =?utf-8?B?U2tISXYrell6MTJQYm9BSHhkYmdUdVZaSUhtNlc3UmpHN2VtM2FoMStnRGdH?=
 =?utf-8?B?Q0E0RWt6dkpNN21NS0dodGhyV0phOHlQZklHaURNK1JlcnY1QXVUTFNKbEsx?=
 =?utf-8?B?N3NxVzU5ZkkzRXFWMU9jeFJwSSt4bE1ZMWNHeXhuaVZTZ1hpckFBTy9pNmt1?=
 =?utf-8?B?VnRkQS9YYmtjR2Y4RS80bEJHSnVUaTBwdWc5YjFCc3c1YjFuZDNvYlc2S3hN?=
 =?utf-8?B?ZHVqWW1GNTBPRGRZa29kMkRjbkhxUTlPOFpSSnJTRklaRnNTYzZVZ2wyLzF0?=
 =?utf-8?B?c2puL3BCaFhJc3NYck5rcjNKZFFqV2FnWjlQSU5MeitxRkdMdnI5ZEQ1RXlW?=
 =?utf-8?B?QjZ5eHFIck9STkZtNjV2eWsvUlFQNDBxOXJUZThOclNFTXdGbnpuVUNuLzlT?=
 =?utf-8?B?TnprMk5QSjRwWXBVamJLMExhQWlTNXVhZmFrOEtHL2ZUN01acUpWclZqVWdo?=
 =?utf-8?B?YlF3bnh1eVcvR2hiRVdWcFpPZnNXaGZQdk9uOEVoakw3SjhCSDY1OGNlSmht?=
 =?utf-8?B?VUoyeVIwa0hkbjRFZmlGRCtwbDFBcG1yR0pEbkRCUThkc3RGZCtGRGNqemdl?=
 =?utf-8?B?QVhnMWFMR0VBTnpCY0VodE5ySVNyN0dOVUpBdC9KeGRaNFlZZk1VbUJISnRy?=
 =?utf-8?B?RzJvTWpjZGc3NDd0VFRlcUFMM3pXNHNoV2hsMWQzeS9Hdzc0dFA3YmRlL05i?=
 =?utf-8?B?MzhyQjNTV1ZMdUEyTDBBSFBpdG1oWEF0NlIvUTI3emF3cEtVQUxWY1k2aHJ6?=
 =?utf-8?B?RUtrTHFPN1NVMkMwTjJUZDA4ZUVyK3NsMk1qd3hQM0s5Nmh1YVI5L2lMaHI5?=
 =?utf-8?B?SVVienNMVnlLYkNYQ2o0eWpMK1BObEJvU1ptVVNxNHQ5KzZwMWhkaUlaMUJE?=
 =?utf-8?B?T3VNczNsNHhTZUUzQXl6eHhWemFhS1ZYN3I4OXZhZFBkSExBZkhPdUFmZm5w?=
 =?utf-8?B?T3Z3YWQ2TnBVeGdqM2hodjlHKzh2L1loRmNBQS9xYXdXMlBzRnFzbDhUaFg0?=
 =?utf-8?B?d1dZTjZGelJNalI2RGFXU0hZZ0FWb0hYNk1TNGVLQnRsalB2MVBBdz09?=
X-OriginatorOrg: citrix.com
X-MS-Exchange-CrossTenant-Network-Message-Id: f4c7752b-9770-4872-724b-08dea2352c78
X-MS-Exchange-CrossTenant-AuthSource: CH7PR03MB7860.namprd03.prod.outlook.com
X-MS-Exchange-CrossTenant-AuthAs: Internal
X-MS-Exchange-CrossTenant-OriginalArrivalTime: 24 Apr 2026 19:10:39.8389
 (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: 2LgJBipN5LBcZEQhcF2zCpT9AbfcKBI2tz04J6HLHUes3NdfJpcNRlE0gzpMlAxb4K4va9QlkNxNj3O6PGIDQA==
X-MS-Exchange-Transport-CrossTenantHeadersStamped: PH0PR03MB6398
X-purgate-ID: tlsNG-4011c0/1777057843-465748B7-2E38CB78/0/0
X-purgate-type: clean
X-purgate-size: 9261

On Thu, Mar 12, 2026 at 05:57:53PM +0100, Jan Beulich wrote:
> From: Artem Bityutskiy <artem.bityutskiy@linux.intel.com>
> 
> Add a new module parameter that allows adjusting the C-states table used by
> the driver.
> 
> Currently, the C-states table is hardcoded in the driver based on the CPU
> model. The goal is to have good enough defaults for most users.
> 
> However, C-state characteristics, such as exit latency and residency, can
> vary between different variants of the same CPU model and BIOS settings.
> Moreover, different platform usage models and user preferences may benefit
> from different C-state target_residency values.
> 
> Provide a way for users to adjust the C-states table via a module parameter
> "table". The general format is:
> "state1:latency1:target_residency1,state2:latency2:target_residency2,..."
> 
> In other words, represent each C-state by its name, exit latency (in
> microseconds), and target residency (in microseconds), separated by colons.
> Separate multiple C-states by commas.
> 
> For example, suppose a CPU has 3 C-states with the following
> characteristics:
>   C1:  exit_latency=1, target_residency=2
>   C1E: exit_latency=10, target_residency=10
>   C6:  exit_latency=100, target_residency=500
> 
> Users can specify a custom C-states table as follows:
> 
> 1. intel_idle.table="C1:2:2,C1E:5:20,C6:150:600"
>    Result: C1:  exit_latency=2, target_residency=2
>            C1E: exit_latency=5, target_residency=20
>            C6:  exit_latency=150, target_residency=600
> 2. intel_idle.table="C6::400"
>    Result: C1:  exit_latency=1, target_residency=2 (unchanged)
>            C1E: exit_latency=10, target_residency=10 (unchanged)
>            C6:  exit_latency=100, target_residency=400
>                 (only target_residency changed)
> 
> Signed-off-by: Artem Bityutskiy <artem.bityutskiy@linux.intel.com>
> Link: https://patch.msgid.link/20251216080402.156988-3-dedekind1@gmail.com
> Signed-off-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
> Origin: git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git 111f77a23348
> 
> Add __init to get_cmdline_field(). Put cmdline_table_str[] in .init.data.
> Other adjustments to fit our env.
> 
> Signed-off-by: Jan Beulich <jbeulich@suse.com>
> ---
> For the initial attempt, I've left the new option as a standalone one. It
> may be worth integrating with "mwait-idle", but I think much of the
> parsing would then want doing differently. It'll then likely be much
> harder to apply future Linux changes there.
> 
> --- a/docs/misc/xen-command-line.pandoc
> +++ b/docs/misc/xen-command-line.pandoc
> @@ -1928,6 +1928,23 @@ Print boot time MTRR state.
>  Use the MWAIT idle driver (with model specific C-state knowledge) instead
>  of the ACPI based one.
>  
> +### mwait-idle.table (x86)

The .table suffix is kind of weird, as we don't use it elsewhere.  It
might feel more natural given the naming of the existing command line
options to use mwait-idle-table?

> +> `= <string>`
> +
> + Define the C-states table from a user input string. Expected format is
> + 'name:latency:residency', where:
> + - name: The C-state name.
> + - latency: The C-state exit latency in us.
> + - residency: The C-state target residency in us.
> +
> + Multiple C-states can be defined by separating them with commas:
> + 'name1:latency1:residency1,name2:latency2:residency2'
> +
> + Example: intel_idle.table=C1:1:1,C1E:5:10,C6:100:600

s/intel_idle/mwait-idle/ in the line above.

> +
> + To leave latency or residency unchanged, use an empty field, for example:
> + 'C1:1:1,C1E::10' - leaves C1E latency unchanged.
> +
>  ### nmi (x86)
>  > `= ignore | dom0 | fatal`
>  
> --- a/xen/arch/x86/cpu/mwait-idle.c
> +++ b/xen/arch/x86/cpu/mwait-idle.c
> @@ -70,6 +70,11 @@
>  static __initdata bool opt_mwait_idle = true;
>  boolean_param("mwait-idle", opt_mwait_idle);
>  
> +/* The maximum allowed length for the 'table' module parameter  */
> +#define MAX_CMDLINE_TABLE_LEN 256
> +static char cmdline_table_str[MAX_CMDLINE_TABLE_LEN] __initdata;
> +string_param("mwait-idle.table", cmdline_table_str);
> +
>  static unsigned int mwait_substates;
>  
>  #define LAPIC_TIMER_ALWAYS_RELIABLE 0xFFFFFFFF
> @@ -122,6 +127,9 @@ struct cpuidle_state {
>   */
>  #define CPUIDLE_FLAG_IBRS		0x20000
>  
> +/* C-states data from the 'mwait-idle.table' cmdline parameter */
> +static struct cpuidle_state cmdline_states[ACPI_PROCESSOR_MAX_POWER] __initdata;
> +
>  /*
>   * MWAIT takes an 8-bit "hint" in EAX "suggesting"
>   * the C-state (top nibble) and sub-state (bottom nibble)
> @@ -1546,6 +1554,161 @@ static void __init mwait_idle_state_tabl
>  	}
>  }
>  
> + /**
> +  * get_cmdline_field - Get the current field from a cmdline string.
> +  * @args: The cmdline string to get the current field from.
> +  * @field: Pointer to the current field upon return.
> +  * @sep: The fields separator character.
> +  *
> +  * Examples:
> +  *   Input: args="C1:1:1,C1E:2:10", sep=':'
> +  *   Output: field="C1", return "1:1,C1E:2:10"
> +  *   Input: args="C1:1:1,C1E:2:10", sep=','
> +  *   Output: field="C1:1:1", return "C1E:2:10"
> +  *   Ipnut: args="::", sep=':'
> +  *   Output: field="", return ":"
> +  *
> +  * Return: The continuation of the cmdline string after the field or NULL.
> +  */
> +static char *__init get_cmdline_field(char *args, char **field, char sep)
> +{
> +	unsigned int i;
> +
> +	for (i = 0; args[i] && !isspace(args[i]); i++) {
> +		if (args[i] == sep)
> +			break;
> +	}
> +
> +	*field = args;
> +
> +	if (args[i] != sep)
> +		return NULL;
> +
> +	args[i] = '\0';
> +	return args + i + 1;
> +}
> +
> +/**
> + * cmdline_table_adjust - Adjust the C-states table with data from cmdline.
> + *
> + * Adjust the C-states table with data from the 'mwait-idle.table' parameter
> + * (if specified).
> + */
> +static void __init cmdline_table_adjust(void)
> +{
> +	char *args = cmdline_table_str;
> +	struct cpuidle_state *state;
> +	unsigned int i, state_count;
> +
> +	if (args[0] == '\0')
> +		/* The 'mwait-idle.table' module parameter was not specified */
> +		return;
> +
> +	/* Create a copy of the C-states table */
> +	for (i = 0;
> +	     i < ARRAY_SIZE(cmdline_states) && icpu.state_table[i].name[0];
> +	     i++)
> +		cmdline_states[i] = icpu.state_table[i];
> +
> +	state_count = i;
> +
> +	/*
> +	 * Adjust the C-states table copy with data from the 'mwait-idle.table'
> +	 * module parameter.
> +	 */
> +	while (args) {
> +		char *fields, *name, *val;
> +
> +		/*
> +		 * Get the next C-state definition, which is expected to be
> +		 * '<name>:<latency_us>:<target_residency_us>'. Treat "empty"
> +		 * fields as unchanged. For example,
> +		 * '<name>::<target_residency_us>' leaves the latency unchanged.
> +		 */
> +		args = get_cmdline_field(args, &fields, ',');
> +
> +		/* name */
> +		fields = get_cmdline_field(fields, &name, ':');
> +		if (!fields)
> +			goto error;
> +
> +		/* Find the C-state by its name */
> +		state = NULL;
> +		for (i = 0; i < state_count; i++) {
> +			if (!strcmp(name, cmdline_states[i].name)) {
> +				state = &cmdline_states[i];
> +				break;
> +			}
> +		}
> +
> +		if (!state) {
> +			printk(XENLOG_ERR PREFIX "C-state '%s' was not found\n",
> +			       name);
> +			continue;
> +		}
> +
> +		/* Latency */
> +		fields = get_cmdline_field(fields, &val, ':');
> +		if (!fields)
> +			goto error;
> +
> +		if (*val) {
> +			const char *end;
> +			unsigned long n = simple_strtoul(val, &end, 0);
> +
> +			state->exit_latency = n;
> +			if (*end || state->exit_latency != n)
> +				goto error;
> +		}
> +
> +		/* Target residency */
> +		fields = get_cmdline_field(fields, &val, ':');
> +
> +		if (*val) {
> +			const char *end;
> +			unsigned long n = simple_strtoul(val, &end, 0);
> +
> +			state->target_residency = n;
> +			if (*end || state->target_residency != n)
> +				goto error;
> +		}
> +
> +		/*
> +		 * Allow for 3 more fields, but ignore them. Helps to make
> +		 * possible future extensions of the cmdline format backward
> +		 * compatible.
> +		 */
> +		for (i = 0; fields && i < 3; i++) {
> +			fields = get_cmdline_field(fields, &val, ':');
> +			if (!fields)
> +				break;
> +		}

This seems a bit arbitrary for my taste.  I would rather ignore the
extra fields (and print a message about it), and proceed with the next
state.

> +
> +		if (fields) {
> +			printk(XENLOG_ERR PREFIX
> +			       "Too many fields for C-state '%s'\n",
> +			       state->name);
> +			goto error;
> +		}
> +
> +		printk(XENLOG_INFO PREFIX
> +		       "C-state from cmdline: name=%s, latency=%u, residency=%u\n",
> +		       state->name, state->exit_latency, state->target_residency);
> +	}
> +
> +	/* Copy the adjusted C-states table back */
> +	for (i = 0; i < state_count; i++)
> +		icpu.state_table[i] = cmdline_states[i];
> +
> +	printk(XENLOG_INFO PREFIX
> +	       "Adjusted C-states with data from 'mwait-idle.table'\n");
> +	return;
> +
> + error:
> +	printk(PREFIX

XENLOG_ERR maybe?

Thanks, Roger.


From xen-devel-bounces@lists.xenproject.org Fri Apr 24 19:15:41 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Fri, 24 Apr 2026 19:15:41 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1293950.1571310 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wGM03-0004Wt-T7; Fri, 24 Apr 2026 19:15:39 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1293950.1571310; Fri, 24 Apr 2026 19:15: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 1wGM03-0004Wl-PQ; Fri, 24 Apr 2026 19:15:39 +0000
Received: by outflank-mailman (input) for mailman id 1293950;
 Fri, 24 Apr 2026 19:15:39 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <roger.pau@citrix.com>) id 1wGM03-0004Wf-0U
 for xen-devel@lists.xenproject.org; Fri, 24 Apr 2026 19:15:39 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wGM02-006PQI-DW
 for xen-devel@lists.xenproject.org; Fri, 24 Apr 2026 21:15:38 +0200
Received: from [10.42.69.12] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <roger.pau@citrix.com>)
 id 69ebc145-e002-0a2a0a5209dd-0a2a450c8dde-40
 for <xen-devel@lists.xenproject.org>; Fri, 24 Apr 2026 21:15:38 +0200
Received: from [52.101.52.56]
 (helo=BL2PR02CU003.outbound.protection.outlook.com)
 by tlsNG-d25034.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.1)
 (envelope-from <roger.pau@citrix.com>)
 id 69ebc159-62f1-0a2a450c0019-34653438e210-3
 for <xen-devel@lists.xenproject.org>; Fri, 24 Apr 2026 21:15:38 +0200
Received: from CH7PR03MB7860.namprd03.prod.outlook.com (2603:10b6:610:24e::14)
 by CH2PR03MB5223.namprd03.prod.outlook.com (2603:10b6:610:9c::21)
 with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9769.48; Fri, 24 Apr
 2026 19:15:33 +0000
Received: from CH7PR03MB7860.namprd03.prod.outlook.com
 ([fe80::f5ba:35df:1c9f:b343]) by CH7PR03MB7860.namprd03.prod.outlook.com
 ([fe80::f5ba:35df:1c9f:b343%4]) with mapi id 15.20.9846.021; Fri, 24 Apr 2026
 19:15: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=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=ZzvKsK4R6MmIQHzdw4Cv5/SLeZbPrwYEqzrYmCn6bHWH80N0LlgaCVmH4j3SS4xVlZKrqP2XqvlqAwBRipo8PPhUlkOJ8HUn/70zRaDxODn01QWETwtjUoaDIUuil8U/PIEiNTXit9NtKrdsI3jaUaqB+p/c1Thh8Er3N9RnJGwvbsp4tG4rVdCLOwSSxiA3S5lsm5EQXVKuLjObLp+b5vk9C6dmlswSHEfnfqeUoWWAqVes1ncxxDQtAvsc7JrxL4Z4vby205WcJ/wwV9CWNgga9qm5s2eMu4poy9MiGuBds9/bChIL5B4RXhmzAJuxKFDJgeE2djOmoSltan+/Hw==
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com;
 s=arcselector10001;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1;
 bh=QHzQLGZqAPS6Un18SKcZpDDR3UEdvXn7IETSLm5u8h8=;
 b=uCSKl2f84tCXE7BAuT5u4kbyIYFwfEjxbe7cGKI1EqbFb1V+8CjQTVY7Dg5H4kqj65T5dA1GN1Ac4SKWeyT3c+Yb5j9/b2k9zlrbp2j4AIdqqDhWkRWfhNxAKInl9zzRckzbTgNQlk0xyMD7fiARchKDuvRBC7/fWOLM1A+arABK3m4A6SEBon6x+pVgUCkcGGYrivekGCr7n9wPe3LAmGmvNyyVQUXCF0kqgDQ+6IdLTYEc2HXGm1GbJhuYqsomCpopa/mGP0yH82KYD9puPuZwoUEY1dq4BLE7kwsiGJSBITIDXUylVJEDeVJsZETUyMeFKcteBRQRDYdKw1Euzg==
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=QHzQLGZqAPS6Un18SKcZpDDR3UEdvXn7IETSLm5u8h8=;
 b=X0r3iMcIPjbrzh/fju4IEl7NSo3ZYs6/xuY5sGPS0cmaMZ/0eSsp/2BiY12SR4nxA6+wgQaT9YeoFniZcOTPu30nqdkEsGgMW2z3PhJQ6mXN1rzN+Q17zF6sRmTAw2ixjDT+Z+ZIwchV3NQGk104qw08/LyK6ZujOjBJzIcbG+M=
Authentication-Results: dkim=none (message not signed)
 header.d=none;dmarc=none action=none header.from=citrix.com;
Date: Fri, 24 Apr 2026 21:15:30 +0200
From: Roger Pau =?utf-8?B?TW9ubsOp?= <roger.pau@citrix.com>
To: Jan Beulich <jbeulich@suse.com>
Cc: "xen-devel@lists.xenproject.org" <xen-devel@lists.xenproject.org>,
	Andrew Cooper <andrew.cooper3@citrix.com>
Subject: Re: [PATCH 9/9] x86/mwait-idle: Add C-states validation
Message-ID: <aevBUh77IeMuXjw4@macbook.local>
References: <7b7a677e-a5b9-42c8-beec-3c506b4eac52@suse.com>
 <d13912c9-8820-44e7-8aad-d8ee9ea17980@suse.com>
Content-Type: text/plain; charset=utf-8
Content-Disposition: inline
In-Reply-To: <d13912c9-8820-44e7-8aad-d8ee9ea17980@suse.com>
X-ClientProxiedBy: MA2P292CA0017.ESPP292.PROD.OUTLOOK.COM (2603:10a6:250::20)
 To CH7PR03MB7860.namprd03.prod.outlook.com (2603:10b6:610:24e::14)
MIME-Version: 1.0
X-MS-PublicTrafficType: Email
X-MS-TrafficTypeDiagnostic: CH7PR03MB7860:EE_|CH2PR03MB5223:EE_
X-MS-Office365-Filtering-Correlation-Id: 368f3e49-7f1d-4c2f-63ef-08dea235db8f
X-MS-Exchange-SenderADCheck: 1
X-MS-Exchange-AntiSpam-Relay: 0
X-Microsoft-Antispam:
	BCL:0;ARA:13230040|376014|1800799024|366016|18002099003|22082099003|56012099003;
X-Microsoft-Antispam-Message-Info:
	xZVb5I6KMuo2zFnVgK+xpfb0hu4kLZJbqqqc7vSqi9DiwzttFcRcu52P4awR9b0O/F+NL6wuiA48aJKXN97p3KvGI1k5woxtPNwGOH8O3ZL6UwzRAhyLF7xmiI3XLR8MfAFvnUa2KLFyw5eo1yI5GMsKsx68jsDe14J2v3LwibdcFRY1PLEEHDlT/VbQvqxkD6CBA09HWFRSMi/Ez2TPtR2BuQTw1IBHSSKjp5tlYlh1cAt7f0zDYq5KYPWVe9xXWace87hK4+MY/LpZb2PZbbg2dPEQmaFpspZi7jMRDQ5cblLRye1ozD53ajoK7whvDe6Mecl5P6VXzCiARMnl/EVPQQGbqoIWO99S0FckIYFJqrc5WzqCXsjr3x4L4+NJ7q7H4kc4sfSI2Ij5EzYTrKQAhxIu9n3SNCkcY8x7zMeRrzX3718ohryJ2S/nYHYpcCIsaa9Vo2++nNfulyxITvphtCZcBQrhLA/k5Od1B/bXWpT8uQc7WUsrQrvycEGS8DIniilZk3kg15VVycgMH7z4wc5Si1uowoytuyOXyoB3hmfO8+oZUZHKyuopMnWDdJo6HPZx+U3QWjerPh4j3BFwX8aq1/i8M4zeD+Y6Bua9n+FvNMbbewK5tkhbP1IqHk31NUE8F0sk73vz+CEPfX9R1Sh3Y3Tvy6v6uBZP8EUuXBNVnfP2aTufAfueArvt
X-Forefront-Antispam-Report:
	CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:CH7PR03MB7860.namprd03.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(376014)(1800799024)(366016)(18002099003)(22082099003)(56012099003);DIR:OUT;SFP:1101;
X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1
X-MS-Exchange-AntiSpam-MessageData-0:
	=?utf-8?B?NFJ5ZC9qYUVMOUNSN0tjWFcrK25LSXN0QjFqUWZPbUpaWVdlLzh1elR1VVhF?=
 =?utf-8?B?bDBibDNETmJsWEd0eGdkLzRraHN1eUhOcVNCSnR2QnRkNDBEWVEyMmtlVFBC?=
 =?utf-8?B?OU0wZWdtdnA5cFVsRVN0dTVRV0JTS3FhTmFNVnlKaW1XY3FoL2FIVGxpSkE4?=
 =?utf-8?B?QThXMENub29LcmhuMlFTbmt6QzNFL0dEa3pUaDE1MkNuSENzaXlzZkUzZW9n?=
 =?utf-8?B?NWFZMzhLTDlKZFpCTmlDUkE2TmhTUVlieWpDSFJORVQyaUN0NGFIbVc0a0p2?=
 =?utf-8?B?aFIrRTNRWHlsMXNJZklpSDU3aUlCa2VNWHRDWG12VHE3YXB1aEZyL3hVWVlK?=
 =?utf-8?B?Zml6ajBZVVpyZWlNcmVqUmZ5aUpJZ3ByQjgvWS82VkxiVlJNT2hua2FybGlR?=
 =?utf-8?B?WnZDTng1R1VGMFhkbmpubkNJWlJDYzBrcDZtNTFJL0tmUkVJUUhkTEZRcTJJ?=
 =?utf-8?B?VjBocndmUjNFT3E0MjdYQ3BYS2VIV2x4ZjJuSTNOdXhnZk4zVXZyYmNPdHNO?=
 =?utf-8?B?aUpwd3VZM1o1L3JNaGxQTTdSUlhwYXVyTDJnTFBkQStveGVMd1pBc0x4elpP?=
 =?utf-8?B?U3JSako3bG5scGdjb0FHdTlNai9TSU5uay9WTWVqS2d4R2laS3hEM1o4QkhE?=
 =?utf-8?B?N0VKaDVOZytxM1pYaU9peHRCay9ZOEhYTGUxQk5NRjlkeTZwZWFrV1BEVEQw?=
 =?utf-8?B?cEMvQ0J1emZXN1hrUnFkbVJSaTZPWWlqWEhaYS9OZllSeXVsK3d1OTNDNmox?=
 =?utf-8?B?NFdVdk5WNU5pdVo0UXZma2VLcGVHVGc3U0NhSFc4R3lPYWo4MHFhMEIraDhI?=
 =?utf-8?B?clN5ZFpNY2hHbzhQbXF1R1A5R2hCNHJLdVJHUGlBMUllTFpXRVBBc3NIM04w?=
 =?utf-8?B?akFuaUtrQzdsYXdHUFNabW5mdkpOdDA0VWdNRG1ydVM5RkhaZzNvY1Y3eDMx?=
 =?utf-8?B?ck5UVHNkRm9VU09Hb0RSN3dCdk1ROE51MzEwR3daalRqdk5YdkxzNE1xTUI4?=
 =?utf-8?B?SUhwTEdOVEZYcjdiUFdrN2dCTkM3MFBDYU1KaDQ2Ylo5RzhsRnRRdzFHSGYr?=
 =?utf-8?B?anlteTdYUmtoNTBVakdzeUo0UUF6Mlo3Q3N5SldTRko1Z3ZkMFpCTXYxU2Rq?=
 =?utf-8?B?ZERCQWRHbms1WUNhU3VuWjVUYWZCeEFnRXRsUS9ySXFOa1BoVE01MUZHdWNO?=
 =?utf-8?B?cERMcjRVV0U0RjZpL3l4TzkrdTd1ZVk5bGU4TVZWcThRZWt3N0xVYXhFWTBM?=
 =?utf-8?B?bGw5aUJ2WDk3dFl5dU4rNkNydXdLQ3VsakUwb04rR0NibTRoeUxIcHVrazVy?=
 =?utf-8?B?TlFoUWNydm1LZmhqNlNnYUh4OEp0VmZycVFZV2lwYlVmZFNRbnliUjlFdVlI?=
 =?utf-8?B?TzNKcGtxdTdLbWtmTnFPUDNVMTJYSkQycnRXeThnTlk4MFMvWHhtZi9KQjBD?=
 =?utf-8?B?Q3pKTmorZEJzSytZdkRHT0xZRnM5REhlaldEMlF5UVpGYnU5R0FuZnhyZjJD?=
 =?utf-8?B?S3hYa1F0a0hKSURsOGZCSkVtWXQ0WXhETjcwZUpUcVBuT0dkb2QxV0tCSXQ5?=
 =?utf-8?B?VmZYZmJUU1B3QjlzQlA4a0F0aXhxaytvOU9kZUtlQlMzbVdQdjFLYy9nd0lk?=
 =?utf-8?B?bmtFK2tLQzZHNU9IS0xCK0FvcHkzZldtZHg2RTdVeEJTQldaWHkya1ZWeTVr?=
 =?utf-8?B?Smg5MitocTcxeXBQNEprWk5XSDFQYk9EQkJXVUpNUXQyZ3lCUXJrYURLVWxE?=
 =?utf-8?B?aXIyeHZYV3RuVzFLNHFIdEs5aEZXNzJvUmVXTDdyZGR3czZBc1UyNXk2eTRN?=
 =?utf-8?B?dmlXRHdlb28rdnM0ME52VFZRaFlsODduZDhydDFmQ3lGRXN4d0VueitTbVJH?=
 =?utf-8?B?YWV6R2RKbWpjNmFHZHRzOEJrcEtQdmFHeEdETmxqa1JTcHI5dEhhc1FvNTFo?=
 =?utf-8?B?Q2VSOGIzZUgxRjJTYzdBaGxlMHZVNXJwUUpoS3RkUkt4a3JyRit3UzlWMTVa?=
 =?utf-8?B?YkthR0ZrOE5UWXBoVnVrNVl2TE5qdWN6TjZ5U2diTnNLalZLYjJaaitqWEFL?=
 =?utf-8?B?TjlHMnFsc3VhK0R5WHZYei91Q1htL2VXbzRnek1zcUJnZG1Va2phbGxFVU5i?=
 =?utf-8?B?bldyVEJodjI5VjJCMWg5OER0TU5WdUxvZjZlRVNDQjN4T2NmQmFhZUZCT0RB?=
 =?utf-8?B?YmlUZjhWdVdEcGNqT2lNWjlOS0VLSFMwNUJmREhxSjFpMUwvOWhxT1kzbnky?=
 =?utf-8?B?QmVEZmVKbWpaTDR4VHJUSWRCWFkzYXJkQkJKRnE0YlRsQXhMQStZZlJWcENv?=
 =?utf-8?B?WWZsYnNscDZBd0xOdFMvN1ArR0JQcDJRUmRTMGhOMDVwaC8zR3Vadz09?=
X-OriginatorOrg: citrix.com
X-MS-Exchange-CrossTenant-Network-Message-Id: 368f3e49-7f1d-4c2f-63ef-08dea235db8f
X-MS-Exchange-CrossTenant-AuthSource: CH7PR03MB7860.namprd03.prod.outlook.com
X-MS-Exchange-CrossTenant-AuthAs: Internal
X-MS-Exchange-CrossTenant-OriginalArrivalTime: 24 Apr 2026 19:15:33.5835
 (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: KqMjB8LN2bjdPigusJcPMTd1M1t3Kn4vtPllbMfbDs2kWEz3EOWcS4lYcb9cc9xxU+4lZ5ru49nmQMbjOeNFuA==
X-MS-Exchange-Transport-CrossTenantHeadersStamped: CH2PR03MB5223
X-purgate-ID: tlsNG-d25034/1777058138-F4AF8CF5-437507FE/0/0
X-purgate-type: clean
X-purgate-size: 2780

On Thu, Mar 12, 2026 at 05:58:21PM +0100, Jan Beulich wrote:
> From: Artem Bityutskiy <artem.bityutskiy@linux.intel.com>
> 
> Add validation for C-states specified via the "table=" module parameter.
> Treat this module parameter as untrusted input and validate it thoroughly.
> 
> Signed-off-by: Artem Bityutskiy <artem.bityutskiy@linux.intel.com>
> Link: https://patch.msgid.link/20251216080402.156988-4-dedekind1@gmail.com
> Signed-off-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
> Origin: git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git be6a150829b3
> 
> Add __init to validate_cmdline_cstate(). Other adjustments to fit our env.
> 
> Signed-off-by: Jan Beulich <jbeulich@suse.com>
> 
> --- a/xen/arch/x86/cpu/mwait-idle.c
> +++ b/xen/arch/x86/cpu/mwait-idle.c
> @@ -72,6 +72,11 @@ boolean_param("mwait-idle", opt_mwait_id
>  
>  /* The maximum allowed length for the 'table' module parameter  */
>  #define MAX_CMDLINE_TABLE_LEN 256
> +/* Maximum allowed C-state latency */
> +#define MAX_CMDLINE_LATENCY_US (5 * 1000 /* USEC_PER_MSEC */)
> +/* Maximum allowed C-state target residency */
> +#define MAX_CMDLINE_RESIDENCY_US (100 * 1000 /* USEC_PER_MSEC */)
> +
>  static char cmdline_table_str[MAX_CMDLINE_TABLE_LEN] __initdata;
>  string_param("mwait-idle.table", cmdline_table_str);
>  
> @@ -1589,6 +1594,41 @@ static char *__init get_cmdline_field(ch
>  }
>  
>  /**
> + * validate_cmdline_cstate - Validate a C-state from cmdline.
> + * @state: The C-state to validate.
> + * @prev_state: The previous C-state in the table or NULL.
> + *
> + * Return: 0 if the C-state is valid or -EINVAL otherwise.

Hm, I know we picked this up from upstream, but this function would
better return a boolean, rather than 0 or -EINVAL.

> + */
> +static int __init validate_cmdline_cstate(struct cpuidle_state *state,
> +					  struct cpuidle_state *prev_state)
> +{
> +	if (state->exit_latency == 0)
> +		/* Exit latency 0 can only be used for the POLL state */
> +		return -EINVAL;
> +
> +	if (state->exit_latency > MAX_CMDLINE_LATENCY_US)
> +		return -EINVAL;
> +
> +	if (state->target_residency > MAX_CMDLINE_RESIDENCY_US)
> +		return -EINVAL;
> +
> +	if (state->target_residency < state->exit_latency)
> +		return -EINVAL;
> +
> +	if (!prev_state)
> +		return 0;
> +
> +	if (state->exit_latency <= prev_state->exit_latency)
> +		return -EINVAL;
> +
> +	if (state->target_residency <= prev_state->target_residency)
> +		return -EINVAL;

I'm not an expert on C-states, but isn't this checking against the
previous value kind of defeating part of the purpose of the command
line?

Also, it might help to also write down those limits in the command
line documentation.

Thanks, Roger.


From xen-devel-bounces@lists.xenproject.org Fri Apr 24 23:15:52 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Fri, 24 Apr 2026 23:15:52 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1294053.1571318 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wGPkD-0001q8-7q; Fri, 24 Apr 2026 23:15:33 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1294053.1571318; Fri, 24 Apr 2026 23:15: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 1wGPkD-0001q1-4g; Fri, 24 Apr 2026 23:15:33 +0000
Received: by outflank-mailman (input) for mailman id 1294053;
 Fri, 24 Apr 2026 23:15:31 +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 1wGPkB-0001pv-OU
 for xen-devel@lists.xenproject.org; Fri, 24 Apr 2026 23:15:31 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wGPk9-006D7V-4u
 for xen-devel@lists.xenproject.org; Sat, 25 Apr 2026 01:15:30 +0200
Received: from [10.42.69.5] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <sstabellini@kernel.org>)
 id 69ebf97f-e002-0a2a0a5209dd-0a2a4505c674-10
 for <xen-devel@lists.xenproject.org>; Sat, 25 Apr 2026 01:15:30 +0200
Received: from [172.234.252.31] (helo=sea.source.kernel.org)
 by tlsNG-c201ff.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.1)
 (envelope-from <sstabellini@kernel.org>)
 id 69ebf990-aaa8-0a2a45050019-aceafc1f88bc-3
 for <xen-devel@lists.xenproject.org>; Sat, 25 Apr 2026 01:15:30 +0200
Received: from smtp.kernel.org (transwarp.subspace.kernel.org [100.75.92.58])
 by sea.source.kernel.org (Postfix) with ESMTP id 45D0940E34;
 Fri, 24 Apr 2026 23:15:28 +0000 (UTC)
Received: by smtp.kernel.org (Postfix) with ESMTPSA id C07AFC2BCB0;
 Fri, 24 Apr 2026 23:15: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=k20201202 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/simple; d=kernel.org;
	s=k20201202; t=1777072528;
	bh=oLKd9v1uv4DZICMQa7d2btuR4XwM6ccabR4xaT/WOVs=;
	h=Date:From:To:cc:Subject:In-Reply-To:References:From;
	b=XrPZzhd8gqlvrlhRjmnvzAkOWZkp7z6h07lMvp5hKcGz2ymBYWeuskWexLTk/f31O
	 LWy0Qw1ac3KdNU5L9jgjuwuMaJczlwjZsBakurn2EdLA/NMWleOOtC0YQZL80rcAcO
	 Ze/NnKmoOiwyvgqozVTwRkegiEKMzTYEoeMtFeWMHAfcstN99SpNUeNOjNkuqIez7Q
	 c3FVWzCw6j7A0I1bSGqDXrPbaAGxSRBFRK+UjpjrOQ//ixN19sidlBr9aXUHma5jG0
	 9M03z7bet+WE23nU59UaAAYS21fRjHRVO/RwaKbHp59RtagmqRqsqzyxVRnhV5mkfw
	 LisnYBy+gfI+w==
Date: Fri, 24 Apr 2026 16:15:26 -0700 (PDT)
From: Stefano Stabellini <sstabellini@kernel.org>
X-X-Sender: sstabellini@ubuntu-linux-20-04-desktop
To: Peng Fan <peng.fan@oss.nxp.com>
cc: =?UTF-8?Q?J=C3=BCrgen_Gro=C3=9F?= <jgross@suse.com>, 
    Stefano Stabellini <sstabellini@kernel.org>, 
    Oleksandr Tyshchenko <oleksandr_tyshchenko@epam.com>, 
    xen-devel@lists.xenproject.org, iommu@lists.linux.dev, 
    linux-kernel@vger.kernel.org, Peng Fan <peng.fan@nxp.com>
Subject: Re: [PATCH RFC] xen/swiotlb: avoid arch_sync_dma_* on per-device
 DMA memory
In-Reply-To: <aesV0ai8SM89cb3j@shlinux89>
Message-ID: <alpine.DEB.2.22.394.2604241614280.6871@ubuntu-linux-20-04-desktop>
References: <20260415-xen-swiotlb-v1-1-de24eda3c0fd@nxp.com> <f6cf1d46-9d2e-4b52-a6b9-fb45d01b874f@suse.com> <aesV0ai8SM89cb3j@shlinux89>
User-Agent: Alpine 2.22 (DEB 394 2020-01-19)
MIME-Version: 1.0
Content-Type: multipart/mixed; boundary="8323329-1721512358-1777072528=:6871"
X-purgate-ID: tlsNG-c201ff/1777072530-E85AF443-C6FB816D/0/0
X-purgate-type: clean
X-purgate-size: 2710

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

--8323329-1721512358-1777072528=:6871
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8BIT

On Fri, 24 Apr 2026, Peng Fan wrote:
> Hi Juergen,
> 
> On Mon, Apr 20, 2026 at 02:19:34PM +0200, Jürgen Groß wrote:
> >On 15.04.26 17:08, Peng Fan (OSS) wrote:
> >> From: Peng Fan <peng.fan@nxp.com>
> >> 
> >> On ARM64, arch_sync_dma_for_{cpu,device}() assumes that the
> >> physical address passed in refers to normal RAM that is part of the
> >> kernel linear(direct) mapping, as it unconditionally derives a CPU
> >> virtual address via phys_to_virt().
> >> 
> >> With Xen swiotlb, devices may use per-device coherent DMA memory,
> >> such as reserved-memory regions described by 'shared-dma-pool',
> >> which are assigned to dev->dma_mem. These regions may be marked
> >> no-map in DT and therefore are not part of the kernel linear map.
> >> In such cases, pfn_valid() still returns true, but phys_to_virt()
> >> is not valid and cache maintenance via arch_sync_dma_* will fault.
> >> 
> >> Prevent this by excluding devices with a private DMA memory pool
> >> (dev->dma_mem) from the arch_sync_dma_* fast path, and always
> >> fall back to xen_dma_sync_* for those devices to avoid invalid
> >> phys_to_virt() conversions for no-map DMA memory while preserving the
> >> existing fast path for normal, linear-mapped RAM.
> >> 
> >> Signed-off-by: Peng Fan <peng.fan@nxp.com>
> >> ---
> >>   drivers/xen/swiotlb-xen.c | 17 +++++++++++++----
> >>   1 file changed, 13 insertions(+), 4 deletions(-)
> >> 
> >> diff --git a/drivers/xen/swiotlb-xen.c b/drivers/xen/swiotlb-xen.c
> >> index 2cbf2b588f5b20cfbf9e83a8339dc22092c9559a..b1445df99d9a8f1d18a83b8c413bada6e5579209 100644
> >> --- a/drivers/xen/swiotlb-xen.c
> >> +++ b/drivers/xen/swiotlb-xen.c
> >> @@ -195,6 +195,11 @@ xen_swiotlb_free_coherent(struct device *dev, size_t size, void *vaddr,
> >>   }
> >>   #endif /* CONFIG_X86 */
> >> +static inline bool dev_has_private_dma_pool(struct device *dev)
> >> +{
> >> +	return dev && dev->dma_mem;
> >> +}
> >> +
> >
> >I don't think this will compile on x86.
> 
> My bad, I only tried the build for ARM64. I use below changes, if it looks
> good.
> 
> #ifdef CONFIG_ARM64
> static inline bool dev_has_private_dma_pool(struct device *dev)
> {
> 	return dev && dev->dma_mem;
> }
> #else
> static inline bool dev_has_private_dma_pool(struct device *dev)
> {
> 	return false;
> }
> #endif

Please use CONFIG_DMA_DECLARE_COHERENT

--8323329-1721512358-1777072528=:6871--


From xen-devel-bounces@lists.xenproject.org Fri Apr 24 23:26:22 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Fri, 24 Apr 2026 23:26:22 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1294063.1571328 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wGPub-0003UR-4h; Fri, 24 Apr 2026 23:26:17 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1294063.1571328; Fri, 24 Apr 2026 23:26: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 1wGPub-0003UK-1l; Fri, 24 Apr 2026 23:26:17 +0000
Received: by outflank-mailman (input) for mailman id 1294063;
 Fri, 24 Apr 2026 23:26:15 +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 1wGPuZ-0003UE-87
 for xen-devel@lists.xenproject.org; Fri, 24 Apr 2026 23:26:15 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wGPuY-00GAmQ-AX
 for xen-devel@lists.xenproject.org; Sat, 25 Apr 2026 01:26:14 +0200
Received: from [10.42.69.6] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <sstabellini@kernel.org>)
 id 69ebfbb4-e002-0a2a0a5209dd-0a2a450698c6-28
 for <xen-devel@lists.xenproject.org>; Sat, 25 Apr 2026 01:26:14 +0200
Received: from [172.105.4.254] (helo=tor.source.kernel.org)
 by tlsNG-16d1c6.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.1)
 (envelope-from <sstabellini@kernel.org>)
 id 69ebfc15-7371-0a2a45060019-ac6904fec59a-3
 for <xen-devel@lists.xenproject.org>; Sat, 25 Apr 2026 01:26:13 +0200
Received: from smtp.kernel.org (transwarp.subspace.kernel.org [100.75.92.58])
 by tor.source.kernel.org (Postfix) with ESMTP id B16F7600AE;
 Fri, 24 Apr 2026 23:26:12 +0000 (UTC)
Received: by smtp.kernel.org (Postfix) with ESMTPSA id 21CDAC19425;
 Fri, 24 Apr 2026 23:26: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=k20201202 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/simple; d=kernel.org;
	s=k20201202; t=1777073172;
	bh=kyRqrvgm9QqjIN/vVRy0hj3rI8A+watg1fyfjslJQIM=;
	h=Date:From:To:cc:Subject:In-Reply-To:References:From;
	b=UwwfIxM4JV7wubgaeaYSQkjbGQNgnAwrfN/4+zeuwVqFMOA0LSHbOKzFln0vWgY0G
	 bTiMyd3Q10e9NYCZ3UyicG+k31XBupmLmYGtAsO7td/GNnFlQsspxbnwVXzZ+pKqdE
	 zo/Of9k44IjrCFYqr4wIBJq+oj/q+SXjdtLG1BQuG4rbL+cG7SwhouCa5FO9YiecFI
	 bbK5zj0gbiAy7TzPZILS8p7hCtGThM+owN4VxQwqb6UyJHlUWffG11Smcaiy7m+1Ed
	 lmeBvIX4Jvcr8aG3uOoa4h8iThbEMi9TIRzn/b963ZpF+40oQTde0yCyYn9/4HZANp
	 4aPZHgoN81vOw==
Date: Fri, 24 Apr 2026 16:26:11 -0700 (PDT)
From: Stefano Stabellini <sstabellini@kernel.org>
X-X-Sender: sstabellini@ubuntu-linux-20-04-desktop
To: "Peng Fan (OSS)" <peng.fan@oss.nxp.com>
cc: Juergen Gross <jgross@suse.com>, 
    Stefano Stabellini <sstabellini@kernel.org>, 
    Oleksandr Tyshchenko <oleksandr_tyshchenko@epam.com>, 
    xen-devel@lists.xenproject.org, iommu@lists.linux.dev, 
    linux-kernel@vger.kernel.org, Peng Fan <peng.fan@nxp.com>, 
    michal.orzel@amd.com
Subject: Re: [PATCH RFC] xen/swiotlb: avoid arch_sync_dma_* on per-device
 DMA memory
In-Reply-To: <20260415-xen-swiotlb-v1-1-de24eda3c0fd@nxp.com>
Message-ID: <alpine.DEB.2.22.394.2604241617450.6871@ubuntu-linux-20-04-desktop>
References: <20260415-xen-swiotlb-v1-1-de24eda3c0fd@nxp.com>
User-Agent: Alpine 2.22 (DEB 394 2020-01-19)
MIME-Version: 1.0
Content-Type: text/plain; charset=US-ASCII
X-purgate-ID: tlsNG-16d1c6/1777073174-91079D75-C62A58CB/0/0
X-purgate-type: clean
X-purgate-size: 4208

+Michal

On Wed, 15 Apr 2026, Peng Fan (OSS) wrote:
> From: Peng Fan <peng.fan@nxp.com>
> 
> On ARM64, arch_sync_dma_for_{cpu,device}() assumes that the
> physical address passed in refers to normal RAM that is part of the
> kernel linear(direct) mapping, as it unconditionally derives a CPU
> virtual address via phys_to_virt().
> 
> With Xen swiotlb, devices may use per-device coherent DMA memory,
> such as reserved-memory regions described by 'shared-dma-pool',
> which are assigned to dev->dma_mem. These regions may be marked
> no-map in DT and therefore are not part of the kernel linear map.
> In such cases, pfn_valid() still returns true, but phys_to_virt()
> is not valid and cache maintenance via arch_sync_dma_* will fault.
> 
> Prevent this by excluding devices with a private DMA memory pool
> (dev->dma_mem) from the arch_sync_dma_* fast path, and always
> fall back to xen_dma_sync_* for those devices to avoid invalid
> phys_to_virt() conversions for no-map DMA memory while preserving the
> existing fast path for normal, linear-mapped RAM.

This might not work either: the Xen side implementation is
xen/common/grant_table.c:_cache_flush.

Could you please check? From looking at the code,
page_get_owner_and_reference might return NULL for pages part of
reserved-memory regions marked as no-map.

In which case, the Xen hypercall should return -EPERM.



> Signed-off-by: Peng Fan <peng.fan@nxp.com>
> ---
>  drivers/xen/swiotlb-xen.c | 17 +++++++++++++----
>  1 file changed, 13 insertions(+), 4 deletions(-)
> 
> diff --git a/drivers/xen/swiotlb-xen.c b/drivers/xen/swiotlb-xen.c
> index 2cbf2b588f5b20cfbf9e83a8339dc22092c9559a..b1445df99d9a8f1d18a83b8c413bada6e5579209 100644
> --- a/drivers/xen/swiotlb-xen.c
> +++ b/drivers/xen/swiotlb-xen.c
> @@ -195,6 +195,11 @@ xen_swiotlb_free_coherent(struct device *dev, size_t size, void *vaddr,
>  }
>  #endif /* CONFIG_X86 */
>  
> +static inline bool dev_has_private_dma_pool(struct device *dev)
> +{
> +	return dev && dev->dma_mem;
> +}
> +
>  /*
>   * Map a single buffer of the indicated size for DMA in streaming mode.  The
>   * physical address to use is returned.
> @@ -262,7 +267,8 @@ static dma_addr_t xen_swiotlb_map_phys(struct device *dev, phys_addr_t phys,
>  
>  done:
>  	if (!dev_is_dma_coherent(dev) && !(attrs & DMA_ATTR_SKIP_CPU_SYNC)) {
> -		if (pfn_valid(PFN_DOWN(dma_to_phys(dev, dev_addr)))) {
> +		if (pfn_valid(PFN_DOWN(dma_to_phys(dev, dev_addr))) &&
> +		    !dev_has_private_dma_pool(dev)) {
>  			arch_sync_dma_for_device(phys, size, dir);
>  			arch_sync_dma_flush();
>  		} else {
> @@ -289,7 +295,8 @@ static void xen_swiotlb_unmap_phys(struct device *hwdev, dma_addr_t dev_addr,
>  	BUG_ON(dir == DMA_NONE);
>  
>  	if (!dev_is_dma_coherent(hwdev) && !(attrs & DMA_ATTR_SKIP_CPU_SYNC)) {
> -		if (pfn_valid(PFN_DOWN(dma_to_phys(hwdev, dev_addr)))) {
> +		if (pfn_valid(PFN_DOWN(dma_to_phys(hwdev, dev_addr))) &&
> +		    !dev_has_private_dma_pool(hwdev)) {
>  			arch_sync_dma_for_cpu(paddr, size, dir);
>  			arch_sync_dma_flush();
>  		} else {
> @@ -312,7 +319,8 @@ xen_swiotlb_sync_single_for_cpu(struct device *dev, dma_addr_t dma_addr,
>  	struct io_tlb_pool *pool;
>  
>  	if (!dev_is_dma_coherent(dev)) {
> -		if (pfn_valid(PFN_DOWN(dma_to_phys(dev, dma_addr)))) {
> +		if (pfn_valid(PFN_DOWN(dma_to_phys(dev, dma_addr))) &&
> +		    !dev_has_private_dma_pool(dev)) {
>  			arch_sync_dma_for_cpu(paddr, size, dir);
>  			arch_sync_dma_flush();
>  		} else {
> @@ -337,7 +345,8 @@ xen_swiotlb_sync_single_for_device(struct device *dev, dma_addr_t dma_addr,
>  		__swiotlb_sync_single_for_device(dev, paddr, size, dir, pool);
>  
>  	if (!dev_is_dma_coherent(dev)) {
> -		if (pfn_valid(PFN_DOWN(dma_to_phys(dev, dma_addr)))) {
> +		if (pfn_valid(PFN_DOWN(dma_to_phys(dev, dma_addr))) &&
> +		    !dev_has_private_dma_pool(dev)) {
>  			arch_sync_dma_for_device(paddr, size, dir);
>  			arch_sync_dma_flush();
>  		} else {
> 
> ---
> base-commit: 66672af7a095d89f082c5327f3b15bc2f93d558e
> change-id: 20260415-xen-swiotlb-34a198b6c1d6
> 
> Best regards,
> -- 
> Peng Fan <peng.fan@nxp.com>
> 


From xen-devel-bounces@lists.xenproject.org Sun Apr 26 13:30:54 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Sun, 26 Apr 2026 13:30:54 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1294558.1571337 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wGzZB-0001bD-45; Sun, 26 Apr 2026 13:30:33 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1294558.1571337; Sun, 26 Apr 2026 13: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 1wGzZA-0001b5-WF; Sun, 26 Apr 2026 13:30:33 +0000
Received: by outflank-mailman (input) for mailman id 1294558;
 Sun, 26 Apr 2026 13:30:32 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <jgg@ziepe.ca>) id 1wGzZ9-0001az-5V
 for xen-devel@lists.xenproject.org; Sun, 26 Apr 2026 13:30:32 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wGzZ6-009you-S5
 for xen-devel@lists.xenproject.org; Sun, 26 Apr 2026 15:30:30 +0200
Received: from [10.42.69.6] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <jgg@ziepe.ca>)
 id 69ee1370-bab6-0a2a0a5309dd-0a2a4506cf36-14
 for <xen-devel@lists.xenproject.org>; Sun, 26 Apr 2026 15:30:30 +0200
Received: from [209.85.160.182] (helo=mail-qt1-f182.google.com)
 by tlsNG-16d1c6.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.1)
 (envelope-from <jgg@ziepe.ca>)
 id 69ee1375-7371-0a2a45060019-d155a0b6f1f8-3
 for <xen-devel@lists.xenproject.org>; Sun, 26 Apr 2026 15:30:30 +0200
Received: by mail-qt1-f182.google.com with SMTP id
 d75a77b69052e-50d87610513so102256751cf.3
 for <xen-devel@lists.xenproject.org>; Sun, 26 Apr 2026 06:30:29 -0700 (PDT)
Received: from ziepe.ca
 (crbknf0213w-47-54-130-67.pppoe-dynamic.high-speed.nl.bellaliant.net.
 [47.54.130.67]) by smtp.gmail.com with ESMTPSA id
 d75a77b69052e-50e394c1fddsm246449421cf.30.2026.04.26.06.30.27
 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
 Sun, 26 Apr 2026 06:30:27 -0700 (PDT)
Received: from jgg by wakko with local (Exim 4.97)
 (envelope-from <jgg@ziepe.ca>) id 1wGzZ5-0000000EnQT-0zsZ;
 Sun, 26 Apr 2026 10:30:27 -0300
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@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=ziepe.ca header.i="@ziepe.ca" header.h="In-Reply-To:Content-Disposition:MIME-Version:References:Message-ID:Subject:Cc:To:From:Date"
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=ziepe.ca; s=google; t=1777210229; x=1777815029; darn=lists.xenproject.org;
        h=in-reply-to:content-disposition:mime-version:references:message-id
         :subject:cc:to:from:date:from:to:cc:subject:date:message-id:reply-to;
        bh=yt3A8pADO9ZJrlnKUWoV4EH8uD2s2dkOvSuk8HhB068=;
        b=HhKLY5wo/5l/t4XOWnJPhloOXYqQLvpCDxrTWCUreEe31Z7mJ8gZYXwu5hwbKWi2vG
         J/v7Y9dWWZSP51g3Me7oq+RzdaYRBpVEppEUAbdBwH5d6NgWaixNZBPBZEtAGSP007m0
         p/616x1DSDeDoAYYYLpa+AW5PlVu2Ic5RB+O2k1tqoJiwch5K0CEBqGTa9qzrSP4BOc5
         hAfeFCRjD7ByYVgZtZw1wwZGGn/5An8+edur5KmE+EbU7DfdQKsORaz76Kf11oH0SBlf
         ecN9MZpr5hzoHBW78TkOJCJe8RtrUYwGWA5oDIBE5ajSCDn3uJwbzwIEMdoeGdf7n6CD
         Rxlg==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20251104; t=1777210229; x=1777815029;
        h=in-reply-to:content-disposition: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;
        bh=yt3A8pADO9ZJrlnKUWoV4EH8uD2s2dkOvSuk8HhB068=;
        b=d2Ebn0FqUvhEQD6d2xi+FJdO0V3gedNfKC+DRFg/wQIkfNGGebQy0w1KmoWeXHD/iI
         Pzol9lRYWx1ZGxcbMA6cw8HMQjH4QpKRrwV0Mj6S8+5tzd+LkHwypv+UtygU3zTv5PXa
         wj7rqHQkkcj8PKQGzqzdvmyu9beKTeDumQ1ooZCOfwkL7V75S6XhJRg0vMWpdzYt0DTM
         sUO5TMJbnXd1QFughW3aPVd2HSaP4SwWw5YUUz7LKn/M0iNUEhZF6LamJ9UzDb4aCjcI
         eyN1bdkQwkncM96PECRK3EvlRPg+8EELzj7sHy8867Nry78e4fer+P+wSqnf8MFiBfGN
         ZLqA==
X-Forwarded-Encrypted: i=1; AFNElJ+UN1fA5T1Z8IqV2MEs1xrisKeSLfBOGANNfjp02WogjbIG0eCvMSAR9M2Z+E64dA7F0VFe49ZbfEI=@lists.xenproject.org
X-Gm-Message-State: AOJu0YysKgG2gPqKfylbxKMNBo6gIRwXr8fpfOiO6Zd0tIk6sJEy548J
	R2J7y+NO3aAco7dAJtugCW0Ghl6kvuDRMqOs9j3YNrsRC6nARQv4UDDaREes5R4jpLA=
X-Gm-Gg: AeBDieu7Yx5ZFgNrBrbdKPuaNYfpgVwlDMK+5lj+mYGgtPzJeYJX3iWyFFcDJl71PsB
	D3F2y3Mhk4JTpl0WQcXq33spLaBXY5DWdExcszlCASwqUkSdN10He5QIVtA3qS+RwgUL+9nUDmO
	89jBPy717Eibr5dbzZMdvqytNM/7R7jIoZz9blXiU6GCyGvCPvpEdoKCtV0ncmZDvlWcE+CMQpR
	7a4GJmqOquSuvrAKCVYrrgX2noomtGmmGHHka4faZTLDbilSEyB6G6jSmOsUNwIiNyo2XFeNqKs
	to0faqOr0ErkvbvGcgPP4jnFB3CVkyOMsQfWuXJXef5WM6eXm1nwH/+yAFLsJeXONgXC7lJfc6F
	MRjPeF4jKICRUPFLaJYuNm0eGIFqthNTsvV3IwL8F3thv53iSJMcU+Nnp3/iRJ5DAt7dvgOT/Gy
	aMGOutfox6hlej7+61MaKCwk+dCdBxhEJE1t3hqNQ8ifG16bhknnovS73pEQ8IDOlYL05lsHfe/
	i9hx+kc0/V6cVw9
X-Received: by 2002:a05:622a:98e:b0:50d:7fe9:aa8a with SMTP id d75a77b69052e-50e36e9c3c8mr604759671cf.31.1777210228752;
        Sun, 26 Apr 2026 06:30:28 -0700 (PDT)
Date: Sun, 26 Apr 2026 10:30:27 -0300
From: Jason Gunthorpe <jgg@ziepe.ca>
To: "Tian, Kevin" <kevin.tian@intel.com>
Cc: Teddy Astie <teddy.astie@vates.tech>,
	"iommu@lists.linux.dev" <iommu@lists.linux.dev>,
	"linux-kernel@vger.kernel.org" <linux-kernel@vger.kernel.org>,
	Xen-devel <xen-devel@lists.xenproject.org>
Subject: Re: How to express "externally managed" IOMMU domains for
 VFIO/IOMMUFD ?
Message-ID: <20260426133027.GB3501894@ziepe.ca>
References: <1776873531.8631fc262581453bbf619ec5b2062170.19db5ea67ab000f373@vates.tech>
 <BN9PR11MB5276B3A829AD624A7E1AB4408C2A2@BN9PR11MB5276.namprd11.prod.outlook.com>
MIME-Version: 1.0
Content-Type: text/plain; charset=us-ascii
Content-Disposition: inline
In-Reply-To: <BN9PR11MB5276B3A829AD624A7E1AB4408C2A2@BN9PR11MB5276.namprd11.prod.outlook.com>
X-purgate-ID: tlsNG-16d1c6/1777210230-51F6BD75-66902853/0/0
X-purgate-type: clean
X-purgate-size: 970

On Thu, Apr 23, 2026 at 08:01:50AM +0000, Tian, Kevin wrote:
> > On Xen, we have a dedicated hypercalls for moving a device into another
> > guest (so it no longer belongs in Dom0, at far as DMA is concerned).
> > 
> > But it looks like there are no way to describe that idea of "attach that
> > device to this VM" nor "the device is in a VM"; which makes that
> > impracticable.
> > 
> > There may be things that could be done with the vIOMMU objects, but
> > there would be no "parent domain" in such case, as said earlier it
> > doesn't exist in the IOMMU subsystem.
> > 
> > What is expected to be done instead ?
> > 
> > Teddy
> > 
> > [1] https://www.youtube.com/watch?v=pLMGRgEJ-Eg
> > 
> 
> It'd be much easier to collect comments if you can put plain words
> to explain the problem rather than expecting other folks to watch
> the video first...

It sounds like CC and pkvm to me so I think it should re-use those
mechanisms..

Jason


From xen-devel-bounces@lists.xenproject.org Mon Apr 27 06:35:59 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 27 Apr 2026 06:35:59 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1294657.1571346 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wHFZ7-0002Bo-Sk; Mon, 27 Apr 2026 06:35:33 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1294657.1571346; Mon, 27 Apr 2026 06: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 1wHFZ7-0002Bf-Lv; Mon, 27 Apr 2026 06:35:33 +0000
Received: by outflank-mailman (input) for mailman id 1294657;
 Mon, 27 Apr 2026 06:35:32 +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 1wHFZ6-0002BZ-Cb
 for xen-devel@lists.xenproject.org; Mon, 27 Apr 2026 06:35:32 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wHFZ3-00Bgnm-Ph
 for xen-devel@lists.xenproject.org; Mon, 27 Apr 2026 08:35:31 +0200
Received: from [10.42.69.10] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <Michal.Orzel@amd.com>)
 id 69ef03b2-bab6-0a2a0a5309dd-0a2a450ad29e-8
 for <xen-devel@lists.xenproject.org>; Mon, 27 Apr 2026 08:35:30 +0200
Received: from [40.93.196.71]
 (helo=SA9PR02CU001.outbound.protection.outlook.com)
 by tlsNG-4011c0.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.1)
 (envelope-from <Michal.Orzel@amd.com>)
 id 69ef03b1-56b3-0a2a450a0019-285dc447f065-3
 for <xen-devel@lists.xenproject.org>; Mon, 27 Apr 2026 08:35:30 +0200
Received: from CH5P220CA0017.NAMP220.PROD.OUTLOOK.COM (2603:10b6:610:1ef::8)
 by DS0PR12MB6389.namprd12.prod.outlook.com (2603:10b6:8:cf::9) with Microsoft
 SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id
 15.20.9870.15; Mon, 27 Apr 2026 06:35:26 +0000
Received: from CH3PEPF00000010.namprd04.prod.outlook.com
 (2603:10b6:610:1ef:cafe::a7) by CH5P220CA0017.outlook.office365.com
 (2603:10b6:610:1ef::8) with Microsoft SMTP Server (version=TLS1_3,
 cipher=TLS_AES_256_GCM_SHA384) id 15.20.9846.26 via Frontend Transport; Mon,
 27 Apr 2026 06:35:26 +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.20.9846.18 via Frontend Transport; Mon, 27 Apr 2026 06:35:26 +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.17; Mon, 27 Apr
 2026 01:35:25 -0500
Received: from [10.252.145.116] (10.180.168.240) by satlexmb07.amd.com
 (10.181.42.216) with Microsoft SMTP Server id 15.2.2562.17 via Frontend
 Transport; Mon, 27 Apr 2026 01:35:24 -0500
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@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=nHQJKJRK38bd3GoHzcy7EiudUK3iRKyhdbX06ThD4KWKfoU2buD6FzPtD5zAYCNjrUvJ+Cl50Pf6wjyyRXuBfqnTJ5zAJIw1bTRLsfdaP8YOpPV9XvH4UPW/IwuYb8twZ4XHdkdmuI1XBrRbrOZPcnWMYFMhR61j7x4eDGZoQ+Xwf6rluhRnS7q+qXYwvZPblFq2a8ZPnwqEkTQEA4pW8RpYrpdocKrqkcEQCH2dwPON7FZutZ488vGSMnsOdwZY2yjJ/Wc5l4Mnr0pQs3bVYfE4k0Covbc/LRE9C4HhHNqk+79a1z7CdBtK9o2SAH/C1Y82d5VYv4wfW5oaJ+Tl4w==
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com;
 s=arcselector10001;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1;
 bh=OlKRmd4uD1saC1ljr9Cov/tFS8Xr3xnG7DKrbyM7Tos=;
 b=ebsDLxygCvCy+nXDIn0gtyyesEFnF8HTZg8q5c/J8V8xg8Cpn841P5smO0xfAu8GUyNEPCyiobBySBTp+nhVwJ8rwDJ9mmzdlDoVmjk/1aGDxtxmwVRnnJxtXaJGlKPD98IxMg+kdXselzw4gpZhNNnkNYEVbsz9zVhGUZst8sx5Qw8/UQ62gkgaolR1zHDJycOXjzrJwryjPgQPEbkzsuEw/oi9ryELrZouIRea4qbsFNWzNSPr7grtw/+BIEz7QT/0W8YB4aud3ZmqaNQ40AXkIO3/bL9pjsDLcudZywP5/10QdSeixhU0oOQrLrZcfLotk2atF+aCe7UC5eCrDQ==
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=OlKRmd4uD1saC1ljr9Cov/tFS8Xr3xnG7DKrbyM7Tos=;
 b=d0wiMv0PWtxhKMKxXQFrXhmATJkfUc7xr/nSIqzq7CTU0kXUI7OryTQcHAdfeLGYSh3D84bJ1lAq/ZZ2pXPsmA5xi2USrXIHNItk/Tt494iAEXKJLkk+CkzzwG46E9vuaqGbLn3VhqtTpl0d4TWHg30hPLYhixdQDhUasTS1pyA=
X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 165.204.84.17)
 smtp.mailfrom=amd.com; dkim=none (message not signed)
 header.d=none;dmarc=pass action=none header.from=amd.com;
Received-SPF: Pass (protection.outlook.com: domain of amd.com designates
 165.204.84.17 as permitted sender) receiver=protection.outlook.com;
 client-ip=165.204.84.17; helo=satlexmb07.amd.com; pr=C
Message-ID: <15fb589d-8dca-4aae-98a2-593afe3ea814@amd.com>
Date: Mon, 27 Apr 2026 08:35:23 +0200
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH v4 3/4] xen/drivers/char/cadence-uart: fix IRQ
 registration failure propagation
To: Oleksii Moisieiev <Oleksii_Moisieiev@epam.com>,
	"xen-devel@lists.xenproject.org" <xen-devel@lists.xenproject.org>
CC: Bertrand Marquis <bertrand.marquis@arm.com>, Julien Grall
	<julien@xen.org>, Stefano Stabellini <sstabellini@kernel.org>, Volodymyr
 Babchuk <Volodymyr_Babchuk@epam.com>, Oleksandr Tyshchenko
	<Oleksandr_Tyshchenko@epam.com>
References: <cover.1776960679.git.oleksii_moisieiev@epam.com>
 <da5af37c01b39495aac11da15325236904c77a5c.1776960679.git.oleksii_moisieiev@epam.com>
From: "Orzel, Michal" <michal.orzel@amd.com>
Content-Language: en-US
In-Reply-To: <da5af37c01b39495aac11da15325236904c77a5c.1776960679.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: CH3PEPF00000010:EE_|DS0PR12MB6389:EE_
X-MS-Office365-Filtering-Correlation-Id: e06fd66f-694b-4d0e-a2e3-08dea4272ac5
X-MS-Exchange-SenderADCheck: 1
X-MS-Exchange-AntiSpam-Relay: 0
X-Microsoft-Antispam:
	BCL:0;ARA:13230040|36860700016|376014|1800799024|82310400026|56012099003|18002099003|22082099003;
X-Microsoft-Antispam-Message-Info:
	FuuWCOjfNVoO1V1eaOjyC0qmkd5oKjQDMaLA0oUJua2RmERN8d7ETFOUAJCvIAlCbCaHJUYb1KyN2asKPkJwgrmJKiFVuIVvT26L+UrlBZG2kXWmxPGCThnUqJ/HKoLzy8jO7+sJhXflM4VByvLV8JU1+EAKfxabOg7jLDJUwK1i/tsdVKApM9z7r5zDz2BuRp0bDvJykz1k3Yx5Egnb7q+GTxH4BYhQbAFu1AO8z1Q9w+4SwaJGpzCSPQuV0zvYGahUo2iyeirpIA660q86KfrnhuLRdlnBTuT8znJTKlpz5NwbPaQZ7Rynp9XkgSt6IXcZUdKXEx7kLsoulwpaecjU7xCtTBVH3iOlWTLW4iXhUsPAS8FTDcnsoo5hLcVt1FUB9fP4t2aCHzAvUDPhfgDeo3/jaTryy3YuTVu0rD6sFLOLtX8ciY21t7l0wLxd2Np7MTnWNIOp9TXM+iYr/55C1vRQPdw5sPHvJ2qSPkZfHFcHR8D0Mn7Y1JAz6qjy/eYDAHPg3XMjHJHq/eD1WxYkriBqajjLGWxchjlwj3ObkybGTcp4N8bhSDeGjgZZNnd/FvDZQf3a5sD7Hg435Ks6dmDYzEYi+jyyKIGX7gN2gXLRIl3+/NRc89MMdlfSkgnq/KwW5TL8QMnNRhkLygpGCgP3TnoTEMNeuMCQB4VYryZQnhy5c4Mxya4C2m2qvICY7p9bvUeYE+bkOwrcyN0HH5cS027zqUtHb50/oG1rrDQ+OyT5tDaYoFl/LvCzlHoGrUaMEJd1bOAURCXp3Q==
X-Forefront-Antispam-Report:
	CIP:165.204.84.17;CTRY:US;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:satlexmb07.amd.com;PTR:InfoDomainNonexistent;CAT:NONE;SFS:(13230040)(36860700016)(376014)(1800799024)(82310400026)(56012099003)(18002099003)(22082099003);DIR:OUT;SFP:1101;
X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1
X-MS-Exchange-AntiSpam-MessageData-0:
	MZ5rVMV+DAOWUNb31miCAUBSn15zEWqT5Vy6bHRP0qaJWtBTAoiBPdmHD6YVlBACwABOJ7ZneESj3dD9stVIgLAY4fGRS54MVCwKF+jK5FEqsNdDkB6J3W/YLm9Pnd31N52nLdg/IrFF1ryX0rL3xvTTJ3oo4hounG0QFKqPm/vQ5hQB92piSehh2AzLDo9t3IKDPgdBUpxzUx7nSAz5CVK6Ap8Z/Mu+Q+O4X+9z4VNjsLw/w8spSIumUqfv2hfpa5kreSwzsyBblrx0h9eWFlgNJ0avbYuZSQQ88A7b2Kzv3zlYOCpqEHRhr17liCs6ptDCUT8tMMgM8af+wWfrIl1QTg3Mdzo1mJmwdZsGDGzf9jyhBWTtWs8j3YLjtMu1L8sftGYxJvLo++2Eb7RaZ3MKuhq3dpj8IrLVodCdOehGC1RAVJP2Ax1Wz2wSmJM0
X-OriginatorOrg: amd.com
X-MS-Exchange-CrossTenant-OriginalArrivalTime: 27 Apr 2026 06:35:26.0914
 (UTC)
X-MS-Exchange-CrossTenant-Network-Message-Id: e06fd66f-694b-4d0e-a2e3-08dea4272ac5
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: DS0PR12MB6389
X-purgate-ID: tlsNG-4011c0/1777271730-473738B7-F5ACFF84/0/0
X-purgate-type: clean
X-purgate-size: 1102



On 23-Apr-26 6:11 PM, Oleksii Moisieiev wrote:
> In cuart_init_postirq(), two code paths could reach the
> interrupt-enable write to IER without a handler being registered:
> 
> - When no valid IRQ number was provided (uart->irq <= 0), the original
>   positive-condition guard (if uart->irq > 0) skipped the irqaction
>   setup but still fell through to the IER write, enabling the receive
>   data interrupt with no handler installed.
> 
> - When setup_irq() returned an error, only an error message was
>   printed and execution continued to the IER write, arming the
>   receive hardware interrupt line with no handler to service it. On
>   platforms where the GIC receives this asserted line, the result is
>   either repeated spurious-interrupt warnings or an unhandled
>   interrupt fault.
> 
> Restructure cuart_init_postirq() to use early returns in both error
> paths.
> 
> Signed-off-by: Oleksii Moisieiev <oleksii_moisieiev@epam.com>
> Reviewed-by: Oleksandr Tyshchenko <oleksandr_tyshchenko@epam.com>
Reviewed-by: Michal Orzel <michal.orzel@amd.com>

~Michal



From xen-devel-bounces@lists.xenproject.org Mon Apr 27 06:51:17 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 27 Apr 2026 06:51:17 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1294667.1571355 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wHFo5-00050O-2P; Mon, 27 Apr 2026 06:51:01 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1294667.1571355; Mon, 27 Apr 2026 06:51: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 1wHFo4-00050G-Up; Mon, 27 Apr 2026 06:51:00 +0000
Received: by outflank-mailman (input) for mailman id 1294667;
 Mon, 27 Apr 2026 06:50:59 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92) id 1wHFo3-00050A-Qc
 for xen-devel@lists.xenproject.org; Mon, 27 Apr 2026 06:50:59 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wHFo2-00B80q-Nx
 for xen-devel@lists.xenproject.org; Mon, 27 Apr 2026 08:50:58 +0200
Received: from [10.42.69.10] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <Michal.Orzel@amd.com>)
 id 69ef074c-bab6-0a2a0a5309dd-0a2a450ab9c8-26
 for <xen-devel@lists.xenproject.org>; Mon, 27 Apr 2026 08:50:58 +0200
Received: from [52.101.57.64]
 (helo=BN8PR05CU002.outbound.protection.outlook.com)
 by tlsNG-4011c0.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.1)
 (envelope-from <Michal.Orzel@amd.com>)
 id 69ef0751-56b3-0a2a450a0019-346539407e7d-3
 for <xen-devel@lists.xenproject.org>; Mon, 27 Apr 2026 08:50:58 +0200
Received: from SJ0PR13CA0204.namprd13.prod.outlook.com (2603:10b6:a03:2c3::29)
 by BL1PR12MB5899.namprd12.prod.outlook.com (2603:10b6:208:397::19)
 with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9870.15; Mon, 27 Apr
 2026 06:50:53 +0000
Received: from MW1PEPF0001615D.namprd21.prod.outlook.com
 (2603:10b6:a03:2c3:cafe::8a) by SJ0PR13CA0204.outlook.office365.com
 (2603:10b6:a03:2c3::29) with Microsoft SMTP Server (version=TLS1_3,
 cipher=TLS_AES_256_GCM_SHA384) id 15.20.9846.26 via Frontend Transport; Mon,
 27 Apr 2026 06:50:52 +0000
Received: from satlexmb08.amd.com (165.204.84.17) by
 MW1PEPF0001615D.mail.protection.outlook.com (10.167.249.88) with Microsoft
 SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id
 15.20.9891.0 via Frontend Transport; Mon, 27 Apr 2026 06:50:52 +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.17; Mon, 27 Apr
 2026 01:50:51 -0500
Received: from [10.252.145.116] (10.180.168.240) by satlexmb08.amd.com
 (10.181.42.217) with Microsoft SMTP Server id 15.2.2562.17 via Frontend
 Transport; Mon, 27 Apr 2026 01:50:50 -0500
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@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=jmJWRaYDgIKpapCV5YIkdO7rIXuOi+LoIqJEgZ8P55NgFVRXwi0xeewHG77As/Efajdo7dR44hl80M7tt+omvCBM8YUWe7p3AneD4vj/SH7kvf+Xr4fnBHhJp7KEygOGQ3st9nPuiwx5Mmff2b4BS5JK9X48uuHBgTTYCXwZHlyoB/2vu4nOiidIu/WOlHpSpGa0O9/80Cou8h0ADajhX3/zSXbneQEg1B4uVihEiDN32tNJpszfz/lJBRUxCougHI5+PqpePGn2xEQF+ALOY8KDV3sPS6j1uv1QGSRAbRTDSXURDRtNnMcNmy9JIb3toX3ytRl9xioeFXKYT3ZVkw==
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com;
 s=arcselector10001;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1;
 bh=8pPvlkweU++pWabgv3FT1G1/MZ19OtebLT4SE6Wn7og=;
 b=JzeyAQPIFs3zruxG4vq60HTQkqVcxRVM5k2k3nGjg22fC6jGbTbG397I1ouqtOWEVCTP0NSrEs8hk5Ch6ltCt+WCr7zb7AlqrGfFPehGLsj0QCuk0deIWWJfI7AuK+3O5FSqo6ZKOVjM+cK7p2cyngBKPOwywyRx9Nv0EqKMoHiADZFmhtx4A0XUTQ01IttpW2OPIKCm7Nd9zRsrmUzF0q0KfbseYS3oN+++Fa9SyHclR4vKrjq0ewVFtqFpCbDdBk5RhvXeQ0QoJS6ASqNQExfsQWS/T6yL3B+epm/AJknDgJPx0aH41luZLVIOMzW++v5DsvK5gu4vK3vv3AkqNg==
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=8pPvlkweU++pWabgv3FT1G1/MZ19OtebLT4SE6Wn7og=;
 b=cklUNgIiAXqvqj/tMrFYDnNQKlQaK+v/yIbV7un95iJp5VKzwo5+H0qF6dhjcBWsDDK2ShK1GlJ4w3335zCYP0McBw7uLoz5wYu5PgsnHoigtv/C5UPyQLo09hBldxYMn+85hqPkG+GsafS+3j1smbMjuU1TFHx+B0SFBckBixY=
X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 165.204.84.17)
 smtp.mailfrom=amd.com; dkim=none (message not signed)
 header.d=none;dmarc=pass action=none header.from=amd.com;
Received-SPF: Pass (protection.outlook.com: domain of amd.com designates
 165.204.84.17 as permitted sender) receiver=protection.outlook.com;
 client-ip=165.204.84.17; helo=satlexmb08.amd.com; pr=C
Message-ID: <b1846d5a-f9c5-412d-b996-86c4c29096e6@amd.com>
Date: Mon, 27 Apr 2026 08:50:49 +0200
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH v3 1/3] xen/dom0less: introduce next_phandle in struct
 kernel_info
To: Oleksii Kurochko <oleksii.kurochko@gmail.com>,
	<xen-devel@lists.xenproject.org>
CC: Romain Caritey <Romain.Caritey@microchip.com>, Stefano Stabellini
	<sstabellini@kernel.org>, Julien Grall <julien@xen.org>, Bertrand Marquis
	<bertrand.marquis@arm.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.pau@citrix.com>
References: <cover.1776957840.git.oleksii.kurochko@gmail.com>
 <5e3ffb41fab84b5f1b59ea81e6d267def89e2d65.1776957840.git.oleksii.kurochko@gmail.com>
From: "Orzel, Michal" <michal.orzel@amd.com>
Content-Language: pl
In-Reply-To: <5e3ffb41fab84b5f1b59ea81e6d267def89e2d65.1776957840.git.oleksii.kurochko@gmail.com>
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: 7bit
X-EOPAttributedMessage: 0
X-MS-PublicTrafficType: Email
X-MS-TrafficTypeDiagnostic: MW1PEPF0001615D:EE_|BL1PR12MB5899:EE_
X-MS-Office365-Filtering-Correlation-Id: bcc9954f-8555-42de-21b7-08dea42952f0
X-MS-Exchange-SenderADCheck: 1
X-MS-Exchange-AntiSpam-Relay: 0
X-Microsoft-Antispam:
	BCL:0;ARA:13230040|36860700016|82310400026|7416014|376014|1800799024|56012099003|22082099003|18002099003;
X-Microsoft-Antispam-Message-Info:
	rIZvoXpO/SUoxPjX6kTuLXi382ROs4vRVJoxQ/Wb99JF/FqWatsB7fyUOxoQ4ro23UggBIv/tsIxn94kGSNRy1e+K5NSkiN1NiPZwhoAk9Qj3vH5mWFcyh3iZCIzMv8EBPegJ8EGaqmuTkhvGmJAPWmncEn45FX7ZJYfLDDG+7WLy5ydkPEVUsGnSW+5AdVeHSATt1XC4kERnFkaZ2781T+/Lv+UCa3NoLfvH42Ns/BBZ5bq63E1Q+3nMJg65nao2Ze6lQ5JmwciKmVKmpeuUU0LtzUMYy95UfmAIvOGZ63VIcip/7bo2OU4BDciaOKQnWV3cwVU0vffNcqZ/8upX6ejWKffgKy6V2abAZ634Pwfaq1fIc4I3WzUUc0eeX+rSctIyA4iPIy1WH7MTAIIu+anKMz6C5rgrTcdKK8HFYGannfMuUWg0PdDfWipZVOgF2cJgXyMjs0btr90TfKtSMGs2UNnOb2gbBQ+MCE5kGV3X0ccMhVAsir1u++FBy4QKBE8gQtvdKE330EjkwWxcHAskI6CvsOYLor0BVdWfLXsj+gb81M2DUCO2/FjgIpPndUnX7Wo95s6tecHaZtxfGhtK/irBVP+iGgoV9X/MsCOabrcdUXNsx+gBrc/Cj5wntXgxfAiRnE3RsCBLibl5HFmJq9/S1Qjc7+ikaxhWeCv17egsUUH37hh7A7zrCpqCEG/TxJQ+9fCxTTyUgJ5IUU+AwylnTDmOQ8BK7iThbKnkZckmwi5VvMnFCK5utl2eIp7UsHiXabVGD1YCp1vWg==
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)(7416014)(376014)(1800799024)(56012099003)(22082099003)(18002099003);DIR:OUT;SFP:1101;
X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1
X-MS-Exchange-AntiSpam-MessageData-0:
	S2pvlNU7yyDpwfhHwQmnM1gH76dGsrMeh3FKdhC1Bl8LmyxqWVhzzGT1QOMv4Of1ETSNjqTWg4YAfbN0MHhkeB6mZj4ML1Jfg2dPYbyokvO1FhpXuZ0p/Mq8tvzJ15ATEjIFOWNGRCftxGpSDPf+YiZpYsKc3x8srbXrvCfcoWvnaRT3JVTc7iWvET4O3BkzSUPQD1k1hh1KvTr9rvZUsvYPd7+NNpmAcK6Xf9VU2KDO9zWbQIXD5KZ5gg7puxuGcndgvkOMsDfyzynB3mWySzW/OhoqhAdxbm/+ai0yazQCnDNYkN7yNgbj3pmRfagO3L4mK/YcjI8mm2EPxyyH5FSPvIoL4suwMiYUZslBRWl1Dz6ZKHr5CU4bdxwlEK6VAFk1W07SSHrEfYwN3oozqMPLVeuEXbUtS/rhzHOHooVvwZnQfGJLwomOcVpaY//l
X-OriginatorOrg: amd.com
X-MS-Exchange-CrossTenant-OriginalArrivalTime: 27 Apr 2026 06:50:52.3932
 (UTC)
X-MS-Exchange-CrossTenant-Network-Message-Id: bcc9954f-8555-42de-21b7-08dea42952f0
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:
	MW1PEPF0001615D.namprd21.prod.outlook.com
X-MS-Exchange-CrossTenant-AuthAs: Anonymous
X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem
X-MS-Exchange-Transport-CrossTenantHeadersStamped: BL1PR12MB5899
X-purgate-ID: tlsNG-4011c0/1777272658-8047C8B7-B2A4323A/10/73395122804
X-purgate-type: spam
X-purgate-size: 1212



On 24-Apr-26 3:36 PM, Oleksii Kurochko wrote:
> There are cases where it is necessary to know the next available phandle
> number in order to generate phandles for guest device nodes.
> 
> When a partial FDT (pfdt) is provided, special care is needed during
> initialization of next_phandle, as the pfdt may already contain a dummy
> interrupt controller node with a phandle assigned to it. next_phandle
> must therefore be initialized to one past the highest phandle already
> present in the pfdt, to avoid collisions.
> 
> Since next_phandle may be needed for the very first guest node generated,
> domain_handle_dtb_boot_module() is moved earlier in prepare_dtb_domU().
> The new call site also aligns better with the existing comment stating
> that domain_handle_dtb_boot_module() must be called before the rest of
> the device tree is generated.
> 
> Introduce alloc_phandle() to ensure that phandles allocated for guest
> nodes do not overlap the Xen-reserved phandle range.  This helper will
> be used by subsequent patches (by RISC-V at the moment).
> 
> Signed-off-by: Oleksii Kurochko <oleksii.kurochko@gmail.com>
Reviewed-by: Michal Orzel <michal.orzel@amd.com>

~Michal



From xen-devel-bounces@lists.xenproject.org Mon Apr 27 08:20:38 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 27 Apr 2026 08:20:38 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1294691.1571380 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wHHCZ-0008G1-S3; Mon, 27 Apr 2026 08:20:23 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1294691.1571380; Mon, 27 Apr 2026 08:20: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 1wHHCZ-0008Ft-Mu; Mon, 27 Apr 2026 08:20:23 +0000
Received: by outflank-mailman (input) for mailman id 1294691;
 Mon, 27 Apr 2026 08:20:22 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <Bertrand.Marquis@arm.com>) id 1wHHCY-0008Fm-By
 for xen-devel@lists.xenproject.org; Mon, 27 Apr 2026 08:20:22 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wHHCX-007bnY-74
 for xen-devel@lists.xenproject.org; Mon, 27 Apr 2026 10:20:21 +0200
Received: from [10.42.69.2] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <Bertrand.Marquis@arm.com>)
 id 69ef1c44-bab6-0a2a0a5309dd-0a2a4502cec0-0
 for <xen-devel@lists.xenproject.org>; Mon, 27 Apr 2026 10:20:20 +0200
Received: from [40.107.159.15]
 (helo=OSPPR02CU001.outbound.protection.outlook.com)
 by tlsNG-720697.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.1)
 (envelope-from <Bertrand.Marquis@arm.com>)
 id 69ef1c44-af86-0a2a45020019-286b9f0f56fe-3
 for <xen-devel@lists.xenproject.org>; Mon, 27 Apr 2026 10:20:20 +0200
Received: from AS4P191CA0016.EURP191.PROD.OUTLOOK.COM (2603:10a6:20b:5d9::11)
 by FRZPR08MB11925.eurprd08.prod.outlook.com (2603:10a6:d10:1ca::24)
 with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9846.26; Mon, 27 Apr
 2026 08:20:16 +0000
Received: from AMS0EPF000001A5.eurprd05.prod.outlook.com
 (2603:10a6:20b:5d9:cafe::17) by AS4P191CA0016.outlook.office365.com
 (2603:10a6:20b:5d9::11) with Microsoft SMTP Server (version=TLS1_3,
 cipher=TLS_AES_256_GCM_SHA384) id 15.20.9846.26 via Frontend Transport; Mon,
 27 Apr 2026 08:20:16 +0000
Received: from outbound-uk1.az.dlp.m.darktrace.com (4.158.2.129) by
 AMS0EPF000001A5.mail.protection.outlook.com (10.167.16.232) with Microsoft
 SMTP Server (version=TLS1_3, cipher=TLS_AES_256_GCM_SHA384) id 15.20.9846.18
 via Frontend Transport; Mon, 27 Apr 2026 08:20:16 +0000
Received: from PR3PR08MB5593.eurprd08.prod.outlook.com (2603:10a6:102:84::13)
 by DB3PR08MB8938.eurprd08.prod.outlook.com (2603:10a6:10:43f::11)
 with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9846.26; Mon, 27 Apr
 2026 08:19:12 +0000
Received: from PR3PR08MB5593.eurprd08.prod.outlook.com
 ([fe80::aae1:6871:afc4:620e]) by PR3PR08MB5593.eurprd08.prod.outlook.com
 ([fe80::aae1:6871:afc4:620e%5]) with mapi id 15.20.9818.023; Mon, 27 Apr 2026
 08: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=arm.com header.i="@arm.com" header.h="From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck"; dkim=pass header.s=selector1 header.d=arm.com header.i="@arm.com" header.h="From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck"
ARC-Seal: i=2; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=pass;
 b=ET8rgDXXvf0/qN4Gc+VN3bwtwHxqBwM+p8IF6RWVH1m7nvYKBrCdSvkCbAiEg3JWiew5AuJdyyKB5sZPxAbtZsFOFXwgYD8tIeExBoc8nZZe0Nhb4Sv2pFa5WZHTlF+pfr0WKeQTj0KoAYo0KgtjKwPMo6vP5hMgioMHj6IxfqoW/BGGl4rUhO7M9Ny1DY38g/cGAxittqVezSFu+c8zU3pExWvBt8DYwY1DgGK5rZcwFlM0wkPIOOI8yF5Gt5D47QCSewNHjBvRgvI5z3T9axBIaJN+Acvfbp8ijBzkQpZuiVgZsbrbWfmin8/gZtC6poAmHdsSp7i4OWK1US/I7Q==
ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com;
 s=arcselector10001;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1;
 bh=vFXEgwJbXYOgjdf8Mo6Sab4nd2d9bIKymYBPd6sxkRQ=;
 b=pbSjodl+SQeuY/bymobrKVpxMI0Imy41oJh7YtEPsXC3Ztx/aXPm55OrsPzU9Qox83st67yT6jnPuvEOv1Bj+f3hMW1eaxMvHSAjrfKTJXMiLMyzDthCLOCiH7QUxoo1XsMHNCvjsfaIR2gHEcrlkcvkCAKCoZ0rc+7t3leOvOGsEXJ7dPZS2YjwGKZ0rlhYewT1WepVPzA49WixjEBKBXT7dv7/5zruHEvzwt4qhscArtUubgkHmzi/2uEd+EHyJcBIy7VsvHjFBBzZHF2TdfzBAl6U5W32Xk1HkyPE/xwVtN7nV6eAtDNVuyDV+lZIsFpV/whQiBffvY5znA5ZIA==
ARC-Authentication-Results: i=2; mx.microsoft.com 1; spf=pass (sender ip is
 4.158.2.129) smtp.rcpttodomain=gmail.com smtp.mailfrom=arm.com; dmarc=pass
 (p=none sp=none pct=100) action=none header.from=arm.com; dkim=pass
 (signature was verified) header.d=arm.com; arc=pass (0 oda=1 ltdi=1
 spf=[1,1,smtp.mailfrom=arm.com] dkim=[1,1,header.d=arm.com]
 dmarc=[1,1,header.from=arm.com])
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=arm.com; s=selector1;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck;
 bh=vFXEgwJbXYOgjdf8Mo6Sab4nd2d9bIKymYBPd6sxkRQ=;
 b=CFeSTZjIYMEm38gO/TNk6Ao7VpSQ6begIZikECvxeMTBS2X8aLUPZnJYk+6sm5Nkycpwlr/SYK1mRyTbzTrDMSSkTBvFq6HeVDIT8UuSbWEkNqKICYqKoVllYFyc9AH0eAOwaUEd8CFamVW1XQB95fG6R43vcSAW+voSGQXpy3o=
X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 4.158.2.129)
 smtp.mailfrom=arm.com; dkim=pass (signature was verified)
 header.d=arm.com;dmarc=pass action=none header.from=arm.com;
Received-SPF: Pass (protection.outlook.com: domain of arm.com designates
 4.158.2.129 as permitted sender) receiver=protection.outlook.com;
 client-ip=4.158.2.129; helo=outbound-uk1.az.dlp.m.darktrace.com; pr=C
ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none;
 b=lj3BKDmX/GxDuGRtSnAzZ6GiRQxRjN2AGHYGqpvRGXplOA0K89V9DSK4mK2cZ8b3OIlZpeyiCCShgGmkfbe9nIgamq7XOkvlnwUE0O7TTxmzPqywlCYHxAXixbi4QjWB+aLOaw9ihT5QDY40t2brcvKLv2pPyLWzV+8BqRjN9jGZFLntTdVISgO9nBrqtOnypOwmP6AqxL47oCJByVCxDvLLyAW21gTgi1WuP9PTMr4Toz2xAigEn5bMh64mur709bMg4HPnQJg4i6BMO+63Wipj0uibB++Nwct9jIqcjn+vBEFuhNDDKyYEcIUxAKb/PFeqFAzCaBxq7nDpS6DzJQ==
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com;
 s=arcselector10001;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1;
 bh=vFXEgwJbXYOgjdf8Mo6Sab4nd2d9bIKymYBPd6sxkRQ=;
 b=QDmNQWblquYbOu/V4xpvPhmbXiwQW9w+6IcLBFN4GrAIAsaL7z0fimhio+jfcEEOcqdOflGCipawfCifEJ/LOF15LP9taijNAjXMo1AwzjBhg9hQ6cnixUhV7PD/xqdv1wIR9+KWV8Q+LSLgfVdtnCsSj6DTL6yAUvo3cXFLILdAAgpHF2Svg6OE9a6caxghm6qlRtylOHI889kuVoJdcmZ76iDYKPyDxqyI/VN0489YD+S0Y5jPS+Ej9R7W3SwS1fN8Ln4ahNxIf80O9TfRieQtYgINhS90k+ifXiiDdFBRCRFWZfz6CMU48oQ12uHQ7sPDWTLQKHJdfVL65MRBlg==
ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass
 smtp.mailfrom=arm.com; dmarc=pass action=none header.from=arm.com; dkim=pass
 header.d=arm.com; arc=none
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=arm.com; s=selector1;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck;
 bh=vFXEgwJbXYOgjdf8Mo6Sab4nd2d9bIKymYBPd6sxkRQ=;
 b=CFeSTZjIYMEm38gO/TNk6Ao7VpSQ6begIZikECvxeMTBS2X8aLUPZnJYk+6sm5Nkycpwlr/SYK1mRyTbzTrDMSSkTBvFq6HeVDIT8UuSbWEkNqKICYqKoVllYFyc9AH0eAOwaUEd8CFamVW1XQB95fG6R43vcSAW+voSGQXpy3o=
From: Bertrand Marquis <Bertrand.Marquis@arm.com>
To: Mykola Kvach <xakep.amatop@gmail.com>
CC: "xen-devel@lists.xenproject.org" <xen-devel@lists.xenproject.org>, Mykola
 Kvach <mykola_kvach@epam.com>, Volodymyr Babchuk
	<volodymyr_babchuk@epam.com>, Jens Wiklander <jens.wiklander@linaro.org>,
	Stefano Stabellini <sstabellini@kernel.org>, Julien Grall <julien@xen.org>,
	Michal Orzel <michal.orzel@amd.com>
Subject: Re: [PATCH v8 06/13] xen/arm: tee: keep init_tee_secondary() for
 hotplug and resume
Thread-Topic: [PATCH v8 06/13] xen/arm: tee: keep init_tee_secondary() for
 hotplug and resume
Thread-Index: AQHcwo4fuKBruO1pu0mbPZdZpnwt6LXyt+WA
Date: Mon, 27 Apr 2026 08:19:11 +0000
Message-ID: <E02B689E-E2CA-47AB-85EC-B8C0EB2028D6@arm.com>
References: <cover.1775125380.git.mykola_kvach@epam.com>
 <666917e8e8e435640c272c19908f412c315b2dc6.1775125380.git.mykola_kvach@epam.com>
In-Reply-To:
 <666917e8e8e435640c272c19908f412c315b2dc6.1775125380.git.mykola_kvach@epam.com>
Accept-Language: en-GB, en-US
Content-Language: en-US
X-MS-Has-Attach:
X-MS-TNEF-Correlator:
x-mailer: Apple Mail (2.3864.500.181)
Authentication-Results-Original: dkim=none (message not signed)
 header.d=none;dmarc=none action=none header.from=arm.com;
x-ms-traffictypediagnostic:
	PR3PR08MB5593:EE_|DB3PR08MB8938:EE_|AMS0EPF000001A5:EE_|FRZPR08MB11925:EE_
X-MS-Office365-Filtering-Correlation-Id: 0114b0cc-1af8-4af8-07ec-08dea435cfff
x-checkrecipientrouted: true
nodisclaimer: true
X-MS-Exchange-SenderADCheck: 1
X-MS-Exchange-AntiSpam-Relay: 0
X-Microsoft-Antispam-Untrusted:
 BCL:0;ARA:13230040|376014|366016|1800799024|38070700021|22082099003|18002099003|56012099003;
X-Microsoft-Antispam-Message-Info-Original:
 BVKWvrtgG4U97nO3K3WENfZq5zc9fIGW/DwzytLh13YYPhWSVw4k5PaBH9l9JF7ac8jOO/fTUb2f21XUmOuN6DcbPLz7Nth+iFkOgDM/qSkvxz1/E/ZrAqn5A/vnPQO3xqNypsrKjdBEVCJR5zlZk3d/e7J/kYCKlYWy4i8Ka4bYtgMgU5NAoHSVwdDa1+ndDjPx8DgLTFmqH43c/XTkxMbiBDdtUH43dtOJseUumG9HUYRP+QIcm64vzcr7cq0xIFO2KNBETtRy6g7P+EdlP6D9vlMk6Uxwi/c63MThfCRWGnMHsocqzVBFDtDNd8R6WttnvqGkKMx+a1lVUiJvc2Q45uNcYg1tzTkyz7FjPinjpSMNH6anra3Qjt+RDlk5MZL8LA566dMlTtDPc+PK8nkEuud6jCDQd6aXQ//5c1G5Jq3l5bfhoZo/Fbj6xU/3AUxI3qTmtsRYIdXkamNE2V75lOacZvjHPrydnETA4WKODl96W4+/P8JsPr04YF5orYf5BoFmofBBb2kC9aPY8CkWaIchRDBpmlYlsktC63PLAvvNh1KYYqWNKzY9ZiWIHqRvnTK/ScBfguxPOlwdy2LdGmeLs6aSLZZv5BabeCV1FByCz1DC+1e8Ba6RbftnCi8I7/gYjNUGJM+Z/hU3JbqZ7Mo4I7oQP5RjguCcawLt/HUqfT1YypSl4u6qRNrdV2IoOUxQmtrkKeReWL29rgkMUSpEZhbOpEQfyIkrFhIr8RqVd2ZksotUwfintHVTI/FCxsqdb59No23uVtXFJT5rVVu1maFtO6DTl0LAgtQ=
X-Forefront-Antispam-Report-Untrusted:
 CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:PR3PR08MB5593.eurprd08.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(376014)(366016)(1800799024)(38070700021)(22082099003)(18002099003)(56012099003);DIR:OUT;SFP:1101;
Content-Type: text/plain; charset="us-ascii"
Content-ID: <DB70685F2B88024E950737BEB4C3B5FF@eurprd08.prod.outlook.com>
Content-Transfer-Encoding: quoted-printable
MIME-Version: 1.0
X-Exchange-RoutingPolicyChecked:
 eFEfDr8flF3HOmw8HsFk8iai0rhOAfBDu7fumFryFNn+oCXb8x4NLtCqKPuyexMTrbJdhk2lmL/QQLWHtZFTZUblumnB+d0aclQc+xn/id9kIHXJv3WvkFBcUXWZ4OKYMVW6Qn6O33xx9tN+cndRrmHTb5dbRkICOon+M0ZSv9i8l0Aavy5QxAUBFWboiB5T70YlBQblKZdQiNWa572LdGUZgKuatR6FlNUUg9EyBtpBvS505n02Om1PaXCj04Tv0/bmmX/nu44Lufu7x9XzLaikUwilr2lHXP/O0Ao7vERJh7TeeSUaUDI2UFo+2K3ORPmNXIfp0MDm8cKpA23jMQ==
X-MS-Exchange-Transport-CrossTenantHeadersStamped: DB3PR08MB8938
X-EOPAttributedMessage: 0
X-MS-Exchange-Transport-CrossTenantHeadersStripped:
 AMS0EPF000001A5.eurprd05.prod.outlook.com
X-MS-PublicTrafficType: Email
X-MS-Office365-Filtering-Correlation-Id-Prvs:
	11859b05-83e6-4fc2-5ae7-08dea435a99d
X-Microsoft-Antispam:
	BCL:0;ARA:13230040|376014|35042699022|14060799003|36860700016|1800799024|82310400026|22082099003|18002099003|56012099003;
X-Microsoft-Antispam-Message-Info:
	ZuQZuucvAd+KUbyedDcSM+TcXJg0iwgT3621KzedpsGth8OpRoe5rxtcWTPBezCHDFyxFs6m3JFiX+nriOEKi7pY4Ul3dTXDJdeDDUmzzVUuud3B7tkFnzcChV5MdPsR7wWFHGqtNNwfUSW6QTD6ougsbar5AzKajEZaIcLcRbFQroJKn4axSbC3lA6b0gpASfZBSp1KSuo5Zg0dG5X47MfS7I+fYaIHi3y+MBGq60cKzYevdwhGDeTkYhwrBte0pQsV2O9WZdHjvR57dCaxbfAPoiDCmpjP3jee/T+x4uGPB0ayJKbZpnv3QGmhxPjgtU73WzN0WxafQnf5v1r+ZrpRQ0dQtuAKzCtES9tDpKWrdUVi50rbIsDqbviMMZz0woBug59QoDgIDg8wEQkyUDf49suc+G4wxWP0rNkwNiKpoKWbiox/+aAfxoHBKZGWzo2PnF/ze/t9gqdmVNw+H/mUWfywPdewDnsdYA02KrGrMRX4LMIQr1IyytbhJRnlW0vHEGK6Lg22zyUGSvZQY/1pMHCl+erIgh1VcYr+VY44NYAuTT+Wy7kqqwzmDU42QOHMBCiQp8o6fWATwa/IkhEbyd2cEcg3SJGCxKk+rRf9tm3pVY5dloBfZx66aQyVN1JCHvUxqvjmwe5IDAayI8UIiZYCDOSe0h68iTXYgQjaLgc53Zt/HE81uPd/YiPxJuo2tB2l4ZUUIozXUuVL3IAGugyPEafCNdJ4rrcaS0plJ8jpBNvnutaswhIwSxcR5hpvCdTpGSdCgZQOMEEElw==
X-Forefront-Antispam-Report:
	CIP:4.158.2.129;CTRY:GB;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:outbound-uk1.az.dlp.m.darktrace.com;PTR:InfoDomainNonexistent;CAT:NONE;SFS:(13230040)(376014)(35042699022)(14060799003)(36860700016)(1800799024)(82310400026)(22082099003)(18002099003)(56012099003);DIR:OUT;SFP:1101;
X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1
X-MS-Exchange-AntiSpam-MessageData-0:
	EAS/lDF4dA3JhuEufD3uxWrhgqbQALUQi62tw3zU24/wz4EAM/turOqZABjla3Je0W/vu0VpglPq6sJRnmVG0j1jyVDx+G+651dXpcKiiDEwYVcigTavTVbjd067AwkxFrZJ3x6K3NsIqhRkneIPUkaYv+arhslr++omtQFnmEUdnkmZxRP+xrbK/fCgqTEv4MwZjbz1EoLWVMzVQAjcbPhGsGxQ0kzmasMqJHqj1NxMRwDUkcwfkNdOz2tvRlxCW2usNIOuMp2/SC8pGhBfG03nt5XDXyXjYtxzx0lk+pjbiDZUioEFC9LzJmnG0GLYJ8HxiJ0ueYM3DN0m8F/iW2CktPj8NUrJVvzTVnTsNJI0wwoP8XsGIY8iAiEY33x8m4F4LtlSUoWqj4fwoyhANkyjiCc9LnqaorL/2MyPs+9xZpI+QLM/OOS3QjjR8PPz
X-OriginatorOrg: arm.com
X-MS-Exchange-CrossTenant-OriginalArrivalTime: 27 Apr 2026 08:20:16.1808
 (UTC)
X-MS-Exchange-CrossTenant-Network-Message-Id: 0114b0cc-1af8-4af8-07ec-08dea435cfff
X-MS-Exchange-CrossTenant-Id: f34e5979-57d9-4aaa-ad4d-b122a662184d
X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=f34e5979-57d9-4aaa-ad4d-b122a662184d;Ip=[4.158.2.129];Helo=[outbound-uk1.az.dlp.m.darktrace.com]
X-MS-Exchange-CrossTenant-AuthSource:
	AMS0EPF000001A5.eurprd05.prod.outlook.com
X-MS-Exchange-CrossTenant-AuthAs: Anonymous
X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem
X-MS-Exchange-Transport-CrossTenantHeadersStamped: FRZPR08MB11925
X-purgate-ID: tlsNG-720697/1777278020-B3B60161-55A93EFD/0/0
X-purgate-type: clean
X-purgate-size: 1131

Hi Mykola,

> On 2 Apr 2026, at 12:45, Mykola Kvach <xakep.amatop@gmail.com> wrote:
>=20
> From: Mykola Kvach <mykola_kvach@epam.com>
>=20
> init_tee_secondary() was marked __init and freed after boot. Calling it
> from the CPU hotplug/resume path then executed discarded code, which
> could crash Xen. Drop __init so the TEE mediator secondary init can run
> safely on hotplugged and resumed CPUs.
>=20
> Signed-off-by: Mykola Kvach <mykola_kvach@epam.com>
Reviewed-by: Bertrand Marquis <bertrand.marquis@arm.com>

Cheers
Bertrand


> ---
> xen/arch/arm/tee/tee.c | 2 +-
> 1 file changed, 1 insertion(+), 1 deletion(-)
>=20
> diff --git a/xen/arch/arm/tee/tee.c b/xen/arch/arm/tee/tee.c
> index 8501443c8e..00e561fc78 100644
> --- a/xen/arch/arm/tee/tee.c
> +++ b/xen/arch/arm/tee/tee.c
> @@ -128,7 +128,7 @@ static int __init tee_init(void)
>=20
> presmp_initcall(tee_init);
>=20
> -void __init init_tee_secondary(void)
> +void init_tee_secondary(void)
> {
>     if ( cur_mediator && cur_mediator->ops->init_secondary )
>         cur_mediator->ops->init_secondary();
> --=20
> 2.43.0
>=20



From xen-devel-bounces@lists.xenproject.org Mon Apr 27 08:22:07 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 27 Apr 2026 08:22:07 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1294704.1571392 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wHHED-0000Nb-93; Mon, 27 Apr 2026 08:22:05 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1294704.1571392; Mon, 27 Apr 2026 08:22: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 1wHHED-0000NU-6Q; Mon, 27 Apr 2026 08:22:05 +0000
Received: by outflank-mailman (input) for mailman id 1294704;
 Mon, 27 Apr 2026 08:22:04 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <Bertrand.Marquis@arm.com>) id 1wHHEB-0000NG-W2
 for xen-devel@lists.xenproject.org; Mon, 27 Apr 2026 08:22:04 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wHHEB-00CoOQ-CX
 for xen-devel@lists.xenproject.org; Mon, 27 Apr 2026 10:22:03 +0200
Received: from [10.42.69.10] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <Bertrand.Marquis@arm.com>)
 id 69ef1ca7-5cb7-0a2a0a5109dd-0a2a450aedf2-10
 for <xen-devel@lists.xenproject.org>; Mon, 27 Apr 2026 10:22:03 +0200
Received: from [52.101.84.57]
 (helo=DB3PR0202CU003.outbound.protection.outlook.com)
 by tlsNG-4011c0.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.1)
 (envelope-from <Bertrand.Marquis@arm.com>)
 id 69ef1ca9-56b3-0a2a450a0019-346554399340-3
 for <xen-devel@lists.xenproject.org>; Mon, 27 Apr 2026 10:22:02 +0200
Received: from AS4P192CA0004.EURP192.PROD.OUTLOOK.COM (2603:10a6:20b:5da::12)
 by AM9PR08MB6209.eurprd08.prod.outlook.com (2603:10a6:20b:283::9)
 with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9846.26; Mon, 27 Apr
 2026 08:21:58 +0000
Received: from DB5PEPF00014B93.eurprd02.prod.outlook.com
 (2603:10a6:20b:5da:cafe::be) by AS4P192CA0004.outlook.office365.com
 (2603:10a6:20b:5da::12) with Microsoft SMTP Server (version=TLS1_3,
 cipher=TLS_AES_256_GCM_SHA384) id 15.20.9846.26 via Frontend Transport; Mon,
 27 Apr 2026 08:21:58 +0000
Received: from outbound-uk1.az.dlp.m.darktrace.com (4.158.2.129) by
 DB5PEPF00014B93.mail.protection.outlook.com (10.167.8.231) with Microsoft
 SMTP Server (version=TLS1_3, cipher=TLS_AES_256_GCM_SHA384) id 15.20.9846.18
 via Frontend Transport; Mon, 27 Apr 2026 08:21:57 +0000
Received: from PR3PR08MB5593.eurprd08.prod.outlook.com (2603:10a6:102:84::13)
 by DB3PR08MB8938.eurprd08.prod.outlook.com (2603:10a6:10:43f::11)
 with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9846.26; Mon, 27 Apr
 2026 08:20:53 +0000
Received: from PR3PR08MB5593.eurprd08.prod.outlook.com
 ([fe80::aae1:6871:afc4:620e]) by PR3PR08MB5593.eurprd08.prod.outlook.com
 ([fe80::aae1:6871:afc4:620e%5]) with mapi id 15.20.9818.023; Mon, 27 Apr 2026
 08: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>
Authentication-Results: eu.smtp.expurgate.cloud; dkim=pass header.s=selector1 header.d=arm.com header.i="@arm.com" header.h="From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck"; dkim=pass header.s=selector1 header.d=arm.com header.i="@arm.com" header.h="From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck"
ARC-Seal: i=2; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=pass;
 b=Ban5M/CvdRWQOfyYs0fgpBKYIt/UzoEyeMOkkiHmQ1HwAHj64uVP/ITLBehntABl8ZTmbY0LO3hQedTBhezkr28WvJBYTTLq8faFw4wlfAKR/5lbV/smX/heo/KV3L2ICdYQgOIpBT7pjo4/eShQJ51EHWwrFRyK2uHiVoNR9jzB5V6WTw6ZePeUYhBDUrbg3L+y7Uly5Qj4JhPhNDe424p/9Za4JpDbFYafqIQRnJneRBRSK/kQtP8UX0Xh4IRHpyqnqlpxUkzTxTueBW2I00rXIto1wKyKDjXFh1hDbLat0MAvLMu+bm9Jg64Xq04eFoSYyOyWSwV1OOJwsWuhYw==
ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com;
 s=arcselector10001;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1;
 bh=zCNkNqsMqJk6cgMVRtnwyoi0rKOTto9ucmjvwaDAVQM=;
 b=uUjiMiWHPwWMfu+PwntiHuibuPgkDixttQbXQIi45M4dWRxPMUJ27KS+5UjVGRodEWWkmxIkS0EoAXQKGuCd6YIr1grTW1KskqFx6g6qM/vEkGxYiArkSKhC+UHEY2yefIM6XbNnT0+Eh578rI2jlAnbI9JcdHtRakIugW6wCGj/+cVNy2jkqOTTBQfAcySeirmxpAh0Ul1UeNixljMBMoHo+VoAu9pJME8M2oi55LQOdfF5Syr9quz7BA4O9YuxaoatSLD91n6hxAVeMNQS44CEpBXBcb6s9f34aNcasvSdyWF21vWINdt7Afzc1PwWBtnKZLd+lirIbkyAxDIXoA==
ARC-Authentication-Results: i=2; mx.microsoft.com 1; spf=pass (sender ip is
 4.158.2.129) smtp.rcpttodomain=gmail.com smtp.mailfrom=arm.com; dmarc=pass
 (p=none sp=none pct=100) action=none header.from=arm.com; dkim=pass
 (signature was verified) header.d=arm.com; arc=pass (0 oda=1 ltdi=1
 spf=[1,1,smtp.mailfrom=arm.com] dkim=[1,1,header.d=arm.com]
 dmarc=[1,1,header.from=arm.com])
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=arm.com; s=selector1;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck;
 bh=zCNkNqsMqJk6cgMVRtnwyoi0rKOTto9ucmjvwaDAVQM=;
 b=VhS/bwSLmNxU3I3VxPSFXLRbDRYrsyfMGCAzJGyTKJLz6Mx/hVTz3OibSzH6HF2oBntoCcz+SMYmYjhhcdLopr1+B96KRe5MrxQk/q7eUog9HLVmKs7iL8Uu9dfYuVTaV+OMuk/5Br2ICvMLQgIC+Vks9OZ7WC4tdaqrXljFzeo=
X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 4.158.2.129)
 smtp.mailfrom=arm.com; dkim=pass (signature was verified)
 header.d=arm.com;dmarc=pass action=none header.from=arm.com;
Received-SPF: Pass (protection.outlook.com: domain of arm.com designates
 4.158.2.129 as permitted sender) receiver=protection.outlook.com;
 client-ip=4.158.2.129; helo=outbound-uk1.az.dlp.m.darktrace.com; pr=C
ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none;
 b=NPd8MvcSP5d4GJ+ViHL1hi9Xe9W9gkeYVaI91QabGECwIk+uD4p90R14aXE4TiVS27zoqPX57YQHsrBam1JbEObxArZCHa4bJJsiVdX6VMBhGvC4YTDB++hBMQ66rjiJ2F/RS3Xl5bqx+sJEmfrJPqFhYuZBdxOD8IQsIJcP8luf+CB24xChI8/3gjcmk3JRTQMzR1f2IO8bs9yyfU+fWw0/47a75g8baYOPDAxE3IXgAIVFCP9+oQF2gOubgLM5OHWRXSXqYiJfrrMaHrY+V/YE0jpKNyScL8adBGzEFpDM0TgwDWhXB1eRYg2dtHvPxSYNqTwppqTl0qkF5rD1xQ==
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com;
 s=arcselector10001;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1;
 bh=zCNkNqsMqJk6cgMVRtnwyoi0rKOTto9ucmjvwaDAVQM=;
 b=YFF23TnGr0GDPmivj0L6H4UXgZxAlTQXfpiLfAMEWeSG0V0e28hUauH5+zbYjJVG4pWw50jWWuB6nLQzuXYCwiudQDEvzdxubGtHcsLPc16Bl1A3wJfShn4elDrRA8YQH0lJPHXY43ROL4qtTkRufc27oTXqsre2WT9j1Tc6KHSvbgp3J8wWvej3054zgx5jRMyTGZTEQJqGx5xbCF4Yt/IWZSaJ89G6nByKHgCp6lFdXl05qy37/hNmlsYtm817zqiMfBC3aQoxBQo8H5y1mVAUPA9sujbg+5ZCbbyLjp/a0yPSgSgKLNkUxqmTHUY8407xmyoVam7vBlR6G7VCHw==
ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass
 smtp.mailfrom=arm.com; dmarc=pass action=none header.from=arm.com; dkim=pass
 header.d=arm.com; arc=none
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=arm.com; s=selector1;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck;
 bh=zCNkNqsMqJk6cgMVRtnwyoi0rKOTto9ucmjvwaDAVQM=;
 b=VhS/bwSLmNxU3I3VxPSFXLRbDRYrsyfMGCAzJGyTKJLz6Mx/hVTz3OibSzH6HF2oBntoCcz+SMYmYjhhcdLopr1+B96KRe5MrxQk/q7eUog9HLVmKs7iL8Uu9dfYuVTaV+OMuk/5Br2ICvMLQgIC+Vks9OZ7WC4tdaqrXljFzeo=
From: Bertrand Marquis <Bertrand.Marquis@arm.com>
To: Mykola Kvach <xakep.amatop@gmail.com>
CC: "xen-devel@lists.xenproject.org" <xen-devel@lists.xenproject.org>, Mykola
 Kvach <mykola_kvach@epam.com>, Volodymyr Babchuk
	<volodymyr_babchuk@epam.com>, Jens Wiklander <jens.wiklander@linaro.org>,
	Stefano Stabellini <sstabellini@kernel.org>, Julien Grall <julien@xen.org>,
	Michal Orzel <michal.orzel@amd.com>
Subject: Re: [PATCH v8 07/13] xen/arm: ffa: fix notification SRI across CPU
 hotplug/suspend
Thread-Topic: [PATCH v8 07/13] xen/arm: ffa: fix notification SRI across CPU
 hotplug/suspend
Thread-Index: AQHcwo4hEZKVR+1qn0ekNt1kpsRBuLXyuF0A
Date: Mon, 27 Apr 2026 08:20:53 +0000
Message-ID: <8B067451-681E-45CA-843A-1F0FD34ABF3C@arm.com>
References: <cover.1775125380.git.mykola_kvach@epam.com>
 <a977e246d1d0a32a6618efd1385ad178779c2a61.1775125380.git.mykola_kvach@epam.com>
In-Reply-To:
 <a977e246d1d0a32a6618efd1385ad178779c2a61.1775125380.git.mykola_kvach@epam.com>
Accept-Language: en-GB, en-US
Content-Language: en-US
X-MS-Has-Attach:
X-MS-TNEF-Correlator:
x-mailer: Apple Mail (2.3864.500.181)
Authentication-Results-Original: dkim=none (message not signed)
 header.d=none;dmarc=none action=none header.from=arm.com;
x-ms-traffictypediagnostic:
	PR3PR08MB5593:EE_|DB3PR08MB8938:EE_|DB5PEPF00014B93:EE_|AM9PR08MB6209:EE_
X-MS-Office365-Filtering-Correlation-Id: f18a5699-1eba-4bfd-5d31-08dea4360c9f
x-checkrecipientrouted: true
nodisclaimer: true
X-MS-Exchange-SenderADCheck: 1
X-MS-Exchange-AntiSpam-Relay: 0
X-Microsoft-Antispam-Untrusted:
 BCL:0;ARA:13230040|376014|366016|1800799024|38070700021|22082099003|18002099003|56012099003;
X-Microsoft-Antispam-Message-Info-Original:
 rHBtbdllpGb2GcEEnNAlOYRsK9dtJU8lEvLjZoMBVDksII+3RwgUh31WRtLrwHopotXotkuyqEujeTWRTDvDvbUfrcdcPsxxiPjV4+Nyg+4Soe5fBramiiKKr/vUG9Rx6GCf0k+YQUz/XD9qGm+DiQ8JnVvEDxKXhao4Od6pwF1i2DZReUzpNVjnyrCG96M+//xFmVpng0IhqD3I1NEYfw66AfIqnqJwv5YRTtJr5CL1WcW6QN7dVsnKZoLfdXfWCJ1rt8OBitCayUPhZBRbWseQXARwkeQLx+HEcpcOXvg3MVEenAv93+JjzM5mcLUv3bNK5AvnLrrZXUN/KfSLmaXYSM/9GBxNgdkbq1nD9fOTDGAr77aWebFgnXNwwFp6t0DisjnavK14dW7ykpU0mTqixyUAiOtSRa7sPUBY1zKNKgg/SJtHX3sIKEQ3PgfdDJ2npJrpTLK3TDr/N/IQ+xWkWIsm3lKBQJVEH/4Hyc+1RriZqzFnxx2ZkwqqOIeG4G0j2Bay6Ryv7ZjoEVjAp1l12tDCe301St2AsGmr2OjqhyQYpLYLbXuKS8PHdxl7GgwzEIT8CFvg1c5UJ1ERjdx1yuHTjXz+URpjElsRzgcPhUUUMt9g+8Ejrsl6nWVpJCQAFXKt8aGlzJal2Tv+ZhV+b/lvFLsQYGqAPY4QUbw2+MxFS3mUkU8IJmNT2oZGkiSWRvqAjBTjsMidHR1RxOr8SZZxj0qNNrhJAemlZwNuIUj9wq/X2OLTf9c2/PmVVctwRGBPHMySjIy+xMmONDuPcrswjtMjKZ4WVTcZYmA=
X-Forefront-Antispam-Report-Untrusted:
 CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:PR3PR08MB5593.eurprd08.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(376014)(366016)(1800799024)(38070700021)(22082099003)(18002099003)(56012099003);DIR:OUT;SFP:1101;
Content-Type: text/plain; charset="us-ascii"
Content-ID: <05511841E06FE04385594807F35FD55A@eurprd08.prod.outlook.com>
Content-Transfer-Encoding: quoted-printable
MIME-Version: 1.0
X-Exchange-RoutingPolicyChecked:
 BmDy6YMWZboWG+ufONwN4a3ZHx7sCic1oGkEEtAniBl0WvyFfYlFC+dYq+Glz8+Hg03tMOt7s5VBw75Ypx6hpFep8q7ClPR6+E0J9Hok0y4ETHZRM1yyjAsTMtGMT0pfz6sYRzYmPF7IaCzonVN+XDS5xBgxQk+8iXy4vrdsEH+T+WUV6IjRbeOP4+Z1luvgosGG22B1MCNrT1FTemddxk82a3OAf422RCiX6+T3iu9e9330CMNixgmQtKtduDQfQlBG7zrQobOzuNt/6XBVRlLAgXYO6xcNUBrQsnRUasd4Yy6xbrqHfx/C4SxPCY70KdAlXOl7lKkrfjFz/KkuOw==
X-MS-Exchange-Transport-CrossTenantHeadersStamped: DB3PR08MB8938
X-EOPAttributedMessage: 0
X-MS-Exchange-Transport-CrossTenantHeadersStripped:
 DB5PEPF00014B93.eurprd02.prod.outlook.com
X-MS-PublicTrafficType: Email
X-MS-Office365-Filtering-Correlation-Id-Prvs:
	747e3a42-c6fa-4da8-4234-08dea435e618
X-Microsoft-Antispam:
	BCL:0;ARA:13230040|82310400026|1800799024|14060799003|35042699022|376014|36860700016|22082099003|18002099003|56012099003;
X-Microsoft-Antispam-Message-Info:
	0JQ+dW5Hmhfz1BAuL+UaBq9Y5kViDMYFEB3nPdcKCxThk/LOYtN/HjZyX8unVF/PEsgavuoxpU15ZJC5I8kRoLVniDeVP8B59KxNpeLAmSCyPa7FVq6zYSOxW6qMh9bOyRSQTE1Ps3aEK6xtdikwCD4RTOnHQ8A2yAkboxC2ce7FAvlUMToPhwS6DeqNHggRVNjdhC8NnlKM21OpNGiV4b8dB0iRJnvmkRs54Jv8qCDWG63BZ/cwHEbze6pP0NNRA0cETXqY9XsSl/Nlo3vX+BfBBLM7rr0idTlFEHQgJGbTRTfWWZ9JAD0Y7O+IRF1u/TrXkX4Xmqk4CipGmSXl9uMlLqEZvA01k52DUwec4nOQMgYJ7vd8kvaebPvMnrcR+uzo4kbuLv/MsjXbJpQY78QqD/CVvLve+Z85xoBoslIjO12mnonWcbyIMwuziimLDA29/tO29x8O4srI0maC/9DFd45tDJXeoEF5xF1SR40OTX56GlD6ImVML3IW1KXn7CFnHMdWCaf4xI7wh4PgLeOzejKbMzSSktxZ03+Lk8h1TuwE1qqPiXOdFFynv5hzVdJvlIiKmLJcIrq9PH/4IuHM8phsKUtdNPlVO+kV+INtNF13nmOMCH3zU4wbANqS54PP8SS86h/Rml0rWnKfRRJWHA8Wb/7pXt/8PwBymaDY/9UTW2oPFSZIhzGddHUF23qg303sUyhGD1tNNuS/FGqzCiiEEz0S+zjqYgLHzntVMEp//mpC1vvqwl8i2dmD/hp1gwHRnpKViTutIdGbWA==
X-Forefront-Antispam-Report:
	CIP:4.158.2.129;CTRY:GB;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:outbound-uk1.az.dlp.m.darktrace.com;PTR:InfoDomainNonexistent;CAT:NONE;SFS:(13230040)(82310400026)(1800799024)(14060799003)(35042699022)(376014)(36860700016)(22082099003)(18002099003)(56012099003);DIR:OUT;SFP:1101;
X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1
X-MS-Exchange-AntiSpam-MessageData-0:
	l++/Kcw4GfDl8et0QmeGjAtJE/y/wv4KEVNcjwMv411UUUStTGYYsIrIwTOlII8InUxd0fnONTrXl02XMD7Dv7FSmgwKbt6Ij53s+o7cTbLs4rpJvC5Fd/hLuoNDQUj/0NEn/j8GRc0I/dupwGes0NkgRkOyAFlfFB5wTJ+bmHWTjPPuwWyIFQEjzsecbwRZCK+8J8povUH+297puP19u3I9bus6BJdmJ2v9MTLjUgwxbsUq4q54+pgKgDgIyFLaqjcKzNRxcWBsjRROhHx/CSgdStaEaFtojTKeMY0PjblGiHklV1ABMi5xUvtZZCW/jyjkpkGVutr5iq7A7uRwXCVsz32KpcgivwtgKib2+4vmkVYjib//m1mdqPZekt7p3SqflhyIYOBPXZV0G8HkzwcmYUAnCkBOa5KVg6Axj1e5kVy5UJNn8Hngd3+nghX7
X-OriginatorOrg: arm.com
X-MS-Exchange-CrossTenant-OriginalArrivalTime: 27 Apr 2026 08:21:57.9128
 (UTC)
X-MS-Exchange-CrossTenant-Network-Message-Id: f18a5699-1eba-4bfd-5d31-08dea4360c9f
X-MS-Exchange-CrossTenant-Id: f34e5979-57d9-4aaa-ad4d-b122a662184d
X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=f34e5979-57d9-4aaa-ad4d-b122a662184d;Ip=[4.158.2.129];Helo=[outbound-uk1.az.dlp.m.darktrace.com]
X-MS-Exchange-CrossTenant-AuthSource:
	DB5PEPF00014B93.eurprd02.prod.outlook.com
X-MS-Exchange-CrossTenant-AuthAs: Anonymous
X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem
X-MS-Exchange-Transport-CrossTenantHeadersStamped: AM9PR08MB6209
X-purgate-ID: tlsNG-4011c0/1777278122-47B7F8B7-0C60E4A3/0/0
X-purgate-type: clean
X-purgate-size: 4192

Hi Mykola,

> On 2 Apr 2026, at 12:45, Mykola Kvach <xakep.amatop@gmail.com> wrote:
>=20
> From: Mykola Kvach <mykola_kvach@epam.com>
>=20
> The FF-A notification SRI interrupt handler was not correctly tied to
> CPU hotplug and suspend/resume. As a result, CPUs going offline and
> back online could end up with stale or missing handlers, breaking
> delivery of FF-A notifications.
>=20
> Signed-off-by: Mykola Kvach <mykola_kvach@epam.com>

This will probably need a rebase if the harden notification and VM to VM no=
tification
serie in FF-A is merged first.

Anyway, changes look good so:

Reviewed-by: Bertrand Marquis <bertrand.marquis@arm.com>

Cheers
Bertrand

> ---
> xen/arch/arm/tee/ffa_notif.c | 63 ++++++++++++++++++++++++++++--------
> 1 file changed, 50 insertions(+), 13 deletions(-)
>=20
> diff --git a/xen/arch/arm/tee/ffa_notif.c b/xen/arch/arm/tee/ffa_notif.c
> index 186e726412..513c399594 100644
> --- a/xen/arch/arm/tee/ffa_notif.c
> +++ b/xen/arch/arm/tee/ffa_notif.c
> @@ -360,10 +360,28 @@ static int32_t ffa_notification_bitmap_destroy(uint=
16_t vm_id)
>     return ffa_simple_call(FFA_NOTIFICATION_BITMAP_DESTROY, vm_id, 0, 0, =
0);
> }
>=20
> -void ffa_notif_init_interrupt(void)
> +static DEFINE_PER_CPU_READ_MOSTLY(struct irqaction, sri_irq);
> +
> +static int request_sri_irq(void)
> {
>     int ret;
> +    struct irqaction *sri_action =3D &this_cpu(sri_irq);
> +
> +    sri_action->name =3D "FF-A notif";
> +    sri_action->handler =3D notif_irq_handler;
> +    sri_action->dev_id =3D NULL;
> +    sri_action->free_on_release =3D 0;
> +
> +    ret =3D setup_irq(notif_sri_irq, 0, sri_action);
> +    if ( ret )
> +        printk(XENLOG_ERR "ffa: setup_irq irq %u failed: error %d\n",
> +               notif_sri_irq, ret);
>=20
> +    return ret;
> +}
> +
> +void ffa_notif_init_interrupt(void)
> +{
>     if ( fw_notif_enabled && notif_sri_irq < NR_GIC_SGI )
>     {
>         /*
> @@ -376,14 +394,36 @@ void ffa_notif_init_interrupt(void)
>          * pending, while the SPMC in the secure world will not notice th=
at
>          * the interrupt was lost.
>          */
> -        ret =3D request_irq(notif_sri_irq, 0, notif_irq_handler, "FF-A n=
otif",
> -                          NULL);
> -        if ( ret )
> -            printk(XENLOG_ERR "ffa: request_irq irq %u failed: error %d\=
n",
> -                   notif_sri_irq, ret);
> +        request_sri_irq();
>     }
> }
>=20
> +static void deinit_ffa_notif_interrupt(void)
> +{
> +    if ( fw_notif_enabled && notif_sri_irq < NR_GIC_SGI )
> +        release_irq(notif_sri_irq, NULL);
> +}
> +
> +static int cpu_ffa_notif_callback(struct notifier_block *nfb,
> +                                  unsigned long action,
> +                                  void *hcpu)
> +{
> +    switch ( action )
> +    {
> +    case CPU_DYING:
> +        deinit_ffa_notif_interrupt();
> +        break;
> +    default:
> +        break;
> +    }
> +
> +    return NOTIFY_DONE;
> +}
> +
> +static struct notifier_block cpu_ffa_notif_nfb =3D {
> +    .notifier_call =3D cpu_ffa_notif_callback,
> +};
> +
> void ffa_notif_init(void)
> {
>     const struct arm_smccc_1_2_regs arg =3D {
> @@ -392,7 +432,6 @@ void ffa_notif_init(void)
>     };
>     struct arm_smccc_1_2_regs resp;
>     unsigned int irq;
> -    int ret;
>=20
>     /* Only enable fw notification if all ABIs we need are supported */
>     if ( ffa_fw_supports_fid(FFA_NOTIFICATION_BITMAP_CREATE) &&
> @@ -408,13 +447,11 @@ void ffa_notif_init(void)
>         notif_sri_irq =3D irq;
>         if ( irq >=3D NR_GIC_SGI )
>             irq_set_type(irq, IRQ_TYPE_EDGE_RISING);
> -        ret =3D request_irq(irq, 0, notif_irq_handler, "FF-A notif", NUL=
L);
> -        if ( ret )
> -        {
> -            printk(XENLOG_ERR "ffa: request_irq irq %u failed: error %d\=
n",
> -                   irq, ret);
> +
> +        if ( request_sri_irq() )
>             return;
> -        }
> +
> +        register_cpu_notifier(&cpu_ffa_notif_nfb);
>         fw_notif_enabled =3D true;
>     }
> }
> --=20
> 2.43.0
>=20



From xen-devel-bounces@lists.xenproject.org Mon Apr 27 08:43:29 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 27 Apr 2026 08:43:29 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1294717.1571414 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wHHYe-0003Vc-0z; Mon, 27 Apr 2026 08:43:12 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1294717.1571414; Mon, 27 Apr 2026 08:43: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 1wHHYd-0003VV-Ti; Mon, 27 Apr 2026 08:43:11 +0000
Received: by outflank-mailman (input) for mailman id 1294717;
 Mon, 27 Apr 2026 08:43:10 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <xakep.amatop@gmail.com>) id 1wHHYb-0003VP-VK
 for xen-devel@lists.xenproject.org; Mon, 27 Apr 2026 08:43:10 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wHHYb-00EztE-By
 for xen-devel@lists.xenproject.org; Mon, 27 Apr 2026 10:43:09 +0200
Received: from [10.42.69.12] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <xakep.amatop@gmail.com>)
 id 69ef219d-5cb7-0a2a0a5109dd-0a2a450cc00a-0
 for <xen-devel@lists.xenproject.org>; Mon, 27 Apr 2026 10:43:09 +0200
Received: from [209.85.167.43] (helo=mail-lf1-f43.google.com)
 by tlsNG-d25034.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.1)
 (envelope-from <xakep.amatop@gmail.com>)
 id 69ef219c-62f1-0a2a450c0019-d155a72bac60-3
 for <xen-devel@lists.xenproject.org>; Mon, 27 Apr 2026 10:43:09 +0200
Received: by mail-lf1-f43.google.com with SMTP id
 2adb3069b0e04-5a0faa0d15cso9676813e87.0
 for <xen-devel@lists.xenproject.org>; Mon, 27 Apr 2026 01:43:09 -0700 (PDT)
Received: from EPUAKYIW02F7.. ([45.12.24.216])
 by smtp.gmail.com with ESMTPSA id
 2adb3069b0e04-5a4187ec0c2sm8027602e87.82.2026.04.27.01.43.07
 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
 Mon, 27 Apr 2026 01:43:07 -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=20251104 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=20251104; t=1777279388; x=1777884188; 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;
        bh=xe+fE5KPwB/3Y8w5gbIYm2q2Fibz2TAb4eEd+2pPodk=;
        b=CrtCQuYZVrxs+0qiablk2CUtU7Db587ARg/YXVgFCNQ9v9ytpD9qle/YOyEGwKA7+q
         agLI87CepaV3CHyRf4l8Uzg+Hq/STXRONWKqHqZbAo6Er4wA51ZMOF7nZuR+iJIVYdc8
         NcPx+9cn98xR7Uy8fE1gqEMP+nhkpetGRKx0spVIhjFkuA43iRiX4WsSclVY5jmfdj+b
         BfOR1mq/4b7mBdtHyn3NemCKSQbo+1guulh/IL738vf3tjVZkEgSBiLDAEbFPN2ygPkq
         OpwEEgGmd8y25kR6OggAaPd9Qa4mys0V6H9fvLnQkEy62T+fqVu5Id9JcddQStuil9Ij
         w1ug==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20251104; t=1777279388; x=1777884188;
        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;
        bh=xe+fE5KPwB/3Y8w5gbIYm2q2Fibz2TAb4eEd+2pPodk=;
        b=YfeQNnKjj/dre4ZqIMExjrD6LkzAbsYYqgAtvqTn4VKBfKBZJIk3iCBGsl5UTzKrUi
         TSJLXmEur/6hYjtxieKBKSJg6OI6U9gmhOLhbhmdlhjjurq94N494KOoijfEQQ8BDqPI
         t3qpqc47VGXkc5vKO15ZpavUhZOH5iAU7W/hGDT+lEJSeK0eZdIdlug5vOzISsOpMmJM
         W4w6vcvj98658Lcz4yvoNP+Mz5FP3e/B1p61Qr2jQhfmTl4Zb8k/+dv7/4+ktzrgAxna
         cKSmizTcew9DkWmqxSz7qVBBqF0/u1GQAjimZhtpsPAjH6xyOgstDzwEt2HuFh6MGMLc
         JXWg==
X-Gm-Message-State: AOJu0YxVNFUpjs54WXR9IcDi39iOPRyWwH/hnoxbplmdi3PCxJAhvGPT
	MlG15ixvvJHXPxSF3hEi52eMWbH0lUf2k77MdMtKbMxVceS/oOB6mKefxV217Q==
X-Gm-Gg: AeBDiet6U2zNDYReeumbEIegcFUYAIHQf5kck5ZLkCMtN6mjdGSUe6Qsy0ruPUeOm4B
	LJ9Q9YGRvOD1uinulrCrqgFrI2ECfn7rLgt6UYmIhFWKeq7AEEDB6/ktZNN4pHLe6uD5OatQ2ei
	ROvlK+btQfxQ+UF/hRrRyjolcbxp6ciEP5Y404IbUaxLp8U/QF6vgJu1yZ4ZF5/h6SbHn4l3UF7
	R7EjbzvmwpkzqneQ/f6vEGDWF3Me1XYtsf/LDyDQpWYey+flpv3VP2AgusGeF/l2B0de9KKjJd5
	ytmzV9FDHT/jJVa20XiYG2hHeLqZ1zc9RmpAiWtx7Ua9wWuZnSwxUZAHVSlaTA+XQjySziklaBy
	jtzGR/zyXFABWeLCJMgKpZRsqDppySNUWooERQ3mhvJ56Tv57FDx7u8sYO0gmdBmBEg2uZuXiSj
	GR7iITvu2gWhVpXW1FIaqq1A++qF7l1hnDOb0p5w==
X-Received: by 2002:a05:6512:3c9d:b0:5a3:fd83:13f7 with SMTP id 2adb3069b0e04-5a4172ba690mr12876454e87.6.1777279387877;
        Mon, 27 Apr 2026 01:43:07 -0700 (PDT)
From: Mykola Kvach <xakep.amatop@gmail.com>
To: xen-devel@lists.xenproject.org
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>,
	Mykyta Poturai <mykyta_poturai@epam.com>
Subject: [PATCH v3] arm/gicv3: Decode cacheability fields before comparing
Date: Mon, 27 Apr 2026 11:37:31 +0300
Message-ID: <5da34f44edab55c50163addc6b52c680ea1ce2f7.1777278902.git.mykola_kvach@epam.com>
X-Mailer: git-send-email 2.43.0
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit
X-purgate-ID: tlsNG-d25034/1777279389-F40FDCF5-797E97ED/0/0
X-purgate-type: clean
X-purgate-size: 2490

From: Mykola Kvach <mykola_kvach@epam.com>

GITS_BASER_INNER_CACHEABILITY_MASK and
GICR_PROPBASER_INNER_CACHEABILITY_MASK are shifted masks. Comparing the
masked but unshifted values against GIC_BASER_CACHE_nC, which is an
unshifted enum value, leads to incorrect detection of non-cacheable
GITS_BASER tables and GICR_PROPBASER mappings.

Use MASK_EXTR() to decode these cacheability fields before comparing
against GIC_BASER_CACHE_nC, so the backing memory is flushed when
required.

Fixes: 05238012b86d ("ARM: GICv3 ITS: allocate device and collection table")
Fixes: c9b939863c89 ("ARM: GICv3: allocate LPI pending and property table")
Signed-off-by: Mykyta Poturai <mykyta_poturai@epam.com>
Signed-off-by: Mykola Kvach <mykola_kvach@epam.com>
---
Changes in v3:
- drop CBASER command queue hunk (separate functional change, not the
  same shifted-mask bug)

Changes in v2:
- use MASK_EXTR() instead of open-coding the BASER field shift
- fix the analogous PROPBASER cacheability comparison in
  gicv3_lpi_set_proptable()
- fix the CBASER command queue cacheability check as well
---
 xen/arch/arm/gic-v3-its.c | 3 ++-
 xen/arch/arm/gic-v3-lpi.c | 3 ++-
 2 files changed, 4 insertions(+), 2 deletions(-)

diff --git a/xen/arch/arm/gic-v3-its.c b/xen/arch/arm/gic-v3-its.c
index e38aa87117..9005ce8ce5 100644
--- a/xen/arch/arm/gic-v3-its.c
+++ b/xen/arch/arm/gic-v3-its.c
@@ -496,7 +496,8 @@ retry:
         }
         attr = regc & BASER_ATTR_MASK;
     }
-    if ( (regc & GITS_BASER_INNER_CACHEABILITY_MASK) <= GIC_BASER_CACHE_nC )
+    if ( MASK_EXTR(regc, GITS_BASER_INNER_CACHEABILITY_MASK) <=
+         GIC_BASER_CACHE_nC )
         clean_and_invalidate_dcache_va_range(buffer, table_size);
 
     /* If the host accepted our page size, we are done. */
diff --git a/xen/arch/arm/gic-v3-lpi.c b/xen/arch/arm/gic-v3-lpi.c
index de5052e5cf..9ee338edc2 100644
--- a/xen/arch/arm/gic-v3-lpi.c
+++ b/xen/arch/arm/gic-v3-lpi.c
@@ -351,7 +351,8 @@ static int gicv3_lpi_set_proptable(void __iomem * rdist_base)
     }
 
     /* Remember that we have to flush the property table if non-cacheable. */
-    if ( (reg & GICR_PROPBASER_INNER_CACHEABILITY_MASK) <= GIC_BASER_CACHE_nC )
+    if ( MASK_EXTR(reg, GICR_PROPBASER_INNER_CACHEABILITY_MASK) <=
+         GIC_BASER_CACHE_nC )
     {
         lpi_data.flags |= LPI_PROPTABLE_NEEDS_FLUSHING;
         /* Update the redistributors knowledge about the attributes. */
-- 
2.43.0



From xen-devel-bounces@lists.xenproject.org Mon Apr 27 08:47:35 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 27 Apr 2026 08:47:35 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1294724.1571424 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wHHcs-00047Z-Jr; Mon, 27 Apr 2026 08:47:34 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1294724.1571424; Mon, 27 Apr 2026 08:47: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 1wHHcs-00047S-ES; Mon, 27 Apr 2026 08:47:34 +0000
Received: by outflank-mailman (input) for mailman id 1294724;
 Mon, 27 Apr 2026 08:47:34 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <roger.pau@citrix.com>) id 1wHHcr-00045u-Th
 for xen-devel@lists.xenproject.org; Mon, 27 Apr 2026 08:47:34 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wHHcr-00CuuE-7l
 for xen-devel@lists.xenproject.org; Mon, 27 Apr 2026 10:47:33 +0200
Received: from [10.42.69.4] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <roger.pau@citrix.com>)
 id 69ef229a-5cb7-0a2a0a5109dd-0a2a4504d5e6-20
 for <xen-devel@lists.xenproject.org>; Mon, 27 Apr 2026 10:47:33 +0200
Received: from [52.101.62.47]
 (helo=DM5PR21CU001.outbound.protection.outlook.com)
 by tlsNG-ebf023.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.1)
 (envelope-from <roger.pau@citrix.com>)
 id 69ef22a3-1dec-0a2a45040019-34653e2f5c3d-3
 for <xen-devel@lists.xenproject.org>; Mon, 27 Apr 2026 10:47:32 +0200
Received: from CH7PR03MB7860.namprd03.prod.outlook.com (2603:10b6:610:24e::14)
 by SJ2PR03MB7403.namprd03.prod.outlook.com (2603:10b6:a03:55a::22)
 with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9846.26; Mon, 27 Apr
 2026 08:47:28 +0000
Received: from CH7PR03MB7860.namprd03.prod.outlook.com
 ([fe80::f5ba:35df:1c9f:b343]) by CH7PR03MB7860.namprd03.prod.outlook.com
 ([fe80::f5ba:35df:1c9f:b343%4]) with mapi id 15.20.9846.025; Mon, 27 Apr 2026
 08:47: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=aFy8kr5cV3wHbDsiXEtK1X++k35KLuwz1Qv1B4YNFmnvmxQ4fww2yqFa1Ot2PkcQqff+jyQ2POvosfw5Pryf4ADsMppcGQYVd+0zvk3s0NSEp+SExVYKlW8Du/EO+n4ob8iegVlTOT+aksYHr6GqhAbUbgzCAM3vld55zsR9PFss6RdcFwDkdtetbbQtzjNJrnjRgk9DNsfZBWAkv4cB7nLHDFUtpX7qT1XE3shW5RZHlDe1vpG83KupJf82229KHvJEUhXaFK0IKCP+fL6r2YfBp47j1i7NlnK89lFjNuvxjpQNRcc3DJmmSF801JJSuT9IFT5OuVa4HPnMtXxk5w==
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com;
 s=arcselector10001;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1;
 bh=HdhKD9Hjp3DkWiquxnpg8dCFR5hVKu3lK3WhVBX3GQ8=;
 b=R73mAjrxQDuFdQh6Buh1tEvUtU47JcVBPblkjihg9HErML3+xVVeqCZtrJK0Zj6xGvvMWeO074mtpEZw966Njb/ZO3IVVcDTU4+kacMRnXWsIHxDUjsQGSl2An1/29ZEI/dDO7/Jf5GI84LiiT8BDxnOyjkULOWNyDxrhvI78fKJlsC8TP3fHZjYzDZZLfHFDT7kX6CAVNMCuExzMHxNXf9FOKAtBKEVHvOGaHDhNDrPG3tc9vRvt8PQarIEgC+1VWSLoQvISMV9dBhbCug00KwTYUsqi6/R9SJEOTsnOg4zjXJ9DqDi0bI6Qo2IuyaiKOLrqkxwf665d1DFwaFu1Q==
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=HdhKD9Hjp3DkWiquxnpg8dCFR5hVKu3lK3WhVBX3GQ8=;
 b=Bq95DcQzXmQVJr5RWXLvwgc4efxDvqwkeRQcGeO/bLQ70eFNngbbhsyMfr5G++Tj9h8ma7wSOPaBtcw+mKmh7xUVvH5a3mNE/GF4ITZSMVZXOFb5MlAc8C6fdQQSb0B4tv8ZW9CSr7IlG5ZXX23eqHQLezdhJku+GJpW8fVVhxM=
Authentication-Results: dkim=none (message not signed)
 header.d=none;dmarc=none action=none header.from=citrix.com;
Date: Mon, 27 Apr 2026 10:47:23 +0200
From: Roger Pau =?utf-8?B?TW9ubsOp?= <roger.pau@citrix.com>
To: Jan Beulich <jbeulich@suse.com>
Cc: "xen-devel@lists.xenproject.org" <xen-devel@lists.xenproject.org>,
	Andrew Cooper <andrew.cooper3@citrix.com>
Subject: Re: [PATCH 1/3] x86/shadow: unlock P2M slightly earlier in
 shadow_track_dirty_vram()
Message-ID: <ae8im__1Wrn420MH@macbook.local>
References: <5149ab32-7d03-4ae5-9af0-e62dd5836329@suse.com>
 <c6aa40de-11b2-4725-b18c-8a982e43f0f0@suse.com>
Content-Type: text/plain; charset=utf-8
Content-Disposition: inline
Content-Transfer-Encoding: 8bit
In-Reply-To: <c6aa40de-11b2-4725-b18c-8a982e43f0f0@suse.com>
X-ClientProxiedBy: PA7P264CA0273.FRAP264.PROD.OUTLOOK.COM
 (2603:10a6:102:373::12) To CH7PR03MB7860.namprd03.prod.outlook.com
 (2603:10b6:610:24e::14)
MIME-Version: 1.0
X-MS-PublicTrafficType: Email
X-MS-TrafficTypeDiagnostic: CH7PR03MB7860:EE_|SJ2PR03MB7403:EE_
X-MS-Office365-Filtering-Correlation-Id: 74692f8b-0237-405a-ac8e-08dea4399ca5
X-MS-Exchange-SenderADCheck: 1
X-MS-Exchange-AntiSpam-Relay: 0
X-Microsoft-Antispam:
	BCL:0;ARA:13230040|376014|366016|1800799024|22082099003|18002099003|56012099003;
X-Microsoft-Antispam-Message-Info:
	ro2b/MlNUW0/NgH87ZReHUGVeLysLnYIBadREghoSVo3zb5S7HxPDc5bVSyIXis923qfLpVS6b65/qXy3ZDF8vYDr3GbQeSHDj2OtWfx+lwGAixo0DzJDAjKhb/JY8WHhc2ozgkeibcSEWZmeo4qpzLwLt0uMW1ZMuLa6qq86lzkASMZyylSkhzjwpTqxQw1FpqDy06Iv7hFH8uml1w9kiNq8NYg44IfSJuiIlOVFkZ4rWfADVuFLAfFXHTYsFFsrHrMl66ycRRnCNvfkUsBMok6K3oJaV8TEmiBt+kiUp23ldhwgcgqtOsAxz4koJzV9ikOmxUJIqPsLknxWcxGqG7dQSjNtCKa1h3+QdhzpeNKev4vnXml4baNCSgBYX+kOpjVcfOUIetpPcb7BrOOcqnNQV7aQzApgu/lck6UbUzKTrQULqr1yX4XSD/YXQidEuMdCQpc89grqclzeRHYjq+QqVG+7XzcxzrY2H6jVhxlludXLNaRUgQE/qf0IMi6dFKQeJ7U1CGV0u1hsHl/olvUb0tfMuU4LdfsqXaOorxOnvUnGHxM1A9maheLzFAihS3V+3+Agty+d4uudlh8iemLdevQzPlVdKDI1BQE7bKCt3N0EpethQULOYC55xtX6rOSIejpwXs1y4ijH3tuEkXWUnvNHCv3mnur8pEeF88oEKOrFZnAwObaUTm90MMHxMQ5TuUO8fZloVIVt8FogtseeVnF4fTQdcAu5xPiFMw=
X-Forefront-Antispam-Report:
	CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:CH7PR03MB7860.namprd03.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(376014)(366016)(1800799024)(22082099003)(18002099003)(56012099003);DIR:OUT;SFP:1101;
X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1
X-MS-Exchange-AntiSpam-MessageData-0:
	=?utf-8?B?Y04rTkVBWUlQcVBKakhXVDZsVVNNL1dQVndVakpUTFkrZmJuRGJDSDlRU3RN?=
 =?utf-8?B?dTVOUDRwZGhkN0EvTm1GSFBBNjBXcklCb1o2VjVZUzRqR21Ob2lsM2NoUjkr?=
 =?utf-8?B?YzJ3aWlGRzNkeHp0VzdjOXpkUzRjSGUwbXkxKzRlaFpoYU1qejJ0ajYzWENw?=
 =?utf-8?B?Y0RYdmxwclo2RzBHdldKL3daR3Vpc1ZiN3pyU3NERmR5OHdpdjg1Znl1Y3Yx?=
 =?utf-8?B?d1ZpOUpvWFgzRUVjWjdRZWpKb0FYdFRQOUJkcnI2YWpjYWg1djNCRTc3V0JT?=
 =?utf-8?B?UHY2d2F4eEJjZlQwM1RwdHlOUzNqeXIycGlBUmQ1eGJKVDcwZUJNUHB6R0tG?=
 =?utf-8?B?MzUvcXNUYnUvT0sxTWs1cXJTSXBQNWlPaE8rMzUyZVM1THlYdHQyQTJBY0Jm?=
 =?utf-8?B?KzE1cG5TeHRUZ0o4a3RITWVOMlR2aUNJL1pNVkxyWWtKL3h3TjJVNUw3UVp0?=
 =?utf-8?B?RzRTai9helhDL0FxZzR4bGtaVVNBOVJUelZjRm1vc2JFZ21VMHduM1I5ZGlt?=
 =?utf-8?B?OUZwT3Z3RkdOd3NHU0tWNVZYd09LeHR0WjNhbUtoZFhEbW15Qk1mSDlDZWNz?=
 =?utf-8?B?VmpuR3VPcUc0cDNlWFlxTzg0S29yZnA1aHF2SHdPUGdwZzNhM1o0SHFBSjRp?=
 =?utf-8?B?Y01TYlgzZHhpQmkybHpTa1REV3dDbndQNmpXVHZOSnRFcUtZRXIwN0YxUXhR?=
 =?utf-8?B?UEs2WjRVSE52VzFiTHNmdkJiYkZ5Q2VFbFoxa2lkUlJnSTJaaWxSR2FQbDBF?=
 =?utf-8?B?V1EyeHd5ZHB6QVZLV2VSV0xKbzhzcGFaL1JwekIvUy9md2JLOTRVOC9WODhw?=
 =?utf-8?B?NHJsd01WUGNCcVZWRTh0cFBsR3Z5K3Nyb1g1RUNZeHVyVnpWVkJxdVRXcnZG?=
 =?utf-8?B?L09HNHlmZ0tERjN4QW16ODJqYTVPSkJDdG42dk14UFJYeUszcXVZR1RqUmZP?=
 =?utf-8?B?NzcrQ2dIakd3STFLZU1lQ3VKanB5RWRndHAwN2FTMjJTM1VYay9IbVlOU1M1?=
 =?utf-8?B?d3oycWRxbi94MTNFYnZtZ3RRVUo1VjBKN21haGZTaHJGVFJvL002YmtCT2dS?=
 =?utf-8?B?MFl1MjBDRDFtbDZDeXpLRVNwaEd5elNJRjF6YjlOSEgvenh6enIvMWhBby8z?=
 =?utf-8?B?bGg2Z0s5S2pLVllxZW95QWRxa1NkMWdUbHdmS1QyVDIvMUZXSURxRWFUVlBL?=
 =?utf-8?B?c3JGZHNJbmhJcWZlSUtaTGRFdHphWVZBck56YWtFVlZFcGptSzJ4bnhGS212?=
 =?utf-8?B?d09YSE1oN2lYdFBiNDdKWVlpQlgvUytRakFSdEswVDhvUjZmdnNVbUt5OUti?=
 =?utf-8?B?Qy9ZWG8vemlITWxETkR3TzRRYzVBNmRleEFQMkt4RzZOYmNDNnlrcnQ0bC9P?=
 =?utf-8?B?QTNrYVV4RlBPdng0QkZLRzUzYWliNW1uMlNwZXFXVkRpTDYwQTNESGx1dmlF?=
 =?utf-8?B?cm5DQ1RDMG1oUnE1cTNpQkhsckdpd1hYdU4zWEUvNGx5WlhLTEwxYlZMTTJN?=
 =?utf-8?B?ZndtVzRmd1B3MXlSVzltNms1cEY4T09TZkIvaTFzekErd0JrNUExWjVKSjJw?=
 =?utf-8?B?WlZPRkUrYmtXTnYrenNUcXZjWmtOU2RoN3EwVk4wZGNZbDlLYjFlWnBnZ3o1?=
 =?utf-8?B?eFpFRHEyWEVuWlNkKytWNU1OWVNKNkl4WXhtc0ZwYTZoQktDSVdnOExPRGVn?=
 =?utf-8?B?TlZYR1JydUZFYmlFTEJkNHZlZVluOURiTHVxWjlFVk8vajRZclVYV2xDTkFh?=
 =?utf-8?B?SkpHWmFPNzgzdFEyaFBqSVR3aTVocVpqYlB5MHM3dG9RV2c4Q2Q3eHNYaEwx?=
 =?utf-8?B?K1JNRm5JNEZodXpCOGpReUZ3UW5yYWJsTkN0Y2tiUS9yWU9VM2o4Z3dTN1Qy?=
 =?utf-8?B?Nmp2eVZ3UDJwTW50SkRmMFlrU3VqYnZ4dmpGanA5THRjRGhOVXZBVExIZWxO?=
 =?utf-8?B?dGlORW5URDVXRXZGRzI3V3B1Vzk5MHNFNlNEM1RieVprRE5DcjhjbEM2UlQ3?=
 =?utf-8?B?RVViTkhubEVBM204UTZzMDY2S3ZiM1RuQ0ZHODVNdE9HeE9TeXJOWjZkaUlB?=
 =?utf-8?B?UHR6UXNZUEltL05wRC9qMHM0ZHI5Q0VPNFRCODd0Uk9QSnMvaEczQy8ramdL?=
 =?utf-8?B?YkJlWVoxQkZ3a1k4NVRCSDhzQ05YYUdkckhqMWN5aEk4L0VQVEZHZ085d25x?=
 =?utf-8?B?TmtXWEViTk9RbWVyN2xyQUZjUFE1eXhoVGJRSjBpRWgvbmdKOHhDRTJNeDU1?=
 =?utf-8?B?TSt5SkRhb1RBelVSakJCdnBJMi9aWDZYeXdLSFdPNm40d0Rza1hpMll6bkx4?=
 =?utf-8?B?RzdxbFdFTGNEUCtTNHZsckwvbHlLNVJueUUrOVlXdnlndnl0NWEzZz09?=
X-OriginatorOrg: citrix.com
X-MS-Exchange-CrossTenant-Network-Message-Id: 74692f8b-0237-405a-ac8e-08dea4399ca5
X-MS-Exchange-CrossTenant-AuthSource: CH7PR03MB7860.namprd03.prod.outlook.com
X-MS-Exchange-CrossTenant-AuthAs: Internal
X-MS-Exchange-CrossTenant-OriginalArrivalTime: 27 Apr 2026 08:47:28.5123
 (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: FgmNadHjFFgquVRjvQ333HdzmZ9Mq2E9aHFxHGtx08h8DEA9SeyhkuPS67b0McxO+UpLvR0gHvr6pakLTKAyVQ==
X-MS-Exchange-Transport-CrossTenantHeadersStamped: SJ2PR03MB7403
X-purgate-ID: tlsNG-ebf023/1777279653-4BF6D3FF-FA9A2946/0/0
X-purgate-type: clean
X-purgate-size: 1089

On Tue, Feb 03, 2026 at 05:49:35PM +0100, Jan Beulich wrote:
> There's no need to call vfree() with the lock still held.
> 
> Signed-off-by: Jan Beulich <jbeulich@suse.com>

Acked-by: Roger Pau Monné <roger.pau@citrix.com>

> ---
> In fact for the purposes of the function the P2M lock could really be
> obtained merely in read mode, and it could be dropped immediately in both
> the main "if()" and its "else if()". If only there wasn't the error
> handling after copy_to_guest(): Dropping the paging lock ahead of that
> call, we rely solely on the P2M lock to also guard the changing of
> d->arch.hvm.dirty_vram.sh and what it points to. Question is why dropping
> the paging lock (but continuing to hold the P2M lock) is necessary there
> in the first place.

I wouldn't spend a lot of time trying to optimize this, we already
know HVM shadow is ATM not very optimized, and generally recommend
HAP.

If we could turn the p2m lock into read-mode, maybe at the expense of
expanding the paging locked region that would likely be slightly better?

Thanks, Roger.


From xen-devel-bounces@lists.xenproject.org Mon Apr 27 09:22:03 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 27 Apr 2026 09:22:03 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1294737.1571432 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wHIA0-0000yg-4O; Mon, 27 Apr 2026 09:21:48 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1294737.1571432; Mon, 27 Apr 2026 09:21: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 1wHIA0-0000yZ-1T; Mon, 27 Apr 2026 09:21:48 +0000
Received: by outflank-mailman (input) for mailman id 1294737;
 Mon, 27 Apr 2026 09:21:46 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92) id 1wHI9y-0000yT-Ds
 for xen-devel@lists.xenproject.org; Mon, 27 Apr 2026 09:21:46 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wHI9w-00BlPq-UO
 for xen-devel@lists.xenproject.org; Mon, 27 Apr 2026 11:21:44 +0200
Received: from [10.42.69.10] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <Michal.Orzel@amd.com>)
 id 69ef2aa6-5cb7-0a2a0a5109dd-0a2a450ad65e-10
 for <xen-devel@lists.xenproject.org>; Mon, 27 Apr 2026 11:21:44 +0200
Received: from [52.101.201.64]
 (helo=PH7PR06CU001.outbound.protection.outlook.com)
 by tlsNG-4011c0.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.1)
 (envelope-from <Michal.Orzel@amd.com>)
 id 69ef2aa6-56b3-0a2a450a0019-3465c9406e3b-3
 for <xen-devel@lists.xenproject.org>; Mon, 27 Apr 2026 11:21:43 +0200
Received: from MN0PR02CA0004.namprd02.prod.outlook.com (2603:10b6:208:530::11)
 by MW4PR12MB6730.namprd12.prod.outlook.com (2603:10b6:303:1ec::7)
 with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9870.16; Mon, 27 Apr
 2026 09:21:38 +0000
Received: from MN1PEPF0000F0E0.namprd04.prod.outlook.com
 (2603:10b6:208:530:cafe::bb) by MN0PR02CA0004.outlook.office365.com
 (2603:10b6:208:530::11) with Microsoft SMTP Server (version=TLS1_3,
 cipher=TLS_AES_256_GCM_SHA384) id 15.20.9846.26 via Frontend Transport; Mon,
 27 Apr 2026 09:21:37 +0000
Received: from satlexmb08.amd.com (165.204.84.17) by
 MN1PEPF0000F0E0.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.20.9846.18 via Frontend Transport; Mon, 27 Apr 2026 09:21: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.17; Mon, 27 Apr
 2026 04:21:37 -0500
Received: from [10.252.145.116] (10.180.168.240) by satlexmb08.amd.com
 (10.181.42.217) with Microsoft SMTP Server id 15.2.2562.17 via Frontend
 Transport; Mon, 27 Apr 2026 04:21:35 -0500
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@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=XAcI4fRGtXgxyYTrpAcpMHaALa969/iT1CA3lScCiXD39zXWBB/bc/+w46mx6HVdCb7UIbSnUraZFjnszAK12FZ4GDMIpJ77B7Y2iKHtspLDq5N+8Xa+U5e3uu+rmv/XB8yKi6ip/LByTJFW2SxYGNUeZ46yotqKXP7Kx70Dq6IBxbJp4wayUqB87fjf85DNTdXNpB4rvsQToujBZeenihJULMpxogfercGuKGUAv4JWCYh3C8HZCAW4EqkvDoJDY+lFY6VMUJce4BQurM4o0GnV9fkcBbZnDArFYNhSNaHZc4ICOnvmJs4MPVgTpljDwBWB6aTHmJdMFMe3xy4I1w==
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com;
 s=arcselector10001;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1;
 bh=rDRa2YENjPiUPVFKF9FwQEopV3rjTG+wNc0PT4Bgb1U=;
 b=myFEwoLCygfLIawrUOiDlrdFphHbhXwC1y0Kxl+FqZCDM5TK0MIuYzP9LY/2szQK2jzoyRna5WME6KS6Ni7MomHaztQSyaxfYdAtaXgCFuYAvQ8Z9FDAgR5Ryqfbg7Yzx01+0sZiOQMTfgKX2qFCbC7N3fabGVNjqaJvhBfFktGK9axmF+tOrxUVG/IfhSgSoCGZJdEoQDSw8SJtCxlrf6tMPDyKFLY3mxlOvgLR5hRVNJY5PMBitE6Mb3qfENmU7wcAsm5VrND+bU/3eZeI4M9+1C8KaIyhce23Wr7YwVwpSFL0JoVTNHaUyoj/OrWrUu5zIDdDlHFVF5DQ/j6ONw==
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=rDRa2YENjPiUPVFKF9FwQEopV3rjTG+wNc0PT4Bgb1U=;
 b=bSzgRwt+EBoGn6IigJc5dsJPi+bFPZxn71aZ6iCfeRLz2IlczjPZ5/RRSROWAdU/HeVRyl95GeoUs6xNAhXi3w0Fa8pFMJxRjOPJYlac07cQi5ZMSZCXTI0c0mE9oSXf5FHy9J5jBUPjcopty0GMoeyXt+CqKv4vf7UqAvJarIM=
X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 165.204.84.17)
 smtp.mailfrom=amd.com; dkim=none (message not signed)
 header.d=none;dmarc=pass action=none header.from=amd.com;
Received-SPF: Pass (protection.outlook.com: domain of amd.com designates
 165.204.84.17 as permitted sender) receiver=protection.outlook.com;
 client-ip=165.204.84.17; helo=satlexmb08.amd.com; pr=C
Message-ID: <71ae72eb-3424-4d41-afb7-9f1462e84aaf@amd.com>
Date: Mon, 27 Apr 2026 11:21:33 +0200
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH v3 3/3] xen: introduce CONFIG_HAS_DOMAIN_TYPE
To: Oleksii Kurochko <oleksii.kurochko@gmail.com>,
	<xen-devel@lists.xenproject.org>
CC: Romain Caritey <Romain.Caritey@microchip.com>, 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.pau@citrix.com>
References: <cover.1776957840.git.oleksii.kurochko@gmail.com>
 <fa2e255e53fe3aef2075ba8457be5fd4ba9156d1.1776957840.git.oleksii.kurochko@gmail.com>
From: "Orzel, Michal" <michal.orzel@amd.com>
Content-Language: en-US
In-Reply-To: <fa2e255e53fe3aef2075ba8457be5fd4ba9156d1.1776957840.git.oleksii.kurochko@gmail.com>
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: 7bit
X-EOPAttributedMessage: 0
X-MS-PublicTrafficType: Email
X-MS-TrafficTypeDiagnostic: MN1PEPF0000F0E0:EE_|MW4PR12MB6730:EE_
X-MS-Office365-Filtering-Correlation-Id: b8c5cb0a-74c7-48c6-58bd-08dea43e6228
X-MS-Exchange-SenderADCheck: 1
X-MS-Exchange-AntiSpam-Relay: 0
X-Microsoft-Antispam:
	BCL:0;ARA:13230040|1800799024|376014|7416014|82310400026|36860700016|56012099003|18002099003|22082099003;
X-Microsoft-Antispam-Message-Info:
	t3lugM+UK3uwOXdLoAdM3vi+OB5mDx07AXk3YIgFafhgjvOQO6S0TJcLBVubrD013hWMhFjnDI/qqx4aQt3TRfVJ93lm3lTGU3+vtXqx9fmb87Jh3iCdqkXne02tys55pWnHJEntX/u4W/9vqDCzmrePyJiRm3/eEFtziPLTPMDkLOiQy6klzHBHyTVz5MKu2msVBCTWNlOIzNb8wTpKoHBWDtb0EBh4erQ9B8R2tTgRvwp/QJSFt/akqvlNkG/1gc0HWiEqX0HO7q5PihPjQPWl27D6HwQ5XKrc/+Q+TocmssreH+u2m54LVKTrfDr1+LpqmVyrkk8l31mcMHELzwgMc6cZqcS2slBKlsUTNFPsk/aqKgr+09VPeOGyOQ8t12VwxSSJfHcDXvksrs6M7xVL04Ma5lOQ8uw47IGGjAFMCwhRxlmEhigZoLoWwR/Q4yq85b9yG2RLZBrb8jyg1LIB3yt+0nfQ2qO7blrL9frF8irTQ3aXN7JKFu2EIzVDXr7kSgA62B6Lc1Q7rsyRBAVqORYiNRILtrvmuTLvIIXcsvAbbNc5g5uuXpkceXDuskUM1RaboIAkmInm+B7TeXBJqFCSVovqHeh2bSCV7HYj2F569sXhhkIA92TJ13a19k6zRc8IWDP1TM1kamdhUj68fkAxqTNaoM0MNzC8ZyovuwcCx7HTV5Xx6RI3MHPlZKyRrj91QeU9lN9QqObrzC3urX7d/rz6Vkxk1CJALwa6P186lhPINc1aXi2YzdCy8b3GmFZ7M++4Whl0O+E3lQ==
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)(7416014)(82310400026)(36860700016)(56012099003)(18002099003)(22082099003);DIR:OUT;SFP:1101;
X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1
X-MS-Exchange-AntiSpam-MessageData-0:
	P/KOPCUG9dYLl5q7rIE5O+XXMgbMw6pDAR4OTRIXFVm9EodTVDraJgwxSqEvN8ddpvUOWNj6QjeTr1uRXOZMREU8qYmOV8ZlBlkm0AVI3YLVaJ55JoArhEXUe3FQAlThkBuAYBddF73uVCOY8HM+RrrBtotzM+PWFGTo5Yv0pVSSG2ekbg2wXk3QTruBoJXwwYTgsNwJ8ab6m2YNQe0biGLhFckby44GJY0z9yu3iDexwK8NmevRIu5+qjCVpwlO5Pajh82F39BC1cPdAu0W7oMK4W6nbGMEvW7hn+ZdtJTDxTIcqsMcdx4OOgAJBjzA3vPWvCbgLjhz7BQ7rxtSUpahrPx7A+eax6IdVoWCYFpEJ4SWxPckRUOC6ZpGs7Z0dzVb80ZMcbVvAKK0GsUQ8T8TdxImXmrCBjru+1gINYamtve4kRbxC6NHTDou3GEh
X-OriginatorOrg: amd.com
X-MS-Exchange-CrossTenant-OriginalArrivalTime: 27 Apr 2026 09:21:37.4479
 (UTC)
X-MS-Exchange-CrossTenant-Network-Message-Id: b8c5cb0a-74c7-48c6-58bd-08dea43e6228
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:
	MN1PEPF0000F0E0.namprd04.prod.outlook.com
X-MS-Exchange-CrossTenant-AuthAs: Anonymous
X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem
X-MS-Exchange-Transport-CrossTenantHeadersStamped: MW4PR12MB6730
X-purgate-ID: tlsNG-4011c0/1777281704-453638B7-31460ADA/10/73395122804
X-purgate-type: spam
X-purgate-size: 873



On 24-Apr-26 3:36 PM, Oleksii Kurochko wrote:
> As domain type is part of common code now there is no any reason
NIT: remove "any" after "no"

> to have architecture-specific set_domain_type() functions so
> it is dropped.
> 
> Change the guard around access of kinfo->type to CONFIG_HAS_DOMAIN_TYPE
> for consistency. Also, drop and add some parentheses to be aligned
> with the similar if() below.
> 
> x86 with CONFIG_64BIT=y shouldn't use is_{32,64}bit_domain() as
> x86 doesn't have support of CONFIG_HAS_DOMAIN_TYPE. Since x86_32 Xen no
> longer builds, the fallback is currently only relevant for arm32.
> 
> Signed-off-by: Oleksii Kurochko <oleksii.kurochko@gmail.com>
You don't seem to remove enum domain_type type from struct arch_domain which is
now unused. With that removed:
Reviewed-by: Michal Orzel <michal.orzel@amd.com>

~Michal



From xen-devel-bounces@lists.xenproject.org Mon Apr 27 09:28:50 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 27 Apr 2026 09:28:50 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1294746.1571441 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wHIGZ-0001ca-PR; Mon, 27 Apr 2026 09:28:35 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1294746.1571441; Mon, 27 Apr 2026 09:28: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 1wHIGZ-0001cT-Ma; Mon, 27 Apr 2026 09:28:35 +0000
Received: by outflank-mailman (input) for mailman id 1294746;
 Mon, 27 Apr 2026 09:28:34 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <roger.pau@citrix.com>) id 1wHIGY-0001cN-6J
 for xen-devel@lists.xenproject.org; Mon, 27 Apr 2026 09:28:34 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wHIGX-000bGV-Bw
 for xen-devel@lists.xenproject.org; Mon, 27 Apr 2026 11:28:33 +0200
Received: from [10.42.69.5] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <roger.pau@citrix.com>)
 id 69ef2c33-e002-0a2a0a5209dd-0a2a4505bed8-42
 for <xen-devel@lists.xenproject.org>; Mon, 27 Apr 2026 11:28:33 +0200
Received: from [52.101.43.51]
 (helo=SJ2PR03CU001.outbound.protection.outlook.com)
 by tlsNG-c201ff.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.1)
 (envelope-from <roger.pau@citrix.com>)
 id 69ef2c3f-aaa8-0a2a45050019-34652b330ef5-3
 for <xen-devel@lists.xenproject.org>; Mon, 27 Apr 2026 11:28:32 +0200
Received: from CH7PR03MB7860.namprd03.prod.outlook.com (2603:10b6:610:24e::14)
 by PH0PR03MB6368.namprd03.prod.outlook.com (2603:10b6:510:aa::21)
 with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9846.26; Mon, 27 Apr
 2026 09:28:22 +0000
Received: from CH7PR03MB7860.namprd03.prod.outlook.com
 ([fe80::f5ba:35df:1c9f:b343]) by CH7PR03MB7860.namprd03.prod.outlook.com
 ([fe80::f5ba:35df:1c9f:b343%4]) with mapi id 15.20.9846.025; Mon, 27 Apr 2026
 09:28: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=PodwrolwoghAIPPgI4NbBsKeOZx1JI2aO6kxltdLBpCUPLnRdDkUng+wmEja810R75+ckdlbdAwpw/jm27M3R8ppq39fxZTsll2vfWbaNsbIswjyiRbJ7aaKW7BRR7GriXz4HUZPARhx0M6Pukc0NakvOp5D/JzHQKRFfw0WLKPNGSqv4grOh+wsH+WSf+zj4nLm0GbEFX/+Fq7m1T1BEkLyjL/6uCnU7k1YuC3Jnt4PxbXDLI+CqGoyjnLj+fqmVPEngGMUTX6ot1DZrcmmHUba6Rgs/flRR+Y6F5YvRW7UmqXNiqKH9ZI2vpyieY9z1g4ZQyekf/ZJdz5J0zGx8A==
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com;
 s=arcselector10001;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1;
 bh=jUVEuANS078iwanolIFjuksttSocqy9RvJT1TwThFfA=;
 b=TDZtyDR81RBiWWOtJOV/ywmZjf3Y/vAUvpMRzKQgCASN7M7lOTIWBQo9WQdliYIZCRQtONs63xVN5fDS0tvcWtaeyJ9gfRp5GudgP2SzicKaUgSfIp9cNbndKTCiZ+HZX76nz/JNRhQ59Mn0ksOyzk8O8F2SV02VRAM38daP3/Ietldtp9FRXEYer2macQKX1MjZwUtwoUlxsixb6/G8+0JHycTPwF+3ylPOyzAOVpS1xROrGDipNyE1e4On9crrhbfGVlAHvZ5Vfz4hzp0DLiZJAeZSOWQLq/olFoBS3NlJH39fH7tSYx69jzTLkWdGlqvm2A1qNPVxKFoYVHrQEA==
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=jUVEuANS078iwanolIFjuksttSocqy9RvJT1TwThFfA=;
 b=lnD7B+olKQLar8Brc/E3g0kL+fuPJNn0znwxt2vf44PboR0llYCtPhwb5iP2VcdW/ix3d4eA+K+PcUXZmVGSQ84zIDIgW/Ke96ScVppYMMwAmO3/boxeq+9OriRT9CZtCwocpHR4J2k3d6YrTGU95McFvXGCKJ+zixYKKio3/+Q=
Authentication-Results: dkim=none (message not signed)
 header.d=none;dmarc=none action=none header.from=citrix.com;
Date: Mon, 27 Apr 2026 11:28:18 +0200
From: Roger Pau =?utf-8?B?TW9ubsOp?= <roger.pau@citrix.com>
To: Jan Beulich <jbeulich@suse.com>
Cc: "xen-devel@lists.xenproject.org" <xen-devel@lists.xenproject.org>,
	Andrew Cooper <andrew.cooper3@citrix.com>
Subject: Re: [PATCH 2/3] x86/shadow: VRAM last_dirty tagging
Message-ID: <ae8sMiXAWjeXI3o1@macbook.local>
References: <5149ab32-7d03-4ae5-9af0-e62dd5836329@suse.com>
 <8559db88-5f1d-4ced-980c-e71c4e229c7c@suse.com>
Content-Type: text/plain; charset=utf-8
Content-Disposition: inline
In-Reply-To: <8559db88-5f1d-4ced-980c-e71c4e229c7c@suse.com>
X-ClientProxiedBy: MA2P292CA0003.ESPP292.PROD.OUTLOOK.COM
 (2603:10a6:250:1::20) To CH7PR03MB7860.namprd03.prod.outlook.com
 (2603:10b6:610:24e::14)
MIME-Version: 1.0
X-MS-PublicTrafficType: Email
X-MS-TrafficTypeDiagnostic: CH7PR03MB7860:EE_|PH0PR03MB6368:EE_
X-MS-Office365-Filtering-Correlation-Id: 9b789827-68f3-4881-908b-08dea43f534e
X-MS-Exchange-SenderADCheck: 1
X-MS-Exchange-AntiSpam-Relay: 0
X-Microsoft-Antispam:
	BCL:0;ARA:13230040|376014|366016|1800799024|22082099003|18002099003|56012099003;
X-Microsoft-Antispam-Message-Info:
	kWaP9J8h/RM49lrRcWUiuuOMdQagi+hblI4nqgiNNl3JfvbCTdmHO68Qtm3ljnrZw1OdLZhLvMFsy4fmrHa1AyZihsWCkURMtznbg65dtg2VEO0Ud9TabH/Jilh6i2t9t+jrnkGQttFNA//AyogJBAKmEcxphJjoUwxpUAac/wl58A2Gna6gRwkWnER8PELkeh06ekjxdWtyfC0SPPF+9A3K2YuVgglTYqYviiz2rIkegNh9IA4l1Q/b+8PetjKSe7BhxYkyIajQeE2beWvvlEKMVkV+McgAa1BrPZupQoaKncu9wwpsVoZgwh/9q6Al4rGhhI+Li/v2md9Pky0Hr3/rXZGFlIOGJSXhwpBWWPJxUpCrgOTQXp2moIPcEe3MeRmonB3+FHaf3H5EeAKUP1SMu1sA8hEkmVLSyLXair1+Kv34pMKGqkwAejQJ83PYd/+izsURhH57n7kxp4BfYvXxNUdDu20YJsr8RH4XTQrkzA7KV8610oTdUmM0A4lT8ZumRJk2tjoeVKj60cmGbRP7Nljlxj2JuepzO0Hn+oldGmsIrp7E9pnY2R7xELzLcbZIUqzIrZZdDwMHR38FrZ9yLaPJzdC3KzGIHdPf2q7bysbKbbsjPcfGswFijsFc+mQThrXLyWZILuwYjsHrWv0p19dN05uoAkpKkRJVF/5SKz794uyPsrNZq7Z4JXYezWM0Z3PeROwaPvlai7mICS77yaGSN3tOdh9psfKLybk=
X-Forefront-Antispam-Report:
	CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:CH7PR03MB7860.namprd03.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(376014)(366016)(1800799024)(22082099003)(18002099003)(56012099003);DIR:OUT;SFP:1101;
X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1
X-MS-Exchange-AntiSpam-MessageData-0:
	=?utf-8?B?M0RzV2oxcThCazFDVGJZQmcvUTNGWTlPN0dSMEMxWVJOTmcvWXhJdWUzc1Jq?=
 =?utf-8?B?ZGYzWENkR1J2SGhOS25TN0kxWTRxSm1ucEdFK3RLMkljTG1WU3YyVFdtK2x0?=
 =?utf-8?B?elZMQ1JFZzlTaTJ6N3lGcUNPUXVaMHNPVndDWUdmY205bjhpSFBFQXk0UCtl?=
 =?utf-8?B?SVBlZDVjVHcwelRudy81b1FMUXVsbU41clNybWhrNlp3d0xUenZ4VitjVTdI?=
 =?utf-8?B?dlRIUHRIV215amVvU0xLc2tJdGZKc3ovam9CeVlmWDh6TzV6bHd3blhTdnZJ?=
 =?utf-8?B?MnRCZ0xScm5aRU5nbi9CWnp6NDhYcmQwS2ZkRmIrRjBRbHdTdGgyc21wc2Vo?=
 =?utf-8?B?ZXZvZkRWQ3ZxQnkrRlZ3dzlUZTUyYkF6WHNqZjlsNkFHSk1RTE9vdkNpUGFJ?=
 =?utf-8?B?UUZFR0l4U3hzTTdjSktuRDNEWjIzNWNlSkxVMzZ4cWtkU1ZXYlhoS0phZ2wy?=
 =?utf-8?B?Q0FyMmRFL0VDNVBtWVVVOFZhS3JnSTZsdUxoc1R2Y3o4YXdrVHhIMTJ6a00r?=
 =?utf-8?B?U1AyOEdzMWFVUFpFck5veHBYSVZCSk5COWNnYlpvSVdYZHRpL21rNDlsc1BU?=
 =?utf-8?B?N2kvVHdSSmpTNHhDR3Bsd20vTU5BM0JSM3JuMVpwejhXSFdzdDJzOFYzVDdq?=
 =?utf-8?B?SUpsOE95bEU4Wm5YcExTR3FRU1NSaklJblpXbkovVFdwQkVIRUFSMFdsVGJG?=
 =?utf-8?B?SDNiNnlxSHRsOHFLYjdDRmJGV2w1MlFQdnBERzVZeHNFQndrKzZrUkx6QUVW?=
 =?utf-8?B?ekE5bHNuMFYxb0hYaFNtdDY0c2NKMER2YjgwTks5ajlEZ0FRQzh5R3ZzSW1V?=
 =?utf-8?B?UkxkVnZGa1NucVY4NzN3R29ZcHQ4ZkdTWFNidWE3RitpNjROM2dqbDNKVUlL?=
 =?utf-8?B?ejJCRjJIeXQvNFNiMXBPbEM0ZjRXSmhwSVFZckZWd3ozR240ZWFyMDlrSkZq?=
 =?utf-8?B?bEVEdlBHelFjQU5YcGdYN3pNdU0wL1BiVmErVDRCTUpsZWtLVVZhVnp3TzFq?=
 =?utf-8?B?ZU15VnB5SmVYZ1R5Qlg4WUs5Y3ExdWtETWUwcGRkaU91T1hjRWZsb2xiL3Zr?=
 =?utf-8?B?QkRkUGhwMll0M3VNcStrT29sK0pwQnlqNkhoOTBMOGVDaVBKc0FHMk14QVlB?=
 =?utf-8?B?OWhscnV6TndXUVV6ODNnMktWUmJpaS96bnFOVUhQOXV2MGxqdGo5VHlGYlZp?=
 =?utf-8?B?NC81QjBFZXA1R3p5ZmI2VnZKNHQ3K09YZ3J1czRsTGxLV3hVTjNndmc0SjRZ?=
 =?utf-8?B?WkowczNhMExlOVhlRmhFNWRESFJaUW0xWkd0RjAxQzgzd0ZLd1hSTGVyQU52?=
 =?utf-8?B?RWxmZ3dWTnFpcCtMTTY3ZmxsbnRtYm9RT2tFVmd3c29pUXlpemdUS0R3MlRQ?=
 =?utf-8?B?bU1STFRINHJzVDh4VFNVa0R0dU1pTDdnZFRwQjIxTDN6ZGNOTm8vZTE3dStY?=
 =?utf-8?B?aUJXQTR3YlBXM3QvM2htYkk4UitERmpoSTZ4LzhMb2F2WGlMb0ZNcHJKSVZQ?=
 =?utf-8?B?QktHamdhNGRLdEtqSytiRUNZODBMSGZWaE5iOTRialFHNHJTd3F6emNRK3g3?=
 =?utf-8?B?TjRTTmVQcTI3TGJUUG5tdWNCaGxuZ091YnUrYTNkb29TS3ZHQmxxSElkdjZm?=
 =?utf-8?B?bmh5cFhhM0d4eHJRRHNkVVV3REQ0ZCtBaHFKckIzd1hpK2Q0dFp6eVR3UTZQ?=
 =?utf-8?B?a0JkY0RTL3VuTno5RHBWT0lQTmd3UFRIRjFDTnVqTlBBVjJlQUhSNFU2T0Nq?=
 =?utf-8?B?Zm04d1p6RFo2amhTMk0zWitnZzM5eVdnSitIOUdxZUZiWGV3T242YzFlak9r?=
 =?utf-8?B?N2xqNW1XSnRvc1NpUC9BQk9QMXJqMllIM1JzYkRmRm94Y3pwUzVHZEhKNzVa?=
 =?utf-8?B?NWxITW1WSnZEWVlmSGZObWtKSnNCZXMrVG1zT01ZQUhWYm9rNWl0eGJoYkVG?=
 =?utf-8?B?RUtYV2hPQ1UvbDJtL1ZSS1ZBZjJ6RHVqRm9yOGFPcTFLeGRrVGc3NGUvL2Ry?=
 =?utf-8?B?Y3dLY09YaHViTU1lNlJJaDdta1RoODhtY25kNWVqUUxIRU1WRTMzaTFkU2Zo?=
 =?utf-8?B?aEtQRXhtYVJURGI3OXd0QkliUGc4MzdocXNtcWhScDY3V0cwWldNdGVNdFht?=
 =?utf-8?B?b0RvZDVQRTBzaG45d1dhV1pDdVdxRlB5N25RMUJLdjF6TVI0aGJlTWNjZ1BU?=
 =?utf-8?B?V2wrMWxEbml3ME9wWk5ZV2p6bVpvQlJqcWx1N2JXTjNkUHZ4WktFRkh1UmFH?=
 =?utf-8?B?WmU5RSt3NU8yVGl0UFV1Q1FtZVJOS20zRWJ5YWt5RzBhSngvb1lqQzkwVDk5?=
 =?utf-8?B?anlrWThLUkhJbFBFUEx1N3VLcHNxMVNOUG9xK2Z5MGNIZDF1dklmdz09?=
X-OriginatorOrg: citrix.com
X-MS-Exchange-CrossTenant-Network-Message-Id: 9b789827-68f3-4881-908b-08dea43f534e
X-MS-Exchange-CrossTenant-AuthSource: CH7PR03MB7860.namprd03.prod.outlook.com
X-MS-Exchange-CrossTenant-AuthAs: Internal
X-MS-Exchange-CrossTenant-OriginalArrivalTime: 27 Apr 2026 09:28:22.2904
 (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: GCbjE9QJASxC/FcSJAEBccy4D634JISYCokp/TGYjtsp18e1elpVtpw+/7aYLPC7mAsAN5Fni7z+1gCAwhW/SQ==
X-MS-Exchange-Transport-CrossTenantHeadersStamped: PH0PR03MB6368
X-purgate-ID: tlsNG-c201ff/1777282112-E1DDB443-CDEB3C46/0/0
X-purgate-type: clean
X-purgate-size: 3589

On Tue, Feb 03, 2026 at 05:49:55PM +0100, Jan Beulich wrote:
> ->last_dirty holding a valid value (one other than -1) is solely an
> indication of the bitmap being entirely clean. (The opposite isn't true,
> because of _sh_propagate() setting the field to a valid value without
> setting a bit in the bitmap.) As a consequence
> - setting the field to a valid value right after having allocated zero-
>   filled space is pointless,
> - copying the the all empty bitmap to the output array is pointless; with

Double 'the'?

>   the output array also having been allocated zero-filled, not even a
>   memset() is needed there,
> - after restoring bitmap contents when dealing with copy_to_guest() having
>   failed, the field needs setting to a valid value again.
> 
> Furthermore invoking NOW() in perhaps many loop iterations of the main
> loop is wasteful, too. Record whether any bit was set, and record a new
> ->last_dirty only once, after the loop. Then use the same NOW() value also
> for the subsequent check.
> 
> Signed-off-by: Jan Beulich <jbeulich@suse.com>
> 
> --- a/xen/arch/x86/mm/shadow/hvm.c
> +++ b/xen/arch/x86/mm/shadow/hvm.c
> @@ -1087,18 +1087,18 @@ int shadow_track_dirty_vram(struct domai
>          if ( (dirty_vram->dirty_bitmap = xzalloc_array(uint8_t, dirty_size)) == NULL )
>              goto out_sl1ma;
>  
> -        dirty_vram->last_dirty = NOW();
> +        dirty_vram->last_dirty = -1;
>  
>          /* Tell the caller that this time we could not track dirty bits. */
>          rc = -ENODATA;
>      }
> -    else if ( dirty_vram->last_dirty == -1 )
> -        /* still completely clean, just copy our empty bitmap */
> -        memcpy(dirty_bitmap, dirty_vram->dirty_bitmap, dirty_size);
> -    else
> +    /* Nothing to do when the bitmap is still completely clean. */
> +    else if ( dirty_vram->last_dirty != -1 )
>      {
>          mfn_t map_mfn = INVALID_MFN;
>          void *map_sl1p = NULL;
> +        bool any_dirty = false;
> +        s_time_t now;
>  
>          /* Iterate over VRAM to track dirty bits. */
>          for ( i = 0; i < nr_frames; i++ )
> @@ -1174,16 +1174,20 @@ int shadow_track_dirty_vram(struct domai
>              if ( dirty )
>              {
>                  dirty_vram->dirty_bitmap[i / 8] |= 1 << (i % 8);
> -                dirty_vram->last_dirty = NOW();
> +                any_dirty = true;
>              }
>          }
>  
> +        now = NOW();
> +        if ( any_dirty )
> +            dirty_vram->last_dirty = now;

I'm a bit confused with the setting of ->last_dirty here ...

> +
>          if ( map_sl1p )
>              unmap_domain_page(map_sl1p);
>  
>          memcpy(dirty_bitmap, dirty_vram->dirty_bitmap, dirty_size);
>          memset(dirty_vram->dirty_bitmap, 0, dirty_size);

... as here the bitmap is zeroed, and hence ->last_dirty should be set
to -1?

> -        if ( dirty_vram->last_dirty + SECONDS(2) < NOW() )
> +        if ( dirty_vram->last_dirty + SECONDS(2) < now )
>          {
>              /*
>               * Was clean for more than two seconds, try to disable guest
> @@ -1216,6 +1220,7 @@ int shadow_track_dirty_vram(struct domai
>          paging_lock(d);
>          for ( i = 0; i < dirty_size; i++ )
>              dirty_vram->dirty_bitmap[i] |= dirty_bitmap[i];
> +        dirty_vram->last_dirty = NOW();

I think this is doesn't deserve a 'Fixes:' tag because the setting of
->last_dirty unconditionally to NOW() regardless of whether the bitmap
is zeroed?

Thanks, Roger.


From xen-devel-bounces@lists.xenproject.org Mon Apr 27 09:30:05 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 27 Apr 2026 09:30:05 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1294753.1571450 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wHIHr-00026X-2e; Mon, 27 Apr 2026 09:29:55 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1294753.1571450; Mon, 27 Apr 2026 09:29: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 1wHIHr-00026Q-02; Mon, 27 Apr 2026 09:29:55 +0000
Received: by outflank-mailman (input) for mailman id 1294753;
 Mon, 27 Apr 2026 09:29: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 1wHIHp-00026I-2p
 for xen-devel@lists.xenproject.org; Mon, 27 Apr 2026 09:29:53 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wHIHo-004g9j-FV
 for xen-devel@lists.xenproject.org; Mon, 27 Apr 2026 11:29:52 +0200
Received: from [10.42.69.5] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <Michal.Orzel@amd.com>)
 id 69ef2c85-bab6-0a2a0a5309dd-0a2a450597ec-34
 for <xen-devel@lists.xenproject.org>; Mon, 27 Apr 2026 11:29:52 +0200
Received: from [40.93.196.66]
 (helo=SA9PR02CU001.outbound.protection.outlook.com)
 by tlsNG-c201ff.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.1)
 (envelope-from <Michal.Orzel@amd.com>)
 id 69ef2c8e-aaa8-0a2a45050019-285dc442c4bb-3
 for <xen-devel@lists.xenproject.org>; Mon, 27 Apr 2026 11:29:51 +0200
Received: from PH7PR10CA0017.namprd10.prod.outlook.com (2603:10b6:510:23d::10)
 by CH3PR12MB9218.namprd12.prod.outlook.com (2603:10b6:610:19f::22)
 with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9870.15; Mon, 27 Apr
 2026 09:29:44 +0000
Received: from CY4PEPF0000E9CD.namprd03.prod.outlook.com
 (2603:10b6:510:23d:cafe::b9) by PH7PR10CA0017.outlook.office365.com
 (2603:10b6:510:23d::10) with Microsoft SMTP Server (version=TLS1_3,
 cipher=TLS_AES_256_GCM_SHA384) id 15.20.9846.26 via Frontend Transport; Mon,
 27 Apr 2026 09:29:44 +0000
Received: from satlexmb08.amd.com (165.204.84.17) by
 CY4PEPF0000E9CD.mail.protection.outlook.com (10.167.241.132) with Microsoft
 SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id
 15.20.9846.18 via Frontend Transport; Mon, 27 Apr 2026 09:29:44 +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.17; Mon, 27 Apr
 2026 04:29:43 -0500
Received: from [10.252.145.116] (10.180.168.240) by satlexmb07.amd.com
 (10.181.42.216) with Microsoft SMTP Server id 15.2.2562.17 via Frontend
 Transport; Mon, 27 Apr 2026 04:29:42 -0500
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@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=ERFeo0BiUTzwTXP3UXlTnqv6n1McIMvYhmRlYuJpNaGAyXnAs1spsceDKKr1QUtXhnU27u/oEpo1KrMZRfCmrh/6H9JfTx+4Oi+8olGrHe2FDZxQuHgmwGtK1tSOT7f44KZ3+sczwDn0y32sU6gEerGqjqUP2q2mYEELQPgeHhwu8VnWvnzBHQqU8TbnSBtUFWOKgpKLnotYmKrcEUuc8zTWMeE4uGD8ed7fCQsm2jUXTw/feXpKktMJ3jqY2xszqNo3gEa+5vJff9JinEExvuNT8/G/6JN45Zlz9QMQWVUBbv5PuSXlhi49irSFtP9MlyOI2LAH1p1VRzbCCOa8Mg==
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com;
 s=arcselector10001;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1;
 bh=WDg9CJhuPiqxLjSHwdb9K9pncKzpK44pSkYsiPh/VmY=;
 b=u6aWXzDJUxX4oxUXPn3XtbjN0OJc2oZ5tE7YO6vIjk+lxFWWbMrInpyNfPCSqV98Vzm54MjvIdsTCyUEUklMFyAudfpkBeUVJ1rQS/UNrGU1iVR72XH5zwoNPOlOFhAumukFicBuZ84dR2bBQCqZMqWs1pphrIMAQm+tvn7DVWnh/1wf64SGfREobfy/9UJZKwQJSD8+CQacXczaAZ8cUe71O9ynSYT+fsLW2RSV83Ox4l5SMeynyTYeO+lw9Hok6EtZCq4Pam+AFxtsz6LZ+m/UdJelG/upuh4s3tqGRwQY14nfUYTBApLM9IhBJkewR/Uu8bWAAozuH+WAaQnCJA==
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=WDg9CJhuPiqxLjSHwdb9K9pncKzpK44pSkYsiPh/VmY=;
 b=NvCttFFEl4oDXNw/ezCLTBC02XpD+zNpdGkbycdRUVd1a6BSLeF6Dpb1uSvt4YzSkZQ6niqqrs3ud4bRbECi38osxHS41qrbZQ8IXUpJcLgnbcygJr9mH+tlXn0ETJoOVblU5VUw8asy8DmY5xHWyajzKA9RfkeN0EGlCdQqIso=
X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 165.204.84.17)
 smtp.mailfrom=amd.com; dkim=none (message not signed)
 header.d=none;dmarc=pass action=none header.from=amd.com;
Received-SPF: Pass (protection.outlook.com: domain of amd.com designates
 165.204.84.17 as permitted sender) receiver=protection.outlook.com;
 client-ip=165.204.84.17; helo=satlexmb08.amd.com; pr=C
Message-ID: <728169ed-693b-4abc-bfb7-3dfc7b239e86@amd.com>
Date: Mon, 27 Apr 2026 11:29:36 +0200
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH v3] arm/gicv3: Decode cacheability fields before comparing
To: Mykola Kvach <xakep.amatop@gmail.com>, <xen-devel@lists.xenproject.org>
CC: Mykola Kvach <mykola_kvach@epam.com>, Stefano Stabellini
	<sstabellini@kernel.org>, Julien Grall <julien@xen.org>, Bertrand Marquis
	<bertrand.marquis@arm.com>, Volodymyr Babchuk <Volodymyr_Babchuk@epam.com>,
	Mykyta Poturai <mykyta_poturai@epam.com>
References: <5da34f44edab55c50163addc6b52c680ea1ce2f7.1777278902.git.mykola_kvach@epam.com>
From: "Orzel, Michal" <michal.orzel@amd.com>
Content-Language: en-US
In-Reply-To: <5da34f44edab55c50163addc6b52c680ea1ce2f7.1777278902.git.mykola_kvach@epam.com>
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: 7bit
X-EOPAttributedMessage: 0
X-MS-PublicTrafficType: Email
X-MS-TrafficTypeDiagnostic: CY4PEPF0000E9CD:EE_|CH3PR12MB9218:EE_
X-MS-Office365-Filtering-Correlation-Id: 40dad48f-4153-4309-cc09-08dea43f8435
X-MS-Exchange-SenderADCheck: 1
X-MS-Exchange-AntiSpam-Relay: 0
X-Microsoft-Antispam:
	BCL:0;ARA:13230040|82310400026|36860700016|376014|1800799024|56012099003|22082099003|18002099003;
X-Microsoft-Antispam-Message-Info:
	m2mXetUK7cN5q+s0XpYSkbSU6iMR8RCVtAAdu7hX/c3IXF9wLFfDvF9+BUrBn2leZDZ1EKPU+CWaU+OO/xs5p/7HUNPESQvCPwA8xJ0sNnGK5TepntGQTKLmmtbrVp0RogFrD6qFs7aQE9FyMBwK3J41RUVtz3YRgUUCjFxJCumQdZDL25gINJhgqPwkHhL9+gGATUCGlLc5TMIQXy00260NTMMA0SW14lTwHSprAaMMuDzjTyBIIJu/5mkGb4dMJ3vt0jHFHQylsJSBTTlWmDpFjc32c3/h3AjY+t2A0l65iD/EsY/C1wZTpwqihr2mlrRCzhsKW7bW3Q2p+sCUsVBIpbjAc68WJUGkYBINBp5Pdy4lpbiXFp2m61Z2bRDX0jejQ+ReaNpnR77sYM/SqXfKOMEyjOUTGeT13y7ZVVtSZXL2ObXzoXmUd8Mos59PTo0UcC67ieBLbgHlfhcbuVz33Br4x+YZoKNpjFm+l9dOXc7Tp81rJocrZ+w40tt4O6IpAMnD8auFtoFUlMqTVQhpzFZIIOQZUHcbxD2m4YkkIc8pFx5q4ltZlpdFAgXW+NnvENtWwvBPcpkYesgC6r0k5pNPKGj1zTntblmKABLtQq6NsFBb7X6G228wNpHV0R30KI76cOcb2ByBRtjwAdHS6BDt/RBkAZRYCMNU9qsd7KnE5t1bg7csnMSU+MUBFki7jr1pG9lETbhKm3ugJvH8Jj85AkSjLVynMymDUB4bm/RRKoERxQN1uY/o4BObFLtyGx7QnPBK2gJ2oM9icw==
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)(376014)(1800799024)(56012099003)(22082099003)(18002099003);DIR:OUT;SFP:1101;
X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1
X-MS-Exchange-AntiSpam-MessageData-0:
	Q/dwaMsFK09PxRs7GbW+gn8N42PRGKxurBHLFI01noiowJbgOmCobtarcKauhu3fVG/prjAGT/q34sbUaynMwxRfjxPcJ1/bNX2fiYGvQ5GEqZ0YXIrsG8uv0WKyIlCkqUWTVrSMkFTzg3QSHySr3/cLnN2g84Iub4SuKWgHfbsY1d6t9EHxVfid7q+6ZEU/IWHCOy8FhsfmfCyjYAftMROvHnjwuZ+s69IrVfSAXZ65XeOeK1AXSB2UhUXDFsIJncvKI12nlVio7QY07gzqWycSxEvKJlwQ5AnAt/Fo+cN7CAm69omxIqVQtf/iDcAheFPfm7ifdMec0DEE36BHMcwbAru6ChSsQ8FC9VJPO2xnpFG1WR5JIa6oCugqZOldq2HY4fpVGmist1njZIbffxlHPSDDrnhHweeL6ID5w7EG+JtoKm4RGy2E0TlLFPkd
X-OriginatorOrg: amd.com
X-MS-Exchange-CrossTenant-OriginalArrivalTime: 27 Apr 2026 09:29:44.0311
 (UTC)
X-MS-Exchange-CrossTenant-Network-Message-Id: 40dad48f-4153-4309-cc09-08dea43f8435
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:
	CY4PEPF0000E9CD.namprd03.prod.outlook.com
X-MS-Exchange-CrossTenant-AuthAs: Anonymous
X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem
X-MS-Exchange-Transport-CrossTenantHeadersStamped: CH3PR12MB9218
X-purgate-ID: tlsNG-c201ff/1777282192-E13A0443-DC5A69E3/0/0
X-purgate-type: clean
X-purgate-size: 905



On 27-Apr-26 10:37 AM, Mykola Kvach wrote:
> From: Mykola Kvach <mykola_kvach@epam.com>
> 
> GITS_BASER_INNER_CACHEABILITY_MASK and
> GICR_PROPBASER_INNER_CACHEABILITY_MASK are shifted masks. Comparing the
> masked but unshifted values against GIC_BASER_CACHE_nC, which is an
> unshifted enum value, leads to incorrect detection of non-cacheable
> GITS_BASER tables and GICR_PROPBASER mappings.
> 
> Use MASK_EXTR() to decode these cacheability fields before comparing
> against GIC_BASER_CACHE_nC, so the backing memory is flushed when
> required.
> 
> Fixes: 05238012b86d ("ARM: GICv3 ITS: allocate device and collection table")
> Fixes: c9b939863c89 ("ARM: GICv3: allocate LPI pending and property table")
> Signed-off-by: Mykyta Poturai <mykyta_poturai@epam.com>
> Signed-off-by: Mykola Kvach <mykola_kvach@epam.com>
Reviewed-by: Michal Orzel <michal.orzel@amd.com>

~Michal



From xen-devel-bounces@lists.xenproject.org Mon Apr 27 09:30:28 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 27 Apr 2026 09:30:28 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1294762.1571459 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wHIIE-0003VM-Ee; Mon, 27 Apr 2026 09:30:18 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1294762.1571459; Mon, 27 Apr 2026 09:30: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 1wHIIE-0003VD-Bf; Mon, 27 Apr 2026 09:30:18 +0000
Received: by outflank-mailman (input) for mailman id 1294762;
 Mon, 27 Apr 2026 09:30:16 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <roger.pau@citrix.com>) id 1wHIIC-0003Uu-M5
 for xen-devel@lists.xenproject.org; Mon, 27 Apr 2026 09:30:16 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wHIIC-004gLb-26
 for xen-devel@lists.xenproject.org; Mon, 27 Apr 2026 11:30:16 +0200
Received: from [10.42.69.7] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <roger.pau@citrix.com>)
 id 69ef2ca3-bab6-0a2a0a5309dd-0a2a450797c6-16
 for <xen-devel@lists.xenproject.org>; Mon, 27 Apr 2026 11:30:15 +0200
Received: from [40.93.194.14]
 (helo=SN4PR0501CU005.outbound.protection.outlook.com)
 by tlsNG-ef75cf.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.1)
 (envelope-from <roger.pau@citrix.com>)
 id 69ef2ca6-229c-0a2a45070019-285dc20e2fe9-3
 for <xen-devel@lists.xenproject.org>; Mon, 27 Apr 2026 11:30:15 +0200
Received: from CH7PR03MB7860.namprd03.prod.outlook.com (2603:10b6:610:24e::14)
 by PH0PR03MB6368.namprd03.prod.outlook.com (2603:10b6:510:aa::21)
 with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9846.26; Mon, 27 Apr
 2026 09:30:13 +0000
Received: from CH7PR03MB7860.namprd03.prod.outlook.com
 ([fe80::f5ba:35df:1c9f:b343]) by CH7PR03MB7860.namprd03.prod.outlook.com
 ([fe80::f5ba:35df:1c9f:b343%4]) with mapi id 15.20.9846.025; Mon, 27 Apr 2026
 09:30: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=A8ZkksxYOjjjKNuLjVofu5dLoNrlczeYzblm9rCTk2LdQLg/Ez4ezZXQl3pIoqZN9sQvupa0vxqnpCI2QoXemnaHL73hN8y5IqiT2cB8oeUsD1DMuZPiulleBRhduNruhsEFRsiw0Y0x2EiWldwteCYmPgqOLlOVC5RTwznC2kgoWRsWQvQkZuJZofiyJgWS5IvEmj4aoN4FaU6ub8IOfiCesQm8D4Ek+IJBH86QLTLJU39YvVRtuQ1wOvpAjm5Vi5CBDGx7mne/NCPQ9pWU5l7786Latr8p4BHLOuxI46yuX+0+06vQPu+qgFCqUhjRjxDciRpy8GvilvNRxpxMNg==
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com;
 s=arcselector10001;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1;
 bh=UNCHFnMxk8AkXV10V2WO4PobGx52g6/NGPrUDNLWXHw=;
 b=k+gwatWsd6eGrjqn74wvFhi1fGPIZOn44WBuoVVTZhEdeT93X8UzGEXpOLSqDzXJu2uKQMt8rMR6guo8ZBVfNmN43h4hH9TD/ALajGJskGE7j1SYisXCtKKv2GG7cFyWF0LGuwQoOUFTDFwKq5Vs8SjD7TX43D76coFxYwaXUW4oObBR7zz5VNfVRCw7A7UBWvY4Y8RYt0icl/BvPL/ONJqq6/48DzbWYOm4pwVNDs1kh4a/0ZMgDDiMKDPuIkbF/KKvLo64fNxL5rZGHWXCjj74bkQ8ADDqotF06SYwTjgIQRzWGxAoJkfgfYoPPHw1m8/W1W53uoINarsL7KIiWQ==
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=UNCHFnMxk8AkXV10V2WO4PobGx52g6/NGPrUDNLWXHw=;
 b=nAVRWWfFaczAUL+7PEutBdNyOWt+o6x2i5r1wD2R7LsbgPcSeJhGA4+L2eWo3+FnJkT//88x6DxuIquTUxAolkwo00QMwLDrecVr54eP1nE4EfOsVuZqWXuMqNiVHvzmp5eh6WwvaYM0jnAL+xYDHu6hkBhum7HKZ/R1yiBm4rM=
Authentication-Results: dkim=none (message not signed)
 header.d=none;dmarc=none action=none header.from=citrix.com;
Date: Mon, 27 Apr 2026 11:30:09 +0200
From: Roger Pau =?utf-8?B?TW9ubsOp?= <roger.pau@citrix.com>
To: Jan Beulich <jbeulich@suse.com>
Cc: "xen-devel@lists.xenproject.org" <xen-devel@lists.xenproject.org>,
	Andrew Cooper <andrew.cooper3@citrix.com>
Subject: Re: [PATCH 3/3] x86/shadow: reduce flush_tlb's scope in
 shadow_track_dirty_vram()
Message-ID: <ae8soeRS09818ulY@macbook.local>
References: <5149ab32-7d03-4ae5-9af0-e62dd5836329@suse.com>
 <38581c16-e2a0-4f7e-a08a-3517063a27cc@suse.com>
Content-Type: text/plain; charset=utf-8
Content-Disposition: inline
Content-Transfer-Encoding: 8bit
In-Reply-To: <38581c16-e2a0-4f7e-a08a-3517063a27cc@suse.com>
X-ClientProxiedBy: BN1PR10CA0001.namprd10.prod.outlook.com
 (2603:10b6:408:e0::6) To CH7PR03MB7860.namprd03.prod.outlook.com
 (2603:10b6:610:24e::14)
MIME-Version: 1.0
X-MS-PublicTrafficType: Email
X-MS-TrafficTypeDiagnostic: CH7PR03MB7860:EE_|PH0PR03MB6368:EE_
X-MS-Office365-Filtering-Correlation-Id: 799fea73-dfca-418e-1aed-08dea43f9546
X-MS-Exchange-SenderADCheck: 1
X-MS-Exchange-AntiSpam-Relay: 0
X-Microsoft-Antispam:
	BCL:0;ARA:13230040|376014|366016|1800799024|22082099003|18002099003|56012099003;
X-Microsoft-Antispam-Message-Info:
	5nA3uQ0E7OVEUzjXpaihwELnMElpRi6eFIoQ766PfhfVMaU3YOwRX7CdCBKbPKQTssAqbKOiEGO4flPYKnopZ6Das64+gXr7V8rcDIOJEr/93qWH+jYkwj50UVw3wtclQz5YtK/wuLSmH7T001VdOv6I+6JLFZar7wFz0AfQaEl3061seGpLaTcJtme5VENG6G3p76MSrHdUB6xc5Ddy2rYEYru2SUzZdy4kbW0em+yEr1gC6/cAoZRlQD026Yfu9w2Tt6MOX7BjtSjrtLZw8emUWHaIaeJAlffRiRA17W8KeKvumy1M9kwidfTpHMOgcSLt0GtQGbTxCGeKkQ8DKNzG57wOft3kwKCIv50Pkhwf3C+L7bJdrN1amIf0c4hmajetzzbnyqW5vwlpSB/TzrNgA+sqjIwZmYdgyVe9ww3f7vTJ/SKEjOQ5Q2aORKuwDb/D3VMK9PfkCv/3jFaa8FxM867ncuyGF06bE+YMEFfN2wNWACYWXFkLDkPCyTwnSxSxzni7ISUUF7y82YDJiDwr1YGQ09ZsSM+PcoyqPKURGVwCxjO9yvs0XqIWysvqi1E2hgAl3m6LzrhErb/0tA997nYQWLlZKtcYRBZygj8caFgiC2JXbR4dd77YqORa/1vwSPwbYybPNydfMttAJ9dU3VtLvldsP51Ne13pplK1XXOxaAktNmUXPzYSUvOjSjm+KA/KhMXsDNWxtT5hLWPTpV2E5fnRIT5CMbmxuGU=
X-Forefront-Antispam-Report:
	CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:CH7PR03MB7860.namprd03.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(376014)(366016)(1800799024)(22082099003)(18002099003)(56012099003);DIR:OUT;SFP:1101;
X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1
X-MS-Exchange-AntiSpam-MessageData-0:
	=?utf-8?B?OVZpZmpZc1ZMSkVDSUd1bjViU1lpWUxpTmZPdVkyRXZiQXNJU1lOU3JOVlU4?=
 =?utf-8?B?d281eXZLRCtSc202c2g5ZE9RTDVUbU56K0FPcVJoVzBsRGZpZVh4S3FxRlV6?=
 =?utf-8?B?N0J6K3JyNzI2emRjbVZaRTVOajRrNUpLM1E1cGEvT2M1eW1NcG9qOVVzV0Zp?=
 =?utf-8?B?dnFHZnpST1BuNS81Wmd3aS8zOWlKcDZudnloQjZIcENoOU05QWlrcnhDMXRy?=
 =?utf-8?B?WTlSajJiOVhReVVRWU5qSVRHd0ppSEh2UFA2eW5vcVRtOWV5bStDRGdxOU45?=
 =?utf-8?B?MUNaTUo4RzlPaWRScmRvNGM4SzVndzFIK0lQUEduVUtkZHRTSmFCMzNKSDZl?=
 =?utf-8?B?ZkR1cTljdEUyeGRtdXBrNUN0cHF1dVpPV2ROMVJaeHVIWi9aTmVZeGhoSlMv?=
 =?utf-8?B?ZmxiVjllMjBNb3Z4WHl3Y0dJQ2NmeTg4UVhhQ3o5dHV2TGFSMXpmZGZ5WkNI?=
 =?utf-8?B?NDNSYmI3OFhJN3NmcUFGZ3pCNDVLZm90dWllaXdIUmtDdFg4L2NqZ0hxYnpY?=
 =?utf-8?B?SFF3cDVBQ0krRmp0MzlvZk92bmJoZlNRNUtYKzl1eU5vN2hoUVc3MWVoTXRz?=
 =?utf-8?B?am1HUGtiSExvMXpxNXVZZk13Vm5GelVZRlZlOFBwZXVFSndYQWdLbGFadDVH?=
 =?utf-8?B?K2taT0FnSzViQTdSRVZ6cTZMMytZVTExTis0UXNxYU9FNno5dmdjY3VkbTVW?=
 =?utf-8?B?TVZnNTFNUkJDZHk1eWNkc3RUSGFwNUdqank5WmpmcDk3MTJzYkROUTFXcC9U?=
 =?utf-8?B?cDlIQkdaNUNNTkE3dmRBMUVMVVppOW0wNkZVWSs4N3lYczV2SDczMzVSZ1hJ?=
 =?utf-8?B?NnlMMHUwTXN5UE15UEw4b3NMb3JHQ2dPa0o3Ny9oWmxSZVJTVWNGNUhhVVRP?=
 =?utf-8?B?VzJXZkVpQTN0QldDM1A2dGx4Z2FTYTlWOUk3eEJ3ZUxxUXBKTzN3bTBVVi9M?=
 =?utf-8?B?WkVVR1p1MUZJbzZrcEEzdG5ZekNZNXVqVHNuTGs3N2VORGUvclNPZUt2eExY?=
 =?utf-8?B?N3VKckxxMFgrRlJ0bFFXdUFYM0cvWHFFUzZ5TStUbk00YzROVWRJOWN1YzNs?=
 =?utf-8?B?UWJsS0ZWZndvQ2lZQkVaNWtrc0tCTkxJdk5PSzRjRUtBdWZmT1NhYVhCeFZp?=
 =?utf-8?B?L1lEZkhnQ3huMlVzUkNENTJ3NDFzaVVWODdxNEwvN1lqWTcvTjJ6SXE5ZElu?=
 =?utf-8?B?dXhjUWdCcS84Zkx0dFh0TUw1YlFnWnBmcnNlOEFzeTVRWURGZ2lqbVpxVk1q?=
 =?utf-8?B?YUF1bFIveTlTTEtTYnFkRzFhU3pCOHNYbDNlQ3ZDS3krNGRCU3ZxYTdtUlFZ?=
 =?utf-8?B?NjdhRnZjb3hVakZDa1lMdC9pMVZ5anNCWFNMaFUxVHFnYVZuWno1bnNUejFR?=
 =?utf-8?B?OTNubTBtTFVlZkZFUkduNlZEcStYNjZaWW9DVjYweHNxanhzQktDTVNGQThS?=
 =?utf-8?B?MDYwdys0U2FYc053dExLV0I5bjZudWFlQnRCRTlPekFIMldPMDNTU1pYMXQr?=
 =?utf-8?B?R1ptWnBsNmZ2VUZJNnl1Q0ZEZEtyVEhySGZoMkxqL2hleWdtbG96OHNocC94?=
 =?utf-8?B?RlpuMnRJajZpdWVyRFI2WFR3UzUyd1lzcVBGU1Mvam9yQklQb3JwV1lGYTl3?=
 =?utf-8?B?Q055K1NvWW1Xb1dMY0RQM3o5RXBHWXBzdEtLZEI1TnpNWUpCMDNFdk50MHZn?=
 =?utf-8?B?WGNKVWdQWWozWEk5RnRhdjR6MTZRRCswUE15N0xMdXlCSVFLQ2kxL0Z1VDh6?=
 =?utf-8?B?MnEvb3o2N2JOaEl1bEZGVEFBRTdpRGtJeXM0LytoYlM5ZzhaTzZCbmlZbHRp?=
 =?utf-8?B?RUJ0RXBjbjRQcUF5K1hSb3M3c3hlZlF0SWFxN3k4WHdlWFplWk9pY2VaRzVx?=
 =?utf-8?B?cVRWb25FeDY0aUxMdzQ4d1ZtWnZWVzR3dTlKNFNmSmRNcWdmdDdHU1MzU0dy?=
 =?utf-8?B?ZnZrQXU2ZEJpYUExZjdxSytzYzlDWVlSTktwb2hxMTFGRmJYUUVVRTN1RDFW?=
 =?utf-8?B?V290ZVZGUUtERjNkK2tjSFd3SXM0YjEyeFFTSHVpeUVKQjlxVEZTdy9ScjdV?=
 =?utf-8?B?aldvY2FuM2NTN3E3dERERnNzY3FSN29VWXdXZW10OG80cXZONjRrQVhvb09j?=
 =?utf-8?B?bndpclhOYWZPOWxONjJKYjZRNzNsQmZtU3lQd2lkN1MzU0JYbXNJN3poTzF6?=
 =?utf-8?B?MFl2RUsvMTVpVG15NDdlZ2IzYlMzd2hTOG56WWl6Z2xOV2g5bExaN283WVJ5?=
 =?utf-8?B?SzBFWFdOT0xPMDA5M1F2L1Iwc0l2SDh0Sy8ycDBrV285VStrc20zVkdIUFl3?=
 =?utf-8?B?T2dSZ0lha2N2eGt4MHJHNVZBaTlmenNpTEVqYThHWDA2YWdhTTZnUT09?=
X-OriginatorOrg: citrix.com
X-MS-Exchange-CrossTenant-Network-Message-Id: 799fea73-dfca-418e-1aed-08dea43f9546
X-MS-Exchange-CrossTenant-AuthSource: CH7PR03MB7860.namprd03.prod.outlook.com
X-MS-Exchange-CrossTenant-AuthAs: Internal
X-MS-Exchange-CrossTenant-OriginalArrivalTime: 27 Apr 2026 09:30:12.9079
 (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: KcU72IklvYx8BhQOocKL3IN9IrbSr+Kt9iTpSoxBz8eNCs6MM5lmM4Yal++ZbuK1ylPqlvr3xaFhUSJg2dnkog==
X-MS-Exchange-Transport-CrossTenantHeadersStamped: PH0PR03MB6368
X-purgate-ID: tlsNG-ef75cf/1777282215-ADD6FC48-49DCCD0C/0/0
X-purgate-type: clean
X-purgate-size: 387

On Tue, Feb 03, 2026 at 05:50:31PM +0100, Jan Beulich wrote:
> It's set only in the main "else", so the declaration as well as the sole
> consumer can also move into that more narrow scope. This may in particular
> help with possible future locking changes.
> 
> Signed-off-by: Jan Beulich <jbeulich@suse.com>

Acked-by: Roger Pau Monné <roger.pau@citrix.com>

Thanks, Roger.


From xen-devel-bounces@lists.xenproject.org Mon Apr 27 10:54:13 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 27 Apr 2026 10:54:13 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1294779.1571491 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wHJbK-000609-SA; Mon, 27 Apr 2026 10:54:06 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1294779.1571491; Mon, 27 Apr 2026 10:54: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 1wHJbK-0005zD-ND; Mon, 27 Apr 2026 10:54:06 +0000
Received: by outflank-mailman (input) for mailman id 1294779;
 Mon, 27 Apr 2026 10:54:05 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <freddy77@gmail.com>) id 1wHJbJ-0005wq-QX
 for xen-devel@lists.xenproject.org; Mon, 27 Apr 2026 10:54:05 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wHJbJ-00C4TO-7F
 for xen-devel@lists.xenproject.org; Mon, 27 Apr 2026 12:54:05 +0200
Received: from [10.42.69.12] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <freddy77@gmail.com>)
 id 69ef404b-bab6-0a2a0a5309dd-0a2a450c96ba-12
 for <xen-devel@lists.xenproject.org>; Mon, 27 Apr 2026 12:54:05 +0200
Received: from [209.85.128.48] (helo=mail-wm1-f48.google.com)
 by tlsNG-d25034.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.1)
 (envelope-from <freddy77@gmail.com>)
 id 69ef404d-62f1-0a2a450c0019-d1558030a430-3
 for <xen-devel@lists.xenproject.org>; Mon, 27 Apr 2026 12:54:05 +0200
Received: by mail-wm1-f48.google.com with SMTP id
 5b1f17b1804b1-4891f625344so90080665e9.0
 for <xen-devel@lists.xenproject.org>; Mon, 27 Apr 2026 03:54:05 -0700 (PDT)
Received: from localhost.localdomain (5.116.208.46.dyn.plus.net.
 [46.208.116.5]) by smtp.gmail.com with ESMTPSA id
 5b1f17b1804b1-48a5c4b9e8dsm116133355e9.7.2026.04.27.03.54.03
 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
 Mon, 27 Apr 2026 03:54:03 -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=20251104 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=20251104; t=1777287244; x=1777892044; 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;
        bh=bvJdGnq8cUcIRKsRqa+Ot2JNRA4/ZQKz59vK5GFR3u4=;
        b=fEyvEUkJ3Ov/tyWaEjHQQQ/u9TSJ/kZ1W6ToR1i4kCXT9rWkgeenmDOVik2dxjE3js
         rcJ0+latap+jmHQLajsbFcxQFCaHHumVBgmYVO2b0q0mXHMjmtvFwyfdv1vLLmXtbXJv
         IbLvaE1Fl82/fygodiqZMjZ551oaeQlxrbc3QLv1JNaoOdt16vUhfacJzv3OUkbeDLBb
         pZwOiWKrpAHnygPqKsesTMH4h6pgVxPXaCna1N+yYOOd4WOW8HsKQvPYqck5wGAncQTl
         xmwlHrgSEMoLMbnS1NBZbYCRPe7mperAbQzSGLrgyGz6ZSAQrm6n4LS1xyKLHb9UeCwJ
         OfFw==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20251104; t=1777287244; x=1777892044;
        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;
        bh=bvJdGnq8cUcIRKsRqa+Ot2JNRA4/ZQKz59vK5GFR3u4=;
        b=DdavYh2khl4qwl6YB5aiNeFNQRxOhlB0l1HQw2sW9zkQl7EFeba9A2gDmCDTKxYhPn
         d3OqR2IQ6gAxOKxzKhW10SLnZcPMpaMsudM8zWQExuFkDbyiQXT2kFBgUwWjzgx5OEw6
         pO3Hjk1wxxqmqqf+OCcRbhYcakt96hMpnzmk8DN92Wf7WUu14XCup15/2ikHpR9g/Xio
         hgmB7zcWnEgg1s6OGFfXaERMBJIKSdQ4ZSjmgiqqKNpSV++o4vhfwHaSKdA7wG55QYcc
         5cUyWTnJGnIDCyuOjvMI9jc6Yi38u9kTyU19WCKyC1rXPKmieRANqdLVzufcpihVVcCh
         Qv3g==
X-Gm-Message-State: AOJu0Yy3m8tTwTR06DyuzSEurUe9+SX+E26zkSQmAqGjR0FVI9lfDpw8
	P4XXMhSoxYoF2/rjZ3cl1FZqejPWImn6yE/k1qxjfqvBKWEPt4m7NpzjknWYZ+3T
X-Gm-Gg: AeBDietfPO5XVrmUqeatZxynPiTGhJRkXHgeLTvMnyTR4fc6cpLai+xTspRZDQDWSCh
	FX2IPcY3g2ku3U1VGjGoBE2v2mQ+UD9Xfrs4fAgjB8Rxyba00plA0P+ioK+I0CZHCZwC0PZGArN
	ZFLcmI6M8tHLBwNQIZbFDHywmj1nq92wTS+7yYnzmZ9Abbp3RgmrzzyTz8W4moHUHpiBMysTHzP
	S2TaTfT4jUAfO/nVWcLaQwC37KAHxp48OM3CYlHVB5IAg2Vsxif6NHHMjKF0t6sxdfOLgTZ2cdy
	m1ixylK62C+Wb/khCZ6jB0V170eR3f6SGrUSkD57EobYwZ0ryDkH6dXyba4SM8KO/VR83NvcIor
	ib6N33Iysx4tVdJd0hmcUQTpBNESyAH+LsHDYpMDxuRLMt4I0LNBpNCM/N1Mkzwq7mQ7G6Va/qJ
	zlvG9sZrjLGogKjttQA3jm/UUUVYx7m8h7ts3MJu9Qn5QVsahKaVBAAtJawd0r3qJZw4PX7B1NS
	YZT
X-Received: by 2002:a05:600c:870e:b0:488:aa33:dc8f with SMTP id 5b1f17b1804b1-488fb84ffb8mr571290555e9.0.1777287244170;
        Mon, 27 Apr 2026 03:54:04 -0700 (PDT)
From: Frediano Ziglio <freddy77@gmail.com>
X-Google-Original-From: Frediano Ziglio <frediano.ziglio@cloud.com>
To: xen-devel@lists.xenproject.org
Cc: Frediano Ziglio <frediano.ziglio@citrix.com>,
	Anthony PERARD <anthony.perard@vates.tech>,
	Juergen Gross <jgross@suse.com>
Subject: [PATCH v2 3/7] xenguest: Allows writev_exact to change iov array
Date: Mon, 27 Apr 2026 11:53:28 +0100
Message-ID: <20260427105338.99792-4-frediano.ziglio@cloud.com>
X-Mailer: git-send-email 2.43.0
In-Reply-To: <20260427105338.99792-1-frediano.ziglio@cloud.com>
References: <20260427105338.99792-1-frediano.ziglio@cloud.com>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit
X-purgate-ID: tlsNG-d25034/1777287245-6F57FCF5-7DF79E61/0/0
X-purgate-type: clean
X-purgate-size: 3182

From: Frediano Ziglio <frediano.ziglio@citrix.com>

Avoid having to allocate and copy the array if a partial write
happens.
The implementation in tools/libs/store/xs.c already use this
signature and method.

Signed-off-by: Frediano Ziglio <frediano.ziglio@citrix.com>
---
 tools/libs/ctrl/xc_private.c | 26 +++++---------------------
 tools/libs/ctrl/xc_private.h |  2 +-
 2 files changed, 6 insertions(+), 22 deletions(-)

diff --git a/tools/libs/ctrl/xc_private.c b/tools/libs/ctrl/xc_private.c
index bb0f81d6f389..946fc307aabd 100644
--- a/tools/libs/ctrl/xc_private.c
+++ b/tools/libs/ctrl/xc_private.c
@@ -635,7 +635,7 @@ int write_exact(int fd, const void *data, size_t size)
 /*
  * MiniOS's libc doesn't know about writev(). Implement it as multiple write()s.
  */
-int writev_exact(int fd, const struct iovec *iov, int iovcnt)
+int writev_exact(int fd, struct iovec *iov, int iovcnt)
 {
     int rc, i;
 
@@ -649,9 +649,8 @@ int writev_exact(int fd, const struct iovec *iov, int iovcnt)
     return 0;
 }
 #else
-int writev_exact(int fd, const struct iovec *iov, int iovcnt)
+int writev_exact(int fd, struct iovec *iov, int iovcnt)
 {
-    struct iovec *local_iov = NULL;
     int rc = 0, iov_idx = 0, saved_errno = 0;
     ssize_t len;
 
@@ -686,23 +685,9 @@ int writev_exact(int fd, const struct iovec *iov, int iovcnt)
                 len -= iov[iov_idx++].iov_len;
             else
             {
-                /* Partial write of iov[iov_idx]. Copy iov so we can adjust
-                 * element iov_idx and resubmit the rest. */
-                if ( !local_iov )
-                {
-                    local_iov = malloc(iovcnt * sizeof(*iov));
-                    if ( !local_iov )
-                    {
-                        saved_errno = ENOMEM;
-                        rc = -1;
-                        goto out;
-                    }
-
-                    iov = memcpy(local_iov, iov, iovcnt * sizeof(*iov));
-                }
-
-                local_iov[iov_idx].iov_base += len;
-                local_iov[iov_idx].iov_len  -= len;
+                /* Partial write of iov[iov_idx]. */
+                iov[iov_idx].iov_base += len;
+                iov[iov_idx].iov_len  -= len;
                 break;
             }
         }
@@ -711,7 +696,6 @@ int writev_exact(int fd, const struct iovec *iov, int iovcnt)
     saved_errno = 0;
 
  out:
-    free(local_iov);
     errno = saved_errno;
     return rc;
 }
diff --git a/tools/libs/ctrl/xc_private.h b/tools/libs/ctrl/xc_private.h
index b5892ae8dc1e..3af996e9002e 100644
--- a/tools/libs/ctrl/xc_private.h
+++ b/tools/libs/ctrl/xc_private.h
@@ -383,7 +383,7 @@ int xc_flush_mmu_updates(xc_interface *xch, struct xc_mmu *mmu);
 /* Return 0 on success; -1 on error setting errno. */
 int read_exact(int fd, void *data, size_t size); /* EOF => -1, errno=0 */
 int write_exact(int fd, const void *data, size_t size);
-int writev_exact(int fd, const struct iovec *iov, int iovcnt);
+int writev_exact(int fd, struct iovec *iov, int iovcnt);
 
 int xc_ffs8(uint8_t x);
 int xc_ffs16(uint16_t x);
-- 
2.53.0



From xen-devel-bounces@lists.xenproject.org Mon Apr 27 10:54:13 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 27 Apr 2026 10:54:13 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1294782.1571521 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wHJbN-0006qz-Qf; Mon, 27 Apr 2026 10:54:09 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1294782.1571521; Mon, 27 Apr 2026 10:54: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 1wHJbN-0006qH-NL; Mon, 27 Apr 2026 10:54:09 +0000
Received: by outflank-mailman (input) for mailman id 1294782;
 Mon, 27 Apr 2026 10:54:08 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <freddy77@gmail.com>) id 1wHJbM-0006Ur-QL
 for xen-devel@lists.xenproject.org; Mon, 27 Apr 2026 10:54:08 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wHJbM-00FJ4k-6s
 for xen-devel@lists.xenproject.org; Mon, 27 Apr 2026 12:54:08 +0200
Received: from [10.42.69.6] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <freddy77@gmail.com>)
 id 69ef404d-2eae-0a2a0a5409dd-0a2a4506aba4-14
 for <xen-devel@lists.xenproject.org>; Mon, 27 Apr 2026 12:54:08 +0200
Received: from [209.85.128.47] (helo=mail-wm1-f47.google.com)
 by tlsNG-16d1c6.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.1)
 (envelope-from <freddy77@gmail.com>)
 id 69ef404f-7371-0a2a45060019-d155802fe164-3
 for <xen-devel@lists.xenproject.org>; Mon, 27 Apr 2026 12:54:08 +0200
Received: by mail-wm1-f47.google.com with SMTP id
 5b1f17b1804b1-488a8ca4aadso140739775e9.3
 for <xen-devel@lists.xenproject.org>; Mon, 27 Apr 2026 03:54:08 -0700 (PDT)
Received: from localhost.localdomain (5.116.208.46.dyn.plus.net.
 [46.208.116.5]) by smtp.gmail.com with ESMTPSA id
 5b1f17b1804b1-48a5c4b9e8dsm116133355e9.7.2026.04.27.03.54.06
 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
 Mon, 27 Apr 2026 03:54: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=20251104 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=20251104; t=1777287247; x=1777892047; 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;
        bh=R7dVoM67UHYTIleORpVUCsCVE7I/cjwGpwM6+OI25+A=;
        b=O2rnqAWdKbFKwIeA8WjhUKDFjzkRxAGGse/kuXy5huC4XLI8xHYXYA5A68Ylf5pmXC
         Txi2k4hxkfUjZpp7T8gT02vZ9FRQWEYyEVjHw83MVZOxNnIHXp0k8Fe3gsA0cJG0UrfQ
         vn8mmfUWZ+aAZy3PCpdYCLg7okOLvONpE9RF/tB2pQ2RQT9XlWjjUxMAMEkMwqNGlqZe
         S0894gZhsPJe039MSdvws8LV4mm7ECwn0m9+DosLx9p1V+/WOZJYGIghYAS9yv6viF/w
         QShD2cWB7LLn1UatQG646lV4iCnmwLOm/595CrRLVvsuaWWLo0hs/JJHAO+hwiiO1lDQ
         zwXg==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20251104; t=1777287247; x=1777892047;
        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;
        bh=R7dVoM67UHYTIleORpVUCsCVE7I/cjwGpwM6+OI25+A=;
        b=OUKthnCNA7f4qsJVdjz5l3Y4HS0Zyq0lu6gKzONAaK6Cuf+rWi9FnNPGlfA7nx9pnU
         Qs5lg1l0KNeJycxYxfByFp22fXn4kBsE1pj0VJgY0vmj/7oeasVeGDMVAr4NFL14NrII
         zEWqIBUOA6GLVde5H3NK65KVnZRpewTfPsw8n6cEm2PccAhxJGSIBvMrgTzx/fzNo+Q5
         RuPl9UO5QYdzTatUVKx/9hhFVINkfMRmZghhesHn3huEsFL4McEv3p5hSB0Yt0WAmitu
         j/dos2T8AIpGXb5RaFHwClkbh93MBPAwYno4J5l+HgqDROKZMFrBGJcwsbOMiHDdFb20
         RmsA==
X-Gm-Message-State: AOJu0YxmC0heCEzdG/dd3xc7JN1bLWLtDm0QxVRpviVajll2eiSYkEUO
	qhxSzZxJ+Tnqbg+nIaHqQFCZRuRBEsjdVUV5BVYfy4WirycyNnaHeYDaGxXebf2/
X-Gm-Gg: AeBDiet4XLjgoFDbX/oGRUMvld+bzVFNlJdHH7bqxHppAHuOcVWCH1vjTQw9LZYpDEU
	x5x+Uu7ECK+53u4AYIojRKfSeYnQFWLtm+PjZZMn9Ch9IUacVue7jvJ9oSbiCpGAhoRHr8CHH5k
	PdAMl39ZvnFcCZr2Y6rT+r4HuSgyGbKqb8GS4vMpLF2BNgsnXDBrrKR3uQlwQAwX1/nG6GVg2Ej
	g1tcMKcxCnTmhkDDGuzA1iqjh5wHKr9GpP6myA2tJ136IGGCcCw9tY9+t+BEAmQGmUcqjuilUQ7
	0VhBL4PrsYsRvOjieLGeWe9xsUzL/23T2fzPPnV7Zrz7i6xncwK35acMWZZEGeuBucew4E3gg+m
	lc1Ni/oOEzyY74sEkUP2yhjzivjS0r9P9dZuTlfKRJ3UR1Mrx2YEL6aN4JkSAhAlEAQtRW35CvK
	q+FO+08yvwnMNMSc+6ZJBGnn9g5Qi2QO15OB0K8bDI3X5YcxbPzauUiW+sUw6ZFylKVXZtTIVvG
	emQ
X-Received: by 2002:a05:600c:1da1:b0:488:f453:b976 with SMTP id 5b1f17b1804b1-488fb7844c5mr648731355e9.27.1777287246992;
        Mon, 27 Apr 2026 03:54:06 -0700 (PDT)
From: Frediano Ziglio <freddy77@gmail.com>
X-Google-Original-From: Frediano Ziglio <frediano.ziglio@cloud.com>
To: xen-devel@lists.xenproject.org
Cc: =?UTF-8?q?Edwin=20T=C3=B6r=C3=B6k?= <edwin.torok@citrix.com>,
	Anthony PERARD <anthony.perard@vates.tech>,
	Juergen Gross <jgross@suse.com>,
	Frediano Ziglio <frediano.ziglio@citrix.com>
Subject: [PATCH v2 6/7] tools/libs/guest: allocate various migration arrays just once
Date: Mon, 27 Apr 2026 11:53:31 +0100
Message-ID: <20260427105338.99792-7-frediano.ziglio@cloud.com>
X-Mailer: git-send-email 2.43.0
In-Reply-To: <20260427105338.99792-1-frediano.ziglio@cloud.com>
References: <20260427105338.99792-1-frediano.ziglio@cloud.com>
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
X-purgate-ID: tlsNG-16d1c6/1777287248-52974D75-3D252544/0/0
X-purgate-type: clean
X-purgate-size: 6409

From: Edwin Török <edwin.torok@citrix.com>

Allocate these array just once at the start of migration,
using the maximum batch size, and free them at the end.

Signed-off-by: Edwin Török <edwin.torok@citrix.com>
Signed-off-by: Frediano Ziglio <frediano.ziglio@citrix.com>
---
 tools/libs/guest/xg_sr_common.h | 13 +++++++
 tools/libs/guest/xg_sr_save.c   | 66 +++++++++++++--------------------
 2 files changed, 39 insertions(+), 40 deletions(-)

diff --git a/tools/libs/guest/xg_sr_common.h b/tools/libs/guest/xg_sr_common.h
index ec42b4a9e535..f84c47800098 100644
--- a/tools/libs/guest/xg_sr_common.h
+++ b/tools/libs/guest/xg_sr_common.h
@@ -211,6 +211,18 @@ static inline int update_blob(struct xc_sr_blob *blob,
     return 0;
 }
 
+struct xc_sr_context_save_buffers
+{
+    xen_pfn_t batch_pfns[MAX_BATCH_SIZE];
+    xen_pfn_t mfns[MAX_BATCH_SIZE];
+    xen_pfn_t types[MAX_BATCH_SIZE];
+    int errors[MAX_BATCH_SIZE];
+    void *guest_data[MAX_BATCH_SIZE];
+    void *local_pages[MAX_BATCH_SIZE];
+    struct iovec iov[MAX_BATCH_SIZE + 2]; /* headers + data */
+    uint64_t rec_pfns[MAX_BATCH_SIZE];
+};
+
 struct xc_sr_context
 {
     xc_interface *xch;
@@ -246,6 +258,7 @@ struct xc_sr_context
             unsigned long *deferred_pages;
             unsigned long nr_deferred_pages;
             xc_hypercall_buffer_t dirty_bitmap_hbuf;
+            struct xc_sr_context_save_buffers *buffers;
         } save;
 
         struct /* Restore data. */
diff --git a/tools/libs/guest/xg_sr_save.c b/tools/libs/guest/xg_sr_save.c
index 8c4e760f8d0a..7d8055a3f9e8 100644
--- a/tools/libs/guest/xg_sr_save.c
+++ b/tools/libs/guest/xg_sr_save.c
@@ -86,16 +86,16 @@ static int write_checkpoint_record(struct xc_sr_context *ctx)
 static int write_batch(struct xc_sr_context *ctx)
 {
     xc_interface *xch = ctx->xch;
-    xen_pfn_t *mfns = NULL, *types = NULL;
+    xen_pfn_t *mfns, *types;
     void *guest_mapping = NULL;
-    void **guest_data = NULL;
-    void **local_pages = NULL;
-    int *errors = NULL, rc = -1;
+    void **guest_data;
+    void **local_pages;
+    int *errors, rc = -1;
     unsigned int i, p, nr_pages = 0, nr_pages_mapped = 0;
     unsigned int nr_pfns = ctx->save.nr_batch_pfns;
     void *page, *orig_page;
-    uint64_t *rec_pfns = NULL;
-    struct iovec *iov = NULL; int iovcnt = 0;
+    uint64_t *rec_pfns;
+    struct iovec *iov; int iovcnt = 0;
     struct {
         struct xc_sr_rhdr rec;
         struct xc_sr_rec_page_data_header page_data;
@@ -105,26 +105,24 @@ static int write_batch(struct xc_sr_context *ctx)
     };
 
     assert(nr_pfns != 0);
+    assert(nr_pfns <= MAX_BATCH_SIZE);
+    assert(ctx->save.buffers);
 
     /* Mfns of the batch pfns. */
-    mfns = malloc(nr_pfns * sizeof(*mfns));
+    mfns = ctx->save.buffers->mfns;
     /* Types of the batch pfns. */
-    types = malloc(nr_pfns * sizeof(*types));
+    types = ctx->save.buffers->types;
     /* Errors from attempting to map the gfns. */
-    errors = malloc(nr_pfns * sizeof(*errors));
+    errors = ctx->save.buffers->errors;
     /* Pointers to page data to send.  Mapped gfns or local allocations. */
-    guest_data = calloc(nr_pfns, sizeof(*guest_data));
+    guest_data = ctx->save.buffers->guest_data;
+    memset(guest_data, 0, sizeof(*guest_data) * nr_pfns);
     /* Pointers to locally allocated pages.  Need freeing. */
-    local_pages = calloc(nr_pfns, sizeof(*local_pages));
+    local_pages = ctx->save.buffers->local_pages;
+    memset(local_pages, 0, sizeof(*local_pages) * nr_pfns);
     /* iovec[] for writev(). */
-    iov = malloc((nr_pfns + 2) * sizeof(*iov));
-
-    if ( !mfns || !types || !errors || !guest_data || !local_pages || !iov )
-    {
-        ERROR("Unable to allocate arrays for a batch of %u pages",
-              nr_pfns);
-        goto err;
-    }
+    iov = ctx->save.buffers->iov;
+    rec_pfns = ctx->save.buffers->rec_pfns;
 
     for ( i = 0; i < nr_pfns; ++i )
     {
@@ -210,14 +208,6 @@ static int write_batch(struct xc_sr_context *ctx)
         }
     }
 
-    rec_pfns = malloc(nr_pfns * sizeof(*rec_pfns));
-    if ( !rec_pfns )
-    {
-        ERROR("Unable to allocate %zu bytes of memory for page data pfn list",
-              nr_pfns * sizeof(*rec_pfns));
-        goto err;
-    }
-
     hdrs.rec.length = sizeof(hdrs.page_data);
     hdrs.rec.length += nr_pfns * sizeof(*rec_pfns);
     hdrs.rec.length += nr_pages * PAGE_SIZE;
@@ -267,17 +257,13 @@ static int write_batch(struct xc_sr_context *ctx)
     rc = ctx->save.nr_batch_pfns = 0;
 
  err:
-    free(rec_pfns);
     if ( guest_mapping )
         xenforeignmemory_unmap(xch->fmem, guest_mapping, nr_pages_mapped);
     for ( i = 0; local_pages && i < nr_pfns; ++i )
+    {
         free(local_pages[i]);
-    free(iov);
-    free(local_pages);
-    free(guest_data);
-    free(errors);
-    free(types);
-    free(mfns);
+        local_pages[i] = NULL;
+    }
 
     return rc;
 }
@@ -805,18 +791,18 @@ static int setup(struct xc_sr_context *ctx)
 
     dirty_bitmap = xc_hypercall_buffer_alloc_pages(
         xch, dirty_bitmap, NRPAGES(bitmap_size(ctx->save.p2m_size)));
-    ctx->save.batch_pfns = malloc(MAX_BATCH_SIZE *
-                                  sizeof(*ctx->save.batch_pfns));
     ctx->save.deferred_pages = bitmap_alloc(ctx->save.p2m_size);
+    ctx->save.buffers = calloc(1, sizeof(*ctx->save.buffers));
 
-    if ( !ctx->save.batch_pfns || !dirty_bitmap || !ctx->save.deferred_pages )
+    if ( !dirty_bitmap || !ctx->save.deferred_pages || !ctx->save.buffers)
     {
-        ERROR("Unable to allocate memory for dirty bitmaps, batch pfns and"
-              " deferred pages");
+        ERROR("Unable to allocate memory for dirty bitmaps, deferred pages"
+              " and various batch buffers");
         rc = -1;
         errno = ENOMEM;
         goto err;
     }
+    ctx->save.batch_pfns = ctx->save.buffers->batch_pfns;
 
     rc = 0;
 
@@ -840,7 +826,7 @@ static void cleanup(struct xc_sr_context *ctx)
     xc_hypercall_buffer_free_pages(xch, dirty_bitmap,
                                    NRPAGES(bitmap_size(ctx->save.p2m_size)));
     free(ctx->save.deferred_pages);
-    free(ctx->save.batch_pfns);
+    free(ctx->save.buffers);
 }
 
 /*
-- 
2.53.0



From xen-devel-bounces@lists.xenproject.org Mon Apr 27 10:54:13 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 27 Apr 2026 10:54:13 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1294776.1571467 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wHJbH-0005Wv-69; Mon, 27 Apr 2026 10:54:03 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1294776.1571467; Mon, 27 Apr 2026 10:54: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 1wHJbH-0005Wo-2w; Mon, 27 Apr 2026 10:54:03 +0000
Received: by outflank-mailman (input) for mailman id 1294776;
 Mon, 27 Apr 2026 10:54:02 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <freddy77@gmail.com>) id 1wHJbG-0005Wi-An
 for xen-devel@lists.xenproject.org; Mon, 27 Apr 2026 10:54:02 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wHJbF-00FJ1T-5F
 for xen-devel@lists.xenproject.org; Mon, 27 Apr 2026 12:54:01 +0200
Received: from [10.42.69.8] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <freddy77@gmail.com>)
 id 69ef4044-2eae-0a2a0a5409dd-0a2a450895ee-24
 for <xen-devel@lists.xenproject.org>; Mon, 27 Apr 2026 12:54:01 +0200
Received: from [209.85.128.46] (helo=mail-wm1-f46.google.com)
 by tlsNG-c1860d.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.1)
 (envelope-from <freddy77@gmail.com>)
 id 69ef4048-63b5-0a2a45080019-d155802ef010-3
 for <xen-devel@lists.xenproject.org>; Mon, 27 Apr 2026 12:54:01 +0200
Received: by mail-wm1-f46.google.com with SMTP id
 5b1f17b1804b1-488d2079582so119218975e9.2
 for <xen-devel@lists.xenproject.org>; Mon, 27 Apr 2026 03:54:01 -0700 (PDT)
Received: from localhost.localdomain (5.116.208.46.dyn.plus.net.
 [46.208.116.5]) by smtp.gmail.com with ESMTPSA id
 5b1f17b1804b1-48a5c4b9e8dsm116133355e9.7.2026.04.27.03.53.59
 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
 Mon, 27 Apr 2026 03:53:59 -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=20251104 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=20251104; t=1777287240; x=1777892040; 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;
        bh=J19VskUN5SAQjX2c2S2wMGKN309vxDPBhalqAElyfx4=;
        b=HK5dHL03Pb24NUe3GuEVY+k8Tv+KWDGMWpFqea8IzrKlgebNme13SVTzhoXL4W1Q3n
         euaS/XcAZYPx1f2nDUR1tGy3LUmJVW/VUuKRmQzHFhXV2+z50FNl2+npvUSSXrwf/iyw
         cquNrp/dWI52AyjvegGpiJHxxu2199bZdR/d1EbJKuBSS7GeDEybQZZ/BHvKhRn1Xr+E
         ynxvAZH0A/c8cjSLuUjx2EBbPVjNzG8sWzeQngrn2dISHKR8Yd9uRIEHQyusf3D/pq8o
         j78/A+SM5FWJiogO5g8CpDEvr9AgLZJRp0X+C4rCIJ0p4gbtTqubopyKJ1RV4JnRudsP
         v/pQ==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20251104; t=1777287240; x=1777892040;
        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;
        bh=J19VskUN5SAQjX2c2S2wMGKN309vxDPBhalqAElyfx4=;
        b=dewGQUgygS9wEVO3dcztJLPqYeFRPysO9BUUUCaK215GDdldM/j9C2NwOolKj48fyL
         FVpuDA739tPBSqpd/gRHWBR/AbBj443/hZf68mCRxfpgV8a2mEXQKelxfOElck4l2Fp1
         UaTZlAux9BoOBzJkFmCWROtbkqp+pIcFdh7XGOrgcSnmmdnH7aggMA7UF0XAgiGdQ0E+
         SdZZEBEk9mT4rb8Sq0JCGgCmE+VFT1QeN4ZNGcwyYVG0+Ldg+QidrcPaLSa174yLmIEd
         JqDX4ptKa+7/jl6ZAPlVJ8xPJat04XJZu73MEUru9YVYbucgXkU7t5d8uB94H1oau0qH
         05yg==
X-Gm-Message-State: AOJu0YzEVuOSKW5bsRHAbPs5jUvRPbqKbCJ6nndSgwtqX3MsNU9H1GFi
	9Cy4atDPzuEftFjHgWaBV5sxxcAqbrnASW8JUU5yzuwYuhsb3aIFDDMWOCq/wbKk
X-Gm-Gg: AeBDieuqaprCkWeaNsNtE2gtJb07enYELBUKKAfnaghrw/yLAoCyv7tQ4v79MUgfNif
	x6O05vH7K15ThKwmQPALButiCQ+YAtvuZ5rnCau5pNEidg/MZWWLU2CJ32GEqAo7pd90L+wE+hE
	BEaVy8oDI/Y/j1Sh+wqwSyVN0JR9GGz01gZ7JCwe7zckWLmzHXLqVjD3GEFzQFkiTNTPwxle6s7
	AJmO8MfVDhHwd/7FGrhftMJV7VZVjBniVmm+9YM6owU7USVp9dw4IHx0Kh4Nx46jSWLcbVWHxSZ
	8wVk4m1FNi6s7V3S+FaKI/DFer9+2gnJDitwSmJ9kG1JTgrevus4DaSBhtpvGpqvz7IXQdAQl4k
	YDcPTEFwTbJKGFeWGRLTW79AHzYWHD4JX+zMh685lX5dPCDKUBGV6ZA9POab4B4haSjYAi9b9tW
	P/ddNpSFSigcImZiPfKpdgp+ftRzao4aGsnuPbEmODjh5NotTeOH5mqdgo8ixsnD6lAsOhWXOHj
	ujT
X-Received: by 2002:a05:600c:620c:b0:488:ae6c:42c6 with SMTP id 5b1f17b1804b1-488fb7786c2mr613145255e9.14.1777287240067;
        Mon, 27 Apr 2026 03:54:00 -0700 (PDT)
From: Frediano Ziglio <freddy77@gmail.com>
X-Google-Original-From: Frediano Ziglio <frediano.ziglio@cloud.com>
To: xen-devel@lists.xenproject.org
Cc: Frediano Ziglio <frediano.ziglio@citrix.com>,
	Jan Beulich <jbeulich@suse.com>,
	Andrew Cooper <andrew.cooper3@citrix.com>,
	=?UTF-8?q?Roger=20Pau=20Monn=C3=A9?= <roger.pau@citrix.com>,
	Teddy Astie <teddy.astie@vates.tech>,
	Anthony PERARD <anthony.perard@vates.tech>,
	Juergen Gross <jgross@suse.com>
Subject: [PATCH v2 0/7] Minor xenguest optimisations
Date: Mon, 27 Apr 2026 11:53:25 +0100
Message-ID: <20260427105338.99792-1-frediano.ziglio@cloud.com>
X-Mailer: git-send-email 2.43.0
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
X-purgate-ID: tlsNG-c1860d/1777287241-C0159DB1-734E2BBF/0/0
X-purgate-type: clean
X-purgate-size: 1256

From: Frediano Ziglio <frediano.ziglio@citrix.com>

Reduce some number of parts passed to writev.
Avoid possible allocation sending data with writev.
Reduce number of allocations sending memory state.

Changes since v1:
- add commit to cache up to 4 pages in hypercall;
- add other 2 commits reducing chunks passed to write/writev.

Edwin Török (2):
  tools/libs/guest: allocate various migration arrays just once
  tools/lib/call: cache up to 4 pages in hypercall bounce buffers

Frediano Ziglio (5):
  xenguest: Reduce number of parts in write_split_record
  xenguest: Reduce number of I/O vectors in write_batch
  xenguest: Allows writev_exact to change iov array
  xenguest: Reduce number of I/O vectors in write_batch
  xenguest: Use a single write_exact in write_headers

 tools/libs/call/buffer.c        |  28 +++---
 tools/libs/call/core.c          |   3 +-
 tools/libs/call/private.h       |   8 +-
 tools/libs/ctrl/xc_private.c    |  26 ++----
 tools/libs/ctrl/xc_private.h    |   2 +-
 tools/libs/guest/xg_sr_common.c |   6 +-
 tools/libs/guest/xg_sr_common.h |  13 +++
 tools/libs/guest/xg_sr_save.c   | 147 +++++++++++++++-----------------
 8 files changed, 114 insertions(+), 119 deletions(-)

-- 
2.53.0



From xen-devel-bounces@lists.xenproject.org Mon Apr 27 10:54:13 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 27 Apr 2026 10:54:13 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1294783.1571531 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wHJbP-00077p-8A; Mon, 27 Apr 2026 10:54:11 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1294783.1571531; Mon, 27 Apr 2026 10: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 1wHJbP-00077X-2u; Mon, 27 Apr 2026 10:54:11 +0000
Received: by outflank-mailman (input) for mailman id 1294783;
 Mon, 27 Apr 2026 10:54:10 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <freddy77@gmail.com>) id 1wHJbN-0006pf-SB
 for xen-devel@lists.xenproject.org; Mon, 27 Apr 2026 10:54:09 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wHJbN-004Ir6-8B
 for xen-devel@lists.xenproject.org; Mon, 27 Apr 2026 12:54:09 +0200
Received: from [10.42.69.3] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <freddy77@gmail.com>)
 id 69ef4051-5cb7-0a2a0a5109dd-0a2a4503c4b8-0
 for <xen-devel@lists.xenproject.org>; Mon, 27 Apr 2026 12:54:09 +0200
Received: from [209.85.128.51] (helo=mail-wm1-f51.google.com)
 by tlsNG-33051d.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.1)
 (envelope-from <freddy77@gmail.com>)
 id 69ef4051-672d-0a2a45030019-d1558033c86d-3
 for <xen-devel@lists.xenproject.org>; Mon, 27 Apr 2026 12:54:09 +0200
Received: by mail-wm1-f51.google.com with SMTP id
 5b1f17b1804b1-4891e5b9c1fso84864145e9.2
 for <xen-devel@lists.xenproject.org>; Mon, 27 Apr 2026 03:54:09 -0700 (PDT)
Received: from localhost.localdomain (5.116.208.46.dyn.plus.net.
 [46.208.116.5]) by smtp.gmail.com with ESMTPSA id
 5b1f17b1804b1-48a5c4b9e8dsm116133355e9.7.2026.04.27.03.54.07
 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
 Mon, 27 Apr 2026 03:54:07 -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=20251104 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=20251104; t=1777287248; x=1777892048; 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;
        bh=RVb1my+fIjS7vfPgLx5O5td6PHPVJPTF5pUCPqufxWI=;
        b=NXqJPzU1nN0S4FsDtr+l5Puecwi8NQKusSBbu2duK8M7zOcIU/mMc8+I912A5CJwpj
         kZxVIgXM4uC2clS4KEfQqshT3qpe06dEaBxcHjXogSNQscr2uBf1W6i2zEaEHXovzm1b
         ZdumLkUHaYJgivL3eiiTNkbsVE+y0de4BKEjlrn88IO1lnCchjUwn4Rh81AFQdIyXX+I
         zhKKFkC3sOpKxejAL1Xavj1rIWeJNaJ4ITypgTr5ksDg8gyni4X/EYXNtujdtTOFkpz7
         KrxmyhZHQa+iY3SctOCkV9P5mcGH2mEdH+Z+eq+dhQ9B/b38hV03P9WU9VvHcniY6mqV
         a9RA==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20251104; t=1777287248; x=1777892048;
        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;
        bh=RVb1my+fIjS7vfPgLx5O5td6PHPVJPTF5pUCPqufxWI=;
        b=K8JNr0BC/AOKJFx4fTrC+c5GYeGGXk7eK1qzucc5cm+uMFT1UEqevZPpcPMbdCo6Yi
         q41Z/nu9lp47PkbNwKN6HLzhl1q7vEZkSHIg8DBeay4EUDJdHC2LK8ytegFeFoLrO95h
         qlwVSvxyUCPezFt1+gunT6JlO9PV0c0EaJH4vMwomP6x6zKLAmvLSVFz9vBrE9YaArGH
         +42Gd59RXAe4M6iWR5ACawA3Xi5vNHcCIlPSXTy4ZJiTSmmRRdtmhE6atGzJ6MIYFl6z
         DlOXDWBT9K77n8vbwNyJjvtmTmJpRkwvKfkxr0faHsjCp1aFlZn3SLBpBp27ErnevzcJ
         KpKA==
X-Gm-Message-State: AOJu0YyNwyYeWO6b+KvuaBjjjoBuaCaKxvYEmQ87gBotWUfiQPd12gj0
	FAfj21V0lt9M7v0Nf3uUdymckW6+s+6Rf8bCZc61D2AElQ2raYvqTjYxKg4B1OzC
X-Gm-Gg: AeBDieu76PgTa1ihBT9JAccAe1gSqLUxdnFdB84K7i/zW5Ak20vBo/adsRJWDZVEY4n
	2mB/nFpLvqExrLszoE6YAURAqAPTIaXHKTLaJLSeNLArOmeSPDs4DtYqb1F+5cKh1AdU9c9NLsz
	hTNo9KDZs7jKpm06XE/RIOrMmcXdi9AjhYAihDpC2kU8SACjjN0ZRjFqQ4RI2+kNpQ603KzTe//
	9f3N4dG71pVgdpqqojNbCN7RP0/TwTjXJtdKSRv1BMbs07BQnRN1WYcuDUSpx7EQzzbF8KDL62l
	a1hmNEIdPJFz6jHRzwhU7a5lPf1mqmgyi9dKo+DxR5wApRMUbtzrLYEghnMyk3jBOu/FISAylqU
	jvjTm5K9knIelw0QZAZf80lBffWYuquUrx/vQQpKbGmTD/8YCPdzcKXjvNmxJdmpBMFBWdtU0sx
	oo8prenD9UDGnEhIk/mMrqXR7VqyNZfEMRgB7r8TPaI2qGbDIPzRtqT4wZRcqwGRicLcH2sdvy0
	686isdL50ftNQc=
X-Received: by 2002:a05:600c:a08c:b0:48a:563c:c8c0 with SMTP id 5b1f17b1804b1-48a563cd176mr361650105e9.7.1777287248180;
        Mon, 27 Apr 2026 03:54:08 -0700 (PDT)
From: Frediano Ziglio <freddy77@gmail.com>
X-Google-Original-From: Frediano Ziglio <frediano.ziglio@cloud.com>
To: xen-devel@lists.xenproject.org
Cc: =?UTF-8?q?Edwin=20T=C3=B6r=C3=B6k?= <edwin.torok@citrix.com>,
	Anthony PERARD <anthony.perard@vates.tech>,
	Juergen Gross <jgross@suse.com>,
	Frediano Ziglio <frediano.ziglio@citrix.com>
Subject: [PATCH v2 7/7] tools/lib/call: cache up to 4 pages in hypercall bounce buffers
Date: Mon, 27 Apr 2026 11:53:32 +0100
Message-ID: <20260427105338.99792-8-frediano.ziglio@cloud.com>
X-Mailer: git-send-email 2.43.0
In-Reply-To: <20260427105338.99792-1-frediano.ziglio@cloud.com>
References: <20260427105338.99792-1-frediano.ziglio@cloud.com>
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
X-purgate-ID: tlsNG-33051d/1777287249-2A378938-ABA77346/0/0
X-purgate-type: clean
X-purgate-size: 4933

From: Edwin Török <edwin.torok@citrix.com>

During migration there are a lot of mmap/munmap calls,
because `xc_get_pfn_type_batch` exceeds the default hypercall bounce
buffer cache size, and needs to allocate every time it is called.

`munmap` is slow, especially in a PV Dom0 (takes an emulation fault),
so is best avoided.

Eventually it'd be good if the memory pool from  xmalloc_tlsf.c
was reused here, but for now make it handle the commonly encountered
sizes (so far up to 4 pages).

Signed-off-by: Edwin Török <edwin.torok@citrix.com>
Signed-off-by: Frediano Ziglio <frediano.ziglio@citrix.com>
---
 tools/libs/call/buffer.c  | 28 +++++++++++++++++-----------
 tools/libs/call/core.c    |  3 ++-
 tools/libs/call/private.h |  8 +++++---
 3 files changed, 24 insertions(+), 15 deletions(-)

diff --git a/tools/libs/call/buffer.c b/tools/libs/call/buffer.c
index 2579b8c71986..15d2f98a6b71 100644
--- a/tools/libs/call/buffer.c
+++ b/tools/libs/call/buffer.c
@@ -56,13 +56,13 @@ static void *cache_alloc(xencall_handle *xcall, size_t nr_pages)
     if ( xcall->buffer_current_allocations > xcall->buffer_maximum_allocations )
         xcall->buffer_maximum_allocations = xcall->buffer_current_allocations;
 
-    if ( nr_pages > 1 )
+    if ( nr_pages > ARRAY_SIZE(xcall->buffer_cache) )
     {
         xcall->buffer_cache_toobig++;
     }
-    else if ( xcall->buffer_cache_nr > 0 )
+    else if ( xcall->buffer_cache_nr[nr_pages-1] > 0 )
     {
-        p = xcall->buffer_cache[--xcall->buffer_cache_nr];
+        p = xcall->buffer_cache[nr_pages-1][--xcall->buffer_cache_nr[nr_pages-1]];
         xcall->buffer_cache_hits++;
     }
     else
@@ -84,10 +84,10 @@ static int cache_free(xencall_handle *xcall, void *p, size_t nr_pages)
     xcall->buffer_total_releases++;
     xcall->buffer_current_allocations--;
 
-    if ( nr_pages == 1 &&
-         xcall->buffer_cache_nr < BUFFER_CACHE_SIZE )
+    if ( nr_pages && nr_pages < ARRAY_SIZE(xcall->buffer_cache) &&
+         xcall->buffer_cache_nr[nr_pages-1] < BUFFER_CACHE_SIZE )
     {
-        xcall->buffer_cache[xcall->buffer_cache_nr++] = p;
+        xcall->buffer_cache[nr_pages-1][xcall->buffer_cache_nr[nr_pages-1]++] = p;
         rc = 1;
     }
 
@@ -108,17 +108,23 @@ void buffer_release_cache(xencall_handle *xcall)
     DBGPRINTF("current allocations:%d maximum allocations:%d",
               xcall->buffer_current_allocations,
               xcall->buffer_maximum_allocations);
-    DBGPRINTF("cache current size:%d",
-              xcall->buffer_cache_nr);
+    for ( unsigned i = 0; i < ARRAY_SIZE(xcall->buffer_cache_nr); ++i )
+    {
+        DBGPRINTF("cache current size[%u pages]:%d", i+1,
+                xcall->buffer_cache_nr[i]);
+    }
     DBGPRINTF("cache hits:%d misses:%d toobig:%d",
               xcall->buffer_cache_hits,
               xcall->buffer_cache_misses,
               xcall->buffer_cache_toobig);
 
-    while ( xcall->buffer_cache_nr > 0 )
+    for ( unsigned i = 0; i < ARRAY_SIZE(xcall->buffer_cache_nr); ++i )
     {
-        p = xcall->buffer_cache[--xcall->buffer_cache_nr];
-        osdep_free_pages(xcall, p, 1);
+        while ( xcall->buffer_cache_nr[i] > 0 )
+        {
+            p = xcall->buffer_cache[i][--xcall->buffer_cache_nr[i]];
+            osdep_free_pages(xcall, p, i + 1);
+        }
     }
 
     cache_unlock(xcall);
diff --git a/tools/libs/call/core.c b/tools/libs/call/core.c
index 02c4f8e1aefa..dd8877c1a0bd 100644
--- a/tools/libs/call/core.c
+++ b/tools/libs/call/core.c
@@ -14,6 +14,7 @@
  */
 
 #include <stdlib.h>
+#include <string.h>
 
 #include "private.h"
 
@@ -44,7 +45,7 @@ xencall_handle *xencall_open(xentoollog_logger *logger, unsigned open_flags)
     xentoolcore__register_active_handle(&xcall->tc_ah);
 
     xcall->flags = open_flags;
-    xcall->buffer_cache_nr = 0;
+    memset(xcall->buffer_cache_nr, 0, sizeof(xcall->buffer_cache_nr));
 
     xcall->buffer_total_allocations = 0;
     xcall->buffer_total_releases = 0;
diff --git a/tools/libs/call/private.h b/tools/libs/call/private.h
index 9c3aa432efe2..8e6a20897534 100644
--- a/tools/libs/call/private.h
+++ b/tools/libs/call/private.h
@@ -31,13 +31,15 @@ struct xencall_handle {
     Xentoolcore__Active_Handle tc_ah;
 
     /*
-     * A simple cache of unused, single page, hypercall buffers
+     * A simple cache of unused, small, hypercall buffers
+     * buffer_cache[i]'s size is (i+1) pages
      *
      * Protected by a global lock.
      */
 #define BUFFER_CACHE_SIZE 4
-    int buffer_cache_nr;
-    void *buffer_cache[BUFFER_CACHE_SIZE];
+#define BUFFER_CACHE_NRPAGES 4
+    int buffer_cache_nr[BUFFER_CACHE_NRPAGES];
+    void *buffer_cache[BUFFER_CACHE_NRPAGES][BUFFER_CACHE_SIZE];
 
     /*
      * Hypercall buffer statistics. All protected by the global
-- 
2.53.0



From xen-devel-bounces@lists.xenproject.org Mon Apr 27 10:54:13 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 27 Apr 2026 10:54:13 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1294778.1571486 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wHJbK-0005xG-Id; Mon, 27 Apr 2026 10:54:06 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1294778.1571486; Mon, 27 Apr 2026 10:54: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 1wHJbK-0005x7-Fv; Mon, 27 Apr 2026 10:54:06 +0000
Received: by outflank-mailman (input) for mailman id 1294778;
 Mon, 27 Apr 2026 10:54:05 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <freddy77@gmail.com>) id 1wHJbJ-0005sG-28
 for xen-devel@lists.xenproject.org; Mon, 27 Apr 2026 10:54:05 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wHJbI-00FJ4k-FM
 for xen-devel@lists.xenproject.org; Mon, 27 Apr 2026 12:54:04 +0200
Received: from [10.42.69.4] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <freddy77@gmail.com>)
 id 69ef4034-2eae-0a2a0a5409dd-0a2a4504918c-46
 for <xen-devel@lists.xenproject.org>; Mon, 27 Apr 2026 12:54:04 +0200
Received: from [209.85.128.45] (helo=mail-wm1-f45.google.com)
 by tlsNG-ebf023.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.1)
 (envelope-from <freddy77@gmail.com>)
 id 69ef404c-1dec-0a2a45040019-d155802dd452-3
 for <xen-devel@lists.xenproject.org>; Mon, 27 Apr 2026 12:54:04 +0200
Received: by mail-wm1-f45.google.com with SMTP id
 5b1f17b1804b1-4852a9c6309so92918585e9.0
 for <xen-devel@lists.xenproject.org>; Mon, 27 Apr 2026 03:54:04 -0700 (PDT)
Received: from localhost.localdomain (5.116.208.46.dyn.plus.net.
 [46.208.116.5]) by smtp.gmail.com with ESMTPSA id
 5b1f17b1804b1-48a5c4b9e8dsm116133355e9.7.2026.04.27.03.54.02
 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
 Mon, 27 Apr 2026 03:54:03 -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=20251104 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=20251104; t=1777287244; x=1777892044; 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;
        bh=A5ou0MaWeF1QaqgGjfxneV8ESfLfmJPSRFjrAyNPQHE=;
        b=IeEE8Pr3Xk3o/Aca+3DeBcJAuoa4/UJRsw+hETocJYULKwT5EH5uCUhgcf7XYIF/rk
         06OlGSusuJ3gv4eeQJzfUaCR8vqra+3Yt4GDHgvS3A1cSaaK4b5D8hAtjmEOj2josjsI
         VDemOfwPZ3YJ3KaNEY6Csiv0ls3tJGhZPlm3TEdLIj/lQJQucaazFOLUkmL6cjhki+Qi
         r01DFfchQeFcGdsS2iTqMb2oY+X2z0dBIftEaIkVrxBpFgcpJz2AFpOwcrO7Ij9PA2pW
         Cn94CroDBx76kenrGWHXIe1WL4T7zqJ3NX/7UMqhcydAU6ZoGLEBW+qRO8+Z6IYeuLHx
         QWWw==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20251104; t=1777287244; x=1777892044;
        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;
        bh=A5ou0MaWeF1QaqgGjfxneV8ESfLfmJPSRFjrAyNPQHE=;
        b=apbm9Wa5dFyno7UZtxk8ttgLuH67MJzNJE2irTf4klLpuOWQiRQ948gD2XLzrog1/z
         iEnYWdd2+ZiIqmIw25/xLXGZj+xL1Cu8kncsv+Z6DlESwYUDp2EzHdTtzaOI54j6fhCg
         1tbetqTFoN6WuOJlgZFHW1rBqX0Su4kzr6OgfCqZpe455CWZoriLwt8lQAJh10NpnJW0
         yxIYn0jNxhu2mviWLEhTprc/Tdpt4hsaMi17rN41BZn/dJrV48xeYqKy8tYLKZ4sjYUv
         Z/niJU04dkSwaIA4UVAl59lfcxoacSdPqIJpcvbfL3+8pO+f8ZQhavdTakYb9mpKg182
         iZbA==
X-Gm-Message-State: AOJu0Yxe49nnvK9hIyMNMQ1xHceCvoD+MmGArQeTgGthJ3j5zI7OJ010
	4VoqaWjAwRyXVYxhGAbfN7dmDCnirWSMk+3eYtcDM0oGFNR+gJWNFz99uNURe8A8
X-Gm-Gg: AeBDies3GIORC4W/kxz9WWFbafpNZIQNbjrlKK0rMfPnRAsNC2DytECcX6YOILbbO8X
	ZVkKBROkVlvBCGBpnExqeBi9HVuAE46ndqxRydb7vScHLFHF2M0ESJiwfEu5FXFbpj42oMKSIgl
	ZHTfHqc6Y+S6PEwF1kD0E+M5S9CJkeMrOZoCXQ+4fb0IX30KW5ck+5uX9F5D2qrRVk04vkU3EQ0
	lHfN3VR43iPvBBwXm01omuLz/IU1tuaPaxPhDF2/Hv62cJCBDANgVQXLDKS4iADFfuTqnq/qIWA
	XWQn7ajjydBkj0ITYXup0hC46irPhvtfdQQ27Qo3u9vHdBzjZ3P4tiSgOeZIfAxIsa0I6sD0GIF
	lB76QxG56vUnQHcl18bsx7NqKubu+ZKXwENPGSCL+Z3V9Iawjt6spEf1EN2juSvEoBIcYko4imw
	6Khy3TLj9tNwaWOjy1xFjzilsLyDP9ym/jvPaDjTT3w/DUuq5Vg96G7Jn2eYgMOcKZRImi+dAFq
	d6U
X-Received: by 2002:a05:600c:46cb:b0:488:a723:ea53 with SMTP id 5b1f17b1804b1-488fb744fbemr610461055e9.7.1777287243489;
        Mon, 27 Apr 2026 03:54:03 -0700 (PDT)
From: Frediano Ziglio <freddy77@gmail.com>
X-Google-Original-From: Frediano Ziglio <frediano.ziglio@cloud.com>
To: xen-devel@lists.xenproject.org
Cc: Frediano Ziglio <frediano.ziglio@citrix.com>,
	Anthony PERARD <anthony.perard@vates.tech>,
	Juergen Gross <jgross@suse.com>
Subject: [PATCH v2 2/7] xenguest: Reduce number of I/O vectors in write_batch
Date: Mon, 27 Apr 2026 11:53:27 +0100
Message-ID: <20260427105338.99792-3-frediano.ziglio@cloud.com>
X-Mailer: git-send-email 2.43.0
In-Reply-To: <20260427105338.99792-1-frediano.ziglio@cloud.com>
References: <20260427105338.99792-1-frediano.ziglio@cloud.com>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit
X-purgate-ID: tlsNG-ebf023/1777287244-32E743FF-D0655396/0/0
X-purgate-type: clean
X-purgate-size: 2573

From: Frediano Ziglio <frediano.ziglio@citrix.com>

Small optimization.
Reduce number of pieces passed to writev.

Signed-off-by: Frediano Ziglio <frediano.ziglio@citrix.com>
---
 tools/libs/guest/xg_sr_save.c | 35 ++++++++++++++++-------------------
 1 file changed, 16 insertions(+), 19 deletions(-)

diff --git a/tools/libs/guest/xg_sr_save.c b/tools/libs/guest/xg_sr_save.c
index 3b2c5222e429..1700d819051a 100644
--- a/tools/libs/guest/xg_sr_save.c
+++ b/tools/libs/guest/xg_sr_save.c
@@ -97,9 +97,12 @@ static int write_batch(struct xc_sr_context *ctx)
     void *page, *orig_page;
     uint64_t *rec_pfns = NULL;
     struct iovec *iov = NULL; int iovcnt = 0;
-    struct xc_sr_rec_page_data_header hdr = { 0 };
-    struct xc_sr_record rec = {
-        .type = REC_TYPE_PAGE_DATA,
+    struct {
+        struct xc_sr_rhdr rec;
+        struct xc_sr_rec_page_data_header page_data;
+    } hdrs = {
+        { .type = REC_TYPE_PAGE_DATA },
+        { 0 },
     };
 
     assert(nr_pfns != 0);
@@ -115,7 +118,7 @@ static int write_batch(struct xc_sr_context *ctx)
     /* Pointers to locally allocated pages.  Need freeing. */
     local_pages = calloc(nr_pfns, sizeof(*local_pages));
     /* iovec[] for writev(). */
-    iov = malloc((nr_pfns + 4) * sizeof(*iov));
+    iov = malloc((nr_pfns + 2) * sizeof(*iov));
 
     if ( !mfns || !types || !errors || !guest_data || !local_pages || !iov )
     {
@@ -216,28 +219,22 @@ static int write_batch(struct xc_sr_context *ctx)
         goto err;
     }
 
-    hdr.count = nr_pfns;
+    hdrs.rec.length = sizeof(hdrs.page_data);
+    hdrs.rec.length += nr_pfns * sizeof(*rec_pfns);
+    hdrs.rec.length += nr_pages * PAGE_SIZE;
 
-    rec.length = sizeof(hdr);
-    rec.length += nr_pfns * sizeof(*rec_pfns);
-    rec.length += nr_pages * PAGE_SIZE;
+    hdrs.page_data.count = nr_pfns;
 
     for ( i = 0; i < nr_pfns; ++i )
         rec_pfns[i] = ((uint64_t)(types[i]) << 32) | ctx->save.batch_pfns[i];
 
-    iov[0].iov_base = &rec.type;
-    iov[0].iov_len = sizeof(rec.type);
+    iov[0].iov_base = &hdrs;
+    iov[0].iov_len = sizeof(hdrs);
 
-    iov[1].iov_base = &rec.length;
-    iov[1].iov_len = sizeof(rec.length);
+    iov[1].iov_base = rec_pfns;
+    iov[1].iov_len = nr_pfns * sizeof(*rec_pfns);
 
-    iov[2].iov_base = &hdr;
-    iov[2].iov_len = sizeof(hdr);
-
-    iov[3].iov_base = rec_pfns;
-    iov[3].iov_len = nr_pfns * sizeof(*rec_pfns);
-
-    iovcnt = 4;
+    iovcnt = 2;
 
     if ( nr_pages )
     {
-- 
2.53.0



From xen-devel-bounces@lists.xenproject.org Mon Apr 27 10:54:13 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 27 Apr 2026 10:54:13 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1294780.1571503 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wHJbM-0006P0-83; Mon, 27 Apr 2026 10:54:08 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1294780.1571503; Mon, 27 Apr 2026 10:54: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 1wHJbM-0006Or-2o; Mon, 27 Apr 2026 10:54:08 +0000
Received: by outflank-mailman (input) for mailman id 1294780;
 Mon, 27 Apr 2026 10:54:06 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <freddy77@gmail.com>) id 1wHJbK-0005x2-GK
 for xen-devel@lists.xenproject.org; Mon, 27 Apr 2026 10:54:06 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wHJbJ-00FSse-TO
 for xen-devel@lists.xenproject.org; Mon, 27 Apr 2026 12:54:05 +0200
Received: from [10.42.69.10] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <freddy77@gmail.com>)
 id 69ef404a-e002-0a2a0a5209dd-0a2a450a8756-12
 for <xen-devel@lists.xenproject.org>; Mon, 27 Apr 2026 12:54:05 +0200
Received: from [209.85.128.53] (helo=mail-wm1-f53.google.com)
 by tlsNG-4011c0.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.1)
 (envelope-from <freddy77@gmail.com>)
 id 69ef404d-56b3-0a2a450a0019-d1558035e4fe-3
 for <xen-devel@lists.xenproject.org>; Mon, 27 Apr 2026 12:54:05 +0200
Received: by mail-wm1-f53.google.com with SMTP id
 5b1f17b1804b1-488ad135063so92238245e9.0
 for <xen-devel@lists.xenproject.org>; Mon, 27 Apr 2026 03:54:05 -0700 (PDT)
Received: from localhost.localdomain (5.116.208.46.dyn.plus.net.
 [46.208.116.5]) by smtp.gmail.com with ESMTPSA id
 5b1f17b1804b1-48a5c4b9e8dsm116133355e9.7.2026.04.27.03.54.04
 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
 Mon, 27 Apr 2026 03:54:04 -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=20251104 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=20251104; t=1777287245; x=1777892045; 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;
        bh=HGSrCjw2s0wYO4IMNzZTZ7EkL1Z+q5fAlbsu5KPJu08=;
        b=rnGb9HCBGyIo9p1Rx+UbHkcBoRIOdoyddDbPxWzSqUhpmF/ApRNOfgJ07Fog3KLVR7
         kj7vLZ1KHXLeRdRhHQPEFZpGUQl0x2ay55H95p2O+5LFTvbEU+IaFtZxBTq5goSKWKM6
         z3y4PzD+JRg1zKqu5XeZMsbBKJencerw62SkuDR+cLI309fHKYjuFwK9nGz1+uomleq+
         LogEIV3aQ9GwKo2ejf4N9kll6XVGCQyUSu2HZsGeivoP8mtYgtJbOEVHs+mmtAhaRGH+
         mlddz8Xi63JwFN32qqipvWhh3F7wdzdHh2ZpYlWe1tLQBSiFpp+gol7ETOGLhBIidpLt
         2MKQ==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20251104; t=1777287245; x=1777892045;
        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;
        bh=HGSrCjw2s0wYO4IMNzZTZ7EkL1Z+q5fAlbsu5KPJu08=;
        b=rjueFz9yxUW42AOKAg6U+BDgixNtlSYtG1FDRzr9qDoVGxThqy2GdlwCeTzTwGRZic
         nsC1RPy1++zjrS1+79rsINDl9q3zwPaWmsEZRUtUGFxhlhY6TQoFXwC0KeIV/EbFrm23
         68YSdb210x0adNR4LO7dMNx+DLwUwnziBKoxNQwlxpgZIwkwrTtrHTrAIZ8uie0DKv2E
         VUpc71+z9quT2cOed2Get5Lu+pbF+f1kpjYr93PWjoksGqZVHRPhQxx3qxd+nTP0op++
         a+vKPY7i3sZWDEyneSOLepYZtWTtHwYDHspiIgmEzFGkTyyX+Kih/EENngUXSDL8D4Lx
         9RLA==
X-Gm-Message-State: AOJu0Yz3HRt4kZZ7Srsqt8kIZ32tgI9NNb5OJkNQwnRk2M/cMT1mlAxx
	BqoUQZE3Qon20Y64l8EAYKft7753wVPtje83TbvPSxrnFWs2zcNzxpDZda2Xs0yF
X-Gm-Gg: AeBDieuv4Hpc9slJeI3qtsfOhXrPX8Oox9uot1P7yK6lRYkTADl2holvJosoXPwF1mZ
	TvaSi/JcGLX29ueTl/KLfBUZPFRO56wgDy/+EHK/6YSS3FAodtIEVN+M/PkKqufdxkRxNsh6s/X
	a/5u+rE86EvVo24txzNodhGYcL/ICfKUq7zxBn5JLuXeyf54ZET/4JRugnEUOqbbvKNIVNfgVIF
	H+nt95lExpvJ6ZLP29C58GVrpZmLpSCcSUtNSNB9G1YoYDfcDwwsGyEh7ZZIRVlOrObxtsbe9cj
	iAvHdGDz9+d5ygfwX1n6laMG7y95KqT7RRiE++LGUHdtKV8VVfXdCssLCY4nYZiSq8Vi6gkmBZ8
	Hg//BhFm5tPzVuJL0QCqEpHJ14Gfg8U7GMtZG3HLC2p5gXZjAnQrw6W3C03qnNqrL3vR07G8THC
	lQfXY8qpSqHbswa3HRtiCgM9vMldIM4UUEDzot1jKUx2Ngikidqr57t0g+BFU2V8WuXa06NMeKo
	Tqt
X-Received: by 2002:a05:600c:a108:b0:480:69b6:dfed with SMTP id 5b1f17b1804b1-488fb78ba6fmr501796635e9.24.1777287244934;
        Mon, 27 Apr 2026 03:54:04 -0700 (PDT)
From: Frediano Ziglio <freddy77@gmail.com>
X-Google-Original-From: Frediano Ziglio <frediano.ziglio@cloud.com>
To: xen-devel@lists.xenproject.org
Cc: Frediano Ziglio <frediano.ziglio@citrix.com>,
	Anthony PERARD <anthony.perard@vates.tech>,
	Juergen Gross <jgross@suse.com>
Subject: [PATCH v2 4/7] xenguest: Reduce number of I/O vectors in write_batch
Date: Mon, 27 Apr 2026 11:53:29 +0100
Message-ID: <20260427105338.99792-5-frediano.ziglio@cloud.com>
X-Mailer: git-send-email 2.43.0
In-Reply-To: <20260427105338.99792-1-frediano.ziglio@cloud.com>
References: <20260427105338.99792-1-frediano.ziglio@cloud.com>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit
X-purgate-ID: tlsNG-4011c0/1777287245-CDF698B7-73142FAC/0/0
X-purgate-type: clean
X-purgate-size: 1276

From: Frediano Ziglio <frediano.ziglio@citrix.com>

Each page was sent using a different iovec item. This potentially exceed
Linux maximum (1024).
Also some implementation (MiniOS) emulate writev with multiple write calls.

Signed-off-by: Frediano Ziglio <frediano.ziglio@citrix.com>
---
 tools/libs/guest/xg_sr_save.c | 11 +++++++++--
 1 file changed, 9 insertions(+), 2 deletions(-)

diff --git a/tools/libs/guest/xg_sr_save.c b/tools/libs/guest/xg_sr_save.c
index 1700d819051a..62a39dfecc7a 100644
--- a/tools/libs/guest/xg_sr_save.c
+++ b/tools/libs/guest/xg_sr_save.c
@@ -240,13 +240,20 @@ static int write_batch(struct xc_sr_context *ctx)
     {
         for ( i = 0; i < nr_pfns; ++i )
         {
-            if ( guest_data[i] )
+            if ( !guest_data[i] )
+                continue;
+
+            if ( iov[iovcnt-1].iov_base + iov[iovcnt-1].iov_len != guest_data[i] )
             {
                 iov[iovcnt].iov_base = guest_data[i];
                 iov[iovcnt].iov_len = PAGE_SIZE;
                 iovcnt++;
-                --nr_pages;
             }
+            else
+            {
+                iov[iovcnt-1].iov_len += PAGE_SIZE;
+            }
+            --nr_pages;
         }
     }
 
-- 
2.53.0



From xen-devel-bounces@lists.xenproject.org Mon Apr 27 10:54:13 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 27 Apr 2026 10:54:13 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1294781.1571509 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wHJbM-0006SW-Kt; Mon, 27 Apr 2026 10:54:08 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1294781.1571509; Mon, 27 Apr 2026 10:54: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 1wHJbM-0006S6-Cq; Mon, 27 Apr 2026 10:54:08 +0000
Received: by outflank-mailman (input) for mailman id 1294781;
 Mon, 27 Apr 2026 10:54:07 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <freddy77@gmail.com>) id 1wHJbL-0006HQ-OI
 for xen-devel@lists.xenproject.org; Mon, 27 Apr 2026 10:54:07 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wHJbL-004Ir6-5F
 for xen-devel@lists.xenproject.org; Mon, 27 Apr 2026 12:54:07 +0200
Received: from [10.42.69.2] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <freddy77@gmail.com>)
 id 69ef404f-5cb7-0a2a0a5109dd-0a2a4502c732-0
 for <xen-devel@lists.xenproject.org>; Mon, 27 Apr 2026 12:54:07 +0200
Received: from [209.85.128.46] (helo=mail-wm1-f46.google.com)
 by tlsNG-720697.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.1)
 (envelope-from <freddy77@gmail.com>)
 id 69ef404e-af86-0a2a45020019-d155802eb0af-3
 for <xen-devel@lists.xenproject.org>; Mon, 27 Apr 2026 12:54:07 +0200
Received: by mail-wm1-f46.google.com with SMTP id
 5b1f17b1804b1-483487335c2so98602365e9.2
 for <xen-devel@lists.xenproject.org>; Mon, 27 Apr 2026 03:54:07 -0700 (PDT)
Received: from localhost.localdomain (5.116.208.46.dyn.plus.net.
 [46.208.116.5]) by smtp.gmail.com with ESMTPSA id
 5b1f17b1804b1-48a5c4b9e8dsm116133355e9.7.2026.04.27.03.54.05
 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
 Mon, 27 Apr 2026 03:54:05 -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=20251104 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=20251104; t=1777287246; x=1777892046; 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;
        bh=p4AU8wNCg4sNfAG0KEAAxVIbQZGrr/jQDed1Iwzn940=;
        b=LaqaedwaC8kPp/+SJUGO//T/3kYevf1jawMYsUTozvz8hsdITx9KeITmNR6d5LNnvs
         +fM7H5EnjNsBCZRmKYSaW8SnH6foHEY9RpU7lwv5n+Xi2FI8jrZU6wmVleI3Q2fquxau
         6IVkpZgAAdbTzR0oEBaCu923DoNw/66UsurVvfSo8FCubdC0cOKGrmpLblaR3bQc8tcR
         BVLO8+EH2Us38OpZ/QpxTZcAD7Ri3Eq5khxCo3L65v+vB4/wzjR3UJeU0p6744ZvQ9I8
         5LwVRQB0LODWrYeqVz5IMgRErYisn/Ju+FDvy/LUHapPywys0d5MIysAG25i94Ubm3Ja
         jDrA==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20251104; t=1777287246; x=1777892046;
        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;
        bh=p4AU8wNCg4sNfAG0KEAAxVIbQZGrr/jQDed1Iwzn940=;
        b=f+6/D2eMjOh2sIIoJnkdW+YkUrsnJP0eUqPhILQsvNSceeexUUWmBpBZKJ1DWeMcG0
         gLRRSNcDJ7pWWGTCI7HUnAOlwEoKkcB+nzVA5/HnFHFMAbsMRpbBeOLlZtth7sgEXWJb
         OoGXEku52subUpadVt78xzi4CQVYV3OdlXng+qoPSA7TP8fP9vaAqrZ4CaBPc1RhkFn+
         p6qq6fiH070KUjfjaTlsZmKwa8+TgaB+8oo+X3ANipcF9K+SgBtB6lTnssGgo/DlACYY
         6RZYwIzHPRE0PGJ/EcQgkcEeWU5CkO2rRj5+Cpe9c6gilflWj5cP6NemM0weV5wt/8kX
         AEnQ==
X-Gm-Message-State: AOJu0YwAfkhH3Xs1m8/TeGReVpHTJZAU/YqgzYYhb6KUjI2HoxqEDQNr
	OB4GsDf5NGAV0avWtMWf/ROH9vyVp+q3nYvDnnPNb3bP3E8X0uSCh712mvwLPirf
X-Gm-Gg: AeBDieufWazTMn05yMAQrnMjJqxyTMBWQSZoDwl2ISMuosyN4A3sl9l2fChvwbLGxBF
	8w5Ue3PVaX6kaadhA9TQZ8BWuMPaKHl1VQuRd16pBR5FPZEymBYxma6wW9mr5394t4QIzb+Ij7Z
	R+a+Vnm27/mA6pWZFzUjYFnbF9lbjBPINBnCQmN3VpDatr2WjvBoTgILH76CKY8oVU3El8Q4/bb
	R3qnFcZFb6phf7NWvSHGIlWI4R8G4NCE39lxSikBjm3NZxpY3Bh3ThfUUsQRzwXXO3BhLRmfqj0
	LPH6lkesGwB6FY+Oqspw99GGUq0i8cyNwDXLnTMKdttpUbijVQLFV+dQsDT3Pn3oh/frsVRfJQY
	r3RuisUkqrUsRns74dv7JUnagikai3FcLaPgxwBKeZ2buVGx3pgUmQpyQQFts/tEPsQimcYfMAc
	SXwfF5KeeuN2AMXCS1aeoRVIVFTJJQIx2fFTUiu6fDpAsRS2RcZ/rLtIaxBRcnh+7b4ZWXc2wO9
	BjA
X-Received: by 2002:a05:600c:3b9b:b0:489:fec9:a17e with SMTP id 5b1f17b1804b1-489fec9a322mr440855345e9.12.1777287245938;
        Mon, 27 Apr 2026 03:54:05 -0700 (PDT)
From: Frediano Ziglio <freddy77@gmail.com>
X-Google-Original-From: Frediano Ziglio <frediano.ziglio@cloud.com>
To: xen-devel@lists.xenproject.org
Cc: Frediano Ziglio <frediano.ziglio@citrix.com>,
	Anthony PERARD <anthony.perard@vates.tech>,
	Juergen Gross <jgross@suse.com>
Subject: [PATCH v2 5/7] xenguest: Use a single write_exact in write_headers
Date: Mon, 27 Apr 2026 11:53:30 +0100
Message-ID: <20260427105338.99792-6-frediano.ziglio@cloud.com>
X-Mailer: git-send-email 2.43.0
In-Reply-To: <20260427105338.99792-1-frediano.ziglio@cloud.com>
References: <20260427105338.99792-1-frediano.ziglio@cloud.com>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit
X-purgate-ID: tlsNG-720697/1777287247-88CC9161-6415FC08/0/0
X-purgate-type: clean
X-purgate-size: 2202

From: Frediano Ziglio <frediano.ziglio@citrix.com>

Reduce number of syscalls.

Signed-off-by: Frediano Ziglio <frediano.ziglio@citrix.com>
---
 tools/libs/guest/xg_sr_save.c | 37 +++++++++++++++++------------------
 1 file changed, 18 insertions(+), 19 deletions(-)

diff --git a/tools/libs/guest/xg_sr_save.c b/tools/libs/guest/xg_sr_save.c
index 62a39dfecc7a..8c4e760f8d0a 100644
--- a/tools/libs/guest/xg_sr_save.c
+++ b/tools/libs/guest/xg_sr_save.c
@@ -10,17 +10,22 @@ static int write_headers(struct xc_sr_context *ctx, uint16_t guest_type)
 {
     xc_interface *xch = ctx->xch;
     int32_t xen_version = xc_version(xch, XENVER_version, NULL);
-    struct xc_sr_ihdr ihdr = {
-        .marker  = IHDR_MARKER,
-        .id      = htonl(IHDR_ID),
-        .version = htonl(3),
-        .options = htons(IHDR_OPT_LITTLE_ENDIAN),
-    };
-    struct xc_sr_dhdr dhdr = {
-        .type       = guest_type,
-        .page_shift = XC_PAGE_SHIFT,
-        .xen_major  = (xen_version >> 16) & 0xffff,
-        .xen_minor  = (xen_version)       & 0xffff,
+    struct {
+        struct xc_sr_ihdr ihdr;
+        struct xc_sr_dhdr dhdr;
+    } hdrs = {
+        {
+            .marker  = IHDR_MARKER,
+            .id      = htonl(IHDR_ID),
+            .version = htonl(3),
+            .options = htons(IHDR_OPT_LITTLE_ENDIAN),
+        },
+        {
+            .type       = guest_type,
+            .page_shift = XC_PAGE_SHIFT,
+            .xen_major  = (xen_version >> 16) & 0xffff,
+            .xen_minor  = (xen_version)       & 0xffff,
+        },
     };
 
     if ( xen_version < 0 )
@@ -29,15 +34,9 @@ static int write_headers(struct xc_sr_context *ctx, uint16_t guest_type)
         return -1;
     }
 
-    if ( write_exact(ctx->fd, &ihdr, sizeof(ihdr)) )
-    {
-        PERROR("Unable to write Image Header to stream");
-        return -1;
-    }
-
-    if ( write_exact(ctx->fd, &dhdr, sizeof(dhdr)) )
+    if ( write_exact(ctx->fd, &hdrs, sizeof(hdrs)) )
     {
-        PERROR("Unable to write Domain Header to stream");
+        PERROR("Unable to write Headers to stream");
         return -1;
     }
 
-- 
2.53.0



From xen-devel-bounces@lists.xenproject.org Mon Apr 27 10:54:13 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 27 Apr 2026 10:54:13 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1294777.1571476 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wHJbI-0005ju-CO; Mon, 27 Apr 2026 10:54:04 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1294777.1571476; Mon, 27 Apr 2026 10:54: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 1wHJbI-0005jn-9h; Mon, 27 Apr 2026 10:54:04 +0000
Received: by outflank-mailman (input) for mailman id 1294777;
 Mon, 27 Apr 2026 10:54:03 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <freddy77@gmail.com>) id 1wHJbH-0005d1-M0
 for xen-devel@lists.xenproject.org; Mon, 27 Apr 2026 10:54:03 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wHJbH-004Inu-2U
 for xen-devel@lists.xenproject.org; Mon, 27 Apr 2026 12:54:03 +0200
Received: from [10.42.69.6] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <freddy77@gmail.com>)
 id 69ef4047-5cb7-0a2a0a5109dd-0a2a4506ab9a-28
 for <xen-devel@lists.xenproject.org>; Mon, 27 Apr 2026 12:54:03 +0200
Received: from [209.85.128.49] (helo=mail-wm1-f49.google.com)
 by tlsNG-16d1c6.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.1)
 (envelope-from <freddy77@gmail.com>)
 id 69ef404a-7371-0a2a45060019-d1558031b8af-3
 for <xen-devel@lists.xenproject.org>; Mon, 27 Apr 2026 12:54:02 +0200
Received: by mail-wm1-f49.google.com with SMTP id
 5b1f17b1804b1-488a88aeec9so125694715e9.2
 for <xen-devel@lists.xenproject.org>; Mon, 27 Apr 2026 03:54:02 -0700 (PDT)
Received: from localhost.localdomain (5.116.208.46.dyn.plus.net.
 [46.208.116.5]) by smtp.gmail.com with ESMTPSA id
 5b1f17b1804b1-48a5c4b9e8dsm116133355e9.7.2026.04.27.03.54.00
 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
 Mon, 27 Apr 2026 03:54:00 -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=20251104 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=20251104; t=1777287242; x=1777892042; 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;
        bh=mQuJg18CTxOpb+CiZpRsAxRqnG2FkStLAfpVtU9HpvE=;
        b=kTtT7Lziv85cvWbNwlixmOigtONfppaa1mm/AKF+AG+GL55f6ynqmHqxwbQZKgPPEn
         hxHdO2TRN5RveSyh5dKd5GVRRcCU1wruTL+PuVmt1UkSdAZ/6NweaSzT86LnFH0tQ3O5
         cc0aBuq4Spx6hwLNlVnXxLiek55WgnV8lsuB4GoeBkKrhvy1lBn4LpvBjqt1Zb6Eh+Sk
         fSJeoVy6tFn9RIEmDnblQ3h7iFEE54UZzl/wRdl1xp2QIjmTFv3XUFjiyU+p5S7ZCnKc
         R+aaR4r5flfGbNHc3Z1qbIVWVmVaUcIS50z9lt/QiUGSLedQqbDAM6ODfXhqnGy27GNX
         VfuA==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20251104; t=1777287242; x=1777892042;
        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;
        bh=mQuJg18CTxOpb+CiZpRsAxRqnG2FkStLAfpVtU9HpvE=;
        b=qlYkYtHn5lu5Oyrze2xg2ztKtz87hKoykO8CHl5sOXFIgNuoGpWbibUwPKv3qSAkU2
         CT+whEmAmNlmDnEBq+wXqVNrqnCYLpKcjEYvmXTS+fULl3BwXm200ZD3v/IefYxKj5vB
         dWxaYkHmeRwiAElBJ3Exehfmrlw5zGIKO9/qFEaUEyBlUb3NXToEnp9e3g43HjIajGVo
         F3MWLiP9EWG77GStGWVIcb2OC5oxuCPqiDjYYOKu8AlyHAvkKvYrM1mrtEQ4yfnjRNNi
         B32UYk3Huzs/uKPwRd73tdbdtViA+dYdbnisNgmtsLN635/hiuG2Max5F1ugsr0QJ+xb
         BRoQ==
X-Gm-Message-State: AOJu0Yyqj4aVPx1FUqR0lUVgCo1T4ixuXxQZ9f3NuLIPJjMDK7u5dDXE
	00ynYx7y2N0e9lu4CgjNgfvbGbQYqaMiZ65I15Bz1RAmE8dwgaWIBkImCsUP+z+8
X-Gm-Gg: AeBDiev+4w/pBX0HJuSst1DXOBkmxzKmxY10IDq9u5ebBnohw6uXyeePDJvM8mxoC/D
	YooHiYfS0D3GoWHUrlsjI+kPaMgW1/W08Zem1Uct3GlIuNSCI4tQfo7dFKJVLw+c2cuMp3AyY1m
	xomX7mgczv7wl6iyeid4arQEEWbewIcR9SjvhuAdpyH3Z216KiX8zDbx2RECFQbJp5b12RFr+6a
	EUhBcnHK/aWs8EAjpW1KgDyrkc5luWs7XB5YmiLWNt1nwRaTdnI4rv3sUWLvB6wUKDDDOub64kH
	arNA0KzwyNxYIiD0NrBj4xZm1lehiLUVTH6eC7sr+fZUGd9CqEwwwTT+ygSQk124zkIoFD8dr3d
	t3JII9in5q6S1M3rT5PlNs3Sn/zwy3zkVw2y+fVR6HakZDjaEiYkn82J4/rE///v/G5+gC+9Y1a
	EY1wCvh66v2xJV5f9qaXzTUMbg3OnkhSTmkW3J6YYGOarNOuL2+C1AqQxWEKBNP9A//YYwSEXWD
	M6o
X-Received: by 2002:a05:600c:a086:b0:48a:568f:ae82 with SMTP id 5b1f17b1804b1-48a568fb009mr371461725e9.10.1777287241913;
        Mon, 27 Apr 2026 03:54:01 -0700 (PDT)
From: Frediano Ziglio <freddy77@gmail.com>
X-Google-Original-From: Frediano Ziglio <frediano.ziglio@cloud.com>
To: xen-devel@lists.xenproject.org
Cc: Frediano Ziglio <frediano.ziglio@citrix.com>,
	Anthony PERARD <anthony.perard@vates.tech>,
	Juergen Gross <jgross@suse.com>
Subject: [PATCH v2 1/7] xenguest: Reduce number of parts in write_split_record
Date: Mon, 27 Apr 2026 11:53:26 +0100
Message-ID: <20260427105338.99792-2-frediano.ziglio@cloud.com>
X-Mailer: git-send-email 2.43.0
In-Reply-To: <20260427105338.99792-1-frediano.ziglio@cloud.com>
References: <20260427105338.99792-1-frediano.ziglio@cloud.com>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit
X-purgate-ID: tlsNG-16d1c6/1777287242-CFB7DD75-FEAE29A2/0/0
X-purgate-type: clean
X-purgate-size: 1580

From: Frediano Ziglio <frediano.ziglio@citrix.com>

Small optimization.
There's no much sense to split the header in 2 pieces, it will
just take more time and space to reassemble them in the final
buffer.
This also avoids truncating combined_length to 32 bit in case of
64 bit machines potentially avoiding following record_length check.
The function become more coherent with following read_record
function.

Signed-off-by: Frediano Ziglio <frediano.ziglio@citrix.com>
---
 tools/libs/guest/xg_sr_common.c | 6 +++---
 1 file changed, 3 insertions(+), 3 deletions(-)

diff --git a/tools/libs/guest/xg_sr_common.c b/tools/libs/guest/xg_sr_common.c
index 7ccdc3b1f6aa..86c148c62f3e 100644
--- a/tools/libs/guest/xg_sr_common.c
+++ b/tools/libs/guest/xg_sr_common.c
@@ -59,11 +59,11 @@ int write_split_record(struct xc_sr_context *ctx, struct xc_sr_record *rec,
     static const char zeroes[(1u << REC_ALIGN_ORDER) - 1] = { 0 };
 
     xc_interface *xch = ctx->xch;
-    typeof(rec->length) combined_length = rec->length + sz;
+    size_t combined_length = rec->length + sz;
     size_t record_length = ROUNDUP(combined_length, REC_ALIGN_ORDER);
+    struct xc_sr_rhdr rhdr = { rec->type, combined_length };
     struct iovec parts[] = {
-        { &rec->type,       sizeof(rec->type) },
-        { &combined_length, sizeof(combined_length) },
+        { &rhdr,            sizeof(rhdr) },
         { rec->data,        rec->length },
         { buf,              sz },
         { (void *)zeroes,   record_length - combined_length },
-- 
2.53.0



From xen-devel-bounces@lists.xenproject.org Mon Apr 27 11:38:13 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 27 Apr 2026 11:38:13 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1294848.1571548 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wHKHl-0006qZ-F7; Mon, 27 Apr 2026 11:37:57 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1294848.1571548; Mon, 27 Apr 2026 11: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 1wHKHl-0006q9-CO; Mon, 27 Apr 2026 11:37:57 +0000
Received: by outflank-mailman (input) for mailman id 1294848;
 Mon, 27 Apr 2026 11:37:55 +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.19dcebb4015000f373@swg.vates.tech>)
 id 1wHKHj-0006m6-C7
 for xen-devel@lists.xenproject.org; Mon, 27 Apr 2026 11:37:55 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wHKHh-00CCkb-6R
 for xen-devel@lists.xenproject.org; Mon, 27 Apr 2026 13:37:53 +0200
Received: from [10.42.69.3] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1) (envelope-from
 <prod-mta-13.8631fc262581453bbf619ec5b2062170.19dcebb4015000f373@swg.vates.tech>)
 id 69ef4a7c-5cb7-0a2a0a5109dd-0a2a4503bc50-42
 for <xen-devel@lists.xenproject.org>; Mon, 27 Apr 2026 13:37:52 +0200
Received: from [185.255.28.34] (helo=prod-mta-13.swg-srv.net)
 by tlsNG-33051d.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.1)
 (envelope-from
 <prod-mta-13.8631fc262581453bbf619ec5b2062170.19dcebb4015000f373@swg.vates.tech>)
 id 69ef4a90-672d-0a2a45030019-b9ff1c22b0b1-3
 for <xen-devel@lists.xenproject.org>; Mon, 27 Apr 2026 13:37:52 +0200
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
 19dcebb4015000f373.005 for <xen-devel@lists.xenproject.org>
 (version=TLSv1.3 cipher=TLS_AES_256_GCM_SHA384);
 Mon, 27 Apr 2026 11:37:51 +0000
Received: from l14 (lfbn-lyo-1-414-55.w2-7.abo.wanadoo.fr [2.7.24.55])
 (Authenticated sender: anthony.perard)
 by mail2.vates.fr (Postfix) with ESMTPSA id 9555780F59;
 Mon, 27 Apr 2026 13:37:50 +0200 (CEST)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@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=hrWP7PDOax19ipthmTHj5VA87kpS9207hOAXZ+9QQII=;
 h=from:subject:date:message-id:to:cc:mime-version:content-type:in-reply-to:references:feedback-id;
 b=qZZCIgtUIxp43hXoj9Ud6chhyFjqMORWIUDH/I37nPLrXtYhuHMNfXuCx2BfrtNydeoqojodV
 60EtvVOLc2fHTcHcG8ApbS866IIRTpB23tedXu31LhblJchguwuLPRFh4wNA9aMSvFhKyW4OZEV
 gWDYrICba+EdCfqtzc+k3r74/VY5BbpKg8dVXjNSaVhdPzyIob8mItOPHTOjaLFwsNqncHv+J1G
 KwCr6Ag0vi59bMuNk+ZWZ+x28jsaMkR6BXkBQqGmGQ3TRdHOCnwxtLwQWeXyTIqseNYicfcsDeU
 ssACWTlWAbvIflezu3XfQD77g34M0fwuhwLlgnTPrHXw==
X-Zone-Loop: 492a10de2d9539b7d5598e7f4b37dac5a76e200bbdf9
x-campaign-type: default
x-transaction-id: b805f4ec-9786-4370-b7af-896787cb240a
x-swg-uid: 01-893d04e9-0ece-4f91-8421-830e938dd535
X-Mailer: Sweego
Message-ID:
 <1777289871.8631fc262581453bbf619ec5b2062170.19dcebb4015000f373@vates.tech>
x-swg-bid: 1777289871.8631fc262581453bbf619ec5b2062170.19dcebb4015000f373
Feedback-ID: default:8631fc262581453bbf619ec5b2062170:Sweego
x-campaign-id: default
x-client-id: 8631fc262581453bbf619ec5b2062170
X-Originating-IP: [37.26.189.201]
Date: Mon, 27 Apr 2026 13:37:50 +0200
From: Anthony PERARD <anthony.perard@vates.tech>
To: Frediano Ziglio <freddy77@gmail.com>
Cc: xen-devel@lists.xenproject.org,
	Frediano Ziglio <frediano.ziglio@citrix.com>,
	Jan Beulich <jbeulich@suse.com>,
	Andrew Cooper <andrew.cooper3@citrix.com>,
	Roger Pau =?iso-8859-1?Q?Monn=E9?= <roger.pau@citrix.com>,
	Teddy Astie <teddy.astie@vates.tech>,
	Juergen Gross <jgross@suse.com>
Subject: Re: [PATCH v2 0/7] Minor xenguest optimisations
References: <20260427105338.99792-1-frediano.ziglio@cloud.com>
MIME-Version: 1.0
Content-Disposition: inline
In-Reply-To: <20260427105338.99792-1-frediano.ziglio@cloud.com>
X-BM-Disclaimer: Yes
Content-Type: multipart/alternative; boundary="-=Part.2943.c447f66c6a72a997.19dcebb3dbc.51a878fbab5a8cc9=-"
X-Bm-Milter-Handled: 4ffbd6c1-ee69-4e1b-aabd-f977039bd3e2
X-Bm-Transport-Timestamp: 1777289870780
X-purgate-ID: tlsNG-33051d/1777289872-A2F62938-9DE6C680/0/0
X-purgate-type: clean
X-purgate-size: 1452

---=Part.2943.c447f66c6a72a997.19dcebb3dbc.51a878fbab5a8cc9=-
Content-Type: text/plain; charset=utf-8
Content-Transfer-Encoding: quoted-printable

On Mon, Apr 27, 2026 at 11:53:25AM +0100, Frediano Ziglio wrote:
> Edwin T=C3=B6r=C3=B6k (2):
>   tools/libs/guest: allocate various migration arrays just once
>   tools/lib/call: cache up to 4 pages in hypercall bounce buffers
>=20
> Frediano Ziglio (5):
>   xenguest: Reduce number of parts in write_split_record
>   xenguest: Reduce number of I/O vectors in write_batch
>   xenguest: Allows writev_exact to change iov array
>   xenguest: Reduce number of I/O vectors in write_batch
>   xenguest: Use a single write_exact in write_headers

Hi Frediano,

When you will resend the patch, could you change the prefix? "xenguest"
to me is a XenServer / XCP-ng binary that happen to live in the xen
repo, not something that exist upstream=2E There's plenty of better way to
prefix those commits, looking at the history of the lib:
    libs/guest
    libs/xg
    tools/libs/guest
    tools/xg
    tools/libxg
    tools/libs/guest

I think I prefer "libs/guest"=2E

And looks like there's one patch that doesn't touch libxenguest at all,
yet it is prefix with "xenguest:"=2E

Cheers,


-- 
Anthony Perard | Vates XCP-ng Developer

XCP-ng & Xen Orchestra - Vate=
s solutions

web: https://vates=2Etech
---=Part.2943.c447f66c6a72a997.19dcebb3dbc.51a878fbab5a8cc9=---


From xen-devel-bounces@lists.xenproject.org Mon Apr 27 12:47:21 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 27 Apr 2026 12:47:21 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1294863.1571564 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wHLMb-0007RE-Fn; Mon, 27 Apr 2026 12:47:01 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1294863.1571564; Mon, 27 Apr 2026 12:47: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 1wHLMb-0007R7-Ct; Mon, 27 Apr 2026 12:47:01 +0000
Received: by outflank-mailman (input) for mailman id 1294863;
 Mon, 27 Apr 2026 12:47:00 +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.19dcefa7237000f373@swg.vates.tech>)
 id 1wHLMa-0007Qu-85
 for xen-devel@lists.xenproject.org; Mon, 27 Apr 2026 12:47:00 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wHLMY-00FgIm-5f
 for xen-devel@lists.xenproject.org; Mon, 27 Apr 2026 14:46:58 +0200
Received: from [10.42.69.10] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1) (envelope-from
 <prod-mta-13.8631fc262581453bbf619ec5b2062170.19dcefa7237000f373@swg.vates.tech>)
 id 69ef5aab-5cb7-0a2a0a5109dd-0a2a450ac1e0-48
 for <xen-devel@lists.xenproject.org>; Mon, 27 Apr 2026 14:46:58 +0200
Received: from [185.255.28.34] (helo=prod-mta-13.swg-srv.net)
 by tlsNG-4011c0.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.1)
 (envelope-from
 <prod-mta-13.8631fc262581453bbf619ec5b2062170.19dcefa7237000f373@swg.vates.tech>)
 id 69ef5ac1-56b3-0a2a450a0019-b9ff1c2298a9-3
 for <xen-devel@lists.xenproject.org>; Mon, 27 Apr 2026 14:46:58 +0200
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
 19dcefa7237000f373.002 for <xen-devel@lists.xenproject.org>
 (version=TLSv1.3 cipher=TLS_AES_256_GCM_SHA384);
 Mon, 27 Apr 2026 12:46:52 +0000
Received: from l14 (lfbn-lyo-1-414-55.w2-7.abo.wanadoo.fr [2.7.24.55])
 (Authenticated sender: anthony.perard)
 by mail2.vates.fr (Postfix) with ESMTPSA id 4425B86257;
 Mon, 27 Apr 2026 14:46:52 +0200 (CEST)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@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=yNv3GZWdnJuUmBT81tuZQ6RqfJ2y2IIOCAcAm6zC9dg=;
 h=from:subject:date:message-id:to:cc:mime-version:content-type:in-reply-to:references:feedback-id;
 b=FoEnBjsfVKEe8Ivovikyi9aiLaF1k4lJCTGVlobMXe9ySnKbfRyVvTxwFD5yKuaTcJJTt/WQ2
 1eIlxXh5QkgSQWXinG59UehCpRh8xrP6hVpr0p5dWEt0svt13vINQ67/j4mw+epIo2B98UEe9Nr
 LQ3W7RAZITWPtSZxRyeMfEa+zdENFVDzLOP68zJWI9qKzqZXvk+Ae56dwLHIHnoteBy7w03BdbS
 puOBIPvgB1A1gDi0Og8E+oG6OuL7Yx+1oOj2mFDJD2CfvswtOVTON1Gl+M8l/kwKKGCUdJfYXYz
 H1N6j0IR/PZ10xRrq1MWPXWxuaHZs+G2y8kWitd/txLw==
X-Zone-Loop: b2700b57ea5ec49072933ad2e27a08536a4522fa6a6d
x-campaign-type: default
x-transaction-id: 6fafbd85-6eaf-405d-8691-80c2ae55437e
x-swg-uid: 01-3fe0df3f-fbca-41cc-b70b-c9ac24d58f3d
X-Mailer: Sweego
Message-ID:
 <1777294013.8631fc262581453bbf619ec5b2062170.19dcefa7237000f373@vates.tech>
x-swg-bid: 1777294013.8631fc262581453bbf619ec5b2062170.19dcefa7237000f373
Feedback-ID: default:8631fc262581453bbf619ec5b2062170:Sweego
x-campaign-id: default
x-client-id: 8631fc262581453bbf619ec5b2062170
X-Originating-IP: [37.26.189.201]
Date: Mon, 27 Apr 2026 14:46:51 +0200
From: Anthony PERARD <anthony.perard@vates.tech>
To: Thierry Escande <thierry.escande@vates.tech>
Cc: xen-devel@lists.xenproject.org, Juergen Gross <jgross@suse.com>,
	Daniel P =?iso-8859-1?Q?=2E_Berrang=E9?= <berrange@redhat.com>,
	Marek =?iso-8859-1?Q?Marczykowski-G=F3recki?= <marmarek@invisiblethingslab.com>
Subject: Re: [RFC PATCH v4 0/6] xl: Allow PCI devices to be passthrough'd via
 Qemu command line
References: <1776955586.8631fc262581453bbf619ec5b2062170.19dbace7684000f373@vates.tech>
MIME-Version: 1.0
Content-Disposition: inline
In-Reply-To: <1776955586.8631fc262581453bbf619ec5b2062170.19dbace7684000f373@vates.tech>
X-BM-Disclaimer: Yes
Content-Type: multipart/alternative; boundary="-=Part.2953.2ae372a6068e561c.19dcefa6ff4.4de407b991a5f481=-"
X-Bm-Milter-Handled: 4ffbd6c1-ee69-4e1b-aabd-f977039bd3e2
X-Bm-Transport-Timestamp: 1777294012405
X-purgate-ID: tlsNG-4011c0/1777294018-453638B7-9F98EF3C/0/0
X-purgate-type: clean
X-purgate-size: 3014

---=Part.2953.2ae372a6068e561c.19dcefa6ff4.4de407b991a5f481=-
Content-Type: text/plain; charset=utf-8
Content-Transfer-Encoding: quoted-printable

On Thu, Apr 23, 2026 at 04:46:10PM +0200, Thierry Escande wrote:
> This series adds new 'hotplug' option for PCI device passthrough=2E
>=20
> The current mechanism for device passthrough uses QMP device_add command
> to hot-plug PCI devices to the guest Qemu instance=2E This is an issue f=
or
> guests running on Q35 chipset (preliminary support posted at [1]) since =
the
> Q35 PCI root bus does not support hotplug=2E Devices could be hotplugged=
 to
> a secondary PCI bus but Xen only support 1 PCI bus for now=2E
>=20
> The 'hotplug' option allows to control how devices are attached to the
> guest, either by using the legacy QMP mechanism (this is the default) or=
 by
> passing them directly to the Qemu command line using xen-pci-passthrough
> device=2E

Hi Thierry,

I don't like this new "hotplug" option=2E It is just an implementation
detail on how the device is added to QEMU=2E It is just going to be
confusing for users=2E Because in both case, the device is "cold-plugged",
it just happen to be inserted after QEMU thing it is fully configured,
but the guest hasn't really started yet=2E

It is likely that we implemented the pci passthrough this way because it
worked and because we could reuse the same code path for real hotplug as
well=2E

So, for the patch that is really needed (adding the device on the
command line), we could do just for the Q35 machine, or we could do that
for all guests=2E For the second option, probably the best one, but we are
going to try to find out if everything work as expected, especially
Linux stubdomain=2E

> Example usage in cfg file:
>  pci =3D [ "00:03=2E0,seize=3D1,hotplug=3D0" ]
>=20
> Since Qemu -device option accepts parameters in json format, this
> patchset adds a new internal function libxl__device_pci_get_qapi_json() =
that
> generates the device json object used for both QMP hotplug and command l=
ine
> passing=2E
>=20
> Also, to handle the assignable PCI device list, the function
> libxl_pci_assignable() is renamed as libxl_device_pci_assignable() and i=
s

I though you were renaming a public API function, but the original one
was static with the wrong name=2E (function prefixed with "libxl_", one
underscore, are in the public API, private one to libxl are prefixed
with "libxl__"=2E)

> made available from libxl=2Eh for access in libxl_dm=2Ec=2E 2 other func=
tions are

If you only mean to use a function internally, add it to
libxl_internal=2Eh, I don't want to expose more functions to the API
without a good reason=2E `xl pci-assignable-list` already work, so I don't
think exposing a new function is useful=2E

Cheers,


-- 
Anthony Perard | Vates XCP-ng Developer

XCP-ng & Xen Orchestra - Vate=
s solutions

web: https://vates=2Etech
---=Part.2953.2ae372a6068e561c.19dcefa6ff4.4de407b991a5f481=---


From xen-devel-bounces@lists.xenproject.org Mon Apr 27 13:29:31 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 27 Apr 2026 13:29:31 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1294870.1571574 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wHM1Q-0004Qg-EO; Mon, 27 Apr 2026 13:29:12 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1294870.1571574; Mon, 27 Apr 2026 13: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 1wHM1Q-0004QZ-Ag; Mon, 27 Apr 2026 13:29:12 +0000
Received: by outflank-mailman (input) for mailman id 1294870;
 Mon, 27 Apr 2026 13:29:11 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92) id 1wHM1P-0004QT-IY
 for xen-devel@lists.xenproject.org; Mon, 27 Apr 2026 13:29:11 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wHM1O-005ZsU-F4
 for xen-devel@lists.xenproject.org; Mon, 27 Apr 2026 15:29:10 +0200
Received: from [10.42.69.10] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <oleksii.kurochko@gmail.com>)
 id 69ef649c-bab6-0a2a0a5309dd-0a2a450ac220-20
 for <xen-devel@lists.xenproject.org>; Mon, 27 Apr 2026 15:29:10 +0200
Received: from [209.85.128.48] (helo=mail-wm1-f48.google.com)
 by tlsNG-4011c0.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.1)
 (envelope-from <oleksii.kurochko@gmail.com>)
 id 69ef64a6-56b3-0a2a450a0019-d1558030ed48-3
 for <xen-devel@lists.xenproject.org>; Mon, 27 Apr 2026 15:29:10 +0200
Received: by mail-wm1-f48.google.com with SMTP id
 5b1f17b1804b1-4891e86fabeso112233755e9.1
 for <xen-devel@lists.xenproject.org>; Mon, 27 Apr 2026 06:29:10 -0700 (PDT)
Received: from [192.168.1.6] (user-109-243-69-121.play-internet.pl.
 [109.243.69.121]) by smtp.gmail.com with ESMTPSA id
 5b1f17b1804b1-4891c08faffsm1047785565e9.1.2026.04.27.06.29.08
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Mon, 27 Apr 2026 06:29:09 -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=20251104 header.d=gmail.com header.i="@gmail.com" header.h="Content-Transfer-Encoding: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=20251104; t=1777296550; x=1777901350; darn=lists.xenproject.org;
        h=content-transfer-encoding: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;
        bh=mkGfo+UOjoxYzBSBmwgThgrWn/HwaxyASSA7oHIl8rs=;
        b=RJ/rS489KtqS+N+8oate2pHwOZjPsUoPkYor9xbIzWgMkpHcg9HUARCf6wZfYM2XHR
         64lj3rAERv8XXWOLLGePa2a5EzTafHI6lSy01AgFaivXtrm6AxKQajnXkEgP2knvwScF
         i1rNm0So4ZWI93eaCn4Hie7ZHfaIcaJ2Pgt6RrNqv1WV9A3SPcZteiBYfLctV0t425Vz
         XiLWE3CBSwqehVRZ/UDExCbXNX+w2L801OA8tsSJx4zWnpV00j+DALEt8vu/DGIAwzts
         9Yo5h9SxdnwEweXv1T7u1Qxxv9/a1s+9wV1WgAMrRPMzHJfrSKAy3twEpP8m09sjj7cT
         2enw==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20251104; t=1777296550; x=1777901350;
        h=content-transfer-encoding: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;
        bh=mkGfo+UOjoxYzBSBmwgThgrWn/HwaxyASSA7oHIl8rs=;
        b=g5iIOrDvOTx3Fy5jksLvjHFvdqxg8DBVDnSaTpTxgq0cIltPe11iQhl2ICAdeqA88a
         F4Bs7f/V2vw5onvDsoIW7tUZFL552TxFafFp3IPFRaYQO+QNiy7g4aLtpdiaFVxWyxH5
         PaI2mXRZdfRgtFxepnAyLUmBrESkbuAQck5JF/bDGYDJ9niEAlYt4Vco7SD+LMqIa7aJ
         ZbMVIwEddxtasyMdGvq6p0jD8Rk+z0X53IOOD94+vbrUftL7FpD2aA/Med0co6448sbs
         +ItpqYdY4uhYZTqgGXQn2f+GctTjpyelf5wxRv+sFiVde/j8UasYN8VKoxleyqDRyvDE
         Z9Cw==
X-Forwarded-Encrypted: i=1; AFNElJ/hBHWEPqXmUs9mrg60pImgnWGznTg09w3v6R0xhSz2nvmo8rNpXaM/zMkFu5efmuSoTkzeemTjNfg=@lists.xenproject.org
X-Gm-Message-State: AOJu0YzJGp8MYhZS7cc660aRXOAwbdyIIgEe2uJN9xwAnWcgfJWcMVbq
	oX1P2gTbSOOIYQ+U107+M8KJMDWq1prHq07GLsy5jpaLQnzLoJ/mZP+o
X-Gm-Gg: AeBDiesjJ+hYCOra/APdkschVlGR/H9wg3NRJj/YFNzra+YmRGx5ICqux3fp9EUqXUM
	G//HC7Rw9A08zMdNMl9eHXkje809f3lhbinEyB4hpmUvPuIzchtkJJH8pFcRyh7/WYdRK5b1g41
	A0NlN6HVGDeYmJf/nMTdXcMkuhDKg3R9+SQxDn/DaifQInMQN25307brZdryCQ9VBof8/pa+xbz
	L8Km+97FA34T0fzjxhaD9okbjKfYVxW6etvUFO182zhvzU2X4qvYOmfUBH4pO+mEJPmG3CYCN7T
	iPZlNcjyOtiVI9jpMyYG0ffiwK60x4p0SQIF/11nx8wvK8ZQbRHcHYl22027Z1o0X4L/GqfQyMI
	n+VKISvaiUZ2AD9pN6+Z7zXC4F5QvKMWW9Vrx0KNHDatlKGqBfAOXjZMCnHlIbzXogNWEGA+G4+
	YDfvhXJTRR/QDri70TAq5S7UddtgOaJazSAih0tq7ojTgzmb4VZGBeB3HREsN8w+EuBMJLJoxIb
	G5dE4y8GhC11w==
X-Received: by 2002:a05:600c:621a:b0:48a:592c:e642 with SMTP id 5b1f17b1804b1-48a592ce867mr349520855e9.18.1777296549386;
        Mon, 27 Apr 2026 06:29:09 -0700 (PDT)
Message-ID: <9a897425-f41d-4d9d-8108-5930f5e12185@gmail.com>
Date: Mon, 27 Apr 2026 15:29:08 +0200
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH v3 3/3] xen: introduce CONFIG_HAS_DOMAIN_TYPE
To: "Orzel, Michal" <michal.orzel@amd.com>, xen-devel@lists.xenproject.org
Cc: Romain Caritey <Romain.Caritey@microchip.com>,
 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.pau@citrix.com>
References: <cover.1776957840.git.oleksii.kurochko@gmail.com>
 <fa2e255e53fe3aef2075ba8457be5fd4ba9156d1.1776957840.git.oleksii.kurochko@gmail.com>
 <71ae72eb-3424-4d41-afb7-9f1462e84aaf@amd.com>
Content-Language: en-US
From: Oleksii Kurochko <oleksii.kurochko@gmail.com>
In-Reply-To: <71ae72eb-3424-4d41-afb7-9f1462e84aaf@amd.com>
Content-Type: text/plain; charset=UTF-8; format=flowed
Content-Transfer-Encoding: 7bit
X-purgate-ID: tlsNG-4011c0/1777296550-46D708B7-D66F5448/10/73395122804
X-purgate-type: spam
X-purgate-size: 1032



On 4/27/26 11:21 AM, Orzel, Michal wrote:
> 
> 
> On 24-Apr-26 3:36 PM, Oleksii Kurochko wrote:
>> As domain type is part of common code now there is no any reason
> NIT: remove "any" after "no"
> 
>> to have architecture-specific set_domain_type() functions so
>> it is dropped.
>>
>> Change the guard around access of kinfo->type to CONFIG_HAS_DOMAIN_TYPE
>> for consistency. Also, drop and add some parentheses to be aligned
>> with the similar if() below.
>>
>> x86 with CONFIG_64BIT=y shouldn't use is_{32,64}bit_domain() as
>> x86 doesn't have support of CONFIG_HAS_DOMAIN_TYPE. Since x86_32 Xen no
>> longer builds, the fallback is currently only relevant for arm32.
>>
>> Signed-off-by: Oleksii Kurochko <oleksii.kurochko@gmail.com>
> You don't seem to remove enum domain_type type from struct arch_domain which is
> now unused. With that removed:

Oh, right. I dropped it only from struct kernel_info. I will drop it.

> Reviewed-by: Michal Orzel <michal.orzel@amd.com>

Thanks.

~ Oleksii


From xen-devel-bounces@lists.xenproject.org Mon Apr 27 13:54:57 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 27 Apr 2026 13:54:57 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1294881.1571584 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wHMQA-0008VV-BI; Mon, 27 Apr 2026 13:54:46 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1294881.1571584; Mon, 27 Apr 2026 13:54: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 1wHMQA-0008VO-8W; Mon, 27 Apr 2026 13:54:46 +0000
Received: by outflank-mailman (input) for mailman id 1294881;
 Mon, 27 Apr 2026 13:54:45 +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.19dcf387bbd000f373@swg.vates.tech>)
 id 1wHMQ9-0008VH-8B
 for xen-devel@lists.xenproject.org; Mon, 27 Apr 2026 13:54:45 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wHMQ8-00G6M2-JF
 for xen-devel@lists.xenproject.org; Mon, 27 Apr 2026 15:54:44 +0200
Received: from [10.42.69.10] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1) (envelope-from
 <prod-mta-13.8631fc262581453bbf619ec5b2062170.19dcf387bbd000f373@swg.vates.tech>)
 id 69ef6a97-5cb7-0a2a0a5109dd-0a2a450a90a8-44
 for <xen-devel@lists.xenproject.org>; Mon, 27 Apr 2026 15:54:44 +0200
Received: from [185.255.28.34] (helo=prod-mta-13.swg-srv.net)
 by tlsNG-4011c0.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.1)
 (envelope-from
 <prod-mta-13.8631fc262581453bbf619ec5b2062170.19dcf387bbd000f373@swg.vates.tech>)
 id 69ef6aa4-56b3-0a2a450a0019-b9ff1c22a053-3
 for <xen-devel@lists.xenproject.org>; Mon, 27 Apr 2026 15:54:44 +0200
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
 19dcf387bbd000f373.007 for <xen-devel@lists.xenproject.org>
 (version=TLSv1.3 cipher=TLS_AES_256_GCM_SHA384);
 Mon, 27 Apr 2026 13:54:38 +0000
Received: from julian.home (lfbn-lyo-1-414-55.w2-7.abo.wanadoo.fr [2.7.24.55])
 (Authenticated sender: julian.vetter@vates.tech)
 by mail2.vates.fr (Postfix) with ESMTPSA id E2539865DE;
 Mon, 27 Apr 2026 15:54:37 +0200 (CEST)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@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=0Ab05w3Cc3n+I13wVZW7ebdwmBh1B9H+TUWiPdGq5RY=;
 h=from:subject:date:message-id:to:cc:mime-version:content-type:feedback-id;
 b=hUZJV/UxG/DXY7Q8EauK9ziJ/o9/vaV6aUCIfgtk68BL0l3v6s2/G1pEdAuXVPRdvdxJB159Z
 A6J+WWvEfq5RZ36PbaC1wVuiVi/IhFh1r4LaRc2nCZYdY0ctugGRkRiuaMpV2cloOG+H49gu8Gj
 65qzISNWtIegMzUBEAl9NoUTfwSo583o5GPGpGKWlCwJWrbI9sVg/6rknwDeYu5y/1GrSymbdej
 lOgSRKAH3RDrVKlVBt5EVayww+OC+O0Rj9DUYVtVPuxC0SdOuEjBtjNCztQ531SfVtbJSJsACd3
 IsR0z/WBrJl6hQ4a7ymOxZV0wNMgxFdeLFeppj3e63lw==
X-Zone-Loop: 56a54a6456f57479f343e5543d2972b35cf9f7d82bab
x-campaign-type: default
x-transaction-id: 1c3fc14c-551e-4a61-9226-e3a507f66146
x-swg-uid: 01-e1e72c33-c0fb-4343-b56d-cab55ec8025f
X-Mailer: Sweego
Message-ID:
 <1777298078.8631fc262581453bbf619ec5b2062170.19dcf387bbd000f373@vates.tech>
x-swg-bid: 1777298078.8631fc262581453bbf619ec5b2062170.19dcf387bbd000f373
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
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=20Pau=20Monn=C3=A9?= <roger.pau@citrix.com>,
	Stefano Stabellini <sstabellini@kernel.org>,
	Bertrand Marquis <bertrand.marquis@arm.com>,
	Volodymyr Babchuk <Volodymyr_Babchuk@epam.com>,
	Teddy Astie <teddy.astie@vates.tech>,
	Julian Vetter <julian.vetter@vates.tech>
Subject: [PATCH v4 0/9] x86/hvm: Add Extended MSI destination ID support
Date: Mon, 27 Apr 2026 15:53:57 +0200
MIME-Version: 1.0
X-BM-Disclaimer: Yes
Content-Type: multipart/alternative; boundary="-=Part.2972.abfc823cf368011e.19dcf3879c2.a24ad5d5067271c8=-"
X-Bm-Milter-Handled: 4ffbd6c1-ee69-4e1b-aabd-f977039bd3e2
X-Bm-Transport-Timestamp: 1777298078147
X-purgate-ID: tlsNG-4011c0/1777298084-80A7F8B7-40F03E11/0/0
X-purgate-type: clean
X-purgate-size: 4541

---=Part.2972.abfc823cf368011e.19dcf3879c2.a24ad5d5067271c8=-
Content-Type: text/plain; charset=utf-8
Content-Transfer-Encoding: quoted-printable

Thank you very much Roger and Jan for your feedback! I have addressed
your feedback, see below=2E For me there is only one question, I'm not
sure if this is what you had in mind Roger when you wrote:
"Retrofitting the new interface into the old one seems weird=2E  I would
do it the other way around - implement the old bind domctl on top of
an interface that's more suited for the new DM op=2E"
It requires some preparatory work=2E But I tried to make the
restructunring diffs as easy to review as possible by splitting the
refactoring into mutliple steps=2E

Signed-off-by: Julian Vetter <julian=2Evetter@vates=2Etech>
---
Changes in v4:
- Replaced the v3 approach of extending the XEN_DOMCTL_bind_pt_irq
  gflags ABI (XEN_DOMCTL_VMSI_X86_EXT_DEST_ID_MASK / VMSI_X86_FULL_DEST)
  with raw MSI addr + data storage throughout=2E pt_irq_bind_msi() now
  accepts the raw address + data values and decodes the destination
  internally=2E No public domctl ABI changes
- As suggested by Roger, replaced XEN_DMOP_enable_ext_dest_id (v3 patch
  6, a separate call before domain start) with a flags byte from the
  existing pad[3] field of XEN_DMOP_create_ioreq_server=2E The new
  XEN_DMOP_IOREQ_SERVER_EXT_DEST_ID flag lets each server signal support
  at registration time and allows the feature to be levelled across all
  servers before arch_domain_creation_finished()
- Redirect xc_domain_{update,unbind}_msi_irq() in libxenctrl to use the
  new DM ops, and reject PT_IRQ_TYPE_MSI in
  XEN_DOMCTL_{bind,unbind}_pt_irq (as suggested by Jan)
- Add three preparatory no-functional-change commits (patches 2-4) that
  wrap the restart block in braces, extract pt_irq_dpci_setup(), and
  extract the PT_IRQ_TYPE_MSI case body into pt_irq_bind_msi(), making
  the interface change in patch 5 reviewable as a clean diff
- Rework ioapic_check() to validate named fields (base_address, APIC ID
  width, ioregsel range) instead of rejecting any non-zero reserved
  bits, which would have falsely rejected RTEs carrying extended
  destination IDs
---
Julian Vetter (9):
  x86/vioapic: Add ioapic_check() to validate IO-APIC state before
    restore
  x86/passthrough: Wrap pt_irq_create_bind() restart block in braces
  x86/passthrough: Extract pt_irq_dpci_setup() from pt_irq_create_bind()
  x86/passthrough: Extract PT_IRQ_TYPE_MSI body into pt_irq_bind_msi()
  x86/passthrough: Introduce pt_irq_bind_msi() as canonical MSI bind
    path
  x86/hvm: Support extended destination IDs in virtual MSI and IO-APIC
  x86/dmop: Add XEN_DMOP_{bind,unbind}_pt_msi_irq DM ops
  hvm/ioreq: Negotiate extended destination ID support per ioreq server
  x86/cpuid: Advertise XEN_HVM_CPUID_EXT_DEST_ID when device model opts
    in

 tools/include/xendevicemodel=2Eh          |  34 +-
 tools/libs/ctrl/xc_devicemodel_compat=2Ec |   2 +-
 tools/libs/ctrl/xc_domain=2Ec             |  52 ++--
 tools/libs/devicemodel/core=2Ec           |  41 ++-
 xen/arch/arm/ioreq=2Ec                    |   5 +
 xen/arch/x86/cpuid=2Ec                    |  13 +
 xen/arch/x86/domain=2Ec                   |  10 +
 xen/arch/x86/domctl=2Ec                   |  10 +-
 xen/arch/x86/hvm/dm=2Ec                   |  68 ++++
 xen/arch/x86/hvm/ioreq=2Ec                |  37 +++
 xen/arch/x86/hvm/irq=2Ec                  |   9 +-
 xen/arch/x86/hvm/vioapic=2Ec              |  50 ++-
 xen/arch/x86/hvm/vmsi=2Ec                 |  54 +---
 xen/arch/x86/include/asm/hvm/domain=2Eh   |   9 +
 xen/arch/x86/include/asm/hvm/hvm=2Eh      |   4 +-
 xen/arch/x86/include/asm/hvm/irq=2Eh      |   4 +-
 xen/arch/x86/include/asm/hvm/vioapic=2Eh  |  12 +
 xen/arch/x86/include/asm/msi=2Eh          |  18 +-
 xen/common/ioreq=2Ec                      |  13 +-
 xen/drivers/passthrough/x86/hvm=2Ec       | 396 ++++++++++++++----------
 xen/include/public/arch-x86/hvm/save=2Eh  |  21 +-
 xen/include/public/hvm/dm_op=2Eh          |  53 +++-
 xen/include/xen/iommu=2Eh                 |   3 +
 xen/include/xen/ioreq=2Eh                 |  27 ++
 xen/include/xlat=2Elst                    |   2 +
 25 files changed, 703 insertions(+), 244 deletions(-)

--=20
2=2E53=2E0



-- 
Julian Vetter | Vates Hypervisor & Kernel Developer

XCP-ng & Xen Orch=
estra - Vates solutions

web: https://vates=2Etech
---=Part.2972.abfc823cf368011e.19dcf3879c2.a24ad5d5067271c8=---


From xen-devel-bounces@lists.xenproject.org Mon Apr 27 13:54:57 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 27 Apr 2026 13:54:57 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1294885.1571611 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wHMQK-0000lW-6V; Mon, 27 Apr 2026 13:54:56 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1294885.1571611; Mon, 27 Apr 2026 13: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 1wHMQK-0000lP-3j; Mon, 27 Apr 2026 13:54:56 +0000
Received: by outflank-mailman (input) for mailman id 1294885;
 Mon, 27 Apr 2026 13:54:54 +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.19dcf387f6f000f373@swg.vates.tech>)
 id 1wHMQI-0000fU-P2
 for xen-devel@lists.xenproject.org; Mon, 27 Apr 2026 13:54:54 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wHMQI-00G6Ry-5f
 for xen-devel@lists.xenproject.org; Mon, 27 Apr 2026 15:54:54 +0200
Received: from [10.42.69.10] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1) (envelope-from
 <prod-mta-13.8631fc262581453bbf619ec5b2062170.19dcf387f6f000f373@swg.vates.tech>)
 id 69ef6aa6-5cb7-0a2a0a5109dd-0a2a450ab84c-32
 for <xen-devel@lists.xenproject.org>; Mon, 27 Apr 2026 15:54:54 +0200
Received: from [185.255.28.34] (helo=prod-mta-13.swg-srv.net)
 by tlsNG-4011c0.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.1)
 (envelope-from
 <prod-mta-13.8631fc262581453bbf619ec5b2062170.19dcf387f6f000f373@swg.vates.tech>)
 id 69ef6aa4-56b3-0a2a450a0019-b9ff1c22a053-6
 for <xen-devel@lists.xenproject.org>; Mon, 27 Apr 2026 15:54:54 +0200
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
 19dcf387f6f000f373.007 for <xen-devel@lists.xenproject.org>
 (version=TLSv1.3 cipher=TLS_AES_256_GCM_SHA384);
 Mon, 27 Apr 2026 13:54:39 +0000
Received: from julian.home (lfbn-lyo-1-414-55.w2-7.abo.wanadoo.fr [2.7.24.55])
 (Authenticated sender: julian.vetter@vates.tech)
 by mail2.vates.fr (Postfix) with ESMTPSA id 073B087720;
 Mon, 27 Apr 2026 15:54:39 +0200 (CEST)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@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=W6jJeFHlnxQriqm4ULKsDBrsDCyMY1Q7f5BSbeqFbcU=;
 h=from:subject:date:message-id:to:cc:mime-version:content-type:in-reply-to:references:feedback-id;
 b=V7MxvOhePlTFu45csDwAzNIlBwj54zD+mZNspe3ooRDnNb5AyX7Qu1vPEOindNXbMjQCxspVG
 BkQjfF8uKrVMOwqV/NiheLAvajnQIL1i/qliFazKjprdmeXKwdsZPNXrBg+bV7XVpeUK8hqBDEF
 uhCALt/jO8nrTolasJuOoP9CuPXRL+6Tbda7JirHiNuWgAnR+OFAcdRC/RtZV2s50UqlUTvPUF4
 peKDnnVabv6hFmS4Wx1OgTu2Zi7AdK0lPwAzwL7uFVIqxZ+JI2j4UGYmadWhW0jHQ4vWgBUvWnC
 /iW6tuIL/Jyrc3s3uMgP6cEXplgkorQIVwhwxb61xFEA==
X-Zone-Loop: 6aeb684b3b03ddb97f269851a8e054cfd1874d6a8e8b
x-campaign-type: default
x-transaction-id: daa0c376-b8c0-4fc2-a6f0-daf148b1cec6
x-swg-uid: 01-695e8fc4-0d06-4f19-b360-195d6f63116c
X-Mailer: Sweego
Message-ID:
 <1777298079.8631fc262581453bbf619ec5b2062170.19dcf387f6f000f373@vates.tech>
x-swg-bid: 1777298079.8631fc262581453bbf619ec5b2062170.19dcf387f6f000f373
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
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=20Pau=20Monn=C3=A9?= <roger.pau@citrix.com>,
	Stefano Stabellini <sstabellini@kernel.org>,
	Bertrand Marquis <bertrand.marquis@arm.com>,
	Volodymyr Babchuk <Volodymyr_Babchuk@epam.com>,
	Teddy Astie <teddy.astie@vates.tech>,
	Julian Vetter <julian.vetter@vates.tech>
Subject: [PATCH v4 3/9] x86/passthrough: Extract pt_irq_dpci_setup() from pt_irq_create_bind()
Date: Mon, 27 Apr 2026 15:54:00 +0200
In-Reply-To: <20260427135406.1281424-1-julian.vetter@vates.tech>
References: <20260427135406.1281424-1-julian.vetter@vates.tech>
MIME-Version: 1.0
X-BM-Disclaimer: Yes
Content-Type: multipart/alternative; boundary="-=Part.2975.a3c70ac1ac8036d.19dcf387e09.478a393e5b10a835=-"
X-Bm-Milter-Handled: 4ffbd6c1-ee69-4e1b-aabd-f977039bd3e2
X-Bm-Transport-Timestamp: 1777298079241
X-purgate-ID: tlsNG-4011c0/1777298094-47F798B7-C02DFD8C/0/0
X-purgate-type: clean
X-purgate-size: 4749

---=Part.2975.a3c70ac1ac8036d.19dcf387e09.478a393e5b10a835=-
Content-Type: text/plain; charset=utf-8
Content-Transfer-Encoding: quoted-printable

The setup preamble in pt_irq_create_bind(), lazily allocating
hvm_irq_dpci, looking up the struct pirq, and spinning until any pending
hvm_dirq_assist softirq has drained, is needed by pt_irq_bind_msi() as
well=2E Extract it into a static helper pt_irq_dpci_setup() that returns
with d->event_lock write-locked on success=2E Replace the open-coded goto
restart loop with a do { } while (true) loop and a continue, making the
retry structure explicit without a label=2E No functional change=2E

Signed-off-by: Julian Vetter <julian=2Evetter@vates=2Etech>
---
Changes in v4:
- New patch
- Split out as a preparatory no-functional-change step to make the diff
  in patch 5 (pt_irq_bind_msi() interface change) easier to review
---
 xen/drivers/passthrough/x86/hvm=2Ec | 54 +++++++++++++++++++++++--------
 1 file changed, 40 insertions(+), 14 deletions(-)

diff --git a/xen/drivers/passthrough/x86/hvm=2Ec b/xen/drivers/passthrough=
/x86/hvm=2Ec
index 691fa1b2c7=2E=2E19463c3406 100644
--- a/xen/drivers/passthrough/x86/hvm=2Ec
+++ b/xen/drivers/passthrough/x86/hvm=2Ec
@@ -217,18 +217,22 @@ static struct vcpu *vector_hashing_dest(const struct=
 domain *d,
     return dest;
 }
=20
-int pt_irq_create_bind(
-    struct domain *d, const struct xen_domctl_bind_pt_irq *pt_irq_bind)
+/*
+ * Acquire d->event_lock (write), lazily allocate hvm_irq_dpci if needed,=
 look
+ * up the struct pirq for @pirq, and drain any pending hvm_dirq_assist so=
ftirq
+ * on it before returning=2E Returns 0 with d->event_lock held on success=
,
+ * negative errno otherwise (lock not held)=2E
+ */
+static int pt_irq_dpci_setup(struct domain *d, unsigned int pirq,
+                              struct hvm_irq_dpci **hvm_irq_dpci_out,
+                              struct hvm_pirq_dpci **pirq_dpci_out,
+                              struct pirq **info_out)
 {
     struct hvm_irq_dpci *hvm_irq_dpci;
     struct hvm_pirq_dpci *pirq_dpci;
     struct pirq *info;
-    int rc, pirq =3D pt_irq_bind->machine_irq;
=20
-    if ( pirq < 0 || pirq >=3D d->nr_pirqs )
-        return -EINVAL;
-
- restart:
+    do
     {
         write_lock(&d->event_lock);
=20
@@ -238,10 +242,11 @@ int pt_irq_create_bind(
             unsigned int i;
=20
             /*
-             * NB: the hardware domain doesn't use a hvm_irq_dpci struct =
because
-             * it's only allowed to identity map GSIs, and so the data co=
ntained in
-             * that struct (used to map guest GSIs into machine GSIs and =
perform
-             * interrupt routing) is completely useless to it=2E
+             * NB: the hardware domain doesn't use a hvm_irq_dpci struct
+             * because it's only allowed to identity map GSIs, and so the
+             * data contained in that struct (used to map guest GSIs into
+             * machine GSIs and perform interrupt routing) is completely
+             * useless to it=2E
              */
             hvm_irq_dpci =3D xzalloc(struct hvm_irq_dpci);
             if ( hvm_irq_dpci =3D=3D NULL )
@@ -269,15 +274,36 @@ int pt_irq_create_bind(
          * We MUST check for this condition as the softirq could be sched=
uled
          * and hasn't run yet=2E Note that this code replaced tasklet_kil=
l which
          * would have spun forever and would do the same thing (wait to f=
lush out
-         * outstanding hvm_dirq_assist calls=2E
+         * outstanding hvm_dirq_assist calls)=2E
          */
         if ( pt_pirq_softirq_active(pirq_dpci) )
         {
             write_unlock(&d->event_lock);
             cpu_relax();
-            goto restart;
+            continue;
         }
-    }
+
+        *hvm_irq_dpci_out =3D hvm_irq_dpci;
+        *pirq_dpci_out =3D pirq_dpci;
+        *info_out =3D info;
+        return 0;
+    } while ( true );
+}
+
+int pt_irq_create_bind(
+    struct domain *d, const struct xen_domctl_bind_pt_irq *pt_irq_bind)
+{
+    struct hvm_irq_dpci *hvm_irq_dpci;
+    struct hvm_pirq_dpci *pirq_dpci;
+    struct pirq *info;
+    int rc, pirq =3D pt_irq_bind->machine_irq;
+
+    if ( pirq < 0 || pirq >=3D d->nr_pirqs )
+        return -EINVAL;
+
+    rc =3D pt_irq_dpci_setup(d, pirq, &hvm_irq_dpci, &pirq_dpci, &info);
+    if ( rc )
+        return rc;
=20
     switch ( pt_irq_bind->irq_type )
     {
--=20
2=2E53=2E0



-- 
Julian Vetter | Vates Hypervisor & Kernel Developer

XCP-ng & Xen Orch=
estra - Vates solutions

web: https://vates=2Etech
---=Part.2975.a3c70ac1ac8036d.19dcf387e09.478a393e5b10a835=---


From xen-devel-bounces@lists.xenproject.org Mon Apr 27 13:54:57 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 27 Apr 2026 13:54:57 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1294883.1571603 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wHMQI-0000WX-0H; Mon, 27 Apr 2026 13:54:54 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1294883.1571603; Mon, 27 Apr 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 1wHMQH-0000WO-SW; Mon, 27 Apr 2026 13:54:53 +0000
Received: by outflank-mailman (input) for mailman id 1294883;
 Mon, 27 Apr 2026 13:54:52 +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.19dcf387e25000f373@swg.vates.tech>)
 id 1wHMQG-0000IA-HB
 for xen-devel@lists.xenproject.org; Mon, 27 Apr 2026 13:54:52 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wHMQF-00G6Ry-UD
 for xen-devel@lists.xenproject.org; Mon, 27 Apr 2026 15:54:51 +0200
Received: from [10.42.69.10] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1) (envelope-from
 <prod-mta-13.8631fc262581453bbf619ec5b2062170.19dcf387e25000f373@swg.vates.tech>)
 id 69ef6aa6-5cb7-0a2a0a5109dd-0a2a450ab84c-22
 for <xen-devel@lists.xenproject.org>; Mon, 27 Apr 2026 15:54:51 +0200
Received: from [185.255.28.34] (helo=prod-mta-13.swg-srv.net)
 by tlsNG-4011c0.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.1)
 (envelope-from
 <prod-mta-13.8631fc262581453bbf619ec5b2062170.19dcf387e25000f373@swg.vates.tech>)
 id 69ef6aa4-56b3-0a2a450a0019-b9ff1c22a053-5
 for <xen-devel@lists.xenproject.org>; Mon, 27 Apr 2026 15:54:51 +0200
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
 19dcf387e25000f373.007 for <xen-devel@lists.xenproject.org>
 (version=TLSv1.3 cipher=TLS_AES_256_GCM_SHA384);
 Mon, 27 Apr 2026 13:54:39 +0000
Received: from julian.home (lfbn-lyo-1-414-55.w2-7.abo.wanadoo.fr [2.7.24.55])
 (Authenticated sender: julian.vetter@vates.tech)
 by mail2.vates.fr (Postfix) with ESMTPSA id ACC1187586;
 Mon, 27 Apr 2026 15:54:38 +0200 (CEST)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@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=M55ILyTYc2aw6HFK62qDDTDBBSTPjeQAoqU+/EWfFok=;
 h=from:subject:date:message-id:to:cc:mime-version:content-type:in-reply-to:references:feedback-id;
 b=FhbavZ+jHbvlW71qdtQXujHX8KzmjJBkryM7txqtNTjytUph05GuHbiRzPk5o8kXzH1yYqteV
 1hIBO1mo1Z4/8CFHx+CxjCll1qGgAOog89FkMtXuRczuZtkNOz6D81Xhrs49RWT2bjxP9EwgiiI
 ZWL1j/4jpp/MHez9eMZBmf6lX66aKUSUk/XPjhx0XlGaf0aXaLkM0PTPmcYKRNGViXZf5wi+M5W
 LdKhVjBwZPx679g6GgdyGfbcIrW81hVbBFIm/6Qq+PW0qMPAS9QhWeZZcvVbLhTvOVcqpSlqDpi
 o/5Yupelezw4o85V01j4zS6Rbmj4+AnwFTS7hSmwPlvQ==
X-Zone-Loop: a4445c9258778274922d4e8b326bffba7c04a0539124
x-campaign-type: default
x-transaction-id: f79cca4a-7e5a-41ee-8d3f-74f172fd813a
x-swg-uid: 01-6e7e7490-5a7b-4903-9675-9c25475a6e66
X-Mailer: Sweego
Message-ID:
 <1777298079.8631fc262581453bbf619ec5b2062170.19dcf387e25000f373@vates.tech>
x-swg-bid: 1777298079.8631fc262581453bbf619ec5b2062170.19dcf387e25000f373
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
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=20Pau=20Monn=C3=A9?= <roger.pau@citrix.com>,
	Stefano Stabellini <sstabellini@kernel.org>,
	Bertrand Marquis <bertrand.marquis@arm.com>,
	Volodymyr Babchuk <Volodymyr_Babchuk@epam.com>,
	Teddy Astie <teddy.astie@vates.tech>,
	Julian Vetter <julian.vetter@vates.tech>
Subject: [PATCH v4 2/9] x86/passthrough: Wrap pt_irq_create_bind() restart block in braces
Date: Mon, 27 Apr 2026 15:53:59 +0200
In-Reply-To: <20260427135406.1281424-1-julian.vetter@vates.tech>
References: <20260427135406.1281424-1-julian.vetter@vates.tech>
MIME-Version: 1.0
X-BM-Disclaimer: Yes
Content-Type: multipart/alternative; boundary="-=Part.2974.6d24ae21874b484b.19dcf387cc9.7f8b3253be24fb72=-"
X-Bm-Milter-Handled: 4ffbd6c1-ee69-4e1b-aabd-f977039bd3e2
X-Bm-Transport-Timestamp: 1777298078922
X-purgate-ID: tlsNG-4011c0/1777298091-CFB7F8B7-1FB5AF6C/0/0
X-purgate-type: clean
X-purgate-size: 4613

---=Part.2974.6d24ae21874b484b.19dcf387cc9.7f8b3253be24fb72=-
Content-Type: text/plain; charset=utf-8
Content-Transfer-Encoding: quoted-printable

Enclose the restart/retry block in pt_irq_create_bind() in an explicit
compound statement to prepare for its extraction into a helper function=2E
No functional change=2E

Signed-off-by: Julian Vetter <julian=2Evetter@vates=2Etech>
---
Changes in v4:
- New patch
- Split out as a preparatory no-functional-change step to make the diff
  in patch 5 (pt_irq_bind_msi() interface change) easier to review
---
 xen/drivers/passthrough/x86/hvm=2Ec | 80 ++++++++++++++++---------------
 1 file changed, 41 insertions(+), 39 deletions(-)

diff --git a/xen/drivers/passthrough/x86/hvm=2Ec b/xen/drivers/passthrough=
/x86/hvm=2Ec
index b73bb55055=2E=2E691fa1b2c7 100644
--- a/xen/drivers/passthrough/x86/hvm=2Ec
+++ b/xen/drivers/passthrough/x86/hvm=2Ec
@@ -229,52 +229,54 @@ int pt_irq_create_bind(
         return -EINVAL;
=20
  restart:
-    write_lock(&d->event_lock);
-
-    hvm_irq_dpci =3D domain_get_irq_dpci(d);
-    if ( !hvm_irq_dpci && !is_hardware_domain(d) )
     {
-        unsigned int i;
+        write_lock(&d->event_lock);
=20
-        /*
-         * NB: the hardware domain doesn't use a hvm_irq_dpci struct beca=
use
-         * it's only allowed to identity map GSIs, and so the data contai=
ned in
-         * that struct (used to map guest GSIs into machine GSIs and perf=
orm
-         * interrupt routing) is completely useless to it=2E
-         */
-        hvm_irq_dpci =3D xzalloc(struct hvm_irq_dpci);
-        if ( hvm_irq_dpci =3D=3D NULL )
+        hvm_irq_dpci =3D domain_get_irq_dpci(d);
+        if ( !hvm_irq_dpci && !is_hardware_domain(d) )
+        {
+            unsigned int i;
+
+            /*
+             * NB: the hardware domain doesn't use a hvm_irq_dpci struct =
because
+             * it's only allowed to identity map GSIs, and so the data co=
ntained in
+             * that struct (used to map guest GSIs into machine GSIs and =
perform
+             * interrupt routing) is completely useless to it=2E
+             */
+            hvm_irq_dpci =3D xzalloc(struct hvm_irq_dpci);
+            if ( hvm_irq_dpci =3D=3D NULL )
+            {
+                write_unlock(&d->event_lock);
+                return -ENOMEM;
+            }
+            for ( i =3D 0; i < NR_HVM_DOMU_IRQS; i++ )
+                INIT_LIST_HEAD(&hvm_irq_dpci->girq[i]);
+
+            hvm_domain_irq(d)->dpci =3D hvm_irq_dpci;
+        }
+
+        info =3D pirq_get_info(d, pirq);
+        if ( !info )
         {
             write_unlock(&d->event_lock);
             return -ENOMEM;
         }
-        for ( i =3D 0; i < NR_HVM_DOMU_IRQS; i++ )
-            INIT_LIST_HEAD(&hvm_irq_dpci->girq[i]);
-
-        hvm_domain_irq(d)->dpci =3D hvm_irq_dpci;
-    }
-
-    info =3D pirq_get_info(d, pirq);
-    if ( !info )
-    {
-        write_unlock(&d->event_lock);
-        return -ENOMEM;
-    }
-    pirq_dpci =3D pirq_dpci(info);
+        pirq_dpci =3D pirq_dpci(info);
=20
-    /*
-     * A crude 'while' loop with us dropping the spinlock and giving
-     * the softirq_dpci a chance to run=2E
-     * We MUST check for this condition as the softirq could be scheduled
-     * and hasn't run yet=2E Note that this code replaced tasklet_kill wh=
ich
-     * would have spun forever and would do the same thing (wait to flush=
 out
-     * outstanding hvm_dirq_assist calls=2E
-     */
-    if ( pt_pirq_softirq_active(pirq_dpci) )
-    {
-        write_unlock(&d->event_lock);
-        cpu_relax();
-        goto restart;
+        /*
+         * A crude 'while' loop with us dropping the spinlock and giving
+         * the softirq_dpci a chance to run=2E
+         * We MUST check for this condition as the softirq could be sched=
uled
+         * and hasn't run yet=2E Note that this code replaced tasklet_kil=
l which
+         * would have spun forever and would do the same thing (wait to f=
lush out
+         * outstanding hvm_dirq_assist calls=2E
+         */
+        if ( pt_pirq_softirq_active(pirq_dpci) )
+        {
+            write_unlock(&d->event_lock);
+            cpu_relax();
+            goto restart;
+        }
     }
=20
     switch ( pt_irq_bind->irq_type )
--=20
2=2E53=2E0



-- 
Julian Vetter | Vates Hypervisor & Kernel Developer

XCP-ng & Xen Orch=
estra - Vates solutions

web: https://vates=2Etech
---=Part.2974.6d24ae21874b484b.19dcf387cc9.7f8b3253be24fb72=---


From xen-devel-bounces@lists.xenproject.org Mon Apr 27 13:54:57 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 27 Apr 2026 13:54:57 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1294882.1571593 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wHMQG-0000II-IG; Mon, 27 Apr 2026 13:54:52 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1294882.1571593; Mon, 27 Apr 2026 13:54: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 1wHMQG-0000IB-FL; Mon, 27 Apr 2026 13:54:52 +0000
Received: by outflank-mailman (input) for mailman id 1294882;
 Mon, 27 Apr 2026 13:54:51 +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.19dcf387cf6000f373@swg.vates.tech>)
 id 1wHMQF-0000Hk-0a
 for xen-devel@lists.xenproject.org; Mon, 27 Apr 2026 13:54:51 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wHMQE-00G6M2-Dp
 for xen-devel@lists.xenproject.org; Mon, 27 Apr 2026 15:54:50 +0200
Received: from [10.42.69.10] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1) (envelope-from
 <prod-mta-13.8631fc262581453bbf619ec5b2062170.19dcf387cf6000f373@swg.vates.tech>)
 id 69ef6aa6-5cb7-0a2a0a5109dd-0a2a450ab84c-14
 for <xen-devel@lists.xenproject.org>; Mon, 27 Apr 2026 15:54:50 +0200
Received: from [185.255.28.34] (helo=prod-mta-13.swg-srv.net)
 by tlsNG-4011c0.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.1)
 (envelope-from
 <prod-mta-13.8631fc262581453bbf619ec5b2062170.19dcf387cf6000f373@swg.vates.tech>)
 id 69ef6aa4-56b3-0a2a450a0019-b9ff1c22a053-4
 for <xen-devel@lists.xenproject.org>; Mon, 27 Apr 2026 15:54:49 +0200
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
 19dcf387cf6000f373.007 for <xen-devel@lists.xenproject.org>
 (version=TLSv1.3 cipher=TLS_AES_256_GCM_SHA384);
 Mon, 27 Apr 2026 13:54:38 +0000
Received: from julian.home (lfbn-lyo-1-414-55.w2-7.abo.wanadoo.fr [2.7.24.55])
 (Authenticated sender: julian.vetter@vates.tech)
 by mail2.vates.fr (Postfix) with ESMTPSA id 5C6458716C;
 Mon, 27 Apr 2026 15:54:38 +0200 (CEST)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@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=dvcC1iisULiPGWL7tx4WZYzH+K5ni031hXxYUXeM9FA=;
 h=from:subject:date:message-id:to:cc:mime-version:content-type:in-reply-to:references:feedback-id;
 b=nndc5iGA0DiGhtyIMk+zUdFKEvRAZcfMef0krlgqTReFVE8KCTMfzyDGLs5muIK6t/oE0cpyW
 jG4XX+kZNeRbrXdsdkobcC+1mlLW1WAoawQKEB/uExnAIBG7cNI5/jHL0z5DkXq6x9Y8oWeDE5T
 dieOm4qOzeQYUyBPKfdJSGlrEdMsnuOq8FoMz2ton8J9c69kv+RGR8Q1nqO0TRXcY/9ZLilHkBa
 nxYJUL1OdNyvkSt84TNZYD83mTstQJXA/y7AHyz0AFPe5tEoUvZwuoxW3L/qfgWRRHqBJAPwSeT
 pj0u8Zgn5LRuHOsxmZdXNGGiFjESbJltSPLH178rklNQ==
X-Zone-Loop: 5f20e55a77209d63970ab23c5d2a2c0c952228caec54
x-campaign-type: default
x-transaction-id: ad1e73c4-1169-40cf-a79e-c5e95a7fd737
x-swg-uid: 01-252a6e3d-1633-4718-85f7-c25b1dcf860e
X-Mailer: Sweego
Message-ID:
 <1777298079.8631fc262581453bbf619ec5b2062170.19dcf387cf6000f373@vates.tech>
x-swg-bid: 1777298079.8631fc262581453bbf619ec5b2062170.19dcf387cf6000f373
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
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=20Pau=20Monn=C3=A9?= <roger.pau@citrix.com>,
	Stefano Stabellini <sstabellini@kernel.org>,
	Bertrand Marquis <bertrand.marquis@arm.com>,
	Volodymyr Babchuk <Volodymyr_Babchuk@epam.com>,
	Teddy Astie <teddy.astie@vates.tech>,
	Julian Vetter <julian.vetter@vates.tech>
Subject: [PATCH v4 1/9] x86/vioapic: Add ioapic_check() to validate IO-APIC state before restore
Date: Mon, 27 Apr 2026 15:53:58 +0200
In-Reply-To: <20260427135406.1281424-1-julian.vetter@vates.tech>
References: <20260427135406.1281424-1-julian.vetter@vates.tech>
MIME-Version: 1.0
X-BM-Disclaimer: Yes
Content-Type: multipart/alternative; boundary="-=Part.2973.a4b8ae2b085a49c6.19dcf387b7f.2f2b4e9391e281cb=-"
X-Bm-Milter-Handled: 4ffbd6c1-ee69-4e1b-aabd-f977039bd3e2
X-Bm-Transport-Timestamp: 1777298078591
X-purgate-ID: tlsNG-4011c0/1777298089-47D788B7-C3FFF285/0/0
X-purgate-type: clean
X-purgate-size: 3106

---=Part.2973.a4b8ae2b085a49c6.19dcf387b7f.2f2b4e9391e281cb=-
Content-Type: text/plain; charset=utf-8
Content-Transfer-Encoding: quoted-printable

Register a check callback for the IOAPIC HVM save/restore entry,
following the pattern established by vpic_check() for the virtual PIC=2E
The function first verifies the target domain actually has a virtual
IO-APIC, returning -ENODEV otherwise=2E It then validates individual
fields of the saved state: the base_address must be non-zero (as 0 is
never valid for the IO-APIC MMIO window), the APIC ID must fit within
its 4-bit hardware field, and ioregsel must address a defined register=2E

Signed-off-by: Julian Vetter <julian=2Evetter@vates=2Etech>
---
Changes in v4:
- Replaced the reserved-bit loop from v3 (iterating all redirection
  table entries and rejecting any with non-zero reserved fields) with
  targeted named-field validation (base_address !=3D 0, APIC ID < 0xF, and
  ioregsel addresses a defined register)
- The extended-destination migration safety check (refusing to restore
  IO-APIC state with ext_dest_id bits set on a domain that does not
  advertise XEN_HVM_CPUID_EXT_DEST_ID) is added in patch 8, once the
  flag exists
---
 xen/arch/x86/hvm/vioapic=2Ec | 28 +++++++++++++++++++++++++++-
 1 file changed, 27 insertions(+), 1 deletion(-)

diff --git a/xen/arch/x86/hvm/vioapic=2Ec b/xen/arch/x86/hvm/vioapic=2Ec
index 7c725f9e47=2E=2E43fb165f84 100644
--- a/xen/arch/x86/hvm/vioapic=2Ec
+++ b/xen/arch/x86/hvm/vioapic=2Ec
@@ -594,6 +594,32 @@ int vioapic_get_trigger_mode(const struct domain *d, =
unsigned int gsi)
     return vioapic->redirtbl[pin]=2Efields=2Etrig_mode;
 }
=20
+static int cf_check ioapic_check(const struct domain *d, hvm_domain_conte=
xt_t *h)
+{
+    const HVM_SAVE_TYPE(IOAPIC) *s;
+
+    if ( !has_vioapic(d) )
+        return -ENODEV;
+
+    s =3D hvm_get_entry(IOAPIC, h);
+    if ( !s )
+        return -ENODATA;
+
+    /* base_address of 0 is never valid for the IO-APIC MMIO window=2E */
+    if ( !s->base_address )
+        return -EINVAL;
+
+    /* IO-APIC APIC ID is a 4-bit field=2E */
+    if ( s->id > 0xf )
+        return -EINVAL;
+
+    /* ioregsel must address a defined register=2E */
+    if ( s->ioregsel > VIOAPIC_REG_RTE0 + (ARRAY_SIZE(s->redirtbl) - 1) *=
 2 + 1 )
+        return -EINVAL;
+
+    return 0;
+}
+
 static int cf_check ioapic_save(struct vcpu *v, hvm_domain_context_t *h)
 {
     const struct domain *d =3D v->domain;
@@ -630,7 +656,7 @@ static int cf_check ioapic_load(struct domain *d, hvm_=
domain_context_t *h)
     return 0;
 }
=20
-HVM_REGISTER_SAVE_RESTORE(IOAPIC, ioapic_save, NULL, ioapic_load, 1,
+HVM_REGISTER_SAVE_RESTORE(IOAPIC, ioapic_save, ioapic_check, ioapic_load,=
 1,
                           HVMSR_PER_DOM);
=20
 void vioapic_reset(struct domain *d)
--=20
2=2E53=2E0



-- 
Julian Vetter | Vates Hypervisor & Kernel Developer

XCP-ng & Xen Orch=
estra - Vates solutions

web: https://vates=2Etech
---=Part.2973.a4b8ae2b085a49c6.19dcf387b7f.2f2b4e9391e281cb=---


From xen-devel-bounces@lists.xenproject.org Mon Apr 27 13:54:58 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 27 Apr 2026 13:54:58 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1294886.1571621 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wHMQM-00012H-HF; Mon, 27 Apr 2026 13:54:58 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1294886.1571621; Mon, 27 Apr 2026 13:54: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 1wHMQM-00011y-C0; Mon, 27 Apr 2026 13:54:58 +0000
Received: by outflank-mailman (input) for mailman id 1294886;
 Mon, 27 Apr 2026 13:54: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.19dcf3880b0000f373@swg.vates.tech>)
 id 1wHMQK-0000u8-Um
 for xen-devel@lists.xenproject.org; Mon, 27 Apr 2026 13:54:57 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wHMQK-00G6Ry-BL
 for xen-devel@lists.xenproject.org; Mon, 27 Apr 2026 15:54:56 +0200
Received: from [10.42.69.10] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1) (envelope-from
 <prod-mta-13.8631fc262581453bbf619ec5b2062170.19dcf3880b0000f373@swg.vates.tech>)
 id 69ef6aa6-5cb7-0a2a0a5109dd-0a2a450ab84c-46
 for <xen-devel@lists.xenproject.org>; Mon, 27 Apr 2026 15:54:56 +0200
Received: from [185.255.28.34] (helo=prod-mta-13.swg-srv.net)
 by tlsNG-4011c0.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.1)
 (envelope-from
 <prod-mta-13.8631fc262581453bbf619ec5b2062170.19dcf3880b0000f373@swg.vates.tech>)
 id 69ef6aa4-56b3-0a2a450a0019-b9ff1c22a053-7
 for <xen-devel@lists.xenproject.org>; Mon, 27 Apr 2026 15:54:56 +0200
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
 19dcf3880b0000f373.007 for <xen-devel@lists.xenproject.org>
 (version=TLSv1.3 cipher=TLS_AES_256_GCM_SHA384);
 Mon, 27 Apr 2026 13:54:39 +0000
Received: from julian.home (lfbn-lyo-1-414-55.w2-7.abo.wanadoo.fr [2.7.24.55])
 (Authenticated sender: julian.vetter@vates.tech)
 by mail2.vates.fr (Postfix) with ESMTPSA id 59D328716C;
 Mon, 27 Apr 2026 15:54:39 +0200 (CEST)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@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=L3geqFZf2EA0sdCca0SSrDfeFYuV7PuXhnEkcbG81vc=;
 h=from:subject:date:message-id:to:cc:mime-version:content-type:in-reply-to:references:feedback-id;
 b=OEv/MLjvvtXXXRwgAcQUWiyCFjyihrh1lRj6bZdpWasH4YNwJpMGB8pv2xmeULxLMyWnaea0W
 tPZ81AfBaEgJgf30Qmvzr9HRGZV8BMu3QP2tNnl1/icRJ6R2nu1iOzmc8LsdyqP9tPlMjrotAbe
 GmzUkuKeJjlN5jxSl4cHPz8v80p90lnx9EDALP/RDa5RzKIKkclrv6C00FZfPJRB+xwUKUxrsgm
 erDGzBWqppQIryCGwluBtQUcy2a5n6xanqy2g8kzoIQcUR7f5qFdGuuIFSMm8WiF84TdXNw+kmV
 FjFzcfDcS1RGTkakuGKwULalcYMNLW7gitO0/fnmCCgw==
X-Zone-Loop: 893a72aec607dea6480c80f879ab4fcedcd53e6c2117
x-campaign-type: default
x-transaction-id: 5defd13e-2120-4dbf-b2ab-a7f7caa0a973
x-swg-uid: 01-2f1486f1-d81c-47e9-8cb7-5f95c3d6f325
X-Mailer: Sweego
Message-ID:
 <1777298079.8631fc262581453bbf619ec5b2062170.19dcf3880b0000f373@vates.tech>
x-swg-bid: 1777298079.8631fc262581453bbf619ec5b2062170.19dcf3880b0000f373
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
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=20Pau=20Monn=C3=A9?= <roger.pau@citrix.com>,
	Stefano Stabellini <sstabellini@kernel.org>,
	Bertrand Marquis <bertrand.marquis@arm.com>,
	Volodymyr Babchuk <Volodymyr_Babchuk@epam.com>,
	Teddy Astie <teddy.astie@vates.tech>,
	Julian Vetter <julian.vetter@vates.tech>
Subject: [PATCH v4 4/9] x86/passthrough: Extract PT_IRQ_TYPE_MSI body into pt_irq_bind_msi()
Date: Mon, 27 Apr 2026 15:54:01 +0200
In-Reply-To: <20260427135406.1281424-1-julian.vetter@vates.tech>
References: <20260427135406.1281424-1-julian.vetter@vates.tech>
MIME-Version: 1.0
X-BM-Disclaimer: Yes
Content-Type: multipart/alternative; boundary="-=Part.2976.44099caa86af48ff.19dcf387f5c.f3342a2cfd05b8f2=-"
X-Bm-Milter-Handled: 4ffbd6c1-ee69-4e1b-aabd-f977039bd3e2
X-Bm-Transport-Timestamp: 1777298079580
X-purgate-ID: tlsNG-4011c0/1777298096-8127B8B7-32EBBA09/0/0
X-purgate-type: clean
X-purgate-size: 13956

---=Part.2976.44099caa86af48ff.19dcf387f5c.f3342a2cfd05b8f2=-
Content-Type: text/plain; charset=utf-8
Content-Transfer-Encoding: quoted-printable

No functional change: move the PT_IRQ_TYPE_MSI case of pt_irq_create_bind()
into a new static helper pt_irq_bind_msi() taking the same gvec/gflags/gta=
ble
parameters=2E Restructure pt_irq_create_bind() so the MSI case delegates t=
o the
helper and pt_irq_dpci_setup() is called inside each case rather than shar=
ed=2E

Signed-off-by: Julian Vetter <julian=2Evetter@vates=2Etech>
---
Changes in v4:
- New patch
- Split out as a preparatory no-functional-change step so that the
  interface change in patch 5 (switching pt_irq_bind_msi() from gvec +
  gflags to raw MSI addr + data) shows as a clean diff against an
  already-extracted helper, rather than being tangled with the 'case
  PT_IRQ_TYPE_MSI' code
---
 xen/drivers/passthrough/x86/hvm=2Ec | 255 ++++++++++++++++--------------
 1 file changed, 140 insertions(+), 115 deletions(-)

diff --git a/xen/drivers/passthrough/x86/hvm=2Ec b/xen/drivers/passthrough=
/x86/hvm=2Ec
index 19463c3406=2E=2Eeff1e8a79e 100644
--- a/xen/drivers/passthrough/x86/hvm=2Ec
+++ b/xen/drivers/passthrough/x86/hvm=2Ec
@@ -290,161 +290,186 @@ static int pt_irq_dpci_setup(struct domain *d, uns=
igned int pirq,
     } while ( true );
 }
=20
-int pt_irq_create_bind(
-    struct domain *d, const struct xen_domctl_bind_pt_irq *pt_irq_bind)
+static int pt_irq_bind_msi(struct domain *d, uint32_t machine_irq,
+                            uint8_t gvec, uint32_t gflags, uint64_t gtabl=
e,
+                            bool unmasked)
 {
     struct hvm_irq_dpci *hvm_irq_dpci;
     struct hvm_pirq_dpci *pirq_dpci;
     struct pirq *info;
-    int rc, pirq =3D pt_irq_bind->machine_irq;
+    uint8_t dest, delivery_mode;
+    bool dest_mode;
+    int dest_vcpu_id, rc;
+    const struct vcpu *vcpu;
=20
-    if ( pirq < 0 || pirq >=3D d->nr_pirqs )
+    if ( machine_irq >=3D (unsigned int)d->nr_pirqs )
         return -EINVAL;
=20
-    rc =3D pt_irq_dpci_setup(d, pirq, &hvm_irq_dpci, &pirq_dpci, &info);
+    rc =3D pt_irq_dpci_setup(d, machine_irq, &hvm_irq_dpci, &pirq_dpci, &=
info);
     if ( rc )
         return rc;
=20
-    switch ( pt_irq_bind->irq_type )
+    if ( !(pirq_dpci->flags & HVM_IRQ_DPCI_MAPPED) )
     {
-    case PT_IRQ_TYPE_MSI:
-    {
-        uint8_t dest, delivery_mode;
-        bool dest_mode;
-        int dest_vcpu_id;
-        const struct vcpu *vcpu;
-        uint32_t gflags =3D pt_irq_bind->u=2Emsi=2Egflags &
-                          ~XEN_DOMCTL_VMSI_X86_UNMASKED;
-
-        if ( !(pirq_dpci->flags & HVM_IRQ_DPCI_MAPPED) )
+        pirq_dpci->flags =3D HVM_IRQ_DPCI_MAPPED | HVM_IRQ_DPCI_MACH_MSI =
|
+                           HVM_IRQ_DPCI_GUEST_MSI;
+        pirq_dpci->gmsi=2Egvec =3D gvec;
+        pirq_dpci->gmsi=2Egflags =3D gflags;
+        /*
+         * 'pt_irq_bind_msi' can be called after 'pt_irq_destroy_bind'=2E
+         * The 'pirq_cleanup_check' which would free the structure is onl=
y
+         * called if the event channel for the PIRQ is active=2E However
+         * OS-es that use event channels usually bind PIRQs to eventds
+         * and unbind them before calling 'pt_irq_destroy_bind' - with th=
e
+         * result that we re-use the 'dpci' structure=2E This can be
+         * reproduced with unloading and loading the driver for a device=
=2E
+         *
+         * As such on every 'pt_irq_bind_msi' call we MUST set it=2E
+         */
+        pirq_dpci->dom =3D d;
+        /* bind after hvm_irq_dpci is setup to avoid race with irq handle=
r */
+        rc =3D pirq_guest_bind(d->vcpu[0], info, 0);
+        if ( rc =3D=3D 0 && gtable )
         {
-            pirq_dpci->flags =3D HVM_IRQ_DPCI_MAPPED | HVM_IRQ_DPCI_MACH_=
MSI |
-                               HVM_IRQ_DPCI_GUEST_MSI;
-            pirq_dpci->gmsi=2Egvec =3D pt_irq_bind->u=2Emsi=2Egvec;
-            pirq_dpci->gmsi=2Egflags =3D gflags;
-            /*
-             * 'pt_irq_create_bind' can be called after 'pt_irq_destroy_b=
ind'=2E
-             * The 'pirq_cleanup_check' which would free the structure is=
 only
-             * called if the event channel for the PIRQ is active=2E Howe=
ver
-             * OS-es that use event channels usually bind PIRQs to eventd=
s
-             * and unbind them before calling 'pt_irq_destroy_bind' - wit=
h the
-             * result that we re-use the 'dpci' structure=2E This can be
-             * reproduced with unloading and loading the driver for a dev=
ice=2E
-             *
-             * As such on every 'pt_irq_create_bind' call we MUST set it=
=2E
-             */
-            pirq_dpci->dom =3D d;
-            /* bind after hvm_irq_dpci is setup to avoid race with irq ha=
ndler*/
-            rc =3D pirq_guest_bind(d->vcpu[0], info, 0);
-            if ( rc =3D=3D 0 && pt_irq_bind->u=2Emsi=2Egtable )
-            {
-                rc =3D msixtbl_pt_register(d, info, pt_irq_bind->u=2Emsi=
=2Egtable);
-                if ( unlikely(rc) )
-                {
-                    pirq_guest_unbind(d, info);
-                    /*
-                     * Between 'pirq_guest_bind' and before 'pirq_guest_u=
nbind'
-                     * an interrupt can be scheduled=2E No more of them a=
re going
-                     * to be scheduled but we must deal with the one that=
 may be
-                     * in the queue=2E
-                     */
-                    pt_pirq_softirq_reset(pirq_dpci);
-                }
-            }
+            rc =3D msixtbl_pt_register(d, info, gtable);
             if ( unlikely(rc) )
             {
-                pirq_dpci->gmsi=2Egflags =3D 0;
-                pirq_dpci->gmsi=2Egvec =3D 0;
-                pirq_dpci->dom =3D NULL;
-                pirq_dpci->flags =3D 0;
-                if ( !info->evtchn )
-                    pirq_cleanup_check(info, d);
-                write_unlock(&d->event_lock);
-                return rc;
+                pirq_guest_unbind(d, info);
+                /*
+                 * Between 'pirq_guest_bind' and before 'pirq_guest_unbin=
d'
+                 * an interrupt can be scheduled=2E No more of them are g=
oing
+                 * to be scheduled but we must deal with the one that may=
 be
+                 * in the queue=2E
+                 */
+                pt_pirq_softirq_reset(pirq_dpci);
             }
         }
-        else
+        if ( unlikely(rc) )
         {
-            uint32_t mask =3D HVM_IRQ_DPCI_MACH_MSI | HVM_IRQ_DPCI_GUEST_=
MSI;
-
-            if ( (pirq_dpci->flags & mask) !=3D mask )
-            {
-                write_unlock(&d->event_lock);
-                return -EBUSY;
-            }
-
-            /* If pirq is already mapped as vmsi, update guest data/addr=
=2E */
-            if ( pirq_dpci->gmsi=2Egvec !=3D pt_irq_bind->u=2Emsi=2Egvec =
||
-                 pirq_dpci->gmsi=2Egflags !=3D gflags )
-            {
-                /* Directly clear pending EOIs before enabling new MSI in=
fo=2E */
-                pirq_guest_eoi(info);
-
-                pirq_dpci->gmsi=2Egvec =3D pt_irq_bind->u=2Emsi=2Egvec;
-                pirq_dpci->gmsi=2Egflags =3D gflags;
-            }
+            pirq_dpci->gmsi=2Egflags =3D 0;
+            pirq_dpci->gmsi=2Egvec =3D 0;
+            pirq_dpci->dom =3D NULL;
+            pirq_dpci->flags =3D 0;
+            if ( !info->evtchn )
+                pirq_cleanup_check(info, d);
+            write_unlock(&d->event_lock);
+            return rc;
         }
-        /* Calculate dest_vcpu_id for MSI-type pirq migration=2E */
-        dest =3D MASK_EXTR(pirq_dpci->gmsi=2Egflags,
-                         XEN_DOMCTL_VMSI_X86_DEST_ID_MASK);
-        dest_mode =3D pirq_dpci->gmsi=2Egflags & XEN_DOMCTL_VMSI_X86_DM_M=
ASK;
-        delivery_mode =3D MASK_EXTR(pirq_dpci->gmsi=2Egflags,
-                                  XEN_DOMCTL_VMSI_X86_DELIV_MASK);
-
-        dest_vcpu_id =3D hvm_girq_dest_2_vcpu_id(d, dest, dest_mode);
-        pirq_dpci->gmsi=2Edest_vcpu_id =3D dest_vcpu_id;
-        write_unlock(&d->event_lock);
+    }
+    else
+    {
+        uint32_t mask =3D HVM_IRQ_DPCI_MACH_MSI | HVM_IRQ_DPCI_GUEST_MSI;
=20
-        pirq_dpci->gmsi=2Eposted =3D false;
-        vcpu =3D (dest_vcpu_id >=3D 0) ? d->vcpu[dest_vcpu_id] : NULL;
-        if ( iommu_intpost )
+        if ( (pirq_dpci->flags & mask) !=3D mask )
         {
-            if ( delivery_mode =3D=3D dest_LowestPrio )
-                vcpu =3D vector_hashing_dest(d, dest, dest_mode,
-                                           pirq_dpci->gmsi=2Egvec);
-            if ( vcpu )
-                pirq_dpci->gmsi=2Eposted =3D true;
+            write_unlock(&d->event_lock);
+            return -EBUSY;
         }
-        if ( vcpu && is_iommu_enabled(d) )
-            hvm_migrate_pirq(pirq_dpci, vcpu);
=20
-        /* Use interrupt posting if it is supported=2E */
-        if ( iommu_intpost )
+        /* If pirq is already mapped as vmsi, update guest data/addr=2E *=
/
+        if ( pirq_dpci->gmsi=2Egvec !=3D gvec || pirq_dpci->gmsi=2Egflags=
 !=3D gflags )
         {
-            rc =3D hvm_pi_update_irte(vcpu, info, pirq_dpci->gmsi=2Egvec)=
;
+            /* Directly clear pending EOIs before enabling new MSI info=
=2E */
+            pirq_guest_eoi(info);
=20
-            if ( rc )
-            {
-                pt_irq_destroy_bind(d, pt_irq_bind);
-                return rc;
-            }
+            pirq_dpci->gmsi=2Egvec =3D gvec;
+            pirq_dpci->gmsi=2Egflags =3D gflags;
         }
+    }
+    /* Calculate dest_vcpu_id for MSI-type pirq migration=2E */
+    dest =3D MASK_EXTR(pirq_dpci->gmsi=2Egflags, XEN_DOMCTL_VMSI_X86_DEST=
_ID_MASK);
+    dest_mode =3D pirq_dpci->gmsi=2Egflags & XEN_DOMCTL_VMSI_X86_DM_MASK;
+    delivery_mode =3D MASK_EXTR(pirq_dpci->gmsi=2Egflags,
+                               XEN_DOMCTL_VMSI_X86_DELIV_MASK);
+
+    dest_vcpu_id =3D hvm_girq_dest_2_vcpu_id(d, dest, dest_mode);
+    pirq_dpci->gmsi=2Edest_vcpu_id =3D dest_vcpu_id;
+    write_unlock(&d->event_lock);
=20
-        if ( pt_irq_bind->u=2Emsi=2Egflags & XEN_DOMCTL_VMSI_X86_UNMASKED=
 )
+    pirq_dpci->gmsi=2Eposted =3D false;
+    vcpu =3D (dest_vcpu_id >=3D 0) ? d->vcpu[dest_vcpu_id] : NULL;
+    if ( iommu_intpost )
+    {
+        if ( delivery_mode =3D=3D dest_LowestPrio )
+            vcpu =3D vector_hashing_dest(d, dest, dest_mode,
+                                       pirq_dpci->gmsi=2Egvec);
+        if ( vcpu )
+            pirq_dpci->gmsi=2Eposted =3D true;
+    }
+    if ( vcpu && is_iommu_enabled(d) )
+        hvm_migrate_pirq(pirq_dpci, vcpu);
+
+    /* Use interrupt posting if it is supported=2E */
+    if ( iommu_intpost )
+    {
+        struct xen_domctl_bind_pt_irq bind =3D {
+            =2Emachine_irq =3D machine_irq,
+            =2Eirq_type =3D PT_IRQ_TYPE_MSI,
+        };
+
+        rc =3D hvm_pi_update_irte(vcpu, info, pirq_dpci->gmsi=2Egvec);
+        if ( rc )
         {
-            unsigned long flags;
-            struct irq_desc *desc =3D pirq_spin_lock_irq_desc(info, &flag=
s);
+            pt_irq_destroy_bind(d, &bind);
+            return rc;
+        }
+    }
=20
-            if ( !desc )
-            {
-                pt_irq_destroy_bind(d, pt_irq_bind);
-                return -EINVAL;
-            }
+    if ( unmasked )
+    {
+        struct xen_domctl_bind_pt_irq bind =3D {
+            =2Emachine_irq =3D machine_irq,
+            =2Eirq_type =3D PT_IRQ_TYPE_MSI,
+        };
+        unsigned long flags;
+        struct irq_desc *desc =3D pirq_spin_lock_irq_desc(info, &flags);
=20
-            guest_mask_msi_irq(desc, false);
-            spin_unlock_irqrestore(&desc->lock, flags);
+        if ( !desc )
+        {
+            pt_irq_destroy_bind(d, &bind);
+            return -EINVAL;
         }
=20
-        break;
+        guest_mask_msi_irq(desc, false);
+        spin_unlock_irqrestore(&desc->lock, flags);
     }
=20
+    return 0;
+}
+
+int pt_irq_create_bind(
+    struct domain *d, const struct xen_domctl_bind_pt_irq *pt_irq_bind)
+{
+    int rc, pirq =3D pt_irq_bind->machine_irq;
+
+    if ( pirq < 0 || pirq >=3D d->nr_pirqs )
+        return -EINVAL;
+
+    switch ( pt_irq_bind->irq_type )
+    {
+    case PT_IRQ_TYPE_MSI:
+        return pt_irq_bind_msi(d, pirq,
+                               pt_irq_bind->u=2Emsi=2Egvec,
+                               pt_irq_bind->u=2Emsi=2Egflags &
+                                   ~XEN_DOMCTL_VMSI_X86_UNMASKED,
+                               pt_irq_bind->u=2Emsi=2Egtable,
+                               !!(pt_irq_bind->u=2Emsi=2Egflags &
+                                  XEN_DOMCTL_VMSI_X86_UNMASKED));
+
     case PT_IRQ_TYPE_PCI:
     case PT_IRQ_TYPE_MSI_TRANSLATE:
     {
+        struct hvm_irq_dpci *hvm_irq_dpci;
+        struct hvm_pirq_dpci *pirq_dpci;
+        struct pirq *info;
         struct dev_intx_gsi_link *digl =3D NULL;
         struct hvm_girq_dpci_mapping *girq =3D NULL;
         unsigned int guest_gsi;
=20
+        rc =3D pt_irq_dpci_setup(d, pirq, &hvm_irq_dpci, &pirq_dpci, &inf=
o);
+        if ( rc )
+            return rc;
+
         /*
          * Mapping GSIs for the hardware domain is different than doing i=
t for
          * an unpriviledged guest, the hardware domain is only allowed to
--=20
2=2E53=2E0



-- 
Julian Vetter | Vates Hypervisor & Kernel Developer

XCP-ng & Xen Orch=
estra - Vates solutions

web: https://vates=2Etech
---=Part.2976.44099caa86af48ff.19dcf387f5c.f3342a2cfd05b8f2=---


From xen-devel-bounces@lists.xenproject.org Mon Apr 27 13:55:01 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 27 Apr 2026 13:55:01 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1294889.1571630 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wHMQO-0001KV-VF; Mon, 27 Apr 2026 13:55:00 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1294889.1571630; Mon, 27 Apr 2026 13:55: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 1wHMQO-0001KG-S5; Mon, 27 Apr 2026 13:55:00 +0000
Received: by outflank-mailman (input) for mailman id 1294889;
 Mon, 27 Apr 2026 13:54:59 +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.19dcf3882f5000f373@swg.vates.tech>)
 id 1wHMQN-0001B5-9K
 for xen-devel@lists.xenproject.org; Mon, 27 Apr 2026 13:54:59 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wHMQM-005e9J-MN
 for xen-devel@lists.xenproject.org; Mon, 27 Apr 2026 15:54:58 +0200
Received: from [10.42.69.10] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1) (envelope-from
 <prod-mta-13.8631fc262581453bbf619ec5b2062170.19dcf3882f5000f373@swg.vates.tech>)
 id 69ef6ab0-e002-0a2a0a5209dd-0a2a450ac9a4-16
 for <xen-devel@lists.xenproject.org>; Mon, 27 Apr 2026 15:54:58 +0200
Received: from [185.255.28.34] (helo=prod-mta-13.swg-srv.net)
 by tlsNG-4011c0.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.1)
 (envelope-from
 <prod-mta-13.8631fc262581453bbf619ec5b2062170.19dcf3882f5000f373@swg.vates.tech>)
 id 69ef6aa4-56b3-0a2a450a0019-b9ff1c22a053-8
 for <xen-devel@lists.xenproject.org>; Mon, 27 Apr 2026 15:54:58 +0200
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
 19dcf3882f5000f373.007 for <xen-devel@lists.xenproject.org>
 (version=TLSv1.3 cipher=TLS_AES_256_GCM_SHA384);
 Mon, 27 Apr 2026 13:54:40 +0000
Received: from julian.home (lfbn-lyo-1-414-55.w2-7.abo.wanadoo.fr [2.7.24.55])
 (Authenticated sender: julian.vetter@vates.tech)
 by mail2.vates.fr (Postfix) with ESMTPSA id A914C87720;
 Mon, 27 Apr 2026 15:54:39 +0200 (CEST)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@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=iXxqoGxWiDqr4wezd1/rHSPOjUm9gs8Ti7iAAL7JzQ4=;
 h=from:subject:date:message-id:to:cc:mime-version:content-type:in-reply-to:references:feedback-id;
 b=KRLggbHsezbkl30Wio7c3vxBzbxTfcAT9MPRwgm5CnGTaJp4yC4UIWtfxBE3KvV2kUalsbNbh
 cYS6x47t7+At5S8VcRMDvPaQq10zEScgG9PH5ZkMhMr77mdjWS1OJpRpP1LAAq/+xgNzzrw46Ud
 vQdWnqTp/qIA9kS96qO3RYgfIh3hTtcymQB/p3mwZZxmA7bRzu50yc/Hh4iLWio9aIiM0myrHzK
 sct+IQsGINiuXkiD8YPJOKspmlmDkc+/p7F7moYlWhCA2j6C5LTNFEHzGunEVMwtrWR6cV6NlQh
 ib3UeFsxHaKUC0Vjwz0TCw7dJy1/a9R0wok2wwbEJxmA==
X-Zone-Loop: 92d47e58cf816b7c30188e3e6a77384382b0c1f3b100
x-campaign-type: default
x-transaction-id: 0ea4ac49-5797-492a-bcca-465b27a2a169
x-swg-uid: 01-340cdd04-0173-4aaa-b58f-8876ee026364
X-Mailer: Sweego
Message-ID:
 <1777298080.8631fc262581453bbf619ec5b2062170.19dcf3882f5000f373@vates.tech>
x-swg-bid: 1777298080.8631fc262581453bbf619ec5b2062170.19dcf3882f5000f373
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
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=20Pau=20Monn=C3=A9?= <roger.pau@citrix.com>,
	Stefano Stabellini <sstabellini@kernel.org>,
	Bertrand Marquis <bertrand.marquis@arm.com>,
	Volodymyr Babchuk <Volodymyr_Babchuk@epam.com>,
	Teddy Astie <teddy.astie@vates.tech>,
	Julian Vetter <julian.vetter@vates.tech>
Subject: [PATCH v4 5/9] x86/passthrough: Introduce pt_irq_bind_msi() as canonical MSI bind path
Date: Mon, 27 Apr 2026 15:54:02 +0200
In-Reply-To: <20260427135406.1281424-1-julian.vetter@vates.tech>
References: <20260427135406.1281424-1-julian.vetter@vates.tech>
MIME-Version: 1.0
X-BM-Disclaimer: Yes
Content-Type: multipart/alternative; boundary="-=Part.2977.62d2d69c803d43dd.19dcf3880a1.e118eb93d909cefe=-"
X-Bm-Milter-Handled: 4ffbd6c1-ee69-4e1b-aabd-f977039bd3e2
X-Bm-Transport-Timestamp: 1777298079905
X-purgate-ID: tlsNG-4011c0/1777298098-44B678B7-A3DEA6B3/0/0
X-purgate-type: clean
X-purgate-size: 16764

---=Part.2977.62d2d69c803d43dd.19dcf3880a1.e118eb93d909cefe=-
Content-Type: text/plain; charset=utf-8
Content-Transfer-Encoding: quoted-printable

Change pt_irq_bind_msi() to accept raw MSI address and data values instead
of pre-decoded gvec/gflags=2E Add msi_addr_to_gflags() to decode the
destination ID and delivery attributes, including the Extended Destination
ID bits from address[11:5] per Intel convention=2E

Update pt_irq_create_bind() to call pt_irq_bind_msi() via the existing
gvec/gflags interface so domctl-based callers continue to work=2E

Signed-off-by: Julian Vetter <julian=2Evetter@vates=2Etech>
---
Changes in v4:
- As suggested by Roger replace the v3 approach (v3 patches 2+4) of
  extending the gflags ABI with XEN_DOMCTL_VMSI_X86_EXT_DEST_ID_MASK and
  XEN_DOMCTL_VMSI_X86_FULL_DEST() so callers could pass extended bits
  through XEN_DOMCTL_bind_pt_irq=2E pt_irq_bind_msi() now accepts raw MSI
  address + data and decodes the destination internally via
  msi_addr_to_gflags()
- Replace the gmsi=2Egvec + gmsi=2Egflags fields in struct hvm_pirq_dpci
  with gmsi=2Eaddr + gmsi=2Edata
- Replace msi_gflags() (v3 vmsi=2Ec helper that packed the extended
  destination bits into gflags) with msi_addr_to_gflags() which decodes
  the raw MSI address directly
- pt_irq_create_bind() now rejects PT_IRQ_TYPE_MSI with -EOPNOTSUPP and
  all callers are redirected through the DM op path in patch 7
- As suggested by Roger adapt the comment in msi=2Eh in regards to the
  extended destination encoding since it's not part of any specification
---
 xen/arch/x86/hvm/vmsi=2Ec            | 50 ++++++------------
 xen/arch/x86/include/asm/hvm/irq=2Eh |  4 +-
 xen/arch/x86/include/asm/msi=2Eh     | 18 ++++++-
 xen/drivers/passthrough/x86/hvm=2Ec  | 83 ++++++++++++++++++------------
 xen/include/xen/iommu=2Eh            |  3 ++
 5 files changed, 86 insertions(+), 72 deletions(-)

diff --git a/xen/arch/x86/hvm/vmsi=2Ec b/xen/arch/x86/hvm/vmsi=2Ec
index 27b1f089e2=2E=2E2a4b97e2e1 100644
--- a/xen/arch/x86/hvm/vmsi=2Ec
+++ b/xen/arch/x86/hvm/vmsi=2Ec
@@ -43,6 +43,7 @@
 #include <asm/current=2Eh>
 #include <asm/event=2Eh>
 #include <asm/io_apic=2Eh>
+#include <asm/msi=2Eh>
=20
 static void vmsi_inj_irq(
     struct vlapic *target,
@@ -107,12 +108,12 @@ int vmsi_deliver(
=20
 void vmsi_deliver_pirq(struct domain *d, const struct hvm_pirq_dpci *pirq=
_dpci)
 {
-    uint32_t flags =3D pirq_dpci->gmsi=2Egflags;
-    int vector =3D pirq_dpci->gmsi=2Egvec;
-    uint8_t dest =3D (uint8_t)flags;
-    bool dest_mode =3D flags & XEN_DOMCTL_VMSI_X86_DM_MASK;
-    uint8_t delivery_mode =3D MASK_EXTR(flags, XEN_DOMCTL_VMSI_X86_DELIV_=
MASK);
-    bool trig_mode =3D flags & XEN_DOMCTL_VMSI_X86_TRIG_MASK;
+    uint32_t dest =3D MSI_ADDR_DEST(pirq_dpci->gmsi=2Eaddr);
+    bool dest_mode =3D pirq_dpci->gmsi=2Eaddr & MSI_ADDR_DESTMODE_MASK;
+    uint8_t delivery_mode =3D MASK_EXTR(pirq_dpci->gmsi=2Edata,
+                                      MSI_DATA_DELIVERY_MODE_MASK);
+    bool trig_mode =3D pirq_dpci->gmsi=2Edata & MSI_DATA_TRIGGER_MASK;
+    int vector =3D pirq_dpci->gmsi=2Edata & MSI_DATA_VECTOR_MASK;
=20
     HVM_DBG_LOG(DBG_LEVEL_IOAPIC,
                 "msi: dest=3D%x dest_mode=3D%x delivery_mode=3D%x "
@@ -793,27 +794,6 @@ void msix_write_completion(struct vcpu *v)
 }
=20
 #ifdef CONFIG_HAS_VPCI
-static unsigned int msi_gflags(uint16_t data, uint64_t addr, bool masked)
-{
-    /*
-     * We need to use the DOMCTL constants here because the output of thi=
s
-     * function is used as input to pt_irq_create_bind, which also takes =
the
-     * input from the DOMCTL itself=2E
-     */
-    return MASK_INSR(MASK_EXTR(addr, MSI_ADDR_DEST_ID_MASK),
-                     XEN_DOMCTL_VMSI_X86_DEST_ID_MASK) |
-           MASK_INSR(MASK_EXTR(addr, MSI_ADDR_REDIRECTION_MASK),
-                     XEN_DOMCTL_VMSI_X86_RH_MASK) |
-           MASK_INSR(MASK_EXTR(addr, MSI_ADDR_DESTMODE_MASK),
-                     XEN_DOMCTL_VMSI_X86_DM_MASK) |
-           MASK_INSR(MASK_EXTR(data, MSI_DATA_DELIVERY_MODE_MASK),
-                     XEN_DOMCTL_VMSI_X86_DELIV_MASK) |
-           MASK_INSR(MASK_EXTR(data, MSI_DATA_TRIGGER_MASK),
-                     XEN_DOMCTL_VMSI_X86_TRIG_MASK) |
-           /* NB: by default MSI vectors are bound masked=2E */
-           (masked ? 0 : XEN_DOMCTL_VMSI_X86_UNMASKED);
-}
-
 static void vpci_mask_pirq(struct domain *d, int pirq, bool mask)
 {
     unsigned long flags;
@@ -850,17 +830,17 @@ static int vpci_msi_update(const struct pci_dev *pde=
v, uint32_t data,
     {
         uint8_t vector =3D MASK_EXTR(data, MSI_DATA_VECTOR_MASK);
         uint8_t vector_mask =3D 0xff >> (8 - fls(vectors) + 1);
-        struct xen_domctl_bind_pt_irq bind =3D {
-            =2Emachine_irq =3D pirq + i,
-            =2Eirq_type =3D PT_IRQ_TYPE_MSI,
-            =2Eu=2Emsi=2Egvec =3D (vector & ~vector_mask) |
-                          ((vector + i) & vector_mask),
-            =2Eu=2Emsi=2Egflags =3D msi_gflags(data, address, (mask >> i)=
 & 1),
-        };
-        int rc =3D pt_irq_create_bind(pdev->domain, &bind);
+        uint8_t gvec =3D (vector & ~vector_mask) | ((vector + i) & vector=
_mask);
+        uint32_t msi_data =3D (data & ~MSI_DATA_VECTOR_MASK) | gvec;
+        int rc =3D pt_irq_bind_msi(pdev->domain, pirq + i,
+                                 address, msi_data, 0, !((mask >> i) & 1)=
);
=20
         if ( rc )
         {
+            struct xen_domctl_bind_pt_irq bind =3D {
+                =2Eirq_type =3D PT_IRQ_TYPE_MSI,
+                =2Emachine_irq =3D pirq + i,
+            };
             gdprintk(XENLOG_ERR, "%pp: failed to bind PIRQ %u: %d\n",
                      &pdev->sbdf, pirq + i, rc);
             while ( bind=2Emachine_irq-- > pirq )
diff --git a/xen/arch/x86/include/asm/hvm/irq=2Eh b/xen/arch/x86/include/a=
sm/hvm/irq=2Eh
index 77595fb3f4=2E=2Ec50eee9996 100644
--- a/xen/arch/x86/include/asm/hvm/irq=2Eh
+++ b/xen/arch/x86/include/asm/hvm/irq=2Eh
@@ -120,8 +120,8 @@ struct dev_intx_gsi_link {
 #define HVM_IRQ_DPCI_TRANSLATE       (1u << _HVM_IRQ_DPCI_TRANSLATE_SHIFT=
)
=20
 struct hvm_gmsi_info {
-    uint32_t gvec;
-    uint32_t gflags;
+    uint64_t addr;    /* raw MSI address (0xfeexxxxx, includes ext dest I=
D) */
+    uint32_t data;    /* raw MSI data (vector, delivery mode, trigger mod=
e) */
     int dest_vcpu_id; /* -1 :multi-dest, non-negative: dest_vcpu_id */
     bool posted; /* directly deliver to guest via VT-d PI? */
 };
diff --git a/xen/arch/x86/include/asm/msi=2Eh b/xen/arch/x86/include/asm/m=
si=2Eh
index 00059d4a3a=2E=2E93aaf20e27 100644
--- a/xen/arch/x86/include/asm/msi=2Eh
+++ b/xen/arch/x86/include/asm/msi=2Eh
@@ -51,8 +51,22 @@
 #define MSI_ADDR_REDIRECTION_MASK   (1 << MSI_ADDR_REDIRECTION_SHIFT)
=20
 #define MSI_ADDR_DEST_ID_SHIFT		12
-#define	 MSI_ADDR_DEST_ID_MASK		0x00ff000
-#define  MSI_ADDR_DEST_ID(dest)		(((dest) << MSI_ADDR_DEST_ID_SHIFT) & MS=
I_ADDR_DEST_ID_MASK)
+#define MSI_ADDR_DEST_ID_UPPER_BITS	8
+#define MSI_ADDR_DEST_ID_MASK		0x00ff000
+#define MSI_ADDR_DEST_ID(dest)		(((dest) << MSI_ADDR_DEST_ID_SHIFT) & MSI=
_ADDR_DEST_ID_MASK)
+
+/*
+ * Intel convention: in physical destination mode bits 11:5 of the MSI
+ * address carry APIC ID bits [14:8] (the "Extended Destination ID"),
+ * extending the addressable range from 8 to 15 bits=2E
+ */
+#define MSI_ADDR_EXT_DEST_ID_MASK	0x0000fe0
+
+/* Extract the combined 15-bit destination ID from an MSI address=2E */
+#define MSI_ADDR_DEST(addr) \
+    (MASK_EXTR((addr), MSI_ADDR_DEST_ID_MASK) | \
+     (MASK_EXTR((addr), MSI_ADDR_EXT_DEST_ID_MASK) << \
+      MSI_ADDR_DEST_ID_UPPER_BITS))
=20
 /* MAX fixed pages reserved for mapping MSIX tables=2E */
 #define FIX_MSIX_MAX_PAGES              512
diff --git a/xen/drivers/passthrough/x86/hvm=2Ec b/xen/drivers/passthrough=
/x86/hvm=2Ec
index eff1e8a79e=2E=2E026534530f 100644
--- a/xen/drivers/passthrough/x86/hvm=2Ec
+++ b/xen/drivers/passthrough/x86/hvm=2Ec
@@ -21,6 +21,7 @@
 #include <xen/event=2Eh>
 #include <xen/iommu=2Eh>
 #include <xen/cpu=2Eh>
+#include <xen/ioreq=2Eh>
 #include <xen/irq=2Eh>
 #include <asm/hvm/irq=2Eh>
 #include <asm/io_apic=2Eh>
@@ -290,14 +291,15 @@ static int pt_irq_dpci_setup(struct domain *d, unsig=
ned int pirq,
     } while ( true );
 }
=20
-static int pt_irq_bind_msi(struct domain *d, uint32_t machine_irq,
-                            uint8_t gvec, uint32_t gflags, uint64_t gtabl=
e,
-                            bool unmasked)
+int pt_irq_bind_msi(struct domain *d, uint32_t machine_irq,
+                    uint64_t msi_addr, uint32_t msi_data,
+                    uint64_t gtable, bool unmasked)
 {
     struct hvm_irq_dpci *hvm_irq_dpci;
     struct hvm_pirq_dpci *pirq_dpci;
     struct pirq *info;
-    uint8_t dest, delivery_mode;
+    uint8_t gvec, delivery_mode;
+    uint32_t dest;
     bool dest_mode;
     int dest_vcpu_id, rc;
     const struct vcpu *vcpu;
@@ -313,8 +315,8 @@ static int pt_irq_bind_msi(struct domain *d, uint32_t =
machine_irq,
     {
         pirq_dpci->flags =3D HVM_IRQ_DPCI_MAPPED | HVM_IRQ_DPCI_MACH_MSI =
|
                            HVM_IRQ_DPCI_GUEST_MSI;
-        pirq_dpci->gmsi=2Egvec =3D gvec;
-        pirq_dpci->gmsi=2Egflags =3D gflags;
+        pirq_dpci->gmsi=2Eaddr =3D msi_addr;
+        pirq_dpci->gmsi=2Edata =3D msi_data;
         /*
          * 'pt_irq_bind_msi' can be called after 'pt_irq_destroy_bind'=2E
          * The 'pirq_cleanup_check' which would free the structure is onl=
y
@@ -346,8 +348,8 @@ static int pt_irq_bind_msi(struct domain *d, uint32_t =
machine_irq,
         }
         if ( unlikely(rc) )
         {
-            pirq_dpci->gmsi=2Egflags =3D 0;
-            pirq_dpci->gmsi=2Egvec =3D 0;
+            pirq_dpci->gmsi=2Eaddr =3D 0;
+            pirq_dpci->gmsi=2Edata =3D 0;
             pirq_dpci->dom =3D NULL;
             pirq_dpci->flags =3D 0;
             if ( !info->evtchn )
@@ -367,20 +369,22 @@ static int pt_irq_bind_msi(struct domain *d, uint32_=
t machine_irq,
         }
=20
         /* If pirq is already mapped as vmsi, update guest data/addr=2E *=
/
-        if ( pirq_dpci->gmsi=2Egvec !=3D gvec || pirq_dpci->gmsi=2Egflags=
 !=3D gflags )
+        if ( pirq_dpci->gmsi=2Eaddr !=3D msi_addr ||
+             pirq_dpci->gmsi=2Edata !=3D msi_data )
         {
             /* Directly clear pending EOIs before enabling new MSI info=
=2E */
             pirq_guest_eoi(info);
=20
-            pirq_dpci->gmsi=2Egvec =3D gvec;
-            pirq_dpci->gmsi=2Egflags =3D gflags;
+            pirq_dpci->gmsi=2Eaddr =3D msi_addr;
+            pirq_dpci->gmsi=2Edata =3D msi_data;
         }
     }
+
     /* Calculate dest_vcpu_id for MSI-type pirq migration=2E */
-    dest =3D MASK_EXTR(pirq_dpci->gmsi=2Egflags, XEN_DOMCTL_VMSI_X86_DEST=
_ID_MASK);
-    dest_mode =3D pirq_dpci->gmsi=2Egflags & XEN_DOMCTL_VMSI_X86_DM_MASK;
-    delivery_mode =3D MASK_EXTR(pirq_dpci->gmsi=2Egflags,
-                               XEN_DOMCTL_VMSI_X86_DELIV_MASK);
+    gvec =3D msi_data & MSI_DATA_VECTOR_MASK;
+    dest =3D MSI_ADDR_DEST(msi_addr);
+    dest_mode =3D msi_addr & MSI_ADDR_DESTMODE_MASK;
+    delivery_mode =3D MASK_EXTR(msi_data, MSI_DATA_DELIVERY_MODE_MASK);
=20
     dest_vcpu_id =3D hvm_girq_dest_2_vcpu_id(d, dest, dest_mode);
     pirq_dpci->gmsi=2Edest_vcpu_id =3D dest_vcpu_id;
@@ -391,8 +395,7 @@ static int pt_irq_bind_msi(struct domain *d, uint32_t =
machine_irq,
     if ( iommu_intpost )
     {
         if ( delivery_mode =3D=3D dest_LowestPrio )
-            vcpu =3D vector_hashing_dest(d, dest, dest_mode,
-                                       pirq_dpci->gmsi=2Egvec);
+            vcpu =3D vector_hashing_dest(d, dest, dest_mode, gvec);
         if ( vcpu )
             pirq_dpci->gmsi=2Eposted =3D true;
     }
@@ -407,7 +410,7 @@ static int pt_irq_bind_msi(struct domain *d, uint32_t =
machine_irq,
             =2Eirq_type =3D PT_IRQ_TYPE_MSI,
         };
=20
-        rc =3D hvm_pi_update_irte(vcpu, info, pirq_dpci->gmsi=2Egvec);
+        rc =3D hvm_pi_update_irte(vcpu, info, gvec);
         if ( rc )
         {
             pt_irq_destroy_bind(d, &bind);
@@ -417,15 +420,15 @@ static int pt_irq_bind_msi(struct domain *d, uint32_=
t machine_irq,
=20
     if ( unmasked )
     {
-        struct xen_domctl_bind_pt_irq bind =3D {
-            =2Emachine_irq =3D machine_irq,
-            =2Eirq_type =3D PT_IRQ_TYPE_MSI,
-        };
         unsigned long flags;
         struct irq_desc *desc =3D pirq_spin_lock_irq_desc(info, &flags);
=20
         if ( !desc )
         {
+            struct xen_domctl_bind_pt_irq bind =3D {
+                =2Emachine_irq =3D machine_irq,
+                =2Eirq_type =3D PT_IRQ_TYPE_MSI,
+            };
             pt_irq_destroy_bind(d, &bind);
             return -EINVAL;
         }
@@ -448,13 +451,29 @@ int pt_irq_create_bind(
     switch ( pt_irq_bind->irq_type )
     {
     case PT_IRQ_TYPE_MSI:
-        return pt_irq_bind_msi(d, pirq,
-                               pt_irq_bind->u=2Emsi=2Egvec,
-                               pt_irq_bind->u=2Emsi=2Egflags &
-                                   ~XEN_DOMCTL_VMSI_X86_UNMASKED,
+    {
+        uint32_t gflags =3D pt_irq_bind->u=2Emsi=2Egflags;
+        uint64_t msi_addr;
+        uint32_t msi_data;
+
+        msi_addr =3D MSI_ADDR_HEADER |
+                   MASK_INSR(MASK_EXTR(gflags, XEN_DOMCTL_VMSI_X86_DEST_I=
D_MASK),
+                             MSI_ADDR_DEST_ID_MASK) |
+                   (gflags & XEN_DOMCTL_VMSI_X86_RH_MASK ?
+                    MSI_ADDR_REDIRECTION_LOWPRI : MSI_ADDR_REDIRECTION_CP=
U) |
+                   (gflags & XEN_DOMCTL_VMSI_X86_DM_MASK ?
+                    MSI_ADDR_DESTMODE_LOGIC : MSI_ADDR_DESTMODE_PHYS);
+        msi_data =3D pt_irq_bind->u=2Emsi=2Egvec |
+                   MASK_INSR(MASK_EXTR(gflags, XEN_DOMCTL_VMSI_X86_DELIV_=
MASK),
+                             MSI_DATA_DELIVERY_MODE_MASK) |
+                   (gflags & XEN_DOMCTL_VMSI_X86_TRIG_MASK ?
+                    MSI_DATA_TRIGGER_LEVEL : 0);
+
+        return pt_irq_bind_msi(d, pt_irq_bind->machine_irq,
+                               msi_addr, msi_data,
                                pt_irq_bind->u=2Emsi=2Egtable,
-                               !!(pt_irq_bind->u=2Emsi=2Egflags &
-                                  XEN_DOMCTL_VMSI_X86_UNMASKED));
+                               !!(gflags & XEN_DOMCTL_VMSI_X86_UNMASKED))=
;
+    }
=20
     case PT_IRQ_TYPE_PCI:
     case PT_IRQ_TYPE_MSI_TRANSLATE:
@@ -617,7 +636,6 @@ int pt_irq_create_bind(
     }
=20
     default:
-        write_unlock(&d->event_lock);
         return -EOPNOTSUPP;
     }
=20
@@ -858,11 +876,10 @@ static int cf_check _hvm_dpci_msi_eoi(
     int vector =3D (long)arg;
=20
     if ( (pirq_dpci->flags & HVM_IRQ_DPCI_MACH_MSI) &&
-         (pirq_dpci->gmsi=2Egvec =3D=3D vector) )
+         ((pirq_dpci->gmsi=2Edata & MSI_DATA_VECTOR_MASK) =3D=3D vector) =
)
     {
-        unsigned int dest =3D MASK_EXTR(pirq_dpci->gmsi=2Egflags,
-                                      XEN_DOMCTL_VMSI_X86_DEST_ID_MASK);
-        bool dest_mode =3D pirq_dpci->gmsi=2Egflags & XEN_DOMCTL_VMSI_X86=
_DM_MASK;
+        unsigned int dest =3D MSI_ADDR_DEST(pirq_dpci->gmsi=2Eaddr);
+        bool dest_mode =3D pirq_dpci->gmsi=2Eaddr & XEN_DOMCTL_VMSI_X86_D=
M_MASK;
=20
         if ( vlapic_match_dest(vcpu_vlapic(current), NULL, 0, dest,
                                dest_mode) )
diff --git a/xen/include/xen/iommu=2Eh b/xen/include/xen/iommu=2Eh
index 37c4a1dc82=2E=2E4672d114e3 100644
--- a/xen/include/xen/iommu=2Eh
+++ b/xen/include/xen/iommu=2Eh
@@ -222,6 +222,9 @@ int pt_irq_create_bind(struct domain *d,
                        const struct xen_domctl_bind_pt_irq *pt_irq_bind);
 int pt_irq_destroy_bind(struct domain *d,
                         const struct xen_domctl_bind_pt_irq *pt_irq_bind)=
;
+int pt_irq_bind_msi(struct domain *d, uint32_t machine_irq,
+                    uint64_t msi_addr, uint32_t msi_data,
+                    uint64_t gtable, bool unmasked);
=20
 struct hvm_irq_dpci *domain_get_irq_dpci(const struct domain *d);
 void free_hvm_irq_dpci(struct hvm_irq_dpci *dpci);
--=20
2=2E53=2E0



-- 
Julian Vetter | Vates Hypervisor & Kernel Developer

XCP-ng & Xen Orch=
estra - Vates solutions

web: https://vates=2Etech
---=Part.2977.62d2d69c803d43dd.19dcf3880a1.e118eb93d909cefe=---


From xen-devel-bounces@lists.xenproject.org Mon Apr 27 13:55:02 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 27 Apr 2026 13:55:02 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1294892.1571638 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wHMQQ-0001ZS-7i; Mon, 27 Apr 2026 13:55:02 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1294892.1571638; Mon, 27 Apr 2026 13:55: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 1wHMQQ-0001Yg-3l; Mon, 27 Apr 2026 13:55:02 +0000
Received: by outflank-mailman (input) for mailman id 1294892;
 Mon, 27 Apr 2026 13:55:01 +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.19dcf388512000f373@swg.vates.tech>)
 id 1wHMQP-0001Nx-Cv
 for xen-devel@lists.xenproject.org; Mon, 27 Apr 2026 13:55:01 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wHMQO-005eBs-PO
 for xen-devel@lists.xenproject.org; Mon, 27 Apr 2026 15:55:00 +0200
Received: from [10.42.69.10] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1) (envelope-from
 <prod-mta-13.8631fc262581453bbf619ec5b2062170.19dcf388512000f373@swg.vates.tech>)
 id 69ef6ab0-e002-0a2a0a5209dd-0a2a450ac9a4-28
 for <xen-devel@lists.xenproject.org>; Mon, 27 Apr 2026 15:55:00 +0200
Received: from [185.255.28.34] (helo=prod-mta-13.swg-srv.net)
 by tlsNG-4011c0.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.1)
 (envelope-from
 <prod-mta-13.8631fc262581453bbf619ec5b2062170.19dcf388512000f373@swg.vates.tech>)
 id 69ef6aa4-56b3-0a2a450a0019-b9ff1c22a053-9
 for <xen-devel@lists.xenproject.org>; Mon, 27 Apr 2026 15:55:00 +0200
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
 19dcf388512000f373.007 for <xen-devel@lists.xenproject.org>
 (version=TLSv1.3 cipher=TLS_AES_256_GCM_SHA384);
 Mon, 27 Apr 2026 13:54:41 +0000
Received: from julian.home (lfbn-lyo-1-414-55.w2-7.abo.wanadoo.fr [2.7.24.55])
 (Authenticated sender: julian.vetter@vates.tech)
 by mail2.vates.fr (Postfix) with ESMTPSA id 3FDBE8716C;
 Mon, 27 Apr 2026 15:54:40 +0200 (CEST)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@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=yY4Bi6ha45Tllh+AxM2Wy0PFe8cWe9y+CoZHyak59xA=;
 h=from:subject:date:message-id:to:cc:mime-version:content-type:in-reply-to:references:feedback-id;
 b=bOvSleFBBuL4BpumjeYGod7lugVGgu5SvWJubb3/tjVfCNEZCEGSQj9KXq2crsmLL/KwFwVOC
 /6CJEhyttKc4tmvbnS+txevYL4vnafNW1Xh5XN+6RnjL2CCAgrCQGZ3cFlO9dFr6uyONDy39+Na
 WcehdMV1DHeCoCejN7w/gDSGYqJFTtEwikg7/moL57gZCEgv7CFPPIQ/sN0FPzd/ZMJCC6ZZfdX
 dyVuA679DQGFYZ6FQV05YI87o7kDXxwMljenbjdz3g48wJzpHa3hpEzhkkzmQC8O+/t1WIz3rlg
 n/SvE2ltpL7pOSAzXol1LKh/2AqtkhVnIbgkdbS7C7FA==
X-Zone-Loop: 3b056759e59fb83c6bdd0f654afa9b1c1bbe46a771b3
x-campaign-type: default
x-transaction-id: d13225fc-3f7f-4aba-85d5-cd5b2477df1d
x-swg-uid: 01-04a14494-cc19-4830-8179-3b5a4daa453a
X-Mailer: Sweego
Message-ID:
 <1777298081.8631fc262581453bbf619ec5b2062170.19dcf388512000f373@vates.tech>
x-swg-bid: 1777298081.8631fc262581453bbf619ec5b2062170.19dcf388512000f373
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
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=20Pau=20Monn=C3=A9?= <roger.pau@citrix.com>,
	Stefano Stabellini <sstabellini@kernel.org>,
	Bertrand Marquis <bertrand.marquis@arm.com>,
	Volodymyr Babchuk <Volodymyr_Babchuk@epam.com>,
	Teddy Astie <teddy.astie@vates.tech>,
	Julian Vetter <julian.vetter@vates.tech>
Subject: [PATCH v4 6/9] x86/hvm: Support extended destination IDs in virtual MSI and IO-APIC
Date: Mon, 27 Apr 2026 15:54:03 +0200
In-Reply-To: <20260427135406.1281424-1-julian.vetter@vates.tech>
References: <20260427135406.1281424-1-julian.vetter@vates.tech>
MIME-Version: 1.0
X-BM-Disclaimer: Yes
Content-Type: multipart/alternative; boundary="-=Part.2978.cda3961f8565fd1b.19dcf3882da.97da3e9ea573027c=-"
X-Bm-Milter-Handled: 4ffbd6c1-ee69-4e1b-aabd-f977039bd3e2
X-Bm-Transport-Timestamp: 1777298080474
X-purgate-ID: tlsNG-4011c0/1777298100-CE7758B7-776BBBC2/0/0
X-purgate-type: clean
X-purgate-size: 7578

---=Part.2978.cda3961f8565fd1b.19dcf3882da.97da3e9ea573027c=-
Content-Type: text/plain; charset=utf-8
Content-Transfer-Encoding: quoted-printable

Add IO_APIC_REDIR_DEST_MASK and IO_APIC_REDIR_EXT_DEST_MASK for the
standard and extended destination fields of the IO-APIC RTE, and a
VIOAPIC_RTE_DEST() helper that extracts the combined 15-bit destination
ID=2E Extend the IO-APIC RTE save/restore struct with an ext_dest_id field
so migration preserves the extended bits=2E

Use the newly defined masks to extract the full 15-bit destination ID
from guest MSI addresses and IO-APIC RTEs=2E In hvm_inject_msi() combine
the standard bits [19:12] with the extended bits [11:5] of the MSI
address into a 15-bit destination ID for LAPIC delivery=2E Widen the dest
parameter of vmsi_deliver() and hvm_girq_dest_2_vcpu_id() from uint8_t
to uint32_t to accommodate the larger range=2E In vioapic_deliver() read
the combined 15-bit destination using the VIOAPIC_RTE_DEST() macro=2E
Extend ioapic_check() to check for extended destination bits set in a
domain that does not advertise XEN_HVM_CPUID_EXT_DEST_ID and refuse to
restore the IO-APIC state, preventing silent interrupt misrouting after
live migration=2E

Signed-off-by: Julian Vetter <julian=2Evetter@vates=2Etech>
---
Changes in v4:
- Corresponds to v3 patch 3, but adapted for the new raw-addr/data
  storage introduced in patch 5:
    - In v3, vmsi_deliver_pirq() extracted the full destination from
      gflags via XEN_DOMCTL_VMSI_X86_FULL_DEST(), and msi_gflags()
      packed the extended address bits into gflags
    - In v4 both helpers are gone=2E vmsi_deliver_pirq() reads
      pirq_dpci->gmsi=2Eaddr and pirq_dpci->gmsi=2Edata directly using the
      standard MSI masks
- Moved the IO-APIC masks and VIOAPIC_RTE_DEST() helper (previously in
  v3 patch 2) into this patch
- Added ioapic_check() ext destination safety check (refusing migration
  with ext_dest_id bits set when XEN_HVM_CPUID_EXT_DEST_ID is not
  advertised)
---
 xen/arch/x86/hvm/irq=2Ec                 |  9 ++++++++-
 xen/arch/x86/hvm/vioapic=2Ec             |  2 +-
 xen/arch/x86/hvm/vmsi=2Ec                |  4 ++--
 xen/arch/x86/include/asm/hvm/hvm=2Eh     |  4 ++--
 xen/arch/x86/include/asm/hvm/vioapic=2Eh | 12 ++++++++++++
 xen/include/public/arch-x86/hvm/save=2Eh |  4 +++-
 6 files changed, 28 insertions(+), 7 deletions(-)

diff --git a/xen/arch/x86/hvm/irq=2Ec b/xen/arch/x86/hvm/irq=2Ec
index 5f64361113=2E=2Eb43adf8b96 100644
--- a/xen/arch/x86/hvm/irq=2Ec
+++ b/xen/arch/x86/hvm/irq=2Ec
@@ -374,7 +374,14 @@ int hvm_set_pci_link_route(struct domain *d, u8 link,=
 u8 isa_irq)
 int hvm_inject_msi(struct domain *d, uint64_t addr, uint32_t data)
 {
     uint32_t tmp =3D (uint32_t) addr;
-    uint8_t  dest =3D (tmp & MSI_ADDR_DEST_ID_MASK) >> MSI_ADDR_DEST_ID_S=
HIFT;
+    /*
+     * Standard MSI destination address bits 19:12 carry the 8-bit APIC I=
D=2E
+     * When XEN_HVM_CPUID_EXT_DEST_ID is enabled, bits 11:5 carry APIC ID=
 bits
+     * [14:8], extending the addressable range to 15 bits=2E Guests that =
do not
+     * use extended IDs leave these bits at zero, so the combined extract=
ion is
+     * safe regardless=2E
+     */
+    uint32_t dest =3D MSI_ADDR_DEST(tmp);
     uint8_t  dest_mode =3D !!(tmp & MSI_ADDR_DESTMODE_MASK);
     uint8_t  delivery_mode =3D (data & MSI_DATA_DELIVERY_MODE_MASK)
         >> MSI_DATA_DELIVERY_MODE_SHIFT;
diff --git a/xen/arch/x86/hvm/vioapic=2Ec b/xen/arch/x86/hvm/vioapic=2Ec
index 43fb165f84=2E=2E527cc770b7 100644
--- a/xen/arch/x86/hvm/vioapic=2Ec
+++ b/xen/arch/x86/hvm/vioapic=2Ec
@@ -411,7 +411,7 @@ static void ioapic_inj_irq(
=20
 static void vioapic_deliver(struct hvm_vioapic *vioapic, unsigned int pin=
)
 {
-    uint16_t dest =3D vioapic->redirtbl[pin]=2Efields=2Edest_id;
+    uint32_t dest =3D VIOAPIC_RTE_DEST(vioapic->redirtbl[pin]=2Ebits);
     uint8_t dest_mode =3D vioapic->redirtbl[pin]=2Efields=2Edest_mode;
     uint8_t delivery_mode =3D vioapic->redirtbl[pin]=2Efields=2Edelivery_=
mode;
     uint8_t vector =3D vioapic->redirtbl[pin]=2Efields=2Evector;
diff --git a/xen/arch/x86/hvm/vmsi=2Ec b/xen/arch/x86/hvm/vmsi=2Ec
index 2a4b97e2e1=2E=2E7b338c4ddc 100644
--- a/xen/arch/x86/hvm/vmsi=2Ec
+++ b/xen/arch/x86/hvm/vmsi=2Ec
@@ -67,7 +67,7 @@ static void vmsi_inj_irq(
=20
 int vmsi_deliver(
     struct domain *d, int vector,
-    uint8_t dest, uint8_t dest_mode,
+    uint32_t dest, uint8_t dest_mode,
     uint8_t delivery_mode, uint8_t trig_mode)
 {
     struct vlapic *target;
@@ -126,7 +126,7 @@ void vmsi_deliver_pirq(struct domain *d, const struct =
hvm_pirq_dpci *pirq_dpci)
 }
=20
 /* Return value, -1 : multi-dests, non-negative value: dest_vcpu_id */
-int hvm_girq_dest_2_vcpu_id(struct domain *d, uint8_t dest, uint8_t dest_=
mode)
+int hvm_girq_dest_2_vcpu_id(struct domain *d, uint32_t dest, uint8_t dest=
_mode)
 {
     int dest_vcpu_id =3D -1, w =3D 0;
     struct vcpu *v;
diff --git a/xen/arch/x86/include/asm/hvm/hvm=2Eh b/xen/arch/x86/include/a=
sm/hvm/hvm=2Eh
index e7c1364802=2E=2E884dd44c81 100644
--- a/xen/arch/x86/include/asm/hvm/hvm=2Eh
+++ b/xen/arch/x86/include/asm/hvm/hvm=2Eh
@@ -294,11 +294,11 @@ uint64_t hvm_get_guest_time_fixed(const struct vcpu =
*v, uint64_t at_tsc);
=20
 int vmsi_deliver(
     struct domain *d, int vector,
-    uint8_t dest, uint8_t dest_mode,
+    uint32_t dest, uint8_t dest_mode,
     uint8_t delivery_mode, uint8_t trig_mode);
 struct hvm_pirq_dpci;
 void vmsi_deliver_pirq(struct domain *d, const struct hvm_pirq_dpci *pirq=
_dpci);
-int hvm_girq_dest_2_vcpu_id(struct domain *d, uint8_t dest, uint8_t dest_=
mode);
+int hvm_girq_dest_2_vcpu_id(struct domain *d, uint32_t dest, uint8_t dest=
_mode);
=20
 enum hvm_intblk
 hvm_interrupt_blocked(struct vcpu *v, struct hvm_intack intack);
diff --git a/xen/arch/x86/include/asm/hvm/vioapic=2Eh b/xen/arch/x86/inclu=
de/asm/hvm/vioapic=2Eh
index 68af6dce79=2E=2E4499208bad 100644
--- a/xen/arch/x86/include/asm/hvm/vioapic=2Eh
+++ b/xen/arch/x86/include/asm/hvm/vioapic=2Eh
@@ -32,6 +32,18 @@
 #define VIOAPIC_EDGE_TRIG  0
 #define VIOAPIC_LEVEL_TRIG 1
=20
+/*
+ * Extract the destination ID from a 64-bit IO-APIC RTE, including the
+ * extended bits (55:49) used when XEN_HVM_CPUID_EXT_DEST_ID is advertise=
d=2E
+ */
+#define IO_APIC_REDIR_DEST_MASK         (0xffULL << 56)
+#define IO_APIC_REDIR_EXT_DEST_MASK     (0x7fULL << 49)
+
+#define VIOAPIC_RTE_DEST(rte) \
+    (MASK_EXTR((rte), IO_APIC_REDIR_DEST_MASK) | \
+     (MASK_EXTR((rte), IO_APIC_REDIR_EXT_DEST_MASK) << \
+      MSI_ADDR_DEST_ID_UPPER_BITS))
+
 #define VIOAPIC_DEFAULT_BASE_ADDRESS  0xfec00000U
 #define VIOAPIC_MEM_LENGTH            0x100
=20
diff --git a/xen/include/public/arch-x86/hvm/save=2Eh b/xen/include/public=
/arch-x86/hvm/save=2Eh
index 9c4bfc7ebd=2E=2E483097d940 100644
--- a/xen/include/public/arch-x86/hvm/save=2Eh
+++ b/xen/include/public/arch-x86/hvm/save=2Eh
@@ -359,7 +359,9 @@ union vioapic_redir_entry
         uint8_t trig_mode:1;
         uint8_t mask:1;
         uint8_t reserve:7;
-        uint8_t reserved[4];
+        uint8_t reserved[3];
+        uint8_t reserved2:1;
+        uint8_t ext_dest_id:7;
         uint8_t dest_id;
     } fields;
 };
--=20
2=2E53=2E0



-- 
Julian Vetter | Vates Hypervisor & Kernel Developer

XCP-ng & Xen Orch=
estra - Vates solutions

web: https://vates=2Etech
---=Part.2978.cda3961f8565fd1b.19dcf3882da.97da3e9ea573027c=---


From xen-devel-bounces@lists.xenproject.org Mon Apr 27 13:55:04 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 27 Apr 2026 13:55:04 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1294894.1571648 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wHMQS-0001sW-KS; Mon, 27 Apr 2026 13:55:04 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1294894.1571648; Mon, 27 Apr 2026 13:55: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 1wHMQS-0001sF-GV; Mon, 27 Apr 2026 13:55:04 +0000
Received: by outflank-mailman (input) for mailman id 1294894;
 Mon, 27 Apr 2026 13:55: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.19dcf388597000f373@swg.vates.tech>)
 id 1wHMQR-0001kk-6N
 for xen-devel@lists.xenproject.org; Mon, 27 Apr 2026 13:55:03 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wHMQQ-005eBs-J5
 for xen-devel@lists.xenproject.org; Mon, 27 Apr 2026 15:55:02 +0200
Received: from [10.42.69.10] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1) (envelope-from
 <prod-mta-13.8631fc262581453bbf619ec5b2062170.19dcf388597000f373@swg.vates.tech>)
 id 69ef6ab0-e002-0a2a0a5209dd-0a2a450ac9a4-36
 for <xen-devel@lists.xenproject.org>; Mon, 27 Apr 2026 15:55:02 +0200
Received: from [185.255.28.34] (helo=prod-mta-13.swg-srv.net)
 by tlsNG-4011c0.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.1)
 (envelope-from
 <prod-mta-13.8631fc262581453bbf619ec5b2062170.19dcf388597000f373@swg.vates.tech>)
 id 69ef6aa4-56b3-0a2a450a0019-b9ff1c22a053-10
 for <xen-devel@lists.xenproject.org>; Mon, 27 Apr 2026 15:55:02 +0200
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
 19dcf388597000f373.007 for <xen-devel@lists.xenproject.org>
 (version=TLSv1.3 cipher=TLS_AES_256_GCM_SHA384);
 Mon, 27 Apr 2026 13:54:41 +0000
Received: from julian.home (lfbn-lyo-1-414-55.w2-7.abo.wanadoo.fr [2.7.24.55])
 (Authenticated sender: julian.vetter@vates.tech)
 by mail2.vates.fr (Postfix) with ESMTPSA id 8F2F687780;
 Mon, 27 Apr 2026 15:54:40 +0200 (CEST)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@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=fb9qQ4Oy3R3zTDsEr6x8vu/WfuHkFi3ghUo/wdwnt1Y=;
 h=from:subject:date:message-id:to:cc:mime-version:content-type:in-reply-to:references:feedback-id;
 b=IqwssKnDVxCJpbbQKCAEJjw4WT4LRnOG6hBMv78r7DaF+EwglVun2Z4rVGSyinJbW9H5LWfIN
 u2Mp05URK1ubnDHLmDz+PU39UuJZE1jkBsUFOqsVOV/Jjozz2F06FsZHdlPhHBsVrJ5a2Hl7Teh
 Yj8Dm2SWQtBTdhVhz44cBS3AlMg5fjYXDQJb6w9za/OXGYkHLPGfqTTdAcde/Lw2FEQTUMekmI4
 X5p+koV1STvyieat9302NP3R6RL9OMvZlB2GGqkKTwmBPWEaj/ePhzrDqGP06NQreObh1oXcTDt
 zBHHvA51gUGra5t0nu8DKBBaG+vePt+LbJrELn+vNClg==
X-Zone-Loop: 336f26e275b72a81053cef767e6ae18783a3e15c6e95
x-campaign-type: default
x-transaction-id: 7c916762-bf9c-427c-8786-b205dece7fff
x-swg-uid: 01-04adf360-3bb4-4464-8ed0-3dde4819b018
X-Mailer: Sweego
Message-ID:
 <1777298081.8631fc262581453bbf619ec5b2062170.19dcf388597000f373@vates.tech>
x-swg-bid: 1777298081.8631fc262581453bbf619ec5b2062170.19dcf388597000f373
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
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=20Pau=20Monn=C3=A9?= <roger.pau@citrix.com>,
	Stefano Stabellini <sstabellini@kernel.org>,
	Bertrand Marquis <bertrand.marquis@arm.com>,
	Volodymyr Babchuk <Volodymyr_Babchuk@epam.com>,
	Teddy Astie <teddy.astie@vates.tech>,
	Julian Vetter <julian.vetter@vates.tech>
Subject: [PATCH v4 7/9] x86/dmop: Add XEN_DMOP_{bind,unbind}_pt_msi_irq DM ops
Date: Mon, 27 Apr 2026 15:54:04 +0200
In-Reply-To: <20260427135406.1281424-1-julian.vetter@vates.tech>
References: <20260427135406.1281424-1-julian.vetter@vates.tech>
MIME-Version: 1.0
X-BM-Disclaimer: Yes
Content-Type: multipart/alternative; boundary="-=Part.2979.83d4fb820ba3c81.19dcf38841e.d33788981f0c79f2=-"
X-Bm-Milter-Handled: 4ffbd6c1-ee69-4e1b-aabd-f977039bd3e2
X-Bm-Transport-Timestamp: 1777298080799
X-purgate-ID: tlsNG-4011c0/1777298102-469768B7-12D4CAB3/0/0
X-purgate-type: clean
X-purgate-size: 16262

---=Part.2979.83d4fb820ba3c81.19dcf38841e.d33788981f0c79f2=-
Content-Type: text/plain; charset=utf-8
Content-Transfer-Encoding: quoted-printable

Add two DM ops for MSI passthrough IRQs=2E These new DM ops take the raw
MSI address and data fields rather than pre-decoded gflags values=2E Xen
decodes the destination ID via msi_addr_to_gflags(), including any
extended destination bits in address[11:5]=2E This means the device model
does not need to understand the extended destination ID encoding, and
simply forwards the MSI address it observes from the guest=2E

With these DM ops in place, redirect xc_domain_update_msi_irq() and
xc_domain_unbind_msi_irq() in libxenctrl to use
xendevicemodel_bind_pt_msi_irq() / xendevicemodel_unbind_pt_msi_irq()
via xch->dmod=2E The gflags/gvec arguments are translated to the raw MSI
address and data words at the libxc level using the standard x86 MSI
address format=2E

Reject the PT_IRQ_TYPE_MSI sub-case in XEN_DOMCTL_bind_pt_irq and
XEN_DOMCTL_unbind_pt_irq: all callers now go through the DM op path, so
the domctl sub-case is fully obsolete=2E

Signed-off-by: Julian Vetter <julian=2Evetter@vates=2Etech>
---
Changes in v4:
- Corresponds to v3 patch 5, but with feedback from Jan
- Redirect xc_domain_{update,unbind}_msi_irq() in libxenctrl to call
  xendevicemodel_{un}bind_pt_msi_irq() via xch->dmod, translating the
  existing gflags/gvec arguments to raw MSI address and data in libxc
- As suggested by Jan, reject the PT_IRQ_TYPE_MSI sub-case in
  XEN_DOMCTL_{bind,unbind}_pt_irq with -EOPNOTSUPP -> All callers now go
  through the DM op path, making the domctl sub-case fully obsolete
- Added the xlat=2Elst entry for dm_op_unbind_pt_msi_irq (v3 added only th=
e
  bind entry)
---
 tools/include/xendevicemodel=2Eh    | 31 ++++++++++++++
 tools/libs/ctrl/xc_domain=2Ec       | 52 +++++++++++------------
 tools/libs/devicemodel/core=2Ec     | 38 +++++++++++++++++
 xen/arch/x86/domctl=2Ec             | 10 ++++-
 xen/arch/x86/hvm/dm=2Ec             | 68 +++++++++++++++++++++++++++++++
 xen/drivers/passthrough/x86/hvm=2Ec |  1 -
 xen/include/public/hvm/dm_op=2Eh    | 37 +++++++++++++++++
 xen/include/xlat=2Elst              |  2 +
 8 files changed, 208 insertions(+), 31 deletions(-)

diff --git a/tools/include/xendevicemodel=2Eh b/tools/include/xendevicemod=
el=2Eh
index 227e7fd810=2E=2Ef15b35fa33 100644
--- a/tools/include/xendevicemodel=2Eh
+++ b/tools/include/xendevicemodel=2Eh
@@ -375,6 +375,37 @@ int xendevicemodel_nr_vcpus(
  */
 int xendevicemodel_restrict(xendevicemodel_handle *dmod, domid_t domid);
=20
+/**
+ * This function binds a passthrough physical IRQ to a guest MSI vector
+ * using raw MSI address/data fields=2E Unlike XEN_DOMCTL_bind_pt_irq,
+ * this interface supports extended (15-bit) destination IDs by having
+ * Xen decode the MSI address internally=2E
+ *
+ * @parm dmod a handle to an open devicemodel interface=2E
+ * @parm domid the domain id to be serviced=2E
+ * @parm machine_irq the physical IRQ number (pirq)=2E
+ * @parm msi_addr the MSI address (includes ext=2E dest=2E ID bits [11:5]=
)=2E
+ * @parm msi_data the MSI data word (bits [7:0] are the guest vector)=2E
+ * @parm gtable the MSI-X table base GFN, or 0 for plain MSI=2E
+ * @parm unmasked if non-zero, leave the IRQ unmasked after binding=2E
+ * @return 0 on success, -1 on failure=2E
+ */
+int xendevicemodel_bind_pt_msi_irq(
+    xendevicemodel_handle *dmod, domid_t domid, uint32_t machine_irq,
+    uint64_t msi_addr, uint32_t msi_data, uint64_t gtable, int unmasked);
+
+/**
+ * This function unbinds a passthrough physical IRQ previously bound
+ * with xendevicemodel_bind_pt_msi_irq=2E
+ *
+ * @parm dmod a handle to an open devicemodel interface=2E
+ * @parm domid the domain id to be serviced=2E
+ * @parm machine_irq the physical IRQ number (pirq)=2E
+ * @return 0 on success, -1 on failure=2E
+ */
+int xendevicemodel_unbind_pt_msi_irq(
+    xendevicemodel_handle *dmod, domid_t domid, uint32_t machine_irq);
+
 #endif /* XENDEVICEMODEL_H */
=20
 /*
diff --git a/tools/libs/ctrl/xc_domain=2Ec b/tools/libs/ctrl/xc_domain=2Ec
index 01c0669c88=2E=2E7e3b7a0dc6 100644
--- a/tools/libs/ctrl/xc_domain=2Ec
+++ b/tools/libs/ctrl/xc_domain=2Ec
@@ -1677,6 +1677,21 @@ int xc_deassign_dt_device(
=20
=20
=20
+static void xc_msi_gflags_to_addr_data(uint32_t gvec, uint32_t gflags,
+                                        uint64_t *msi_addr, uint32_t *msi=
_data)
+{
+    *msi_addr =3D 0xfee00000U |
+        ((uint64_t)((gflags & XEN_DOMCTL_VMSI_X86_DEST_ID_MASK) << 12)) |
+        (gflags & XEN_DOMCTL_VMSI_X86_RH_MASK ? (1U << 3) : 0) |
+        (gflags & XEN_DOMCTL_VMSI_X86_DM_MASK ? (1U << 2) : 0);
+
+    *msi_data =3D (gvec & 0xff) |
+        (uint32_t)(((gflags & XEN_DOMCTL_VMSI_X86_DELIV_MASK) >>
+                    (/* shift of XEN_DOMCTL_VMSI_X86_DELIV_MASK */ 12 -
+                     /* MSI data delivery shift */ 8))) |
+        (gflags & XEN_DOMCTL_VMSI_X86_TRIG_MASK ? (1U << 15) : 0);
+}
+
 int xc_domain_update_msi_irq(
     xc_interface *xch,
     uint32_t domid,
@@ -1685,22 +1700,15 @@ int xc_domain_update_msi_irq(
     uint32_t gflags,
     uint64_t gtable)
 {
-    int rc;
-    struct xen_domctl_bind_pt_irq *bind;
-    struct xen_domctl domctl =3D {};
-
-    domctl=2Ecmd =3D XEN_DOMCTL_bind_pt_irq;
-    domctl=2Edomain =3D domid;
+    uint64_t msi_addr;
+    uint32_t msi_data;
+    int unmasked =3D !!(gflags & XEN_DOMCTL_VMSI_X86_UNMASKED);
=20
-    bind =3D &(domctl=2Eu=2Ebind_pt_irq);
-    bind->irq_type =3D PT_IRQ_TYPE_MSI;
-    bind->machine_irq =3D pirq;
-    bind->u=2Emsi=2Egvec =3D gvec;
-    bind->u=2Emsi=2Egflags =3D gflags;
-    bind->u=2Emsi=2Egtable =3D gtable;
+    xc_msi_gflags_to_addr_data(gvec, gflags, &msi_addr, &msi_data);
=20
-    rc =3D do_domctl(xch, &domctl);
-    return rc;
+    return xendevicemodel_bind_pt_msi_irq(xch->dmod, domid, pirq,
+                                          msi_addr, msi_data, gtable,
+                                          unmasked);
 }
=20
 int xc_domain_unbind_msi_irq(
@@ -1710,21 +1718,7 @@ int xc_domain_unbind_msi_irq(
     uint32_t pirq,
     uint32_t gflags)
 {
-    int rc;
-    struct xen_domctl_bind_pt_irq *bind;
-    struct xen_domctl domctl =3D {};
-
-    domctl=2Ecmd =3D XEN_DOMCTL_unbind_pt_irq;
-    domctl=2Edomain =3D domid;
-
-    bind =3D &(domctl=2Eu=2Ebind_pt_irq);
-    bind->irq_type =3D PT_IRQ_TYPE_MSI;
-    bind->machine_irq =3D pirq;
-    bind->u=2Emsi=2Egvec =3D gvec;
-    bind->u=2Emsi=2Egflags =3D gflags;
-
-    rc =3D do_domctl(xch, &domctl);
-    return rc;
+    return xendevicemodel_unbind_pt_msi_irq(xch->dmod, domid, pirq);
 }
=20
 /* Pass-through: binds machine irq to guests irq */
diff --git a/tools/libs/devicemodel/core=2Ec b/tools/libs/devicemodel/core=
=2Ec
index 8e619eeb0a=2E=2Eadf2c41a96 100644
--- a/tools/libs/devicemodel/core=2Ec
+++ b/tools/libs/devicemodel/core=2Ec
@@ -645,6 +645,44 @@ int xendevicemodel_nr_vcpus(
     return 0;
 }
=20
+int xendevicemodel_bind_pt_msi_irq(
+    xendevicemodel_handle *dmod, domid_t domid, uint32_t machine_irq,
+    uint64_t msi_addr, uint32_t msi_data, uint64_t gtable, int unmasked)
+{
+    struct xen_dm_op op;
+    struct xen_dm_op_bind_pt_msi_irq *data;
+
+    memset(&op, 0, sizeof(op));
+
+    op=2Eop =3D XEN_DMOP_bind_pt_msi_irq;
+    data =3D &op=2Eu=2Ebind_pt_msi_irq;
+
+    data->machine_irq =3D machine_irq;
+    data->data =3D msi_data;
+    data->addr =3D msi_addr;
+    data->gtable =3D gtable;
+    if ( unmasked )
+        data->flags |=3D XEN_DMOP_MSI_FLAG_UNMASKED;
+
+    return xendevicemodel_op(dmod, domid, 1, &op, sizeof(op));
+}
+
+int xendevicemodel_unbind_pt_msi_irq(
+    xendevicemodel_handle *dmod, domid_t domid, uint32_t machine_irq)
+{
+    struct xen_dm_op op;
+    struct xen_dm_op_unbind_pt_msi_irq *data;
+
+    memset(&op, 0, sizeof(op));
+
+    op=2Eop =3D XEN_DMOP_unbind_pt_msi_irq;
+    data =3D &op=2Eu=2Eunbind_pt_msi_irq;
+
+    data->machine_irq =3D machine_irq;
+
+    return xendevicemodel_op(dmod, domid, 1, &op, sizeof(op));
+}
+
 int xendevicemodel_restrict(xendevicemodel_handle *dmod, domid_t domid)
 {
     return osdep_xendevicemodel_restrict(dmod, domid);
diff --git a/xen/arch/x86/domctl=2Ec b/xen/arch/x86/domctl=2Ec
index bfbc35c08b=2E=2Ed80a33fe40 100644
--- a/xen/arch/x86/domctl=2Ec
+++ b/xen/arch/x86/domctl=2Ec
@@ -574,6 +574,14 @@ long arch_do_domctl(
         if ( !is_hvm_domain(d) )
             break;
=20
+        /*
+         * PT_IRQ_TYPE_MSI is obsoleted by XEN_DMOP_bind_pt_msi_irq, whic=
h
+         * passes raw MSI address/data so Xen can decode extended destina=
tion
+         * ID bits=2E Device models must use the DM op path instead=2E
+         */
+        if ( bind->irq_type =3D=3D PT_IRQ_TYPE_MSI )
+            break;
+
         ret =3D xsm_bind_pt_irq(XSM_HOOK, d, bind);
         if ( ret )
             break;
@@ -602,7 +610,7 @@ long arch_do_domctl(
         int irq =3D domain_pirq_to_irq(d, bind->machine_irq);
=20
         ret =3D -EINVAL;
-        if ( !is_hvm_domain(d) )
+        if ( !is_hvm_domain(d) || bind->irq_type =3D=3D PT_IRQ_TYPE_MSI )
             break;
=20
         ret =3D -EPERM;
diff --git a/xen/arch/x86/hvm/dm=2Ec b/xen/arch/x86/hvm/dm=2Ec
index 3b53471af0=2E=2Eac70cb6405 100644
--- a/xen/arch/x86/hvm/dm=2Ec
+++ b/xen/arch/x86/hvm/dm=2Ec
@@ -7,6 +7,8 @@
 #include <xen/guest_access=2Eh>
 #include <xen/dm=2Eh>
 #include <xen/hypercall=2Eh>
+#include <xen/iocap=2Eh>
+#include <xen/iommu=2Eh>
 #include <xen/ioreq=2Eh>
 #include <xen/nospec=2Eh>
 #include <xen/sched=2Eh>
@@ -350,6 +352,8 @@ int dm_op(const struct dmop_args *op_args)
         [XEN_DMOP_relocate_memory]                  =3D sizeof(struct xen=
_dm_op_relocate_memory),
         [XEN_DMOP_pin_memory_cacheattr]             =3D sizeof(struct xen=
_dm_op_pin_memory_cacheattr),
         [XEN_DMOP_nr_vcpus]                         =3D sizeof(struct xen=
_dm_op_nr_vcpus),
+        [XEN_DMOP_bind_pt_msi_irq]                  =3D sizeof(struct xen=
_dm_op_bind_pt_msi_irq),
+        [XEN_DMOP_unbind_pt_msi_irq]                =3D sizeof(struct xen=
_dm_op_unbind_pt_msi_irq),
     };
=20
     rc =3D rcu_lock_remote_domain_by_id(op_args->domid, &d);
@@ -607,6 +611,68 @@ int dm_op(const struct dmop_args *op_args)
         break;
     }
=20
+    case XEN_DMOP_bind_pt_msi_irq:
+    {
+        const struct xen_dm_op_bind_pt_msi_irq *data =3D
+            &op=2Eu=2Ebind_pt_msi_irq;
+        int irq;
+
+        rc =3D -EINVAL;
+        if ( data->pad || (data->flags & ~XEN_DMOP_MSI_FLAG_UNMASKED) )
+            break;
+
+        irq =3D domain_pirq_to_irq(d, data->machine_irq);
+
+        rc =3D -EPERM;
+        if ( irq <=3D 0 || !irq_access_permitted(current->domain, irq) )
+            break;
+
+        rc =3D -ESRCH;
+        if ( is_iommu_enabled(d) )
+        {
+            read_lock(&d->pci_lock);
+            rc =3D pt_irq_bind_msi(d, data->machine_irq, data->addr, data=
->data,
+                                 data->gtable,
+                                 !!(data->flags & XEN_DMOP_MSI_FLAG_UNMAS=
KED));
+            read_unlock(&d->pci_lock);
+        }
+        if ( rc < 0 )
+            printk(XENLOG_G_ERR
+                   "XEN_DMOP_bind_pt_msi_irq: pt_irq_bind_msi failed (%ld=
) for %pd\n",
+                   rc, d);
+        break;
+    }
+
+    case XEN_DMOP_unbind_pt_msi_irq:
+    {
+        const struct xen_dm_op_unbind_pt_msi_irq *data =3D
+            &op=2Eu=2Eunbind_pt_msi_irq;
+        struct xen_domctl_bind_pt_irq bind =3D {
+            =2Emachine_irq =3D data->machine_irq,
+            =2Eirq_type =3D PT_IRQ_TYPE_MSI,
+        };
+        int irq;
+
+        irq =3D domain_pirq_to_irq(d, bind=2Emachine_irq);
+
+        rc =3D -EPERM;
+        if ( irq <=3D 0 || !irq_access_permitted(current->domain, irq) )
+            break;
+
+        rc =3D -ESRCH;
+        if ( is_iommu_enabled(d) )
+        {
+            read_lock(&d->pci_lock);
+            rc =3D pt_irq_destroy_bind(d, &bind);
+            read_unlock(&d->pci_lock);
+        }
+        if ( rc < 0 )
+            printk(XENLOG_G_ERR
+                   "XEN_DMOP_unbind_pt_msi_irq: pt_irq_destroy_bind faile=
d (%ld) for %pd\n",
+                   rc, d);
+        break;
+    }
+
     default:
         rc =3D ioreq_server_dm_op(&op, d, &const_op);
         break;
@@ -643,6 +709,8 @@ CHECK_dm_op_remote_shutdown;
 CHECK_dm_op_relocate_memory;
 CHECK_dm_op_pin_memory_cacheattr;
 CHECK_dm_op_nr_vcpus;
+CHECK_dm_op_bind_pt_msi_irq;
+CHECK_dm_op_unbind_pt_msi_irq;
=20
 int compat_dm_op(
     domid_t domid, unsigned int nr_bufs, XEN_GUEST_HANDLE_PARAM(void) buf=
s)
diff --git a/xen/drivers/passthrough/x86/hvm=2Ec b/xen/drivers/passthrough=
/x86/hvm=2Ec
index 026534530f=2E=2E6fb4f8b7dc 100644
--- a/xen/drivers/passthrough/x86/hvm=2Ec
+++ b/xen/drivers/passthrough/x86/hvm=2Ec
@@ -21,7 +21,6 @@
 #include <xen/event=2Eh>
 #include <xen/iommu=2Eh>
 #include <xen/cpu=2Eh>
-#include <xen/ioreq=2Eh>
 #include <xen/irq=2Eh>
 #include <asm/hvm/irq=2Eh>
 #include <asm/io_apic=2Eh>
diff --git a/xen/include/public/hvm/dm_op=2Eh b/xen/include/public/hvm/dm_=
op=2Eh
index 2bf0fdc1ae=2E=2E43571b7713 100644
--- a/xen/include/public/hvm/dm_op=2Eh
+++ b/xen/include/public/hvm/dm_op=2Eh
@@ -444,6 +444,41 @@ struct xen_dm_op_nr_vcpus {
 };
 typedef struct xen_dm_op_nr_vcpus xen_dm_op_nr_vcpus_t;
=20
+#define XEN_DMOP_bind_pt_msi_irq   21
+#define XEN_DMOP_unbind_pt_msi_irq 22
+
+struct xen_dm_op_bind_pt_msi_irq {
+    /* IN - physical IRQ (pirq) */
+    uint32_t machine_irq;
+    /* IN - MSI data word (bits [7:0] are the guest vector) */
+    uint32_t data;
+    /* IN - flags */
+    uint32_t flags;
+#define XEN_DMOP_MSI_FLAG_UNMASKED (1u << 0)
+    uint32_t pad;
+    /* IN - MSI address (includes extended destination ID in bits [11:5])=
 */
+    uint64_aligned_t addr;
+    /* IN - MSI-X table base GFN, 0 for plain MSI */
+    uint64_aligned_t gtable;
+};
+
+typedef struct xen_dm_op_bind_pt_msi_irq xen_dm_op_bind_pt_msi_irq_t;
+
+struct xen_dm_op_unbind_pt_msi_irq {
+    /* IN - physical IRQ (pirq) */
+    uint32_t machine_irq;
+};
+typedef struct xen_dm_op_unbind_pt_msi_irq xen_dm_op_unbind_pt_msi_irq_t;
+
+/*
+ * XEN_DMOP_enable_ext_dest_id: Signal to Xen that this device model will=
 use
+ * XEN_DMOP_bind_pt_msi_irq for all passthrough MSI bindings, passing raw=
 MSI
+ * address/data fields=2E Once called, Xen will advertise
+ * XEN_HVM_CPUID_EXT_DEST_ID to the guest=2E Must be called before the gu=
est
+ * starts=2E
+ */
+#define XEN_DMOP_enable_ext_dest_id 23
+
 struct xen_dm_op {
     uint32_t op;
     uint32_t pad;
@@ -468,6 +503,8 @@ struct xen_dm_op {
         xen_dm_op_relocate_memory_t relocate_memory;
         xen_dm_op_pin_memory_cacheattr_t pin_memory_cacheattr;
         xen_dm_op_nr_vcpus_t nr_vcpus;
+        xen_dm_op_bind_pt_msi_irq_t bind_pt_msi_irq;
+        xen_dm_op_unbind_pt_msi_irq_t unbind_pt_msi_irq;
     } u;
 };
=20
diff --git a/xen/include/xlat=2Elst b/xen/include/xlat=2Elst
index 9d08dcc4bb=2E=2E6dc5f5796a 100644
--- a/xen/include/xlat=2Elst
+++ b/xen/include/xlat=2Elst
@@ -98,6 +98,7 @@
 ?	grant_entry_v2			grant_table=2Eh
=20
 !	dm_op_buf			hvm/dm_op=2Eh
+?	dm_op_bind_pt_msi_irq		hvm/dm_op=2Eh
 ?	dm_op_create_ioreq_server	hvm/dm_op=2Eh
 ?	dm_op_destroy_ioreq_server	hvm/dm_op=2Eh
 ?	dm_op_get_ioreq_server_info	hvm/dm_op=2Eh
@@ -116,6 +117,7 @@
 ?	dm_op_set_pci_intx_level	hvm/dm_op=2Eh
 ?	dm_op_set_pci_link_route	hvm/dm_op=2Eh
 ?	dm_op_track_dirty_vram		hvm/dm_op=2Eh
+?	dm_op_unbind_pt_msi_irq		hvm/dm_op=2Eh
=20
 !	hvm_altp2m_set_mem_access_multi	hvm/hvm_op=2Eh
=20
--=20
2=2E53=2E0



-- 
Julian Vetter | Vates Hypervisor & Kernel Developer

XCP-ng & Xen Orch=
estra - Vates solutions

web: https://vates=2Etech
---=Part.2979.83d4fb820ba3c81.19dcf38841e.d33788981f0c79f2=---


From xen-devel-bounces@lists.xenproject.org Mon Apr 27 13:55:08 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 27 Apr 2026 13:55:08 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1294898.1571657 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wHMQW-0002Cs-0O; Mon, 27 Apr 2026 13:55:08 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1294898.1571657; Mon, 27 Apr 2026 13: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 1wHMQV-0002Ci-QT; Mon, 27 Apr 2026 13:55:07 +0000
Received: by outflank-mailman (input) for mailman id 1294898;
 Mon, 27 Apr 2026 13:55:06 +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.19dcf3886cc000f373@swg.vates.tech>)
 id 1wHMQT-00025z-PO
 for xen-devel@lists.xenproject.org; Mon, 27 Apr 2026 13:55:05 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wHMQT-00E4x7-5v
 for xen-devel@lists.xenproject.org; Mon, 27 Apr 2026 15:55:05 +0200
Received: from [10.42.69.10] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1) (envelope-from
 <prod-mta-13.8631fc262581453bbf619ec5b2062170.19dcf3886cc000f373@swg.vates.tech>)
 id 69ef6ab7-bab6-0a2a0a5309dd-0a2a450acb66-18
 for <xen-devel@lists.xenproject.org>; Mon, 27 Apr 2026 15:55:05 +0200
Received: from [185.255.28.34] (helo=prod-mta-13.swg-srv.net)
 by tlsNG-4011c0.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.1)
 (envelope-from
 <prod-mta-13.8631fc262581453bbf619ec5b2062170.19dcf3886cc000f373@swg.vates.tech>)
 id 69ef6aa4-56b3-0a2a450a0019-b9ff1c22a053-11
 for <xen-devel@lists.xenproject.org>; Mon, 27 Apr 2026 15:55:05 +0200
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
 19dcf3886cc000f373.007 for <xen-devel@lists.xenproject.org>
 (version=TLSv1.3 cipher=TLS_AES_256_GCM_SHA384);
 Mon, 27 Apr 2026 13:54:41 +0000
Received: from julian.home (lfbn-lyo-1-414-55.w2-7.abo.wanadoo.fr [2.7.24.55])
 (Authenticated sender: julian.vetter@vates.tech)
 by mail2.vates.fr (Postfix) with ESMTPSA id E3A6B87720;
 Mon, 27 Apr 2026 15:54:40 +0200 (CEST)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@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=p+9OATvIj/CmW54/HXWskK4gEXXexqOmxFd4T2BcwBI=;
 h=from:subject:date:message-id:to:cc:mime-version:content-type:in-reply-to:references:feedback-id;
 b=RemcQgvYQXTSJZrI5SyVVKerGZZcTNulY8MgmmrR2ydLFFy5p74QkcAkngqTY4Iw3SbRYMZPf
 s8Xcj3bxVHgQ8mH37DGaxYRN4KNuYdFcq4fZH2b8j1H4CYhGfd4vHfkjM2xtj5KK4CRyi7nOm+b
 CiCa1f2icMPqGVItYh182mB33sQTPpjJMprjk4QS1UlIwgX5blEd7Q++on6OjNCt+x0uDOBQVrV
 2yGQWmth/m24NlbeW2x7opgC1DoKZlsQRGRTBsrOhvMpGz9HnVeUbfBUtcMVrTb8IHhQIMs5USL
 LB72WBhHci4MotF/gUZyAhYtau2zh0zOlxefB7HnGLdw==
X-Zone-Loop: b524d9d488a76f28a1974740f773b4e2db50bdbe555e
x-campaign-type: default
x-transaction-id: 9de87850-e808-416c-9a62-ec43452874a1
x-swg-uid: 01-c7f1319e-3d48-4a16-98aa-22b149f9a442
X-Mailer: Sweego
Message-ID:
 <1777298081.8631fc262581453bbf619ec5b2062170.19dcf3886cc000f373@vates.tech>
x-swg-bid: 1777298081.8631fc262581453bbf619ec5b2062170.19dcf3886cc000f373
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
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=20Pau=20Monn=C3=A9?= <roger.pau@citrix.com>,
	Stefano Stabellini <sstabellini@kernel.org>,
	Bertrand Marquis <bertrand.marquis@arm.com>,
	Volodymyr Babchuk <Volodymyr_Babchuk@epam.com>,
	Teddy Astie <teddy.astie@vates.tech>,
	Julian Vetter <julian.vetter@vates.tech>
Subject: [PATCH v4 8/9] hvm/ioreq: Negotiate extended destination ID support per ioreq server
Date: Mon, 27 Apr 2026 15:54:05 +0200
In-Reply-To: <20260427135406.1281424-1-julian.vetter@vates.tech>
References: <20260427135406.1281424-1-julian.vetter@vates.tech>
MIME-Version: 1.0
X-BM-Disclaimer: Yes
Content-Type: multipart/alternative; boundary="-=Part.297a.584af6cfdad57c37.19dcf388578.dac24e8c4e346718=-"
X-Bm-Milter-Handled: 4ffbd6c1-ee69-4e1b-aabd-f977039bd3e2
X-Bm-Transport-Timestamp: 1777298081144
X-purgate-ID: tlsNG-4011c0/1777298105-47D788B7-61B6E7A8/0/0
X-purgate-type: clean
X-purgate-size: 19021

---=Part.297a.584af6cfdad57c37.19dcf388578.dac24e8c4e346718=-
Content-Type: text/plain; charset=utf-8
Content-Transfer-Encoding: quoted-printable

Add a per-server capability flag in XEN_DMOP_create_ioreq_server to
signal extended destination ID support=2E Repurpose the first byte of the
existing pad[3] as a flags field, and define
XEN_DMOP_IOREQ_SERVER_EXT_DEST_ID (bit 0) for a server to signal it will
use XEN_DMOP_bind_pt_msi_irq for all passthrough MSI bindings=2E

Track the flag in struct ioreq_server ext_dest_id=2E
hvm_ext_dest_id_enabled() returns true only if all registered ioreq
servers have opted in and at least one server is present=2E A single
server without the flag is sufficient to suppress the feature=2E

Lock the feature at domain creation time:
arch_domain_creation_finished() computes the levelled result into struct
hvm_domain=2Eext_dest_id using OR to preserve any value previously
restored from an HVM save record=2E After creation_finished,
arch_ioreq_server_create_check() rejects new servers that lack
XEN_DMOP_IOREQ_SERVER_EXT_DEST_ID if the feature was already advertised
to the guest=2E

Persist the locked state in a new HVM_SAVE_TYPE(EXT_DEST_ID) record so
that migration preserves the guest-visible CPUID bit independently of
when the device model re-registers its ioreq servers on the destination
host=2E

On restore, ioapic_check() uses d->arch=2Ehvm=2Eext_dest_id (restored from
the EXT_DEST_ID record) rather than the per-server dynamic check, since
the DM has not yet re-registered its servers at that point=2E

Update xendevicemodel_create_ioreq_server() in libxendevicemodel to
accept the new flags parameter, remove
xendevicemodel_enable_ext_dest_id(), and fix the
xc_hvm_create_ioreq_server() compat wrapper to pass zero flags=2E

Signed-off-by: Julian Vetter <julian=2Evetter@vates=2Etech>
---
Changes in v4:
- As suggested by Roger, replaced XEN_DMOP_enable_ext_dest_id (v3 patch
  6), a separate DM op the device model had to call before starting
  vCPUs, with a flags byte repurposed from the existing pad[3] field of
  xen_dm_op_create_ioreq_server
- New XEN_DMOP_IOREQ_SERVER_EXT_DEST_ID flag (bit 0) lets each ioreq
  server signal support at registration time
- As suggested by Roger level the feature across all ioreq servers=2E
  XEN_HVM_CPUID_EXT_DEST_ID is only advertised when every server
  registered before arch_domain_creation_finished() sets the flag=2E A
  single server without the flag suppresses the feature for the whole
  domain!
- Lock the levelled result at domain creation time and enforce it for
  servers registered afterwards, preventing a late opt-out from breaking
  guests that already see the feature in CPUID
- Persist the locked flag via HVM_SAVE_TYPE(EXT_DEST_ID) so that live
  migration preserves the guest-visible CPUID bit independently of when
  the device model registers its ioreq servers on the destination host
---
 tools/include/xendevicemodel=2Eh          |  3 +-
 tools/libs/ctrl/xc_devicemodel_compat=2Ec |  2 +-
 tools/libs/devicemodel/core=2Ec           |  3 +-
 xen/arch/arm/ioreq=2Ec                    |  5 ++++
 xen/arch/x86/domain=2Ec                   | 10 +++++++
 xen/arch/x86/hvm/ioreq=2Ec                | 37 +++++++++++++++++++++++++
 xen/arch/x86/hvm/vioapic=2Ec              | 20 +++++++++++++
 xen/arch/x86/include/asm/hvm/domain=2Eh   |  9 ++++++
 xen/common/ioreq=2Ec                      | 13 +++++++--
 xen/drivers/passthrough/x86/hvm=2Ec       | 13 +++++++++
 xen/include/public/arch-x86/hvm/save=2Eh  | 17 +++++++++++-
 xen/include/public/hvm/dm_op=2Eh          | 16 +++++++++--
 xen/include/xen/ioreq=2Eh                 | 27 ++++++++++++++++++
 13 files changed, 165 insertions(+), 10 deletions(-)

diff --git a/tools/include/xendevicemodel=2Eh b/tools/include/xendevicemod=
el=2Eh
index f15b35fa33=2E=2Ebc6764bd58 100644
--- a/tools/include/xendevicemodel=2Eh
+++ b/tools/include/xendevicemodel=2Eh
@@ -44,12 +44,13 @@ int xendevicemodel_close(xendevicemodel_handle *dmod);
  * @parm domid the domain id to be serviced
  * @parm handle_bufioreq how should the IOREQ Server handle buffered
  *                       requests (HVM_IOREQSRV_BUFIOREQ_*)?
+ * @parm flags bitmask of XEN_DMOP_IOREQ_SERVER_* capability flags=2E
  * @parm id pointer to an ioservid_t to receive the IOREQ Server id=2E
  * @return 0 on success, -1 on failure=2E
  */
 int xendevicemodel_create_ioreq_server(
     xendevicemodel_handle *dmod, domid_t domid, int handle_bufioreq,
-    ioservid_t *id);
+    uint8_t flags, ioservid_t *id);
=20
 /**
  * This function retrieves the necessary information to allow an
diff --git a/tools/libs/ctrl/xc_devicemodel_compat=2Ec b/tools/libs/ctrl/x=
c_devicemodel_compat=2Ec
index a46011cd17=2E=2E91366e250c 100644
--- a/tools/libs/ctrl/xc_devicemodel_compat=2Ec
+++ b/tools/libs/ctrl/xc_devicemodel_compat=2Ec
@@ -11,7 +11,7 @@ int xc_hvm_create_ioreq_server(
     ioservid_t *id)
 {
     return xendevicemodel_create_ioreq_server(xch->dmod, domid,
-                                              handle_bufioreq, id);
+                                              handle_bufioreq, 0, id);
 }
=20
 int xc_hvm_get_ioreq_server_info(
diff --git a/tools/libs/devicemodel/core=2Ec b/tools/libs/devicemodel/core=
=2Ec
index adf2c41a96=2E=2E49b9bf8a13 100644
--- a/tools/libs/devicemodel/core=2Ec
+++ b/tools/libs/devicemodel/core=2Ec
@@ -167,7 +167,7 @@ static int xendevicemodel_op(
=20
 int xendevicemodel_create_ioreq_server(
     xendevicemodel_handle *dmod, domid_t domid, int handle_bufioreq,
-    ioservid_t *id)
+    uint8_t flags, ioservid_t *id)
 {
     struct xen_dm_op op;
     struct xen_dm_op_create_ioreq_server *data;
@@ -179,6 +179,7 @@ int xendevicemodel_create_ioreq_server(
     data =3D &op=2Eu=2Ecreate_ioreq_server;
=20
     data->handle_bufioreq =3D handle_bufioreq;
+    data->flags =3D flags;
=20
     rc =3D xendevicemodel_op(dmod, domid, 1, &op, sizeof(op));
     if (rc)
diff --git a/xen/arch/arm/ioreq=2Ec b/xen/arch/arm/ioreq=2Ec
index b4211f0159=2E=2Ed45228717a 100644
--- a/xen/arch/arm/ioreq=2Ec
+++ b/xen/arch/arm/ioreq=2Ec
@@ -201,6 +201,11 @@ void arch_ioreq_domain_init(struct domain *d)
 {
 }
=20
+int arch_ioreq_server_create_check(const struct domain *d, uint8_t flags)
+{
+    return 0;
+}
+
 /*
  * Local variables:
  * mode: C
diff --git a/xen/arch/x86/domain=2Ec b/xen/arch/x86/domain=2Ec
index 1d458f1372=2E=2E68ff315460 100644
--- a/xen/arch/x86/domain=2Ec
+++ b/xen/arch/x86/domain=2Ec
@@ -25,6 +25,7 @@
 #include <xen/init=2Eh>
 #include <xen/iocap=2Eh>
 #include <xen/iommu=2Eh>
+#include <xen/ioreq=2Eh>
 #include <xen/irq=2Eh>
 #include <xen/kernel=2Eh>
 #include <xen/lib=2Eh>
@@ -1106,7 +1107,16 @@ int arch_domain_soft_reset(struct domain *d)
 void arch_domain_creation_finished(struct domain *d)
 {
     if ( is_hvm_domain(d) )
+    {
+        /*
+         * Lock the extended destination ID state=2E OR preserves any val=
ue
+         * already restored from an HVM save record (migration path)=2E F=
or a
+         * fresh domain, ext_dest_id starts false and the dynamic check
+         * supplies the levelled result across all registered ioreq serve=
rs=2E
+         */
+        d->arch=2Ehvm=2Eext_dest_id |=3D hvm_ext_dest_id_enabled(d);
         hvm_domain_creation_finished(d);
+    }
 }
=20
 #ifdef CONFIG_COMPAT
diff --git a/xen/arch/x86/hvm/ioreq=2Ec b/xen/arch/x86/hvm/ioreq=2Ec
index a5fa97e149=2E=2E894a63c522 100644
--- a/xen/arch/x86/hvm/ioreq=2Ec
+++ b/xen/arch/x86/hvm/ioreq=2Ec
@@ -19,6 +19,7 @@
=20
 #include <asm/hvm/emulate=2Eh>
 #include <asm/hvm/hvm=2Eh>
+#include <asm/hvm/support=2Eh>
 #include <asm/hvm/vmx/vmx=2Eh>
 #include <asm/msr=2Eh>
=20
@@ -325,6 +326,42 @@ void arch_ioreq_domain_init(struct domain *d)
     register_portio_handler(d, 0xcf8, 4, hvm_access_cf8);
 }
=20
+int arch_ioreq_server_create_check(const struct domain *d, uint8_t flags)
+{
+    if ( !is_hvm_domain(d) || !d->creation_finished )
+        return 0;
+
+    if ( d->arch=2Ehvm=2Eext_dest_id &&
+         !(flags & XEN_DMOP_IOREQ_SERVER_EXT_DEST_ID) )
+        return -EPERM;
+
+    return 0;
+}
+
+static int cf_check ext_dest_id_save(struct vcpu *v, hvm_domain_context_t=
 *h)
+{
+    struct hvm_hw_ext_dest_id s =3D {
+        =2Eenabled =3D v->domain->arch=2Ehvm=2Eext_dest_id,
+    };
+
+    return hvm_save_entry(EXT_DEST_ID, 0, h, &s);
+}
+
+static int cf_check ext_dest_id_load(struct domain *d, hvm_domain_context=
_t *h)
+{
+    struct hvm_hw_ext_dest_id s;
+
+    if ( hvm_load_entry(EXT_DEST_ID, h, &s) )
+        return -EINVAL;
+
+    d->arch=2Ehvm=2Eext_dest_id =3D s=2Eenabled;
+
+    return 0;
+}
+
+HVM_REGISTER_SAVE_RESTORE(EXT_DEST_ID, ext_dest_id_save, NULL,
+                          ext_dest_id_load, 1, HVMSR_PER_DOM);
+
 /*
  * Local variables:
  * mode: C
diff --git a/xen/arch/x86/hvm/vioapic=2Ec b/xen/arch/x86/hvm/vioapic=2Ec
index 527cc770b7=2E=2E7d037a53e1 100644
--- a/xen/arch/x86/hvm/vioapic=2Ec
+++ b/xen/arch/x86/hvm/vioapic=2Ec
@@ -24,6 +24,7 @@
  *  Ported to xen by using virtual IRQ line=2E
  */
=20
+#include <xen/ioreq=2Eh>
 #include <xen/types=2Eh>
 #include <xen/mm=2Eh>
 #include <xen/xmalloc=2Eh>
@@ -597,6 +598,7 @@ int vioapic_get_trigger_mode(const struct domain *d, u=
nsigned int gsi)
 static int cf_check ioapic_check(const struct domain *d, hvm_domain_conte=
xt_t *h)
 {
     const HVM_SAVE_TYPE(IOAPIC) *s;
+    unsigned int i;
=20
     if ( !has_vioapic(d) )
         return -ENODEV;
@@ -617,6 +619,24 @@ static int cf_check ioapic_check(const struct domain =
*d, hvm_domain_context_t *h
     if ( s->ioregsel > VIOAPIC_REG_RTE0 + (ARRAY_SIZE(s->redirtbl) - 1) *=
 2 + 1 )
         return -EINVAL;
=20
+    /*
+     * If any RTE uses extended destination ID bits, the EXT_DEST_ID save
+     * record must have been loaded first (restoring d->arch=2Ehvm=2Eext_=
dest_id)=2E
+     * The ioreq server re-registration by the DM happens later, so use t=
he
+     * domain-level locked flag rather than the per-server dynamic check=
=2E
+     */
+    for ( i =3D 0; i < ARRAY_SIZE(s->redirtbl); i++ )
+    {
+        if ( s->redirtbl[i]=2Efields=2Eext_dest_id && !d->arch=2Ehvm=2Eex=
t_dest_id )
+        {
+            printk(XENLOG_G_ERR "HVM restore: %pd IO-APIC RTE %u has "
+                                "extended destination ID bits set but "
+                                "EXT_DEST_ID is not enabled\n",
+                                d, i);
+            return -EINVAL;
+        }
+    }
+
     return 0;
 }
=20
diff --git a/xen/arch/x86/include/asm/hvm/domain=2Eh b/xen/arch/x86/includ=
e/asm/hvm/domain=2Eh
index abf9bc448d=2E=2E895b2e12ba 100644
--- a/xen/arch/x86/include/asm/hvm/domain=2Eh
+++ b/xen/arch/x86/include/asm/hvm/domain=2Eh
@@ -102,6 +102,15 @@ struct hvm_domain {
=20
     bool                   is_s3_suspended;
=20
+    /*
+     * True when XEN_HVM_CPUID_EXT_DEST_ID was advertised to the guest=2E=
 Locked
+     * at domain creation time once every registered ioreq server has opt=
ed in
+     * via XEN_DMOP_IOREQ_SERVER_EXT_DEST_ID=2E Persisted in HVM save/res=
tore so
+     * migration preserves the guest-visible state independently of when =
the
+     * device model re-registers its ioreq servers on the destination hos=
t=2E
+     */
+    bool                   ext_dest_id;
+
     /* Compatibility setting for a bug in x2APIC LDR */
     bool bug_x2apic_ldr_vcpu_id;
=20
diff --git a/xen/common/ioreq=2Ec b/xen/common/ioreq=2Ec
index f5fd30ce12=2E=2E56a7eb8282 100644
--- a/xen/common/ioreq=2Ec
+++ b/xen/common/ioreq=2Ec
@@ -641,7 +641,7 @@ static void ioreq_server_deinit(struct ioreq_server *s=
)
 }
=20
 static int ioreq_server_create(struct domain *d, int bufioreq_handling,
-                               ioservid_t *id)
+                               uint8_t flags, ioservid_t *id)
 {
     struct ioreq_server *s;
     unsigned int i;
@@ -683,6 +683,8 @@ static int ioreq_server_create(struct domain *d, int b=
ufioreq_handling,
         goto fail;
     }
=20
+    s->ext_dest_id =3D flags & XEN_DMOP_IOREQ_SERVER_EXT_DEST_ID;
+
     if ( id )
         *id =3D i;
=20
@@ -1350,11 +1352,16 @@ int ioreq_server_dm_op(struct xen_dm_op *op, struc=
t domain *d, bool *const_op)
         *const_op =3D false;
=20
         rc =3D -EINVAL;
-        if ( data->pad[0] || data->pad[1] || data->pad[2] )
+        if ( data->flags & ~XEN_DMOP_IOREQ_SERVER_EXT_DEST_ID ||
+             data->pad[0] || data->pad[1] )
+            break;
+
+        rc =3D arch_ioreq_server_create_check(d, data->flags);
+        if ( rc )
             break;
=20
         rc =3D ioreq_server_create(d, data->handle_bufioreq,
-                                 &data->id);
+                                 data->flags, &data->id);
         break;
     }
=20
diff --git a/xen/drivers/passthrough/x86/hvm=2Ec b/xen/drivers/passthrough=
/x86/hvm=2Ec
index 6fb4f8b7dc=2E=2Ef7f7c02076 100644
--- a/xen/drivers/passthrough/x86/hvm=2Ec
+++ b/xen/drivers/passthrough/x86/hvm=2Ec
@@ -21,6 +21,7 @@
 #include <xen/event=2Eh>
 #include <xen/iommu=2Eh>
 #include <xen/cpu=2Eh>
+#include <xen/ioreq=2Eh>
 #include <xen/irq=2Eh>
 #include <asm/hvm/irq=2Eh>
 #include <asm/io_apic=2Eh>
@@ -455,6 +456,18 @@ int pt_irq_create_bind(
         uint64_t msi_addr;
         uint32_t msi_data;
=20
+        /*
+         * Refuse the old MSI bind path when extended destination IDs are
+         * in use=2E The caller must use XEN_DMOP_bind_pt_msi_irq instead=
,
+         * which passes the raw MSI address so Xen can decode the extende=
d
+         * bits=2E This old path only carries an 8-bit destination ID and
+         * would silently misroute interrupts to vCPUs with APIC IDs > 25=
5=2E
+         */
+        if ( hvm_ext_dest_id_enabled(d) )
+        {
+            return -EPERM;
+        }
+
         msi_addr =3D MSI_ADDR_HEADER |
                    MASK_INSR(MASK_EXTR(gflags, XEN_DOMCTL_VMSI_X86_DEST_I=
D_MASK),
                              MSI_ADDR_DEST_ID_MASK) |
diff --git a/xen/include/public/arch-x86/hvm/save=2Eh b/xen/include/public=
/arch-x86/hvm/save=2Eh
index 483097d940=2E=2Edd70ce18c6 100644
--- a/xen/include/public/arch-x86/hvm/save=2Eh
+++ b/xen/include/public/arch-x86/hvm/save=2Eh
@@ -627,12 +627,27 @@ struct hvm_msr {
=20
 #define CPU_MSR_CODE  20
=20
+/*
+ * HVM_SAVE_TYPE(EXT_DEST_ID): domain-level extended MSI destination ID s=
tate=2E
+ *
+ * Records whether the extended destination ID feature was enabled for th=
is
+ * domain at the time guest vCPUs were started=2E This allows migration t=
o
+ * preserve the setting across hosts without relying on the device model =
to
+ * re-register its ioreq servers before the guest's first CPUID query=2E
+ */
+struct hvm_hw_ext_dest_id {
+    uint8_t enabled;
+    uint8_t pad[7];
+};
+
+DECLARE_HVM_SAVE_TYPE(EXT_DEST_ID, 21, struct hvm_hw_ext_dest_id);
+
 /* Range 22 - 34 (inclusive) reserved for Amazon */
=20
 /*
  * Largest type-code in use
  */
-#define HVM_SAVE_CODE_MAX 20
+#define HVM_SAVE_CODE_MAX 21
=20
 #endif /* __XEN_PUBLIC_HVM_SAVE_X86_H__ */
=20
diff --git a/xen/include/public/hvm/dm_op=2Eh b/xen/include/public/hvm/dm_=
op=2Eh
index 43571b7713=2E=2E73f33b3c46 100644
--- a/xen/include/public/hvm/dm_op=2Eh
+++ b/xen/include/public/hvm/dm_op=2Eh
@@ -39,18 +39,28 @@ typedef uint16_t ioservid_t;
  * XEN_DMOP_create_ioreq_server: Instantiate a new IOREQ Server for a
  *                               secondary emulator=2E
  *
- * The <id> handed back is unique for target domain=2E The valur of
+ * The <id> handed back is unique for target domain=2E The value of
  * <handle_bufioreq> should be one of HVM_IOREQSRV_BUFIOREQ_* defined in
- * hvm_op=2Eh=2E If the value is HVM_IOREQSRV_BUFIOREQ_OFF then  the buff=
ered
+ * hvm_op=2Eh=2E If the value is HVM_IOREQSRV_BUFIOREQ_OFF then the buffe=
red
  * ioreq ring will not be allocated and hence all emulation requests to
  * this server will be synchronous=2E
+ *
+ * If <flags> contains XEN_DMOP_IOREQ_SERVER_EXT_DEST_ID, the server will
+ * use XEN_DMOP_bind_pt_msi_irq for all passthrough MSI bindings, passing
+ * raw MSI address/data fields so Xen can decode extended destination ID
+ * bits=2E Once any server sets this flag, Xen will advertise
+ * XEN_HVM_CPUID_EXT_DEST_ID to the guest=2E Must be set before the guest
+ * vCPUs are started=2E
  */
 #define XEN_DMOP_create_ioreq_server 1
=20
 struct xen_dm_op_create_ioreq_server {
     /* IN - should server handle buffered ioreqs */
     uint8_t handle_bufioreq;
-    uint8_t pad[3];
+    /* IN - server capability flags */
+    uint8_t flags;
+#define XEN_DMOP_IOREQ_SERVER_EXT_DEST_ID (1u << 0)
+    uint8_t pad[2];
     /* OUT - server id */
     ioservid_t id;
 };
diff --git a/xen/include/xen/ioreq=2Eh b/xen/include/xen/ioreq=2Eh
index e86f0869fa=2E=2Eec78b63942 100644
--- a/xen/include/xen/ioreq=2Eh
+++ b/xen/include/xen/ioreq=2Eh
@@ -54,9 +54,35 @@ struct ioreq_server {
     evtchn_port_t          bufioreq_evtchn;
     struct rangeset        *range[NR_IO_RANGE_TYPES];
     bool                   enabled;
+    bool                   ext_dest_id;
     uint8_t                bufioreq_handling;
 };
=20
+/*
+ * Return true if every registered ioreq server has opted in to extended
+ * destination IDs (XEN_DMOP_IOREQ_SERVER_EXT_DEST_ID) and at least one
+ * server exists=2E A single server without the flag is enough to suppres=
s
+ * XEN_HVM_CPUID_EXT_DEST_ID, preventing misrouted interrupts=2E
+ */
+static inline bool hvm_ext_dest_id_enabled(const struct domain *d)
+{
+    unsigned int i;
+    bool found =3D false;
+
+    for ( i =3D 0; i < MAX_NR_IOREQ_SERVERS; i++ )
+    {
+        const struct ioreq_server *s =3D d->ioreq_server=2Eserver[i];
+
+        if ( !s )
+            continue;
+        if ( !s->ext_dest_id )
+            return false;
+        found =3D true;
+    }
+
+    return found;
+}
+
 static inline paddr_t ioreq_mmio_first_byte(const ioreq_t *p)
 {
     return unlikely(p->df) ?
@@ -137,6 +163,7 @@ bool arch_ioreq_server_destroy_all(struct domain *d);
 bool arch_ioreq_server_get_type_addr(const struct domain *d, const ioreq_=
t *p,
                                      uint8_t *type, uint64_t *addr);
 void arch_ioreq_domain_init(struct domain *d);
+int arch_ioreq_server_create_check(const struct domain *d, uint8_t flags)=
;
=20
 #endif /* __XEN_IOREQ_H__ */
=20
--=20
2=2E53=2E0



-- 
Julian Vetter | Vates Hypervisor & Kernel Developer

XCP-ng & Xen Orch=
estra - Vates solutions

web: https://vates=2Etech
---=Part.297a.584af6cfdad57c37.19dcf388578.dac24e8c4e346718=---


From xen-devel-bounces@lists.xenproject.org Mon Apr 27 13:55:09 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 27 Apr 2026 13:55:09 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1294901.1571666 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wHMQX-0002Z5-Jw; Mon, 27 Apr 2026 13:55:09 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1294901.1571666; Mon, 27 Apr 2026 13:55: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 1wHMQX-0002YI-Ds; Mon, 27 Apr 2026 13:55:09 +0000
Received: by outflank-mailman (input) for mailman id 1294901;
 Mon, 27 Apr 2026 13:55:08 +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.19dcf3888b2000f373@swg.vates.tech>)
 id 1wHMQW-0002F4-9t
 for xen-devel@lists.xenproject.org; Mon, 27 Apr 2026 13:55:08 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wHMQV-00E50B-MP
 for xen-devel@lists.xenproject.org; Mon, 27 Apr 2026 15:55:07 +0200
Received: from [10.42.69.10] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1) (envelope-from
 <prod-mta-13.8631fc262581453bbf619ec5b2062170.19dcf3888b2000f373@swg.vates.tech>)
 id 69ef6abb-bab6-0a2a0a5309dd-0a2a450acb6e-0
 for <xen-devel@lists.xenproject.org>; Mon, 27 Apr 2026 15:55:07 +0200
Received: from [185.255.28.34] (helo=prod-mta-13.swg-srv.net)
 by tlsNG-4011c0.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.1)
 (envelope-from
 <prod-mta-13.8631fc262581453bbf619ec5b2062170.19dcf3888b2000f373@swg.vates.tech>)
 id 69ef6aa4-56b3-0a2a450a0019-b9ff1c22a053-12
 for <xen-devel@lists.xenproject.org>; Mon, 27 Apr 2026 15:55:07 +0200
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
 19dcf3888b2000f373.007 for <xen-devel@lists.xenproject.org>
 (version=TLSv1.3 cipher=TLS_AES_256_GCM_SHA384);
 Mon, 27 Apr 2026 13:54:41 +0000
Received: from julian.home (lfbn-lyo-1-414-55.w2-7.abo.wanadoo.fr [2.7.24.55])
 (Authenticated sender: julian.vetter@vates.tech)
 by mail2.vates.fr (Postfix) with ESMTPSA id 3D9FE8778D;
 Mon, 27 Apr 2026 15:54:41 +0200 (CEST)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@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=cFmZgDov6GQgQw+msTvbp/qJT36OB/1WX31cUGs/5u4=;
 h=from:subject:date:message-id:to:cc:mime-version:content-type:in-reply-to:references:feedback-id;
 b=pqFNpNBc07KVabu+s5g0EKJTcksP4bZdyHw5YLPIOGJvp4OveJmEmzA4mHMTNjI03yTBMDsNh
 NXIsVVO0EBwy88HokqacJoDeyJfU2ZhD9g5GGEw2Sr2tDNHojZlQ9oyJfk5AaR03Q4JlJhaNLqY
 jEHz/IcdTfk35TK4FWvmb7iqmqu19xg84MReEdvYQUngfuX7dX1WTtMNXtNcybcdXM7MjkFPv6/
 qpICBojmqwf1y344US+VMRpAmZFoob5onJVCBlH5g8vCNjBswq8Hza7kWfq1GPx889oqoSFzYsV
 JU/I7IU0UGxKSyjExdlMXGdN7uEaBuxzAMt5dtDEbFUg==
X-Zone-Loop: c197ce6d03032c6b3b21ca6b49b3eb05cfcbee729867
x-campaign-type: default
x-transaction-id: ccb19691-937d-4725-b0a4-113534b93343
x-swg-uid: 01-7472ba69-a9a1-4f87-a86a-6ab5022a5d8a
X-Mailer: Sweego
Message-ID:
 <1777298082.8631fc262581453bbf619ec5b2062170.19dcf3888b2000f373@vates.tech>
x-swg-bid: 1777298082.8631fc262581453bbf619ec5b2062170.19dcf3888b2000f373
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
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=20Pau=20Monn=C3=A9?= <roger.pau@citrix.com>,
	Stefano Stabellini <sstabellini@kernel.org>,
	Bertrand Marquis <bertrand.marquis@arm.com>,
	Volodymyr Babchuk <Volodymyr_Babchuk@epam.com>,
	Teddy Astie <teddy.astie@vates.tech>,
	Julian Vetter <julian.vetter@vates.tech>
Subject: [PATCH v4 9/9] x86/cpuid: Advertise XEN_HVM_CPUID_EXT_DEST_ID when device model opts in
Date: Mon, 27 Apr 2026 15:54:06 +0200
In-Reply-To: <20260427135406.1281424-1-julian.vetter@vates.tech>
References: <20260427135406.1281424-1-julian.vetter@vates.tech>
MIME-Version: 1.0
X-BM-Disclaimer: Yes
Content-Type: multipart/alternative; boundary="-=Part.297b.fbc1bfd9f0ae3bc.19dcf3886b4.b9ec472d3f1c7cf3=-"
X-Bm-Milter-Handled: 4ffbd6c1-ee69-4e1b-aabd-f977039bd3e2
X-Bm-Transport-Timestamp: 1777298081460
X-purgate-ID: tlsNG-4011c0/1777298107-819868B7-9B2F6A6C/0/0
X-purgate-type: clean
X-purgate-size: 3537

---=Part.297b.fbc1bfd9f0ae3bc.19dcf3886b4.b9ec472d3f1c7cf3=-
Content-Type: text/plain; charset=utf-8
Content-Transfer-Encoding: quoted-printable

Set the XEN_HVM_CPUID_EXT_DEST_ID bit in the HVM hypervisor CPUID leaf
based on the domain-level ext_dest_id flag, which is locked at domain
creation time by taking the AND across all registered ioreq servers that
set XEN_DMOP_IOREQ_SERVER_EXT_DEST_ID=2E This guarantees that the bit is
only advertised when every active device model will use
XEN_DMOP_bind_pt_msi_irq for passthrough MSIs, so Xen can decode the
extended destination bits from the raw MSI address internally=2E

After creation_finished the locked d->arch=2Ehvm=2Eext_dest_id is used
directly, providing a stable and migration-safe value independent of
whether ioreq servers have been re-registered yet=2E Before
creation_finished the dynamic per-server check is used so toolstack
queries during domain setup reflect the current state=2E

An old device model that never sets XEN_DMOP_IOREQ_SERVER_EXT_DEST_ID
will keep the bit clear, preserving backwards compatibility with guests
that only use 8-bit APIC destination IDs=2E A device model that opts in
enables support for x2APIC destination IDs above 255=2E

Signed-off-by: Julian Vetter <julian=2Evetter@vates=2Etech>
---
Changes in v4:
- Corresponds to v3 patch 7, updated for the new negotiation mechanism
  introduced in patch 8=2E The bit now reflects the levelled result
  computed at arch_domain_creation_finished()
    - Before creation_finished(): the dynamic hvm_ext_dest_id_enabled()
      check is used (so toolstack CPUID queries during domain setup see
      the current state)
    - After creation_finished(): the locked d->arch=2Ehvm=2Eext_dest_id is=
 used
      directly for migration-safe value that does not depend
      on whether ioreq servers have been re-registered on the
      destination host yet
---
 xen/arch/x86/cpuid=2Ec | 13 +++++++++++++
 1 file changed, 13 insertions(+)

diff --git a/xen/arch/x86/cpuid=2Ec b/xen/arch/x86/cpuid=2Ec
index 6e9b15c9c3=2E=2E828aaa9f5b 100644
--- a/xen/arch/x86/cpuid=2Ec
+++ b/xen/arch/x86/cpuid=2Ec
@@ -1,3 +1,4 @@
+#include <xen/ioreq=2Eh>
 #include <xen/sched=2Eh>
 #include <xen/types=2Eh>
 #include <xen/version=2Eh>
@@ -148,6 +149,18 @@ static void cpuid_hypervisor_leaves(const struct vcpu=
 *v, uint32_t leaf,
         res->a |=3D XEN_HVM_CPUID_DOMID_PRESENT;
         res->c =3D d->domain_id;
=20
+        /*
+         * Advertise extended destination ID support=2E Once domain creat=
ion has
+         * finished the locked domain flag is authoritative (ensuring a
+         * consistent view across migration, before the device model
+         * re-registers its ioreq servers on the destination)=2E Before
+         * creation_finished the dynamic per-server check is used so that
+         * toolstack queries during domain setup reflect the current stat=
e=2E
+         */
+        if ( d->creation_finished ? d->arch=2Ehvm=2Eext_dest_id
+                                  : hvm_ext_dest_id_enabled(d) )
+            res->a |=3D XEN_HVM_CPUID_EXT_DEST_ID;
+
         /*
          * Per-vCPU event channel upcalls are implemented and work
          * correctly with PIRQs routed over event channels=2E
--=20
2=2E53=2E0



-- 
Julian Vetter | Vates Hypervisor & Kernel Developer

XCP-ng & Xen Orch=
estra - Vates solutions

web: https://vates=2Etech
---=Part.297b.fbc1bfd9f0ae3bc.19dcf3886b4.b9ec472d3f1c7cf3=---


From xen-devel-bounces@lists.xenproject.org Mon Apr 27 14:03:10 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 27 Apr 2026 14:03:10 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1294968.1571676 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wHMY4-0006mv-El; Mon, 27 Apr 2026 14:02:56 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1294968.1571676; Mon, 27 Apr 2026 14:02: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 1wHMY4-0006mn-AL; Mon, 27 Apr 2026 14:02:56 +0000
Received: by outflank-mailman (input) for mailman id 1294968;
 Mon, 27 Apr 2026 14:02:55 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <Luca.Fancellu@arm.com>) id 1wHMY2-0006mh-MA
 for xen-devel@lists.xenproject.org; Mon, 27 Apr 2026 14:02:55 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wHMY1-008rv7-VI
 for xen-devel@lists.xenproject.org; Mon, 27 Apr 2026 16:02:53 +0200
Received: from [10.42.69.5] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <Luca.Fancellu@arm.com>)
 id 69ef6c81-bab6-0a2a0a5309dd-0a2a4505ae5c-32
 for <xen-devel@lists.xenproject.org>; Mon, 27 Apr 2026 16:02:52 +0200
Received: from [52.101.69.38]
 (helo=AM0PR83CU005.outbound.protection.outlook.com)
 by tlsNG-c201ff.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.1)
 (envelope-from <Luca.Fancellu@arm.com>)
 id 69ef6c8c-aaa8-0a2a45050019-346545266f32-3
 for <xen-devel@lists.xenproject.org>; Mon, 27 Apr 2026 16:02:52 +0200
Received: from AM9P195CA0025.EURP195.PROD.OUTLOOK.COM (2603:10a6:20b:21f::30)
 by FRZPR08MB11874.eurprd08.prod.outlook.com (2603:10a6:d10:1cc::8)
 with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9846.26; Mon, 27 Apr
 2026 14:02:49 +0000
Received: from AMS0EPF00000190.eurprd05.prod.outlook.com
 (2603:10a6:20b:21f:cafe::ac) by AM9P195CA0025.outlook.office365.com
 (2603:10a6:20b:21f::30) with Microsoft SMTP Server (version=TLS1_3,
 cipher=TLS_AES_256_GCM_SHA384) id 15.20.9846.26 via Frontend Transport; Mon,
 27 Apr 2026 14:02:49 +0000
Received: from outbound-uk1.az.dlp.m.darktrace.com (4.158.2.129) by
 AMS0EPF00000190.mail.protection.outlook.com (10.167.16.213) with Microsoft
 SMTP Server (version=TLS1_3, cipher=TLS_AES_256_GCM_SHA384) id 15.20.9846.18
 via Frontend Transport; Mon, 27 Apr 2026 14:02:49 +0000
Received: from DU2PR08MB7272.eurprd08.prod.outlook.com (2603:10a6:10:2d7::16)
 by AMCPR08MB11993.eurprd08.prod.outlook.com (2603:10a6:20b:770::15)
 with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9846.26; Mon, 27 Apr
 2026 14:01:47 +0000
Received: from DU2PR08MB7272.eurprd08.prod.outlook.com
 ([fe80::5d34:206f:373:a323]) by DU2PR08MB7272.eurprd08.prod.outlook.com
 ([fe80::5d34:206f:373:a323%6]) with mapi id 15.20.9846.025; Mon, 27 Apr 2026
 14:01: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=arm.com header.i="@arm.com" header.h="From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck"; dkim=pass header.s=selector1 header.d=arm.com header.i="@arm.com" header.h="From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck"
ARC-Seal: i=2; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=pass;
 b=Ua7UmduAnPoviMK8B11Fv8VKXz97QNZ0CuFKakKEX895ZOiurPRfSTphu5K9CcT8bE/qSxRL3pHtUEWvD4bVJGEiQN+Oc82vXP924l+NWtNa+z050IgPGcSNasLWjWn4z4ehag05U7eMqKaBeKM6p92nNQaa8mD5KC+oZn7/w5azEdk98LP7cmxu2uYDxFWHbNd2osDOrhPluqrrHhliGdnFWQD5Dcfe0J603UJLbnacg+EegVLbFSU90C7xdXhffvMF2ybUZYSPfov0d6ZVkiD1Ru7hckrWQSEZpd5sB+1Xdvg+COTYSsTrXQyMUNHaRzEt0urSxjmAfx//Xh9ZZQ==
ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com;
 s=arcselector10001;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1;
 bh=YcxltaSz8v20VzeeDOwg6Nk5OYGWs/xSbBDt0JMWyv0=;
 b=J3llXNLRLsZP0Qo7F7vZc5uvHvPwizyFoYe35gU0AYLSTC57+wtHRy+4cz7TEe4VvrNTH9Lg7ETt3PQkSEvAffkxqa6qRG9KPlfXVEQZWhzJf8LJ9I/CN98HjAM+AEe5oLiXucAszVbhhWYTcII0saRSEf0Ny9+lLReW4wQ3GCpHx3GlIpe0OfLz+2saD7/7rSWGyjF1JSVeIEpUkRcovGWT910n9GHx4+j4x9Phb/gRswX4mPZPXbeXSO7H7pcXSG6zYdEUHPlH+2WswkwwRtzus2GoN8t2cidkZ+1ZnOG/Ck5GhPC16SmMUSdpmdYQPixE7W4zEspJck2N/V4AKQ==
ARC-Authentication-Results: i=2; mx.microsoft.com 1; spf=pass (sender ip is
 4.158.2.129) smtp.rcpttodomain=gmail.com smtp.mailfrom=arm.com; dmarc=pass
 (p=none sp=none pct=100) action=none header.from=arm.com; dkim=pass
 (signature was verified) header.d=arm.com; arc=pass (0 oda=1 ltdi=1
 spf=[1,1,smtp.mailfrom=arm.com] dkim=[1,1,header.d=arm.com]
 dmarc=[1,1,header.from=arm.com])
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=arm.com; s=selector1;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck;
 bh=YcxltaSz8v20VzeeDOwg6Nk5OYGWs/xSbBDt0JMWyv0=;
 b=UD1pNrwsMGCZaa9bBIQhOGIkC8OAerBKMcV6c4tbeAuqYclCzooy3gd9pYPrNOzqlgYUCdVy/rF/WFIo/qqPAhbWQmFeNCttWrsWFmYOcoDfP3ZXN5UdAYvTNZhenrSv5dh8soaZ49ZvY01ETAnxi/9sB1Q0GOT37zMsPwNhgUA=
X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 4.158.2.129)
 smtp.mailfrom=arm.com; dkim=pass (signature was verified)
 header.d=arm.com;dmarc=pass action=none header.from=arm.com;
Received-SPF: Pass (protection.outlook.com: domain of arm.com designates
 4.158.2.129 as permitted sender) receiver=protection.outlook.com;
 client-ip=4.158.2.129; helo=outbound-uk1.az.dlp.m.darktrace.com; pr=C
ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none;
 b=c8G8M56Y3UGUFCAvNWVthYKB3bfWKNKDPIj+gVH1KZBwhL4LdqZc+wvzDHCmthlg8je+2TgdJpz2TrK9Bwk+vb7Mwvp5Wsm+KAW+dueOO4yQENrnBoFst7NjGQBLnjNJWn9vvWAeG9Sm0PBFnC0G2ifkzQFWktxm5BCGVnM3DDEqjNM9g9JgGvipwNAUp28jXYqvdjY3SUsqAqTG+fQnaJHIanqaqspd7JK2C+oxnAQpCo3ZWWkVtYvpIYfKrmKFtta1WyX2fiT3giT59gg2Md0KtywbOodiNq6PKgmVarMqS2TX7CCP75clOje9KJfqgerV9W2RLpBHNIPS3VCCew==
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com;
 s=arcselector10001;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1;
 bh=YcxltaSz8v20VzeeDOwg6Nk5OYGWs/xSbBDt0JMWyv0=;
 b=ObFS3xpVzb7JgTfjhZNLbTX9pKEJHiGG+GzZc7h9zaHRJ9l2XWwPcEOPclk2BndL9hrE4M1HGcouVA3RkT5oiG4uaUquX5ZY7cvsNhEG1vPVyc8/AkI58wcycRB7liV5YBApit5vQYQMv3cJfz79vfcPqwn5r3Ui4bomFz5m/+toIcM7DCa268lz4NecMY0LmEHGIg5NDF9Tu/d9i2ZNghLyf7CVd9aDC5LogDmkT66I58uD7X+ZdLxuqHq8J5yQcM0bfyNNjWy6RvZrqiHKFYMBgcop1waojvU6aLroPXrb9pVBOYC2kkgPgwOEZWZA5ihe+q3wRbOdPXM8ZFC5og==
ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass
 smtp.mailfrom=arm.com; dmarc=pass action=none header.from=arm.com; dkim=pass
 header.d=arm.com; arc=none
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=arm.com; s=selector1;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck;
 bh=YcxltaSz8v20VzeeDOwg6Nk5OYGWs/xSbBDt0JMWyv0=;
 b=UD1pNrwsMGCZaa9bBIQhOGIkC8OAerBKMcV6c4tbeAuqYclCzooy3gd9pYPrNOzqlgYUCdVy/rF/WFIo/qqPAhbWQmFeNCttWrsWFmYOcoDfP3ZXN5UdAYvTNZhenrSv5dh8soaZ49ZvY01ETAnxi/9sB1Q0GOT37zMsPwNhgUA=
From: Luca Fancellu <Luca.Fancellu@arm.com>
To: Mykola Kvach <xakep.amatop@gmail.com>
CC: "xen-devel@lists.xenproject.org" <xen-devel@lists.xenproject.org>, Mykola
 Kvach <mykola_kvach@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>
Subject: Re: [PATCH v8 09/13] arm/smmu-v3: add suspend/resume handlers
Thread-Topic: [PATCH v8 09/13] arm/smmu-v3: add suspend/resume handlers
Thread-Index: AQHc1k5QBMsvUkAtf0yXvEOre8XAaw==
Date: Mon, 27 Apr 2026 14:01:47 +0000
Message-ID: <818AEE8A-669C-4BE9-9EF3-92323A749470@arm.com>
References: <cover.1775125380.git.mykola_kvach@epam.com>
 <038337ec0e3f1474c6cc6a92090e28c6972e4dc6.1775125380.git.mykola_kvach@epam.com>
In-Reply-To:
 <038337ec0e3f1474c6cc6a92090e28c6972e4dc6.1775125380.git.mykola_kvach@epam.com>
Accept-Language: en-GB, en-US
Content-Language: en-US
X-MS-Has-Attach:
X-MS-TNEF-Correlator:
x-mailer: Apple Mail (2.3826.700.81.1.6)
Authentication-Results-Original: dkim=none (message not signed)
 header.d=none;dmarc=none action=none header.from=arm.com;
x-ms-traffictypediagnostic:
	DU2PR08MB7272:EE_|AMCPR08MB11993:EE_|AMS0EPF00000190:EE_|FRZPR08MB11874:EE_
X-MS-Office365-Filtering-Correlation-Id: e6ea296f-acd5-4fe8-e4d8-08dea465aaa1
x-checkrecipientrouted: true
nodisclaimer: true
X-MS-Exchange-SenderADCheck: 1
X-MS-Exchange-AntiSpam-Relay: 0
X-Microsoft-Antispam-Untrusted:
 BCL:0;ARA:13230040|366016|1800799024|376014|18096099003|56012099003|18002099003|22082099003|38070700021;
X-Microsoft-Antispam-Message-Info-Original:
 dpbPw6PS3OciIBdwt/OelwEoGLWv+g1+xPpP5O20IJ+MdyewVMw7KA2+Wr3naAdJnF2MY8IV2Fusl1ErT3wR4q2ia8wrQlxujXYaDdHsectG3vXv6XmDm5IbOJb4lCmtT7e6cgiN6RVI3QOey/88e99V1JfJ/Ary4LqzfSL5q4dX5BBMY4vwhdt0uwUPfv4dyBNex3lLZpWtwSP9Qv1y6mU6Ihx3zcd5DC3sxFmv8PrpvWLDqYFmwtKrep9p1FpW1PVhbCXgQZeVjqrsWcV61ez29f70n8vv9JbuN9K8yJjs90cC2tbOve56ofSY4BHuKF0VMbZNk23UbkYDsMVHLoH2C9+1TiWFnbc24chVDb4+A0O9AqKFp057ujDb5DvbFK7gABoOMy502Pm1p1jf1avIb3ikqFx6SD8v2YU0rnQ38NSQUmtZ90UbHAoEcTmiqc1oAPn6d6b7drTXy/RZmkBx7zm63aWdzInoJTXIolvJFmhpv2VE+3z9TK4Z6TWH+jFH2XdJubYpKI999F0NKorzjr6CGU7QWGVf0WnN4URLUKexh/zV619zplPVn+rTCWgiTuh0L8GNYYXvLANLYs3uY5sfer3BC+L376xu0WvAjsnwKP/o1hYZZaeiyQq/jgfWrMastjrOzP2Wv50xVPq8lxEa5Z6IyE9ASk+v0g8Z+fOHxBci6lYNuz6/Vcmt6cseOPluBWlfzhqBH5YYmKzH6GEEeDyPiiqtC39RYN/TPC+1uAZ9VBAs2qZVyG3nPcAAXCO2wgPaW5UsX5n8lGcVUkQ1kDSxDXxS/1Hda5I=
X-Forefront-Antispam-Report-Untrusted:
 CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:DU2PR08MB7272.eurprd08.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(366016)(1800799024)(376014)(18096099003)(56012099003)(18002099003)(22082099003)(38070700021);DIR:OUT;SFP:1101;
Content-Type: text/plain; charset="utf-8"
Content-ID: <B9581F87DAE83B4C88EB9EEDF1DA9A32@eurprd08.prod.outlook.com>
Content-Transfer-Encoding: base64
MIME-Version: 1.0
X-Exchange-RoutingPolicyChecked:
 bSkd0uLGWD0O2vUkRBLtSu43Pujb3blrQkjAIUwvU+B74Y+y+RK1ftHcnb7Wrl69WO48geLuLoT4XPgsCXLqxoU0QN12FNueYn5LVfMdu50/KthfffmrQcLWUFWi4I5JlRBmQhxG9Kx7/TRFppvFXiMmSUBpTDx6f02qkVYFPwMh7u2l39+kvbt2Yd3cdUw+0oXVMOg4dTnKj2pDq28s+Xxw/hbChJv4H+FsqziAVbSf8rZQ4V2fbtyAaQtq1WrTIhvAvsNXIz8q6iq94hYccq1SGAxBPYwr+Mp2ZlNgAI9H1Pydtqn/iboHVyCGubAQVLZzBLP/w/J3qoxh/amlng==
X-MS-Exchange-Transport-CrossTenantHeadersStamped: AMCPR08MB11993
X-EOPAttributedMessage: 0
X-MS-Exchange-Transport-CrossTenantHeadersStripped:
 AMS0EPF00000190.eurprd05.prod.outlook.com
X-MS-PublicTrafficType: Email
X-MS-Office365-Filtering-Correlation-Id-Prvs:
	71cbf7bd-31a1-4658-88ae-08dea4658598
X-Microsoft-Antispam:
	BCL:0;ARA:13230040|376014|35042699022|14060799003|36860700016|1800799024|82310400026|22082099003|18002099003|56012099003|18096099003;
X-Microsoft-Antispam-Message-Info:
	mqZdFXK1Li42IefDH0IZcPqPKHv0ljY7zISCwiEPOh0jJ9vVjbNYxqrXVoCpCwJr4kpCXY/1WKR5a7OjM3taKgzHVJ02XtLFUTdqhcjqMFzgsK5em9n23CcxszYOMglZGzU7yF1Z7+SzwROwWazcaRFbJuo/wbA6FF+Ovrm8iKtiCMZr5nSMfDxTJ3RX0A4PsaxAFhI0D20UVvu9coCXcJkN+iVxfmGthdTwpkP90ynNqJPJdD4ZWldio1CIfeLaxC4vUi4sDK/F844v4lNnpeSmDzv6d83d7IKf54T1dx5NL3CIXHsOgMaGXlQAe1INIdxzMOeM36PP2x9govB+D3GyuUAmH9yJo8LRjnd8V8apzf4n63LozGKNjb4htQKZXsGFxEMTgFfqiK/SMV8kE182V/ACzhbNveROJu0iS9RG4SxbcXjtpdZ/BQzDcXDvVYZrC54gwX0cia7xfuz2JSKnadDHVFj2wYkDC1ubK5qS3VeDuUcjL6B1k2E2IUxc7BhRTaXEnNNFqQ8Wb6BnkLLYaW3USKXDjO9pilqfC/Zs0CQP+k2uT92p9FmnkRSvuSXHWuwfUNSNnKnPqWJDiWtPqYEfVk2PJvDVo+v/t1EcnPv2AzZY523g8SFZeDxTyX0SYqh8wPeA2BHVKoEOcB+/KfYNmo+WK7HNInoIl8ibUkV99yC/FjdN7KIDadHhjUEPrEqFdx5bq9zl+8dzJRw7U9bsxeRl84ORW5AptkSPMbb6Hr+YoHNr/9IAt7PGQRgm/6PEt7V2nCapGCh0Gw==
X-Forefront-Antispam-Report:
	CIP:4.158.2.129;CTRY:GB;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:outbound-uk1.az.dlp.m.darktrace.com;PTR:InfoDomainNonexistent;CAT:NONE;SFS:(13230040)(376014)(35042699022)(14060799003)(36860700016)(1800799024)(82310400026)(22082099003)(18002099003)(56012099003)(18096099003);DIR:OUT;SFP:1101;
X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1
X-MS-Exchange-AntiSpam-MessageData-0:
	HWTzqYl0H4Sw813m/dTnTPFBCHrV4kMqR9zJSpT3uYQnPykHqqJXODvKJFi7bNjZcZy+ZVyO3sDHywhKfBjQpjH2MMTiQrdjBAQAsc577+GYV1p4GB5k/vCZ5UeBwu0BGNSH51woPPG2IL3o+D+7z8R1GEihOIdOrvq7W5Zj652mWO6lXbklndsQiY2mQyc4IO6CQhppk+/MZrcLrczE8ETliyYG1KhJit4eknKIaAzVbCiQ4pvbTmKVqqpcs/7JqVsHHk49jgNObKIlyOEyWLCqXFLEygPVj8lsVFyhziRqmAMISkLUsgxITvP8TE/6bJgw51kzRWFr/du9IsKXYHp56hdOe9GmSyFsVeGa2KftS0GLdh962pskOOsFwukrBz2kDYwmWDkDyIRJIV/7I2kG80T4VhI84TuC+hZ6fsnHp43WwIdHmtVEiNwZcFaL
X-OriginatorOrg: arm.com
X-MS-Exchange-CrossTenant-OriginalArrivalTime: 27 Apr 2026 14:02:49.3469
 (UTC)
X-MS-Exchange-CrossTenant-Network-Message-Id: e6ea296f-acd5-4fe8-e4d8-08dea465aaa1
X-MS-Exchange-CrossTenant-Id: f34e5979-57d9-4aaa-ad4d-b122a662184d
X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=f34e5979-57d9-4aaa-ad4d-b122a662184d;Ip=[4.158.2.129];Helo=[outbound-uk1.az.dlp.m.darktrace.com]
X-MS-Exchange-CrossTenant-AuthSource:
	AMS0EPF00000190.eurprd05.prod.outlook.com
X-MS-Exchange-CrossTenant-AuthAs: Anonymous
X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem
X-MS-Exchange-Transport-CrossTenantHeadersStamped: FRZPR08MB11874
X-purgate-ID: tlsNG-c201ff/1777298572-E1DDB443-96884617/0/0
X-purgate-type: clean
X-purgate-size: 9850

SGkgTXlrb2xhLA0KDQo+IA0KPiBkaWZmIC0tZ2l0IGEveGVuL2RyaXZlcnMvcGFzc3Rocm91Z2gv
YXJtL3NtbXUtdjMuYyBiL3hlbi9kcml2ZXJzL3Bhc3N0aHJvdWdoL2FybS9zbW11LXYzLmMNCj4g
aW5kZXggYmYxNTMyMjdkYi4uNzYwN2ZmYzljYSAxMDA2NDQNCj4gLS0tIGEveGVuL2RyaXZlcnMv
cGFzc3Rocm91Z2gvYXJtL3NtbXUtdjMuYw0KPiArKysgYi94ZW4vZHJpdmVycy9wYXNzdGhyb3Vn
aC9hcm0vc21tdS12My5jDQo+IEBAIC0xODE0LDggKzE4MTQsNyBAQCBzdGF0aWMgaW50IGFybV9z
bW11X3dyaXRlX3JlZ19zeW5jKHN0cnVjdCBhcm1fc21tdV9kZXZpY2UgKnNtbXUsIHUzMiB2YWws
DQo+IH0NCj4gDQo+IC8qIEdCUEEgaXMgInNwZWNpYWwiICovDQo+IC1zdGF0aWMgaW50IF9faW5p
dCBhcm1fc21tdV91cGRhdGVfZ2JwYShzdHJ1Y3QgYXJtX3NtbXVfZGV2aWNlICpzbW11LA0KPiAt
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdTMyIHNldCwgdTMyIGNscikN
Cj4gK3N0YXRpYyBpbnQgYXJtX3NtbXVfdXBkYXRlX2dicGEoc3RydWN0IGFybV9zbW11X2Rldmlj
ZSAqc21tdSwgdTMyIHNldCwgdTMyIGNscikNCj4gew0KPiBpbnQgcmV0Ow0KPiB1MzIgcmVnLCBf
X2lvbWVtICpnYnBhID0gc21tdS0+YmFzZSArIEFSTV9TTU1VX0dCUEE7DQo+IEBAIC0xOTk1LDEw
ICsxOTk0LDI5IEBAIGVycl9mcmVlX2V2dHFfaXJxOg0KPiByZXR1cm4gcmV0Ow0KPiB9DQo+IA0K
PiArc3RhdGljIGludCBhcm1fc21tdV9lbmFibGVfaXJxcyhzdHJ1Y3QgYXJtX3NtbXVfZGV2aWNl
ICpzbW11KQ0KPiArew0KPiArIGludCByZXQ7DQo+ICsgdTMyIGlycWVuX2ZsYWdzID0gSVJRX0NU
UkxfRVZUUV9JUlFFTiB8IElSUV9DVFJMX0dFUlJPUl9JUlFFTjsNCj4gKw0KPiArIGlmICggc21t
dS0+ZmVhdHVyZXMgJiBBUk1fU01NVV9GRUFUX1BSSSApDQo+ICsgaXJxZW5fZmxhZ3MgfD0gSVJR
X0NUUkxfUFJJUV9JUlFFTjsNCj4gKw0KPiArIC8qIEVuYWJsZSBpbnRlcnJ1cHQgZ2VuZXJhdGlv
biBvbiB0aGUgU01NVSAqLw0KPiArIHJldCA9IGFybV9zbW11X3dyaXRlX3JlZ19zeW5jKHNtbXUs
IGlycWVuX2ZsYWdzLA0KPiArICAgICAgQVJNX1NNTVVfSVJRX0NUUkwsIEFSTV9TTU1VX0lSUV9D
VFJMQUNLKTsNCj4gKyBpZiAoIHJldCApDQo+ICsgew0KPiArIGRldl93YXJuKHNtbXUtPmRldiwg
ImZhaWxlZCB0byBlbmFibGUgaXJxc1xuIik7DQo+ICsgcmV0dXJuIHJldDsNCj4gKyB9DQo+ICsN
Cj4gKyByZXR1cm4gMDsNCj4gK30NCj4gKw0KPiBzdGF0aWMgaW50IF9faW5pdCBhcm1fc21tdV9z
ZXR1cF9pcnFzKHN0cnVjdCBhcm1fc21tdV9kZXZpY2UgKnNtbXUpDQo+IHsNCj4gaW50IHJldCwg
aXJxOw0KPiAtIHUzMiBpcnFlbl9mbGFncyA9IElSUV9DVFJMX0VWVFFfSVJRRU4gfCBJUlFfQ1RS
TF9HRVJST1JfSVJRRU47DQo+IA0KPiAvKiBEaXNhYmxlIElSUXMgZmlyc3QgKi8NCj4gcmV0ID0g
YXJtX3NtbXVfd3JpdGVfcmVnX3N5bmMoc21tdSwgMCwgQVJNX1NNTVVfSVJRX0NUUkwsDQo+IEBA
IC0yMDI4LDIyICsyMDQ2LDcgQEAgc3RhdGljIGludCBfX2luaXQgYXJtX3NtbXVfc2V0dXBfaXJx
cyhzdHJ1Y3QgYXJtX3NtbXVfZGV2aWNlICpzbW11KQ0KPiB9DQo+IH0NCj4gDQo+IC0gaWYgKHNt
bXUtPmZlYXR1cmVzICYgQVJNX1NNTVVfRkVBVF9QUkkpDQo+IC0gaXJxZW5fZmxhZ3MgfD0gSVJR
X0NUUkxfUFJJUV9JUlFFTjsNCj4gLQ0KPiAtIC8qIEVuYWJsZSBpbnRlcnJ1cHQgZ2VuZXJhdGlv
biBvbiB0aGUgU01NVSAqLw0KPiAtIHJldCA9IGFybV9zbW11X3dyaXRlX3JlZ19zeW5jKHNtbXUs
IGlycWVuX2ZsYWdzLA0KPiAtICAgICAgQVJNX1NNTVVfSVJRX0NUUkwsIEFSTV9TTU1VX0lSUV9D
VFJMQUNLKTsNCj4gLSBpZiAocmV0KSB7DQo+IC0gZGV2X3dhcm4oc21tdS0+ZGV2LCAiZmFpbGVk
IHRvIGVuYWJsZSBpcnFzXG4iKTsNCj4gLSBnb3RvIGVycl9mcmVlX2lycXM7DQo+IC0gfQ0KPiAt
DQo+IHJldHVybiAwOw0KPiAtDQo+IC1lcnJfZnJlZV9pcnFzOg0KPiAtIGFybV9zbW11X2ZyZWVf
aXJxcyhzbW11KTsNCj4gLSByZXR1cm4gcmV0Ow0KPiB9DQo+IA0KPiBzdGF0aWMgaW50IGFybV9z
bW11X2RldmljZV9kaXNhYmxlKHN0cnVjdCBhcm1fc21tdV9kZXZpY2UgKnNtbXUpDQo+IEBAIC0y
MDU3LDcgKzIwNjAsNyBAQCBzdGF0aWMgaW50IGFybV9zbW11X2RldmljZV9kaXNhYmxlKHN0cnVj
dCBhcm1fc21tdV9kZXZpY2UgKnNtbXUpDQo+IHJldHVybiByZXQ7DQo+IH0NCj4gDQo+IC1zdGF0
aWMgaW50IF9faW5pdCBhcm1fc21tdV9kZXZpY2VfcmVzZXQoc3RydWN0IGFybV9zbW11X2Rldmlj
ZSAqc21tdSkNCj4gK3N0YXRpYyBpbnQgYXJtX3NtbXVfZGV2aWNlX3Jlc2V0KHN0cnVjdCBhcm1f
c21tdV9kZXZpY2UgKnNtbXUpDQo+IHsNCj4gaW50IHJldDsNCj4gdTMyIHJlZywgZW5hYmxlczsN
Cj4gQEAgLTIxNjMsMTcgKzIxNjYsOSBAQCBzdGF0aWMgaW50IF9faW5pdCBhcm1fc21tdV9kZXZp
Y2VfcmVzZXQoc3RydWN0IGFybV9zbW11X2RldmljZSAqc21tdSkNCj4gfQ0KPiB9DQo+IA0KPiAt
IHJldCA9IGFybV9zbW11X3NldHVwX2lycXMoc21tdSk7DQo+IC0gaWYgKHJldCkgew0KPiAtIGRl
dl9lcnIoc21tdS0+ZGV2LCAiZmFpbGVkIHRvIHNldHVwIGlycXNcbiIpOw0KDQpXZSBhcmUgbW92
aW5nIHRoaXMgb25lIHRvIHRoZSBwcm9iZSBhbmQgLi4gDQoNCj4gKyByZXQgPSBhcm1fc21tdV9l
bmFibGVfaXJxcyhzbW11KTsNCj4gKyBpZiAoIHJldCApDQoNCmNoYW5naW5nIHdpdGggdGhpcyBv
bmUsIGJ1dCBhcm1fc21tdV9zZXR1cF9pcnFzKCkgYWxzbyBjYWxscyBhcm1fc21tdV9zZXR1cF91
bmlxdWVfaXJxcygpIHdoaWNoDQpjYWxscyBhcm1fc21tdV9zZXR1cF9tc2lzKCksIGFyZSB3ZSBz
dXJlIHRoYXQgb24gcmVzdW1lIHdlIHdpbGwgZ2V0IHRoZSBzYW1lIHN0YXRlPw0KDQo+IHJldHVy
biByZXQ7DQo+IC0gfQ0KPiAtDQo+IC0gLyogSW5pdGlhbGl6ZSB0YXNrbGV0cyBmb3IgdGhyZWFk
ZWQgSVJRcyovDQo+IC0gdGFza2xldF9pbml0KCZzbW11LT5ldnRxX2lycV90YXNrbGV0LCBhcm1f
c21tdV9ldnRxX3Rhc2tsZXQsIHNtbXUpOw0KPiAtIHRhc2tsZXRfaW5pdCgmc21tdS0+cHJpcV9p
cnFfdGFza2xldCwgYXJtX3NtbXVfcHJpcV90YXNrbGV0LCBzbW11KTsNCj4gLSB0YXNrbGV0X2lu
aXQoJnNtbXUtPmNvbWJpbmVkX2lycV90YXNrbGV0LCBhcm1fc21tdV9jb21iaW5lZF9pcnFfdGFz
a2xldCwNCj4gLSBzbW11KTsNCj4gDQo+IC8qIEVuYWJsZSB0aGUgU01NVSBpbnRlcmZhY2UsIG9y
IGVuc3VyZSBieXBhc3MgKi8NCj4gaWYgKGRpc2FibGVfYnlwYXNzKSB7DQo+IEBAIC0yMTgxLDIw
ICsyMTc2LDE2IEBAIHN0YXRpYyBpbnQgX19pbml0IGFybV9zbW11X2RldmljZV9yZXNldChzdHJ1
Y3QgYXJtX3NtbXVfZGV2aWNlICpzbW11KQ0KPiB9IGVsc2Ugew0KPiByZXQgPSBhcm1fc21tdV91
cGRhdGVfZ2JwYShzbW11LCAwLCBHQlBBX0FCT1JUKTsNCj4gaWYgKHJldCkNCj4gLSBnb3RvIGVy
cl9mcmVlX2lycXM7DQo+ICsgcmV0dXJuIHJldDsNCj4gfQ0KPiByZXQgPSBhcm1fc21tdV93cml0
ZV9yZWdfc3luYyhzbW11LCBlbmFibGVzLCBBUk1fU01NVV9DUjAsDQo+ICAgICAgQVJNX1NNTVVf
Q1IwQUNLKTsNCj4gaWYgKHJldCkgew0KPiBkZXZfZXJyKHNtbXUtPmRldiwgImZhaWxlZCB0byBl
bmFibGUgU01NVSBpbnRlcmZhY2VcbiIpOw0KPiAtIGdvdG8gZXJyX2ZyZWVfaXJxczsNCj4gKyBy
ZXR1cm4gcmV0Ow0KPiB9DQo+IA0KPiByZXR1cm4gMDsNCj4gLQ0KPiAtZXJyX2ZyZWVfaXJxczoN
Cj4gLSBhcm1fc21tdV9mcmVlX2lycXMoc21tdSk7DQo+IC0gcmV0dXJuIHJldDsNCj4gfQ0KPiAN
Cj4gc3RhdGljIGludCBhcm1fc21tdV9kZXZpY2VfaHdfcHJvYmUoc3RydWN0IGFybV9zbW11X2Rl
dmljZSAqc21tdSkNCj4gQEAgLTI1NTgsMTAgKzI1NDksMjMgQEAgc3RhdGljIGludCBfX2luaXQg
YXJtX3NtbXVfZGV2aWNlX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpDQo+IGlm
IChyZXQpDQo+IGdvdG8gb3V0X2ZyZWU7DQo+IA0KPiArIHJldCA9IGFybV9zbW11X3NldHVwX2ly
cXMoc21tdSk7DQo+ICsgaWYgKCByZXQgKQ0KPiArIHsNCj4gKyBkZXZfZXJyKHNtbXUtPmRldiwg
ImZhaWxlZCB0byBzZXR1cCBpcnFzXG4iKTsNCj4gKyBnb3RvIG91dF9mcmVlOw0KPiArIH0NCj4g
Kw0KPiArIC8qIEluaXRpYWxpemUgdGFza2xldHMgZm9yIHRocmVhZGVkIElSUXMqLw0KPiArIHRh
c2tsZXRfaW5pdCgmc21tdS0+ZXZ0cV9pcnFfdGFza2xldCwgYXJtX3NtbXVfZXZ0cV90YXNrbGV0
LCBzbW11KTsNCj4gKyB0YXNrbGV0X2luaXQoJnNtbXUtPnByaXFfaXJxX3Rhc2tsZXQsIGFybV9z
bW11X3ByaXFfdGFza2xldCwgc21tdSk7DQo+ICsgdGFza2xldF9pbml0KCZzbW11LT5jb21iaW5l
ZF9pcnFfdGFza2xldCwgYXJtX3NtbXVfY29tYmluZWRfaXJxX3Rhc2tsZXQsDQo+ICsgc21tdSk7
DQo+ICsNCj4gLyogUmVzZXQgdGhlIGRldmljZSAqLw0KPiByZXQgPSBhcm1fc21tdV9kZXZpY2Vf
cmVzZXQoc21tdSk7DQo+IGlmIChyZXQpDQo+IC0gZ290byBvdXRfZnJlZTsNCj4gKyBnb3RvIG91
dF9mcmVlX2lycXM7DQo+IA0KPiAvKg0KPiAqIEtlZXAgYSBsaXN0IG9mIGFsbCBwcm9iZWQgZGV2
aWNlcy4gVGhpcyB3aWxsIGJlIHVzZWQgdG8gcXVlcnkNCj4gQEAgLTI1NzUsNiArMjU3OSw4IEBA
IHN0YXRpYyBpbnQgX19pbml0IGFybV9zbW11X2RldmljZV9wcm9iZShzdHJ1Y3QgcGxhdGZvcm1f
ZGV2aWNlICpwZGV2KQ0KPiANCj4gcmV0dXJuIDA7DQo+IA0KPiArb3V0X2ZyZWVfaXJxczoNCj4g
KyBhcm1fc21tdV9mcmVlX2lycXMoc21tdSk7DQo+IA0KPiBvdXRfZnJlZToNCj4gYXJtX3NtbXVf
ZnJlZV9zdHJ1Y3R1cmVzKHNtbXUpOw0KPiBAQCAtMjg1NSw2ICsyODYxLDk2IEBAIHN0YXRpYyB2
b2lkIGFybV9zbW11X2lvbW11X3hlbl9kb21haW5fdGVhcmRvd24oc3RydWN0IGRvbWFpbiAqZCkN
Cj4geGZyZWUoeGVuX2RvbWFpbik7DQo+IH0NCj4gDQo+ICsjaWZkZWYgQ09ORklHX1NZU1RFTV9T
VVNQRU5EDQo+ICsNCj4gK3N0YXRpYyB2b2lkIGFybV9zbW11X3Jlc2V0X2Zvcl9zdXNwZW5kX3Jv
bGxiYWNrKHN0cnVjdCBhcm1fc21tdV9kZXZpY2UgKnNtbXUpDQo+ICt7DQo+ICsgaW50IHJldCA9
IGFybV9zbW11X2RldmljZV9yZXNldChzbW11KTsNCj4gKw0KPiArIGlmICggcmV0ICkNCj4gKyBk
ZXZfZXJyKHNtbXUtPmRldiwgIkZhaWxlZCB0byByZXNldCBkdXJpbmcgc3VzcGVuZCByb2xsYmFj
azogJWRcbiIsDQo+ICsgcmV0KTsNCj4gK30NCj4gKw0KPiArc3RhdGljIGludCBhcm1fc21tdV9z
dXNwZW5kKHZvaWQpDQo+ICt7DQo+ICsgc3RydWN0IGFybV9zbW11X2RldmljZSAqc21tdTsNCj4g
KyBpbnQgcmV0ID0gMDsNCj4gKw0KPiArIGxpc3RfZm9yX2VhY2hfZW50cnkoc21tdSwgJmFybV9z
bW11X2RldmljZXMsIGRldmljZXMpDQo+ICsgew0KPiArIGJvb2wgd2ZlID0gISEoc21tdS0+ZmVh
dHVyZXMgJiBBUk1fU01NVV9GRUFUX1NFVik7DQo+ICsNCj4gKyAvKiBBYm9ydCBhbGwgdHJhbnNh
Y3Rpb25zIGJlZm9yZSBkaXNhYmxlIHRvIGF2b2lkIHNwdXJpb3VzIGJ5cGFzcyAqLw0KPiArIHJl
dCA9IGFybV9zbW11X3VwZGF0ZV9nYnBhKHNtbXUsIEdCUEFfQUJPUlQsIDApOw0KPiArIGlmICgg
cmV0ICkNCj4gKyBnb3RvIGZhaWw7DQo+ICsNCj4gKyAvKiBEaXNhYmxlIHRoZSBTTU1VIHZpYSBD
UjAuRU4gYW5kIGFsbCBxdWV1ZXMgZXhjZXB0IENNRFEgKi8NCj4gKyByZXQgPSBhcm1fc21tdV93
cml0ZV9yZWdfc3luYyhzbW11LCBDUjBfQ01EUUVOLCBBUk1fU01NVV9DUjAsDQo+ICsgQVJNX1NN
TVVfQ1IwQUNLKTsNCj4gKyBpZiAoIHJldCApDQo+ICsgew0KPiArIGRldl9lcnIoc21tdS0+ZGV2
LCAiVGltZWQtb3V0IHdoaWxlIGRpc2FibGluZyBzbW11XG4iKTsNCj4gKyBnb3RvIGZhaWw7DQo+
ICsgfQ0KPiArDQo+ICsgLyoNCj4gKyAqIEF0IHRoaXMgcG9pbnQgdGhlIFNNTVUgaXMgY29tcGxl
dGVseSBkaXNhYmxlZCBhbmQgd29uJ3QgYWNjZXNzDQo+ICsgKiBhbnkgdHJhbnNsYXRpb24vY29u
ZmlnIHN0cnVjdHVyZXMsIGV2ZW4gc3BlY3VsYXRpdmUgYWNjZXNzZXMNCj4gKyAqIGFyZW4ndCBw
ZXJmb3JtZWQgYXMgcGVyIHRoZSBJSEkwMDcwIHNwZWMgKHNlY3Rpb24gNi4zLjkuNikuDQo+ICsg
Ki8NCj4gKw0KPiArIC8qIFdhaXQgZm9yIHRoZSBDTURRcyB0byBiZSBkcmFpbmVkIHRvIGZsdXNo
IGFueSBwZW5kaW5nIGNvbW1hbmRzICovDQo+ICsgcmV0ID0gcXVldWVfcG9sbF9jb25zKCZzbW11
LT5jbWRxLnEsIHRydWUsIHdmZSk7DQo+ICsgaWYgKCByZXQgKQ0KPiArIHsNCj4gKyBkZXZfZXJy
KHNtbXUtPmRldiwgIkRyYWluaW5nIHF1ZXVlcyB0aW1lZC1vdXRcbiIpOw0KPiArIGdvdG8gZmFp
bDsNCj4gKyB9DQoNCnBvbGxpbmcgdGhlIHF1ZXVlIGRvZXNu4oCZdCBnaXZlIHlvdSB0aGUgYXNz
dXJhbmNlIHRoYXQgYWxsIHByaW9yIGNvbW1hbmRzIGFyZSBjb21wbGV0ZSwNCkkgd291bGQgdXNl
IGFybV9zbW11X2NtZHFfaXNzdWVfc3luYyBmb3IgdGhhdCBpbnN0ZWFkIG9mIHRoZSBhYm92ZS4N
Cg0KcmV0ID0gYXJtX3NtbXVfY21kcV9pc3N1ZV9zeW5jKHNtbXUpOw0KaWYgKCByZXQgKQ0KICAg
IGdvdG8gZmFpbDsNCg0KPiArDQo+ICsgLyogRGlzYWJsZSBldmVyeXRoaW5nICovDQo+ICsgcmV0
ID0gYXJtX3NtbXVfZGV2aWNlX2Rpc2FibGUoc21tdSk7DQo+ICsgaWYgKCByZXQgKQ0KPiArIGdv
dG8gZmFpbDsNCj4gKw0KPiArIGRldl9kYmcoc21tdS0+ZGV2LCAiU3VzcGVuZGVkIHNtbXVcbiIp
Ow0KPiArIH0NCj4gKw0KPiArIHJldHVybiAwOw0KPiArDQo+ICsgZmFpbDoNCj4gKyAvKiBSZXNl
dCB0aGUgZGV2aWNlIHRoYXQgZmFpbGVkIGFzIHdlbGwgYXMgYW55IGFscmVhZHktc3VzcGVuZGVk
IG9uZXMuICovDQo+ICsgYXJtX3NtbXVfcmVzZXRfZm9yX3N1c3BlbmRfcm9sbGJhY2soc21tdSk7
DQo+ICsNCj4gKyBsaXN0X2Zvcl9lYWNoX2VudHJ5X2NvbnRpbnVlX3JldmVyc2Uoc21tdSwgJmFy
bV9zbW11X2RldmljZXMsIGRldmljZXMpDQo+ICsgYXJtX3NtbXVfcmVzZXRfZm9yX3N1c3BlbmRf
cm9sbGJhY2soc21tdSk7DQo+ICsNCj4gKyByZXR1cm4gcmV0Ow0KPiArfQ0KPiArDQoNCkNoZWVy
cywNCkx1Y2ENCg0KDQo=


From xen-devel-bounces@lists.xenproject.org Mon Apr 27 14:04:07 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 27 Apr 2026 14:04:07 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1294976.1571684 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wHMZ2-0007Ip-Qf; Mon, 27 Apr 2026 14:03:56 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1294976.1571684; Mon, 27 Apr 2026 14:03: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 1wHMZ2-0007Ii-Np; Mon, 27 Apr 2026 14:03:56 +0000
Received: by outflank-mailman (input) for mailman id 1294976;
 Mon, 27 Apr 2026 14:03:55 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <Luca.Fancellu@arm.com>) id 1wHMZ1-0007IT-5F
 for xen-devel@lists.xenproject.org; Mon, 27 Apr 2026 14:03:55 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wHMZ0-00Cif5-Hv
 for xen-devel@lists.xenproject.org; Mon, 27 Apr 2026 16:03:54 +0200
Received: from [10.42.69.12] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <Luca.Fancellu@arm.com>)
 id 69ef6cc2-e002-0a2a0a5209dd-0a2a450cbc66-14
 for <xen-devel@lists.xenproject.org>; Mon, 27 Apr 2026 16:03:54 +0200
Received: from [52.101.70.54]
 (helo=AS8PR04CU009.outbound.protection.outlook.com)
 by tlsNG-d25034.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.1)
 (envelope-from <Luca.Fancellu@arm.com>)
 id 69ef6cc9-62f1-0a2a450c0019-346546364e32-3
 for <xen-devel@lists.xenproject.org>; Mon, 27 Apr 2026 16:03:54 +0200
Received: from PA7P264CA0237.FRAP264.PROD.OUTLOOK.COM (2603:10a6:102:372::20)
 by MRWPR08MB11826.eurprd08.prod.outlook.com (2603:10a6:501:9a::20)
 with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9846.26; Mon, 27 Apr
 2026 14:03:50 +0000
Received: from AM4PEPF00025F9C.EURPRD83.prod.outlook.com
 (2603:10a6:102:372:cafe::8f) by PA7P264CA0237.outlook.office365.com
 (2603:10a6:102:372::20) with Microsoft SMTP Server (version=TLS1_3,
 cipher=TLS_AES_256_GCM_SHA384) id 15.20.9846.26 via Frontend Transport; Mon,
 27 Apr 2026 14:03:49 +0000
Received: from outbound-uk1.az.dlp.m.darktrace.com (4.158.2.129) by
 AM4PEPF00025F9C.mail.protection.outlook.com (10.167.16.11) with Microsoft
 SMTP Server (version=TLS1_3, cipher=TLS_AES_256_GCM_SHA384) id 15.20.9891.0
 via Frontend Transport; Mon, 27 Apr 2026 14:03:49 +0000
Received: from DU2PR08MB7272.eurprd08.prod.outlook.com (2603:10a6:10:2d7::16)
 by AMCPR08MB11993.eurprd08.prod.outlook.com (2603:10a6:20b:770::15)
 with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9846.26; Mon, 27 Apr
 2026 14:02:47 +0000
Received: from DU2PR08MB7272.eurprd08.prod.outlook.com
 ([fe80::5d34:206f:373:a323]) by DU2PR08MB7272.eurprd08.prod.outlook.com
 ([fe80::5d34:206f:373:a323%6]) with mapi id 15.20.9846.025; Mon, 27 Apr 2026
 14:02: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=arm.com header.i="@arm.com" header.h="From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck"; dkim=pass header.s=selector1 header.d=arm.com header.i="@arm.com" header.h="From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck"
ARC-Seal: i=2; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=pass;
 b=T9n4w8k1abBPEDf93FDhNmlGR805H2ZbgJOdcEv7yeRIDicFjqNZzL5yTyuIKPGZr7VOE/C0EdDHHGtHuhyfBhF7A4OBRm/AKqUpXVZdAAdm5jRjEFZu5sIwM/8+KYIwmHTWbV53mupWE2EjdW/O59xV5TXK/cywIu9FvKrQhMWEd5bHp4HH4E0KkDYRVHFBYSyyUZ4ZPfdsBPBZ7QA+CrpEYoOAPjFMsYy0BmxiKI55SR1skeUpNj8Dp46aZJBu/47N016q0AtLBllwpJduC9cfDp265Xh5S6UEROWflCyz8nfaOD/senJjeZ1m4b15jdEuZn5kJyk46LRbTEldBA==
ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com;
 s=arcselector10001;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1;
 bh=zCYR6XQdZ+UWKfkuUQcgAMb8DAMnLPe/FWJmgYaUOcw=;
 b=qVLDrqeErkNJrQ9y7uSwxuRshzdj68K4HFgmU6rJvdoPzSQfcAe8agmpq1O8ANT1wHyM+4v+PCW224pVj3pLLCG5J3Q/nBSvIM+GDu99FOau5UkL99CURYW98jstEw1iiR4i2axXQUiPUQrDX9XlYDXxZEVRIi31p4mrCYQ/X/NXhuVOhXq0EUjyWlia/awAuNBP88cBh/KKKWeDiKRW6YNtYiiNrozrPkAskOCyzHjdB4ZOUUYGtYKqoTUdN53/tThPc1tQYTqnrrp3rhlqd4JH8uJqyV2EClNIQ53nypLljUnkeEgKQPvvaBPcdosmZuA14Omj9pWDOdNnPhqmeg==
ARC-Authentication-Results: i=2; mx.microsoft.com 1; spf=pass (sender ip is
 4.158.2.129) smtp.rcpttodomain=gmail.com smtp.mailfrom=arm.com; dmarc=pass
 (p=none sp=none pct=100) action=none header.from=arm.com; dkim=pass
 (signature was verified) header.d=arm.com; arc=pass (0 oda=1 ltdi=1
 spf=[1,1,smtp.mailfrom=arm.com] dkim=[1,1,header.d=arm.com]
 dmarc=[1,1,header.from=arm.com])
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=arm.com; s=selector1;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck;
 bh=zCYR6XQdZ+UWKfkuUQcgAMb8DAMnLPe/FWJmgYaUOcw=;
 b=M+W4bcKHveuJEejxLAOBg59wSdnOw5kf6v252NHbS/7OkkP0YpRjUd0Yjs9fisxUw+lI5q1a1uMSN+i1oKJiPGYgFPyz2x+xAim+C1WDWEllyV6aozIw7BhBhCDnerW3pljn6IteKx1IqarXglwwrNYwxYAIKcE37zJserTmhxA=
X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 4.158.2.129)
 smtp.mailfrom=arm.com; dkim=pass (signature was verified)
 header.d=arm.com;dmarc=pass action=none header.from=arm.com;
Received-SPF: Pass (protection.outlook.com: domain of arm.com designates
 4.158.2.129 as permitted sender) receiver=protection.outlook.com;
 client-ip=4.158.2.129; helo=outbound-uk1.az.dlp.m.darktrace.com; pr=C
ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none;
 b=DZmb6oXEpIAJLojyHhWDtIMkno8q8RSs7c5HSWp+P8dNCpUw2j2Waw2oAJzpzxToIPCAa3u6CKLsVb7zVqPerb+iXGFvJHYbuDCpuDY29Uzum9M+Tba2Vh4xmfgsY8YRwbiUatBCPe5ILce8gPy49Rn2nVxX69d8CF+DU4LCWWO/FPJDsoqUsnmd2t6VBHg83KbreYxVOBHfqfyJTAdU7sVIKpfDVvmrPE/a7yYydsFxLXVs3nBrrqIKsArNuIsDfH5AE0vhXSbBEfKcSVh7wLL4KWSc7H69Z+ASN/C3ohTjZj0pcuknnJlSFymrXKa8xtYyykzs4BiPzvA0YdJR/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=zCYR6XQdZ+UWKfkuUQcgAMb8DAMnLPe/FWJmgYaUOcw=;
 b=xXidDk5YXTu4g05ysTSQtKV8OFJyKt57ko+woXaaP7HPpqHvoO35arJXUqL+f52wrxq+W3KPSrLMeOQZF5/r6v9fUUmdXF+6bi+w8XylXQOq5Pv9khtP0viSJ+CwHp+EuvhZib3bqE7qlzwcvyPSPJhVpOZmr6HW9090m+n6tOGRhlWYZjDr8y4WPFU1tP56nyV95DGpFFxs21rcccpTyHNfuooHC4vtixAxupyjjMTTDRN0urh0FAQIQNUK5MDtF59AEXyTmk9EJnOea40yzA3Kcj7+gAZzEEDbj5VT6z+dExpuDo4WdX4QTA3MQk/4S32tUNTlQhO3jOQX9n/c3Q==
ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass
 smtp.mailfrom=arm.com; dmarc=pass action=none header.from=arm.com; dkim=pass
 header.d=arm.com; arc=none
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=arm.com; s=selector1;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck;
 bh=zCYR6XQdZ+UWKfkuUQcgAMb8DAMnLPe/FWJmgYaUOcw=;
 b=M+W4bcKHveuJEejxLAOBg59wSdnOw5kf6v252NHbS/7OkkP0YpRjUd0Yjs9fisxUw+lI5q1a1uMSN+i1oKJiPGYgFPyz2x+xAim+C1WDWEllyV6aozIw7BhBhCDnerW3pljn6IteKx1IqarXglwwrNYwxYAIKcE37zJserTmhxA=
From: Luca Fancellu <Luca.Fancellu@arm.com>
To: Mykola Kvach <xakep.amatop@gmail.com>
CC: "xen-devel@lists.xenproject.org" <xen-devel@lists.xenproject.org>, Mykola
 Kvach <mykola_kvach@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>
Subject: Re: [PATCH v8 09/13] arm/smmu-v3: add suspend/resume handlers
Thread-Topic: [PATCH v8 09/13] arm/smmu-v3: add suspend/resume handlers
Thread-Index: AQHc1k50BMsvUkAtf0yXvEOre8XAaw==
Date: Mon, 27 Apr 2026 14:02:47 +0000
Message-ID: <F5384D51-933E-48E6-AE7E-B54022AEAE11@arm.com>
References: <cover.1775125380.git.mykola_kvach@epam.com>
 <038337ec0e3f1474c6cc6a92090e28c6972e4dc6.1775125380.git.mykola_kvach@epam.com>
In-Reply-To:
 <038337ec0e3f1474c6cc6a92090e28c6972e4dc6.1775125380.git.mykola_kvach@epam.com>
Accept-Language: en-GB, en-US
Content-Language: en-US
X-MS-Has-Attach:
X-MS-TNEF-Correlator:
x-mailer: Apple Mail (2.3826.700.81.1.6)
Authentication-Results-Original: dkim=none (message not signed)
 header.d=none;dmarc=none action=none header.from=arm.com;
x-ms-traffictypediagnostic:
	DU2PR08MB7272:EE_|AMCPR08MB11993:EE_|AM4PEPF00025F9C:EE_|MRWPR08MB11826:EE_
X-MS-Office365-Filtering-Correlation-Id: 0c838a29-676c-4cd6-02e1-08dea465ce80
x-checkrecipientrouted: true
nodisclaimer: true
X-MS-Exchange-SenderADCheck: 1
X-MS-Exchange-AntiSpam-Relay: 0
X-Microsoft-Antispam-Untrusted:
 BCL:0;ARA:13230040|366016|1800799024|376014|18096099003|56012099003|18002099003|22082099003|38070700021;
X-Microsoft-Antispam-Message-Info-Original:
 CTQ9qgQJrhyUXm6slEt/Rl1DabKLXxCRpzqI4guf4c6q9ijmC4bUW/6aKHJcFFi60F8xzKImZNyMEXoKBhSJHiNO0a0S2iLVEMuH4dx58Z/2Sv+MPuYJGLFDbkXZHlKqp3QY354PPUw0r5kIbVqYpPEimtKCh3GOY/8pKWrTm++ILPDmcq8Yk/+k1YPBfssctvCuOc4M8a16LYIpQKsZVi2ECD6aYr2aW1IWil0tyRl4NuhNGVVW3ut9ofevHuhSDcU+I/YnLeo2aDx3ihdtlFcAuCwyPvzEMqF9bd7jZauEFHy6A5E5YLGrl2oNvpB7l4Hxei8gfuRhGRYZlehcgMHZfnwd/ycsd8E4fLPTuEXZrOFJxpNJH1nfLWk0TVLr/solbeUUcxOUj3kc2pO1auAjOuHSelSM7BCcAmAAEuhsfAK2hd4ORYGWOUoYHBENA+B97lY3KLSZwZE/pqOY32D31k8t/M0l4JxpuetMHHstSfdNW51I10C8YnX2YgjCxs3JeUhQG0FDwDaveND7A4hhlQfviydY3cSJfETkKxvq++f9tm8OGEOWye3WewNcT2g3mI5pniWpoxu1P9f7mQL6JCoACfshhqrIlsYpYG5P0eyv7mnIwuVoQoTyIFjqF992ZaDcFm9pikxldAMix7UymWmzQaKLtfHOuQK4XJxuRnN0VJpkcxeMqefEK0xkUD+teLv/bduxza6Wtp29QjwL93KxgUq9eg1VfHGNzerPzqC6BJaklUUNyrOj9bvMwXcQbWga4DAhE/Dgf/OXCo9Ui0+P3+iB1uSHDdMq2Qw=
X-Forefront-Antispam-Report-Untrusted:
 CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:DU2PR08MB7272.eurprd08.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(366016)(1800799024)(376014)(18096099003)(56012099003)(18002099003)(22082099003)(38070700021);DIR:OUT;SFP:1101;
Content-Type: text/plain; charset="utf-8"
Content-ID: <FD4B42C3190E2F41A68ECECFE614EC96@eurprd08.prod.outlook.com>
Content-Transfer-Encoding: base64
MIME-Version: 1.0
X-Exchange-RoutingPolicyChecked:
 a20+A2/u20CzxbAnaQRlZmV4DaWnZhkVucAkJvK6ESoFLmCMPGb7hwYxUiqGCrd4v8HGlTrsFOL0kJl9aAwbfE7W7PVy6jKglnEhzO6/Hv3N7cxVcKZDMhDNBYpPjYtx/BXggCjyhMoVTIIzhrpKB4pZ4BOYXb9wCjpdZHq0Vrja/uzbAcVyLFizku5xyQuXgmQTyvvneMZvVQ13YoSBKXRw0DudgfwpS7ZR6Th28/SkxYdhtpbi0fYhEPNLoWPLHR9R9ZkPjljrRx+YhmKsO8bsCIEV7H72JIWIH3PyTFiRjYZpjB2R8DnwpMVtn5Qp6BPsvUgocDuDAKIxs0JzWw==
X-MS-Exchange-Transport-CrossTenantHeadersStamped: AMCPR08MB11993
X-EOPAttributedMessage: 0
X-MS-Exchange-Transport-CrossTenantHeadersStripped:
 AM4PEPF00025F9C.EURPRD83.prod.outlook.com
X-MS-PublicTrafficType: Email
X-MS-Office365-Filtering-Correlation-Id-Prvs:
	a5304a2d-7fa4-48d2-0c1c-08dea465a977
X-Microsoft-Antispam:
	BCL:0;ARA:13230040|36860700016|14060799003|35042699022|82310400026|1800799024|376014|18096099003|56012099003|18002099003|22082099003;
X-Microsoft-Antispam-Message-Info:
	LUbRNwJLu4gypAvjgLWXOyG6HqEPqKJ3U+6a3M25O4ZKqTDXKWXuyaY7+MkoG1AxVBKXB85EPuQ2F3hcIOp2hkc5/mPNUVBRbZlqMoBE9AphWz7k6KTe/dOARS4djXZU2Pn19bKQQDBTZCqReIcHn5r6URqtAME9JbQ1WFQk5xthG/IT7qOhpUVwLmNrgN976XzhOFDL4Txk5lba+/e+ajXAwUotGAutldJL+c4ZRBtCQLqmtOWE2pwbpHeNUbrX1EpivcthxYclfEKVpi+m7CvgUjSgrwHhMUx2AvHp/9cbLZdfyDV1Z4c4Ddb+ZWrTOJG2vuMnN6/jazMe6wmvbXAuHHyDidF/nt9jG0XqaPVyLyMVCaaMyqkCdTQjIv3dZSaqV8/zpHFuO1RGAfjCEeeArYOeYRUJoB8ha6AYfB8hr7mhCazMyUIaP0e9udeQvc/ckpe0QeKTSaZde/DQtXPN4411hOkjxI+jAxOqlbN4VhPq17+GgGKPqCJUHEVf3x/mQKpNn2Xt8czTmAs9/PCpYlSRKF5Ogz5PpLn8+LW/DPR0Clkn5inl1TgvGQ3/sU4zsao2lYKbN88B0ZoUopeKE8jeEv46/qi6+66RBmfdrttHJ96oJA0eHWPvghuVNc5g52QVjxjYCKzyqH3AJzO2EH+R+0UQoutje2Y0NsN43z9gkCmMfeWOe8AO2LGXqi067d992lGC/JJLaUPk1xsrnqYzm8lVCgiygG3cYvhhb0d6DgKbThq0ZNVinR6IQ2Obh8TJlaM1orpiKPToxg==
X-Forefront-Antispam-Report:
	CIP:4.158.2.129;CTRY:GB;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:outbound-uk1.az.dlp.m.darktrace.com;PTR:InfoDomainNonexistent;CAT:NONE;SFS:(13230040)(36860700016)(14060799003)(35042699022)(82310400026)(1800799024)(376014)(18096099003)(56012099003)(18002099003)(22082099003);DIR:OUT;SFP:1101;
X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1
X-MS-Exchange-AntiSpam-MessageData-0:
	PH7O5VYsnDV2VK2+JfiYIbo2KprsXu1mSPD5x7mUsAj0747vdLGRbU+jfYOBSMFPmoKGClsGj7YV1c7bV1G8TcoSivEzBjbknc45lQsm1yS0WRlN7HI3xRBc8SU5sypKKb8Gq586JRVjuQiaYj2RIZ+Ri0AtHdWRRKXYsHbfq8HnJ/8nD7hi6X0x5clwFRbWoOzz6Oz+Y1jjS/NKFa/jC74t0vxELqTVe8axpnpudcpHZsG6YeMRvwE9ap/zHpSzYXt4IsNrYOi56IpbcnmAzg1UgSxLGwnpCUBDcLLLq9I9vPDdSVQbg4U5aeoYF7RKQunX1sCwo5KfjcS5vmoZCIruaLk7AS3cLgflg2LxJvV6gonFJyAKTW/FXhWyGx+gBGZUYQvD6YpbQ4ssHkpOQujGwnkEYTPTYw0rhBO1OT/Do5wF06pwKwk3i/k0wIHe
X-OriginatorOrg: arm.com
X-MS-Exchange-CrossTenant-OriginalArrivalTime: 27 Apr 2026 14:03:49.5252
 (UTC)
X-MS-Exchange-CrossTenant-Network-Message-Id: 0c838a29-676c-4cd6-02e1-08dea465ce80
X-MS-Exchange-CrossTenant-Id: f34e5979-57d9-4aaa-ad4d-b122a662184d
X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=f34e5979-57d9-4aaa-ad4d-b122a662184d;Ip=[4.158.2.129];Helo=[outbound-uk1.az.dlp.m.darktrace.com]
X-MS-Exchange-CrossTenant-AuthSource:
	AM4PEPF00025F9C.EURPRD83.prod.outlook.com
X-MS-Exchange-CrossTenant-AuthAs: Anonymous
X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem
X-MS-Exchange-Transport-CrossTenantHeadersStamped: MRWPR08MB11826
X-purgate-ID: tlsNG-d25034/1777298634-6F370CF5-C38E3942/0/0
X-purgate-type: clean
X-purgate-size: 9846

SGkgTXlrb2xhLA0KDQo+IA0KPiBkaWZmIC0tZ2l0IGEveGVuL2RyaXZlcnMvcGFzc3Rocm91Z2gv
YXJtL3NtbXUtdjMuYyBiL3hlbi9kcml2ZXJzL3Bhc3N0aHJvdWdoL2FybS9zbW11LXYzLmMNCj4g
aW5kZXggYmYxNTMyMjdkYi4uNzYwN2ZmYzljYSAxMDA2NDQNCj4gLS0tIGEveGVuL2RyaXZlcnMv
cGFzc3Rocm91Z2gvYXJtL3NtbXUtdjMuYw0KPiArKysgYi94ZW4vZHJpdmVycy9wYXNzdGhyb3Vn
aC9hcm0vc21tdS12My5jDQo+IEBAIC0xODE0LDggKzE4MTQsNyBAQCBzdGF0aWMgaW50IGFybV9z
bW11X3dyaXRlX3JlZ19zeW5jKHN0cnVjdCBhcm1fc21tdV9kZXZpY2UgKnNtbXUsIHUzMiB2YWws
DQo+IH0NCj4gDQo+IC8qIEdCUEEgaXMgInNwZWNpYWwiICovDQo+IC1zdGF0aWMgaW50IF9faW5p
dCBhcm1fc21tdV91cGRhdGVfZ2JwYShzdHJ1Y3QgYXJtX3NtbXVfZGV2aWNlICpzbW11LA0KPiAt
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdTMyIHNldCwgdTMyIGNscikN
Cj4gK3N0YXRpYyBpbnQgYXJtX3NtbXVfdXBkYXRlX2dicGEoc3RydWN0IGFybV9zbW11X2Rldmlj
ZSAqc21tdSwgdTMyIHNldCwgdTMyIGNscikNCj4gew0KPiBpbnQgcmV0Ow0KPiB1MzIgcmVnLCBf
X2lvbWVtICpnYnBhID0gc21tdS0+YmFzZSArIEFSTV9TTU1VX0dCUEE7DQo+IEBAIC0xOTk1LDEw
ICsxOTk0LDI5IEBAIGVycl9mcmVlX2V2dHFfaXJxOg0KPiByZXR1cm4gcmV0Ow0KPiB9DQo+IA0K
PiArc3RhdGljIGludCBhcm1fc21tdV9lbmFibGVfaXJxcyhzdHJ1Y3QgYXJtX3NtbXVfZGV2aWNl
ICpzbW11KQ0KPiArew0KPiArIGludCByZXQ7DQo+ICsgdTMyIGlycWVuX2ZsYWdzID0gSVJRX0NU
UkxfRVZUUV9JUlFFTiB8IElSUV9DVFJMX0dFUlJPUl9JUlFFTjsNCj4gKw0KPiArIGlmICggc21t
dS0+ZmVhdHVyZXMgJiBBUk1fU01NVV9GRUFUX1BSSSApDQo+ICsgaXJxZW5fZmxhZ3MgfD0gSVJR
X0NUUkxfUFJJUV9JUlFFTjsNCj4gKw0KPiArIC8qIEVuYWJsZSBpbnRlcnJ1cHQgZ2VuZXJhdGlv
biBvbiB0aGUgU01NVSAqLw0KPiArIHJldCA9IGFybV9zbW11X3dyaXRlX3JlZ19zeW5jKHNtbXUs
IGlycWVuX2ZsYWdzLA0KPiArICAgICAgQVJNX1NNTVVfSVJRX0NUUkwsIEFSTV9TTU1VX0lSUV9D
VFJMQUNLKTsNCj4gKyBpZiAoIHJldCApDQo+ICsgew0KPiArIGRldl93YXJuKHNtbXUtPmRldiwg
ImZhaWxlZCB0byBlbmFibGUgaXJxc1xuIik7DQo+ICsgcmV0dXJuIHJldDsNCj4gKyB9DQo+ICsN
Cj4gKyByZXR1cm4gMDsNCj4gK30NCj4gKw0KPiBzdGF0aWMgaW50IF9faW5pdCBhcm1fc21tdV9z
ZXR1cF9pcnFzKHN0cnVjdCBhcm1fc21tdV9kZXZpY2UgKnNtbXUpDQo+IHsNCj4gaW50IHJldCwg
aXJxOw0KPiAtIHUzMiBpcnFlbl9mbGFncyA9IElSUV9DVFJMX0VWVFFfSVJRRU4gfCBJUlFfQ1RS
TF9HRVJST1JfSVJRRU47DQo+IA0KPiAvKiBEaXNhYmxlIElSUXMgZmlyc3QgKi8NCj4gcmV0ID0g
YXJtX3NtbXVfd3JpdGVfcmVnX3N5bmMoc21tdSwgMCwgQVJNX1NNTVVfSVJRX0NUUkwsDQo+IEBA
IC0yMDI4LDIyICsyMDQ2LDcgQEAgc3RhdGljIGludCBfX2luaXQgYXJtX3NtbXVfc2V0dXBfaXJx
cyhzdHJ1Y3QgYXJtX3NtbXVfZGV2aWNlICpzbW11KQ0KPiB9DQo+IH0NCj4gDQo+IC0gaWYgKHNt
bXUtPmZlYXR1cmVzICYgQVJNX1NNTVVfRkVBVF9QUkkpDQo+IC0gaXJxZW5fZmxhZ3MgfD0gSVJR
X0NUUkxfUFJJUV9JUlFFTjsNCj4gLQ0KPiAtIC8qIEVuYWJsZSBpbnRlcnJ1cHQgZ2VuZXJhdGlv
biBvbiB0aGUgU01NVSAqLw0KPiAtIHJldCA9IGFybV9zbW11X3dyaXRlX3JlZ19zeW5jKHNtbXUs
IGlycWVuX2ZsYWdzLA0KPiAtICAgICAgQVJNX1NNTVVfSVJRX0NUUkwsIEFSTV9TTU1VX0lSUV9D
VFJMQUNLKTsNCj4gLSBpZiAocmV0KSB7DQo+IC0gZGV2X3dhcm4oc21tdS0+ZGV2LCAiZmFpbGVk
IHRvIGVuYWJsZSBpcnFzXG4iKTsNCj4gLSBnb3RvIGVycl9mcmVlX2lycXM7DQo+IC0gfQ0KPiAt
DQo+IHJldHVybiAwOw0KPiAtDQo+IC1lcnJfZnJlZV9pcnFzOg0KPiAtIGFybV9zbW11X2ZyZWVf
aXJxcyhzbW11KTsNCj4gLSByZXR1cm4gcmV0Ow0KPiB9DQo+IA0KPiBzdGF0aWMgaW50IGFybV9z
bW11X2RldmljZV9kaXNhYmxlKHN0cnVjdCBhcm1fc21tdV9kZXZpY2UgKnNtbXUpDQo+IEBAIC0y
MDU3LDcgKzIwNjAsNyBAQCBzdGF0aWMgaW50IGFybV9zbW11X2RldmljZV9kaXNhYmxlKHN0cnVj
dCBhcm1fc21tdV9kZXZpY2UgKnNtbXUpDQo+IHJldHVybiByZXQ7DQo+IH0NCj4gDQo+IC1zdGF0
aWMgaW50IF9faW5pdCBhcm1fc21tdV9kZXZpY2VfcmVzZXQoc3RydWN0IGFybV9zbW11X2Rldmlj
ZSAqc21tdSkNCj4gK3N0YXRpYyBpbnQgYXJtX3NtbXVfZGV2aWNlX3Jlc2V0KHN0cnVjdCBhcm1f
c21tdV9kZXZpY2UgKnNtbXUpDQo+IHsNCj4gaW50IHJldDsNCj4gdTMyIHJlZywgZW5hYmxlczsN
Cj4gQEAgLTIxNjMsMTcgKzIxNjYsOSBAQCBzdGF0aWMgaW50IF9faW5pdCBhcm1fc21tdV9kZXZp
Y2VfcmVzZXQoc3RydWN0IGFybV9zbW11X2RldmljZSAqc21tdSkNCj4gfQ0KPiB9DQo+IA0KPiAt
IHJldCA9IGFybV9zbW11X3NldHVwX2lycXMoc21tdSk7DQo+IC0gaWYgKHJldCkgew0KPiAtIGRl
dl9lcnIoc21tdS0+ZGV2LCAiZmFpbGVkIHRvIHNldHVwIGlycXNcbiIpOw0KDQpXZSBhcmUgbW92
aW5nIHRoaXMgb25lIHRvIHRoZSBwcm9iZSBhbmQgLi4gDQoNCj4gKyByZXQgPSBhcm1fc21tdV9l
bmFibGVfaXJxcyhzbW11KTsNCj4gKyBpZiAoIHJldCApDQoNCmNoYW5naW5nIHdpdGggdGhpcyBv
bmUsIGJ1dCBhcm1fc21tdV9zZXR1cF9pcnFzKCkgYWxzbyBjYWxscyBhcm1fc21tdV9zZXR1cF91
bmlxdWVfaXJxcygpIHdoaWNoDQpjYWxscyBhcm1fc21tdV9zZXR1cF9tc2lzKCksIGFyZSB3ZSBz
dXJlIHRoYXQgb24gcmVzdW1lIHdlIHdpbGwgZ2V0IHRoZSBzYW1lIHN0YXRlPw0KDQo+IHJldHVy
biByZXQ7DQo+IC0gfQ0KPiAtDQo+IC0gLyogSW5pdGlhbGl6ZSB0YXNrbGV0cyBmb3IgdGhyZWFk
ZWQgSVJRcyovDQo+IC0gdGFza2xldF9pbml0KCZzbW11LT5ldnRxX2lycV90YXNrbGV0LCBhcm1f
c21tdV9ldnRxX3Rhc2tsZXQsIHNtbXUpOw0KPiAtIHRhc2tsZXRfaW5pdCgmc21tdS0+cHJpcV9p
cnFfdGFza2xldCwgYXJtX3NtbXVfcHJpcV90YXNrbGV0LCBzbW11KTsNCj4gLSB0YXNrbGV0X2lu
aXQoJnNtbXUtPmNvbWJpbmVkX2lycV90YXNrbGV0LCBhcm1fc21tdV9jb21iaW5lZF9pcnFfdGFz
a2xldCwNCj4gLSBzbW11KTsNCj4gDQo+IC8qIEVuYWJsZSB0aGUgU01NVSBpbnRlcmZhY2UsIG9y
IGVuc3VyZSBieXBhc3MgKi8NCj4gaWYgKGRpc2FibGVfYnlwYXNzKSB7DQo+IEBAIC0yMTgxLDIw
ICsyMTc2LDE2IEBAIHN0YXRpYyBpbnQgX19pbml0IGFybV9zbW11X2RldmljZV9yZXNldChzdHJ1
Y3QgYXJtX3NtbXVfZGV2aWNlICpzbW11KQ0KPiB9IGVsc2Ugew0KPiByZXQgPSBhcm1fc21tdV91
cGRhdGVfZ2JwYShzbW11LCAwLCBHQlBBX0FCT1JUKTsNCj4gaWYgKHJldCkNCj4gLSBnb3RvIGVy
cl9mcmVlX2lycXM7DQo+ICsgcmV0dXJuIHJldDsNCj4gfQ0KPiByZXQgPSBhcm1fc21tdV93cml0
ZV9yZWdfc3luYyhzbW11LCBlbmFibGVzLCBBUk1fU01NVV9DUjAsDQo+ICAgICBBUk1fU01NVV9D
UjBBQ0spOw0KPiBpZiAocmV0KSB7DQo+IGRldl9lcnIoc21tdS0+ZGV2LCAiZmFpbGVkIHRvIGVu
YWJsZSBTTU1VIGludGVyZmFjZVxuIik7DQo+IC0gZ290byBlcnJfZnJlZV9pcnFzOw0KPiArIHJl
dHVybiByZXQ7DQo+IH0NCj4gDQo+IHJldHVybiAwOw0KPiAtDQo+IC1lcnJfZnJlZV9pcnFzOg0K
PiAtIGFybV9zbW11X2ZyZWVfaXJxcyhzbW11KTsNCj4gLSByZXR1cm4gcmV0Ow0KPiB9DQo+IA0K
PiBzdGF0aWMgaW50IGFybV9zbW11X2RldmljZV9od19wcm9iZShzdHJ1Y3QgYXJtX3NtbXVfZGV2
aWNlICpzbW11KQ0KPiBAQCAtMjU1OCwxMCArMjU0OSwyMyBAQCBzdGF0aWMgaW50IF9faW5pdCBh
cm1fc21tdV9kZXZpY2VfcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldikNCj4gaWYg
KHJldCkNCj4gZ290byBvdXRfZnJlZTsNCj4gDQo+ICsgcmV0ID0gYXJtX3NtbXVfc2V0dXBfaXJx
cyhzbW11KTsNCj4gKyBpZiAoIHJldCApDQo+ICsgew0KPiArIGRldl9lcnIoc21tdS0+ZGV2LCAi
ZmFpbGVkIHRvIHNldHVwIGlycXNcbiIpOw0KPiArIGdvdG8gb3V0X2ZyZWU7DQo+ICsgfQ0KPiAr
DQo+ICsgLyogSW5pdGlhbGl6ZSB0YXNrbGV0cyBmb3IgdGhyZWFkZWQgSVJRcyovDQo+ICsgdGFz
a2xldF9pbml0KCZzbW11LT5ldnRxX2lycV90YXNrbGV0LCBhcm1fc21tdV9ldnRxX3Rhc2tsZXQs
IHNtbXUpOw0KPiArIHRhc2tsZXRfaW5pdCgmc21tdS0+cHJpcV9pcnFfdGFza2xldCwgYXJtX3Nt
bXVfcHJpcV90YXNrbGV0LCBzbW11KTsNCj4gKyB0YXNrbGV0X2luaXQoJnNtbXUtPmNvbWJpbmVk
X2lycV90YXNrbGV0LCBhcm1fc21tdV9jb21iaW5lZF9pcnFfdGFza2xldCwNCj4gKyBzbW11KTsN
Cj4gKw0KPiAvKiBSZXNldCB0aGUgZGV2aWNlICovDQo+IHJldCA9IGFybV9zbW11X2RldmljZV9y
ZXNldChzbW11KTsNCj4gaWYgKHJldCkNCj4gLSBnb3RvIG91dF9mcmVlOw0KPiArIGdvdG8gb3V0
X2ZyZWVfaXJxczsNCj4gDQo+IC8qDQo+ICogS2VlcCBhIGxpc3Qgb2YgYWxsIHByb2JlZCBkZXZp
Y2VzLiBUaGlzIHdpbGwgYmUgdXNlZCB0byBxdWVyeQ0KPiBAQCAtMjU3NSw2ICsyNTc5LDggQEAg
c3RhdGljIGludCBfX2luaXQgYXJtX3NtbXVfZGV2aWNlX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9k
ZXZpY2UgKnBkZXYpDQo+IA0KPiByZXR1cm4gMDsNCj4gDQo+ICtvdXRfZnJlZV9pcnFzOg0KPiAr
IGFybV9zbW11X2ZyZWVfaXJxcyhzbW11KTsNCj4gDQo+IG91dF9mcmVlOg0KPiBhcm1fc21tdV9m
cmVlX3N0cnVjdHVyZXMoc21tdSk7DQo+IEBAIC0yODU1LDYgKzI4NjEsOTYgQEAgc3RhdGljIHZv
aWQgYXJtX3NtbXVfaW9tbXVfeGVuX2RvbWFpbl90ZWFyZG93bihzdHJ1Y3QgZG9tYWluICpkKQ0K
PiB4ZnJlZSh4ZW5fZG9tYWluKTsNCj4gfQ0KPiANCj4gKyNpZmRlZiBDT05GSUdfU1lTVEVNX1NV
U1BFTkQNCj4gKw0KPiArc3RhdGljIHZvaWQgYXJtX3NtbXVfcmVzZXRfZm9yX3N1c3BlbmRfcm9s
bGJhY2soc3RydWN0IGFybV9zbW11X2RldmljZSAqc21tdSkNCj4gK3sNCj4gKyBpbnQgcmV0ID0g
YXJtX3NtbXVfZGV2aWNlX3Jlc2V0KHNtbXUpOw0KPiArDQo+ICsgaWYgKCByZXQgKQ0KPiArIGRl
dl9lcnIoc21tdS0+ZGV2LCAiRmFpbGVkIHRvIHJlc2V0IGR1cmluZyBzdXNwZW5kIHJvbGxiYWNr
OiAlZFxuIiwNCj4gKyByZXQpOw0KPiArfQ0KPiArDQo+ICtzdGF0aWMgaW50IGFybV9zbW11X3N1
c3BlbmQodm9pZCkNCj4gK3sNCj4gKyBzdHJ1Y3QgYXJtX3NtbXVfZGV2aWNlICpzbW11Ow0KPiAr
IGludCByZXQgPSAwOw0KPiArDQo+ICsgbGlzdF9mb3JfZWFjaF9lbnRyeShzbW11LCAmYXJtX3Nt
bXVfZGV2aWNlcywgZGV2aWNlcykNCj4gKyB7DQo+ICsgYm9vbCB3ZmUgPSAhIShzbW11LT5mZWF0
dXJlcyAmIEFSTV9TTU1VX0ZFQVRfU0VWKTsNCj4gKw0KPiArIC8qIEFib3J0IGFsbCB0cmFuc2Fj
dGlvbnMgYmVmb3JlIGRpc2FibGUgdG8gYXZvaWQgc3B1cmlvdXMgYnlwYXNzICovDQo+ICsgcmV0
ID0gYXJtX3NtbXVfdXBkYXRlX2dicGEoc21tdSwgR0JQQV9BQk9SVCwgMCk7DQo+ICsgaWYgKCBy
ZXQgKQ0KPiArIGdvdG8gZmFpbDsNCj4gKw0KPiArIC8qIERpc2FibGUgdGhlIFNNTVUgdmlhIENS
MC5FTiBhbmQgYWxsIHF1ZXVlcyBleGNlcHQgQ01EUSAqLw0KPiArIHJldCA9IGFybV9zbW11X3dy
aXRlX3JlZ19zeW5jKHNtbXUsIENSMF9DTURRRU4sIEFSTV9TTU1VX0NSMCwNCj4gKyBBUk1fU01N
VV9DUjBBQ0spOw0KPiArIGlmICggcmV0ICkNCj4gKyB7DQo+ICsgZGV2X2VycihzbW11LT5kZXYs
ICJUaW1lZC1vdXQgd2hpbGUgZGlzYWJsaW5nIHNtbXVcbiIpOw0KPiArIGdvdG8gZmFpbDsNCj4g
KyB9DQo+ICsNCj4gKyAvKg0KPiArICogQXQgdGhpcyBwb2ludCB0aGUgU01NVSBpcyBjb21wbGV0
ZWx5IGRpc2FibGVkIGFuZCB3b24ndCBhY2Nlc3MNCj4gKyAqIGFueSB0cmFuc2xhdGlvbi9jb25m
aWcgc3RydWN0dXJlcywgZXZlbiBzcGVjdWxhdGl2ZSBhY2Nlc3Nlcw0KPiArICogYXJlbid0IHBl
cmZvcm1lZCBhcyBwZXIgdGhlIElISTAwNzAgc3BlYyAoc2VjdGlvbiA2LjMuOS42KS4NCj4gKyAq
Lw0KPiArDQo+ICsgLyogV2FpdCBmb3IgdGhlIENNRFFzIHRvIGJlIGRyYWluZWQgdG8gZmx1c2gg
YW55IHBlbmRpbmcgY29tbWFuZHMgKi8NCj4gKyByZXQgPSBxdWV1ZV9wb2xsX2NvbnMoJnNtbXUt
PmNtZHEucSwgdHJ1ZSwgd2ZlKTsNCj4gKyBpZiAoIHJldCApDQo+ICsgew0KPiArIGRldl9lcnIo
c21tdS0+ZGV2LCAiRHJhaW5pbmcgcXVldWVzIHRpbWVkLW91dFxuIik7DQo+ICsgZ290byBmYWls
Ow0KPiArIH0NCg0KcG9sbGluZyB0aGUgcXVldWUgZG9lc27igJl0IGdpdmUgeW91IHRoZSBhc3N1
cmFuY2UgdGhhdCBhbGwgcHJpb3IgY29tbWFuZHMgYXJlIGNvbXBsZXRlLA0KSSB3b3VsZCB1c2Ug
YXJtX3NtbXVfY21kcV9pc3N1ZV9zeW5jIGZvciB0aGF0IGluc3RlYWQgb2YgdGhlIGFib3ZlLg0K
DQpyZXQgPSBhcm1fc21tdV9jbWRxX2lzc3VlX3N5bmMoc21tdSk7DQppZiAoIHJldCApDQogICBn
b3RvIGZhaWw7DQoNCj4gKw0KPiArIC8qIERpc2FibGUgZXZlcnl0aGluZyAqLw0KPiArIHJldCA9
IGFybV9zbW11X2RldmljZV9kaXNhYmxlKHNtbXUpOw0KPiArIGlmICggcmV0ICkNCj4gKyBnb3Rv
IGZhaWw7DQo+ICsNCj4gKyBkZXZfZGJnKHNtbXUtPmRldiwgIlN1c3BlbmRlZCBzbW11XG4iKTsN
Cj4gKyB9DQo+ICsNCj4gKyByZXR1cm4gMDsNCj4gKw0KPiArIGZhaWw6DQo+ICsgLyogUmVzZXQg
dGhlIGRldmljZSB0aGF0IGZhaWxlZCBhcyB3ZWxsIGFzIGFueSBhbHJlYWR5LXN1c3BlbmRlZCBv
bmVzLiAqLw0KPiArIGFybV9zbW11X3Jlc2V0X2Zvcl9zdXNwZW5kX3JvbGxiYWNrKHNtbXUpOw0K
PiArDQo+ICsgbGlzdF9mb3JfZWFjaF9lbnRyeV9jb250aW51ZV9yZXZlcnNlKHNtbXUsICZhcm1f
c21tdV9kZXZpY2VzLCBkZXZpY2VzKQ0KPiArIGFybV9zbW11X3Jlc2V0X2Zvcl9zdXNwZW5kX3Jv
bGxiYWNrKHNtbXUpOw0KPiArDQo+ICsgcmV0dXJuIHJldDsNCj4gK30NCj4gKw0KDQpDaGVlcnMs
DQpMdWNhDQoNCg0K


From xen-devel-bounces@lists.xenproject.org Mon Apr 27 14:51:33 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 27 Apr 2026 14:51:33 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1294993.1571693 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wHNIp-0006Pb-65; Mon, 27 Apr 2026 14:51:15 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1294993.1571693; Mon, 27 Apr 2026 14:51: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 1wHNIp-0006PU-32; Mon, 27 Apr 2026 14:51:15 +0000
Received: by outflank-mailman (input) for mailman id 1294993;
 Mon, 27 Apr 2026 14:51:14 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <Luca.Fancellu@arm.com>) id 1wHNIo-0006PO-7x
 for xen-devel@lists.xenproject.org; Mon, 27 Apr 2026 14:51:14 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wHNIn-0090wQ-6G
 for xen-devel@lists.xenproject.org; Mon, 27 Apr 2026 16:51:13 +0200
Received: from [10.42.69.5] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <Luca.Fancellu@arm.com>)
 id 69ef77d9-5cb7-0a2a0a5109dd-0a2a4505e23c-24
 for <xen-devel@lists.xenproject.org>; Mon, 27 Apr 2026 16:51:12 +0200
Received: from [40.107.159.31]
 (helo=OSPPR02CU001.outbound.protection.outlook.com)
 by tlsNG-c201ff.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.1)
 (envelope-from <Luca.Fancellu@arm.com>)
 id 69ef77e0-aaa8-0a2a45050019-286b9f1f66b3-3
 for <xen-devel@lists.xenproject.org>; Mon, 27 Apr 2026 16:51:12 +0200
Received: from AS4P189CA0062.EURP189.PROD.OUTLOOK.COM (2603:10a6:20b:659::9)
 by AS8PR08MB8802.eurprd08.prod.outlook.com (2603:10a6:20b:5bc::11) with
 Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9846.26; Mon, 27 Apr
 2026 14:51:07 +0000
Received: from AMS0EPF000001B5.eurprd05.prod.outlook.com
 (2603:10a6:20b:659:cafe::38) by AS4P189CA0062.outlook.office365.com
 (2603:10a6:20b:659::9) with Microsoft SMTP Server (version=TLS1_3,
 cipher=TLS_AES_256_GCM_SHA384) id 15.20.9846.26 via Frontend Transport; Mon,
 27 Apr 2026 14:51:06 +0000
Received: from outbound-uk1.az.dlp.m.darktrace.com (4.158.2.129) by
 AMS0EPF000001B5.mail.protection.outlook.com (10.167.16.169) with Microsoft
 SMTP Server (version=TLS1_3, cipher=TLS_AES_256_GCM_SHA384) id 15.20.9846.18
 via Frontend Transport; Mon, 27 Apr 2026 14:51:06 +0000
Received: from DU2PR08MB7272.eurprd08.prod.outlook.com (2603:10a6:10:2d7::16)
 by AM0PR08MB5521.eurprd08.prod.outlook.com (2603:10a6:208:18a::19)
 with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9846.26; Mon, 27 Apr
 2026 14:50:03 +0000
Received: from DU2PR08MB7272.eurprd08.prod.outlook.com
 ([fe80::5d34:206f:373:a323]) by DU2PR08MB7272.eurprd08.prod.outlook.com
 ([fe80::5d34:206f:373:a323%6]) with mapi id 15.20.9846.025; Mon, 27 Apr 2026
 14:50:03 +0000
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@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=arm.com header.i="@arm.com" header.h="From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck"; dkim=pass header.s=selector1 header.d=arm.com header.i="@arm.com" header.h="From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck"
ARC-Seal: i=2; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=pass;
 b=nuXJkp2BQRN1uV9VZnZWaBeZtnwuT15LJyDp+khBk8h3dcZSbh/amXMc+8F4noebaYMU9AOq2E4rraUBwdC0pS9g+2s7qhGUppVZbjFveeA8NrFRIS9Epa1Ej8RcjEE1U8VwKm1PKbQh8bkDCV9O4OyxdWtGUWch39MVCHjD71/CMxRBie6jOpd7nJ70MLnjPFGYbHozWnSX63LhWvJEyZNchcJxbiby8ed4uYPrhxlpiSqGW9XNLskzi+uP5HDdZs2W7TfYwQcwGmM35HA0dDEDwPsgwuU6GcUUIG+6R69R71GRuJX21DV51AzSpFZXhU6sS147fzJvN7/vtMvAkg==
ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com;
 s=arcselector10001;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1;
 bh=Id1XX/7OPoW70pEXSKEcjuXma5hQPyIU4q01hyPib7A=;
 b=Fe/YBAYly0hfJwvuhzDJPldSgPPlalaTWCC5q5h7nhyIAIUpgap8SpSErzjFlpw8WGjgLvhEYMG5B2aOeXVN1dUYpueY2GAKG39aGTonR24hfpYkRoy0jAYFttA5mgeqAlj6QoRMVfk8TSKZksCdRE2fdqmgJHzyZ3W/XjMWPq1cur3VT76OPt5Btiv3orSlWsFgemloNVYukSoUb3RMHTjrZAjPM0EEZaOXSmzX6sZa3X+WXc5ohBTkDzpdck+IYDpmNtqsPRBHeaR0AI3G2w1GHphwePq31k0pc5Mf1TrqqtdaKHbd6dT1Yl3w6itBKq8ctRWXhXtoMS7EpguIJw==
ARC-Authentication-Results: i=2; mx.microsoft.com 1; spf=pass (sender ip is
 4.158.2.129) smtp.rcpttodomain=gmail.com smtp.mailfrom=arm.com; dmarc=pass
 (p=none sp=none pct=100) action=none header.from=arm.com; dkim=pass
 (signature was verified) header.d=arm.com; arc=pass (0 oda=1 ltdi=1
 spf=[1,1,smtp.mailfrom=arm.com] dkim=[1,1,header.d=arm.com]
 dmarc=[1,1,header.from=arm.com])
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=arm.com; s=selector1;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck;
 bh=Id1XX/7OPoW70pEXSKEcjuXma5hQPyIU4q01hyPib7A=;
 b=BOtjwP0cU7Wqu9q0JpGVqr7808JxRq2fj56RCFgL6nlSBq9qKzNMwNxtX/l5pKMuQK9Dblq4DYkcgHVcEJiSmTm2V+q2d0zsXjRDMEb1LrBluFdJaRNXVBtcV/0TMTuUbmQtrhvqHLK6TLPpS0RZ0Aojrga0/AWh1JmhaTbPdBQ=
X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 4.158.2.129)
 smtp.mailfrom=arm.com; dkim=pass (signature was verified)
 header.d=arm.com;dmarc=pass action=none header.from=arm.com;
Received-SPF: Pass (protection.outlook.com: domain of arm.com designates
 4.158.2.129 as permitted sender) receiver=protection.outlook.com;
 client-ip=4.158.2.129; helo=outbound-uk1.az.dlp.m.darktrace.com; pr=C
ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none;
 b=ROW3C6f/JCzNYIrFvJOlGh1aCtFM2IDR7Oc7vSHzOFU1Y9E6kR9fp9iMbEsd43OuOZ5j1V0id86Kz7a2VB97hA1beCvuFEJv5QqhakY1RwlJcjpbPteMSQGyISTrtik3WTe02vrIpNs0gb93FlREnKMSuua8z0FPHG4gIk88YIoMmlMeSIuVSjgsg4svgFU3TM174o25D+xfX0I9le03kPvNCr005JvlvG6hps8hhtFiKLG8q3SK9rFeqljyhh1VaqW1H1DTfXJlwKY09rubSgclcN+JQPumX3dnHpHvqZ5GKGJ0seWiKgODKlYA3quRZm1GXhZlq1+mCe+jK8r7EQ==
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com;
 s=arcselector10001;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1;
 bh=Id1XX/7OPoW70pEXSKEcjuXma5hQPyIU4q01hyPib7A=;
 b=B607JLDunv2du3vaIakznLbLgd9jkpZfBhA803MpReBb+sBqVQsny+LH2qUCmgZ9sbKo2RZlzRLO1MxMBXTccFfv53cuDY6hryft20mX3FGNsLDEo377m5c0vaWSNBWDFsnHsMqRaMwa/EX6LG7a/7tDAulVqkPwbkFhdxO3vuON6duUsTMqBuk5P5TA6oA+H2cTkrelRqi8CwlaBW9UcGQcpVjxE93CeA4nnzJRvCs8iJXD8CXdvEe/67NFN5CMpGOf7cZYDbowOctHkAFI4UZlzG84SPj+JCl020RHclHTxX58Hewgj3ryWJ+BtwdfvR4Ht+DTN0gSp/Q06rh8fA==
ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass
 smtp.mailfrom=arm.com; dmarc=pass action=none header.from=arm.com; dkim=pass
 header.d=arm.com; arc=none
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=arm.com; s=selector1;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck;
 bh=Id1XX/7OPoW70pEXSKEcjuXma5hQPyIU4q01hyPib7A=;
 b=BOtjwP0cU7Wqu9q0JpGVqr7808JxRq2fj56RCFgL6nlSBq9qKzNMwNxtX/l5pKMuQK9Dblq4DYkcgHVcEJiSmTm2V+q2d0zsXjRDMEb1LrBluFdJaRNXVBtcV/0TMTuUbmQtrhvqHLK6TLPpS0RZ0Aojrga0/AWh1JmhaTbPdBQ=
From: Luca Fancellu <Luca.Fancellu@arm.com>
To: Mykola Kvach <xakep.amatop@gmail.com>
CC: "xen-devel@lists.xenproject.org" <xen-devel@lists.xenproject.org>, 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>
Subject: Re: [PATCH v8 10/13] xen/arm: Resume memory management on Xen resume
Thread-Topic: [PATCH v8 10/13] xen/arm: Resume memory management on Xen resume
Thread-Index: AQHc1lUhIk7A8CPopkGFdHGIM/WlPw==
Date: Mon, 27 Apr 2026 14:50:03 +0000
Message-ID: <ECDA0BD5-C2C8-4726-9377-AE4AFBE972AD@arm.com>
References: <cover.1775125380.git.mykola_kvach@epam.com>
 <02b55a02f329d09c9f8b15d97ca9176b3c33017a.1775125380.git.mykola_kvach@epam.com>
In-Reply-To:
 <02b55a02f329d09c9f8b15d97ca9176b3c33017a.1775125380.git.mykola_kvach@epam.com>
Accept-Language: en-GB, en-US
Content-Language: en-US
X-MS-Has-Attach:
X-MS-TNEF-Correlator:
x-mailer: Apple Mail (2.3826.700.81.1.6)
Authentication-Results-Original: dkim=none (message not signed)
 header.d=none;dmarc=none action=none header.from=arm.com;
x-ms-traffictypediagnostic:
	DU2PR08MB7272:EE_|AM0PR08MB5521:EE_|AMS0EPF000001B5:EE_|AS8PR08MB8802:EE_
X-MS-Office365-Filtering-Correlation-Id: 91bda931-9214-4788-2eba-08dea46c6990
x-checkrecipientrouted: true
nodisclaimer: true
X-MS-Exchange-SenderADCheck: 1
X-MS-Exchange-AntiSpam-Relay: 0
X-Microsoft-Antispam-Untrusted:
 BCL:0;ARA:13230040|366016|376014|1800799024|56012099003|18002099003|22082099003|38070700021;
X-Microsoft-Antispam-Message-Info-Original:
 W/Ho2isQ67V3Jck7hGMEzd+iJDIDgbobYxCLDV/PHjh4J0uvzrsCNKN6zMYsNYfDlogcAdW14ZEE6MfckVJhTYFOGRX3L8SUyoLLPie7jsRZ5WD50wAxPd0msw8ckfcnN/iPoOBafUBR4uXseqBPE7FLGzw/rW2oR+hZuiA//JG6cXOVpWbi3TAQFD658EG+ltq8IxNkz29b1YuEh5VwNb9wPiklkoB3ynBufsOgNGrL3WzEVJOmNinIvtIY3I+CuevAihCq2bC4LpSpi4zg0kxrk1klUIMUHPznLrXhpzaIKGQjU7H1fTzY9BRbkHdlbs5W79V6oTleczQEJ789BCaaR1ZjKFyw8wG0+isGrqCXQEwJrarljnm68yZ7amiU7n2AyP3jdNInw4atYQryHC13CllPE0QqEXDFGjsw7n3crpSDBorUAzzfDncy/cPArgQGl7tsgCER1DiTH+6apeg9O+FMRZwf6WjL8EdiZv6a/InNaAPSFYJrSF0B3jA5XrGeoo/ymv7eWKVDzZOJZ8zD+lhgEW1suHivsbnmLoyeScW41nxWARZIXq1JI1dw4+gjRqTrqQVOk8iHoHIMWjJLwSOpbR+Cdy8PNQXBZETwRLrrsXBg8DOuCSFIzFhZLSfQGHjsl8AcGbJoKRLqiERQU0St57LH4z05Z3DT1cFl7TkmblVbd0q+5SnQmYi5V8DG/KSrn3si8iTqQ3f3+ule76stDxG6R56bjvKv9/5+3MpVcrjOy4S5Pt0HkO+CslcTXg5PNCpo031Lo3kZopJrHSEtcEjabC280/79qWI=
X-Forefront-Antispam-Report-Untrusted:
 CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:DU2PR08MB7272.eurprd08.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(366016)(376014)(1800799024)(56012099003)(18002099003)(22082099003)(38070700021);DIR:OUT;SFP:1101;
Content-Type: text/plain; charset="utf-8"
Content-ID: <D0A63FE7F65CEA4B872554045157FCF2@eurprd08.prod.outlook.com>
Content-Transfer-Encoding: base64
MIME-Version: 1.0
X-Exchange-RoutingPolicyChecked:
 BiSDVaGUQn2wvaSWS/K/N6Khxe6hogWUhTSkkTSRhnvB1EHGfvVGCSpIVKAijgl/Cl7pLge5bU3gFq57ZpMnycVuq8iScu0Ls+kt+jIcEsw0XKBMnLIpk5Z/4JOZyhqHD0HZVAI/OrMV6plaenenN0cgX4rJu5Zbtg8Uag2fjVgBPoQ5GaPLSaa7PLPoUq/eqB2iih7XMeKIoU8RrlDoW27vxquBlqedrjCXL/2xMcZm5FZdJS3RxPKfMg6FVpCPVj31+OTytXxQtEcOMrCSqUnUjjLrC5/J2ae+8fJH7oDMSuS6wPD1Bm/8qPKQXzQxDcDKfe9IBdPaF7Nk5+HTug==
X-MS-Exchange-Transport-CrossTenantHeadersStamped: AM0PR08MB5521
X-EOPAttributedMessage: 0
X-MS-Exchange-Transport-CrossTenantHeadersStripped:
 AMS0EPF000001B5.eurprd05.prod.outlook.com
X-MS-PublicTrafficType: Email
X-MS-Office365-Filtering-Correlation-Id-Prvs:
	ef72c2cf-8617-493b-162a-08dea46c43f7
X-Microsoft-Antispam:
	BCL:0;ARA:13230040|14060799003|36860700016|35042699022|376014|82310400026|1800799024|56012099003|18002099003|22082099003;
X-Microsoft-Antispam-Message-Info:
	aWy0vRJI/FfddGoi7TU+M7xFqkbzVgJF7Curs51zVTqO81OFuZjy1QozRRYaB9jzOw+OXsntc5+0oNxSwmA6jPP+k2Pxqs1+Qyf5uD7KoSymRQci0GpNhfnSNOr8k7bJG0B/UbbDA9tp0Vsvt7Wgzkd3Vring6qVNSykTD1oqDjQxrdA3erE5g3SvQwtzOTuPj9aMSo113KEVBFH9FvnCHcBC5EvApQ0szPd4bfS/EeqQ8UtvOOwJ+r7wwUv73/eGytcKUb5n+z7cWybuRvwTjCIJcv0z3i0QxoqwDcKv5c08PWjPhoTSYcBgKBhFlF81GXX3ZoBK3weJckdPoV6WrOpUIwlHLFmjNcfKI7RI3rEoIem/xVNOcg8uRg1YbzJ4GxRGSWwWwKC5TvgQQf8XwzuXOFryYUpzo77MqC5yF64yXlrv+z0WuYwW39jzyZFiRsUyekBUpJ3bP/PPlq9T3jYMlRUxGrOMnFbQSzjRHUnJKK/2eVZGmBI7wpmBDgPEoBxMul1YvUojCRHQLdsmfsPHOAfjUEIHIlxvZl0596DlS6zbRQit4K7FzXJvxXps7d50ZkFPV167mCrLi/Av416kfEb+0tcNW5AJE97VGno9PKdtMskwtFsq4MVJm3nRBe04Nn6nOh/NwhCTzoOz9zEg9F3draiWqkJ0PrpIh2NgmF6PV16xrkpVl74+CuHXFWYC4J2jYhBduz2Wgs1OK1YqIutvB+lqGmHV6ZWVb1CyBZ+HknEzZccM+zyMF+FotXNkieK1byZg/Idhl6KrQ==
X-Forefront-Antispam-Report:
	CIP:4.158.2.129;CTRY:GB;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:outbound-uk1.az.dlp.m.darktrace.com;PTR:InfoDomainNonexistent;CAT:NONE;SFS:(13230040)(14060799003)(36860700016)(35042699022)(376014)(82310400026)(1800799024)(56012099003)(18002099003)(22082099003);DIR:OUT;SFP:1101;
X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1
X-MS-Exchange-AntiSpam-MessageData-0:
	ZOY8u76KkCGWgaBns/mF+qoq7rTLmIwPUnRZ5hQhJtRkjkmmsHsxF09Y6IsKtngc5k46SHaecS9yz59CjZngbKV0XofwJJm0hqZRa3fQeRZgcvhHuEFAuS4dHYPjgsBiGsmNHFAOzzGumZt83Mkoh8dh5zpUfNOr0BG+jQBpsQbII35LgwNyhDQ3SCA28S8KpaFe3mPd4OdWt1oG/zwfdJebCiQRaMdJzJ2Bgb/slVDcqknAdg+QMIOjNh+S+At9b4rUQ7MPnsNQUdJoeJ1QqSbYBRN+azOy+IzDEn2DUu5nDwEXLEgKastUK0k7zuyETZoqpRLeeHq8l6WQ/E1PuMU7c7896e1K3nagGexPxPQSog7CWILJVxgFYNvjm1I3s8g4nQvoAbdlCafCCUG3ICOKV4yalNURmyMe77+YHUCZ2lfsySgFQIb7fxaWrYQo
X-OriginatorOrg: arm.com
X-MS-Exchange-CrossTenant-OriginalArrivalTime: 27 Apr 2026 14:51:06.6733
 (UTC)
X-MS-Exchange-CrossTenant-Network-Message-Id: 91bda931-9214-4788-2eba-08dea46c6990
X-MS-Exchange-CrossTenant-Id: f34e5979-57d9-4aaa-ad4d-b122a662184d
X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=f34e5979-57d9-4aaa-ad4d-b122a662184d;Ip=[4.158.2.129];Helo=[outbound-uk1.az.dlp.m.darktrace.com]
X-MS-Exchange-CrossTenant-AuthSource:
	AMS0EPF000001B5.eurprd05.prod.outlook.com
X-MS-Exchange-CrossTenant-AuthAs: Anonymous
X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem
X-MS-Exchange-Transport-CrossTenantHeadersStamped: AS8PR08MB8802
X-purgate-ID: tlsNG-c201ff/1777301472-E3961443-665E5965/0/0
X-purgate-type: clean
X-purgate-size: 3212

SGkgTXlrb2xhLA0KDQo+IE9uIDIgQXByIDIwMjYsIGF0IDExOjQ1LCBNeWtvbGEgS3ZhY2ggPHhh
a2VwLmFtYXRvcEBnbWFpbC5jb20+IHdyb3RlOg0KPiANCj4gRnJvbTogTWlyZWxhIFNpbW9ub3Zp
YyA8bWlyZWxhLnNpbW9ub3ZpY0BhZ2dpb3MuY29tPg0KPiANCj4gVGhlIE1NVSBtdXN0IGJlIGVu
YWJsZWQgZHVyaW5nIHRoZSByZXN1bWUgcGF0aCBiZWZvcmUgcmVzdG9yaW5nIGNvbnRleHQsDQo+
IGFzIHZpcnR1YWwgYWRkcmVzc2VzIGFyZSB1c2VkIHRvIGFjY2VzcyB0aGUgc2F2ZWQgY29udGV4
dCBkYXRhLg0KPiANCj4gVGhpcyBwYXRjaCBhZGRzIE1NVSBzZXR1cCBkdXJpbmcgcmVzdW1lIGJ5
IHJldXNpbmcgdGhlIGV4aXN0aW5nDQo+IGVuYWJsZV9zZWNvbmRhcnlfY3B1X21tIGZ1bmN0aW9u
LCB3aGljaCBlbmFibGVzIGRhdGEgY2FjaGUgYW5kIHRoZSBNTVUuDQoNCkkgZG9u4oCZdCB1bmRl
cnN0YW5kIHdoZXJlIHRoaXMgbGFzdCBwYXJ0IGhhcHBlbiBpbiB0aGlzIGNvbW1pdDoNCg0KPiBC
ZWZvcmUgdGhlIE1NVSBpcyBlbmFibGVkLCB0aGUgY29udGVudCBvZiBUVEJSMF9FTDIgaXMgY2hh
bmdlZCB0byBwb2ludA0KPiB0byBpbml0X3R0YnIgKHBhZ2UgdGFibGVzIHVzZWQgYXQgcnVudGlt
ZSkuDQo+IA0KPiBTaWduZWQtb2ZmLWJ5OiBNaXJlbGEgU2ltb25vdmljIDxtaXJlbGEuc2ltb25v
dmljQGFnZ2lvcy5jb20+DQo+IFNpZ25lZC1vZmYtYnk6IFNhZWVkIE5vd3NoYWRpIDxzYWVlZC5u
b3dzaGFkaUB4aWxpbnguY29tPg0KPiBTaWduZWQtb2ZmLWJ5OiBNeWt5dGEgUG90dXJhaSA8bXlr
eXRhX3BvdHVyYWlAZXBhbS5jb20+DQo+IFNpZ25lZC1vZmYtYnk6IE15a29sYSBLdmFjaCA8bXlr
b2xhX2t2YWNoQGVwYW0uY29tPg0KPiAtLS0NCj4gQ2hhbmdlcyBpbiB2NzoNCj4gLSBubyBmdW5j
dGlvbmFsIGNoYW5nZXMsIGp1c3QgbW92ZWQgY29tbWl0DQo+IC0tLQ0KPiB4ZW4vYXJjaC9hcm0v
YXJtNjQvaGVhZC5TIHwgMjQgKysrKysrKysrKysrKysrKysrKysrKysrDQo+IDEgZmlsZSBjaGFu
Z2VkLCAyNCBpbnNlcnRpb25zKCspDQo+IA0KPiBkaWZmIC0tZ2l0IGEveGVuL2FyY2gvYXJtL2Fy
bTY0L2hlYWQuUyBiL3hlbi9hcmNoL2FybS9hcm02NC9oZWFkLlMNCj4gaW5kZXggNzJjN2IyNDQ5
OC4uNTk2ZTk2MDE1MiAxMDA2NDQNCj4gLS0tIGEveGVuL2FyY2gvYXJtL2FybTY0L2hlYWQuUw0K
PiArKysgYi94ZW4vYXJjaC9hcm0vYXJtNjQvaGVhZC5TDQo+IEBAIC01NjEsNiArNTYxLDMwIEBA
IEVORChlZmlfeGVuX3N0YXJ0KQ0KPiANCj4gI2VuZGlmIC8qIENPTkZJR19BUk1fRUZJICovDQo+
IA0KPiArI2lmZGVmIENPTkZJR19TWVNURU1fU1VTUEVORA0KPiArDQo+ICtGVU5DKGh5cF9yZXN1
bWUpDQoNCkkgdGhpbmsgd2Ugc2hvdWxkIG1hc2sgYWxsIGV4Y2VwdGlvbnMgaGVyZToNCm1zciBE
QUlGU2V0LCAweGYNCg0KdW50aWwgd2UgcmVzdW1lIGNvcnJlY3RseSB0aGUgc3RhdHVzIChWQkFS
X0VMMiwgZXRjKS4NCg0KPiArICAgICAgICAvKiBJbml0aWFsaXplIHRoZSBVQVJUIGlmIGVhcmx5
cHJpbnRrIGhhcyBiZWVuIGVuYWJsZWQuICovDQo+ICsjaWZkZWYgQ09ORklHX0VBUkxZX1BSSU5U
Sw0KPiArICAgICAgICBibCAgICBpbml0X3VhcnQNCj4gKyNlbmRpZg0KPiArICAgICAgICBQUklO
VF9JRCgiLSBYZW4gcmVzdW1pbmcgLVxyXG4iKQ0KPiArDQo+ICsgICAgICAgIGJsICAgIGNoZWNr
X2NwdV9tb2RlDQo+ICsgICAgICAgIGJsICAgIGNwdV9pbml0DQo+ICsNCj4gKyAgICAgICAgbGRy
ICAgeDAsID1zdGFydA0KPiArICAgICAgICBhZHIgICB4MjAsIHN0YXJ0ICAgICAgICAgICAgIC8q
IHgyMCA6PSBwYWRkciAoc3RhcnQpICovDQo+ICsgICAgICAgIHN1YiAgIHgyMCwgeDIwLCB4MCAg
ICAgICAgICAgLyogeDIwIDo9IHBoeXMtb2Zmc2V0ICovDQo+ICsgICAgICAgIGxkciAgIGxyLCA9
bW11X3Jlc3VtZWQNCj4gKyAgICAgICAgYiAgICAgZW5hYmxlX3NlY29uZGFyeV9jcHVfbW0NCj4g
Kw0KPiArbW11X3Jlc3VtZWQ6DQo+ICsgICAgICAgIGIgLg0KPiArRU5EKGh5cF9yZXN1bWUpDQo+
ICsNCj4gKyNlbmRpZiAvKiBDT05GSUdfU1lTVEVNX1NVU1BFTkQgKi8NCj4gKw0KPiAvKg0KPiAg
KiBMb2NhbCB2YXJpYWJsZXM6DQo+ICAqIG1vZGU6IEFTTQ0KPiANCg0KVGhpcyBpcyBtb3JlIGEg
dHJhbXBvbGluZSBmb3IgdGhlIGNvcmUgcmVzdW1pbmcsIG5vdCBzdXJlIGlmIGl0IGNvdWxkIGJl
IGJldHRlciB0byBzcXVhc2ggdGhpcw0KaW50byB0aGUgZm9sbG93aW5nIHBhdGNoLCB0aGUgbWFp
bnRhaW5lciBjb3VsZCBwcm92aWRlIHRoZWlyIHByZWZlcmVuY2UuDQoNCkNoZWVycywNCkx1Y2EN
Cg0KDQoNCg==


From xen-devel-bounces@lists.xenproject.org Mon Apr 27 15:12:56 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 27 Apr 2026 15:12:56 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1295005.1571703 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wHNdS-00013R-V4; Mon, 27 Apr 2026 15:12:34 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1295005.1571703; Mon, 27 Apr 2026 15: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 1wHNdS-00013K-RE; Mon, 27 Apr 2026 15:12:34 +0000
Received: by outflank-mailman (input) for mailman id 1295005;
 Mon, 27 Apr 2026 15:12:33 +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.19dcf7fbe13000f373@swg.vates.tech>)
 id 1wHNdR-00013E-1c
 for xen-devel@lists.xenproject.org; Mon, 27 Apr 2026 15:12:33 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wHNdP-00CvTB-10
 for xen-devel@lists.xenproject.org; Mon, 27 Apr 2026 17:12:31 +0200
Received: from [10.42.69.4] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1) (envelope-from
 <prod-mta-13.8631fc262581453bbf619ec5b2062170.19dcf7fbe13000f373@swg.vates.tech>)
 id 69ef7cd8-e002-0a2a0a5209dd-0a2a45048a96-12
 for <xen-devel@lists.xenproject.org>; Mon, 27 Apr 2026 17:12:30 +0200
Received: from [185.255.28.34] (helo=prod-mta-13.swg-srv.net)
 by tlsNG-ebf023.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.1)
 (envelope-from
 <prod-mta-13.8631fc262581453bbf619ec5b2062170.19dcf7fbe13000f373@swg.vates.tech>)
 id 69ef7cde-1dec-0a2a45040019-b9ff1c22b521-3
 for <xen-devel@lists.xenproject.org>; Mon, 27 Apr 2026 17:12:30 +0200
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
 19dcf7fbe13000f373.005 for <xen-devel@lists.xenproject.org>
 (version=TLSv1.3 cipher=TLS_AES_256_GCM_SHA384);
 Mon, 27 Apr 2026 15:12:28 +0000
Received: from l14 (lfbn-lyo-1-414-55.w2-7.abo.wanadoo.fr [2.7.24.55])
 (Authenticated sender: anthony.perard)
 by mail2.vates.fr (Postfix) with ESMTPSA id E6ADD877EF;
 Mon, 27 Apr 2026 17:12:27 +0200 (CEST)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@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=nvUq1OCjijHHjCRh3xKqrvTqYw/FcsJE6AeDDs7luOs=;
 h=from:subject:date:message-id:to:cc:mime-version:content-type:in-reply-to:references:feedback-id;
 b=bezpCvCogfbd95bq1MTvtxHGFbcK0G0UjHepu80mo7HbUuVpMAvyfkTySX+ZKp2cQ2ZNdABxM
 2veAYXKB3UFw6jqq2VN5Dd1PJkG4/HIlFVtn2OZS3gxdIm4Yho/rRnQsgfMpNtdqCQWuJ6VpCZ/
 2AvtXkSEjf2IAsfNf2mPEvMs8ZDcG6D78kkrRQWQy2rbirUhiA2vyAqusirbCMpJE9Ly6uS0WDx
 wqTQee+23pTCP6Y65jZuYgBYlj1UgyaMUFx47cF8fwegPuzuJD5jvVp8W0eizxcriTlHX5pIiRt
 6Sb1wwH3eLl6R3fd+bnJGg8Vcuwan2rz+/PnGGyPXHog==
X-Zone-Loop: ac8675518f30b467b204b36589b42707c9958735726f
x-campaign-type: default
x-transaction-id: b01bb53b-b52c-425b-8aa2-57df1fd9b60f
x-swg-uid: 01-f1549c0f-3b67-4b23-82ec-f235ee9cba72
X-Mailer: Sweego
Message-ID:
 <1777302748.8631fc262581453bbf619ec5b2062170.19dcf7fbe13000f373@vates.tech>
x-swg-bid: 1777302748.8631fc262581453bbf619ec5b2062170.19dcf7fbe13000f373
Feedback-ID: default:8631fc262581453bbf619ec5b2062170:Sweego
x-campaign-id: default
x-client-id: 8631fc262581453bbf619ec5b2062170
X-Originating-IP: [37.26.189.201]
Date: Mon, 27 Apr 2026 17:12:27 +0200
From: Anthony PERARD <anthony.perard@vates.tech>
To: Marek =?iso-8859-1?Q?Marczykowski-G=F3recki?= <marmarek@invisiblethingslab.com>
Cc: xen-devel@lists.xenproject.org,
	Andrew Cooper <andrew.cooper3@citrix.com>,
	Stefano Stabellini <sstabellini@kernel.org>,
	Roger Pau =?iso-8859-1?Q?Monn=E9?= <roger.pau@citrix.com>
Subject: Re: [PATCH test-artifacts v3 03/13] Add debian rootfs artifact
References: <cover.bd2e5bd58e4b316c9c1042b1ca8db51b81fb7ea7.1774999132.git-series.marmarek@invisiblethingslab.com>
 <ad97jcRfLG7nXk29@l14>
 <ad_SBvYvvFmOspSQ@mail-itl>
MIME-Version: 1.0
Content-Disposition: inline
In-Reply-To: <ad_SBvYvvFmOspSQ@mail-itl>
X-BM-Disclaimer: Yes
Content-Type: multipart/alternative; boundary="-=Part.29c1.d93e4a476c499e31.19dcf7fbb9a.2d346ab1c18c0856=-"
X-Bm-Milter-Handled: 4ffbd6c1-ee69-4e1b-aabd-f977039bd3e2
X-Bm-Transport-Timestamp: 1777302748058
X-purgate-ID: tlsNG-ebf023/1777302750-32E743FF-0C64F532/0/0
X-purgate-type: clean
X-purgate-size: 4271

---=Part.29c1.d93e4a476c499e31.19dcf7fbb9a.2d346ab1c18c0856=-
Content-Type: text/plain; charset=utf-8
Content-Transfer-Encoding: quoted-printable

On Wed, Apr 15, 2026 at 07:59:34PM +0200, Marek Marczykowski-G=C3=B3recki w=
rote:
> On Wed, Apr 15, 2026 at 11:50:38AM +0000, Anthony PERARD wrote:
> > > diff --git a/scripts/debian-rootfs=2Esh b/scripts/debian-rootfs=2Esh
> > > new file mode 100755
> > > index 000000000000=2E=2E7cb8a96e39c0
> > > --- /dev/null
> > > +++ b/scripts/debian-rootfs=2Esh
> > =2E=2E=2E
> > > +PKGS=3D(
> > > +    # System
> > > +    bridge-utils
> > > +    dropbear
> > > +    udev
> > > +    systemd-sysv
> > > +    iproute2
> > > +    inetutils-ping
> > > +    util-linux
> > > +    cpio
> >=20
> > Is `cpio` going to be used in dom0? The alpine rootfs don't have it=2E
>=20
> Alpine does have it, via busybox=2E That said, I don't see it used in an=
y
> current test=2E

Turns out I'm actually using `cpio` on the Alpine rootfs=2E But the only
reason is to work around a very slow download of the rootfs via the UEFI
firmware (and grub) of the machine=2E I just boot with a smaller rootfs,
then after Linux is started, I download the rootfs that only has the
xentool and extract it with `cpio`=2E (loading the full rootfs over
netboot takes about 15min on that machine)

> > > +# don't need persistent logging, avoid journal flush service
> > > +rmdir var/log/journal
> >=20
> > I think this would better be done with:
> >=20
> >     cat >> /etc/systemd/journald=2Econf=2Ed/storage=2Econf <<EOF
> >     [Journal]
> >     Storage=3Dvolatile
> >     EOF
> >=20
> > because I think systemd intend to change the behavior in future releas=
e,
> > and we are more explicit with a config file=2E
>=20
> +1=20
>=20
> > > +# Create rootfs
> > > +cd /
> > > +{
> > > +    PATHS=3D"bin etc home init lib lib64 mnt opt root sbin srv tmp =
usr var"
> > > +    find $PATHS -print0
> > > +    echo -ne "dev\0proc\0run\0sys\0"
> > > +} | cpio -0 -H newc -o | gzip > "${COPYDIR}/rootfs=2Ecpio=2Egz"
> >=20
> > You should add "-R0:0" to the `cpio` command, like we do for the alpin=
e
> > rootfs=2E
>=20
> Hm, I'm not sure if that's a good idea=2E There are a few intentionally
> non-root files in Debian=2E Right now that is:
>=20
> -rw-r-----   1 root     42            496 Apr  1 01:08 etc/gshadow
> -rw-r-----   1 root     42            564 Apr  1 01:08 etc/shadow
> -rw-r-----   1 root     42            444 Apr  1 01:08 etc/gshadow-
> -rw-r-----   1 root     42            565 Apr  1 01:08 etc/shadow-
> -rwxr-sr-x   1 root     42          31256 Apr 19  2025 usr/bin/expiry
> -rwxr-sr-x   1 root     42         113848 Apr 19  2025 usr/bin/chage
> -rwsr-xr--   1 root     printadm    51272 Mar  8  2025 usr/lib/dbus-1=2E=
0/dbus-daemon-launch-helper
> -rwxr-sr-x   1 root     42          43256 Jun 29  2025 usr/sbin/unix_chk=
pwd
> drwxr-xr-x   2 systemd- systemd-        0 Apr  1 01:08 var/lib/systemd/n=
etwork
> drwxr-xr-x   2 42       root            0 Apr  1 01:07 var/lib/apt/lists=
/auxfiles
> drwx------   2 42       root            0 Apr  1 01:07 var/lib/apt/lists=
/partial
> drwxrwsr-x   2 root     mem             0 Sep  8  2025 var/mail
> -rw-rw-r--   1 root     43              0 Sep  8  2025 var/log/wtmp
> -rw-rw-r--   1 root     43              0 Sep  8  2025 var/log/lastlog
> -rw-rw----   1 root     43              0 Sep  8  2025 var/log/btmp
> -rw-r-----   1 root     adm         31508 Apr  1 01:08 var/log/apt/term=
=2Elog
> drwx------   2 42       root            0 Apr  1 01:08 var/cache/apt/arc=
hives/partial
>=20
> While it _might_ not explode right now if we reset it to root, it may
> cause issues in the future (for example APT likes to run downloads as
> unprivileged user, with write access only to
> /var/lib/apt/lists/partial)=2E

Ah, right, "-R0:0" probably only make sense when we build Xen as a build
user=2E

So, with the change to journald config:
Reviewed-by: Anthony PERARD <anthony=2Eperard@vates=2Etech>

Cheers,


-- 
Anthony Perard | Vates XCP-ng Developer

XCP-ng & Xen Orchestra - Vate=
s solutions

web: https://vates=2Etech
---=Part.29c1.d93e4a476c499e31.19dcf7fbb9a.2d346ab1c18c0856=---


From xen-devel-bounces@lists.xenproject.org Mon Apr 27 15:27:20 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 27 Apr 2026 15:27:20 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1295016.1571711 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wHNrd-0002tj-3R; Mon, 27 Apr 2026 15:27:13 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1295016.1571711; Mon, 27 Apr 2026 15: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 1wHNrd-0002tc-0d; Mon, 27 Apr 2026 15:27:13 +0000
Received: by outflank-mailman (input) for mailman id 1295016;
 Mon, 27 Apr 2026 15:27:11 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <Luca.Fancellu@arm.com>) id 1wHNrb-0002tU-A0
 for xen-devel@lists.xenproject.org; Mon, 27 Apr 2026 15:27:11 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wHNra-005tYx-JM
 for xen-devel@lists.xenproject.org; Mon, 27 Apr 2026 17:27:10 +0200
Received: from [10.42.69.7] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <Luca.Fancellu@arm.com>)
 id 69ef8048-2eae-0a2a0a5409dd-0a2a4507a43c-10
 for <xen-devel@lists.xenproject.org>; Mon, 27 Apr 2026 17:27:09 +0200
Received: from [52.101.72.16]
 (helo=AM0PR02CU008.outbound.protection.outlook.com)
 by tlsNG-ef75cf.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.1)
 (envelope-from <Luca.Fancellu@arm.com>)
 id 69ef804d-229c-0a2a45070019-34654810e918-3
 for <xen-devel@lists.xenproject.org>; Mon, 27 Apr 2026 17:27:09 +0200
Received: from AS9PR06CA0718.eurprd06.prod.outlook.com (2603:10a6:20b:49f::33)
 by AM8PR08MB5715.eurprd08.prod.outlook.com (2603:10a6:20b:1d7::18)
 with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9846.26; Mon, 27 Apr
 2026 15:27:05 +0000
Received: from AM4PEPF00027A6C.eurprd04.prod.outlook.com
 (2603:10a6:20b:49f:cafe::e4) by AS9PR06CA0718.outlook.office365.com
 (2603:10a6:20b:49f::33) with Microsoft SMTP Server (version=TLS1_3,
 cipher=TLS_AES_256_GCM_SHA384) id 15.20.9846.26 via Frontend Transport; Mon,
 27 Apr 2026 15:27:05 +0000
Received: from outbound-uk1.az.dlp.m.darktrace.com (4.158.2.129) by
 AM4PEPF00027A6C.mail.protection.outlook.com (10.167.16.90) with Microsoft
 SMTP Server (version=TLS1_3, cipher=TLS_AES_256_GCM_SHA384) id 15.20.9846.18
 via Frontend Transport; Mon, 27 Apr 2026 15:27:05 +0000
Received: from DU2PR08MB7272.eurprd08.prod.outlook.com (2603:10a6:10:2d7::16)
 by AS8PR08MB10077.eurprd08.prod.outlook.com (2603:10a6:20b:63e::19)
 with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9846.26; Mon, 27 Apr
 2026 15:26:00 +0000
Received: from DU2PR08MB7272.eurprd08.prod.outlook.com
 ([fe80::5d34:206f:373:a323]) by DU2PR08MB7272.eurprd08.prod.outlook.com
 ([fe80::5d34:206f:373:a323%6]) with mapi id 15.20.9846.025; Mon, 27 Apr 2026
 15:26: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=arm.com header.i="@arm.com" header.h="From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck"; dkim=pass header.s=selector1 header.d=arm.com header.i="@arm.com" header.h="From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck"
ARC-Seal: i=2; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=pass;
 b=hzNBD8tbCo75YoFLpEFLN0s0MAso36PZKZs7oZtKbTeKkyWdeNTQvYXLvep48AS4ZXW3ibRP73hT9i2zCUTr2sxsbpsA/4xYIGsDJNQRlS2AAIzvQeiTPA081bo6CpcBfW+YPUSo4JKPDDJl4C/TDeVLnfOQeQuweu2YVMtw+zTjAr4Fu5jrkcJ4G+WJ3Nh374M/mjRh7WYzkfxEyMT5radZu1OzEb5veIZRYthbR1Rt9HGCM1Nc7ZoOXuqoCiPmsdkZo8MR6+e3GbQUip7b/9dw3z4ABjIyptSq3v8c9ajpIp1GbmbRvXBbP3v3TfZX0IsPD1YD/eEenoeJR6X6yQ==
ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com;
 s=arcselector10001;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1;
 bh=s4ShT6GvlSujcGQUnL7CVoen9wfpB10+b/cLPUQSSlU=;
 b=IwyrY6SbjrpydkzdjLarmos67XINQZhDhOw1HsVPc6O7/Fhc2ifatiNyJ5NXSTK/beEq4xJsgVYxktvHB0yHZGI/Yf9Xfj3zt1quLEuxaH3QOFgyTgfQV9HWM4+Z1f/flLD/mqWjf8RaecmD82amJDlBD8KlyTCNVHuyDEYsSpwPdb2A/ENrklNihG1qdBL5ll8SQw6qHrixSjyNG84336YI4OYgGN7P5eY8p1hgA8vacCZxcW9oWoDlyrh8CLYfzr6z70295+eXH3vmIcX4korjJlpptyOTfBy9vch+sYPqKwi6/H9PGB0WeYFsyYGvE3Qu2W5XwilqcCNWAd6kHw==
ARC-Authentication-Results: i=2; mx.microsoft.com 1; spf=pass (sender ip is
 4.158.2.129) smtp.rcpttodomain=gmail.com smtp.mailfrom=arm.com; dmarc=pass
 (p=none sp=none pct=100) action=none header.from=arm.com; dkim=pass
 (signature was verified) header.d=arm.com; arc=pass (0 oda=1 ltdi=1
 spf=[1,1,smtp.mailfrom=arm.com] dkim=[1,1,header.d=arm.com]
 dmarc=[1,1,header.from=arm.com])
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=arm.com; s=selector1;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck;
 bh=s4ShT6GvlSujcGQUnL7CVoen9wfpB10+b/cLPUQSSlU=;
 b=MCpvPDoreGZHUWPlf+3sOuD+I+ZTxEEeJrTJnPLAbCaVvKMZjY1jSn6d3yi650A/yihLsHuTy/7Q+tPnk0fbj2PZUGBEEOLL4uonhUY5zvpk5ujDoD4V9bVW7bxddeIzQAhO76t5WAb+3M6Oa+IrvQwqenQOwCVe4VOrcGmbTrw=
X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 4.158.2.129)
 smtp.mailfrom=arm.com; dkim=pass (signature was verified)
 header.d=arm.com;dmarc=pass action=none header.from=arm.com;
Received-SPF: Pass (protection.outlook.com: domain of arm.com designates
 4.158.2.129 as permitted sender) receiver=protection.outlook.com;
 client-ip=4.158.2.129; helo=outbound-uk1.az.dlp.m.darktrace.com; pr=C
ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none;
 b=UghylKoLGh0KDuIrnxyhTdfkXidFPmVP9XrB/67KdPmzBSGzmtB94/ZXEqiPwJmIAx1XDNQtNip3/BE3wQ6+1fP+01FkCPQPh0ihnn6V12zQPqtBM9oueN3MpNlTLWyEyOlIMt4qwziPvkEwI5ytNHNkZrkctSMOBUfR3U4rXOhar/GnZqgcAz3MNo1B0/dfl/fZjjgQMu4ys4t+NVlRUfpnEosqSa1VZd96htG6ZES515Z/1mTqpPtdZ4Xh0FS5Q/QjbQhfPCr3PG753V+yrwFMEZ53HC1cVrtOWp3LGPbDjWWKiLVctv839rKAeRFzFYJ4WWiEh/7aUspw5ZF8wg==
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com;
 s=arcselector10001;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1;
 bh=s4ShT6GvlSujcGQUnL7CVoen9wfpB10+b/cLPUQSSlU=;
 b=FrbJVk7qrHZnWIXyxcT2LVbpM2/SHLES/2pSQgD8QcCzAst0bMRje0DTjkkTddSICVr/wuTC2wybCkkBUoCrPrWliuNqeigMF1RCeOi5SqSsrcE5ITPqy2Dc/EQ++RMH0sr5WDGYHlMrOp78sVWbvLaGbwUfDVcg2B9nVH7HxJ6WBPz+dtOd9PDTzKrNS/Ygwe5vhTfj0zn6MnlkngfcoDH7MYdWrjTbvIKnwrcvhBku6WG8J+Z0EMFXpFJl4/mfpUMKc9l1xdxV9u/0ZNHaVcbSjW4GP7lfJQVmnqELskXQ/vNNnPI3yYXgqsHwnSLaLeMpPTsr/phTv8uPL+BVqA==
ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass
 smtp.mailfrom=arm.com; dmarc=pass action=none header.from=arm.com; dkim=pass
 header.d=arm.com; arc=none
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=arm.com; s=selector1;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck;
 bh=s4ShT6GvlSujcGQUnL7CVoen9wfpB10+b/cLPUQSSlU=;
 b=MCpvPDoreGZHUWPlf+3sOuD+I+ZTxEEeJrTJnPLAbCaVvKMZjY1jSn6d3yi650A/yihLsHuTy/7Q+tPnk0fbj2PZUGBEEOLL4uonhUY5zvpk5ujDoD4V9bVW7bxddeIzQAhO76t5WAb+3M6Oa+IrvQwqenQOwCVe4VOrcGmbTrw=
From: Luca Fancellu <Luca.Fancellu@arm.com>
To: Mykola Kvach <xakep.amatop@gmail.com>
CC: "xen-devel@lists.xenproject.org" <xen-devel@lists.xenproject.org>, 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>
Subject: Re: [PATCH v8 11/13] xen/arm: Save/restore context on suspend/resume
Thread-Topic: [PATCH v8 11/13] xen/arm: Save/restore context on suspend/resume
Thread-Index: AQHc1lonfl/HZr0bRU6yMGs4M1GHKA==
Date: Mon, 27 Apr 2026 15:26:00 +0000
Message-ID: <BF235081-E9F4-48E1-BDE2-854DBAFAAA7F@arm.com>
References: <cover.1775125380.git.mykola_kvach@epam.com>
 <f87a2bcb6b09e95e07e51c27541ad91406e849d1.1775125380.git.mykola_kvach@epam.com>
In-Reply-To:
 <f87a2bcb6b09e95e07e51c27541ad91406e849d1.1775125380.git.mykola_kvach@epam.com>
Accept-Language: en-GB, en-US
Content-Language: en-US
X-MS-Has-Attach:
X-MS-TNEF-Correlator:
x-mailer: Apple Mail (2.3826.700.81.1.6)
Authentication-Results-Original: dkim=none (message not signed)
 header.d=none;dmarc=none action=none header.from=arm.com;
x-ms-traffictypediagnostic:
	DU2PR08MB7272:EE_|AS8PR08MB10077:EE_|AM4PEPF00027A6C:EE_|AM8PR08MB5715:EE_
X-MS-Office365-Filtering-Correlation-Id: 10676d10-920f-4394-c849-08dea471700d
x-checkrecipientrouted: true
nodisclaimer: true
X-MS-Exchange-SenderADCheck: 1
X-MS-Exchange-AntiSpam-Relay: 0
X-Microsoft-Antispam-Untrusted:
 BCL:0;ARA:13230040|376014|366016|1800799024|56012099003|18002099003|22082099003|38070700021;
X-Microsoft-Antispam-Message-Info-Original:
 a/rwLwgr5y8rLdfdwbnyJWejl+B8qgCsyPZBrLMAbrlLtNzAOsEffQWjb/pbjxcBMH1k4xo1mSbupRCO5FJSogklFn4dfZIip1KvpLHTOclgNGmBmzF8OjMb9IE6QVBADxCNEYfAwsbQEzfSHOGGilTVdGGukLgH/2v507Tk7O//IVBkk17ogftBYqClUwDToqarnwEb3lxuam90irgDLY2p8efS4R5Txaay8jW9s5+rknSD/besTDC5pl43z2TZk0cuf9mlXi2pUqJlnY0SE4+ZJ3hHDQwCw3ZAleFLQKvNnjqHhCiP/lsav2qUWHXccDVQlRL393na6pb4IBkfpDW6+zjK9C3anOrGKbX/5V6DP1wmIOrkbaNgfG/Uf5zKaE8t+pLMNJ8lDjmZLqB9e32p1RTgmyCloNzv1CXPvUtLpIOIgdzQY2d6Z9yhwaZGyZ/TQONgBAwd96IEjQ76KA8x0+wEJkFUvc1KU/TENnxBUO7/JBrm8h5OPZduLl86FZHPolQ/xMvYe47dgznxwRXf0IoM8d+HiS192AEnb/dKI+2/2Bnlq4y26D20VQEZqwWF3Ozv9GtmY01vXMcvuceIn3FVsSvWQpa7I/d/zHiKV8wjHqnMrxjcBHgDqhxqepUObX5KtqwsdKd/46gCm0TcVjfXQvkwW3Yw3SlqgdHGRxL3og5iiT/djVYITMT1s1kswbrllk0uhiCYoxviVNI86WkTBdaJp8nserU2wMmEfceiMCS2jrcy2y+45LoFP9Cp1xf7DpS8EsErYJBu4sfEEQ4GjcsJZ3lpCATr9SE=
X-Forefront-Antispam-Report-Untrusted:
 CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:DU2PR08MB7272.eurprd08.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(376014)(366016)(1800799024)(56012099003)(18002099003)(22082099003)(38070700021);DIR:OUT;SFP:1101;
Content-Type: text/plain; charset="utf-8"
Content-ID: <E73D316B94ADB54F862ED2AB71004E43@eurprd08.prod.outlook.com>
Content-Transfer-Encoding: base64
MIME-Version: 1.0
X-Exchange-RoutingPolicyChecked:
 P0fdS0X+1iG/eBdWvORxFlq26VKhhigVCp6Z83wiLvtNiFKzkE51iTRxb/54tbEsLHT9ByjcR8Ia3PsZUMr8d4ndJomgmdESxy0HN2BrgCFEH1QHo2ycOJh2NSmuKTYda+qgUdLRPWGNICB9p4F7lbZZ1eM81v05kEZQVoBPnDlNBxzOTzvtdxwlO/O0wB85Hc2Hz5d4CJvDHAYdb7cslcos9zG81QrFQysPMBBPaqMtPUR2XxE3XKBmC/pl15CVoVlpwlzsCkh9i5JRxXIk1+9DBcJlmMYK27pNoXDWQUJP8lSRgo0/HLUWTN8/A2rHBzkIQt7L5+KoZYMTwxAy/g==
X-MS-Exchange-Transport-CrossTenantHeadersStamped: AS8PR08MB10077
X-EOPAttributedMessage: 0
X-MS-Exchange-Transport-CrossTenantHeadersStripped:
 AM4PEPF00027A6C.eurprd04.prod.outlook.com
X-MS-PublicTrafficType: Email
X-MS-Office365-Filtering-Correlation-Id-Prvs:
	603728b6-175f-489b-7f9a-08dea47149b1
X-Microsoft-Antispam:
	BCL:0;ARA:13230040|36860700016|35042699022|14060799003|82310400026|1800799024|376014|56012099003|18002099003|22082099003;
X-Microsoft-Antispam-Message-Info:
	uZfxt5RSf0SU0jX1rwD7mCzoeueaeIC7IEs/xWmyzOXyD9f5xmfHHvdrOvSfjvnTdVRYSNec1Cq4JU/TWq8BDzJ395g30JYmDT6byXYBFOTfeZpAtC6IV/O/KqmCnPh/L8fvBDxrTStyRPjzkzXFpqKFMkn32f027A3EElzQXwEmYeJ7CLzEM0OFZqz1DOIolkshZUxHHHrI+WABayw6x2158ExXsPJvIVvdY2D3MnEqKpIV/4sdGyvvx2x7qOv2PJmr1ZUYBtTq1cWzMbgXjFoYp8SaiUl+2zJmWWs/0f9S+Ud6yR9dBp9s5TrROO8+STtPoeO2IIWu40JPHhS3TtAfGJ1FyyZG1kQyrAskKqTiaTStWBdm5SMhQ6VVfX1th9OciXPEHhXEDH0IITaZrCW3UbptJKHIgtoWXxIwQKj7wjF29B537Cxvl+bPfVbYgIFGGIGJQpimqHssHkSxxEXY3VAwaSVK0LXPTf8i/IKNfeHSZvpa84wDakLDqLPPdEiooq7ajxt2dswVWMD2Mg6sh1f0om/RJs1aYkj/2aEcviUyKoaGtbt6jlJ5H9reFHwKZs4EPERmEcIx8BjwegA/puNfSVoOLxCLvx62u8PrxKD9F6q/BWmGVPrfuuJKnnKOhdcH1oGNu6CDdrGZPDQngNaW2RSsv1AuKwbimu/t4SWjYXgRkbOARllxSmw06MHh3YiY2hPdWDc25Q7iH9zg0wLzQM2OLF7AVf9EU6SkNON5BU3s04KlxwIloovBtYjWs0WXyuWx77Ls3L8Glw==
X-Forefront-Antispam-Report:
	CIP:4.158.2.129;CTRY:GB;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:outbound-uk1.az.dlp.m.darktrace.com;PTR:InfoDomainNonexistent;CAT:NONE;SFS:(13230040)(36860700016)(35042699022)(14060799003)(82310400026)(1800799024)(376014)(56012099003)(18002099003)(22082099003);DIR:OUT;SFP:1101;
X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1
X-MS-Exchange-AntiSpam-MessageData-0:
	ne29DuKG8nJmoXMDL61WVq4zi0n5RYCr/alsIAKxI+UQQfSix3fWLH2pyqMe/s9n8lRNHHPRSrFcBDDsPkCTQS/b1HiW9kq6jv1HoJubTY1czLR4nlEbbLvHZSh8v0Xp81S6vuXd/N/DdxkYe21VM+lLme+YgA9MFHyvETUYsop/fHO5dlt6A27tMY+TuaSOiENh2MHuXWZSXDq0DTb9eS01NPEQx4XKSnHYN4o284659/0oHjDMY4M75FUYTR+STbidpqWo4zl/cQMr6U0oLHg6pOLNn4W2rLpm+SexbpZoElXfE+plTrXkm1kwx2MSWo8Q340orBLYzDqO/05JeH+NpG+cET4K03+jXIl5iCV24qw691NNfGAX+mWN2h5lNskh+M5Jn42Uud2yr/b8k48Egf0xuOfUnUtIImbhAAm1rc39TzNenvhz2D4w//hM
X-OriginatorOrg: arm.com
X-MS-Exchange-CrossTenant-OriginalArrivalTime: 27 Apr 2026 15:27:05.0470
 (UTC)
X-MS-Exchange-CrossTenant-Network-Message-Id: 10676d10-920f-4394-c849-08dea471700d
X-MS-Exchange-CrossTenant-Id: f34e5979-57d9-4aaa-ad4d-b122a662184d
X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=f34e5979-57d9-4aaa-ad4d-b122a662184d;Ip=[4.158.2.129];Helo=[outbound-uk1.az.dlp.m.darktrace.com]
X-MS-Exchange-CrossTenant-AuthSource:
	AM4PEPF00027A6C.eurprd04.prod.outlook.com
X-MS-Exchange-CrossTenant-AuthAs: Anonymous
X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem
X-MS-Exchange-Transport-CrossTenantHeadersStamped: AM8PR08MB5715
X-purgate-ID: tlsNG-ef75cf/1777303629-2B77AC48-2817BC72/0/0
X-purgate-type: clean
X-purgate-size: 2398

SGkgTXlrb2xhLA0KDQo+IE9uIDIgQXByIDIwMjYsIGF0IDExOjQ1LCBNeWtvbGEgS3ZhY2ggPHhh
a2VwLmFtYXRvcEBnbWFpbC5jb20+IHdyb3RlOg0KPiANCj4gRnJvbTogTWlyZWxhIFNpbW9ub3Zp
YyA8bWlyZWxhLnNpbW9ub3ZpY0BhZ2dpb3MuY29tPg0KPiANCj4gVGhlIGNvbnRleHQgb2YgQ1BV
IGdlbmVyYWwgcHVycG9zZSBhbmQgc3lzdGVtIGNvbnRyb2wgcmVnaXN0ZXJzIG11c3QgYmUNCj4g
c2F2ZWQgb24gc3VzcGVuZCBhbmQgcmVzdG9yZWQgb24gcmVzdW1lLiBUaGlzIGlzIGltcGxlbWVu
dGVkIGluDQo+IHByZXBhcmVfcmVzdW1lX2N0eCBhbmQgYmVmb3JlIHRoZSByZXR1cm4gZnJvbSB0
aGUgaHlwX3Jlc3VtZSBmdW5jdGlvbi4NCj4gVGhlIHByZXBhcmVfcmVzdW1lX2N0eCBtdXN0IGJl
IGludm9rZWQganVzdCBiZWZvcmUgdGhlIFBTQ0kgc3lzdGVtIHN1c3BlbmQNCj4gY2FsbCBpcyBp
c3N1ZWQgdG8gdGhlIEFURi4gVGhlIHByZXBhcmVfcmVzdW1lX2N0eCBtdXN0IHJldHVybiBhIG5v
bi16ZXJvDQo+IHZhbHVlIHNvIHRoYXQgdGhlIGNhbGxpbmcgJ2lmJyBzdGF0ZW1lbnQgZXZhbHVh
dGVzIHRvIHRydWUsIGNhdXNpbmcgdGhlDQo+IHN5c3RlbSBzdXNwZW5kIHRvIGJlIGludm9rZWQu
IFVwb24gcmVzdW1lLCB0aGUgY29udGV4dCBzYXZlZCBvbiBzdXNwZW5kDQo+IHdpbGwgYmUgcmVz
dG9yZWQsIGluY2x1ZGluZyB0aGUgbGluayByZWdpc3Rlci4gVGhlcmVmb3JlLCBhZnRlcg0KPiBy
ZXN0b3JpbmcgdGhlIGNvbnRleHQsIHRoZSBjb250cm9sIGZsb3cgd2lsbCByZXR1cm4gdG8gdGhl
IGFkZHJlc3MNCj4gcG9pbnRlZCB0byBieSB0aGUgc2F2ZWQgbGluayByZWdpc3Rlciwgd2hpY2gg
aXMgdGhlIHBsYWNlIGZyb20gd2hpY2gNCj4gcHJlcGFyZV9yZXN1bWVfY3R4IHdhcyBjYWxsZWQu
IFRvIGVuc3VyZSB0aGF0IHRoZSBjYWxsaW5nICdpZicgc3RhdGVtZW50DQo+IGRvZXMgbm90IGFn
YWluIGV2YWx1YXRlIHRvIHRydWUgYW5kIGluaXRpYXRlIHN5c3RlbSBzdXNwZW5kLCBoeXBfcmVz
dW1lDQo+IG11c3QgcmV0dXJuIGEgemVybyB2YWx1ZSBhZnRlciByZXN0b3JpbmcgdGhlIGNvbnRl
eHQuDQo+IA0KPiBOb3RlIHRoYXQgdGhlIG9yZGVyIG9mIHNhdmluZyByZWdpc3RlciBjb250ZXh0
IGludG8gY3B1X2NvbnRleHQgc3RydWN0dXJlDQo+IG11c3QgbWF0Y2ggdGhlIG9yZGVyIG9mIHJl
c3RvcmluZy4NCj4gDQo+IFN1cHBvcnQgZm9yIEFSTTMyIGlzIG5vdCBpbXBsZW1lbnRlZC4gSW5z
dGVhZCwgY29tcGlsYXRpb24gZmFpbHMgd2l0aCBhDQo+IGJ1aWxkLXRpbWUgZXJyb3IgaWYgc3Vz
cGVuZCBpcyBlbmFibGVkIGZvciBBUk0zMi4NCj4gDQo+IFNpZ25lZC1vZmYtYnk6IE1pcmVsYSBT
aW1vbm92aWMgPG1pcmVsYS5zaW1vbm92aWNAYWdnaW9zLmNvbT4NCj4gU2lnbmVkLW9mZi1ieTog
U2FlZWQgTm93c2hhZGkgPHNhZWVkLm5vd3NoYWRpQHhpbGlueC5jb20+DQo+IFNpZ25lZC1vZmYt
Ynk6IE15a3l0YSBQb3R1cmFpIDxteWt5dGFfcG90dXJhaUBlcGFtLmNvbT4NCj4gU2lnbmVkLW9m
Zi1ieTogTXlrb2xhIEt2YWNoIDxteWtvbGFfa3ZhY2hAZXBhbS5jb20+DQo+IC0tLQ0KDQpUaGlz
IHBhdGNoIGxvb2tzIG9rIHRvIG1lLCBJ4oCZbGwgbGVhdmUgbXkgUi1ieSB3aGVuIG1haW50YWlu
ZXJzIHdpbGwgZ2l2ZSBhbiBvcGluaW9uDQphYm91dCBzcXVhc2hpbmcgdGhpcyBvbmUgd2l0aCB0
aGUgcHJldmlvdXMgb25lLg0KDQpDaGVlcnMsDQpMdWNhDQoNCg0KDQo=


From xen-devel-bounces@lists.xenproject.org Mon Apr 27 15:34:52 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 27 Apr 2026 15:34:52 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1295026.1571724 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wHNyp-0004ky-41; Mon, 27 Apr 2026 15:34:39 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1295026.1571724; Mon, 27 Apr 2026 15:34: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 1wHNyo-0004km-VU; Mon, 27 Apr 2026 15:34:38 +0000
Received: by outflank-mailman (input) for mailman id 1295026;
 Mon, 27 Apr 2026 15:34:37 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92) id 1wHNyn-0004h0-Dx
 for xen-devel@lists.xenproject.org; Mon, 27 Apr 2026 15:34:37 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wHNym-005DEt-NA
 for xen-devel@lists.xenproject.org; Mon, 27 Apr 2026 17:34:36 +0200
Received: from [10.42.69.8] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <oleksii.kurochko@gmail.com>)
 id 69ef81f4-e002-0a2a0a5209dd-0a2a4508ec26-16
 for <xen-devel@lists.xenproject.org>; Mon, 27 Apr 2026 17:34:36 +0200
Received: from [209.85.128.54] (helo=mail-wm1-f54.google.com)
 by tlsNG-c1860d.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.1)
 (envelope-from <oleksii.kurochko@gmail.com>)
 id 69ef820c-63b5-0a2a45080019-d1558036d83d-3
 for <xen-devel@lists.xenproject.org>; Mon, 27 Apr 2026 17:34:36 +0200
Received: by mail-wm1-f54.google.com with SMTP id
 5b1f17b1804b1-4891c00e7aeso78057725e9.2
 for <xen-devel@lists.xenproject.org>; Mon, 27 Apr 2026 08:34:36 -0700 (PDT)
Received: from fedora (user-109-243-69-121.play-internet.pl. [109.243.69.121])
 by smtp.gmail.com with ESMTPSA id
 5b1f17b1804b1-488fc1c0354sm737076355e9.11.2026.04.27.08.34.34
 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
 Mon, 27 Apr 2026 08:34:34 -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=20251104 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=20251104; t=1777304076; x=1777908876; 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;
        bh=M/P5e4xXherIeaejZwj9DdoItZcrKaqfgLMdEPxMeGI=;
        b=IXF9hNbYg0XEuMVt+TzOvTbAdjKfju9/Ln05E2+qXMeMdkJk8D8yY27AwOGAPcuhs0
         a/KDq6MGQlzDAATD9UI5tofMJIcFos8duZNHsorcuGNIG9PCsMGP0H2we3EKYPP4aJ45
         tLo4YwVnU1tBoVj+64kdc+2/4OtubFTPXt4ifpmlX0FXbwJ1bcNSPc9m1uahnoRjsxV7
         17WZI1n0k7XEm0DnOU3S9b8PzGsyWjdVLQjQULO4PdKDiMMfwBtTMk3YmrgsF8zKPB4h
         hbDQkeBK/80NEGKeX53EIkloa9ryCw+7ckQm+TZilXmEQmOoAfXwfLFhcDA7fI9dMeLR
         Mpeg==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20251104; t=1777304076; x=1777908876;
        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;
        bh=M/P5e4xXherIeaejZwj9DdoItZcrKaqfgLMdEPxMeGI=;
        b=HjMac7tvkvIOJqSdDjJ7ps9h4AFrnutszJJyF2MnewelpjlUxbvYeVzhXe4EghUBF7
         gSBYvdiZ0diOybkNKIJlsWlvLnxqg5nUGv4IHkjeNP/BqynmwjGaPUAYXM/rGqSSEv+/
         0d8mDD6oiQCas1lrYEO8u/GVhsnRQSiqDyOEGIylwSIIHMUzLghqqhZVYbZ8l1FllgEp
         uWA6Uzc02FViO7RCDACbNT1CTr/SHFyzSsSd/fr51VMdlUinx6iU1/Upou9kY+iI2iHW
         ID9+9HKciuL2WV3pGCQ5KgAeecZ2i2PGa3vk3BU193abaC1OwqJzxMumzYFtLxEQ2V6B
         ASlg==
X-Gm-Message-State: AOJu0YxC8Q0elGcXhWt1zlbjDrXeJ5pAFuNetBuu0groeCSC52sEmXFg
	PQVvaZcQrkH3vQ0UcO0TWKcwS3zK6dEJZnAaXXMBQur1HYsVooNszIWSa8AImQ==
X-Gm-Gg: AeBDievG+1aGB9yHMD6jtazcl1oG7lyoHXr/0PI2JJRmTfDnVcSnGDCYgf0GuuWHVUa
	dFW98KQw4OL3hb0qvdRlr0mlYAhFs0MzDw5qGHiMS3eTPxeVzQfBDXWKzRt4HxL2aXOJoWbMjyY
	lrzj1OdaJWo1fb/wiDBNJTZcTBIR7U5ua5yB4vtdbAQv1bvLQbLc9KxV2cPTgZjqfgq8zkDDHl3
	YX9xCYPc3p16yHn941Tv9smJ5/7GDlgyoDj0hhDrGe9qHkkeT8E6ubgxkp96lOevQ4gE57Qqzww
	sbcoaMlHTVL3OvmC9uzT+yZ7rk12zZNOu1jnLyafLFX7rqUR6Yoy24gGyiVMhKDMw6ryBtvPABB
	TuOhirNrjQKQrLLQtcdmtvwZNSWGvJqclnhNs0QNaUZ4StMv/r0rNv2ne9THA1VQAqNbpZImk3E
	rMroa/QWzbxFUuuhRBqzGar8pQ47ef7QdjBPn+Zp9KmSFwyOLhBNWxN5ey6ucQCp0mPhKQu0fCl
	lIq
X-Received: by 2002:a05:600c:1907:b0:489:201c:dc46 with SMTP id 5b1f17b1804b1-489201cdf13mr426972005e9.12.1777304075162;
        Mon, 27 Apr 2026 08:34:35 -0700 (PDT)
From: Oleksii Kurochko <oleksii.kurochko@gmail.com>
To: xen-devel@lists.xenproject.org
Cc: Romain Caritey <Romain.Caritey@microchip.com>,
	Oleksii Kurochko <oleksii.kurochko@gmail.com>,
	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?q?Roger=20Pau=20Monn=C3=A9?= <roger.pau@citrix.com>
Subject: [PATCH v4 1/3] xen/dom0less: introduce next_phandle in struct kernel_info
Date: Mon, 27 Apr 2026 17:34:23 +0200
Message-ID: <3822f12057ecc9d51b314308b0e32a85e83a7558.1777296786.git.oleksii.kurochko@gmail.com>
X-Mailer: git-send-email 2.53.0
In-Reply-To: <cover.1777296786.git.oleksii.kurochko@gmail.com>
References: <cover.1777296786.git.oleksii.kurochko@gmail.com>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit
X-purgate-ID: tlsNG-c1860d/1777304076-3A776DB1-10E9FD48/10/73395122804
X-purgate-type: spam
X-purgate-size: 6329

There are cases where it is necessary to know the next available phandle
number in order to generate phandles for guest device nodes.

When a partial FDT (pfdt) is provided, special care is needed during
initialization of next_phandle, as the pfdt may already contain a dummy
interrupt controller node with a phandle assigned to it. next_phandle
must therefore be initialized to one past the highest phandle already
present in the pfdt, to avoid collisions.

Since next_phandle may be needed for the very first guest node generated,
domain_handle_dtb_boot_module() is moved earlier in prepare_dtb_domU().
The new call site also aligns better with the existing comment stating
that domain_handle_dtb_boot_module() must be called before the rest of
the device tree is generated.

Introduce alloc_phandle() to ensure that phandles allocated for guest
nodes do not overlap the Xen-reserved phandle range.  This helper will
be used by subsequent patches (by RISC-V at the moment).

Signed-off-by: Oleksii Kurochko <oleksii.kurochko@gmail.com>
Reviewed-by: Michal Orzel <michal.orzel@amd.com>
---
Here is an example of generated guest DTB:
    cpus {
    ...
      cpu@0 {
    ...
        interrupt-controller {
          compatible = "riscv,cpu-intc";
          #interrupt-cells = <0x1>;
          interrupt-controller;
          phandle = <0xfdea>;
        };
      };
    };

    /soc/imsics@28000000 {

      interrupts-extended = <0xfdea 0x9 >;

      phandle = <0xfdeb>;
    };

    /soc/aplic@d000000 {
    ...
      msi-parent = <0xfdeb>;
      phandle = <0x1>;
    };

Note that phandle is generated in this example not by get_next_free_phandle().

For non RISC-V people, APLIC is an interrupt controller (something like GIC in
Arm), IMSIC it is interrupt controller which provides MSI and connects to
each CPU.

[1] https://www.kernel.org/doc/Documentation/devicetree/bindings/interrupt-controller/riscv%2Ccpu-intc.txt
---
Changes in v4:
 - Add Reviewed-by: Michal Orzel <michal.orzel@amd.com>
---
Changes in v3:
 - Drop BUG_ON(GUEST_PHANDLE_GIC == 1).
 - Update the comment above declaration of next_phandle field of srtuct
   kernel_info.
---
Changes in v2:
 - s/free_phandle/next_phandle.
 - s/get_next_free_phandle/alloc_phandle.
---
 xen/common/device-tree/dom0less-build.c | 43 ++++++++++++++++++-------
 xen/include/xen/fdt-domain-build.h      |  6 ++++
 xen/include/xen/fdt-kernel.h            |  6 ++++
 3 files changed, 43 insertions(+), 12 deletions(-)

diff --git a/xen/common/device-tree/dom0less-build.c b/xen/common/device-tree/dom0less-build.c
index 840d14419da2..9787ee264975 100644
--- a/xen/common/device-tree/dom0less-build.c
+++ b/xen/common/device-tree/dom0less-build.c
@@ -389,6 +389,24 @@ static int __init domain_handle_dtb_boot_module(struct domain *d,
     if ( res < 0 )
         goto out;
 
+    /*
+     * Find the highest phandle in the partial FDT so next_phandle starts
+     * above it, avoiding collisions with pfdt's own phandle assignments.
+     */
+    res = fdt_generate_phandle(pfdt, &kinfo->next_phandle);
+    if ( res )
+    {
+        res = (res == -FDT_ERR_NOPHANDLES) ? -EOVERFLOW : -EINVAL;
+        goto out;
+    }
+
+    if ( kinfo->next_phandle >= GUEST_PHANDLE_GIC )
+    {
+        dprintk(XENLOG_ERR, "Phandle allocation overlaps Xen reserved range\n");
+        res = -EOVERFLOW;
+        goto out;
+    }
+
     for ( node_next = fdt_first_subnode(pfdt, 0);
           node_next > 0;
           node_next = fdt_next_subnode(pfdt, node_next) )
@@ -459,6 +477,7 @@ static int __init prepare_dtb_domU(struct domain *d, struct kernel_info *kinfo)
     BUILD_BUG_ON(DOMU_DTB_SIZE > SZ_2M);
 
     kinfo->phandle_intc = GUEST_PHANDLE_GIC;
+    kinfo->next_phandle = 1;
 
 #ifdef CONFIG_GRANT_TABLE
     kinfo->gnttab_start = GUEST_GNTTAB_BASE;
@@ -499,6 +518,18 @@ static int __init prepare_dtb_domU(struct domain *d, struct kernel_info *kinfo)
     if ( ret )
         goto err;
 
+    /*
+     * domain_handle_dtb_boot_module() must be called before the rest of the
+     * device tree is generated because it sets phandle_intc and next_phandle,
+     * which subsequent node generation depends on.
+     */
+    if ( kinfo->dtb )
+    {
+        ret = domain_handle_dtb_boot_module(d, kinfo);
+        if ( ret )
+            goto err;
+    }
+
     ret = make_chosen_node(kinfo);
     if ( ret )
         goto err;
@@ -516,18 +547,6 @@ static int __init prepare_dtb_domU(struct domain *d, struct kernel_info *kinfo)
     if ( ret )
         goto err;
 
-    /*
-     * domain_handle_dtb_boot_module has to be called before the rest of
-     * the device tree is generated because it depends on the value of
-     * the field phandle_intc.
-     */
-    if ( kinfo->dtb )
-    {
-        ret = domain_handle_dtb_boot_module(d, kinfo);
-        if ( ret )
-            goto err;
-    }
-
     ret = make_intc_domU_node(kinfo);
     if ( ret )
         goto err;
diff --git a/xen/include/xen/fdt-domain-build.h b/xen/include/xen/fdt-domain-build.h
index 886a85381651..fd2ba01ff0f4 100644
--- a/xen/include/xen/fdt-domain-build.h
+++ b/xen/include/xen/fdt-domain-build.h
@@ -63,6 +63,12 @@ int find_unallocated_memory(const struct kernel_info *kinfo,
                                       unsigned long e_gfn,
                                       void *data));
 
+/* Return 0 (invalid phandle) if the Xen-reserved range has been reached */
+static inline uint32_t alloc_phandle(struct kernel_info *kinfo)
+{
+    return kinfo->next_phandle >= GUEST_PHANDLE_GIC ? 0 : kinfo->next_phandle++;
+}
+
 #endif /* __XEN_FDT_DOMAIN_BUILD_H__ */
 
 /*
diff --git a/xen/include/xen/fdt-kernel.h b/xen/include/xen/fdt-kernel.h
index 33a60597bb4d..4d0467bb396a 100644
--- a/xen/include/xen/fdt-kernel.h
+++ b/xen/include/xen/fdt-kernel.h
@@ -44,6 +44,12 @@ struct kernel_info {
     /* Interrupt controller phandle */
     uint32_t phandle_intc;
 
+    /*
+     * Next free phandle for guest device nodes; do not access directly, use
+     * alloc_phandle().
+     */
+    uint32_t next_phandle;
+
     /* loader to use for this kernel */
     void (*load)(struct kernel_info *info);
 
-- 
2.53.0



From xen-devel-bounces@lists.xenproject.org Mon Apr 27 15:34:52 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 27 Apr 2026 15:34:52 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1295028.1571746 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wHNyq-0005LS-RF; Mon, 27 Apr 2026 15:34:40 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1295028.1571746; Mon, 27 Apr 2026 15: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 1wHNyq-0005LF-O7; Mon, 27 Apr 2026 15:34:40 +0000
Received: by outflank-mailman (input) for mailman id 1295028;
 Mon, 27 Apr 2026 15:34:39 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92) id 1wHNyp-0004sz-IL
 for xen-devel@lists.xenproject.org; Mon, 27 Apr 2026 15:34:39 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wHNyo-00GEYf-V8
 for xen-devel@lists.xenproject.org; Mon, 27 Apr 2026 17:34:38 +0200
Received: from [10.42.69.6] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <oleksii.kurochko@gmail.com>)
 id 69ef8201-bab6-0a2a0a5309dd-0a2a4506eb28-18
 for <xen-devel@lists.xenproject.org>; Mon, 27 Apr 2026 17:34:38 +0200
Received: from [209.85.128.42] (helo=mail-wm1-f42.google.com)
 by tlsNG-16d1c6.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.1)
 (envelope-from <oleksii.kurochko@gmail.com>)
 id 69ef820e-7371-0a2a45060019-d155802ab08e-3
 for <xen-devel@lists.xenproject.org>; Mon, 27 Apr 2026 17:34:38 +0200
Received: by mail-wm1-f42.google.com with SMTP id
 5b1f17b1804b1-483487335c2so102261365e9.2
 for <xen-devel@lists.xenproject.org>; Mon, 27 Apr 2026 08:34:38 -0700 (PDT)
Received: from fedora (user-109-243-69-121.play-internet.pl. [109.243.69.121])
 by smtp.gmail.com with ESMTPSA id
 5b1f17b1804b1-488fc1c0354sm737076355e9.11.2026.04.27.08.34.36
 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
 Mon, 27 Apr 2026 08:34:37 -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=20251104 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=20251104; t=1777304078; x=1777908878; 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;
        bh=XqFH3ZM0YOXaw4rO6uZDoJyrUUgd988+AjZxylZcJqk=;
        b=hG4hcAXjKDtekz+7N3uQKjRhGgPIXx2Q048Huem2LkP5l0nKZmVCLQ/FIym7iOTqc1
         wv1pnBrbikxQdhMTVKFi4wBB7vTvkXacDWiN9jYrFq6SxR4O9bq5Uopx0nR5QkjdPj6W
         8+95iYBVyf1CTDN8qXhLNXgYVySLSCIBPPNTrSHw7WNYg/aCGVTW/faqAqqlB0gO7BSj
         KiIIzZphk5Ednm9IKUjLuInAPdzIf3rmbem8oZQOymWPayTdSsXZ+el6YpVzeC3o6J3M
         4nEjbFuhaUxV8iXn7C4RF72EkPMMUuLszZAz26Ea5O1WKDGzQN/Qa5oGG1cR4uhHugx1
         BUzg==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20251104; t=1777304078; x=1777908878;
        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;
        bh=XqFH3ZM0YOXaw4rO6uZDoJyrUUgd988+AjZxylZcJqk=;
        b=gLlywsGtMp6nyAh7B63xvCHgpvlmlA9sgfsuvreLQDz0fsn0MXCSy3eTsqgNNI09Ut
         /R23XCufL/3lEi8JvotJ0/ejRFZVPT9AA89ZekN2Q5wFnaQnZ6NPnOg7hELFjncpfHKT
         evFENNWIn4G89Ixa+9XVVtYspEfaopfyVNnHWRO53DCAkUvatrvgfmlbiYYFSme75N8n
         DeYLCoK6iH29ZLh6QSemvQLJrzdFEzYdcpKBPfkyWlekZ39Yz22LKwo0dTnNaDv/aNxk
         kWLiiT6ecBu0yji+RGNjMpGUs6C2o2cGomcWczhrqZ9bWjP4RJChl/GytSuak5bCs44m
         ByWQ==
X-Gm-Message-State: AOJu0Yxw92QgSwDA45dnGzV3jLU25Ja084/XuwJnarGdYXC6TfESpV8s
	f2u3YFlQ0p0jAxRnY6bgAKruqL1hwI3fs2O0WkFSE9yJVesJGcnrEgfxlH8H6A==
X-Gm-Gg: AeBDiet9CauMc8E6uxXj5IJlTr1j6Fv45PDDr4HX3XOJu6XkSj4msXjnHkMQLaools9
	yyvUs3ouQlMbRLk/kgfj/wURoOJfrJVHke/IRs8fGXQj+WqECsI05qM6FP6HAD8FTKJOPbbfRr4
	a5tkPWDaVfxZah/CZKhlvN+uUXJLZPB5xJ10htwKDGkgSPZWvw8en7gy60BfZnYStUAWd66MI2m
	8tgzb/AZnuKPUC0AHCgIvBKa3ZrZJwnWBRimuRI8VxcDdu15d/WFPzDeWEuXyHgUSdEhN9J/H/h
	Chto9nAe1DeJ0ymfUVjhSvTvbY54VZ0KfID9PoddI8EO+4N0LMwRCZgavzv7xdqQUOPKefHmlaI
	SuWypz8tlazz+fwgauIOZbTZ9hVL4rAzhgHk9deBNKu6tZ2HYJwhZUPo0dWqT/PMVPOSU6yooom
	Fx32W4WcV3kzZTKcydVGSnTsz9mwabUwHbdtoAolSc5nfy3W6MFXSGpJJL+7d7ntzf3tBK5l5A7
	mMx
X-Received: by 2002:a05:600c:c177:b0:486:fb0b:ad79 with SMTP id 5b1f17b1804b1-488fb78129emr551476665e9.20.1777304077912;
        Mon, 27 Apr 2026 08:34:37 -0700 (PDT)
From: Oleksii Kurochko <oleksii.kurochko@gmail.com>
To: xen-devel@lists.xenproject.org
Cc: Romain Caritey <Romain.Caritey@microchip.com>,
	Oleksii Kurochko <oleksii.kurochko@gmail.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?q?Roger=20Pau=20Monn=C3=A9?= <roger.pau@citrix.com>
Subject: [PATCH v4 3/3] xen: introduce CONFIG_HAS_DOMAIN_TYPE
Date: Mon, 27 Apr 2026 17:34:25 +0200
Message-ID: <7c91e1a705e1046be4af1c5671a8d91cf3557013.1777296786.git.oleksii.kurochko@gmail.com>
X-Mailer: git-send-email 2.53.0
In-Reply-To: <cover.1777296786.git.oleksii.kurochko@gmail.com>
References: <cover.1777296786.git.oleksii.kurochko@gmail.com>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit
X-purgate-ID: tlsNG-16d1c6/1777304078-5156ED75-0A6DE078/10/73395122804
X-purgate-type: spam
X-purgate-size: 11569

As domain type is part of common code now there is no any reason
to have architecture-specific set_domain_type() functions so
it is dropped.

Change the guard around access of kinfo->type to CONFIG_HAS_DOMAIN_TYPE
for consistency. Also, drop and add some parentheses to be aligned
with the similar if() below.

x86 with CONFIG_64BIT=y shouldn't use is_{32,64}bit_domain() as
x86 doesn't have support of CONFIG_HAS_DOMAIN_TYPE. Since x86_32 Xen no
longer builds, the fallback is currently only relevant for arm32.

Signed-off-by: Oleksii Kurochko <oleksii.kurochko@gmail.com>
Reviewed-by: Michal Orzel <michal.orzel@amd.com>
---
Changes in v4:
 - Drop enum domain_type type; from Arm's struct arch_domain.
 - Add Reviewed-by: Michal Orzel <michal.orzel@amd.com>.
---
Changes in v3:
 - Sort properly HAS_DOMAIN_TYPE in xen/common/Kconfig.
 - Update the comment above is_*bit_domain() macros.
---
Changes in v2:
 - Update the commit message.
 - Move HAS_DOMAIN_TYPE to xen/common/Kconfig.
 - Return set_domain_type(), move it to xen/fdt-domain-build.h and make it
   static inline.
 - s/CONFIG_ARM_64/CONFIG_HAS_DOMAIN for the places where kinfo->type is used.
 - Drop parantethes around cpu_has_el1_32 in if() and add around
   (kinfo->type == DOMAIN_32BIT) to be consistent with the similar check below.
 - Fix comment code style.
 - Add __packed to definition of enum domain_type
---
 xen/arch/arm/Kconfig               |  1 +
 xen/arch/arm/arm64/domctl.c        |  4 ++--
 xen/arch/arm/dom0less-build.c      | 14 --------------
 xen/arch/arm/domain_build.c        | 12 +++++-------
 xen/arch/arm/include/asm/domain.h  | 16 ----------------
 xen/arch/arm/include/asm/kernel.h  |  4 ----
 xen/arch/arm/kernel.c              | 16 ++++++++--------
 xen/common/Kconfig                 |  3 +++
 xen/include/xen/dom0less-build.h   |  2 --
 xen/include/xen/domain.h           | 13 +++++++++++++
 xen/include/xen/fdt-domain-build.h |  9 +++++++++
 xen/include/xen/fdt-kernel.h       |  5 +++++
 xen/include/xen/sched.h            |  4 ++++
 13 files changed, 50 insertions(+), 53 deletions(-)

diff --git a/xen/arch/arm/Kconfig b/xen/arch/arm/Kconfig
index 2f2b501fdac4..79622b46a10d 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_DOMAIN_TYPE
 	select HAS_FAST_MULTIPLY
 	select HAS_VPCI_GUEST_SUPPORT if PCI_PASSTHROUGH
 
diff --git a/xen/arch/arm/arm64/domctl.c b/xen/arch/arm/arm64/domctl.c
index 8720d126c97d..9e9a29eb1e78 100644
--- a/xen/arch/arm/arm64/domctl.c
+++ b/xen/arch/arm/arm64/domctl.c
@@ -21,10 +21,10 @@ static long switch_mode(struct domain *d, enum domain_type type)
         return -EINVAL;
     if ( domain_tot_pages(d) != 0 )
         return -EBUSY;
-    if ( d->arch.type == type )
+    if ( d->type == type )
         return 0;
 
-    d->arch.type = type;
+    d->type = type;
 
     if ( is_64bit_domain(d) )
         for_each_vcpu(d, v)
diff --git a/xen/arch/arm/dom0less-build.c b/xen/arch/arm/dom0less-build.c
index 4181c105389a..6f73c65e5151 100644
--- a/xen/arch/arm/dom0less-build.c
+++ b/xen/arch/arm/dom0less-build.c
@@ -237,20 +237,6 @@ int __init make_arch_nodes(struct kernel_info *kinfo)
     return 0;
 }
 
-/* TODO: make arch.type generic ? */
-#ifdef CONFIG_ARM_64
-void __init set_domain_type(struct domain *d, struct kernel_info *kinfo)
-{
-    /* type must be set before allocate memory */
-    d->arch.type = kinfo->arch.type;
-}
-#else
-void __init set_domain_type(struct domain *d, struct kernel_info *kinfo)
-{
-    /* Nothing to do */
-}
-#endif
-
 int __init init_vuart(struct domain *d, struct kernel_info *kinfo,
                       const struct dt_device_node *node)
 {
diff --git a/xen/arch/arm/domain_build.c b/xen/arch/arm/domain_build.c
index a3ff70102376..ad665cd3c045 100644
--- a/xen/arch/arm/domain_build.c
+++ b/xen/arch/arm/domain_build.c
@@ -1771,15 +1771,15 @@ int __init construct_domain(struct domain *d, struct kernel_info *kinfo)
     BUG_ON(d->vcpu[0] == NULL);
     BUG_ON(v->is_initialised);
 
-#ifdef CONFIG_ARM_64
+#ifdef CONFIG_HAS_DOMAIN_TYPE
     /* if aarch32 mode is not supported at EL1 do not allow 32-bit domain */
-    if ( !(cpu_has_el1_32) && kinfo->arch.type == DOMAIN_32BIT )
+    if ( !cpu_has_el1_32 && (kinfo->type == DOMAIN_32BIT) )
     {
         printk("Platform does not support 32-bit domain\n");
         return -EINVAL;
     }
 
-    if ( is_sve_domain(d) && (kinfo->arch.type == DOMAIN_32BIT) )
+    if ( is_sve_domain(d) && (kinfo->type == DOMAIN_32BIT) )
     {
         printk("SVE is not available for 32-bit domain\n");
         return -EINVAL;
@@ -1893,10 +1893,8 @@ int __init construct_hwdom(struct kernel_info *kinfo,
 
     iommu_hwdom_init(d);
 
-#ifdef CONFIG_ARM_64
-    /* type must be set before allocate_memory */
-    d->arch.type = kinfo->arch.type;
-#endif
+    set_domain_type(d, kinfo);
+
     find_gnttab_region(d, kinfo);
     if ( is_domain_direct_mapped(d) )
         allocate_memory_11(d, kinfo);
diff --git a/xen/arch/arm/include/asm/domain.h b/xen/arch/arm/include/asm/domain.h
index ffe5d0d9f0a6..b24f02d269be 100644
--- a/xen/arch/arm/include/asm/domain.h
+++ b/xen/arch/arm/include/asm/domain.h
@@ -18,18 +18,6 @@ struct hvm_domain
     uint64_t              params[HVM_NR_PARAMS];
 };
 
-#ifdef CONFIG_ARM_64
-enum domain_type {
-    DOMAIN_32BIT,
-    DOMAIN_64BIT,
-};
-#define is_32bit_domain(d) ((d)->arch.type == DOMAIN_32BIT)
-#define is_64bit_domain(d) ((d)->arch.type == DOMAIN_64BIT)
-#else
-#define is_32bit_domain(d) (1)
-#define is_64bit_domain(d) (0)
-#endif
-
 /*
  * Is the domain using the host memory layout?
  *
@@ -62,10 +50,6 @@ struct paging_domain {
 
 struct arch_domain
 {
-#ifdef CONFIG_ARM_64
-    enum domain_type type;
-#endif
-
 #ifdef CONFIG_ARM64_SVE
     /* max SVE encoded vector length */
     uint8_t sve_vl;
diff --git a/xen/arch/arm/include/asm/kernel.h b/xen/arch/arm/include/asm/kernel.h
index 7c3b7fde5b64..21f4273fa1b5 100644
--- a/xen/arch/arm/include/asm/kernel.h
+++ b/xen/arch/arm/include/asm/kernel.h
@@ -10,10 +10,6 @@
 
 struct arch_kernel_info
 {
-#ifdef CONFIG_ARM_64
-    enum domain_type type;
-#endif
-
     /* Enable pl011 emulation */
     bool vpl011;
 };
diff --git a/xen/arch/arm/kernel.c b/xen/arch/arm/kernel.c
index 7544fd50a20f..9395b5af8745 100644
--- a/xen/arch/arm/kernel.c
+++ b/xen/arch/arm/kernel.c
@@ -100,8 +100,8 @@ static paddr_t __init kernel_zimage_place(struct kernel_info *info)
     const struct membanks *mem = kernel_info_get_mem(info);
     paddr_t load_addr;
 
-#ifdef CONFIG_ARM_64
-    if ( (info->arch.type == DOMAIN_64BIT) && (info->zimage.start == 0) )
+#ifdef CONFIG_HAS_DOMAIN_TYPE
+    if ( (info->type == DOMAIN_64BIT) && (info->zimage.start == 0) )
         return mem->bank[0].start + info->zimage.text_offset;
 #endif
 
@@ -268,14 +268,14 @@ int __init kernel_uimage_probe(struct kernel_info *info,
 
     info->load = kernel_zimage_load;
 
-#ifdef CONFIG_ARM_64
+#ifdef CONFIG_HAS_DOMAIN_TYPE
     switch ( uimage.arch )
     {
     case IH_ARCH_ARM:
-        info->arch.type = DOMAIN_32BIT;
+        info->type = DOMAIN_32BIT;
         break;
     case IH_ARCH_ARM64:
-        info->arch.type = DOMAIN_64BIT;
+        info->type = DOMAIN_64BIT;
         break;
     default:
         printk(XENLOG_ERR "Unsupported uImage arch type %d\n", uimage.arch);
@@ -345,7 +345,7 @@ static int __init kernel_zimage64_probe(struct kernel_info *info,
 
     info->load = kernel_zimage_load;
 
-    info->arch.type = DOMAIN_64BIT;
+    info->type = DOMAIN_64BIT;
 
     return 0;
 }
@@ -396,8 +396,8 @@ static int __init kernel_zimage32_probe(struct kernel_info *info,
 
     info->load = kernel_zimage_load;
 
-#ifdef CONFIG_ARM_64
-    info->arch.type = DOMAIN_32BIT;
+#ifdef CONFIG_HAS_DOMAIN_TYPE
+    info->type = DOMAIN_32BIT;
 #endif
 
     return 0;
diff --git a/xen/common/Kconfig b/xen/common/Kconfig
index 0a20aa0a1249..5ff71480eebe 100644
--- a/xen/common/Kconfig
+++ b/xen/common/Kconfig
@@ -128,6 +128,9 @@ config HAS_DEVICE_TREE_DISCOVERY
 config HAS_DOM0LESS
 	bool
 
+config HAS_DOMAIN_TYPE
+	bool
+
 config HAS_DIT # Data Independent Timing
 	bool
 
diff --git a/xen/include/xen/dom0less-build.h b/xen/include/xen/dom0less-build.h
index faaf660424b2..4118dec76c0a 100644
--- a/xen/include/xen/dom0less-build.h
+++ b/xen/include/xen/dom0less-build.h
@@ -57,8 +57,6 @@ int init_vuart(struct domain *d, struct kernel_info *kinfo,
 int make_intc_domU_node(struct kernel_info *kinfo);
 int make_arch_nodes(struct kernel_info *kinfo);
 
-void set_domain_type(struct domain *d, struct kernel_info *kinfo);
-
 int init_intc_phandle(struct kernel_info *kinfo, const char *name,
                       const int node_next, const void *pfdt);
 
diff --git a/xen/include/xen/domain.h b/xen/include/xen/domain.h
index 93c0fd00c1d7..8c898afe74fc 100644
--- a/xen/include/xen/domain.h
+++ b/xen/include/xen/domain.h
@@ -13,6 +13,19 @@ struct guest_area {
     void *map;
 };
 
+#ifdef CONFIG_HAS_DOMAIN_TYPE
+enum __packed domain_type {
+    DOMAIN_32BIT,
+    DOMAIN_64BIT,
+};
+#define is_32bit_domain(d) ((d)->type == DOMAIN_32BIT)
+#define is_64bit_domain(d) ((d)->type == DOMAIN_64BIT)
+#elif !defined(CONFIG_64BIT)
+/* At the moment on 32-bit-only platforms all domains are 32-bit. */
+#define is_32bit_domain(d) (true)
+#define is_64bit_domain(d) (false)
+#endif
+
 #include <asm/domain.h>
 
 typedef union {
diff --git a/xen/include/xen/fdt-domain-build.h b/xen/include/xen/fdt-domain-build.h
index 0d40d8cfa105..bc7744270c8f 100644
--- a/xen/include/xen/fdt-domain-build.h
+++ b/xen/include/xen/fdt-domain-build.h
@@ -7,6 +7,7 @@
 #include <xen/device_tree.h>
 #include <xen/fdt-kernel.h>
 #include <xen/mm.h>
+#include <xen/sched.h>
 #include <xen/types.h>
 
 struct domain;
@@ -69,6 +70,14 @@ static inline uint32_t alloc_phandle(struct kernel_info *kinfo)
     return kinfo->next_phandle >= GUEST_PHANDLE_GIC ? 0 : kinfo->next_phandle++;
 }
 
+static inline void set_domain_type(struct domain *d, struct kernel_info *kinfo)
+{
+#ifdef CONFIG_HAS_DOMAIN_TYPE
+    /* Type must be set before allocate memory */
+    d->type = kinfo->type;
+#endif
+}
+
 #endif /* __XEN_FDT_DOMAIN_BUILD_H__ */
 
 /*
diff --git a/xen/include/xen/fdt-kernel.h b/xen/include/xen/fdt-kernel.h
index 4d0467bb396a..86a37a13048b 100644
--- a/xen/include/xen/fdt-kernel.h
+++ b/xen/include/xen/fdt-kernel.h
@@ -9,6 +9,7 @@
 
 #include <xen/bootinfo.h>
 #include <xen/device_tree.h>
+#include <xen/domain.h>
 #include <xen/types.h>
 
 #if __has_include(<asm/kernel.h>)
@@ -65,6 +66,10 @@ struct kernel_info {
         } zimage;
     };
 
+#ifdef CONFIG_HAS_DOMAIN_TYPE
+    enum domain_type type;
+#endif
+
 #if __has_include(<asm/kernel.h>)
     struct arch_kernel_info arch;
 #endif
diff --git a/xen/include/xen/sched.h b/xen/include/xen/sched.h
index 212c7d765c3e..00db1da12f21 100644
--- a/xen/include/xen/sched.h
+++ b/xen/include/xen/sched.h
@@ -386,6 +386,10 @@ struct domain
 {
     domid_t          domain_id;
 
+#ifdef CONFIG_HAS_DOMAIN_TYPE
+    enum domain_type type;
+#endif
+
     unsigned int     max_vcpus;
 
     uint64_t         unique_id;       /* Unique domain identifier */
-- 
2.53.0



From xen-devel-bounces@lists.xenproject.org Mon Apr 27 15:34:52 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 27 Apr 2026 15:34:52 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1295027.1571734 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wHNyp-0004wP-LA; Mon, 27 Apr 2026 15:34:39 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1295027.1571734; Mon, 27 Apr 2026 15:34: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 1wHNyp-0004w1-Ew; Mon, 27 Apr 2026 15:34:39 +0000
Received: by outflank-mailman (input) for mailman id 1295027;
 Mon, 27 Apr 2026 15:34:37 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92) id 1wHNyn-0004hb-Ql
 for xen-devel@lists.xenproject.org; Mon, 27 Apr 2026 15:34:37 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wHNyn-00GEYf-7e
 for xen-devel@lists.xenproject.org; Mon, 27 Apr 2026 17:34:37 +0200
Received: from [10.42.69.3] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <oleksii.kurochko@gmail.com>)
 id 69ef8208-bab6-0a2a0a5309dd-0a2a4503b6ae-12
 for <xen-devel@lists.xenproject.org>; Mon, 27 Apr 2026 17:34:37 +0200
Received: from [209.85.128.41] (helo=mail-wm1-f41.google.com)
 by tlsNG-33051d.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.1)
 (envelope-from <oleksii.kurochko@gmail.com>)
 id 69ef820d-672d-0a2a45030019-d1558029e86d-3
 for <xen-devel@lists.xenproject.org>; Mon, 27 Apr 2026 17:34:37 +0200
Received: by mail-wm1-f41.google.com with SMTP id
 5b1f17b1804b1-488ff90d6c7so89008875e9.2
 for <xen-devel@lists.xenproject.org>; Mon, 27 Apr 2026 08:34:37 -0700 (PDT)
Received: from fedora (user-109-243-69-121.play-internet.pl. [109.243.69.121])
 by smtp.gmail.com with ESMTPSA id
 5b1f17b1804b1-488fc1c0354sm737076355e9.11.2026.04.27.08.34.35
 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
 Mon, 27 Apr 2026 08:34: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=20251104 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=20251104; t=1777304076; x=1777908876; 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;
        bh=ZFryJZfQNF3su1ZPDgCjTPUOxEuDSdOZ8gDsjNuEUkM=;
        b=LmtuCGoXSm1qEW1SBQgogExYSB5mFiBiHFP3OfLC0zRKZQagY+BDLenOqSH0HsbmhX
         L9pc3bkg/cTGDaA7TwDZWXAsxsuVXqGuldexOStgAhOcbsWckMV3hxr7YUzaRUJAQ0ov
         BKU38ixfNuxAXG3DLf9pIlVCmPhX4JV2zxAnitoZ/o5hff4Kq1D4SFa7OpPFr6GfyVHj
         Nn9asE+xDgwYvKtGR7hD4umjvOYPEDaz15pgdZG7Ys1VwaVCj3ElNBC3t1lluwQ0LO5B
         naG2S2KH3OxtKvopmwkyA10Rm82jMVk05XWmRZK2S1lYc6onR1q3+iQEBO5uwnbUf82B
         Ah4A==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20251104; t=1777304076; x=1777908876;
        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;
        bh=ZFryJZfQNF3su1ZPDgCjTPUOxEuDSdOZ8gDsjNuEUkM=;
        b=D4lLqkbUCS/0XNxP0ITQ/9BtBGspvCSkN9cIwT4sHf7zepIj8EqGvOaNLDGbuO587O
         c8iRP7dl64wZKGOxPnLmKXC9Y8NGrd6EbzhqKvV3Qhno+osRWWFn415iAw0GVFnhO7tw
         EEJqQ39qruFfe9k9OLDpLSTxPhwTaMve+p+PSmJ1GHotpfMwJPADUbj44/ffI4geox0V
         MbJQgGptGi0E9yMXjTZSVXq6XBhlWZI13LCx1OWnXjHHenukpMcIDpcvd0dZKq3r0eai
         /qXjd6pZgGZNe+3JPtfMRM7pp5pXCntd5CSnrwUIVu/BVajDB+BIpBI0E8Z2SjJ2oxp1
         TpaQ==
X-Gm-Message-State: AOJu0YxUaJaEfmI0rx3m/9XM8g2peEKqPwVAeHaRw84nuCS5H3Fmcgse
	kVIusI2SLUo5vC2kpbIS1rBelk/0JvTEhT+fvc1pp9jwAJWO9JqUzV+1g44Hdw==
X-Gm-Gg: AeBDietTAZTK34HpMxDzhmtt+FhEGdBbyejTKlYxh36GQxF6eBypy2H9w38Ija7bHGa
	CpSv2q8938xHSgQyYMJiy2ehOZpWJMWG18Qtbnm6v6vm8OnH3OWrMx++F8j41lHLVs6281stj7D
	3hOTHTHFXMwj4mMqqm/g7kVq7/SRNqdBk952EbWodIqghMrtXFFKSW/V5TLJ/3e0tF5G0cCxfLJ
	+MKSzD/8NeZj8YK93vzPH55ravR/LC1B+GzKLI9UQ0fWRz4uN2MVdaQyVbUuO/S167nK2foNZqi
	fi3wSMvFQX4y2LE3uzH9Np+w+tk/bERvMKS1Z3uRwUmrvtQSEZZh4QImq3A7oIC49U4g+jr6KQJ
	wJ5IAbVNO9RzJTjx0Iqhudf7DeMy3+mT5RmHv62feR5ENHxREVA7ozA6pNFZMy120HDe8Ufc5wE
	tK1uCTialvxjm2pYrzP3CJrbIyfEfcUTWXAcaexORrNVY+WAFwV6SmaP6db365ZtZInmBLG4jws
	qOO
X-Received: by 2002:a05:600c:8b55:b0:48a:57e1:d8cc with SMTP id 5b1f17b1804b1-48a57e1d8d4mr407546505e9.9.1777304076329;
        Mon, 27 Apr 2026 08:34:36 -0700 (PDT)
From: Oleksii Kurochko <oleksii.kurochko@gmail.com>
To: xen-devel@lists.xenproject.org
Cc: Romain Caritey <Romain.Caritey@microchip.com>,
	Oleksii Kurochko <oleksii.kurochko@gmail.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?q?Roger=20Pau=20Monn=C3=A9?= <roger.pau@citrix.com>
Subject: [PATCH v4 2/3] xen/dom0less: pass kernel_info struct instead of fdt to make_cpus_node()
Date: Mon, 27 Apr 2026 17:34:24 +0200
Message-ID: <d18b699f54fbd7b303f9dfbcd63e61f7eee8c0f2.1777296786.git.oleksii.kurochko@gmail.com>
X-Mailer: git-send-email 2.53.0
In-Reply-To: <cover.1777296786.git.oleksii.kurochko@gmail.com>
References: <cover.1777296786.git.oleksii.kurochko@gmail.com>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit
X-purgate-ID: tlsNG-33051d/1777304077-2B161938-1B3B62D1/10/73395122804
X-purgate-type: spam
X-purgate-size: 3249

There are two reasons of this change:
1. Align prototype with what other make_*_node() are passed.
2. A follow-up RISC-V patch will call get_next_free_phandle() inside
   make_cpus_node(), requiring mutable access to kinfo->free_phandle.

Signed-off-by: Oleksii Kurochko <oleksii.kurochko@gmail.com>
Reviewed-by: Michal Orzel <michal.orzel@amd.com>
---
Look at the footer to the prev. patch to understand why phandle is needed
inside cpu node.
---
Changes in v4:
 - Nothing changed. Only rebase.
---
Changes in v3:
 - Add Reviewed-by: Michal Orzel <michal.orzel@amd.com>.
---
Changes in v2:
 - Properly initialize local variable fdt in Arm's
   make_cpus_node().
---
 xen/arch/arm/domain_build.c             | 5 +++--
 xen/common/device-tree/dom0less-build.c | 2 +-
 xen/include/xen/fdt-domain-build.h      | 2 +-
 3 files changed, 5 insertions(+), 4 deletions(-)

diff --git a/xen/arch/arm/domain_build.c b/xen/arch/arm/domain_build.c
index 6c17a84b2633..a3ff70102376 100644
--- a/xen/arch/arm/domain_build.c
+++ b/xen/arch/arm/domain_build.c
@@ -1163,7 +1163,7 @@ int __init make_psci_node(void *fdt)
     return res;
 }
 
-int __init make_cpus_node(const struct domain *d, void *fdt)
+int __init make_cpus_node(const struct domain *d, struct kernel_info *kinfo)
 {
     int res;
     const struct dt_device_node *cpus = dt_find_node_by_path("/cpus");
@@ -1177,6 +1177,7 @@ int __init make_cpus_node(const struct domain *d, void *fdt)
     /* Keep the compiler happy with -Og */
     bool clock_valid = false;
     uint64_t mpidr_aff;
+    void *fdt = kinfo->fdt;
 
     dt_dprintk("Create cpus node\n");
 
@@ -1625,7 +1626,7 @@ static int __init handle_node(struct domain *d, struct kernel_info *kinfo,
         if ( res )
             return res;
 
-        res = make_cpus_node(d, kinfo->fdt);
+        res = make_cpus_node(d, kinfo);
         if ( res )
             return res;
 
diff --git a/xen/common/device-tree/dom0less-build.c b/xen/common/device-tree/dom0less-build.c
index 9787ee264975..6d6882a34b5a 100644
--- a/xen/common/device-tree/dom0less-build.c
+++ b/xen/common/device-tree/dom0less-build.c
@@ -534,7 +534,7 @@ static int __init prepare_dtb_domU(struct domain *d, struct kernel_info *kinfo)
     if ( ret )
         goto err;
 
-    ret = make_cpus_node(d, kinfo->fdt);
+    ret = make_cpus_node(d, kinfo);
     if ( ret )
         goto err;
 
diff --git a/xen/include/xen/fdt-domain-build.h b/xen/include/xen/fdt-domain-build.h
index fd2ba01ff0f4..0d40d8cfa105 100644
--- a/xen/include/xen/fdt-domain-build.h
+++ b/xen/include/xen/fdt-domain-build.h
@@ -25,7 +25,7 @@ int construct_domain(struct domain *d, struct kernel_info *kinfo);
 int construct_hwdom(struct kernel_info *kinfo,
                     const struct dt_device_node *node);
 int make_chosen_node(const struct kernel_info *kinfo);
-int make_cpus_node(const struct domain *d, void *fdt);
+int make_cpus_node(const struct domain *d, struct kernel_info *kinfo);
 int make_hypervisor_node(struct domain *d, const struct kernel_info *kinfo,
                          int addrcells, int sizecells);
 int make_memory_node(const struct kernel_info *kinfo, int addrcells,
-- 
2.53.0



From xen-devel-bounces@lists.xenproject.org Mon Apr 27 15:34:52 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 27 Apr 2026 15:34:52 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1295025.1571720 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wHNyo-0004hq-Qj; Mon, 27 Apr 2026 15:34:38 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1295025.1571720; Mon, 27 Apr 2026 15:34: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 1wHNyo-0004hj-My; Mon, 27 Apr 2026 15:34:38 +0000
Received: by outflank-mailman (input) for mailman id 1295025;
 Mon, 27 Apr 2026 15:34:37 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92) id 1wHNyn-0004gz-Dx
 for xen-devel@lists.xenproject.org; Mon, 27 Apr 2026 15:34:37 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wHNym-00EOQ0-8o
 for xen-devel@lists.xenproject.org; Mon, 27 Apr 2026 17:34:36 +0200
Received: from [10.42.69.2] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <oleksii.kurochko@gmail.com>)
 id 69ef81ee-5cb7-0a2a0a5109dd-0a2a4502c8e0-32
 for <xen-devel@lists.xenproject.org>; Mon, 27 Apr 2026 17:34:36 +0200
Received: from [209.85.128.53] (helo=mail-wm1-f53.google.com)
 by tlsNG-720697.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.1)
 (envelope-from <oleksii.kurochko@gmail.com>)
 id 69ef820c-af86-0a2a45020019-d1558035a419-3
 for <xen-devel@lists.xenproject.org>; Mon, 27 Apr 2026 17:34:36 +0200
Received: by mail-wm1-f53.google.com with SMTP id
 5b1f17b1804b1-4891f625344so93940075e9.0
 for <xen-devel@lists.xenproject.org>; Mon, 27 Apr 2026 08:34:36 -0700 (PDT)
Received: from fedora (user-109-243-69-121.play-internet.pl. [109.243.69.121])
 by smtp.gmail.com with ESMTPSA id
 5b1f17b1804b1-488fc1c0354sm737076355e9.11.2026.04.27.08.34.32
 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
 Mon, 27 Apr 2026 08:34:33 -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=20251104 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=20251104; t=1777304075; x=1777908875; 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;
        bh=eA/7bZB0EQlEtV31qKIh/nBHzxk7MFpmf1h7BISbWxY=;
        b=iwI2Jm8irtLbIJIRJJbblMRm2YDeCLSBvEtw1xZQuJCljkUmz8HeU04ZrHb3TOJNV2
         o5QmqXt9iF6mVNXzgnBKflNcVFSGSj799A0H6gdoa51/nbuEbpre11hnjblY8YAZSkzA
         rr14xsN03eBvhncCuatsDiTUrecosOO/G78AcSkKaWT6mKdwygmxIDh/2Nr+/5s/JubP
         rdiH4c0r8KBLGLZAmycKs8UHMzUHI3UDPdaLBPb2DeEeXrnNpGFEryiODz/JPuR6qhK9
         5h9IFhdhE7XS6jWbFl7fWSnQJbr9H2aqIqoltJDefyLUC4xVpCO5KiCtp+KVlNMfWXHi
         Ydng==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20251104; t=1777304075; x=1777908875;
        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;
        bh=eA/7bZB0EQlEtV31qKIh/nBHzxk7MFpmf1h7BISbWxY=;
        b=Y2m/MpWoIE5JWBM7IPPzKrUkdUs1gneYZs7vpqsoKKXyCNMm1rvDdr76siqoQUZye9
         vBm90lbK7XLX+ZwHeZPQOg6Ylqsymj+Zd1VFlqLb98uujJH99j4ZcEfeQJl6P062RrIV
         V9KkA32TAbhFfndl4t279ldiCYM3Q2plO+U8B85C/2gNPhChEVJ95TE3R/vyuJ9hY/tP
         bqBOlMQEq1WgDH1Gn6LfwBRti5mY/5DdeQgb0Hhn9xbg8jNvrilMkY+L6+/y8sFVtuqD
         n2PEmzqdw5zGGiJ/pSFpm04PGmMLbzpLXnw1bpvKwR7cAyDLgLf+pzSvLtKS56QUq4gz
         V5Og==
X-Gm-Message-State: AOJu0YwmFLoj55ynmzJviZfDFLYV4oS0zwdKVi7peP7SweBhNW0YYIMJ
	Z7YungPOiX6AVNW60IsdhLsQSzbK3PlWIMWQRscDDjn9Rn2snAPD6sOkEd0+cg==
X-Gm-Gg: AeBDiesW477jKSZ2pCMHIVwa6Irx6OHi+XZHiZ9IVg47kdLSoR8fegxgtQlqm0RyoWh
	P2BwmN1WoGD1b00wMGEAfz94sWy73bdHk35JUiO6+ek9XKjfE4uUIUBHHpvDSoa3RBAFmQPOMuQ
	3DT4BTu6h7KVGvqhD1NmvWMCtS62Uaqbem83QPiKJpAbPWYVKYgrozjSIAI9uCDD84AkyT21XFn
	e+tC/vqwvwxSVTlhLqhUzfrKmzWxDoKalX9/N94sg1UkUxyrZOD2Qxiag3uSGL1ofXPtA2PYnvT
	8H3dMJ/r00eyx9ter01zktgWboMw3czDMNUIBGxpVnwYdaE/zwmlx6SXUUnsrTyntNGmdK3ZLoz
	Vq5SsBU+vSXnSPA+w5Vx6SM6CkMddFuaA8emwmTLchAqnpoptWoTADr22/YfdLe3oos+nozpthT
	OL6b1C0Ufw+XitzaHaBL4VgjWmbHG7a4QmGM0bQ9hZaVd1j7keLv79kQZsimJgBDSkbL064rDVv
	PBs
X-Received: by 2002:a05:600c:3ba0:b0:486:faa8:9e4 with SMTP id 5b1f17b1804b1-488fb8b91a7mr565248145e9.12.1777304073960;
        Mon, 27 Apr 2026 08:34:33 -0700 (PDT)
From: Oleksii Kurochko <oleksii.kurochko@gmail.com>
To: xen-devel@lists.xenproject.org
Cc: Romain Caritey <Romain.Caritey@microchip.com>,
	Oleksii Kurochko <oleksii.kurochko@gmail.com>,
	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?q?Roger=20Pau=20Monn=C3=A9?= <roger.pau@citrix.com>,
	Volodymyr Babchuk <Volodymyr_Babchuk@epam.com>
Subject: [PATCH v4 0/3] dom0less: various updates
Date: Mon, 27 Apr 2026 17:34:22 +0200
Message-ID: <cover.1777296786.git.oleksii.kurochko@gmail.com>
X-Mailer: git-send-email 2.53.0
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit
X-purgate-ID: tlsNG-720697/1777304076-B316D161-4B878CAC/10/73395122804
X-purgate-type: spam
X-purgate-size: 4093

This patch series introduces a new field to track not-yet-used phandles as there
are some use cases where RISC-V needs to know which phandle number could
be used for generating a device tree node.

For example, on the RISC-V side in make_cpus_node() [1] it is necessary to know
which phandle number is unused to use it for device tree node generation.

Here is an example of generated guest DTB:
    cpus {
    ...
      cpu@0 {
    ...
        interrupt-controller {
          compatible = "riscv,cpu-intc";
          #interrupt-cells = <0x1>;
          interrupt-controller;
          phandle = <0xfdea>;
        };
      };
    };

    /soc/imsics@28000000 {

      interrupts-extended = <0xfdea 0x9 >;

      phandle = <0xfdeb>;
    };

    /soc/aplic@d000000 {
    ...
      msi-parent = <0xfdeb>;
      phandle = <0x1>;
    };

Note that phandles for imsic and riscv,cpu-intc are generated in this example
not by get_next_free_phandle(), that is why they have such big numbers.

For non-RISC-V people, APLIC is an interrupt controller (something like GIC in
Arm), IMSIC is an interrupt controller that provides MSI and connects to
each CPU.

So (based on the DTS above) for APLIC, kinfo->phandle_intc is reused, which
will also be re-used for the device node's interrupt property. For all others, I
just introduced GUEST_PHANDLE_LAST [2] and used it for generation [3]. But I expect
that it could be useful for other architectures too so I just moved it to common
and re-use pfdt to understand what the maximum used phandle is.

[1] https://www.kernel.org/doc/Documentation/devicetree/bindings/interrupt-controller/riscv%2Ccpu-intc.txt
[2] https://lore.kernel.org/xen-devel/ccd6d21b224b478c88ca5f2fdd2d1dd507671510.1773157782.git.oleksii.kurochko@gmail.com/
[3] https://lore.kernel.org/xen-devel/fd64b8526a23e9d7775b9b48c5a933b0673c4fba.1773157782.git.oleksii.kurochko@gmail.com/
           *************************************

Another thing introduced in this patch series is moving domain type to common
code as several architectures (ARM and RISC-V for now) use them and it
looks pretty architecture-independent. Also, is_64bit_domain() is used by
dom0less common code, so I found it useful also to move is_{32,64}bit_domain
macros to common code.

           *************************************

And the last thing is changing the prototype of make_cpus_node() to be aligned
with other make_*_node() and since RISC-V will need access to the free_phandle field
(even if it will be moved to kinfo->arch.free_phandle) and for the reason that
this ->free_phandle is updated in make_*_node(), the kinfo argument is passed as
non-const.

CI: https://gitlab.com/xen-project/people/olkur/xen/-/pipelines/2482499536

---
Changes in v4:
 - Rebase on top of staging.
 - Add Review-by for patch 1 and 3.
 - Address the comments.
---
Changes in v3:
 - Rebase on top of staging.
 - Address the comments.
---
Changes in v2:
 - Address the comments from ML.
---

Oleksii Kurochko (3):
  xen/dom0less: introduce next_phandle in struct kernel_info
  xen/dom0less: pass kernel_info struct instead of fdt to
    make_cpus_node()
  xen: introduce CONFIG_HAS_DOMAIN_TYPE

 xen/arch/arm/Kconfig                    |  1 +
 xen/arch/arm/arm64/domctl.c             |  4 +--
 xen/arch/arm/dom0less-build.c           | 14 --------
 xen/arch/arm/domain_build.c             | 17 +++++-----
 xen/arch/arm/include/asm/domain.h       | 16 ---------
 xen/arch/arm/include/asm/kernel.h       |  4 ---
 xen/arch/arm/kernel.c                   | 16 ++++-----
 xen/common/Kconfig                      |  3 ++
 xen/common/device-tree/dom0less-build.c | 45 ++++++++++++++++++-------
 xen/include/xen/dom0less-build.h        |  2 --
 xen/include/xen/domain.h                | 13 +++++++
 xen/include/xen/fdt-domain-build.h      | 17 +++++++++-
 xen/include/xen/fdt-kernel.h            | 11 ++++++
 xen/include/xen/sched.h                 |  4 +++
 14 files changed, 98 insertions(+), 69 deletions(-)

-- 
2.53.0



From xen-devel-bounces@lists.xenproject.org Mon Apr 27 16:11:37 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 27 Apr 2026 16:11:37 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1295067.1571783 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wHOYa-00056S-Ec; Mon, 27 Apr 2026 16:11:36 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1295067.1571783; Mon, 27 Apr 2026 16:11: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 1wHOYa-00056L-BX; Mon, 27 Apr 2026 16:11:36 +0000
Received: by outflank-mailman (input) for mailman id 1295067;
 Mon, 27 Apr 2026 16:11:34 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <mfo@igalia.com>) id 1wHOYY-0004yN-Mu
 for xen-devel@lists.xenproject.org; Mon, 27 Apr 2026 16:11:34 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wHOYY-002114-3j
 for xen-devel@lists.xenproject.org; Mon, 27 Apr 2026 18:11:34 +0200
Received: from [10.42.69.8] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <mfo@igalia.com>)
 id 69ef8a9f-e002-0a2a0a5209dd-0a2a4508d42e-38
 for <xen-devel@lists.xenproject.org>; Mon, 27 Apr 2026 18:11:34 +0200
Received: from [213.97.179.56] (helo=fanzine2.igalia.com)
 by tlsNG-c1860d.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.1)
 (envelope-from <mfo@igalia.com>)
 id 69ef8ab5-63b5-0a2a45080019-d561b3389cea-3
 for <xen-devel@lists.xenproject.org>; Mon, 27 Apr 2026 18:11:34 +0200
Received: from 186-249-145-131.shared.desktop.com.br ([186.249.145.131]
 helo=[192.168.1.66]) by fanzine2.igalia.com with esmtpsa 
 (Cipher TLS1.3:ECDHE_X25519__RSA_PSS_RSAE_SHA256__AES_256_GCM:256) (Exim)
 id 1wHOYJ-00305I-Ut; Mon, 27 Apr 2026 18:11:19 +0200
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
Authentication-Results: eu.smtp.expurgate.cloud; dkim=pass header.s=20170329 header.d=igalia.com header.i="@igalia.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; q=dns/txt; c=relaxed/relaxed; d=igalia.com;
	s=20170329; h=Cc:To:In-Reply-To:References:Message-Id:
	Content-Transfer-Encoding:Content-Type:MIME-Version:Subject:Date:From:Sender:
	Reply-To:Content-ID:Content-Description:Resent-Date:Resent-From:Resent-Sender
	:Resent-To:Resent-Cc:Resent-Message-ID:List-Id:List-Help:List-Unsubscribe:
	List-Subscribe:List-Post:List-Owner:List-Archive;
	bh=L3Sr9rY5U1mD/3546TE+xOT1mBFRY3YzwAzYlEgEGo8=; b=fgk9vBXil4XOQk4uEvi1ffSPD/
	Ddejad/dkDzfLbOfDpVRwlSEL8l+83x9REQxqLJE5P0P7Zcnblttj3wKgaJIAgeJCuLMvDs93QHmB
	yQ+8cMrD8LBhVzy/NBcad2ZndJY56E3kRvhPzpN7oMsiaqahalL2FvucTDUE+/VAJG7Nok8J+9uK5
	gMyGYvmDSEuR69SyjaV4wxkHe+wyJio9QLxsqdNfI3WH6dtxol/474EbFFs+fVkEMzTnbI0Gx7IAh
	I93hGl9HcJZRK/+jDv8TvrqkYWVAG/lKWWRB0AHOwLqdPC5dlQ6PqZhywGCh4b3rXOuhjgZT6H5b6
	Ql97rhvQ==;
From: Mauricio Faria de Oliveira <mfo@igalia.com>
Date: Mon, 27 Apr 2026 13:10:59 -0300
Subject: [PATCH v2 3/3] x86/pvh: fix unbootable VMs by really inlining
 memset() in xen_prepare_pvh()
MIME-Version: 1.0
Content-Type: text/plain; charset="utf-8"
Content-Transfer-Encoding: 7bit
Message-Id: <20260427-pvh-kasan-inline-v2-3-2c57b8dcff6a@igalia.com>
References: <20260427-pvh-kasan-inline-v2-0-2c57b8dcff6a@igalia.com>
In-Reply-To: <20260427-pvh-kasan-inline-v2-0-2c57b8dcff6a@igalia.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>, 
 Juergen Gross <jgross@suse.com>, Alexey Dobriyan <adobriyan@gmail.com>, 
 Boris Ostrovsky <boris.ostrovsky@oracle.com>
Cc: kernel-dev@igalia.com, linux-kernel@vger.kernel.org, 
 xen-devel@lists.xenproject.org, Mauricio Faria de Oliveira <mfo@igalia.com>
X-Mailer: b4 0.14.2
X-purgate-ID: tlsNG-c1860d/1777306294-C176EDB1-24BE70D9/0/0
X-purgate-type: clean
X-purgate-size: 1474

Even with __builtin the compiler may decide to use the out of line function
instead of the inline implementation.

This particular one (still) generated the inline implementation as expected
(at least in these compiler versions), but this is not guaranteed to remain
the case, as seen with the previous commit.

Switch the builtin to the inline implementation to prevent a similar issue.

Fixes: fbe5a6dfe492 ("xen, pvh: fix unbootable VMs by inlining memset() in xen_prepare_pvh()")
Signed-off-by: Mauricio Faria de Oliveira <mfo@igalia.com>
Reviewed-by: Juergen Gross <jgross@suse.com>
---
 arch/x86/platform/pvh/enlighten.c | 3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)

diff --git a/arch/x86/platform/pvh/enlighten.c b/arch/x86/platform/pvh/enlighten.c
index f2053cbe9b0ce3d2178938269607c652ae8f528e..cb442cbd9d828619421babb281bfe9759edbca8a 100644
--- a/arch/x86/platform/pvh/enlighten.c
+++ b/arch/x86/platform/pvh/enlighten.c
@@ -8,6 +8,7 @@
 #include <asm/hypervisor.h>
 #include <asm/e820/api.h>
 #include <asm/x86_init.h>
+#include <asm/string.h>
 
 #include <asm/xen/interface.h>
 
@@ -129,7 +130,7 @@ void __init xen_prepare_pvh(void)
 	 * This must not compile to "call memset" because memset() may be
 	 * instrumented.
 	 */
-	__builtin_memset(&pvh_bootparams, 0, sizeof(pvh_bootparams));
+	__inline_memset(&pvh_bootparams, 0, sizeof(pvh_bootparams));
 
 	hypervisor_specific_init(xen_guest);
 

-- 
2.51.0



From xen-devel-bounces@lists.xenproject.org Mon Apr 27 16:11:37 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 27 Apr 2026 16:11:37 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1295065.1571761 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wHOYW-0004VC-0j; Mon, 27 Apr 2026 16:11:32 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1295065.1571761; Mon, 27 Apr 2026 16: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 1wHOYV-0004UP-T0; Mon, 27 Apr 2026 16:11:31 +0000
Received: by outflank-mailman (input) for mailman id 1295065;
 Mon, 27 Apr 2026 16:11:31 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <mfo@igalia.com>) id 1wHOYU-0004Ro-QP
 for xen-devel@lists.xenproject.org; Mon, 27 Apr 2026 16:11:31 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wHOYT-002114-PU
 for xen-devel@lists.xenproject.org; Mon, 27 Apr 2026 18:11:29 +0200
Received: from [10.42.69.6] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <mfo@igalia.com>)
 id 69ef8ab0-e002-0a2a0a5209dd-0a2a450688dc-4
 for <xen-devel@lists.xenproject.org>; Mon, 27 Apr 2026 18:11:29 +0200
Received: from [213.97.179.56] (helo=fanzine2.igalia.com)
 by tlsNG-16d1c6.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.1)
 (envelope-from <mfo@igalia.com>)
 id 69ef8ab0-7371-0a2a45060019-d561b338d974-3
 for <xen-devel@lists.xenproject.org>; Mon, 27 Apr 2026 18:11:28 +0200
Received: from 186-249-145-131.shared.desktop.com.br ([186.249.145.131]
 helo=[192.168.1.66]) by fanzine2.igalia.com with esmtpsa 
 (Cipher TLS1.3:ECDHE_X25519__RSA_PSS_RSAE_SHA256__AES_256_GCM:256) (Exim)
 id 1wHOYA-00305I-Nh; Mon, 27 Apr 2026 18:11:10 +0200
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
Authentication-Results: eu.smtp.expurgate.cloud; dkim=pass header.s=20170329 header.d=igalia.com header.i="@igalia.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; q=dns/txt; c=relaxed/relaxed; d=igalia.com;
	s=20170329; h=Cc:To:In-Reply-To:References:Message-Id:
	Content-Transfer-Encoding:Content-Type:MIME-Version:Subject:Date:From:Sender:
	Reply-To:Content-ID:Content-Description:Resent-Date:Resent-From:Resent-Sender
	:Resent-To:Resent-Cc:Resent-Message-ID:List-Id:List-Help:List-Unsubscribe:
	List-Subscribe:List-Post:List-Owner:List-Archive;
	bh=n3ajKxuTrRUfsiVj5FBK8xcgDaSM+ZE9NLMVQk1nTrI=; b=QxsK4/f792XfNJZnw4R/py56Gm
	O+k4W/mihmFFVTUUZMfQ0nUdEg1WrfuqVZJxD3rPNqi2E+ytoTDyLexvIR3OCaQ/+pmWsRuUxFr4T
	aNisP+xzF1BD6JdDL1oaYcc+61KIfukuaFd0wFL+ZQnbvU0l5ugtrNZa/vAiOm1d6mVfMzqpTW9t0
	dbS1QpK4yuAJPUmhTrvHjpw4cV+9EBagVyLamVRWDWm4F/CzeGTpRN+hRtmtP3P9HtOvJuDOJSzwy
	XhFHlnU3CLZ91x/hLBoIYlN5b9n1z1U5lML0P7HUP4GuJZCIhoyhSma7jlgvvI9FjN0pCsM8yA3rF
	Lk1TaFVw==;
From: Mauricio Faria de Oliveira <mfo@igalia.com>
Date: Mon, 27 Apr 2026 13:10:57 -0300
Subject: [PATCH v2 1/3] x86/asm, x86/boot: Expose inline memcmp
MIME-Version: 1.0
Content-Type: text/plain; charset="utf-8"
Content-Transfer-Encoding: 7bit
Message-Id: <20260427-pvh-kasan-inline-v2-1-2c57b8dcff6a@igalia.com>
References: <20260427-pvh-kasan-inline-v2-0-2c57b8dcff6a@igalia.com>
In-Reply-To: <20260427-pvh-kasan-inline-v2-0-2c57b8dcff6a@igalia.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>, 
 Juergen Gross <jgross@suse.com>, Alexey Dobriyan <adobriyan@gmail.com>, 
 Boris Ostrovsky <boris.ostrovsky@oracle.com>
Cc: kernel-dev@igalia.com, linux-kernel@vger.kernel.org, 
 xen-devel@lists.xenproject.org, Mauricio Faria de Oliveira <mfo@igalia.com>
X-Mailer: b4 0.14.2
X-purgate-ID: tlsNG-16d1c6/1777306289-91587D75-83C6BB67/0/0
X-purgate-type: clean
X-purgate-size: 2327

Move the inline memcmp function, currently only available to boot code
(boot/string.c), into the header with similar inline string functions
(include/asm/string.h) so it may be reused.

Add a _SETUP guard in string.h so not to include the 32/64-bit specific
string headers in boot/ code (16-bit, real mode) and avoid build errors.

Note: this memcmp() only returns 0/1, not -1/0/1 as regular memcmp(),
as reported by David Laight. This should be addressed separately.

Signed-off-by: Mauricio Faria de Oliveira <mfo@igalia.com>
---
 arch/x86/boot/string.c        |  6 ++----
 arch/x86/include/asm/string.h | 12 ++++++++++++
 2 files changed, 14 insertions(+), 4 deletions(-)

diff --git a/arch/x86/boot/string.c b/arch/x86/boot/string.c
index b25c6a9303b7314d5caf5c9306239811705294fe..bbee78637b349e42e9281d8df50d89d48f4490b9 100644
--- a/arch/x86/boot/string.c
+++ b/arch/x86/boot/string.c
@@ -15,6 +15,7 @@
 #include <linux/errno.h>
 #include <linux/limits.h>
 #include <asm/asm.h>
+#include <asm/string.h>
 #include "ctype.h"
 #include "string.h"
 
@@ -31,10 +32,7 @@
 
 int memcmp(const void *s1, const void *s2, size_t len)
 {
-	bool diff;
-	asm("repe cmpsb"
-	    : "=@ccnz" (diff), "+D" (s1), "+S" (s2), "+c" (len));
-	return diff;
+	return __inline_memcmp(s1, s2, len);
 }
 
 /*
diff --git a/arch/x86/include/asm/string.h b/arch/x86/include/asm/string.h
index 9cb5aae7fba9ffcf0f5af8f939d30467750ccaa9..ae6c1f4fda858bd8370647557529d98c23305a53 100644
--- a/arch/x86/include/asm/string.h
+++ b/arch/x86/include/asm/string.h
@@ -2,11 +2,13 @@
 #ifndef _ASM_X86_STRING_H
 #define _ASM_X86_STRING_H
 
+#ifndef _SETUP
 #ifdef CONFIG_X86_32
 # include <asm/string_32.h>
 #else
 # include <asm/string_64.h>
 #endif
+#endif
 
 static __always_inline void *__inline_memcpy(void *to, const void *from, size_t len)
 {
@@ -29,4 +31,14 @@ static __always_inline void *__inline_memset(void *s, int v, size_t n)
 	return ret;
 }
 
+/* Note: this memcmp() only returns 0/1, not -1/0/1 as regular memcmp(). */
+static __always_inline int __inline_memcmp(const void *s1, const void *s2, size_t len)
+{
+	bool diff;
+
+	asm("repe cmpsb"
+	    : "=@ccnz" (diff), "+D" (s1), "+S" (s2), "+c" (len));
+	return diff;
+}
+
 #endif /* _ASM_X86_STRING_H */

-- 
2.51.0



From xen-devel-bounces@lists.xenproject.org Mon Apr 27 16:11:37 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 27 Apr 2026 16:11:37 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1295064.1571756 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wHOYV-0004S7-Pe; Mon, 27 Apr 2026 16:11:31 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1295064.1571756; Mon, 27 Apr 2026 16: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 1wHOYV-0004S0-Mq; Mon, 27 Apr 2026 16:11:31 +0000
Received: by outflank-mailman (input) for mailman id 1295064;
 Mon, 27 Apr 2026 16:11:31 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <mfo@igalia.com>) id 1wHOYV-0004Rp-0E
 for xen-devel@lists.xenproject.org; Mon, 27 Apr 2026 16:11:31 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wHOYU-005Ip3-DK
 for xen-devel@lists.xenproject.org; Mon, 27 Apr 2026 18:11:30 +0200
Received: from [10.42.69.2] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <mfo@igalia.com>)
 id 69ef8aaa-bab6-0a2a0a5309dd-0a2a45028eee-20
 for <xen-devel@lists.xenproject.org>; Mon, 27 Apr 2026 18:11:29 +0200
Received: from [213.97.179.56] (helo=fanzine2.igalia.com)
 by tlsNG-720697.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.1)
 (envelope-from <mfo@igalia.com>)
 id 69ef8ab0-af86-0a2a45020019-d561b338cfec-3
 for <xen-devel@lists.xenproject.org>; Mon, 27 Apr 2026 18:11:29 +0200
Received: from 186-249-145-131.shared.desktop.com.br ([186.249.145.131]
 helo=[192.168.1.66]) by fanzine2.igalia.com with esmtpsa 
 (Cipher TLS1.3:ECDHE_X25519__RSA_PSS_RSAE_SHA256__AES_256_GCM:256) (Exim)
 id 1wHOYF-00305I-4T; Mon, 27 Apr 2026 18:11:14 +0200
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
Authentication-Results: eu.smtp.expurgate.cloud; dkim=pass header.s=20170329 header.d=igalia.com header.i="@igalia.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; q=dns/txt; c=relaxed/relaxed; d=igalia.com;
	s=20170329; h=Cc:To:In-Reply-To:References:Message-Id:
	Content-Transfer-Encoding:Content-Type:MIME-Version:Subject:Date:From:Sender:
	Reply-To:Content-ID:Content-Description:Resent-Date:Resent-From:Resent-Sender
	:Resent-To:Resent-Cc:Resent-Message-ID:List-Id:List-Help:List-Unsubscribe:
	List-Subscribe:List-Post:List-Owner:List-Archive;
	bh=Zz/49n6HLOp2S/OeD7sPTmJzkRUr+J7y2sWYsLTQJ/E=; b=bT9QWa2/6EnHf8FMEWzVyJYWdg
	TndVTUiVOSQd5LUgUvgdaW55vIe5zI5VuKSjfjlU55pSWRKbw3ls2QbctcOEoaEeLcvZbMRGinUcA
	k4wQSxM7YiAH7YxhMKVKA0YDO/pdXtCgBcL38Lv97jzH2HVlkrEl3BPMyaDLgrmRHr5gGz+8Uobb/
	PD05O8QljGHOdLYiy5UsNnHfqUkObU0gNRMhZ9g3KIZIn3UFGbhmn9TAmcFQNrwD3O5sbkWHLVwAS
	EFgTSTfHa+ccp8g4ZIULndckD596O2T7kXh95DWTSDlAvOGi9rNce49LR1RJY/ipOm8hV8zDDsq0u
	DE1U06mA==;
From: Mauricio Faria de Oliveira <mfo@igalia.com>
Date: Mon, 27 Apr 2026 13:10:58 -0300
Subject: [PATCH v2 2/3] x86/cpuid: fix unbootable VMs by really inlining
 memcmp() in hypervisor_cpuid_base()
MIME-Version: 1.0
Content-Type: text/plain; charset="utf-8"
Content-Transfer-Encoding: 7bit
Message-Id: <20260427-pvh-kasan-inline-v2-2-2c57b8dcff6a@igalia.com>
References: <20260427-pvh-kasan-inline-v2-0-2c57b8dcff6a@igalia.com>
In-Reply-To: <20260427-pvh-kasan-inline-v2-0-2c57b8dcff6a@igalia.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>, 
 Juergen Gross <jgross@suse.com>, Alexey Dobriyan <adobriyan@gmail.com>, 
 Boris Ostrovsky <boris.ostrovsky@oracle.com>
Cc: kernel-dev@igalia.com, linux-kernel@vger.kernel.org, 
 xen-devel@lists.xenproject.org, Mauricio Faria de Oliveira <mfo@igalia.com>
X-Mailer: b4 0.14.2
X-purgate-ID: tlsNG-720697/1777306289-89EC0161-13F85792/0/0
X-purgate-type: clean
X-purgate-size: 1458

Even with __builtin the compiler may decide to use the out of line function
instead of the inline implementation.

The existing code is broken with gcc-14/15 but not gcc-12/13 (Ubuntu 25.10)
and vmlinux no longer boots with CONFIG_PVH if CONFIG_KASAN_GENERIC is set.

For testing purposes, if the size argument is reduced from 12 to 8 then the
compiler decides to use the inline implementation; that shows results vary.

Switch the builtin to the inline implementation to address it.

Fixes: 416a33c9afce ("x86/cpu: fix unbootable VMs by inlining memcmp() in hypervisor_cpuid_base()")
Signed-off-by: Mauricio Faria de Oliveira <mfo@igalia.com>
Reviewed-by: Juergen Gross <jgross@suse.com>
---
 arch/x86/include/asm/cpuid/api.h | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/arch/x86/include/asm/cpuid/api.h b/arch/x86/include/asm/cpuid/api.h
index 44fa82e1267ce98c7f5f92f69b58f79e235f7261..c3bd1e51067346e817240b484dc0d0e5f02dcc4f 100644
--- a/arch/x86/include/asm/cpuid/api.h
+++ b/arch/x86/include/asm/cpuid/api.h
@@ -203,7 +203,7 @@ static inline u32 cpuid_base_hypervisor(const char *sig, u32 leaves)
 		 * from PVH early boot code before instrumentation is set up
 		 * and memcmp() itself may be instrumented.
 		 */
-		if (!__builtin_memcmp(sig, signature, 12) &&
+		if (!__inline_memcmp(sig, signature, 12) &&
 		    (leaves == 0 || ((eax - base) >= leaves)))
 			return base;
 	}

-- 
2.51.0



From xen-devel-bounces@lists.xenproject.org Mon Apr 27 16:11:37 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 27 Apr 2026 16:11:37 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1295066.1571774 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wHOYY-0004sD-6p; Mon, 27 Apr 2026 16:11:34 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1295066.1571774; Mon, 27 Apr 2026 16:11: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 1wHOYY-0004s6-3n; Mon, 27 Apr 2026 16:11:34 +0000
Received: by outflank-mailman (input) for mailman id 1295066;
 Mon, 27 Apr 2026 16:11:33 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <mfo@igalia.com>) id 1wHOYU-0004Rn-R2
 for xen-devel@lists.xenproject.org; Mon, 27 Apr 2026 16:11:33 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wHOYT-005zON-Mx
 for xen-devel@lists.xenproject.org; Mon, 27 Apr 2026 18:11:29 +0200
Received: from [10.42.69.4] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <mfo@igalia.com>)
 id 69ef8ab0-5cb7-0a2a0a5109dd-0a2a4504bcd2-2
 for <xen-devel@lists.xenproject.org>; Mon, 27 Apr 2026 18:11:29 +0200
Received: from [213.97.179.56] (helo=fanzine2.igalia.com)
 by tlsNG-ebf023.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.1)
 (envelope-from <mfo@igalia.com>)
 id 69ef8ab0-1dec-0a2a45040019-d561b3389644-3
 for <xen-devel@lists.xenproject.org>; Mon, 27 Apr 2026 18:11:29 +0200
Received: from 186-249-145-131.shared.desktop.com.br ([186.249.145.131]
 helo=[192.168.1.66]) by fanzine2.igalia.com with esmtpsa 
 (Cipher TLS1.3:ECDHE_X25519__RSA_PSS_RSAE_SHA256__AES_256_GCM:256) (Exim)
 id 1wHOY5-00305I-Tl; Mon, 27 Apr 2026 18:11:05 +0200
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
Authentication-Results: eu.smtp.expurgate.cloud; dkim=pass header.s=20170329 header.d=igalia.com header.i="@igalia.com" header.h="Cc:To:Content-Transfer-Encoding:Content-Type:MIME-Version:Message-Id:Date:Subject:From"
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=igalia.com;
	s=20170329; h=Cc:To:Content-Transfer-Encoding:Content-Type:MIME-Version:
	Message-Id:Date:Subject:From:Sender:Reply-To:Content-ID:Content-Description:
	Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID:
	In-Reply-To:References:List-Id:List-Help:List-Unsubscribe:List-Subscribe:
	List-Post:List-Owner:List-Archive;
	bh=gy93+YTuH8qqT2Cs7yYAisUzlA9SSxiG/wPDUCdgZNM=; b=s4dS23AEjRC4u6ydWlDMr7Wstw
	vWMSp8m3hwPPjm4zhbYwJjl0SqWK2bUyKpDOdxO6s7FFyT0L5gjMM4Un6O6o1s6pyuhgHI5rq8yjD
	lUbaOJYrQsU+hEUNVIo/jJQUXvRKxi5a1rJY4mw+b/RKzFdkr7rd7IIrFOWoKy5HRgzdBPTrDTHTo
	VN+h0tzCXpywZ6JRunVYUvNDGqNUcl45iNboQv3iB597lDFn5nsSnIKh6/xhlz7rMwKo/RGcfHODx
	8upsoNcOJJR/YBvA8b2Nm3kPXVAZmdEsnGtUbA1VyEa+yX4wrevzoXYxb9UOwsUkYt8y3uHDi+VNl
	CyL/+SnA==;
From: Mauricio Faria de Oliveira <mfo@igalia.com>
Subject: [PATCH v2 0/3] x86/pvh: fix unbootable VMs again (PVH + KASAN)
Date: Mon, 27 Apr 2026 13:10:56 -0300
Message-Id: <20260427-pvh-kasan-inline-v2-0-2c57b8dcff6a@igalia.com>
MIME-Version: 1.0
Content-Type: text/plain; charset="utf-8"
Content-Transfer-Encoding: 7bit
X-B4-Tracking: v=1; b=H4sIAJCK72kC/32NQQrCMBBFr1Jm7Ugzhoa68h7SRYyTZrCmJZGgl
 N7d2AO4fA/++ytkTsIZzs0KiYtkmWMFOjTggo0jo9wrA7XUtZoIlxLwYbONKHGSyNixt84Yr25
 koM6WxF7ee/I6VA6SX3P67A9F/eyfWFHYouFO9fqktevpIqOdxB7d/IRh27YvLI8rLrEAAAA=
X-Change-ID: 20260422-pvh-kasan-inline-6efac77f1b27
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>, 
 Juergen Gross <jgross@suse.com>, Alexey Dobriyan <adobriyan@gmail.com>, 
 Boris Ostrovsky <boris.ostrovsky@oracle.com>
Cc: kernel-dev@igalia.com, linux-kernel@vger.kernel.org, 
 xen-devel@lists.xenproject.org, Mauricio Faria de Oliveira <mfo@igalia.com>
X-Mailer: b4 0.14.2
X-purgate-ID: tlsNG-ebf023/1777306289-297793FF-18E73E25/0/0
X-purgate-type: clean
X-purgate-size: 5611

The issue of unbootable VMs with CONFIG_PVH due to CONFIG_KASAN is back.

Booting directly from vmlinux (instead of bzImage) now fails with gcc-14/15
(but works with gcc-12/13) if CONFIG_KASAN_GENERIC is set, on Ubuntu 25.10.

The PVH code is required/supposed not to hit the KASAN memory access check
in the kernel entry point as KASAN has not yet been setup, or an exception
is hit and the boot fails.

This was previously described and addressed with __builtin_mem{cmp,set}():
- commit 661362e3dcab ("xen, pvh: fix unbootable VMs (PVH + KASAN - AMD_MEM_ENCRYPT)")
- commit 416a33c9afce ("x86/cpu: fix unbootable VMs by inlining memcmp() in hypervisor_cpuid_base()")
- commit fbe5a6dfe492 ("xen, pvh: fix unbootable VMs by inlining memset() in xen_prepare_pvh()")

However, even with __builtin the compiler may decide to use the out of line
function instead of the inline implementation. So, that does not really fix
the issue unconditionally, as it's being seen (details below).

In order to address this, it's required to switch to inline implementations
that do not depend on the compiler.

There's such a memset in <asm/string.h> and memcmp in 'boot/string.c', now
exposed in <asm/string.h> too. Use them instead of builtins in PVH entry.

Testing:

- Booting from vmlinux (fixed) and bzImage (still works) using
  allnoconfig + CONFIG_PVH + CONFIG_KASAN with gcc-12/13/14/15.

- Building allyesconfig (check for issues with <asm/string.h>).

Details/Debugging:

- Only CONFIG_PVH (works):

  make allnoconfig
  ./scripts/config \
    -e 64BIT -e HYPERVISOR_GUEST -e PVH \
    -e SERIAL_8250 -e SERIAL_8250_CONSOLE
  make olddefconfig
  make -j$(nproc) vmlinux

  qemu-system-x86_64 \
    -accel kvm -nodefaults -nographic -serial stdio \
    -kernel vmlinux -append 'console=ttyS0'
  ...
  SeaBIOS (version ...)
  Booting from ROM...
  Linux version ...
  ...
  <Ctrl-C>

- With CONFIG_KASAN (fails)
  
  ./scripts/config -e KASAN
  make olddefconfig
  make -j$(nproc) vmlinux

  qemu-system-x86_64 \
    -accel kvm -nodefaults -nographic -serial stdio \
    -kernel vmlinux -append 'console=ttyS0'
  ...
  SeaBIOS (version ...)
  Booting from ROM...
  <QEMU reboot loop, flashing the text above>

- Debugging:

  Enable debug info and rebuild.

  QEMU: enable and wait for GDB, stop rebooting, remain running.

  qemu-system-x86_64 \
    -s -S -no-reboot -no-shutdown \
    <other options>

  gdb vmlinux
  (gdb) target remote localhost:1234
  ...
  (gdb) c
  ...
  Thread 2 received signal SIGQUIT, Quit.
  ...
  (gdb) info threads
    Id   Target Id                    Frame
    1    Thread 1.1 (CPU#0 [running]) bytes_is_nonzero (
      start=0xfffffbfff031eebe <error: Cannot access memory at address 0xfffffbfff031eebe>, size=1)
      at .../linux/mm/kasan/generic.c:98
  * 2    Thread 1.2 (CPU#1 [halted ]) 0x00000000000fd0a9 in ?? ()
  ...
  (gdb) thr 1
  ...
  (gdb) bt
  #0  bytes_is_nonzero (start=0xfffffbfff031eebe <error: Cannot access memory at address 0xfffffbfff031eebe>, size=1)
      at .../linux/mm/kasan/generic.c:98
  #1  memory_is_nonzero (start=0xfffffbfff031eebe, end=0xfffffbfff031eebf) at .../linux/mm/kasan/generic.c:115
  #2  memory_is_poisoned_n (addr=0xffffffff818f75f0, size=8) at .../linux/mm/kasan/generic.c:140
  #3  memory_is_poisoned (addr=0xffffffff818f75f0, size=8) at .../linux/mm/kasan/generic.c:172
  #4  check_region_inline (addr=0xffffffff818f75f0, size=8, write=false, ret_ip=18446744071585002062)
      at .../linux/mm/kasan/generic.c:191
  #5  kasan_check_range (addr=addr@entry=0xffffffff818f75f0, size=size@entry=8, write=write@entry=false,
      ret_ip=18446744071585002062) at .../linux/mm/kasan/generic.c:200
  #6  0xffffffff813eb283 in __asan_loadN (addr=addr@entry=0xffffffff818f75f0, size=size@entry=8)
      at .../linux/mm/kasan/generic.c:278
  #7  0xffffffff815df24e in memcmp (cs=cs@entry=0xffffffff818f75f0, ct=ct@entry=0x1be2fe4, count=<optimized out>,
      count@entry=12) at .../linux/lib/string.c:683
  #8  0xffffffff81ba2323 in cpuid_base_hypervisor (sig=0xffffffff818f75f0 "XenVMMXenVMM", leaves=2)
      at .../linux/arch/x86/include/asm/cpuid/api.h:206
  #9  xen_cpuid_base () at .../linux/arch/x86/include/asm/xen/hypervisor.h:46
  #10 xen_prepare_pvh () at .../linux/arch/x86/platform/pvh/enlighten.c:119
  #11 0x0000000001ba2588 in ?? ()
  #12 0x0000000000000000 in ?? ()
  (gdb)

  Frames #7-#8 show the non-builtin memcmp() (lib/string.c) was called
  even with __builtin_memcmp() being used in cpuid_base_hypervisor().

Signed-off-by: Mauricio Faria de Oliveira <mfo@igalia.com>
---
Changes in v2:
- Add comment about the return value of __inline_memcmp() in patch 1.
- Add 'Reviewed-by: Juergen Gross' in patches 2 and 3.
- Link to v1: https://lore.kernel.org/r/20260422-pvh-kasan-inline-v1-0-7e6194344c92@igalia.com

---
Mauricio Faria de Oliveira (3):
      x86/asm, x86/boot: Expose inline memcmp
      x86/cpuid: fix unbootable VMs by really inlining memcmp() in hypervisor_cpuid_base()
      x86/pvh: fix unbootable VMs by really inlining memset() in xen_prepare_pvh()

 arch/x86/boot/string.c            |  6 ++----
 arch/x86/include/asm/cpuid/api.h  |  2 +-
 arch/x86/include/asm/string.h     | 12 ++++++++++++
 arch/x86/platform/pvh/enlighten.c |  3 ++-
 4 files changed, 17 insertions(+), 6 deletions(-)
---
base-commit: 6596a02b207886e9e00bb0161c7fd59fea53c081
change-id: 20260422-pvh-kasan-inline-6efac77f1b27

Best regards,
-- 
Mauricio Faria de Oliveira <mfo@igalia.com>



From xen-devel-bounces@lists.xenproject.org Mon Apr 27 16:20:13 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 27 Apr 2026 16:20:13 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1295096.1571792 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wHOgd-0006fv-7X; Mon, 27 Apr 2026 16:19:55 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1295096.1571792; Mon, 27 Apr 2026 16:19: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 1wHOgd-0006fo-4E; Mon, 27 Apr 2026 16:19:55 +0000
Received: by outflank-mailman (input) for mailman id 1295096;
 Mon, 27 Apr 2026 16:19:53 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <mfo@igalia.com>) id 1wHOgb-0006fi-SL
 for xen-devel@lists.xenproject.org; Mon, 27 Apr 2026 16:19:53 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wHOgb-0022RI-1r
 for xen-devel@lists.xenproject.org; Mon, 27 Apr 2026 18:19:53 +0200
Received: from [10.42.69.9] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <mfo@igalia.com>)
 id 69ef8c89-e002-0a2a0a5209dd-0a2a4509da96-48
 for <xen-devel@lists.xenproject.org>; Mon, 27 Apr 2026 18:19:52 +0200
Received: from [213.97.179.56] (helo=fanzine2.igalia.com)
 by tlsNG-bad1c0.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.1)
 (envelope-from <mfo@igalia.com>)
 id 69ef8bb8-2497-0a2a45090019-d561b3389ec4-3
 for <xen-devel@lists.xenproject.org>; Mon, 27 Apr 2026 18:15:52 +0200
Received: from maestria.local.igalia.com ([192.168.10.14] helo=mail.igalia.com)
 by fanzine2.igalia.com with esmtps 
 (Cipher TLS1.3:ECDHE_SECP256R1__RSA_PSS_RSAE_SHA256__AES_256_GCM:256) (Exim)
 id 1wHOcP-0030BR-8k; Mon, 27 Apr 2026 18:15:32 +0200
Received: from webmail.service.igalia.com ([192.168.21.45])
 by mail.igalia.com with esmtp (Exim)
 id 1wHOcM-006FYL-5M; Mon, 27 Apr 2026 18:15:32 +0200
Received: from localhost ([127.0.0.1] helo=webmail.igalia.com)
 by webmail.service.igalia.com with esmtp (Exim 4.98.2)
 (envelope-from <mfo@igalia.com>) id 1wHOcL-00000001Xic-26r1;
 Mon, 27 Apr 2026 18:15:29 +0200
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
Authentication-Results: eu.smtp.expurgate.cloud; dkim=pass header.s=20170329 header.d=igalia.com header.i="@igalia.com" header.h="Content-Transfer-Encoding:Content-Type:Message-ID:References:In-Reply-To:Subject:Cc:To:From:Date:MIME-Version"
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=igalia.com;
	s=20170329; h=Content-Transfer-Encoding:Content-Type:Message-ID:References:
	In-Reply-To:Subject:Cc:To:From:Date:MIME-Version:Sender:Reply-To:Content-ID:
	Content-Description:Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc
	:Resent-Message-ID:List-Id:List-Help:List-Unsubscribe:List-Subscribe:
	List-Post:List-Owner:List-Archive;
	bh=0hYtNd1REaY7kPCVbF2AopZlByE4arJJCzMU7znjs7M=; b=FzN665rF4Chi+Kn8bLsYY10JrN
	cLD1jzVU/NkX/HndGO2QsiR1is0dFg/s9MCH+xY0EQVAskpRBh/Gx9ybBJsJEEWbTuUcBj45La9xQ
	1Tp+ccQ6WNLoWMssA2kR0KJ15yeQlareX110uxJSfLt6A4iwo6kpCoETJuCJxZ4o/hMCPaZ8Ex+9b
	OKBf8NlH9V3+ys/Or4m8j8E8Z5yCqiSQOC3jvAUaUJBqsQm3n0neHAer9x7HSkRyNW/9gvRx/ZRz7
	3VubcrpqQN85xtMlIeLMKkvSqNaUjCuMXmzdWFT6ZUYnTbN5bFFAes+xnFa3B31BlrsYFtt54ZLUg
	BLlEvSRg==;
MIME-Version: 1.0
Date: Mon, 27 Apr 2026 13:15:29 -0300
From: Mauricio Faria de Oliveira <mfo@igalia.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>, Juergen Gross
 <jgross@suse.com>, Alexey Dobriyan <adobriyan@gmail.com>, Boris Ostrovsky
 <boris.ostrovsky@oracle.com>
Cc: kernel-dev@igalia.com, linux-kernel@vger.kernel.org,
 xen-devel@lists.xenproject.org
Subject: Re: [PATCH 0/3] x86/pvh: fix unbootable VMs again (PVH + KASAN)
In-Reply-To: <20260422-pvh-kasan-inline-v1-0-7e6194344c92@igalia.com>
References: <20260422-pvh-kasan-inline-v1-0-7e6194344c92@igalia.com>
Message-ID: <56145b8c64a645a2d4a7c6b74776779d@igalia.com>
X-Sender: mfo@igalia.com
Content-Type: text/plain; charset=US-ASCII
Content-Transfer-Encoding: 7bit
X-Spam-Report: NO, Score=-2.2, Tests=ALL_TRUSTED=-3,BAYES_50=0.8
X-Spam-Score: -21
X-Spam-Bar: --
X-purgate-ID: tlsNG-bad1c0/1777306552-9357BA53-BC9582FF/0/0
X-purgate-type: clean
X-purgate-size: 1483

On 2026-04-22 17:07, Mauricio Faria de Oliveira wrote:
> The issue of unbootable VMs with CONFIG_PVH due to CONFIG_KASAN is back.
> 
> Booting directly from vmlinux (instead of bzImage) now fails with gcc-14/15
> (but works with gcc-12/13) if CONFIG_KASAN_GENERIC is set, on Ubuntu 25.10.
> 
> The PVH code is required/supposed not to hit the KASAN memory access check
> in the kernel entry point as KASAN has not yet been setup, or an exception
> is hit and the boot fails.
> 
> This was previously described and addressed with __builtin_mem{cmp,set}():
> - commit 661362e3dcab ("xen, pvh: fix unbootable VMs (PVH + KASAN - AMD_MEM_ENCRYPT)")
> - commit 416a33c9afce ("x86/cpu: fix unbootable VMs by inlining memcmp() in hypervisor_cpuid_base()")
> - commit fbe5a6dfe492 ("xen, pvh: fix unbootable VMs by inlining memset() in xen_prepare_pvh()")
> 
> However, even with __builtin the compiler may decide to use the out of line
> function instead of the inline implementation. So, that does not really fix
> the issue unconditionally, as it's being seen (details below).
> 
> In order to address this, it's required to switch to inline implementations
> that do not depend on the compiler.
> 
> There's such a memset in <asm/string.h> and memcmp in 'boot/string.c', now
> exposed in <asm/string.h> too. Use them instead of builtins in PVH entry.
[...]

v2:
https://lore.kernel.org/r/20260427-pvh-kasan-inline-v2-0-2c57b8dcff6a@igalia.com

-- 
Mauricio


From xen-devel-bounces@lists.xenproject.org Mon Apr 27 16:23:09 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 27 Apr 2026 16:23:09 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1295107.1571800 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wHOji-0008EL-Oa; Mon, 27 Apr 2026 16:23:06 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1295107.1571800; Mon, 27 Apr 2026 16:23: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 1wHOji-0008EE-Lo; Mon, 27 Apr 2026 16:23:06 +0000
Received: by outflank-mailman (input) for mailman id 1295107;
 Mon, 27 Apr 2026 16:23:05 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <Luca.Fancellu@arm.com>) id 1wHOjh-0008E8-9N
 for xen-devel@lists.xenproject.org; Mon, 27 Apr 2026 16:23:05 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wHOjg-00GLJB-M9
 for xen-devel@lists.xenproject.org; Mon, 27 Apr 2026 18:23:04 +0200
Received: from [10.42.69.6] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <Luca.Fancellu@arm.com>)
 id 69ef8d5b-5cb7-0a2a0a5109dd-0a2a4506c4b2-26
 for <xen-devel@lists.xenproject.org>; Mon, 27 Apr 2026 18:23:04 +0200
Received: from [52.101.84.4]
 (helo=DB3PR0202CU003.outbound.protection.outlook.com)
 by tlsNG-16d1c6.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.1)
 (envelope-from <Luca.Fancellu@arm.com>)
 id 69ef8d67-7371-0a2a45060019-346554049556-3
 for <xen-devel@lists.xenproject.org>; Mon, 27 Apr 2026 18:23:04 +0200
Received: from CWLP123CA0198.GBRP123.PROD.OUTLOOK.COM (2603:10a6:400:19c::7)
 by DB8PR08MB5371.eurprd08.prod.outlook.com (2603:10a6:10:114::7) with
 Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9846.21; Mon, 27 Apr
 2026 16:22:57 +0000
Received: from AM1PEPF000252E1.eurprd07.prod.outlook.com
 (2603:10a6:400:19c:cafe::2) by CWLP123CA0198.outlook.office365.com
 (2603:10a6:400:19c::7) with Microsoft SMTP Server (version=TLS1_3,
 cipher=TLS_AES_256_GCM_SHA384) id 15.20.9846.26 via Frontend Transport; Mon,
 27 Apr 2026 16:22:57 +0000
Received: from outbound-uk1.az.dlp.m.darktrace.com (4.158.2.129) by
 AM1PEPF000252E1.mail.protection.outlook.com (10.167.16.59) with Microsoft
 SMTP Server (version=TLS1_3, cipher=TLS_AES_256_GCM_SHA384) id 15.20.9846.18
 via Frontend Transport; Mon, 27 Apr 2026 16:22:56 +0000
Received: from DU2PR08MB7272.eurprd08.prod.outlook.com (2603:10a6:10:2d7::16)
 by VI1PR08MB10175.eurprd08.prod.outlook.com (2603:10a6:800:1cf::9)
 with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9846.26; Mon, 27 Apr
 2026 16:21:53 +0000
Received: from DU2PR08MB7272.eurprd08.prod.outlook.com
 ([fe80::5d34:206f:373:a323]) by DU2PR08MB7272.eurprd08.prod.outlook.com
 ([fe80::5d34:206f:373:a323%6]) with mapi id 15.20.9846.025; Mon, 27 Apr 2026
 16:21: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=arm.com header.i="@arm.com" header.h="From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck"; dkim=pass header.s=selector1 header.d=arm.com header.i="@arm.com" header.h="From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck"
ARC-Seal: i=2; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=pass;
 b=Q3Z4jdj2Ep7i8JFoONpMhF7/kmZvI7151xIY8AcnPGq7ADaUQxVdCVyg4O2xwW289Y0IOYhFX5q0RRfaQU90Ywyd/CTUz+Yfc395w26rLgfB2qCHlVSUURGhppAo1qSVRZZrdVgTVTxnCPXTimj3991TF+jhl5XPcEMTWuet393aajpbCRIX5RsWu0P9AO7t+O9iQ8L+zKeWphquakvtBdJDA/FnKQ/ZrXMhfKoSv2tCNXlbMlvbPYX8c0P9dA2daPRIozbxvBC1ZGu33FKd0OpMmKQtoa8QAyEfXUpULjyc93g6H3HtNJbkFMGWY+k5gWydagMP0R4keabdtZ7YZQ==
ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com;
 s=arcselector10001;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1;
 bh=a6gIRLO1eJ9UZpSI0qnIDNhpPqQWrIfJvf2DHz3O8ik=;
 b=KlqMPBjmp8UnjtoTVRUeQfk7O2phZT9fG+qPpEnZibM3Wow9RUkPhsN91KCIFsTIrAdZaFj2i+GEIk+AIhkWM+COfOca8ghyX9EZtgY/uWjAUGGQrfvcdy60ys13nBr84I7+Ngqb9t2KJDw6RGWdCOXMvbDQY7p3RIE4hYYUy2i5TL/y1e1Bm9Znj9HQDJEtwemWGFdQNDCuZY5ANdk0aUyp0q0yitYWboPZFWuheReW9rn+9jgo4zd/ZZ1d8bQPki8edWBl0Oyy3YahL9S3CVFhW7jlBOvQlSVFOn9Lra6G+r0+lWhpEV9eGiVxh1alIvADP/r8G6tsmqMMfCVsuw==
ARC-Authentication-Results: i=2; mx.microsoft.com 1; spf=pass (sender ip is
 4.158.2.129) smtp.rcpttodomain=gmail.com smtp.mailfrom=arm.com; dmarc=pass
 (p=none sp=none pct=100) action=none header.from=arm.com; dkim=pass
 (signature was verified) header.d=arm.com; arc=pass (0 oda=1 ltdi=1
 spf=[1,1,smtp.mailfrom=arm.com] dkim=[1,1,header.d=arm.com]
 dmarc=[1,1,header.from=arm.com])
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=arm.com; s=selector1;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck;
 bh=a6gIRLO1eJ9UZpSI0qnIDNhpPqQWrIfJvf2DHz3O8ik=;
 b=oiSABdfWlA+0V7WSQGvSeIk7XQLQHw5kXYkN5YtT+E19w5iDkzwx25AQkK+svsjSDHHJtHCuX+yIeLNAMA/rE3DFdxNnZutQjQmZZM3yLAxSEvbdQ61FjSzR8DjFwY88atTxI3+Qbt6/xvSbKoxuZ82qzI3aQtOIYgiGzxMFEtk=
X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 4.158.2.129)
 smtp.mailfrom=arm.com; dkim=pass (signature was verified)
 header.d=arm.com;dmarc=pass action=none header.from=arm.com;
Received-SPF: Pass (protection.outlook.com: domain of arm.com designates
 4.158.2.129 as permitted sender) receiver=protection.outlook.com;
 client-ip=4.158.2.129; helo=outbound-uk1.az.dlp.m.darktrace.com; pr=C
ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none;
 b=bnitQg57B6xQj3kLNthMMH6u63rnCm6bfC0bl6I5lYLXDYNYo6P8kPv8yMxdWLmBcn2XmIJWPG7pTL4Slj18WUVvFTskXK8F4O2E/vZK7OcR4FoEvVvoLKxTctMehrhVyC7Bs5SKnq1P7pXZgsbLJDW3Zr8SeS0F/ar8nOwrGO3bal6Af5jHT5pnRi1AcKhybOb0oA+JvZBM8r2yUU5vs+cK59Ihl97ovrVkMG04hV/EFRplii4QCDyMBQxXJPESry2kF02RapvdNfz5yz1kl5MEoLj+LxmtXvG13IE/q4PWdfMKxvj0HhjgLR14v5f/P3ts4UWpTYqiHs5/GE+wxA==
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com;
 s=arcselector10001;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1;
 bh=a6gIRLO1eJ9UZpSI0qnIDNhpPqQWrIfJvf2DHz3O8ik=;
 b=hplENScueZqeNthdSQ2QnGqKHoY9io1Se04Hj/AvQ55cM7cQ1TN7xhPR8QQ06xHpz7BSD+1SKHMQCW5L5JQ3cIT2lxQzNJvYa0DIwNbuDT6fnxe75U5xHzx/LVYtoi9bzLl0HZh4JLt6ANmrp/rfgzw6g2bZPVtToV6TBPmykg4L+xBrpvNrI+HC67D0Yhu0z8BzcmPZ7EBWcSUswPpeSNUcJy5bRENojRb130OJxTUsyXRP85EUdYLZhZ3ZrdYEXrkrZDVnhddiu565Alj2TuxlPo1FYbzMFhtQGi9wlXRSo7XxKClIl+8xCCOSJFRnwwRgG+FdBLlnpdvNkJfrag==
ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass
 smtp.mailfrom=arm.com; dmarc=pass action=none header.from=arm.com; dkim=pass
 header.d=arm.com; arc=none
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=arm.com; s=selector1;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck;
 bh=a6gIRLO1eJ9UZpSI0qnIDNhpPqQWrIfJvf2DHz3O8ik=;
 b=oiSABdfWlA+0V7WSQGvSeIk7XQLQHw5kXYkN5YtT+E19w5iDkzwx25AQkK+svsjSDHHJtHCuX+yIeLNAMA/rE3DFdxNnZutQjQmZZM3yLAxSEvbdQ61FjSzR8DjFwY88atTxI3+Qbt6/xvSbKoxuZ82qzI3aQtOIYgiGzxMFEtk=
From: Luca Fancellu <Luca.Fancellu@arm.com>
To: Mykola Kvach <xakep.amatop@gmail.com>
CC: "xen-devel@lists.xenproject.org" <xen-devel@lists.xenproject.org>, 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>
Subject: Re: [PATCH v8 12/13] xen/arm: Implement PSCI SYSTEM_SUSPEND call
 (host interface)
Thread-Topic: [PATCH v8 12/13] xen/arm: Implement PSCI SYSTEM_SUSPEND call
 (host interface)
Thread-Index: AQHc1mH01Xi7Oshm5kSQrRtdQMIF/g==
Date: Mon, 27 Apr 2026 16:21:52 +0000
Message-ID: <A0DD6517-9EFB-4DA3-85E6-91771BC23553@arm.com>
References: <cover.1775125380.git.mykola_kvach@epam.com>
 <8767d4129cd5bc56086172e58320539be7da4059.1775125380.git.mykola_kvach@epam.com>
In-Reply-To:
 <8767d4129cd5bc56086172e58320539be7da4059.1775125380.git.mykola_kvach@epam.com>
Accept-Language: en-GB, en-US
Content-Language: en-US
X-MS-Has-Attach:
X-MS-TNEF-Correlator:
x-mailer: Apple Mail (2.3826.700.81.1.6)
Authentication-Results-Original: dkim=none (message not signed)
 header.d=none;dmarc=none action=none header.from=arm.com;
x-ms-traffictypediagnostic:
	DU2PR08MB7272:EE_|VI1PR08MB10175:EE_|AM1PEPF000252E1:EE_|DB8PR08MB5371:EE_
X-MS-Office365-Filtering-Correlation-Id: 74738d77-2a76-41d0-5e41-08dea4793da3
x-checkrecipientrouted: true
nodisclaimer: true
X-MS-Exchange-SenderADCheck: 1
X-MS-Exchange-AntiSpam-Relay: 0
X-Microsoft-Antispam-Untrusted:
 BCL:0;ARA:13230040|366016|1800799024|376014|56012099003|18002099003|22082099003|38070700021;
X-Microsoft-Antispam-Message-Info-Original:
 BNjdjhiTYH9z4Y3K18lDbw9vSWDpo/PzI87fZxfypdKb5ZKpPTtx7UN6g8/JtZWE39363uV8q+eDyVp/y7MIzqyCHKsJlmqg5aZR9Jkn+Xi+jmQ6Gq9CLeIMh+8IOIZoU73UsPnXbizerFIEM/OFpj0UpRQymTMAqP+dPDatVHwcUABOLgB86Ui2Z/fzyUX7VCHWyoImRlghrZ509pZvDywgYyYnM8i36WXDyqYDpb+ufXN6Luh1qpNeUYYjNMiuKeXcBDIw/hj1gxbdRi4Krx1R492gJvCEdHKl2XyVSV4jfGkiXe+2L12zO4bhPqFKDBPHwq9JDKm18LwurR8kI7WWm+XBhVcXcQpdSo2N3yxo270TvE9jyZWVqtWwPmz0gUtjm0L6iO/MrTul9FJcJRlka1Z2V95pZDMjtypGFSuIetlH6z6PHBhTqQ9Oh2udWeAC/RGnoiOom+r282/PafoU63bIGSPyBxC3cpPAjKpFymvgwUcd/nXFy/VsozGGYVQT/FaqvvGC1ga5CxR+MeWWj0zv6+2I+sQl5DJFY9iX9L0k+o1crvYF9YmJWNgXMiq+w431ELKoytr5BFwiyKLSAYcHcd+3MWlIJ9GzSYOrNw8rexzoLV6DwVSeb/qDwzvegxP1VWNCL54P7FPAt4BSP+E31I7rrvkrVRmxZbEa9qc2O+ymeoivBmyzfgp5FyS1va2EV72DV7ny1/FrRAFv63mopaPuQmfxxEScOOKOgaHcsKpEwgxeVGuFCOcZnYqHu5cHYiF72cuf2NOe8jn2a8ep4hEIiAB/YFPQlww=
X-Forefront-Antispam-Report-Untrusted:
 CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:DU2PR08MB7272.eurprd08.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(366016)(1800799024)(376014)(56012099003)(18002099003)(22082099003)(38070700021);DIR:OUT;SFP:1101;
Content-Type: text/plain; charset="utf-8"
Content-ID: <017FC4C666346145866B8490B66C9CEA@eurprd08.prod.outlook.com>
Content-Transfer-Encoding: base64
MIME-Version: 1.0
X-Exchange-RoutingPolicyChecked:
 nCm+UlEm3dW7bVQ0qzc8kDK3DdNlAE6ZW+xG4aR0DP05cOQ0zFzbIaBLVPy6k2JSmTZdGhi8LsOmbL+H+Mhk41zEprkYOHpFmGg4G5QZX/E3UTBptKt1EcRkGf6B4FJW2EAs9xra//WN4wtuZJmfg+6xpD0m06uDgn8kLwK4o4S+lC3ncwtZ1Qrfn+iIrRIryWa9nCS3sOj4pE6DVlzeKV3wIcskE9bqLxgn0EusUF3Dbn4WjZg5l3cI+iDm2Jjbs4tJc7zJQ645FZRJ4DpUZX/j4A2MkdhySDE3lDlbmM27fPmAgQbSd74XTa+YV7hejmVkfNSpK1oztWDmIpaLFw==
X-MS-Exchange-Transport-CrossTenantHeadersStamped: VI1PR08MB10175
X-EOPAttributedMessage: 0
X-MS-Exchange-Transport-CrossTenantHeadersStripped:
 AM1PEPF000252E1.eurprd07.prod.outlook.com
X-MS-PublicTrafficType: Email
X-MS-Office365-Filtering-Correlation-Id-Prvs:
	4e6b23eb-6187-4a15-7cad-08dea47917aa
X-Microsoft-Antispam:
	BCL:0;ARA:13230040|36860700016|35042699022|1800799024|376014|82310400026|14060799003|22082099003|56012099003|18002099003;
X-Microsoft-Antispam-Message-Info:
	NtsSH/0RnCAo0mM40Y93J/9OOsdNu076J6agCTY8FrK0nN5ZEyWo/mwdOdSHq+kAV9/Gb58H1v8F7lNfE3XJAvxFXdMYebuXCCFYAPeFO+iFFRsQ1Ls7u7PCCN8TeIAFJ4/Dz3DH2PyJ61XEiVpYoyObwNDUR4a+29pjC2Jdx3RA+/XY7s9tblZVv/q4Xm22m1dfYNeSSegF9PEG7/dqOryfkjVeZkabHDfTPgzvj5WFFDMYD+v/+GPEBpVfu2djpMl82xkTlLzaPJrH23wioVhZ+l53sXGBmUm0u+f4gdWoBRUesOtioK7ChO3ZxxH1DMJyucoOmsvOvNoGN4ZdJi2ue1l9ko1q3u/jar0oNr9K96X86lrkCbf5rDtL3Mfn/+ZtcNQCNSkuryXWV8A0NK8IaN9NQFiv9Jdz9+GO8tZNa6Wg/mDYHZMgF6G6M3sY+b579pnZDd+L+2CkrYQGCd/hQaPfStqS6vaXBBzpzq0W/XsDbZb/OIpdqeS/NxtTqoWr4GNmt5dtHriCTd+Tdb/scPISKqWHAN++JX5Vz/bkLA7C9B98Q0Oucf7nyh3KZtu/zandDL3l+IP7RTo1RBXRNg813x5SlsteI/t7Uq91yQtE5Eq1dbmtxdhNlnAMvAaVXPr5c7GqM4qRi+N27wKoJFuLtjH7QtYJyjvqdlJQL1voVIzE5iEXAf57v8wltNUNpB6I3DiGNpNhkY9qn05Krm10YPt4eCSktdYWXkka8N0tXDrN2BxybFdeQQ4HGQKHbyiSwF1UX8L+JBNsyw==
X-Forefront-Antispam-Report:
	CIP:4.158.2.129;CTRY:GB;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:outbound-uk1.az.dlp.m.darktrace.com;PTR:InfoDomainNonexistent;CAT:NONE;SFS:(13230040)(36860700016)(35042699022)(1800799024)(376014)(82310400026)(14060799003)(22082099003)(56012099003)(18002099003);DIR:OUT;SFP:1101;
X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1
X-MS-Exchange-AntiSpam-MessageData-0:
	woyH9E03yzehuKA0Dc5TA/ygparVd7Omn4FMjLP54ufwyCNdvXc96Sh29wj1wyLzTNAJ7Attvxcy1eiYwoFzPBJ8Awkk6XCSufydbp5OUpzQTmyeePrgsDhQi/6GK+T6F9p9Uq7km06iaFXZR1qnXC8Fx+QqgjdblrMPkSGQE99qfI8gTjMRUSJ3q1emrCcdtcT0ZpuH9W5Ak10KU/V0N0pH/N+51YPK848/mUwr01Ae+wP/UPY6gRT29k0gMZWrQqlNzI57v1O2r3E2dXTXsxWIudo6Y4ycMIYXg27hCZ6kt00UQqi9uTDzLlOwTpRuuLHpQFX0gJXRvwunbI/7r/rBDjyHUxc5qRYkvq3svcvOiwQfK1PdrqjaakU1eD2lJrgM8RKey5ehly6cXv2eijtNRtUr39XkjbtzyipYZ78fYd7jHSeYUL4FEnHAaQXW
X-OriginatorOrg: arm.com
X-MS-Exchange-CrossTenant-OriginalArrivalTime: 27 Apr 2026 16:22:56.4335
 (UTC)
X-MS-Exchange-CrossTenant-Network-Message-Id: 74738d77-2a76-41d0-5e41-08dea4793da3
X-MS-Exchange-CrossTenant-Id: f34e5979-57d9-4aaa-ad4d-b122a662184d
X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=f34e5979-57d9-4aaa-ad4d-b122a662184d;Ip=[4.158.2.129];Helo=[outbound-uk1.az.dlp.m.darktrace.com]
X-MS-Exchange-CrossTenant-AuthSource:
	AM1PEPF000252E1.eurprd07.prod.outlook.com
X-MS-Exchange-CrossTenant-AuthAs: Anonymous
X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem
X-MS-Exchange-Transport-CrossTenantHeadersStamped: DB8PR08MB5371
X-purgate-ID: tlsNG-16d1c6/1777306984-90A7ED75-9720B7E8/0/0
X-purgate-type: clean
X-purgate-size: 4530

SGkgTXlrb2xhLA0KDQo+IE9uIDIgQXByIDIwMjYsIGF0IDExOjQ1LCBNeWtvbGEgS3ZhY2ggPHhh
a2VwLmFtYXRvcEBnbWFpbC5jb20+IHdyb3RlOg0KPiANCj4gRnJvbTogTWlyZWxhIFNpbW9ub3Zp
YyA8bWlyZWxhLnNpbW9ub3ZpY0BhZ2dpb3MuY29tPg0KPiANCj4gSW52b2tlIFBTQ0kgU1lTVEVN
X1NVU1BFTkQgdG8gZmluYWxpemUgWGVuJ3Mgc3VzcGVuZCBzZXF1ZW5jZSBvbiBBUk02NCBwbGF0
Zm9ybXMuDQo+IFBhc3MgdGhlIHJlc3VtZSBlbnRyeSBwb2ludCAoaHlwX3Jlc3VtZSkgYXMgdGhl
IGZpcnN0IGFyZ3VtZW50IHRvIEVMMy4gVGhlIHJlc3VtZQ0KPiBoYW5kbGVyIGlzIGN1cnJlbnRs
eSBhIHN0dWIgYW5kIHdpbGwgYmUgaW1wbGVtZW50ZWQgbGF0ZXIgaW4gYXNzZW1ibHkuIElnbm9y
ZSB0aGUNCj4gY29udGV4dCBJRCBhcmd1bWVudCwgYXMgaXMgZG9uZSBpbiBMaW51eC4NCj4gDQo+
IE9ubHkgZW5hYmxlIHRoaXMgcGF0aCB3aGVuIENPTkZJR19TWVNURU1fU1VTUEVORCBpcyBzZXQg
YW5kDQo+IFBTQ0kgdmVyc2lvbiBpcyA+PSAxLjAuDQo+IA0KPiBTaWduZWQtb2ZmLWJ5OiBNaXJl
bGEgU2ltb25vdmljIDxtaXJlbGEuc2ltb25vdmljQGFnZ2lvcy5jb20+DQo+IFNpZ25lZC1vZmYt
Ynk6IFNhZWVkIE5vd3NoYWRpIDxzYWVlZC5ub3dzaGFkaUB4aWxpbnguY29tPg0KPiBTaWduZWQt
b2ZmLWJ5OiBNeWt5dGEgUG90dXJhaSA8bXlreXRhX3BvdHVyYWlAZXBhbS5jb20+DQo+IFNpZ25l
ZC1vZmYtYnk6IE15a29sYSBLdmFjaCA8bXlrb2xhX2t2YWNoQGVwYW0uY29tPg0KPiAtLS0NCj4g
Q2hhbmdlcyBpbiB2NzoNCj4gLSBubyBjaGFuZ2VzDQo+IC0tLQ0KPiB4ZW4vYXJjaC9hcm0vaW5j
bHVkZS9hc20vcHNjaS5oIHwgIDEgKw0KPiB4ZW4vYXJjaC9hcm0vcHNjaS5jICAgICAgICAgICAg
IHwgMjMgKysrKysrKysrKysrKysrKysrKysrKy0NCj4gMiBmaWxlcyBjaGFuZ2VkLCAyMyBpbnNl
cnRpb25zKCspLCAxIGRlbGV0aW9uKC0pDQo+IA0KPiBkaWZmIC0tZ2l0IGEveGVuL2FyY2gvYXJt
L2luY2x1ZGUvYXNtL3BzY2kuaCBiL3hlbi9hcmNoL2FybS9pbmNsdWRlL2FzbS9wc2NpLmgNCj4g
aW5kZXggNDhhOTNlNmI3OS4uYmIzYzczNDk2ZSAxMDA2NDQNCj4gLS0tIGEveGVuL2FyY2gvYXJt
L2luY2x1ZGUvYXNtL3BzY2kuaA0KPiArKysgYi94ZW4vYXJjaC9hcm0vaW5jbHVkZS9hc20vcHNj
aS5oDQo+IEBAIC0yMyw2ICsyMyw3IEBAIGludCBjYWxsX3BzY2lfY3B1X29uKGludCBjcHUpOw0K
PiB2b2lkIGNhbGxfcHNjaV9jcHVfb2ZmKHZvaWQpOw0KPiB2b2lkIGNhbGxfcHNjaV9zeXN0ZW1f
b2ZmKHZvaWQpOw0KPiB2b2lkIGNhbGxfcHNjaV9zeXN0ZW1fcmVzZXQodm9pZCk7DQo+ICtpbnQg
Y2FsbF9wc2NpX3N5c3RlbV9zdXNwZW5kKHZvaWQpOw0KPiANCj4gLyogUmFuZ2Ugb2YgYWxsb2Nh
dGVkIFBTQ0kgZnVuY3Rpb24gbnVtYmVycyAqLw0KPiAjZGVmaW5lIFBTQ0lfRk5VTV9NSU5fVkFM
VUUgICAgICAgICAgICAgICAgIF9BQygwLFUpDQo+IGRpZmYgLS1naXQgYS94ZW4vYXJjaC9hcm0v
cHNjaS5jIGIveGVuL2FyY2gvYXJtL3BzY2kuYw0KPiBpbmRleCBiNjg2MGE3NzYwLi5jOWQxMjZi
MTk1IDEwMDY0NA0KPiAtLS0gYS94ZW4vYXJjaC9hcm0vcHNjaS5jDQo+ICsrKyBiL3hlbi9hcmNo
L2FybS9wc2NpLmMNCj4gQEAgLTE3LDE3ICsxNywyMCBAQA0KPiAjaW5jbHVkZSA8YXNtL2NwdWZl
YXR1cmUuaD4NCj4gI2luY2x1ZGUgPGFzbS9wc2NpLmg+DQo+ICNpbmNsdWRlIDxhc20vYWNwaS5o
Pg0KPiArI2luY2x1ZGUgPGFzbS9zdXNwZW5kLmg+DQo+IA0KPiAvKg0KPiAgKiBXaGlsZSBhIDY0
LWJpdCBPUyBjYW4gbWFrZSBjYWxscyB3aXRoIFNNQzMyIGNhbGxpbmcgY29udmVudGlvbnMsIGZv
cg0KPiAgKiBzb21lIGNhbGxzIGl0IGlzIG5lY2Vzc2FyeSB0byB1c2UgU01DNjQgdG8gcGFzcyBv
ciByZXR1cm4gNjQtYml0IHZhbHVlcy4NCj4gLSAqIEZvciBzdWNoIGNhbGxzIFBTQ0lfMF8yX0ZO
X05BVElWRSh4KSB3aWxsIGNob29zZSB0aGUgYXBwcm9wcmlhdGUNCj4gKyAqIEZvciBzdWNoIGNh
bGxzIFBTQ0lfKl9GTl9OQVRJVkUoeCkgd2lsbCBjaG9vc2UgdGhlIGFwcHJvcHJpYXRlDQo+ICAq
IChuYXRpdmUtd2lkdGgpIGZ1bmN0aW9uIElELg0KPiAgKi8NCj4gI2lmZGVmIENPTkZJR19BUk1f
NjQNCj4gI2RlZmluZSBQU0NJXzBfMl9GTl9OQVRJVkUobmFtZSkgICAgUFNDSV8wXzJfRk42NF8j
I25hbWUNCj4gKyNkZWZpbmUgUFNDSV8xXzBfRk5fTkFUSVZFKG5hbWUpICAgIFBTQ0lfMV8wX0ZO
NjRfIyNuYW1lDQo+ICNlbHNlDQo+ICNkZWZpbmUgUFNDSV8wXzJfRk5fTkFUSVZFKG5hbWUpICAg
IFBTQ0lfMF8yX0ZOMzJfIyNuYW1lDQo+ICsjZGVmaW5lIFBTQ0lfMV8wX0ZOX05BVElWRShuYW1l
KSAgICBQU0NJXzFfMF9GTjMyXyMjbmFtZQ0KPiAjZW5kaWYNCj4gDQo+IHVpbnQzMl90IHBzY2lf
dmVyOw0KPiBAQCAtNjAsNiArNjMsMjQgQEAgdm9pZCBjYWxsX3BzY2lfY3B1X29mZih2b2lkKQ0K
PiAgICAgfQ0KPiB9DQo+IA0KPiAraW50IGNhbGxfcHNjaV9zeXN0ZW1fc3VzcGVuZCh2b2lkKQ0K
PiArew0KPiArI2lmZGVmIENPTkZJR19TWVNURU1fU1VTUEVORA0KPiArICAgIHN0cnVjdCBhcm1f
c21jY2NfcmVzIHJlczsNCj4gKw0KPiArICAgIGlmICggcHNjaV92ZXIgPCBQU0NJX1ZFUlNJT04o
MSwgMCkgKQ0KPiArICAgICAgICByZXR1cm4gUFNDSV9OT1RfU1VQUE9SVEVEOw0KPiArDQo+ICsg
ICAgLyogMm5kIGFyZ3VtZW50IChjb250ZXh0IElEKSBpcyBub3QgdXNlZCAqLw0KPiArICAgIGFy
bV9zbWNjY19zbWMoUFNDSV8xXzBfRk5fTkFUSVZFKFNZU1RFTV9TVVNQRU5EKSwgX19wYShoeXBf
cmVzdW1lKSwgJnJlcyk7DQoNCkkgdGhpbmsgTGludXggaXMgcGFzc2luZyAwIGFzIGNvbnRleHQg
SUQsIHByb2JhYmx5IHRvIG1hcmsgdGhhdCBpdOKAmXMgbm90IHVzZWQsIEkgdGhpbmsgd2Ugc2hv
dWxkIGRvIHRoZQ0Kc2FtZQ0KDQo+ICsgICAgcmV0dXJuIFBTQ0lfUkVUKHJlcyk7DQo+ICsjZWxz
ZQ0KPiArICAgIGRwcmludGsoWEVOTE9HX1dBUk5JTkcsDQo+ICsgICAgICAgICAgICAiU1lTVEVN
X1NVU1BFTkQgbm90IHN1cHBvcnRlZCAoQ09ORklHX1NZU1RFTV9TVVNQRU5EIGRpc2FibGVkKVxu
Iik7DQo+ICsgICAgcmV0dXJuIFBTQ0lfTk9UX1NVUFBPUlRFRDsNCj4gKyNlbmRpZg0KPiArfQ0K
PiArDQo+IHZvaWQgY2FsbF9wc2NpX3N5c3RlbV9vZmYodm9pZCkNCj4gew0KPiAgICAgaWYgKCBw
c2NpX3ZlciA+IFBTQ0lfVkVSU0lPTigwLCAxKSApDQo+IA0KDQpDaGVlcnMsDQpMdWNhDQoNCg0K
DQo=


From xen-devel-bounces@lists.xenproject.org Mon Apr 27 17:17:23 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 27 Apr 2026 17:17:23 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1295124.1571809 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wHPZv-0006qG-Kq; Mon, 27 Apr 2026 17:17:03 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1295124.1571809; Mon, 27 Apr 2026 17:17: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 1wHPZv-0006q9-Hk; Mon, 27 Apr 2026 17:17:03 +0000
Received: by outflank-mailman (input) for mailman id 1295124;
 Mon, 27 Apr 2026 17:17:02 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <chleroy@kernel.org>) id 1wHPZu-0006q3-H1
 for xen-devel@lists.xenproject.org; Mon, 27 Apr 2026 17:17:02 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wHPZt-009M5J-F5
 for xen-devel@lists.xenproject.org; Mon, 27 Apr 2026 19:17:01 +0200
Received: from [10.42.69.8] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <chleroy@kernel.org>)
 id 69ef99f6-2eae-0a2a0a5409dd-0a2a4508ea2a-8
 for <xen-devel@lists.xenproject.org>; Mon, 27 Apr 2026 19:17:01 +0200
Received: from [172.234.252.31] (helo=sea.source.kernel.org)
 by tlsNG-c1860d.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.1)
 (envelope-from <chleroy@kernel.org>)
 id 69ef9a0b-63b5-0a2a45080019-aceafc1fb894-3
 for <xen-devel@lists.xenproject.org>; Mon, 27 Apr 2026 19:17:01 +0200
Received: from smtp.kernel.org (transwarp.subspace.kernel.org [100.75.92.58])
 by sea.source.kernel.org (Postfix) with ESMTP id 0E7B742ACA;
 Mon, 27 Apr 2026 17:16:59 +0000 (UTC)
Received: by smtp.kernel.org (Postfix) with ESMTPSA id 87FE1C2BCB4;
 Mon, 27 Apr 2026 17:16: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=k20201202 header.d=kernel.org header.i="@kernel.org" header.h="From:To:Cc:Subject:Date"
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org;
	s=k20201202; t=1777310218;
	bh=Gdo90UdOw5JDNcbBc6CTpgqBoS99tJWdzzhKt47HDkg=;
	h=From:To:Cc:Subject:Date:From;
	b=U2+LLE02v2RJdGrHn64GqYJdP4+hDdO9CRQcGon9U+fg19LBxhX5PBepS5h9HJCqe
	 szqGGe/Sn0Ja8ufrVfKBRayklpg7ZNqhD3AjlJFyhWTD2cy+E9nyVtxoXvU6RVePwS
	 nC/EKNFwPrGycTqEuaSwxvd9NLoS3iznsIjTk0KPgTVc+veLovfoR+uQQZvkXu6BEL
	 XY5HSP+s8CkmcaZnZCCWlv0qtPkuKqPRoos+3EvmYxD3lbF+eVbofOW/u0ribOc9N6
	 46gB4iCE7qS4DHXiu+LbPED9AO2rWWkmtG0xffEU92OaQJ+vWiy9PumgjbDE3AiKLE
	 isfjlgjrnrghg==
From: "Christophe Leroy (CS GROUP)" <chleroy@kernel.org>
To: Yury Norov <ynorov@nvidia.com>,
	Andrew Morton <akpm@linux-foundation.org>,
	Linus Torvalds <torvalds@linux-foundation.org>,
	David Laight <david.laight.linux@gmail.com>,
	Thomas Gleixner <tglx@linutronix.de>
Cc: "Christophe Leroy (CS GROUP)" <chleroy@kernel.org>,
	linux-alpha@vger.kernel.org,
	linux-kernel@vger.kernel.org,
	linux-snps-arc@lists.infradead.org,
	linux-arm-kernel@lists.infradead.org,
	linux-mips@vger.kernel.org,
	linuxppc-dev@lists.ozlabs.org,
	kvm@vger.kernel.org,
	linux-riscv@lists.infradead.org,
	linux-s390@vger.kernel.org,
	sparclinux@vger.kernel.org,
	linux-um@lists.infradead.org,
	dmaengine@vger.kernel.org,
	linux-efi@vger.kernel.org,
	linux-fsi@lists.ozlabs.org,
	amd-gfx@lists.freedesktop.org,
	dri-devel@lists.freedesktop.org,
	intel-gfx@lists.freedesktop.org,
	linux-wpan@vger.kernel.org,
	netdev@vger.kernel.org,
	linux-wireless@vger.kernel.org,
	linux-spi@vger.kernel.org,
	linux-media@vger.kernel.org,
	linux-staging@lists.linux.dev,
	linux-serial@vger.kernel.org,
	linux-usb@vger.kernel.org,
	xen-devel@lists.xenproject.org,
	linux-fsdevel@vger.kernel.org,
	ocfs2-devel@lists.linux.dev,
	bpf@vger.kernel.org,
	kasan-dev@googlegroups.com,
	linux-mm@kvack.org,
	linux-x25@vger.kernel.org,
	rust-for-linux@vger.kernel.org,
	linux-sound@vger.kernel.org,
	sound-open-firmware@alsa-project.org,
	linux-csky@vger.kernel.org,
	linux-hexagon@vger.kernel.org,
	loongarch@lists.linux.dev,
	linux-m68k@lists.linux-m68k.org,
	linux-openrisc@vger.kernel.org,
	linux-parisc@vger.kernel.org,
	linux-sh@vger.kernel.org,
	linux-arch@vger.kernel.org
Subject: [RFC PATCH v1 0/9] uaccess: Convert small fixed size copy_{to/from}_user() to scoped user access
Date: Mon, 27 Apr 2026 19:13:41 +0200
Message-ID: <cover.1777306795.git.chleroy@kernel.org>
X-Mailer: git-send-email 2.49.0
MIME-Version: 1.0
X-Developer-Signature: v=1; a=openpgp-sha256; l=7253; i=chleroy@kernel.org; h=from:subject:message-id; bh=Gdo90UdOw5JDNcbBc6CTpgqBoS99tJWdzzhKt47HDkg=; b=owGbwMvMwCV2d0KB2p7V54MZT6slMWS+nxkaMinl/6P42P3bc0Qj3v7nk1G4YbGg/rEse+BPv 7e7BNgWdJSyMIhxMciKKbIc/8+9a0bXl9T8qbv0YeawMoEMYeDiFICJRDExMmwV0vIK89sWnHjX Y4WN3O+gaTyvmP0m2koKTvi9YNORsocM/wPkn2xoM0q8N63lWvLNy/m/speGuG7LLGiQ1I6bVSB dxgQA
X-Developer-Key: i=chleroy@kernel.org; a=openpgp; fpr=10FFE6F8B390DE17ACC2632368A92FEB01B8DD78
Content-Transfer-Encoding: 8bit
X-purgate-ID: tlsNG-c1860d/1777310221-3B97DDB1-9AAA5415/0/0
X-purgate-type: clean
X-purgate-size: 7255

A lot of copy_from_user() and copy_to_user() perform copies of small
fixed size pieces of data between kernel and userspace, and don't
care about partial copies.

copy_from_user() and copy_to_user() are big functions optimised for
copying large amount of data, with cache management, etc ... This is
often overkill for small copies that could just be inlined instead.

What makes things a bit more tricky is that those copy functions
are designed to handle partial copies in case of page fault. But among
the 6000 callers of those functions, only 2% really care about the
quantity of no-copied data that those functions return. All other ones
fails as soon as the returned value is not 0, returning -EACCESS.

So first step in this series is to introduce variants called
copy_from_user_partial() and copy_to_user_partial() which will be
called by the 2% users that care about the partial copy, then the
original copy_from_user() and copy_to_user() are changed to return
-EFAULT when the copy fails.

Then the second step is to implement copy of small fixed-size data
with scoped user access instead of calling the arch specific heavy
user copy functions.

Patch 5, can be split in different patches for each archicture or
subsystem, but let's get a first feedback and agree on the principle.

Christophe Leroy (CS GROUP) (9):
  uaccess: Split check_zeroed_user() out of usercopy.c
  uaccess: Convert INLINE_COPY_{TO/FROM}_USER to kconfig and reduce
    ifdefery
  x86/umip: Be stricter in fixup_umip_exception()
  uaccess: Introduce copy_{to/from}_user_partial()
  uaccess: Switch to copy_{to/from}_user_partial() when relevant
  uaccess: Change copy_{to/from}_user to return -EFAULT
  x86: Add unsafe_copy_from_user()
  arm64: Add unsafe_copy_from_user()
  uaccess: Convert small fixed size copy_{to/from}_user() to scoped user
    access

 arch/alpha/Kconfig                            |   1 +
 arch/alpha/kernel/osf_sys.c                   |   4 +-
 arch/alpha/kernel/termios.c                   |   2 +-
 arch/arc/include/asm/uaccess.h                |   3 -
 arch/arc/kernel/disasm.c                      |   2 +-
 arch/arm/include/asm/uaccess.h                |   2 -
 arch/arm64/include/asm/gcs.h                  |   2 +-
 arch/arm64/include/asm/uaccess.h              |  30 +++--
 arch/arm64/kernel/signal32.c                  |   2 +-
 arch/csky/Kconfig                             |   1 +
 arch/hexagon/include/asm/uaccess.h            |   3 -
 arch/loongarch/include/asm/uaccess.h          |   3 -
 arch/m68k/include/asm/uaccess.h               |   3 -
 arch/microblaze/include/asm/uaccess.h         |   2 -
 arch/mips/include/asm/uaccess.h               |   3 -
 arch/mips/kernel/rtlx.c                       |   8 +-
 arch/mips/kernel/vpe.c                        |   2 +-
 arch/nios2/include/asm/uaccess.h              |   2 -
 arch/openrisc/include/asm/uaccess.h           |   2 -
 arch/parisc/include/asm/uaccess.h             |   3 -
 arch/powerpc/Kconfig                          |   1 +
 arch/powerpc/kvm/book3s_64_mmu_hv.c           |   4 +-
 arch/powerpc/kvm/book3s_64_mmu_radix.c        |   4 +-
 arch/powerpc/kvm/book3s_hv.c                  |   2 +-
 arch/riscv/Kconfig                            |   1 +
 arch/riscv/kernel/signal.c                    |   2 +-
 arch/s390/include/asm/idals.h                 |   8 +-
 arch/s390/include/asm/uaccess.h               |   3 -
 arch/sh/include/asm/uaccess.h                 |   2 -
 arch/sparc/include/asm/uaccess_32.h           |   3 -
 arch/sparc/include/asm/uaccess_64.h           |   2 -
 arch/sparc/kernel/termios.c                   |   2 +-
 arch/um/include/asm/uaccess.h                 |   3 -
 arch/um/kernel/process.c                      |   2 +-
 arch/x86/Kconfig                              |   1 +
 arch/x86/include/asm/uaccess.h                |  29 ++++-
 arch/x86/kernel/umip.c                        |   2 +-
 arch/x86/lib/insn-eval.c                      |   2 +-
 arch/x86/um/signal.c                          |   2 +-
 arch/xtensa/include/asm/uaccess.h             |   2 -
 drivers/android/binder_alloc.c                |   2 +-
 drivers/comedi/comedi_fops.c                  |   4 +-
 drivers/dma/idxd/cdev.c                       |   2 +-
 drivers/firmware/efi/test/efi_test.c          |   2 +-
 drivers/fsi/fsi-scom.c                        |   2 +-
 .../amd/display/amdgpu_dm/amdgpu_dm_debugfs.c |   2 +-
 drivers/gpu/drm/i915/gt/intel_sseu.c          |   4 +-
 drivers/gpu/drm/i915/i915_gem.c               |   4 +-
 drivers/hwtracing/intel_th/msu.c              |   2 +-
 drivers/misc/ibmvmc.c                         |   2 +-
 drivers/misc/vmw_vmci/vmci_host.c             |   2 +-
 drivers/most/most_cdev.c                      |   2 +-
 drivers/net/ieee802154/ca8210.c               |   4 +-
 drivers/net/wireless/ath/wil6210/debugfs.c    |   2 +-
 .../intel/iwlwifi/pcie/gen1_2/trans.c         |   2 +-
 drivers/net/wireless/ti/wlcore/debugfs.c      |   2 +-
 drivers/ps3/ps3-lpm.c                         |   2 +-
 drivers/s390/crypto/zcrypt_api.h              |   4 +-
 drivers/spi/spidev.c                          |   2 +-
 .../staging/media/atomisp/pci/atomisp_cmd.c   |   8 +-
 drivers/tty/tty_ioctl.c                       |  14 +--
 drivers/tty/vt/vc_screen.c                    |   4 +-
 drivers/usb/gadget/function/f_hid.c           |   4 +-
 drivers/usb/gadget/function/f_printer.c       |   2 +-
 drivers/vfio/vfio_iommu_type1.c               |   4 +-
 drivers/xen/xenbus/xenbus_dev_frontend.c      |   2 +-
 fs/namespace.c                                |   2 +-
 fs/ocfs2/dlmfs/dlmfs.c                        |   2 +-
 fs/proc/base.c                                |   4 +-
 include/asm-generic/uaccess.h                 |   2 -
 include/linux/bpfptr.h                        |   2 +-
 include/linux/sockptr.h                       |   4 +-
 include/linux/uaccess.h                       | 107 ++++++++++++++----
 ipc/msg.c                                     |   8 +-
 ipc/sem.c                                     |   8 +-
 ipc/shm.c                                     |  18 +--
 kernel/regset.c                               |   2 +-
 kernel/sys.c                                  |   4 +-
 lib/Kconfig                                   |   3 +
 lib/Makefile                                  |   4 +-
 lib/kfifo.c                                   |   8 +-
 lib/{usercopy.c => usercheck.c}               |  22 ----
 lib/usercopy.c                                |  66 -----------
 mm/kasan/kasan_test_c.c                       |   4 +-
 mm/memory.c                                   |   2 +-
 net/x25/af_x25.c                              |   2 +-
 rust/helpers/uaccess.c                        |   6 +-
 sound/pci/emu10k1/emufx.c                     |   4 +-
 sound/pci/rme9652/hdsp.c                      |   6 +-
 sound/soc/intel/avs/probes.c                  |   6 +-
 sound/soc/sof/compress.c                      |  12 +-
 sound/soc/sof/sof-client-probes.c             |   6 +-
 92 files changed, 269 insertions(+), 288 deletions(-)
 copy lib/{usercopy.c => usercheck.c} (73%)

-- 
2.49.0



From xen-devel-bounces@lists.xenproject.org Mon Apr 27 17:17:26 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 27 Apr 2026 17:17:26 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1295126.1571819 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wHPa8-00077U-SX; Mon, 27 Apr 2026 17:17:16 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1295126.1571819; Mon, 27 Apr 2026 17:17: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 1wHPa8-00077L-Pb; Mon, 27 Apr 2026 17:17:16 +0000
Received: by outflank-mailman (input) for mailman id 1295126;
 Mon, 27 Apr 2026 17:17:15 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <chleroy@kernel.org>) id 1wHPa7-00075y-PN
 for xen-devel@lists.xenproject.org; Mon, 27 Apr 2026 17:17:15 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wHPa7-00DDSo-67
 for xen-devel@lists.xenproject.org; Mon, 27 Apr 2026 19:17:15 +0200
Received: from [10.42.69.9] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <chleroy@kernel.org>)
 id 69ef9a09-bab6-0a2a0a5309dd-0a2a4509e65e-34
 for <xen-devel@lists.xenproject.org>; Mon, 27 Apr 2026 19:17:15 +0200
Received: from [172.234.252.31] (helo=sea.source.kernel.org)
 by tlsNG-bad1c0.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.1)
 (envelope-from <chleroy@kernel.org>)
 id 69ef9a19-2497-0a2a45090019-aceafc1fae06-3
 for <xen-devel@lists.xenproject.org>; Mon, 27 Apr 2026 19:17:14 +0200
Received: from smtp.kernel.org (transwarp.subspace.kernel.org [100.75.92.58])
 by sea.source.kernel.org (Postfix) with ESMTP id 12679437DE;
 Mon, 27 Apr 2026 17:17:13 +0000 (UTC)
Received: by smtp.kernel.org (Postfix) with ESMTPSA id AC974C2BCB5;
 Mon, 27 Apr 2026 17:16:59 +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=k20201202 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/simple; d=kernel.org;
	s=k20201202; t=1777310232;
	bh=745VKRe61Lf8afs4o89V2mPmcfGcqMzEwAyCkwUFzR4=;
	h=From:To:Cc:Subject:Date:In-Reply-To:References:From;
	b=ccnzw+capg6i/qeCJEEZZnJkaeh2P8NEABjGdQ84B8/8ElHQuhaIfwHK4KyIZjuzW
	 fShA2udW2NQ0Ct7kJfcn/Kb043ljqkq7hTjPsRqwiNPGH9FmgvMogRNjEATWGrG26g
	 6zW5qtX0OAMj+t+S60HkjDsyGYMrisyc3m/7o9VPvVvQnsaPOrT5y+ZTzyh8Xto7fx
	 AWFGU9d3c0Mo3tNoddRUR02dQmZ5LMWSNNkmTWtszo39IueJ4zsAp4+3T5NcIhGntz
	 oVxgjUbjxhRTuJF8KweLMZaWvhi+rfu1/RR3XrUIQOPEazAae4t8SpoXJ0czDjJbhT
	 7qOjNG8l7cqnA==
From: "Christophe Leroy (CS GROUP)" <chleroy@kernel.org>
To: Yury Norov <ynorov@nvidia.com>,
	Andrew Morton <akpm@linux-foundation.org>,
	Linus Torvalds <torvalds@linux-foundation.org>,
	David Laight <david.laight.linux@gmail.com>,
	Thomas Gleixner <tglx@linutronix.de>
Cc: "Christophe Leroy (CS GROUP)" <chleroy@kernel.org>,
	linux-alpha@vger.kernel.org,
	linux-kernel@vger.kernel.org,
	linux-snps-arc@lists.infradead.org,
	linux-arm-kernel@lists.infradead.org,
	linux-mips@vger.kernel.org,
	linuxppc-dev@lists.ozlabs.org,
	kvm@vger.kernel.org,
	linux-riscv@lists.infradead.org,
	linux-s390@vger.kernel.org,
	sparclinux@vger.kernel.org,
	linux-um@lists.infradead.org,
	dmaengine@vger.kernel.org,
	linux-efi@vger.kernel.org,
	linux-fsi@lists.ozlabs.org,
	amd-gfx@lists.freedesktop.org,
	dri-devel@lists.freedesktop.org,
	intel-gfx@lists.freedesktop.org,
	linux-wpan@vger.kernel.org,
	netdev@vger.kernel.org,
	linux-wireless@vger.kernel.org,
	linux-spi@vger.kernel.org,
	linux-media@vger.kernel.org,
	linux-staging@lists.linux.dev,
	linux-serial@vger.kernel.org,
	linux-usb@vger.kernel.org,
	xen-devel@lists.xenproject.org,
	linux-fsdevel@vger.kernel.org,
	ocfs2-devel@lists.linux.dev,
	bpf@vger.kernel.org,
	kasan-dev@googlegroups.com,
	linux-mm@kvack.org,
	linux-x25@vger.kernel.org,
	rust-for-linux@vger.kernel.org,
	linux-sound@vger.kernel.org,
	sound-open-firmware@alsa-project.org,
	linux-csky@vger.kernel.org,
	linux-hexagon@vger.kernel.org,
	loongarch@lists.linux.dev,
	linux-m68k@lists.linux-m68k.org,
	linux-openrisc@vger.kernel.org,
	linux-parisc@vger.kernel.org,
	linux-sh@vger.kernel.org,
	linux-arch@vger.kernel.org
Subject: [RFC PATCH v1 1/9] uaccess: Split check_zeroed_user() out of usercopy.c
Date: Mon, 27 Apr 2026 19:13:42 +0200
Message-ID: <a6d39afb167871e0459946dfd6b28bc994ae3c81.1777306795.git.chleroy@kernel.org>
X-Mailer: git-send-email 2.49.0
In-Reply-To: <cover.1777306795.git.chleroy@kernel.org>
References: <cover.1777306795.git.chleroy@kernel.org>
MIME-Version: 1.0
X-Developer-Signature: v=1; a=openpgp-sha256; l=4389; i=chleroy@kernel.org; h=from:subject:message-id; bh=745VKRe61Lf8afs4o89V2mPmcfGcqMzEwAyCkwUFzR4=; b=owGbwMvMwCV2d0KB2p7V54MZT6slMWS+nxmtvkzq83WmyICs092/GNmylHyYwx1uy/R0rjqso Tc19NiJjlIWBjEuBlkxRZbj/7l3zej6kpo/dZc+zBxWJpAhDFycAjCRrBxGhr1T21lnr9ow8bLw mlcX9LlDfR53LmTbs/fCv2dGAh23RTkY/gpGWFpU+sbMuNm2suHwI9OT2xZsfrLc1dbD4+idxHd 72DkA
X-Developer-Key: i=chleroy@kernel.org; a=openpgp; fpr=10FFE6F8B390DE17ACC2632368A92FEB01B8DD78
Content-Transfer-Encoding: 8bit
X-purgate-ID: tlsNG-bad1c0/1777310234-92D77A53-3E504FEA/0/0
X-purgate-type: clean
X-purgate-size: 4391

Until commit f5a1a536fa14 ("lib: introduce copy_struct_from_user()
helper"), lib/usercopy.c was containing only the out-line version
of user copy fonctions.

That commit added function check_zeroed_user() into the same file.
Move that function into a new file named usercheck.c, so that next
patch can change usercopy.c build to a conditional build.

Signed-off-by: Christophe Leroy (CS GROUP) <chleroy@kernel.org>
---
 lib/Makefile                    |  1 +
 lib/{usercopy.c => usercheck.c} | 22 ------------
 lib/usercopy.c                  | 62 ---------------------------------
 3 files changed, 1 insertion(+), 84 deletions(-)
 copy lib/{usercopy.c => usercheck.c} (73%)

diff --git a/lib/Makefile b/lib/Makefile
index f33a24bf1c19..7c0334d7675b 100644
--- a/lib/Makefile
+++ b/lib/Makefile
@@ -59,6 +59,7 @@ obj-y += bcd.o sort.o parser.o debug_locks.o random32.o \
 	 percpu-refcount.o rhashtable.o base64.o \
 	 once.o refcount.o rcuref.o usercopy.o errseq.o bucket_locks.o \
 	 generic-radix-tree.o bitmap-str.o
+obj-y += usercheck.o
 obj-y += string_helpers.o
 obj-y += hexdump.o
 obj-$(CONFIG_TEST_HEXDUMP) += test_hexdump.o
diff --git a/lib/usercopy.c b/lib/usercheck.c
similarity index 73%
copy from lib/usercopy.c
copy to lib/usercheck.c
index b00a3a957de6..15b0d9a18435 100644
--- a/lib/usercopy.c
+++ b/lib/usercheck.c
@@ -2,32 +2,10 @@
 #include <linux/compiler.h>
 #include <linux/errno.h>
 #include <linux/export.h>
-#include <linux/fault-inject-usercopy.h>
-#include <linux/instrumented.h>
 #include <linux/kernel.h>
-#include <linux/nospec.h>
-#include <linux/string.h>
 #include <linux/uaccess.h>
 #include <linux/wordpart.h>
 
-/* out-of-line parts */
-
-#if !defined(INLINE_COPY_FROM_USER)
-unsigned long _copy_from_user(void *to, const void __user *from, unsigned long n)
-{
-	return _inline_copy_from_user(to, from, n);
-}
-EXPORT_SYMBOL(_copy_from_user);
-#endif
-
-#if !defined(INLINE_COPY_TO_USER)
-unsigned long _copy_to_user(void __user *to, const void *from, unsigned long n)
-{
-	return _inline_copy_to_user(to, from, n);
-}
-EXPORT_SYMBOL(_copy_to_user);
-#endif
-
 /**
  * check_zeroed_user: check if a userspace buffer only contains zero bytes
  * @from: Source address, in userspace.
diff --git a/lib/usercopy.c b/lib/usercopy.c
index b00a3a957de6..7a93f56d81dd 100644
--- a/lib/usercopy.c
+++ b/lib/usercopy.c
@@ -1,14 +1,6 @@
 // SPDX-License-Identifier: GPL-2.0
-#include <linux/compiler.h>
-#include <linux/errno.h>
 #include <linux/export.h>
-#include <linux/fault-inject-usercopy.h>
-#include <linux/instrumented.h>
-#include <linux/kernel.h>
-#include <linux/nospec.h>
-#include <linux/string.h>
 #include <linux/uaccess.h>
-#include <linux/wordpart.h>
 
 /* out-of-line parts */
 
@@ -27,57 +19,3 @@ unsigned long _copy_to_user(void __user *to, const void *from, unsigned long n)
 }
 EXPORT_SYMBOL(_copy_to_user);
 #endif
-
-/**
- * check_zeroed_user: check if a userspace buffer only contains zero bytes
- * @from: Source address, in userspace.
- * @size: Size of buffer.
- *
- * This is effectively shorthand for "memchr_inv(from, 0, size) == NULL" for
- * userspace addresses (and is more efficient because we don't care where the
- * first non-zero byte is).
- *
- * Returns:
- *  * 0: There were non-zero bytes present in the buffer.
- *  * 1: The buffer was full of zero bytes.
- *  * -EFAULT: access to userspace failed.
- */
-int check_zeroed_user(const void __user *from, size_t size)
-{
-	unsigned long val;
-	uintptr_t align = (uintptr_t) from % sizeof(unsigned long);
-
-	if (unlikely(size == 0))
-		return 1;
-
-	from -= align;
-	size += align;
-
-	if (!user_read_access_begin(from, size))
-		return -EFAULT;
-
-	unsafe_get_user(val, (unsigned long __user *) from, err_fault);
-	if (align)
-		val &= ~aligned_byte_mask(align);
-
-	while (size > sizeof(unsigned long)) {
-		if (unlikely(val))
-			goto done;
-
-		from += sizeof(unsigned long);
-		size -= sizeof(unsigned long);
-
-		unsafe_get_user(val, (unsigned long __user *) from, err_fault);
-	}
-
-	if (size < sizeof(unsigned long))
-		val &= aligned_byte_mask(size);
-
-done:
-	user_read_access_end();
-	return (val == 0);
-err_fault:
-	user_read_access_end();
-	return -EFAULT;
-}
-EXPORT_SYMBOL(check_zeroed_user);
-- 
2.49.0



From xen-devel-bounces@lists.xenproject.org Mon Apr 27 17:17:47 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 27 Apr 2026 17:17:47 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1295138.1571829 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wHPaT-0007hv-9Y; Mon, 27 Apr 2026 17:17:37 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1295138.1571829; Mon, 27 Apr 2026 17:17: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 1wHPaT-0007ho-5O; Mon, 27 Apr 2026 17:17:37 +0000
Received: by outflank-mailman (input) for mailman id 1295138;
 Mon, 27 Apr 2026 17:17:35 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <chleroy@kernel.org>) id 1wHPaR-0007f2-7T
 for xen-devel@lists.xenproject.org; Mon, 27 Apr 2026 17:17:35 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wHPaP-00Dix1-2m
 for xen-devel@lists.xenproject.org; Mon, 27 Apr 2026 19:17:34 +0200
Received: from [10.42.69.4] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <chleroy@kernel.org>)
 id 69ef9a10-e002-0a2a0a5209dd-0a2a4504a82c-40
 for <xen-devel@lists.xenproject.org>; Mon, 27 Apr 2026 19:17:34 +0200
Received: from [172.105.4.254] (helo=tor.source.kernel.org)
 by tlsNG-ebf023.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.1)
 (envelope-from <chleroy@kernel.org>)
 id 69ef9a2d-1dec-0a2a45040019-ac6904fe96fc-3
 for <xen-devel@lists.xenproject.org>; Mon, 27 Apr 2026 19:17:34 +0200
Received: from smtp.kernel.org (transwarp.subspace.kernel.org [100.75.92.58])
 by tor.source.kernel.org (Postfix) with ESMTP id A0A196015B;
 Mon, 27 Apr 2026 17:17:32 +0000 (UTC)
Received: by smtp.kernel.org (Postfix) with ESMTPSA id 9AEAAC2BCB5;
 Mon, 27 Apr 2026 17:17: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=k20201202 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/simple; d=kernel.org;
	s=k20201202; t=1777310252;
	bh=2A3pp34TaOBrBLCc7n3D/0VUADnJLMBU+ywYlmILDq0=;
	h=From:To:Cc:Subject:Date:In-Reply-To:References:From;
	b=iZa57++f4J+GqwvmN6cOlz8Y1H7GNDryi4ZRD+CJk+hBQU7Iobf+tE7/GXYinO2zm
	 iEth1up0MDkLOAxzQiz5mqcfHR3P06TXmSl3XzIFaDPQuFHo3UkJmapo/kW88jy3aQ
	 3aznlfwGIxcYhdaW4V5tVjatVhcyAHWEKfRp+CGH8zAHmw+dzciaz6iCaNPprV57bn
	 8osxBss4ioepFyLm+2kR+UIAIIrgH8FbX9Dl39gcSvCHEwtnH4JUk+pOBX2jvh7BG3
	 7M8Bd9CW5MVAHSPSRYqg08B9eeC3kSJm80fJ6QSe91ed2+rsgDjp3uvvAKjOOY8v3a
	 6k1/LUiGGTPUw==
From: "Christophe Leroy (CS GROUP)" <chleroy@kernel.org>
To: Yury Norov <ynorov@nvidia.com>,
	Andrew Morton <akpm@linux-foundation.org>,
	Linus Torvalds <torvalds@linux-foundation.org>,
	David Laight <david.laight.linux@gmail.com>,
	Thomas Gleixner <tglx@linutronix.de>
Cc: "Christophe Leroy (CS GROUP)" <chleroy@kernel.org>,
	linux-alpha@vger.kernel.org,
	linux-kernel@vger.kernel.org,
	linux-snps-arc@lists.infradead.org,
	linux-arm-kernel@lists.infradead.org,
	linux-mips@vger.kernel.org,
	linuxppc-dev@lists.ozlabs.org,
	kvm@vger.kernel.org,
	linux-riscv@lists.infradead.org,
	linux-s390@vger.kernel.org,
	sparclinux@vger.kernel.org,
	linux-um@lists.infradead.org,
	dmaengine@vger.kernel.org,
	linux-efi@vger.kernel.org,
	linux-fsi@lists.ozlabs.org,
	amd-gfx@lists.freedesktop.org,
	dri-devel@lists.freedesktop.org,
	intel-gfx@lists.freedesktop.org,
	linux-wpan@vger.kernel.org,
	netdev@vger.kernel.org,
	linux-wireless@vger.kernel.org,
	linux-spi@vger.kernel.org,
	linux-media@vger.kernel.org,
	linux-staging@lists.linux.dev,
	linux-serial@vger.kernel.org,
	linux-usb@vger.kernel.org,
	xen-devel@lists.xenproject.org,
	linux-fsdevel@vger.kernel.org,
	ocfs2-devel@lists.linux.dev,
	bpf@vger.kernel.org,
	kasan-dev@googlegroups.com,
	linux-mm@kvack.org,
	linux-x25@vger.kernel.org,
	rust-for-linux@vger.kernel.org,
	linux-sound@vger.kernel.org,
	sound-open-firmware@alsa-project.org,
	linux-csky@vger.kernel.org,
	linux-hexagon@vger.kernel.org,
	loongarch@lists.linux.dev,
	linux-m68k@lists.linux-m68k.org,
	linux-openrisc@vger.kernel.org,
	linux-parisc@vger.kernel.org,
	linux-sh@vger.kernel.org,
	linux-arch@vger.kernel.org
Subject: [RFC PATCH v1 2/9] uaccess: Convert INLINE_COPY_{TO/FROM}_USER to kconfig and reduce ifdefery
Date: Mon, 27 Apr 2026 19:13:43 +0200
Message-ID: <9fe875d2f55af59c12708336c571a46038528678.1777306795.git.chleroy@kernel.org>
X-Mailer: git-send-email 2.49.0
In-Reply-To: <cover.1777306795.git.chleroy@kernel.org>
References: <cover.1777306795.git.chleroy@kernel.org>
MIME-Version: 1.0
X-Developer-Signature: v=1; a=openpgp-sha256; l=18999; i=chleroy@kernel.org; h=from:subject:message-id; bh=2A3pp34TaOBrBLCc7n3D/0VUADnJLMBU+ywYlmILDq0=; b=owGbwMvMwCV2d0KB2p7V54MZT6slMWS+nxl942rk7qV/z0wpsopc/EjgrOKra6+/qq3zDzp1o 3Cx5MQvcR2lLAxiXAyyYoosx/9z75rR9SU1f+oufZg5rEwgQxi4OAVgIuKajAx/ndKvMf5+vP6+ 0DUOzaI/8u977T8/tn8jYyzy8FHU4dqzDP9dp5oyP1vg/Kml4FbUFMnSvxpN1/NNNGPF159+JNd bVcIDAA==
X-Developer-Key: i=chleroy@kernel.org; a=openpgp; fpr=10FFE6F8B390DE17ACC2632368A92FEB01B8DD78
Content-Transfer-Encoding: 8bit
X-purgate-ID: tlsNG-ebf023/1777310254-2BD6C3FF-6F0ACA7D/0/0
X-purgate-type: clean
X-purgate-size: 19001

Among the 21 architectures supported by the kernel, 16 define both
INLINE_COPY_TO_USER and INLINE_COPY_FROM_USER while the 5 other ones
don't define any of the two.

To simplify and reduce risk of mistakes, convert them to a single
kconfig item named CONFIG_ARCH_WANTS_NOINLINE_COPY which will be
selected by the 5 architectures that don't want inlined copy.

To minimise complication in a later patch, also remove
ifdefery and replace it with IS_ENABLED().

Signed-off-by: Christophe Leroy (CS GROUP) <chleroy@kernel.org>
---
 arch/alpha/Kconfig                    |  1 +
 arch/arc/include/asm/uaccess.h        |  3 ---
 arch/arm/include/asm/uaccess.h        |  2 --
 arch/arm64/include/asm/uaccess.h      |  3 ---
 arch/csky/Kconfig                     |  1 +
 arch/hexagon/include/asm/uaccess.h    |  3 ---
 arch/loongarch/include/asm/uaccess.h  |  3 ---
 arch/m68k/include/asm/uaccess.h       |  3 ---
 arch/microblaze/include/asm/uaccess.h |  2 --
 arch/mips/include/asm/uaccess.h       |  3 ---
 arch/nios2/include/asm/uaccess.h      |  2 --
 arch/openrisc/include/asm/uaccess.h   |  2 --
 arch/parisc/include/asm/uaccess.h     |  3 ---
 arch/powerpc/Kconfig                  |  1 +
 arch/riscv/Kconfig                    |  1 +
 arch/s390/include/asm/uaccess.h       |  3 ---
 arch/sh/include/asm/uaccess.h         |  2 --
 arch/sparc/include/asm/uaccess_32.h   |  3 ---
 arch/sparc/include/asm/uaccess_64.h   |  2 --
 arch/um/include/asm/uaccess.h         |  3 ---
 arch/x86/Kconfig                      |  1 +
 arch/xtensa/include/asm/uaccess.h     |  2 --
 include/asm-generic/uaccess.h         |  2 --
 include/linux/uaccess.h               | 32 ++++++++++++---------------
 lib/Kconfig                           |  3 +++
 lib/Makefile                          |  3 ++-
 lib/usercopy.c                        |  4 ----
 rust/helpers/uaccess.c                |  2 +-
 28 files changed, 25 insertions(+), 70 deletions(-)

diff --git a/arch/alpha/Kconfig b/arch/alpha/Kconfig
index 7b7dafe7d9df..65e533cead6b 100644
--- a/arch/alpha/Kconfig
+++ b/arch/alpha/Kconfig
@@ -11,6 +11,7 @@ config ALPHA
 	select ARCH_NO_PREEMPT
 	select ARCH_NO_SG_CHAIN
 	select ARCH_USE_CMPXCHG_LOCKREF
+	select ARCH_WANTS_NOINLINE_COPY_USER
 	select FORCE_PCI
 	select PCI_DOMAINS if PCI
 	select PCI_SYSCALL if PCI
diff --git a/arch/arc/include/asm/uaccess.h b/arch/arc/include/asm/uaccess.h
index 1e8809ea000a..e8b161b37a03 100644
--- a/arch/arc/include/asm/uaccess.h
+++ b/arch/arc/include/asm/uaccess.h
@@ -628,9 +628,6 @@ static inline unsigned long __clear_user(void __user *to, unsigned long n)
 	return res;
 }
 
-#define INLINE_COPY_TO_USER
-#define INLINE_COPY_FROM_USER
-
 #define __clear_user			__clear_user
 
 #include <asm-generic/uaccess.h>
diff --git a/arch/arm/include/asm/uaccess.h b/arch/arm/include/asm/uaccess.h
index d6ae80b5df36..7280c162bb71 100644
--- a/arch/arm/include/asm/uaccess.h
+++ b/arch/arm/include/asm/uaccess.h
@@ -616,8 +616,6 @@ raw_copy_to_user(void __user *to, const void *from, unsigned long n)
 }
 #define __clear_user(addr, n)		(memset((void __force *)addr, 0, n), 0)
 #endif
-#define INLINE_COPY_TO_USER
-#define INLINE_COPY_FROM_USER
 
 static inline unsigned long __must_check clear_user(void __user *to, unsigned long n)
 {
diff --git a/arch/arm64/include/asm/uaccess.h b/arch/arm64/include/asm/uaccess.h
index b0c83a08dda9..1e20ec91b56f 100644
--- a/arch/arm64/include/asm/uaccess.h
+++ b/arch/arm64/include/asm/uaccess.h
@@ -456,9 +456,6 @@ do {									\
 	unsafe_copy_loop(__ucu_dst, __ucu_src, __ucu_len, u8, label);	\
 } while (0)
 
-#define INLINE_COPY_TO_USER
-#define INLINE_COPY_FROM_USER
-
 extern unsigned long __must_check __arch_clear_user(void __user *to, unsigned long n);
 static inline unsigned long __must_check __clear_user(void __user *to, unsigned long n)
 {
diff --git a/arch/csky/Kconfig b/arch/csky/Kconfig
index 4331313a42ff..d010d7eb47bf 100644
--- a/arch/csky/Kconfig
+++ b/arch/csky/Kconfig
@@ -40,6 +40,7 @@ config CSKY
 	select ARCH_NEED_CMPXCHG_1_EMU
 	select ARCH_WANT_FRAME_POINTERS if !CPU_CK610 && $(cc-option,-mbacktrace)
 	select ARCH_WANT_DEFAULT_TOPDOWN_MMAP_LAYOUT
+	select ARCH_WANTS_NOINLINE_COPY_USER
 	select COMMON_CLK
 	select CLKSRC_MMIO
 	select CSKY_MPINTC if CPU_CK860
diff --git a/arch/hexagon/include/asm/uaccess.h b/arch/hexagon/include/asm/uaccess.h
index bff77efc0d9a..4bf863217636 100644
--- a/arch/hexagon/include/asm/uaccess.h
+++ b/arch/hexagon/include/asm/uaccess.h
@@ -26,9 +26,6 @@ unsigned long raw_copy_from_user(void *to, const void __user *from,
 				     unsigned long n);
 unsigned long raw_copy_to_user(void __user *to, const void *from,
 				   unsigned long n);
-#define INLINE_COPY_FROM_USER
-#define INLINE_COPY_TO_USER
-
 __kernel_size_t __clear_user_hexagon(void __user *dest, unsigned long count);
 #define __clear_user(a, s) __clear_user_hexagon((a), (s))
 
diff --git a/arch/loongarch/include/asm/uaccess.h b/arch/loongarch/include/asm/uaccess.h
index 438269313e78..72a04ac88549 100644
--- a/arch/loongarch/include/asm/uaccess.h
+++ b/arch/loongarch/include/asm/uaccess.h
@@ -292,9 +292,6 @@ raw_copy_to_user(void __user *to, const void *from, unsigned long n)
 	return __copy_user((__force void *)to, from, n);
 }
 
-#define INLINE_COPY_FROM_USER
-#define INLINE_COPY_TO_USER
-
 /*
  * __clear_user: - Zero a block of memory in user space, with less checking.
  * @addr: Destination address, in user space.
diff --git a/arch/m68k/include/asm/uaccess.h b/arch/m68k/include/asm/uaccess.h
index 64914872a5c9..20e249a6ad07 100644
--- a/arch/m68k/include/asm/uaccess.h
+++ b/arch/m68k/include/asm/uaccess.h
@@ -377,9 +377,6 @@ raw_copy_to_user(void __user *to, const void *from, unsigned long n)
 		return __constant_copy_to_user(to, from, n);
 	return __generic_copy_to_user(to, from, n);
 }
-#define INLINE_COPY_FROM_USER
-#define INLINE_COPY_TO_USER
-
 #define __get_kernel_nofault(dst, src, type, err_label)			\
 do {									\
 	type *__gk_dst = (type *)(dst);					\
diff --git a/arch/microblaze/include/asm/uaccess.h b/arch/microblaze/include/asm/uaccess.h
index 3aab2f17e046..3355f541e12a 100644
--- a/arch/microblaze/include/asm/uaccess.h
+++ b/arch/microblaze/include/asm/uaccess.h
@@ -250,8 +250,6 @@ raw_copy_to_user(void __user *to, const void *from, unsigned long n)
 {
 	return __copy_tofrom_user(to, (__force const void __user *)from, n);
 }
-#define INLINE_COPY_FROM_USER
-#define INLINE_COPY_TO_USER
 
 /*
  * Copy a null terminated string from userspace.
diff --git a/arch/mips/include/asm/uaccess.h b/arch/mips/include/asm/uaccess.h
index c0cede273c7c..8714caefbac8 100644
--- a/arch/mips/include/asm/uaccess.h
+++ b/arch/mips/include/asm/uaccess.h
@@ -433,9 +433,6 @@ raw_copy_to_user(void __user *to, const void *from, unsigned long n)
 	return __cu_len_r;
 }
 
-#define INLINE_COPY_FROM_USER
-#define INLINE_COPY_TO_USER
-
 extern __kernel_size_t __bzero(void __user *addr, __kernel_size_t size);
 
 /*
diff --git a/arch/nios2/include/asm/uaccess.h b/arch/nios2/include/asm/uaccess.h
index 6ccc9a232c23..46d7312a1c96 100644
--- a/arch/nios2/include/asm/uaccess.h
+++ b/arch/nios2/include/asm/uaccess.h
@@ -57,8 +57,6 @@ extern unsigned long
 raw_copy_from_user(void *to, const void __user *from, unsigned long n);
 extern unsigned long
 raw_copy_to_user(void __user *to, const void *from, unsigned long n);
-#define INLINE_COPY_FROM_USER
-#define INLINE_COPY_TO_USER
 
 extern long strncpy_from_user(char *__to, const char __user *__from,
 			      long __len);
diff --git a/arch/openrisc/include/asm/uaccess.h b/arch/openrisc/include/asm/uaccess.h
index d6500a374e18..c84effde867a 100644
--- a/arch/openrisc/include/asm/uaccess.h
+++ b/arch/openrisc/include/asm/uaccess.h
@@ -218,8 +218,6 @@ raw_copy_to_user(void __user *to, const void *from, unsigned long size)
 {
 	return __copy_tofrom_user((__force void *)to, from, size);
 }
-#define INLINE_COPY_FROM_USER
-#define INLINE_COPY_TO_USER
 
 extern unsigned long __clear_user(void __user *addr, unsigned long size);
 
diff --git a/arch/parisc/include/asm/uaccess.h b/arch/parisc/include/asm/uaccess.h
index 6c531d2c847e..1dd6a1dd653f 100644
--- a/arch/parisc/include/asm/uaccess.h
+++ b/arch/parisc/include/asm/uaccess.h
@@ -197,7 +197,4 @@ unsigned long __must_check raw_copy_to_user(void __user *dst, const void *src,
 					    unsigned long len);
 unsigned long __must_check raw_copy_from_user(void *dst, const void __user *src,
 					    unsigned long len);
-#define INLINE_COPY_TO_USER
-#define INLINE_COPY_FROM_USER
-
 #endif /* __PARISC_UACCESS_H */
diff --git a/arch/powerpc/Kconfig b/arch/powerpc/Kconfig
index e93df95b79e7..6816f402fe3d 100644
--- a/arch/powerpc/Kconfig
+++ b/arch/powerpc/Kconfig
@@ -187,6 +187,7 @@ config PPC
 	select ARCH_WANT_LD_ORPHAN_WARN
 	select ARCH_WANT_OPTIMIZE_DAX_VMEMMAP	if PPC_RADIX_MMU
 	select ARCH_WANTS_MODULES_DATA_IN_VMALLOC	if PPC_BOOK3S_32 || PPC_8xx
+	select ARCH_WANTS_NOINLINE_COPY_USER
 	select ARCH_WEAK_RELEASE_ACQUIRE
 	select AUDIT_ARCH_COMPAT_GENERIC
 	select BINFMT_ELF
diff --git a/arch/riscv/Kconfig b/arch/riscv/Kconfig
index d235396c4514..492b920c1a51 100644
--- a/arch/riscv/Kconfig
+++ b/arch/riscv/Kconfig
@@ -88,6 +88,7 @@ config RISCV
 	select ARCH_WANT_OPTIMIZE_DAX_VMEMMAP
 	select ARCH_WANT_OPTIMIZE_HUGETLB_VMEMMAP
 	select ARCH_WANTS_NO_INSTR
+	select ARCH_WANTS_NOINLINE_COPY_USER if MMU
 	select ARCH_WANTS_THP_SWAP if HAVE_ARCH_TRANSPARENT_HUGEPAGE
 	select ARCH_WEAK_RELEASE_ACQUIRE if ARCH_USE_QUEUED_SPINLOCKS
 	select BINFMT_FLAT_NO_DATA_START_OFFSET if !MMU
diff --git a/arch/s390/include/asm/uaccess.h b/arch/s390/include/asm/uaccess.h
index dff035372601..2e0472c20da0 100644
--- a/arch/s390/include/asm/uaccess.h
+++ b/arch/s390/include/asm/uaccess.h
@@ -30,9 +30,6 @@ void debug_user_asce(int exit);
 #define uaccess_kmsan_or_inline __always_inline
 #endif
 
-#define INLINE_COPY_FROM_USER
-#define INLINE_COPY_TO_USER
-
 static uaccess_kmsan_or_inline __must_check unsigned long
 raw_copy_from_user(void *to, const void __user *from, unsigned long size)
 {
diff --git a/arch/sh/include/asm/uaccess.h b/arch/sh/include/asm/uaccess.h
index a79609eb14be..0cd75308e6d3 100644
--- a/arch/sh/include/asm/uaccess.h
+++ b/arch/sh/include/asm/uaccess.h
@@ -95,8 +95,6 @@ raw_copy_to_user(void __user *to, const void *from, unsigned long n)
 {
 	return __copy_user((__force void *)to, from, n);
 }
-#define INLINE_COPY_FROM_USER
-#define INLINE_COPY_TO_USER
 
 /*
  * Clear the area and return remaining number of bytes
diff --git a/arch/sparc/include/asm/uaccess_32.h b/arch/sparc/include/asm/uaccess_32.h
index 43284b6ec46a..e01f43c6421c 100644
--- a/arch/sparc/include/asm/uaccess_32.h
+++ b/arch/sparc/include/asm/uaccess_32.h
@@ -190,9 +190,6 @@ static inline unsigned long raw_copy_from_user(void *to, const void __user *from
 	return __copy_user((__force void __user *) to, from, n);
 }
 
-#define INLINE_COPY_FROM_USER
-#define INLINE_COPY_TO_USER
-
 static inline unsigned long __clear_user(void __user *addr, unsigned long size)
 {
 	unsigned long ret;
diff --git a/arch/sparc/include/asm/uaccess_64.h b/arch/sparc/include/asm/uaccess_64.h
index b825a5dd0210..62ee0b074fec 100644
--- a/arch/sparc/include/asm/uaccess_64.h
+++ b/arch/sparc/include/asm/uaccess_64.h
@@ -231,8 +231,6 @@ unsigned long __must_check raw_copy_from_user(void *to,
 unsigned long __must_check raw_copy_to_user(void __user *to,
 					   const void *from,
 					   unsigned long size);
-#define INLINE_COPY_FROM_USER
-#define INLINE_COPY_TO_USER
 
 unsigned long __must_check raw_copy_in_user(void __user *to,
 					   const void __user *from,
diff --git a/arch/um/include/asm/uaccess.h b/arch/um/include/asm/uaccess.h
index 0df9ea4abda8..1e14260c7f0f 100644
--- a/arch/um/include/asm/uaccess.h
+++ b/arch/um/include/asm/uaccess.h
@@ -27,9 +27,6 @@ static inline int __access_ok(const void __user *ptr, unsigned long size);
 #define __access_ok __access_ok
 #define __clear_user __clear_user
 
-#define INLINE_COPY_FROM_USER
-#define INLINE_COPY_TO_USER
-
 #include <asm-generic/uaccess.h>
 
 static inline int __access_ok(const void __user *ptr, unsigned long size)
diff --git a/arch/x86/Kconfig b/arch/x86/Kconfig
index f3f7cb01d69d..c1e58d8c6864 100644
--- a/arch/x86/Kconfig
+++ b/arch/x86/Kconfig
@@ -143,6 +143,7 @@ config X86
 	select ARCH_WANTS_CLOCKSOURCE_READ_INLINE	if X86_64
 	select ARCH_WANTS_DYNAMIC_TASK_STRUCT
 	select ARCH_WANTS_NO_INSTR
+	select ARCH_WANTS_NOINLINE_COPY_USER
 	select ARCH_WANT_GENERAL_HUGETLB
 	select ARCH_WANT_HUGE_PMD_SHARE		if X86_64
 	select ARCH_WANT_LD_ORPHAN_WARN
diff --git a/arch/xtensa/include/asm/uaccess.h b/arch/xtensa/include/asm/uaccess.h
index 56aec6d504fe..f9e1623a7be9 100644
--- a/arch/xtensa/include/asm/uaccess.h
+++ b/arch/xtensa/include/asm/uaccess.h
@@ -237,8 +237,6 @@ raw_copy_to_user(void __user *to, const void *from, unsigned long n)
 	prefetch(from);
 	return __xtensa_copy_user((__force void *)to, from, n);
 }
-#define INLINE_COPY_FROM_USER
-#define INLINE_COPY_TO_USER
 
 /*
  * We need to return the number of bytes not cleared.  Our memset()
diff --git a/include/asm-generic/uaccess.h b/include/asm-generic/uaccess.h
index b276f783494c..fb33a71fd24e 100644
--- a/include/asm-generic/uaccess.h
+++ b/include/asm-generic/uaccess.h
@@ -91,8 +91,6 @@ raw_copy_to_user(void __user *to, const void *from, unsigned long n)
 	memcpy((void __force *)to, from, n);
 	return 0;
 }
-#define INLINE_COPY_FROM_USER
-#define INLINE_COPY_TO_USER
 #endif /* CONFIG_UACCESS_MEMCPY */
 
 /*
diff --git a/include/linux/uaccess.h b/include/linux/uaccess.h
index 56328601218c..bd1201c81d94 100644
--- a/include/linux/uaccess.h
+++ b/include/linux/uaccess.h
@@ -83,8 +83,8 @@
  * with that.  They should not be used directly; they are used to implement
  * the 6 functions (copy_{to,from}_user(), __copy_{to,from}_user_inatomic())
  * that are used instead.  Out of those, __... ones are inlined.  Plain
- * copy_{to,from}_user() might or might not be inlined.  If you want them
- * inlined, have asm/uaccess.h define INLINE_COPY_{TO,FROM}_USER.
+ * copy_{to,from}_user() might or might not be inlined.  If you don't want them
+ * inlined, select CONFIG_ARCH_WANTS_NOINLINE_COPY_USER.
  *
  * NOTE: only copy_from_user() zero-pads the destination in case of short copy.
  * Neither __copy_from_user() nor __copy_from_user_inatomic() zero anything
@@ -157,8 +157,8 @@ __copy_to_user(void __user *to, const void *from, unsigned long n)
 }
 
 /*
- * Architectures that #define INLINE_COPY_TO_USER use this function
- * directly in the normal copy_to/from_user(), the other ones go
+ * Architectures that don't select CONFIG_ARCH_WANTS_NOINLINE_COPY_USER use
+ * this function directly in the normal copy_to/from_user(), the other ones go
  * through an extern _copy_to/from_user(), which expands the same code
  * here.
  */
@@ -190,10 +190,9 @@ _inline_copy_from_user(void *to, const void __user *from, unsigned long n)
 	memset(to + (n - res), 0, res);
 	return res;
 }
-#ifndef INLINE_COPY_FROM_USER
+
 extern __must_check unsigned long
 _copy_from_user(void *, const void __user *, unsigned long);
-#endif
 
 static inline __must_check unsigned long
 _inline_copy_to_user(void __user *to, const void *from, unsigned long n)
@@ -207,21 +206,19 @@ _inline_copy_to_user(void __user *to, const void *from, unsigned long n)
 	}
 	return n;
 }
-#ifndef INLINE_COPY_TO_USER
+
 extern __must_check unsigned long
 _copy_to_user(void __user *, const void *, unsigned long);
-#endif
 
 static __always_inline unsigned long __must_check
 copy_from_user(void *to, const void __user *from, unsigned long n)
 {
 	if (!check_copy_size(to, n, false))
 		return n;
-#ifdef INLINE_COPY_FROM_USER
-	return _inline_copy_from_user(to, from, n);
-#else
-	return _copy_from_user(to, from, n);
-#endif
+	if (IS_ENABLED(ARCH_WANTS_NOINLINE_COPY_USER))
+		return _copy_from_user(to, from, n);
+	else
+		return _inline_copy_from_user(to, from, n);
 }
 
 static __always_inline unsigned long __must_check
@@ -230,11 +227,10 @@ copy_to_user(void __user *to, const void *from, unsigned long n)
 	if (!check_copy_size(from, n, true))
 		return n;
 
-#ifdef INLINE_COPY_TO_USER
-	return _inline_copy_to_user(to, from, n);
-#else
-	return _copy_to_user(to, from, n);
-#endif
+	if (IS_ENABLED(ARCH_WANTS_NOINLINE_COPY_USER))
+		return _copy_to_user(to, from, n);
+	else
+		return _inline_copy_to_user(to, from, n);
 }
 
 #ifndef copy_mc_to_kernel
diff --git a/lib/Kconfig b/lib/Kconfig
index 00a9509636c1..a2e07d4dd2bf 100644
--- a/lib/Kconfig
+++ b/lib/Kconfig
@@ -68,6 +68,9 @@ config ARCH_HAS_STRNCPY_FROM_USER
 config ARCH_HAS_STRNLEN_USER
 	bool
 
+config ARCH_WANTS_NOINLINE_COPY_USER
+	bool
+
 config GENERIC_STRNCPY_FROM_USER
 	def_bool !ARCH_HAS_STRNCPY_FROM_USER
 
diff --git a/lib/Makefile b/lib/Makefile
index 7c0334d7675b..f4d577910671 100644
--- a/lib/Makefile
+++ b/lib/Makefile
@@ -57,9 +57,10 @@ obj-y += bcd.o sort.o parser.o debug_locks.o random32.o \
 	 list_sort.o uuid.o iov_iter.o clz_ctz.o \
 	 bsearch.o find_bit.o llist.o lwq.o memweight.o kfifo.o \
 	 percpu-refcount.o rhashtable.o base64.o \
-	 once.o refcount.o rcuref.o usercopy.o errseq.o bucket_locks.o \
+	 once.o refcount.o rcuref.o errseq.o bucket_locks.o \
 	 generic-radix-tree.o bitmap-str.o
 obj-y += usercheck.o
+obj-$(CONFIG_ARCH_WANTS_NOINLINE_COPY_USER) += usercopy.o
 obj-y += string_helpers.o
 obj-y += hexdump.o
 obj-$(CONFIG_TEST_HEXDUMP) += test_hexdump.o
diff --git a/lib/usercopy.c b/lib/usercopy.c
index 7a93f56d81dd..d2deb4b0a3c5 100644
--- a/lib/usercopy.c
+++ b/lib/usercopy.c
@@ -4,18 +4,14 @@
 
 /* out-of-line parts */
 
-#if !defined(INLINE_COPY_FROM_USER)
 unsigned long _copy_from_user(void *to, const void __user *from, unsigned long n)
 {
 	return _inline_copy_from_user(to, from, n);
 }
 EXPORT_SYMBOL(_copy_from_user);
-#endif
 
-#if !defined(INLINE_COPY_TO_USER)
 unsigned long _copy_to_user(void __user *to, const void *from, unsigned long n)
 {
 	return _inline_copy_to_user(to, from, n);
 }
 EXPORT_SYMBOL(_copy_to_user);
-#endif
diff --git a/rust/helpers/uaccess.c b/rust/helpers/uaccess.c
index d9625b9ee046..01de4fbbcc84 100644
--- a/rust/helpers/uaccess.c
+++ b/rust/helpers/uaccess.c
@@ -14,7 +14,7 @@ rust_helper_copy_to_user(void __user *to, const void *from, unsigned long n)
 	return copy_to_user(to, from, n);
 }
 
-#ifdef INLINE_COPY_FROM_USER
+#ifndef CONFIG_ARCH_WANTS_NOINLINE_COPY_USER
 __rust_helper
 unsigned long rust_helper__copy_from_user(void *to, const void __user *from, unsigned long n)
 {
-- 
2.49.0



From xen-devel-bounces@lists.xenproject.org Mon Apr 27 17:18:09 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 27 Apr 2026 17:18:09 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1295148.1571838 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wHPap-0008Fj-Iy; Mon, 27 Apr 2026 17:17:59 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1295148.1571838; Mon, 27 Apr 2026 17:17: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 1wHPap-0008Fb-Db; Mon, 27 Apr 2026 17:17:59 +0000
Received: by outflank-mailman (input) for mailman id 1295148;
 Mon, 27 Apr 2026 17:17:57 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <chleroy@kernel.org>) id 1wHPan-0008E3-U1
 for xen-devel@lists.xenproject.org; Mon, 27 Apr 2026 17:17:57 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wHPan-00DDcu-Al
 for xen-devel@lists.xenproject.org; Mon, 27 Apr 2026 19:17:57 +0200
Received: from [10.42.69.2] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <chleroy@kernel.org>)
 id 69ef9a40-bab6-0a2a0a5309dd-0a2a4502df54-14
 for <xen-devel@lists.xenproject.org>; Mon, 27 Apr 2026 19:17:57 +0200
Received: from [172.105.4.254] (helo=tor.source.kernel.org)
 by tlsNG-720697.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.1)
 (envelope-from <chleroy@kernel.org>)
 id 69ef9a44-af86-0a2a45020019-ac6904fe96d8-3
 for <xen-devel@lists.xenproject.org>; Mon, 27 Apr 2026 19:17:57 +0200
Received: from smtp.kernel.org (transwarp.subspace.kernel.org [100.75.92.58])
 by tor.source.kernel.org (Postfix) with ESMTP id D6C426024D;
 Mon, 27 Apr 2026 17:17:55 +0000 (UTC)
Received: by smtp.kernel.org (Postfix) with ESMTPSA id 5B91DC2BCB9;
 Mon, 27 Apr 2026 17:17: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=k20201202 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/simple; d=kernel.org;
	s=k20201202; t=1777310275;
	bh=W5kkD2qOaf9p6y+JEmiY6YQ2keZoelr0Bif5djAA9uo=;
	h=From:To:Cc:Subject:Date:In-Reply-To:References:From;
	b=dWIdgH61f3FZjJK5/4M8qA2Z3PdTv2PxzuZWcauBhk9DdVxbBkauIdrH8T66hguCp
	 RKByLYUodinjcBlbYhttuH2LGK1CACi5Chox46drqrLCValqYMs6iS6hvWfa8xjP86
	 SRX8mzMn7HjzzZ5PMWVnIWvrJFLR/iyEIDn4Oi2BFSrDeboqSnIrX7WfhL6Ub+tY2g
	 I0hH+wNzy6c//f0TkDzcuax+fX8WXY8rTh4FJ51XM25PFd/tzjClOdpIOdXk4NjGqA
	 oBIlgUIOAdKFgg5RvdKRR4Lqk1Q+lbng1I1sXXDqtORIX/zFE6g7Yv8vrz97KbzGDV
	 XrdmpG3tF9W3Q==
From: "Christophe Leroy (CS GROUP)" <chleroy@kernel.org>
To: Yury Norov <ynorov@nvidia.com>,
	Andrew Morton <akpm@linux-foundation.org>,
	Linus Torvalds <torvalds@linux-foundation.org>,
	David Laight <david.laight.linux@gmail.com>,
	Thomas Gleixner <tglx@linutronix.de>
Cc: "Christophe Leroy (CS GROUP)" <chleroy@kernel.org>,
	linux-alpha@vger.kernel.org,
	linux-kernel@vger.kernel.org,
	linux-snps-arc@lists.infradead.org,
	linux-arm-kernel@lists.infradead.org,
	linux-mips@vger.kernel.org,
	linuxppc-dev@lists.ozlabs.org,
	kvm@vger.kernel.org,
	linux-riscv@lists.infradead.org,
	linux-s390@vger.kernel.org,
	sparclinux@vger.kernel.org,
	linux-um@lists.infradead.org,
	dmaengine@vger.kernel.org,
	linux-efi@vger.kernel.org,
	linux-fsi@lists.ozlabs.org,
	amd-gfx@lists.freedesktop.org,
	dri-devel@lists.freedesktop.org,
	intel-gfx@lists.freedesktop.org,
	linux-wpan@vger.kernel.org,
	netdev@vger.kernel.org,
	linux-wireless@vger.kernel.org,
	linux-spi@vger.kernel.org,
	linux-media@vger.kernel.org,
	linux-staging@lists.linux.dev,
	linux-serial@vger.kernel.org,
	linux-usb@vger.kernel.org,
	xen-devel@lists.xenproject.org,
	linux-fsdevel@vger.kernel.org,
	ocfs2-devel@lists.linux.dev,
	bpf@vger.kernel.org,
	kasan-dev@googlegroups.com,
	linux-mm@kvack.org,
	linux-x25@vger.kernel.org,
	rust-for-linux@vger.kernel.org,
	linux-sound@vger.kernel.org,
	sound-open-firmware@alsa-project.org,
	linux-csky@vger.kernel.org,
	linux-hexagon@vger.kernel.org,
	loongarch@lists.linux.dev,
	linux-m68k@lists.linux-m68k.org,
	linux-openrisc@vger.kernel.org,
	linux-parisc@vger.kernel.org,
	linux-sh@vger.kernel.org,
	linux-arch@vger.kernel.org
Subject: [RFC PATCH v1 3/9] x86/umip: Be stricter in fixup_umip_exception()
Date: Mon, 27 Apr 2026 19:13:44 +0200
Message-ID: <9e8e43d4f81d8f8b6f68311f1c6f859d718d36e4.1777306795.git.chleroy@kernel.org>
X-Mailer: git-send-email 2.49.0
In-Reply-To: <cover.1777306795.git.chleroy@kernel.org>
References: <cover.1777306795.git.chleroy@kernel.org>
MIME-Version: 1.0
X-Developer-Signature: v=1; a=openpgp-sha256; l=1000; i=chleroy@kernel.org; h=from:subject:message-id; bh=W5kkD2qOaf9p6y+JEmiY6YQ2keZoelr0Bif5djAA9uo=; b=owGbwMvMwCV2d0KB2p7V54MZT6slMWS+nxnda1Jdur5TX+RgO1P4hHufdruHR358Lz3BYPORx G8pRRuZOkpZGMS4GGTFFFmO/+feNaPrS2r+1F36MHNYmUCGMHBxCsBE9kkxMjTtX+zW2RH44ELN UZ/TjtH3Kj+Uzdh01e2y7qEZTgrchx8y/E9kjcpJ3dj/tNZwXUT0XHGmyS9k3dX75mj427u7JaY VMwMA
X-Developer-Key: i=chleroy@kernel.org; a=openpgp; fpr=10FFE6F8B390DE17ACC2632368A92FEB01B8DD78
Content-Transfer-Encoding: 8bit
X-purgate-ID: tlsNG-720697/1777310277-896CC161-549AF82A/0/0
X-purgate-type: clean
X-purgate-size: 1002

fixup_umip_exception() calls copy_to_user() and checks whether
the returned value is strictly positive.

A subsequent patch will change the return of copy_to_user() to
return -EFAULT in case of error.

Change the test to checking that the result is not 0.

At the time being copy_to_user() return an unsigned value so
'strictly positive' is the same as 'not 0'.

Signed-off-by: Christophe Leroy (CS GROUP) <chleroy@kernel.org>
---
 arch/x86/kernel/umip.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/arch/x86/kernel/umip.c b/arch/x86/kernel/umip.c
index 3ce99cbcf187..dfff28ea1dea 100644
--- a/arch/x86/kernel/umip.c
+++ b/arch/x86/kernel/umip.c
@@ -409,7 +409,7 @@ bool fixup_umip_exception(struct pt_regs *regs)
 			return false;
 
 		nr_copied = copy_to_user(uaddr, dummy_data, dummy_data_size);
-		if (nr_copied  > 0) {
+		if (nr_copied) {
 			/*
 			 * If copy fails, send a signal and tell caller that
 			 * fault was fixed up.
-- 
2.49.0



From xen-devel-bounces@lists.xenproject.org Mon Apr 27 17:18:32 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 27 Apr 2026 17:18:32 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1295154.1571845 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wHPbB-0000Tl-Nv; Mon, 27 Apr 2026 17:18:21 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1295154.1571845; Mon, 27 Apr 2026 17: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 1wHPbB-0000Te-LA; Mon, 27 Apr 2026 17:18:21 +0000
Received: by outflank-mailman (input) for mailman id 1295154;
 Mon, 27 Apr 2026 17:18:20 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <chleroy@kernel.org>) id 1wHPbA-0000QZ-7S
 for xen-devel@lists.xenproject.org; Mon, 27 Apr 2026 17:18:20 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wHPb8-00Dj0u-2c
 for xen-devel@lists.xenproject.org; Mon, 27 Apr 2026 19:18:19 +0200
Received: from [10.42.69.9] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <chleroy@kernel.org>)
 id 69ef9a53-e002-0a2a0a5209dd-0a2a45099bd4-10
 for <xen-devel@lists.xenproject.org>; Mon, 27 Apr 2026 19:18:19 +0200
Received: from [172.234.252.31] (helo=sea.source.kernel.org)
 by tlsNG-bad1c0.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.1)
 (envelope-from <chleroy@kernel.org>)
 id 69ef9a59-2497-0a2a45090019-aceafc1fe118-3
 for <xen-devel@lists.xenproject.org>; Mon, 27 Apr 2026 19:18:19 +0200
Received: from smtp.kernel.org (transwarp.subspace.kernel.org [100.75.92.58])
 by sea.source.kernel.org (Postfix) with ESMTP id 8B93C440C2;
 Mon, 27 Apr 2026 17:18:17 +0000 (UTC)
Received: by smtp.kernel.org (Postfix) with ESMTPSA id 08C06C2BCF4;
 Mon, 27 Apr 2026 17:17:56 +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=k20201202 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/simple; d=kernel.org;
	s=k20201202; t=1777310297;
	bh=G/2eQ9TI5TAejE5IgsfdvVcfACCawPpecEdM1VXM32k=;
	h=From:To:Cc:Subject:Date:In-Reply-To:References:From;
	b=JDwlcHynPBKJgZEQOCWtilxNz5OJTbEC9ImCjJuQT3RnOoZjD4+90hMORF2q1smV0
	 ZZwStmTz2ZWfCFTglmd/E7DTmKQiqUkyq6DoW4QkOcmP8LtfpYhN9V4ZMaLV1xjKUX
	 qf/gxqJdT3gAPMXuYRhHcRDH0KM3YGUgvPXpdKncm5DePPHjb0VOG6buq4s8MreRM+
	 EZo8pRxSQAzQ5kujjD1AkNCv3dgeUm7ZrfC1oOr8cnbPHFYMiYdejiO8B5iigWhrca
	 1OgKQbcauQ7QAB8qeF6Zf8CM71cpuIXWBUm7GSS+m87r+rFbtJTWOdD0Mn8qIs0Vfn
	 3JDYXNLvVgu3g==
From: "Christophe Leroy (CS GROUP)" <chleroy@kernel.org>
To: Yury Norov <ynorov@nvidia.com>,
	Andrew Morton <akpm@linux-foundation.org>,
	Linus Torvalds <torvalds@linux-foundation.org>,
	David Laight <david.laight.linux@gmail.com>,
	Thomas Gleixner <tglx@linutronix.de>
Cc: "Christophe Leroy (CS GROUP)" <chleroy@kernel.org>,
	linux-alpha@vger.kernel.org,
	linux-kernel@vger.kernel.org,
	linux-snps-arc@lists.infradead.org,
	linux-arm-kernel@lists.infradead.org,
	linux-mips@vger.kernel.org,
	linuxppc-dev@lists.ozlabs.org,
	kvm@vger.kernel.org,
	linux-riscv@lists.infradead.org,
	linux-s390@vger.kernel.org,
	sparclinux@vger.kernel.org,
	linux-um@lists.infradead.org,
	dmaengine@vger.kernel.org,
	linux-efi@vger.kernel.org,
	linux-fsi@lists.ozlabs.org,
	amd-gfx@lists.freedesktop.org,
	dri-devel@lists.freedesktop.org,
	intel-gfx@lists.freedesktop.org,
	linux-wpan@vger.kernel.org,
	netdev@vger.kernel.org,
	linux-wireless@vger.kernel.org,
	linux-spi@vger.kernel.org,
	linux-media@vger.kernel.org,
	linux-staging@lists.linux.dev,
	linux-serial@vger.kernel.org,
	linux-usb@vger.kernel.org,
	xen-devel@lists.xenproject.org,
	linux-fsdevel@vger.kernel.org,
	ocfs2-devel@lists.linux.dev,
	bpf@vger.kernel.org,
	kasan-dev@googlegroups.com,
	linux-mm@kvack.org,
	linux-x25@vger.kernel.org,
	rust-for-linux@vger.kernel.org,
	linux-sound@vger.kernel.org,
	sound-open-firmware@alsa-project.org,
	linux-csky@vger.kernel.org,
	linux-hexagon@vger.kernel.org,
	loongarch@lists.linux.dev,
	linux-m68k@lists.linux-m68k.org,
	linux-openrisc@vger.kernel.org,
	linux-parisc@vger.kernel.org,
	linux-sh@vger.kernel.org,
	linux-arch@vger.kernel.org
Subject: [RFC PATCH v1 4/9] uaccess: Introduce copy_{to/from}_user_partial()
Date: Mon, 27 Apr 2026 19:13:45 +0200
Message-ID: <c73b90236f2810edd47c84edd2a8d8e8e0c816da.1777306795.git.chleroy@kernel.org>
X-Mailer: git-send-email 2.49.0
In-Reply-To: <cover.1777306795.git.chleroy@kernel.org>
References: <cover.1777306795.git.chleroy@kernel.org>
MIME-Version: 1.0
X-Developer-Signature: v=1; a=openpgp-sha256; l=1585; i=chleroy@kernel.org; h=from:subject:message-id; bh=G/2eQ9TI5TAejE5IgsfdvVcfACCawPpecEdM1VXM32k=; b=owGbwMvMwCV2d0KB2p7V54MZT6slMWS+nxmjMKmwhcOl/KmCyQK3t3e2vTXauaOc++38fue5J 1/fnLd3d0cpC4MYF4OsmCLL8f/cu2Z0fUnNn7pLH2YOKxPIEAYuTgGYyD5HRoZnIqUtqi/uzJzx /elrrqTduXsuSM05kFXcMu1CQyFnzPFOhv/RJewtZeu89EsObX+ieXizf2Xo8RNCJwMOumbxCC5 Mr+EBAA==
X-Developer-Key: i=chleroy@kernel.org; a=openpgp; fpr=10FFE6F8B390DE17ACC2632368A92FEB01B8DD78
Content-Transfer-Encoding: 8bit
X-purgate-ID: tlsNG-bad1c0/1777310299-490B3A53-41D4CE8E/0/0
X-purgate-type: clean
X-purgate-size: 1587

Today there are approximately 3000 calls for copy_to_user() and
3000 calls to copy_from_user().

The majority of callers of copy_{to/from}_user() don't care about the
return value, they only check whether it is 0 or not, and when it is
not 0 they handle it as a -EACCES.

In order to allow better optimisation of copy_{to/from}_user() when
the size of the copy is known at build time, create new fonctions
named copy_{to/from}_user_partial() to be used by the few callers
that are interested in partial copies and need to now how many
bytes remain at the end of the copy.

For the time being it is just the same as copy_{to/from}_user().

Signed-off-by: Christophe Leroy (CS GROUP) <chleroy@kernel.org>
---
 include/linux/uaccess.h | 4 ++++
 1 file changed, 4 insertions(+)

diff --git a/include/linux/uaccess.h b/include/linux/uaccess.h
index bd1201c81d94..2d37173782b3 100644
--- a/include/linux/uaccess.h
+++ b/include/linux/uaccess.h
@@ -221,6 +221,8 @@ copy_from_user(void *to, const void __user *from, unsigned long n)
 		return _inline_copy_from_user(to, from, n);
 }
 
+#define copy_from_user_partial copy_from_user
+
 static __always_inline unsigned long __must_check
 copy_to_user(void __user *to, const void *from, unsigned long n)
 {
@@ -233,6 +235,8 @@ copy_to_user(void __user *to, const void *from, unsigned long n)
 		return _inline_copy_to_user(to, from, n);
 }
 
+#define copy_to_user_partial copy_to_user
+
 #ifndef copy_mc_to_kernel
 /*
  * Without arch opt-in this generic copy_mc_to_kernel() will not handle
-- 
2.49.0



From xen-devel-bounces@lists.xenproject.org Mon Apr 27 17:18:47 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 27 Apr 2026 17:18:47 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1295161.1571856 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wHPbR-0000sh-5P; Mon, 27 Apr 2026 17:18:37 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1295161.1571856; Mon, 27 Apr 2026 17: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 1wHPbR-0000sa-1P; Mon, 27 Apr 2026 17:18:37 +0000
Received: by outflank-mailman (input) for mailman id 1295161;
 Mon, 27 Apr 2026 17:18:35 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <chleroy@kernel.org>) id 1wHPbP-0000ri-H9
 for xen-devel@lists.xenproject.org; Mon, 27 Apr 2026 17:18:35 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wHPbO-00GS0l-U0
 for xen-devel@lists.xenproject.org; Mon, 27 Apr 2026 19:18:34 +0200
Received: from [10.42.69.7] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <chleroy@kernel.org>)
 id 69ef9a56-5cb7-0a2a0a5109dd-0a2a4507dea6-34
 for <xen-devel@lists.xenproject.org>; Mon, 27 Apr 2026 19:18:34 +0200
Received: from [172.234.252.31] (helo=sea.source.kernel.org)
 by tlsNG-ef75cf.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.1)
 (envelope-from <chleroy@kernel.org>)
 id 69ef9a69-229c-0a2a45070019-aceafc1fbfe4-3
 for <xen-devel@lists.xenproject.org>; Mon, 27 Apr 2026 19:18:34 +0200
Received: from smtp.kernel.org (transwarp.subspace.kernel.org [100.75.92.58])
 by sea.source.kernel.org (Postfix) with ESMTP id CA32543766;
 Mon, 27 Apr 2026 17:18:32 +0000 (UTC)
Received: by smtp.kernel.org (Postfix) with ESMTPSA id 31802C2BCF4;
 Mon, 27 Apr 2026 17:18: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=k20201202 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/simple; d=kernel.org;
	s=k20201202; t=1777310312;
	bh=ykb2AFsFlD4OWf31v2pDwxXHhaD6RIAaFdGo66PLJJQ=;
	h=From:To:Cc:Subject:Date:In-Reply-To:References:From;
	b=VVYqWJ9y3YbZh7SD1t9FZfVCwwasAh9H5TbUiJGW0WBLo8QeGfk22g4AfRfUPPWqU
	 Aoc8LlWA/aSMgy9dc9PmA3AGYLZUU5W7rwnOfj07vTIJFBwTSF9yiiM4DvkX1/MBQu
	 db67uJWBEaWIGjEVq27JeF6TjgL+v+lGhLnh5fqlRmMpg7nUlTADncH5wD5lENeOzx
	 AnSeuD99A4n/GOBDGHS6YE5DsSz3FUwz6A+06zvkQMMGJou23G/4wgzSuudbgGF0+O
	 Dmr1a73NapDMfoHC1BZSTwINTaDSDCQgyzzeSi4wB6M2kWQzSVBg/2nN/ihP2WWDMt
	 aSuTg8ZLqpxJg==
From: "Christophe Leroy (CS GROUP)" <chleroy@kernel.org>
To: Yury Norov <ynorov@nvidia.com>,
	Andrew Morton <akpm@linux-foundation.org>,
	Linus Torvalds <torvalds@linux-foundation.org>,
	David Laight <david.laight.linux@gmail.com>,
	Thomas Gleixner <tglx@linutronix.de>
Cc: "Christophe Leroy (CS GROUP)" <chleroy@kernel.org>,
	linux-alpha@vger.kernel.org,
	linux-kernel@vger.kernel.org,
	linux-snps-arc@lists.infradead.org,
	linux-arm-kernel@lists.infradead.org,
	linux-mips@vger.kernel.org,
	linuxppc-dev@lists.ozlabs.org,
	kvm@vger.kernel.org,
	linux-riscv@lists.infradead.org,
	linux-s390@vger.kernel.org,
	sparclinux@vger.kernel.org,
	linux-um@lists.infradead.org,
	dmaengine@vger.kernel.org,
	linux-efi@vger.kernel.org,
	linux-fsi@lists.ozlabs.org,
	amd-gfx@lists.freedesktop.org,
	dri-devel@lists.freedesktop.org,
	intel-gfx@lists.freedesktop.org,
	linux-wpan@vger.kernel.org,
	netdev@vger.kernel.org,
	linux-wireless@vger.kernel.org,
	linux-spi@vger.kernel.org,
	linux-media@vger.kernel.org,
	linux-staging@lists.linux.dev,
	linux-serial@vger.kernel.org,
	linux-usb@vger.kernel.org,
	xen-devel@lists.xenproject.org,
	linux-fsdevel@vger.kernel.org,
	ocfs2-devel@lists.linux.dev,
	bpf@vger.kernel.org,
	kasan-dev@googlegroups.com,
	linux-mm@kvack.org,
	linux-x25@vger.kernel.org,
	rust-for-linux@vger.kernel.org,
	linux-sound@vger.kernel.org,
	sound-open-firmware@alsa-project.org,
	linux-csky@vger.kernel.org,
	linux-hexagon@vger.kernel.org,
	loongarch@lists.linux.dev,
	linux-m68k@lists.linux-m68k.org,
	linux-openrisc@vger.kernel.org,
	linux-parisc@vger.kernel.org,
	linux-sh@vger.kernel.org,
	linux-arch@vger.kernel.org
Subject: [RFC PATCH v1 5/9] uaccess: Switch to copy_{to/from}_user_partial() when relevant
Date: Mon, 27 Apr 2026 19:13:46 +0200
Message-ID: <289b424e243ba2c4139ea04009cf8b9c448a87ff.1777306795.git.chleroy@kernel.org>
X-Mailer: git-send-email 2.49.0
In-Reply-To: <cover.1777306795.git.chleroy@kernel.org>
References: <cover.1777306795.git.chleroy@kernel.org>
MIME-Version: 1.0
X-Developer-Signature: v=1; a=openpgp-sha256; l=54038; i=chleroy@kernel.org; h=from:subject:message-id; bh=ykb2AFsFlD4OWf31v2pDwxXHhaD6RIAaFdGo66PLJJQ=; b=owGbwMvMwCV2d0KB2p7V54MZT6slMWS+nxnT8I410Uhy0qp/RVcua12akXn97Jr7B907GK1ex fMIJG+93FHKwiDGxSArpshy/D/3rhldX1Lzp+7Sh5nDygQyhIGLUwAmYtrO8D+j/Q7HhgvHVxxp 95Tc/nBGsdAKdauVyxVmaezQe2149M4LRoa79udnSurd+iisF/Rta6/v3KKjtnV8bRpT1XZWfDZ UYGEHAA==
X-Developer-Key: i=chleroy@kernel.org; a=openpgp; fpr=10FFE6F8B390DE17ACC2632368A92FEB01B8DD78
Content-Transfer-Encoding: 8bit
X-purgate-ID: tlsNG-ef75cf/1777310314-14450C48-12FBA062/0/0
X-purgate-type: clean
X-purgate-size: 54040

In a subsequent patch, copy_{to/from}_user() will be modified to
return -EFAULT when copy fails.

Among the 6000 calls to copy_{to/from}_user(), around 2% rely on
copy_{to/from}_user() doing partial copies and returning amount of not
copied bytes. Change those users to copy_{to/from}_user_partial().

This change was done based on whether callers assign the returned value
to a variable or just check whether the return value is 0 or not.

Several of them only use it for debug to print the amount of bytes not
copied. Those could maybe be changed to stop reporting that amount and
not be converted to partial copy.

Some not trivial handling might have been unecessarily converted. This
is not a problem and they can be converted back later for better
performance.

The callers where located with following commands then reviewed one by
one:

	sed -i s/"return copy_to_user("/"return copy_to_user_partial("/g `git grep -l "return copy_to_user("`
	sed -i s/" = copy_to_user("/" = copy_to_user_partial("/g `git grep -l " = copy_to_user("`
	sed -i s/" += copy_to_user("/" += copy_to_user_partial("/g `git grep -l " += copy_to_user("`
	sed -i s/" -= copy_to_user("/" -= copy_to_user_partial("/g `git grep -l " -= copy_to_user("`

Then the same was done with copy_from_user().

During the review, patterns like the following were rejected and kept
as is:

-	return copy_to_user(osf_stat, &tmp, sizeof(tmp)) ? -EFAULT : 0;
+	return copy_to_user_partial(osf_stat, &tmp, sizeof(tmp)) ? -EFAULT : 0;

Signed-off-by: Christophe Leroy (CS GROUP) <chleroy@kernel.org>
---
 arch/alpha/kernel/osf_sys.c                    |  4 ++--
 arch/alpha/kernel/termios.c                    |  2 +-
 arch/arc/kernel/disasm.c                       |  2 +-
 arch/arm64/include/asm/gcs.h                   |  2 +-
 arch/arm64/kernel/signal32.c                   |  2 +-
 arch/mips/kernel/rtlx.c                        |  8 ++++----
 arch/mips/kernel/vpe.c                         |  2 +-
 arch/powerpc/kvm/book3s_64_mmu_hv.c            |  4 ++--
 arch/powerpc/kvm/book3s_64_mmu_radix.c         |  4 ++--
 arch/powerpc/kvm/book3s_hv.c                   |  2 +-
 arch/riscv/kernel/signal.c                     |  2 +-
 arch/s390/include/asm/idals.h                  |  8 ++++----
 arch/sparc/kernel/termios.c                    |  2 +-
 arch/um/kernel/process.c                       |  2 +-
 arch/x86/lib/insn-eval.c                       |  2 +-
 arch/x86/um/signal.c                           |  2 +-
 drivers/android/binder_alloc.c                 |  2 +-
 drivers/comedi/comedi_fops.c                   |  4 ++--
 drivers/dma/idxd/cdev.c                        |  2 +-
 drivers/firmware/efi/test/efi_test.c           |  2 +-
 drivers/fsi/fsi-scom.c                         |  2 +-
 .../amd/display/amdgpu_dm/amdgpu_dm_debugfs.c  |  2 +-
 drivers/gpu/drm/i915/gt/intel_sseu.c           |  4 ++--
 drivers/gpu/drm/i915/i915_gem.c                |  4 ++--
 drivers/hwtracing/intel_th/msu.c               |  2 +-
 drivers/misc/ibmvmc.c                          |  2 +-
 drivers/misc/vmw_vmci/vmci_host.c              |  2 +-
 drivers/most/most_cdev.c                       |  2 +-
 drivers/net/ieee802154/ca8210.c                |  4 ++--
 drivers/net/wireless/ath/wil6210/debugfs.c     |  2 +-
 .../wireless/intel/iwlwifi/pcie/gen1_2/trans.c |  2 +-
 drivers/net/wireless/ti/wlcore/debugfs.c       |  2 +-
 drivers/ps3/ps3-lpm.c                          |  2 +-
 drivers/s390/crypto/zcrypt_api.h               |  4 ++--
 drivers/spi/spidev.c                           |  2 +-
 .../staging/media/atomisp/pci/atomisp_cmd.c    |  8 ++++----
 drivers/tty/tty_ioctl.c                        | 14 +++++++-------
 drivers/tty/vt/vc_screen.c                     |  4 ++--
 drivers/usb/gadget/function/f_hid.c            |  4 ++--
 drivers/usb/gadget/function/f_printer.c        |  2 +-
 drivers/vfio/vfio_iommu_type1.c                |  4 ++--
 drivers/xen/xenbus/xenbus_dev_frontend.c       |  2 +-
 fs/namespace.c                                 |  2 +-
 fs/ocfs2/dlmfs/dlmfs.c                         |  2 +-
 fs/proc/base.c                                 |  4 ++--
 include/linux/bpfptr.h                         |  2 +-
 include/linux/sockptr.h                        |  4 ++--
 ipc/msg.c                                      |  8 ++++----
 ipc/sem.c                                      |  8 ++++----
 ipc/shm.c                                      | 18 +++++++++---------
 kernel/regset.c                                |  2 +-
 kernel/sys.c                                   |  4 ++--
 lib/kfifo.c                                    |  8 ++++----
 mm/kasan/kasan_test_c.c                        |  4 ++--
 mm/memory.c                                    |  2 +-
 net/x25/af_x25.c                               |  2 +-
 rust/helpers/uaccess.c                         |  4 ++--
 sound/pci/emu10k1/emufx.c                      |  4 ++--
 sound/pci/rme9652/hdsp.c                       |  6 +++---
 sound/soc/intel/avs/probes.c                   |  6 +++---
 sound/soc/sof/compress.c                       | 12 ++++++------
 sound/soc/sof/sof-client-probes.c              |  6 +++---
 62 files changed, 122 insertions(+), 122 deletions(-)

diff --git a/arch/alpha/kernel/osf_sys.c b/arch/alpha/kernel/osf_sys.c
index 7b6543d2cca3..c8ea39fdbb9f 100644
--- a/arch/alpha/kernel/osf_sys.c
+++ b/arch/alpha/kernel/osf_sys.c
@@ -944,7 +944,7 @@ get_tv32(struct timespec64 *o, struct timeval32 __user *i)
 static inline long
 put_tv32(struct timeval32 __user *o, struct timespec64 *i)
 {
-	return copy_to_user(o, &(struct timeval32){
+	return copy_to_user_partial(o, &(struct timeval32){
 				.tv_sec = i->tv_sec,
 				.tv_usec = i->tv_nsec / NSEC_PER_USEC},
 			    sizeof(struct timeval32));
@@ -953,7 +953,7 @@ put_tv32(struct timeval32 __user *o, struct timespec64 *i)
 static inline long
 put_tv_to_tv32(struct timeval32 __user *o, struct __kernel_old_timeval *i)
 {
-	return copy_to_user(o, &(struct timeval32){
+	return copy_to_user_partial(o, &(struct timeval32){
 				.tv_sec = i->tv_sec,
 				.tv_usec = i->tv_usec},
 			    sizeof(struct timeval32));
diff --git a/arch/alpha/kernel/termios.c b/arch/alpha/kernel/termios.c
index a4c29a22edf7..a3693c29a0fd 100644
--- a/arch/alpha/kernel/termios.c
+++ b/arch/alpha/kernel/termios.c
@@ -52,5 +52,5 @@ int kernel_termios_to_user_termio(struct termio __user *termio,
 	v.c_cc[_VEOL2]  = termios->c_cc[VEOL2];
 	v.c_cc[_VSWTC]  = termios->c_cc[VSWTC];
 
-	return copy_to_user(termio, &v, sizeof(struct termio));
+	return copy_to_user_partial(termio, &v, sizeof(struct termio));
 }
diff --git a/arch/arc/kernel/disasm.c b/arch/arc/kernel/disasm.c
index ccc7e8c39eb3..a3ef9d079e7f 100644
--- a/arch/arc/kernel/disasm.c
+++ b/arch/arc/kernel/disasm.c
@@ -34,7 +34,7 @@ void __kprobes disasm_instr(unsigned long addr, struct disasm_state *state,
 	/* This fetches the upper part of the 32 bit instruction
 	 * in both the cases of Little Endian or Big Endian configurations. */
 	if (userspace) {
-		bytes_not_copied = copy_from_user(ins_buf,
+		bytes_not_copied = copy_from_user_partial(ins_buf,
 						(const void __user *) addr, 8);
 		if (bytes_not_copied > 6)
 			goto fault;
diff --git a/arch/arm64/include/asm/gcs.h b/arch/arm64/include/asm/gcs.h
index 8fa0707069e8..7ee23a8130b0 100644
--- a/arch/arm64/include/asm/gcs.h
+++ b/arch/arm64/include/asm/gcs.h
@@ -139,7 +139,7 @@ static inline u64 get_user_gcs(unsigned long __user *addr, int *err)
 
 	/* Ensure previous GCS operation are visible before we read the page */
 	gcsb_dsync();
-	ret = copy_from_user(&load, addr, sizeof(load));
+	ret = copy_from_user_partial(&load, addr, sizeof(load));
 	if (ret != 0)
 		*err = ret;
 	return load;
diff --git a/arch/arm64/kernel/signal32.c b/arch/arm64/kernel/signal32.c
index bb3b526ff43f..7016d2a3bb76 100644
--- a/arch/arm64/kernel/signal32.c
+++ b/arch/arm64/kernel/signal32.c
@@ -53,7 +53,7 @@ static inline int put_sigset_t(compat_sigset_t __user *uset, sigset_t *set)
 	cset.sig[0] = set->sig[0] & 0xffffffffull;
 	cset.sig[1] = set->sig[0] >> 32;
 
-	return copy_to_user(uset, &cset, sizeof(*uset));
+	return copy_to_user_partial(uset, &cset, sizeof(*uset));
 }
 
 static inline int get_sigset_t(sigset_t *set,
diff --git a/arch/mips/kernel/rtlx.c b/arch/mips/kernel/rtlx.c
index 18c509c59f33..bc468064194d 100644
--- a/arch/mips/kernel/rtlx.c
+++ b/arch/mips/kernel/rtlx.c
@@ -262,13 +262,13 @@ ssize_t rtlx_read(int index, void __user *buff, size_t count)
 	/* then how much from the read pointer onwards */
 	fl = min(count, (size_t)lx->buffer_size - lx->lx_read);
 
-	failed = copy_to_user(buff, lx->lx_buffer + lx->lx_read, fl);
+	failed = copy_to_user_partial(buff, lx->lx_buffer + lx->lx_read, fl);
 	if (failed)
 		goto out;
 
 	/* and if there is anything left at the beginning of the buffer */
 	if (count - fl)
-		failed = copy_to_user(buff + fl, lx->lx_buffer, count - fl);
+		failed = copy_to_user_partial(buff + fl, lx->lx_buffer, count - fl);
 
 out:
 	count -= failed;
@@ -304,13 +304,13 @@ ssize_t rtlx_write(int index, const void __user *buffer, size_t count)
 	/* first bit from write pointer to the end of the buffer, or count */
 	fl = min(count, (size_t) rt->buffer_size - rt->rt_write);
 
-	failed = copy_from_user(rt->rt_buffer + rt->rt_write, buffer, fl);
+	failed = copy_from_user_partial(rt->rt_buffer + rt->rt_write, buffer, fl);
 	if (failed)
 		goto out;
 
 	/* if there's any left copy to the beginning of the buffer */
 	if (count - fl)
-		failed = copy_from_user(rt->rt_buffer, buffer + fl, count - fl);
+		failed = copy_from_user_partial(rt->rt_buffer, buffer + fl, count - fl);
 
 out:
 	count -= failed;
diff --git a/arch/mips/kernel/vpe.c b/arch/mips/kernel/vpe.c
index b05ee21a1d67..5a8d72d6c80c 100644
--- a/arch/mips/kernel/vpe.c
+++ b/arch/mips/kernel/vpe.c
@@ -854,7 +854,7 @@ static ssize_t vpe_write(struct file *file, const char __user *buffer,
 		return -ENOMEM;
 	}
 
-	count -= copy_from_user(v->pbuffer + v->len, buffer, count);
+	count -= copy_from_user_partial(v->pbuffer + v->len, buffer, count);
 	if (!count)
 		return -EFAULT;
 
diff --git a/arch/powerpc/kvm/book3s_64_mmu_hv.c b/arch/powerpc/kvm/book3s_64_mmu_hv.c
index 2ccb3d138f46..1c43c7b8e801 100644
--- a/arch/powerpc/kvm/book3s_64_mmu_hv.c
+++ b/arch/powerpc/kvm/book3s_64_mmu_hv.c
@@ -2028,7 +2028,7 @@ static ssize_t debugfs_htab_read(struct file *file, char __user *buf,
 		n = p->chars_left;
 		if (n > len)
 			n = len;
-		r = copy_to_user(buf, p->buf + p->buf_index, n);
+		r = copy_to_user_partial(buf, p->buf + p->buf_index, n);
 		n -= r;
 		p->chars_left -= n;
 		p->buf_index += n;
@@ -2068,7 +2068,7 @@ static ssize_t debugfs_htab_read(struct file *file, char __user *buf,
 		p->chars_left = n;
 		if (n > len)
 			n = len;
-		r = copy_to_user(buf, p->buf, n);
+		r = copy_to_user_partial(buf, p->buf, n);
 		n -= r;
 		p->chars_left -= n;
 		p->buf_index = n;
diff --git a/arch/powerpc/kvm/book3s_64_mmu_radix.c b/arch/powerpc/kvm/book3s_64_mmu_radix.c
index 933fc7cb9afc..0a27e018d27b 100644
--- a/arch/powerpc/kvm/book3s_64_mmu_radix.c
+++ b/arch/powerpc/kvm/book3s_64_mmu_radix.c
@@ -1307,7 +1307,7 @@ static ssize_t debugfs_radix_read(struct file *file, char __user *buf,
 		n = p->chars_left;
 		if (n > len)
 			n = len;
-		r = copy_to_user(buf, p->buf + p->buf_index, n);
+		r = copy_to_user_partial(buf, p->buf + p->buf_index, n);
 		n -= r;
 		p->chars_left -= n;
 		p->buf_index += n;
@@ -1407,7 +1407,7 @@ static ssize_t debugfs_radix_read(struct file *file, char __user *buf,
 		p->chars_left = n;
 		if (n > len)
 			n = len;
-		r = copy_to_user(buf, p->buf, n);
+		r = copy_to_user_partial(buf, p->buf, n);
 		n -= r;
 		p->chars_left -= n;
 		p->buf_index = n;
diff --git a/arch/powerpc/kvm/book3s_hv.c b/arch/powerpc/kvm/book3s_hv.c
index 61dbeea317f3..4c7a8f687c99 100644
--- a/arch/powerpc/kvm/book3s_hv.c
+++ b/arch/powerpc/kvm/book3s_hv.c
@@ -2916,7 +2916,7 @@ static ssize_t debugfs_timings_read(struct file *file, char __user *buf,
 		return 0;
 	if (len > p->buflen - pos)
 		len = p->buflen - pos;
-	n = copy_to_user(buf, p->buf + pos, len);
+	n = copy_to_user_partial(buf, p->buf + pos, len);
 	if (n) {
 		if (n == len)
 			return -EFAULT;
diff --git a/arch/riscv/kernel/signal.c b/arch/riscv/kernel/signal.c
index 59784dc117e4..4630dbad7428 100644
--- a/arch/riscv/kernel/signal.c
+++ b/arch/riscv/kernel/signal.c
@@ -139,7 +139,7 @@ static long __restore_v_state(struct pt_regs *regs, void __user *sc_vec)
 	 * Copy the whole vector content from user space datap. Use
 	 * copy_from_user to prevent information leak.
 	 */
-	return copy_from_user(current->thread.vstate.datap, datap, riscv_v_vsize);
+	return copy_from_user_partial(current->thread.vstate.datap, datap, riscv_v_vsize);
 }
 
 static long save_cfiss_state(struct pt_regs *regs, void __user *sc_cfi)
diff --git a/arch/s390/include/asm/idals.h b/arch/s390/include/asm/idals.h
index 06e1ec2afd5a..d86f4eb1ce42 100644
--- a/arch/s390/include/asm/idals.h
+++ b/arch/s390/include/asm/idals.h
@@ -301,14 +301,14 @@ static inline size_t idal_buffer_to_user(struct idal_buffer *ib, void __user *to
 	BUG_ON(count > ib->size);
 	for (i = 0; count > IDA_BLOCK_SIZE; i++) {
 		vaddr = dma64_to_virt(ib->data[i]);
-		left = copy_to_user(to, vaddr, IDA_BLOCK_SIZE);
+		left = copy_to_user_partial(to, vaddr, IDA_BLOCK_SIZE);
 		if (left)
 			return left + count - IDA_BLOCK_SIZE;
 		to = (void __user *)to + IDA_BLOCK_SIZE;
 		count -= IDA_BLOCK_SIZE;
 	}
 	vaddr = dma64_to_virt(ib->data[i]);
-	return copy_to_user(to, vaddr, count);
+	return copy_to_user_partial(to, vaddr, count);
 }
 
 /*
@@ -323,14 +323,14 @@ static inline size_t idal_buffer_from_user(struct idal_buffer *ib, const void __
 	BUG_ON(count > ib->size);
 	for (i = 0; count > IDA_BLOCK_SIZE; i++) {
 		vaddr = dma64_to_virt(ib->data[i]);
-		left = copy_from_user(vaddr, from, IDA_BLOCK_SIZE);
+		left = copy_from_user_partial(vaddr, from, IDA_BLOCK_SIZE);
 		if (left)
 			return left + count - IDA_BLOCK_SIZE;
 		from = (void __user *)from + IDA_BLOCK_SIZE;
 		count -= IDA_BLOCK_SIZE;
 	}
 	vaddr = dma64_to_virt(ib->data[i]);
-	return copy_from_user(vaddr, from, count);
+	return copy_from_user_partial(vaddr, from, count);
 }
 
 #endif
diff --git a/arch/sparc/kernel/termios.c b/arch/sparc/kernel/termios.c
index ee64965c27cd..db9c07b7d5ee 100644
--- a/arch/sparc/kernel/termios.c
+++ b/arch/sparc/kernel/termios.c
@@ -27,7 +27,7 @@ int kernel_termios_to_user_termio(struct termio __user *termio,
 		v.c_cc[_VMIN] = termios->c_cc[VMIN];
 		v.c_cc[_VTIME] = termios->c_cc[VTIME];
 	}
-	return copy_to_user(termio, &v, sizeof(struct termio));
+	return copy_to_user_partial(termio, &v, sizeof(struct termio));
 }
 
 int user_termios_to_kernel_termios(struct ktermios *k,
diff --git a/arch/um/kernel/process.c b/arch/um/kernel/process.c
index 63b38a3f73f7..d41625dfa00b 100644
--- a/arch/um/kernel/process.c
+++ b/arch/um/kernel/process.c
@@ -252,7 +252,7 @@ EXPORT_SYMBOL(uml_strdup);
 
 int copy_from_user_proc(void *to, void __user *from, int size)
 {
-	return copy_from_user(to, from, size);
+	return copy_from_user_partial(to, from, size);
 }
 
 int singlestepping(void)
diff --git a/arch/x86/lib/insn-eval.c b/arch/x86/lib/insn-eval.c
index e03eeec55cfe..e7cb03ab26f1 100644
--- a/arch/x86/lib/insn-eval.c
+++ b/arch/x86/lib/insn-eval.c
@@ -1512,7 +1512,7 @@ int insn_fetch_from_user(struct pt_regs *regs, unsigned char buf[MAX_INSN_SIZE])
 	if (insn_get_effective_ip(regs, &ip))
 		return -EINVAL;
 
-	not_copied = copy_from_user(buf, (void __user *)ip, MAX_INSN_SIZE);
+	not_copied = copy_from_user_partial(buf, (void __user *)ip, MAX_INSN_SIZE);
 
 	return MAX_INSN_SIZE - not_copied;
 }
diff --git a/arch/x86/um/signal.c b/arch/x86/um/signal.c
index 2934e170b0fe..e0fab7c1625b 100644
--- a/arch/x86/um/signal.c
+++ b/arch/x86/um/signal.c
@@ -40,7 +40,7 @@ static int copy_sc_from_user(struct pt_regs *regs,
 	/* Always make any pending restarted system calls return -EINTR */
 	current->restart_block.fn = do_no_restart_syscall;
 
-	err = copy_from_user(&sc, from, sizeof(sc));
+	err = copy_from_user_partial(&sc, from, sizeof(sc));
 	if (err)
 		return err;
 
diff --git a/drivers/android/binder_alloc.c b/drivers/android/binder_alloc.c
index e4488ad86a65..8ba9c57b489c 100644
--- a/drivers/android/binder_alloc.c
+++ b/drivers/android/binder_alloc.c
@@ -1346,7 +1346,7 @@ binder_alloc_copy_user_to_buffer(struct binder_alloc *alloc,
 					     buffer_offset, &pgoff);
 		size = min_t(size_t, bytes, PAGE_SIZE - pgoff);
 		kptr = kmap_local_page(page) + pgoff;
-		ret = copy_from_user(kptr, from, size);
+		ret = copy_from_user_partial(kptr, from, size);
 		kunmap_local(kptr);
 		if (ret)
 			return bytes - size + ret;
diff --git a/drivers/comedi/comedi_fops.c b/drivers/comedi/comedi_fops.c
index c09bbe04be6c..272fdc54fb81 100644
--- a/drivers/comedi/comedi_fops.c
+++ b/drivers/comedi/comedi_fops.c
@@ -2659,7 +2659,7 @@ static unsigned int comedi_buf_copy_to_user(struct comedi_subdevice *s,
 		unsigned int copy_amount = min(n, PAGE_SIZE - offset);
 		unsigned int uncopied;
 
-		uncopied = copy_to_user(dest, buf_page_list[page].virt_addr +
+		uncopied = copy_to_user_partial(dest, buf_page_list[page].virt_addr +
 					offset, copy_amount);
 		copy_amount -= uncopied;
 		n -= copy_amount;
@@ -2687,7 +2687,7 @@ static unsigned int comedi_buf_copy_from_user(struct comedi_subdevice *s,
 		unsigned int copy_amount = min(n, PAGE_SIZE - offset);
 		unsigned int uncopied;
 
-		uncopied = copy_from_user(buf_page_list[page].virt_addr +
+		uncopied = copy_from_user_partial(buf_page_list[page].virt_addr +
 					  offset, src, copy_amount);
 		copy_amount -= uncopied;
 		n -= copy_amount;
diff --git a/drivers/dma/idxd/cdev.c b/drivers/dma/idxd/cdev.c
index 0366c7cf3502..ac79bab6d6c3 100644
--- a/drivers/dma/idxd/cdev.c
+++ b/drivers/dma/idxd/cdev.c
@@ -751,7 +751,7 @@ int idxd_copy_cr(struct idxd_wq *wq, ioasid_t pasid, unsigned long addr,
 	 * to addr in the mm.
 	 */
 	kthread_use_mm(mm);
-	left = copy_to_user((void __user *)addr + status_size, cr + status_size,
+	left = copy_to_user_partial((void __user *)addr + status_size, cr + status_size,
 			    len - status_size);
 	/*
 	 * Copy status only after the rest of completion record is copied
diff --git a/drivers/firmware/efi/test/efi_test.c b/drivers/firmware/efi/test/efi_test.c
index d54d6a671326..43b280ceb955 100644
--- a/drivers/firmware/efi/test/efi_test.c
+++ b/drivers/firmware/efi/test/efi_test.c
@@ -133,7 +133,7 @@ copy_ucs2_to_user_len(efi_char16_t __user *dst, efi_char16_t *src, size_t len)
 	if (!src)
 		return 0;
 
-	return copy_to_user(dst, src, len);
+	return copy_to_user_partial(dst, src, len);
 }
 
 static long efi_runtime_get_variable(unsigned long arg)
diff --git a/drivers/fsi/fsi-scom.c b/drivers/fsi/fsi-scom.c
index bb4d3700c934..370ec75b20e6 100644
--- a/drivers/fsi/fsi-scom.c
+++ b/drivers/fsi/fsi-scom.c
@@ -332,7 +332,7 @@ static ssize_t scom_read(struct file *filep, char __user *buf, size_t len,
 		return rc;
 	}
 
-	rc = copy_to_user(buf, &val, len);
+	rc = copy_to_user_partial(buf, &val, len);
 	if (rc)
 		dev_dbg(dev, "copy to user failed:%d\n", rc);
 
diff --git a/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_debugfs.c b/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_debugfs.c
index 2409ac72b166..712605ec7ecc 100644
--- a/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_debugfs.c
+++ b/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_debugfs.c
@@ -1346,7 +1346,7 @@ static ssize_t dp_sdp_message_debugfs_write(struct file *f, const char __user *b
 
 	acrtc_state = to_dm_crtc_state(connector->base.state->crtc->state);
 
-	r = copy_from_user(data, buf, write_size);
+	r = copy_from_user_partial(data, buf, write_size);
 
 	write_size -= r;
 
diff --git a/drivers/gpu/drm/i915/gt/intel_sseu.c b/drivers/gpu/drm/i915/gt/intel_sseu.c
index 656a499b2706..3f5b450a914a 100644
--- a/drivers/gpu/drm/i915/gt/intel_sseu.c
+++ b/drivers/gpu/drm/i915/gt/intel_sseu.c
@@ -114,7 +114,7 @@ int intel_sseu_copy_eumask_to_user(void __user *to,
 		}
 	}
 
-	return copy_to_user(to, eu_mask, len);
+	return copy_to_user_partial(to, eu_mask, len);
 }
 
 /**
@@ -146,7 +146,7 @@ int intel_sseu_copy_ssmask_to_user(void __user *to,
 		}
 	}
 
-	return copy_to_user(to, ss_mask, len);
+	return copy_to_user_partial(to, ss_mask, len);
 }
 
 static void gen11_compute_sseu_info(struct sseu_dev_info *sseu,
diff --git a/drivers/gpu/drm/i915/i915_gem.c b/drivers/gpu/drm/i915/i915_gem.c
index a432daf8038a..c1c2e762498f 100644
--- a/drivers/gpu/drm/i915/i915_gem.c
+++ b/drivers/gpu/drm/i915/i915_gem.c
@@ -291,7 +291,7 @@ gtt_user_read(struct io_mapping *mapping,
 	io_mapping_unmap_atomic(vaddr);
 	if (unwritten) {
 		vaddr = io_mapping_map_wc(mapping, base, PAGE_SIZE);
-		unwritten = copy_to_user(user_data,
+		unwritten = copy_to_user_partial(user_data,
 					 (void __force *)vaddr + offset,
 					 length);
 		io_mapping_unmap(vaddr);
@@ -525,7 +525,7 @@ ggtt_write(struct io_mapping *mapping,
 	io_mapping_unmap_atomic(vaddr);
 	if (unwritten) {
 		vaddr = io_mapping_map_wc(mapping, base, PAGE_SIZE);
-		unwritten = copy_from_user((void __force *)vaddr + offset,
+		unwritten = copy_from_user_partial((void __force *)vaddr + offset,
 					   user_data, length);
 		io_mapping_unmap(vaddr);
 	}
diff --git a/drivers/hwtracing/intel_th/msu.c b/drivers/hwtracing/intel_th/msu.c
index a82cf74f39ad..9b97b71b44f1 100644
--- a/drivers/hwtracing/intel_th/msu.c
+++ b/drivers/hwtracing/intel_th/msu.c
@@ -1457,7 +1457,7 @@ static unsigned long msc_win_to_user(void *data, void *src, size_t len)
 	struct msc_win_to_user_struct *u = data;
 	unsigned long ret;
 
-	ret = copy_to_user(u->buf + u->offset, src, len);
+	ret = copy_to_user_partial(u->buf + u->offset, src, len);
 	u->offset += len - ret;
 
 	return ret;
diff --git a/drivers/misc/ibmvmc.c b/drivers/misc/ibmvmc.c
index beb18c34f20d..e1d99354dd29 100644
--- a/drivers/misc/ibmvmc.c
+++ b/drivers/misc/ibmvmc.c
@@ -1112,7 +1112,7 @@ static ssize_t ibmvmc_write(struct file *file, const char *buffer,
 	while (c > 0) {
 		bytes = min_t(size_t, c, vmc_buffer->size);
 
-		bytes -= copy_from_user(buf, p, bytes);
+		bytes -= copy_from_user_partial(buf, p, bytes);
 		if (!bytes) {
 			ret = -EFAULT;
 			goto out;
diff --git a/drivers/misc/vmw_vmci/vmci_host.c b/drivers/misc/vmw_vmci/vmci_host.c
index b71ca1bf0a20..bd502edbc173 100644
--- a/drivers/misc/vmw_vmci/vmci_host.c
+++ b/drivers/misc/vmw_vmci/vmci_host.c
@@ -213,7 +213,7 @@ static int drv_cp_harray_to_user(void __user *user_buf_uva,
 
 	*user_buf_size = array_size * sizeof(*handles);
 	if (*user_buf_size)
-		*retval = copy_to_user(user_buf_uva,
+		*retval = copy_to_user_partial(user_buf_uva,
 				       vmci_handle_arr_get_handles
 				       (handle_array), *user_buf_size);
 
diff --git a/drivers/most/most_cdev.c b/drivers/most/most_cdev.c
index 5df508d8d60a..969c865ccbef 100644
--- a/drivers/most/most_cdev.c
+++ b/drivers/most/most_cdev.c
@@ -265,7 +265,7 @@ comp_read(struct file *filp, char __user *buf, size_t count, loff_t *offset)
 			count,
 			mbo->processed_length - c->mbo_offs);
 
-	not_copied = copy_to_user(buf,
+	not_copied = copy_to_user_partial(buf,
 				  mbo->virt_address + c->mbo_offs,
 				  to_copy);
 
diff --git a/drivers/net/ieee802154/ca8210.c b/drivers/net/ieee802154/ca8210.c
index ed4178155a5d..d474a008c73e 100644
--- a/drivers/net/ieee802154/ca8210.c
+++ b/drivers/net/ieee802154/ca8210.c
@@ -2460,7 +2460,7 @@ static ssize_t ca8210_test_int_user_write(
 		return -EBADE;
 	}
 
-	ret = copy_from_user(command, in_buf, len);
+	ret = copy_from_user_partial(command, in_buf, len);
 	if (ret) {
 		dev_err(
 			&priv->spi->dev,
@@ -2548,7 +2548,7 @@ static ssize_t ca8210_test_int_user_read(
 	cmdlen = fifo_buffer[1];
 	bytes_not_copied = cmdlen + 2;
 
-	bytes_not_copied = copy_to_user(buf, fifo_buffer, bytes_not_copied);
+	bytes_not_copied = copy_to_user_partial(buf, fifo_buffer, bytes_not_copied);
 	if (bytes_not_copied > 0) {
 		dev_err(
 			&priv->spi->dev,
diff --git a/drivers/net/wireless/ath/wil6210/debugfs.c b/drivers/net/wireless/ath/wil6210/debugfs.c
index b8cb736a7185..f2130248fb7f 100644
--- a/drivers/net/wireless/ath/wil6210/debugfs.c
+++ b/drivers/net/wireless/ath/wil6210/debugfs.c
@@ -659,7 +659,7 @@ static ssize_t wil_read_file_ioblob(struct file *file, char __user *user_buf,
 	wil_memcpy_fromio_32(buf, (const void __iomem *)
 			     wil_blob->blob.data + aligned_pos, aligned_count);
 
-	ret = copy_to_user(user_buf, buf + unaligned_bytes, count);
+	ret = copy_to_user_partial(user_buf, buf + unaligned_bytes, count);
 
 	wil_mem_access_unlock(wil);
 	wil_pm_runtime_put(wil);
diff --git a/drivers/net/wireless/intel/iwlwifi/pcie/gen1_2/trans.c b/drivers/net/wireless/intel/iwlwifi/pcie/gen1_2/trans.c
index a05f60f9224b..66ddaa0d8e36 100644
--- a/drivers/net/wireless/intel/iwlwifi/pcie/gen1_2/trans.c
+++ b/drivers/net/wireless/intel/iwlwifi/pcie/gen1_2/trans.c
@@ -3060,7 +3060,7 @@ static bool iwl_write_to_user_buf(char __user *user_buf, ssize_t count,
 	if (*size > buf_size_left)
 		*size = buf_size_left;
 
-	*size -= copy_to_user(user_buf, buf, *size);
+	*size -= copy_to_user_partial(user_buf, buf, *size);
 	*bytes_copied += *size;
 
 	if (buf_size_left == *size)
diff --git a/drivers/net/wireless/ti/wlcore/debugfs.c b/drivers/net/wireless/ti/wlcore/debugfs.c
index bbfd2725215b..d359baea5100 100644
--- a/drivers/net/wireless/ti/wlcore/debugfs.c
+++ b/drivers/net/wireless/ti/wlcore/debugfs.c
@@ -1088,7 +1088,7 @@ static ssize_t dev_mem_read(struct file *file,
 	mutex_unlock(&wl->mutex);
 
 	if (ret == 0) {
-		ret = copy_to_user(user_buf, buf, bytes);
+		ret = copy_to_user_partial(user_buf, buf, bytes);
 		if (ret < bytes) {
 			bytes -= ret;
 			*ppos += bytes;
diff --git a/drivers/ps3/ps3-lpm.c b/drivers/ps3/ps3-lpm.c
index f8d8f607134a..5a2b150cda49 100644
--- a/drivers/ps3/ps3-lpm.c
+++ b/drivers/ps3/ps3-lpm.c
@@ -999,7 +999,7 @@ int ps3_lpm_copy_tb_to_user(unsigned long offset, void __user *buf,
 			return result == LV1_WRONG_STATE ? -EBUSY : -EINVAL;
 		}
 
-		result = copy_to_user(buf, lpm_priv->tb_cache, tmp);
+		result = copy_to_user_partial(buf, lpm_priv->tb_cache, tmp);
 
 		if (result) {
 			dev_dbg(sbd_core(), "%s:%u: 0x%llx bytes at 0x%p\n",
diff --git a/drivers/s390/crypto/zcrypt_api.h b/drivers/s390/crypto/zcrypt_api.h
index 6ef8850a42df..61a5de90c354 100644
--- a/drivers/s390/crypto/zcrypt_api.h
+++ b/drivers/s390/crypto/zcrypt_api.h
@@ -185,7 +185,7 @@ static inline unsigned long z_copy_from_user(bool userspace,
 					     unsigned long n)
 {
 	if (likely(userspace))
-		return copy_from_user(to, from, n);
+		return copy_from_user_partial(to, from, n);
 	memcpy(to, (void __force *)from, n);
 	return 0;
 }
@@ -196,7 +196,7 @@ static inline unsigned long z_copy_to_user(bool userspace,
 					   unsigned long n)
 {
 	if (likely(userspace))
-		return copy_to_user(to, from, n);
+		return copy_to_user_partial(to, from, n);
 	memcpy((void __force *)to, from, n);
 	return 0;
 }
diff --git a/drivers/spi/spidev.c b/drivers/spi/spidev.c
index 638221178384..5b42fabcf4c4 100644
--- a/drivers/spi/spidev.c
+++ b/drivers/spi/spidev.c
@@ -157,7 +157,7 @@ spidev_read(struct file *filp, char __user *buf, size_t count, loff_t *f_pos)
 	if (status > 0) {
 		unsigned long	missing;
 
-		missing = copy_to_user(buf, spidev->rx_buffer, status);
+		missing = copy_to_user_partial(buf, spidev->rx_buffer, status);
 		if (missing == status)
 			status = -EFAULT;
 		else
diff --git a/drivers/staging/media/atomisp/pci/atomisp_cmd.c b/drivers/staging/media/atomisp/pci/atomisp_cmd.c
index fec369575d88..10a7aff375a9 100644
--- a/drivers/staging/media/atomisp/pci/atomisp_cmd.c
+++ b/drivers/staging/media/atomisp/pci/atomisp_cmd.c
@@ -1491,7 +1491,7 @@ int atomisp_gdc_cac_table(struct atomisp_sub_device *asd, int flag,
 		}
 
 		for (i = 0; i < IA_CSS_MORPH_TABLE_NUM_PLANES; i++) {
-			ret = copy_from_user(tab->coordinates_x[i],
+			ret = copy_from_user_partial(tab->coordinates_x[i],
 					     config->coordinates_x[i],
 					     config->height * config->width *
 					     sizeof(*config->coordinates_x[i]));
@@ -1502,7 +1502,7 @@ int atomisp_gdc_cac_table(struct atomisp_sub_device *asd, int flag,
 				atomisp_css_morph_table_free(tab);
 				return -EFAULT;
 			}
-			ret = copy_from_user(tab->coordinates_y[i],
+			ret = copy_from_user_partial(tab->coordinates_y[i],
 					     config->coordinates_y[i],
 					     config->height * config->width *
 					     sizeof(*config->coordinates_y[i]));
@@ -1709,7 +1709,7 @@ int atomisp_3a_stat(struct atomisp_sub_device *asd, int flag,
 	config->exp_id = s3a_buf->s3a_data->exp_id;
 	config->isp_config_id = s3a_buf->s3a_data->isp_config_id;
 
-	ret = copy_to_user(config->data, asd->params.s3a_user_stat->data,
+	ret = copy_to_user_partial(config->data, asd->params.s3a_user_stat->data,
 			   asd->params.s3a_output_bytes);
 	if (ret) {
 		dev_err(isp->dev, "copy to user failed: copied %lu bytes\n",
@@ -2031,7 +2031,7 @@ static unsigned int long copy_from_compatible(void *to, const void *from,
 	unsigned long n, bool from_user)
 {
 	if (from_user)
-		return copy_from_user(to, (void __user *)from, n);
+		return copy_from_user_partial(to, (void __user *)from, n);
 	else
 		memcpy(to, from, n);
 	return 0;
diff --git a/drivers/tty/tty_ioctl.c b/drivers/tty/tty_ioctl.c
index 90c70d8d14e3..cdc274c0ff81 100644
--- a/drivers/tty/tty_ioctl.c
+++ b/drivers/tty/tty_ioctl.c
@@ -388,29 +388,29 @@ __weak int kernel_termios_to_user_termio(struct termio __user *termio,
 	v.c_lflag = termios->c_lflag;
 	v.c_line = termios->c_line;
 	memcpy(v.c_cc, termios->c_cc, NCC);
-	return copy_to_user(termio, &v, sizeof(struct termio));
+	return copy_to_user_partial(termio, &v, sizeof(struct termio));
 }
 
 #ifdef TCGETS2
 __weak int user_termios_to_kernel_termios(struct ktermios *k,
 						 struct termios2 __user *u)
 {
-	return copy_from_user(k, u, sizeof(struct termios2));
+	return copy_from_user_partial(k, u, sizeof(struct termios2));
 }
 __weak int kernel_termios_to_user_termios(struct termios2 __user *u,
 						 struct ktermios *k)
 {
-	return copy_to_user(u, k, sizeof(struct termios2));
+	return copy_to_user_partial(u, k, sizeof(struct termios2));
 }
 __weak int user_termios_to_kernel_termios_1(struct ktermios *k,
 						   struct termios __user *u)
 {
-	return copy_from_user(k, u, sizeof(struct termios));
+	return copy_from_user_partial(k, u, sizeof(struct termios));
 }
 __weak int kernel_termios_to_user_termios_1(struct termios __user *u,
 						   struct ktermios *k)
 {
-	return copy_to_user(u, k, sizeof(struct termios));
+	return copy_to_user_partial(u, k, sizeof(struct termios));
 }
 
 #else
@@ -418,12 +418,12 @@ __weak int kernel_termios_to_user_termios_1(struct termios __user *u,
 __weak int user_termios_to_kernel_termios(struct ktermios *k,
 						 struct termios __user *u)
 {
-	return copy_from_user(k, u, sizeof(struct termios));
+	return copy_from_user_partial(k, u, sizeof(struct termios));
 }
 __weak int kernel_termios_to_user_termios(struct termios __user *u,
 						 struct ktermios *k)
 {
-	return copy_to_user(u, k, sizeof(struct termios));
+	return copy_to_user_partial(u, k, sizeof(struct termios));
 }
 #endif /* TCGETS2 */
 
diff --git a/drivers/tty/vt/vc_screen.c b/drivers/tty/vt/vc_screen.c
index 4d2d46c95fef..e54c708149c3 100644
--- a/drivers/tty/vt/vc_screen.c
+++ b/drivers/tty/vt/vc_screen.c
@@ -450,7 +450,7 @@ vcs_read(struct file *file, char __user *buf, size_t count, loff_t *ppos)
 		 */
 
 		console_unlock();
-		ret = copy_to_user(buf, con_buf + skip, this_round);
+		ret = copy_to_user_partial(buf, con_buf + skip, this_round);
 		console_lock();
 
 		if (ret) {
@@ -630,7 +630,7 @@ vcs_write(struct file *file, const char __user *buf, size_t count, loff_t *ppos)
 		 * in the write data from userspace safely.
 		 */
 		console_unlock();
-		ret = copy_from_user(con_buf, buf, this_round);
+		ret = copy_from_user_partial(con_buf, buf, this_round);
 		console_lock();
 
 		if (ret) {
diff --git a/drivers/usb/gadget/function/f_hid.c b/drivers/usb/gadget/function/f_hid.c
index c5a12a6760ea..f22dd3697a46 100644
--- a/drivers/usb/gadget/function/f_hid.c
+++ b/drivers/usb/gadget/function/f_hid.c
@@ -349,7 +349,7 @@ static ssize_t f_hidg_intout_read(struct file *file, char __user *buffer,
 	spin_unlock_irqrestore(&hidg->read_spinlock, flags);
 
 	/* copy to user outside spinlock */
-	count -= copy_to_user(buffer, req->buf + list->pos, count);
+	count -= copy_to_user_partial(buffer, req->buf + list->pos, count);
 	list->pos += count;
 
 	/*
@@ -410,7 +410,7 @@ static ssize_t f_hidg_ssreport_read(struct file *file, char __user *buffer,
 	spin_unlock_irqrestore(&hidg->read_spinlock, flags);
 
 	if (tmp_buf != NULL) {
-		count -= copy_to_user(buffer, tmp_buf, count);
+		count -= copy_to_user_partial(buffer, tmp_buf, count);
 		kfree(tmp_buf);
 	} else {
 		count = -ENOMEM;
diff --git a/drivers/usb/gadget/function/f_printer.c b/drivers/usb/gadget/function/f_printer.c
index e4f7828ae75d..4fbed987b639 100644
--- a/drivers/usb/gadget/function/f_printer.c
+++ b/drivers/usb/gadget/function/f_printer.c
@@ -525,7 +525,7 @@ printer_read(struct file *fd, char __user *buf, size_t len, loff_t *ptr)
 		else
 			size = len;
 
-		size -= copy_to_user(buf, current_rx_buf, size);
+		size -= copy_to_user_partial(buf, current_rx_buf, size);
 		bytes_copied += size;
 		len -= size;
 		buf += size;
diff --git a/drivers/vfio/vfio_iommu_type1.c b/drivers/vfio/vfio_iommu_type1.c
index c8151ba54de3..ad74a891aa80 100644
--- a/drivers/vfio/vfio_iommu_type1.c
+++ b/drivers/vfio/vfio_iommu_type1.c
@@ -3173,7 +3173,7 @@ static int vfio_iommu_type1_dma_rw_chunk(struct vfio_iommu *iommu,
 	vaddr = dma->vaddr + offset;
 
 	if (write) {
-		*copied = copy_to_user((void __user *)vaddr, data,
+		*copied = copy_to_user_partial((void __user *)vaddr, data,
 					 count) ? 0 : count;
 		if (*copied && iommu->dirty_page_tracking) {
 			unsigned long pgshift = __ffs(iommu->pgsize_bitmap);
@@ -3186,7 +3186,7 @@ static int vfio_iommu_type1_dma_rw_chunk(struct vfio_iommu *iommu,
 				   (offset >> pgshift) + 1);
 		}
 	} else
-		*copied = copy_from_user(data, (void __user *)vaddr,
+		*copied = copy_from_user_partial(data, (void __user *)vaddr,
 					   count) ? 0 : count;
 	if (kthread)
 		kthread_unuse_mm(mm);
diff --git a/drivers/xen/xenbus/xenbus_dev_frontend.c b/drivers/xen/xenbus/xenbus_dev_frontend.c
index 61db6932a9d2..b1db90dac1d1 100644
--- a/drivers/xen/xenbus/xenbus_dev_frontend.c
+++ b/drivers/xen/xenbus/xenbus_dev_frontend.c
@@ -150,7 +150,7 @@ static ssize_t xenbus_file_read(struct file *filp,
 	while (i < len) {
 		size_t sz = min_t(size_t, len - i, rb->len - rb->cons);
 
-		ret = copy_to_user(ubuf + i, &rb->msg[rb->cons], sz);
+		ret = copy_to_user_partial(ubuf + i, &rb->msg[rb->cons], sz);
 
 		i += sz - ret;
 		rb->cons += sz - ret;
diff --git a/fs/namespace.c b/fs/namespace.c
index fe919abd2f01..27afb73fef20 100644
--- a/fs/namespace.c
+++ b/fs/namespace.c
@@ -4033,7 +4033,7 @@ static void *copy_mount_options(const void __user * data)
 	if (!copy)
 		return ERR_PTR(-ENOMEM);
 
-	left = copy_from_user(copy, data, PAGE_SIZE);
+	left = copy_from_user_partial(copy, data, PAGE_SIZE);
 
 	/*
 	 * Not all architectures have an exact copy_from_user(). Resort to
diff --git a/fs/ocfs2/dlmfs/dlmfs.c b/fs/ocfs2/dlmfs/dlmfs.c
index 5821e33df78f..97c0b391b98e 100644
--- a/fs/ocfs2/dlmfs/dlmfs.c
+++ b/fs/ocfs2/dlmfs/dlmfs.c
@@ -255,7 +255,7 @@ static ssize_t dlmfs_file_write(struct file *filp,
 	if (!count)
 		return 0;
 
-	bytes_left = copy_from_user(lvb_buf, buf, count);
+	bytes_left = copy_from_user_partial(lvb_buf, buf, count);
 	count -= bytes_left;
 	if (count)
 		user_dlm_write_lvb(inode, lvb_buf, count);
diff --git a/fs/proc/base.c b/fs/proc/base.c
index d9acfa89c894..49577662ae70 100644
--- a/fs/proc/base.c
+++ b/fs/proc/base.c
@@ -278,7 +278,7 @@ static ssize_t get_mm_proctitle(struct mm_struct *mm, char __user *buf,
 			len -= pos;
 			if (len > count)
 				len = count;
-			len -= copy_to_user(buf, page+pos, len);
+			len -= copy_to_user_partial(buf, page+pos, len);
 			if (!len)
 				len = -EFAULT;
 			ret = len;
@@ -359,7 +359,7 @@ static ssize_t get_mm_cmdline(struct mm_struct *mm, char __user *buf,
 		got = access_remote_vm(mm, pos, page, size, FOLL_ANON);
 		if (got <= 0)
 			break;
-		got -= copy_to_user(buf, page, got);
+		got -= copy_to_user_partial(buf, page, got);
 		if (unlikely(!got)) {
 			if (!len)
 				len = -EFAULT;
diff --git a/include/linux/bpfptr.h b/include/linux/bpfptr.h
index f6e0795db484..e4444d0f0cfe 100644
--- a/include/linux/bpfptr.h
+++ b/include/linux/bpfptr.h
@@ -50,7 +50,7 @@ static inline int copy_from_bpfptr_offset(void *dst, bpfptr_t src,
 					  size_t offset, size_t size)
 {
 	if (!bpfptr_is_kernel(src))
-		return copy_from_user(dst, src.user + offset, size);
+		return copy_from_user_partial(dst, src.user + offset, size);
 	return copy_from_kernel_nofault(dst, src.kernel + offset, size);
 }
 
diff --git a/include/linux/sockptr.h b/include/linux/sockptr.h
index 3e6c8e9d67ae..52ddddfe728d 100644
--- a/include/linux/sockptr.h
+++ b/include/linux/sockptr.h
@@ -45,7 +45,7 @@ static inline int copy_from_sockptr_offset(void *dst, sockptr_t src,
 		size_t offset, size_t size)
 {
 	if (!sockptr_is_kernel(src))
-		return copy_from_user(dst, src.user + offset, size);
+		return copy_from_user_partial(dst, src.user + offset, size);
 	memcpy(dst, src.kernel + offset, size);
 	return 0;
 }
@@ -111,7 +111,7 @@ static inline int copy_to_sockptr_offset(sockptr_t dst, size_t offset,
 		const void *src, size_t size)
 {
 	if (!sockptr_is_kernel(dst))
-		return copy_to_user(dst.user + offset, src, size);
+		return copy_to_user_partial(dst.user + offset, src, size);
 	memcpy(dst.kernel + offset, src, size);
 	return 0;
 }
diff --git a/ipc/msg.c b/ipc/msg.c
index 62996b97f0ac..39848238219d 100644
--- a/ipc/msg.c
+++ b/ipc/msg.c
@@ -322,7 +322,7 @@ copy_msqid_to_user(void __user *buf, struct msqid64_ds *in, int version)
 {
 	switch (version) {
 	case IPC_64:
-		return copy_to_user(buf, in, sizeof(*in));
+		return copy_to_user_partial(buf, in, sizeof(*in));
 	case IPC_OLD:
 	{
 		struct msqid_ds out;
@@ -355,7 +355,7 @@ copy_msqid_to_user(void __user *buf, struct msqid64_ds *in, int version)
 		out.msg_lspid		= in->msg_lspid;
 		out.msg_lrpid		= in->msg_lrpid;
 
-		return copy_to_user(buf, &out, sizeof(out));
+		return copy_to_user_partial(buf, &out, sizeof(out));
 	}
 	default:
 		return -EINVAL;
@@ -712,7 +712,7 @@ static int copy_compat_msqid_to_user(void __user *buf, struct msqid64_ds *in,
 		v.msg_qbytes = in->msg_qbytes;
 		v.msg_lspid = in->msg_lspid;
 		v.msg_lrpid = in->msg_lrpid;
-		return copy_to_user(buf, &v, sizeof(v));
+		return copy_to_user_partial(buf, &v, sizeof(v));
 	} else {
 		struct compat_msqid_ds v;
 		memset(&v, 0, sizeof(v));
@@ -725,7 +725,7 @@ static int copy_compat_msqid_to_user(void __user *buf, struct msqid64_ds *in,
 		v.msg_qbytes = in->msg_qbytes;
 		v.msg_lspid = in->msg_lspid;
 		v.msg_lrpid = in->msg_lrpid;
-		return copy_to_user(buf, &v, sizeof(v));
+		return copy_to_user_partial(buf, &v, sizeof(v));
 	}
 }
 
diff --git a/ipc/sem.c b/ipc/sem.c
index 6cdf862b1f5c..3b56086ba07d 100644
--- a/ipc/sem.c
+++ b/ipc/sem.c
@@ -1196,7 +1196,7 @@ static unsigned long copy_semid_to_user(void __user *buf, struct semid64_ds *in,
 {
 	switch (version) {
 	case IPC_64:
-		return copy_to_user(buf, in, sizeof(*in));
+		return copy_to_user_partial(buf, in, sizeof(*in));
 	case IPC_OLD:
 	    {
 		struct semid_ds out;
@@ -1209,7 +1209,7 @@ static unsigned long copy_semid_to_user(void __user *buf, struct semid64_ds *in,
 		out.sem_ctime	= in->sem_ctime;
 		out.sem_nsems	= in->sem_nsems;
 
-		return copy_to_user(buf, &out, sizeof(out));
+		return copy_to_user_partial(buf, &out, sizeof(out));
 	    }
 	default:
 		return -EINVAL;
@@ -1759,7 +1759,7 @@ static int copy_compat_semid_to_user(void __user *buf, struct semid64_ds *in,
 		v.sem_ctime	 = lower_32_bits(in->sem_ctime);
 		v.sem_ctime_high = upper_32_bits(in->sem_ctime);
 		v.sem_nsems = in->sem_nsems;
-		return copy_to_user(buf, &v, sizeof(v));
+		return copy_to_user_partial(buf, &v, sizeof(v));
 	} else {
 		struct compat_semid_ds v;
 		memset(&v, 0, sizeof(v));
@@ -1767,7 +1767,7 @@ static int copy_compat_semid_to_user(void __user *buf, struct semid64_ds *in,
 		v.sem_otime = in->sem_otime;
 		v.sem_ctime = in->sem_ctime;
 		v.sem_nsems = in->sem_nsems;
-		return copy_to_user(buf, &v, sizeof(v));
+		return copy_to_user_partial(buf, &v, sizeof(v));
 	}
 }
 
diff --git a/ipc/shm.c b/ipc/shm.c
index a95dae447707..1eb53c3df3b9 100644
--- a/ipc/shm.c
+++ b/ipc/shm.c
@@ -853,7 +853,7 @@ static inline unsigned long copy_shmid_to_user(void __user *buf, struct shmid64_
 {
 	switch (version) {
 	case IPC_64:
-		return copy_to_user(buf, in, sizeof(*in));
+		return copy_to_user_partial(buf, in, sizeof(*in));
 	case IPC_OLD:
 	    {
 		struct shmid_ds out;
@@ -868,7 +868,7 @@ static inline unsigned long copy_shmid_to_user(void __user *buf, struct shmid64_
 		out.shm_lpid	= in->shm_lpid;
 		out.shm_nattch	= in->shm_nattch;
 
-		return copy_to_user(buf, &out, sizeof(out));
+		return copy_to_user_partial(buf, &out, sizeof(out));
 	    }
 	default:
 		return -EINVAL;
@@ -905,7 +905,7 @@ static inline unsigned long copy_shminfo_to_user(void __user *buf, struct shminf
 {
 	switch (version) {
 	case IPC_64:
-		return copy_to_user(buf, in, sizeof(*in));
+		return copy_to_user_partial(buf, in, sizeof(*in));
 	case IPC_OLD:
 	    {
 		struct shminfo out;
@@ -920,7 +920,7 @@ static inline unsigned long copy_shminfo_to_user(void __user *buf, struct shminf
 		out.shmseg	= in->shmseg;
 		out.shmall	= in->shmall;
 
-		return copy_to_user(buf, &out, sizeof(out));
+		return copy_to_user_partial(buf, &out, sizeof(out));
 	    }
 	default:
 		return -EINVAL;
@@ -1359,7 +1359,7 @@ static int copy_compat_shminfo_to_user(void __user *buf, struct shminfo64 *in,
 		info.shmmni = in->shmmni;
 		info.shmseg = in->shmseg;
 		info.shmall = in->shmall;
-		return copy_to_user(buf, &info, sizeof(info));
+		return copy_to_user_partial(buf, &info, sizeof(info));
 	} else {
 		struct shminfo info;
 		memset(&info, 0, sizeof(info));
@@ -1368,7 +1368,7 @@ static int copy_compat_shminfo_to_user(void __user *buf, struct shminfo64 *in,
 		info.shmmni = in->shmmni;
 		info.shmseg = in->shmseg;
 		info.shmall = in->shmall;
-		return copy_to_user(buf, &info, sizeof(info));
+		return copy_to_user_partial(buf, &info, sizeof(info));
 	}
 }
 
@@ -1384,7 +1384,7 @@ static int put_compat_shm_info(struct shm_info *ip,
 	info.shm_swp = ip->shm_swp;
 	info.swap_attempts = ip->swap_attempts;
 	info.swap_successes = ip->swap_successes;
-	return copy_to_user(uip, &info, sizeof(info));
+	return copy_to_user_partial(uip, &info, sizeof(info));
 }
 
 static int copy_compat_shmid_to_user(void __user *buf, struct shmid64_ds *in,
@@ -1404,7 +1404,7 @@ static int copy_compat_shmid_to_user(void __user *buf, struct shmid64_ds *in,
 		v.shm_nattch = in->shm_nattch;
 		v.shm_cpid = in->shm_cpid;
 		v.shm_lpid = in->shm_lpid;
-		return copy_to_user(buf, &v, sizeof(v));
+		return copy_to_user_partial(buf, &v, sizeof(v));
 	} else {
 		struct compat_shmid_ds v;
 		memset(&v, 0, sizeof(v));
@@ -1417,7 +1417,7 @@ static int copy_compat_shmid_to_user(void __user *buf, struct shmid64_ds *in,
 		v.shm_nattch = in->shm_nattch;
 		v.shm_cpid = in->shm_cpid;
 		v.shm_lpid = in->shm_lpid;
-		return copy_to_user(buf, &v, sizeof(v));
+		return copy_to_user_partial(buf, &v, sizeof(v));
 	}
 }
 
diff --git a/kernel/regset.c b/kernel/regset.c
index b2871fa68b2a..29c6d19c3465 100644
--- a/kernel/regset.c
+++ b/kernel/regset.c
@@ -70,7 +70,7 @@ int copy_regset_to_user(struct task_struct *target,
 
 	ret = regset_get_alloc(target, regset, size, &buf);
 	if (ret > 0)
-		ret = copy_to_user(data, buf, ret) ? -EFAULT : 0;
+		ret = copy_to_user_partial(data, buf, ret) ? -EFAULT : 0;
 	kvfree(buf);
 	return ret;
 }
diff --git a/kernel/sys.c b/kernel/sys.c
index 62e842055cc9..8e1ce8c26884 100644
--- a/kernel/sys.c
+++ b/kernel/sys.c
@@ -1343,7 +1343,7 @@ static int override_release(char __user *release, size_t len)
 		v = LINUX_VERSION_PATCHLEVEL + 60;
 		copy = clamp_t(size_t, len, 1, sizeof(buf));
 		copy = scnprintf(buf, copy, "2.6.%u%s", v, rest);
-		ret = copy_to_user(release, buf, copy + 1);
+		ret = copy_to_user_partial(release, buf, copy + 1);
 	}
 	return ret;
 }
@@ -1567,7 +1567,7 @@ SYSCALL_DEFINE2(getrlimit, unsigned int, resource, struct rlimit __user *, rlim)
 
 	ret = do_prlimit(current, resource, NULL, &value);
 	if (!ret)
-		ret = copy_to_user(rlim, &value, sizeof(*rlim)) ? -EFAULT : 0;
+		ret = copy_to_user_partial(rlim, &value, sizeof(*rlim)) ? -EFAULT : 0;
 
 	return ret;
 }
diff --git a/lib/kfifo.c b/lib/kfifo.c
index 2633f9cc336c..00c19a321aae 100644
--- a/lib/kfifo.c
+++ b/lib/kfifo.c
@@ -203,11 +203,11 @@ static unsigned long kfifo_copy_from_user(struct __kfifo *fifo,
 	}
 	l = min(len, size - off);
 
-	ret = copy_from_user(fifo->data + off, from, l);
+	ret = copy_from_user_partial(fifo->data + off, from, l);
 	if (unlikely(ret))
 		ret = DIV_ROUND_UP(ret + len - l, esize);
 	else {
-		ret = copy_from_user(fifo->data, from + l, len - l);
+		ret = copy_from_user_partial(fifo->data, from + l, len - l);
 		if (unlikely(ret))
 			ret = DIV_ROUND_UP(ret, esize);
 	}
@@ -263,11 +263,11 @@ static unsigned long kfifo_copy_to_user(struct __kfifo *fifo, void __user *to,
 	}
 	l = min(len, size - off);
 
-	ret = copy_to_user(to, fifo->data + off, l);
+	ret = copy_to_user_partial(to, fifo->data + off, l);
 	if (unlikely(ret))
 		ret = DIV_ROUND_UP(ret + len - l, esize);
 	else {
-		ret = copy_to_user(to + l, fifo->data, len - l);
+		ret = copy_to_user_partial(to + l, fifo->data, len - l);
 		if (unlikely(ret))
 			ret = DIV_ROUND_UP(ret, esize);
 	}
diff --git a/mm/kasan/kasan_test_c.c b/mm/kasan/kasan_test_c.c
index 32d06cbf6a31..a4d19fc1068a 100644
--- a/mm/kasan/kasan_test_c.c
+++ b/mm/kasan/kasan_test_c.c
@@ -2169,9 +2169,9 @@ static void copy_user_test_oob(struct kunit *test)
 	usermem = (char __user *)useraddr;
 
 	KUNIT_EXPECT_KASAN_FAIL(test,
-		unused = copy_from_user(kmem, usermem, size + 1));
+		unused = copy_from_user_partial(kmem, usermem, size + 1));
 	KUNIT_EXPECT_KASAN_FAIL_READ(test,
-		unused = copy_to_user(usermem, kmem, size + 1));
+		unused = copy_to_user_partial(usermem, kmem, size + 1));
 	KUNIT_EXPECT_KASAN_FAIL(test,
 		unused = __copy_from_user(kmem, usermem, size + 1));
 	KUNIT_EXPECT_KASAN_FAIL_READ(test,
diff --git a/mm/memory.c b/mm/memory.c
index ea6568571131..5a2f7543a2da 100644
--- a/mm/memory.c
+++ b/mm/memory.c
@@ -7529,7 +7529,7 @@ long copy_folio_from_user(struct folio *dst_folio,
 		kaddr = kmap_local_page(subpage);
 		if (!allow_pagefault)
 			pagefault_disable();
-		rc = copy_from_user(kaddr, usr_src + i * PAGE_SIZE, PAGE_SIZE);
+		rc = copy_from_user_partial(kaddr, usr_src + i * PAGE_SIZE, PAGE_SIZE);
 		if (!allow_pagefault)
 			pagefault_enable();
 		kunmap_local(kaddr);
diff --git a/net/x25/af_x25.c b/net/x25/af_x25.c
index af8762b24039..7327c98b206a 100644
--- a/net/x25/af_x25.c
+++ b/net/x25/af_x25.c
@@ -471,7 +471,7 @@ static int x25_getsockopt(struct socket *sock, int level, int optname,
 		goto out;
 
 	val = test_bit(X25_Q_BIT_FLAG, &x25_sk(sk)->flags);
-	rc = copy_to_user(optval, &val, len) ? -EFAULT : 0;
+	rc = copy_to_user_partial(optval, &val, len) ? -EFAULT : 0;
 out:
 	return rc;
 }
diff --git a/rust/helpers/uaccess.c b/rust/helpers/uaccess.c
index 01de4fbbcc84..710e07cd60ae 100644
--- a/rust/helpers/uaccess.c
+++ b/rust/helpers/uaccess.c
@@ -5,13 +5,13 @@
 __rust_helper unsigned long
 rust_helper_copy_from_user(void *to, const void __user *from, unsigned long n)
 {
-	return copy_from_user(to, from, n);
+	return copy_from_user_partial(to, from, n);
 }
 
 __rust_helper unsigned long
 rust_helper_copy_to_user(void __user *to, const void *from, unsigned long n)
 {
-	return copy_to_user(to, from, n);
+	return copy_to_user_partial(to, from, n);
 }
 
 #ifndef CONFIG_ARCH_WANTS_NOINLINE_COPY_USER
diff --git a/sound/pci/emu10k1/emufx.c b/sound/pci/emu10k1/emufx.c
index 08e0556bf161..3941bf9666a9 100644
--- a/sound/pci/emu10k1/emufx.c
+++ b/sound/pci/emu10k1/emufx.c
@@ -739,10 +739,10 @@ static int copy_gctl_to_user(struct snd_emu10k1 *emu,
 
 	_dst = (struct snd_emu10k1_fx8010_control_gpr __user *)dst;
 	if (emu->support_tlv)
-		return copy_to_user(&_dst[idx], src, sizeof(*src));
+		return copy_to_user_partial(&_dst[idx], src, sizeof(*src));
 	
 	octl = (struct snd_emu10k1_fx8010_control_old_gpr __user *)dst;
-	return copy_to_user(&octl[idx], src, sizeof(*octl));
+	return copy_to_user_partial(&octl[idx], src, sizeof(*octl));
 }
 
 static int copy_ctl_elem_id(const struct emu10k1_ctl_elem_id *list, int i,
diff --git a/sound/pci/rme9652/hdsp.c b/sound/pci/rme9652/hdsp.c
index 31cc2d91c8d2..d5842d8a8509 100644
--- a/sound/pci/rme9652/hdsp.c
+++ b/sound/pci/rme9652/hdsp.c
@@ -4541,7 +4541,7 @@ static int snd_hdsp_capture_release(struct snd_pcm_substream *substream)
 static inline int copy_u32_le(void __user *dest, void __iomem *src)
 {
 	u32 val = readl(src);
-	return copy_to_user(dest, &val, 4);
+	return copy_to_user_partial(dest, &val, 4);
 }
 
 static inline int copy_u64_le(void __user *dest, void __iomem *src_low, void __iomem *src_high)
@@ -4551,7 +4551,7 @@ static inline int copy_u64_le(void __user *dest, void __iomem *src_low, void __i
 	rms_low = readl(src_low);
 	rms_high = readl(src_high);
 	rms = ((u64)rms_high << 32) | rms_low;
-	return copy_to_user(dest, &rms, 8);
+	return copy_to_user_partial(dest, &rms, 8);
 }
 
 static inline int copy_u48_le(void __user *dest, void __iomem *src_low, void __iomem *src_high)
@@ -4561,7 +4561,7 @@ static inline int copy_u48_le(void __user *dest, void __iomem *src_low, void __i
 	rms_low = readl(src_low) & 0xffffff00;
 	rms_high = readl(src_high) & 0xffffff00;
 	rms = ((u64)rms_high << 32) | rms_low;
-	return copy_to_user(dest, &rms, 8);
+	return copy_to_user_partial(dest, &rms, 8);
 }
 
 static int hdsp_9652_get_peak(struct hdsp *hdsp, struct hdsp_peak_rms __user *peak_rms)
diff --git a/sound/soc/intel/avs/probes.c b/sound/soc/intel/avs/probes.c
index 099119ad28b3..bc2871d3e18c 100644
--- a/sound/soc/intel/avs/probes.c
+++ b/sound/soc/intel/avs/probes.c
@@ -244,10 +244,10 @@ static int avs_probe_compr_copy(struct snd_soc_component *comp, struct snd_compr
 	n = rtd->buffer_size - offset;
 
 	if (count < n) {
-		ret = copy_to_user(buf, ptr, count);
+		ret = copy_to_user_partial(buf, ptr, count);
 	} else {
-		ret = copy_to_user(buf, ptr, n);
-		ret += copy_to_user(buf + n, rtd->dma_area, count - n);
+		ret = copy_to_user_partial(buf, ptr, n);
+		ret += copy_to_user_partial(buf + n, rtd->dma_area, count - n);
 	}
 
 	if (ret)
diff --git a/sound/soc/sof/compress.c b/sound/soc/sof/compress.c
index 93f2376585db..d54be8a188ec 100644
--- a/sound/soc/sof/compress.c
+++ b/sound/soc/sof/compress.c
@@ -324,10 +324,10 @@ static int sof_compr_copy_playback(struct snd_compr_runtime *rtd,
 	n = rtd->buffer_size - offset;
 
 	if (count < n) {
-		ret = copy_from_user(ptr, buf, count);
+		ret = copy_from_user_partial(ptr, buf, count);
 	} else {
-		ret = copy_from_user(ptr, buf, n);
-		ret += copy_from_user(rtd->dma_area, buf + n, count - n);
+		ret = copy_from_user_partial(ptr, buf, n);
+		ret += copy_from_user_partial(rtd->dma_area, buf + n, count - n);
 	}
 
 	return count - ret;
@@ -345,10 +345,10 @@ static int sof_compr_copy_capture(struct snd_compr_runtime *rtd,
 	n = rtd->buffer_size - offset;
 
 	if (count < n) {
-		ret = copy_to_user(buf, ptr, count);
+		ret = copy_to_user_partial(buf, ptr, count);
 	} else {
-		ret = copy_to_user(buf, ptr, n);
-		ret += copy_to_user(buf + n, rtd->dma_area, count - n);
+		ret = copy_to_user_partial(buf, ptr, n);
+		ret += copy_to_user_partial(buf + n, rtd->dma_area, count - n);
 	}
 
 	return count - ret;
diff --git a/sound/soc/sof/sof-client-probes.c b/sound/soc/sof/sof-client-probes.c
index 124f55508159..4c5f4f016ff8 100644
--- a/sound/soc/sof/sof-client-probes.c
+++ b/sound/soc/sof/sof-client-probes.c
@@ -184,10 +184,10 @@ static int sof_probes_compr_copy(struct snd_soc_component *component,
 	n = rtd->buffer_size - offset;
 
 	if (count < n) {
-		ret = copy_to_user(buf, ptr, count);
+		ret = copy_to_user_partial(buf, ptr, count);
 	} else {
-		ret = copy_to_user(buf, ptr, n);
-		ret += copy_to_user(buf + n, rtd->dma_area, count - n);
+		ret = copy_to_user_partial(buf, ptr, n);
+		ret += copy_to_user_partial(buf + n, rtd->dma_area, count - n);
 	}
 
 	if (ret)
-- 
2.49.0



From xen-devel-bounces@lists.xenproject.org Mon Apr 27 17:18:59 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 27 Apr 2026 17:18:59 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1295169.1571864 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wHPbd-0001KN-ID; Mon, 27 Apr 2026 17:18:49 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1295169.1571864; Mon, 27 Apr 2026 17:18: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 1wHPbd-0001KE-DF; Mon, 27 Apr 2026 17:18:49 +0000
Received: by outflank-mailman (input) for mailman id 1295169;
 Mon, 27 Apr 2026 17:18:48 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <chleroy@kernel.org>) id 1wHPbc-0001Jb-DX
 for xen-devel@lists.xenproject.org; Mon, 27 Apr 2026 17:18:48 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wHPbb-00GS5q-Qd
 for xen-devel@lists.xenproject.org; Mon, 27 Apr 2026 19:18:47 +0200
Received: from [10.42.69.10] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <chleroy@kernel.org>)
 id 69ef9a6a-5cb7-0a2a0a5109dd-0a2a450adc26-26
 for <xen-devel@lists.xenproject.org>; Mon, 27 Apr 2026 19:18:47 +0200
Received: from [172.234.252.31] (helo=sea.source.kernel.org)
 by tlsNG-4011c0.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.1)
 (envelope-from <chleroy@kernel.org>)
 id 69ef9a76-56b3-0a2a450a0019-aceafc1f9b1a-3
 for <xen-devel@lists.xenproject.org>; Mon, 27 Apr 2026 19:18:47 +0200
Received: from smtp.kernel.org (transwarp.subspace.kernel.org [100.75.92.58])
 by sea.source.kernel.org (Postfix) with ESMTP id E16F243CD6;
 Mon, 27 Apr 2026 17:18:45 +0000 (UTC)
Received: by smtp.kernel.org (Postfix) with ESMTPSA id 5390FC2BCB4;
 Mon, 27 Apr 2026 17:18: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=k20201202 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/simple; d=kernel.org;
	s=k20201202; t=1777310325;
	bh=x+yz+Ptlr8yUKihbRCrYsj2OzN4+HDHdWj3mTkeeywo=;
	h=From:To:Cc:Subject:Date:In-Reply-To:References:From;
	b=YS9v5orti9jIm2coPKy7cH4iQCLjTYOH2T4kGrmAKw1lk2UpD8UcWDut4XHtMo5CX
	 290KHU3PNOVzMmnTKEL1o/OfzgOnzBVsJnbuGicRbc3HqjVsrjLo1DZ4Ncwz6tafWZ
	 SG8/hG1Ct8pUgSHrDrW4chwaJ34uCldA2tlOQo4bI8M4kMxsW5bP0OLNOAC7BeTwPk
	 Mil/pgBJA2/iCGWwmbEh5WNZZrQ4Md/gtqmnREocwFdhobkWjiqhIB30lRO/GV15k3
	 DZOePxOSt4vdcYmGqKSVWX7R1FegGyxqEmqkjMUEcFWkKzHsBpXNo8/6bbP3EGANbq
	 KZwGUUWEURiLg==
From: "Christophe Leroy (CS GROUP)" <chleroy@kernel.org>
To: Yury Norov <ynorov@nvidia.com>,
	Andrew Morton <akpm@linux-foundation.org>,
	Linus Torvalds <torvalds@linux-foundation.org>,
	David Laight <david.laight.linux@gmail.com>,
	Thomas Gleixner <tglx@linutronix.de>
Cc: "Christophe Leroy (CS GROUP)" <chleroy@kernel.org>,
	linux-alpha@vger.kernel.org,
	linux-kernel@vger.kernel.org,
	linux-snps-arc@lists.infradead.org,
	linux-arm-kernel@lists.infradead.org,
	linux-mips@vger.kernel.org,
	linuxppc-dev@lists.ozlabs.org,
	kvm@vger.kernel.org,
	linux-riscv@lists.infradead.org,
	linux-s390@vger.kernel.org,
	sparclinux@vger.kernel.org,
	linux-um@lists.infradead.org,
	dmaengine@vger.kernel.org,
	linux-efi@vger.kernel.org,
	linux-fsi@lists.ozlabs.org,
	amd-gfx@lists.freedesktop.org,
	dri-devel@lists.freedesktop.org,
	intel-gfx@lists.freedesktop.org,
	linux-wpan@vger.kernel.org,
	netdev@vger.kernel.org,
	linux-wireless@vger.kernel.org,
	linux-spi@vger.kernel.org,
	linux-media@vger.kernel.org,
	linux-staging@lists.linux.dev,
	linux-serial@vger.kernel.org,
	linux-usb@vger.kernel.org,
	xen-devel@lists.xenproject.org,
	linux-fsdevel@vger.kernel.org,
	ocfs2-devel@lists.linux.dev,
	bpf@vger.kernel.org,
	kasan-dev@googlegroups.com,
	linux-mm@kvack.org,
	linux-x25@vger.kernel.org,
	rust-for-linux@vger.kernel.org,
	linux-sound@vger.kernel.org,
	sound-open-firmware@alsa-project.org,
	linux-csky@vger.kernel.org,
	linux-hexagon@vger.kernel.org,
	loongarch@lists.linux.dev,
	linux-m68k@lists.linux-m68k.org,
	linux-openrisc@vger.kernel.org,
	linux-parisc@vger.kernel.org,
	linux-sh@vger.kernel.org,
	linux-arch@vger.kernel.org
Subject: [RFC PATCH v1 6/9] uaccess: Change copy_{to/from}_user to return -EFAULT
Date: Mon, 27 Apr 2026 19:13:47 +0200
Message-ID: <1a55107abe15dd78450888e2b5327c3a56af29b7.1777306795.git.chleroy@kernel.org>
X-Mailer: git-send-email 2.49.0
In-Reply-To: <cover.1777306795.git.chleroy@kernel.org>
References: <cover.1777306795.git.chleroy@kernel.org>
MIME-Version: 1.0
X-Developer-Signature: v=1; a=openpgp-sha256; l=2416; i=chleroy@kernel.org; h=from:subject:message-id; bh=x+yz+Ptlr8yUKihbRCrYsj2OzN4+HDHdWj3mTkeeywo=; b=owGbwMvMwCV2d0KB2p7V54MZT6slMWS+nxkjryH88LzkjscmK202zhcwuOPhcJTlidTVNdtCP 9vs/VPG2lHKwiDGxSArpshy/D/3rhldX1Lzp+7Sh5nDygQyhIGLUwAm0nCN4b9/yT75hpDtr4zk 9XPfORmtVO2p/XH+8bFg730PPNfMvn6dkWHDjsJSC09Vr9bDobdrxTgfMm1ckveKR+Rkud3skLM HLXgA
X-Developer-Key: i=chleroy@kernel.org; a=openpgp; fpr=10FFE6F8B390DE17ACC2632368A92FEB01B8DD78
Content-Transfer-Encoding: 8bit
X-purgate-ID: tlsNG-4011c0/1777310327-CEB778B7-CD0BDB58/0/0
X-purgate-type: clean
X-purgate-size: 2418

Now that copy_{to/from}_user_partial() are used by callers which expect
partial copy with number of not copied bytes as return value, change
copy_{to/from}_user() to return an int, and return -EFAULT when the
copy is not complete.

Signed-off-by: Christophe Leroy (CS GROUP) <chleroy@kernel.org>
---
 include/linux/uaccess.h | 28 ++++++++++++++++++++++++----
 1 file changed, 24 insertions(+), 4 deletions(-)

diff --git a/include/linux/uaccess.h b/include/linux/uaccess.h
index 2d37173782b3..33b7d0f5f808 100644
--- a/include/linux/uaccess.h
+++ b/include/linux/uaccess.h
@@ -211,7 +211,7 @@ extern __must_check unsigned long
 _copy_to_user(void __user *, const void *, unsigned long);
 
 static __always_inline unsigned long __must_check
-copy_from_user(void *to, const void __user *from, unsigned long n)
+copy_from_user_common(void *to, const void __user *from, unsigned long n, bool partial)
 {
 	if (!check_copy_size(to, n, false))
 		return n;
@@ -221,10 +221,20 @@ copy_from_user(void *to, const void __user *from, unsigned long n)
 		return _inline_copy_from_user(to, from, n);
 }
 
-#define copy_from_user_partial copy_from_user
+static __always_inline unsigned long __must_check
+copy_from_user_partial(void *to, const void __user *from, unsigned long n)
+{
+	return copy_from_user_common(to, from, n, true);
+}
+
+static __always_inline int __must_check
+copy_from_user(void *to, const void __user *from, unsigned long n)
+{
+	return copy_from_user_common(to, from, n, false) ? -EFAULT : 0;
+}
 
 static __always_inline unsigned long __must_check
-copy_to_user(void __user *to, const void *from, unsigned long n)
+copy_to_user_common(void __user *to, const void *from, unsigned long n, bool partial)
 {
 	if (!check_copy_size(from, n, true))
 		return n;
@@ -235,7 +245,17 @@ copy_to_user(void __user *to, const void *from, unsigned long n)
 		return _inline_copy_to_user(to, from, n);
 }
 
-#define copy_to_user_partial copy_to_user
+static __always_inline unsigned long __must_check
+copy_to_user_partial(void __user *to, const void *from, unsigned long n)
+{
+	return copy_to_user_common(to, from, n, true);
+}
+
+static __always_inline int __must_check
+copy_to_user(void __user *to, const void *from, unsigned long n)
+{
+	return copy_to_user_common(to, from, n, false) ? -EFAULT : 0;
+}
 
 #ifndef copy_mc_to_kernel
 /*
-- 
2.49.0



From xen-devel-bounces@lists.xenproject.org Mon Apr 27 17:19:11 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 27 Apr 2026 17:19:11 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1295177.1571873 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wHPbr-0001rR-O9; Mon, 27 Apr 2026 17:19:03 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1295177.1571873; Mon, 27 Apr 2026 17:19: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 1wHPbr-0001rK-Kr; Mon, 27 Apr 2026 17:19:03 +0000
Received: by outflank-mailman (input) for mailman id 1295177;
 Mon, 27 Apr 2026 17:19:02 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <chleroy@kernel.org>) id 1wHPbq-0001qE-3d
 for xen-devel@lists.xenproject.org; Mon, 27 Apr 2026 17:19:02 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wHPbn-00Dj5E-Uz
 for xen-devel@lists.xenproject.org; Mon, 27 Apr 2026 19:19:01 +0200
Received: from [10.42.69.11] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <chleroy@kernel.org>)
 id 69ef9a73-e002-0a2a0a5209dd-0a2a450baea2-16
 for <xen-devel@lists.xenproject.org>; Mon, 27 Apr 2026 19:19:01 +0200
Received: from [172.234.252.31] (helo=sea.source.kernel.org)
 by tlsNG-42698a.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.1)
 (envelope-from <chleroy@kernel.org>)
 id 69ef9a83-212f-0a2a450b0019-aceafc1f93f0-3
 for <xen-devel@lists.xenproject.org>; Mon, 27 Apr 2026 19:19:01 +0200
Received: from smtp.kernel.org (transwarp.subspace.kernel.org [100.75.92.58])
 by sea.source.kernel.org (Postfix) with ESMTP id 9368940C54;
 Mon, 27 Apr 2026 17:18:59 +0000 (UTC)
Received: by smtp.kernel.org (Postfix) with ESMTPSA id 59C90C2BCB4;
 Mon, 27 Apr 2026 17:18: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=k20201202 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/simple; d=kernel.org;
	s=k20201202; t=1777310339;
	bh=VVuQn2YnZFi2JH9uh9hmEqXb1BpygsXabSyFGnhBvmI=;
	h=From:To:Cc:Subject:Date:In-Reply-To:References:From;
	b=kdO2kRaqrKnrRzE/uOUoSc+QuIvBLF9bEcfUYb9jTJLWJk0AT883/0gLUkpYyvhxW
	 JwKLSaa6O8znPG+ygzo4nQLM8J0f65SbAuU342P7t8CFNHOEuyufyC86uU6TKB6BuB
	 gSew3oyOMPJ8ALphDrpzU/JPmVzf88NlkSTCpSsq0dGpC1oXnkppqU6so9I0ayHunG
	 vmD6szQq9NnauXryTPXCD0GLKF95gnwZ47owOPgIM468cdafyYqaGorVn/T0ZUPF41
	 utCUjd396YBehKkYMEmrRy4GP6QkmxuYFD7L2LBro+x9SzGKxh5BvzwrXlX1jpWNJG
	 /RZq8/R9DjgcA==
From: "Christophe Leroy (CS GROUP)" <chleroy@kernel.org>
To: Yury Norov <ynorov@nvidia.com>,
	Andrew Morton <akpm@linux-foundation.org>,
	Linus Torvalds <torvalds@linux-foundation.org>,
	David Laight <david.laight.linux@gmail.com>,
	Thomas Gleixner <tglx@linutronix.de>
Cc: "Christophe Leroy (CS GROUP)" <chleroy@kernel.org>,
	linux-alpha@vger.kernel.org,
	linux-kernel@vger.kernel.org,
	linux-snps-arc@lists.infradead.org,
	linux-arm-kernel@lists.infradead.org,
	linux-mips@vger.kernel.org,
	linuxppc-dev@lists.ozlabs.org,
	kvm@vger.kernel.org,
	linux-riscv@lists.infradead.org,
	linux-s390@vger.kernel.org,
	sparclinux@vger.kernel.org,
	linux-um@lists.infradead.org,
	dmaengine@vger.kernel.org,
	linux-efi@vger.kernel.org,
	linux-fsi@lists.ozlabs.org,
	amd-gfx@lists.freedesktop.org,
	dri-devel@lists.freedesktop.org,
	intel-gfx@lists.freedesktop.org,
	linux-wpan@vger.kernel.org,
	netdev@vger.kernel.org,
	linux-wireless@vger.kernel.org,
	linux-spi@vger.kernel.org,
	linux-media@vger.kernel.org,
	linux-staging@lists.linux.dev,
	linux-serial@vger.kernel.org,
	linux-usb@vger.kernel.org,
	xen-devel@lists.xenproject.org,
	linux-fsdevel@vger.kernel.org,
	ocfs2-devel@lists.linux.dev,
	bpf@vger.kernel.org,
	kasan-dev@googlegroups.com,
	linux-mm@kvack.org,
	linux-x25@vger.kernel.org,
	rust-for-linux@vger.kernel.org,
	linux-sound@vger.kernel.org,
	sound-open-firmware@alsa-project.org,
	linux-csky@vger.kernel.org,
	linux-hexagon@vger.kernel.org,
	loongarch@lists.linux.dev,
	linux-m68k@lists.linux-m68k.org,
	linux-openrisc@vger.kernel.org,
	linux-parisc@vger.kernel.org,
	linux-sh@vger.kernel.org,
	linux-arch@vger.kernel.org
Subject: [RFC PATCH v1 7/9] x86: Add unsafe_copy_from_user()
Date: Mon, 27 Apr 2026 19:13:48 +0200
Message-ID: <0ee46bb228d97163fbdc14f2a7c52b93d8bc34ce.1777306795.git.chleroy@kernel.org>
X-Mailer: git-send-email 2.49.0
In-Reply-To: <cover.1777306795.git.chleroy@kernel.org>
References: <cover.1777306795.git.chleroy@kernel.org>
MIME-Version: 1.0
X-Developer-Signature: v=1; a=openpgp-sha256; l=2390; i=chleroy@kernel.org; h=from:subject:message-id; bh=VVuQn2YnZFi2JH9uh9hmEqXb1BpygsXabSyFGnhBvmI=; b=owGbwMvMwCV2d0KB2p7V54MZT6slMWS+nxljeGSBfXj99HCNy2WTVFXXC9z/Hmi+//aE1/MbC +50nw1Q6ChlYRDjYpAVU2Q5/p9714yuL6n5U3fpw8xhZQIZwsDFKQAT2djH8D+e3yYgNP/F6xtd z9QNXjIccVycwR574E38S3tWp2uq95Yy/M9xKJ2hYJCUJV9391rVwmlfl7x6GzD19bqwZeyVdgF fZ3MAAA==
X-Developer-Key: i=chleroy@kernel.org; a=openpgp; fpr=10FFE6F8B390DE17ACC2632368A92FEB01B8DD78
Content-Transfer-Encoding: 8bit
X-purgate-ID: tlsNG-42698a/1777310341-7FB78F3B-73370ACE/0/0
X-purgate-type: clean
X-purgate-size: 2392

At the time being, x86 and arm64 are missing unsafe_copy_from_user().

Add it.

Signed-off-by: Christophe Leroy (CS GROUP) <chleroy@kernel.org>
---
 arch/x86/include/asm/uaccess.h | 29 ++++++++++++++++++++++++-----
 1 file changed, 24 insertions(+), 5 deletions(-)

diff --git a/arch/x86/include/asm/uaccess.h b/arch/x86/include/asm/uaccess.h
index 3a0dd3c2b233..10c458ffa399 100644
--- a/arch/x86/include/asm/uaccess.h
+++ b/arch/x86/include/asm/uaccess.h
@@ -598,7 +598,7 @@ _label:									\
  * We want the unsafe accessors to always be inlined and use
  * the error labels - thus the macro games.
  */
-#define unsafe_copy_loop(dst, src, len, type, label)				\
+#define unsafe_put_loop(dst, src, len, type, label)				\
 	while (len >= sizeof(type)) {						\
 		unsafe_put_user(*(type *)(src),(type __user *)(dst),label);	\
 		dst += sizeof(type);						\
@@ -611,10 +611,29 @@ do {									\
 	char __user *__ucu_dst = (_dst);				\
 	const char *__ucu_src = (_src);					\
 	size_t __ucu_len = (_len);					\
-	unsafe_copy_loop(__ucu_dst, __ucu_src, __ucu_len, u64, label);	\
-	unsafe_copy_loop(__ucu_dst, __ucu_src, __ucu_len, u32, label);	\
-	unsafe_copy_loop(__ucu_dst, __ucu_src, __ucu_len, u16, label);	\
-	unsafe_copy_loop(__ucu_dst, __ucu_src, __ucu_len, u8, label);	\
+	unsafe_put_loop(__ucu_dst, __ucu_src, __ucu_len, u64, label);	\
+	unsafe_put_loop(__ucu_dst, __ucu_src, __ucu_len, u32, label);	\
+	unsafe_put_loop(__ucu_dst, __ucu_src, __ucu_len, u16, label);	\
+	unsafe_put_loop(__ucu_dst, __ucu_src, __ucu_len, u8, label);	\
+} while (0)
+
+#define unsafe_get_loop(dst, src, len, type, label)				\
+	while (len >= sizeof(type)) {						\
+		unsafe_get_user(*(type __user *)(src),(type *)(dst),label);	\
+		dst += sizeof(type);						\
+		src += sizeof(type);						\
+		len -= sizeof(type);						\
+	}
+
+#define unsafe_copy_from_user(_dst,_src,_len,label)			\
+do {									\
+	char *__ucu_dst = (_dst);					\
+	const char __user *__ucu_src = (_src);				\
+	size_t __ucu_len = (_len);					\
+	unsafe_get_loop(__ucu_dst, __ucu_src, __ucu_len, u64, label);	\
+	unsafe_get_loop(__ucu_dst, __ucu_src, __ucu_len, u32, label);	\
+	unsafe_get_loop(__ucu_dst, __ucu_src, __ucu_len, u16, label);	\
+	unsafe_get_loop(__ucu_dst, __ucu_src, __ucu_len, u8, label);	\
 } while (0)
 
 #ifdef CONFIG_CC_HAS_ASM_GOTO_OUTPUT
-- 
2.49.0



From xen-devel-bounces@lists.xenproject.org Mon Apr 27 17:19:16 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 27 Apr 2026 17:19:16 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1295187.1571882 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wHPc4-0002N3-0M; Mon, 27 Apr 2026 17:19:16 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1295187.1571882; Mon, 27 Apr 2026 17:19: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 1wHPc3-0002Mw-Sv; Mon, 27 Apr 2026 17:19:15 +0000
Received: by outflank-mailman (input) for mailman id 1295187;
 Mon, 27 Apr 2026 17:19:14 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <chleroy@kernel.org>) id 1wHPc2-0002Lo-DM
 for xen-devel@lists.xenproject.org; Mon, 27 Apr 2026 17:19:14 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wHPc1-002BZT-Pt
 for xen-devel@lists.xenproject.org; Mon, 27 Apr 2026 19:19:13 +0200
Received: from [10.42.69.4] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <chleroy@kernel.org>)
 id 69ef9a7a-e002-0a2a0a5209dd-0a2a4504bec4-34
 for <xen-devel@lists.xenproject.org>; Mon, 27 Apr 2026 19:19:13 +0200
Received: from [172.105.4.254] (helo=tor.source.kernel.org)
 by tlsNG-ebf023.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.1)
 (envelope-from <chleroy@kernel.org>)
 id 69ef9a90-1dec-0a2a45040019-ac6904fea4c8-3
 for <xen-devel@lists.xenproject.org>; Mon, 27 Apr 2026 19:19:13 +0200
Received: from smtp.kernel.org (transwarp.subspace.kernel.org [100.75.92.58])
 by tor.source.kernel.org (Postfix) with ESMTP id 5077960139;
 Mon, 27 Apr 2026 17:19:12 +0000 (UTC)
Received: by smtp.kernel.org (Postfix) with ESMTPSA id 1FAFFC2BCB4;
 Mon, 27 Apr 2026 17:18:59 +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=k20201202 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/simple; d=kernel.org;
	s=k20201202; t=1777310352;
	bh=vbZIj5I8a11ig9c375SeIMkNInKGe+jckYb8HPag1tw=;
	h=From:To:Cc:Subject:Date:In-Reply-To:References:From;
	b=lp9wELlrvJvoeuCK0/zMI5UANnrsQ+T4se/gBOunN8iQDrEi1RstW5G65/9vUEPmI
	 U9UXqoktuU7EViGdT+8yzDZHjl2N0E5vd9veY8uQePuAD9x0oGHf4CotQwSmAD24go
	 gSXTECesL9+kQmgNOk7myjSgr8UboLxcnh/OrEADTLSIqRqZRx4YwXDl6QWc3wVNsO
	 sB/2ZwfKCyhos7Vj9aXXCgNggtmoXoIYLpWXmI9TjsLctEcOG8w3vDT/K6+fVh16nS
	 /UcGgkCV5vp5qC1VRJeMqVPGsaV7+wscOAZaxlqKS8j4DsLjsIu1iQmtuFIX3tL+zm
	 kvFBNXQR3j5iw==
From: "Christophe Leroy (CS GROUP)" <chleroy@kernel.org>
To: Yury Norov <ynorov@nvidia.com>,
	Andrew Morton <akpm@linux-foundation.org>,
	Linus Torvalds <torvalds@linux-foundation.org>,
	David Laight <david.laight.linux@gmail.com>,
	Thomas Gleixner <tglx@linutronix.de>
Cc: "Christophe Leroy (CS GROUP)" <chleroy@kernel.org>,
	linux-alpha@vger.kernel.org,
	linux-kernel@vger.kernel.org,
	linux-snps-arc@lists.infradead.org,
	linux-arm-kernel@lists.infradead.org,
	linux-mips@vger.kernel.org,
	linuxppc-dev@lists.ozlabs.org,
	kvm@vger.kernel.org,
	linux-riscv@lists.infradead.org,
	linux-s390@vger.kernel.org,
	sparclinux@vger.kernel.org,
	linux-um@lists.infradead.org,
	dmaengine@vger.kernel.org,
	linux-efi@vger.kernel.org,
	linux-fsi@lists.ozlabs.org,
	amd-gfx@lists.freedesktop.org,
	dri-devel@lists.freedesktop.org,
	intel-gfx@lists.freedesktop.org,
	linux-wpan@vger.kernel.org,
	netdev@vger.kernel.org,
	linux-wireless@vger.kernel.org,
	linux-spi@vger.kernel.org,
	linux-media@vger.kernel.org,
	linux-staging@lists.linux.dev,
	linux-serial@vger.kernel.org,
	linux-usb@vger.kernel.org,
	xen-devel@lists.xenproject.org,
	linux-fsdevel@vger.kernel.org,
	ocfs2-devel@lists.linux.dev,
	bpf@vger.kernel.org,
	kasan-dev@googlegroups.com,
	linux-mm@kvack.org,
	linux-x25@vger.kernel.org,
	rust-for-linux@vger.kernel.org,
	linux-sound@vger.kernel.org,
	sound-open-firmware@alsa-project.org,
	linux-csky@vger.kernel.org,
	linux-hexagon@vger.kernel.org,
	loongarch@lists.linux.dev,
	linux-m68k@lists.linux-m68k.org,
	linux-openrisc@vger.kernel.org,
	linux-parisc@vger.kernel.org,
	linux-sh@vger.kernel.org,
	linux-arch@vger.kernel.org
Subject: [RFC PATCH v1 8/9] arm64: Add unsafe_copy_from_user()
Date: Mon, 27 Apr 2026 19:13:49 +0200
Message-ID: <5b09e58a84c9edcfe5724db5cd57e45d96a96bfa.1777306795.git.chleroy@kernel.org>
X-Mailer: git-send-email 2.49.0
In-Reply-To: <cover.1777306795.git.chleroy@kernel.org>
References: <cover.1777306795.git.chleroy@kernel.org>
MIME-Version: 1.0
X-Developer-Signature: v=1; a=openpgp-sha256; l=2498; i=chleroy@kernel.org; h=from:subject:message-id; bh=vbZIj5I8a11ig9c375SeIMkNInKGe+jckYb8HPag1tw=; b=owGbwMvMwCV2d0KB2p7V54MZT6slMWS+nxmbKDOhb/vkF5+62Iv+nzi0lmWmkWf+tSO3HK9yP D89hV+LoaOUhUGMi0FWTJHl+H/uXTO6vqTmT92lDzOHlQlkCAMXpwBMJCKWkeGFnFP5dUbGE1cO pXr18eg3ndoc9ubDcl2tYxbdt9o1nmkyMvQuDCp+FV4TvfDP3c6+r/YFCyvUNTZlcrea/2SZ/OM dBwcA
X-Developer-Key: i=chleroy@kernel.org; a=openpgp; fpr=10FFE6F8B390DE17ACC2632368A92FEB01B8DD78
Content-Transfer-Encoding: 8bit
X-purgate-ID: tlsNG-ebf023/1777310353-312463FF-237AE988/0/0
X-purgate-type: clean
X-purgate-size: 2500

At the time being, x86 and arm64 are missing unsafe_copy_from_user().

Add it.

Signed-off-by: Christophe Leroy (CS GROUP) <chleroy@kernel.org>
---
 arch/arm64/include/asm/uaccess.h | 29 ++++++++++++++++++++++++-----
 1 file changed, 24 insertions(+), 5 deletions(-)

diff --git a/arch/arm64/include/asm/uaccess.h b/arch/arm64/include/asm/uaccess.h
index 1e20ec91b56f..adfdb52cd82b 100644
--- a/arch/arm64/include/asm/uaccess.h
+++ b/arch/arm64/include/asm/uaccess.h
@@ -437,7 +437,7 @@ static inline void user_access_restore(unsigned long enabled) { }
  * We want the unsafe accessors to always be inlined and use
  * the error labels - thus the macro games.
  */
-#define unsafe_copy_loop(dst, src, len, type, label)				\
+#define unsafe_put_loop(dst, src, len, type, label)				\
 	while (len >= sizeof(type)) {						\
 		unsafe_put_user(*(type *)(src),(type __user *)(dst),label);	\
 		dst += sizeof(type);						\
@@ -450,10 +450,29 @@ do {									\
 	char __user *__ucu_dst = (_dst);				\
 	const char *__ucu_src = (_src);					\
 	size_t __ucu_len = (_len);					\
-	unsafe_copy_loop(__ucu_dst, __ucu_src, __ucu_len, u64, label);	\
-	unsafe_copy_loop(__ucu_dst, __ucu_src, __ucu_len, u32, label);	\
-	unsafe_copy_loop(__ucu_dst, __ucu_src, __ucu_len, u16, label);	\
-	unsafe_copy_loop(__ucu_dst, __ucu_src, __ucu_len, u8, label);	\
+	unsafe_put_loop(__ucu_dst, __ucu_src, __ucu_len, u64, label);	\
+	unsafe_put_loop(__ucu_dst, __ucu_src, __ucu_len, u32, label);	\
+	unsafe_put_loop(__ucu_dst, __ucu_src, __ucu_len, u16, label);	\
+	unsafe_put_loop(__ucu_dst, __ucu_src, __ucu_len, u8, label);	\
+} while (0)
+
+#define unsafe_get_loop(dst, src, len, type, label)				\
+	while (len >= sizeof(type)) {						\
+		unsafe_get_user(*(type __user *)(src),(type *)(dst),label);	\
+		dst += sizeof(type);						\
+		src += sizeof(type);						\
+		len -= sizeof(type);						\
+	}
+
+#define unsafe_copy_from_user(_dst,_src,_len,label)			\
+do {									\
+	char *__ucu_dst = (_dst);					\
+	const char __user *__ucu_src = (_src);				\
+	size_t __ucu_len = (_len);					\
+	unsafe_get_loop(__ucu_dst, __ucu_src, __ucu_len, u64, label);	\
+	unsafe_get_loop(__ucu_dst, __ucu_src, __ucu_len, u32, label);	\
+	unsafe_get_loop(__ucu_dst, __ucu_src, __ucu_len, u16, label);	\
+	unsafe_get_loop(__ucu_dst, __ucu_src, __ucu_len, u8, label);	\
 } while (0)
 
 extern unsigned long __must_check __arch_clear_user(void __user *to, unsigned long n);
-- 
2.49.0



From xen-devel-bounces@lists.xenproject.org Mon Apr 27 17:19:28 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 27 Apr 2026 17:19:28 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1295196.1571891 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wHPcG-0002qN-61; Mon, 27 Apr 2026 17:19:28 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1295196.1571891; Mon, 27 Apr 2026 17:19: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 1wHPcG-0002qG-3I; Mon, 27 Apr 2026 17:19:28 +0000
Received: by outflank-mailman (input) for mailman id 1295196;
 Mon, 27 Apr 2026 17:19:27 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <chleroy@kernel.org>) id 1wHPcF-0002pV-0A
 for xen-devel@lists.xenproject.org; Mon, 27 Apr 2026 17:19:27 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wHPcE-009MNW-Cz
 for xen-devel@lists.xenproject.org; Mon, 27 Apr 2026 19:19:26 +0200
Received: from [10.42.69.1] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <chleroy@kernel.org>)
 id 69ef9a9c-2eae-0a2a0a5409dd-0a2a4501bcd8-4
 for <xen-devel@lists.xenproject.org>; Mon, 27 Apr 2026 19:19:26 +0200
Received: from [172.105.4.254] (helo=tor.source.kernel.org)
 by tlsNG-d62444.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.1)
 (envelope-from <chleroy@kernel.org>)
 id 69ef9a9d-c1f2-0a2a45010019-ac6904fea574-3
 for <xen-devel@lists.xenproject.org>; Mon, 27 Apr 2026 19:19:26 +0200
Received: from smtp.kernel.org (transwarp.subspace.kernel.org [100.75.92.58])
 by tor.source.kernel.org (Postfix) with ESMTP id 180046024D;
 Mon, 27 Apr 2026 17:19:25 +0000 (UTC)
Received: by smtp.kernel.org (Postfix) with ESMTPSA id A25EEC2BCB7;
 Mon, 27 Apr 2026 17:19: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=k20201202 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/simple; d=kernel.org;
	s=k20201202; t=1777310364;
	bh=xblTv37x9V4gU3cvmA9ILfz6xXNOv0sNe2zU9C6a5nw=;
	h=From:To:Cc:Subject:Date:In-Reply-To:References:From;
	b=k8kV5Zhk7HZbxy8X7mxqUL5UgTTJPPuuLtSKHKOe5PwbIiNodL9/7ESxRbcOMv4dB
	 NN/pd897F5mMQZv6MW+RM/3mikWvqmJGQCtupbd6YHiobStaCQu79RRkwt3Bs1rL/A
	 WmXtcy3vIzgejB2MGSu6MrKJ33itreKKdFlemNypyCUExoUHGXA1bHbqFqaNX4ujdd
	 iXZiXWTV/w69yfgs2V8e+zdWAilhhtsvDDxzPIT8CbbievjXPmrPwVloE5aoqLKmYP
	 ca2+sf92YJQm2mLHcpyNlGd6mMQP6QhUed6Hx8vk/CloBjO7tSgz4fayv+CeXka+Fz
	 NwGM6tvALNVmQ==
From: "Christophe Leroy (CS GROUP)" <chleroy@kernel.org>
To: Yury Norov <ynorov@nvidia.com>,
	Andrew Morton <akpm@linux-foundation.org>,
	Linus Torvalds <torvalds@linux-foundation.org>,
	David Laight <david.laight.linux@gmail.com>,
	Thomas Gleixner <tglx@linutronix.de>
Cc: "Christophe Leroy (CS GROUP)" <chleroy@kernel.org>,
	linux-alpha@vger.kernel.org,
	linux-kernel@vger.kernel.org,
	linux-snps-arc@lists.infradead.org,
	linux-arm-kernel@lists.infradead.org,
	linux-mips@vger.kernel.org,
	linuxppc-dev@lists.ozlabs.org,
	kvm@vger.kernel.org,
	linux-riscv@lists.infradead.org,
	linux-s390@vger.kernel.org,
	sparclinux@vger.kernel.org,
	linux-um@lists.infradead.org,
	dmaengine@vger.kernel.org,
	linux-efi@vger.kernel.org,
	linux-fsi@lists.ozlabs.org,
	amd-gfx@lists.freedesktop.org,
	dri-devel@lists.freedesktop.org,
	intel-gfx@lists.freedesktop.org,
	linux-wpan@vger.kernel.org,
	netdev@vger.kernel.org,
	linux-wireless@vger.kernel.org,
	linux-spi@vger.kernel.org,
	linux-media@vger.kernel.org,
	linux-staging@lists.linux.dev,
	linux-serial@vger.kernel.org,
	linux-usb@vger.kernel.org,
	xen-devel@lists.xenproject.org,
	linux-fsdevel@vger.kernel.org,
	ocfs2-devel@lists.linux.dev,
	bpf@vger.kernel.org,
	kasan-dev@googlegroups.com,
	linux-mm@kvack.org,
	linux-x25@vger.kernel.org,
	rust-for-linux@vger.kernel.org,
	linux-sound@vger.kernel.org,
	sound-open-firmware@alsa-project.org,
	linux-csky@vger.kernel.org,
	linux-hexagon@vger.kernel.org,
	loongarch@lists.linux.dev,
	linux-m68k@lists.linux-m68k.org,
	linux-openrisc@vger.kernel.org,
	linux-parisc@vger.kernel.org,
	linux-sh@vger.kernel.org,
	linux-arch@vger.kernel.org
Subject: [RFC PATCH v1 9/9] uaccess: Convert small fixed size copy_{to/from}_user() to scoped user access
Date: Mon, 27 Apr 2026 19:13:50 +0200
Message-ID: <8780eb2ef80575931a339e5225bc80eb13e9be6c.1777306795.git.chleroy@kernel.org>
X-Mailer: git-send-email 2.49.0
In-Reply-To: <cover.1777306795.git.chleroy@kernel.org>
References: <cover.1777306795.git.chleroy@kernel.org>
MIME-Version: 1.0
X-Developer-Signature: v=1; a=openpgp-sha256; l=3638; i=chleroy@kernel.org; h=from:subject:message-id; bh=xblTv37x9V4gU3cvmA9ILfz6xXNOv0sNe2zU9C6a5nw=; b=owGbwMvMwCV2d0KB2p7V54MZT6slMWS+nxlr/n9yu2DE7uwkCZGbl0uCp6Y1JLvZTPpz+P/PY xNqPMoaOkpZGMS4GGTFFFmO/+feNaPrS2r+1F36MHNYmUCGMHBxCsBE9HwZ/ns82Ho9PV2Q+7Pp 5fqvs6O/v3YN+3EgL+Wk4b/co1rlkZ8YGVZxmDl7XFiUcmPSTPW14WGSHT6/1u4pcTY2cjD0U7P bzAkA
X-Developer-Key: i=chleroy@kernel.org; a=openpgp; fpr=10FFE6F8B390DE17ACC2632368A92FEB01B8DD78
Content-Transfer-Encoding: 8bit
X-purgate-ID: tlsNG-d62444/1777310366-BCC6CFF4-9C02882D/0/0
X-purgate-type: clean
X-purgate-size: 3640

copy_{to/from}_user() is a heavy function optimised for copy of large
blocs of memory between user and kernel space.

When the number of bytes to be copied is known at build time and small,
using scoped user access removes the burden of that optimisation.

Signed-off-by: Christophe Leroy (CS GROUP) <chleroy@kernel.org>
---
 include/linux/uaccess.h | 47 +++++++++++++++++++++++++++++++++++++++++
 1 file changed, 47 insertions(+)

diff --git a/include/linux/uaccess.h b/include/linux/uaccess.h
index 33b7d0f5f808..3ac544527af2 100644
--- a/include/linux/uaccess.h
+++ b/include/linux/uaccess.h
@@ -50,6 +50,8 @@
  #define mask_user_address(src) (src)
 #endif
 
+#define SMALL_COPY_USER		64
+
 /*
  * Architectures should provide two primitives (raw_copy_{to,from}_user())
  * and get rid of their private instances of copy_{to,from}_user() and
@@ -191,6 +193,9 @@ _inline_copy_from_user(void *to, const void __user *from, unsigned long n)
 	return res;
 }
 
+static __always_inline __must_check unsigned long
+_small_copy_from_user(void *to, const void __user *from, unsigned long n);
+
 extern __must_check unsigned long
 _copy_from_user(void *, const void __user *, unsigned long);
 
@@ -207,6 +212,9 @@ _inline_copy_to_user(void __user *to, const void *from, unsigned long n)
 	return n;
 }
 
+static __always_inline __must_check unsigned long
+_small_copy_to_user(void __user *to, const void *from, unsigned long n);
+
 extern __must_check unsigned long
 _copy_to_user(void __user *, const void *, unsigned long);
 
@@ -215,6 +223,8 @@ copy_from_user_common(void *to, const void __user *from, unsigned long n, bool p
 {
 	if (!check_copy_size(to, n, false))
 		return n;
+	if (!partial && __builtin_constant_p(n) && n <= SMALL_COPY_USER)
+		return _small_copy_from_user(to, from, n);
 	if (IS_ENABLED(ARCH_WANTS_NOINLINE_COPY_USER))
 		return _copy_from_user(to, from, n);
 	else
@@ -239,6 +249,8 @@ copy_to_user_common(void __user *to, const void *from, unsigned long n, bool par
 	if (!check_copy_size(from, n, true))
 		return n;
 
+	if (!partial && __builtin_constant_p(n) && n <= SMALL_COPY_USER)
+		return _small_copy_to_user(to, from, n);
 	if (IS_ENABLED(ARCH_WANTS_NOINLINE_COPY_USER))
 		return _copy_to_user(to, from, n);
 	else
@@ -838,6 +850,41 @@ for (bool done = false; !done; done = true)					\
 #define scoped_user_rw_access(uptr, elbl)				\
 	scoped_user_rw_access_size(uptr, sizeof(*(uptr)), elbl)
 
+static __always_inline __must_check unsigned long
+_small_copy_from_user(void *to, const void __user *from, unsigned long n)
+{
+	might_fault();
+	instrument_copy_from_user_before(to, from, n);
+	scoped_user_read_access_size(from, n, failed) {
+		/*
+		 * Ensure that bad access_ok() speculation will not lead
+		 * to nasty side effects *after* the copy is finished:
+		 */
+		if (!can_do_masked_user_access())
+			barrier_nospec();
+		unsafe_copy_from_user(to, from, n, failed);
+	}
+	instrument_copy_from_user_after(to, from, n, 0);
+	return 0;
+failed:
+	instrument_copy_from_user_after(to, from, n, n);
+	return n;
+}
+
+static __always_inline __must_check unsigned long
+_small_copy_to_user(void __user *to, const void *from, unsigned long n)
+{
+	might_fault();
+	if (should_fail_usercopy())
+		return n;
+	instrument_copy_to_user(to, from, n);
+	scoped_user_write_access_size(to, n, failed)
+		unsafe_copy_to_user(to, from, n, failed);
+	return 0;
+failed:
+	return n;
+}
+
 /**
  * get_user_inline - Read user data inlined
  * @val:	The variable to store the value read from user memory
-- 
2.49.0



From xen-devel-bounces@lists.xenproject.org Mon Apr 27 18:21:54 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 27 Apr 2026 18:21:54 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1295218.1571900 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wHQaG-0005Zo-QW; Mon, 27 Apr 2026 18:21:28 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1295218.1571900; Mon, 27 Apr 2026 18: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 1wHQaG-0005Zh-N2; Mon, 27 Apr 2026 18:21:28 +0000
Received: by outflank-mailman (input) for mailman id 1295218;
 Mon, 27 Apr 2026 18:21:28 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <chleroy@kernel.org>) id 1wHQaG-0005Zb-1i
 for xen-devel@lists.xenproject.org; Mon, 27 Apr 2026 18:21:28 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wHQaE-00DKp2-OU
 for xen-devel@lists.xenproject.org; Mon, 27 Apr 2026 20:21:26 +0200
Received: from [10.42.69.9] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <chleroy@kernel.org>)
 id 69efa912-2eae-0a2a0a5409dd-0a2a4509a59e-40
 for <xen-devel@lists.xenproject.org>; Mon, 27 Apr 2026 20:21:26 +0200
Received: from [172.234.252.31] (helo=sea.source.kernel.org)
 by tlsNG-bad1c0.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.1)
 (envelope-from <chleroy@kernel.org>)
 id 69efa924-2497-0a2a45090019-aceafc1fc93a-3
 for <xen-devel@lists.xenproject.org>; Mon, 27 Apr 2026 20:21:26 +0200
Received: from smtp.kernel.org (transwarp.subspace.kernel.org [100.75.92.58])
 by sea.source.kernel.org (Postfix) with ESMTP id 46E9540246;
 Mon, 27 Apr 2026 18:20:57 +0000 (UTC)
Received: by smtp.kernel.org (Postfix) with ESMTPSA id 3CCCFC2BCB5;
 Mon, 27 Apr 2026 18:20: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=k20201202 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/simple; d=kernel.org;
	s=k20201202; t=1777314053;
	bh=fSfdZ5/fBIJBn92+lTQ8RknrFiSruKk4Zm5FPbyuhQI=;
	h=Date:Subject:To:Cc:References:From:In-Reply-To:From;
	b=J2scZpbKenpOejPaCkxdr8Fr6c4RornKyxLjF0dKFYhSlw+matCdj3SDWlLeqEo9E
	 a373XI9Iold2YwxLkAFI1OVkbxbR9JLgxu/comiCZJeBJjQK8IiPFbF3a0OQIu5zFJ
	 z32D8XDVz5Fo00XfpR09lc3WO+fPx7ont3FOA+TL4jxGM7w1J5Z2cHWcv2Vi05coRU
	 6lIPjD/Eh4XtMiOh4PUlJfQ+hbcnF50oIaF0Y5is14Jb9Uy7pNbq6e4WVWxwPn3QZF
	 F5175xYuXBtUSK+HvgeuPZTDTXog5e6524IUP62vgqpWl/U/vR5Pqvo+DbOYeGkne+
	 cSOzK+yVIhXWw==
Message-ID: <63a4d0f6-0eb3-48cd-9f98-bf7b223b2606@kernel.org>
Date: Mon, 27 Apr 2026 20:20:38 +0200
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [RFC PATCH v1 7/9] x86: Add unsafe_copy_from_user()
To: Yury Norov <ynorov@nvidia.com>
Cc: Andrew Morton <akpm@linux-foundation.org>,
 Linus Torvalds <torvalds@linux-foundation.org>,
 David Laight <david.laight.linux@gmail.com>,
 Thomas Gleixner <tglx@linutronix.de>, linux-alpha@vger.kernel.org,
 linux-kernel@vger.kernel.org, linux-snps-arc@lists.infradead.org,
 linux-arm-kernel@lists.infradead.org, linux-mips@vger.kernel.org,
 linuxppc-dev@lists.ozlabs.org, kvm@vger.kernel.org,
 linux-riscv@lists.infradead.org, linux-s390@vger.kernel.org,
 sparclinux@vger.kernel.org, linux-um@lists.infradead.org,
 dmaengine@vger.kernel.org, linux-efi@vger.kernel.org,
 linux-fsi@lists.ozlabs.org, amd-gfx@lists.freedesktop.org,
 dri-devel@lists.freedesktop.org, intel-gfx@lists.freedesktop.org,
 linux-wpan@vger.kernel.org, netdev@vger.kernel.org,
 linux-wireless@vger.kernel.org, linux-spi@vger.kernel.org,
 linux-media@vger.kernel.org, linux-staging@lists.linux.dev,
 linux-serial@vger.kernel.org, linux-usb@vger.kernel.org,
 xen-devel@lists.xenproject.org, linux-fsdevel@vger.kernel.org,
 ocfs2-devel@lists.linux.dev, bpf@vger.kernel.org,
 kasan-dev@googlegroups.com, linux-mm@kvack.org, linux-x25@vger.kernel.org,
 rust-for-linux@vger.kernel.org, linux-sound@vger.kernel.org,
 sound-open-firmware@alsa-project.org, linux-csky@vger.kernel.org,
 linux-hexagon@vger.kernel.org, loongarch@lists.linux.dev,
 linux-m68k@lists.linux-m68k.org, linux-openrisc@vger.kernel.org,
 linux-parisc@vger.kernel.org, linux-sh@vger.kernel.org,
 linux-arch@vger.kernel.org
References: <cover.1777306795.git.chleroy@kernel.org>
 <0ee46bb228d97163fbdc14f2a7c52b93d8bc34ce.1777306795.git.chleroy@kernel.org>
 <ae-j2_QirCySZD02@yury>
Content-Language: fr-FR
From: "Christophe Leroy (CS GROUP)" <chleroy@kernel.org>
In-Reply-To: <ae-j2_QirCySZD02@yury>
Content-Type: text/plain; charset=UTF-8; format=flowed
Content-Transfer-Encoding: 8bit
X-purgate-ID: tlsNG-bad1c0/1777314086-408AFA53-AF96D79F/0/0
X-purgate-type: clean
X-purgate-size: 3340



Le 27/04/2026 à 19:58, Yury Norov a écrit :
> On Mon, Apr 27, 2026 at 07:13:48PM +0200, Christophe Leroy (CS GROUP) wrote:
>> At the time being, x86 and arm64 are missing unsafe_copy_from_user().
> 
> No, they don't. They (should) rely on a generic implementation from
> linux/uaccess.h, like every other arch, except for  PPC and RISCV.
> 
> But they #define arch_unsafe_get_user, and the unsafe_copy_from_user()
> becomes undefined conditionally on that.
> 
> So please, fix that bug instead of introducing another arch flavor.
> We'd always choose generic version, unless there's strong evidence
> that arch one is better.

But they both implement the exact same unsafe_copy_to_user(). What is 
the difference here ?

Should that function become generic too ?

Christophe

> 
> 
> Thanks,
> Yury
>   
>> Add it.
>>
>> Signed-off-by: Christophe Leroy (CS GROUP) <chleroy@kernel.org>
>> ---
>>   arch/x86/include/asm/uaccess.h | 29 ++++++++++++++++++++++++-----
>>   1 file changed, 24 insertions(+), 5 deletions(-)
>>
>> diff --git a/arch/x86/include/asm/uaccess.h b/arch/x86/include/asm/uaccess.h
>> index 3a0dd3c2b233..10c458ffa399 100644
>> --- a/arch/x86/include/asm/uaccess.h
>> +++ b/arch/x86/include/asm/uaccess.h
>> @@ -598,7 +598,7 @@ _label:									\
>>    * We want the unsafe accessors to always be inlined and use
>>    * the error labels - thus the macro games.
>>    */
>> -#define unsafe_copy_loop(dst, src, len, type, label)				\
>> +#define unsafe_put_loop(dst, src, len, type, label)				\
>>   	while (len >= sizeof(type)) {						\
>>   		unsafe_put_user(*(type *)(src),(type __user *)(dst),label);	\
>>   		dst += sizeof(type);						\
>> @@ -611,10 +611,29 @@ do {									\
>>   	char __user *__ucu_dst = (_dst);				\
>>   	const char *__ucu_src = (_src);					\
>>   	size_t __ucu_len = (_len);					\
>> -	unsafe_copy_loop(__ucu_dst, __ucu_src, __ucu_len, u64, label);	\
>> -	unsafe_copy_loop(__ucu_dst, __ucu_src, __ucu_len, u32, label);	\
>> -	unsafe_copy_loop(__ucu_dst, __ucu_src, __ucu_len, u16, label);	\
>> -	unsafe_copy_loop(__ucu_dst, __ucu_src, __ucu_len, u8, label);	\
>> +	unsafe_put_loop(__ucu_dst, __ucu_src, __ucu_len, u64, label);	\
>> +	unsafe_put_loop(__ucu_dst, __ucu_src, __ucu_len, u32, label);	\
>> +	unsafe_put_loop(__ucu_dst, __ucu_src, __ucu_len, u16, label);	\
>> +	unsafe_put_loop(__ucu_dst, __ucu_src, __ucu_len, u8, label);	\
>> +} while (0)
>> +
>> +#define unsafe_get_loop(dst, src, len, type, label)				\
>> +	while (len >= sizeof(type)) {						\
>> +		unsafe_get_user(*(type __user *)(src),(type *)(dst),label);	\
>> +		dst += sizeof(type);						\
>> +		src += sizeof(type);						\
>> +		len -= sizeof(type);						\
>> +	}
>> +
>> +#define unsafe_copy_from_user(_dst,_src,_len,label)			\
>> +do {									\
>> +	char *__ucu_dst = (_dst);					\
>> +	const char __user *__ucu_src = (_src);				\
>> +	size_t __ucu_len = (_len);					\
>> +	unsafe_get_loop(__ucu_dst, __ucu_src, __ucu_len, u64, label);	\
>> +	unsafe_get_loop(__ucu_dst, __ucu_src, __ucu_len, u32, label);	\
>> +	unsafe_get_loop(__ucu_dst, __ucu_src, __ucu_len, u16, label);	\
>> +	unsafe_get_loop(__ucu_dst, __ucu_src, __ucu_len, u8, label);	\
>>   } while (0)
>>   
>>   #ifdef CONFIG_CC_HAS_ASM_GOTO_OUTPUT
>> -- 
>> 2.49.0
>>



From xen-devel-bounces@lists.xenproject.org Mon Apr 27 18:52:47 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 27 Apr 2026 18:52:47 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1295227.1571920 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wHR4V-0001ud-Hh; Mon, 27 Apr 2026 18:52:43 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1295227.1571920; Mon, 27 Apr 2026 18:52: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 1wHR4V-0001tn-CQ; Mon, 27 Apr 2026 18:52:43 +0000
Received: by outflank-mailman (input) for mailman id 1295227;
 Mon, 27 Apr 2026 18:39:38 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <ynorov@nvidia.com>) id 1wHQrq-0007u0-Ny
 for xen-devel@lists.xenproject.org; Mon, 27 Apr 2026 18:39:38 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wHQrn-00DtTK-QO
 for xen-devel@lists.xenproject.org; Mon, 27 Apr 2026 20:39:37 +0200
Received: from [10.42.69.7] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <ynorov@nvidia.com>)
 id 69efad64-bab6-0a2a0a5309dd-0a2a450784e4-2
 for <xen-devel@lists.xenproject.org>; Mon, 27 Apr 2026 20:39:36 +0200
Received: from [40.107.209.49]
 (helo=PH8PR06CU001.outbound.protection.outlook.com)
 by tlsNG-ef75cf.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.1)
 (envelope-from <ynorov@nvidia.com>)
 id 69efad66-229c-0a2a45070019-286bd131fc52-3
 for <xen-devel@lists.xenproject.org>; Mon, 27 Apr 2026 20:39:36 +0200
Received: from CY8PR12MB8300.namprd12.prod.outlook.com (2603:10b6:930:7d::16)
 by CH3PR12MB8969.namprd12.prod.outlook.com (2603:10b6:610:17c::12)
 with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9870.15; Mon, 27 Apr
 2026 18:39:19 +0000
Received: from CY8PR12MB8300.namprd12.prod.outlook.com
 ([fe80::ce75:8187:3ac3:c5de]) by CY8PR12MB8300.namprd12.prod.outlook.com
 ([fe80::ce75:8187:3ac3:c5de%3]) with mapi id 15.20.9870.013; Mon, 27 Apr 2026
 18: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=temperror header.s=selector2 header.d=Nvidia.com header.i="@Nvidia.com"
ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none;
 b=IQeGa+YdNTuEb823qdZS8Hpotu2r72E0T7L133DkAjYdxm4sXHNsSUmdDgfuLqSgZ8ptJqXAaawtnWfzbuYE9JgTht/7aoE/UBY4fb8CsN7gCBIZfgKE1at/fpNpM0xSdAZJWuaUqRa0tqhI+N/yx9xph7PK0K68mzfAl3ULUBoKMqt7kO8SmQqIRPQp/EyHUjaf8pVm2IKhXkERYsuE6sazi1OyFGe8w6Tpyc067R/wsyQcV3mHt7zG29uYi1UdlBEBwV7zkb5+etoOikaMn5emW16FR/V0uWFWi+xABha/3wJBSOsptBb5XuUEJ0gI46UsoZZATZeItdPD4X+E7w==
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com;
 s=arcselector10001;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1;
 bh=nALNUxvPaXzFesZYqSMaFrytkX4CgELDa/JWTp7Lw8s=;
 b=px9mAWIgpW1g8A++4bB0b0HuBTVzWQKUHx38Lv15RAJgY6RPeHYUnILh/TwEOgn2886PJ4HV1v36kbLLG0HxUFAomMviDfWTHNqC74F0NXfW2B6flkUGEtIYX1KuG62cISJfxDrgdMABrDWp6xVA2MUygcqCtHSOnaMZ5ZNilmoI++yqNmdF0OaD0k2KfXGmE6cSPLaiwtfXftefCRmJeENOcw80UlNkg4EMTulJcftI1iU27D4XyjUiX2sDWu2PtYSLmYIgPWNxczRp1XfiNZwvXibbYm5a4muPrwHvEBOL77eyyAZhWYd43uPx0Y5scO9gl7o17mc1PxH3v/Hq8g==
ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass
 smtp.mailfrom=nvidia.com; dmarc=pass action=none header.from=nvidia.com;
 dkim=pass header.d=nvidia.com; arc=none
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=Nvidia.com;
 s=selector2;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck;
 bh=nALNUxvPaXzFesZYqSMaFrytkX4CgELDa/JWTp7Lw8s=;
 b=pmvWhp/oxEcxQMryFRvqYtTB0A/GaOLun2mURAQK9jJXjqt4Nrc84ZfAfdVzaosEdXMWAP59oi4+UbMy4mec1KbzWHAyoF57I8DflvmrAbfhIb57bYv5qY2FGaPKUQk1zJRQQp9CqnyFj5VocFwyiXwUgS9FNTnrrFLeiZOJ1G9JrF4fAHR8lxFNj5/FwsIq3FU1ajVbQb2H+3//9zc7t+U20kMXMalri61t8NRsJ5k3/mDo4BdG+GEoyoHOcMDJdBMl8UX3LCr93JIqZbyQOPZZ1D/mW+4NjIfkYIV4DzD/8KPPzEEOg0Q59M3wKfLfO1wJ1sZJFQP38+wbciAclw==
Authentication-Results: dkim=none (message not signed)
 header.d=none;dmarc=none action=none header.from=nvidia.com;
Date: Mon, 27 Apr 2026 14:39:16 -0400
From: Yury Norov <ynorov@nvidia.com>
To: "Christophe Leroy (CS GROUP)" <chleroy@kernel.org>
Cc: Andrew Morton <akpm@linux-foundation.org>,
	Linus Torvalds <torvalds@linux-foundation.org>,
	David Laight <david.laight.linux@gmail.com>,
	Thomas Gleixner <tglx@linutronix.de>, linux-alpha@vger.kernel.org,
	Yury Norov <yury.norov@gmail.com>, linux-kernel@vger.kernel.org,
	linux-snps-arc@lists.infradead.org,
	linux-arm-kernel@lists.infradead.org, linux-mips@vger.kernel.org,
	linuxppc-dev@lists.ozlabs.org, kvm@vger.kernel.org,
	linux-riscv@lists.infradead.org, linux-s390@vger.kernel.org,
	sparclinux@vger.kernel.org, linux-um@lists.infradead.org,
	dmaengine@vger.kernel.org, linux-efi@vger.kernel.org,
	linux-fsi@lists.ozlabs.org, amd-gfx@lists.freedesktop.org,
	dri-devel@lists.freedesktop.org, intel-gfx@lists.freedesktop.org,
	linux-wpan@vger.kernel.org, netdev@vger.kernel.org,
	linux-wireless@vger.kernel.org, linux-spi@vger.kernel.org,
	linux-media@vger.kernel.org, linux-staging@lists.linux.dev,
	linux-serial@vger.kernel.org, linux-usb@vger.kernel.org,
	xen-devel@lists.xenproject.org, linux-fsdevel@vger.kernel.org,
	ocfs2-devel@lists.linux.dev, bpf@vger.kernel.org,
	kasan-dev@googlegroups.com, linux-mm@kvack.org,
	linux-x25@vger.kernel.org, rust-for-linux@vger.kernel.org,
	linux-sound@vger.kernel.org, sound-open-firmware@alsa-project.org,
	linux-csky@vger.kernel.org, linux-hexagon@vger.kernel.org,
	loongarch@lists.linux.dev, linux-m68k@lists.linux-m68k.org,
	linux-openrisc@vger.kernel.org, linux-parisc@vger.kernel.org,
	linux-sh@vger.kernel.org, linux-arch@vger.kernel.org
Subject: Re: [RFC PATCH v1 2/9] uaccess: Convert INLINE_COPY_{TO/FROM}_USER
 to kconfig and reduce ifdefery
Message-ID: <ae-tVFVfx72oCC_i@yury>
References: <cover.1777306795.git.chleroy@kernel.org>
 <9fe875d2f55af59c12708336c571a46038528678.1777306795.git.chleroy@kernel.org>
Content-Type: text/plain; charset=us-ascii
Content-Disposition: inline
In-Reply-To: <9fe875d2f55af59c12708336c571a46038528678.1777306795.git.chleroy@kernel.org>
X-ClientProxiedBy: BN9PR03CA0924.namprd03.prod.outlook.com
 (2603:10b6:408:107::29) To CY8PR12MB8300.namprd12.prod.outlook.com
 (2603:10b6:930:7d::16)
MIME-Version: 1.0
X-MS-PublicTrafficType: Email
X-MS-TrafficTypeDiagnostic: CY8PR12MB8300:EE_|CH3PR12MB8969:EE_
X-MS-Office365-Filtering-Correlation-Id: 88d3e4e6-a43d-4919-49fd-08dea48c4adf
X-MS-Exchange-SenderADCheck: 1
X-MS-Exchange-AntiSpam-Relay: 0
X-Microsoft-Antispam:
	BCL:0;ARA:13230040|10070799003|366016|376014|7416014|1800799024|56012099003|18002099003|22082099003;
X-Microsoft-Antispam-Message-Info:
	TPoVweG6k+dJJz5MfIFVzAwybwz2jm9fSNM7cxd69vHJE9UR7v6gWyNzsADjvW7ykt1GxFh4Loi1ek62Aro4GaYSpAgmWTn2FafAKuzv9brpXCmKrPkRpx9DEAPIV+O5dQy3egB7SEzayZhdD/hWFuNZI6/aSgi9lHWX7gRMsSsQ+hETpWZ33SUUr8PWk26gfuJDFv6mOEW2uC2BXHmIXUBpyDzOLTJkWEZLidp+7/nea6eckeX0OWVi4bEZfR9vET0pIew0s/JD7Zz/RgAl3L1OS3LR+WDk0Cj+9xRSjoZt6hvaQHTWsroBoiVTErBG9cZcE6iDBPvkBn6JALg+xzh67RQUZnSxe3dpsNnBDx7CyfIbDUoxU3lAu9QNZYDT1pjKtmsR0xUxypUJz8heZAAejUX+cI5zyhEOMCfbZhYDfC8lL5HRKEb55UhgnG1W7/6v/FhxkMwqKMlyWokoOjOY4UTekvoZ2YoBlTz/0SexmXJCV8GlzzJCCy3Y1wJ/gnGl1oiAmGAyfo29/0sdy3H4BAYwxQB+IiP82ASQGpLESNwitwXe5+qlNSYOiiNPhvXQr7YPxg9TQ20Ipo3dS/oLszmjrr6IMeWdSIzAycLxAjM4ybcGKoHCvx/iHvz1ya1/Lu6sN7VNJ7G92kgR4XUfztSnUa/+T4Ty1oGleBPJ/1/eGU/xx0C11jRZy6aMFQ1qLzVFXPf+Rw3f5XbXFGlI7ibkCm1ybi3SLvQHJsk=
X-Forefront-Antispam-Report:
	CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:CY8PR12MB8300.namprd12.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(10070799003)(366016)(376014)(7416014)(1800799024)(56012099003)(18002099003)(22082099003);DIR:OUT;SFP:1101;
X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1
X-MS-Exchange-AntiSpam-MessageData-0:
	=?us-ascii?Q?oib4bKcV8LA5vdjLqJ8bgcxtg+HiGQmptbpLOggOnOXMP8WzMNQrzTBLxW0t?=
 =?us-ascii?Q?J/O13Po8omZAsmm/pQpy/oqttV579odYMQrIVxXSjgf18STek1XRrKGwVmp0?=
 =?us-ascii?Q?l0BU1ufe1EiXFQOU6+6botm2sdTbVj9guzWn35tmDPDQr3Dwwmyjq5n/e4XI?=
 =?us-ascii?Q?SzRjxH/T3DI21r6vl4cCl334Ew2ij5/yQJC8A/DRNX+V7pyzPYuZovSr9F/H?=
 =?us-ascii?Q?Wgm4eMo8ZKAXBaCC+JcutRhN7eAH9v+cW52Q3ahFRH6xBK3C4/Z3i735rmIV?=
 =?us-ascii?Q?aMfpxHZ0SFW7fKav66AdZnuwM6sLZ9JgRxdV6lUM7BH/+pQ+3Pt5OuxuIF7P?=
 =?us-ascii?Q?wOEzXGgLg/FCQyv3W40kHRzWP2soqwyli3M0yrSc+NSjlNU55HajGFi1JvaI?=
 =?us-ascii?Q?tiNl9ri9lNxc+qE7KdAVPFL/2e+CEWg2vZahotUnAp3114m5sQG/4rVIg4gm?=
 =?us-ascii?Q?gd9zXeVaEsINZnTiz1qVCTLSKFcxLzulAejw8jMwtJRbeGBzK4ZC1e7VOCW+?=
 =?us-ascii?Q?aKVYJaES/nOjEprimIme29LeOa01vmBbY6+qz+yCseVYOQCq9CdDX7e1deoV?=
 =?us-ascii?Q?zaTnta1O/6L4nX1080PXzmu9mTtYtJNQO3DF9ovWHiONsmGP4U11bu49laOs?=
 =?us-ascii?Q?B0UU9IxLtWutiJxYBVD0KN4xfooNicHXXZR6LrmeOgPpcSsKDeGO2BnYG9lv?=
 =?us-ascii?Q?jdgN60ENdKBvmSOFTzCRkCByFYt+/x7RaSBTKsrsbJl8Enat/5Q9rpxaSuYv?=
 =?us-ascii?Q?Hk0QJmiBMLq/XaaCVVftv/lOLZiG1rfq9bJc6AGkJ7Be2P6481HfBvkVoSKm?=
 =?us-ascii?Q?7dS46V0SCDnMF6O9L5WMOGcQF3/JmPJwDC3bbG0KXyXraugzFpO2I2A/zirX?=
 =?us-ascii?Q?a/CdkcxQ4G6IILYhs8aeRubhtiJ4TjMT/T5Mn38f6As5actrgh5OSaby7k/P?=
 =?us-ascii?Q?p/eP1WrTDycIQ7kQbNn0vPkAk/h7ELW35FbH3Phz+HVj/qsyPVuI3ZrMXUag?=
 =?us-ascii?Q?WAN4DeGhJIVi4hPoLtGwda6uakBNXByYqWFG6Y8WSZFrAuFMwEgvc3vSyFyl?=
 =?us-ascii?Q?Dx5n3nRrxw1RgZUiiAKDP0rwsC7WGhhl7rCLYH8tGf3cooY4z46us5fwXFjC?=
 =?us-ascii?Q?wNTDl7f7oWOaDilXo0Jux13wM3eh0BtH51CgLCN9tDrJnzsW7ZyZvcKQk5Tn?=
 =?us-ascii?Q?O9ixfPU/YHVSwPfjb9gBof+EiT69zyPNYsZE4X2O8CyU4Z8XVVbkKhgMngy9?=
 =?us-ascii?Q?YRDPa867pPjQhJc3j8j98MgOVgWGheyih5q5W+m9AMvdBEneu+a9dnByQyMn?=
 =?us-ascii?Q?qCLgefyIDgxtIR+PcNMkMkPhjugjUNVEanta6lIV/gHJ2JE334rR3ZB3QcoQ?=
 =?us-ascii?Q?NbJNKCyplpSmz2mdkoBN9xHWSzQA2d2/nRHmtmEYPxzVHY+pAEBbGSLUGA+G?=
 =?us-ascii?Q?n7hhnzbzDtnl+NVWD79E8VDdTdq6sg4VE3PrKKvMdORAmzEkarJh1RDPehzr?=
 =?us-ascii?Q?rf0jUwl/4QGQHSZRpxkK/lDw7l5CdWKgWv1KnfHZnVpP43iLu8DuyVVHQL2R?=
 =?us-ascii?Q?VCkeADDpChtUpYBLJdlINE5FPPK7QdiOkkbRoLE8VBbhAFo5vAXH2E7YlciW?=
 =?us-ascii?Q?k0gtUjR84c84anx2yV2+7D9n2SuoEUaYGM1OOv9cl/uolZtt2Je3yiYv7HTI?=
 =?us-ascii?Q?yD9W0nKiIOg27gfW0ZUuL7Zq68OzdAmeaqD7+UqqyPO6Vm6rjH2beLlolKD3?=
 =?us-ascii?Q?NnU9q5OrFzP7EEzyxKROJwYEahtrjRNUQfGufTekFC1cKWXYO/DQ?=
X-OriginatorOrg: Nvidia.com
X-MS-Exchange-CrossTenant-Network-Message-Id: 88d3e4e6-a43d-4919-49fd-08dea48c4adf
X-MS-Exchange-CrossTenant-AuthSource: CY8PR12MB8300.namprd12.prod.outlook.com
X-MS-Exchange-CrossTenant-AuthAs: Internal
X-MS-Exchange-CrossTenant-OriginalArrivalTime: 27 Apr 2026 18:39:19.3919
 (UTC)
X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted
X-MS-Exchange-CrossTenant-Id: 43083d15-7273-40c1-b7db-39efd9ccc17a
X-MS-Exchange-CrossTenant-MailboxType: HOSTED
X-MS-Exchange-CrossTenant-UserPrincipalName: 1EMi8W1U4wKLqFUR+2jNWxP3McH9TdZjJFX+Py1zekodl7uM/ruq8Dm5SoHnnrACMPwMaK2iGgbUgpHPN2cF6A==
X-MS-Exchange-Transport-CrossTenantHeadersStamped: CH3PR12MB8969
X-purgate-ID: tlsNG-ef75cf/1777315176-2B77AC48-2551BCDE/0/0
X-purgate-type: clean
X-purgate-size: 1048

On Mon, Apr 27, 2026 at 07:13:43PM +0200, Christophe Leroy (CS GROUP) wrote:
> Among the 21 architectures supported by the kernel, 16 define both
> INLINE_COPY_TO_USER and INLINE_COPY_FROM_USER while the 5 other ones
> don't define any of the two.
> 
> To simplify and reduce risk of mistakes, convert them to a single
> kconfig item named CONFIG_ARCH_WANTS_NOINLINE_COPY which will be

We've got a special word for it: outline. Can you name it
CONFIG_OUTLINE_USERCOPY, or similar?

> selected by the 5 architectures that don't want inlined copy.
> 
> To minimise complication in a later patch, also remove
> ifdefery and replace it with IS_ENABLED().
> 
> Signed-off-by: Christophe Leroy (CS GROUP) <chleroy@kernel.org>

Andrew has taken my consolidation patch for INLINE_COPY_USER:

https://lore.kernel.org/all/20260427085814.7ca0b134603b8d5813e23396@linux-foundation.org/

Please base your series on top of it.

I'm not sure this patch is relevant to the goal of your series. Maybe
send it separately?

Thanks,
Yury


From xen-devel-bounces@lists.xenproject.org Mon Apr 27 18:52:47 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 27 Apr 2026 18:52:47 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1295216.1571915 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wHR4V-0001pM-B2; Mon, 27 Apr 2026 18:52:43 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1295216.1571915; Mon, 27 Apr 2026 18:52: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 1wHR4V-0001or-3E; Mon, 27 Apr 2026 18:52:43 +0000
Received: by outflank-mailman (input) for mailman id 1295216;
 Mon, 27 Apr 2026 18:07:31 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <34aXvaQkKCUIepmgiv2lpksskpi.gsq1ir-hizippmwxw.1irtvsnigx.svk@flex--aliceryhl.bounces.google.com>)
 id 1wHQMl-0002nM-D0
 for xen-devel@lists.xenproject.org; Mon, 27 Apr 2026 18:07:31 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wHQMk-002GxW-MF
 for xen-devel@lists.xenproject.org; Mon, 27 Apr 2026 20:07:30 +0200
Received: from [10.42.69.9] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1) (envelope-from
 <34aXvaQkKCUIepmgiv2lpksskpi.gsq1ir-hizippmwxw.1irtvsnigx.svk@flex--aliceryhl.bounces.google.com>)
 id 69efa5ca-e002-0a2a0a5209dd-0a2a4509ed56-28
 for <xen-devel@lists.xenproject.org>; Mon, 27 Apr 2026 20:07:30 +0200
Received: from [209.85.221.73] (helo=mail-wr1-f73.google.com)
 by tlsNG-bad1c0.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.1)
 (envelope-from
 <34aXvaQkKCUIepmgiv2lpksskpi.gsq1ir-hizippmwxw.1irtvsnigx.svk@flex--aliceryhl.bounces.google.com>)
 id 69efa5e2-2497-0a2a45090019-d155dd49a51e-3
 for <xen-devel@lists.xenproject.org>; Mon, 27 Apr 2026 20:07:30 +0200
Received: by mail-wr1-f73.google.com with SMTP id
 ffacd0b85a97d-43d780757eeso6990924f8f.1
 for <xen-devel@lists.xenproject.org>; Mon, 27 Apr 2026 11:07:30 -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=20251104 header.d=google.com header.i="@google.com" header.h="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=20251104; t=1777313250; x=1777918050; darn=lists.xenproject.org;
        h=cc:to:from:subject:message-id:references:mime-version:in-reply-to
         :date:from:to:cc:subject:date:message-id:reply-to;
        bh=HxkgeF4LNZGOlYkWj+Rbzgew6yzkspsu2lszfChr6II=;
        b=DOJZE4ctVpYAiQRmiqUjE6WW11G1fzlbUXXMmyl0mSxviR6bNlMX92qY/L4t4C93LB
         56MZm5l2WOEyBGBY1H0yIDrzm7qydRYJrstl6O5Z5iToSD1XZhhv2ZkZ5qb2ace08MlM
         O/tNIFB+427z9yYp1y2dLUvKU71EiCiDQgv7y8HEUPc1cRcGjkGO6qN3syrjMgZe+Z+k
         JOB4yq7O/T/jNcNXzi5WFw69mO0eQTmlR1pLnCx0gz+e2nOHprXEozdIs/3JtJJI/tGx
         Sb5v/dqO8yQ3Ao8QoLKwwgHnL4BZt2gnHABMJjQbRcZ1VV+G6vJIwFrFu0W5e2+yt/QP
         sbWQ==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20251104; t=1777313250; x=1777918050;
        h=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;
        bh=HxkgeF4LNZGOlYkWj+Rbzgew6yzkspsu2lszfChr6II=;
        b=oaTvjxvWxwrWzFha2mfTNzzoADmN3/RWeWTwkbp0BngjsSWxDPIvseSBQlBigwyXdQ
         gKA1+1FFnxjb6JLZ7Ttvl2EYylVG5ytvWoIpuVb9vOJ4np8PJMfgkdKjGspaUJ6feNXm
         sxMN5roZaCple7nii93/u6lccAd7Rj0Oi7eI2CeyTLok2dAop7t8hk3/yuI7oMvWVQsS
         Z64QjqbTTNGRBLZwH3pQ7Y/VedGTPoFIzq9U7EG/YEUTjcmTh4gJAIrMn4MxrpH3dU4o
         O5+4HoUadiwrqboBGyb61FJHcN4cN5zObxLH9dNBLAaFxNeOuCPgbZ5uNyBTUGeouwYK
         E3hQ==
X-Forwarded-Encrypted: i=1; AFNElJ/SNMSGVWiiGQ5grUhDaNd5WhiMt0oLwsio/0YKH8Wp8TW2y1STwMLlR+IGvwZ+mxKSuPWSijpVWRE=@lists.xenproject.org
X-Gm-Message-State: AOJu0Ywi9uZ4eR68CwNxyyO5JtYX5N39VNopBiOt2Rz8J0GYWvkgLdGT
	vSAeshMgIs2a7a1CbVzRS/3OL6bRxP3dpLjMXMmiaz88H1QqM+mNQaXnTk8rHFOawedIGOBbJbI
	w5wnD17QMkEroy77Vfg==
X-Received: from wrmd3.prod.google.com ([2002:adf:e883:0:b0:43d:7940:a11b])
 (user=aliceryhl job=prod-delivery.src-stubby-dispatcher) by
 2002:a05:6000:41c7:b0:43d:799c:b2cb with SMTP id ffacd0b85a97d-44636a393e7mr256856f8f.24.1777313249648;
 Mon, 27 Apr 2026 11:07:29 -0700 (PDT)
Date: Mon, 27 Apr 2026 18:07:28 +0000
In-Reply-To: <289b424e243ba2c4139ea04009cf8b9c448a87ff.1777306795.git.chleroy@kernel.org>
Mime-Version: 1.0
References: <cover.1777306795.git.chleroy@kernel.org> <289b424e243ba2c4139ea04009cf8b9c448a87ff.1777306795.git.chleroy@kernel.org>
Message-ID: <ae-l4FGDPLwBuDXM@google.com>
Subject: Re: [RFC PATCH v1 5/9] uaccess: Switch to copy_{to/from}_user_partial()
 when relevant
From: Alice Ryhl <aliceryhl@google.com>
To: "Christophe Leroy (CS GROUP)" <chleroy@kernel.org>
Cc: Yury Norov <ynorov@nvidia.com>, Andrew Morton <akpm@linux-foundation.org>, 
	Linus Torvalds <torvalds@linux-foundation.org>, David Laight <david.laight.linux@gmail.com>, 
	Thomas Gleixner <tglx@linutronix.de>, linux-alpha@vger.kernel.org, 
	linux-kernel@vger.kernel.org, linux-snps-arc@lists.infradead.org, 
	linux-arm-kernel@lists.infradead.org, linux-mips@vger.kernel.org, 
	linuxppc-dev@lists.ozlabs.org, kvm@vger.kernel.org, 
	linux-riscv@lists.infradead.org, linux-s390@vger.kernel.org, 
	sparclinux@vger.kernel.org, linux-um@lists.infradead.org, 
	dmaengine@vger.kernel.org, linux-efi@vger.kernel.org, 
	linux-fsi@lists.ozlabs.org, amd-gfx@lists.freedesktop.org, 
	dri-devel@lists.freedesktop.org, intel-gfx@lists.freedesktop.org, 
	linux-wpan@vger.kernel.org, netdev@vger.kernel.org, 
	linux-wireless@vger.kernel.org, linux-spi@vger.kernel.org, 
	linux-media@vger.kernel.org, linux-staging@lists.linux.dev, 
	linux-serial@vger.kernel.org, linux-usb@vger.kernel.org, 
	xen-devel@lists.xenproject.org, linux-fsdevel@vger.kernel.org, 
	ocfs2-devel@lists.linux.dev, bpf@vger.kernel.org, kasan-dev@googlegroups.com, 
	linux-mm@kvack.org, linux-x25@vger.kernel.org, rust-for-linux@vger.kernel.org, 
	linux-sound@vger.kernel.org, sound-open-firmware@alsa-project.org, 
	linux-csky@vger.kernel.org, linux-hexagon@vger.kernel.org, 
	loongarch@lists.linux.dev, linux-m68k@lists.linux-m68k.org, 
	linux-openrisc@vger.kernel.org, linux-parisc@vger.kernel.org, 
	linux-sh@vger.kernel.org, linux-arch@vger.kernel.org
Content-Type: text/plain; charset="utf-8"
X-purgate-ID: tlsNG-bad1c0/1777313250-414B1A53-90F3E03D/0/0
X-purgate-type: clean
X-purgate-size: 871

On Mon, Apr 27, 2026 at 07:13:46PM +0200, Christophe Leroy (CS GROUP) wrote:
> diff --git a/rust/helpers/uaccess.c b/rust/helpers/uaccess.c
> index 01de4fbbcc84..710e07cd60ae 100644
> --- a/rust/helpers/uaccess.c
> +++ b/rust/helpers/uaccess.c
> @@ -5,13 +5,13 @@
>  __rust_helper unsigned long
>  rust_helper_copy_from_user(void *to, const void __user *from, unsigned long n)
>  {
> -	return copy_from_user(to, from, n);
> +	return copy_from_user_partial(to, from, n);
>  }
>  
>  __rust_helper unsigned long
>  rust_helper_copy_to_user(void __user *to, const void *from, unsigned long n)
>  {
> -	return copy_to_user(to, from, n);
> +	return copy_to_user_partial(to, from, n);
>  }

No Rust code uses the return value for anything other than comparing it
with zero, so you can keep these as copy_[from|to]_user() without
issues.

Thanks, Alice


From xen-devel-bounces@lists.xenproject.org Mon Apr 27 18:52:47 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 27 Apr 2026 18:52:47 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1295214.1571908 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wHR4U-0001mJ-W6; Mon, 27 Apr 2026 18:52:42 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1295214.1571908; Mon, 27 Apr 2026 18:52: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 1wHR4U-0001mC-TS; Mon, 27 Apr 2026 18:52:42 +0000
Received: by outflank-mailman (input) for mailman id 1295214;
 Mon, 27 Apr 2026 17:59:12 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <ynorov@nvidia.com>) id 1wHQEh-0001HJ-Vz
 for xen-devel@lists.xenproject.org; Mon, 27 Apr 2026 17:59:12 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wHQEg-00GhMm-UA
 for xen-devel@lists.xenproject.org; Mon, 27 Apr 2026 19:59:10 +0200
Received: from [10.42.69.9] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <ynorov@nvidia.com>)
 id 69efa3e4-e002-0a2a0a5209dd-0a2a4509c82a-10
 for <xen-devel@lists.xenproject.org>; Mon, 27 Apr 2026 19:59:10 +0200
Received: from [52.101.43.68]
 (helo=SJ2PR03CU001.outbound.protection.outlook.com)
 by tlsNG-bad1c0.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.1)
 (envelope-from <ynorov@nvidia.com>)
 id 69efa3ea-2497-0a2a45090019-34652b44deca-3
 for <xen-devel@lists.xenproject.org>; Mon, 27 Apr 2026 19:59:09 +0200
Received: from CY8PR12MB8300.namprd12.prod.outlook.com (2603:10b6:930:7d::16)
 by SA0PR12MB4352.namprd12.prod.outlook.com (2603:10b6:806:9c::9) with
 Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9870.16; Mon, 27 Apr
 2026 17:58:53 +0000
Received: from CY8PR12MB8300.namprd12.prod.outlook.com
 ([fe80::ce75:8187:3ac3:c5de]) by CY8PR12MB8300.namprd12.prod.outlook.com
 ([fe80::ce75:8187:3ac3:c5de%3]) with mapi id 15.20.9870.013; Mon, 27 Apr 2026
 17:58: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=temperror header.s=selector2 header.d=Nvidia.com header.i="@Nvidia.com"
ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none;
 b=dwpVDJgRLpkyPrfWdsCpP94nHFQqYhYYfzZrq3/Y3eNMNV9kiDiO/lbPQcnh84Kc9KV6mYkk8nn970vbv0+7s6iPEYVW6K4EoChbQ41Qt789Udh9qXYG0iRgkAlDfrPUTQ8sayrAf1ja/JDhQMouPOkZWD58nKWYqpFBMo1DDNj8wVNgDK9FxRdlDaJopLZdzHGxZYNJ5taZ4f+3AlBWDxckohAjQSiNvLpxdNeatx21GsEOk2kuIxck61/13uzdWjKAIWRN7lHpHYgB1JwAWYdhnI0JhIPLSMLkKBOcW0uKNe5jsqRdVec4b90SQh3bBTkUz0ka/PlhmT5JsiSnTg==
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com;
 s=arcselector10001;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1;
 bh=YWBdJXFvUsRNS535pCc24v4leweSht+XdLI4YB0XzRQ=;
 b=JzUtnzYfifHT4anVN/U1LZ+ey7uTRcx8Nn6Nm2hS9ao6k8XZlQLiaLdpmpmADTsoF0ln9yrZ43mTgzp40gS4qmCP3SHZse2kmq2eYIeYuMuHwoWEH5Vv7fhlfZ2f/diNwlwlNxlMKsTb0izAMGGMQ4cYn6SIIE/MJoDjMtlx4eVbTb6wUFNjAz0H8mGu6ee9kYZLwb1h4NdHsUxdFPnysIwTjLgK6AvD73khRL2k8fi7iymz8mICE66X711dcKdxGAaSE87cWJD8y89JkEkcX+zpl2DCijx6ZDalEAkq61Vdd/L+W8dfRfgTksTcDbvv+E+khdr+3nyDPvxgL3L9HA==
ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass
 smtp.mailfrom=nvidia.com; dmarc=pass action=none header.from=nvidia.com;
 dkim=pass header.d=nvidia.com; arc=none
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=Nvidia.com;
 s=selector2;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck;
 bh=YWBdJXFvUsRNS535pCc24v4leweSht+XdLI4YB0XzRQ=;
 b=JEzvcYXQdwVjYZQlnStgbJQRfUGE245OkUv62d/erL7f0QOnr7fp+plL1zfa5mv2O11r5j+JLE5qQdINthQPR+Bj7wYWw46AWrQu/eYz6ED1n8xbwCAyvlDxh9XEzqZC2g1/3KWQVSH/DH18jJwgAfYkttpt/Blmd/pUHyEDc3Wkd3edhlrvX1h1qaZ6ZPmQk/87myHHQ3TrQ1ak0Xvkilcg5V0KT50UAZqYfZ39xcshyA39b5FsO98OY/S/YtJ/myHG6I+ftEFEH6NVP/B7k+6+4RVku7Lrcmp3zsQ+ArtGrvl5bXoyxfgJj2OT6m5rwYJbHAOe8gpGdj72kjww1Q==
Authentication-Results: dkim=none (message not signed)
 header.d=none;dmarc=none action=none header.from=nvidia.com;
Date: Mon, 27 Apr 2026 13:58:51 -0400
From: Yury Norov <ynorov@nvidia.com>
To: "Christophe Leroy (CS GROUP)" <chleroy@kernel.org>
Cc: Andrew Morton <akpm@linux-foundation.org>,
	Linus Torvalds <torvalds@linux-foundation.org>,
	David Laight <david.laight.linux@gmail.com>,
	Thomas Gleixner <tglx@linutronix.de>, linux-alpha@vger.kernel.org,
	linux-kernel@vger.kernel.org, linux-snps-arc@lists.infradead.org,
	linux-arm-kernel@lists.infradead.org, linux-mips@vger.kernel.org,
	linuxppc-dev@lists.ozlabs.org, kvm@vger.kernel.org,
	linux-riscv@lists.infradead.org, linux-s390@vger.kernel.org,
	sparclinux@vger.kernel.org, linux-um@lists.infradead.org,
	dmaengine@vger.kernel.org, linux-efi@vger.kernel.org,
	linux-fsi@lists.ozlabs.org, amd-gfx@lists.freedesktop.org,
	dri-devel@lists.freedesktop.org, intel-gfx@lists.freedesktop.org,
	linux-wpan@vger.kernel.org, netdev@vger.kernel.org,
	linux-wireless@vger.kernel.org, linux-spi@vger.kernel.org,
	linux-media@vger.kernel.org, linux-staging@lists.linux.dev,
	linux-serial@vger.kernel.org, linux-usb@vger.kernel.org,
	xen-devel@lists.xenproject.org, linux-fsdevel@vger.kernel.org,
	ocfs2-devel@lists.linux.dev, bpf@vger.kernel.org,
	kasan-dev@googlegroups.com, linux-mm@kvack.org,
	linux-x25@vger.kernel.org, rust-for-linux@vger.kernel.org,
	linux-sound@vger.kernel.org, sound-open-firmware@alsa-project.org,
	linux-csky@vger.kernel.org, linux-hexagon@vger.kernel.org,
	loongarch@lists.linux.dev, linux-m68k@lists.linux-m68k.org,
	linux-openrisc@vger.kernel.org, linux-parisc@vger.kernel.org,
	linux-sh@vger.kernel.org, linux-arch@vger.kernel.org
Subject: Re: [RFC PATCH v1 7/9] x86: Add unsafe_copy_from_user()
Message-ID: <ae-j2_QirCySZD02@yury>
References: <cover.1777306795.git.chleroy@kernel.org>
 <0ee46bb228d97163fbdc14f2a7c52b93d8bc34ce.1777306795.git.chleroy@kernel.org>
Content-Type: text/plain; charset=us-ascii
Content-Disposition: inline
In-Reply-To: <0ee46bb228d97163fbdc14f2a7c52b93d8bc34ce.1777306795.git.chleroy@kernel.org>
X-ClientProxiedBy: BN1PR13CA0008.namprd13.prod.outlook.com
 (2603:10b6:408:e2::13) To CY8PR12MB8300.namprd12.prod.outlook.com
 (2603:10b6:930:7d::16)
MIME-Version: 1.0
X-MS-PublicTrafficType: Email
X-MS-TrafficTypeDiagnostic: CY8PR12MB8300:EE_|SA0PR12MB4352:EE_
X-MS-Office365-Filtering-Correlation-Id: 33128524-511f-440c-0040-08dea486a4e3
X-MS-Exchange-SenderADCheck: 1
X-MS-Exchange-AntiSpam-Relay: 0
X-Microsoft-Antispam:
	BCL:0;ARA:13230040|10070799003|366016|376014|7416014|1800799024|56012099003|18002099003|22082099003;
X-Microsoft-Antispam-Message-Info:
	T80DamO5jzLhtBsxTULWy0efzaMbF8i7bT0PZKZ+UW4Z1vXusNNCyeFtPNKLbujbu9HADo2BygF39wi6lx74qp3NIinqoXF6o8xZWMAAFsZmucFOM22V5xO7kTuoG3Q6DbZQuR99ud23XQ2FkmrxQgMHmfI3XdFsqYAVjCS9aGVDF45G53+B/x+14PhezRjA9hqQvcw9EvJb6nHARdhsgHJSbcoZorjI9T48oVUEponu+eLNKghANZW7qOCu576IfZ6NRYzsY8ql1Bj8uCnhHA2nhVrKxbbZHG6LptctXV/l6KubZ/U3ZJxrPqPY1X92d625k4fagqEvx268olGcNZDaxDxTtIunEves9hFv+KACk+0uW+ma5OsqtlX5HthzXN6Acbz5tPRPmIKZ/YCyosbcqxLc7ZwX6TI/oKUfq/0tyKExxJEp/Vfc/ZG4cPWp456yUxuQQ7c0zO0EIJ+8b2gQDonWZCvn2KJzNH3N0drPOUzCQcDDQjndG2yh9Ke573Rkt//8VoZT4MTwoNB6z6b1QOagadBkLNDtxDt0AE1XfaIibN7XpAHe5nsEIn2aXs/8ZEHWz0Zv0D5+n5iwRxATzlfDoLqw+IUuN8nm7pwCMHkXF52Sms8QQtJ2rJZUXeJqLYfMQUF/D3X8mn4B7tCVxc1mKoVLz9/1oBAf2bseKRBX0rfB9ZeVX7GBdP+qZAYwkxdtBveQtq9fZ/UIGHDRO8YYxr5lavOVhUA40rc=
X-Forefront-Antispam-Report:
	CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:CY8PR12MB8300.namprd12.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(10070799003)(366016)(376014)(7416014)(1800799024)(56012099003)(18002099003)(22082099003);DIR:OUT;SFP:1101;
X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1
X-MS-Exchange-AntiSpam-MessageData-0:
	=?us-ascii?Q?6ev31P6fGlLQLOmFhG9wf+2ZENF2CJrasImnLdTMkk4B07wVpIqdqcEhUwVr?=
 =?us-ascii?Q?VcuKpfWBww+Qglw6NKPvrbqw/iKodwZS6hoQ2ezn6gKQJTXowcVzIMKKmPVI?=
 =?us-ascii?Q?CaGe2PzzTfbrd+1/kBuQd5inX41eLfMXGSMB4El+/BGeY7LidWaO2U6MXIZl?=
 =?us-ascii?Q?To5KMHCCmaxaSW+0abx+uHxslGaDNGAxlD0ajEnVCyj2PyGw8gfavgZvUBeC?=
 =?us-ascii?Q?31Pn2vGdNJPTEao0o8nkBbqzRysmZBZFRsyFAwtcHiF+LMJewEDkGWcf3C7D?=
 =?us-ascii?Q?MhvHUO7rY2T4Gp8yOxYlhdkCQq0m4ykawDCJw9P3w79tbrFqeU7DKZcc6Svj?=
 =?us-ascii?Q?gpUdDiMP1u+wbi6ktqsa2/SBsCawL8yd85/gdX8JeS4P5U//2zVMdqlbS5oF?=
 =?us-ascii?Q?Om8kn23qHMWd1W0xp+L9zqhhURuKBI3C8K6/P0P2OiLTdsZ7lPLULvDBkdZf?=
 =?us-ascii?Q?UKjydMyY/3pcrF3sadi8xEKK6PbOoyabovH4OGdbUvrwD7GG4qRTd8pK59oC?=
 =?us-ascii?Q?snIKpVz1xKnwCa6xY5VnFP5/u/JjDPLADrD/WslKg8YXRFtCzAtBrdImcj0f?=
 =?us-ascii?Q?8yOAh4lyWUDPVX2WM00ySuZhGhvO+v6NJ73vz9XlsUfOsWyYZ9DOEzjUfhbH?=
 =?us-ascii?Q?0YLtM7C7LxhLfanXFKSW+D7acdbl8uANIv2lLYjkqPUxgpfNe8f+7W2LB5Nn?=
 =?us-ascii?Q?7Np0MclwQhDcY1GLCNhmF+qQmAOMVCLRhyHjLhLWkRHgj+alwIysbQ3EuYLN?=
 =?us-ascii?Q?5yHcsNNjsFo0wDyhRUVx5wyCMlW+Z4NGoPr32ydxiktuCQaON6kbvoanfM01?=
 =?us-ascii?Q?VM4/fS2+speM2tcePSAnjiQa5qjOFuYZ0VtZfeGTBIZ1yXD2cHpN1ixZN0Rz?=
 =?us-ascii?Q?L/dQY0op7e/9Yk5F3A4lFGTivTaixUSEIjTezh3qI+wT/tBYEl0Z0XCO2hjU?=
 =?us-ascii?Q?sFOU7EJ1CIL6HbyGijpDH3Yp4I8rMW9VuNbKDzbyWnaJJg9tVdo0/XIJrdAh?=
 =?us-ascii?Q?vVKIJZb+31gwlMVE1kXLTM4rt1jmj4rcA1rNCuw4fD++YKU0KqxirVrsn6kC?=
 =?us-ascii?Q?lZa0X05s4hYIlo7g4DALYttelKqcNX1HEGU6vO71rQrVfydGtRIQzA8hZ8rQ?=
 =?us-ascii?Q?O80VU2eqMYB7eYpBItWytqLFV33JZ/cuulFCjhdnG06CQcNI6/4ovyhT3Aa8?=
 =?us-ascii?Q?PiZXBZphvtTKhhJqQ1c7RRKZs8niebQgxVT+NqLMFlyPhkta2YjjpBXgNIIx?=
 =?us-ascii?Q?h+iPSpkL/BZ7G18/IWgE5T5t9GEq5s5xWwSmey7027/BRYe03neS8L78GvQZ?=
 =?us-ascii?Q?5ceRI/ymV7A6xiSGKp4h0GdJvHPIvbvLvAXTNPJXPyEy/lkYzUg06m/F5Ppx?=
 =?us-ascii?Q?Ucqpyqpi7uPkJEjc3424leqnNg3d1TwAm//hlnXAadNRP0K+njbmTw4CpTe2?=
 =?us-ascii?Q?4HHWlSZ9YpBEw+Ohv14Uf9RwjiFvVAghctOlWmh5sz2AhDjQMGMs8VSWcPgV?=
 =?us-ascii?Q?CT54kkzGd7BsoQ2aPoLVEhjPxQJKnRuZKDOQB6HL77e6jo+Karv0u6QI8scU?=
 =?us-ascii?Q?/P+zWIUoY7Vp26Mnav/FMyG/vDm64Qhe7JrRNaXxdZN6cKMY0RccPxeEvM6K?=
 =?us-ascii?Q?cokd+q0bbXdS3sEK+pM8MrC/A2+EernBjELOWvLW6UNcdosIRiZXx3jxfYAW?=
 =?us-ascii?Q?NoTKA/lHF00/AFzSuUQZeA/Bt64WCRihJQrbIN0bhLrfQCWWaLbXoiNjdnxt?=
 =?us-ascii?Q?OgQB96s+EfSA5RhJu/4bwnEHg5Lb6TZfXmPjZN7/WMw6zB/yunPn?=
X-OriginatorOrg: Nvidia.com
X-MS-Exchange-CrossTenant-Network-Message-Id: 33128524-511f-440c-0040-08dea486a4e3
X-MS-Exchange-CrossTenant-AuthSource: CY8PR12MB8300.namprd12.prod.outlook.com
X-MS-Exchange-CrossTenant-AuthAs: Internal
X-MS-Exchange-CrossTenant-OriginalArrivalTime: 27 Apr 2026 17:58:53.4408
 (UTC)
X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted
X-MS-Exchange-CrossTenant-Id: 43083d15-7273-40c1-b7db-39efd9ccc17a
X-MS-Exchange-CrossTenant-MailboxType: HOSTED
X-MS-Exchange-CrossTenant-UserPrincipalName: DFLDrWxkcKDSdWjcRZ0FWTXyKov5/udW2ySQZAiU/0h1WJYCpRdFgW8eHZBY8qsOSQ9+hnLtwBfn4bjMnIR9OQ==
X-MS-Exchange-Transport-CrossTenantHeadersStamped: SA0PR12MB4352
X-purgate-ID: tlsNG-bad1c0/1777312750-484A9A53-2BCE8B9B/0/0
X-purgate-type: clean
X-purgate-size: 3028

On Mon, Apr 27, 2026 at 07:13:48PM +0200, Christophe Leroy (CS GROUP) wrote:
> At the time being, x86 and arm64 are missing unsafe_copy_from_user().

No, they don't. They (should) rely on a generic implementation from
linux/uaccess.h, like every other arch, except for  PPC and RISCV.

But they #define arch_unsafe_get_user, and the unsafe_copy_from_user()
becomes undefined conditionally on that.

So please, fix that bug instead of introducing another arch flavor.
We'd always choose generic version, unless there's strong evidence
that arch one is better.  


Thanks,
Yury
 
> Add it.
> 
> Signed-off-by: Christophe Leroy (CS GROUP) <chleroy@kernel.org>
> ---
>  arch/x86/include/asm/uaccess.h | 29 ++++++++++++++++++++++++-----
>  1 file changed, 24 insertions(+), 5 deletions(-)
> 
> diff --git a/arch/x86/include/asm/uaccess.h b/arch/x86/include/asm/uaccess.h
> index 3a0dd3c2b233..10c458ffa399 100644
> --- a/arch/x86/include/asm/uaccess.h
> +++ b/arch/x86/include/asm/uaccess.h
> @@ -598,7 +598,7 @@ _label:									\
>   * We want the unsafe accessors to always be inlined and use
>   * the error labels - thus the macro games.
>   */
> -#define unsafe_copy_loop(dst, src, len, type, label)				\
> +#define unsafe_put_loop(dst, src, len, type, label)				\
>  	while (len >= sizeof(type)) {						\
>  		unsafe_put_user(*(type *)(src),(type __user *)(dst),label);	\
>  		dst += sizeof(type);						\
> @@ -611,10 +611,29 @@ do {									\
>  	char __user *__ucu_dst = (_dst);				\
>  	const char *__ucu_src = (_src);					\
>  	size_t __ucu_len = (_len);					\
> -	unsafe_copy_loop(__ucu_dst, __ucu_src, __ucu_len, u64, label);	\
> -	unsafe_copy_loop(__ucu_dst, __ucu_src, __ucu_len, u32, label);	\
> -	unsafe_copy_loop(__ucu_dst, __ucu_src, __ucu_len, u16, label);	\
> -	unsafe_copy_loop(__ucu_dst, __ucu_src, __ucu_len, u8, label);	\
> +	unsafe_put_loop(__ucu_dst, __ucu_src, __ucu_len, u64, label);	\
> +	unsafe_put_loop(__ucu_dst, __ucu_src, __ucu_len, u32, label);	\
> +	unsafe_put_loop(__ucu_dst, __ucu_src, __ucu_len, u16, label);	\
> +	unsafe_put_loop(__ucu_dst, __ucu_src, __ucu_len, u8, label);	\
> +} while (0)
> +
> +#define unsafe_get_loop(dst, src, len, type, label)				\
> +	while (len >= sizeof(type)) {						\
> +		unsafe_get_user(*(type __user *)(src),(type *)(dst),label);	\
> +		dst += sizeof(type);						\
> +		src += sizeof(type);						\
> +		len -= sizeof(type);						\
> +	}
> +
> +#define unsafe_copy_from_user(_dst,_src,_len,label)			\
> +do {									\
> +	char *__ucu_dst = (_dst);					\
> +	const char __user *__ucu_src = (_src);				\
> +	size_t __ucu_len = (_len);					\
> +	unsafe_get_loop(__ucu_dst, __ucu_src, __ucu_len, u64, label);	\
> +	unsafe_get_loop(__ucu_dst, __ucu_src, __ucu_len, u32, label);	\
> +	unsafe_get_loop(__ucu_dst, __ucu_src, __ucu_len, u16, label);	\
> +	unsafe_get_loop(__ucu_dst, __ucu_src, __ucu_len, u8, label);	\
>  } while (0)
>  
>  #ifdef CONFIG_CC_HAS_ASM_GOTO_OUTPUT
> -- 
> 2.49.0
> 


From xen-devel-bounces@lists.xenproject.org Mon Apr 27 19:02:34 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 27 Apr 2026 19:02:34 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1295253.1571936 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wHRDp-0004yz-BS; Mon, 27 Apr 2026 19:02:21 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1295253.1571936; Mon, 27 Apr 2026 19:02: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 1wHRDp-0004ys-8o; Mon, 27 Apr 2026 19:02:21 +0000
Received: by outflank-mailman (input) for mailman id 1295253;
 Mon, 27 Apr 2026 19:02:20 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <deller@gmx.de>) id 1wHRDo-0004ym-GV
 for xen-devel@lists.xenproject.org; Mon, 27 Apr 2026 19:02:20 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wHRDn-00GeOw-P9
 for xen-devel@lists.xenproject.org; Mon, 27 Apr 2026 21:02:19 +0200
Received: from [10.42.69.8] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <deller@gmx.de>)
 id 69efb2a3-2eae-0a2a0a5409dd-0a2a4508901e-26
 for <xen-devel@lists.xenproject.org>; Mon, 27 Apr 2026 21:02:19 +0200
Received: from [212.227.15.18] (helo=mout.gmx.net)
 by tlsNG-c1860d.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.1)
 (envelope-from <deller@gmx.de>)
 id 69efb2bb-63b5-0a2a45080019-d4e30f12bf23-3
 for <xen-devel@lists.xenproject.org>; Mon, 27 Apr 2026 21:02:19 +0200
Received: from client.hidden.invalid by mail.gmx.net (mrgmx004
 [212.227.17.190]) with ESMTPSA (Nemesis) id 1MMXUD-1vxzDK309n-00RQkF; Mon, 27
 Apr 2026 21:01:21 +0200
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
Authentication-Results: eu.smtp.expurgate.cloud; dkim=pass header.s=s31663417 header.d=gmx.de header.i="deller@gmx.de" header.h="X-UI-Sender-Class:Message-ID:Date:MIME-Version:Subject:To:Cc:References:From:In-Reply-To:Content-Type:Content-Transfer-Encoding"
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmx.de;
	s=s31663417; t=1777316482; x=1777921282; i=deller@gmx.de;
	bh=Zt1qoBiZgQM1t1btlI0mC79addHEa7yO7OT0uaav6JI=;
	h=X-UI-Sender-Class:Message-ID:Date:MIME-Version:Subject:To:Cc:
	 References:From:In-Reply-To:Content-Type:
	 Content-Transfer-Encoding:cc:content-transfer-encoding:
	 content-type:date:from:message-id:mime-version:reply-to:subject:
	 to;
	b=pvJKKcq2bvRAhsxjqAkSqPCTHz+c9uXutnBUNfweFC5C6v6Q3EgeOKe/MJanf1Ba
	 sAehF4t5/xUIpLJRVOl0YNFM0UY2s1ZtmOUE+OxOPa2dZ4N+GaoaNXUJVeKbqUObc
	 zWTti5uW04mbR8LXlYdWXdzH0idgP2vWBzyha8fXbLatDwnhl5ulQbpKW/B/LIbfq
	 m9Sk/0zz5Hq5YiFn5LKjsXeE3bvcDSyAbbuH306N8cXcn/B+mqRHa0DLJIfFBgcYb
	 SPUzS1OgVVxqH7BapIrTRFMwx269SyWfjiAxp4nbh+xegJyY+50MN5oyqjtATSzbv
	 OtP1eu9OBKhkgrJwaA==
X-UI-Sender-Class: 724b4f7f-cbec-4199-ad4e-598c01a50d3a
Message-ID: <844ee1e8-e7e2-40ef-a2b1-b7a6b6a44cb2@gmx.de>
Date: Mon, 27 Apr 2026 21:01:18 +0200
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [RFC PATCH v1 0/9] uaccess: Convert small fixed size
 copy_{to/from}_user() to scoped user access
To: "Christophe Leroy (CS GROUP)" <chleroy@kernel.org>,
 Yury Norov <ynorov@nvidia.com>, Andrew Morton <akpm@linux-foundation.org>,
 Linus Torvalds <torvalds@linux-foundation.org>,
 David Laight <david.laight.linux@gmail.com>,
 Thomas Gleixner <tglx@linutronix.de>
Cc: linux-alpha@vger.kernel.org, linux-kernel@vger.kernel.org,
 linux-snps-arc@lists.infradead.org, linux-arm-kernel@lists.infradead.org,
 linux-mips@vger.kernel.org, linuxppc-dev@lists.ozlabs.org,
 kvm@vger.kernel.org, linux-riscv@lists.infradead.org,
 linux-s390@vger.kernel.org, sparclinux@vger.kernel.org,
 linux-um@lists.infradead.org, dmaengine@vger.kernel.org,
 linux-efi@vger.kernel.org, linux-fsi@lists.ozlabs.org,
 amd-gfx@lists.freedesktop.org, dri-devel@lists.freedesktop.org,
 intel-gfx@lists.freedesktop.org, linux-wpan@vger.kernel.org,
 netdev@vger.kernel.org, linux-wireless@vger.kernel.org,
 linux-spi@vger.kernel.org, linux-media@vger.kernel.org,
 linux-staging@lists.linux.dev, linux-serial@vger.kernel.org,
 linux-usb@vger.kernel.org, xen-devel@lists.xenproject.org,
 linux-fsdevel@vger.kernel.org, ocfs2-devel@lists.linux.dev,
 bpf@vger.kernel.org, kasan-dev@googlegroups.com, linux-mm@kvack.org,
 linux-x25@vger.kernel.org, rust-for-linux@vger.kernel.org,
 linux-sound@vger.kernel.org, sound-open-firmware@alsa-project.org,
 linux-csky@vger.kernel.org, linux-hexagon@vger.kernel.org,
 loongarch@lists.linux.dev, linux-m68k@lists.linux-m68k.org,
 linux-openrisc@vger.kernel.org, linux-parisc@vger.kernel.org,
 linux-sh@vger.kernel.org, linux-arch@vger.kernel.org
References: <cover.1777306795.git.chleroy@kernel.org>
Content-Language: en-US
From: Helge Deller <deller@gmx.de>
Autocrypt: addr=deller@gmx.de; keydata=
 xsFNBF3Ia3MBEAD3nmWzMgQByYAWnb9cNqspnkb2GLVKzhoH2QD4eRpyDLA/3smlClbeKkWT
 HLnjgkbPFDmcmCz5V0Wv1mKYRClAHPCIBIJgyICqqUZo2qGmKstUx3pFAiztlXBANpRECgwJ
 r+8w6mkccOM9GhoPU0vMaD/UVJcJQzvrxVHO8EHS36aUkjKd6cOpdVbCt3qx8cEhCmaFEO6u
 CL+k5AZQoABbFQEBocZE1/lSYzaHkcHrjn4cQjc3CffXnUVYwlo8EYOtAHgMDC39s9a7S90L
 69l6G73lYBD/Br5lnDPlG6dKfGFZZpQ1h8/x+Qz366Ojfq9MuuRJg7ZQpe6foiOtqwKym/zV
 dVvSdOOc5sHSpfwu5+BVAAyBd6hw4NddlAQUjHSRs3zJ9OfrEx2d3mIfXZ7+pMhZ7qX0Axlq
 Lq+B5cfLpzkPAgKn11tfXFxP+hcPHIts0bnDz4EEp+HraW+oRCH2m57Y9zhcJTOJaLw4YpTY
 GRUlF076vZ2Hz/xMEvIJddRGId7UXZgH9a32NDf+BUjWEZvFt1wFSW1r7zb7oGCwZMy2LI/G
 aHQv/N0NeFMd28z+deyxd0k1CGefHJuJcOJDVtcE1rGQ43aDhWSpXvXKDj42vFD2We6uIo9D
 1VNre2+uAxFzqqf026H6cH8hin9Vnx7p3uq3Dka/Y/qmRFnKVQARAQABzRxIZWxnZSBEZWxs
 ZXIgPGRlbGxlckBnbXguZGU+wsGRBBMBCAA7AhsDBQsJCAcCBhUKCQgLAgQWAgMBAh4BAheA
 FiEERUSCKCzZENvvPSX4Pl89BKeiRgMFAl3J1zsCGQEACgkQPl89BKeiRgNK7xAAg6kJTPje
 uBm9PJTUxXaoaLJFXbYdSPfXhqX/BI9Xi2VzhwC2nSmizdFbeobQBTtRIz5LPhjk95t11q0s
 uP5htzNISPpwxiYZGKrNnXfcPlziI2bUtlz4ke34cLK6MIl1kbS0/kJBxhiXyvyTWk2JmkMi
 REjR84lCMAoJd1OM9XGFOg94BT5aLlEKFcld9qj7B4UFpma8RbRUpUWdo0omAEgrnhaKJwV8
 qt0ULaF/kyP5qbI8iA2PAvIjq73dA4LNKdMFPG7Rw8yITQ1Vi0DlDgDT2RLvKxEQC0o3C6O4
 iQq7qamsThLK0JSDRdLDnq6Phv+Yahd7sDMYuk3gIdoyczRkXzncWAYq7XTWl7nZYBVXG1D8
 gkdclsnHzEKpTQIzn/rGyZshsjL4pxVUIpw/vdfx8oNRLKj7iduf11g2kFP71e9v2PP94ik3
 Xi9oszP+fP770J0B8QM8w745BrcQm41SsILjArK+5mMHrYhM4ZFN7aipK3UXDNs3vjN+t0zi
 qErzlrxXtsX4J6nqjs/mF9frVkpv7OTAzj7pjFHv0Bu8pRm4AyW6Y5/H6jOup6nkJdP/AFDu
 5ImdlA0jhr3iLk9s9WnjBUHyMYu+HD7qR3yhX6uWxg2oB2FWVMRLXbPEt2hRGq09rVQS7DBy
 dbZgPwou7pD8MTfQhGmDJFKm2jvOwU0EXchrcwEQAOsDQjdtPeaRt8EP2pc8tG+g9eiiX9Sh
 rX87SLSeKF6uHpEJ3VbhafIU6A7hy7RcIJnQz0hEUdXjH774B8YD3JKnAtfAyuIU2/rOGa/v
 UN4BY6U6TVIOv9piVQByBthGQh4YHhePSKtPzK9Pv/6rd8H3IWnJK/dXiUDQllkedrENXrZp
 eLUjhyp94ooo9XqRl44YqlsrSUh+BzW7wqwfmu26UjmAzIZYVCPCq5IjD96QrhLf6naY6En3
 ++tqCAWPkqKvWfRdXPOz4GK08uhcBp3jZHTVkcbo5qahVpv8Y8mzOvSIAxnIjb+cklVxjyY9
 dVlrhfKiK5L+zA2fWUreVBqLs1SjfHm5OGuQ2qqzVcMYJGH/uisJn22VXB1c48yYyGv2HUN5
 lC1JHQUV9734I5cczA2Gfo27nTHy3zANj4hy+s/q1adzvn7hMokU7OehwKrNXafFfwWVK3OG
 1dSjWtgIv5KJi1XZk5TV6JlPZSqj4D8pUwIx3KSp0cD7xTEZATRfc47Yc+cyKcXG034tNEAc
 xZNTR1kMi9njdxc1wzM9T6pspTtA0vuD3ee94Dg+nDrH1As24uwfFLguiILPzpl0kLaPYYgB
 wumlL2nGcB6RVRRFMiAS5uOTEk+sJ/tRiQwO3K8vmaECaNJRfJC7weH+jww1Dzo0f1TP6rUa
 fTBRABEBAAHCwXYEGAEIACAWIQRFRIIoLNkQ2+89Jfg+Xz0Ep6JGAwUCXchrcwIbDAAKCRA+
 Xz0Ep6JGAxtdEAC54NQMBwjUNqBNCMsh6WrwQwbg9tkJw718QHPw43gKFSxFIYzdBzD/YMPH
 l+2fFiefvmI4uNDjlyCITGSM+T6b8cA7YAKvZhzJyJSS7pRzsIKGjhk7zADL1+PJei9p9idy
 RbmFKo0dAL+ac0t/EZULHGPuIiavWLgwYLVoUEBwz86ZtEtVmDmEsj8ryWw75ZIarNDhV74s
 BdM2ffUJk3+vWe25BPcJiaZkTuFt+xt2CdbvpZv3IPrEkp9GAKof2hHdFCRKMtgxBo8Kao6p
 Ws/Vv68FusAi94ySuZT3fp1xGWWf5+1jX4ylC//w0Rj85QihTpA2MylORUNFvH0MRJx4mlFk
 XN6G+5jIIJhG46LUucQ28+VyEDNcGL3tarnkw8ngEhAbnvMJ2RTx8vGh7PssKaGzAUmNNZiG
 MB4mPKqvDZ02j1wp7vthQcOEg08z1+XHXb8ZZKST7yTVa5P89JymGE8CBGdQaAXnqYK3/yWf
 FwRDcGV6nxanxZGKEkSHHOm8jHwvQWvPP73pvuPBEPtKGLzbgd7OOcGZWtq2hNC6cRtsRdDx
 4TAGMCz4j238m+2mdbdhRh3iBnWT5yPFfnv/2IjFAk+sdix1Mrr+LIDF++kiekeq0yUpDdc4
 ExBy2xf6dd+tuFFBp3/VDN4U0UfG4QJ2fg19zE5Z8dS4jGIbLg==
In-Reply-To: <cover.1777306795.git.chleroy@kernel.org>
Content-Type: text/plain; charset=UTF-8; format=flowed
Content-Transfer-Encoding: quoted-printable
X-Provags-ID: V03:K1:1BVGzEnh9ud/z86J5vc3jwqhrUEQaFN9ezvONBNWk23lK0h66Lj
 0xrtgBmMIOPcBoDWmEQeS4PXCvzdwIxhn4Pzilub15kM3Feqk0H3eDb2tX/MG5xgU1O6fnx
 QeGvXu9BfFIEYVIV+dF2H3PKbCBnzALlwBp4AW5heloRv5iuM8nQW3/zjVECVWKsEM94tAo
 sS/Thsodt5emF3NO5Yt1A==
X-Spam-Flag: NO
UI-OutboundReport: notjunk:1;M01:P0:0TjjV61NXRM=;CbjUzEi6igRLCIXmnNBp946d8aL
 2JfGKP9XFIdL5ne8UM4MdhY42WW8ZlvrNBB6NvrvMHt+dn4MfbILZsT9U9bg9LDD+sflFAZlm
 fTgSeqqS3gJUczhu/ItyDVsdNl82DBPMuPNz9HdawhGX5Ok9hbEsLJFRsBU+tnErUJ75Xnlpj
 Tl9z1XJ+MkL25Iac0tIXxOB7U2xzVuJphWSg/Ob655r4BZ/JMVaJo5F9tZQp+ip2r3a/OPLYm
 MDw9bhQTUaiUlMbNUKTLJPP+rG10WdltkcH6vuJf15h2IDpRKsprSiahO6rxHbegJVl6+Hlhq
 wCMCRi16b3Oj1E3kSYA6Jtn6JUpNb392IBGW4ICgJZ//iYc3nEtQk7HQ3rcCdvInFX5zOIJ4B
 UYw8MdZ9r99X2P/NujnEPt2pQgD5YPcaFS4y2XOeXTxB++gYNNhNfeYJ9oSBGZnx2rBVvzxFZ
 rRjqZErgcBgDazd7Ud2oKeUsg6rscr4OyD2TW2RduL0RjG16COfSOYD2D/A8F8MwW1zGelD9Y
 yf2dEiECei0f5tDGNz6J1Eb23rpIwdNOY/sWIwW4/0yzVmtrzHcDBKCfjErUKrkz7ttsJ9Rl+
 84/2LSZYzH1Af4hP6MMoE4RnMy9w0RfijWrdljIDs78H7P7SIOhIkex+P0mZhONlMBqky7rVH
 txWQ8NeUtcCml1auNHy+HEvWx5bPB525/RlmclHnrZkEtBFTIOwBamW9+RPO5+GkUwUZxfWMJ
 H1YENBJ0HEcKD501KCwbs2DLdzsaNcYaGWB23tOnOfKnAGPuoldiry3eKc/6oxQ9R+ZwGNwc0
 ycVpIUFUspHjdUY/0NMk869mz593O9eu4grq+YaeVzkdbnb8Ay/XDfExW7QRaZLZMqis7thrZ
 0BbSoPK6lFEoWM/2segxpx+odom+1ezQpVzA4RUxtD8VQvzuDHJPHH4+kzoJHbXmITv9JH+40
 5kkDAAl3VvJzyGgZjK0vw4RKK5eT1lmVrJMzALf4h/zflrEry5lCjDU2uGYDHqXK5A0noteO/
 dCVr3JiJbEw+aF5ue7MHMxAKr9AsKsWsXsT96fxUDASjCWZxxc/OhG1KE6JH+AfdJxp5dDMYQ
 lB8sWi6Gng5dGS2hmMSYmmPK0Pu/mRj9eIhsMZCtH1o5nubhf3KZ4xjIAE885irQCJhKv+GpJ
 s7i9idbe5LedcOW8GWlk9Ael+77hNyV2eHMmywJkXOevEJ5Sks/roBeJR17qisDNps6DWfsFF
 AtJFC7HrdUcQ5tAkzEZ4rgLb/KKU1TeFxeAGMM4SVJ9a1RAdHZ/vq7PZPB9A4+VGjdDEZNsf+
 D7jGhUy8X1PkUg3hF1HHV6b+phtiV0d3Uu2vzehqTRHxmTS6QBO4ZdMeZ0CobdsWIazenX6lE
 Xaa88ZlUkdlNKmgFojWmifmk8xFbvpJacEjPASmzEf8pN2FkUDn41XqKLGZXPcFUC/8ii7R1X
 cKKG+ojCTFuPtN0jPSTSVpel8bFhddIzgyDwFV1508HCw6N+K6k23yN0uoz1Tz4LoxNMSq6dn
 WnYztvI9HV8r1DzTx+mX2vllthfTbtCTbDJEdUzagZdq03WchYZDvvhzszWPoQclDYmUEj1/N
 aDc19R+B+msE6XeHL24KmfTlt/mBeScXUkSS9JRgSSDoiGEGwRxKOHIbO/3V+vTNzoYso9IJ6
 BP+xDshQ82PzMRaSqtjyAx2PtwD5PhK1Wo/Ue+llXYajjB9enDZ79LpuOTv3fvAxbQyuC20HQ
 HpviMXcRbl3QxCWJd0CHKZDdeBPgvj60OHRqgfj6INhNDjY9slpaTacXthkTeHIUwYTZZP7OO
 IFmXxHpFxxCCPHN5hmG/A0UhmyRPsffBuRp5xgkP8MBf7v66OHGaVSZv7lrs1egfmG1viJ/h6
 pTeYZja/bCFfXHZwayBCV0bzugYAqeYvuNAFvDM6M82h2198kj45Aj995g6yT8r2bnG7mG86+
 /urdoQkxXzydLQ32SwElbClgkb4c1xJvP3uQxYDk/fhGe316iSUpL6iyBTr/w1+dAYyv4WJ66
 xzHKPNqOIT7iWjyEfFFM4I6tnTVbKhQVNz8Rnu8uoAgTYeTjbP8CmREZeZQDl36B1ArBleN8c
 YGb4umUt6Te02dDIThRVOF3BsnLDBsS653jGlYFvXMGQTT4Y7oZcsZz03wTvIvJON749b5Abl
 u0viC+XWcdnet/C86xjINTiEj7W1J3Qbr7xSpq9eFC9XUROVolPmMnLiTTg3ft//9l6uwzDI7
 BACjVwpUaTX60cAEvbKbLD0cUe9a7bWyaqgmvcIS8Y9EzkVmYJAaa5DN+4aF+x0d+6f7SSJ2Y
 F2JcQlZPjLEVahKkDoksYRsK7LT85vz9bjDU8p5d4oFkcfOh6rosfr1SAc9jfHCX/dXn0CbCF
 KYbzsi2PR3Lk2kDX6iQ6+Xc9YL1ucTp+TsRQemJKLIFsmhmQG9LNzYIkIigcfnIrkDRQadgDm
 Ll7dGqMmwmFfnCAdR5+sQ1p0UIdrSn9/+5Y7AsPeDYwTrsxOm8oAu8QvLzOWuGHbFZdZ+BpaT
 R5xJOKVzol+bPkYiMAoZ1PkpoUQh8xK+iWz5x4GY/dtFZW5GaadF8iVUtSvgqUzfBuIEvIpnW
 HVsqI/ie6AQ27lJZw/UNyK/bSN7IV4HDqt3L5zbggLEQ1DXYPBZ61PbK6fKXwP/gDQdZ1xfDR
 4OolX019R3HXGFB2kEBt501ak/t4WfRa28DvzTFIILh1TNWXmL6l+GExQIe+RVfND831qIIlX
 cBC6bd3RWW0AttqT781iIDjrl2V5LVaqDv2WxNludjijLPaB4Fu3EkORTVGn4F9AKnLKXf6pX
 84+n0PUOMhfS7QLg3IiRdNxK1RKfUDkQ195PyEVj4NsT/2JbIyUXiT8dzUaqXR+RP/PPtwQzF
 dn1a4ENM0Uu1cjuclGxKs9P9hp/aU0wAJkbu4dCCgHu1mrZ1HqQVNoh2eIirh5FgfJYjhQlEl
 vC4iGFcenwbkAgoeQQ8O/3N67dI8cyOwPJc4eiuMkOHaerO2A/QKXJ/HKjTA/lxfwGnd4DZ0o
 wocfthLhzg124UHvghae2b7/B+xzseTuTwRJKQvKT8lY3/gfZr3HRngKKYxruVyhUQzLM8XmN
 xzjSVBK4OUr/9cwZV2xdIk5lfVnJdckUhs31AZW6KIBF3kplN29WYAAvfLNGCJfiVrIID9xoC
 iaiX6XKD3JcsgPY9USTs6oVMtcVOfP73fEj9DHgMRoa5BHWgtXydhsRorhefa08gmEXKrNq3S
 Bhlf5CDC1phbrB5AjeIM5KqNEDeGdrLqX4B8US6WvWlGb07s3qMM1cXLGgOuDty4gJoZiNTK8
 xI63LSFFKCh1GOejlzya0mw6QGTUO+jNxqHeHFET7NvLVCAPCe+6Um+BSb49BcVBdqeySpTlu
 5XZ+aLIeOZlDz3QLObCHlE8aoB+3Cl8bjP+QpewhLI4wJ8RHrYHk/y38VZYZAu4zk/zhXb2o3
 l9XoV+0eFDjf2B91ZqIIE/9DNeJDw9NZwgoVHIH7z+S+ql6NjJobRVRQpe1k/21xecTcXUyh2
 XBYL6fkBc4lr5YRPh5uCub5b+oF7XLNVH55KT/vTLxseMgFtaF1Hs5u/5zsmBzeDMfq8aCq69
 ilEYVUV7hl5OA8j5IdfJlMqH0d8Qjp6sMxW+djcP/1b1/0XJBd77+wDDuv2PArgWGmxN2+jNb
 ngiHCi4FVOG3PUtqAgBgSZxaH46Pq2ZHaUkb5B1lSBxUUhhb5C8Nng5KcTgigWGJt6lemgESj
 KxEmsEdD9ns8hhtvzvTjIhDk8BWTMLxvztmggXGBdadwt/SKDdKACwh7wVkdy1RZk2Iq4f917
 Lyq5EYb3dekZqJ94hZ5rvquW2Dju7puAJUBMYnOxg6YXCrOIuHEXW2J7M3WpsjzUhOylJ/Xag
 DEVLkOaqDihh1VO/68+2bGtuACytpBnvHIvC8aTpYW6ZIz0S+zJQiqdo6wtQV6snCcrYtp6vf
 cqHvNqqpKimRVN0n6b18SxgbVyqiV7o7XcZM4r+7V2kF25Xehi/DJCERwg/u5aTgUU5C/2qt6
 /IoYEpiL80nb+br3/9pAKcJM2DnLteQHjsuCLpXpjgVn3risZnSKyuKbAA6X/0lKqmLmU1SEO
 UNfGRRxA06dxcubOgTBTcQy39/skG1wAyHsSZwv4nRdnVASXOFlKKKLf5xn0JK0pGymOL1bPS
 fq9d2GMtj9A16Xvp+lOJdrouKi2MjIaGr5wohxfIaDcNGM4oqY3oGcCZg1YNVOVgBPWpf+Suw
 FO3k8wXEFNJzetbCUHZA62ymvEkjElVDd32DpXhQay4oL2L9FPobPNvpwcLFL8tnLrprWJHHb
 B2FMWiWfBNbXVXwWKorn1b4tZ3Uei5rut0yQCFfKyT4rAvh2ogI3ijQysbyT0E43Bc4O3vpMy
 koVnUaonq7QdvYHp1fsi0gwCsE2B3gM+XeMYyueMg1e5bND6kND9AZ1lV/L4K4+v4M24Oao99
 JERohORYFH3QOD9Hg2lDXNcSDx5u1l8Lblafou1zTGfYzuAI3XvUG0lDzUv48eG/YnKe5w+wQ
 fUOjqYevpFsNu3kPaA+SIQ8NZzHXwWozBdfa6JK/kiVAv9H1ytWGJTBTMPUZZ21man/b8PXUR
 wAtANsp4qY+/5m8oZ3rZ1w/ackIkEOHwXBhlIW2gVNHp/5TLxwkBIhxjlLgTr2XlLFmPPfO0/
 03OdzSZv+QBprUzf8lCo8N1HN3gcyu06ZUvxkWyUcz4NMEcN7565uPFuHyMd/z+1fHwfgR++R
 5fIEAVLxp0DF9I4fMnfDScZQ/bMtKOapVZZLXYoRCylxZieup7x8zExCEpCaJG+CajITIPj6t
 0rB8biGvXoZ2iwCTXHsSGUeVBlphW2m7tZaB8smE442dLrLXJoFVL+StTPXblV64DFMl26mAU
 Ml+bTUNEVcXTLbP278HZq4r/HFxyxPMy21Gw2Nc44qC+NM6DtgPu1oYZuKLBwVNNOqSBZDrHF
 LEjppqAvdSuz15JQ1vIEA9UXusqQz4kagBaV/ykdJgH9l+zJ3Jzn9lP3VsWy7xEcZGR0EMRWQ
 cBdHYHH3338cWITiUTi83yzMKTSqZ+LDv+lY/6vsuhf/bbGThAKsxI2QWLEpGy8PFtXp/DfqB
 ZRkoHfNYESnKFTo0LuQtU32rB4iUBpeiZyiO1d4VBloPBAdTc+RFlm/mFDFG9tS1DemEL4PnH
 O+EoNpNLFyVQyYulVF5znimJEUFcxGcCld1wdAPzOdmgih3MCAZrfzSi0qY5YXYt379loAp/L
 MK8XEeVYxq2Mv+HzCtLkfbNyljblnsL9A5dV1OTAY6gMkhtO/PJrxIYKVN8xQ953UtO6EQ2Hm
 eNa9C3g7Frvgjg4CJMifpvRX3RM2amPq8vwyxx68zly1wNWrLKKALzDpG0b8bdTWqo3V6mByB
 ki4mjz668uHJw3FKMy/sfCj28B7xGU4epFYanIix9ArSUbW4W3Ss3bbgxtbT8zmfr2
X-purgate-ID: tlsNG-c1860d/1777316539-C3F7ADB1-BE51A611/0/0
X-purgate-type: clean
X-purgate-size: 8501

Hello Christophe,

On 4/27/26 19:13, Christophe Leroy (CS GROUP) wrote:
> A lot of copy_from_user() and copy_to_user() perform copies of small
> fixed size pieces of data between kernel and userspace, and don't
> care about partial copies.
>=20
> copy_from_user() and copy_to_user() are big functions optimised for
> copying large amount of data, with cache management, etc ...=20

They take care of much more: alignments, exception handling (e.g. if userp=
age
is read-only and kernel writes to it), various rules when to return faults
(e.g. sometime reading from page0 is allowed for other arches not), and
much more. I've seen so many strange things during the last few years,
and you would need to get it right if you want to "make small" versions
of those functions.

> This is often overkill for small copies that could just be inlined
> instead.

Isn't put_user() and get_user() for that ?
And if you inline you need to take care of faults as well, so indirectly
you will add more fault handlers (or fault pointers) to the generated code=
,
effectively making the kernel bigger.

> What makes things a bit more tricky is that those copy functions
> are designed to handle partial copies in case of page fault. But among
> the 6000 callers of those functions, only 2% really care about the
> quantity of no-copied data that those functions return. All other ones
> fails as soon as the returned value is not 0, returning -EACCESS.
>=20
> So first step in this series is to introduce variants called
> copy_from_user_partial() and copy_to_user_partial() which will be
> called by the 2% users that care about the partial copy, then the
> original copy_from_user() and copy_to_user() are changed to return
> -EFAULT when the copy fails.
>=20
> Then the second step is to implement copy of small fixed-size data
> with scoped user access instead of calling the arch specific heavy
> user copy functions.

I'm not against your idea or your patch, but I wonder if you
really gain much from it.
Have you done some size or speed comparisons ?

Helge

> Patch 5, can be split in different patches for each archicture or
> subsystem, but let's get a first feedback and agree on the principle.
>=20
> Christophe Leroy (CS GROUP) (9):
>    uaccess: Split check_zeroed_user() out of usercopy.c
>    uaccess: Convert INLINE_COPY_{TO/FROM}_USER to kconfig and reduce
>      ifdefery
>    x86/umip: Be stricter in fixup_umip_exception()
>    uaccess: Introduce copy_{to/from}_user_partial()
>    uaccess: Switch to copy_{to/from}_user_partial() when relevant
>    uaccess: Change copy_{to/from}_user to return -EFAULT
>    x86: Add unsafe_copy_from_user()
>    arm64: Add unsafe_copy_from_user()
>    uaccess: Convert small fixed size copy_{to/from}_user() to scoped use=
r
>      access
>=20
>   arch/alpha/Kconfig                            |   1 +
>   arch/alpha/kernel/osf_sys.c                   |   4 +-
>   arch/alpha/kernel/termios.c                   |   2 +-
>   arch/arc/include/asm/uaccess.h                |   3 -
>   arch/arc/kernel/disasm.c                      |   2 +-
>   arch/arm/include/asm/uaccess.h                |   2 -
>   arch/arm64/include/asm/gcs.h                  |   2 +-
>   arch/arm64/include/asm/uaccess.h              |  30 +++--
>   arch/arm64/kernel/signal32.c                  |   2 +-
>   arch/csky/Kconfig                             |   1 +
>   arch/hexagon/include/asm/uaccess.h            |   3 -
>   arch/loongarch/include/asm/uaccess.h          |   3 -
>   arch/m68k/include/asm/uaccess.h               |   3 -
>   arch/microblaze/include/asm/uaccess.h         |   2 -
>   arch/mips/include/asm/uaccess.h               |   3 -
>   arch/mips/kernel/rtlx.c                       |   8 +-
>   arch/mips/kernel/vpe.c                        |   2 +-
>   arch/nios2/include/asm/uaccess.h              |   2 -
>   arch/openrisc/include/asm/uaccess.h           |   2 -
>   arch/parisc/include/asm/uaccess.h             |   3 -
>   arch/powerpc/Kconfig                          |   1 +
>   arch/powerpc/kvm/book3s_64_mmu_hv.c           |   4 +-
>   arch/powerpc/kvm/book3s_64_mmu_radix.c        |   4 +-
>   arch/powerpc/kvm/book3s_hv.c                  |   2 +-
>   arch/riscv/Kconfig                            |   1 +
>   arch/riscv/kernel/signal.c                    |   2 +-
>   arch/s390/include/asm/idals.h                 |   8 +-
>   arch/s390/include/asm/uaccess.h               |   3 -
>   arch/sh/include/asm/uaccess.h                 |   2 -
>   arch/sparc/include/asm/uaccess_32.h           |   3 -
>   arch/sparc/include/asm/uaccess_64.h           |   2 -
>   arch/sparc/kernel/termios.c                   |   2 +-
>   arch/um/include/asm/uaccess.h                 |   3 -
>   arch/um/kernel/process.c                      |   2 +-
>   arch/x86/Kconfig                              |   1 +
>   arch/x86/include/asm/uaccess.h                |  29 ++++-
>   arch/x86/kernel/umip.c                        |   2 +-
>   arch/x86/lib/insn-eval.c                      |   2 +-
>   arch/x86/um/signal.c                          |   2 +-
>   arch/xtensa/include/asm/uaccess.h             |   2 -
>   drivers/android/binder_alloc.c                |   2 +-
>   drivers/comedi/comedi_fops.c                  |   4 +-
>   drivers/dma/idxd/cdev.c                       |   2 +-
>   drivers/firmware/efi/test/efi_test.c          |   2 +-
>   drivers/fsi/fsi-scom.c                        |   2 +-
>   .../amd/display/amdgpu_dm/amdgpu_dm_debugfs.c |   2 +-
>   drivers/gpu/drm/i915/gt/intel_sseu.c          |   4 +-
>   drivers/gpu/drm/i915/i915_gem.c               |   4 +-
>   drivers/hwtracing/intel_th/msu.c              |   2 +-
>   drivers/misc/ibmvmc.c                         |   2 +-
>   drivers/misc/vmw_vmci/vmci_host.c             |   2 +-
>   drivers/most/most_cdev.c                      |   2 +-
>   drivers/net/ieee802154/ca8210.c               |   4 +-
>   drivers/net/wireless/ath/wil6210/debugfs.c    |   2 +-
>   .../intel/iwlwifi/pcie/gen1_2/trans.c         |   2 +-
>   drivers/net/wireless/ti/wlcore/debugfs.c      |   2 +-
>   drivers/ps3/ps3-lpm.c                         |   2 +-
>   drivers/s390/crypto/zcrypt_api.h              |   4 +-
>   drivers/spi/spidev.c                          |   2 +-
>   .../staging/media/atomisp/pci/atomisp_cmd.c   |   8 +-
>   drivers/tty/tty_ioctl.c                       |  14 +--
>   drivers/tty/vt/vc_screen.c                    |   4 +-
>   drivers/usb/gadget/function/f_hid.c           |   4 +-
>   drivers/usb/gadget/function/f_printer.c       |   2 +-
>   drivers/vfio/vfio_iommu_type1.c               |   4 +-
>   drivers/xen/xenbus/xenbus_dev_frontend.c      |   2 +-
>   fs/namespace.c                                |   2 +-
>   fs/ocfs2/dlmfs/dlmfs.c                        |   2 +-
>   fs/proc/base.c                                |   4 +-
>   include/asm-generic/uaccess.h                 |   2 -
>   include/linux/bpfptr.h                        |   2 +-
>   include/linux/sockptr.h                       |   4 +-
>   include/linux/uaccess.h                       | 107 ++++++++++++++----
>   ipc/msg.c                                     |   8 +-
>   ipc/sem.c                                     |   8 +-
>   ipc/shm.c                                     |  18 +--
>   kernel/regset.c                               |   2 +-
>   kernel/sys.c                                  |   4 +-
>   lib/Kconfig                                   |   3 +
>   lib/Makefile                                  |   4 +-
>   lib/kfifo.c                                   |   8 +-
>   lib/{usercopy.c =3D> usercheck.c}               |  22 ----
>   lib/usercopy.c                                |  66 -----------
>   mm/kasan/kasan_test_c.c                       |   4 +-
>   mm/memory.c                                   |   2 +-
>   net/x25/af_x25.c                              |   2 +-
>   rust/helpers/uaccess.c                        |   6 +-
>   sound/pci/emu10k1/emufx.c                     |   4 +-
>   sound/pci/rme9652/hdsp.c                      |   6 +-
>   sound/soc/intel/avs/probes.c                  |   6 +-
>   sound/soc/sof/compress.c                      |  12 +-
>   sound/soc/sof/sof-client-probes.c             |   6 +-
>   92 files changed, 269 insertions(+), 288 deletions(-)
>   copy lib/{usercopy.c =3D> usercheck.c} (73%)
>=20



From xen-devel-bounces@lists.xenproject.org Mon Apr 27 19:09:58 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 27 Apr 2026 19:09:58 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1295263.1571944 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wHRL6-0006EC-2K; Mon, 27 Apr 2026 19:09:52 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1295263.1571944; Mon, 27 Apr 2026 19:09: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 1wHRL5-0006E5-Vs; Mon, 27 Apr 2026 19:09:51 +0000
Received: by outflank-mailman (input) for mailman id 1295263;
 Mon, 27 Apr 2026 19:09:51 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <torvalds@linuxfoundation.org>) id 1wHRL4-0006Dy-Vq
 for xen-devel@lists.xenproject.org; Mon, 27 Apr 2026 19:09:51 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wHRL2-00DxRH-NX
 for xen-devel@lists.xenproject.org; Mon, 27 Apr 2026 21:09:50 +0200
Received: from [10.42.69.9] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <torvalds@linuxfoundation.org>)
 id 69efb46e-e002-0a2a0a5209dd-0a2a4509b0a2-28
 for <xen-devel@lists.xenproject.org>; Mon, 27 Apr 2026 21:09:49 +0200
Received: from [209.85.208.176] (helo=mail-lj1-f176.google.com)
 by tlsNG-bad1c0.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.1)
 (envelope-from <torvalds@linuxfoundation.org>)
 id 69efb47c-2497-0a2a45090019-d155d0b0cc3d-3
 for <xen-devel@lists.xenproject.org>; Mon, 27 Apr 2026 21:09:49 +0200
Received: by mail-lj1-f176.google.com with SMTP id
 38308e7fff4ca-38e96a071c3so107836841fa.0
 for <xen-devel@lists.xenproject.org>; Mon, 27 Apr 2026 12:09:49 -0700 (PDT)
Received: from mail-lf1-f48.google.com (mail-lf1-f48.google.com.
 [209.85.167.48]) by smtp.gmail.com with ESMTPSA id
 38308e7fff4ca-3923f52ea49sm746051fa.24.2026.04.27.12.09.47
 for <xen-devel@lists.xenproject.org>
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Mon, 27 Apr 2026 12:09:47 -0700 (PDT)
Received: by mail-lf1-f48.google.com with SMTP id
 2adb3069b0e04-5a41099fa86so9252358e87.2
 for <xen-devel@lists.xenproject.org>; Mon, 27 Apr 2026 12:09:47 -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=google header.d=linux-foundation.org header.i="@linux-foundation.org" header.h="Cc:To:Subject:Message-ID:Date:From:In-Reply-To:References:MIME-Version"
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=linux-foundation.org; s=google; t=1777316988; x=1777921788; darn=lists.xenproject.org;
        h=cc:to:subject:message-id:date:from:in-reply-to:references
         :mime-version:from:to:cc:subject:date:message-id:reply-to;
        bh=eo95+vxRQveZjyTXx2nQjz3zXl5qvV2nK5Gunw4PJlE=;
        b=PxX/f2WBF8h4+G1fHD3l6aQ2F3Kn7cLffjmJ6sUIoJs7rMl/bsJwOjOw+EypFAVSZf
         aly8Un69LMc2/WfL0oNIb/zYSzG5DcUPmBtRnTdY48FAo27F8X1grfI0cYNdNJnFntTB
         Yx9lwdgHHeah6MBZv0tozYYykwy3hSa8oG0Po=
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20251104; t=1777316988; x=1777921788;
        h=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;
        bh=eo95+vxRQveZjyTXx2nQjz3zXl5qvV2nK5Gunw4PJlE=;
        b=Y2UXXfCdFaISaxhCUkJ+nNuZTjdBc8fV3qwDipHU3OSFil9sbkh+ardDxwO6TbDQ3j
         fYANGEOtTLwSBDWSAERqxuXdomXj/QRjB9WWGi9IhQnYKRrpjLNtBTIVZBAlsXL7WzKX
         dOm7KlpTCmJ09yzplz9k4pgHbEX6QEdQe6CqPmganeA58Srblp0sJIbDTh+tr30fKd9y
         Zaq4qw+8QFRwqTFoMbRB7E7DEFxDEGSYJ2S99IGT4vq5AXxEGbRWLJVCysrFVUHK2uaC
         3IUOVBQ0GBFRBI2BxMOPRr+rOHqWhuHIXbaxBckT/Bzqy+zcGdjiCYm8FByqlSJAT0++
         WRCg==
X-Forwarded-Encrypted: i=1; AFNElJ++EFUH+10cHX9qC++MvhSM4lNvoD9HkFbKOtSLLFwU6uT8uzBbb2atRdp6dCT5XY7M4ZJacCt15f4=@lists.xenproject.org
X-Gm-Message-State: AOJu0YzhsrK/QMC9UvQfDSroXHvQSzN/CuJbXKWbtkzo+KMhWhG30dxW
	fq19mE6n+uHn8BcpH8rkZ4wM7N1EAgfESnu7Ilis1o4tknbgRRxF4PzHGUGcfEI3UwuhZgvwVNt
	RHsKlxUP19Q==
X-Gm-Gg: AeBDiesQnhCx42xNwfxJuVWgP+geubvsA6inr37rr8q+QmuzaRT9hFB4cu2NNu5IyG/
	3yu7ebUOgJifSh4e7aXCBfXQZA8W9Hc5/9g48tObZe3VRQPGtdrk4Npg3rH+1gVDI89K2zQYYro
	4X49Afxn3xOim6NuqJU0q0NHZJyL6uTY6b/xqHQLzVvz3LLiG8wvnA3P7T5ziIspbGOXD/V7GPd
	B+LmQURfqI2hkqUVXl13lNHtQwcTSOdgWALUtaw854O5FH+DxsrduoDvRdN/iAM+AT5QUiPk8t6
	wZn9XZoi2NT0S+rZUFZmxKbjxJhLX1GxaRs/eA8dCPN4YDCC2037eHE94un1q7P7jQKZnYBvBxU
	hy/zYb2/Z6FVOM17ZbPzxLukwWZyj/PGsii5b9v7f4OZ2ubwTz9kSncA2AOTRCsQ7BY4EbyxnlR
	rv8pClgZ/5FU+XdqNXcf7lNlDoknOpuInUIJ9Eyd2zCTmdk3OB6xlWBBangk01e5p+y6Wpzwf5K
	JRCM3F1584=
X-Received: by 2002:a05:6512:3e05:b0:5a3:fc79:934 with SMTP id 2adb3069b0e04-5a74662a814mr31984e87.30.1777316988076;
        Mon, 27 Apr 2026 12:09:48 -0700 (PDT)
X-Forwarded-Encrypted: i=1; AFNElJ8NPsvz8QQkqW/e17SMSetiTbQPYiRboKuze0JPmCyF4O9iejTAV5DqGBXpiWVJGm/CaIRecYwOXAs=@lists.xenproject.org
X-Received: by 2002:a17:907:9495:b0:ba3:a8ef:3597 with SMTP id
 a640c23a62f3a-bb80443c92emr2812866b.25.1777316502372; Mon, 27 Apr 2026
 12:01:42 -0700 (PDT)
MIME-Version: 1.0
References: <cover.1777306795.git.chleroy@kernel.org> <289b424e243ba2c4139ea04009cf8b9c448a87ff.1777306795.git.chleroy@kernel.org>
In-Reply-To: <289b424e243ba2c4139ea04009cf8b9c448a87ff.1777306795.git.chleroy@kernel.org>
From: Linus Torvalds <torvalds@linux-foundation.org>
Date: Mon, 27 Apr 2026 12:01:23 -0700
X-Gmail-Original-Message-ID: <CAHk-=whC1DZojwdMB1=sJWG2=dsCdfyU8N6tDE1qx50HRZ-WJQ@mail.gmail.com>
X-Gm-Features: AVHnY4JOOuu1ghb35GF5M7sO3SAfkj4A7WtLiFNY579kWyh92WWRKfW5QE_KjRI
Message-ID: <CAHk-=whC1DZojwdMB1=sJWG2=dsCdfyU8N6tDE1qx50HRZ-WJQ@mail.gmail.com>
Subject: Re: [RFC PATCH v1 5/9] uaccess: Switch to copy_{to/from}_user_partial()
 when relevant
To: "Christophe Leroy (CS GROUP)" <chleroy@kernel.org>
Cc: Yury Norov <ynorov@nvidia.com>, Andrew Morton <akpm@linux-foundation.org>, 
	David Laight <david.laight.linux@gmail.com>, Thomas Gleixner <tglx@linutronix.de>, 
	linux-alpha@vger.kernel.org, linux-kernel@vger.kernel.org, 
	linux-snps-arc@lists.infradead.org, linux-arm-kernel@lists.infradead.org, 
	linux-mips@vger.kernel.org, linuxppc-dev@lists.ozlabs.org, 
	kvm@vger.kernel.org, linux-riscv@lists.infradead.org, 
	linux-s390@vger.kernel.org, sparclinux@vger.kernel.org, 
	linux-um@lists.infradead.org, dmaengine@vger.kernel.org, 
	linux-efi@vger.kernel.org, linux-fsi@lists.ozlabs.org, 
	amd-gfx@lists.freedesktop.org, dri-devel@lists.freedesktop.org, 
	intel-gfx@lists.freedesktop.org, linux-wpan@vger.kernel.org, 
	netdev@vger.kernel.org, linux-wireless@vger.kernel.org, 
	linux-spi@vger.kernel.org, linux-media@vger.kernel.org, 
	linux-staging@lists.linux.dev, linux-serial@vger.kernel.org, 
	linux-usb@vger.kernel.org, xen-devel@lists.xenproject.org, 
	linux-fsdevel@vger.kernel.org, ocfs2-devel@lists.linux.dev, 
	bpf@vger.kernel.org, kasan-dev@googlegroups.com, linux-mm@kvack.org, 
	linux-x25@vger.kernel.org, rust-for-linux@vger.kernel.org, 
	linux-sound@vger.kernel.org, sound-open-firmware@alsa-project.org, 
	linux-csky@vger.kernel.org, linux-hexagon@vger.kernel.org, 
	loongarch@lists.linux.dev, linux-m68k@lists.linux-m68k.org, 
	linux-openrisc@vger.kernel.org, linux-parisc@vger.kernel.org, 
	linux-sh@vger.kernel.org, linux-arch@vger.kernel.org
Content-Type: multipart/mixed; boundary="000000000000c765e2065075bee2"
X-purgate-ID: tlsNG-bad1c0/1777316989-42B70A53-89EDEDB8/0/0
X-purgate-type: clean
X-purgate-size: 10570

--000000000000c765e2065075bee2
Content-Type: text/plain; charset="UTF-8"

On Mon, 27 Apr 2026 at 10:18, Christophe Leroy (CS GROUP)
<chleroy@kernel.org> wrote:
>
> In a subsequent patch, copy_{to/from}_user() will be modified to
> return -EFAULT when copy fails.

Please don't do this.

This is a maintenance nightmare, and changes pretty much three decades
of semantics, and will cause *very* subtle backporting issues if
somebody happens to rely on the old / new behavior.

I understand the reasoning for the change, but I really don't think
the pain of creating yet another user copy interface is worth it.

We already have a lot of different versions of user copies for
different reasons, and while they all tend to have a good reason (and
some not-so-good, but historical reasons) for existing, this one
doesn't seem worth it.

The main - perhaps only - reason for this "partial" version is that
you want to do that "automatically inlined and optimized fixed-sized
case".

But here's the thing: I think you can already do that. Yes, it
requires some improvements to unsafe_copy_from_user(), but *that*
interface doesn't have three decades of history associated with it,
_and_ you're extending on that one anyway in this series.

"unsafe_copy_from_user()" is very odd, is meant only for small simple
copies that can be inlined and it's special-cased for 'objtool' anyway
(because objtool would have complained about an out-of-line call,
although it could have been special-cased other ways).

In other words: unsafe_copy_from_user() is *very* close to what you
want for that "Oh, I noticed that it's a small fixed-size copy, so I
want to special-case copy-from-user for that".

The _only_ issue with unsafe_copy_from_user() is that you can't see
that there were partial successes. But if *that* was fixed, then this
whole "create a new copy_from_user interface" issue would just go
away.

So please - let's just change unsafe_copy_from_user() to be usable for
the partial case.

And the thing is, all the existing unsafe_copy_from_user()
implementations already effectively *have* the "how much did I not
copy" internally, and they actually do extra work to hide it, ie they
have things like that

        int _i;

that is "how many bytes have I copied" in the powerpc implementation,
or the x86 code does

        size_t __ucu_len = (_len);

where that "ucu_len" is updated as you go along and is literally the
"how many bytes are left to copy" return value that is missing from
this interface.

So what I would suggest is

 - introduce a new user accessor helper that is used for *both*
unsafe_copy_to/from_user() *and* the "inline small constant-sized
normal copy_to/from_user()" calls

 - it's the same thing as the existing  unsafe_copy_to/from_user()
implementation, except it exposes how many bytes are left to be copied
to the exception label.

IOW, it would look something like

     #define unsafe_copy_to_user_outlen(_dst,_src,_len,label)...

which is exactly the same as the current unsafe_copy_to_user(),
*except* it changes "_len" as it does along.

And then you use that for both the "real" unsafe_copy_user and for the
"small constant values" case.

Just as an example, attached is a completely stupid rough draft of a
patch that does this for x86 and only for unsafe_copy_to_user().

And I made a very very hacky change to kernel/sys.c to see what the
code generation looks like.

This is what it results in on x86 with clang (with all the magic
.section data edited out):

        ... edited out the code to generate the times
        ... this is the actual user copy:
        # HERE!
        movabsq $81985529216486895, %rcx        # imm = 0x123456789ABCDEF
        cmpq    %rcx, %rbx
        cmovaq  %rcx, %rbx
        stac
        movq    %r13, (%rbx)                    # exception to .LBB45_8
        movq    %r14, 8(%rbx)                   # exception to .LBB45_8
        movq    %r15, 16(%rbx)                  # exception to .LBB45_8
        movq    %rax, 24(%rbx)                  # exception to .LBB45_8
        clac
.LBB45_6:
        movq    jiffies(%rip), %rdi
        callq   jiffies_64_to_clock_t
.LBB45_7:
        addq    $16, %rsp
        popq    %rbx
        popq    %r12
        popq    %r13
        popq    %r14
        popq    %r15
        retq
.LBB45_8:
        clac
        movq    $-14, %rax
        jmp     .LBB45_7

and notice how the compiler noticed that the 'outlen' isn't actually
used, and turned the exception label into just a "return -EFAULT" and
never actually generated any code for updating remaining lengths?

That actually looks pretty much optimal for a 32-byte user copy.

And it didn't involve changing the semantics at all.

Just to check, I changed that "times()" system call to return the
number of bytes uncopied instead (to emulate the "I actually want to
know what's left" case), and it generated this:

        # HERE!
        movabsq $81985529216486895, %rcx        # imm = 0x123456789ABCDEF
        cmpq    %rcx, %rbx
        cmovaq  %rcx, %rbx
        stac
        movl    $32, %ecx
        movq    %r13, (%rbx)                    # exception to .LBB45_7
        movl    $24, %ecx
        movq    %r15, 8(%rbx)                   # exception to .LBB45_7
        movl    $16, %ecx
        movq    %r14, 16(%rbx)                  # exception to .LBB45_7
        movl    $8, %ecx
        movq    %rax, 24(%rbx)                  # exception to .LBB45_7
        clac
        xorl    %ecx, %ecx
.LBB45_8:
        movq    %rcx, %rax
        addq    $16, %rsp
        popq    %rbx
        popq    %r12
        popq    %r13
        popq    %r14
        popq    %r15
        retq
.LBB45_6:
        movq    jiffies(%rip), %rdi
        jmp     jiffies_64_to_clock_t           # TAILCALL
.LBB45_7:
        clac
        jmp     .LBB45_8

so it all seems to work - although obviously the above is *not* the normal case.

NOTE NOTE NOTE! The attached patch is entirely untested. I obviously
did some "test code generation" with it, but I only *looked* at the
result, and maybe it has some fundamental problem that I just didn't
notice. So treat this as a "how about this approach" patch, not as
anything more serious than that.

And the kerrnel/sys.c hack is very obviously just that: a complate
hack for testing.

A real patch would do that "for small constant-sized copies, turn
copy_to_user() automatically into "_small_copy_to_user()".

The attached is *not* a real patch. Treat it with the contempt it deserves.

             Linus

--000000000000c765e2065075bee2
Content-Type: text/x-patch; charset="US-ASCII"; name="patch.diff"
Content-Disposition: attachment; filename="patch.diff"
Content-Transfer-Encoding: base64
Content-ID: <f_mohk3mm10>
X-Attachment-Id: f_mohk3mm10

IGFyY2gveDg2L2luY2x1ZGUvYXNtL3VhY2Nlc3MuaCB8IDE3ICsrKysrKysrKysrLS0tLS0tCiBp
bmNsdWRlL2xpbnV4L3VhY2Nlc3MuaCAgICAgICAgfCAxNiArKysrKysrKysrKysrKysrCiBrZXJu
ZWwvc3lzLmMgICAgICAgICAgICAgICAgICAgfCAgMyArKy0KIDMgZmlsZXMgY2hhbmdlZCwgMjkg
aW5zZXJ0aW9ucygrKSwgNyBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9hcmNoL3g4Ni9pbmNs
dWRlL2FzbS91YWNjZXNzLmggYi9hcmNoL3g4Ni9pbmNsdWRlL2FzbS91YWNjZXNzLmgKaW5kZXgg
M2EwZGQzYzJiMjMzLi4zYjJjNTdjOTE0MTggMTAwNjQ0Ci0tLSBhL2FyY2gveDg2L2luY2x1ZGUv
YXNtL3VhY2Nlc3MuaAorKysgYi9hcmNoL3g4Ni9pbmNsdWRlL2FzbS91YWNjZXNzLmgKQEAgLTYw
NiwxNSArNjA2LDIwIEBAIF9sYWJlbDoJCQkJCQkJCQlcCiAJCWxlbiAtPSBzaXplb2YodHlwZSk7
CQkJCQkJXAogCX0KIAotI2RlZmluZSB1bnNhZmVfY29weV90b191c2VyKF9kc3QsX3NyYyxfbGVu
LGxhYmVsKQkJCVwKKyNkZWZpbmUgdW5zYWZlX2NvcHlfdG9fdXNlcl9vdXRsZW4oX2RzdCxfc3Jj
LF9sZW4sbGFiZWwpCVwKIGRvIHsJCQkJCQkJCQlcCiAJY2hhciBfX3VzZXIgKl9fdWN1X2RzdCA9
IChfZHN0KTsJCQkJXAogCWNvbnN0IGNoYXIgKl9fdWN1X3NyYyA9IChfc3JjKTsJCQkJCVwKLQlz
aXplX3QgX191Y3VfbGVuID0gKF9sZW4pOwkJCQkJXAotCXVuc2FmZV9jb3B5X2xvb3AoX191Y3Vf
ZHN0LCBfX3VjdV9zcmMsIF9fdWN1X2xlbiwgdTY0LCBsYWJlbCk7CVwKLQl1bnNhZmVfY29weV9s
b29wKF9fdWN1X2RzdCwgX191Y3Vfc3JjLCBfX3VjdV9sZW4sIHUzMiwgbGFiZWwpOwlcCi0JdW5z
YWZlX2NvcHlfbG9vcChfX3VjdV9kc3QsIF9fdWN1X3NyYywgX191Y3VfbGVuLCB1MTYsIGxhYmVs
KTsJXAotCXVuc2FmZV9jb3B5X2xvb3AoX191Y3VfZHN0LCBfX3VjdV9zcmMsIF9fdWN1X2xlbiwg
dTgsIGxhYmVsKTsJXAorCXVuc2FmZV9jb3B5X2xvb3AoX191Y3VfZHN0LCBfX3VjdV9zcmMsIF9s
ZW4sIHU2NCwgbGFiZWwpOwlcCisJdW5zYWZlX2NvcHlfbG9vcChfX3VjdV9kc3QsIF9fdWN1X3Ny
YywgX2xlbiwgdTMyLCBsYWJlbCk7CVwKKwl1bnNhZmVfY29weV9sb29wKF9fdWN1X2RzdCwgX191
Y3Vfc3JjLCBfbGVuLCB1MTYsIGxhYmVsKTsJXAorCXVuc2FmZV9jb3B5X2xvb3AoX191Y3VfZHN0
LCBfX3VjdV9zcmMsIF9sZW4sIHU4LCBsYWJlbCk7CVwKK30gd2hpbGUgKDApCisKKyNkZWZpbmUg
dW5zYWZlX2NvcHlfdG9fdXNlcihfZHN0LF9zcmMsX2xlbixsYWJlbCkJCQlcCitkbyB7CQkJCQkJ
CQkJXAorCXNpemVfdCBfX3VjdV9sZW4gPSBfbGVuOwkJCQkJXAorCXVuc2FmZV9jb3B5X3RvX3Vz
ZXJfb3V0bGVuKF9kc3QsX3NyYyxfX3VjdV9sZW4sbGFiZWwpOwkJXAogfSB3aGlsZSAoMCkKIAog
I2lmZGVmIENPTkZJR19DQ19IQVNfQVNNX0dPVE9fT1VUUFVUCmRpZmYgLS1naXQgYS9pbmNsdWRl
L2xpbnV4L3VhY2Nlc3MuaCBiL2luY2x1ZGUvbGludXgvdWFjY2Vzcy5oCmluZGV4IDU2MzI4NjAx
MjE4Yy4uMWE3MGVmNzA3ODRjIDEwMDY0NAotLS0gYS9pbmNsdWRlL2xpbnV4L3VhY2Nlc3MuaAor
KysgYi9pbmNsdWRlL2xpbnV4L3VhY2Nlc3MuaApAQCAtODc0LDQgKzg3NCwyMCBAQCB2b2lkIF9f
bm9yZXR1cm4gdXNlcmNvcHlfYWJvcnQoY29uc3QgY2hhciAqbmFtZSwgY29uc3QgY2hhciAqZGV0
YWlsLAogCQkJICAgICAgIHVuc2lnbmVkIGxvbmcgbGVuKTsKICNlbmRpZgogCitzdGF0aWMgX19h
bHdheXNfaW5saW5lIF9fbXVzdF9jaGVjayB1bnNpZ25lZCBsb25nCitfc21hbGxfY29weV90b191
c2VyKHZvaWQgX191c2VyICp0bywgY29uc3Qgdm9pZCAqZnJvbSwgdW5zaWduZWQgbG9uZyBuKQor
eworCXNpemVfdCB1bmNvcGllZCA9IG47CisKKwltaWdodF9mYXVsdCgpOworCWlmIChzaG91bGRf
ZmFpbF91c2VyY29weSgpKQorCQlyZXR1cm4gbjsKKwlpbnN0cnVtZW50X2NvcHlfdG9fdXNlcih0
bywgZnJvbSwgbik7CisJc2NvcGVkX3VzZXJfd3JpdGVfYWNjZXNzX3NpemUodG8sIG4sIGZhaWxl
ZCkKKwkJdW5zYWZlX2NvcHlfdG9fdXNlcl9vdXRsZW4odG8sIGZyb20sIHVuY29waWVkLCBmYWls
ZWQpOworCXJldHVybiAwOworZmFpbGVkOgorICAgICAgIHJldHVybiB1bmNvcGllZDsKK30KKwog
I2VuZGlmCQkvKiBfX0xJTlVYX1VBQ0NFU1NfSF9fICovCmRpZmYgLS1naXQgYS9rZXJuZWwvc3lz
LmMgYi9rZXJuZWwvc3lzLmMKaW5kZXggNjJlODQyMDU1Y2M5Li42NWIyZDAxMDNhNzMgMTAwNjQ0
Ci0tLSBhL2tlcm5lbC9zeXMuYworKysgYi9rZXJuZWwvc3lzLmMKQEAgLTEwNjcsNyArMTA2Nyw4
IEBAIFNZU0NBTExfREVGSU5FMSh0aW1lcywgc3RydWN0IHRtcyBfX3VzZXIgKiwgdGJ1ZikKIAkJ
c3RydWN0IHRtcyB0bXA7CiAKIAkJZG9fc3lzX3RpbWVzKCZ0bXApOwotCQlpZiAoY29weV90b191
c2VyKHRidWYsICZ0bXAsIHNpemVvZihzdHJ1Y3QgdG1zKSkpCisJCWFzbSB2b2xhdGlsZSgiIyBI
RVJFISIpOworCQlpZiAoX3NtYWxsX2NvcHlfdG9fdXNlcih0YnVmLCAmdG1wLCBzaXplb2Yoc3Ry
dWN0IHRtcykpKQogCQkJcmV0dXJuIC1FRkFVTFQ7CiAJfQogCWZvcmNlX3N1Y2Nlc3NmdWxfc3lz
Y2FsbF9yZXR1cm4oKTsK
--000000000000c765e2065075bee2--


From xen-devel-bounces@lists.xenproject.org Mon Apr 27 19:20:10 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 27 Apr 2026 19:20:10 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1295274.1571954 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wHRUp-0008V9-1w; Mon, 27 Apr 2026 19:19:55 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1295274.1571954; Mon, 27 Apr 2026 19:19: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 1wHRUo-0008V2-VZ; Mon, 27 Apr 2026 19:19:54 +0000
Received: by outflank-mailman (input) for mailman id 1295274;
 Mon, 27 Apr 2026 19:19:53 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <ynorov@nvidia.com>) id 1wHRUn-0008Uw-9j
 for xen-devel@lists.xenproject.org; Mon, 27 Apr 2026 19:19:53 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wHRUk-00Dyqz-L6
 for xen-devel@lists.xenproject.org; Mon, 27 Apr 2026 21:19:52 +0200
Received: from [10.42.69.5] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <ynorov@nvidia.com>)
 id 69efb690-bab6-0a2a0a5309dd-0a2a45058418-38
 for <xen-devel@lists.xenproject.org>; Mon, 27 Apr 2026 21:19:51 +0200
Received: from [52.101.61.63]
 (helo=DM1PR04CU001.outbound.protection.outlook.com)
 by tlsNG-c201ff.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.1)
 (envelope-from <ynorov@nvidia.com>)
 id 69efb6d6-aaa8-0a2a45050019-34653d3f6334-3
 for <xen-devel@lists.xenproject.org>; Mon, 27 Apr 2026 21:19:51 +0200
Received: from CY8PR12MB8300.namprd12.prod.outlook.com (2603:10b6:930:7d::16)
 by CY3PR12MB9678.namprd12.prod.outlook.com (2603:10b6:930:101::12)
 with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9870.12; Mon, 27 Apr
 2026 19:19:39 +0000
Received: from CY8PR12MB8300.namprd12.prod.outlook.com
 ([fe80::ce75:8187:3ac3:c5de]) by CY8PR12MB8300.namprd12.prod.outlook.com
 ([fe80::ce75:8187:3ac3:c5de%3]) with mapi id 15.20.9870.013; Mon, 27 Apr 2026
 19:19: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=temperror header.s=selector2 header.d=Nvidia.com header.i="@Nvidia.com"
ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none;
 b=DVhEHbKse9FapnN2cz2aJUX+HTxcItqfquBUQFwLCiP5WPrtNQiNPTnGI4MIon3AgmkAQl5HhYuSQnuQt8IDeRYhgInyB/AOQdBwrpUiHITV3f694UVLHuUrOiv9b2cfG6r3+auR6MSVkkcLuQ4Y+tF/rhfDNeBCXess0F+F/TkXrV+dz92vsSLlL5tn1Ynl2fbpcNoIAef0KBxuv6gcdjE4t82LvHJAaDNASNUKyKFm7x4T0BsLAz0/sYnIg36y560VeNc7zOL4T4Ud5AI185ZovsKb5e37aJIb1I3/TkqG0ULl2gwnmAIb6WWT/tvMtVulTJ6c/93Ndgr0CuF4fg==
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com;
 s=arcselector10001;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1;
 bh=/kehAw/qIO6D93HVE5am8hZKsLTTbdaFhcjGhCC5rQk=;
 b=barriPy2JoAhTOU2YWoiBczra9jgxyFIS6Vn5fMeLmZuoQbamS7hXIudelNBWOJlYCTT4fz6sLrJvnhUdW9BOtoGyJggKAsOzpYbdXTAoZYuiChGWVjjK4zj5T6ViLKFtxvsysAksVjZEfM7DJVmWiyYI9e45cpEy9i20IgZjrl32t2DE427qEOO5vlB9eYx56Yl/nXGgL4VLYapDOlIgCcuJftQuYsdND79AhJHc1YvPlUNuHXQ+n3CfukGLrY/uuf3W2l/Yujue6iK9C39RkCuvxgHmU04+3GeYVYQvrsxPBRvQZHz5V/LPu92hWZsyj93vuK0RwQezDTTJlGlNw==
ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass
 smtp.mailfrom=nvidia.com; dmarc=pass action=none header.from=nvidia.com;
 dkim=pass header.d=nvidia.com; arc=none
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=Nvidia.com;
 s=selector2;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck;
 bh=/kehAw/qIO6D93HVE5am8hZKsLTTbdaFhcjGhCC5rQk=;
 b=YPchTHpLT9QyaGFbz/V/HaxoYwml60CPwBCohwTGccSxQF5xp4aCWy87+9L75FNFxG+fxrmiBfrijK9S2U71MhRFySlXZXPcGWovjvdfkNvvp25q1PAB1mr+HmzjdR2xRedKx7NR5nzOddAsQnNEGyggXH0WqDfgUQo8MCzVvhQJIRQ9THI7KbDluLzImajEqpi/FOh1jFu/Gzsx5Px0K5iD8tBWuFPua2hJduhxINK682Oc8hT1rNV3ppOrrAFmrK5A2egSfIVt/1zbLX+OPjABfYsc675DnlpFoxG5tXvBSDdEGGHoW1lpS7Myqc3PGBqojvAzWyzSfMH/AHuVBg==
Authentication-Results: dkim=none (message not signed)
 header.d=none;dmarc=none action=none header.from=nvidia.com;
Date: Mon, 27 Apr 2026 15:19:36 -0400
From: Yury Norov <ynorov@nvidia.com>
To: "Christophe Leroy (CS GROUP)" <chleroy@kernel.org>
Cc: Andrew Morton <akpm@linux-foundation.org>,
	Linus Torvalds <torvalds@linux-foundation.org>,
	David Laight <david.laight.linux@gmail.com>,
	Thomas Gleixner <tglx@linutronix.de>, linux-alpha@vger.kernel.org,
	Yury Norov <yury.norov@gmail.com>, linux-kernel@vger.kernel.org,
	linux-snps-arc@lists.infradead.org,
	linux-arm-kernel@lists.infradead.org, linux-mips@vger.kernel.org,
	linuxppc-dev@lists.ozlabs.org, kvm@vger.kernel.org,
	linux-riscv@lists.infradead.org, linux-s390@vger.kernel.org,
	sparclinux@vger.kernel.org, linux-um@lists.infradead.org,
	dmaengine@vger.kernel.org, linux-efi@vger.kernel.org,
	linux-fsi@lists.ozlabs.org, amd-gfx@lists.freedesktop.org,
	dri-devel@lists.freedesktop.org, intel-gfx@lists.freedesktop.org,
	linux-wpan@vger.kernel.org, netdev@vger.kernel.org,
	linux-wireless@vger.kernel.org, linux-spi@vger.kernel.org,
	linux-media@vger.kernel.org, linux-staging@lists.linux.dev,
	linux-serial@vger.kernel.org, linux-usb@vger.kernel.org,
	xen-devel@lists.xenproject.org, linux-fsdevel@vger.kernel.org,
	ocfs2-devel@lists.linux.dev, bpf@vger.kernel.org,
	kasan-dev@googlegroups.com, linux-mm@kvack.org,
	linux-x25@vger.kernel.org, rust-for-linux@vger.kernel.org,
	linux-sound@vger.kernel.org, sound-open-firmware@alsa-project.org,
	linux-csky@vger.kernel.org, linux-hexagon@vger.kernel.org,
	loongarch@lists.linux.dev, linux-m68k@lists.linux-m68k.org,
	linux-openrisc@vger.kernel.org, linux-parisc@vger.kernel.org,
	linux-sh@vger.kernel.org, linux-arch@vger.kernel.org
Subject: Re: [RFC PATCH v1 7/9] x86: Add unsafe_copy_from_user()
Message-ID: <ae-2yLWSGnfeTvh1@yury>
References: <cover.1777306795.git.chleroy@kernel.org>
 <0ee46bb228d97163fbdc14f2a7c52b93d8bc34ce.1777306795.git.chleroy@kernel.org>
 <ae-j2_QirCySZD02@yury>
 <63a4d0f6-0eb3-48cd-9f98-bf7b223b2606@kernel.org>
Content-Type: text/plain; charset=iso-8859-1
Content-Disposition: inline
Content-Transfer-Encoding: 8bit
In-Reply-To: <63a4d0f6-0eb3-48cd-9f98-bf7b223b2606@kernel.org>
X-ClientProxiedBy: BLAPR03CA0031.namprd03.prod.outlook.com
 (2603:10b6:208:32d::6) To CY8PR12MB8300.namprd12.prod.outlook.com
 (2603:10b6:930:7d::16)
MIME-Version: 1.0
X-MS-PublicTrafficType: Email
X-MS-TrafficTypeDiagnostic: CY8PR12MB8300:EE_|CY3PR12MB9678:EE_
X-MS-Office365-Filtering-Correlation-Id: c742778b-fa9b-44f9-51b3-08dea491ed5d
X-MS-Exchange-SenderADCheck: 1
X-MS-Exchange-AntiSpam-Relay: 0
X-Microsoft-Antispam:
	BCL:0;ARA:13230040|366016|376014|7416014|10070799003|1800799024|56012099003|18002099003|22082099003;
X-Microsoft-Antispam-Message-Info:
	shZ1u0REr6wDLRLPyyEdIcR7HSBaBLI9bkPwQrtikVH2FtKB2JxFo1blEpu1cI3NJl8SRfbhAKLYIVGCuUMzmvBnxw+FuY/TWQm+eDHPdr22c6rn1JUuzt3nYVxIbuuLTVTRWsq+e+SUyzbYaEEs9iTQJbTfJiMIr1QcnMs7HyZ09hEYM4Y4qXo4Dqr7nhb5zdIkE0fiLtqy/Zisxe0E2yKOvU4HmFcaFOiR7Aq6DJwZzTG+BR733bn5EC71RBcWvOANFgJM2znxVv/dOuQYufc4G4dUHtXgydGyNUS+fngDUjvyX5MkmDLhOMznjZqXlYqgeu5lMUCpG8HffRFHlOXhBcrYgf+ovMMHaCYbFuDT66UC1VDFvb4rz83Hk2Lnl6vSSpPTv8rxpTSPpx4cdJdNmo0Mn5Mi/3x46vGIX9O5JTAct5Ir50zvkKLZe7/Kp1qSfB39msc26Lzz7LD733/o3mPnQXyAGLurnHZgJ5jM3FLt650dCqhJcZlPMaXHq6+AjtwJTG6y+mX2JUt2792E1LYJn7KjXVu8/xqn/7IpL5oC4IQQUgghT221wDL3lrh3xCL1IuqFJShNLP2kKxWwgFBJzIfU0pnScVGPPU9YsipaXNEtmsuD5RQqnXWq43E7KCoMjIP73gvWalBIhJkqTKcX6NUkX7ot5JSYyuNq1A833Lgaec6O0C//zC9ubi3rz9CymfV/P6BrxHZIhmtQ5semmv0gY0c6C5hRnqM=
X-Forefront-Antispam-Report:
	CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:CY8PR12MB8300.namprd12.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(366016)(376014)(7416014)(10070799003)(1800799024)(56012099003)(18002099003)(22082099003);DIR:OUT;SFP:1101;
X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1
X-MS-Exchange-AntiSpam-MessageData-0:
	=?iso-8859-1?Q?T8W6XhUXwT9dv5kuj9kFMa1Pc+caKbpom/7i+ro0mWLEx/WsMCf7Uv+yLt?=
 =?iso-8859-1?Q?gAyF6hz8bSDC1bWR1FTEkkI65aMUmC7iyx7e6/xfNDa3Fqe7SiC1j77stI?=
 =?iso-8859-1?Q?LrG24onu6fFBF8DWYf6MIuIlkdgrbAd2EiVVGxnofgYgHTQhw5136OB8qO?=
 =?iso-8859-1?Q?CnzmyDAwjI33B1CjeJnNBBJkCzrksdZvxIcHW0uIe6E0PZHf537RLpIETM?=
 =?iso-8859-1?Q?s+cBh7JvH4GNxPjZACl7GXrozKiFqXSwFIzHaU9Zd4jSjyzd0KPJpIHPKf?=
 =?iso-8859-1?Q?8h/I+NEnIGw4Lnjlmh9mYKMwd0qS2GIHpVaOy1bH5MCjGmjowRaXjQ79be?=
 =?iso-8859-1?Q?jGRLn+Oomml9guRrsFzOQ7DbbOlFy8pqy9R+D9ZnGVn8wEgYSRw75xgmry?=
 =?iso-8859-1?Q?2ACNauoKPoUzpnRmfqW3sPF9JS/tvt2t2PPNVTZJLV6vuJBnNmyWilx/9u?=
 =?iso-8859-1?Q?SrlYzTyazTZWIZbUeG2soKD4eNVokxFYJQoBgEsGEV2njiNv6HUubbi0pF?=
 =?iso-8859-1?Q?Vqp14jJqz5sSfFayA6WZcArZ+USE5vjanuqRtNQfdkNsKj0R4pEMc493o0?=
 =?iso-8859-1?Q?NCXeFBw/ojt6aGg8g6h7tHIHZcYuw7ohhZUMOvg3ffhlK9u79tO7oKpC3u?=
 =?iso-8859-1?Q?wiPOjYl6brt/0GKfD3iRNbrV6TRbbioNcjuDS7LZqgWxe6vMy7NndX+woA?=
 =?iso-8859-1?Q?uRdr5blnc5k3cJWHAzCHgJ5WF2JWGApq1uyN9UWgvqNw083HRffGg6P5ix?=
 =?iso-8859-1?Q?cG24FhHq+kscs9DSxIC+Aujk67lP+3jqbld/7XWy8cKm8qvSHwRqhWblhk?=
 =?iso-8859-1?Q?2okcTJPbDNOuvYYOSGTPE+vmAEFbkK1UHPvMUY9ATxehETfXPZs7yjb3aq?=
 =?iso-8859-1?Q?w3hdW7xtyg3/7tDEWG7+fOEy9FFT/gEBpvxotxF6oySrb2HXqp/fqrjhbq?=
 =?iso-8859-1?Q?+CZwwgugua6eO4UL5qPz9hiIFbMAfNaGqRykJRiykn+pL+t1YHattmJ89+?=
 =?iso-8859-1?Q?zMjzPmRht5LCTdelXGsXfPIKJiFXD3T9vDfN3lmWj4Ts7wlilxpgiOpMaL?=
 =?iso-8859-1?Q?p7E3h5ji6cLKiR9cNwmzJTNOGBx5zvsEG4+PNQXhBDGMpxOVgOl+EeAV9d?=
 =?iso-8859-1?Q?2s3FGgMUZVYPP9cV5NsthWoh6iNfuRN7NkopE2q3yxMVZlN6dt7HdpbO1Y?=
 =?iso-8859-1?Q?0fu25Ra/a3yy2XE0TtJPHqDm12P85rdM3CgNkUv822FbtecXgL64Qkuo5p?=
 =?iso-8859-1?Q?bU1qrEG+LOPjM/jMvPhwRHc5ppnq/gaXYhFU5FH0G3K5d4d0ixkRyi37Wv?=
 =?iso-8859-1?Q?QFsdW6QrX/SrL3DsdbaAqQnL1rxC0EQG3YCsMUYGRLPRYd9ad5xPY0x+Rq?=
 =?iso-8859-1?Q?pi74xEsiw9PrH9X+6nGn6Y3d7VcpnV6Av8/J+hqLZLRt6W9B7IXfCaTIAV?=
 =?iso-8859-1?Q?8KCRWdm4ExrgkDdvMYea8olZLEBlvgMeZtCVoxZ810+OR4vZKUUMbB37Ha?=
 =?iso-8859-1?Q?gwC1ZTD4TpsWjGJNj5Ry/c9tX5RkpCdCKRBegPQIrqdU1WX41QArSPS9fb?=
 =?iso-8859-1?Q?xDEYSUCFDpxyHnIl4mh4MFcUHTIxFSpQAIB1z5w75JzJg+rYBE9y0Z0uA2?=
 =?iso-8859-1?Q?hx89znOZLi5+tvIZldfaxSE1Dk0RrYzkMtqQuuDh61/I6rksRc2kt6jYug?=
 =?iso-8859-1?Q?hvJgjrdcklYMst8NSnorft9iaeq41s5Z02Our3r1w88xwCK/RrRq8aIdSR?=
 =?iso-8859-1?Q?gpisMPDwKRAml31b4cWNg8wz9VF+bGszAp5BtKObcEufaeReWjiKmyXNV3?=
 =?iso-8859-1?Q?qbI4euw+Po2OswoqiwgiX8xIAeThU5sXrO2JRJTwu37/nYFGOi2s?=
X-OriginatorOrg: Nvidia.com
X-MS-Exchange-CrossTenant-Network-Message-Id: c742778b-fa9b-44f9-51b3-08dea491ed5d
X-MS-Exchange-CrossTenant-AuthSource: CY8PR12MB8300.namprd12.prod.outlook.com
X-MS-Exchange-CrossTenant-AuthAs: Internal
X-MS-Exchange-CrossTenant-OriginalArrivalTime: 27 Apr 2026 19:19:39.4410
 (UTC)
X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted
X-MS-Exchange-CrossTenant-Id: 43083d15-7273-40c1-b7db-39efd9ccc17a
X-MS-Exchange-CrossTenant-MailboxType: HOSTED
X-MS-Exchange-CrossTenant-UserPrincipalName: 40kb2lLpGDA1U6OK1K/FxB8sAmuWJ+U6w4mJNOJ6ae5Bq52M+Y3YVxXlUqHMzI9liQk01DjxzLicYADua7DWLw==
X-MS-Exchange-Transport-CrossTenantHeadersStamped: CY3PR12MB9678
X-purgate-ID: tlsNG-c201ff/1777317591-E8BAC443-1C44DFB3/0/0
X-purgate-type: clean
X-purgate-size: 1586

On Mon, Apr 27, 2026 at 08:20:38PM +0200, Christophe Leroy (CS GROUP) wrote:
> 
> 
> Le 27/04/2026  19:58, Yury Norov a crit:
> > On Mon, Apr 27, 2026 at 07:13:48PM +0200, Christophe Leroy (CS GROUP) wrote:
> > > At the time being, x86 and arm64 are missing unsafe_copy_from_user().
> > 
> > No, they don't. They (should) rely on a generic implementation from
> > linux/uaccess.h, like every other arch, except for  PPC and RISCV.
> > 
> > But they #define arch_unsafe_get_user, and the unsafe_copy_from_user()
> > becomes undefined conditionally on that.
> > 
> > So please, fix that bug instead of introducing another arch flavor.
> > We'd always choose generic version, unless there's strong evidence
> > that arch one is better.
> 
> But they both implement the exact same unsafe_copy_to_user(). What is the
> difference here ?
>
> Should that function become generic too ?

This is what Linus said when added x86 implementation for copy_from_user()
in c512c69187197:

  Note that it only does this [arch version] for the copying _to_ user space,
  and we still don't have a unsafe version of copy_from_user().
  
  That's partly because we have no current users of it, but also partly
  because the copy_from_user() case is slightly different and cannot
  efficiently be implemented in terms of a unsafe_get_user() loop (because
  gcc can't do asm goto with outputs).

In the unsafe_copy_to_user case, arch versions were justified. Just as
said, I'm not against arch version for unsafe_copy_from_user(), but it
should be explained very well.


From xen-devel-bounces@lists.xenproject.org Mon Apr 27 20:13:34 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 27 Apr 2026 20:13:34 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1295291.1571963 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wHSKK-0001F6-SD; Mon, 27 Apr 2026 20:13:08 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1295291.1571963; Mon, 27 Apr 2026 20:13: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 1wHSKK-0001Ez-Om; Mon, 27 Apr 2026 20:13:08 +0000
Received: by outflank-mailman (input) for mailman id 1295291;
 Mon, 27 Apr 2026 20:13:06 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <ynorov@nvidia.com>) id 1wHSKI-0001Et-La
 for xen-devel@lists.xenproject.org; Mon, 27 Apr 2026 20:13:06 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wHSKH-009fpF-It
 for xen-devel@lists.xenproject.org; Mon, 27 Apr 2026 22:13:05 +0200
Received: from [10.42.69.5] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <ynorov@nvidia.com>)
 id 69efc349-2eae-0a2a0a5409dd-0a2a4505b978-8
 for <xen-devel@lists.xenproject.org>; Mon, 27 Apr 2026 22:13:05 +0200
Received: from [52.101.53.24]
 (helo=BL0PR03CU003.outbound.protection.outlook.com)
 by tlsNG-c201ff.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.1)
 (envelope-from <ynorov@nvidia.com>)
 id 69efc34f-aaa8-0a2a45050019-34653518b158-3
 for <xen-devel@lists.xenproject.org>; Mon, 27 Apr 2026 22:13:04 +0200
Received: from CY8PR12MB8300.namprd12.prod.outlook.com (2603:10b6:930:7d::16)
 by LV3PR12MB9166.namprd12.prod.outlook.com (2603:10b6:408:19c::13)
 with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9870.16; Mon, 27 Apr
 2026 20:12:58 +0000
Received: from CY8PR12MB8300.namprd12.prod.outlook.com
 ([fe80::ce75:8187:3ac3:c5de]) by CY8PR12MB8300.namprd12.prod.outlook.com
 ([fe80::ce75:8187:3ac3:c5de%3]) with mapi id 15.20.9870.013; Mon, 27 Apr 2026
 20:12: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=temperror header.s=selector2 header.d=Nvidia.com header.i="@Nvidia.com"
ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none;
 b=BtrDbDcz6oik0VAePSzg5fGR+cooJsvCiqVpAkRyxjo7tVYcK6FTW120At87PvC2HmYqvF+zAYmUozmBiDpk3obvOrmRqnQu5b4NUoZkF4ujvP7nKdWKNRWeaLOXO5lx22JtfQpfCueE0stod3ZgwyZHZra4CSp8si7hhoGCGMHOU9NRGgQZvWgZxjvpiddt/5heAo5jaUAbusoeb6/N+ctwOqovcjGb3J/PDBJNthLIqytbew6CjsXMgRhp3uIkXxoc2xEaZ44Y9Ktv5ANbxXoHDUfrqejvOg1lxzqXzqzdTsDZXzt8mwjNLgfzVceatnj1bajoVfBGEPtevW6/ow==
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com;
 s=arcselector10001;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1;
 bh=UKWQR0wFCYKwd7/WyoEVlZ7dAryoy8A/34DACb4Mweg=;
 b=eIPokbumH3eDN+DqP5Ep1KaEMIWbZhTzgBKsNv19VF/W6X7jjPowB4UntDHWj76GVOLpVErRkTwf2pJ/YrDs45ZN6xDND6686ErEpWA2qQXwRCmtP46ysRgjHvM1NVSf8oin7VwsuXb30pKGJB4D4xu/biMyeV+73vzwzUrpYBXo7hdAidNUQHrxfYLBQEUhcH9MtIkFcqmeakpXHhSDEtl8blygh6QE25OuMpVAmZUWxT7paNvKfjp0MlyKuWB9S5BekJIjYVv4y8EE8wAO9HrTEKcIsKrwKajDUUZC4yUEssV8xNuhIqndzV8atExLn9UGWsZ3+sD76wTjiGaGgw==
ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass
 smtp.mailfrom=nvidia.com; dmarc=pass action=none header.from=nvidia.com;
 dkim=pass header.d=nvidia.com; arc=none
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=Nvidia.com;
 s=selector2;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck;
 bh=UKWQR0wFCYKwd7/WyoEVlZ7dAryoy8A/34DACb4Mweg=;
 b=hMJCquiWsKvsKPfnV6x+XewanJiprCXhKZ7l3EnI0mUQee6FHRXLrWa9OPoGIpSx+3ijfDDYf7rNW7PoM7DOSBnLPvsXAImaoD6B98Y7Upx4a9+jmx8qzSA1GldDlcxK8Pewp0jwDRy5JdWZd5Oq81ubXZq43utYi9tCvPcHtbJVcvLFWW/q7KgNksf7InTQ6smdi1OyjYpNmneI+Yx09fiTp08WMkqdpQGjsSSQVU9D7WqLP1BLpIUpVlAs267Rgj9nox2HtSQ5p5eE42gWq/zkifeODpWv1mo/3UxmRXJegCDfavI3oSRox5pAtdJxjEw5pvmed4+9e03qhtyLkg==
Authentication-Results: dkim=none (message not signed)
 header.d=none;dmarc=none action=none header.from=nvidia.com;
Date: Mon, 27 Apr 2026 16:12:55 -0400
From: Yury Norov <ynorov@nvidia.com>
To: "Christophe Leroy (CS GROUP)" <chleroy@kernel.org>
Cc: Andrew Morton <akpm@linux-foundation.org>,
	Linus Torvalds <torvalds@linux-foundation.org>,
	David Laight <david.laight.linux@gmail.com>,
	Thomas Gleixner <tglx@linutronix.de>, linux-alpha@vger.kernel.org,
	Yury Norov <yury.norov@gmail.com>, linux-kernel@vger.kernel.org,
	linux-snps-arc@lists.infradead.org,
	linux-arm-kernel@lists.infradead.org, linux-mips@vger.kernel.org,
	linuxppc-dev@lists.ozlabs.org, kvm@vger.kernel.org,
	linux-riscv@lists.infradead.org, linux-s390@vger.kernel.org,
	sparclinux@vger.kernel.org, linux-um@lists.infradead.org,
	dmaengine@vger.kernel.org, linux-efi@vger.kernel.org,
	linux-fsi@lists.ozlabs.org, amd-gfx@lists.freedesktop.org,
	dri-devel@lists.freedesktop.org, intel-gfx@lists.freedesktop.org,
	linux-wpan@vger.kernel.org, netdev@vger.kernel.org,
	linux-wireless@vger.kernel.org, linux-spi@vger.kernel.org,
	linux-media@vger.kernel.org, linux-staging@lists.linux.dev,
	linux-serial@vger.kernel.org, linux-usb@vger.kernel.org,
	xen-devel@lists.xenproject.org, linux-fsdevel@vger.kernel.org,
	ocfs2-devel@lists.linux.dev, bpf@vger.kernel.org,
	kasan-dev@googlegroups.com, linux-mm@kvack.org,
	linux-x25@vger.kernel.org, rust-for-linux@vger.kernel.org,
	linux-sound@vger.kernel.org, sound-open-firmware@alsa-project.org,
	linux-csky@vger.kernel.org, linux-hexagon@vger.kernel.org,
	loongarch@lists.linux.dev, linux-m68k@lists.linux-m68k.org,
	linux-openrisc@vger.kernel.org, linux-parisc@vger.kernel.org,
	linux-sh@vger.kernel.org, linux-arch@vger.kernel.org
Subject: Re: [RFC PATCH v1 9/9] uaccess: Convert small fixed size
 copy_{to/from}_user() to scoped user access
Message-ID: <ae_DR6NYwy05mhAe@yury>
References: <cover.1777306795.git.chleroy@kernel.org>
 <8780eb2ef80575931a339e5225bc80eb13e9be6c.1777306795.git.chleroy@kernel.org>
Content-Type: text/plain; charset=us-ascii
Content-Disposition: inline
In-Reply-To: <8780eb2ef80575931a339e5225bc80eb13e9be6c.1777306795.git.chleroy@kernel.org>
X-ClientProxiedBy: BN9PR03CA0683.namprd03.prod.outlook.com
 (2603:10b6:408:10e::28) To CY8PR12MB8300.namprd12.prod.outlook.com
 (2603:10b6:930:7d::16)
MIME-Version: 1.0
X-MS-PublicTrafficType: Email
X-MS-TrafficTypeDiagnostic: CY8PR12MB8300:EE_|LV3PR12MB9166:EE_
X-MS-Office365-Filtering-Correlation-Id: bdfef69d-b376-4a04-fa4d-08dea4995fc0
X-MS-Exchange-SenderADCheck: 1
X-MS-Exchange-AntiSpam-Relay: 0
X-Microsoft-Antispam:
	BCL:0;ARA:13230040|10070799003|1800799024|366016|7416014|376014|22082099003|18002099003|56012099003;
X-Microsoft-Antispam-Message-Info:
	od/438acft25Q7RIva94Fxe/74ILZrpC6Pf2LMgzKavMVDWiDXC8uUoFq51iqUDaeoOUGT2b7TNIfay4ho0beW8vBSY0l8mrYDUcnR7pCpHtvSlyDnRz5/wnwyZGpPSPU6HBMY0s4gTTvMQ7j0VfwxRe5kbixpH2JA3xdZrASXEZ0pDl1d1WJThBE+/uDOUOALBd8YwZ/+eeNpvnwFCD5DW3KE3lR/Xb2wgRjP9OoLwepFg1JjlfF7x6lpvxpSuiwfFobDUXA7Mqqcz9R6V0ZMrYf9s0pCS4lu/upE91liCZMK8a6QVcT7bHE1yqSUEYYdyWzmVdOCGRVsBtyzVPHpVCQ/H/ouWq0d8egAxhDCKXbaYNKhonqrA1fBXpvk7reDl5D9oT4zLApwPnJxjUXjXzFA80TEJcRTmM79P+K2WrN+x//RhjVGYrw5pmVliJLTW6G/qltB//r5oYHnZqjOuThXK718Z7PTqzjJ0ujUCmUN5I3dUam74AL7WiU47YOnjqHI9K4DCSsiwq2QroO6C3f6BX2+0WK07DzbTXOTuRKVwj1Nkp+F2oyodFlbSeL+I1H/MYBrTTz4hFS3IGNmkgEDTZWJeEFpqkCbnH+WC250/oWJ2xTuA6uT0mLue6TD/so+mr20GkqDu2inq+/ILmI9NvNmWVpTgfUNLmDuiIhDW2dC1N/PLuNJVvEX/LdXBnej8nvO2Fm1k4Q6rMCXk86ZerjhL/ymTd8rnhDvA=
X-Forefront-Antispam-Report:
	CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:CY8PR12MB8300.namprd12.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(10070799003)(1800799024)(366016)(7416014)(376014)(22082099003)(18002099003)(56012099003);DIR:OUT;SFP:1101;
X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1
X-MS-Exchange-AntiSpam-MessageData-0:
	=?us-ascii?Q?WIrm7lyr11ondb9zM/aFtj1gKgk8kypk8TAM2g+Ohof+5WQlgtD6zGVPj+Qj?=
 =?us-ascii?Q?Fl/MRzepnMFlWaP+kwU9gjhd02anG8z5ZTflf6LYu+ClIguvgmZIH1trgYIR?=
 =?us-ascii?Q?xpyX4jFk+mQH/otJqXtEelOmF0//lkOX7LVVqlCazvFwry5EU7dmu7JNJT/W?=
 =?us-ascii?Q?IbGi6+a3YEyzdP/EZUUe3nrTxRbrRZDNSHUnwQzjhjLJiSehNgJ8L+6UzAPV?=
 =?us-ascii?Q?dDiNnwHotXKiFihodbBo+fEfI9W9aOKkkT0AlLxUbPwVzVgwuLl/IAV6kHSk?=
 =?us-ascii?Q?Kzy9/VaCvcedh+Ekb8EKVC7l56CzmOv5ObfYMSjBWAnrfSoPrNwnCy5NnRdU?=
 =?us-ascii?Q?+FtCnuU/ZC3EWU1Q5bSAez3Rz0iUWDmQskAPeHnSo6sutK7XR5O2RLiUuC/r?=
 =?us-ascii?Q?TIh2Opz5P54jcYUxkqzjzr+dfuklzkPQHeF1CQUTNTlOgTAHwWNUkyQLDi3E?=
 =?us-ascii?Q?NDPoW5DvCmJyWmxlu3tHIfhbRrBWcq2jwEo4eXMYF6sudilgr+NzPPVAXOBs?=
 =?us-ascii?Q?W6uDfUElRNq/ZzmcZcSEdDnPL0FMBctSTiRLhtrsd3gRRYkZvoBJZH9wsh0x?=
 =?us-ascii?Q?GbgOffPEcvqnuzeH3DQD7hxNGedeVFBu5LMfUDfI8tj0JD0NoO/jMCEwwEGj?=
 =?us-ascii?Q?7Zi4xjZGRB85BK8gVagzsgxl6saeseYWtOB89bfaFHfEn7HIk8Qq6sZMkaUV?=
 =?us-ascii?Q?yJP5GoHZqlylAB4zzpIdOnati8J4GDK/OEUABB6jkmNyPeclWcz3JebExSLH?=
 =?us-ascii?Q?ojb86TGjorvvhaPeWb0Yty2WVHv32UrZhDB58hWeKWGUhdof5c/zfJOiZVOT?=
 =?us-ascii?Q?CJZCc/8139A05YvEL0fjDybsXnGcOzdz+mYd84MuTyf9vfyb2aP1taw2oHX/?=
 =?us-ascii?Q?K0wCh7XR/H/K7aaltZN8NRbRjuDiXGsAQd9dLyhJq4YfT2SK73apbNYHwsJd?=
 =?us-ascii?Q?3zR8++zrasGafDCm+TTNhPJkSJ1MDgMJtjv+Y9PwKG/4VF+yZvV3vgJGVFPt?=
 =?us-ascii?Q?4YicrggVdQoDsPXtMFzhWO14linokl4iwe5aTOUhxYvXZaAyowQpt5wfurCs?=
 =?us-ascii?Q?Ayh9RyF73+nepCUQNc4DUAy07tlFq34oGBkP1+a3753zs4MtmQJulZf3OBuZ?=
 =?us-ascii?Q?8F1Z190YLYL3QKV3jRJoJFKhU2RgBcxzG8PxQBDiQn2AWAUsEQLhYhcpZcuj?=
 =?us-ascii?Q?53L9khHWvM6P9qP8xVFd7/dphsBE6M7uEjQ2JGmn1fKCkKJBY/FtpAUEIEY5?=
 =?us-ascii?Q?dYVWF6lgfU0RkNfTzK7/pit+VVUkKfk4YFbI1g+As9p6XbLpIHR9no3K8oRY?=
 =?us-ascii?Q?v33Wt8tpGQ/3QrvQJMeRlNrgwRWMxq3uLTATB4vDm1ilG0jimpQPBgxrT/2X?=
 =?us-ascii?Q?VPGoCPEn4HUnV1Mf+lE7vxxp/vFpjRqDvwJGbqps0Rn8nFvgrd5mY4EHSgZ6?=
 =?us-ascii?Q?smSLlB6AP2eTUV01HAxRBefOvYtdF0qSe93p9Fi3Qzo4FDMJkG8BRLxDyuov?=
 =?us-ascii?Q?k8rLzPpoXpCwmf+kEClhjVMbMDbLikFkJlonRdZYJawiYwXY05H8rZBhQLWP?=
 =?us-ascii?Q?0feHNzp89zyUqPHP7LbSe0EVRO2Kaec+AqlfTVYtXHhrn6dgv4ER9PjPwQYz?=
 =?us-ascii?Q?SGZWHJfMP3Dwbx/9JF7Ar0+yL48OyXDsjmJqC5FYyMLMeziXXEes+OYa4KgX?=
 =?us-ascii?Q?5okmJIxxdB9AxsqQWPd+OzFWlm0XzrT0CAAYw0BwF9WQUj40YsjQQ+uWqIJ+?=
 =?us-ascii?Q?MlBpJt8puB7ETX/Bjze8q8/K1KeWGNB4KYXANyzSR2LWPBEqi39e?=
X-OriginatorOrg: Nvidia.com
X-MS-Exchange-CrossTenant-Network-Message-Id: bdfef69d-b376-4a04-fa4d-08dea4995fc0
X-MS-Exchange-CrossTenant-AuthSource: CY8PR12MB8300.namprd12.prod.outlook.com
X-MS-Exchange-CrossTenant-AuthAs: Internal
X-MS-Exchange-CrossTenant-OriginalArrivalTime: 27 Apr 2026 20:12:57.8040
 (UTC)
X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted
X-MS-Exchange-CrossTenant-Id: 43083d15-7273-40c1-b7db-39efd9ccc17a
X-MS-Exchange-CrossTenant-MailboxType: HOSTED
X-MS-Exchange-CrossTenant-UserPrincipalName: L4Ck4zF95sPRkpw+1DBvmDDt+EvJGjHXhYAqkKsZVyTO5WLUeoARd7Y3XQH+qd9LnDnkEcQd9xWJtVVZZwcboA==
X-MS-Exchange-Transport-CrossTenantHeadersStamped: LV3PR12MB9166
X-purgate-ID: tlsNG-c201ff/1777320785-2AD6F443-16CCA74E/0/0
X-purgate-type: clean
X-purgate-size: 888

On Mon, Apr 27, 2026 at 07:13:50PM +0200, Christophe Leroy (CS GROUP) wrote:
> copy_{to/from}_user() is a heavy function optimised for copy of large
> blocs of memory between user and kernel space.
> 
> When the number of bytes to be copied is known at build time and small,
> using scoped user access removes the burden of that optimisation.
> 
> Signed-off-by: Christophe Leroy (CS GROUP) <chleroy@kernel.org>
> ---
>  include/linux/uaccess.h | 47 +++++++++++++++++++++++++++++++++++++++++
>  1 file changed, 47 insertions(+)
> 
> diff --git a/include/linux/uaccess.h b/include/linux/uaccess.h
> index 33b7d0f5f808..3ac544527af2 100644
> --- a/include/linux/uaccess.h
> +++ b/include/linux/uaccess.h
> @@ -50,6 +50,8 @@
>   #define mask_user_address(src) (src)
>  #endif
>  
> +#define SMALL_COPY_USER		64

Let's make it L1_CACHE_BYTES, and maybe configurable?



From xen-devel-bounces@lists.xenproject.org Mon Apr 27 20:40:23 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 27 Apr 2026 20:40:23 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1295299.1571971 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wHSkR-0006BL-QS; Mon, 27 Apr 2026 20:40:07 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1295299.1571971; Mon, 27 Apr 2026 20:40: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 1wHSkR-0006BE-N7; Mon, 27 Apr 2026 20:40:07 +0000
Received: by outflank-mailman (input) for mailman id 1295299;
 Mon, 27 Apr 2026 20:40:06 +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 1wHSkQ-0005zb-5R
 for xen-devel@lists.xenproject.org; Mon, 27 Apr 2026 20:40:06 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wHSk9-006VSk-RB
 for xen-devel@lists.xenproject.org; Mon, 27 Apr 2026 22:39:49 +0200
Received: from [10.42.69.7] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <andrew.cooper@citrix.com>)
 id 69efc987-2eae-0a2a0a5409dd-0a2a45078c64-26
 for <xen-devel@lists.xenproject.org>; Mon, 27 Apr 2026 22:39:49 +0200
Received: from [40.93.196.54]
 (helo=SA9PR02CU001.outbound.protection.outlook.com)
 by tlsNG-ef75cf.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.1)
 (envelope-from <andrew.cooper@citrix.com>)
 id 69efc991-229c-0a2a45070019-285dc4362b10-3
 for <xen-devel@lists.xenproject.org>; Mon, 27 Apr 2026 22:39:49 +0200
Received: from IA1PR03MB8288.namprd03.prod.outlook.com (2603:10b6:208:59e::6)
 by PH8PR03MB7197.namprd03.prod.outlook.com (2603:10b6:510:25d::14)
 with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9846.26; Mon, 27 Apr
 2026 20:39:41 +0000
Received: from IA1PR03MB8288.namprd03.prod.outlook.com
 ([fe80::b5ee:28c6:e04b:5599]) by IA1PR03MB8288.namprd03.prod.outlook.com
 ([fe80::b5ee:28c6:e04b:5599%3]) with mapi id 15.20.9846.025; Mon, 27 Apr 2026
 20:39: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=oUh77Y8MYJlZhKjg7cr9IZMNNqrz/rZ2qa3tNEc+fec4C7Ju2THcWJblbVnRaqWsvyoKQu+dUhBVNp4GpuLjmVm37rB1bK2CCCYDLT4BzK6PrU+SzNHI48mXeHIxXZZ1yckmz04lu6d99FmaPs4HZMLrAY6IoHyP3tghy99Mz1KEnbJuD4AsUgTBdf48+3RcVVgHji2YBIDA5Qvt/o6jqudWrz+L9xONlDtcVp5UYCJO+vJGt1BvCEOiHbDs8Q8H7qSmSnmE5EFe5fDVwFzrriTXjJgTDZFTAjlIDkMhLoj8cX3ZD0mM4vhMDH5j+EBD1cgIeMa5/5R7wZRZN3faMA==
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com;
 s=arcselector10001;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1;
 bh=587KSE/mBHlcC1zyB/ZzV6dcer4yy+VvGcgD8lme/jE=;
 b=JBSBPDWe2m0PUXgGc7whO81nXvxcarqS1U4Y+X8CQYCyQDQp+k4PTYxZYzV+P7o8uGNnzVqUd8ZSEiYQ/X29Gg7jV3JZdkFRu+SLujKDNw5PQ66DfWoCR3smuF4XOShj5DAgGaeS69ZUB2th02krtSFErSEjyLtujddPS1MOz3p/oh4aeeg2pXQXOID0eUQwz4WqzzPzCNJ1VT/xa19Ags3nCGgINqRiR24y1CZmhyqxt81o5jZYYKSWtuFkGu8/MzSQWt7aXGQeUe2HjZ28NR0imAc46B0gAucQ5+9ruoMJw7ZVD1v2RP/rIj8FC5uO9FnXzXmU7m2QSDQXx6aPSg==
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=587KSE/mBHlcC1zyB/ZzV6dcer4yy+VvGcgD8lme/jE=;
 b=mXaS/4S2ySUjjDWZ0IHnYqwUL9esfa44nwOyfeA3PSxmst6DepNPBSqa3gJjLITYVh03D8R5fmbdXIH3RhlOIPFr37oRxRWcMHUeKl83DVTcXJtcDCT6AgU6UejcOMBE1V143s18p1Wly9dN8WRFl0AoPR/HJoB+cbQxLS8VlD4=
Authentication-Results: dkim=none (message not signed)
 header.d=none;dmarc=none action=none header.from=citrix.com;
Message-ID: <f54c3c2b-33da-42a0-80b7-0f6615d930ce@citrix.com>
Date: Mon, 27 Apr 2026 21:39:33 +0100
User-Agent: Mozilla Thunderbird
Cc: Andrew Cooper <andrew.cooper3@citrix.com>,
 Andrew Morton <akpm@linux-foundation.org>,
 Linus Torvalds <torvalds@linux-foundation.org>,
 David Laight <david.laight.linux@gmail.com>,
 Thomas Gleixner <tglx@linutronix.de>, linux-alpha@vger.kernel.org,
 Yury Norov <yury.norov@gmail.com>, linux-kernel@vger.kernel.org,
 linux-snps-arc@lists.infradead.org, linux-arm-kernel@lists.infradead.org,
 linux-mips@vger.kernel.org, linuxppc-dev@lists.ozlabs.org,
 kvm@vger.kernel.org, linux-riscv@lists.infradead.org,
 linux-s390@vger.kernel.org, sparclinux@vger.kernel.org,
 linux-um@lists.infradead.org, dmaengine@vger.kernel.org,
 linux-efi@vger.kernel.org, linux-fsi@lists.ozlabs.org,
 amd-gfx@lists.freedesktop.org, dri-devel@lists.freedesktop.org,
 intel-gfx@lists.freedesktop.org, linux-wpan@vger.kernel.org,
 netdev@vger.kernel.org, linux-wireless@vger.kernel.org,
 linux-spi@vger.kernel.org, linux-media@vger.kernel.org,
 linux-staging@lists.linux.dev, linux-serial@vger.kernel.org,
 linux-usb@vger.kernel.org, xen-devel@lists.xenproject.org,
 linux-fsdevel@vger.kernel.org, ocfs2-devel@lists.linux.dev,
 bpf@vger.kernel.org, kasan-dev@googlegroups.com, linux-mm@kvack.org,
 linux-x25@vger.kernel.org, rust-for-linux@vger.kernel.org,
 linux-sound@vger.kernel.org, sound-open-firmware@alsa-project.org,
 linux-csky@vger.kernel.org, linux-hexagon@vger.kernel.org,
 loongarch@lists.linux.dev, linux-m68k@lists.linux-m68k.org,
 linux-openrisc@vger.kernel.org, linux-parisc@vger.kernel.org,
 linux-sh@vger.kernel.org, linux-arch@vger.kernel.org
Subject: Re: [RFC PATCH v1 2/9] uaccess: Convert INLINE_COPY_{TO/FROM}_USER to
 kconfig and reduce ifdefery
To: Yury Norov <ynorov@nvidia.com>,
 "Christophe Leroy (CS GROUP)" <chleroy@kernel.org>
References: <cover.1777306795.git.chleroy@kernel.org>
 <9fe875d2f55af59c12708336c571a46038528678.1777306795.git.chleroy@kernel.org>
 <ae-tVFVfx72oCC_i@yury>
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: <ae-tVFVfx72oCC_i@yury>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
X-ClientProxiedBy: PR3P250CA0028.EURP250.PROD.OUTLOOK.COM
 (2603:10a6:102:57::33) To IA1PR03MB8288.namprd03.prod.outlook.com
 (2603:10b6:208:59e::6)
MIME-Version: 1.0
X-MS-PublicTrafficType: Email
X-MS-TrafficTypeDiagnostic: IA1PR03MB8288:EE_|PH8PR03MB7197:EE_
X-MS-Office365-Filtering-Correlation-Id: 2c641edc-eb50-4bae-eff2-08dea49d1bca
X-MS-Exchange-SenderADCheck: 1
X-MS-Exchange-AntiSpam-Relay: 0
X-Microsoft-Antispam:
	BCL:0;ARA:13230040|366016|7416014|376014|1800799024|56012099003|22082099003|18002099003;
X-Microsoft-Antispam-Message-Info:
	9FY6m28LCnvy2YkNWJMU+RNswXX+UwdsQPdASIMzD4ybDBQF2lnqvw7QSZPd4BDHC6544/xGvr7GB2IBHK0xFm5TP97Q4B1LLrSYLufDx/SF+LLyKnRdZAhIUZNWvNg0Xs5VZ3Y96fvuQgvPSnPxAQkGJsp8+l2efbhOxHp/BdR2lVMpM++TBM4+FCcwak7FFBclmvyZjFF5YMn4tZiem79sc1Btt0cKEs8JPf9TGbKnDGPH/J9Y8EhC24T8KX1ItZRFFeXIU+G6K9NRUWxxrH7jD+OpsX4eWEXPyZJBnTOAua4918teYDpsYCArRx00EqYolosDciYnyZHCFXIVcvwB1j6VfSrJBdoJr9q4FR6IUGHdUZwHvSFkcMyhayrOK9wwb9KMjU6gnMokNDgilgm1hbCSR7oay+ZI0URVG6m2aFFU+eEEPwwe3PGIMvwNRVkUwpwiTyWxaqEmuwLDdZ0Qzn670vzddOnAl8EWaxRrUT6cmlQ/tvguQHMpnV2hNmfeyZUAZ3+5h41r/ERZCpoFCQ5C69bfEUQcbYKr9ym2osWQa1/n5l0sqiSYk/6JECxxCxmcHamWHf7LNL/hcXOMsg/bNvRMqStPCAohY+6JZNi7L0Ar/b4V3ZLBFmWPdpbmlnjlxOXg/5Kda/Bbg+FvpEqD1RRP+5yqOU3Vj/50V74AdZePk80A+r3os1lE5a/QEOkr6z00c3SGyd8xmkOuMWHXsMLEY/YVFSHzUb8=
X-Forefront-Antispam-Report:
	CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:IA1PR03MB8288.namprd03.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(366016)(7416014)(376014)(1800799024)(56012099003)(22082099003)(18002099003);DIR:OUT;SFP:1101;
X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1
X-MS-Exchange-AntiSpam-MessageData-0:
	=?utf-8?B?MTdZYld2cGR3RFV6NUZRcm9jVXBRMlhvSlN4K2xTZ1Bkdy9GUWlHTVh6VGxr?=
 =?utf-8?B?by84cnBsbmVBUzVEaHhsSXFjVEdycnJOcmQwb1JvWE1QMW1Ma2JMWnhXQ3A1?=
 =?utf-8?B?YU9lV0ZORHllTDZtSVBKQ3RlMnp6dE5LNEhwNE5mL2hJMlZCVk9ZbkRtSDdn?=
 =?utf-8?B?K29mVGpIY2JkOWpVWnIrYjNyNHh2VFlDdzhadjc5bFJTUDMxbkJQSDZUWit1?=
 =?utf-8?B?bHNwY2xuWjZWOGNGRVJ0NHl3cEJnN3FmeXlmTVFtTkw0WVFlNkZqTk8zYkda?=
 =?utf-8?B?RXRsR2VPRHZTaytHeUNYN0l1UkJXV3RxZTA3WStCaE5ObUMxWW4rSmVIb3lj?=
 =?utf-8?B?Mzh0aXFtSnJ2R3Q3YVBIYVpCSlFjYXR6bGhweXFka0U1TlNOdkxrMjRFK1ZL?=
 =?utf-8?B?Y0ZDYmFPa1I1STMzdEVSN0dySDNuRlp2U0hiUmZ1ODVCaWtaTlRwVG56ZGhP?=
 =?utf-8?B?NmpMWWQ3TUlCaVR0ZHBNRkg2dm5BdUtPV1YrcTJyTFpLNXVFMkVqYzk0Y1ZD?=
 =?utf-8?B?ckIrT0dCc21rdzk0UURPOW41YTRFbGtXeVM1N0VqWEJIWTJEdkFnQjR3Wjlm?=
 =?utf-8?B?NnZxRkZ0MkFlTjg0SUV5dDVLZFQrN1paTUdzeE51enZYMFRjUlZtODdaOFZy?=
 =?utf-8?B?a1VFMnNYd1Nac3RWZkUxWlJsNFoxM2g2djFzZW1sM3NJZFd2ZS84WnF3RnJL?=
 =?utf-8?B?alZQck5OcVdXeklCMkY2WXBOMTM3WEUxSGovdXNwQm9XaDlhRWVFdmdXaEcx?=
 =?utf-8?B?QUovaFVUQnE5cXY5QUlzWnFjZDNLOXNHKzBtTTRkNVZOK1J2cldwL2dkdnlH?=
 =?utf-8?B?VWd1YkwzWTZHaWZnb0RrUStuZm1CT2VxM1JoYjladkFVb1M0YlpveS9QRndL?=
 =?utf-8?B?S0R3VnZTMC9EUzRxb0dodm02eHNKRFdDT1hmWlM3U29yN2ZWOUxBVXJDTHlS?=
 =?utf-8?B?NkZDRWNnWVEyczlBTC82MUcvM1pKVldDZGgrWkZOU3VnRlh6OHpwQ25ra2Fj?=
 =?utf-8?B?RjlHMmE2T3VLWUZyRytIR3pqWVdUZWVMSmx5Z1FZTXl1TFFORTNFVXFheFQ2?=
 =?utf-8?B?WmdlS3F6SnRzbEpzUTZGdkhzRHdpbGVBYUZOZHoweTFsV3ZyZ0swRFhNT3hm?=
 =?utf-8?B?dWZSYzhCblRHS3BUdzRxRktBZVFpOGplZExETEwzTEVlbktWaGxsYlkySFk4?=
 =?utf-8?B?WHltVy9EYTVRRktUQWFxSGhNaExjemNLY2YzT1ByaUtEUkhvZWIzaWJVL0Yy?=
 =?utf-8?B?M3ZoamIvMkpzZTJRSGJWSkdxV3N1c0EwSzFGMU1pNnJmdDJ0OW9sQTdkLzRS?=
 =?utf-8?B?YWZZRG9WR0loTzFFQy9lL0N0NWxaOFpiYnhXZjdIaFVoenBwMEpFY3VsU2pN?=
 =?utf-8?B?dUprK2lLRHVEcHpCQklJT0hycSs2K2MrQWNVdFltZ2NPUjFRUU9wakV1QkJa?=
 =?utf-8?B?YzNKN2FGTnlBUU4yZUdOTTIxd3hpNVFaaytwN3Z4cmhJT2xIVmFIbzdQU2Za?=
 =?utf-8?B?YzBDOFFld3BCRTB3elU3MWRiS0lkRGJNZ0dvcDR0blZlL0FIYTRLMTJidisz?=
 =?utf-8?B?T1RQZFM2NWxTcVpJUlpySTdZWFExTlozOTlJTUxqQUgyRUlpM3F4OVdVeDk1?=
 =?utf-8?B?UmlmaFliTGxkTzB4NmxEVlZUZjdzWUJINzdBWlo3Q3B2cGJCbmoyK2V6K2Jj?=
 =?utf-8?B?ZlBiVDJHMTY5cGdmeWlvbENXM3diVXN3elMzUEluL1pJY3owUWRmektKaE1Y?=
 =?utf-8?B?bEpwendKKzRtMVZieHhZamxMK0QzL2JHb3NzYTVvUjZwNjZOREVaWXpwTVNO?=
 =?utf-8?B?aGdyL2lwZGxoM0Y2b2w1MlhzRVNzUitBVjNTbGJlRkRGZElGV2tXUG5OWmpw?=
 =?utf-8?B?NmhHYStiK2JsTDlzU0VoMEhRTXJpSVg0T2czNzlrcUlKL2hvdkdFWkhqalF5?=
 =?utf-8?B?Z25wMitPVGhOMXNJc3J5WFIyRnBqOWttTUg3WTUwNW5HYlZTYmxNTEpVVUU5?=
 =?utf-8?B?dTFqR1pRMTAvWHFHUFozRHlMdmJUQS9NUHdsQWoxRHRtZUZIdmx4SzNEQkhm?=
 =?utf-8?B?dFRzTmtvdkZEMS9Ib29YbHNRZmVMZ3dnVWlrWmJMK2tEems3RUZSdGtVZjNB?=
 =?utf-8?B?eWUweitoQTRvcnBiQnRZSlhSeG9oa2U3MER6NTdyWWY2VE5VazNycmp2YWd4?=
 =?utf-8?B?T2RCQjBPSVZFL1dMQiswMm95WE5XMkxuMEZnVGt4dmhncWgzb0tuTWhDYWs0?=
 =?utf-8?B?Uy91T0hVSFpNQS9VSDJsSHNFN3VBR2R0eUI4NkFaTmVRb3JjcXBRWFYrSlZ0?=
 =?utf-8?B?MVI2V1daUUxINW1OeXdLelV0TDlEYWZKWnZ1TWdZSk5tNS9wVkIyY2d3TGdV?=
 =?utf-8?Q?Z28RZNN4T+YLRj6w=3D?=
X-OriginatorOrg: citrix.com
X-MS-Exchange-CrossTenant-Network-Message-Id: 2c641edc-eb50-4bae-eff2-08dea49d1bca
X-MS-Exchange-CrossTenant-AuthSource: IA1PR03MB8288.namprd03.prod.outlook.com
X-MS-Exchange-CrossTenant-AuthAs: Internal
X-MS-Exchange-CrossTenant-OriginalArrivalTime: 27 Apr 2026 20:39:41.7379
 (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: 7P/OK4nVkYKoOZOPceJ7mFnHteXT+or/VZsK1G7zm1+pF+DiXElHabbIzD2P/Aa25ppayHLm/G+R8tVFazmqVeDsv153yTNZHilISIGWHks=
X-MS-Exchange-Transport-CrossTenantHeadersStamped: PH8PR03MB7197
X-purgate-ID: tlsNG-ef75cf/1777322389-16C64C48-7F73A843/0/0
X-purgate-type: clean
X-purgate-size: 722

On 27/04/2026 7:39 pm, Yury Norov wrote:
> On Mon, Apr 27, 2026 at 07:13:43PM +0200, Christophe Leroy (CS GROUP) wrote:
>> Among the 21 architectures supported by the kernel, 16 define both
>> INLINE_COPY_TO_USER and INLINE_COPY_FROM_USER while the 5 other ones
>> don't define any of the two.
>>
>> To simplify and reduce risk of mistakes, convert them to a single
>> kconfig item named CONFIG_ARCH_WANTS_NOINLINE_COPY which will be
> We've got a special word for it: outline. Can you name it
> CONFIG_OUTLINE_USERCOPY, or similar?

You can't swap the "in" for "out" like this.  "out of line" is the
opposite of "inline" in this context, while "outline" means something
different and unrelated.

~Andrew


From xen-devel-bounces@lists.xenproject.org Mon Apr 27 20:48:17 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 27 Apr 2026 20:48:17 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1295312.1571980 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wHSsB-00071H-Vv; Mon, 27 Apr 2026 20:48:07 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1295312.1571980; Mon, 27 Apr 2026 20:48:07 +0000
Received: from [127.0.0.1] (helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wHSsB-00071A-TE; Mon, 27 Apr 2026 20:48:07 +0000
Received: by outflank-mailman (input) for mailman id 1295312;
 Mon, 27 Apr 2026 20:48:06 +0000
Received: from [195.190.135.10] (helo=mx.expurgate.net)
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <ynorov@nvidia.com>) id 1wHSsA-000714-Gp
 for xen-devel@lists.xenproject.org; Mon, 27 Apr 2026 20:48:06 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wHSs9-002Z0n-Qb
 for xen-devel@lists.xenproject.org; Mon, 27 Apr 2026 22:48:05 +0200
Received: from [10.42.69.12] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <ynorov@nvidia.com>)
 id 69efcb39-e002-0a2a0a5209dd-0a2a450caaac-42
 for <xen-devel@lists.xenproject.org>; Mon, 27 Apr 2026 22:48:05 +0200
Received: from [52.101.48.33]
 (helo=MW6PR02CU001.outbound.protection.outlook.com)
 by tlsNG-d25034.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.1)
 (envelope-from <ynorov@nvidia.com>)
 id 69efcb83-62f1-0a2a450c0019-346530218e39-3
 for <xen-devel@lists.xenproject.org>; Mon, 27 Apr 2026 22:48:05 +0200
Received: from CY8PR12MB8300.namprd12.prod.outlook.com (2603:10b6:930:7d::16)
 by SA3PR12MB7829.namprd12.prod.outlook.com (2603:10b6:806:316::13)
 with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9870.16; Mon, 27 Apr
 2026 20:47:58 +0000
Received: from CY8PR12MB8300.namprd12.prod.outlook.com
 ([fe80::ce75:8187:3ac3:c5de]) by CY8PR12MB8300.namprd12.prod.outlook.com
 ([fe80::ce75:8187:3ac3:c5de%3]) with mapi id 15.20.9870.013; Mon, 27 Apr 2026
 20:47: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=temperror header.s=selector2 header.d=Nvidia.com header.i="@Nvidia.com"
ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none;
 b=EKJfc55gBn7/JbJs21SiRzUuW0AsfDVMTGZmA7fovsVtMpwpJXl5dlFpVdpigSVe3EWg0hBB0fu4CdI1q6zDfHGeLadKtZhEqjE7ydQqdN2j4UzanfOMKli8tBLxG4xE9Gnus/RcdDUX4LAPWvelU3Kl+4NLuekf+MSaWUp21k9wamSHm393QK0i3y9MWuF2ysFyqzpmJJz8Mdo8isyyLOcS7eDXfzYJEZpvSAG2PouwHF3KGxptafxFzeABcOnr6b5s15caTbUtbWG0RfIUe5QbTeBgBo6MVAuW/CqNsRX4shiveKpaPp65fKEDjq8A+rCDlEl4UQlySXJLv6V2KA==
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com;
 s=arcselector10001;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1;
 bh=wJfDnkGQDnB7YqaX7jhz4r3pYQAr7nSK9IhgO8ax4J4=;
 b=rsQdUUbJcU9so0R7/zFg7mRBFAySidN5CdO0zGCGM86QKGAxvA74BKUH63WvS3Tk0mL+vASpIam1O4Zmh9rAGrdThUTlvlpfrqYPGShsqKfmDSbcq7tlmSOjpQkHGHahsJfn4U+n1o1vBx2EYhJ7brHFuKBy8kjZ7GFVjMtKqJ2iNZogaxH/G+wSti4US7N076mGb2fGyHmqtBMXTy6dvPieTRnpIUVrrTK2hX7jlr0w0xx58LcxU6+u4oe9MNGftQmzh7t1iNY2TSYrUg+Wkyi7Yd1NqHn0grLjG9obOU0YhlxEFl5sm8V4hgpq+BBuW9cBSBY8C+KZtmfBhZuaaw==
ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass
 smtp.mailfrom=nvidia.com; dmarc=pass action=none header.from=nvidia.com;
 dkim=pass header.d=nvidia.com; arc=none
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=Nvidia.com;
 s=selector2;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck;
 bh=wJfDnkGQDnB7YqaX7jhz4r3pYQAr7nSK9IhgO8ax4J4=;
 b=Ekpevu7dvZexS27zf6AAushYVGKE2eyKqudikxclym3HcV42ATS6kdvhzRmxkgoE3UM6ANC+pGpRxFyh9gBzNh+b00reJl7lqMvIcy0JSfz+541KpWAKDyh+fz1lMlsGeW3w+f1gCG0cF+47eMxsS70gUjxMLhEN/viVEI3YCTpyhfe82oiQ3gIWQdD+eiGmuV51mjdQ3D5GBVCPtTRshca6OeMvxGY3iEbIzJsPiy+dpjuwSxW2GRx6o6JVH4a9y2xQ5lYy5EeK7FzcAG1vNoor5k6rR6JO3aXcfZMvQmoZFdkb1mqFlj8XmeJn6ScLYqvaY181izAl3zJrlxnFHg==
Authentication-Results: dkim=none (message not signed)
 header.d=none;dmarc=none action=none header.from=nvidia.com;
Date: Mon, 27 Apr 2026 16:47:53 -0400
From: Yury Norov <ynorov@nvidia.com>
To: Andrew Cooper <andrew.cooper3@citrix.com>
Cc: "Christophe Leroy (CS GROUP)" <chleroy@kernel.org>,
	Andrew Morton <akpm@linux-foundation.org>,
	Linus Torvalds <torvalds@linux-foundation.org>,
	David Laight <david.laight.linux@gmail.com>,
	Thomas Gleixner <tglx@linutronix.de>, linux-alpha@vger.kernel.org,
	Yury Norov <yury.norov@gmail.com>, linux-kernel@vger.kernel.org,
	linux-snps-arc@lists.infradead.org,
	linux-arm-kernel@lists.infradead.org, linux-mips@vger.kernel.org,
	linuxppc-dev@lists.ozlabs.org, kvm@vger.kernel.org,
	linux-riscv@lists.infradead.org, linux-s390@vger.kernel.org,
	sparclinux@vger.kernel.org, linux-um@lists.infradead.org,
	dmaengine@vger.kernel.org, linux-efi@vger.kernel.org,
	linux-fsi@lists.ozlabs.org, amd-gfx@lists.freedesktop.org,
	dri-devel@lists.freedesktop.org, intel-gfx@lists.freedesktop.org,
	linux-wpan@vger.kernel.org, netdev@vger.kernel.org,
	linux-wireless@vger.kernel.org, linux-spi@vger.kernel.org,
	linux-media@vger.kernel.org, linux-staging@lists.linux.dev,
	linux-serial@vger.kernel.org, linux-usb@vger.kernel.org,
	xen-devel@lists.xenproject.org, linux-fsdevel@vger.kernel.org,
	ocfs2-devel@lists.linux.dev, bpf@vger.kernel.org,
	kasan-dev@googlegroups.com, linux-mm@kvack.org,
	linux-x25@vger.kernel.org, rust-for-linux@vger.kernel.org,
	linux-sound@vger.kernel.org, sound-open-firmware@alsa-project.org,
	linux-csky@vger.kernel.org, linux-hexagon@vger.kernel.org,
	loongarch@lists.linux.dev, linux-m68k@lists.linux-m68k.org,
	linux-openrisc@vger.kernel.org, linux-parisc@vger.kernel.org,
	linux-sh@vger.kernel.org, linux-arch@vger.kernel.org
Subject: Re: [RFC PATCH v1 2/9] uaccess: Convert INLINE_COPY_{TO/FROM}_USER
 to kconfig and reduce ifdefery
Message-ID: <ae_LeSk7XDEseaZb@yury>
References: <cover.1777306795.git.chleroy@kernel.org>
 <9fe875d2f55af59c12708336c571a46038528678.1777306795.git.chleroy@kernel.org>
 <ae-tVFVfx72oCC_i@yury>
 <f54c3c2b-33da-42a0-80b7-0f6615d930ce@citrix.com>
Content-Type: text/plain; charset=iso-8859-1
Content-Disposition: inline
Content-Transfer-Encoding: 8bit
In-Reply-To: <f54c3c2b-33da-42a0-80b7-0f6615d930ce@citrix.com>
X-ClientProxiedBy: BN9PR03CA0735.namprd03.prod.outlook.com
 (2603:10b6:408:110::20) To CY8PR12MB8300.namprd12.prod.outlook.com
 (2603:10b6:930:7d::16)
MIME-Version: 1.0
X-MS-PublicTrafficType: Email
X-MS-TrafficTypeDiagnostic: CY8PR12MB8300:EE_|SA3PR12MB7829:EE_
X-MS-Office365-Filtering-Correlation-Id: e21d145c-03ba-4a6a-9777-08dea49e433e
X-MS-Exchange-SenderADCheck: 1
X-MS-Exchange-AntiSpam-Relay: 0
X-Microsoft-Antispam:
	BCL:0;ARA:13230040|376014|7416014|1800799024|366016|10070799003|22082099003|56012099003|18002099003;
X-Microsoft-Antispam-Message-Info:
	HCC9cdge92V4m6hZLbkxYjY9nSdZMvY3eUrYJzVoB9gQOqmxAPK6rdaWqs+TbJRNyZBGFNrE679QPKqMgPKQHmcjESEesO2VJjPgChKtepPLUYOE/LkQQGZsmv4w+55OFZ+Sur4Mu4JOw7V/vNmvJwOlYlBhT92YWuGJR6DXk2yQMvjP+eOYlTJdO+YTWa/Jz5KJgNrHtOAvm1it4WHU2ZBZLuL/AhrqVVwkzc+IPXkcU79jgOjI9ydER1cGo3HoLCd6gdpsP3eOfNEEF1DgB1xwOU0GvQzD1FHx6RYh0dNBNICPgU4SwossH1u0yrKpK7DamImEaixNUhDIX5GqeLTvugMJVVzxBSaEiDILCjAbZA9Z+OHcM1SVIztBG4AIVhyBRLw7KvN9n80fJiW1prOhuq6i0UkL/bhvl2RXV8f/qvckHvjveZOF5G5W/CDJJbwSEMR5qmaHNd2zViXK41IHDwoAcE3lAUf9N3NwqTg0t13f/0OcaYbRU6vQ/EEXYIwU1f+9BVtx4tw2aV5CPMy3zTFmt8JHaFRFe4e6l7ArpDbBZg6Xml+AFgUU08CpDyCP3LHA2k7Yz8eX8hEKDJ4RCJADvvVuGPsqeH/7bVuUQfTS8EKRrxfaQNDlPFfA8ce4uzJFhb290nwgicqO9fWHhu657hjQi6f4ke3+NIkg+bbwnEo9XuQ/fkQEeFoGpwGekFQ1Ooc0oaJTcAZVREVLsSoJWh99E1nS7yB9CuQ=
X-Forefront-Antispam-Report:
	CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:CY8PR12MB8300.namprd12.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(376014)(7416014)(1800799024)(366016)(10070799003)(22082099003)(56012099003)(18002099003);DIR:OUT;SFP:1101;
X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1
X-MS-Exchange-AntiSpam-MessageData-0:
	=?iso-8859-1?Q?2oPD54n5ZXNlK/kFqbJNXD1QtsOVDwh+UJSvy6M6BXER4piMhd4MdKi/hs?=
 =?iso-8859-1?Q?dtPpvaj4LxnpiHlSbO1r9fiNIKnpbVyt/rHkG6vZrPFcZWV33Wt3zTJ3qe?=
 =?iso-8859-1?Q?ckpBkmbC6Q5Mugc8CDDrjZOIIHIUCmJaeWHL6owAAl4UEDpaubTbrYmMuI?=
 =?iso-8859-1?Q?NqIws0lQ62II3JN8RQZuKwQsrYOL7Nq5cL28v9C0yBSaStZjc/oua7D88W?=
 =?iso-8859-1?Q?lVp9FnMbzl5ZdPFHkvwcurNSWE6BI72RYLGmhfxuw+iEalNBTLg93jaryl?=
 =?iso-8859-1?Q?OQazywBMu1WZqV5znY98J8cAhbSaXoqNerO0nX5QD3UEwjJsWjGXnlR9MF?=
 =?iso-8859-1?Q?Bg4g2NlweZOcbd0J9a6HGZaL0npF+/is4ng5baw4IKHSBGb/WHSXYdb4td?=
 =?iso-8859-1?Q?d3TtbuomhIdQorREntl9+RMaFZfUQj6JJP8xowgTVew4wom6mp8Ds/aio3?=
 =?iso-8859-1?Q?yk6XHj08kGeyGvaiem4uBZf8Y2rOkdQseejpE4luAqcRFsSolHHNQ72xfS?=
 =?iso-8859-1?Q?bae/SS8Lc8zTresY8jBaOtgkXkNPTJHB5HQDPPRP+g3130C3EcS8eD5tGO?=
 =?iso-8859-1?Q?NzZ+ymHQUjmXdjSLHoKhP4TdN5hksLFroHF4YT+CieTOYyfTC3T4uN14Js?=
 =?iso-8859-1?Q?UL87gmptyN6VwoW6YhMFZgHudT/IN/KukxSYBtWnZHqw/I/RRpeaTAknI1?=
 =?iso-8859-1?Q?7z1yyEgD+nkCwBsbgf4V2o7fXMYFCDwVMoMNrl5ZLCY2ZZVCbVB+K2+wJ/?=
 =?iso-8859-1?Q?inPaRdegXyxv3Z2bAPJAkiT8X0ISDMOe2eOf9iNEETkwOYz7Jr4nKvc80u?=
 =?iso-8859-1?Q?XmIxrPRpBAhnAr8S7xfczH+Qqehg2TjkgAz64f8ZE8/9i1wG7mXVO1Q9as?=
 =?iso-8859-1?Q?0uNtSUBT6CwjDIu2Amsqe4AUMw/9zUCctXgXVLfEx9aZcp1+1Dsxtt2N8z?=
 =?iso-8859-1?Q?/L7OSlnpIcZg+TM7s8ia0P1nx+MU3SMI3qOYqLkDN6MHjtMX1beye9a0NQ?=
 =?iso-8859-1?Q?ax9jU/0KlCxKchpGqMjIocKvlky4JLfKCTiBpS5XjJfREJ2e7Jew9rHsl9?=
 =?iso-8859-1?Q?w8ClFQzQqaLDDgE4HpS45w/MKo9f93Ash6uWAME71hU/OPJaLBOz0Hpldd?=
 =?iso-8859-1?Q?m2FT9tRGyPVIo1L+3HqLJUg9o1OscoKBqdF68jUKqgmevSHEfa1UBdv373?=
 =?iso-8859-1?Q?tsqh6SgzYUFHbhsPtvMgwVDmVKImbZY1DOP0fd8wUojL2nHmKHuapuUelP?=
 =?iso-8859-1?Q?Cy7jKpGJCTnRVCFUP+TcIiCMeg7jztgl1gZm6ZF5OEMPnLSgVXNc2frsXG?=
 =?iso-8859-1?Q?i7Tl4usifn7qlFirf9xjgi/muZGT3O54fymYbGeXPWXs9yYi6E734lRU3s?=
 =?iso-8859-1?Q?esZwUYXTz+a6EE2LAkm2J/jh8f4tiKB+vx1FITuMB8F09K/S0rGrQCfbOA?=
 =?iso-8859-1?Q?zQJYWuF7cpp6qPoJQ4D/NwHej7OthQv0ts8RpcxqFrX8r2QFTE2kxBnbRQ?=
 =?iso-8859-1?Q?zH+VYeLWY/k489znw1njCgLLGESMF0DyOWS6pKnzOdAZGSqYkjDH97a4Pw?=
 =?iso-8859-1?Q?fCVnJ+gzPGl0Z8ysg8nsTHrAvnWX/YKoJKKlW6ayYaVF/toGLaJhXQXBwU?=
 =?iso-8859-1?Q?hXseQkaBmAmk8jvoDWKtBllEbMiEapN9iuDyfvYHntUDaL2Gy1qlm+aosx?=
 =?iso-8859-1?Q?1NyFkDKiwyMNtj9YU33Xjg14+fUyMnYdXGjdpUJk60YTi5RRQJD2DjjAV+?=
 =?iso-8859-1?Q?wuTrE0HYz7zXrNZJofNvR8+A56trLl7EwyrqY231N4pMe/m58Zda1V/tIq?=
 =?iso-8859-1?Q?bdVf26XRYGA8BCZj3ziv31rtyHAsm+JkxqEH6VRAcg40GKElJycg?=
X-OriginatorOrg: Nvidia.com
X-MS-Exchange-CrossTenant-Network-Message-Id: e21d145c-03ba-4a6a-9777-08dea49e433e
X-MS-Exchange-CrossTenant-AuthSource: CY8PR12MB8300.namprd12.prod.outlook.com
X-MS-Exchange-CrossTenant-AuthAs: Internal
X-MS-Exchange-CrossTenant-OriginalArrivalTime: 27 Apr 2026 20:47:57.4916
 (UTC)
X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted
X-MS-Exchange-CrossTenant-Id: 43083d15-7273-40c1-b7db-39efd9ccc17a
X-MS-Exchange-CrossTenant-MailboxType: HOSTED
X-MS-Exchange-CrossTenant-UserPrincipalName: ApBP39ijwBDa3/RbspzeLaHHXUB2RtFB8F4ypsIudayixW1tFGUX6nHaIuJK1Cdq2xPDFGyR8Es6N/9hhOEExA==
X-MS-Exchange-Transport-CrossTenantHeadersStamped: SA3PR12MB7829
X-purgate-ID: tlsNG-d25034/1777322885-F48F9CF5-6718FDA2/0/0
X-purgate-type: clean
X-purgate-size: 853

On Mon, Apr 27, 2026 at 09:39:33PM +0100, Andrew Cooper wrote:
> On 27/04/2026 7:39 pm, Yury Norov wrote:
> > On Mon, Apr 27, 2026 at 07:13:43PM +0200, Christophe Leroy (CS GROUP) wrote:
> >> Among the 21 architectures supported by the kernel, 16 define both
> >> INLINE_COPY_TO_USER and INLINE_COPY_FROM_USER while the 5 other ones
> >> don't define any of the two.
> >>
> >> To simplify and reduce risk of mistakes, convert them to a single
> >> kconfig item named CONFIG_ARCH_WANTS_NOINLINE_COPY which will be
> > We've got a special word for it: outline. Can you name it
> > CONFIG_OUTLINE_USERCOPY, or similar?
> 
> You can't swap the "in" for "out" like this. "out of line" is the
> opposite of "inline" in this context, while "outline" means something
> different and unrelated.

Check KASAN_OUTLINE vs KASAN_INLINE for example


From xen-devel-bounces@lists.xenproject.org Mon Apr 27 21:29:44 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 27 Apr 2026 21:29:44 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1295329.1571991 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wHTW5-0005Bk-UW; Mon, 27 Apr 2026 21:29:21 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1295329.1571991; Mon, 27 Apr 2026 21: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 1wHTW5-0005Bd-QQ; Mon, 27 Apr 2026 21:29:21 +0000
Received: by outflank-mailman (input) for mailman id 1295329;
 Mon, 27 Apr 2026 21:29:20 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <david.laight.linux@gmail.com>) id 1wHTW4-0005BX-4g
 for xen-devel@lists.xenproject.org; Mon, 27 Apr 2026 21:29:20 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wHTW3-006awd-2T
 for xen-devel@lists.xenproject.org; Mon, 27 Apr 2026 23:29:19 +0200
Received: from [10.42.69.4] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <david.laight.linux@gmail.com>)
 id 69efd526-bab6-0a2a0a5309dd-0a2a45048a8c-2
 for <xen-devel@lists.xenproject.org>; Mon, 27 Apr 2026 23:29:19 +0200
Received: from [209.85.128.51] (helo=mail-wm1-f51.google.com)
 by tlsNG-ebf023.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.1)
 (envelope-from <david.laight.linux@gmail.com>)
 id 69efd52e-1dec-0a2a45040019-d1558033dd3b-3
 for <xen-devel@lists.xenproject.org>; Mon, 27 Apr 2026 23:29:19 +0200
Received: by mail-wm1-f51.google.com with SMTP id
 5b1f17b1804b1-4891b0786beso76903645e9.1
 for <xen-devel@lists.xenproject.org>; Mon, 27 Apr 2026 14:29:18 -0700 (PDT)
Received: from pumpkin (82-69-66-36.dsl.in-addr.zen.co.uk. [82.69.66.36])
 by smtp.gmail.com with ESMTPSA id
 ffacd0b85a97d-4463d02f270sm1120515f8f.9.2026.04.27.14.29.16
 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
 Mon, 27 Apr 2026 14:29:17 -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=20251104 header.d=gmail.com header.i="@gmail.com" header.h="Content-Transfer-Encoding:MIME-Version:References:In-Reply-To:Message-ID:Subject:Cc:To:From:Date"
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=gmail.com; s=20251104; t=1777325358; x=1777930158; darn=lists.xenproject.org;
        h=content-transfer-encoding:mime-version:references:in-reply-to
         :message-id:subject:cc:to:from:date:from:to:cc:subject:date
         :message-id:reply-to;
        bh=Ebg5+i/pOUuQx7xxuERTUppaj1qL6vIxTxgv86V/NC0=;
        b=fRk+/r8Nho9uM8wSk+jOUMw6kKro2Ls59dRY41ytancaAqcA/Ze1ZOET0Bdwka2ED8
         qGVG8otlQHEft+Irt7DTPbxnUnuWvdxXgv1VBZhvoqxxrzBopvF3gK2TPp+17CnoR6Kh
         qrw0IYx/QL3BAWD9YXWSy8b9pHj2YeJjkP0l9vN8U7jkdOQE8QHHpYGs8IC54mFe4rUw
         q+LhKwKPejJfg/C1aI7c39gqTZ7YGrrdl8WbYKtO4+fhf6bWeyI+XB2CqZkLCSw66VVC
         yzIpTzRnU/lBmah8WZ3kMoY5rHPNVo1CBiF2sonTPF7GEnKHeevNDOufUmw5x838NXBb
         JerQ==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20251104; t=1777325358; x=1777930158;
        h=content-transfer-encoding:mime-version:references:in-reply-to
         :message-id:subject:cc:to:from:date:x-gm-gg:x-gm-message-state:from
         :to:cc:subject:date:message-id:reply-to;
        bh=Ebg5+i/pOUuQx7xxuERTUppaj1qL6vIxTxgv86V/NC0=;
        b=Cjq/ReIA/XeZ8dFoGiArZZwJeHtjz1y8+2lc+yT7oq5Z45KSqSqlWq6QuNgQ2nS1e2
         AemedPvy60OzSCiF2wejg4NpoTxgrBPv89QfeHtQlgxJyhN5GLkb244Jn4qr8YtoNd9u
         h4OJRUYRLoZgmFAdG/IttvaY8s+i5jS28e5GyduJJMkYOgV0zpSXViRfyfKLxYbQHvqf
         1tH3O90aiB+FKqHoQBef36LXKyVbv8xOhi052jLWYFb4Dt6yOuDh98S8HTTbhgDMgmTk
         il5fCDPuHYPR0bP47oHJ4yj7z1g45Wmfy9QkW63DNnVcEfGZlxEeSPe8GWPaJswwD6ge
         Ho1Q==
X-Forwarded-Encrypted: i=1; AFNElJ/zOF/yalG34ROoswXyJ5/j2LE61a0Zlvw25h/4hn0eXqXIdtwJzFRGE2Fv9urT92YiIbF8qUxJkas=@lists.xenproject.org
X-Gm-Message-State: AOJu0YzCC2BoLfjH1fSjmDd+iqsElNj1f+ubsY0LWklr/ORPCVcHso5/
	HnMRpq1KSTRszdv34hbfJkvK7uON76+GPz9S7VonsPAqb4AXBiIBVEy8
X-Gm-Gg: AeBDies3ATkyU86dHajs0tjfisppmnxXT6ivCgDQ9PSm+QKP6FhDeCTk0gHv3NJElRB
	GAhMbgb01ApBO7hqu5SmV2S/O33Bq98FXeYH9Jeh3eoLGB/mOk9qqWHaIjXdl8MFCis9/zJSqE1
	E5hAFTbhdIlndv625EMcWO7fSZLcLf2GLCvmBz10jF1QmSxQ7X9Kv1LQzEgHsZDxFYYUXYbAeC9
	/84hzwarJ/BzCVOvXf7G60MQFh/DoxkihypDuF7sNorbBoMDbkebwb9iFvmLLEM5rTotlfJRnBS
	qziZFcLj436mL/Ge0o8XqmQSN34PQ+bf91zSwYGWlXDLGCHlCsWPebO1/sUvU5qyh/rv/FlelP7
	1+2eWBdafJ+lZ7p938Hm0fTMQmHCIbuT5qlND5YpQ0DMsjj1NzN/6yzqrk7SQ58ythpTbcGGfee
	PPGmjdq5f0Hea3a/EnWF2N6aL9VTSjlHIyVeDgMngUn2EH/kqTgGWzl5ysoMYd4BCp0HrVotPe4
	WF8EMFBo456Xw==
X-Received: by 2002:a05:6000:3109:b0:43d:7d6f:f531 with SMTP id ffacd0b85a97d-44649ba1f4amr816127f8f.30.1777325358072;
        Mon, 27 Apr 2026 14:29:18 -0700 (PDT)
Date: Mon, 27 Apr 2026 22:29:14 +0100
From: David Laight <david.laight.linux@gmail.com>
To: Linus Torvalds <torvalds@linux-foundation.org>
Cc: "Christophe Leroy (CS GROUP)" <chleroy@kernel.org>, Yury Norov
 <ynorov@nvidia.com>, Andrew Morton <akpm@linux-foundation.org>, Thomas
 Gleixner <tglx@linutronix.de>, linux-alpha@vger.kernel.org,
 linux-kernel@vger.kernel.org, linux-snps-arc@lists.infradead.org,
 linux-arm-kernel@lists.infradead.org, linux-mips@vger.kernel.org,
 linuxppc-dev@lists.ozlabs.org, kvm@vger.kernel.org,
 linux-riscv@lists.infradead.org, linux-s390@vger.kernel.org,
 sparclinux@vger.kernel.org, linux-um@lists.infradead.org,
 dmaengine@vger.kernel.org, linux-efi@vger.kernel.org,
 linux-fsi@lists.ozlabs.org, amd-gfx@lists.freedesktop.org,
 dri-devel@lists.freedesktop.org, intel-gfx@lists.freedesktop.org,
 linux-wpan@vger.kernel.org, netdev@vger.kernel.org,
 linux-wireless@vger.kernel.org, linux-spi@vger.kernel.org,
 linux-media@vger.kernel.org, linux-staging@lists.linux.dev,
 linux-serial@vger.kernel.org, linux-usb@vger.kernel.org,
 xen-devel@lists.xenproject.org, linux-fsdevel@vger.kernel.org,
 ocfs2-devel@lists.linux.dev, bpf@vger.kernel.org,
 kasan-dev@googlegroups.com, linux-mm@kvack.org, linux-x25@vger.kernel.org,
 rust-for-linux@vger.kernel.org, linux-sound@vger.kernel.org,
 sound-open-firmware@alsa-project.org, linux-csky@vger.kernel.org,
 linux-hexagon@vger.kernel.org, loongarch@lists.linux.dev,
 linux-m68k@lists.linux-m68k.org, linux-openrisc@vger.kernel.org,
 linux-parisc@vger.kernel.org, linux-sh@vger.kernel.org,
 linux-arch@vger.kernel.org
Subject: Re: [RFC PATCH v1 5/9] uaccess: Switch to
 copy_{to/from}_user_partial() when relevant
Message-ID: <20260427222914.1cb2dd3b@pumpkin>
In-Reply-To: <CAHk-=whC1DZojwdMB1=sJWG2=dsCdfyU8N6tDE1qx50HRZ-WJQ@mail.gmail.com>
References: <cover.1777306795.git.chleroy@kernel.org>
	<289b424e243ba2c4139ea04009cf8b9c448a87ff.1777306795.git.chleroy@kernel.org>
	<CAHk-=whC1DZojwdMB1=sJWG2=dsCdfyU8N6tDE1qx50HRZ-WJQ@mail.gmail.com>
X-Mailer: Claws Mail 4.1.1 (GTK 3.24.38; arm-unknown-linux-gnueabihf)
MIME-Version: 1.0
Content-Type: text/plain; charset=US-ASCII
Content-Transfer-Encoding: 7bit
X-purgate-ID: tlsNG-ebf023/1777325359-3224E3FF-05D4547D/0/0
X-purgate-type: clean
X-purgate-size: 7506

On Mon, 27 Apr 2026 12:01:23 -0700
Linus Torvalds <torvalds@linux-foundation.org> wrote:

> On Mon, 27 Apr 2026 at 10:18, Christophe Leroy (CS GROUP)
> <chleroy@kernel.org> wrote:
> >
> > In a subsequent patch, copy_{to/from}_user() will be modified to
> > return -EFAULT when copy fails.  
> 
> Please don't do this.
> 
> This is a maintenance nightmare, and changes pretty much three decades
> of semantics, and will cause *very* subtle backporting issues if
> somebody happens to rely on the old / new behavior.
> 
> I understand the reasoning for the change, but I really don't think
> the pain of creating yet another user copy interface is worth it.
> 
> We already have a lot of different versions of user copies for
> different reasons, and while they all tend to have a good reason (and
> some not-so-good, but historical reasons) for existing, this one
> doesn't seem worth it.
> 
> The main - perhaps only - reason for this "partial" version is that
> you want to do that "automatically inlined and optimized fixed-sized
> case".
> 
> But here's the thing: I think you can already do that. Yes, it
> requires some improvements to unsafe_copy_from_user(), but *that*
> interface doesn't have three decades of history associated with it,
> _and_ you're extending on that one anyway in this series.
> 
> "unsafe_copy_from_user()" is very odd, is meant only for small simple
> copies that can be inlined and it's special-cased for 'objtool' anyway
> (because objtool would have complained about an out-of-line call,
> although it could have been special-cased other ways).
> 
> In other words: unsafe_copy_from_user() is *very* close to what you
> want for that "Oh, I noticed that it's a small fixed-size copy, so I
> want to special-case copy-from-user for that".
> 
> The _only_ issue with unsafe_copy_from_user() is that you can't see
> that there were partial successes. But if *that* was fixed, then this
> whole "create a new copy_from_user interface" issue would just go
> away.
> 
> So please - let's just change unsafe_copy_from_user() to be usable for
> the partial case.
> 
> And the thing is, all the existing unsafe_copy_from_user()
> implementations already effectively *have* the "how much did I not
> copy" internally, and they actually do extra work to hide it, ie they
> have things like that
> 
>         int _i;
> 
> that is "how many bytes have I copied" in the powerpc implementation,
> or the x86 code does
> 
>         size_t __ucu_len = (_len);
> 
> where that "ucu_len" is updated as you go along and is literally the
> "how many bytes are left to copy" return value that is missing from
> this interface.
> 
> So what I would suggest is
> 
>  - introduce a new user accessor helper that is used for *both*
> unsafe_copy_to/from_user() *and* the "inline small constant-sized
> normal copy_to/from_user()" calls
> 
>  - it's the same thing as the existing  unsafe_copy_to/from_user()
> implementation, except it exposes how many bytes are left to be copied
> to the exception label.

I think there is a slight difference in that the normal copy_to_user()
will determine the exact offset of the error by retrying with byte copies.

There is also the issue of misaligned copies.

Then there is the 'bugbear' of hardened user copies.
Chasing down the stack to find whether the kernel buffer crosses
a stack frame is probably more expensive than the copy for the typically
small copies that will use on-stack buffers.

	David

> 
> IOW, it would look something like
> 
>      #define unsafe_copy_to_user_outlen(_dst,_src,_len,label)...
> 
> which is exactly the same as the current unsafe_copy_to_user(),
> *except* it changes "_len" as it does along.
> 
> And then you use that for both the "real" unsafe_copy_user and for the
> "small constant values" case.
> 
> Just as an example, attached is a completely stupid rough draft of a
> patch that does this for x86 and only for unsafe_copy_to_user().
> 
> And I made a very very hacky change to kernel/sys.c to see what the
> code generation looks like.
> 
> This is what it results in on x86 with clang (with all the magic
> .section data edited out):
> 
>         ... edited out the code to generate the times
>         ... this is the actual user copy:
>         # HERE!
>         movabsq $81985529216486895, %rcx        # imm = 0x123456789ABCDEF
>         cmpq    %rcx, %rbx
>         cmovaq  %rcx, %rbx
>         stac
>         movq    %r13, (%rbx)                    # exception to .LBB45_8
>         movq    %r14, 8(%rbx)                   # exception to .LBB45_8
>         movq    %r15, 16(%rbx)                  # exception to .LBB45_8
>         movq    %rax, 24(%rbx)                  # exception to .LBB45_8
>         clac
> .LBB45_6:
>         movq    jiffies(%rip), %rdi
>         callq   jiffies_64_to_clock_t
> .LBB45_7:
>         addq    $16, %rsp
>         popq    %rbx
>         popq    %r12
>         popq    %r13
>         popq    %r14
>         popq    %r15
>         retq
> .LBB45_8:
>         clac
>         movq    $-14, %rax
>         jmp     .LBB45_7
> 
> and notice how the compiler noticed that the 'outlen' isn't actually
> used, and turned the exception label into just a "return -EFAULT" and
> never actually generated any code for updating remaining lengths?
> 
> That actually looks pretty much optimal for a 32-byte user copy.
> 
> And it didn't involve changing the semantics at all.
> 
> Just to check, I changed that "times()" system call to return the
> number of bytes uncopied instead (to emulate the "I actually want to
> know what's left" case), and it generated this:
> 
>         # HERE!
>         movabsq $81985529216486895, %rcx        # imm = 0x123456789ABCDEF
>         cmpq    %rcx, %rbx
>         cmovaq  %rcx, %rbx
>         stac
>         movl    $32, %ecx
>         movq    %r13, (%rbx)                    # exception to .LBB45_7
>         movl    $24, %ecx
>         movq    %r15, 8(%rbx)                   # exception to .LBB45_7
>         movl    $16, %ecx
>         movq    %r14, 16(%rbx)                  # exception to .LBB45_7
>         movl    $8, %ecx
>         movq    %rax, 24(%rbx)                  # exception to .LBB45_7
>         clac
>         xorl    %ecx, %ecx
> .LBB45_8:
>         movq    %rcx, %rax
>         addq    $16, %rsp
>         popq    %rbx
>         popq    %r12
>         popq    %r13
>         popq    %r14
>         popq    %r15
>         retq
> .LBB45_6:
>         movq    jiffies(%rip), %rdi
>         jmp     jiffies_64_to_clock_t           # TAILCALL
> .LBB45_7:
>         clac
>         jmp     .LBB45_8
> 
> so it all seems to work - although obviously the above is *not* the normal case.
> 
> NOTE NOTE NOTE! The attached patch is entirely untested. I obviously
> did some "test code generation" with it, but I only *looked* at the
> result, and maybe it has some fundamental problem that I just didn't
> notice. So treat this as a "how about this approach" patch, not as
> anything more serious than that.
> 
> And the kerrnel/sys.c hack is very obviously just that: a complate
> hack for testing.
> 
> A real patch would do that "for small constant-sized copies, turn
> copy_to_user() automatically into "_small_copy_to_user()".
> 
> The attached is *not* a real patch. Treat it with the contempt it deserves.
> 
>              Linus



From xen-devel-bounces@lists.xenproject.org Mon Apr 27 21:39:47 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 27 Apr 2026 21:39:47 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1295336.1571998 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wHTg7-0006yX-PC; Mon, 27 Apr 2026 21:39:43 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1295336.1571998; Mon, 27 Apr 2026 21:39: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 1wHTg7-0006yQ-Mg; Mon, 27 Apr 2026 21:39:43 +0000
Received: by outflank-mailman (input) for mailman id 1295336;
 Mon, 27 Apr 2026 21:39:41 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <torvalds@linuxfoundation.org>) id 1wHTg5-0006yK-Km
 for xen-devel@lists.xenproject.org; Mon, 27 Apr 2026 21:39:41 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wHTg4-00FA7s-4K
 for xen-devel@lists.xenproject.org; Mon, 27 Apr 2026 23:39:40 +0200
Received: from [10.42.69.11] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <torvalds@linuxfoundation.org>)
 id 69efd71e-2eae-0a2a0a5409dd-0a2a450b933e-38
 for <xen-devel@lists.xenproject.org>; Mon, 27 Apr 2026 23:39:39 +0200
Received: from [209.85.218.50] (helo=mail-ej1-f50.google.com)
 by tlsNG-42698a.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.1)
 (envelope-from <torvalds@linuxfoundation.org>)
 id 69efd79b-212f-0a2a450b0019-d155da32adb0-3
 for <xen-devel@lists.xenproject.org>; Mon, 27 Apr 2026 23:39:39 +0200
Received: by mail-ej1-f50.google.com with SMTP id
 a640c23a62f3a-bb3c4d8cc29so236178166b.1
 for <xen-devel@lists.xenproject.org>; Mon, 27 Apr 2026 14:39:39 -0700 (PDT)
Received: from mail-ed1-f54.google.com (mail-ed1-f54.google.com.
 [209.85.208.54]) by smtp.gmail.com with ESMTPSA id
 a640c23a62f3a-bb808a36817sm9569066b.20.2026.04.27.14.39.37
 for <xen-devel@lists.xenproject.org>
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Mon, 27 Apr 2026 14:39:38 -0700 (PDT)
Received: by mail-ed1-f54.google.com with SMTP id
 4fb4d7f45d1cf-678adefbd26so5624876a12.3
 for <xen-devel@lists.xenproject.org>; Mon, 27 Apr 2026 14:39:37 -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=google header.d=linux-foundation.org header.i="@linux-foundation.org" header.h="Cc:To:Subject:Message-ID:Date:From:In-Reply-To:References:MIME-Version"
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=linux-foundation.org; s=google; t=1777325979; x=1777930779; darn=lists.xenproject.org;
        h=cc:to:subject:message-id:date:from:in-reply-to:references
         :mime-version:from:to:cc:subject:date:message-id:reply-to;
        bh=DjF1Jdn4Kp6xFyaBmAP2391GfFF2q7kuOVlruTChM90=;
        b=akMjFJmNOnA3a9IRgSbo2Rib99JT/1fQD+a+OQo/iQc4pztmwlwv2srnvDj5ymq197
         jM4fOJ5rJxW7h9Qvjhrk5+B+0KkDTJxDPdLG1TXy+5yzUSiBogTGhvgq3HSCqALcSFBJ
         PJriPe046EySjSYli0/VpcgGCZkf3nYTMmafg=
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20251104; t=1777325979; x=1777930779;
        h=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;
        bh=DjF1Jdn4Kp6xFyaBmAP2391GfFF2q7kuOVlruTChM90=;
        b=eRWrqgn2SxNYWydvbLD71tin0YfL1L17CKj+CM4cVFonFfc/lfz/1LFoLiVnDsctph
         A3K52dwKFWYfdFAWHcdN6y3hS8K/GAaW13w3H5KcTer7G1qxYJncuW/wJAOawRE8wFnk
         0DbAmuwSrRHB2brnSLcdVHmltxYmJrQNHiEY5y9xd2VtPcvnlJ2oPTPzDlQKhNqYcqNH
         02el59/ARi+bV6rs2AvHbqF1Ef/1GoHBWYsOZpWV+10KWW06S3MdGHKEyEUkqTUV55aq
         J76ZDptis5SPEwsGgyvBB4haxPxRstE9FKGJdcCQPdxFd++PcUWcYu1xho8CRYpZNcxJ
         SEMA==
X-Forwarded-Encrypted: i=1; AFNElJ+DoBDgyF9y/6UOsvjp3eNsCoko5gD0dw5Xi5ORjQ/rG+jyNVFqUsCAogW7qiXorm5aPTPGi5t4TeU=@lists.xenproject.org
X-Gm-Message-State: AOJu0Yx0em2wPsb4uRDaHw1kIYhtSeMJweuOHDCommXziWPzrIHMz1F9
	jXS6SEdZCo223C+RdUDB+zjOneE2db5pas9fhJaWoSaVbR3tsnrDRYbf5Qq0VzXm/c85rua+1yL
	ldq4fgiihZg==
X-Gm-Gg: AeBDieuBwBZBbsbmrS8mk7C5zY1Evpuvwqytpk2NCnaPZWLfzSM4WrEsbsorQ1NJ1+W
	qZEeXtNpgJRIByRCwTrjn+O1uzpb8A0cZLQ5acZhY970BKe2K8tXBVmzKx/pqTwjqoOkSE8/BHr
	YD/CTbbre75IoFnMlGsLF8IwSYyixegt5/e9knxDZcYc3cQef+cz3RRx0KaUGmHijQGope6ONuU
	RWW4ueiZJ/m7+xnCFhwwPc+hIJWZ7i6eFKGMbJ2kbrh+jAlLE1uN1KoPp56Gp7HfGcQ4HDjgxG/
	w+kPHLCCaruRgGkocCfNYktzS101qmRawd7mh28b2deGllsEQiyMkgVK7U2lN7q/Qr38anV8W0w
	zOPcU2/OoYw9hTMXG4DmNTnVyP4Q57UqwB9Qy9IBz568ItBmaR8267G56COTKAZxT7nsrMd5PpC
	ahaYCg9XgJFTUhuCGp+mm7u9baCzO7ioMpcIVo8odaUXD9m97mVk5+Mx95QGQ/wfYK1Px4HHlaw
	nltNo+bm6w=
X-Received: by 2002:a17:907:8745:b0:ba7:670b:f076 with SMTP id a640c23a62f3a-bb8020c9f60mr31968366b.2.1777325978807;
        Mon, 27 Apr 2026 14:39:38 -0700 (PDT)
X-Forwarded-Encrypted: i=1; AFNElJ/ziLJN+XJyMzJtU4t+0+lcJ2KyxkSExJTbykm0CWE8m0TmUdoIwwdUYext8s1hDSZ2/kEZ0nw2n9Q=@lists.xenproject.org
X-Received: by 2002:a05:6402:5216:b0:679:1f4f:9d30 with SMTP id
 4fb4d7f45d1cf-679bb04c1a2mr179970a12.4.1777325976937; Mon, 27 Apr 2026
 14:39:36 -0700 (PDT)
MIME-Version: 1.0
References: <cover.1777306795.git.chleroy@kernel.org> <289b424e243ba2c4139ea04009cf8b9c448a87ff.1777306795.git.chleroy@kernel.org>
 <CAHk-=whC1DZojwdMB1=sJWG2=dsCdfyU8N6tDE1qx50HRZ-WJQ@mail.gmail.com> <20260427222914.1cb2dd3b@pumpkin>
In-Reply-To: <20260427222914.1cb2dd3b@pumpkin>
From: Linus Torvalds <torvalds@linux-foundation.org>
Date: Mon, 27 Apr 2026 14:39:20 -0700
X-Gmail-Original-Message-ID: <CAHk-=wg0SGbRYhdZ1kvJUTv1HEvmRJyQauFtBGV_fMcZVF8UpQ@mail.gmail.com>
X-Gm-Features: AVHnY4I-AxqvQRk42MegvhKMp_z4sSEpEzhzpgw2GyV2bV8dezSPoI0JTlwB18Y
Message-ID: <CAHk-=wg0SGbRYhdZ1kvJUTv1HEvmRJyQauFtBGV_fMcZVF8UpQ@mail.gmail.com>
Subject: Re: [RFC PATCH v1 5/9] uaccess: Switch to copy_{to/from}_user_partial()
 when relevant
To: David Laight <david.laight.linux@gmail.com>
Cc: "Christophe Leroy (CS GROUP)" <chleroy@kernel.org>, Yury Norov <ynorov@nvidia.com>, 
	Andrew Morton <akpm@linux-foundation.org>, Thomas Gleixner <tglx@linutronix.de>, 
	linux-alpha@vger.kernel.org, linux-kernel@vger.kernel.org, 
	linux-snps-arc@lists.infradead.org, linux-arm-kernel@lists.infradead.org, 
	linux-mips@vger.kernel.org, linuxppc-dev@lists.ozlabs.org, 
	kvm@vger.kernel.org, linux-riscv@lists.infradead.org, 
	linux-s390@vger.kernel.org, sparclinux@vger.kernel.org, 
	linux-um@lists.infradead.org, dmaengine@vger.kernel.org, 
	linux-efi@vger.kernel.org, linux-fsi@lists.ozlabs.org, 
	amd-gfx@lists.freedesktop.org, dri-devel@lists.freedesktop.org, 
	intel-gfx@lists.freedesktop.org, linux-wpan@vger.kernel.org, 
	netdev@vger.kernel.org, linux-wireless@vger.kernel.org, 
	linux-spi@vger.kernel.org, linux-media@vger.kernel.org, 
	linux-staging@lists.linux.dev, linux-serial@vger.kernel.org, 
	linux-usb@vger.kernel.org, xen-devel@lists.xenproject.org, 
	linux-fsdevel@vger.kernel.org, ocfs2-devel@lists.linux.dev, 
	bpf@vger.kernel.org, kasan-dev@googlegroups.com, linux-mm@kvack.org, 
	linux-x25@vger.kernel.org, rust-for-linux@vger.kernel.org, 
	linux-sound@vger.kernel.org, sound-open-firmware@alsa-project.org, 
	linux-csky@vger.kernel.org, linux-hexagon@vger.kernel.org, 
	loongarch@lists.linux.dev, linux-m68k@lists.linux-m68k.org, 
	linux-openrisc@vger.kernel.org, linux-parisc@vger.kernel.org, 
	linux-sh@vger.kernel.org, linux-arch@vger.kernel.org
Content-Type: text/plain; charset="UTF-8"
X-purgate-ID: tlsNG-42698a/1777325979-7E36CF3B-AAE2FA5E/0/0
X-purgate-type: clean
X-purgate-size: 484

On Mon, 27 Apr 2026 at 14:29, David Laight <david.laight.linux@gmail.com> wrote:
>
> I think there is a slight difference in that the normal copy_to_user()
> will determine the exact offset of the error by retrying with byte copies.

I have this dim memory that we decided that you can't reply on byte
exactness anyway, because not all architectures gave that guarantee
for the user copies.

But that thing came up many years ago, I might mis-remember.

            Linus


From xen-devel-bounces@lists.xenproject.org Mon Apr 27 22:00:28 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 27 Apr 2026 22:00:28 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1295345.1572007 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wHU06-0002j3-Fy; Mon, 27 Apr 2026 22:00:22 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1295345.1572007; Mon, 27 Apr 2026 22:00: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 1wHU06-0002iw-D1; Mon, 27 Apr 2026 22:00:22 +0000
Received: by outflank-mailman (input) for mailman id 1295345;
 Mon, 27 Apr 2026 22:00:21 +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 1wHU05-0002iq-Dj
 for xen-devel@lists.xenproject.org; Mon, 27 Apr 2026 22:00:21 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wHU04-006dwt-0N
 for xen-devel@lists.xenproject.org; Tue, 28 Apr 2026 00:00:20 +0200
Received: from [10.42.69.1] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <Jason.Andryuk@amd.com>)
 id 69efdc69-5cb7-0a2a0a5109dd-0a2a4501c80e-18
 for <xen-devel@lists.xenproject.org>; Tue, 28 Apr 2026 00:00:19 +0200
Received: from [52.101.85.60]
 (helo=BYAPR05CU005.outbound.protection.outlook.com)
 by tlsNG-d62444.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.1)
 (envelope-from <Jason.Andryuk@amd.com>)
 id 69efdc71-c1f2-0a2a45010019-3465553cdfee-3
 for <xen-devel@lists.xenproject.org>; Tue, 28 Apr 2026 00:00:19 +0200
Received: from SJ0PR03CA0248.namprd03.prod.outlook.com (2603:10b6:a03:3a0::13)
 by SA3PR12MB7949.namprd12.prod.outlook.com (2603:10b6:806:31a::21)
 with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9870.16; Mon, 27 Apr
 2026 22:00:11 +0000
Received: from SJ1PEPF00002324.namprd03.prod.outlook.com
 (2603:10b6:a03:3a0:cafe::5f) by SJ0PR03CA0248.outlook.office365.com
 (2603:10b6:a03:3a0::13) with Microsoft SMTP Server (version=TLS1_3,
 cipher=TLS_AES_256_GCM_SHA384) id 15.20.9846.26 via Frontend Transport; Mon,
 27 Apr 2026 22:00:10 +0000
Received: from satlexmb08.amd.com (165.204.84.17) by
 SJ1PEPF00002324.mail.protection.outlook.com (10.167.242.87) with Microsoft
 SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id
 15.20.9846.18 via Frontend Transport; Mon, 27 Apr 2026 22:00:10 +0000
Received: from SATLEXMB03.amd.com (10.181.40.144) by satlexmb08.amd.com
 (10.181.42.217) with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.2.2562.17; Mon, 27 Apr
 2026 17:00:10 -0500
Received: from satlexmb07.amd.com (10.181.42.216) by SATLEXMB03.amd.com
 (10.181.40.144) with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2507.39; Mon, 27 Apr
 2026 17:00:09 -0500
Received: from [172.27.93.19] (10.180.168.240) by satlexmb07.amd.com
 (10.181.42.216) with Microsoft SMTP Server id 15.2.2562.17 via Frontend
 Transport; Mon, 27 Apr 2026 17:00:09 -0500
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@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=tcoVvySt6iVEb2Nc2STQ1skH4BGuMwwvmiL9Q9xNM/+5D+QsE2XE8xdAOhitOIQm4taI6KNabTcHAJ7vEWcz6NqUYF7+pU+YJS1jL8WufyxHpDR8OVeP8clWMNRCwacdodueyhASgQvThYV7mmmeqqSq415BdD/d9uhwe0X8mAvxa1TCR/7yQg+AuLHnMsgVh5l35HjXumYkXK9d5dYCZjaLtskE6UD4rC4yZ2FRGWSl4w4Ag4IaaP8dpuGI47Eh+mCDgXYIUtdmQOn7vGv4/G4f7W+rHw4zM1o59fTqa0SlTJwsbiZD+fwFHaHdpzTZfCAIoCqN6S8l6kbfa+XYdA==
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com;
 s=arcselector10001;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1;
 bh=gp6/FWz1a5puLHn8CGPGlRAqsfFYZZX5kVcgGcN9B/0=;
 b=vvN8OCoiCiImVuOtszqZD14gINRAzxaYpiRueIlyqv/yyzQBS0fR/ii3NIgOwtr3yU5X34Yz3nbv1n4VlEf8dSbf3ZAk5zDiO7ivxuCavNYfryS86DJRyAvG6p8vCGeOjD6QVl6Zib9jGOA818qwCaprO2yXcEm4GRM1bnsj/oV0N4XSgmPXdppbTQxwqzvNDyuIpCaiPPniBOfmDcz4t0uZim9IhB9vboPNm9OcLur5eNl7rVbMYEo6C+7TTf5ufmrKbCr0q5yyADntTe/Ox8/EGdakKlayNvC8uFb3v0jICrxaa4TrRS/E26cMOYjNkmSgoVT7zPIRgITdmxeHLg==
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=gp6/FWz1a5puLHn8CGPGlRAqsfFYZZX5kVcgGcN9B/0=;
 b=ZsciGWovePVsJugXHwQShFwF91A5QScKdzKoQqSeq4LkA//sRPdcb/xZYC/pxLlLikkTXz3coxDAX63uPOUGhmXbLESnYv4vXRrP6Z4sG2k7fpLgkTWvwbPkZJtFQI2FPcAxlmE+k3d3mhJEgdq4imJXquPprJgMkNMaS2jA0Tw=
X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 165.204.84.17)
 smtp.mailfrom=amd.com; dkim=none (message not signed)
 header.d=none;dmarc=pass action=none header.from=amd.com;
Received-SPF: Pass (protection.outlook.com: domain of amd.com designates
 165.204.84.17 as permitted sender) receiver=protection.outlook.com;
 client-ip=165.204.84.17; helo=satlexmb08.amd.com; pr=C
Message-ID: <bf54e159-c4ad-47e4-a6a8-574af834ac9f@amd.com>
Date: Mon, 27 Apr 2026 18:00:08 -0400
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH 1/4] xen/public: introduce DOMID_ANY
To: Juergen Gross <jgross@suse.com>, <xen-devel@lists.xenproject.org>
CC: <dmukhin@ford.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.pau@citrix.com>, Stefano Stabellini
	<sstabellini@kernel.org>
References: <20260423080840.530547-1-jgross@suse.com>
 <20260423080840.530547-2-jgross@suse.com>
Content-Language: en-US
From: Jason Andryuk <jason.andryuk@amd.com>
In-Reply-To: <20260423080840.530547-2-jgross@suse.com>
Content-Type: text/plain; charset="UTF-8"; format=flowed
Content-Transfer-Encoding: 7bit
Received-SPF: None (SATLEXMB03.amd.com: jason.andryuk@amd.com does not
 designate permitted sender hosts)
X-EOPAttributedMessage: 0
X-MS-PublicTrafficType: Email
X-MS-TrafficTypeDiagnostic: SJ1PEPF00002324:EE_|SA3PR12MB7949:EE_
X-MS-Office365-Filtering-Correlation-Id: e4e673d9-ac56-46a4-df56-08dea4a85a47
X-MS-Exchange-SenderADCheck: 1
X-MS-Exchange-AntiSpam-Relay: 0
X-Microsoft-Antispam:
	BCL:0;ARA:13230040|1800799024|82310400026|36860700016|376014|56012099003|18002099003|22082099003;
X-Microsoft-Antispam-Message-Info:
	juc+D2F1MjZX3AYWSBrc8zsgk4R3j1gXbFGsAHOUJcnfeTqo3CN5OtJTFrD96L5oaDvlYgqdoOqxnkSzOjktHjjuBlh5SgyXHTX4Nr6yv5937hogPhBjkpF1fruvTMSLkwEECxeMXF8KV0/a/H3xrM7Tq9WnIGKHxCOrRRy7gLwNCJGtjzb0J8SFt9K3jLmDtcwF6tycFLAizLus9V5pI0HLAEf+a1m5zlIWdAFuE2C72WNY/tLXHciH0Mwmwm0e1/puPC15gj2ZbU833gjVOJQcdwlhwchmtLqWipUTAPOfjpeLBOnqrA7cCuFOUvaGuZFDVLxeE5ggpOizqXNBIdS8fkTd7M1j/WZgQlJ7GG/VWmGSuDKCTD/sTp1uQ6NA82KOWs8FtnwcLF5v63hqsCqqHwNPM2GOU/06c2HuWH5aU4JWuOQ5sTHpTenGB4uwSaJkTXdoAMMMcZSUluPiF9aeCq9pbmIjoTDmTcWpYtxJcC7xOWusc8dB2N+6MUhmURZp8NfezNV1TO+Q3uMhcHMm/8u43Jon1mnmWXDNdu8RvtHTU7dKE86REcB9eHlhWBH2CKnWpz9INi4QifgLVw3lFmUARE8SN8XCDdTRnSMZDksAxMv8WBBjaFrk69Fq8f3udy/FkyPhuvCvTIyRxwFYT1S2evbZTcHgq6vA4wkgE7nlicfpVMP59qH7EcGNWshUvR0i0RQT51VaXYhQ5rivv1ufPr3QmTJUni61aP8nitKpa6dfr/Zqnz/VH/lY+5ouHpD+BmDnURD+ca1GaQ==
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)(36860700016)(376014)(56012099003)(18002099003)(22082099003);DIR:OUT;SFP:1101;
X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1
X-MS-Exchange-AntiSpam-MessageData-0:
	6qhYfyLJqKV6/ElPs6ZtHz7Xm/2UW8PToSmuV3GWJIo00VoYNZ3WT2+TBtSuMw7UusWFOAkybMpTVvNA3FUwCETWT32G+3mwSyZ0vgoS6EB3i1+uOsbvPrrD1v9KxbZUG7inLqzDhFuT+thUNtUrunzPx+gsl/MzIgD04PMNOPegM6KA84U6uo4MiU+7UwiIZWZlPmMMJc2j0PVKjuuhkgHANu60w7eeKTAZTtfCPbBM7eED5wCCAgvMKeaAYPSk48fUtioGD8B1xTaqdeAXNRvEQsoY76t96Yh9MM8SaHtJhhhfmi92HEVkiJDm+jOF4q4Lz9H02WyE9I/TVPNuG9Iq7w31EOETzSKMr6kOxhZG+dwi7WuNyGFgfMp6xbPlqM0JcVfOHr0NCt5jbbTk10PDVGlayVDPVouAYNDlxIznWH0nHhjoGOPho/ynfCz0
X-OriginatorOrg: amd.com
X-MS-Exchange-CrossTenant-OriginalArrivalTime: 27 Apr 2026 22:00:10.8506
 (UTC)
X-MS-Exchange-CrossTenant-Network-Message-Id: e4e673d9-ac56-46a4-df56-08dea4a85a47
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:
	SJ1PEPF00002324.namprd03.prod.outlook.com
X-MS-Exchange-CrossTenant-AuthAs: Anonymous
X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem
X-MS-Exchange-Transport-CrossTenantHeadersStamped: SA3PR12MB7949
X-purgate-ID: tlsNG-d62444/1777327219-BEA61FF4-B9284E80/0/0
X-purgate-type: clean
X-purgate-size: 1311

On 2026-04-23 04:08, Juergen Gross wrote:
> Add DOMID_ANY to xen/include/public/xen.h meant to be a wildcard for
> domids.
> 
> Signed-off-by: Denis Mukhin <dmukhin@ford.com>
> Signed-off-by: Juergen Gross <jgross@suse.com>
> ---
> This is based on Denis Mukhin's patch "xen/domain: introduce DOMID_ANY".
> As my series is another use case for DOMID_ANY and it is a backport
> candidate, I've split out the definition of DOMID_ANY from Denis'
> patch in order to make progress for my series.

I think we probably want Denis as the Author, since this is an 
unmodified piece of his patch.

> ---
>   xen/include/public/xen.h | 7 +++++++
>   1 file changed, 7 insertions(+)
> 
> diff --git a/xen/include/public/xen.h b/xen/include/public/xen.h
> index b12fd10e63..f35a6f21f0 100644
> --- a/xen/include/public/xen.h
> +++ b/xen/include/public/xen.h
> @@ -608,6 +608,13 @@ DEFINE_XEN_GUEST_HANDLE(mmuext_op_t);
>   /* DOMID_INVALID is used to identify pages with unknown owner. */
>   #define DOMID_INVALID        xen_mk_uint(0x7FF4)
>   
> +/*
> + * DOMID_ANY is used to signal no specific domain ID requested.
> + * Handler should pick a valid ID, or handle it as a broadcast value

Maybe s/broadcast/wildcard/?

Either way:

Reviewed-by: Jason Andryuk <jason.andryuk@amd.com>


From xen-devel-bounces@lists.xenproject.org Mon Apr 27 22:00:47 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 27 Apr 2026 22:00:47 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1295350.1572017 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wHU0V-0003DC-Od; Mon, 27 Apr 2026 22:00:47 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1295350.1572017; Mon, 27 Apr 2026 22:00: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 1wHU0V-0003D5-LE; Mon, 27 Apr 2026 22:00:47 +0000
Received: by outflank-mailman (input) for mailman id 1295350;
 Mon, 27 Apr 2026 22:00: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 1wHU0U-00039Q-Mm
 for xen-devel@lists.xenproject.org; Mon, 27 Apr 2026 22:00:46 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wHU0U-005yAH-3e
 for xen-devel@lists.xenproject.org; Tue, 28 Apr 2026 00:00:46 +0200
Received: from [10.42.69.6] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <Jason.Andryuk@amd.com>)
 id 69efdc8b-bab6-0a2a0a5309dd-0a2a450682f0-8
 for <xen-devel@lists.xenproject.org>; Tue, 28 Apr 2026 00:00:45 +0200
Received: from [40.107.208.26]
 (helo=PH0PR06CU001.outbound.protection.outlook.com)
 by tlsNG-16d1c6.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.1)
 (envelope-from <Jason.Andryuk@amd.com>)
 id 69efdc8b-7371-0a2a45060019-286bd01aaaa4-3
 for <xen-devel@lists.xenproject.org>; Tue, 28 Apr 2026 00:00:45 +0200
Received: from SJ0PR03CA0376.namprd03.prod.outlook.com (2603:10b6:a03:3a1::21)
 by DS4PR12MB9588.namprd12.prod.outlook.com (2603:10b6:8:282::17) with
 Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9870.16; Mon, 27 Apr
 2026 22:00:41 +0000
Received: from SJ1PEPF00002326.namprd03.prod.outlook.com
 (2603:10b6:a03:3a1:cafe::7) by SJ0PR03CA0376.outlook.office365.com
 (2603:10b6:a03:3a1::21) with Microsoft SMTP Server (version=TLS1_3,
 cipher=TLS_AES_256_GCM_SHA384) id 15.20.9846.26 via Frontend Transport; Mon,
 27 Apr 2026 22:00:40 +0000
Received: from satlexmb08.amd.com (165.204.84.17) by
 SJ1PEPF00002326.mail.protection.outlook.com (10.167.242.89) with Microsoft
 SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id
 15.20.9846.18 via Frontend Transport; Mon, 27 Apr 2026 22:00:40 +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.17; Mon, 27 Apr
 2026 17:00:38 -0500
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.17; Mon, 27 Apr
 2026 17:00:38 -0500
Received: from [172.27.93.19] (10.180.168.240) by satlexmb07.amd.com
 (10.181.42.216) with Microsoft SMTP Server id 15.2.2562.17 via Frontend
 Transport; Mon, 27 Apr 2026 17:00:38 -0500
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@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=kyhtrEgN/86GbNM11t50VscGXDc5FGGZ+7VUFVnd9Dzt/KxEl1yGz79hFBxSTsz44R+1tdxC7TTyFLQ/ygO5QR0M0arlOS5QZvoPw+od0Dd+CqdlX13OdcTwAndQtJoyod3Htp/6eeuOmSJ2WQKk/ARjybJy4QiLsrnMOJx2vtEG5/0U1BFnI6begVUySo0waM95J6KQ5UT2yrsaFwQnal/XFnM5dOs/guvPmMGbRx5SZfRTP7hVP/nhPgKq8Xa2F3ur5e8QDfC7YR/TiGtOk2nqCwh8wAqoS8ZRfRWyLuV+M6l+H2HAFkC2TKYIxCLj44WZXmP55FOTmeA/WWJG0A==
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com;
 s=arcselector10001;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1;
 bh=Plj1IuUk+kxpPzBNOKhSZ00paaee269CWXprrl/G2DA=;
 b=KA5tvd7QVmUwGj+wXn1xKK4gn3db15ntQp0Mv/lZjvCQNqdNX/ZTQrpZp433R7PMzDnoCTiYsqHZxy077y0pbVEL0hbYkdC4yIZBwEbWtGPQ32z3yvKC/97M5yh5n39Vx17cegww7JAF8ngwAmgQWNxetnLNAjeC5b5Q16fdOFyIGJx99F4wURcD+4SSt55EJ4j+SGbmkPUKluw+db3rEzBpDzTra3PnWZOTRqo6WFT1QMAJnciahrLboeqGC1Anh6qKgc1wBw8hZzGzxBgVkKrl6Im4sa6/WXB5FUpqT/cHdfJpSS3jp0XlNSl4iU1uUz0OQacUo3kdpjJLgQsEJA==
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=Plj1IuUk+kxpPzBNOKhSZ00paaee269CWXprrl/G2DA=;
 b=sF+pblCreddbQvFDVWb8DZCWk0/OtG0RaAsGw5pIwAwvUAa4SAOcXPr2Nx00wg15dljTtCKnisD+swDRrghEPmOJZpUhNHv/gjH4GI8RKMT6fvLL7uJ1L+1yVJMjtWsudLGQvZZXZEtQHLc6BwSnZGEc/6ChKTLZXJUqdz8XHz0=
X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 165.204.84.17)
 smtp.mailfrom=amd.com; dkim=none (message not signed)
 header.d=none;dmarc=pass action=none header.from=amd.com;
Received-SPF: Pass (protection.outlook.com: domain of amd.com designates
 165.204.84.17 as permitted sender) receiver=protection.outlook.com;
 client-ip=165.204.84.17; helo=satlexmb08.amd.com; pr=C
Message-ID: <b752fdef-9950-45c9-bf0a-bea973c0c861@amd.com>
Date: Mon, 27 Apr 2026 18:00:37 -0400
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH 2/4] tools/xenstored: add support for "all domains" node
 permission
To: Juergen Gross <jgross@suse.com>, <xen-devel@lists.xenproject.org>
CC: <dmukhin@ford.com>, Anthony PERARD <anthony.perard@vates.tech>, "Julien
 Grall" <julien@xen.org>
References: <20260423080840.530547-1-jgross@suse.com>
 <20260423080840.530547-3-jgross@suse.com>
Content-Language: en-US
From: Jason Andryuk <jason.andryuk@amd.com>
In-Reply-To: <20260423080840.530547-3-jgross@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: SJ1PEPF00002326:EE_|DS4PR12MB9588:EE_
X-MS-Office365-Filtering-Correlation-Id: 933944a8-c0b8-4f39-3f16-08dea4a86c0e
X-MS-Exchange-SenderADCheck: 1
X-MS-Exchange-AntiSpam-Relay: 0
X-Microsoft-Antispam:
	BCL:0;ARA:13230040|1800799024|376014|82310400026|36860700016|22082099003|18002099003|56012099003;
X-Microsoft-Antispam-Message-Info:
	PVENZ9JHF7a0j/FDc+51aRqQ+1v1MIe6RFMECw7BWzQT2xpBtpueYuWuWCvagHcqREOT0MHIJ7JGhOoyUKOKiml7CHhGHKrDOY7bsNYIOyGB+Pc8r/zmIYJhfzqzaQ9VeTZsMCJ3lHvvsYBk10NwhOHlL5ZycOJcn3L1UWHI+Rrx0ZULGH+FxhqiEu3/HDXCE8X+5AUi2JQAiGHCZoQs+56RcIXupZ6aGtzncUN3MEgl3+DinNP4gKWkst+QYVO/PyB3ykWabszCTkZ/uVr0CSjPzm74FOF/bdr0xX5UuczxAy4Qa+sDFSRcsUySxpi9FArtJX8T1QF/KBtgiEvh0344FJ6mhqF71JpJO+plktY+bQmlxvOECnq5xbOkTN0E4+uHU96MSEK1PTP1RiSENBnyurCMj7QHKi6RQq3Gyzvkf5DnxWshP10deE/Jgg8WBDrdoDU2tCzxRQVbsQLAq9CxCGYwfYR1hrd0tedZhg5y7LKxPiJF/tmmTvS+KLTia7xHomYXermdom4lnCZzpc2JrlY3D4nGinegK5UvOtsnfBMNXyUEuBVFHlA0aC5LZeS4lzQrsSZvxFEJHFEKjq+v9wCU59x5R6Ayj4D0F/YHdFo5KS8CG7DnFMpbr6DP25JpOwZ4mjEV4xyv18hXY8RXS6+VZyqBRocKd1NU/dapyT2pPCJPkz0PtnqtFrXy2tUddzhEGj5X5ib3HXxVgf04kL8MTEJeZA/6+X7zHImhew8TxXxEyBW3iQQISA1VVcaO/wGis661dJr89F1HhA==
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)(82310400026)(36860700016)(22082099003)(18002099003)(56012099003);DIR:OUT;SFP:1101;
X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1
X-MS-Exchange-AntiSpam-MessageData-0:
	vJ/E3e67BORGzMxIes60C3xdqZf88N8fYj3OZoO/VM/Bs1kzzUI+eh94ze08PExLDqmDqUTncnqH2E2E90wgIka+daGhuMwHkvbRnPxGn7wVxUghxyS/lBnJrk2SmhxgvzMPrLC5bvlX4UW40n2IlQBZz0/r/h4lNlvNRibkB2LMS3Nu8zd7zr9m2kLiIioYeYZgV7EiZkhB8/iQcplFG+PDni5xahMghKuwbkDPOyADWkm9/clNy/Kw4IVjt3uQeZEewC/1muteUm21Yp+wBRuoknt2JLzK0sIH6AhgDZyQYLdqambKyUaJgsZBwYiJ++tXoUGZ8+gkLEO8JtCDHvaOVyu5k1RTn137eDSgNXYD/ygaZoXOt0orJxtcgbfBSBOwX8ZyuDmrr3tl9E8qqv0DulwN1tovz8pbagdINOUKzl9cZ3Um2/a497k0xVou
X-OriginatorOrg: amd.com
X-MS-Exchange-CrossTenant-OriginalArrivalTime: 27 Apr 2026 22:00:40.6182
 (UTC)
X-MS-Exchange-CrossTenant-Network-Message-Id: 933944a8-c0b8-4f39-3f16-08dea4a86c0e
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:
	SJ1PEPF00002326.namprd03.prod.outlook.com
X-MS-Exchange-CrossTenant-AuthAs: Anonymous
X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem
X-MS-Exchange-Transport-CrossTenantHeadersStamped: DS4PR12MB9588
X-purgate-ID: tlsNG-16d1c6/1777327245-91985D75-C5AC291C/0/0
X-purgate-type: clean
X-purgate-size: 1166

On 2026-04-23 04:08, Juergen Gross wrote:
> Add support for using DOMID_ANY in node permissions to indicate that
> all domains are allowed to access the node.
> 
> Add a new feature bit for indicating the support of DOMID_ANY.
> 
> Signed-off-by: Juergen Gross <jgross@suse.com>


> @@ -1754,8 +1755,12 @@ static bool chk_domain_generation(unsigned int domid, uint64_t gen)
>    * Allocate all missing struct domain referenced by a permission set.
>    * Any permission entries for not existing domains will be marked to be
>    * ignored.
> + * An DOMID_ANY entry will be marked to be ignored, if the writing

a/An/A/

> + * domain doesn't have the XENSTORE_SERVER_FEATURE_DOMID_ANY enabled. Note
> + * that Xen tools will never set DOMID_ANY for a guest owned node.

I'm not sure about stating "Xen tools will never" here since it may 
change in the future, and will not be updated.  Maybe "Note that Xen 
tools don't currently set DOMID_ANY for a guest owned node, and they 
aren't expected in the future."?  But maybe just drop it since I'm not 
seeing much value.

Reviewed-by: Jason Andryuk <jason.andryuk@amd.com>

Thanks,
Jason


From xen-devel-bounces@lists.xenproject.org Mon Apr 27 22:01:00 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 27 Apr 2026 22:01:00 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1295354.1572026 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wHU0h-0003Xt-W8; Mon, 27 Apr 2026 22:00:59 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1295354.1572026; Mon, 27 Apr 2026 22:00: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 1wHU0h-0003Xk-Sr; Mon, 27 Apr 2026 22:00:59 +0000
Received: by outflank-mailman (input) for mailman id 1295354;
 Mon, 27 Apr 2026 22:00: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 1wHU0g-0003Wv-EZ
 for xen-devel@lists.xenproject.org; Mon, 27 Apr 2026 22:00:58 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wHU0f-00FCX7-RW
 for xen-devel@lists.xenproject.org; Tue, 28 Apr 2026 00:00:57 +0200
Received: from [10.42.69.8] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <Jason.Andryuk@amd.com>)
 id 69efdc93-e002-0a2a0a5209dd-0a2a45089396-22
 for <xen-devel@lists.xenproject.org>; Tue, 28 Apr 2026 00:00:57 +0200
Received: from [52.101.85.64]
 (helo=BYAPR05CU005.outbound.protection.outlook.com)
 by tlsNG-c1860d.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.1)
 (envelope-from <Jason.Andryuk@amd.com>)
 id 69efdc96-63b5-0a2a45080019-3465554034c0-3
 for <xen-devel@lists.xenproject.org>; Tue, 28 Apr 2026 00:00:57 +0200
Received: from BYAPR21CA0021.namprd21.prod.outlook.com (2603:10b6:a03:114::31)
 by DS0PR12MB8766.namprd12.prod.outlook.com (2603:10b6:8:14e::15) with
 Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9870.16; Mon, 27 Apr
 2026 22:00:51 +0000
Received: from SJ1PEPF00002320.namprd03.prod.outlook.com
 (2603:10b6:a03:114:cafe::d0) by BYAPR21CA0021.outlook.office365.com
 (2603:10b6:a03:114::31) with Microsoft SMTP Server (version=TLS1_3,
 cipher=TLS_AES_256_GCM_SHA384) id 15.20.9891.2 via Frontend Transport; Mon,
 27 Apr 2026 22:00:51 +0000
Received: from satlexmb08.amd.com (165.204.84.17) by
 SJ1PEPF00002320.mail.protection.outlook.com (10.167.242.86) with Microsoft
 SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id
 15.20.9846.18 via Frontend Transport; Mon, 27 Apr 2026 22:00:51 +0000
Received: from SATLEXMB03.amd.com (10.181.40.144) by satlexmb08.amd.com
 (10.181.42.217) with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.2.2562.17; Mon, 27 Apr
 2026 17:00:50 -0500
Received: from satlexmb07.amd.com (10.181.42.216) by SATLEXMB03.amd.com
 (10.181.40.144) with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2507.39; Mon, 27 Apr
 2026 17:00:50 -0500
Received: from [172.27.93.19] (10.180.168.240) by satlexmb07.amd.com
 (10.181.42.216) with Microsoft SMTP Server id 15.2.2562.17 via Frontend
 Transport; Mon, 27 Apr 2026 17:00:50 -0500
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@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=m4/D5kzX0/+1APkYg6CSrmoPsrXDyJACnvbiSnp2aWI5Estdb6c8zov+G5K89R0acLu34cZdoYLOfg5rm33P8dt61IA6si4fv2/It5wTZ3UtrkKUQmzKkaIkzcEXvCc8iwiCMycwBgiCV9J2SFYd8L6bEzOP2T8HokXaZNB6JK/2RiyU6ROsTy1XgzIu8eXVrtu7stmCSo1HUtBIT/gHxhGqlb1jDlGCSgNwg2AGSZ2zu5ZC1i3ZxwllcTJs7y3qza4tjfBt1p1xY8B+CNRuAhAhf5jqhq18QNcuToQ+PYvNebh+c0EI5+ECqzz4ILTck+2nkKFnso7ht9o9fgw6+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=KTDQTBsfrSi1BnoV0I+HO4KO1eLO5hOjyxRXPRkj7KQ=;
 b=j/bz189VTZMspYaIo4ijixB8h56PCQZw2sqneBeoXdg1z5arxPozT6XgFABP1S9+o4enIaSuB74XihpmrenBgFFYEXJzhItXrDiy6wia1HExf8W6m+SU58LU8izA5O8OVqkSftdJiVxV7ip323wWIF3afQEXVy1LCYlctWV2N9q7JHxsKPC2tO1qKzlpcw6iyasnJlSBAV8q77edatMyRhf9A88DyzckzogqtbnVGWi0uklSMB6Jmwc0NEOJdFWDLlmoK2w1hOO2qV4n9rDobepsqSrhYfOSrMy9ZdEPVhdvOUbJhztGQwm2YJixV9N4E/dZWDfZnS8bvcMxTHeJzw==
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=KTDQTBsfrSi1BnoV0I+HO4KO1eLO5hOjyxRXPRkj7KQ=;
 b=TUEcpDMKGToytEehpOeL5jlLBbp7il3hj+F3lkrpM1EIwMr5ZwEFpojeRLlCF1fNB6OTpm8xKABmNAfzqrgQRMPQotVlhpmnHrcT1HdEQvp2kKZMzmyOWYSTDAw/qzOtGFJWUnlmBLLDnhRVgXzumAbflL49e0vebps3BiOlqvY=
X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 165.204.84.17)
 smtp.mailfrom=amd.com; dkim=none (message not signed)
 header.d=none;dmarc=pass action=none header.from=amd.com;
Received-SPF: Pass (protection.outlook.com: domain of amd.com designates
 165.204.84.17 as permitted sender) receiver=protection.outlook.com;
 client-ip=165.204.84.17; helo=satlexmb08.amd.com; pr=C
Message-ID: <d7359a69-267c-4168-bb39-d2997e9b3908@amd.com>
Date: Mon, 27 Apr 2026 18:00:44 -0400
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH 3/4] tools/xenstored: allow @releaseDomain watch for all
 domains
To: Juergen Gross <jgross@suse.com>, <xen-devel@lists.xenproject.org>
CC: <dmukhin@ford.com>, Julien Grall <julien@xen.org>, Anthony PERARD
	<anthony.perard@vates.tech>
References: <20260423080840.530547-1-jgross@suse.com>
 <20260423080840.530547-4-jgross@suse.com>
Content-Language: en-US
From: Jason Andryuk <jason.andryuk@amd.com>
In-Reply-To: <20260423080840.530547-4-jgross@suse.com>
Content-Type: text/plain; charset="UTF-8"; format=flowed
Content-Transfer-Encoding: 7bit
Received-SPF: None (SATLEXMB03.amd.com: jason.andryuk@amd.com does not
 designate permitted sender hosts)
X-EOPAttributedMessage: 0
X-MS-PublicTrafficType: Email
X-MS-TrafficTypeDiagnostic: SJ1PEPF00002320:EE_|DS0PR12MB8766:EE_
X-MS-Office365-Filtering-Correlation-Id: 733dd991-4a5c-43ef-cc02-08dea4a87276
X-MS-Exchange-SenderADCheck: 1
X-MS-Exchange-AntiSpam-Relay: 0
X-Microsoft-Antispam:
	BCL:0;ARA:13230040|1800799024|376014|82310400026|36860700016|56012099003|22082099003|18002099003;
X-Microsoft-Antispam-Message-Info:
	z2NHH0ZadU1TQGqSAzq/ORtbTd1mT3wcqe2RJS3VCvsI9O4dIaCBv4VkLZPoNo1J1INUXyc4mDPSvAKJ13yazRsLrqoGKVlsewP1UxbsRGqtPRBp93alLhi/dGcVayPib1VZt4PRZj4t36YqwG0ZTSEOuOdS3NmjIg+0PB8LCVkuK4k1FKTpaYmAzTRinxJyFD2v2R88RbcqUO/yko8XsZRNImMXjtUzVE38MU3koJSFN/CEx7cgJH30jgDG109rv6swkjQWvGjuIIQVx2DKBYe35vsiODie9MA2A9WZLEW9Tu6pu/jEM+JOpg8b2YKhhfx8vqpSH0N/XF8vbPBRkM2ys+papCbfhXmHCj9U/zwwJU6OEWEMvGPExNG0o0SZfq6arR5Tz3m4jEBs8TFoTuqAz1RJKHVeBtdTAzuIkkzi7ZRD/GYQ1BArPZ+gXllpTGt103ZPPCghfbkzjv7GwoicgPwY6cfccvJcR+GiN8AH6AIaCLSZnaoDrCJAwMGWeEXv8QIl6YbDB+khByhrOjxdabsWraNFqVzq9MzoosNcpFYGxsKghpPVo6d5WrUUoI6BptKQhZt+1KotvuZwbc+0s/wQ08MWll9HMQrusTYgsp07OfY9q6H7F+wG60qpj3GwsmPHJi6uh8PlCP+o8z3Chjf+NVNmxA5XHCkbYrgELQzJ5yQO7ULskkflKr9Wj1kl1wwepEM8eE2xnrm6MQ/Edu9MCpt04qzw6h2bfJZM3ZUmaSRehobtJuw21SKa1OHtekoiCXjTjH0FU3ZnbQ==
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)(82310400026)(36860700016)(56012099003)(22082099003)(18002099003);DIR:OUT;SFP:1101;
X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1
X-MS-Exchange-AntiSpam-MessageData-0:
	F4cbfXilUVYQdEV+xSYM8nZOwJ2SxQYIt8NJb698N5OKMbL3bgmMFSn50ZavYWjhbUgxxbZQA1rgkXsUYUKfIkhOSKyY8QpBwe4+fXRUbrygTR4SBB4c7qmD0epqAOdb9VbJ70yOSFUjJMSEXXH/S8JtThxlvy7v9tSfadA/oingyO8Lz+j7/U28T2MSHMxOf0IIW4h2JzKuNX0YvVBdHmstWle7/62eNkdDVMIQW9bYdITaDpjCygyIJ4dAmtqT1jL2f1Lhe/tga+dSzi20y9sdv0MHwsj3Q9F/fu2XeG6WRdqnn3KaIGFq1sog+VJZ1YuSGakw0uwzsyLu8q+vNv9bu3RxDuw+X1R3IZ+pNpZ+88ObeejrfvOnATWCbqdQiqV/4P8LT7AwKuuDoWOyR04FkbSmLuQJvHUB7qFf2//+TIbXO2oHWHB6ejR7Ji87
X-OriginatorOrg: amd.com
X-MS-Exchange-CrossTenant-OriginalArrivalTime: 27 Apr 2026 22:00:51.4211
 (UTC)
X-MS-Exchange-CrossTenant-Network-Message-Id: 733dd991-4a5c-43ef-cc02-08dea4a87276
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:
	SJ1PEPF00002320.namprd03.prod.outlook.com
X-MS-Exchange-CrossTenant-AuthAs: Anonymous
X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem
X-MS-Exchange-Transport-CrossTenantHeadersStamped: DS0PR12MB8766
X-purgate-ID: tlsNG-c1860d/1777327257-C1161DB1-564C5364/0/0
X-purgate-type: clean
X-purgate-size: 454

On 2026-04-23 04:08, Juergen Gross wrote:
> Currently the @releaseDomain watch is allowed for dom0 only. This is
> problematic for guests which want to give other domains access to
> Xenstore entries, as they have no simple way to tell when such a
> domain is stopped.
> 
> Allow @releaseDomain to be usable by all domains as the default.
> 
> Signed-off-by: Juergen Gross <jgross@suse.com>

Reviewed-by: Jason Andryuk <jason.andryuk@amd.com>


From xen-devel-bounces@lists.xenproject.org Mon Apr 27 22:01:05 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 27 Apr 2026 22:01:05 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1295356.1572034 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wHU0n-0003p8-76; Mon, 27 Apr 2026 22:01:05 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1295356.1572034; Mon, 27 Apr 2026 22:01: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 1wHU0n-0003p1-4H; Mon, 27 Apr 2026 22:01:05 +0000
Received: by outflank-mailman (input) for mailman id 1295356;
 Mon, 27 Apr 2026 22:01:03 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <torvalds@linuxfoundation.org>) id 1wHU0l-0003o1-OM
 for xen-devel@lists.xenproject.org; Mon, 27 Apr 2026 22:01:03 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wHU0j-00EGTi-Ja
 for xen-devel@lists.xenproject.org; Tue, 28 Apr 2026 00:01:03 +0200
Received: from [10.42.69.4] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <torvalds@linuxfoundation.org>)
 id 69efdc95-5cb7-0a2a0a5109dd-0a2a4504d5aa-18
 for <xen-devel@lists.xenproject.org>; Tue, 28 Apr 2026 00:01:03 +0200
Received: from [209.85.218.52] (helo=mail-ej1-f52.google.com)
 by tlsNG-ebf023.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.1)
 (envelope-from <torvalds@linuxfoundation.org>)
 id 69efdbea-1dec-0a2a45040019-d155da34c8a0-3
 for <xen-devel@lists.xenproject.org>; Mon, 27 Apr 2026 23:58:02 +0200
Received: by mail-ej1-f52.google.com with SMTP id
 a640c23a62f3a-ba7a1cc0380so1770652066b.2
 for <xen-devel@lists.xenproject.org>; Mon, 27 Apr 2026 14:58:02 -0700 (PDT)
Received: from mail-ed1-f48.google.com (mail-ed1-f48.google.com.
 [209.85.208.48]) by smtp.gmail.com with ESMTPSA id
 a640c23a62f3a-bb80b2adc60sm9789066b.30.2026.04.27.14.58.01
 for <xen-devel@lists.xenproject.org>
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Mon, 27 Apr 2026 14:58:01 -0700 (PDT)
Received: by mail-ed1-f48.google.com with SMTP id
 4fb4d7f45d1cf-670ab084a39so16198978a12.3
 for <xen-devel@lists.xenproject.org>; Mon, 27 Apr 2026 14:58:01 -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=google header.d=linux-foundation.org header.i="@linux-foundation.org" header.h="Cc:To:Subject:Message-ID:Date:From:In-Reply-To:References:MIME-Version"
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=linux-foundation.org; s=google; t=1777327082; x=1777931882; darn=lists.xenproject.org;
        h=cc:to:subject:message-id:date:from:in-reply-to:references
         :mime-version:from:to:cc:subject:date:message-id:reply-to;
        bh=eodThUBj1SnOvacXe/3ftYxEWQMFbYqc4B0FCa9Alx4=;
        b=Tv1hzwTPVGQgPqeCmGGBzHKj1QMyCpTjQ99WSp2q/4NOWDaDJJFf2kbLoRvOiRrdDj
         h8YKoGq6MgybUE3S4XtfpBpqXeShJXDuJR0/o7IG1724FzjsY1EMqNM4i1RF8bomrmor
         M4TOR1nrqrTsEJoX2Hy03LTDC5TE2dRrMVhvg=
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20251104; t=1777327082; x=1777931882;
        h=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;
        bh=eodThUBj1SnOvacXe/3ftYxEWQMFbYqc4B0FCa9Alx4=;
        b=RpmwnNi+h20MnTfQwGSKTgpIMU4YUcg1kR5SviUal5a7icdNawFW7KIR9g6XDxenoM
         sJ+bZ3VhHCVpUbZGpJwkNPoN1N5BMgvJDhfgcJQKhLOO0fSsDynIjcplCAN1H/4j4eDS
         npsb3alcmZNsTMdgNuF9SKvLo9ouinZiuGIWziP5HAsfyX3W3WXDPUaLW2W8qxAOx+cd
         fMAcH9QSFaUx583c/Kamy7LzZBg6ClxVCc9aqnvz/GU/3g5aRDqeDvTXvVFqo+JsDAek
         WNZzOJY3OSLCwmM8R0g+BtfhWFlMAvIyP33gsK5OXkezUWlEapphJy9+DhVH2WbvCQAo
         nN/g==
X-Forwarded-Encrypted: i=1; AFNElJ+iPCOZnMroIXxD/JLE9hgcQY9R40IdSWo0OjPL/ukURIfOoVREc6r//nDlbdvxdVUll48mkSSN12Q=@lists.xenproject.org
X-Gm-Message-State: AOJu0YwOrebCwSOH5cRIZmYdDn4QTuIc7/HHmoi5W7mRph+NhfrVlmke
	ZpoEqf9ByMQdgHj6PWDYnRvb5p059Ot+qP6SODhFQA/RFLA6249RCvKYkTlrlU+M/Wh9ytmKvSL
	lMrxgilAURg==
X-Gm-Gg: AeBDievwTqFmI9x8Y7nneCwrIIEnwEgyv49laLDJmiQy+yN+1yqJ0gWFU0AU0FRUP4N
	fR9fv/6HnC2YfSGB51mYcf6hWnhZL1AopnNx1D3TB2bmySubtjvbbN9sMRSWcw1cL1Jka5YF2vi
	bMUi2M2JpKFE4p0EJawHrr44jtcLFgqRbefcYcjX8OgqO7DZf3cxAewLqelOT3tfYHz45MzL2eL
	kyXf3YSOw+mNc7lBTx1Bp5+qCsNa2bDdCcqEm92pQ3uWmX1bmI4Ayv1g/1Jbbcx2AInb/jN+fkY
	pPv2Xg+AtCzg8czPQE+nS6degYxqHarGmiNu7Yq1IjrThOkw+yyt9fG/y7h+OvWiJhB7iy6utnc
	FVyQ8pSG5Pj4iuMD4inDZyU/poRnVYHv+bSfOqglNN4VAg5GjpKKs7KO3CdZUZrqQYwrgcm59Sy
	ou+Kj4jFCnTi0kjMnfBecRtvVT34CYqbLCBSWI92uX9m65b28Ms6cShD48kOxIneIpUifaRCrP5
	13vd3KVzqQ=
X-Received: by 2002:a17:907:928d:b0:b9c:b069:8ab6 with SMTP id a640c23a62f3a-bb80100e81bmr33655466b.7.1777327081625;
        Mon, 27 Apr 2026 14:58:01 -0700 (PDT)
X-Forwarded-Encrypted: i=1; AFNElJ+Tvq2sxnlgoDfMFkefIWXA3V0QyYTpuG6hxj5AaFAaoc34Tf/CS+F7UJeZlVF3PR92w5i/6mF0z/c=@lists.xenproject.org
X-Received: by 2002:a05:6402:35c2:b0:677:270f:6f4b with SMTP id
 4fb4d7f45d1cf-679bb04a8a7mr185115a12.1.1777326742385; Mon, 27 Apr 2026
 14:52:22 -0700 (PDT)
MIME-Version: 1.0
References: <cover.1777306795.git.chleroy@kernel.org> <0ee46bb228d97163fbdc14f2a7c52b93d8bc34ce.1777306795.git.chleroy@kernel.org>
 <ae-j2_QirCySZD02@yury> <63a4d0f6-0eb3-48cd-9f98-bf7b223b2606@kernel.org> <ae-2yLWSGnfeTvh1@yury>
In-Reply-To: <ae-2yLWSGnfeTvh1@yury>
From: Linus Torvalds <torvalds@linux-foundation.org>
Date: Mon, 27 Apr 2026 14:52:05 -0700
X-Gmail-Original-Message-ID: <CAHk-=wgPrLy0FR3sEWBYQuNAac1axDASYMnTuPuxEU0WytzL7w@mail.gmail.com>
X-Gm-Features: AVHnY4LQUFWo9ODz4M3q2vZC9Gn8nsdYr95Nd4ky5ERVHHxIyN_9ZXY5zjebfdc
Message-ID: <CAHk-=wgPrLy0FR3sEWBYQuNAac1axDASYMnTuPuxEU0WytzL7w@mail.gmail.com>
Subject: Re: [RFC PATCH v1 7/9] x86: Add unsafe_copy_from_user()
To: Yury Norov <ynorov@nvidia.com>
Cc: "Christophe Leroy (CS GROUP)" <chleroy@kernel.org>, Andrew Morton <akpm@linux-foundation.org>, 
	David Laight <david.laight.linux@gmail.com>, Thomas Gleixner <tglx@linutronix.de>, 
	linux-alpha@vger.kernel.org, Yury Norov <yury.norov@gmail.com>, 
	linux-kernel@vger.kernel.org, linux-snps-arc@lists.infradead.org, 
	linux-arm-kernel@lists.infradead.org, linux-mips@vger.kernel.org, 
	linuxppc-dev@lists.ozlabs.org, kvm@vger.kernel.org, 
	linux-riscv@lists.infradead.org, linux-s390@vger.kernel.org, 
	sparclinux@vger.kernel.org, linux-um@lists.infradead.org, 
	dmaengine@vger.kernel.org, linux-efi@vger.kernel.org, 
	linux-fsi@lists.ozlabs.org, amd-gfx@lists.freedesktop.org, 
	dri-devel@lists.freedesktop.org, intel-gfx@lists.freedesktop.org, 
	linux-wpan@vger.kernel.org, netdev@vger.kernel.org, 
	linux-wireless@vger.kernel.org, linux-spi@vger.kernel.org, 
	linux-media@vger.kernel.org, linux-staging@lists.linux.dev, 
	linux-serial@vger.kernel.org, linux-usb@vger.kernel.org, 
	xen-devel@lists.xenproject.org, linux-fsdevel@vger.kernel.org, 
	ocfs2-devel@lists.linux.dev, bpf@vger.kernel.org, kasan-dev@googlegroups.com, 
	linux-mm@kvack.org, linux-x25@vger.kernel.org, rust-for-linux@vger.kernel.org, 
	linux-sound@vger.kernel.org, sound-open-firmware@alsa-project.org, 
	linux-csky@vger.kernel.org, linux-hexagon@vger.kernel.org, 
	loongarch@lists.linux.dev, linux-m68k@lists.linux-m68k.org, 
	linux-openrisc@vger.kernel.org, linux-parisc@vger.kernel.org, 
	linux-sh@vger.kernel.org, linux-arch@vger.kernel.org
Content-Type: text/plain; charset="UTF-8"
X-purgate-ID: tlsNG-ebf023/1777327082-2B7693FF-D1506192/13/0
X-purgate-type: clean
X-purgate-size: 759

On Mon, 27 Apr 2026 at 12:19, Yury Norov <ynorov@nvidia.com> wrote:
>
> This is what Linus said when added x86 implementation for copy_from_user()
> in c512c69187197:

Note that some things have happily changed in the six+ years since...

>   That's partly because we have no current users of it, but also partly
>   because the copy_from_user() case is slightly different and cannot
>   efficiently be implemented in terms of a unsafe_get_user() loop (because
>   gcc can't do asm goto with outputs).

now everybody can do asm goto with outputs.

Yes, it's disabled on older versions, so it's not *always* available,
but all modern versions do it. And if you care about performance, you
won't be using an old compiler.

             Linus


From xen-devel-bounces@lists.xenproject.org Mon Apr 27 22:15:16 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 27 Apr 2026 22:15:16 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1295377.1572044 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wHUEG-0006Vs-FV; Mon, 27 Apr 2026 22:15:00 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1295377.1572044; Mon, 27 Apr 2026 22:15: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 1wHUEG-0006Vl-Cd; Mon, 27 Apr 2026 22:15:00 +0000
Received: by outflank-mailman (input) for mailman id 1295377;
 Mon, 27 Apr 2026 22:15:00 +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 1wHUEF-0006Vf-T8
 for xen-devel@lists.xenproject.org; Mon, 27 Apr 2026 22:15:00 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wHUEE-00Gz9h-SF
 for xen-devel@lists.xenproject.org; Tue, 28 Apr 2026 00:14:58 +0200
Received: from [10.42.69.3] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <Jason.Andryuk@amd.com>)
 id 69efdfdf-2eae-0a2a0a5409dd-0a2a4503d534-4
 for <xen-devel@lists.xenproject.org>; Tue, 28 Apr 2026 00:14:58 +0200
Received: from [52.101.57.38]
 (helo=BN8PR05CU002.outbound.protection.outlook.com)
 by tlsNG-33051d.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.1)
 (envelope-from <Jason.Andryuk@amd.com>)
 id 69efdfe1-672d-0a2a45030019-34653926eadc-4
 for <xen-devel@lists.xenproject.org>; Tue, 28 Apr 2026 00:14:58 +0200
Received: from SA0PR11CA0209.namprd11.prod.outlook.com (2603:10b6:806:1bc::34)
 by DS0PR12MB8442.namprd12.prod.outlook.com (2603:10b6:8:125::12) with
 Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9870.16; Mon, 27 Apr
 2026 22:14:50 +0000
Received: from SA2PEPF000015CC.namprd03.prod.outlook.com
 (2603:10b6:806:1bc:cafe::7f) by SA0PR11CA0209.outlook.office365.com
 (2603:10b6:806:1bc::34) with Microsoft SMTP Server (version=TLS1_3,
 cipher=TLS_AES_256_GCM_SHA384) id 15.20.9846.26 via Frontend Transport; Mon,
 27 Apr 2026 22:14:50 +0000
Received: from satlexmb07.amd.com (165.204.84.17) by
 SA2PEPF000015CC.mail.protection.outlook.com (10.167.241.202) with Microsoft
 SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id
 15.20.9846.18 via Frontend Transport; Mon, 27 Apr 2026 22:14:49 +0000
Received: from SATLEXMB04.amd.com (10.181.40.145) by satlexmb07.amd.com
 (10.181.42.216) with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.2.2562.17; Mon, 27 Apr
 2026 17:14:49 -0500
Received: from satlexmb07.amd.com (10.181.42.216) by SATLEXMB04.amd.com
 (10.181.40.145) with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2507.39; Mon, 27 Apr
 2026 17:14:49 -0500
Received: from [172.27.93.19] (10.180.168.240) by satlexmb07.amd.com
 (10.181.42.216) with Microsoft SMTP Server id 15.2.2562.17 via Frontend
 Transport; Mon, 27 Apr 2026 17:14:48 -0500
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@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=mRp+73raOMz/5p+FJ0dlp4e30VLCg0y/b7FmM9FWkwZzh3qUIGlixir68ybae18V5cuS/GRb+PnUgQnLhNbEGDiLBHERcqxS9E+jhNeHha92WNO3ETsLsd6bADyszeM/VDh75QHTZJ4UB5wNto4WGshfZMxRD2XdWa9NuPaEoNaiv2j2tsQFMkUDprUo1P4kjUWfv6djSP9pin6pZy+zY5JkQe+5hEWSmkmtNdJDMyE/qcDSdY2UtyzQih4zalxOV0RhGk7ve+0hto13eiBDxAo/+zq0DH0GweYSywAOnOxqLOCffm63BlvXumFVZ3LTSMP2BiJHv90gt3cv8vzaLg==
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com;
 s=arcselector10001;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1;
 bh=Q2xvCKkDcvutXpaTlJO5HLGwjNnfM1xB8iacdMNkKWY=;
 b=i3ppMjupcY7DlQ7QpbHrQszYaboRXWcBMlPqnnHURwVxDjCB+8jCKE0RPFoMwZa112HQ2OdExUesH1GiJeRKB7n8u+IuFaGrDmF2OwVAdokcys2NvCPiOO/CederfBhkFy6Tcr3vMdeDf4Xv37CA2uyPKbMeCLoA94n4K7R8E5YTq44b7mPZ+DnHrVsctxFWq0n96sQsD9vf69IbK4S9eYm6YaG/YO+n7Ho73FUlIBD/aeZEYtdcqwo67SD8qFKBS6l8Ga+Sf60x7D3RholNvmS0Ba6Iwz5QKYxfbB+wmXTT2si0MQ/xggV7ArvDOJLNtza+rJ/u7vUFCMHMsN9rgw==
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=Q2xvCKkDcvutXpaTlJO5HLGwjNnfM1xB8iacdMNkKWY=;
 b=GzvjmJkGYtTlOCEDk4tbsJAuBIHJ8337i0TkAs5YGzJ/glb6Lwb4o7Y989fJKtb6MclwuBZfSQDSu8I4elT56zdLQG7kExgkrO+k0eViCT6KATVM75YC/faaFM311j2gXknGQi7P0xvAUrjmuqpM/p9NfXs6cY625i0O8oNc1nA=
X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 165.204.84.17)
 smtp.mailfrom=amd.com; dkim=none (message not signed)
 header.d=none;dmarc=pass action=none header.from=amd.com;
Received-SPF: Pass (protection.outlook.com: domain of amd.com designates
 165.204.84.17 as permitted sender) receiver=protection.outlook.com;
 client-ip=165.204.84.17; helo=satlexmb07.amd.com; pr=C
Message-ID: <9624178e-7596-4395-adca-7cedc58aafb9@amd.com>
Date: Mon, 27 Apr 2026 18:14:45 -0400
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH 4/4] tools/xenstored: remove permissions related to dead
 domain
To: Juergen Gross <jgross@suse.com>, <xen-devel@lists.xenproject.org>
CC: <dmukhin@ford.com>, Julien Grall <julien@xen.org>, Anthony PERARD
	<anthony.perard@vates.tech>
References: <20260423080840.530547-1-jgross@suse.com>
 <20260423080840.530547-5-jgross@suse.com>
Content-Language: en-US
From: Jason Andryuk <jason.andryuk@amd.com>
In-Reply-To: <20260423080840.530547-5-jgross@suse.com>
Content-Type: text/plain; charset="UTF-8"; format=flowed
Content-Transfer-Encoding: 7bit
Received-SPF: None (SATLEXMB04.amd.com: jason.andryuk@amd.com does not
 designate permitted sender hosts)
X-EOPAttributedMessage: 0
X-MS-PublicTrafficType: Email
X-MS-TrafficTypeDiagnostic: SA2PEPF000015CC:EE_|DS0PR12MB8442:EE_
X-MS-Office365-Filtering-Correlation-Id: 53a1d0c5-1e52-4117-a059-08dea4aa660f
X-MS-Exchange-SenderADCheck: 1
X-MS-Exchange-AntiSpam-Relay: 0
X-Microsoft-Antispam:
	BCL:0;ARA:13230040|36860700016|1800799024|82310400026|376014|56012099003|22082099003|18002099003;
X-Microsoft-Antispam-Message-Info:
	0IOq6Usltb60LVV7b1pPUVRqyFL/PwgWcF//dvCAHCTopPcjlM/v1zXbWIg73xfg3uf1HPzcuWv1rradFiOrKLCgPDV5N5+5Dih9LWaGuEbdTgnPC+lwL7kZF2+uhmmw+TySZlz472wizIS8kvO6WL6Jjin4/+fYsSQVDLkdBvjWLzcX7P/KXjBVWOnJGaPyqU1jTNXKjL5m0k30mbVk/2wfricnd4VGsahmwMLbPKnahcuA2SeebxSuaOKNjyh8UR/w84Y5JhwCKK1e1LDe7982gQcsJO+COyXw0JMaL4ZwOm0eXu0S+jTFHWh2fARkVO8eelNSJGFwnw2UPqk3qTDumSmLOTTS59ucQgYOGhT0IraAzjR+Fvipjh7aOj5z90jGvOaprLGBrcX13+3UMeCv/SFCtDg319PW3hOnkF1o+x5dLcuqsgaMlXAp6uF0Mf878cqwCFEwQfwA17y4985l/ScIDYODwSpIeMlVPTFwy21lDTdubj+lXn7d7c+HEzrvq8YD54teeQ5SUpPvM8tOqg0eX6yanHIs/cd0Qr0r+c+nQjbh6wk4T7dUuMqzmfw6lzR5bWmpKosNvmTNtVVOQVdljYX5HVt/MjBzLn73Z3n8nP+rJ1eO/AKXdlmnWcqJp3tVTdEj22lb3wJleKxDrLvSstmUQ/dEKJOYOnbwUPS5KvBMKQeGaLavE4Pypiub5cfbNxJTJ3V5TQIHrImCK62DnRCa3OPFzwSe8r5dczj6kbsaw8QQwNA2Is2NupyqxErUQIZlcQJw21Aumw==
X-Forefront-Antispam-Report:
	CIP:165.204.84.17;CTRY:US;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:satlexmb07.amd.com;PTR:InfoDomainNonexistent;CAT:NONE;SFS:(13230040)(36860700016)(1800799024)(82310400026)(376014)(56012099003)(22082099003)(18002099003);DIR:OUT;SFP:1101;
X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1
X-MS-Exchange-AntiSpam-MessageData-0:
	ir3z/IKUxaaxxgf5l8uBQeKuLyEGqt/bXH2dRT+xEoO7vRN+Fjcmr8eY7R4Cjvi3ITsuHwZTnwBMAsc82S0thFequFgC5YlgLzswGe61sBmlWQRWyN6U1svSWHYproI83I7WtZEDK0iIeB0rwdMm4g0PrWuLU1ZWix1luevt7HXNvRE3/usHfAWQRu/uHPQ3arCOkYPjMsJOnaMbGJ5ZH+gS1F16S+oJMkcx2DOiy4+KBh8fIBvQE4QvMO5O234HZ2e7t4NNV6G3wIJ4fedWgwDDNFzFOYzKYE56MHYwuENk2dYjokofjKpdwcKIm3lhKtC5brqdV+vbepPt8vik2vA7l0VmJF2cB6jGXpt0BsDze/HjBga+381MSlugcVpHNktkLR/mdSeC9YQPy73p41CvdMhI1DE65fkS1PmFM4QWefJXTc2GmVkYmXTE5Pz4
X-OriginatorOrg: amd.com
X-MS-Exchange-CrossTenant-OriginalArrivalTime: 27 Apr 2026 22:14:49.6228
 (UTC)
X-MS-Exchange-CrossTenant-Network-Message-Id: 53a1d0c5-1e52-4117-a059-08dea4aa660f
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:
	SA2PEPF000015CC.namprd03.prod.outlook.com
X-MS-Exchange-CrossTenant-AuthAs: Anonymous
X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem
X-MS-Exchange-Transport-CrossTenantHeadersStamped: DS0PR12MB8442
X-purgate-ID: tlsNG-33051d/1777328098-A2378938-D5F372B5/0/0
X-purgate-type: clean
X-purgate-size: 908

On 2026-04-23 04:08, Juergen Gross wrote:
> Wit unprivileged domains now capable to use the @releaseDomain watch,

s/Wit/With/

> there is no reason not to remove any node permissions which relate to
> a domain which has been removed.
> 
> This resolves a complex scenario where a new domain could inherit the
> permissions of an old one with the same domid.
> 
> Signed-off-by: Juergen Gross <jgross@suse.com>

>   
> -	return domain->acc_val[ACC_NODES] ? ret : WALK_TREE_SUCCESS_STOP;
> +	if (node->perms[0].id == domain->domid) {
> +		domain_nbentry_dec(NULL, domain->domid);
> +		node->perms[0].id = priv_domid;
> +		node->acc.memory = 0;
> +		domain_nbentry_inc(NULL, priv_domid);
> +		trace("moving orphaned node %s to dom0\n", node->name);

Since you are touching this, maybe s/dom0/dom%u/ and priv_domid?

Reviewed-by: Jason Andryuk <jason.andryuk@amd.com>

Thanks,
Jason


From xen-devel-bounces@lists.xenproject.org Mon Apr 27 22:30:57 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 27 Apr 2026 22:30:57 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1295386.1572053 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wHUTI-0001dM-Qu; Mon, 27 Apr 2026 22:30:32 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1295386.1572053; Mon, 27 Apr 2026 22:30: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 1wHUTI-0001dF-M8; Mon, 27 Apr 2026 22:30:32 +0000
Received: by outflank-mailman (input) for mailman id 1295386;
 Mon, 27 Apr 2026 22:30:31 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <ynorov@nvidia.com>) id 1wHUTH-0001d9-1y
 for xen-devel@lists.xenproject.org; Mon, 27 Apr 2026 22:30:31 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wHUTG-006i5I-92
 for xen-devel@lists.xenproject.org; Tue, 28 Apr 2026 00:30:30 +0200
Received: from [10.42.69.10] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <ynorov@nvidia.com>)
 id 69efe350-e002-0a2a0a5209dd-0a2a450aac3a-28
 for <xen-devel@lists.xenproject.org>; Tue, 28 Apr 2026 00:30:29 +0200
Received: from [52.101.57.48]
 (helo=BN8PR05CU002.outbound.protection.outlook.com)
 by tlsNG-4011c0.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.1)
 (envelope-from <ynorov@nvidia.com>)
 id 69efe384-56b3-0a2a450a0019-346539302d82-3
 for <xen-devel@lists.xenproject.org>; Tue, 28 Apr 2026 00:30:29 +0200
Received: from CY8PR12MB8300.namprd12.prod.outlook.com (2603:10b6:930:7d::16)
 by SA1PR12MB6871.namprd12.prod.outlook.com (2603:10b6:806:25f::22)
 with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9870.16; Mon, 27 Apr
 2026 22:30:21 +0000
Received: from CY8PR12MB8300.namprd12.prod.outlook.com
 ([fe80::ce75:8187:3ac3:c5de]) by CY8PR12MB8300.namprd12.prod.outlook.com
 ([fe80::ce75:8187:3ac3:c5de%3]) with mapi id 15.20.9870.013; Mon, 27 Apr 2026
 22:30: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=temperror header.s=selector2 header.d=Nvidia.com header.i="@Nvidia.com"
ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none;
 b=cw2dkYic0VXH1kOjwz3jIZQqr8NTQVH9DBTRDd+uRIJW8uYvfM3m58iBDy5zpHYFWzEy5HurjZ12uATc9tuoWjt6/VUzJQgYZAXBZYTEWP2XEmKALhwnH1ENaA8Ac3CwlRTLvFMEwZgba4b3Efi2fsBGQWsShlfVbk+iphjAE+Pk8XuV/eyWjUpmRM4Y9HTRa5iR9RbjMNZZynCz9AHHff0s05EhkIWAfnApXK/qNRqGYLDiFlw7SNnaj3GyeIXPMO8znU+1Kcc/CMVRnCsFx/w1kA7TU7UcIRQb+Rb580j65fMEeEArkSpCjuQa2ek7DCgnd0gLF6jXF9N06qZxtg==
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com;
 s=arcselector10001;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1;
 bh=INTDocwjeOkxaSI4e6JrPlp7Kh7b3u8/5GXqjyNfeUk=;
 b=SqLxt4MZPnahGOYqHMCjywU0/HSF4waA/vwnt9ydy1Lm3yrvjNZmkOwuRl93fy6RdmE6bPOC0ZQH4p62+pUUajNd8KxX3yJjBZ746IuQ8gH2tmJrktf9NUD/vrVHw11Y2NBVtrlIsVl9bi7Gqi3ZmgASKvtgOkWY/PmrmgA8udiJVCjbw3br3CieEjsiA/YIbcoZFACykvsdKe3H0iQEMKywElW7FGY/qQYU/hi4PYicWTB3SL3zcJzUqBCWxEiVibRndteACQ6BsdcLI27Rvh553IDZD+jPGF6v9qtpISs3YncftmVw4ldPrz0yQOOExCWF0vjzgVzKvTwuTXEdYA==
ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass
 smtp.mailfrom=nvidia.com; dmarc=pass action=none header.from=nvidia.com;
 dkim=pass header.d=nvidia.com; arc=none
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=Nvidia.com;
 s=selector2;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck;
 bh=INTDocwjeOkxaSI4e6JrPlp7Kh7b3u8/5GXqjyNfeUk=;
 b=nMn9Mg2etjSkCULYpJ5Rnl9/tmBSYad+HpQiMXeFiB6hdvpkrBodtOjFqLvvae82lTwKkV5GAhUHMYupb9utCbBt74zqUto3WQW72bithMtImxRQVa6G6ZaLkW4OIEKHFvEKJ+4xMIBslyesZGqZr4aXMhT6ctHxrHNz0lcJuSDOtu83n51qwHc7wWb/LGrn5RUMmskk9za8NlV0oTff8Bpmfg6PDqFInZvOWRUYF9K6Lc76NhEMq83jHNyESr4la6NDuNth/60Y4SeDe0uNCU02GfnTMD1so+hMFearXgJnH1poNP4yUWzDn8gizO53kHtparXBSnIxAyJtXuIfFA==
Authentication-Results: dkim=none (message not signed)
 header.d=none;dmarc=none action=none header.from=nvidia.com;
Date: Mon, 27 Apr 2026 18:30:16 -0400
From: Yury Norov <ynorov@nvidia.com>
To: Linus Torvalds <torvalds@linux-foundation.org>
Cc: "Christophe Leroy (CS GROUP)" <chleroy@kernel.org>,
	Andrew Morton <akpm@linux-foundation.org>,
	David Laight <david.laight.linux@gmail.com>,
	Thomas Gleixner <tglx@linutronix.de>, linux-alpha@vger.kernel.org,
	Yury Norov <yury.norov@gmail.com>, linux-kernel@vger.kernel.org,
	linux-snps-arc@lists.infradead.org,
	linux-arm-kernel@lists.infradead.org, linux-mips@vger.kernel.org,
	linuxppc-dev@lists.ozlabs.org, kvm@vger.kernel.org,
	linux-riscv@lists.infradead.org, linux-s390@vger.kernel.org,
	sparclinux@vger.kernel.org, linux-um@lists.infradead.org,
	dmaengine@vger.kernel.org, linux-efi@vger.kernel.org,
	linux-fsi@lists.ozlabs.org, amd-gfx@lists.freedesktop.org,
	dri-devel@lists.freedesktop.org, intel-gfx@lists.freedesktop.org,
	linux-wpan@vger.kernel.org, netdev@vger.kernel.org,
	linux-wireless@vger.kernel.org, linux-spi@vger.kernel.org,
	linux-media@vger.kernel.org, linux-staging@lists.linux.dev,
	linux-serial@vger.kernel.org, linux-usb@vger.kernel.org,
	xen-devel@lists.xenproject.org, linux-fsdevel@vger.kernel.org,
	ocfs2-devel@lists.linux.dev, bpf@vger.kernel.org,
	kasan-dev@googlegroups.com, linux-mm@kvack.org,
	linux-x25@vger.kernel.org, rust-for-linux@vger.kernel.org,
	linux-sound@vger.kernel.org, sound-open-firmware@alsa-project.org,
	linux-csky@vger.kernel.org, linux-hexagon@vger.kernel.org,
	loongarch@lists.linux.dev, linux-m68k@lists.linux-m68k.org,
	linux-openrisc@vger.kernel.org, linux-parisc@vger.kernel.org,
	linux-sh@vger.kernel.org, linux-arch@vger.kernel.org
Subject: Re: [RFC PATCH v1 7/9] x86: Add unsafe_copy_from_user()
Message-ID: <ae_jeJLlVWjJ4sOY@yury>
References: <cover.1777306795.git.chleroy@kernel.org>
 <0ee46bb228d97163fbdc14f2a7c52b93d8bc34ce.1777306795.git.chleroy@kernel.org>
 <ae-j2_QirCySZD02@yury>
 <63a4d0f6-0eb3-48cd-9f98-bf7b223b2606@kernel.org>
 <ae-2yLWSGnfeTvh1@yury>
 <CAHk-=wgPrLy0FR3sEWBYQuNAac1axDASYMnTuPuxEU0WytzL7w@mail.gmail.com>
Content-Type: text/plain; charset=us-ascii
Content-Disposition: inline
In-Reply-To: <CAHk-=wgPrLy0FR3sEWBYQuNAac1axDASYMnTuPuxEU0WytzL7w@mail.gmail.com>
X-ClientProxiedBy: BN0PR04CA0197.namprd04.prod.outlook.com
 (2603:10b6:408:e9::22) To CY8PR12MB8300.namprd12.prod.outlook.com
 (2603:10b6:930:7d::16)
MIME-Version: 1.0
X-MS-PublicTrafficType: Email
X-MS-TrafficTypeDiagnostic: CY8PR12MB8300:EE_|SA1PR12MB6871:EE_
X-MS-Office365-Filtering-Correlation-Id: 1f3655ce-20ef-4e2c-2fe2-08dea4ac8fa5
X-MS-Exchange-SenderADCheck: 1
X-MS-Exchange-AntiSpam-Relay: 0
X-Microsoft-Antispam:
	BCL:0;ARA:13230040|10070799003|376014|7416014|366016|1800799024|56012099003|22082099003|18002099003;
X-Microsoft-Antispam-Message-Info:
	/PUX5wTJGMs/KBsNviNpWA288jfovgZeFH/D5rlo4Ft68PLkNzRu+VJLbwZPVL7WMTmGE/7sGAUjidmOrf6PO7cVfcrQe6QT08Oqm4vVTbq+1kk8SU+vprwEBmYwG+gAfH2qmWzaQJsEm7YpHDRuW/7Cs1/Xk+BrlRiawZrKiyZzPhbDmpZp82G1md2nBR6MipihlTfUyQ+saizppq6JVvqKLc5dE++LYGjddOZxiO3yutMfU07Cp5tvF3yobREfTw/fDdOZgk2+rMoVASDdUVkAaqH0FXJ28Bm6NVJs+NSRjDYnMLXVfJoJcrsNuF4W22tsLIY5w3wDLjkrtfUAaGwMnqXvKgmEE1qpibH4HaSjxrWfCswHPCx7Vc7oELIEGKApXlepMVtafKQ1eBm0bnWKqspLr19ifmkOBqioMXptCdlJ75n5gVcLiBzfflllkv55OjNYGzmu/P23vn89/MqFVHCPYaOOw1vjLjy3Olm5/wQLP++hGKYxXIrZ64iQpyo+GIlD3HGQMFC+oPQ+4alqqHQ0+kc6l4epUtSsHVmWOEFWpRzFBafriU8ilGCl8/f8jCwsnB3t+/+q8pFFXiilqgDF9lWOw60zcIbP7xO24Ozxdu5GXF2ThaRP8NVaPA/4be0MJgysKa4xa0hnonHdTiIDcF4SkkqpHjiJ5qwmY2Gce2PdYuEwEpTf8TjR66psUlL2DcOZVs8sQNjcffnyedzo5Nat0VSDOW7wgzk=
X-Forefront-Antispam-Report:
	CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:CY8PR12MB8300.namprd12.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(10070799003)(376014)(7416014)(366016)(1800799024)(56012099003)(22082099003)(18002099003);DIR:OUT;SFP:1101;
X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1
X-MS-Exchange-AntiSpam-MessageData-0:
	=?us-ascii?Q?y1CvQpZYZ2eMHe2MhRl9jMjiWbPAKKWXFKb0rNr6P2FKNpuYqlm0vHnj/c+p?=
 =?us-ascii?Q?etrijvKck7MltKVOhuLlrUk/4maEie31AAuCO4vEDEQz7eLSMhE+LXqZ7580?=
 =?us-ascii?Q?/dTzhhd6ZXj5MAUt3SGOfXeBZ9mnjjf2uZ2zVl0944wpMj1aPR6bhJJsKwkp?=
 =?us-ascii?Q?VUL5kcdJLltj/bbXdIYt5R4Q5sFcreBO2t2YjdncWBk9awGhHkshgH2+xQK3?=
 =?us-ascii?Q?KZ9jZvFRcaTs7WARWb/cK4emdp6bDzM7GZoacpZC4jFUpUOAzU++q1cUqbIp?=
 =?us-ascii?Q?IcojDKNgAE9HncwAue719JnQVeUjYbuQfI9vFrEzSJwqQkAaJNY/N9KIqHH5?=
 =?us-ascii?Q?gb6ElO029nGL4z2hh5SKSqKFAJYfJvd6N318L3xLFXMXoREhQbz05reO9kR7?=
 =?us-ascii?Q?GWI0NeihuZjKnE/Ak2IoeTePP++KCVgyuhiSD0PXj7MCcQGFIfSjdMtsrSD0?=
 =?us-ascii?Q?qpof8HORPaHefDg6xtvU0Ls17iRCuj1Xtuu5fBcRshNrriAJmj0nlZqzlPp0?=
 =?us-ascii?Q?oq96Gm2fPd5N0qcJLOIB4vfutS46eOW3OBK4BlzxlMwOHl6WCEd/wmb2kDAK?=
 =?us-ascii?Q?VPTN1pR756Yxc8PWdgyvhKBLft+N8lDJQGyoSrLOClJEovN6quxxF5UrmLgl?=
 =?us-ascii?Q?BSzU4GMBOjLU5qQqVVM1fzFPiQJrPzyeuGPUF6s5eWsZMUNFhY8uESY52c+S?=
 =?us-ascii?Q?SE6TQJUy1lWTLGmxVFeFQgD9qZCVc47lVZv/tMLN8sA71HzeCfL2tx6zUAP1?=
 =?us-ascii?Q?hu81S/ywLrBvCHKaffr0P8d1j0edNWOzngwXYnwimWLWnJ+OOYH82yO8AfMj?=
 =?us-ascii?Q?9OG00BjXZXIsalWG80IQlBy27WpQ84/1c9oAnvbNeJfjdgOz4uIbM6FHkYyA?=
 =?us-ascii?Q?MupGlptk1Xu50YbzeOZ03kGiMKX0VxGdprIqVjtikQtw3BlYFt0IIGwsWiy8?=
 =?us-ascii?Q?wb6reRFBF6KZAnTmSERVS8uD68yLvuu4uDhGLoBqPxQofaxbHl5bqyIHeiVZ?=
 =?us-ascii?Q?JmIJF4RPeAJ5/v6RFBLjGohX5ZjyNkXJb9RZjSdHP1ziqpItJ3rcJG2ZFZJT?=
 =?us-ascii?Q?TOtNJUdl8MYzQUzieK78aUKDOyKuWpAWh2Jep6/sVe9CBZ2NlHHJGqtGJ0+6?=
 =?us-ascii?Q?owwVe4C6J1ikL7yn0gdEWIiiyjuOxoCdI3+hulZemm7LK5thRU+ZyJaPjQR+?=
 =?us-ascii?Q?YK+iuiqW4QYnqG8Bp71RoCe6giJoTJeiqfcGpFeX0h22VmfkFjYMyp/W8nb3?=
 =?us-ascii?Q?mBn+6WSNLOLGrrznB6jKXoRf6cnQ1xEMeJxPdXY/BnX2sOfoIY42tLqAScbN?=
 =?us-ascii?Q?LtZ7qBEv6zip7I8sQ5//f4FDcyaAHJDISd0ze+LMD1SGCz1vUejeBGt5jNwE?=
 =?us-ascii?Q?iyPDDoJ3VJHJ8aGIrV8p6MgUo+UO94WHdRtz/JHe7JLmdPqflsqW5Z53kqYw?=
 =?us-ascii?Q?MP/nGig0/bW+qSUHZi0ybA7U9qUULzBtAdJ3gf4NkhxIRHImljJP3sZS+AbG?=
 =?us-ascii?Q?VX+xV6ny9hftAe82VJ9ewoJIvZ1jOdavxAo38YgxrnhYM4VA4PLlPxMJgrFB?=
 =?us-ascii?Q?bl95emjkBX7MxnGkfKrgN0u2MtTSs3sO1Wdm6BH6ZQ9kazGSKdvWqMQAmcgZ?=
 =?us-ascii?Q?2TAXsG9f2jiTJy/XjYe+XqDYMz+09yazlugWhbXrIX8heUtqQqlD4RBq2C5J?=
 =?us-ascii?Q?CuCIR2G+UzaeT6rHBATVfYnF1JfQa1er7U7HJW5PSDW8XBt5cyY/COXOF+YI?=
 =?us-ascii?Q?h6yFwkKGk0zfxpHpRxxXg2KPpUtDCbrrUbX4jMC5IsdF387MIWjR?=
X-OriginatorOrg: Nvidia.com
X-MS-Exchange-CrossTenant-Network-Message-Id: 1f3655ce-20ef-4e2c-2fe2-08dea4ac8fa5
X-MS-Exchange-CrossTenant-AuthSource: CY8PR12MB8300.namprd12.prod.outlook.com
X-MS-Exchange-CrossTenant-AuthAs: Internal
X-MS-Exchange-CrossTenant-OriginalArrivalTime: 27 Apr 2026 22:30:18.5780
 (UTC)
X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted
X-MS-Exchange-CrossTenant-Id: 43083d15-7273-40c1-b7db-39efd9ccc17a
X-MS-Exchange-CrossTenant-MailboxType: HOSTED
X-MS-Exchange-CrossTenant-UserPrincipalName: 8yVCjxcKtFstGt67IdVeO9hT/qCk0UDq0EBYtz0042ex6ttmtrXzmmIlGerSzGsUENgCE8ayV5UchO391MZbfA==
X-MS-Exchange-Transport-CrossTenantHeadersStamped: SA1PR12MB6871
X-purgate-ID: tlsNG-4011c0/1777329029-8127B8B7-C950B91C/0/0
X-purgate-type: clean
X-purgate-size: 1125

On Mon, Apr 27, 2026 at 02:52:05PM -0700, Linus Torvalds wrote:
> On Mon, 27 Apr 2026 at 12:19, Yury Norov <ynorov@nvidia.com> wrote:
> >
> > This is what Linus said when added x86 implementation for copy_from_user()
> > in c512c69187197:
> 
> Note that some things have happily changed in the six+ years since...
> 
> >   That's partly because we have no current users of it, but also partly
> >   because the copy_from_user() case is slightly different and cannot
> >   efficiently be implemented in terms of a unsafe_get_user() loop (because
> >   gcc can't do asm goto with outputs).
> 
> now everybody can do asm goto with outputs.
> 
> Yes, it's disabled on older versions, so it's not *always* available,
> but all modern versions do it. And if you care about performance, you
> won't be using an old compiler.

The minimal GCC version is 8.1, and asm goto with outputs is supported
since GCC-11. That would brake the build, if we just switch to using it
without "CC_IS_GCC && (GCC_VERSION >= 110100)" guard.

Is it worth to maintain 2 version of the function? I don't know...

Thanks,
Yury


From xen-devel-bounces@lists.xenproject.org Tue Apr 28 07:49:15 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 28 Apr 2026 07:49:15 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1295410.1572062 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wHdBZ-0000HY-7M; Tue, 28 Apr 2026 07:48:49 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1295410.1572062; Tue, 28 Apr 2026 07:48: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 1wHdBZ-0000HR-3L; Tue, 28 Apr 2026 07:48:49 +0000
Received: by outflank-mailman (input) for mailman id 1295410;
 Tue, 28 Apr 2026 07:48:48 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <roger.pau@citrix.com>) id 1wHdBY-0000HL-8c
 for xen-devel@lists.xenproject.org; Tue, 28 Apr 2026 07:48:48 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wHdBX-007BUw-3Y
 for xen-devel@lists.xenproject.org; Tue, 28 Apr 2026 09:48:47 +0200
Received: from [10.42.69.5] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <roger.pau@citrix.com>)
 id 69f06654-2eae-0a2a0a5409dd-0a2a45059f60-40
 for <xen-devel@lists.xenproject.org>; Tue, 28 Apr 2026 09:48:46 +0200
Received: from [52.101.56.7]
 (helo=BN1PR04CU002.outbound.protection.outlook.com)
 by tlsNG-c201ff.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.1)
 (envelope-from <roger.pau@citrix.com>)
 id 69f0665d-aaa8-0a2a45050019-3465380733bd-3
 for <xen-devel@lists.xenproject.org>; Tue, 28 Apr 2026 09:48:46 +0200
Received: from CH7PR03MB7860.namprd03.prod.outlook.com (2603:10b6:610:24e::14)
 by BN9PR03MB6204.namprd03.prod.outlook.com (2603:10b6:408:101::21)
 with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9846.26; Tue, 28 Apr
 2026 07:48:44 +0000
Received: from CH7PR03MB7860.namprd03.prod.outlook.com
 ([fe80::f5ba:35df:1c9f:b343]) by CH7PR03MB7860.namprd03.prod.outlook.com
 ([fe80::f5ba:35df:1c9f:b343%4]) with mapi id 15.20.9846.025; Tue, 28 Apr 2026
 07:48: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=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=E6e84rqZK2HeKCPLoCPjafeM1dPfXU2Wf3lZrRiN4dyOoXZpDA8gkax8//YOWNY4Jm8jR88UhiVOlE6JVVHsb5KvBtvAT8D7oP5GntIM64oMZGeX8eWNXG3NP/3WE4k2aKRmDZaZdIYjxjNeHy+OphEQJB3l+FqO9tnLhjNIsGATlK12UgrnYFZtKrBPYlDlM/Hm735f/RNuOTW8+29ejkEbGc5GeebLqVg0xtcTL9Ku79h7YZfY2h92ixyCJFeViYS5lYb63ewtAMES0CeYui+zAbOLu8Q1QgUTz297wm55ygtYYTtR9zfA9vqq5zBrHlmzEircpEExVsx8MTJEvA==
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com;
 s=arcselector10001;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1;
 bh=t5LjEDnCnKB+aJUEQ/u4vjV15DYk3BNPjC1GMqMTxMY=;
 b=YaAZuoizsBHsdFwlz31H0Ns6/Rvh2VmFwl6dsRVO+SWr+4gFmkgPmxqJFvM7VpuAf+imzTsVpuSGZIS4umIdKVJbmF9HlSSOeqlkZmcD9f0I7R3j6sAjG5YlRI15bIbL9mpusag8R2MpmHgls3zAFGkhQajzgPakzXBBMUHfo/Jr69GHyWBF9w1U9MdOvhuvcrJgFquoY6bB5J25EUxmbLyRdoZXSUR49V8JU/yqYdFi8tfwInwaiECGQuNZYtypy6CrWWDmJWymo9dkPntBvc7AHOxbTR49ZjnUgaBbE5uTLvFSli4zZBVXHj7clMsuDL5DyabvAgngdU87VZkJGQ==
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=t5LjEDnCnKB+aJUEQ/u4vjV15DYk3BNPjC1GMqMTxMY=;
 b=YTQrsln/vCVjdEsRvlj67EpfiIMtd4IWBKyJBwyue4HqmHbzyvYVe4tKDgCs2V1ffDzyNbfQvXVhL7TqY7ifBkA0YGGXQebyWmo4dqQsCg8OM/roKLf45FM+5aumPuQneWPda6O64K5ZrD0Lw83nDdZGknH/hYgJ0TR4ceZnNQY=
Authentication-Results: dkim=none (message not signed)
 header.d=none;dmarc=none action=none header.from=citrix.com;
Date: Tue, 28 Apr 2026 09:48:41 +0200
From: Roger Pau =?utf-8?B?TW9ubsOp?= <roger.pau@citrix.com>
To: Thierry Escande <thierry.escande@vates.tech>
Cc: xen-devel@lists.xenproject.org, Jan Beulich <jbeulich@suse.com>,
	Andrew Cooper <andrew.cooper3@citrix.com>,
	Anthony PERARD <anthony.perard@vates.tech>,
	Michal Orzel <michal.orzel@amd.com>, Julien Grall <julien@xen.org>,
	Stefano Stabellini <sstabellini@kernel.org>,
	Juergen Gross <jgross@suse.com>
Subject: Re: [PATCH 00/17] Q35 initial support for HVM guests
Message-ID: <afBmWSFsyrwy_Ru1@macbook.local>
References: <20260313163455.790692-1-thierry.escande@vates.tech>
Content-Type: text/plain; charset=utf-8
Content-Disposition: inline
In-Reply-To: <20260313163455.790692-1-thierry.escande@vates.tech>
X-ClientProxiedBy: BN9P220CA0016.NAMP220.PROD.OUTLOOK.COM
 (2603:10b6:408:13e::21) To CH7PR03MB7860.namprd03.prod.outlook.com
 (2603:10b6:610:24e::14)
MIME-Version: 1.0
X-MS-PublicTrafficType: Email
X-MS-TrafficTypeDiagnostic: CH7PR03MB7860:EE_|BN9PR03MB6204:EE_
X-MS-Office365-Filtering-Correlation-Id: 83eb3cea-0ab0-45c9-7126-08dea4fa9277
X-MS-Exchange-SenderADCheck: 1
X-MS-Exchange-AntiSpam-Relay: 0
X-Microsoft-Antispam:
	BCL:0;ARA:13230040|376014|366016|1800799024|56012099003|22082099003|18002099003;
X-Microsoft-Antispam-Message-Info:
	cGXIm6BxCGxwGrMPqEDvUJfZ47hNq2vzZC8kapXxfjiPiT2ALEeFYQNKZJdbYQIh0qnHeGaVccKxSFnQm87R0WdrGnSAddrxfv/M1kwX7+svayavc3Mz4DHdJcZiqYm8Q+DYMaIF5+U4oqO4FiXYNAYiRZ87RC0rw4WLsmVVDPdSRxLj6Vh990WUY5w9pLU4d5bcjUcZJHhm22dccUOVcurmo5U+09zM/MbvYejDmi4pkOM6HuZzycJhcQ9WQ5yTTfi5kPo2CNK8C7hpcVkdSoUrQNSabEGv5vh3NO06A3S0+Sqw1BntCPiqzaFXZzPoWlbdq236bVdWxdltIosfCvpHrsW8IIlEq4U7QSy9kQwChlzflCXC36UuDm16GcWrN5uANIM51Pob8zuBvQGsKAeqRk77UG1qA8VJTB/vX6rJx8E9QsH4cm8AQR18/JMErOjjQl8oHhmb3vNEItBpJ9FFEcyitqAPqXkgUtdO4KtTrF8fNENqSxxeChOKzn3+vxieYxbjLLEmDFSGzXWSC2EY5BrZrkAnm2o0VMDjVh/0arJnhbyu1hCOL9GAftFjb8Qpky+v41n7TmgweDYjkGaeqOfDmPYrJFOeLpKm7gdefZ9TeQa50OYyUfgbvORQY7pIc3T8CJXB5O3HobP4I6ilmAL5MjZWepubWrN6I0LG13FbWeVnd9Yp+E7caLAhFGTrZnqISrs1FEK2qt7IpKYaV/+p2KQfQfYWhnZBfBA=
X-Forefront-Antispam-Report:
	CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:CH7PR03MB7860.namprd03.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(376014)(366016)(1800799024)(56012099003)(22082099003)(18002099003);DIR:OUT;SFP:1101;
X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1
X-MS-Exchange-AntiSpam-MessageData-0:
	=?utf-8?B?SUU0VGRYMFlPL3AxRDUvS2xtMS93cUEzeTcwUnhBNHdmWjd6aU9oNXAzemRw?=
 =?utf-8?B?eEpON0p1ZXBqOFhja1MvWHpOcklHSVVqaE5pTU4yOStjYW4rc1dadGNKNXVh?=
 =?utf-8?B?SU5rSW55eStXdnMyUGlxaGVpazR5V0hOTk9kQ2xKQzRMYWdTNUZHWER4eGdt?=
 =?utf-8?B?eFJlYll4UWF1SzQ4c0FoUmEwU3lqRGNGMmh1dTdVV1NFcXAvZEI3ZllwUVE5?=
 =?utf-8?B?NkxPdm9PamNzWWh2dnR1eWZ2bUFCN3k5SVozejd2NjdqNERCTy9EWTVpK3Jr?=
 =?utf-8?B?NzBpdDYzWm9DU1R6L2J2UmhETFlPQk8xRUw1Y0xGZ01TZW5EV3hMSnJPOG9G?=
 =?utf-8?B?ZUxFNU1nRzR3d1dtT2wrdG9EOE5laytDdG16MzZQMkJEd3N3ZU1leVcwcGQ5?=
 =?utf-8?B?S01hOXludFhNUVNhY3JXQjArbjJkUGlnRVptaXdadE9mYitsN1IzdXBhaG9w?=
 =?utf-8?B?MmZ2eEcvRmU0T01mT3VVajdodlM0Q21STXFBVzhZVzA3N1JNakNCU2hCQ2M5?=
 =?utf-8?B?SnRMMzQxY2Q0VFRQeWwrRXpHVXFOMjZXV0NYOFhSSzloVWFFOWcvQnNmYWJF?=
 =?utf-8?B?alM1TUJoN2dDZndMeGtteDlHQnJ1K3Jpa0lYVlU5ekNjanNlU2p0Y25tdzZN?=
 =?utf-8?B?RW52eVVuTlZqSWd1T0FJNkRuUjJpNUVqcmxMRzVsYkZnNHpDdWJ2ZzUzOVVD?=
 =?utf-8?B?dlBnN01McVZEZm1VWHpLbTZWbkZBVjFkVGhNaTJmREdWc3E0YXpyWWlZNjdq?=
 =?utf-8?B?cU14NHZDOGxidHV6MTJ2ZkVBWFIvNDJyR2oyeUFYM2pjak11VUcvYWx5cHA4?=
 =?utf-8?B?QXNRa09XVm4yQjFBQk1GaWRlSXVLdlFCc0p6OXY3L2ZiYk0rQmcyRFlucUxY?=
 =?utf-8?B?Z3FacGlvbCtLMStaSHFIa005TDcyY0VqdG1tTWJYVlRnZUw1UCs3S0RQN3Fr?=
 =?utf-8?B?RGE4TVlkVVdLL01tdngzSSsxUnNyR24ybjc4VnpYVWg5SFpsZVVUdVU2RUM5?=
 =?utf-8?B?RWdZVk9QdlRjT0JoKzVVMlh5TzRGckVyRkJFOHNtMHhPZTBBRngvcjJSM1pQ?=
 =?utf-8?B?Y1ZWd0o4Qml0WXg1NzNIWWlIUHdXcjFGV1NyQk16ZmZhYk5pTC9pZVFxenZy?=
 =?utf-8?B?b3oydlJrQXVMMVNicWVGV25DbE0rcWZ2TVNrdTF4SlZyYklRcVRaaWdsbFAv?=
 =?utf-8?B?OTVHaFZMQS8rYVpYRjc2dmNMR1cvVE5jTnF4Y3Y4ZGpsaTk1ZEcveDRWK3ph?=
 =?utf-8?B?em5oTklZZEREN2NjK3dkbm5FTWNZUFYyTDVrN1g4Nlk1SWI1N1JTMkd3aTBz?=
 =?utf-8?B?MmluZ0M4NXZrZVBoSm9YLy9OMnFGaDQyQjc5UzZNSnp6L3lkYW4xMFZPVzJv?=
 =?utf-8?B?dzlZSFBXajNOK2REQ0FHUUkyZ1NXRnliSktYT1Q5Ty85cXlHTXkzR2djMkg4?=
 =?utf-8?B?OEF2UDFhYUhWc05haWFhNVhOYWJOODc2cnAyNnU0cmZuU0tIUkIvZ2g4YVRU?=
 =?utf-8?B?a3lzZWZCVzQvQlEwa0haNDhXczhkUEo0QVpaM2lRSkJHMmRVYU1TOE95SE5H?=
 =?utf-8?B?czF5c1FZaGsrRzlFNHJpbmR3UkRWd0xwRzVmTzhMc0U5NExWekM4RGJNMnR2?=
 =?utf-8?B?bFFWc1F2ZWtqQnZ2UVRRNXk2WXBCRzFuL0F4czF2dlQ5QVVUQTBuZDZBdnBZ?=
 =?utf-8?B?aUlmcmtGdDkyTDV6MXlaYmdjNGlPWTZONXdaR2hBMmhXRkpCVFZrUDFEY2pS?=
 =?utf-8?B?cEtKYjFiamxMSHM4YVF5bW9IMTdLZHExczJZUkV5R1VWb045aVJiSk9wdUgz?=
 =?utf-8?B?THg4MGJlMktEdUt5RCtRY3VPTnBOcGlyK0xCQXdHVXNIMmIxSjIvRnhKQ0s1?=
 =?utf-8?B?OTZ2bFVSU3BoaUVKWnBLR3E5ZVJvQmYwYUdRWlk0RjExZzZSd2lrQmdxV1dX?=
 =?utf-8?B?V3AyUWRvTzR5OWZueCtJN1NZc2Z5UXZHRENkZ1dEcElmT3RIU0tXc2lUUG5s?=
 =?utf-8?B?V1Bpb2JwRWxSb3pubTdpczUxK2I2WFg1ZDlZcnZ4Rk9HNkpWTWlzcEZvZFdE?=
 =?utf-8?B?ZVlvemh4Z3JTUzFWVHhkdEx2UWRrQm9mU2xIc3JNL3k4MU1PSmZRTFh1U0Vi?=
 =?utf-8?B?Si9FSDFKcGF1QnBEM2tTNmgzRUZNQVBVN1JJYjBNenpiMU4xMER2NGR2bm9t?=
 =?utf-8?B?Wkh2ZHV0VDBSZ212MmpQU2VGRE5iR3hiWTdGb3JwY1pNQTE0cEZOQnZndUdH?=
 =?utf-8?B?K2Noa2pJZEdmRVgvRlNRYWhUdVVPaGdDb3ZJVmNtd0wrd3R1L2cyQnBUcEEy?=
 =?utf-8?B?Wi8vc2Z3amxISDE0a3RDcjBYQ0xZZlZDTldERGNpRlE4SWFnTzdXUT09?=
X-OriginatorOrg: citrix.com
X-MS-Exchange-CrossTenant-Network-Message-Id: 83eb3cea-0ab0-45c9-7126-08dea4fa9277
X-MS-Exchange-CrossTenant-AuthSource: CH7PR03MB7860.namprd03.prod.outlook.com
X-MS-Exchange-CrossTenant-AuthAs: Internal
X-MS-Exchange-CrossTenant-OriginalArrivalTime: 28 Apr 2026 07:48:44.1878
 (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: vrmdLBiHJa9C9UxeqDy4LO3OWAnar2G+sL8ye+YXFefA/rP3FlPoGcxJBougOoXjfscAniEBI4pTjs+lfnZtSQ==
X-MS-Exchange-Transport-CrossTenantHeadersStamped: BN9PR03MB6204
X-purgate-ID: tlsNG-c201ff/1777362526-E0FA2443-F201F1E8/0/0
X-purgate-type: clean
X-purgate-size: 2096

On Fri, Mar 13, 2026 at 04:35:01PM +0000, Thierry Escande wrote:
> This series introduces initial Q35 chipset support for HVM guests, based on the
> patchset at [1] by Alexey Gerasimenko.
> 
> Basic support means that this patchset allows to start an HVM guest that
> emulates a Q35 chipset via Qemu and implements access to PCIe extended
> configuration space for such devices emulated by Qemu.
> 
> Support for PCIe device passthrough is not implemented yet. This is planned but
> implies modifications in the hypervisor and the firmwares, mainly for the
> support of multiple PCI buses.

Why do you need multi bus support to expose PCIe capabilities?  I'm
not seeing the relation between those two.  You could still expose a
single bus on the MCFG table.

> In order to create a Q35 guest, a new domain config option has been added,
> named 'device_model_machine'. Possible values are:
> - "i440" - i440 emulation (default)
> - "q35"  - emulate a Q35 machine
> 
> If the option is omitted it defaults to "i440", not impacting existing domain
> configuration files.
> 
> DSDT files for Q35 and i440 are largely similar so the existing file dsdt.asl
> has been split with i440 and q35 specific parts put in seperated files.
> 
> The PCIe MMCONFIG area is configured by hvmloader and its base address and size
> are set in Xen using a new pair of hypercalls HVMOP_get|set_ecam_space.

I guess I will see how that looks like in the series, but the setting
of the ECAM region would better be done by the toolstack.  Setting it
in hvmloader is possibly not the best placement, because it doesn't
run for PVH guests (and we will want ECAM support for PVH at some
point), and there's also a vague plan/intention to get rid of
hvmloader even for HVM guests eventually.

> Access
> to the MMCONFIG area from a guest is trapped by Xen and transfered to the
> emulator as XEN_DMOP_IO_RANGE_PCI ioreq type.

Thanks for doing this bit, IIRC from when this was last posted this
was the biggest shortcoming of the series when originally submitted.

Thanks, Roger.


From xen-devel-bounces@lists.xenproject.org Tue Apr 28 08:02:54 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 28 Apr 2026 08:02:54 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1295431.1572071 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wHdOx-0003p9-RL; Tue, 28 Apr 2026 08:02:39 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1295431.1572071; Tue, 28 Apr 2026 08:02: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 1wHdOx-0003p2-OO; Tue, 28 Apr 2026 08:02:39 +0000
Received: by outflank-mailman (input) for mailman id 1295431;
 Tue, 28 Apr 2026 08:02: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 1wHdOv-0003ow-G0
 for xen-devel@lists.xenproject.org; Tue, 28 Apr 2026 08:02:37 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wHdOu-007slm-AJ
 for xen-devel@lists.xenproject.org; Tue, 28 Apr 2026 10:02:36 +0200
Received: from [10.42.69.6] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <Michal.Orzel@amd.com>)
 id 69f06995-5cb7-0a2a0a5109dd-0a2a45068e8c-28
 for <xen-devel@lists.xenproject.org>; Tue, 28 Apr 2026 10:02:35 +0200
Received: from [52.101.62.2]
 (helo=DM5PR21CU001.outbound.protection.outlook.com)
 by tlsNG-16d1c6.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.1)
 (envelope-from <Michal.Orzel@amd.com>)
 id 69f06999-7371-0a2a45060019-34653e026b7b-3
 for <xen-devel@lists.xenproject.org>; Tue, 28 Apr 2026 10:02:35 +0200
Received: from SJ0PR03CA0194.namprd03.prod.outlook.com (2603:10b6:a03:2ef::19)
 by IA1PR12MB6649.namprd12.prod.outlook.com (2603:10b6:208:3a2::6)
 with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9870.17; Tue, 28 Apr
 2026 08:02:28 +0000
Received: from SJ5PEPF000001CB.namprd05.prod.outlook.com
 (2603:10b6:a03:2ef:cafe::1a) by SJ0PR03CA0194.outlook.office365.com
 (2603:10b6:a03:2ef::19) with Microsoft SMTP Server (version=TLS1_3,
 cipher=TLS_AES_256_GCM_SHA384) id 15.20.9846.26 via Frontend Transport; Tue,
 28 Apr 2026 08:02:27 +0000
Received: from satlexmb08.amd.com (165.204.84.17) by
 SJ5PEPF000001CB.mail.protection.outlook.com (10.167.242.40) with Microsoft
 SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id
 15.20.9846.18 via Frontend Transport; Tue, 28 Apr 2026 08:02:27 +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.17; Tue, 28 Apr
 2026 03:02:27 -0500
Received: from APPOL-18KY0J4.xilinx.com (10.180.168.240) by satlexmb07.amd.com
 (10.181.42.216) with Microsoft SMTP Server id 15.2.2562.17 via
 Frontend Transport; Tue, 28 Apr 2026 03:02:26 -0500
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@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=hdEFm03JmKaY5iMBixm4r1XSczqkfn7ULIKuMQTK4kJ7F8qtqguFeF/kJdtIVwzeaXz7OLXmluS+i51lPVBuiMCaguie88shpsEuKjE3R5kdJz7FI8yKJC77/in3lkSullkbRxfxA877Nc257qU2JB/g7FcRe4eOPilaXk2xnE+dMLs2jQoOxW20s/3VJIT46hW1PUMgfH+B7ViEyiyBxOYWfqtH+o7GIo2nGhxZ4d47lUpl5jZqcyOyOyWesG02GxWlvsIFj6RZNZOvPD/+Onz3/+FKxZmJX1eLgC79TkTT1zVgMireWJ/1n6AynNUFoOMaIPXAa/qXLRsQ+ZLk8g==
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com;
 s=arcselector10001;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1;
 bh=bTbjdITFswwHetwzK/2Z6VFPRtN6WJIT0zKNPrMezKM=;
 b=hJWPJP+91s6qgKkh5Z62IQP4QKZ61VH4otiM6C3mWsZlFykFV09lOCQ6cgxCSJoOCGnR+Ozg54na+G7WAmJFTNg7/oStsSPiKB08K3Qlzl21bCl7TsLs5cCvx1x3KWPs5rf/mXQ5Nh1wv7IyBcq+XHmpNAME+QqQUvhklepTMLWuzFA2nwHXAu5LhW/LZCZbDrayOJ+fgZvFSsjtAfDBsp1JyDtTT0zM1a1WN2M2HJaXLQKU76or2KVBwDtUziWdqA0pGYtwVAC4nTBzbT7iNyPlXcTUPp6PNkGCF5xX98l+f8tau/CFm5rdBIxViHVQFix+wVslZs3tkze/q/s12w==
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=bTbjdITFswwHetwzK/2Z6VFPRtN6WJIT0zKNPrMezKM=;
 b=H3WnM2QQwYMfnqSU+YGN5fJ2zneHH73PWUUtVpWRfIDUVG7Nm7fdvN/Ek+A177tS5QZC9aG0z3Znv5uGr8An3x6vC12bpEEiue35l3lta9pRJsvas7hSyD1bF4jf7CEi+wUoJvct5hxjC+XF8VvfGVVSMVAF6eQNEKHqzx3f68U=
X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 165.204.84.17)
 smtp.mailfrom=amd.com; dkim=none (message not signed)
 header.d=none;dmarc=pass action=none header.from=amd.com;
Received-SPF: Pass (protection.outlook.com: domain of amd.com designates
 165.204.84.17 as permitted sender) receiver=protection.outlook.com;
 client-ip=165.204.84.17; helo=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>, Nicola Vetrini
	<nicola.vetrini@bugseng.com>, Doug Goldstein <cardoe@cardoe.com>, "Stefano
 Stabellini" <sstabellini@kernel.org>, Julien Grall <julien@xen.org>,
	"Bertrand Marquis" <bertrand.marquis@arm.com>, Luca Fancellu
	<luca.fancellu@arm.com>
Subject: [PATCH v2] xen/dt-overlay: support phandle-based targeting in overlay_get_nodes_info
Date: Tue, 28 Apr 2026 10:02:18 +0200
Message-ID: <20260428080218.19371-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: SJ5PEPF000001CB:EE_|IA1PR12MB6649:EE_
X-MS-Office365-Filtering-Correlation-Id: 4c31b70e-15a4-47c1-b5af-08dea4fc7d96
X-MS-Exchange-SenderADCheck: 1
X-MS-Exchange-AntiSpam-Relay: 0
X-Microsoft-Antispam:
	BCL:0;ARA:13230040|82310400026|1800799024|36860700016|376014|56012099003|18002099003|13003099007;
X-Microsoft-Antispam-Message-Info:
	g9NMIZZEWmc32O0VujoxJOqMVJDClbwQcyiOxTKnoOqtRQgNJGOU77VEQk7NTmIDiGFxTiV5CVVJ5bNWQ1JlRx7hGvNGT83zMNTs47M7MU/TPh3d+e/XVK6ZfTW69rDHCw3e0DLLnoJ3gFe3uA1aFxK/6hs7jT6YfvatFnQH/2lndQnlJsjijzKnX3gRALEh2IMgkTkLs5cY3S8xQQd9SHhKYyHir1WbqBZLLFRoJPLjnJU3VWBqPYm+7lVPH6W4uWnkQ7GazVy4oNfOtfey3+ZTyuSJZhvJ3DDBMHEW66Nylwoe9YEOwnhPPl3UkyDJtJzEtQfpJdrdUGOqomNKJ+8s9Ye1DD9f0FAgr3g2+wGDGVUZ360npco0Wqj+LDfR2Bis2uNuEzEZY0UByJE9u1YKtu89/h86sC69Tg+bbBtqb7YjAiCprO6ovYPp/UI46f17mwnVOH+aAJvCqulAgBOqqQ0LgOWrAWEfGhaI4zlkHgq1gatoPZG3oWqVPWHOswqzezsR4A6K/bY+d3LrxGA/NXk6zWdZVF6g/SAAbcbc9oEoU6lmeLdH/IPUqvNBbT8DuGJgMkJ4oejBHgOxAf4pMoo3E4XyyAdlO9e/1kcLA/qNJnnL9Ig2BsXwTWKWqB49Jke2F5smK5UkBoREdxdAjBk0xFxzxn+740WyoxpgaA0lgzH1eZPaJMkSD80eqxP+ytpf+g9XN9ahNIQIDRPBEARLbDgpmzcP30H/0Pv3cYBxEmcgTrPW0TdNIqS8nW1DjqtzOCS5sN9XkSjt1A==
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)(1800799024)(36860700016)(376014)(56012099003)(18002099003)(13003099007);DIR:OUT;SFP:1101;
X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1
X-MS-Exchange-AntiSpam-MessageData-0:
	WTWjDuDybX2WT+LrV4ZQHahcgWOR3rt9LMuUyQQmQnffC2b8dHvqKCYGdg8/HPlhsz91nJrEuTQm/XbIFsFfr/VAA9+AiTRdjgbX7s/uQV26kiUmvbU5GRxA5CP6KACAuN41ATffV0w/QA6Sld46l05RCbW/ySss7tg57Ro+3Et1GOBMfrCboOMNnhSoKTKgUiAFs46Yw7AtAv690DNaeODqAatE2Eu8k5HdY3WZEe+IT1qdpIafrV1CxWMuTiuTxCHqKtRC9iJSBrY6PEFGSypHgjS6d3GgtRpQEaIqRUx6+NQ8IR4woi3spYQKZwVssDDRJhyFsDt2BPNbmSvN2fk9bPqNEO0jNBMcHhrUktNxB4E3Cb6HOYpkFgRlKh8haC5HlpWi+3mceqH5R9gOGMuEEHuB6/3SbarkjQH5iw3+67r6vVNhXDuPkwqWoKYJ
X-OriginatorOrg: amd.com
X-MS-Exchange-CrossTenant-OriginalArrivalTime: 28 Apr 2026 08:02:27.7774
 (UTC)
X-MS-Exchange-CrossTenant-Network-Message-Id: 4c31b70e-15a4-47c1-b5af-08dea4fc7d96
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:
	SJ5PEPF000001CB.namprd05.prod.outlook.com
X-MS-Exchange-CrossTenant-AuthAs: Anonymous
X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem
X-MS-Exchange-Transport-CrossTenantHeadersStamped: IA1PR12MB6649
X-purgate-ID: tlsNG-16d1c6/1777363355-52576D75-10E66E4A/0/0
X-purgate-type: clean
X-purgate-size: 6160

overlay_get_nodes_info() is called before fdt_overlay_apply() to extract
target paths from the overlay. This fails for overlays using phandle-based
targeting (target = <&label>) because DTC compiles these as unresolved
fixups (target = <0xffffffff>), causing fdt_overlay_target_offset() to
return -FDT_ERR_BADPHANDLE. Prior to this change users were forced to
manually modify the dtbo (even for hwdom) to switch from target to
target-phandle by manually inspecting also the host DTB.

Introduce overlay_get_target_path() which directly handles the two
targeting cases that occur before fixup resolution:
 - target-path: the string property is returned directly.
 - target = <&label>: the label is found in the overlay's __fixups__
   node, then resolved to a path via the base DTB's __symbols__ node.

Libfdt fdt_for_each_property_offset() violates MISRA R20.7. Despite
libfdt being excluded from the analysis, this causes ECLAIR scan to
report a regression because the violation introduced by a macro is
reported at the call site. Deviate R20.7 for libfdt.h.

Reviewed-by: Luca Fancellu <luca.fancellu@arm.com>
Acked-by: Stefano Stabellini <sstabellini@kernel.org>
Signed-off-by: Michal Orzel <michal.orzel@amd.com>
---
In my pre-push testing I realized ECLAIR allcode reported a violation related to
the use of fdt_for_each_property_offset. Libfdt is excluded from analysis but
this does not apply to e.g. macros used in other places.

Changes in v2:
 - strip out from series that is ready to be committed
 - deviate 20.7 for libfdt.h. Discussed with Nicole.

https://gitlab.com/xen-project/people/morzel/xen/-/pipelines/2484326830
---
 .../eclair_analysis/ECLAIR/deviations.ecl     |  1 +
 xen/common/device-tree/dt-overlay.c           | 65 +++++++++++++++++--
 2 files changed, 60 insertions(+), 6 deletions(-)

diff --git a/automation/eclair_analysis/ECLAIR/deviations.ecl b/automation/eclair_analysis/ECLAIR/deviations.ecl
index 30c323906924..5f0b73062474 100644
--- a/automation/eclair_analysis/ECLAIR/deviations.ecl
+++ b/automation/eclair_analysis/ECLAIR/deviations.ecl
@@ -631,6 +631,7 @@ not in scope for compliance are allowed, as that is imported code."
 -file_tag+={acpi_cpu_idle, "^xen/arch/x86/acpi/cpu_idle\\.c$"}
 -config=MC3A2.R20.7,reports+={safe, "any_area(any_loc(file(gnu_efi_include)||any_exp(macro(^NextMemoryDescriptor$))))"}
 -config=MC3A2.R20.7,reports+={safe, "any_area(any_loc(file(acpi_cpu_idle)))"}
+-config=MC3A2.R20.7,reports+={safe, "any_area(any_loc(any_exp(file(^xen/include/xen/libfdt/libfdt.h$))))"}
 -doc_end
 
 -doc_begin="To avoid compromising readability, the macros alternative_(v)?call[0-9] are allowed
diff --git a/xen/common/device-tree/dt-overlay.c b/xen/common/device-tree/dt-overlay.c
index f203e189f5ff..fd171333c6d7 100644
--- a/xen/common/device-tree/dt-overlay.c
+++ b/xen/common/device-tree/dt-overlay.c
@@ -286,6 +286,63 @@ static unsigned int overlay_node_count(const void *overlay_fdt)
     return num_overlay_nodes;
 }
 
+/*
+ * Resolve the target path for an overlay fragment.
+ *
+ * This is called before fdt_overlay_apply(), so phandle-based targets
+ * (target = <&label>) are still unresolved (compiled as 0xffffffff by DTC).
+ * Handle the two cases that actually occur:
+ *  - target-path property: the path string is used directly,
+ *  - target = <&label>: the label is looked up in the overlay's __fixups__
+ *    node, then resolved to a path via the base DTB's __symbols__ node.
+ *
+ * Returns a pointer into the FDT on success, NULL on failure.
+ */
+static const char *overlay_get_target_path(const void *fdt, const void *fdto,
+                                           int fragment)
+{
+    const char *path, *fragment_name;
+    int fixups_off, symbols_off, property;
+    int fragment_name_len;
+
+    /* Try target-path first (string-based targeting) */
+    path = fdt_getprop(fdto, fragment, "target-path", NULL);
+    if ( path )
+        return path;
+
+    /* Phandle-based target: resolve via __fixups__ and __symbols__ */
+    fixups_off = fdt_path_offset(fdto, "/__fixups__");
+    if ( fixups_off < 0 )
+        return NULL;
+
+    symbols_off = fdt_path_offset(fdt, "/__symbols__");
+    if ( symbols_off < 0 )
+        return NULL;
+
+    fragment_name = fdt_get_name(fdto, fragment, &fragment_name_len);
+    if ( !fragment_name )
+        return NULL;
+
+    fdt_for_each_property_offset(property, fdto, fixups_off)
+    {
+        const char *val, *label, *p;
+        int val_len;
+
+        val = fdt_getprop_by_offset(fdto, property, &label, &val_len);
+        if ( !val || !val_len || (val[val_len - 1] != '\0') )
+            continue;
+
+        /* Match entries of the form "/<fragment_name>:target:0" */
+        for ( p = val; p < (val + val_len); p += (strlen(p) + 1) )
+            if ( p[0] == '/' &&
+                 !strncmp(p + 1, fragment_name, fragment_name_len) &&
+                 !strcmp(p + 1 + fragment_name_len, ":target:0") )
+                return fdt_getprop(fdt, symbols_off, label, NULL);
+    }
+
+    return NULL;
+}
+
 /*
  * overlay_get_nodes_info gets full name with path for all the nodes which
  * are in one level of __overlay__ tag. This is useful when checking node for
@@ -298,7 +355,6 @@ static int overlay_get_nodes_info(const void *fdto, char **nodes_full_path)
 
     fdt_for_each_subnode(fragment, fdto, 0)
     {
-        int target;
         int overlay;
         int subnode;
         const char *target_path;
@@ -307,11 +363,8 @@ static int overlay_get_nodes_info(const void *fdto, char **nodes_full_path)
         if ( overlay < 0 )
             continue;
 
-        target = fdt_overlay_target_offset(device_tree_flattened, fdto,
-                                           fragment, &target_path);
-        if ( target < 0 )
-            return target;
-
+        target_path = overlay_get_target_path(device_tree_flattened, fdto,
+                                              fragment);
         if ( target_path == NULL )
             return -EINVAL;
 
-- 
2.43.0



From xen-devel-bounces@lists.xenproject.org Tue Apr 28 08:06:51 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 28 Apr 2026 08:06:51 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1295440.1572080 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wHdT0-0004ON-Bp; Tue, 28 Apr 2026 08:06:50 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1295440.1572080; Tue, 28 Apr 2026 08:06: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 1wHdT0-0004OG-8r; Tue, 28 Apr 2026 08:06:50 +0000
Received: by outflank-mailman (input) for mailman id 1295440;
 Tue, 28 Apr 2026 08:06:49 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <Luca.Fancellu@arm.com>) id 1wHdSz-0004OA-6V
 for xen-devel@lists.xenproject.org; Tue, 28 Apr 2026 08:06:49 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wHdSy-00F5H0-CH
 for xen-devel@lists.xenproject.org; Tue, 28 Apr 2026 10:06:48 +0200
Received: from [10.42.69.1] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <Luca.Fancellu@arm.com>)
 id 69f06a96-2eae-0a2a0a5409dd-0a2a45019742-6
 for <xen-devel@lists.xenproject.org>; Tue, 28 Apr 2026 10:06:47 +0200
Received: from [52.101.72.40]
 (helo=AM0PR02CU008.outbound.protection.outlook.com)
 by tlsNG-d62444.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.1)
 (envelope-from <Luca.Fancellu@arm.com>)
 id 69f06a97-c1f2-0a2a45010019-346548286f10-4
 for <xen-devel@lists.xenproject.org>; Tue, 28 Apr 2026 10:06:47 +0200
Received: from CWLP123CA0035.GBRP123.PROD.OUTLOOK.COM (2603:10a6:401:58::23)
 by PAXPR08MB7645.eurprd08.prod.outlook.com (2603:10a6:102:240::22) with
 Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9846.26; Tue, 28 Apr
 2026 08:06:40 +0000
Received: from AMS0EPF000001AB.eurprd05.prod.outlook.com
 (2603:10a6:401:58:cafe::38) by CWLP123CA0035.outlook.office365.com
 (2603:10a6:401:58::23) with Microsoft SMTP Server (version=TLS1_3,
 cipher=TLS_AES_256_GCM_SHA384) id 15.20.9846.26 via Frontend Transport; Tue,
 28 Apr 2026 08:06:40 +0000
Received: from outbound-uk1.az.dlp.m.darktrace.com (4.158.2.129) by
 AMS0EPF000001AB.mail.protection.outlook.com (10.167.16.151) with Microsoft
 SMTP Server (version=TLS1_3, cipher=TLS_AES_256_GCM_SHA384) id 15.20.9846.18
 via Frontend Transport; Tue, 28 Apr 2026 08:06:40 +0000
Received: from DU2PR08MB7272.eurprd08.prod.outlook.com (2603:10a6:10:2d7::16)
 by PA4PR08MB7409.eurprd08.prod.outlook.com (2603:10a6:102:2a1::8)
 with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9846.26; Tue, 28 Apr
 2026 08:05:36 +0000
Received: from DU2PR08MB7272.eurprd08.prod.outlook.com
 ([fe80::5d34:206f:373:a323]) by DU2PR08MB7272.eurprd08.prod.outlook.com
 ([fe80::5d34:206f:373:a323%6]) with mapi id 15.20.9846.025; Tue, 28 Apr 2026
 08:05: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=arm.com header.i="@arm.com" header.h="From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck"; dkim=pass header.s=selector1 header.d=arm.com header.i="@arm.com" header.h="From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck"
ARC-Seal: i=2; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=pass;
 b=O4F/W7oV58Qw9R/iNX/3QAX2vCDZVuGT8wvC7JT+WBsTvIrqNUD+TXvVRQOJKlcJg38Lmf+ABpl8xzawNUHR1ARRFL4GzK1doK5ZdLJQcUPziQurc8dO9LT8ykDnXUHqNk60V0mNUFu2nrtaoC7+7vGQ5fYvzsK8oMu+2w9kqhn7AtmzS20iBqpbvGpIIFez8UihZ1QTw4dG3xoC9u6/pExus17XD9FYcXpr6+iJHw4XcWoFtzypl/8BQAarThaVSTaKV/+KnG+nmDAo7l3JYYN/Lpg3/qTXUrhkBM1kpkiBdZQvsXFACLbiePRLTU8TU0pB5qplcYPpw6d8cC6apQ==
ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com;
 s=arcselector10001;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1;
 bh=8TvU1uWUvq40iIuRGu+7+Arbt4KrRaG+uvclWK2hGHQ=;
 b=LhFk+cl4rGuyWiR7kTzoO+KxyIhDZx8ZdGi/n4TSSdwR5b5R2Vom9xO9gJyOqFjqqxr2X/UiUQ1JROLo7E7KlwHhHSjoL31iXRbmqNNj2H0wIa1+ieaobckAezypYG/363oSUje8q4B4p96daAz8/oQT7hNGzRTA4Ifgx37ynutwE6TK+ayf/a9cFEnhhaQasQDGVZcyHir5umJGCe+sDycteS3K4XOychkzLfAWE3DAnhSQq0d/0F3ig5pTmySwXgcp+WIx3eXkxIRWzIOL2n77LKKpAANStLhUhzTs610Gb991A82JtkxyhIXI+vCV6m3odnaxyinyEGimC0FgAA==
ARC-Authentication-Results: i=2; mx.microsoft.com 1; spf=pass (sender ip is
 4.158.2.129) smtp.rcpttodomain=amd.com smtp.mailfrom=arm.com; dmarc=pass
 (p=none sp=none pct=100) action=none header.from=arm.com; dkim=pass
 (signature was verified) header.d=arm.com; arc=pass (0 oda=1 ltdi=1
 spf=[1,1,smtp.mailfrom=arm.com] dkim=[1,1,header.d=arm.com]
 dmarc=[1,1,header.from=arm.com])
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=arm.com; s=selector1;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck;
 bh=8TvU1uWUvq40iIuRGu+7+Arbt4KrRaG+uvclWK2hGHQ=;
 b=fJeA6Ky49ZZ1PzaJFexCJKZ3iSbymcJN+pMPTUSjTgcpPrLPTmd4iSSrR37Sz5tWhwrCyqlgPeinQWBPt/dS9l1nS5yCpTwJRpdIl2f0KGQ+rBjNvtLSUibUSUf/ldUnF9g6FnqdOwzm32yrKaNTG1ClKu+4H6JUqf4Ei/BbfcA=
X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 4.158.2.129)
 smtp.mailfrom=arm.com; dkim=pass (signature was verified)
 header.d=arm.com;dmarc=pass action=none header.from=arm.com;
Received-SPF: Pass (protection.outlook.com: domain of arm.com designates
 4.158.2.129 as permitted sender) receiver=protection.outlook.com;
 client-ip=4.158.2.129; helo=outbound-uk1.az.dlp.m.darktrace.com; pr=C
ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none;
 b=o4P6McHCG+eYw6qPAJTbq3rK2ez7zRoUrCtbK3m8Y71Py8xUhjc0qX6/tSdwhiVDZqsbizD9/HY4Dqnx88ZpCWinuGPKa/2a6uVpP3nIZZNrj+eCUHdtQuuN95CnorzfcMjLnkY5TTfvv9LkZFfpMvrV7uI2HjFmoH2H2cgNNaexy5lNh9Qs9AOfa9/TE/n6qJyw5xaaNhgsaMUmkheiTGUQmBVO6ee43LEB4YfC3V2UVn6sSRRxOdP4EMBTIjOu+eA3wneAp+tNI08Ow+6zgpiT0Zph1CqyY4RCk42T41K0/y+WiX7mpfz8mW9GTvtFqf6d8dQK+kXhMu3sOseHog==
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com;
 s=arcselector10001;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1;
 bh=8TvU1uWUvq40iIuRGu+7+Arbt4KrRaG+uvclWK2hGHQ=;
 b=fkrzvYZuv+yMJjUVzQIS7vcNjTBPIYLJYmbYubIgITSYMTgXncTDiOp/4MNjXUyBBj9SiXgnGoc7k6yJnT+rQfCtDJ72zUaZGa6cLTqWEekPs4xSDBp91qARId/XTrOQ6FTnrG9a7eA9YDHzYaS0k0prlU/qfbDqRlh1V0B9Xg6BOum7aS4xbC9E0VFuKCXmiu7I+hlTx0HBqVwVOqPp+WzfDcfeUY8ioQM0/iEp1lGginnUuSGJgfyOmWHiHyzOEmuosnTCwjmmxjALuehw2T3l/UwPSPI+mnM+27NqTeepGgYoCiNYZIQe5JUQx1Ko6IHQnr6G7p8+en+rChbF2w==
ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass
 smtp.mailfrom=arm.com; dmarc=pass action=none header.from=arm.com; dkim=pass
 header.d=arm.com; arc=none
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=arm.com; s=selector1;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck;
 bh=8TvU1uWUvq40iIuRGu+7+Arbt4KrRaG+uvclWK2hGHQ=;
 b=fJeA6Ky49ZZ1PzaJFexCJKZ3iSbymcJN+pMPTUSjTgcpPrLPTmd4iSSrR37Sz5tWhwrCyqlgPeinQWBPt/dS9l1nS5yCpTwJRpdIl2f0KGQ+rBjNvtLSUibUSUf/ldUnF9g6FnqdOwzm32yrKaNTG1ClKu+4H6JUqf4Ei/BbfcA=
From: Luca Fancellu <Luca.Fancellu@arm.com>
To: Michal Orzel <michal.orzel@amd.com>
CC: "xen-devel@lists.xenproject.org" <xen-devel@lists.xenproject.org>, Nicola
 Vetrini <nicola.vetrini@bugseng.com>, Doug Goldstein <cardoe@cardoe.com>,
	Stefano Stabellini <sstabellini@kernel.org>, Julien Grall <julien@xen.org>,
	Bertrand Marquis <Bertrand.Marquis@arm.com>
Subject: Re: [PATCH v2] xen/dt-overlay: support phandle-based targeting in
 overlay_get_nodes_info
Thread-Topic: [PATCH v2] xen/dt-overlay: support phandle-based targeting in
 overlay_get_nodes_info
Thread-Index: AQHc1uViFjC75IOoe0On2+u4z8CzhrX0HacA
Date: Tue, 28 Apr 2026 08:05:34 +0000
Message-ID: <E8BED2DC-49DB-4A10-B179-25A5880A5593@arm.com>
References: <20260428080218.19371-1-michal.orzel@amd.com>
In-Reply-To: <20260428080218.19371-1-michal.orzel@amd.com>
Accept-Language: en-GB, en-US
Content-Language: en-US
X-MS-Has-Attach:
X-MS-TNEF-Correlator:
x-mailer: Apple Mail (2.3826.700.81.1.6)
Authentication-Results-Original: dkim=none (message not signed)
 header.d=none;dmarc=none action=none header.from=arm.com;
x-ms-traffictypediagnostic:
	DU2PR08MB7272:EE_|PA4PR08MB7409:EE_|AMS0EPF000001AB:EE_|PAXPR08MB7645:EE_
X-MS-Office365-Filtering-Correlation-Id: cacb8c9c-d6b6-4947-5e40-08dea4fd1406
x-checkrecipientrouted: true
nodisclaimer: true
X-MS-Exchange-SenderADCheck: 1
X-MS-Exchange-AntiSpam-Relay: 0
X-Microsoft-Antispam-Untrusted:
 BCL:0;ARA:13230040|376014|366016|1800799024|38070700021|22082099003|18002099003|56012099003;
X-Microsoft-Antispam-Message-Info-Original:
 lW26pNmG6BYMw2HHLwE2Cub90jPa1x4cjHMgX7fvdMf+na0A05YOtTI79EHDPnUGBJyq8265G2D/WYGYdRGCtksRctCkUm8cLDswHx/BQ77zx8iY3/+hkw7zNuWqMyYIzqRu8X3WzDDELnO0xp+hgBD7uEfTd7/ETVIrK5z8hjKCbrh9J2k9B5xBfhC2Xw9YJBSvPjD1XB63XhuSWOLnbFp2k1XrCsCSxY2ELOiY2G6oqR3otxfxcuUZFZqMEPi+Sx52BkI8b637/Lr/matuaGjRNKidxZXe9wU1HJuIaZDisZThQr99yP4Ln8U96VyzGN6eIK4POV2n/ngRC2M6D7vFrsoytb6PMUV0BgwxhAACaiFMQdQL3XEPY7VWn+RDbXBaXNfDcq9rCJgmH5A2ucs4EplvWtYXL3ca3XpqoMp7DrIn9N/YvLNgFF4aIAu7rRf6pCM9+kR7f8Zmx+t4XlQgl4XPU7IvggZLjbb4vUI2UTmOPBLBox8yvOTW6lt9lbaFTc4eCPauqvC+MxHa1VLmkGouk6CG6Ovn5//Usm78D2IPTcOV3/XE8BYhFFBAS4QrA6TdmQyUHOxgz3PEoABUAi0R60pF6FEkHtUu1EnwzZiHj21U3Z5VPy0peYde+tyVqJmf2DQMmawuUzVwp/49Vn25FZ9zt9JlmYRYgr90Ct+S0sBF5Mf1SdY0PPW5jiMacr/hqt9sXqF4eAVizqFJgNdqxB1/GqtwjPrFaIpjPT7vaee2T7nMvhszlCsdz5dnN0xcHza3i7UYbwtUBpviADYMWP1yti/KsUcWYPE=
X-Forefront-Antispam-Report-Untrusted:
 CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:DU2PR08MB7272.eurprd08.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(376014)(366016)(1800799024)(38070700021)(22082099003)(18002099003)(56012099003);DIR:OUT;SFP:1101;
Content-Type: text/plain; charset="utf-8"
Content-ID: <96C413748FCA7341881C45B29E13F66B@eurprd08.prod.outlook.com>
Content-Transfer-Encoding: base64
MIME-Version: 1.0
X-Exchange-RoutingPolicyChecked:
 dalV56x3Z6TZV9lXiF8mPQjaavf2PkNbCt+MBbvfWsy6YWWZjkkMk9xg5wRn0Cvx94/MukAPp5OpuwSV7yGGcbHwNLXzkbTcbn91kHlfPgVPHGLHbOgUoEXrqJK80l6MKuoLMyltr+K3CQtp70VGxBdC9cZzv4YcOVt2LKtvKiEdsKKM7avZ/pOA/EIo289eEdw3umdqYzwuVupu1swU4VubN57Coz/D5ZDG1UFC5BQCxQY2nMpOxBRnSkO7svQrJqIlwE/oEbbbsr6uJfW2PIRQT2KmxEv0U9o/OS5bE25u7H1wLeKLG7XsM7hKbdUK1aoYchdH0s8Hh3QEJDnucg==
X-MS-Exchange-Transport-CrossTenantHeadersStamped: PA4PR08MB7409
X-EOPAttributedMessage: 0
X-MS-Exchange-Transport-CrossTenantHeadersStripped:
 AMS0EPF000001AB.eurprd05.prod.outlook.com
X-MS-PublicTrafficType: Email
X-MS-Office365-Filtering-Correlation-Id-Prvs:
	441f0a86-25d0-4f6e-3024-08dea4fcecff
X-Microsoft-Antispam:
	BCL:0;ARA:13230040|36860700016|14060799003|1800799024|82310400026|35042699022|376014|56012099003|18002099003|22082099003;
X-Microsoft-Antispam-Message-Info:
	LLUeOwYGiYS7Y9Vqaj4sbtnG9e0Z6jtATgXp8yrbQeA/RHT2jg8ZBxb/qR+vGxgFc87UVMgGjKdrJelDmPiAfgnOUcGIHaxFgpTcGxZeCCdH6JFah7wRjTkegWyIQTt/z7Bd758q2J85rBiwoxYDwUKTsbUrUa5hwuVzpbj2twbEbUzEfbFItt6XFJsZN68r47CNJN6VFK5Wy648ne1JnqXVIZJuutmM4c1KgfRu/vVagD9d5VVConClXEcrcLAiJiY15WAUWt0Y+2wv0DNsE7GjmNv2mpCQLFqbfxBJpUMNllxHBpXffmxGqpG0p8ENh9ANfnir2GY5MJOz0fhE30lZlMOmXTPr5dKZ433S6YJ9sbx5FlBqrPrSSTzWLFJQl0rW4gmQofn65w/4/sjLZy617xC+ndj2+zf2wqZ1wlx7+Lbyt9Fp5M7gEW2Wk+ziTN/iSWX7n3dCltZmvHq9Xb7vrz2eLIP1tm+Jkmn6ZblweIbatOGWn0W3ILM6FPKv/uLrhNsHEglrsazGnVx5NG+KKOV2bOeRkky7qZHS36dYNNgA/bIN36NYAcX21abcGOFhvpYIzdxRQnUHBzTBOKoJku+SBAUy/58ll+014zID0jq5tM7NWADfvFrQcrepDPRc1uqR04B8gArpo2kOe6ybwM2DyUj6yiKRW9eywH9QZIq22KkpNdEvvvRy5P3otfdUp39/Oswxq0Oqv5gMgbnu/VB8nlKccJG3kgqp9MPQBvafYdd3lX+UDylC2gZLfyMy0rf/ye3/foHJ8mGqTw==
X-Forefront-Antispam-Report:
	CIP:4.158.2.129;CTRY:GB;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:outbound-uk1.az.dlp.m.darktrace.com;PTR:InfoDomainNonexistent;CAT:NONE;SFS:(13230040)(36860700016)(14060799003)(1800799024)(82310400026)(35042699022)(376014)(56012099003)(18002099003)(22082099003);DIR:OUT;SFP:1101;
X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1
X-MS-Exchange-AntiSpam-MessageData-0:
	dLqXhYDEa0fEDjSGkKtzZlVx7jyo7YRv2ayeLhqLq0oSVr/TFuvDlfU5cdaRClBk0KWPaPuMQwJC499kbTVSH8qsVdrBCZQ8LbABAWbEFjKQvoCT4nvMSCBWmsAAiCFCUeT2NBuaem30a1xnpIoRVmEhXGYNGIs4D+A19NOGnOshmPXQBRnu34SKP0EUt6VFjWo5ENUqoYSmTcOnEY4cG8pHh2+ZIeCxQMdv+10DgWtt8om5IwK9ekS+G9vNPoD2e4k31n5UEEA8RC9cy4uKrQ5n5KOWo5mD/oCwYTsWuzo4lTvDvk+vXZecLKiCFE/DzkD8V6vGd1olxrMinHOUDlQ043+nm0tmjKX57u32e8RRyC6wd3094H7OqREuewNXz/GfANtrFE4hiSA1O+RhIJBdEcnDNFxJNXzlfjQdVKNJLt6nH8SQRGWFNy2a8gj4
X-OriginatorOrg: arm.com
X-MS-Exchange-CrossTenant-OriginalArrivalTime: 28 Apr 2026 08:06:40.1848
 (UTC)
X-MS-Exchange-CrossTenant-Network-Message-Id: cacb8c9c-d6b6-4947-5e40-08dea4fd1406
X-MS-Exchange-CrossTenant-Id: f34e5979-57d9-4aaa-ad4d-b122a662184d
X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=f34e5979-57d9-4aaa-ad4d-b122a662184d;Ip=[4.158.2.129];Helo=[outbound-uk1.az.dlp.m.darktrace.com]
X-MS-Exchange-CrossTenant-AuthSource:
	AMS0EPF000001AB.eurprd05.prod.outlook.com
X-MS-Exchange-CrossTenant-AuthAs: Anonymous
X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem
X-MS-Exchange-Transport-CrossTenantHeadersStamped: PAXPR08MB7645
X-purgate-ID: tlsNG-d62444/1777363607-BD26DFF4-D9BE6DE4/0/0
X-purgate-type: clean
X-purgate-size: 1964

DQoNCj4gT24gMjggQXByIDIwMjYsIGF0IDA5OjAyLCBNaWNoYWwgT3J6ZWwgPG1pY2hhbC5vcnpl
bEBhbWQuY29tPiB3cm90ZToNCj4gDQo+IG92ZXJsYXlfZ2V0X25vZGVzX2luZm8oKSBpcyBjYWxs
ZWQgYmVmb3JlIGZkdF9vdmVybGF5X2FwcGx5KCkgdG8gZXh0cmFjdA0KPiB0YXJnZXQgcGF0aHMg
ZnJvbSB0aGUgb3ZlcmxheS4gVGhpcyBmYWlscyBmb3Igb3ZlcmxheXMgdXNpbmcgcGhhbmRsZS1i
YXNlZA0KPiB0YXJnZXRpbmcgKHRhcmdldCA9IDwmbGFiZWw+KSBiZWNhdXNlIERUQyBjb21waWxl
cyB0aGVzZSBhcyB1bnJlc29sdmVkDQo+IGZpeHVwcyAodGFyZ2V0ID0gPDB4ZmZmZmZmZmY+KSwg
Y2F1c2luZyBmZHRfb3ZlcmxheV90YXJnZXRfb2Zmc2V0KCkgdG8NCj4gcmV0dXJuIC1GRFRfRVJS
X0JBRFBIQU5ETEUuIFByaW9yIHRvIHRoaXMgY2hhbmdlIHVzZXJzIHdlcmUgZm9yY2VkIHRvDQo+
IG1hbnVhbGx5IG1vZGlmeSB0aGUgZHRibyAoZXZlbiBmb3IgaHdkb20pIHRvIHN3aXRjaCBmcm9t
IHRhcmdldCB0bw0KPiB0YXJnZXQtcGhhbmRsZSBieSBtYW51YWxseSBpbnNwZWN0aW5nIGFsc28g
dGhlIGhvc3QgRFRCLg0KPiANCj4gSW50cm9kdWNlIG92ZXJsYXlfZ2V0X3RhcmdldF9wYXRoKCkg
d2hpY2ggZGlyZWN0bHkgaGFuZGxlcyB0aGUgdHdvDQo+IHRhcmdldGluZyBjYXNlcyB0aGF0IG9j
Y3VyIGJlZm9yZSBmaXh1cCByZXNvbHV0aW9uOg0KPiAtIHRhcmdldC1wYXRoOiB0aGUgc3RyaW5n
IHByb3BlcnR5IGlzIHJldHVybmVkIGRpcmVjdGx5Lg0KPiAtIHRhcmdldCA9IDwmbGFiZWw+OiB0
aGUgbGFiZWwgaXMgZm91bmQgaW4gdGhlIG92ZXJsYXkncyBfX2ZpeHVwc19fDQo+ICAgbm9kZSwg
dGhlbiByZXNvbHZlZCB0byBhIHBhdGggdmlhIHRoZSBiYXNlIERUQidzIF9fc3ltYm9sc19fIG5v
ZGUuDQo+IA0KPiBMaWJmZHQgZmR0X2Zvcl9lYWNoX3Byb3BlcnR5X29mZnNldCgpIHZpb2xhdGVz
IE1JU1JBIFIyMC43LiBEZXNwaXRlDQo+IGxpYmZkdCBiZWluZyBleGNsdWRlZCBmcm9tIHRoZSBh
bmFseXNpcywgdGhpcyBjYXVzZXMgRUNMQUlSIHNjYW4gdG8NCj4gcmVwb3J0IGEgcmVncmVzc2lv
biBiZWNhdXNlIHRoZSB2aW9sYXRpb24gaW50cm9kdWNlZCBieSBhIG1hY3JvIGlzDQo+IHJlcG9y
dGVkIGF0IHRoZSBjYWxsIHNpdGUuIERldmlhdGUgUjIwLjcgZm9yIGxpYmZkdC5oLg0KPiANCj4g
UmV2aWV3ZWQtYnk6IEx1Y2EgRmFuY2VsbHUgPGx1Y2EuZmFuY2VsbHVAYXJtLmNvbT4NCj4gQWNr
ZWQtYnk6IFN0ZWZhbm8gU3RhYmVsbGluaSA8c3N0YWJlbGxpbmlAa2VybmVsLm9yZz4NCj4gU2ln
bmVkLW9mZi1ieTogTWljaGFsIE9yemVsIDxtaWNoYWwub3J6ZWxAYW1kLmNvbT4NCg0KTklUOiBz
aG91bGRu4oCZdCB0aGVzZSBiZSBpbiBjaHJvbm9sb2dpY2FsIG9yZGVyPw0KDQpDaGVlcnMsDQpM
dWNhDQoNCg==


From xen-devel-bounces@lists.xenproject.org Tue Apr 28 08:10:29 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 28 Apr 2026 08:10:29 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1295448.1572088 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wHdWR-00067n-QQ; Tue, 28 Apr 2026 08:10:23 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1295448.1572088; Tue, 28 Apr 2026 08:10: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 1wHdWR-00067g-Nf; Tue, 28 Apr 2026 08:10:23 +0000
Received: by outflank-mailman (input) for mailman id 1295448;
 Tue, 28 Apr 2026 08:10:23 +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 1wHdWQ-00067Z-Rj
 for xen-devel@lists.xenproject.org; Tue, 28 Apr 2026 08:10:22 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wHdWQ-00F6h5-8Z
 for xen-devel@lists.xenproject.org; Tue, 28 Apr 2026 10:10:22 +0200
Received: from [10.42.69.4] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <Michal.Orzel@amd.com>)
 id 69f06b6b-2eae-0a2a0a5409dd-0a2a4504aaf2-8
 for <xen-devel@lists.xenproject.org>; Tue, 28 Apr 2026 10:10:21 +0200
Received: from [40.93.201.56]
 (helo=CY3PR05CU001.outbound.protection.outlook.com)
 by tlsNG-ebf023.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.1)
 (envelope-from <Michal.Orzel@amd.com>)
 id 69f06b6c-1dec-0a2a45040019-285dc93810db-3
 for <xen-devel@lists.xenproject.org>; Tue, 28 Apr 2026 10:10:21 +0200
Received: from PH1PEPF0001330C.namprd07.prod.outlook.com (2603:10b6:518:1::1b)
 by DM4PR12MB7623.namprd12.prod.outlook.com (2603:10b6:8:108::13) with
 Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9870.16; Tue, 28 Apr
 2026 08:10:16 +0000
Received: from SJ1PEPF000023D5.namprd21.prod.outlook.com
 (2a01:111:f403:c902::13) by PH1PEPF0001330C.outlook.office365.com
 (2603:1036:903:47::9) with Microsoft SMTP Server (version=TLS1_3,
 cipher=TLS_AES_256_GCM_SHA384) id 15.20.9846.26 via Frontend Transport; Tue,
 28 Apr 2026 08:10:16 +0000
Received: from satlexmb08.amd.com (165.204.84.17) by
 SJ1PEPF000023D5.mail.protection.outlook.com (10.167.244.70) with Microsoft
 SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id
 15.20.9891.0 via Frontend Transport; Tue, 28 Apr 2026 08:10:16 +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.17; Tue, 28 Apr
 2026 03:10:16 -0500
Received: from [10.71.195.215] (10.180.168.240) by satlexmb08.amd.com
 (10.181.42.217) with Microsoft SMTP Server id 15.2.2562.17 via Frontend
 Transport; Tue, 28 Apr 2026 03:10:15 -0500
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@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=gLw9BaVecvht71CfDT/oYNqqPmHcMDIlDHm+hhxcGFGuPPgNANkHFhW5mrPrMd/uyOTDrItJWslUc6l+fD6+YpFPcU/Ufhj4wJ7nOGEM1j0UVN1h3I56h8QiqlYvO4D/xDkwUj+paXsp7hhvdvLHLOsP3HOVZnh4mUKpyPtiq61hE3iFOii9fuI4S0EcO2FYpg8uWJO5iYSE2L+D+i9oxXeSwu++tsmeP+5h2MFkd3g+svihZ4DaP1jw4hvGHWpL59KCNlHv+/o+BLZHCh/oSu17RBm4sTQTqs3UoGEqtLeYT0ucOydFbagjoGPvuqbQizcJUkKndl4NEno1GdI4FA==
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com;
 s=arcselector10001;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1;
 bh=2QwKHubh0Rs8eIN0CJH6ipVEHeIXxlKEFaCurDRB/m4=;
 b=wkrnm+Zds/JKbq9hdXrb82itsKXWa6tLhjy8y271gS0zFaMC4R/7VsOTsKItPVF2bKDFgny7eCBb/PFoVXc2FmSMxPxNyq7uBPfxrIAlfxgGzW8VSzx9Au/fVTRwAmrHqx7AmkwoOV3MGBBQwc97m0nEJz/6tJmOCx1AbYPw0MLQrc6tXv/rOZrjzidGJ3TVxB9ejhFyjiGqnD4MT/kdmKF3eBeteEt5nQxuGSPvHSvI6ZoBHESF87jOBik2YiYDIuVQJMXhes7IUDvlqQcaDEeRJrBiU/uYJupPDeqfvxPVx7iwDGizuY+LyzWoPb5++/gmTuPSq7IbBJmwuyjm7g==
ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass (sender ip is
 165.204.84.17) smtp.rcpttodomain=arm.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=2QwKHubh0Rs8eIN0CJH6ipVEHeIXxlKEFaCurDRB/m4=;
 b=MmADuBIBSX5PmHYvQcqPvSkstj/EtZAt97QgLurNbB8FE3owbXuFRu5a+WxHTKpomZSSkvEedX2D7yXBjiP+ix7Pu6LgxrU3icRG7GxAcklI2frkTlkbZOtsHNYQESqk2fABqK/LrrXAgNfAcCWK51uhi3U9HLIMcPhUCr/4SmE=
X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 165.204.84.17)
 smtp.mailfrom=amd.com; dkim=none (message not signed)
 header.d=none;dmarc=pass action=none header.from=amd.com;
Received-SPF: Pass (protection.outlook.com: domain of amd.com designates
 165.204.84.17 as permitted sender) receiver=protection.outlook.com;
 client-ip=165.204.84.17; helo=satlexmb08.amd.com; pr=C
Message-ID: <e3c63f3a-fdb0-4ad9-bd8c-5f6f0786db7c@amd.com>
Date: Tue, 28 Apr 2026 10:10:14 +0200
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH v2] xen/dt-overlay: support phandle-based targeting in
 overlay_get_nodes_info
To: Luca Fancellu <Luca.Fancellu@arm.com>
CC: "xen-devel@lists.xenproject.org" <xen-devel@lists.xenproject.org>, Nicola
 Vetrini <nicola.vetrini@bugseng.com>, Doug Goldstein <cardoe@cardoe.com>,
	Stefano Stabellini <sstabellini@kernel.org>, Julien Grall <julien@xen.org>,
	Bertrand Marquis <Bertrand.Marquis@arm.com>
References: <20260428080218.19371-1-michal.orzel@amd.com>
 <E8BED2DC-49DB-4A10-B179-25A5880A5593@arm.com>
From: "Orzel, Michal" <michal.orzel@amd.com>
Content-Language: en-US
In-Reply-To: <E8BED2DC-49DB-4A10-B179-25A5880A5593@arm.com>
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: 8bit
X-EOPAttributedMessage: 0
X-MS-PublicTrafficType: Email
X-MS-TrafficTypeDiagnostic: SJ1PEPF000023D5:EE_|DM4PR12MB7623:EE_
X-MS-Office365-Filtering-Correlation-Id: 765c2d5b-6ee6-4a71-a3ed-08dea4fd94e8
X-MS-Exchange-SenderADCheck: 1
X-MS-Exchange-AntiSpam-Relay: 0
X-Microsoft-Antispam:
	BCL:0;ARA:13230040|82310400026|36860700016|376014|1800799024|56012099003|22082099003|18002099003;
X-Microsoft-Antispam-Message-Info:
	cfylZNYMXFDV6zn+eheMibaW/Hy4lU7TOdQTXHUSxsoNjAN7f+N9iWsWjcDQ0xvcYcEulTr5MXDdaNcRMlFyKLIhSQlhk7k+nYR4yJdTi0PmBoHSHPhs9BIXqomzG4UiJS/vKOYIAnyNPh+tr2cocaEcX6EBkuRElqo1Rm6OprnFq77IiU6YUQ47ByktDcVFeDZXuDKJk7aDISSYfLhZ8yyo4PAtHXtFM9CBW6sYLgEr3y87hpRzhEnZcQSjDLmg0Cj/idpUZECyVTNn+CRKVEVtC56m0gaN7wwoJtBjJka5OfzegNLYe+1Ec2JT88p/+V8io/I2agZ/TDB1Yz7YRN9praQSuiAJVVY5MWDXtnh1a/q0+yrAhkHzNCV0hUyQNLpOUNzv4n32sUVtLBnOA08lWGGTApYCPARiT+rM9rOqNSnu651AWvfSkrcNxTqsabQrrgiXleec9JNBevDFV42HWrmAWWfD+7UHmQyA8lOLec5P97+Qf/0M5NI8H3FRDFKmI6/DNsGbW9k5n4jkcuIwkp/pBvCKTmSZHpTi80hDaE8YhjCzqeHOiAmCiUj4+L17J/ENQgnsktXYNi1D1nEx3LMZkbXWNIK3GdqYqUEV7ZhhsvpTpIgKEO2oxJ4Ywcqy8E+nrO22euxzMoWjQYaVqsdpOIujELk0XJEDKTYXTmW0S6vG933KOW9YtZstkAfRyzL8S0ltusUG8Ulol3huEtHwby9HJAutS/KYjdY/WimtHCGnYc89qRwe3eSYY6rQtjj51Qz0jToderbdXA==
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)(376014)(1800799024)(56012099003)(22082099003)(18002099003);DIR:OUT;SFP:1101;
X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1
X-MS-Exchange-AntiSpam-MessageData-0:
	lXbVpWpgWQWfh0Jt7Fg4SmY+s+w//FrtSSaWOAN+zGudCQl/dXrKjwcIW4q2VXHNQn5osNFH2kOu8FT2G9jiWHLqmVpfg00SvesI/Un7J/7mmB71rFgAOkA5PNBq4yIEIaiyiLByzfZKcytlHX3j31+q1zq7cqJC83fVBncwyA7mZ/0waiPFbgi2EaUx1WTzp8+Va4O84N0sAtGn9GnRL57M1lzzQb4YdK+4EwUeV8yjzmJ13tqHlNbpZNlSCEKTzCcMXGkiSRGYubaK+c/9K85Q7cX0qV8bkViXu3WiloSASFemo2bDHHhH6BLQU1zqwJEWRbTDJQ0/NvciyNI7nBCIi0AK0cNRkGd5B8z46Jpv2ubOc2Cvvu+EMG1ElydAj6f9j4vUgA3qWpAb7tg4HHxbd2FnE0PGOIQr+uFldtgBzMwT7IwpdUMMhWp63swQ
X-OriginatorOrg: amd.com
X-MS-Exchange-CrossTenant-OriginalArrivalTime: 28 Apr 2026 08:10:16.4373
 (UTC)
X-MS-Exchange-CrossTenant-Network-Message-Id: 765c2d5b-6ee6-4a71-a3ed-08dea4fd94e8
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:
	SJ1PEPF000023D5.namprd21.prod.outlook.com
X-MS-Exchange-CrossTenant-AuthAs: Anonymous
X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem
X-MS-Exchange-Transport-CrossTenantHeadersStamped: DM4PR12MB7623
X-purgate-ID: tlsNG-ebf023/1777363821-3184D3FF-3BCDF3A3/0/0
X-purgate-type: clean
X-purgate-size: 1580



On 28-Apr-26 10:05, Luca Fancellu wrote:
> 
> 
>> On 28 Apr 2026, at 09:02, Michal Orzel <michal.orzel@amd.com> wrote:
>>
>> overlay_get_nodes_info() is called before fdt_overlay_apply() to extract
>> target paths from the overlay. This fails for overlays using phandle-based
>> targeting (target = <&label>) because DTC compiles these as unresolved
>> fixups (target = <0xffffffff>), causing fdt_overlay_target_offset() to
>> return -FDT_ERR_BADPHANDLE. Prior to this change users were forced to
>> manually modify the dtbo (even for hwdom) to switch from target to
>> target-phandle by manually inspecting also the host DTB.
>>
>> Introduce overlay_get_target_path() which directly handles the two
>> targeting cases that occur before fixup resolution:
>> - target-path: the string property is returned directly.
>> - target = <&label>: the label is found in the overlay's __fixups__
>>   node, then resolved to a path via the base DTB's __symbols__ node.
>>
>> Libfdt fdt_for_each_property_offset() violates MISRA R20.7. Despite
>> libfdt being excluded from the analysis, this causes ECLAIR scan to
>> report a regression because the violation introduced by a macro is
>> reported at the call site. Deviate R20.7 for libfdt.h.
>>
>> Reviewed-by: Luca Fancellu <luca.fancellu@arm.com>
>> Acked-by: Stefano Stabellini <sstabellini@kernel.org>
>> Signed-off-by: Michal Orzel <michal.orzel@amd.com>
> 
> NIT: shouldn’t these be in chronological order?
Yes, they should. It's b4 that messes things up. Anyway, to be done on commit.

~Michal



From xen-devel-bounces@lists.xenproject.org Tue Apr 28 08:14:12 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 28 Apr 2026 08:14:12 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1295459.1572099 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wHda6-0006lC-ES; Tue, 28 Apr 2026 08:14:10 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1295459.1572099; Tue, 28 Apr 2026 08:14: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 1wHda6-0006l5-AF; Tue, 28 Apr 2026 08:14:10 +0000
Received: by outflank-mailman (input) for mailman id 1295459;
 Tue, 28 Apr 2026 08:14:09 +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 1wHda4-0006kz-QJ
 for xen-devel@lists.xenproject.org; Tue, 28 Apr 2026 08:14:09 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wHda3-00BEh9-PA
 for xen-devel@lists.xenproject.org; Tue, 28 Apr 2026 10:14:07 +0200
Received: from [10.42.69.10] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <marcandre.lureau@redhat.com>)
 id 69f06c4d-5cb7-0a2a0a5109dd-0a2a450a8020-12
 for <xen-devel@lists.xenproject.org>; Tue, 28 Apr 2026 10:14:07 +0200
Received: from [170.10.133.124] (helo=us-smtp-delivery-124.mimecast.com)
 by tlsNG-4011c0.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.1)
 (envelope-from <marcandre.lureau@redhat.com>)
 id 69f06c4e-56b3-0a2a450a0019-aa0a857c6839-3
 for <xen-devel@lists.xenproject.org>; Tue, 28 Apr 2026 10:14:07 +0200
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-8LCRAHWHN-681PVBa1sDpg-1; Tue,
 28 Apr 2026 04:14:02 -0400
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 CE3EC1800451; Tue, 28 Apr 2026 08:13:57 +0000 (UTC)
Received: from localhost (unknown [10.44.24.6])
 by mx-prod-int-05.mail-002.prod.us-west-2.aws.redhat.com (Postfix) with ESMTP
 id 13AC8195608E; Tue, 28 Apr 2026 08:13: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=1777364046;
	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=6Qd0r1ayC5mBpEHAxJW+wuu997v0hBPTSLNCW1+ff5s=;
	b=BdlgkJdreuBusFwI0uNbIfkYpaofjAhJkT8UJSNIt60tcGsBRm1Ql171+qwfuS30wbWwJ4
	VXLs+biMJ9LQtQD2fRzbeyRQtFsqaajimkwtMpiyd8QfpFui0HOlsC1BfyIPFd1jJUnvc3
	hyfErmPMwYsex/0uwrrsrU0PNIImBLE=
X-MC-Unique: 8LCRAHWHN-681PVBa1sDpg-1
X-Mimecast-MFC-AGG-ID: 8LCRAHWHN-681PVBa1sDpg_1777364039
From: marcandre.lureau@redhat.com
To: qemu-devel@nongnu.org
Cc: peter.maydell@linaro.org,
	=?UTF-8?q?Marc-Andr=C3=A9=20Lureau?= <marcandre.lureau@redhat.com>,
	Jan Kiszka <jan.kiszka@web.de>,
	Phil Dennis-Jordan <phil@philjordan.eu>,
	Richard Henderson <richard.henderson@linaro.org>,
	Helge Deller <deller@gmx.de>,
	=?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= <philmd@linaro.org>,
	Gerd Hoffmann <kraxel@redhat.com>,
	Mark Cave-Ayland <mark.cave-ayland@ilande.co.uk>,
	Samuel Tardieu <sam@rfc1149.net>,
	=?UTF-8?q?Herv=C3=A9=20Poussineau?= <hpoussin@reactos.org>,
	Aleksandar Rikalo <arikalo@gmail.com>,
	Laurent Vivier <laurent@vivier.eu>,
	Thomas Huth <th.huth+qemu@posteo.eu>,
	BALATON Zoltan <balaton@eik.bme.hu>,
	=?UTF-8?q?Alex=20Benn=C3=A9e?= <alex.bennee@linaro.org>,
	Akihiko Odaki <odaki@rsg.ci.i.u-tokyo.ac.jp>,
	Dmitry Osipenko <dmitry.osipenko@collabora.com>,
	"Michael S. Tsirkin" <mst@redhat.com>,
	Dmitry Fleytman <dmitry.fleytman@gmail.com>,
	Stefano Stabellini <sstabellini@kernel.org>,
	Anthony PERARD <anthony@xenproject.org>,
	"Edgar E. Iglesias" <edgar.iglesias@gmail.com>,
	Alistair Francis <alistair@alistair23.me>,
	Alex Williamson <alex@shazbot.org>,
	=?UTF-8?q?C=C3=A9dric=20Le=20Goater?= <clg@redhat.com>,
	qemu-arm@nongnu.org (open list:Musicpal),
	qemu-ppc@nongnu.org (open list:sam460ex),
	xen-devel@lists.xenproject.org (open list:X86 Xen CPUs)
Subject: [PULL 08/15] ui/console: return completion status from gfx_update callback
Date: Tue, 28 Apr 2026 12:12:55 +0400
Message-ID: <20260428081303.990973-9-marcandre.lureau@redhat.com>
In-Reply-To: <20260428081303.990973-1-marcandre.lureau@redhat.com>
References: <20260428081303.990973-1-marcandre.lureau@redhat.com>
MIME-Version: 1.0
X-Scanned-By: MIMEDefang 3.0 on 10.30.177.17
X-Mimecast-MFC-PROC-ID: PJGKQvBRH2XtP3Fvu266gg-QdLECtRhDLd-itFr5gmo_1777364039
X-Mimecast-Originator: redhat.com
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
X-purgate-ID: tlsNG-4011c0/1777364047-81D808B7-2B14CF27/0/0
X-purgate-type: clean
X-purgate-size: 32862

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

Replace the two-field design (gfx_update void callback + gfx_update_async
flag) with a single bool return value from gfx_update. Returning true
means the update completed synchronously and graphic_hw_update_done()
should be called by the console layer. Returning false means the update
is deferred and the device will call graphic_hw_update_done() itself
later (as done by QXL/SPICE and Apple GFX).

This simplifies the interface and makes the async contract explicit at
each call site rather than relying on a separate struct field.

Signed-off-by: Marc-André Lureau <marcandre.lureau@redhat.com>
Reviewed-by: Philippe Mathieu-Daudé <philmd@linaro.org>
---
 hw/display/qxl.h              |  2 +-
 include/ui/console.h          | 11 ++++++++---
 hw/arm/musicpal.c             |  3 ++-
 hw/display/artist.c           |  4 +++-
 hw/display/bcm2835_fb.c       |  7 ++++---
 hw/display/bochs-display.c    |  6 ++++--
 hw/display/cg3.c              |  5 +++--
 hw/display/dm163.c            |  4 +++-
 hw/display/exynos4210_fimd.c  |  6 ++++--
 hw/display/g364fb.c           |  9 ++++++---
 hw/display/jazz_led.c         |  6 ++++--
 hw/display/macfb.c            |  6 ++++--
 hw/display/next-fb.c          |  4 +++-
 hw/display/omap_lcdc.c        | 14 ++++++++------
 hw/display/pl110.c            |  5 +++--
 hw/display/qxl-render.c       |  6 +++---
 hw/display/qxl.c              |  7 +++----
 hw/display/ramfb-standalone.c |  4 +++-
 hw/display/sm501.c            |  8 +++++---
 hw/display/ssd0303.c          | 10 ++++++----
 hw/display/ssd0323.c          | 11 ++++++-----
 hw/display/tcx.c              |  6 ++++--
 hw/display/vga.c              |  4 +++-
 hw/display/virtio-gpu-base.c  |  3 ++-
 hw/display/virtio-vga.c       |  6 +++---
 hw/display/vmware_vga.c       |  7 ++++---
 hw/display/xenfb.c            |  6 ++++--
 hw/display/xlnx_dp.c          | 10 ++++++----
 hw/vfio/display.c             | 17 ++++++++++-------
 ui/console.c                  |  7 +------
 hw/display/apple-gfx.m        | 10 +++++-----
 31 files changed, 128 insertions(+), 86 deletions(-)

diff --git a/hw/display/qxl.h b/hw/display/qxl.h
index e0a85a5ca49..ad8a9128785 100644
--- a/hw/display/qxl.h
+++ b/hw/display/qxl.h
@@ -187,7 +187,7 @@ int qxl_log_command(PCIQXLDevice *qxl, const char *ring, QXLCommandExt *ext);
 
 /* qxl-render.c */
 void qxl_render_resize(PCIQXLDevice *qxl);
-void qxl_render_update(PCIQXLDevice *qxl);
+bool qxl_render_update(PCIQXLDevice *qxl);
 int qxl_render_cursor(PCIQXLDevice *qxl, QXLCommandExt *ext);
 void qxl_render_update_area_done(PCIQXLDevice *qxl, QXLCookie *cookie);
 void qxl_render_update_area_bh(void *opaque);
diff --git a/include/ui/console.h b/include/ui/console.h
index f04844263b9..0bc9e544fad 100644
--- a/include/ui/console.h
+++ b/include/ui/console.h
@@ -368,9 +368,14 @@ enum {
 typedef struct GraphicHwOps {
     int (*get_flags)(void *opaque); /* optional, default 0 */
     void (*invalidate)(void *opaque);
-    void (*gfx_update)(void *opaque);
-    bool gfx_update_async; /* if true, calls graphic_hw_update_done() */
-    void (*text_update)(void *opaque, console_ch_t *text);
+    /*
+     * Returns true if the update is handled synchronously, false if deferred
+     * and graphic_hw_update_done() will be called when ready (to resume waiting
+     * tasks/coroutines).
+     * Optional.
+     */
+    bool (*gfx_update)(void *opaque);
+    void (*text_update)(void *opaque, uint32_t *text);
     void (*ui_info)(void *opaque, uint32_t head, QemuUIInfo *info);
     void (*gl_block)(void *opaque, bool block);
 } GraphicHwOps;
diff --git a/hw/arm/musicpal.c b/hw/arm/musicpal.c
index 441a11100a3..ba88ed756e2 100644
--- a/hw/arm/musicpal.c
+++ b/hw/arm/musicpal.c
@@ -152,7 +152,7 @@ static inline void set_lcd_pixel32(musicpal_lcd_state *s,
     }
 }
 
-static void lcd_refresh(void *opaque)
+static bool lcd_refresh(void *opaque)
 {
     musicpal_lcd_state *s = opaque;
     int x, y, col;
@@ -171,6 +171,7 @@ static void lcd_refresh(void *opaque)
     }
 
     dpy_gfx_update(s->con, 0, 0, 128*3, 64*3);
+    return true;
 }
 
 static void lcd_invalidate(void *opaque)
diff --git a/hw/display/artist.c b/hw/display/artist.c
index 206f77afba1..a07508378c7 100644
--- a/hw/display/artist.c
+++ b/hw/display/artist.c
@@ -1311,7 +1311,7 @@ static void artist_draw_line(void *opaque, uint8_t *d, const uint8_t *src,
     }
 }
 
-static void artist_update_display(void *opaque)
+static bool artist_update_display(void *opaque)
 {
     ARTISTState *s = opaque;
     DisplaySurface *surface = qemu_console_surface(s->con);
@@ -1326,6 +1326,8 @@ static void artist_update_display(void *opaque)
     if (first >= 0) {
         dpy_gfx_update(s->con, 0, first, s->width, last - first + 1);
     }
+
+    return true;
 }
 
 static void artist_invalidate(void *opaque)
diff --git a/hw/display/bcm2835_fb.c b/hw/display/bcm2835_fb.c
index 75d7c0f8499..83c4c03c7ca 100644
--- a/hw/display/bcm2835_fb.c
+++ b/hw/display/bcm2835_fb.c
@@ -150,7 +150,7 @@ static bool fb_use_offsets(BCM2835FBConfig *config)
         config->yres_virtual > config->yres;
 }
 
-static void fb_update_display(void *opaque)
+static bool fb_update_display(void *opaque)
 {
     BCM2835FBState *s = opaque;
     DisplaySurface *surface = qemu_console_surface(s->con);
@@ -161,7 +161,7 @@ static void fb_update_display(void *opaque)
     uint32_t xoff = 0, yoff = 0;
 
     if (s->lock || !s->config.xres) {
-        return;
+        return true;
     }
 
     src_width = bcm2835_fb_get_pitch(&s->config);
@@ -174,7 +174,7 @@ static void fb_update_display(void *opaque)
 
     switch (surface_bits_per_pixel(surface)) {
     case 0:
-        return;
+        return true;
     case 8:
         break;
     case 15:
@@ -212,6 +212,7 @@ static void fb_update_display(void *opaque)
     }
 
     s->invalidate = false;
+    return true;
 }
 
 void bcm2835_fb_validate_config(BCM2835FBConfig *config)
diff --git a/hw/display/bochs-display.c b/hw/display/bochs-display.c
index 5fb6b733cb5..8ef9b76cf85 100644
--- a/hw/display/bochs-display.c
+++ b/hw/display/bochs-display.c
@@ -198,7 +198,7 @@ static int bochs_display_get_mode(BochsDisplayState *s,
     return 0;
 }
 
-static void bochs_display_update(void *opaque)
+static bool bochs_display_update(void *opaque)
 {
     BochsDisplayState *s = opaque;
     DirtyBitmapSnapshot *snap = NULL;
@@ -212,7 +212,7 @@ static void bochs_display_update(void *opaque)
     ret = bochs_display_get_mode(s, &mode);
     if (ret < 0) {
         /* no (valid) video mode */
-        return;
+        return true;
     }
 
     if (memcmp(&s->mode, &mode, sizeof(mode)) != 0) {
@@ -255,6 +255,8 @@ static void bochs_display_update(void *opaque)
 
         g_free(snap);
     }
+
+    return true;
 }
 
 static const GraphicHwOps bochs_display_gfx_ops = {
diff --git a/hw/display/cg3.c b/hw/display/cg3.c
index 0a413fbb7ec..963bb3427a6 100644
--- a/hw/display/cg3.c
+++ b/hw/display/cg3.c
@@ -85,7 +85,7 @@ struct CG3State {
     uint8_t dac_index, dac_state;
 };
 
-static void cg3_update_display(void *opaque)
+static bool cg3_update_display(void *opaque)
 {
     CG3State *s = opaque;
     DisplaySurface *surface = qemu_console_surface(s->con);
@@ -98,7 +98,7 @@ static void cg3_update_display(void *opaque)
     DirtyBitmapSnapshot *snap = NULL;
 
     if (surface_bits_per_pixel(surface) != 32) {
-        return;
+        return true;
     }
     width = s->width;
     height = s->height;
@@ -154,6 +154,7 @@ static void cg3_update_display(void *opaque)
         qemu_irq_raise(s->irq);
     }
     g_free(snap);
+    return true;
 }
 
 static void cg3_invalidate_display(void *opaque)
diff --git a/hw/display/dm163.c b/hw/display/dm163.c
index 4feae912945..9ea62cb4f76 100644
--- a/hw/display/dm163.c
+++ b/hw/display/dm163.c
@@ -285,7 +285,7 @@ static uint32_t *update_display_of_row(DM163State *s, uint32_t *dest,
     return dest;
 }
 
-static void dm163_update_display(void *opaque)
+static bool dm163_update_display(void *opaque)
 {
     DM163State *s = (DM163State *)opaque;
     DisplaySurface *surface = qemu_console_surface(s->console);
@@ -300,6 +300,8 @@ static void dm163_update_display(void *opaque)
         }
         dest = update_display_of_row(s, dest, row);
     }
+
+    return true;
 }
 
 static const GraphicHwOps dm163_ops = {
diff --git a/hw/display/exynos4210_fimd.c b/hw/display/exynos4210_fimd.c
index 2d8fa7ee944..a91f04aaf79 100644
--- a/hw/display/exynos4210_fimd.c
+++ b/hw/display/exynos4210_fimd.c
@@ -1270,7 +1270,7 @@ static void exynos4210_update_resolution(Exynos4210fimdState *s)
     }
 }
 
-static void exynos4210_fimd_update(void *opaque)
+static bool exynos4210_fimd_update(void *opaque)
 {
     Exynos4210fimdState *s = (Exynos4210fimdState *)opaque;
     DisplaySurface *surface;
@@ -1287,7 +1287,7 @@ static void exynos4210_fimd_update(void *opaque)
 
     if (!s || !s->console || !s->enabled ||
         surface_bits_per_pixel(qemu_console_surface(s->console)) == 0) {
-        return;
+        return true;
     }
 
     global_width = (s->vidtcon[2] & FIMD_VIDTCON2_SIZE_MASK) + 1;
@@ -1348,6 +1348,8 @@ static void exynos4210_fimd_update(void *opaque)
         exynos4210_fimd_enable(s, false);
     }
     exynos4210_fimd_update_irq(s);
+
+    return true;
 }
 
 static void exynos4210_fimd_reset(DeviceState *d)
diff --git a/hw/display/g364fb.c b/hw/display/g364fb.c
index 50952e9934b..bd15f6f0acc 100644
--- a/hw/display/g364fb.c
+++ b/hw/display/g364fb.c
@@ -238,15 +238,16 @@ static void g364fb_draw_blank(G364State *s)
     s->blanked = 1;
 }
 
-static void g364fb_update_display(void *opaque)
+static bool g364fb_update_display(void *opaque)
 {
     G364State *s = opaque;
     DisplaySurface *surface = qemu_console_surface(s->con);
 
     qemu_flush_coalesced_mmio_buffer();
 
-    if (s->width == 0 || s->height == 0)
-        return;
+    if (s->width == 0 || s->height == 0) {
+        return true;
+    }
 
     if (s->width != surface_width(surface) ||
         s->height != surface_height(surface)) {
@@ -262,6 +263,8 @@ static void g364fb_update_display(void *opaque)
     }
 
     qemu_irq_raise(s->irq);
+
+    return true;
 }
 
 static inline void g364fb_invalidate_display(void *opaque)
diff --git a/hw/display/jazz_led.c b/hw/display/jazz_led.c
index 9d62e51bed9..7d1a020d4d9 100644
--- a/hw/display/jazz_led.c
+++ b/hw/display/jazz_led.c
@@ -144,7 +144,7 @@ static void draw_vertical_line(DisplaySurface *ds,
     }
 }
 
-static void jazz_led_update_display(void *opaque)
+static bool jazz_led_update_display(void *opaque)
 {
     LedState *s = opaque;
     DisplaySurface *surface = qemu_console_surface(s->con);
@@ -186,7 +186,7 @@ static void jazz_led_update_display(void *opaque)
             color_led = rgb_to_pixel32(0x00, 0xff, 0x00);
             break;
         default:
-            return;
+            return true;
         }
 
         /* display segments */
@@ -218,6 +218,8 @@ static void jazz_led_update_display(void *opaque)
 
     s->state = REDRAW_NONE;
     dpy_gfx_update_full(s->con);
+
+    return true;
 }
 
 static void jazz_led_invalidate_display(void *opaque)
diff --git a/hw/display/macfb.c b/hw/display/macfb.c
index b8115c2be13..848c3c282bd 100644
--- a/hw/display/macfb.c
+++ b/hw/display/macfb.c
@@ -454,7 +454,7 @@ static gchar *macfb_mode_list(void)
 }
 
 
-static void macfb_update_display(void *opaque)
+static bool macfb_update_display(void *opaque)
 {
     MacfbState *s = opaque;
     DisplaySurface *surface = qemu_console_surface(s->con);
@@ -462,7 +462,7 @@ static void macfb_update_display(void *opaque)
     qemu_flush_coalesced_mmio_buffer();
 
     if (s->width == 0 || s->height == 0) {
-        return;
+        return true;
     }
 
     if (s->width != surface_width(surface) ||
@@ -471,6 +471,8 @@ static void macfb_update_display(void *opaque)
     }
 
     macfb_draw_graphic(s);
+
+    return true;
 }
 
 static void macfb_update_irq(MacfbState *s)
diff --git a/hw/display/next-fb.c b/hw/display/next-fb.c
index 3d97702fce5..e758b223ef7 100644
--- a/hw/display/next-fb.c
+++ b/hw/display/next-fb.c
@@ -67,7 +67,7 @@ static void nextfb_draw_line(void *opaque, uint8_t *d, const uint8_t *s,
     }
 }
 
-static void nextfb_update(void *opaque)
+static bool nextfb_update(void *opaque)
 {
     NeXTFbState *s = NEXTFB(opaque);
     int dest_width = 4;
@@ -90,6 +90,8 @@ static void nextfb_update(void *opaque)
                                s, &first, &last);
 
     dpy_gfx_update(s->con, 0, 0, s->cols, s->rows);
+
+    return true;
 }
 
 static void nextfb_invalidate(void *opaque)
diff --git a/hw/display/omap_lcdc.c b/hw/display/omap_lcdc.c
index c41c65bb2e0..1e8385ebffb 100644
--- a/hw/display/omap_lcdc.c
+++ b/hw/display/omap_lcdc.c
@@ -197,7 +197,7 @@ static void draw_line16_32(void *opaque, uint8_t *d, const uint8_t *s,
     } while (-- width != 0);
 }
 
-static void omap_update_display(void *opaque)
+static bool omap_update_display(void *opaque)
 {
     struct omap_lcd_panel_s *omap_lcd = opaque;
     DisplaySurface *surface;
@@ -207,12 +207,12 @@ static void omap_update_display(void *opaque)
     hwaddr frame_base;
 
     if (!omap_lcd || omap_lcd->plm == 1 || !omap_lcd->enable) {
-        return;
+        return true;
     }
 
     surface = qemu_console_surface(omap_lcd->con);
     if (!surface_bits_per_pixel(surface)) {
-        return;
+        return true;
     }
 
     frame_offset = 0;
@@ -256,7 +256,7 @@ static void omap_update_display(void *opaque)
 
     default:
         /* Unsupported at the moment.  */
-        return;
+        return true;
     }
 
     /* Resolution */
@@ -278,7 +278,7 @@ static void omap_update_display(void *opaque)
         omap_lcd->sync_error = 1;
         omap_lcd_interrupts(omap_lcd);
         omap_lcd->enable = 0;
-        return;
+        return true;
     }
 
     /* Content */
@@ -291,7 +291,7 @@ static void omap_update_display(void *opaque)
         omap_lcd->dma->current_frame ^= 1;
 
     if (!surface_bits_per_pixel(surface)) {
-        return;
+        return true;
     }
 
     first = 0;
@@ -323,6 +323,8 @@ static void omap_update_display(void *opaque)
         dpy_gfx_update(omap_lcd->con, 0, first, width, last - first + 1);
     }
     omap_lcd->invalidate = 0;
+
+    return true;
 }
 
 static void omap_invalidate_display(void *opaque) {
diff --git a/hw/display/pl110.c b/hw/display/pl110.c
index 4cd62a98757..e134ac28eb6 100644
--- a/hw/display/pl110.c
+++ b/hw/display/pl110.c
@@ -210,7 +210,7 @@ static int pl110_enabled(PL110State *s)
   return (s->cr & PL110_CR_EN) && (s->cr & PL110_CR_PWR);
 }
 
-static void pl110_update_display(void *opaque)
+static bool pl110_update_display(void *opaque)
 {
     PL110State *s = (PL110State *)opaque;
     DisplaySurface *surface = qemu_console_surface(s->con);
@@ -221,7 +221,7 @@ static void pl110_update_display(void *opaque)
     int last;
 
     if (!pl110_enabled(s)) {
-        return;
+        return true;
     }
 
     if (s->cr & PL110_CR_BGR)
@@ -306,6 +306,7 @@ static void pl110_update_display(void *opaque)
         dpy_gfx_update(s->con, 0, first, s->cols, last - first + 1);
     }
     s->invalidate = 0;
+    return true;
 }
 
 static void pl110_invalidate_display(void * opaque)
diff --git a/hw/display/qxl-render.c b/hw/display/qxl-render.c
index c6a9ac1da10..5b4f8842011 100644
--- a/hw/display/qxl-render.c
+++ b/hw/display/qxl-render.c
@@ -173,7 +173,7 @@ end:
  * callbacks are called by spice_server thread, deferring to bh called from the
  * io thread.
  */
-void qxl_render_update(PCIQXLDevice *qxl)
+bool qxl_render_update(PCIQXLDevice *qxl)
 {
     QXLCookie *cookie;
 
@@ -183,8 +183,7 @@ void qxl_render_update(PCIQXLDevice *qxl)
         qxl->mode == QXL_MODE_UNDEFINED) {
         qxl_render_update_area_unlocked(qxl);
         qemu_mutex_unlock(&qxl->ssd.lock);
-        graphic_hw_update_done(qxl->ssd.dcl.con);
-        return;
+        return true;
     }
 
     qxl->guest_primary.commands = 0;
@@ -195,6 +194,7 @@ void qxl_render_update(PCIQXLDevice *qxl)
     qxl_set_rect_to_surface(qxl, &cookie->u.render.area);
     qxl_spice_update_area(qxl, 0, &cookie->u.render.area, NULL,
                           0, 1 /* clear_dirty_region */, QXL_ASYNC, cookie);
+    return false;
 }
 
 void qxl_render_update_area_bh(void *opaque)
diff --git a/hw/display/qxl.c b/hw/display/qxl.c
index f8fd7ee0698..0a3c42c8ec2 100644
--- a/hw/display/qxl.c
+++ b/hw/display/qxl.c
@@ -122,7 +122,7 @@ static void qxl_reset_memslots(PCIQXLDevice *d);
 static void qxl_reset_surfaces(PCIQXLDevice *d);
 static void qxl_ring_set_dirty(PCIQXLDevice *qxl);
 
-static void qxl_hw_update(void *opaque);
+static bool qxl_hw_update(void *opaque);
 
 void qxl_set_guest_bug(PCIQXLDevice *qxl, const char *msg, ...)
 {
@@ -1144,7 +1144,6 @@ static const QXLInterface qxl_interface = {
 
 static const GraphicHwOps qxl_ops = {
     .gfx_update  = qxl_hw_update,
-    .gfx_update_async = true,
 };
 
 static void qxl_enter_vga_mode(PCIQXLDevice *d)
@@ -1928,11 +1927,11 @@ static void qxl_send_events(PCIQXLDevice *d, uint32_t events)
 
 /* graphics console */
 
-static void qxl_hw_update(void *opaque)
+static bool qxl_hw_update(void *opaque)
 {
     PCIQXLDevice *qxl = opaque;
 
-    qxl_render_update(qxl);
+    return qxl_render_update(qxl);
 }
 
 static void qxl_dirty_one_surface(PCIQXLDevice *qxl, QXLPHYSICAL pqxl,
diff --git a/hw/display/ramfb-standalone.c b/hw/display/ramfb-standalone.c
index f1958be32ad..27f0ba19f90 100644
--- a/hw/display/ramfb-standalone.c
+++ b/hw/display/ramfb-standalone.c
@@ -20,7 +20,7 @@ struct RAMFBStandaloneState {
     bool use_legacy_x86_rom;
 };
 
-static void display_update_wrapper(void *dev)
+static bool display_update_wrapper(void *dev)
 {
     RAMFBStandaloneState *ramfb = RAMFB(dev);
 
@@ -29,6 +29,8 @@ static void display_update_wrapper(void *dev)
     } else {
         ramfb_display_update(ramfb->con, ramfb->state);
     }
+
+    return true;
 }
 
 static const GraphicHwOps wrapper_ops = {
diff --git a/hw/display/sm501.c b/hw/display/sm501.c
index a07aa9886f9..a3993ceba29 100644
--- a/hw/display/sm501.c
+++ b/hw/display/sm501.c
@@ -1716,7 +1716,7 @@ static void draw_hwc_line_32(uint8_t *d, const uint8_t *s, int width,
     }
 }
 
-static void sm501_update_display(void *opaque)
+static bool sm501_update_display(void *opaque)
 {
     SM501State *s = opaque;
     DisplaySurface *surface = qemu_console_surface(s->con);
@@ -1740,7 +1740,7 @@ static void sm501_update_display(void *opaque)
 
     if (!((crt ? s->dc_crt_control : s->dc_panel_control)
           & SM501_DC_CRT_CONTROL_ENABLE)) {
-        return;
+        return true;
     }
 
     palette = (uint32_t *)(crt ? &s->dc_palette[SM501_DC_CRT_PALETTE -
@@ -1761,7 +1761,7 @@ static void sm501_update_display(void *opaque)
     default:
         qemu_log_mask(LOG_GUEST_ERROR, "sm501: update display"
                       "invalid control register value.\n");
-        return;
+        return true;
     }
 
     /* set up to draw hardware cursor */
@@ -1833,6 +1833,8 @@ static void sm501_update_display(void *opaque)
     if (y_start >= 0) {
         dpy_gfx_update(s->con, 0, y_start, width, y - y_start);
     }
+
+    return true;
 }
 
 static const GraphicHwOps sm501_ops = {
diff --git a/hw/display/ssd0303.c b/hw/display/ssd0303.c
index 87781438cd5..229856cc427 100644
--- a/hw/display/ssd0303.c
+++ b/hw/display/ssd0303.c
@@ -203,7 +203,7 @@ static int ssd0303_event(I2CSlave *i2c, enum i2c_event event)
     return 0;
 }
 
-static void ssd0303_update_display(void *opaque)
+static bool ssd0303_update_display(void *opaque)
 {
     ssd0303_state *s = (ssd0303_state *)opaque;
     DisplaySurface *surface = qemu_console_surface(s->con);
@@ -218,11 +218,11 @@ static void ssd0303_update_display(void *opaque)
     uint8_t mask;
 
     if (!s->redraw)
-        return;
+        return true;
 
     switch (surface_bits_per_pixel(surface)) {
     case 0:
-        return;
+        return true;
     case 15:
         dest_width = 2;
         break;
@@ -237,7 +237,7 @@ static void ssd0303_update_display(void *opaque)
         break;
     default:
         BADF("Bad color depth\n");
-        return;
+        return true;
     }
     dest_width *= MAGNIFY;
     memset(colortab, 0xff, dest_width);
@@ -269,6 +269,8 @@ static void ssd0303_update_display(void *opaque)
     }
     s->redraw = 0;
     dpy_gfx_update(s->con, 0, 0, 96 * MAGNIFY, 16 * MAGNIFY);
+
+    return true;
 }
 
 static void ssd0303_invalidate_display(void * opaque)
diff --git a/hw/display/ssd0323.c b/hw/display/ssd0323.c
index af5ff4fecdc..67db16086c8 100644
--- a/hw/display/ssd0323.c
+++ b/hw/display/ssd0323.c
@@ -181,7 +181,7 @@ static uint32_t ssd0323_transfer(SSIPeripheral *dev, uint32_t data)
     return 0;
 }
 
-static void ssd0323_update_display(void *opaque)
+static bool ssd0323_update_display(void *opaque)
 {
     ssd0323_state *s = (ssd0323_state *)opaque;
     DisplaySurface *surface = qemu_console_surface(s->con);
@@ -197,11 +197,11 @@ static void ssd0323_update_display(void *opaque)
     int dest_width;
 
     if (!s->redraw)
-        return;
+        return true;
 
     switch (surface_bits_per_pixel(surface)) {
     case 0:
-        return;
+        return true;
     case 15:
         dest_width = 2;
         break;
@@ -216,7 +216,7 @@ static void ssd0323_update_display(void *opaque)
         break;
     default:
         BADF("Bad color depth\n");
-        return;
+        return true;
     }
     p = colortab;
     for (i = 0; i < 16; i++) {
@@ -240,7 +240,7 @@ static void ssd0323_update_display(void *opaque)
             break;
         default:
             BADF("Bad color depth\n");
-            return;
+            return true;
         }
         p += dest_width;
     }
@@ -271,6 +271,7 @@ static void ssd0323_update_display(void *opaque)
     }
     s->redraw = 0;
     dpy_gfx_update(s->con, 0, 0, 128 * MAGNIFY, 64 * MAGNIFY);
+    return true;
 }
 
 static void ssd0323_invalidate_display(void * opaque)
diff --git a/hw/display/tcx.c b/hw/display/tcx.c
index ea92a48400c..cedbf5c7acd 100644
--- a/hw/display/tcx.c
+++ b/hw/display/tcx.c
@@ -209,7 +209,7 @@ static inline void tcx24_draw_line32(TCXState *s1, uint8_t *d,
 /* Fixed line length 1024 allows us to do nice tricks not possible on
    VGA... */
 
-static void tcx_update_display(void *opaque)
+static bool tcx_update_display(void *opaque)
 {
     TCXState *ts = opaque;
     DisplaySurface *surface = qemu_console_surface(ts->con);
@@ -257,9 +257,10 @@ static void tcx_update_display(void *opaque)
                        ts->width, y - y_start);
     }
     g_free(snap);
+    return true;
 }
 
-static void tcx24_update_display(void *opaque)
+static bool tcx24_update_display(void *opaque)
 {
     TCXState *ts = opaque;
     DisplaySurface *surface = qemu_console_surface(ts->con);
@@ -312,6 +313,7 @@ static void tcx24_update_display(void *opaque)
                        ts->width, y - y_start);
     }
     g_free(snap);
+    return true;
 }
 
 static void tcx_invalidate_display(void *opaque)
diff --git a/hw/display/vga.c b/hw/display/vga.c
index 0d69a53f27a..776aa443246 100644
--- a/hw/display/vga.c
+++ b/hw/display/vga.c
@@ -1783,7 +1783,7 @@ static void vga_draw_blank(VGACommonState *s, int full_update)
 #define GMODE_GRAPH    1
 #define GMODE_BLANK 2
 
-static void vga_update_display(void *opaque)
+static bool vga_update_display(void *opaque)
 {
     VGACommonState *s = opaque;
     DisplaySurface *surface = qemu_console_surface(s->con);
@@ -1818,6 +1818,8 @@ static void vga_update_display(void *opaque)
             break;
         }
     }
+
+    return true;
 }
 
 /* force a full display refresh */
diff --git a/hw/display/virtio-gpu-base.c b/hw/display/virtio-gpu-base.c
index cb76302e2d8..94cf362d152 100644
--- a/hw/display/virtio-gpu-base.c
+++ b/hw/display/virtio-gpu-base.c
@@ -83,8 +83,9 @@ static void virtio_gpu_invalidate_display(void *opaque)
 {
 }
 
-static void virtio_gpu_update_display(void *opaque)
+static bool virtio_gpu_update_display(void *opaque)
 {
+    return true;
 }
 
 static void virtio_gpu_text_update(void *opaque, console_ch_t *chardata)
diff --git a/hw/display/virtio-vga.c b/hw/display/virtio-vga.c
index 5e087169f2f..f4713b91a66 100644
--- a/hw/display/virtio-vga.c
+++ b/hw/display/virtio-vga.c
@@ -19,15 +19,15 @@ static void virtio_vga_base_invalidate_display(void *opaque)
     }
 }
 
-static void virtio_vga_base_update_display(void *opaque)
+static bool virtio_vga_base_update_display(void *opaque)
 {
     VirtIOVGABase *vvga = opaque;
     VirtIOGPUBase *g = vvga->vgpu;
 
     if (g->enable) {
-        g->hw_ops->gfx_update(g);
+        return g->hw_ops->gfx_update(g);
     } else {
-        vvga->vga.hw_ops->gfx_update(&vvga->vga);
+        return vvga->vga.hw_ops->gfx_update(&vvga->vga);
     }
 }
 
diff --git a/hw/display/vmware_vga.c b/hw/display/vmware_vga.c
index 2b95787ddfd..c84c84a445e 100644
--- a/hw/display/vmware_vga.c
+++ b/hw/display/vmware_vga.c
@@ -1135,14 +1135,13 @@ static inline void vmsvga_check_size(struct vmsvga_state_s *s)
     }
 }
 
-static void vmsvga_update_display(void *opaque)
+static bool vmsvga_update_display(void *opaque)
 {
     struct vmsvga_state_s *s = opaque;
 
     if (!s->enable || !s->config) {
         /* in standard vga mode */
-        s->vga.hw_ops->gfx_update(&s->vga);
-        return;
+        return s->vga.hw_ops->gfx_update(&s->vga);
     }
 
     vmsvga_check_size(s);
@@ -1154,6 +1153,8 @@ static void vmsvga_update_display(void *opaque)
         s->invalidated = 0;
         dpy_gfx_update_full(s->vga.con);
     }
+
+    return true;
 }
 
 static void vmsvga_reset(DeviceState *dev)
diff --git a/hw/display/xenfb.c b/hw/display/xenfb.c
index ba886a940ee..2e431e27be6 100644
--- a/hw/display/xenfb.c
+++ b/hw/display/xenfb.c
@@ -709,14 +709,14 @@ static void xenfb_send_refresh_period(struct XenFB *xenfb, int period)
  * Our screen might be inactive.  When asked for
  * an update we know it is active.
  */
-static void xenfb_update(void *opaque)
+static bool xenfb_update(void *opaque)
 {
     struct XenFB *xenfb = opaque;
     DisplaySurface *surface;
     int i;
 
     if (xenfb->c.xendev.be_state != XenbusStateConnected)
-        return;
+        return true;
 
     if (!xenfb->feature_update) {
         /* we don't get update notifications, thus use the
@@ -770,6 +770,8 @@ static void xenfb_update(void *opaque)
     }
     xenfb->up_count = 0;
     xenfb->up_fullscreen = 0;
+
+    return true;
 }
 
 static void xenfb_ui_info(void *opaque, uint32_t idx, QemuUIInfo *info)
diff --git a/hw/display/xlnx_dp.c b/hw/display/xlnx_dp.c
index 7d037b46a35..50e6ef10984 100644
--- a/hw/display/xlnx_dp.c
+++ b/hw/display/xlnx_dp.c
@@ -1252,12 +1252,12 @@ static inline void xlnx_dp_blend_surface(XlnxDPState *s)
                            surface_height(s->g_plane.surface));
 }
 
-static void xlnx_dp_update_display(void *opaque)
+static bool xlnx_dp_update_display(void *opaque)
 {
     XlnxDPState *s = XLNX_DP(opaque);
 
     if ((s->core_registers[DP_TRANSMITTER_ENABLE] & 0x01) == 0) {
-        return;
+        return true;
     }
 
     xlnx_dpdma_trigger_vsync_irq(s->dpdma);
@@ -1272,14 +1272,14 @@ static void xlnx_dp_update_display(void *opaque)
          */
         s->core_registers[DP_INT_STATUS] |= (1 << 21);
         xlnx_dp_update_irq(s);
-        return;
+        return true;
     }
 
     if (xlnx_dp_global_alpha_enabled(s)) {
         if (!xlnx_dpdma_start_operation(s->dpdma, 0, false)) {
             s->core_registers[DP_INT_STATUS] |= (1 << 21);
             xlnx_dp_update_irq(s);
-            return;
+            return true;
         }
         xlnx_dp_blend_surface(s);
     }
@@ -1288,6 +1288,8 @@ static void xlnx_dp_update_display(void *opaque)
      * XXX: We might want to update only what changed.
      */
     dpy_gfx_update_full(s->console);
+
+    return true;
 }
 
 static const GraphicHwOps xlnx_dp_gfx_ops = {
diff --git a/hw/vfio/display.c b/hw/vfio/display.c
index 5a42a6f7a29..4a9a58036e3 100644
--- a/hw/vfio/display.c
+++ b/hw/vfio/display.c
@@ -285,7 +285,7 @@ static void vfio_display_free_dmabufs(VFIOPCIDevice *vdev)
     }
 }
 
-static void vfio_display_dmabuf_update(void *opaque)
+static bool vfio_display_dmabuf_update(void *opaque)
 {
     VFIOPCIDevice *vdev = opaque;
     VFIODisplay *dpy = vdev->dpy;
@@ -298,7 +298,7 @@ static void vfio_display_dmabuf_update(void *opaque)
         if (dpy->ramfb) {
             ramfb_display_update(dpy->con, dpy->ramfb);
         }
-        return;
+        return true;
     }
 
     width = qemu_dmabuf_get_width(primary->buf);
@@ -340,6 +340,8 @@ static void vfio_display_dmabuf_update(void *opaque)
     if (free_bufs) {
         vfio_display_free_dmabufs(vdev);
     }
+
+    return true;
 }
 
 static int vfio_display_get_flags(void *opaque)
@@ -399,7 +401,7 @@ void vfio_display_reset(VFIOPCIDevice *vdev)
     dpy_gfx_update_full(vdev->dpy->con);
 }
 
-static void vfio_display_region_update(void *opaque)
+static bool vfio_display_region_update(void *opaque)
 {
     VFIOPCIDevice *vdev = opaque;
     VFIODisplay *dpy = vdev->dpy;
@@ -414,18 +416,18 @@ static void vfio_display_region_update(void *opaque)
     if (ret < 0) {
         error_report("ioctl VFIO_DEVICE_QUERY_GFX_PLANE: %s",
                      strerror(errno));
-        return;
+        return true;
     }
     if (!plane.drm_format || !plane.size) {
         if (dpy->ramfb) {
             ramfb_display_update(dpy->con, dpy->ramfb);
             dpy->region.surface = NULL;
         }
-        return;
+        return true;
     }
     format = qemu_drm_format_to_pixman(plane.drm_format);
     if (!format) {
-        return;
+        return true;
     }
 
     if (dpy->region.buffer.size &&
@@ -476,11 +478,12 @@ static void vfio_display_region_update(void *opaque)
     dpy_gfx_update(dpy->con, 0, 0,
                    surface_width(dpy->region.surface),
                    surface_height(dpy->region.surface));
-    return;
+    return true;
 
 err:
     vfio_region_exit(&dpy->region.buffer);
     vfio_region_finalize(&dpy->region.buffer);
+    return true;
 }
 
 static const GraphicHwOps vfio_display_region_ops = {
diff --git a/ui/console.c b/ui/console.c
index abb6cba2826..a608c29b843 100644
--- a/ui/console.c
+++ b/ui/console.c
@@ -136,15 +136,10 @@ void graphic_hw_update_done(QemuConsole *con)
 
 void graphic_hw_update(QemuConsole *con)
 {
-    bool async = false;
     if (!con) {
         return;
     }
-    if (con->hw_ops->gfx_update) {
-        con->hw_ops->gfx_update(con->hw);
-        async = con->hw_ops->gfx_update_async;
-    }
-    if (!async) {
+    if (!con->hw_ops->gfx_update || con->hw_ops->gfx_update(con->hw)) {
         graphic_hw_update_done(con);
     }
 }
diff --git a/hw/display/apple-gfx.m b/hw/display/apple-gfx.m
index e0a765fcb1f..77d80fb7cef 100644
--- a/hw/display/apple-gfx.m
+++ b/hw/display/apple-gfx.m
@@ -330,25 +330,25 @@ static void apple_gfx_render_frame_completed_bh(void *opaque)
     }
 }
 
-static void apple_gfx_fb_update_display(void *opaque)
+static bool apple_gfx_fb_update_display(void *opaque)
 {
     AppleGFXState *s = opaque;
+    bool done = true;
 
     assert(bql_locked());
     if (s->new_frame_ready) {
         dpy_gfx_update_full(s->con);
         s->new_frame_ready = false;
-        graphic_hw_update_done(s->con);
     } else if (s->pending_frames > 0) {
         s->gfx_update_requested = true;
-    } else {
-        graphic_hw_update_done(s->con);
+        done = false;
     }
+
+    return done;
 }
 
 static const GraphicHwOps apple_gfx_fb_ops = {
     .gfx_update = apple_gfx_fb_update_display,
-    .gfx_update_async = true,
 };
 
 /* ------ Mouse cursor and display mode setting ------ */
-- 
2.53.0



From xen-devel-bounces@lists.xenproject.org Tue Apr 28 08:20:19 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 28 Apr 2026 08:20:19 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1295470.1572114 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wHdfo-0008Js-7z; Tue, 28 Apr 2026 08:20:04 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1295470.1572114; Tue, 28 Apr 2026 08:20: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 1wHdfo-0008Jd-4v; Tue, 28 Apr 2026 08:20:04 +0000
Received: by outflank-mailman (input) for mailman id 1295470;
 Tue, 28 Apr 2026 08:20:02 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <nicola.vetrini@bugseng.com>) id 1wHdfm-00080B-QQ
 for xen-devel@lists.xenproject.org; Tue, 28 Apr 2026 08:20:02 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wHdfm-00F8gL-3L
 for xen-devel@lists.xenproject.org; Tue, 28 Apr 2026 10:20:02 +0200
Received: from [10.42.69.11] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <nicola.vetrini@bugseng.com>)
 id 69f06db0-2eae-0a2a0a5409dd-0a2a450b99de-14
 for <xen-devel@lists.xenproject.org>; Tue, 28 Apr 2026 10:20:02 +0200
Received: from [162.55.131.47] (helo=support.bugseng.com)
 by tlsNG-42698a.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.1)
 (envelope-from <nicola.vetrini@bugseng.com>)
 id 69f06db1-212f-0a2a450b0019-a237832f9f84-3
 for <xen-devel@lists.xenproject.org>; Tue, 28 Apr 2026 10:20:01 +0200
Received: from support.bugseng.com (support.bugseng.com [162.55.131.47])
 (Authenticated sender: nicola)
 by support.bugseng.com (Postfix) with ESMTPA id 1B7464EE3D39;
 Tue, 28 Apr 2026 10:20:01 +0200 (CEST)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-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
Authentication-Results: bugseng.com; arc=none smtp.remote-ip=162.55.131.47
ARC-Seal: i=1; d=bugseng.com; s=openarc; a=rsa-sha256; cv=none; t=1777364401;
	b=HWzt/s1yxEd2Q6Re/20+f3aIl2DaWobEFjkYwCljd5Prwgeva6WijAmqoWYQJ7HuryV2
	 GMT1sCTk9KK+a7hsR2sVtof5qGtSrnsrAkDHItlmlrk7zF1AXzPXTtcvBWThN27vhsOfn
	 N3UmfIT7pXnMfrlw+yIqTdbgiE5DyS1VlH1qZktD0CCBXxlys8rwEG9+/pz0XObSDb+44
	 eS/y6Kbwvyhvc/xWLBhXueNw1zEPRpEJbsJHfm5+AgvtsDThP13SAa/JRtZ5wWZxxkbj7
	 ZLI9WfWJV1pzIkcZAGBIDPFv5XfvTub9u5yJkw/AjZc35Wl4/47PIg1frBVfrqoWXRbqf
	 YckJgS5ppIaSKFtvaPA5fn/6+CCIuPr3V7wxBaEBsVRiG6d7gptnzfVvespwO9YXb5mSf
	 f7mo4d2ygEfpdmyNQwHCmgT+WkJOFSQoMXV5YJusqLRvaFPbUM9UmRpy9LdLNrRe/0kuc
	 Rjr0NVhlIQCvB5TwZn5DJeRfJlx6C8q0KGQD+I20dYAWnC+wqup6ACL/sME0Qdel0mGmW
	 5lG0ZXDQwAERLS6la4uVix3Fr3H8YxSzPpNJ6poxqFmna0wJsaRyro0NKFftxuaMcoQSs
	 rWsTYCRgnoU5QT2nE+l5HkY5x/GW6ecwUi5kb7O4qiHww3yknBN2chGG6Zx1+Sw=
ARC-Message-Signature: i=1; d=bugseng.com; s=openarc; a=rsa-sha256;
	c=relaxed/relaxed; t=1777364401;
	h=MIME-Version:Date:From:To:Cc:Subject:In-Reply-To:References:
	 Message-ID:X-Sender:Organization:Content-Type:
	 Content-Transfer-Encoding;
	bh=vZ/d8dW13BwV9iBbLeQFHYLNppK60PCdRQMXTOBjpUs=;
	b=dLc0Wsg7YzkorDREyDMb62JHHbhj0Y54vIXJp+mNlNJUCXX35w4WuPKNdB+jdy0c+Pdr
	 fqLgiMga56b/1o5xCcvM7UIcH72vjXoIsgphRX09SD8egOx2mfXg80FiHO/MOdo3idT0z
	 JLRbph22LqoGQvwfQG9h7WwEfsJKGF0If0nXyxsZwgTrM3P7m4ejGtmvFZxUDR7dB6cop
	 5SbxUTlsdkjHLHQQs663dUtb5LJMmGpd5k829iS/++M94EhwEjhUvJUPwWn0DvZfTgkdA
	 gGAwtXrSi6T4yhIFieZ1X2RqZrjfKehgPOdQH5AWSrIBY0S1BTHdw1Vy73YxdW4J3frBD
	 FoSUqV/0/uIZSpdTf64Cw8YO6kFHmF7/GpGzXf+m+O0oI356UX5kaIzfyXdXpzZ0vjQlI
	 WAFLsfx07ug2GVNkhE2/M2ZfXk6r0V/gGo5a6p8qIqicnzRscSSKAlLPsNg7qzdxFBz0V
	 rTeW5xG/qYpqFrmzwET8OR3F5NMocJJyEKdVNTTd93LBq0CRPaFjUjFqmh+bIfFmcJnms
	 ziTXMEdvNQd9+jWp8rGTiSIrtyM4qmZKUizPFzF1rp7F+NsbxHYaFCUQYLYfHmXOHerKN
	 mb4Us2uwuNL/Ee5menpb06ez4WEglQMk3Hg63P2C7SifxVDwLJo/codlr5oQNeM=
ARC-Authentication-Results: i=1; bugseng.com; arc=none smtp.remote-ip=162.55.131.47
MIME-Version: 1.0
Date: Tue, 28 Apr 2026 10:20:01 +0200
From: Nicola Vetrini <nicola.vetrini@bugseng.com>
To: Michal Orzel <michal.orzel@amd.com>
Cc: xen-devel@lists.xenproject.org, Doug Goldstein <cardoe@cardoe.com>,
 Stefano Stabellini <sstabellini@kernel.org>, Julien Grall <julien@xen.org>,
 Bertrand Marquis <bertrand.marquis@arm.com>, Luca Fancellu
 <luca.fancellu@arm.com>
Subject: Re: [PATCH v2] xen/dt-overlay: support phandle-based targeting in
 overlay_get_nodes_info
In-Reply-To: <20260428080218.19371-1-michal.orzel@amd.com>
References: <20260428080218.19371-1-michal.orzel@amd.com>
Message-ID: <2f9875a8a1f4d85ddceccb2d093a4951@bugseng.com>
X-Sender: nicola.vetrini@bugseng.com
Organization: BUGSENG s.r.l.
Content-Type: text/plain; charset=US-ASCII;
 format=flowed
Content-Transfer-Encoding: 7bit
X-purgate-ID: tlsNG-42698a/1777364401-7FF7EF3B-BDC321F9/0/0
X-purgate-type: clean
X-purgate-size: 3123

On 2026-04-28 10:02, Michal Orzel wrote:
> overlay_get_nodes_info() is called before fdt_overlay_apply() to 
> extract
> target paths from the overlay. This fails for overlays using 
> phandle-based
> targeting (target = <&label>) because DTC compiles these as unresolved
> fixups (target = <0xffffffff>), causing fdt_overlay_target_offset() to
> return -FDT_ERR_BADPHANDLE. Prior to this change users were forced to
> manually modify the dtbo (even for hwdom) to switch from target to
> target-phandle by manually inspecting also the host DTB.
> 
> Introduce overlay_get_target_path() which directly handles the two
> targeting cases that occur before fixup resolution:
>  - target-path: the string property is returned directly.
>  - target = <&label>: the label is found in the overlay's __fixups__
>    node, then resolved to a path via the base DTB's __symbols__ node.
> 
> Libfdt fdt_for_each_property_offset() violates MISRA R20.7. Despite
> libfdt being excluded from the analysis, this causes ECLAIR scan to
> report a regression because the violation introduced by a macro is
> reported at the call site. Deviate R20.7 for libfdt.h.
> 
> Reviewed-by: Luca Fancellu <luca.fancellu@arm.com>
> Acked-by: Stefano Stabellini <sstabellini@kernel.org>
> Signed-off-by: Michal Orzel <michal.orzel@amd.com>
> ---
> In my pre-push testing I realized ECLAIR allcode reported a violation 
> related to
> the use of fdt_for_each_property_offset. Libfdt is excluded from 
> analysis but
> this does not apply to e.g. macros used in other places.
> 
> Changes in v2:
>  - strip out from series that is ready to be committed
>  - deviate 20.7 for libfdt.h. Discussed with Nicole.
> 
> https://gitlab.com/xen-project/people/morzel/xen/-/pipelines/2484326830
> ---
>  .../eclair_analysis/ECLAIR/deviations.ecl     |  1 +
>  xen/common/device-tree/dt-overlay.c           | 65 +++++++++++++++++--
>  2 files changed, 60 insertions(+), 6 deletions(-)
> 
> diff --git a/automation/eclair_analysis/ECLAIR/deviations.ecl 
> b/automation/eclair_analysis/ECLAIR/deviations.ecl
> index 30c323906924..5f0b73062474 100644
> --- a/automation/eclair_analysis/ECLAIR/deviations.ecl
> +++ b/automation/eclair_analysis/ECLAIR/deviations.ecl
> @@ -631,6 +631,7 @@ not in scope for compliance are allowed, as that is 
> imported code."
>  -file_tag+={acpi_cpu_idle, "^xen/arch/x86/acpi/cpu_idle\\.c$"}
>  -config=MC3A2.R20.7,reports+={safe, 
> "any_area(any_loc(file(gnu_efi_include)||any_exp(macro(^NextMemoryDescriptor$))))"}
>  -config=MC3A2.R20.7,reports+={safe, 
> "any_area(any_loc(file(acpi_cpu_idle)))"}
> +-config=MC3A2.R20.7,reports+={safe, 
> "any_area(any_loc(any_exp(file(^xen/include/xen/libfdt/libfdt.h$))))"}
>  -doc_end
> 

Nit: I think using a file_tag as above is better, but in any case use 
libfdt\\.h in the regex

>  -doc_begin="To avoid compromising readability, the macros 
> alternative_(v)?call[0-9] are allowed


-- 
Nicola Vetrini, B.Sc.
Software Engineer
BUGSENG (https://bugseng.com)
LinkedIn: https://www.linkedin.com/in/nicola-vetrini-a42471253


From xen-devel-bounces@lists.xenproject.org Tue Apr 28 09:06:29 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 28 Apr 2026 09:06:29 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1295491.1572160 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wHeOJ-0006s6-WA; Tue, 28 Apr 2026 09:06:03 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1295491.1572160; Tue, 28 Apr 2026 09:06: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 1wHeOJ-0006rz-T0; Tue, 28 Apr 2026 09:06:03 +0000
Received: by outflank-mailman (input) for mailman id 1295491;
 Tue, 28 Apr 2026 09:06:02 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <roger.pau@citrix.com>) id 1wHeOI-0006rr-0N
 for xen-devel@lists.xenproject.org; Tue, 28 Apr 2026 09:06:02 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wHeOH-0019Aq-Ak
 for xen-devel@lists.xenproject.org; Tue, 28 Apr 2026 11:06:01 +0200
Received: from [10.42.69.2] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <roger.pau@citrix.com>)
 id 69f07876-e002-0a2a0a5209dd-0a2a45029412-18
 for <xen-devel@lists.xenproject.org>; Tue, 28 Apr 2026 11:06:01 +0200
Received: from [52.101.56.46]
 (helo=BN1PR04CU002.outbound.protection.outlook.com)
 by tlsNG-720697.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.1)
 (envelope-from <roger.pau@citrix.com>)
 id 69f07877-af86-0a2a45020019-3465382ecaa1-4
 for <xen-devel@lists.xenproject.org>; Tue, 28 Apr 2026 11:06:00 +0200
Received: from CH7PR03MB7860.namprd03.prod.outlook.com (2603:10b6:610:24e::14)
 by SA5PR03MB8477.namprd03.prod.outlook.com (2603:10b6:806:47a::7)
 with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9846.26; Tue, 28 Apr
 2026 09:05:57 +0000
Received: from CH7PR03MB7860.namprd03.prod.outlook.com
 ([fe80::f5ba:35df:1c9f:b343]) by CH7PR03MB7860.namprd03.prod.outlook.com
 ([fe80::f5ba:35df:1c9f:b343%4]) with mapi id 15.20.9846.025; Tue, 28 Apr 2026
 09:05: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=fqZABbfnLJHhR20sWDtKySTjjOzJphmaTjsMrZzfrugVJBXg7lCub1x6rYwseNixSpo92FG28LKF1YdkltAY6qEVR5UN8wOC/651ZwY4QimWXTtstmsHM+Olk8Anpjj4iAAqSpOiLUu4/vFQn+GdWaxCYVkWPsO2e11YqnipwJz/bBReqZ2LLHyS63394+7BRyruoDXpDaPtAXTRyJ736QTJGEFLON9GovNym/E/xHSxx7iBKVnetWicKEaY7TJBtPj02lmKV2bWaqQHeHip/GT2Jajg2X/Ffh8rPNagOtI3LHLI2MjFc08TiM13KlPb+0HCJhDxou7hu2uwZevCSA==
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com;
 s=arcselector10001;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1;
 bh=6vDDNiIKsmcKALdOpS+E9Ym58fArODipZkkixjnxWOk=;
 b=HxJD3bb6z7ysiwyTBZmym23n4YpERGQfrxV3T2KaiOXR44EAY8JIB1jY4k4ZP4aKqwEhtNcaKtmHTHPzxrpM5F4Oe/Jj+zEHZCWkkXthXPalVhVNsQqc/qv/FAQ1j9Zzum2VxO4IHPlKVeXVP/RqmW+Wrur60ey8vaW6oBAPLiHm6bnHQ8jrkWRQDXB7BMb0pFAliOA9nghDV+prhAFO8ssPANko8js3Hhb/NlYUA+mOvqYGqnTaLGZu+nSshC04Rkq1rCNbORoQ1KaP7Bp21FOBEeC4A4Eg2wkFvVTOrzY8zP4rCoqaQytTwzhoPxV4u3aBIW815sMi0Nz3lb+4XQ==
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=6vDDNiIKsmcKALdOpS+E9Ym58fArODipZkkixjnxWOk=;
 b=Jh5dyKL3W8WKoHP9amBgh83PCUM27mCZBWLOebc8GH2r+AP6N6n9Z4yD7ZVvjO/Y0lePXznzf6fmEoBkPAwFuEVJUbYkIIuF7doeF1tZGzgZGKJlh4YuJn0syHq3AEyzpzv+Mg6nA/+sG4kkeburlb1tnC9ZOBJBlze7jtvaKtQ=
Authentication-Results: dkim=none (message not signed)
 header.d=none;dmarc=none action=none header.from=citrix.com;
Date: Tue, 28 Apr 2026 11:05:53 +0200
From: Roger Pau =?utf-8?B?TW9ubsOp?= <roger.pau@citrix.com>
To: Thierry Escande <thierry.escande@vates.tech>
Cc: xen-devel@lists.xenproject.org, Jan Beulich <jbeulich@suse.com>,
	Andrew Cooper <andrew.cooper3@citrix.com>,
	Anthony PERARD <anthony.perard@vates.tech>
Subject: Re: [PATCH 01/17] libacpi: Split dsdt.asl file and extract i440
 specific parts
Message-ID: <afB4cc8wI__auaJu@macbook.local>
References: <20260313163455.790692-1-thierry.escande@vates.tech>
 <20260313163455.790692-2-thierry.escande@vates.tech>
Content-Type: text/plain; charset=utf-8
Content-Disposition: inline
In-Reply-To: <20260313163455.790692-2-thierry.escande@vates.tech>
X-ClientProxiedBy: MR1P264CA0150.FRAP264.PROD.OUTLOOK.COM
 (2603:10a6:501:54::6) To CH7PR03MB7860.namprd03.prod.outlook.com
 (2603:10b6:610:24e::14)
MIME-Version: 1.0
X-MS-PublicTrafficType: Email
X-MS-TrafficTypeDiagnostic: CH7PR03MB7860:EE_|SA5PR03MB8477:EE_
X-MS-Office365-Filtering-Correlation-Id: c37216cd-7573-4df4-0ff6-08dea5055bfd
X-MS-Exchange-SenderADCheck: 1
X-MS-Exchange-AntiSpam-Relay: 0
X-Microsoft-Antispam:
	BCL:0;ARA:13230040|1800799024|366016|376014|22082099003|18002099003|56012099003;
X-Microsoft-Antispam-Message-Info:
	04SisD8vobZzwvnvMSF0Kg1lkKwWVMzsBQ41wq1cXtwP7L2D2UkUZhMo7kTkl5Tlse+Snc+FBgbTJ+NfTftu/AGT6f5glvXQkzeC7DNxWfJjRPNirjvDAQEF3HJQaxvmcqCURED4uR1CCrWGojq9+Z26Tp6lfKf9+QK/UrasOnysHiFSpNbaAFA7o7FM8sl/I426MhSMOn7DzXAuEU3A5dH04vi9NFh+IGss7DOdypYATnsqFZ5n4mD8jac/8UFMsO30yudEfMBJSMsxcjCzbwui8e5FAPLouib/fCr6USKkPPhnu2448aZXBCTBqXyffTGSqWtnQBQiU+wbTBj7pLBMCiXJYkbTA5wioQUF99225YfzVmYm+yI9jcZ9cLqpthzOdsLEgJWJmkhqGlJt1YTu0W6ojt9UJX0lwPf3ssmEVIPBcgjKndW9dIHjxf+nWUi6dqxn8ogRFtQtV03lryqnc5acZ38PncWPKAM3+TMlWIyRta1GKp3L3MVqDskOjYyHHiXmZVpDcPHriEEl7g8ry9MLIBXy2rfOZfi6MJ34CRKxgwMoBMRKiRas0fQ4gGk9ThL3jO4c8e9vRxaK9bUMLXF2UFfACb3Mr0Cc1qagvelM6DjPDPjK4yW5Dg6AwvJo4MawJ+kHf02ZhVoUYSCj8K/fo26FKEgfVon3Q1iwy2l5u8+L+plUdsC7eJHR
X-Forefront-Antispam-Report:
	CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:CH7PR03MB7860.namprd03.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(1800799024)(366016)(376014)(22082099003)(18002099003)(56012099003);DIR:OUT;SFP:1101;
X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1
X-MS-Exchange-AntiSpam-MessageData-0:
	=?utf-8?B?YkgydFBQdUc3SzdVa0Z0UDdBOWtSblZtRnBzSFY4T254OTZTOWdaK3dCZE5N?=
 =?utf-8?B?VkJ0LzVVeE01dXFXWUhYdE9PZStvMHlQbHhMN0wreW1jMVBkZXkzYytoUzBE?=
 =?utf-8?B?cSs3RUxlZE95NXdob21aYjhLbSt0Y3M1cStsTmhwQU5VcENrblRUK1hRbWFO?=
 =?utf-8?B?QVROWFN0eU1DUUJlajlEMDZaSVRJNDhaZVRTanY0OGhqaFlmSTJYVEFFeStp?=
 =?utf-8?B?T0pTQUt2RndNQUtoV1NGYU5RUVVSb3ZzL0NhM0RQY1FFaksxcDR3WFZzM1FF?=
 =?utf-8?B?bnpzN2ZHdVM1Wm9VREtLSk9vU25WT3lHT056V1NHZUkycHM0Sm14TjNaK1hl?=
 =?utf-8?B?L3FLYUhDL0xiT3JEdmNwY2dURmNqSW5TWUlsOXNhdUFJTmhaMldiVHgxQng4?=
 =?utf-8?B?RkJYcTR6eW1xZkRyRnNuNE5lYlYwTDdQNWFLdGI0VUhjSE10bUorUHp1U1dx?=
 =?utf-8?B?UUp5RlhvQUlWcGFySjlJSUNoc3JiMEZDMnBOSVZDRjRMWmhOREsvTTJtNDJD?=
 =?utf-8?B?QVgxd3RjK04vSTMyOG9zZVZMTStBYUJSaW1HL0NMRFpSanAwUGJhMElkTnJh?=
 =?utf-8?B?dEdmbXNxZk1Ya3E3TzFVOUtnTXpHNFRkUXplYzU0ZXhLVU5DeDFQVHZoWTAx?=
 =?utf-8?B?UmVHRytnalRzQjJVZG01Z0pwUEFHQ0ZKTnp5NjlzbzFudFVXU013eEp1cE5P?=
 =?utf-8?B?S1dBeHR0NWdaeTh4ekVUSnNqcFFwV3QrZjZKR0tZd0NGQ2NTZDBkcXBYNEFH?=
 =?utf-8?B?VnVnYWp0ZGdhdDl3dkZ0c2taNnFMd0VmcmdVUVdNYjZJaWQxdlQzNFZzZEty?=
 =?utf-8?B?V3N6Y2tUemRDVTAvU0FFcjBsZHpjMWpFWkk0bVBnTllhTEE3OXpnZkh4ZVhQ?=
 =?utf-8?B?VEU5NGk4K08vbjZtTXdpbiswZWgxWGxJMHZqanpMODBSamFLRHR5R3dKcjNu?=
 =?utf-8?B?U0c5NGhSRmdGSERYVDN4WjlTM3RXM05TK25XV25yUG9wc2hDYzF6eUVXaVU4?=
 =?utf-8?B?SFBMemlQZGJDcUFQLzErZDVjbzBvL3dYS2lxZ254dzRJM0paUjk4MWh2Rm9G?=
 =?utf-8?B?QUVvQjgvRjJESUtSNkw2YU1lRjRFN0Y0TWJhai9Wdi9UbEdRY2JoRjZ2UEtV?=
 =?utf-8?B?dm9odUM3SlpjeDZUemliN3NFRitHa1JyQVdLdEJKeWNqUXB2RUNHRjRyaWJB?=
 =?utf-8?B?UWtwRTlUSFlmVFA4UzhsUzV5cGN6UGRKVW1WQWFWZ1dNV1ovdWhLdlZNWFhC?=
 =?utf-8?B?T2FLSTRDVzZOZ0tZS0RVejVKcWlHTDB6OU9Rc3F3dGVScysrbXdFcktCc2gz?=
 =?utf-8?B?OEFjd3BwamFjd0lpeWVwZVFwa0YwdnNodHA2YUQrQlJGWEk4bFdCT09RNkNz?=
 =?utf-8?B?cG5XdCtoTXNwNU0zV0h5VEpZQUhqQlJ2VHBjUW1uMVBjV3BKelJ6RDUwUzdy?=
 =?utf-8?B?VWRSeTBuaDJabnZkd2VRWStxVTZiTlE0enVnMUVwNk1LRk5BQ09PUFdNKzdk?=
 =?utf-8?B?bnhkV1ZOM0JpMy9vRWVxeHRQQTVXQm1sM0xPOTdjbmgwS282WnpDWkVmaUIx?=
 =?utf-8?B?cHUzM3o1UXdLNEpOdFBReU5QYXBDQXJoVUxUTEovd3N3TGJYcTU5cEEya0hw?=
 =?utf-8?B?NkVjY0pkeDNnN2x1aisrRmd4K2h0NHUyWVprcXZnd3pLUFNkMHZsVUp1VjN2?=
 =?utf-8?B?RFZvQytuWmJacVhNVWFjNHZDNjBIdkxIcWp3MzdySGlRQVN3SkNnUGlnU29k?=
 =?utf-8?B?ekNLSmhjVmxXZHBxaDB6bzFoeDFRSUg0TXlPYVkvUFNQUzNOMGNSN2l2eDl0?=
 =?utf-8?B?Q0hadmQ5VHRWdEFJZzUwektvb3NQTWduZ3hheXhOTGRoYUhpeUZoK3NMSnpa?=
 =?utf-8?B?cmNURTJiR3NwODJySHcrM2NGbzVGVUVwTmtxaUlISWNxNjZmZlNwQVN0WkhS?=
 =?utf-8?B?bzZlOEs4OXAvWkRrOCtGUzRFbERUUmQrcFlyMFp0MjV1VVMxUlE1MWlMOVly?=
 =?utf-8?B?cmFLMXVuTmNva3BNdnNDNDRQdTBRdFc4RW1KQURhRk1tUU1EK0s2OWlITHVq?=
 =?utf-8?B?eWV4a3BlaGtwWDJaOWZzam51dG1oZU0vOWYzZ1FoeG5hc2ZnaFNjZ3I5NWRT?=
 =?utf-8?B?RWl1TVRLVVpGakNwMUZwNndTcUlTRnhDTUpMVHc1QkdCblgxclkyMlBHVGhQ?=
 =?utf-8?B?NmhNL0NjaVplaDBRTXB0Zm9iMFBpWlZHQ0NodEU2a2JxZGFRWnRtOWlNOFd4?=
 =?utf-8?B?ZUN4ZmpEd2poRW1nbUxBajNTTldFWlF2YkdWTU1XYnk3Yy94aVRMeGVIZ20z?=
 =?utf-8?B?TUV4RFdDeXlER0pEQ2lJRElDWmRsSjNxNEh4cGNTM2ZBbnd3ZTlQQT09?=
X-OriginatorOrg: citrix.com
X-MS-Exchange-CrossTenant-Network-Message-Id: c37216cd-7573-4df4-0ff6-08dea5055bfd
X-MS-Exchange-CrossTenant-AuthSource: CH7PR03MB7860.namprd03.prod.outlook.com
X-MS-Exchange-CrossTenant-AuthAs: Internal
X-MS-Exchange-CrossTenant-OriginalArrivalTime: 28 Apr 2026 09:05:57.3938
 (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: rTBhBKr48Pid/QT81pOJ5PrgtyXzSATA7MG4DXgUU3g3NvjaEc4Xd7rIE46z+80n5aucizAt6WeuTBYtD4m9JA==
X-MS-Exchange-Transport-CrossTenantHeadersStamped: SA5PR03MB8477
X-purgate-ID: tlsNG-720697/1777367161-B3D67161-D0B8D5FE/0/0
X-purgate-type: clean
X-purgate-size: 11277

On Fri, Mar 13, 2026 at 04:35:01PM +0000, Thierry Escande wrote:
> In order to factorize the common parts between i440 and q35 dsdt files,
> this patch splits dsdt.asl and put the i440 specific parts into
> dsdt_i400.asl.
> 
> This also makes use of #include directives instead of file
> concatenations to build the asl files.
> 
> Also, the anycpu asl files generation makes use of makefile pattern
> rules to avoid duplication for i440 and q35.
> 
> Becuase the LPC controller BDF (which differs between i440 and q35) must

s/Becuase/Because/

> be set at device declaration, it is still set in dsdt.asl by checking
> for a MACHINE_TYPE_I440 macro defined in dsdt_i400.asl.

s/i400/i440/

> Signed-off-by: Thierry Escande <thierry.escande@vates.tech>
> ---
>  tools/firmware/hvmloader/Makefile  |  2 +-
>  tools/firmware/hvmloader/ovmf.c    |  4 ++--
>  tools/firmware/hvmloader/seabios.c |  4 ++--
>  tools/firmware/hvmloader/util.c    |  4 ++--
>  tools/firmware/hvmloader/util.h    |  4 ++--
>  tools/libacpi/Makefile             | 10 ++++-----
>  tools/libacpi/dsdt.asl             | 25 ++++-----------------
>  tools/libacpi/dsdt_i440.asl        | 36 ++++++++++++++++++++++++++++++
>  8 files changed, 53 insertions(+), 36 deletions(-)
>  create mode 100644 tools/libacpi/dsdt_i440.asl
> 
> diff --git a/tools/firmware/hvmloader/Makefile b/tools/firmware/hvmloader/Makefile
> index 21de72187d..bdc33a877f 100644
> --- a/tools/firmware/hvmloader/Makefile
> +++ b/tools/firmware/hvmloader/Makefile
> @@ -78,7 +78,7 @@ rombios.o: roms.inc
>  smbios.o: CFLAGS += -D__SMBIOS_DATE__="\"$(SMBIOS_REL_DATE)\""
>  
>  ACPI_PATH = ../../libacpi
> -DSDT_FILES += dsdt_anycpu_qemu_xen.c
> +DSDT_FILES += dsdt_i440_anycpu_qemu_xen.c
>  ACPI_OBJS = $(patsubst %.c,%.o,$(DSDT_FILES)) build.o static_tables.o
>  $(ACPI_OBJS): CFLAGS += -iquote . -DLIBACPI_STDUTILS=\"$(CURDIR)/util.h\"
>  CFLAGS += -I$(ACPI_PATH)
> diff --git a/tools/firmware/hvmloader/ovmf.c b/tools/firmware/hvmloader/ovmf.c
> index 23610a0717..d264a50c73 100644
> --- a/tools/firmware/hvmloader/ovmf.c
> +++ b/tools/firmware/hvmloader/ovmf.c
> @@ -119,8 +119,8 @@ static void ovmf_load(const struct bios_config *config,
>  static void ovmf_acpi_build_tables(void)
>  {
>      struct acpi_config config = {
> -        .dsdt_anycpu = dsdt_anycpu_qemu_xen,
> -        .dsdt_anycpu_len = dsdt_anycpu_qemu_xen_len,
> +        .dsdt_anycpu = dsdt_i440_anycpu_qemu_xen,
> +        .dsdt_anycpu_len = dsdt_i440_anycpu_qemu_xen_len,
>          .dsdt_15cpu = NULL, 
>          .dsdt_15cpu_len = 0
>      };
> diff --git a/tools/firmware/hvmloader/seabios.c b/tools/firmware/hvmloader/seabios.c
> index 444d118ddb..74b0406b5a 100644
> --- a/tools/firmware/hvmloader/seabios.c
> +++ b/tools/firmware/hvmloader/seabios.c
> @@ -90,8 +90,8 @@ static void seabios_acpi_build_tables(void)
>  {
>      uint32_t rsdp = (uint32_t)scratch_alloc(sizeof(struct acpi_20_rsdp), 0);
>      struct acpi_config config = {
> -        .dsdt_anycpu = dsdt_anycpu_qemu_xen,
> -        .dsdt_anycpu_len = dsdt_anycpu_qemu_xen_len,
> +        .dsdt_anycpu = dsdt_i440_anycpu_qemu_xen,
> +        .dsdt_anycpu_len = dsdt_i440_anycpu_qemu_xen_len,
>          .dsdt_15cpu = NULL,
>          .dsdt_15cpu_len = 0,
>      };
> diff --git a/tools/firmware/hvmloader/util.c b/tools/firmware/hvmloader/util.c
> index e651342681..f1ed1eb48d 100644
> --- a/tools/firmware/hvmloader/util.c
> +++ b/tools/firmware/hvmloader/util.c
> @@ -843,8 +843,8 @@ void hvmloader_acpi_build_tables(struct acpi_config *config,
>      s = xenstore_read("platform/device-model", "");
>      if ( !strncmp(s, "qemu_xen", 9) )
>      {
> -        config->dsdt_anycpu = dsdt_anycpu_qemu_xen;
> -        config->dsdt_anycpu_len = dsdt_anycpu_qemu_xen_len;
> +        config->dsdt_anycpu = dsdt_i440_anycpu_qemu_xen;
> +        config->dsdt_anycpu_len = dsdt_i440_anycpu_qemu_xen_len;
>          config->dsdt_15cpu = NULL;
>          config->dsdt_15cpu_len = 0;
>      }
> diff --git a/tools/firmware/hvmloader/util.h b/tools/firmware/hvmloader/util.h
> index 765a013ddd..3c5eeff5e7 100644
> --- a/tools/firmware/hvmloader/util.h
> +++ b/tools/firmware/hvmloader/util.h
> @@ -381,8 +381,8 @@ extern struct e820map memory_map;
>  bool check_overlap(uint64_t start, uint64_t size,
>                     uint64_t reserved_start, uint64_t reserved_size);
>  
> -extern const unsigned char dsdt_anycpu_qemu_xen[], dsdt_anycpu[], dsdt_15cpu[];
> -extern const int dsdt_anycpu_qemu_xen_len, dsdt_anycpu_len, dsdt_15cpu_len;
> +extern const unsigned char dsdt_i440_anycpu_qemu_xen[], dsdt_anycpu[], dsdt_15cpu[];
> +extern const int dsdt_i440_anycpu_qemu_xen_len, dsdt_anycpu_len, dsdt_15cpu_len;

While there you can make this unsigned int, like the dsdt_anycpu_len
field.

>  
>  unsigned long acpi_pages_allocated(void);
>  
> diff --git a/tools/libacpi/Makefile b/tools/libacpi/Makefile
> index b21a64c6b4..d3d4bc9543 100644
> --- a/tools/libacpi/Makefile
> +++ b/tools/libacpi/Makefile
> @@ -11,7 +11,7 @@ endif
>  
>  MK_DSDT = $(ACPI_BUILD_DIR)/mk_dsdt
>  
> -C_SRC-$(CONFIG_X86) = dsdt_anycpu.c dsdt_15cpu.c dsdt_anycpu_qemu_xen.c dsdt_pvh.c
> +C_SRC-$(CONFIG_X86) = dsdt_anycpu.c dsdt_15cpu.c dsdt_i440_anycpu_qemu_xen.c dsdt_pvh.c
>  C_SRC-$(CONFIG_ARM_64) = dsdt_anycpu_arm.c
>  DSDT_FILES ?= $(C_SRC-y)
>  C_SRC = $(addprefix $(ACPI_BUILD_DIR)/, $(DSDT_FILES))
> @@ -39,18 +39,16 @@ $(H_SRC): $(ACPI_BUILD_DIR)/%.h: %.asl
>  $(MK_DSDT): mk_dsdt.c
>  	$(HOSTCC) $(HOSTCFLAGS) $(MKDSDT_CFLAGS-y) $(CFLAGS_xeninclude) -D__XEN_TOOLS__ -o $@ mk_dsdt.c
>  
> -$(ACPI_BUILD_DIR)/dsdt_anycpu_qemu_xen.asl: dsdt.asl dsdt_acpi_info.asl $(MK_DSDT)
> +$(ACPI_BUILD_DIR)/dsdt_%_anycpu_qemu_xen.asl: dsdt_%.asl dsdt.asl dsdt_acpi_info.asl $(MK_DSDT)
>  	# Remove last bracket
>  	awk 'NR > 1 {print s} {s=$$0}' $< > $@.$(TMP_SUFFIX)
> -	cat dsdt_acpi_info.asl >> $@.$(TMP_SUFFIX)
>  	$(MK_DSDT) --debug=$(debug) --dm-version qemu-xen >> $@.$(TMP_SUFFIX)
>  	mv -f $@.$(TMP_SUFFIX) $@
>  
>  # NB. awk invocation is a portable alternative to 'head -n -1'
> -$(ACPI_BUILD_DIR)/dsdt_%cpu.asl: dsdt.asl dsdt_acpi_info.asl  $(MK_DSDT)
> +$(ACPI_BUILD_DIR)/dsdt_%cpu.asl: dsdt_i440.asl dsdt.asl dsdt_acpi_info.asl  $(MK_DSDT)
>  	# Remove last bracket
>  	awk 'NR > 1 {print s} {s=$$0}' $< > $@.$(TMP_SUFFIX)
> -	cat dsdt_acpi_info.asl >> $@.$(TMP_SUFFIX)
>  	$(MK_DSDT) --debug=$(debug) --maxcpu $*  >> $@.$(TMP_SUFFIX)
>  	mv -f $@.$(TMP_SUFFIX) $@
>  
> @@ -65,7 +63,7 @@ $(ACPI_BUILD_DIR)/dsdt_anycpu_arm.asl: $(MK_DSDT)
>  	mv -f $@.$(TMP_SUFFIX) $@
>  
>  $(C_SRC): $(ACPI_BUILD_DIR)/%.c: $(ACPI_BUILD_DIR)/%.asl
> -	$(IASL) -vs -p $(ACPI_BUILD_DIR)/$*.$(TMP_SUFFIX) -tc $<
> +	$(IASL) -vs -I $(CURDIR) -p $(ACPI_BUILD_DIR)/$*.$(TMP_SUFFIX) -tc $<
>  	sed -e 's/AmlCode/$*/g' -e 's/_aml_code//g' $(ACPI_BUILD_DIR)/$*.hex > $@.$(TMP_SUFFIX)
>  	echo "int $*_len=sizeof($*);" >> $@.$(TMP_SUFFIX)
>  	mv -f $@.$(TMP_SUFFIX) $@
> diff --git a/tools/libacpi/dsdt.asl b/tools/libacpi/dsdt.asl
> index 32b42f85ae..130826fdcc 100644
> --- a/tools/libacpi/dsdt.asl
> +++ b/tools/libacpi/dsdt.asl
> @@ -5,8 +5,6 @@
>   * Copyright (c) 2004, Intel Corporation.
>   */
>  
> -DefinitionBlock ("DSDT.aml", "DSDT", 2, "Xen", "HVM", 0)
> -{
>      Name (\PMBS, 0x0C00)
>      Name (\PMLN, 0x08)
>      Name (\IOB1, 0x00)
> @@ -199,7 +197,10 @@ DefinitionBlock ("DSDT.aml", "DSDT", 2, "Xen", "HVM", 0)
>  
>              Device (ISA)
>              {
> -                Name (_ADR, 0x00010000) /* device 1, fn 0 */
> +                /* Error will be raised if the machine type is not defined */
> +                #ifdef MACHINE_TYPE_I440
> +                    Name (_ADR, 0x00010000) /* device 1, fn 0 */
> +                #endif

I think we want the preprocessor directives not indented the same as
asl code, like we do in C, iow:

            Device (ISA)
            {
                /* Error will be raised if the machine type is not defined */
#ifdef MACHINE_TYPE_I440
                Name (_ADR, 0x00010000) /* device 1, fn 0 */
#endif

Same with the includes and defines below.

>  
>                  OperationRegion(PIRQ, PCI_Config, 0x60, 0x4)
>                  Scope(\) {
> @@ -329,23 +330,6 @@ DefinitionBlock ("DSDT.aml", "DSDT", 2, "Xen", "HVM", 0)
>                      })
>                  }
>  
> -                Device (FDC0)
> -                {
> -                    Name (_HID, EisaId ("PNP0700"))
> -                    Method (_STA, 0, NotSerialized)
> -                    {
> -                          Return (0x0F)
> -                    }
> -
> -                    Name (_CRS, ResourceTemplate ()
> -                    {
> -                        IO (Decode16, 0x03F0, 0x03F0, 0x01, 0x06)
> -                        IO (Decode16, 0x03F7, 0x03F7, 0x01, 0x01)
> -                        IRQNoFlags () {6}
> -                        DMA (Compatibility, NotBusMaster, Transfer8) {2}
> -                    })
> -                }

I need to look at the Q35 changes, but ff the only differences are the
Name() method at the top and this, we might as well use an #ifdef
here, and there's no need to split into so many separate files?  I
need to look at further patches.

The ACPI table generation stuff could certainly do with an overall
rework.

>                  Device (UAR1)
>                  {
>                      Name (_HID, EisaId ("PNP0501"))
> @@ -444,4 +428,3 @@ DefinitionBlock ("DSDT.aml", "DSDT", 2, "Xen", "HVM", 0)
>      Method(_PIC, 1) {
>          Store(Arg0, PICD)
>      }
> -}
> diff --git a/tools/libacpi/dsdt_i440.asl b/tools/libacpi/dsdt_i440.asl
> new file mode 100644
> index 0000000000..e80c454ad9
> --- /dev/null
> +++ b/tools/libacpi/dsdt_i440.asl
> @@ -0,0 +1,36 @@
> +/* SPDX-License-Identifier: LGPL-2.1-only */
> +/******************************************************************************
> + * DSDT for Xen with Qemu device model (for i440 machine)
> + *
> + * Copyright (c) 2004, Intel Corporation.
> + */
> +
> +DefinitionBlock ("DSDT.aml", "DSDT", 2, "Xen", "HVM", 0)
> +{
> +    #define MACHINE_TYPE_I440

IMO we probably want to define this outside of the DefinitionBlock
section, just after the copyright header.

> +
> +    #include "dsdt.asl"
> +
> +    Scope (\_SB.PCI0.ISA)
> +    {
> +         Device (FDC0)
> +         {
> +             Name (_HID, EisaId ("PNP0700"))
> +
> +             Method (_STA, 0, NotSerialized)
> +             {
> +                   Return (0x0F)
> +             }
> +
> +             Name (_CRS, ResourceTemplate ()
> +             {
> +                 IO (Decode16, 0x03F0, 0x03F0, 0x01, 0x06)
> +                 IO (Decode16, 0x03F7, 0x03F7, 0x01, 0x01)
> +                 IRQNoFlags () {6}
> +                 DMA (Compatibility, NotBusMaster, Transfer8) {2}
> +             })
> +        }
> +    }
> +
> +    #include "dsdt_acpi_info.asl"
> +}
> -- 
> 2.51.0
> 
> 
> 
> --
> Thierry Escande | Vates XCP-ng Developer
> 
> XCP-ng & Xen Orchestra - Vates solutions
> 
> web: https://vates.tech
> 


From xen-devel-bounces@lists.xenproject.org Tue Apr 28 09:31:30 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 28 Apr 2026 09:31:30 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1295505.1572173 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wHemf-0002mq-UY; Tue, 28 Apr 2026 09:31:13 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1295505.1572173; Tue, 28 Apr 2026 09:31: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 1wHemf-0002mj-RM; Tue, 28 Apr 2026 09:31:13 +0000
Received: by outflank-mailman (input) for mailman id 1295505;
 Tue, 28 Apr 2026 09:31:12 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <geert.uytterhoeven@gmail.com>) id 1wHeme-0002mN-4e
 for xen-devel@lists.xenproject.org; Tue, 28 Apr 2026 09:31:12 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wHemd-00Gybj-EG
 for xen-devel@lists.xenproject.org; Tue, 28 Apr 2026 11:31:11 +0200
Received: from [10.42.69.2] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <geert.uytterhoeven@gmail.com>)
 id 69f07e57-2eae-0a2a0a5409dd-0a2a4502b842-48
 for <xen-devel@lists.xenproject.org>; Tue, 28 Apr 2026 11:31:11 +0200
Received: from [209.85.208.44] (helo=mail-ed1-f44.google.com)
 by tlsNG-720697.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.1)
 (envelope-from <geert.uytterhoeven@gmail.com>)
 id 69f07e5f-af86-0a2a45020019-d155d02cb111-3
 for <xen-devel@lists.xenproject.org>; Tue, 28 Apr 2026 11:31:11 +0200
Received: by mail-ed1-f44.google.com with SMTP id
 4fb4d7f45d1cf-678adefbd26so6416546a12.3
 for <xen-devel@lists.xenproject.org>; Tue, 28 Apr 2026 02:31:11 -0700 (PDT)
Received: from mail-ej1-f42.google.com (mail-ej1-f42.google.com.
 [209.85.218.42]) by smtp.gmail.com with ESMTPSA id
 4fb4d7f45d1cf-679b6869a6esm515258a12.31.2026.04.28.02.31.09
 for <xen-devel@lists.xenproject.org>
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Tue, 28 Apr 2026 02:31:09 -0700 (PDT)
Received: by mail-ej1-f42.google.com with SMTP id
 a640c23a62f3a-bb3c4d8cc29so312006266b.1
 for <xen-devel@lists.xenproject.org>; Tue, 28 Apr 2026 02:31:09 -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; none
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20251104; t=1777368671; x=1777973471;
        h=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;
        bh=Al22kA6RCf7FSEzj29cZLSkjdM9EgXxihmBX7/SeSVI=;
        b=CtwTcIabZ4SB0xcoTSup7RS0xIwQZgzN9vcO1CLdJI5+GJcgPMKT3caCj7xA5NLjS0
         7EnmX42WrtEhIAR/YTOywfWdwGAXoHos+yWLH0ez+5dLTYsmAT3zx1TH00M//gnS6K41
         w/Xu0+36YNwOIG89AF65vp/ZQiG5xv/IUt5uIbhpSpbkxwd4UgyOj1GJo6DpW3kYR5H5
         KmD16BgQ/bLgdycDoE+l+B4TNHNR5oC+7u8B7Y4ECG4UkHGRElSRUKMFdj1c3Qo+l45u
         Fx6utV9fL6sN7gPHIk1Lg2oiKpUI07t9RGot8UzGfQg8+4wdVCc7cvm5ZIsm8kB097k/
         43/g==
X-Forwarded-Encrypted: i=1; AFNElJ8Gl6zHbfejuUjeeJRwzB+KoTol9gMcGmlP7uHgs2Z3CM3C6UvVCKxyhsqJgGMKdPyi/G8MbGGytQQ=@lists.xenproject.org
X-Gm-Message-State: AOJu0YxMBWBKPKM1wHnNFaQYy+T/NxJMVyGq3W3i8w1q2qYRwBYAY5zW
	osLEUoifaXXY+t/6af6iusK9JHqrXCDr/HeolLcowlsvBVLYjWnlpyRpEdZ7e+jX8W0=
X-Gm-Gg: AeBDiest/aP1j8KkPp9/M9n+V4jAiNEHfc1upIAN08tCYnWuCtoCZJEKk9Nxmv63ZNA
	e3zG5VuIi2yIEDkGI+IaJ8JeV8MIKTKxDw7xb5TMgxlI7EbGJADcLjOZN/9DUG+7qChMTwau6g6
	92Mhz4IYACWuebWK6uMYU+lzLP71ap8eLyB+uP0H9pSUrF7DlSsz2Cr64+eMmXGlHUAIGueP9K3
	q+EshIn6ftj9HHZV7RMDYiNdQ7AZ6GPGDnRQ7CqQTKDTjyueTrlyKytnFVzUjmKESy/ID5+qxbo
	p+SvY8vtdi6Uv8TZ+4Lpcj0+hlebnfiqpiS5YR6KtJU+P0CRvvybh43k9HYzrf7BYNhIn44dyft
	gRPAreGV9YIeX2U7CUSQEoEXutouOA/NdhFLXBPeWDnf9ID1KdEday83FY6mXRNer4GS9f2u1QR
	zHeDyemfYVqScMUEBQcL2HBl7i3qV9dyEmIR+/kAMRRlY19QbZueUqgXSiu3a5w2YEsRVcB+k=
X-Received: by 2002:a05:6402:3593:b0:670:8bc2:7fc with SMTP id 4fb4d7f45d1cf-679bb04c0c0mr1157925a12.2.1777368670601;
        Tue, 28 Apr 2026 02:31:10 -0700 (PDT)
X-Forwarded-Encrypted: i=1; AFNElJ+J0TD+SdKAL4JmhvDeXqGoUo2dtxxas1Q9tM4LyB5EwkoH29HBc5EHdEqpj66HsAVMaUxAmgIoI+Q=@lists.xenproject.org
X-Received: by 2002:a05:6402:5056:b0:676:d8a1:7a04 with SMTP id
 4fb4d7f45d1cf-679bb09a4admr915149a12.23.1777368324094; Tue, 28 Apr 2026
 02:25:24 -0700 (PDT)
MIME-Version: 1.0
References: <cover.1777306795.git.chleroy@kernel.org> <c73b90236f2810edd47c84edd2a8d8e8e0c816da.1777306795.git.chleroy@kernel.org>
In-Reply-To: <c73b90236f2810edd47c84edd2a8d8e8e0c816da.1777306795.git.chleroy@kernel.org>
From: Geert Uytterhoeven <geert@linux-m68k.org>
Date: Tue, 28 Apr 2026 11:25:11 +0200
X-Gmail-Original-Message-ID: <CAMuHMdUvTBWoDN_wUo2n8-gkoheJ+-rbwew53OvoAwo8G5n1qg@mail.gmail.com>
X-Gm-Features: AVHnY4JEWBVPw4tSjHgbQTia8gZd2WGJ1sv6qLdKJbtvs4hms1blpvc35yb0VWw
Message-ID: <CAMuHMdUvTBWoDN_wUo2n8-gkoheJ+-rbwew53OvoAwo8G5n1qg@mail.gmail.com>
Subject: Re: [RFC PATCH v1 4/9] uaccess: Introduce copy_{to/from}_user_partial()
To: "Christophe Leroy (CS GROUP)" <chleroy@kernel.org>
Cc: Yury Norov <ynorov@nvidia.com>, Andrew Morton <akpm@linux-foundation.org>, 
	Linus Torvalds <torvalds@linux-foundation.org>, David Laight <david.laight.linux@gmail.com>, 
	Thomas Gleixner <tglx@linutronix.de>, linux-alpha@vger.kernel.org, 
	linux-kernel@vger.kernel.org, linux-snps-arc@lists.infradead.org, 
	linux-arm-kernel@lists.infradead.org, linux-mips@vger.kernel.org, 
	linuxppc-dev@lists.ozlabs.org, kvm@vger.kernel.org, 
	linux-riscv@lists.infradead.org, linux-s390@vger.kernel.org, 
	sparclinux@vger.kernel.org, linux-um@lists.infradead.org, 
	dmaengine@vger.kernel.org, linux-efi@vger.kernel.org, 
	linux-fsi@lists.ozlabs.org, amd-gfx@lists.freedesktop.org, 
	dri-devel@lists.freedesktop.org, intel-gfx@lists.freedesktop.org, 
	linux-wpan@vger.kernel.org, netdev@vger.kernel.org, 
	linux-wireless@vger.kernel.org, linux-spi@vger.kernel.org, 
	linux-media@vger.kernel.org, linux-staging@lists.linux.dev, 
	linux-serial@vger.kernel.org, linux-usb@vger.kernel.org, 
	xen-devel@lists.xenproject.org, linux-fsdevel@vger.kernel.org, 
	ocfs2-devel@lists.linux.dev, bpf@vger.kernel.org, kasan-dev@googlegroups.com, 
	linux-mm@kvack.org, linux-x25@vger.kernel.org, rust-for-linux@vger.kernel.org, 
	linux-sound@vger.kernel.org, sound-open-firmware@alsa-project.org, 
	linux-csky@vger.kernel.org, linux-hexagon@vger.kernel.org, 
	loongarch@lists.linux.dev, linux-m68k@lists.linux-m68k.org, 
	linux-openrisc@vger.kernel.org, linux-parisc@vger.kernel.org, 
	linux-sh@vger.kernel.org, linux-arch@vger.kernel.org
Content-Type: text/plain; charset="UTF-8"
X-purgate-ID: tlsNG-720697/1777368671-88EC8161-EC3A90E3/0/0
X-purgate-type: clean
X-purgate-size: 1293

Hi Christophe,

Thanks for your patch!

On Mon, 27 Apr 2026 at 19:18, Christophe Leroy (CS GROUP)
<chleroy@kernel.org> wrote:
> Today there are approximately 3000 calls for copy_to_user() and
> 3000 calls to copy_from_user().
>
> The majority of callers of copy_{to/from}_user() don't care about the
> return value, they only check whether it is 0 or not, and when it is
> not 0 they handle it as a -EACCES.

I think the "a" can be dropped.

> In order to allow better optimisation of copy_{to/from}_user() when
> the size of the copy is known at build time, create new fonctions

functions

> named copy_{to/from}_user_partial() to be used by the few callers
> that are interested in partial copies and need to now how many

know

> bytes remain at the end of the copy.
>
> For the time being it is just the same as copy_{to/from}_user().
>
> Signed-off-by: Christophe Leroy (CS GROUP) <chleroy@kernel.org>

Gr{oetje,eeting}s,

                        Geert

-- 
Geert Uytterhoeven -- There's lots of Linux beyond ia32 -- geert@linux-m68k.org

In personal conversations with technical people, I call myself a hacker. But
when I'm talking to journalists I just say "programmer" or something like that.
                                -- Linus Torvalds


From xen-devel-bounces@lists.xenproject.org Tue Apr 28 09:36:28 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 28 Apr 2026 09:36:28 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1295517.1572181 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wHerh-0003RL-KR; Tue, 28 Apr 2026 09:36:25 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1295517.1572181; Tue, 28 Apr 2026 09:36: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 1wHerh-0003RE-Hn; Tue, 28 Apr 2026 09:36:25 +0000
Received: by outflank-mailman (input) for mailman id 1295517;
 Tue, 28 Apr 2026 09:36:24 +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 1wHerg-0003R8-Ht
 for xen-devel@lists.xenproject.org; Tue, 28 Apr 2026 09:36:24 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wHerf-0014L2-R8
 for xen-devel@lists.xenproject.org; Tue, 28 Apr 2026 11:36:23 +0200
Received: from [10.42.69.12] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <andrew.cooper@citrix.com>)
 id 69f07f91-5cb7-0a2a0a5109dd-0a2a450cec80-16
 for <xen-devel@lists.xenproject.org>; Tue, 28 Apr 2026 11:36:23 +0200
Received: from [52.101.85.48]
 (helo=BYAPR05CU005.outbound.protection.outlook.com)
 by tlsNG-d25034.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.1)
 (envelope-from <andrew.cooper@citrix.com>)
 id 69f07f95-62f1-0a2a450c0019-346555307bd8-3
 for <xen-devel@lists.xenproject.org>; Tue, 28 Apr 2026 11:36:23 +0200
Received: from CH8PR03MB8275.namprd03.prod.outlook.com (2603:10b6:610:2b9::7)
 by BL1PR03MB6102.namprd03.prod.outlook.com (2603:10b6:208:31c::16)
 with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9846.26; Tue, 28 Apr
 2026 09:36:18 +0000
Received: from CH8PR03MB8275.namprd03.prod.outlook.com
 ([fe80::a70d:dc32:bba8:ce37]) by CH8PR03MB8275.namprd03.prod.outlook.com
 ([fe80::a70d:dc32:bba8:ce37%6]) with mapi id 15.20.9846.025; Tue, 28 Apr 2026
 09:36: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=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=ccKCcxHVgqechrGsirY7Hast0tX64WTHNBglbWndvpdSe9VcH9SIFMGkWSRfviVDwFKWm52p0Gg3ZbZFMR8p7xxKqriwmdgnKu79W9VhzOxXa6MymGP2VD8yOYzjgQ6WSTba8ICzTpBcoboYJo/Nx9OKTB8AZLRThl4u2PSmh+FS7d7O7S6mIQlm/5ai5FY6rP+LQwAgAl7vLfveOY1RPpi+hTXq0TuxwaY+17BKuUmD6kQtyYDbQbplsVWn46Mqnwxn4ySEzOU6MxbW6A8D/GC/zLeBarFNuMZ+fptAGpFpIg2FSC1lPqUDLs1kKn2RnvJvb7WzhNiNgFHxg3od+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=mpdOSyAx9rtZPwk8svxWZWLLaqX5YpnW5mDeAwGhp70=;
 b=K5DTrABlW49NIkaVt7N0ZYSeIwCDGz95EDNGXbBTiChwAeLow8UU8g+ASwGiDhriB9+juNZ2XFhNNi973guRffj2wGcMeULdKxcmueJevcf2+0ghUtWBeYTVZZfydmMf5B/4yxi73MyAW1iCnI5Sq1JtDYJKPr04neaTQmsWJ0+X22qf5yM1OdCdOR6GRO0/z+1K6oFtrCYv2pUgen/J0sS7JgGNvkpHkXumiUXRbs1le1YmjJbTsJB+/SgjTvkeGB3Bw0kD8ayrIYzmvYcnqzVrZv2xkBTmLIswdPmEIdYMM4jHsJW/46hAA6XVTKP5NzYEOcbmGEIxLT3NW/ZXVg==
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=mpdOSyAx9rtZPwk8svxWZWLLaqX5YpnW5mDeAwGhp70=;
 b=yjaJCj7S2UVmodB9FLz9FDsi53mVdV80mRkxXiiiIOGoqv3nCUQjFEVJs6h/cyJkE2BD1cgl4gPaC3neNJmde/SwYoZkRlSXSHMRBHqcrsGyZ7kxzP6WQp+7qiiFig8lUcobWLHEmP5+BiwKFg2JHVRXp8ygAPT18ELiHjBE7Co=
Authentication-Results: dkim=none (message not signed)
 header.d=none;dmarc=none action=none header.from=citrix.com;
Message-ID: <82e4eb62-4226-40b6-a1ef-4711f29a5e4f@citrix.com>
Date: Tue, 28 Apr 2026 10:36:09 +0100
User-Agent: Mozilla Thunderbird
Cc: Andrew Cooper <andrew.cooper3@citrix.com>,
 "Christophe Leroy (CS GROUP)" <chleroy@kernel.org>,
 Andrew Morton <akpm@linux-foundation.org>,
 Linus Torvalds <torvalds@linux-foundation.org>,
 David Laight <david.laight.linux@gmail.com>,
 Thomas Gleixner <tglx@linutronix.de>, linux-alpha@vger.kernel.org,
 Yury Norov <yury.norov@gmail.com>, linux-kernel@vger.kernel.org,
 linux-snps-arc@lists.infradead.org, linux-arm-kernel@lists.infradead.org,
 linux-mips@vger.kernel.org, linuxppc-dev@lists.ozlabs.org,
 kvm@vger.kernel.org, linux-riscv@lists.infradead.org,
 linux-s390@vger.kernel.org, sparclinux@vger.kernel.org,
 linux-um@lists.infradead.org, dmaengine@vger.kernel.org,
 linux-efi@vger.kernel.org, linux-fsi@lists.ozlabs.org,
 amd-gfx@lists.freedesktop.org, dri-devel@lists.freedesktop.org,
 intel-gfx@lists.freedesktop.org, linux-wpan@vger.kernel.org,
 netdev@vger.kernel.org, linux-wireless@vger.kernel.org,
 linux-spi@vger.kernel.org, linux-media@vger.kernel.org,
 linux-staging@lists.linux.dev, linux-serial@vger.kernel.org,
 linux-usb@vger.kernel.org, xen-devel@lists.xenproject.org,
 linux-fsdevel@vger.kernel.org, ocfs2-devel@lists.linux.dev,
 bpf@vger.kernel.org, kasan-dev@googlegroups.com, linux-mm@kvack.org,
 linux-x25@vger.kernel.org, rust-for-linux@vger.kernel.org,
 linux-sound@vger.kernel.org, sound-open-firmware@alsa-project.org,
 linux-csky@vger.kernel.org, linux-hexagon@vger.kernel.org,
 loongarch@lists.linux.dev, linux-m68k@lists.linux-m68k.org,
 linux-openrisc@vger.kernel.org, linux-parisc@vger.kernel.org,
 linux-sh@vger.kernel.org, linux-arch@vger.kernel.org
Subject: Re: [RFC PATCH v1 2/9] uaccess: Convert INLINE_COPY_{TO/FROM}_USER to
 kconfig and reduce ifdefery
To: Yury Norov <ynorov@nvidia.com>
References: <cover.1777306795.git.chleroy@kernel.org>
 <9fe875d2f55af59c12708336c571a46038528678.1777306795.git.chleroy@kernel.org>
 <ae-tVFVfx72oCC_i@yury> <f54c3c2b-33da-42a0-80b7-0f6615d930ce@citrix.com>
 <ae_LeSk7XDEseaZb@yury>
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: <ae_LeSk7XDEseaZb@yury>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
X-ClientProxiedBy: PR3P191CA0014.EURP191.PROD.OUTLOOK.COM
 (2603:10a6:102:54::19) To CH8PR03MB8275.namprd03.prod.outlook.com
 (2603:10b6:610:2b9::7)
MIME-Version: 1.0
X-MS-PublicTrafficType: Email
X-MS-TrafficTypeDiagnostic: CH8PR03MB8275:EE_|BL1PR03MB6102:EE_
X-MS-Office365-Filtering-Correlation-Id: 27671459-4f10-4786-8cff-08dea50999ba
X-MS-Exchange-SenderADCheck: 1
X-MS-Exchange-AntiSpam-Relay: 0
X-Microsoft-Antispam:
	BCL:0;ARA:13230040|1800799024|366016|376014|7416014|18002099003|22082099003|56012099003;
X-Microsoft-Antispam-Message-Info:
	Fr2SaARcp/30JjWhQQJ55I1GRZonpmNdylsCWtvAP0iLi3fW8ZUvuFhK0s4B36VBurCZDpfzVPFq6rLx3X1PD1Kz35WTE6S81hlCopCD8pxNfXzddX4/u4dtAvIVV3+dse65UYV54WEPb9m40Wjjn3bHzaqhi5kXQt+QCerhqJvdqH//K3YBfJ3eHu4T502cM87h+5Wk64juS3ow0KcjEOrJiWG8zZtCB1zX/Zx9W+k31hKZWyU5JugE5BecKPv83c14/YMl0NlQo6wFBRUmoTmKu5q+BJ0edgjyC7MNoiJOa062R5+vQdJQm7n67DG6OFhXCui25vN24b+JEFjbMJ8I5gDyS6Pqlh1zGk+tSpPIX5sSTy93SH1THmcafkZxA/zcOtIfBXA5D4BtEZi3z7jrFmLebbEjRBeAZ4mXjOUsa0tdIA0f6ylDW3/kKbCBc2+3QCsGH2auk9QrEoz8Qehl/c2IdC5Jrp1FHy5sbgm1kO91QggdcLgX+7RDBQ1w2WivvacJ5+GA7VwN3eqYcQCchnubiGLOAKifSYUE5mgJ1MtvIP4mVz9MycwuTW1le7C0ze96+eweGDr2GRC7b4Y6Nu/5PUig49u28f0pS10LV8wLIvDRRy/8GhGTlJzQnCP9mRhy1qcYhsiyrYLbGoinMTZRP35bST2/CDKe5vbaqXTn1sWv/Q5t0sltDyceEL5w6qfuHh/xS4aeDEwNDl9teKE1dnyByfr3exuVxtk=
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)(7416014)(18002099003)(22082099003)(56012099003);DIR:OUT;SFP:1101;
X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1
X-MS-Exchange-AntiSpam-MessageData-0:
	=?utf-8?B?cXlrSzBLUUNTNVZEWWtHUFh0VWlZYVFER3Ara1hZNkJxcytqVGExRGJseE82?=
 =?utf-8?B?SEdqNitGYmc4eWJsa0daVmNxTm1WUy9xTzNQOFgxMHNDZ0pDWmI2ZkN3eHZJ?=
 =?utf-8?B?N2M5WXZCMDQwNFNFNDR3WFhSTWJwRHM3WEJjVERGSmJyVFNhV0NHbDY3MUw3?=
 =?utf-8?B?QkZ6bXFoK1hTZTRCeXVMT2lYbXEydmZERmxLdkIydXBBNTBuWC9RNkdFVjE1?=
 =?utf-8?B?K2dyZ0tnQXZsemcyMjk3UE5jNXV4alA0WG0wVzMzd3pzRHUrMVlOdSszNXpK?=
 =?utf-8?B?OWpVTmxHdDRZT1JZNzlabTZUY1JhL1hpVDlNZS9OU3p1K0lPeW1VVVoxSWFI?=
 =?utf-8?B?dWlVZXN2MWFTWi9lZ2VsbTVhU29OanU0cHV2L3JNNUxoalZ2NWMyaXFnVmpS?=
 =?utf-8?B?R3NvSVBwY3pPeEZmSTh6MndjQzBDZTFSaDdnd2djTjdqeDF3SlpIVE42blBP?=
 =?utf-8?B?M2sySFFhdElhQ3EySUZHdFNjaU1YbHRhYXNGbmNSWDlGTGpwSUoydkU4S2R5?=
 =?utf-8?B?L0NiMDB2Y0dtQ1BPUCtNTElxeklWUlNna3dybHRwWUVtajA5ejhPbGJOQng5?=
 =?utf-8?B?cHA5ai95K2xBNjlOeUFXdmpieWFWQWttQ01TTGhnRmJmTDVlL0diU1lZK2lm?=
 =?utf-8?B?anlNY1o5SUxPaXdsZGk4RnVyem95Ry9NdWdKT083YnBERHIvQUZETVc2NE9V?=
 =?utf-8?B?bVZYQ085U29MZUpBb1AyMDVuejlBWFRzSTl2NVZlWkE2OCtwUGRXc01HOSt3?=
 =?utf-8?B?NXJyUXZmcEtvRTdUSEZRaXRiRVducUthVmZ1cSs5WUlwVGpMaUF6TjNoc2dL?=
 =?utf-8?B?ck9iQ3VmVXowU09vc1JUMHNieEVUTW1lWFdSeG9QbGZEMDJTaXR1MWRqazhi?=
 =?utf-8?B?d0l2V3dzQzBIV0F6bzg0a250TmttZTZFYkZXZmwxTlFrVEpMUnBNaENqVUpj?=
 =?utf-8?B?VkplZXpWWjR3QThKTDZSaTBvbS9UOCtwYm8zQnlTbVVhbWczMExGdTJWQ1ph?=
 =?utf-8?B?UkhjUEF6djRZYUNDQitzMHM5YkNEaG5OT3htMEl6NWlWU0dYZHNTdm5FYTk5?=
 =?utf-8?B?RDA3Nm9nVW9IeUFTeHJtMTcwUmxFMlhYbmc5V1FwSlZGZmcxK0h5OUwxWXI0?=
 =?utf-8?B?Qk9GbG1EcG85cWhkSUE0aW1IQk5sa0Q3MzZFdGx1UzU2eFhaaThkL3F3eGZu?=
 =?utf-8?B?a0grdGtEckJiLzdBMnV0NUcxLy9BN3V4V0lETi9tYSthUk5NUjduclNDRG9r?=
 =?utf-8?B?ZmFYR1FIOWRNVUVIV1E2dlVONGZVQ0ZBQ2I5MVFvMGlZUDRLTU5rVVc2dzVn?=
 =?utf-8?B?ZmtDREdLYXJDL3JjTnZ2VTkvQlJCZE4rV3VXazBFUlFPQmx4Y3VYb0Z1T01S?=
 =?utf-8?B?VE90SUcwc0RjWXBLcU9lM3MxYWowa25VakxFd1lOMnBSUGltc0JjTWM1aDJP?=
 =?utf-8?B?Y29pQ1dhSTgwZTlPZkhEYXJHdFZLRkszWjBSa1lUK2xhZjBFc1JSMXYwcFVK?=
 =?utf-8?B?M0tKWUZ1ZGUrcEdncXpRazd6UFpib09hb3JIQmVjbEJVSDAvNXgxREI1akxZ?=
 =?utf-8?B?cXFMOGN3TkZjd2RiNkZvMGc2endCM0JwWEJ0T0czZUFBVHorTDhIcGFpVkpX?=
 =?utf-8?B?UHhLd1doQTlwSEl2TGlGd1B1T3YzMkhTUkdLU1pZMkNIVHNiYjJSbjBOTnVa?=
 =?utf-8?B?U3VlU0lWMW90QUJ3K3ZLNTJ6UHF4WmpjWVR3T0xMWWtSUVZlaVdNakRmQ2FK?=
 =?utf-8?B?dlBGQ0h6anRZMGNJSER4UFNjWGFaZnhFbDBrSjNaaEd0RVJhRDNyWjZSNHJK?=
 =?utf-8?B?SXl4Y2hURkhEd3Z5NnN1Zi9TT2tsMlN1T283dVoxUUxYN3JqOVBWWTVsOUhp?=
 =?utf-8?B?c2JNWEtUa3N3bnlTWVdqODk2Z0huV3VYdG9PM2tCV2tuYysyeWY5L1JHYXBJ?=
 =?utf-8?B?Yy9oV1NLMk5Yc1ZER0RNVWxLOWZINEhCV3JmWkxITTlTcEpEQk5Lazk5S2Fm?=
 =?utf-8?B?YU9qN0IzODUreWtZL25RbTdZbEhCMzB2ZzRhejVxTkN5UCtNMUZhNXpZUHJv?=
 =?utf-8?B?c2ZzaHk5c0c2WDdCV0c2ZklENVd1QXJSZERWNGd0MWZGOXVlRFBIbjBCYUVp?=
 =?utf-8?B?c1g5QnRIenRtUExSQ21QRnNQZjZHVDI3NWl4dDZCRHVrRnlsZm5MeUg5Lzhj?=
 =?utf-8?B?WmJrSDdFUmxOYlQrZ1NGRXFDQ1lvSjl3eFpjZ3Nzc21PeVUvK0dCMHVUcDlV?=
 =?utf-8?B?OC9zMjY2TUNrcXhhMGpOVUtBWmdFSXNLWEgyR2s1VEE1djEwRE5PRkFnYUVQ?=
 =?utf-8?B?Yi9Vb29kSWlZMWZ6NVNXU2lLSHh3cUhhVFR4NXU4eGtGZEpGbVpYelYwNFJ5?=
 =?utf-8?Q?ffVmgnSYCsz39lbY=3D?=
X-OriginatorOrg: citrix.com
X-MS-Exchange-CrossTenant-Network-Message-Id: 27671459-4f10-4786-8cff-08dea50999ba
X-MS-Exchange-CrossTenant-AuthSource: CH8PR03MB8275.namprd03.prod.outlook.com
X-MS-Exchange-CrossTenant-AuthAs: Internal
X-MS-Exchange-CrossTenant-OriginalArrivalTime: 28 Apr 2026 09:36:18.6733
 (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: 8FETUR2bT/yBq230FXCqFNsiU0Ggu57p4Jp697qQVSZUPucNrAQZOGv7iEP1mcxKrRIFdBtpW+GgV17hrhOPkaPlgmSk7r3wIBztNDkjsJk=
X-MS-Exchange-Transport-CrossTenantHeadersStamped: BL1PR03MB6102
X-purgate-ID: tlsNG-d25034/1777368983-F5403CF5-7B02C273/0/0
X-purgate-type: clean
X-purgate-size: 997

On 27/04/2026 9:47 pm, Yury Norov wrote:
> On Mon, Apr 27, 2026 at 09:39:33PM +0100, Andrew Cooper wrote:
>> On 27/04/2026 7:39 pm, Yury Norov wrote:
>>> On Mon, Apr 27, 2026 at 07:13:43PM +0200, Christophe Leroy (CS GROUP) wrote:
>>>> Among the 21 architectures supported by the kernel, 16 define both
>>>> INLINE_COPY_TO_USER and INLINE_COPY_FROM_USER while the 5 other ones
>>>> don't define any of the two.
>>>>
>>>> To simplify and reduce risk of mistakes, convert them to a single
>>>> kconfig item named CONFIG_ARCH_WANTS_NOINLINE_COPY which will be
>>> We've got a special word for it: outline. Can you name it
>>> CONFIG_OUTLINE_USERCOPY, or similar?
>> You can't swap the "in" for "out" like this.  "out of line" is the
>> opposite of "inline" in this context, while "outline" means something
>> different and unrelated.
> Check KASAN_OUTLINE vs KASAN_INLINE for example

Then I suggest it gets corrected before more examples try to copy this
non-english.

~Andrew


From xen-devel-bounces@lists.xenproject.org Tue Apr 28 10:17:25 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 28 Apr 2026 10:17:25 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1295532.1572194 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wHfUw-0001GO-KB; Tue, 28 Apr 2026 10:16:58 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1295532.1572194; Tue, 28 Apr 2026 10:16: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 1wHfUw-0001GH-HH; Tue, 28 Apr 2026 10:16:58 +0000
Received: by outflank-mailman (input) for mailman id 1295532;
 Tue, 28 Apr 2026 10:16:57 +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 1wHfUv-0001GB-H5
 for xen-devel@lists.xenproject.org; Tue, 28 Apr 2026 10:16:57 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wHfUu-00H9CO-DA
 for xen-devel@lists.xenproject.org; Tue, 28 Apr 2026 12:16:56 +0200
Received: from [10.42.69.1] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <milan_djokic@epam.com>)
 id 69f08911-e002-0a2a0a5209dd-0a2a45019c94-46
 for <xen-devel@lists.xenproject.org>; Tue, 28 Apr 2026 12:16:56 +0200
Received: from [52.101.69.84]
 (helo=AM0PR83CU005.outbound.protection.outlook.com)
 by tlsNG-d62444.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.1)
 (envelope-from <milan_djokic@epam.com>)
 id 69f08918-c1f2-0a2a45010019-34654554361e-3
 for <xen-devel@lists.xenproject.org>; Tue, 28 Apr 2026 12:16:56 +0200
Received: from AS2PR03MB9587.eurprd03.prod.outlook.com (2603:10a6:20b:595::7)
 by PAVPR03MB9775.eurprd03.prod.outlook.com (2603:10a6:102:312::21)
 with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9846.26; Tue, 28 Apr
 2026 10:16: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%6]) with mapi id 15.20.9846.025; Tue, 28 Apr 2026
 10:16: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=uX1vJ/ggqv5NSilCVnxHdYcNo9R0u18MRzmxc0Tk6qceyTd7P+UC7+sZIUBWtCuR5e/7H9c4itc6DNbdAthaMtt/QO3l+eQ16cFPQtwJMx1+gxDnmmBn80eyg9r0DJxGQ9gSwmkBraDhOc4OqL5ezi7A/CO/UKiVPdPckWeqj9SGgyRTorUgET3+fLg/Q8vVM30LodncJKccViSJ6qQq4wJCEpEDoVZTkX1Emgh+gnl4hsJ7E3nmfRE9Z8xjkIFhqZZ2WkMXYjdOcIfTEEQBpBN09jLYtVDHOgljwF38lGTJT4URJWmMRacLJrkPpbEUpdWwR9nys+q9rmxeAFjhBg==
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com;
 s=arcselector10001;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1;
 bh=MR88q9lKDQ7Q9yXY52ZjehqGtLnr6o/5uutGZwt7RpI=;
 b=HDDUPOSAihBeu8aFNTIK8BVjzVteymSu59GHk4dFtDzkmlYZLiSOlV2gf7v+diqDqwsc5MNYeeaPQMG+QrczjuOWa2M9Zc7tNgIlP0RxcaMPRknq2XEi9abap9TF66cEi5uUTQmRV1ydrTT8zSwkxueKdVcliOSrKCl47UeB5LZ/d2opPhFQ6oQIwtKT3bTVFQPPJHYVcT1LIrUOWy/uibyk1ea/WC7Vs0gHmNQE0Lardn7l8sWeiIVBs8Qupbc/oHyW538mkG02nUUpJNmagFJQv0DRX6LZmmqbLPPv3qM8AdVD9zPbVFJbT6vyFJqRR2r+RB8A5fe079Qf0HDIxQ==
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=MR88q9lKDQ7Q9yXY52ZjehqGtLnr6o/5uutGZwt7RpI=;
 b=cYThDGqSwE0+2ZYYNANFXZwQNPmlE1MR+sLRdN/7WzLv9ooE4VVt0jKLbao03d/gatn8PxkntU9ZWbXj+drinj0moxe68vsMznxCoNm3+KJD+6f72/o3jTlYGkhjT/QUyFEUogaEr82hJnEd+4AouuLXtj81iSKGJLpmOrjX4R1WmltOYJQEwB4bXnKEbPc9Aqst0Ym7eDBc+HFQt1SJapLlDhPWogM99+/c83WdrpNBkErwdUswLXGCV7xwthsUhkeAxc3twKj/Pog/kzfsqHFBU4yxxzSUWrXuOqDprFN4VCDYH4fQmNla1dHouKA21avR6FdLK4X3zfAqYkUoPg==
Authentication-Results: dkim=none (message not signed)
 header.d=none;dmarc=none action=none header.from=epam.com;
Message-ID: <4c96c478-aeb5-443c-a6ca-f23caf7d5430@epam.com>
Date: Tue, 28 Apr 2026 12:16:52 +0200
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH v2 02/23] xen/arm: smmuv3: Add support for stage-1 and
 nested stage translation
To: Julien Grall <julien@xen.org>,
 "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>,
 Michal Orzel <michal.orzel@amd.com>,
 Volodymyr Babchuk <Volodymyr_Babchuk@epam.com>
References: <cover.1774305918.git.milan_djokic@epam.com>
 <cb8a2cb5df50128f4c49d34a7ab8faa4e73f83c6.1774305918.git.milan_djokic@epam.com>
 <56a7c116-4ecb-4dfc-a7dd-774d53041fe9@xen.org>
 <87a04781-5765-43b6-8b21-cb993609bd91@epam.com>
 <cd2c76a2-7a13-4bbf-9c29-5dcf3ae06fc0@xen.org>
Content-Language: en-US
From: Milan Djokic <milan_djokic@epam.com>
In-Reply-To: <cd2c76a2-7a13-4bbf-9c29-5dcf3ae06fc0@xen.org>
Content-Type: text/plain; charset=UTF-8; format=flowed
Content-Transfer-Encoding: 8bit
X-ClientProxiedBy: VI6PEPF00000234.AUTP296.PROD.OUTLOOK.COM
 (2603:10a6:808:1::8f0) To AS2PR03MB9587.eurprd03.prod.outlook.com
 (2603:10a6:20b:595::7)
MIME-Version: 1.0
X-MS-PublicTrafficType: Email
X-MS-TrafficTypeDiagnostic: AS2PR03MB9587:EE_|PAVPR03MB9775:EE_
X-MS-Office365-Filtering-Correlation-Id: 7e1208b6-0265-4fb9-3226-08dea50f456a
X-MS-Exchange-SenderADCheck: 1
X-MS-Exchange-AntiSpam-Relay: 0
X-Microsoft-Antispam:
	BCL:0;ARA:13230040|376014|366016|1800799024|18002099003|56012099003|22082099003;
X-Microsoft-Antispam-Message-Info:
	/bKQ3CdZRMJi6zxUJDFW7VtaRWWD29+BsJUSNyBXT0S4poJiQrtCrgUc3HtSaViaZZeW2ZCYbJ0tarmgh0NA8h8EUkn3QPz8DJ4JCUKwP8sWZ99Z87B4bwWzHdXNB/k5TxXeM7CBe/JCA3JNI2C5sFy6JVBCY3MeY1eEPS8c/LnY0vuu1pWorpaw0Tl9pq+5vPjn+f2QBHFkPwoLbUH3h9nThp73bGD5lXYdXXhEXpzLfnIDWkrj4+C908nivsjR4CoOF+VAviMVEnVPgAEGtj2aA76GpMJ1rfmaJ1NSkunnn3xwJKpWUSrCBJ8e5GUx//YZMiNEnKtoYwwW1lyghj9ER7vq0KP3knzhUKQmh5v7tv+7s5cwGbvNACbFdgNfzP1WuHpqih9b9pBXgkntOUcI01mGcM8gavu4irsqWlKGXff3VdDYA16im9zckQbDFJ/15S+GRp23AijvrkpYRWMJqa2DAqmnVK9zta/O68YnpoAJCPHdwXc/1wjkVZXbsU2ZhYhFswxfSGJH0/3BMOJ0OwdEwSzAWZAWCXelTFd74C9QllKwNfQgej56l6gNKkkgw2TViYywwaMfManXXEj6HSd83eheKpRBZtlo8akYdtvwP7Xpv6yTxE9aePmkv7ZDKdnhdGTvhSYBeZQ/ciAvHB6evmXhri+WiFnMLZOf6gBCjvHQvK+yFIbIEtIIhmRDZRUsOOVSIOsdyXQSLmBywezCDJxhO5KKelNdr5E=
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)(1800799024)(18002099003)(56012099003)(22082099003);DIR:OUT;SFP:1102;
X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1
X-MS-Exchange-AntiSpam-MessageData-0:
	=?utf-8?B?SVJXcGdRZTlxU2Y3NTNzVEhhYTE1dnM3dGxheEhTVG1LMTVLNTB4VzdKMVBN?=
 =?utf-8?B?TGVxOEpFYll5dk1LTU4vTlpQYk1jQi9wVnpTWDl6MmJCYmhXTytuZ0xNU0dq?=
 =?utf-8?B?cGVOT0lPT2RWMjJpVlY4c0lacUJGTkZiaU9ZeXZ6U2NsYkM3bnNsUzRCVmFE?=
 =?utf-8?B?WEh0Qlp6ZEVJcjc1RjBzQjFUZ3hRSUhsTVhiSkRmaWN2VFJNUG1DTnQwclNY?=
 =?utf-8?B?U2tHc0RmWlZxMUpKZ0FFa2M1UnFaekFoR05hY21TL2ErQXZ5UXFjeTNNSXZE?=
 =?utf-8?B?S2VuQmZVRXlpQmkvaWdEd0tZZHJXMHpjbnZ3M1ZmT1AyVmQzTGdnV2FrS0g2?=
 =?utf-8?B?dkhBbEhRTENGYStJNVN2cWNUcGUzWEhXNWZna1pBNzZrZWlWQkM1SFZUaXdx?=
 =?utf-8?B?MU5MSmhxeW9jTFdjVVZncFZmVFdDVVo0S013WlZ0WXdwT1Q0K3QzQnlOSUM5?=
 =?utf-8?B?Q3NsUmszUzhsbDN1Nm1QNDJFWERycSsrQ1p3QmNzeFNObDBRTVRocTNjNk9u?=
 =?utf-8?B?YTltNDNZWU9JRTNJMjMxbFRnTFBVZUs0ZjJtZjJHTGR4V2V2WWp5S1p5VGx0?=
 =?utf-8?B?VzYxeENBQXpFeVRjd0p2Y3J0UU1xQVZPRHBGYnAvaFlmUkdjVzVZOU03UmZM?=
 =?utf-8?B?bnJiWlY1SjlkUVZJT1BJVFhYVGdWT0NxUlNxcUUrMnE2OUk1QUtiaGQwSFlC?=
 =?utf-8?B?Z2hKamtvb0hmeWpJd3JZbndFcHFKWmxBV25EN24yNVByUU5vRW9SK1VZd1Zh?=
 =?utf-8?B?UUEwc2pObTM4bFNmTE94YTlWTThocmUyQ3FPWTdsU0E4ZloyWnF6VXN3TnpD?=
 =?utf-8?B?YjFjSGxaaHFhd2V3Q1hSM2U0Y1JiWisvL1pMdWZkTVh4ZjRIZ0ppYjcreENP?=
 =?utf-8?B?YzBSNU9FWjR3SWhTUmRRMkJ0d0N0d3VNek1jSnRuNG10elQ4VzdLc2VmdHda?=
 =?utf-8?B?a05acTI4a3doNUY5SEJjSGI1ZXgxc0hRSEwwNmh4OU90QWJ5TUJqK3FkV3ZO?=
 =?utf-8?B?amxyMG5WZTRRNEVtVWh0ZUVzMnVmeHRnMGdzcm55R0g5VVo1eEp4biswNjZW?=
 =?utf-8?B?NVBaVnByeEVyY3dGUzU3TXEvUS9yaFRaN3NtbnI0SVhIR1VGbnhrNm9jRy9t?=
 =?utf-8?B?NzJTaXpzUDMyZlBrS284TmU4SmZjcFJYVGt4N2MyNWRPRjYzekMveU42Tklj?=
 =?utf-8?B?QWRuZ09GWFhQeFhxUWVSMU1JYVRkK1UyNSt4UFRpWUFIQ2hnOCtxN2lCUlp0?=
 =?utf-8?B?QzFNay83Um8vY0lPbWszUXJHa2E2SnhjSWJneHRrZ2Q0dmZPeXJTWEtncWFG?=
 =?utf-8?B?MVJQK1pCTnpvMGd1Z3RKakJFYktDaHl1b3pmb3hZMkQ5Q2tTZU82OU5iY3c2?=
 =?utf-8?B?bndkNkZad2pUK1hJc0tScENoY29DZTVMT2hrUk5IaE00dThjZ0dMMnJHUVFW?=
 =?utf-8?B?Z2hBZWNxOUcrZkFCc0EzNi9iZVhwc2w0MmNOaXo0K00vU1N2aDhvUUFkcGRH?=
 =?utf-8?B?a0VlOXRGczljNVgzTkdua28xc2llbVNXYkZhYTBoTStOc1BOa2lHZTVFM0cx?=
 =?utf-8?B?RlA2aSthTU1yS3lIQ2xCVndkbFVKZk9SaG4zZEQ4a2tzQzViQTg5RkJBWVNV?=
 =?utf-8?B?U0ZoTWQ1eGw3NC9HT3oxeFFNS0pBTUwxRW55YVVBZkF0REhzODVKMmo2OTNh?=
 =?utf-8?B?M2tLclVWYjF3c3lDMk85bFc2TVBEOFpTL0xiNG1RMjdLRVpJdDljY01TTC9y?=
 =?utf-8?B?VE1sTDZMc3hlUXl2M3FUcmxmSXRrUHgwT0ZDYjg4NlpReXpTZ2QxTzdiRllL?=
 =?utf-8?B?amIrZjI0dmx2Mm9ETTA4T0JuV0RCZ0gzdlBRZENJMGZDUUhTVUZTWFl4eFpH?=
 =?utf-8?B?Vi9yTU15cmdDaEllRmJPNU9mRDNQTnQyVlgwWERQd0RUVS9jakpRSHNCOUZM?=
 =?utf-8?B?TnhUQTl2STh1T3lBSVBCSmJNTVY5VVZpUWU5NzRoL3pGV2t4UHFvVnRHK3Q3?=
 =?utf-8?B?cUdwWjZjYmRPWjVVNDBBSUZCR2ZuNWU5cUlvY1BZZW9xc094YUJjenQ1bkpi?=
 =?utf-8?B?T0tBLzU3eTdSQ3pyRFdhd0xrNU9oZ3FJTUhPbG1zdjR1QjMya2dEMno5MVV5?=
 =?utf-8?B?YkxUMXFQbHVSWVcwR3F5QVQ1WUNmc1VDYU1OT3p4ZlVJSFlFVDhJb09tNllN?=
 =?utf-8?B?YkVQZ2hpeC9VVkVOelJVbXE5bFJmWHhUVlNvRjNGQWVSSnlhUWFJVzhjZElG?=
 =?utf-8?B?ODNlT3VFbGFVUlh3ZTVNZFpvUzVlc25CUGg1cmlvb0N0Y01rcVN6b1A5Szhu?=
 =?utf-8?B?T1FTanlGZE0ra0lhTjZhMFVvN29pblUwOUc1bDV3cXBTTjdZWDQ3QT09?=
X-OriginatorOrg: epam.com
X-MS-Exchange-CrossTenant-Network-Message-Id: 7e1208b6-0265-4fb9-3226-08dea50f456a
X-MS-Exchange-CrossTenant-AuthSource: AS2PR03MB9587.eurprd03.prod.outlook.com
X-MS-Exchange-CrossTenant-AuthAs: Internal
X-MS-Exchange-CrossTenant-OriginalArrivalTime: 28 Apr 2026 10:16:54.3294
 (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: jETIJDAkWkETJQrmjnsPlnJkrtUDLm0OKm6OJGH4hBnv8AiFfXOo8TuL5RoBCRWJXq2nIFbp2Cz2ol+MmTSGDQ==
X-MS-Exchange-Transport-CrossTenantHeadersStamped: PAVPR03MB9775
X-purgate-ID: tlsNG-d62444/1777371416-BC410FF4-3327D90A/0/0
X-purgate-type: clean
X-purgate-size: 6526

Hi Julien,

On 4/21/26 10:43, Julien Grall wrote:
> Hi Milan,
> 
> On 19/04/2026 18:34, Milan Djokic wrote:
>> Hi Julien,
>>
>> On 4/14/26 04:17, Julien Grall wrote:
>>> Hi Milan,
>>>
>>> On 24/03/2026 07:51, Milan Djokic wrote:
>>>> 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 | 93 ++++++++++++++++++++++
>>>> +----
>>>>     xen/drivers/passthrough/arm/smmu-v3.h |  9 +++
>>>>     2 files changed, 91 insertions(+), 11 deletions(-)
>>>>
>>>> diff --git a/xen/drivers/passthrough/arm/smmu-v3.c b/xen/drivers/
>>>> passthrough/arm/smmu-v3.c
>>>> index 73cc4ef08f..f9c6837919 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 = le64_to_cpu(dst[0]);
>>>> -    bool ste_live = false;
>>>> +    bool s1_live = false, s2_live = false, ste_live = false;
>>>> +    bool abort, translate = false;
>>>>         struct arm_smmu_device *smmu = NULL;
>>>> +    struct arm_smmu_s1_cfg *s1_cfg = NULL;
>>>>         struct arm_smmu_s2_cfg *s2_cfg = NULL;
>>>>         struct arm_smmu_domain *smmu_domain = NULL;
>>>>         struct arm_smmu_cmdq_ent prefetch_cmd = {
>>>> @@ -699,30 +701,54 @@ static void arm_smmu_write_strtab_ent(struct
>>>> arm_smmu_master *master, u32 sid,
>>>>             smmu = master->smmu;
>>>>         }
>>>> -    if (smmu_domain)
>>>> -        s2_cfg = &smmu_domain->s2_cfg;
>>>> +    if (smmu_domain) {
>>>> +        switch (smmu_domain->stage) {
>>>> +        case ARM_SMMU_DOMAIN_NESTED:
>>>> +            s1_cfg = &smmu_domain->s1_cfg;
>>>> +            fallthrough;
>>>> +        case ARM_SMMU_DOMAIN_S2:
>>>> +            s2_cfg = &smmu_domain->s2_cfg;
>>>> +            break;
>>>> +        default:
>>>> +            break;
>>>> +        }
>>>> +        translate = !!s1_cfg || !!s2_cfg;
>>>
>>> NIT: translate is a bool. So do you actually need the !!?
>>>
>>
>> No, !! is not necessary here, will fix this.
>>
>>>> +    }
>>>>         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 = true;
>>>> +            break;
>>>>             case STRTAB_STE_0_CFG_S2_TRANS:
>>>> -            ste_live = true;
>>>> +            s2_live = true;
>>>> +            break;
>>>> +        case STRTAB_STE_0_CFG_NESTED:
>>>> +            s1_live = true;
>>>> +            s2_live = true;
>>>>                 break;
>>>>             case STRTAB_STE_0_CFG_ABORT:
>>>> -            BUG_ON(!disable_bypass);
>>>
>>> I am not sure I understand why this was removed. Can you clarify?
>>>
>>
>> Yes. With the stage-1 support, abort is controlled per guest smmu
>> configuration, so abort state is valid and not controlled by the global
>> disable_bypass, but with per-config smmu_domain->abort field instead.
> 
> Are we ok to allow the guest to control the bit? For instance, what does
> it mean if the guest decide to that no abort is necessary but the region
> is not mapped in stage-2?
> 

If the guest disables abort and translation is enabled, accesses to 
regions not mapped in stage-2 will still generate stage-2 translation 
faults. This won’t result in bypass.
In nested mode, both stage-1 and stage-2 are programmed, so stage-2 is 
always active. However, missing or invalid stage-2 mappings can still 
occur, and in such cases generating a stage-2 fault is the expected 
behavior, and would typically indicate either an invalid access from the 
guest or a missing stage-2 mapping.


> [...]
> 
>>
>> The original idea was to also allow stage-1-only support. But I'm not
>> sure if stage-1-only usecase is useful or even valid for Xen.. I will
>> update the patch series with the missing parts for stage-1-only support,
>> pointed out by Luca, but the question remains if this is needed at all.
>> If not, I can revert to original state where stage-2 was always required.
> 
> By "stage-1 only" support, do you mean Xen would use the stage-1 in
> replacement of the stage-2? Or do you mean the guest will use the
> stage-1 page-table and there will be no isolation from Xen?
> 
> If the former, then I believe the page tables don't have the exact same
> format. Today, the page-tables are shared between the CPU and IOMMU, so
> this would need to be duplicated. For now, I am not sure this is worth
> to do.
> 
> If the latter, this would require the guest to be directly mapped (i.e.
> IPA == PA) but it would also open a big hole. So I would want to
> understand the exact use case first.
> 

The latter. In this case, the guest would configure stage-1 while 
stage-2 translation is not used, so there is no additional isolation 
enforced by Xen. This would only be intended for specific usecases with 
trusted domains. But yes, this opens a significant hole if used with 
untrusted guests. If there is no strong usecase, we could restrict the 
implementation to always require stage-2.

> Cheers,
> 

Best regards,
Milan



From xen-devel-bounces@lists.xenproject.org Tue Apr 28 10:18:09 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 28 Apr 2026 10:18:09 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1295543.1572203 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wHfVv-0001zY-1W; Tue, 28 Apr 2026 10:17:59 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1295543.1572203; Tue, 28 Apr 2026 10:17: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 1wHfVu-0001zR-V1; Tue, 28 Apr 2026 10:17:58 +0000
Received: by outflank-mailman (input) for mailman id 1295543;
 Tue, 28 Apr 2026 10:17:57 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <roger.pau@citrix.com>) id 1wHfVt-0001zJ-JT
 for xen-devel@lists.xenproject.org; Tue, 28 Apr 2026 10:17:57 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wHfVs-007jcM-UH
 for xen-devel@lists.xenproject.org; Tue, 28 Apr 2026 12:17:57 +0200
Received: from [10.42.69.8] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <roger.pau@citrix.com>)
 id 69f08950-bab6-0a2a0a5309dd-0a2a4508bf32-36
 for <xen-devel@lists.xenproject.org>; Tue, 28 Apr 2026 12:17:56 +0200
Received: from [52.101.52.71]
 (helo=BL2PR02CU003.outbound.protection.outlook.com)
 by tlsNG-c1860d.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.1)
 (envelope-from <roger.pau@citrix.com>)
 id 69f08953-63b5-0a2a45080019-34653447da2e-3
 for <xen-devel@lists.xenproject.org>; Tue, 28 Apr 2026 12:17:56 +0200
Received: from CH7PR03MB7860.namprd03.prod.outlook.com (2603:10b6:610:24e::14)
 by DS7PR03MB8315.namprd03.prod.outlook.com (2603:10b6:8:260::15) with
 Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9846.26; Tue, 28 Apr
 2026 10:17:53 +0000
Received: from CH7PR03MB7860.namprd03.prod.outlook.com
 ([fe80::f5ba:35df:1c9f:b343]) by CH7PR03MB7860.namprd03.prod.outlook.com
 ([fe80::f5ba:35df:1c9f:b343%4]) with mapi id 15.20.9846.025; Tue, 28 Apr 2026
 10:17: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=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=IF5r59Rsmm3luN2VYc2ZN6PLRTiSWsrdYilY1csJ1E1aD7QH6AFt1EIShB9X18XCQNnMZCxCX5a6XufQ+crBea6Dt0clLPxMmCTi0fTN/8PvNzunDVEtcF6jFri4j1RYTfEpupzdiuq5fpIzUSs/BI3X/nWOCfE/KZ9FhEb+PJUqDpCEouCEm+OyB148QET2q3NdpVrfRikfCmTi+3B1yeO433jG/9IUzyTG6hdkI9OhvnHnuTNM1UNka1UWw+soNIpsRn0sR47JR8EaqV8DM/M5Zp9la2BjEVhj+ImXWMprDCV2qILbyCL/w3R9bEH4huDQI2vxy+/zmLkFnzPFCQ==
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com;
 s=arcselector10001;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1;
 bh=A2keiiZXZR6XgddVozHX6JewiqIcgqX7frg5KBnaVE4=;
 b=B3l0gjCUP2exIxgvo9sYNOliu3e5R9DvVldmXENc94B6gDqp0V0IoLveXXM4s3WljJPBvX7YREuqIj5h/k44Ez9/2X6thZbhY9posxjuHHmYfESev8ESYiEkY2xlJZo6HWFW2plOjVj9+kJykc6QtCZ353F71Az81DiGkzy/oIV+ELHfdVCiGBXBEdk77OfkMahM8ixvSuXiLhTxMQtyuf1nwtIiV4rxjQx6ah1TOCYTEgK1+9lzqeeInC6vdWldx5VYiRKOlXzHho/PQOFyQOcgQ+quOtilpPUerdido6bkjqyb8S3RFriw+ch9WtZVPZKumlyCqVOYIQKXoiDtQw==
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=A2keiiZXZR6XgddVozHX6JewiqIcgqX7frg5KBnaVE4=;
 b=D/pxg9p3aXaK0WFO6wBkdrGpuFhrfcvU8Oc9RBTi24zN53O6wzlBseINM8XGUVXkAwrf532SbxAvjyLThJ4lcv6yzdOmTh5nrR3gf5fuyfRztB9ZLPcu6NlFtwEcCrwTewBx8BbOKX0XukNqnO9UJlXg63HbEJmi/y37Y8bJq80=
Authentication-Results: dkim=none (message not signed)
 header.d=none;dmarc=none action=none header.from=citrix.com;
Date: Tue, 28 Apr 2026 12:17:49 +0200
From: Roger Pau =?utf-8?B?TW9ubsOp?= <roger.pau@citrix.com>
To: Thierry Escande <thierry.escande@vates.tech>
Cc: xen-devel@lists.xenproject.org, Jan Beulich <jbeulich@suse.com>,
	Andrew Cooper <andrew.cooper3@citrix.com>,
	Anthony PERARD <anthony.perard@vates.tech>,
	Alexey Gerasimenko <x1917x@gmail.com>
Subject: Re: [PATCH 02/17] libacpi: new DSDT ACPI table for Q35
Message-ID: <afCJTdlBPPyWEejk@macbook.local>
References: <20260313163455.790692-1-thierry.escande@vates.tech>
 <20260313163455.790692-3-thierry.escande@vates.tech>
Content-Type: text/plain; charset=utf-8
Content-Disposition: inline
In-Reply-To: <20260313163455.790692-3-thierry.escande@vates.tech>
X-ClientProxiedBy: MR1P264CA0083.FRAP264.PROD.OUTLOOK.COM
 (2603:10a6:501:3f::23) To CH7PR03MB7860.namprd03.prod.outlook.com
 (2603:10b6:610:24e::14)
MIME-Version: 1.0
X-MS-PublicTrafficType: Email
X-MS-TrafficTypeDiagnostic: CH7PR03MB7860:EE_|DS7PR03MB8315:EE_
X-MS-Office365-Filtering-Correlation-Id: 0a483f4f-2f8c-4c9f-da7e-08dea50f688a
X-MS-Exchange-SenderADCheck: 1
X-MS-Exchange-AntiSpam-Relay: 0
X-Microsoft-Antispam:
	BCL:0;ARA:13230040|366016|376014|1800799024|18002099003|56012099003|22082099003;
X-Microsoft-Antispam-Message-Info:
	Mf1XHalhUrLW1wZocx77acowppAgzAYbHkJaVolG8ne+EBSace7x33PgAJl8hy8rGH1FI1INxPXtWJ1Xk8IJv4RfL9G4zVEcWde8iVeA6oJBwGUe4QhUJStELJLHgchp928d2WEKB5y9+sDHMU8NN0VdKQSKS/bdithTI5CFm3EMrrLfV77/9txfTkZXpxOBipVNqVOBM6ESFL+A1fja1phyzW1oDEQurqObnuNpXMNP44SDD+Vb6qxfOpG3cRkaxn2pMVXWBG1FV2C/9IhLeAsI6TG++3O0/Dk4KwuHVw+2m+E3mEsmRjcIIbYAjUBsRWKV/bKlX7c3tPOtIdf1PUA6Sah3vqs8vFpuUQVm1x1mwZVtex2rnS94UuUkl+UFIi5pv53q1Jt6oSchPi7rjDRWNawoTuqqIu/MhPUXi/qXa1UlNhGDu26BJJNo+OIY/edxrBEaJGluTdCpWx1yqSMRrOPFMi5XbnPqrwLkP14RaEO02VNjP58JccJkbNhtS4VmtM5RwpDbZpXj8SNiPqtug9kC6stHR3H4LFgiKJn5z0wPWIb8vE65MZD1DgAV4XoQuLLR13fSZR56lfxqFhM0kv46S4r60aaQiA2ixq+9VtwPl9byHDA6Di/7eX1ZegFvFrp2fGK4RHqyFenbubo0AYPhOBvMWgk2HfDaR6N65AE8t7K16yd3Ndz2mg7AlXqIVPpDBUSjg/0pKvxMnIQRqtZzHVO87+EyG+HFJRA=
X-Forefront-Antispam-Report:
	CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:CH7PR03MB7860.namprd03.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(366016)(376014)(1800799024)(18002099003)(56012099003)(22082099003);DIR:OUT;SFP:1101;
X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1
X-MS-Exchange-AntiSpam-MessageData-0:
	=?utf-8?B?bGJrTERGa2xxbG1uNDgwSWFrVzZQUHhCS0RnSCtVMm11NUlXUnFTbDE1QUwv?=
 =?utf-8?B?Vnhnd1pWMkVvQ0l5ei9OVm1ZZGJ4b3daZ3dYZkVNYndYMmI3MUpSdWZoLy8y?=
 =?utf-8?B?MmZmYVpobXllWG9UMnRKbm5vRFI2cEZSbE54VDZJWFE4eHRPV1V4dDRFaWRh?=
 =?utf-8?B?THZ0OC9paVlwaWNpQU5teW9jLzVyL2V3ZFhCT3pWbGVhbm1EMmVOajJuLzFm?=
 =?utf-8?B?WFlZcm4vK2dkYXdPYkhOM09WZFZvOGlxTFRHZDRSbEJPcVJMdHdBQUpMSzlx?=
 =?utf-8?B?enZRU2tKQnhFT3RwdVNZVlplNGxPZzlwaW84ME1uWFIvMmtBK21pY3ZyNlpa?=
 =?utf-8?B?eWxMdVB0b0xVeWx4VllSTGxpenQ3Y21LOWtIbGJMYUlHalUrS3dRSzhlYUx2?=
 =?utf-8?B?VjY2NlQrU1o2SVRvaDFHbXIrdld0QjRRbERORk83MlE2WWw3ejhxV2RkUElv?=
 =?utf-8?B?RzNmNDlWWGNXYWpacHNyV3ZOVjNhb3BoUExqT0pmY3J1SzJJdkNXTVZUbHpj?=
 =?utf-8?B?K2o0bUVNL0cranEraWkrQVBsS0twdFh0QVNWY2FaR3YzWDZ3dHhQRVVuMFNx?=
 =?utf-8?B?RXFvNThvQys2b3VRd0dYUFUzQjN3bzhDbFV3bEVMWHNQQkpDRko2VVd5YU13?=
 =?utf-8?B?MFZyS0JVQTVmN3hsMXdVeUxPNUx5OEIzQlZpamdxamowUENoazRONzNNRk1M?=
 =?utf-8?B?REZwcnhvZlY1c1JueDJ2WjlKZGE2eS9rMUVveENCaWtpWGlzTzNsa2drMEla?=
 =?utf-8?B?WEtGU1JQenMweW0vdDNia3EyL0ZiM0JleVRibmVkT3gveGtEZkhheFg0dW9w?=
 =?utf-8?B?anBtdklMc1RyYWVwNFJPNHgzZFlZbkI4eFlBNTNzaFpKSlJQSVJVUW5YYmto?=
 =?utf-8?B?RFFvdC80Q3BtNWR1eWE0RVcwWkFLR3RpdXFtc1Y5SHcvRGNFbEFtSzRlUVdE?=
 =?utf-8?B?a09YbHdFdnVaV2Z5VEtxbHhSUFJnOEhhbzBDSEJYTDh6blVrcDBoOFNHakdl?=
 =?utf-8?B?YmNkeXVBUlRLNDhuV0l1ZDNhdnMyK2lpVjF3d3d1ZmJWd05rRXk1QzV3T1Ju?=
 =?utf-8?B?ZWxLLzJtNmhLeERCd0lCUllJQ25WUVFwVVFDSklpRHlTME85YWJGaGlBM3R2?=
 =?utf-8?B?WVhVRVgvb2VPdGZlcmFCeWF0L2VTMkk3aWJBb004am9aak5taFZaWjkwVjR2?=
 =?utf-8?B?akJuWXdLS3lNZ3RCN2NIN05FUitsVGs4T2RTdytBcWV0a1dTbnR3WWNkVzZ5?=
 =?utf-8?B?aHVXVmFPOFMyS3ZjMlc3d1NQSCt5RkR4UUoyVlVTejZVcnY2QXdmMUJLWkFz?=
 =?utf-8?B?YzBuYXlQaVhaZEpHNER0RXhBVm5Jb3dnNi9hN0pTa3dCWE1Kbld1bHY2bTRF?=
 =?utf-8?B?akUyTndzd3FCVFlsbld1RmVrbDRPMEhtZll4eDVrTGRNbW03YVk3NG9xeTFj?=
 =?utf-8?B?cmJsU1puRGd4YksrUE9GYmZSK043T0N1VFhlUGlaY0dkUlRLOHdhLy9WSTBl?=
 =?utf-8?B?VUZHaFljRGVIOVovVXFDRWdnVlZaT1lhZFVjVmtJZHZ4WGxnemsxZ3lPQkd3?=
 =?utf-8?B?Z2VmMVJRMkJsU2oyZGowbVY4R1dTRzdmS1BHRHBUMFJqeFdlTDZyNGVac1JG?=
 =?utf-8?B?S3M5c2NuSGV6WFFCUnlrOGNRaGdBOWgwcnhhdnVtUVBVTXpQT0w2dG1pOUpD?=
 =?utf-8?B?THZCRU1zai91VEZjRDlOUGZMNEJsMTg4K3BheGV3bEdDendwVDZDMHJkSDI1?=
 =?utf-8?B?QnFpUnRBOHdnektIWk1WOXNFTTNTZjJUZENWSWwzeDRHYjFKRC94U1VMTUha?=
 =?utf-8?B?ZEZQd2Y3ZDNBVS9xOFRlbEJqb3AzcjV5SGlXQ2YvdWliek9yVE5DMi9hUnVV?=
 =?utf-8?B?SStaRU15K01lT1oydWVNbFpBaWxtNS9hYUkyRDBqbWdFOVMzUHBsRXJNVUlv?=
 =?utf-8?B?MU9IUjZOZU50RGFFcGQ3M1I4WGJjcG84eVc0MENKVWhIRFBUUnVoT2hreTFv?=
 =?utf-8?B?WlF5RHhpbVNVYWplb3ZxRXBvS2piNzk3aGFROFhYcWM1UXFXeVpuUEQ4MGsx?=
 =?utf-8?B?ZWY4VXZ0Q1FEWlQxZERvZkpxQi9XNGFEU2RHUGNEeEtENWI3ZDA5bjBmZW1M?=
 =?utf-8?B?SnBQeEJxSFVIMnZVY3VqTGlPd3QxWi96enVtVFdNcmo0bjU4NUVoa3pIbitR?=
 =?utf-8?B?Wk1YWVk4NGxmajU1M29GNkxFWnA0akFZU2h0bG94R0EyMlNoeVAwdUNHN2dl?=
 =?utf-8?B?MGtzSVVDa01FRUJXYThHYWhGSmsxcDlPOE5lVG1xYkdzSDVUNWR3djh0NFAy?=
 =?utf-8?B?MXpwcnl0aEhCYlZ3WmV1VlBEZnhmWVJlUWJnbWhNa1VTQWhTQXBZQT09?=
X-OriginatorOrg: citrix.com
X-MS-Exchange-CrossTenant-Network-Message-Id: 0a483f4f-2f8c-4c9f-da7e-08dea50f688a
X-MS-Exchange-CrossTenant-AuthSource: CH7PR03MB7860.namprd03.prod.outlook.com
X-MS-Exchange-CrossTenant-AuthAs: Internal
X-MS-Exchange-CrossTenant-OriginalArrivalTime: 28 Apr 2026 10:17:53.2177
 (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: ni3aRAECXgfrTv2sVHmuNaKFnnphLzdFY4868GmlTuZDv1+eZRTvn+UMqPtVnfP6iTTA7qrSSqU7BRuZ9L/VtQ==
X-MS-Exchange-Transport-CrossTenantHeadersStamped: DS7PR03MB8315
X-purgate-ID: tlsNG-c1860d/1777371476-C80D7DB1-7E6A6735/0/0
X-purgate-type: clean
X-purgate-size: 9416

On Fri, Mar 13, 2026 at 04:35:01PM +0000, Thierry Escande wrote:
> This patch adds the DSDT table for Q35 (new tools/libacpi/dsdt_q35.asl
> file). It only contains the specific Q35 parts that differ from i440).
> At the moment, these are:
> 
> - BDF location of LPC Controller
> - Minor changes related to FDC detection
> - Addition of _OSC method to inform OSPM about PCIe features supported
> 
> As we are still using 4 PCI router links and their corresponding
> device/register addresses are same (offset 0x60), no need to change PCI
> routing descriptions.
> 
> Note that '15cpu' ACPI tables are only applicable to qemu-traditional
> (which have no support for Q35), so we need to use 'anycpu' version only.

Is the above statement fully accurate?  It seems like 15cpu tables are
used with rombios, so the dependency is not on qemu-trad, but rather
rombios?

If it's truly only dependent on qemu-trad then we should remove those,
as we have removed qemu-trad.

> 
> Signed-off-by: Alexey Gerasimenko <x1917x@gmail.com>

If the first SoB if from Alexey, the From: should also match.

> Signed-off-by: Thierry Escande <thierry.escande@vates.tech>
> ---
>  tools/firmware/hvmloader/Makefile |   2 +-
>  tools/libacpi/Makefile            |   2 +-
>  tools/libacpi/dsdt.asl            |   3 +
>  tools/libacpi/dsdt_q35.asl        | 130 ++++++++++++++++++++++++++++++
>  4 files changed, 135 insertions(+), 2 deletions(-)
>  create mode 100644 tools/libacpi/dsdt_q35.asl
> 
> diff --git a/tools/firmware/hvmloader/Makefile b/tools/firmware/hvmloader/Makefile
> index bdc33a877f..99f045efaa 100644
> --- a/tools/firmware/hvmloader/Makefile
> +++ b/tools/firmware/hvmloader/Makefile
> @@ -78,7 +78,7 @@ rombios.o: roms.inc
>  smbios.o: CFLAGS += -D__SMBIOS_DATE__="\"$(SMBIOS_REL_DATE)\""
>  
>  ACPI_PATH = ../../libacpi
> -DSDT_FILES += dsdt_i440_anycpu_qemu_xen.c
> +DSDT_FILES += dsdt_i440_anycpu_qemu_xen.c dsdt_q35_anycpu_qemu_xen.c
>  ACPI_OBJS = $(patsubst %.c,%.o,$(DSDT_FILES)) build.o static_tables.o
>  $(ACPI_OBJS): CFLAGS += -iquote . -DLIBACPI_STDUTILS=\"$(CURDIR)/util.h\"
>  CFLAGS += -I$(ACPI_PATH)
> diff --git a/tools/libacpi/Makefile b/tools/libacpi/Makefile
> index d3d4bc9543..e6c4a3fd8b 100644
> --- a/tools/libacpi/Makefile
> +++ b/tools/libacpi/Makefile
> @@ -11,7 +11,7 @@ endif
>  
>  MK_DSDT = $(ACPI_BUILD_DIR)/mk_dsdt
>  
> -C_SRC-$(CONFIG_X86) = dsdt_anycpu.c dsdt_15cpu.c dsdt_i440_anycpu_qemu_xen.c dsdt_pvh.c
> +C_SRC-$(CONFIG_X86) = dsdt_anycpu.c dsdt_15cpu.c dsdt_i440_anycpu_qemu_xen.c dsdt_q35_anycpu_qemu_xen.c dsdt_pvh.c
>  C_SRC-$(CONFIG_ARM_64) = dsdt_anycpu_arm.c
>  DSDT_FILES ?= $(C_SRC-y)
>  C_SRC = $(addprefix $(ACPI_BUILD_DIR)/, $(DSDT_FILES))
> diff --git a/tools/libacpi/dsdt.asl b/tools/libacpi/dsdt.asl
> index 130826fdcc..dc764881c9 100644
> --- a/tools/libacpi/dsdt.asl
> +++ b/tools/libacpi/dsdt.asl
> @@ -201,6 +201,9 @@
>                  #ifdef MACHINE_TYPE_I440
>                      Name (_ADR, 0x00010000) /* device 1, fn 0 */
>                  #endif
> +                #ifdef MACHINE_TYPE_Q35
> +                    Name (_ADR, 0x001f0000) /* device 31, fn 0 */
> +                #endif

You possibly want to do:

#ifdef ...
#elif defined(...)
#else
#error ...
#endif

But seeing the difference is only for the address, why not do:

#define ISA_DEV_SBDF 0x00010000
...
Name (_ADR, ISA_DEV_SBDF)
...

And avoid the ifdef mess?

>  
>                  OperationRegion(PIRQ, PCI_Config, 0x60, 0x4)
>                  Scope(\) {
> diff --git a/tools/libacpi/dsdt_q35.asl b/tools/libacpi/dsdt_q35.asl
> new file mode 100644
> index 0000000000..7cefe63506
> --- /dev/null
> +++ b/tools/libacpi/dsdt_q35.asl
> @@ -0,0 +1,130 @@
> +/* SPDX-License-Identifier: LGPL-2.1-only */
> +/******************************************************************************
> + * DSDT for Xen with Qemu device model (for Q35 machine)
> + */
> +
> +DefinitionBlock ("DSDT.aml", "DSDT", 2, "Xen", "HVM", 0)
> +{
> +    #define MACHINE_TYPE_Q35
> +
> +    #include "dsdt.asl"
> +
> +    Scope (\_SB.PCI0)
> +    {
> +       /* _OSC, modified from ASL sample in ACPI spec */
> +       Name (SUPP, 0) /* PCI _OSC Support Field value */
> +       Name (CTRL, 0) /* PCI _OSC Control Field value */
> +       Method (_OSC, 4) {
> +           /* Create DWORD-addressable fields from the Capabilities Buffer */
> +           CreateDWordField (Arg3, 0, CDW1)
> +
> +           /* Switch by UUID.
> +            * Only PCI Host Bridge Device capabilities UUID used for now

Comment style, in Xen we use:

/*
 * Switch by UIID.
 * Only PCI Host Bridge Device capabilities UUID used for now.
 */

The opening and closing lines are standalone.  Also missing a full
stop on the last line.  The rest of the comments below also need
adjusting.

> +            */
> +           If (LEqual (Arg0, ToUUID ("33DB4D5B-1FF7-401C-9657-7441C03DD766"))) {
> +               /* Create DWORD-addressable fields from the Capabilities Buffer */
> +               CreateDWordField (Arg3, 4, CDW2)
> +               CreateDWordField (Arg3, 8, CDW3)
> +
> +               /* Save Capabilities DWORD2 & 3 */
> +               Store (CDW2, SUPP)
> +               Store (CDW3, CTRL)
> +
> +               /* Validate Revision DWORD */
> +               If (LNotEqual (Arg1, One)) {
> +                   /* Unknown revision */
> +                   /* Support and Control DWORDs will be returned anyway */
> +                   Or (CDW1, 0x08, CDW1)
> +               }
> +
> +               /* Control field bits are:
> +                * bit 0    PCI Express Native Hot Plug control
> +                * bit 1    SHPC Native Hot Plug control
> +                * bit 2    PCI Express Native Power Management Events control
> +                * bit 3    PCI Express Advanced Error Reporting control
> +                * bit 4    PCI Express Capability Structure control
> +                */
> +
> +               /* Always allow native PME, AER (no dependencies)
> +                * Never allow SHPC (no SHPC controller in this system)
> +                * Do not allow PCIe Capability Structure control for now
> +                * Also, ACPI hotplug is used for now instead of PCIe
> +                * Native Hot Plug
> +                */
> +               And (CTRL, 0x0C, CTRL)
> +
> +               If (LNotEqual (CDW3, CTRL)) {
> +                   /* Some of Capabilities bits were masked */
> +                   Or (CDW1, 0x10, CDW1)
> +               }
> +               /* Update DWORD3 in the buffer */
> +               Store (CTRL, CDW3)

This looks equal to the QEMU code FWIW.

> +           } Else {
> +               Or (CDW1, 4, CDW1) /* Unrecognized UUID */
> +           }
> +           Return (Arg3)
> +       }
> +       /* end of _OSC */
> +    }
> +
> +    /****************************************************************
> +     * LPC ISA bridge
> +     ****************************************************************/

I would use a normal one-line comment here: /* LPCI ISA Bridge */

Has any of this been picked up from the QEMU asl files?  Asking
because the above comment looks to be verbatim copied from the QEMU
file, and we then need to carry their copyright notice, which is not
done in this patch.

> +
> +    Scope (\_SB.PCI0.ISA)

AFAICT this is adding more content to the ISA device already defined
in dsdt.asl?

> +    {
> +        /*
> +         LPC ISA bridge
> +
> +         PCI Interrupt Routing Register 2 (PIRQE..PIRQH) cannot be
> +         used because of existing Xen IRQ limitations (4 PCI links
> +         only)
> +        */

Right, and PIRQA..PIRQD is already defined in the generic dsdt.asl.
Might be worth mentioning, otherwise the block looks incomplete.

> +
> +        /* LPC_I/O: I/O Decode Ranges Register */
> +        OperationRegion (LPCD, PCI_Config, 0x80, 0x2)
> +        Field (LPCD, AnyAcc, NoLock, Preserve) {
> +            COMA,   3,
> +                ,   1,
> +            COMB,   3,
> +
> +            Offset(0x01),
> +            LPTD,   2,
> +                ,   2,
> +            FDCD,   2
> +        }
> +
> +        /* LPC_EN: LPC I/F Enables Register */
> +        OperationRegion(LPCE, PCI_Config, 0x82, 0x2)
> +        Field(LPCE, AnyAcc, NoLock, Preserve) {
> +            CAEN,   1,
> +            CBEN,   1,
> +            LPEN,   1,
> +            FDEN,   1
> +        }
> +
> +        Device (FDC0)
> +        {
> +            Name (_HID, EisaId ("PNP0700"))
> +            Method (_STA, 0, NotSerialized)
> +            {
> +                Store (FDEN, Local0)
> +                If (LEqual (Local0, 0)) {
> +                    Return (0x00)
> +                } Else {
> +                    Return (0x0F)
> +                }
> +           }
> +
> +           Name (_CRS, ResourceTemplate ()
> +           {
> +               IO (Decode16, 0x03F2, 0x03F2, 0x00, 0x04)
> +               IO (Decode16, 0x03F7, 0x03F7, 0x00, 0x01)
> +               IRQNoFlags () {6}
> +               DMA (Compatibility, NotBusMaster, Transfer8) {2}
> +           })
> +        }
> +    }

This seem to match the blocks in QEMU, so it's likely fine.

Thanks, Roger.


From xen-devel-bounces@lists.xenproject.org Tue Apr 28 10:22:23 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 28 Apr 2026 10:22:23 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1295551.1572213 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wHfa8-0003c3-Hx; Tue, 28 Apr 2026 10:22:20 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1295551.1572213; Tue, 28 Apr 2026 10: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 1wHfa8-0003bw-Ej; Tue, 28 Apr 2026 10:22:20 +0000
Received: by outflank-mailman (input) for mailman id 1295551;
 Tue, 28 Apr 2026 10:22:18 +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 1wHfa6-0003bq-Ol
 for xen-devel@lists.xenproject.org; Tue, 28 Apr 2026 10:22:18 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wHfa6-00Bkm2-21
 for xen-devel@lists.xenproject.org; Tue, 28 Apr 2026 12:22:18 +0200
Received: from [10.42.69.1] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <Michal.Orzel@amd.com>)
 id 69f08a43-bab6-0a2a0a5309dd-0a2a4501cd6e-32
 for <xen-devel@lists.xenproject.org>; Tue, 28 Apr 2026 12:22:17 +0200
Received: from [52.101.52.10]
 (helo=BL2PR02CU003.outbound.protection.outlook.com)
 by tlsNG-d62444.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.1)
 (envelope-from <Michal.Orzel@amd.com>)
 id 69f08a57-c1f2-0a2a45010019-3465340a435a-3
 for <xen-devel@lists.xenproject.org>; Tue, 28 Apr 2026 12:22:17 +0200
Received: from MN0P221CA0017.NAMP221.PROD.OUTLOOK.COM (2603:10b6:208:52a::28)
 by MW4PR12MB6705.namprd12.prod.outlook.com (2603:10b6:303:1e3::18)
 with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9870.18; Tue, 28 Apr
 2026 10:22:10 +0000
Received: from MN1PEPF0000F0E2.namprd04.prod.outlook.com
 (2603:10b6:208:52a:cafe::55) by MN0P221CA0017.outlook.office365.com
 (2603:10b6:208:52a::28) with Microsoft SMTP Server (version=TLS1_3,
 cipher=TLS_AES_256_GCM_SHA384) id 15.20.9846.26 via Frontend Transport; Tue,
 28 Apr 2026 10:22:10 +0000
Received: from satlexmb08.amd.com (165.204.84.17) by
 MN1PEPF0000F0E2.mail.protection.outlook.com (10.167.242.40) with Microsoft
 SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id
 15.20.9846.18 via Frontend Transport; Tue, 28 Apr 2026 10:22:09 +0000
Received: from SATLEXMB03.amd.com (10.181.40.144) by satlexmb08.amd.com
 (10.181.42.217) with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.2.2562.17; Tue, 28 Apr
 2026 05:22:09 -0500
Received: from satlexmb07.amd.com (10.181.42.216) by SATLEXMB03.amd.com
 (10.181.40.144) with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2507.39; Tue, 28 Apr
 2026 05:22:09 -0500
Received: from [10.71.195.215] (10.180.168.240) by satlexmb07.amd.com
 (10.181.42.216) with Microsoft SMTP Server id 15.2.2562.17 via Frontend
 Transport; Tue, 28 Apr 2026 05:22:08 -0500
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@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=BAWoDlqXGQXKRHwlK4JMZn29cFi5cwRt+yh8joO2Rzs9Pm2ER7kkuYaHGAeWdD6UbpO5JUjWjAnLtCW4GK//GrHURKQqoNislXR0xTJT/AuslUGpZmawmxBshUcmE1Xqjjzkr2L+Iko6K7nt4wjXuHPxS4t7gfarThIcUXnyTwnfW0WblFXxa+R1Bbo5mRu4ZhZ6m4GRmQPiFiY0HdtIU+BBnGE3E3LJgLpQFM2hm3as3F/xSfc1tj01BTfhPAVvxwSdLysztD5gzh8G5Yg4Bou5jKlXebTDQa0F6kCigw2bMCISB9TKKM/hm+7HAXDgidskpEpbLjcZrt2GqDpFgQ==
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com;
 s=arcselector10001;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1;
 bh=EyR7PutCQL5LGH1gsjDsAyMJf9cdoMsIdLhIXecj38Y=;
 b=OysW7VcVUniKM06XG5r/85l+hEhf1p00VWFtCLYg4JmMe2U2i9NpQsqn/ZWhTJvCIJTGRKiYL/kYZneY+ep0FcV/12iZBu/yNHSflUvzGiBfdXEbVH/xEtLP8fyH3xYzot20tKU6n9/UxkIaOIw5dYqamiM1LjMCohn2zEFGhCqfqpxci1udICBgqvMrI/9Jmbm8lx8GvRCkEuWsdFu6eWr82DOylIaAsO4jZ39KwCTfmnGkpt5ZBsCnbtCT9lIJCCjPGhXW3ObMExpnf2PBgBtBGU4/fLiyErOAOyjqLbakWInwfejjOtJIIm/LfoVAoL1PfXFUUabLEc7cLauWLw==
ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass (sender ip is
 165.204.84.17) smtp.rcpttodomain=bugseng.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=EyR7PutCQL5LGH1gsjDsAyMJf9cdoMsIdLhIXecj38Y=;
 b=jQGMCeVwEeiji4ADoDdktWcWCmC+ctLdhd7Q1vNx5KdqIeMO4GzhWh8MYj7uuKCOTUGzy4nCAED3g9UUqf8PLciH2xr6oTGSioyr90Xu0xAcupmZ7ic051+9UpAEPh/dYoHq1EbciTWXJd7HQ9+LLPQZj24g3gwHAWGORrNPKdY=
X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 165.204.84.17)
 smtp.mailfrom=amd.com; dkim=none (message not signed)
 header.d=none;dmarc=pass action=none header.from=amd.com;
Received-SPF: Pass (protection.outlook.com: domain of amd.com designates
 165.204.84.17 as permitted sender) receiver=protection.outlook.com;
 client-ip=165.204.84.17; helo=satlexmb08.amd.com; pr=C
Message-ID: <d43959bd-6812-4241-b425-861d6020339b@amd.com>
Date: Tue, 28 Apr 2026 12:22:08 +0200
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH v2] xen/dt-overlay: support phandle-based targeting in
 overlay_get_nodes_info
To: Nicola Vetrini <nicola.vetrini@bugseng.com>
CC: <xen-devel@lists.xenproject.org>, Doug Goldstein <cardoe@cardoe.com>,
	Stefano Stabellini <sstabellini@kernel.org>, Julien Grall <julien@xen.org>,
	Bertrand Marquis <bertrand.marquis@arm.com>, Luca Fancellu
	<luca.fancellu@arm.com>
References: <20260428080218.19371-1-michal.orzel@amd.com>
 <2f9875a8a1f4d85ddceccb2d093a4951@bugseng.com>
From: "Orzel, Michal" <michal.orzel@amd.com>
Content-Language: en-US
In-Reply-To: <2f9875a8a1f4d85ddceccb2d093a4951@bugseng.com>
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: 7bit
Received-SPF: None (SATLEXMB03.amd.com: michal.orzel@amd.com does not
 designate permitted sender hosts)
X-EOPAttributedMessage: 0
X-MS-PublicTrafficType: Email
X-MS-TrafficTypeDiagnostic: MN1PEPF0000F0E2:EE_|MW4PR12MB6705:EE_
X-MS-Office365-Filtering-Correlation-Id: 951c3eb8-d989-4d26-7a8c-08dea51001b8
X-MS-Exchange-SenderADCheck: 1
X-MS-Exchange-AntiSpam-Relay: 0
X-Microsoft-Antispam:
	BCL:0;ARA:13230040|82310400026|36860700016|376014|1800799024|22082099003|18002099003|56012099003;
X-Microsoft-Antispam-Message-Info:
	tl8qn9wEQ34bZ3RmD4m1G2LmzImhHDKkvSxnt83YsU+tt7uQ24bYa4PMY4p5oVEnWD2WAbbDHceZbr/oHcuHFvqabt71GbyYq6/jWd/zxxwHw8lD95ha9L0jwpidY61Kv2LNb4Xq7ujj7NeAzlldSljgrgCbiEAL25ILIccTYQ2Hr5AE6J0QQC9qUiAY+JCHO87/gZOsvp+R7VJccn71458xVxA95vbscT/tbE5e0BjCgISk1/BPDZd/zjd4YrsgnH56WnDINOJ6Ihq1T4/oTtooeWkjtPDnva2kVxEnuFL1wKG54Z59+8V0BIGFzsqdNANbg5LCV4npKp/52qBoVx88rYmpOd+h/CT/E0Lh5oj78z83WEtHv5rE34rL4t+XX8bBMCwExICpmJMnm997eZr7TJLQRFKgdVObM34s/JAU3PHiJlCbc9wed+pBbuXMdfqVg12HuhJo77oTJyVn+2amKL1rnAinDS6qGa6C4vhnU1UEpTDsN04a93+or83vGusG+bkAWoajGtFcNc9orWfY35SSbZBO+7Hqwh2E78X5TudlyN08fYMgJPfoBaqvNICq0L4MayDrtRvQnAytls5RzvyhbaiomaDxRVwTc4YHSXHMrRxCEK743YDLkZyK8RzvDsXlax9UaMpfVGlH93AA2y14DieIwXyxRByGtRVKMMtBqqHbIQj1GtSQxBrF/6O4ILs/NQonaRi4mU6Uyb34Ruk1+zpaE92dZasDTIM=
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)(376014)(1800799024)(22082099003)(18002099003)(56012099003);DIR:OUT;SFP:1101;
X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1
X-MS-Exchange-AntiSpam-MessageData-0:
	zxCxn9KcpZLXzFhPFguHSDNoqd77NodQsEbqD0dv43MUZEem1P/z8bquExs5Rg+ig5YB3HhGszUL4pe0YEU2qAwVC1qi9VweO1rd/Qx72hSkJ0O9N12wI7G2S5s7Vwgv+fXAW/5T+toLY/j4smYZ/GibbT3JuB3BqnNzmQCIp86vEhvB7mW6c28k2+JXQsbCOvLfUQ2uGaSoPsDPRaozTXoJz7SpASbXbQPknCdaVr227hOzsENu9+rYQk54d0kRK+eAs5JDuaQb1IEv7aJx+NKhACFV1Y88UOpAnlMVHugZ5MWyW1J1omeEto55hBMW8EZJXUSEn3xNVrg+tjc19iohV0bFqsba7HW/thM2gZRPSJ5utTve/slE48VUx1he0FEc4gYKqwP8WWut+2HmixSC9AVu2kiteB2Xxxh0i5hJVln8t6AW//3bxuE49NhJ
X-OriginatorOrg: amd.com
X-MS-Exchange-CrossTenant-OriginalArrivalTime: 28 Apr 2026 10:22:09.9663
 (UTC)
X-MS-Exchange-CrossTenant-Network-Message-Id: 951c3eb8-d989-4d26-7a8c-08dea51001b8
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:
	MN1PEPF0000F0E2.namprd04.prod.outlook.com
X-MS-Exchange-CrossTenant-AuthAs: Anonymous
X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem
X-MS-Exchange-Transport-CrossTenantHeadersStamped: MW4PR12MB6705
X-purgate-ID: tlsNG-d62444/1777371737-BEE63FF4-3AC72EEB/0/0
X-purgate-type: clean
X-purgate-size: 3063



On 28-Apr-26 10:20, Nicola Vetrini wrote:
> On 2026-04-28 10:02, Michal Orzel wrote:
>> overlay_get_nodes_info() is called before fdt_overlay_apply() to 
>> extract
>> target paths from the overlay. This fails for overlays using 
>> phandle-based
>> targeting (target = <&label>) because DTC compiles these as unresolved
>> fixups (target = <0xffffffff>), causing fdt_overlay_target_offset() to
>> return -FDT_ERR_BADPHANDLE. Prior to this change users were forced to
>> manually modify the dtbo (even for hwdom) to switch from target to
>> target-phandle by manually inspecting also the host DTB.
>>
>> Introduce overlay_get_target_path() which directly handles the two
>> targeting cases that occur before fixup resolution:
>>  - target-path: the string property is returned directly.
>>  - target = <&label>: the label is found in the overlay's __fixups__
>>    node, then resolved to a path via the base DTB's __symbols__ node.
>>
>> Libfdt fdt_for_each_property_offset() violates MISRA R20.7. Despite
>> libfdt being excluded from the analysis, this causes ECLAIR scan to
>> report a regression because the violation introduced by a macro is
>> reported at the call site. Deviate R20.7 for libfdt.h.
>>
>> Reviewed-by: Luca Fancellu <luca.fancellu@arm.com>
>> Acked-by: Stefano Stabellini <sstabellini@kernel.org>
>> Signed-off-by: Michal Orzel <michal.orzel@amd.com>
>> ---
>> In my pre-push testing I realized ECLAIR allcode reported a violation 
>> related to
>> the use of fdt_for_each_property_offset. Libfdt is excluded from 
>> analysis but
>> this does not apply to e.g. macros used in other places.
>>
>> Changes in v2:
>>  - strip out from series that is ready to be committed
>>  - deviate 20.7 for libfdt.h. Discussed with Nicole.
>>
>> https://gitlab.com/xen-project/people/morzel/xen/-/pipelines/2484326830
>> ---
>>  .../eclair_analysis/ECLAIR/deviations.ecl     |  1 +
>>  xen/common/device-tree/dt-overlay.c           | 65 +++++++++++++++++--
>>  2 files changed, 60 insertions(+), 6 deletions(-)
>>
>> diff --git a/automation/eclair_analysis/ECLAIR/deviations.ecl 
>> b/automation/eclair_analysis/ECLAIR/deviations.ecl
>> index 30c323906924..5f0b73062474 100644
>> --- a/automation/eclair_analysis/ECLAIR/deviations.ecl
>> +++ b/automation/eclair_analysis/ECLAIR/deviations.ecl
>> @@ -631,6 +631,7 @@ not in scope for compliance are allowed, as that is 
>> imported code."
>>  -file_tag+={acpi_cpu_idle, "^xen/arch/x86/acpi/cpu_idle\\.c$"}
>>  -config=MC3A2.R20.7,reports+={safe, 
>> "any_area(any_loc(file(gnu_efi_include)||any_exp(macro(^NextMemoryDescriptor$))))"}
>>  -config=MC3A2.R20.7,reports+={safe, 
>> "any_area(any_loc(file(acpi_cpu_idle)))"}
>> +-config=MC3A2.R20.7,reports+={safe, 
>> "any_area(any_loc(any_exp(file(^xen/include/xen/libfdt/libfdt.h$))))"}
>>  -doc_end
>>
> 
> Nit: I think using a file_tag as above is better, but in any case use 
> libfdt\\.h in the regex
Ok. Provided I will do this on commit, may I convert this as your Rb/Ab?

~Michal



From xen-devel-bounces@lists.xenproject.org Tue Apr 28 10:24:33 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 28 Apr 2026 10:24:33 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1295561.1572221 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wHfcF-0004DN-2E; Tue, 28 Apr 2026 10:24:31 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1295561.1572221; Tue, 28 Apr 2026 10:24: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 1wHfcE-0004DG-Vd; Tue, 28 Apr 2026 10:24:30 +0000
Received: by outflank-mailman (input) for mailman id 1295561;
 Tue, 28 Apr 2026 10:24:30 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <nicola.vetrini@bugseng.com>) id 1wHfcE-0004DA-IN
 for xen-devel@lists.xenproject.org; Tue, 28 Apr 2026 10:24:30 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wHfcD-00BlCj-VF
 for xen-devel@lists.xenproject.org; Tue, 28 Apr 2026 12:24:29 +0200
Received: from [10.42.69.7] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <nicola.vetrini@bugseng.com>)
 id 69f08acf-bab6-0a2a0a5309dd-0a2a4507cf68-38
 for <xen-devel@lists.xenproject.org>; Tue, 28 Apr 2026 12:24:29 +0200
Received: from [162.55.131.47] (helo=support.bugseng.com)
 by tlsNG-ef75cf.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.1)
 (envelope-from <nicola.vetrini@bugseng.com>)
 id 69f08adc-229c-0a2a45070019-a237832fa512-3
 for <xen-devel@lists.xenproject.org>; Tue, 28 Apr 2026 12:24:29 +0200
Received: from support.bugseng.com (support.bugseng.com [162.55.131.47])
 (Authenticated sender: nicola)
 by support.bugseng.com (Postfix) with ESMTPA id B1CD44EE3D42;
 Tue, 28 Apr 2026 12:24:27 +0200 (CEST)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-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
Authentication-Results: bugseng.com; arc=none smtp.remote-ip=162.55.131.47
ARC-Seal: i=1; d=bugseng.com; s=openarc; a=rsa-sha256; cv=none; t=1777371868;
	b=CH/97+DsIuWxZW5ffd8fASGrjevShkPy1KzHNkjIcF/ePLTRPZytaWhl+07xsRw8Xdax
	 j1dL22yHLuVz3aZobB2UPfw9J+9JGCfC8qgHYA5/KlhY9b8UXzciEwjcnD4e0KvHTAE9o
	 3cJoXK+J73lpFBzSr6SbuYtJEv71xL6WOhUHJ9IKj9xVRYj9gKZx9lDVOh5isgxJ+r6y8
	 5idCWfvrWwc9t0DsLIwU+1nQfw7DQwvI8zMx+HvKIcyaNHpfL3gcVqQDf8naGxIj9l4HR
	 8blZr4FIR4qLelTcUvi1qIqMpCdHzPswWkWGozeqX9Yc93z66sj9S0eMQVwqdLH7lAr/C
	 macUb715KVK2Mds0dqGmOGsvoSGVqyi5gHpMWQrZ/5dlxNTdnrVxPWgdUZRPgfgq/iwPe
	 R+J8oyd7f1EjAdSATQMI+mjxBehGffLGSLviUZ1r/y4lsiWc59MjjiYvlmUAavcFkBfhu
	 FDHqEBK0SBF7dCjmrM5etH8SFuALf7VGgzwXXshtkki+thlEG757C/cfApllg+Z8bs83f
	 k4rk0uNGru4fsaXXwp1spSCgH5Vd/ARB27Px7mXYUIREWmx2aA5pGhOSjp7UoCsrGdgT8
	 T8DkxAHtgn8V7X1syfos1B9K4quuPJJEpvcox3Nr8T8U4lg/aQ75cH0H7BlAM5c=
ARC-Message-Signature: i=1; d=bugseng.com; s=openarc; a=rsa-sha256;
	c=relaxed/relaxed; t=1777371868;
	h=MIME-Version:Date:From:To:Cc:Subject:In-Reply-To:References:
	 Message-ID:X-Sender:Organization:Content-Type:
	 Content-Transfer-Encoding;
	bh=9Lr+2OIu4LkQzWwjA3WNC/sPDHGHa2sUBFGHqOf9eZ4=;
	b=4oExtKqj2ENbVPV8EkC5QpoFp8ph5JVLWSpWYDbxj/pb9rXkMmHswtK0V7fcpYZ458ug
	 BDQpECCNs92APFFE64dYR21xFyRxOZyaR4tlPJdTqvr0FvPP7XIq/LS5q4iBMQ1SIjKAs
	 xdoVzlveqaNDpncyE7U1YpChgu+UWSVJGCH1lKmvobAOFRQdv+4FJRYe3T/ciI4qrVS35
	 H3hUcQot1PLp1V2UJLcdc5jy48BhRZc/oh18dktnI/F4xXAVlnyps9XEGeuYLcpLe8e0C
	 /4QBDgvBQi00FVYdqP66ENA3OhuM5rypDc9SbLwNoeAcR4dtg9ceb4SuPj0ea/UFR7CoW
	 0eSXJWWICPUWg50YBs71ctbFo78WD9/+foSWb2928sv49ju9KkWnvvFoGEn1nKl5CFHHx
	 kKu8wvRun0qUUg4HLW3QO8iTObuf+Nch+m6A7mvQTFZxYXt4W2lfKWCvyR7zKLbqbklWS
	 P+kl3VzxFTcje0hJ90RnPVN60PGZOpFS/cBEl3EhhrriFuspM4N0A9AaMnZZnbqFhxDae
	 k2RhfuEFOXSHaeSm8VUOJjqH76/BGipcY8iYSAYYa4yL0KY5Ji5TXyvwy8wCPhCnmal2t
	 ZbjcAa+UulErGN1CCFPJgFsPCieQ16FHEzkrXIzH69l1C6CsX1w1euCOIqrXQ3I=
ARC-Authentication-Results: i=1; bugseng.com; arc=none smtp.remote-ip=162.55.131.47
MIME-Version: 1.0
Date: Tue, 28 Apr 2026 12:24:27 +0200
From: Nicola Vetrini <nicola.vetrini@bugseng.com>
To: "Orzel, Michal" <michal.orzel@amd.com>
Cc: xen-devel@lists.xenproject.org, Doug Goldstein <cardoe@cardoe.com>,
 Stefano Stabellini <sstabellini@kernel.org>, Julien Grall <julien@xen.org>,
 Bertrand Marquis <bertrand.marquis@arm.com>, Luca Fancellu
 <luca.fancellu@arm.com>
Subject: Re: [PATCH v2] xen/dt-overlay: support phandle-based targeting in
 overlay_get_nodes_info
In-Reply-To: <d43959bd-6812-4241-b425-861d6020339b@amd.com>
References: <20260428080218.19371-1-michal.orzel@amd.com>
 <2f9875a8a1f4d85ddceccb2d093a4951@bugseng.com>
 <d43959bd-6812-4241-b425-861d6020339b@amd.com>
Message-ID: <c595c2dbe4e6481d9bf79a8b0887200e@bugseng.com>
X-Sender: nicola.vetrini@bugseng.com
Organization: BUGSENG s.r.l.
Content-Type: text/plain; charset=US-ASCII;
 format=flowed
Content-Transfer-Encoding: 7bit
X-purgate-ID: tlsNG-ef75cf/1777371869-AC762C48-91C0AB94/0/0
X-purgate-type: clean
X-purgate-size: 3411

On 2026-04-28 12:22, Orzel, Michal wrote:
> On 28-Apr-26 10:20, Nicola Vetrini wrote:
>> On 2026-04-28 10:02, Michal Orzel wrote:
>>> overlay_get_nodes_info() is called before fdt_overlay_apply() to
>>> extract
>>> target paths from the overlay. This fails for overlays using
>>> phandle-based
>>> targeting (target = <&label>) because DTC compiles these as 
>>> unresolved
>>> fixups (target = <0xffffffff>), causing fdt_overlay_target_offset() 
>>> to
>>> return -FDT_ERR_BADPHANDLE. Prior to this change users were forced to
>>> manually modify the dtbo (even for hwdom) to switch from target to
>>> target-phandle by manually inspecting also the host DTB.
>>> 
>>> Introduce overlay_get_target_path() which directly handles the two
>>> targeting cases that occur before fixup resolution:
>>>  - target-path: the string property is returned directly.
>>>  - target = <&label>: the label is found in the overlay's __fixups__
>>>    node, then resolved to a path via the base DTB's __symbols__ node.
>>> 
>>> Libfdt fdt_for_each_property_offset() violates MISRA R20.7. Despite
>>> libfdt being excluded from the analysis, this causes ECLAIR scan to
>>> report a regression because the violation introduced by a macro is
>>> reported at the call site. Deviate R20.7 for libfdt.h.
>>> 
>>> Reviewed-by: Luca Fancellu <luca.fancellu@arm.com>
>>> Acked-by: Stefano Stabellini <sstabellini@kernel.org>
>>> Signed-off-by: Michal Orzel <michal.orzel@amd.com>
>>> ---
>>> In my pre-push testing I realized ECLAIR allcode reported a violation
>>> related to
>>> the use of fdt_for_each_property_offset. Libfdt is excluded from
>>> analysis but
>>> this does not apply to e.g. macros used in other places.
>>> 
>>> Changes in v2:
>>>  - strip out from series that is ready to be committed
>>>  - deviate 20.7 for libfdt.h. Discussed with Nicole.
>>> 
>>> https://gitlab.com/xen-project/people/morzel/xen/-/pipelines/2484326830
>>> ---
>>>  .../eclair_analysis/ECLAIR/deviations.ecl     |  1 +
>>>  xen/common/device-tree/dt-overlay.c           | 65 
>>> +++++++++++++++++--
>>>  2 files changed, 60 insertions(+), 6 deletions(-)
>>> 
>>> diff --git a/automation/eclair_analysis/ECLAIR/deviations.ecl
>>> b/automation/eclair_analysis/ECLAIR/deviations.ecl
>>> index 30c323906924..5f0b73062474 100644
>>> --- a/automation/eclair_analysis/ECLAIR/deviations.ecl
>>> +++ b/automation/eclair_analysis/ECLAIR/deviations.ecl
>>> @@ -631,6 +631,7 @@ not in scope for compliance are allowed, as that 
>>> is
>>> imported code."
>>>  -file_tag+={acpi_cpu_idle, "^xen/arch/x86/acpi/cpu_idle\\.c$"}
>>>  -config=MC3A2.R20.7,reports+={safe,
>>> "any_area(any_loc(file(gnu_efi_include)||any_exp(macro(^NextMemoryDescriptor$))))"}
>>>  -config=MC3A2.R20.7,reports+={safe,
>>> "any_area(any_loc(file(acpi_cpu_idle)))"}
>>> +-config=MC3A2.R20.7,reports+={safe,
>>> "any_area(any_loc(any_exp(file(^xen/include/xen/libfdt/libfdt.h$))))"}
>>>  -doc_end
>>> 
>> 
>> Nit: I think using a file_tag as above is better, but in any case use
>> libfdt\\.h in the regex
> Ok. Provided I will do this on commit, may I convert this as your 
> Rb/Ab?
> 
> ~Michal

Yes, sure

Reviewed-by: Nicola Vetrini <nicola.vetrini@bugseng.com>

-- 
Nicola Vetrini, B.Sc.
Software Engineer
BUGSENG (https://bugseng.com)
LinkedIn: https://www.linkedin.com/in/nicola-vetrini-a42471253


From xen-devel-bounces@lists.xenproject.org Tue Apr 28 10:39:37 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 28 Apr 2026 10:39:37 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1295571.1572230 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wHfqb-0006Ke-85; Tue, 28 Apr 2026 10:39:21 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1295571.1572230; Tue, 28 Apr 2026 10:39: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 1wHfqb-0006KX-5D; Tue, 28 Apr 2026 10:39:21 +0000
Received: by outflank-mailman (input) for mailman id 1295571;
 Tue, 28 Apr 2026 10:39:20 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <roger.pau@citrix.com>) id 1wHfqZ-0006KR-VB
 for xen-devel@lists.xenproject.org; Tue, 28 Apr 2026 10:39:20 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wHfqZ-00FdCZ-C1
 for xen-devel@lists.xenproject.org; Tue, 28 Apr 2026 12:39:19 +0200
Received: from [10.42.69.1] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <roger.pau@citrix.com>)
 id 69f08e4f-5cb7-0a2a0a5109dd-0a2a45019c1e-6
 for <xen-devel@lists.xenproject.org>; Tue, 28 Apr 2026 12:39:18 +0200
Received: from [40.107.208.21]
 (helo=PH0PR06CU001.outbound.protection.outlook.com)
 by tlsNG-d62444.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.1)
 (envelope-from <roger.pau@citrix.com>)
 id 69f08e50-c1f2-0a2a45010019-286bd015918d-3
 for <xen-devel@lists.xenproject.org>; Tue, 28 Apr 2026 12:39:14 +0200
Received: from CH7PR03MB7860.namprd03.prod.outlook.com (2603:10b6:610:24e::14)
 by IA1PR03MB8263.namprd03.prod.outlook.com (2603:10b6:208:5af::15)
 with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9846.28; Tue, 28 Apr
 2026 10:39:11 +0000
Received: from CH7PR03MB7860.namprd03.prod.outlook.com
 ([fe80::f5ba:35df:1c9f:b343]) by CH7PR03MB7860.namprd03.prod.outlook.com
 ([fe80::f5ba:35df:1c9f:b343%4]) with mapi id 15.20.9846.025; Tue, 28 Apr 2026
 10:39: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=ObeP+bLMvvF03rCUFnBjJTaExIUipBAPsmvd/4i+wOWiLimCpyD1VZ+S9lISqz01+Gju8VQ74bQgtIa6Im270JD6c/JvNAMDsDvzTKAwlVsmaTW1OUwAEymTEFgpaIo6nFZ5rJfXG3xHl0QXsgKxyfS/9yf9F06zttiAC0yUn5XunZ9cpQhwxFUffqB6+INxX0Ctu5sUVQGoJ+UzUsbyYdUfJzM2zhltNvoKISwJKLXqhxUbLXCQNGb3zn4eykeWLvukRzjyhMEKP/ZU6aG4OGxrtX5i7w4m4R29/VNa4lxKpds9XOe9QB+Y9d5sw+r4RGY2W03VzhKQNTCOLSsnuw==
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com;
 s=arcselector10001;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1;
 bh=7IkM6DYJPWEOkk4zTRWkdbZ5Vl5qZPKJws+9gqBpxn8=;
 b=rEbOoikp3spN8Vd+S2sjJfYNgIbGWPy0gsAdbKc3kPSGPj7caF3c5Ekdmuj0Bsyxb86wz1ilxOtBWZ66drtB6LOdyav7rUUf1T0RFVxVvp+fzKnpLZdHIpfexzo2ej2BJtNlO2t83EXbbkA1gmHAQESBqPH8PfomGqfv4mjlD7xVipUNXwWC2yXZANhC1aqwzKJ4zBpCCTjCPImAJAHmTusoJKevyKHo7nqKwGY2PTZ/+H/crLi9bt6hovlKp0BSFiLegk7HvIq26+S5aZk9JhASPPs/IPtWCWWZxADeh3F/LqH9j06E0y62OV3b48rMuYC1X2mZlUsSvPDDeTNxJQ==
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=7IkM6DYJPWEOkk4zTRWkdbZ5Vl5qZPKJws+9gqBpxn8=;
 b=mgDUDnJbyo1JlMzgTTgTBeVinL040zNZosDfZeeDd/7oE0y4Z3bJ2ES6vkSLwhnE5xMOrRaxAaTlNj1J7osFtdvsn1InzcPs3+B5eB0Mxf9/odsMoK1adwFIz2t9akb6dWKdtKK+UVvlHzrki5oMEYOMFNTGS48nh9L83Tobtcc=
Authentication-Results: dkim=none (message not signed)
 header.d=none;dmarc=none action=none header.from=citrix.com;
Date: Tue, 28 Apr 2026 12:39:07 +0200
From: Roger Pau =?utf-8?B?TW9ubsOp?= <roger.pau@citrix.com>
To: Thierry Escande <thierry.escande@vates.tech>
Cc: xen-devel@lists.xenproject.org, Jan Beulich <jbeulich@suse.com>,
	Andrew Cooper <andrew.cooper3@citrix.com>,
	Anthony PERARD <anthony.perard@vates.tech>,
	Alexey Gerasimenko <x1917x@gmail.com>
Subject: Re: [PATCH 03/17] hvmloader: add function to set the emulated
 machine type (i440/Q35)
Message-ID: <afCOS0Ufbk790t8J@macbook.local>
References: <20260313163455.790692-1-thierry.escande@vates.tech>
 <20260313163455.790692-4-thierry.escande@vates.tech>
Content-Type: text/plain; charset=utf-8
Content-Disposition: inline
In-Reply-To: <20260313163455.790692-4-thierry.escande@vates.tech>
X-ClientProxiedBy: MR1P264CA0168.FRAP264.PROD.OUTLOOK.COM
 (2603:10a6:501:55::16) To CH7PR03MB7860.namprd03.prod.outlook.com
 (2603:10b6:610:24e::14)
MIME-Version: 1.0
X-MS-PublicTrafficType: Email
X-MS-TrafficTypeDiagnostic: CH7PR03MB7860:EE_|IA1PR03MB8263:EE_
X-MS-Office365-Filtering-Correlation-Id: 4ad62503-90b6-468a-c160-08dea512622b
X-MS-Exchange-SenderADCheck: 1
X-MS-Exchange-AntiSpam-Relay: 0
X-Microsoft-Antispam:
	BCL:0;ARA:13230040|376014|1800799024|366016|56012099003|18002099003|22082099003;
X-Microsoft-Antispam-Message-Info:
	B1yEYcCf3O3ulTIPNSmmQp7QngHdlhmac+TIJSolEUkj2xeQo8A5qFAlEpGv6i7mLfvWSywV0YjVBpit8l16Ab8PIqkS+7eeUFfpa8s5yvWJa9wdNRmh3vXzyttEpPtF/nM2bC+T1XdehEkUx0adhBvReSjytdj80T+LyZkllUOk/+qKBNGGGg5Wi++6Eil6+aBPUg6/tBMeVJyZAaskrXCJkF6JIRicjhGi7ouOjaXCwue7PtFIhJLJWXCXEku5mU5El8immnXhx6l7co4G98wlhj2KEjbUkw8FBedB2qAlAai16bG55rt9Nru+MjBXzo8dSvFKt1qQs5VUbZK1VQCk6iGi9dFkLqRbYM6zaNnTq44USxrphfjlNO8DajYQP7I6CI0Aq+3sg6nEAGB+46HJUsYhatE42V/Bh4EBKH4d1Pwd/u/2Wxr09oT2cLwzTWw/WYA97s4pjKw6uEBystuHBunkDCLXFRo7zxyaRE+exlajsMKNJwdxY70nSfS8YzR3IxYrfokXAenkpMicVbNwbWBvSvMlKVki1oj2+ZVSP/EHCkwP5hd4Y5h+rcqVduhG5lqH9pBY0fBjTVqPkVmReUAMjlRj3PgiSyKSvUroydIiy2r2FTPjeIKiigeQDl6WbDrZxDc9mLKZoSnYmZKcjh7S3imci6uV7RqvN8SX5Xj8fGtSyjTl7KShnzci5Cn03ijTlgTwukFrJxcQJIvY96qLWfcTz8YKp4NMdQ4=
X-Forefront-Antispam-Report:
	CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:CH7PR03MB7860.namprd03.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(376014)(1800799024)(366016)(56012099003)(18002099003)(22082099003);DIR:OUT;SFP:1101;
X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1
X-MS-Exchange-AntiSpam-MessageData-0:
	=?utf-8?B?VFVJMnlZdjAyZWJuYkwvbXU0YWlxQ2hyL3hXNCtaTjFWMWFEbk1GMEVseWtF?=
 =?utf-8?B?NDZUenNRbFdoSkREdDFDV1JEYnFDVHdtSStDeW9tOGdEMGRvbnRZMnBCM0p5?=
 =?utf-8?B?M2lEb2ZzM1E4RnBMWkhXWk9oQ3lqQ2J4Z2Zja1J2WktKZUp1ekNYWHVkVFBz?=
 =?utf-8?B?WGg4bXE4Z0tQeExoa2cyZ0JSQ0h4bGFBbWtobm1hTDJCY1dQdEJqNnFWOGdN?=
 =?utf-8?B?MHFadTlvbkExVWM5Z0dFOHFSZ1VReVBqTkZVV1o5S3dFNllYa3V6QitIQmtL?=
 =?utf-8?B?RzR6TXVua2FhMldCKzhFU0ZHcHhhdGJpeFIxUEZ4Y0w5MDdZblc5UklnU2VX?=
 =?utf-8?B?S0hUWTV2aW9XdUVpY1dERnRuTXdXTENFbGx3OVRKSXZ0d0xUWHFkeUJPY2ZS?=
 =?utf-8?B?QTBDZnd3WWhpdmFXMndtWmZvTjRPMXJOTEhmemVQeFdoRWE0SCs0dHRyMGxF?=
 =?utf-8?B?cGIxM1dQRXZab0pLWG9SNDFkemM5Z3JBUnVlYU5kZm16Vk5wZU5IdkZSZ0J4?=
 =?utf-8?B?bGVKMjhoS2ZrTDVQVWllRGJ1WVhTZmdqYUxnMTFpV0I0SDh2OVlZWXFNSXM5?=
 =?utf-8?B?V0xVTWExc1lyR2Q3a1dWSGtJOS9jaGRQRUJLOGRaODRkY1pxdDRPcDhjaVhr?=
 =?utf-8?B?OGxxKzZkaWtkQXNFTFo2VXVhMkd5S3BRczVmVy9wd0gybDFLNEZpWVJ6ZFFT?=
 =?utf-8?B?c1RvNmpzUkdzREw2UnZzN0tvUm9Ebm0wc3hOUlAycDB4Y01DbG5IOE9nRElz?=
 =?utf-8?B?OUJQaDc4Wk93aFpldktNRmE0a0o5cGZJNVEyanRRM3JCZzIzSDgzdWFkTjdx?=
 =?utf-8?B?RjZjamhUaWRtc1ZUTUVRNEJTWkZwaHd1UmpCWTBGNE4waXpNSStrL2llSXpZ?=
 =?utf-8?B?SVBmeGhoSThpMS9uWVoyOEh6VUlPbHB3Mkk0NFd5azg1cTdLWnZMZHJheGpO?=
 =?utf-8?B?RmM4OU5Ob3IrTzZqNk9LTk5BaHFyREZtVlQyRHZSRm5CM2VjZmFpbFMwbmhI?=
 =?utf-8?B?M08wTXhjOHE4c1RHeC81bHBOTElsMVZEVEtIdmI2cElEVG43Ykl5MHdUVVBS?=
 =?utf-8?B?ZlMwNWgzNUNEUERyNGxDQmxqMHQ5OHhqTys4NHdnYkxYMFBJaHIwOVE1VHVy?=
 =?utf-8?B?YmFoWkFoZzlVYWtmVkY1TVlNWWFPdVI2ZkpYbXFra2Y3dHZ3QmZGSW9kZ2gw?=
 =?utf-8?B?Tll3aEt2bDdwVTcrYUZJZDduMXdoNElqZlhOOGJCOHp6eWJCM2VmMzBBRzRs?=
 =?utf-8?B?YmtWdkNNUDdmeU16L1YwNlJnWDhqYmtTU040MWJ4QU5HK3BJRXMxS2xQcmE5?=
 =?utf-8?B?Z3U0Q1RWMXNQbTRWY1hMcmpKNDVWZEtrWmFkTU5zSVV0NkVBS1ZvZzhncHAr?=
 =?utf-8?B?THBSakFLUkpUQWZ1Q3h3aHVQWkczWncxMGdJYktxV0RaY0lvQWJSMXcwdm1U?=
 =?utf-8?B?WUlOY1FYSTJCSTBQL3NCeFVnYURGMHBFS3NmR0UxbFgxQm45cXhVZVdPSlRW?=
 =?utf-8?B?N003bkhRN0ZJazFtYUduNkEyYnFSWTNRR2tXZ04xTDVNb0o4MkdET3FZR1kz?=
 =?utf-8?B?bXR0V0hLSHl0dlBnMVdRcVJCVEk3cGNaVERRZ01RSjRpUW94bzh0cHNYc2lh?=
 =?utf-8?B?OHpxbTFOT3FuUXRoUThydlcvdmM4TjFaUmJQSW4wVFVoRjJESXcwTTFNS29P?=
 =?utf-8?B?emtOZkRwdXBnV2VWQkp6K2dudE9jaklFaVY3WkdBSmxPNzZmcUllcElrdm45?=
 =?utf-8?B?NUlIVTVkUHE1K0ZFbTNKVGk4bjBBVW5kNktGc1hLRFRNUm5ZMTBoSEhVbFpw?=
 =?utf-8?B?NkxrUy9PeXgzZmNGSXc3OVhHeDRiWk50TlJ6Q1E5WW5wYjJSVzlXb2lSYW9L?=
 =?utf-8?B?U0k5cmNEZ01SZi9aR3JrL3I4ZVY3S09nN085SFQ4V1JiK3prTkZyLzZtWUxp?=
 =?utf-8?B?NFNHbUdzYU5oYXZFS1ZZWS9qSVp6OC9DdDExNU1tcmFIWndsUVJaaE84bmVX?=
 =?utf-8?B?VkhwY1hnRkFFMk5sczBhQ3FvdVlqeTNEZ2w2TzM4T1JTWTdpOHRCZ250bXY5?=
 =?utf-8?B?Z3lIeUhNS05YeVFPSkZ4eTN2eDNBRjE2TGlCQVA4bTZ0R3QvWmdYc3p1Y0lG?=
 =?utf-8?B?VjM1dkU2MmJ0dmtYL1pOdTR2R0RVOFc4TFR5NjF3RURPRG4yVEVJT1NMUjYy?=
 =?utf-8?B?aHBwZXg1Zzhyamt2NjBVRno2dmhNU1JYUThBYUtZUFBOUjkzanozWVlhaWw4?=
 =?utf-8?B?RzFYenU4SzZKN2szcFk2ZHdpMm0vZWQzOVpZUTZ4MVQ5VmVXcDdPd2NjNlo3?=
 =?utf-8?B?aHBqbC9TNHRMdkVraXlSUEdITGdHWGpDZ002M0tDRDdMaTMxTDJaQT09?=
X-OriginatorOrg: citrix.com
X-MS-Exchange-CrossTenant-Network-Message-Id: 4ad62503-90b6-468a-c160-08dea512622b
X-MS-Exchange-CrossTenant-AuthSource: CH7PR03MB7860.namprd03.prod.outlook.com
X-MS-Exchange-CrossTenant-AuthAs: Internal
X-MS-Exchange-CrossTenant-OriginalArrivalTime: 28 Apr 2026 10:39:11.0309
 (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: ADfxTkibjmOTSxm5iU5iMoriQ+JlnLhpHa7AKOzCk6ZiwlLJ23Oo22j1uh+wWev0B2+JqHyp/sEpTCYsYS5WPg==
X-MS-Exchange-Transport-CrossTenantHeadersStamped: IA1PR03MB8263
X-purgate-ID: tlsNG-d62444/1777372754-B4A11FF4-F6B51C6D/0/0
X-purgate-type: clean
X-purgate-size: 4034

On Fri, Mar 13, 2026 at 04:35:01PM +0000, Thierry Escande wrote:
> This adds a new function init_pc_machine_type() which allows to
> determine and set the emulated chipset type. Possible values are
> MACHINE_TYPE_I440 and MACHINE_TYPE_Q35 and stored in the global variable
> machine_type.
> 
> The machine_type variable will be used from multiple places in following
> commits.

Is this initialization something that OVMF or SeaBIOS also does?
(maybe not for Xen ATM)

Asking myself because as said earlier we want to possibly get rid of
hvmloader, plus we will want ECAM support in PVH at some point.

> Signed-off-by: Alexey Gerasimenko <x1917x@gmail.com>

Same as previous patch, if the first SoB is from Alexey the From:
(patch author) should also match.

> Signed-off-by: Thierry Escande <thierry.escande@vates.tech>
> ---
>  tools/firmware/hvmloader/hvmloader.c |  2 ++
>  tools/firmware/hvmloader/pci_regs.h  |  4 +++
>  tools/firmware/hvmloader/util.c      | 42 ++++++++++++++++++++++++++++
>  tools/firmware/hvmloader/util.h      | 11 ++++++++
>  4 files changed, 59 insertions(+)
> 
> diff --git a/tools/firmware/hvmloader/hvmloader.c b/tools/firmware/hvmloader/hvmloader.c
> index 6d23150fc9..626cc53649 100644
> --- a/tools/firmware/hvmloader/hvmloader.c
> +++ b/tools/firmware/hvmloader/hvmloader.c
> @@ -332,6 +332,8 @@ int main(void)
>  
>      init_hypercalls();
>  
> +    init_pc_machine_type();
> +
>      memory_map_setup();
>  
>      xenbus_setup();
> diff --git a/tools/firmware/hvmloader/pci_regs.h b/tools/firmware/hvmloader/pci_regs.h
> index 7bf2d873ab..4d4dc0cd01 100644
> --- a/tools/firmware/hvmloader/pci_regs.h
> +++ b/tools/firmware/hvmloader/pci_regs.h
> @@ -107,6 +107,10 @@
>  
>  #define PCI_INTEL_OPREGION 0xfc /* 4 bits */
>  
> +#define PCI_VENDOR_ID_INTEL              0x8086
> +#define PCI_DEVICE_ID_INTEL_82441        0x1237
> +#define PCI_DEVICE_ID_INTEL_Q35_MCH      0x29c0

In Xen we have a separate file for vendor and device IDs, called
pci_ids.h.  Maybe it would be better to use a similar approach in
hvmloader, and keep pci_regs.h only containing PCI register offsets.

> +
>  #endif /* __HVMLOADER_PCI_REGS_H__ */
>  
>  /*
> diff --git a/tools/firmware/hvmloader/util.c b/tools/firmware/hvmloader/util.c
> index f1ed1eb48d..f9116bea4d 100644
> --- a/tools/firmware/hvmloader/util.c
> +++ b/tools/firmware/hvmloader/util.c
> @@ -22,6 +22,7 @@
>  #include "hypercall.h"
>  #include "ctype.h"
>  #include "vnuma.h"
> +#include "pci_regs.h"
>  #include <acpi2_0.h>
>  #include <libacpi.h>
>  #include <stdint.h>
> @@ -648,6 +649,47 @@ void __bug(const char *file, int line)
>      crash();
>  }
>  
> +machine_type_t machine_type;
> +
> +void init_pc_machine_type(void)

Since detection is done based on PCI device IDs, it might be better
placed in pci.c, and so you don't need to include pci_regs.h in
util.c.

> +{
> +    uint16_t vendor_id;
> +    uint16_t device_id;
> +
> +    if ( machine_type != MACHINE_TYPE_UNDEFINED )
> +        return;
> +
> +    vendor_id = pci_readw(0, PCI_VENDOR_ID);
> +    device_id = pci_readw(0, PCI_DEVICE_ID);
> +
> +    /* only Intel platforms are emulated currently */
> +    if ( vendor_id != PCI_VENDOR_ID_INTEL )
> +        goto error;
> +
> +    switch ( device_id )
> +    {
> +    case PCI_DEVICE_ID_INTEL_82441:
> +        machine_type = MACHINE_TYPE_I440;
> +        printf("Detected i440 chipset\n");
> +        break;
> +
> +    case PCI_DEVICE_ID_INTEL_Q35_MCH:
> +        machine_type = MACHINE_TYPE_Q35;
> +        printf("Detected Q35 chipset\n");
> +        break;
> +
> +    default:
> +        goto error;
> +    }
> +
> +    return;
> +
> +error:
> +    printf("Unknown emulated chipset encountered, VID=%04Xh, DID=%04Xh\n",

We don't usually use the h suffix in hex numbers in hvmloader, it's
more common to prefix them with 0x, so I would recommend to use the %#06x
formatter instead.

Thanks, Roger.


From xen-devel-bounces@lists.xenproject.org Tue Apr 28 10:48:40 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 28 Apr 2026 10:48:40 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1295580.1572239 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wHfzX-0008Cf-1z; Tue, 28 Apr 2026 10:48:35 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1295580.1572239; Tue, 28 Apr 2026 10:48: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 1wHfzW-0008CY-Va; Tue, 28 Apr 2026 10:48:34 +0000
Received: by outflank-mailman (input) for mailman id 1295580;
 Tue, 28 Apr 2026 10:48:34 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <roger.pau@citrix.com>) id 1wHfzW-0008CQ-3Q
 for xen-devel@lists.xenproject.org; Tue, 28 Apr 2026 10:48:34 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wHfzT-00GFYN-GN
 for xen-devel@lists.xenproject.org; Tue, 28 Apr 2026 12:48:33 +0200
Received: from [10.42.69.12] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <roger.pau@citrix.com>)
 id 69f09075-2eae-0a2a0a5409dd-0a2a450cd162-26
 for <xen-devel@lists.xenproject.org>; Tue, 28 Apr 2026 12:48:32 +0200
Received: from [52.101.52.1]
 (helo=BL2PR02CU003.outbound.protection.outlook.com)
 by tlsNG-d25034.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.1)
 (envelope-from <roger.pau@citrix.com>)
 id 69f0907c-62f1-0a2a450c0019-346534013a11-3
 for <xen-devel@lists.xenproject.org>; Tue, 28 Apr 2026 12:48:29 +0200
Received: from CH7PR03MB7860.namprd03.prod.outlook.com (2603:10b6:610:24e::14)
 by BN8PR03MB4945.namprd03.prod.outlook.com (2603:10b6:408:78::19)
 with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9846.26; Tue, 28 Apr
 2026 10:48:27 +0000
Received: from CH7PR03MB7860.namprd03.prod.outlook.com
 ([fe80::f5ba:35df:1c9f:b343]) by CH7PR03MB7860.namprd03.prod.outlook.com
 ([fe80::f5ba:35df:1c9f:b343%4]) with mapi id 15.20.9846.025; Tue, 28 Apr 2026
 10:48: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=b3BN/R41B+IyuCmpSm6ilzIHH5qZkYlcdDL6AhRu4JqDr4Xd/lWuujJDUs2iScnIpUhIAwVwHbRB/RhfaGthN7k02shJQLvA1JZx58Z5t1eIwxuJwTPBYc4MRhkOR8FCOLwQz6e3r8MO+/Pk26ql7nGD1avsj39rd0fDoLzBcGdL8nMdVedjzrwYUURBBMe3pUSiQ4WMZbAaf/L7gDDWEKiM5Rmg2nHIspXqAJLMds/UDdVL4KIXuXS2242SsXdz75LROevdAxScyKV795GHkINNFDtPMfY04LfwOaaFE0D7nDRXMHePLroqskrRb58xuErY3F9NbJK2REAiyxKsuQ==
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com;
 s=arcselector10001;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1;
 bh=ScmrUjwHEK1f6U3CDn9Gwyk+phawh4mQ3+ZmFetVPjg=;
 b=YRolIm0n2r9GvtNp09863JEZWCQROW9xvdyNkvJ6tR5r0DUn7Dsmy6BczdIvOrXHCd9ZjeLTHdp+3DkeqPRU2IUTH+qcAPEls3qD5DSZRdOWBbwu7p5ss7L7EwE5oOAqEP6YXKNckjkExiisV3AbvJGGgSI4j8DvF9GQRvW3opLbx9kJBgYef4AamfGC/pZRpaeTLaGEs8gvmgf+Ic5T6F+HD5UwiZhXaMa56+qHJFToD5eN283JmcJ1jt5VP/RsCUu7476jc8VoSThOQcEbqCqy+CxRHBn1kZwKJ7mAfARzmwf00UB6v2foiPrP3BkjY9MT7pgEQgdR3dZ+AIh+/A==
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=ScmrUjwHEK1f6U3CDn9Gwyk+phawh4mQ3+ZmFetVPjg=;
 b=JePOjYRZrcw3aTfeMMWcREOtO7U8P/4nS8hJBqZuimdh3Q8O4Kh+agJ45ZkisOWqlJTC+/jtfRJViynjm5O57Vz2M6niEnSvimOOhumgRFQPtryrduOccidRZCHflMn02QcC7O+gnAynGvcEhF3+pBSCamVccn76UsUsG7nWBKM=
Authentication-Results: dkim=none (message not signed)
 header.d=none;dmarc=none action=none header.from=citrix.com;
Date: Tue, 28 Apr 2026 12:48:23 +0200
From: Roger Pau =?utf-8?B?TW9ubsOp?= <roger.pau@citrix.com>
To: Thierry Escande <thierry.escande@vates.tech>
Cc: xen-devel@lists.xenproject.org, Jan Beulich <jbeulich@suse.com>,
	Andrew Cooper <andrew.cooper3@citrix.com>,
	Anthony PERARD <anthony.perard@vates.tech>,
	Alexey Gerasimenko <x1917x@gmail.com>
Subject: Re: [PATCH 04/17] hvmloader: add ACPI enabling for Q35
Message-ID: <afCQd2rTmiGpR_bk@macbook.local>
References: <20260313163455.790692-1-thierry.escande@vates.tech>
 <20260313163455.790692-5-thierry.escande@vates.tech>
Content-Type: text/plain; charset=utf-8
Content-Disposition: inline
Content-Transfer-Encoding: 8bit
In-Reply-To: <20260313163455.790692-5-thierry.escande@vates.tech>
X-ClientProxiedBy: MA2P292CA0022.ESPP292.PROD.OUTLOOK.COM (2603:10a6:250::11)
 To CH7PR03MB7860.namprd03.prod.outlook.com (2603:10b6:610:24e::14)
MIME-Version: 1.0
X-MS-PublicTrafficType: Email
X-MS-TrafficTypeDiagnostic: CH7PR03MB7860:EE_|BN8PR03MB4945:EE_
X-MS-Office365-Filtering-Correlation-Id: 28f202ab-b534-4069-dd06-08dea513ad5e
X-MS-Exchange-SenderADCheck: 1
X-MS-Exchange-AntiSpam-Relay: 0
X-Microsoft-Antispam:
	BCL:0;ARA:13230040|366016|1800799024|376014|18002099003|22082099003|56012099003;
X-Microsoft-Antispam-Message-Info:
	yvEaXlKeW3dzX5QU/oaKuk7mwPOYgAS46w9HaYLfr/y1RlAuX1MLwVyg2Sc+x016jasrJM3ZE1PXPfpWY/4rCJHkXleq8p9SHB8o4HQp4Y0l9mH3yoDDBsQSMTdHyZttWZiz5mMub53QsDBvD4Ci878EOqIn+sCcbq2irbtiayHIV9oZVZU+jbIipIr5+3Rm/67T89U/lkvizZrAq8Aaxw3SzbKQKhlTbhPy0neFEJ3Y3SV5Pvy+WjwwyohZDVlas274ZBS1t0Pfdzg9t/OlM3F5y8KRABRqUdDTYSl8WWVKJYfFC0K9v7GOPvolk7P82WJPcPCk7tH/xD+sg/EAm2oX/4+IC/wtMOQBul1fB03zYedvhA71GYj0OgLrOFuKQEIySGRbShmRW7pkKGGEeg959wWCDXCWjVRkjzIKwqkhO7N741+n9BLFwqeSMH7p/OexwmRinvAfKg7jgPqw4mth5QrQD7wkS8J0/4ArJO64jBJ7MOQSnNeOQs5AXMUfs8HGGSds94VeBPv14yA9E39QDqTo3mKXuE9UMhB+5/BmIln9MZAnJeQFQ/57NYTJ7pobfFjuPmBN1rKyuleP3OvNo9a5StF6AQgAc6P7O3y5JCbOPlKBJTVGgeu5kt6ApQSxiXXYoxI2k1XR6BjLKLoTFNf6KzAQytiNX7n5DEflmKapesmv6ljdV461ftuY+4SSxfjMhhYBRIHmEw8jKPK+yGJUTEjiM1O6xzhF/DI=
X-Forefront-Antispam-Report:
	CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:CH7PR03MB7860.namprd03.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(366016)(1800799024)(376014)(18002099003)(22082099003)(56012099003);DIR:OUT;SFP:1101;
X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1
X-MS-Exchange-AntiSpam-MessageData-0:
	=?utf-8?B?UElvTDJYS0tqZlRpYmtnbnJJUEFqbzBvNmtTQXBtNTlnYUVRd2FXL3NEWHRY?=
 =?utf-8?B?MkpPN2tORUgyY25XejhGNENFR1hWbTk0b20xM1RhaXc5Z015M0pUcTU0alNX?=
 =?utf-8?B?enl5bVZSOEpHVy82NXFkcUFwemRLd3d0R2h6b3Z3SnpubjZucGlzdzRtNFZB?=
 =?utf-8?B?dkhsZkt3WHE0SVBxM2hUc24rR3UxckZKalJLd3hGQTRqYVRTRzIvSzQ5aEVV?=
 =?utf-8?B?UDRLZGp0V0tzcEVHN1BjaU8zWHdSYzdwSkZEOWdIMVF5OGs4VGpzbmkvdnFw?=
 =?utf-8?B?ZmxycHlvUmFTck5iWW5MTy9hcFBITmtFUSt5enN1cjZjbHdSS0dPeDVTMWdp?=
 =?utf-8?B?N0VIajBKa1dIb1NHMEJTRVIrQ0psSURyMXVvbC9lQU9IcWNCOGxtN24xazEy?=
 =?utf-8?B?MlR2b09vZVNXejRSbmpXTWYwSGp4cVQ4c29lQW5VcjVyUzIzSGs4MFlKQ3Nh?=
 =?utf-8?B?SGpJTWUwaDdMaDZHU0tYalFMUVhZMVFmN1ZubzJEUHdMYXFROVo4TDFmZFUz?=
 =?utf-8?B?YmpWemVlcjJKOStkL1hBOFVLQnpnUk92VnZ5MUg1NWFyek5oM3R3dGZHbm1Q?=
 =?utf-8?B?V1VRL29BbkRGdUkxV2sxSlhLa01TRDE3WDBKcWE2MnZ0b1lFU3ZLVHAzUVdl?=
 =?utf-8?B?TlZSdXozWThMSUpVbk9FUTVLUzMwQ2xEQjhuQnFaa0loTEFybFdkYTd5emk4?=
 =?utf-8?B?VXdHZ1dONWF2Q3pieWIyTzhrelVCRGhtS05pUFFSQXlrL1p3OTNIRnYrcE9s?=
 =?utf-8?B?MXBocGxFNjErSHZaejhPdm41a3ZLdmhMcFFmdlIvUFVycFBhNlFnanBOOEwr?=
 =?utf-8?B?Z2VvNXNqNXdEYUtObDlHNHhKWUR3Mkh5ejVpZVplU25tK0tEcXNBdWM0alQx?=
 =?utf-8?B?Mi84Y2MyWlpYTkJwWGFvb1p1c3Z2SnphRGdDYkJ3Y09pMmdGTzY0MmwvNjFG?=
 =?utf-8?B?Um0walhCRTNlUDl0SDlyakJlNDArRnBVRnlOSEFDTkxlZ2VwTHZFclZneW9o?=
 =?utf-8?B?SFRRUkt2N3FyczBaOG5vUEpVVkNBR1N6ay8xM2szQUtrVUxkeXNwTEZ1QmhZ?=
 =?utf-8?B?QWdWNzExblRMWkl6dExoWG0yeDJEVXFGcXg3QWpjWTNEdERNQ0F0YTJqaUU5?=
 =?utf-8?B?UDJwYk14L0lpbnRHK0FZeFZCb3NqRWgrZWNEMGpkMStxeUc4dkV2Y1BNZHFa?=
 =?utf-8?B?aW91UGFQRS85MW1DWk5mMWJFdmZyWjhkNlFkK3kraWlob2s2SG5ybDBERkRT?=
 =?utf-8?B?c0ZFSno0MHZUU1FTZTFuSlZkNnR2RGZWVVJkT1ByK08wek1ranhpR1NCK3B3?=
 =?utf-8?B?TEVyNWVqK2dPcjZubjY1TGVuOThKRFpDc1h5cFMycTl6MkM2Uzk3R0luazI3?=
 =?utf-8?B?WUF1dDBiMkN3K0U5ekpOVmxZNEJ4Nk5PbGZsZTJQZHgrZTEveGxWcmNUK1V2?=
 =?utf-8?B?NytwMmpRcmtHMzBsSVd4UzNJTTBDZGRSb0dUem5QcWJVWU5ybmdDVWc4NU10?=
 =?utf-8?B?MXRkQWptMnE3bVZEN0xNdDhXbDBCak40Yy92N3RPZnhmYTByK3Z0RmZlWE1C?=
 =?utf-8?B?bjZna0FsNnpHWEhlNGN2WkludUdobUlLanRUZitwRVE2UlEvZG1jd1ZLb0Zt?=
 =?utf-8?B?L2lXek9Qek1EWktxVHhXaUZsVDI4WXN2UHpRTlhVNkZPTmFwdDBRWmxLOTVP?=
 =?utf-8?B?UDhaNzdSeGxGT2tqaE5hV05VeGQ4cVM1ekQ0K1ArU1FEZGVKeUdKeG80bm82?=
 =?utf-8?B?Y2tXUXBtdXhGYTFYbXRnU3AxdHEwdFV1a1NHc052Qzd4Q0xlTmdNUmdYNEZ2?=
 =?utf-8?B?RFYzYy9RN1pnQmgybU1heFdoOS9xMjB6M3lkQWg1WXR2ajVCamhGZDkreWE3?=
 =?utf-8?B?N29qWDlsM1JiVDN1azZKM1djTUhCZW1rK3N0eHRRM1l1ZHZyUVhYc2IvRTdJ?=
 =?utf-8?B?ZHMvcmdoV1ErRmtPTDBSbFRoNExyaUVYaDVvRFBkb0dBaCtEcjNZVjlsSWsw?=
 =?utf-8?B?dDV3TmxGQitCaXpLeXd0c3NjZWc3OHpLWllmbElKcnFWQWJ3UEs0WmhweEF4?=
 =?utf-8?B?K040WjZ1Q1VTUERZZ1JlY2haZGVDNmtIdHpSU092c0VzUTBGUmFmOURYVi91?=
 =?utf-8?B?TGxkSnVudHArT3d5Yi9hNjRFNlVaak5ucWVxR1NEWXgyTVlqb1JzSU83eG5O?=
 =?utf-8?B?Y1NTTnVWUlY4elIzdnQyVkF5UzArSXQ4R29sSGFDVHE1L2s4RW5sTFgvU1pV?=
 =?utf-8?B?bklrcklkdThYSURxNEkwZWZQWmdRajlvNjJKSTZDaE9SSFNXbXREUk1teE9l?=
 =?utf-8?B?M1krRFBVS2UrYnhxTVBsQldYQmZ4NncrY01ac1FiQlpKWUVyVmxuZz09?=
X-OriginatorOrg: citrix.com
X-MS-Exchange-CrossTenant-Network-Message-Id: 28f202ab-b534-4069-dd06-08dea513ad5e
X-MS-Exchange-CrossTenant-AuthSource: CH7PR03MB7860.namprd03.prod.outlook.com
X-MS-Exchange-CrossTenant-AuthAs: Internal
X-MS-Exchange-CrossTenant-OriginalArrivalTime: 28 Apr 2026 10:48:26.7391
 (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: Xe+LRc7U+cpa6R4bHnrma7Sq94SRJdbDrwzxvgqnLuIvOwFUoXsRnjiom3lnmw4qFoFqRYJbHnUKYQya04nLTA==
X-MS-Exchange-Transport-CrossTenantHeadersStamped: BN8PR03MB4945
X-purgate-ID: tlsNG-d25034/1777373309-F6A08CF5-1AB4C231/0/0
X-purgate-type: clean
X-purgate-size: 1670

On Fri, Mar 13, 2026 at 04:35:05PM +0000, Thierry Escande wrote:
> In order to turn on ACPI for OS, we need to write a chipset-specific value
> to SMI_CMD register (sort of imitation of the APM->ACPI switch on real
> systems). Modify acpi_enable_sci() function to support both i440 and Q35
> emulation.
> 
> Signed-off-by: Alexey Gerasimenko <x1917x@gmail.com>
> Signed-off-by: Thierry Escande <thierry.escande@vates.tech>

Reviewed-by: Roger Pau Monné <roger.pau@citrix.com>

It's not great to add more stuff into hvmloader when we want to move
out of it, but it's also not helpful to tie the Q35 addition to the
removal of hvmloader.

> ---
>  tools/firmware/hvmloader/hvmloader.c | 19 +++++++++++++++++--
>  1 file changed, 17 insertions(+), 2 deletions(-)
> 
> diff --git a/tools/firmware/hvmloader/hvmloader.c b/tools/firmware/hvmloader/hvmloader.c
> index 626cc53649..f6cc3fa4b9 100644
> --- a/tools/firmware/hvmloader/hvmloader.c
> +++ b/tools/firmware/hvmloader/hvmloader.c
> @@ -258,9 +258,24 @@ static const struct bios_config *detect_bios(void)
>  static void acpi_enable_sci(void)
>  {
>      uint8_t pm1a_cnt_val;
> +    uint8_t acpi_enable_val;
>  
> -#define PIIX4_SMI_CMD_IOPORT 0xb2
> +#define SMI_CMD_IOPORT       0xb2
>  #define PIIX4_ACPI_ENABLE    0xf1
> +#define ICH9_ACPI_ENABLE     0x02
> +
> +    switch ( machine_type )
> +    {
> +    case MACHINE_TYPE_Q35:
> +        acpi_enable_val = ICH9_ACPI_ENABLE;
> +        break;
> +    case MACHINE_TYPE_I440:
> +        acpi_enable_val = PIIX4_ACPI_ENABLE;
> +        break;

We might want to add a newline after the break statements.

Thanks, Roger.


From xen-devel-bounces@lists.xenproject.org Tue Apr 28 11:08:49 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 28 Apr 2026 11:08:49 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1295595.1572249 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wHgIr-0003GX-Oh; Tue, 28 Apr 2026 11:08:33 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1295595.1572249; Tue, 28 Apr 2026 11:08: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 1wHgIr-0003GQ-Kq; Tue, 28 Apr 2026 11:08:33 +0000
Received: by outflank-mailman (input) for mailman id 1295595;
 Tue, 28 Apr 2026 11:08:32 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <roger.pau@citrix.com>) id 1wHgIq-0003GK-2D
 for xen-devel@lists.xenproject.org; Tue, 28 Apr 2026 11:08:32 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wHgIp-001aai-0j
 for xen-devel@lists.xenproject.org; Tue, 28 Apr 2026 13:08:31 +0200
Received: from [10.42.69.3] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <roger.pau@citrix.com>)
 id 69f0951c-bab6-0a2a0a5309dd-0a2a4503aea2-44
 for <xen-devel@lists.xenproject.org>; Tue, 28 Apr 2026 13:08:30 +0200
Received: from [52.101.61.8]
 (helo=DM1PR04CU001.outbound.protection.outlook.com)
 by tlsNG-33051d.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.1)
 (envelope-from <roger.pau@citrix.com>)
 id 69f0952d-672d-0a2a45030019-34653d086079-3
 for <xen-devel@lists.xenproject.org>; Tue, 28 Apr 2026 13:08:30 +0200
Received: from CH7PR03MB7860.namprd03.prod.outlook.com (2603:10b6:610:24e::14)
 by LV4PR03MB8211.namprd03.prod.outlook.com (2603:10b6:408:2dd::13)
 with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9846.26; Tue, 28 Apr
 2026 11:08:27 +0000
Received: from CH7PR03MB7860.namprd03.prod.outlook.com
 ([fe80::f5ba:35df:1c9f:b343]) by CH7PR03MB7860.namprd03.prod.outlook.com
 ([fe80::f5ba:35df:1c9f:b343%4]) with mapi id 15.20.9846.025; Tue, 28 Apr 2026
 11:08: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=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=p1QzCckY61iSzLrKX9QyjWU7lt2yhkizItH508K8Z+D4o3QRylZvT/3HmlN7UhEYnBKrQkJyLuFfU5VDsLqMx2CB5YxZp5JdgaHdt+nbDJiOWl6Qe27DXHIqF6vfi9WTeIH7T6NaQVVEMJoQh3L2VE45/Z7pqIyaVAt0SbKvmg+VTkwkSSvZGl49VBWhTLzdxrvAPEuC9KL6S9iMOwKEpISXbR/OGwY5tvV9CMBXZt9Ya6MJEbdTW7ud8A1elvoQd+7GDWdMY8L8BvwEDoLEW3eolbJ+PSziarHaL7oK+Joeih5YTD+g/DD/w+CIXY5cUBdZQtAk58DZlNC7dHkZCA==
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com;
 s=arcselector10001;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1;
 bh=S6P44J+VlHwzIRCO4d6jWzHgfjBNEQOdeCir1Yluc0U=;
 b=gyhopVH/qOJbDrZC3nYCfeL7KghQ7o/rkNaujgVBTlvisiJ7EQAHx3aNaiqLvmR5CaqvTuT8qwq+/joEirVv1yjqRrJn2snpV7Yz2cmbWI9GOmudGX8bUKyIEUg1B5qtxos4zzPX+V8XErleori54YmJhzJgfF8dJXNs7lfXstZE5jULmjoC+HkNgReeTBhrJZcAEgKGjkJxFC6+/89UnbjQAtIa91AB5UcMIAn4I8BHeBwBmfDX2R3Fj4+9/JBI8603KtGmn8+TDjw8CLxeUMs8Alev7JnUYEJusIikJv5MVhfVsU1tOv3IgWFoBcGceldquqzyhu970m/dGSZTRQ==
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=S6P44J+VlHwzIRCO4d6jWzHgfjBNEQOdeCir1Yluc0U=;
 b=x97+vMpotvIP/mvaJzr1EaWyzElYeis+v/2nuahpu0455JTACqRJuAFPjuiUTN4ys2N1b/uayh3XAwdg2ggf2Wq7xQ7wEAgxvYSsVnw6kB6GZzVPWS9IvfPWy7C0gjg9M6au7w0ixlD9SvF8ghEFzNn36qVvicntI4QD7BtoRvo=
Authentication-Results: dkim=none (message not signed)
 header.d=none;dmarc=none action=none header.from=citrix.com;
Date: Tue, 28 Apr 2026 13:08:24 +0200
From: Roger Pau =?utf-8?B?TW9ubsOp?= <roger.pau@citrix.com>
To: Thierry Escande <thierry.escande@vates.tech>
Cc: xen-devel@lists.xenproject.org, Jan Beulich <jbeulich@suse.com>,
	Andrew Cooper <andrew.cooper3@citrix.com>,
	Anthony PERARD <anthony.perard@vates.tech>,
	Alexey Gerasimenko <x1917x@gmail.com>
Subject: Re: [PATCH 05/17] hvmloader: add Q35 DSDT table loading
Message-ID: <afCVKAelR1ZyGB2U@macbook.local>
References: <20260313163455.790692-1-thierry.escande@vates.tech>
 <20260313163455.790692-6-thierry.escande@vates.tech>
Content-Type: text/plain; charset=utf-8
Content-Disposition: inline
In-Reply-To: <20260313163455.790692-6-thierry.escande@vates.tech>
X-ClientProxiedBy: BN0PR04CA0009.namprd04.prod.outlook.com
 (2603:10b6:408:ee::14) To CH7PR03MB7860.namprd03.prod.outlook.com
 (2603:10b6:610:24e::14)
MIME-Version: 1.0
X-MS-PublicTrafficType: Email
X-MS-TrafficTypeDiagnostic: CH7PR03MB7860:EE_|LV4PR03MB8211:EE_
X-MS-Office365-Filtering-Correlation-Id: 386fcafc-a559-4797-2eae-08dea5167918
X-MS-Exchange-SenderADCheck: 1
X-MS-Exchange-AntiSpam-Relay: 0
X-Microsoft-Antispam:
	BCL:0;ARA:13230040|1800799024|366016|376014|56012099003|18002099003|22082099003;
X-Microsoft-Antispam-Message-Info:
	DSJ5DAOiJyvC2sSqWu1D2ELbX17crJF0py7xJKx4rVnEKJAXYdeSvorRZoNBbDHrnx1FMUsfUPn6YmYlpEZA6++RD2ZSlb2IgH6xScMJYXcJD+SpwrPREW3tGgVjI9iz8tz1FpVeVQnOGZSlsTR4a5//WMlNdKNASxg53RkjVa1WFL3i5ZDM6A1UZtLj0xCNh4pLrqIRMcVCjB145KkuMkK9l8rfMZk76bOnv/TVdEXc0KhiDBChWFR4O+Sf14CxhvzfRNO+f4kAdI7LcFn++ojn7wZ0Ju/qAZs9QZwKxZMzyLYxmBJ0r+2duKjWSYw4fHEertjeDJxRuHazl8+gjH1FUU5UrZHV7O1ANn85k2Hwtzdpmn5ofsev//NXxaGboY9VrzKZzLc1+w3di0fQH70kLxcOL+SFGfKXRwep0EusDI1qoACIkQzC7UcvGLlOOuevVncAVKgC6jWodeEAeUrQhD7bJw8hHkNIrEB0tcQYEY/CJKA/Cwh2qnT8ZufUnmEa81B8LtsQ3soHwtCGQGI6z5xLOQR6wcerrIXZNQqE3MjgQNFbNxrAg+PCo9AR8xDZHFhaAZHSPwz1JJ8IMNJzFzvoQGDd8sWYzpaMt0uvK/EzsELCmk9CVDo4fjFODHZo+qacc6Ut7h+PiF1W5j/xsUTQiEI3HBCtvioP4O3OJd/ihTjqenpeHuu9Petc63TcYxi14JCoUnr9cC3w2xiu5glPaQA/J0tk8S+6LgM=
X-Forefront-Antispam-Report:
	CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:CH7PR03MB7860.namprd03.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(1800799024)(366016)(376014)(56012099003)(18002099003)(22082099003);DIR:OUT;SFP:1101;
X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1
X-MS-Exchange-AntiSpam-MessageData-0:
	=?utf-8?B?VC9KMmZ1UzlWMlRNSEQ2YUdrL1NTOFcvbk1SNm84M0h2MTdVS2gxdXA2Zi93?=
 =?utf-8?B?Zm11SUtIQnZPSlVtMU9ZT24rUjN2RXZiREh2bGVJSUJmVFFYV1JDcnNIVEtD?=
 =?utf-8?B?KzNOTGJzUWoxRS9KcHp3ZUljOHFnd245MEpHYlY2OFpqYXAwQUkrR1Q5Y21T?=
 =?utf-8?B?RFREeFdWeWtnOStxT0dUVjRIMXQxa01XRnFUTlRNOXk1TWhZYzlZUXlpaFk1?=
 =?utf-8?B?VzFBRVBOZXFOSmhjMmYvdGgyOVIyRUVhQkVVT1VFSEhBemdiNXU4SFQ1LzVC?=
 =?utf-8?B?eTZuSWk3TktpOGxUM21CTFRzTGlVKzQ1Tk14Wkh3WjdMTnRJR2JtZXFjdUx4?=
 =?utf-8?B?U2IrZVVFVkYvVURiZTJSNG15YnA4TnZGeFZPY1lnWHRzVXI4blZ5dEhSYTFW?=
 =?utf-8?B?ZGV1dHN5ZzZOUk9IcUNXTVpXVlNUWnNQNExmVXMzQzRoc2JBTHNiNDhTNVBI?=
 =?utf-8?B?aTk4eEJnZTVwYzlVZ1JQcHJLSmtLaEplNmtDV2hKMlFIQ0NCVk04Ujh5dGVp?=
 =?utf-8?B?UDFtRHhEL1E2SUYxSnhTejBwbmZ6WVpwdlFuMEVaUEVGSzBYVExnc2N0VytJ?=
 =?utf-8?B?UkZaeXEzQWRNUnpWeFU1RTZtaDBmRlBjRjV1Y2MzeDRRUFZvd0JqYlZJM0FS?=
 =?utf-8?B?MlZpMzlZZ242L1gyZzRwYUowRnRyeVpMWDRDZFpkYmZ5VDVCVnF5aklSeVJu?=
 =?utf-8?B?QSs5aWFJMER2THhrUDRNbm9saWpDSTh4VU1MTmlHYUFiS1RWK3JES0FtTURw?=
 =?utf-8?B?TGp3U0RVY0pKVzBKRWpOUHBmU1BqNnB2RUhZcVQrVGdLRjhNM0lJdm1sM2xa?=
 =?utf-8?B?SFl1amlYZHRVMkJKOUYxQXdzT2V2aHIyeC9DOVRnei94OXlnZzZtWENkSVRm?=
 =?utf-8?B?V1lPTWJ5emwwR3JDWUpoMEtndk8wbnBqNkc2ZEl1Vy8ranl2WTRWK0w0OVEz?=
 =?utf-8?B?Q2dTb1FGT2sxa0h6MTdqcTg1Mk9sWlhUOUhWS0EwQm14alFPNVk3UHFxeHZa?=
 =?utf-8?B?aE1kcVVtdFV4eDl1N1dDMTQ2L3BteXI5V3RtMkhJYmtZbkFjOG90RnYrVm1z?=
 =?utf-8?B?c1d3MU1zUkRPSTFKdkdKUjZTOGhUaVl2SGxLYmllVm9kdnR0UUxCYXNtYnNR?=
 =?utf-8?B?bCt4ekZHOUI2Y1lDd0pRUXVHKzdzSmUzM1M5QWxXb211cDYyY1UxK291Q2Z4?=
 =?utf-8?B?eGxBL1RKb0M1UkVQUCtmRkdnclNrYlFmMm1sNkQwdlliZzZzd28vNnNIVXNk?=
 =?utf-8?B?RVJmMHk3YzNYVzVqT3ZTTldwQ3NYNmxRL0dOL1dMNzBLanZ6L04zYk9WSE1p?=
 =?utf-8?B?dkVpa1U1Q3VWcGVCMElVUXNiQS9sU3BJYnE4cDBYOHJ0QWNxTVkwc25UNG4v?=
 =?utf-8?B?VU5xb0RySWRoUWt2OEtHdUlVREZNRkZQamxGbmdBL2lQYVdzcm9VcXBWeXpm?=
 =?utf-8?B?bm5Kb3Y3SVFxMk9PWTY1bzJRcVowZWRxZTUvS0xmWW9mZXBid3UrNEJyK1hB?=
 =?utf-8?B?QmxNcnk4VFdBdFhCT0l1c2NMcm93TDFGWmE1WHp6Y2pFTGRMbHNzeHgrelds?=
 =?utf-8?B?YjVxQkljbXlKRElqOCsvT2NiVXlzeCsweE9qTWw5Rmo0Ly9yTFBTSjIxMWRJ?=
 =?utf-8?B?NEZSdDlZVXU0dkM3YllISjVqSmxxZmErdlJTYjljVFZvUTJJaFdaWEpXS1lz?=
 =?utf-8?B?SlJGMnlOVlVxTDZxRmUwQ2kvM2lVeXlQbXdNaDl2dy9wd1pMNnhSMlZOTG9p?=
 =?utf-8?B?S2EzdGF0dnY4MmxGUlJlR3N1VnJvK0NyS1dMN3NuRHBYTURSZ2FiVzdUeVFW?=
 =?utf-8?B?bUxpbHZCejhLTlBWZ2dFRFN4ZCtWTHV2a2MwbFhYMElmdU8vVFZIR2ZiK1dS?=
 =?utf-8?B?MHU3WGZId3BHQXFsUFZpT0wzVXdsQkJjUWpFNHRhNHhJTG5YaHYxRWljc3hG?=
 =?utf-8?B?enVNMXlRK1JoRTlOb29BUi9LQ0xVSjlpY2cxL2taSEk1anBSSEliUm5vQ01E?=
 =?utf-8?B?aXdpT3ZvRG5sS0lDclo1djdVbk5sellvaWs2U1cwY0FkbU0vNUJjQkJjY20v?=
 =?utf-8?B?bTZ1b0NWZEhYZUdvSTRGU0VjRlp5dEtBbmthd1U2elB5a1JIUjVJcmFEY0Zm?=
 =?utf-8?B?MXlBQXJncFZBSStndHFpOWdCMjc2TVJINkRoZkJMOWhJU1RPTVlpSWM3Qy8r?=
 =?utf-8?B?Z1pkVW5pclVhamdGcUNET2FVbzNnVXFHUlpROVRkOU1VMFdTWlFtdlpEVUEr?=
 =?utf-8?B?ME12WWtnYytlMHRkS1M1UWx4VmhUN09zQXF6SWdVRDk0VjNOQ1JPR1BQQ01m?=
 =?utf-8?B?MTVOdVBYVFA2OE5rWUROYkQwamIxQmk5SDZVUTlEZnZkb0t5TlNYZz09?=
X-OriginatorOrg: citrix.com
X-MS-Exchange-CrossTenant-Network-Message-Id: 386fcafc-a559-4797-2eae-08dea5167918
X-MS-Exchange-CrossTenant-AuthSource: CH7PR03MB7860.namprd03.prod.outlook.com
X-MS-Exchange-CrossTenant-AuthAs: Internal
X-MS-Exchange-CrossTenant-OriginalArrivalTime: 28 Apr 2026 11:08:27.4128
 (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: Gf1uXqXa0SUGYvLTV2D6RVxViDdIThqDAXpoR4RD7/fOfLaavvc9jw9qrY+HCKMsl+IPdzST9nPl4LG/pFIJCg==
X-MS-Exchange-Transport-CrossTenantHeadersStamped: LV4PR03MB8211
X-purgate-ID: tlsNG-33051d/1777374510-28577938-C162B3AB/0/0
X-purgate-type: clean
X-purgate-size: 3233

On Fri, Mar 13, 2026 at 04:35:02PM +0000, Thierry Escande wrote:
> This patch allows to select Q35 DSDT table in the function
> hvmloader_acpi_build_tables(). The machine_type global variable is used
> to select a proper table (i440/q35).
> 
> As we are bound to the qemu-xen device model for Q35, there is no need
> to initialize config->dsdt_15cpu/config->dsdt_15cpu_len fields.
> 
> Signed-off-by: Alexey Gerasimenko <x1917x@gmail.com>
> Signed-off-by: Thierry Escande <thierry.escande@vates.tech>
> ---
>  tools/firmware/hvmloader/util.c | 17 +++++++++++++++--
>  tools/firmware/hvmloader/util.h |  2 ++
>  2 files changed, 17 insertions(+), 2 deletions(-)
> 
> diff --git a/tools/firmware/hvmloader/util.c b/tools/firmware/hvmloader/util.c
> index f9116bea4d..45519ea583 100644
> --- a/tools/firmware/hvmloader/util.c
> +++ b/tools/firmware/hvmloader/util.c
> @@ -885,8 +885,21 @@ void hvmloader_acpi_build_tables(struct acpi_config *config,
>      s = xenstore_read("platform/device-model", "");
>      if ( !strncmp(s, "qemu_xen", 9) )

Tying Q35 to xenstore seems a bit sub-optimal, as Q35 detection is
done purely from the PCI config space.  It would be better if we could
avoid relying on the xenstore node, and hence also fixup at least
ovmf_acpi_build_tables() and seabios_acpi_build_tables() to use the
Q35 ACPI tables when Q35 is detected, regardless of the device-model
xenstore node.

>      {
> -        config->dsdt_anycpu = dsdt_i440_anycpu_qemu_xen;
> -        config->dsdt_anycpu_len = dsdt_i440_anycpu_qemu_xen_len;
> +        switch ( machine_type )
> +        {
> +        case MACHINE_TYPE_Q35:
> +            config->dsdt_anycpu = dsdt_q35_anycpu_qemu_xen;
> +            config->dsdt_anycpu_len = dsdt_q35_anycpu_qemu_xen_len;
> +            break;
> +        case MACHINE_TYPE_I440:
> +            config->dsdt_anycpu = dsdt_i440_anycpu_qemu_xen;
> +            config->dsdt_anycpu_len = dsdt_i440_anycpu_qemu_xen_len;
> +            break;
> +        default:
> +            /* Not likely to happen */
> +            BUG();
> +        }
> +
>          config->dsdt_15cpu = NULL;
>          config->dsdt_15cpu_len = 0;
>      }
> diff --git a/tools/firmware/hvmloader/util.h b/tools/firmware/hvmloader/util.h
> index 2f37504aca..4641ca0c46 100644
> --- a/tools/firmware/hvmloader/util.h
> +++ b/tools/firmware/hvmloader/util.h
> @@ -393,7 +393,9 @@ bool check_overlap(uint64_t start, uint64_t size,
>                     uint64_t reserved_start, uint64_t reserved_size);
>  
>  extern const unsigned char dsdt_i440_anycpu_qemu_xen[], dsdt_anycpu[], dsdt_15cpu[];
> +extern const unsigned char dsdt_q35_anycpu_qemu_xen[];

If I'm not mistaken, patch 2 introduces the dsdt_q35_anycpu_qemu_xen
symbol to the hvmloader build, so that you can reference it here?

At first I was going to comment that you are referencing a symbol not
included in the patch, but I think such symbol was previously added to
the build in patch 2 (and was unused there).

>  extern const int dsdt_i440_anycpu_qemu_xen_len, dsdt_anycpu_len, dsdt_15cpu_len;
> +extern const int dsdt_q35_anycpu_qemu_xen_len;

unsigned int would be better here.

Thanks, Roger.


From xen-devel-bounces@lists.xenproject.org Tue Apr 28 11:23:33 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 28 Apr 2026 11:23:33 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1295605.1572257 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wHgWz-0006DF-Vp; Tue, 28 Apr 2026 11:23:09 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1295605.1572257; Tue, 28 Apr 2026 11:23: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 1wHgWz-0006D8-TA; Tue, 28 Apr 2026 11:23:09 +0000
Received: by outflank-mailman (input) for mailman id 1295605;
 Tue, 28 Apr 2026 11:21:23 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <segher@kernel.crashing.org>) id 1wHgVH-00066P-1b
 for xen-devel@lists.xenproject.org; Tue, 28 Apr 2026 11:21:23 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wHgVG-00FmF0-DT
 for xen-devel@lists.xenproject.org; Tue, 28 Apr 2026 13:21:22 +0200
Received: from [10.42.69.7] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <segher@kernel.crashing.org>)
 id 69f09831-5cb7-0a2a0a5109dd-0a2a4507c0de-0
 for <xen-devel@lists.xenproject.org>; Tue, 28 Apr 2026 13:21:21 +0200
Received: from [63.228.1.57] (helo=gate.crashing.org)
 by tlsNG-ef75cf.mxtls.expurgate.net with ESMTP (eXpurgate 4.56.1)
 (envelope-from <segher@kernel.crashing.org>)
 id 69f09830-229c-0a2a45070019-3fe40139b344-1
 for <xen-devel@lists.xenproject.org>; Tue, 28 Apr 2026 13:21:20 +0200
Received: from gate.crashing.org (localhost [127.0.0.1])
 by gate.crashing.org (8.18.1/8.18.1/Debian-2) with ESMTP id 63SBKIxF1057213;
 Tue, 28 Apr 2026 06:20:18 -0500
Received: (from segher@localhost)
 by gate.crashing.org (8.18.1/8.18.1/Submit) id 63SBKHXo1057211;
 Tue, 28 Apr 2026 06:20:17 -0500
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-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-Authentication-Warning: gate.crashing.org: segher set sender to segher@kernel.crashing.org using -f
Date: Tue, 28 Apr 2026 06:20:17 -0500
From: Segher Boessenkool <segher@kernel.crashing.org>
To: Yury Norov <ynorov@nvidia.com>
Cc: Linus Torvalds <torvalds@linux-foundation.org>,
        "Christophe Leroy (CS GROUP)" <chleroy@kernel.org>,
        Andrew Morton <akpm@linux-foundation.org>,
        David Laight <david.laight.linux@gmail.com>,
        Thomas Gleixner <tglx@linutronix.de>, linux-alpha@vger.kernel.org,
        Yury Norov <yury.norov@gmail.com>, linux-kernel@vger.kernel.org,
        linux-snps-arc@lists.infradead.org,
        linux-arm-kernel@lists.infradead.org, linux-mips@vger.kernel.org,
        linuxppc-dev@lists.ozlabs.org, kvm@vger.kernel.org,
        linux-riscv@lists.infradead.org, linux-s390@vger.kernel.org,
        sparclinux@vger.kernel.org, linux-um@lists.infradead.org,
        dmaengine@vger.kernel.org, linux-efi@vger.kernel.org,
        linux-fsi@lists.ozlabs.org, amd-gfx@lists.freedesktop.org,
        dri-devel@lists.freedesktop.org, intel-gfx@lists.freedesktop.org,
        linux-wpan@vger.kernel.org, netdev@vger.kernel.org,
        linux-wireless@vger.kernel.org, linux-spi@vger.kernel.org,
        linux-media@vger.kernel.org, linux-staging@lists.linux.dev,
        linux-serial@vger.kernel.org, linux-usb@vger.kernel.org,
        xen-devel@lists.xenproject.org, linux-fsdevel@vger.kernel.org,
        ocfs2-devel@lists.linux.dev, bpf@vger.kernel.org,
        kasan-dev@googlegroups.com, linux-mm@kvack.org,
        linux-x25@vger.kernel.org, rust-for-linux@vger.kernel.org,
        linux-sound@vger.kernel.org, sound-open-firmware@alsa-project.org,
        linux-csky@vger.kernel.org, linux-hexagon@vger.kernel.org,
        loongarch@lists.linux.dev, linux-m68k@vger.kernel.org,
        linux-openrisc@vger.kernel.org, linux-parisc@vger.kernel.org,
        linux-sh@vger.kernel.org, linux-arch@vger.kernel.org
Subject: Re: [RFC PATCH v1 7/9] x86: Add unsafe_copy_from_user()
Message-ID: <afCX8WlnEFUei1y6@gate>
References: <cover.1777306795.git.chleroy@kernel.org>
 <0ee46bb228d97163fbdc14f2a7c52b93d8bc34ce.1777306795.git.chleroy@kernel.org>
 <ae-j2_QirCySZD02@yury>
 <63a4d0f6-0eb3-48cd-9f98-bf7b223b2606@kernel.org>
 <ae-2yLWSGnfeTvh1@yury>
 <CAHk-=wgPrLy0FR3sEWBYQuNAac1axDASYMnTuPuxEU0WytzL7w@mail.gmail.com>
 <ae_jeJLlVWjJ4sOY@yury>
MIME-Version: 1.0
Content-Type: text/plain; charset=us-ascii
Content-Disposition: inline
In-Reply-To: <ae_jeJLlVWjJ4sOY@yury>
X-purgate-ID: tlsNG-ef75cf/1777375281-AF57BC48-53D8024A/0/0
X-purgate-type: clean
X-purgate-size: 1592

Hi!

On Mon, Apr 27, 2026 at 06:30:16PM -0400, Yury Norov wrote:
> On Mon, Apr 27, 2026 at 02:52:05PM -0700, Linus Torvalds wrote:
> > On Mon, 27 Apr 2026 at 12:19, Yury Norov <ynorov@nvidia.com> wrote:
> > >
> > > This is what Linus said when added x86 implementation for copy_from_user()
> > > in c512c69187197:
> > 
> > Note that some things have happily changed in the six+ years since...
> > 
> > >   That's partly because we have no current users of it, but also partly
> > >   because the copy_from_user() case is slightly different and cannot
> > >   efficiently be implemented in terms of a unsafe_get_user() loop (because
> > >   gcc can't do asm goto with outputs).
> > 
> > now everybody can do asm goto with outputs.
> > 
> > Yes, it's disabled on older versions, so it's not *always* available,
> > but all modern versions do it. And if you care about performance, you
> > won't be using an old compiler.
> 
> The minimal GCC version is 8.1, and asm goto with outputs is supported
> since GCC-11. That would brake the build, if we just switch to using it
> without "CC_IS_GCC && (GCC_VERSION >= 110100)" guard.
> 
> Is it worth to maintain 2 version of the function? I don't know...

GCC 11 was released five years and a day ago.  The last GCC 11 release
(that of 11.5) is not even two years ago though (but there will be no
more!)

So it would be not conservative at all to require GCC 11 as minimum now,
some people might even call it a bit aggressive.  But in a year (or
maybe two) the lay of the land will be rather different.


Segher


From xen-devel-bounces@lists.xenproject.org Tue Apr 28 11:34:46 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 28 Apr 2026 11:34:46 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1295616.1572267 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wHgi6-00084e-VO; Tue, 28 Apr 2026 11:34:38 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1295616.1572267; Tue, 28 Apr 2026 11:34: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 1wHgi6-00084X-Sh; Tue, 28 Apr 2026 11:34:38 +0000
Received: by outflank-mailman (input) for mailman id 1295616;
 Tue, 28 Apr 2026 11:34:38 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <segher@kernel.crashing.org>) id 1wHgi6-00084R-2T
 for xen-devel@lists.xenproject.org; Tue, 28 Apr 2026 11:34:38 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wHgi5-001Sf9-EX
 for xen-devel@lists.xenproject.org; Tue, 28 Apr 2026 13:34:37 +0200
Received: from [10.42.69.2] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <segher@kernel.crashing.org>)
 id 69f09b49-bab6-0a2a0a5309dd-0a2a4502d562-10
 for <xen-devel@lists.xenproject.org>; Tue, 28 Apr 2026 13:34:37 +0200
Received: from [63.228.1.57] (helo=gate.crashing.org)
 by tlsNG-720697.mxtls.expurgate.net with ESMTP (eXpurgate 4.56.1)
 (envelope-from <segher@kernel.crashing.org>)
 id 69f09b4c-af86-0a2a45020019-3fe401398880-1
 for <xen-devel@lists.xenproject.org>; Tue, 28 Apr 2026 13:34:37 +0200
Received: from gate.crashing.org (localhost [127.0.0.1])
 by gate.crashing.org (8.18.1/8.18.1/Debian-2) with ESMTP id 63SBY0U31059939;
 Tue, 28 Apr 2026 06:34:00 -0500
Received: (from segher@localhost)
 by gate.crashing.org (8.18.1/8.18.1/Submit) id 63SBY0B51059937;
 Tue, 28 Apr 2026 06:34:00 -0500
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-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-Authentication-Warning: gate.crashing.org: segher set sender to segher@kernel.crashing.org using -f
Date: Tue, 28 Apr 2026 06:34:00 -0500
From: Segher Boessenkool <segher@kernel.crashing.org>
To: Andrew Cooper <andrew.cooper3@citrix.com>
Cc: Yury Norov <ynorov@nvidia.com>,
        "Christophe Leroy (CS GROUP)" <chleroy@kernel.org>,
        Andrew Morton <akpm@linux-foundation.org>,
        Linus Torvalds <torvalds@linux-foundation.org>,
        David Laight <david.laight.linux@gmail.com>,
        Thomas Gleixner <tglx@linutronix.de>, linux-alpha@vger.kernel.org,
        Yury Norov <yury.norov@gmail.com>, linux-kernel@vger.kernel.org,
        linux-snps-arc@lists.infradead.org,
        linux-arm-kernel@lists.infradead.org, linux-mips@vger.kernel.org,
        linuxppc-dev@lists.ozlabs.org, kvm@vger.kernel.org,
        linux-riscv@lists.infradead.org, linux-s390@vger.kernel.org,
        sparclinux@vger.kernel.org, linux-um@lists.infradead.org,
        dmaengine@vger.kernel.org, linux-efi@vger.kernel.org,
        linux-fsi@lists.ozlabs.org, amd-gfx@lists.freedesktop.org,
        dri-devel@lists.freedesktop.org, intel-gfx@lists.freedesktop.org,
        linux-wpan@vger.kernel.org, netdev@vger.kernel.org,
        linux-wireless@vger.kernel.org, linux-spi@vger.kernel.org,
        linux-media@vger.kernel.org, linux-staging@lists.linux.dev,
        linux-serial@vger.kernel.org, linux-usb@vger.kernel.org,
        xen-devel@lists.xenproject.org, linux-fsdevel@vger.kernel.org,
        ocfs2-devel@lists.linux.dev, bpf@vger.kernel.org,
        kasan-dev@googlegroups.com, linux-mm@kvack.org,
        linux-x25@vger.kernel.org, rust-for-linux@vger.kernel.org,
        linux-sound@vger.kernel.org, sound-open-firmware@alsa-project.org,
        linux-csky@vger.kernel.org, linux-hexagon@vger.kernel.org,
        loongarch@lists.linux.dev, linux-m68k@vger.kernel.org,
        linux-openrisc@vger.kernel.org, linux-parisc@vger.kernel.org,
        linux-sh@vger.kernel.org, linux-arch@vger.kernel.org
Subject: Re: [RFC PATCH v1 2/9] uaccess: Convert INLINE_COPY_{TO/FROM}_USER
 to kconfig and reduce ifdefery
Message-ID: <afCbKJg_Cq7yNO9j@gate>
References: <cover.1777306795.git.chleroy@kernel.org>
 <9fe875d2f55af59c12708336c571a46038528678.1777306795.git.chleroy@kernel.org>
 <ae-tVFVfx72oCC_i@yury>
 <f54c3c2b-33da-42a0-80b7-0f6615d930ce@citrix.com>
MIME-Version: 1.0
Content-Type: text/plain; charset=iso-8859-1
Content-Disposition: inline
Content-Transfer-Encoding: 8bit
In-Reply-To: <f54c3c2b-33da-42a0-80b7-0f6615d930ce@citrix.com>
X-purgate-ID: tlsNG-720697/1777376077-8A0C7161-EBEE8F5C/0/0
X-purgate-type: clean
X-purgate-size: 942

On Mon, Apr 27, 2026 at 09:39:33PM +0100, Andrew Cooper wrote:
> On 27/04/2026 7:39 pm, Yury Norov wrote:
> > On Mon, Apr 27, 2026 at 07:13:43PM +0200, Christophe Leroy (CS GROUP) wrote:
> >> Among the 21 architectures supported by the kernel, 16 define both
> >> INLINE_COPY_TO_USER and INLINE_COPY_FROM_USER while the 5 other ones
> >> don't define any of the two.
> >>
> >> To simplify and reduce risk of mistakes, convert them to a single
> >> kconfig item named CONFIG_ARCH_WANTS_NOINLINE_COPY which will be
> > We've got a special word for it: outline. Can you name it
> > CONFIG_OUTLINE_USERCOPY, or similar?
> 
> You can't swap the "in" for "out" like this. "out of line" is the
> opposite of "inline" in this context, while "outline" means something
> different and unrelated.

Yeah.  Technically much more correct for it is inline vs. functional.
Not that that term won't be misunderstood as well :-)


Segher


From xen-devel-bounces@lists.xenproject.org Tue Apr 28 12:00:24 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 28 Apr 2026 12:00:24 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1295631.1572276 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wHh6y-0003uz-2j; Tue, 28 Apr 2026 12:00:20 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1295631.1572276; Tue, 28 Apr 2026 12:00: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 1wHh6x-0003us-VG; Tue, 28 Apr 2026 12:00:19 +0000
Received: by outflank-mailman (input) for mailman id 1295631;
 Tue, 28 Apr 2026 12:00:18 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <xakep.amatop@gmail.com>) id 1wHh6w-0003ui-4X
 for xen-devel@lists.xenproject.org; Tue, 28 Apr 2026 12:00:18 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wHh6v-0085f6-GT
 for xen-devel@lists.xenproject.org; Tue, 28 Apr 2026 14:00:17 +0200
Received: from [10.42.69.6] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <xakep.amatop@gmail.com>)
 id 69f0a151-2eae-0a2a0a5409dd-0a2a45068db6-0
 for <xen-devel@lists.xenproject.org>; Tue, 28 Apr 2026 14:00:17 +0200
Received: from [209.85.167.54] (helo=mail-lf1-f54.google.com)
 by tlsNG-16d1c6.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.1)
 (envelope-from <xakep.amatop@gmail.com>)
 id 69f0a151-7371-0a2a45060019-d155a736e54b-3
 for <xen-devel@lists.xenproject.org>; Tue, 28 Apr 2026 14:00:17 +0200
Received: by mail-lf1-f54.google.com with SMTP id
 2adb3069b0e04-5a2b636b944so15909019e87.1
 for <xen-devel@lists.xenproject.org>; Tue, 28 Apr 2026 05:00:17 -0700 (PDT)
Received: from EPUAKYIW02F7.. ([45.12.24.216])
 by smtp.gmail.com with ESMTPSA id
 2adb3069b0e04-5a7462d5874sm565531e87.30.2026.04.28.05.00.14
 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
 Tue, 28 Apr 2026 05:00:15 -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=20251104 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=20251104; t=1777377616; x=1777982416; 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;
        bh=cV194dS4Y9gm/XzkIef3s5vtQr1HG+oamEfHcdXX4Xw=;
        b=PxRPCeA13mglDuJKePeDqP0UV4ztMYSp8CgnajdsajH7mTXA7wSdS2yQ7DlOL2DLLs
         IkcGcVWY6CY2oIYF1ypm2UetC/USaqoUmkcL0jEzRNc7I4mjPyiNsnrbDf2GFZ1UeOyD
         SfJKRSRo5VtddgEswL3z+kQ1XtHPKMF+ykaRgl71a9rbK5t8CEvlJnzEb5aydqb89LoP
         tWziiZ0Rah+9kMUzlySUk+2MqFEpS9TRVl6qe/bk0Dt4IX7fb9rNmGc5aJ/bp7Uk/RXk
         GM51MeN6gYFz2GZqtzz6Fd8qLUDzPSSWkRJFOgmF7Rvyi0HZqSlKvGkFVPD/hhFEJn97
         2VLA==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20251104; t=1777377616; x=1777982416;
        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;
        bh=cV194dS4Y9gm/XzkIef3s5vtQr1HG+oamEfHcdXX4Xw=;
        b=KJHuZxdS83rP2gU1z2xrIB0JhYdUW17EAO8VGJSZiIOQZwmY5v7xwdl0DMXpTDOWcT
         EvQ2zZiL7WwzEl526h6Sy8pAGO+q6xtoXsNrLfwVbzPAJ9SF2+Ka+lgg6ucCA+fM9CLv
         jXZnHwBZRsSc/lHnaPC1kzcj9xjD1d80Bdqj+IFUqnrW84mckvLilJCf79v2KMEN5QPH
         WqnG+UZbCdWjnqvPyumd7Z/ggzeP2k2rKTNIzAGMQ9Uj+CRcrDonGpxV6b+fmvvMsx+g
         47mtwFKgM9/tLlIb89c7/JduDxlLdmqfEAj+sc4LmK+rfzaTygDmm6g7LS/fwxwsrVap
         VzMw==
X-Gm-Message-State: AOJu0YwwM+1v3SAzKiw28Z7TBL6MbXHEl8zBcR24KqhypsVJUsZz222C
	7Jsq2760PbYWrLAxvFsN1CdSUBEN77/9jDlqV1HZ8MuRtuB5CL/gAUqh4XqfcA==
X-Gm-Gg: AeBDiesF6LRmnDMcMnqn+210QOA3qvlOR82MCO/kt6xrccsmLZI73YvElnvjTM7XWIU
	9SQ2dxWQXi5SPzorMiy/0rV04GMr7DNgfZjsovodqGzs1HwLsERLUmguSrmisVjMT5Mgk6+1xU+
	PzevcyHyzYOStN7gmA8eQ48ByHl0iIH0QeU2TfGOgM9twE2QLumYLLDN5Ili6s040r1SfLRefU0
	D3f+TAnKXoQYnNhLPmpJWFXZPngAHSC78bO33YKPHU5o+bNwUT19Fwfuba8S8dFqzw7Soe6HCfL
	NGzUdodfO33q/j5nDykw8hw05z/tvu2T7/wVO5Sy/yaPYGl/kCKA606gswLgUkdNmczAjHEs8uz
	kZFK/GlDC8AzEvWBHt5LZ3V+xXQokT11ZJ5ycjqvRcXtR3rBD6CTvZeBYTv4CU11qp7YddGRblQ
	1FyWR+ymTfducGhrRI4QeKqFsKk6VeS2DxBLFnwPafWd7VhMVX
X-Received: by 2002:a05:6512:1046:b0:5a2:c409:8ed3 with SMTP id 2adb3069b0e04-5a7466179efmr1005797e87.40.1777377615327;
        Tue, 28 Apr 2026 05:00:15 -0700 (PDT)
From: Mykola Kvach <xakep.amatop@gmail.com>
To: xen-devel@lists.xenproject.org
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>
Subject: [PATCH v2] xen/arm: gic-v2: disable interrupt bypass on CPU shutdown
Date: Tue, 28 Apr 2026 14:57:55 +0300
Message-ID: <18c5532816d852fca073d0552dcb6d497730a6c2.1777377278.git.mykola_kvach@epam.com>
X-Mailer: git-send-email 2.43.0
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit
X-purgate-ID: tlsNG-16d1c6/1777377617-90E7CD75-8B022F77/0/0
X-purgate-type: clean
X-purgate-size: 4201

From: Mykola Kvach <mykola_kvach@epam.com>

The GICv2 CPU shutdown path currently writes 0 to GICC_CTLR.

Per IHI0048B.b section 2.3.1, clearing the architected bypass-disable
bits selects bypass rather than deasserted interrupt outputs when the
CPU interface stops driving them. Tables 2-2 and 2-3 show that a zeroed
GICC_CTLR can fall back to the legacy IRQ/FIQ inputs instead of fully
disabling the interface.

Fix this by reading GICC_CTLR, then setting the bypass-disable bits and
clearing the group-enable bits that are architecturally defined for the
current GICC_CTLR view before writing the value back. When Security
Extensions are implemented Xen accesses the Non-secure copy of
GICC_CTLR, where IRQBypDisGrp1 and FIQBypDisGrp1 are at bits [6:5] and
bits [8:7] are reserved.

Without Security Extensions there is no separate Secure/Non-secure CPU
interface view, so disabling both group-enable bits affects the shared
interface state. This is still appropriate for the CPU shutdown path,
which is expected to stop normal interrupt delivery through the interface
and rely only on the architecturally separate wakeup event signaling.

Section 2.3.2 also states that wakeup event signals remain available
even when both GIC interrupt signaling and interrupt bypass are
disabled, so disabling bypass does not break the power-management use
case, i.e. suspend modes.

Fixes: 5e40a1b4351e ("arm: SMP CPU shutdown")
Signed-off-by: Mykola Kvach <mykola_kvach@epam.com>

---
Changes in v2:
- derive the shutdown masks from the active GICC_CTLR layout
- use the Non-secure GICC_CTLR layout when GICD_TYPER.SecurityExtn is set
- stop writing reserved bits [8:7] on Security Extensions systems
---
 xen/arch/arm/gic-v2.c          | 16 +++++++++++++++-
 xen/arch/arm/include/asm/gic.h | 25 +++++++++++++++++++++++--
 2 files changed, 38 insertions(+), 3 deletions(-)

diff --git a/xen/arch/arm/gic-v2.c b/xen/arch/arm/gic-v2.c
index 014f955967..241c1ff5c5 100644
--- a/xen/arch/arm/gic-v2.c
+++ b/xen/arch/arm/gic-v2.c
@@ -408,7 +408,21 @@ static void gicv2_cpu_init(void)
 
 static void gicv2_cpu_disable(void)
 {
-    writel_gicc(0x0, GICC_CTLR);
+    uint32_t ctlr = readl_gicc(GICC_CTLR);
+
+    if ( readl_gicd(GICD_TYPER) & GICD_TYPE_SEC )
+    {
+        ctlr |= GICC_NS_CTLR_BYPASS_DISABLE_GRP1_MASK;
+        ctlr &= ~GICC_CTL_ENABLE;
+    }
+    else
+    {
+        ctlr |= GICC_CTLR_BYPASS_DISABLE_GRP0_MASK |
+                GICC_CTLR_BYPASS_DISABLE_GRP1_MASK;
+        ctlr &= ~(GICC_CTL_ENABLE | GICC_CTL_ENABLE_GRP1);
+    }
+
+    writel_gicc(ctlr, GICC_CTLR);
 }
 
 static void gicv2_hyp_init(void)
diff --git a/xen/arch/arm/include/asm/gic.h b/xen/arch/arm/include/asm/gic.h
index 8e713aa477..ff22dea40d 100644
--- a/xen/arch/arm/include/asm/gic.h
+++ b/xen/arch/arm/include/asm/gic.h
@@ -102,8 +102,29 @@
 #define GICD_TYPE_SEC   0x400
 #define GICD_TYPER_DVIS (1U << 18)
 
-#define GICC_CTL_ENABLE 0x1
-#define GICC_CTL_EOI    (0x1 << 9)
+/*
+ * Xen runs in the Non-secure world. When Security Extensions are present,
+ * Xen accesses the Non-secure GICC_CTLR view, where bit[0] is EnableGrp1
+ * and bits[6:5] are the Group 1 bypass-disable bits. Otherwise Xen sees the
+ * common GICC_CTLR layout, where bit[0] is EnableGrp0, bit[1] is EnableGrp1,
+ * bits[6:5] are the Group 0 bypass-disable bits, and bits[8:7] are the
+ * Group 1 bypass-disable bits.
+ */
+#define GICC_CTL_ENABLE        (0x1 << 0)
+#define GICC_CTL_ENABLE_GRP1   (0x1 << 1)
+#define GICC_CTL_FIQBypDisGrp0 (0x1 << 5)
+#define GICC_CTL_IRQBypDisGrp0 (0x1 << 6)
+#define GICC_CTL_FIQBypDisGrp1 (0x1 << 7)
+#define GICC_CTL_IRQBypDisGrp1 (0x1 << 8)
+
+#define GICC_CTLR_BYPASS_DISABLE_GRP0_MASK              \
+    (GICC_CTL_FIQBypDisGrp0 | GICC_CTL_IRQBypDisGrp0)
+#define GICC_CTLR_BYPASS_DISABLE_GRP1_MASK              \
+    (GICC_CTL_FIQBypDisGrp1 | GICC_CTL_IRQBypDisGrp1)
+#define GICC_NS_CTLR_BYPASS_DISABLE_GRP1_MASK           \
+    GICC_CTLR_BYPASS_DISABLE_GRP0_MASK
+
+#define GICC_CTL_EOI           (0x1 << 9)
 
 #define GICC_IA_IRQ       0x03ff
 #define GICC_IA_CPU_MASK  0x1c00
-- 
2.43.0



From xen-devel-bounces@lists.xenproject.org Tue Apr 28 12:01:46 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 28 Apr 2026 12:01:46 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1295643.1572300 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wHh8L-0004j4-K7; Tue, 28 Apr 2026 12:01:45 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1295643.1572300; Tue, 28 Apr 2026 12: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 1wHh8L-0004iv-GY; Tue, 28 Apr 2026 12:01:45 +0000
Received: by outflank-mailman (input) for mailman id 1295643;
 Tue, 28 Apr 2026 12:01:43 +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 1wHh8J-0004QY-5G; Tue, 28 Apr 2026 12:01:43 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wHh8I-004jWr-H2; Tue, 28 Apr 2026 14:01:42 +0200
Received: from [10.42.69.1] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <andrewcoop@xenbits.xen.org>)
 id 69f0a1a5-e002-0a2a0a5209dd-0a2a4501852e-6
 for <multiple-recipients>; Tue, 28 Apr 2026 14:01:42 +0200
Received: from [104.130.215.37] (helo=mail.xenproject.org)
 by tlsNG-d62444.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.1)
 (envelope-from <andrewcoop@xenbits.xen.org>)
 id 69f0a1a5-c1f2-0a2a45010019-6882d725b590-3
 for <multiple-recipients>; Tue, 28 Apr 2026 14:01:42 +0200
Received: from xenbits.xenproject.org ([104.239.192.120])
 by mail.xenproject.org with esmtp (Exim 4.96)
 (envelope-from <andrewcoop@xenbits.xen.org>) id 1wHh88-0064Zb-09;
 Tue, 28 Apr 2026 12:01:32 +0000
Received: from andrewcoop by xenbits.xenproject.org with local (Exim 4.96)
 (envelope-from <andrewcoop@xenbits.xen.org>) id 1wHh87-006n03-3A;
 Tue, 28 Apr 2026 12:01: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; none
Content-Type: multipart/mixed; boundary="=separator"; charset="utf-8"
Content-Transfer-Encoding: binary
MIME-Version: 1.0
X-Mailer: MIME-tools 5.510 (Entity 5.510)
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 483 v2 (CVE-2026-23556) - oxenstored keeps
 quota related use counts across domain destruction
Message-Id: <E1wHh87-006n03-3A@xenbits.xenproject.org>
Date: Tue, 28 Apr 2026 12:01:31 +0000
X-purgate-ID: tlsNG-d62444/1777377702-BDA69FF4-96C8E755/0/0
X-purgate-type: clean
X-purgate-size: 8700

--=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-23556 / XSA-483
                               version 2

  oxenstored keeps quota related use counts across domain destruction

UPDATES IN VERSION 2
====================

Public release.

ISSUE DESCRIPTION
=================

When oxenstored is tearing a domain down, the node data is cleaned up
but the usage counts are leaked.

When the domain ID is eventually reused, the new domain can create fewer
nodes before beeing deemed to be over quota.

IMPACT
======

Over an extended period of time, new domains will be able to create
fewer and fewer nodes in xenstored, until they are eventually unable to
operate at all.

A buggy or malicious domain can speed this process up by deliberately
hitting it's quota, and then rebooting.

VULNERABLE SYSTEMS
==================

All versions of Xen containing the XSA-419 fixes are vulnerable.

Only systems configured to use oxenstored (Ocaml xenstored) are
vulnerable.  Systems configured to xenstored (C xenstored) are not
vulnerable.

MITIGATION
==========

Performing a xenstore live update mitigates the issue.

CREDITS
=======

This issue was discovered by Andrii Sultanov of Vates.

RESOLUTION
==========

Applying the appropriate 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.

xsa483.patch           xen-unstable - Xen 4.18.x
xsa483-4.17.patch      Xen 4.17.x
xsa483-xapi.patch      XAPI oxenstored

$ sha256sum xsa483*
4be3acc57dcd5e2719cab165729879757a1915c33b848a37623dd4a5f1157746  xsa483.patch
389b0411d855894adff6f640dcbd3358adc6d4cb9ddeedbcb9cb2c345af67d51  xsa483-4.17.patch
ec191a1e158eddd22bfbd764f26f6b6a0b75b9fe0a223dc66da1c4a16ef73122  xsa483-xapi.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/4UyVfoK9kFAmnwoPIMHHBncEB4ZW4u
b3JnAAoJEIP+FMlX6CvZM8EH/iXC6hLQHAVLeRCfUEZ1ncM7029KPyRxLIOlthCS
cAyMNjyVSckGMRgKvYWCpl/fN1v/2yv3olIIR9wtncaq8Q+iMkwOsw1P46fmsh3J
40pK6PnaP1/kRrua1ZANlUc8YUhWG8fE2ADPHCIo57qbO1fXVUEWARdgU5gYIkF4
Kz+dvkpEEiTdRe24zqfn9Bv4lDsihfq3B9zecEuqMj3L88FrMP9VfBJZMbx9N/Pb
TUE/FltETdWqMLeIyb7r3P5OPrLRYk6ebgrX96Pb3f0d1/OC8E4Me3RNvGoArmOI
f8R0M/zly0lmoJspJFtI2C7BdUIKB/59z/Sz2YC706AJBO0=
=mbDG
-----END PGP SIGNATURE-----

--=separator
Content-Type: application/octet-stream; name="xsa483.patch"
Content-Disposition: attachment; filename="xsa483.patch"
Content-Transfer-Encoding: base64

RnJvbTogQW5kcmlpIFN1bHRhbm92IDxhbmRyaXkuc3VsdGFub3ZAdmF0ZXMu
dGVjaD4KU3ViamVjdDogdG9vbHMvb3hlbnN0b3JlZDogUmVzZXQgcXVvdGEg
d2hlbiByZXNldHRpbmcgcGVybWlzc2lvbnMKClRoZSBxdW90YSBvYmplY3Qg
Y29udGFpbnMgYm90aCBsaW1pdHMgYW5kIHRoZSBjdXJyZW50IG5vZGUgdXNh
Z2UgY291bnRzLgoKV2hlbiBhIGRvbWFpbiBpcyB0b3JuIGRvd24sIHRoZSBu
b2RlIGRhdGEgaXRzZWxmIGlzIGNsZWFuZWQgdXAgYnV0IHRoZSBub2RlCnVz
YWdlIGNvdW50cyBhcmUgbm90LiAgQSBsYXRlciBkb21haW4gcmV1c2luZyB0
aGUgc2FtZSBkb21pZCBjYW4gY3JlYXRlIGZld2VyCm5vZGVzIGJlZm9yZSBi
ZWluZyBkZWVtZWQgdG8gYmUgb3ZlciBxdW90YS4KClJlc2V0IHRoZSBjb3Vu
dCB3aGVuIHRoZSBub2RlIHBlcm1pc3Npb25zIGFyZSBjbGVhbmVkIHVwLgoK
VGhpcyBpcyBYU0EtNDgzIC8gQ1ZFLTIwMjYtMjM1NTYuCgpTaWduZWQtb2Zm
LWJ5OiBBbmRyaWkgU3VsdGFub3YgPGFuZHJpeS5zdWx0YW5vdkB2YXRlcy50
ZWNoPgpTaWduZWQtb2ZmLWJ5OiBBbmRyZXcgQ29vcGVyIDxhbmRyZXcuY29v
cGVyM0BjaXRyaXguY29tPgoKZGlmZiAtLWdpdCBhL3Rvb2xzL29jYW1sL3hl
bnN0b3JlZC9zdG9yZS5tbCBiL3Rvb2xzL29jYW1sL3hlbnN0b3JlZC9zdG9y
ZS5tbAppbmRleCA5YjhkZDI4MTJkZjAuLmFhOTIwNGVhZDNlYyAxMDA2NDQK
LS0tIGEvdG9vbHMvb2NhbWwveGVuc3RvcmVkL3N0b3JlLm1sCisrKyBiL3Rv
b2xzL29jYW1sL3hlbnN0b3JlZC9zdG9yZS5tbApAQCAtNDY1LDcgKzQ2NSw4
IEBAIGxldCByZXNldF9wZXJtaXNzaW9ucyBzdG9yZSBkb21pZCA9CiAgICAg
ICAgIGlmIHBlcm1zIDw+IG5vZGUucGVybXMgdGhlbgogICAgICAgICAgIExv
Z2dpbmcuZGVidWcgInN0b3JlfG5vZGUiICJDaGFuZ2VkIHBlcm1pc3Npb25z
IGZvciBub2RlICVzIiAoTm9kZS5nZXRfbmFtZSBub2RlKTsKICAgICAgICAg
U29tZSB7IG5vZGUgd2l0aCBOb2RlLnBlcm1zIH0KLSAgICApIHN0b3JlLnJv
b3QKKyAgICApIHN0b3JlLnJvb3Q7CisgIHN0b3JlLnF1b3RhIDwtIFF1b3Rh
LmRlbCBzdG9yZS5xdW90YSBkb21pZAogCiB0eXBlIG9wcyA9IHsKICAgc3Rv
cmU6IHQ7Cg==

--=separator
Content-Type: application/octet-stream; name="xsa483-4.17.patch"
Content-Disposition: attachment; filename="xsa483-4.17.patch"
Content-Transfer-Encoding: base64

RnJvbTogQW5kcmlpIFN1bHRhbm92IDxhbmRyaXkuc3VsdGFub3ZAdmF0ZXMu
dGVjaD4KU3ViamVjdDogdG9vbHMvb3hlbnN0b3JlZDogUmVzZXQgcXVvdGEg
d2hlbiByZXNldHRpbmcgcGVybWlzc2lvbnMKClRoZSBxdW90YSBvYmplY3Qg
Y29udGFpbnMgYm90aCBsaW1pdHMgYW5kIHRoZSBjdXJyZW50IG5vZGUgdXNh
Z2UgY291bnRzLgoKV2hlbiBhIGRvbWFpbiBpcyB0b3JuIGRvd24sIHRoZSBu
b2RlIGRhdGEgaXRzZWxmIGlzIGNsZWFuZWQgdXAgYnV0IHRoZSBub2RlCnVz
YWdlIGNvdW50cyBhcmUgbm90LiAgQSBsYXRlciBkb21haW4gcmV1c2luZyB0
aGUgc2FtZSBkb21pZCBjYW4gY3JlYXRlIGZld2VyCm5vZGVzIGJlZm9yZSBi
ZWluZyBkZWVtZWQgdG8gYmUgb3ZlciBxdW90YS4KClJlc2V0IHRoZSBjb3Vu
dCB3aGVuIHRoZSBub2RlIHBlcm1pc3Npb25zIGFyZSBjbGVhbmVkIHVwLgoK
VGhpcyBpcyBYU0EtNDgzIC8gQ1ZFLTIwMjYtMjM1NTYuCgpTaWduZWQtb2Zm
LWJ5OiBBbmRyaWkgU3VsdGFub3YgPGFuZHJpeS5zdWx0YW5vdkB2YXRlcy50
ZWNoPgpTaWduZWQtb2ZmLWJ5OiBBbmRyZXcgQ29vcGVyIDxhbmRyZXcuY29v
cGVyM0BjaXRyaXguY29tPgoKZGlmZiAtLWdpdCBhL3Rvb2xzL29jYW1sL3hl
bnN0b3JlZC9zdG9yZS5tbCBiL3Rvb2xzL29jYW1sL3hlbnN0b3JlZC9zdG9y
ZS5tbAppbmRleCA1ZGQ5NjVkYjE1MWYuLmMwOTlhMmVhZTY4YSAxMDA2NDQK
LS0tIGEvdG9vbHMvb2NhbWwveGVuc3RvcmVkL3N0b3JlLm1sCisrKyBiL3Rv
b2xzL29jYW1sL3hlbnN0b3JlZC9zdG9yZS5tbApAQCAtNDY1LDcgKzQ2NSw4
IEBAIGxldCByZXNldF9wZXJtaXNzaW9ucyBzdG9yZSBkb21pZCA9CiAJCQlp
ZiBwZXJtcyA8PiBub2RlLnBlcm1zIHRoZW4KIAkJCQlMb2dnaW5nLmRlYnVn
ICJzdG9yZXxub2RlIiAiQ2hhbmdlZCBwZXJtaXNzaW9ucyBmb3Igbm9kZSAl
cyIgKE5vZGUuZ2V0X25hbWUgbm9kZSk7CiAJCQlTb21lIHsgbm9kZSB3aXRo
IE5vZGUucGVybXMgfQotCSkgc3RvcmUucm9vdAorCSkgc3RvcmUucm9vdDsK
KwlzdG9yZS5xdW90YSA8LSBRdW90YS5kZWwgc3RvcmUucXVvdGEgZG9taWQK
IAogdHlwZSBvcHMgPSB7CiAJc3RvcmU6IHQ7Cg==

--=separator
Content-Type: application/octet-stream; name="xsa483-xapi.patch"
Content-Disposition: attachment; filename="xsa483-xapi.patch"
Content-Transfer-Encoding: base64

RnJvbTogQW5kcmlpIFN1bHRhbm92IDxhbmRyaXkuc3VsdGFub3ZAdmF0ZXMu
dGVjaD4KU3ViamVjdDogdG9vbHMvb3hlbnN0b3JlZDogUmVzZXQgcXVvdGEg
d2hlbiByZXNldHRpbmcgcGVybWlzc2lvbnMKClRoZSBxdW90YSBvYmplY3Qg
Y29udGFpbnMgYm90aCBsaW1pdHMgYW5kIHRoZSBjdXJyZW50IG5vZGUgdXNh
Z2UgY291bnRzLgoKV2hlbiBhIGRvbWFpbiBpcyB0b3JuIGRvd24sIHRoZSBu
b2RlIGRhdGEgaXRzZWxmIGlzIGNsZWFuZWQgdXAgYnV0IHRoZSBub2RlCnVz
YWdlIGNvdW50cyBhcmUgbm90LiAgQSBsYXRlciBkb21haW4gcmV1c2luZyB0
aGUgc2FtZSBkb21pZCBjYW4gY3JlYXRlIGZld2VyCm5vZGVzIGJlZm9yZSBi
ZWluZyBkZWVtZWQgdG8gYmUgb3ZlciBxdW90YS4KClJlc2V0IHRoZSBjb3Vu
dCB3aGVuIHRoZSBub2RlIHBlcm1pc3Npb25zIGFyZSBjbGVhbmVkIHVwLgoK
VGhpcyBpcyBYU0EtNDgzIC8gQ1ZFLTIwMjYtMjM1NTYuCgpTaWduZWQtb2Zm
LWJ5OiBBbmRyaWkgU3VsdGFub3YgPGFuZHJpeS5zdWx0YW5vdkB2YXRlcy50
ZWNoPgpTaWduZWQtb2ZmLWJ5OiBBbmRyZXcgQ29vcGVyIDxhbmRyZXcuY29v
cGVyM0BjaXRyaXguY29tPgoKZGlmZiAtLWdpdCBhL294ZW5zdG9yZWQvc3Rv
cmUubWwgYi9veGVuc3RvcmVkL3N0b3JlLm1sCmluZGV4IDNmMzkwMTU1YWJh
Yy4uNTFkZjgxZTI0ZDY1IDEwMDY0NAotLS0gYS9veGVuc3RvcmVkL3N0b3Jl
Lm1sCisrKyBiL294ZW5zdG9yZWQvc3RvcmUubWwKQEAgLTUxMCw3ICs1MTAs
OCBAQCBsZXQgcmVzZXRfcGVybWlzc2lvbnMgc3RvcmUgZG9taWQgPQogICAg
ICAgICAgICAgICAgIChOb2RlLmdldF9uYW1lIG5vZGUpIDsKICAgICAgICAg
ICAgIFNvbWUge25vZGUgd2l0aCBOb2RlLnBlcm1zfQogICAgICAgKQotICAg
ICAgc3RvcmUucm9vdAorICAgICAgc3RvcmUucm9vdCA7CisgIHN0b3JlLnF1
b3RhIDwtIFF1b3RhLmRlbCBzdG9yZS5xdW90YSBkb21pZAogCiB0eXBlIG9w
cyA9IHsKICAgICBzdG9yZTogdAo=

--=separator--


From xen-devel-bounces@lists.xenproject.org Tue Apr 28 12:01:49 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 28 Apr 2026 12:01:49 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1295647.1572334 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wHh8P-0005Qy-L5; Tue, 28 Apr 2026 12:01:49 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1295647.1572334; Tue, 28 Apr 2026 12:01: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 1wHh8P-0005QE-E7; Tue, 28 Apr 2026 12:01:49 +0000
Received: by outflank-mailman (input) for mailman id 1295647;
 Tue, 28 Apr 2026 12:01:47 +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 1wHh8N-0005KI-IA; Tue, 28 Apr 2026 12:01:47 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wHh8M-001YJf-TU; Tue, 28 Apr 2026 14:01:46 +0200
Received: from [10.42.69.2] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <andrewcoop@xenbits.xen.org>)
 id 69f0a1aa-2eae-0a2a0a5409dd-0a2a4502edb0-2
 for <multiple-recipients>; Tue, 28 Apr 2026 14:01:46 +0200
Received: from [104.130.215.37] (helo=mail.xenproject.org)
 by tlsNG-720697.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.1)
 (envelope-from <andrewcoop@xenbits.xen.org>)
 id 69f0a1a9-af86-0a2a45020019-6882d725a1ea-3
 for <multiple-recipients>; Tue, 28 Apr 2026 14:01:46 +0200
Received: from xenbits.xenproject.org ([104.239.192.120])
 by mail.xenproject.org with esmtp (Exim 4.96)
 (envelope-from <andrewcoop@xenbits.xen.org>) id 1wHh8D-0064Zp-2a;
 Tue, 28 Apr 2026 12:01:37 +0000
Received: from andrewcoop by xenbits.xenproject.org with local (Exim 4.96)
 (envelope-from <andrewcoop@xenbits.xen.org>) id 1wHh8D-006n15-2O;
 Tue, 28 Apr 2026 12:01: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; none
Content-Type: multipart/mixed; boundary="=separator"; charset="utf-8"
Content-Transfer-Encoding: binary
MIME-Version: 1.0
X-Mailer: MIME-tools 5.510 (Entity 5.510)
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 484 v2 (CVE-2026-23557) - Xenstored DoS via
 XS_RESET_WATCHES command
Message-Id: <E1wHh8D-006n15-2O@xenbits.xenproject.org>
Date: Tue, 28 Apr 2026 12:01:37 +0000
X-purgate-ID: tlsNG-720697/1777377706-8256B161-7610114D/0/0
X-purgate-type: clean
X-purgate-size: 11272

--=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-23557 / XSA-484
                               version 2

              Xenstored DoS via XS_RESET_WATCHES command

UPDATES IN VERSION 2
====================

Public release.

ISSUE DESCRIPTION
=================

Any guest can cause xenstored to crash by issuing a XS_RESET_WATCHES
command within a transaction due to an assert() triggering.

In case xenstored was built with NDEBUG #defined nothing bad will
happen, as assert() is doing nothing in this case. Note that the
default is not to define NDEBUG for xenstored builds even in release
builds of Xen.

IMPACT
======

Any unprivileged domain can cause xenstored to crash, causing a
DoS (denial of service) for any Xenstore action. This will result
in an inability to perform further domain administration on the host.

VULNERABLE SYSTEMS
==================

All Xen systems from Xen 4.2 onwards are vulnerable. Systems up to
Xen 4.1 are not vulnerable.

Systems using the C variant of xenstored or xenstore-stubdom built
without NDEBUG are vulnerable. Systems using the OCaml variant of
Xenstore (oxenstored), or the C variant (xenstored or xenstore-stubdom)
built with NDEBUG defined are not vulnerable.

MITIGATION
==========

There is no known mitigation available.

CREDITS
=======

This issue was discovered by Andrii Sultanov of Vates.

RESOLUTION
==========

Applying the appropriate 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.

xsa484.patch           xen-unstable - Xen 4.18.x
xsa484-4.17.patch      Xen 4.17.x

$ sha256sum xsa484*
77c489191d40acd807eb19344a0e1bbb67a04551e89aff726fbb2006f235aacf  xsa484.patch
6c8d8146d136956c59ee77da6aa6340272d1ea670a6b0d9cf37fe759d4b96b19  xsa484-4.17.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/4UyVfoK9kFAmnwoQEMHHBncEB4ZW4u
b3JnAAoJEIP+FMlX6CvZGVoIALBKECpaWxXD7ivkbFpFlmt9a2TOXxnD1LjbSnzI
VAdyFECK4ng0uRaUXHMcd0Dkzw+dOrm/SA7jI+brumyyxsO44eLz5fysAQYXDHca
qsn5h7To34Fow8ejQIt1E9DmqNlZP7Y261MhYSdWN6Z2lEa4cMPyJKA/xTpQ2uUq
Cy9Ss7jrl/v98MOZb2Tkn+H8XiNsPJb57sWeaOPoUMh+42y/5qMyRgqWa3/N3iHn
ZVZEhTbrNvGYKW+DUq5KswUjxw9FAmtQ1PA/w3ItWWdsb0Gd8AE02FzdIuoIt/xk
zB9BEchspV1Gfouz0alFV+d4gDyclQmmViYojNfXYfKdWp8=
=j/SA
-----END PGP SIGNATURE-----

--=separator
Content-Type: application/octet-stream; name="xsa484.patch"
Content-Disposition: attachment; filename="xsa484.patch"
Content-Transfer-Encoding: base64

RnJvbSAzZDBkMTlhZDE3ZjI5YzY0ZGRlNGE3YmFmMzkyZGE0ZmQ1OGYzNjU0
IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBKdWVyZ2VuIEdyb3Nz
IDxqZ3Jvc3NAc3VzZS5jb20+CkRhdGU6IE1vbiwgMTYgTWFyIDIwMjYgMTU6
MDY6MTEgKzAxMDAKU3ViamVjdDogW1BBVENIXSB0b29scy94ZW5zdG9yZWQ6
IG1ha2UgY29ubl9kZWxldGVfYWxsX3RyYW5zYWN0aW9ucygpCiBpZGVtcG90
ZW50Cgpjb25uX2RlbGV0ZV9hbGxfdHJhbnNhY3Rpb25zKCkgc2hvdWxkIGJl
IGNhbGxhYmxlIGluIGFueSBjb250ZXh0LApyZXNldHRpbmcgQUxMIHRyYW5z
YWN0aW9uIHJlbGF0ZWQgZGF0YS4KClRoaXMgaW5jbHVkZXMgbnVtYmVyIG9m
IGFjdGl2ZSB0cmFuc2FjdGlvbnMgYW5kIHRoZSB0cmFuc2FjdGlvbgpwb2lu
dGVyIGluIHN0cnVjdCBjb25uZWN0aW9uLgoKU28gcmVzZXQgY29ubi0+dHJh
bnMgdG8gTlVMTCBpbiBjb25uX2RlbGV0ZV9hbGxfdHJhbnNhY3Rpb25zKCkg
YW5kCmRvIHRoZSBjbGVhbnVwIGZvciBlYWNoIHRyYW5zYWN0aW9uIGluIGRl
c3Ryb3lfdHJhbnNhY3Rpb24oKS4KClRoaXMgYXZvaWRzIHRyaWdnZXJpbmcg
dGhlIGFzc2VydCgpIGluIGNvbm5fZGVsZXRlX2FsbF90cmFuc2FjdGlvbnMo
KQppbiBjYXNlIGUuZy4gaWdub3JlX2Nvbm5lY3Rpb24oKSB3YXMgY2FsbGVk
IHdoaWxlIGFuIG9wZXJhdGlvbiBpbnNpZGUKYSB0cmFuc2FjdGlvbiB3YXMg
cGVyZm9ybWVkLCBvciBYU19SRVNFVF9XQVRDSEVTIHdhcyBjYWxsZWQgaW4g
YQp0cmFuc2FjdGlvbi4KClRoaXMgaXMgWFNBLTQ4NCAvIENWRS0yMDI2LTIz
NTU3LgoKUmVwb3J0ZWQtYnk6IEFuZHJpaSBTdWx0YW5vdiA8YW5kcml5LnN1
bHRhbm92QHZhdGVzLnRlY2g+CkZpeGVzOiAxZjlkMDRmYjAyMWMgKCJ4ZW5z
dG9yZWQ6IGFsbG93IGd1ZXN0IHRvIHNodXRkb3duIGFsbCBpdHMgd2F0Y2hl
cy90cmFuc2FjdGlvbnMiKQpTaWduZWQtb2ZmLWJ5OiBKdWVyZ2VuIEdyb3Nz
IDxqZ3Jvc3NAc3VzZS5jb20+Ci0tLQogdG9vbHMveGVuc3RvcmVkL3RyYW5z
YWN0aW9uLmMgfCAyMCArKysrKysrKystLS0tLS0tLS0tLQogMSBmaWxlIGNo
YW5nZWQsIDkgaW5zZXJ0aW9ucygrKSwgMTEgZGVsZXRpb25zKC0pCgpkaWZm
IC0tZ2l0IGEvdG9vbHMveGVuc3RvcmVkL3RyYW5zYWN0aW9uLmMgYi90b29s
cy94ZW5zdG9yZWQvdHJhbnNhY3Rpb24uYwppbmRleCAxNjdjZDU5N2ZkLi4w
ODI1YzQ4ODU5IDEwMDY0NAotLS0gYS90b29scy94ZW5zdG9yZWQvdHJhbnNh
Y3Rpb24uYworKysgYi90b29scy94ZW5zdG9yZWQvdHJhbnNhY3Rpb24uYwpA
QCAtNDMyLDE3ICs0MzIsMjMgQEAgc3RhdGljIGludCBmaW5hbGl6ZV90cmFu
c2FjdGlvbihzdHJ1Y3QgY29ubmVjdGlvbiAqY29ubiwKIHN0YXRpYyBpbnQg
ZGVzdHJveV90cmFuc2FjdGlvbih2b2lkICpfdHJhbnNhY3Rpb24pCiB7CiAJ
c3RydWN0IHRyYW5zYWN0aW9uICp0cmFucyA9IF90cmFuc2FjdGlvbjsKKwlz
dHJ1Y3QgY29ubmVjdGlvbiAqY29ubiA9IHRyYW5zLT5jb25uOwogCXN0cnVj
dCBhY2Nlc3NlZF9ub2RlICppOwogCiAJd3JsX250cmFuc2FjdGlvbnMtLTsK
IAl0cmFjZV9kZXN0cm95KHRyYW5zLCAidHJhbnNhY3Rpb24iKTsKIAl3aGls
ZSAoKGkgPSBsaXN0X3RvcCgmdHJhbnMtPmFjY2Vzc2VkLCBzdHJ1Y3QgYWNj
ZXNzZWRfbm9kZSwgbGlzdCkpKSB7CiAJCWlmIChpLT50YV9ub2RlKQotCQkJ
ZGJfZGVsZXRlKHRyYW5zLT5jb25uLCBpLT50cmFuc19uYW1lLCBOVUxMKTsK
KwkJCWRiX2RlbGV0ZShjb25uLCBpLT50cmFuc19uYW1lLCBOVUxMKTsKIAkJ
bGlzdF9kZWwoJmktPmxpc3QpOwogCQl0YWxsb2NfZnJlZShpKTsKIAl9CiAK
KwlsaXN0X2RlbCgmdHJhbnMtPmxpc3QpOworCWRvbWFpbl90cmFuc2FjdGlv
bl9kZWMoY29ubik7CisJaWYgKGxpc3RfZW1wdHkoJmNvbm4tPnRyYW5zYWN0
aW9uX2xpc3QpKQorCQljb25uLT50YV9zdGFydF90aW1lID0gMDsKKwogCXJl
dHVybiAwOwogfQogCkBAIC01MjMsMTAgKzUyOSw2IEBAIGludCBkb190cmFu
c2FjdGlvbl9lbmQoY29uc3Qgdm9pZCAqY3R4LCBzdHJ1Y3QgY29ubmVjdGlv
biAqY29ubiwKIAkJcmV0dXJuIEVOT0VOVDsKIAogCWNvbm4tPnRyYW5zYWN0
aW9uID0gTlVMTDsKLQlsaXN0X2RlbCgmdHJhbnMtPmxpc3QpOwotCWRvbWFp
bl90cmFuc2FjdGlvbl9kZWMoY29ubik7Ci0JaWYgKGxpc3RfZW1wdHkoJmNv
bm4tPnRyYW5zYWN0aW9uX2xpc3QpKQotCQljb25uLT50YV9zdGFydF90aW1l
ID0gMDsKIAogCWNoa19xdW90YSA9IHRyYW5zLT5ub2RlX2NyZWF0ZWQgJiYg
ZG9tYWluX2lzX3VucHJpdmlsZWdlZChjb25uKTsKIApAQCAtNTcyLDE0ICs1
NzQsMTAgQEAgdm9pZCBjb25uX2RlbGV0ZV9hbGxfdHJhbnNhY3Rpb25zKHN0
cnVjdCBjb25uZWN0aW9uICpjb25uKQogCXN0cnVjdCB0cmFuc2FjdGlvbiAq
dHJhbnM7CiAKIAl3aGlsZSAoKHRyYW5zID0gbGlzdF90b3AoJmNvbm4tPnRy
YW5zYWN0aW9uX2xpc3QsCi0JCQkJIHN0cnVjdCB0cmFuc2FjdGlvbiwgbGlz
dCkpKSB7Ci0JCWxpc3RfZGVsKCZ0cmFucy0+bGlzdCk7CisJCQkJIHN0cnVj
dCB0cmFuc2FjdGlvbiwgbGlzdCkpKQogCQl0YWxsb2NfZnJlZSh0cmFucyk7
Ci0JfQotCi0JYXNzZXJ0KGNvbm4tPnRyYW5zYWN0aW9uID09IE5VTEwpOwog
Ci0JY29ubi0+dGFfc3RhcnRfdGltZSA9IDA7CisJY29ubi0+dHJhbnNhY3Rp
b24gPSBOVUxMOwogfQogCiBpbnQgY2hlY2tfdHJhbnNhY3Rpb25zKHN0cnVj
dCBoYXNodGFibGUgKmhhc2gpCi0tIAoyLjUzLjAKCg==

--=separator
Content-Type: application/octet-stream; name="xsa484-4.17.patch"
Content-Disposition: attachment; filename="xsa484-4.17.patch"
Content-Transfer-Encoding: base64

RnJvbTogSnVlcmdlbiBHcm9zcyA8amdyb3NzQHN1c2UuY29tPgpTdWJqZWN0
OiB0b29scy94ZW5zdG9yZWQ6IG1ha2UgY29ubl9kZWxldGVfYWxsX3RyYW5z
YWN0aW9ucygpIGlkZW1wb3RlbnQKCmNvbm5fZGVsZXRlX2FsbF90cmFuc2Fj
dGlvbnMoKSBzaG91bGQgYmUgY2FsbGFibGUgaW4gYW55IGNvbnRleHQsCnJl
c2V0dGluZyBBTEwgdHJhbnNhY3Rpb24gcmVsYXRlZCBkYXRhLgoKVGhpcyBp
bmNsdWRlcyBudW1iZXIgb2YgYWN0aXZlIHRyYW5zYWN0aW9ucyBhbmQgdGhl
IHRyYW5zYWN0aW9uCnBvaW50ZXIgaW4gc3RydWN0IGNvbm5lY3Rpb24uCgpT
byByZXNldCBjb25uLT50cmFucyB0byBOVUxMIGluIGNvbm5fZGVsZXRlX2Fs
bF90cmFuc2FjdGlvbnMoKSBhbmQKZG8gdGhlIGNsZWFudXAgZm9yIGVhY2gg
dHJhbnNhY3Rpb24gaW4gZGVzdHJveV90cmFuc2FjdGlvbigpLgoKVGhpcyBh
dm9pZHMgdHJpZ2dlcmluZyB0aGUgYXNzZXJ0KCkgaW4gY29ubl9kZWxldGVf
YWxsX3RyYW5zYWN0aW9ucygpCmluIGNhc2UgZS5nLiBpZ25vcmVfY29ubmVj
dGlvbigpIHdhcyBjYWxsZWQgd2hpbGUgYW4gb3BlcmF0aW9uIGluc2lkZQph
IHRyYW5zYWN0aW9uIHdhcyBwZXJmb3JtZWQsIG9yIFhTX1JFU0VUX1dBVENI
RVMgd2FzIGNhbGxlZCBpbiBhCnRyYW5zYWN0aW9uLgoKVGhpcyBpcyBYU0Et
NDg0IC8gQ1ZFLTIwMjYtMjM1NTcuCgpSZXBvcnRlZC1ieTogQW5kcmlpIFN1
bHRhbm92IDxhbmRyaXkuc3VsdGFub3ZAdmF0ZXMudGVjaD4KRml4ZXM6IDFm
OWQwNGZiMDIxYyAoInhlbnN0b3JlZDogYWxsb3cgZ3Vlc3QgdG8gc2h1dGRv
d24gYWxsIGl0cyB3YXRjaGVzL3RyYW5zYWN0aW9ucyIpClNpZ25lZC1vZmYt
Ynk6IEp1ZXJnZW4gR3Jvc3MgPGpncm9zc0BzdXNlLmNvbT4KCi0tLSBhL3Rv
b2xzL3hlbnN0b3JlL3hlbnN0b3JlZF90cmFuc2FjdGlvbi5jCisrKyBiL3Rv
b2xzL3hlbnN0b3JlL3hlbnN0b3JlZF90cmFuc2FjdGlvbi5jCkBAIC00NDUs
NiArNDQ1LDcgQEAgc3RhdGljIGludCBmaW5hbGl6ZV90cmFuc2FjdGlvbihz
dHJ1Y3QgYwogc3RhdGljIGludCBkZXN0cm95X3RyYW5zYWN0aW9uKHZvaWQg
Kl90cmFuc2FjdGlvbikKIHsKIAlzdHJ1Y3QgdHJhbnNhY3Rpb24gKnRyYW5z
ID0gX3RyYW5zYWN0aW9uOworCXN0cnVjdCBjb25uZWN0aW9uICpjb25uID0g
dHJhbnMtPmNvbm47CiAJc3RydWN0IGFjY2Vzc2VkX25vZGUgKmk7CiAJVERC
X0RBVEEga2V5OwogCkBAIC00NTMsMTIgKzQ1NCwxNyBAQCBzdGF0aWMgaW50
IGRlc3Ryb3lfdHJhbnNhY3Rpb24odm9pZCAqX3RyCiAJd2hpbGUgKChpID0g
bGlzdF90b3AoJnRyYW5zLT5hY2Nlc3NlZCwgc3RydWN0IGFjY2Vzc2VkX25v
ZGUsIGxpc3QpKSkgewogCQlpZiAoaS0+dGFfbm9kZSkgewogCQkJc2V0X3Rk
Yl9rZXkoaS0+dHJhbnNfbmFtZSwgJmtleSk7Ci0JCQlkb190ZGJfZGVsZXRl
KHRyYW5zLT5jb25uLCAma2V5LCBOVUxMKTsKKwkJCWRvX3RkYl9kZWxldGUo
Y29ubiwgJmtleSwgTlVMTCk7CiAJCX0KIAkJbGlzdF9kZWwoJmktPmxpc3Qp
OwogCQl0YWxsb2NfZnJlZShpKTsKIAl9CiAKKwlsaXN0X2RlbCgmdHJhbnMt
Pmxpc3QpOworCWNvbm4tPnRyYW5zYWN0aW9uX3N0YXJ0ZWQtLTsKKwlpZiAo
IWNvbm4tPnRyYW5zYWN0aW9uX3N0YXJ0ZWQpCisJCWNvbm4tPnRhX3N0YXJ0
X3RpbWUgPSAwOworCiAJcmV0dXJuIDA7CiB9CiAKQEAgLTU2MSwxMCArNTY3
LDYgQEAgaW50IGRvX3RyYW5zYWN0aW9uX2VuZChjb25zdCB2b2lkICpjdHgs
CiAJCXJldHVybiBFTk9FTlQ7CiAKIAljb25uLT50cmFuc2FjdGlvbiA9IE5V
TEw7Ci0JbGlzdF9kZWwoJnRyYW5zLT5saXN0KTsKLQljb25uLT50cmFuc2Fj
dGlvbl9zdGFydGVkLS07Ci0JaWYgKCFjb25uLT50cmFuc2FjdGlvbl9zdGFy
dGVkKQotCQljb25uLT50YV9zdGFydF90aW1lID0gMDsKIAogCWNoa19xdW90
YSA9IHRyYW5zLT5ub2RlX2NyZWF0ZWQgJiYgZG9tYWluX2lzX3VucHJpdmls
ZWdlZChjb25uKTsKIApAQCAtNjQ2LDE1ICs2NDgsMTEgQEAgdm9pZCBjb25u
X2RlbGV0ZV9hbGxfdHJhbnNhY3Rpb25zKHN0cnVjdAogCXN0cnVjdCB0cmFu
c2FjdGlvbiAqdHJhbnM7CiAKIAl3aGlsZSAoKHRyYW5zID0gbGlzdF90b3Ao
JmNvbm4tPnRyYW5zYWN0aW9uX2xpc3QsCi0JCQkJIHN0cnVjdCB0cmFuc2Fj
dGlvbiwgbGlzdCkpKSB7Ci0JCWxpc3RfZGVsKCZ0cmFucy0+bGlzdCk7CisJ
CQkJIHN0cnVjdCB0cmFuc2FjdGlvbiwgbGlzdCkpKQogCQl0YWxsb2NfZnJl
ZSh0cmFucyk7Ci0JfQotCi0JYXNzZXJ0KGNvbm4tPnRyYW5zYWN0aW9uID09
IE5VTEwpOwogCiAJY29ubi0+dHJhbnNhY3Rpb25fc3RhcnRlZCA9IDA7Ci0J
Y29ubi0+dGFfc3RhcnRfdGltZSA9IDA7CisJY29ubi0+dHJhbnNhY3Rpb24g
PSBOVUxMOwogfQogCiBpbnQgY2hlY2tfdHJhbnNhY3Rpb25zKHN0cnVjdCBo
YXNodGFibGUgKmhhc2gpCg==

--=separator--


From xen-devel-bounces@lists.xenproject.org Tue Apr 28 12:01:52 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 28 Apr 2026 12:01:52 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1295650.1572366 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wHh8S-0006CI-5d; Tue, 28 Apr 2026 12:01:52 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1295650.1572366; Tue, 28 Apr 2026 12: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 1wHh8R-000698-Qw; Tue, 28 Apr 2026 12:01:51 +0000
Received: by outflank-mailman (input) for mailman id 1295650;
 Tue, 28 Apr 2026 12:01:50 +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 1wHh8P-0005Su-TQ; Tue, 28 Apr 2026 12:01:50 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wHh8P-004jZf-8v; Tue, 28 Apr 2026 14:01:49 +0200
Received: from [10.42.69.8] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <andrewcoop@xenbits.xen.org>)
 id 69f0a1ab-e002-0a2a0a5209dd-0a2a45088726-10
 for <multiple-recipients>; Tue, 28 Apr 2026 14:01:49 +0200
Received: from [104.130.215.37] (helo=mail.xenproject.org)
 by tlsNG-c1860d.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.1)
 (envelope-from <andrewcoop@xenbits.xen.org>)
 id 69f0a1ab-63b5-0a2a45080019-6882d7258cca-3
 for <multiple-recipients>; Tue, 28 Apr 2026 14:01:49 +0200
Received: from xenbits.xenproject.org ([104.239.192.120])
 by mail.xenproject.org with esmtp (Exim 4.96)
 (envelope-from <andrewcoop@xenbits.xen.org>) id 1wHh8H-0064a6-2y;
 Tue, 28 Apr 2026 12:01:41 +0000
Received: from andrewcoop by xenbits.xenproject.org with local (Exim 4.96)
 (envelope-from <andrewcoop@xenbits.xen.org>) id 1wHh8H-006n23-2q;
 Tue, 28 Apr 2026 12:01: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; none
Content-Type: multipart/mixed; boundary="=separator"; charset="utf-8"
Content-Transfer-Encoding: binary
MIME-Version: 1.0
X-Mailer: MIME-tools 5.510 (Entity 5.510)
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 485 v2 (CVE-2026-31786) - Linux kernel out
 of bounds read via Xen-related sysfs file
Message-Id: <E1wHh8H-006n23-2q@xenbits.xenproject.org>
Date: Tue, 28 Apr 2026 12:01:41 +0000
X-purgate-ID: tlsNG-c1860d/1777377709-38D63DB1-A0E3543C/0/0
X-purgate-type: clean
X-purgate-size: 6361

--=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-31786 / XSA-485
                               version 2

      Linux kernel out of bounds read via Xen-related sysfs file

UPDATES IN VERSION 2
====================

Public release.

ISSUE DESCRIPTION
=================

The Linux sysfs file /sys/hypervisor/properties/buildid does not
contain printable information, but a binary value of typically 16 or
20 bytes, which is not terminated by a zero byte.

The kernel driver making this information available is using the
sprintf() function for writing the data into the user readable buffer,
resulting in a potential out of bounds read past the buildid retrieved
from the Xen hypervisor. In rare cases even writing past the sysfs
buffer of 4kB might happen, if no zero byte is found in the 4kB of
data following the start of the buildid.

This might result in users being capable to read kernel secrets or
even overwrite kernel memory located after the sysfs buffer.

IMPACT
======

Inside any Linux Xen domain information leaks, Denial of Service (DoS)
and privilege escalation might be possible.

VULNERABLE SYSTEMS
==================

All Linux domains with a kernel version 4.13 or later are vulnerable.
Domains up to kernel version 4.12 are not vulnerable.

MITIGATION
==========

There is no known mitigation available.

CREDITS
=======

This issue was discovered by Frediano Ziglio of XenServer.

RESOLUTION
==========

Applying the appropriate attached patch resolves this issue.

xsa485-linux.patch     Linux

$ sha256sum xsa485*
c70b792093d7b314b8c476e39df88a62a2d98fb0efc6328590d0ad3266c77831  xsa485-linux.patch
$

DEPLOYMENT DURING EMBARGO
=========================

Deployment of patches or mitigations is NOT permitted (except where
all the affected systems and VMs are administered and used only by
organisations which are members of the Xen Project Security Issues
Predisclosure List).  Specifically, deployment on public cloud systems
is NOT permitted.

This is because the patch needs to be applied to the guests.

Deployment is permitted only AFTER the embargo ends.

(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/4UyVfoK9kFAmnwoQIMHHBncEB4ZW4u
b3JnAAoJEIP+FMlX6CvZu7cH/0KeJ7rnA7tE5l1TYcD2Enh0jYjMtBw0DIH/bYwd
EGNklioe02/aVGs9TooQDeZZRMOg6tyA3c7skl2jGN51RlHrPMc27tNDGdFR9/F/
0Mp614K4lfoKfEYQTdWxWYPPerIhfkDSkUOmKlOwS/NyJ5HnuQ+LT8j7e+1YKs04
BOjqNorArGoxsRIleRAXIUzZPOreCPrUBRIQwVsULnsGMIkcFSnt4CyV/sPFzILh
2KHCFPZHpQ70SxbgZgVmEb1emwDysps9LoVzrRQcuHsD1AsqtgSvsHau0Wi1juY4
CjygNQUML3r6ZH46DNsovpdHHW08HfhgYuASZ85erwsxM0Q=
=wJb9
-----END PGP SIGNATURE-----

--=separator
Content-Type: application/octet-stream; name="xsa485-linux.patch"
Content-Disposition: attachment; filename="xsa485-linux.patch"
Content-Transfer-Encoding: base64

RnJvbSAwYWU1ZWEwMGNjNTExMTEwNzMzNjY1YjI5MzVhMTU0ZDVlNTY5NDgw
IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBGcmVkaWFubyBaaWds
aW8gPGZyZWRpYW5vLnppZ2xpb0BjaXRyaXguY29tPgpEYXRlOiBGcmksIDI3
IE1hciAyMDI2IDE0OjEzOjM4ICswMTAwClN1YmplY3Q6IFtQQVRDSF0gQnVm
ZmVyIG92ZXJmbG93IGluIGRyaXZlcnMveGVuL3N5cy1oeXBlcnZpc29yLmMK
ClRoZSBidWlsZCBpZCByZXR1cm5lZCBieSBIWVBFUlZJU09SX3hlbl92ZXJz
aW9uKFhFTlZFUl9idWlsZF9pZCkgaXMKbmVpdGhlciBOVUwgdGVybWluYXRl
ZCBub3IgYSBzdHJpbmcuCgpUaGUgZmlyc3QgY2F1c2VzIGEgYnVmZmVyIG92
ZXJmbG93IGFzIHNwcmludGYgaW4gYnVpbGRpZF9zaG93IHdpbGwKcmVhZCBh
bmQgY29weSB0aWxsIGl0IGZpbmRzIGEgTlVMLgoKMDAwMDAwMDAgIGY0IDkx
IDUxIGY0IGRkIDM4IDllIDlkICA2NSA0NyA1MiBlYiAxMCA3MSBkYiA1MCAg
fC4uUS4uOC4uZUdSLi5xLlB8CjAwMDAwMDEwICBiOSBhOCAwMSA0MiA2ZiAy
ZSAzMiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwuLi5Cby4yfAow
MDAwMDAxNwoKU28gdXNlIGEgbWVtY3B5IGluc3RlYWQgb2Ygc3ByaW50ZiB0
byBoYXZlIHRoZSBjb3JyZWN0IHZhbHVlOgoKMDAwMDAwMDAgIGY0IDkxIDUx
IGY0IGRkIDAwIDllIDlkICA2NSA0NyA1MiBlYiAxMCA3MSBkYiA1MCAgfC4u
US4uLi4uZUdSLi5xLlB8CjAwMDAwMDEwICBiOSBhOCAwMSA0MiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwuLi5CfAowMDAwMDAx
NAoKKHRoZSBhYm92ZSBoYXZlIGEgaGFjayB0byBlbWJlZCBhIHplcm8gaW5z
aWRlIGFuZCBjaGVjayBpdCdzCnJldHVybmVkIGNvcnJlY3RseSkuCgpUaGlz
IGlzIFhTQS00ODUgLyBDVkUtMjAyNi0zMTc4NgoKRml4ZXM6IDg0Yjc2MjU3
MjhlYSAoInhlbjogYWRkIHN5c2ZzIG5vZGUgZm9yIGh5cGVydmlzb3IgYnVp
bGQgaWQiKQpTaWduZWQtb2ZmLWJ5OiBGcmVkaWFubyBaaWdsaW8gPGZyZWRp
YW5vLnppZ2xpb0BjaXRyaXguY29tPgpSZXZpZXdlZC1ieTogSnVlcmdlbiBH
cm9zcyA8amdyb3NzQHN1c2UuY29tPgpTaWduZWQtb2ZmLWJ5OiBKdWVyZ2Vu
IEdyb3NzIDxqZ3Jvc3NAc3VzZS5jb20+Ci0tLQogZHJpdmVycy94ZW4vc3lz
LWh5cGVydmlzb3IuYyB8IDggKysrKysrLS0KIDEgZmlsZSBjaGFuZ2VkLCA2
IGluc2VydGlvbnMoKyksIDIgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEv
ZHJpdmVycy94ZW4vc3lzLWh5cGVydmlzb3IuYyBiL2RyaXZlcnMveGVuL3N5
cy1oeXBlcnZpc29yLmMKaW5kZXggYjFiYjAxYmE4MmY4Li45MTkyMzI0MmE1
YWUgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMveGVuL3N5cy1oeXBlcnZpc29yLmMK
KysrIGIvZHJpdmVycy94ZW4vc3lzLWh5cGVydmlzb3IuYwpAQCAtMzY2LDYg
KzM2Niw4IEBAIHN0YXRpYyBzc2l6ZV90IGJ1aWxkaWRfc2hvdyhzdHJ1Y3Qg
aHlwX3N5c2ZzX2F0dHIgKmF0dHIsIGNoYXIgKmJ1ZmZlcikKIAkJCXJldCA9
IHNwcmludGYoYnVmZmVyLCAiPGRlbmllZD4iKTsKIAkJcmV0dXJuIHJldDsK
IAl9CisJaWYgKHJldCA+IFBBR0VfU0laRSkKKwkJcmV0dXJuIC1FTk9TUEM7
CiAKIAlidWlsZGlkID0ga21hbGxvYyhzaXplb2YoKmJ1aWxkaWQpICsgcmV0
LCBHRlBfS0VSTkVMKTsKIAlpZiAoIWJ1aWxkaWQpCkBAIC0zNzMsOCArMzc1
LDEwIEBAIHN0YXRpYyBzc2l6ZV90IGJ1aWxkaWRfc2hvdyhzdHJ1Y3QgaHlw
X3N5c2ZzX2F0dHIgKmF0dHIsIGNoYXIgKmJ1ZmZlcikKIAogCWJ1aWxkaWQt
PmxlbiA9IHJldDsKIAlyZXQgPSBIWVBFUlZJU09SX3hlbl92ZXJzaW9uKFhF
TlZFUl9idWlsZF9pZCwgYnVpbGRpZCk7Ci0JaWYgKHJldCA+IDApCi0JCXJl
dCA9IHNwcmludGYoYnVmZmVyLCAiJXMiLCBidWlsZGlkLT5idWYpOworCWlm
IChyZXQgPiAwKSB7CisJCS8qIEJ1aWxkIGlkIGlzIGJpbmFyeSwgbm90IGEg
c3RyaW5nLiAqLworCQltZW1jcHkoYnVmZmVyLCBidWlsZGlkLT5idWYsIHJl
dCk7CisJfQogCWtmcmVlKGJ1aWxkaWQpOwogCiAJcmV0dXJuIHJldDsKLS0g
CjIuNTMuMAoK

--=separator--


From xen-devel-bounces@lists.xenproject.org Tue Apr 28 12:02:02 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 28 Apr 2026 12:02:02 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1295656.1572414 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wHh8b-0007eP-T0; Tue, 28 Apr 2026 12:02:01 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1295656.1572414; Tue, 28 Apr 2026 12:02: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 1wHh8b-0007dK-GT; Tue, 28 Apr 2026 12:02:01 +0000
Received: by outflank-mailman (input) for mailman id 1295656;
 Tue, 28 Apr 2026 12:01:59 +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 1wHh8Y-0007SF-NM; Tue, 28 Apr 2026 12:01:58 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wHh8Y-004jfL-3B; Tue, 28 Apr 2026 14:01:58 +0200
Received: from [10.42.69.4] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <andrewcoop@xenbits.xen.org>)
 id 69f0a1af-e002-0a2a0a5209dd-0a2a450496cc-42
 for <multiple-recipients>; Tue, 28 Apr 2026 14:01:58 +0200
Received: from [104.130.215.37] (helo=mail.xenproject.org)
 by tlsNG-ebf023.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.1)
 (envelope-from <andrewcoop@xenbits.xen.org>)
 id 69f0a1b4-1dec-0a2a45040019-6882d725a9c0-3
 for <multiple-recipients>; Tue, 28 Apr 2026 14:01:57 +0200
Received: from xenbits.xenproject.org ([104.239.192.120])
 by mail.xenproject.org with esmtp (Exim 4.96)
 (envelope-from <andrewcoop@xenbits.xen.org>) id 1wHh8N-0064aR-0U;
 Tue, 28 Apr 2026 12:01:47 +0000
Received: from andrewcoop by xenbits.xenproject.org with local (Exim 4.96)
 (envelope-from <andrewcoop@xenbits.xen.org>) id 1wHh8N-006n3C-0N;
 Tue, 28 Apr 2026 12:01: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; none
Content-Type: multipart/mixed; boundary="=separator"; charset="utf-8"
Content-Transfer-Encoding: binary
MIME-Version: 1.0
X-Mailer: MIME-tools 5.510 (Entity 5.510)
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 486 v2 (CVE-2026-23558) - grant table v2
 race in status page mapping
Message-Id: <E1wHh8N-006n3C-0N@xenbits.xenproject.org>
Date: Tue, 28 Apr 2026 12:01:47 +0000
X-purgate-ID: tlsNG-ebf023/1777377718-3144B3FF-30DF8368/0/0
X-purgate-type: clean
X-purgate-size: 20327

--=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-23558 / XSA-486
                               version 2

              grant table v2 race in status page mapping

UPDATES IN VERSION 2
====================

Public release.

ISSUE DESCRIPTION
=================

The adjustments made for XSA-379 as well as those subsequently becoming
XSA-387 still left a race window, when a HVM or PVH guest does a grant
table version change from v2 to v1 in parallel with mapping the status
page(s) via XENMEM_add_to_physmap.  Some of the status pages may then be
freed while mappings of them would still be inserted into the guest's
secondary (P2M) page tables.

IMPACT
======

Privilege escalation, information leaks, and Denial of Service (DoS) up
to affecting the entire host cannot be excluded.

VULNERABLE SYSTEMS
==================

All Xen versions from 4.0 onwards are affected.  Xen versions 3.4 and
older are not affected.

Only x86 HVM and PVH guests permitted to use grant table version 2
interfaces can leverage this vulnerability.  x86 PV guests cannot
leverage this vulnerability.  On Arm, grant table v2 use is explicitly
unsupported.

MITIGATION
==========

Using the "gnttab=max-ver:1" hypervisor command line option will avoid
the vulnerability.

Using the "max_grant_version=1" guest configuration option for HVM and PVH
guests will also avoid the vulnerability.

CREDITS
=======

This issue was discovered by Claude Opus 4.6 and diagnosed as a security
issue by Rafal Wojtczuk.

RESOLUTION
==========

Applying the appropriate 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.

xsa486.patch           xen-unstable - Xen 4.19.x
xsa486-4.18.patch      Xen 4.18.x - Xen 4.17.x

$ sha256sum xsa486*
0bc1336f0d8de463e30a920bb900b0199a79b4cc19af72e64cfb60504fa6599d  xsa486.patch
3fa23326a2761eba62e661fa052c1cd6b69041ea6752ed573ab240ebcdffedf8  xsa486-4.18.patch
$

DEPLOYMENT DURING EMBARGO
=========================

Deployment of the patches described above (or others which are
substantially similar) is permitted during the embargo, even on public-
facing systems with untrusted guest users and administrators.

HOWEVER, deployment of the mitigation is NOT permitted (except where
all the affected systems and VMs are administered and used only by
organisations which are members of the Xen Project Security Issues
Predisclosure List).  Specifically, deployment on public cloud systems
is NOT permitted.

This is because restricting the available grant table version is a guest
visible configuration change, which may lead to re-discovery of the issue.

Deployment of this mitigation is permitted only AFTER the embargo ends.

AND: 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/4UyVfoK9kFAmnwoQMMHHBncEB4ZW4u
b3JnAAoJEIP+FMlX6CvZKXgH/1/L4sRCjLuuwnugfhgcfYdOwFfWEsBGhxsuYTHT
61mqh8Ft4asiPf0qSUJzcWCpfKCB8aGBAEWDj7Hle+yAgYZ22Inf4j2emfcehXiu
hkKJ+2VgYs0C4xK1mOrPysxXha9pbyNvEHBJP794QitUYIzuJzeNAcKPmzR10rZ3
jEpyLC41sGiftIB/jq579Mrvz2cp02l2L77+zeWogl7ZMLPs+GbRoF1chTrIo9DU
Rt9WJnF7hD+elk280nwO2N6OCgrEVRmSR6AjsGb3E6JGUmZYJ6ZTtEaV+2TBiCXH
rfrJGwftJLp6a54RRDPjK709itzppJGPG/ur2rrIRxenRcY=
=1e9B
-----END PGP SIGNATURE-----

--=separator
Content-Type: application/octet-stream; name="xsa486.patch"
Content-Disposition: attachment; filename="xsa486.patch"
Content-Transfer-Encoding: base64

RnJvbTogSmFuIEJldWxpY2ggPGpiZXVsaWNoQHN1c2UuY29tPgpTdWJqZWN0
OiBnbnR0YWI6IHNwbGl0IGdudHRhYl9tYXBfZnJhbWUoKQoKSWYgYSBkb21h
aW4gdHJpZXMgdG8gbWFwIHN0YXR1cyBmcmFtZXMgaW4gcGFyYWxsZWwgdG8g
c3dpdGNoaW5nIGdyYW50CnRhYmxlIHZlcnNpb24gZnJvbSAyIHRvIDEsIHRo
ZSBtYXBwaW5nIG9wZXJhdGlvbiBtYXkgcHV0IGluIHBsYWNlIFAyTQplbnRy
aWVzIHJlZmVyZW5jaW5nIE1GTnMgd2hpY2ggZ250dGFiX3VucG9wdWxhdGVf
c3RhdHVzX2ZyYW1lcygpIGlzIGluIHRoZQpwcm9jZXNzIG9mIGZyZWVpbmcu
CgpJZGVhbGx5IHdlIHdvdWxkIHJlZmNvdW50IHBhZ2VzIHdoZW4gZW50ZXJl
ZCBpbnRvIFAyTSB0YWJsZXMsIGJ1dCB0aGF0J3MgYQpzaWduaWZpY2FudCBj
aGFuZ2UuIEV4dGVuZCB0aGUgZ3JhbnQtdGFibGUtbG9ja2VkIHJlZ2lvbiBp
bnN0ZWFkIGluCnhlbm1lbV9hZGRfdG9fcGh5c21hcF9vbmUoKSAoYmVpbmcg
dGhlIHNvbGUgY2FsbGVyIG9mIGdudHRhYl9tYXBfZnJhbWUoKSksCnN1Y2gg
dGhhdCBhIHJhY2Ugd2l0aCBnbnR0YWJfdW5wb3B1bGF0ZV9zdGF0dXNfZnJh
bWVzKCkgaXMgbm8gbG9uZ2VyCnBvc3NpYmxlLgoKVGhpcyBpcyBYU0EtNDg2
IC8gQ1ZFLTIwMjYtMjM1NTguCgpGaXhlczogNWNlOGZhZmE5NDdjICgiRHlu
YW1pYyBncmFudC10YWJsZSBzaXppbmciKQpGaXhlczogYTk4ZGMxMzcwM2Uw
ICgiSW50cm9kdWNlIGEgZ3JhbnRfZW50cnlfdjIgc3RydWN0dXJlIikKUmVw
b3J0ZWQtYnk6IFJhZmFsIFdvanRjenVrIDxyYWZhbC53b2p0Y3p1a0A3YnVs
bHMuY29tPgpTaWduZWQtb2ZmLWJ5OiBKYW4gQmV1bGljaCA8amJldWxpY2hA
c3VzZS5jb20+ClJldmlld2VkLWJ5OiBSb2dlciBQYXUgTW9ubsOpIDxyb2dl
ci5wYXVAY2l0cml4LmNvbT4KCi0tLSBhL3hlbi9hcmNoL2FybS9tbS5jCisr
KyBiL3hlbi9hcmNoL2FybS9tbS5jCkBAIC0xNzQsMTIgKzE3NCwxMCBAQCBp
bnQgeGVubWVtX2FkZF90b19waHlzbWFwX29uZSgKICAgICBzd2l0Y2ggKCBz
cGFjZSApCiAgICAgewogICAgIGNhc2UgWEVOTUFQU1BBQ0VfZ3JhbnRfdGFi
bGU6Ci0gICAgICAgIHJjID0gZ250dGFiX21hcF9mcmFtZShkLCBpZHgsIGdm
biwgJm1mbik7CisgICAgICAgIHJjID0gZ250dGFiX21hcF9mcmFtZV9iZWdp
bihkLCBpZHgsIGdmbiwgJm1mbik7CiAgICAgICAgIGlmICggcmMgKQogICAg
ICAgICAgICAgcmV0dXJuIHJjOwogCi0gICAgICAgIC8qIE5lZWQgdG8gdGFr
ZSBjYXJlIG9mIHRoZSByZWZlcmVuY2Ugb2J0YWluZWQgaW4gZ250dGFiX21h
cF9mcmFtZSgpLiAqLwotICAgICAgICBwYWdlID0gbWZuX3RvX3BhZ2UobWZu
KTsKICAgICAgICAgdCA9IHAybV9yYW1fcnc7CiAKICAgICAgICAgYnJlYWs7
CkBAIC0yODEsMTAgKzI3OSwyMyBAQCBpbnQgeGVubWVtX2FkZF90b19waHlz
bWFwX29uZSgKICAgICAgKiB0byBkcm9wIHRoZSByZWZlcmVuY2Ugd2UgdG9v
ayBlYXJsaWVyLiBJbiBhbGwgb3RoZXIgY2FzZXMgd2UgbmVlZCB0bwogICAg
ICAqIGRyb3AgYW55IHJlZmVyZW5jZSB3ZSB0b29rIGVhcmxpZXIgKHBlcmhh
cHMgaW5kaXJlY3RseSkuCiAgICAgICovCi0gICAgaWYgKCBzcGFjZSA9PSBY
RU5NQVBTUEFDRV9nbWZuX2ZvcmVpZ24gPyByYyA6IHBhZ2UgIT0gTlVMTCAp
CisgICAgc3dpdGNoICggc3BhY2UgKQogICAgIHsKKyAgICBkZWZhdWx0Ogor
ICAgICAgICBpZiAoIHBhZ2UgKQorICAgICAgICAgICAgcHV0X3BhZ2UocGFn
ZSk7CisgICAgICAgIGJyZWFrOworCisgICAgY2FzZSBYRU5NQVBTUEFDRV9n
cmFudF90YWJsZToKKyAgICAgICAgZ250dGFiX21hcF9mcmFtZV9lbmQoZCwg
bWZuKTsKKyAgICAgICAgYnJlYWs7CisKKyAgICBjYXNlIFhFTk1BUFNQQUNF
X2dtZm5fZm9yZWlnbjoKKyAgICAgICAgaWYgKCAhcmMgKQorICAgICAgICAg
ICAgYnJlYWs7CiAgICAgICAgIEFTU0VSVChwYWdlICE9IE5VTEwpOwogICAg
ICAgICBwdXRfcGFnZShwYWdlKTsKKyAgICAgICAgYnJlYWs7CiAgICAgfQog
CiAgICAgcmV0dXJuIHJjOwotLS0gYS94ZW4vYXJjaC94ODYvbW0vcDJtLmMK
KysrIGIveGVuL2FyY2gveDg2L21tL3AybS5jCkBAIC0yMDA5LDExICsyMDA5
LDkgQEAgaW50IHhlbm1lbV9hZGRfdG9fcGh5c21hcF9vbmUoCiAgICAgICAg
IGJyZWFrOwogCiAgICAgY2FzZSBYRU5NQVBTUEFDRV9ncmFudF90YWJsZToK
LSAgICAgICAgcmMgPSBnbnR0YWJfbWFwX2ZyYW1lKGQsIGlkeCwgZ2ZuLCAm
bWZuKTsKKyAgICAgICAgcmMgPSBnbnR0YWJfbWFwX2ZyYW1lX2JlZ2luKGQs
IGlkeCwgZ2ZuLCAmbWZuKTsKICAgICAgICAgaWYgKCByYyApCiAgICAgICAg
ICAgICByZXR1cm4gcmM7Ci0gICAgICAgIC8qIE5lZWQgdG8gdGFrZSBjYXJl
IG9mIHRoZSByZWZlcmVuY2Ugb2J0YWluZWQgaW4gZ250dGFiX21hcF9mcmFt
ZSgpLiAqLwotICAgICAgICBwYWdlID0gbWZuX3RvX3BhZ2UobWZuKTsKICAg
ICAgICAgYnJlYWs7CiAKICAgICBjYXNlIFhFTk1BUFNQQUNFX2dtZm46CkBA
IC0yMDk1LDE5ICsyMDkzLDI4IEBAIGludCB4ZW5tZW1fYWRkX3RvX3BoeXNt
YXBfb25lKAogICAgIHB1dF9nZm4oZCwgZ2ZuX3goZ2ZuKSk7CiAKICBwdXRf
Ym90aDoKLSAgICAvKgotICAgICAqIEluIHRoZSBYRU5NQVBTUEFDRV9nbWZu
IGNhc2UsIHdlIHRvb2sgYSByZWYgb2YgdGhlIGdmbiBhdCB0aGUgdG9wLgot
ICAgICAqIFdlIGFsc28gbWF5IG5lZWQgdG8gdHJhbnNmZXIgb3duZXJzaGlw
IG9mIHRoZSBwYWdlIHJlZmVyZW5jZSB0byBvdXIKLSAgICAgKiBjYWxsZXIu
Ci0gICAgICovCi0gICAgaWYgKCBzcGFjZSA9PSBYRU5NQVBTUEFDRV9nbWZu
ICkKKyAgICBzd2l0Y2ggKCBzcGFjZSApCiAgICAgeworICAgIGNhc2UgWEVO
TUFQU1BBQ0VfZ21mbjoKKyAgICAgICAgLyoKKyAgICAgICAgICogV2UgdG9v
ayBhIHJlZiBvZiB0aGUgZ2ZuIGF0IHRoZSB0b3AuICBXZSBhbHNvIG1heSBu
ZWVkIHRvIHRyYW5zZmVyCisgICAgICAgICAqIG93bmVyc2hpcCBvZiB0aGUg
cGFnZSByZWZlcmVuY2UgdG8gb3VyIGNhbGxlci4KKyAgICAgICAgICovCiAg
ICAgICAgIHB1dF9nZm4oZCwgZ21mbik7CiAgICAgICAgIGlmICggIXJjICYm
IGV4dHJhLnBwYWdlICkKICAgICAgICAgewogICAgICAgICAgICAgKmV4dHJh
LnBwYWdlID0gcGFnZTsKICAgICAgICAgICAgIHBhZ2UgPSBOVUxMOwogICAg
ICAgICB9CisgICAgICAgIGJyZWFrOworCisgICAgY2FzZSBYRU5NQVBTUEFD
RV9ncmFudF90YWJsZToKKyAgICAgICAgLyoKKyAgICAgICAgICogV2UgKGdu
dHRhYl9tYXBfZnJhbWVfYmVnaW4oKSkgYWNxdWlyZWQgYSBsb2NrIGFuZCB0
b29rIGEgcmVmIG9mIHRoZQorICAgICAgICAgKiBwYWdlIHVuZGVybHlpbmcg
dGhlIE1GTiBhdCB0aGUgdG9wLgorICAgICAgICAgKi8KKyAgICAgICAgZ250
dGFiX21hcF9mcmFtZV9lbmQoZCwgbWZuKTsKKyAgICAgICAgYnJlYWs7CiAg
ICAgfQogCiAgICAgaWYgKCBwYWdlICkKLS0tIGEveGVuL2NvbW1vbi9ncmFu
dF90YWJsZS5jCisrKyBiL3hlbi9jb21tb24vZ3JhbnRfdGFibGUuYwpAQCAt
NDI1MCw3ICs0MjUwLDggQEAgaW50IGdudHRhYl9hY3F1aXJlX3Jlc291cmNl
KAogICAgIHJldHVybiByYzsKIH0KIAotaW50IGdudHRhYl9tYXBfZnJhbWUo
c3RydWN0IGRvbWFpbiAqZCwgdW5zaWduZWQgbG9uZyBpZHgsIGdmbl90IGdm
biwgbWZuX3QgKm1mbikKK2ludCBnbnR0YWJfbWFwX2ZyYW1lX2JlZ2luKAor
ICAgIHN0cnVjdCBkb21haW4gKmQsIHVuc2lnbmVkIGxvbmcgaWR4LCBnZm5f
dCBnZm4sIG1mbl90ICptZm4pCiB7CiAgICAgaW50IHJjID0gMDsKICAgICBz
dHJ1Y3QgZ3JhbnRfdGFibGUgKmd0ID0gZC0+Z3JhbnRfdGFibGU7CkBAIC00
Mjg4LDExICs0Mjg5LDE5IEBAIGludCBnbnR0YWJfbWFwX2ZyYW1lKHN0cnVj
dCBkb21haW4gKmQsIHUKICAgICAgICAgICAgIHB1dF9wYWdlKHBnKTsKICAg
ICB9CiAKLSAgICBncmFudF93cml0ZV91bmxvY2soZ3QpOworICAgIGlmICgg
cmMgKQorICAgICAgICBncmFudF93cml0ZV91bmxvY2soZC0+Z3JhbnRfdGFi
bGUpOwogCiAgICAgcmV0dXJuIHJjOwogfQogCit2b2lkIGdudHRhYl9tYXBf
ZnJhbWVfZW5kKHN0cnVjdCBkb21haW4gKmQsIG1mbl90IG1mbikKK3sKKyAg
ICBwdXRfcGFnZShtZm5fdG9fcGFnZShtZm4pKTsKKworICAgIGdyYW50X3dy
aXRlX3VubG9jayhkLT5ncmFudF90YWJsZSk7Cit9CisKIHN0YXRpYyB2b2lk
IGdudHRhYl91c2FnZV9wcmludChzdHJ1Y3QgZG9tYWluICpyZCkKIHsKICAg
ICBpbnQgZmlyc3QgPSAxOwotLS0gYS94ZW4vaW5jbHVkZS94ZW4vZ3JhbnRf
dGFibGUuaAorKysgYi94ZW4vaW5jbHVkZS94ZW4vZ3JhbnRfdGFibGUuaApA
QCAtNjAsOCArNjAsMTMgQEAgaW50IGdudHRhYl9yZWxlYXNlX21hcHBpbmdz
KHN0cnVjdCBkb21haQogaW50IG1lbV9zaGFyaW5nX2dyZWZfdG9fZ2ZuKHN0
cnVjdCBncmFudF90YWJsZSAqZ3QsIGdyYW50X3JlZl90IHJlZiwKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBnZm5fdCAqZ2ZuLCB1aW50MTZfdCAq
c3RhdHVzKTsKIAotaW50IGdudHRhYl9tYXBfZnJhbWUoc3RydWN0IGRvbWFp
biAqZCwgdW5zaWduZWQgbG9uZyBpZHgsIGdmbl90IGdmbiwKLSAgICAgICAg
ICAgICAgICAgICAgIG1mbl90ICptZm4pOworLyoKKyAqIFRoZXNlIG5lZWQg
dG8gYmUgdXNlZCBhcyBhIHBhaXIsIGFzIHRoZSBmaXJzdCAoaW4gdGhlIHN1
Y2Nlc3MgY2FzZSkgcmV0dXJucworICogd2l0aCBhIGxvY2sgYW5kIHBhZ2Ug
cmVmZXJlbmNlIGhlbGQgd2hpY2ggdGhlIHNlY29uZCBuZWVkcyB0byBkcm9w
LgorICovCitpbnQgZ250dGFiX21hcF9mcmFtZV9iZWdpbihzdHJ1Y3QgZG9t
YWluICpkLCB1bnNpZ25lZCBsb25nIGlkeCwgZ2ZuX3QgZ2ZuLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgbWZuX3QgKm1mbik7Cit2b2lkIGdudHRh
Yl9tYXBfZnJhbWVfZW5kKHN0cnVjdCBkb21haW4gKmQsIG1mbl90IG1mbik7
CiAKIHVuc2lnbmVkIGludCBnbnR0YWJfcmVzb3VyY2VfbWF4X2ZyYW1lcyhj
b25zdCBzdHJ1Y3QgZG9tYWluICpkLCB1bnNpZ25lZCBpbnQgaWQpOwogCkBA
IC0xMDAsMTIgKzEwNSwxNCBAQCBzdGF0aWMgaW5saW5lIGludCBtZW1fc2hh
cmluZ19ncmVmX3RvX2dmCiAgICAgcmV0dXJuIC1FSU5WQUw7CiB9CiAKLXN0
YXRpYyBpbmxpbmUgaW50IGdudHRhYl9tYXBfZnJhbWUoc3RydWN0IGRvbWFp
biAqZCwgdW5zaWduZWQgbG9uZyBpZHgsCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGdmbl90IGdmbiwgbWZuX3QgKm1mbikKK3N0YXRp
YyBpbmxpbmUgaW50IGdudHRhYl9tYXBfZnJhbWVfYmVnaW4oc3RydWN0IGRv
bWFpbiAqZCwgdW5zaWduZWQgbG9uZyBpZHgsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGdmbl90IGdmbiwgbWZuX3QgKm1m
bikKIHsKICAgICByZXR1cm4gLUVJTlZBTDsKIH0KIAorc3RhdGljIGlubGlu
ZSB2b2lkIGdudHRhYl9tYXBfZnJhbWVfZW5kKHN0cnVjdCBkb21haW4gKmQs
IG1mbl90IG1mbikge30KKwogc3RhdGljIGlubGluZSB1bnNpZ25lZCBpbnQg
Z250dGFiX3Jlc291cmNlX21heF9mcmFtZXMoCiAgICAgY29uc3Qgc3RydWN0
IGRvbWFpbiAqZCwgdW5zaWduZWQgaW50IGlkKQogewo=

--=separator
Content-Type: application/octet-stream; name="xsa486-4.18.patch"
Content-Disposition: attachment; filename="xsa486-4.18.patch"
Content-Transfer-Encoding: base64

RnJvbTogSmFuIEJldWxpY2ggPGpiZXVsaWNoQHN1c2UuY29tPgpTdWJqZWN0
OiBnbnR0YWI6IHNwbGl0IGdudHRhYl9tYXBfZnJhbWUoKQoKSWYgYSBkb21h
aW4gdHJpZXMgdG8gbWFwIHN0YXR1cyBmcmFtZXMgaW4gcGFyYWxsZWwgdG8g
c3dpdGNoaW5nIGdyYW50CnRhYmxlIHZlcnNpb24gZnJvbSAyIHRvIDEsIHRo
ZSBtYXBwaW5nIG9wZXJhdGlvbiBtYXkgcHV0IGluIHBsYWNlIFAyTQplbnRy
aWVzIHJlZmVyZW5jaW5nIE1GTnMgd2hpY2ggZ250dGFiX3VucG9wdWxhdGVf
c3RhdHVzX2ZyYW1lcygpIGlzIGluIHRoZQpwcm9jZXNzIG9mIGZyZWVpbmcu
CgpJZGVhbGx5IHdlIHdvdWxkIHJlZmNvdW50IHBhZ2VzIHdoZW4gZW50ZXJl
ZCBpbnRvIFAyTSB0YWJsZXMsIGJ1dCB0aGF0J3MgYQpzaWduaWZpY2FudCBj
aGFuZ2UuIEV4dGVuZCB0aGUgZ3JhbnQtdGFibGUtbG9ja2VkIHJlZ2lvbiBp
bnN0ZWFkIGluCnhlbm1lbV9hZGRfdG9fcGh5c21hcF9vbmUoKSAoYmVpbmcg
dGhlIHNvbGUgY2FsbGVyIG9mIGdudHRhYl9tYXBfZnJhbWUoKSksCnN1Y2gg
dGhhdCBhIHJhY2Ugd2l0aCBnbnR0YWJfdW5wb3B1bGF0ZV9zdGF0dXNfZnJh
bWVzKCkgaXMgbm8gbG9uZ2VyCnBvc3NpYmxlLgoKVGhpcyBpcyBYU0EtNDg2
IC8gQ1ZFLTIwMjYtMjM1NTguCgpGaXhlczogNWNlOGZhZmE5NDdjICgiRHlu
YW1pYyBncmFudC10YWJsZSBzaXppbmciKQpGaXhlczogYTk4ZGMxMzcwM2Uw
ICgiSW50cm9kdWNlIGEgZ3JhbnRfZW50cnlfdjIgc3RydWN0dXJlIikKUmVw
b3J0ZWQtYnk6IFJhZmFsIFdvanRjenVrIDxyYWZhbC53b2p0Y3p1a0A3YnVs
bHMuY29tPgpTaWduZWQtb2ZmLWJ5OiBKYW4gQmV1bGljaCA8amJldWxpY2hA
c3VzZS5jb20+ClJldmlld2VkLWJ5OiBSb2dlciBQYXUgTW9ubsOpIDxyb2dl
ci5wYXVAY2l0cml4LmNvbT4KCi0tLSBhL3hlbi9hcmNoL2FybS9tbS5jCisr
KyBiL3hlbi9hcmNoL2FybS9tbS5jCkBAIC0xMzcyLDEyICsxMzcyLDEwIEBA
IGludCB4ZW5tZW1fYWRkX3RvX3BoeXNtYXBfb25lKAogICAgIHN3aXRjaCAo
IHNwYWNlICkKICAgICB7CiAgICAgY2FzZSBYRU5NQVBTUEFDRV9ncmFudF90
YWJsZToKLSAgICAgICAgcmMgPSBnbnR0YWJfbWFwX2ZyYW1lKGQsIGlkeCwg
Z2ZuLCAmbWZuKTsKKyAgICAgICAgcmMgPSBnbnR0YWJfbWFwX2ZyYW1lX2Jl
Z2luKGQsIGlkeCwgZ2ZuLCAmbWZuKTsKICAgICAgICAgaWYgKCByYyApCiAg
ICAgICAgICAgICByZXR1cm4gcmM7CiAKLSAgICAgICAgLyogTmVlZCB0byB0
YWtlIGNhcmUgb2YgdGhlIHJlZmVyZW5jZSBvYnRhaW5lZCBpbiBnbnR0YWJf
bWFwX2ZyYW1lKCkuICovCi0gICAgICAgIHBhZ2UgPSBtZm5fdG9fcGFnZSht
Zm4pOwogICAgICAgICB0ID0gcDJtX3JhbV9ydzsKIAogICAgICAgICBicmVh
azsKQEAgLTE0NzksMTAgKzE0NzcsMjMgQEAgaW50IHhlbm1lbV9hZGRfdG9f
cGh5c21hcF9vbmUoCiAgICAgICogdG8gZHJvcCB0aGUgcmVmZXJlbmNlIHdl
IHRvb2sgZWFybGllci4gSW4gYWxsIG90aGVyIGNhc2VzIHdlIG5lZWQgdG8K
ICAgICAgKiBkcm9wIGFueSByZWZlcmVuY2Ugd2UgdG9vayBlYXJsaWVyIChw
ZXJoYXBzIGluZGlyZWN0bHkpLgogICAgICAqLwotICAgIGlmICggc3BhY2Ug
PT0gWEVOTUFQU1BBQ0VfZ21mbl9mb3JlaWduID8gcmMgOiBwYWdlICE9IE5V
TEwgKQorICAgIHN3aXRjaCAoIHNwYWNlICkKICAgICB7CisgICAgZGVmYXVs
dDoKKyAgICAgICAgaWYgKCBwYWdlICkKKyAgICAgICAgICAgIHB1dF9wYWdl
KHBhZ2UpOworICAgICAgICBicmVhazsKKworICAgIGNhc2UgWEVOTUFQU1BB
Q0VfZ3JhbnRfdGFibGU6CisgICAgICAgIGdudHRhYl9tYXBfZnJhbWVfZW5k
KGQsIG1mbik7CisgICAgICAgIGJyZWFrOworCisgICAgY2FzZSBYRU5NQVBT
UEFDRV9nbWZuX2ZvcmVpZ246CisgICAgICAgIGlmICggIXJjICkKKyAgICAg
ICAgICAgIGJyZWFrOwogICAgICAgICBBU1NFUlQocGFnZSAhPSBOVUxMKTsK
ICAgICAgICAgcHV0X3BhZ2UocGFnZSk7CisgICAgICAgIGJyZWFrOwogICAg
IH0KIAogICAgIHJldHVybiByYzsKLS0tIGEveGVuL2FyY2gveDg2L21tL3Ay
bS5jCisrKyBiL3hlbi9hcmNoL3g4Ni9tbS9wMm0uYwpAQCAtMjQ0NiwxMSAr
MjQ0Niw5IEBAIGludCB4ZW5tZW1fYWRkX3RvX3BoeXNtYXBfb25lKAogICAg
ICAgICBicmVhazsKIAogICAgIGNhc2UgWEVOTUFQU1BBQ0VfZ3JhbnRfdGFi
bGU6Ci0gICAgICAgIHJjID0gZ250dGFiX21hcF9mcmFtZShkLCBpZHgsIGdw
Zm4sICZtZm4pOworICAgICAgICByYyA9IGdudHRhYl9tYXBfZnJhbWVfYmVn
aW4oZCwgaWR4LCBncGZuLCAmbWZuKTsKICAgICAgICAgaWYgKCByYyApCiAg
ICAgICAgICAgICByZXR1cm4gcmM7Ci0gICAgICAgIC8qIE5lZWQgdG8gdGFr
ZSBjYXJlIG9mIHRoZSByZWZlcmVuY2Ugb2J0YWluZWQgaW4gZ250dGFiX21h
cF9mcmFtZSgpLiAqLwotICAgICAgICBwYWdlID0gbWZuX3RvX3BhZ2UobWZu
KTsKICAgICAgICAgYnJlYWs7CiAKICAgICBjYXNlIFhFTk1BUFNQQUNFX2dt
Zm46CkBAIC0yNTI2LDE5ICsyNTI0LDI4IEBAIGludCB4ZW5tZW1fYWRkX3Rv
X3BoeXNtYXBfb25lKAogICAgIHB1dF9nZm4oZCwgZ2ZuX3goZ3BmbikpOwog
CiAgcHV0X2JvdGg6Ci0gICAgLyoKLSAgICAgKiBJbiB0aGUgWEVOTUFQU1BB
Q0VfZ21mbiBjYXNlLCB3ZSB0b29rIGEgcmVmIG9mIHRoZSBnZm4gYXQgdGhl
IHRvcC4KLSAgICAgKiBXZSBhbHNvIG1heSBuZWVkIHRvIHRyYW5zZmVyIG93
bmVyc2hpcCBvZiB0aGUgcGFnZSByZWZlcmVuY2UgdG8gb3VyCi0gICAgICog
Y2FsbGVyLgotICAgICAqLwotICAgIGlmICggc3BhY2UgPT0gWEVOTUFQU1BB
Q0VfZ21mbiApCisgICAgc3dpdGNoICggc3BhY2UgKQogICAgIHsKKyAgICBj
YXNlIFhFTk1BUFNQQUNFX2dtZm46CisgICAgICAgIC8qCisgICAgICAgICAq
IFdlIHRvb2sgYSByZWYgb2YgdGhlIGdmbiBhdCB0aGUgdG9wLiAgV2UgYWxz
byBtYXkgbmVlZCB0byB0cmFuc2ZlcgorICAgICAgICAgKiBvd25lcnNoaXAg
b2YgdGhlIHBhZ2UgcmVmZXJlbmNlIHRvIG91ciBjYWxsZXIuCisgICAgICAg
ICAqLwogICAgICAgICBwdXRfZ2ZuKGQsIGdmbik7CiAgICAgICAgIGlmICgg
IXJjICYmIGV4dHJhLnBwYWdlICkKICAgICAgICAgewogICAgICAgICAgICAg
KmV4dHJhLnBwYWdlID0gcGFnZTsKICAgICAgICAgICAgIHBhZ2UgPSBOVUxM
OwogICAgICAgICB9CisgICAgICAgIGJyZWFrOworCisgICAgY2FzZSBYRU5N
QVBTUEFDRV9ncmFudF90YWJsZToKKyAgICAgICAgLyoKKyAgICAgICAgICog
V2UgKGdudHRhYl9tYXBfZnJhbWVfYmVnaW4oKSkgYWNxdWlyZWQgYSBsb2Nr
IGFuZCB0b29rIGEgcmVmIG9mIHRoZQorICAgICAgICAgKiBwYWdlIHVuZGVy
bHlpbmcgdGhlIE1GTiBhdCB0aGUgdG9wLgorICAgICAgICAgKi8KKyAgICAg
ICAgZ250dGFiX21hcF9mcmFtZV9lbmQoZCwgbWZuKTsKKyAgICAgICAgYnJl
YWs7CiAgICAgfQogCiAgICAgaWYgKCBwYWdlICkKLS0tIGEveGVuL2NvbW1v
bi9ncmFudF90YWJsZS5jCisrKyBiL3hlbi9jb21tb24vZ3JhbnRfdGFibGUu
YwpAQCAtNDIzNyw3ICs0MjM3LDggQEAgaW50IGdudHRhYl9hY3F1aXJlX3Jl
c291cmNlKAogICAgIHJldHVybiByYzsKIH0KIAotaW50IGdudHRhYl9tYXBf
ZnJhbWUoc3RydWN0IGRvbWFpbiAqZCwgdW5zaWduZWQgbG9uZyBpZHgsIGdm
bl90IGdmbiwgbWZuX3QgKm1mbikKK2ludCBnbnR0YWJfbWFwX2ZyYW1lX2Jl
Z2luKAorICAgIHN0cnVjdCBkb21haW4gKmQsIHVuc2lnbmVkIGxvbmcgaWR4
LCBnZm5fdCBnZm4sIG1mbl90ICptZm4pCiB7CiAgICAgaW50IHJjID0gMDsK
ICAgICBzdHJ1Y3QgZ3JhbnRfdGFibGUgKmd0ID0gZC0+Z3JhbnRfdGFibGU7
CkBAIC00Mjc1LDExICs0Mjc2LDE5IEBAIGludCBnbnR0YWJfbWFwX2ZyYW1l
KHN0cnVjdCBkb21haW4gKmQsIHUKICAgICAgICAgICAgIHB1dF9wYWdlKHBn
KTsKICAgICB9CiAKLSAgICBncmFudF93cml0ZV91bmxvY2soZ3QpOworICAg
IGlmICggcmMgKQorICAgICAgICBncmFudF93cml0ZV91bmxvY2soZC0+Z3Jh
bnRfdGFibGUpOwogCiAgICAgcmV0dXJuIHJjOwogfQogCit2b2lkIGdudHRh
Yl9tYXBfZnJhbWVfZW5kKHN0cnVjdCBkb21haW4gKmQsIG1mbl90IG1mbikK
K3sKKyAgICBwdXRfcGFnZShtZm5fdG9fcGFnZShtZm4pKTsKKworICAgIGdy
YW50X3dyaXRlX3VubG9jayhkLT5ncmFudF90YWJsZSk7Cit9CisKIHN0YXRp
YyB2b2lkIGdudHRhYl91c2FnZV9wcmludChzdHJ1Y3QgZG9tYWluICpyZCkK
IHsKICAgICBpbnQgZmlyc3QgPSAxOwotLS0gYS94ZW4vaW5jbHVkZS94ZW4v
Z3JhbnRfdGFibGUuaAorKysgYi94ZW4vaW5jbHVkZS94ZW4vZ3JhbnRfdGFi
bGUuaApAQCAtNTMsOCArNTMsMTMgQEAgaW50IGdudHRhYl9yZWxlYXNlX21h
cHBpbmdzKHN0cnVjdCBkb21haQogaW50IG1lbV9zaGFyaW5nX2dyZWZfdG9f
Z2ZuKHN0cnVjdCBncmFudF90YWJsZSAqZ3QsIGdyYW50X3JlZl90IHJlZiwK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnZm5fdCAqZ2ZuLCB1aW50
MTZfdCAqc3RhdHVzKTsKIAotaW50IGdudHRhYl9tYXBfZnJhbWUoc3RydWN0
IGRvbWFpbiAqZCwgdW5zaWduZWQgbG9uZyBpZHgsIGdmbl90IGdmbiwKLSAg
ICAgICAgICAgICAgICAgICAgIG1mbl90ICptZm4pOworLyoKKyAqIFRoZXNl
IG5lZWQgdG8gYmUgdXNlZCBhcyBhIHBhaXIsIGFzIHRoZSBmaXJzdCAoaW4g
dGhlIHN1Y2Nlc3MgY2FzZSkgcmV0dXJucworICogd2l0aCBhIGxvY2sgYW5k
IHBhZ2UgcmVmZXJlbmNlIGhlbGQgd2hpY2ggdGhlIHNlY29uZCBuZWVkcyB0
byBkcm9wLgorICovCitpbnQgZ250dGFiX21hcF9mcmFtZV9iZWdpbihzdHJ1
Y3QgZG9tYWluICpkLCB1bnNpZ25lZCBsb25nIGlkeCwgZ2ZuX3QgZ2ZuLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgbWZuX3QgKm1mbik7Cit2b2lk
IGdudHRhYl9tYXBfZnJhbWVfZW5kKHN0cnVjdCBkb21haW4gKmQsIG1mbl90
IG1mbik7CiAKIHVuc2lnbmVkIGludCBnbnR0YWJfcmVzb3VyY2VfbWF4X2Zy
YW1lcyhjb25zdCBzdHJ1Y3QgZG9tYWluICpkLCB1bnNpZ25lZCBpbnQgaWQp
OwogCkBAIC05MywxMiArOTgsMTQgQEAgc3RhdGljIGlubGluZSBpbnQgbWVt
X3NoYXJpbmdfZ3JlZl90b19nZgogICAgIHJldHVybiAtRUlOVkFMOwogfQog
Ci1zdGF0aWMgaW5saW5lIGludCBnbnR0YWJfbWFwX2ZyYW1lKHN0cnVjdCBk
b21haW4gKmQsIHVuc2lnbmVkIGxvbmcgaWR4LAotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBnZm5fdCBnZm4sIG1mbl90ICptZm4pCitz
dGF0aWMgaW5saW5lIGludCBnbnR0YWJfbWFwX2ZyYW1lX2JlZ2luKHN0cnVj
dCBkb21haW4gKmQsIHVuc2lnbmVkIGxvbmcgaWR4LAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnZm5fdCBnZm4sIG1mbl90
ICptZm4pCiB7CiAgICAgcmV0dXJuIC1FSU5WQUw7CiB9CiAKK3N0YXRpYyBp
bmxpbmUgdm9pZCBnbnR0YWJfbWFwX2ZyYW1lX2VuZChzdHJ1Y3QgZG9tYWlu
ICpkLCBtZm5fdCBtZm4pIHt9CisKIHN0YXRpYyBpbmxpbmUgdW5zaWduZWQg
aW50IGdudHRhYl9yZXNvdXJjZV9tYXhfZnJhbWVzKAogICAgIGNvbnN0IHN0
cnVjdCBkb21haW4gKmQsIHVuc2lnbmVkIGludCBpZCkKIHsK

--=separator--


From xen-devel-bounces@lists.xenproject.org Tue Apr 28 12:02:05 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 28 Apr 2026 12:02:05 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1295660.1572437 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wHh8e-0008H8-Sn; Tue, 28 Apr 2026 12:02:04 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1295660.1572437; Tue, 28 Apr 2026 12: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 1wHh8e-0008DN-9l; Tue, 28 Apr 2026 12:02:04 +0000
Received: by outflank-mailman (input) for mailman id 1295660;
 Tue, 28 Apr 2026 12:02:00 +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 1wHh8a-0007VO-1O; Tue, 28 Apr 2026 12:02:00 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wHh8Z-00C4HC-Db; Tue, 28 Apr 2026 14:01:59 +0200
Received: from [10.42.69.10] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <andrewcoop@xenbits.xen.org>)
 id 69f0a1b2-bab6-0a2a0a5309dd-0a2a450ae9a4-12
 for <multiple-recipients>; Tue, 28 Apr 2026 14:01:59 +0200
Received: from [104.130.215.37] (helo=mail.xenproject.org)
 by tlsNG-4011c0.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.1)
 (envelope-from <andrewcoop@xenbits.xen.org>)
 id 69f0a1b5-56b3-0a2a450a0019-6882d725ccba-3
 for <multiple-recipients>; Tue, 28 Apr 2026 14:01:59 +0200
Received: from xenbits.xenproject.org ([104.239.192.120])
 by mail.xenproject.org with esmtp (Exim 4.96)
 (envelope-from <andrewcoop@xenbits.xen.org>) id 1wHh8S-0064ap-1C;
 Tue, 28 Apr 2026 12:01:52 +0000
Received: from andrewcoop by xenbits.xenproject.org with local (Exim 4.96)
 (envelope-from <andrewcoop@xenbits.xen.org>) id 1wHh8S-006n4i-17;
 Tue, 28 Apr 2026 12:01: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; none
Content-Type: multipart/mixed; boundary="=separator"; charset="utf-8"
Content-Transfer-Encoding: binary
MIME-Version: 1.0
X-Mailer: MIME-tools 5.510 (Entity 5.510)
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 487 v2 (CVE-2026-31787) - Linux kernel
 double free in Xen privcmd driver
Message-Id: <E1wHh8S-006n4i-17@xenbits.xenproject.org>
Date: Tue, 28 Apr 2026 12:01:52 +0000
X-purgate-ID: tlsNG-4011c0/1777377719-46D708B7-2E2A13BD/0/0
X-purgate-type: clean
X-purgate-size: 6117

--=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-31787 / XSA-487
                               version 2

            Linux kernel double free in Xen privcmd driver

UPDATES IN VERSION 2
====================

Public release.

ISSUE DESCRIPTION
=================

The Linux kernel's privcmd driver can be abused to circumvent kernel
lockdown (secure boot) by causing a double free of kernel memory.

Note that this operation can be performed by root only, so any
further impact on the system (like denial of service) is not security
relevant.

IMPACT
======

An administrator of a domain booted in secure mode is able to perform
actions on the kernel which should not be possible in secure mode.

VULNERABLE SYSTEMS
==================

Linux PVH or HVM domains (x86 or Arm) from kernel 3.8 onwards are
vulnerable.

PV domains or non-Linux domains are not vulnerable.

MITIGATION
==========

There is no mitigation available.

CREDITS
=======

This issue was discovered by Atharva Vartak (@0xAth4rv).

RESOLUTION
==========

Applying the attached patch resolves this issue.

xsa487-linux.patch           Linux

$ sha256sum xsa487*
fc7ccf9697203c14ced4364d70175b463b08a17a7559fd8654a12b623b54e5bb  xsa487-linux.patch
$

DEPLOYMENT DURING EMBARGO
=========================

Deployment of patches or mitigations is NOT permitted (except where
all the affected systems and VMs are administered and used only by
organisations which are members of the Xen Project Security Issues
Predisclosure List).  Specifically, deployment on public cloud systems
is NOT permitted.

This is because the patch needs to be applied to the guest.

Deployment is permitted only AFTER the embargo ends.


(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/4UyVfoK9kFAmnwoQUMHHBncEB4ZW4u
b3JnAAoJEIP+FMlX6CvZKRkH/A2DLI9IzMFrmuzksitp7G+MD/AWq3jJe93IAeU1
/QguHV7pQXFyhb1zWR/+DB4zt5tAcGIs75enob8njm3HZ/e5Ht6aSlYq+Rl5ZO6w
kK4aUljpRUxPTOg/PHPKn2sTkZccQxXGxmara5PwhZf0uXb0BBB33dhWbkxQoAR/
FzHSFNHvJKZct/fmmavE38R4AVel0GC3Ufi1jQ44l85xBWtmWN4+ioEno4tDqKkk
d9fmRfCoPta2zCL8DezC3y/LC7x8bbLeL1CMFchnVW+JjJOON22K2R/12dvBFUOF
If+HuBOHviA02fDW86H+sKTn/KnCI1jNjgUto9tCIkdyvSI=
=NY86
-----END PGP SIGNATURE-----

--=separator
Content-Type: application/octet-stream; name="xsa487-linux.patch"
Content-Disposition: attachment; filename="xsa487-linux.patch"
Content-Transfer-Encoding: base64

RnJvbSA1NTc3YzAwMzAxOGFiYjFhZDkyZGM0MDMyY2M3MWIxNzE4YTgzZGZh
IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBKdWVyZ2VuIEdyb3Nz
IDxqZ3Jvc3NAc3VzZS5jb20+CkRhdGU6IEZyaSwgMTAgQXByIDIwMjYgMDk6
MjA6MDQgKzAyMDAKU3ViamVjdDogW1BBVENIXSB4ZW4vcHJpdmNtZDogZml4
IGRvdWJsZSBmcmVlIHZpYSBWTUEgc3BsaXR0aW5nCgpwcml2Y21kX3ZtX29w
cyBkZWZpbmVzIC5jbG9zZSAocHJpdmNtZF9jbG9zZSksIGJ1dCBuZWl0aGVy
IC5tYXlfc3BsaXQKbm9yIC5vcGVuLiBXaGVuIHVzZXJzcGFjZSBkb2VzIGEg
cGFydGlhbCBtdW5tYXAoKSBvbiBhIHByaXZjbWQgbWFwcGluZywKdGhlIGtl
cm5lbCBzcGxpdHMgdGhlIFZNQSB2aWEgX19zcGxpdF92bWEoKS4gU2luY2Ug
bWF5X3NwbGl0IGlzIE5VTEwsCnRoZSBzcGxpdCBpcyBhbGxvd2VkLiB2bV9h
cmVhX2R1cCgpIGNvcGllcyB2bV9wcml2YXRlX2RhdGEgKGEgcGFnZXMKYXJy
YXkgYWxsb2NhdGVkIGluIGFsbG9jX2VtcHR5X3BhZ2VzKCkpIGludG8gdGhl
IG5ldyBWTUEgd2l0aG91dCBhbnkKZml4dXAsIGJlY2F1c2UgdGhlcmUgaXMg
bm8gLm9wZW4gY2FsbGJhY2suCgpCb3RoIFZNQXMgbm93IHBvaW50IHRvIHRo
ZSBzYW1lIHBhZ2VzIGFycmF5LiBXaGVuIHRoZSB1bm1hcHBlZCBwb3J0aW9u
CmlzIGNsb3NlZCwgcHJpdmNtZF9jbG9zZSgpIGNhbGxzOgogICAgLSB4ZW5f
dW5tYXBfZG9tYWluX2dmbl9yYW5nZSgpCiAgICAtIHhlbl9mcmVlX3VucG9w
dWxhdGVkX3BhZ2VzKCkKICAgIC0ga3ZmcmVlKHBhZ2VzKQoKVGhlIHN1cnZp
dmluZyBWTUEgc3RpbGwgaG9sZHMgdGhlIGRhbmdsaW5nIHBvaW50ZXIuIFdo
ZW4gaXQgaXMgbGF0ZXIKZGVzdHJveWVkLCB0aGUgc2FtZSBzZXF1ZW5jZSBy
dW5zIGFnYWluLCB3aGljaCBsZWFkcyB0byBhIGRvdWJsZSBmcmVlLgoKRml4
IHRoaXMgaXNzdWUgYnkgYWRkaW5nIGEgLm1heV9zcGxpdCBjYWxsYmFjayBk
ZW55aW5nIHRoZSBWTUEgc3BsaXQuCgpUaGlzIGlzIFhTQS00ODcgLyBDVkUt
MjAyNi0zMTc4NwoKRml4ZXM6IGQ3MWY1MTM5ODVjMiAoInhlbjogcHJpdmNt
ZDogc3VwcG9ydCBhdXRvdHJhbnNsYXRlZCBwaHlzbWFwIGd1ZXN0cy4iKQpS
ZXBvcnRlZC1ieTogQXRoYXJ2YSBWYXJ0YWsgPGF0aGFydmEuYS52YXJ0YWtA
Z21haWwuY29tPgpTdWdnZXN0ZWQtYnk6IEF0aGFydmEgVmFydGFrIDxhdGhh
cnZhLmEudmFydGFrQGdtYWlsLmNvbT4KU2lnbmVkLW9mZi1ieTogSnVlcmdl
biBHcm9zcyA8amdyb3NzQHN1c2UuY29tPgpSZXZpZXdlZC1ieTogSmFuIEJl
dWxpY2ggPGpiZXVsaWNoQHN1c2UuY29tPgotLS0KIGRyaXZlcnMveGVuL3By
aXZjbWQuYyB8IDcgKysrKysrKwogMSBmaWxlIGNoYW5nZWQsIDcgaW5zZXJ0
aW9ucygrKQoKZGlmZiAtLWdpdCBhL2RyaXZlcnMveGVuL3ByaXZjbWQuYyBi
L2RyaXZlcnMveGVuL3ByaXZjbWQuYwppbmRleCAxNWJhNTkyMjM2ZTguLjcy
NWE0OWEwZWVlNyAxMDA2NDQKLS0tIGEvZHJpdmVycy94ZW4vcHJpdmNtZC5j
CisrKyBiL2RyaXZlcnMveGVuL3ByaXZjbWQuYwpAQCAtMTYyMCw2ICsxNjIw
LDEyIEBAIHN0YXRpYyB2b2lkIHByaXZjbWRfY2xvc2Uoc3RydWN0IHZtX2Fy
ZWFfc3RydWN0ICp2bWEpCiAJa3ZmcmVlKHBhZ2VzKTsKIH0KIAorc3RhdGlj
IGludCBwcml2Y21kX21heV9zcGxpdChzdHJ1Y3Qgdm1fYXJlYV9zdHJ1Y3Qg
KmFyZWEsIHVuc2lnbmVkIGxvbmcgYWRkcikKK3sKKwkvKiBGb3JiaWQgc3Bs
aXR0aW5nLCBhdm9pZHMgZG91YmxlIGZyZWUgdmlhIHByaXZjbWRfY2xvc2Uo
KS4gKi8KKwlyZXR1cm4gLUVJTlZBTDsKK30KKwogc3RhdGljIHZtX2ZhdWx0
X3QgcHJpdmNtZF9mYXVsdChzdHJ1Y3Qgdm1fZmF1bHQgKnZtZikKIHsKIAlw
cmludGsoS0VSTl9ERUJVRyAicHJpdmNtZF9mYXVsdDogdm1hPSVwICVseC0l
bHgsIHBnb2ZmPSVseCwgdXY9JXBcbiIsCkBAIC0xNjMxLDYgKzE2MzcsNyBA
QCBzdGF0aWMgdm1fZmF1bHRfdCBwcml2Y21kX2ZhdWx0KHN0cnVjdCB2bV9m
YXVsdCAqdm1mKQogCiBzdGF0aWMgY29uc3Qgc3RydWN0IHZtX29wZXJhdGlv
bnNfc3RydWN0IHByaXZjbWRfdm1fb3BzID0gewogCS5jbG9zZSA9IHByaXZj
bWRfY2xvc2UsCisJLm1heV9zcGxpdCA9IHByaXZjbWRfbWF5X3NwbGl0LAog
CS5mYXVsdCA9IHByaXZjbWRfZmF1bHQKIH07CiAKLS0gCjIuNTMuMAoK

--=separator--


From xen-devel-bounces@lists.xenproject.org Tue Apr 28 12:06:13 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 28 Apr 2026 12:06:13 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1295923.1572485 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wHhCZ-00079b-7O; Tue, 28 Apr 2026 12:06:07 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1295923.1572485; Tue, 28 Apr 2026 12:06: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 1wHhCZ-00079U-4H; Tue, 28 Apr 2026 12:06:07 +0000
Received: by outflank-mailman (input) for mailman id 1295923;
 Tue, 28 Apr 2026 12:06:06 +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.19dd3fb6660000f373@swg.vates.tech>)
 id 1wHhCX-00079A-Eo
 for xen-devel@lists.xenproject.org; Tue, 28 Apr 2026 12:06:06 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wHhCW-00C5LB-Pc
 for xen-devel@lists.xenproject.org; Tue, 28 Apr 2026 14:06:04 +0200
Received: from [10.42.69.7] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1) (envelope-from
 <prod-mta-13.8631fc262581453bbf619ec5b2062170.19dd3fb6660000f373@swg.vates.tech>)
 id 69f0a2a9-bab6-0a2a0a5309dd-0a2a450790c6-10
 for <xen-devel@lists.xenproject.org>; Tue, 28 Apr 2026 14:06:04 +0200
Received: from [185.255.28.34] (helo=prod-mta-13.swg-srv.net)
 by tlsNG-ef75cf.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.1)
 (envelope-from
 <prod-mta-13.8631fc262581453bbf619ec5b2062170.19dd3fb6660000f373@swg.vates.tech>)
 id 69f0a2ac-229c-0a2a45070019-b9ff1c22800b-3
 for <xen-devel@lists.xenproject.org>; Tue, 28 Apr 2026 14:06:04 +0200
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
 19dd3fb6660000f373.007 for <xen-devel@lists.xenproject.org>
 (version=TLSv1.3 cipher=TLS_AES_256_GCM_SHA384);
 Tue, 28 Apr 2026 12:06:01 +0000
Received: from [192.168.1.18] (88-175-170-134.subs.proxad.net [88.175.170.134])
 (Authenticated sender: teddy.astie)
 by mail2.vates.fr (Postfix) with ESMTPSA id DFE68861CF;
 Tue, 28 Apr 2026 14:06:00 +0200 (CEST)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@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=YeqpqrGbiQeV318NZ/x97aB67b1RlTm1r4d5OxUH12A=;
 h=from:subject:date:message-id:to:cc:mime-version:content-type:in-reply-to:references:feedback-id;
 b=VtQWe0UkIRR3/IhnOFPohbgPw/Q1/nmWRc8FlLSV/xBMh+S2E2ngV8cpGH9w4ezP7qSR5+j1y
 m2VXVEeBQioab+Nmkb+XK9Owpc2H3RI8DCP1f5NldIfUPU6h/BwTz2UyO2oQ4dPJQlr2K+GHu3h
 XXqZB8N/1b6Ztjsxpav4QVwE1pbzfWrLnUAmsL4nO6BeElbSjeLdHktzI+Fd0dbYysiHvKII9bB
 +X+dEaRWkFcLcyfuJhwyLi+jd4XoSioTJyz7MF5yMy5bJGK8ilWYorxXNQF1iZnZcguXzpNF+9+
 hFlt8iq8smg9S/9p8pAeUrkCydolyXxPmnMlsXcIGzYA==
X-Zone-Loop: e25d48730624bb1c42dc1816181bc6cda55610905932
x-campaign-type: default
x-transaction-id: fb4994e6-a5e4-4197-bfc7-6e40279c01f5
x-swg-uid: 01-504940e1-7647-4dea-8492-c220cc86101b
X-Mailer: Sweego
Message-ID:
 <1777377961.8631fc262581453bbf619ec5b2062170.19dd3fb6660000f373@vates.tech>
x-swg-bid: 1777377961.8631fc262581453bbf619ec5b2062170.19dd3fb6660000f373
Feedback-ID: default:8631fc262581453bbf619ec5b2062170:Sweego
x-campaign-id: default
x-client-id: 8631fc262581453bbf619ec5b2062170
X-Originating-IP: [37.26.189.201]
Date: Tue, 28 Apr 2026 14:06:00 +0200
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH v4 1/9] x86/vioapic: Add ioapic_check() to validate
 IO-APIC state before restore
To: Julian Vetter <julian.vetter@vates.tech>, 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.pau@citrix.com>, Stefano Stabellini <sstabellini@kernel.org>,
 Bertrand Marquis <bertrand.marquis@arm.com>,
 Volodymyr Babchuk <Volodymyr_Babchuk@epam.com>
References: <20260427135406.1281424-1-julian.vetter@vates.tech>
 <1777298079.8631fc262581453bbf619ec5b2062170.19dcf387cf6000f373@vates.tech>
Content-Language: en-US
From: Teddy Astie <teddy.astie@vates.tech>
In-Reply-To: <1777298079.8631fc262581453bbf619ec5b2062170.19dcf387cf6000f373@vates.tech>
X-BM-Disclaimer: Yes
Content-Type: multipart/alternative; boundary="-=Part.66.5bdc74eb85b86f8c.19dd3fb649f.c8792f77bab4f20c=-"
X-Bm-Milter-Handled: 4ffbd6c1-ee69-4e1b-aabd-f977039bd3e2
X-Bm-Transport-Timestamp: 1777377961124
X-purgate-ID: tlsNG-ef75cf/1777377964-ACF66C48-DB87BBC4/0/0
X-purgate-type: clean
X-purgate-size: 3491

---=Part.66.5bdc74eb85b86f8c.19dd3fb649f.c8792f77bab4f20c=-
Content-Type: text/plain; charset=utf-8
Content-Transfer-Encoding: quoted-printable

Le 27/04/2026 =C3=A0 15:57, Julian Vetter a =C3=A9crit=C2=A0:
> Register a check callback for the IOAPIC HVM save/restore entry,
> following the pattern established by vpic_check() for the virtual PIC=2E
> The function first verifies the target domain actually has a virtual
> IO-APIC, returning -ENODEV otherwise=2E It then validates individual
> fields of the saved state: the base_address must be non-zero (as 0 is
> never valid for the IO-APIC MMIO window), the APIC ID must fit within
> its 4-bit hardware field, and ioregsel must address a defined register=
=2E
>=20
> Signed-off-by: Julian Vetter <julian=2Evetter@vates=2Etech>
> ---
> Changes in v4:
> - Replaced the reserved-bit loop from v3 (iterating all redirection
>    table entries and rejecting any with non-zero reserved fields) with
>    targeted named-field validation (base_address !=3D 0, APIC ID < 0xF, =
and
>    ioregsel addresses a defined register)
> - The extended-destination migration safety check (refusing to restore
>    IO-APIC state with ext_dest_id bits set on a domain that does not
>    advertise XEN_HVM_CPUID_EXT_DEST_ID) is added in patch 8, once the
>    flag exists
> ---
>   xen/arch/x86/hvm/vioapic=2Ec | 28 +++++++++++++++++++++++++++-
>   1 file changed, 27 insertions(+), 1 deletion(-)
>=20
> diff --git a/xen/arch/x86/hvm/vioapic=2Ec b/xen/arch/x86/hvm/vioapic=2Ec
> index 7c725f9e47=2E=2E43fb165f84 100644
> --- a/xen/arch/x86/hvm/vioapic=2Ec
> +++ b/xen/arch/x86/hvm/vioapic=2Ec
> @@ -594,6 +594,32 @@ int vioapic_get_trigger_mode(const struct domain *d=
, unsigned int gsi)
>       return vioapic->redirtbl[pin]=2Efields=2Etrig_mode;
>   }
>  =20
> +static int cf_check ioapic_check(const struct domain *d, hvm_domain_con=
text_t *h)
> +{
> +    const HVM_SAVE_TYPE(IOAPIC) *s;
> +
> +    if ( !has_vioapic(d) )
> +        return -ENODEV;
> +
> +    s =3D hvm_get_entry(IOAPIC, h);
> +    if ( !s )
> +        return -ENODATA;
> +
> +    /* base_address of 0 is never valid for the IO-APIC MMIO window=2E =
*/
> +    if ( !s->base_address )
> +        return -EINVAL;
> +
> +    /* IO-APIC APIC ID is a 4-bit field=2E */
> +    if ( s->id > 0xf )
> +        return -EINVAL;
> +
> +    /* ioregsel must address a defined register=2E */
> +    if ( s->ioregsel > VIOAPIC_REG_RTE0 + (ARRAY_SIZE(s->redirtbl) - 1)=
 * 2 + 1 )

you can rewrite it as

s->ioregsel >=3D VIOAPIC_REG_RTE0 + ARRAY_SIZE(s->redirtbl) * 2

> +        return -EINVAL;
> +
> +    return 0;
> +}
> +
>   static int cf_check ioapic_save(struct vcpu *v, hvm_domain_context_t *=
h)
>   {
>       const struct domain *d =3D v->domain;
> @@ -630,7 +656,7 @@ static int cf_check ioapic_load(struct domain *d, hv=
m_domain_context_t *h)
>       return 0;
>   }
>  =20
> -HVM_REGISTER_SAVE_RESTORE(IOAPIC, ioapic_save, NULL, ioapic_load, 1,
> +HVM_REGISTER_SAVE_RESTORE(IOAPIC, ioapic_save, ioapic_check, ioapic_loa=
d, 1,
>                             HVMSR_PER_DOM);

You think you can relax some of the checks in ioapic_load as you moved=20
some of them in ioapic_check=2E

>  =20
>   void vioapic_reset(struct domain *d)

Teddy


-- 
 | Vates 

XCP-ng & Xen Orchestra - Vates solutions

web: https://vate=
s=2Etech
---=Part.66.5bdc74eb85b86f8c.19dd3fb649f.c8792f77bab4f20c=---


From xen-devel-bounces@lists.xenproject.org Tue Apr 28 12:26:29 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 28 Apr 2026 12:26:29 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1296104.1572494 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wHhVs-0002fF-P3; Tue, 28 Apr 2026 12:26:04 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1296104.1572494; Tue, 28 Apr 2026 12:26: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 1wHhVs-0002f8-M6; Tue, 28 Apr 2026 12:26:04 +0000
Received: by outflank-mailman (input) for mailman id 1296104;
 Tue, 28 Apr 2026 12:26:03 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <xakep.amatop@gmail.com>) id 1wHhVr-0002f2-Fo
 for xen-devel@lists.xenproject.org; Tue, 28 Apr 2026 12:26:03 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wHhVq-004oLd-Rl
 for xen-devel@lists.xenproject.org; Tue, 28 Apr 2026 14:26:02 +0200
Received: from [10.42.69.8] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <xakep.amatop@gmail.com>)
 id 69f0a73d-bab6-0a2a0a5309dd-0a2a4508ea6e-48
 for <xen-devel@lists.xenproject.org>; Tue, 28 Apr 2026 14:26:02 +0200
Received: from [209.85.208.179] (helo=mail-lj1-f179.google.com)
 by tlsNG-c1860d.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.1)
 (envelope-from <xakep.amatop@gmail.com>)
 id 69f0a75a-63b5-0a2a45080019-d155d0b3a840-3
 for <xen-devel@lists.xenproject.org>; Tue, 28 Apr 2026 14:26:02 +0200
Received: by mail-lj1-f179.google.com with SMTP id
 38308e7fff4ca-38dd9f0fdc6so127376281fa.0
 for <xen-devel@lists.xenproject.org>; Tue, 28 Apr 2026 05:26:02 -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=20251104 header.d=gmail.com header.i="@gmail.com" header.h="Content-Transfer-Encoding:Cc:To:Subject:Message-ID:Date:From:In-Reply-To:References:MIME-Version"
ARC-Seal: i=1; a=rsa-sha256; t=1777379162; cv=none;
        d=google.com; s=arc-20240605;
        b=VKOy/oml/GKOzJQXriq9pU+AfYPQAkuVWv30/DobLLRPok/TP15Ajikb4Ty+JOJPOT
         kzMh5/RW5klEToNZmLaFlMrrZKU+5yM5daE5UwIELT5ZNj83BQPik+ricwk+iDk/fUaJ
         oDPvReaatNkkKAYehE843WVUcsF1SsCIYccxcUaeUAENp0i6HROFb9/g4lXtl7UjriQe
         gr4/3ktnxtS2FwHteBZhAyJabtGKdNuDdE0GlZ4XxluW9ADDLt6auQhfuadT+e2aUhQ9
         E/cvB3vYmutNrtZ0Z2HnTDYi80R7ErGoUSg4OTk5zuwMWjKp3ZIyfH3NHDHHgTxvnKGO
         X3zg==
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20240605;
        h=content-transfer-encoding:cc:to:subject:message-id:date:from
         :in-reply-to:references:mime-version:dkim-signature;
        bh=YPmfFtAGxdEn8CPGgHwoGx4Vicyf9zO1ma3sXWVd0lE=;
        fh=OwR6v8hVmBDp+s1/JF83BUlZMKn8JjzdMy/8jQiCxg0=;
        b=c788X47HpmJF2v2vRe99Z4Gghvu3cVqrL3A++Sd5HH0vJoTkku/bqPtlodb20a1fg4
         whtpA8/uo/phqlweoyn9ps+oOtYTy0+ZCD4FVj4TEGiLDD7ay1aZbrDZXYLxMNvPl1OV
         FzDd0UsIfCKkN7uZhcTuPDz95JnY+ag/3Lbb4DkiXd3+oYXPzs7aGBM8F2CpM9gF5a3Q
         NhfSJUiWJnqnHmt6QA/kMEI/2HV/TI1yo2szvA0jxcvJTTyaCTDUi25/2V3/qqroLZVF
         pJ0231AT+28/19BrVqC4jefwiS8jpR+7eExJquMZoEWxD+vvU/q6V9tBUHN4XV1npaW5
         GO6A==;
        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=20251104; t=1777379162; x=1777983962; darn=lists.xenproject.org;
        h=content-transfer-encoding:cc:to:subject:message-id:date:from
         :in-reply-to:references:mime-version:from:to:cc:subject:date
         :message-id:reply-to;
        bh=YPmfFtAGxdEn8CPGgHwoGx4Vicyf9zO1ma3sXWVd0lE=;
        b=ln3nM9mJxcVlRHLUZAf+c9XVNvVUrS/kEDNjp71FK8iAbDHwW+oXMXl7av0rIKQk+0
         /boF9rKHtsxFD9i6bNDVMcYcSw4jjDHmufZ+k1VIFRcZoELBlL6F7yP77AbacqwH12Eu
         bGT382mMexHYkTf3mIi/jNuB1FoovnvrcBWezrwikcly0EzvkxwuN93D9Ma15nBJFSiF
         ZpTdA+2Nj/fQPM3lvPtq77QdomNXl+Id9rY4O+pk4aarpQnDqmJRgAmrX793/AWljh/7
         iGi7EYZLEtAkGn4UwIT+MnWZMDer2yab0y6nvwRVGdOl/SQ+sIQZ4sXdDYYgp+rmMACR
         7PVQ==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20251104; t=1777379162; x=1777983962;
        h=content-transfer-encoding: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;
        bh=YPmfFtAGxdEn8CPGgHwoGx4Vicyf9zO1ma3sXWVd0lE=;
        b=g4Jq/k/nauCICxGDxCI3lC5bky1fuw9XXVxIPq957sencLs+gArbx1mJQ8xxyXhk+l
         FH6QrANu24Ny0mTsC5+hfNhbt3/K2nTN3PCYsLnCpyYNzZ3tDRbevv1t7j1u4YLpnoPk
         kMGtPZpQsqojC7D5B0GdaFM8w8Ws0QKH85onIMxaLlcMB0aN/hAdE4S6Or5McbL+5TPF
         0ZitzepIGX5YYzD6HgYmaNub/I50F3MroDizXReWxVOLe1PjO49Ij573kyZdnU18x0pR
         UAqBpLEYJHXq4sKk3eBMhLwsEuF10i4Q9+6LgTg7v0Oo2mMl+Hc2fCfEtQ7HZpHiO3vr
         6Uzg==
X-Gm-Message-State: AOJu0Yyi3mSBenebJI/eAHplbqE4mlTXQq36tKL9HFw0rb8D7SL+sUYU
	Aeo6dW8/AXw2JLndsi0gqDMuNEY7n3mDnjTfZFowhzVtXOv/oMBbz8iVFoi8TkL1mRsk4DRFOdd
	iPgdTNQ+zYCjp70CMP601ICnG5QcM/0yhEb85
X-Gm-Gg: AeBDietczRjHwevxe2Wx36RBWMl3JLBP4oOb219dR5mpMAEtUnFWHiZzwyK+yVUM9tD
	Cjk1cZbswrL+Ign7vDWzfUOZSUTvMBFOIV/amIOYrhO4JePGbKDKspzyjVUHicRfHEWPMQyQ+9H
	XuTcxpCf1EM6FJdpwhV0/vv0mwhhFCUCTOcXdBsjnQC+Xbii91VascKJEtZJNhVFSfC9qbK3QBy
	ksHlrekn6xxuJTRClizQGPFrfavWQwIzYyXudefUI9208+m1OKUmw/ZRcuELwZ4X58Ee2rCTXzx
	iheYsO9THI/aK1/Meq3HTbkkd7U=
X-Received: by 2002:a05:6512:110c:b0:5a4:558:33ae with SMTP id
 2adb3069b0e04-5a7471187bdmr693239e87.10.1777379161243; Tue, 28 Apr 2026
 05:26:01 -0700 (PDT)
MIME-Version: 1.0
References: <cover.1774431310.git.mykola_kvach@epam.com>
In-Reply-To: <cover.1774431310.git.mykola_kvach@epam.com>
From: Mykola Kvach <xakep.amatop@gmail.com>
Date: Tue, 28 Apr 2026 15:25:49 +0300
X-Gm-Features: AVHnY4JSJekSk7U9pMZyuCzg9bO-oFUh_HBpZSmNEeMJ1AyyBIAN789klYwFL5c
Message-ID: <CAGeoDV-1c1JbxD=W0tBg1ySgyzohgH_Va+5VwK34Oz9J8A7mcQ@mail.gmail.com>
Subject: Ping: Re: [PATCH 0/4] xen/arm: ITS quirk handling fixes and
 board-specific matches
To: Xen-devel <xen-devel@lists.xenproject.org>
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>
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: quoted-printable
X-purgate-ID: tlsNG-c1860d/1777379162-C2577DB1-4D8D0D21/0/0
X-purgate-type: clean
X-purgate-size: 2254

Hi all,

Gentle ping on this series.

There are a few review comments that I can address in a v2, but one
point seems to need maintainer guidance before I rework the series.

In particular, there was a discussion around whether dma-noncoherent
should remain an additive property handled separately from the ITS quirk
table, or whether it should be modelled as part of the quirk matching
machinery, which would likely require accumulating flags from all
matching entries rather than keeping the current first-match semantics.

Could maintainers please share their preference here? I am happy to
prepare a v2 once the expected direction is clear.

Thanks,
Mykola

On Wed, Mar 25, 2026 at 12:41=E2=80=AFPM Mykola Kvach <xakep.amatop@gmail.c=
om> wrote:
>
> From: Mykola Kvach <mykola_kvach@epam.com>
>
> This series cleans up ARM GICv3 ITS quirk handling and fixes the point at
> which quirk-derived memory attributes become visible to the LPI setup pat=
h.
>
> The first patch switches the quirk handling from per-entry init callbacks=
 to
> declarative flags and folds in the DT dma-noncoherent property when deriv=
ing
> the effective ITS attributes.
>
> The second patch extends quirk matching with an optional platform callbac=
k so
> that boards sharing the same IIDR can still be distinguished reliably. Th=
is
> is then used by the third patch to add the Orange Pi 5 ITS quirk for
> RK3588/RK3588S boards.
>
> Finally, the last patch moves ITS quirk discovery and validation earlier =
in
> the boot flow, before host LPI tables are initialized, so the boot CPU do=
es
> not allocate and program LPI data structures with default attributes when=
 the
> platform requires different ones.
>
> Mykola Kvach (4):
>   xen/arm: its: collect quirk flags and honor dma-noncoherent
>   xen/arm: its: add platform match callback for ITS quirks
>   xen/arm: its: add Orange Pi 5 ITS quirk
>   xen/arm: its: pre-initialize ITS quirks before LPI setup
>
>  xen/arch/arm/gic-v3-its.c             | 129 +++++++++++++++++++-------
>  xen/arch/arm/gic-v3.c                 |   7 ++
>  xen/arch/arm/include/asm/gic_v3_its.h |   5 +
>  3 files changed, 107 insertions(+), 34 deletions(-)
>
> --
> 2.43.0
>


From xen-devel-bounces@lists.xenproject.org Tue Apr 28 12:40:28 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 28 Apr 2026 12:40:28 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1296128.1572503 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wHhjj-0005Um-Tx; Tue, 28 Apr 2026 12:40:23 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1296128.1572503; Tue, 28 Apr 2026 12:40: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 1wHhjj-0005Uf-Qq; Tue, 28 Apr 2026 12:40:23 +0000
Received: by outflank-mailman (input) for mailman id 1296128;
 Tue, 28 Apr 2026 12:40:22 +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.19dd41abd83000f373@swg.vates.tech>)
 id 1wHhji-0005UY-NS
 for xen-devel@lists.xenproject.org; Tue, 28 Apr 2026 12:40:22 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wHhjh-008vL8-Vf
 for xen-devel@lists.xenproject.org; Tue, 28 Apr 2026 14:40:21 +0200
Received: from [10.42.69.1] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1) (envelope-from
 <prod-mta-13.8631fc262581453bbf619ec5b2062170.19dd41abd83000f373@swg.vates.tech>)
 id 69f0aaad-5cb7-0a2a0a5109dd-0a2a4501c56e-32
 for <xen-devel@lists.xenproject.org>; Tue, 28 Apr 2026 14:40:21 +0200
Received: from [185.255.28.34] (helo=prod-mta-13.swg-srv.net)
 by tlsNG-d62444.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.1)
 (envelope-from
 <prod-mta-13.8631fc262581453bbf619ec5b2062170.19dd41abd83000f373@swg.vates.tech>)
 id 69f0aab5-c1f2-0a2a45010019-b9ff1c22871d-3
 for <xen-devel@lists.xenproject.org>; Tue, 28 Apr 2026 14:40:21 +0200
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
 19dd41abd83000f373.007 for <xen-devel@lists.xenproject.org>
 (version=TLSv1.3 cipher=TLS_AES_256_GCM_SHA384);
 Tue, 28 Apr 2026 12:40:15 +0000
Received: from [192.168.1.18] (88-175-170-134.subs.proxad.net [88.175.170.134])
 (Authenticated sender: teddy.astie)
 by mail2.vates.fr (Postfix) with ESMTPSA id E09AC861D6;
 Tue, 28 Apr 2026 14:40:14 +0200 (CEST)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@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=9o7gVVzCtgiJq6Ow+DXx1i/e7S2Hj86E3t46w5H5dcQ=;
 h=from:subject:date:message-id:to:cc:mime-version:content-type:in-reply-to:references:feedback-id;
 b=iipgfByd4fW+LAQTzE968w73nf2AoW+kTMoYGz8tb8lpKZ0AKr6rjvpeYsaRqqY1n7pty1yKJ
 pT1flPHiHXvsXj5p0I1LHesN3TevP2aLKJTSHJYzOPOCee0ILP6vogOyeukAcIvuCT9B3HDGeG2
 diHtVLAx6dH/jxReWSXhf48Iz/942zsLDdPODrogz2ONMFCgnMpSG7noExF7r1l9SrohUO2Nni8
 aZu0hdgHlM22yOmabOpWFCcmh90bacaWPa0JxI6abydBuIJDrQkCekipHnbL60QdlQecrwXjG13
 x7lDWBw2Vbltp3N9VXhVQrtj0UCkNObh0PC8CNcqkvug==
X-Zone-Loop: 70faca43bbf3c0363ce7eb759774e53e06203582dbcc
x-campaign-type: default
x-transaction-id: 9d21ec89-02a4-42f5-8b82-bf05a2fdde72
x-swg-uid: 01-63cc4a61-7a10-4e68-8b87-02ceab2da163
X-Mailer: Sweego
Message-ID:
 <1777380015.8631fc262581453bbf619ec5b2062170.19dd41abd83000f373@vates.tech>
x-swg-bid: 1777380015.8631fc262581453bbf619ec5b2062170.19dd41abd83000f373
Feedback-ID: default:8631fc262581453bbf619ec5b2062170:Sweego
x-campaign-id: default
x-client-id: 8631fc262581453bbf619ec5b2062170
X-Originating-IP: [37.26.189.201]
Date: Tue, 28 Apr 2026 14:40:14 +0200
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH v4 2/9] x86/passthrough: Wrap pt_irq_create_bind() restart
 block in braces
To: Julian Vetter <julian.vetter@vates.tech>, 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.pau@citrix.com>, Stefano Stabellini <sstabellini@kernel.org>,
 Bertrand Marquis <bertrand.marquis@arm.com>,
 Volodymyr Babchuk <Volodymyr_Babchuk@epam.com>
References: <20260427135406.1281424-1-julian.vetter@vates.tech>
 <1777298079.8631fc262581453bbf619ec5b2062170.19dcf387e25000f373@vates.tech>
Content-Language: en-US
From: Teddy Astie <teddy.astie@vates.tech>
In-Reply-To: <1777298079.8631fc262581453bbf619ec5b2062170.19dcf387e25000f373@vates.tech>
X-BM-Disclaimer: Yes
Content-Type: multipart/alternative; boundary="-=Part.73.98a3d1c9318306da.19dd41abc0a.36ba62cfdaeb7ccc=-"
X-Bm-Milter-Handled: 4ffbd6c1-ee69-4e1b-aabd-f977039bd3e2
X-Bm-Transport-Timestamp: 1777380015115
X-purgate-ID: tlsNG-d62444/1777380021-B6A61FF4-4D680104/0/0
X-purgate-type: clean
X-purgate-size: 5005

---=Part.73.98a3d1c9318306da.19dd41abc0a.36ba62cfdaeb7ccc=-
Content-Type: text/plain; charset=utf-8
Content-Transfer-Encoding: quoted-printable

Le 27/04/2026 =C3=A0 15:57, Julian Vetter a =C3=A9crit=C2=A0:
> Enclose the restart/retry block in pt_irq_create_bind() in an explicit
> compound statement to prepare for its extraction into a helper function=
=2E
> No functional change=2E
>=20
> Signed-off-by: Julian Vetter <julian=2Evetter@vates=2Etech>
> ---
> Changes in v4:
> - New patch
> - Split out as a preparatory no-functional-change step to make the diff
>    in patch 5 (pt_irq_bind_msi() interface change) easier to review
> ---
>   xen/drivers/passthrough/x86/hvm=2Ec | 80 ++++++++++++++++-------------=
--
>   1 file changed, 41 insertions(+), 39 deletions(-)
>=20
> diff --git a/xen/drivers/passthrough/x86/hvm=2Ec b/xen/drivers/passthrou=
gh/x86/hvm=2Ec
> index b73bb55055=2E=2E691fa1b2c7 100644
> --- a/xen/drivers/passthrough/x86/hvm=2Ec
> +++ b/xen/drivers/passthrough/x86/hvm=2Ec
> @@ -229,52 +229,54 @@ int pt_irq_create_bind(
>           return -EINVAL;
>  =20
>    restart:
> -    write_lock(&d->event_lock);
> -
> -    hvm_irq_dpci =3D domain_get_irq_dpci(d);
> -    if ( !hvm_irq_dpci && !is_hardware_domain(d) )
>       {
> -        unsigned int i;
> +        write_lock(&d->event_lock);
>  =20
> -        /*
> -         * NB: the hardware domain doesn't use a hvm_irq_dpci struct be=
cause
> -         * it's only allowed to identity map GSIs, and so the data cont=
ained in
> -         * that struct (used to map guest GSIs into machine GSIs and pe=
rform
> -         * interrupt routing) is completely useless to it=2E
> -         */
> -        hvm_irq_dpci =3D xzalloc(struct hvm_irq_dpci);
> -        if ( hvm_irq_dpci =3D=3D NULL )
> +        hvm_irq_dpci =3D domain_get_irq_dpci(d);
> +        if ( !hvm_irq_dpci && !is_hardware_domain(d) )
> +        {
> +            unsigned int i;
> +
> +            /*
> +             * NB: the hardware domain doesn't use a hvm_irq_dpci struc=
t because
> +             * it's only allowed to identity map GSIs, and so the data =
contained in
> +             * that struct (used to map guest GSIs into machine GSIs an=
d perform
> +             * interrupt routing) is completely useless to it=2E
> +             */
> +            hvm_irq_dpci =3D xzalloc(struct hvm_irq_dpci);
> +            if ( hvm_irq_dpci =3D=3D NULL )
> +            {
> +                write_unlock(&d->event_lock);
> +                return -ENOMEM;
> +            }
> +            for ( i =3D 0; i < NR_HVM_DOMU_IRQS; i++ )
> +                INIT_LIST_HEAD(&hvm_irq_dpci->girq[i]);
> +
> +            hvm_domain_irq(d)->dpci =3D hvm_irq_dpci;
> +        }
> +
> +        info =3D pirq_get_info(d, pirq);
> +        if ( !info )
>           {
>               write_unlock(&d->event_lock);
>               return -ENOMEM;
>           }
> -        for ( i =3D 0; i < NR_HVM_DOMU_IRQS; i++ )
> -            INIT_LIST_HEAD(&hvm_irq_dpci->girq[i]);
> -
> -        hvm_domain_irq(d)->dpci =3D hvm_irq_dpci;
> -    }
> -
> -    info =3D pirq_get_info(d, pirq);
> -    if ( !info )
> -    {
> -        write_unlock(&d->event_lock);
> -        return -ENOMEM;
> -    }
> -    pirq_dpci =3D pirq_dpci(info);
> +        pirq_dpci =3D pirq_dpci(info);
>  =20
> -    /*
> -     * A crude 'while' loop with us dropping the spinlock and giving
> -     * the softirq_dpci a chance to run=2E
> -     * We MUST check for this condition as the softirq could be schedul=
ed
> -     * and hasn't run yet=2E Note that this code replaced tasklet_kill =
which
> -     * would have spun forever and would do the same thing (wait to flu=
sh out
> -     * outstanding hvm_dirq_assist calls=2E
> -     */
> -    if ( pt_pirq_softirq_active(pirq_dpci) )
> -    {
> -        write_unlock(&d->event_lock);
> -        cpu_relax();
> -        goto restart;
> +        /*
> +         * A crude 'while' loop with us dropping the spinlock and givin=
g
> +         * the softirq_dpci a chance to run=2E
> +         * We MUST check for this condition as the softirq could be sch=
eduled
> +         * and hasn't run yet=2E Note that this code replaced tasklet_k=
ill which
> +         * would have spun forever and would do the same thing (wait to=
 flush out
> +         * outstanding hvm_dirq_assist calls=2E
> +         */
> +        if ( pt_pirq_softirq_active(pirq_dpci) )
> +        {
> +            write_unlock(&d->event_lock);
> +            cpu_relax();
> +            goto restart;
> +        }
>       }
>  =20
>       switch ( pt_irq_bind->irq_type )

shows up as whitespace only changes (aside brackets)

Reviewed-by: Teddy Astie <teddy=2Eastie@vates=2Etech>


-- 
Teddy Astie | Vates XCP-ng Developer

XCP-ng & Xen Orchestra - Vates s=
olutions

web: https://vates=2Etech
---=Part.73.98a3d1c9318306da.19dd41abc0a.36ba62cfdaeb7ccc=---


From xen-devel-bounces@lists.xenproject.org Tue Apr 28 12:48:36 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 28 Apr 2026 12:48:36 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1296150.1572543 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wHhrQ-0006iy-56; Tue, 28 Apr 2026 12:48:20 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1296150.1572543; Tue, 28 Apr 2026 12:48: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 1wHhrQ-0006ir-25; Tue, 28 Apr 2026 12:48:20 +0000
Received: by outflank-mailman (input) for mailman id 1296150;
 Tue, 28 Apr 2026 12:48:19 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <roger.pau@citrix.com>) id 1wHhrP-0006il-A5
 for xen-devel@lists.xenproject.org; Tue, 28 Apr 2026 12:48:19 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wHhrO-001wyy-MJ
 for xen-devel@lists.xenproject.org; Tue, 28 Apr 2026 14:48:18 +0200
Received: from [10.42.69.9] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <roger.pau@citrix.com>)
 id 69f0ac91-2eae-0a2a0a5409dd-0a2a45099c94-6
 for <xen-devel@lists.xenproject.org>; Tue, 28 Apr 2026 14:48:18 +0200
Received: from [52.101.85.70]
 (helo=BYAPR05CU005.outbound.protection.outlook.com)
 by tlsNG-bad1c0.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.1)
 (envelope-from <roger.pau@citrix.com>)
 id 69f0ac90-2497-0a2a45090019-34655546791e-3
 for <xen-devel@lists.xenproject.org>; Tue, 28 Apr 2026 14:48:18 +0200
Received: from CH7PR03MB7860.namprd03.prod.outlook.com (2603:10b6:610:24e::14)
 by MN6PR03MB7648.namprd03.prod.outlook.com (2603:10b6:208:4f7::6)
 with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9846.26; Tue, 28 Apr
 2026 12:48:14 +0000
Received: from CH7PR03MB7860.namprd03.prod.outlook.com
 ([fe80::f5ba:35df:1c9f:b343]) by CH7PR03MB7860.namprd03.prod.outlook.com
 ([fe80::f5ba:35df:1c9f:b343%4]) with mapi id 15.20.9846.025; Tue, 28 Apr 2026
 12:48: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=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=X4uhFEUGLlzbosooyg9jwqPjdoutV5Fn0pvqbSHOMEFpuIHEvu+jmOgTT8+fUeAj+VzRUNCzLbdOgPHauuDlSq1mnCtyUs+g9aMTV5sX2z8aQUhHjclZio/vDr2d8n0+B2QFFp+Fbohr+JGBEIsJFoOf6G9wn1W/tnm96JKIdmN/e9PrD032MnhBksEbXuulpZ1EiS40Rz/GI7U+CkXBqvnPDfA1WxKWRqh6bHGq4lzuc0eEdmyTcGIzxLB3cYnJtYJQInCdMrGZsiY54shiNONfDofWAFX01Sr5lIyGquCFsWdqYdrQUScAdJomVepe02gH6hyACiE3KX1GsMCLgA==
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com;
 s=arcselector10001;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1;
 bh=jJAFhGkgpgpjvEdazwoW+g93D5VMEfX0WdK3X7ZgQQs=;
 b=kr1oy0rHgpjbcE47H+R6HfKg5rWNK+BTX4xjOdNFZyUyiOVr1RXszUAYDZBEsOwJR5/UtgdNjnYLC64lxAwbWMU13tGRsnSDx4p+nVPK8fbF38mV26v8Y9DBy0jzIX0sekDsDEb8B6Hv4DvpAtBDu3xZq7chTFYYE/oj/mbHIPV8O2WDoKQjNv1Af00DOg2CnDT2wV/lkt3889kWIXWIst5qhw/ZAv4fRALRDnwJ80ETfcK2MdjwuJjEdYKkivgt+Icf0aqOU3JknRX9cEficIkqlIRlT8ckQHVFemClFvBLe9L3CAJt4O51i5C9pv8uwcyr6bZxjNE40VrnUcc0vA==
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=jJAFhGkgpgpjvEdazwoW+g93D5VMEfX0WdK3X7ZgQQs=;
 b=jxW4PAplmLvzUjrijH/QTwe2lv04dcHq/aBHXylQlG4LcZvgJLz5d3RM9+gEv7TigU6Ux4YVtzlQksH1arYqMO7brHyE7sk4AMQoG5vDPn4gsqKhcPpmMvKtxO1J8+Gq+K3cZ5tjic6vIvblu4kwKscsG8R5d/ZhnKXgP2zrbN0=
Authentication-Results: dkim=none (message not signed)
 header.d=none;dmarc=none action=none header.from=citrix.com;
Date: Tue, 28 Apr 2026 14:48:10 +0200
From: Roger Pau =?utf-8?B?TW9ubsOp?= <roger.pau@citrix.com>
To: Thierry Escande <thierry.escande@vates.tech>
Cc: xen-devel@lists.xenproject.org, Jan Beulich <jbeulich@suse.com>,
	Andrew Cooper <andrew.cooper3@citrix.com>,
	Anthony PERARD <anthony.perard@vates.tech>
Subject: Re: [PATCH 06/17] hvmloader: Move pci devices setup to a separate
 function
Message-ID: <afCsimOpaMIr50Ua@macbook.local>
References: <20260313163455.790692-1-thierry.escande@vates.tech>
 <20260313163455.790692-7-thierry.escande@vates.tech>
Content-Type: text/plain; charset=utf-8
Content-Disposition: inline
In-Reply-To: <20260313163455.790692-7-thierry.escande@vates.tech>
X-ClientProxiedBy: ZR0P278CA0215.CHEP278.PROD.OUTLOOK.COM
 (2603:10a6:910:6a::25) To CH7PR03MB7860.namprd03.prod.outlook.com
 (2603:10b6:610:24e::14)
MIME-Version: 1.0
X-MS-PublicTrafficType: Email
X-MS-TrafficTypeDiagnostic: CH7PR03MB7860:EE_|MN6PR03MB7648:EE_
X-MS-Office365-Filtering-Correlation-Id: a0155076-09b8-453a-e9dc-08dea5246979
X-MS-Exchange-SenderADCheck: 1
X-MS-Exchange-AntiSpam-Relay: 0
X-Microsoft-Antispam:
	BCL:0;ARA:13230040|376014|366016|1800799024|22082099003|18002099003|56012099003;
X-Microsoft-Antispam-Message-Info:
	U87O/7YLaowd1hi7ZNr353Udo7jmROIWiFu4RoFFNzBW3f40out0amtvDw6MLTwrVwbExUvJC7hJMVgV7qDOoU0OzMXPI6SiEv4cxlVmR6epj3SS46WqVLSPD7pt1UvK22KXljyLcCpR1FeibfZda65UwcAwYvhM31QpBYjkK1JJKb2F94jgef6ymsFB2rb0ZvuLLdY5nco1Frvdf+LG03MFfEuLeHBvlQom8m7A8vEgovMGLF1mqeveioYBd54QybmVd775xyLGiMdnkcoRPUsl4gVFUUa4KT9lJMg9Il6ZcxXaIbHMADL3LUuIvPP2VPxPNmfe5P+5IGkCeuXR4iH1YiwtX+0VNH+WSI66V4FB92FyHu6qcZT6JIHUyIPByWE9DP/VDgkwIF9/5jddUcvQrzMB5gmAd3K0iUwiI8Q2NTsQgvc2p29w+ylNODIrOl0b7erPQWkDHjZU4IJvfvXeLV9T/Sre/jXploMJyO+Z63Ni50bOWDu9T/3OUBncJ7iY69MUO/Ot5EqgMliCm+oBwhibG8Mz31Y8HzhF/6QUdGXFpc9FDpsuAek0m52jz9HSo0mzDRR7YBhKxw3+/Pu7h04sC5yS1nb+bgu0PCzw/4Qjksldim4mI6mHV0LzzVQY1O2IESL4iJhAuJWfhULmJyvNIi8VGL8tW2mp6ybZoi7wv/s6gXw18x0FCv/46IW2SU8ij0a4GT1JnOtgn/9ApwoDC/HulYUc2jyikns=
X-Forefront-Antispam-Report:
	CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:CH7PR03MB7860.namprd03.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(376014)(366016)(1800799024)(22082099003)(18002099003)(56012099003);DIR:OUT;SFP:1101;
X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1
X-MS-Exchange-AntiSpam-MessageData-0:
	=?utf-8?B?eTJGcFVHNEhxSTQrd2xxUHdOZTVIWnVhS2U2WjNoYXVTVll1MndaOEtqem8x?=
 =?utf-8?B?ZTNDckYwU0Y1b2NJQlhYTVg2RVp1ZUZTWDF0b0tteDFYWjR2OXpYc0Q0bWxp?=
 =?utf-8?B?QzhmMCt4UHVmVTg0YWJ5aEwwMTllSE4yaUJUMUdqK3l5emhJbnBkc0I2dEdC?=
 =?utf-8?B?T2sxTVg1YTlZMHJVdUxibWphVUt2SUtOOXMxWE02VUxLSmZPV2s4L3UwWi9M?=
 =?utf-8?B?OHpIVU9kNEZOUzNlUmRDYVBGWmV0ZkdQZHlaVXI5aUViWWdkOGV1RWd6dHJq?=
 =?utf-8?B?SHoralpHVll1NEJDMjh5OHZ6L1RvR0V0TzZjWStRVjBnNjQrWHByeCs0Zy9E?=
 =?utf-8?B?ZkxCNVVVS2dkTnQ4REYyY2pPTnM5eVFUKytvblNLRURLOERhQjF4a1dxOHlE?=
 =?utf-8?B?eXd1dFo1WGY3WDdKYXNhS0ZaYnNJdUNnREtpNlFNMzVreE9vdUNveUFOT08w?=
 =?utf-8?B?UW96SmZxZSt4bHo4RmlKUzdrZjdBdzRyUkxhMG9DY2RRcEtWSTFXRGJIZjF6?=
 =?utf-8?B?dWFkRE1yZnorK3l1bjhVc0dENEwwbngrbUY2L0pEOVJLRUY2ZXZyZDYzd1U2?=
 =?utf-8?B?Wkg1S0xkMXRmWFh2MmpuZGEvVVhoTnM3SWNDS2xTMlpKL2tzU3QxZjJodnFO?=
 =?utf-8?B?RGdsUEhxTkFrVHE2VXR2aXVuTzZaUVFYUmtGNFd3Y1RzYXlwQzNqVkpjVHNj?=
 =?utf-8?B?WHZrTGIzdW8rRWJhLzVneHpuakw0dU8vYkxWQ2g2RDVTNVBoajdnVE1FL2Ro?=
 =?utf-8?B?UXU0MGtDTHRpb2F2RVc4WHJGZ1ZXWFFWVGhKbzZwQ2dOazlUZVZ2Z1E5RlBz?=
 =?utf-8?B?YnM4SEdpekJPSkN0VjFZNWxpVzdUdWpIeUxnQWI2bmlSTGZxcUloNEFyQ2kz?=
 =?utf-8?B?UWpVajlMVWFXanpybFhNM1B3VDZZbHovUW56YkhXN3BoM3M0TzJWVFkrQUNu?=
 =?utf-8?B?OHZpUkd0dHJSZWZFUm56V29MdGpPaWRmTmhqVk9FTzRMMlo3RWpSTHF3Ullr?=
 =?utf-8?B?dlU3bHB0bDRyRlFNSHgxQ2M1L2YwZWZMMnFzUy8rT1p6WEFSbmozc0JuMHRL?=
 =?utf-8?B?QWtkN1RyZkJaZlBwNVovZzhTQnppYjhBNG5mRkFUVkJYeG1jQlRiOFZLbFR1?=
 =?utf-8?B?YUdMVUJ4OHJiUTNEMXZqd1JBNG1VQy9yeWxpTmt0QXJJeXpmU2s3RWhsTDFx?=
 =?utf-8?B?a2dSZ1I5czBlTGg4NjNlTXc2czk4bExoZVpMZXZCVjUwQkk5NTMrOXJoQ2E5?=
 =?utf-8?B?U2JRN2FSQ1lSMkkxRkpCSGVBaFJLTjRVaXpYdHQvaFkxTENwaGphaC8vRmxt?=
 =?utf-8?B?YXhNcE0zL3NxY0FaTzZYVEdPS2VZQUtORURkZ21PSzllcmI0MDVNdzdER1Fw?=
 =?utf-8?B?OHEzbzc1cm1VK2JhRVJONGY4RnVLVy83Wms3RzZzWjhNR05rNkN3N0NmVUFh?=
 =?utf-8?B?SStUWkpuT1gvaThZZWlyWTR0Tk9yMFhzR0JLWDUzVnlwV1pJYXM1Q09jQVFp?=
 =?utf-8?B?N2NpR1NoTjljcWVVRVNuYjlOYnVOUGlSNDZrR0J3WW1wa1c5UWFxbnlxeW1r?=
 =?utf-8?B?VHpFemduL05KK0l5cTZscjcwbGlqN2o5ZXFmVW5Xc3cvMWNlODVONzlLdlpa?=
 =?utf-8?B?TWFRMVpPaW50VTEzai9CcVFpdllML1hmZzBpOHovRm5nb0ZOQ2pwZzNvd2N0?=
 =?utf-8?B?N1RpYjAwWkdUNDMzNE43VzNzV2o0TVFrM1FVK3hSU3h3RmZwak1TY0t2dnE4?=
 =?utf-8?B?cGE3RExuWkVwRVRYQXN4ZTVJWERhaEtOb3Njc2dJMHFyTjBkVm10QkxSbzYx?=
 =?utf-8?B?MEdPN1RwMzYvNXR3WDdXSnFMZ3ZGV2huU2VLbXNUMDlQREMvdU9hNXBKRUFo?=
 =?utf-8?B?V2dqdmRjNU1TMWM5TVEwTTBlUXIzL2NpblhCaWhrRGpPbGNlZjg5NDlQcXVP?=
 =?utf-8?B?RGJ5Nmw0SFYrNkFkVVVtREVXQWZLc292blFjSU9nYlZxdDVQTDc0a1VCYjY5?=
 =?utf-8?B?b2QrSXVPNW0ybnljTjZyenlwSG5QN0JOUS9oR2lidmYyY0FzZkNPeDYwUHNa?=
 =?utf-8?B?KytPYW8rbUlPREdXU3VPOUMrWDAzM0x5YVBoaHFTSmIvdDd0MC9sL1JnYWta?=
 =?utf-8?B?WThxMEE3dFdjenBlT0VtRkQ5N21qNjJiSHJwemVGTjhZaEU5Nk05cUJGa1Rr?=
 =?utf-8?B?bjB4QTU5czVvMTFocExWQzBReHV2a3ZXS2NWUEZHWEVJTkFHbEJIbTU5SEFa?=
 =?utf-8?B?RGdYSTZWMEJPN29zQkFpdGNKVU1tNGRlR1drSlJPRnBCeVI5dG81WElSRUNR?=
 =?utf-8?B?Y0ttTkR1SGduUkw4c3pOQ2Z5eUJqV0NlRnc0Sk9MSmNGK0NoMjRCdz09?=
X-OriginatorOrg: citrix.com
X-MS-Exchange-CrossTenant-Network-Message-Id: a0155076-09b8-453a-e9dc-08dea5246979
X-MS-Exchange-CrossTenant-AuthSource: CH7PR03MB7860.namprd03.prod.outlook.com
X-MS-Exchange-CrossTenant-AuthAs: Internal
X-MS-Exchange-CrossTenant-OriginalArrivalTime: 28 Apr 2026 12:48:14.2967
 (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: /VNd2VtlPOxoQBwdDUKDvX7MlBcZYG6OltroI0ZLdp6NM+tKXT3g/XXCCDA1RPKOEgbBpmmDqJWUikok1bjvgw==
X-MS-Exchange-Transport-CrossTenantHeadersStamped: MN6PR03MB7648
X-purgate-ID: tlsNG-bad1c0/1777380498-48EACA53-81F2ADA8/0/0
X-purgate-type: clean
X-purgate-size: 8085

On Fri, Mar 13, 2026 at 04:35:02PM +0000, Thierry Escande wrote:
> For readability and code simplification, this patch moves PCI-device
> specific initializations out of the pci_setup() function to a new
> function class_specific_pci_device_setup().

AFAICT this is a non-functional change.  Should likely be mentioned in
the commit message to avoid any doubts.

> Signed-off-by: Thierry Escande <thierry.escande@vates.tech>
> ---
>  tools/firmware/hvmloader/pci.c      | 117 +++++++++++++++-------------
>  tools/firmware/hvmloader/pci_regs.h |   4 +
>  2 files changed, 68 insertions(+), 53 deletions(-)
> 
> diff --git a/tools/firmware/hvmloader/pci.c b/tools/firmware/hvmloader/pci.c
> index c41c8d946a..a76d051bdf 100644
> --- a/tools/firmware/hvmloader/pci.c
> +++ b/tools/firmware/hvmloader/pci.c
> @@ -84,12 +84,71 @@ static int find_next_rmrr(uint32_t base)
>      return next_rmrr;
>  }
>  
> +static void class_specific_pci_device_setup(uint16_t vendor_id,
> +                                            uint16_t device_id,
> +                                            uint16_t class,

It's a bit weird to pass the class value into the function, the value
is only used inside the function itself, and hence could be fetched
inside the function as the device BDF is provided as parameters?

> +                                            uint8_t bus,
> +                                            uint8_t devfn, uint8_t *vga_devfn)
> +{
> +    switch ( class )
> +    {
> +    case PCI_CLASS_DISPLAY_VGA:
> +        /* If emulated VGA is found, preserve it as primary VGA. */
> +        if ( (vendor_id == 0x1234) && (device_id == 0x1111) )
> +        {
> +            *vga_devfn = devfn;
> +            virtual_vga = VGA_std;
> +        }
> +        else if ( (vendor_id == 0x1013) && (device_id == 0xb8) )

Since you introduce defines for the device classes, could you also
introduce defines for the vendor and device IDs used here?

> +        {
> +            *vga_devfn = devfn;
> +            virtual_vga = VGA_cirrus;
> +        }
> +        else if ( virtual_vga == VGA_none )
> +        {
> +            *vga_devfn = devfn;
> +            virtual_vga = VGA_pt;
> +            if ( vendor_id == 0x8086 )

This one is PCI_VENDOR_ID_INTEL, also a couple of more instances below.

> +            {
> +                igd_opregion_pgbase = mem_hole_alloc(IGD_OPREGION_PAGES);
> +                /*
> +                 * Write the the OpRegion offset to give the opregion
> +                 * address to the device model. The device model will trap
> +                 * and map the OpRegion at the give address.
> +                 */
> +                pci_writel(*vga_devfn, PCI_INTEL_OPREGION,
> +                           igd_opregion_pgbase << PAGE_SHIFT);
> +            }
> +        }
> +        break;

Newlines after break statements.

> +    case PCI_CLASS_BRIDGE_OTHER:
> +        /* PIIX4 ACPI PM. Special device with special PCI config space. */
> +        ASSERT((vendor_id == 0x8086) && (device_id == 0x7113));
> +        pci_writew(devfn, 0x20, 0x0000); /* No smb bus IO enable */
> +        pci_writew(devfn, 0xd2, 0x0000); /* No smb bus IO enable */
> +        pci_writew(devfn, 0x22, 0x0000);
> +        pci_writew(devfn, 0x3c, 0x0009); /* Hardcoded IRQ9 */
> +        pci_writew(devfn, 0x3d, 0x0001);
> +        pci_writel(devfn, 0x40, ACPI_PM1A_EVT_BLK_ADDRESS_V1 | 1);
> +        pci_writeb(devfn, 0x80, 0x01); /* enable PM io space */
> +        break;
> +    case PCI_CLASS_STORAGE_IDE:
> +        if ( vendor_id == 0x8086 )
> +        {
> +            /* Intel ICHs since PIIX3: enable IDE legacy mode. */
> +            pci_writew(devfn, 0x40, 0x8000); /* enable IDE0 */
> +            pci_writew(devfn, 0x42, 0x8000); /* enable IDE1 */
> +        }
> +        break;
> +    }
> +}
> +
>  void pci_setup(void)
>  {
>      uint8_t is_64bar, using_64bar, bar64_relocate = 0;
>      uint32_t devfn, bar_reg, cmd, bar_data, bar_data_upper;
>      uint64_t base, bar_sz, bar_sz_upper, mmio_total = 0;
> -    uint32_t vga_devfn = 256;
> +    uint8_t vga_devfn = 0xff;
>      uint16_t class, vendor_id, device_id;
>      unsigned int bar, pin, link, isa_irq;
>      uint8_t pci_devfn_decode_type[256] = {};
> @@ -170,57 +229,9 @@ void pci_setup(void)
>          ASSERT((devfn != PCI_ISA_DEVFN) ||
>                 ((vendor_id == 0x8086) && (device_id == 0x7000)));
>  
> -        switch ( class )
> -        {
> -        case 0x0300:
> -            /* If emulated VGA is found, preserve it as primary VGA. */
> -            if ( (vendor_id == 0x1234) && (device_id == 0x1111) )
> -            {
> -                vga_devfn = devfn;
> -                virtual_vga = VGA_std;
> -            }
> -            else if ( (vendor_id == 0x1013) && (device_id == 0xb8) )
> -            {
> -                vga_devfn = devfn;
> -                virtual_vga = VGA_cirrus;
> -            }
> -            else if ( virtual_vga == VGA_none )
> -            {
> -                vga_devfn = devfn;
> -                virtual_vga = VGA_pt;
> -                if ( vendor_id == 0x8086 )
> -                {
> -                    igd_opregion_pgbase = mem_hole_alloc(IGD_OPREGION_PAGES);
> -                    /*
> -                     * Write the the OpRegion offset to give the opregion
> -                     * address to the device model. The device model will trap 
> -                     * and map the OpRegion at the give address.
> -                     */
> -                    pci_writel(vga_devfn, PCI_INTEL_OPREGION,
> -                               igd_opregion_pgbase << PAGE_SHIFT);
> -                }
> -            }
> -            break;
> -        case 0x0680:
> -            /* PIIX4 ACPI PM. Special device with special PCI config space. */
> -            ASSERT((vendor_id == 0x8086) && (device_id == 0x7113));
> -            pci_writew(devfn, 0x20, 0x0000); /* No smb bus IO enable */
> -            pci_writew(devfn, 0xd2, 0x0000); /* No smb bus IO enable */
> -            pci_writew(devfn, 0x22, 0x0000);
> -            pci_writew(devfn, 0x3c, 0x0009); /* Hardcoded IRQ9 */
> -            pci_writew(devfn, 0x3d, 0x0001);
> -            pci_writel(devfn, 0x40, ACPI_PM1A_EVT_BLK_ADDRESS_V1 | 1);
> -            pci_writeb(devfn, 0x80, 0x01); /* enable PM io space */
> -            break;
> -        case 0x0101:
> -            if ( vendor_id == 0x8086 )
> -            {
> -                /* Intel ICHs since PIIX3: enable IDE legacy mode. */
> -                pci_writew(devfn, 0x40, 0x8000); /* enable IDE0 */
> -                pci_writew(devfn, 0x42, 0x8000); /* enable IDE1 */
> -            }
> -            break;
> -        }
> +        class_specific_pci_device_setup(vendor_id, device_id, class,
> +                                        0 /* virt_bus support TBD */,
> +                                        devfn, &vga_devfn);
>  
>          /*
>           * It is recommended that BAR programming be done whilst decode
> @@ -583,7 +594,7 @@ void pci_setup(void)
>                            ((pci_hi_mem_start & -pci_hi_mem_start) - 1)) + 1;
>      }
>  
> -    if ( vga_devfn != 256 )
> +    if ( vga_devfn != 0xff )
>      {
>          /*
>           * VGA registers live in I/O space so ensure that primary VGA
> diff --git a/tools/firmware/hvmloader/pci_regs.h b/tools/firmware/hvmloader/pci_regs.h
> index 4d4dc0cd01..c94278855b 100644
> --- a/tools/firmware/hvmloader/pci_regs.h
> +++ b/tools/firmware/hvmloader/pci_regs.h
> @@ -111,6 +111,10 @@
>  #define PCI_DEVICE_ID_INTEL_82441        0x1237
>  #define PCI_DEVICE_ID_INTEL_Q35_MCH      0x29c0
>  
> +#define PCI_CLASS_STORAGE_IDE            0x0101
> +#define PCI_CLASS_DISPLAY_VGA            0x0300
> +#define PCI_CLASS_BRIDGE_OTHER           0x0680

As mentioned in a previous patch, this would better be placed in a
pci_ids.h header.

Thanks, Roger.


From xen-devel-bounces@lists.xenproject.org Tue Apr 28 12:53:37 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 28 Apr 2026 12:53:37 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1296159.1572552 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wHhwS-0008V8-Mq; Tue, 28 Apr 2026 12:53:32 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1296159.1572552; Tue, 28 Apr 2026 12:53: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 1wHhwS-0008V1-Ju; Tue, 28 Apr 2026 12:53:32 +0000
Received: by outflank-mailman (input) for mailman id 1296159;
 Tue, 28 Apr 2026 12:53:32 +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.19dd426d216000f373@swg.vates.tech>)
 id 1wHhwR-0008Uv-Sp
 for xen-devel@lists.xenproject.org; Tue, 28 Apr 2026 12:53:32 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wHhwR-001ylI-8k
 for xen-devel@lists.xenproject.org; Tue, 28 Apr 2026 14:53:31 +0200
Received: from [10.42.69.11] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1) (envelope-from
 <prod-mta-13.8631fc262581453bbf619ec5b2062170.19dd426d216000f373@swg.vates.tech>)
 id 69f0adc7-e002-0a2a0a5209dd-0a2a450bb026-24
 for <xen-devel@lists.xenproject.org>; Tue, 28 Apr 2026 14:53:31 +0200
Received: from [185.255.28.34] (helo=prod-mta-13.swg-srv.net)
 by tlsNG-42698a.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.1)
 (envelope-from
 <prod-mta-13.8631fc262581453bbf619ec5b2062170.19dd426d216000f373@swg.vates.tech>)
 id 69f0adca-212f-0a2a450b0019-b9ff1c22a139-3
 for <xen-devel@lists.xenproject.org>; Tue, 28 Apr 2026 14:53:31 +0200
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
 19dd426d216000f373.007 for <xen-devel@lists.xenproject.org>
 (version=TLSv1.3 cipher=TLS_AES_256_GCM_SHA384);
 Tue, 28 Apr 2026 12:53:27 +0000
Received: from [192.168.1.18] (88-175-170-134.subs.proxad.net [88.175.170.134])
 (Authenticated sender: teddy.astie)
 by mail2.vates.fr (Postfix) with ESMTPSA id 70F3D861E5;
 Tue, 28 Apr 2026 14:53:26 +0200 (CEST)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@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=0NwevG5QeWgAQyqGH8eMBN2pmsjZ9gFyStGUYXdDeA8=;
 h=from:subject:date:message-id:to:cc:mime-version:content-type:in-reply-to:references:feedback-id;
 b=Tsmmw9dXAuAUYlYSpkt588n1MOCuy02d1+qTeG4q4zkY0NiUzXy2EuAGwCF8TUGv+3qDlfVni
 MTh4jEID99lgdgLzZ3jAJycsFMQ3VRKJ8veSZ2Vk01TRi3MyI/jfnY6/NsglT5RnS5nFYwAICV8
 mLCe954ROA9uCgUqEN2w4NJLdZv3qgy9qLC4n1KW0DM0hUBpgBs1SAl6j3fIT1eQZhUqjdhICeg
 GJ/pjZV2tB68d8Np12EKmxnNIYzdpSc9pUIfQjktvTpjMSxRCa9Ej/Jah+DUuBbKc4Y7FDw20aD
 gXsbnhcNkQom19r13jbUlv5sOr1E+tqfNIlOiixmfOSw==
X-Zone-Loop: 49b0996f75ed9ddff3de1659bbb4289a1471fb6ff5d0
x-campaign-type: default
x-transaction-id: d7f393a3-ca66-4d7f-845b-7475ab891410
x-swg-uid: 01-933eaec2-d412-43fe-bd4b-93df7ede092d
X-Mailer: Sweego
Message-ID:
 <1777380807.8631fc262581453bbf619ec5b2062170.19dd426d216000f373@vates.tech>
x-swg-bid: 1777380807.8631fc262581453bbf619ec5b2062170.19dd426d216000f373
Feedback-ID: default:8631fc262581453bbf619ec5b2062170:Sweego
x-campaign-id: default
x-client-id: 8631fc262581453bbf619ec5b2062170
X-Originating-IP: [37.26.189.201]
Date: Tue, 28 Apr 2026 14:53:26 +0200
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH v4 3/9] x86/passthrough: Extract pt_irq_dpci_setup() from
 pt_irq_create_bind()
To: Julian Vetter <julian.vetter@vates.tech>, 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.pau@citrix.com>, Stefano Stabellini <sstabellini@kernel.org>,
 Bertrand Marquis <bertrand.marquis@arm.com>,
 Volodymyr Babchuk <Volodymyr_Babchuk@epam.com>
References: <20260427135406.1281424-1-julian.vetter@vates.tech>
 <1777298079.8631fc262581453bbf619ec5b2062170.19dcf387f6f000f373@vates.tech>
Content-Language: en-US
From: Teddy Astie <teddy.astie@vates.tech>
In-Reply-To: <1777298079.8631fc262581453bbf619ec5b2062170.19dcf387f6f000f373@vates.tech>
X-BM-Disclaimer: Yes
Content-Type: multipart/alternative; boundary="-=Part.7b.b46d8b43660053ac.19dd426d007.cfc53a05fe197929=-"
X-Bm-Milter-Handled: 4ffbd6c1-ee69-4e1b-aabd-f977039bd3e2
X-Bm-Transport-Timestamp: 1777380806663
X-purgate-ID: tlsNG-42698a/1777380811-0556BF3B-57078A3D/0/0
X-purgate-type: clean
X-purgate-size: 5274

---=Part.7b.b46d8b43660053ac.19dd426d007.cfc53a05fe197929=-
Content-Type: text/plain; charset=utf-8
Content-Transfer-Encoding: quoted-printable

Le 27/04/2026 =C3=A0 15:57, Julian Vetter a =C3=A9crit=C2=A0:
> The setup preamble in pt_irq_create_bind(), lazily allocating
> hvm_irq_dpci, looking up the struct pirq, and spinning until any pending
> hvm_dirq_assist softirq has drained, is needed by pt_irq_bind_msi() as
> well=2E Extract it into a static helper pt_irq_dpci_setup() that returns
> with d->event_lock write-locked on success=2E Replace the open-coded got=
o
> restart loop with a do { } while (true) loop and a continue, making the
> retry structure explicit without a label=2E No functional change=2E
>=20
> Signed-off-by: Julian Vetter <julian=2Evetter@vates=2Etech>
> ---
> Changes in v4:
> - New patch
> - Split out as a preparatory no-functional-change step to make the diff
>    in patch 5 (pt_irq_bind_msi() interface change) easier to review
> ---
>   xen/drivers/passthrough/x86/hvm=2Ec | 54 +++++++++++++++++++++++------=
--
>   1 file changed, 40 insertions(+), 14 deletions(-)
>=20
> diff --git a/xen/drivers/passthrough/x86/hvm=2Ec b/xen/drivers/passthrou=
gh/x86/hvm=2Ec
> index 691fa1b2c7=2E=2E19463c3406 100644
> --- a/xen/drivers/passthrough/x86/hvm=2Ec
> +++ b/xen/drivers/passthrough/x86/hvm=2Ec
> @@ -217,18 +217,22 @@ static struct vcpu *vector_hashing_dest(const stru=
ct domain *d,
>       return dest;
>   }
>  =20
> -int pt_irq_create_bind(
> -    struct domain *d, const struct xen_domctl_bind_pt_irq *pt_irq_bind)
> +/*
> + * Acquire d->event_lock (write), lazily allocate hvm_irq_dpci if neede=
d, look
> + * up the struct pirq for @pirq, and drain any pending hvm_dirq_assist =
softirq
> + * on it before returning=2E Returns 0 with d->event_lock held on succe=
ss,
> + * negative errno otherwise (lock not held)=2E
> + */
> +static int pt_irq_dpci_setup(struct domain *d, unsigned int pirq,
> +                              struct hvm_irq_dpci **hvm_irq_dpci_out,
> +                              struct hvm_pirq_dpci **pirq_dpci_out,
> +                              struct pirq **info_out)
>   {
>       struct hvm_irq_dpci *hvm_irq_dpci;
>       struct hvm_pirq_dpci *pirq_dpci;
>       struct pirq *info;
> -    int rc, pirq =3D pt_irq_bind->machine_irq;
>  =20
> -    if ( pirq < 0 || pirq >=3D d->nr_pirqs )
> -        return -EINVAL;
> -
> - restart:
> +    do
>       {
>           write_lock(&d->event_lock);
>  =20
> @@ -238,10 +242,11 @@ int pt_irq_create_bind(
>               unsigned int i;
>  =20
>               /*
> -             * NB: the hardware domain doesn't use a hvm_irq_dpci struc=
t because
> -             * it's only allowed to identity map GSIs, and so the data =
contained in
> -             * that struct (used to map guest GSIs into machine GSIs an=
d perform
> -             * interrupt routing) is completely useless to it=2E
> +             * NB: the hardware domain doesn't use a hvm_irq_dpci struc=
t
> +             * because it's only allowed to identity map GSIs, and so t=
he
> +             * data contained in that struct (used to map guest GSIs in=
to
> +             * machine GSIs and perform interrupt routing) is completel=
y
> +             * useless to it=2E
>                */
>               hvm_irq_dpci =3D xzalloc(struct hvm_irq_dpci);
>               if ( hvm_irq_dpci =3D=3D NULL )
> @@ -269,15 +274,36 @@ int pt_irq_create_bind(
>            * We MUST check for this condition as the softirq could be sc=
heduled
>            * and hasn't run yet=2E Note that this code replaced tasklet_=
kill which
>            * would have spun forever and would do the same thing (wait t=
o flush out
> -         * outstanding hvm_dirq_assist calls=2E
> +         * outstanding hvm_dirq_assist calls)=2E
>            */
>           if ( pt_pirq_softirq_active(pirq_dpci) )
>           {
>               write_unlock(&d->event_lock);
>               cpu_relax();
> -            goto restart;
> +            continue;
>           }
> -    }
> +
> +        *hvm_irq_dpci_out =3D hvm_irq_dpci;
> +        *pirq_dpci_out =3D pirq_dpci;
> +        *info_out =3D info;
> +        return 0;
> +    } while ( true );

I would prefer something like

do {
   =2E=2E=2E
} while (false);

return 0;

> +}
> +
> +int pt_irq_create_bind(
> +    struct domain *d, const struct xen_domctl_bind_pt_irq *pt_irq_bind)
> +{
> +    struct hvm_irq_dpci *hvm_irq_dpci;
> +    struct hvm_pirq_dpci *pirq_dpci;
> +    struct pirq *info;
> +    int rc, pirq =3D pt_irq_bind->machine_irq;
> +
> +    if ( pirq < 0 || pirq >=3D d->nr_pirqs )
> +        return -EINVAL;
> +
> +    rc =3D pt_irq_dpci_setup(d, pirq, &hvm_irq_dpci, &pirq_dpci, &info)=
;
> +    if ( rc )
> +        return rc;
>  =20
>       switch ( pt_irq_bind->irq_type )
>       {

The rest looks good to me=2E
With the do { =2E=2E=2E } while (false); change:

Reviewed-by: Teddy Astie <teddy=2Eastie@vates=2Etech>


-- 
Teddy Astie | Vates XCP-ng Developer

XCP-ng & Xen Orchestra - Vates s=
olutions

web: https://vates=2Etech
---=Part.7b.b46d8b43660053ac.19dd426d007.cfc53a05fe197929=---


From xen-devel-bounces@lists.xenproject.org Tue Apr 28 13:16:03 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 28 Apr 2026 13:16:03 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1296181.1572609 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wHiHy-0003nj-Ou; Tue, 28 Apr 2026 13:15:46 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1296181.1572609; Tue, 28 Apr 2026 13:15: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 1wHiHy-0003nc-MK; Tue, 28 Apr 2026 13:15:46 +0000
Received: by outflank-mailman (input) for mailman id 1296181;
 Tue, 28 Apr 2026 13:15:45 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <roger.pau@citrix.com>) id 1wHiHw-0003nW-Vv
 for xen-devel@lists.xenproject.org; Tue, 28 Apr 2026 13:15:45 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wHiHv-0024ne-SK
 for xen-devel@lists.xenproject.org; Tue, 28 Apr 2026 15:15:43 +0200
Received: from [10.42.69.7] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <roger.pau@citrix.com>)
 id 69f0b2f9-2eae-0a2a0a5409dd-0a2a4507a3f4-24
 for <xen-devel@lists.xenproject.org>; Tue, 28 Apr 2026 15:15:43 +0200
Received: from [52.101.201.36]
 (helo=PH7PR06CU001.outbound.protection.outlook.com)
 by tlsNG-ef75cf.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.1)
 (envelope-from <roger.pau@citrix.com>)
 id 69f0b2fd-229c-0a2a45070019-3465c9242bfb-3
 for <xen-devel@lists.xenproject.org>; Tue, 28 Apr 2026 15:15:43 +0200
Received: from CH7PR03MB7860.namprd03.prod.outlook.com (2603:10b6:610:24e::14)
 by BL4PR03MB8039.namprd03.prod.outlook.com (2603:10b6:208:58d::9)
 with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9846.26; Tue, 28 Apr
 2026 13:15:39 +0000
Received: from CH7PR03MB7860.namprd03.prod.outlook.com
 ([fe80::f5ba:35df:1c9f:b343]) by CH7PR03MB7860.namprd03.prod.outlook.com
 ([fe80::f5ba:35df:1c9f:b343%4]) with mapi id 15.20.9846.025; Tue, 28 Apr 2026
 13:15: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=UCYiv9jRI/T38x6j3bKrta0v65ACehG2V00fQm0znBPmavTZIEX725wS8wtVnt+cibXr9Pr/BmzrzsMpg3bSbajFN+MphsegXkl2ySmujv3TBAn336MZsov4I4J/FFQP6PunQ0FbdYn3yDqZcUd2QRf9DZgNOG8X2ZDFAEV8XBPJwG8fBWo1rbASPnyftwz7hg06/GUpgIsqR9PSBBQEllGM/EVDPiAnU/yA4YixvShmzybpGXeiCgvsPWWcSjHVOeD/BESbeQTsv01Lw5n05Y5roIVdfZlq79v1C9GUikBK7+olGUcIFYdcQLoZQ4qz9AYsnoTt+UIg4Ltzu9gq/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=q83bzdTX69Ur04jV3IB5WpmjWLEIXSmzew5cCIO6l64=;
 b=mBrd2tpvqjrYAO0EMXNkNOkF1JePDj+GQ4dW11u4WsMUKwL1XjViblK57YzZp98Xj5axgn1vQUahdXLnBnTT15ag6BLszGRk8L9DLwMc0/V2JuPNArhSScBKXHdodMxLyQazLmRGPY4wreLh3IkWiCxlbyU3AZK3BVFvn11lKKuPN8rlweCc8zesbKTswkZQW1IaBybQURyPqT9NH4bPPXkPH+z9CABSU5VQMrDt/PSdYO9VSBroJCP7IZyYHVXO1IJu9lV2VX8F+xA7Tl0c0m2mgp3MZDvb4NZX7s6ddd9iaawRp1kXMbZ3341K0FAqLoe/MrdvEYOBNptyMLIQbg==
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=q83bzdTX69Ur04jV3IB5WpmjWLEIXSmzew5cCIO6l64=;
 b=tm6p9AtIqVCx9IMICFfCMV4I3d2r7Tz3XNcn0lDNi2vjmn+PLZs3Py3SLqLHDHGcJE9+OpLckvQ4tIiV7VF2mfE3xELavh/YxlU6CeYNjk7TmKXLLkkvUnE/uBI6qzJBGBXZpdY3SKJviKliBiNGs+44p0jFRrq8kAzvpkfF3uk=
Authentication-Results: dkim=none (message not signed)
 header.d=none;dmarc=none action=none header.from=citrix.com;
Date: Tue, 28 Apr 2026 15:15:36 +0200
From: Roger Pau =?utf-8?B?TW9ubsOp?= <roger.pau@citrix.com>
To: Thierry Escande <thierry.escande@vates.tech>
Cc: xen-devel@lists.xenproject.org, Jan Beulich <jbeulich@suse.com>,
	Andrew Cooper <andrew.cooper3@citrix.com>,
	Anthony PERARD <anthony.perard@vates.tech>,
	Alexey Gerasimenko <x1917x@gmail.com>
Subject: Re: [PATCH 07/17] hvmloader: add basic Q35 support
Message-ID: <afCy-IU85MdDBlUq@macbook.local>
References: <20260313163455.790692-1-thierry.escande@vates.tech>
 <20260313163455.790692-8-thierry.escande@vates.tech>
Content-Type: text/plain; charset=utf-8
Content-Disposition: inline
In-Reply-To: <20260313163455.790692-8-thierry.escande@vates.tech>
X-ClientProxiedBy: MR1P264CA0134.FRAP264.PROD.OUTLOOK.COM
 (2603:10a6:501:51::14) To CH7PR03MB7860.namprd03.prod.outlook.com
 (2603:10b6:610:24e::14)
MIME-Version: 1.0
X-MS-PublicTrafficType: Email
X-MS-TrafficTypeDiagnostic: CH7PR03MB7860:EE_|BL4PR03MB8039:EE_
X-MS-Office365-Filtering-Correlation-Id: 9fddcc85-336b-4d34-8df2-08dea5283e18
X-MS-Exchange-SenderADCheck: 1
X-MS-Exchange-AntiSpam-Relay: 0
X-Microsoft-Antispam:
	BCL:0;ARA:13230040|376014|366016|1800799024|22082099003|18002099003|56012099003;
X-Microsoft-Antispam-Message-Info:
	OYH1Hm7L98m7jhM1SqtbOpJYjoMP8rc/VmBHbymRYc/aEeOO+X1bCGkkLExH25kBk8gzYvmwq18YoupCrSoPAh5s++4wWT2V917JVSMeTIE95wHuuH5OZ8oLoWqRlvMCxgqgyFGjVVqFCeyN4JhAxo17YzX8vHfbnjzFuSfDYu628Swz3IY7svOd7ZFZ1wjXDkg4/0jnYCgSNMBLviZN4KzHTjLsYdf+2Q9u8nsNtkt3evQygWugNRhCdc9USSrHyL86KX5Mz3cM6Kbw4OfVe3F6xpTqymjs236WJtoMxmrkhr10LYw3+sWtX3u7VfQPmNtHV68ayuJtbmQqLtz6mnpSCBbY237yifCV2pTmf2yMYuFaPLhhP0dk/7vrE2dI9JoPNP/n2jJ0G3q+4jiIgNbBxI4wOtrNbmxnpZbXFaN/zAJ28uXGIRczE7YHwoyLhT1zNhH/sc8ImAgDDeUUddUmX3N4VGYQIHDxJ293kXwx6GnoT7+IDD3ML4F4XeM3IJgknPwv4JnG6eN1nCAclNRcJ3ryEXPbdEx9G7U3hvvYhqrLOL9QwJWgpZZOTx573toBduiymVC4BeyINOmG8ppZ9xN6DFjfYYk0UKch1x2/y+I+RAbLjF6/0+8mefVqnvCNrKFv4zXfr0MjlB7QgoUQwEuNWCsRfhzeb1leU6ZJQ5eRbpKu3QgowfU8rMrDRFn9KKWVMRxOiXs2uc0AzJckWx1HGrNF8fCJhQiySW8=
X-Forefront-Antispam-Report:
	CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:CH7PR03MB7860.namprd03.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(376014)(366016)(1800799024)(22082099003)(18002099003)(56012099003);DIR:OUT;SFP:1101;
X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1
X-MS-Exchange-AntiSpam-MessageData-0:
	=?utf-8?B?MzhkbkxseW8xaDZSRlloRytnUkpmeHVvV1pQeWpJVk1vSmpYak52OGw1eFkx?=
 =?utf-8?B?ZFBNNmdQekpWYVhlenBSM215L1BXZ0VNUFI2cXV4aHZ5ZHZjNVJqS2dVcWVo?=
 =?utf-8?B?dkNGRzlZb1cva1l1c1hJbXlqOEQ1czc2eXBleEw3MWl4c09mcm9RcytxSEZh?=
 =?utf-8?B?R2NTQmw3Wlhvc04zL1RSVjZWWUFpVFdsYkt1SlBydTY4U1Z6NXZZU25Lb25u?=
 =?utf-8?B?UUlBMkgxTFFHWFkrN3pjK3Y5ODc2T2ExMHMydW1GU3NaSlZFZS9WZmJjQ1Bv?=
 =?utf-8?B?WGw2aDg2ckFteDlCZEVzUGM3VVdJaVpMd2hadlZsV01LTzY0UkMzdTMvZkdG?=
 =?utf-8?B?aGNKZDUrQlVycVBBV0JrV2pDUWhYVGlEREtiZ3NDYXRsekFuN09OeFpoVUwz?=
 =?utf-8?B?ejVKT3dmZCtITktxYWs5ckZneUdOYldnNzR0aUVaUnQ3cEV4MTl0NERseUVE?=
 =?utf-8?B?UVVqWE5keEtkYXByQXJvenN2NGcrUm9sS2R0dldkVG50M2pBdDBBU2E3N1hv?=
 =?utf-8?B?MDFjNkVpZ2tDT0dWVUNMa2FBdjhxYnlHZmZjRDNMZVlkdElPWEc4WmhCSEsy?=
 =?utf-8?B?NkpRYU03ZUhxZDBrNFk3MTZnQm5jbEwvTVZLS2NtQ3piaFF2bDNvVmN4NUpv?=
 =?utf-8?B?cVloekF0Q21DOGZ4UVY4RVB5U0g2K3dlam05Wm55VGs0bjNKSFFPWDEwdUx3?=
 =?utf-8?B?TkVmZ2swRTl2WjJ0aGY5MXN4UENpdXlNckNZakFmd21seUJlbmVUKzJwOGJE?=
 =?utf-8?B?ZUw1RGkrY1Z6bkpZRkJNZlRmYlBEQ1A5ck14T3Y2b3g3b3V1cnRzREczNWx0?=
 =?utf-8?B?RmJxZCtRUXpEeHVzNHJ6d2pKY1hUYzkvTUtOZFJOVXc0WGx3VkFMU2o5QVpF?=
 =?utf-8?B?eW5wUktXRXQwUkRXdThSZHdSMThWZjFWek4yUlJOQ2R6ZTJyZ1ZmU2wvUU81?=
 =?utf-8?B?L2RnellRN1p6NXNWc29MQnFJS05POUdZOWU3OEVOWTNZdVBoVTBZUy9wT05O?=
 =?utf-8?B?akpYa21HeThnbGEwbk1oc3REWlFmcUw1SG54M3Yyb1R2UUdNdDdyY0FESVNB?=
 =?utf-8?B?ZkFuOWY5Y3RVS0hkQXRUd0NWOWpmM2ZGUkw5Z0w0UTF3Z0RlRzhkQjZ2clVM?=
 =?utf-8?B?TlN6MlZtVjNTekhCTWNIS0lnZlNqeXZtV1lLU0ZIWGlaZUprSERDL0xKdmJo?=
 =?utf-8?B?SCtXM0h2Nlh2MXhrWHZQSE94cHc1bFpJVmpreW9JRlhYNElHSlJzMmdhWEJX?=
 =?utf-8?B?UksyeEdCVnpnT21TTUNqU0JYM3NaTE82R1B5SmhjbTFCeDM2MHJLTTRGWHZF?=
 =?utf-8?B?M3c2TlBXRG90TytKWUloRy9pMkFxZ0U0Q3ErV2VFaE5oZDU0VW8waCtyNi9u?=
 =?utf-8?B?bkV2QlRhcEFaTHZWV3B3T3VnSW5tbWp1WGhHVGhPQ1lDK25pUFBDaFM0N2lh?=
 =?utf-8?B?a3dUcUk2Ly9sM2NkelA3STg1NmYvM29IcDBtREhBNk1oemYwb01CQk1sRVpR?=
 =?utf-8?B?SFlycklyTm9DVnhzNjJzcjY1d2U2UmtmRGZva29BVGRzRXdvWitsMGtwZ3hY?=
 =?utf-8?B?TUVHbmpKM3F4ZURpRE5Dc0VKZzJZZ0JETWN6d2xTLzhKNmEzU25hK2FtZkxy?=
 =?utf-8?B?ZjQ2b0tHWWVCTm5aanJjeW1UOE10NzUwZWt5SGpVSnA3bVFDS29DTVpxRzIr?=
 =?utf-8?B?VmdIZExxRmc5aGNWS2s2MXZETHNQSitSeTN6RkIrU0ljVi9VQnJuVjRXR2dx?=
 =?utf-8?B?NE1pb2hYM0NHS3JPb3lTT09zL0FvbFZiTjUrdk9oaXpHZ3JGREpqWVRzRlY2?=
 =?utf-8?B?NTduR3kvUzlCVTNMNnR1Zkd6ZWsvdDlQV2pUZVh1VFVJc1hoL2luZFRsNUV5?=
 =?utf-8?B?SmZaYlBzYVUxNzJPWVZpY3VBa0NZY2FSd3hGZFEzbm5veldvRkVDZC9GQlNj?=
 =?utf-8?B?NUp1TW9pOFl4c3ZuTUtaZE5mUE5GRG9mWGRNNDg5M1ROekZaTCtmZEx5YmZG?=
 =?utf-8?B?YUFycGdQOTRmSjl2dlIwTW1QZXBwSytrWS9Bd0ZRb0JRdTJyQ2lQU1d6YjUv?=
 =?utf-8?B?d0FtTkNuNDIwWWhCMm00aTIxdzQ1SEIrNXQzd0t5bVpsVDIrRnpKdDlwR2hx?=
 =?utf-8?B?Qkk5WmxMYk1YSXBpYkRrRXdkb3BZUnYxTGlqQU5lK1BFZVFSZjBCOXN5bnBj?=
 =?utf-8?B?RUs4K0lTbG94UHFoQjZRQWM0SndiVnBULzltV3lzblNYdnNOZkEraXBhRzFw?=
 =?utf-8?B?MnpBZldnWFczeE85VG9xZjRJb2VZb2xyUG9hZHFuTDhmOWNiSW1DUVlDYjBX?=
 =?utf-8?B?cWZ3QjVUNVM2SkYrS2pvSU0xWHZhYkhrTW5xcTBOcjZXMzVkY0lWZz09?=
X-OriginatorOrg: citrix.com
X-MS-Exchange-CrossTenant-Network-Message-Id: 9fddcc85-336b-4d34-8df2-08dea5283e18
X-MS-Exchange-CrossTenant-AuthSource: CH7PR03MB7860.namprd03.prod.outlook.com
X-MS-Exchange-CrossTenant-AuthAs: Internal
X-MS-Exchange-CrossTenant-OriginalArrivalTime: 28 Apr 2026 13:15:39.4575
 (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: gQyLcJett4mRrfdCNKNyEDIRB3rYVpL5sxWy1pM/rzpVEIbvrnbcVdt4rT/nC2StGsUqxEfmAGFIoP9MU7Rc6A==
X-MS-Exchange-Transport-CrossTenantHeadersStamped: BL4PR03MB8039
X-purgate-ID: tlsNG-ef75cf/1777382143-15C5CC48-66971B5A/0/0
X-purgate-type: clean
X-purgate-size: 4190

On Fri, Mar 13, 2026 at 04:35:02PM +0000, Thierry Escande wrote:
> The current hvmloader implementation assumes a fixed PCI-to-ISA bridge
> at 00:01.0 (PIIX3). This patch introduces support for the ICH9 LPC
> bridge used in Q35 machine types, which resides at 00:1f.0.
> 
> It also initializes PIRQA...{PIRQD, PIRQH} routing accordingly to the
> emulated south bridge (either located on PCI_ISA_DEVFN or
> PCI_ICH9_LPC_DEVFN).
> 
> Signed-off-by: Alexey Gerasimenko <x1917x@gmail.com>
> Signed-off-by: Thierry Escande <thierry.escande@vates.tech>
> ---
>  tools/firmware/hvmloader/config.h   |  1 +
>  tools/firmware/hvmloader/pci.c      | 34 ++++++++++++++++++++++++-----
>  tools/firmware/hvmloader/pci_regs.h |  1 +
>  3 files changed, 31 insertions(+), 5 deletions(-)
> 
> diff --git a/tools/firmware/hvmloader/config.h b/tools/firmware/hvmloader/config.h
> index c159db30ee..baaed91c7f 100644
> --- a/tools/firmware/hvmloader/config.h
> +++ b/tools/firmware/hvmloader/config.h
> @@ -54,6 +54,7 @@ extern uint32_t *cpu_to_apicid;
>  
>  #define PCI_ISA_DEVFN       0x08    /* dev 1, fn 0 */
>  #define PCI_ISA_IRQ_MASK    0x0c20U /* ISA IRQs 5,10,11 are PCI connected */
> +#define PCI_ICH9_LPC_DEVFN  0xf8    /* dev 31, fn 0 */

We should introduce a macro to generate BDFs more easily in the
hvmloader context.  Having them as plain numbers is not very friendly.

>  
>  #define ACPI_TIS_HDR_ADDRESS 0xFED40F00UL
>  
> diff --git a/tools/firmware/hvmloader/pci.c b/tools/firmware/hvmloader/pci.c
> index a76d051bdf..91c7fd2171 100644
> --- a/tools/firmware/hvmloader/pci.c
> +++ b/tools/firmware/hvmloader/pci.c
> @@ -84,6 +84,10 @@ static int find_next_rmrr(uint32_t base)
>      return next_rmrr;
>  }
>  
> +#define SCI_EN_IOPORT  (ACPI_PM1A_EVT_BLK_ADDRESS_V1 + 0x30)
> +#define GBL_SMI_EN     (1 << 0)
> +#define APMC_EN        (1 << 5)
> +
>  static void class_specific_pci_device_setup(uint16_t vendor_id,
>                                              uint16_t device_id,
>                                              uint16_t class,
> @@ -140,6 +144,17 @@ static void class_specific_pci_device_setup(uint16_t vendor_id,
>              pci_writew(devfn, 0x42, 0x8000); /* enable IDE1 */
>          }
>          break;
> +    case PCI_CLASS_BRIDGE_ISA:
> +        /* LPC bridge */
> +        if ( vendor_id == 0x8086 && device_id == 0x2918 )

If you don't add parentheses around the equal comparisons please also
removing the existing ones when moving the code.  Also device ID would
batter be a constant with a proper name.

> +        {
> +            pci_writeb(devfn, 0x3c, 0x09); /* Hardcoded IRQ9 */
> +            pci_writeb(devfn, 0x3d, 0x01);

0x3c and 0x3d are PCI_INTERRUPT_LINE and PCI_INTERRUPT_PIN
respectively, let's please try to use the named constants when
available (or when they can be introduced).

> +            pci_writel(devfn, 0x40, ACPI_PM1A_EVT_BLK_ADDRESS_V1 | 1);
> +            pci_writeb(devfn, 0x44, 0x80); /* enable PM io space */
> +            outl(SCI_EN_IOPORT, inl(SCI_EN_IOPORT) | GBL_SMI_EN | APMC_EN);

Most of the above looks like black magic.  It's not like the context
of this function is great, most of the existing stuff is poorly
documented.  Can we get a bit more comments about what's this supposed
to do, and maybe a reference to the Intel specification that lists
where those PCI config space registers are coming from?

> +        }
> +        break;
>      }
>  }
>  
> @@ -152,6 +167,7 @@ void pci_setup(void)
>      uint16_t class, vendor_id, device_id;
>      unsigned int bar, pin, link, isa_irq;
>      uint8_t pci_devfn_decode_type[256] = {};
> +    int is_running_on_q35 = (machine_type == MACHINE_TYPE_Q35);

Maybe you can avoid that and instead simply store the BDF of the ISA
device?

unsigned int isa_bdf = (machine_type == MACHINE_TYPE_Q35) ? PCI_ICH9_LPC_DEVFN
                                                          : PCI_ISA_DEVFN;

Or if you really need it to be a boolean, let's make it:

bool is_q35 = ...

It makes no sense for it to be an int, and the naming could be shorter
IMO.

Thanks, Roger.


From xen-devel-bounces@lists.xenproject.org Tue Apr 28 13:21:59 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 28 Apr 2026 13:21:59 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1296200.1572619 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wHiNu-0005T0-J2; Tue, 28 Apr 2026 13:21:54 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1296200.1572619; Tue, 28 Apr 2026 13:21: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 1wHiNu-0005St-GV; Tue, 28 Apr 2026 13:21:54 +0000
Received: by outflank-mailman (input) for mailman id 1296200;
 Tue, 28 Apr 2026 13:21:52 +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 1wHiNs-0005Sn-FY
 for xen-devel@lists.xenproject.org; Tue, 28 Apr 2026 13:21:52 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wHiNr-001pIg-Rg
 for xen-devel@lists.xenproject.org; Tue, 28 Apr 2026 15:21:51 +0200
Received: from [10.42.69.4] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <dmytro_prokopchuk1@epam.com>)
 id 69f0b46e-2eae-0a2a0a5409dd-0a2a4504e1fc-8
 for <xen-devel@lists.xenproject.org>; Tue, 28 Apr 2026 15:21:51 +0200
Received: from [52.101.69.120]
 (helo=AM0PR83CU005.outbound.protection.outlook.com)
 by tlsNG-ebf023.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.1)
 (envelope-from <dmytro_prokopchuk1@epam.com>)
 id 69f0b46f-1dec-0a2a45040019-346545783204-3
 for <xen-devel@lists.xenproject.org>; Tue, 28 Apr 2026 15:21:51 +0200
Received: from AM9PR03MB7526.eurprd03.prod.outlook.com (2603:10a6:20b:3de::17)
 by DB5PR03MB11368.eurprd03.prod.outlook.com (2603:10a6:10:656::18)
 with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9846.26; Tue, 28 Apr
 2026 13:21: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.20.9846.025; Tue, 28 Apr 2026
 13:21: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=FF7tagXKDG4WYWXZErORG29LrusMfiGqhca8h7ev0L8sMyCJy0cg1JzbVr5OeAQQPNCKaz6qRGiWzHzHyeIWaEj5i6xTxCq69nNHMUJMDI3bEH5sYqY2LU+mjh0msGv10dX14gUS5hSV6nAoFKwzsXXeQqT/J8+yIwzMegz3qga7evKrSY2/PHBdtJRMR/RGzpash+NPLWd/Gv6NPVr/BuQPNRdJ/SB63P6o7V32fqaTiyDhe6/k7we1f6Y+y3xRYgpE245vLmzR99YHqaggoJ347IXMy53M/8JBwh2X/4xhMxADKU3Wh5ev60lhBSE9WT3FqbCVSBnunzCTVTp+9g==
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com;
 s=arcselector10001;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1;
 bh=HvU6MtZJZYtq11B+jLckyBEof32K8q1k6vrQLP49FB8=;
 b=xMGPvoxRfIcleR+q6hgPwUKIHb0BNN0jpHx4J4CmAzPd6hjynGvMLKRxrDO0RHDchHkWi7Hl4M2kb8+CHSJu0/3TkOFroVJSvre8PByYAR9UvQ3zRE6g5glCh0SIQL8FOKH9StovrHiXcZR54jOTTUYVwNmPPibIP0cxWP8Nid1n4cRrY3SP/LFPzNLJFSWctpAS3/lHMoC74JiNLhgV22RxkrZp4s0+pF2/2Kx0xFxhQaxIrGynrW7ukk9Hyj4bDjFatwDZ3Aplhs0ALjf/3dUzdr4ZE3NCrFCly6bBACeqdZ007t50nP32gQL9oJKB3w5AaUdWfFa/RM9PAAy1dQ==
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=HvU6MtZJZYtq11B+jLckyBEof32K8q1k6vrQLP49FB8=;
 b=dVyNvdEXQ+bEfvDh51P7ryZMZl6TYDW0P5U7Jiuy4N/6/0ZwuOTwBZjA9xY7rnnY+GSrFcmoIL74hrON0jfdhR/zdgmBAq9g42XuW8XoAO40WRw6u1cMd0yTcGTHhoKlb4fzEvWSp8smqdX+MRcuccjeZRhozLDfcJMaCHeuf2eIhohepxMXM7V4TCVMddKOE9h1X6cxQBVTKPpj/c4AHHzB/BPI8J9XuNxuq+Mk3LrKz7Pshu10iECOCOz4mCD2OgbXc7/CCcRXvuOZVx8yPObVrrUxi5EU2rTEBcmbP+/kmDdNbp/2S5no0tkniJ1D6whFfat3GMY6YuX+4fszCA==
From: Dmytro Prokopchuk1 <dmytro_prokopchuk1@epam.com>
To: Jan Beulich <jbeulich@suse.com>, Juergen Gross <jgross@suse.com>
CC: "xen-devel@lists.xenproject.org" <xen-devel@lists.xenproject.org>
Subject: Re: [PATCH] hypfs: remove unreachable statement in the
 'hypfs_get_entry_rel()'
Thread-Topic: [PATCH] hypfs: remove unreachable statement in the
 'hypfs_get_entry_rel()'
Thread-Index: AQHcyDlVyOevPxMGvE2K9zY95LxHD7XhYbqAgBMxwgA=
Date: Tue, 28 Apr 2026 13:21:49 +0000
Message-ID: <e413691c-d124-4eb2-9155-2c30d553edc1@epam.com>
References:
 <341811ced2943fb79d0235c27781c564c7bdaf02.1775749146.git.dmytro_prokopchuk1@epam.com>
 <3f832c12-5a02-418d-b420-23ed3cf798db@suse.com>
In-Reply-To: <3f832c12-5a02-418d-b420-23ed3cf798db@suse.com>
Accept-Language: en-US, uk-UA, ru-RU
Content-Language: en-US
X-MS-Has-Attach:
X-MS-TNEF-Correlator:
authentication-results: 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_|DB5PR03MB11368:EE_
x-ms-office365-filtering-correlation-id: 841f8b26-fa38-420c-674a-08dea5291aad
x-ms-exchange-senderadcheck: 1
x-ms-exchange-antispam-relay: 0
x-microsoft-antispam:
 BCL:0;ARA:13230040|1800799024|366016|42112799006|376014|22082099003|56012099003|18002099003|38070700021;
x-microsoft-antispam-message-info:
 UU6ybRYRq4Mn7AvLpQXBlmeWz0z7BkQymMn7hQHhINZ3kO1oFoaAXsEXxipJUvrvR2XrJVc72aMGWAFIABIW50CQcVKgo7ztU4SyWHxw4VdI5QikNronxsOhTn8bpbWfaUkZlFJWJGEzCDrfe8LDvH8DCYENo94PXNA7rqNJkv1hTKmzd2jkEh1mvNxPAsmW3u3PG4dY+017X+KxZHhBy/bngJmIi5bgXniFG3tkd2VTMrCU8qSqW7NCwZm9+TAiAEcnHuRRj3Q/nA1mnhusgIoqyFsBTAERB1Tfw+P4o1/EpQ+ZVma5OU4O5Fo/nd7oDXSifMDzzzXCAE0w8fbu3hTX0kHYprAoR6oxsyoacTY4kBT8ZXOfTLbcbb04XUtY5bF97MGdvUk1zNclKmqyMzeq8/iYRCETEzWRUpWnbt3CUQ5h/1X8IDqfFm4CqgVMkTbeKTjNTnnBhbDs1l6DDDir/Hz/N2M/wCuYvb5Yg1m83XgvKM93hp/jquQX1YJ1saVms2/fo68d3ucNbPLlN5ljAnYNLqiKVSozNtRVHXl/MEeesxmduleYSrVYns7wKZdwpWXambHQ//EPbSJ7oTMA/3YIzd3EoQ7m4PkJ1veDi9VlWjx9QwGIsVzZXHfueGqMtyr7EmAYaJlonoWOlY4lItIkO5cd7o6pMKrabn0j4x4Dqu1foE+8njmZs75mxaQCGY62EF02EB0q8+3no2J2J8HMXNvQIhnFgvw1G0AIAr7gJ/wotE3pChm0KA1B5eQhcw2rOjutTVDJTIUDHg3jQH5t9NBYoutN/75gV8g=
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)(42112799006)(376014)(22082099003)(56012099003)(18002099003)(38070700021);DIR:OUT;SFP:1102;
x-ms-exchange-antispam-messagedata-chunkcount: 1
x-ms-exchange-antispam-messagedata-0:
 =?utf-8?B?cWZPWjFRaU0rNTE0ZUQ2MWRHbFdjbnRoMDRzazdOQitGMXB2Vy9RbjNwTWZ6?=
 =?utf-8?B?NzRMa1RES2w5VGo5Ni9KdEwzYm9ieTB4YitydmJDYmsvdXViRVBGay9PTGhr?=
 =?utf-8?B?K01OOS9vb1ZkZ3QrMlZkd2djR1lJd2tiRFBjNVlDSmV4RXo4cTVZMlA1Yk9t?=
 =?utf-8?B?R2Jtc2FoRmNhTnh4ZUVYNUlhMWcrUGM5NW9YTE4wOHU0NVFrWDFTUEZjcTdx?=
 =?utf-8?B?ZXdDSlNVOVVFQ1pRTjBzN2QwdU82bWR5eElHSG9jT216TkMrazB5QzBrM0th?=
 =?utf-8?B?WEhLVmd0N2h3VCt0dXBsY1ZScFdTTjVCMHN0U2FtaTI5dXkyL3dWVkNjS3Qr?=
 =?utf-8?B?NmIxSzFGS3g3MllHWTA0Q1NUT3VuN1ZSSFZpeURaMk9ISG1rQ09wRWdkNVVV?=
 =?utf-8?B?OVgwcTVXS1paRVBVRnRxc2txdzBHOUpLNitQN1lCSGJpeVluOGNrVDRjRjk2?=
 =?utf-8?B?Y1g1WnZLb3RNaCtUcVVoYXRpZ3djT2ZlN05VVmtaT2FVTmU4UlBpZGM4K1pB?=
 =?utf-8?B?ZXhGYlVwbTI4MVB2T2pscnhrV2VoQmJ5bmdBcUZ0ZHNKeDhlWEQwMWU5b05D?=
 =?utf-8?B?enJJUVhZZFdEMXZwZzRNSm1sRmg0ZVRCT3NkMTdMYS9wR25BR2F2RHlZdTdS?=
 =?utf-8?B?UiszcVZxMWk3VXE1bjgzOUltdHFrdkxRVkpCOG41Q1VBRUJhVk8xWU1aSkg0?=
 =?utf-8?B?cVJTWlpGU3NHeFVvSXV2UTJvQ0I2ZTZzaW5uWW5ZYTZNb1ZxYlZRVUIxVjBR?=
 =?utf-8?B?NURnUVBpV1JsZG5DTmlucU5ERnJxUWNkUzZTWHZzeEkxNUVyUkdab2Z0bU1l?=
 =?utf-8?B?bjZKUjJoVkRjNDFLaHBBeWNKL3JiR3h5cndSbjdYRFZMbmpQRExobERCRHVF?=
 =?utf-8?B?UzFqeU5pc3Nnc3FhUHpSSGl1ZVBFd29ucVdiWnM2c1hRb3B6L0V6YUVMSUFo?=
 =?utf-8?B?YWx0dS9XWmhRNzZ4UEFlUnIxZnpOcXpiVy9CRW02MDM5SzluWnpQdHUxbUFF?=
 =?utf-8?B?ait1U08wZ1haWVdHYzZ0bjR3c2ozNys0MldodnJTbVVvRktybUUxMUcrZnpv?=
 =?utf-8?B?OTVjMFM3ZldHUThVTTNnaVd2Zm1BbitpMkk1VG5SS2ZlMG9ZUXNkMkMwYVgr?=
 =?utf-8?B?emdvU1o1ekw2OUZoalk4UG5WSC9sV1IvcmhtU1NjMVAxTysrT2ppeEtJL2JL?=
 =?utf-8?B?U2xGdHAvZURRRzliOEpwcXoxKzlnQUF2TUp4V3haQzlJN2FMZ29WZDJ6NmFG?=
 =?utf-8?B?c3kwN0hxVm1IREtvLzZmQWNadUEvNmcybi9NM2xwS21Jangyd1ZhMkhiVm9y?=
 =?utf-8?B?U0wzVGpyTC9QbWNJNWZJbUhRaUdxQkRsMTlBT2tTbHBTd1Z3MHhhcExDaDJW?=
 =?utf-8?B?dHhIZUtma1ZRdlJIdm55ZjhFSWY2UGltN20zRVA0ZWFsUklnc090a2pSaFlp?=
 =?utf-8?B?U2VtbmZoM3FiNDBpUG1YM3doRkRlMEdSQlRNb1RkTGkyM0dBN1BtZXZoR0N0?=
 =?utf-8?B?eUpWSHNPSUR1UFlwRmFUWjNZSjZXYVppN29hTis0WFB2RU55ZHhMaVNhU0lh?=
 =?utf-8?B?eFhEQzFNUExESENlU0FTeVpnUERWcXdpTkl0M2pFUXg5dTFKWG1NNVlIbFBQ?=
 =?utf-8?B?Tml0WlpkTWIycVF5RnBsNmVna2REelhuV2FkeXptUUU2YllieFk5K1dpVHBW?=
 =?utf-8?B?WmUwTWJ5dnE4U2R1TmpjK2NxMkM0RjhXUktYV1VjelFiMXRSbHZtNmxYbXp0?=
 =?utf-8?B?a1Vzd3FhSHdhcWZIZEpZa1JGbTBrREszTXNmS092RklwaTNqRjZsUWc5aXlH?=
 =?utf-8?B?V1d3WUFSZzQxR3JyK3ZtbUlMU3RTeldRdGdMaGpkNk9XNDgvSkg2MXdIMW1y?=
 =?utf-8?B?c1ptcDhFUzZJSHRjTnN3Ky9aTjV2dTJoNnFyRDNuL05Vckp0MmxRN282Mmsv?=
 =?utf-8?B?MTNidTIrcW9wMUMzeEhkWEFJdHZRWkRPUXVEai9WWDczN3IxYnpuY0tHbUQ3?=
 =?utf-8?B?cXVKTHorS012R3dZdjlVekEzMnlIRUovbHhSS0hOL0NFVi9tOWhDaVBrYjVk?=
 =?utf-8?B?RDQ3ZDkxWXBrbzhsejZMUEg3NkVVNTlSKzJoUWt6a0IvVnhxcjZSRzduNkZG?=
 =?utf-8?B?cnh3YXliUmdpd1JPQkpzNWpGeEdOQWlkRzFpdUJIaGVJZGowNzA0L0poNUtG?=
 =?utf-8?B?dlkrRThxVWxGTENCV0xOUVM0U0xXczlwVlViVkU4dGVPd2w1QXd4eGRNYVVV?=
 =?utf-8?B?cFNtejkxLzFVV2dtN2d2UFZWaDliaTM0ay9tTGRSUnpPbXRhMzhSZEt3eThJ?=
 =?utf-8?B?ODE0U3hzdFNialVYTFUzMTdieWxrSFQxSnZxM2tEMTJSeHJnWjBPRWZvTG4r?=
 =?utf-8?Q?N9MS4cPj3m8AQVUE=3D?=
Content-Type: text/plain; charset="utf-8"
Content-ID: <3C012A5D82B6BF42B2D569AFDF9DFA63@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: AM9PR03MB7526.eurprd03.prod.outlook.com
X-MS-Exchange-CrossTenant-Network-Message-Id: 841f8b26-fa38-420c-674a-08dea5291aad
X-MS-Exchange-CrossTenant-originalarrivaltime: 28 Apr 2026 13:21:49.2558
 (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: qnBkad2DkUmpUMsGcN+V5DYlSkG/xvh/3HytMXYCAY5yU2eClv3sxfEmtHdOBzkpUVyJeGmDSJgXH4K45DN/9anCEDKi3wreTL9q9GA3gSo=
X-MS-Exchange-Transport-CrossTenantHeadersStamped: DB5PR03MB11368
X-purgate-ID: tlsNG-ebf023/1777382511-289723FF-F3F5B634/0/0
X-purgate-type: clean
X-purgate-size: 1286

DQoNCk9uIDQvMTYvMjYgMTE6MTQsIEphbiBCZXVsaWNoIHdyb3RlOg0KPiBPbiAwOS4wNC4yMDI2
IDE3OjU1LCBEbXl0cm8gUHJva29wY2h1azEgd3JvdGU6DQo+PiAtLS0gYS94ZW4vY29tbW9uL2h5
cGZzLmMNCj4+ICsrKyBiL3hlbi9jb21tb24vaHlwZnMuYw0KPj4gQEAgLTM0Nyw4ICszNDcsNiBA
QCBzdGF0aWMgc3RydWN0IGh5cGZzX2VudHJ5ICpoeXBmc19nZXRfZW50cnlfcmVsKHN0cnVjdCBo
eXBmc19lbnRyeV9kaXIgKmRpciwNCj4+ICAgICAgICAgICBwYXRoID0gZW5kICsgMTsNCj4+ICAg
ICAgICAgICBkaXIgPSBjb250YWluZXJfb2YoZW50cnksIHN0cnVjdCBoeXBmc19lbnRyeV9kaXIs
IGUpOw0KPj4gICAgICAgfQ0KPj4gLQ0KPj4gLSAgICByZXR1cm4gRVJSX1BUUigtRU5PRU5UKTsN
Cj4+ICAgfQ0KPiANCj4gSG93IGNlcnRhaW4gYXJlIHdlIHRoYXQgbm8gc3VwcG9ydGVkIGNvbXBp
bGVyIGluIGFueSBtb2RlIG9mIGNvbXBpbGF0aW9uIG1pZ2h0DQo+IGlzc3VlIGEgZGlhZ25vc3Rp
YyBmb3IgdGhlIHRoZW4gbWlzc2luZyAicmV0dXJuIiBhdCB0aGUgZW5kIG9mIGEgZnVuY3Rpb24N
Cj4gcmV0dXJuaW5nIG5vbi12b2lkPyBJbW8gd2UgbWlnaHQgYmUgYmV0dGVyIG9mZiBhZGRpbmcg
QVNTRVJUX1VOUkVBQ0hBQkxFKCkgYW5kDQo+IGtlZXBpbmcgdGhlICJyZXR1cm4iIHRoYXQncyB0
aGVyZS4NCg0KWW91IGhhdmUgYSBnb29kIHBvaW50LiBXaGlsZSBJIGRvbid0IHRoaW5rIG1vZGVy
biBjb21waWxlcnMgYXJlIG5haXZlIA0KZW5vdWdoIHRvIG1pc3MgdGhpcywgYnV0IEkgY29tcGxl
dGVseSBhZ3JlZSB3aXRoIHlvdSB0aGF0IGJlaW5nIGV4cGxpY2l0IA0Kd2l0aCBBU1NFUlRfVU5S
RUFDSEFCTEUoKSBpcyBiZXR0ZXIgYXBwcm9hY2guIEknbGwgdXBkYXRlIHRoZSBwYXRjaC4NCg0K
QlIsIERteXRyby4NCg0KPiANCj4gSmFuDQo=


From xen-devel-bounces@lists.xenproject.org Tue Apr 28 13:32:09 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 28 Apr 2026 13:32:09 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1296210.1572629 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wHiXR-0007XQ-Gd; Tue, 28 Apr 2026 13:31:45 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1296210.1572629; Tue, 28 Apr 2026 13:31: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 1wHiXR-0007XJ-C4; Tue, 28 Apr 2026 13:31:45 +0000
Received: by outflank-mailman (input) for mailman id 1296210;
 Tue, 28 Apr 2026 13:31:44 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <roger.pau@citrix.com>) id 1wHiXP-0007XD-To
 for xen-devel@lists.xenproject.org; Tue, 28 Apr 2026 13:31:44 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wHiXN-00Gr2C-O3
 for xen-devel@lists.xenproject.org; Tue, 28 Apr 2026 15:31:43 +0200
Received: from [10.42.69.6] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <roger.pau@citrix.com>)
 id 69f0b6b8-bab6-0a2a0a5309dd-0a2a4506d85c-32
 for <xen-devel@lists.xenproject.org>; Tue, 28 Apr 2026 15:31:43 +0200
Received: from [52.101.62.13]
 (helo=DM5PR21CU001.outbound.protection.outlook.com)
 by tlsNG-16d1c6.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.1)
 (envelope-from <roger.pau@citrix.com>)
 id 69f0b6bd-7371-0a2a45060019-34653e0d2b89-3
 for <xen-devel@lists.xenproject.org>; Tue, 28 Apr 2026 15:31:43 +0200
Received: from CH7PR03MB7860.namprd03.prod.outlook.com (2603:10b6:610:24e::14)
 by BN9PR03MB6026.namprd03.prod.outlook.com (2603:10b6:408:137::6)
 with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9846.26; Tue, 28 Apr
 2026 13:31:39 +0000
Received: from CH7PR03MB7860.namprd03.prod.outlook.com
 ([fe80::f5ba:35df:1c9f:b343]) by CH7PR03MB7860.namprd03.prod.outlook.com
 ([fe80::f5ba:35df:1c9f:b343%4]) with mapi id 15.20.9846.025; Tue, 28 Apr 2026
 13:31: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=ezPRx3UZpTagyyGin1n98Cmlq07ipkJi9/p5pfWMNFD33Ic6mfIOa06MFRm8j01aECfdWBF+m6oBNz732UdqWV4GoLVVTr77jOMCIAFPdk01/BxfjV9YoO7/4K/AW6L1pOYGK17CkBzJWQd3LosBR9PbWBAAy0jZg2w4jlMYaXIBya8/CqsT8a/swbUzZ5FCUIFZR/KHrizz3C780L0C54HIE8K37NyTFso44Q1ZxkFtn4TCNKQxdQzF1eGfb7kqWdtjiQWSva1G0S+qvtNAaoS+S6sTBvZOHmn5QSbwMcb4jw3RIqGUOUkhROyOHC8vQnOcs+Pt37F0BCIJyw+vug==
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com;
 s=arcselector10001;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1;
 bh=31I9KliPwarqsMtduuJqI6avfy5jhWWz7P21c+ayWnA=;
 b=YOjjGOrTR0GdntShpi6s6hOQy3xnHL7nIErbzbrqsG+h9NlIu7Dn9IpQi8z9BPfEGXIPnHo/KTO1UjDA5ZRJyPNJrVsb8LpIk8jteoF9JlDx/8Voh754ZWcwxkfGIJaJxW12UAuNQRmr7RjuhPNSyHoAD/QADwrcwRR9BZpZGDMAog025mo6J/c5MbTEPUZmEA3XfxSvOQ/sQ0kzLBn8UC88npyLrx727pHVPFUHrko65xo8lkE5b/8hhIXZA9Zcab7kMRgZIOWN9SXrm11FtoeaqeXXoivDTesFd1JLeVPdUJ5xWlDqn+62PsxJJ80HL2hisohghpy/bqD6HaDo6g==
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=31I9KliPwarqsMtduuJqI6avfy5jhWWz7P21c+ayWnA=;
 b=mx3TeLGZpd0VpDYE8DzITR9W2jd82yZLV/SzA1Gfs3zADN1MMeJL2+OYolIrKz6KxdsGRx3zVHgeOfNd59C6Ucb7TT/5Or6I7TwnO9/Z4fZ1L/gMOev3NDRt3XB6E/g856nQE+V8uxNsSg3/yOsJJusYO1Zyxby55K5l75n5ZF0=
Authentication-Results: dkim=none (message not signed)
 header.d=none;dmarc=none action=none header.from=citrix.com;
Date: Tue, 28 Apr 2026 15:31:36 +0200
From: Roger Pau =?utf-8?B?TW9ubsOp?= <roger.pau@citrix.com>
To: Thierry Escande <thierry.escande@vates.tech>
Cc: xen-devel@lists.xenproject.org, Jan Beulich <jbeulich@suse.com>,
	Andrew Cooper <andrew.cooper3@citrix.com>,
	Anthony PERARD <anthony.perard@vates.tech>,
	Alexey Gerasimenko <x1917x@gmail.com>
Subject: Re: [PATCH 08/17] hvmloader: Extend PCI BAR struct
Message-ID: <afC2uLj_fD2qPPsT@macbook.local>
References: <20260313163455.790692-1-thierry.escande@vates.tech>
 <20260313163455.790692-9-thierry.escande@vates.tech>
Content-Type: text/plain; charset=utf-8
Content-Disposition: inline
In-Reply-To: <20260313163455.790692-9-thierry.escande@vates.tech>
X-ClientProxiedBy: MA3P292CA0038.ESPP292.PROD.OUTLOOK.COM
 (2603:10a6:250:46::7) To CH7PR03MB7860.namprd03.prod.outlook.com
 (2603:10b6:610:24e::14)
MIME-Version: 1.0
X-MS-PublicTrafficType: Email
X-MS-TrafficTypeDiagnostic: CH7PR03MB7860:EE_|BN9PR03MB6026:EE_
X-MS-Office365-Filtering-Correlation-Id: dbee1e23-d5ce-417a-c42a-08dea52a7a69
X-MS-Exchange-SenderADCheck: 1
X-MS-Exchange-AntiSpam-Relay: 0
X-Microsoft-Antispam:
	BCL:0;ARA:13230040|366016|1800799024|376014|22082099003|18002099003|56012099003;
X-Microsoft-Antispam-Message-Info:
	aDqEwSBy4yxpvIwxx+QbyDEM4ZJ9nAmI0SuZwccCBwFlow0f5ULvaKkiCUS/3XuLC0oWpdkkNXVzUgrlICrHtXuHgX1K/C+WfG4lsKzoiVkzuuTy19keTWaepSUFJCIPlUfQoPA9j1Dq9t8jdsMf9+cx4WwVmTeRMrzEYtq+PAyKMSpP7OGXmeVwbTdcQZRO1rEhhG/BAByyS5pdlmMEqai0RMi3d61jAkPtl7UF2xJeepk6lZJCtG/Wu/DgXgvHfurhhifQJjehZyyiXQZy+dxOHfymqf56nDMQwqgaY6nDZlRCDTkIYS4lGPKzme6ojpaIZ6h5In8eTWMMzhr6LAleoP5q8L6lB+5jsePeApSx3sIZfLPjrOhvF2h0hQOhH7Fgp0jKldjGVZme0yNaHQyu+nFIioX/UwlnweQ3tgqk0t1fyv39yr2bjgr5SgK6C2+jXRd1SFKBGVlcGTk99eOkQhQVW/9V4DqVNXbjXn0E4r+1uKuUzg0GLDFtieishQk1o/cHbbbtIW0cLZI3bSfJwMOj14boDIPIaTqOLLB7HyVlxHMjZqvoVfL6mF+jMIcJGx0Hr2ZjXmxN4SuoH8dB7QG99vri8qhnQ0jwJ0QTrUpZsikCg7EUaEvpDzD4+fK/+voP2XSnYA0VyVWB4F6XVeKwXSeTHolcxWOIP/JiI0g3hTdvUvqqUcUjjgrogLa72SU35rUu1iSBeMh/noOgv1HK0B9tCQ1ghzv8qHY=
X-Forefront-Antispam-Report:
	CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:CH7PR03MB7860.namprd03.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(366016)(1800799024)(376014)(22082099003)(18002099003)(56012099003);DIR:OUT;SFP:1101;
X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1
X-MS-Exchange-AntiSpam-MessageData-0:
	=?utf-8?B?cVkxczgrRzB6TUNBd3VvWWFFSGY5YytCdmc1d0xkQjhTdnRqMGxQdTVaT3FD?=
 =?utf-8?B?ZjNSb3ovbDVjTmFqbFVmaDZEWkVQMUtsYUZwcVdleFJxR1VxUXdyTEtUVndV?=
 =?utf-8?B?Q1VXMmxXZzJVbkF3Rmwzc0MrZVY5dE1TY0h0UUwwcng3SmpLZkE0cnp5Q2VP?=
 =?utf-8?B?SDVuU29neHkyazBiWlJiUGUzaU10K3d3STZad0t1a28yZjZzVTlkYVRHM2Qx?=
 =?utf-8?B?TEpQZWM3Z3RDdE9MSlNEMDRzVEEwWWpHSUI1LzNxK0ZBbWhrUDZBamNzVzZo?=
 =?utf-8?B?WnB2MVRZOTZxV1hOWGhRSlhEaUJMTEtZWkFlc0VBaythbmY2L1A0QUU2QWM3?=
 =?utf-8?B?QlJMT3U3TjkvSjhVNEdHM3Q1ZVZhNjd6ZDhtNjh6MGo5RVBXWGV0R295ekJS?=
 =?utf-8?B?L0swMUtSV0wxSnQvRkRUNzc1NDVtOEI3WFhHYUVSK0xEZG5kcTJ3STY5aHhD?=
 =?utf-8?B?RlQveEgvT2p2UUZJSlptUGZHUFlqc0UwYjNtR2k4MHhwdGpySDZVTmY1RUJ2?=
 =?utf-8?B?RkhQZWd0L3YrZWU5Y1k1RXMwNzdvY2lXT3F2ZmhkL1hiNUJjUnltMVBiOWdY?=
 =?utf-8?B?dExqOG1zTU5DNTRyc0liN1N1RGpCTmF2Uk80WVFXemc0ZUY3dlM4M1FFcmVL?=
 =?utf-8?B?SVBzV1ZKcXNsNW5BemdXL3RWTWVuVVFKSGFNVDN1N2tCcmpvNjJCTzRqNWJG?=
 =?utf-8?B?R1VXckdKMTBWdlA0VEkzRjB3NzgvdEhZTjdRYTlET2hUS1QxVmsvdGdwMDZz?=
 =?utf-8?B?OHFDV25SZFN1bHhBekorNXQ1LzZWMm1DdUJ2K2FBaTVyMHhWWkV2ZVcySXFj?=
 =?utf-8?B?RG90bmgrTmIyUmtDYWNVcmxsNXRiL1oxU1NIUVpCTkxBaXF3ZmVHTS9TZTBG?=
 =?utf-8?B?S2daRHI0UEpZYTZ3NE1XeURCa0RoSE94NVliZVByRjVBM0tuUzM0MUhhVjRa?=
 =?utf-8?B?QkI4b3JOc2pveUg3OUhEZ0ZwNm9DUXBuU0tnSkcvbmU0SmhqTG5oVDEzSnpn?=
 =?utf-8?B?WWYwZ0pIZGJ3VndmeEFFWHZxY1RwbzduUGhLSytrS0RJNVN0UlRUQ1BoZnBN?=
 =?utf-8?B?VGo2alE3L3FDck0rQ256QzJZZ0ZvRFhUZ01rZVk3MTdreDhXUHlmWFRRYnlm?=
 =?utf-8?B?N2RTZjRMYkRmSXRiZWRmWU1GQllGWHVGRXZNUlREc2t2WDlaeTd0VmJEMnE2?=
 =?utf-8?B?MXA2WEJTcFBtd3FJdkxVWFlQTy8rUVZBRnlndTdpRVZHc1pQaXI4aEFUZHJ1?=
 =?utf-8?B?dGt5aDJGYTFnY0haRU0venIvMERLMjFrZmFVcDZUbXd5R3FtdVprRXNNbEs2?=
 =?utf-8?B?VFNmczRIU0xGbHBxc2dCZEdaQVdCSTZJUFB3L04wczBuY1hUTHVrWmVQNTlS?=
 =?utf-8?B?NStOcUdFU3ZSTUNiWk9GcW9jSTJHdmlkVGlQSjhlUHp1K2lMUmlTQllCRE94?=
 =?utf-8?B?dUwvTTV0TTF4NnF0Tm1MY0VHWkptQ2JhTzY3YTE1UFV4TnYxNjFsVUZTNkxR?=
 =?utf-8?B?bVYvWktrS3ZqK0RIR1ovbkxRVVNBeWhkRk0vbVM0QUZFcHFycXVFT1R3NUpm?=
 =?utf-8?B?UW05dHNDUytGVGRoelYvTHZ0TTE0VFpsekRnZm9meGpYbUVsSEF1cEJVNWNu?=
 =?utf-8?B?S2lscW9yUkI1YXd1anVPOVYrTmR6NjVzUU5kTzR2Y2MwYXB6eVpITFJFSWsz?=
 =?utf-8?B?ZzRYL1lmVDViUjR6Y2FYaXhRK0lwUmxOckRTaG5udDNlcHFyZUkxb1pnTWpn?=
 =?utf-8?B?SEt1Z3gzckRWK0pPR2N2Lzc5VGc1UCs5dHBFdWdzUTBmN3Axajh3cUdmM3lG?=
 =?utf-8?B?OE5nN0hQS3NUVWFGRUVjWTJ3SFdSSzRiV1RLS3kzWmNaTGVOK3BQNWdLUGVH?=
 =?utf-8?B?OGRGdE15emNWVGFVUGtHZUxIZWM1RUxlZEZtOUVCZFRGRmFaYVZNQzFVUHI0?=
 =?utf-8?B?NUdNK0xkMGtyZ0N0OGIvSzdYNmE1V0V3M1V6Uk8xK2xSRXpNZFNta1RVUkdm?=
 =?utf-8?B?TXBOZFdyTXlsMkRPYnpHcEp6d1ZNWkRrL096Yk9GYWladEpWK21xYkNGK2U3?=
 =?utf-8?B?b3hqVFVnT3gxVnpMdURTTDdFQjZpY1JyeW4zQzhPanNvaUtPS1lSWEJ4eDRB?=
 =?utf-8?B?VThQaUdDYm9tNS9LT0RNNGZIWHFRSEpVU3pMa01xUnJoWCs3L1Z1bThWU0NT?=
 =?utf-8?B?OFgrTldMTGw4VkVRRmc1N1o5YUs0V3FLdGoxemdVZHRFd1drL2ZVN2JObWFY?=
 =?utf-8?B?Wm9tMFRKaFNyTkhKMTA4NlZSUzlxU0twTnl2Z1B6VjBDazdIN04wRGJFUi80?=
 =?utf-8?B?aVV0ZGZsK0pGcjMrRnJHVTUrbDd5c1ZBVFZrS1d0UWNsZmk5cU9aQT09?=
X-OriginatorOrg: citrix.com
X-MS-Exchange-CrossTenant-Network-Message-Id: dbee1e23-d5ce-417a-c42a-08dea52a7a69
X-MS-Exchange-CrossTenant-AuthSource: CH7PR03MB7860.namprd03.prod.outlook.com
X-MS-Exchange-CrossTenant-AuthAs: Internal
X-MS-Exchange-CrossTenant-OriginalArrivalTime: 28 Apr 2026 13:31:39.6347
 (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: yiS4AeLlB1+eOZUWRNID4c30UC826f6OqE91+/S8pFIJapzFXT1sPWQ/x+i6J5mpT8nqFu5DY/BdSzCWpZ/yeQ==
X-MS-Exchange-Transport-CrossTenantHeadersStamped: BN9PR03MB6026
X-purgate-ID: tlsNG-16d1c6/1777383103-90A7ED75-3B28D6E9/0/0
X-purgate-type: clean
X-purgate-size: 8053

On Fri, Mar 13, 2026 at 04:35:03PM +0000, Thierry Escande wrote:
> For the upcoming allocation of the MMCONFIG range in MMIO hole, this
> patch extends the 'bars' structure to make it universal for any
> arbitrary BAR type. Either IO, MMIO, ROM or a chipset-specific resource.
> 
> One important new field is addr_mask, which tells which bits of the base
> address can (should) be written. Different address types (ROM, MMIO BAR,
> PCIEXBAR) will have different addr_mask values.
> 
> For every assignable BAR range we store its size, PCI device BDF (devfn
> actually) to which it belongs, BAR type (mem/io/mem64) and corresponding
> register offset in device PCI conf space.
> 
> Also, to reduce code complexity, all long mem/mem64 BAR flags checks are
> replaced by simple bars[i] field probing, eg.:
> -        if ( (bar_reg == PCI_ROM_ADDRESS) ||
> -             ((bar_data & PCI_BASE_ADDRESS_SPACE) ==
> -              PCI_BASE_ADDRESS_SPACE_MEMORY) )
> +        if ( bars[i].is_mem )

I think this is also supposed to be a non-functional change, just
adding new fields and adjusting the code to make use of them?

> 
> Signed-off-by: Alexey Gerasimenko <x1917x@gmail.com>
> Signed-off-by: Thierry Escande <thierry.escande@vates.tech>
> ---
>  tools/firmware/hvmloader/pci.c | 58 ++++++++++++++++++++--------------
>  1 file changed, 35 insertions(+), 23 deletions(-)
> 
> diff --git a/tools/firmware/hvmloader/pci.c b/tools/firmware/hvmloader/pci.c
> index 91c7fd2171..6e6720adae 100644
> --- a/tools/firmware/hvmloader/pci.c
> +++ b/tools/firmware/hvmloader/pci.c
> @@ -160,9 +160,10 @@ static void class_specific_pci_device_setup(uint16_t vendor_id,
>  
>  void pci_setup(void)
>  {
> -    uint8_t is_64bar, using_64bar, bar64_relocate = 0;
> +    uint8_t is_64bar, using_64bar, bar64_relocate = 0, is_mem;

The newly introduce fields want to be booleans types.

>      uint32_t devfn, bar_reg, cmd, bar_data, bar_data_upper;
>      uint64_t base, bar_sz, bar_sz_upper, mmio_total = 0;
> +    uint64_t addr_mask;
>      uint8_t vga_devfn = 0xff;
>      uint16_t class, vendor_id, device_id;
>      unsigned int bar, pin, link, isa_irq;
> @@ -176,10 +177,13 @@ void pci_setup(void)
>  
>      /* Create a list of device BARs in descending order of size. */
>      struct bars {
> -        uint32_t is_64bar;
>          uint32_t devfn;
>          uint32_t bar_reg;
>          uint64_t bar_sz;
> +        uint64_t addr_mask; /* which bits of the base address can be written */
> +        uint32_t bar_data;  /* initial value - BAR flags here */

Hm, that's just storing the flags of the BAR, given that you already
store the 64bit and memory flags, you just need the prefetch and ROM
enabled booleans to have the full set, and then you can remove the
bar_data field from the struct.

> +        uint8_t  is_64bar;
> +        uint8_t  is_mem;

Use bool types please for the is_ fields.

>      } *bars = (struct bars *)scratch_start;
>      unsigned int i, nr_bars = 0;
>      uint64_t mmio_hole_size = 0;
> @@ -278,13 +282,21 @@ void pci_setup(void)
>                  bar_reg = PCI_ROM_ADDRESS;
>  
>              bar_data = pci_readl(devfn, bar_reg);
> +
> +            is_mem = !!(((bar_data & PCI_BASE_ADDRESS_SPACE) ==
> +                       PCI_BASE_ADDRESS_SPACE_MEMORY) ||
> +                       (bar_reg == PCI_ROM_ADDRESS));
> +
>              if ( bar_reg != PCI_ROM_ADDRESS )
>              {
> -                is_64bar = !!((bar_data & (PCI_BASE_ADDRESS_SPACE |
> -                             PCI_BASE_ADDRESS_MEM_TYPE_MASK)) ==
> -                             (PCI_BASE_ADDRESS_SPACE_MEMORY |
> +                is_64bar = !!(is_mem &&
> +                             ((bar_data & PCI_BASE_ADDRESS_MEM_TYPE_MASK) ==
>                               PCI_BASE_ADDRESS_MEM_TYPE_64));
> +
>                  pci_writel(devfn, bar_reg, ~0);
> +
> +                addr_mask = is_mem ? PCI_BASE_ADDRESS_MEM_MASK
> +                                   : PCI_BASE_ADDRESS_IO_MASK;
>              }
>              else
>              {
> @@ -292,15 +304,16 @@ void pci_setup(void)
>                  pci_writel(devfn, bar_reg,
>                             (bar_data | PCI_ROM_ADDRESS_MASK) &
>                             ~PCI_ROM_ADDRESS_ENABLE);
> +
> +                addr_mask = PCI_ROM_ADDRESS_MASK;
>              }
> +
>              bar_sz = pci_readl(devfn, bar_reg);
>              pci_writel(devfn, bar_reg, bar_data);
>  
>              if ( bar_reg != PCI_ROM_ADDRESS )
> -                bar_sz &= (((bar_data & PCI_BASE_ADDRESS_SPACE) ==
> -                            PCI_BASE_ADDRESS_SPACE_MEMORY) ?
> -                           PCI_BASE_ADDRESS_MEM_MASK :
> -                           (PCI_BASE_ADDRESS_IO_MASK & 0xffff));
> +                bar_sz &= is_mem ? PCI_BASE_ADDRESS_MEM_MASK :
> +                                   (PCI_BASE_ADDRESS_IO_MASK & 0xffff);
>              else
>                  bar_sz &= PCI_ROM_ADDRESS_MASK;
>              if (is_64bar) {
> @@ -314,6 +327,9 @@ void pci_setup(void)
>              if ( bar_sz == 0 )
>                  continue;
>  
> +            /* leave only memtype/enable bits etc */
> +            bar_data &= ~addr_mask;
> +
>              if ( !xenpci_bar_uc &&
>                   ((bar_data & PCI_BASE_ADDRESS_SPACE) ==
>                     PCI_BASE_ADDRESS_SPACE_MEMORY) &&
> @@ -359,16 +375,17 @@ void pci_setup(void)
>              if ( i != nr_bars )
>                  memmove(&bars[i+1], &bars[i], (nr_bars-i) * sizeof(*bars));
>  
> -            bars[i].is_64bar = is_64bar;
>              bars[i].devfn   = devfn;
>              bars[i].bar_reg = bar_reg;
>              bars[i].bar_sz  = bar_sz;
> +            bars[i].is_64bar  = is_64bar;
> +            bars[i].is_mem    = is_mem;
> +            bars[i].addr_mask = addr_mask;
> +            bars[i].bar_data  = bar_data;
>  
>              if ( is_64bar && bar_sz > BAR_RELOC_THRESH )
>                  bar64_relocate = 1;
> -            else if ( ((bar_data & PCI_BASE_ADDRESS_SPACE) ==
> -                       PCI_BASE_ADDRESS_SPACE_MEMORY) ||
> -                      (bar_reg == PCI_ROM_ADDRESS) )
> +            else if ( is_mem )
>                  mmio_total += bar_sz;
>  
>              nr_bars++;
> @@ -531,10 +548,10 @@ void pci_setup(void)
>          using_64bar = bars[i].is_64bar && bar64_relocate &&
>              (mmio_total > (mem_resource.max - mem_resource.base) ||
>               bar_sz > BAR_RELOC_THRESH);
> -        bar_data = pci_readl(devfn, bar_reg);
>  
> -        if ( (bar_data & PCI_BASE_ADDRESS_SPACE) ==
> -             PCI_BASE_ADDRESS_SPACE_MEMORY )
> +        bar_data = bars[i].bar_data;
> +
> +        if ( bars[i].is_mem )
>          {
>              /* Mapping high memory if PCI device is 64 bits bar */
>              if ( using_64bar ) {
> @@ -544,11 +561,9 @@ void pci_setup(void)
>                  if ( !pci_hi_mem_start )
>                      pci_hi_mem_start = high_mem_resource.base;
>                  resource = &high_mem_resource;
> -                bar_data &= ~PCI_BASE_ADDRESS_MEM_MASK;
>              } 
>              else {
>                  resource = &mem_resource;
> -                bar_data &= ~PCI_BASE_ADDRESS_MEM_MASK;
>              }
>              if ( bar_sz <= BAR_RELOC_THRESH )
>                  mmio_total -= bar_sz;
> @@ -556,7 +571,6 @@ void pci_setup(void)
>          else
>          {
>              resource = &io_resource;
> -            bar_data &= ~PCI_BASE_ADDRESS_IO_MASK;
>          }
>  
>          base = (resource->base  + bar_sz - 1) & ~(uint64_t)(bar_sz - 1);
> @@ -578,7 +592,7 @@ void pci_setup(void)
>              }
>          }
>  
> -        bar_data |= (uint32_t)base;
> +        bar_data |= (uint32_t) (base & bars[i].addr_mask);
                                 ^ unintended space?

Thanks, Roger.


From xen-devel-bounces@lists.xenproject.org Tue Apr 28 13:36:28 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 28 Apr 2026 13:36:28 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1296222.1572636 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wHiby-00088D-0T; Tue, 28 Apr 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 1296222.1572636; Tue, 28 Apr 2026 13:36: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 1wHibx-000886-Tz; Tue, 28 Apr 2026 13:36:25 +0000
Received: by outflank-mailman (input) for mailman id 1296222;
 Tue, 28 Apr 2026 13:36:25 +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 1wHibx-000880-6k
 for xen-devel@lists.xenproject.org; Tue, 28 Apr 2026 13:36:25 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wHibu-00Grpf-Lb
 for xen-devel@lists.xenproject.org; Tue, 28 Apr 2026 15:36:24 +0200
Received: from [10.42.69.9] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <jgross@suse.com>)
 id 69f0b7cd-bab6-0a2a0a5309dd-0a2a45098078-34
 for <xen-devel@lists.xenproject.org>; Tue, 28 Apr 2026 15:36:24 +0200
Received: from [209.85.218.44] (helo=mail-ej1-f44.google.com)
 by tlsNG-bad1c0.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.1)
 (envelope-from <jgross@suse.com>)
 id 69f0b7d6-2497-0a2a45090019-d155da2cdd93-3
 for <xen-devel@lists.xenproject.org>; Tue, 28 Apr 2026 15:36:22 +0200
Received: by mail-ej1-f44.google.com with SMTP id
 a640c23a62f3a-b9358bc9c50so1520684466b.1
 for <xen-devel@lists.xenproject.org>; Tue, 28 Apr 2026 06:36:22 -0700 (PDT)
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
 a640c23a62f3a-bb89ffab9b3sm60186666b.42.2026.04.28.06.36.21
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Tue, 28 Apr 2026 06:36:21 -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=google header.d=suse.com header.i="@suse.com" header.h="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=1777383382; x=1777988182; darn=lists.xenproject.org;
        h=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;
        bh=yMTweACHPf2EqeECSCbR9ArNKBan1LGH5RaktMGo+50=;
        b=M7IbQ4mqp8+gNhzZ+rKUl5Oyf9U1hXbmzTQqKfAXjXb5Xa6FgXBcHxbwXaDry8fsX6
         B8Wicuy1w4Xbe8gwD+Kmgh9CDmrem0bK0MEHX9lwp70+eqFUdeelSwcxXa1OaEzMTJyb
         tBTV4dOmdPuGCqSJfdXnq6PQAcxp8CP0C8ayaeFDPX1oc93HEc0i2HGkczeXMd2kBYHD
         x73QpFETzjr7mJexOqTuBt0WjlKMs7Ru6d9khL/QMfggt83exOkxni+yKIwYEpvi2bqJ
         1HD29wxQD3Bw7lhBeu4eP1Ohy1nZQGF39rg9QdSCYwft4g3AAvZm7wGTIhPdlmVUyky0
         Bqfw==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20251104; t=1777383382; x=1777988182;
        h=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;
        bh=yMTweACHPf2EqeECSCbR9ArNKBan1LGH5RaktMGo+50=;
        b=gz4i8x56TRMr/rQM1XpEbk0S4SqtGj4riGdHE4juYMsWOBl97aoctpJNKJnb4U9OMv
         osu2n2rTX/63D8T1Lkj66DZMNPJdlYok3yScz2nYzpNb+SLdCXLTwYWqs+JIknitMmnO
         uJH7scRBN3VuG8r9FW/1C5i/vk3Re7jy91lWfR4pA1FC1jKdnSc58L1spJq06sbohMPZ
         3oXvJhkrUxt/gcq8lRJOO3+O0am/BlPsSXEGoWLLq9ZaFfHldpzzgYi/K1YGI7QpNAYl
         FJE1Vi8e42AEKMLQXWrXNzmauQaio7XuYIQmwOtDnAa0tU0Ds1pZ35gDsMbSHFVCdATH
         p0hA==
X-Forwarded-Encrypted: i=1; AFNElJ/Skpr5MltQcmJPEqKgjEAo/XNqaYTSiHL2diPwbxGysfNYOol/vmsu+8G4YhR33gZaJ6R2Dqcwq4k=@lists.xenproject.org
X-Gm-Message-State: AOJu0YxScSVAgCXyIRNAGQzmaS6S5Xrxl7YgkOwovk8NG/ELrPbWV4hN
	e2rKSg8ZoAwvDW4nWkYcvMDcOBaeF+z4iSKPiP/ZLq9+kxWpcGGgJM7BOguZm4xgxl8hirVBTC5
	7H+DZpEk=
X-Gm-Gg: AeBDievFQenbSCzfGx8p4zJ7R71Cd6bD6cR1wvOdSmvSUFrE+BXk5DEssStcUjLFgxo
	Rau27+IQFem6TjbJ5v3o7YmV+uK+ySeBgDb/43l8wwpxTVw8YmOEWvaocqBEbn08M+pZDgNmdBr
	Rxklokh99VG6jT/Cjf3XC7faMRr5AXE9kPbVYlmIOfSbz2H1Acq8FqAkDlBlx7W1Tc2d7dshzKz
	xD9jiJW+Drvdx3WVNrO3eXOyqhIqvO8/wCO3LNRlu/v4wpOGvnSYVxfDUx8rAANnhbDuW94lArx
	zZrqAi3IrGx6CYwqfdVbB6MszmAfj+2fWrvj4zLGdOsmfMSRppkpVRumbZ7w8h2IXdT4KdDsEbt
	+xg0uJ+t5jTmHyVwx73lJ5Wc9TLe7KHVjoDdQdVFfTQE0VhuDurbzXTv6gbV79yKwjpYhfMZB2F
	ua0vch7Bo5r9WoBhGsy5NZczah5N1H9+lVp4+/qZgszSq/O5qy6agQRmARJr+GNWwHW8ZIZYmdR
	aL1L9Y42rQ8NF+8IfI+fqsmJVBKbK9bV0EQ0WL34vCcJraa/iWhcbqTVV0q+B4g
X-Received: by 2002:a17:907:3e97:b0:ba3:cacd:b9f6 with SMTP id a640c23a62f3a-bb8014e8a1emr186490466b.7.1777383381747;
        Tue, 28 Apr 2026 06:36:21 -0700 (PDT)
Message-ID: <ffc85ac6-2d32-48fe-a066-a8477fc085ff@suse.com>
Date: Tue, 28 Apr 2026 15:36:20 +0200
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH 1/4] xen/public: introduce DOMID_ANY
To: Jason Andryuk <jason.andryuk@amd.com>, xen-devel@lists.xenproject.org
Cc: dmukhin@ford.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.pau@citrix.com>, Stefano Stabellini <sstabellini@kernel.org>
References: <20260423080840.530547-1-jgross@suse.com>
 <20260423080840.530547-2-jgross@suse.com>
 <bf54e159-c4ad-47e4-a6a8-574af834ac9f@amd.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: <bf54e159-c4ad-47e4-a6a8-574af834ac9f@amd.com>
Content-Type: multipart/signed; micalg=pgp-sha256;
 protocol="application/pgp-signature";
 boundary="------------nltUoEkhYOgmBOpi0pCY6I7P"
X-purgate-ID: tlsNG-bad1c0/1777383382-93374A53-85D6C04F/0/0
X-purgate-type: clean
X-purgate-size: 9933

This is an OpenPGP/MIME signed message (RFC 4880 and 3156)
--------------nltUoEkhYOgmBOpi0pCY6I7P
Content-Type: multipart/mixed; boundary="------------jANO70Zjy6aUD1NmQqph0f3U";
 protected-headers="v1"
From: =?UTF-8?B?SsO8cmdlbiBHcm/Dnw==?= <jgross@suse.com>
To: Jason Andryuk <jason.andryuk@amd.com>, xen-devel@lists.xenproject.org
Cc: dmukhin@ford.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.pau@citrix.com>, Stefano Stabellini <sstabellini@kernel.org>
Message-ID: <ffc85ac6-2d32-48fe-a066-a8477fc085ff@suse.com>
Subject: Re: [PATCH 1/4] xen/public: introduce DOMID_ANY
References: <20260423080840.530547-1-jgross@suse.com>
 <20260423080840.530547-2-jgross@suse.com>
 <bf54e159-c4ad-47e4-a6a8-574af834ac9f@amd.com>
In-Reply-To: <bf54e159-c4ad-47e4-a6a8-574af834ac9f@amd.com>
Autocrypt-Gossip: 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
 Y2ggPGpiZXVsaWNoQHN1c2UuY29tPsJ3BBMRAgAgBQJZN5xEAhsDBgsJCAcDAgQVAggDBBYC
 AwECHgECF4AAIQkQoDSui/t3IH4WIQQ+pJkfkcoLMCa4X6CgNK6L+3cgfgn7AJ9DmMd0SMJE
 ePbc7/m22D2v04iu7ACffXTdZQhNl557tJuDXZSBxDmW/tLOwU0EWTecRBAIAIK5OMKMU5R2
 Lk2bbjgX7vyQuCFFyKf9rC/4itNwhYWFSlKzVj3WJBDsoi2KvPm7AI+XB6NIkNAkshL5C0kd
 pcNd5Xo0jRR5/WE/bT7LyrJ0OJWS/qUit5eNNvsO+SxGAk28KRa1ieVLeZi9D03NL0+HIAtZ
 tecfqwgl3Y72UpLUyt+r7LQhcI/XR5IUUaD4C/chB4Vq2QkDKO7Q8+2HJOrFIjiVli4lU+Sf
 OBp64m//Y1xys++Z4ODoKh7tkh5DxiO3QBHG7bHK0CSQsJ6XUvPVYubAuy1XfSDzSeSBl//C
 v78Fclb+gi9GWidSTG/4hsEzd1fY5XwCZG/XJJY9M/sAAwUH/09Ar9W2U1Qm+DwZeP2ii3Ou
 14Z9VlVVPhcEmR/AFykL9dw/OV2O/7cdi52+l00reUu6Nd4Dl8s4f5n8b1YFzmkVVIyhwjvU
 jxtPyUgDOt6DRa+RaDlXZZmxQyWcMv2anAgYWGVszeB8Myzsw8y7xhBEVV1S+1KloCzw4V8Z
 DSJrcsZlyMDoiTb7FyqxwQnM0f6qHxWbmOOnbzJmBqpNpFuDcz/4xNsymJylm6oXiucHQBAP
 Xb/cE1YNHpuaH4SRhIxwQilCYEznWowQphNAbJtEKOmcocY7EbSt8VjXTzmYENkIfkrHRyXQ
 dUm5AoL51XZljkCqNwrADGkTvkwsWSvCSQQYEQIACQUCWTecRAIbDAAKCRCgNK6L+3cgfuef
 AJ9wlZQNQUp0KwEf8Tl37RmcxCL4bQCcC5alCSMzUBJ5DBIcR4BY+CyQFAs=

--------------jANO70Zjy6aUD1NmQqph0f3U
Content-Type: multipart/mixed; boundary="------------Ilfb87TlZHlws3P4BBinl6Wi"

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

T24gMjguMDQuMjYgMDA6MDAsIEphc29uIEFuZHJ5dWsgd3JvdGU6DQo+IE9uIDIwMjYtMDQt
MjMgMDQ6MDgsIEp1ZXJnZW4gR3Jvc3Mgd3JvdGU6DQo+PiBBZGQgRE9NSURfQU5ZIHRvIHhl
bi9pbmNsdWRlL3B1YmxpYy94ZW4uaCBtZWFudCB0byBiZSBhIHdpbGRjYXJkIGZvcg0KPj4g
ZG9taWRzLg0KPj4NCj4+IFNpZ25lZC1vZmYtYnk6IERlbmlzIE11a2hpbiA8ZG11a2hpbkBm
b3JkLmNvbT4NCj4+IFNpZ25lZC1vZmYtYnk6IEp1ZXJnZW4gR3Jvc3MgPGpncm9zc0BzdXNl
LmNvbT4NCj4+IC0tLQ0KPj4gVGhpcyBpcyBiYXNlZCBvbiBEZW5pcyBNdWtoaW4ncyBwYXRj
aCAieGVuL2RvbWFpbjogaW50cm9kdWNlIERPTUlEX0FOWSIuDQo+PiBBcyBteSBzZXJpZXMg
aXMgYW5vdGhlciB1c2UgY2FzZSBmb3IgRE9NSURfQU5ZIGFuZCBpdCBpcyBhIGJhY2twb3J0
DQo+PiBjYW5kaWRhdGUsIEkndmUgc3BsaXQgb3V0IHRoZSBkZWZpbml0aW9uIG9mIERPTUlE
X0FOWSBmcm9tIERlbmlzJw0KPj4gcGF0Y2ggaW4gb3JkZXIgdG8gbWFrZSBwcm9ncmVzcyBm
b3IgbXkgc2VyaWVzLg0KPiANCj4gSSB0aGluayB3ZSBwcm9iYWJseSB3YW50IERlbmlzIGFz
IHRoZSBBdXRob3IsIHNpbmNlIHRoaXMgaXMgYW4gdW5tb2RpZmllZCBwaWVjZSANCj4gb2Yg
aGlzIHBhdGNoLg0KDQpBcGFydCBmcm9tIHRoZSBjb21taXQgbWVzc2FnZSwgeWVzLg0KDQpL
ZWVwaW5nIERlbmlzIGFzIHRoZSBhdXRob3IgaXMgZmluZSB3aXRoIG1lLg0KDQo+PiAtLS0N
Cj4+IMKgIHhlbi9pbmNsdWRlL3B1YmxpYy94ZW4uaCB8IDcgKysrKysrKw0KPj4gwqAgMSBm
aWxlIGNoYW5nZWQsIDcgaW5zZXJ0aW9ucygrKQ0KPj4NCj4+IGRpZmYgLS1naXQgYS94ZW4v
aW5jbHVkZS9wdWJsaWMveGVuLmggYi94ZW4vaW5jbHVkZS9wdWJsaWMveGVuLmgNCj4+IGlu
ZGV4IGIxMmZkMTBlNjMuLmYzNWE2ZjIxZjAgMTAwNjQ0DQo+PiAtLS0gYS94ZW4vaW5jbHVk
ZS9wdWJsaWMveGVuLmgNCj4+ICsrKyBiL3hlbi9pbmNsdWRlL3B1YmxpYy94ZW4uaA0KPj4g
QEAgLTYwOCw2ICs2MDgsMTMgQEAgREVGSU5FX1hFTl9HVUVTVF9IQU5ETEUobW11ZXh0X29w
X3QpOw0KPj4gwqAgLyogRE9NSURfSU5WQUxJRCBpcyB1c2VkIHRvIGlkZW50aWZ5IHBhZ2Vz
IHdpdGggdW5rbm93biBvd25lci4gKi8NCj4+IMKgICNkZWZpbmUgRE9NSURfSU5WQUxJRMKg
wqDCoMKgwqDCoMKgIHhlbl9ta191aW50KDB4N0ZGNCkNCj4+ICsvKg0KPj4gKyAqIERPTUlE
X0FOWSBpcyB1c2VkIHRvIHNpZ25hbCBubyBzcGVjaWZpYyBkb21haW4gSUQgcmVxdWVzdGVk
Lg0KPj4gKyAqIEhhbmRsZXIgc2hvdWxkIHBpY2sgYSB2YWxpZCBJRCwgb3IgaGFuZGxlIGl0
IGFzIGEgYnJvYWRjYXN0IHZhbHVlDQo+IA0KPiBNYXliZSBzL2Jyb2FkY2FzdC93aWxkY2Fy
ZC8/DQoNClllcywgc291bmRzIGJldHRlci4NCg0KPiANCj4gRWl0aGVyIHdheToNCj4gDQo+
IFJldmlld2VkLWJ5OiBKYXNvbiBBbmRyeXVrIDxqYXNvbi5hbmRyeXVrQGFtZC5jb20+DQoN
ClRoYW5rcywNCg0KDQpKdWVyZ2VuDQo=
--------------Ilfb87TlZHlws3P4BBinl6Wi
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-----

--------------Ilfb87TlZHlws3P4BBinl6Wi--

--------------jANO70Zjy6aUD1NmQqph0f3U--

--------------nltUoEkhYOgmBOpi0pCY6I7P
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/Ey8FAmnwt9UFAwAAAAAACgkQsN6d1ii/Ey/o
YQf/aptfvUHNlJgz3tfSgx8JwLx6YZeraeTDo8sJEGNoXxAthkm0q98RVbQiy+p4sHBV55gEptnL
HvX+nFJUfaOnjvKU7xwZPhmn+H5NHtlyzAHX6kkyX7nnsKeKRaR0zJmi/nf38fw+WEaS6RFqSGwd
Jg0+b4DD8wbg+ffwxIDhrdn/NPsO9DB5nuKOn6UT/DoQdH0k962ZYN5dhMcT2i0CsBUEczaMQo65
tNk/eb6rcLqqmye2w6sc4Zny6ygqf38D1xFrw9Z30SF1vNR05yLB2v6Jhx6ut4Sur4aHOmczth7X
yyLf+moFn9TFwM6lHXqc+rRiOkhwDY6o4RfyVIhZLg==
=f82e
-----END PGP SIGNATURE-----

--------------nltUoEkhYOgmBOpi0pCY6I7P--


From xen-devel-bounces@lists.xenproject.org Tue Apr 28 13:38:59 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 28 Apr 2026 13:38:59 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1296233.1572647 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wHieM-0000U6-GL; Tue, 28 Apr 2026 13:38:54 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1296233.1572647; Tue, 28 Apr 2026 13:38: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 1wHieM-0000Tz-Bz; Tue, 28 Apr 2026 13:38:54 +0000
Received: by outflank-mailman (input) for mailman id 1296233;
 Tue, 28 Apr 2026 13:38:53 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92) id 1wHieL-0000TR-6t
 for xen-devel@lists.xenproject.org; Tue, 28 Apr 2026 13:38:53 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wHieK-00GG3n-IK
 for xen-devel@lists.xenproject.org; Tue, 28 Apr 2026 15:38:52 +0200
Received: from [10.42.69.8] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <oleksii.kurochko@gmail.com>)
 id 69f0b860-bab6-0a2a0a5309dd-0a2a4508cec8-34
 for <xen-devel@lists.xenproject.org>; Tue, 28 Apr 2026 15:38:52 +0200
Received: from [209.85.128.45] (helo=mail-wm1-f45.google.com)
 by tlsNG-c1860d.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.1)
 (envelope-from <oleksii.kurochko@gmail.com>)
 id 69f0b86c-63b5-0a2a45080019-d155802dc1dc-3
 for <xen-devel@lists.xenproject.org>; Tue, 28 Apr 2026 15:38:52 +0200
Received: by mail-wm1-f45.google.com with SMTP id
 5b1f17b1804b1-4838c15e3cbso106228905e9.3
 for <xen-devel@lists.xenproject.org>; Tue, 28 Apr 2026 06:38:52 -0700 (PDT)
Received: from [192.168.1.6] (user-109-243-69-121.play-internet.pl.
 [109.243.69.121]) by smtp.gmail.com with ESMTPSA id
 5b1f17b1804b1-48a773a870asm63552835e9.1.2026.04.28.06.38.50
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Tue, 28 Apr 2026 06:38:51 -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=20251104 header.d=gmail.com header.i="@gmail.com" header.h="Content-Transfer-Encoding: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=20251104; t=1777383532; x=1777988332; darn=lists.xenproject.org;
        h=content-transfer-encoding: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;
        bh=F8dKdNA/CLCCRiw4cljqr0vqvHhydgAGJmNl5YJwm8c=;
        b=kfCxn6urVc56wHiladkbKbn57QqJ2JDaEMHtCPL8Uq8tfD1O5eMBANhwtfL8fRvFfd
         7FUl2l8v87ff9JMrRUj03aCLW3rieRVkTR+QhSBG3c2feA8uyRjYbar2Ccb9n3ltiyzE
         MwSBcVZundeEmGDd58c7PP9v2ip2fu/Lm7wgkhkj86IefGswxzl9Aw0NFC5H1PBjZLt9
         7dwJwcllBplLli9hq2A89+FY6BY/ftTW+AJRw2eibQCLA06orIfqn4+t860+7oSlnChr
         qJIbLuFvaGEu+vPaN7IP05z1AYuG/VfkJc9aUD2Axy6aYQbLsPEaLxBDtgat4XFwDSfC
         8sNg==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20251104; t=1777383532; x=1777988332;
        h=content-transfer-encoding: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;
        bh=F8dKdNA/CLCCRiw4cljqr0vqvHhydgAGJmNl5YJwm8c=;
        b=qmG2pdgBagegM7WzEUXhC9ZqM+lhv6CIPKUIJIOBlXhsrixLhCoDLqsCMQQXYW21gK
         26mDbpu+0mPrI/xhs43gdhfUTAQPP+E/YRj1UrDmZH5nx+YWN8qJVpEI30fnsQHCQlLL
         yvl1sURCtoBQtRfVn9fI0SpfNKLVqfYU2CZvyFEYq2221KwIJmSi8f85iYWCSGSDyuKc
         dcwHQJ5istKKgIZcheNXHL8qizLszMht+kU8/DM/PS3/+nlSTPfDsdfLbFGpJBOIzuNS
         A/X3i6ZXaAuho+FHW8Sah6AMDv01p+nz74wbscCNehnKC8ZiZlt7i5oj9WFLJjHMR93g
         dw9w==
X-Forwarded-Encrypted: i=1; AFNElJ9ouFDAubzbjG9cTu3LEPfuCZ3AAhgHOLZZ6bilHXfjLIKAwS41yCh3/BNjs8uQYCcscb9gTsJL/GY=@lists.xenproject.org
X-Gm-Message-State: AOJu0Yz0bm1GPEtTL5nTzpyCuIzcIZS6oMgrGdL4gxw/qEMAzvC9fhW4
	sAhpA/qoecgeXEutWTI/jeiQb3ftCLkAWyL7p8CY1jGhKb/YxdeHQFy1
X-Gm-Gg: AeBDietvRHBjT/CZWYguWoBLm9bNdxUnQb2QfXJJW442sZWmt8HZb01LFoCp1/1HHEo
	8lNj6SMBu3B3cJa7Hlu5C4xZ0k1vXdTu8Ou3JRZLs/PSRVsM+gOVOeWt9G/w/r2dnZZdz1ElIeJ
	GfRFZGKjpj7zIeYgEGwyJzleqAZGP34bX8c7TR3pIvUHq/CZ7UvbslX8z7t8rHsNDpC+JRAzyyS
	D3rN0M8EgPeAHHT7BCm+ExUI6N87rMlb9jQxLhyMg5gRvc4BrnrTo2le7wXN2LyalT8U0hjJxVz
	Xvo/s7Gzn2HJfVPaYON3ag4/oNaxNbJSP+6oTMiql4q3Y1RfWcmrDaFBZVP/Lk4hVm1Tnw1u+4C
	BR3VW3Cvm3AJTiszcwM+XOfFA3LWqeP2QT1KA0xXrgvce+KZdEr9Ip7dsbLUcirWW/Kh9mZ8ZX3
	KPXPI2btUgPHmSlVCiX0/bKjfHkIo3CdaNc2suHB+zaEA/N5Z/zJi1qRXlhG5dfXyPkEt1MS1dW
	pJtEkpMZMoMUQ==
X-Received: by 2002:a05:600c:3386:b0:488:a977:8de with SMTP id 5b1f17b1804b1-48a77e64f29mr26163925e9.16.1777383531550;
        Tue, 28 Apr 2026 06:38:51 -0700 (PDT)
Message-ID: <a7b3a65d-8fa6-4dbf-881d-d2bee2a834ff@gmail.com>
Date: Tue, 28 Apr 2026 15:38:50 +0200
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH 0/8] Armv8-R AArch64 MPU support (single core)
To: Luca Fancellu <luca.fancellu@arm.com>, 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>
References: <20260420142524.1804073-1-luca.fancellu@arm.com>
Content-Language: en-US
From: Oleksii Kurochko <oleksii.kurochko@gmail.com>
In-Reply-To: <20260420142524.1804073-1-luca.fancellu@arm.com>
Content-Type: text/plain; charset=UTF-8; format=flowed
Content-Transfer-Encoding: 7bit
X-purgate-ID: tlsNG-c1860d/1777383532-C377EDB1-8B656CFA/10/73395122804
X-purgate-type: spam
X-purgate-size: 1030

Hello everyone,

On 4/20/26 4:25 PM, Luca Fancellu wrote:
> Hi,
> 
> this serie complete the support for Armv8-R AArch64 MPU support for dom0less
> DomU boot on single core, it also build for Armv8-R AArch32 but the support is
> not complete.
> 
> The serie is based on another serie in the mailing list: "Fifth MPU Series".
> 
> I've spoken with Oleksii and the Arm maintainer to have the possibilty to have
> this on the Xen release, of course provided that maintainers have enough
> bandwidth and depending on the priority of the series to be in.
> 
> Asking for Oleksii Ack for the release, the changes in this serie are mostly
> related to MPU apart from few patches that touches common Arm code.

Despite the fact that this series was submitted just one day after the 
deadline, it appears to provide useful functionality. If maintainers 
have time to review it, it would be great to include it in this release.

Release-Acked-by: Oleksii Kurochko <oleksii.kurochko@gmail.com>

Thanks.

~ Oleksii


From xen-devel-bounces@lists.xenproject.org Tue Apr 28 13:39:54 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 28 Apr 2026 13:39:54 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1296246.1572654 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wHifK-0001CA-O8; Tue, 28 Apr 2026 13:39:54 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1296246.1572654; Tue, 28 Apr 2026 13:39: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 1wHifK-0001C3-LA; Tue, 28 Apr 2026 13:39:54 +0000
Received: by outflank-mailman (input) for mailman id 1296246;
 Tue, 28 Apr 2026 13:39:53 +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 1wHifJ-0001Bv-CW
 for xen-devel@lists.xenproject.org; Tue, 28 Apr 2026 13:39:53 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wHifI-0056pj-Og
 for xen-devel@lists.xenproject.org; Tue, 28 Apr 2026 15:39:52 +0200
Received: from [10.42.69.12] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <jgross@suse.com>)
 id 69f0b891-bab6-0a2a0a5309dd-0a2a450ce652-38
 for <xen-devel@lists.xenproject.org>; Tue, 28 Apr 2026 15:39:52 +0200
Received: from [209.85.208.54] (helo=mail-ed1-f54.google.com)
 by tlsNG-d25034.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.1)
 (envelope-from <jgross@suse.com>)
 id 69f0b8a8-62f1-0a2a450c0019-d155d036f0a3-3
 for <xen-devel@lists.xenproject.org>; Tue, 28 Apr 2026 15:39:52 +0200
Received: by mail-ed1-f54.google.com with SMTP id
 4fb4d7f45d1cf-67929ff6dbfso4145827a12.2
 for <xen-devel@lists.xenproject.org>; Tue, 28 Apr 2026 06:39:52 -0700 (PDT)
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
 a640c23a62f3a-bb80c581f6esm105838466b.63.2026.04.28.06.39.51
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Tue, 28 Apr 2026 06:39:51 -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=google header.d=suse.com header.i="@suse.com" header.h="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=1777383592; x=1777988392; darn=lists.xenproject.org;
        h=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;
        bh=gKBUi8AMoisd+yxLpzQyC2tC4IhTDTxwYL/rnEvu6cQ=;
        b=EBCYqwszL7LlwanhUvafyzNbQLR7Cn82q98BWUjxegJ4wECTcMnBJ+fotZq89LgDaJ
         fDu7PqfLyUuSgopMqc685y0UfQ7kin7RB8ewBDzEPo0iJkmfbk3NLMIhAgaZxzkU+QEk
         ROiCNv9rjXm9NNpNYLWwXo5W+Y2YzlbkO3MQOJ6KjhKsFph5hCAh2KSZ+jx/A5OGq0TQ
         guoGpCchT10+lV4tSsNe6gv66UoBVZzBOMMntSy4i2O8zUg8ry6XAz/p6edhnYuup86G
         Y0wSu8vGvOYJlPQ3wrE7YHD94sCZQtbhVf8MAXPfanZqsj9/ixuXfazTtVbgz9xSPxqL
         EglQ==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20251104; t=1777383592; x=1777988392;
        h=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;
        bh=gKBUi8AMoisd+yxLpzQyC2tC4IhTDTxwYL/rnEvu6cQ=;
        b=YgY0NBdVztDSHef53a/6oZ/Uya6WawxkSKhbryNT5bQiD2fURUIo7nqCBp4BfOOdFZ
         Xhdcbe/r0lzvRL5ofoaDYuwAi5gjJacgFpSq1hQeetkmY9dibwV/YG/PLp3fJ8rjWFXH
         rPcMjEMY4X/ziJPO9UTHAHXTGoZJdRtRJGBYDm2bVrmMZGUGh0PVLecrmXXy47nUsW1U
         DVrTJg0KsSp8zkKHnnCTcZDIDWddI7DpCjqWD7KM0Y5kJV8MbdUTg51ZYN+ec1Vr/mgw
         ADm7P1Q46HHt7No0MZKEYw6CBTkwBPDEF0ndmLBLl62R6wjXL50emy8zSc86JpptLbB5
         XGeQ==
X-Forwarded-Encrypted: i=1; AFNElJ/z61NkJv3mdw+fDzV/HMokosSWGZiYzjIBXUaXIFOYBMMf0GEJy9Ksqs0gtm8dbuQvIOMYbRlbXfA=@lists.xenproject.org
X-Gm-Message-State: AOJu0Ywm3Rq6pzvKqnfkLe67carThCnDRGNHVHLokpxn70Z+UGi0F0qV
	HELwgCl8+b7Dmp0bxNmyKzdRAYGmdr7XbV9ryNxdo2j6MI95LzzZJBMnCrY53WN3jaQ=
X-Gm-Gg: AeBDievCiK1HLe5wYCqU7FCoAyG9jsYUcOYQyZEXU9FDQGxPn5M8ghHbJSadm3RT53h
	1f31S1HB4YVl9p2PC8iJSV1qPYsR8u9/XD18m52efNd8lk9ZKya2VstSW+vsKr8LSk2GplkylGl
	Npi6k7e7gNnmBc7U1rMBDgJmL3QiVdydSMv5koLPc17BAiHVVlOeH/WW2B8FrJvakl0fdZzCKkj
	XLAdqbjTUK8Dw+BSC9weP/wcXVglNLWVeNfCKqd3Q7ZOw3MIViJ9odCa28gNEM6XNbVHB1Okua/
	eK0NPid9611vhZq0CFukswx8wGsk57tMp98NXjDRhicwfRRszkl1pyEzoKBKZHqUyUQgroZknYt
	V37PdcxcXGRGxpysjyyLGJZ4IAyyozjLWJZeIgQKInl6i3vBl8oXu4t0wKLCjTSQ8hMMCNkCRTM
	BA/VsGwdECf3L/jOwr6um/ABdQOch4yEHUslghKbhqjtYaNmaYEmDVwbQxvWcsU0dWAkMdpMf8x
	RDWGe6e1yYsl/oEnoP36dmu7H1i9wVL+AhX63Lqq2DPOqYB2SXBOuRNArsuZyLz
X-Received: by 2002:a17:906:518c:10b0:b98:155e:609 with SMTP id a640c23a62f3a-bb80443e96cmr155266166b.36.1777383591872;
        Tue, 28 Apr 2026 06:39:51 -0700 (PDT)
Message-ID: <0748c0d3-78cd-457e-9e88-fbe19e58c73f@suse.com>
Date: Tue, 28 Apr 2026 15:39:50 +0200
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH 2/4] tools/xenstored: add support for "all domains" node
 permission
To: Jason Andryuk <jason.andryuk@amd.com>, xen-devel@lists.xenproject.org
Cc: dmukhin@ford.com, Anthony PERARD <anthony.perard@vates.tech>,
 Julien Grall <julien@xen.org>
References: <20260423080840.530547-1-jgross@suse.com>
 <20260423080840.530547-3-jgross@suse.com>
 <b752fdef-9950-45c9-bf0a-bea973c0c861@amd.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: <b752fdef-9950-45c9-bf0a-bea973c0c861@amd.com>
Content-Type: multipart/signed; micalg=pgp-sha256;
 protocol="application/pgp-signature";
 boundary="------------VZVPZuRWvvMMi3ADBV5BO30W"
X-purgate-ID: tlsNG-d25034/1777383592-6DD6BCF5-D11B3E9F/0/0
X-purgate-type: clean
X-purgate-size: 8031

This is an OpenPGP/MIME signed message (RFC 4880 and 3156)
--------------VZVPZuRWvvMMi3ADBV5BO30W
Content-Type: multipart/mixed; boundary="------------qUcR0Z8SQzp2enVRLCA2AQA0";
 protected-headers="v1"
From: =?UTF-8?B?SsO8cmdlbiBHcm/Dnw==?= <jgross@suse.com>
To: Jason Andryuk <jason.andryuk@amd.com>, xen-devel@lists.xenproject.org
Cc: dmukhin@ford.com, Anthony PERARD <anthony.perard@vates.tech>,
 Julien Grall <julien@xen.org>
Message-ID: <0748c0d3-78cd-457e-9e88-fbe19e58c73f@suse.com>
Subject: Re: [PATCH 2/4] tools/xenstored: add support for "all domains" node
 permission
References: <20260423080840.530547-1-jgross@suse.com>
 <20260423080840.530547-3-jgross@suse.com>
 <b752fdef-9950-45c9-bf0a-bea973c0c861@amd.com>
In-Reply-To: <b752fdef-9950-45c9-bf0a-bea973c0c861@amd.com>

--------------qUcR0Z8SQzp2enVRLCA2AQA0
Content-Type: multipart/mixed; boundary="------------5YUj0EbTPBHAtlQncae2B0OV"

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

T24gMjguMDQuMjYgMDA6MDAsIEphc29uIEFuZHJ5dWsgd3JvdGU6DQo+IE9uIDIwMjYtMDQt
MjMgMDQ6MDgsIEp1ZXJnZW4gR3Jvc3Mgd3JvdGU6DQo+PiBBZGQgc3VwcG9ydCBmb3IgdXNp
bmcgRE9NSURfQU5ZIGluIG5vZGUgcGVybWlzc2lvbnMgdG8gaW5kaWNhdGUgdGhhdA0KPj4g
YWxsIGRvbWFpbnMgYXJlIGFsbG93ZWQgdG8gYWNjZXNzIHRoZSBub2RlLg0KPj4NCj4+IEFk
ZCBhIG5ldyBmZWF0dXJlIGJpdCBmb3IgaW5kaWNhdGluZyB0aGUgc3VwcG9ydCBvZiBET01J
RF9BTlkuDQo+Pg0KPj4gU2lnbmVkLW9mZi1ieTogSnVlcmdlbiBHcm9zcyA8amdyb3NzQHN1
c2UuY29tPg0KPiANCj4gDQo+PiBAQCAtMTc1NCw4ICsxNzU1LDEyIEBAIHN0YXRpYyBib29s
IGNoa19kb21haW5fZ2VuZXJhdGlvbih1bnNpZ25lZCBpbnQgZG9taWQsIA0KPj4gdWludDY0
X3QgZ2VuKQ0KPj4gwqDCoCAqIEFsbG9jYXRlIGFsbCBtaXNzaW5nIHN0cnVjdCBkb21haW4g
cmVmZXJlbmNlZCBieSBhIHBlcm1pc3Npb24gc2V0Lg0KPj4gwqDCoCAqIEFueSBwZXJtaXNz
aW9uIGVudHJpZXMgZm9yIG5vdCBleGlzdGluZyBkb21haW5zIHdpbGwgYmUgbWFya2VkIHRv
IGJlDQo+PiDCoMKgICogaWdub3JlZC4NCj4+ICsgKiBBbiBET01JRF9BTlkgZW50cnkgd2ls
bCBiZSBtYXJrZWQgdG8gYmUgaWdub3JlZCwgaWYgdGhlIHdyaXRpbmcNCj4gDQo+IGEvQW4v
QS8NCg0KWWVzLg0KDQo+IA0KPj4gKyAqIGRvbWFpbiBkb2Vzbid0IGhhdmUgdGhlIFhFTlNU
T1JFX1NFUlZFUl9GRUFUVVJFX0RPTUlEX0FOWSBlbmFibGVkLiBOb3RlDQo+PiArICogdGhh
dCBYZW4gdG9vbHMgd2lsbCBuZXZlciBzZXQgRE9NSURfQU5ZIGZvciBhIGd1ZXN0IG93bmVk
IG5vZGUuDQo+IA0KPiBJJ20gbm90IHN1cmUgYWJvdXQgc3RhdGluZyAiWGVuIHRvb2xzIHdp
bGwgbmV2ZXIiIGhlcmUgc2luY2UgaXQgbWF5IGNoYW5nZSBpbiANCj4gdGhlIGZ1dHVyZSwg
YW5kIHdpbGwgbm90IGJlIHVwZGF0ZWQuwqAgTWF5YmUgIk5vdGUgdGhhdCBYZW4gdG9vbHMg
ZG9uJ3QgY3VycmVudGx5IA0KPiBzZXQgRE9NSURfQU5ZIGZvciBhIGd1ZXN0IG93bmVkIG5v
ZGUsIGFuZCB0aGV5IGFyZW4ndCBleHBlY3RlZCBpbiB0aGUgZnV0dXJlLiI/ICANCj4gQnV0
IG1heWJlIGp1c3QgZHJvcCBpdCBzaW5jZSBJJ20gbm90IHNlZWluZyBtdWNoIHZhbHVlLg0K
DQpUaGUgbWFpbiBpZGVhIGlzIHRoYXQgYSBndWVzdCBub3Qga25vd2luZyBhYm91dCB0aGUg
RE9NSURfQU5ZIGZlYXR1cmUgc2hvdWxkDQpuZXZlciBzZWUgaXQgaW4gdGhlIHBlcm1pc3Np
b25zIG9mIGEgWGVuc3RvcmUgbm9kZSBpdCBpcyBvd25pbmcuDQoNClNvIElNTyBpdCBpcyBh
IG1hbmRhdG9yeSByZXN0cmljdGlvbiBmb3IgWGVuIHRvb2xzIG5vdCB0byBzZXQgaXQgZm9y
IG5vZGVzDQp0aGUgZ3Vlc3QgaXMgb3duaW5nLg0KDQo+IA0KPiBSZXZpZXdlZC1ieTogSmFz
b24gQW5kcnl1ayA8amFzb24uYW5kcnl1a0BhbWQuY29tPg0KDQpUaGFua3MsDQoNCg0KSnVl
cmdlbg0K
--------------5YUj0EbTPBHAtlQncae2B0OV
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-----

--------------5YUj0EbTPBHAtlQncae2B0OV--

--------------qUcR0Z8SQzp2enVRLCA2AQA0--

--------------VZVPZuRWvvMMi3ADBV5BO30W
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/Ey8FAmnwuKcFAwAAAAAACgkQsN6d1ii/Ey9h
8Af/aiTLS2Y7QTazYSFFe4mns+KVWf24wl4mi2eoO59pnep9ezd449/3FqKtWO9BXn4pq/Tu1W2n
cs+ORkKy+e5Bhz+7u7rwMTBOfcAsRg7XjWtthYyDw/iPB5FUz21Waxqo3sSf2tR5G35Ar68Bze9a
lg+76pveBBxZRTgpIqnr62gS85w3V4q/IPvMcEXgMIgOrpzw5iPzgUUSuxJmG8XGo6Pxmmy5LpUV
KRMiDElGEpbXCzcG+e0tqRz+MXNNlSOyuZ79BFrQ3zAGBEdx5PHrgRDlJqaHN9w44UZxXMapUxKa
xTVQatCcIxxTlmlRcVQZ6S1tdeJ7UpdvG0PCDVGIAA==
=lF/7
-----END PGP SIGNATURE-----

--------------VZVPZuRWvvMMi3ADBV5BO30W--


From xen-devel-bounces@lists.xenproject.org Tue Apr 28 13:40:47 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 28 Apr 2026 13:40:47 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1296253.1572664 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wHigA-0002et-1T; Tue, 28 Apr 2026 13:40:46 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1296253.1572664; Tue, 28 Apr 2026 13:40: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 1wHig9-0002em-Ud; Tue, 28 Apr 2026 13:40:45 +0000
Received: by outflank-mailman (input) for mailman id 1296253;
 Tue, 28 Apr 2026 13:40:44 +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 1wHig8-0002eR-6y
 for xen-devel@lists.xenproject.org; Tue, 28 Apr 2026 13:40:44 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wHig7-0029hq-FS
 for xen-devel@lists.xenproject.org; Tue, 28 Apr 2026 15:40:43 +0200
Received: from [10.42.69.12] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <jgross@suse.com>)
 id 69f0b8da-e002-0a2a0a5209dd-0a2a450ca2aa-4
 for <xen-devel@lists.xenproject.org>; Tue, 28 Apr 2026 15:40:43 +0200
Received: from [209.85.218.54] (helo=mail-ej1-f54.google.com)
 by tlsNG-d25034.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.1)
 (envelope-from <jgross@suse.com>)
 id 69f0b8db-62f1-0a2a450c0019-d155da36f163-3
 for <xen-devel@lists.xenproject.org>; Tue, 28 Apr 2026 15:40:43 +0200
Received: by mail-ej1-f54.google.com with SMTP id
 a640c23a62f3a-baebe98afa0so544473466b.3
 for <xen-devel@lists.xenproject.org>; Tue, 28 Apr 2026 06:40:43 -0700 (PDT)
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
 a640c23a62f3a-bb80902237csm107953566b.24.2026.04.28.06.40.38
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Tue, 28 Apr 2026 06:40:38 -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=google header.d=suse.com header.i="@suse.com" header.h="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=1777383643; x=1777988443; darn=lists.xenproject.org;
        h=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;
        bh=luRDwW2Zwb/Bu53pmvZgCW0/AZzttxtReBGHLPDEqOI=;
        b=ZiNm+stoqZDzBgp+GVEUSOzCUjWs/hu2KYsaDqH6CeDE9CZjk65zA4prbK9W0bOg7Z
         Dk5VlTiaRSKe7kcPPMI4UZI8I2abwFSFJnpGd59RZxybZJ9gU/Pbzj2Ag0wX0L0m6paI
         vvlU22or0q5IyEs20K1r0EdRSc7lJM20w2PZFJ1/X6MNdMeuObM/PFwp4H6+x+YE4dUU
         toyD0rNxFiVjs5pW0DWwV3Rr+5jl61mRTykdse1hbt6v5NLdpmIWed3TnpMTFRXUUXYD
         vmGyyEGiYMJTaMTr409qaEPk1G5Ufv8py8CvEezs95JAuP2b4YjSPQ05Ky0ljRUz3sL7
         x+sg==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20251104; t=1777383643; x=1777988443;
        h=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;
        bh=luRDwW2Zwb/Bu53pmvZgCW0/AZzttxtReBGHLPDEqOI=;
        b=lL2gF83UMOgn0KgCA+NFObTDk4uklpgjA3jLrgSkq8h44Hn5uOqaAPwnAEPnTEt9F5
         A5owVbfgy4vOZitPHG0Y+hlezKPwacbCAoKQNJYhG6RHmUKHVOg/Q80szgdKwxIpQRHL
         E4KAMQDSgmEULhj/dE/dd95wVaMbJwIhIn0DMxPW4gfKLr9Zw0hV00uilZ4YSZ7Pq3WJ
         O7oFLDiN/8EbjgK+1GQiiLT6/UeM5Iqo9d6L34m14W+/IwTgnEIHEiUQnjcPUfyWVXk4
         9orreY6Xj0xURkWJFqbS9ygSWy0j5tkd8nrTtsGQQstmy4mBnAi7NOn6CAx5lP6Ytyt4
         H2rA==
X-Forwarded-Encrypted: i=1; AFNElJ/BBdrDcDgsHQGoqoE3qN1JJwIlOCy/G5Rst0E4at8Qam32HkVBjFuNvF0fTnwvHHbN5QPCnrfd0zY=@lists.xenproject.org
X-Gm-Message-State: AOJu0YwF9Qm+gvywAe0VuwGAPH+U+BHHFuN5HfhAI1YyZcouTgd9p6Rz
	KGTyKq2t+rZYwsQidWUOW6VK31HeKtyCVfkTdD+KnWcqlYVslBwpCiDoySeMXfDSW4uEz4oHE0F
	bVP3mctk=
X-Gm-Gg: AeBDietS7V3wco3wzWSvqVm3b30Ezzz61X39aGI/fkA6WZSf1NPFWBdcAdw0QEzxOEb
	/k8Ix35Uua+Nk6ysj+eLYWjkKoPnOBmEl3Cga2EHr9N8f+Id39JhopavcfCX/KBSv3n+nHD72kz
	fXMQx+1XOyaoK/dd6zVmTeFAKq9HO6h0BOJysYWom4Ua4q1qqNcgBmOO5yuwDlM3mpJ/w97OUZw
	TE7UpiLCKC8o8OB+mxq8Go6UTRTwLYlaKgz0b3Wf3Os6cGMxFQpQOzfmrwWVT3A9CnEMHvwNXCT
	kefIX0OJ93U/kpQ4OkVfZFn9MpYNAIv1lw8eJKPTen0NIB/e6jh+hlV3J7584ZJBB174A6aD4r2
	5zKPzHZyLTYscPzUhen8/jjtUMA8IhK1kfgFxrqn8XmoUCuGb/RzXAatYqp1EtaMkSlUzc3UbkC
	7oMi53lGYYsi5EEOG/q3lTAsawCtKMkH7QnDCO1drVQvXxwOgTOtSTqG3ajj+XEyahVPJeB3sOv
	rvzFbMt8fbFjnGFRBl7lBfgjlRtcaAv6LunG5Wwy0bZn+i0n3TDVOOX8onxrUIG
X-Received: by 2002:a17:906:6a1e:b0:bb6:4c2f:92d1 with SMTP id a640c23a62f3a-bb804834131mr198160666b.40.1777383639151;
        Tue, 28 Apr 2026 06:40:39 -0700 (PDT)
Message-ID: <a42d9ca5-9a6d-4e73-b771-6fd5a6267529@suse.com>
Date: Tue, 28 Apr 2026 15:40:38 +0200
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH 4/4] tools/xenstored: remove permissions related to dead
 domain
To: Jason Andryuk <jason.andryuk@amd.com>, xen-devel@lists.xenproject.org
Cc: dmukhin@ford.com, Julien Grall <julien@xen.org>,
 Anthony PERARD <anthony.perard@vates.tech>
References: <20260423080840.530547-1-jgross@suse.com>
 <20260423080840.530547-5-jgross@suse.com>
 <9624178e-7596-4395-adca-7cedc58aafb9@amd.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: <9624178e-7596-4395-adca-7cedc58aafb9@amd.com>
Content-Type: multipart/signed; micalg=pgp-sha256;
 protocol="application/pgp-signature";
 boundary="------------o3th2mmBF3o0jHFKSsKL0dsb"
X-purgate-ID: tlsNG-d25034/1777383643-F600DCF5-97D3AD07/0/0
X-purgate-type: clean
X-purgate-size: 7417

This is an OpenPGP/MIME signed message (RFC 4880 and 3156)
--------------o3th2mmBF3o0jHFKSsKL0dsb
Content-Type: multipart/mixed; boundary="------------R68zS0tOhHWv5jKo8JTl5mSa";
 protected-headers="v1"
From: =?UTF-8?B?SsO8cmdlbiBHcm/Dnw==?= <jgross@suse.com>
To: Jason Andryuk <jason.andryuk@amd.com>, xen-devel@lists.xenproject.org
Cc: dmukhin@ford.com, Julien Grall <julien@xen.org>,
 Anthony PERARD <anthony.perard@vates.tech>
Message-ID: <a42d9ca5-9a6d-4e73-b771-6fd5a6267529@suse.com>
Subject: Re: [PATCH 4/4] tools/xenstored: remove permissions related to dead
 domain
References: <20260423080840.530547-1-jgross@suse.com>
 <20260423080840.530547-5-jgross@suse.com>
 <9624178e-7596-4395-adca-7cedc58aafb9@amd.com>
In-Reply-To: <9624178e-7596-4395-adca-7cedc58aafb9@amd.com>

--------------R68zS0tOhHWv5jKo8JTl5mSa
Content-Type: multipart/mixed; boundary="------------0QiMXP0u0Wz6SCifY0nBIxoz"

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

T24gMjguMDQuMjYgMDA6MTQsIEphc29uIEFuZHJ5dWsgd3JvdGU6DQo+IE9uIDIwMjYtMDQt
MjMgMDQ6MDgsIEp1ZXJnZW4gR3Jvc3Mgd3JvdGU6DQo+PiBXaXQgdW5wcml2aWxlZ2VkIGRv
bWFpbnMgbm93IGNhcGFibGUgdG8gdXNlIHRoZSBAcmVsZWFzZURvbWFpbiB3YXRjaCwNCj4g
DQo+IHMvV2l0L1dpdGgvDQo+IA0KPj4gdGhlcmUgaXMgbm8gcmVhc29uIG5vdCB0byByZW1v
dmUgYW55IG5vZGUgcGVybWlzc2lvbnMgd2hpY2ggcmVsYXRlIHRvDQo+PiBhIGRvbWFpbiB3
aGljaCBoYXMgYmVlbiByZW1vdmVkLg0KPj4NCj4+IFRoaXMgcmVzb2x2ZXMgYSBjb21wbGV4
IHNjZW5hcmlvIHdoZXJlIGEgbmV3IGRvbWFpbiBjb3VsZCBpbmhlcml0IHRoZQ0KPj4gcGVy
bWlzc2lvbnMgb2YgYW4gb2xkIG9uZSB3aXRoIHRoZSBzYW1lIGRvbWlkLg0KPj4NCj4+IFNp
Z25lZC1vZmYtYnk6IEp1ZXJnZW4gR3Jvc3MgPGpncm9zc0BzdXNlLmNvbT4NCj4gDQo+PiAt
wqDCoMKgIHJldHVybiBkb21haW4tPmFjY192YWxbQUNDX05PREVTXSA/IHJldCA6IFdBTEtf
VFJFRV9TVUNDRVNTX1NUT1A7DQo+PiArwqDCoMKgIGlmIChub2RlLT5wZXJtc1swXS5pZCA9
PSBkb21haW4tPmRvbWlkKSB7DQo+PiArwqDCoMKgwqDCoMKgwqAgZG9tYWluX25iZW50cnlf
ZGVjKE5VTEwsIGRvbWFpbi0+ZG9taWQpOw0KPj4gK8KgwqDCoMKgwqDCoMKgIG5vZGUtPnBl
cm1zWzBdLmlkID0gcHJpdl9kb21pZDsNCj4+ICvCoMKgwqDCoMKgwqDCoCBub2RlLT5hY2Mu
bWVtb3J5ID0gMDsNCj4+ICvCoMKgwqDCoMKgwqDCoCBkb21haW5fbmJlbnRyeV9pbmMoTlVM
TCwgcHJpdl9kb21pZCk7DQo+PiArwqDCoMKgwqDCoMKgwqAgdHJhY2UoIm1vdmluZyBvcnBo
YW5lZCBub2RlICVzIHRvIGRvbTBcbiIsIG5vZGUtPm5hbWUpOw0KPiANCj4gU2luY2UgeW91
IGFyZSB0b3VjaGluZyB0aGlzLCBtYXliZSBzL2RvbTAvZG9tJXUvIGFuZCBwcml2X2RvbWlk
Pw0KDQpHb29kIGlkZWEuDQoNCj4gDQo+IFJldmlld2VkLWJ5OiBKYXNvbiBBbmRyeXVrIDxq
YXNvbi5hbmRyeXVrQGFtZC5jb20+DQoNClRoYW5rcywNCg0KDQpKdWVyZ2VuDQo=
--------------0QiMXP0u0Wz6SCifY0nBIxoz
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-----

--------------0QiMXP0u0Wz6SCifY0nBIxoz--

--------------R68zS0tOhHWv5jKo8JTl5mSa--

--------------o3th2mmBF3o0jHFKSsKL0dsb
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/Ey8FAmnwuNYFAwAAAAAACgkQsN6d1ii/Ey9W
hQf/dhEZMQin+AdYKn6jDrtmdjJHh34s+rn3pgDsv/WRhJAIIGvnQqegZHPmjDYxLE1owPdHo6ty
7L7ju9ZoaLaqXkJnUKB4l0ltlbfVwgdRQrSVYyBXE3YikTXpQpDGKOB4eLsvSdliADJnVPzbiLuV
kpPGAshlM7mcGcBQMQI4dN4mDZnko3kZkljCxHmpaeggk8Txq/BrbU3/J+kIeJ6lf9NLLwOJEQaJ
sQck+M7I7KjxX4Pd98DY5qdBU1GV+MLzUnApOiPEkVeOyCftzzTrFizaugz8EzwYdrVfrZounbIa
nBcP6q+sHqlOcsEtEDfrpWj8BIo4+pQ3ZCrq9GAdeQ==
=mXDK
-----END PGP SIGNATURE-----

--------------o3th2mmBF3o0jHFKSsKL0dsb--


From xen-devel-bounces@lists.xenproject.org Tue Apr 28 14:00:14 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 28 Apr 2026 14:00:14 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1296275.1572697 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wHiyr-0006dS-Tw; Tue, 28 Apr 2026 14:00:05 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1296275.1572697; Tue, 28 Apr 2026 14:00: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 1wHiyr-0006cw-QW; Tue, 28 Apr 2026 14:00:05 +0000
Received: by outflank-mailman (input) for mailman id 1296275;
 Tue, 28 Apr 2026 14:00:05 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <roger.pau@citrix.com>) id 1wHiyr-0006UO-3F
 for xen-devel@lists.xenproject.org; Tue, 28 Apr 2026 14:00:05 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wHiyq-002Ens-BI
 for xen-devel@lists.xenproject.org; Tue, 28 Apr 2026 16:00:04 +0200
Received: from [10.42.69.4] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <roger.pau@citrix.com>)
 id 69f0bd63-5cb7-0a2a0a5109dd-0a2a4504b86a-8
 for <xen-devel@lists.xenproject.org>; Tue, 28 Apr 2026 16:00:04 +0200
Received: from [40.107.208.30]
 (helo=PH0PR06CU001.outbound.protection.outlook.com)
 by tlsNG-ebf023.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.1)
 (envelope-from <roger.pau@citrix.com>)
 id 69f0bd62-1dec-0a2a45040019-286bd01e296c-3
 for <xen-devel@lists.xenproject.org>; Tue, 28 Apr 2026 16:00:03 +0200
Received: from CH7PR03MB7860.namprd03.prod.outlook.com (2603:10b6:610:24e::14)
 by DM6PR03MB5180.namprd03.prod.outlook.com (2603:10b6:5:1::10) with
 Microsoft
 SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id
 15.20.9846.16; Tue, 28 Apr 2026 14:00:00 +0000
Received: from CH7PR03MB7860.namprd03.prod.outlook.com
 ([fe80::f5ba:35df:1c9f:b343]) by CH7PR03MB7860.namprd03.prod.outlook.com
 ([fe80::f5ba:35df:1c9f:b343%4]) with mapi id 15.20.9846.025; Tue, 28 Apr 2026
 14:00: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=Ip3vmUL41EVVNaGVd+4pDOFpjV/Y7UnIPClLwJgMwjlT1/DU+Xh1mEPbJL/DWhOtSPXAgw4o2V/bgI2NjmowU8ZsSKtRYVjB7rbE+ElswyxC1lV+GzuK/gROEe7xgykM/5pkOCs7LJhK83D3H4nCxCAy/U3934lkw8AJnUbK6lD3ffPzrVcZgZnW2pvrNY/Z1+PpulXC2UKERyXDFN76YyqFVtvLTAvyfM4l3F7NwummgXg+VrUpEiVemFiOeuAgJE1u5SXX0tWBEDHcesTb9lkyh2yQj5Z9lqZt9aNANYjEXh5AWsZd2/QKAaaZFo3XmUmzyuBTtkexw5WTEfkA3A==
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com;
 s=arcselector10001;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1;
 bh=yy23ZR/MjJDF6E8+0IWgqjyXXvxMd4ce0oxSHXlLcsU=;
 b=I5jCrKV5wBSyvnv5ki3Qn1nV+0tNZXN3I8xhxeBKUDr4/iHIYQzw8M4a8y8MmPzgIQx75kubJVYbYeVE38ssucUklKcUOBvfcs/G48AHn8keB4TY/xOFr9WyY8O0mx5OL15qcWr1rWn3SN8FuwAiIRj0Cht0fPBCrpJiF11EQ0d6ysrAYucT0qfDeZutq+rB/7e/Hx6fyry8ek1ayoD5Fx+7OL2jkRN4SHorDKUg1+KLWrSnIZEwBekq/oB34BspuTr+Z26UaLg2MOpdA9KtKZkwxrPE8B8zcSfJSmyHfClksooEWTeqe9T+77bJfDvZ8LHDAkBclkEQ+DDyGUb/WQ==
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=yy23ZR/MjJDF6E8+0IWgqjyXXvxMd4ce0oxSHXlLcsU=;
 b=W6fY7KPSvq9foEaC5JsE0+Kb3cAZDJmNXThl6O+K+5xm2CEvlDzr54Jd7yRITtegvzW3c5la8nBjBw8kzXiGSmkIKoV21xHeg5eKmj3FwWUPijUE1BfVek+SdCDJRsFWkpz0BgCobqvzIk0g+vzZUEPDEyrje2P1tKzITbrEjOg=
Authentication-Results: dkim=none (message not signed)
 header.d=none;dmarc=none action=none header.from=citrix.com;
Date: Tue, 28 Apr 2026 15:59:56 +0200
From: Roger Pau =?utf-8?B?TW9ubsOp?= <roger.pau@citrix.com>
To: Thierry Escande <thierry.escande@vates.tech>
Cc: xen-devel@lists.xenproject.org, Jan Beulich <jbeulich@suse.com>,
	Andrew Cooper <andrew.cooper3@citrix.com>,
	Anthony PERARD <anthony.perard@vates.tech>,
	Michal Orzel <michal.orzel@amd.com>, Julien Grall <julien@xen.org>,
	Stefano Stabellini <sstabellini@kernel.org>
Subject: Re: [PATCH 09/17] xev/hvm: Add HVMOP_get|set_ecam_space hypercalls
Message-ID: <afC9XAtGOkug0qFB@macbook.local>
References: <20260313163455.790692-1-thierry.escande@vates.tech>
 <20260313163455.790692-10-thierry.escande@vates.tech>
Content-Type: text/plain; charset=utf-8
Content-Disposition: inline
In-Reply-To: <20260313163455.790692-10-thierry.escande@vates.tech>
X-ClientProxiedBy: MA3P292CA0018.ESPP292.PROD.OUTLOOK.COM
 (2603:10a6:250:47::19) To CH7PR03MB7860.namprd03.prod.outlook.com
 (2603:10b6:610:24e::14)
MIME-Version: 1.0
X-MS-PublicTrafficType: Email
X-MS-TrafficTypeDiagnostic: CH7PR03MB7860:EE_|DM6PR03MB5180:EE_
X-MS-Office365-Filtering-Correlation-Id: 740c588c-b6ed-4ddd-b1f8-08dea52e7002
X-MS-Exchange-SenderADCheck: 1
X-MS-Exchange-AntiSpam-Relay: 0
X-Microsoft-Antispam:
	BCL:0;ARA:13230040|1800799024|366016|376014|22082099003|18002099003|56012099003;
X-Microsoft-Antispam-Message-Info:
	blnrrtcf+qovnNwgiN6KPPUKVl5ydFpUtksCyVjGrF/aCm9rkhjZgviwgTuV7uW1egXlPTEoTMxYnWtbFLB5r/CXmfydcYUpQJWtPKttkAbZfZWCZ4AU+2yVJkq1aNOEV/CDnZMwWqyL4HjcYNAVKMmWaHP0FHyoS/XJY2R/1Tm6iak2xJvAossErOPiPJSJJJsHWDJQQG12myarHM5eCK3MGRyhOVMpvWIAQRe0hq3uls/VpeQA+cyJOtDNzRWKVau5htgx6LCXH/YFV7EczsaBrCw5sK94ZCSiyxHlOefRzkLgaNea3NyDSdwndKmQna2CZxm6ek41o8NivUMfO9oURWOpw7WIN9kGiDAuZYSPxwTSHmfzgCVm4STMFJ9alfgMDeg2FYwZSTh5bE2tRwr5LexLURG8Hq9Ij8lQDGy+rUVp1ghiT+Xt0IQ87LLfjBgRHLDkDXEryitHGGiDpfQi+fmI6MOajmfOxf/DMxAHnW28jzqqmI7dWCGGhMXF2mG+xkyZLwN857jMKeDG7vOdsPpLhXo+LjzutzGGipihK9G0nWrW1aPZiNshf7fiYq4IUyJSjGfDruAsuSb/33uDKJAvDmOChG/wjmIRHtTCVAPqpL0UuH5geu7sArQ92q8o9yNB8HnnOH6BCM8BbiKy9hhbzSfTA433xWfTFqBmnB/P6pBokEhiiafS2gTLxolCcYYhkBPBc0xKxeYoWBK9fWjTNme0o5OjKrMvjts=
X-Forefront-Antispam-Report:
	CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:CH7PR03MB7860.namprd03.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(1800799024)(366016)(376014)(22082099003)(18002099003)(56012099003);DIR:OUT;SFP:1101;
X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1
X-MS-Exchange-AntiSpam-MessageData-0:
	=?utf-8?B?N2g4bjA2TS9ldWxTSnI1TlNjdllieEFwYlFsODB6ZFhnNGNJL3dJUkYvaXVl?=
 =?utf-8?B?NlE3ME9iTWdGZ3FVUTRMczNkUkRHenZadTZ3V0hCd0d6b0owSkxNbkkyYTZH?=
 =?utf-8?B?QmFxdGlSMWtTa2NFWEtoNm9DM3RCVFEzMTFqNFVyL2Y4Vk8rMjQ0YzNVNXBK?=
 =?utf-8?B?SnVFbWthRFR1ZzlSNVRPSTRPMEpNaHk1QlBIWW83N2tENWs3RXlTdUNhQ2lL?=
 =?utf-8?B?Y2xZQnBMQWU1TmREWW9Sb2hWZTJWRmNMY0oycGRqY2VoWnVIU050OGtSQlBi?=
 =?utf-8?B?bXRkT1lTczA4dUJPTHZCeFA2V1E4VDh5bC85RVZvMVpiY04rTEJXNFU2Qkxa?=
 =?utf-8?B?Vng0TVo1eFJNWWVaMXo2bW5pQUNUTjN2VkNBbzA1RFIvQWJxdEpxL3ErQll6?=
 =?utf-8?B?dE4yV3owaGZCaldqSGdBRWZpSmZhV2FUR2RJRFlCNFRSQmRGWlp5KzMxMnVt?=
 =?utf-8?B?aHU4bEpmRXM2WFN0ZDR2ZVBINGQvSzZ5bE1OeG9kWW03Wm84UFk0R3FQRGFF?=
 =?utf-8?B?T1F4OWZ2OTRJN0pFVC81VWhFZ3hkcDBxOEtJQ0VoWnFuM0EvcjRBN2FzRUhw?=
 =?utf-8?B?ZEhlbXJ3OXQ3Q203ZGxmT1RxZ2VsK2xMcnRCajZveTZOenpuRVAyc1F1R1ZN?=
 =?utf-8?B?anpWdXFPTE1ZeDhha1crbGVZM1V6eWUzMVVhTTVHQ25nUTZ4dEFwaFZXNjJM?=
 =?utf-8?B?THA3L0FtalhZNlRIRmZtVzZuSTRHQThaZTFZTmpuWm9LY3BVTElvOWtsSG9U?=
 =?utf-8?B?RTFVQ0pWQzBibEFXZW5rS1pvWGJ0NWx2UzFHRjVRYjNoTUhZMG5vSm1aRFRq?=
 =?utf-8?B?OFJjNXFNbHhzNlduV0YyaTJCTXd4Uyt5U3M3SnlpeUIyYVVsdG5XeDVOZUJr?=
 =?utf-8?B?NW1xMlc3TFpaYjEvU3BGS2o4cWFnWlhxb05UcUgvN25xejNodmJLZ1Z2a2ov?=
 =?utf-8?B?eE1JeWVweXNVdEtWZWRjZmN3ckhMa1ZpWDJ4aHNDMmc4aWFlNmhMUTNSRUxK?=
 =?utf-8?B?K0hqOTBJQ0lUQXdFRzZoMlNROUlJZmVHaCsyWXNjSTkyMzkzOTdsNm51RkRn?=
 =?utf-8?B?UWVDK0dFSk1aNEJNNE83SDFuR3hXK1p2N0pnRTVKL3NzcnlHcFJCcEE5UUFm?=
 =?utf-8?B?aEFCNTNHazJsaVZZMThTR2hlOHYwc1BwNE1zajZhaUdNbHRsRE5lVyt2SDhY?=
 =?utf-8?B?YXdTS2UwRUdJN3hYSUJIakNORk9ZeDhiZFFDZC9OU1Fubmd5REhPcmNHNWFp?=
 =?utf-8?B?OEtzTkFuZ3RMMDNlZlUxRytlL1Bvci9IVkkrV21pSFFiemlIMnpPNXBMYTRD?=
 =?utf-8?B?Qy9OTW4rZlVvakRCTEtoS29MbFA3dTU4NzVsY1NLQ3dSQTZmbk9DUWJaeVJq?=
 =?utf-8?B?MWNmR1NjMTVOUDRQOXFYMFFPTGQwV0pUM3ZwanFlZkczWWZWc21XcjVXNHZh?=
 =?utf-8?B?cytBMjhhcUgrQzBpSzJHdWpQY2VYTVFBcURoYldhUXJDYWI4MEI1aHdxRGxN?=
 =?utf-8?B?YTA5VmZlVFFjeVNHTTJPUWxBcVJWSStxbnAxRzhIMGY3RndZR2cycjB1V3lx?=
 =?utf-8?B?aGVrbnltYlZkbHJqUWx1a1hIUENWVzBLZmd2enByZDB0K3lELzVTZGp6cHhT?=
 =?utf-8?B?VE1aWHNMVzhDd1ZUK21vK2lUdEdveWFwTnpzN0gzRDFOdHhjOW90TCs4ZGFO?=
 =?utf-8?B?L2pmNzR0dGZ0UzZiZEc1YkpTbTQwN1o1QzNidW5UR0xVRWtSSk1CQ3lLbFVE?=
 =?utf-8?B?TEo3Z2xEWUU2SDZ6K2VlWS9iMUtWZnpXREJleit0ZTVhRXdwRkRQQi84cmsx?=
 =?utf-8?B?WjAyMVlSNm9NRnkxdjJpWGlHS3hubml5MzJvcmhCdnVFYUY4L1MwWEJxc3lF?=
 =?utf-8?B?eHpRbEt6Qlg0N2MwTEdScGRWSUhETDVrdkYrcW05NGltU0NkY3B6MEZHT1ll?=
 =?utf-8?B?YXY0NERzT0liS0NNOFhYY3h2Nzh3SGVOZ2E3WGhvYmlxYkdTMm5MUmhyclJG?=
 =?utf-8?B?RDhRUGkwaUR3Ujl1aEEvY2FVMVFJcUNtYU5acTIxa21tLzEzTmsrQWp1bktT?=
 =?utf-8?B?RGt1SHBtZE1WZTFTcHZnQXNxN0liL1lQU21mRXJ3bGVRWHU4UjBYR1J6YzlW?=
 =?utf-8?B?OHFPTC9JbHNYdk1ieE0xVzc0UVhsZDRoOWpnNldnUzQwa0ROeUJTY2FGdStn?=
 =?utf-8?B?RHMxRERkaEthaFhLditNb2huQk1GTXBXYmlVNU9Fdm84VUJFdENjTDBnVDF4?=
 =?utf-8?B?YWxpMzA1dG8xS1owc3o0WkoxQ3ZJQTI5VG1CaERWNjRuN2czRlF1UHAvdVRE?=
 =?utf-8?B?VEpycVVXbGJ4eEkzeEhxZHI0ejk1TUpUVzVvbGtzVDJyRDdjSmdJUT09?=
X-OriginatorOrg: citrix.com
X-MS-Exchange-CrossTenant-Network-Message-Id: 740c588c-b6ed-4ddd-b1f8-08dea52e7002
X-MS-Exchange-CrossTenant-AuthSource: CH7PR03MB7860.namprd03.prod.outlook.com
X-MS-Exchange-CrossTenant-AuthAs: Internal
X-MS-Exchange-CrossTenant-OriginalArrivalTime: 28 Apr 2026 14:00:00.2611
 (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: NhXgSLzldpQNniTQU5vMHWObnjC/mqri65MD+UHh/+rwXD041vAPL1JY7yTTqAhsB6fFftNaDU7Oc5K0RCp+Zg==
X-MS-Exchange-Transport-CrossTenantHeadersStamped: DM6PR03MB5180
X-purgate-ID: tlsNG-ebf023/1777384804-300413FF-6D9BC56D/0/0
X-purgate-type: clean
X-purgate-size: 5314

On Fri, Mar 13, 2026 at 04:35:03PM +0000, Thierry Escande wrote:
> This patch adds 2 HVMOP hypercalls, HVMOP_get|set_ecam_space, used to
> set and get the base address and size of the PCIe ECAM space as
> configured by hvmloader.
> 
> Signed-off-by: Thierry Escande <thierry.escande@vates.tech>
> ---
>  xen/arch/x86/hvm/hvm.c            | 52 +++++++++++++++++++++++++++++++
>  xen/arch/x86/include/asm/domain.h |  4 +++
>  xen/include/public/hvm/hvm_op.h   | 11 +++++++
>  3 files changed, 67 insertions(+)
> 
> diff --git a/xen/arch/x86/hvm/hvm.c b/xen/arch/x86/hvm/hvm.c
> index 4d37a93c57..a46dfa955d 100644
> --- a/xen/arch/x86/hvm/hvm.c
> +++ b/xen/arch/x86/hvm/hvm.c
> @@ -5195,6 +5195,58 @@ long do_hvm_op(unsigned long op, XEN_GUEST_HANDLE_PARAM(void) arg)
>          rc = current->hcall_compat ? compat_altp2m_op(arg) : do_altp2m_op(arg);
>          break;
>  
> +    case HVMOP_set_ecam_space: {
> +        xen_hvm_ecam_space_t ecam;
> +        struct domain *d;
> +
> +        if ( copy_from_guest( &ecam, guest_handle_cast(arg, xen_hvm_ecam_space_t), 1 ) )
                                ^ extra space, here and at the
                                  closing parenthesis.

Line length is also past the 80 character limit, same below in
HVMOP_get_ecam_space.

> +            return -EFAULT;

This operation (and the matching get variant) needs an XSM check.

> +
> +        d = rcu_lock_domain_by_any_id(ecam.domid);
> +        if ( d == NULL )
> +            return -ESRCH;
> +
> +        if ( d->arch.ecam_addr ) {

Coding style, opening braces should be on a new line.

> +            rcu_unlock_domain(d);
> +            return -EFAULT;

This would better return -EBUSY

> +        }

You also need to check the padding fields are 0.

> +
> +        if ( (ecam.size >> 28) || (!ecam.addr) ) {
                                     ^ the parenthesis here are
                                     unneeded.

> +            rcu_unlock_domain(d);
> +            return -EINVAL;
> +        }
> +
> +        d->arch.ecam_addr = ecam.addr;
> +        d->arch.ecam_size = ecam.size;

I'm a bit worried about a domain being able to set it's own ECAM hole,
assessing all the side-effects of this might be complex.

Won't the code here better check the region passed in the hypercall is
indeed not mapped in the p2m, so that trapping of ECAM accesses works
as expected?

Also, how does the ECAM hole get setup on native?  I assume there are
some magic registers in the PCI config space of a platform device that
the firmware uses to position the ECAM space?

Are those trapped by QEMU, in which case won't it be better to do it
the native way (iow: with the config space registers), and let QEMU
forward it to Xen?  It would then be QEMU the one to call
HVMOP_set_ecam_space (or whatever hypercall we end up using).

> +
> +        rcu_unlock_domain(d);
> +        break;
> +    }
> +
> +    case HVMOP_get_ecam_space: {
> +        xen_hvm_ecam_space_t ecam;
> +        struct domain *d;
> +
> +        if ( copy_from_guest( &ecam, guest_handle_cast(arg, xen_hvm_ecam_space_t), 1 ) )
> +            return -EFAULT;
> +
> +        d = rcu_lock_domain_by_any_id(ecam.domid);
> +        if ( d == NULL )
> +            return -ESRCH;
> +
> +        if ( ! d->arch.ecam_addr || ! d->arch.ecam_size ) {
> +            rcu_unlock_domain(d);
> +            return -EINVAL;
> +        }
> +
> +        ecam.addr = d->arch.ecam_addr;
> +        ecam.size = d->arch.ecam_size;
> +        rc = __copy_to_guest(arg, &ecam, 1) ? -EFAULT : 0;
> +
> +        rcu_unlock_domain(d);
> +        break;
> +    }
> +
>      default:
>          rc = -ENOSYS;
>          break;
> diff --git a/xen/arch/x86/include/asm/domain.h b/xen/arch/x86/include/asm/domain.h
> index ad7f6adb2c..24ec33fc4d 100644
> --- a/xen/arch/x86/include/asm/domain.h
> +++ b/xen/arch/x86/include/asm/domain.h
> @@ -476,6 +476,10 @@ struct arch_domain
>  
>      /* Emulated devices enabled bitmap. */
>      uint32_t emulation_flags;
> +
> +    /* PCI ECAM space emulation */
> +    uint64_t ecam_addr;
> +    uint32_t ecam_size;

This fields would better be in hvm_domain struct, and there you
already have the mmcfg_regions list, which we should aim to use for
the q35 introduced ECAM region.

>  } __cacheline_aligned;
>  
>  #ifdef CONFIG_HVM
> diff --git a/xen/include/public/hvm/hvm_op.h b/xen/include/public/hvm/hvm_op.h
> index e22adf0319..c84febc37c 100644
> --- a/xen/include/public/hvm/hvm_op.h
> +++ b/xen/include/public/hvm/hvm_op.h
> @@ -166,6 +166,17 @@ struct xen_hvm_get_mem_type {
>  typedef struct xen_hvm_get_mem_type xen_hvm_get_mem_type_t;
>  DEFINE_XEN_GUEST_HANDLE(xen_hvm_get_mem_type_t);
>  
> +#define HVMOP_set_ecam_space    16
> +#define HVMOP_get_ecam_space    17
> +struct xen_hvm_ecam_space {
> +    domid_t  domid;
> +    uint16_t pad[3]; /* align next field on 8-byte boundary */
> +    uint64_t addr;
> +    uint32_t size;

There's also a trailing uint32_t padding here on 64bit builds I think?

FWIW, you could do:

    domid_t  domid;
    uint16_t pad;
    uint32_t size
    uint64_t addr;

As that would reduce the padding in the struct?

Thanks, Roger.


From xen-devel-bounces@lists.xenproject.org Tue Apr 28 14:01:35 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 28 Apr 2026 14:01:35 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1296284.1572706 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wHj0I-0007Dv-6g; Tue, 28 Apr 2026 14:01:34 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1296284.1572706; Tue, 28 Apr 2026 14:01: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 1wHj0I-0007Do-3i; Tue, 28 Apr 2026 14:01:34 +0000
Received: by outflank-mailman (input) for mailman id 1296284;
 Tue, 28 Apr 2026 14:01:33 +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.19dd4650f2c000f373@swg.vates.tech>)
 id 1wHj0G-0007Di-VX
 for xen-devel@lists.xenproject.org; Tue, 28 Apr 2026 14:01:33 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wHj0G-002FCk-BY
 for xen-devel@lists.xenproject.org; Tue, 28 Apr 2026 16:01:32 +0200
Received: from [10.42.69.3] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1) (envelope-from
 <prod-mta-13.8631fc262581453bbf619ec5b2062170.19dd4650f2c000f373@swg.vates.tech>)
 id 69f0bdac-2eae-0a2a0a5409dd-0a2a4503a360-40
 for <xen-devel@lists.xenproject.org>; Tue, 28 Apr 2026 16:01:32 +0200
Received: from [185.255.28.34] (helo=prod-mta-13.swg-srv.net)
 by tlsNG-33051d.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.1)
 (envelope-from
 <prod-mta-13.8631fc262581453bbf619ec5b2062170.19dd4650f2c000f373@swg.vates.tech>)
 id 69f0bdbc-672d-0a2a45030019-b9ff1c22ab5d-3
 for <xen-devel@lists.xenproject.org>; Tue, 28 Apr 2026 16:01:32 +0200
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
 19dd4650f2c000f373.007 for <xen-devel@lists.xenproject.org>
 (version=TLSv1.3 cipher=TLS_AES_256_GCM_SHA384);
 Tue, 28 Apr 2026 14:01:26 +0000
Received: from [192.168.1.18] (88-175-170-134.subs.proxad.net [88.175.170.134])
 (Authenticated sender: teddy.astie)
 by mail2.vates.fr (Postfix) with ESMTPSA id 9D0DE8632D;
 Tue, 28 Apr 2026 16:01:23 +0200 (CEST)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@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=Ge8VGVcz3F+F04cXtFUFi3xWtqCV+GSEWHSHeIeQDEE=;
 h=from:subject:date:message-id:to:cc:mime-version:content-type:in-reply-to:references:feedback-id;
 b=F26OBvrf1QCrdsqpkmys9Wi8JgadVxsUnLCbhFyaG18tWVEgPCm77yazQQVELQqJc3WCRD5Po
 8UWfZEs3G6fSTqeUMLOBfG0Qlgr2eL2Xkos2VNvZ782rKQumPa+CkBGsY/J9wpjjNSOBY378p41
 fenSHcv5DmpycH6mxuiPqM1nw9P4QDY/gXbiVdGlRnSL4nhJuorCQ6Yqa+hx6sUYzkn8nHEjUzv
 QGsb/dNJRZNEgAlPcyNlWwZdLrd1Tf/9Xj/Pa074tl6g0IGtVKb1ww1OFb+VpUnEBj2TTFSrplP
 c9yW0UNHr/6fsNs20R9vClM9xKCvdDwo+Bbp+IpwQipg==
X-Zone-Loop: 7498aa3db807c0daac240a4f993392f4fc55817a0e5d
x-campaign-type: default
x-transaction-id: 3894dfa1-d272-4ed6-bf22-966a174d2d94
x-swg-uid: 01-912ad003-8ff3-424c-a4a9-5df252209416
X-Mailer: Sweego
Message-ID:
 <1777384886.8631fc262581453bbf619ec5b2062170.19dd4650f2c000f373@vates.tech>
x-swg-bid: 1777384886.8631fc262581453bbf619ec5b2062170.19dd4650f2c000f373
Feedback-ID: default:8631fc262581453bbf619ec5b2062170:Sweego
x-campaign-id: default
x-client-id: 8631fc262581453bbf619ec5b2062170
X-Originating-IP: [37.26.189.201]
Date: Tue, 28 Apr 2026 16:01:23 +0200
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH v4 4/9] x86/passthrough: Extract PT_IRQ_TYPE_MSI body into
 pt_irq_bind_msi()
To: Julian Vetter <julian.vetter@vates.tech>, 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.pau@citrix.com>, Stefano Stabellini <sstabellini@kernel.org>,
 Bertrand Marquis <bertrand.marquis@arm.com>,
 Volodymyr Babchuk <Volodymyr_Babchuk@epam.com>
References: <20260427135406.1281424-1-julian.vetter@vates.tech>
 <1777298079.8631fc262581453bbf619ec5b2062170.19dcf3880b0000f373@vates.tech>
Content-Language: en-US
From: Teddy Astie <teddy.astie@vates.tech>
In-Reply-To: <1777298079.8631fc262581453bbf619ec5b2062170.19dcf3880b0000f373@vates.tech>
X-BM-Disclaimer: Yes
Content-Type: multipart/alternative; boundary="-=Part.b5.57efd0fc27062d4d.19dd465068f.43f3625d62435cc9=-"
X-Bm-Milter-Handled: 4ffbd6c1-ee69-4e1b-aabd-f977039bd3e2
X-Bm-Transport-Timestamp: 1777384883856
X-purgate-ID: tlsNG-33051d/1777384892-28975938-554CAABD/0/0
X-purgate-type: clean
X-purgate-size: 14899

---=Part.b5.57efd0fc27062d4d.19dd465068f.43f3625d62435cc9=-
Content-Type: text/plain; charset=utf-8
Content-Transfer-Encoding: quoted-printable

Le 27/04/2026 =C3=A0 15:57, Julian Vetter a =C3=A9crit=C2=A0:
> No functional change: move the PT_IRQ_TYPE_MSI case of pt_irq_create_bin=
d()
> into a new static helper pt_irq_bind_msi() taking the same gvec/gflags/g=
table
> parameters=2E Restructure pt_irq_create_bind() so the MSI case delegates=
 to the
> helper and pt_irq_dpci_setup() is called inside each case rather than sh=
ared=2E
>=20
> Signed-off-by: Julian Vetter <julian=2Evetter@vates=2Etech>
> ---
> Changes in v4:
> - New patch
> - Split out as a preparatory no-functional-change step so that the
>    interface change in patch 5 (switching pt_irq_bind_msi() from gvec +
>    gflags to raw MSI addr + data) shows as a clean diff against an
>    already-extracted helper, rather than being tangled with the 'case
>    PT_IRQ_TYPE_MSI' code
> ---
>   xen/drivers/passthrough/x86/hvm=2Ec | 255 ++++++++++++++++------------=
--
>   1 file changed, 140 insertions(+), 115 deletions(-)
>=20
> diff --git a/xen/drivers/passthrough/x86/hvm=2Ec b/xen/drivers/passthrou=
gh/x86/hvm=2Ec
> index 19463c3406=2E=2Eeff1e8a79e 100644
> --- a/xen/drivers/passthrough/x86/hvm=2Ec
> +++ b/xen/drivers/passthrough/x86/hvm=2Ec
> @@ -290,161 +290,186 @@ static int pt_irq_dpci_setup(struct domain *d, u=
nsigned int pirq,
>       } while ( true );
>   }
>  =20
> -int pt_irq_create_bind(
> -    struct domain *d, const struct xen_domctl_bind_pt_irq *pt_irq_bind)
> +static int pt_irq_bind_msi(struct domain *d, uint32_t machine_irq,
> +                            uint8_t gvec, uint32_t gflags, uint64_t gta=
ble,
> +                            bool unmasked)
>   {
>       struct hvm_irq_dpci *hvm_irq_dpci;
>       struct hvm_pirq_dpci *pirq_dpci;
>       struct pirq *info;
> -    int rc, pirq =3D pt_irq_bind->machine_irq;
> +    uint8_t dest, delivery_mode;
> +    bool dest_mode;
> +    int dest_vcpu_id, rc;
> +    const struct vcpu *vcpu;
>  =20
> -    if ( pirq < 0 || pirq >=3D d->nr_pirqs )
> +    if ( machine_irq >=3D (unsigned int)d->nr_pirqs )

is that (unsigned int) cast required ?

>           return -EINVAL;
>  =20
> -    rc =3D pt_irq_dpci_setup(d, pirq, &hvm_irq_dpci, &pirq_dpci, &info)=
;
> +    rc =3D pt_irq_dpci_setup(d, machine_irq, &hvm_irq_dpci, &pirq_dpci,=
 &info);
>       if ( rc )
>           return rc;
>  =20
> -    switch ( pt_irq_bind->irq_type )
> +    if ( !(pirq_dpci->flags & HVM_IRQ_DPCI_MAPPED) )
>       {
> -    case PT_IRQ_TYPE_MSI:
> -    {
> -        uint8_t dest, delivery_mode;
> -        bool dest_mode;
> -        int dest_vcpu_id;
> -        const struct vcpu *vcpu;
> -        uint32_t gflags =3D pt_irq_bind->u=2Emsi=2Egflags &
> -                          ~XEN_DOMCTL_VMSI_X86_UNMASKED;
> -
> -        if ( !(pirq_dpci->flags & HVM_IRQ_DPCI_MAPPED) )
> +        pirq_dpci->flags =3D HVM_IRQ_DPCI_MAPPED | HVM_IRQ_DPCI_MACH_MS=
I |
> +                           HVM_IRQ_DPCI_GUEST_MSI;
> +        pirq_dpci->gmsi=2Egvec =3D gvec;
> +        pirq_dpci->gmsi=2Egflags =3D gflags;
> +        /*
> +         * 'pt_irq_bind_msi' can be called after 'pt_irq_destroy_bind'=
=2E
> +         * The 'pirq_cleanup_check' which would free the structure is o=
nly
> +         * called if the event channel for the PIRQ is active=2E Howeve=
r
> +         * OS-es that use event channels usually bind PIRQs to eventds
> +         * and unbind them before calling 'pt_irq_destroy_bind' - with =
the
> +         * result that we re-use the 'dpci' structure=2E This can be
> +         * reproduced with unloading and loading the driver for a devic=
e=2E
> +         *
> +         * As such on every 'pt_irq_bind_msi' call we MUST set it=2E
> +         */
> +        pirq_dpci->dom =3D d;
> +        /* bind after hvm_irq_dpci is setup to avoid race with irq hand=
ler */
> +        rc =3D pirq_guest_bind(d->vcpu[0], info, 0);
> +        if ( rc =3D=3D 0 && gtable )
>           {
> -            pirq_dpci->flags =3D HVM_IRQ_DPCI_MAPPED | HVM_IRQ_DPCI_MAC=
H_MSI |
> -                               HVM_IRQ_DPCI_GUEST_MSI;
> -            pirq_dpci->gmsi=2Egvec =3D pt_irq_bind->u=2Emsi=2Egvec;
> -            pirq_dpci->gmsi=2Egflags =3D gflags;
> -            /*
> -             * 'pt_irq_create_bind' can be called after 'pt_irq_destroy=
_bind'=2E
> -             * The 'pirq_cleanup_check' which would free the structure =
is only
> -             * called if the event channel for the PIRQ is active=2E Ho=
wever
> -             * OS-es that use event channels usually bind PIRQs to even=
tds
> -             * and unbind them before calling 'pt_irq_destroy_bind' - w=
ith the
> -             * result that we re-use the 'dpci' structure=2E This can b=
e
> -             * reproduced with unloading and loading the driver for a d=
evice=2E
> -             *
> -             * As such on every 'pt_irq_create_bind' call we MUST set i=
t=2E
> -             */
> -            pirq_dpci->dom =3D d;
> -            /* bind after hvm_irq_dpci is setup to avoid race with irq =
handler*/
> -            rc =3D pirq_guest_bind(d->vcpu[0], info, 0);
> -            if ( rc =3D=3D 0 && pt_irq_bind->u=2Emsi=2Egtable )
> -            {
> -                rc =3D msixtbl_pt_register(d, info, pt_irq_bind->u=2Ems=
i=2Egtable);
> -                if ( unlikely(rc) )
> -                {
> -                    pirq_guest_unbind(d, info);
> -                    /*
> -                     * Between 'pirq_guest_bind' and before 'pirq_guest=
_unbind'
> -                     * an interrupt can be scheduled=2E No more of them=
 are going
> -                     * to be scheduled but we must deal with the one th=
at may be
> -                     * in the queue=2E
> -                     */
> -                    pt_pirq_softirq_reset(pirq_dpci);
> -                }
> -            }
> +            rc =3D msixtbl_pt_register(d, info, gtable);
>               if ( unlikely(rc) )
>               {
> -                pirq_dpci->gmsi=2Egflags =3D 0;
> -                pirq_dpci->gmsi=2Egvec =3D 0;
> -                pirq_dpci->dom =3D NULL;
> -                pirq_dpci->flags =3D 0;
> -                if ( !info->evtchn )
> -                    pirq_cleanup_check(info, d);
> -                write_unlock(&d->event_lock);
> -                return rc;
> +                pirq_guest_unbind(d, info);
> +                /*
> +                 * Between 'pirq_guest_bind' and before 'pirq_guest_unb=
ind'
> +                 * an interrupt can be scheduled=2E No more of them are=
 going
> +                 * to be scheduled but we must deal with the one that m=
ay be
> +                 * in the queue=2E
> +                 */
> +                pt_pirq_softirq_reset(pirq_dpci);
>               }
>           }
> -        else
> +        if ( unlikely(rc) )
>           {
> -            uint32_t mask =3D HVM_IRQ_DPCI_MACH_MSI | HVM_IRQ_DPCI_GUES=
T_MSI;
> -
> -            if ( (pirq_dpci->flags & mask) !=3D mask )
> -            {
> -                write_unlock(&d->event_lock);
> -                return -EBUSY;
> -            }
> -
> -            /* If pirq is already mapped as vmsi, update guest data/add=
r=2E */
> -            if ( pirq_dpci->gmsi=2Egvec !=3D pt_irq_bind->u=2Emsi=2Egve=
c ||
> -                 pirq_dpci->gmsi=2Egflags !=3D gflags )
> -            {
> -                /* Directly clear pending EOIs before enabling new MSI =
info=2E */
> -                pirq_guest_eoi(info);
> -
> -                pirq_dpci->gmsi=2Egvec =3D pt_irq_bind->u=2Emsi=2Egvec;
> -                pirq_dpci->gmsi=2Egflags =3D gflags;
> -            }
> +            pirq_dpci->gmsi=2Egflags =3D 0;
> +            pirq_dpci->gmsi=2Egvec =3D 0;
> +            pirq_dpci->dom =3D NULL;
> +            pirq_dpci->flags =3D 0;
> +            if ( !info->evtchn )
> +                pirq_cleanup_check(info, d);
> +            write_unlock(&d->event_lock);
> +            return rc;
>           }
> -        /* Calculate dest_vcpu_id for MSI-type pirq migration=2E */
> -        dest =3D MASK_EXTR(pirq_dpci->gmsi=2Egflags,
> -                         XEN_DOMCTL_VMSI_X86_DEST_ID_MASK);
> -        dest_mode =3D pirq_dpci->gmsi=2Egflags & XEN_DOMCTL_VMSI_X86_DM=
_MASK;
> -        delivery_mode =3D MASK_EXTR(pirq_dpci->gmsi=2Egflags,
> -                                  XEN_DOMCTL_VMSI_X86_DELIV_MASK);
> -
> -        dest_vcpu_id =3D hvm_girq_dest_2_vcpu_id(d, dest, dest_mode);
> -        pirq_dpci->gmsi=2Edest_vcpu_id =3D dest_vcpu_id;
> -        write_unlock(&d->event_lock);
> +    }
> +    else
> +    {
> +        uint32_t mask =3D HVM_IRQ_DPCI_MACH_MSI | HVM_IRQ_DPCI_GUEST_MS=
I;
>  =20
> -        pirq_dpci->gmsi=2Eposted =3D false;
> -        vcpu =3D (dest_vcpu_id >=3D 0) ? d->vcpu[dest_vcpu_id] : NULL;
> -        if ( iommu_intpost )
> +        if ( (pirq_dpci->flags & mask) !=3D mask )
>           {
> -            if ( delivery_mode =3D=3D dest_LowestPrio )
> -                vcpu =3D vector_hashing_dest(d, dest, dest_mode,
> -                                           pirq_dpci->gmsi=2Egvec);
> -            if ( vcpu )
> -                pirq_dpci->gmsi=2Eposted =3D true;
> +            write_unlock(&d->event_lock);
> +            return -EBUSY;
>           }
> -        if ( vcpu && is_iommu_enabled(d) )
> -            hvm_migrate_pirq(pirq_dpci, vcpu);
>  =20
> -        /* Use interrupt posting if it is supported=2E */
> -        if ( iommu_intpost )
> +        /* If pirq is already mapped as vmsi, update guest data/addr=2E=
 */
> +        if ( pirq_dpci->gmsi=2Egvec !=3D gvec || pirq_dpci->gmsi=2Egfla=
gs !=3D gflags )
>           {
> -            rc =3D hvm_pi_update_irte(vcpu, info, pirq_dpci->gmsi=2Egve=
c);
> +            /* Directly clear pending EOIs before enabling new MSI info=
=2E */
> +            pirq_guest_eoi(info);
>  =20
> -            if ( rc )
> -            {
> -                pt_irq_destroy_bind(d, pt_irq_bind);
> -                return rc;
> -            }
> +            pirq_dpci->gmsi=2Egvec =3D gvec;
> +            pirq_dpci->gmsi=2Egflags =3D gflags;
>           }
> +    }
> +    /* Calculate dest_vcpu_id for MSI-type pirq migration=2E */
> +    dest =3D MASK_EXTR(pirq_dpci->gmsi=2Egflags, XEN_DOMCTL_VMSI_X86_DE=
ST_ID_MASK);
> +    dest_mode =3D pirq_dpci->gmsi=2Egflags & XEN_DOMCTL_VMSI_X86_DM_MAS=
K;
> +    delivery_mode =3D MASK_EXTR(pirq_dpci->gmsi=2Egflags,
> +                               XEN_DOMCTL_VMSI_X86_DELIV_MASK);
> +
> +    dest_vcpu_id =3D hvm_girq_dest_2_vcpu_id(d, dest, dest_mode);
> +    pirq_dpci->gmsi=2Edest_vcpu_id =3D dest_vcpu_id;
> +    write_unlock(&d->event_lock);
>  =20
> -        if ( pt_irq_bind->u=2Emsi=2Egflags & XEN_DOMCTL_VMSI_X86_UNMASK=
ED )
> +    pirq_dpci->gmsi=2Eposted =3D false;
> +    vcpu =3D (dest_vcpu_id >=3D 0) ? d->vcpu[dest_vcpu_id] : NULL;
> +    if ( iommu_intpost )
> +    {
> +        if ( delivery_mode =3D=3D dest_LowestPrio )
> +            vcpu =3D vector_hashing_dest(d, dest, dest_mode,
> +                                       pirq_dpci->gmsi=2Egvec);
> +        if ( vcpu )
> +            pirq_dpci->gmsi=2Eposted =3D true;
> +    }
> +    if ( vcpu && is_iommu_enabled(d) )
> +        hvm_migrate_pirq(pirq_dpci, vcpu);
> +
> +    /* Use interrupt posting if it is supported=2E */
> +    if ( iommu_intpost )
> +    {
> +        struct xen_domctl_bind_pt_irq bind =3D {
> +            =2Emachine_irq =3D machine_irq,
> +            =2Eirq_type =3D PT_IRQ_TYPE_MSI,
> +        };
> +
> +        rc =3D hvm_pi_update_irte(vcpu, info, pirq_dpci->gmsi=2Egvec);
> +        if ( rc )
>           {
> -            unsigned long flags;
> -            struct irq_desc *desc =3D pirq_spin_lock_irq_desc(info, &fl=
ags);
> +            pt_irq_destroy_bind(d, &bind);
> +            return rc;
> +        }
> +    }
>  =20
> -            if ( !desc )
> -            {
> -                pt_irq_destroy_bind(d, pt_irq_bind);
> -                return -EINVAL;
> -            }
> +    if ( unmasked )
> +    {
> +        struct xen_domctl_bind_pt_irq bind =3D {
> +            =2Emachine_irq =3D machine_irq,
> +            =2Eirq_type =3D PT_IRQ_TYPE_MSI,
> +        };
> +        unsigned long flags;
> +        struct irq_desc *desc =3D pirq_spin_lock_irq_desc(info, &flags)=
;
>  =20
> -            guest_mask_msi_irq(desc, false);
> -            spin_unlock_irqrestore(&desc->lock, flags);
> +        if ( !desc )
> +        {
> +            pt_irq_destroy_bind(d, &bind);
> +            return -EINVAL;
>           }
>  =20
> -        break;
> +        guest_mask_msi_irq(desc, false);
> +        spin_unlock_irqrestore(&desc->lock, flags);
>       }
>  =20
> +    return 0;
> +}
> +
> +int pt_irq_create_bind(
> +    struct domain *d, const struct xen_domctl_bind_pt_irq *pt_irq_bind)
> +{
> +    int rc, pirq =3D pt_irq_bind->machine_irq;
> +
> +    if ( pirq < 0 || pirq >=3D d->nr_pirqs )
> +        return -EINVAL;
> +
> +    switch ( pt_irq_bind->irq_type )
> +    {
> +    case PT_IRQ_TYPE_MSI:
> +        return pt_irq_bind_msi(d, pirq,
> +                               pt_irq_bind->u=2Emsi=2Egvec,
> +                               pt_irq_bind->u=2Emsi=2Egflags &
> +                                   ~XEN_DOMCTL_VMSI_X86_UNMASKED,
> +                               pt_irq_bind->u=2Emsi=2Egtable,
> +                               !!(pt_irq_bind->u=2Emsi=2Egflags &
> +                                  XEN_DOMCTL_VMSI_X86_UNMASKED));
> +
>       case PT_IRQ_TYPE_PCI:
>       case PT_IRQ_TYPE_MSI_TRANSLATE:
>       {
> +        struct hvm_irq_dpci *hvm_irq_dpci;
> +        struct hvm_pirq_dpci *pirq_dpci;
> +        struct pirq *info;
>           struct dev_intx_gsi_link *digl =3D NULL;
>           struct hvm_girq_dpci_mapping *girq =3D NULL;
>           unsigned int guest_gsi;
>  =20
> +        rc =3D pt_irq_dpci_setup(d, pirq, &hvm_irq_dpci, &pirq_dpci, &i=
nfo);
> +        if ( rc )
> +            return rc;
> +
>           /*
>            * Mapping GSIs for the hardware domain is different than doin=
g it for
>            * an unpriviledged guest, the hardware domain is only allowed=
 t
Aside that, the rest looks good to me=2E

with or without the cast change :
Reviewed-by: Teddy Astie <teddy=2Eastie@vates=2Etech>

Teddy


-- 
Teddy Astie | Vates XCP-ng Developer

XCP-ng & Xen Orchestra - Vates s=
olutions

web: https://vates=2Etech
---=Part.b5.57efd0fc27062d4d.19dd465068f.43f3625d62435cc9=---


From xen-devel-bounces@lists.xenproject.org Tue Apr 28 14:14:38 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 28 Apr 2026 14:14:38 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1296296.1572715 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wHjCg-0000ed-BV; Tue, 28 Apr 2026 14:14:22 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1296296.1572715; Tue, 28 Apr 2026 14:14: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 1wHjCg-0000eW-86; Tue, 28 Apr 2026 14:14:22 +0000
Received: by outflank-mailman (input) for mailman id 1296296;
 Tue, 28 Apr 2026 14:14:20 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <roger.pau@citrix.com>) id 1wHjCe-0000eQ-Mk
 for xen-devel@lists.xenproject.org; Tue, 28 Apr 2026 14:14:20 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wHjCd-009J2y-De
 for xen-devel@lists.xenproject.org; Tue, 28 Apr 2026 16:14:19 +0200
Received: from [10.42.69.9] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <roger.pau@citrix.com>)
 id 69f0c0af-2eae-0a2a0a5409dd-0a2a45099218-48
 for <xen-devel@lists.xenproject.org>; Tue, 28 Apr 2026 16:14:19 +0200
Received: from [40.107.200.21]
 (helo=CH5PR02CU005.outbound.protection.outlook.com)
 by tlsNG-bad1c0.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.1)
 (envelope-from <roger.pau@citrix.com>)
 id 69f0c0b9-2497-0a2a45090019-286bc815444e-3
 for <xen-devel@lists.xenproject.org>; Tue, 28 Apr 2026 16:14:19 +0200
Received: from CH7PR03MB7860.namprd03.prod.outlook.com (2603:10b6:610:24e::14)
 by LV8PR03MB8162.namprd03.prod.outlook.com (2603:10b6:408:297::5)
 with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9846.26; Tue, 28 Apr
 2026 14:14:15 +0000
Received: from CH7PR03MB7860.namprd03.prod.outlook.com
 ([fe80::f5ba:35df:1c9f:b343]) by CH7PR03MB7860.namprd03.prod.outlook.com
 ([fe80::f5ba:35df:1c9f:b343%4]) with mapi id 15.20.9846.025; Tue, 28 Apr 2026
 14:14: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=sf/qiIDfiHlCk1JhIfP6XCLoIcrXeMuPK4KbtKZovUDs5JPPvftKC51IIfhXeGohLLDjkjIurf7wUFy4E9LLLb8FUH7+BVm4BtovAqKWPy0mYOIoe558FNW+1BYNqzVgzhzY5l3ghj2dLvA/IXPMtjDG8lU5U5fznLkzU3wQPysrB6OzVkD0Tb7c+AtrF51NI3HVVU9je+v76iFGwY16EhacLgw4+eJ7cFS14EqulX0DGvugFP0XRSukt8cNIo5igW3nj1Sw2IELPsoFICQ88yul1TFsLmY1R6WDVUr5GxJvaEOgScGsAKjXzoNF3wv3S0A4tsdEq0Sh4CU59vEMDg==
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com;
 s=arcselector10001;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1;
 bh=CukSQNxOQSTJ4dLPqBWpRPut0hjkzvM89VnQxwzgTE4=;
 b=KKSl56edqDM5fr0Zvci3oF7p/wTBzWVQ/aSA86w+a4sAt9+KdIVYx6nkX4eJISrgswywEvef7l4uwYAbgssqSg+LvxTnfhiYquizvwmO98NEB33/towWR/o81EeZD+LnTvQy0nTW7FHG/wAUlHdURB6g82LlTWJO1llgMr619o4IgFZbOb6tRwHcNbHlIHToI9OiBin3PmC6D8kxhj0T813HNd+9Ca7hfljgPMN5Lhj5WzgLvUZKx1U6UtThaf4X8hg8FwIvxqtBFBL1PrvfQqwFXdvxWFcH3JbjPlHhDSD03HFpEwPdV6ZMW1XcIq2dZgRkAsPPiFCRmz5aCwQ7Iw==
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=CukSQNxOQSTJ4dLPqBWpRPut0hjkzvM89VnQxwzgTE4=;
 b=EFIH2U8ZmP4d6z6JIt6me6+PGlieYGyuYHRkDAH6nZgiModxO0aKDSCAhkFKs9elu1Kfl3oIPCRC1PeZh64CxKZ725bbEoEPeKeYIPGmBTVNO0C24lJ88GQHZ8wCxrBwSzC3PaPxBmarpOfi3TprFF3MsM5NftEah9a7UJctx2Y=
Authentication-Results: dkim=none (message not signed)
 header.d=none;dmarc=none action=none header.from=citrix.com;
Date: Tue, 28 Apr 2026 16:14:12 +0200
From: Roger Pau =?utf-8?B?TW9ubsOp?= <roger.pau@citrix.com>
To: Thierry Escande <thierry.escande@vates.tech>
Cc: xen-devel@lists.xenproject.org, Jan Beulich <jbeulich@suse.com>,
	Andrew Cooper <andrew.cooper3@citrix.com>,
	Anthony PERARD <anthony.perard@vates.tech>
Subject: Re: [PATCH 10/17] hvmloader: Add support for
 HVMOP_set|get_ecam_space hypercalls
Message-ID: <afDAtFhFZdrWXJZV@macbook.local>
References: <20260313163455.790692-1-thierry.escande@vates.tech>
 <20260313163455.790692-11-thierry.escande@vates.tech>
Content-Type: text/plain; charset=utf-8
Content-Disposition: inline
In-Reply-To: <20260313163455.790692-11-thierry.escande@vates.tech>
X-ClientProxiedBy: MR1P264CA0183.FRAP264.PROD.OUTLOOK.COM
 (2603:10a6:501:58::17) To CH7PR03MB7860.namprd03.prod.outlook.com
 (2603:10b6:610:24e::14)
MIME-Version: 1.0
X-MS-PublicTrafficType: Email
X-MS-TrafficTypeDiagnostic: CH7PR03MB7860:EE_|LV8PR03MB8162:EE_
X-MS-Office365-Filtering-Correlation-Id: 11ea1356-9257-468c-e11a-08dea5306dde
X-MS-Exchange-SenderADCheck: 1
X-MS-Exchange-AntiSpam-Relay: 0
X-Microsoft-Antispam:
	BCL:0;ARA:13230040|366016|1800799024|376014|18002099003|22082099003|56012099003;
X-Microsoft-Antispam-Message-Info:
	FE5AeQAndyt/XEYaeVtD+Nd54MhfgWVpdAS5f/8c1pFpv3VrfeQNTf837+/Iu0ojkjoGI1bVCpK0ehAMO4KJOCmIAaMHg0L47MbRAlh55iKZMKLljkiZxP5nqAHnKvB0g7UMuX1URqSWR/k/0yGvCDMwciDCaodgVnwaA/lk/cFALtEZL/C7uBRzGiHb09cnARj1Qbi7eZPeGFIBrteE2WRyHWUSuVsaK6h0UFzaasv6JvS4NwhnYQ32EJQc1dsQ5kVI0TrS06QpzbdSDrALMqO1DBlaNmN/CewA5AOTnLGXHJzP+e0JjYJx+NCCoiMfKHtoHI+8I3V9B7e7QyduGUvGOIVXrwKwIXXSY5lM5krbmgYNJwJ0TkbBlXO5VEGRINda35WapDogeAQyCUn6g6Z+sTqP0LzDmkOXDoWZ19qWvMUlj6fXpr/i1Dry37Uw2YMrsRexi4r0/7hW22RUxCokCFcXAF6l/fJ4+Tgq2GbonwJ+6rX+Oprtf/gT9GSWmXg5ga3ZEeAZ4FSrARkm+aNBKeqhw5tHVProj6XkUpn/euRs+bZzKKFNzXOdUemtTHDDBRoamWLNrrW7T/fliq0I6hQVJcfB74shx3UGRdbtpRrVw+wUs0Dbm+04UMYqlogXYJsHXTprlOJh1zrkZ5Z5Z09TOa0onwjtJ3vffSpoJKsnHsdnQxQJ8oiZFTJZZHkHiglWBmJH4qRDBo/l5RjC2JRhn+U0BLAP0EivXB4=
X-Forefront-Antispam-Report:
	CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:CH7PR03MB7860.namprd03.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(366016)(1800799024)(376014)(18002099003)(22082099003)(56012099003);DIR:OUT;SFP:1101;
X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1
X-MS-Exchange-AntiSpam-MessageData-0:
	=?utf-8?B?TXZNQzJYTDFRVzhicVZJMC9JNTlMdG5JajZYamY0Z1F6OExQK3RvUlZuSnlN?=
 =?utf-8?B?VHI4WkJ2L1NBM1ZORW91VTlzcHkxMHp0YUJTNXRveVhkZGNHaExGNkxaUW9Q?=
 =?utf-8?B?cGdqaExLUmI4TlNmY2NJSzRrSXRLbzFKaUVCdEZBbUxFYnRtdVg2OG9DUlg0?=
 =?utf-8?B?NTRyczdoTCtTUFE4eGtOWnhWcTMreklQNzliSFpyUEtWY1VJd0tKYmFiL2ZB?=
 =?utf-8?B?RitLUk45RGFINXJsWkZSSENVb2J5UnVVdkVicGRDaFFSTElhT2haM2lBZ1By?=
 =?utf-8?B?QnJZOWlmSmExa1EvbXpQWDROei8yYlJEWWNuaEw1V0hpVGJGbW5LcWtPOFdH?=
 =?utf-8?B?MExjYkdZM2VLRVdjUkU2aXU1bGVqWFAxTko0NmYxN2VJc3RrQ3NDd2diU1VN?=
 =?utf-8?B?TFNDUEM0cDd4T3ppbXJqWmhzRlUrTTJQYTZVUGdJZ3MxN042clIwajUxeHBH?=
 =?utf-8?B?VFlldjFPMHpjUThyNnJNUCt6ZFVMdENZTzlCSDZCRHQ0OFJnRCtUd1A2Nkpz?=
 =?utf-8?B?a0VJc2F4TzVyYVhiTXl2WkVNK0tpei81K1NlOHQ3K2lFZkV3RUNuUmNucWx5?=
 =?utf-8?B?bnduaENuUkI3NDY1UTFROCs0N2M5dWRUcXhWQW9PVUxNWFljTEhlR3VSZWdr?=
 =?utf-8?B?STJhd211UlR6K0s2enBXV2xsUGZsT0Z3S3h0dFVuN2J4Nnd5a09DOWo2emRx?=
 =?utf-8?B?QVM5SHFORVZGSDBzMW9MUWo1SVlrVDZOSWNkdDRWK3d6U0VXSlVaRE5GM3hC?=
 =?utf-8?B?aVQxTUYreHoxdTdPekw3WEtydnhPeUtqUDVwaWFhRXZRZW9rY2dCOHhiRWJN?=
 =?utf-8?B?YlFkZ1VSSi9LSkdmKzZqUEVRQjl2NDYxZTdoaVFwSDAyRFdndk1kQXVFNTRj?=
 =?utf-8?B?TTlvVFp4bHg2VlhMR3BxSWZteXdvWEZzMk9qT2xaOXBkNHRGVlZ2Ti9VUlVQ?=
 =?utf-8?B?Mmh4U2h2Y2VDVmdUZ0NBQ1FaQVR2ck5RSW51OWpyWGVTb0gyQXVWbzNCR2tT?=
 =?utf-8?B?TUtuOTV6ZDdmc2Y5Tk5vczg4dmNFK1N3Z01ZYTZicFk5NkJ5NnVobUdBUkJD?=
 =?utf-8?B?Z1JudTNkZTJHYWdtZHJMVEZGRjkxQkJDZEFWL2Rtem5TM25YN3RsdTlpQkVw?=
 =?utf-8?B?Zm1sTlV0QU8xbnhCV1A5Z2UvWkR2UU9TMjI3TkVSOHlTRGxrRENFNnM4Wmlr?=
 =?utf-8?B?d3plZ0h1QVBVdXhTU0wwQllidTBTeWhiWjFYcGlzM1BDWUkyQ0d2WjZHcGFj?=
 =?utf-8?B?VHlBY2lQODlEdUJpN1M5a3E4S2lqQ3NnTERIMzl3dEdERk1KVjdFVG9vcXJ1?=
 =?utf-8?B?bGx0eDNsSzlaQ3kzM3lhNkpFaG5wanN4TGUxUkJNSWZwNlNHaHVqRmVoME9r?=
 =?utf-8?B?YnRGM3pBdzhrREpuQXB4cmlQZ1daRy9HQzY2Mmw2QytkSStBUXZIT2VKYUpU?=
 =?utf-8?B?RFFkS2EvazNjYzlWbHExVkJ4eW52SG04Sk0vVXdXc0k5Mmo4ZW5PV3ljOHVa?=
 =?utf-8?B?MmlJNmF6Y2NiVXViUVlycU8rc1pFMTFVeEs1V01mZlB6NVk5WGRReE9QWXNl?=
 =?utf-8?B?Z3o3ckpzbm52SzFIYTZYYUI3SDdyS3RvcGZFR3I3RkZ3NE5YU0xKQ1ZSSFJk?=
 =?utf-8?B?SzJQUWF6eU9SV2xpMjVYOHZWdW9WYndlbCs5V1dWNHNCNkFWVklhVkt6TlRQ?=
 =?utf-8?B?MkhGT2t0Y2dwbU9zWUx0Z3lqeWpSUThod1JMd1I5NmUrakl2TDRYeDY2RXRk?=
 =?utf-8?B?L1p0OE1lN0RvWitiYTRpeU9XdjVhNWo5NEZCOXd2T2cxVEtPTGRBM0RRN3NK?=
 =?utf-8?B?bVAyWkhZQXZMSis2b0kvVzJhankzL3hITFBOQ29HcnlTdlh5NmlBZFdWbEc2?=
 =?utf-8?B?VEl5Wml5WnNibjkwREQ1Qk1Kb0NkQ2FVK2YxMXlYZldCeEdGeHhMNEdEaU5r?=
 =?utf-8?B?SUlzRFk5SHBlMkYyNjQ0Q0hSdVBkSzJSelpSSmhJbkJxQ0ZhN2FrY1R1S0hz?=
 =?utf-8?B?dFBacmdISmtSdW1EL2dLeTd5NUJPMWtlUmp6ODJ3amZnK1o5TSswTklEaGZk?=
 =?utf-8?B?Sk4rWmpGQnZ0eHdmaUlKS1huS0FhTXpLWGF4RFV4aWRzTmFpS3dsdWJvTWFB?=
 =?utf-8?B?eDNmTFI4L2VjaERkSXpJTG9FZ3RZZlltSVZiektoRXJ0WTUvdFBJejFqNjgy?=
 =?utf-8?B?TkorUVRGaG5rSkhWTjFaTU5CVG1XNVVpZ25UYjJMMTd6MnVEYzd3SW9ZUXdK?=
 =?utf-8?B?d3Y0SjUxQ2F0ZHkwSUJ2dDUxeEVoY05IWWg1dUx4UnlsQnlQZFVwYnpiSEw0?=
 =?utf-8?B?a0kwQnJKd1UrQWJmNThUYXNGMW1SWDhxdFJpRnRzRmhtQ1EyVzFrUT09?=
X-OriginatorOrg: citrix.com
X-MS-Exchange-CrossTenant-Network-Message-Id: 11ea1356-9257-468c-e11a-08dea5306dde
X-MS-Exchange-CrossTenant-AuthSource: CH7PR03MB7860.namprd03.prod.outlook.com
X-MS-Exchange-CrossTenant-AuthAs: Internal
X-MS-Exchange-CrossTenant-OriginalArrivalTime: 28 Apr 2026 14:14:15.6528
 (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: mVXixGOTO9wQqbZhP2G6DRiT7+umBOWx+LO83ghzqwg10VBad/AHweeZpk10IKXcGDsaJ9oxlAD5p4Jy+97xKQ==
X-MS-Exchange-Transport-CrossTenantHeadersStamped: LV8PR03MB8162
X-purgate-ID: tlsNG-bad1c0/1777385659-410B3A53-840F370E/0/0
X-purgate-type: clean
X-purgate-size: 487

On Fri, Mar 13, 2026 at 04:35:03PM +0000, Thierry Escande wrote:
> This patch adds wrappers in hvmloader for the hypercalls used to set and
> get the ECAM space base address and size.

This would better be introduced with at least one user, as otherwise
it's just unreachable code.  And then I'm not convinced we should use
hypercalls to set the ECAM position/size from hvmloader, if it can be
done using the native registers and QEMU can forward those to Xen.

Thanks, Roger.


From xen-devel-bounces@lists.xenproject.org Tue Apr 28 14:28:55 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 28 Apr 2026 14:28:55 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1296309.1572724 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wHjQe-0003CO-DA; Tue, 28 Apr 2026 14:28:48 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1296309.1572724; Tue, 28 Apr 2026 14:28: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 1wHjQe-0003CH-A8; Tue, 28 Apr 2026 14:28:48 +0000
Received: by outflank-mailman (input) for mailman id 1296309;
 Tue, 28 Apr 2026 14:28:46 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <stefanha@gmail.com>) id 1wHjQc-0003CB-I4
 for xen-devel@lists.xenproject.org; Tue, 28 Apr 2026 14:28:46 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wHjQb-005I1m-GW
 for xen-devel@lists.xenproject.org; Tue, 28 Apr 2026 16:28:45 +0200
Received: from [10.42.69.6] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <stefanha@gmail.com>)
 id 69f0c412-bab6-0a2a0a5309dd-0a2a4506a69a-32
 for <xen-devel@lists.xenproject.org>; Tue, 28 Apr 2026 16:28:45 +0200
Received: from [209.85.208.51] (helo=mail-ed1-f51.google.com)
 by tlsNG-16d1c6.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.1)
 (envelope-from <stefanha@gmail.com>)
 id 69f0c41d-7371-0a2a45060019-d155d033d411-3
 for <xen-devel@lists.xenproject.org>; Tue, 28 Apr 2026 16:28:45 +0200
Received: by mail-ed1-f51.google.com with SMTP id
 4fb4d7f45d1cf-671ab90fc1fso21611031a12.0
 for <xen-devel@lists.xenproject.org>; Tue, 28 Apr 2026 07:28:45 -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=20251104 header.d=gmail.com header.i="@gmail.com" header.h="Content-Transfer-Encoding:Cc:To:Subject:Message-ID:Date:From:In-Reply-To:References:MIME-Version"
ARC-Seal: i=1; a=rsa-sha256; t=1777386525; cv=none;
        d=google.com; s=arc-20240605;
        b=So42dh37OXX1hPfZmlyInT8WZyCxraMxo/ckdPQOLLhhDOR3mP2HUU6oV7oOEtl1dD
         eHfgoRCb8XXFS6hvQITS+UbOVctW9fw3E0EMxFpfp0IpfU46F9STQm+IHpMGucXByIZ8
         EQO3Y+Fzz8VZQkxAAjdaWmkbGZCGfOTWqsBdgRImgeNm0RlKoxTH97DoXJSLDyl2cuHl
         V83mjBSUYyuUqEyRzd225sJNrDg86XLvfpAaKbjE8bWQ5g5JQZmihF4J71QKk+f5jpKj
         homRkXra6k9fg+J97n6t9PQ7bHy5Ii5C2K8FrPmJSRp4nJe8EisXUcx+q0kb7MDHm9CP
         c+ZQ==
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20240605;
        h=content-transfer-encoding:cc:to:subject:message-id:date:from
         :in-reply-to:references:mime-version:dkim-signature;
        bh=RYOY/bLGnb4mWoU/OY7ZFCy2IKSSYa+HxyuO8c5Tzxw=;
        fh=McRg43hfKil8MlS2nkJpQ2jPPkdLN92uX484YqEwdEg=;
        b=b5HiEFSJaDAnM+Lp1eOlpp+gimz283Z1QMocbA2KbxYeA1ik/cyHuTKKXm7IMurJfM
         +ZrfIQ730VMUDwRksv4ku7BxR4iyWH4hfgZhCqhGO8mrIxzs5G3rJu2EcLEAgR7cdjox
         kn9ssksl50tRmX2792WsojDbs42AZeeZ4beU+N+RQ3AaxocJpqjhKGqyUe1ITCwPjgsX
         1tkMn9utxiSbsw0O7WpdU1PITxeMHWdSgfyDrVADJvypjrnqRgzBYq8HiUaxUgClNDyZ
         KaHCeDrSEu0zz1IH55Sp/XfGZxiHwlP8NWgx6Sxs9cqlgv4URaRBV5/fDhdbT7OzT8PY
         l0WA==;
        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=20251104; t=1777386525; x=1777991325; darn=lists.xenproject.org;
        h=content-transfer-encoding:cc:to:subject:message-id:date:from
         :in-reply-to:references:mime-version:from:to:cc:subject:date
         :message-id:reply-to;
        bh=RYOY/bLGnb4mWoU/OY7ZFCy2IKSSYa+HxyuO8c5Tzxw=;
        b=JKa6f9O+CNLIDYKeFrg1kAs8O1xYpIO9Bt99JEUA7DkA5V6N5+FgfYjvwgDmCR/mrj
         EiCV3GpPMGWX2LR4fb6GW1iNMDkBRHoBydGWE80S+26t2Pb5OcHG9M8dGCGu4Gj+x1FB
         Gx2z+OAFlprgizXNNEg4z8U3rB55nf5GZiqnMcd33qpnStmESF6AruY0tr3n4VTzp8mW
         ZYtaKyz+bmjR+/P+8OX3/AeuCNN5dvdUwJIX7MOKGm0NjpXQLGFrlN7hPKbofPIWCz5d
         sAQtcMJMP8YIbzlMtnrsgd4fq/CRXeWP0TDvO9DzA00pGZiJsZFZeqF/2VNH7BCnhatg
         yeCg==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20251104; t=1777386525; x=1777991325;
        h=content-transfer-encoding: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;
        bh=RYOY/bLGnb4mWoU/OY7ZFCy2IKSSYa+HxyuO8c5Tzxw=;
        b=QOF3/H0BZY3Id3h2lBTKY7RyOY8SrcK3E9w2zjCRCIAkaPEd1hpEy1BEv/8+5d2hbm
         3fDhMVveFy+eJmK3xLcMx2wxt63KthDJ18UwPQ7zBmNZ/hODW+hYjHxisrUWW7MRSN7P
         Y7bG6+HWOkjMJiJknyD4iAaeeuJhJFGGnUD/suhJEGw39yBXlaTlKjurLLXrGwMU7e6G
         4VJBcOLsydCQTsgAr8AkpOC9tsl2p+P2pH9dJNNRthO/h21vTmhq4N0UZbqh1I2Kli8p
         NykO/p9kPEw6G4dq49McMN9Nhc132jB8lrqZOx9NZRbhy2uVY4CLMp6ItvuU01lLNRam
         ftUg==
X-Forwarded-Encrypted: i=1; AFNElJ83+fi8xb5MQCbaWwzpmupDogBHGlEYha5kJP5UsUYOMgCYDRe09ShslX6g8gPJesEFUoZUU7UAnKM=@lists.xenproject.org
X-Gm-Message-State: AOJu0YyPHAVgOqsL9+/Q/84gJoDINWflK1k6jVwliaFHY1MTxTrTamHD
	JCS/RNq4XdGMOZ1c2IsxF9e5gYRAY0XLJUJMrqorCu8Yh8c+cXCyfOE0knGX8y75Amn6Xbmn7RO
	ZCCw3ad//6PvBP7WSNdJ/rX1G7oI4+U8=
X-Gm-Gg: AeBDiesdn5rc1Ssu+QWGTFHJBpyZ4B+TjKmdLOKWVcC8GpSlxVQSHDdZjMwSCVUfVlf
	8JXTdbmuGN/qCfTNanND/g2berzM05RmrZ6/vI4+/m3Lv66Jn6hAT8bZMLJZ9ia9huoUUj1mU+g
	mCx9DPx+14Pl4HUcH/4qjRFoFaAqDK+LZXt3tmZnsZ6kXzNjpxFiq8FvcA6wRuJhwLhnD5z84Bo
	+AsTD8ak/Uq+spvxKLwVGdlbl4+aKfv+U6APL+jw8XvZsBMRmivDARSEKPlQ8YeZn3utW5I0g0w
	NhxoybWc2rPyRRJWPuwihvCYuUtZeFcpeQcSFTurn2AkYsaccj+DiA5RUpU=
X-Received: by 2002:a05:6402:1ed3:b0:672:5255:af77 with SMTP id
 4fb4d7f45d1cf-679bb07ee71mr1982304a12.13.1777386524494; Tue, 28 Apr 2026
 07:28:44 -0700 (PDT)
MIME-Version: 1.0
References: <20260428081303.990973-1-marcandre.lureau@redhat.com> <20260428081303.990973-9-marcandre.lureau@redhat.com>
In-Reply-To: <20260428081303.990973-9-marcandre.lureau@redhat.com>
From: Stefan Hajnoczi <stefanha@gmail.com>
Date: Tue, 28 Apr 2026 10:28:32 -0400
X-Gm-Features: AVHnY4Jmh-XBh9OrnMlY2iCW1hoL0ExMevskFSExN-SDnKJrlB8WX0t3_BRuqoI
Message-ID: <CAJSP0QUjFupVz1uXuxgxbvTrmf_gqzV6tSg1tmuq_Lp7qGVyjw@mail.gmail.com>
Subject: Re: [PULL 08/15] ui/console: return completion status from gfx_update callback
To: marcandre.lureau@redhat.com
Cc: qemu-devel@nongnu.org, peter.maydell@linaro.org, 
	Jan Kiszka <jan.kiszka@web.de>, Phil Dennis-Jordan <phil@philjordan.eu>, 
	Richard Henderson <richard.henderson@linaro.org>, Helge Deller <deller@gmx.de>, 
	=?UTF-8?Q?Philippe_Mathieu=2DDaud=C3=A9?= <philmd@linaro.org>, 
	Gerd Hoffmann <kraxel@redhat.com>, Mark Cave-Ayland <mark.cave-ayland@ilande.co.uk>, 
	Samuel Tardieu <sam@rfc1149.net>, =?UTF-8?Q?Herv=C3=A9_Poussineau?= <hpoussin@reactos.org>, 
	Aleksandar Rikalo <arikalo@gmail.com>, Laurent Vivier <laurent@vivier.eu>, 
	Thomas Huth <th.huth+qemu@posteo.eu>, BALATON Zoltan <balaton@eik.bme.hu>, 
	=?UTF-8?B?QWxleCBCZW5uw6ll?= <alex.bennee@linaro.org>, 
	Akihiko Odaki <odaki@rsg.ci.i.u-tokyo.ac.jp>, 
	Dmitry Osipenko <dmitry.osipenko@collabora.com>, "Michael S. Tsirkin" <mst@redhat.com>, 
	Dmitry Fleytman <dmitry.fleytman@gmail.com>, Stefano Stabellini <sstabellini@kernel.org>, 
	Anthony PERARD <anthony@xenproject.org>, "Edgar E. Iglesias" <edgar.iglesias@gmail.com>, 
	Alistair Francis <alistair@alistair23.me>, Alex Williamson <alex@shazbot.org>, 
	=?UTF-8?Q?C=C3=A9dric_Le_Goater?= <clg@redhat.com>, 
	"open list:Musicpal" <qemu-arm@nongnu.org>, "open list:sam460ex" <qemu-ppc@nongnu.org>, 
	"open list:X86 Xen CPUs" <xen-devel@lists.xenproject.org>
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: quoted-printable
X-purgate-ID: tlsNG-16d1c6/1777386525-CE576D75-07B15094/0/0
X-purgate-type: clean
X-purgate-size: 442

Hi Marc-Andr=C3=A9,
This patch changes the .gfx_update callback prototype and fails to
compile due to the following recently-merged commit:

commit 5ef60a3787e8e0dccf30dae3704d4f5249160e7d
Author: Yucai Liu <1486344514@qq.com>
Date:   Sun Apr 12 19:02:39 2026 +0800

    hw/display: Add i.MX6UL LCDIF device model

Please rebase on qemu.git/master, fix the build, and send another
revision of this pull request. Thanks!

Stefan


From xen-devel-bounces@lists.xenproject.org Tue Apr 28 14:29:23 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 28 Apr 2026 14:29:23 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1296317.1572732 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wHjRD-0003dr-Jw; Tue, 28 Apr 2026 14:29:23 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1296317.1572732; Tue, 28 Apr 2026 14: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 1wHjRD-0003dk-HS; Tue, 28 Apr 2026 14:29:23 +0000
Received: by outflank-mailman (input) for mailman id 1296317;
 Tue, 28 Apr 2026 14:29:21 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <stefanha@gmail.com>) id 1wHjRB-0003dY-M8
 for xen-devel@lists.xenproject.org; Tue, 28 Apr 2026 14:29:21 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wHjRB-005ICZ-1u
 for xen-devel@lists.xenproject.org; Tue, 28 Apr 2026 16:29:21 +0200
Received: from [10.42.69.6] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <stefanha@gmail.com>)
 id 69f0c43e-bab6-0a2a0a5309dd-0a2a4506e3b8-18
 for <xen-devel@lists.xenproject.org>; Tue, 28 Apr 2026 16:29:20 +0200
Received: from [209.85.208.52] (helo=mail-ed1-f52.google.com)
 by tlsNG-16d1c6.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.1)
 (envelope-from <stefanha@gmail.com>)
 id 69f0c440-7371-0a2a45060019-d155d034d5f7-3
 for <xen-devel@lists.xenproject.org>; Tue, 28 Apr 2026 16:29:20 +0200
Received: by mail-ed1-f52.google.com with SMTP id
 4fb4d7f45d1cf-65c0891f4e9so18916159a12.1
 for <xen-devel@lists.xenproject.org>; Tue, 28 Apr 2026 07:29:20 -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=20251104 header.d=gmail.com header.i="@gmail.com" header.h="Content-Transfer-Encoding:Cc:To:Subject:Message-ID:Date:From:In-Reply-To:References:MIME-Version"
ARC-Seal: i=1; a=rsa-sha256; t=1777386560; cv=none;
        d=google.com; s=arc-20240605;
        b=K1IJivccxKULjJ/w/GF3Mk8TDhYejSGnnXK/ETjr499P2aQMgFrC5Qdk0ApWx5u709
         /QdvcvGGKzWkBk7fFy4CRgRY0haLqikfesnq2IBv87nmp3kEEOwW7yUBbgstzymNdE9j
         Yyb1sUDo0fFy4ojs2/GMf/+PF9O17WgDbinFahl5Hz924gGn/Ev6c/XPydeJOkftXgTk
         3+JXl+2MjOk5F8nDTb4EnpWGJfwaw/gkmnOrKUttlj6bghOzv/3BJ1DYSWZ0plWhN44E
         Uq3kzP1MzkRl8NjUba+hrt9lYnGsUiHy8e9OF0wcbnz3dv+8b+WWDMLGErFTvuystHuX
         jj4g==
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20240605;
        h=content-transfer-encoding:cc:to:subject:message-id:date:from
         :in-reply-to:references:mime-version:dkim-signature;
        bh=YcyG/1F3nXUVyq31n88lbs9OsX49y2JqeErrMkFMYi8=;
        fh=QcczVRU8FeHZ0xZPa5W4qYL/gA8ra38ED8BZxPhC7DQ=;
        b=NR/3L9ZTAg2xyIBXpctgyjl+2h/uDugrHy8pEYXNKySPNF1N+/a52DGWZ325suY8V9
         j5GMsFXU+lOI2hAm5yrhSgX0YTqZIjb4wJFjQglL5cG3oPFKZVfG7M6swSkIYh+1DqsH
         K7A6oSlF1IA36GApgUvM80LxD165m5RSkzCIYWfvULOuIWxAfCVxFKZ5iNI5rwYAG5a7
         SpfFX6UGBtmS01MD/VBFV+wIdlVDt1CCxhJCgZC44eKw07EMv11rZtu4YU9TzSxBlgFi
         68+v6wCF/7eL3RGX/JOYJR15T5aQXgPXWAmECX22k38tiQDSvZlfFEIzMASouUgVJH3B
         A3Ng==;
        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=20251104; t=1777386560; x=1777991360; darn=lists.xenproject.org;
        h=content-transfer-encoding:cc:to:subject:message-id:date:from
         :in-reply-to:references:mime-version:from:to:cc:subject:date
         :message-id:reply-to;
        bh=YcyG/1F3nXUVyq31n88lbs9OsX49y2JqeErrMkFMYi8=;
        b=N7S17MKyeBh8dosUyGpJsNL3F5Zsl18sgUtHaaU/SL4meqPygzSAU+47UofPgwtYae
         Z6upFVtePW4JTAGoUL7eENCmnHT7fA95mcLhqqNOFhao9qH6pFFvk1V0/IEMwjpVrBQR
         W4+5oYongxQwP2e3cTLDJLlWbCNf+JruzOcWbTGoAFvsYP4KY//aGGsrETo4ko8DPGT1
         6AP9yy8FAoT8hSjUWUxHF4Isljb3C4kU28TrRiD9HHQbBfDVFFfyhdaJ29LdIb5VZuBI
         /xjWP4NMJnzPxUd8N2tvKx6ZH3Q7pA31c/ES9vrcfXdw4x7WwaS/XnhV6bYbaumcGPqe
         EwSQ==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20251104; t=1777386560; x=1777991360;
        h=content-transfer-encoding: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;
        bh=YcyG/1F3nXUVyq31n88lbs9OsX49y2JqeErrMkFMYi8=;
        b=mru0qFq0M3QrH+AUTnO7hiQlyWYO1lTE+u17uHgpP5KhZ7bmHbRAgMHKriu5hxbmAb
         aW5J6z2PaEE0c9W/RlW3zmLxscNKFlB6WwUuLSQKoLXlygMo0vQ9n1pMxsivfEMtOVgG
         s+EVMDp+QuTEyqoyWxHOti8jl7SVnsyhzLkF2YjlaLvSyIGvGhAPXXYkJOHPDDdXPTWg
         YcEcSNKLzKwP1Cm+9pMS6+XDsTOtoW4nBaj+CWV77c9ECccDz9QQS2C+nG9Is3ynJdm2
         IL7RnpKZSEtGK1A2lk9FdUPP8JOYy1Z1Fd7vmw7haYNQ9p1kB3XekI1dUCIMtYIO5zk2
         2ztw==
X-Forwarded-Encrypted: i=1; AFNElJ8o6HFP5pBxSVdPQLP6kBzkj3cH9iga9gNjJ9JfOo/tr8tesmHDXOIZna+89CNniNP2x4bTbiuNBC0=@lists.xenproject.org
X-Gm-Message-State: AOJu0Yy22shlL2GXvdiAArEP4UIukET5wJMYA5rDDgWCPxKIovqomdCW
	hzoY2cWY+q9gHnWuJlqgfmwNjWIt97F8BdtKvEFVKth8rOzIzCHOLZV5O0xuXzvQkzl3rxlKsTB
	kQ/ecl3ww1V1l9vFHUoh0AjXdOOLqaoM=
X-Gm-Gg: AeBDies4RUw/CZ2hMKaaL5nCcOtFx5mIIZuA5z9mwRN0MdYhyumj227fcQoFremXjdp
	o1IKWCudI+z0w7zgtnNqqElQDiQ6WdW/iwI7NG+mK6H1v9D8ptRv74EA+b2hYM35XtTdiFLu1wa
	v2M5rgU75iIUgxkQJPdm9bMjBxakKg9CNTI0S5Z30UUmzaAe11uq8rUvzI7OPfjieWH7evsfUhX
	Rbc0kIXq73ImJyxsaCx/eBeAEzVTNbQFHK0P7fzSped2vT6SfEQzeUXVs4/qdnXwAU6O69smJbG
	4gWgtzt3EMnJV00lmQbMF1pMuEV4Ei7CYkHdwk+X7uz24oyaYrjJQ4uMg6o=
X-Received: by 2002:a17:907:c783:b0:ba7:a94d:af83 with SMTP id
 a640c23a62f3a-bb803873d27mr206683366b.31.1777386560049; Tue, 28 Apr 2026
 07:29:20 -0700 (PDT)
MIME-Version: 1.0
References: <20260428081303.990973-1-marcandre.lureau@redhat.com>
 <20260428081303.990973-9-marcandre.lureau@redhat.com> <CAJSP0QUjFupVz1uXuxgxbvTrmf_gqzV6tSg1tmuq_Lp7qGVyjw@mail.gmail.com>
In-Reply-To: <CAJSP0QUjFupVz1uXuxgxbvTrmf_gqzV6tSg1tmuq_Lp7qGVyjw@mail.gmail.com>
From: Stefan Hajnoczi <stefanha@gmail.com>
Date: Tue, 28 Apr 2026 10:29:06 -0400
X-Gm-Features: AVHnY4JxfR5X49sh3f0xQOBGO5skCikVufW4qo03US3ycxLQlGj8SojUzT_-PqQ
Message-ID: <CAJSP0QUvg38ga-JeXVxRHxYFTyPjo7QZV2bOBAd7iosrqFJKYQ@mail.gmail.com>
Subject: Re: [PULL 08/15] ui/console: return completion status from gfx_update callback
To: marcandre.lureau@redhat.com
Cc: qemu-devel@nongnu.org, peter.maydell@linaro.org, 
	Jan Kiszka <jan.kiszka@web.de>, Phil Dennis-Jordan <phil@philjordan.eu>, 
	Richard Henderson <richard.henderson@linaro.org>, Helge Deller <deller@gmx.de>, 
	=?UTF-8?Q?Philippe_Mathieu=2DDaud=C3=A9?= <philmd@linaro.org>, 
	Gerd Hoffmann <kraxel@redhat.com>, Mark Cave-Ayland <mark.cave-ayland@ilande.co.uk>, 
	Samuel Tardieu <sam@rfc1149.net>, =?UTF-8?Q?Herv=C3=A9_Poussineau?= <hpoussin@reactos.org>, 
	Aleksandar Rikalo <arikalo@gmail.com>, Laurent Vivier <laurent@vivier.eu>, 
	Thomas Huth <th.huth+qemu@posteo.eu>, BALATON Zoltan <balaton@eik.bme.hu>, 
	=?UTF-8?B?QWxleCBCZW5uw6ll?= <alex.bennee@linaro.org>, 
	Akihiko Odaki <odaki@rsg.ci.i.u-tokyo.ac.jp>, 
	Dmitry Osipenko <dmitry.osipenko@collabora.com>, "Michael S. Tsirkin" <mst@redhat.com>, 
	Dmitry Fleytman <dmitry.fleytman@gmail.com>, Stefano Stabellini <sstabellini@kernel.org>, 
	Anthony PERARD <anthony@xenproject.org>, "Edgar E. Iglesias" <edgar.iglesias@gmail.com>, 
	Alistair Francis <alistair@alistair23.me>, Alex Williamson <alex@shazbot.org>, 
	=?UTF-8?Q?C=C3=A9dric_Le_Goater?= <clg@redhat.com>, 
	"open list:Musicpal" <qemu-arm@nongnu.org>, "open list:sam460ex" <qemu-ppc@nongnu.org>, 
	"open list:X86 Xen CPUs" <xen-devel@lists.xenproject.org>
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: quoted-printable
X-purgate-ID: tlsNG-16d1c6/1777386560-5377FD75-5B3FC1A3/0/0
X-purgate-type: clean
X-purgate-size: 962

On Tue, Apr 28, 2026 at 10:28=E2=80=AFAM Stefan Hajnoczi <stefanha@gmail.co=
m> wrote:
>
> Hi Marc-Andr=C3=A9,
> This patch changes the .gfx_update callback prototype and fails to
> compile due to the following recently-merged commit:
>
> commit 5ef60a3787e8e0dccf30dae3704d4f5249160e7d
> Author: Yucai Liu <1486344514@qq.com>
> Date:   Sun Apr 12 19:02:39 2026 +0800
>
>     hw/display: Add i.MX6UL LCDIF device model

For reference, here is the CI build failure:

../hw/display/imx6ul_lcdif.c:221:19: error: initialization of =E2=80=98_Boo=
l
(*)(void *)=E2=80=99 from incompatible pointer type =E2=80=98void (*)(void =
*)=E2=80=99
[-Wincompatible-pointer-types]
221 | .gfx_update =3D imx6ul_lcdif_update_display,
| ^~~~~~~~~~~~~~~~~~~~~~~~~~~
../hw/display/imx6ul_lcdif.c:221:19: note: (near initialization for
=E2=80=98imx6ul_lcdif_graphic_ops.gfx_update=E2=80=99)

https://gitlab.com/qemu-project/qemu/-/jobs/14124076225

Stefan


From xen-devel-bounces@lists.xenproject.org Tue Apr 28 14:34:11 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 28 Apr 2026 14:34:11 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1296337.1572806 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wHjVh-0006tW-Ad; Tue, 28 Apr 2026 14:34:01 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1296337.1572806; Tue, 28 Apr 2026 14:34: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 1wHjVh-0006sd-1W; Tue, 28 Apr 2026 14:34:01 +0000
Received: by outflank-mailman (input) for mailman id 1296337;
 Tue, 28 Apr 2026 14:33:59 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92) id 1wHjVf-0006cZ-Bm
 for xen-devel@lists.xenproject.org; Tue, 28 Apr 2026 14:33:59 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wHjVe-000RTW-Nk
 for xen-devel@lists.xenproject.org; Tue, 28 Apr 2026 16:33:58 +0200
Received: from [10.42.69.1] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <oleksii.kurochko@gmail.com>)
 id 69f0c548-2eae-0a2a0a5409dd-0a2a4501d626-48
 for <xen-devel@lists.xenproject.org>; Tue, 28 Apr 2026 16:33:58 +0200
Received: from [209.85.128.46] (helo=mail-wm1-f46.google.com)
 by tlsNG-d62444.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.1)
 (envelope-from <oleksii.kurochko@gmail.com>)
 id 69f0c556-c1f2-0a2a45010019-d155802ee026-3
 for <xen-devel@lists.xenproject.org>; Tue, 28 Apr 2026 16:33:58 +0200
Received: by mail-wm1-f46.google.com with SMTP id
 5b1f17b1804b1-488b0e1b870so196655385e9.2
 for <xen-devel@lists.xenproject.org>; Tue, 28 Apr 2026 07:33:58 -0700 (PDT)
Received: from fedora (user-109-243-69-121.play-internet.pl. [109.243.69.121])
 by smtp.gmail.com with ESMTPSA id
 5b1f17b1804b1-48a774b6300sm19302145e9.16.2026.04.28.07.33.56
 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
 Tue, 28 Apr 2026 07:33:57 -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=20251104 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=20251104; t=1777386838; x=1777991638; 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;
        bh=bJSZfDZmsT3CIOe+qmGhvl/hB/yKGv3ZJ6HZqE/FbGU=;
        b=FPRkagivTRTkvPrr9DgTrmPJ6A5qzrmzZNs2fIZsLQ8ZPmxEPetYngzYCW0q2XyJ7z
         NUJ50SXTThw/w2DeUDz4rgRhLghew6Pl8X1DjZ2ejH6sJZG9l4h67h+amrKi1nzIUDlm
         cwHzpWA4Qq+DPQTe6Lxm9Uk1jLF1M5lvkcAUs77bfbOrCgWMaZEoG5XA5vH3ByfRjtZf
         d6fChtIOnjeISsNRZLrXz8uE/cK4hxv55dqA+4qYe5se10PD9Q2f8XtvU4nAAPTYq9dY
         ZyvPoPoSJABf7Mnh8VqYs2W9WZmjKlfIEMYBsKQt/Juu/RNHzLBLgnuG4OGTbYS0lYCy
         rQqA==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20251104; t=1777386838; x=1777991638;
        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;
        bh=bJSZfDZmsT3CIOe+qmGhvl/hB/yKGv3ZJ6HZqE/FbGU=;
        b=PReBikdlPq6Yei4Ymis4ZBQ31q1qRImHjRDjc3+vk2lYEurIluSS+mnfcbAdhpXQa2
         +jSyMTEVqANq9RkCImBLpYDq3BiRBInUbEFOudZBIIrGoEPowxp4HJy4VkwvrLPhaP6+
         OdIgzAQqWd/7WNqycIH4JaQPb+iEtes9+89rSehTSkPSF2L6UMsTZcCR2s3jPKdh/5lz
         E69eyp9F6EpVAZ8Lw5KhpVFPmu6GhfNdhqFowNGC0ARP8QQ8waiwazWaE5KNKYHSUAsb
         7AcrnMZMEmj4BogITD3uwOftxUMkcfGip58B3GOeedRvKAkLTXqZlvT02WeC37x9gkzg
         +m2Q==
X-Gm-Message-State: AOJu0YyiMmXrqVt4dGs2niYM3I29CDM+lCTX82WHn1cRdxRG9Zjucwpe
	fjVJiuhJiz2AWKiW/xJcL7tEu1eYX6Z+ZAogQLmkgckWukbQDVo5aR41AcaiNg==
X-Gm-Gg: AeBDieu3g/A6h1TG0H5/O5M/jDbJJgZ8aGFkcUqts8582EC6Ei5i3r/dUtz5wirWQAu
	GGxwPsfBcref1u97vsjInCf9jFqbWS2OylQ96zMvyFzjcNGzaLxkZE6xon63bPfuN9fsqhQ+P3s
	efiwrwWNllp0z/0+nwYxxQCELTwodCzM59GBQYZmg/Ah6Bugg5Dbi409ldX5EKJmcannK01YAEI
	gl8qJtNWF0dUBiD8QQpIqdA7xiXoSzF6evCrWebtkW8zkSAbPlBob8noE6TqTPXh37We5ISoqGr
	CNbPEkI6YPXLfq7FfLPuQMDAnQp0DK2w7W1C4yFxBW+mnzFW6nARX63iLsgDgU7pEzvfbfsFe2a
	Vd/z/VD1R2QL6t/oVoF/C4QK+l7SzsxL5nqO20jw1RI34XcuierutEoFmXrFAehyCQ8QBDmLUa7
	sq8gdEnZOcnfQccCqByZQfYPqk7IhVOil7Gtc2UUqCwa04D0iTr5IsNY8TCwtt/YPav58V4zE54
	lEG
X-Received: by 2002:a05:600c:4f92:b0:489:19e9:b139 with SMTP id 5b1f17b1804b1-48a77ae54f4mr52698725e9.1.1777386837671;
        Tue, 28 Apr 2026 07:33:57 -0700 (PDT)
From: Oleksii Kurochko <oleksii.kurochko@gmail.com>
To: xen-devel@lists.xenproject.org
Cc: Romain Caritey <Romain.Caritey@microchip.com>,
	Oleksii Kurochko <oleksii.kurochko@gmail.com>,
	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=20Pau=20Monn=C3=A9?= <roger.pau@citrix.com>,
	Stefano Stabellini <sstabellini@kernel.org>
Subject: [PATCH v4 07/11] xen/riscv: add Linux kernel loading support
Date: Tue, 28 Apr 2026 16:33:36 +0200
Message-ID: <af89f0b696c5a1ae477dc0903a9a99b84df26f7a.1777303844.git.oleksii.kurochko@gmail.com>
X-Mailer: git-send-email 2.53.0
In-Reply-To: <cover.1777303844.git.oleksii.kurochko@gmail.com>
References: <cover.1777303844.git.oleksii.kurochko@gmail.com>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit
X-purgate-ID: tlsNG-d62444/1777386838-B727DFF4-D3108EBD/10/73395122804
X-purgate-type: spam
X-purgate-size: 11996

Introduce support for loading a Linux kernel Image which is got by
uncompressing of Image.gz on RISC-V.

kernel_image_load() and place_modules() currently call panic() on
failure rather than returning an error. This is because the common
kernel_load() in common/device-tree/kernel.c does not expect a
return code. Handling errors gracefully would require a separate
refactor.

The implementation is based on the Xen Arm kernel loading code.

text_offset is available for both 32-bit and 64-bit Image, so fix
that.

Signed-off-by: Oleksii Kurochko <oleksii.kurochko@gmail.com>
---
Changes in v4:
 - Update the patch subject: add "... Linux kernel ...".
 - Make bi variable unsigned. And use while() instead of for().
 - Update the condition which calculates overlapping of kernel with modules.
 - Reject a malformed image before the loop to avoid wrapping
   load_addr + image_size in the per-bankcheck below.
 - Use  mathematical representation to print ranges.
 - Use #error instead of just returning unsupported.
 - Update the comment above stuct image in kernel_image64_probe().
---
---
 xen/arch/riscv/Makefile             |   1 +
 xen/arch/riscv/include/asm/config.h |  13 ++
 xen/arch/riscv/kernel.c             | 242 ++++++++++++++++++++++++++++
 xen/include/xen/fdt-kernel.h        |  11 +-
 4 files changed, 265 insertions(+), 2 deletions(-)
 create mode 100644 xen/arch/riscv/kernel.c

diff --git a/xen/arch/riscv/Makefile b/xen/arch/riscv/Makefile
index cfc3fdf7d208..eecdcbc76867 100644
--- a/xen/arch/riscv/Makefile
+++ b/xen/arch/riscv/Makefile
@@ -8,6 +8,7 @@ obj-y += guestcopy.o
 obj-y += imsic.o
 obj-y += intc.o
 obj-y += irq.o
+obj-y += kernel.init.o
 obj-y += mm.o
 obj-y += p2m.o
 obj-y += paging.o
diff --git a/xen/arch/riscv/include/asm/config.h b/xen/arch/riscv/include/asm/config.h
index 0613de008b13..fd69057826e1 100644
--- a/xen/arch/riscv/include/asm/config.h
+++ b/xen/arch/riscv/include/asm/config.h
@@ -151,6 +151,19 @@
 extern unsigned long phys_offset; /* = load_start - XEN_VIRT_START */
 #endif
 
+/*
+ * KERNEL_LOAD_ADDR_ALIGNMENT is defined based on paragraph of
+ * "Kernel location" of boot.rst:
+ * https://docs.kernel.org/arch/riscv/boot.html#kernel-location
+ */
+#if defined(CONFIG_RISCV_32)
+#define KERNEL_LOAD_ADDR_ALIGNMENT MB(4)
+#elif defined(CONFIG_RISCV_64)
+#define KERNEL_LOAD_ADDR_ALIGNMENT MB(2)
+#else
+#error "Define KERNEL_LOAD_ADDR_ALIGNMENT"
+#endif
+
 #endif /* ASM__RISCV__CONFIG_H */
 /*
  * Local variables:
diff --git a/xen/arch/riscv/kernel.c b/xen/arch/riscv/kernel.c
new file mode 100644
index 000000000000..dd79f457732d
--- /dev/null
+++ b/xen/arch/riscv/kernel.c
@@ -0,0 +1,242 @@
+/* SPDX-License-Identifier: GPL-2.0-only */
+
+#include <xen/bug.h>
+#include <xen/compiler.h>
+#include <xen/errno.h>
+#include <xen/fdt-kernel.h>
+#include <xen/guest_access.h>
+#include <xen/init.h>
+#include <xen/libfdt/libfdt.h>
+#include <xen/mm.h>
+#include <xen/types.h>
+#include <xen/vmap.h>
+
+#include <asm/setup.h>
+
+#define IMAGE64_MAGIC_V2 0x05435352 /* Magic number 2, le, "RSC\x05" */
+
+static void __init place_modules(struct kernel_info *info, paddr_t kernbase,
+                                 paddr_t kernend)
+{
+    const struct boot_module *mod = info->bd.initrd;
+    const struct membanks *banks = kernel_info_get_mem_const(info);
+    const paddr_t initrd_len = ROUNDUP(mod ? mod->size : 0,
+                                       KERNEL_LOAD_ADDR_ALIGNMENT);
+    const paddr_t dtb_len = ROUNDUP(fdt_totalsize(info->fdt),
+                                    KERNEL_LOAD_ADDR_ALIGNMENT);
+    const paddr_t modsize = initrd_len + dtb_len;
+    unsigned int bi = banks->nr_banks;
+
+    BUG_ON(modsize < initrd_len);
+
+    /*
+     * Place modules as high in RAM as possible, scanning banks from
+     * last to first so that the end of the last bank is preferred.
+     */
+    while ( bi-- > 0 )
+    {
+        const struct membank *bank = &banks->bank[bi];
+        const paddr_t bank_end = bank->start + bank->size;
+        paddr_t modbase;
+
+        if ( modsize > bank->size )
+            continue;
+
+        modbase = ROUNDDOWN(bank_end - modsize, KERNEL_LOAD_ADDR_ALIGNMENT);
+
+        if ( modbase < bank->start )
+            continue;
+
+        /*
+         * If modules would overlap the kernel, try placing them below it.
+         */
+        if ( (modbase < ROUNDUP(kernend, KERNEL_LOAD_ADDR_ALIGNMENT)) &&
+             (modbase + modsize > kernbase) )
+        {
+            modbase = ROUNDDOWN(kernbase - modsize, KERNEL_LOAD_ADDR_ALIGNMENT);
+            if ( modbase < bank->start )
+                continue;
+        }
+
+        info->dtb_paddr = modbase;
+        info->initrd_paddr = modbase + dtb_len;
+
+        return;
+    }
+
+    panic("Unable to find suitable location for dtb+initrd\n");
+}
+
+static paddr_t __init kernel_image_place(struct kernel_info *info)
+{
+    paddr_t load_addr = INVALID_PADDR;
+    uint64_t image_size = info->image.image_size ?: info->image.len;
+    const struct membanks *banks = kernel_info_get_mem_const(info);
+    unsigned int nr_banks = banks->nr_banks;
+    unsigned int bi;
+
+    dprintk(XENLOG_DEBUG, "nr_banks(%u)\n", nr_banks);
+
+    /*
+     * At the moment, RISC-V's Linux kernel should be always position
+     * independent based on "Per-MMU execution" of boot.rst:
+     *   https://docs.kernel.org/arch/riscv/boot.html#pre-mmu-execution
+     *
+     * But just for the case when RISC-V's Linux kernel isn't position
+     * independent it is needed to take load address from
+     * info->image.start.
+     *
+     * If `start` is zero, the Image is position independent.
+     */
+    if ( likely(!info->image.start) )
+    {
+        for ( bi = 0; bi != nr_banks; bi++ )
+        {
+            const struct membank *bank = &banks->bank[bi];
+            paddr_t bank_start = bank->start;
+            /*
+             * According to boot.rst kernel load address should be properly
+             * aligned:
+             *   https://docs.kernel.org/arch/riscv/boot.html#kernel-location
+             *
+             * As Image in this case is PIC we can ignore
+             * info->image.text_offset.
+             */
+            paddr_t aligned_start = ROUNDUP(bank_start, KERNEL_LOAD_ADDR_ALIGNMENT);
+            paddr_t bank_end = bank_start + bank->size;
+            paddr_t bank_size;
+
+            if ( aligned_start > bank_end )
+                continue;
+
+            bank_size = bank_end - aligned_start;
+
+            dprintk(XENLOG_DEBUG, "bank[%u].start=%"PRIpaddr"\n", bi, bank->start);
+
+            if ( image_size <= bank_size )
+            {
+                load_addr = aligned_start;
+                break;
+            }
+        }
+    }
+    else
+    {
+        load_addr = info->image.start + info->image.text_offset;
+
+        WARN_ON(!IS_ALIGNED(load_addr, KERNEL_LOAD_ADDR_ALIGNMENT));
+
+        /*
+         * Reject a malformed image before the loop to avoid wrapping
+         * load_addr + image_size in the per-bank check below by setting
+         * bi = nr_banks.
+         *
+         * image_size covers the kernel from _start (placed at load_addr =
+         * start + text_offset) through _end.  The alignment gap
+         * [start, load_addr) is padding and need not lie within a bank.
+         */
+        bi = image_size <= (paddr_t)-1 - load_addr ? 0 : nr_banks;
+        for ( ; bi != nr_banks; bi++ )
+        {
+            const struct membank *bank = &banks->bank[bi];
+            paddr_t bank_start = bank->start;
+            paddr_t bank_end = bank_start + bank->size;
+
+            if ( (load_addr >= bank_start) &&
+                 (load_addr + image_size <= bank_end) )
+                break;
+        }
+    }
+
+    if ( bi == nr_banks )
+        panic("Failed to place kernel image in any memory bank\n");
+
+    info->entry = load_addr;
+
+    return load_addr;
+}
+
+static void __init kernel_image_load(struct kernel_info *info)
+{
+    int rc;
+    paddr_t load_addr = kernel_image_place(info);
+    paddr_t paddr = info->image.kernel_addr;
+    paddr_t len = info->image.len;
+    paddr_t effective_size = info->image.image_size ?: len;
+    void *kernel;
+
+    place_modules(info, load_addr, load_addr + effective_size);
+
+    printk("Loading Image from %"PRIpaddr" to [%"PRIpaddr",%"PRIpaddr")\n",
+            paddr, load_addr, load_addr + effective_size);
+
+    kernel = ioremap_cache(paddr, len);
+
+    if ( !kernel )
+        panic("Unable to map kernel\n");
+
+    /* Move kernel to proper location in guest phys map */
+    rc = copy_to_guest_phys(info->bd.d, load_addr, kernel, len);
+
+    if ( rc )
+        panic("Unable to copy kernel to proper guest location\n");
+
+    iounmap(kernel);
+}
+
+/* Check if the image is a 64-bit Image */
+static int __init kernel_image64_probe(struct kernel_info *info,
+                                       paddr_t addr, paddr_t size)
+{
+    /* https://www.kernel.org/doc/Documentation/riscv/boot-image-header.rst */
+    struct {
+        uint32_t code0;         /* Executable code */
+        uint32_t code1;         /* Executable code */
+        uint64_t text_offset;   /* Image load offset, little endian */
+        uint64_t image_size;    /* Effective Image size, little endian */
+        uint64_t flags;         /* kernel flags, little endian */
+        uint32_t version;       /* Version of this header */
+        uint32_t res1;          /* Reserved */
+        uint64_t res2;          /* Reserved */
+        uint64_t magic;         /* Deprecated: Magic number, little endian, "RISCV" */
+        uint32_t magic2;        /* Magic number 2, little endian, "RSC\x05" */
+        uint32_t res3;          /* Reserved for PE COFF offset */
+    } image;
+    uint64_t effective_size;
+
+    if ( size < sizeof(image) )
+        return -EINVAL;
+
+    copy_from_paddr(&image, addr, sizeof(image));
+
+    /* Magic v1 is deprecated and may be removed.  Only use v2 */
+    if ( le32_to_cpu(image.magic2) != IMAGE64_MAGIC_V2 )
+        return -EINVAL;
+
+    effective_size = le64_to_cpu(image.image_size);
+
+    if ( effective_size && size > effective_size )
+        return -EINVAL;
+
+    info->image.kernel_addr = addr;
+    /* Actual size in the binary file */
+    info->image.len = size;
+    /* Total memory the kernel occupies at runtime */
+    info->image.image_size = effective_size;
+    info->image.text_offset = le64_to_cpu(image.text_offset);
+    info->image.start = 0;
+
+    info->load = kernel_image_load;
+
+    return 0;
+}
+
+int __init kernel_image_probe(struct kernel_info *info, paddr_t addr,
+                              paddr_t size)
+{
+#ifdef CONFIG_RISCV_64
+    return kernel_image64_probe(info, addr, size);
+#else
+#   error "Only 64-bit RISC-V is supported"
+#endif
+}
diff --git a/xen/include/xen/fdt-kernel.h b/xen/include/xen/fdt-kernel.h
index 54be77aa191e..c69da642eba8 100644
--- a/xen/include/xen/fdt-kernel.h
+++ b/xen/include/xen/fdt-kernel.h
@@ -59,8 +59,15 @@ struct kernel_info {
         struct {
             paddr_t kernel_addr;
             paddr_t len;
-#if defined(CONFIG_ARM_64) || defined(CONFIG_RISCV_64)
-            paddr_t text_offset; /* 64-bit Image only */
+#if defined(CONFIG_ARM_64) || defined(CONFIG_RISCV)
+            /*
+             * ARM: 64-bit Image only.
+             * RISC-V: both 32-bit and 64-bit Images.
+             */
+            paddr_t text_offset;
+#endif
+#if defined(CONFIG_RISCV)
+            uint64_t image_size; /* Effective size of Image */
 #endif
             paddr_t start; /* Must be 0 for 64-bit Image */
         } image;
-- 
2.53.0



From xen-devel-bounces@lists.xenproject.org Tue Apr 28 14:34:11 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 28 Apr 2026 14:34:11 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1296336.1572796 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wHjVf-0006du-Re; Tue, 28 Apr 2026 14:33:59 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1296336.1572796; Tue, 28 Apr 2026 14:33: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 1wHjVf-0006dm-OC; Tue, 28 Apr 2026 14:33:59 +0000
Received: by outflank-mailman (input) for mailman id 1296336;
 Tue, 28 Apr 2026 14:33:58 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92) id 1wHjVe-0006KX-3x
 for xen-devel@lists.xenproject.org; Tue, 28 Apr 2026 14:33:58 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wHjVd-008e9B-Fy
 for xen-devel@lists.xenproject.org; Tue, 28 Apr 2026 16:33:57 +0200
Received: from [10.42.69.10] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <oleksii.kurochko@gmail.com>)
 id 69f0c549-e002-0a2a0a5209dd-0a2a450ab9ca-34
 for <xen-devel@lists.xenproject.org>; Tue, 28 Apr 2026 16:33:57 +0200
Received: from [209.85.128.46] (helo=mail-wm1-f46.google.com)
 by tlsNG-4011c0.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.1)
 (envelope-from <oleksii.kurochko@gmail.com>)
 id 69f0c555-56b3-0a2a450a0019-d155802ed89e-3
 for <xen-devel@lists.xenproject.org>; Tue, 28 Apr 2026 16:33:57 +0200
Received: by mail-wm1-f46.google.com with SMTP id
 5b1f17b1804b1-4891c00e7aeso88343765e9.2
 for <xen-devel@lists.xenproject.org>; Tue, 28 Apr 2026 07:33:57 -0700 (PDT)
Received: from fedora (user-109-243-69-121.play-internet.pl. [109.243.69.121])
 by smtp.gmail.com with ESMTPSA id
 5b1f17b1804b1-48a774b6300sm19302145e9.16.2026.04.28.07.33.55
 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
 Tue, 28 Apr 2026 07:33:56 -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=20251104 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=20251104; t=1777386837; x=1777991637; 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;
        bh=0p2rPrjn5OibxQ2M64WVzW16uHfFGsN8U9iQfuox9F0=;
        b=q6v3sotR/hyBodh/pDMvS1DuMVm/Yd1KxIgFhrgnKNAUp6sbkHGym9vcp/6uQxtwqm
         /eBPFrmyVJdrxFedaxIEQMdWr8lKOyCtkGrhyYehP/eZnxO3HPg6tjEJ4JgmmRck5U6E
         hK7pd660ayqk+nBfC0OCL6WvitbBlRWC/2pgr5qB9Z160LjDSIFpGrKjFoSV3mFGZkY3
         5xn2+77UrS29iBW0zs+4ag/JwY8aSrPs6skzJwrAnwVlreyNAWkU4PrxAGlfEFS8dVlh
         xddDTE4SN3n4xxRj1M5Typ70MlNPlQbvzupZvABhDKZKp+k1SN6RgTy4sQzv3IP0vYlK
         noxA==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20251104; t=1777386837; x=1777991637;
        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;
        bh=0p2rPrjn5OibxQ2M64WVzW16uHfFGsN8U9iQfuox9F0=;
        b=HzjMas+ZwCR7enQcfC4acpo1yjxUFCkaJ35uca6yzWuw3gMDSKAGNAdUn7PpqBrP9X
         OVXGC+EnYY7TGEK89CU/oofMcoG3HOUp+9OpkNoR8T5r1/cbEnYkAfe2z9iaC0L66q5s
         kzsSkTpmVwoV0FnRB8qyumLItaw085F0CwWk90uA3QBi0mOPIV/yxHgI8Ipno7qjLXU7
         DMaOk2/jLKD8ZvzkoLBFfefnj237dQyBNalwITlyUaECAUQXyL9BW2uTWXbFgMdB77N2
         Gpp+tQF5CJIV7dEl6eWfQLmLbpQW8+YlRIe+1b+jO1K6wv6NqvFoYq1WCOcK6euFJbA8
         TwMA==
X-Gm-Message-State: AOJu0Yza4gdwr/Vy9SfBF7JjaeeNvu+bYvercHhPCJ2KkIUVK8Zfd8Ph
	qdyOGqttnjL8MOeJzP7AJbRJ0OoUr0JA5Kij0pQpGtN9cqECBlG8f3GTxYAPPg==
X-Gm-Gg: AeBDieu2kHbF6Y+3HwMGqNuz16+z4F5238/FsaKIUXKscf45bj+I6clpMQLNlHud3uk
	xzXwp62/Pww/iP65vvK9hcHHo08oX/r1ZvGaYLdkJIeGgH/IpmGHdIHAKWCSq0W03HTkL9g2hZ4
	AqG4Ocw7MQU2ntbI3Eaic7R0QsS4Us2gx/pDX3qMoDDh4EpqmHlnJItRpRCx3/NJR/3HBH+bV51
	/PGNYuaUZw4XH73M6987kLRhxw9Rwn74G6j7D3fXnq32y1pFysFdJw6yHBOC7J9iBET6P/NNvJ5
	gvdvVBhecS9mIenBN/pJZe1HUV2INzcN1lQZP6tLfLm6H+AYqrsnqzUvDb1xwn2DpQzwJH7Bgl9
	e+tM/EleJV68U8Qd/cKjeVJSgVF0374gml4BFyg2D0pJRsNY4MM2nwhvnWYe/PB/2NVNDAvtWUN
	I3zn1aiO4AmnBxXQh7+QYAOh/BBm9+Axk3ysR49mY44LwvTQCoyqU79CYcPT/xPXLtYOh7rXxe3
	389
X-Received: by 2002:a05:600c:1c20:b0:489:1aed:1658 with SMTP id 5b1f17b1804b1-48a77b241admr55613805e9.23.1777386836472;
        Tue, 28 Apr 2026 07:33:56 -0700 (PDT)
From: Oleksii Kurochko <oleksii.kurochko@gmail.com>
To: xen-devel@lists.xenproject.org
Cc: Romain Caritey <Romain.Caritey@microchip.com>,
	Oleksii Kurochko <oleksii.kurochko@gmail.com>,
	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=20Pau=20Monn=C3=A9?= <roger.pau@citrix.com>,
	Stefano Stabellini <sstabellini@kernel.org>
Subject: [PATCH v4 06/11] xen/riscv: implement copy_to_guest_phys()
Date: Tue, 28 Apr 2026 16:33:35 +0200
Message-ID: <a3845dccd5667299cbc0535e0056972e56dff942.1777303844.git.oleksii.kurochko@gmail.com>
X-Mailer: git-send-email 2.53.0
In-Reply-To: <cover.1777303844.git.oleksii.kurochko@gmail.com>
References: <cover.1777303844.git.oleksii.kurochko@gmail.com>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit
X-purgate-ID: tlsNG-4011c0/1777386837-467758B7-47A8CE3E/10/73395122804
X-purgate-type: spam
X-purgate-size: 6519

Introduce copy_to_guest_phys() for RISC-V, based on the Arm implementation.

Add a generic copy_guest() helper for copying to and from guest physical
(and potentially virtual addresses in the future), and implement
translate_get_page() to translate a guest physical address into a struct
page_info via the domain p2m.

Compared to the Arm code:
- Drop COPY_flush_dcache(), as no such use cases exist on RISC-V.
- Do not implement the linear mapping case, which is currently unused.
- Use PAGE_OFFSET() to initialize the local offset variable in copy_guest().

Signed-off-by: Oleksii Kurochko <oleksii.kurochko@gmail.com>
Acked-by: Jan Beulich <jbeulich@suse.com>
---
Changes in v4:
 - Avoid using of min_t. (sync with Arm)
 - Add Acked-by: Jan Beulich <jbeulich@suse.com>.
---
Changes in v3:
 - s/if (page == NULL)/if ( !page ).
 - Drop " - offset" for unmap_domain_page() inside copy_guest() function.
   unmap_domain_page() is expected to mask (or something similar) the page
   offset bits.
 - Change some types for functions as copy_to_guest_phys_cb function pointer
   prototype was changed too in the prev. commit.
---
Changes in v2:
 - Use BIT() instead of open-coding.
 - Rename COPY_ipa to COPY_gpa.
 - Rename COPY_linear to COPY_gva.
 - Use  BUG_ON(linear) instead if (lineer) + BUG_ON.
 - Rename arg liner to gva for translate_get_page().
 - Update translate_get_page() to properly handling write argument.
 - Return unsigned int for copy_guest() and copy_to_guest_phys() as
   len function parameter is only 'unsigned int'.
 - Reformat function arguments for alignment
---
---
 xen/arch/riscv/Makefile                   |   1 +
 xen/arch/riscv/guestcopy.c                | 116 ++++++++++++++++++++++
 xen/arch/riscv/include/asm/guest_access.h |   7 ++
 3 files changed, 124 insertions(+)
 create mode 100644 xen/arch/riscv/guestcopy.c

diff --git a/xen/arch/riscv/Makefile b/xen/arch/riscv/Makefile
index 04f02ad89cba..cfc3fdf7d208 100644
--- a/xen/arch/riscv/Makefile
+++ b/xen/arch/riscv/Makefile
@@ -4,6 +4,7 @@ obj-y += domain.o
 obj-$(CONFIG_EARLY_PRINTK) += early_printk.o
 obj-y += entry.o
 obj-y += extable.o
+obj-y += guestcopy.o
 obj-y += imsic.o
 obj-y += intc.o
 obj-y += irq.o
diff --git a/xen/arch/riscv/guestcopy.c b/xen/arch/riscv/guestcopy.c
new file mode 100644
index 000000000000..8a89212e0bea
--- /dev/null
+++ b/xen/arch/riscv/guestcopy.c
@@ -0,0 +1,116 @@
+/* SPDX-License-Identifier: GPL-2.0-only */
+
+#include <xen/domain_page.h>
+#include <xen/page-size.h>
+#include <xen/sched.h>
+#include <xen/string.h>
+
+#include <asm/guest_access.h>
+
+#define COPY_from_guest     0U
+#define COPY_to_guest       BIT(0, U)
+#define COPY_gpa            0U
+#define COPY_gva            BIT(1, U)
+
+typedef union
+{
+    struct
+    {
+        struct vcpu *v;
+    } gva;
+
+    struct
+    {
+        struct domain *d;
+    } gpa;
+} copy_info_t;
+
+#define GVA_INFO(vcpu) ((copy_info_t) { .gva = { vcpu } })
+#define GPA_INFO(domain) ((copy_info_t) { .gpa = { domain } })
+
+static struct page_info *translate_get_page(copy_info_t info, uint64_t addr,
+                                            bool gva, bool write)
+{
+    p2m_type_t p2mt;
+    struct page_info *page;
+
+    /*
+     * Not implemented yet.
+     *
+     * If gva == true, the operation will likely require a struct vcpu
+     * rather than just a struct domain. For this reason copy_info_t is
+     * already passed here instead of only struct domain.
+     */
+    BUG_ON(gva);
+
+    page = get_page_from_gfn(info.gpa.d, paddr_to_pfn(addr), &p2mt, P2M_ALLOC);
+
+    if ( !page )
+        return NULL;
+
+    if ( write ? p2mt != p2m_ram_rw : !p2m_is_ram(p2mt) )
+    {
+        put_page(page);
+        return NULL;
+    }
+
+    return page;
+}
+
+static unsigned long copy_guest(void *buf, uint64_t addr, unsigned long len,
+                                copy_info_t info, unsigned int flags)
+{
+    unsigned int offset = PAGE_OFFSET(addr);
+
+    BUILD_BUG_ON((sizeof(addr)) < sizeof(vaddr_t));
+    BUILD_BUG_ON((sizeof(addr)) < sizeof(paddr_t));
+
+    while ( len )
+    {
+        void *p;
+        unsigned long size = min(len, PAGE_SIZE + 0UL - offset);
+        struct page_info *page;
+
+        page = translate_get_page(info, addr, flags & COPY_gva,
+                                  flags & COPY_to_guest);
+        if ( !page )
+            return len;
+
+        p = __map_domain_page(page);
+        p += offset;
+        if ( flags & COPY_to_guest )
+        {
+            /*
+             * buf will be NULL when the caller request to zero the
+             * guest memory.
+             */
+            if ( buf )
+                memcpy(p, buf, size);
+            else
+                memset(p, 0, size);
+        }
+        else
+            memcpy(buf, p, size);
+
+        unmap_domain_page(p);
+        put_page(page);
+        len -= size;
+        buf += size;
+        addr += size;
+
+        /*
+         * After the first iteration, guest virtual address is correctly
+         * aligned to PAGE_SIZE.
+         */
+        offset = 0;
+    }
+
+    return 0;
+}
+
+unsigned long copy_to_guest_phys(struct domain *d, paddr_t gpa, void *buf,
+                                 unsigned long len)
+{
+    return copy_guest(buf, gpa, len, GPA_INFO(d),
+                      COPY_to_guest | COPY_gpa);
+}
diff --git a/xen/arch/riscv/include/asm/guest_access.h b/xen/arch/riscv/include/asm/guest_access.h
index 7cd51fbbdead..8d679319ded0 100644
--- a/xen/arch/riscv/include/asm/guest_access.h
+++ b/xen/arch/riscv/include/asm/guest_access.h
@@ -2,6 +2,10 @@
 #ifndef ASM__RISCV__GUEST_ACCESS_H
 #define ASM__RISCV__GUEST_ACCESS_H
 
+#include <xen/types.h>
+
+struct domain;
+
 unsigned long raw_copy_to_guest(void *to, const void *from, unsigned len);
 unsigned long raw_copy_from_guest(void *to, const void *from, unsigned len);
 unsigned long raw_clear_guest(void *to, unsigned int len);
@@ -18,6 +22,9 @@ unsigned long raw_clear_guest(void *to, unsigned int len);
 #define guest_handle_okay(hnd, nr) (1)
 #define guest_handle_subrange_okay(hnd, first, last) (1)
 
+unsigned long copy_to_guest_phys(struct domain *d, paddr_t gpa, void *buf,
+                                 unsigned long len);
+
 #endif /* ASM__RISCV__GUEST_ACCESS_H */
 /*
  * Local variables:
-- 
2.53.0



From xen-devel-bounces@lists.xenproject.org Tue Apr 28 14:34:11 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 28 Apr 2026 14:34:11 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1296332.1572777 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wHjVd-00068u-94; Tue, 28 Apr 2026 14:33:57 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1296332.1572777; Tue, 28 Apr 2026 14:33: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 1wHjVd-00068g-52; Tue, 28 Apr 2026 14:33:57 +0000
Received: by outflank-mailman (input) for mailman id 1296332;
 Tue, 28 Apr 2026 14:33:55 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92) id 1wHjVb-0005q2-KS
 for xen-devel@lists.xenproject.org; Tue, 28 Apr 2026 14:33:55 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wHjVb-000RTW-06
 for xen-devel@lists.xenproject.org; Tue, 28 Apr 2026 16:33:55 +0200
Received: from [10.42.69.1] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <oleksii.kurochko@gmail.com>)
 id 69f0c548-2eae-0a2a0a5409dd-0a2a4501d626-32
 for <xen-devel@lists.xenproject.org>; Tue, 28 Apr 2026 16:33:54 +0200
Received: from [209.85.128.48] (helo=mail-wm1-f48.google.com)
 by tlsNG-d62444.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.1)
 (envelope-from <oleksii.kurochko@gmail.com>)
 id 69f0c552-c1f2-0a2a45010019-d1558030e130-3
 for <xen-devel@lists.xenproject.org>; Tue, 28 Apr 2026 16:33:54 +0200
Received: by mail-wm1-f48.google.com with SMTP id
 5b1f17b1804b1-488a8ca4aadso159479825e9.3
 for <xen-devel@lists.xenproject.org>; Tue, 28 Apr 2026 07:33:54 -0700 (PDT)
Received: from fedora (user-109-243-69-121.play-internet.pl. [109.243.69.121])
 by smtp.gmail.com with ESMTPSA id
 5b1f17b1804b1-48a774b6300sm19302145e9.16.2026.04.28.07.33.52
 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
 Tue, 28 Apr 2026 07:33:53 -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=20251104 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=20251104; t=1777386834; x=1777991634; 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;
        bh=HJckSt8P9RqMXs+Zl/HaWVhTtv7+MRR8ow5oSeYh3yY=;
        b=aJC1bUhZBM9AD45Wb3MiNlGtFtG7eDZCQM2oAj2ssWcEV7FEjGug8IPJsNKFKf73CZ
         0rvc9jIDmDQMmruswVfd0sZ7ueWKE8bQVwK2y4lA0Y9faeRgVDGZAqZmyEySayLck4dX
         oWp+wB+IMLGN3WCrJwXbyGWRK9vdbCgon3Hh2n76fk6FlJ+UH4GO5+6q5JXLUMGzFffl
         XyFkwLm6N9nSI04U7oVBtzKuv4mvKt2205KD1Yzu0P2B44XT/J9D1gW9UWszsJzVWuKP
         ncriXmvR/E9xN2kKrDE+My20XvM7uvThOqO3N31Og7RY0n6AybjeIcdKYzs6I1YmO7+i
         UEjQ==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20251104; t=1777386834; x=1777991634;
        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;
        bh=HJckSt8P9RqMXs+Zl/HaWVhTtv7+MRR8ow5oSeYh3yY=;
        b=RA67P6BElqwmNTG69n/r7QXsgAPYv0KtCf8IgnQr4yyvuA7C0KNuxI3aYvfBIDj2E6
         4o5XIn5loUghxa9RLiMAYIYBTTLDO36Wubax6tfjeURJHiFAYRdrsiZEDMf7DUQiWrmG
         1tRPaij6byl4BAT8P+zVJZwg5eOUKy0JurzWWb+moPtlWbKtBUwZ7BduY8zgYJK5shu9
         cM59jUKny9IMD9ZflOxxP0UMui7NKT6VPlgtOOIDIlVo2FusS9e+QMcz3gm2HchFseaM
         XgzuUUaTuB75qjHHaGa8EtPYXtbo1Pyj1B+o++NXDBYKQ3KFDaWIR9LYdlK8oYnBli/0
         nUeA==
X-Gm-Message-State: AOJu0YxDTPtSSovlmWF6ItfOMXEfhWXT/qjS7Nvd6TJqD59HocWmXUUm
	i/bdN+hGjIlFnyemY+6P7fOlOFlsulmWQeqkDE5tH0S40foVyjx8z2WEeNYTdw==
X-Gm-Gg: AeBDievu8oOpC2LX+h55udKrwlbZppy0Vhg5Z3gDOE8dwOttHsh+xIUiJeJh4275hRJ
	ijA9dgULWk97bJzt6gUa3Ppwm+/nKtb3YtDzQnaYrk6kWGwQek4OVxdrIWLdyndHFft3UNu9vVr
	pnNP1Pj3lgnI5Fku7f18sWrAZe/KYvlONqwwijNZss0Ad/x8ckgIwrgj/aJMc9sxYb7iX8yhbi2
	DlE3Vd0SDbUtpbV4H06VOoa5U54aoiQR8eI8GnPOGqXQ+CV8tB6D7Ssm3orLj5vc0oEC1p/YMDh
	GYNVBj9B/ZTLTZJkdOfHGsHVXHErWV3SjZZtiz1+2nYoYl+xiKg+rVeF80H5X+aBOfG8zCWe8Bk
	RTOhA1alY+kmt0zwLsqglZckOjh7ocaXhGj4ZZlu0FS/v8/jUa9u9xl6NQdtuVdrnsE/7N6yqPZ
	9KZwDN5XZC+8kIAHURd/1oRI3Q0mRUJAWmOwcoBzzUdO34POZBG2c8kab7BjMojkyAHJuKbGfWC
	HHVNuvHdvnVWZM=
X-Received: by 2002:a05:600c:3b15:b0:488:9439:881a with SMTP id 5b1f17b1804b1-48a77ae5448mr61360215e9.2.1777386833911;
        Tue, 28 Apr 2026 07:33:53 -0700 (PDT)
From: Oleksii Kurochko <oleksii.kurochko@gmail.com>
To: xen-devel@lists.xenproject.org
Cc: Romain Caritey <Romain.Caritey@microchip.com>,
	Oleksii Kurochko <oleksii.kurochko@gmail.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?q?Roger=20Pau=20Monn=C3=A9?= <roger.pau@citrix.com>
Subject: [PATCH v4 04/11] xen: introduce domain-layout.h with common domain_use_host_layout()
Date: Tue, 28 Apr 2026 16:33:33 +0200
Message-ID: <2577e757d32f85fb8b3308863e6d7a53d70636dc.1777303844.git.oleksii.kurochko@gmail.com>
X-Mailer: git-send-email 2.53.0
In-Reply-To: <cover.1777303844.git.oleksii.kurochko@gmail.com>
References: <cover.1777303844.git.oleksii.kurochko@gmail.com>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit
X-purgate-ID: tlsNG-d62444/1777386834-BC410FF4-DCFBBF00/10/73395122804
X-purgate-type: spam
X-purgate-size: 5464

domain_use_host_layout() is not architecture-specific and may be needed
on x86 [1]. Replace the ARM-specific macro in asm/domain.h with a common
static inline in a new dedicated header, xen/domain-layout.h.

xen/domain.h would be the natural home, but placing it there would
require including xen/paging.h (for paging_mode_translate()) and
xen/sched.h (for is_hardware_domain()), which would introduce circular
dependencies. A separate header that callers opt into avoids this.

Adjust the implementation to take paging_mode_translate() into account
so it works correctly for all architectures, including x86. Some extra
details about implementation [2] and [3].

[1] https://lore.kernel.org/xen-devel/alpine.DEB.2.22.394.2602161038120.359097@ubuntu-linux-20-04-desktop/
[2] https://lore.kernel.org/xen-devel/alpine.DEB.2.22.394.2602271742400.3148344@ubuntu-linux-20-04-desktop/
[3] https://lore.kernel.org/xen-devel/alpine.DEB.2.22.394.2602271750190.3148344@ubuntu-linux-20-04-desktop/

Suggested-by: Stefano Stabellini <sstabellini@kernel.org>
Signed-off-by: Oleksii Kurochko <oleksii.kurochko@gmail.com>
---
Changes in v4:
 - Update the comment above domain_use_host_layout().
---
Changes in v3:
 - Make argument of domain_use_host_layout() const.
 - Create a separate header to avoid circular heder dependecy and making
   domain_use_host_layour() as static inline.
 - Rework domain_use_host_layout() to be protected by paging_mode_translate().
 - Update the commit message.
---
Changes in v2:
 - Drop ifdef around defintion of domain_use_host_layout() as it
   was suggested generic version. It could be returned back when
   the real use case for it will appear.
 - Add Suggested-by: and update the commit message.
 - Make domain_use_host_layout() function instead of macros to
   avoid ciclular header dependecies. Look at more details in
   the commit message.
---
---
 xen/arch/arm/domain_build.c           |  1 +
 xen/arch/arm/include/asm/domain.h     | 14 --------------
 xen/arch/arm/vgic-v3.c                |  1 +
 xen/common/device-tree/domain-build.c |  1 +
 xen/include/xen/domain-layout.h       | 27 +++++++++++++++++++++++++++
 5 files changed, 30 insertions(+), 14 deletions(-)
 create mode 100644 xen/include/xen/domain-layout.h

diff --git a/xen/arch/arm/domain_build.c b/xen/arch/arm/domain_build.c
index ad665cd3c045..1efddc60ef0a 100644
--- a/xen/arch/arm/domain_build.c
+++ b/xen/arch/arm/domain_build.c
@@ -2,6 +2,7 @@
 #include <xen/init.h>
 #include <xen/bootinfo.h>
 #include <xen/compile.h>
+#include <xen/domain-layout.h>
 #include <xen/dom0less-build.h>
 #include <xen/fdt-domain-build.h>
 #include <xen/fdt-kernel.h>
diff --git a/xen/arch/arm/include/asm/domain.h b/xen/arch/arm/include/asm/domain.h
index b24f02d269be..46a5cdc0c800 100644
--- a/xen/arch/arm/include/asm/domain.h
+++ b/xen/arch/arm/include/asm/domain.h
@@ -18,20 +18,6 @@ struct hvm_domain
     uint64_t              params[HVM_NR_PARAMS];
 };
 
-/*
- * Is the domain using the host memory layout?
- *
- * Direct-mapped domain will always have the RAM mapped with GFN == MFN.
- * To avoid any trouble finding space, it is easier to force using the
- * host memory layout.
- *
- * The hardware domain will use the host layout regardless of
- * direct-mapped because some OS may rely on a specific address ranges
- * for the devices.
- */
-#define domain_use_host_layout(d) (is_domain_direct_mapped(d) || \
-                                   is_hardware_domain(d))
-
 struct vtimer {
     struct vcpu *v;
     int irq;
diff --git a/xen/arch/arm/vgic-v3.c b/xen/arch/arm/vgic-v3.c
index 77aab5c3c293..77517c303061 100644
--- a/xen/arch/arm/vgic-v3.c
+++ b/xen/arch/arm/vgic-v3.c
@@ -10,6 +10,7 @@
  */
 
 #include <xen/bitops.h>
+#include <xen/domain-layout.h>
 #include <xen/init.h>
 #include <xen/irq.h>
 #include <xen/lib.h>
diff --git a/xen/common/device-tree/domain-build.c b/xen/common/device-tree/domain-build.c
index c51520ebadf9..6949203dacdc 100644
--- a/xen/common/device-tree/domain-build.c
+++ b/xen/common/device-tree/domain-build.c
@@ -1,6 +1,7 @@
 /* SPDX-License-Identifier: GPL-2.0-only */
 
 #include <xen/bootinfo.h>
+#include <xen/domain-layout.h>
 #include <xen/fdt-domain-build.h>
 #include <xen/init.h>
 #include <xen/lib.h>
diff --git a/xen/include/xen/domain-layout.h b/xen/include/xen/domain-layout.h
new file mode 100644
index 000000000000..0532a27b44ce
--- /dev/null
+++ b/xen/include/xen/domain-layout.h
@@ -0,0 +1,27 @@
+#ifndef __XEN_DOMAIN_LAYOUT_H__
+#define __XEN_DOMAIN_LAYOUT_H__
+
+#include <xen/domain.h>
+#include <xen/paging.h>
+#include <xen/sched.h>
+
+/*
+ * Is a domain using the host memory layout?
+ *
+ * domain_use_host_layout() is always False for PV domains (including Dom0).
+ *
+ * Direct-mapped domains (autotranslated domains with memory allocated
+ * contiguously and mapped 1:1 so that GFN == MFN) must use the host
+ * memory layout since GFN == MFN by definition.
+ *
+ * The hardware domain will use the host layout (regardless of
+ * direct-mapped) because some OS may rely on specific address ranges
+ * for the devices.
+ */
+static inline bool domain_use_host_layout(const struct domain *d)
+{
+    return paging_mode_translate(d) &&
+           (is_domain_direct_mapped(d) || is_hardware_domain(d));
+}
+
+#endif /* __XEN_DOMAIN_LAYOUT_H__ */
-- 
2.53.0



From xen-devel-bounces@lists.xenproject.org Tue Apr 28 14:34:11 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 28 Apr 2026 14:34:11 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1296327.1572743 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wHjVX-0005ET-5q; Tue, 28 Apr 2026 14:33:51 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1296327.1572743; Tue, 28 Apr 2026 14:33: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 1wHjVX-0005EM-1y; Tue, 28 Apr 2026 14:33:51 +0000
Received: by outflank-mailman (input) for mailman id 1296327;
 Tue, 28 Apr 2026 14:33:50 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92) id 1wHjVW-0005EG-Gj
 for xen-devel@lists.xenproject.org; Tue, 28 Apr 2026 14:33:50 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wHjVV-000RTW-Nw
 for xen-devel@lists.xenproject.org; Tue, 28 Apr 2026 16:33:49 +0200
Received: from [10.42.69.1] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <oleksii.kurochko@gmail.com>)
 id 69f0c548-2eae-0a2a0a5409dd-0a2a4501d626-10
 for <xen-devel@lists.xenproject.org>; Tue, 28 Apr 2026 16:33:49 +0200
Received: from [209.85.128.48] (helo=mail-wm1-f48.google.com)
 by tlsNG-d62444.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.1)
 (envelope-from <oleksii.kurochko@gmail.com>)
 id 69f0c54d-c1f2-0a2a45010019-d1558030ccf7-3
 for <xen-devel@lists.xenproject.org>; Tue, 28 Apr 2026 16:33:49 +0200
Received: by mail-wm1-f48.google.com with SMTP id
 5b1f17b1804b1-48984d29fe3so139789325e9.0
 for <xen-devel@lists.xenproject.org>; Tue, 28 Apr 2026 07:33:49 -0700 (PDT)
Received: from fedora (user-109-243-69-121.play-internet.pl. [109.243.69.121])
 by smtp.gmail.com with ESMTPSA id
 5b1f17b1804b1-48a774b6300sm19302145e9.16.2026.04.28.07.33.47
 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
 Tue, 28 Apr 2026 07:33:48 -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=20251104 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=20251104; t=1777386829; x=1777991629; 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;
        bh=d87OtETY/HDHZSyvkF1z/eDjSpJPpBjmfUMMYJKhrzU=;
        b=IzvajUon0PUakXEs8cQSMv+OSt9ebkwGfR+JEp5FEzXg0W9PSl7P5FL9bM0qlDo9Ke
         OvZpqa+Lah/5wo70BVShFqqiu5+r4dd79GujVEL3/Ux2Kb25OU5sbUPieV6OfOvx9CDM
         XuC+SCgd/RDOSLyTQaAATqB1AbzhgnP9rq2GTWtk/at9COtJG6LCm+rRZtgZWNndYvU5
         VHXacwo+jbdh3lSEyjznQ45La0FXdMC0M7zsSLabui8j1rRZzELuPuvU/KYRFi3XwDjw
         XW3Zl9VG5bkrVwDxUYsXkC9HhureQJjGSp2LTYmxIs2MF05pPC9fFU42/Fm+7xYoaTAF
         PV/w==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20251104; t=1777386829; x=1777991629;
        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;
        bh=d87OtETY/HDHZSyvkF1z/eDjSpJPpBjmfUMMYJKhrzU=;
        b=YGXwJ8MhK11cZ9gYnjFxsNv77pch7N9cew6GtPs+K74ZWJBIqwdAZEfCfJhPZXI7SS
         ApuHlupmOjbJkZPPsx+bp5FwlhI95T2kmJ9sv8/MtkiaceH6RAGl5tjOeCExYoqCbpxq
         QSGAc7varzXr+OAnoVKEWY9cp5qgyZoMT71kTn9v3fUO5KtxNajjexkwxyPx4H+/6YI/
         6Fhuuej507GUZ5jBVBnuiXuR4ZG9GLvTgS5ywdVgcemh6dStTcrsj4R0eE/MBFLkPw05
         iS//haZYbTmWwdYOuvFNDXH2Hf2vlzQ1Hdr1ETZb2zATPV/wvkpnf08Z5OdGnEwfKXyj
         R8WA==
X-Gm-Message-State: AOJu0YxCf1Kd4RnL2sIiIhVwk906+a3TmVbqvbZPIZKRxkuWcoLDNHhv
	dP6OmK6Ap3u7dRARZbxPdj5m5BQpLIWFtGanq0Wk/N8lWid9pCvPCzA1emzKCQ==
X-Gm-Gg: AeBDieul+3fJ8oEXAGsS9batJyePEQiwm+6bOiZ329j98vKhu65t9mC3U8mM0ECmTcQ
	t8+jCJfx1zdcdYgpXuCZuDXe+J2MQ6Ll2x4jmjq/TsSehK8DuI17Gyiko3serjGztXCIaxOXFlQ
	fKreHIoWoEYnB5SIcRgsXjhwvtVWWt9Tvn0kLRcJJVoNjXsI5uQkz+fpSPffCaPwvptSIG2RxOK
	9qgkVK2yD2PKIedqKFIMFGwo1HRTIETkmcVCbEQ4k/Gp2ktwWBD1pmtNwXcYk1t3ho8PHxkgC0c
	HRuPjbsWaZXnzW+QY3UFn3tfiB4XAWDpGFYPOUtoLfGwIJDPn6aNfZXVmREO70XT4MTqgN8F5Rt
	pU5ljBfiiXojKLhVbTyJ3a2e/d5uPFQWMB+/mTL/Guz0TxgPtRp/8Azd6l8+4RCTXta/FqRuA24
	dA2EEa0dgXwR9Bx815+0NONeV8ZxRN25Blsfa+g3rvqPgGXQ30INZhN8rvWVa0g6yMVVUmfRiYa
	yCP
X-Received: by 2002:a05:600c:a013:b0:48a:563c:c8e0 with SMTP id 5b1f17b1804b1-48a77ad5a89mr56203045e9.1.1777386828803;
        Tue, 28 Apr 2026 07:33:48 -0700 (PDT)
From: Oleksii Kurochko <oleksii.kurochko@gmail.com>
To: xen-devel@lists.xenproject.org
Cc: Romain Caritey <Romain.Caritey@microchip.com>,
	Oleksii Kurochko <oleksii.kurochko@gmail.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?q?Roger=20Pau=20Monn=C3=A9?= <roger.pau@citrix.com>,
	Alistair Francis <alistair.francis@wdc.com>,
	Connor Davis <connojdavis@gmail.com>
Subject: [PATCH v4 00/11]  RISCV: enable DOMAIN_BUILD_HELPERS
Date: Tue, 28 Apr 2026 16:33:29 +0200
Message-ID: <cover.1777303844.git.oleksii.kurochko@gmail.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-purgate-ID: tlsNG-d62444/1777386829-B6E63FF4-1E69EAE1/10/73395122804
X-purgate-type: spam
X-purgate-size: 3509

Introduce necessary things to enable DOMAIN_BUILD_HELPERS config for RISC-V.

This patch series is rebased on top of [PATCH v3 0/3] dom0less: various updates
as it could be some merge conflicts depends on which patch series will go first.

CI: https://gitlab.com/xen-project/people/olkur/xen/-/pipelines/2477740734

---
Changes in v4:
 - Move patch up, closer to other common/Arm related patches:
   - xen/dom0less: rename kernel_zimage_probe() to  kernel_image_probe()
   - xen: move declaration of fw_unreserved_regions() to common header
   - xen: move domain_use_host_layout() to common header
   - xen: rename p2m_ipa_bits to p2m_gpa_bits

 - Merged to upstream/staging:
     xen/riscv: implement get_page_from_gfn()

 - Rebase this patch series on top of [PATCH v3 0/3] dom0less: various updates. 
 - Address the comments from ML.
---
Changes in v3:
 - Address the comments from ML.
---
Changes in v2:
 - Address the comments from ML.
 - Introduce some new patches to make dom0less solution more architecture
   indepenent from terminology point of view.
 - Minor fixes.
---

Oleksii Kurochko (11):
  xen: arm: fix len type for guest copy functions
  xen/dom0less: rename kernel_zimage_probe() to kernel_image_probe()
  xen: move declaration of fw_unreserved_regions() to common header
  xen: introduce domain-layout.h with common domain_use_host_layout()
  xen: rename p2m_ipa_bits to p2m_gpa_bits
  xen/riscv: implement copy_to_guest_phys()
  xen/riscv: add Linux kernel loading support
  xen/riscv: rework G-stage mode handling
  xen/riscv: introduce p2m_gpa_bits
  xen/riscv: add definition of guest RAM banks
  xen/riscv: enable DOMAIN_BUILD_HELPERS

 xen/arch/arm/domain_build.c               |   1 +
 xen/arch/arm/guestcopy.c                  |   6 +-
 xen/arch/arm/include/asm/domain.h         |  14 --
 xen/arch/arm/include/asm/guest_access.h   |   2 +-
 xen/arch/arm/include/asm/p2m.h            |   2 +
 xen/arch/arm/include/asm/setup.h          |   3 -
 xen/arch/arm/kernel.c                     |  48 ++---
 xen/arch/arm/vgic-v3.c                    |   1 +
 xen/arch/riscv/Kconfig                    |   1 +
 xen/arch/riscv/Makefile                   |   3 +
 xen/arch/riscv/dom0less-build.c           |  70 +++++++
 xen/arch/riscv/guestcopy.c                | 116 +++++++++++
 xen/arch/riscv/include/asm/config.h       |  13 ++
 xen/arch/riscv/include/asm/domain.h       |   1 +
 xen/arch/riscv/include/asm/guest-layout.h |  23 ++
 xen/arch/riscv/include/asm/guest_access.h |   7 +
 xen/arch/riscv/include/asm/p2m.h          |  21 +-
 xen/arch/riscv/kernel.c                   | 242 ++++++++++++++++++++++
 xen/arch/riscv/p2m.c                      | 133 ++++++++----
 xen/arch/riscv/vmid.c                     |   2 +-
 xen/common/device-tree/domain-build.c     |   3 +-
 xen/common/device-tree/kernel.c           |   2 +-
 xen/include/public/arch-riscv.h           |   5 +
 xen/include/xen/bootinfo.h                |   4 +
 xen/include/xen/domain-layout.h           |  27 +++
 xen/include/xen/fdt-domain-build.h        |   2 +-
 xen/include/xen/fdt-kernel.h              |  15 +-
 27 files changed, 670 insertions(+), 97 deletions(-)
 create mode 100644 xen/arch/riscv/dom0less-build.c
 create mode 100644 xen/arch/riscv/guestcopy.c
 create mode 100644 xen/arch/riscv/include/asm/guest-layout.h
 create mode 100644 xen/arch/riscv/kernel.c
 create mode 100644 xen/include/xen/domain-layout.h

-- 
2.53.0



From xen-devel-bounces@lists.xenproject.org Tue Apr 28 14:34:11 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 28 Apr 2026 14:34:11 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1296328.1572751 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wHjVY-0005Rd-E6; Tue, 28 Apr 2026 14:33:52 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1296328.1572751; Tue, 28 Apr 2026 14:33: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 1wHjVY-0005RW-Ax; Tue, 28 Apr 2026 14:33:52 +0000
Received: by outflank-mailman (input) for mailman id 1296328;
 Tue, 28 Apr 2026 14:33:51 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92) id 1wHjVX-0005Hz-Hc
 for xen-devel@lists.xenproject.org; Tue, 28 Apr 2026 14:33:51 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wHjVV-00H4ZK-Bv
 for xen-devel@lists.xenproject.org; Tue, 28 Apr 2026 16:33:50 +0200
Received: from [10.42.69.2] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <oleksii.kurochko@gmail.com>)
 id 69f0c541-5cb7-0a2a0a5109dd-0a2a45029a8e-46
 for <xen-devel@lists.xenproject.org>; Tue, 28 Apr 2026 16:33:50 +0200
Received: from [209.85.128.51] (helo=mail-wm1-f51.google.com)
 by tlsNG-720697.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.1)
 (envelope-from <oleksii.kurochko@gmail.com>)
 id 69f0c54e-af86-0a2a45020019-d1558033ed58-3
 for <xen-devel@lists.xenproject.org>; Tue, 28 Apr 2026 16:33:50 +0200
Received: by mail-wm1-f51.google.com with SMTP id
 5b1f17b1804b1-4891e86fabeso127801705e9.1
 for <xen-devel@lists.xenproject.org>; Tue, 28 Apr 2026 07:33:50 -0700 (PDT)
Received: from fedora (user-109-243-69-121.play-internet.pl. [109.243.69.121])
 by smtp.gmail.com with ESMTPSA id
 5b1f17b1804b1-48a774b6300sm19302145e9.16.2026.04.28.07.33.48
 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
 Tue, 28 Apr 2026 07:33:49 -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=20251104 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=20251104; t=1777386830; x=1777991630; 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;
        bh=W36qV0SA1npKJlsQHzH0mfE/cYCMTL3Qqk5/oPvpTxk=;
        b=VNh849KylgCiDivitlJHGeNTbHsB/Bjw2xCWB1kn86dqIjjLj+EjxwAwlUaoKbk2eI
         Lv+UiMIBi3K4DbTbX5b9Bc7vUw7XAX1JvCd8cgMjg1byX8q0NvIuE4GtkcjM7R01elnI
         d38SLZL4IZHYoXCVV1TrH3XsCFtRuu+aglO16iEN0RsFfPKG35vlbl9h1sHkzslv1onl
         OUPiJ4Lrn+OZMhvNFKL+sRlWmISSyIv0n3KxaiMmpF3PHd3DPNRl9Fl8lW2GCKJ/XxGo
         q+ATbDPg2n7L7IiFz+dMsCEyj127DlR3cJ9GLewtY8L/RuX06xcz2/mUBezI2h7MyXWq
         LTqQ==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20251104; t=1777386830; x=1777991630;
        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;
        bh=W36qV0SA1npKJlsQHzH0mfE/cYCMTL3Qqk5/oPvpTxk=;
        b=f+Q++6e7rE1p8OeiVkRVlVrNo5JAMhd01znanWGZPNErOjstAzS5aSWWqNWXpe7wfB
         98IVpPjV9rNjb+i8qlWtYezjLhbC6O6y4uFRtntgmf4dZenERfOC1W8e5WBog45AqQ6I
         5Q1YSbEcSHzXBFox89eCAq79pau+RNhj7GpC0cC2KTMwRAm73a4fySiBVsK6AAExuhaE
         eP8bOv8u2GN2NUx4ChzfmrtGqKQ7Kh1N1aa68b0XoVDNPTzzl1TxO40tkiq5B9ciq1TJ
         1NnfqtWRaIFBgvg0poG0/3MfkUp0CF4OYbSjE5pqlLAi0EHO9i6Cz46F0JDJlLDAEYD/
         uWhQ==
X-Gm-Message-State: AOJu0Yw8ynlV/tJ8IMvYaQLH3sG9OM6y21zdfzDalZVilExJdFQQX0uV
	nYsvPyT/LLeHsAZoEATwvaKem14vgRHxPHKffqYR711ACSrDIEWY4rFVAunOVg==
X-Gm-Gg: AeBDieuO5k107UZqWdKgOdRUzIi0KR6O3tfuaVeCL4J8jWhGx15qT301y+HbAycL5vQ
	9+CWRZokhC/jf0W/9qYgwfu2OS7Zxkf3qKR1S1WBo84/pq82UPpAyluOiPkustLRJsi1eyenYcL
	vgdt+BXToJ3tO9G9R7WhHCeezDfD+DXgTNXk1LaI7SWpuKZMeGwbOEZ1jO0rBiQwjD3jE0kSsE9
	9KaH2uDL6qNHlZAOuDAqOKkcTwYTqVdXUEm6MpWoUfjxM+7nk1p7eapshy0JxcLg7GKmDYKITes
	8eq3RlcY+7bRTO/gxi+23kXibNP5DqNYwavMGVjcDsW+PmPJqYka1Zl9trcP5Ax8YCIN+WQwyvI
	9bsWy2e09GvauwXF224OkieovIXXrr14W9rL7Dl4sdBqotbI37htauwvo18a0OpMkTtA/1rcK3j
	rRLV9ZFAlAV00QTXelPxEOh/j7LG/hPFRS/0boaE/ve0Nnj4TLwJXlBPjDudQebgv511oGCyW4X
	RIw
X-Received: by 2002:a05:600c:840f:b0:483:7903:c3b1 with SMTP id 5b1f17b1804b1-48a77b21749mr52038275e9.20.1777386829946;
        Tue, 28 Apr 2026 07:33:49 -0700 (PDT)
From: Oleksii Kurochko <oleksii.kurochko@gmail.com>
To: xen-devel@lists.xenproject.org
Cc: Romain Caritey <Romain.Caritey@microchip.com>,
	Oleksii Kurochko <oleksii.kurochko@gmail.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?q?Roger=20Pau=20Monn=C3=A9?= <roger.pau@citrix.com>
Subject: [PATCH v4 01/11] xen: arm: fix len type for guest copy functions
Date: Tue, 28 Apr 2026 16:33:30 +0200
Message-ID: <e29e6176063f8e7c612a4bfa44ac072d7a686b81.1777303844.git.oleksii.kurochko@gmail.com>
X-Mailer: git-send-email 2.53.0
In-Reply-To: <cover.1777303844.git.oleksii.kurochko@gmail.com>
References: <cover.1777303844.git.oleksii.kurochko@gmail.com>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit
X-purgate-ID: tlsNG-720697/1777386830-82D6F161-7B11A211/10/73395122804
X-purgate-type: spam
X-purgate-size: 5388

Widen the len argument of copy_to_guest_phys_flush_dcache() and the
copy_to_guest_phys_cb typedef from unsigned int to unsigned long, as
the function can be used to copy large blobs such as the initrd which
may exceed 4GB. Update the internal copy_guest() len argument to
unsigned long accordingly.

Change the type for local variable size in copy_guest() to avoid
compilation error because of type mismatch.

raw_* wrappers above copy_guest() keep returning unsigned long to
avoid type narrowing; it is not an issue for raw_*'s len argument
to remain 'unsigned int' since the assignment to copy_guest()'s wider
unsigned long parameter is safe and there is no raw_* users who
are using a value bigger than what can fit into 'unsigned int'.

Fixes: 2986481b3d9e6 ("xen/arm: guest_copy: Extend the prototype to pass the vCPU")
Fixes: 5302bd490bea7 ("xen/arm: Introduce copy_to_guest_phys_flush_dcache")
Fixes: d07b7369aa65b ("xen/common: dom0less: introduce common domain-build.c")
Reported-by: Jan Beulich <jbeulich@suse.com>
Signed-off-by: Oleksii Kurochko <oleksii.kurochko@gmail.com>
Reviewed-by: Jan Beulich <jbeulich@suse.com>
---
Changes in v4:
- Add Fixes: tags.
- Add "arm:" prefix to commit subject.
- Add Reviewed-by: Jan Beulich <jbeulich@suse.com>.
- Avoid using of min_t.
---
Changes in v3:
 - Correct the declaration of copy_to_guest_phys_cb() instead of return
   'unsigned int' to be in sync with len argument, the type of len argument
   is changed on 'unsigned long' as initrd could be pretty big and also its
   size is stroed in 'paddr_t' which is 'unsigned long'.
 - Update copy_guest() prototype to avoid trancation bug for len argument.
 - Revert prototype changes for raw_* wrappers above copy_guest() as they
   should keep returning unsigned long to avoid type narrowing; it is not
   an issue for raw_*'s len argument to remain 'unsigned int' since the
   assignment to copy_guest()'s wider unsigned long parameter is safe.
 - Change the type for local variable size in copy_guest() to avoid
   compilation error because of type mismatch.
 - Add Reported-by: Jan Beulich <jbeulich@suse.com>
---
Changes in v2:
 - New patch.
---
---
 xen/arch/arm/guestcopy.c                | 6 +++---
 xen/arch/arm/include/asm/guest_access.h | 2 +-
 xen/include/xen/fdt-domain-build.h      | 2 +-
 3 files changed, 5 insertions(+), 5 deletions(-)

diff --git a/xen/arch/arm/guestcopy.c b/xen/arch/arm/guestcopy.c
index fdb06422b8e9..86f1c9d0e318 100644
--- a/xen/arch/arm/guestcopy.c
+++ b/xen/arch/arm/guestcopy.c
@@ -53,7 +53,7 @@ static struct page_info *translate_get_page(copy_info_t info, uint64_t addr,
     return page;
 }
 
-static unsigned long copy_guest(void *buf, uint64_t addr, unsigned int len,
+static unsigned long copy_guest(void *buf, uint64_t addr, unsigned long len,
                                 copy_info_t info, unsigned int flags)
 {
     /* XXX needs to handle faults */
@@ -65,7 +65,7 @@ static unsigned long copy_guest(void *buf, uint64_t addr, unsigned int len,
     while ( len )
     {
         void *p;
-        unsigned int size = min(len, (unsigned int)PAGE_SIZE - offset);
+        unsigned long size = min(len, PAGE_SIZE + 0UL - offset);
         struct page_info *page;
 
         page = translate_get_page(info, addr, flags & COPY_linear,
@@ -136,7 +136,7 @@ unsigned long raw_copy_from_guest(void *to, const void __user *from,
 unsigned long copy_to_guest_phys_flush_dcache(struct domain *d,
                                               paddr_t gpa,
                                               void *buf,
-                                              unsigned int len)
+                                              unsigned long len)
 {
     return copy_guest(buf, gpa, len, GPA_INFO(d),
                       COPY_to_guest | COPY_ipa | COPY_flush_dcache);
diff --git a/xen/arch/arm/include/asm/guest_access.h b/xen/arch/arm/include/asm/guest_access.h
index 18c88b70d7ec..c13cbec55b65 100644
--- a/xen/arch/arm/include/asm/guest_access.h
+++ b/xen/arch/arm/include/asm/guest_access.h
@@ -14,7 +14,7 @@ unsigned long raw_clear_guest(void *to, unsigned int len);
 unsigned long copy_to_guest_phys_flush_dcache(struct domain *d,
                                               paddr_t gpa,
                                               void *buf,
-                                              unsigned int len);
+                                              unsigned long len);
 
 int access_guest_memory_by_gpa(struct domain *d, paddr_t gpa, void *buf,
                                uint32_t size, bool is_write);
diff --git a/xen/include/xen/fdt-domain-build.h b/xen/include/xen/fdt-domain-build.h
index bc7744270c8f..6ad9e8fd1642 100644
--- a/xen/include/xen/fdt-domain-build.h
+++ b/xen/include/xen/fdt-domain-build.h
@@ -48,7 +48,7 @@ static inline int get_allocation_size(paddr_t size)
 typedef unsigned long (*copy_to_guest_phys_cb)(struct domain *d,
                                                paddr_t gpa,
                                                void *buf,
-                                               unsigned int len);
+                                               unsigned long len);
 
 void initrd_load(struct kernel_info *kinfo,
                  copy_to_guest_phys_cb cb);
-- 
2.53.0



From xen-devel-bounces@lists.xenproject.org Tue Apr 28 14:34:11 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 28 Apr 2026 14:34:11 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1296333.1572782 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wHjVd-0006CN-KB; Tue, 28 Apr 2026 14:33:57 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1296333.1572782; Tue, 28 Apr 2026 14:33: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 1wHjVd-0006Bs-EA; Tue, 28 Apr 2026 14:33:57 +0000
Received: by outflank-mailman (input) for mailman id 1296333;
 Tue, 28 Apr 2026 14:33:56 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92) id 1wHjVc-00062i-NF
 for xen-devel@lists.xenproject.org; Tue, 28 Apr 2026 14:33:56 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wHjVc-008e9B-3B
 for xen-devel@lists.xenproject.org; Tue, 28 Apr 2026 16:33:56 +0200
Received: from [10.42.69.3] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <oleksii.kurochko@gmail.com>)
 id 69f0c540-e002-0a2a0a5209dd-0a2a4503cd3a-32
 for <xen-devel@lists.xenproject.org>; Tue, 28 Apr 2026 16:33:56 +0200
Received: from [209.85.128.47] (helo=mail-wm1-f47.google.com)
 by tlsNG-33051d.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.1)
 (envelope-from <oleksii.kurochko@gmail.com>)
 id 69f0c553-672d-0a2a45030019-d155802fe05a-3
 for <xen-devel@lists.xenproject.org>; Tue, 28 Apr 2026 16:33:56 +0200
Received: by mail-wm1-f47.google.com with SMTP id
 5b1f17b1804b1-488b0e1b870so196654425e9.2
 for <xen-devel@lists.xenproject.org>; Tue, 28 Apr 2026 07:33:56 -0700 (PDT)
Received: from fedora (user-109-243-69-121.play-internet.pl. [109.243.69.121])
 by smtp.gmail.com with ESMTPSA id
 5b1f17b1804b1-48a774b6300sm19302145e9.16.2026.04.28.07.33.54
 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
 Tue, 28 Apr 2026 07:33:54 -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=20251104 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=20251104; t=1777386835; x=1777991635; 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;
        bh=iWmwHX2hyXMUT5t3JOczqjWzu0Tj+8NV1iDRnEin18E=;
        b=GAvp8BV4rpJIMW8uFSCIcbBHCkIP181mmOj1vfpaCNUETOTjab9daycXe232LaQ+2X
         vYNfuKDx0ksQjqzWrnNXle5qiV1+BYPxsrj1UA95arrQPITZfABEZqpwRJ0CFoBUH1Zx
         QLV2kg3wjRN99rLzMsXQbugeOwoOjn4c4s772jW+U4wGt/rLcrwTtF8XB7QqCAfxX1S/
         5V4t39/aDRkvZPtvjhdqsWKTubl9LpQLrUUV6hv77PoVF/jvv8p0OfqxiawP1KNUNF59
         UpUiAik63lt+T3N/DANobRcxcm5rk64NqaurYHs0ZClls6GvQKfL11E+TLPlAKmAavkp
         c3qw==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20251104; t=1777386835; x=1777991635;
        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;
        bh=iWmwHX2hyXMUT5t3JOczqjWzu0Tj+8NV1iDRnEin18E=;
        b=Fl+hTJO2r/N0lIk235iqwUdGLLjuxQ6vU2jdqPTqBut7Siod3L5f0Ekx8CrZF1QqhV
         3nhKft9MroBJJpMxLq2hZLzBWU2KD61+GDvojBT6INmamC0rqeD0/l0m2w7FpznMaXpK
         FhiBZ2uC6QbiaINoSSOF1YNICRKipZHq2GReFmdFhPR7Dn7JRu6TBe2ScUQPQFBFgiIV
         k6HnnJOarjSAUC2zhmKjYOVK40YPQdHFNToOs15VGA02af35zeGTJkyrjUPEGt27JBzi
         vgeHCMT7QzCvTalP6eMs7w2s+THhLNE15O6r0w2cic13gEbbpX4FdPO51etT6575lKgB
         Jqxg==
X-Gm-Message-State: AOJu0YwetycEwz0qpUHtkAyP/5G5i8JQ4aB9dt1KSAS5eTUMtQ1uKtT4
	iWejCPEyZyb0xEV6ERe2IrZVCyZZ76qyFu2oaw3AwK5a/wr7cr6qvu4g9sIkow==
X-Gm-Gg: AeBDieuZrhpPrmyM5mdEBiy5MqZIUsosM5jbgxIfMQebP4/0BO1TtrBS/2NEcIczOwA
	LJW8YVLGoL6efRWjNGWwKFL2RXIgIhPzohQkPBpUgbkiMl/4rsESbTfn9fiLTU32VAx7ppx5biI
	0lYGTLvCnboudG/cMT4KwH6UeJa1K2Ouqxycu8/mDegVDtvuv5jcAvMvit9sgHaE22r+Oady15K
	BG9NIWFL29dBImJrXt9TLe03PDjePlofhswyx/8l1AtMkUpN5Jf5yF40wghkbIlZ/c9VJFaegKI
	tDVTuUj95YiKG48mNHZ0eD1UsUJt5PhqHUFi9ZeS3PNrOgRE5y+jRucL/1K3FJzxreOstmA9pdo
	RMyoX08x54L81VeHIkK3qzS7p3h6t/vIlKa6BdjIFvuDd3ZK0XYhJxlZPiiBWx/Xt2OAN3/Fhfb
	IkxYAi3lRR++FICw9wmKcoQTcMwlIyeNbDdqBvS+Jhs6V/vh5gc7dEgVmbRu6dRSjvpWHIWUJS8
	geA
X-Received: by 2002:a05:600c:1d0a:b0:488:f453:b976 with SMTP id 5b1f17b1804b1-48a77b2051fmr57589655e9.27.1777386835182;
        Tue, 28 Apr 2026 07:33:55 -0700 (PDT)
From: Oleksii Kurochko <oleksii.kurochko@gmail.com>
To: xen-devel@lists.xenproject.org
Cc: Romain Caritey <Romain.Caritey@microchip.com>,
	Oleksii Kurochko <oleksii.kurochko@gmail.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>
Subject: [PATCH v4 05/11] xen: rename p2m_ipa_bits to p2m_gpa_bits
Date: Tue, 28 Apr 2026 16:33:34 +0200
Message-ID: <fcf48e61d270fd4665f14f43095b3659e528b376.1777303844.git.oleksii.kurochko@gmail.com>
X-Mailer: git-send-email 2.53.0
In-Reply-To: <cover.1777303844.git.oleksii.kurochko@gmail.com>
References: <cover.1777303844.git.oleksii.kurochko@gmail.com>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit
X-purgate-ID: tlsNG-33051d/1777386836-2957F938-F463B9D7/10/73395122804
X-purgate-type: spam
X-purgate-size: 1769

The IPA terminology is Arm-specific, so rename p2m_ipa_bits to
p2m_gpa_bits to use architecture-neutral naming in
xen/common/device-tree/ code.

No functional changes.

Reported-by: Jan Beulich <jbeulich@suse.com>
Signed-off-by: Oleksii Kurochko <oleksii.kurochko@gmail.com>
---
Changes in v4:
 - Nothing changed only rebase.
---
Changes in v3:
 - Introduce #define p2m_gpa_bits p2m_ipa_bits for Arm instead of
   renaming of p2m_ipa_bits to p2m_gpa_bits to keep Arm part of
   changes clearer and keep using Arm-specific terminolgy inside
   Arm code.
---
Changes in v2:
 - New patch.
---
---
 xen/arch/arm/include/asm/p2m.h        | 2 ++
 xen/common/device-tree/domain-build.c | 2 +-
 2 files changed, 3 insertions(+), 1 deletion(-)

diff --git a/xen/arch/arm/include/asm/p2m.h b/xen/arch/arm/include/asm/p2m.h
index 010ce8c9ebbd..7957dbd96e57 100644
--- a/xen/arch/arm/include/asm/p2m.h
+++ b/xen/arch/arm/include/asm/p2m.h
@@ -14,6 +14,8 @@
 /* Holds the bit size of IPAs in p2m tables.  */
 extern unsigned int p2m_ipa_bits;
 
+#define p2m_gpa_bits p2m_ipa_bits
+
 #define MAX_VMID_8_BIT  (1UL << 8)
 #define MAX_VMID_16_BIT (1UL << 16)
 
diff --git a/xen/common/device-tree/domain-build.c b/xen/common/device-tree/domain-build.c
index 6949203dacdc..2a760b007b57 100644
--- a/xen/common/device-tree/domain-build.c
+++ b/xen/common/device-tree/domain-build.c
@@ -221,7 +221,7 @@ int __init find_unallocated_memory(const struct kernel_info *kinfo,
     }
 
     start = 0;
-    end = (1ULL << p2m_ipa_bits) - 1;
+    end = (1ULL << p2m_gpa_bits) - 1;
     res = rangeset_report_ranges(unalloc_mem, PFN_DOWN(start), PFN_DOWN(end),
                                  cb, free_regions);
     if ( res )
-- 
2.53.0



From xen-devel-bounces@lists.xenproject.org Tue Apr 28 14:34:11 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 28 Apr 2026 14:34:11 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1296331.1572769 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wHjVb-0005th-TE; Tue, 28 Apr 2026 14:33:55 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1296331.1572769; Tue, 28 Apr 2026 14:33: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 1wHjVb-0005ta-PJ; Tue, 28 Apr 2026 14:33:55 +0000
Received: by outflank-mailman (input) for mailman id 1296331;
 Tue, 28 Apr 2026 14:33:54 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92) id 1wHjVa-0005fQ-Ie
 for xen-devel@lists.xenproject.org; Tue, 28 Apr 2026 14:33:54 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wHjVZ-008e9B-Ur
 for xen-devel@lists.xenproject.org; Tue, 28 Apr 2026 16:33:53 +0200
Received: from [10.42.69.3] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <oleksii.kurochko@gmail.com>)
 id 69f0c540-e002-0a2a0a5209dd-0a2a4503cd3a-28
 for <xen-devel@lists.xenproject.org>; Tue, 28 Apr 2026 16:33:53 +0200
Received: from [209.85.128.52] (helo=mail-wm1-f52.google.com)
 by tlsNG-33051d.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.1)
 (envelope-from <oleksii.kurochko@gmail.com>)
 id 69f0c551-672d-0a2a45030019-d1558034d159-3
 for <xen-devel@lists.xenproject.org>; Tue, 28 Apr 2026 16:33:53 +0200
Received: by mail-wm1-f52.google.com with SMTP id
 5b1f17b1804b1-4891cd41959so98298555e9.3
 for <xen-devel@lists.xenproject.org>; Tue, 28 Apr 2026 07:33:53 -0700 (PDT)
Received: from fedora (user-109-243-69-121.play-internet.pl. [109.243.69.121])
 by smtp.gmail.com with ESMTPSA id
 5b1f17b1804b1-48a774b6300sm19302145e9.16.2026.04.28.07.33.51
 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
 Tue, 28 Apr 2026 07:33:52 -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=20251104 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=20251104; t=1777386833; x=1777991633; 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;
        bh=rklfHL8DGEAm9CydTFB48ZDQQ+epyIb/xn7d2p7FG4A=;
        b=HRZoCAygyKY9vYHGPkCpG3e9x7i5aHzZZRHNiyzwCkfK2ESow60vmXFhv8w7Y3ENgO
         MGz3Q+d9MA9X6gErJw1h+Lt9QTP/WyBVppTM1QCDc4I90DsqPZTCmYFW/l1OAHoA4KvC
         Q8yrPvT7+x4zQE2JrOCO8koYWZEaqIhvq7hhlgE0b57+ogTj9f8kjvYuzf5CbgdHEU+2
         fYP4RDrmLn0y2o8qDBeUmuPLx4qBrfXyf7dZj+IHoyo6AwfE0A6cYsorONgWG2dtDvvI
         PWR+rL5ZUsN2SpLbCzoBqzIwjg5OGbnzx9E9FRg5TP9Ba2QXj/61txARgCn/lsGjbFh0
         xCXA==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20251104; t=1777386833; x=1777991633;
        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;
        bh=rklfHL8DGEAm9CydTFB48ZDQQ+epyIb/xn7d2p7FG4A=;
        b=Gc2eqSVtJXltaDxKSBCewArmP4uBTB3h7pAN1/2Eb7nIOYEWvGFSwL1HmPAryNLQ6z
         9HmK0leQGAzHSl6wFzFS8cgE3SGPFFAwSpN65ZRIZJLNC5UKmaiuQDYUgEgGrpig0jrG
         TQaSU+8bkwfpkuCulWPb0JWNx/N8lQZxzF9frojsMz1JYfdFacAvNUGcne/PaKFO3/kf
         pACIiyp+FfSLEFqBZH8I3FktLavl+BFFIIascQNMOaDxB6bRqnh/D0jAy7x0hVHvbn/W
         /MHWrp847/Lte5vsiU7MQDplgCZ6MqF3FjiIC2FQ86vt66aNYmpIEPbCMJw+B6D24gRs
         QWyA==
X-Gm-Message-State: AOJu0YxCbxQei+KfFEKIm99Sj1SFhkQTqglA28kW7rgJwunSudiQNQ8p
	fWSS6GT1hSTO4RBM9ChDguqWDj6wKfUfLX16iWP40AVPKA0E/gAGuZ9jWlXTfQ==
X-Gm-Gg: AeBDiesKDb40bC5TFMXQ/g0Nf3qNSuSVrkXYiMsjz8aTM5P5XRMvuN4wCEF0mFXxBvd
	5yhrH+fPxu/AZxwkcDagrYQmrd9BzEYdF0lyMDoR+mzz0z6C57uA/YUW93OhvGX6ndWrKkDzLI+
	v4NXIOa4hD5L35YXxVrymIT7wgR9Cvsq3zorGiMrvP5GjhCU+BFTifSIDyscLkPoyoxpqlOUc3z
	TAMboFjQftk+wZ8PnvdC0JmVy9HKiB6Bkuo4eaGmc0pcF965HbvmXsfL83lagdEgHUMuRg6ywG4
	oziKXHYBxg/PAPk/Pg4fwLBPhGWylxzTS+DCcwT7vz5LpQRa71Sot4GcQfvNTD3gUupyZfkset1
	XxnkQ1+p1jHgc9gfsq2PsdWR1NX+8Ongj5AhJ+OQRmdakX4Zyi/OTV5ihEFUFn6FBCOpJnS3vDp
	IIJLbv1dDyLpTneb0m2jGELZwyvBo3bMd9tOGKS0JdK1LjoKV+QeIpi3dUvIQBJEnBst0on/p5p
	m4J
X-Received: by 2002:a05:600c:1e8b:b0:48a:f18:ece4 with SMTP id 5b1f17b1804b1-48a77b176b3mr49380825e9.24.1777386832704;
        Tue, 28 Apr 2026 07:33:52 -0700 (PDT)
From: Oleksii Kurochko <oleksii.kurochko@gmail.com>
To: xen-devel@lists.xenproject.org
Cc: Romain Caritey <Romain.Caritey@microchip.com>,
	Oleksii Kurochko <oleksii.kurochko@gmail.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?q?Roger=20Pau=20Monn=C3=A9?= <roger.pau@citrix.com>
Subject: [PATCH v4 03/11] xen: move declaration of fw_unreserved_regions() to common header
Date: Tue, 28 Apr 2026 16:33:32 +0200
Message-ID: <2c26370460f0380bed128cbb59de4eacd77a8456.1777303844.git.oleksii.kurochko@gmail.com>
X-Mailer: git-send-email 2.53.0
In-Reply-To: <cover.1777303844.git.oleksii.kurochko@gmail.com>
References: <cover.1777303844.git.oleksii.kurochko@gmail.com>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit
X-purgate-ID: tlsNG-33051d/1777386833-A376E938-8B277FDF/10/73395122804
X-purgate-type: spam
X-purgate-size: 1457

Since the implementation of fw_unreserved_regions() is in common code, move
its declaration to xen/bootinfo.h.

Signed-off-by: Oleksii Kurochko <oleksii.kurochko@gmail.com>
---
Changes in v2-v4:
 - Nothing changed. Only rebase.
---
---
 xen/arch/arm/include/asm/setup.h | 3 ---
 xen/include/xen/bootinfo.h       | 4 ++++
 2 files changed, 4 insertions(+), 3 deletions(-)

diff --git a/xen/arch/arm/include/asm/setup.h b/xen/arch/arm/include/asm/setup.h
index 899e33925ca4..0d29b46ea52b 100644
--- a/xen/arch/arm/include/asm/setup.h
+++ b/xen/arch/arm/include/asm/setup.h
@@ -43,9 +43,6 @@ int acpi_make_efi_nodes(void *fdt, struct membank tbl_add[]);
 void create_dom0(void);
 
 void discard_initial_modules(void);
-void fw_unreserved_regions(paddr_t s, paddr_t e,
-                           void (*cb)(paddr_t ps, paddr_t pe),
-                           unsigned int first);
 
 void init_pdx(void);
 void setup_mm(void);
diff --git a/xen/include/xen/bootinfo.h b/xen/include/xen/bootinfo.h
index f834f1957155..dbf492c2e36e 100644
--- a/xen/include/xen/bootinfo.h
+++ b/xen/include/xen/bootinfo.h
@@ -210,4 +210,8 @@ static inline struct membanks *membanks_xzalloc(unsigned int nr,
     return banks;
 }
 
+void fw_unreserved_regions(paddr_t s, paddr_t e,
+                           void (*cb)(paddr_t ps, paddr_t pe),
+                           unsigned int first);
+
 #endif /* XEN_BOOTINFO_H */
-- 
2.53.0



From xen-devel-bounces@lists.xenproject.org Tue Apr 28 14:34:11 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 28 Apr 2026 14:34:11 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1296329.1572760 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wHjVa-0005fk-Mm; Tue, 28 Apr 2026 14:33:54 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1296329.1572760; Tue, 28 Apr 2026 14: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 1wHjVa-0005fc-IH; Tue, 28 Apr 2026 14:33:54 +0000
Received: by outflank-mailman (input) for mailman id 1296329;
 Tue, 28 Apr 2026 14:33:53 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92) id 1wHjVZ-0005Yo-0t
 for xen-devel@lists.xenproject.org; Tue, 28 Apr 2026 14:33:53 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wHjVY-002Kdm-D9
 for xen-devel@lists.xenproject.org; Tue, 28 Apr 2026 16:33:52 +0200
Received: from [10.42.69.12] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <oleksii.kurochko@gmail.com>)
 id 69f0c54a-bab6-0a2a0a5309dd-0a2a450cd3a8-18
 for <xen-devel@lists.xenproject.org>; Tue, 28 Apr 2026 16:33:52 +0200
Received: from [209.85.128.50] (helo=mail-wm1-f50.google.com)
 by tlsNG-d25034.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.1)
 (envelope-from <oleksii.kurochko@gmail.com>)
 id 69f0c550-62f1-0a2a450c0019-d1558032e53e-3
 for <xen-devel@lists.xenproject.org>; Tue, 28 Apr 2026 16:33:52 +0200
Received: by mail-wm1-f50.google.com with SMTP id
 5b1f17b1804b1-48334ee0aeaso120333005e9.1
 for <xen-devel@lists.xenproject.org>; Tue, 28 Apr 2026 07:33:52 -0700 (PDT)
Received: from fedora (user-109-243-69-121.play-internet.pl. [109.243.69.121])
 by smtp.gmail.com with ESMTPSA id
 5b1f17b1804b1-48a774b6300sm19302145e9.16.2026.04.28.07.33.50
 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
 Tue, 28 Apr 2026 07:33:50 -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=20251104 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=20251104; t=1777386831; x=1777991631; 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;
        bh=Ct8Vr7tZTUAd+DiLlXb8sJtqUfUbJzJOW+ZP26uy5x0=;
        b=giWN2XcMhnQksCOt+DLn7Lx0aMlT84S0Ff13f1m3vj7IV17uzMvy6ElhgGBzleMWgt
         z41zuZs4gBgKe2T4YRZrQSjTLOO4lFHoIq6txluLzE69DBDC/gXxVpXaEO9srYqE7jGv
         WV+XjmYc67mTXjyhlXf/l9juDx4jM83IMOzV93vzQLF57+YjsrybUYbaHZ8hMAwa+cVR
         QhRxMq3cT9Exjf0ROkxqZXPggx2R5d63fougEu2xy0notL3deF9mi2V4zudb9gfXBpS8
         mynDIY8Gkr+kQ/wR6tZV0qicjD1XRMlEpuJO9+aTpFmjhCdQeV9gVMv/Rv0XUW6NGjXI
         NApA==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20251104; t=1777386831; x=1777991631;
        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;
        bh=Ct8Vr7tZTUAd+DiLlXb8sJtqUfUbJzJOW+ZP26uy5x0=;
        b=BjRIuM8JjOhquu+YLbDdoaVuivSI7m7Lf8dzusdXljvQZCVBvmczNjDM/+KoaT+2yR
         DPAO5oBak0URKXoRbEAfQnjE/SZ1IIA+czlnEfZzVijZsXoRVIBwUvZYx64yo8T0Cz7J
         MYDE7FlQTsTGxX20gud/Ey7kJBnYdYVKfkLilzfmE00zI2knJ8RIpSzf1yunLM+o0EXq
         /bD5/DojnH3XAbFW761pObM4n3CIFotFyS4RE7y8mkTAt6HQAkRNK47u6YW+JYRRSHst
         p6xi3LwRg9TPPZ4JDndazcWD2tqLfHyqOFQMX3pXjPQ88ABPUn+nnDmYukTDFPpvoGhF
         8owg==
X-Gm-Message-State: AOJu0Yxla/+oZOPdJ3Y3VKm0FHmvd2XUoVFhreYm+nH6CL3N7I8bmune
	b0R6HMddiRdybZhqfBC5mXwczl8OlPLlZLfVQwP8bM+HLZ6yftlMUU+c8RI7fQ==
X-Gm-Gg: AeBDiet3Lb/fNxBMOwkZzGaNi021sDBRBjFpW25ROdD2FohMNlxkRAD+OAeqb029aDL
	P0IlX++bPzfCIJ5iBV6PkNwRD20FlwzMc1Tn6AYBwZUSNAuzR6HK96FYZL8+lxa+nt8Y/W2UzDI
	BYt+4Q1OveJpa+r9Pwjd+znzmJj2ccZUk9w3Bj7+dwkDPfLd8vJipaoEk2xeAYmx1yoA7A1mz8n
	tYmMT/NnpLyr3OKbOyk3Fh7JUFD9y20e0rQqc1qOYDB/hI4JuUkfKCLbSR9LMWtVgVfseAkg7Pv
	Z9KirIOPYE0M/S6WNyFCD9IDmibA+XYVAHt1k376OZQMDw6EAUa4gY8KosStEyB4mEjAXvFnXgg
	p3/3q8QZDuPjOuHdYI/3OaVAYEwUwCFadM/vMFj0jYcjrL2lctGQagL54yvGnxU8zeSNfiypxQY
	eSC8Jff6sD6MqMkK2CIdH0IeEv63l60xgzlQOTPfvEul8O2Gc3R/PgYLHDyVeNcThgSgMZmYwig
	9B7ng2038zYQPs=
X-Received: by 2002:a05:600c:81ca:b0:487:59c:2bb8 with SMTP id 5b1f17b1804b1-48a77b24e5emr53261145e9.27.1777386831127;
        Tue, 28 Apr 2026 07:33:51 -0700 (PDT)
From: Oleksii Kurochko <oleksii.kurochko@gmail.com>
To: xen-devel@lists.xenproject.org
Cc: Romain Caritey <Romain.Caritey@microchip.com>,
	Oleksii Kurochko <oleksii.kurochko@gmail.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?q?Roger=20Pau=20Monn=C3=A9?= <roger.pau@citrix.com>
Subject: [PATCH v4 02/11] xen/dom0less: rename kernel_zimage_probe() to kernel_image_probe()
Date: Tue, 28 Apr 2026 16:33:31 +0200
Message-ID: <d87dd4f04e3f0d421485091cf434a088f6693641.1777303844.git.oleksii.kurochko@gmail.com>
X-Mailer: git-send-email 2.53.0
In-Reply-To: <cover.1777303844.git.oleksii.kurochko@gmail.com>
References: <cover.1777303844.git.oleksii.kurochko@gmail.com>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit
X-purgate-ID: tlsNG-d25034/1777386832-6E577CF5-E38FC2B4/10/73395122804
X-purgate-type: spam
X-purgate-size: 7700

The helper kernel_zimage_probe() is referenced from common code
(xen/common/device-tree/kernel.c), but its name is tied to the zImage
format which is specific to Arm (from architectures supported by Xen).

Other architectures supported by Xen, such as RISC-V, do not use the
zImage format and instead rely on other kernel image types (e.g. Image
or compressed Image variants: Image.gz, etc). Using "zimage" in the
name is therefore misleading in architecture-independent code.

Rename kernel_zimage_probe() to kernel_image_probe() and update the
associated structure field from "zimage" to "image" to reflect that the
code handles generic kernel images rather than the zImage format
specifically.

No functional change intended.

Reported-by: Jan Beulich <jbeulich@suse.com>
Signed-off-by: Oleksii Kurochko <oleksii.kurochko@gmail.com>
---
Changes in v3-4:
 - Nothing changed. Only rebase.
---
Changes in v2:
 - new patch.
---
---
 xen/arch/arm/kernel.c           | 48 ++++++++++++++++-----------------
 xen/common/device-tree/kernel.c |  2 +-
 xen/include/xen/fdt-kernel.h    |  4 +--
 3 files changed, 27 insertions(+), 27 deletions(-)

diff --git a/xen/arch/arm/kernel.c b/xen/arch/arm/kernel.c
index 9395b5af8745..a5554714cd7b 100644
--- a/xen/arch/arm/kernel.c
+++ b/xen/arch/arm/kernel.c
@@ -101,8 +101,8 @@ static paddr_t __init kernel_zimage_place(struct kernel_info *info)
     paddr_t load_addr;
 
 #ifdef CONFIG_HAS_DOMAIN_TYPE
-    if ( (info->type == DOMAIN_64BIT) && (info->zimage.start == 0) )
-        return mem->bank[0].start + info->zimage.text_offset;
+    if ( (info->type == DOMAIN_64BIT) && (info->image.start == 0) )
+        return mem->bank[0].start + info->image.text_offset;
 #endif
 
     /*
@@ -111,19 +111,19 @@ static paddr_t __init kernel_zimage_place(struct kernel_info *info)
      * and above 32MiB. Load it as high as possible within these
      * constraints, while also avoiding the DTB.
      */
-    if ( info->zimage.start == 0 )
+    if ( info->image.start == 0 )
     {
         paddr_t load_end;
 
         load_end = mem->bank[0].start + mem->bank[0].size;
         load_end = MIN(mem->bank[0].start + MB(128), load_end);
 
-        load_addr = load_end - info->zimage.len;
+        load_addr = load_end - info->image.len;
         /* Align to 2MB */
         load_addr &= ~((2 << 20) - 1);
     }
     else
-        load_addr = info->zimage.start;
+        load_addr = info->image.start;
 
     return load_addr;
 }
@@ -131,8 +131,8 @@ static paddr_t __init kernel_zimage_place(struct kernel_info *info)
 static void __init kernel_zimage_load(struct kernel_info *info)
 {
     paddr_t load_addr = kernel_zimage_place(info);
-    paddr_t paddr = info->zimage.kernel_addr;
-    paddr_t len = info->zimage.len;
+    paddr_t paddr = info->image.kernel_addr;
+    paddr_t len = info->image.len;
     void *kernel;
     int rc;
 
@@ -215,7 +215,7 @@ int __init kernel_uimage_probe(struct kernel_info *info,
         return -EOPNOTSUPP;
     }
 
-    info->zimage.start = be32_to_cpu(uimage.load);
+    info->image.start = be32_to_cpu(uimage.load);
     info->entry = be32_to_cpu(uimage.ep);
 
     /*
@@ -224,20 +224,20 @@ int __init kernel_uimage_probe(struct kernel_info *info,
      * independent image. That means Xen is free to load such an image at
      * any valid address.
      */
-    if ( info->zimage.start == 0 )
+    if ( info->image.start == 0 )
         printk(XENLOG_INFO
                "No load address provided. Xen will decide where to load it.\n");
     else
         printk(XENLOG_INFO
                "Provided load address: %"PRIpaddr" and entry address: %"PRIpaddr"\n",
-               info->zimage.start, info->entry);
+               info->image.start, info->entry);
 
     /*
      * If the image supports position independent execution, then user cannot
      * provide an entry point as Xen will load such an image at any appropriate
      * memory address. Thus, we need to return error.
      */
-    if ( (info->zimage.start == 0) && (info->entry != 0) )
+    if ( (info->image.start == 0) && (info->entry != 0) )
     {
         printk(XENLOG_ERR
                "Entry point cannot be non zero for PIE image.\n");
@@ -257,13 +257,13 @@ int __init kernel_uimage_probe(struct kernel_info *info,
         if ( rc )
             return rc;
 
-        info->zimage.kernel_addr = mod->start;
-        info->zimage.len = mod->size;
+        info->image.kernel_addr = mod->start;
+        info->image.len = mod->size;
     }
     else
     {
-        info->zimage.kernel_addr = addr + sizeof(uimage);
-        info->zimage.len = len;
+        info->image.kernel_addr = addr + sizeof(uimage);
+        info->image.len = len;
     }
 
     info->load = kernel_zimage_load;
@@ -289,7 +289,7 @@ int __init kernel_uimage_probe(struct kernel_info *info,
      * Thus, Xen uses uimage.load attribute to determine the load address and
      * zimage.text_offset is ignored.
      */
-    info->zimage.text_offset = 0;
+    info->image.text_offset = 0;
 #endif
 
     return 0;
@@ -338,10 +338,10 @@ static int __init kernel_zimage64_probe(struct kernel_info *info,
     if ( (end - start) > size )
         return -EINVAL;
 
-    info->zimage.kernel_addr = addr;
-    info->zimage.len = end - start;
-    info->zimage.text_offset = zimage.text_offset;
-    info->zimage.start = 0;
+    info->image.kernel_addr = addr;
+    info->image.len = end - start;
+    info->image.text_offset = zimage.text_offset;
+    info->image.start = 0;
 
     info->load = kernel_zimage_load;
 
@@ -389,10 +389,10 @@ static int __init kernel_zimage32_probe(struct kernel_info *info,
         }
     }
 
-    info->zimage.kernel_addr = addr;
+    info->image.kernel_addr = addr;
 
-    info->zimage.start = start;
-    info->zimage.len = end - start;
+    info->image.start = start;
+    info->image.len = end - start;
 
     info->load = kernel_zimage_load;
 
@@ -403,7 +403,7 @@ static int __init kernel_zimage32_probe(struct kernel_info *info,
     return 0;
 }
 
-int __init kernel_zimage_probe(struct kernel_info *info, paddr_t addr,
+int __init kernel_image_probe(struct kernel_info *info, paddr_t addr,
                                paddr_t size)
 {
     int rc;
diff --git a/xen/common/device-tree/kernel.c b/xen/common/device-tree/kernel.c
index 28096121a52d..cfa27464f0fc 100644
--- a/xen/common/device-tree/kernel.c
+++ b/xen/common/device-tree/kernel.c
@@ -235,7 +235,7 @@ int __init kernel_probe(struct kernel_info *info,
     if ( rc && rc != -EINVAL )
         return rc;
 
-    rc = kernel_zimage_probe(info, mod->start, mod->size);
+    rc = kernel_image_probe(info, mod->start, mod->size);
 
     return rc;
 }
diff --git a/xen/include/xen/fdt-kernel.h b/xen/include/xen/fdt-kernel.h
index 86a37a13048b..54be77aa191e 100644
--- a/xen/include/xen/fdt-kernel.h
+++ b/xen/include/xen/fdt-kernel.h
@@ -63,7 +63,7 @@ struct kernel_info {
             paddr_t text_offset; /* 64-bit Image only */
 #endif
             paddr_t start; /* Must be 0 for 64-bit Image */
-        } zimage;
+        } image;
     };
 
 #ifdef CONFIG_HAS_DOMAIN_TYPE
@@ -133,7 +133,7 @@ void kernel_load(struct kernel_info *info);
 
 int kernel_decompress(struct boot_module *mod, uint32_t offset);
 
-int kernel_zimage_probe(struct kernel_info *info, paddr_t addr, paddr_t size);
+int kernel_image_probe(struct kernel_info *info, paddr_t addr, paddr_t size);
 
 /*
  * uImage isn't really used nowadays thereby leave kernel_uimage_probe()
-- 
2.53.0



From xen-devel-bounces@lists.xenproject.org Tue Apr 28 14:34:12 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 28 Apr 2026 14:34:12 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1296342.1572814 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wHjVi-0007B1-ON; Tue, 28 Apr 2026 14:34:02 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1296342.1572814; Tue, 28 Apr 2026 14:34: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 1wHjVi-0007AP-J5; Tue, 28 Apr 2026 14:34:02 +0000
Received: by outflank-mailman (input) for mailman id 1296342;
 Tue, 28 Apr 2026 14:34:01 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92) id 1wHjVh-0006r9-1d
 for xen-devel@lists.xenproject.org; Tue, 28 Apr 2026 14:34:01 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wHjVg-008e9B-D6
 for xen-devel@lists.xenproject.org; Tue, 28 Apr 2026 16:34:00 +0200
Received: from [10.42.69.1] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <oleksii.kurochko@gmail.com>)
 id 69f0c556-e002-0a2a0a5209dd-0a2a4501afa6-6
 for <xen-devel@lists.xenproject.org>; Tue, 28 Apr 2026 16:34:00 +0200
Received: from [209.85.128.49] (helo=mail-wm1-f49.google.com)
 by tlsNG-d62444.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.1)
 (envelope-from <oleksii.kurochko@gmail.com>)
 id 69f0c558-c1f2-0a2a45010019-d1558031a9e5-3
 for <xen-devel@lists.xenproject.org>; Tue, 28 Apr 2026 16:34:00 +0200
Received: by mail-wm1-f49.google.com with SMTP id
 5b1f17b1804b1-488b3f8fa2bso117452585e9.1
 for <xen-devel@lists.xenproject.org>; Tue, 28 Apr 2026 07:34:00 -0700 (PDT)
Received: from fedora (user-109-243-69-121.play-internet.pl. [109.243.69.121])
 by smtp.gmail.com with ESMTPSA id
 5b1f17b1804b1-48a774b6300sm19302145e9.16.2026.04.28.07.33.57
 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
 Tue, 28 Apr 2026 07:33:58 -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=20251104 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=20251104; t=1777386839; x=1777991639; 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;
        bh=flD7ZmhwssMnyYfAVHC55aOI9OknAA3VNVf0Nz/lr7I=;
        b=W9EP6m8Pb7I1AcLFBTDh2ygI0BxNL42SgPZNExoXcfbzBKSUHks4KqeudDPC0leUqb
         bT9TEg+gdloHJftHqTYZcxvi13JR+b4t97wXtlCJh9rL6pEIz0cjzhRANzF1W9k+p3qc
         zsTnJXNiD+fALNOTh1P2CGhU8AitwxbiU3zeWEg70nS+jGgmt7w2rpUsQRF30Q87ihaE
         XWeqKrURym6a34DDvt7vddR/08w7Vj/j2jkUJewCIf3mB+2dM8WIC6hAJ6qeJiSm3D5U
         V88mfHQdV1AJg1GdL9qOYAtHfEC6B1oEdc/9e+RyhTknxeBlMsH1aIHyvSzDsTg5zUUx
         FlAw==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20251104; t=1777386839; x=1777991639;
        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;
        bh=flD7ZmhwssMnyYfAVHC55aOI9OknAA3VNVf0Nz/lr7I=;
        b=Qe3mAS5hhDYoG8PDgjj97bGU07PIsbYMi8IpuD9ZYFQW6VhMCBZ76kbqVO9zqTODAv
         5MVGdEXP5YfBZteQ3URleRe9sXmSJ6hcPBwIa9KgQR4u1n3iq66acw18HeRrE8K+Rgn0
         Jd/6FiMlt69UoMXcXRF5IeaScFbQpICNcKiRON62vxh/iSmTuPlcS4BpiZvmCKCrXEkW
         iLVuF/k/lajmumHD7Qh9GLdy3ui9APDVS/w8Z1giGBby7v03rmrIuavigVpnNfGwwkTh
         tyrsjS13BabSYt5tCpDSpvaGuQuEw0pZUw6fyGIXE9fpdxKyrFI0voFXVtforH5/GoWF
         +W6w==
X-Gm-Message-State: AOJu0YwbQLd+iLYoQaQxTW8vZXHjow7UZY7s53yIqdd6/RoZN8Al3D4U
	tWqsQslPRmtT1G6OafNaN3CtMzcYGxOPpc1TMOAzJGYYRkR7/9CsVK4H16Rtbw==
X-Gm-Gg: AeBDiev4X78MOldZMyTInHUkTt/U7mnTn1Ct+yYjKbxcLhGNbtC/KPzJyx4TlrM4CYy
	U9/HoJJPKwJaR+4c1ZS8MYbilPveuf4aZ5qpPLXEgvU4S8J8KQQ6xu41gFUqvkJ/gQIXlpcVxYc
	QEs0nkcCeqnRRVAfuPJi1a0l5XtmwoWMFXOgUYlyl9Y2wqpSQR9fy0Vqba7xhDFaYKYeXfGmWmX
	d5ggl5v3F3fk+vRV60NRefa4da54a3YSjzJ9hcJryriLipuQisgpVzcFdJyP2C0cbfEk5yIIXkt
	O3yakCeZeum8kPiZMTdUDOtvbxNfJByI85TRKfMCivi9kGOGwDYZeyPtvqAZzYG56oVKJ/1P+zP
	ana4wKJWcuJ2lVjD8RGzupGKn6tRDGhIaRyXgw4xr9ZFODXHOP8G8Sy8bIVtsU/X9YJLIyvrFn8
	/QFW82zFXdTOF9eYw9yiCTHvF7uGRSs8u/8TIdxmUcBlrMvVol2G6tAgW+qIiuPNH0kmDMmnK1z
	rno
X-Received: by 2002:a05:600c:a403:b0:486:f893:56c6 with SMTP id 5b1f17b1804b1-48a78a391b9mr33404535e9.10.1777386839191;
        Tue, 28 Apr 2026 07:33:59 -0700 (PDT)
From: Oleksii Kurochko <oleksii.kurochko@gmail.com>
To: xen-devel@lists.xenproject.org
Cc: Romain Caritey <Romain.Caritey@microchip.com>,
	Oleksii Kurochko <oleksii.kurochko@gmail.com>,
	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=20Pau=20Monn=C3=A9?= <roger.pau@citrix.com>,
	Stefano Stabellini <sstabellini@kernel.org>
Subject: [PATCH v4 08/11] xen/riscv: rework G-stage mode handling
Date: Tue, 28 Apr 2026 16:33:37 +0200
Message-ID: <865ed71ece75e850cdcb47ce9157a668a46a4c4d.1777303844.git.oleksii.kurochko@gmail.com>
X-Mailer: git-send-email 2.53.0
In-Reply-To: <cover.1777303844.git.oleksii.kurochko@gmail.com>
References: <cover.1777303844.git.oleksii.kurochko@gmail.com>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit
X-purgate-ID: tlsNG-d62444/1777386840-BCC6CFF4-59E3781B/10/73395122804
X-purgate-type: spam
X-purgate-size: 15471

Rework G-stage mode handling to make the selected mode descriptor
reusable outside of p2m initialization, both for filling CPU nodes in
the device tree passed to dom0less guests and for per-domain G-stage
mode selection at domain creation time.

Promote gstage_modes[] from a local __initconst variable inside
gstage_mode_detect() to a file-scope static const array, and convert
max_gstage_mode from an embedded struct (assigned by value) to a global
const pointer into gstage_modes[]. This allows referencing both the mode
identifier and the mode name after init without copying the descriptor.
Remove get_max_supported_mode(); its callers now dereference
max_gstage_mode->mode directly.

Change struct p2m_domain::mode from an embedded gstage_mode_desc to a
const pointer into gstage_modes[], so each domain shares the descriptor
rather than carrying its own copy.

Adjust the gstage_modes[] entries in three ways:
 - Use lowercase names without the "x4" suffix (e.g. "sv39" instead of
   "Sv39x4"). The DT mmu-type binding [1] does not include the suffix,
   so the name can now be passed directly to the guest without
   transformation. The suffix is appended only in the diagnostic
   printk, where it remains informative.
 - Use "none" for Bare mode (HGATP_MODE_OFF) to match the DT binding.
 - Change paging_levels to represent the root page-table level index
   (i.e. total paging levels minus one) rather than the total count.
   P2M_ROOT_LEVEL() now returns the correct VPN index directly, without
   requiring callers to subtract one or use hardcoded offsets.

Add gstage_mode to xen_arch_domainconfig so the toolstack can
request a specific G-stage mode at domain creation time. Introduce
find_gstage_mode() to resolve a mode descriptor by HGATP_MODE_*,
capping the result at max_gstage_mode to prevent requesting a mode
the hardware does not support. Update p2m_init() to accept a
xen_domctl_createdomain pointer and call find_gstage_mode()
instead of hardcoding Sv39x4.

Add arch_parse_dom0less_node() in a new dom0less-build.c to read the
"mmu-type" DT property from a guest domain node and store it in
boot_domain::create_cfg.arch.gstage_mode, falling back to maximum
supported mode when the property is absent.

[1] https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/tree/Documentation/devicetree/bindings/riscv/cpus.yaml?h=v6.19-rc3#n82

Signed-off-by: Oleksii Kurochko <oleksii.kurochko@gmail.com>
---
Changes in v4:
 - Stray blank after * in declaration of find_gstage_mode().
 - Refactor find_gstage_mode(). Now it is find_gstage_mode_by_bits().
 - Add __ro_after_init for static local variable m in p2m_init.
 - s/ char gstage_mode[8];/unsigned char gstage_mode; in struct vcpu_guest_context.
 - s/modes/gstage_modes in p2m.c.
 - Introduce P2M_EXTRA_BITS_AT_LEVEL and re-use P2M_ROOT_EXTRA_BITS to encode magic constant 2.
---
Changes in v3:
 - New patch.
---
---
 xen/arch/riscv/Makefile          |   1 +
 xen/arch/riscv/dom0less-build.c  |  70 ++++++++++++++++++
 xen/arch/riscv/include/asm/p2m.h |  18 +++--
 xen/arch/riscv/p2m.c             | 120 +++++++++++++++++++++----------
 xen/arch/riscv/vmid.c            |   2 +-
 xen/include/public/arch-riscv.h  |   5 ++
 6 files changed, 170 insertions(+), 46 deletions(-)
 create mode 100644 xen/arch/riscv/dom0less-build.c

diff --git a/xen/arch/riscv/Makefile b/xen/arch/riscv/Makefile
index eecdcbc76867..8f7fd625dddd 100644
--- a/xen/arch/riscv/Makefile
+++ b/xen/arch/riscv/Makefile
@@ -1,6 +1,7 @@
 obj-y += aplic.o
 obj-y += cpufeature.o
 obj-y += domain.o
+obj-$(CONFIG_DOM0LESS_BOOT) += dom0less-build.init.o
 obj-$(CONFIG_EARLY_PRINTK) += early_printk.o
 obj-y += entry.o
 obj-y += extable.o
diff --git a/xen/arch/riscv/dom0less-build.c b/xen/arch/riscv/dom0less-build.c
new file mode 100644
index 000000000000..02782d0f9998
--- /dev/null
+++ b/xen/arch/riscv/dom0less-build.c
@@ -0,0 +1,70 @@
+/* SPDX-License-Identifier: GPL-2.0-only */
+
+#include <xen/bootfdt.h>
+#include <xen/device_tree.h>
+#include <xen/init.h>
+
+#include <asm/p2m.h>
+
+int __init arch_parse_dom0less_node(struct dt_device_node *node,
+                                    struct boot_domain *bd)
+{
+    const char *mmu_type;
+    unsigned long bits;
+    const char *end;
+
+    if ( dt_property_read_string(node, "mmu-type", &mmu_type) )
+    {
+        dprintk(XENLOG_WARNING, "mmu-type property is missing in guest domain "
+                "node. %s will be used as fallback\n", max_gstage_mode->name);
+
+        bits = P2M_GFN_LEVEL_SHIFT(max_gstage_mode->paging_levels + 1);
+
+        goto out;
+    }
+
+    if ( !strcasecmp(mmu_type, "riscv,none") )
+    {
+        dprintk(XENLOG_ERR, "Bare mode isn't supported by Xen\n");
+
+        return -EOPNOTSUPP;
+    }
+
+    if ( strncasecmp(mmu_type, "riscv,sv", 8) )
+    {
+        dprintk(XENLOG_ERR, "mmu-type value \"%s\" is incorrect\n", mmu_type);
+
+        return -EINVAL;
+    }
+
+    bits = simple_strtoul(mmu_type + 8, &end, 10);
+    if ( (*end != '\0') || (end == mmu_type + 8) )
+    {
+        dprintk(XENLOG_ERR, "mmu-type value \"%s\" is incorrect\n", mmu_type);
+
+        return -EINVAL;
+    }
+
+ out:
+    if ( bits > (UINT8_MAX - P2M_ROOT_EXTRA_BITS) )
+    {
+        dprintk(XENLOG_ERR, "gstage addr bits value overflows uint8\n");
+
+        return -EINVAL;
+    }
+    /*
+     * The correct value of bits will be checked in p2m_init() by call of
+     * find_gstage_mode_by_bits().
+     *
+     * As mmu-type property contains one of string:
+     *  - riscv,sv32
+     *  - riscv,sv39
+     *  - riscv,sv48
+     *  - riscv,sv57
+     * it is needed to add '+P2M_ROOT_EXTRA_BITS' as for G-stage mode GPAs
+     * are extended by P2M_ROOT_EXTRA_BITS.
+     */
+    bd->create_cfg.arch.gstage_addr_bits = bits + P2M_ROOT_EXTRA_BITS;
+
+    return 0;
+}
diff --git a/xen/arch/riscv/include/asm/p2m.h b/xen/arch/riscv/include/asm/p2m.h
index 54ea67990f06..638c60ddc2f7 100644
--- a/xen/arch/riscv/include/asm/p2m.h
+++ b/xen/arch/riscv/include/asm/p2m.h
@@ -13,7 +13,7 @@
 
 #define P2M_ROOT_ORDER  (ilog2(GSTAGE_ROOT_PAGE_TABLE_SIZE) - PAGE_SHIFT)
 #define P2M_ROOT_PAGES  BIT(P2M_ROOT_ORDER, U)
-#define P2M_ROOT_LEVEL(p2m) ((p2m)->mode.paging_levels)
+#define P2M_ROOT_LEVEL(p2m) ((p2m)->mode->paging_levels)
 
 /*
  * According to the RISC-V spec:
@@ -32,10 +32,13 @@
  */
 #define P2M_LEVEL_ORDER(lvl) XEN_PT_LEVEL_ORDER(lvl)
 
-#define P2M_ROOT_EXTRA_BITS(p2m, lvl) (2 * ((lvl) == P2M_ROOT_LEVEL(p2m)))
+#define P2M_ROOT_EXTRA_BITS 2
+
+#define P2M_LEVEL_EXTRA_BITS(p2m, lvl) \
+    (P2M_ROOT_EXTRA_BITS * ((lvl) == P2M_ROOT_LEVEL(p2m)))
 
 #define P2M_PAGETABLE_ENTRIES(p2m, lvl) \
-    (BIT(PAGETABLE_ORDER + P2M_ROOT_EXTRA_BITS(p2m, lvl), UL))
+    (BIT(PAGETABLE_ORDER + P2M_LEVEL_EXTRA_BITS(p2m, lvl), UL))
 
 #define P2M_TABLE_OFFSET(p2m, lvl) (P2M_PAGETABLE_ENTRIES(p2m, lvl) - 1UL)
 
@@ -55,6 +58,8 @@ struct gstage_mode_desc {
     char name[8];
 };
 
+extern const struct gstage_mode_desc *max_gstage_mode;
+
 /* Per-p2m-table state */
 struct p2m_domain {
     /*
@@ -68,7 +73,7 @@ struct p2m_domain {
     /* The root of the p2m tree. May be concatenated */
     struct page_info *root;
 
-    struct gstage_mode_desc mode;
+    const struct gstage_mode_desc *mode;
 
     /* Back pointer to domain */
     struct domain *domain;
@@ -215,9 +220,10 @@ static inline bool arch_acquire_resource_check(struct domain *d)
 }
 
 void guest_mm_init(void);
-unsigned char get_max_supported_mode(void);
 
-int p2m_init(struct domain *d);
+struct xen_domctl_createdomain;
+
+int p2m_init(struct domain *d, const struct xen_domctl_createdomain *config);
 
 static inline void p2m_write_lock(struct p2m_domain *p2m)
 {
diff --git a/xen/arch/riscv/p2m.c b/xen/arch/riscv/p2m.c
index adcf292a7092..13846bee6a4f 100644
--- a/xen/arch/riscv/p2m.c
+++ b/xen/arch/riscv/p2m.c
@@ -45,12 +45,27 @@ struct p2m_pte_ctx {
     unsigned int level;          /* Paging level at which the PTE resides. */
 };
 
-static struct gstage_mode_desc __ro_after_init max_gstage_mode = {
-    .mode = HGATP_MODE_OFF,
-    .paging_levels = 0,
-    .name = "Bare",
+/* Values should be sorted by ->mode in this array */
+static const struct gstage_mode_desc gstage_modes[] = {
+    /*
+     * Based on the RISC-V spec:
+     *   Bare mode is always supported, regardless of SXLEN.
+     *   When SXLEN=32, the only other valid setting for MODE is Sv32.
+     *   When SXLEN=64, three paged virtual-memory schemes are defined:
+     *   Sv39, Sv48, and Sv57.
+     */
+    { HGATP_MODE_OFF,    0, "none" },
+#ifdef CONFIG_RISCV_32
+    { HGATP_MODE_SV32X4, 1, "sv32" },
+#else
+    { HGATP_MODE_SV39X4, 2, "sv39" },
+    { HGATP_MODE_SV48X4, 3, "sv48" },
+    { HGATP_MODE_SV57X4, 4, "sv57" },
+#endif
 };
 
+const struct gstage_mode_desc * __ro_after_init max_gstage_mode = &gstage_modes[0];
+
 static void p2m_free_page(struct p2m_domain *p2m, struct page_info *pg);
 
 static inline void p2m_free_metadata_page(struct p2m_domain *p2m,
@@ -63,11 +78,6 @@ static inline void p2m_free_metadata_page(struct p2m_domain *p2m,
     }
 }
 
-unsigned char get_max_supported_mode(void)
-{
-    return max_gstage_mode.mode;
-}
-
 /*
  * If anything is changed here, it may also require updates to
  * p2m_{get,set}_type().
@@ -148,41 +158,24 @@ static pte_t *p2m_get_root_pointer(struct p2m_domain *p2m, gfn_t gfn)
 
 static void __init gstage_mode_detect(void)
 {
-    static const struct gstage_mode_desc modes[] __initconst = {
-        /*
-         * Based on the RISC-V spec:
-         *   Bare mode is always supported, regardless of SXLEN.
-         *   When SXLEN=32, the only other valid setting for MODE is Sv32.
-         *   When SXLEN=64, three paged virtual-memory schemes are defined:
-         *   Sv39, Sv48, and Sv57.
-         */
-#ifdef CONFIG_RISCV_32
-        { HGATP_MODE_SV32X4, 2, "Sv32x4" }
-#else
-        { HGATP_MODE_SV39X4, 3, "Sv39x4" },
-        { HGATP_MODE_SV48X4, 4, "Sv48x4" },
-        { HGATP_MODE_SV57X4, 5, "Sv57x4" },
-#endif
-    };
-
-    for ( unsigned int mode_idx = ARRAY_SIZE(modes); mode_idx-- > 0; )
+    for ( unsigned int mode_idx = ARRAY_SIZE(gstage_modes); mode_idx-- > 0; )
     {
-        unsigned long mode = modes[mode_idx].mode;
+        unsigned long mode = gstage_modes[mode_idx].mode;
 
         csr_write(CSR_HGATP, MASK_INSR(mode, HGATP_MODE_MASK));
 
         if ( MASK_EXTR(csr_read(CSR_HGATP), HGATP_MODE_MASK) == mode )
         {
-            max_gstage_mode = modes[mode_idx];
+            max_gstage_mode = &gstage_modes[mode_idx];
 
             break;
         }
     }
 
-    if ( max_gstage_mode.mode == HGATP_MODE_OFF )
+    if ( max_gstage_mode->mode == HGATP_MODE_OFF )
         panic("Xen expects that G-stage won't be Bare mode\n");
 
-    printk("Max supported G-stage mode is %s\n", max_gstage_mode.name);
+    printk("Max supported G-stage mode is %sx4\n", max_gstage_mode->name);
 
     csr_write(CSR_HGATP, 0);
 
@@ -283,7 +276,7 @@ static void clear_and_clean_page(struct page_info *page, bool clean_dcache)
 unsigned long construct_hgatp(const struct p2m_domain *p2m, uint16_t vmid)
 {
     return MASK_INSR(mfn_x(page_to_mfn(p2m->root)), HGATP_PPN_MASK) |
-           MASK_INSR(p2m->mode.mode, HGATP_MODE_MASK) |
+           MASK_INSR(p2m->mode->mode, HGATP_MODE_MASK) |
            MASK_INSR(vmid, HGATP_VMID_MASK);
 }
 
@@ -331,8 +324,35 @@ static int p2m_alloc_root_table(struct p2m_domain *p2m)
     return 0;
 }
 
-int p2m_init(struct domain *d)
+static const struct gstage_mode_desc *find_gstage_mode_by_bits(
+    unsigned char gpa_bits)
+{
+    ASSERT(gstage_modes[0].mode == HGATP_MODE_OFF);
+
+    for ( unsigned int i = 1; i < ARRAY_SIZE(gstage_modes); i++ )
+    {
+        unsigned int lvl = gstage_modes[i].paging_levels + 1;
+        unsigned int bits = P2M_GFN_LEVEL_SHIFT(lvl) + P2M_ROOT_EXTRA_BITS;
+
+        if ( gpa_bits == bits )
+        {
+            if ( gstage_modes[i].mode > max_gstage_mode->mode )
+                return NULL;
+            return &gstage_modes[i];
+        }
+    }
+
+    return NULL;
+}
+
+int p2m_init(struct domain *d, const struct xen_domctl_createdomain *config)
 {
+    /*
+     * TODO: This static is a temporary constraint: all guests must use the
+     * same MMU mode because p2m_gpa_bits is not yet per-domain.
+     * Drop this once per-domain p2m_gpa_bits is introduced.
+     */
+    static const struct gstage_mode_desc __ro_after_init *m = &gstage_modes[0];
     struct p2m_domain *p2m = p2m_get_hostp2m(d);
 
     /*
@@ -341,6 +361,33 @@ int p2m_init(struct domain *d)
      */
     p2m->domain = d;
 
+    if ( !config )
+    {
+        dprintk(XENLOG_ERR, "NULL config is passed\n");
+        return -EINVAL;
+    }
+
+    p2m->mode = find_gstage_mode_by_bits(config->arch.gstage_addr_bits);
+
+    if ( !p2m->mode )
+    {
+        dprintk(XENLOG_ERR,
+                "Unsupported or unavailable gstage addr bits: %u\n",
+                config->arch.gstage_addr_bits);
+
+        return -EINVAL;
+    }
+
+    if ( m->mode == HGATP_MODE_OFF )
+        m = p2m->mode;
+
+    if ( m->mode != p2m->mode->mode )
+    {
+        dprintk(XENLOG_ERR,
+                "Mode should be the same for all guests at the moment\n");
+        return -EINVAL;
+    }
+
     paging_domain_init(d);
 
     rwlock_init(&p2m->lock);
@@ -362,11 +409,6 @@ int p2m_init(struct domain *d)
 #   error "Add init of p2m->clean_dcache"
 #endif
 
-    /* TODO: don't hardcode used for a domain g-stage mode. */
-    p2m->mode.mode = HGATP_MODE_SV39X4;
-    p2m->mode.paging_levels = 2;
-    safe_strcpy(p2m->mode.name, "Sv39x4");
-
     return 0;
 }
 
@@ -1304,7 +1346,7 @@ static mfn_t p2m_get_entry(struct p2m_domain *p2m, gfn_t gfn,
 {
     unsigned int level = P2M_ROOT_LEVEL(p2m);
     unsigned int gfn_limit_bits =
-        P2M_LEVEL_ORDER(level + 1) + P2M_ROOT_EXTRA_BITS(p2m, level);
+        P2M_LEVEL_ORDER(level + 1) + P2M_LEVEL_EXTRA_BITS(p2m, level);
     pte_t entry, *table;
     int rc;
     mfn_t mfn = INVALID_MFN;
diff --git a/xen/arch/riscv/vmid.c b/xen/arch/riscv/vmid.c
index 8fbcd500f24d..11c7e9d6d6c8 100644
--- a/xen/arch/riscv/vmid.c
+++ b/xen/arch/riscv/vmid.c
@@ -52,7 +52,7 @@ static DEFINE_PER_CPU(struct vmid_data, vmid_data);
 static unsigned int vmidlen_detect(void)
 {
     unsigned int vmid_bits;
-    unsigned char gstage_mode = get_max_supported_mode();
+    unsigned char gstage_mode = max_gstage_mode->mode;
 
     /*
      * According to the RISC-V Privileged Architecture Spec:
diff --git a/xen/include/public/arch-riscv.h b/xen/include/public/arch-riscv.h
index 360d8e6871ba..da4cc0cbfcfb 100644
--- a/xen/include/public/arch-riscv.h
+++ b/xen/include/public/arch-riscv.h
@@ -56,6 +56,11 @@ typedef struct vcpu_guest_context vcpu_guest_context_t;
 DEFINE_XEN_GUEST_HANDLE(vcpu_guest_context_t);
 
 struct xen_arch_domainconfig {
+    /*
+     * G-stage GPA address width in bits.
+     * Valid values: 34 (sv32x4), 41 (sv39x4), 50 (sv48x4), 59 (sv57x4).
+     */
+    unsigned char gstage_addr_bits;
 };
 
 #endif
-- 
2.53.0



From xen-devel-bounces@lists.xenproject.org Tue Apr 28 14:34:13 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 28 Apr 2026 14:34:13 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1296343.1572819 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wHjVj-0007F0-5M; Tue, 28 Apr 2026 14:34:03 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1296343.1572819; Tue, 28 Apr 2026 14:34: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 1wHjVi-0007DO-TT; Tue, 28 Apr 2026 14:34:02 +0000
Received: by outflank-mailman (input) for mailman id 1296343;
 Tue, 28 Apr 2026 14:34:02 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92) id 1wHjVi-00072P-1g
 for xen-devel@lists.xenproject.org; Tue, 28 Apr 2026 14:34:02 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wHjVh-002KhF-E5
 for xen-devel@lists.xenproject.org; Tue, 28 Apr 2026 16:34:01 +0200
Received: from [10.42.69.11] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <oleksii.kurochko@gmail.com>)
 id 69f0c542-bab6-0a2a0a5309dd-0a2a450bd8ea-26
 for <xen-devel@lists.xenproject.org>; Tue, 28 Apr 2026 16:34:01 +0200
Received: from [209.85.128.42] (helo=mail-wm1-f42.google.com)
 by tlsNG-42698a.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.1)
 (envelope-from <oleksii.kurochko@gmail.com>)
 id 69f0c559-212f-0a2a450b0019-d155802ae803-3
 for <xen-devel@lists.xenproject.org>; Tue, 28 Apr 2026 16:34:01 +0200
Received: by mail-wm1-f42.google.com with SMTP id
 5b1f17b1804b1-488ff90d6c7so98959005e9.2
 for <xen-devel@lists.xenproject.org>; Tue, 28 Apr 2026 07:34:01 -0700 (PDT)
Received: from fedora (user-109-243-69-121.play-internet.pl. [109.243.69.121])
 by smtp.gmail.com with ESMTPSA id
 5b1f17b1804b1-48a774b6300sm19302145e9.16.2026.04.28.07.33.59
 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
 Tue, 28 Apr 2026 07:34:00 -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=20251104 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=20251104; t=1777386841; x=1777991641; 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;
        bh=2mD4jaSubu8Cvwa+Y6GVJ5L94GrQA3oWYu3F81YJEug=;
        b=bFwhUnXX54hSZEmkNB9oWPxgLN60qyozC+A0p/p0hVU3a8xNZTPwzpXyGVmNyEIn5c
         5srCegq0EDZcVIvJZRaFcf06oOHfqykGUr+OMob0c1KZgYvmCnptadoLZhlhQ6OT+T2E
         v+mLpvue12sAbWn4C3JG3TkKqbYd4dhWv0hhvfeNtUbRBzm1S3FddXpM9c8/zFGlToIa
         8FLQFlFCFmscUrK7POql8yIPI1bkeZN/8foRvo+xH4nRWzwE052uSqgOkFT2E2ATRNFU
         I5ElotivXjLhbAcMuglSRW21I6wPHCei0vUiuHKStPibupVKLQdG45eBb+F/kxjVHJCO
         nC+g==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20251104; t=1777386841; x=1777991641;
        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;
        bh=2mD4jaSubu8Cvwa+Y6GVJ5L94GrQA3oWYu3F81YJEug=;
        b=ke0hZX/xm7ytodQ7z/fhekJRok4iqf7l1c9SNaRpUUjlIWl3JjagqqHeoV5MZV/tY3
         2mUhntLXhEfZNKs8U2RMh3WS3n0/A6xtqYgcLoHnohKCEAEwuvO8bg7DGrvAlAIulbiI
         CgBko/0ndEwu9pH1DFcXaYPezcVLP2KnUb2nf/7ScaIkUcCQV+qo+aLnpbb6limwZlHb
         2yndErbfWqDK489x1zK/vw/KrPHHfZLKXOPPp2GgYccxGz3gt+XmiczDX3gvmM1lYCvX
         7SPZvR6d+AW/+JV55+W7dQT3VfFNHfd5HQpmRAaR5Yh8TXcIyhWhC41s3kqiqzKom6Y1
         rOTQ==
X-Gm-Message-State: AOJu0Yy7SRhoK+C7cH5DUvK/7VIy+DTwzIv3SVOP7VFaKzayNyZjO6dj
	LUTwTkEMQojhuTUuAbud9GjTB8DXzw8QI2oUWYqRL5gD/0Iuyh3kav3dGXjRQA==
X-Gm-Gg: AeBDies8DaU1H2b9ivr6/pE/zZD+eVZ80nW59nGbcR7kXp2E8u5LtomRXin+9W4uiEs
	F+V2ls7AAVhB5RSdfb0tJUruWHZCkvyfq3S5SX7OCY2uWT5BrLEjrYA/1veFXu2BX3QzuO+et47
	eIN+B5FIbxLjiXMJw5fpcSguVNJapGUqWNVB9+ZiyVVw9e685KrR3etXkg864UFX2Drcy0kQvFl
	wAkxrxzKoCCnu2+YWn1f/6zNpGjVDzF8PxiSwNq+ZR9LFzbJTGw9bWpFDjeHtNOzRtywE/77LyQ
	2hL4L6PoGbwqmQVxMPFNRmY+beHGzy1YNWJ40z143Y+MRBRt8UjoYliBE0xFj0oWcOVFh4x8akE
	+cNB7kepPTvhrQefgQ2R3qG+YOf8SOzxhAjQYYKufShDIRn4c7csokyf/8q9Cbd6Gd0uoi+RfqB
	hc+bcoaEn7mHvpkN6Pv4y0AOonPd6546dRAZh+1eDwqSLuJgjp7xSYtRpOTVRDkcRynac9WJumW
	f6T
X-Received: by 2002:a05:600c:1393:b0:488:fd7e:1063 with SMTP id 5b1f17b1804b1-48a77b270efmr54164075e9.29.1777386840489;
        Tue, 28 Apr 2026 07:34:00 -0700 (PDT)
From: Oleksii Kurochko <oleksii.kurochko@gmail.com>
To: xen-devel@lists.xenproject.org
Cc: Romain Caritey <Romain.Caritey@microchip.com>,
	Oleksii Kurochko <oleksii.kurochko@gmail.com>,
	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=20Pau=20Monn=C3=A9?= <roger.pau@citrix.com>,
	Stefano Stabellini <sstabellini@kernel.org>
Subject: [PATCH v4 09/11] xen/riscv: introduce p2m_gpa_bits
Date: Tue, 28 Apr 2026 16:33:38 +0200
Message-ID: <d073762576102c768a04e704d0d665d0f37fc312.1777303844.git.oleksii.kurochko@gmail.com>
X-Mailer: git-send-email 2.53.0
In-Reply-To: <cover.1777303844.git.oleksii.kurochko@gmail.com>
References: <cover.1777303844.git.oleksii.kurochko@gmail.com>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit
X-purgate-ID: tlsNG-42698a/1777386841-7F175F3B-89F095DD/10/73395122804
X-purgate-type: spam
X-purgate-size: 3213

common/device-tree/domain-build.c uses p2m_gpa_bits to determine the
upper bound of the GPA space when searching for unused regions, so it
must be defined when CONFIG_DOMAIN_BUILD_HELPERS=y.

The variable is initialised to PADDR_BITS and narrowed in p2m_init() to
the GPA width of the selected G-stage mode, allowing an external entity
(e.g. an IOMMU) to restrict it further if needed.

p2m_gpa_bits is a global rather than a per-domain value, which is
acceptable for now because all domains are required to use the same
G-stage MMU mode, as dom0less common code allocates it per all
domains.

Signed-off-by: Oleksii Kurochko <oleksii.kurochko@gmail.com>
Acked-by: Jan Beulich <jbeulich@suse.com>
---
Changes in v4:
 - Add Acked-by: Jan Beulich <jbeulich@suse.com>.
---
Changes in v3:
 - Update initialization of p2m_gpa_bits and the comment above.
 - Rework how p2m_gpa_bits is limited.
 - Update the commit message.
---
Changes in v2:
 - New patch.
---
---
 xen/arch/riscv/include/asm/p2m.h |  3 +++
 xen/arch/riscv/p2m.c             | 15 +++++++++++++++
 2 files changed, 18 insertions(+)

diff --git a/xen/arch/riscv/include/asm/p2m.h b/xen/arch/riscv/include/asm/p2m.h
index 638c60ddc2f7..0d1dace1a0d8 100644
--- a/xen/arch/riscv/include/asm/p2m.h
+++ b/xen/arch/riscv/include/asm/p2m.h
@@ -47,6 +47,9 @@
 #define P2M_LEVEL_MASK(p2m, lvl) \
     (P2M_TABLE_OFFSET(p2m, lvl) << P2M_GFN_LEVEL_SHIFT(lvl))
 
+/* Holds the bit size of GPAs in p2m tables */
+extern unsigned int p2m_gpa_bits;
+
 #define paddr_bits PADDR_BITS
 
 /* Get host p2m table */
diff --git a/xen/arch/riscv/p2m.c b/xen/arch/riscv/p2m.c
index 13846bee6a4f..b7c36a75f175 100644
--- a/xen/arch/riscv/p2m.c
+++ b/xen/arch/riscv/p2m.c
@@ -11,6 +11,8 @@
 #include <xen/sections.h>
 #include <xen/xvmalloc.h>
 
+#include <public/domctl.h>
+
 #include <asm/cpufeature.h>
 #include <asm/csr.h>
 #include <asm/flushtlb.h>
@@ -66,6 +68,12 @@ static const struct gstage_mode_desc gstage_modes[] = {
 
 const struct gstage_mode_desc * __ro_after_init max_gstage_mode = &gstage_modes[0];
 
+/*
+ * Set to the maximum configured support for GPA bits, so the number of GPA
+ * bits can be restricted by an external entity (e.g. IOMMU).
+ */
+unsigned int __ro_after_init p2m_gpa_bits = PADDR_BITS;
+
 static void p2m_free_page(struct p2m_domain *p2m, struct page_info *pg);
 
 static inline void p2m_free_metadata_page(struct p2m_domain *p2m,
@@ -354,6 +362,7 @@ int p2m_init(struct domain *d, const struct xen_domctl_createdomain *config)
      */
     static const struct gstage_mode_desc __ro_after_init *m = &gstage_modes[0];
     struct p2m_domain *p2m = p2m_get_hostp2m(d);
+    unsigned int gpa_bits;
 
     /*
      * "Trivial" initialisation is now complete.  Set the backpointer so the
@@ -409,6 +418,12 @@ int p2m_init(struct domain *d, const struct xen_domctl_createdomain *config)
 #   error "Add init of p2m->clean_dcache"
 #endif
 
+    gpa_bits = P2M_GFN_LEVEL_SHIFT(p2m->mode->paging_levels + 1) +
+               P2M_ROOT_EXTRA_BITS;
+
+    if ( gpa_bits < p2m_gpa_bits )
+        p2m_gpa_bits = gpa_bits;
+
     return 0;
 }
 
-- 
2.53.0



From xen-devel-bounces@lists.xenproject.org Tue Apr 28 14:34:15 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 28 Apr 2026 14:34:15 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1296346.1572831 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wHjVl-0007kE-Gq; Tue, 28 Apr 2026 14:34:05 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1296346.1572831; Tue, 28 Apr 2026 14:34: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 1wHjVl-0007k0-D8; Tue, 28 Apr 2026 14:34:05 +0000
Received: by outflank-mailman (input) for mailman id 1296346;
 Tue, 28 Apr 2026 14:34:03 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92) id 1wHjVj-0007G6-Bo
 for xen-devel@lists.xenproject.org; Tue, 28 Apr 2026 14:34:03 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wHjVi-008eCF-N5
 for xen-devel@lists.xenproject.org; Tue, 28 Apr 2026 16:34:02 +0200
Received: from [10.42.69.2] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <oleksii.kurochko@gmail.com>)
 id 69f0c54f-e002-0a2a0a5209dd-0a2a45029ad4-34
 for <xen-devel@lists.xenproject.org>; Tue, 28 Apr 2026 16:34:02 +0200
Received: from [209.85.128.53] (helo=mail-wm1-f53.google.com)
 by tlsNG-720697.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.1)
 (envelope-from <oleksii.kurochko@gmail.com>)
 id 69f0c55a-af86-0a2a45020019-d1558035cc99-3
 for <xen-devel@lists.xenproject.org>; Tue, 28 Apr 2026 16:34:02 +0200
Received: by mail-wm1-f53.google.com with SMTP id
 5b1f17b1804b1-48984d29fe3so139792575e9.0
 for <xen-devel@lists.xenproject.org>; Tue, 28 Apr 2026 07:34:02 -0700 (PDT)
Received: from fedora (user-109-243-69-121.play-internet.pl. [109.243.69.121])
 by smtp.gmail.com with ESMTPSA id
 5b1f17b1804b1-48a774b6300sm19302145e9.16.2026.04.28.07.34.00
 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
 Tue, 28 Apr 2026 07:34:01 -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=20251104 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=20251104; t=1777386842; x=1777991642; 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;
        bh=qE2dw8csXVresMQtos7iCpzGyvAdlUSDFRumCHhApSA=;
        b=HvTHYapeLwtKYIpfbs4BvHqpGe3CXF+GbDS7+Q7ykeQz2Suz1Nj1swHAegyyA9WMkc
         0pPafgzYzl0Vcm7DcmBNNm1YmOuNpQKzmiweQPpmRLkilpV99SETNZc50eH61F9ZXhqk
         1jUaqn1iOIhZI7B50JPtRZW32iRPf3cGTK6HDqqwTAU5/5/Lt6fod3uZIznCfoBhM3yB
         u5H8WiUAM7VZ5DWmSDA1iW8m88Ajzad8y8ND6HipCaiB88ZuJ7M0t2Zb8+dxanIX4BjZ
         Jo6gK75Zg469TNH2tJ/S3zXspEEL6di+NQ6b8y/hyjbgkVte5SASa7YQFy1qYngb62u7
         C0iA==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20251104; t=1777386842; x=1777991642;
        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;
        bh=qE2dw8csXVresMQtos7iCpzGyvAdlUSDFRumCHhApSA=;
        b=p59EDe7S+tNtlEwuWv8a6XQFTUlvSYAI83ZB8FG/KUAUQULqdKFKkMIP4bkmO+yfnN
         GAwBp4RnRJwn0qxGV4VW84ZIavUCQfvj8hD+f2PuPLn4CLFFsxOiOkvOobhV87dGrfvE
         xWYImEjevMCcMsQ1i1I1pyJlhTSpfmXtZUrBrxGhCThJLMnIUl/QzP1f4mHAik6s9yKZ
         rlZIebdu3MSTvrQbwElQkw3cDjBV+E3OhKx43JrwyJvNFYxq7GPPVlX2O4qLvgUtH9IJ
         OhQu3CTNdU7gQDBm9meSh40MS9eHIYJfjBPnV8x4a2oruQaR8Pq5kBdwO69x+kMYZBz6
         deaw==
X-Gm-Message-State: AOJu0Yxnig9nuM1e3M2jaW0b0twOe40ZP5vRrMP4csZ1zEG/0y5fqGUa
	Z3oOjLUwej6SgK05jKpnaeqTcWZq6ytZ+zk8YJ9E7F1V7mb0jaJEMBJm3Mteow==
X-Gm-Gg: AeBDieum++NpFILOwcqEoTvo958UBtcvWHePt4Viz2BB68rz70qe96LBdB6KpO69eqH
	/Gixz5iFrfhzx/VxWgPxvst5UKK6b34WI+2+PLg1ewDAIGZN7Q7Q55YZIyrEeDq+6OrCKhuaeSf
	e9N3Z0BEhycmnHGgJQ4ZjVJbZjevCV6sfFI0Q/7qcklIT9mpG6DGTUm4OPfX06w7ONXSk60t6eT
	L6EGGkyZEQSGzzDYFIwGjRcjYyxj45IW3/wjwimtY/IgXjajmlnQLHpo4F2vv52+iiSGncenEu1
	kPXMsiudLQYY25ophUNIyaH0hm5MGZPCWl6A25wCmsTYzsPd46Je9D6kOQ3llD/LVJ2XeYKxiKL
	ys/UxNgSSlJwJlcI9FRiXYCb7sGgCmhyHhJqEnrTOjx8yDWlajAhxHAy482xxc3v51K0ceCGFEx
	cJ9m9+t7TiQN5AAHvFlWl5l3F9rd8s2Fs4361fdwQNC/Bs8gL8b6Jm+yOcn+wrIoR+N8FlS+y2u
	0+6OBpLZCx1MYs=
X-Received: by 2002:a05:600c:4745:b0:488:9bf8:7f17 with SMTP id 5b1f17b1804b1-48a77b054d8mr48581005e9.14.1777386841814;
        Tue, 28 Apr 2026 07:34:01 -0700 (PDT)
From: Oleksii Kurochko <oleksii.kurochko@gmail.com>
To: xen-devel@lists.xenproject.org
Cc: Romain Caritey <Romain.Caritey@microchip.com>,
	Oleksii Kurochko <oleksii.kurochko@gmail.com>,
	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=20Pau=20Monn=C3=A9?= <roger.pau@citrix.com>,
	Stefano Stabellini <sstabellini@kernel.org>
Subject: [PATCH v4 10/11] xen/riscv: add definition of guest RAM banks
Date: Tue, 28 Apr 2026 16:33:39 +0200
Message-ID: <b98f1202008ee2ed223f91c4d4b1e7b16ff08d0e.1777303844.git.oleksii.kurochko@gmail.com>
X-Mailer: git-send-email 2.53.0
In-Reply-To: <cover.1777303844.git.oleksii.kurochko@gmail.com>
References: <cover.1777303844.git.oleksii.kurochko@gmail.com>
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
X-purgate-ID: tlsNG-720697/1777386842-83F66161-9CF0018E/10/73395122804
X-purgate-type: spam
X-purgate-size: 3186

The dom0less solution uses defined RAM banks as compile-time constants,
so introduce macros to describe guest RAM banks.

The reason for 2 banks is that there is typically always a use case for
low memory under 4 GB, but the bank under 4 GB ends up being small because
there are other things under 4 GB it can conflict with (interrupt
controller, PCI BARs, etc.). So a second bank is added above that MMIO
region (starting at 8 GiB) to provide the remaining RAM; the gap between
the two banks also exercises code paths handling discontiguous memory.
For Sv32 guests (34-bit GPA, 16 GiB addressable), bank0 provides 2 GB
(2–4 GB) and the first 8 GB of bank1 (8–16 GB) is accessible.

Extended regions are useful for RISC-V: they could be used to provide a
"space" for Linux to map grant mappings.

Despite the fact that for every guest MMU mode the GPA could be up
to 56 bits wide (except Sv32 whose GPA is 34 bits), the combined size
of both banks is limited to 1018 GB as it is more than enough for most
use cases.

Add inclusion of asm/guest-layout.h to asm/domain.h to make dom0less
common code build happy.

Signed-off-by: Oleksii Kurochko <oleksii.kurochko@gmail.com>
Acked-by: Jan Beulich <jbeulich@suse.com>
---
Changes in v4:
 - Add Acked-by: Jan Beulich <jbeulich@suse.com>.
---
Changes in v3:
 - Move GUEST_RAM*-related defines to asm/p2m.h instead of public header.
---
Changes in v2:
 - New patch.
---
---
 xen/arch/riscv/include/asm/domain.h       |  1 +
 xen/arch/riscv/include/asm/guest-layout.h | 23 +++++++++++++++++++++++
 2 files changed, 24 insertions(+)
 create mode 100644 xen/arch/riscv/include/asm/guest-layout.h

diff --git a/xen/arch/riscv/include/asm/domain.h b/xen/arch/riscv/include/asm/domain.h
index 6c48bf13111d..6044ce0feee0 100644
--- a/xen/arch/riscv/include/asm/domain.h
+++ b/xen/arch/riscv/include/asm/domain.h
@@ -7,6 +7,7 @@
 #include <xen/xmalloc.h>
 #include <public/hvm/params.h>
 
+#include <asm/guest-layout.h>
 #include <asm/p2m.h>
 #include <asm/vtimer.h>
 
diff --git a/xen/arch/riscv/include/asm/guest-layout.h b/xen/arch/riscv/include/asm/guest-layout.h
new file mode 100644
index 000000000000..68d95a09394c
--- /dev/null
+++ b/xen/arch/riscv/include/asm/guest-layout.h
@@ -0,0 +1,23 @@
+#ifndef ASM_RISCV_GUEST_LAYOUT_H
+#define ASM_RISCV_GUEST_LAYOUT_H
+
+#include <public/xen.h>
+
+#define GUEST_RAM_BANKS   2
+
+/*
+ * The way to find the extended regions (to be exposed to the guest as unused
+ * address space) relies on the fact that the regions reserved for the RAM
+ * below are big enough to also accommodate such regions.
+ */
+#define GUEST_RAM0_BASE   xen_mk_ullong(0x80000000) /* 2GB of low RAM @ 2GB */
+#define GUEST_RAM0_SIZE   xen_mk_ullong(0x80000000)
+
+#define GUEST_RAM1_BASE   xen_mk_ullong(0x0200000000) /* 1016 GB of RAM @ 8GB */
+#define GUEST_RAM1_SIZE   xen_mk_ullong(0xFE00000000)
+
+/* TODO: allocate these all dynamically */
+#define GUEST_RAM_BANK_BASES   { GUEST_RAM0_BASE, GUEST_RAM1_BASE }
+#define GUEST_RAM_BANK_SIZES   { GUEST_RAM0_SIZE, GUEST_RAM1_SIZE }
+
+#endif /* ASM_RISCV_GUEST_LAYOUT_H */
-- 
2.53.0



From xen-devel-bounces@lists.xenproject.org Tue Apr 28 14:34:17 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 28 Apr 2026 14:34:17 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1296350.1572841 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wHjVn-00082X-D4; Tue, 28 Apr 2026 14:34:07 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1296350.1572841; Tue, 28 Apr 2026 14:34: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 1wHjVn-00082A-3n; Tue, 28 Apr 2026 14:34:07 +0000
Received: by outflank-mailman (input) for mailman id 1296350;
 Tue, 28 Apr 2026 14:34:05 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92) id 1wHjVl-0007k2-Jh
 for xen-devel@lists.xenproject.org; Tue, 28 Apr 2026 14:34:05 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wHjVk-008eCF-VT
 for xen-devel@lists.xenproject.org; Tue, 28 Apr 2026 16:34:04 +0200
Received: from [10.42.69.2] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <oleksii.kurochko@gmail.com>)
 id 69f0c54f-e002-0a2a0a5209dd-0a2a45029ad4-42
 for <xen-devel@lists.xenproject.org>; Tue, 28 Apr 2026 16:34:04 +0200
Received: from [209.85.128.46] (helo=mail-wm1-f46.google.com)
 by tlsNG-720697.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.1)
 (envelope-from <oleksii.kurochko@gmail.com>)
 id 69f0c55c-af86-0a2a45020019-d155802ec4ff-3
 for <xen-devel@lists.xenproject.org>; Tue, 28 Apr 2026 16:34:04 +0200
Received: by mail-wm1-f46.google.com with SMTP id
 5b1f17b1804b1-48a563e4ef7so80811895e9.0
 for <xen-devel@lists.xenproject.org>; Tue, 28 Apr 2026 07:34:04 -0700 (PDT)
Received: from fedora (user-109-243-69-121.play-internet.pl. [109.243.69.121])
 by smtp.gmail.com with ESMTPSA id
 5b1f17b1804b1-48a774b6300sm19302145e9.16.2026.04.28.07.34.02
 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
 Tue, 28 Apr 2026 07:34:03 -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=20251104 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=20251104; t=1777386844; x=1777991644; 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;
        bh=rqFpc480FdxV8KfuWU6Tba6XEMUhYTqnR2Ow7MIb3es=;
        b=Zpx32NRjOOzZURec42VPOY2f1eFIkJyCZcAi0hlApKXkeOwt/+th3KuNaEGhfcO7hQ
         GtmyC4ZaVTEU7toT6fkx+0iR36k9tcJxlucSUujcRw67Q4WiVMpnG2tTCqtGBjFbKsPw
         rqUVN2MHuUcsxMqjhN8EhfUuglvPMMtVeC12sS2lsQeaKdQsjoQzNKjBwnHR3XU2gX0c
         57sJRbexKaaiUjiRY7xqAXCUVivcbtVGMjOijHQvt1EbqwqO/PDY/xjtoAOY7q8HgukB
         Fgmrn28CPb/S8+IJs/c0LgCiwBFHXq3Y2eM2pKaZ9YFpPOB6Z8ifvdScqkOKHCKAYPWJ
         RPIA==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20251104; t=1777386844; x=1777991644;
        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;
        bh=rqFpc480FdxV8KfuWU6Tba6XEMUhYTqnR2Ow7MIb3es=;
        b=h6OOFe10MO8sv8DuIhabf6xYj81O7ci41e14nVJo6jZlhjtgFPo8Va6VojaPwQ11lK
         xTywrAB3HWSYTuXHkp7M8gbZHtaYM3a3+IdSOqBOWTwYkhUFO7F4MCYuH80tBgvNUx/e
         5l31P7JPW7cKx/nfBiEqbKxDjyNirmhyJ2EMd/AHBz54fS19m3gA0o5iobPmFgEJELn/
         YYKSU5AMPqBaI9m+LaxN03iRXQtgZqH/HArw89tlI8pfhzQ1u5J5d3FfkiS26VSRoIau
         X5kiZ2BnA+ICPiPTaSDUaT87i9BByFULPsFXUO7h7fGtLwWy/5DSZ8q/r+Qre8HC+RyA
         ON3A==
X-Gm-Message-State: AOJu0YwcrRLt08DhEzeDeO+Btm+ofShEQx17wa1FDNP+K2PrTAkvoyL2
	W2XoV576CYNF729BoJyS4Z5iegKt4tnGmIoYACDdgM0tzweLvsph7NP8574vEw==
X-Gm-Gg: AeBDietklzQOD9ofmnzH4e8J7NaVGuuMzxpUaln4MmR+/60hLGi9r9+JOSokuAeq0bm
	Ey8uAcSmqHYLGx9cOos/bEEtMLMoLPyLBM399PruxKY9R5gXRiU1b2NEFctAkVBPI0kLUjmm+fL
	NSOXSZPpyKH1lMMeE9dgcHh8lbBzTT6OR5knUYuR/+IPOVqr4bebvE4Cw/MWadU5EUTGdQEkUFN
	rkwprrxXE0O9U2WK2GVoTBSJgHV2B8VO9fnEodwZJSi+GzdfjRKqUjCqpdVezJx2JM/VP27pyBl
	ng7hAMC+doW4imY3J2EkNMVPkqZodHGZ7ic0YGIQNILJV/gx5jfk7fOGUlRpzxNnjJdzA4NU8Oi
	cWR+aAK7p0XLC+VIwZY2AfgtIsYcmjsSvL2E5uzDg0C/7kmvYfmYs6RFya0JxCItfVe7Ffs1plE
	KszyKRRU675WbAYNlj70mkwKgmJNk4RNFoIu/7wC6RawFC2sNXS0Gz1dmNRyrqsvZOYu+yZwzb/
	5aO
X-Received: by 2002:a05:600c:6304:b0:488:c40b:c8bf with SMTP id 5b1f17b1804b1-48a77addb16mr54486345e9.2.1777386844013;
        Tue, 28 Apr 2026 07:34:04 -0700 (PDT)
From: Oleksii Kurochko <oleksii.kurochko@gmail.com>
To: xen-devel@lists.xenproject.org
Cc: Romain Caritey <Romain.Caritey@microchip.com>,
	Oleksii Kurochko <oleksii.kurochko@gmail.com>,
	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=20Pau=20Monn=C3=A9?= <roger.pau@citrix.com>,
	Stefano Stabellini <sstabellini@kernel.org>
Subject: [PATCH v4 11/11] xen/riscv: enable DOMAIN_BUILD_HELPERS
Date: Tue, 28 Apr 2026 16:33:40 +0200
Message-ID: <bd9d283fdeb6ef5db49f486f4750da22751094c8.1777303844.git.oleksii.kurochko@gmail.com>
X-Mailer: git-send-email 2.53.0
In-Reply-To: <cover.1777303844.git.oleksii.kurochko@gmail.com>
References: <cover.1777303844.git.oleksii.kurochko@gmail.com>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit
X-purgate-ID: tlsNG-720697/1777386844-88EC8161-68C3A0B5/10/73395122804
X-purgate-type: spam
X-purgate-size: 911

Everything is ready to enable DOMAIN_BUILD_HELPER which are necessary
for dom0less common code. So enable it.

Signed-off-by: Oleksii Kurochko <oleksii.kurochko@gmail.com>
Acked-by: Jan Beulich <jbeulich@suse.com>
---
Changes in v4:
 - Nothing changed. Only rebase.
---
Changes in v3:
 - Add Acked-by: Jan Beulich <jbeulich@suse.com>.
---
Changes in v2:
 - Move introduction of p2m_ipa_bits to separate patch.
 - Move to separate patch introduction of guest banks constansts.
---
---
 xen/arch/riscv/Kconfig | 1 +
 1 file changed, 1 insertion(+)

diff --git a/xen/arch/riscv/Kconfig b/xen/arch/riscv/Kconfig
index a5e87c1757f7..41426c205292 100644
--- a/xen/arch/riscv/Kconfig
+++ b/xen/arch/riscv/Kconfig
@@ -1,5 +1,6 @@
 config RISCV
 	def_bool y
+	select DOMAIN_BUILD_HELPERS
 	select FUNCTION_ALIGNMENT_16B
 	select GENERIC_BUG_FRAME
 	select GENERIC_UART_INIT
-- 
2.53.0



From xen-devel-bounces@lists.xenproject.org Tue Apr 28 15:08:49 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 28 Apr 2026 15:08:49 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1296443.1572849 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wHk3H-0000f6-VL; Tue, 28 Apr 2026 15:08:43 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1296443.1572849; Tue, 28 Apr 2026 15: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 1wHk3H-0000eF-SS; Tue, 28 Apr 2026 15:08:43 +0000
Received: by outflank-mailman (input) for mailman id 1296443;
 Tue, 28 Apr 2026 15:08:42 +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 1wHk3F-0000dY-TA
 for xen-devel@lists.xenproject.org; Tue, 28 Apr 2026 15:08:42 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wHk3E-002A37-RW
 for xen-devel@lists.xenproject.org; Tue, 28 Apr 2026 17:08:40 +0200
Received: from [10.42.69.6] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <marcandre.lureau@redhat.com>)
 id 69f0cd66-2eae-0a2a0a5409dd-0a2a4506b508-22
 for <xen-devel@lists.xenproject.org>; Tue, 28 Apr 2026 17:08:40 +0200
Received: from [170.10.133.124] (helo=us-smtp-delivery-124.mimecast.com)
 by tlsNG-16d1c6.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.1)
 (envelope-from <marcandre.lureau@redhat.com>)
 id 69f0cd77-7371-0a2a45060019-aa0a857cbd4f-3
 for <xen-devel@lists.xenproject.org>; Tue, 28 Apr 2026 17:08:40 +0200
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-104-r7s6JQv5MNe2Zdx2qkUipg-1; Tue,
 28 Apr 2026 11:08:34 -0400
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 133DF1955DBD; Tue, 28 Apr 2026 15:08:23 +0000 (UTC)
Received: from localhost (unknown [10.44.24.6])
 by mx-prod-int-03.mail-002.prod.us-west-2.aws.redhat.com (Postfix) with ESMTP
 id 6C10F19560AB; Tue, 28 Apr 2026 15:08: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=1777388919;
	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=twk5bN/c9zdW8WMPP3xJRHocmGhqop4Vir91q7y6U9w=;
	b=fZvNtB2/ILa3fu/JiTM+GKsKxPmZXj28jvoI8ohXMedbr1bkYdvq9ZjEVqtVppoo9UH18N
	aSkBEpfCV+FJljg54oByOfrUaMT0GNCYncjAXcYkAkKV+bc1LuQNFGRGt0g+jDU1DQNfgg
	HCYxfh1XAyu/rECa2wank6mfP6aqu4g=
X-MC-Unique: r7s6JQv5MNe2Zdx2qkUipg-1
X-Mimecast-MFC-AGG-ID: r7s6JQv5MNe2Zdx2qkUipg_1777388904
From: marcandre.lureau@redhat.com
To: qemu-devel@nongnu.org
Cc: stefanha@gmail.com,
	=?UTF-8?q?Marc-Andr=C3=A9=20Lureau?= <marcandre.lureau@redhat.com>,
	Jan Kiszka <jan.kiszka@web.de>,
	Peter Maydell <peter.maydell@linaro.org>,
	Phil Dennis-Jordan <phil@philjordan.eu>,
	Richard Henderson <richard.henderson@linaro.org>,
	Helge Deller <deller@gmx.de>,
	=?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= <philmd@linaro.org>,
	Gerd Hoffmann <kraxel@redhat.com>,
	Mark Cave-Ayland <mark.cave-ayland@ilande.co.uk>,
	Samuel Tardieu <sam@rfc1149.net>,
	=?UTF-8?q?Herv=C3=A9=20Poussineau?= <hpoussin@reactos.org>,
	Aleksandar Rikalo <arikalo@gmail.com>,
	Jean-Christophe Dubois <jcd@tribudubois.net>,
	Laurent Vivier <laurent@vivier.eu>,
	Thomas Huth <th.huth+qemu@posteo.eu>,
	BALATON Zoltan <balaton@eik.bme.hu>,
	=?UTF-8?q?Alex=20Benn=C3=A9e?= <alex.bennee@linaro.org>,
	Akihiko Odaki <odaki@rsg.ci.i.u-tokyo.ac.jp>,
	Dmitry Osipenko <dmitry.osipenko@collabora.com>,
	"Michael S. Tsirkin" <mst@redhat.com>,
	Dmitry Fleytman <dmitry.fleytman@gmail.com>,
	Stefano Stabellini <sstabellini@kernel.org>,
	Anthony PERARD <anthony@xenproject.org>,
	"Edgar E. Iglesias" <edgar.iglesias@gmail.com>,
	Alistair Francis <alistair@alistair23.me>,
	Alex Williamson <alex@shazbot.org>,
	=?UTF-8?q?C=C3=A9dric=20Le=20Goater?= <clg@redhat.com>,
	qemu-arm@nongnu.org (open list:Musicpal),
	qemu-ppc@nongnu.org (open list:sam460ex),
	xen-devel@lists.xenproject.org (open list:X86 Xen CPUs)
Subject: [PULL v2 08/15] ui/console: return completion status from gfx_update callback
Date: Tue, 28 Apr 2026 19:07:18 +0400
Message-ID: <20260428150726.1659814-9-marcandre.lureau@redhat.com>
In-Reply-To: <20260428150726.1659814-1-marcandre.lureau@redhat.com>
References: <20260428150726.1659814-1-marcandre.lureau@redhat.com>
MIME-Version: 1.0
X-Scanned-By: MIMEDefang 3.0 on 10.30.177.12
X-Mimecast-MFC-PROC-ID: sjUX8DwUVZCFWnYgRkqZ3gnYgstR0aReOnVkYYln-Zg_1777388904
X-Mimecast-Originator: redhat.com
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
X-purgate-ID: tlsNG-16d1c6/1777388920-9087DD75-7BD5C48B/0/0
X-purgate-type: clean
X-purgate-size: 34166

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

Replace the two-field design (gfx_update void callback + gfx_update_async
flag) with a single bool return value from gfx_update. Returning true
means the update completed synchronously and graphic_hw_update_done()
should be called by the console layer. Returning false means the update
is deferred and the device will call graphic_hw_update_done() itself
later (as done by QXL/SPICE and Apple GFX).

This simplifies the interface and makes the async contract explicit at
each call site rather than relying on a separate struct field.

Signed-off-by: Marc-André Lureau <marcandre.lureau@redhat.com>
Reviewed-by: Philippe Mathieu-Daudé <philmd@linaro.org>
---
 hw/display/qxl.h              |  2 +-
 include/ui/console.h          | 11 ++++++++---
 hw/arm/musicpal.c             |  3 ++-
 hw/display/artist.c           |  4 +++-
 hw/display/bcm2835_fb.c       |  7 ++++---
 hw/display/bochs-display.c    |  6 ++++--
 hw/display/cg3.c              |  5 +++--
 hw/display/dm163.c            |  4 +++-
 hw/display/exynos4210_fimd.c  |  6 ++++--
 hw/display/g364fb.c           |  9 ++++++---
 hw/display/imx6ul_lcdif.c     |  7 ++++---
 hw/display/jazz_led.c         |  6 ++++--
 hw/display/macfb.c            |  6 ++++--
 hw/display/next-fb.c          |  4 +++-
 hw/display/omap_lcdc.c        | 14 ++++++++------
 hw/display/pl110.c            |  5 +++--
 hw/display/qxl-render.c       |  6 +++---
 hw/display/qxl.c              |  7 +++----
 hw/display/ramfb-standalone.c |  4 +++-
 hw/display/sm501.c            |  8 +++++---
 hw/display/ssd0303.c          | 10 ++++++----
 hw/display/ssd0323.c          | 11 ++++++-----
 hw/display/tcx.c              |  6 ++++--
 hw/display/vga.c              |  4 +++-
 hw/display/virtio-gpu-base.c  |  3 ++-
 hw/display/virtio-vga.c       |  6 +++---
 hw/display/vmware_vga.c       |  7 ++++---
 hw/display/xenfb.c            |  6 ++++--
 hw/display/xlnx_dp.c          | 10 ++++++----
 hw/vfio/display.c             | 17 ++++++++++-------
 ui/console.c                  |  7 +------
 hw/display/apple-gfx.m        | 10 +++++-----
 32 files changed, 132 insertions(+), 89 deletions(-)

diff --git a/hw/display/qxl.h b/hw/display/qxl.h
index e0a85a5ca49..ad8a9128785 100644
--- a/hw/display/qxl.h
+++ b/hw/display/qxl.h
@@ -187,7 +187,7 @@ int qxl_log_command(PCIQXLDevice *qxl, const char *ring, QXLCommandExt *ext);
 
 /* qxl-render.c */
 void qxl_render_resize(PCIQXLDevice *qxl);
-void qxl_render_update(PCIQXLDevice *qxl);
+bool qxl_render_update(PCIQXLDevice *qxl);
 int qxl_render_cursor(PCIQXLDevice *qxl, QXLCommandExt *ext);
 void qxl_render_update_area_done(PCIQXLDevice *qxl, QXLCookie *cookie);
 void qxl_render_update_area_bh(void *opaque);
diff --git a/include/ui/console.h b/include/ui/console.h
index f04844263b9..0bc9e544fad 100644
--- a/include/ui/console.h
+++ b/include/ui/console.h
@@ -368,9 +368,14 @@ enum {
 typedef struct GraphicHwOps {
     int (*get_flags)(void *opaque); /* optional, default 0 */
     void (*invalidate)(void *opaque);
-    void (*gfx_update)(void *opaque);
-    bool gfx_update_async; /* if true, calls graphic_hw_update_done() */
-    void (*text_update)(void *opaque, console_ch_t *text);
+    /*
+     * Returns true if the update is handled synchronously, false if deferred
+     * and graphic_hw_update_done() will be called when ready (to resume waiting
+     * tasks/coroutines).
+     * Optional.
+     */
+    bool (*gfx_update)(void *opaque);
+    void (*text_update)(void *opaque, uint32_t *text);
     void (*ui_info)(void *opaque, uint32_t head, QemuUIInfo *info);
     void (*gl_block)(void *opaque, bool block);
 } GraphicHwOps;
diff --git a/hw/arm/musicpal.c b/hw/arm/musicpal.c
index 441a11100a3..ba88ed756e2 100644
--- a/hw/arm/musicpal.c
+++ b/hw/arm/musicpal.c
@@ -152,7 +152,7 @@ static inline void set_lcd_pixel32(musicpal_lcd_state *s,
     }
 }
 
-static void lcd_refresh(void *opaque)
+static bool lcd_refresh(void *opaque)
 {
     musicpal_lcd_state *s = opaque;
     int x, y, col;
@@ -171,6 +171,7 @@ static void lcd_refresh(void *opaque)
     }
 
     dpy_gfx_update(s->con, 0, 0, 128*3, 64*3);
+    return true;
 }
 
 static void lcd_invalidate(void *opaque)
diff --git a/hw/display/artist.c b/hw/display/artist.c
index 206f77afba1..a07508378c7 100644
--- a/hw/display/artist.c
+++ b/hw/display/artist.c
@@ -1311,7 +1311,7 @@ static void artist_draw_line(void *opaque, uint8_t *d, const uint8_t *src,
     }
 }
 
-static void artist_update_display(void *opaque)
+static bool artist_update_display(void *opaque)
 {
     ARTISTState *s = opaque;
     DisplaySurface *surface = qemu_console_surface(s->con);
@@ -1326,6 +1326,8 @@ static void artist_update_display(void *opaque)
     if (first >= 0) {
         dpy_gfx_update(s->con, 0, first, s->width, last - first + 1);
     }
+
+    return true;
 }
 
 static void artist_invalidate(void *opaque)
diff --git a/hw/display/bcm2835_fb.c b/hw/display/bcm2835_fb.c
index 75d7c0f8499..83c4c03c7ca 100644
--- a/hw/display/bcm2835_fb.c
+++ b/hw/display/bcm2835_fb.c
@@ -150,7 +150,7 @@ static bool fb_use_offsets(BCM2835FBConfig *config)
         config->yres_virtual > config->yres;
 }
 
-static void fb_update_display(void *opaque)
+static bool fb_update_display(void *opaque)
 {
     BCM2835FBState *s = opaque;
     DisplaySurface *surface = qemu_console_surface(s->con);
@@ -161,7 +161,7 @@ static void fb_update_display(void *opaque)
     uint32_t xoff = 0, yoff = 0;
 
     if (s->lock || !s->config.xres) {
-        return;
+        return true;
     }
 
     src_width = bcm2835_fb_get_pitch(&s->config);
@@ -174,7 +174,7 @@ static void fb_update_display(void *opaque)
 
     switch (surface_bits_per_pixel(surface)) {
     case 0:
-        return;
+        return true;
     case 8:
         break;
     case 15:
@@ -212,6 +212,7 @@ static void fb_update_display(void *opaque)
     }
 
     s->invalidate = false;
+    return true;
 }
 
 void bcm2835_fb_validate_config(BCM2835FBConfig *config)
diff --git a/hw/display/bochs-display.c b/hw/display/bochs-display.c
index 5fb6b733cb5..8ef9b76cf85 100644
--- a/hw/display/bochs-display.c
+++ b/hw/display/bochs-display.c
@@ -198,7 +198,7 @@ static int bochs_display_get_mode(BochsDisplayState *s,
     return 0;
 }
 
-static void bochs_display_update(void *opaque)
+static bool bochs_display_update(void *opaque)
 {
     BochsDisplayState *s = opaque;
     DirtyBitmapSnapshot *snap = NULL;
@@ -212,7 +212,7 @@ static void bochs_display_update(void *opaque)
     ret = bochs_display_get_mode(s, &mode);
     if (ret < 0) {
         /* no (valid) video mode */
-        return;
+        return true;
     }
 
     if (memcmp(&s->mode, &mode, sizeof(mode)) != 0) {
@@ -255,6 +255,8 @@ static void bochs_display_update(void *opaque)
 
         g_free(snap);
     }
+
+    return true;
 }
 
 static const GraphicHwOps bochs_display_gfx_ops = {
diff --git a/hw/display/cg3.c b/hw/display/cg3.c
index 0a413fbb7ec..963bb3427a6 100644
--- a/hw/display/cg3.c
+++ b/hw/display/cg3.c
@@ -85,7 +85,7 @@ struct CG3State {
     uint8_t dac_index, dac_state;
 };
 
-static void cg3_update_display(void *opaque)
+static bool cg3_update_display(void *opaque)
 {
     CG3State *s = opaque;
     DisplaySurface *surface = qemu_console_surface(s->con);
@@ -98,7 +98,7 @@ static void cg3_update_display(void *opaque)
     DirtyBitmapSnapshot *snap = NULL;
 
     if (surface_bits_per_pixel(surface) != 32) {
-        return;
+        return true;
     }
     width = s->width;
     height = s->height;
@@ -154,6 +154,7 @@ static void cg3_update_display(void *opaque)
         qemu_irq_raise(s->irq);
     }
     g_free(snap);
+    return true;
 }
 
 static void cg3_invalidate_display(void *opaque)
diff --git a/hw/display/dm163.c b/hw/display/dm163.c
index 4feae912945..9ea62cb4f76 100644
--- a/hw/display/dm163.c
+++ b/hw/display/dm163.c
@@ -285,7 +285,7 @@ static uint32_t *update_display_of_row(DM163State *s, uint32_t *dest,
     return dest;
 }
 
-static void dm163_update_display(void *opaque)
+static bool dm163_update_display(void *opaque)
 {
     DM163State *s = (DM163State *)opaque;
     DisplaySurface *surface = qemu_console_surface(s->console);
@@ -300,6 +300,8 @@ static void dm163_update_display(void *opaque)
         }
         dest = update_display_of_row(s, dest, row);
     }
+
+    return true;
 }
 
 static const GraphicHwOps dm163_ops = {
diff --git a/hw/display/exynos4210_fimd.c b/hw/display/exynos4210_fimd.c
index 2d8fa7ee944..a91f04aaf79 100644
--- a/hw/display/exynos4210_fimd.c
+++ b/hw/display/exynos4210_fimd.c
@@ -1270,7 +1270,7 @@ static void exynos4210_update_resolution(Exynos4210fimdState *s)
     }
 }
 
-static void exynos4210_fimd_update(void *opaque)
+static bool exynos4210_fimd_update(void *opaque)
 {
     Exynos4210fimdState *s = (Exynos4210fimdState *)opaque;
     DisplaySurface *surface;
@@ -1287,7 +1287,7 @@ static void exynos4210_fimd_update(void *opaque)
 
     if (!s || !s->console || !s->enabled ||
         surface_bits_per_pixel(qemu_console_surface(s->console)) == 0) {
-        return;
+        return true;
     }
 
     global_width = (s->vidtcon[2] & FIMD_VIDTCON2_SIZE_MASK) + 1;
@@ -1348,6 +1348,8 @@ static void exynos4210_fimd_update(void *opaque)
         exynos4210_fimd_enable(s, false);
     }
     exynos4210_fimd_update_irq(s);
+
+    return true;
 }
 
 static void exynos4210_fimd_reset(DeviceState *d)
diff --git a/hw/display/g364fb.c b/hw/display/g364fb.c
index 50952e9934b..bd15f6f0acc 100644
--- a/hw/display/g364fb.c
+++ b/hw/display/g364fb.c
@@ -238,15 +238,16 @@ static void g364fb_draw_blank(G364State *s)
     s->blanked = 1;
 }
 
-static void g364fb_update_display(void *opaque)
+static bool g364fb_update_display(void *opaque)
 {
     G364State *s = opaque;
     DisplaySurface *surface = qemu_console_surface(s->con);
 
     qemu_flush_coalesced_mmio_buffer();
 
-    if (s->width == 0 || s->height == 0)
-        return;
+    if (s->width == 0 || s->height == 0) {
+        return true;
+    }
 
     if (s->width != surface_width(surface) ||
         s->height != surface_height(surface)) {
@@ -262,6 +263,8 @@ static void g364fb_update_display(void *opaque)
     }
 
     qemu_irq_raise(s->irq);
+
+    return true;
 }
 
 static inline void g364fb_invalidate_display(void *opaque)
diff --git a/hw/display/imx6ul_lcdif.c b/hw/display/imx6ul_lcdif.c
index 33cd00fbe16..afcd0805ca4 100644
--- a/hw/display/imx6ul_lcdif.c
+++ b/hw/display/imx6ul_lcdif.c
@@ -152,7 +152,7 @@ static void imx6ul_lcdif_draw_line_xrgb8888(void *opaque, uint8_t *dst,
     }
 }
 
-static void imx6ul_lcdif_update_display(void *opaque)
+static bool imx6ul_lcdif_update_display(void *opaque)
 {
     IMX6ULLCDIFState *s = opaque;
     DisplaySurface *surface = qemu_console_surface(s->con);
@@ -167,7 +167,7 @@ static void imx6ul_lcdif_update_display(void *opaque)
     int src_width;
 
     if (!imx6ul_lcdif_is_running(s) || width == 0 || height == 0) {
-        return;
+        return true;
     }
 
     switch (FIELD_EX32(ctrl, CTRL, WORD_LENGTH)) {
@@ -180,7 +180,7 @@ static void imx6ul_lcdif_update_display(void *opaque)
         fn = imx6ul_lcdif_draw_line_xrgb8888;
         break;
     default:
-        return;
+        return true;
     }
 
     if (surface_width(surface) != width || surface_height(surface) != height) {
@@ -207,6 +207,7 @@ static void imx6ul_lcdif_update_display(void *opaque)
     }
 
     s->invalidate = false;
+    return true;
 }
 
 static void imx6ul_lcdif_invalidate_display(void *opaque)
diff --git a/hw/display/jazz_led.c b/hw/display/jazz_led.c
index 9d62e51bed9..7d1a020d4d9 100644
--- a/hw/display/jazz_led.c
+++ b/hw/display/jazz_led.c
@@ -144,7 +144,7 @@ static void draw_vertical_line(DisplaySurface *ds,
     }
 }
 
-static void jazz_led_update_display(void *opaque)
+static bool jazz_led_update_display(void *opaque)
 {
     LedState *s = opaque;
     DisplaySurface *surface = qemu_console_surface(s->con);
@@ -186,7 +186,7 @@ static void jazz_led_update_display(void *opaque)
             color_led = rgb_to_pixel32(0x00, 0xff, 0x00);
             break;
         default:
-            return;
+            return true;
         }
 
         /* display segments */
@@ -218,6 +218,8 @@ static void jazz_led_update_display(void *opaque)
 
     s->state = REDRAW_NONE;
     dpy_gfx_update_full(s->con);
+
+    return true;
 }
 
 static void jazz_led_invalidate_display(void *opaque)
diff --git a/hw/display/macfb.c b/hw/display/macfb.c
index b8115c2be13..848c3c282bd 100644
--- a/hw/display/macfb.c
+++ b/hw/display/macfb.c
@@ -454,7 +454,7 @@ static gchar *macfb_mode_list(void)
 }
 
 
-static void macfb_update_display(void *opaque)
+static bool macfb_update_display(void *opaque)
 {
     MacfbState *s = opaque;
     DisplaySurface *surface = qemu_console_surface(s->con);
@@ -462,7 +462,7 @@ static void macfb_update_display(void *opaque)
     qemu_flush_coalesced_mmio_buffer();
 
     if (s->width == 0 || s->height == 0) {
-        return;
+        return true;
     }
 
     if (s->width != surface_width(surface) ||
@@ -471,6 +471,8 @@ static void macfb_update_display(void *opaque)
     }
 
     macfb_draw_graphic(s);
+
+    return true;
 }
 
 static void macfb_update_irq(MacfbState *s)
diff --git a/hw/display/next-fb.c b/hw/display/next-fb.c
index 3d97702fce5..e758b223ef7 100644
--- a/hw/display/next-fb.c
+++ b/hw/display/next-fb.c
@@ -67,7 +67,7 @@ static void nextfb_draw_line(void *opaque, uint8_t *d, const uint8_t *s,
     }
 }
 
-static void nextfb_update(void *opaque)
+static bool nextfb_update(void *opaque)
 {
     NeXTFbState *s = NEXTFB(opaque);
     int dest_width = 4;
@@ -90,6 +90,8 @@ static void nextfb_update(void *opaque)
                                s, &first, &last);
 
     dpy_gfx_update(s->con, 0, 0, s->cols, s->rows);
+
+    return true;
 }
 
 static void nextfb_invalidate(void *opaque)
diff --git a/hw/display/omap_lcdc.c b/hw/display/omap_lcdc.c
index c41c65bb2e0..1e8385ebffb 100644
--- a/hw/display/omap_lcdc.c
+++ b/hw/display/omap_lcdc.c
@@ -197,7 +197,7 @@ static void draw_line16_32(void *opaque, uint8_t *d, const uint8_t *s,
     } while (-- width != 0);
 }
 
-static void omap_update_display(void *opaque)
+static bool omap_update_display(void *opaque)
 {
     struct omap_lcd_panel_s *omap_lcd = opaque;
     DisplaySurface *surface;
@@ -207,12 +207,12 @@ static void omap_update_display(void *opaque)
     hwaddr frame_base;
 
     if (!omap_lcd || omap_lcd->plm == 1 || !omap_lcd->enable) {
-        return;
+        return true;
     }
 
     surface = qemu_console_surface(omap_lcd->con);
     if (!surface_bits_per_pixel(surface)) {
-        return;
+        return true;
     }
 
     frame_offset = 0;
@@ -256,7 +256,7 @@ static void omap_update_display(void *opaque)
 
     default:
         /* Unsupported at the moment.  */
-        return;
+        return true;
     }
 
     /* Resolution */
@@ -278,7 +278,7 @@ static void omap_update_display(void *opaque)
         omap_lcd->sync_error = 1;
         omap_lcd_interrupts(omap_lcd);
         omap_lcd->enable = 0;
-        return;
+        return true;
     }
 
     /* Content */
@@ -291,7 +291,7 @@ static void omap_update_display(void *opaque)
         omap_lcd->dma->current_frame ^= 1;
 
     if (!surface_bits_per_pixel(surface)) {
-        return;
+        return true;
     }
 
     first = 0;
@@ -323,6 +323,8 @@ static void omap_update_display(void *opaque)
         dpy_gfx_update(omap_lcd->con, 0, first, width, last - first + 1);
     }
     omap_lcd->invalidate = 0;
+
+    return true;
 }
 
 static void omap_invalidate_display(void *opaque) {
diff --git a/hw/display/pl110.c b/hw/display/pl110.c
index 4cd62a98757..e134ac28eb6 100644
--- a/hw/display/pl110.c
+++ b/hw/display/pl110.c
@@ -210,7 +210,7 @@ static int pl110_enabled(PL110State *s)
   return (s->cr & PL110_CR_EN) && (s->cr & PL110_CR_PWR);
 }
 
-static void pl110_update_display(void *opaque)
+static bool pl110_update_display(void *opaque)
 {
     PL110State *s = (PL110State *)opaque;
     DisplaySurface *surface = qemu_console_surface(s->con);
@@ -221,7 +221,7 @@ static void pl110_update_display(void *opaque)
     int last;
 
     if (!pl110_enabled(s)) {
-        return;
+        return true;
     }
 
     if (s->cr & PL110_CR_BGR)
@@ -306,6 +306,7 @@ static void pl110_update_display(void *opaque)
         dpy_gfx_update(s->con, 0, first, s->cols, last - first + 1);
     }
     s->invalidate = 0;
+    return true;
 }
 
 static void pl110_invalidate_display(void * opaque)
diff --git a/hw/display/qxl-render.c b/hw/display/qxl-render.c
index c6a9ac1da10..5b4f8842011 100644
--- a/hw/display/qxl-render.c
+++ b/hw/display/qxl-render.c
@@ -173,7 +173,7 @@ end:
  * callbacks are called by spice_server thread, deferring to bh called from the
  * io thread.
  */
-void qxl_render_update(PCIQXLDevice *qxl)
+bool qxl_render_update(PCIQXLDevice *qxl)
 {
     QXLCookie *cookie;
 
@@ -183,8 +183,7 @@ void qxl_render_update(PCIQXLDevice *qxl)
         qxl->mode == QXL_MODE_UNDEFINED) {
         qxl_render_update_area_unlocked(qxl);
         qemu_mutex_unlock(&qxl->ssd.lock);
-        graphic_hw_update_done(qxl->ssd.dcl.con);
-        return;
+        return true;
     }
 
     qxl->guest_primary.commands = 0;
@@ -195,6 +194,7 @@ void qxl_render_update(PCIQXLDevice *qxl)
     qxl_set_rect_to_surface(qxl, &cookie->u.render.area);
     qxl_spice_update_area(qxl, 0, &cookie->u.render.area, NULL,
                           0, 1 /* clear_dirty_region */, QXL_ASYNC, cookie);
+    return false;
 }
 
 void qxl_render_update_area_bh(void *opaque)
diff --git a/hw/display/qxl.c b/hw/display/qxl.c
index f8fd7ee0698..0a3c42c8ec2 100644
--- a/hw/display/qxl.c
+++ b/hw/display/qxl.c
@@ -122,7 +122,7 @@ static void qxl_reset_memslots(PCIQXLDevice *d);
 static void qxl_reset_surfaces(PCIQXLDevice *d);
 static void qxl_ring_set_dirty(PCIQXLDevice *qxl);
 
-static void qxl_hw_update(void *opaque);
+static bool qxl_hw_update(void *opaque);
 
 void qxl_set_guest_bug(PCIQXLDevice *qxl, const char *msg, ...)
 {
@@ -1144,7 +1144,6 @@ static const QXLInterface qxl_interface = {
 
 static const GraphicHwOps qxl_ops = {
     .gfx_update  = qxl_hw_update,
-    .gfx_update_async = true,
 };
 
 static void qxl_enter_vga_mode(PCIQXLDevice *d)
@@ -1928,11 +1927,11 @@ static void qxl_send_events(PCIQXLDevice *d, uint32_t events)
 
 /* graphics console */
 
-static void qxl_hw_update(void *opaque)
+static bool qxl_hw_update(void *opaque)
 {
     PCIQXLDevice *qxl = opaque;
 
-    qxl_render_update(qxl);
+    return qxl_render_update(qxl);
 }
 
 static void qxl_dirty_one_surface(PCIQXLDevice *qxl, QXLPHYSICAL pqxl,
diff --git a/hw/display/ramfb-standalone.c b/hw/display/ramfb-standalone.c
index f1958be32ad..27f0ba19f90 100644
--- a/hw/display/ramfb-standalone.c
+++ b/hw/display/ramfb-standalone.c
@@ -20,7 +20,7 @@ struct RAMFBStandaloneState {
     bool use_legacy_x86_rom;
 };
 
-static void display_update_wrapper(void *dev)
+static bool display_update_wrapper(void *dev)
 {
     RAMFBStandaloneState *ramfb = RAMFB(dev);
 
@@ -29,6 +29,8 @@ static void display_update_wrapper(void *dev)
     } else {
         ramfb_display_update(ramfb->con, ramfb->state);
     }
+
+    return true;
 }
 
 static const GraphicHwOps wrapper_ops = {
diff --git a/hw/display/sm501.c b/hw/display/sm501.c
index a07aa9886f9..a3993ceba29 100644
--- a/hw/display/sm501.c
+++ b/hw/display/sm501.c
@@ -1716,7 +1716,7 @@ static void draw_hwc_line_32(uint8_t *d, const uint8_t *s, int width,
     }
 }
 
-static void sm501_update_display(void *opaque)
+static bool sm501_update_display(void *opaque)
 {
     SM501State *s = opaque;
     DisplaySurface *surface = qemu_console_surface(s->con);
@@ -1740,7 +1740,7 @@ static void sm501_update_display(void *opaque)
 
     if (!((crt ? s->dc_crt_control : s->dc_panel_control)
           & SM501_DC_CRT_CONTROL_ENABLE)) {
-        return;
+        return true;
     }
 
     palette = (uint32_t *)(crt ? &s->dc_palette[SM501_DC_CRT_PALETTE -
@@ -1761,7 +1761,7 @@ static void sm501_update_display(void *opaque)
     default:
         qemu_log_mask(LOG_GUEST_ERROR, "sm501: update display"
                       "invalid control register value.\n");
-        return;
+        return true;
     }
 
     /* set up to draw hardware cursor */
@@ -1833,6 +1833,8 @@ static void sm501_update_display(void *opaque)
     if (y_start >= 0) {
         dpy_gfx_update(s->con, 0, y_start, width, y - y_start);
     }
+
+    return true;
 }
 
 static const GraphicHwOps sm501_ops = {
diff --git a/hw/display/ssd0303.c b/hw/display/ssd0303.c
index 87781438cd5..229856cc427 100644
--- a/hw/display/ssd0303.c
+++ b/hw/display/ssd0303.c
@@ -203,7 +203,7 @@ static int ssd0303_event(I2CSlave *i2c, enum i2c_event event)
     return 0;
 }
 
-static void ssd0303_update_display(void *opaque)
+static bool ssd0303_update_display(void *opaque)
 {
     ssd0303_state *s = (ssd0303_state *)opaque;
     DisplaySurface *surface = qemu_console_surface(s->con);
@@ -218,11 +218,11 @@ static void ssd0303_update_display(void *opaque)
     uint8_t mask;
 
     if (!s->redraw)
-        return;
+        return true;
 
     switch (surface_bits_per_pixel(surface)) {
     case 0:
-        return;
+        return true;
     case 15:
         dest_width = 2;
         break;
@@ -237,7 +237,7 @@ static void ssd0303_update_display(void *opaque)
         break;
     default:
         BADF("Bad color depth\n");
-        return;
+        return true;
     }
     dest_width *= MAGNIFY;
     memset(colortab, 0xff, dest_width);
@@ -269,6 +269,8 @@ static void ssd0303_update_display(void *opaque)
     }
     s->redraw = 0;
     dpy_gfx_update(s->con, 0, 0, 96 * MAGNIFY, 16 * MAGNIFY);
+
+    return true;
 }
 
 static void ssd0303_invalidate_display(void * opaque)
diff --git a/hw/display/ssd0323.c b/hw/display/ssd0323.c
index af5ff4fecdc..67db16086c8 100644
--- a/hw/display/ssd0323.c
+++ b/hw/display/ssd0323.c
@@ -181,7 +181,7 @@ static uint32_t ssd0323_transfer(SSIPeripheral *dev, uint32_t data)
     return 0;
 }
 
-static void ssd0323_update_display(void *opaque)
+static bool ssd0323_update_display(void *opaque)
 {
     ssd0323_state *s = (ssd0323_state *)opaque;
     DisplaySurface *surface = qemu_console_surface(s->con);
@@ -197,11 +197,11 @@ static void ssd0323_update_display(void *opaque)
     int dest_width;
 
     if (!s->redraw)
-        return;
+        return true;
 
     switch (surface_bits_per_pixel(surface)) {
     case 0:
-        return;
+        return true;
     case 15:
         dest_width = 2;
         break;
@@ -216,7 +216,7 @@ static void ssd0323_update_display(void *opaque)
         break;
     default:
         BADF("Bad color depth\n");
-        return;
+        return true;
     }
     p = colortab;
     for (i = 0; i < 16; i++) {
@@ -240,7 +240,7 @@ static void ssd0323_update_display(void *opaque)
             break;
         default:
             BADF("Bad color depth\n");
-            return;
+            return true;
         }
         p += dest_width;
     }
@@ -271,6 +271,7 @@ static void ssd0323_update_display(void *opaque)
     }
     s->redraw = 0;
     dpy_gfx_update(s->con, 0, 0, 128 * MAGNIFY, 64 * MAGNIFY);
+    return true;
 }
 
 static void ssd0323_invalidate_display(void * opaque)
diff --git a/hw/display/tcx.c b/hw/display/tcx.c
index ea92a48400c..cedbf5c7acd 100644
--- a/hw/display/tcx.c
+++ b/hw/display/tcx.c
@@ -209,7 +209,7 @@ static inline void tcx24_draw_line32(TCXState *s1, uint8_t *d,
 /* Fixed line length 1024 allows us to do nice tricks not possible on
    VGA... */
 
-static void tcx_update_display(void *opaque)
+static bool tcx_update_display(void *opaque)
 {
     TCXState *ts = opaque;
     DisplaySurface *surface = qemu_console_surface(ts->con);
@@ -257,9 +257,10 @@ static void tcx_update_display(void *opaque)
                        ts->width, y - y_start);
     }
     g_free(snap);
+    return true;
 }
 
-static void tcx24_update_display(void *opaque)
+static bool tcx24_update_display(void *opaque)
 {
     TCXState *ts = opaque;
     DisplaySurface *surface = qemu_console_surface(ts->con);
@@ -312,6 +313,7 @@ static void tcx24_update_display(void *opaque)
                        ts->width, y - y_start);
     }
     g_free(snap);
+    return true;
 }
 
 static void tcx_invalidate_display(void *opaque)
diff --git a/hw/display/vga.c b/hw/display/vga.c
index 0d69a53f27a..776aa443246 100644
--- a/hw/display/vga.c
+++ b/hw/display/vga.c
@@ -1783,7 +1783,7 @@ static void vga_draw_blank(VGACommonState *s, int full_update)
 #define GMODE_GRAPH    1
 #define GMODE_BLANK 2
 
-static void vga_update_display(void *opaque)
+static bool vga_update_display(void *opaque)
 {
     VGACommonState *s = opaque;
     DisplaySurface *surface = qemu_console_surface(s->con);
@@ -1818,6 +1818,8 @@ static void vga_update_display(void *opaque)
             break;
         }
     }
+
+    return true;
 }
 
 /* force a full display refresh */
diff --git a/hw/display/virtio-gpu-base.c b/hw/display/virtio-gpu-base.c
index cb76302e2d8..94cf362d152 100644
--- a/hw/display/virtio-gpu-base.c
+++ b/hw/display/virtio-gpu-base.c
@@ -83,8 +83,9 @@ static void virtio_gpu_invalidate_display(void *opaque)
 {
 }
 
-static void virtio_gpu_update_display(void *opaque)
+static bool virtio_gpu_update_display(void *opaque)
 {
+    return true;
 }
 
 static void virtio_gpu_text_update(void *opaque, console_ch_t *chardata)
diff --git a/hw/display/virtio-vga.c b/hw/display/virtio-vga.c
index 5e087169f2f..f4713b91a66 100644
--- a/hw/display/virtio-vga.c
+++ b/hw/display/virtio-vga.c
@@ -19,15 +19,15 @@ static void virtio_vga_base_invalidate_display(void *opaque)
     }
 }
 
-static void virtio_vga_base_update_display(void *opaque)
+static bool virtio_vga_base_update_display(void *opaque)
 {
     VirtIOVGABase *vvga = opaque;
     VirtIOGPUBase *g = vvga->vgpu;
 
     if (g->enable) {
-        g->hw_ops->gfx_update(g);
+        return g->hw_ops->gfx_update(g);
     } else {
-        vvga->vga.hw_ops->gfx_update(&vvga->vga);
+        return vvga->vga.hw_ops->gfx_update(&vvga->vga);
     }
 }
 
diff --git a/hw/display/vmware_vga.c b/hw/display/vmware_vga.c
index 2b95787ddfd..c84c84a445e 100644
--- a/hw/display/vmware_vga.c
+++ b/hw/display/vmware_vga.c
@@ -1135,14 +1135,13 @@ static inline void vmsvga_check_size(struct vmsvga_state_s *s)
     }
 }
 
-static void vmsvga_update_display(void *opaque)
+static bool vmsvga_update_display(void *opaque)
 {
     struct vmsvga_state_s *s = opaque;
 
     if (!s->enable || !s->config) {
         /* in standard vga mode */
-        s->vga.hw_ops->gfx_update(&s->vga);
-        return;
+        return s->vga.hw_ops->gfx_update(&s->vga);
     }
 
     vmsvga_check_size(s);
@@ -1154,6 +1153,8 @@ static void vmsvga_update_display(void *opaque)
         s->invalidated = 0;
         dpy_gfx_update_full(s->vga.con);
     }
+
+    return true;
 }
 
 static void vmsvga_reset(DeviceState *dev)
diff --git a/hw/display/xenfb.c b/hw/display/xenfb.c
index ba886a940ee..2e431e27be6 100644
--- a/hw/display/xenfb.c
+++ b/hw/display/xenfb.c
@@ -709,14 +709,14 @@ static void xenfb_send_refresh_period(struct XenFB *xenfb, int period)
  * Our screen might be inactive.  When asked for
  * an update we know it is active.
  */
-static void xenfb_update(void *opaque)
+static bool xenfb_update(void *opaque)
 {
     struct XenFB *xenfb = opaque;
     DisplaySurface *surface;
     int i;
 
     if (xenfb->c.xendev.be_state != XenbusStateConnected)
-        return;
+        return true;
 
     if (!xenfb->feature_update) {
         /* we don't get update notifications, thus use the
@@ -770,6 +770,8 @@ static void xenfb_update(void *opaque)
     }
     xenfb->up_count = 0;
     xenfb->up_fullscreen = 0;
+
+    return true;
 }
 
 static void xenfb_ui_info(void *opaque, uint32_t idx, QemuUIInfo *info)
diff --git a/hw/display/xlnx_dp.c b/hw/display/xlnx_dp.c
index 7d037b46a35..50e6ef10984 100644
--- a/hw/display/xlnx_dp.c
+++ b/hw/display/xlnx_dp.c
@@ -1252,12 +1252,12 @@ static inline void xlnx_dp_blend_surface(XlnxDPState *s)
                            surface_height(s->g_plane.surface));
 }
 
-static void xlnx_dp_update_display(void *opaque)
+static bool xlnx_dp_update_display(void *opaque)
 {
     XlnxDPState *s = XLNX_DP(opaque);
 
     if ((s->core_registers[DP_TRANSMITTER_ENABLE] & 0x01) == 0) {
-        return;
+        return true;
     }
 
     xlnx_dpdma_trigger_vsync_irq(s->dpdma);
@@ -1272,14 +1272,14 @@ static void xlnx_dp_update_display(void *opaque)
          */
         s->core_registers[DP_INT_STATUS] |= (1 << 21);
         xlnx_dp_update_irq(s);
-        return;
+        return true;
     }
 
     if (xlnx_dp_global_alpha_enabled(s)) {
         if (!xlnx_dpdma_start_operation(s->dpdma, 0, false)) {
             s->core_registers[DP_INT_STATUS] |= (1 << 21);
             xlnx_dp_update_irq(s);
-            return;
+            return true;
         }
         xlnx_dp_blend_surface(s);
     }
@@ -1288,6 +1288,8 @@ static void xlnx_dp_update_display(void *opaque)
      * XXX: We might want to update only what changed.
      */
     dpy_gfx_update_full(s->console);
+
+    return true;
 }
 
 static const GraphicHwOps xlnx_dp_gfx_ops = {
diff --git a/hw/vfio/display.c b/hw/vfio/display.c
index 5a42a6f7a29..4a9a58036e3 100644
--- a/hw/vfio/display.c
+++ b/hw/vfio/display.c
@@ -285,7 +285,7 @@ static void vfio_display_free_dmabufs(VFIOPCIDevice *vdev)
     }
 }
 
-static void vfio_display_dmabuf_update(void *opaque)
+static bool vfio_display_dmabuf_update(void *opaque)
 {
     VFIOPCIDevice *vdev = opaque;
     VFIODisplay *dpy = vdev->dpy;
@@ -298,7 +298,7 @@ static void vfio_display_dmabuf_update(void *opaque)
         if (dpy->ramfb) {
             ramfb_display_update(dpy->con, dpy->ramfb);
         }
-        return;
+        return true;
     }
 
     width = qemu_dmabuf_get_width(primary->buf);
@@ -340,6 +340,8 @@ static void vfio_display_dmabuf_update(void *opaque)
     if (free_bufs) {
         vfio_display_free_dmabufs(vdev);
     }
+
+    return true;
 }
 
 static int vfio_display_get_flags(void *opaque)
@@ -399,7 +401,7 @@ void vfio_display_reset(VFIOPCIDevice *vdev)
     dpy_gfx_update_full(vdev->dpy->con);
 }
 
-static void vfio_display_region_update(void *opaque)
+static bool vfio_display_region_update(void *opaque)
 {
     VFIOPCIDevice *vdev = opaque;
     VFIODisplay *dpy = vdev->dpy;
@@ -414,18 +416,18 @@ static void vfio_display_region_update(void *opaque)
     if (ret < 0) {
         error_report("ioctl VFIO_DEVICE_QUERY_GFX_PLANE: %s",
                      strerror(errno));
-        return;
+        return true;
     }
     if (!plane.drm_format || !plane.size) {
         if (dpy->ramfb) {
             ramfb_display_update(dpy->con, dpy->ramfb);
             dpy->region.surface = NULL;
         }
-        return;
+        return true;
     }
     format = qemu_drm_format_to_pixman(plane.drm_format);
     if (!format) {
-        return;
+        return true;
     }
 
     if (dpy->region.buffer.size &&
@@ -476,11 +478,12 @@ static void vfio_display_region_update(void *opaque)
     dpy_gfx_update(dpy->con, 0, 0,
                    surface_width(dpy->region.surface),
                    surface_height(dpy->region.surface));
-    return;
+    return true;
 
 err:
     vfio_region_exit(&dpy->region.buffer);
     vfio_region_finalize(&dpy->region.buffer);
+    return true;
 }
 
 static const GraphicHwOps vfio_display_region_ops = {
diff --git a/ui/console.c b/ui/console.c
index abb6cba2826..a608c29b843 100644
--- a/ui/console.c
+++ b/ui/console.c
@@ -136,15 +136,10 @@ void graphic_hw_update_done(QemuConsole *con)
 
 void graphic_hw_update(QemuConsole *con)
 {
-    bool async = false;
     if (!con) {
         return;
     }
-    if (con->hw_ops->gfx_update) {
-        con->hw_ops->gfx_update(con->hw);
-        async = con->hw_ops->gfx_update_async;
-    }
-    if (!async) {
+    if (!con->hw_ops->gfx_update || con->hw_ops->gfx_update(con->hw)) {
         graphic_hw_update_done(con);
     }
 }
diff --git a/hw/display/apple-gfx.m b/hw/display/apple-gfx.m
index e0a765fcb1f..77d80fb7cef 100644
--- a/hw/display/apple-gfx.m
+++ b/hw/display/apple-gfx.m
@@ -330,25 +330,25 @@ static void apple_gfx_render_frame_completed_bh(void *opaque)
     }
 }
 
-static void apple_gfx_fb_update_display(void *opaque)
+static bool apple_gfx_fb_update_display(void *opaque)
 {
     AppleGFXState *s = opaque;
+    bool done = true;
 
     assert(bql_locked());
     if (s->new_frame_ready) {
         dpy_gfx_update_full(s->con);
         s->new_frame_ready = false;
-        graphic_hw_update_done(s->con);
     } else if (s->pending_frames > 0) {
         s->gfx_update_requested = true;
-    } else {
-        graphic_hw_update_done(s->con);
+        done = false;
     }
+
+    return done;
 }
 
 static const GraphicHwOps apple_gfx_fb_ops = {
     .gfx_update = apple_gfx_fb_update_display,
-    .gfx_update_async = true,
 };
 
 /* ------ Mouse cursor and display mode setting ------ */
-- 
2.54.0



From xen-devel-bounces@lists.xenproject.org Tue Apr 28 15:15:57 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 28 Apr 2026 15:15:57 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1296453.1572858 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wHkA2-0002OG-P3; Tue, 28 Apr 2026 15:15:42 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1296453.1572858; Tue, 28 Apr 2026 15:15: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 1wHkA2-0002O9-MF; Tue, 28 Apr 2026 15:15:42 +0000
Received: by outflank-mailman (input) for mailman id 1296453;
 Tue, 28 Apr 2026 15:15:42 +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.19dd4a8f919000f373@swg.vates.tech>)
 id 1wHkA1-0002O3-Nh
 for xen-devel@lists.xenproject.org; Tue, 28 Apr 2026 15:15:42 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wHkA0-009T11-To
 for xen-devel@lists.xenproject.org; Tue, 28 Apr 2026 17:15:40 +0200
Received: from [10.42.69.12] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1) (envelope-from
 <prod-mta-13.8631fc262581453bbf619ec5b2062170.19dd4a8f919000f373@swg.vates.tech>)
 id 69f0cf0e-bab6-0a2a0a5309dd-0a2a450cbf56-36
 for <xen-devel@lists.xenproject.org>; Tue, 28 Apr 2026 17:15:40 +0200
Received: from [185.255.28.34] (helo=prod-mta-13.swg-srv.net)
 by tlsNG-d25034.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.1)
 (envelope-from
 <prod-mta-13.8631fc262581453bbf619ec5b2062170.19dd4a8f919000f373@swg.vates.tech>)
 id 69f0cf1c-62f1-0a2a450c0019-b9ff1c22a625-3
 for <xen-devel@lists.xenproject.org>; Tue, 28 Apr 2026 17:15:40 +0200
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
 19dd4a8f919000f373.007 for <xen-devel@lists.xenproject.org>
 (version=TLSv1.3 cipher=TLS_AES_256_GCM_SHA384);
 Tue, 28 Apr 2026 15:15:36 +0000
Received: from [192.168.1.18] (88-175-170-134.subs.proxad.net [88.175.170.134])
 (Authenticated sender: teddy.astie)
 by mail2.vates.fr (Postfix) with ESMTPSA id E7E1686439;
 Tue, 28 Apr 2026 17:15:35 +0200 (CEST)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@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=ecfl265qQUiRdYzmgGmvEv3ilzP58U075ntp6nhcQBg=;
 h=from:subject:date:message-id:to:cc:mime-version:content-type:in-reply-to:references:feedback-id;
 b=kAUDdPV/o+dW9s1jDGJOBFWbxdruBH2IyByC14Mzyr46B4aSaXZRGbyU/Aa41gwd76ZtLtSXI
 6jMBZNdYuMMzFhAwbIB4TTmHgri8DP6TsEi5AhvzZuyfqZ1fUGNbVCT1sEJx1EBrksk8Mxk0CpP
 ZeVDn0X6KnHNk92LtezLuFwAJxOAyOZvbZlli630HxN0lH6eDDUQBo0yjv9uytlIn7ksGkIvfCz
 zc46VCtugq+ctVW/l9AAmw87fXQChZE/66wKfdjTDkcPCj7gAL1sJ3V64fUCEgESI3XzMFmJtdN
 +U04EHkI83OaK1BGd+cYBNhkvhDR2NdDGwqo/VuBdPXw==
X-Zone-Loop: 8072d6f56970f7b19306a65672f1b29cff4ff90832e6
x-campaign-type: default
x-transaction-id: 19ecbb85-90a3-43f8-b87f-5b0d3318e6b6
x-swg-uid: 01-b60b17f6-6c4c-469b-936e-382cf3719e80
X-Mailer: Sweego
Message-ID:
 <1777389336.8631fc262581453bbf619ec5b2062170.19dd4a8f919000f373@vates.tech>
x-swg-bid: 1777389336.8631fc262581453bbf619ec5b2062170.19dd4a8f919000f373
Feedback-ID: default:8631fc262581453bbf619ec5b2062170:Sweego
x-campaign-id: default
x-client-id: 8631fc262581453bbf619ec5b2062170
X-Originating-IP: [37.26.189.201]
Date: Tue, 28 Apr 2026 17:15:35 +0200
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH v4 5/9] x86/passthrough: Introduce pt_irq_bind_msi() as
 canonical MSI bind path
To: Julian Vetter <julian.vetter@vates.tech>, 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.pau@citrix.com>, Stefano Stabellini <sstabellini@kernel.org>,
 Bertrand Marquis <bertrand.marquis@arm.com>,
 Volodymyr Babchuk <Volodymyr_Babchuk@epam.com>
References: <20260427135406.1281424-1-julian.vetter@vates.tech>
 <1777298080.8631fc262581453bbf619ec5b2062170.19dcf3882f5000f373@vates.tech>
Content-Language: en-US
From: Teddy Astie <teddy.astie@vates.tech>
In-Reply-To: <1777298080.8631fc262581453bbf619ec5b2062170.19dcf3882f5000f373@vates.tech>
X-BM-Disclaimer: Yes
Content-Type: multipart/alternative; boundary="-=Part.e7.ea83ac1b51395593.19dd4a8f666.7bd1a80984b505c3=-"
X-Bm-Milter-Handled: 4ffbd6c1-ee69-4e1b-aabd-f977039bd3e2
X-Bm-Transport-Timestamp: 1777389336166
X-purgate-ID: tlsNG-d25034/1777389340-F600DCF5-C2A702E8/0/0
X-purgate-type: clean
X-purgate-size: 17805

---=Part.e7.ea83ac1b51395593.19dd4a8f666.7bd1a80984b505c3=-
Content-Type: text/plain; charset=utf-8
Content-Transfer-Encoding: quoted-printable

Le 27/04/2026 =C3=A0 15:57, Julian Vetter a =C3=A9crit=C2=A0:
> Change pt_irq_bind_msi() to accept raw MSI address and data values inste=
ad
> of pre-decoded gvec/gflags=2E Add msi_addr_to_gflags() to decode the
> destination ID and delivery attributes, including the Extended Destinati=
on
> ID bits from address[11:5] per Intel convention=2E
>=20
> Update pt_irq_create_bind() to call pt_irq_bind_msi() via the existing
> gvec/gflags interface so domctl-based callers continue to work=2E
>=20
> Signed-off-by: Julian Vetter <julian=2Evetter@vates=2Etech>
> ---
> Changes in v4:
> - As suggested by Roger replace the v3 approach (v3 patches 2+4) of
>    extending the gflags ABI with XEN_DOMCTL_VMSI_X86_EXT_DEST_ID_MASK an=
d
>    XEN_DOMCTL_VMSI_X86_FULL_DEST() so callers could pass extended bits
>    through XEN_DOMCTL_bind_pt_irq=2E pt_irq_bind_msi() now accepts raw M=
SI
>    address + data and decodes the destination internally via
>    msi_addr_to_gflags()
> - Replace the gmsi=2Egvec + gmsi=2Egflags fields in struct hvm_pirq_dpci
>    with gmsi=2Eaddr + gmsi=2Edata
> - Replace msi_gflags() (v3 vmsi=2Ec helper that packed the extended
>    destination bits into gflags) with msi_addr_to_gflags() which decodes
>    the raw MSI address directly
> - pt_irq_create_bind() now rejects PT_IRQ_TYPE_MSI with -EOPNOTSUPP and
>    all callers are redirected through the DM op path in patch 7
> - As suggested by Roger adapt the comment in msi=2Eh in regards to the
>    extended destination encoding since it's not part of any specificatio=
n
> ---
>   xen/arch/x86/hvm/vmsi=2Ec            | 50 ++++++------------
>   xen/arch/x86/include/asm/hvm/irq=2Eh |  4 +-
>   xen/arch/x86/include/asm/msi=2Eh     | 18 ++++++-
>   xen/drivers/passthrough/x86/hvm=2Ec  | 83 ++++++++++++++++++----------=
--
>   xen/include/xen/iommu=2Eh            |  3 ++
>   5 files changed, 86 insertions(+), 72 deletions(-)
>=20
> diff --git a/xen/arch/x86/hvm/vmsi=2Ec b/xen/arch/x86/hvm/vmsi=2Ec
> index 27b1f089e2=2E=2E2a4b97e2e1 100644
> --- a/xen/arch/x86/hvm/vmsi=2Ec
> +++ b/xen/arch/x86/hvm/vmsi=2Ec
> @@ -43,6 +43,7 @@
>   #include <asm/current=2Eh>
>   #include <asm/event=2Eh>
>   #include <asm/io_apic=2Eh>
> +#include <asm/msi=2Eh>
>  =20
>   static void vmsi_inj_irq(
>       struct vlapic *target,
> @@ -107,12 +108,12 @@ int vmsi_deliver(
>  =20
>   void vmsi_deliver_pirq(struct domain *d, const struct hvm_pirq_dpci *p=
irq_dpci)
>   {
> -    uint32_t flags =3D pirq_dpci->gmsi=2Egflags;
> -    int vector =3D pirq_dpci->gmsi=2Egvec;
> -    uint8_t dest =3D (uint8_t)flags;
> -    bool dest_mode =3D flags & XEN_DOMCTL_VMSI_X86_DM_MASK;
> -    uint8_t delivery_mode =3D MASK_EXTR(flags, XEN_DOMCTL_VMSI_X86_DELI=
V_MASK);
> -    bool trig_mode =3D flags & XEN_DOMCTL_VMSI_X86_TRIG_MASK;
> +    uint32_t dest =3D MSI_ADDR_DEST(pirq_dpci->gmsi=2Eaddr);
> +    bool dest_mode =3D pirq_dpci->gmsi=2Eaddr & MSI_ADDR_DESTMODE_MASK;
> +    uint8_t delivery_mode =3D MASK_EXTR(pirq_dpci->gmsi=2Edata,
> +                                      MSI_DATA_DELIVERY_MODE_MASK);
> +    bool trig_mode =3D pirq_dpci->gmsi=2Edata & MSI_DATA_TRIGGER_MASK;
> +    int vector =3D pirq_dpci->gmsi=2Edata & MSI_DATA_VECTOR_MASK;
>  =20
>       HVM_DBG_LOG(DBG_LEVEL_IOAPIC,
>                   "msi: dest=3D%x dest_mode=3D%x delivery_mode=3D%x "
> @@ -793,27 +794,6 @@ void msix_write_completion(struct vcpu *v)
>   }
>  =20
>   #ifdef CONFIG_HAS_VPCI
> -static unsigned int msi_gflags(uint16_t data, uint64_t addr, bool maske=
d)
> -{
> -    /*
> -     * We need to use the DOMCTL constants here because the output of t=
his
> -     * function is used as input to pt_irq_create_bind, which also take=
s the
> -     * input from the DOMCTL itself=2E
> -     */
> -    return MASK_INSR(MASK_EXTR(addr, MSI_ADDR_DEST_ID_MASK),
> -                     XEN_DOMCTL_VMSI_X86_DEST_ID_MASK) |
> -           MASK_INSR(MASK_EXTR(addr, MSI_ADDR_REDIRECTION_MASK),
> -                     XEN_DOMCTL_VMSI_X86_RH_MASK) |
> -           MASK_INSR(MASK_EXTR(addr, MSI_ADDR_DESTMODE_MASK),
> -                     XEN_DOMCTL_VMSI_X86_DM_MASK) |
> -           MASK_INSR(MASK_EXTR(data, MSI_DATA_DELIVERY_MODE_MASK),
> -                     XEN_DOMCTL_VMSI_X86_DELIV_MASK) |
> -           MASK_INSR(MASK_EXTR(data, MSI_DATA_TRIGGER_MASK),
> -                     XEN_DOMCTL_VMSI_X86_TRIG_MASK) |
> -           /* NB: by default MSI vectors are bound masked=2E */
> -           (masked ? 0 : XEN_DOMCTL_VMSI_X86_UNMASKED);
> -}
> -
>   static void vpci_mask_pirq(struct domain *d, int pirq, bool mask)
>   {
>       unsigned long flags;
> @@ -850,17 +830,17 @@ static int vpci_msi_update(const struct pci_dev *p=
dev, uint32_t data,
>       {
>           uint8_t vector =3D MASK_EXTR(data, MSI_DATA_VECTOR_MASK);
>           uint8_t vector_mask =3D 0xff >> (8 - fls(vectors) + 1);
> -        struct xen_domctl_bind_pt_irq bind =3D {
> -            =2Emachine_irq =3D pirq + i,
> -            =2Eirq_type =3D PT_IRQ_TYPE_MSI,
> -            =2Eu=2Emsi=2Egvec =3D (vector & ~vector_mask) |
> -                          ((vector + i) & vector_mask),
> -            =2Eu=2Emsi=2Egflags =3D msi_gflags(data, address, (mask >> =
i) & 1),
> -        };
> -        int rc =3D pt_irq_create_bind(pdev->domain, &bind);
> +        uint8_t gvec =3D (vector & ~vector_mask) | ((vector + i) & vect=
or_mask);
> +        uint32_t msi_data =3D (data & ~MSI_DATA_VECTOR_MASK) | gvec;
> +        int rc =3D pt_irq_bind_msi(pdev->domain, pirq + i,
> +                                 address, msi_data, 0, !((mask >> i) & =
1));
>  =20
>           if ( rc )
>           {
> +            struct xen_domctl_bind_pt_irq bind =3D {
> +                =2Eirq_type =3D PT_IRQ_TYPE_MSI,
> +                =2Emachine_irq =3D pirq + i,
> +            };
>               gdprintk(XENLOG_ERR, "%pp: failed to bind PIRQ %u: %d\n",
>                        &pdev->sbdf, pirq + i, rc);
>               while ( bind=2Emachine_irq-- > pirq )
> diff --git a/xen/arch/x86/include/asm/hvm/irq=2Eh b/xen/arch/x86/include=
/asm/hvm/irq=2Eh
> index 77595fb3f4=2E=2Ec50eee9996 100644
> --- a/xen/arch/x86/include/asm/hvm/irq=2Eh
> +++ b/xen/arch/x86/include/asm/hvm/irq=2Eh
> @@ -120,8 +120,8 @@ struct dev_intx_gsi_link {
>   #define HVM_IRQ_DPCI_TRANSLATE       (1u << _HVM_IRQ_DPCI_TRANSLATE_SH=
IFT)
>  =20
>   struct hvm_gmsi_info {
> -    uint32_t gvec;
> -    uint32_t gflags;
> +    uint64_t addr;    /* raw MSI address (0xfeexxxxx, includes ext dest=
 ID) */
> +    uint32_t data;    /* raw MSI data (vector, delivery mode, trigger m=
ode) */
>       int dest_vcpu_id; /* -1 :multi-dest, non-negative: dest_vcpu_id */
>       bool posted; /* directly deliver to guest via VT-d PI? */
>   };
> diff --git a/xen/arch/x86/include/asm/msi=2Eh b/xen/arch/x86/include/asm=
/msi=2Eh
> index 00059d4a3a=2E=2E93aaf20e27 100644
> --- a/xen/arch/x86/include/asm/msi=2Eh
> +++ b/xen/arch/x86/include/asm/msi=2Eh
> @@ -51,8 +51,22 @@
>   #define MSI_ADDR_REDIRECTION_MASK   (1 << MSI_ADDR_REDIRECTION_SHIFT)
>  =20
>   #define MSI_ADDR_DEST_ID_SHIFT		12
> -#define	 MSI_ADDR_DEST_ID_MASK		0x00ff000
> -#define  MSI_ADDR_DEST_ID(dest)		(((dest) << MSI_ADDR_DEST_ID_SHIFT) & =
MSI_ADDR_DEST_ID_MASK)
> +#define MSI_ADDR_DEST_ID_UPPER_BITS	8
> +#define MSI_ADDR_DEST_ID_MASK		0x00ff000
> +#define MSI_ADDR_DEST_ID(dest)		(((dest) << MSI_ADDR_DEST_ID_SHIFT) & M=
SI_ADDR_DEST_ID_MASK)
> +
> +/*
> + * Intel convention: in physical destination mode bits 11:5 of the MSI
> + * address carry APIC ID bits [14:8] (the "Extended Destination ID"),
> + * extending the addressable range from 8 to 15 bits=2E
> + */
> +#define MSI_ADDR_EXT_DEST_ID_MASK	0x0000fe0
> +
> +/* Extract the combined 15-bit destination ID from an MSI address=2E */
> +#define MSI_ADDR_DEST(addr) \
> +    (MASK_EXTR((addr), MSI_ADDR_DEST_ID_MASK) | \
> +     (MASK_EXTR((addr), MSI_ADDR_EXT_DEST_ID_MASK) << \
> +      MSI_ADDR_DEST_ID_UPPER_BITS))
>  =20
>   /* MAX fixed pages reserved for mapping MSIX tables=2E */
>   #define FIX_MSIX_MAX_PAGES              512
> diff --git a/xen/drivers/passthrough/x86/hvm=2Ec b/xen/drivers/passthrou=
gh/x86/hvm=2Ec
> index eff1e8a79e=2E=2E026534530f 100644
> --- a/xen/drivers/passthrough/x86/hvm=2Ec
> +++ b/xen/drivers/passthrough/x86/hvm=2Ec
> @@ -21,6 +21,7 @@
>   #include <xen/event=2Eh>
>   #include <xen/iommu=2Eh>
>   #include <xen/cpu=2Eh>
> +#include <xen/ioreq=2Eh>
>   #include <xen/irq=2Eh>
>   #include <asm/hvm/irq=2Eh>
>   #include <asm/io_apic=2Eh>
> @@ -290,14 +291,15 @@ static int pt_irq_dpci_setup(struct domain *d, uns=
igned int pirq,
>       } while ( true );
>   }
>  =20
> -static int pt_irq_bind_msi(struct domain *d, uint32_t machine_irq,
> -                            uint8_t gvec, uint32_t gflags, uint64_t gta=
ble,
> -                            bool unmasked)
> +int pt_irq_bind_msi(struct domain *d, uint32_t machine_irq,
> +                    uint64_t msi_addr, uint32_t msi_data,
> +                    uint64_t gtable, bool unmasked)
>   {
>       struct hvm_irq_dpci *hvm_irq_dpci;
>       struct hvm_pirq_dpci *pirq_dpci;
>       struct pirq *info;
> -    uint8_t dest, delivery_mode;
> +    uint8_t gvec, delivery_mode;
> +    uint32_t dest;
>       bool dest_mode;
>       int dest_vcpu_id, rc;
>       const struct vcpu *vcpu;
> @@ -313,8 +315,8 @@ static int pt_irq_bind_msi(struct domain *d, uint32_=
t machine_irq,
>       {
>           pirq_dpci->flags =3D HVM_IRQ_DPCI_MAPPED | HVM_IRQ_DPCI_MACH_M=
SI |
>                              HVM_IRQ_DPCI_GUEST_MSI;
> -        pirq_dpci->gmsi=2Egvec =3D gvec;
> -        pirq_dpci->gmsi=2Egflags =3D gflags;
> +        pirq_dpci->gmsi=2Eaddr =3D msi_addr;
> +        pirq_dpci->gmsi=2Edata =3D msi_data;
>           /*
>            * 'pt_irq_bind_msi' can be called after 'pt_irq_destroy_bind'=
=2E
>            * The 'pirq_cleanup_check' which would free the structure is =
only
> @@ -346,8 +348,8 @@ static int pt_irq_bind_msi(struct domain *d, uint32_=
t machine_irq,
>           }
>           if ( unlikely(rc) )
>           {
> -            pirq_dpci->gmsi=2Egflags =3D 0;
> -            pirq_dpci->gmsi=2Egvec =3D 0;
> +            pirq_dpci->gmsi=2Eaddr =3D 0;
> +            pirq_dpci->gmsi=2Edata =3D 0;
>               pirq_dpci->dom =3D NULL;
>               pirq_dpci->flags =3D 0;
>               if ( !info->evtchn )
> @@ -367,20 +369,22 @@ static int pt_irq_bind_msi(struct domain *d, uint3=
2_t machine_irq,
>           }
>  =20
>           /* If pirq is already mapped as vmsi, update guest data/addr=
=2E */
> -        if ( pirq_dpci->gmsi=2Egvec !=3D gvec || pirq_dpci->gmsi=2Egfla=
gs !=3D gflags )
> +        if ( pirq_dpci->gmsi=2Eaddr !=3D msi_addr ||
> +             pirq_dpci->gmsi=2Edata !=3D msi_data )
>           {
>               /* Directly clear pending EOIs before enabling new MSI inf=
o=2E */
>               pirq_guest_eoi(info);
>  =20
> -            pirq_dpci->gmsi=2Egvec =3D gvec;
> -            pirq_dpci->gmsi=2Egflags =3D gflags;
> +            pirq_dpci->gmsi=2Eaddr =3D msi_addr;
> +            pirq_dpci->gmsi=2Edata =3D msi_data;
>           }
>       }
> +
>       /* Calculate dest_vcpu_id for MSI-type pirq migration=2E */
> -    dest =3D MASK_EXTR(pirq_dpci->gmsi=2Egflags, XEN_DOMCTL_VMSI_X86_DE=
ST_ID_MASK);
> -    dest_mode =3D pirq_dpci->gmsi=2Egflags & XEN_DOMCTL_VMSI_X86_DM_MAS=
K;
> -    delivery_mode =3D MASK_EXTR(pirq_dpci->gmsi=2Egflags,
> -                               XEN_DOMCTL_VMSI_X86_DELIV_MASK);
> +    gvec =3D msi_data & MSI_DATA_VECTOR_MASK;
> +    dest =3D MSI_ADDR_DEST(msi_addr);
> +    dest_mode =3D msi_addr & MSI_ADDR_DESTMODE_MASK;
> +    delivery_mode =3D MASK_EXTR(msi_data, MSI_DATA_DELIVERY_MODE_MASK);
>  =20
>       dest_vcpu_id =3D hvm_girq_dest_2_vcpu_id(d, dest, dest_mode);
>       pirq_dpci->gmsi=2Edest_vcpu_id =3D dest_vcpu_id;
> @@ -391,8 +395,7 @@ static int pt_irq_bind_msi(struct domain *d, uint32_=
t machine_irq,
>       if ( iommu_intpost )
>       {
>           if ( delivery_mode =3D=3D dest_LowestPrio )
> -            vcpu =3D vector_hashing_dest(d, dest, dest_mode,
> -                                       pirq_dpci->gmsi=2Egvec);
> +            vcpu =3D vector_hashing_dest(d, dest, dest_mode, gvec);
>           if ( vcpu )
>               pirq_dpci->gmsi=2Eposted =3D true;
>       }
> @@ -407,7 +410,7 @@ static int pt_irq_bind_msi(struct domain *d, uint32_=
t machine_irq,
>               =2Eirq_type =3D PT_IRQ_TYPE_MSI,
>           };
>  =20
> -        rc =3D hvm_pi_update_irte(vcpu, info, pirq_dpci->gmsi=2Egvec);
> +        rc =3D hvm_pi_update_irte(vcpu, info, gvec);
>           if ( rc )
>           {
>               pt_irq_destroy_bind(d, &bind);
> @@ -417,15 +420,15 @@ static int pt_irq_bind_msi(struct domain *d, uint3=
2_t machine_irq,
>  =20
>       if ( unmasked )
>       {
> -        struct xen_domctl_bind_pt_irq bind =3D {
> -            =2Emachine_irq =3D machine_irq,
> -            =2Eirq_type =3D PT_IRQ_TYPE_MSI,
> -        };
>           unsigned long flags;
>           struct irq_desc *desc =3D pirq_spin_lock_irq_desc(info, &flags=
);
>  =20
>           if ( !desc )
>           {
> +            struct xen_domctl_bind_pt_irq bind =3D {
> +                =2Emachine_irq =3D machine_irq,
> +                =2Eirq_type =3D PT_IRQ_TYPE_MSI,
> +            };
>               pt_irq_destroy_bind(d, &bind);
>               return -EINVAL;
>           }
> @@ -448,13 +451,29 @@ int pt_irq_create_bind(
>       switch ( pt_irq_bind->irq_type )
>       {
>       case PT_IRQ_TYPE_MSI:
> -        return pt_irq_bind_msi(d, pirq,
> -                               pt_irq_bind->u=2Emsi=2Egvec,
> -                               pt_irq_bind->u=2Emsi=2Egflags &
> -                                   ~XEN_DOMCTL_VMSI_X86_UNMASKED,
> +    {
> +        uint32_t gflags =3D pt_irq_bind->u=2Emsi=2Egflags;
> +        uint64_t msi_addr;
> +        uint32_t msi_data;
> +
> +        msi_addr =3D MSI_ADDR_HEADER |
> +                   MASK_INSR(MASK_EXTR(gflags, XEN_DOMCTL_VMSI_X86_DEST=
_ID_MASK),
> +                             MSI_ADDR_DEST_ID_MASK) |
> +                   (gflags & XEN_DOMCTL_VMSI_X86_RH_MASK ?
> +                    MSI_ADDR_REDIRECTION_LOWPRI : MSI_ADDR_REDIRECTION_=
CPU) |
> +                   (gflags & XEN_DOMCTL_VMSI_X86_DM_MASK ?
> +                    MSI_ADDR_DESTMODE_LOGIC : MSI_ADDR_DESTMODE_PHYS);
> +        msi_data =3D pt_irq_bind->u=2Emsi=2Egvec |
> +                   MASK_INSR(MASK_EXTR(gflags, XEN_DOMCTL_VMSI_X86_DELI=
V_MASK),
> +                             MSI_DATA_DELIVERY_MODE_MASK) |
> +                   (gflags & XEN_DOMCTL_VMSI_X86_TRIG_MASK ?
> +                    MSI_DATA_TRIGGER_LEVEL : 0);
> +
> +        return pt_irq_bind_msi(d, pt_irq_bind->machine_irq,
> +                               msi_addr, msi_data,
>                                  pt_irq_bind->u=2Emsi=2Egtable,
> -                               !!(pt_irq_bind->u=2Emsi=2Egflags &
> -                                  XEN_DOMCTL_VMSI_X86_UNMASKED));
> +                               !!(gflags & XEN_DOMCTL_VMSI_X86_UNMASKED=
));
> +    }
>  =20
>       case PT_IRQ_TYPE_PCI:
>       case PT_IRQ_TYPE_MSI_TRANSLATE:
> @@ -617,7 +636,6 @@ int pt_irq_create_bind(
>       }
>  =20
>       default:
> -        write_unlock(&d->event_lock);
>           return -EOPNOTSUPP;
>       }
>  =20
> @@ -858,11 +876,10 @@ static int cf_check _hvm_dpci_msi_eoi(
>       int vector =3D (long)arg;
>  =20
>       if ( (pirq_dpci->flags & HVM_IRQ_DPCI_MACH_MSI) &&
> -         (pirq_dpci->gmsi=2Egvec =3D=3D vector) )
> +         ((pirq_dpci->gmsi=2Edata & MSI_DATA_VECTOR_MASK) =3D=3D vector=
) )
>       {
> -        unsigned int dest =3D MASK_EXTR(pirq_dpci->gmsi=2Egflags,
> -                                      XEN_DOMCTL_VMSI_X86_DEST_ID_MASK)=
;
> -        bool dest_mode =3D pirq_dpci->gmsi=2Egflags & XEN_DOMCTL_VMSI_X=
86_DM_MASK;
> +        unsigned int dest =3D MSI_ADDR_DEST(pirq_dpci->gmsi=2Eaddr);
> +        bool dest_mode =3D pirq_dpci->gmsi=2Eaddr & XEN_DOMCTL_VMSI_X86=
_DM_MASK;
>  =20
>           if ( vlapic_match_dest(vcpu_vlapic(current), NULL, 0, dest,
>                                  dest_mode) )
> diff --git a/xen/include/xen/iommu=2Eh b/xen/include/xen/iommu=2Eh
> index 37c4a1dc82=2E=2E4672d114e3 100644
> --- a/xen/include/xen/iommu=2Eh
> +++ b/xen/include/xen/iommu=2Eh
> @@ -222,6 +222,9 @@ int pt_irq_create_bind(struct domain *d,
>                          const struct xen_domctl_bind_pt_irq *pt_irq_bin=
d);
>   int pt_irq_destroy_bind(struct domain *d,
>                           const struct xen_domctl_bind_pt_irq *pt_irq_bi=
nd);
> +int pt_irq_bind_msi(struct domain *d, uint32_t machine_irq,
> +                    uint64_t msi_addr, uint32_t msi_data,
> +                    uint64_t gtable, bool unmasked);
>  =20
>   struct hvm_irq_dpci *domain_get_irq_dpci(const struct domain *d);
>   void free_hvm_irq_dpci(struct hvm_irq_dpci *dpci);

There is a lot of bitwise manipulations there, and I wonder if using=20
bitfields could help here ?

Teddy


-- 
Teddy Astie | Vates XCP-ng Developer

XCP-ng & Xen Orchestra - Vates s=
olutions

web: https://vates=2Etech
---=Part.e7.ea83ac1b51395593.19dd4a8f666.7bd1a80984b505c3=---


From xen-devel-bounces@lists.xenproject.org Tue Apr 28 15:17:43 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 28 Apr 2026 15:17:43 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1296461.1572868 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wHkBo-0002uZ-39; Tue, 28 Apr 2026 15:17:32 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1296461.1572868; Tue, 28 Apr 2026 15:17: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 1wHkBo-0002uS-0M; Tue, 28 Apr 2026 15:17:32 +0000
Received: by outflank-mailman (input) for mailman id 1296461;
 Tue, 28 Apr 2026 15:17:31 +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 1wHkBn-0002uK-8Z
 for xen-devel@lists.xenproject.org; Tue, 28 Apr 2026 15:17:31 +0000
Received: from xenbits.xenproject.org ([104.239.192.120])
 by mail.xenproject.org with esmtp (Exim 4.96)
 (envelope-from <julien@xen.org>) id 1wHkBm-00689m-2i;
 Tue, 28 Apr 2026 15:17:30 +0000
Received: from [2a02:8012:3a1:0:41a7:c05:58cb:6653]
 by xenbits.xenproject.org with esmtpsa (TLS1.3) tls
 TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (Exim 4.96)
 (envelope-from <julien@xen.org>) id 1wHkBm-006xf3-27;
 Tue, 28 Apr 2026 15:17: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=xen.org;
	s=20200302mail; h=Content-Transfer-Encoding:Content-Type:In-Reply-To:From:
	References:Cc:To:Subject:MIME-Version:Date:Message-ID;
	bh=Szftq+YgYXu7Xtqxo3GkkEYoQPptF7lz71Be+Th/64g=; b=cfHdR8KUv4CV2gElmLaUuN2yGo
	gcGNBUTC7kneMCG9pUk5jMdb1ih4Xz3dh0eWLw8lIFlQtjLy2i9TMpN2I6lEwSxkELTUhtNiMAiak
	n9p1LL4hzi8NJatGfz7xusVA5hRVqEh4iRz+FgwylY3ubVdh4INfBhvzg0H7laWU86WU=;
Message-ID: <8653c501-a990-48cf-9e38-0a6eb99a1cd7@xen.org>
Date: Tue, 28 Apr 2026 16:17:28 +0100
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH v2] xen: gic-v3: Introduce CONFIG_GICV3_NR_LRS
To: "Halder, Ayan Kumar" <ayankuma@amd.com>,
 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>,
 Michal Orzel <michal.orzel@amd.com>,
 Volodymyr Babchuk <Volodymyr_Babchuk@epam.com>
References: <20260318140900.3795710-1-ayan.kumar.halder@amd.com>
 <83786d8b-d57a-4c79-8e8b-7115d4276568@xen.org>
 <f834927b-a5a7-4b83-8e0a-d24263554e26@amd.com>
Content-Language: en-GB
From: Julien Grall <julien@xen.org>
In-Reply-To: <f834927b-a5a7-4b83-8e0a-d24263554e26@amd.com>
Content-Type: text/plain; charset=UTF-8; format=flowed
Content-Transfer-Encoding: 8bit

Hi Ayan,

On 18/04/2026 08:28, Halder, Ayan Kumar wrote:
> 
> On 14/04/2026 03:06, Julien Grall wrote:
>> Hi Ayan,
> Hi Julien,
>>
>> On 18/03/2026 23:09, Ayan Kumar Halder wrote:
>>> One key requirement of Xen functional safety is to reduce the number
>>> of lines of code to be safety certified. Besides, a safety certified
>>> Xen requires a static hardware configuration to be defined. This static
>>> hardware configuration is described as per the test hardware/emulator
>>> hardware configuration against which Xen is verified.
>>>
>>> Introduce GICV3_NR_LRS with the two aims in mind:
>>
>> Out of interest, why is this limited to GICv3?
> 
> This was just my starting point of investigation. My intention is to 
> have as much as a static defined hardware configuration, so that the 
> code that cannot be tested on the hardware can be eliminated by one of 
> the many ways (DCE, Kconfig or actual code removal).
> 
> The advantage of having a static defined configuration is that the 
> system integrator will have the full control on how to configure Xen for 
> a specific hardware platform. And we try to reduce as much as possible 
> any code that cannot be used due to hardware limitations.

Thanks for the answer. I was asking because I wonder whether the name of 
config should be more generic so it can be used for GICV2. But I guess 
we can rename it afterwards.

> 
>>
>>> 1. User should set the number of GICV3 list registers as per the test
>>> hardware so that the unwanted code can be removed using GCC's dead
>>> code elimination or preprocessor's config.
>>
>> We discussed this offline, I am not fully convinced you can rely on 
>> dead code elimination to always remove the BUG() in 
>> gicv3_ich_read_lr(). If you want to rely on dead code eliminitation, 
>> then you will want to call a function which have a prototype defined 
>> but not implemented (similar to what we do for bitops with 
>> __bad_atomic_read()) which would fail a link time if the compiler 
>> didn't remove the code.
> 
> If you are ok, we can break this into 2 patches
> 
> 1. Introduce GICV3_NR_LRS and make sure it is used consistently in the 
> code. IOW, it should address the comments that Luca and you provided.
> 
> 2. Implement a way for compiler to do DCE based on GICV3_NR_LRS.

Yes please, so we can merge patch #1 earlier.

> 
>>
>>> 2. By doing #1, one can ensure that there is no untested code due to
>>> unsupported hardware platform and thus there is no safety impact due
>>> to untested code.
>>>
>>> However if the user does not set GICV3_NR_LRS, then it is set to 0.
>>> Thus Xen will fallback to the default scenario (i.e. read the hardware
>>> register to determine the number of LRS).
>>>
>>> 1. In gicv3_save_lrs()/gicv3_restore_lrs(), use the number of list
>>> registers from GICV3_NR_LRS (if defined) instead of gicv3_info.nr_lrs.
>>> This ensures that if the hardware does not support more than 4 LRs
>>> (for example), the code accessing LR 4-15 is never reached. The
>>> compiler can eliminate the unsupported cases as the switch case uses a
>>> constant conditional.
>>>
>>> 2. RAZ/WI for the unsupported LRs.
>>>
>>> Signed-off-by: Ayan Kumar Halder <ayan.kumar.halder@amd.com>
>>> Signed-off-by: Michal Orzel <michal.orzel@amd.com>
>>> ---
>>> Changelog:
>>>
>>> v1 - 1. s/lrs/LRS
>>> 2. Implement RAZ/WI instead of panic
>>>
>>> Few comments which were not addressed
>>> 1. Do "gicv3_info.nr_lrs to LRS" in gicv3_hyp_init() and keep the code
>>> unchanged in gicv3_save_lrs()/gicv3_restore_lrs() -- This prevents the
>>> compiler from doing dead code elimination as the switch condition cannot
>>> be evaluated at compile time.
>>> I am not sure how to get around this issue.
>>>
>>>   xen/arch/arm/Kconfig  |  9 +++++++++
>>>   xen/arch/arm/gic-v3.c | 14 ++++++++++++--
>>>   2 files changed, 21 insertions(+), 2 deletions(-)
>>>
>>> diff --git a/xen/arch/arm/Kconfig b/xen/arch/arm/Kconfig
>>> index 2f2b501fda..6540013f97 100644
>>> --- a/xen/arch/arm/Kconfig
>>> +++ b/xen/arch/arm/Kconfig
>>> @@ -276,6 +276,15 @@ config PCI_PASSTHROUGH
>>>     endmenu
>>>   +config GICV3_NR_LRS
>>> +    int "Number of GICv3 Link Registers supported" if EXPERT
>>
>> Supported by who? The hardware? Xen? Asking, because I could forsee an 
>> integrator wanted to limit the number of LRs to something smaller than 
>> what the HW supports (in a lot of cases, 2 LRs is sufficient).
> 
> Ack
> 
>   ... "Number of GICv3 Link Registers used" if EXPERT
> 
> So it implies a decision to be taken by the system integrator. Does it 
> sound ok ?

Either "used" or "allowed" would be fine.

Cheers,

-- 
Julien Grall



From xen-devel-bounces@lists.xenproject.org Tue Apr 28 15:27:32 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 28 Apr 2026 15:27:32 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1296473.1572888 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wHkLP-00059r-0n; Tue, 28 Apr 2026 15:27:27 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1296473.1572888; Tue, 28 Apr 2026 15:27: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 1wHkLO-00059k-Tz; Tue, 28 Apr 2026 15:27:26 +0000
Received: by outflank-mailman (input) for mailman id 1296473;
 Tue, 28 Apr 2026 15:27:25 +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.19dd4b3af44000f373@swg.vates.tech>)
 id 1wHkLN-00058f-QM
 for xen-devel@lists.xenproject.org; Tue, 28 Apr 2026 15:27:25 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wHkLN-00GbAa-65
 for xen-devel@lists.xenproject.org; Tue, 28 Apr 2026 17:27:25 +0200
Received: from [10.42.69.12] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1) (envelope-from
 <prod-mta-13.8631fc262581453bbf619ec5b2062170.19dd4b3af44000f373@swg.vates.tech>)
 id 69f0d1be-e002-0a2a0a5209dd-0a2a450cad4a-36
 for <xen-devel@lists.xenproject.org>; Tue, 28 Apr 2026 17:27:25 +0200
Received: from [185.255.28.34] (helo=prod-mta-13.swg-srv.net)
 by tlsNG-d25034.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.1)
 (envelope-from
 <prod-mta-13.8631fc262581453bbf619ec5b2062170.19dd4b3af44000f373@swg.vates.tech>)
 id 69f0d1dc-62f1-0a2a450c0019-b9ff1c22855f-3
 for <xen-devel@lists.xenproject.org>; Tue, 28 Apr 2026 17:27:25 +0200
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
 19dd4b3af44000f373.007 for <xen-devel@lists.xenproject.org>
 (version=TLSv1.3 cipher=TLS_AES_256_GCM_SHA384);
 Tue, 28 Apr 2026 15:27:18 +0000
Received: from [192.168.1.18] (88-175-170-134.subs.proxad.net [88.175.170.134])
 (Authenticated sender: teddy.astie)
 by mail2.vates.fr (Postfix) with ESMTPSA id 2104C8620C;
 Tue, 28 Apr 2026 17:27:18 +0200 (CEST)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@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=gPnfE3i2wg7zvoKVRWncxs/JqV5yt7VVIOEdHbdeNAs=;
 h=from:subject:date:message-id:to:cc:mime-version:content-type:in-reply-to:references:feedback-id;
 b=HcULH9J4pFWUmnj+olzrS5AxKslmG9HFP/nD3BJP5HNFb17TG9JjZjDHGuWu47tM4emhecWE1
 Mk2J9xynXbSYLNM/jsQq4UGHocLXOTjak12JBMqDCo8mNJJS2TpxDJ2sJjxVMU+Ilm/ZkY57J8u
 R3/7mHWpXaaWA4c4sqvDFHyMoGHd/GdTT5aOblgyIvzSccByyHMIZpoQdPiM+EB1ery4j/2kilf
 ISFTN53OsGV9laVZySdvT685d26J6WN5BDoEffmn3Srf9DstavghhyMe/FyCD24L+QlV1sBDo6O
 shnVGWgKc0zCp6CU2urNf0GGQDNkrT8MjJUpYtcJHd2g==
X-Zone-Loop: 30834fa9f8c989e48159e538aa8a3c14ad691e20e635
x-campaign-type: default
x-transaction-id: e521da65-7d7a-45ea-9a09-f9ab5b7d0766
x-swg-uid: 01-23f4bfb3-cba9-4a2e-aa80-ff8c7920cd41
X-Mailer: Sweego
Message-ID:
 <1777390038.8631fc262581453bbf619ec5b2062170.19dd4b3af44000f373@vates.tech>
x-swg-bid: 1777390038.8631fc262581453bbf619ec5b2062170.19dd4b3af44000f373
Feedback-ID: default:8631fc262581453bbf619ec5b2062170:Sweego
x-campaign-id: default
x-client-id: 8631fc262581453bbf619ec5b2062170
X-Originating-IP: [37.26.189.201]
Date: Tue, 28 Apr 2026 17:27:17 +0200
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH v4 6/9] x86/hvm: Support extended destination IDs in
 virtual MSI and IO-APIC
To: Julian Vetter <julian.vetter@vates.tech>, 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.pau@citrix.com>, Stefano Stabellini <sstabellini@kernel.org>,
 Bertrand Marquis <bertrand.marquis@arm.com>,
 Volodymyr Babchuk <Volodymyr_Babchuk@epam.com>
References: <20260427135406.1281424-1-julian.vetter@vates.tech>
 <1777298081.8631fc262581453bbf619ec5b2062170.19dcf388512000f373@vates.tech>
Content-Language: en-US
From: Teddy Astie <teddy.astie@vates.tech>
In-Reply-To: <1777298081.8631fc262581453bbf619ec5b2062170.19dcf388512000f373@vates.tech>
X-BM-Disclaimer: Yes
Content-Type: multipart/alternative; boundary="-=Part.eb.c5d8ae115ac7e90e.19dd4b3ad47.d3c253bc4b53bd84=-"
X-Bm-Milter-Handled: 4ffbd6c1-ee69-4e1b-aabd-f977039bd3e2
X-Bm-Transport-Timestamp: 1777390038343
X-purgate-ID: tlsNG-d25034/1777390045-F7A10CF5-9860A5B3/0/0
X-purgate-type: clean
X-purgate-size: 8425

---=Part.eb.c5d8ae115ac7e90e.19dd4b3ad47.d3c253bc4b53bd84=-
Content-Type: text/plain; charset=utf-8
Content-Transfer-Encoding: quoted-printable

Le 27/04/2026 =C3=A0 15:57, Julian Vetter a =C3=A9crit=C2=A0:
> Add IO_APIC_REDIR_DEST_MASK and IO_APIC_REDIR_EXT_DEST_MASK for the
> standard and extended destination fields of the IO-APIC RTE, and a
> VIOAPIC_RTE_DEST() helper that extracts the combined 15-bit destination
> ID=2E Extend the IO-APIC RTE save/restore struct with an ext_dest_id fie=
ld
> so migration preserves the extended bits=2E
>=20
> Use the newly defined masks to extract the full 15-bit destination ID
> from guest MSI addresses and IO-APIC RTEs=2E In hvm_inject_msi() combine
> the standard bits [19:12] with the extended bits [11:5] of the MSI
> address into a 15-bit destination ID for LAPIC delivery=2E Widen the des=
t
> parameter of vmsi_deliver() and hvm_girq_dest_2_vcpu_id() from uint8_t
> to uint32_t to accommodate the larger range=2E In vioapic_deliver() read
> the combined 15-bit destination using the VIOAPIC_RTE_DEST() macro=2E
> Extend ioapic_check() to check for extended destination bits set in a
> domain that does not advertise XEN_HVM_CPUID_EXT_DEST_ID and refuse to
> restore the IO-APIC state, preventing silent interrupt misrouting after
> live migration=2E
>=20
> Signed-off-by: Julian Vetter <julian=2Evetter@vates=2Etech>
> ---
> Changes in v4:
> - Corresponds to v3 patch 3, but adapted for the new raw-addr/data
>    storage introduced in patch 5:
>      - In v3, vmsi_deliver_pirq() extracted the full destination from
>        gflags via XEN_DOMCTL_VMSI_X86_FULL_DEST(), and msi_gflags()
>        packed the extended address bits into gflags
>      - In v4 both helpers are gone=2E vmsi_deliver_pirq() reads
>        pirq_dpci->gmsi=2Eaddr and pirq_dpci->gmsi=2Edata directly using =
the
>        standard MSI masks
> - Moved the IO-APIC masks and VIOAPIC_RTE_DEST() helper (previously in
>    v3 patch 2) into this patch
> - Added ioapic_check() ext destination safety check (refusing migration
>    with ext_dest_id bits set when XEN_HVM_CPUID_EXT_DEST_ID is not
>    advertised)
> ---
>   xen/arch/x86/hvm/irq=2Ec                 |  9 ++++++++-
>   xen/arch/x86/hvm/vioapic=2Ec             |  2 +-
>   xen/arch/x86/hvm/vmsi=2Ec                |  4 ++--
>   xen/arch/x86/include/asm/hvm/hvm=2Eh     |  4 ++--
>   xen/arch/x86/include/asm/hvm/vioapic=2Eh | 12 ++++++++++++
>   xen/include/public/arch-x86/hvm/save=2Eh |  4 +++-
>   6 files changed, 28 insertions(+), 7 deletions(-)
>=20
> diff --git a/xen/arch/x86/hvm/irq=2Ec b/xen/arch/x86/hvm/irq=2Ec
> index 5f64361113=2E=2Eb43adf8b96 100644
> --- a/xen/arch/x86/hvm/irq=2Ec
> +++ b/xen/arch/x86/hvm/irq=2Ec
> @@ -374,7 +374,14 @@ int hvm_set_pci_link_route(struct domain *d, u8 lin=
k, u8 isa_irq)
>   int hvm_inject_msi(struct domain *d, uint64_t addr, uint32_t data)
>   {
>       uint32_t tmp =3D (uint32_t) addr;
> -    uint8_t  dest =3D (tmp & MSI_ADDR_DEST_ID_MASK) >> MSI_ADDR_DEST_ID=
_SHIFT;
> +    /*
> +     * Standard MSI destination address bits 19:12 carry the 8-bit APIC=
 ID=2E
> +     * When XEN_HVM_CPUID_EXT_DEST_ID is enabled, bits 11:5 carry APIC =
ID bits
> +     * [14:8], extending the addressable range to 15 bits=2E Guests tha=
t do not
> +     * use extended IDs leave these bits at zero, so the combined extra=
ction is
> +     * safe regardless=2E
> +     */
> +    uint32_t dest =3D MSI_ADDR_DEST(tmp);
>       uint8_t  dest_mode =3D !!(tmp & MSI_ADDR_DESTMODE_MASK);
>       uint8_t  delivery_mode =3D (data & MSI_DATA_DELIVERY_MODE_MASK)
>           >> MSI_DATA_DELIVERY_MODE_SHIFT;
> diff --git a/xen/arch/x86/hvm/vioapic=2Ec b/xen/arch/x86/hvm/vioapic=2Ec
> index 43fb165f84=2E=2E527cc770b7 100644
> --- a/xen/arch/x86/hvm/vioapic=2Ec
> +++ b/xen/arch/x86/hvm/vioapic=2Ec
> @@ -411,7 +411,7 @@ static void ioapic_inj_irq(
>  =20
>   static void vioapic_deliver(struct hvm_vioapic *vioapic, unsigned int =
pin)
>   {
> -    uint16_t dest =3D vioapic->redirtbl[pin]=2Efields=2Edest_id;
> +    uint32_t dest =3D VIOAPIC_RTE_DEST(vioapic->redirtbl[pin]=2Ebits);
>       uint8_t dest_mode =3D vioapic->redirtbl[pin]=2Efields=2Edest_mode;
>       uint8_t delivery_mode =3D vioapic->redirtbl[pin]=2Efields=2Edelive=
ry_mode;
>       uint8_t vector =3D vioapic->redirtbl[pin]=2Efields=2Evector;
> diff --git a/xen/arch/x86/hvm/vmsi=2Ec b/xen/arch/x86/hvm/vmsi=2Ec
> index 2a4b97e2e1=2E=2E7b338c4ddc 100644
> --- a/xen/arch/x86/hvm/vmsi=2Ec
> +++ b/xen/arch/x86/hvm/vmsi=2Ec
> @@ -67,7 +67,7 @@ static void vmsi_inj_irq(
>  =20
>   int vmsi_deliver(
>       struct domain *d, int vector,
> -    uint8_t dest, uint8_t dest_mode,
> +    uint32_t dest, uint8_t dest_mode,
>       uint8_t delivery_mode, uint8_t trig_mode)
>   {
>       struct vlapic *target;
> @@ -126,7 +126,7 @@ void vmsi_deliver_pirq(struct domain *d, const struc=
t hvm_pirq_dpci *pirq_dpci)
>   }
>  =20
>   /* Return value, -1 : multi-dests, non-negative value: dest_vcpu_id */
> -int hvm_girq_dest_2_vcpu_id(struct domain *d, uint8_t dest, uint8_t des=
t_mode)
> +int hvm_girq_dest_2_vcpu_id(struct domain *d, uint32_t dest, uint8_t de=
st_mode)
>   {
>       int dest_vcpu_id =3D -1, w =3D 0;
>       struct vcpu *v;
> diff --git a/xen/arch/x86/include/asm/hvm/hvm=2Eh b/xen/arch/x86/include=
/asm/hvm/hvm=2Eh
> index e7c1364802=2E=2E884dd44c81 100644
> --- a/xen/arch/x86/include/asm/hvm/hvm=2Eh
> +++ b/xen/arch/x86/include/asm/hvm/hvm=2Eh
> @@ -294,11 +294,11 @@ uint64_t hvm_get_guest_time_fixed(const struct vcp=
u *v, uint64_t at_tsc);
>  =20
>   int vmsi_deliver(
>       struct domain *d, int vector,
> -    uint8_t dest, uint8_t dest_mode,
> +    uint32_t dest, uint8_t dest_mode,
>       uint8_t delivery_mode, uint8_t trig_mode);
>   struct hvm_pirq_dpci;
>   void vmsi_deliver_pirq(struct domain *d, const struct hvm_pirq_dpci *p=
irq_dpci);
> -int hvm_girq_dest_2_vcpu_id(struct domain *d, uint8_t dest, uint8_t des=
t_mode);
> +int hvm_girq_dest_2_vcpu_id(struct domain *d, uint32_t dest, uint8_t de=
st_mode);
>  =20
>   enum hvm_intblk
>   hvm_interrupt_blocked(struct vcpu *v, struct hvm_intack intack);
> diff --git a/xen/arch/x86/include/asm/hvm/vioapic=2Eh b/xen/arch/x86/inc=
lude/asm/hvm/vioapic=2Eh
> index 68af6dce79=2E=2E4499208bad 100644
> --- a/xen/arch/x86/include/asm/hvm/vioapic=2Eh
> +++ b/xen/arch/x86/include/asm/hvm/vioapic=2Eh
> @@ -32,6 +32,18 @@
>   #define VIOAPIC_EDGE_TRIG  0
>   #define VIOAPIC_LEVEL_TRIG 1
>  =20
> +/*
> + * Extract the destination ID from a 64-bit IO-APIC RTE, including the
> + * extended bits (55:49) used when XEN_HVM_CPUID_EXT_DEST_ID is adverti=
sed=2E
> + */
> +#define IO_APIC_REDIR_DEST_MASK         (0xffULL << 56)
> +#define IO_APIC_REDIR_EXT_DEST_MASK     (0x7fULL << 49)
> +
> +#define VIOAPIC_RTE_DEST(rte) \
> +    (MASK_EXTR((rte), IO_APIC_REDIR_DEST_MASK) | \
> +     (MASK_EXTR((rte), IO_APIC_REDIR_EXT_DEST_MASK) << \
> +      MSI_ADDR_DEST_ID_UPPER_BITS))
> +

We can probably simplify that by using vioapic_redir_entry=2Edest_id and=
=20
vioapic_redir_entry=2Eext_dest_id directly instead of reparsing it from=20
vioapic_redir_entry=2Ebits=2E

IOW, replace MASK_EXTR((rte), IO_APIC_REDIR_DEST_MASK) with=20
(rte)=2Edest_id and MASK_EXTR((rte), IO_APIC_REDIR_EXT_DEST_MASK) with=20
(rte)=2Eext_dest_id=2E So VIOAPIC_RTE_DEST() would now take=20
vioapic_redir_entry as parameter=2E

>   #define VIOAPIC_DEFAULT_BASE_ADDRESS  0xfec00000U
>   #define VIOAPIC_MEM_LENGTH            0x100
>   > diff --git a/xen/include/public/arch-x86/hvm/save=2Eh=20
b/xen/include/public/arch-x86/hvm/save=2Eh
> index 9c4bfc7ebd=2E=2E483097d940 100644
> --- a/xen/include/public/arch-x86/hvm/save=2Eh
> +++ b/xen/include/public/arch-x86/hvm/save=2Eh
> @@ -359,7 +359,9 @@ union vioapic_redir_entry
>           uint8_t trig_mode:1;
>           uint8_t mask:1;
>           uint8_t reserve:7;
> -        uint8_t reserved[4];
> +        uint8_t reserved[3];
> +        uint8_t reserved2:1;
> +        uint8_t ext_dest_id:7;
>           uint8_t dest_id;
>       } fields;
>   };

Teddy


-- 
Teddy Astie | Vates XCP-ng Developer

XCP-ng & Xen Orchestra - Vates s=
olutions

web: https://vates=2Etech
---=Part.eb.c5d8ae115ac7e90e.19dd4b3ad47.d3c253bc4b53bd84=---


From xen-devel-bounces@lists.xenproject.org Tue Apr 28 16:03:34 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 28 Apr 2026 16:03:34 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1296497.1572897 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wHktx-0003e1-Oj; Tue, 28 Apr 2026 16:03:09 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1296497.1572897; Tue, 28 Apr 2026 16:03: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 1wHktx-0003dr-M5; Tue, 28 Apr 2026 16:03:09 +0000
Received: by outflank-mailman (input) for mailman id 1296497;
 Tue, 28 Apr 2026 16:03:07 +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.19dd4d45724000f373@swg.vates.tech>)
 id 1wHktv-0003dl-KT
 for xen-devel@lists.xenproject.org; Tue, 28 Apr 2026 16:03:07 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wHktt-002Inr-T2
 for xen-devel@lists.xenproject.org; Tue, 28 Apr 2026 18:03:05 +0200
Received: from [10.42.69.7] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1) (envelope-from
 <prod-mta-13.8631fc262581453bbf619ec5b2062170.19dd4d45724000f373@swg.vates.tech>)
 id 69f0da33-2eae-0a2a0a5409dd-0a2a45078128-12
 for <xen-devel@lists.xenproject.org>; Tue, 28 Apr 2026 18:03:05 +0200
Received: from [185.255.28.34] (helo=prod-mta-13.swg-srv.net)
 by tlsNG-ef75cf.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.1)
 (envelope-from
 <prod-mta-13.8631fc262581453bbf619ec5b2062170.19dd4d45724000f373@swg.vates.tech>)
 id 69f0da39-229c-0a2a45070019-b9ff1c22af95-3
 for <xen-devel@lists.xenproject.org>; Tue, 28 Apr 2026 18:03:05 +0200
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
 19dd4d45724000f373.007 for <xen-devel@lists.xenproject.org>
 (version=TLSv1.3 cipher=TLS_AES_256_GCM_SHA384);
 Tue, 28 Apr 2026 16:02:58 +0000
Received: from [192.168.1.18] (88-175-170-134.subs.proxad.net [88.175.170.134])
 (Authenticated sender: teddy.astie)
 by mail2.vates.fr (Postfix) with ESMTPSA id 325B1863A7;
 Tue, 28 Apr 2026 18:02:57 +0200 (CEST)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@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=12w3LkEq+Kroj056n13Prx1D9hkZQ8hYxXOBZTHQMeo=;
 h=from:subject:date:message-id:to:cc:mime-version:content-type:in-reply-to:references:feedback-id;
 b=RLjcJA4lq3IXqJ2LQqCly7YKYWBphCKQLliTC16pW04/Gz3hhNZ0jRTHX3sNYBoe9z8kJqVjq
 cBBKMCiY5krUpfoTCPozYuBuy27+G2FB0uS9Fz6ZfJjER06yD2H53CP4iyy3oklToeJoM1N1FMb
 cWbqKSLpvr+HwEdO3+YLFeNPwqWatjMXnbYJw9HHaeyW6LLiXKbEyzLdRGlYOSeAYpRogT5Voap
 v5cg/Gy0hU54EGp1LJuSpjMavtGE2cfT9W4t7HMnNLieB4AwRLp1CpU9vV7HvXi2Lx1bMf1Xh7t
 Vvd9/vq8Eug9OraJyRZwkL3TCLMXKus5yez1FQ4rkz9Q==
X-Zone-Loop: ee6846bbdc250569945b10afad823a926ebe30cedc7d
x-campaign-type: default
x-transaction-id: b64b5276-2205-47be-809e-73bc80efa3a5
x-swg-uid: 01-ba4ee1b5-8084-4983-85aa-eb0b3d659da7
X-Mailer: Sweego
Message-ID:
 <1777392179.8631fc262581453bbf619ec5b2062170.19dd4d45724000f373@vates.tech>
x-swg-bid: 1777392179.8631fc262581453bbf619ec5b2062170.19dd4d45724000f373
Feedback-ID: default:8631fc262581453bbf619ec5b2062170:Sweego
x-campaign-id: default
x-client-id: 8631fc262581453bbf619ec5b2062170
X-Originating-IP: [37.26.189.201]
Date: Tue, 28 Apr 2026 18:02:56 +0200
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH v4 7/9] x86/dmop: Add XEN_DMOP_{bind,unbind}_pt_msi_irq DM
 ops
To: Julian Vetter <julian.vetter@vates.tech>, 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.pau@citrix.com>, Stefano Stabellini <sstabellini@kernel.org>,
 Bertrand Marquis <bertrand.marquis@arm.com>,
 Volodymyr Babchuk <Volodymyr_Babchuk@epam.com>
References: <20260427135406.1281424-1-julian.vetter@vates.tech>
 <1777298081.8631fc262581453bbf619ec5b2062170.19dcf388597000f373@vates.tech>
Content-Language: en-US
From: Teddy Astie <teddy.astie@vates.tech>
In-Reply-To: <1777298081.8631fc262581453bbf619ec5b2062170.19dcf388597000f373@vates.tech>
X-BM-Disclaimer: Yes
Content-Type: multipart/alternative; boundary="-=Part.114.c353c9af6e1e11b1.19dd4d4510a.1ce65ceed8f475cd=-"
X-Bm-Milter-Handled: 4ffbd6c1-ee69-4e1b-aabd-f977039bd3e2
X-Bm-Transport-Timestamp: 1777392177418
X-purgate-ID: tlsNG-ef75cf/1777392185-AE772C48-5969ADAC/0/0
X-purgate-type: clean
X-purgate-size: 17834

---=Part.114.c353c9af6e1e11b1.19dd4d4510a.1ce65ceed8f475cd=-
Content-Type: text/plain; charset=utf-8
Content-Transfer-Encoding: quoted-printable

Le 27/04/2026 =C3=A0 15:57, Julian Vetter a =C3=A9crit=C2=A0:
> Add two DM ops for MSI passthrough IRQs=2E These new DM ops take the raw
> MSI address and data fields rather than pre-decoded gflags values=2E Xen
> decodes the destination ID via msi_addr_to_gflags(), including any
> extended destination bits in address[11:5]=2E This means the device mode=
l
> does not need to understand the extended destination ID encoding, and
> simply forwards the MSI address it observes from the guest=2E
>=20
> With these DM ops in place, redirect xc_domain_update_msi_irq() and
> xc_domain_unbind_msi_irq() in libxenctrl to use
> xendevicemodel_bind_pt_msi_irq() / xendevicemodel_unbind_pt_msi_irq()
> via xch->dmod=2E The gflags/gvec arguments are translated to the raw MSI
> address and data words at the libxc level using the standard x86 MSI
> address format=2E
>=20
> Reject the PT_IRQ_TYPE_MSI sub-case in XEN_DOMCTL_bind_pt_irq and
> XEN_DOMCTL_unbind_pt_irq: all callers now go through the DM op path, so
> the domctl sub-case is fully obsolete=2E
>=20

We probably want to reflect that on XEN_DOMCTL_{un}bind_pt_irq interface=
=20
in domctl=2Eh (e=2Eg through a note saying that PT_IRQ_TYPE_MSI type is no=
w=20
deprecated and unsupported)=2E

> Signed-off-by: Julian Vetter <julian=2Evetter@vates=2Etech>
> ---
> Changes in v4:
> - Corresponds to v3 patch 5, but with feedback from Jan
> - Redirect xc_domain_{update,unbind}_msi_irq() in libxenctrl to call
>    xendevicemodel_{un}bind_pt_msi_irq() via xch->dmod, translating the
>    existing gflags/gvec arguments to raw MSI address and data in libxc
> - As suggested by Jan, reject the PT_IRQ_TYPE_MSI sub-case in
>    XEN_DOMCTL_{bind,unbind}_pt_irq with -EOPNOTSUPP -> All callers now g=
o
>    through the DM op path, making the domctl sub-case fully obsolete
> - Added the xlat=2Elst entry for dm_op_unbind_pt_msi_irq (v3 added only =
the
>    bind entry)
> ---
>   tools/include/xendevicemodel=2Eh    | 31 ++++++++++++++
>   tools/libs/ctrl/xc_domain=2Ec       | 52 +++++++++++------------
>   tools/libs/devicemodel/core=2Ec     | 38 +++++++++++++++++
>   xen/arch/x86/domctl=2Ec             | 10 ++++-
>   xen/arch/x86/hvm/dm=2Ec             | 68 +++++++++++++++++++++++++++++=
++
>   xen/drivers/passthrough/x86/hvm=2Ec |  1 -
>   xen/include/public/hvm/dm_op=2Eh    | 37 +++++++++++++++++
>   xen/include/xlat=2Elst              |  2 +
>   8 files changed, 208 insertions(+), 31 deletions(-)
>=20
> diff --git a/tools/include/xendevicemodel=2Eh b/tools/include/xendevicem=
odel=2Eh
> index 227e7fd810=2E=2Ef15b35fa33 100644
> --- a/tools/include/xendevicemodel=2Eh
> +++ b/tools/include/xendevicemodel=2Eh
> @@ -375,6 +375,37 @@ int xendevicemodel_nr_vcpus(
>    */
>   int xendevicemodel_restrict(xendevicemodel_handle *dmod, domid_t domid=
);
>  =20
> +/**
> + * This function binds a passthrough physical IRQ to a guest MSI vector
> + * using raw MSI address/data fields=2E Unlike XEN_DOMCTL_bind_pt_irq,
> + * this interface supports extended (15-bit) destination IDs by having
> + * Xen decode the MSI address internally=2E
> + *

"unlike XEN_DOMCTL_bind_pt_irq" feels a bit odd since that's not a=20
supported interface anymore for MSI=2E

> + * @parm dmod a handle to an open devicemodel interface=2E
> + * @parm domid the domain id to be serviced=2E
> + * @parm machine_irq the physical IRQ number (pirq)=2E
> + * @parm msi_addr the MSI address (includes ext=2E dest=2E ID bits [11:=
5])=2E
> + * @parm msi_data the MSI data word (bits [7:0] are the guest vector)=
=2E
> + * @parm gtable the MSI-X table base GFN, or 0 for plain MSI=2E
> + * @parm unmasked if non-zero, leave the IRQ unmasked after binding=2E
> + * @return 0 on success, -1 on failure=2E
> + */
> +int xendevicemodel_bind_pt_msi_irq(
> +    xendevicemodel_handle *dmod, domid_t domid, uint32_t machine_irq,
> +    uint64_t msi_addr, uint32_t msi_data, uint64_t gtable, int unmasked=
);
> +
> +/**
> + * This function unbinds a passthrough physical IRQ previously bound
> + * with xendevicemodel_bind_pt_msi_irq=2E
> + *
> + * @parm dmod a handle to an open devicemodel interface=2E
> + * @parm domid the domain id to be serviced=2E
> + * @parm machine_irq the physical IRQ number (pirq)=2E
> + * @return 0 on success, -1 on failure=2E
> + */
> +int xendevicemodel_unbind_pt_msi_irq(
> +    xendevicemodel_handle *dmod, domid_t domid, uint32_t machine_irq);
> +
>   #endif /* XENDEVICEMODEL_H */
>  =20
>   /*
> diff --git a/tools/libs/ctrl/xc_domain=2Ec b/tools/libs/ctrl/xc_domain=
=2Ec
> index 01c0669c88=2E=2E7e3b7a0dc6 100644
> --- a/tools/libs/ctrl/xc_domain=2Ec
> +++ b/tools/libs/ctrl/xc_domain=2Ec
> @@ -1677,6 +1677,21 @@ int xc_deassign_dt_device(
>  =20
>  =20
>  =20
> +static void xc_msi_gflags_to_addr_data(uint32_t gvec, uint32_t gflags,
> +                                        uint64_t *msi_addr, uint32_t *m=
si_data)
> +{
> +    *msi_addr =3D 0xfee00000U |
> +        ((uint64_t)((gflags & XEN_DOMCTL_VMSI_X86_DEST_ID_MASK) << 12))=
 |
> +        (gflags & XEN_DOMCTL_VMSI_X86_RH_MASK ? (1U << 3) : 0) |
> +        (gflags & XEN_DOMCTL_VMSI_X86_DM_MASK ? (1U << 2) : 0);
> +
> +    *msi_data =3D (gvec & 0xff) |
> +        (uint32_t)(((gflags & XEN_DOMCTL_VMSI_X86_DELIV_MASK) >>
> +                    (/* shift of XEN_DOMCTL_VMSI_X86_DELIV_MASK */ 12 -
> +                     /* MSI data delivery shift */ 8))) |
> +        (gflags & XEN_DOMCTL_VMSI_X86_TRIG_MASK ? (1U << 15) : 0);
> +}
> +
>   int xc_domain_update_msi_irq(
>       xc_interface *xch,
>       uint32_t domid,
> @@ -1685,22 +1700,15 @@ int xc_domain_update_msi_irq(
>       uint32_t gflags,
>       uint64_t gtable)
>   {
> -    int rc;
> -    struct xen_domctl_bind_pt_irq *bind;
> -    struct xen_domctl domctl =3D {};
> -
> -    domctl=2Ecmd =3D XEN_DOMCTL_bind_pt_irq;
> -    domctl=2Edomain =3D domid;
> +    uint64_t msi_addr;
> +    uint32_t msi_data;
> +    int unmasked =3D !!(gflags & XEN_DOMCTL_VMSI_X86_UNMASKED);
>  =20
> -    bind =3D &(domctl=2Eu=2Ebind_pt_irq);
> -    bind->irq_type =3D PT_IRQ_TYPE_MSI;
> -    bind->machine_irq =3D pirq;
> -    bind->u=2Emsi=2Egvec =3D gvec;
> -    bind->u=2Emsi=2Egflags =3D gflags;
> -    bind->u=2Emsi=2Egtable =3D gtable;
> +    xc_msi_gflags_to_addr_data(gvec, gflags, &msi_addr, &msi_data);
>  =20
> -    rc =3D do_domctl(xch, &domctl);
> -    return rc;
> +    return xendevicemodel_bind_pt_msi_irq(xch->dmod, domid, pirq,
> +                                          msi_addr, msi_data, gtable,
> +                                          unmasked);
>   }
>  =20
>   int xc_domain_unbind_msi_irq(
> @@ -1710,21 +1718,7 @@ int xc_domain_unbind_msi_irq(
>       uint32_t pirq,
>       uint32_t gflags)
>   {
> -    int rc;
> -    struct xen_domctl_bind_pt_irq *bind;
> -    struct xen_domctl domctl =3D {};
> -
> -    domctl=2Ecmd =3D XEN_DOMCTL_unbind_pt_irq;
> -    domctl=2Edomain =3D domid;
> -
> -    bind =3D &(domctl=2Eu=2Ebind_pt_irq);
> -    bind->irq_type =3D PT_IRQ_TYPE_MSI;
> -    bind->machine_irq =3D pirq;
> -    bind->u=2Emsi=2Egvec =3D gvec;
> -    bind->u=2Emsi=2Egflags =3D gflags;
> -
> -    rc =3D do_domctl(xch, &domctl);
> -    return rc;
> +    return xendevicemodel_unbind_pt_msi_irq(xch->dmod, domid, pirq);
>   }
>  =20
>   /* Pass-through: binds machine irq to guests irq */
> diff --git a/tools/libs/devicemodel/core=2Ec b/tools/libs/devicemodel/co=
re=2Ec
> index 8e619eeb0a=2E=2Eadf2c41a96 100644
> --- a/tools/libs/devicemodel/core=2Ec
> +++ b/tools/libs/devicemodel/core=2Ec
> @@ -645,6 +645,44 @@ int xendevicemodel_nr_vcpus(
>       return 0;
>   }
>  =20
> +int xendevicemodel_bind_pt_msi_irq(
> +    xendevicemodel_handle *dmod, domid_t domid, uint32_t machine_irq,
> +    uint64_t msi_addr, uint32_t msi_data, uint64_t gtable, int unmasked=
)
> +{
> +    struct xen_dm_op op;
> +    struct xen_dm_op_bind_pt_msi_irq *data;
> +
> +    memset(&op, 0, sizeof(op));
> +
> +    op=2Eop =3D XEN_DMOP_bind_pt_msi_irq;
> +    data =3D &op=2Eu=2Ebind_pt_msi_irq;
> +
> +    data->machine_irq =3D machine_irq;
> +    data->data =3D msi_data;
> +    data->addr =3D msi_addr;
> +    data->gtable =3D gtable;
> +    if ( unmasked )
> +        data->flags |=3D XEN_DMOP_MSI_FLAG_UNMASKED;
> +
> +    return xendevicemodel_op(dmod, domid, 1, &op, sizeof(op));
> +}
> +
> +int xendevicemodel_unbind_pt_msi_irq(
> +    xendevicemodel_handle *dmod, domid_t domid, uint32_t machine_irq)
> +{
> +    struct xen_dm_op op;
> +    struct xen_dm_op_unbind_pt_msi_irq *data;
> +
> +    memset(&op, 0, sizeof(op));
> +
> +    op=2Eop =3D XEN_DMOP_unbind_pt_msi_irq;
> +    data =3D &op=2Eu=2Eunbind_pt_msi_irq;
> +
> +    data->machine_irq =3D machine_irq;
> +
> +    return xendevicemodel_op(dmod, domid, 1, &op, sizeof(op));
> +}
> +

I think we want to mark=20
xc_domain_update_msi_irq/xc_domain_unbind_msi_irq as deprecated since we=
=20
implemented a newer (better) version of it in xendevicemodel; and the=20
old one is now a wrapper=2E

>   int xendevicemodel_restrict(xendevicemodel_handle *dmod, domid_t domid=
)
>   {
>       return osdep_xendevicemodel_restrict(dmod, domid);
> diff --git a/xen/arch/x86/domctl=2Ec b/xen/arch/x86/domctl=2Ec
> index bfbc35c08b=2E=2Ed80a33fe40 100644
> --- a/xen/arch/x86/domctl=2Ec
> +++ b/xen/arch/x86/domctl=2Ec
> @@ -574,6 +574,14 @@ long arch_do_domctl(
>           if ( !is_hvm_domain(d) )
>               break;
>  =20
> +        /*
> +         * PT_IRQ_TYPE_MSI is obsoleted by XEN_DMOP_bind_pt_msi_irq, wh=
ich
> +         * passes raw MSI address/data so Xen can decode extended desti=
nation
> +         * ID bits=2E Device models must use the DM op path instead=2E
> +         */
> +        if ( bind->irq_type =3D=3D PT_IRQ_TYPE_MSI )
> +            break;
> +
>           ret =3D xsm_bind_pt_irq(XSM_HOOK, d, bind);
>           if ( ret )
>               break;
> @@ -602,7 +610,7 @@ long arch_do_domctl(
>           int irq =3D domain_pirq_to_irq(d, bind->machine_irq);
>  =20
>           ret =3D -EINVAL;
> -        if ( !is_hvm_domain(d) )
> +        if ( !is_hvm_domain(d) || bind->irq_type =3D=3D PT_IRQ_TYPE_MSI=
 )
>               break;
>  =20
>           ret =3D -EPERM;
> diff --git a/xen/arch/x86/hvm/dm=2Ec b/xen/arch/x86/hvm/dm=2Ec
> index 3b53471af0=2E=2Eac70cb6405 100644
> --- a/xen/arch/x86/hvm/dm=2Ec
> +++ b/xen/arch/x86/hvm/dm=2Ec
> @@ -7,6 +7,8 @@
>   #include <xen/guest_access=2Eh>
>   #include <xen/dm=2Eh>
>   #include <xen/hypercall=2Eh>
> +#include <xen/iocap=2Eh>
> +#include <xen/iommu=2Eh>
>   #include <xen/ioreq=2Eh>
>   #include <xen/nospec=2Eh>
>   #include <xen/sched=2Eh>
> @@ -350,6 +352,8 @@ int dm_op(const struct dmop_args *op_args)
>           [XEN_DMOP_relocate_memory]                  =3D sizeof(struct =
xen_dm_op_relocate_memory),
>           [XEN_DMOP_pin_memory_cacheattr]             =3D sizeof(struct =
xen_dm_op_pin_memory_cacheattr),
>           [XEN_DMOP_nr_vcpus]                         =3D sizeof(struct =
xen_dm_op_nr_vcpus),
> +        [XEN_DMOP_bind_pt_msi_irq]                  =3D sizeof(struct x=
en_dm_op_bind_pt_msi_irq),
> +        [XEN_DMOP_unbind_pt_msi_irq]                =3D sizeof(struct x=
en_dm_op_unbind_pt_msi_irq),
>       };
>  =20
>       rc =3D rcu_lock_remote_domain_by_id(op_args->domid, &d);
> @@ -607,6 +611,68 @@ int dm_op(const struct dmop_args *op_args)
>           break;
>       }
>  =20
> +    case XEN_DMOP_bind_pt_msi_irq:
> +    {
> +        const struct xen_dm_op_bind_pt_msi_irq *data =3D
> +            &op=2Eu=2Ebind_pt_msi_irq;
> +        int irq;
> +
> +        rc =3D -EINVAL;
> +        if ( data->pad || (data->flags & ~XEN_DMOP_MSI_FLAG_UNMASKED) )
> +            break;
> +
> +        irq =3D domain_pirq_to_irq(d, data->machine_irq);
> +
> +        rc =3D -EPERM;
> +        if ( irq <=3D 0 || !irq_access_permitted(current->domain, irq) =
)
> +            break;
> +
> +        rc =3D -ESRCH;
> +        if ( is_iommu_enabled(d) )
> +        {
> +            read_lock(&d->pci_lock);
> +            rc =3D pt_irq_bind_msi(d, data->machine_irq, data->addr, da=
ta->data,
> +                                 data->gtable,
> +                                 !!(data->flags & XEN_DMOP_MSI_FLAG_UNM=
ASKED));
> +            read_unlock(&d->pci_lock);
> +        }
> +        if ( rc < 0 )
> +            printk(XENLOG_G_ERR
> +                   "XEN_DMOP_bind_pt_msi_irq: pt_irq_bind_msi failed (%=
ld) for %pd\n",
> +                   rc, d);
> +        break;
> +    }
> +
> +    case XEN_DMOP_unbind_pt_msi_irq:
> +    {
> +        const struct xen_dm_op_unbind_pt_msi_irq *data =3D
> +            &op=2Eu=2Eunbind_pt_msi_irq;
> +        struct xen_domctl_bind_pt_irq bind =3D {
> +            =2Emachine_irq =3D data->machine_irq,
> +            =2Eirq_type =3D PT_IRQ_TYPE_MSI,
> +        };
> +        int irq;
> +
> +        irq =3D domain_pirq_to_irq(d, bind=2Emachine_irq);
> +
> +        rc =3D -EPERM;
> +        if ( irq <=3D 0 || !irq_access_permitted(current->domain, irq) =
)
> +            break;
> +
> +        rc =3D -ESRCH;
> +        if ( is_iommu_enabled(d) )
> +        {
> +            read_lock(&d->pci_lock);
> +            rc =3D pt_irq_destroy_bind(d, &bind);
> +            read_unlock(&d->pci_lock);
> +        }
> +        if ( rc < 0 )
> +            printk(XENLOG_G_ERR
> +                   "XEN_DMOP_unbind_pt_msi_irq: pt_irq_destroy_bind fai=
led (%ld) for %pd\n",
> +                   rc, d);
> +        break;
> +    }
> +
>       default:
>           rc =3D ioreq_server_dm_op(&op, d, &const_op);
>           break;
> @@ -643,6 +709,8 @@ CHECK_dm_op_remote_shutdown;
>   CHECK_dm_op_relocate_memory;
>   CHECK_dm_op_pin_memory_cacheattr;
>   CHECK_dm_op_nr_vcpus;
> +CHECK_dm_op_bind_pt_msi_irq;
> +CHECK_dm_op_unbind_pt_msi_irq;
>  =20
>   int compat_dm_op(
>       domid_t domid, unsigned int nr_bufs, XEN_GUEST_HANDLE_PARAM(void) =
bufs)
> diff --git a/xen/drivers/passthrough/x86/hvm=2Ec b/xen/drivers/passthrou=
gh/x86/hvm=2Ec
> index 026534530f=2E=2E6fb4f8b7dc 100644
> --- a/xen/drivers/passthrough/x86/hvm=2Ec
> +++ b/xen/drivers/passthrough/x86/hvm=2Ec
> @@ -21,7 +21,6 @@
>   #include <xen/event=2Eh>
>   #include <xen/iommu=2Eh>
>   #include <xen/cpu=2Eh>
> -#include <xen/ioreq=2Eh>
>   #include <xen/irq=2Eh>
>   #include <asm/hvm/irq=2Eh>
>   #include <asm/io_apic=2Eh>
> diff --git a/xen/include/public/hvm/dm_op=2Eh b/xen/include/public/hvm/d=
m_op=2Eh
> index 2bf0fdc1ae=2E=2E43571b7713 100644
> --- a/xen/include/public/hvm/dm_op=2Eh
> +++ b/xen/include/public/hvm/dm_op=2Eh
> @@ -444,6 +444,41 @@ struct xen_dm_op_nr_vcpus {
>   };
>   typedef struct xen_dm_op_nr_vcpus xen_dm_op_nr_vcpus_t;
>  =20
> +#define XEN_DMOP_bind_pt_msi_irq   21
> +#define XEN_DMOP_unbind_pt_msi_irq 22
> +
> +struct xen_dm_op_bind_pt_msi_irq {
> +    /* IN - physical IRQ (pirq) */
> +    uint32_t machine_irq;
> +    /* IN - MSI data word (bits [7:0] are the guest vector) */
> +    uint32_t data;
> +    /* IN - flags */
> +    uint32_t flags;
> +#define XEN_DMOP_MSI_FLAG_UNMASKED (1u << 0)
> +    uint32_t pad;
> +    /* IN - MSI address (includes extended destination ID in bits [11:5=
]) */
> +    uint64_aligned_t addr;
> +    /* IN - MSI-X table base GFN, 0 for plain MSI */
> +    uint64_aligned_t gtable;
> +};
> +
> +typedef struct xen_dm_op_bind_pt_msi_irq xen_dm_op_bind_pt_msi_irq_t;
> +
> +struct xen_dm_op_unbind_pt_msi_irq {
> +    /* IN - physical IRQ (pirq) */
> +    uint32_t machine_irq;
> +};
> +typedef struct xen_dm_op_unbind_pt_msi_irq xen_dm_op_unbind_pt_msi_irq_=
t;
> +
> +/*
> + * XEN_DMOP_enable_ext_dest_id: Signal to Xen that this device model wi=
ll use
> + * XEN_DMOP_bind_pt_msi_irq for all passthrough MSI bindings, passing r=
aw MSI
> + * address/data fields=2E Once called, Xen will advertise
> + * XEN_HVM_CPUID_EXT_DEST_ID to the guest=2E Must be called before the =
guest
> + * starts=2E
> + */
> +#define XEN_DMOP_enable_ext_dest_id 23
> +
>   struct xen_dm_op {
>       uint32_t op;
>       uint32_t pad;
> @@ -468,6 +503,8 @@ struct xen_dm_op {
>           xen_dm_op_relocate_memory_t relocate_memory;
>           xen_dm_op_pin_memory_cacheattr_t pin_memory_cacheattr;
>           xen_dm_op_nr_vcpus_t nr_vcpus;
> +        xen_dm_op_bind_pt_msi_irq_t bind_pt_msi_irq;
> +        xen_dm_op_unbind_pt_msi_irq_t unbind_pt_msi_irq;
>       } u;
>   };
>  =20
> diff --git a/xen/include/xlat=2Elst b/xen/include/xlat=2Elst
> index 9d08dcc4bb=2E=2E6dc5f5796a 100644
> --- a/xen/include/xlat=2Elst
> +++ b/xen/include/xlat=2Elst
> @@ -98,6 +98,7 @@
>   ?	grant_entry_v2			grant_table=2Eh
>  =20
>   !	dm_op_buf			hvm/dm_op=2Eh
> +?	dm_op_bind_pt_msi_irq		hvm/dm_op=2Eh
>   ?	dm_op_create_ioreq_server	hvm/dm_op=2Eh
>   ?	dm_op_destroy_ioreq_server	hvm/dm_op=2Eh
>   ?	dm_op_get_ioreq_server_info	hvm/dm_op=2Eh
> @@ -116,6 +117,7 @@
>   ?	dm_op_set_pci_intx_level	hvm/dm_op=2Eh
>   ?	dm_op_set_pci_link_route	hvm/dm_op=2Eh
>   ?	dm_op_track_dirty_vram		hvm/dm_op=2Eh
> +?	dm_op_unbind_pt_msi_irq		hvm/dm_op=2Eh
>  =20
>   !	hvm_altp2m_set_mem_access_multi	hvm/hvm_op=2Eh
>  =20



-- 
Teddy Astie | Vates XCP-ng Developer

XCP-ng & Xen Orchestra - Vates s=
olutions

web: https://vates=2Etech
---=Part.114.c353c9af6e1e11b1.19dd4d4510a.1ce65ceed8f475cd=---


From xen-devel-bounces@lists.xenproject.org Tue Apr 28 16:31:21 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 28 Apr 2026 16:31:21 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1296514.1572907 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wHlL9-0008NB-T6; Tue, 28 Apr 2026 16:31:15 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1296514.1572907; Tue, 28 Apr 2026 16: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 1wHlL9-0008N4-PU; Tue, 28 Apr 2026 16:31:15 +0000
Received: by outflank-mailman (input) for mailman id 1296514;
 Tue, 28 Apr 2026 16:31:14 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <olekstysh@gmail.com>) id 1wHlL8-0008Mx-Jf
 for xen-devel@lists.xenproject.org; Tue, 28 Apr 2026 16:31:14 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wHlL7-008ycb-VY
 for xen-devel@lists.xenproject.org; Tue, 28 Apr 2026 18:31:13 +0200
Received: from [10.42.69.7] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <olekstysh@gmail.com>)
 id 69f0e0ce-5cb7-0a2a0a5109dd-0a2a4507d53e-6
 for <xen-devel@lists.xenproject.org>; Tue, 28 Apr 2026 18:31:13 +0200
Received: from [209.85.128.51] (helo=mail-wm1-f51.google.com)
 by tlsNG-ef75cf.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.1)
 (envelope-from <olekstysh@gmail.com>)
 id 69f0e0d1-229c-0a2a45070019-d1558033e4f7-3
 for <xen-devel@lists.xenproject.org>; Tue, 28 Apr 2026 18:31:13 +0200
Received: by mail-wm1-f51.google.com with SMTP id
 5b1f17b1804b1-488ad135063so105902265e9.0
 for <xen-devel@lists.xenproject.org>; Tue, 28 Apr 2026 09:31:13 -0700 (PDT)
Received: from [10.17.80.122] (ll-22.209.223.85.sovam.net.ua. [85.223.209.22])
 by smtp.gmail.com with ESMTPSA id
 5b1f17b1804b1-48a7b5acd00sm4244805e9.15.2026.04.28.09.31.10
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Tue, 28 Apr 2026 09:31:12 -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=20251104 header.d=gmail.com header.i="@gmail.com" header.h="Content-Transfer-Encoding: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=20251104; t=1777393873; x=1777998673; darn=lists.xenproject.org;
        h=content-transfer-encoding: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;
        bh=csOwj0EBmE4ylOTZBavg92OZiArFyAaHzc333vZFscU=;
        b=nk3KVv2oSk7+E/ltydk9gBH6CziJ9dyKM3hWgGsYB+LDXrHaKVuiwutaJ8tEP4QfFn
         dcyHRXtjSmUoflZSnZsuCbIwxCWxDx8GIcRbgq7cYwLrDsqbpsjVFtvJeZegk1lHtoOi
         vlFTNmQg/NGEvIldCuTotCUxK9rW6I3WtjbrdvOPUKAzD81rWPZobw8/Tx+uqpTuRRVB
         Bus+6uj/jBMiON/86+rEwaWjKr8titQhJhVjmI52G5L+ZwJB170Z0d5bKg5sw/5X9sZq
         OqroHD34M2y1OBVo4dv8VWqpvhJ1zIRDS/chd0w3uIC9rA9dccRsjRjWLID1SiZ5lEAV
         FgFA==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20251104; t=1777393873; x=1777998673;
        h=content-transfer-encoding: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;
        bh=csOwj0EBmE4ylOTZBavg92OZiArFyAaHzc333vZFscU=;
        b=KSjb7dKRACKkl1UN3J3IozuftVqYD4GOOcGpCK0ufGfPpwlGvUOWLfhzs0ZjOVmwjA
         lfWU7KciqLrALrQjisxmKe/puglN1SsnN8z6wDVhgA4bnQOD7Rd0sK2B1S+PK90YxhdA
         AInnzCtjHKglzPYBaPWc5pMg1n7RT0v2paNICdyHnmNyaWLIK0vO0c3RNRsVv6f6+FKa
         UToxFXXhez8rn3r8wVz7BvSW4Yv+EU/I7TPEoPnM5a0BZ159PI3bDlqej7CzpzyBT2Ro
         497hmAsViDVoogLh/YsRQ4iA3xusGUjuxHUDkAwvEnQEqc9CXBhjYmvDkctkNTvqXXC4
         yw0g==
X-Forwarded-Encrypted: i=1; AFNElJ85dgl0M/jFjQ71SaZ0MbESYnUqXlWQFMp0sq7LWAfSWX1AxS1qzRekPbwmyGPFLo2ctlZe1N+VcBw=@lists.xenproject.org
X-Gm-Message-State: AOJu0YxLldav83eITa9wwZMl9A2Bo5VJlzeSK3NY4NMAL8emG6jj1uJq
	T8HbfYssvEQWuaII2rJizjjhAsiuGE+wxeIrVqKWd7RU6e4IjQGZAHH5YgMybg==
X-Gm-Gg: AeBDieuskzBFLAi0SGXT/h/XDcy6XzTaPm4mdDfS+/FZP+sXos8/w0XcX4jT96AVs2d
	Z/4Z3rIlGyCWX0DGCZoHH2KgLMMC8z3xUbBPGE91jiOTNYvN7Y0OKj5/4rw86kvI7vuoWKPD3sY
	fog3LJEZ3xfqAapBIRiLstjZvKOK5ZJEKC/Lj9fphrL9SYNGM2mbx6jwpA6p/4akY94sC+gstOH
	8jkoqa2zsbwRSM4NTZ6SjOvoRJBFRWPNxMyTV8cQoc0RFdi02R7/BXfWpSWQ+U7oxHAfY5Ji1ru
	842Wf8M+74pr7B/0r2bHoSgm8NoG0soX+ekjywoScT3EvFiRtIpADUOkzbqeUrdNGaxcxRhde9N
	IMU3yUuoZ3QI6VudeTXECFp2fr+JenBg82niqaaoDBQT05B6g+tMNW7HaLzQ4BStzPtCvRreQ6G
	q0s8cP3dzC9tWRqYHsIw2EQBJ7hkS8d3F+h9Ix/dgqj11F9Pk6p9aHMbemb3ZqXuQcEw==
X-Received: by 2002:a05:600c:c08f:b0:489:1b10:d896 with SMTP id 5b1f17b1804b1-48a7b4d165cmr5778515e9.0.1777393872946;
        Tue, 28 Apr 2026 09:31:12 -0700 (PDT)
Message-ID: <6b78dcf3-7e4c-4568-a0fd-58d5c860e4fa@gmail.com>
Date: Tue, 28 Apr 2026 19:31:09 +0300
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH 4/4] xen/arm: its: pre-initialize ITS quirks before LPI
 setup
To: Mykola Kvach <xakep.amatop@gmail.com>, xen-devel@lists.xenproject.org
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>
References: <cover.1774431310.git.mykola_kvach@epam.com>
 <a7732487959e777ff1de318cb28c588db69fbaa1.1774431311.git.mykola_kvach@epam.com>
Content-Language: en-US
From: Oleksandr Tyshchenko <olekstysh@gmail.com>
In-Reply-To: <a7732487959e777ff1de318cb28c588db69fbaa1.1774431311.git.mykola_kvach@epam.com>
Content-Type: text/plain; charset=UTF-8; format=flowed
Content-Transfer-Encoding: 7bit
X-purgate-ID: tlsNG-ef75cf/1777393873-2B175C48-591AB5A5/0/0
X-purgate-type: clean
X-purgate-size: 8219



On 3/25/26 12:38, Mykola Kvach wrote:

Hello Mykola

> From: Mykola Kvach <mykola_kvach@epam.com>
> 
> In the current initialization flow, gicv3_init() calls gicv3_dist_init()
> before gicv3_its_init().
> 
> When LPIs are supported, gicv3_dist_init() calls
> gicv3_lpi_init_host_lpis(), which initializes host LPI state and allocates
> the boot CPU pending table before ITS quirk flags are computed. Non-boot
> CPUs allocate their pending tables later from the CPU_UP_PREPARE notifier,
> while redistributor LPI programming happens separately in
> gicv3_lpi_init_rdist().
> 
> This means the boot CPU LPI setup can observe default ITS memory attributes
> before dma-noncoherent and other ITS quirks are applied.
> 
> Introduce gicv3_its_preinit() and call it before gicv3_dist_init(). This
> keeps the actual ITS hardware initialization in gicv3_its_init(), but moves
> ITS discovery, quirk validation and quirk flag setup early enough for the
> subsequent LPI initialization to use the correct attributes.


Have you considered an alternative approach that might be less invasive? 
I am thinking of something the other way around: perhaps we could 
allocate the LPI pending table for the boot CPU later.

Would a diff below work?


---
  xen/arch/arm/gic-v3-lpi.c             | 9 +++++++++
  xen/arch/arm/gic-v3.c                 | 2 ++
  xen/arch/arm/include/asm/gic_v3_its.h | 6 ++++++
  3 files changed, 17 insertions(+)

diff --git a/xen/arch/arm/gic-v3-lpi.c b/xen/arch/arm/gic-v3-lpi.c
index 9ee338edc2..61cc45d347 100644
--- a/xen/arch/arm/gic-v3-lpi.c
+++ b/xen/arch/arm/gic-v3-lpi.c
@@ -450,6 +450,15 @@ int gicv3_lpi_init_host_lpis(unsigned int 
host_lpi_bits)

      printk("GICv3: using at most %lu LPIs on the host.\n", 
MAX_NR_HOST_LPIS);

+    return rc;
+}
+
+int gicv3_lpi_post_init_host_lpis(void)
+{
+    int rc;
+
+    ASSERT(smp_processor_id() == 0);
+
      /* Register the CPU notifier and allocate memory for the boot CPU */
      register_cpu_notifier(&cpu_nfb);
      rc = gicv3_lpi_allocate_pendtable(smp_processor_id());
diff --git a/xen/arch/arm/gic-v3.c b/xen/arch/arm/gic-v3.c
index 7f365cdbe9..8b9059c5c9 100644
--- a/xen/arch/arm/gic-v3.c
+++ b/xen/arch/arm/gic-v3.c
@@ -1981,6 +1981,8 @@ static int __init gicv3_init(void)
          res = gicv3_its_init();
          if ( res )
              panic("GICv3: ITS: initialization failed: %d\n", res);
+
+        gicv3_lpi_post_init_host_lpis();
      }

      res = gicv3_cpu_init();
diff --git a/xen/arch/arm/include/asm/gic_v3_its.h 
b/xen/arch/arm/include/asm/gic_v3_its.h
index fc5a84892c..288cc1d42f 100644
--- a/xen/arch/arm/include/asm/gic_v3_its.h
+++ b/xen/arch/arm/include/asm/gic_v3_its.h
@@ -156,6 +156,7 @@ int gicv3_lpi_init_rdist(void __iomem * rdist_base);

  /* Initialize the host structures for LPIs and the host ITSes. */
  int gicv3_lpi_init_host_lpis(unsigned int host_lpi_bits);
+int gicv3_lpi_post_init_host_lpis(void);
  int gicv3_its_init(void);

  /* Store the physical address and ID for each redistributor as read 
from DT. */
@@ -245,6 +246,11 @@ static inline int gicv3_lpi_init_host_lpis(unsigned 
int host_lpi_bits)
      return 0;
  }

+static inline int gicv3_lpi_post_init_host_lpis(void)
+{
+    return 0;
+}
+
  static inline int gicv3_its_init(void)
  {
      return 0;
-- 
2.34.1


> 
> Signed-off-by: Mykola Kvach <mykola_kvach@epam.com>
> ---
> TODO: Think about separating Redistributor/LPI attributes from ITS.
> ---
>   xen/arch/arm/gic-v3-its.c             | 36 +++++++++++++++++----------
>   xen/arch/arm/gic-v3.c                 |  7 ++++++
>   xen/arch/arm/include/asm/gic_v3_its.h |  5 ++++
>   3 files changed, 35 insertions(+), 13 deletions(-)
> 
> diff --git a/xen/arch/arm/gic-v3-its.c b/xen/arch/arm/gic-v3-its.c
> index ee432088cd..0251d91630 100644
> --- a/xen/arch/arm/gic-v3-its.c
> +++ b/xen/arch/arm/gic-v3-its.c
> @@ -63,6 +63,7 @@ struct its_quirk {
>       uint32_t flags;
>   };
>   
> +/* TODO: Separate Redistributor/LPI attributes from ITS quirks. */
>   static uint32_t __ro_after_init its_quirk_flags;
>   
>   static bool gicv3_its_match_quirk_gen4(const struct host_its *hw_its)
> @@ -148,9 +149,15 @@ static uint32_t gicv3_its_collect_quirks(const struct host_its *hw_its,
>       return flags;
>   }
>   
> -static void gicv3_its_enable_quirks(struct host_its *hw_its)
> +static void gicv3_its_enable_quirks(void)
>   {
>       const struct its_quirk *quirk;
> +    const struct host_its *hw_its;
> +
> +    if ( list_empty(&host_its_list) )
> +        return;
> +
> +    hw_its = list_first_entry(&host_its_list, struct host_its, entry);
>   
>       its_quirk_flags = gicv3_its_collect_quirks(hw_its, &quirk);
>   
> @@ -603,16 +610,10 @@ static int gicv3_its_init_single_its(struct host_its *hw_its)
>       uint64_t reg;
>       int i, ret;
>   
> -    hw_its->its_base = ioremap_nocache(hw_its->addr, hw_its->size);
> -    if ( !hw_its->its_base )
> -        return -ENOMEM;
> -
>       ret = gicv3_disable_its(hw_its);
>       if ( ret )
>           return ret;
>   
> -    gicv3_its_enable_quirks(hw_its);
> -
>       reg = readq_relaxed(hw_its->its_base + GITS_TYPER);
>       hw_its->devid_bits = GITS_TYPER_DEVICE_ID_BITS(reg);
>       hw_its->evid_bits = GITS_TYPER_EVENT_ID_BITS(reg);
> @@ -1161,6 +1162,11 @@ static void add_to_host_its_list(paddr_t addr, paddr_t size,
>       its_data->size = size;
>       its_data->dt_node = node;
>   
> +    its_data->its_base = ioremap_nocache(its_data->addr, its_data->size);
> +    if ( !its_data->its_base )
> +        panic("GICv3: Cannot map ITS frame: 0x%lx, 0x%lx\n",
> +            its_data->addr, its_data->size);
> +
>       printk("GICv3: Found ITS @0x%lx\n", addr);
>   
>       list_add_tail(&its_data->entry, &host_its_list);
> @@ -1238,16 +1244,22 @@ static void gicv3_its_acpi_init(void)
>   
>   #endif
>   
> -int gicv3_its_init(void)
> +void __init gicv3_its_preinit(void)
>   {
> -    struct host_its *hw_its;
> -    int ret;
> -
>       if ( acpi_disabled )
>           gicv3_its_dt_init(dt_interrupt_controller);
>       else
>           gicv3_its_acpi_init();
>   
> +    gicv3_its_validate_quirks();
> +    gicv3_its_enable_quirks();
> +}
> +
> +int gicv3_its_init(void)
> +{
> +    struct host_its *hw_its;
> +    int ret;
> +
>       list_for_each_entry(hw_its, &host_its_list, entry)
>       {
>           ret = gicv3_its_init_single_its(hw_its);
> @@ -1255,8 +1267,6 @@ int gicv3_its_init(void)
>               return ret;
>       }
>   
> -    gicv3_its_validate_quirks();
> -
>       return 0;
>   }
>   
> diff --git a/xen/arch/arm/gic-v3.c b/xen/arch/arm/gic-v3.c
> index bc07f97c16..6e44d23d64 100644
> --- a/xen/arch/arm/gic-v3.c
> +++ b/xen/arch/arm/gic-v3.c
> @@ -1974,6 +1974,13 @@ static int __init gicv3_init(void)
>   
>       spin_lock(&gicv3.lock);
>   
> +    if ( gic_dist_supports_lpis() )
> +        /*
> +         * Apply ITS quirks before gicv3_dist_init() sets up host LPIs,
> +         * so pending tables use the correct ITS memory attributes.
> +         */
> +        gicv3_its_preinit();
> +
>       gicv3_dist_init();
>   
>       if ( gic_dist_supports_lpis() )
> diff --git a/xen/arch/arm/include/asm/gic_v3_its.h b/xen/arch/arm/include/asm/gic_v3_its.h
> index fc5a84892c..e1d7522ea5 100644
> --- a/xen/arch/arm/include/asm/gic_v3_its.h
> +++ b/xen/arch/arm/include/asm/gic_v3_its.h
> @@ -156,6 +156,7 @@ int gicv3_lpi_init_rdist(void __iomem * rdist_base);
>   
>   /* Initialize the host structures for LPIs and the host ITSes. */
>   int gicv3_lpi_init_host_lpis(unsigned int host_lpi_bits);
> +void gicv3_its_preinit(void);
>   int gicv3_its_init(void);
>   
>   /* Store the physical address and ID for each redistributor as read from DT. */
> @@ -219,6 +220,10 @@ static inline int gicv3_its_deny_access(struct domain *d)
>       return 0;
>   }
>   
> +static inline void gicv3_its_preinit(void)
> +{
> +}
> +
>   static inline bool gicv3_its_host_has_its(void)
>   {
>       return false;



From xen-devel-bounces@lists.xenproject.org Tue Apr 28 16:35:54 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 28 Apr 2026 16:35:54 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1296524.1572915 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wHlPc-0000bP-IJ; Tue, 28 Apr 2026 16:35:52 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1296524.1572915; Tue, 28 Apr 2026 16: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 1wHlPc-0000bI-Fi; Tue, 28 Apr 2026 16:35:52 +0000
Received: by outflank-mailman (input) for mailman id 1296524;
 Tue, 28 Apr 2026 16:35:51 +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.19dd4f256ec000f373@swg.vates.tech>)
 id 1wHlPa-0000bA-L0
 for xen-devel@lists.xenproject.org; Tue, 28 Apr 2026 16:35:51 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wHlPY-00HQHA-Fh
 for xen-devel@lists.xenproject.org; Tue, 28 Apr 2026 18:35:50 +0200
Received: from [10.42.69.8] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1) (envelope-from
 <prod-mta-13.8631fc262581453bbf619ec5b2062170.19dd4f256ec000f373@swg.vates.tech>)
 id 69f0e1d6-5cb7-0a2a0a5109dd-0a2a4508b616-22
 for <xen-devel@lists.xenproject.org>; Tue, 28 Apr 2026 18:35:49 +0200
Received: from [185.255.28.34] (helo=prod-mta-13.swg-srv.net)
 by tlsNG-c1860d.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.1)
 (envelope-from
 <prod-mta-13.8631fc262581453bbf619ec5b2062170.19dd4f256ec000f373@swg.vates.tech>)
 id 69f0e1e5-63b5-0a2a45080019-b9ff1c2281b9-3
 for <xen-devel@lists.xenproject.org>; Tue, 28 Apr 2026 18:35:49 +0200
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
 19dd4f256ec000f373.007 for <xen-devel@lists.xenproject.org>
 (version=TLSv1.3 cipher=TLS_AES_256_GCM_SHA384);
 Tue, 28 Apr 2026 16:35:45 +0000
Received: from [192.168.1.18] (88-175-170-134.subs.proxad.net [88.175.170.134])
 (Authenticated sender: teddy.astie)
 by mail2.vates.fr (Postfix) with ESMTPSA id 55A0E862A0;
 Tue, 28 Apr 2026 18:35:44 +0200 (CEST)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@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=zuvaFt96K8nQtDaT1QwB77hCyeT5Ka4OspOEbO0WeYs=;
 h=from:subject:date:message-id:to:cc:mime-version:content-type:in-reply-to:references:feedback-id;
 b=m2VpxMGHVYzkWkVeTqIlgfsr2Z34dYHNmJ4u+BeK7CiqlxOK4ICKfOYcoJfmpBFGzSTbLMBJH
 nwiEXaR1BnQ2tTUZOOVUGRgzSq70ZTvwT3UeqWddtbyH0MzNFD5PFA3xsbM7QeG9rslBV5caIWs
 OJscW+wWfQCmz/p3+Pp0IeqYrmTZhlgzh6T5O0wtj7gNOkd9nh3bulQ1wumV/msrHIXzp+9LJ7x
 sT6LOzhiu1rVcMx3FS0jaGSSi/H/LAZccPbpMFB0ZnvfkWhfBQdNc2MN9rsLXWV3CzJ3baHPhUM
 xaPPlLujz1OSL/htsN34tI/sOR8wXEXUHux7wWBlNwQA==
X-Zone-Loop: 830ef50654dfe3e4fe0b3725dd9271852a19e18c8d7c
x-campaign-type: default
x-transaction-id: c3721ac5-a734-48dc-a9d6-80aeb52113f6
x-swg-uid: 01-6b259186-ee01-4924-9cf4-c6c434beb09e
X-Mailer: Sweego
Message-ID:
 <1777394145.8631fc262581453bbf619ec5b2062170.19dd4f256ec000f373@vates.tech>
x-swg-bid: 1777394145.8631fc262581453bbf619ec5b2062170.19dd4f256ec000f373
Feedback-ID: default:8631fc262581453bbf619ec5b2062170:Sweego
x-campaign-id: default
x-client-id: 8631fc262581453bbf619ec5b2062170
X-Originating-IP: [37.26.189.201]
Date: Tue, 28 Apr 2026 18:35:44 +0200
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH v4 8/9] hvm/ioreq: Negotiate extended destination ID
 support per ioreq server
To: Julian Vetter <julian.vetter@vates.tech>, 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.pau@citrix.com>, Stefano Stabellini <sstabellini@kernel.org>,
 Bertrand Marquis <bertrand.marquis@arm.com>,
 Volodymyr Babchuk <Volodymyr_Babchuk@epam.com>
References: <20260427135406.1281424-1-julian.vetter@vates.tech>
 <1777298081.8631fc262581453bbf619ec5b2062170.19dcf3886cc000f373@vates.tech>
Content-Language: en-US
From: Teddy Astie <teddy.astie@vates.tech>
In-Reply-To: <1777298081.8631fc262581453bbf619ec5b2062170.19dcf3886cc000f373@vates.tech>
X-BM-Disclaimer: Yes
Content-Type: multipart/alternative; boundary="-=Part.128.637cd1b16475e87d.19dd4f25531.aed7cbd50075e8bd=-"
X-Bm-Milter-Handled: 4ffbd6c1-ee69-4e1b-aabd-f977039bd3e2
X-Bm-Transport-Timestamp: 1777394144561
X-purgate-ID: tlsNG-c1860d/1777394149-C196DDB1-B7AE958C/0/0
X-purgate-type: clean
X-purgate-size: 21257

---=Part.128.637cd1b16475e87d.19dd4f25531.aed7cbd50075e8bd=-
Content-Type: text/plain; charset=utf-8
Content-Transfer-Encoding: quoted-printable

Le 27/04/2026 =C3=A0 15:57, Julian Vetter a =C3=A9crit=C2=A0:
> Add a per-server capability flag in XEN_DMOP_create_ioreq_server to
> signal extended destination ID support=2E Repurpose the first byte of th=
e
> existing pad[3] as a flags field, and define
> XEN_DMOP_IOREQ_SERVER_EXT_DEST_ID (bit 0) for a server to signal it will
> use XEN_DMOP_bind_pt_msi_irq for all passthrough MSI bindings=2E
>=20
> Track the flag in struct ioreq_server ext_dest_id=2E
> hvm_ext_dest_id_enabled() returns true only if all registered ioreq
> servers have opted in and at least one server is present=2E A single
> server without the flag is sufficient to suppress the feature=2E
>=20
> Lock the feature at domain creation time:
> arch_domain_creation_finished() computes the levelled result into struct
> hvm_domain=2Eext_dest_id using OR to preserve any value previously
> restored from an HVM save record=2E After creation_finished,
> arch_ioreq_server_create_check() rejects new servers that lack
> XEN_DMOP_IOREQ_SERVER_EXT_DEST_ID if the feature was already advertised
> to the guest=2E
>=20
> Persist the locked state in a new HVM_SAVE_TYPE(EXT_DEST_ID) record so
> that migration preserves the guest-visible CPUID bit independently of
> when the device model re-registers its ioreq servers on the destination
> host=2E
>=20
> On restore, ioapic_check() uses d->arch=2Ehvm=2Eext_dest_id (restored fr=
om
> the EXT_DEST_ID record) rather than the per-server dynamic check, since
> the DM has not yet re-registered its servers at that point=2E
>=20
> Update xendevicemodel_create_ioreq_server() in libxendevicemodel to
> accept the new flags parameter, remove
> xendevicemodel_enable_ext_dest_id(), and fix the
> xc_hvm_create_ioreq_server() compat wrapper to pass zero flags=2E
>=20
> Signed-off-by: Julian Vetter <julian=2Evetter@vates=2Etech>

That has somewhat already being discussed previously, but AFAIU,=20
extended destination ID is only meaningful when guest APIC IDs cannot be=
=20
represented with the "non-extended" model which can only happen in=20
practice when having more than 128 vCPUs in the guest=2E

I don't think we need to check for device model support unless the guest=
=20
can have more than 128 vCPUs, where in such case it becomes mandatory=20
(unless some form of interrupt remapping is implemented)=2E

So I would rather check if domain->max_vcpus is more than 128 and=20
require device models to implement support for extended destination ID=20
in these cases=2E

In some way, that would imply that extended destination ID is only=20
exposed to guests with domain->max_vcpus > 128=2E

Overall, what I propose would be to keep the new=20
XEN_DMOP_IOREQ_SERVER_EXT_DEST_ID flag, and if d->max_vcpus > 128, we=20
require the device model to support XEN_DMOP_IOREQ_SERVER_EXT_DEST_ID=2E

> ---
> Changes in v4:
> - As suggested by Roger, replaced XEN_DMOP_enable_ext_dest_id (v3 patch
>    6), a separate DM op the device model had to call before starting
>    vCPUs, with a flags byte repurposed from the existing pad[3] field of
>    xen_dm_op_create_ioreq_server
> - New XEN_DMOP_IOREQ_SERVER_EXT_DEST_ID flag (bit 0) lets each ioreq
>    server signal support at registration time
> - As suggested by Roger level the feature across all ioreq servers=2E
>    XEN_HVM_CPUID_EXT_DEST_ID is only advertised when every server
>    registered before arch_domain_creation_finished() sets the flag=2E A
>    single server without the flag suppresses the feature for the whole
>    domain!
> - Lock the levelled result at domain creation time and enforce it for
>    servers registered afterwards, preventing a late opt-out from breakin=
g
>    guests that already see the feature in CPUID
> - Persist the locked flag via HVM_SAVE_TYPE(EXT_DEST_ID) so that live
>    migration preserves the guest-visible CPUID bit independently of when
>    the device model registers its ioreq servers on the destination host
> ---
>   tools/include/xendevicemodel=2Eh          |  3 +-
>   tools/libs/ctrl/xc_devicemodel_compat=2Ec |  2 +-
>   tools/libs/devicemodel/core=2Ec           |  3 +-
>   xen/arch/arm/ioreq=2Ec                    |  5 ++++
>   xen/arch/x86/domain=2Ec                   | 10 +++++++
>   xen/arch/x86/hvm/ioreq=2Ec                | 37 +++++++++++++++++++++++=
++
>   xen/arch/x86/hvm/vioapic=2Ec              | 20 +++++++++++++
>   xen/arch/x86/include/asm/hvm/domain=2Eh   |  9 ++++++
>   xen/common/ioreq=2Ec                      | 13 +++++++--
>   xen/drivers/passthrough/x86/hvm=2Ec       | 13 +++++++++
>   xen/include/public/arch-x86/hvm/save=2Eh  | 17 +++++++++++-
>   xen/include/public/hvm/dm_op=2Eh          | 16 +++++++++--
>   xen/include/xen/ioreq=2Eh                 | 27 ++++++++++++++++++
>   13 files changed, 165 insertions(+), 10 deletions(-)
>=20
> diff --git a/tools/include/xendevicemodel=2Eh b/tools/include/xendevicem=
odel=2Eh
> index f15b35fa33=2E=2Ebc6764bd58 100644
> --- a/tools/include/xendevicemodel=2Eh
> +++ b/tools/include/xendevicemodel=2Eh
> @@ -44,12 +44,13 @@ int xendevicemodel_close(xendevicemodel_handle *dmod=
);
>    * @parm domid the domain id to be serviced
>    * @parm handle_bufioreq how should the IOREQ Server handle buffered
>    *                       requests (HVM_IOREQSRV_BUFIOREQ_*)?
> + * @parm flags bitmask of XEN_DMOP_IOREQ_SERVER_* capability flags=2E
>    * @parm id pointer to an ioservid_t to receive the IOREQ Server id=2E
>    * @return 0 on success, -1 on failure=2E
>    */
>   int xendevicemodel_create_ioreq_server(
>       xendevicemodel_handle *dmod, domid_t domid, int handle_bufioreq,
> -    ioservid_t *id);
> +    uint8_t flags, ioservid_t *id);
>  =20
>   /**
>    * This function retrieves the necessary information to allow an
> diff --git a/tools/libs/ctrl/xc_devicemodel_compat=2Ec b/tools/libs/ctrl=
/xc_devicemodel_compat=2Ec
> index a46011cd17=2E=2E91366e250c 100644
> --- a/tools/libs/ctrl/xc_devicemodel_compat=2Ec
> +++ b/tools/libs/ctrl/xc_devicemodel_compat=2Ec
> @@ -11,7 +11,7 @@ int xc_hvm_create_ioreq_server(
>       ioservid_t *id)
>   {
>       return xendevicemodel_create_ioreq_server(xch->dmod, domid,
> -                                              handle_bufioreq, id);
> +                                              handle_bufioreq, 0, id);
>   }
>  =20
>   int xc_hvm_get_ioreq_server_info(
> diff --git a/tools/libs/devicemodel/core=2Ec b/tools/libs/devicemodel/co=
re=2Ec
> index adf2c41a96=2E=2E49b9bf8a13 100644
> --- a/tools/libs/devicemodel/core=2Ec
> +++ b/tools/libs/devicemodel/core=2Ec
> @@ -167,7 +167,7 @@ static int xendevicemodel_op(
>  =20
>   int xendevicemodel_create_ioreq_server(
>       xendevicemodel_handle *dmod, domid_t domid, int handle_bufioreq,
> -    ioservid_t *id)
> +    uint8_t flags, ioservid_t *id)
>   {
>       struct xen_dm_op op;
>       struct xen_dm_op_create_ioreq_server *data;
> @@ -179,6 +179,7 @@ int xendevicemodel_create_ioreq_server(
>       data =3D &op=2Eu=2Ecreate_ioreq_server;
>  =20
>       data->handle_bufioreq =3D handle_bufioreq;
> +    data->flags =3D flags;
>  =20
>       rc =3D xendevicemodel_op(dmod, domid, 1, &op, sizeof(op));
>       if (rc)
> diff --git a/xen/arch/arm/ioreq=2Ec b/xen/arch/arm/ioreq=2Ec
> index b4211f0159=2E=2Ed45228717a 100644
> --- a/xen/arch/arm/ioreq=2Ec
> +++ b/xen/arch/arm/ioreq=2Ec
> @@ -201,6 +201,11 @@ void arch_ioreq_domain_init(struct domain *d)
>   {
>   }
>  =20
> +int arch_ioreq_server_create_check(const struct domain *d, uint8_t flag=
s)
> +{
> +    return 0;
> +}
> +
>   /*
>    * Local variables:
>    * mode: C
> diff --git a/xen/arch/x86/domain=2Ec b/xen/arch/x86/domain=2Ec
> index 1d458f1372=2E=2E68ff315460 100644
> --- a/xen/arch/x86/domain=2Ec
> +++ b/xen/arch/x86/domain=2Ec
> @@ -25,6 +25,7 @@
>   #include <xen/init=2Eh>
>   #include <xen/iocap=2Eh>
>   #include <xen/iommu=2Eh>
> +#include <xen/ioreq=2Eh>
>   #include <xen/irq=2Eh>
>   #include <xen/kernel=2Eh>
>   #include <xen/lib=2Eh>
> @@ -1106,7 +1107,16 @@ int arch_domain_soft_reset(struct domain *d)
>   void arch_domain_creation_finished(struct domain *d)
>   {
>       if ( is_hvm_domain(d) )
> +    {
> +        /*
> +         * Lock the extended destination ID state=2E OR preserves any v=
alue
> +         * already restored from an HVM save record (migration path)=2E=
 For a
> +         * fresh domain, ext_dest_id starts false and the dynamic check
> +         * supplies the levelled result across all registered ioreq ser=
vers=2E
> +         */
> +        d->arch=2Ehvm=2Eext_dest_id |=3D hvm_ext_dest_id_enabled(d);
>           hvm_domain_creation_finished(d);
> +    }
>   }
>  =20
>   #ifdef CONFIG_COMPAT
> diff --git a/xen/arch/x86/hvm/ioreq=2Ec b/xen/arch/x86/hvm/ioreq=2Ec
> index a5fa97e149=2E=2E894a63c522 100644
> --- a/xen/arch/x86/hvm/ioreq=2Ec
> +++ b/xen/arch/x86/hvm/ioreq=2Ec
> @@ -19,6 +19,7 @@
>  =20
>   #include <asm/hvm/emulate=2Eh>
>   #include <asm/hvm/hvm=2Eh>
> +#include <asm/hvm/support=2Eh>
>   #include <asm/hvm/vmx/vmx=2Eh>
>   #include <asm/msr=2Eh>
>  =20
> @@ -325,6 +326,42 @@ void arch_ioreq_domain_init(struct domain *d)
>       register_portio_handler(d, 0xcf8, 4, hvm_access_cf8);
>   }
>  =20
> +int arch_ioreq_server_create_check(const struct domain *d, uint8_t flag=
s)
> +{
> +    if ( !is_hvm_domain(d) || !d->creation_finished )
> +        return 0;
> +
> +    if ( d->arch=2Ehvm=2Eext_dest_id &&
> +         !(flags & XEN_DMOP_IOREQ_SERVER_EXT_DEST_ID) )
> +        return -EPERM;
> +
> +    return 0;
> +}
> +
> +static int cf_check ext_dest_id_save(struct vcpu *v, hvm_domain_context=
_t *h)
> +{
> +    struct hvm_hw_ext_dest_id s =3D {
> +        =2Eenabled =3D v->domain->arch=2Ehvm=2Eext_dest_id,
> +    };
> +
> +    return hvm_save_entry(EXT_DEST_ID, 0, h, &s);
> +}
> +
> +static int cf_check ext_dest_id_load(struct domain *d, hvm_domain_conte=
xt_t *h)
> +{
> +    struct hvm_hw_ext_dest_id s;
> +
> +    if ( hvm_load_entry(EXT_DEST_ID, h, &s) )
> +        return -EINVAL;
> +
> +    d->arch=2Ehvm=2Eext_dest_id =3D s=2Eenabled;
> +
> +    return 0;
> +}
> +
> +HVM_REGISTER_SAVE_RESTORE(EXT_DEST_ID, ext_dest_id_save, NULL,
> +                          ext_dest_id_load, 1, HVMSR_PER_DOM);
> +
>   /*
>    * Local variables:
>    * mode: C
> diff --git a/xen/arch/x86/hvm/vioapic=2Ec b/xen/arch/x86/hvm/vioapic=2Ec
> index 527cc770b7=2E=2E7d037a53e1 100644
> --- a/xen/arch/x86/hvm/vioapic=2Ec
> +++ b/xen/arch/x86/hvm/vioapic=2Ec
> @@ -24,6 +24,7 @@
>    *  Ported to xen by using virtual IRQ line=2E
>    */
>  =20
> +#include <xen/ioreq=2Eh>
>   #include <xen/types=2Eh>
>   #include <xen/mm=2Eh>
>   #include <xen/xmalloc=2Eh>
> @@ -597,6 +598,7 @@ int vioapic_get_trigger_mode(const struct domain *d,=
 unsigned int gsi)
>   static int cf_check ioapic_check(const struct domain *d, hvm_domain_co=
ntext_t *h)
>   {
>       const HVM_SAVE_TYPE(IOAPIC) *s;
> +    unsigned int i;
>  =20
>       if ( !has_vioapic(d) )
>           return -ENODEV;
> @@ -617,6 +619,24 @@ static int cf_check ioapic_check(const struct domai=
n *d, hvm_domain_context_t *h
>       if ( s->ioregsel > VIOAPIC_REG_RTE0 + (ARRAY_SIZE(s->redirtbl) - 1=
) * 2 + 1 )
>           return -EINVAL;
>  =20
> +    /*
> +     * If any RTE uses extended destination ID bits, the EXT_DEST_ID sa=
ve
> +     * record must have been loaded first (restoring d->arch=2Ehvm=2Eex=
t_dest_id)=2E
> +     * The ioreq server re-registration by the DM happens later, so use=
 the
> +     * domain-level locked flag rather than the per-server dynamic chec=
k=2E
> +     */
> +    for ( i =3D 0; i < ARRAY_SIZE(s->redirtbl); i++ )
> +    {
> +        if ( s->redirtbl[i]=2Efields=2Eext_dest_id && !d->arch=2Ehvm=2E=
ext_dest_id )
> +        {
> +            printk(XENLOG_G_ERR "HVM restore: %pd IO-APIC RTE %u has "
> +                                "extended destination ID bits set but "
> +                                "EXT_DEST_ID is not enabled\n",
> +                                d, i);
> +            return -EINVAL;
> +        }
> +    }
> +
>       return 0;
>   }
>  =20
> diff --git a/xen/arch/x86/include/asm/hvm/domain=2Eh b/xen/arch/x86/incl=
ude/asm/hvm/domain=2Eh
> index abf9bc448d=2E=2E895b2e12ba 100644
> --- a/xen/arch/x86/include/asm/hvm/domain=2Eh
> +++ b/xen/arch/x86/include/asm/hvm/domain=2Eh
> @@ -102,6 +102,15 @@ struct hvm_domain {
>  =20
>       bool                   is_s3_suspended;
>  =20
> +    /*
> +     * True when XEN_HVM_CPUID_EXT_DEST_ID was advertised to the guest=
=2E Locked
> +     * at domain creation time once every registered ioreq server has o=
pted in
> +     * via XEN_DMOP_IOREQ_SERVER_EXT_DEST_ID=2E Persisted in HVM save/r=
estore so
> +     * migration preserves the guest-visible state independently of whe=
n the
> +     * device model re-registers its ioreq servers on the destination h=
ost=2E
> +     */
> +    bool                   ext_dest_id;
> +
>       /* Compatibility setting for a bug in x2APIC LDR */
>       bool bug_x2apic_ldr_vcpu_id;
>  =20
> diff --git a/xen/common/ioreq=2Ec b/xen/common/ioreq=2Ec
> index f5fd30ce12=2E=2E56a7eb8282 100644
> --- a/xen/common/ioreq=2Ec
> +++ b/xen/common/ioreq=2Ec
> @@ -641,7 +641,7 @@ static void ioreq_server_deinit(struct ioreq_server =
*s)
>   }
>  =20
>   static int ioreq_server_create(struct domain *d, int bufioreq_handling=
,
> -                               ioservid_t *id)
> +                               uint8_t flags, ioservid_t *id)
>   {
>       struct ioreq_server *s;
>       unsigned int i;
> @@ -683,6 +683,8 @@ static int ioreq_server_create(struct domain *d, int=
 bufioreq_handling,
>           goto fail;
>       }
>  =20
> +    s->ext_dest_id =3D flags & XEN_DMOP_IOREQ_SERVER_EXT_DEST_ID;
> +
>       if ( id )
>           *id =3D i;
>  =20
> @@ -1350,11 +1352,16 @@ int ioreq_server_dm_op(struct xen_dm_op *op, str=
uct domain *d, bool *const_op)
>           *const_op =3D false;
>  =20
>           rc =3D -EINVAL;
> -        if ( data->pad[0] || data->pad[1] || data->pad[2] )
> +        if ( data->flags & ~XEN_DMOP_IOREQ_SERVER_EXT_DEST_ID ||
> +             data->pad[0] || data->pad[1] )
> +            break;
> +
> +        rc =3D arch_ioreq_server_create_check(d, data->flags);
> +        if ( rc )
>               break;
>  =20
>           rc =3D ioreq_server_create(d, data->handle_bufioreq,
> -                                 &data->id);
> +                                 data->flags, &data->id);
>           break;
>       }
>  =20
> diff --git a/xen/drivers/passthrough/x86/hvm=2Ec b/xen/drivers/passthrou=
gh/x86/hvm=2Ec
> index 6fb4f8b7dc=2E=2Ef7f7c02076 100644
> --- a/xen/drivers/passthrough/x86/hvm=2Ec
> +++ b/xen/drivers/passthrough/x86/hvm=2Ec
> @@ -21,6 +21,7 @@
>   #include <xen/event=2Eh>
>   #include <xen/iommu=2Eh>
>   #include <xen/cpu=2Eh>
> +#include <xen/ioreq=2Eh>
>   #include <xen/irq=2Eh>
>   #include <asm/hvm/irq=2Eh>
>   #include <asm/io_apic=2Eh>
> @@ -455,6 +456,18 @@ int pt_irq_create_bind(
>           uint64_t msi_addr;
>           uint32_t msi_data;
>  =20
> +        /*
> +         * Refuse the old MSI bind path when extended destination IDs a=
re
> +         * in use=2E The caller must use XEN_DMOP_bind_pt_msi_irq inste=
ad,
> +         * which passes the raw MSI address so Xen can decode the exten=
ded
> +         * bits=2E This old path only carries an 8-bit destination ID a=
nd
> +         * would silently misroute interrupts to vCPUs with APIC IDs > =
255=2E
> +         */
> +        if ( hvm_ext_dest_id_enabled(d) )
> +        {
> +            return -EPERM;
> +        }
> +
>           msi_addr =3D MSI_ADDR_HEADER |
>                      MASK_INSR(MASK_EXTR(gflags, XEN_DOMCTL_VMSI_X86_DES=
T_ID_MASK),
>                                MSI_ADDR_DEST_ID_MASK) |
> diff --git a/xen/include/public/arch-x86/hvm/save=2Eh b/xen/include/publ=
ic/arch-x86/hvm/save=2Eh
> index 483097d940=2E=2Edd70ce18c6 100644
> --- a/xen/include/public/arch-x86/hvm/save=2Eh
> +++ b/xen/include/public/arch-x86/hvm/save=2Eh
> @@ -627,12 +627,27 @@ struct hvm_msr {
>  =20
>   #define CPU_MSR_CODE  20
>  =20
> +/*
> + * HVM_SAVE_TYPE(EXT_DEST_ID): domain-level extended MSI destination ID=
 state=2E
> + *
> + * Records whether the extended destination ID feature was enabled for =
this
> + * domain at the time guest vCPUs were started=2E This allows migration=
 to
> + * preserve the setting across hosts without relying on the device mode=
l to
> + * re-register its ioreq servers before the guest's first CPUID query=
=2E
> + */
> +struct hvm_hw_ext_dest_id {
> +    uint8_t enabled;
> +    uint8_t pad[7];
> +};
> +
> +DECLARE_HVM_SAVE_TYPE(EXT_DEST_ID, 21, struct hvm_hw_ext_dest_id);
> +
>   /* Range 22 - 34 (inclusive) reserved for Amazon */
>  =20
>   /*
>    * Largest type-code in use
>    */
> -#define HVM_SAVE_CODE_MAX 20
> +#define HVM_SAVE_CODE_MAX 21
>  =20
>   #endif /* __XEN_PUBLIC_HVM_SAVE_X86_H__ */
>  =20
> diff --git a/xen/include/public/hvm/dm_op=2Eh b/xen/include/public/hvm/d=
m_op=2Eh
> index 43571b7713=2E=2E73f33b3c46 100644
> --- a/xen/include/public/hvm/dm_op=2Eh
> +++ b/xen/include/public/hvm/dm_op=2Eh
> @@ -39,18 +39,28 @@ typedef uint16_t ioservid_t;
>    * XEN_DMOP_create_ioreq_server: Instantiate a new IOREQ Server for a
>    *                               secondary emulator=2E
>    *
> - * The <id> handed back is unique for target domain=2E The valur of
> + * The <id> handed back is unique for target domain=2E The value of
>    * <handle_bufioreq> should be one of HVM_IOREQSRV_BUFIOREQ_* defined =
in
> - * hvm_op=2Eh=2E If the value is HVM_IOREQSRV_BUFIOREQ_OFF then  the bu=
ffered
> + * hvm_op=2Eh=2E If the value is HVM_IOREQSRV_BUFIOREQ_OFF then the buf=
fered
>    * ioreq ring will not be allocated and hence all emulation requests t=
o
>    * this server will be synchronous=2E
> + *
> + * If <flags> contains XEN_DMOP_IOREQ_SERVER_EXT_DEST_ID, the server wi=
ll
> + * use XEN_DMOP_bind_pt_msi_irq for all passthrough MSI bindings, passi=
ng
> + * raw MSI address/data fields so Xen can decode extended destination I=
D
> + * bits=2E Once any server sets this flag, Xen will advertise
> + * XEN_HVM_CPUID_EXT_DEST_ID to the guest=2E Must be set before the gue=
st
> + * vCPUs are started=2E
>    */
>   #define XEN_DMOP_create_ioreq_server 1
>  =20
>   struct xen_dm_op_create_ioreq_server {
>       /* IN - should server handle buffered ioreqs */
>       uint8_t handle_bufioreq;
> -    uint8_t pad[3];
> +    /* IN - server capability flags */
> +    uint8_t flags;
> +#define XEN_DMOP_IOREQ_SERVER_EXT_DEST_ID (1u << 0)
> +    uint8_t pad[2];
>       /* OUT - server id */
>       ioservid_t id;
>   };
> diff --git a/xen/include/xen/ioreq=2Eh b/xen/include/xen/ioreq=2Eh
> index e86f0869fa=2E=2Eec78b63942 100644
> --- a/xen/include/xen/ioreq=2Eh
> +++ b/xen/include/xen/ioreq=2Eh
> @@ -54,9 +54,35 @@ struct ioreq_server {
>       evtchn_port_t          bufioreq_evtchn;
>       struct rangeset        *range[NR_IO_RANGE_TYPES];
>       bool                   enabled;
> +    bool                   ext_dest_id;
>       uint8_t                bufioreq_handling;
>   };
>  =20
> +/*
> + * Return true if every registered ioreq server has opted in to extende=
d
> + * destination IDs (XEN_DMOP_IOREQ_SERVER_EXT_DEST_ID) and at least one
> + * server exists=2E A single server without the flag is enough to suppr=
ess
> + * XEN_HVM_CPUID_EXT_DEST_ID, preventing misrouted interrupts=2E
> + */
> +static inline bool hvm_ext_dest_id_enabled(const struct domain *d)
> +{
> +    unsigned int i;
> +    bool found =3D false;
> +
> +    for ( i =3D 0; i < MAX_NR_IOREQ_SERVERS; i++ )
> +    {
> +        const struct ioreq_server *s =3D d->ioreq_server=2Eserver[i];
> +
> +        if ( !s )
> +            continue;
> +        if ( !s->ext_dest_id )
> +            return false;
> +        found =3D true;
> +    }
> +
> +    return found;
> +}
> +
>   static inline paddr_t ioreq_mmio_first_byte(const ioreq_t *p)
>   {
>       return unlikely(p->df) ?
> @@ -137,6 +163,7 @@ bool arch_ioreq_server_destroy_all(struct domain *d)=
;
>   bool arch_ioreq_server_get_type_addr(const struct domain *d, const ior=
eq_t *p,
>                                        uint8_t *type, uint64_t *addr);
>   void arch_ioreq_domain_init(struct domain *d);
> +int arch_ioreq_server_create_check(const struct domain *d, uint8_t flag=
s);
>  =20
>   #endif /* __XEN_IOREQ_H__ */
>  =20

Teddy


-- 
Teddy Astie | Vates XCP-ng Developer

XCP-ng & Xen Orchestra - Vates s=
olutions

web: https://vates=2Etech
---=Part.128.637cd1b16475e87d.19dd4f25531.aed7cbd50075e8bd=---


From xen-devel-bounces@lists.xenproject.org Tue Apr 28 17:03:29 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 28 Apr 2026 17:03:29 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1296550.1572937 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wHlq6-0005Sr-Qf; Tue, 28 Apr 2026 17:03:14 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1296550.1572937; Tue, 28 Apr 2026 17:03: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 1wHlq6-0005Sk-NF; Tue, 28 Apr 2026 17:03:14 +0000
Received: by outflank-mailman (input) for mailman id 1296550;
 Tue, 28 Apr 2026 17:03:13 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <bernhard.kaindl@citrix.com>) id 1wHlq5-0005Sb-4V
 for xen-devel@lists.xenproject.org; Tue, 28 Apr 2026 17:03:13 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wHlq4-009ilz-DV
 for xen-devel@lists.xenproject.org; Tue, 28 Apr 2026 19:03:12 +0200
Received: from [10.42.69.3] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <bernhard.kaindl@citrix.com>)
 id 69f0e844-bab6-0a2a0a5309dd-0a2a45038596-34
 for <xen-devel@lists.xenproject.org>; Tue, 28 Apr 2026 19:03:12 +0200
Received: from [160.101.131.8] (helo=na1pdmzitismtp01.tibco.com)
 by tlsNG-33051d.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.1)
 (envelope-from <bernhard.kaindl@citrix.com>)
 id 69f0e84f-672d-0a2a45030019-a06583088560-3
 for <xen-devel@lists.xenproject.org>; Tue, 28 Apr 2026 19:03:11 +0200
Received: from debian.eng.citrite.net (unknown [10.113.40.46])
 by na1pdmzitismtp01.tibco.com (Postfix) with ESMTP id ED4804289E8D;
 Tue, 28 Apr 2026 13:02:20 -0400 (EDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-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: Bernhard Kaindl <bernhard.kaindl@citrix.com>
To: xen-devel@lists.xenproject.org
Cc: Bernhard Kaindl <bernhard.kaindl@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.pau@citrix.com>,
	Stefano Stabellini <sstabellini@kernel.org>
Subject: [PATCH] docs: Add modern Sphinx design with bright and dark mode
Date: Tue, 28 Apr 2026 18:02:39 +0100
Message-Id: <4e74ef79b0f1b60cc9b04d769f7a69333292c0e0.1777395235.git.bernhard.kaindl@citrix.com>
X-Mailer: git-send-email 2.39.5
MIME-Version: 1.0
Content-Transfer-Encoding: quoted-printable
X-purgate-ID: tlsNG-33051d/1777395792-2A567938-21A5DA1F/0/0
X-purgate-type: clean
X-purgate-size: 34009

Add a modern Sphinx design with bright and dark mode using a
lightweight theme with a clean design and a modern look and feel:
https://sphinx-book-theme.readthedocs.io

Use the current logos from xenproject.org, and
add two addons to enhance documentation work:

- Add support for Mermaid diagrams to render state diagrams, flowcharts,
  sequence diagrams, relationship/requirement diagrams, block diagrams,
  packet diagrams etc. for design documentation: https://mermaid.js.org
  (The NUMA design docs are a good example of using Mermaid diagrams, see b=
elow)

- Add support for using sphinx-autobuild: Auto-Renders the docs site
  on each change and refreshes the web browser:

  https://github.com/sphinx-doc/sphinx-autobuild#readme

Example use:

$ make -C docs sphinx-autobuild # Rebuilds and refreshes the browser:
...
Serving on http://127.0.0.1:8000

Signed-off-by: Bernhard Kaindl <bernhard.kaindl@citrix.com>
---
Preview:
https://bernhard-xen.readthedocs.io/en/modern-sphinx-theme

Example Mermaid diagram documenting the proposed NUMA claims hypercall desi=
gn:
https://bernhard-xen.readthedocs.io/en/claim-sets-v3-design/guest-guide/dom=
/DOMCTL_claim_memory.html
---
 .readthedocs.yaml                  |   9 +--
 docs/.gitignore                    |   1 +
 docs/Makefile                      |  16 ++++-
 docs/_static/favicon-xen-32x32.png | Bin 0 -> 1841 bytes
 docs/_static/logo-xen-reverse.svg  |  57 ++++++++++++++++
 docs/_static/logo-xen.svg          |  61 +++++++++++++++++
 docs/conf.py                       | 102 ++++++++++++++++++++++++++---
 docs/requirements.txt              |   3 +
 8 files changed, 236 insertions(+), 13 deletions(-)
 create mode 100644 docs/_static/favicon-xen-32x32.png
 create mode 100644 docs/_static/logo-xen-reverse.svg
 create mode 100644 docs/_static/logo-xen.svg
 create mode 100644 docs/requirements.txt

diff --git a/.readthedocs.yaml b/.readthedocs.yaml
index d3aff7662ebf..edf79dc3d4a1 100644
--- a/.readthedocs.yaml
+++ b/.readthedocs.yaml
@@ -9,10 +9,11 @@ build:
   tools:
     python: "latest"
=20
-  jobs:
-    post_install:
-      # Instead of needing a separate requirements.txt
-      - python -m pip install --upgrade --no-cache-dir sphinx-rtd-theme
+python:
+  install:
+    # Avoids fragmentation of the dependencies across multiple files,
+    # and makes it easier to maintain the dependencies in one place.
+    - requirements: docs/requirements.txt
=20
 sphinx:
   configuration: docs/conf.py
diff --git a/docs/.gitignore b/docs/.gitignore
index c3ce50335ae6..80c3d14ede69 100644
--- a/docs/.gitignore
+++ b/docs/.gitignore
@@ -1,3 +1,4 @@
+/.sphinx/
 /figs/*.png
 /html/
 /man/xl.cfg.5.pod
diff --git a/docs/Makefile b/docs/Makefile
index 8e68300e3b44..797694c85af8 100644
--- a/docs/Makefile
+++ b/docs/Makefile
@@ -55,6 +55,20 @@ build: html txt pdf man-pages figs
 sphinx-html:
 	sphinx-build -b html . sphinx/html
=20
+.PHONY: .sphinx
+.sphinx:
+	if [ ! -d .sphinx ]; then python -m venv .sphinx; fi
+	. .sphinx/bin/activate && pip install -r requirements.txt
+
+.PHONY: sphinx-build
+sphinx-build: .sphinx
+	. .sphinx/bin/activate && $(MAKE) sphinx-html
+
+.PHONY: sphinx-autobuild
+sphinx-autobuild: .sphinx
+	. .sphinx/bin/activate && sphinx-autobuild \
+		--re-ignore '(html|man[0-9]?|pdf|txt|Makefile)' . sphinx/html
+
 .PHONY: html
 html: $(DOC_HTML) html/index.html
=20
@@ -76,7 +90,7 @@ pdf: $(DOC_PDF)
 clean: clean-man-pages
 	$(MAKE) -C figs clean
 	rm -rf .word_count *.aux *.dvi *.bbl *.blg *.glo *.idx *~
-	rm -rf *.ilg *.log *.ind *.toc *.bak *.tmp core
+	rm -rf *.ilg *.log *.ind *.toc *.bak *.tmp core .sphinx
 	rm -rf html txt pdf sphinx/html
=20
 .PHONY: distclean
diff --git a/docs/_static/favicon-xen-32x32.png b/docs/_static/favicon-xen-=
32x32.png
new file mode 100644
index 0000000000000000000000000000000000000000..a89c3082bbe7b3bf541cd576def=
b34bf0e1b377a
GIT binary patch
literal 1841
zcmV-12hRA3P)<h;3K|Lk000e1NJLTq001BW001Be1^@s6b9#F800001b5ch_0Itp)
z=3D>Px*>q$gGR9HvFS7~q*MHK#eW_EXG6S9y12}wu-6k<XM2?B~zL@p^xg%TrjiwDT5
zV3{DGK)}c$0$L~-Fk*_M5X#~bxkR9Z;xZhGXaEC7a&v`*>^alY6L)uJ50D?0@7GMf
z*Zsct`dv-%0HTx<yWQTN=3DlQ_^dMS$1kq{CEK=3DRpYrIc239QP}LBeE=3DSH<?VA2qE--
zDo8LUQ*5)@dht9z``&?l0Pqh2>%*7t0X`_pa*im9M}h$f2%xsMHe3|N<s8S2q?A6a
zVjT`bh^#2e2Aj<`-D0ua^fkf{fX!y>z;WDm03CdV6)L0pZVAfkFW{D~91ghw0x?1|
zSP&V~4z0sdAPP-_IjUGul)<7X7Hb7`0GM)~=3DYOP>#%P7?u6h(y?m$t^KHRof1icBK
z7}2(AH*}94is&Yf`pFSO%4AvYs|Dc!z}zlL(lKAlFWx+ggI8Cf&QbFaAwZDSybt;&
zOoAwc`tB>XTCGpIuR{gE0?y%ZtRsYsaZ6LG;OD=3D-!HM#3L7{jKA>hzdj7CdyJD3d?
zxD-3?II2-mU#wn<mYRvNc%j2wL`ZSEbxLWz(P$jY0#gNGwOZ2!L13=3D;1l*xN*Wgse
zR?kL`2<X_nAG$?nAY6<EA^Pxf$~OFd<1kKFe244StDb!!h6s#IUJi>X(rW}EvdiV_
zD@oE}!mM{XoqGZFcS~Hjeh^1W^Uz96fg&ravg8*1(JHj@UfI7SiGCm$&!sqUtaLMO
z)RlP@whU>D)X3+w0AMyt`wa%e0G8{Ia2$8Ro#zeC+sHdN9yV7U?*7slt3KYtuE;mF
zuxP<7j2%7HFD_0OoWq+_X5d;`;9zCI=3DYNoi(IZ}zDWyrw`b<jc68A}mOY?BDe6#u+
zW{gD9`dDn<y30?I$z;NgEng!oHCg2;ih{N4HetcS<*?fw0Ry&8LL72eE<xv%B)2EC
z7=3DWFWQq@1~9#<EPf=3D#Yd1)hi=3Dj;<|+;n^W$Q1t8XeupN+x5nO`8^IBR%vm2|+s-{f
zGv%qLJ0W|)M5M&`)Lz9dR_99yA#K>|rJKjF?P9hnAaEv(PhE!)V>m9CT*bgaBT;*&
z5tx>GKG_|WRn@rshd1!Fe1pM&;p2KBzE3q`EgjXYa1*8U3QIqhJ8EOmMt;1d3x*~x
z^a$_Vy&vNzWkOcGDH+t<e;CoNBC+g~SvX@@3Wd55YKXvuF6%)E=3DiX{%06Y=3D)UGZG}
zaqGCs>=3D82pJzKw`)A4@xV&s0c;X!&;etOR*uyREXTDFM5muJSPg^bmZNsn!U+0fK`
z4O#%}i>9HX{x_A`FJTJOqMp|&b2ywBlra_sXA6UZ5Ck4mC%%Tv=3D@TIcf-09^I0aRA
zFR=3Dv1xYRtgkhw|cfel5|)kf0@U@Fq0yt&KVv}^Z%ypuIAU@WjbJkKL<^)d_`&|3#^
z-T4WqX}F>SU~y#;**MWiIsn@)&c~&jM^(n-(ZkRy?p5`hS^nXo70Auopr+gX=3D<UgG
zVD^l+JR+>5uPPXYyUrWn2#+aUx4^`Q=3Dm2<vkX64E|I~oEuvEO9v>0V&6`1hWOq@7X
z@UQNk=3DQw<`_ES95FI|<dwO1kc42va-W?~FpPyGr6o-%ILrQy}u0&Mwhrn*rQENFLo
zJl@U9LCy6W0hP0o>{}(7U_^K`?Afsq@o_OYRlXI6O4q3SQ(6whfVR^#-l11?g^1O0
zhL)2h9AD4lhwUc=3DDqtrhB|d_WvfsnxX){q)UgZa{OKK-<+4KcA7Ei?;M<f5`#3hKc
zboRQRkX?SI_~?c2F()ezh38q+`V+Hy*h_=3D4aQ;lzP;mTY0WyY<gTv|c6MiA1H&RAa
zqQP|=3Dks<9dI{7ng4PebIOV^A}o<4&KQ{TI9BgvUJ10#nG(RISrYw|H?!BRf}4D8#p
z2180aiy<Ad5pPM;%CK26No~h=3DyM1q7{^tHUi$8_K5x9}Gj*Uj{=3DN}^_InhrM%Zzc8
zGqGpiPkubJ*^IUMvyq-Q(3jWPj@c?3NGOGFAgO66!Le%_J=3D2g~se?%n(XCYmV#AWv
zUg0H*T3a;=3Ds}7*Dz8Ko(&8DIB__5&m#-hZCP0F5uge?Rb$=3DG^f%|0BsvQizpv}EMX
zXfDM=3D62c%;8MXFGby%g8Jq5fJ)1)H?wSOO>#&F%b-$=3D%|!G=3D;+!S<DW=3DBbbYBhzP5
z;Ed=3DR^&)!2jsW}iA^)M&Ef8!hXVvWTt>ZXX^*u`OoQF&U#R);EF#?GZPa`dAkZuOl
zxIXw;t_2b7VZvnCsKy>Aw`^tVH_r)RgJ%nK0>Y&@aNbtyXZZskChi^o>(k5);(vXd
fYJK-#KhOULd#N&rcvp8_00000NkvXXu0mjf%j0if

literal 0
HcmV?d00001

diff --git a/docs/_static/logo-xen-reverse.svg b/docs/_static/logo-xen-reve=
rse.svg
new file mode 100644
index 000000000000..562ca82ba0cd
--- /dev/null
+++ b/docs/_static/logo-xen-reverse.svg
@@ -0,0 +1,57 @@
+<svg xmlns=3D"http://www.w3.org/2000/svg" viewBox=3D"0 0 166 64" fill=3D"n=
one">
+  <g>
+    <path
+      d=3D"M117.049 21.5311C111.908 21.5311 107.752 24.1761 105.561 25.922=
8L106.19 22.5652H93.4495L88.9616 43.3506H102.279L104.553 31.2559C105.663 29=
.8406 107.513 28.0209 109.661 28.0209C113.171 28.0209 112.412 30.8217 112.1=
2 33.0325L110.32 43.0291L123.307 43.0556C123.307 43.0556 124.821 35.0875 12=
5.004 34.2124C126.823 25.4886 124.715 21.5344 117.042 21.5344L117.049 21.53=
11Z"
+      fill=3D"white" />
+    <path
+      d=3D"M88.6766 34.6499C88.6766 34.6499 93.7445 21.4781 75.0705 21.478=
1C56.3965 21.4781 54.948 34.6499 54.948 34.6499C54.948 34.6499 52.6312 44.2=
322 70.7252 44.2322C88.8191 44.2322 88.0965 37.1557 88.0965 37.1557H74.7788=
C74.7788 37.1557 73.7646 39.9565 71.0135 39.9565C68.2625 39.9565 66.5257 38=
.9257 67.2482 34.6499H88.6733H88.6766ZM73.622 26.2476C78.2524 26.2476 76.80=
73 30.5234 76.8073 30.5234H68.8458C68.8458 30.5234 68.9917 26.2476 73.6254 =
26.2476H73.622Z"
+      fill=3D"white" />
+    <path
+      d=3D"M88.6501 45.2564H95.1664C96.121 45.2564 96.9662 45.3757 97.702 =
45.6143C98.4378 45.853 99.0344 46.201 99.4985 46.6584C99.9592 47.1158 100.2=
74 47.676 100.443 48.3422C100.609 49.0084 100.612 49.7608 100.45 50.6027L10=
0.44 50.6458C100.264 51.544 99.9493 52.3329 99.4918 53.0124C99.0344 53.6918=
 98.471 54.2652 97.8014 54.7293C97.1319 55.1933 96.3729 55.5413 95.5244 55.=
77C94.6759 56.002 93.7809 56.1181 92.8396 56.1181H90.7548L89.9096 60.4601H8=
5.6968L88.6534 45.2564H88.6501ZM93.3931 52.8135C94.1455 52.8135 94.772 52.6=
345 95.2658 52.2798C95.763 51.9219 96.0713 51.438 96.1906 50.8281L96.2005 5=
0.785C96.3265 50.1287 96.2105 49.6315 95.8492 49.2901C95.4879 48.9488 94.92=
44 48.7764 94.1588 48.7764H92.1833L91.3978 52.8168H93.3964L93.3931 52.8135Z"
+      fill=3D"#85C241" />
+    <path
+      d=3D"M102.356 48.7101H106.505L106.045 51.0767C106.532 50.2812 107.11=
2 49.6448 107.785 49.1642C108.458 48.6869 109.28 48.4682 110.257 48.5112L10=
9.412 52.8566H109.064C107.977 52.8566 107.082 53.1748 106.379 53.8112C105.6=
77 54.4475 105.193 55.4485 104.928 56.8075L104.218 60.4568H100.069L102.352 =
48.7068L102.356 48.7101Z"
+      fill=3D"#85C241" />
+    <path
+      d=3D"M115.305 60.7418C114.364 60.7418 113.529 60.5827 112.803 60.264=
5C112.077 59.9463 111.477 59.5088 111.006 58.952C110.536 58.3952 110.211 57=
.7455 110.039 57.0097C109.863 56.2705 109.856 55.4817 110.022 54.6431L110.0=
32 54.6C110.194 53.7615 110.513 52.9693 110.983 52.2235C111.454 51.4778 112=
.034 50.8281 112.72 50.268C113.406 49.7111 114.182 49.2703 115.04 48.9422C1=
15.899 48.6173 116.8 48.4516 117.742 48.4516C118.683 48.4516 119.515 48.614=
 120.241 48.9422C120.967 49.267 121.567 49.7045 122.037 50.2547C122.508 50.=
8049 122.833 51.4479 123.008 52.1871C123.184 52.9262 123.187 53.7151 123.02=
5 54.5536L123.018 54.5967C122.856 55.4386 122.538 56.2308 122.067 56.9765C1=
21.596 57.7223 121.016 58.3753 120.33 58.9321C119.644 59.4889 118.869 59.92=
98 118.01 60.2579C117.152 60.5827 116.25 60.7451 115.309 60.7451L115.305 60=
.7418ZM116.031 57.2251C116.409 57.2251 116.76 57.1555 117.092 57.0196C117.4=
23 56.8837 117.715 56.6981 117.974 56.4595C118.229 56.2241 118.444 55.9457 =
118.623 55.6308C118.799 55.316 118.922 54.9845 118.991 54.6398L119.001 54.5=
967C119.071 54.2387 119.074 53.9007 119.014 53.5858C118.951 53.2709 118.832=
 52.9925 118.653 52.7572C118.474 52.5218 118.249 52.3296 117.97 52.1871C117=
.695 52.0445 117.374 51.9716 117.012 51.9716C116.651 51.9716 116.283 52.041=
2 115.952 52.1771C115.62 52.313 115.329 52.5019 115.07 52.7373C114.815 52.9=
726 114.596 53.251 114.42 53.5659C114.241 53.8808 114.122 54.2122 114.053 5=
4.5569L114.043 54.6C113.973 54.9613 113.97 55.2961 114.029 55.6143C114.092 =
55.9291 114.212 56.2076 114.391 56.4429C114.57 56.6782 114.795 56.8705 115.=
073 57.013C115.348 57.1555 115.667 57.2284 116.031 57.2284V57.2251Z"
+      fill=3D"#85C241" />
+    <path
+      d=3D"M122.949 64C122.614 64 122.316 63.9801 122.047 63.947C121.779 6=
3.9105 121.523 63.8773 121.285 63.8475L121.815 61.1097C121.898 61.123 121.9=
87 61.1329 122.084 61.1329H122.355C122.76 61.1329 123.085 61.0302 123.327 6=
0.828C123.568 60.6258 123.738 60.2712 123.837 59.764L125.985 48.7101H130.13=
5L127.954 59.9397C127.811 60.6788 127.592 61.3086 127.304 61.829C127.012 62=
.3494 126.658 62.7703 126.24 63.0885C125.822 63.4067 125.335 63.6387 124.78=
5 63.7845C124.231 63.9304 123.622 64.0033 122.952 64.0033L122.949 64ZM126.6=
97 44.6068H131.02L130.43 47.6462H126.107L126.697 44.6068Z"
+      fill=3D"#85C241" />
+    <path
+      d=3D"M135.938 60.7418C135.01 60.7418 134.192 60.5927 133.482 60.2977=
C132.773 60.0027 132.19 59.5884 131.735 59.0613C131.281 58.5343 130.97 57.8=
913 130.807 57.1389C130.642 56.3865 130.648 55.5546 130.827 54.6431L130.837=
 54.6C131.003 53.7449 131.305 52.9461 131.739 52.2003C132.173 51.4545 132.7=
1 50.8049 133.346 50.2447C133.983 49.6879 134.695 49.2504 135.481 48.9322C1=
36.266 48.614 137.095 48.4549 137.963 48.4549C138.978 48.4549 139.823 48.62=
72 140.502 48.9753C141.179 49.3233 141.706 49.7906 142.077 50.3773C142.448 =
50.964 142.677 51.6435 142.766 52.4191C142.856 53.1947 142.813 54.0167 142.=
644 54.8851C142.617 55.0143 142.591 55.1535 142.564 55.2994C142.534 55.4452=
 142.501 55.591 142.458 55.7336H134.596C134.629 56.3865 134.835 56.8704 135=
.216 57.1886C135.597 57.5068 136.111 57.6659 136.764 57.6659C137.254 57.665=
9 137.728 57.5731 138.176 57.3842C138.623 57.1953 139.1 56.8937 139.601 56.=
4727L141.513 58.362C140.807 59.0879 139.995 59.6646 139.08 60.0988C138.162 =
60.533 137.118 60.7484 135.945 60.7484L135.938 60.7418ZM139.017 53.6189C139=
.071 52.9693 138.954 52.4489 138.666 52.0644C138.378 51.6799 137.954 51.487=
7 137.387 51.4877C136.82 51.4877 136.353 51.6799 135.928 52.0644C135.507 52=
.4489 135.173 52.966 134.931 53.6189H139.014H139.017Z"
+      fill=3D"#85C241" />
+    <path
+      d=3D"M148.925 60.7418C148.043 60.7418 147.254 60.5794 146.565 60.254=
6C145.875 59.9297 145.312 59.4922 144.878 58.942C144.443 58.3918 144.142 57=
.7455 143.973 56.9964C143.807 56.2506 143.804 55.4651 143.963 54.6398L143.9=
73 54.5967C144.132 53.7714 144.44 52.9858 144.897 52.2401C145.355 51.4943 1=
45.912 50.8447 146.571 50.2845C147.231 49.7277 147.977 49.2868 148.815 48.9=
587C149.654 48.6339 150.535 48.4715 151.463 48.4715C152.68 48.4715 153.648 =
48.7101 154.364 49.1874C155.083 49.6647 155.617 50.3011 155.968 51.0999L152=
.763 53.1847C152.547 52.7936 152.299 52.4887 152.007 52.2732C151.715 52.054=
5 151.318 51.9484 150.811 51.9484C150.479 51.9484 150.158 52.018 149.846 52=
.1539C149.538 52.2931 149.256 52.4787 149.007 52.7174C148.759 52.956 148.54=
7 53.2311 148.368 53.5427C148.192 53.8542 148.069 54.189 147.996 54.5536L14=
7.987 54.5967C147.914 54.9745 147.904 55.3259 147.957 55.6507C148.01 55.975=
5 148.112 56.2573 148.272 56.4959C148.427 56.7346 148.636 56.9235 148.901 5=
7.0594C149.163 57.1986 149.468 57.2649 149.816 57.2649C150.31 57.2649 150.7=
48 57.1555 151.129 56.9401C151.51 56.7213 151.904 56.4263 152.312 56.0485L1=
54.682 58.0471C153.973 58.8592 153.16 59.5088 152.239 60.0027C151.318 60.49=
32 150.214 60.7418 148.925 60.7418Z"
+      fill=3D"#85C241" />
+    <path
+      d=3D"M160.313 60.6987C159.06 60.6987 158.146 60.4004 157.562 59.8071=
C156.979 59.2138 156.823 58.2128 157.098 56.8108L158.026 52.0313H156.637L15=
7.284 48.7068H158.673L159.253 45.7304H163.402L162.822 48.7068H165.56L164.91=
4 52.0313H162.179L161.407 56.0054C161.324 56.4263 161.361 56.7246 161.513 5=
6.9069C161.666 57.0892 161.931 57.1787 162.309 57.1787C162.584 57.1787 162.=
859 57.1423 163.134 57.0693C163.409 56.9964 163.681 56.9036 163.949 56.7876=
L163.319 60.0226C162.905 60.2248 162.444 60.3872 161.944 60.5098C161.443 60=
.6324 160.9 60.6954 160.323 60.6954L160.313 60.6987Z"
+      fill=3D"#85C241" />
+    <path
+      d=3D"M70.2081 13.868H49.0747L37.1027 23.0359L30.1091 13.868H13.1719L=
26.4101 31.2261L0 51.4579H21.1367L34.2025 41.448L41.8358 51.4579H58.773L44.=
8951 33.2579L70.2081 13.868Z"
+      fill=3D"white" />
+    <path
+      d=3D"M21.6537 51.0601C18.0078 48.677 15.0678 45.3128 13.2083 41.3387=
L6.77819 46.264C7.77254 48.1135 8.94588 49.8536 10.275 51.4579H21.1334L21.6=
504 51.0601H21.6537Z"
+      fill=3D"white" />
+    <path d=3D"M15.7638 17.262C16.6985 16.029 17.7526 14.8921 18.9093 13.8=
68H13.1752L15.7638 17.262Z" fill=3D"white" />
+    <path
+      d=3D"M46.6551 51.4579H58.6537C58.6736 51.4314 58.6968 51.4082 58.716=
7 51.385L53.7084 44.8189C51.8457 47.4904 49.4426 49.7575 46.6551 51.4579Z"
+      fill=3D"white" />
+    <path
+      d=3D"M34.4643 54.8685C30.056 54.8685 25.9328 53.6488 22.4094 51.5341=
L21.6438 52.1208L21.4184 52.2931H11.0009C16.7549 58.7531 25.1307 62.8267 34=
.4643 62.8267C43.798 62.8267 52.1738 58.7531 57.9278 52.2931H45.147C41.9419=
 53.9371 38.3125 54.8685 34.4643 54.8685Z"
+      fill=3D"#85C241" />
+    <path
+      d=3D"M56.771 24.1595L63.3736 19.1016C62.588 17.2587 61.6334 15.5053 =
60.5264 13.8646H50.0227C53.1085 16.6024 55.4684 20.1423 56.7744 24.1595H56.=
771Z"
+      fill=3D"#ffffff" />
+    <path
+      d=3D"M11.0075 31.415C11.0075 26.4134 12.5786 21.7797 15.2468 17.9713=
L12.5057 14.3751L11.4782 13.0294H19.907C23.9076 9.85737 28.9622 7.95815 34.=
461 7.95815C39.9598 7.95815 45.0178 9.85737 49.0151 13.0294H59.9231C54.2222=
 5.1375 44.9449 0 34.4643 0C17.1162 0 3.04935 14.0635 3.04935 31.415C3.0493=
5 36.4829 4.25584 41.269 6.39039 45.505L12.857 40.5531C11.6671 37.7457 11.0=
108 34.6566 11.0108 31.415H11.0075Z"
+      fill=3D"#85C241" />
+    <path
+      d=3D"M62.2566 23.4403C63.0156 23.0259 63.7812 22.6746 64.5436 22.382=
9C64.2917 21.5443 64.0099 20.719 63.6918 19.9136L57.0263 25.0213C57.2251 25=
.724 57.3909 26.4399 57.5234 27.1658C58.7531 25.7704 60.3574 24.481 62.2533=
 23.4436L62.2566 23.4403Z"
+      fill=3D"#85C241" />
+    <path
+      d=3D"M56.0286 40.6293C55.5115 41.8325 54.905 42.9893 54.2023 44.0797=
L59.2503 50.7021C60.765 48.7565 62.0478 46.622 63.0786 44.3482C60.1021 43.6=
721 57.6063 42.3197 56.0286 40.6293Z"
+      fill=3D"#85C241" />
+  </g>
+
+</svg>
\ No newline at end of file
diff --git a/docs/_static/logo-xen.svg b/docs/_static/logo-xen.svg
new file mode 100644
index 000000000000..8e04555c257b
--- /dev/null
+++ b/docs/_static/logo-xen.svg
@@ -0,0 +1,61 @@
+<svg xmlns=3D"http://www.w3.org/2000/svg" viewBox=3D"0 0 166 64" fill=3D"n=
one">
+  <g clip-path=3D"url(#clip0_125_42723)">
+    <path
+      d=3D"M117.049 21.5311C111.908 21.5311 107.752 24.1761 105.561 25.922=
8L106.19 22.5652H93.4495L88.9616 43.3506H102.279L104.553 31.2559C105.663 29=
.8406 107.513 28.0209 109.661 28.0209C113.171 28.0209 112.412 30.8217 112.1=
2 33.0325L110.32 43.0291L123.307 43.0556C123.307 43.0556 124.821 35.0875 12=
5.004 34.2124C126.823 25.4886 124.715 21.5344 117.042 21.5344L117.049 21.53=
11Z"
+      fill=3D"black" />
+    <path
+      d=3D"M88.6766 34.6499C88.6766 34.6499 93.7445 21.4781 75.0705 21.478=
1C56.3965 21.4781 54.948 34.6499 54.948 34.6499C54.948 34.6499 52.6312 44.2=
322 70.7252 44.2322C88.8191 44.2322 88.0965 37.1557 88.0965 37.1557H74.7788=
C74.7788 37.1557 73.7646 39.9565 71.0135 39.9565C68.2625 39.9565 66.5257 38=
.9257 67.2482 34.6499H88.6733H88.6766ZM73.622 26.2476C78.2524 26.2476 76.80=
73 30.5234 76.8073 30.5234H68.8458C68.8458 30.5234 68.9917 26.2476 73.6254 =
26.2476H73.622Z"
+      fill=3D"black" />
+    <path
+      d=3D"M88.6501 45.2564H95.1664C96.121 45.2564 96.9662 45.3757 97.702 =
45.6143C98.4378 45.853 99.0344 46.201 99.4985 46.6584C99.9592 47.1158 100.2=
74 47.676 100.443 48.3422C100.609 49.0084 100.612 49.7608 100.45 50.6027L10=
0.44 50.6458C100.264 51.544 99.9493 52.3329 99.4918 53.0124C99.0344 53.6918=
 98.471 54.2652 97.8014 54.7293C97.1319 55.1933 96.3729 55.5413 95.5244 55.=
77C94.6759 56.002 93.7809 56.1181 92.8396 56.1181H90.7548L89.9096 60.4601H8=
5.6968L88.6534 45.2564H88.6501ZM93.3931 52.8135C94.1455 52.8135 94.772 52.6=
345 95.2658 52.2798C95.763 51.9219 96.0713 51.438 96.1906 50.8281L96.2005 5=
0.785C96.3265 50.1287 96.2105 49.6315 95.8492 49.2901C95.4879 48.9488 94.92=
44 48.7764 94.1588 48.7764H92.1833L91.3978 52.8168H93.3964L93.3931 52.8135Z"
+      fill=3D"#85C241" />
+    <path
+      d=3D"M102.356 48.7101H106.505L106.045 51.0767C106.532 50.2812 107.11=
2 49.6448 107.785 49.1642C108.458 48.6869 109.28 48.4682 110.257 48.5112L10=
9.412 52.8566H109.064C107.977 52.8566 107.082 53.1748 106.379 53.8112C105.6=
77 54.4475 105.193 55.4485 104.928 56.8075L104.218 60.4568H100.069L102.352 =
48.7068L102.356 48.7101Z"
+      fill=3D"#85C241" />
+    <path
+      d=3D"M115.305 60.7418C114.364 60.7418 113.529 60.5827 112.803 60.264=
5C112.077 59.9463 111.477 59.5088 111.006 58.952C110.536 58.3952 110.211 57=
.7455 110.039 57.0097C109.863 56.2705 109.856 55.4817 110.022 54.6431L110.0=
32 54.6C110.194 53.7615 110.513 52.9693 110.983 52.2235C111.454 51.4778 112=
.034 50.8281 112.72 50.268C113.406 49.7111 114.182 49.2703 115.04 48.9422C1=
15.899 48.6173 116.8 48.4516 117.742 48.4516C118.683 48.4516 119.515 48.614=
 120.241 48.9422C120.967 49.267 121.567 49.7045 122.037 50.2547C122.508 50.=
8049 122.833 51.4479 123.008 52.1871C123.184 52.9262 123.187 53.7151 123.02=
5 54.5536L123.018 54.5967C122.856 55.4386 122.538 56.2308 122.067 56.9765C1=
21.596 57.7223 121.016 58.3753 120.33 58.9321C119.644 59.4889 118.869 59.92=
98 118.01 60.2579C117.152 60.5827 116.25 60.7451 115.309 60.7451L115.305 60=
.7418ZM116.031 57.2251C116.409 57.2251 116.76 57.1555 117.092 57.0196C117.4=
23 56.8837 117.715 56.6981 117.974 56.4595C118.229 56.2241 118.444 55.9457 =
118.623 55.6308C118.799 55.316 118.922 54.9845 118.991 54.6398L119.001 54.5=
967C119.071 54.2387 119.074 53.9007 119.014 53.5858C118.951 53.2709 118.832=
 52.9925 118.653 52.7572C118.474 52.5218 118.249 52.3296 117.97 52.1871C117=
.695 52.0445 117.374 51.9716 117.012 51.9716C116.651 51.9716 116.283 52.041=
2 115.952 52.1771C115.62 52.313 115.329 52.5019 115.07 52.7373C114.815 52.9=
726 114.596 53.251 114.42 53.5659C114.241 53.8808 114.122 54.2122 114.053 5=
4.5569L114.043 54.6C113.973 54.9613 113.97 55.2961 114.029 55.6143C114.092 =
55.9291 114.212 56.2076 114.391 56.4429C114.57 56.6782 114.795 56.8705 115.=
073 57.013C115.348 57.1555 115.667 57.2284 116.031 57.2284V57.2251Z"
+      fill=3D"#85C241" />
+    <path
+      d=3D"M122.949 64C122.614 64 122.316 63.9801 122.047 63.947C121.779 6=
3.9105 121.523 63.8773 121.285 63.8475L121.815 61.1097C121.898 61.123 121.9=
87 61.1329 122.084 61.1329H122.355C122.76 61.1329 123.085 61.0302 123.327 6=
0.828C123.568 60.6258 123.738 60.2712 123.837 59.764L125.985 48.7101H130.13=
5L127.954 59.9397C127.811 60.6788 127.592 61.3086 127.304 61.829C127.012 62=
.3494 126.658 62.7703 126.24 63.0885C125.822 63.4067 125.335 63.6387 124.78=
5 63.7845C124.231 63.9304 123.622 64.0033 122.952 64.0033L122.949 64ZM126.6=
97 44.6068H131.02L130.43 47.6462H126.107L126.697 44.6068Z"
+      fill=3D"#85C241" />
+    <path
+      d=3D"M135.938 60.7418C135.01 60.7418 134.192 60.5927 133.482 60.2977=
C132.773 60.0027 132.19 59.5884 131.735 59.0613C131.281 58.5343 130.97 57.8=
913 130.807 57.1389C130.642 56.3865 130.648 55.5546 130.827 54.6431L130.837=
 54.6C131.003 53.7449 131.305 52.9461 131.739 52.2003C132.173 51.4545 132.7=
1 50.8049 133.346 50.2447C133.983 49.6879 134.695 49.2504 135.481 48.9322C1=
36.266 48.614 137.095 48.4549 137.963 48.4549C138.978 48.4549 139.823 48.62=
72 140.502 48.9753C141.179 49.3233 141.706 49.7906 142.077 50.3773C142.448 =
50.964 142.677 51.6435 142.766 52.4191C142.856 53.1947 142.813 54.0167 142.=
644 54.8851C142.617 55.0143 142.591 55.1535 142.564 55.2994C142.534 55.4452=
 142.501 55.591 142.458 55.7336H134.596C134.629 56.3865 134.835 56.8704 135=
.216 57.1886C135.597 57.5068 136.111 57.6659 136.764 57.6659C137.254 57.665=
9 137.728 57.5731 138.176 57.3842C138.623 57.1953 139.1 56.8937 139.601 56.=
4727L141.513 58.362C140.807 59.0879 139.995 59.6646 139.08 60.0988C138.162 =
60.533 137.118 60.7484 135.945 60.7484L135.938 60.7418ZM139.017 53.6189C139=
.071 52.9693 138.954 52.4489 138.666 52.0644C138.378 51.6799 137.954 51.487=
7 137.387 51.4877C136.82 51.4877 136.353 51.6799 135.928 52.0644C135.507 52=
.4489 135.173 52.966 134.931 53.6189H139.014H139.017Z"
+      fill=3D"#85C241" />
+    <path
+      d=3D"M148.925 60.7418C148.043 60.7418 147.254 60.5794 146.565 60.254=
6C145.875 59.9297 145.312 59.4922 144.878 58.942C144.443 58.3918 144.142 57=
.7455 143.973 56.9964C143.807 56.2506 143.804 55.4651 143.963 54.6398L143.9=
73 54.5967C144.132 53.7714 144.44 52.9858 144.897 52.2401C145.355 51.4943 1=
45.912 50.8447 146.571 50.2845C147.231 49.7277 147.977 49.2868 148.815 48.9=
587C149.654 48.6339 150.535 48.4715 151.463 48.4715C152.68 48.4715 153.648 =
48.7101 154.364 49.1874C155.083 49.6647 155.617 50.3011 155.968 51.0999L152=
.763 53.1847C152.547 52.7936 152.299 52.4887 152.007 52.2732C151.715 52.054=
5 151.318 51.9484 150.811 51.9484C150.479 51.9484 150.158 52.018 149.846 52=
.1539C149.538 52.2931 149.256 52.4787 149.007 52.7174C148.759 52.956 148.54=
7 53.2311 148.368 53.5427C148.192 53.8542 148.069 54.189 147.996 54.5536L14=
7.987 54.5967C147.914 54.9745 147.904 55.3259 147.957 55.6507C148.01 55.975=
5 148.112 56.2573 148.272 56.4959C148.427 56.7346 148.636 56.9235 148.901 5=
7.0594C149.163 57.1986 149.468 57.2649 149.816 57.2649C150.31 57.2649 150.7=
48 57.1555 151.129 56.9401C151.51 56.7213 151.904 56.4263 152.312 56.0485L1=
54.682 58.0471C153.973 58.8592 153.16 59.5088 152.239 60.0027C151.318 60.49=
32 150.214 60.7418 148.925 60.7418Z"
+      fill=3D"#85C241" />
+    <path
+      d=3D"M160.313 60.6987C159.06 60.6987 158.146 60.4004 157.562 59.8071=
C156.979 59.2138 156.823 58.2128 157.098 56.8108L158.026 52.0313H156.637L15=
7.284 48.7068H158.673L159.253 45.7304H163.402L162.822 48.7068H165.56L164.91=
4 52.0313H162.179L161.407 56.0054C161.324 56.4263 161.361 56.7246 161.513 5=
6.9069C161.666 57.0892 161.931 57.1787 162.309 57.1787C162.584 57.1787 162.=
859 57.1423 163.134 57.0693C163.409 56.9964 163.681 56.9036 163.949 56.7876=
L163.319 60.0226C162.905 60.2248 162.444 60.3872 161.944 60.5098C161.443 60=
.6324 160.9 60.6954 160.323 60.6954L160.313 60.6987Z"
+      fill=3D"#85C241" />
+    <path
+      d=3D"M70.2081 13.868H49.0747L37.1027 23.0359L30.1091 13.868H13.1719L=
26.4101 31.2261L0 51.4579H21.1367L34.2025 41.448L41.8358 51.4579H58.773L44.=
8951 33.2579L70.2081 13.868Z"
+      fill=3D"black" />
+    <path
+      d=3D"M21.6537 51.0601C18.0078 48.677 15.0678 45.3128 13.2083 41.3387=
L6.77819 46.264C7.77254 48.1135 8.94588 49.8536 10.275 51.4579H21.1334L21.6=
504 51.0601H21.6537Z"
+      fill=3D"black" />
+    <path d=3D"M15.7638 17.262C16.6985 16.029 17.7526 14.8921 18.9093 13.8=
68H13.1752L15.7638 17.262Z" fill=3D"black" />
+    <path
+      d=3D"M46.6551 51.4579H58.6537C58.6736 51.4314 58.6968 51.4082 58.716=
7 51.385L53.7084 44.8189C51.8457 47.4904 49.4426 49.7575 46.6551 51.4579Z"
+      fill=3D"black" />
+    <path
+      d=3D"M34.4643 54.8685C30.056 54.8685 25.9328 53.6488 22.4094 51.5341=
L21.6438 52.1208L21.4184 52.2931H11.0009C16.7549 58.7531 25.1307 62.8267 34=
.4643 62.8267C43.798 62.8267 52.1738 58.7531 57.9278 52.2931H45.147C41.9419=
 53.9371 38.3125 54.8685 34.4643 54.8685Z"
+      fill=3D"#85C241" />
+    <path
+      d=3D"M56.771 24.1595L63.3736 19.1016C62.588 17.2587 61.6334 15.5053 =
60.5264 13.8646H50.0227C53.1085 16.6024 55.4684 20.1423 56.7744 24.1595H56.=
771Z"
+      fill=3D"black" />
+    <path
+      d=3D"M11.0075 31.415C11.0075 26.4134 12.5786 21.7797 15.2468 17.9713=
L12.5057 14.3751L11.4782 13.0294H19.907C23.9076 9.85737 28.9622 7.95815 34.=
461 7.95815C39.9598 7.95815 45.0178 9.85737 49.0151 13.0294H59.9231C54.2222=
 5.1375 44.9449 0 34.4643 0C17.1162 0 3.04935 14.0635 3.04935 31.415C3.0493=
5 36.4829 4.25584 41.269 6.39039 45.505L12.857 40.5531C11.6671 37.7457 11.0=
108 34.6566 11.0108 31.415H11.0075Z"
+      fill=3D"#85C241" />
+    <path
+      d=3D"M62.2566 23.4403C63.0156 23.0259 63.7812 22.6746 64.5436 22.382=
9C64.2917 21.5443 64.0099 20.719 63.6918 19.9136L57.0263 25.0213C57.2251 25=
.724 57.3909 26.4399 57.5234 27.1658C58.7531 25.7704 60.3574 24.481 62.2533=
 23.4436L62.2566 23.4403Z"
+      fill=3D"#85C241" />
+    <path
+      d=3D"M56.0286 40.6293C55.5115 41.8325 54.905 42.9893 54.2023 44.0797=
L59.2503 50.7021C60.765 48.7565 62.0478 46.622 63.0786 44.3482C60.1021 43.6=
721 57.6063 42.3197 56.0286 40.6293Z"
+      fill=3D"#85C241" />
+  </g>
+  <defs>
+    <clipPath id=3D"clip0_125_42723">
+      <rect width=3D"165.553" height=3D"64" fill=3D"white" />
+    </clipPath>
+  </defs>
+</svg>
\ No newline at end of file
diff --git a/docs/conf.py b/docs/conf.py
index 2fb8bafe6589..fbcffa5efa79 100644
--- a/docs/conf.py
+++ b/docs/conf.py
@@ -56,12 +56,75 @@ finally:
=20
 # If your documentation needs a minimal Sphinx version, state it here.
 #
-needs_sphinx =3D '1.4'
+needs_sphinx =3D "7.0"
=20
 # Add any Sphinx extension module names here, as strings. They can be
 # extensions coming with Sphinx (named 'sphinx.ext.*') or your custom
 # ones.
-extensions =3D []
+extensions =3D ["sphinx.ext.autosectionlabel"]
+
+try:
+    import sphinxcontrib.mermaid
+
+    extensions.append("sphinxcontrib.mermaid")
+except ImportError:
+    pass
+
+
+def on_build_finished(app, exception):
+    if exception:
+        return
+
+    common_install =3D """
+        Alternatively, you can use pipx to install sphinx and the needed
+        extras in an isolated environment with:\n
+            pipx install sphinx
+            pipx runpip sphinx install -r docs/requirements.txt\n
+        Or, use `make -C docs sphinx-env-build` to build the documentation
+        in a suitable Python environment with all dependencies.\n"""
+
+    # See https://sphinx-book-theme.readthedocs.io for more info:
+    if not sys.modules.get("sphinx_book_theme"):
+        sys.stderr.write("""
+        To fix rendering the HTML theme, install `sphinx_book_theme` in
+        your Python venv. On Debian-based systems, you can install it with=
:\n
+            sudo apt install python3-sphinx-book-theme""" + common_install)
+
+    # See https://sphinxcontrib-mermaid-demo.readthedocs.io
+    # or  https://github.com/mgaitan/sphinxcontrib-mermaid for more info:
+    if not sys.modules.get("sphinxcontrib.mermaid"):
+        sys.stderr.write("""
+        To fix rendering mermaid diagrams, install `sphinxcontrib.mermaid`=
 in
+        your Python venv. On Debian-based systems, you can install it with=
:\n
+            sudo apt install python3-sphinxcontrib-mermaid""" + common_ins=
tall)
+
+    # See https://github.com/sphinx-doc/sphinx-autobuild#readme for more i=
nfo:
+    try:
+        import sphinx_autobuild
+    except ImportError:
+        print("The generated documentation is available at:")
+        print(f"file://{app.outdir}/index.html")
+        print("You can also serve it locally with:")
+        print(f"  (cd {app.outdir}; python -m http.server)")
+        print("To auto-rebuild and auto-refresh on changes, install")
+        print("`sphinx-autobuild` in your Python venv and run:")
+        print(" sphinx-autobuild docs docs/sphinx/html")
+        print("Or simply use `make -C docs sphinx-autobuild` to build & se=
rve")
+
+
+def setup(app):
+    app.connect("build-finished", on_build_finished)
+
+
+# Extension options
+
+# sphinxcontrib.mermaid
+mermaid_init_js =3D """
+mermaid.initialize({ startOnLoad: true });
+"""
+
+# sphinx.ext.autosectionlabel
+autosectionlabel_prefix_document =3D True
=20
 # Add any paths that contain templates here, relative to this directory.
 templates_path =3D ['_templates']
@@ -82,7 +145,7 @@ language =3D 'en'
 # List of patterns, relative to source directory, that match files and
 # directories to ignore when looking for source files.
 # This pattern also affects html_static_path and html_extra_path.
-exclude_patterns =3D [u'sphinx/output', 'Thumbs.db', '.DS_Store']
+exclude_patterns =3D [u'sphinx/output', 'Thumbs.db', '.DS_Store', '.sphinx=
']
=20
 # The name of the Pygments (syntax highlighting) style to use.
 pygments_style =3D None
@@ -93,15 +156,38 @@ highlight_language =3D 'none'
 # -- Options for HTML output ---------------------------------------------=
----
 # https://www.sphinx-doc.org/en/master/usage/configuration.html#options-fo=
r-html-output
=20
+html_title =3D f"Xen Hypervisor {version} Documentation"
+html_logo =3D "_static/logo-xen.svg"
+html_favicon =3D "_static/favicon-xen-32x32.png"
+
 # The theme to use for HTML and HTML Help pages.  See the documentation for
 # a list of builtin themes.
 #
 try:
-    import sphinx_rtd_theme
-    html_theme =3D 'sphinx_rtd_theme'
-    html_theme_path =3D [sphinx_rtd_theme.get_html_theme_path()]
+    import sphinx_book_theme
+
+    html_theme =3D 'sphinx_book_theme'
+    # Theme options are theme-specific and customize the look and feel
+    # of a theme further. For a list of options available for each theme,
+    # see the documentation of that theme. e.g. for sphinx_book_theme, see
+    # https://sphinx-book-theme.readthedocs.io/en/latest/configure.html#op=
tions
+    html_theme_options =3D {
+        "logo": {
+            "text": f"Xen Hypervisor {version}",
+            "image_light": html_logo,
+            "image_dark": "_static/logo-xen-reverse.svg",
+        },
+        "home_page_in_toc": False,
+        # Depth of the table of contents tree to show in the right sidebar
+        "show_toc_level": 3,
+        "repository_url": "https://github.com/xen-project/xen",
+        "use_repository_button": True,
+    }
 except ImportError:
-    sys.stderr.write('Warning: The Sphinx \'sphinx_rtd_theme\' HTML theme =
was not found. Make sure you have the theme installed to produce pretty HTM=
L output. Falling back to the default theme.\n')
+    sys.stderr.write(
+        "sphinx_book_theme was not found, falling back to the default them=
e.\n"
+    )
+
=20
 # Theme options are theme-specific and customize the look and feel of a th=
eme
 # further.  For a list of options available for each theme, see the
@@ -112,7 +198,7 @@ except ImportError:
 # Add any paths that contain custom static files (such as style sheets) he=
re,
 # relative to this directory. They are copied after the builtin static fil=
es,
 # so a file named "default.css" will overwrite the builtin "default.css".
-html_static_path =3D []
+html_static_path =3D ["_static"]
=20
 # Custom sidebar templates, must be a dictionary that maps document names
 # to template names.
diff --git a/docs/requirements.txt b/docs/requirements.txt
new file mode 100644
index 000000000000..0cec13235162
--- /dev/null
+++ b/docs/requirements.txt
@@ -0,0 +1,3 @@
+sphinx-book-theme=3D=3D1.2.0
+sphinxcontrib-mermaid=3D=3D2.0.1
+sphinx-autobuild=3D=3D2025.08.25
--=20
2.39.5



From xen-devel-bounces@lists.xenproject.org Tue Apr 28 17:32:02 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 28 Apr 2026 17:32:02 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1296595.1572946 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wHmHq-0001fg-4f; Tue, 28 Apr 2026 17:31:54 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1296595.1572946; Tue, 28 Apr 2026 17:31: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 1wHmHq-0001fZ-1F; Tue, 28 Apr 2026 17:31:54 +0000
Received: by outflank-mailman (input) for mailman id 1296595;
 Tue, 28 Apr 2026 17:31:53 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <bernhard.kaindl@citrix.com>) id 1wHmHp-0001fT-JO
 for xen-devel@lists.xenproject.org; Tue, 28 Apr 2026 17:31:53 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wHmHo-000wxr-Vd
 for xen-devel@lists.xenproject.org; Tue, 28 Apr 2026 19:31:52 +0200
Received: from [10.42.69.4] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <bernhard.kaindl@citrix.com>)
 id 69f0eeff-5cb7-0a2a0a5109dd-0a2a45048e42-2
 for <xen-devel@lists.xenproject.org>; Tue, 28 Apr 2026 19:31:52 +0200
Received: from [160.101.131.9] (helo=na1pdmzitismtp02.tibco.com)
 by tlsNG-ebf023.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.1)
 (envelope-from <bernhard.kaindl@citrix.com>)
 id 69f0ef07-1dec-0a2a45040019-a06583098348-3
 for <xen-devel@lists.xenproject.org>; Tue, 28 Apr 2026 19:31:52 +0200
Received: from debian.eng.citrite.net (unknown [10.113.40.46])
 by na1pdmzitismtp02.tibco.com (Postfix) with ESMTP id 817CC81C9E98;
 Tue, 28 Apr 2026 13:30:51 -0400 (EDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-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: Bernhard Kaindl <bernhard.kaindl@citrix.com>
To: xen-devel@lists.xenproject.org
Cc: Bernhard Kaindl <bernhard.kaindl@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.pau@citrix.com>,
	Stefano Stabellini <sstabellini@kernel.org>
Subject: [PATCH] docs: Hypervisor-Guide: Move Hyperlaunch design docs as needed
Date: Tue, 28 Apr 2026 18:31:11 +0100
Message-Id: <3b943ee1ca93abdd70be30965146540975d91888.1777397318.git.bernhard.kaindl@citrix.com>
X-Mailer: git-send-email 2.39.5
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit
X-purgate-ID: tlsNG-ebf023/1777397512-2B7693FF-C1E6B427/0/0
X-purgate-type: clean
X-purgate-size: 3710

In the Sphinx documentation, the Hyperlaunch Design Documents were stated
as needing rearranging:

They were put into the section that needs rearranging, so rearrange
them as indicated inside the Hypervisor Guide which aims to describe
the hypervisor for developers and people interested in the hypervisor.

This also fixes the glitch where the "1 Hypervisor Design Document" was
listed in the main menu sidebar and helps to clean up the main menu.

Signed-off-by: Bernhard Kaindl <bernhard.kaindl@citrix.com>
---
 docs/designs/index.rst              | 15 +++++++++++++++
 docs/designs/launch/hyperlaunch.rst |  4 ++--
 docs/designs/launch/index.rst       | 10 ++++++++++
 docs/hypervisor-guide/index.rst     | 12 ++++++++++--
 docs/index.rst                      |  2 --
 5 files changed, 37 insertions(+), 6 deletions(-)
 create mode 100644 docs/designs/index.rst
 create mode 100644 docs/designs/launch/index.rst

diff --git a/docs/designs/index.rst b/docs/designs/index.rst
new file mode 100644
index 000000000000..ded12082c622
--- /dev/null
+++ b/docs/designs/index.rst
@@ -0,0 +1,15 @@
+.. SPDX-License-Identifier: CC-BY-4.0
+
+Design documents
+================
+
+Design documents and implementation details for the Xen hypervisor.
+
+These are intended for developers working on the Xen hypervisor,
+and for those interested in the internal workings of Xen.
+
+.. toctree::
+   :maxdepth: 2
+   :numbered: 4
+
+   launch/index
diff --git a/docs/designs/launch/hyperlaunch.rst b/docs/designs/launch/hyperlaunch.rst
index 3bed36f97637..aa7c2798a380 100644
--- a/docs/designs/launch/hyperlaunch.rst
+++ b/docs/designs/launch/hyperlaunch.rst
@@ -2,8 +2,6 @@
 Hyperlaunch Design Document
 ###########################
 
-.. sectnum:: :depth: 4
-
 This post is a Request for Comment on the included v4 of a design document that
 describes Hyperlaunch: a new method of launching the Xen hypervisor, relating
 to dom0less and work from the Hyperlaunch project. We invite discussion of this
@@ -13,6 +11,8 @@ Xen Development mailing list.
 
 
 .. contents:: :depth: 3
+   :backlinks: entry
+   :local:
 
 
 Introduction
diff --git a/docs/designs/launch/index.rst b/docs/designs/launch/index.rst
new file mode 100644
index 000000000000..afd845296d30
--- /dev/null
+++ b/docs/designs/launch/index.rst
@@ -0,0 +1,10 @@
+.. SPDX-License-Identifier: CC-BY-4.0
+
+Hyperlaunch
+===========
+
+.. toctree::
+   :maxdepth: 2
+
+   hyperlaunch
+   hyperlaunch-devicetree
diff --git a/docs/hypervisor-guide/index.rst b/docs/hypervisor-guide/index.rst
index 520fe01554ab..9c8033305549 100644
--- a/docs/hypervisor-guide/index.rst
+++ b/docs/hypervisor-guide/index.rst
@@ -1,11 +1,19 @@
 .. SPDX-License-Identifier: CC-BY-4.0
 
-Hypervisor documentation
-========================
+Hypervisor Guide
+================
+
+The Hypervisor Guide provides an overview of the Xen hypervisor's
+architecture and design, covering its core components, features,
+and how it manages resources for :term:`guest` domains.
+
+It serves as a comprehensive reference for developers and users interested
+in understanding the inner workings of the Xen hypervisor.
 
 .. toctree::
    :maxdepth: 2
 
+   ../designs/index
    code-coverage
 
    x86/index
diff --git a/docs/index.rst b/docs/index.rst
index bd87d736b9c3..6b04a077cebd 100644
--- a/docs/index.rst
+++ b/docs/index.rst
@@ -62,8 +62,6 @@ Documents in need of some rearranging.
 .. toctree::
    :maxdepth: 2
 
-   designs/launch/hyperlaunch
-   designs/launch/hyperlaunch-devicetree
    misc/xen-makefiles/makefiles
    misra/index
    fusa/index
-- 
2.39.5



From xen-devel-bounces@lists.xenproject.org Tue Apr 28 18:05:48 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 28 Apr 2026 18:05:48 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1296645.1572976 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wHmoT-0006g7-1V; Tue, 28 Apr 2026 18:05:37 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1296645.1572976; Tue, 28 Apr 2026 18:05: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 1wHmoS-0006es-RU; Tue, 28 Apr 2026 18:05:36 +0000
Received: by outflank-mailman (input) for mailman id 1296645;
 Tue, 28 Apr 2026 18:05:36 +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 1wHmoR-0006bn-Qp; Tue, 28 Apr 2026 18:05:35 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wHmoR-00GyDs-1x; Tue, 28 Apr 2026 20:05:35 +0200
Received: from [10.42.69.9] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <andrewcoop@xenbits.xen.org>)
 id 69f0f6e5-2eae-0a2a0a5409dd-0a2a4509b6e4-12
 for <multiple-recipients>; Tue, 28 Apr 2026 20:05:34 +0200
Received: from [104.130.215.37] (helo=mail.xenproject.org)
 by tlsNG-bad1c0.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.1)
 (envelope-from <andrewcoop@xenbits.xen.org>)
 id 69f0f6ec-2497-0a2a45090019-6882d725cb18-3
 for <multiple-recipients>; Tue, 28 Apr 2026 20:05:34 +0200
Received: from xenbits.xenproject.org ([104.239.192.120])
 by mail.xenproject.org with esmtp (Exim 4.96)
 (envelope-from <andrewcoop@xenbits.xen.org>) id 1wHmoL-006BvQ-0v;
 Tue, 28 Apr 2026 18:05:29 +0000
Received: from andrewcoop by xenbits.xenproject.org with local (Exim 4.96)
 (envelope-from <andrewcoop@xenbits.xen.org>) id 1wHmoL-007C43-0i;
 Tue, 28 Apr 2026 18:05: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; none
Content-Type: multipart/mixed; boundary="=separator"; charset="utf-8"
Content-Transfer-Encoding: binary
MIME-Version: 1.0
X-Mailer: MIME-tools 5.510 (Entity 5.510)
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 489 v1 (CVE-2026-23559,CVE-2026-23560,CVE-2026-23561,CVE-2026-23562,CVE-2026-42486)
 - Multiple RBAC issues in XAPI
Message-Id: <E1wHmoL-007C43-0i@xenbits.xenproject.org>
Date: Tue, 28 Apr 2026 18:05:29 +0000
X-purgate-ID: tlsNG-bad1c0/1777399534-42573A53-1A14A799/0/0
X-purgate-type: clean
X-purgate-size: 3984

--=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-23559,CVE-2026-23560,CVE-2026-23561,CVE-2026-23562,CVE-2026-42486 / XSA-489

                     Multiple RBAC issues in XAPI

ISSUE DESCRIPTION
=================

XAPI can configure different users with different roles, using Role
Based Access Control.  For more details, see:

  https://docs.xenserver.com/en-us/xencenter/current-release/rbac-overview.html#rbac-roles

The pool-admin role is fully privileged.  Notably, users with this role
can also SSH into the host as root.

The other administrator roles are pool-operator, vm-power-admin and
vm-admin, each of which are authorised to configure and manage various
aspects of the system.

Some settings are inadequately restricted, and can be set by a lower
privilege of administrator than expected.

 * CVE-2026-23559: A vm-admin can set VBD.other_config:backend-local and
   turn arbitrary files in dom0 into VDIs (virtual disks) and give said
   disks to a VM they control.  This is an arbitrary read and/or modify
   of files in dom0.

 * CVE-2026-23560: A vm-admin can set VM.other-config:is_system_domain
   and mark a VM as a system domain.  System domains are ignored and
   left running during certain other host/pool operations, and may be
   hidden from view in tooling.

 * CVE-2026-23561: A vm-admin can set VM.other_config:storage_driver_domain
   and mark a VM as the storage domain for a particular host storage
   connection (PBD). Shutting down the VM can cause the PBD to be
   erroneously marked as unplugged when it is not.

 * CVE-2026-23562: Configuration of PCI passthrough is normally
   restricted to the pool-admin role.  However one API was missing this
   check, allowing a vm-admin access to unintended host hardware.

 * CVE-2026-42486: A vm-admin can set the VM.platform:hvm_serial
   parameter, which should be restricted to the pool-admin role, as it
   can allow arbitrary dom0 file write.

IMPACT
======

An authenticated user already granted one of pool-operator,
vm-power-admin or vm-admin can escalate their privilege to pool-admin.

VULNERABLE SYSTEMS
==================

Systems running all versions of XAPI are vulnerable.

The vulnerability is only exposed if RBAC is configured for the pool,
and certain users are assigned the not-fully-privileged administrator
roles.

MITIGATION
==========

Disable any users (RBAC subjects) which have been configured with the
vm-admin, vm-power-admin or pool-operator role.

RESOLUTION
==========

Fixes can be found in the following pull requests:

  https://github.com/xapi-project/xen-api/pull/7031
  https://github.com/xapi-project/xen-api/pull/7032
  https://github.com/xapi-project/xen-api/pull/7033
  https://github.com/xapi-project/xen-api/pull/7039

NOTE REGARDING LACK OF EMBARGO
==============================

These issues were disclosed in public.

The researcher claimed 89 vulnerabilities.  Analysis by the XAPI team
concluded that only 5 were real vulnerabilities, with most being a
failure to read the RBAC documentation, and several appearing to be AI
hallucinations.

The researcher also took active steps to prevent coordinated disclosure.
Due to acting in bad faith, they are explicitly not credited.
-----BEGIN PGP SIGNATURE-----

iQFABAEBCAAqFiEEI+MiLBRfRHX6gGCng/4UyVfoK9kFAmnw9tkMHHBncEB4ZW4u
b3JnAAoJEIP+FMlX6CvZgLUIAMgzABaje/RPPO7lwrp1ERZQhtqy/SPG2dYxE75a
M6bytAbpj4Y9lgh8IB4QLXDSEfSgjWKxzSGcUi3DpvJI3uiQmSqvAE5XnfRfVHT/
h1eo0vQ3v8yz5++iiOl2Cq9Qvg9cvMFEXYz8X21+u63KlpOnXjUZ7VpYeRdrbCYs
n6Id6QU4D/y+3EZne5Xs0JY6Dn8J8SM3ejNjP6OmMFJMoKgSf1nXarQhNcmgvR0G
a+PRjUWgHAHqfdzjJsyBZLyNwPAQgUM2aDfPqGh8vr9YlE6sWwlxYEeSIGsWzAHu
oE5iWmYq5O4FUTgf+1ye8PUNbGyzDsJCeGfWeAXvGobQ6aQ=
=OEJh
-----END PGP SIGNATURE-----

--=separator--


From xen-devel-bounces@lists.xenproject.org Tue Apr 28 18:19:47 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 28 Apr 2026 18:19:47 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1296742.1573007 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wHn1s-00021j-Dx; Tue, 28 Apr 2026 18:19:28 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1296742.1573007; Tue, 28 Apr 2026 18:19: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 1wHn1s-00021c-AK; Tue, 28 Apr 2026 18:19:28 +0000
Received: by outflank-mailman (input) for mailman id 1296742;
 Tue, 28 Apr 2026 18:19:27 +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 1wHn1q-00021W-Rz
 for xen-devel@lists.xenproject.org; Tue, 28 Apr 2026 18:19:27 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wHn1q-009BXj-4D
 for xen-devel@lists.xenproject.org; Tue, 28 Apr 2026 20:19:26 +0200
Received: from [10.42.69.5] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <dmytro_prokopchuk1@epam.com>)
 id 69f0fa1c-e002-0a2a0a5209dd-0a2a4505e6f2-18
 for <xen-devel@lists.xenproject.org>; Tue, 28 Apr 2026 20:19:26 +0200
Received: from [52.101.84.113]
 (helo=DB3PR0202CU003.outbound.protection.outlook.com)
 by tlsNG-c201ff.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.1)
 (envelope-from <dmytro_prokopchuk1@epam.com>)
 id 69f0fa2d-aaa8-0a2a45050019-346554718a49-3
 for <xen-devel@lists.xenproject.org>; Tue, 28 Apr 2026 20:19:25 +0200
Received: from AM9PR03MB7526.eurprd03.prod.outlook.com (2603:10a6:20b:3de::17)
 by AS8PR03MB7125.eurprd03.prod.outlook.com (2603:10a6:20b:23e::20)
 with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9846.26; Tue, 28 Apr
 2026 18:19: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.20.9846.025; Tue, 28 Apr 2026
 18:19: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=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=G0bqprHb5T1rr6oJfN31N3qtHHInVdiT8rE0CF4GOujZNuOgeKAF2tNo1PGMirotB81ld2NZEZaLX1+PIqy+8uYvXqsiWPJEgTi3hWKci2SvJuCw7IIv9h3jbC4IYwNISe26M2O7tkCqsMiWeReOLwRbe+laBy7VXkzmuRAXRQa1NdJtVt4OlEcu/SoIwwFZdF3pSqpDcqyxEO605n4ud6Y79HZ8AzdLC+pqcTHUk9m8AoPOvP7GrlmoRBl9B+8WypGg4KX7k/8vijvZhmcWT9XXUcsWkkxIM0APgZqOTq1y8RgWHRGrU3dOqTcfAGvAxdKRkkhTQ1A4ujLwKSpsmA==
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com;
 s=arcselector10001;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1;
 bh=s/8ETfaR1Eca5iRdOa4d7CLlQAmv+d0HpoYpF9dtQoU=;
 b=hZOTFutNIW7G1kYAzOS23MNL581OeCcK9/Q87OhzHttlX4C/x6k4PICJGA/RsJeiwMegT0jfJcnelvcT2OzrnqGBAZCmWMSAYnSI+xoWAGjdqAun3lB7J9nZR3B2Z0kg74gHH4LJPTigQRwEmWKTTr392S37/MCEjWfPDha5EVCQvMbj6sXNfawEZ2m1aWbbmf/vvQfjTpkl+zdvtN/bprJbksI1YOHwE0MzMWSvGbaADSkVruX9EkPkcvsRMGI8sHv+PWgIpSMhrMfugOYgE46wCf/xPz2IfxK36YHlVc1pXzFiv7oh6S+N19Xu3HIp2UAI9kiJ177vJvUA6R3mmw==
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=s/8ETfaR1Eca5iRdOa4d7CLlQAmv+d0HpoYpF9dtQoU=;
 b=H9qADw5zjH2/wNi7GGdC2DQcs3gbqvtJEO0FRBqDgebkcs356iPlAPYsCg2IOqysoL1ucvYGi313o0Y2+dAzPVmTiqHsjHgokZS3VDeojHqL6jiOHAhvyk7RQojDBfei9bBixcHJdPRzpxKZstLA19Phcsnnanivb4aeKk3w8sZJALEmvahF6z9katkxCIHxEgYrkTw4//g4gLi+HA8A05fxSf1G7d27qrTbW3PPOHGt1ZiOUueJdtLqsNFymh385ZMr7A3295oUu2xt92//isu2+w5YwZSZF4amAEZmo28tzuqhH3CbVzm2+UiWpqou+OrUNeXiBRR2TZJDvnPt4w==
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>, Juergen Gross
	<jgross@suse.com>
Subject: [PATCH v2] hypfs: add ASSERT_UNREACHABLE() in hypfs_get_entry_rel()
Thread-Topic: [PATCH v2] hypfs: add ASSERT_UNREACHABLE() in
 hypfs_get_entry_rel()
Thread-Index: AQHc1zuKSCUJ+s/V9k2YkPF8TK6+Gg==
Date: Tue, 28 Apr 2026 18:19:23 +0000
Message-ID:
 <6db49190e85a30c0129f251ce718d50923baba8d.1777387070.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: 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_|AS8PR03MB7125:EE_
x-ms-office365-filtering-correlation-id: 273f55db-88db-4fba-9049-08dea552acd0
x-ms-exchange-senderadcheck: 1
x-ms-exchange-antispam-relay: 0
x-microsoft-antispam:
 BCL:0;ARA:13230040|1800799024|42112799006|366016|376014|38070700021|18002099003|56012099003;
x-microsoft-antispam-message-info:
 TW4OM+YNvB5y0hhpVscTF4LkFB/Uxbgu84nDMypv6+rh7KqH0RfAjSfxnxmwd64RaMaWoD7uRF/4zmtVlRmlRw2rE2I2w9NCyG26GpLlnmlvcNtZW7ijzoGricBr1JnGTLRVfDrplgjb18bmphrOacqkGOUjNrHne7hqPx0iV3Te2+cawdhzNgY+AmnqY3VG8xPa8yNKRm3yVu54A47/bdrffZsMsbQj2qCbqvKuBdQZj6T+62xE4pJ4OHagOQLkxU2Vx3imrq495lzoV16cosxsvEqSYuGPTAiQH0RwASkxeyWBXPBkocY/OjcySfBOYuWY/JDzw70ayJEAujy1zxhGx3XAH+6kHYE4a5UQnY5EWtaHZm75aCT7LDztiurJUovom+NvXByCatS5pDPW7Y6NCeWydk5QIXy1HgOdZCXdJuLh80SpOrnt5zU02Lq1ileZqvHuQ6tUQyhP7wkkTrBEB5cLVNSNR19Y8UJTJNy0zFjRVUw9GpwP++cuDyU8NADdtkw0WhDYpBnaNattlvMdpeaOcYIv+P9JJF+lj4FRZvgP2f+SD3KRQcG8zkofV+r37cTvgUKxyLHCjPWtOYve2ws/gCB+Ya57aI4fbdIkzU2y+3RL1SEtdc3eb7VERweqCteWxMWUaimr0eSzcV6lQC1g120M+fCO0NQGSXFCjbqORDtMmgnbcsHZ/d/WW90Bw/3y0OziZBGGXBtfARJGbSMMEuEeNxmU4DTUXQuguuzUKjvKSNRdcQA2sDP1
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)(42112799006)(366016)(376014)(38070700021)(18002099003)(56012099003);DIR:OUT;SFP:1102;
x-ms-exchange-antispam-messagedata-chunkcount: 1
x-ms-exchange-antispam-messagedata-0:
 =?iso-8859-1?Q?KpTMr/C0X6vNswm0LL4lKjm7LPGoVjajrs9NJs0mgDeoz1+FTanJy7dKaM?=
 =?iso-8859-1?Q?4/rsw4CtK562I3/P7E/43bvIrG6QJC7Wh54NlpVlwn39qSmvL8TlBe5t/o?=
 =?iso-8859-1?Q?fuq6hNofdQK3pu60SG9rkLjG8OilxLg7pxF4esRqYureLZjq3v6G3tSS2w?=
 =?iso-8859-1?Q?gV8aGycZVUFeN/Nkx2XoN2OzrrD18fu+eflDHfJbqHScLD1SVR0o9Nk8r2?=
 =?iso-8859-1?Q?AHoXvL6xHvEKtAwwc0sjD5JeCLsguPIl7qdLtnD06aLG/GOpQswVE6XYnu?=
 =?iso-8859-1?Q?C1rmU7G2p5EdyRVe0mRXq5plxsW0mRJNDbVYAH6HsJE1x0HZjv2D4tOHRi?=
 =?iso-8859-1?Q?jcWxE2eRNr4CJEdbgW63SVuMzsGsVTBpsx8X0Jmdi+8znz0onFW8UsrFNN?=
 =?iso-8859-1?Q?amuhkI/qoRs9xLZUzI7JXnAZT3egHRbyTpKaW8vpWeyUEVvmS3DhiW3q+A?=
 =?iso-8859-1?Q?CxNz7aV84WLaL4qawJ7TTyiHm2u+T4MdlyyvvMsDwGMUeF8qhxvhh3azAU?=
 =?iso-8859-1?Q?znEAbjJBjYFVgqgIvzHPqAbWxOoQ8UyzGXHgseXpyZBFWAIUH+cD++KS61?=
 =?iso-8859-1?Q?V430Lkfha8bin9VeA++qTBtWM8jL7cU8sdHQ9MNf/l8eiO9j99jS0iCDbY?=
 =?iso-8859-1?Q?J2MmctvI4VC7h67dSQvREeGNZaYDhoEOPBBpCotslzYUqx9M6T/SGT7sen?=
 =?iso-8859-1?Q?pYMQD/MrV1EX4wKlt5a8yKTerK4DUjjX2rTszYkDBMSTheo0I9Y++C7X8q?=
 =?iso-8859-1?Q?IvPxqwhcAQ6XwfLmLTMlXedsLrt8tn6ZZcYEyl8rCtqh+oXn8VsmYlf6Id?=
 =?iso-8859-1?Q?R0cHx5xUk1T2LnGtwcG2IZUO+CFT5CYhDEeA78G4NqFxCTIx7l3Xl+L8Nq?=
 =?iso-8859-1?Q?IePQXmKHEh004/cTYF+JZgU6syJsIK299kWU2Gb6tY63zzbb2ImXHudxS8?=
 =?iso-8859-1?Q?mDoRGMsYJrGjVRTU8Bz8j8jUK0uQeFciaQe/bSmFLl9E30+D/+G1qW+dcB?=
 =?iso-8859-1?Q?1mY7gI/FXoJAOowKVfAB91yuxAzq3fl7NhaO1qAXhitQkSfR6mdtBnskKk?=
 =?iso-8859-1?Q?1hQHuN7Os4ChzW6bllONFjNhUi3us0qzwTMZxhpNc1647pGNtzDXofP5HR?=
 =?iso-8859-1?Q?el53fL/Tqr3cHU4b0GvHdfzdxKaGLCGgz9hgDS3XSUXunm+UVkjVo/xIOh?=
 =?iso-8859-1?Q?jef1z+rGg+aYk2WSwZomAIn6c9td5N0K7OuxXO+h6TdWnnSXT3oWr/9u71?=
 =?iso-8859-1?Q?cTGltuGKJ4SLREchXwVwoW93T/mCmEB1xeKCeVkbzDIezDQJCiS4GiICgt?=
 =?iso-8859-1?Q?kplI5RMzR6TwWSUsX/IshF0NQM0O2evSC6fGlkd2mTC88/PMTEhf6hk12U?=
 =?iso-8859-1?Q?jHwZ8V+LHv5mwfnet7NAyFsS1iiaj7+FJY8s1PI8+aKRWS0OV2zvZPOjFq?=
 =?iso-8859-1?Q?/H3rKXIVT8XPuu38W9OvkaJFiLsbcD1y4zQtw89FqsdlN/uNK98ebnB6xQ?=
 =?iso-8859-1?Q?7V8ox+XDGvXUu680jw5hso1lhgxPdIOgtmNUYoPCX2Lf6yaaBkc4Tmjlex?=
 =?iso-8859-1?Q?bvEMqkrsWfEtNmiMsPCO3H5P0stg4t+qV56btYHuZQ3vaYIdaPACVjPJQH?=
 =?iso-8859-1?Q?dRjQJ0VO2ftOjRqgQBCPIk/IzmhLtbGCYXkOrNzbiFBl7c9ecwQQf5SNcT?=
 =?iso-8859-1?Q?5FraUtnjTm2psSo1Iy+PU4VQf/QTaGDMCpXJtz86YWCUE6M+7g7fq0lBHc?=
 =?iso-8859-1?Q?oBbMazpHQrtHSZX1uUd7m6g/Z5AKXasSody6Cpyb8nw1aeH8Wj/vOcm2SI?=
 =?iso-8859-1?Q?xJPi487a2p5nVhUHCabA/lPH5C5nNGM=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: AM9PR03MB7526.eurprd03.prod.outlook.com
X-MS-Exchange-CrossTenant-Network-Message-Id: 273f55db-88db-4fba-9049-08dea552acd0
X-MS-Exchange-CrossTenant-originalarrivaltime: 28 Apr 2026 18:19:23.8377
 (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: loehAS8/n51UdIIV+V5xu9I3IFUs6oXMApDbh4WQ94jsoQuywpqpOI+2i8g/pZWkAH+RM5gWt4AZ3+PvM135wnfgubfrBbZpB2CsD6AUq88=
X-MS-Exchange-Transport-CrossTenantHeadersStamped: AS8PR03MB7125
X-purgate-ID: tlsNG-c201ff/1777400366-E1BA4443-3D05F7DB/0/0
X-purgate-type: clean
X-purgate-size: 1456

The statement 'return ERR_PTR(-ENOENT);' on the final line of the
function 'hypfs_get_entry_rel()' is unreachable because the logic within
the infinite loop 'for (;;)' provides all possible exit paths for the
function. So there is no execution path to exit the loop and reach the
final that statement.

This unreachable code violates MISRA C Rule 2.1 which states: "A project
shall not contain unreachable code".

To fix that and potential compilers "control reaches end of non-void
function" warning, mark the code path as unreachable using macro
'ASSERT_UNREACHABLE()'.

Signed-off-by: Dmytro Prokopchuk <dmytro_prokopchuk1@epam.com>
---
Changes in v2:
- add ASSERT_UNREACHABLE() before the final return statement instead of rem=
oving it
Test CI pipeline:
https://gitlab.com/xen-project/people/dimaprkp4k/xen/-/pipelines/2485661910
Link to v1:
https://patchew.org/Xen/341811ced2943fb79d0235c27781c564c7bdaf02.1775749146=
.git.dmytro._5Fprokopchuk1@epam.com/
---
 xen/common/hypfs.c | 1 +
 1 file changed, 1 insertion(+)

diff --git a/xen/common/hypfs.c b/xen/common/hypfs.c
index cdf4ee0171..02fb234568 100644
--- a/xen/common/hypfs.c
+++ b/xen/common/hypfs.c
@@ -348,6 +348,7 @@ static struct hypfs_entry *hypfs_get_entry_rel(struct h=
ypfs_entry_dir *dir,
         dir =3D container_of(entry, struct hypfs_entry_dir, e);
     }
=20
+    ASSERT_UNREACHABLE();
     return ERR_PTR(-ENOENT);
 }
=20
--=20
2.43.0


From xen-devel-bounces@lists.xenproject.org Tue Apr 28 18:35:10 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 28 Apr 2026 18:35:10 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1296760.1573027 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wHnGn-00059r-P9; Tue, 28 Apr 2026 18:34:53 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1296760.1573027; Tue, 28 Apr 2026 18:34: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 1wHnGn-00059k-MS; Tue, 28 Apr 2026 18:34:53 +0000
Received: by outflank-mailman (input) for mailman id 1296760;
 Tue, 28 Apr 2026 18:34:52 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <bernhard.kaindl@citrix.com>) id 1wHnGm-00059e-Fq
 for xen-devel@lists.xenproject.org; Tue, 28 Apr 2026 18:34:52 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wHnGl-009D8Q-JV
 for xen-devel@lists.xenproject.org; Tue, 28 Apr 2026 20:34:51 +0200
Received: from [10.42.69.7] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <bernhard.kaindl@citrix.com>)
 id 69f0fdc3-e002-0a2a0a5209dd-0a2a4507c9a2-6
 for <xen-devel@lists.xenproject.org>; Tue, 28 Apr 2026 20:34:51 +0200
Received: from [160.101.131.9] (helo=na1pdmzitismtp02.tibco.com)
 by tlsNG-ef75cf.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.1)
 (envelope-from <bernhard.kaindl@citrix.com>)
 id 69f0fdca-229c-0a2a45070019-a0658309d5fe-3
 for <xen-devel@lists.xenproject.org>; Tue, 28 Apr 2026 20:34:51 +0200
Received: from debian.eng.citrite.net (unknown [10.113.40.46])
 by na1pdmzitismtp02.tibco.com (Postfix) with ESMTP id A25EA81995B5;
 Tue, 28 Apr 2026 14:33:49 -0400 (EDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-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: Bernhard Kaindl <bernhard.kaindl@citrix.com>
To: xen-devel@lists.xenproject.org
Cc: Bernhard Kaindl <bernhard.kaindl@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.pau@citrix.com>,
	Stefano Stabellini <sstabellini@kernel.org>
Subject: [PATCH] docs: Format (void *) to fix reStructuredText emphasis warnings
Date: Tue, 28 Apr 2026 19:34:28 +0100
Message-Id: <05b61bdfce381176a6c4b8844db1fba3fa0982ce.1777401225.git.bernhard.kaindl@citrix.com>
X-Mailer: git-send-email 2.39.5
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit
X-purgate-ID: tlsNG-ef75cf/1777401291-AE16DC48-9705ED87/0/0
X-purgate-type: clean
X-purgate-size: 2724

Fix warnings when rendering the Sphinx documentation because
with reStructuredText, in the character sequence of '(void *)',
the characters *) are seen as an emphasis start-string:

WARNING: Inline emphasis start-string without end-string. [docutils]

Fix this by formatting it with ``(void *)`` as an inline literal
which can be used for monospaced code snippets like these that
can contain any characters without any markup interpretation.

Signed-off-by: Bernhard Kaindl <bernhard.kaindl@citrix.com>
---
Preview based on the new theme and design docs arrangement just submitted:
https://bernhard-xen.readthedocs.io/en/void/misra/rules.html
https://bernhard-xen.readthedocs.io/en/void/misra/deviations.html
---
 docs/misra/deviations.rst | 4 ++--
 docs/misra/rules.rst      | 6 +++---
 2 files changed, 5 insertions(+), 5 deletions(-)

diff --git a/docs/misra/deviations.rst b/docs/misra/deviations.rst
index b04830959694..c972d5b2ad49 100644
--- a/docs/misra/deviations.rst
+++ b/docs/misra/deviations.rst
@@ -366,13 +366,13 @@ Deviations related to MISRA C:2012 Rules:
      - Tagged as `safe` for ECLAIR.
 
    * - R11.1
-     - The conversion from a function pointer to unsigned long or '(void *)' does
+     - The conversion from a function pointer to unsigned long or ``(void *)`` does
        not lose any information, provided that the target type has enough bits
        to store it.
      - Tagged as `safe` for ECLAIR.
 
    * - R11.1
-     - Conversion from unsigned long or '(void *)' to a function pointer can
+     - Conversion from unsigned long or ``(void *)`` to a function pointer can
        restore full information, provided that the source type has enough bits
        to restore it.
      - Tagged as `safe` for ECLAIR.
diff --git a/docs/misra/rules.rst b/docs/misra/rules.rst
index b3e929307d51..fc6fdfd313d0 100644
--- a/docs/misra/rules.rst
+++ b/docs/misra/rules.rst
@@ -430,9 +430,9 @@ maintainers if you want to suggest a change.
        and any other type
      - All conversions to integer types are permitted if the destination
        type has enough bits to hold the entire value. Conversions to bool
-       and void* are permitted. Conversions from 'void noreturn (*)(...)'
-       to 'void (*)(...)' are permitted. Conversions from unsigned long or
-       '(void *)' to a function pointer are permitted.
+       and ``void *`` are permitted. Conversions from ``void noreturn (*)(...)``
+       to ``void (*)(...)`` are permitted. Conversions from unsigned long or
+       ``(void *)`` to a function pointer are permitted.
        Example::
 
            unsigned long func_addr = (unsigned long)&some_function;
-- 
2.39.5



From xen-devel-bounces@lists.xenproject.org Tue Apr 28 18:43:02 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 28 Apr 2026 18:43:02 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1296792.1573037 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wHnOb-0006ys-H7; Tue, 28 Apr 2026 18:42:57 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1296792.1573037; Tue, 28 Apr 2026 18:42: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 1wHnOb-0006yl-Dr; Tue, 28 Apr 2026 18:42:57 +0000
Received: by outflank-mailman (input) for mailman id 1296792;
 Tue, 28 Apr 2026 18:42:56 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <olekstysh@gmail.com>) id 1wHnOa-0006yf-Eg
 for xen-devel@lists.xenproject.org; Tue, 28 Apr 2026 18:42:56 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wHnOZ-0016CI-Nt
 for xen-devel@lists.xenproject.org; Tue, 28 Apr 2026 20:42:55 +0200
Received: from [10.42.69.9] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <olekstysh@gmail.com>)
 id 69f0ff91-e002-0a2a0a5209dd-0a2a4509b0de-46
 for <xen-devel@lists.xenproject.org>; Tue, 28 Apr 2026 20:42:55 +0200
Received: from [209.85.128.43] (helo=mail-wm1-f43.google.com)
 by tlsNG-bad1c0.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.1)
 (envelope-from <olekstysh@gmail.com>)
 id 69f0ffaf-2497-0a2a45090019-d155802ba4dc-3
 for <xen-devel@lists.xenproject.org>; Tue, 28 Apr 2026 20:42:55 +0200
Received: by mail-wm1-f43.google.com with SMTP id
 5b1f17b1804b1-4891f625344so1238975e9.0
 for <xen-devel@lists.xenproject.org>; Tue, 28 Apr 2026 11:42:55 -0700 (PDT)
Received: from [10.17.80.122] (ll-22.209.223.85.sovam.net.ua. [85.223.209.22])
 by smtp.gmail.com with ESMTPSA id
 ffacd0b85a97d-4463f5b50c1sm7956944f8f.17.2026.04.28.11.42.53
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Tue, 28 Apr 2026 11:42:54 -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=20251104 header.d=gmail.com header.i="@gmail.com" header.h="Content-Transfer-Encoding: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=20251104; t=1777401775; x=1778006575; darn=lists.xenproject.org;
        h=content-transfer-encoding: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;
        bh=tD82TwXrtGZ74IDr0qx9ZcfUGlPHwnEGUoJd7VCUs2U=;
        b=Up4TOyfAFSPwLAU/R57FEAYduFFYyzy3kWr3FepOKyJQN0lGXP+r4Siy0FyG6NRsiL
         gcOVr2V5x1SDapd3H7TPK0mK3ztGHH2m40BjyJ9LQfjffy/WJfZ2ggXBlsM2StAaJnHC
         ru7ZeRuhUTjyMlT8AR+ahDIOQpMOfSN/xTTRN6xMZRGR8yS7Y3wbCwGpMVPpJdUTMlU4
         xX8zCiz5tJnuMvt+7Obs6IMPH4TsBTwB0I74aZW6p7YzSr9c4i/auuV2a2bNfOTUkAKg
         V1KGn8TxHEmS8oBmRIxqY7C+Zj4Kkuha4WH4VexfjGf9DGCWnaafSUZ0t2Pn3UKNS7c/
         fStw==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20251104; t=1777401775; x=1778006575;
        h=content-transfer-encoding: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;
        bh=tD82TwXrtGZ74IDr0qx9ZcfUGlPHwnEGUoJd7VCUs2U=;
        b=MDLQhuY1yZSEWaEF3VOP17qy2C0gsvsf0T4UfwLypo6y+DyufMYM3I5/qUM7mcJFA/
         KSHO+XCFFFVDeiVagLrB9FT4O2oqBDNt1780b0BCGOPPcdL54gZ2bYlIcHBUAMhe390v
         9Qncw7JzthBZu9isFF0yA/fhdv96L62c9DZ1SGbPZ2DgxYkCDSxT9shMUi1Is51GNGcT
         CYTo4/hsu2SAD7JuD4X+gxGQZueViVmOfttI6EHdCwcnJPeQbfBgiVYBkHAo9iZvyiUk
         8Hxq0R2GhdWkrpQ3my1dAsQJHiAJdoH5Y2Z5//VCAUTL7WvD/66gFdLeDsTlPx+lyOMv
         /sHQ==
X-Gm-Message-State: AOJu0YxSydgDPUKjRp7PN/ZkUufONcPXluapilPC1olHFH+FyB9tAXNf
	75Q7cAh14v5L5oQZcLzOrTXpDL34vSC8CMFofHu1o5cue+/R2sDuoiNi
X-Gm-Gg: AeBDiev+5cLyjjjpxJAdC3lqydZsXpqtKp0irJ+JAx0oVh8V10UL7d6Xp447/z5e0IE
	/Moow5/3xc7FVrpYSYWZUrgMtrXckYF3KLSaqCmHikCKF94HrJLlTzSNtFcTyGhwyxk9njDxNDj
	3gi7R03FJGy9YmuxVDlOeZUanfRMm6wT07din7mOPrft49+C9WukY5G2EGXnEo36r4ltYyjmWpe
	P9psdnha7BeuUhmJlOeA4lZvnxlEG2VD0NwZ+yFYVfLFM8LbPaDRwktZG+vQEsbdPxIgE+fPb9m
	GaykDMUd+wMG/FBmSumnHAZLikpbblVXvXW5I/4m8tNPyodUgjB3WXq5po9vFfyDkk5+8PowmzE
	5lKZFcpcNM8pfBR6tEAr7IBRnYgo9nttJ4jEybKFuGvbNgmBs/MTN3JuLtdsjhGFK7D1a4ORXWs
	vcG2PcmXGvHxolqKHJpCcFGQnl4LBUKD4k7xP36pVRIkskp8zHVzTDvXcPfMvb5tkf/A==
X-Received: by 2002:a05:600d:644e:20b0:488:a9c3:44a3 with SMTP id 5b1f17b1804b1-48a7becf70cmr2362635e9.2.1777401774698;
        Tue, 28 Apr 2026 11:42:54 -0700 (PDT)
Message-ID: <20eaa31d-a105-440e-9add-968fc9786180@gmail.com>
Date: Tue, 28 Apr 2026 21:42:53 +0300
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH 1/4] xen/arm: its: collect quirk flags and honor
 dma-noncoherent
To: Mykola Kvach <xakep.amatop@gmail.com>,
 Volodymyr Babchuk <Volodymyr_Babchuk@epam.com>
Cc: "xen-devel@lists.xenproject.org" <xen-devel@lists.xenproject.org>,
 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>
References: <cover.1774431310.git.mykola_kvach@epam.com>
 <5b68fa0a8403ea60db3047f6505876bc03a41f3f.1774431310.git.mykola_kvach@epam.com>
 <87bjgcvul6.fsf@epam.com>
 <CAGeoDV87irnVf8k+Z2L6=k41p87N9O6DpLCFdkMwErzDpXB9KA@mail.gmail.com>
Content-Language: en-US
From: Oleksandr Tyshchenko <olekstysh@gmail.com>
In-Reply-To: <CAGeoDV87irnVf8k+Z2L6=k41p87N9O6DpLCFdkMwErzDpXB9KA@mail.gmail.com>
Content-Type: text/plain; charset=UTF-8; format=flowed
Content-Transfer-Encoding: 8bit
X-purgate-ID: tlsNG-bad1c0/1777401775-93175A53-AA775135/0/0
X-purgate-type: clean
X-purgate-size: 6634



On 3/25/26 17:47, Mykola Kvach wrote:
> Hi Volodymyr,

Hello Mykola and Volodymyr


> 
> Thank you for the review.
> 
> On Wed, Mar 25, 2026 at 4:42 PM Volodymyr Babchuk
> <Volodymyr_Babchuk@epam.com> wrote:
>>
>> Hi Mykola,
>>
>> Mykola Kvach <xakep.amatop@gmail.com> writes:
>>
>>> From: Mykola Kvach <mykola_kvach@epam.com>
>>>
>>> Replace the per-quirk init callback with declarative flags in
>>> struct its_quirk, and introduce gicv3_its_collect_quirks() to gather
>>> the effective workaround flags from both the IIDR-matched quirk entry
>>> and the "dma-noncoherent" device-tree property.
>>>
>>> This lets non-coherent platforms force non-cacheable ITS table
>>> attributes even when no IIDR quirk entry matches.
>>>
>>> Signed-off-by: Mykola Kvach <mykola_kvach@epam.com>
>>> ---
>>>   xen/arch/arm/gic-v3-its.c | 70 ++++++++++++++++++++++++---------------
>>>   1 file changed, 43 insertions(+), 27 deletions(-)
>>>
>>> diff --git a/xen/arch/arm/gic-v3-its.c b/xen/arch/arm/gic-v3-its.c
>>> index 9ba068c46f..00524b43a3 100644
>>> --- a/xen/arch/arm/gic-v3-its.c
>>> +++ b/xen/arch/arm/gic-v3-its.c
>>> @@ -57,71 +57,87 @@ struct its_device {
>>>    */
>>>   struct its_quirk {
>>>       const char *desc;
>>> -    bool (*init)(struct host_its *hw_its);
>>>       uint32_t iidr;
>>>       uint32_t mask;
>>> +    uint32_t flags;
>>>   };
>>>
>>>   static uint32_t __ro_after_init its_quirk_flags;
>>>
>>> -static bool gicv3_its_enable_quirk_gen4(struct host_its *hw_its)
>>> -{
>>> -    its_quirk_flags |= HOST_ITS_WORKAROUND_NC_NS |
>>> -        HOST_ITS_WORKAROUND_32BIT_ADDR;
>>> -
>>> -    return true;
>>> -}
>>> -
>>>   static const struct its_quirk its_quirks[] = {
>>>       {
>>> -        .desc        = "R-Car Gen4",
>>> -        .iidr        = 0x0201743b,
>>> -        .mask        = 0xffffffffU,
>>> -        .init        = gicv3_its_enable_quirk_gen4,
>>> +        .desc  = "R-Car Gen4",
>>> +        .iidr  = 0x0201743b,
>>> +        .mask  = 0xffffffffU,
>>> +        .flags = HOST_ITS_WORKAROUND_NC_NS |
>>> +                 HOST_ITS_WORKAROUND_32BIT_ADDR,
>>>       },
>>>       {
>>>           /* Sentinel. */
>>>       }
>>>   };
>>>
>>> -static struct its_quirk* gicv3_its_find_quirk(uint32_t iidr)
>>> +static const struct its_quirk *gicv3_its_find_quirk(uint32_t iidr)
>>>   {
>>> -    const struct its_quirk *quirks = its_quirks;
>>> +    const struct its_quirk *quirk = its_quirks;
>>>
>>> -    for ( ; quirks->desc; quirks++ )
>>> +    for ( ; quirk->desc; quirk++ )
>>>       {
>>> -        if ( quirks->iidr == (quirks->mask & iidr) )
>>> -            return (struct its_quirk *)quirks;
>>> +        if ( quirk->iidr != (quirk->mask & iidr) )
>>> +            continue;
>>> +
>>> +        return quirk;
>>>       }
>>>
>>>       return NULL;
>>>   }
>>>
>>> -static void gicv3_its_enable_quirks(struct host_its *hw_its)
>>> +static uint32_t gicv3_its_collect_quirks(const struct host_its *hw_its,
>>> +                                         const struct its_quirk **matched_quirk)
>>>   {
>>> +    const struct its_quirk *quirk;
>>> +    uint32_t flags = 0;
>>>       uint32_t iidr = readl_relaxed(hw_its->its_base + GITS_IIDR);
>>> -    const struct its_quirk *quirk = gicv3_its_find_quirk(iidr);
>>>
>>> -    if ( quirk && quirk->init(hw_its) )
>>> +    quirk = gicv3_its_find_quirk(iidr);
>>> +    if ( quirk )
>>> +        flags |= quirk->flags;
>>> +
>>> +    if ( hw_its->dt_node &&
>>> +         dt_property_read_bool(hw_its->dt_node, "dma-noncoherent") )
>>> +        flags |= HOST_ITS_WORKAROUND_NC_NS;
>>> +
>>> +    if ( matched_quirk )
>>> +        *matched_quirk = quirk;
>>> +
>>> +    return flags;
>>> +}
>>> +
>>> +static void gicv3_its_enable_quirks(struct host_its *hw_its)
>>> +{
>>> +    const struct its_quirk *quirk;
>>> +
>>> +    its_quirk_flags = gicv3_its_collect_quirks(hw_its, &quirk);
>>> +
>>> +    if ( quirk )
>>>           printk("GICv3: enabling workaround for ITS: %s\n", quirk->desc);
>>>   }
>>>
>>>   static void gicv3_its_validate_quirks(void)
>>>   {
>>> -    const struct its_quirk *quirk = NULL, *prev = NULL;
>>> +    uint32_t quirks, prev_quirks;
>>>       const struct host_its *hw_its;
>>>
>>>       if ( list_empty(&host_its_list) )
>>>           return;
>>>
>>>       hw_its = list_first_entry(&host_its_list, struct host_its, entry);
>>> -    prev = gicv3_its_find_quirk(readl_relaxed(hw_its->its_base + GITS_IIDR));
>>> +    prev_quirks = gicv3_its_collect_quirks(hw_its, NULL);
>>>
>>> -    list_for_each_entry(hw_its, &host_its_list, entry)
>>> +    list_for_each_entry_continue(hw_its, &host_its_list, entry)
>>>       {
>>> -        quirk = gicv3_its_find_quirk(readl_relaxed(hw_its->its_base + GITS_IIDR));
>>> -        BUG_ON(quirk != prev);
>>> -        prev = quirk;
>>> +        quirks = gicv3_its_collect_quirks(hw_its, NULL);
>>> +        BUG_ON(quirks != prev_quirks);
>>
>> I know it was in the previous version, but as you are already touching
>> this... This is not Xen BUG(). This is a platform problem. So you need
>> to panic here. Something like
>>
>>   if (quirks != prev_quirks)
>>          panic("Different ITS instances has different quirks")
> 
> Ack.
> 
> 

I agree that a quirk mismatch is a platform problem. Yes, the current 
design uses global flags, making it unable to handle mixed quirks, 
leading to the failure on mismatch.

Please note, I am not saying a panic() is wrong here and I am not 
requesting any changes here; I was just wondering why this is handled 
differently than the SMMUv3 driver. I am just thinking out loud.

SMMUv3 driver handles feature mismatches by gracefully degrading. When 
it finds an SMMU device that does not support ARM_SMMU_FEAT_COHERENCY, 
it disables that feature for the entire platform (so the P2M code has to 
clean the cache when updating ptes). It does not panic. How the ITS and 
SMMUv3 drivers are different in that regard? Why could not we apply the 
same "worst-case" logic here?
For example:
- if any ITS device requires non-cacheable memory, then all ITS memory 
allocations should use non-cacheable memory.
- if any ITS device requires 32-bit addresses, then all ITS memory 
allocations should be constrained to 32-bits.

This would be consistent with the SMMU precedent and would allow the 
system to boot and function correctly, but with the performance 
characteristics of the worst ITS device in the system.

Or I really missed something?











[snip]


From xen-devel-bounces@lists.xenproject.org Tue Apr 28 20:06:35 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 28 Apr 2026 20:06:35 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1296829.1573045 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wHoh9-0001Cz-97; Tue, 28 Apr 2026 20:06:11 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1296829.1573045; Tue, 28 Apr 2026 20:06: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 1wHoh9-0001Cs-6T; Tue, 28 Apr 2026 20:06:11 +0000
Received: by outflank-mailman (input) for mailman id 1296829;
 Tue, 28 Apr 2026 20:06:09 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <Stewart.Hildebrand@amd.com>) id 1wHoh7-0001Cm-D2
 for xen-devel@lists.xenproject.org; Tue, 28 Apr 2026 20:06:09 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wHoh6-001FOW-Aa
 for xen-devel@lists.xenproject.org; Tue, 28 Apr 2026 22:06:08 +0200
Received: from [10.42.69.10] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <Stewart.Hildebrand@amd.com>)
 id 69f11325-2eae-0a2a0a5409dd-0a2a450aec1a-12
 for <xen-devel@lists.xenproject.org>; Tue, 28 Apr 2026 22:06:07 +0200
Received: from [52.101.43.12]
 (helo=SJ2PR03CU001.outbound.protection.outlook.com)
 by tlsNG-4011c0.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.1)
 (envelope-from <Stewart.Hildebrand@amd.com>)
 id 69f1132d-56b3-0a2a450a0019-34652b0cd477-3
 for <xen-devel@lists.xenproject.org>; Tue, 28 Apr 2026 22:06:07 +0200
Received: from BN9PR03CA0657.namprd03.prod.outlook.com (2603:10b6:408:13b::32)
 by DS0PR12MB8366.namprd12.prod.outlook.com (2603:10b6:8:f9::17) with
 Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9870.17; Tue, 28 Apr
 2026 20:06:01 +0000
Received: from BN2PEPF00004FBC.namprd04.prod.outlook.com
 (2603:10b6:408:13b:cafe::d6) by BN9PR03CA0657.outlook.office365.com
 (2603:10b6:408:13b::32) with Microsoft SMTP Server (version=TLS1_3,
 cipher=TLS_AES_256_GCM_SHA384) id 15.20.9846.26 via Frontend Transport; Tue,
 28 Apr 2026 20:06:01 +0000
Received: from satlexmb07.amd.com (165.204.84.17) by
 BN2PEPF00004FBC.mail.protection.outlook.com (10.167.243.182) with Microsoft
 SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id
 15.20.9846.18 via Frontend Transport; Tue, 28 Apr 2026 20:06:00 +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.17; Tue, 28 Apr
 2026 15:06:00 -0500
Received: from [172.24.40.209] (10.180.168.240) by satlexmb08.amd.com
 (10.181.42.217) with Microsoft SMTP Server id 15.2.2562.17 via Frontend
 Transport; Tue, 28 Apr 2026 15:05:59 -0500
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@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=d8sRZd4UCq8rN7DD5AGklHjrf0iowqpsVC2v0BWEQ4lsmDSBXMZNFlFIEmjcN2F1p3ZYMlNp6XVF5vtMHwiujS6/Lbi+JslRoJesd0tZ0iKqVQcRmOKSLkSZDlk3rzJOx9upfeo4sidEMlcQXBJSJtsD9bi+RtLrqIwwQfEgZSf0ZClxRQ+kO/4AYBlEpq9VwEjy7xwCveUA5TUX/Q9GdCbkSTIw/tql/UOnQF3RxQsG7Qt47DACyuPeZEFJEP33BdX8/e6ilrKJeQS0ymvRotlTKxuDk6xxtpV4lgyX4P/irROXM8lPbBUBLrDW5mIXM6Z80t8RQlDHNV9mUimNsw==
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com;
 s=arcselector10001;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1;
 bh=x0D0pZeBYa/0GoYlAsZ1ArtMsS7D7ytJx33yY1bDjnM=;
 b=J135POFdWqC3nrSnsbI7v1k67aZlHHY5ziE+u00S5ofn8YId2ayN5w9W/TUO3AxV6pT0XhwVQu9SnxoN3l2Rt4DKGEYY3NezzordVoZqjvmcpL3rrU/zDdKoINbilsSYWSf95cKrAeCn3I84/v9noqn5szmroKsxYiwXlWQPyuDwQzodT16Am9rtDh3wS8x9dNu+Z1nl8tdpuLPM95VEvoLgh49hQQLjPsQ6/CYnNI3CHCfYb58wezHUHqXsLr83b2/5eT3C4Zc9tVZe5EBFBu6yl6Ti2hXbcLxdC9UxhTEiTrLML37yyYA1UKjdpgF5YVlnpxgBAnBnF8/qAMqqlA==
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=x0D0pZeBYa/0GoYlAsZ1ArtMsS7D7ytJx33yY1bDjnM=;
 b=3Fts5gYu+cEfOM3BUjN5AMbuBydqMyFlj83kcS4lJzZuY0wxhIa7FMd5gVVmMOEgh4Zd/wUhxNGVN2X8RTxdfNz3fjAJqo2h9HIckx1USnho8RPbEsRrhLpMYHS2D233j0DjVuqAZR3iT6xgWUN/FGGrVuPN+bzNtbyAdR0xzlU=
X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 165.204.84.17)
 smtp.mailfrom=amd.com; dkim=none (message not signed)
 header.d=none;dmarc=pass action=none header.from=amd.com;
Received-SPF: Pass (protection.outlook.com: domain of amd.com designates
 165.204.84.17 as permitted sender) receiver=protection.outlook.com;
 client-ip=165.204.84.17; helo=satlexmb07.amd.com; pr=C
Message-ID: <275c1e83-ddf3-4d1b-9777-cd6d56d357a3@amd.com>
Date: Tue, 28 Apr 2026 16:05:54 -0400
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH v3 5/7] vpci: add SR-IOV support for PVH Dom0
To: Mykyta Poturai <Mykyta_Poturai@epam.com>, "xen-devel@lists.xenproject.org"
	<xen-devel@lists.xenproject.org>
CC: =?UTF-8?Q?Roger_Pau_Monn=C3=A9?= <roger.pau@citrix.com>, "Daniel P. Smith"
	<dpsmith@apertussolutions.com>
References: <cover.1775742115.git.mykyta_poturai@epam.com>
 <a0abd984989237d2f36e1628db577fb25af1cdbe.1775742115.git.mykyta_poturai@epam.com>
Content-Language: en-US
From: Stewart Hildebrand <stewart.hildebrand@amd.com>
In-Reply-To: <a0abd984989237d2f36e1628db577fb25af1cdbe.1775742115.git.mykyta_poturai@epam.com>
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: 8bit
X-EOPAttributedMessage: 0
X-MS-PublicTrafficType: Email
X-MS-TrafficTypeDiagnostic: BN2PEPF00004FBC:EE_|DS0PR12MB8366:EE_
X-MS-Office365-Filtering-Correlation-Id: 894627f6-9595-4e1e-f467-08dea56191d2
X-MS-Exchange-SenderADCheck: 1
X-MS-Exchange-AntiSpam-Relay: 0
X-Microsoft-Antispam:
	BCL:0;ARA:13230040|1800799024|376014|82310400026|36860700016|22082099003|18002099003|56012099003;
X-Microsoft-Antispam-Message-Info:
	SkFn9AmsvAxALFWwFf3u5yCqM8GPKibI113/OOLTtdveoI4wJ/oLtP4/iZ8yLQp1vX8lCoh7Vfb+b2xw+oF61VVxdTEynG4PnjL8FHf6M/rmv2J5JNHi9iVxt/sfaRAjSkQBSbd9XEOEC9M1+sJ4UPNmSU5Ns8jqt4orojNyOZcRXypnNMfZhr9IwACB8nhcx4vouHHk81NwHwdF00fdpYdN0jdM0L139gr3+YIzBf+eOfWHHrQwtTQl7HjVbDczalrQ6gGlD7HJABOq54xnubC78yS0iC50IqChX/VLFNcaOjIMl6+itvoIAmynVrqaSFiQhQvhk1FMCDVZgPDFLB81BnmXTFCe2ZQ6smqq7rhBBd61NvTLIVdwbn189541XnuaRrrxFaqVOApkA7ihKdjrkV/7V3+45ASEiJgatz4/fr+F9aSCXTlZJEPwo8ki27w9Y3o2AbAvnkybG/Die90fasQvcBWGksTbBGM+wMFXXONr/Mr/zJ9QRO6u/SotHu8sBkJiNak8A8K+ighxWTDAXi0+01GjanAtLlfqdT6Z0bdL+P5LJdYQ2I9JE9Pi07j+gLd3cSzK9Vf1uMzwhRAQaWMb08PH4iVn9d+IYFg3hYQKsfr/UW+kH48GlgrnjlXPTvIFnOcjXZFnoLKwlRuxuq6VazgseMiziM/kEqpCRzKp+zcJjsbKF5DBpTLUYTfTvGYy6TRr75yInBls4/13uYr1iPj9IWN0Iv/IP76CVtuNgN66Gm+l6OKY6ktjBpUMIRAxQQ7qnnnh5B/C4w==
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)(82310400026)(36860700016)(22082099003)(18002099003)(56012099003);DIR:OUT;SFP:1101;
X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1
X-MS-Exchange-AntiSpam-MessageData-0:
	dmhf0mokdWGpkI+mmpUQ7GitauQav2GdIeAFiTte9uzaFO3289fQAcwyzJk+yKVczED1fojqj3hARYC0pWnmtrDtxhDpmuQfGkjlLtlzy/A5KfTxQWbhvOkSKpEZd/DRIiNvQBCLhkh6Pip3mw/L//I43nEjOaM+2kGZpPs6y+phIGkbju6kpJYlNuHXDS6rX55V9h6gRm/j9T9Z+TiOnk02GE/WhnF7XCPnBvzRC9qc7po2gu0qfYGucpefyNe65CGgzrWpdRXN9Boil65gAV6YCany5VUno8mNPqJ8IveXEHbE5WpYiUR5Pi/rhi5msuoz06FQoOqeZma3F5xO3nCj66N6ThP86Mkd7nnFyLEr1xyAp08hatHdMnFFynfp4crFn4USnkpBFGpRHe6IEk6abI0np8HbayDWc0L67vxEMjhUmTx9IXJVKDNGrLuY
X-OriginatorOrg: amd.com
X-MS-Exchange-CrossTenant-OriginalArrivalTime: 28 Apr 2026 20:06:00.9670
 (UTC)
X-MS-Exchange-CrossTenant-Network-Message-Id: 894627f6-9595-4e1e-f467-08dea56191d2
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:
	BN2PEPF00004FBC.namprd04.prod.outlook.com
X-MS-Exchange-CrossTenant-AuthAs: Anonymous
X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem
X-MS-Exchange-Transport-CrossTenantHeadersStamped: DS0PR12MB8366
X-purgate-ID: tlsNG-4011c0/1777406767-4576D8B7-54372D30/0/0
X-purgate-type: clean
X-purgate-size: 15072

On 4/9/26 10:01, Mykyta Poturai wrote:
> From: Stewart Hildebrand <stewart.hildebrand@amd.com>
> 
> This code is expected to only be used by privileged domains,
> unprivileged domains should not get access to the SR-IOV capability.
> 
> Implement RW handlers for PCI_SRIOV_CTRL register to dynamically
> map/unmap VF BARS. Recalculate BAR sizes before mapping VFs to account
> for possible changes in the system page size register. Also force VFs to
> always use emulated reads for command register, this is needed to
> prevent some drivers accidentally unmapping BARs. Discovery of VFs is
> done by Dom0, which must register them with Xen.
> 
> Signed-off-by: Roger Pau Monné <roger.pau@citrix.com>
> Signed-off-by: Stewart Hildebrand <stewart.hildebrand@amd.com>
> Signed-off-by: Mykyta Poturai <mykyta_poturai@epam.com>
> ---
> v2->v3:
> * rework adding VFs with multiple mapping operations support
> * use private.h
> * style fixes
> * fixup cleanup_sriov
> * emulate command register read for VFs

Also noteworthy: switched back to no longer adding VFs within Xen.

> 
> v1->v2:
> * switch to VF discovery by Xen
> * fix sequential vpci_modify_bars calls
> * move documentation changes to a separate commit
> ---
>  xen/drivers/vpci/Makefile  |   1 +
>  xen/drivers/vpci/header.c  |   6 +-
>  xen/drivers/vpci/private.h |   1 +
>  xen/drivers/vpci/sriov.c   | 314 +++++++++++++++++++++++++++++++++++++
>  xen/include/xen/vpci.h     |   7 +-
>  5 files changed, 327 insertions(+), 2 deletions(-)
>  create mode 100644 xen/drivers/vpci/sriov.c
> 
> diff --git a/xen/drivers/vpci/Makefile b/xen/drivers/vpci/Makefile
> index 9793a4f9b0..8b0e3c03a7 100644
> --- a/xen/drivers/vpci/Makefile
> +++ b/xen/drivers/vpci/Makefile
> @@ -1,3 +1,4 @@
>  obj-y += cap.o
>  obj-y += vpci.o header.o rebar.o
> +obj-y += sriov.o
>  obj-$(CONFIG_HAS_PCI_MSI) += msi.o msix.o
> diff --git a/xen/drivers/vpci/header.c b/xen/drivers/vpci/header.c
> index 451cdd3a6f..a36285672e 100644
> --- a/xen/drivers/vpci/header.c
> +++ b/xen/drivers/vpci/header.c
> @@ -869,7 +869,8 @@ int vpci_init_header(struct pci_dev *pdev)
>       * PCI_COMMAND_PARITY, PCI_COMMAND_SERR, and PCI_COMMAND_FAST_BACK.
>       */
>      rc = vpci_add_register_mask(pdev->vpci,
> -                                is_hwdom ? vpci_hw_read16 : guest_cmd_read,
> +                                is_hwdom && !pdev->info.is_virtfn
> +                                ? vpci_hw_read16 : guest_cmd_read,
>                                  cmd_write, PCI_COMMAND, 2, header, 0, 0,
>                                  is_hwdom ? 0
>                                           : PCI_COMMAND_RSVDP_MASK |
> @@ -900,6 +901,9 @@ int vpci_init_header(struct pci_dev *pdev)
>  
>      header->guest_cmd = cmd;
>  
> +    if ( pdev->info.is_virtfn )
> +        return vpci_vf_init_header(pdev);
> +
>      /* Disable memory decoding before sizing. */
>      if ( !is_hwdom || (cmd & PCI_COMMAND_MEMORY) )
>          pci_conf_write16(pdev->sbdf, PCI_COMMAND, cmd & ~PCI_COMMAND_MEMORY);
> diff --git a/xen/drivers/vpci/private.h b/xen/drivers/vpci/private.h
> index f012fd160d..8e0043ddbe 100644
> --- a/xen/drivers/vpci/private.h
> +++ b/xen/drivers/vpci/private.h
> @@ -45,6 +45,7 @@ typedef struct {
>      REGISTER_VPCI_CAPABILITY(PCI_EXT_CAP_ID_##name, name, finit, fclean, true)
>  
>  int __must_check vpci_init_header(struct pci_dev *pdev);
> +int __must_check vpci_vf_init_header(struct pci_dev *pdev);
>  
>  int vpci_init_capabilities(struct pci_dev *pdev, bool ext_only);
>  void vpci_cleanup_capabilities(struct pci_dev *pdev, bool ext_only);
> diff --git a/xen/drivers/vpci/sriov.c b/xen/drivers/vpci/sriov.c
> new file mode 100644
> index 0000000000..ec6a7b84d5
> --- /dev/null
> +++ b/xen/drivers/vpci/sriov.c
> @@ -0,0 +1,314 @@
> +/* SPDX-License-Identifier: GPL-2.0-only */
> +/*
> + * Handlers for accesses to the SR-IOV capability structure.
> + *
> + * Copyright (C) 2026 Citrix Systems R&D
> + */
> +
> +#include <xen/sched.h>
> +#include <xen/vpci.h>
> +#include <xsm/xsm.h>
> +#include "private.h"
Should "private.h" move up so it's first?

> +
> +static int vf_init_bars(const struct pci_dev *vf_pdev)
> +{
> +    int vf_idx;
> +    unsigned int i;
> +    const struct pci_dev *pf_pdev = vf_pdev->pf_pdev;
> +    struct vpci_bar *bars = vf_pdev->vpci->header.bars;
> +    struct vpci_bar *physfn_vf_bars = pf_pdev->vpci->sriov->vf_bars;
> +    unsigned int sriov_pos = pci_find_ext_capability(pf_pdev,
> +                                                     PCI_EXT_CAP_ID_SRIOV);
> +    uint16_t offset = pci_conf_read16(pf_pdev->sbdf,
> +                                      sriov_pos + PCI_SRIOV_VF_OFFSET);
> +    uint16_t stride = pci_conf_read16(pf_pdev->sbdf,
> +                                      sriov_pos + PCI_SRIOV_VF_STRIDE);
> +
> +    vf_idx = vf_pdev->sbdf.sbdf - (pf_pdev->sbdf.sbdf + offset);
> +    if ( vf_idx < 0 )
> +        return -EINVAL;
> +
> +    if ( stride )
> +    {
> +        if ( vf_idx % stride )
> +            return -EINVAL;
> +        vf_idx /= stride;
> +    }
> +
> +    /*
> +     * Set up BARs for this VF out of PF's VF BARs taking into account
> +     * the index of the VF.
> +     */
> +    for ( i = 0; i < PCI_SRIOV_NUM_BARS; i++ )
> +    {
> +        bars[i].addr = physfn_vf_bars[i].addr + vf_idx * physfn_vf_bars[i].size;
> +        bars[i].guest_addr = bars[i].addr;

We don't want to leak the host address to domUs, i.e. you might consider doing
something like:
    bars[i].guest_addr = is_hardware_domain(d) ? bars[i].addr : 0;

> +        bars[i].size = physfn_vf_bars[i].size;
> +        bars[i].type = physfn_vf_bars[i].type;
> +        bars[i].prefetchable = physfn_vf_bars[i].prefetchable;
> +    }
> +
> +    return 0;
> +}
> +
> +static int map_vfs(const struct pci_dev *pf_pdev, uint16_t cmd)
> +{
> +    struct pci_dev *vf_pdev;
> +    int rc;
> +
> +    ASSERT(rw_is_write_locked(&pf_pdev->domain->pci_lock));
> +
> +    list_for_each_entry(vf_pdev, &pf_pdev->vf_list, vf_list)
> +    {
> +        rc = vpci_modify_bars(vf_pdev, cmd, false);
> +        if ( rc )
> +        {
> +            gprintk(XENLOG_ERR, "failed to %s VF %pp: %d\n",
> +                    (cmd & PCI_COMMAND_MEMORY) ? "map" : "unmap",
> +                    &vf_pdev->sbdf, rc);
> +            return rc;
> +        }
> +
> +        vf_pdev->vpci->header.guest_cmd &= ~PCI_COMMAND_MEMORY;
> +        vf_pdev->vpci->header.guest_cmd |= (cmd & PCI_COMMAND_MEMORY);
> +    }
> +
> +    return 0;
> +}
> +
> +static int size_vf_bars(const struct pci_dev *pf_pdev, unsigned int sriov_pos,
> +                        uint64_t *vf_rlen)
> +{
> +    struct vpci_bar *bars;
> +    unsigned int i;
> +    int rc = 0;
> +
> +    ASSERT(rw_is_write_locked(&pf_pdev->domain->pci_lock));
> +    ASSERT(!pf_pdev->info.is_virtfn);
> +    ASSERT(pf_pdev->vpci->sriov);
> +
> +    /* Read BARs for VFs out of PF's SR-IOV extended capability. */
> +    bars = pf_pdev->vpci->sriov->vf_bars;
> +    /* Set the BARs addresses and size. */
> +    for ( i = 0; i < PCI_SRIOV_NUM_BARS; i += rc )
> +    {
> +        unsigned int idx = sriov_pos + PCI_SRIOV_BAR + i * 4;
> +        uint32_t bar;
> +        uint64_t addr, size;
> +
> +        bar = pci_conf_read32(pf_pdev->sbdf, idx);
> +
> +        rc = pci_size_mem_bar(pf_pdev->sbdf, idx, &addr, &size,
> +                              PCI_BAR_VF |
> +                              ((i == PCI_SRIOV_NUM_BARS - 1) ? PCI_BAR_LAST
> +                                                             : 0));
> +
> +        /*
> +         * Update vf_rlen on the PF. According to the spec the size of
> +         * the BARs can change if the system page size register is
> +         * modified, so always update rlen when enabling VFs.
> +         */
> +        vf_rlen[i] = size;
> +
> +        if ( !size )
> +        {
> +            bars[i].type = VPCI_BAR_EMPTY;
> +            continue;
> +        }
> +
> +        bars[i].addr = addr;
> +        bars[i].guest_addr = addr;
> +        bars[i].size = size;
> +        bars[i].prefetchable = bar & PCI_BASE_ADDRESS_MEM_PREFETCH;
> +
> +        switch ( rc )
> +        {
> +        case 1:
> +            bars[i].type = VPCI_BAR_MEM32;
> +            break;
> +
> +        case 2:
> +            bars[i].type = VPCI_BAR_MEM64_LO;
> +            bars[i + 1].type = VPCI_BAR_MEM64_HI;
> +            break;
> +
> +        default:
> +            ASSERT_UNREACHABLE();
> +        }
> +    }
> +
> +    rc = rc > 0 ? 0 : rc;
> +
> +    return rc;
> +}
> +
> +static void cf_check control_write(const struct pci_dev *pdev, unsigned int reg,
> +                                   uint32_t val, void *data)
> +{
> +    unsigned int sriov_pos = reg - PCI_SRIOV_CTRL;
> +    struct vpci_sriov *sriov = pdev->vpci->sriov;
> +    uint16_t control = pci_conf_read16(pdev->sbdf, reg);
> +    bool mem_enabled = control & PCI_SRIOV_CTRL_MSE;
> +    bool new_mem_enabled = val & PCI_SRIOV_CTRL_MSE;
> +    bool enabled = control & PCI_SRIOV_CTRL_VFE;
> +    bool new_enabled = val & PCI_SRIOV_CTRL_VFE;
> +    int rc;
> +
> +    ASSERT(!pdev->info.is_virtfn);
> +
> +    if ( new_enabled == enabled && new_mem_enabled == mem_enabled )
> +    {
> +        pci_conf_write16(pdev->sbdf, reg, val);
> +        return;
> +    }
> +
> +    if ( mem_enabled && !new_mem_enabled )
> +        map_vfs(pdev, 0);
> +
> +    if ( !enabled && new_enabled )
> +    {
> +        size_vf_bars(pdev, sriov_pos, (uint64_t *)data);
> +
> +        /*
> +         * Only update the number of active VFs when enabling, when
> +         * disabling use the cached value in order to always remove the same
> +         * number of VFs that were active.
> +         */
> +        sriov->num_vfs = pci_conf_read16(pdev->sbdf,
> +                                         sriov_pos + PCI_SRIOV_NUM_VF);
> +    }
> +
> +    if ( !mem_enabled && new_mem_enabled )
> +    {
> +        rc = map_vfs(pdev, PCI_COMMAND_MEMORY);
> +
> +        if ( rc )
> +            map_vfs(pdev, 0);
> +    }
> +
> +    pci_conf_write16(pdev->sbdf, reg, val);
> +}
> +
> +int vpci_vf_init_header(struct pci_dev *vf_pdev)
> +{
> +    const struct pci_dev *pf_pdev;
> +    unsigned int sriov_pos;
> +    int rc = 0;
> +    uint16_t ctrl;
> +
> +    ASSERT(rw_is_write_locked(&vf_pdev->domain->pci_lock));
> +
> +    if ( !vf_pdev->info.is_virtfn )
> +        return 0;
> +
> +    pf_pdev = vf_pdev->pf_pdev;
> +    ASSERT(pf_pdev);
> +
> +    rc = vf_init_bars(vf_pdev);
> +    if ( rc )
> +        return rc;
> +
> +    sriov_pos = pci_find_ext_capability(pf_pdev, PCI_EXT_CAP_ID_SRIOV);
> +    ctrl = pci_conf_read16(pf_pdev->sbdf, sriov_pos + PCI_SRIOV_CTRL);
> +
> +    if ( (pf_pdev->domain == vf_pdev->domain) && (ctrl & PCI_SRIOV_CTRL_MSE) )
> +    {
> +        rc = vpci_modify_bars(vf_pdev, PCI_COMMAND_MEMORY, false);
> +        if ( rc )
> +            return rc;
> +
> +        vf_pdev->vpci->header.guest_cmd |= PCI_COMMAND_MEMORY;
> +    }
> +
> +    return rc;
> +}
> +
> +static int cf_check init_sriov(struct pci_dev *pdev)
> +{
> +    unsigned int pos;
> +
> +    ASSERT(!pdev->info.is_virtfn);
> +
> +    pos = pci_find_ext_capability(pdev, PCI_EXT_CAP_ID_SRIOV);
> +
> +    if ( !pos )
> +        return 0;
> +
> +    if ( xsm_resource_setup_pci(XSM_PRIV, pdev->sbdf.bdf) )
> +    {
> +        printk(XENLOG_ERR
> +               "%pp: SR-IOV configuration unsupported for unpriv %pd\n",
> +               &pdev->sbdf, pdev->domain);
> +        return -EACCES;
> +    }
> +
> +    pdev->vpci->sriov = xzalloc(struct vpci_sriov);

Don't we prefer xvzalloc now? If so, changing this should be paired with a
corresponding XVFREE in the cleanup handler.

> +    if ( !pdev->vpci->sriov )
> +        return -ENOMEM;
> +
> +    /*
> +     * We need to modify vf_rlen in control_write but we can't do it cleanly
> +     * from pdev because write callback only accepts const pdev. Moving vf_rlen
> +     * inside of struct vpci_sriov is also not possible because it is used
> +     * before vpci init. So pass it here as additional data to not require
> +     * dropping const in control_write.
> +     */
> +    return vpci_add_register(pdev->vpci, vpci_hw_read16, control_write,
> +                             pos + PCI_SRIOV_CTRL, 2, &pdev->physfn.vf_rlen);
> +}
> +
> +static int cf_check cleanup_sriov(const struct pci_dev *pdev, bool hide)
> +{
> +    unsigned int pos;
> +    int rc;
> +
> +    if ( !pdev->vpci->sriov )
> +        return 0;
> +
> +    ASSERT(!pdev->info.is_virtfn);
> +    ASSERT(list_empty(&pdev->vf_list));
> +
> +    if ( !hide )
> +    {
> +        XFREE(pdev->vpci->sriov);
> +        return 0;
> +    }
> +
> +    pos = pci_find_ext_capability(pdev, PCI_EXT_CAP_ID_SRIOV);
> +    rc = vpci_remove_registers(pdev->vpci, pos + PCI_SRIOV_CTRL, 2);
> +    if ( rc )
> +    {
> +        printk(XENLOG_ERR "%pd %pp: fail to remove SRIOV handlers rc=%d\n",
> +                pdev->domain, &pdev->sbdf, rc);
> +        ASSERT_UNREACHABLE();
> +        return rc;
> +    }
> +    XFREE(pdev->vpci->sriov);
> +
> +    /*
> +     * Unprivileged domains have a deny by default register access policy, no
> +     * need to add any further handlers for them.
> +     */
> +    if ( !is_hardware_domain(pdev->domain) )
> +        return 0;
> +
> +    rc = vpci_add_register(pdev->vpci, vpci_hw_read16, NULL,
> +                           pos + PCI_SRIOV_CTRL, 2, NULL);
> +    if ( rc )
> +        printk(XENLOG_ERR "%pd %pp: fail to add SRIOV ctrl handler rc=%d\n",
> +               pdev->domain, &pdev->sbdf, rc);
> +
> +    return rc;
> +}
> +
> +REGISTER_VPCI_EXTCAP(SRIOV, init_sriov, cleanup_sriov);
> +
> +/*
> + * Local variables:
> + * mode: C
> + * c-file-style: "BSD"
> + * c-basic-offset: 4
> + * tab-width: 4
> + * indent-tabs-mode: nil
> + * End:
> + */
> diff --git a/xen/include/xen/vpci.h b/xen/include/xen/vpci.h
> index e34f7abe6d..fc8a943abe 100644
> --- a/xen/include/xen/vpci.h
> +++ b/xen/include/xen/vpci.h
> @@ -84,7 +84,6 @@ struct vpci {
>           * upon to know whether BARs are mapped into the guest p2m.
>           */
>          bool bars_mapped      : 1;
> -        /* FIXME: currently there's no support for SR-IOV. */
>      } header;
>  
>      /* MSI data. */
> @@ -145,6 +144,12 @@ struct vpci {
>          unsigned int nbars:3;
>      } rebar;
>  
> +    struct vpci_sriov {
> +        /* PF only */
> +        struct vpci_bar vf_bars[PCI_SRIOV_NUM_BARS];
> +        uint16_t num_vfs;
> +    } *sriov;
> +
>  #ifdef CONFIG_HAS_VPCI_GUEST_SUPPORT
>      /* Guest SBDF of the device. */
>  #define INVALID_GUEST_SBDF ((pci_sbdf_t){ .sbdf = ~0U })



From xen-devel-bounces@lists.xenproject.org Tue Apr 28 20:22:29 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 28 Apr 2026 20:22:29 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1296845.1573054 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wHowf-0004Em-Il; Tue, 28 Apr 2026 20:22:13 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1296845.1573054; Tue, 28 Apr 2026 20:22: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 1wHowf-0004Ef-Fm; Tue, 28 Apr 2026 20:22:13 +0000
Received: by outflank-mailman (input) for mailman id 1296845;
 Tue, 28 Apr 2026 20:22:11 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <nicola.vetrini@bugseng.com>) id 1wHowd-0004EZ-UF
 for xen-devel@lists.xenproject.org; Tue, 28 Apr 2026 20:22:11 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wHowd-0066fT-AU
 for xen-devel@lists.xenproject.org; Tue, 28 Apr 2026 22:22:11 +0200
Received: from [10.42.69.2] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <nicola.vetrini@bugseng.com>)
 id 69f116ef-bab6-0a2a0a5309dd-0a2a4502d1a6-6
 for <xen-devel@lists.xenproject.org>; Tue, 28 Apr 2026 22:22:11 +0200
Received: from [162.55.131.47] (helo=support.bugseng.com)
 by tlsNG-720697.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.1)
 (envelope-from <nicola.vetrini@bugseng.com>)
 id 69f116f3-af86-0a2a45020019-a237832fc7c0-3
 for <xen-devel@lists.xenproject.org>; Tue, 28 Apr 2026 22:22:11 +0200
Received: from support.bugseng.com (support.bugseng.com [162.55.131.47])
 (Authenticated sender: nicola)
 by support.bugseng.com (Postfix) with ESMTPA id CDB514EE3D4B;
 Tue, 28 Apr 2026 22:22:10 +0200 (CEST)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-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
Authentication-Results: bugseng.com; arc=none smtp.remote-ip=162.55.131.47
ARC-Seal: i=1; d=bugseng.com; s=openarc; a=rsa-sha256; cv=none; t=1777407731;
	b=L9HYxzD6yfMPRcXI/KX4VWloGcTZVZZ30lzMkkt93oSxTomS1U/RkMKT6xEKT8GuasXw
	 SHeOI56NMaIV4GsSxO9VsoDxtfhFVFVC2AzihpUhu0GHRUVOZnuaHiGBVqYpyR4ARXUJH
	 aiNVUdbH6cS2SMZ+HwE/pM0kG4feaT0IY5iHT0KLchqWsWBvIuR3rAw1hPSBFGdhT8cjC
	 LK6E4h58TldThHe+A1ZUCuku3i3/e0mqOTxz4Hj8qwM1BdfoJU7i1qnjlUU8DZviOu6/F
	 ekDuVdD93D7iTvRdBkC6p8iiLxDr/ABqrgbWwTK4KeSgX1zg5h9iTVatYWDko0/vRAVHF
	 hpO9/O4gEsve1GmIcUI8gGey0eqOC4iFCI4375q6ETb3xtd87ePzJxDRhnqSGfAaAOCWr
	 wE45EzhfzM3zXB4u/gEDkSEKGiWQ9ZOUSUS3x9qJyBGQpSzHX6OMSYddfjYUox23tYNSH
	 guR4NornV8V0dvRqNztFt/tAiHQfCMRE1nNC0INUOMZTbHfvi7rG5dzWHkxALPchlKL0Y
	 WHNnOStdK9M8w2JkwfIDFvnM5nRXvIHw67rJ8yk/pgnV6jipIswWZS4ffnyj7mIm5TLpW
	 yEd7UPihXrHVqixabJV9FyNBmD5ZZi3SHQtmM6b33mW+obf17CpJZdKPVeGzTOk=
ARC-Message-Signature: i=1; d=bugseng.com; s=openarc; a=rsa-sha256;
	c=relaxed/relaxed; t=1777407731;
	h=MIME-Version:Date:From:To:Cc:Subject:In-Reply-To:References:
	 Message-ID:X-Sender:Organization:Content-Type:
	 Content-Transfer-Encoding;
	bh=MeGrH7FFVtCqyv/NbgnvNcXlzgvwjVd3HPzbRlDpFcA=;
	b=XR0X/LFs+qjMVkkJXw12/NPWZHxnmWz3/JWRN5mzwxFw2ABmqQK8uiGkzQhBiMw/VQFb
	 A1gqOlzmTR07Uo/fHugo/gUgtKtTgB98psyiaPoslfuGzfubminfX1++0SKolO/nIrsf0
	 IQoTCIFZAy3ft8w0IAdgiFYHSoFHhII61HAvmV2YsjZcJMcPRSaelGLdRZ5dzu1PBW/kG
	 HDBGgLA40ru/Lu71sKz8IiNyxg0V4K2sAsqjCuhn4gzNI6kxLMF8uj09j5OkXpfro7BnA
	 IWFxhbsAzvOvp+ZeceuboT/S9pL7V1N3c5yGNKMH4AoaknKDa/ck3oHJga5sroc+HQcYD
	 eJ2yGg5oSm2Gly0k4LeWEzZxJ6kTcdFD/YjTM3FPiUGMQE7FW/dA1ImNTuBxWw4LdyMNy
	 McSMnwY+mRW6iwdEwZzC2PoTtVgip7tu8qBqPtzakMMWqO56nJzeVT2HZjDGEsHqs6+tB
	 20/X2PUpTRoJwfAlTz7CGTF9QHcxZQK5K4WFEeX+GsiHtAHw3lhOzu6ZUWL3tF86bGi1/
	 /7yZnch+CM/Qe27cHb4sz85410uZjB9V8grepeJuJqqts+ejmuNoG8+gnuOi/CwKte1FW
	 erine2Zim4qdXYQ02fDQr9ihsuqpKMFZnJ9SwIrbWJ9dyfE4d0qS0bIDBmXNFAI=
ARC-Authentication-Results: i=1; bugseng.com; arc=none smtp.remote-ip=162.55.131.47
MIME-Version: 1.0
Date: Tue, 28 Apr 2026 22:22:10 +0200
From: Nicola Vetrini <nicola.vetrini@bugseng.com>
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>
Subject: Re: [PATCH] docs: Format (void *) to fix reStructuredText emphasis
 warnings
In-Reply-To: <05b61bdfce381176a6c4b8844db1fba3fa0982ce.1777401225.git.bernhard.kaindl@citrix.com>
References: <05b61bdfce381176a6c4b8844db1fba3fa0982ce.1777401225.git.bernhard.kaindl@citrix.com>
Message-ID: <a5b035c721707c53756b45e48ad473ee@bugseng.com>
X-Sender: nicola.vetrini@bugseng.com
Organization: BUGSENG s.r.l.
Content-Type: text/plain; charset=UTF-8;
 format=flowed
Content-Transfer-Encoding: 8bit
X-purgate-ID: tlsNG-720697/1777407731-82D6F161-4F702448/0/0
X-purgate-type: clean
X-purgate-size: 3849

On 2026-04-28 20:34, Bernhard Kaindl wrote:
> Fix warnings when rendering the Sphinx documentation because
> with reStructuredText, in the character sequence of '(void *)',
> the characters *) are seen as an emphasis start-string:
> 
> WARNING: Inline emphasis start-string without end-string. [docutils]
> 
> Fix this by formatting it with ``(void *)`` as an inline literal
> which can be used for monospaced code snippets like these that
> can contain any characters without any markup interpretation.
> 
> Signed-off-by: Bernhard Kaindl <bernhard.kaindl@citrix.com>
Reviewed-by: Nicola Vetrini <nicola.vetrini@bugseng.com>

See nit below
> ---
> Preview based on the new theme and design docs arrangement just 
> submitted:
> https://bernhard-xen.readthedocs.io/en/void/misra/rules.html
> https://bernhard-xen.readthedocs.io/en/void/misra/deviations.html
> ---
>  docs/misra/deviations.rst | 4 ++--
>  docs/misra/rules.rst      | 6 +++---
>  2 files changed, 5 insertions(+), 5 deletions(-)
> 
> diff --git a/docs/misra/deviations.rst b/docs/misra/deviations.rst
> index b04830959694..c972d5b2ad49 100644
> --- a/docs/misra/deviations.rst
> +++ b/docs/misra/deviations.rst
> @@ -366,13 +366,13 @@ Deviations related to MISRA C:2012 Rules:
>       - Tagged as `safe` for ECLAIR.
> 
>     * - R11.1
> -     - The conversion from a function pointer to unsigned long or 
> '(void *)' does
> +     - The conversion from a function pointer to unsigned long or 
> ``(void *)`` does
>         not lose any information, provided that the target type has 
> enough bits
>         to store it.
>       - Tagged as `safe` for ECLAIR.
> 
>     * - R11.1
> -     - Conversion from unsigned long or '(void *)' to a function 
> pointer can
> +     - Conversion from unsigned long or ``(void *)`` to a function 
> pointer can
>         restore full information, provided that the source type has 
> enough bits
>         to restore it.

There are further instance below which should similarly be rendered with 
a monospaced font, as they are code

e.g.

The conversion from ‘void noreturn (*)(…)’ to ‘void (*)(…)’ is safe 
because the semantics of the ‘noreturn’ attribute

Perhaps those don't cause warnings, but if we want to visualize this as 
code in a monospaced font, then it probably should be uniformly used in 
the document. We haven't been 100% consistent when writing these 
documents originally; partly due to the fact that different people were 
involved, but this could be an occasion to remedy that.

But perhaps that is best done in a follow-up patch, so feel free to take 
my r-by for this patch.

>       - Tagged as `safe` for ECLAIR.
> diff --git a/docs/misra/rules.rst b/docs/misra/rules.rst
> index b3e929307d51..fc6fdfd313d0 100644
> --- a/docs/misra/rules.rst
> +++ b/docs/misra/rules.rst
> @@ -430,9 +430,9 @@ maintainers if you want to suggest a change.
>         and any other type
>       - All conversions to integer types are permitted if the 
> destination
>         type has enough bits to hold the entire value. Conversions to 
> bool
> -       and void* are permitted. Conversions from 'void noreturn 
> (*)(...)'
> -       to 'void (*)(...)' are permitted. Conversions from unsigned 
> long or
> -       '(void *)' to a function pointer are permitted.
> +       and ``void *`` are permitted. Conversions from ``void noreturn 
> (*)(...)``
> +       to ``void (*)(...)`` are permitted. Conversions from unsigned 
> long or
> +       ``(void *)`` to a function pointer are permitted.
>         Example::
> 
>             unsigned long func_addr = (unsigned long)&some_function;

-- 
Nicola Vetrini, B.Sc.
Software Engineer
BUGSENG (https://bugseng.com)
LinkedIn: https://www.linkedin.com/in/nicola-vetrini-a42471253


From xen-devel-bounces@lists.xenproject.org Wed Apr 29 05:44:21 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 29 Apr 2026 05:44:21 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1296939.1573072 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wHxiR-00084z-LT; Wed, 29 Apr 2026 05:44:07 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1296939.1573072; Wed, 29 Apr 2026 05:44: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 1wHxiR-00084s-Ia; Wed, 29 Apr 2026 05:44:07 +0000
Received: by outflank-mailman (input) for mailman id 1296939;
 Wed, 29 Apr 2026 05:44:06 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <bertrand.marquis@arm.com>) id 1wHxiQ-00084I-MM
 for xen-devel@lists.xenproject.org; Wed, 29 Apr 2026 05:44:06 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wHxiQ-003p6b-21
 for xen-devel@lists.xenproject.org; Wed, 29 Apr 2026 07:44:06 +0200
Received: from [10.42.69.10] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <bertrand.marquis@arm.com>)
 id 69f19aa3-e002-0a2a0a5209dd-0a2a450ae8ea-2
 for <xen-devel@lists.xenproject.org>; Wed, 29 Apr 2026 07:44:06 +0200
Received: from [217.140.110.172] (helo=foss.arm.com)
 by tlsNG-4011c0.mxtls.expurgate.net with ESMTP (eXpurgate 4.56.1)
 (envelope-from <bertrand.marquis@arm.com>)
 id 69f19aa5-56b3-0a2a450a0019-d98c6eac86d2-1
 for <xen-devel@lists.xenproject.org>; Wed, 29 Apr 2026 07:44:05 +0200
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 209DA2BCE;
 Tue, 28 Apr 2026 22:43:59 -0700 (PDT)
Received: from C3HXLD123V.arm.com (unknown [10.57.90.163])
 by usa-sjc-imap-foss1.foss.arm.com (Postfix) with ESMTPSA id 3EAE33F62B;
 Tue, 28 Apr 2026 22:44:03 -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=foss header.d=arm.com header.i="@arm.com" header.h="From:To:Cc:Subject:Date:In-Reply-To:References"
DKIM-Signature: v=1; a=rsa-sha256; c=simple/simple; d=arm.com; s=foss;
	t=1777441444; bh=D0cWhXb5cOQnh67SWhy+Xw1f5uxdZNslX4hyB6LTlbM=;
	h=From:To:Cc:Subject:Date:In-Reply-To:References:From;
	b=mP5yOT8W5xF9s2AHoIo0HBtQluRfUBB5R3yG9h/hpcntrzT1TI4lVdaFvPbZ22Ua2
	 mIvQ9MiuE5m5zwRgaUmg3JSK4ROlrF2xVxlIYmLWlag0x2D6lASoV+qnRQZWc/5ccr
	 bsi8k3W4LWPaLtKHmF2ZECs1o56euNT4DIGSZ11A=
From: Bertrand Marquis <bertrand.marquis@arm.com>
To: xen-devel@lists.xenproject.org
Cc: Volodymyr Babchuk <volodymyr_babchuk@epam.com>,
	Jens Wiklander <jens.wiklander@linaro.org>,
	Stefano Stabellini <sstabellini@kernel.org>,
	Julien Grall <julien@xen.org>,
	Michal Orzel <michal.orzel@amd.com>
Subject: [PATCH v2 1/6] xen/arm: ffa: Fix NPI injection when vcpu0 is offline
Date: Wed, 29 Apr 2026 07:43:22 +0200
Message-ID: <2a36253fca9c23681fea0d5493faeb3044de558d.1776955622.git.bertrand.marquis@arm.com>
X-Mailer: git-send-email 2.53.0
In-Reply-To: <cover.1776955622.git.bertrand.marquis@arm.com>
References: <cover.1776955622.git.bertrand.marquis@arm.com>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit
X-purgate-ID: tlsNG-4011c0/1777441446-4415A8B7-5EAC21DC/0/0
X-purgate-type: clean
X-purgate-size: 3404

RX-buffer-full notifications currently inject the notification pending
interrupt through vcpu0 only. Secure notification delivery already walks
the domain's online vCPUs, but the RX-buffer-full path does not. When
vcpu0 is offline, the notification remains pending and the guest never
receives it.

Extract the common notification injection path and reuse it from
ffa_raise_rx_buffer_full(). The shared helper delivers the global
notification to the first online vCPU and keeps the existing ratelimited
debug message when none are online.

Functional impact: RX-buffer-full notifications are delivered even when
vcpu0 is offline.

Fixes: 3935c705688e ("xen/arm: ffa: Add buffer full notification support")

Signed-off-by: Bertrand Marquis <bertrand.marquis@arm.com>
Reviewed-by: Jens Wiklander <jens.wiklander@linaro.org>
---
Changes since v1:
- add R-b from Jens
---
 xen/arch/arm/tee/ffa_notif.c | 45 ++++++++++++++++++++----------------
 1 file changed, 25 insertions(+), 20 deletions(-)

diff --git a/xen/arch/arm/tee/ffa_notif.c b/xen/arch/arm/tee/ffa_notif.c
index 186e72641237..07bc5cb3a430 100644
--- a/xen/arch/arm/tee/ffa_notif.c
+++ b/xen/arch/arm/tee/ffa_notif.c
@@ -19,6 +19,29 @@
 static bool __ro_after_init fw_notif_enabled;
 static unsigned int __ro_after_init notif_sri_irq;
 
+static void inject_notif_pending(struct domain *d)
+{
+    struct vcpu *v;
+
+    /*
+     * Since we're only delivering global notification, always
+     * deliver to the first online vCPU. It doesn't matter
+     * which we chose, as long as it's available.
+     */
+    for_each_vcpu(d, v)
+    {
+        if ( is_vcpu_online(v) )
+        {
+            vgic_inject_irq(d, v, GUEST_FFA_NOTIF_PEND_INTR_ID, true);
+            return;
+        }
+    }
+
+    if ( printk_ratelimit() )
+        printk(XENLOG_G_DEBUG "%pd: ffa: can't inject NPI, all vCPUs offline\n",
+               d);
+}
+
 int32_t ffa_handle_notification_bind(struct cpu_user_regs *regs)
 {
     struct domain *d = current->domain;
@@ -190,7 +213,7 @@ void ffa_raise_rx_buffer_full(struct domain *d)
 
     ACCESS_ONCE(ctx->notif.buff_full_pending) = true;
     if ( !test_and_set_bool(ctx->notif.vm_pending) )
-        vgic_inject_irq(d, d->vcpu[0], GUEST_FFA_NOTIF_PEND_INTR_ID, true);
+        inject_notif_pending(d);
 }
 #endif
 
@@ -238,7 +261,6 @@ static void notif_vm_pend_intr(uint16_t vm_id)
 {
     struct ffa_ctx *ctx;
     struct domain *d;
-    struct vcpu *v;
 
     /*
      * vm_id == 0 means a notifications pending for Xen itself, but
@@ -277,24 +299,7 @@ static void notif_vm_pend_intr(uint16_t vm_id)
      * it.
      */
     ACCESS_ONCE(ctx->notif.secure_pending) = true;
-
-    /*
-     * Since we're only delivering global notification, always
-     * deliver to the first online vCPU. It doesn't matter
-     * which we chose, as long as it's available.
-     */
-    for_each_vcpu(d, v)
-    {
-        if ( is_vcpu_online(v) )
-        {
-            vgic_inject_irq(d, v, GUEST_FFA_NOTIF_PEND_INTR_ID,
-                            true);
-            break;
-        }
-    }
-    if ( !v && printk_ratelimit() )
-        printk(XENLOG_G_DEBUG "%pd: ffa: can't inject NPI, all vCPUs offline\n",
-               d);
+    inject_notif_pending(d);
 
 out_unlock:
     rcu_unlock_domain(d);
-- 
2.53.0



From xen-devel-bounces@lists.xenproject.org Wed Apr 29 05:44:21 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 29 Apr 2026 05:44:21 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1296942.1573082 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wHxiT-0008J8-Rw; Wed, 29 Apr 2026 05:44:09 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1296942.1573082; Wed, 29 Apr 2026 05:44: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 1wHxiT-0008Iz-P6; Wed, 29 Apr 2026 05:44:09 +0000
Received: by outflank-mailman (input) for mailman id 1296942;
 Wed, 29 Apr 2026 05:44:08 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <bertrand.marquis@arm.com>) id 1wHxiS-0008En-GJ
 for xen-devel@lists.xenproject.org; Wed, 29 Apr 2026 05:44:08 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wHxiR-0078Bd-S1
 for xen-devel@lists.xenproject.org; Wed, 29 Apr 2026 07:44:07 +0200
Received: from [10.42.69.7] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <bertrand.marquis@arm.com>)
 id 69f19a9f-5cb7-0a2a0a5109dd-0a2a4507ede2-12
 for <xen-devel@lists.xenproject.org>; Wed, 29 Apr 2026 07:44:07 +0200
Received: from [217.140.110.172] (helo=foss.arm.com)
 by tlsNG-ef75cf.mxtls.expurgate.net with ESMTP (eXpurgate 4.56.1)
 (envelope-from <bertrand.marquis@arm.com>)
 id 69f19aa6-229c-0a2a45070019-d98c6eacb28e-1
 for <xen-devel@lists.xenproject.org>; Wed, 29 Apr 2026 07:44:07 +0200
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 C745D328D;
 Tue, 28 Apr 2026 22:44:00 -0700 (PDT)
Received: from C3HXLD123V.arm.com (unknown [10.57.90.163])
 by usa-sjc-imap-foss1.foss.arm.com (Postfix) with ESMTPSA id EB45A3F62B;
 Tue, 28 Apr 2026 22:44:04 -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=foss header.d=arm.com header.i="@arm.com" header.h="From:To:Cc:Subject:Date:In-Reply-To:References"
DKIM-Signature: v=1; a=rsa-sha256; c=simple/simple; d=arm.com; s=foss;
	t=1777441446; bh=IvYNqDbera/Ke8I0F2UPOw6J8/rPOohK8qd0lYFvQZM=;
	h=From:To:Cc:Subject:Date:In-Reply-To:References:From;
	b=inm5aBwxI6owTAxlvk6jPjRmOK55M16BCQgB5DNdQ/iBYs8C7yhJXqo06rL/wuu0w
	 43oOdT64yp7kACF+j41i1kQHlbRVvv4EqgZQTvdy37cPjUdw+/LfgDdi9feTyf7McC
	 hYscRSAFQ+daJBvOFLXT3j5e/qQiKt/G4s4UbyaM=
From: Bertrand Marquis <bertrand.marquis@arm.com>
To: xen-devel@lists.xenproject.org
Cc: Volodymyr Babchuk <volodymyr_babchuk@epam.com>,
	Jens Wiklander <jens.wiklander@linaro.org>,
	Stefano Stabellini <sstabellini@kernel.org>,
	Julien Grall <julien@xen.org>,
	Michal Orzel <michal.orzel@amd.com>
Subject: [PATCH v2 2/6] xen/arm: ffa: Track hypervisor notifications in a bitmap
Date: Wed, 29 Apr 2026 07:43:23 +0200
Message-ID: <b83650603daa853d7069748a2575ebe6ece040c2.1776955622.git.bertrand.marquis@arm.com>
X-Mailer: git-send-email 2.53.0
In-Reply-To: <cover.1776955622.git.bertrand.marquis@arm.com>
References: <cover.1776955622.git.bertrand.marquis@arm.com>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit
X-purgate-ID: tlsNG-ef75cf/1777441447-AD364C48-2A5E094F/0/0
X-purgate-type: clean
X-purgate-size: 6808

Hypervisor notifications are currently tracked with a dedicated
buff_full_pending boolean. The old RX-buffer-full path also exposed a
pending indication indirectly via vm_pending, so
FFA_NOTIFICATION_INFO_GET could clear that summary before the guest
retrieved the Hypervisor notification bitmap with
FFA_NOTIFICATION_GET.

Replace the single boolean with a Hypervisor notification bitmap
protected by notif_lock. INFO_GET reports pending when hyp_pending is
non-zero, GET returns and clears the HYP bitmap under the lock, and
RX-buffer-full now keeps notif_lock held across the local NPI
decision. notif_irq_raised is only set when an NPI is actually
injected, and is cleared once the local pending state is consumed.

Initialize and clear the bitmap during domain lifecycle handling, and
use ctx->ffa_id for bitmap create and destroy so the notification
state stays tied to the cached FF-A endpoint ID.

If the local injection attempt fails because no vCPU is online,
hyp_pending remains set and notif_irq_raised remains clear. This
keeps the RX-buffer-full notification pending until the guest
retrieves it, without publishing a successful local IRQ state too
early.

Functional impact: RX-buffer-full remains pending in hyp_pending
until FFA_NOTIFICATION_GET, and failed local NPI injection no longer
leaves Xen thinking the interrupt was already raised.

Signed-off-by: Bertrand Marquis <bertrand.marquis@arm.com>
---
Changes since v1:
- clarify that v1 exposed RX-buffer-full indirectly via vm_pending
- document that v2 keeps the HYP pending indication until
  FFA_NOTIFICATION_GET
- keep RX-buffer-full pending state stable across failed local NPI
  injection attempts
---
 xen/arch/arm/tee/ffa_notif.c   | 56 ++++++++++++++++++++++++++--------
 xen/arch/arm/tee/ffa_private.h | 15 +++++++--
 2 files changed, 56 insertions(+), 15 deletions(-)

diff --git a/xen/arch/arm/tee/ffa_notif.c b/xen/arch/arm/tee/ffa_notif.c
index 07bc5cb3a430..a631481e3815 100644
--- a/xen/arch/arm/tee/ffa_notif.c
+++ b/xen/arch/arm/tee/ffa_notif.c
@@ -19,7 +19,7 @@
 static bool __ro_after_init fw_notif_enabled;
 static unsigned int __ro_after_init notif_sri_irq;
 
-static void inject_notif_pending(struct domain *d)
+static bool inject_notif_pending(struct domain *d)
 {
     struct vcpu *v;
 
@@ -33,13 +33,15 @@ static void inject_notif_pending(struct domain *d)
         if ( is_vcpu_online(v) )
         {
             vgic_inject_irq(d, v, GUEST_FFA_NOTIF_PEND_INTR_ID, true);
-            return;
+            return true;
         }
     }
 
     if ( printk_ratelimit() )
         printk(XENLOG_G_DEBUG "%pd: ffa: can't inject NPI, all vCPUs offline\n",
                d);
+
+    return false;
 }
 
 int32_t ffa_handle_notification_bind(struct cpu_user_regs *regs)
@@ -94,8 +96,15 @@ void ffa_handle_notification_info_get(struct cpu_user_regs *regs)
 
     notif_pending = test_and_clear_bool(ctx->notif.secure_pending);
     if ( IS_ENABLED(CONFIG_FFA_VM_TO_VM) )
+    {
         notif_pending |= test_and_clear_bool(ctx->notif.vm_pending);
 
+        spin_lock(&ctx->notif.notif_lock);
+        if ( ctx->notif.hyp_pending )
+            notif_pending = true;
+        spin_unlock(&ctx->notif.notif_lock);
+    }
+
     if ( notif_pending )
     {
         /* A pending global notification for the guest */
@@ -174,12 +183,19 @@ void ffa_handle_notification_get(struct cpu_user_regs *regs)
             w6 = resp.a6;
     }
 
-    if ( IS_ENABLED(CONFIG_FFA_VM_TO_VM) &&
-          flags & FFA_NOTIF_FLAG_BITMAP_HYP &&
-          test_and_clear_bool(ctx->notif.buff_full_pending) )
+    if ( IS_ENABLED(CONFIG_FFA_VM_TO_VM) )
     {
-        ACCESS_ONCE(ctx->notif.vm_pending) = false;
-        w7 = FFA_NOTIF_RX_BUFFER_FULL;
+        spin_lock(&ctx->notif.notif_lock);
+
+        if ( (flags & FFA_NOTIF_FLAG_BITMAP_HYP) && ctx->notif.hyp_pending )
+        {
+            w7 = ctx->notif.hyp_pending;
+            ctx->notif.hyp_pending = 0;
+            if ( !ctx->notif.vm_pending )
+                ctx->notif.notif_irq_raised = false;
+        }
+
+        spin_unlock(&ctx->notif.notif_lock);
     }
 
     ffa_set_regs(regs, FFA_SUCCESS_32, 0, w2, w3, w4, w5, w6, w7);
@@ -211,9 +227,12 @@ void ffa_raise_rx_buffer_full(struct domain *d)
     if ( !ctx )
         return;
 
-    ACCESS_ONCE(ctx->notif.buff_full_pending) = true;
-    if ( !test_and_set_bool(ctx->notif.vm_pending) )
-        inject_notif_pending(d);
+    spin_lock(&ctx->notif.notif_lock);
+    ctx->notif.hyp_pending |= FFA_NOTIF_RX_BUFFER_FULL;
+    if ( !ctx->notif.notif_irq_raised &&
+         inject_notif_pending(d) )
+        ctx->notif.notif_irq_raised = true;
+    spin_unlock(&ctx->notif.notif_lock);
 }
 #endif
 
@@ -426,12 +445,16 @@ void ffa_notif_init(void)
 
 int ffa_notif_domain_init(struct domain *d)
 {
+    struct ffa_ctx *ctx = d->arch.tee;
     int32_t res;
 
+    spin_lock_init(&ctx->notif.notif_lock);
+    ctx->notif.notif_irq_raised = false;
+    ctx->notif.hyp_pending = 0;
+
     if ( fw_notif_enabled )
     {
-
-        res = ffa_notification_bitmap_create(ffa_get_vm_id(d), d->max_vcpus);
+        res = ffa_notification_bitmap_create(ctx->ffa_id, d->max_vcpus);
         if ( res )
             return -ENOMEM;
     }
@@ -441,10 +464,17 @@ int ffa_notif_domain_init(struct domain *d)
 
 void ffa_notif_domain_destroy(struct domain *d)
 {
+    struct ffa_ctx *ctx = d->arch.tee;
+
+    spin_lock(&ctx->notif.notif_lock);
+    ctx->notif.notif_irq_raised = false;
+    ctx->notif.hyp_pending = 0;
+    spin_unlock(&ctx->notif.notif_lock);
+
     /*
      * Call bitmap_destroy even if bitmap create failed as the SPMC will
      * return a DENIED error that we will ignore.
      */
     if ( fw_notif_enabled )
-        ffa_notification_bitmap_destroy(ffa_get_vm_id(d));
+        ffa_notification_bitmap_destroy(ctx->ffa_id);
 }
diff --git a/xen/arch/arm/tee/ffa_private.h b/xen/arch/arm/tee/ffa_private.h
index c291f32b56ff..9ddda3f88986 100644
--- a/xen/arch/arm/tee/ffa_private.h
+++ b/xen/arch/arm/tee/ffa_private.h
@@ -340,9 +340,20 @@ struct ffa_ctx_notif {
     bool vm_pending;
 
     /*
-     * True if domain has buffer full notification pending
+     * Lock protecting the hypervisor-managed notification state.
      */
-    bool buff_full_pending;
+    spinlock_t notif_lock;
+
+    /*
+     * Tracks whether a local notification pending interrupt was raised.
+     * Protected by notif_lock.
+     */
+    bool notif_irq_raised;
+
+    /*
+     * Bitmap of pending hypervisor notifications (for HYP bitmap queries).
+     */
+    uint32_t hyp_pending;
 };
 
 struct ffa_ctx {
-- 
2.53.0



From xen-devel-bounces@lists.xenproject.org Wed Apr 29 05:44:21 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 29 Apr 2026 05:44:21 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1296938.1573064 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wHxiE-0007pg-GE; Wed, 29 Apr 2026 05:43:54 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1296938.1573064; Wed, 29 Apr 2026 05:43: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 1wHxiE-0007pX-BQ; Wed, 29 Apr 2026 05:43:54 +0000
Received: by outflank-mailman (input) for mailman id 1296938;
 Wed, 29 Apr 2026 05:43:53 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <bertrand.marquis@arm.com>) id 1wHxiD-0007oz-Hj
 for xen-devel@lists.xenproject.org; Wed, 29 Apr 2026 05:43:53 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wHxiC-002HZP-EM
 for xen-devel@lists.xenproject.org; Wed, 29 Apr 2026 07:43:52 +0200
Received: from [10.42.69.9] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <bertrand.marquis@arm.com>)
 id 69f19a93-2eae-0a2a0a5409dd-0a2a45099eba-16
 for <xen-devel@lists.xenproject.org>; Wed, 29 Apr 2026 07:43:51 +0200
Received: from [217.140.110.172] (helo=foss.arm.com)
 by tlsNG-bad1c0.mxtls.expurgate.net with ESMTP (eXpurgate 4.56.1)
 (envelope-from <bertrand.marquis@arm.com>)
 id 69f19a97-2497-0a2a45090019-d98c6eacb2e2-1
 for <xen-devel@lists.xenproject.org>; Wed, 29 Apr 2026 07:43:51 +0200
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 487A32BCE;
 Tue, 28 Apr 2026 22:43:45 -0700 (PDT)
Received: from C3HXLD123V.arm.com (unknown [10.57.90.163])
 by usa-sjc-imap-foss1.foss.arm.com (Postfix) with ESMTPSA id 5F20F3F62B;
 Tue, 28 Apr 2026 22:43:49 -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=foss header.d=arm.com header.i="@arm.com" header.h="From:To:Cc:Subject:Date"
DKIM-Signature: v=1; a=rsa-sha256; c=simple/simple; d=arm.com; s=foss;
	t=1777441430; bh=ZkzXf1I0vx36Gf7OT0TpzCtmfOpLa/wX5cHp8GKtXYQ=;
	h=From:To:Cc:Subject:Date:From;
	b=o7M6Qm9FMba1I5/874p2BsOS9w4XUG1FccIfjsYOIZ86cRsVo9ynejMq5VN9g0Tp8
	 oHKSyeAwcQgJLbqDU1xVkhAvYxs8RTaHYFyzPv5YpzXkc87DXne2xGa6ML3A6I2qim
	 BAhgAkorP2WoEb1bZBldJMNMhbYPOTDPnCwoxOgg=
From: Bertrand Marquis <bertrand.marquis@arm.com>
To: xen-devel@lists.xenproject.org
Cc: Volodymyr Babchuk <volodymyr_babchuk@epam.com>,
	Jens Wiklander <jens.wiklander@linaro.org>,
	Stefano Stabellini <sstabellini@kernel.org>,
	Julien Grall <julien@xen.org>,
	Michal Orzel <michal.orzel@amd.com>
Subject: [PATCH v2 0/6] xen/arm: ffa: Harden notifications and enable VM-to-VM delivery
Date: Wed, 29 Apr 2026 07:43:21 +0200
Message-ID: <cover.1776955622.git.bertrand.marquis@arm.com>
X-Mailer: git-send-email 2.53.0
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit
X-purgate-ID: tlsNG-bad1c0/1777441431-412B2A53-0932781D/0/0
X-purgate-type: clean
X-purgate-size: 2600

This series hardens FF-A notification handling in the Arm FF-A mediator
and completes local delivery for non-secure VM-to-VM notifications.

Hardening and state handling (Patches 1-4):
1) Fix notification pending interrupt delivery when vcpu0 is offline by
   reusing a common global NPI injection helper.
2) Replace the single hypervisor notification boolean with a protected
   HYP bitmap and keep bitmap lifecycle tied to the cached endpoint ID.
3) Tighten notification parameter validation so malformed BIND, UNBIND,
   GET, and SET requests are rejected consistently before reaching
   cached state or the SPMC.
4) Preserve the secure pending indication until secure notifications are
   retrieved, protect the secure pending latch with notif_lock,
   serialize SPMC INFO_GET polling, and keep INFO_GET return width
   consistent with the caller.

Local VM notification delivery (Patches 5-6):
1) Track non-secure VM notification bindings locally, promote pending
   state to a per-bit bitmap, and validate BIND/UNBIND requests
   against that state.
2) Deliver non-secure VM-to-VM notifications locally, track whether a
   local NPI is already armed, and only advertise notification support
   when firmware capabilities or CONFIG_FFA_VM_TO_VM actually provide
   it.

Backward compatibility: v1.0/v1.1 guests remain compatible. Valid
guest-visible notification behavior is preserved; the series only
tightens malformed-request handling and enables local non-secure
VM-to-VM delivery when CONFIG_FFA_VM_TO_VM is enabled.

Gitlab branch with patches:
https://gitlab.com/xen-project/people/bmarquis/xen-ffa/-/tree/vm-notif/v2?ref_type=heads
CI pass result:
https://gitlab.com/xen-project/people/bmarquis/xen-ffa/-/pipelines/2474955136

Changes since v1:
- Keep pending notification state stable across failed local NPI injection.
- Tighten local NPI armed-state tracking for Hypervisor and VM notifications.
- Details in each commit message.

Bertrand Marquis (6):
  xen/arm: ffa: Fix NPI injection when vcpu0 is offline
  xen/arm: ffa: Track hypervisor notifications in a bitmap
  xen/arm: ffa: Tighten notification parameter validation
  xen/arm: ffa: Preserve secure notification state when polling SPMC
  xen/arm: ffa: Track VM notification bindings locally
  xen/arm: ffa: Deliver VM-to-VM notifications locally

 xen/arch/arm/tee/ffa.c         |  24 ++-
 xen/arch/arm/tee/ffa_notif.c   | 371 +++++++++++++++++++++++++++------
 xen/arch/arm/tee/ffa_private.h |  25 ++-
 3 files changed, 345 insertions(+), 75 deletions(-)

-- 
2.53.0



From xen-devel-bounces@lists.xenproject.org Wed Apr 29 05:44:22 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 29 Apr 2026 05:44:22 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1296943.1573091 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wHxiW-00006i-2k; Wed, 29 Apr 2026 05:44:12 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1296943.1573091; Wed, 29 Apr 2026 05:44: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 1wHxiV-00006Y-W4; Wed, 29 Apr 2026 05:44:11 +0000
Received: by outflank-mailman (input) for mailman id 1296943;
 Wed, 29 Apr 2026 05:44:10 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <bertrand.marquis@arm.com>) id 1wHxiU-0008JC-1u
 for xen-devel@lists.xenproject.org; Wed, 29 Apr 2026 05:44:10 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wHxiT-002HZP-Dd
 for xen-devel@lists.xenproject.org; Wed, 29 Apr 2026 07:44:09 +0200
Received: from [10.42.69.11] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <bertrand.marquis@arm.com>)
 id 69f19aa3-2eae-0a2a0a5409dd-0a2a450b8fc0-16
 for <xen-devel@lists.xenproject.org>; Wed, 29 Apr 2026 07:44:09 +0200
Received: from [217.140.110.172] (helo=foss.arm.com)
 by tlsNG-42698a.mxtls.expurgate.net with ESMTP (eXpurgate 4.56.1)
 (envelope-from <bertrand.marquis@arm.com>)
 id 69f19aa8-212f-0a2a450b0019-d98c6eacb3b4-1
 for <xen-devel@lists.xenproject.org>; Wed, 29 Apr 2026 07:44:09 +0200
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 8D80032E2;
 Tue, 28 Apr 2026 22:44:02 -0700 (PDT)
Received: from C3HXLD123V.arm.com (unknown [10.57.90.163])
 by usa-sjc-imap-foss1.foss.arm.com (Postfix) with ESMTPSA id A3CF93F62B;
 Tue, 28 Apr 2026 22:44: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=foss header.d=arm.com header.i="@arm.com" header.h="From:To:Cc:Subject:Date:In-Reply-To:References"
DKIM-Signature: v=1; a=rsa-sha256; c=simple/simple; d=arm.com; s=foss;
	t=1777441448; bh=xwgrVrb7mJ/jIKX+IuIaposJPSmY8HXotyRYbP0OwgU=;
	h=From:To:Cc:Subject:Date:In-Reply-To:References:From;
	b=R4gqe1tXR6ZmJbt735SB+/fEeuSChDwFV3wr4m9hqQ7XjqAE34+5l34M9aPpoFGvA
	 0UIyKw07aTfycMyWLMoS4reXep3eaX9oJ+VWxXhPA2CND7fijyielN8S2Yq+0wRbLQ
	 l3y+wmL1lufVjK4ujVWuFjd6LgsFsWJQpmQ4a3OE=
From: Bertrand Marquis <bertrand.marquis@arm.com>
To: xen-devel@lists.xenproject.org
Cc: Volodymyr Babchuk <volodymyr_babchuk@epam.com>,
	Jens Wiklander <jens.wiklander@linaro.org>,
	Stefano Stabellini <sstabellini@kernel.org>,
	Julien Grall <julien@xen.org>,
	Michal Orzel <michal.orzel@amd.com>
Subject: [PATCH v2 3/6] xen/arm: ffa: Tighten notification parameter validation
Date: Wed, 29 Apr 2026 07:43:24 +0200
Message-ID: <9ad2fe8d75a13494536787fc6aa98eb6eb3e67c6.1776955622.git.bertrand.marquis@arm.com>
X-Mailer: git-send-email 2.53.0
In-Reply-To: <cover.1776955622.git.bertrand.marquis@arm.com>
References: <cover.1776955622.git.bertrand.marquis@arm.com>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit
X-purgate-ID: tlsNG-42698a/1777441449-06772F3B-A0C9D0BA/0/0
X-purgate-type: clean
X-purgate-size: 6031

The notification handlers still validate overlapping subsets of their
inputs. BIND, UNBIND, and SET each decode caller and destination IDs
locally, GET still accepts a non-zero receiver vCPU ID and reserved flag
bits, and SET still accepts non-zero NS-virtual flags. BIND also treats
unsupported non-zero flag encodings as a supported-feature failure
instead of as malformed input.

Add ffa_notif_validate_params() and use it to centralize the common
caller/destination and non-zero bitmap checks for BIND, UNBIND, and SET.
Also reject malformed GET and SET requests locally before touching
cached state or forwarding anything to the SPMC. Keep BIND limited to
global notifications and reject unsupported non-zero flag encodings with
INVALID_PARAMETERS.

- add a shared parameter validator for notification caller/destination
  checks
- wire BIND and UNBIND through the shared helper and reject unsupported
  bind flag encodings with INVALID_PARAMETERS
- reject non-zero receiver vCPU and reserved flag bits in
  FFA_NOTIFICATION_GET
- reject non-zero flags in the NS-virtual FFA_NOTIFICATION_SET path

Functional impact: malformed notification requests are rejected
consistently earlier in the mediator.

Signed-off-by: Bertrand Marquis <bertrand.marquis@arm.com>
Reviewed-by: Jens Wiklander <jens.wiklander@linaro.org>
---
Changes since v1:
- rename helper to ffa_notif_validate_params()
- add R-b from Jens
---
 xen/arch/arm/tee/ffa_notif.c | 61 +++++++++++++++++++++++++++++-------
 1 file changed, 50 insertions(+), 11 deletions(-)

diff --git a/xen/arch/arm/tee/ffa_notif.c b/xen/arch/arm/tee/ffa_notif.c
index a631481e3815..1260f98a77e9 100644
--- a/xen/arch/arm/tee/ffa_notif.c
+++ b/xen/arch/arm/tee/ffa_notif.c
@@ -44,21 +44,40 @@ static bool inject_notif_pending(struct domain *d)
     return false;
 }
 
+static int32_t ffa_notif_validate_params(uint16_t dom_id, uint16_t caller_id,
+                                         uint16_t dest_id, uint32_t bitmap_lo,
+                                         uint32_t bitmap_hi)
+{
+    if ( caller_id != dom_id || dest_id == dom_id || !dest_id )
+        return FFA_RET_INVALID_PARAMETERS;
+
+    if ( !bitmap_lo && !bitmap_hi )
+        return FFA_RET_INVALID_PARAMETERS;
+
+    return FFA_RET_OK;
+}
+
 int32_t ffa_handle_notification_bind(struct cpu_user_regs *regs)
 {
     struct domain *d = current->domain;
+    struct ffa_ctx *ctx = d->arch.tee;
+    int32_t ret;
     uint32_t src_dst = get_user_reg(regs, 1);
     uint32_t flags = get_user_reg(regs, 2);
     uint32_t bitmap_lo = get_user_reg(regs, 3);
     uint32_t bitmap_hi = get_user_reg(regs, 4);
+    uint16_t caller_id = src_dst & GENMASK(15, 0);
+    uint16_t dest_id = src_dst >> 16;
 
-    if ( (src_dst & GENMASK(15, 0)) != ffa_get_vm_id(d) )
+    if ( flags )    /* Only global notifications are supported */
         return FFA_RET_INVALID_PARAMETERS;
 
-    if ( flags )    /* Only global notifications are supported */
-        return FFA_RET_DENIED;
+    ret = ffa_notif_validate_params(ctx->ffa_id, caller_id, dest_id,
+                                    bitmap_lo, bitmap_hi);
+    if ( ret )
+        return ret;
 
-    if ( FFA_ID_IS_SECURE(src_dst >> 16) && fw_notif_enabled )
+    if ( FFA_ID_IS_SECURE(dest_id) && fw_notif_enabled )
         return ffa_simple_call(FFA_NOTIFICATION_BIND, src_dst, flags,
                                bitmap_lo, bitmap_hi);
 
@@ -68,16 +87,22 @@ int32_t ffa_handle_notification_bind(struct cpu_user_regs *regs)
 int32_t ffa_handle_notification_unbind(struct cpu_user_regs *regs)
 {
     struct domain *d = current->domain;
+    struct ffa_ctx *ctx = d->arch.tee;
+    int32_t ret;
     uint32_t src_dst = get_user_reg(regs, 1);
     uint32_t bitmap_lo = get_user_reg(regs, 3);
     uint32_t bitmap_hi = get_user_reg(regs, 4);
+    uint16_t caller_id = src_dst & GENMASK(15, 0);
+    uint16_t dest_id = src_dst >> 16;
 
-    if ( (src_dst & GENMASK(15, 0)) != ffa_get_vm_id(d) )
-        return FFA_RET_INVALID_PARAMETERS;
+    ret = ffa_notif_validate_params(ctx->ffa_id, caller_id, dest_id,
+                                    bitmap_lo, bitmap_hi);
+    if ( ret )
+        return ret;
 
-    if ( FFA_ID_IS_SECURE(src_dst >> 16) && fw_notif_enabled )
-        return  ffa_simple_call(FFA_NOTIFICATION_UNBIND, src_dst, 0, bitmap_lo,
-                                bitmap_hi);
+    if ( FFA_ID_IS_SECURE(dest_id) && fw_notif_enabled )
+        return ffa_simple_call(FFA_NOTIFICATION_UNBIND, src_dst, 0, bitmap_lo,
+                               bitmap_hi);
 
     return FFA_RET_NOT_SUPPORTED;
 }
@@ -144,6 +169,12 @@ void ffa_handle_notification_get(struct cpu_user_regs *regs)
         return;
     }
 
+    if ( recv >> 16 || (flags & GENMASK(31, 4)) )
+    {
+        ffa_set_regs_error(regs, FFA_RET_INVALID_PARAMETERS);
+        return;
+    }
+
     if ( fw_notif_enabled && (flags & ( FFA_NOTIF_FLAG_BITMAP_SP |
                                         FFA_NOTIF_FLAG_BITMAP_SPM )) )
     {
@@ -208,11 +239,19 @@ int32_t ffa_handle_notification_set(struct cpu_user_regs *regs)
     uint32_t flags = get_user_reg(regs, 2);
     uint32_t bitmap_lo = get_user_reg(regs, 3);
     uint32_t bitmap_hi = get_user_reg(regs, 4);
+    uint16_t caller_id = src_dst >> 16;
+    uint16_t dest_id = src_dst & GENMASK(15, 0);
+    int32_t ret;
+
+    ret = ffa_notif_validate_params(ffa_get_vm_id(d), caller_id, dest_id,
+                                    bitmap_lo, bitmap_hi);
+    if ( ret )
+        return ret;
 
-    if ( (src_dst >> 16) != ffa_get_vm_id(d) )
+    if ( flags )
         return FFA_RET_INVALID_PARAMETERS;
 
-    if ( FFA_ID_IS_SECURE(src_dst & GENMASK(15, 0)) && fw_notif_enabled )
+    if ( FFA_ID_IS_SECURE(dest_id) && fw_notif_enabled )
         return ffa_simple_call(FFA_NOTIFICATION_SET, src_dst, flags, bitmap_lo,
                                bitmap_hi);
 
-- 
2.53.0



From xen-devel-bounces@lists.xenproject.org Wed Apr 29 05:44:22 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 29 Apr 2026 05:44:22 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1296944.1573097 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wHxiW-0000Ds-Hu; Wed, 29 Apr 2026 05:44:12 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1296944.1573097; Wed, 29 Apr 2026 05:44: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 1wHxiW-0000DJ-DZ; Wed, 29 Apr 2026 05:44:12 +0000
Received: by outflank-mailman (input) for mailman id 1296944;
 Wed, 29 Apr 2026 05:44:11 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <bertrand.marquis@arm.com>) id 1wHxiV-00005z-L6
 for xen-devel@lists.xenproject.org; Wed, 29 Apr 2026 05:44:11 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wHxiV-002Hh3-0w
 for xen-devel@lists.xenproject.org; Wed, 29 Apr 2026 07:44:11 +0200
Received: from [10.42.69.9] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <bertrand.marquis@arm.com>)
 id 69f19a93-2eae-0a2a0a5409dd-0a2a45099eba-44
 for <xen-devel@lists.xenproject.org>; Wed, 29 Apr 2026 07:44:11 +0200
Received: from [217.140.110.172] (helo=foss.arm.com)
 by tlsNG-bad1c0.mxtls.expurgate.net with ESMTP (eXpurgate 4.56.1)
 (envelope-from <bertrand.marquis@arm.com>)
 id 69f19aaa-2497-0a2a45090019-d98c6eaccf84-1
 for <xen-devel@lists.xenproject.org>; Wed, 29 Apr 2026 07:44:10 +0200
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 493EA2BCE;
 Tue, 28 Apr 2026 22:44:04 -0700 (PDT)
Received: from C3HXLD123V.arm.com (unknown [10.57.90.163])
 by usa-sjc-imap-foss1.foss.arm.com (Postfix) with ESMTPSA id 690FD3F62B;
 Tue, 28 Apr 2026 22:44:08 -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=foss header.d=arm.com header.i="@arm.com" header.h="From:To:Cc:Subject:Date:In-Reply-To:References"
DKIM-Signature: v=1; a=rsa-sha256; c=simple/simple; d=arm.com; s=foss;
	t=1777441449; bh=BJ9kpVORXjEmJR3F6tp4iMiyL0HijTQJTCH2Qdp2K1U=;
	h=From:To:Cc:Subject:Date:In-Reply-To:References:From;
	b=Dj6lhwGKazFYUmEf7LGtDyFsmG0A361JkJGAE9N5HVdzJvD+KQzg3+ZBzE7DmoUYq
	 JO1RFx81+xWGobW+Dc3V3X5dJIhufRaAijA9bbV2xns+fylDh+2sFygNibL5acWcqr
	 8CSNKBYnGab6q8daj0JizFr7UeppPqRxPohsDMh0=
From: Bertrand Marquis <bertrand.marquis@arm.com>
To: xen-devel@lists.xenproject.org
Cc: Volodymyr Babchuk <volodymyr_babchuk@epam.com>,
	Jens Wiklander <jens.wiklander@linaro.org>,
	Stefano Stabellini <sstabellini@kernel.org>,
	Julien Grall <julien@xen.org>,
	Michal Orzel <michal.orzel@amd.com>
Subject: [PATCH v2 4/6] xen/arm: ffa: Preserve secure notification state when polling SPMC
Date: Wed, 29 Apr 2026 07:43:25 +0200
Message-ID: <b22ff7b7bf12fc21e6fbff47d77b092f5c487aec.1776955622.git.bertrand.marquis@arm.com>
X-Mailer: git-send-email 2.53.0
In-Reply-To: <cover.1776955622.git.bertrand.marquis@arm.com>
References: <cover.1776955622.git.bertrand.marquis@arm.com>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit
X-purgate-ID: tlsNG-bad1c0/1777441450-4377AA53-000CACC7/0/0
X-purgate-type: clean
X-purgate-size: 7201

Secure pending state is latched when the SPMC raises the schedule
receiver interrupt, but Xen currently clears that latch too aggressively.
Guest FFA_NOTIFICATION_INFO_GET consumes secure_pending even though it
only reports pending state, and secure FFA_NOTIFICATION_GET only clears
the latch when both SP and SPM bitmaps are requested together. This can
drop a pending indication before the receiver retrieves secure
notifications, or keep INFO_GET reporting stale secure pending state
after a successful GET.

Keep secure_pending as a latched indication until secure notifications
are actually retrieved. Guest FFA_NOTIFICATION_INFO_GET now reports the
latched state without clearing it, while a successful secure
FFA_NOTIFICATION_GET clears the latch regardless of which secure bitmap
flags were requested. Also protect secure_pending with notif_lock,
serialize SPMC INFO_GET polling behind notif_info_lock, and preserve the
caller-visible INFO_GET success width.

Functional impact: guest INFO_GET preserves the secure pending
indication until secure notifications are retrieved, and successful
secure GET clears the guest-visible pending latch.

Signed-off-by: Bertrand Marquis <bertrand.marquis@arm.com>
---
Changes since v1:
- drop the defensive fw_notif_enabled guard in notif_sri_action()
---
 xen/arch/arm/tee/ffa_notif.c | 51 ++++++++++++++++++++++--------------
 1 file changed, 32 insertions(+), 19 deletions(-)

diff --git a/xen/arch/arm/tee/ffa_notif.c b/xen/arch/arm/tee/ffa_notif.c
index 1260f98a77e9..e1cd852d1c53 100644
--- a/xen/arch/arm/tee/ffa_notif.c
+++ b/xen/arch/arm/tee/ffa_notif.c
@@ -18,6 +18,7 @@
 
 static bool __ro_after_init fw_notif_enabled;
 static unsigned int __ro_after_init notif_sri_irq;
+static DEFINE_SPINLOCK(notif_info_lock);
 
 static bool inject_notif_pending(struct domain *d)
 {
@@ -111,6 +112,7 @@ void ffa_handle_notification_info_get(struct cpu_user_regs *regs)
 {
     struct domain *d = current->domain;
     struct ffa_ctx *ctx = d->arch.tee;
+    uint32_t fid = get_user_reg(regs, 0);
     bool notif_pending;
 
     if ( !IS_ENABLED(CONFIG_FFA_VM_TO_VM) && !fw_notif_enabled )
@@ -119,7 +121,10 @@ void ffa_handle_notification_info_get(struct cpu_user_regs *regs)
         return;
     }
 
-    notif_pending = test_and_clear_bool(ctx->notif.secure_pending);
+    spin_lock(&ctx->notif.notif_lock);
+    notif_pending = ctx->notif.secure_pending;
+    spin_unlock(&ctx->notif.notif_lock);
+
     if ( IS_ENABLED(CONFIG_FFA_VM_TO_VM) )
     {
         notif_pending |= test_and_clear_bool(ctx->notif.vm_pending);
@@ -133,7 +138,9 @@ void ffa_handle_notification_info_get(struct cpu_user_regs *regs)
     if ( notif_pending )
     {
         /* A pending global notification for the guest */
-        ffa_set_regs(regs, FFA_SUCCESS_64, 0,
+        ffa_set_regs(regs,
+                     smccc_is_conv_64(fid) ? FFA_SUCCESS_64 : FFA_SUCCESS_32,
+                     0,
                      1U << FFA_NOTIF_INFO_GET_ID_COUNT_SHIFT, ffa_get_vm_id(d),
                      0, 0, 0, 0);
     }
@@ -156,6 +163,8 @@ void ffa_handle_notification_get(struct cpu_user_regs *regs)
     uint32_t w5 = 0;
     uint32_t w6 = 0;
     uint32_t w7 = 0;
+    uint32_t secure_flags = flags & ( FFA_NOTIF_FLAG_BITMAP_SP |
+                                      FFA_NOTIF_FLAG_BITMAP_SPM );
 
     if ( !IS_ENABLED(CONFIG_FFA_VM_TO_VM) && !fw_notif_enabled )
     {
@@ -175,27 +184,16 @@ void ffa_handle_notification_get(struct cpu_user_regs *regs)
         return;
     }
 
-    if ( fw_notif_enabled && (flags & ( FFA_NOTIF_FLAG_BITMAP_SP |
-                                        FFA_NOTIF_FLAG_BITMAP_SPM )) )
+    if ( fw_notif_enabled && secure_flags )
     {
         struct arm_smccc_1_2_regs arg = {
             .a0 = FFA_NOTIFICATION_GET,
             .a1 = recv,
-            .a2 = flags & ( FFA_NOTIF_FLAG_BITMAP_SP |
-                            FFA_NOTIF_FLAG_BITMAP_SPM ),
+            .a2 = secure_flags,
         };
         struct arm_smccc_1_2_regs resp;
         int32_t e;
 
-        /*
-         * Clear secure pending if both FFA_NOTIF_FLAG_BITMAP_SP and
-         * FFA_NOTIF_FLAG_BITMAP_SPM are set since secure world can't have
-         * any more pending notifications.
-         */
-        if ( ( flags  & FFA_NOTIF_FLAG_BITMAP_SP ) &&
-             ( flags & FFA_NOTIF_FLAG_BITMAP_SPM ) )
-            ACCESS_ONCE(ctx->notif.secure_pending) = false;
-
         arm_smccc_1_2_smc(&arg, &resp);
         e = ffa_get_ret_code(&resp);
         if ( e )
@@ -212,6 +210,10 @@ void ffa_handle_notification_get(struct cpu_user_regs *regs)
 
         if ( flags & FFA_NOTIF_FLAG_BITMAP_SPM )
             w6 = resp.a6;
+
+        spin_lock(&ctx->notif.notif_lock);
+        ctx->notif.secure_pending = false;
+        spin_unlock(&ctx->notif.notif_lock);
     }
 
     if ( IS_ENABLED(CONFIG_FFA_VM_TO_VM) )
@@ -356,7 +358,10 @@ static void notif_vm_pend_intr(uint16_t vm_id)
      * guarantees that the data structure isn't freed while we're accessing
      * it.
      */
-    ACCESS_ONCE(ctx->notif.secure_pending) = true;
+    spin_lock(&ctx->notif.notif_lock);
+    ctx->notif.secure_pending = true;
+    spin_unlock(&ctx->notif.notif_lock);
+
     inject_notif_pending(d);
 
 out_unlock:
@@ -375,11 +380,15 @@ static void notif_sri_action(void *unused)
     unsigned int n;
     int32_t res;
 
-    do {
+    spin_lock(&notif_info_lock);
+
+    do
+    {
         arm_smccc_1_2_smc(&arg, &resp);
         res = ffa_get_ret_code(&resp);
         if ( res )
         {
+            spin_unlock(&notif_info_lock);
             if ( res != FFA_RET_NO_DATA && printk_ratelimit() )
                 printk(XENLOG_WARNING
                        "ffa: notification info get failed: error %d\n", res);
@@ -393,7 +402,7 @@ static void notif_sri_action(void *unused)
         id_pos = 0;
         for ( n = 0; n < list_count; n++ )
         {
-            unsigned int count = ((ids_count >> 2 * n) & 0x3) + 1;
+            unsigned int count = ((ids_count >> (2 * n)) & 0x3) + 1;
             uint16_t vm_id = get_id_from_resp(&resp, id_pos);
 
             notif_vm_pend_intr(vm_id);
@@ -401,7 +410,9 @@ static void notif_sri_action(void *unused)
             id_pos += count;
         }
 
-    } while (resp.a2 & FFA_NOTIF_INFO_GET_MORE_FLAG);
+    } while ( resp.a2 & FFA_NOTIF_INFO_GET_MORE_FLAG );
+
+    spin_unlock(&notif_info_lock);
 }
 
 static DECLARE_TASKLET(notif_sri_tasklet, notif_sri_action, NULL);
@@ -489,6 +500,7 @@ int ffa_notif_domain_init(struct domain *d)
 
     spin_lock_init(&ctx->notif.notif_lock);
     ctx->notif.notif_irq_raised = false;
+    ctx->notif.secure_pending = false;
     ctx->notif.hyp_pending = 0;
 
     if ( fw_notif_enabled )
@@ -507,6 +519,7 @@ void ffa_notif_domain_destroy(struct domain *d)
 
     spin_lock(&ctx->notif.notif_lock);
     ctx->notif.notif_irq_raised = false;
+    ctx->notif.secure_pending = false;
     ctx->notif.hyp_pending = 0;
     spin_unlock(&ctx->notif.notif_lock);
 
-- 
2.53.0



From xen-devel-bounces@lists.xenproject.org Wed Apr 29 05:44:24 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 29 Apr 2026 05:44:24 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1296946.1573109 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wHxiY-0000bp-OE; Wed, 29 Apr 2026 05:44:14 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1296946.1573109; Wed, 29 Apr 2026 05:44: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 1wHxiY-0000bc-LF; Wed, 29 Apr 2026 05:44:14 +0000
Received: by outflank-mailman (input) for mailman id 1296946;
 Wed, 29 Apr 2026 05:44:13 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <bertrand.marquis@arm.com>) id 1wHxiX-0000UH-Ev
 for xen-devel@lists.xenproject.org; Wed, 29 Apr 2026 05:44:13 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wHxiW-003p6b-Qr
 for xen-devel@lists.xenproject.org; Wed, 29 Apr 2026 07:44:12 +0200
Received: from [10.42.69.12] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <bertrand.marquis@arm.com>)
 id 69f19a94-e002-0a2a0a5209dd-0a2a450cba4e-24
 for <xen-devel@lists.xenproject.org>; Wed, 29 Apr 2026 07:44:12 +0200
Received: from [217.140.110.172] (helo=foss.arm.com)
 by tlsNG-d25034.mxtls.expurgate.net with ESMTP (eXpurgate 4.56.1)
 (envelope-from <bertrand.marquis@arm.com>)
 id 69f19aab-62f1-0a2a450c0019-d98c6eacb3d2-1
 for <xen-devel@lists.xenproject.org>; Wed, 29 Apr 2026 07:44:12 +0200
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 0856D2BCE;
 Tue, 28 Apr 2026 22:44:06 -0700 (PDT)
Received: from C3HXLD123V.arm.com (unknown [10.57.90.163])
 by usa-sjc-imap-foss1.foss.arm.com (Postfix) with ESMTPSA id 29A5B3F62B;
 Tue, 28 Apr 2026 22:44:10 -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=foss header.d=arm.com header.i="@arm.com" header.h="From:To:Cc:Subject:Date:In-Reply-To:References"
DKIM-Signature: v=1; a=rsa-sha256; c=simple/simple; d=arm.com; s=foss;
	t=1777441451; bh=HhDBJf0IfXGwpTjfY2ecC/WNtpLQx+0BHlKhp3zkvP0=;
	h=From:To:Cc:Subject:Date:In-Reply-To:References:From;
	b=IyJIf0pObIJcvGsVV9rDtmrwWDUL7jn1OseYOkchfyR6ODE67oB/EJgwZ9Ktpy4AA
	 KJsL3tzy0R1TvDrx8ZkjYsKpVD2BNVCDyQYY4zBvHUhbeEBO+CDCDUpKQQj8Rd1TqZ
	 fGK6iiLEeIkfWb7lU9BUUmWksA0S19uJDoKnx5E8=
From: Bertrand Marquis <bertrand.marquis@arm.com>
To: xen-devel@lists.xenproject.org
Cc: Volodymyr Babchuk <volodymyr_babchuk@epam.com>,
	Jens Wiklander <jens.wiklander@linaro.org>,
	Stefano Stabellini <sstabellini@kernel.org>,
	Julien Grall <julien@xen.org>,
	Michal Orzel <michal.orzel@amd.com>
Subject: [PATCH v2 5/6] xen/arm: ffa: Track VM notification bindings locally
Date: Wed, 29 Apr 2026 07:43:26 +0200
Message-ID: <13a7b810346a31acb5b1407b51c17141aebb33f8.1776955622.git.bertrand.marquis@arm.com>
X-Mailer: git-send-email 2.53.0
In-Reply-To: <cover.1776955622.git.bertrand.marquis@arm.com>
References: <cover.1776955622.git.bertrand.marquis@arm.com>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit
X-purgate-ID: tlsNG-d25034/1777441452-6E169CF5-22CD8A8E/0/0
X-purgate-type: clean
X-purgate-size: 7559

VM-to-VM notifications need receiver-side bind state so Xen can validate
which sender owns each notification bit. Non-secure BIND and UNBIND
requests currently have no local state and cannot enforce that contract.

Add per-bit VM notification binding state to struct ffa_ctx_notif and
use it to handle non-secure BIND and UNBIND requests when
CONFIG_FFA_VM_TO_VM is enabled. The update helper validates the whole
request under notif_lock before mutating anything, denies bind or
unbind when a bit is pending, rejects rebinding to a different sender,
and keeps rebinding to the same sender idempotent.

Promote vm_pending to a bitmap so the bind logic can reason per
notification ID, use that bitmap directly when reporting pending state,
and initialize and clear the new VM notification state during domain
init and teardown.

Functional impact: when CONFIG_FFA_VM_TO_VM is enabled, Xen tracks VM
notification bindings locally and validates non-secure bind and unbind
requests against that state.

Signed-off-by: Bertrand Marquis <bertrand.marquis@arm.com>
---
Changes since v1:
- use memset() to clear vm_bind[] in init/destroy
- replace the file-scope #error check with BUILD_BUG_ON()
---
 xen/arch/arm/tee/ffa_notif.c   | 96 ++++++++++++++++++++++++++++++----
 xen/arch/arm/tee/ffa_private.h | 11 ++--
 2 files changed, 94 insertions(+), 13 deletions(-)

diff --git a/xen/arch/arm/tee/ffa_notif.c b/xen/arch/arm/tee/ffa_notif.c
index e1cd852d1c53..a841c8f8d747 100644
--- a/xen/arch/arm/tee/ffa_notif.c
+++ b/xen/arch/arm/tee/ffa_notif.c
@@ -8,6 +8,7 @@
 #include <xen/list.h>
 #include <xen/notifier.h>
 #include <xen/spinlock.h>
+#include <xen/string.h>
 #include <xen/tasklet.h>
 #include <xen/types.h>
 
@@ -58,6 +59,54 @@ static int32_t ffa_notif_validate_params(uint16_t dom_id, uint16_t caller_id,
     return FFA_RET_OK;
 }
 
+static int32_t ffa_notif_update_vm_binding(struct ffa_ctx *ctx,
+                                           uint16_t dest_id, uint64_t bitmap,
+                                           bool bind)
+{
+    unsigned int id;
+    int32_t ret = FFA_RET_OK;
+
+    spin_lock(&ctx->notif.notif_lock);
+
+    for ( id = 0; id < FFA_NUM_VM_NOTIF; id++ )
+    {
+        if ( !(bitmap & BIT(id, ULL)) )
+            continue;
+
+        if ( ctx->notif.vm_pending & BIT(id, ULL) )
+        {
+            ret = FFA_RET_DENIED;
+            goto out_unlock;
+        }
+
+        if ( bind )
+        {
+            if ( ctx->notif.vm_bind[id] != 0 &&
+                 ctx->notif.vm_bind[id] != dest_id )
+            {
+                ret = FFA_RET_DENIED;
+                goto out_unlock;
+            }
+        }
+        else if ( ctx->notif.vm_bind[id] != dest_id )
+        {
+            ret = FFA_RET_DENIED;
+            goto out_unlock;
+        }
+    }
+
+    for ( id = 0; id < FFA_NUM_VM_NOTIF; id++ )
+    {
+        if ( bitmap & BIT(id, ULL) )
+            ctx->notif.vm_bind[id] = bind ? dest_id : 0;
+    }
+
+out_unlock:
+    spin_unlock(&ctx->notif.notif_lock);
+
+    return ret;
+}
+
 int32_t ffa_handle_notification_bind(struct cpu_user_regs *regs)
 {
     struct domain *d = current->domain;
@@ -78,11 +127,21 @@ int32_t ffa_handle_notification_bind(struct cpu_user_regs *regs)
     if ( ret )
         return ret;
 
-    if ( FFA_ID_IS_SECURE(dest_id) && fw_notif_enabled )
-        return ffa_simple_call(FFA_NOTIFICATION_BIND, src_dst, flags,
-                               bitmap_lo, bitmap_hi);
+    if ( FFA_ID_IS_SECURE(dest_id) )
+    {
+        if ( fw_notif_enabled )
+            return ffa_simple_call(FFA_NOTIFICATION_BIND, src_dst, flags,
+                                   bitmap_lo, bitmap_hi);
 
-    return FFA_RET_NOT_SUPPORTED;
+        return FFA_RET_NOT_SUPPORTED;
+    }
+
+    if ( !IS_ENABLED(CONFIG_FFA_VM_TO_VM) )
+        return FFA_RET_NOT_SUPPORTED;
+
+    return ffa_notif_update_vm_binding(ctx, dest_id,
+                                       ((uint64_t)bitmap_hi << 32) | bitmap_lo,
+                                       true);
 }
 
 int32_t ffa_handle_notification_unbind(struct cpu_user_regs *regs)
@@ -101,11 +160,21 @@ int32_t ffa_handle_notification_unbind(struct cpu_user_regs *regs)
     if ( ret )
         return ret;
 
-    if ( FFA_ID_IS_SECURE(dest_id) && fw_notif_enabled )
-        return ffa_simple_call(FFA_NOTIFICATION_UNBIND, src_dst, 0, bitmap_lo,
-                               bitmap_hi);
+    if ( FFA_ID_IS_SECURE(dest_id) )
+    {
+        if ( fw_notif_enabled )
+            return ffa_simple_call(FFA_NOTIFICATION_UNBIND, src_dst, 0,
+                                   bitmap_lo, bitmap_hi);
 
-    return FFA_RET_NOT_SUPPORTED;
+        return FFA_RET_NOT_SUPPORTED;
+    }
+
+    if ( !IS_ENABLED(CONFIG_FFA_VM_TO_VM) )
+        return FFA_RET_NOT_SUPPORTED;
+
+    return ffa_notif_update_vm_binding(ctx, dest_id,
+                                       ((uint64_t)bitmap_hi << 32) | bitmap_lo,
+                                       false);
 }
 
 void ffa_handle_notification_info_get(struct cpu_user_regs *regs)
@@ -127,9 +196,10 @@ void ffa_handle_notification_info_get(struct cpu_user_regs *regs)
 
     if ( IS_ENABLED(CONFIG_FFA_VM_TO_VM) )
     {
-        notif_pending |= test_and_clear_bool(ctx->notif.vm_pending);
-
         spin_lock(&ctx->notif.notif_lock);
+        if ( ctx->notif.vm_pending )
+            notif_pending = true;
+
         if ( ctx->notif.hyp_pending )
             notif_pending = true;
         spin_unlock(&ctx->notif.notif_lock);
@@ -498,9 +568,13 @@ int ffa_notif_domain_init(struct domain *d)
     struct ffa_ctx *ctx = d->arch.tee;
     int32_t res;
 
+    BUILD_BUG_ON(FFA_NUM_VM_NOTIF > 64);
+
     spin_lock_init(&ctx->notif.notif_lock);
     ctx->notif.notif_irq_raised = false;
     ctx->notif.secure_pending = false;
+    ctx->notif.vm_pending = 0;
+    memset(ctx->notif.vm_bind, 0, sizeof(ctx->notif.vm_bind));
     ctx->notif.hyp_pending = 0;
 
     if ( fw_notif_enabled )
@@ -520,6 +594,8 @@ void ffa_notif_domain_destroy(struct domain *d)
     spin_lock(&ctx->notif.notif_lock);
     ctx->notif.notif_irq_raised = false;
     ctx->notif.secure_pending = false;
+    ctx->notif.vm_pending = 0;
+    memset(ctx->notif.vm_bind, 0, sizeof(ctx->notif.vm_bind));
     ctx->notif.hyp_pending = 0;
     spin_unlock(&ctx->notif.notif_lock);
 
diff --git a/xen/arch/arm/tee/ffa_private.h b/xen/arch/arm/tee/ffa_private.h
index 9ddda3f88986..78a0a9815d56 100644
--- a/xen/arch/arm/tee/ffa_private.h
+++ b/xen/arch/arm/tee/ffa_private.h
@@ -236,6 +236,7 @@
 #define FFA_NOTIF_INFO_GET_ID_COUNT_MASK    0x1F
 
 #define FFA_NOTIF_RX_BUFFER_FULL        BIT(0, U)
+#define FFA_NUM_VM_NOTIF                64U
 
 /* Feature IDs used with FFA_FEATURES */
 #define FFA_FEATURE_NOTIF_PEND_INTR     0x1U
@@ -334,10 +335,14 @@ struct ffa_ctx_notif {
     bool secure_pending;
 
     /*
-     * True if domain is reported by FFA_NOTIFICATION_INFO_GET to have
-     * pending notifications from VMs (including framework ones).
+     * Bitmap of pending notifications from VMs (including framework ones).
+     */
+    uint64_t vm_pending;
+
+    /*
+     * Source endpoint bound to each VM notification ID (0 means unbound).
      */
-    bool vm_pending;
+    uint16_t vm_bind[FFA_NUM_VM_NOTIF];
 
     /*
      * Lock protecting the hypervisor-managed notification state.
-- 
2.53.0



From xen-devel-bounces@lists.xenproject.org Wed Apr 29 05:44:26 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 29 Apr 2026 05:44:26 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1296949.1573118 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wHxia-0000tZ-2t; Wed, 29 Apr 2026 05:44:16 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1296949.1573118; Wed, 29 Apr 2026 05: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 1wHxiZ-0000tM-UR; Wed, 29 Apr 2026 05:44:15 +0000
Received: by outflank-mailman (input) for mailman id 1296949;
 Wed, 29 Apr 2026 05:44:15 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <bertrand.marquis@arm.com>) id 1wHxiZ-0000ee-3A
 for xen-devel@lists.xenproject.org; Wed, 29 Apr 2026 05:44:15 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wHxiY-002Hh3-FU
 for xen-devel@lists.xenproject.org; Wed, 29 Apr 2026 07:44:14 +0200
Received: from [10.42.69.1] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <bertrand.marquis@arm.com>)
 id 69f19aab-2eae-0a2a0a5409dd-0a2a4501be9e-6
 for <xen-devel@lists.xenproject.org>; Wed, 29 Apr 2026 07:44:14 +0200
Received: from [217.140.110.172] (helo=foss.arm.com)
 by tlsNG-d62444.mxtls.expurgate.net with ESMTP (eXpurgate 4.56.1)
 (envelope-from <bertrand.marquis@arm.com>)
 id 69f19aad-c1f2-0a2a45010019-d98c6eac870c-1
 for <xen-devel@lists.xenproject.org>; Wed, 29 Apr 2026 07:44:14 +0200
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 C6533328D;
 Tue, 28 Apr 2026 22:44:07 -0700 (PDT)
Received: from C3HXLD123V.arm.com (unknown [10.57.90.163])
 by usa-sjc-imap-foss1.foss.arm.com (Postfix) with ESMTPSA id DFC2A3F62B;
 Tue, 28 Apr 2026 22:44:11 -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=foss header.d=arm.com header.i="@arm.com" header.h="From:To:Cc:Subject:Date:In-Reply-To:References"
DKIM-Signature: v=1; a=rsa-sha256; c=simple/simple; d=arm.com; s=foss;
	t=1777441453; bh=bzcppw7eOfYm4UiVzmHypcylvW+Izet9K8ImNObcrec=;
	h=From:To:Cc:Subject:Date:In-Reply-To:References:From;
	b=EcTW028WW95ZvmPZrEP3MQi38GiBXqEkA3YIIlkrpv8KntLoZC1veLBlB0VXu4Kbe
	 YT+yJM9PfMnmtQOemAu3Zhn+PfCP/pyL+qjsE++Dckr70vKM1is21h6w5v4ncqXRKR
	 Q2tLb0cg+i3tayPZilp/KryTowOReQLSLo4exmAk=
From: Bertrand Marquis <bertrand.marquis@arm.com>
To: xen-devel@lists.xenproject.org
Cc: Volodymyr Babchuk <volodymyr_babchuk@epam.com>,
	Jens Wiklander <jens.wiklander@linaro.org>,
	Stefano Stabellini <sstabellini@kernel.org>,
	Julien Grall <julien@xen.org>,
	Michal Orzel <michal.orzel@amd.com>
Subject: [PATCH v2 6/6] xen/arm: ffa: Deliver VM-to-VM notifications locally
Date: Wed, 29 Apr 2026 07:43:27 +0200
Message-ID: <1ead2af7182a0501f16e7b4e9ad3e58ccd8f538c.1776955622.git.bertrand.marquis@arm.com>
X-Mailer: git-send-email 2.53.0
In-Reply-To: <cover.1776955622.git.bertrand.marquis@arm.com>
References: <cover.1776955622.git.bertrand.marquis@arm.com>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit
X-purgate-ID: tlsNG-d62444/1777441454-BDC64FF4-3CDC08FC/0/0
X-purgate-type: clean
X-purgate-size: 9730

VM notification binding and pending tracking exist for non-secure
endpoints, but FFA_NOTIFICATION_SET still only forwards secure
destinations to the SPMC. Non-secure VMs therefore cannot receive
notifications from other VMs. Local NPI delivery also needs explicit
re-arm tracking so repeated raises are not lost while the interrupt is
already pending.

Add a local VM notification delivery path for non-secure destinations.
notification_set_vm() resolves the destination endpoint, verifies that
every requested bit is bound to the sender, sets the receiver's
vm_pending bitmap under notif_lock, and raises an NPI only when local
pending state is not already armed.

Track whether a local NPI is already armed with notif_irq_raised,
clear that state once both VM and hypervisor pending bitmaps are
drained, and keep notif_lock held across the VM notification injection
attempt. If no destination vCPU is online, leave the pending bits set
and keep notif_irq_raised clear so delivery can be retried later.
Also expose firmware notification availability so FFA_FEATURES only
advertises notification support when it is actually provided by the
firmware or by CONFIG_FFA_VM_TO_VM.

Functional impact: when CONFIG_FFA_VM_TO_VM is enabled, non-secure
FFA_NOTIFICATION_SET delivers VM-to-VM notifications locally and keeps
NPI delivery reliable across repeated raises.

Signed-off-by: Bertrand Marquis <bertrand.marquis@arm.com>
---
Changes since v1:
- serialize notification_set_vm() state updates with the NPI attempt
- keep pending VM notifications set when local injection fails
---
 xen/arch/arm/tee/ffa.c         | 24 ++++++++--
 xen/arch/arm/tee/ffa_notif.c   | 82 ++++++++++++++++++++++++++++++++--
 xen/arch/arm/tee/ffa_private.h | 17 ++++---
 3 files changed, 107 insertions(+), 16 deletions(-)

diff --git a/xen/arch/arm/tee/ffa.c b/xen/arch/arm/tee/ffa.c
index 1fe33f26454a..7fe021049cba 100644
--- a/xen/arch/arm/tee/ffa.c
+++ b/xen/arch/arm/tee/ffa.c
@@ -39,8 +39,13 @@
  * o FFA_MSG_SEND_DIRECT_REQ:
  *   - only supported from a VM to an SP
  * o FFA_NOTIFICATION_*:
+ *   - only supported when firmware notifications are enabled or VM-to-VM
+ *     support is built in
  *   - only supports global notifications, that is, per vCPU notifications
- *     are not supported
+ *     are not supported and secure per-vCPU notification information is
+ *     not forwarded
+ *   - the source endpoint ID reported for a notification may no longer
+ *     exist by the time the receiver consumes it
  *   - doesn't support signalling the secondary scheduler of pending
  *     notification for secure partitions
  *   - doesn't support notifications for Xen itself
@@ -245,6 +250,8 @@ static void handle_features(struct cpu_user_regs *regs)
     uint32_t a1 = get_user_reg(regs, 1);
     struct domain *d = current->domain;
     struct ffa_ctx *ctx = d->arch.tee;
+    bool notif_supported = IS_ENABLED(CONFIG_FFA_VM_TO_VM) ||
+                           ffa_notif_fw_enabled();
 
     /*
      * FFA_FEATURES defines w2 as input properties only for specific
@@ -343,10 +350,16 @@ static void handle_features(struct cpu_user_regs *regs)
 
         break;
     case FFA_FEATURE_NOTIF_PEND_INTR:
-        ffa_set_regs_success(regs, GUEST_FFA_NOTIF_PEND_INTR_ID, 0);
+        if ( notif_supported )
+            ffa_set_regs_success(regs, GUEST_FFA_NOTIF_PEND_INTR_ID, 0);
+        else
+            ffa_set_regs_error(regs, FFA_RET_NOT_SUPPORTED);
         break;
     case FFA_FEATURE_SCHEDULE_RECV_INTR:
-        ffa_set_regs_success(regs, GUEST_FFA_SCHEDULE_RECV_INTR_ID, 0);
+        if ( notif_supported )
+            ffa_set_regs_success(regs, GUEST_FFA_SCHEDULE_RECV_INTR_ID, 0);
+        else
+            ffa_set_regs_error(regs, FFA_RET_NOT_SUPPORTED);
         break;
     case FFA_PARTITION_INFO_GET_REGS:
         if ( ACCESS_ONCE(ctx->guest_vers) >= FFA_VERSION_1_2 )
@@ -361,7 +374,10 @@ static void handle_features(struct cpu_user_regs *regs)
     case FFA_NOTIFICATION_SET:
     case FFA_NOTIFICATION_INFO_GET_32:
     case FFA_NOTIFICATION_INFO_GET_64:
-        ffa_set_regs_success(regs, 0, 0);
+        if ( notif_supported )
+            ffa_set_regs_success(regs, 0, 0);
+        else
+            ffa_set_regs_error(regs, FFA_RET_NOT_SUPPORTED);
         break;
     default:
         ffa_set_regs_error(regs, FFA_RET_NOT_SUPPORTED);
diff --git a/xen/arch/arm/tee/ffa_notif.c b/xen/arch/arm/tee/ffa_notif.c
index a841c8f8d747..b29d948a7110 100644
--- a/xen/arch/arm/tee/ffa_notif.c
+++ b/xen/arch/arm/tee/ffa_notif.c
@@ -21,6 +21,11 @@ static bool __ro_after_init fw_notif_enabled;
 static unsigned int __ro_after_init notif_sri_irq;
 static DEFINE_SPINLOCK(notif_info_lock);
 
+bool ffa_notif_fw_enabled(void)
+{
+    return fw_notif_enabled;
+}
+
 static bool inject_notif_pending(struct domain *d)
 {
     struct vcpu *v;
@@ -107,6 +112,55 @@ out_unlock:
     return ret;
 }
 
+/*
+ * Deliver a VM-to-VM notification. ctx->notif.notif_lock protects
+ * vm_bind/vm_pending so callers must not hold it already.
+ */
+static int32_t notification_set_vm(uint16_t dst_id, uint16_t src_id,
+                                   uint32_t flags, uint64_t bitmap)
+{
+    struct domain *dst_d;
+    struct ffa_ctx *dst_ctx;
+    unsigned int id;
+    int32_t ret;
+
+    if ( flags )
+        return FFA_RET_INVALID_PARAMETERS;
+
+    ret = ffa_endpoint_domain_lookup(dst_id, &dst_d, &dst_ctx);
+    if ( ret )
+        return ret;
+
+    ret = FFA_RET_OK;
+
+    spin_lock(&dst_ctx->notif.notif_lock);
+
+    for ( id = 0; id < FFA_NUM_VM_NOTIF; id++ )
+    {
+        if ( !(bitmap & BIT(id, ULL)) )
+            continue;
+
+        if ( dst_ctx->notif.vm_bind[id] != src_id )
+        {
+            ret = FFA_RET_DENIED;
+            goto out_unlock;
+        }
+    }
+
+    dst_ctx->notif.vm_pending |= bitmap;
+    if ( !dst_ctx->notif.notif_irq_raised &&
+         (dst_ctx->notif.vm_pending || dst_ctx->notif.hyp_pending) &&
+         inject_notif_pending(dst_d) )
+        dst_ctx->notif.notif_irq_raised = true;
+
+out_unlock:
+    spin_unlock(&dst_ctx->notif.notif_lock);
+
+    rcu_unlock_domain(dst_d);
+
+    return ret;
+}
+
 int32_t ffa_handle_notification_bind(struct cpu_user_regs *regs)
 {
     struct domain *d = current->domain;
@@ -288,6 +342,8 @@ void ffa_handle_notification_get(struct cpu_user_regs *regs)
 
     if ( IS_ENABLED(CONFIG_FFA_VM_TO_VM) )
     {
+        bool pending;
+
         spin_lock(&ctx->notif.notif_lock);
 
         if ( (flags & FFA_NOTIF_FLAG_BITMAP_HYP) && ctx->notif.hyp_pending )
@@ -298,6 +354,18 @@ void ffa_handle_notification_get(struct cpu_user_regs *regs)
                 ctx->notif.notif_irq_raised = false;
         }
 
+        if ( (flags & FFA_NOTIF_FLAG_BITMAP_VM) && ctx->notif.vm_pending )
+        {
+            w4 = (uint32_t)(ctx->notif.vm_pending & GENMASK(31, 0));
+            w5 = (uint32_t)((ctx->notif.vm_pending >> 32) & GENMASK(31, 0));
+            ctx->notif.vm_pending = 0;
+        }
+
+        pending = (ctx->notif.hyp_pending != 0) ||
+                  (ctx->notif.vm_pending != 0);
+        if ( !pending )
+            ctx->notif.notif_irq_raised = false;
+
         spin_unlock(&ctx->notif.notif_lock);
     }
 
@@ -323,9 +391,17 @@ int32_t ffa_handle_notification_set(struct cpu_user_regs *regs)
     if ( flags )
         return FFA_RET_INVALID_PARAMETERS;
 
-    if ( FFA_ID_IS_SECURE(dest_id) && fw_notif_enabled )
-        return ffa_simple_call(FFA_NOTIFICATION_SET, src_dst, flags, bitmap_lo,
-                               bitmap_hi);
+    if ( FFA_ID_IS_SECURE(dest_id) )
+    {
+        if ( fw_notif_enabled )
+            return ffa_simple_call(FFA_NOTIFICATION_SET, src_dst, flags,
+                                   bitmap_lo, bitmap_hi);
+    }
+    else if ( IS_ENABLED(CONFIG_FFA_VM_TO_VM) )
+    {
+        return notification_set_vm(dest_id, caller_id, flags,
+                                   ((uint64_t)bitmap_hi << 32) | bitmap_lo);
+    }
 
     return FFA_RET_NOT_SUPPORTED;
 }
diff --git a/xen/arch/arm/tee/ffa_private.h b/xen/arch/arm/tee/ffa_private.h
index 78a0a9815d56..923a071a9d7c 100644
--- a/xen/arch/arm/tee/ffa_private.h
+++ b/xen/arch/arm/tee/ffa_private.h
@@ -340,20 +340,18 @@ struct ffa_ctx_notif {
     uint64_t vm_pending;
 
     /*
-     * Source endpoint bound to each VM notification ID (0 means unbound).
+     * Tracks whether an NPI has been raised for local pending notifications.
+     * Protected by notif_lock.
      */
-    uint16_t vm_bind[FFA_NUM_VM_NOTIF];
+    bool notif_irq_raised;
 
     /*
-     * Lock protecting the hypervisor-managed notification state.
+     * Source endpoint bound to each VM notification ID (0 means unbound).
      */
-    spinlock_t notif_lock;
+    uint16_t vm_bind[FFA_NUM_VM_NOTIF];
 
-    /*
-     * Tracks whether a local notification pending interrupt was raised.
-     * Protected by notif_lock.
-     */
-    bool notif_irq_raised;
+    /* Lock protecting local notification state. */
+    spinlock_t notif_lock;
 
     /*
      * Bitmap of pending hypervisor notifications (for HYP bitmap queries).
@@ -495,6 +493,7 @@ void ffa_notif_init(void);
 void ffa_notif_init_interrupt(void);
 int ffa_notif_domain_init(struct domain *d);
 void ffa_notif_domain_destroy(struct domain *d);
+bool ffa_notif_fw_enabled(void);
 
 int32_t ffa_handle_notification_bind(struct cpu_user_regs *regs);
 int32_t ffa_handle_notification_unbind(struct cpu_user_regs *regs);
-- 
2.53.0



From xen-devel-bounces@lists.xenproject.org Wed Apr 29 06:41:33 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 29 Apr 2026 06:41:33 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1297003.1573128 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wHybl-0003HJ-Ga; Wed, 29 Apr 2026 06:41:17 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1297003.1573128; Wed, 29 Apr 2026 06:41: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 1wHybl-0003HC-CB; Wed, 29 Apr 2026 06:41:17 +0000
Received: by outflank-mailman (input) for mailman id 1297003;
 Wed, 29 Apr 2026 06:41:16 +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 1wHybk-0003H4-JP
 for xen-devel@lists.xenproject.org; Wed, 29 Apr 2026 06:41:16 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wHybj-00AXRd-0c
 for xen-devel@lists.xenproject.org; Wed, 29 Apr 2026 08:41:15 +0200
Received: from [10.42.69.9] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <Michal.Orzel@amd.com>)
 id 69f1a808-5cb7-0a2a0a5109dd-0a2a4509d28a-18
 for <xen-devel@lists.xenproject.org>; Wed, 29 Apr 2026 08:41:14 +0200
Received: from [40.93.196.36]
 (helo=SA9PR02CU001.outbound.protection.outlook.com)
 by tlsNG-bad1c0.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.1)
 (envelope-from <Michal.Orzel@amd.com>)
 id 69f1a808-2497-0a2a45090019-285dc424dee6-3
 for <xen-devel@lists.xenproject.org>; Wed, 29 Apr 2026 08:41:14 +0200
Received: from BL1PR13CA0123.namprd13.prod.outlook.com (2603:10b6:208:2bb::8)
 by CY1PR12MB9602.namprd12.prod.outlook.com (2603:10b6:930:107::11)
 with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9870.15; Wed, 29 Apr
 2026 06:41:09 +0000
Received: from BN2PEPF00004FBF.namprd04.prod.outlook.com
 (2603:10b6:208:2bb:cafe::91) by BL1PR13CA0123.outlook.office365.com
 (2603:10b6:208:2bb::8) with Microsoft SMTP Server (version=TLS1_3,
 cipher=TLS_AES_256_GCM_SHA384) id 15.20.9846.26 via Frontend Transport; Wed,
 29 Apr 2026 06:41:09 +0000
Received: from satlexmb07.amd.com (165.204.84.17) by
 BN2PEPF00004FBF.mail.protection.outlook.com (10.167.243.185) with Microsoft
 SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id
 15.20.9846.18 via Frontend Transport; Wed, 29 Apr 2026 06:41:08 +0000
Received: from SATLEXMB04.amd.com (10.181.40.145) by satlexmb07.amd.com
 (10.181.42.216) with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.2.2562.17; Wed, 29 Apr
 2026 01:41:07 -0500
Received: from satlexmb07.amd.com (10.181.42.216) by SATLEXMB04.amd.com
 (10.181.40.145) with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2507.39; Wed, 29 Apr
 2026 01:41:07 -0500
Received: from [10.252.145.116] (10.180.168.240) by satlexmb07.amd.com
 (10.181.42.216) with Microsoft SMTP Server id 15.2.2562.17 via Frontend
 Transport; Wed, 29 Apr 2026 01:41:05 -0500
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@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=BkMX+NSrirQgoAhR1LIJ7kUqxW4w1hUcm7dEd4fFT4InzTusnXmmDAyqj8Zs3E+eDRoeCJuVscyRwXi65W/vwjPHynhLKRtX93Aqy6LtsVU1734xM7la8fGWMblin+vPGa0eOIVJtL7BMip3/cimhhI61hQmQIUaG4kdU35H/huv/Xs+ZmWkthL5yyduBOREJHDVUQJedVXhnfXgWIFlc4sNdnmfJOmkHQWE3u2/ja2LkU/50df5hw0ocBAHbgx8CkoQR+Drtsi3EsEyeJIQ/mvUksY46wpuJzpYyLNHZWgGhtoN7pmoDXdmlPZ9mSwO9rm47wQ+CweijJgNy6n9gw==
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com;
 s=arcselector10001;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1;
 bh=Svu0MiN1dbFWA9U1YJpZjZAl8F2imVtLTYcZjjBwVFI=;
 b=f4CbxJtlABdmBs0Y41It3TyMlUS3cVcOTmLIQQCJ8pPqCC9jLwZBRQoZvgK+nfvWuvtn26C6Ex6IyANySf4PxwyWzJkDH7CjZQtvMtnMcTrdq6mFY/U7j53GihI8Dq8BowKawYpVbOimtd5MHxIbZkWFHc4uTMm9hJ/Adrp+5EiWB0KDmqN9YEEf99zwn25L6rFk86QJ2tN2yNcR1C872G4nNrTw9C7mIzDvcL0L0XCgCpBkWQCXatOGOOX8PcZ78j+lLkHaEydZuYiWK24rrnC9AahZzwAun2vdqlqIVUDnQhC4lzSF/Ap0IwGdThYTj4p/GkogmlD5OQLcPYaypQ==
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=Svu0MiN1dbFWA9U1YJpZjZAl8F2imVtLTYcZjjBwVFI=;
 b=VLcsJEPOJY3kn8ZIv+kHOssUotFhVo6zxs3xcA8yU0dPJeofK9jQuDDkimvNwpNr5+eY5K1BCxN7KUSEqKFiuQrfcz8vzpO3GSjjdgFIBXuOE7P1s+DeU64vRrB6SJE/M0jPsTUNXQUWLf1NVT56k2pQLNpK9jyYThq59rOFPaA=
X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 165.204.84.17)
 smtp.mailfrom=amd.com; dkim=none (message not signed)
 header.d=none;dmarc=pass action=none header.from=amd.com;
Received-SPF: Pass (protection.outlook.com: domain of amd.com designates
 165.204.84.17 as permitted sender) receiver=protection.outlook.com;
 client-ip=165.204.84.17; helo=satlexmb07.amd.com; pr=C
Message-ID: <088730ce-a04e-4ddb-9e7c-8015fe7e96bf@amd.com>
Date: Wed, 29 Apr 2026 08:41:05 +0200
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH v4 0/3] dom0less: various updates
To: Oleksii Kurochko <oleksii.kurochko@gmail.com>,
	<xen-devel@lists.xenproject.org>
CC: Romain Caritey <Romain.Caritey@microchip.com>, Stefano Stabellini
	<sstabellini@kernel.org>, Julien Grall <julien@xen.org>, Bertrand Marquis
	<bertrand.marquis@arm.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.pau@citrix.com>, Volodymyr Babchuk
	<Volodymyr_Babchuk@epam.com>
References: <cover.1777296786.git.oleksii.kurochko@gmail.com>
From: "Orzel, Michal" <michal.orzel@amd.com>
Content-Language: en-US
In-Reply-To: <cover.1777296786.git.oleksii.kurochko@gmail.com>
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: 7bit
Received-SPF: None (SATLEXMB04.amd.com: michal.orzel@amd.com does not
 designate permitted sender hosts)
X-EOPAttributedMessage: 0
X-MS-PublicTrafficType: Email
X-MS-TrafficTypeDiagnostic: BN2PEPF00004FBF:EE_|CY1PR12MB9602:EE_
X-MS-Office365-Filtering-Correlation-Id: 854828dd-c9a2-4509-083e-08dea5ba4bf1
X-MS-Exchange-SenderADCheck: 1
X-MS-Exchange-AntiSpam-Relay: 0
X-Microsoft-Antispam:
	BCL:0;ARA:13230040|82310400026|36860700016|7416014|376014|1800799024|22082099003|56012099003|18002099003|13003099007;
X-Microsoft-Antispam-Message-Info:
	KDBj/4DPwVUKXq3hTAxVE1+E6hDQbtZxUlIWVMBxV2AH1EM90AV5PpOSY8Sg7mX63r/LFcKrYzWfAQ/ARZpcLYwS0gFNYX0i9i8D1Cpw7SXdDo7oWLuyCcZadbpgxhs50RLXK7MEKcRT6INcqk1+Dnl3jjz5j8+LdCSpOy6uxP6NKm5s0J94yed/I5y6Pr6ffxsoaYP5WLbImhQl+O5RGCFxTbGNRmxA06DIiV/d9rjeWBRDa7CluE3ZPmiL6jCj6aFhOz2XtvDQ5qWqpu8+QdLfsqZR1bSyBParLYUSZMlljYu8OPpNj+RFbSHulm9aLEpAXDEVba0NOLDoLtCrBBJ/9rpbns6vUhROFrRoP5RpZbL/IQExD1HDclx1aLnn5J8vcLD2AQKqIN24fh5C/KzkhItM8G17B+Tix3yvkoRVQAZhWfy7Ify1kWdiov+msFTguvHl3fkDb5XWNtfFJQy28QMR0bhmhyme4rvEYLE+jEo45cWZQRQQ9wYFyEzgjpZX5PmY6WHUnRnb1lBvZbrOkHXa3JtkZK5+g7X2GGTYptw7mOdlJY3dck+SbE7sOWrK1RZD0z9EfhBvQggy2WSw1Tnz3BrwXa9i+yDpLVmFR43mgkKQ95uN63/QXrEcqgj2QdmEkpKWZFIa0HBXO9NIlUzgRdApp8EEA7z/tgY+yZYNrP4Qb/xkmpXdsihdP6KXRbBB/DS8Xshs8/044q4wbWpgPyjVUFqqSbnovYs=
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)(7416014)(376014)(1800799024)(22082099003)(56012099003)(18002099003)(13003099007);DIR:OUT;SFP:1101;
X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1
X-MS-Exchange-AntiSpam-MessageData-0:
	HKif+WZoMjrEOXGC4r7IxoNsOlohGQ2iSZoAqjXA21zN+PhRKxbJ/b/hXGl5te5MIsVntKXIf1h6h+nr8dwj4R3ZbtFVEnKWcWfHUGzAPNpCBYnNh/vUUiiNUI3hdA3d0NOBINDMKC6ORe+DkmWOL0wfNDayU892gygEW9G3m2zpYq1xIP9hJrVYAtCX2Iq1Je29/62BLJKhicLvfMYqaSJdWiDhpOb5PbmQ4JBmzEMjKlALAhF+BC4gzTlK0vjBn41ajixRiYGHpa24zh9X1Sfv8YmC6BKeMlbFSC6uvU/wJTaRL4uKzx/AejXnWn0FgPknbUWF4bE95A0+JMJsBw5mMz74B4JQnk352W58CnFqVHBIEfSCbP6XMOyladlyGt+QFx903H36ocXLO3mXkr9009lx9pddUzPpvWOpsQj4OwL5UCWSHUa2DRgbooV6
X-OriginatorOrg: amd.com
X-MS-Exchange-CrossTenant-OriginalArrivalTime: 29 Apr 2026 06:41:08.9339
 (UTC)
X-MS-Exchange-CrossTenant-Network-Message-Id: 854828dd-c9a2-4509-083e-08dea5ba4bf1
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:
	BN2PEPF00004FBF.namprd04.prod.outlook.com
X-MS-Exchange-CrossTenant-AuthAs: Anonymous
X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem
X-MS-Exchange-Transport-CrossTenantHeadersStamped: CY1PR12MB9602
X-purgate-ID: tlsNG-bad1c0/1777444874-93F7EA53-A22CDC16/0/0
X-purgate-type: clean
X-purgate-size: 4471

I committed the first two patches. I decided to wait with the third patch for
Jan as he was the one with the most remarks.

~Michal

On 27-Apr-26 17:34, Oleksii Kurochko wrote:
> This patch series introduces a new field to track not-yet-used phandles as there
> are some use cases where RISC-V needs to know which phandle number could
> be used for generating a device tree node.
> 
> For example, on the RISC-V side in make_cpus_node() [1] it is necessary to know
> which phandle number is unused to use it for device tree node generation.
> 
> Here is an example of generated guest DTB:
>     cpus {
>     ...
>       cpu@0 {
>     ...
>         interrupt-controller {
>           compatible = "riscv,cpu-intc";
>           #interrupt-cells = <0x1>;
>           interrupt-controller;
>           phandle = <0xfdea>;
>         };
>       };
>     };
> 
>     /soc/imsics@28000000 {
> 
>       interrupts-extended = <0xfdea 0x9 >;
> 
>       phandle = <0xfdeb>;
>     };
> 
>     /soc/aplic@d000000 {
>     ...
>       msi-parent = <0xfdeb>;
>       phandle = <0x1>;
>     };
> 
> Note that phandles for imsic and riscv,cpu-intc are generated in this example
> not by get_next_free_phandle(), that is why they have such big numbers.
> 
> For non-RISC-V people, APLIC is an interrupt controller (something like GIC in
> Arm), IMSIC is an interrupt controller that provides MSI and connects to
> each CPU.
> 
> So (based on the DTS above) for APLIC, kinfo->phandle_intc is reused, which
> will also be re-used for the device node's interrupt property. For all others, I
> just introduced GUEST_PHANDLE_LAST [2] and used it for generation [3]. But I expect
> that it could be useful for other architectures too so I just moved it to common
> and re-use pfdt to understand what the maximum used phandle is.
> 
> [1] https://www.kernel.org/doc/Documentation/devicetree/bindings/interrupt-controller/riscv%2Ccpu-intc.txt
> [2] https://lore.kernel.org/xen-devel/ccd6d21b224b478c88ca5f2fdd2d1dd507671510.1773157782.git.oleksii.kurochko@gmail.com/
> [3] https://lore.kernel.org/xen-devel/fd64b8526a23e9d7775b9b48c5a933b0673c4fba.1773157782.git.oleksii.kurochko@gmail.com/
>            *************************************
> 
> Another thing introduced in this patch series is moving domain type to common
> code as several architectures (ARM and RISC-V for now) use them and it
> looks pretty architecture-independent. Also, is_64bit_domain() is used by
> dom0less common code, so I found it useful also to move is_{32,64}bit_domain
> macros to common code.
> 
>            *************************************
> 
> And the last thing is changing the prototype of make_cpus_node() to be aligned
> with other make_*_node() and since RISC-V will need access to the free_phandle field
> (even if it will be moved to kinfo->arch.free_phandle) and for the reason that
> this ->free_phandle is updated in make_*_node(), the kinfo argument is passed as
> non-const.
> 
> CI: https://gitlab.com/xen-project/people/olkur/xen/-/pipelines/2482499536
> 
> ---
> Changes in v4:
>  - Rebase on top of staging.
>  - Add Review-by for patch 1 and 3.
>  - Address the comments.
> ---
> Changes in v3:
>  - Rebase on top of staging.
>  - Address the comments.
> ---
> Changes in v2:
>  - Address the comments from ML.
> ---
> 
> Oleksii Kurochko (3):
>   xen/dom0less: introduce next_phandle in struct kernel_info
>   xen/dom0less: pass kernel_info struct instead of fdt to
>     make_cpus_node()
>   xen: introduce CONFIG_HAS_DOMAIN_TYPE
> 
>  xen/arch/arm/Kconfig                    |  1 +
>  xen/arch/arm/arm64/domctl.c             |  4 +--
>  xen/arch/arm/dom0less-build.c           | 14 --------
>  xen/arch/arm/domain_build.c             | 17 +++++-----
>  xen/arch/arm/include/asm/domain.h       | 16 ---------
>  xen/arch/arm/include/asm/kernel.h       |  4 ---
>  xen/arch/arm/kernel.c                   | 16 ++++-----
>  xen/common/Kconfig                      |  3 ++
>  xen/common/device-tree/dom0less-build.c | 45 ++++++++++++++++++-------
>  xen/include/xen/dom0less-build.h        |  2 --
>  xen/include/xen/domain.h                | 13 +++++++
>  xen/include/xen/fdt-domain-build.h      | 17 +++++++++-
>  xen/include/xen/fdt-kernel.h            | 11 ++++++
>  xen/include/xen/sched.h                 |  4 +++
>  14 files changed, 98 insertions(+), 69 deletions(-)
> 



From xen-devel-bounces@lists.xenproject.org Wed Apr 29 07:23:07 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 29 Apr 2026 07:23:07 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1297022.1573168 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wHzFu-00016x-R7; Wed, 29 Apr 2026 07:22:46 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1297022.1573168; Wed, 29 Apr 2026 07:22: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 1wHzFu-00016q-OT; Wed, 29 Apr 2026 07:22:46 +0000
Received: by outflank-mailman (input) for mailman id 1297022;
 Wed, 29 Apr 2026 07:22:46 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <bernhard.kaindl@citrix.com>) id 1wHzFt-00016k-W8
 for xen-devel@lists.xenproject.org; Wed, 29 Apr 2026 07:22:45 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wHzFr-001Yuw-Bi
 for xen-devel@lists.xenproject.org; Wed, 29 Apr 2026 09:22:44 +0200
Received: from [10.42.69.8] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <bernhard.kaindl@citrix.com>)
 id 69f1b1bf-5cb7-0a2a0a5109dd-0a2a4508e4ea-46
 for <xen-devel@lists.xenproject.org>; Wed, 29 Apr 2026 09:22:44 +0200
Received: from [160.101.131.9] (helo=na1pdmzitismtp02.tibco.com)
 by tlsNG-c1860d.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.1)
 (envelope-from <bernhard.kaindl@citrix.com>)
 id 69f1b1c3-63b5-0a2a45080019-a0658309baa8-3
 for <xen-devel@lists.xenproject.org>; Wed, 29 Apr 2026 09:22:44 +0200
Received: from debian.eng.citrite.net (unknown [10.113.40.46])
 by na1pdmzitismtp02.tibco.com (Postfix) with ESMTP id AE9E081D7239;
 Wed, 29 Apr 2026 03:21:42 -0400 (EDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-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: Bernhard Kaindl <bernhard.kaindl@citrix.com>
To: xen-devel@lists.xenproject.org
Cc: Bernhard Kaindl <bernhard.kaindl@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.pau@citrix.com>,
	Stefano Stabellini <sstabellini@kernel.org>
Subject: [PATCH] Improved reStructuredText formatting of Misra C Rules
Date: Wed, 29 Apr 2026 08:22:13 +0100
Message-Id: <c6dffce6d424e98911a8a12ad0a868ff00c89345.1777447317.git.bernhard.kaindl@citrix.com>
X-Mailer: git-send-email 2.39.5
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit
X-purgate-ID: tlsNG-c1860d/1777447364-C0965DB1-8E1E7D20/0/0
X-purgate-type: clean
X-purgate-size: 6351

Code blocks in the RFC rules can be converted as C syntax-highlighted
pretty pieces of code using `.. code:: C` inline elements:
https://docutils.sourceforge.io/docs/ref/rst/directives.html#code

For reference, the current formatting used are 'Indented Literal Blocks':
https://docutils.sourceforge.io/docs/ref/rst/restructuredtext.html#toc-entry-23

In this example, docs/misra/rules.rst, line 128 starts an Indented
Literal Block by ending the paragraph with "violations::"
(note the :: at then end of the paragraph which is enables it):

         - Functions that are no-return due to calls to the `ASSERT_UNREACHABLE()`
           macro in debug build configurations are not considered violations::

              static inline bool
              arch_vcpu_ioreq_completion(enum vio_completion completion)
              {
                  ASSERT_UNREACHABLE();
                  return false;
              }

Format such code blocks as C code blocks and apply ``function()`` around
functions to make them inline linterals for monospace formatting.
Also make some code blocks less wide to fit into the column of the table.

Signed-off-by: Bernhard Kaindl <bernhard.kaindl@citrix.com>
---
Of course, this is only a 1st step,
it may be extended further in further merges.

Preview based on the theme update submitted yesterday:
https://lists.xen.org/archives/html/xen-devel/2026-04/msg01375.html:

https://bernhard-xen.readthedocs.io/en/misra-rules-format-rfc/misra/rules.html

BTW: The way the ReadTheDocs (RTD) theme has another issue where it
applies: 'td { white-space: nowrap; }' to all table data,
preventing wrapping lines inside long table cells:
https://xenbits.xen.org/docs/sphinx-unstable/misra/rules.html

This mostly shows on xenbits for me, but this is a widely known RTD bug.
The RTD Sphinx devs see this bug as a feature, and are unwilling to fix:
https://github.com/readthedocs/sphinx_rtd_theme/issues/139 (example bug)

There are workarounds, but to better address this 1st step, I propose to
add a theme which does not appear to have this issue (and also has a
more modern look and feel with auto dark mode support (can be switched
to bright mode and darm mode directly as well):

https://lists.xen.org/archives/html/xen-devel/2026-04/msg01375.html
Signed-off-by: Bernhard Kaindl <bernhard.kaindl@citrix.com>
---
 docs/misra/rules.rst | 43 ++++++++++++++++++++++++++++---------------
 1 file changed, 28 insertions(+), 15 deletions(-)

diff --git a/docs/misra/rules.rst b/docs/misra/rules.rst
index fc6fdfd313d0..82412e819846 100644
--- a/docs/misra/rules.rst
+++ b/docs/misra/rules.rst
@@ -115,20 +115,29 @@ maintainers if you want to suggest a change.
      - Required
      - A project shall not contain unreachable code
      - The following are allowed:
-         - Invariantly constant conditions, e.g. if(IS_ENABLED(CONFIG_HVM)) { S; }
+         - Invariantly constant conditions, e.g.
+
+           .. code:: C
+
+              if ( IS_ENABLED(CONFIG_HVM) ) {
+                S;
+              }
+
          - Switch with a controlling value statically determined not to
            match one or more case statements
          - Functions that are intended to be referenced only from
-           assembly code (e.g. 'do_trap_fiq')
-         - asm-offsets.c, as they are not linked deliberately, because
+           assembly code (e.g. ``do_trap_fiq``)
+         - ``asm-offsets.c``, as they are not linked deliberately, because
            they are used to generate definitions for asm modules
          - Declarations without initializer are safe, as they are not
            executed
-         - Functions that are no-return due to calls to the `ASSERT_UNREACHABLE()`
-           macro in debug build configurations are not considered violations::
+         - Functions that are no-return due to calls to the ``ASSERT_UNREACHABLE()``
+           macro in debug build configurations are not considered violations:
+
+           .. code:: C
 
               static inline bool
-              arch_vcpu_ioreq_completion(enum vio_completion completion)
+              arch_vcpu_ioreq_completion(int c)
               {
                   ASSERT_UNREACHABLE();
                   return false;
@@ -141,13 +150,13 @@ maintainers if you want to suggest a change.
 
    * - `Rule 3.1 <https://gitlab.com/MISRA/MISRA-C/MISRA-C-2012/Example-Suite/-/blob/master/R_03_01.c>`_
      - Required
-     - The character sequences /* and // shall not be used within a
+     - The character sequences ``/*`` and ``//`` shall not be used within a
        comment
      - Comments containing URLs inside C-style block comments are safe
 
    * - `Rule 3.2 <https://gitlab.com/MISRA/MISRA-C/MISRA-C-2012/Example-Suite/-/blob/master/R_03_02.c>`_
      - Required
-     - Line-splicing shall not be used in // comments
+     - Line-splicing shall not be used in ``//`` comments
      -
 
    * - `Rule 4.1 <https://gitlab.com/MISRA/MISRA-C/MISRA-C-2012/Example-Suite/-/blob/master/R_04_01.c>`_
@@ -207,16 +216,20 @@ maintainers if you want to suggest a change.
 
        Clashes between bitops functions and macro names are allowed
        because they are used for input validation and error handling.
-       Example::
+       Example:
 
-           static inline void set_bit(int nr, volatile void *addr)
+       .. code:: C
+
+           static inline void set_bit(int nr, volatile void *a)
            {
-               asm volatile ( "lock btsl %1,%0"
-                              : "+m" (ADDR) : "Ir" (nr) : "memory");
+               asm volatile ( "lock btsl %1,%0 "
+                              : "+m" (a)
+                              : "Ir" (nr) : "memory");
            }
-           #define set_bit(nr, addr) ({                            \
-               if ( bitop_bad_size(addr) ) __bitop_bad_size();     \
-               set_bit(nr, addr);                                  \
+
+           #define set_bit(nr, addr) ({                       \
+               if ( bitop_bad_size(addr) ) __bitop_bad_size();\
+               set_bit(nr, addr);                             \
            })
 
        Clashes between grant table functions and macro names are allowed
-- 
2.39.5



From xen-devel-bounces@lists.xenproject.org Wed Apr 29 07:34:07 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 29 Apr 2026 07:34:07 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1297051.1573177 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wHzQp-0002xp-Ov; Wed, 29 Apr 2026 07:34:03 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1297051.1573177; Wed, 29 Apr 2026 07:34: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 1wHzQp-0002xi-LU; Wed, 29 Apr 2026 07:34:03 +0000
Received: by outflank-mailman (input) for mailman id 1297051;
 Wed, 29 Apr 2026 07:34:02 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <bernhard.kaindl@citrix.com>) id 1wHzQo-0002xc-4U
 for xen-devel@lists.xenproject.org; Wed, 29 Apr 2026 07:34:02 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wHzQn-00BXbo-2d
 for xen-devel@lists.xenproject.org; Wed, 29 Apr 2026 09:34:01 +0200
Received: from [10.42.69.4] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <bernhard.kaindl@citrix.com>)
 id 69f1b461-5cb7-0a2a0a5109dd-0a2a4504e63c-30
 for <xen-devel@lists.xenproject.org>; Wed, 29 Apr 2026 09:34:00 +0200
Received: from [40.93.198.32]
 (helo=CY7PR03CU001.outbound.protection.outlook.com)
 by tlsNG-ebf023.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.1)
 (envelope-from <bernhard.kaindl@citrix.com>)
 id 69f1b467-1dec-0a2a45040019-285dc620bc10-3
 for <xen-devel@lists.xenproject.org>; Wed, 29 Apr 2026 09:34:00 +0200
Received: from LV3PR03MB7707.namprd03.prod.outlook.com (2603:10b6:408:28b::21)
 by DS2PR03MB8466.namprd03.prod.outlook.com (2603:10b6:8:333::6) with
 Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9870.20; Wed, 29 Apr
 2026 07:33:58 +0000
Received: from LV3PR03MB7707.namprd03.prod.outlook.com
 ([fe80::97e8:ef9c:9031:e2bf]) by LV3PR03MB7707.namprd03.prod.outlook.com
 ([fe80::97e8:ef9c:9031:e2bf%6]) with mapi id 15.20.9870.016; Wed, 29 Apr 2026
 07:33: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=i4vUdG/q5PMZc6lR6SLWMm3JOQ056zM/S8pl2VHl8hMF0B8C/eUILtoeZT+efrT+9T8kVnTTNR07TPneTmiE24Nfg112TsqlboE9oinOjrL4YYjYmmKGjrM1dHYig66MHgSsuJDR04W/AdQOMmxFoNHvVTvnv+NkORbhym9m4i3mj3xJTOPKDdmki9etiqrTusN26OyIsIqoPv7YSg+h/qjk7VkmysNPz7kmq8jzWSjHKxpwVE5opt20DKGtHJ+xuzOh3bRAJqIchAJnLt3m5Mp06p5JJsfLfDPO0K6i8CJ9iZSBFtHNkSRqctzkCkYAwMyC5c86zvRqjM1/7dUMlw==
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com;
 s=arcselector10001;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1;
 bh=gd8n0gVGRnwJgk5/jNLaNpWwMkUJDhbZWIsAqyGDX9E=;
 b=dpw5NyxELGWmBH5ehW1vlLr0EOJsaSEI9AjbJMxqeiWcJgujsQtk4V6ae8YKyAEbHZlay6tr7WOEll3w8DLUZJ8reA4295O/TkgmTn+WYDgerNSNnMe7h6C6kJDQ/LMG6v9IHvFZYlBkqYnF8pIAJn13TVCMWtRXo5usGLEcvrVnVmrvcCmkhg2tKdzGTKDaMOwQm/YgunkaFXFywvZmj8hIy9c9iLn0Lg6FWSJJy0Nk6FPVORS9r2DlwunNXCLLhknmjbOJpeCotsY5Ad1BgR+p+TjX/lmEj4lr/YGQau2TlKPMbkeoWN9joWjTgOWiwZwTCz/IeBvmJR28Z7Yi2w==
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=gd8n0gVGRnwJgk5/jNLaNpWwMkUJDhbZWIsAqyGDX9E=;
 b=WJu2uafX60QyisKeTqE/08xLYOOx7HgnRcnt6Asy54w1xIwLcxChavTlbqTOw/flNJWjsbL+pWQvPwh7j1w8VmD4UyAYuAlzqaKiUU8M7Iv0sAqW2T0ZyTa1715LINrjirgDKpbIxHOzykK95M0F4m07I6Njcco2tsh3Y4sSrPc=
From: Bernhard Kaindl <bernhard.kaindl@citrix.com>
To: Nicola Vetrini <nicola.vetrini@bugseng.com>
CC: "xen-devel@lists.xenproject.org" <xen-devel@lists.xenproject.org>, Andrew
 Cooper <andrew.cooper@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.pau@citrix.com>, Stefano Stabellini <sstabellini@kernel.org>
Subject: RE: [PATCH] docs: Format (void *) to fix reStructuredText emphasis
 warnings
Thread-Topic: [PATCH] docs: Format (void *) to fix reStructuredText emphasis
 warnings
Thread-Index: AQHc1z20FhXjWBnhSUiHAkPe/4C6NrX06uYAgAAAwNA=
Date: Wed, 29 Apr 2026 07:33:57 +0000
Message-ID:
 <LV3PR03MB7707443378FA9C843ADE372587342@LV3PR03MB7707.namprd03.prod.outlook.com>
References:
 <05b61bdfce381176a6c4b8844db1fba3fa0982ce.1777401225.git.bernhard.kaindl@citrix.com>
 <a5b035c721707c53756b45e48ad473ee@bugseng.com>
In-Reply-To: <a5b035c721707c53756b45e48ad473ee@bugseng.com>
Accept-Language: en-GB, en-US
Content-Language: en-GB
X-MS-Has-Attach:
X-MS-TNEF-Correlator:
authentication-results: dkim=none (message not signed)
 header.d=none;dmarc=none action=none header.from=citrix.com;
x-ms-publictraffictype: Email
x-ms-traffictypediagnostic: LV3PR03MB7707:EE_|DS2PR03MB8466:EE_
x-ms-office365-filtering-correlation-id: 649ecf22-c712-4aa2-6d1a-08dea5c1acb7
x-ms-exchange-senderadcheck: 1
x-ms-exchange-antispam-relay: 0
x-microsoft-antispam:
 BCL:0;ARA:13230040|376014|366016|1800799024|22082099003|56012099003|18002099003|38070700021;
x-microsoft-antispam-message-info:
 RxtmR2lcYpC6cdUpbDLV5VrYEUpL0ftGPZT3bLyYb1hbBkPt4PmNUT1qTmatrwOKVrf8r6ZIyJlqRvI7kf7eiBi5+A680kuEfIt/ZMoXai3cCOwpK3SNVYUOfvIvY3cya0w1anNFRzh8m2lWH0Y2eFYawPDrhbji1EjZiIXPYTOxh/KpazvIIVyViSHvvJse8KA+IjrrK6ErpRYp9iAuyyzUNTNzRsh1FmzTC1DPXIYvXpKfZqM4FAvT/GdQrZDoygyrp+XCYapOv1HMlfkIOj/tJ4bXvHk7xeFiP3oYJouID10/d8AHp6ZEZSd3t8F96QwJRop0y66DJBm1aYI68oddFLKBgB+UuivVgIMXCiryhEMbxpOJYKN15S+5zplK1WLEnp55hTW1lqiqG7BI/l5Qdr5qO4Ee/HSlWBMCHnKVcB+1enRPlz9Y2/JmETG9QcJJ3c32n25XHnP4LPRib+Cm9rcFYIC6oRZkPDXwg3aUv3tV23FaC6bcYLsi08yA3dqTuHbXhu+SY1fI+Qf0DDlNdvRuPDn6AsPCY9VoaCokTfQQqSKUnZ/6IzMBAbUVmEKpG6XshqbKNhJg7yCBbSHhAX8hotfb5+Ev2J0yNm1K+MmX87p20+F/1to9XlvCCjr3U8h8cIOnZEjkw8blO+q3xsLCEEmL0Zc1mZ7ChcgCs8bndR0NFz9fue08J3NImIjeubJELmIlC84eKoW4wsrr0QyfVuI2k46Up44dXqZsrUCWGtNmMaHW3F9hp3k6lA1+53vUybMLO47ik+xZhzSJBM+xHH4z6lc8yJXNiGY=
x-forefront-antispam-report:
 CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:LV3PR03MB7707.namprd03.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(376014)(366016)(1800799024)(22082099003)(56012099003)(18002099003)(38070700021);DIR:OUT;SFP:1101;
x-ms-exchange-antispam-messagedata-chunkcount: 1
x-ms-exchange-antispam-messagedata-0:
 =?utf-8?B?aXE2TWEyUm5UcUhuMmRRR09OU3h4U042eG9WdlRCK1dCS29UdW1CZnh1WWd5?=
 =?utf-8?B?NnVhM0h1TmhGVFY5bkJ4VTJoN3NjVlpFWkdaV3pEQWJWWjJ0OE1TT2hvRGwy?=
 =?utf-8?B?eXllVUs3dnZBUmVnRU1lM2hhVDMxbVFBYnBUM1pzS3RQM0RZRjZYOE16emJL?=
 =?utf-8?B?UXBBQmI0YjhRYkJBK1hCSHB1Sk82WXJPUEdiQzFyT1BvNW8xbmp2QVkrZXk4?=
 =?utf-8?B?UExTRXdkaG0yV3BFOGFmdkVMWjFvMEVIMUdHSkZUL045YjdBUWRtRnVuL1hw?=
 =?utf-8?B?L1pNdVhEVHczeWpRYmFYMVkrc2YwMU9PK3VlMlM5ZU1ieGVYWWc5ZkR2aUpZ?=
 =?utf-8?B?Z25vY3NMZUZqTXhFSS8zRmhDeXo4U3kyNzdQY0txbE1pd05WbFBUZGJ4S1JX?=
 =?utf-8?B?QW1XSUEzNk9JbUpaWmRxZS9Vd3Q3K0Z2U1RTOGZOT1I1RDh5Y0s4NkYvZFFZ?=
 =?utf-8?B?WFRLeCsyYk9NQTJVTEFHbktGOE5YN05nL04xZUF1UWw2bEFQVEQ1WDVyb1l4?=
 =?utf-8?B?Ri90WEg3K2dhZXg0MUNhVkx1b01uTXgyQmpCSjNQYmMremZCVENsTWpwWmkz?=
 =?utf-8?B?QVNOZ0txU1dvYnB1WlJqZ1loQ2UvQlpPaTE1M0dLbG1PSDhWTyt4Zjl6REJH?=
 =?utf-8?B?VVVXUXpYV21LMUFxUlloZzF6UzFnb2pYcHZLQVN0V1ZvWVFtSFhvbzM0SWlM?=
 =?utf-8?B?dnVEZTFQWGV1MVB3YUFBbVUrTjlvVTNJWFlGZFZYZWpPRVUzdFNZMGs4Y3h4?=
 =?utf-8?B?Q3BXZXdHajYveHo5UEl0bTJNYVpNNjVHZ3cxTGMydktDYW43dWl6a1VtS2lj?=
 =?utf-8?B?SlVUUWJxSk5YM1FWTU50WkN2cVhmRjR0MndtZ3NPNEdUVFBZOUZodWZmeVht?=
 =?utf-8?B?d2NxNHhhTDJ2WWZiZ1ZKTFJwTWZRY1NNTmJhRFh1R0o5aVNWVFc4MmROOGNV?=
 =?utf-8?B?Ylkwa3drZ3o4Y25yTG5aQU9vWXZvVko0cElab21ZSTVsY3FMelU3Z013bjQ0?=
 =?utf-8?B?RHZ0eTBZOGp5SjVWMGRMM1dROWpBenNvQVArc1UwbnN3SkVseERYS3JXNDlq?=
 =?utf-8?B?ZlpYWUsyZUwrQXBpY3pqOGVtTTUwQ0ZUMmVsalNSQ01ZM1NBemN0QzdKU3p2?=
 =?utf-8?B?U2MydkxBUXdqOVFEVU9FVkNVV2V4V2lieU9MSkpoUVNoNUZUNUU2U1VNeC92?=
 =?utf-8?B?WlJZemdBekZyTkRMVVRwNzBmUklNbkF6TEtnemhLSFhmSG5EcHlaakdiOEdY?=
 =?utf-8?B?K1B4MmRoYUpXN29TOW41ZGRvaHErWG9MZmVZWXJXTmEzRVM0WnNnWDBTUGpL?=
 =?utf-8?B?TVlvQmdFVGEyVnBodTRTZ1FteFA2aUF0Mlp6SXlXTm9yeDQwUFRra1FXYXhS?=
 =?utf-8?B?Tk91dEh6K3BoUDdhS3ZUVHNqNWFyUVB4VDR3YTRSNTV4OERIcjBORFV0ejZj?=
 =?utf-8?B?RzIxUFF5ZUQ2b3RwYzR2alVqSUl6NHdENm9EMEZZVmJPWXFaSXkzcGYxQkpr?=
 =?utf-8?B?RWNyclhmMHZ5d2p0VDE3K2RjYXlxSThoMWh1cDRIYzJ3SUpvQmNDakt1bXN6?=
 =?utf-8?B?YkV3S1VDY21YOEJzdVRzNkY2N2FKVzVadmRFY1FqcjhrR08zU2V4czNiTENo?=
 =?utf-8?B?dHpFMzhURlVJZkNJdUFsR2xyeFdZSUVVSUJveGQxNCtPSjZHdnF6N21EQ0hv?=
 =?utf-8?B?ZzA5RHJpVTJpYWVtUElpbXZKTHZ5SWI1WWdLc1pRd3dSNjhQQVE3Q2NMTDlq?=
 =?utf-8?B?THRQM2J2UE1oSmUyYkVBNFRrMWpSYnRuc0hiaytHN2Y4MGFpZHBkYVZ4WnhS?=
 =?utf-8?B?aUpDak5oOHZXUXBmU1YxZGxGTHFmVnpqMDhOajl2RWhZa3lLNFd6OEpURnZV?=
 =?utf-8?B?MlFTTEY3R1p6WXhzbFhiVzZuVjNMQUNiSGNrL3FMdld1dThCZHNhNUUvbHVG?=
 =?utf-8?B?YmpkM0dkbW9UUGx4cHpLTWJ5V1lzd1BiQnc1YmNkNTByUVRIUm1jWEFDbVlB?=
 =?utf-8?B?NmJGK00vM25oZHU3UWh4aC9HL1pxT2Zpc05adjNQRUsrMHJPVTV1Q2Yzemlw?=
 =?utf-8?B?cG1NRGRwTzlwNXBrbVZvM2FFcUo4NmVuTUU0ZUE2MTBRU3l1T1pYU3NUZmF4?=
 =?utf-8?B?ZTliMFhod29RQ2NCWnhYUHhVRzdJNjUyRm11M0hVVzBUMW1QMTlJajdXdzNk?=
 =?utf-8?B?SW1jRDJMYmx5ZzhicjViS3UyM2pKUHZYRmFOMnZIUnVGMlNYcGlKTXNBNmtX?=
 =?utf-8?B?ZGVVSWdpM0F3akJXVzNlWFMzYys5emUxNmhORHZ6bFlkb0pTUHNWdHFMbUpx?=
 =?utf-8?B?RDZQL1kzeXVZUkVaUUcwQVNyaXpmdlFPTyt3V0txanUvditkelJHQT09?=
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: LV3PR03MB7707.namprd03.prod.outlook.com
X-MS-Exchange-CrossTenant-Network-Message-Id: 649ecf22-c712-4aa2-6d1a-08dea5c1acb7
X-MS-Exchange-CrossTenant-originalarrivaltime: 29 Apr 2026 07:33:57.7683
 (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: AI0y3nDuukQYEW/XiCl2+662H/s8ffqvwvfKvuUsZoFcZ4jstLcuDScn2oKiZm6pYumOngm4vYsXfBUuZAGVNkjs+My6zrHQfX3jeNcCVB8=
X-MS-Exchange-Transport-CrossTenantHeadersStamped: DS2PR03MB8466
X-purgate-ID: tlsNG-ebf023/1777448040-312463FF-3932AF74/0/0
X-purgate-type: clean
X-purgate-size: 2632

Tmljb2xhIFZldHJpbmkgPG5pY29sYS52ZXRyaW5pQGJ1Z3NlbmcuY29tPiB3cm90ZToNCg0KPiBS
ZXZpZXdlZC1ieTogTmljb2xhIFZldHJpbmkgPG5pY29sYS52ZXRyaW5pQGJ1Z3NlbmcuY29tPg0K
DQpUaGFua3MhDQoNCj4gDQo+IFNlZSBuaXQgYmVsb3cNClsuLi5dDQo+IA0KPiBUaGVyZSBhcmUg
ZnVydGhlciBpbnN0YW5jZSBiZWxvdyB3aGljaCBzaG91bGQgc2ltaWxhcmx5IGJlIHJlbmRlcmVk
IHdpdGgNCj4gYSBtb25vc3BhY2VkIGZvbnQsIGFzIHRoZXkgYXJlIGNvZGUNCj4gDQo+IGUuZy4N
Cj4gDQo+IFRoZSBjb252ZXJzaW9uIGZyb20g4oCYdm9pZCBub3JldHVybiAoKiko4oCmKeKAmSB0
byDigJh2b2lkICgqKSjigKYp4oCZIGlzIHNhZmUNCj4gYmVjYXVzZSB0aGUgc2VtYW50aWNzIG9m
IHRoZSDigJhub3JldHVybuKAmSBhdHRyaWJ1dGUNCg0KQ29ycmVjdCwgdGhvc2Ugd291bGQgYmUg
ZnVydGhlciBUT0RPcywgYnV0IHRoZXkgZG9uJ3QgY2F1c2Ugd2FybmluZ3MuDQoNCj4gUGVyaGFw
cyB0aG9zZSBkb24ndCBjYXVzZSB3YXJuaW5ncywgYnV0IGlmIHdlIHdhbnQgdG8gdmlzdWFsaXpl
IHRoaXMgYXMNCj4gY29kZSBpbiBhIG1vbm9zcGFjZWQgZm9udCwgdGhlbiBpdCBwcm9iYWJseSBz
aG91bGQgYmUgdW5pZm9ybWx5IHVzZWQgaW4NCj4gdGhlIGRvY3VtZW50LiBXZSBoYXZlbid0IGJl
ZW4gMTAwJSBjb25zaXN0ZW50IHdoZW4gd3JpdGluZyB0aGVzZQ0KPiBkb2N1bWVudHMgb3JpZ2lu
YWxseTsgcGFydGx5IGR1ZSB0byB0aGUgZmFjdCB0aGF0IGRpZmZlcmVudCBwZW9wbGUgd2VyZQ0K
PiBpbnZvbHZlZCwgYnV0IHRoaXMgY291bGQgYmUgYW4gb2NjYXNpb24gdG8gcmVtZWR5IHRoYXQu
DQo+IA0KPiBCdXQgcGVyaGFwcyB0aGF0IGlzIGJlc3QgZG9uZSBpbiBhIGZvbGxvdy11cCBwYXRj
aCwgc28gZmVlbCBmcmVlIHRvIHRha2UNCj4gbXkgci1ieSBmb3IgdGhpcyBwYXRjaC4NCg0KWWVz
LCB0aGV5IHNob3VsZCBiZSBmb2xsb3ctdXBzLiBJIHNhdyB0aGlzIGFuZCBvdGhlciBmdXJ0aGVy
IFRPRE9zIGJ1dCB0aGluaw0KdGhlc2UgYXJlIGJlc3QgY28tb3JkaW5hdGVkIHdpdGggeW91Lg0K
DQpUaGVyZSB3b3VsZCBiZSBhIGxvdCB0aGF0IGNvdWxkIGJlIGRvbmUgaW4gdGhhdCB3YXkgYnkg
b3RoZXJzICh0aGF0IGRvZXMgbm90DQpoYXZlIHRvIGJlIG1lKSBhbmQgdGhleSBhcmUgcXVpdGUg
c2ltcGxlLg0KDQpPdGhlciByZWFzb25zIHdoeSB0aG9zZSBzaG91bGQgYmUgZm9sbG93LXVwcyBh
cmUgdGhhdCB0aGVyZSBpcyBhIGxvdCBvZiBncmV5IHpvbmVzDQphZnRlciB0aGF0LCBlLmcuIGEg
c2VudGVuY2UgdGhhdCBtZW50aW9ucyAndW5zaWduZWQgbG9uZycgbWF5IGJlIGZvcm1hdHRlZCBh
cw0KYGB1bnNpZ25lZCBsb25nYGAgZm9yIGNvbnNpc3RlbmN5IHdpdGggYGB2b2lkIG5vcmV0dXJu
ICgqKSjigKYpYGAgKGFuZCBzbyBvbikuDQoNCkJlcm5oYXJkDQoNClBTOiBBbGwgY29tYmluZWQs
IHRoYXQgY291bGQgbWFrZSBmb3IgYSB2ZXJ5IG5pY2UsIGltcHJvdmVkIGRvY3VtZW50LCBidXQg
dGhhdA0Kc2hvdWxkIGlkZWFsbHkgYmUgZG9uZSBieSBzb21lb25lIHdobyBjYXJlcyBmb3IgdGhl
IE1pc3JhIERvY3VtZW50cywgb3IgYXQgbGVhc3QNCmluIGNsb3NlIGNvb3BlcmF0aW9uLCBJIHRo
aW5rLCB0aGUgZWZmb3J0L3RpbWUgc3BlbnQgaXMgbWVyZ2VkIGluIHRoZSBlbmQuDQoNCkkganVz
dCBzdWJtaXR0ZWQgc21hbGwgc2V0IG9mIGltcHJvdmVtZW50cyBmb3IgY29kZSBibG9ja3MgYW5k
IGZvcm1hdHRpbmcgbGl0ZXJhbHMNCmZvciBkZW1vbnN0cmF0aW5nIHdoYXQgY2FuIGJlIGltcHJv
dmVkIGluIHRoaXMgZGlyZWN0aW9uOg0KDQpodHRwczovL3BhdGNod29yay5rZXJuZWwub3JnL3By
b2plY3QveGVuLWRldmVsL2xpc3QvP3Nlcmllcz0xMDg3Mjg4DQoNCg0K


From xen-devel-bounces@lists.xenproject.org Wed Apr 29 08:07:01 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 29 Apr 2026 08:07:01 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1297079.1573217 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wHzwb-0008Jc-My; Wed, 29 Apr 2026 08:06:53 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1297079.1573217; Wed, 29 Apr 2026 08:06: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 1wHzwb-0008JV-K7; Wed, 29 Apr 2026 08:06:53 +0000
Received: by outflank-mailman (input) for mailman id 1297079;
 Wed, 29 Apr 2026 08:06:52 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <Luca.Fancellu@arm.com>) id 1wHzwZ-0008JP-W3
 for xen-devel@lists.xenproject.org; Wed, 29 Apr 2026 08:06:52 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wHzwZ-00ArsV-7c
 for xen-devel@lists.xenproject.org; Wed, 29 Apr 2026 10:06:51 +0200
Received: from [10.42.69.7] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <Luca.Fancellu@arm.com>)
 id 69f1bc1a-e002-0a2a0a5209dd-0a2a45079bf6-4
 for <xen-devel@lists.xenproject.org>; Wed, 29 Apr 2026 10:06:50 +0200
Received: from [52.101.66.48]
 (helo=DUZPR83CU001.outbound.protection.outlook.com)
 by tlsNG-ef75cf.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.1)
 (envelope-from <Luca.Fancellu@arm.com>)
 id 69f1bc1a-229c-0a2a45070019-3465423004d2-3
 for <xen-devel@lists.xenproject.org>; Wed, 29 Apr 2026 10:06:50 +0200
Received: from DUZPR01CA0166.eurprd01.prod.exchangelabs.com
 (2603:10a6:10:4b3::9) by AM8PR08MB6514.eurprd08.prod.outlook.com
 (2603:10a6:20b:36b::19) with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9870.20; Wed, 29 Apr
 2026 08:06:47 +0000
Received: from DB1PEPF000509FE.eurprd03.prod.outlook.com
 (2603:10a6:10:4b3:cafe::88) by DUZPR01CA0166.outlook.office365.com
 (2603:10a6:10:4b3::9) with Microsoft SMTP Server (version=TLS1_3,
 cipher=TLS_AES_256_GCM_SHA384) id 15.20.9846.30 via Frontend Transport; Wed,
 29 Apr 2026 08:06:47 +0000
Received: from outbound-uk1.az.dlp.m.darktrace.com (4.158.2.129) by
 DB1PEPF000509FE.mail.protection.outlook.com (10.167.242.40) with Microsoft
 SMTP Server (version=TLS1_3, cipher=TLS_AES_256_GCM_SHA384) id 15.20.9791.48
 via Frontend Transport; Wed, 29 Apr 2026 08:06:47 +0000
Received: from DU2PR08MB7272.eurprd08.prod.outlook.com (2603:10a6:10:2d7::16)
 by GV2PR08MB9877.eurprd08.prod.outlook.com (2603:10a6:150:dd::7) with
 Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9870.18; Wed, 29 Apr
 2026 08:05:35 +0000
Received: from DU2PR08MB7272.eurprd08.prod.outlook.com
 ([fe80::5d34:206f:373:a323]) by DU2PR08MB7272.eurprd08.prod.outlook.com
 ([fe80::5d34:206f:373:a323%6]) with mapi id 15.20.9846.025; Wed, 29 Apr 2026
 08:05: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=arm.com header.i="@arm.com" header.h="From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck"; dkim=pass header.s=selector1 header.d=arm.com header.i="@arm.com" header.h="From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck"
ARC-Seal: i=2; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=pass;
 b=LxBaWzzLsJ5grleqCDinsOiBxEBa6QXR6HZAUTbwdFJ2liFeGXQ+XpRm73gJmGIW1NPNOgB2yHFTKT/HIRxpmy5bwNM2R8f3SblbkmTJhcC3sI3djHgr8lKUeBpR9k7eqW9D5vNh8ngf2KV1jvdN+bYXpzv9aLPyrYofI9bpiJFjlOGQpAC7spXfNAuYuCamCndw1teuzWk9x03R5TS1tBytrCwk5iqkSjQ1QaTvSFPV+ks57uLqrCSlzDU+K2mr2aJv623lWwXp3WNFwQseY9y3w8VRt5qfFKpFWwkzBfrxpzWjloS7JUakudG5ygRoSu9xbCHgUVUHsZ+Mvz8cAQ==
ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com;
 s=arcselector10001;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1;
 bh=Pr8Pm8/NKa+24lezy+EKDImorLwg1JXEhQkUdafYVug=;
 b=QSxYhG8+zt3YisB7Q7DFycVQRgfaI2S2Hjszah7J7S+1+7kmmCoMWqcD0PnlHCkJU/u90qBq3kNK7SX+UxFeJPjsIzGS55mWlbg8y44YtqWL5xY4ky0cjnWFQYl7anH34k2VfS3M2aZSoiqQDAFdU8EwrBEpanYAIJ3FWLca02hhUQioQrYc3X6vGDgTd3uxiMM2dft1lEi5TT+1+vZ041+DLusWqGo1rwR/d0TxAI9VLem9gsb5jRDr8cISWtPqVfiXaWE8matFfCuXkuZWYGmbyUfmUCslEa/Q90rrAaix0aQafYT//C7GmyhBk5DcZIo/mb8iQV2O3TwAsLOqbA==
ARC-Authentication-Results: i=2; mx.microsoft.com 1; spf=pass (sender ip is
 4.158.2.129) smtp.rcpttodomain=gmail.com smtp.mailfrom=arm.com; dmarc=pass
 (p=none sp=none pct=100) action=none header.from=arm.com; dkim=pass
 (signature was verified) header.d=arm.com; arc=pass (0 oda=1 ltdi=1
 spf=[1,1,smtp.mailfrom=arm.com] dkim=[1,1,header.d=arm.com]
 dmarc=[1,1,header.from=arm.com])
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=arm.com; s=selector1;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck;
 bh=Pr8Pm8/NKa+24lezy+EKDImorLwg1JXEhQkUdafYVug=;
 b=QbO0P5SrhcSqKZ2WcKCLHv3r1THQRcxwNAPGMum9f3ilc8cedW3eBLHM8/lbAPfAl3anv2eIsm51CxOFmPcosK/ERS3CXV1Zs+cGg8Ea3jplStRh1jGujDvBoEKWTlVvRflzK872/qMyZfGauikO1ODl5CNY/Su2g+w4wn4X9jg=
X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 4.158.2.129)
 smtp.mailfrom=arm.com; dkim=pass (signature was verified)
 header.d=arm.com;dmarc=pass action=none header.from=arm.com;
Received-SPF: Pass (protection.outlook.com: domain of arm.com designates
 4.158.2.129 as permitted sender) receiver=protection.outlook.com;
 client-ip=4.158.2.129; helo=outbound-uk1.az.dlp.m.darktrace.com; pr=C
ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none;
 b=aa6qgi0p86R74p/+Kc6an/NB46yEiZ2gR9OSOTFcIaw8l4uOJUPT7chB9nELfmORrckEgRbpQYlIvD7XP/90VhQFALdBTTPfuOqUmFaLfPTnHgtMDFDI1qUDje7jSXs3X1WKiI+CshIXss8FdV+8Tmq9/KXTkgae5JL6dhXAOEfAXU12/4VmbZ2qcEvj2KOINLYbrJYnthiR9Rw7UiKM1Jwrg/mk9lCzBBQQI7uqt0evoych+YZwUJGzFqzu1uP9UOFLHv0aYFv+fe3/Mo/BORzXIP5+vl2PN29dtrMBGRHv0hVqRIwQEXIJpB41wvdKaXdjjCCQNJA8UuBCh4ErXQ==
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com;
 s=arcselector10001;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1;
 bh=Pr8Pm8/NKa+24lezy+EKDImorLwg1JXEhQkUdafYVug=;
 b=fJRddfdfWXEy3OU+CKmkDGTVWhQlmiVQGaBmpGNk1y21dtG0K/VeUFo3sfnvCHxlbzkndcX4bQ0HJBNSYDMWqWxYWWhr6xU9NCqLeuoKYAuTGPNfebZpkcg5ZPPxFbQn33iMPUQ+aMMq/tnacm2oBP3vI2fcr+iteW0qRJUueZSY0doHKWtgt9A1mGplgYx4YjllZcjvAN8zKI/H7WJIDdI7Qsw3gvcSejtnlh3dhmLScRFaCeTqs5mXRCZH/i/lkq/TNe3Dfrdkmv3MTn1y9DK3x3x53UkgaM2NDVQ7ybc9IQ8rrGLZUTU65se32iJD8viRsy7cPwl3qkmroW0C6g==
ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass
 smtp.mailfrom=arm.com; dmarc=pass action=none header.from=arm.com; dkim=pass
 header.d=arm.com; arc=none
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=arm.com; s=selector1;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck;
 bh=Pr8Pm8/NKa+24lezy+EKDImorLwg1JXEhQkUdafYVug=;
 b=QbO0P5SrhcSqKZ2WcKCLHv3r1THQRcxwNAPGMum9f3ilc8cedW3eBLHM8/lbAPfAl3anv2eIsm51CxOFmPcosK/ERS3CXV1Zs+cGg8Ea3jplStRh1jGujDvBoEKWTlVvRflzK872/qMyZfGauikO1ODl5CNY/Su2g+w4wn4X9jg=
From: Luca Fancellu <Luca.Fancellu@arm.com>
To: Mykola Kvach <xakep.amatop@gmail.com>
CC: "xen-devel@lists.xenproject.org" <xen-devel@lists.xenproject.org>, 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>, Jan Beulich <jbeulich@suse.com>,
	=?utf-8?B?Um9nZXIgUGF1IE1vbm7DqQ==?= <roger.pau@citrix.com>, Rahul Singh
	<Rahul.Singh@arm.com>
Subject: Re: [PATCH v8 13/13] xen/arm: Add support for system suspend
 triggered by hardware domain
Thread-Topic: [PATCH v8 13/13] xen/arm: Add support for system suspend
 triggered by hardware domain
Thread-Index: AQHc167zncnUxfR+NEuj/SeXUCIftA==
Date: Wed, 29 Apr 2026 08:05:34 +0000
Message-ID: <4977CF18-39CC-4CC0-936A-890BAE5E8615@arm.com>
References: <cover.1775125380.git.mykola_kvach@epam.com>
 <9b0f8922cd33df2b8e8038d639c1b8d8d73ce401.1775125380.git.mykola_kvach@epam.com>
In-Reply-To:
 <9b0f8922cd33df2b8e8038d639c1b8d8d73ce401.1775125380.git.mykola_kvach@epam.com>
Accept-Language: en-GB, en-US
Content-Language: en-US
X-MS-Has-Attach:
X-MS-TNEF-Correlator:
x-mailer: Apple Mail (2.3826.700.81.1.6)
Authentication-Results-Original: dkim=none (message not signed)
 header.d=none;dmarc=none action=none header.from=arm.com;
x-ms-traffictypediagnostic:
	DU2PR08MB7272:EE_|GV2PR08MB9877:EE_|DB1PEPF000509FE:EE_|AM8PR08MB6514:EE_
X-MS-Office365-Filtering-Correlation-Id: cdd0818a-ec3a-4926-ed57-08dea5c6429e
x-checkrecipientrouted: true
nodisclaimer: true
X-MS-Exchange-SenderADCheck: 1
X-MS-Exchange-AntiSpam-Relay: 0
X-Microsoft-Antispam-Untrusted:
 BCL:0;ARA:13230040|366016|376014|7416014|1800799024|38070700021|22082099003|56012099003|18002099003;
X-Microsoft-Antispam-Message-Info-Original:
 JIITL+e89cxZacdUQZ5XpmY8ZS4po5TvqpvT5xe+c+y31UAWadl6qf4leloGgpcKZM9FHMXhIaSZxkXr1akZjCyOPOGgLbL9t79FMgNaFJvfsOeSVx2+Kd7vWhthGUr6PsY1Niv3oXfOrz2QjVZTSLhtjNTEPQkzWZEzwY28xYAJlb0xZtf4dflKcTrNRkawn31PE2LK9quJhSFG7bU45kDWxlYBbYlAY/ovMhbO69wr2J58XLz71JKVaFZ+Cjy1rwrXggvUcDVfN6ygmQnG6rbnPZYWj8QfVORQ4/OXLmrqtNENCiIckdeucK+UwFsYj0aPGy/qIfml/uLa44WtwPeOnIpOtTvqTyRIM4Zq0tQmdFT357ct8MenFKTxV1Ag5tPgfzCsNh+hFvVrh7J/7fsH+7lWFyVWsJGlRh56zf5tGJsHYbZ6P/JPjcaYGSHs+8uJJ5flFg9+H2CdXSJk3xg4oKILGKYR/Q7sXE4tucncH0Mq0ejewhwH1wQWT6iLXmgMX8N6s3tEAbu2eJA6eTq2BlwPw1ETTXmSH0r+dDj4kKB3NKYjbB2W2VPtHBrtPpVkBZHlvWOINKzwLu5awXdlHDwSFKTmKyKx9VcFCdBUUd/SPUv8G8Iw+ni7Rt9GujPDl4EUIO2Z/aSeuDuhnmYdIuNvBI+OCK9qAm5uwzkEJffZSscjF4rmr4IxfOV+XCFjyiPdiOfXjEH3BdFSY/VbbQuwL3yVSUrf2T+u1zPg3f7GdoYxZLpJt2ULekrQP5aGUGa76UF9C5cI2BlmbNKSErUKGWWKfoXfmQBOXOw=
X-Forefront-Antispam-Report-Untrusted:
 CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:DU2PR08MB7272.eurprd08.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(366016)(376014)(7416014)(1800799024)(38070700021)(22082099003)(56012099003)(18002099003);DIR:OUT;SFP:1101;
Content-Type: text/plain; charset="utf-8"
Content-ID: <60B80AA0D2AED34D96DC8F8173629E9C@eurprd08.prod.outlook.com>
Content-Transfer-Encoding: base64
MIME-Version: 1.0
X-Exchange-RoutingPolicyChecked:
 G7kpOkeGSYf6/NJ/2JNpFx7sUnsZ12XvfVc3Fb6s6C4dp+Ll8iZiRdfF4vAKr7dVQxASyWcwB4ylT6RI+0l1KQqF72Nf56fmaTIBoGYKyqR/24AmIyDghtrXw5/7vtv1l0LiRUFuJNfQgZOhcvSPsyRh8AbFyRIB5339FZnJVry42P4X1luH+ukDV9T6IJCBAQqxnlw6XJ5cP0F/jaA9ILZBAN8sezV70PwjyGYybZQ6dchQ4f/GroKYV7AiBDR0eRDi/K25dP8tb8/M/ooW3GEGNc/5p2wn6j3yAi1dH1i17A5z2w452LGeLbhyOFw2utrAAPTh4z3xmlBYcw6f1Q==
X-MS-Exchange-Transport-CrossTenantHeadersStamped: GV2PR08MB9877
X-EOPAttributedMessage: 0
X-MS-Exchange-Transport-CrossTenantHeadersStripped:
 DB1PEPF000509FE.eurprd03.prod.outlook.com
X-MS-PublicTrafficType: Email
X-MS-Office365-Filtering-Correlation-Id-Prvs:
	d4f275e1-6f6e-4cf5-4098-08dea5c61766
X-Microsoft-Antispam:
	BCL:0;ARA:13230040|35042699022|36860700016|82310400026|1800799024|7416014|376014|14060799003|56012099003|18002099003|22082099003;
X-Microsoft-Antispam-Message-Info:
	7Lp/v6SYZgULEPleOxQvixQmOTcJ0PrMzup1Bovdi0IEOsFQqxkoI67WOVMVdZYlD/XUV2P9oNHSmZRE91y7jHB/lbX4bO5rfYmvfec2U5nLwTkR3DH+0sIH9cNA6mq+tIotOepBdquBXmvD2zB79ApPv1NQk+imB/K9fSqqtVi/laPWTy8e74weEXqhnAev2O27Kc9SXs/DMxCkOVBHxssq4wTnM6lqtEDY0f8UQHfk7SgaBxssjXFnJa/WDOeoy1GQNSicZmbEH38eAnwYM4Z5eV4qie5z/bjZv5ZspYS6zJM1ChzKW4kXRAmieBUSTLtwpmDfvOqaohUGo6UAs4o7bhsJastP9s7b1BIP0kDTmNaZUop3vfnpRM0KQqJsXCB7b/QM6mwrEBkuUOg1illFT+d2hBOHZEdTwI4nm6vMOHy5CnhekCvuJqpkRJz6ztvzjDR4BYMEE6K8ixrqiiGgUc2T3wBB8mtAkzN3SsIsmslkf13aEuXlOqaBR+rsiLg3N9mqdK9b73tmaMc52MWw86tA+uaRQb2vDGA7i4h3Xo6QYa2/EajFFeRUMs+6GXYsCXRRbHmq/fS0qxqBTySdVcU8eRJ3zd2AMMpWTTu7uiiiB5AOcku6szbmA9RfX3fCpQegpJ+hqkfh48fzvlmzqqsJOHr5kJL9J/AcgVBMqtm7W05AxfX0D0gx/cLNSIVRErLWVtByHSRZPx+I2gOogWw7CTeoZS0Mu4BG9p8Dnm/j74jFAlkAWQoA0KmcPgcMGBw+JDI999uo3WUnvA==
X-Forefront-Antispam-Report:
	CIP:4.158.2.129;CTRY:GB;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:outbound-uk1.az.dlp.m.darktrace.com;PTR:InfoDomainNonexistent;CAT:NONE;SFS:(13230040)(35042699022)(36860700016)(82310400026)(1800799024)(7416014)(376014)(14060799003)(56012099003)(18002099003)(22082099003);DIR:OUT;SFP:1101;
X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1
X-MS-Exchange-AntiSpam-MessageData-0:
	Z1SpbKIwYFjKeFgexz9CS12J0nEcMbs9AlHgESXfkV56K2IXb3LxX0W+f18CXW4TcjR7FrRxpYhcytJ1bSL+xMssT2rckHJlW8N6YzjymaHHw0/HU4cfcBIVK7PzYiFFsRWClsjkMJcCd0qwtB0B0gp/4if9L3yPNQYt8k0TLZGfUkpz5Jo5DsHUINJDE130Ra+o3M5ZknPdMDHeBV0fki7ID9ZN/UfNjNKQcPkyABmY2Qp6ys9Ayxgz97cS+TgNheFbT3o6DeFZQcNWApYnenbakE/Zh+i83mw2r9Ap5LNhGlvzd+qAky8UvDEn5jc4Cy7smIZN6MV0mpqXVaQ5yLKItN9dcnWthm52lIATWucjlpOJOtGDhcIrX4rloz6cqK75aqyVrhp8ZXTd7F2L1ayY1J6sk5t2yKmmtvSRPdSxINc6/WXoTzM2Yu+Phi1W
X-OriginatorOrg: arm.com
X-MS-Exchange-CrossTenant-OriginalArrivalTime: 29 Apr 2026 08:06:47.1885
 (UTC)
X-MS-Exchange-CrossTenant-Network-Message-Id: cdd0818a-ec3a-4926-ed57-08dea5c6429e
X-MS-Exchange-CrossTenant-Id: f34e5979-57d9-4aaa-ad4d-b122a662184d
X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=f34e5979-57d9-4aaa-ad4d-b122a662184d;Ip=[4.158.2.129];Helo=[outbound-uk1.az.dlp.m.darktrace.com]
X-MS-Exchange-CrossTenant-AuthSource:
	DB1PEPF000509FE.eurprd03.prod.outlook.com
X-MS-Exchange-CrossTenant-AuthAs: Anonymous
X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem
X-MS-Exchange-Transport-CrossTenantHeadersStamped: AM8PR08MB6514
X-purgate-ID: tlsNG-ef75cf/1777450010-AFB78C48-469EB9CF/0/0
X-purgate-type: clean
X-purgate-size: 13734

SGkgTXlrb2xhLA0KDQo+IGRpZmYgLS1naXQgYS94ZW4vYXJjaC9hcm0vc3VzcGVuZC5jIGIveGVu
L2FyY2gvYXJtL3N1c3BlbmQuYw0KPiBpbmRleCBlMzg1NjZiMGI3Li40ZDEyODk3NzZiIDEwMDY0
NA0KPiAtLS0gYS94ZW4vYXJjaC9hcm0vc3VzcGVuZC5jDQo+ICsrKyBiL3hlbi9hcmNoL2FybS9z
dXNwZW5kLmMNCj4gQEAgLTEsOSArMSwxOTAgQEANCj4gLyogU1BEWC1MaWNlbnNlLUlkZW50aWZp
ZXI6IEdQTC0yLjAtb25seSAqLw0KPiANCj4gKyNpbmNsdWRlIDxhc20vcHNjaS5oPg0KPiAjaW5j
bHVkZSA8YXNtL3N1c3BlbmQuaD4NCj4gDQo+ICsjaW5jbHVkZSA8cHVibGljL3NjaGVkLmg+DQo+
ICsjaW5jbHVkZSA8eGVuL2NvbnNvbGUuaD4NCj4gKyNpbmNsdWRlIDx4ZW4vY3B1Lmg+DQo+ICsj
aW5jbHVkZSA8eGVuL2Vycm5vLmg+DQo+ICsjaW5jbHVkZSA8eGVuL2lvbW11Lmg+DQo+ICsjaW5j
bHVkZSA8eGVuL3NjaGVkLmg+DQo+ICsjaW5jbHVkZSA8eGVuL3Rhc2tsZXQuaD4NCj4gKw0KPiBz
dHJ1Y3QgY3B1X2NvbnRleHQgY3B1X2NvbnRleHQgPSB7fTsNCj4gDQo+ICtzdGF0aWMgaW50IGNh
bl9zeXN0ZW1fc3VzcGVuZCh2b2lkKQ0KPiArew0KPiArICAgIGludCByZXQgPSAwOw0KPiArICAg
IHN0cnVjdCBkb21haW4gKmQ7DQo+ICsNCj4gKyAgICByY3VfcmVhZF9sb2NrKCZkb21saXN0X3Jl
YWRfbG9jayk7DQo+ICsNCj4gKyAgICBmb3JfZWFjaF9kb21haW4gKCBkICkNCj4gKyAgICB7DQo+
ICsgICAgICAgIGJvb2wgZG9tYWluX3N1c3BlbmRlZDsNCj4gKw0KPiArICAgICAgICBzcGluX2xv
Y2soJmQtPnNodXRkb3duX2xvY2spOw0KPiArICAgICAgICBkb21haW5fc3VzcGVuZGVkID0gZC0+
aXNfc2h1dF9kb3duICYmDQo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICBkLT5zaHV0ZG93
bl9jb2RlID09IFNIVVRET1dOX3N1c3BlbmQ7DQo+ICsgICAgICAgIHNwaW5fdW5sb2NrKCZkLT5z
aHV0ZG93bl9sb2NrKTsNCj4gKw0KPiArICAgICAgICBpZiAoIGRvbWFpbl9zdXNwZW5kZWQgKQ0K
PiArICAgICAgICAgICAgY29udGludWU7DQo+ICsNCj4gKyAgICAgICAgcHJpbnRrKFhFTkxPR19F
UlINCj4gKyAgICAgICAgICAgICAgICJTeXN0ZW0gc3VzcGVuZCByZXF1aXJlcyBhbGwgZG9tYWlu
cyB0byBiZSBzaHV0IGRvd24gZm9yIHN1c3BlbmQgKGRvbSVkOiBpc24ndCBpbiBzdXNwZW5kIHN0
YXRlKVxuIiwNCg0KZC0+ZG9tYWluX2lkIGlzIHVuc2lnbmVkIGlmIEnigJltIG5vdCBtaXN0YWtl
biwgaXQgd2FudHMgJXUgKHR5cGVkZWYgdWludDE2X3QgZG9taWRfdDspDQoNCj4gKyAgICAgICAg
ICAgICAgIGQtPmRvbWFpbl9pZCk7DQo+ICsNCj4gKyAgICAgICAgcmV0ID0gLUVCVVNZOw0KPiAr
ICAgICAgICBicmVhazsNCj4gKyAgICB9DQo+ICsNCj4gKyAgICByY3VfcmVhZF91bmxvY2soJmRv
bWxpc3RfcmVhZF9sb2NrKTsNCj4gKw0KPiArICAgIHJldHVybiByZXQ7DQo+ICt9DQo+ICsNCj4g
Ky8qIFhlbiBzdXNwZW5kLiBkYXRhIGlkZW50aWZpZXMgdGhlIGRvbWFpbiB0aGF0IGluaXRpYXRl
ZCBzdXNwZW5kLiAqLw0KPiArc3RhdGljIHZvaWQgc3lzdGVtX3N1c3BlbmQodm9pZCAqZGF0YSkN
Cj4gK3sNCj4gKyAgICBpbnQgc3RhdHVzOw0KPiArICAgIHVuc2lnbmVkIGxvbmcgZmxhZ3M7DQo+
ICsgICAgc3RydWN0IGRvbWFpbiAqZCA9IChzdHJ1Y3QgZG9tYWluICopZGF0YTsNCj4gKw0KPiAr
ICAgIEJVR19PTihzeXN0ZW1fc3RhdGUgIT0gU1lTX1NUQVRFX2FjdGl2ZSk7DQo+ICsNCj4gKyAg
ICBzeXN0ZW1fc3RhdGUgPSBTWVNfU1RBVEVfc3VzcGVuZDsNCj4gKw0KPiArICAgIHByaW50aygi
WGVuIHN1c3BlbmRpbmcuLi5cbiIpOw0KPiArDQo+ICsgICAgZnJlZXplX2RvbWFpbnMoKTsNCj4g
KyAgICBzY2hlZHVsZXJfZGlzYWJsZSgpOw0KPiArDQo+ICsgICAgc3RhdHVzID0gY2FuX3N5c3Rl
bV9zdXNwZW5kKCk7DQo+ICsgICAgaWYgKCBzdGF0dXMgKQ0KPiArICAgIHsNCj4gKyAgICAgICAg
c3lzdGVtX3N0YXRlID0gU1lTX1NUQVRFX3Jlc3VtZTsNCj4gKyAgICAgICAgZ290byByZXN1bWVf
c2NoZWR1bGVyOw0KDQpXaGVuIHdlIGhhdmUgYW4gZXJyb3IgYW5kIHdlIGdldCB0aGUgcmVzdW1l
X3NjaGVkdWxlciBwYXRoLCB3ZSBhcHBseSBiYWNrIHRoZQ0KY29udGV4dCBvZiB0aGUgZ3Vlc3Qg
c2F2ZWQgcHJldmlvdXNseSBpbiBkb19wc2NpXzFfMF9zeXN0ZW1fc3VzcGVuZCgpLCBzbyBhbSBJ
DQpjb3JyZWN0IHNheWluZyB0aGUgZ3Vlc3Qgd29u4oCZdCBnZXQgYW55IFBTQ0kgZXJyb3IgYmFj
ayBhbmQgd2UgcmVzdW1lIHRoZSBndWVzdA0KZnJvbSB0aGUgZ3Vlc3QgcmVzdW1lIGVudHJ5cG9p
bnQ/DQoNCkluIGNhc2UsIHNob3VsZCB3ZSBoYXZlIGEgZGlmZmVyZW50IHBhdGggdGhhdCByZXR1
cm5zIGEgUFNDSSBlcnJvciAoUFNDSV8qKSBpbnRvIHRoZSBndWVzdA0KeDAsIGFuZCBza2lwcyB0
aGUgY29udGV4dCByZXN0b3JlPw0KDQo+ICsgICAgfQ0KPiArDQo+ICsgICAgLyoNCj4gKyAgICAg
KiBOb24tYm9vdCBDUFVzIGhhdmUgdG8gYmUgZGlzYWJsZWQgb24gc3VzcGVuZCBhbmQgZW5hYmxl
ZCBvbiByZXN1bWUNCj4gKyAgICAgKiAoaG90cGx1Zy1iYXNlZCBtZWNoYW5pc20pLiBEaXNhYmxp
bmcgbm9uLWJvb3QgQ1BVcyB3aWxsIGxlYWQgdG8gUFNDSQ0KPiArICAgICAqIENQVV9PRkYgdG8g
YmUgY2FsbGVkIGJ5IGVhY2ggbm9uLWJvb3QgQ1BVLiBEZXBlbmRpbmcgb24gdGhlIHVuZGVybHlp
bmcNCj4gKyAgICAgKiBwbGF0Zm9ybSBjYXBhYmlsaXRpZXMsIHRoaXMgbWF5IGxlYWQgdG8gdGhl
IHBoeXNpY2FsIHBvd2VyaW5nIGRvd24gb2YNCj4gKyAgICAgKiBDUFVzLg0KPiArICAgICAqLw0K
PiArICAgIHN0YXR1cyA9IGRpc2FibGVfbm9uYm9vdF9jcHVzKCk7DQo+ICsgICAgaWYgKCBzdGF0
dXMgKQ0KPiArICAgIHsNCj4gKyAgICAgICAgc3lzdGVtX3N0YXRlID0gU1lTX1NUQVRFX3Jlc3Vt
ZTsNCj4gKyAgICAgICAgZ290byByZXN1bWVfbm9uYm9vdF9jcHVzOw0KPiArICAgIH0NCj4gKw0K
PiArICAgIHRpbWVfc3VzcGVuZCgpOw0KPiArDQo+ICsgICAgc3RhdHVzID0gaW9tbXVfc3VzcGVu
ZCgpOw0KPiArICAgIGlmICggc3RhdHVzICkNCj4gKyAgICB7DQo+ICsgICAgICAgIHN5c3RlbV9z
dGF0ZSA9IFNZU19TVEFURV9yZXN1bWU7DQo+ICsgICAgICAgIGdvdG8gcmVzdW1lX3RpbWU7DQo+
ICsgICAgfQ0KPiArDQo+ICsgICAgY29uc29sZV9zdGFydF9zeW5jKCk7DQo+ICsgICAgc3RhdHVz
ID0gY29uc29sZV9zdXNwZW5kKCk7DQo+ICsgICAgaWYgKCBzdGF0dXMgKQ0KPiArICAgIHsNCj4g
KyAgICAgICAgZHByaW50ayhYRU5MT0dfRVJSLCAiRmFpbGVkIHRvIHN1c3BlbmQgdGhlIGNvbnNv
bGUsIGVycj0lZFxuIiwgc3RhdHVzKTsNCj4gKyAgICAgICAgc3lzdGVtX3N0YXRlID0gU1lTX1NU
QVRFX3Jlc3VtZTsNCj4gKyAgICAgICAgZ290byByZXN1bWVfZW5kX3N5bmM7DQo+ICsgICAgfQ0K
PiArDQo+ICsgICAgbG9jYWxfaXJxX3NhdmUoZmxhZ3MpOw0KPiArICAgIHN0YXR1cyA9IGdpY19z
dXNwZW5kKCk7DQo+ICsgICAgaWYgKCBzdGF0dXMgKQ0KPiArICAgIHsNCj4gKyAgICAgICAgc3lz
dGVtX3N0YXRlID0gU1lTX1NUQVRFX3Jlc3VtZTsNCj4gKyAgICAgICAgZ290byByZXN1bWVfaXJx
czsNCj4gKyAgICB9DQo+ICsNCj4gKyAgICBzZXRfaW5pdF90dGJyKHhlbl9wZ3RhYmxlKTsNCj4g
Kw0KPiArICAgIC8qDQo+ICsgICAgICogRW5hYmxlIGlkZW50aXR5IG1hcHBpbmcgYmVmb3JlIGVu
dGVyaW5nIHN1c3BlbmQgdG8gc2ltcGxpZnkNCj4gKyAgICAgKiB0aGUgcmVzdW1lIHBhdGgNCj4g
KyAgICAgKi8NCj4gKyAgICB1cGRhdGVfYm9vdF9tYXBwaW5nKHRydWUpOw0KPiArDQo+ICsgICAg
aWYgKCBwcmVwYXJlX3Jlc3VtZV9jdHgoJmNwdV9jb250ZXh0KSApDQo+ICsgICAgew0KPiArICAg
ICAgICBzdGF0dXMgPSBjYWxsX3BzY2lfc3lzdGVtX3N1c3BlbmQoKTsNCj4gKyAgICAgICAgLyoN
Cj4gKyAgICAgICAgICogSWYgc3VzcGVuZCBpcyBmaW5hbGl6ZWQgcHJvcGVybHkgYnkgYWJvdmUg
c3lzdGVtIHN1c3BlbmQgUFNDSSBjYWxsLA0KPiArICAgICAgICAgKiB0aGUgY29kZSBiZWxvdyBp
biB0aGlzICdpZicgYnJhbmNoIHdpbGwgbmV2ZXIgZXhlY3V0ZS4gRXhlY3V0aW9uDQo+ICsgICAg
ICAgICAqIHdpbGwgY29udGludWUgZnJvbSBoeXBfcmVzdW1lIHdoaWNoIGlzIHRoZSBoeXBlcnZp
c29yJ3MgcmVzdW1lIHBvaW50Lg0KPiArICAgICAgICAgKiBJbiBoeXBfcmVzdW1lIENQVSBjb250
ZXh0IHdpbGwgYmUgcmVzdG9yZWQgYW5kIHNpbmNlIGxpbmstcmVnaXN0ZXIgaXMNCj4gKyAgICAg
ICAgICogcmVzdG9yZWQgYXMgd2VsbCwgaXQgd2lsbCBhcHBlYXIgdG8gcmV0dXJuIGZyb20gcHJl
cGFyZV9yZXN1bWVfY3R4Lg0KPiArICAgICAgICAgKiBUaGUgZGlmZmVyZW5jZSBpbiByZXR1cm5p
bmcgZnJvbSBwcmVwYXJlX3Jlc3VtZV9jdHggb24gc3lzdGVtIHN1c3BlbmQNCj4gKyAgICAgICAg
ICogdmVyc3VzIHJlc3VtZSBpcyBpbiBmdW5jdGlvbidzIHJldHVybiB2YWx1ZTogb24gc3VzcGVu
ZCwgdGhlIHJldHVybg0KPiArICAgICAgICAgKiB2YWx1ZSBpcyBhIG5vbi16ZXJvIHZhbHVlLCBv
biByZXN1bWUgaXQgaXMgemVyby4gVGhhdCBpcyB3aHkgdGhlDQo+ICsgICAgICAgICAqIGNvbnRy
b2wgZmxvdyB3aWxsIG5vdCByZS1lbnRlciB0aGlzICdpZicgYnJhbmNoIG9uIHJlc3VtZS4NCj4g
KyAgICAgICAgICovDQo+ICsgICAgICAgIGlmICggc3RhdHVzICkNCj4gKyAgICAgICAgICAgIGRw
cmludGsoWEVOTE9HX1dBUk5JTkcsICJQU0NJIHN5c3RlbSBzdXNwZW5kIGZhaWxlZCwgZXJyPSVk
XG4iLA0KPiArICAgICAgICAgICAgICAgICAgICBzdGF0dXMpOw0KPiArICAgIH0NCj4gKw0KPiAr
ICAgIHN5c3RlbV9zdGF0ZSA9IFNZU19TVEFURV9yZXN1bWU7DQo+ICsgICAgdXBkYXRlX2Jvb3Rf
bWFwcGluZyhmYWxzZSk7DQo+ICsNCj4gKyAgICBnaWNfcmVzdW1lKCk7DQo+ICsNCj4gKyByZXN1
bWVfaXJxczoNCj4gKyAgICBsb2NhbF9pcnFfcmVzdG9yZShmbGFncyk7DQo+ICsNCj4gKyAgICBj
b25zb2xlX3Jlc3VtZSgpOw0KPiArIHJlc3VtZV9lbmRfc3luYzoNCj4gKyAgICBjb25zb2xlX2Vu
ZF9zeW5jKCk7DQo+ICsNCj4gKyAgICBpb21tdV9yZXN1bWUoKTsNCj4gKw0KPiArIHJlc3VtZV90
aW1lOg0KPiArICAgIHRpbWVfcmVzdW1lKCk7DQo+ICsNCj4gKyByZXN1bWVfbm9uYm9vdF9jcHVz
Og0KPiArICAgIC8qDQo+ICsgICAgICogVGhlIHJjdV9iYXJyaWVyKCkgaGFzIHRvIGJlIGFkZGVk
IHRvIGVuc3VyZSB0aGF0IHRoZSBwZXIgY3B1IGFyZWEgaXMNCj4gKyAgICAgKiBmcmVlZCBiZWZv
cmUgYSBub24tYm9vdCBDUFUgdHJpZXMgdG8gaW5pdGlhbGl6ZSBpdCAoX2ZyZWVfcGVyY3B1X2Fy
ZWEoKQ0KPiArICAgICAqIGhhcyB0byBiZSBjYWxsZWQgYmVmb3JlIHRoZSBpbml0X3BlcmNwdV9h
cmVhKCkpLiBUaGlzIHNjZW5hcmlvIG9jY3Vycw0KPiArICAgICAqIHdoZW4gbm9uLWJvb3QgQ1BV
cyBhcmUgaG90LXVucGx1Z2dlZCBvbiBzdXNwZW5kIGFuZCBob3RwbHVnZ2VkIG9uIHJlc3VtZS4N
Cj4gKyAgICAgKi8NCj4gKyAgICByY3VfYmFycmllcigpOw0KPiArICAgIGVuYWJsZV9ub25ib290
X2NwdXMoKTsNCj4gKw0KPiArIHJlc3VtZV9zY2hlZHVsZXI6DQo+ICsgICAgc2NoZWR1bGVyX2Vu
YWJsZSgpOw0KPiArICAgIHRoYXdfZG9tYWlucygpOw0KPiArDQo+ICsgICAgc3lzdGVtX3N0YXRl
ID0gU1lTX1NUQVRFX2FjdGl2ZTsNCj4gKw0KPiArICAgIHByaW50aygiUmVzdW1lIChzdGF0dXMg
JWQpXG4iLCBzdGF0dXMpOw0KPiArDQo+ICsgICAgZG9tYWluX3Jlc3VtZShkKTsNCj4gK30NCj4g
Kw0KPiArc3RhdGljIERFQ0xBUkVfVEFTS0xFVChzeXN0ZW1fc3VzcGVuZF90YXNrbGV0LCBzeXN0
ZW1fc3VzcGVuZCwgTlVMTCk7DQo+ICsNCj4gK3ZvaWQgaG9zdF9zeXN0ZW1fc3VzcGVuZChzdHJ1
Y3QgZG9tYWluICpkKQ0KPiArew0KPiArICAgIHN5c3RlbV9zdXNwZW5kX3Rhc2tsZXQuZGF0YSA9
ICh2b2lkICopZDsNCj4gKyAgICAvKg0KPiArICAgICAqIFRoZSBzdXNwZW5kIHByb2NlZHVyZSBo
YXMgdG8gYmUgZmluYWxpemVkIGJ5IHRoZSBwQ1BVIzAgKG5vbi1ib290IHBDUFVzDQo+ICsgICAg
ICogd2lsbCBiZSBkaXNhYmxlZCBkdXJpbmcgdGhlIHN1c3BlbmQpLg0KPiArICAgICAqLw0KPiAr
ICAgIHRhc2tsZXRfc2NoZWR1bGVfb25fY3B1KCZzeXN0ZW1fc3VzcGVuZF90YXNrbGV0LCAwKTsN
Cj4gK30NCj4gKw0KPiAvKg0KPiAgKiBMb2NhbCB2YXJpYWJsZXM6DQo+ICAqIG1vZGU6IEMNCj4g
ZGlmZiAtLWdpdCBhL3hlbi9hcmNoL2FybS92cHNjaS5jIGIveGVuL2FyY2gvYXJtL3Zwc2NpLmMN
Cj4gaW5kZXggYmQ4N2VjNDMwZC4uOGZiOTE3MjE4NiAxMDA2NDQNCj4gLS0tIGEveGVuL2FyY2gv
YXJtL3Zwc2NpLmMNCj4gKysrIGIveGVuL2FyY2gvYXJtL3Zwc2NpLmMNCj4gQEAgLTUsNiArNSw3
IEBADQo+IA0KPiAjaW5jbHVkZSA8YXNtL2N1cnJlbnQuaD4NCj4gI2luY2x1ZGUgPGFzbS9kb21h
aW4uaD4NCj4gKyNpbmNsdWRlIDxhc20vc3VzcGVuZC5oPg0KPiAjaW5jbHVkZSA8YXNtL3ZnaWMu
aD4NCj4gI2luY2x1ZGUgPGFzbS92cHNjaS5oPg0KPiAjaW5jbHVkZSA8YXNtL2V2ZW50Lmg+DQo+
IEBAIC0yMzIsOCArMjMzLDcgQEAgc3RhdGljIGludDMyX3QgZG9fcHNjaV8xXzBfc3lzdGVtX3N1
c3BlbmQocmVnaXN0ZXJfdCBlcG9pbnQsIHJlZ2lzdGVyX3QgY2lkKQ0KPiAgICAgaWYgKCBpc182
NGJpdF9kb21haW4oZCkgJiYgaXNfdGh1bWIgKQ0KPiAgICAgICAgIHJldHVybiBQU0NJX0lOVkFM
SURfQUREUkVTUzsNCj4gDQo+IC0gICAgLyogU1lTVEVNX1NVU1BFTkQgaXMgbm90IHN1cHBvcnRl
ZCBmb3IgdGhlIGhhcmR3YXJlIGRvbWFpbiB5ZXQgKi8NCj4gLSAgICBpZiAoIGlzX2hhcmR3YXJl
X2RvbWFpbihkKSApDQo+ICsgICAgaWYgKCAhSVNfRU5BQkxFRChDT05GSUdfU1lTVEVNX1NVU1BF
TkQpICYmIGlzX2hhcmR3YXJlX2RvbWFpbihkKSApDQo+ICAgICAgICAgcmV0dXJuIFBTQ0lfTk9U
X1NVUFBPUlRFRDsNCj4gDQo+ICAgICAvKiBFbnN1cmUgdGhhdCBhbGwgQ1BVcyBvdGhlciB0aGFu
IHRoZSBjYWxsaW5nIG9uZSBhcmUgb2ZmbGluZSAqLw0KPiBAQCAtMjY2LDYgKzI2Niw5IEBAIHN0
YXRpYyBpbnQzMl90IGRvX3BzY2lfMV8wX3N5c3RlbV9zdXNwZW5kKHJlZ2lzdGVyX3QgZXBvaW50
LCByZWdpc3Rlcl90IGNpZCkNCj4gICAgICAgICAgICAgIlNZU1RFTV9TVVNQRU5EIHJlcXVlc3Rl
ZCwgZXBvaW50PSUjIlBSSXJlZ2lzdGVyIiwgY2lkPSUjIlBSSXJlZ2lzdGVyIlxuIiwNCj4gICAg
ICAgICAgICAgZXBvaW50LCBjaWQpOw0KPiANCj4gKyAgICBpZiAoIGlzX2NvbnRyb2xfZG9tYWlu
KGQpICkNCg0KV2h5IGlzX2NvbnRyb2xfZG9tYWluKCkgaGVyZSBhbmQgbm90IGlzX2hhcmR3YXJl
X2RvbWFpbigpID8NCg0KPiArICAgICAgICBob3N0X3N5c3RlbV9zdXNwZW5kKGQpOw0KPiArDQo+
ICAgICByZXR1cm4gcmM7DQo+IH0NCj4gDQo+IEBAIC0yOTAsNyArMjkzLDEwIEBAIHN0YXRpYyBp
bnQzMl90IGRvX3BzY2lfMV8wX2ZlYXR1cmVzKHVpbnQzMl90IHBzY2lfZnVuY19pZCkNCj4gICAg
ICAgICByZXR1cm4gMDsNCj4gICAgIGNhc2UgUFNDSV8xXzBfRk4zMl9TWVNURU1fU1VTUEVORDoN
Cj4gICAgIGNhc2UgUFNDSV8xXzBfRk42NF9TWVNURU1fU1VTUEVORDoNCj4gLSAgICAgICAgcmV0
dXJuIGlzX2hhcmR3YXJlX2RvbWFpbihjdXJyZW50LT5kb21haW4pID8gUFNDSV9OT1RfU1VQUE9S
VEVEIDogMDsNCj4gKyAgICAgICAgaWYgKCBJU19FTkFCTEVEKENPTkZJR19TWVNURU1fU1VTUEVO
RCkgfHwNCj4gKyAgICAgICAgICAgICAhaXNfaGFyZHdhcmVfZG9tYWluKGN1cnJlbnQtPmRvbWFp
bikgKQ0KDQpTaG91bGQgdGhpcyBoYXZlIGFsc28gdGhlIGNvbmRpdGlvbiB0aGF0IOKAnGlzIGhh
cmR3YXJlIGRvbWFpbiBhbmQgcHNjaV92ZXIgPj0gUFNDSV9WRVJTSU9OKDEsIDAp4oCdPw0KT3Ro
ZXJ3aXNlIGlmIHRoZSBob3N0IG1hY2hpbmUgZG9lc3Ru4oCZdCBzdXBwb3J0IFBTQ0kgMS4wIHdl
IHdvdWxkIHJldHVybiBPSyBoZXJlIGJ1dCB0aGUgY2FsbCB3b3VsZA0KZmFpbCBsYXRlciBpbiBj
YWxsX3BzY2lfc3lzdGVtX3N1c3BlbmQoKT8gDQoNCj4gKyAgICAgICAgICAgIHJldHVybiAwOw0K
PiArICAgICAgICBmYWxsdGhyb3VnaDsNCj4gICAgIGRlZmF1bHQ6DQo+ICAgICAgICAgcmV0dXJu
IFBTQ0lfTk9UX1NVUFBPUlRFRDsNCj4gICAgIH0NCj4gZGlmZiAtLWdpdCBhL3hlbi9jb21tb24v
S2NvbmZpZyBiL3hlbi9jb21tb24vS2NvbmZpZw0KPiBpbmRleCAwYTIwYWEwYTEyLi5mZWIxMzM2
ZjQ2IDEwMDY0NA0KPiAtLS0gYS94ZW4vY29tbW9uL0tjb25maWcNCj4gKysrIGIveGVuL2NvbW1v
bi9LY29uZmlnDQo+IEBAIC0xMzcsNiArMTM3LDkgQEAgY29uZmlnIEhBU19FWF9UQUJMRQ0KPiBj
b25maWcgSEFTX0ZBU1RfTVVMVElQTFkNCj4gYm9vbA0KPiANCj4gK2NvbmZpZyBIQVNfSFdET01f
U1lTVEVNX1NVU1BFTkQNCj4gKyBib29sDQo+ICsNCj4gY29uZmlnIEhBU19JT1BPUlRTDQo+IGJv
b2wNCj4gDQo+IGRpZmYgLS1naXQgYS94ZW4vY29tbW9uL2RvbWFpbi5jIGIveGVuL2NvbW1vbi9k
b21haW4uYw0KPiBpbmRleCBiYjllMjEwYzI4Li5kM2VkZmIyYTEzIDEwMDY0NA0KPiAtLS0gYS94
ZW4vY29tbW9uL2RvbWFpbi5jDQo+ICsrKyBiL3hlbi9jb21tb24vZG9tYWluLmMNCj4gQEAgLTEz
NzUsNiArMTM3NSwxMSBAQCB2b2lkIF9fZG9tYWluX2NyYXNoKHN0cnVjdCBkb21haW4gKmQpDQo+
ICAgICBkb21haW5fc2h1dGRvd24oZCwgU0hVVERPV05fY3Jhc2gpOw0KPiB9DQo+IA0KPiArc3Rh
dGljIGlubGluZSBib29sIHdhbnRfaHdkb21fc2h1dGRvd24odWludDhfdCByZWFzb24pDQo+ICt7
DQo+ICsgICAgcmV0dXJuICFJU19FTkFCTEVEKENPTkZJR19IQVNfSFdET01fU1lTVEVNX1NVU1BF
TkQpIHx8DQo+ICsgICAgICAgICAgIHJlYXNvbiAhPSBTSFVURE9XTl9zdXNwZW5kOw0KPiArfQ0K
PiANCj4gaW50IGRvbWFpbl9zaHV0ZG93bihzdHJ1Y3QgZG9tYWluICpkLCB1OCByZWFzb24pDQo+
IHsNCj4gQEAgLTEzOTEsNyArMTM5Niw3IEBAIGludCBkb21haW5fc2h1dGRvd24oc3RydWN0IGRv
bWFpbiAqZCwgdTggcmVhc29uKQ0KPiAgICAgICAgIGQtPnNodXRkb3duX2NvZGUgPSByZWFzb247
DQo+ICAgICByZWFzb24gPSBkLT5zaHV0ZG93bl9jb2RlOw0KPiANCj4gLSAgICBpZiAoIGlzX2hh
cmR3YXJlX2RvbWFpbihkKSApDQo+ICsgICAgaWYgKCBpc19oYXJkd2FyZV9kb21haW4oZCkgJiYg
d2FudF9od2RvbV9zaHV0ZG93bihyZWFzb24pICkNCj4gICAgICAgICBod2RvbV9zaHV0ZG93bihy
ZWFzb24pOw0KPiANCj4gICAgIGlmICggZC0+aXNfc2h1dHRpbmdfZG93biApDQo+IGRpZmYgLS1n
aXQgYS94ZW4vZHJpdmVycy9wYXNzdGhyb3VnaC9hcm0vc21tdS5jIGIveGVuL2RyaXZlcnMvcGFz
c3Rocm91Z2gvYXJtL3NtbXUuYw0KPiBpbmRleCAyMmQzMDZkMGNiLi40NWYyOWVmOGVjIDEwMDY0
NA0KPiAtLS0gYS94ZW4vZHJpdmVycy9wYXNzdGhyb3VnaC9hcm0vc21tdS5jDQo+ICsrKyBiL3hl
bi9kcml2ZXJzL3Bhc3N0aHJvdWdoL2FybS9zbW11LmMNCj4gQEAgLTI5NDcsNiArMjk0NywxMyBA
QCBzdGF0aWMgdm9pZCBhcm1fc21tdV9pb21tdV9kb21haW5fdGVhcmRvd24oc3RydWN0IGRvbWFp
biAqZCkNCj4geGZyZWUoeGVuX2RvbWFpbik7DQo+IH0NCj4gDQo+ICsjaWZkZWYgQ09ORklHX1NZ
U1RFTV9TVVNQRU5EDQo+ICtzdGF0aWMgaW50IGFybV9zbW11X3N1c3BlbmQodm9pZCkNCj4gK3sN
Cj4gKyByZXR1cm4gLUVOT1NZUzsNCj4gK30NCj4gKyNlbmRpZg0KDQpNYXliZSB3ZSB3YW50IHRv
IGdhdGUgdGhlIGZlYXR1cmUgYWxzbyB0byAhQ09ORklHX0FSTV9TTU1VID8gSSB3b3VsZCB3YWl0
IGZvciB0aGUgbWFpbnRhaW5lcnMNCnZpZXcgb24gdGhpcy4NCg0KQ2hlZXJzLA0KTHVjYQ0KDQoN
Cg==


From xen-devel-bounces@lists.xenproject.org Wed Apr 29 08:18:28 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 29 Apr 2026 08:18:28 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1297091.1573226 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wI07Z-0001xa-Mq; Wed, 29 Apr 2026 08:18:13 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1297091.1573226; Wed, 29 Apr 2026 08:18: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 1wI07Z-0001xT-K6; Wed, 29 Apr 2026 08:18:13 +0000
Received: by outflank-mailman (input) for mailman id 1297091;
 Wed, 29 Apr 2026 08:18:12 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <Luca.Fancellu@arm.com>) id 1wI07Y-0001xN-OM
 for xen-devel@lists.xenproject.org; Wed, 29 Apr 2026 08:18:12 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wI07X-00EpWX-MQ
 for xen-devel@lists.xenproject.org; Wed, 29 Apr 2026 10:18:11 +0200
Received: from [10.42.69.5] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <Luca.Fancellu@arm.com>)
 id 69f1beae-bab6-0a2a0a5309dd-0a2a4505e0ce-38
 for <xen-devel@lists.xenproject.org>; Wed, 29 Apr 2026 10:18:11 +0200
Received: from [52.101.72.3]
 (helo=AM0PR02CU008.outbound.protection.outlook.com)
 by tlsNG-c201ff.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.1)
 (envelope-from <Luca.Fancellu@arm.com>)
 id 69f1bec2-aaa8-0a2a45050019-346548039758-3
 for <xen-devel@lists.xenproject.org>; Wed, 29 Apr 2026 10:18:10 +0200
Received: from DU2PR04CA0080.eurprd04.prod.outlook.com (2603:10a6:10:232::25)
 by VI0PR08MB10619.eurprd08.prod.outlook.com (2603:10a6:800:20d::17)
 with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9870.19; Wed, 29 Apr
 2026 08:18:00 +0000
Received: from DB5PEPF00014B8B.eurprd02.prod.outlook.com
 (2603:10a6:10:232:cafe::9e) by DU2PR04CA0080.outlook.office365.com
 (2603:10a6:10:232::25) with Microsoft SMTP Server (version=TLS1_3,
 cipher=TLS_AES_256_GCM_SHA384) id 15.20.9846.30 via Frontend Transport; Wed,
 29 Apr 2026 08:18:00 +0000
Received: from outbound-uk1.az.dlp.m.darktrace.com (4.158.2.129) by
 DB5PEPF00014B8B.mail.protection.outlook.com (10.167.8.199) with Microsoft
 SMTP Server (version=TLS1_3, cipher=TLS_AES_256_GCM_SHA384) id 15.20.9846.18
 via Frontend Transport; Wed, 29 Apr 2026 08:17:59 +0000
Received: from DU2PR08MB7272.eurprd08.prod.outlook.com (2603:10a6:10:2d7::16)
 by AS8PR08MB6631.eurprd08.prod.outlook.com (2603:10a6:20b:339::12)
 with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9870.19; Wed, 29 Apr
 2026 08:16:56 +0000
Received: from DU2PR08MB7272.eurprd08.prod.outlook.com
 ([fe80::5d34:206f:373:a323]) by DU2PR08MB7272.eurprd08.prod.outlook.com
 ([fe80::5d34:206f:373:a323%6]) with mapi id 15.20.9846.025; Wed, 29 Apr 2026
 08:16: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=arm.com header.i="@arm.com" header.h="From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck"; dkim=pass header.s=selector1 header.d=arm.com header.i="@arm.com" header.h="From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck"
ARC-Seal: i=2; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=pass;
 b=W4FzV6CZfQ6W0AwnQmb0UFWlFy5He4JTWIwjtLx+e2ZmTuPZxKq/Sh+ZktzOyqYR094QNj5M0G5vmHgLd2e1ld8ZG3jrl2SwEW1//wY20ByHi/+cJxM8IKPXr3Cfo3Ok5T1+5oObBPIpNcJvgAsy9jFnqjT2uGAOdGOJ+9Ww18LAa129PyJVvkw8PAEhEGU4LcCnJMuZTvubi1a2CQH5mj0xnvRW92EbzyhvmwAKISrSzb28LRhPIPkWOBDN4OrDkMXM/gka7POCDfw3IESHpV5hHJfDvYh6+t0OBoXJWdXUG+1xYzQUFiNYpI3Dq9Gl/O5yQxq6Coh/Q6jlZy9vWw==
ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com;
 s=arcselector10001;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1;
 bh=8HZBB6EnPd5pc4XeW/Q3vmNk1mQZ25Qm7DUmW0DhGBQ=;
 b=dkzulG+6k5VddVlI0adCtVdGZspVBTSq/cxhFOSVYCzEr3A8X4VxWmPWUcRHJv0v1jzk6YJUSahKJKznn3eWgdDqsK1SnAkkz4xjchNdriJYgU5HOVrKJY085hzu3w3zlvp9FaYfRH9xRRnMAf2+FaPxMzBdEaVicIoHPTiscPqjAt1ssrDgy9avfwYe+nI4l8CuG3qvQsvv+e3TilQblayF9yf/06ZVoi5cmeXhmyGFinkFxy/9lAyfA1jg9gOjBp4nK94D0nmIpGvhpIG6RstzjLINPnz1UwXk166eQDk6b2mJ5A+RhR7z+n/Ih140CM0D2uhnEWTVP79kBWlC3Q==
ARC-Authentication-Results: i=2; mx.microsoft.com 1; spf=pass (sender ip is
 4.158.2.129) smtp.rcpttodomain=gmail.com smtp.mailfrom=arm.com; dmarc=pass
 (p=none sp=none pct=100) action=none header.from=arm.com; dkim=pass
 (signature was verified) header.d=arm.com; arc=pass (0 oda=1 ltdi=1
 spf=[1,1,smtp.mailfrom=arm.com] dkim=[1,1,header.d=arm.com]
 dmarc=[1,1,header.from=arm.com])
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=arm.com; s=selector1;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck;
 bh=8HZBB6EnPd5pc4XeW/Q3vmNk1mQZ25Qm7DUmW0DhGBQ=;
 b=pRgc8wdAc7WLaK4V8DTwWLKaswuZI6WdSuNlflMBK/dWGFzmtkH5w45Q9dxyDz4a6/m23Q18/pqDxEtIvBkZlagTvkKVE1+7yRwWGtTzh0OTKrMdWw9B5nHTGwf+3hP7pz2w7Jle6j/VXEbJideoqJP60uGSbpwZS9gxgma9WDo=
X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 4.158.2.129)
 smtp.mailfrom=arm.com; dkim=pass (signature was verified)
 header.d=arm.com;dmarc=pass action=none header.from=arm.com;
Received-SPF: Pass (protection.outlook.com: domain of arm.com designates
 4.158.2.129 as permitted sender) receiver=protection.outlook.com;
 client-ip=4.158.2.129; helo=outbound-uk1.az.dlp.m.darktrace.com; pr=C
ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none;
 b=ej4KRtJlkvbHAxDfUpVFrIvX0eJC8lcMQDsf6uildSkNe79ttgFaiXiHzntrjLm0CsUGKY50Bjfl5ZPyQtAdXEo73W8Z0SJtk4m7VpRC7eSJugitvOZ1HbPFmZQo3YgwsPYlm8IPIKKB3wcowBgFkU8bY3qfMSVv9mj2EigiON71Rqi6DBZSM3oxsYnxsPXqcUzcelEd/DJqdzfD36ubicO4DQOTf9y3KXaV66IBnW9CLLX1JL+HiUEtA52+rkhGEBAfGJ724GbeLafg3dSZZO/9TwkydY4NDhYwq/el80C1ibrgxOtylc0AKQJngYOG9wcf3NVggFezj44NuIdunw==
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com;
 s=arcselector10001;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1;
 bh=8HZBB6EnPd5pc4XeW/Q3vmNk1mQZ25Qm7DUmW0DhGBQ=;
 b=LxRgOeoxtQAPL/AgRu1lv+0/pa573qO1XEF9cMaQjf0tp6x7c8QMUwaCuR+po7T3g7YsktqR0IxC7dOOS7X6khWmB81aq6qsCmAbdeJOXpm7kSS/PV5dEStJSn91EgnqIfz/3LbK16eyJtY/Q4DKbzu/gKJJINQ3ipsjQnjTXM4uEV887OiIcnnkxrZ6eXnIEFFR8DLcGtcf3nk+PfELz9Osflr/Rz1ZY2Qa1Rtaz8IAGNBGqCwGdIMb8SkfV2DEo08kkf87jZRNnbIxaWBuH7CbQ7sMLGFh5k6L7ZJ9BruywrnxmhxNW3TK9SGYnMODDq60w0gpigRfJj9AYn3WcQ==
ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass
 smtp.mailfrom=arm.com; dmarc=pass action=none header.from=arm.com; dkim=pass
 header.d=arm.com; arc=none
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=arm.com; s=selector1;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck;
 bh=8HZBB6EnPd5pc4XeW/Q3vmNk1mQZ25Qm7DUmW0DhGBQ=;
 b=pRgc8wdAc7WLaK4V8DTwWLKaswuZI6WdSuNlflMBK/dWGFzmtkH5w45Q9dxyDz4a6/m23Q18/pqDxEtIvBkZlagTvkKVE1+7yRwWGtTzh0OTKrMdWw9B5nHTGwf+3hP7pz2w7Jle6j/VXEbJideoqJP60uGSbpwZS9gxgma9WDo=
From: Luca Fancellu <Luca.Fancellu@arm.com>
To: Mykola Kvach <xakep.amatop@gmail.com>
CC: "xen-devel@lists.xenproject.org" <xen-devel@lists.xenproject.org>, 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>
Subject: Re: [PATCH v2] xen/arm: gic-v2: disable interrupt bypass on CPU
 shutdown
Thread-Topic: [PATCH v2] xen/arm: gic-v2: disable interrupt bypass on CPU
 shutdown
Thread-Index: AQHc1waiSgYhXcA/H0GAotA2SwKRHbX1suQA
Date: Wed, 29 Apr 2026 08:16:56 +0000
Message-ID: <5B5A7650-DEB3-47CE-819C-85F25FB58509@arm.com>
References:
 <18c5532816d852fca073d0552dcb6d497730a6c2.1777377278.git.mykola_kvach@epam.com>
In-Reply-To:
 <18c5532816d852fca073d0552dcb6d497730a6c2.1777377278.git.mykola_kvach@epam.com>
Accept-Language: en-GB, en-US
Content-Language: en-US
X-MS-Has-Attach:
X-MS-TNEF-Correlator:
x-mailer: Apple Mail (2.3826.700.81.1.6)
Authentication-Results-Original: dkim=none (message not signed)
 header.d=none;dmarc=none action=none header.from=arm.com;
x-ms-traffictypediagnostic:
	DU2PR08MB7272:EE_|AS8PR08MB6631:EE_|DB5PEPF00014B8B:EE_|VI0PR08MB10619:EE_
X-MS-Office365-Filtering-Correlation-Id: 2f66c06e-5f88-4ad5-084c-08dea5c7d3a1
x-checkrecipientrouted: true
nodisclaimer: true
X-MS-Exchange-SenderADCheck: 1
X-MS-Exchange-AntiSpam-Relay: 0
X-Microsoft-Antispam-Untrusted:
 BCL:0;ARA:13230040|376014|366016|1800799024|22082099003|56012099003|18002099003|38070700021;
X-Microsoft-Antispam-Message-Info-Original:
 zFuf4yB/kInE4lv8TuCpIvAFyz9GV6BxUn5Fc28JT99FKN39DcEeQ4AQfWzdtaK9Do3ECxtJ1R5PPppGgikqowMAMct1fziogFRXRzs8XGp54MqZMU8yvP2PQpYAK2rvd/sMCrsaBZ6UvN2ytr2SguG8YWuhcaa1PhX3V76ngw+R36cOpfq3uktXu9t2Rl72u5QJ/4x4xV6I3JjCzlZqt3jkbJMfTwSqEJlzTITujaC5oAHoqiDxzclTAoZl1DchCccbr7UAJaePh3JdcCOvvNRHV+NaWwutq1MbfzvMcBIGFoj5O1TDFpgtwDxFOjed1MIEsPMmqN4r/rvvLqROo4Lqy9+VzzfrFC4uMJT9NlZVGsDmOBVegvFAhuC69jhyTMl7CzvxrA8gThi74fP3NR0Z6lHhWQV8d7Xf2YlyM8lfcl1GUC5Yu8CAADhCNgdwIbbNvT3NO/H0Qnp18twxpPCS3hRLnaYQff8ic0MI596zjphY3mpqk0pyMbBrf/upM5HdjnEvOMBrB16HIAfvNrJ6k+/TzBDUbutNAFKv9Bkn5FQn0xQq2k3RB7PLgcGBMuaDaAlPsHz2kbzG+OH5JIn63+kEEYidj6NrRF17DKbLxfeKerwgEDUsG6858mhbSO2Kyp5fTigbqSYzxira8RhKhWX+U9Hda0I6qRQIWY8T+V7Vpe21q0XMufSom/RCImxlcmRIw5l4mhvzzUhkQV6G5dljQ0sVqBQbzTZtLWcHj+PY9h3iTBy8WfKcVQx9yUEBfbty9M7q4iPw2OUpumj6jNZdlwdeUaK4KsQ6oHQ=
X-Forefront-Antispam-Report-Untrusted:
 CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:DU2PR08MB7272.eurprd08.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(376014)(366016)(1800799024)(22082099003)(56012099003)(18002099003)(38070700021);DIR:OUT;SFP:1101;
Content-Type: text/plain; charset="us-ascii"
Content-ID: <4C7D561827A7204A90F3D9076FD8F4C8@eurprd08.prod.outlook.com>
Content-Transfer-Encoding: quoted-printable
MIME-Version: 1.0
X-Exchange-RoutingPolicyChecked:
 p68h0XAubft1/03HxrsNVGKY9FkAD98ZW3W8ssiWC2p8aeCSqXqL5j+vTwjjziTDopvi1Ow1FQ7I4GN+1E1XpOtIFrjKgfsorC7NtvBXEDQ7U81kdiE3EF5/HqGZmzNFULcI4nkYnwFrcRWyVJ33HsB/ah00pWFWcIV4b3Q+20glPb99qpkjBb3/o3hLWKejUJmROvE6mVFrvBvQDiG5iWAlGYbukzF38bBqU/6hdEbocwe08YqvkGbTz3FRFSJ9O3rEXrfALdIjlekBqUjd3ptqsqIu6+qiPEor8HUvO9bOKo81KyWJQpJi5yD0JBQrVtqbFu+PqQZVIFTUljzztw==
X-MS-Exchange-Transport-CrossTenantHeadersStamped: AS8PR08MB6631
X-EOPAttributedMessage: 0
X-MS-Exchange-Transport-CrossTenantHeadersStripped:
 DB5PEPF00014B8B.eurprd02.prod.outlook.com
X-MS-PublicTrafficType: Email
X-MS-Office365-Filtering-Correlation-Id-Prvs:
	a81dd144-3fec-4c88-fce0-08dea5c7ade0
X-Microsoft-Antispam:
	BCL:0;ARA:13230040|36860700016|376014|1800799024|82310400026|14060799003|35042699022|56012099003|18002099003|22082099003;
X-Microsoft-Antispam-Message-Info:
	0wgxNlvDw7mGz8SUbdL6WteAgwmk+Ws5a+svuN99cO2dPs4uYedqh9M/CrWZURdQoq+0VX5PNoCuW5j/OB/FxCkLPkyolTxsF+3SmrALcUVMMltS6fcsxRvQ+xdv5QaNjth7bXJvu2HKtre9Yc3NNeY8B+2u0I6aCNfGgeVfQrthwwwkwwdBgdxoRUZrZgxNNgvsMTXbylkcvKu2/Gc1V/4vbICKPjOHNrPXts1Mfu45s0uyEnUIms8EEqWXUgedvH8ho3wyGGISvjI8ROIdMgS4w8bG3F5XVZU9PBYzOkjHnfANK2h958QEBV68tfGXwLHs5tcL4dNC92OK/7LQtTmBV6LYqJFIM0ZFtOOLcN++9EI5MUgeZG5i+JEvS2owFh5X80IQK7qUmX+eCGm+ppwQ2HFq9zsB6jGpZIjN2j/EXKEtRhjS8SgzgaG8CRYSyL3Me029qbMhT4yQXxKPsgrkIaydicmQGQQK90OL3Fhr3eh58hsBRCc8wWqt971dS515VeMcS5EhohVkipdTgRU+XsB9enJ9Vw8RP6F9Hna2uiuonSxLhx6+7u5lIkMRgz3kfIbRROtmuK4LW27d+t4kSJgr1wprbvVcCmLI1K8dV6c9oPhx2iJgI91kuU9saYe1nSQCK2ILq9a7gV6M77UUX2JQ8TNjCrU4JOwI9t1Dr/r933o526R/Y9O1ZXMoT00KXFVHqE0CC234W9hscGTxQyikbiz4tWH5nRw9BXS4avw+Qb/GgYj8cvs995Wx/AIUoIA3QcNl/ZXlXJ6s3g==
X-Forefront-Antispam-Report:
	CIP:4.158.2.129;CTRY:GB;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:outbound-uk1.az.dlp.m.darktrace.com;PTR:InfoDomainNonexistent;CAT:NONE;SFS:(13230040)(36860700016)(376014)(1800799024)(82310400026)(14060799003)(35042699022)(56012099003)(18002099003)(22082099003);DIR:OUT;SFP:1101;
X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1
X-MS-Exchange-AntiSpam-MessageData-0:
	a8Uy9OsZTEx2Qi4qVfE2s/fpkAjKWwg9K9hX7HqIGUXz7zeuvCjh1WvH10aTRsyBL72WOEwJIyDCnZu1ikCSrfO4peXW/1DpDdVgfAaw3d5bkvt4HPRlF52S4akPCw2aT0U8Id4+6WPZ8e/+tPmDlq+q+i+4O33ajDZOOjZiOHzcCwQ4IvBXsBOA+HmVt7nR1iJqQLdT2oPx3zTwQBCwECQypFemEdVVXrf10AyRqxGFFexJ8nKAr5YTKbD2n940eIFnLOae3mRS7xs60db/miVeMPGWLYSJqNFx76mmXwTQUt66037Pf5NCm8PRN9qN2hUwYKPDnIuU9JO+YeqsfFSrGJKYLEZ6DffYG8hDvpqKpyAZus+ZUCxkbT58Y4xyoMouvC/ILGXDmvSgn5QCL4DA4GP2jpizYeietiBYTG6jabEWY6gibQPa+nO9HM6b
X-OriginatorOrg: arm.com
X-MS-Exchange-CrossTenant-OriginalArrivalTime: 29 Apr 2026 08:17:59.9778
 (UTC)
X-MS-Exchange-CrossTenant-Network-Message-Id: 2f66c06e-5f88-4ad5-084c-08dea5c7d3a1
X-MS-Exchange-CrossTenant-Id: f34e5979-57d9-4aaa-ad4d-b122a662184d
X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=f34e5979-57d9-4aaa-ad4d-b122a662184d;Ip=[4.158.2.129];Helo=[outbound-uk1.az.dlp.m.darktrace.com]
X-MS-Exchange-CrossTenant-AuthSource:
	DB5PEPF00014B8B.eurprd02.prod.outlook.com
X-MS-Exchange-CrossTenant-AuthAs: Anonymous
X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem
X-MS-Exchange-Transport-CrossTenantHeadersStamped: VI0PR08MB10619
X-purgate-ID: tlsNG-c201ff/1777450691-E17A6443-3003D9B7/0/0
X-purgate-type: clean
X-purgate-size: 1760

Hi Mykola,

> On 28 Apr 2026, at 12:57, Mykola Kvach <xakep.amatop@gmail.com> wrote:
>=20
> From: Mykola Kvach <mykola_kvach@epam.com>
>=20
> The GICv2 CPU shutdown path currently writes 0 to GICC_CTLR.
>=20
> Per IHI0048B.b section 2.3.1, clearing the architected bypass-disable
> bits selects bypass rather than deasserted interrupt outputs when the
> CPU interface stops driving them. Tables 2-2 and 2-3 show that a zeroed
> GICC_CTLR can fall back to the legacy IRQ/FIQ inputs instead of fully
> disabling the interface.
>=20
> Fix this by reading GICC_CTLR, then setting the bypass-disable bits and
> clearing the group-enable bits that are architecturally defined for the
> current GICC_CTLR view before writing the value back. When Security
> Extensions are implemented Xen accesses the Non-secure copy of
> GICC_CTLR, where IRQBypDisGrp1 and FIQBypDisGrp1 are at bits [6:5] and
> bits [8:7] are reserved.
>=20
> Without Security Extensions there is no separate Secure/Non-secure CPU
> interface view, so disabling both group-enable bits affects the shared
> interface state. This is still appropriate for the CPU shutdown path,
> which is expected to stop normal interrupt delivery through the interface
> and rely only on the architecturally separate wakeup event signaling.
>=20
> Section 2.3.2 also states that wakeup event signals remain available
> even when both GIC interrupt signaling and interrupt bypass are
> disabled, so disabling bypass does not break the power-management use
> case, i.e. suspend modes.
>=20
> Fixes: 5e40a1b4351e ("arm: SMP CPU shutdown")
> Signed-off-by: Mykola Kvach <mykola_kvach@epam.com>

Looks good to me

Reviewed-by: Luca Fancellu <luca.fancellu@arm.com>

Cheers,
Luca



From xen-devel-bounces@lists.xenproject.org Wed Apr 29 08:20:16 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 29 Apr 2026 08:20:16 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1297103.1573236 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wI09O-0003Nl-4s; Wed, 29 Apr 2026 08:20:06 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1297103.1573236; Wed, 29 Apr 2026 08:20: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 1wI09O-0003Ne-1k; Wed, 29 Apr 2026 08:20:06 +0000
Received: by outflank-mailman (input) for mailman id 1297103;
 Wed, 29 Apr 2026 08:20:04 +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 1wI09M-000376-DS
 for xen-devel@lists.xenproject.org; Wed, 29 Apr 2026 08:20:04 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wI09L-00BiLo-Pf
 for xen-devel@lists.xenproject.org; Wed, 29 Apr 2026 10:20:03 +0200
Received: from [10.42.69.5] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <Michal.Orzel@amd.com>)
 id 69f1bf2e-bab6-0a2a0a5309dd-0a2a4505d49a-34
 for <xen-devel@lists.xenproject.org>; Wed, 29 Apr 2026 10:20:03 +0200
Received: from [52.101.52.4]
 (helo=BL2PR02CU003.outbound.protection.outlook.com)
 by tlsNG-c201ff.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.1)
 (envelope-from <Michal.Orzel@amd.com>)
 id 69f1bf31-aaa8-0a2a45050019-34653404aa11-3
 for <xen-devel@lists.xenproject.org>; Wed, 29 Apr 2026 10:20:02 +0200
Received: from DM6PR18CA0020.namprd18.prod.outlook.com (2603:10b6:5:15b::33)
 by LV3PR12MB9354.namprd12.prod.outlook.com (2603:10b6:408:211::20) with
 Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9870.18; Wed, 29 Apr
 2026 08:19:56 +0000
Received: from DS2PEPF000061C6.namprd02.prod.outlook.com
 (2603:10b6:5:15b:cafe::bb) by DM6PR18CA0020.outlook.office365.com
 (2603:10b6:5:15b::33) with Microsoft SMTP Server (version=TLS1_3,
 cipher=TLS_AES_256_GCM_SHA384) id 15.20.9846.30 via Frontend Transport; Wed,
 29 Apr 2026 08:19:56 +0000
Received: from satlexmb07.amd.com (165.204.84.17) by
 DS2PEPF000061C6.mail.protection.outlook.com (10.167.23.73) with Microsoft
 SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id
 15.20.9846.18 via Frontend Transport; Wed, 29 Apr 2026 08:19:56 +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.17; Wed, 29 Apr
 2026 03:19:56 -0500
Received: from [10.252.145.116] (10.180.168.240) by satlexmb08.amd.com
 (10.181.42.217) with Microsoft SMTP Server id 15.2.2562.17 via Frontend
 Transport; Wed, 29 Apr 2026 03:19:54 -0500
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@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=ZGH04N0miKyh4cAqzgkKBH4CllAPv/kgJeLl2OrUE8z7nMMpIeaeZvO3iMKUootqmr7a4iDC+4UjmNAwyzmU0nGmnetxC+EyQ++UMw0NZpwd7muiKaTrPK5Sougejg4kUJ/vo6mDrrMpy/ARsfsr8mZ5BORBQw62U5J8L0ovdkpk3heJjhs/Jx/D/LAucDKeNELekG8ofMD0iaj5N21+k7y/4m/lZf0npHjzhf/3s9Cx1mlW5Wc1B1awmtF0snnzwmXxJK4YqvAi9hrinRhGWG1juNTkKYmTedfVhspzYqxGMKVqbrbngODOD9A1DLFzdeEwz8i/WmXiX/XA1upgsQ==
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com;
 s=arcselector10001;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1;
 bh=nCtXFZ4vmBw/HVZX3GMMi3hktLdKRP5ivDFK3iSz6cY=;
 b=SWQl0LpECYzCl7zL+NZZuKSlCvGUUp6nRlC7Ycu/Ef1GEClArz8SX6j46QpbWbRFLhas/ok/mJ8PEj+jyk7L8Hvrq1hhC3mZs7hECqk2KNwqPHW0AstmKecmJpAyL3W73RavBzH4RqmSlQoRnneJyO8Gfl5Lna/AcAoXDILmtzrKT023PvS8muKM8bujoajyC9XWXOQak9RsasMUOu9UwHiRtpNe/bsDkvCrrbk+gw55/SVUfqSYF8Mm1kTxxid/PjdhMWe5fZHvcsoGtgNq6XLwSA3C8e5ZY3kIt21ZALFHgkNzFk5vXZjtw758YU1l5kt/0PwBhUew+L518Q/lYg==
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=nCtXFZ4vmBw/HVZX3GMMi3hktLdKRP5ivDFK3iSz6cY=;
 b=DFu75JJeb7FEDA7IFD5Rub4A7L1efVXU9NFoW9s8xH65seKrc5LfPkFDw9zG/C6RkryFbpoCfhydsnLU8OiXKg7H6BM4XpufCKrJc8V0a74yydwxpZfunaDVeFnSQdVFbKBNdDuq41BuPOS5wHMcNdidZHgfhxOIsBYslCRKlbs=
X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 165.204.84.17)
 smtp.mailfrom=amd.com; dkim=none (message not signed)
 header.d=none;dmarc=pass action=none header.from=amd.com;
Received-SPF: Pass (protection.outlook.com: domain of amd.com designates
 165.204.84.17 as permitted sender) receiver=protection.outlook.com;
 client-ip=165.204.84.17; helo=satlexmb07.amd.com; pr=C
Message-ID: <59548223-99d7-4a11-ac81-39eee6474562@amd.com>
Date: Wed, 29 Apr 2026 10:19:54 +0200
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH v2] xen/arm: gic-v2: disable interrupt bypass on CPU
 shutdown
To: Mykola Kvach <xakep.amatop@gmail.com>, <xen-devel@lists.xenproject.org>
CC: Mykola Kvach <mykola_kvach@epam.com>, Stefano Stabellini
	<sstabellini@kernel.org>, Julien Grall <julien@xen.org>, Bertrand Marquis
	<bertrand.marquis@arm.com>, Volodymyr Babchuk <Volodymyr_Babchuk@epam.com>
References: <18c5532816d852fca073d0552dcb6d497730a6c2.1777377278.git.mykola_kvach@epam.com>
From: "Orzel, Michal" <michal.orzel@amd.com>
Content-Language: en-US
In-Reply-To: <18c5532816d852fca073d0552dcb6d497730a6c2.1777377278.git.mykola_kvach@epam.com>
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: 7bit
X-EOPAttributedMessage: 0
X-MS-PublicTrafficType: Email
X-MS-TrafficTypeDiagnostic: DS2PEPF000061C6:EE_|LV3PR12MB9354:EE_
X-MS-Office365-Filtering-Correlation-Id: d7a253f6-4747-4e16-75c2-08dea5c81911
X-MS-Exchange-SenderADCheck: 1
X-MS-Exchange-AntiSpam-Relay: 0
X-Microsoft-Antispam:
	BCL:0;ARA:13230040|376014|36860700016|82310400026|1800799024|22082099003|56012099003|18002099003;
X-Microsoft-Antispam-Message-Info:
	P8sd2gXGV8F/skFNwvG26vMhGNqnTh6KnS+Pwe6gdzHE7+NdWy63JF4G9UACvvl5JIya7DzGW/SyIyKiryflNW8G/SHT3PnY+me/6+CDjxH7fsaECc/tCAbNZFTD20QzqFsNNOnD5ILVRdvMHK2CES6x6ljnLI1eSVILzYzdPwivIvQUevrDt0R3hJQTPEwBBqdR+f9ayb8eJNbsXLEF6yn/4fi9dznaLIeh2FqESBBHMnXsojMGBAf/npfG1lAh+W57n0OMT1jVR+gPsojbRj9p1Llvev21FgEa5kZc/LCg095YbUWKatqsLJ9U6GbE0/Q0zmjYp4iN4LAdydSidtex/bo35eLMNVxzkdFmFRwad4EAn1ux/AeDQXPtdAse4y/qkK0c6wIwvCHGff5P0LOPrNrwvCtqlMzVhmaE7Hk1E/GL3zZ8KqejEZpPh0ErDq7MlSfs0G3ZHINMGXX8jpyuROrYLgBQd9iMLXww8Ml1mDCYOHLOxoHf+G1EULDkNYSUwYf0OSlFEI1K4EA22bun7JT4It4JXKQfH0LXnAdt9TOdCiL0Gw6ahC+6xoK8OdvScq29cUO9DRLzGIED7/0SgBygpwsTwXo+hg4Q+PExvaZ45VZm7iZZ2OrS8FX/uznv3Nh+IhuPvUfVKYaizZh3L8kDwuxSkd8u3yeW6RDZBFwyC6P07XrVZg5vWeoy+CPqw1I+7LyumCfN4UTLSQQO9vprYaJY/2eOfXjdGDCf7569/bwzUz35QAu1dhp5iCviBjqacZM+s+C4mhLYQw==
X-Forefront-Antispam-Report:
	CIP:165.204.84.17;CTRY:US;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:satlexmb07.amd.com;PTR:InfoDomainNonexistent;CAT:NONE;SFS:(13230040)(376014)(36860700016)(82310400026)(1800799024)(22082099003)(56012099003)(18002099003);DIR:OUT;SFP:1101;
X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1
X-MS-Exchange-AntiSpam-MessageData-0:
	GbwjqbxnugEvb3Y7uiqjopvWtjL3dIXhZcbtEoBwK93mDKY80dKyQ1mQ728W0RVai5hGg0wqRWLT1p89VVsibvpPpJ6kwoyrdHb0SQy6kry1ogPnrto2p1YnqyTTH7QkG3qlYmhu0OsKYILo7kz6easVEeLtTOASfEBAxunZs215rOkT5xyAo+f3Ef9DjkxzDXOB0QgHA/xx3Ipc919bElXtnyC7O0LuLdDoAba+fa8NkEahaI9aI7ablChaTYot4eJXPiimBrNCK+5KsBXsX8KFrHYLOlCeKURBjuoTqRCs/ajC2ZGjuThiGT/hoZmioeRdjQe3G0q3Iy0B8u7oPgpfA0tGpLo0L65V9OpVF/0karIWfEagw2wxWQYUUxer0J6cPG3hL9/I698oSmn3UwQr5zJCvZobUVXSu+QzBKPZZiO6CdPXG7oN9YNkPMOT
X-OriginatorOrg: amd.com
X-MS-Exchange-CrossTenant-OriginalArrivalTime: 29 Apr 2026 08:19:56.4995
 (UTC)
X-MS-Exchange-CrossTenant-Network-Message-Id: d7a253f6-4747-4e16-75c2-08dea5c81911
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:
	DS2PEPF000061C6.namprd02.prod.outlook.com
X-MS-Exchange-CrossTenant-AuthAs: Anonymous
X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem
X-MS-Exchange-Transport-CrossTenantHeadersStamped: LV3PR12MB9354
X-purgate-ID: tlsNG-c201ff/1777450803-2AF6E443-1035E2C9/0/0
X-purgate-type: clean
X-purgate-size: 4842



On 28-Apr-26 13:57, Mykola Kvach wrote:
> From: Mykola Kvach <mykola_kvach@epam.com>
> 
> The GICv2 CPU shutdown path currently writes 0 to GICC_CTLR.
> 
> Per IHI0048B.b section 2.3.1, clearing the architected bypass-disable
> bits selects bypass rather than deasserted interrupt outputs when the
> CPU interface stops driving them. Tables 2-2 and 2-3 show that a zeroed
> GICC_CTLR can fall back to the legacy IRQ/FIQ inputs instead of fully
> disabling the interface.
> 
> Fix this by reading GICC_CTLR, then setting the bypass-disable bits and
> clearing the group-enable bits that are architecturally defined for the
> current GICC_CTLR view before writing the value back. When Security
> Extensions are implemented Xen accesses the Non-secure copy of
> GICC_CTLR, where IRQBypDisGrp1 and FIQBypDisGrp1 are at bits [6:5] and
> bits [8:7] are reserved.
> 
> Without Security Extensions there is no separate Secure/Non-secure CPU
> interface view, so disabling both group-enable bits affects the shared
> interface state. This is still appropriate for the CPU shutdown path,
> which is expected to stop normal interrupt delivery through the interface
> and rely only on the architecturally separate wakeup event signaling.
> 
> Section 2.3.2 also states that wakeup event signals remain available
> even when both GIC interrupt signaling and interrupt bypass are
> disabled, so disabling bypass does not break the power-management use
> case, i.e. suspend modes.
> 
> Fixes: 5e40a1b4351e ("arm: SMP CPU shutdown")
> Signed-off-by: Mykola Kvach <mykola_kvach@epam.com>
> 
> ---
> Changes in v2:
> - derive the shutdown masks from the active GICC_CTLR layout
> - use the Non-secure GICC_CTLR layout when GICD_TYPER.SecurityExtn is set
> - stop writing reserved bits [8:7] on Security Extensions systems
> ---
>  xen/arch/arm/gic-v2.c          | 16 +++++++++++++++-
>  xen/arch/arm/include/asm/gic.h | 25 +++++++++++++++++++++++--
>  2 files changed, 38 insertions(+), 3 deletions(-)
> 
> diff --git a/xen/arch/arm/gic-v2.c b/xen/arch/arm/gic-v2.c
> index 014f955967..241c1ff5c5 100644
> --- a/xen/arch/arm/gic-v2.c
> +++ b/xen/arch/arm/gic-v2.c
> @@ -408,7 +408,21 @@ static void gicv2_cpu_init(void)
>  
>  static void gicv2_cpu_disable(void)
>  {
> -    writel_gicc(0x0, GICC_CTLR);
> +    uint32_t ctlr = readl_gicc(GICC_CTLR);
> +
> +    if ( readl_gicd(GICD_TYPER) & GICD_TYPE_SEC )
> +    {
> +        ctlr |= GICC_NS_CTLR_BYPASS_DISABLE_GRP1_MASK;
> +        ctlr &= ~GICC_CTL_ENABLE;
> +    }
> +    else
> +    {
> +        ctlr |= GICC_CTLR_BYPASS_DISABLE_GRP0_MASK |
> +                GICC_CTLR_BYPASS_DISABLE_GRP1_MASK;
> +        ctlr &= ~(GICC_CTL_ENABLE | GICC_CTL_ENABLE_GRP1);
> +    }
I don't understand why you want to set both G0 and G1,
Bits 5-6 in the NS view control Group 1, while the same bits in the
Secure/single-security-state view control Group 0. So in the latter case you
don't need to set G1. Without security extensions all interrupts are G0 and with
security extensions (NS access) all interrupts are G1. The spec guarantees the
functional mapping.

~Michal


> +
> +    writel_gicc(ctlr, GICC_CTLR);
>  }
>  
>  static void gicv2_hyp_init(void)
> diff --git a/xen/arch/arm/include/asm/gic.h b/xen/arch/arm/include/asm/gic.h
> index 8e713aa477..ff22dea40d 100644
> --- a/xen/arch/arm/include/asm/gic.h
> +++ b/xen/arch/arm/include/asm/gic.h
> @@ -102,8 +102,29 @@
>  #define GICD_TYPE_SEC   0x400
>  #define GICD_TYPER_DVIS (1U << 18)
>  
> -#define GICC_CTL_ENABLE 0x1
> -#define GICC_CTL_EOI    (0x1 << 9)
> +/*
> + * Xen runs in the Non-secure world. When Security Extensions are present,
> + * Xen accesses the Non-secure GICC_CTLR view, where bit[0] is EnableGrp1
> + * and bits[6:5] are the Group 1 bypass-disable bits. Otherwise Xen sees the
> + * common GICC_CTLR layout, where bit[0] is EnableGrp0, bit[1] is EnableGrp1,
> + * bits[6:5] are the Group 0 bypass-disable bits, and bits[8:7] are the
> + * Group 1 bypass-disable bits.
> + */
> +#define GICC_CTL_ENABLE        (0x1 << 0)
> +#define GICC_CTL_ENABLE_GRP1   (0x1 << 1)
> +#define GICC_CTL_FIQBypDisGrp0 (0x1 << 5)
> +#define GICC_CTL_IRQBypDisGrp0 (0x1 << 6)
> +#define GICC_CTL_FIQBypDisGrp1 (0x1 << 7)
> +#define GICC_CTL_IRQBypDisGrp1 (0x1 << 8)
> +
> +#define GICC_CTLR_BYPASS_DISABLE_GRP0_MASK              \
> +    (GICC_CTL_FIQBypDisGrp0 | GICC_CTL_IRQBypDisGrp0)
> +#define GICC_CTLR_BYPASS_DISABLE_GRP1_MASK              \
> +    (GICC_CTL_FIQBypDisGrp1 | GICC_CTL_IRQBypDisGrp1)
> +#define GICC_NS_CTLR_BYPASS_DISABLE_GRP1_MASK           \
> +    GICC_CTLR_BYPASS_DISABLE_GRP0_MASK
> +
> +#define GICC_CTL_EOI           (0x1 << 9)
>  
>  #define GICC_IA_IRQ       0x03ff
>  #define GICC_IA_CPU_MASK  0x1c00



From xen-devel-bounces@lists.xenproject.org Wed Apr 29 08:41:02 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 29 Apr 2026 08:41:02 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1297112.1573245 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wI0TP-0006iJ-ME; Wed, 29 Apr 2026 08:40:47 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1297112.1573245; Wed, 29 Apr 2026 08:40: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 1wI0TP-0006iC-JP; Wed, 29 Apr 2026 08:40:47 +0000
Received: by outflank-mailman (input) for mailman id 1297112;
 Wed, 29 Apr 2026 08:40:45 +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 1wI0TN-0006i4-E3
 for xen-devel@lists.xenproject.org; Wed, 29 Apr 2026 08:40:45 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wI0TL-001t9P-76
 for xen-devel@lists.xenproject.org; Wed, 29 Apr 2026 10:40:44 +0200
Received: from [10.42.69.5] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <jgross@suse.com>)
 id 69f1c40b-5cb7-0a2a0a5109dd-0a2a450584fa-12
 for <xen-devel@lists.xenproject.org>; Wed, 29 Apr 2026 10:40:44 +0200
Received: from [209.85.218.47] (helo=mail-ej1-f47.google.com)
 by tlsNG-c201ff.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.1)
 (envelope-from <jgross@suse.com>)
 id 69f1c40c-aaa8-0a2a45050019-d155da2fb992-3
 for <xen-devel@lists.xenproject.org>; Wed, 29 Apr 2026 10:40:44 +0200
Received: by mail-ej1-f47.google.com with SMTP id
 a640c23a62f3a-b936331786dso1613067566b.3
 for <xen-devel@lists.xenproject.org>; Wed, 29 Apr 2026 01:40:44 -0700 (PDT)
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
 a640c23a62f3a-bb98630e647sm60991266b.60.2026.04.29.01.40.43
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Wed, 29 Apr 2026 01:40:43 -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=google header.d=suse.com header.i="@suse.com" header.h="In-Reply-To:Autocrypt:From: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=1777452044; x=1778056844; darn=lists.xenproject.org;
        h=in-reply-to:autocrypt:from:content-language:references:to:subject
         :user-agent:mime-version:date:message-id:from:to:cc:subject:date
         :message-id:reply-to;
        bh=29dthCTPW2xreJ9mkRqkrCEgXbzH1gJvWirU2wdTC+I=;
        b=YoxjIKMJXguwNz9hbPCu57SRGlaje9RvAlJm+TCQWlHNpvFKK/G/M4qDoT514eg6u+
         uq63VwodoTG17Mbr/Tvfs2EXpTCjFasHvpBvDNLedAxP9/1gsmTqnd4iE0RZB3/TT/sJ
         NVBxjS2eTgDdgzZ1TF0hQuYiiipKDjlVIA5Q8ZZoXM3aqTyl1UXakAsSXY/iQ7EMXQAE
         JW5D7TUOPe3Za1y4k65GsSuISLGY2gGJQPJ6+Axf4dRjKOb42oXaRwguQ4aynhTtXaOX
         L3SzLqBYYIHOEdLmeW7q3Fl9DtJAu7U2dIfwBT92JSm2oJWLxrRHunebWgr6fX8mQUYg
         9+KA==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20251104; t=1777452044; x=1778056844;
        h=in-reply-to:autocrypt: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;
        bh=29dthCTPW2xreJ9mkRqkrCEgXbzH1gJvWirU2wdTC+I=;
        b=RXh+lITLSZ+G7DmAn0QWafq8zumGWTL6PKltAovKtkWSkWzJbl+WLr5DALJ7gaqkFS
         y++k+j1A5souwHoyuypOx9shqTnArzRF+3OSWktebuIdsn2iRwHF7MDpprRin0GISd2F
         o3vmx97893MuudIkqhMB1ApM0Hjjq3uCcok/cZZkVd6o88OeUSznnYd26MWtntR7uH9T
         Ccl7OZj9y0zYO8bYz65izZS73aEarX9oadF+yoH7RHODN182rF360VpHcM/vAx8S/qA5
         GpkSFxjtuyAwNkUDZ2gGfapmYBNbgtBb6xJ/PhpKnWUnK/Pmsk0/4+t28iHR2bqYixEA
         MwEQ==
X-Forwarded-Encrypted: i=1; AFNElJ9udNFmXGEofGiX7fiPhiBpBwRPI6qYrOltVd2WOInsMzCbueHZWPhoUn12T2C3KPv96LXOq885vxI=@lists.xenproject.org
X-Gm-Message-State: AOJu0YwsV6JYB6Nt42iNQy85HaxVNol5EAll0Eha6wJcSmTHFcZkHh7+
	lj7SWrMYZa+ablJD1fruYFqA9Dt1fyTXh4jc1+xPrx+drPn0sjVdD5Pj8fJpO4enbPw=
X-Gm-Gg: AeBDietz/EfuQ6p6fSQ0ORacVb5Q4TTgkUqxcQfCUHcz5MyN4iT7tPKNbQygrF+gnNP
	d4CC7TzLMriVdNt3jkKE1QxorpyU5XvgZgiuc0C2a1d9zIX0/5TKGRXjPqS8zDGEREEV9j1fnYL
	W2Gy+QhWiNyQalbQwSJ/g+fKsOC8ec5qC9HnsuNJwMvDv9hgqLHAVeTMr7dbw+tEQsPoaHUH9PI
	Ln6SPqVxztmndT5erKPH+HWJ5MeiiSAPRxLac9DS1gEunUUYBAsS0wTNMY4TLEAcG5YieBeEig+
	2xARLuqZBpijD6oddYZlxtLpaHakH+kVbdl2cZTLq4k+/U/xAXHiLDDNO9NVOFan+B6BrxgCvPa
	0wzVLhRXeWWCwQOISlegYpktkyENnk9VFC/uRUbD7t9fR9Fv1d5frNxzUccFlCZODNnW8chHY3X
	PGuQWPcZIZBA9K6aBWuK8+GgON8qFhI3L2mQ3pmjU5sni1/OESOJN9DDSw4ru/9krjbnigN1mz3
	sCSaLj5OG8UW5pVzjdFSta+wUxzrQt21tyDnxPgvR6qpx+1hd0QWUh8ouAE17RH
X-Received: by 2002:a17:907:c405:b0:ba9:559:10c8 with SMTP id a640c23a62f3a-bb804538dbcmr417241166b.41.1777452043918;
        Wed, 29 Apr 2026 01:40:43 -0700 (PDT)
Message-ID: <d547efe9-390c-476b-8b07-708bc871e29d@suse.com>
Date: Wed, 29 Apr 2026 10:40:43 +0200
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH v2] hypfs: add ASSERT_UNREACHABLE() in
 hypfs_get_entry_rel()
To: Dmytro Prokopchuk1 <dmytro_prokopchuk1@epam.com>,
 "xen-devel@lists.xenproject.org" <xen-devel@lists.xenproject.org>
References: <6db49190e85a30c0129f251ce718d50923baba8d.1777387070.git.dmytro_prokopchuk1@epam.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: <6db49190e85a30c0129f251ce718d50923baba8d.1777387070.git.dmytro_prokopchuk1@epam.com>
Content-Type: multipart/signed; micalg=pgp-sha256;
 protocol="application/pgp-signature";
 boundary="------------iM0GorC37dwJVTjsBlL1aZTN"
X-purgate-ID: tlsNG-c201ff/1777452044-2A76A443-511561CC/0/0
X-purgate-type: clean
X-purgate-size: 6959

This is an OpenPGP/MIME signed message (RFC 4880 and 3156)
--------------iM0GorC37dwJVTjsBlL1aZTN
Content-Type: multipart/mixed; boundary="------------S92fFCUTK84VdaznDevhSF07";
 protected-headers="v1"
From: =?UTF-8?B?SsO8cmdlbiBHcm/Dnw==?= <jgross@suse.com>
To: Dmytro Prokopchuk1 <dmytro_prokopchuk1@epam.com>,
 "xen-devel@lists.xenproject.org" <xen-devel@lists.xenproject.org>
Message-ID: <d547efe9-390c-476b-8b07-708bc871e29d@suse.com>
Subject: Re: [PATCH v2] hypfs: add ASSERT_UNREACHABLE() in
 hypfs_get_entry_rel()
References: <6db49190e85a30c0129f251ce718d50923baba8d.1777387070.git.dmytro_prokopchuk1@epam.com>
In-Reply-To: <6db49190e85a30c0129f251ce718d50923baba8d.1777387070.git.dmytro_prokopchuk1@epam.com>

--------------S92fFCUTK84VdaznDevhSF07
Content-Type: multipart/mixed; boundary="------------lex6e05wcKSpgNlU70xRNhtN"

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

T24gMjguMDQuMjYgMjA6MTksIERteXRybyBQcm9rb3BjaHVrMSB3cm90ZToNCj4gVGhlIHN0
YXRlbWVudCAncmV0dXJuIEVSUl9QVFIoLUVOT0VOVCk7JyBvbiB0aGUgZmluYWwgbGluZSBv
ZiB0aGUNCj4gZnVuY3Rpb24gJ2h5cGZzX2dldF9lbnRyeV9yZWwoKScgaXMgdW5yZWFjaGFi
bGUgYmVjYXVzZSB0aGUgbG9naWMgd2l0aGluDQo+IHRoZSBpbmZpbml0ZSBsb29wICdmb3Ig
KDs7KScgcHJvdmlkZXMgYWxsIHBvc3NpYmxlIGV4aXQgcGF0aHMgZm9yIHRoZQ0KPiBmdW5j
dGlvbi4gU28gdGhlcmUgaXMgbm8gZXhlY3V0aW9uIHBhdGggdG8gZXhpdCB0aGUgbG9vcCBh
bmQgcmVhY2ggdGhlDQo+IGZpbmFsIHRoYXQgc3RhdGVtZW50Lg0KPiANCj4gVGhpcyB1bnJl
YWNoYWJsZSBjb2RlIHZpb2xhdGVzIE1JU1JBIEMgUnVsZSAyLjEgd2hpY2ggc3RhdGVzOiAi
QSBwcm9qZWN0DQo+IHNoYWxsIG5vdCBjb250YWluIHVucmVhY2hhYmxlIGNvZGUiLg0KPiAN
Cj4gVG8gZml4IHRoYXQgYW5kIHBvdGVudGlhbCBjb21waWxlcnMgImNvbnRyb2wgcmVhY2hl
cyBlbmQgb2Ygbm9uLXZvaWQNCj4gZnVuY3Rpb24iIHdhcm5pbmcsIG1hcmsgdGhlIGNvZGUg
cGF0aCBhcyB1bnJlYWNoYWJsZSB1c2luZyBtYWNybw0KPiAnQVNTRVJUX1VOUkVBQ0hBQkxF
KCknLg0KPiANCj4gU2lnbmVkLW9mZi1ieTogRG15dHJvIFByb2tvcGNodWsgPGRteXRyb19w
cm9rb3BjaHVrMUBlcGFtLmNvbT4NCg0KUmV2aWV3ZWQtYnk6IEp1ZXJnZW4gR3Jvc3MgPGpn
cm9zc0BzdXNlLmNvbT4NCg0KDQpKdWVyZ2VuDQo=
--------------lex6e05wcKSpgNlU70xRNhtN
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-----

--------------lex6e05wcKSpgNlU70xRNhtN--

--------------S92fFCUTK84VdaznDevhSF07--

--------------iM0GorC37dwJVTjsBlL1aZTN
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/Ey8FAmnxxAsFAwAAAAAACgkQsN6d1ii/Ey8d
PAf+M7ekPeE3nDwhIUq9f5ydO3R+4IAIS9yx2cqNqX54IujFR6kaM4KffEyaWMD/3ihlf/VGdkoo
PCODj5YZp6Yl0F3ddSxeOXK2/9wvuBE7h7MJs54n6gwhzwgzpDWr/wFj5WUF5GGP/lOXReoDJhsF
Y0mOSAIgO/C1kpz1yz6B4GIZpjp7BeJ5IUPiXYfPGRGXECc3WQdDFQBlIJH92KVVwglmJ3Esuj3Q
UXvybfqgNcKsmBBfm55KQf7Rgu9njOMoxFdEbUtxk+dg0iGtxT2GX2b92e/PaIHCIqsZ67hzu6Rd
uwPtptXiFmfF8fiBtZnglL5q911Awg98Q08PvTYaPg==
=4SLN
-----END PGP SIGNATURE-----

--------------iM0GorC37dwJVTjsBlL1aZTN--


From xen-devel-bounces@lists.xenproject.org Wed Apr 29 09:30:01 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 29 Apr 2026 09:30:01 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1297125.1573254 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wI1Eh-0004Z8-4b; Wed, 29 Apr 2026 09:29:39 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1297125.1573254; Wed, 29 Apr 2026 09: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 1wI1Eh-0004Z0-1u; Wed, 29 Apr 2026 09:29:39 +0000
Received: by outflank-mailman (input) for mailman id 1297125;
 Wed, 29 Apr 2026 09:29:38 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <roger.pau@citrix.com>) id 1wI1Eg-0004WF-DW
 for xen-devel@lists.xenproject.org; Wed, 29 Apr 2026 09:29:38 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wI1Ef-003E22-PI
 for xen-devel@lists.xenproject.org; Wed, 29 Apr 2026 11:29:37 +0200
Received: from [10.42.69.1] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <roger.pau@citrix.com>)
 id 69f1cf7b-2eae-0a2a0a5409dd-0a2a4501dafe-18
 for <xen-devel@lists.xenproject.org>; Wed, 29 Apr 2026 11:29:37 +0200
Received: from [52.101.193.4]
 (helo=CH1PR05CU001.outbound.protection.outlook.com)
 by tlsNG-d62444.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.1)
 (envelope-from <roger.pau@citrix.com>)
 id 69f1cf80-c1f2-0a2a45010019-3465c1048871-3
 for <xen-devel@lists.xenproject.org>; Wed, 29 Apr 2026 11:29:37 +0200
Received: from CH7PR03MB7860.namprd03.prod.outlook.com (2603:10b6:610:24e::14)
 by MW5PR03MB6929.namprd03.prod.outlook.com (2603:10b6:303:1c6::5)
 with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9846.26; Wed, 29 Apr
 2026 09:29:32 +0000
Received: from CH7PR03MB7860.namprd03.prod.outlook.com
 ([fe80::f5ba:35df:1c9f:b343]) by CH7PR03MB7860.namprd03.prod.outlook.com
 ([fe80::f5ba:35df:1c9f:b343%4]) with mapi id 15.20.9870.020; Wed, 29 Apr 2026
 09:29: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=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=Pp/Fq87Ej7pZmj9EhF9TwVsyz7IG/fUl9SoRMy/MF8QFekkIpoNAhiyIIhlT5xhxcsysbINip2AhYvMpDYRoGpUg3u530ZsDwKNssRsFSEiiXS8tVPTwvZ8xDXwbmtMhx9ktw+S1PXWQZTFslVh9x269XOEN3yaFG57tUa522JppMh58HTrkVkBaytEL8T/y5N7yH/aTuFFluH9J5tyZdl2+XmFr8DWmAK4TyW7T/f7xqGzXKH1W/QqyJAP3ZVw8EMPuBC7nVPg7wIARd5AX14i2jKmOyu5AwJyWgBHX1qR+LlnMuWlW1MmJiF36SeiTS4jv5BdV3v+O3WLxYAFovw==
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com;
 s=arcselector10001;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1;
 bh=MbB1E5VlT1DEVQMNTA5bsGnSuAnodCL0j0hXVGI5LAY=;
 b=g7px2A5qhcw400x57Z7BBdgYX6kOKF0gNyGJYpbFrIVZ+nvsQ+h5z8D9xYRp2dLAD46MPM84yEvkrNlYnTo49axIJuqd3kxJaZ9RKwFVSTkDTEc8t3yfnWJcNCUwEnzBSJ5elFRZMe0cXH8EEC700liXF+517Pm8rzVTReu6bfVaPKuAH9mSfVJIQA0CiGEg5nwNzXKsmxZS7R8TyLOCqAT5TnLoOUPwNGuEkoCs/gmMTjf41LmT6vLYxEb8+LJuM7L08OG024OHcTjtCrPrOjCC9Z0Hbwvtl/jSxG8+97761n8zulom+Fr5KihMeXnNkigRmZWtA6jVPB651NP7Tg==
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=MbB1E5VlT1DEVQMNTA5bsGnSuAnodCL0j0hXVGI5LAY=;
 b=KJ24xJqqWkLGDvnYhxK2UTr5W+B5J7Uz/U+4R7hJTcBvvajPxFS0z/EeCZCeX+c+YgvvehDdZVdrPyhSccK1M3v4Umg5K2AyV6qvvDwtph//zJCpBRzpLhjLmBeqHk4zL+1kC4IArFD8A/uM7jBSICnuDyRYSkTIZE8fGFZ4Y40=
Authentication-Results: dkim=none (message not signed)
 header.d=none;dmarc=none action=none header.from=citrix.com;
Date: Wed, 29 Apr 2026 11:29:27 +0200
From: Roger Pau =?utf-8?B?TW9ubsOp?= <roger.pau@citrix.com>
To: Thierry Escande <thierry.escande@vates.tech>
Cc: xen-devel@lists.xenproject.org, Jan Beulich <jbeulich@suse.com>,
	Andrew Cooper <andrew.cooper3@citrix.com>,
	Anthony PERARD <anthony.perard@vates.tech>,
	Alexey Gerasimenko <x1917x@gmail.com>
Subject: Re: [PATCH 11/17] hvmloader: allocate MMCONFIG area in the MMIO hole
Message-ID: <afHPdxc72FDGnQoq@macbook.local>
References: <20260313163455.790692-1-thierry.escande@vates.tech>
 <20260313163455.790692-12-thierry.escande@vates.tech>
Content-Type: text/plain; charset=utf-8
Content-Disposition: inline
In-Reply-To: <20260313163455.790692-12-thierry.escande@vates.tech>
X-ClientProxiedBy: MR1P264CA0164.FRAP264.PROD.OUTLOOK.COM
 (2603:10a6:501:55::15) To CH7PR03MB7860.namprd03.prod.outlook.com
 (2603:10b6:610:24e::14)
MIME-Version: 1.0
X-MS-PublicTrafficType: Email
X-MS-TrafficTypeDiagnostic: CH7PR03MB7860:EE_|MW5PR03MB6929:EE_
X-MS-Office365-Filtering-Correlation-Id: 70d3410e-ced2-4087-79cf-08dea5d1d19c
X-MS-Exchange-SenderADCheck: 1
X-MS-Exchange-AntiSpam-Relay: 0
X-Microsoft-Antispam:
	BCL:0;ARA:13230040|366016|1800799024|376014|56012099003|18002099003|22082099003;
X-Microsoft-Antispam-Message-Info:
	WyiMrbKV2b7kmriJgHinSaUfGyjEjvahq0T6wi6+9eSKfviHxycyzyrgsXW7kFjsiemGZSEH5kyabWwbh1YB+GYRqhvC6DhvcNxCJyO+WXFBxdG9aXgLATifWuV+/GGtGPdf7MuDCQzpR0s0HqHks9JgmqPjL0mDjTqI+jwoKIjxAhaVxbqkeiW2qZzNKFH0MYUHfX3m3GZF3IG0zk1+UudjwjrrFpNRs3xapllbbG6H+tjapGYhoETdVHmaFk11askkt1069Xuh+l/beXjttw9dYcoecIEP1OJmZrBAvgLu5Vx6x2pEXE2GDpVRA7ju9OAqIhFdr8UF7LEqRJtX8hP87nM9PPU8v3fUMVv24LKjbHcmCRZgsPAQX0Daqu9TjthdAc5g6Gb4cRK8xK6o65N3rFBT9CkqmjFOsH4KPlLa5nKqJwPIXqq/Xh2wdLTDHiWK39veiVqeUHb8An0hYq/cPaCSBMakbX5N62OyiCG/+rHCBJ2Rw9mjnAdM+Vacpv/a7IqNMCXraXBCZjwOlbN/43LmVGdtaX6igCdo1hCoUwr5A8yI4HwyN/A4b3MzhALXQ4UjHs06yGcU8jMrf7XA44E5vH11OfGt+FhwImbyygy0dH2pRlW4HaWk5SJxkpffZ9xd4dEBmpNP/2UdKFb2rAIwCu8+ZtvEmo5Cso4pPbFG2UPkPfmcUccSOkYhkWnIM/ruZnqg1krWzJlWrUbuQRB8zPLxJRYp/x4k+/8=
X-Forefront-Antispam-Report:
	CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:CH7PR03MB7860.namprd03.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(366016)(1800799024)(376014)(56012099003)(18002099003)(22082099003);DIR:OUT;SFP:1101;
X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1
X-MS-Exchange-AntiSpam-MessageData-0:
	=?utf-8?B?Qm02c1FabFBickVWN1NwMVM4SmNDVEYrdk45Y0tuUnBORFNGb3VMRUhYZXhz?=
 =?utf-8?B?OTFINTFUejVBOVE3Z0E5d2VsMERMTjE1VXphQTgxUVB0VWlCVWpnb2FtSVR2?=
 =?utf-8?B?bjlmZHpUVjh0ZGFua0ZQMlVBUXV6cWRhRlRkdmZ5ekFtemNsRGNIalNJWUx1?=
 =?utf-8?B?ZnQ3bi9vcS9ITTk3YitVS3ErTG8xeGRoN0hHTlhscjBxQnB4bkNvVDFsRmxF?=
 =?utf-8?B?Q3VXMzA3ZEdPUE50UXcrK2lKWlhITFM1ZmFSNG01bTNWVEVwWW11eU95K3hl?=
 =?utf-8?B?VWZpWEdMYlNWTWNESE5NRzM2M1BHZ3Uzb1UraU1pS3oydzRhZVlLd1ZzSnZw?=
 =?utf-8?B?dlVNMThCakkwYmFzNGdDNTM3RncxNTIyWndlWVFaN09wUDIzQWRRanlCT2pS?=
 =?utf-8?B?Z3lZaitxTW9Bcm5aTGh4YVo2Q3R6RnFaT1RSWUF1ZUNveHQzZkdUblY4bWZx?=
 =?utf-8?B?bG5OcGcwdVN6Ky9JOGJMb2ZUQzc3aW0yZ1VqWG5UQ0NnWjNHRTdhQ0hBeUxm?=
 =?utf-8?B?S3pxYUp6aHhvblM5SGRKa1RFeEcxdWY0dzBMRjBVSU1uVyttRjRCRzRDamdH?=
 =?utf-8?B?RXdLWkNHMzJRM3JxNWhJRDhHbjNISVZkTXB2NnhTM0JWWlRuNVZTT1BpS1dQ?=
 =?utf-8?B?bWZDTUxMM2xxMStHOHlkelVxdGRQTENBQ3IxY3F6c09NR2UvcHZ4Z012cE1l?=
 =?utf-8?B?N1VUV09XTjFENEhMT2RQUFJZdUF1WmRwZVE3N0plOXJ4NytFczVRVnpRWDlT?=
 =?utf-8?B?dm9RaXlmWWdhSUw5VTQzNXBtZHJlRW5FR2RQb2RBbHVqTjRSd1pZaCtRc2Vt?=
 =?utf-8?B?TWExSC9wdWtqMUtPcWdkdVg0dUZxR3NaNjh2UWtuTk9CbDg5bWo3RFdBKzFp?=
 =?utf-8?B?c29RZ01XQTcrK0ZhejRxQW5UWkxyOG8vMUJLVDJ0Qy9ZR3V1dStUVE45VEd5?=
 =?utf-8?B?dlBYQVNKU1pvbUFBT3hjSGtNZ0UvSWVtTXluU3NOWDYyQVVYV2szVFRjL3Fz?=
 =?utf-8?B?QXVwRE9qdW42NjFYem1JVWt1NCtId2twU295QkcvZnNJYTVJenlDTDE0dE8y?=
 =?utf-8?B?UGNQaUNWOHNjUWtWN1I5K2d4Ym8ySllycVhHYWdlSWp2azU1WHlFaE9RZ2Rz?=
 =?utf-8?B?elF6aFQ2Q1BnTDgwLzUzK0pXemhzZWNGdGtFckhWU0VQaGFFY2ZYZERINllY?=
 =?utf-8?B?QnZFL2VPWWM3NFZzYVpUY0wrS1kyK3dJemhPZitpRFVYSEU4QjIzaWo1VW5V?=
 =?utf-8?B?TUVaSXNGNlE0WDZ3MnB5WE5KeG4xdkdGWUQ4UEowcWNmRTdPWnZCU0hCOHdz?=
 =?utf-8?B?dWxQcS9PbkJ1VnFnSEY0eEhIbFpDckFINTVVcS9OelJYbFozZTJuRCs3WHhm?=
 =?utf-8?B?blQ2QjIvb2NhbU41ZkROaTVJaTBpQ0lTY3dFTFJlaTh0ZCtkYjNWazVQQ1lh?=
 =?utf-8?B?bHp4L3NCYm90Qzcyc1IrNW1LSTY5amxZU1dMOHhWdDU5VlNvUEVQWkgzZlgx?=
 =?utf-8?B?MHhwVVM5RC85RmJiY21KWlZVczN5ZUp5aWRlYjV5NEtabUpoT2FwRXF2NWlC?=
 =?utf-8?B?b3V6MUhod0RORWtlYlRPb0U5d05IOFZXQ0tzY2VDU2ZWUTBMUy9wZkdhL1Vt?=
 =?utf-8?B?bXRKL3RlUVk3NU9od0xWMGg1QzBCUGxqbWkrbWZ6Q0Vkdmx5Q3dXZ0ovNis2?=
 =?utf-8?B?U01jU3djWCtKRXk4b2VmQnVMU1ZMUlBwY3N6VUxkdlNwZkpPQWp6U3hqK09i?=
 =?utf-8?B?UW1ad1NXRkl5cGJzY1Brd3Fxak9PWkJiSTVkbWRJR0xoamkxL1F5VVJBRGdt?=
 =?utf-8?B?blJ1Z0ZxdHIrWU90WEFnWUlNZUdjWVZiaXZjVU5ZLzVvcXZSemg2a3IwbVRs?=
 =?utf-8?B?Unk3c3lyZGRXc0tPZ2p0amt5WlVjUm5XeCtYdHhtaWduUDF2SzRTWEdMTmda?=
 =?utf-8?B?OEg1bnJmUkxiOW5OMFNkbWM1Z0ErY3J3em1ZN2IrbUMzd2d4OWxWT0FOYXFz?=
 =?utf-8?B?eDhndGRtLzc4QXMrakJ2SDlnNUtCWjV1MXBHZUJpZzJlZEw1Sm1QQjRqeHgv?=
 =?utf-8?B?ZHpsaWk1anEzcWJZU1N4ZWNmYjI2WFQ0V013Z2pmL0o4OVRydEN2ODBwa2Zq?=
 =?utf-8?B?dkNwTXRsdWpOMmU1Y1R0K0IxTGdRMDBBVW5ycHhpdXFRSFJLQTlrRkFTVTgy?=
 =?utf-8?B?M09GV2tUd2tWTG5MZDd4UTQzTXdSZnFJaWVZbFgvWms0MlI0S3dEUVJyRm5n?=
 =?utf-8?B?WVkyd0NRc2E1dTF6NlhUL1R4M1VOUE9kQ05aSTRqcUlseXVtd21kWXVNekNk?=
 =?utf-8?B?N1pScEt2SExpVWpoUTlQbHNLNFYxOUdrcDhHS2c5VW5vcWNCL1FBQT09?=
X-OriginatorOrg: citrix.com
X-MS-Exchange-CrossTenant-Network-Message-Id: 70d3410e-ced2-4087-79cf-08dea5d1d19c
X-MS-Exchange-CrossTenant-AuthSource: CH7PR03MB7860.namprd03.prod.outlook.com
X-MS-Exchange-CrossTenant-AuthAs: Internal
X-MS-Exchange-CrossTenant-OriginalArrivalTime: 29 Apr 2026 09:29:31.9408
 (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: eJPowdq/2DaQJBOr/oZ7yTLrUloEo3BriGMjcbQDZXRjlohfsD+nQPP+oG97hDgOTSflAyk10AcxcE/pzQAbqQ==
X-MS-Exchange-Transport-CrossTenantHeadersStamped: MW5PR03MB6929
X-purgate-ID: tlsNG-d62444/1777454977-B6E63FF4-4337F7E2/0/0
X-purgate-type: clean
X-purgate-size: 5794

On Fri, Mar 13, 2026 at 04:35:04PM +0000, Thierry Escande wrote:
> The actual MMCONFIG size depends on the number of PCI buses available
> which should be covered by ECAM. Possible options are 64MB, 128MB and
> 256MB.

Are such values inherited from the real q35 impleemntation?

AFAICT the ACPI MCFG spec notes:

"The size of the memory mapped configuration region is indicated by
the start and end bus number fields in the Memory mapped Enhanced
configuration space base address allocation structure as shown in
Table 4-3. 0-255 is the range of allowed bus numbers supported for a
given PCI Segment Group."

So it's in principle possible to specify a MCFG that covers a single
bus, and then it would have a size of 256 * 4K = 1M.  Which avoids
wasting 63M of MMIO space in the low MMIO hole that's already fairly
tight on space.

Is this limitation possibly inherited from the way the ECAM region
position and size must be notified to the chipset?

And further seeing the code below - I found the answer myself, it's
because the chipset only supports negotiation those ECAM sizes.  We
could possibly expose a smaller region in MCFG, but doesn't seem like
a good move.

> As Xen is limited to the bus 0 currently, the lowest possible
> setting is used (64MB), defined via PCI_MAX_MCFG_BUSES in
> hvmloader/config.h. When multiple PCI buses support for Xen will be
> implemented, PCI_MAX_MCFG_BUSES may be replaced by a calculation of the
> number of buses according to PCI devices enumeration.
> 
> The MMCONFIG entry is inserted into bars array in the same manner like
> for any other BARs. In this case, the devfn field will point to MCH PCI
> device and bar_reg will contain PCIEXBAR register offset. It will be
> assigned a slot in the MMIO hole later in a very same way like for plain
> PCI BARs, with respect to its size and alignment. At this point, the
> actual base address and size of the ECAM space are passed to Xen using
> the HVMOP_set_ecam_space hypercall.
> 
> Signed-off-by: Alexey Gerasimenko <x1917x@gmail.com>
> Signed-off-by: Thierry Escande <thierry.escande@vates.tech>
> ---
>  tools/firmware/hvmloader/config.h   |  4 +++
>  tools/firmware/hvmloader/pci.c      | 55 +++++++++++++++++++++++++++++
>  tools/firmware/hvmloader/pci_regs.h |  7 ++++
>  3 files changed, 66 insertions(+)
> 
> diff --git a/tools/firmware/hvmloader/config.h b/tools/firmware/hvmloader/config.h
> index baaed91c7f..aa3158bca5 100644
> --- a/tools/firmware/hvmloader/config.h
> +++ b/tools/firmware/hvmloader/config.h
> @@ -55,6 +55,10 @@ extern uint32_t *cpu_to_apicid;
>  #define PCI_ISA_DEVFN       0x08    /* dev 1, fn 0 */
>  #define PCI_ISA_IRQ_MASK    0x0c20U /* ISA IRQs 5,10,11 are PCI connected */
>  #define PCI_ICH9_LPC_DEVFN  0xf8    /* dev 31, fn 0 */
> +#define PCI_MCH_DEVFN       0       /* bus 0, dev 0, func 0 */
> +
> +/* possible values are: 64, 128, 256 */
> +#define PCI_MAX_MCFG_BUSES  64
>  
>  #define ACPI_TIS_HDR_ADDRESS 0xFED40F00UL
>  
> diff --git a/tools/firmware/hvmloader/pci.c b/tools/firmware/hvmloader/pci.c
> index 6e6720adae..54c23ffdd8 100644
> --- a/tools/firmware/hvmloader/pci.c
> +++ b/tools/firmware/hvmloader/pci.c
> @@ -413,6 +413,58 @@ void pci_setup(void)
>          pci_devfn_decode_type[devfn] |= PCI_COMMAND_MASTER;
>      }
>  
> +    /*
> +     *  Calculate MMCONFIG area size and squeeze it into the bars array
> +     *  for assigning a slot in the MMIO hole
> +     */
> +    if ( is_running_on_q35 )
> +    {
> +        /* disable PCIEXBAR decoding for now */
> +        pci_writel(PCI_MCH_DEVFN, PCI_MCH_PCIEXBAR, 0);
> +        pci_writel(PCI_MCH_DEVFN, PCI_MCH_PCIEXBAR + 4, 0);
> +
> +        switch ( PCI_MAX_MCFG_BUSES )
> +        {
> +        case 64:
> +            bar_data = PCIEXBAR_64_BUSES | PCIEXBAR_ENABLE;
> +            bar_sz = MB(64);
> +            break;
> +
> +        case 128:
> +            bar_data = PCIEXBAR_128_BUSES | PCIEXBAR_ENABLE;
> +            bar_sz = MB(128);
> +            break;
> +
> +        case 256:
> +            bar_data = PCIEXBAR_256_BUSES | PCIEXBAR_ENABLE;
> +            bar_sz = MB(256);
> +            break;
> +
> +        default:
> +            /* unsupported number of buses specified */
> +            BUG();
> +        }
> +
> +        addr_mask = ~(bar_sz - 1);
> +
> +        for ( i = 0; i < nr_bars; i++ )
> +            if ( bars[i].bar_sz < bar_sz )
> +                break;
> +
> +        if ( i != nr_bars )
> +            memmove(&bars[i+1], &bars[i], (nr_bars-i) * sizeof(*bars));
> +
> +        bars[i].is_mem    = 1;
> +        bars[i].devfn     = PCI_MCH_DEVFN;
> +        bars[i].bar_reg   = PCI_MCH_PCIEXBAR;
> +        bars[i].bar_sz    = bar_sz;
> +        bars[i].addr_mask = addr_mask;
> +        bars[i].bar_data  = bar_data;
> +
> +        mmio_total += bar_sz;
> +        nr_bars++;
> +    }

I think it might be best if the ECAM fake BAR is the first element in
the bars array, so we ensure it's the first item to consume memory
from the low MMIO hole.  Not sure how that will work with the current
sorting of the resources based on their size, but it's imperative for
hvmloader to attempt to position ECAM ahead of the other device
resources IMO.

> +
>      if ( mmio_hole_size )
>      {
>          uint64_t max_ram_below_4g = GB(4) - mmio_hole_size;
> @@ -592,6 +644,9 @@ void pci_setup(void)
>              }
>          }
>  
> +        if ( bar_reg == PCI_MCH_PCIEXBAR )
> +            hvm_set_ecam_space(base, bar_sz);

As noted in a previous patch, it would be better if it's QEMU (as part
of handling the PCI_MCH_PCIEXBAR writes) that notifies Xen of the ECAM
window placement.

Thanks, Roger.


From xen-devel-bounces@lists.xenproject.org Wed Apr 29 09:45:15 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 29 Apr 2026 09:45:15 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1297141.1573263 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wI1TR-0007V9-FB; Wed, 29 Apr 2026 09:44:53 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1297141.1573263; Wed, 29 Apr 2026 09:44: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 1wI1TR-0007V2-Bb; Wed, 29 Apr 2026 09:44:53 +0000
Received: by outflank-mailman (input) for mailman id 1297141;
 Wed, 29 Apr 2026 09:44:52 +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 1wI1TQ-0007Uw-FS
 for xen-devel@lists.xenproject.org; Wed, 29 Apr 2026 09:44:52 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wI1TP-003HfG-RM
 for xen-devel@lists.xenproject.org; Wed, 29 Apr 2026 11:44:51 +0200
Received: from [10.42.69.12] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <andrew.cooper@citrix.com>)
 id 69f1d30b-bab6-0a2a0a5309dd-0a2a450cece8-28
 for <xen-devel@lists.xenproject.org>; Wed, 29 Apr 2026 11:44:51 +0200
Received: from [40.93.194.16]
 (helo=SN4PR0501CU005.outbound.protection.outlook.com)
 by tlsNG-d25034.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.1)
 (envelope-from <andrew.cooper@citrix.com>)
 id 69f1d312-62f1-0a2a450c0019-285dc210f562-3
 for <xen-devel@lists.xenproject.org>; Wed, 29 Apr 2026 11:44:51 +0200
Received: from CH8PR03MB8275.namprd03.prod.outlook.com (2603:10b6:610:2b9::7)
 by CH0PR03MB6051.namprd03.prod.outlook.com (2603:10b6:610:be::22)
 with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9846.26; Wed, 29 Apr
 2026 09:44:46 +0000
Received: from CH8PR03MB8275.namprd03.prod.outlook.com
 ([fe80::a70d:dc32:bba8:ce37]) by CH8PR03MB8275.namprd03.prod.outlook.com
 ([fe80::a70d:dc32:bba8:ce37%6]) with mapi id 15.20.9870.016; Wed, 29 Apr 2026
 09:44: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=XjqDQdj786uf4ljS6fwBfeDa1ufSV5+WMq/xNP4nl4sfKuqduzmK1A9XMgzrkwcG8EsXnaEiDZR45mPc599R1rKZmd6WWZi/dNbFjXmiDaE8uUSUjRe89XkIJx4buE8kzVm622oiFfAqefdHQzgeOLq4rLYbBUHPUETxp7ZPnHqLKROM9JMsy2HgTJcRBCM6I8k3SJcO55Qm5n4cNIipzFXNl0GC8bRWuPsWPVWRmm6+TqrpK0jA/3p0yyY5a2gXRl3+Hm10UOFjZqdB+QtNYdoKKMCMJONxjMO1VZh6gcoyXfBWhpxO9/xvdkrj9ZPqCPGcuMGddsKO8MwopLYleg==
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com;
 s=arcselector10001;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1;
 bh=xDrjzvHENgjv6tY2bk3wyyInznLfdCDLuXzvkVtwOCs=;
 b=bQ8VDbBorbRZ3v4k6Pera0iy1wE/PudLmSP3cobJM2dKZLVyZex+YVzMAkDZhg47qgSfLxVVxTMu4ExRQyyYyiwkEjaj3Oxlm/Zw/2/oejF/Tw3oq8bg/Ut0Ygy75ihc0+n6tSZpPHQ4UyHh1mTilWG4DRBUcvikBOZfTR5jJb53DQnFcT15YGjB+6hGG8oR8YzivVP7/GuMLXXceeoC/Eaq5wZMqi0gwXzoiYGLHNhbBrA/VwqPXsNH6rskNLAAV63ndoQFQUJ4J7za39l+CSW9NpSoBXlQxoTyUUSW/Em+q7/2kTi7pzUTfv8qKWTLfgteF0MQIpnsC87e9xJ7dQ==
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=xDrjzvHENgjv6tY2bk3wyyInznLfdCDLuXzvkVtwOCs=;
 b=NrhyIboAHp/2QVHuM6rDxaZ7xqguPiutuXQ3bL8+tDAGmIXo6rXJYXhtChbpzGyQRvicPIabf6uPsvglM+O5xP8xvJ9ccj5/mLHCxuo7wJTJeX+sbvTclhuw9yLzlB48d9i/+n6BIhuqMoO6wPiFl6kNtlgFPUhvZvZBRXh+liM=
Authentication-Results: dkim=none (message not signed)
 header.d=none;dmarc=none action=none header.from=citrix.com;
Message-ID: <83b1e26a-cd17-4f64-ae82-dbf56f95b4ad@citrix.com>
Date: Wed, 29 Apr 2026 10:44:43 +0100
User-Agent: Mozilla Thunderbird
Cc: Andrew Cooper <andrew.cooper3@citrix.com>, Juergen Gross <jgross@suse.com>
Subject: Re: [PATCH v2] hypfs: add ASSERT_UNREACHABLE() in
 hypfs_get_entry_rel()
To: Dmytro Prokopchuk1 <dmytro_prokopchuk1@epam.com>,
 "xen-devel@lists.xenproject.org" <xen-devel@lists.xenproject.org>
References: <6db49190e85a30c0129f251ce718d50923baba8d.1777387070.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: <6db49190e85a30c0129f251ce718d50923baba8d.1777387070.git.dmytro_prokopchuk1@epam.com>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
X-ClientProxiedBy: LO4P123CA0401.GBRP123.PROD.OUTLOOK.COM
 (2603:10a6:600:189::10) To CH8PR03MB8275.namprd03.prod.outlook.com
 (2603:10b6:610:2b9::7)
MIME-Version: 1.0
X-MS-PublicTrafficType: Email
X-MS-TrafficTypeDiagnostic: CH8PR03MB8275:EE_|CH0PR03MB6051:EE_
X-MS-Office365-Filtering-Correlation-Id: ef6d7f96-86e7-48b6-53bc-08dea5d3f2da
X-MS-Exchange-SenderADCheck: 1
X-MS-Exchange-AntiSpam-Relay: 0
X-Microsoft-Antispam:
	BCL:0;ARA:13230040|376014|366016|1800799024|22082099003|18002099003|56012099003;
X-Microsoft-Antispam-Message-Info:
	M7x4SrhVxtyu3ULsbmR2AQY+DUcoGk3ou9Zl66STeRGufTvIgsw95lNy+FVnQGcQ4TmjlTKWzTOWwnMqVQ7z4u4Ed3jmarENDWv8IV80/m+Z8gd13MMy3bC3zLwXoRoqo8cxvhXgk4Qh1OU+WDUAhJ5i47Cp0HUJVGevvGoYDWuKc4Tu/2wdRFouQgCHzVL6sIG4rM6bAdwLIF7VM1XWumQZ4XwnSPnUkvCMR7nET9QbSgx+5KE+lFfpFzm/JkBtktRK/QRNm12cecyf0ONQ9uIZuWCrUhSnrU9CDJeSTeSCc0MZ34ermHS7rw3RkDJAgpGe5AobkKNk7CFNLxevcsXGZj/7Fjb5lClfLzTpDXsL0PIaMzViRfGR9RoAv78IlHuke51yVg4c1UH6E54Ski5YtttNmhufBTQs9cI/8AKDps8NyW0AM3BxmrmuNh9+aClZXEKwynPOyiPQKbJdUHiKyc7y3CRSsxuBbOJU1i9pcGwFNjIoexdaefm+3NFIO+g8emFP0Vtiy+SOoU46OW+Qz3F6bVqKcF2no6TPlydkohzMiPFo/gejpA/s27UePHLOXNyWCgObUKCVj8b+V7ykWWeWPlgnN8lGnT1N9FeWg24dME4rRmjqgEqIf2JZCFLth7rV/7Tgo7mDIHUKm82iTncPme8Ptc8TFLM1nOrKwKBVioQyJpvAruZ3NC0U
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)(22082099003)(18002099003)(56012099003);DIR:OUT;SFP:1101;
X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1
X-MS-Exchange-AntiSpam-MessageData-0:
	=?utf-8?B?SnVCK2FjVXZTUFpVbDdoNXJpbG50cTg2QkpXeTNjUFBndkQyZTRXblc4bS8r?=
 =?utf-8?B?RUNZUDhDemZLT0lzS3FtWnBwZFpzdEhKSGcvYnpyS2F3NUhLR2pIZzkrS1ly?=
 =?utf-8?B?ZE0yRFZqcGUwdDBaV2VRRWZJSzBWTTlmdVRBZTFQbXZ6Q1ZBeU9veEFIRE5G?=
 =?utf-8?B?ZmJaZ01IdUUxdVIxRnFzNjUyRVp5Q2ZJeVV2N3psbEZuZklwUUNnMVEwV2J5?=
 =?utf-8?B?UFNsakgzaENNNWhkeTFlTEw5c0dOUDh2bzk5MFc5cTBQUVJvWml6aUwyYTh6?=
 =?utf-8?B?ZW5BeWM0OG5yR0hPUU9XdXRFa1RVeUd1cmUvZDlOeWkyRXZLa0tNTjN5MTNx?=
 =?utf-8?B?ZnlQRXl3UW9JTVp6d3lUQnNsMExUNFQrcUYxemhBU3hBUjlpb3NYV3hEZzRQ?=
 =?utf-8?B?YlBKUlNaNXJzOXBWR0QzaldETERUdktFbEc1eDl2UCtSclRlSTF1NEJFc0U2?=
 =?utf-8?B?a2hmVzdOZnUvSWRVUEkxRjZkbjVjaGI1Rkt1bnorY0lrVlA0SEIzV3RCKy9i?=
 =?utf-8?B?c0g5cDhHYVFxeVVkTzQ2bGREc2JpMTQvNURDNllkWk8vUC9QOWpsbFZmZTZO?=
 =?utf-8?B?OWZCNHdlQjdXWVlWUmV0d1h5M1hoRkFmR003dG9udlcxSXJqSDFnVldrZWZD?=
 =?utf-8?B?VTZWOUE1b2JNWFZrZFhUQVJUak5HeDNQV0x2RlFhamJPTWJ1UFRoaGRscUpq?=
 =?utf-8?B?SmRobHEwOVc4OW9aQk5WOVVPdFpCOVdKMlhsVG5WYUJQMmR4NGw3VHVuT1NO?=
 =?utf-8?B?NmE2MEJmVVJvcmI1Ym5kTzhheC9Iemx1eDZTS1Zvei9FdlVYeTRSN2RBOWtU?=
 =?utf-8?B?MTZ0RVRhY1JaZGsydmFrNm5OWTdwbVlrUGR4TlByclQ1eUphL29pcmYvRktQ?=
 =?utf-8?B?ZHA0Qm1UQ3FXbzQzZEpUZkVKWUk0WGIxTUUwOStvWWZLSEI4ejlKSFg5ZURm?=
 =?utf-8?B?MG5qaE1HZmI3RFREdFBKdHQ3dEkrcDd5dFVZbjZVZ0RUazJyU2l1NXJsTU5V?=
 =?utf-8?B?eklJbmYzeTlMLzJmN050T3VGVmtUbVkrYlVyQUZMYXVvZXhNdDV1T0h4UFhl?=
 =?utf-8?B?a2Q0UFhubkdFMHlJTjFlcWV3VDhITllRQldrc2t0b0xiNUp1eHFCbWQ2aUE2?=
 =?utf-8?B?dlcrcXNaSlhrMUYxSXRkcWtseVNhK2R5eFNqTXJxWlliVTRiZWJORWpnWmQz?=
 =?utf-8?B?NXNsN3lnTHJRTlp4c2htblR0azB2S1NpcEdKcEEvaitESk10RkZlMlQrUGts?=
 =?utf-8?B?ZWlnOXA5NHRQRU1WK1ludGNYTDdxWGlDUUJFM20yd1p1MzAvcHFnUG1MWFRh?=
 =?utf-8?B?SVFIL0QvdmF3bnFwb0VzdDA1Ti9uNDN6bUg0V2l3SDdFalRVS0ptSFFab29m?=
 =?utf-8?B?ZmEwbFhSTHdMV1VGYjQxNFZENmVtOElkUTQ0WTN3MVlWeW5ZemExc05rMnFK?=
 =?utf-8?B?VUhGbUo5QllORjNibFovc05YYWxOUFdWZXRnUHZUenFLOTJVeThxQ29WU3hX?=
 =?utf-8?B?QlF1V1BqSkxIbDh4cElBMFNuZDlkUWhaVzE3aUxjTVVjZnZwNGV2bHFHb0lN?=
 =?utf-8?B?bER1NVFEMTFQR3BiTHN1YXB2d3Frdms2YXhPbjNnektOdTViM3RpQ0Rxdmd1?=
 =?utf-8?B?eGI5YWkyUVgzdnFwTTVMaEcxWkZsN3dmcDN6Y01aWExxQUp3QSsyL0tRbExV?=
 =?utf-8?B?cFQ1eGhqV2owZlVTWUxVYktGRkZpZjVpZXh4OGhod05HQm8yekhURGd2Qzhy?=
 =?utf-8?B?RnZiOGNoMTV2RTZFaEJ1ZEpHQktab1c3d2FwUHpJamFEOFBmMVlRcnlqZnNE?=
 =?utf-8?B?Y3N6dTVvRG5KTlllc3VKY0lCemg3cUtQNzg3dGdyQW9uOWFnZXUzZnJ0S0N3?=
 =?utf-8?B?WEdWNjEzZXVEWTA2dUVRT25uZk5OeE52ektDelljblhWVVIyNFhXSHJnVUox?=
 =?utf-8?B?RVNMYXFsSnJCbjlBQnFjZENCek04VkFZemlDZDNwOHh1L00vZ0MrNWRib01x?=
 =?utf-8?B?eTBGTDFFLzVFblNiNERham9OZ1ozT202V1orWkhISWxFVGQwRlY0MlozZitx?=
 =?utf-8?B?MmpQQVlXMm0zSCttQThaU0FnOENnSXhPOUZUeGxPTlBWSS95TVUvd0ErWk9t?=
 =?utf-8?B?UzEwYUZoMERDV09zcVNzeU9rMkhsOWRJcmJ6OTBWV2p6bm5PcmdUbjJ6dll0?=
 =?utf-8?B?QnBaUkF1Nm83ZmpwMnJqNlZLcUs2SWNveSs2OXpteHJyY05MRXVUd1hYdTF0?=
 =?utf-8?B?T2x6ODlrUnFHRCtwN1B1WHBPY2NuMXNjamJnYTNrc3FNRlpuQXV0c1kxZHlK?=
 =?utf-8?B?aWdGY2o0QVh6Tmc1Tjl5T0FuOUxNV1o0WXUxVlNZeStJc2tHaFB0VzhDVmNU?=
 =?utf-8?Q?pCqKvOH5UQT3wtg4=3D?=
X-OriginatorOrg: citrix.com
X-MS-Exchange-CrossTenant-Network-Message-Id: ef6d7f96-86e7-48b6-53bc-08dea5d3f2da
X-MS-Exchange-CrossTenant-AuthSource: CH8PR03MB8275.namprd03.prod.outlook.com
X-MS-Exchange-CrossTenant-AuthAs: Internal
X-MS-Exchange-CrossTenant-OriginalArrivalTime: 29 Apr 2026 09:44:46.5112
 (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: 2914yaChkrASGB36LXrdaJukstReqCsoYfa7A/Q9TR5elvFSilbvEkKX33cDivLYCMDxl4eTORQs3KlZgHHH8OisOdwdzOlMcih/3yz1gfE=
X-MS-Exchange-Transport-CrossTenantHeadersStamped: CH0PR03MB6051
X-purgate-ID: tlsNG-d25034/1777455891-6C159CF5-9A201A4C/0/0
X-purgate-type: clean
X-purgate-size: 1660

On 28/04/2026 7:19 pm, Dmytro Prokopchuk1 wrote:
> The statement 'return ERR_PTR(-ENOENT);' on the final line of the
> function 'hypfs_get_entry_rel()' is unreachable because the logic within
> the infinite loop 'for (;;)' provides all possible exit paths for the
> function. So there is no execution path to exit the loop and reach the
> final that statement.
>
> This unreachable code violates MISRA C Rule 2.1 which states: "A project
> shall not contain unreachable code".
>
> To fix that and potential compilers "control reaches end of non-void
> function" warning, mark the code path as unreachable using macro
> 'ASSERT_UNREACHABLE()'.
>
> Signed-off-by: Dmytro Prokopchuk <dmytro_prokopchuk1@epam.com>
> ---
> Changes in v2:
> - add ASSERT_UNREACHABLE() before the final return statement instead of removing it
> Test CI pipeline:
> https://gitlab.com/xen-project/people/dimaprkp4k/xen/-/pipelines/2485661910
> Link to v1:
> https://patchew.org/Xen/341811ced2943fb79d0235c27781c564c7bdaf02.1775749146.git.dmytro._5Fprokopchuk1@epam.com/
> ---
>  xen/common/hypfs.c | 1 +
>  1 file changed, 1 insertion(+)
>
> diff --git a/xen/common/hypfs.c b/xen/common/hypfs.c
> index cdf4ee0171..02fb234568 100644
> --- a/xen/common/hypfs.c
> +++ b/xen/common/hypfs.c
> @@ -348,6 +348,7 @@ static struct hypfs_entry *hypfs_get_entry_rel(struct hypfs_entry_dir *dir,
>          dir = container_of(entry, struct hypfs_entry_dir, e);
>      }
>  
> +    ASSERT_UNREACHABLE();
>      return ERR_PTR(-ENOENT);
>  }
>  

No.  This is absurd.

Not to mention that you are *definitely* not fixing the stated MISRA rule.

~Andrew


From xen-devel-bounces@lists.xenproject.org Wed Apr 29 10:02:51 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 29 Apr 2026 10:02:51 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1297150.1573273 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wI1kX-0002L4-VD; Wed, 29 Apr 2026 10:02:33 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1297150.1573273; Wed, 29 Apr 2026 10:02: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 1wI1kX-0002Kx-Pi; Wed, 29 Apr 2026 10:02:33 +0000
Received: by outflank-mailman (input) for mailman id 1297150;
 Wed, 29 Apr 2026 10:02:32 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <roger.pau@citrix.com>) id 1wI1k6-0002Iw-Bg
 for xen-devel@lists.xenproject.org; Wed, 29 Apr 2026 10:02:32 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wI1k3-0087cs-Mt
 for xen-devel@lists.xenproject.org; Wed, 29 Apr 2026 12:02:03 +0200
Received: from [10.42.69.1] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <roger.pau@citrix.com>)
 id 69f1d715-5cb7-0a2a0a5109dd-0a2a45018eca-34
 for <xen-devel@lists.xenproject.org>; Wed, 29 Apr 2026 12:02:03 +0200
Received: from [52.101.85.0]
 (helo=BYAPR05CU005.outbound.protection.outlook.com)
 by tlsNG-d62444.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.1)
 (envelope-from <roger.pau@citrix.com>)
 id 69f1d719-c1f2-0a2a45010019-346555003c1f-3
 for <xen-devel@lists.xenproject.org>; Wed, 29 Apr 2026 12:02:02 +0200
Received: from CH7PR03MB7860.namprd03.prod.outlook.com (2603:10b6:610:24e::14)
 by SA3PR03MB7320.namprd03.prod.outlook.com (2603:10b6:806:37f::13)
 with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9846.26; Wed, 29 Apr
 2026 10:01:58 +0000
Received: from CH7PR03MB7860.namprd03.prod.outlook.com
 ([fe80::f5ba:35df:1c9f:b343]) by CH7PR03MB7860.namprd03.prod.outlook.com
 ([fe80::f5ba:35df:1c9f:b343%4]) with mapi id 15.20.9870.020; Wed, 29 Apr 2026
 10:01: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=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=PUDdkKlLieAm5KJpWFYYwGss3tD2EmAUDRSuRUpcPoEnB05nhfBMPwjL28EttfiPHDHEiehsFGCDYPNOgcnmaXoye52jR2BMShXY1MYluPBxg/KIsB/b/gkok9meqcfKvSI6qkiPofKjnzdCY2cRAoHNbj0vj3/9+3PYJ3u8nHTbhVQBLiYZhp6NcmGsCsPIYIMXMpUCYu2pp7Am8fBW4yf3LjOFTO7sfexjODVH5lxvHCmRB28qsIB9ndqUqpSPWR0ho9a7wbsGVnl2pOtHWB69yyUZqJGxpoHqYvptXVdyHRTJi2kR7dr9L9KZwAFdEI/45RgBFGApFnE3POLj/w==
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com;
 s=arcselector10001;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1;
 bh=jNDlKA8uK6DK0hTBLiZbkRe1rnCR4y5/fnlXmF2cGdo=;
 b=GdlHwFwfjalZ9R/lBDmXQYwj/7OBEYrpcRsZXyzgjxrKNYvBlM4abIThcc9/C2vrJIb6RRK8BIlgfsGXKzErRygOzTWwlZAaP+FUfaQTHATib85yznfg6AOSesvpZ4lrTAqQ/3QO8jjNML0NcPx3EwxZN8b1cJUxUb3z/fqWdf2IeZKe+q1RZFSlLwtdBl8djMv37c0LRaVL+NoFhbsjRlhFu+c4v6pc9FLZopj/Qv8l/5zAr+Pvx9f4iJLfwNwtssbvQAunQXIR/25uSj14nirMKuPsfBZIZ+gQ/Pcib2v3QDJJu57HToV1QM2fmhTpjB4fhNJFFFxBAPJFb6jNOQ==
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=jNDlKA8uK6DK0hTBLiZbkRe1rnCR4y5/fnlXmF2cGdo=;
 b=FKjKuFj6lf2QKHArsOxEQDJ7LPx14mw973CzE+0tcwgnzuDf6yD/ivRdR77eDSFDnV96XRkHXeUuU6rUXprj0xXzhCxPqpSuBgTmvvmjuP5Lv3J5/sEb8NYKRkSKg50zcToiBlCVGMYJqNjw0J9jpW9OQ70tkWwJCXq/VGSLFG0=
Authentication-Results: dkim=none (message not signed)
 header.d=none;dmarc=none action=none header.from=citrix.com;
Date: Wed, 29 Apr 2026 12:01:54 +0200
From: Roger Pau =?utf-8?B?TW9ubsOp?= <roger.pau@citrix.com>
To: Thierry Escande <thierry.escande@vates.tech>
Cc: xen-devel@lists.xenproject.org,
	Anthony PERARD <anthony.perard@vates.tech>,
	Juergen Gross <jgross@suse.com>,
	Alexey Gerasimenko <x1917x@gmail.com>
Subject: Re: [PATCH 12/17] libxl: Q35 support (new option
 device_model_machine)
Message-ID: <afHXEvXrGQhrU0c_@macbook.local>
References: <20260313163455.790692-1-thierry.escande@vates.tech>
 <20260313163455.790692-13-thierry.escande@vates.tech>
Content-Type: text/plain; charset=utf-8
Content-Disposition: inline
In-Reply-To: <20260313163455.790692-13-thierry.escande@vates.tech>
X-ClientProxiedBy: MR1P264CA0056.FRAP264.PROD.OUTLOOK.COM
 (2603:10a6:501:3e::20) To CH7PR03MB7860.namprd03.prod.outlook.com
 (2603:10b6:610:24e::14)
MIME-Version: 1.0
X-MS-PublicTrafficType: Email
X-MS-TrafficTypeDiagnostic: CH7PR03MB7860:EE_|SA3PR03MB7320:EE_
X-MS-Office365-Filtering-Correlation-Id: c5b37e8b-6c5f-40a3-7864-08dea5d659d8
X-MS-Exchange-SenderADCheck: 1
X-MS-Exchange-AntiSpam-Relay: 0
X-Microsoft-Antispam:
	BCL:0;ARA:13230040|376014|1800799024|366016|18002099003|22082099003|56012099003;
X-Microsoft-Antispam-Message-Info:
	G08bJibGpfK5KIwa12+VVtleyXiWWlrfOc8u6iwxjQZVdaK3t0JbwQEZVw6N6DiiTFKrHdRGjQU0uHGLWOGzciz6oKx6JrKNdVMx8K3WgIXOdQ6YX6A96Z2DjoiipxguvxFg4R2WdMrY+unijFJjeuq3wO895w87lpil5yS8TrLa6QQ2Fsf1n4B7MCUubTmkPvyxCgQv2/9v/8Eu7K/pmrOD2N9y6ChyXDJxY4uH9ebFB5ALxp/CoDlVc/YllABwGH+TDzcE/r6125Gm6HQImhKShY0N9/t7SZiwXDYnJrG8CQ48cMAQY63RFS6x80nim9dGMG9T7sDB+Mv77Q2GSn0JoK5bDePG0ZZ8ypoiQoHGLeMUHKYY+GYKLON5iOZylYaIb3AX2OydCilmv4mD8qDImdBPyryjCb9e64Azr6X0Y4+8rcdp5oLohtqfeMtPZifbEGmTek5hvo0bfnru4W9lRbS+ACk7SnBgLCDbkg0UobDVdFPgRsovAfbbvoIcBkx640GNzNtal5jL/jl+LUx6Sa74SIOHw9yus55MeaxsHsuq8yIScH0BtIy49C3PG0Q1Wohf1ZypvKFvuv/KbKjMojR0Bu4c3ZXqPb0PoOqoj2drSfCT5Qvuz5t8f8fzdJUEal5x/2GGIYvarqP+GGiTX7X7Gsup7P4tQneTBmgXZNtu1vUbG6D6rvKR2W5wMCRsnpcgiubQlCCgHaxQIas8RM07pUblmOOkK9S6TlI=
X-Forefront-Antispam-Report:
	CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:CH7PR03MB7860.namprd03.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(376014)(1800799024)(366016)(18002099003)(22082099003)(56012099003);DIR:OUT;SFP:1101;
X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1
X-MS-Exchange-AntiSpam-MessageData-0:
	=?utf-8?B?dlMwMitqZ3dDMUlxUWJkTHZJZDVyYlMxVHd5YlpjcCtzN3VQRFhRbWNML0li?=
 =?utf-8?B?YklCeFdFQXp2UENoOHJBRTdISFVqcCswUnVTMGlPcElXaU56LzJ1QzRSY2Zm?=
 =?utf-8?B?YWdlSzNoZUpmbklicFgxNnRxWCs0NjREeWlIaEdBY2pSRHBiRDlVWG9QazNw?=
 =?utf-8?B?SzFWVlV0TktJdWEvL215UkRrN0JTeVNXYjREMVJWTFhrTjlPb3lXMzYwdHhE?=
 =?utf-8?B?bEI4ZmRrUkw0dWdHbndFdjRoNWNhZ2RoTlpIaXFMbzFHY1AvZEw0MkRyR1Vv?=
 =?utf-8?B?eGxiMXRjZUNmd21WRzFvVHcvN0JiMVg3OXhqUzlQK1lmOXN1eEhMZ3BoYU9o?=
 =?utf-8?B?VVU2b3BpNldrMmUvRit1djk3bUFxcldHQVIrWlFib1BwVjJjZG1CRitZUE9n?=
 =?utf-8?B?MkVKMDNSVlBaQnRiWDZNTkhncmYrVTFZbDV4dXQvS3pmMmhuTUl3WVozYTlr?=
 =?utf-8?B?MEs5aC9FcVlWUmEvOUVFL0lCbVN4MGZSYWt0RjdoT1VoV0MxTDZFbkp4dGtH?=
 =?utf-8?B?L1RNSnIyWWFHOVJZQWhZcjM1WWZPUkV4WWNJcy85aUJCbnQ1dTRWVk9jWVQv?=
 =?utf-8?B?WDU3SFdmY1JYNlNCWm9hNWFxYUVvS2ZaYjdrVjJtS0hHMnlJSnpmUjBXNjVB?=
 =?utf-8?B?eDVvNXIvNzRNTjdCMzhoNXIwK1NKS0ljQ2hMbjR1NWV4eG5MS2xseG9lOEIy?=
 =?utf-8?B?dm5UZzRybWJoS1pYNnI0Q3gvOS8yK3pHUUpiRTZ3V3g5NnpqN2RpQVFGUkRV?=
 =?utf-8?B?a2hZY2NVVXVVSjhEdEF3Rm42cFkyRG8zL0RTa1daTlhFRVlialFZMncxNXBu?=
 =?utf-8?B?NTRpUUEvcnlIMCtUNnRITFhQN29meU5nK0xxNHFjSk1qOWhKOUk1b2c2dDJr?=
 =?utf-8?B?R21aS3RCeFhicDF3dVBWOHV4MENaejc4aWZkcmtBT1VuVDBDMmZDaUUwTllx?=
 =?utf-8?B?VE9ZUWVBak5WM3gwZXJYSHVTQ0hQNmVLZiszM1Fid3p5b3lBNHhFSmJzejlk?=
 =?utf-8?B?NDZzd2c5cVdwNHV5WVVUM0RmQ24rMTFQcGpQajZZendOajczUzU3NHNWYmFt?=
 =?utf-8?B?aWhLR0pSWHp6dlZ6MnJzdjB0TlQvdGlkYjh1anJNaFVQYUoxbjZJOHIyeDZH?=
 =?utf-8?B?bVlhZjhqYUlSaE0vN2F0OE1mRnhpNSsrUFFGaStxT1BYdk01Rzc4TFlMU2M5?=
 =?utf-8?B?bXk1SG1Fck0wSTV0dmVVWEpLZk45MUNNMHFWL25GVng3YUNhQXRhVUoxemdM?=
 =?utf-8?B?RDlTZWM4dVFUeWNvL05GNjJlbzdHUStNUUh6MkRHUEF3d05QcVlESy9yZWYx?=
 =?utf-8?B?NTRYWFhsdzNiRGU5TDRHYm8zZTBKYXh6N2V0Q1NhRmNaaXRydi9hcS9KbC9p?=
 =?utf-8?B?UlY2ekhQTmQrSkRQci9VUFpMU1cyTG9rMVJRSDdSMFQ5QmZXdzRZMitmUGhS?=
 =?utf-8?B?UWpPcVRpeDZKMHNON1E2Y3BtWTFQcno5Sis5UUM0WXJ5RHpjeTNQZUY1WERU?=
 =?utf-8?B?aFAyWmNzUTQzSFliKzBZV0JUNGtPbFdpZElaaFVtbEdQVjRtN0YvMHhHQy92?=
 =?utf-8?B?ZXRCTmpTMlo4UGI0ZnVwOGJOU2J4SWVqK2k5ZUpndFZKTHl2Z3ZtSlUzQlR0?=
 =?utf-8?B?ekRZMUJVTXZZd3FVbWorWjN2OWlmYjNSUmdkalByWmd3TTlCTndyWVFmWVNV?=
 =?utf-8?B?UVc1dkRla0NzY2lkTEh6b0ZEdEdvTDNBMG1HL0JXdmNHK3FxcUhUTUE5N2My?=
 =?utf-8?B?ZkxwNStFeEN3d0o5MngyMmFFRm1JVkx5eVMyMVRTb0pyWk9ETnBTRG85ZGNC?=
 =?utf-8?B?V0dRU094Tm9sc0d4blNWZUVYUTlyemJRRVM3djhIN2pVRzJQelQvR011NS9k?=
 =?utf-8?B?N0hRaWU2ekRNZnJPM3hkeXhoREhQM0l1dHNuNC81MEEwbWJjUG1KU2hwNVhO?=
 =?utf-8?B?T3YzVG9VVCswVTFNSmdkNW94bStVWUpEbERRVFJlZmN1RG1xM1grNWorSkho?=
 =?utf-8?B?bExoSXVjSlNScFpacnJMQWY2RXBCZ0ROYkd2R1d6NHJEV1dlbUZRN3Bwb0Vu?=
 =?utf-8?B?ZEMyL2VXWS82dmNNYkFpNDhlbDNmNXcxNUdRSlF4QzdwMiswLzR3OUVGNW5y?=
 =?utf-8?B?WmxUYXREOUg4blNCcHlCYllSeDE3dzBNSjFkeEllUG9WMWdNTmZjUUpSZVFw?=
 =?utf-8?B?YnE3TTd3THhTcVUwWmY0SU1PWjE3Kzc5dVVNYjhKaFExSmt6cUpDUytKS0di?=
 =?utf-8?B?aDBNL1pkeDlWemoxM2QrcUpOYTZSK1JsYU9kcjl4VHIvN3RlZUE1YzFiak5W?=
 =?utf-8?B?R0hYZmlqWWtmTDB6RHJPa096SVkzV0pScVJ6QndFSzVtL1YyMjJHQT09?=
X-OriginatorOrg: citrix.com
X-MS-Exchange-CrossTenant-Network-Message-Id: c5b37e8b-6c5f-40a3-7864-08dea5d659d8
X-MS-Exchange-CrossTenant-AuthSource: CH7PR03MB7860.namprd03.prod.outlook.com
X-MS-Exchange-CrossTenant-AuthAs: Internal
X-MS-Exchange-CrossTenant-OriginalArrivalTime: 29 Apr 2026 10:01:58.4240
 (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: /Iyxtu5AWrw/Iuldu9x7WYAYXkkkLmxciySZe0TyQEHbULHKv7PQ2GBapUdWkb0bMCmyl8+gDl7RFme/sjpNkA==
X-MS-Exchange-Transport-CrossTenantHeadersStamped: SA3PR03MB7320
X-purgate-ID: tlsNG-d62444/1777456923-B7E7BFF4-B4AC425E/0/0
X-purgate-type: clean
X-purgate-size: 4437

On Fri, Mar 13, 2026 at 04:35:04PM +0000, Thierry Escande wrote:
> Provide a new domain config option to select the emulated machine type,
> device_model_machine. It has following possible values:
> - "i440" - i440 emulation (default)
> - "q35" - emulate a Q35 machine. By default, the storage interface is
> AHCI.
> 
> Note that omitting device_model_machine parameter means i440 system
> by default, so the default behavior doesn't change for existing domain
> config files.
> 
> Setting device_model_machine to "q35" sends '-machine q35,accel=xen'
> argument to QEMU. Unlike i440, there is no separated machine type to
> enable/disable Xen platform device, it is controlled via a machine
> property only. See 'libxl: Add xen-platform device for Q35 machine'
> patch for a detailed description.

Not an explicit objection to this patch, but I wonder what will we do
for PVH when we start exposing PCI devices.  We cannot provide a fully
complete emulated Q35, but we do need to expose an MCFG for extended
config space.  The current naming "device_model_machine" won't work
for PVH, as there's no device model there.  But at the same time I
wonder whether what we end up exposing to PVH would resemble any
physical chipsets, or it's more likely going to be the minimum needed
to make PVH guests happy to access the PCI config space (and hence we
might end up emulating too little to match any chipset).

Thanks, Roger.
> 
> Signed-off-by: Alexey Gerasimenko <x1917x@gmail.com>
> Signed-off-by: Thierry Escande <thierry.escande@vates.tech>
> ---
>  tools/libs/light/libxl_dm.c      | 16 ++++++++++------
>  tools/libs/light/libxl_types.idl |  7 +++++++
>  tools/xl/xl_parse.c              | 14 ++++++++++++++
>  3 files changed, 31 insertions(+), 6 deletions(-)
> 
> diff --git a/tools/libs/light/libxl_dm.c b/tools/libs/light/libxl_dm.c
> index 511ec76a65..36f2813cde 100644
> --- a/tools/libs/light/libxl_dm.c
> +++ b/tools/libs/light/libxl_dm.c
> @@ -1562,13 +1562,17 @@ static int libxl__build_device_model_args_new(libxl__gc *gc,
>              flexarray_append(dm_args, b_info->extra_pv[i]);
>          break;
>      case LIBXL_DOMAIN_TYPE_HVM:
> -        if (!libxl_defbool_val(b_info->u.hvm.xen_platform_pci)) {
> -            /* Switching here to the machine "pc" which does not add
> -             * the xen-platform device instead of the default "xenfv" machine.
> -             */
> -            machinearg = libxl__strdup(gc, "pc,accel=xen,suppress-vmdesc=on");
> +        if (b_info->device_model_machine == LIBXL_DEVICE_MODEL_MACHINE_Q35) {
> +            machinearg = libxl__sprintf(gc, "q35,accel=xen");
>          } else {
> -            machinearg = libxl__strdup(gc, "xenfv,suppress-vmdesc=on");
> +            if (!libxl_defbool_val(b_info->u.hvm.xen_platform_pci)) {
> +                /* Switching here to the machine "pc" which does not add
> +                 * the xen-platform device instead of the default "xenfv" machine.
> +                 */
> +                machinearg = libxl__strdup(gc, "pc,accel=xen,suppress-vmdesc=on");
> +            } else {
> +                machinearg = libxl__strdup(gc, "xenfv,suppress-vmdesc=on");
> +            }
>          }
>          if (b_info->u.hvm.mmio_hole_memkb) {
>              uint64_t max_ram_below_4g = (1ULL << 32) -
> diff --git a/tools/libs/light/libxl_types.idl b/tools/libs/light/libxl_types.idl
> index d64a573ff3..f9cd881b66 100644
> --- a/tools/libs/light/libxl_types.idl
> +++ b/tools/libs/light/libxl_types.idl
> @@ -109,6 +109,12 @@ libxl_device_model_version = Enumeration("device_model_version", [
>      (2, "QEMU_XEN"),             # Upstream based qemu-xen device model
>      ])
>  
> +libxl_device_model_machine = Enumeration("device_model_machine", [
> +    (0, "UNKNOWN"),
> +    (1, "I440"),
> +    (2, "Q35"),
> +    ])
> +
>  libxl_console_type = Enumeration("console_type", [
>      (0, "UNKNOWN"),
>      (1, "SERIAL"),
> @@ -613,6 +619,7 @@ libxl_domain_build_info = Struct("domain_build_info",[
>      ("device_model_ssidref", uint32),
>      ("device_model_ssid_label", string),
>      ("device_model_user", string),
> +    ("device_model_machine", libxl_device_model_machine),

This possibly wants to be inside the u.hvm sub-structure.  I don't
think we want to use it for PVH, not with this current naming at
least.

Thanks, Roger.


From xen-devel-bounces@lists.xenproject.org Wed Apr 29 10:09:55 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 29 Apr 2026 10:09:55 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1297165.1573281 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wI1rc-0003B3-IV; Wed, 29 Apr 2026 10:09:52 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1297165.1573281; Wed, 29 Apr 2026 10:09: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 1wI1rc-0003Aw-Em; Wed, 29 Apr 2026 10:09:52 +0000
Received: by outflank-mailman (input) for mailman id 1297165;
 Wed, 29 Apr 2026 10:09:51 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <Luca.Fancellu@arm.com>) id 1wI1rb-0003Ap-0i
 for xen-devel@lists.xenproject.org; Wed, 29 Apr 2026 10:09:51 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wI1ra-004kWm-Cr
 for xen-devel@lists.xenproject.org; Wed, 29 Apr 2026 12:09:50 +0200
Received: from [10.42.69.6] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <Luca.Fancellu@arm.com>)
 id 69f1d8e9-bab6-0a2a0a5309dd-0a2a4506d73e-10
 for <xen-devel@lists.xenproject.org>; Wed, 29 Apr 2026 12:09:49 +0200
Received: from [40.107.159.34]
 (helo=OSPPR02CU001.outbound.protection.outlook.com)
 by tlsNG-16d1c6.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.1)
 (envelope-from <Luca.Fancellu@arm.com>)
 id 69f1d8ec-7371-0a2a45060019-286b9f22887f-4
 for <xen-devel@lists.xenproject.org>; Wed, 29 Apr 2026 12:09:49 +0200
Received: from DU6P191CA0031.EURP191.PROD.OUTLOOK.COM (2603:10a6:10:53f::10)
 by GVXPR08MB10938.eurprd08.prod.outlook.com (2603:10a6:150:1f8::9) with
 Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9846.26; Wed, 29 Apr
 2026 10:09:43 +0000
Received: from DU2PEPF00028D0F.eurprd03.prod.outlook.com
 (2603:10a6:10:53f:cafe::6e) by DU6P191CA0031.outlook.office365.com
 (2603:10a6:10:53f::10) with Microsoft SMTP Server (version=TLS1_3,
 cipher=TLS_AES_256_GCM_SHA384) id 15.20.9846.30 via Frontend Transport; Wed,
 29 Apr 2026 10:09:43 +0000
Received: from outbound-uk1.az.dlp.m.darktrace.com (4.158.2.129) by
 DU2PEPF00028D0F.mail.protection.outlook.com (10.167.242.23) with Microsoft
 SMTP Server (version=TLS1_3, cipher=TLS_AES_256_GCM_SHA384) id 15.20.9791.48
 via Frontend Transport; Wed, 29 Apr 2026 10:09:43 +0000
Received: from DU2PR08MB7272.eurprd08.prod.outlook.com (2603:10a6:10:2d7::16)
 by DU0PR08MB9823.eurprd08.prod.outlook.com (2603:10a6:10:444::22)
 with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9870.18; Wed, 29 Apr
 2026 10:08:40 +0000
Received: from DU2PR08MB7272.eurprd08.prod.outlook.com
 ([fe80::5d34:206f:373:a323]) by DU2PR08MB7272.eurprd08.prod.outlook.com
 ([fe80::5d34:206f:373:a323%6]) with mapi id 15.20.9846.025; Wed, 29 Apr 2026
 10: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>
Authentication-Results: eu.smtp.expurgate.cloud; dkim=pass header.s=selector1 header.d=arm.com header.i="@arm.com" header.h="From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck"; dkim=pass header.s=selector1 header.d=arm.com header.i="@arm.com" header.h="From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck"
ARC-Seal: i=2; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=pass;
 b=uXHauZPtbYR2Yd36vsF0oqUmVlS5V4QVzgK//UbiV61ZHW3VJa+e3yZ1MUgygbnOSQCh+nFi3BzAWdVJoOLn2+4FNtroHHMX2HKFSL2m2pfu6Wr1Foi7uExjwAfEL5TC6HCQWCU894mnNU9BNukHozjQBpOCQOBRe31nAbz6RXU2/gKBDwYeu41EMGVuB5ZeJWkDIKHyMjFAW+Kb16nxdrZ6MViSa7rVAkLcUMfZ/eyYJrxDXPhN/I8Qn5wc0gy7l0ISHvRpuU0D+H31JaJp7rnQ9z+yXASJBiMQO+tpR+s2QGafVDBOSc3mLQixgMxyKqyTH4iuKa9kCYBNC2iOcg==
ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com;
 s=arcselector10001;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1;
 bh=yHB773K3ephjkbIyqrvDSSrnWJH8Cdj/TKx100kAPgM=;
 b=suk5JWpJfurVpDySSfIwuAt1/Tf+ZiZ30p7Q6ezrIa70+bQYUQk5oHTN+r30rsxyMsaUmQ9cgJWXPUvL+17lpnbnZf6QbsYk9k1RVioRf8SKxRz2VQ94QgBjpiRoIfa2CG17OtC0hWUHpSu/4ig6FawuLQfBUFMHdqykOBihJoB9wRvGp1+ODrqp1/Plp5zrigbXtcM8Cl0HpewqsLJ+qIF56Y5hl+Cti3RGbkWqKd+RjZbarSorJ3aZZCgd6IMxh2HWf5b+1/gg+kiUFmPSmKMWL7wc/e5GxP3O4x3t9aRt+iEpmfSi91eufe9396w4xrc2uAEvFUU7PUTCNUyWXw==
ARC-Authentication-Results: i=2; mx.microsoft.com 1; spf=pass (sender ip is
 4.158.2.129) smtp.rcpttodomain=gmail.com smtp.mailfrom=arm.com; dmarc=pass
 (p=none sp=none pct=100) action=none header.from=arm.com; dkim=pass
 (signature was verified) header.d=arm.com; arc=pass (0 oda=1 ltdi=1
 spf=[1,1,smtp.mailfrom=arm.com] dkim=[1,1,header.d=arm.com]
 dmarc=[1,1,header.from=arm.com])
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=arm.com; s=selector1;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck;
 bh=yHB773K3ephjkbIyqrvDSSrnWJH8Cdj/TKx100kAPgM=;
 b=r5AM1nRT1lNsTbFl+BSOEvCCXxswd4i0aZ1qKgHMYDKpRJ92KHdi/sT3saTBCBw1jELwEUYizptb948+01dnuBnW0XLKLmbhYWzXX2YTBYDWB1CsQ6IUmHGD/AsaifSR2CwaeTzpLFRdrcDHCmhnaFlChjuw9Ep91fhghigDG6s=
X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 4.158.2.129)
 smtp.mailfrom=arm.com; dkim=pass (signature was verified)
 header.d=arm.com;dmarc=pass action=none header.from=arm.com;
Received-SPF: Pass (protection.outlook.com: domain of arm.com designates
 4.158.2.129 as permitted sender) receiver=protection.outlook.com;
 client-ip=4.158.2.129; helo=outbound-uk1.az.dlp.m.darktrace.com; pr=C
ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none;
 b=jJ1c6ioPhtVtYw8vIoheK6n6mw/dJsd9UvIJRaJzOdifRANk1WzhNlseqRMVMr+4+6vhBqR8IVyDG5NYvXIs6Xr7cJyNryugVN7QIS9qGwGWYNxSeJyM6fVhexEmpGPP4SixVMaEgd1UA3CWVdjTcEJcK6WDl1FJVe7jhe3RF3WzFpTpHFMt26OvjnT5NntwD5cADEVx7qYYVGykMY9UaK8iGrPIR1+6cNZc9bPr4RVxLxk5OU1RbZR7DET+iFdAQ9B48E3U/QyFVb6NIFVorQJDLW7RVlp2htVUFpI1Ur+Y1faziOnVftV8/YufBUqxBHxfua9pqj1/xlXStEmymg==
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com;
 s=arcselector10001;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1;
 bh=yHB773K3ephjkbIyqrvDSSrnWJH8Cdj/TKx100kAPgM=;
 b=awcfLXf6RoQzQyFzShYxfXPPOp4aO1HkU+G11ALT15fAbkMyzHU1/1AnA73bXV4YJUgiT3694KpTWQGT3vchGBTty1DRT6144pmDLUAd1/Aq9D4cJqn+breyE85FCvZ1D+PzYzrMvrI3sR2gs3MuMIXKNWLp/pnMdty/84zSYXTpUbDqv2CW/SHANTG8ioK9XmO8gyAQrkKCx/jXzS+bg44MK3wRTAWAcycVRpBVy/nn0m73IvuYYDRNG2G0c0k2nEKJHPPsLTPIxITqUCGQTbd5kKcJBZ/HGb+5nAJqyICs5pwSuAW9AWqffihMre+gINcgxFFLF6YhZ3f2+/78Ow==
ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass
 smtp.mailfrom=arm.com; dmarc=pass action=none header.from=arm.com; dkim=pass
 header.d=arm.com; arc=none
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=arm.com; s=selector1;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck;
 bh=yHB773K3ephjkbIyqrvDSSrnWJH8Cdj/TKx100kAPgM=;
 b=r5AM1nRT1lNsTbFl+BSOEvCCXxswd4i0aZ1qKgHMYDKpRJ92KHdi/sT3saTBCBw1jELwEUYizptb948+01dnuBnW0XLKLmbhYWzXX2YTBYDWB1CsQ6IUmHGD/AsaifSR2CwaeTzpLFRdrcDHCmhnaFlChjuw9Ep91fhghigDG6s=
From: Luca Fancellu <Luca.Fancellu@arm.com>
To: Oleksii Kurochko <oleksii.kurochko@gmail.com>
CC: "xen-devel@lists.xenproject.org" <xen-devel@lists.xenproject.org>, Romain
 Caritey <Romain.Caritey@microchip.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.pau@citrix.com>
Subject: Re: [PATCH v4 01/11] xen: arm: fix len type for guest copy functions
Thread-Topic: [PATCH v4 01/11] xen: arm: fix len type for guest copy functions
Thread-Index: AQHc1xwXYYBcuLui0UypBKVcqnkF/bX10fCA
Date: Wed, 29 Apr 2026 10:08:40 +0000
Message-ID: <53BD54C0-E493-4D04-9CB1-D16B148CA3A9@arm.com>
References: <cover.1777303844.git.oleksii.kurochko@gmail.com>
 <e29e6176063f8e7c612a4bfa44ac072d7a686b81.1777303844.git.oleksii.kurochko@gmail.com>
In-Reply-To:
 <e29e6176063f8e7c612a4bfa44ac072d7a686b81.1777303844.git.oleksii.kurochko@gmail.com>
Accept-Language: en-GB, en-US
Content-Language: en-US
X-MS-Has-Attach:
X-MS-TNEF-Correlator:
x-mailer: Apple Mail (2.3826.700.81.1.6)
Authentication-Results-Original: dkim=none (message not signed)
 header.d=none;dmarc=none action=none header.from=arm.com;
x-ms-traffictypediagnostic:
	DU2PR08MB7272:EE_|DU0PR08MB9823:EE_|DU2PEPF00028D0F:EE_|GVXPR08MB10938:EE_
X-MS-Office365-Filtering-Correlation-Id: e051f460-238c-44d5-d289-08dea5d76f20
x-checkrecipientrouted: true
nodisclaimer: true
X-MS-Exchange-SenderADCheck: 1
X-MS-Exchange-AntiSpam-Relay: 0
X-Microsoft-Antispam-Untrusted:
 BCL:0;ARA:13230040|7416014|376014|366016|1800799024|56012099003|22082099003|18002099003|38070700021;
X-Microsoft-Antispam-Message-Info-Original:
 d8u2VyPrYanCnBDgLI2HwqJqtcGgiYdGG3x2LfBH2nOlfI/Rj18W99p0zL6bSqQR2KNRyA0bAFKTnrTC4xAUsKaLzVdC5W6erMh+20pMroSJtt8wsJTifHbEZmfBKaQZMLsLELb7jeS5ML4p/Imh/xtRNqRA5t7tknLdb7Cr9pfop4CRlE6Kmm3eB3CDIAdM7I6/RMFCkx2PP6fAVY4MlRGKuWnFrEmgJmRtZJITK8zyL23BUt64H2FZycvPK0h1J735f9lRLroMt+T2TWpxKJf+xcu371xtM0D7fnoJVq39VbRr9XYWZFghX7CjYcmnfreewZIfORKz26R8IBVAvt/8JVgNm2Hm6e1AO7g5gzVQprlO9NRyk3Yc9HxXWPVlfIsnUERhzfPh+c6CuMB912Smfzhrw5z8kDqEGnTHutbzhOu+DY6pWMmpOZoRa03yY1lXXBpa8UOFCDQqm7L0waHG1xvY0hgyD6evEmmasWH1hwtN3lwyE4vQpqfud6eD7YaCHVhYFp91OsODxfe2x0AFTuOXyYZx9ISIvHV0kXP+wvw+HYLD6AGLdCBxd5WoE29CTGB4u3DGZMF30Ys6bJJZE4ZSRT035F11tdRSveBcgzAarAfLPHsweQo2CPmsswBi5XYW+onJBa6NAdPzHD7jmS0bzQacMffI47FU66zbBRpq7mXujT7cLsmEzR0VfwP55J1aDIliU+gD4Y5nCHYCWM5AynukLXg8HaquCoFDKBjokXBQZRf2Dxsqt2Xsiv6UuIWBLuSbwEKb1qWSP2rcVcMlE3tPBL2Y2ZHnCxg=
X-Forefront-Antispam-Report-Untrusted:
 CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:DU2PR08MB7272.eurprd08.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(7416014)(376014)(366016)(1800799024)(56012099003)(22082099003)(18002099003)(38070700021);DIR:OUT;SFP:1101;
Content-Type: text/plain; charset="utf-8"
Content-ID: <018A2DAE69417E4E9C74A12F84783F28@eurprd08.prod.outlook.com>
Content-Transfer-Encoding: base64
MIME-Version: 1.0
X-Exchange-RoutingPolicyChecked:
 bhSZGG2jdpwSB7XW14Lbej94wuXY8MLod3wsCPBfbncAJTwQW8yNz/GqLMk6KJzgQHV6u+6yyaJVXQ3h5BG12DGcwdiEJjaeNGnu1vGyXVZpPeq+qqgScqY1JWUVORU2YZhg1BxI8wFDMc2Wn+Dc480AkjxuqVu1yraLA62QjCLn23YztljND4eWnLAwHRS8WONUKj/CM3MkQ7NhlXpBcgO7fhhuUYqDGtLSIWjWJ2UNvCFpoq/nJ+tdZ5MQvngfnS8VSAHmw1PC6ej1gKjVjz+Zaaq5fw5gOpLo93hsniMt7xmPRos/h3p2mBQFsDDXk3VxjwoJBQQ35I7whlGWzA==
X-MS-Exchange-Transport-CrossTenantHeadersStamped: DU0PR08MB9823
X-EOPAttributedMessage: 0
X-MS-Exchange-Transport-CrossTenantHeadersStripped:
 DU2PEPF00028D0F.eurprd03.prod.outlook.com
X-MS-PublicTrafficType: Email
X-MS-Office365-Filtering-Correlation-Id-Prvs:
	df8700a9-cc59-4c6a-fbd9-08dea5d7495c
X-Microsoft-Antispam:
	BCL:0;ARA:13230040|14060799003|35042699022|36860700016|82310400026|376014|7416014|1800799024|56012099003|18002099003|22082099003;
X-Microsoft-Antispam-Message-Info:
	ozw6dtgE4KVhI0su6HLv4RCLZo7lB+LfHMmYHftE4KTk1jpC+02NcY7cL+1NBByFiHAB+ZIC/RBeRP/WvNKO1Bku20gCaH4QgsKZtcD57CQk6akmjh54hOwWwGuoTFK2as0/4ZgMD3YK3uAIE9lGazCrzMgVk6FwYvq0kros0zCuYw3RCnj1rY2EvaM87ADtM/890Dt64pRlCNjRuaghlX14gyvwZ08wZCmVhQa2Pjb/xx3Y0mHtokHcKcukm5SeRd39VIeBQFTgKB4SwcQB4cRKl8KiNM6yIdrkChwr4RLTf6GLyqnWsj1Oy4vDdrlzaKN0ndyeypIiqfRpjgC0UmQHhCXaD+K5B6Op/Sol72tt9og/nGve4vPRCHhwRqeSUTEuMs757nBRiRBDQVNChvC4IRDBCXVOjbDDHRWzYCGUduS6egWdDRKwLX0SPU0CoTpwU1cu4dY3naXOeRXGOx3tvdbGpjUeNZvS9kCKPG5RRCV7CozSvHxBPE83EpnXYDp9M58OU043vXJOs0ZJzKOrMszLW+hXfiOpuLSnecDBEIBRNcdldDDCrKzieyWNpHgEz+UHBUy/c9OfO+RThYb1l0GXQbM4RPYiWHH3H+x15/+B74rAN0d6ihAt9Y9UrTE5iqS79IdmftKr7SnmMm4vId1v8dZADZ1T6ug7jptH8G6bzGJteAf4CpI7rIrgLy9SUaMPaIWSLPlzce+qh8ZJ3b/mu35/zsy4L+EUZww=
X-Forefront-Antispam-Report:
	CIP:4.158.2.129;CTRY:GB;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:outbound-uk1.az.dlp.m.darktrace.com;PTR:InfoDomainNonexistent;CAT:NONE;SFS:(13230040)(14060799003)(35042699022)(36860700016)(82310400026)(376014)(7416014)(1800799024)(56012099003)(18002099003)(22082099003);DIR:OUT;SFP:1101;
X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1
X-MS-Exchange-AntiSpam-MessageData-0:
	FlLeoATG3ZPLEq2TBnq85fRh0tq3qrOpnZ9KMWGxvGMXwKgGQ+fMOPyLtBWffHcd1TPOKEIXqWrji16uoGRYpFTdz+AfCxmUHRg4oz0LcaV5FJrXC4dYRQmNRGn8A2zhEDhxw7Np+T78pARKZ3KhA6OewNd0Hh9uD4YqXX8gXt6h8pqhbAfJ/cc3DbAEMtubuuOGxUvBGSUJROyq+6XZOCbpgB3spWOwoZrwqq0DdRKwLSIzQ4lvcIaUty/LaCTIyTJoxVAkASaLou+7S36yIMI001u8VK+ujhyBTzqj4PShL8jaqi1MSb078jOCyGdDvt6fI3UOOkcUGTOardovUE9zW3x0bhSn0VyICskhzJABttWdAS6z4tJFt9EnSnCJlb8g83oYDJlWeCX+vhnmfbz+XyACyBFVwcJVL67wxyGexWtqUBrJKWIACrojQXHt
X-OriginatorOrg: arm.com
X-MS-Exchange-CrossTenant-OriginalArrivalTime: 29 Apr 2026 10:09:43.3155
 (UTC)
X-MS-Exchange-CrossTenant-Network-Message-Id: e051f460-238c-44d5-d289-08dea5d76f20
X-MS-Exchange-CrossTenant-Id: f34e5979-57d9-4aaa-ad4d-b122a662184d
X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=f34e5979-57d9-4aaa-ad4d-b122a662184d;Ip=[4.158.2.129];Helo=[outbound-uk1.az.dlp.m.darktrace.com]
X-MS-Exchange-CrossTenant-AuthSource:
	DU2PEPF00028D0F.eurprd03.prod.outlook.com
X-MS-Exchange-CrossTenant-AuthAs: Anonymous
X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem
X-MS-Exchange-Transport-CrossTenantHeadersStamped: GVXPR08MB10938
X-purgate-ID: tlsNG-16d1c6/1777457389-50B65D75-C2408EB6/0/0
X-purgate-type: clean
X-purgate-size: 2940

SGkgT2xla3NpaSwNCg0KPiB4ZW4vYXJjaC9hcm0vZ3Vlc3Rjb3B5LmMgICAgICAgICAgICAgICAg
fCA2ICsrKy0tLQ0KPiB4ZW4vYXJjaC9hcm0vaW5jbHVkZS9hc20vZ3Vlc3RfYWNjZXNzLmggfCAy
ICstDQo+IHhlbi9pbmNsdWRlL3hlbi9mZHQtZG9tYWluLWJ1aWxkLmggICAgICB8IDIgKy0NCj4g
MyBmaWxlcyBjaGFuZ2VkLCA1IGluc2VydGlvbnMoKyksIDUgZGVsZXRpb25zKC0pDQo+IA0KPiBk
aWZmIC0tZ2l0IGEveGVuL2FyY2gvYXJtL2d1ZXN0Y29weS5jIGIveGVuL2FyY2gvYXJtL2d1ZXN0
Y29weS5jDQo+IGluZGV4IGZkYjA2NDIyYjhlOS4uODZmMWM5ZDBlMzE4IDEwMDY0NA0KPiAtLS0g
YS94ZW4vYXJjaC9hcm0vZ3Vlc3Rjb3B5LmMNCj4gKysrIGIveGVuL2FyY2gvYXJtL2d1ZXN0Y29w
eS5jDQo+IEBAIC01Myw3ICs1Myw3IEBAIHN0YXRpYyBzdHJ1Y3QgcGFnZV9pbmZvICp0cmFuc2xh
dGVfZ2V0X3BhZ2UoY29weV9pbmZvX3QgaW5mbywgdWludDY0X3QgYWRkciwNCj4gICAgIHJldHVy
biBwYWdlOw0KPiB9DQo+IA0KPiAtc3RhdGljIHVuc2lnbmVkIGxvbmcgY29weV9ndWVzdCh2b2lk
ICpidWYsIHVpbnQ2NF90IGFkZHIsIHVuc2lnbmVkIGludCBsZW4sDQo+ICtzdGF0aWMgdW5zaWdu
ZWQgbG9uZyBjb3B5X2d1ZXN0KHZvaWQgKmJ1ZiwgdWludDY0X3QgYWRkciwgdW5zaWduZWQgbG9u
ZyBsZW4sDQo+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29weV9pbmZvX3QgaW5m
bywgdW5zaWduZWQgaW50IGZsYWdzKQ0KPiB7DQo+ICAgICAvKiBYWFggbmVlZHMgdG8gaGFuZGxl
IGZhdWx0cyAqLw0KPiBAQCAtNjUsNyArNjUsNyBAQCBzdGF0aWMgdW5zaWduZWQgbG9uZyBjb3B5
X2d1ZXN0KHZvaWQgKmJ1ZiwgdWludDY0X3QgYWRkciwgdW5zaWduZWQgaW50IGxlbiwNCj4gICAg
IHdoaWxlICggbGVuICkNCj4gICAgIHsNCj4gICAgICAgICB2b2lkICpwOw0KPiAtICAgICAgICB1
bnNpZ25lZCBpbnQgc2l6ZSA9IG1pbihsZW4sICh1bnNpZ25lZCBpbnQpUEFHRV9TSVpFIC0gb2Zm
c2V0KTsNCj4gKyAgICAgICAgdW5zaWduZWQgbG9uZyBzaXplID0gbWluKGxlbiwgUEFHRV9TSVpF
ICsgMFVMIC0gb2Zmc2V0KTsNCj4gICAgICAgICBzdHJ1Y3QgcGFnZV9pbmZvICpwYWdlOw0KPiAN
Cj4gICAgICAgICBwYWdlID0gdHJhbnNsYXRlX2dldF9wYWdlKGluZm8sIGFkZHIsIGZsYWdzICYg
Q09QWV9saW5lYXIsDQo+IEBAIC0xMzYsNyArMTM2LDcgQEAgdW5zaWduZWQgbG9uZyByYXdfY29w
eV9mcm9tX2d1ZXN0KHZvaWQgKnRvLCBjb25zdCB2b2lkIF9fdXNlciAqZnJvbSwNCj4gdW5zaWdu
ZWQgbG9uZyBjb3B5X3RvX2d1ZXN0X3BoeXNfZmx1c2hfZGNhY2hlKHN0cnVjdCBkb21haW4gKmQs
DQo+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYWRkcl90
IGdwYSwNCj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZv
aWQgKmJ1ZiwNCj4gLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICB1bnNpZ25lZCBpbnQgbGVuKQ0KPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHVuc2lnbmVkIGxvbmcgbGVuKQ0KPiB7DQoNCk5vdyB0aGF0IHdlIGRvIHRo
aXMsIHBvdGVudGlhbGx5IHdlIGNvdWxkIGhhdmUgdHJ1bmNhdGlvbiBpbiB0aGUgcGxhY2VzIHdo
ZXJlIHdlIHN0b3JlIGl0cyByZXR1cm4gdmFsdWUNCmluc2lkZSBhbiBpbnQ6DQoNCmh0dHBzOi8v
eGVuYml0cy54ZW4ub3JnL2dpdHdlYi8/cD14ZW4uZ2l0O2E9YmxvYjtmPXhlbi9hcmNoL2FybS9r
ZXJuZWwuYztoPTc1NDRmZDUwYTIwZjA4YjViYTMxY2FkN2I5NDkyNTExMmZkZWU5NTY7aGI9cmVm
cy9oZWFkcy9zdGFnaW5nI2wxMzENCg0KaHR0cHM6Ly94ZW5iaXRzLnhlbi5vcmcvZ2l0d2ViLz9w
PXhlbi5naXQ7YT1ibG9iO2Y9eGVuL2NvbW1vbi9kZXZpY2UtdHJlZS9kb21haW4tYnVpbGQuYzto
PWM1MTUyMGViYWRmOTk1MDMxMWY2YzA3MWU3ZTA3MDQyYzcwNzZhMjc7aGI9cmVmcy9oZWFkcy9z
dGFnaW5nI2w0NDINCg0KQ291bGQgeW91IGNoZWNrIGFuZCBsZXQgbWUga25vdyBpZiBJ4oCZbSBj
b3JyZWN0IG9yIG5vdD8NCg0KQ2hlZXJzLA0KTHVjYQ0KDQoNCg0K


From xen-devel-bounces@lists.xenproject.org Wed Apr 29 10:13:29 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 29 Apr 2026 10:13:29 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1297173.1573290 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wI1v5-0004j3-53; Wed, 29 Apr 2026 10:13:27 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1297173.1573290; Wed, 29 Apr 2026 10: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 1wI1v5-0004iw-1S; Wed, 29 Apr 2026 10:13:27 +0000
Received: by outflank-mailman (input) for mailman id 1297173;
 Wed, 29 Apr 2026 10:13:26 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <roger.pau@citrix.com>) id 1wI1v4-0004iq-6Y
 for xen-devel@lists.xenproject.org; Wed, 29 Apr 2026 10:13:26 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wI1v3-0051zp-7y
 for xen-devel@lists.xenproject.org; Wed, 29 Apr 2026 12:13:25 +0200
Received: from [10.42.69.2] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <roger.pau@citrix.com>)
 id 69f1d9bd-bab6-0a2a0a5309dd-0a2a4502d12e-16
 for <xen-devel@lists.xenproject.org>; Wed, 29 Apr 2026 12:13:25 +0200
Received: from [40.93.196.50]
 (helo=SA9PR02CU001.outbound.protection.outlook.com)
 by tlsNG-720697.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.1)
 (envelope-from <roger.pau@citrix.com>)
 id 69f1d9c3-af86-0a2a45020019-285dc432177b-3
 for <xen-devel@lists.xenproject.org>; Wed, 29 Apr 2026 12:13:24 +0200
Received: from CH7PR03MB7860.namprd03.prod.outlook.com (2603:10b6:610:24e::14)
 by PH7PR03MB7195.namprd03.prod.outlook.com (2603:10b6:510:244::21)
 with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9846.27; Wed, 29 Apr
 2026 10:13:21 +0000
Received: from CH7PR03MB7860.namprd03.prod.outlook.com
 ([fe80::f5ba:35df:1c9f:b343]) by CH7PR03MB7860.namprd03.prod.outlook.com
 ([fe80::f5ba:35df:1c9f:b343%4]) with mapi id 15.20.9870.020; Wed, 29 Apr 2026
 10:13: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=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=pH24UTzWbLJblT8PDPrtYGFT43xhN6FJpWkBtRxnky9f7wvJjKPpNJ6gdh2zDV7W1YRHRtVnEgpzGch20fNVFENegzZhAAzJjqCrw5IiUJSWxr0HJy8aDe0FDTCeEyGsYzMEcPk26zgTx9mPfjG29z4tohtQqMXSfRbo4IuhQX7iBOAu8er+5vN7tULoOsYXTk60RuF2lH/e3DPv+hbMnKlnSd8NvsbXVML8+qOAKPpKZ2VobPaNm0Oa7SGWhq+kIuJrZdbNGdjzJWt33hX5y5c1Y2E1G1HLVY0Eulpz8dAZc1y0WrNEaxSu3P4YodjTwDUIX1ufroEmKonZw+iNAA==
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com;
 s=arcselector10001;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1;
 bh=JLhzOF7supAJ3qPCXfKOoAbySdrH7P6vKIlc01aPPqQ=;
 b=JBhYIOKE8viu7PFF3RxPKafCc7QWyiiPzvFgpZ/UGSjyau/39hPJz5BcimFYEhuvkgYcp3rMby4wQXGZBQD5od7g4JuiOGXqaYc5073LwoNQGhqtYYv/Ik4V2zjqJCdHWeZRBE5yCMBd9/m99z4yNHjoTL+2c8w7PIZiEvEQ3lqE7K5BD5j1OWGTkApUXwb2LTmXcYp0fX7Xvh3ely148CSOC/4emtZHaqGW6LVdUGCQe3osOa3jwmbjxfeA62n/EEuUU63xQdMSvcH6xFVIMcyDUr/BAV6KvlGIpnfUwUbfFuTnMf9396HamCP5vYQPQpoOGd5bnw4CPmZJKod6ig==
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=JLhzOF7supAJ3qPCXfKOoAbySdrH7P6vKIlc01aPPqQ=;
 b=HtDSF6iuHQTtjvB8ojLcBzXR0JCdxhp8IJU+Qy+YFkfKDTQioOWFxUY0lCv1fC35o6rnNCG0cYbuEQvQkTI9/3nDOorH4zyvKl3oPVO0+KovUlVkx4gE7LM/Da89PuI6fixRFMwgihQTfojbXHVzOjfun3xgmpSlzkS5RpppjSw=
Authentication-Results: dkim=none (message not signed)
 header.d=none;dmarc=none action=none header.from=citrix.com;
Date: Wed, 29 Apr 2026 12:13:15 +0200
From: Roger Pau =?utf-8?B?TW9ubsOp?= <roger.pau@citrix.com>
To: Thierry Escande <thierry.escande@vates.tech>
Cc: xen-devel@lists.xenproject.org, Jan Beulich <jbeulich@suse.com>,
	Anthony PERARD <anthony.perard@vates.tech>,
	Alexey Gerasimenko <x1917x@gmail.com>
Subject: Re: [PATCH 14/17] libacpi: build ACPI MCFG table if requested
Message-ID: <afHZutWoJGHoKemZ@macbook.local>
References: <20260313163455.790692-1-thierry.escande@vates.tech>
 <20260313163455.790692-15-thierry.escande@vates.tech>
Content-Type: text/plain; charset=utf-8
Content-Disposition: inline
In-Reply-To: <20260313163455.790692-15-thierry.escande@vates.tech>
X-ClientProxiedBy: MR1P264CA0051.FRAP264.PROD.OUTLOOK.COM
 (2603:10a6:501:3e::26) To CH7PR03MB7860.namprd03.prod.outlook.com
 (2603:10b6:610:24e::14)
MIME-Version: 1.0
X-MS-PublicTrafficType: Email
X-MS-TrafficTypeDiagnostic: CH7PR03MB7860:EE_|PH7PR03MB7195:EE_
X-MS-Office365-Filtering-Correlation-Id: f2960f6d-f0b6-413e-8dae-08dea5d7ef5e
X-MS-Exchange-SenderADCheck: 1
X-MS-Exchange-AntiSpam-Relay: 0
X-Microsoft-Antispam:
	BCL:0;ARA:13230040|1800799024|376014|366016|18002099003|56012099003|22082099003;
X-Microsoft-Antispam-Message-Info:
	bCpVlpOhHnE+ZRdKb3mNu2Hwa4cl5NlF1EYQYOO73iE06Khq7hA4xboqJwwOydAfCGc6PNK5SCfBzu8/9ikFSYr6bFZshkdVraoKyWr3pVdYIrJq6lbctjhztLGlwH8y/PHTRSsm7CUCLx7OEEABhdA8FXlbvNJalsE0vHAifvrAGKDJiYkOXOUm+Al2KiRt9RXRpEnHZC8BNesj8SAhoPVb4EUWu2Y4kSqnctNTBZS2lRsxnpNBdlqio1ZNmVBclTGjf2NW6fQTVdpYigxzopHGSRgwGgiUgaADykDNrKc82h6l+t+AVUGRAbNzsNBG3f+n9fMtUdk5RvQH/ylzrElaX7fVZKMvneZcPJ8Gq9mPcU1uunyDIukcH+S2coglyDivrcvWjg57JwF+h4dXwoXZb3/VOTSndWYfsc1CFA1Wrx8KW2RWUMEam/dgSFPu0XVm8cDkMqe2yITpZCcorEWMl5uJ8E/rYWZmA95byJJd3J/mNWyrUOPESlSPzMhOA0cvwr/y8VIR92auR0BriO/4PLtweSdc7uWqKUv0PbYErOf9fQvWw4GZV1HKSe8pNlCrCANc7ubwvRPhocCVXb8Sj7alqMbnPHPvUOK0GiGsyzWKW6i76cjjrmquYD78nDsmed1bpgAz8/71LI3WnIBT42V1FM7WSb65DeyBCOzddJ+z0JPCtU27+P3WRSc9F05rpHs7O/RwI52b5eA+ToTa+57jf/VWADgMOxk9C0s=
X-Forefront-Antispam-Report:
	CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:CH7PR03MB7860.namprd03.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(1800799024)(376014)(366016)(18002099003)(56012099003)(22082099003);DIR:OUT;SFP:1101;
X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1
X-MS-Exchange-AntiSpam-MessageData-0:
	=?utf-8?B?SFlPb3dxL0dodjhrdHdaYVlqS09COFgzNGQ4K3VhdlV0WWFjenNXUm41VFE5?=
 =?utf-8?B?RithbU5jN1Y5NEIyTWFqd3NHeFA4dWFxK1RjTzlWWUQweXcyWUtoKzk0amtC?=
 =?utf-8?B?OVNqTUFJSFJBbFNKQ2FkNjB2djBkbnBSN0l0aUlkbGVzU0d6eVVibTJ0c3Zv?=
 =?utf-8?B?eFBFcGo3ZWVGUTdvYVFybTc2WUNqa0k2NGdHckNTQjNvK0R0OHZCRGJXQUNN?=
 =?utf-8?B?TE5BYkEycEEvbVpDYWJiZEs1MlViTG9QSEU1NXNRUEFONHZiSy9Cdml5WXhh?=
 =?utf-8?B?ck01OEZkRUs3Mmd4VkdnSWRmWndiZ2d3Z09Eb042WWhwbVFRZGFVcS9DRVJo?=
 =?utf-8?B?KzdpK1JNQWhNMmF5STJUYTByYUhERkF5dW1icjg5SmZTVEdPNTVkbmg5dk9m?=
 =?utf-8?B?Q0ZyZ0RFc0plMW9PcVJiU2FwOGNFeklNZ2NHY2J3dlNURkpBTkFxdjJWOU92?=
 =?utf-8?B?MTVoTUlBaTBKSGQwa2IwV3dqSlpTUjJTWENPeUx5aVpqaTBIeWpTWnNsV2NG?=
 =?utf-8?B?T1JpM1piK2hUUTU5c1NpVTZkNlAyNUcrVS9hUW1RYk11a1FxOHhtb3E4REZn?=
 =?utf-8?B?eGN4Nnp3SFV5NGZoNklxVm8reUlMcTU0V00zcktoRU4zSWhvUlY3UFBNcEUv?=
 =?utf-8?B?L3BIYTVBcFdOU3Q4a1JFaklzZllwcnl6ZWk3cjJHMGM4YVZyaGlPTTJ4S0wz?=
 =?utf-8?B?MWRlMk5WbVI0UWV1L2FOZzdyaURJNnF1aHo4cVhBZGI0M0s1dVdpRlJiN0dt?=
 =?utf-8?B?bS94bHBYbVNMb3pOOVY5dExNUWRudjB5dG1rQmo1K1VKeUpDMm9WMnk3bS9P?=
 =?utf-8?B?WEtpSnJZNUdua0RVUzk2NzZNV2YzQWxIRnFuendieWM0NFlQaEZyQlZQN3dJ?=
 =?utf-8?B?ZUF6YzRCS013YjRtQmVWSTZXYlluRkl5TkRxVzR0TTBaRFBmeHpzb2w4RlRy?=
 =?utf-8?B?Z0NzU09FbmdvejZiOGFuTDhkUHZIb2FYc0g5S1lwMGhJYmU1d3pLUUVlZXh3?=
 =?utf-8?B?T1FvZGN1RkZxQVBLU0RRNEMrRnlEd1FkcjBTN0NtRUNMQ1U4Z01iTDFXUXlF?=
 =?utf-8?B?ZzVva1NsZlhobk1ObTBVSVExbkxMSlJ3ZktlRmd1cWxJa3B2ZGdYUHNHcVRQ?=
 =?utf-8?B?RUhmdHZjbzBBYy83dWdvVm8zRmJJNm9iZXU2L2tDNyt2NlhZVEoyNXg4ZUNr?=
 =?utf-8?B?Y1N4bGRVSDJkdEpYOCtVY05INDFTU2hIdkl1Q2E1aTgveFlEeHpiaGhCTzla?=
 =?utf-8?B?MVVtRkRHMkRHSVZ6MDVJQ01ibnRMT28xUFNWekxGclVlZERCek9NVkZjWVdF?=
 =?utf-8?B?QWhONzVjN1dvMmxMb0tEU2ZZRlNyWHBHTHI1T3FBUHUydVk2ejFIR0xQN3M5?=
 =?utf-8?B?MU9zd1Rlby9iSjlvSjYycjc1dEVlNHFRU1IxYTN2YUpzWExBc2orYTU0VVVO?=
 =?utf-8?B?UnZhUDFQL2pHRFY1MWo4ZE5aNTluWWpHbVlqVDJYK0ZZY1ZBN0VzcFZJMnBt?=
 =?utf-8?B?cGNheWdINUVQa3E4MUhKQUt4UmNBWmE2QkxqMTJJNW9HT042aGZwZ0wxWkFZ?=
 =?utf-8?B?R0dLM2V1OVZPdDY1WGoyNFIvYnJjMmdHS00zUDJmdUJMZU5qSnBQQkVIMFd5?=
 =?utf-8?B?N29tSHlGOTlCbUtzanVTamtyT2hRSlMzOUlIdm5zWDREcGZieVJhbi9XbDBM?=
 =?utf-8?B?UFd5SVB0ckg1N0NFZ1pKcnVaZ1gxc2tpb3NyYk1CWW5JSTRjbFJnSDUxNzVB?=
 =?utf-8?B?VmYraE5jTG02NTVrUEMzdkVwZjdCa0lPOERwVjgxSW9UQ2srN3AzMUo1M1VS?=
 =?utf-8?B?OU1sV0Y4dUs3RUNKSjN2VEViTm51L3J4eWY0SmVyOTRsZm1yZmNxUkRzVm1v?=
 =?utf-8?B?NFFYUlZUWVZkSE9wVXBDZ2xldFl0MlVxTDhWLzJaL1VWS1o4b0dqcDdnelZx?=
 =?utf-8?B?bjg2cHdKVHZjcWxMRGpaNkJhVDRnSWVtVXdidHh2ZEJTYzJrOFpmS2tWYzds?=
 =?utf-8?B?dEl0alV5MncrY1FLM2QrUVRvNDA3V2dqSmM5TEtsM3c1VklGUUhIVEZzRDVo?=
 =?utf-8?B?MnZJUFB0SnFuNWlKZStRSlpYUjVxZHh4TWc5V2NUcUNnN3U4YTJCRjVnODgz?=
 =?utf-8?B?N1ExWEhqS3RhMVJITEpmanJickI1UlpoRmNhUy9LZ2JlRk9Tb3kxQ1JCYUNK?=
 =?utf-8?B?U3RobTVrMXRGSHdCeGVRbjBZZkkzZ2g1MGhpRy9kVXRHVVVIY2Q1TDVIbW5u?=
 =?utf-8?B?d21hMTYrWGdLNzBISWdmRVhoZ1plaG8wK0JFRFRsSmVFYXlXZzFBbXdveWQ1?=
 =?utf-8?B?ZlpjMEE5KzFtcTk3Zk9yYk9nRThxa21uUU9ZWTQ2Mkp2S0daM1RWQT09?=
X-OriginatorOrg: citrix.com
X-MS-Exchange-CrossTenant-Network-Message-Id: f2960f6d-f0b6-413e-8dae-08dea5d7ef5e
X-MS-Exchange-CrossTenant-AuthSource: CH7PR03MB7860.namprd03.prod.outlook.com
X-MS-Exchange-CrossTenant-AuthAs: Internal
X-MS-Exchange-CrossTenant-OriginalArrivalTime: 29 Apr 2026 10:13:18.7771
 (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: kb6OFUb/PrGV5a3QfFYNOjauBI4CwpJRHVukv7E5N3RKCVJ1+pm3LOsvLnZZoXTkR20uCb0hHwAZMNZsLpJNvw==
X-MS-Exchange-Transport-CrossTenantHeadersStamped: PH7PR03MB7195
X-purgate-ID: tlsNG-720697/1777457605-81772161-4A83587E/0/0
X-purgate-type: clean
X-purgate-size: 3816

On Fri, Mar 13, 2026 at 04:35:04PM +0000, Thierry Escande wrote:
> This adds construct_mcfg() function to libacpi which allows to build MCFG
> table for a given mmconfig_addr/mmconfig_len pair if the ACPI_HAS_MCFG
> flag was specified in acpi_config struct.
> 
> The maximum bus number is calculated from mmconfig_size using
> MCFG_SIZE_TO_NUM_BUSES macro (1MByte of MMIO space per bus).
> 
> Signed-off-by: Alexey Gerasimenko <x1917x@gmail.com>
> Signed-off-by: Thierry Escande <thierry.escande@vates.tech>
> ---
>  tools/libacpi/acpi2_0.h | 17 ++++++++++++++++
>  tools/libacpi/build.c   | 43 +++++++++++++++++++++++++++++++++++++++++
>  tools/libacpi/libacpi.h |  6 ++++++
>  3 files changed, 66 insertions(+)
> 
> diff --git a/tools/libacpi/acpi2_0.h b/tools/libacpi/acpi2_0.h
> index 51623e2a8a..2b16bd636a 100644
> --- a/tools/libacpi/acpi2_0.h
> +++ b/tools/libacpi/acpi2_0.h
> @@ -442,6 +442,21 @@ struct acpi_20_slit {
>      uint8_t entry[0];
>  };
>  
> +/*
> + * PCI Express Memory Mapped Configuration Description Table
> + */
> +struct acpi_10_mcfg {
> +    struct acpi_header header;
> +    uint8_t reserved[8];
> +    struct {
> +        uint64_t base_address;
> +        uint16_t pci_segment;
> +        uint8_t  start_pci_bus_num;
> +        uint8_t  end_pci_bus_num;
> +        uint32_t reserved;
> +    } entries[1];
> +};
> +
>  /*
>   * Table Signatures.
>   */
> @@ -457,6 +472,7 @@ struct acpi_20_slit {
>  #define ACPI_2_0_WAET_SIGNATURE ASCII32('W','A','E','T')
>  #define ACPI_2_0_SRAT_SIGNATURE ASCII32('S','R','A','T')
>  #define ACPI_2_0_SLIT_SIGNATURE ASCII32('S','L','I','T')
> +#define ACPI_MCFG_SIGNATURE     ASCII32('M','C','F','G')
>  
>  /*
>   * Table revision numbers.
> @@ -472,6 +488,7 @@ struct acpi_20_slit {
>  #define ACPI_1_0_FADT_REVISION 0x01
>  #define ACPI_2_0_SRAT_REVISION 0x01
>  #define ACPI_2_0_SLIT_REVISION 0x01
> +#define ACPI_1_0_MCFG_REVISION 0x01
>  
>  #pragma pack ()
>  
> diff --git a/tools/libacpi/build.c b/tools/libacpi/build.c
> index 95188e217e..90080c76c4 100644
> --- a/tools/libacpi/build.c
> +++ b/tools/libacpi/build.c
> @@ -295,6 +295,37 @@ static struct acpi_20_slit *construct_slit(struct acpi_ctxt *ctxt,
>      return slit;
>  }
>  
> +static struct acpi_10_mcfg *construct_mcfg(struct acpi_ctxt *ctxt,
> +                                        const struct acpi_config *config)
> +{
> +    struct acpi_10_mcfg *mcfg;
> +
> +    /* Warning: this code expects that we have only one PCI segment */

Not only one PCI segment, but just one ECAM region.  You could in
theory have multiple ECAM regions within a single PCI segment.

> +    mcfg = ctxt->mem_ops.alloc(ctxt, sizeof(*mcfg), 16);
> +    if ( !mcfg )
> +        return NULL;
> +
> +    memset(mcfg, 0, sizeof(*mcfg));
> +    mcfg->header.signature        = ACPI_MCFG_SIGNATURE;
> +    mcfg->header.revision         = ACPI_1_0_MCFG_REVISION;
> +    mcfg->header.creator_id       = ACPI_CREATOR_ID;
> +    mcfg->header.creator_revision = ACPI_CREATOR_REVISION;
> +    mcfg->header.length           = sizeof(*mcfg);
> +    mcfg->header.oem_revision     = ACPI_OEM_REVISION;
> +    fixed_strcpy(mcfg->header.oem_id, ACPI_OEM_ID);
> +    fixed_strcpy(mcfg->header.oem_table_id, ACPI_OEM_TABLE_ID);
> +
> +    mcfg->entries[0].base_address      = config->mmconfig_addr;
> +    mcfg->entries[0].pci_segment       = 0;
> +    mcfg->entries[0].start_pci_bus_num = 0;
> +    mcfg->entries[0].end_pci_bus_num   =
> +        MCFG_SIZE_TO_NUM_BUSES(config->mmconfig_size) - 1;


You might want to check that mmconfig_addr and mmconfig_size are set
ahead of using them?  Just in case some bogus toolstack/hvmloader sets
ACPI_HAS_MCFG without correctly populating the fields?

Thanks, Roger.


From xen-devel-bounces@lists.xenproject.org Wed Apr 29 11:01:25 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 29 Apr 2026 11:01:25 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1297191.1573299 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wI2f5-0003OM-Hf; Wed, 29 Apr 2026 11:00:59 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1297191.1573299; Wed, 29 Apr 2026 11:00: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 1wI2f5-0003OF-EZ; Wed, 29 Apr 2026 11:00:59 +0000
Received: by outflank-mailman (input) for mailman id 1297191;
 Wed, 29 Apr 2026 11:00:58 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <Luca.Fancellu@arm.com>) id 1wI2f4-0003O9-5e
 for xen-devel@lists.xenproject.org; Wed, 29 Apr 2026 11:00:58 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wI2f1-002MYY-SP
 for xen-devel@lists.xenproject.org; Wed, 29 Apr 2026 13:00:57 +0200
Received: from [10.42.69.8] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <Luca.Fancellu@arm.com>)
 id 69f1e4e4-bab6-0a2a0a5309dd-0a2a4508b4ca-20
 for <xen-devel@lists.xenproject.org>; Wed, 29 Apr 2026 13:00:57 +0200
Received: from [52.101.66.23]
 (helo=DUZPR83CU001.outbound.protection.outlook.com)
 by tlsNG-c1860d.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.1)
 (envelope-from <Luca.Fancellu@arm.com>)
 id 69f1e4e8-63b5-0a2a45080019-34654217682e-4
 for <xen-devel@lists.xenproject.org>; Wed, 29 Apr 2026 13:00:57 +0200
Received: from CWLP123CA0199.GBRP123.PROD.OUTLOOK.COM (2603:10a6:400:19c::21)
 by AS8PR08MB9645.eurprd08.prod.outlook.com (2603:10a6:20b:61a::20)
 with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9870.18; Wed, 29 Apr
 2026 11:00:49 +0000
Received: from AM2PEPF0001C714.eurprd05.prod.outlook.com
 (2603:10a6:400:19c:cafe::54) by CWLP123CA0199.outlook.office365.com
 (2603:10a6:400:19c::21) with Microsoft SMTP Server (version=TLS1_3,
 cipher=TLS_AES_256_GCM_SHA384) id 15.20.9846.30 via Frontend Transport; Wed,
 29 Apr 2026 11:00:49 +0000
Received: from outbound-uk1.az.dlp.m.darktrace.com (4.158.2.129) by
 AM2PEPF0001C714.mail.protection.outlook.com (10.167.16.184) with Microsoft
 SMTP Server (version=TLS1_3, cipher=TLS_AES_256_GCM_SHA384) id 15.20.9846.18
 via Frontend Transport; Wed, 29 Apr 2026 11:00:48 +0000
Received: from DU2PR08MB7272.eurprd08.prod.outlook.com (2603:10a6:10:2d7::16)
 by AS1PR08MB7402.eurprd08.prod.outlook.com (2603:10a6:20b:4c6::17)
 with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9870.18; Wed, 29 Apr
 2026 10:59:42 +0000
Received: from DU2PR08MB7272.eurprd08.prod.outlook.com
 ([fe80::5d34:206f:373:a323]) by DU2PR08MB7272.eurprd08.prod.outlook.com
 ([fe80::5d34:206f:373:a323%6]) with mapi id 15.20.9846.025; Wed, 29 Apr 2026
 10:59: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=arm.com header.i="@arm.com" header.h="From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck"; dkim=pass header.s=selector1 header.d=arm.com header.i="@arm.com" header.h="From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck"
ARC-Seal: i=2; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=pass;
 b=EnGThWMZ2JKhXiegrYtDlDOEywv1Dzio+DpIkCvrf0M4o+Y32R/XkWW2vnhB2100vK+FNmJpp8k1W3umNdHS5KkmV/uYcbPaB1xtztPWiipYWE2SPOzDw+S82eGG0Q5L+UnIqI9Qi7KO7SpW7q7Y0On67LNv0tU3K2tCQWCzoyyQvSepxleqAsukutidBfPJtrpUyvEV7sQoQFhLSdKEOMg3O7tccVMKjetJBm51jZhZo0cKPCnVnu6YdmuwVXBi1AFatway+rrNbwshJXHjrS88e2DESEcftObhUfSq1X+tuF2RZv2woPgpelvw0kYYDPGNKDjDrP17p8NDPqEB5g==
ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com;
 s=arcselector10001;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1;
 bh=oWl6hUn8dnN4r97Jn4cC62/WM9wERjsWrVDmFzDmdB0=;
 b=uVY2VR1R5JFStgdqHFTXUC6Je41valN+H6uRGr8u+Pu9kHFWepTYG9+IgPDBAOjBeEzM4Okl6t5/VRmVNg8yG5HWj6E17Q/p/HAbFKpCcUC9AGN1oosPsKb832dGJ9dQPdPh3xuRLfLM1zUKjNU6dqepbU8WA6hh2nB/kl3DcEf8HgzFhAFPdj0Atl8xCZSn7lo7G0OuX59wtD7pvgpicJJ2EwPZtTrMpDNylzWIWa85QVJq+6rcG8t+2NLZDgQoY7H59d4Q9x6IXYvOyZpc2RQS1eUB6ZUIAg7AHTXHbnil0L4uHartEGV8wXVIldOvfW8vOzxwdCinQJoopwMr3A==
ARC-Authentication-Results: i=2; mx.microsoft.com 1; spf=pass (sender ip is
 4.158.2.129) smtp.rcpttodomain=gmail.com smtp.mailfrom=arm.com; dmarc=pass
 (p=none sp=none pct=100) action=none header.from=arm.com; dkim=pass
 (signature was verified) header.d=arm.com; arc=pass (0 oda=1 ltdi=1
 spf=[1,1,smtp.mailfrom=arm.com] dkim=[1,1,header.d=arm.com]
 dmarc=[1,1,header.from=arm.com])
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=arm.com; s=selector1;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck;
 bh=oWl6hUn8dnN4r97Jn4cC62/WM9wERjsWrVDmFzDmdB0=;
 b=hU29RBnd9SxcK38tLfHStzX56jq1Q8ac0aFbxt6C2z5tIlqa/7gQd37kUpfm+xdYG3/QPnodhjY/cCbrXlmaBO6mwwRthvZ4P9dHpuGyek0jSVJ48QmccrdkB8WkII1lUMGCC46vxPMo5Va7wKsGgEyKy27dGoDAgtpdwr8yGQo=
X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 4.158.2.129)
 smtp.mailfrom=arm.com; dkim=pass (signature was verified)
 header.d=arm.com;dmarc=pass action=none header.from=arm.com;
Received-SPF: Pass (protection.outlook.com: domain of arm.com designates
 4.158.2.129 as permitted sender) receiver=protection.outlook.com;
 client-ip=4.158.2.129; helo=outbound-uk1.az.dlp.m.darktrace.com; pr=C
ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none;
 b=eFKc5TkqqWUqM0znAOznmtuVE8tze9XCzRk0///YQXjD6GK+7NvBxhtRQgOm40/2VUYzNRGYQc7sU2MrOMBGV1F4//iqRzkXy6LNOllRCoISUUxPh1MxnenpthqxfBpRnQyL5tF/+2wA59jHBAYaJsVw1pw7Tt2zDQm5bNJlP2RxTc25LFrBbnkQx5cWZxCniafDHKxeL4wM3I4TplWyjsheGbrU4ZaII4bUc+jGlHR131fz6Up7b5EYx7GP5O1gkDfIgXObY+STft1GRNPXrKP+3eHwT3za5He2VFAcyYvLJnu5skkFHBHWmkmm5vHi0d5KB+CyL8hF08bnfmjhZA==
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com;
 s=arcselector10001;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1;
 bh=oWl6hUn8dnN4r97Jn4cC62/WM9wERjsWrVDmFzDmdB0=;
 b=uDsBfMqKd6jLqTJLYGkgyz/SjfisqKniHMkQcwGxhIvT59uIEN07l1NtGCL3QmngrUGnb75KOSqHM3Rjf+mQXDOSe1m83eewSQ9fOruReXEPB+eJk5fJPCSwbqRJaP2XCiYJ47NSFLeyncf0MENuUL+D2kdSukmI9MTBbPKp3I9UtfU3zufcpPapf3xjh8K7g952LJaxryS+Rn96jk0DcNbrfjW+exyp3aGLRnFyB/XgKPMAPEvBjhQUxTdvBFPeTpHoCRT4KBx/vHFzq2R5mIWoJUypJiCZwbksYL5WUJuUw6OxxCyHWeS1KcKyapMK6ohc2vp9+Z5hV7l65T77TA==
ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass
 smtp.mailfrom=arm.com; dmarc=pass action=none header.from=arm.com; dkim=pass
 header.d=arm.com; arc=none
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=arm.com; s=selector1;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck;
 bh=oWl6hUn8dnN4r97Jn4cC62/WM9wERjsWrVDmFzDmdB0=;
 b=hU29RBnd9SxcK38tLfHStzX56jq1Q8ac0aFbxt6C2z5tIlqa/7gQd37kUpfm+xdYG3/QPnodhjY/cCbrXlmaBO6mwwRthvZ4P9dHpuGyek0jSVJ48QmccrdkB8WkII1lUMGCC46vxPMo5Va7wKsGgEyKy27dGoDAgtpdwr8yGQo=
From: Luca Fancellu <Luca.Fancellu@arm.com>
To: Oleksii Kurochko <oleksii.kurochko@gmail.com>
CC: "xen-devel@lists.xenproject.org" <xen-devel@lists.xenproject.org>, Romain
 Caritey <Romain.Caritey@microchip.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.pau@citrix.com>
Subject: Re: [PATCH v4 02/11] xen/dom0less: rename kernel_zimage_probe() to
 kernel_image_probe()
Thread-Topic: [PATCH v4 02/11] xen/dom0less: rename kernel_zimage_probe() to
 kernel_image_probe()
Thread-Index: AQHc1xwVOtsB2tnchEy3Q2x22NSmlrX14DKA
Date: Wed, 29 Apr 2026 10:59:42 +0000
Message-ID: <EA0D6439-CA9E-450A-80BA-442A7C8F0A28@arm.com>
References: <cover.1777303844.git.oleksii.kurochko@gmail.com>
 <d87dd4f04e3f0d421485091cf434a088f6693641.1777303844.git.oleksii.kurochko@gmail.com>
In-Reply-To:
 <d87dd4f04e3f0d421485091cf434a088f6693641.1777303844.git.oleksii.kurochko@gmail.com>
Accept-Language: en-GB, en-US
Content-Language: en-US
X-MS-Has-Attach:
X-MS-TNEF-Correlator:
x-mailer: Apple Mail (2.3826.700.81.1.6)
Authentication-Results-Original: dkim=none (message not signed)
 header.d=none;dmarc=none action=none header.from=arm.com;
x-ms-traffictypediagnostic:
	DU2PR08MB7272:EE_|AS1PR08MB7402:EE_|AM2PEPF0001C714:EE_|AS8PR08MB9645:EE_
X-MS-Office365-Filtering-Correlation-Id: c8bd5f8b-ac1a-42b1-a391-08dea5de9245
x-checkrecipientrouted: true
nodisclaimer: true
X-MS-Exchange-SenderADCheck: 1
X-MS-Exchange-AntiSpam-Relay: 0
X-Microsoft-Antispam-Untrusted:
 BCL:0;ARA:13230040|1800799024|7416014|366016|376014|38070700021|18002099003|22082099003|56012099003;
X-Microsoft-Antispam-Message-Info-Original:
 n3Ry3R7wtrjsgDVOJYp7OrS80lUqo3T1SF0BezRYBpzWIjqElV0bZy8WYi4bZ4XF9DdLOZ8RFEe5PnRoZt1ns6941109MdjqlpFlq9igyAmVUP3clfyJ2tGj3VKZEDfkmFsjoTLGAT8i5cLvmrWAa1a0s0AUoh+3qq19J6/GIrn2q0Sm022kZYWICGzsx4blbj+IXvHAKrHGIIVjPt/F6c9ycJ02JP9IibBXS0Am5sOW8Fan2NRSJSwYY/XDwAogZhIpXW2daqcb0TjV3DoagKQFgyk+LeWzx2aJTWfZJUKUhVsVuEPM2I4TldV4bC1Y0wxj1qAP2UJToIFijrl0EtPivr/aDgJmLUxvmuV21aXQ/gdz82RCTNCtM6s8Fy9Sf42gD7HrHbbHcTrepxTznjC/SChpQEnYm6NsjoyXBI5JbEmNHXkR3yrQXFoxs36yBZZ9Cjp1jPDSSxPd/fLwbl/Vqf2aDQCQdhfNT4Q01WSZL/JXXsFk1RTdsppiVywNS7pOPYfdzVYHUXwJY5cirobJoBAUgxirD7iZZzSZIMBFVGT8kyagF+8r9YnIQZSk3ABOxZ1vrL7fDeMFmTrIiF1Iz9LAsoqMlzMpokAz22y896RbM2ihiQbMLkAeXW6BI3a/1+DwyreG3SerlgdnIDAMO2rgXwvXbqvqxxnKstZvA8zJEZ0xIWxjSLKtkknw4i5KoO33onYd0N9xX2e20FvID2Xz5oEPfB3MBhMIY0KzPgSuVR/S++A9gjhugz+KDmsAwBJ5rp3cs/xIEPuu5BQfTk8NAfVyNp/h6rYsp6I=
X-Forefront-Antispam-Report-Untrusted:
 CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:DU2PR08MB7272.eurprd08.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(1800799024)(7416014)(366016)(376014)(38070700021)(18002099003)(22082099003)(56012099003);DIR:OUT;SFP:1101;
Content-Type: text/plain; charset="iso-8859-1"
Content-ID: <5C6A879BF4D1E845AC43DC14C3E3AD82@eurprd08.prod.outlook.com>
Content-Transfer-Encoding: quoted-printable
MIME-Version: 1.0
X-Exchange-RoutingPolicyChecked:
 CJ/5GjduRz750ORSQlfqINCtviWVH2J1ElqLAprpKFQtM5o589hU/to5rJkSULyjxS8vMjN5PrxPD7Li5ZNDn/2geYuTmXZES5vXHWjyLpQ96tjGhsj2BxktrAgc9xKlrzIORVHIgdN1TKeN2mt7qj/N1rXRYpzyALGGLJubxSlQ2Vl0bb58ZBO+t/jv1H3+Sw5H4WhH9CPAC0IxszMqrzf6R69CAKdn25gG/mccGBz+n9JubzRdHrb2Pj7aXVcZA//Jas4XjJc04Q1pOG0lQ/N8I/7SdNLrphPh7+61iAs2AFeLxEg1FUgNAUcMjCxsCC0Y2xhJRLPR3ktSwZDmmw==
X-MS-Exchange-Transport-CrossTenantHeadersStamped: AS1PR08MB7402
X-EOPAttributedMessage: 0
X-MS-Exchange-Transport-CrossTenantHeadersStripped:
 AM2PEPF0001C714.eurprd05.prod.outlook.com
X-MS-PublicTrafficType: Email
X-MS-Office365-Filtering-Correlation-Id-Prvs:
	7cf2ab06-76e3-43f1-2962-08dea5de6a9b
X-Microsoft-Antispam:
	BCL:0;ARA:13230040|1800799024|35042699022|36860700016|14060799003|376014|82310400026|7416014|22082099003|18002099003|56012099003;
X-Microsoft-Antispam-Message-Info:
	gC2rTodMeEffiV4X62W9KvAiR3IURg3dwI/CiR5zEAxcvRE1+HTjBkfu/a/p5uLlGqPG6bN7toS/PlyeFO6SGYvHK0llG+LZhb6P2owUg9tQPcPV3ViVsO9R6LW+tl+prBD6hn2QAJ5WACZP1rp+fteEcDkfrM6QNShsZUWajLXSjse890jd6dfDAXLxsu1vC1VUX9ipSLoq/m0ZutLAHD0c60XUpB3AnBXRBa/bIkDyCDVL/W45LNCzyEpob4tPnw3f/6FdkbZEzO1E44iZ7rBJBzU4oGgutNxd0eHDkxJ7cmud7IgCMJrdVx+HyFSMJFk/iQ0/3PqmCeJEyBjGpDlK7zyqIfFUC4YYlA2swhTUavtNESFEte+RII09NlTMF51cW3OloMd4LtOy61sBg0jEQ6X39F8R0o3ax46yKcLlMo75xMsmbutIMq4BdAhSdm3GlCi62Bbb2JhsDNKX9Wqd6H0R8pXe0E5OrgEyQtdcbrJS88TtHSRP/ZDEm9rYrZqd5sZeZ56I6x+Q6dwNOlKkbhTckDjuaDeltQXSOT83c91XShYXaC47uso6945xLXn0Kslw5zANQvUy0amXT91uXehI9BxCoBv7+dghYa31TgEoAu1LBA0y2hXpbdtgoV9a0lLqowh/gd26hH5JmxBxcek/ni6tghKtIfdfE1Relk1xaH0rxEpo2qGn2V+jfUZyV0aczgekY4+Z1pDDuMzZGKhbndbzOWUh/anZ+Vs=
X-Forefront-Antispam-Report:
	CIP:4.158.2.129;CTRY:GB;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:outbound-uk1.az.dlp.m.darktrace.com;PTR:InfoDomainNonexistent;CAT:NONE;SFS:(13230040)(1800799024)(35042699022)(36860700016)(14060799003)(376014)(82310400026)(7416014)(22082099003)(18002099003)(56012099003);DIR:OUT;SFP:1101;
X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1
X-MS-Exchange-AntiSpam-MessageData-0:
	0zd1ORJvinb8LkzN41ehLeP2JpfOoODk2KBc5BdrotYwFTRzMxg5lGPFawmnaKdURtPxGdX1VIrgSGBvgcL0nX86GxOvTsLBBuBKGIfC/X7jW9nXzp3pHvXls2iwkBgLJa18jEPJVSsuxYyNny8jD4xvedyvYBN1kDiHOSqczkqL+6hqVun267TA4zuX3FKyj2AkWKijSujudaC82R6o6/41EFb9+T3d3EwhHT2e7ZvbVhjUvHIs6qbi+NI5QmrsNqBog0og5ZO12e0ysJokOtmRmpQGiyyAojLY6xonfoYvZCXGrSgAnAouqZeAecY7Q1XbqVM1JAf96nVJCgff4ihRVLC2qsfA++xJdamSXMTc8LIbKMVNVzwlTfDXfWulbcqXXPxuLNyL7Givj6VnhIIlobDd2G4ggY0UHljSL2BlYif00BuFob4gz3V5xHww
X-OriginatorOrg: arm.com
X-MS-Exchange-CrossTenant-OriginalArrivalTime: 29 Apr 2026 11:00:48.7551
 (UTC)
X-MS-Exchange-CrossTenant-Network-Message-Id: c8bd5f8b-ac1a-42b1-a391-08dea5de9245
X-MS-Exchange-CrossTenant-Id: f34e5979-57d9-4aaa-ad4d-b122a662184d
X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=f34e5979-57d9-4aaa-ad4d-b122a662184d;Ip=[4.158.2.129];Helo=[outbound-uk1.az.dlp.m.darktrace.com]
X-MS-Exchange-CrossTenant-AuthSource:
	AM2PEPF0001C714.eurprd05.prod.outlook.com
X-MS-Exchange-CrossTenant-AuthAs: Anonymous
X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem
X-MS-Exchange-Transport-CrossTenantHeadersStamped: AS8PR08MB9645
X-purgate-ID: tlsNG-c1860d/1777460457-38567DB1-70AEBAC8/0/0
X-purgate-type: clean
X-purgate-size: 4465

Hi Oleksii,

>=20
> diff --git a/xen/arch/arm/kernel.c b/xen/arch/arm/kernel.c
> index 9395b5af8745..a5554714cd7b 100644
> --- a/xen/arch/arm/kernel.c
> +++ b/xen/arch/arm/kernel.c
> @@ -101,8 +101,8 @@ static paddr_t __init kernel_zimage_place(struct kern=
el_info *info)
>     paddr_t load_addr;
>=20
> #ifdef CONFIG_HAS_DOMAIN_TYPE
> -    if ( (info->type =3D=3D DOMAIN_64BIT) && (info->zimage.start =3D=3D =
0) )
> -        return mem->bank[0].start + info->zimage.text_offset;
> +    if ( (info->type =3D=3D DOMAIN_64BIT) && (info->image.start =3D=3D 0=
) )
> +        return mem->bank[0].start + info->image.text_offset;
> #endif
>=20
>     /*
> @@ -111,19 +111,19 @@ static paddr_t __init kernel_zimage_place(struct ke=
rnel_info *info)
>      * and above 32MiB. Load it as high as possible within these
>      * constraints, while also avoiding the DTB.
>      */
> -    if ( info->zimage.start =3D=3D 0 )
> +    if ( info->image.start =3D=3D 0 )
>     {
>         paddr_t load_end;
>=20
>         load_end =3D mem->bank[0].start + mem->bank[0].size;
>         load_end =3D MIN(mem->bank[0].start + MB(128), load_end);
>=20
> -        load_addr =3D load_end - info->zimage.len;
> +        load_addr =3D load_end - info->image.len;
>         /* Align to 2MB */
>         load_addr &=3D ~((2 << 20) - 1);
>     }
>     else
> -        load_addr =3D info->zimage.start;
> +        load_addr =3D info->image.start;
>=20
>     return load_addr;
> }
> @@ -131,8 +131,8 @@ static paddr_t __init kernel_zimage_place(struct kern=
el_info *info)
> static void __init kernel_zimage_load(struct kernel_info *info)
> {
>     paddr_t load_addr =3D kernel_zimage_place(info);
> -    paddr_t paddr =3D info->zimage.kernel_addr;
> -    paddr_t len =3D info->zimage.len;
> +    paddr_t paddr =3D info->image.kernel_addr;
> +    paddr_t len =3D info->image.len;
>     void *kernel;
>     int rc;
>=20
> @@ -215,7 +215,7 @@ int __init kernel_uimage_probe(struct kernel_info *in=
fo,
>         return -EOPNOTSUPP;
>     }
>=20
> -    info->zimage.start =3D be32_to_cpu(uimage.load);
> +    info->image.start =3D be32_to_cpu(uimage.load);
>     info->entry =3D be32_to_cpu(uimage.ep);
>=20
>     /*
> @@ -224,20 +224,20 @@ int __init kernel_uimage_probe(struct kernel_info *=
info,
>      * independent image. That means Xen is free to load such an image at
>      * any valid address.
>      */
> -    if ( info->zimage.start =3D=3D 0 )
> +    if ( info->image.start =3D=3D 0 )
>         printk(XENLOG_INFO
>                "No load address provided. Xen will decide where to load i=
t.\n");
>     else
>         printk(XENLOG_INFO
>                "Provided load address: %"PRIpaddr" and entry address: %"P=
RIpaddr"\n",
> -               info->zimage.start, info->entry);
> +               info->image.start, info->entry);
>=20
>     /*
>      * If the image supports position independent execution, then user ca=
nnot
>      * provide an entry point as Xen will load such an image at any appro=
priate
>      * memory address. Thus, we need to return error.
>      */
> -    if ( (info->zimage.start =3D=3D 0) && (info->entry !=3D 0) )
> +    if ( (info->image.start =3D=3D 0) && (info->entry !=3D 0) )
>     {
>         printk(XENLOG_ERR
>                "Entry point cannot be non zero for PIE image.\n");
> @@ -257,13 +257,13 @@ int __init kernel_uimage_probe(struct kernel_info *=
info,
>         if ( rc )
>             return rc;
>=20
> -        info->zimage.kernel_addr =3D mod->start;
> -        info->zimage.len =3D mod->size;
> +        info->image.kernel_addr =3D mod->start;
> +        info->image.len =3D mod->size;
>     }
>     else
>     {
> -        info->zimage.kernel_addr =3D addr + sizeof(uimage);
> -        info->zimage.len =3D len;
> +        info->image.kernel_addr =3D addr + sizeof(uimage);
> +        info->image.len =3D len;
>     }
>=20
>     info->load =3D kernel_zimage_load;
> @@ -289,7 +289,7 @@ int __init kernel_uimage_probe(struct kernel_info *in=
fo,
>      * Thus, Xen uses uimage.load attribute to determine the load address=
 and
>      * zimage.text_offset is ignored.

Should we update the comment as well?

Also in here:
https://xenbits.xen.org/gitweb/?p=3Dxen.git;a=3Dblob;f=3Dxen/include/xen/fd=
t-kernel.h;h=3D4d0467bb396a9cf317954fd511469e7f56d67844;hb=3Drefs/heads/sta=
ging#l111

Cheers,
Luca



From xen-devel-bounces@lists.xenproject.org Wed Apr 29 11:10:35 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 29 Apr 2026 11:10:35 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1297182.1573309 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wI2oH-0005EV-Fl; Wed, 29 Apr 2026 11:10:29 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1297182.1573309; Wed, 29 Apr 2026 11:10: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 1wI2oH-0005EO-C1; Wed, 29 Apr 2026 11:10:29 +0000
Received: by outflank-mailman (input) for mailman id 1297182;
 Wed, 29 Apr 2026 10:25:40 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <usama.arif@linux.dev>) id 1wI26t-0006Yd-2S
 for xen-devel@lists.xenproject.org; Wed, 29 Apr 2026 10:25:40 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wI26q-008D0W-KH
 for xen-devel@lists.xenproject.org; Wed, 29 Apr 2026 12:25:37 +0200
Received: from [10.42.69.6] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <usama.arif@linux.dev>)
 id 69f1dc83-2eae-0a2a0a5409dd-0a2a45069404-38
 for <xen-devel@lists.xenproject.org>; Wed, 29 Apr 2026 12:25:35 +0200
Received: from [95.215.58.178] (helo=out-178.mta1.migadu.com)
 by tlsNG-16d1c6.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.1)
 (envelope-from <usama.arif@linux.dev>)
 id 69f1dc9e-7371-0a2a45060019-5fd73ab27d0c-3
 for <xen-devel@lists.xenproject.org>; Wed, 29 Apr 2026 12:25:34 +0200
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@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:Subject:Date:Message-ID:To:Cc:MIME-Version:Content-Transfer-Encoding:In-Reply-To:References"
X-Report-Abuse: Please report any abuse attempt to abuse@migadu.com and include these headers.
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linux.dev; s=key1;
	t=1777458333;
	h=from:from:reply-to:subject:subject:date:date:message-id:message-id:
	 to:to:cc:cc:mime-version:mime-version:
	 content-transfer-encoding:content-transfer-encoding:
	 in-reply-to:in-reply-to:references:references;
	bh=0ubnPqyEuUH+bb9tWP9+TOUp+n6C5onOR58LCuBDEiw=;
	b=syDuJ2ebh9z2sjffREH58o0aT6Ajjew8W5I8ReEUtvp2EQkdghmYv8iT9JcU1iX87oMIbX
	D+xmbMoFNHgWVKDoL6XEe6kPFjJgAeA5FQrv1tK/6uUbSyjmFqItMdxDS/n3eJA5ihtrWC
	pDy1LXDxeyfrSgRVjezaD0bM6Fa+Scc=
From: Usama Arif <usama.arif@linux.dev>
To: "Christophe Leroy (CS GROUP)" <chleroy@kernel.org>
Cc: Usama Arif <usama.arif@linux.dev>,
	Yury Norov <ynorov@nvidia.com>,
	Andrew Morton <akpm@linux-foundation.org>,
	Linus Torvalds <torvalds@linux-foundation.org>,
	David Laight <david.laight.linux@gmail.com>,
	Thomas Gleixner <tglx@linutronix.de>,
	linux-alpha@vger.kernel.org,
	linux-kernel@vger.kernel.org,
	linux-snps-arc@lists.infradead.org,
	linux-arm-kernel@lists.infradead.org,
	linux-mips@vger.kernel.org,
	linuxppc-dev@lists.ozlabs.org,
	kvm@vger.kernel.org,
	linux-riscv@lists.infradead.org,
	linux-s390@vger.kernel.org,
	sparclinux@vger.kernel.org,
	linux-um@lists.infradead.org,
	dmaengine@vger.kernel.org,
	linux-efi@vger.kernel.org,
	linux-fsi@lists.ozlabs.org,
	amd-gfx@lists.freedesktop.org,
	dri-devel@lists.freedesktop.org,
	intel-gfx@lists.freedesktop.org,
	linux-wpan@vger.kernel.org,
	netdev@vger.kernel.org,
	linux-wireless@vger.kernel.org,
	linux-spi@vger.kernel.org,
	linux-media@vger.kernel.org,
	linux-staging@lists.linux.dev,
	linux-serial@vger.kernel.org,
	linux-usb@vger.kernel.org,
	xen-devel@lists.xenproject.org,
	linux-fsdevel@vger.kernel.org,
	ocfs2-devel@lists.linux.dev,
	bpf@vger.kernel.org,
	kasan-dev@googlegroups.com,
	linux-mm@kvack.org,
	linux-x25@vger.kernel.org,
	rust-for-linux@vger.kernel.org,
	linux-sound@vger.kernel.org,
	sound-open-firmware@alsa-project.org,
	linux-csky@vger.kernel.org,
	linux-hexagon@vger.kernel.org,
	loongarch@lists.linux.dev,
	linux-m68k@lists.linux-m68k.org,
	linux-openrisc@vger.kernel.org,
	linux-parisc@vger.kernel.org,
	linux-sh@vger.kernel.org,
	linux-arch@vger.kernel.org
Subject: Re: [RFC PATCH v1 7/9] x86: Add unsafe_copy_from_user()
Date: Wed, 29 Apr 2026 03:25:19 -0700
Message-ID: <20260429102520.1617327-1-usama.arif@linux.dev>
In-Reply-To: <0ee46bb228d97163fbdc14f2a7c52b93d8bc34ce.1777306795.git.chleroy@kernel.org>
References: 
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit
X-Migadu-Flow: FLOW_OUT
X-purgate-ID: tlsNG-16d1c6/1777458335-50158D75-F176F709/0/0
X-purgate-type: clean
X-purgate-size: 2700

On Mon, 27 Apr 2026 19:13:48 +0200 "Christophe Leroy (CS GROUP)" <chleroy@kernel.org> wrote:

> At the time being, x86 and arm64 are missing unsafe_copy_from_user().
> 
> Add it.
> 
> Signed-off-by: Christophe Leroy (CS GROUP) <chleroy@kernel.org>
> ---
>  arch/x86/include/asm/uaccess.h | 29 ++++++++++++++++++++++++-----
>  1 file changed, 24 insertions(+), 5 deletions(-)
> 
> diff --git a/arch/x86/include/asm/uaccess.h b/arch/x86/include/asm/uaccess.h
> index 3a0dd3c2b233..10c458ffa399 100644
> --- a/arch/x86/include/asm/uaccess.h
> +++ b/arch/x86/include/asm/uaccess.h
> @@ -598,7 +598,7 @@ _label:									\
>   * We want the unsafe accessors to always be inlined and use
>   * the error labels - thus the macro games.
>   */
> -#define unsafe_copy_loop(dst, src, len, type, label)				\
> +#define unsafe_put_loop(dst, src, len, type, label)				\
>  	while (len >= sizeof(type)) {						\
>  		unsafe_put_user(*(type *)(src),(type __user *)(dst),label);	\
>  		dst += sizeof(type);						\
> @@ -611,10 +611,29 @@ do {									\
>  	char __user *__ucu_dst = (_dst);				\
>  	const char *__ucu_src = (_src);					\
>  	size_t __ucu_len = (_len);					\
> -	unsafe_copy_loop(__ucu_dst, __ucu_src, __ucu_len, u64, label);	\
> -	unsafe_copy_loop(__ucu_dst, __ucu_src, __ucu_len, u32, label);	\
> -	unsafe_copy_loop(__ucu_dst, __ucu_src, __ucu_len, u16, label);	\
> -	unsafe_copy_loop(__ucu_dst, __ucu_src, __ucu_len, u8, label);	\
> +	unsafe_put_loop(__ucu_dst, __ucu_src, __ucu_len, u64, label);	\
> +	unsafe_put_loop(__ucu_dst, __ucu_src, __ucu_len, u32, label);	\
> +	unsafe_put_loop(__ucu_dst, __ucu_src, __ucu_len, u16, label);	\
> +	unsafe_put_loop(__ucu_dst, __ucu_src, __ucu_len, u8, label);	\
> +} while (0)
> +
> +#define unsafe_get_loop(dst, src, len, type, label)				\
> +	while (len >= sizeof(type)) {						\
> +		unsafe_get_user(*(type __user *)(src),(type *)(dst),label);	\

Hi,

Just wanted to check if src and dst need to be swapped? Same for arm64 patch.

> +		dst += sizeof(type);						\
> +		src += sizeof(type);						\
> +		len -= sizeof(type);						\
> +	}
> +
> +#define unsafe_copy_from_user(_dst,_src,_len,label)			\
> +do {									\
> +	char *__ucu_dst = (_dst);					\
> +	const char __user *__ucu_src = (_src);				\
> +	size_t __ucu_len = (_len);					\
> +	unsafe_get_loop(__ucu_dst, __ucu_src, __ucu_len, u64, label);	\
> +	unsafe_get_loop(__ucu_dst, __ucu_src, __ucu_len, u32, label);	\
> +	unsafe_get_loop(__ucu_dst, __ucu_src, __ucu_len, u16, label);	\
> +	unsafe_get_loop(__ucu_dst, __ucu_src, __ucu_len, u8, label);	\
>  } while (0)
>  
>  #ifdef CONFIG_CC_HAS_ASM_GOTO_OUTPUT
> -- 
> 2.49.0
> 
> 


From xen-devel-bounces@lists.xenproject.org Wed Apr 29 11:12:13 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 29 Apr 2026 11:12:13 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1297210.1573317 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wI2pu-0005iA-PN; Wed, 29 Apr 2026 11:12:10 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1297210.1573317; Wed, 29 Apr 2026 11:12: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 1wI2pu-0005i3-MM; Wed, 29 Apr 2026 11:12:10 +0000
Received: by outflank-mailman (input) for mailman id 1297210;
 Wed, 29 Apr 2026 11:12: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 1wI2ps-0005hv-I1
 for xen-devel@lists.xenproject.org; Wed, 29 Apr 2026 11:12:08 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wI2pr-003bA3-U3
 for xen-devel@lists.xenproject.org; Wed, 29 Apr 2026 13:12:07 +0200
Received: from [10.42.69.8] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <Michal.Orzel@amd.com>)
 id 69f1e784-5cb7-0a2a0a5109dd-0a2a4508cb6a-6
 for <xen-devel@lists.xenproject.org>; Wed, 29 Apr 2026 13:12:07 +0200
Received: from [52.101.57.50]
 (helo=BN8PR05CU002.outbound.protection.outlook.com)
 by tlsNG-c1860d.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.1)
 (envelope-from <Michal.Orzel@amd.com>)
 id 69f1e785-63b5-0a2a45080019-34653932951c-4
 for <xen-devel@lists.xenproject.org>; Wed, 29 Apr 2026 13:12:07 +0200
Received: from SJ0PR13CA0080.namprd13.prod.outlook.com (2603:10b6:a03:2c4::25)
 by DM6PR12MB4217.namprd12.prod.outlook.com (2603:10b6:5:219::24) with
 Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9870.17; Wed, 29 Apr
 2026 11:12:02 +0000
Received: from SJ1PEPF0000231A.namprd03.prod.outlook.com
 (2603:10b6:a03:2c4:cafe::73) by SJ0PR13CA0080.outlook.office365.com
 (2603:10b6:a03:2c4::25) with Microsoft SMTP Server (version=TLS1_3,
 cipher=TLS_AES_256_GCM_SHA384) id 15.20.9870.16 via Frontend Transport; Wed,
 29 Apr 2026 11:12:01 +0000
Received: from satlexmb07.amd.com (165.204.84.17) by
 SJ1PEPF0000231A.mail.protection.outlook.com (10.167.242.231) with Microsoft
 SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id
 15.20.9846.18 via Frontend Transport; Wed, 29 Apr 2026 11:12:01 +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.17; Wed, 29 Apr
 2026 06:12:00 -0500
Received: from [10.252.145.116] (10.180.168.240) by satlexmb07.amd.com
 (10.181.42.216) with Microsoft SMTP Server id 15.2.2562.17 via Frontend
 Transport; Wed, 29 Apr 2026 06:11:58 -0500
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@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=JY2QU+Bv3d9eavG3kWFDtSbS1wfd/xftlcco9FD9n3MAZ7AOliO+u59VvMEBKbyFMRGgg9RQ/zjuujIpnLRTBxP8kzAa8RO3+Ex+zBlfGeCjuG5RxfZhKJmIwq9dzMyFpI1mJ6StRqviLuTtr8defX8fySOC6ORFw0MjI7V7pLTsq7sxUDYSzJij2gZRi0CEjp6hSGMtbOQ9+l/njVD81y6KRZ1S7GsHsVHivXxYb8JiyN1te7C6o51V/Seidq5yijrUrABQid8IN7HfWjwQXx4FW46MIofX3tomyLTH8AToEr2fkdYKeCVgm1zgQJcoPvj3ABT6/f3vgGGsswlbsw==
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com;
 s=arcselector10001;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1;
 bh=1OhkMHXducRriWhUH8Hmrl2Wr8sNaEW9VFkdIaPlvwY=;
 b=A3P0Usq/w8amGOUgodAMA+YNbSViEgAB8AdkNyMnUWdOdMYcq2+NXI8O8SZhGMSqXIYWLmhP7dulQxFx1oHW9CvlaGGztavZEVDpns1nYY5sS54S/ezUki5381OUk69bX4uOCZTMQeIwcHC5NlWc+dNPAf2CZYT9ChwaqNCPq0ijNwLjOxZ97q6qACN5x+xOBN8qz+/L4wtRGg0etd+pFnws0ZGrLNSxQZYusEGKjIdL6CrHQEAgckCorZwDqR2nvxkHy53jxdmjtFM+s4Bv60qL92udgRLzP2EXw/X5Pdz8dz/ZvmuYUI/E3MdQO9FOvyQGBzmwr6LzKNSNP9gnKA==
ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass (sender ip is
 165.204.84.17) smtp.rcpttodomain=arm.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=1OhkMHXducRriWhUH8Hmrl2Wr8sNaEW9VFkdIaPlvwY=;
 b=PAfVhPMhn4uonL20AMT9SXRMHBpfSYhs/ya54S5bgSgYKx9PKr+TRNe71qebFvgE032AYErvpmn77gUKzJM4G1Bk3khsAouEI5J7+leFyiJNpjog1rfmTNUyG+qe3IQgOvW7uiicDq9LCx/zkb+RmTb5sexL3Yi2igUEShz/59g=
X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 165.204.84.17)
 smtp.mailfrom=amd.com; dkim=none (message not signed)
 header.d=none;dmarc=pass action=none header.from=amd.com;
Received-SPF: Pass (protection.outlook.com: domain of amd.com designates
 165.204.84.17 as permitted sender) receiver=protection.outlook.com;
 client-ip=165.204.84.17; helo=satlexmb07.amd.com; pr=C
Message-ID: <93da1c54-e812-41d4-9201-cabdc3fd6411@amd.com>
Date: Wed, 29 Apr 2026 13:11:58 +0200
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH v4 1/3] arm/mpu: implement setup_virt_paging for MPU
 systems
To: Luca Fancellu <luca.fancellu@arm.com>, <xen-devel@lists.xenproject.org>
CC: Penny Zheng <Penny.Zheng@arm.com>, Stefano Stabellini
	<sstabellini@kernel.org>, Julien Grall <julien@xen.org>, Bertrand Marquis
	<bertrand.marquis@arm.com>, Volodymyr Babchuk <Volodymyr_Babchuk@epam.com>,
	Wei Chen <wei.chen@arm.com>, Hari Limaye <hari.limaye@arm.com>, Harry Ramsey
	<harry.ramsey@arm.com>
References: <20260420142224.1802911-1-luca.fancellu@arm.com>
 <20260420142224.1802911-2-luca.fancellu@arm.com>
From: "Orzel, Michal" <michal.orzel@amd.com>
Content-Language: en-US
In-Reply-To: <20260420142224.1802911-2-luca.fancellu@arm.com>
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: 7bit
X-EOPAttributedMessage: 0
X-MS-PublicTrafficType: Email
X-MS-TrafficTypeDiagnostic: SJ1PEPF0000231A:EE_|DM6PR12MB4217:EE_
X-MS-Office365-Filtering-Correlation-Id: 63e39cf2-a4f0-4c12-3c99-08dea5e02345
X-MS-Exchange-SenderADCheck: 1
X-MS-Exchange-AntiSpam-Relay: 0
X-Microsoft-Antispam:
	BCL:0;ARA:13230040|376014|7416014|1800799024|82310400026|36860700016|56012099003|22082099003|18002099003;
X-Microsoft-Antispam-Message-Info:
	VgK8C2ItFq0XvHwz7f1DONkV1JKJmvLwXCpE90rmyIeS2+za99R9OGlJD5vBIXd6+plbNQIsCrRAMmhYLK7w7Vs7eutVQf1q9clJOcDj73sL48MAnGha7Qk9Yjp6yboFjunNCrf6JsfoF4SMPaP+Og1bUj7nF8b0LS8OMhIQL6cus82cLd7CHwy95/Fp9aezpaGJm+Bk2vpQN6NA4VkDCm/+X0KpDAk1FRyyCxS/4L0g2wlC8i4OBVs0qVm93mp4u9gSfJSYmOt1i9P5X6zuQyjJnqwElltAGMuo6E1ORbg+J6NvGuDTnLxfYpYSk3HmW09pMIkAJdUzwfVDFYTjrsubwpVLkBPqNafP1w5ZG26xMT3oc3BCTN6oE61MFjA9h2Va7pZC43HtwETBAjEBPEcZ/Ic0uflcAbXvNA87R9ZIohr9KPkxA9QG8uk3D7mOja1xYRmUUYhblbRm4JAtwXBRryMJpy2gU5QZPLtX0EXSZfmnHmLznZpgdG45RLDm5ziybffUnBXVRS/nFeqp+9zdGuFjeCwLLEhuQfeUOPCEbbtwlcwzxga2S3OBmQ0Fnm3SXCpNFpDsSzDxJqxxBUvX3HK+Wjrs7NG9vmAM9bvGPXEqo0pvShVNgvV8ec9O065bex2p8pVFzXsxVxov2tQm3gowPNou8DpH0vHcUEjYgfbQzM1is1101z9eiNBu+OIDaRNXWBpekWHWNmq/XX5Bzq9tbB3wGP+X71hs+b0q0Bd9zFm2YtcnHDwoHM0XLlxu+Y1ILS06d70/Gw3pew==
X-Forefront-Antispam-Report:
	CIP:165.204.84.17;CTRY:US;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:satlexmb07.amd.com;PTR:InfoDomainNonexistent;CAT:NONE;SFS:(13230040)(376014)(7416014)(1800799024)(82310400026)(36860700016)(56012099003)(22082099003)(18002099003);DIR:OUT;SFP:1101;
X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1
X-MS-Exchange-AntiSpam-MessageData-0:
	/SoOinoy3PY2coPrSh2Ei1iWQHaoj1okdCr0YzYr52XZxokwK6VxwoGpYbhN7jV4V0VxEFlv4bzjzlsrRD4NbS+UovbVLaVnSUr4vl7iRJ+QX9dC5brbr5wzBsoU1XZAlh0UnHw9OJZDuhz5tYNwpdwnkJ/Jp2j+DiwlvXd4q4e/z2Zbc8aiwibuyi3Kl5bu50cjepX7r+eoB8LjNL06dYxG00cw44lVnDpIC3NR7Wvqr4qYZ6RP5aSLoqhfgfs4oVahcq02VuTUk/1Fxn4mXigaaSdvOEkPdMNzslQ9h1FJ+qEDSUGIkysnneoBYAF3vUN8ORnYqqXHGQOx6EL2YtmtmdfKFYEhwvI/07KbNwb93w8lF45vDETgz2GH27aMhx1F9o41RPbepywAlMaEEKb4n0e2FBad5S1vV+c6VFRlYVpX3sHKvco9QIU7cgFW
X-OriginatorOrg: amd.com
X-MS-Exchange-CrossTenant-OriginalArrivalTime: 29 Apr 2026 11:12:01.4845
 (UTC)
X-MS-Exchange-CrossTenant-Network-Message-Id: 63e39cf2-a4f0-4c12-3c99-08dea5e02345
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:
	SJ1PEPF0000231A.namprd03.prod.outlook.com
X-MS-Exchange-CrossTenant-AuthAs: Anonymous
X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem
X-MS-Exchange-Transport-CrossTenantHeadersStamped: DM6PR12MB4217
X-purgate-ID: tlsNG-c1860d/1777461127-C0B64DB1-12EA0F7C/0/0
X-purgate-type: clean
X-purgate-size: 4976



On 20-Apr-26 16:22, Luca Fancellu wrote:
> From: Penny Zheng <Penny.Zheng@arm.com>
> 
> Implement setup_virt_paging for AArch64 MPU systems, taking care of
> stage 2 address translation regime, IPA bits, supported VMID length
> configuration and VTCR_EL2/VSTCR_EL2 register programming.
> 
> Implement also the Armv8-R specific changes to ID_AA64MMFR0_EL1,
> related to the supported memory system architecture (PMSA/VMSA)
> and check that when MPU is built, the underlying HW is compatible
> with PMSA. By default MPU at EL2 and EL1 is required.
> 
> Signed-off-by: Penny Zheng <penny.zheng@arm.com>
> Signed-off-by: Wei Chen <wei.chen@arm.com>
> Signed-off-by: Luca Fancellu <luca.fancellu@arm.com>
> Signed-off-by: Hari Limaye <hari.limaye@arm.com>
> Signed-off-by: Harry Ramsey <harry.ramsey@arm.com>
> ---
> v4:
> - Fixed typo in the comments
> - Fixed typo in the commit title and message
> - moved p2m_vmid_allocator_init() after write of
>   VTCR_EL2
> - Fixed printf format specifier %d -> %u
> v3:
> - Refactor unused code to more relevant commits.
> - Add P2M print information
> - Formatting issues
> - Update commit message
> v2:
> - Separate commit into multiple commits
> ---
>  xen/arch/arm/arm64/mpu/p2m.c             | 80 +++++++++++++++++++++++-
>  xen/arch/arm/include/asm/arm64/sysregs.h |  4 ++
>  xen/arch/arm/include/asm/cpufeature.h    | 13 +++-
>  xen/arch/arm/include/asm/processor.h     |  8 +++
>  4 files changed, 101 insertions(+), 4 deletions(-)
> 
> diff --git a/xen/arch/arm/arm64/mpu/p2m.c b/xen/arch/arm/arm64/mpu/p2m.c
> index b6d8b2777b58..a39a1fc38946 100644
> --- a/xen/arch/arm/arm64/mpu/p2m.c
> +++ b/xen/arch/arm/arm64/mpu/p2m.c
> @@ -2,11 +2,89 @@
>  
>  #include <xen/bug.h>
>  #include <xen/init.h>
> +#include <xen/lib.h>
>  #include <asm/p2m.h>
>  
>  void __init setup_virt_paging(void)
>  {
> -    BUG_ON("unimplemented");
> +    register_t vtcr_el2 = READ_SYSREG(VTCR_EL2);
> +    register_t vstcr_el2 = READ_SYSREG(VSTCR_EL2);
> +
> +    /* PA size */
> +    const unsigned int pa_range_info[] = {32, 36, 40, 42, 44, 48, 52, 0,
> +                                          /* Invalid */};
> +
> +    /*
> +     * Restrict "p2m_ipa_bits" if needed. As P2M table is always configured
> +     * with IPA bits == PA bits, compare against PA size.
> +     */
> +    if ( pa_range_info[system_cpuinfo.mm64.pa_range] < p2m_ipa_bits )
> +        p2m_ipa_bits = pa_range_info[system_cpuinfo.mm64.pa_range];
> +
> +    /*
> +     * The MSA and MSA_frac fields in the ID_AA64MMFR0_EL1 register identify the
> +     * memory system configurations supported. In Armv8-R AArch64, the
> +     * only permitted value for ID_AA64MMFR0_EL1.MSA is 0b1111.
> +     */
> +    if ( system_cpuinfo.mm64.msa != MM64_MSA_PMSA_SUPPORT )
> +        goto fault;
> +
> +    /* Permitted values for ID_AA64MMFR0_EL1.MSA_frac are 0b0001 and 0b0010. */
> +    if ( (system_cpuinfo.mm64.msa_frac != MM64_MSA_FRAC_PMSA_SUPPORT) &&
> +         (system_cpuinfo.mm64.msa_frac != MM64_MSA_FRAC_VMSA_SUPPORT) )
> +        goto fault;
> +
> +    /* Stage 1 EL1&0 translation regime uses PMSAv8 by default */
> +    vtcr_el2 &= ~VTCR_MSA;
> +
> +    /*
> +     * Clear VTCR_EL2.NSA bit to configure non-secure stage 2 translation output
> +     * address space to access the Secure PA space as Armv8-R only implements
> +     * secure state.
> +     */
> +    vtcr_el2 &= ~VTCR_NSA;
> +
> +    /*
> +     * cpuinfo sanitization makes sure we support 16-bits VMID only if all cores
> +     * are supporting it.
> +     *
> +     * Set the VS bit only if 16 bit VMID is supported.
> +     */
> +    if ( system_cpuinfo.mm64.vmid_bits == MM64_VMID_16_BITS_SUPPORT )
> +    {
> +        vtcr_el2 |= VTCR_VS;
> +        max_vmid = MAX_VMID_16_BIT;
> +    }
> +    else
> +        vtcr_el2 &= ~VTCR_VS;
> +
> +    WRITE_SYSREG(vtcr_el2, VTCR_EL2);
> +
> +    p2m_vmid_allocator_init();
> +
> +    /*
> +     * VSTCR_EL2.SA defines secure stage 2 translation output address space.
> +     * To make sure that all stage 2 translations for the Secure PA space access
> +     * the Secure PA space, we keep SA bit as 0.
> +     *
> +     * VSTCR_EL2.SC is NS check enable bit. To make sure that Stage 2 NS
> +     * configuration is checked against stage 1 NS configuration in EL1&0
> +     * translation regime for the given address, and generates a fault if they
> +     * are different, we set SC bit 1.
> +     */
> +    vstcr_el2 &= ~VSTCR_EL2_SA;
> +    vstcr_el2 |= VSTCR_EL2_SC;
> +    WRITE_SYSREG(vstcr_el2, VSTCR_EL2);
> +
> +    printk("P2M: %u-bit IPA with %u-bit PA and %u-bit VMID\n",
> +           p2m_ipa_bits,
> +           pa_range_info[system_cpuinfo.mm64.pa_range],
> +           ( MAX_VMID == MAX_VMID_16_BIT ) ? 16 : 8);
NIT: No need for spaces between ().

Reviewed-by: Michal Orzel <michal.orzel@amd.com>

~Michal



From xen-devel-bounces@lists.xenproject.org Wed Apr 29 11:27:04 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 29 Apr 2026 11:27:04 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1297223.1573329 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wI343-0007ju-WA; Wed, 29 Apr 2026 11:26:47 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1297223.1573329; Wed, 29 Apr 2026 11: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 1wI343-0007jn-TZ; Wed, 29 Apr 2026 11:26:47 +0000
Received: by outflank-mailman (input) for mailman id 1297223;
 Wed, 29 Apr 2026 11:26:45 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <will@kernel.org>) id 1wI341-0007jh-RX
 for xen-devel@lists.xenproject.org; Wed, 29 Apr 2026 11:26:45 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wI341-008Q7g-7Q
 for xen-devel@lists.xenproject.org; Wed, 29 Apr 2026 13:26:45 +0200
Received: from [10.42.69.9] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <will@kernel.org>)
 id 69f1eaf5-e002-0a2a0a5209dd-0a2a450980a6-0
 for <xen-devel@lists.xenproject.org>; Wed, 29 Apr 2026 13:26:45 +0200
Received: from [172.234.252.31] (helo=sea.source.kernel.org)
 by tlsNG-bad1c0.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.1)
 (envelope-from <will@kernel.org>)
 id 69f1eaf3-2497-0a2a45090019-aceafc1fb7e8-3
 for <xen-devel@lists.xenproject.org>; Wed, 29 Apr 2026 13:26:44 +0200
Received: from smtp.kernel.org (transwarp.subspace.kernel.org [100.75.92.58])
 by sea.source.kernel.org (Postfix) with ESMTP id CA92D403EB;
 Wed, 29 Apr 2026 11:26:42 +0000 (UTC)
Received: by smtp.kernel.org (Postfix) with ESMTPSA id 158D1C19425;
 Wed, 29 Apr 2026 11:26: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=k20201202 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/simple; d=kernel.org;
	s=k20201202; t=1777462002;
	bh=HgV0q/+gZ9n2giWTxhUD6P3yQ6wEmY66ZwCWQHhgQ2g=;
	h=Date:From:To:Cc:Subject:References:In-Reply-To:From;
	b=ejvHWE1zJ0tb1KwQu/gVCMj0KcNhlMqCOjLI4kQmWC01EPIO4HFDTFQg5PpNyMx2F
	 7OMWgwbyfp16yd5ZKGLwfDDMuBlWK8CK9qcSIqUHZRxyhnWE4iAN+OK+xmr5WBtr4T
	 BgqmCB7r/rsFvwFu/mT2z67QkDE/mDzOf7GDi68KHsQjYM3r7svy7TXqJDW5kWsfNa
	 xYHmkznhflijvwvOUJkH6AcM42ZHWo8kZp7k26fwbFC82N/jHC8/F/rL8GlM8z6Ksh
	 UMOZ5KVH94exo80oAIrmoHKOK/k/qke5mU8V2uOXUW3Mlxuf7JynBO/Edq8wMcfI5M
	 twwrBSWDcoLLw==
Date: Wed, 29 Apr 2026 12:26:30 +0100
From: Will Deacon <will@kernel.org>
To: "Christophe Leroy (CS GROUP)" <chleroy@kernel.org>
Cc: Yury Norov <ynorov@nvidia.com>,
	Andrew Morton <akpm@linux-foundation.org>,
	Linus Torvalds <torvalds@linux-foundation.org>,
	David Laight <david.laight.linux@gmail.com>,
	Thomas Gleixner <tglx@linutronix.de>, linux-alpha@vger.kernel.org,
	linux-kernel@vger.kernel.org, linux-snps-arc@lists.infradead.org,
	linux-arm-kernel@lists.infradead.org, linux-mips@vger.kernel.org,
	linuxppc-dev@lists.ozlabs.org, kvm@vger.kernel.org,
	linux-riscv@lists.infradead.org, linux-s390@vger.kernel.org,
	sparclinux@vger.kernel.org, linux-um@lists.infradead.org,
	dmaengine@vger.kernel.org, linux-efi@vger.kernel.org,
	linux-fsi@lists.ozlabs.org, amd-gfx@lists.freedesktop.org,
	dri-devel@lists.freedesktop.org, intel-gfx@lists.freedesktop.org,
	linux-wpan@vger.kernel.org, netdev@vger.kernel.org,
	linux-wireless@vger.kernel.org, linux-spi@vger.kernel.org,
	linux-media@vger.kernel.org, linux-staging@lists.linux.dev,
	linux-serial@vger.kernel.org, linux-usb@vger.kernel.org,
	xen-devel@lists.xenproject.org, linux-fsdevel@vger.kernel.org,
	ocfs2-devel@lists.linux.dev, bpf@vger.kernel.org,
	kasan-dev@googlegroups.com, linux-mm@kvack.org,
	linux-x25@vger.kernel.org, rust-for-linux@vger.kernel.org,
	linux-sound@vger.kernel.org, sound-open-firmware@alsa-project.org,
	linux-csky@vger.kernel.org, linux-hexagon@vger.kernel.org,
	loongarch@lists.linux.dev, linux-m68k@lists.linux-m68k.org,
	linux-openrisc@vger.kernel.org, linux-parisc@vger.kernel.org,
	linux-sh@vger.kernel.org, linux-arch@vger.kernel.org,
	catalin.marinas@arm.com
Subject: Re: [RFC PATCH v1 8/9] arm64: Add unsafe_copy_from_user()
Message-ID: <afHq5vyNUJzxVwDV@willie-the-truck>
References: <cover.1777306795.git.chleroy@kernel.org>
 <5b09e58a84c9edcfe5724db5cd57e45d96a96bfa.1777306795.git.chleroy@kernel.org>
MIME-Version: 1.0
Content-Type: text/plain; charset=us-ascii
Content-Disposition: inline
In-Reply-To: <5b09e58a84c9edcfe5724db5cd57e45d96a96bfa.1777306795.git.chleroy@kernel.org>
X-purgate-ID: tlsNG-bad1c0/1777462005-416B0A53-0E96A66A/0/0
X-purgate-type: clean
X-purgate-size: 521

[+Catalin]

On Mon, Apr 27, 2026 at 07:13:49PM +0200, Christophe Leroy (CS GROUP) wrote:
> At the time being, x86 and arm64 are missing unsafe_copy_from_user().
> 
> Add it.
> 
> Signed-off-by: Christophe Leroy (CS GROUP) <chleroy@kernel.org>
> ---
>  arch/arm64/include/asm/uaccess.h | 29 ++++++++++++++++++++++++-----
>  1 file changed, 24 insertions(+), 5 deletions(-)

Why?

And please cc the arm64 maintainers on arm64 patches next time. You've
managed to cc most of the world apart from us.

Will


From xen-devel-bounces@lists.xenproject.org Wed Apr 29 11:53:22 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 29 Apr 2026 11:53:22 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1297238.1573338 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wI3Tf-000487-UX; Wed, 29 Apr 2026 11:53:15 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1297238.1573338; Wed, 29 Apr 2026 11:53: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 1wI3Tf-000480-Rt; Wed, 29 Apr 2026 11:53:15 +0000
Received: by outflank-mailman (input) for mailman id 1297238;
 Wed, 29 Apr 2026 11:53:15 +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 1wI3Te-00047u-TB
 for xen-devel@lists.xenproject.org; Wed, 29 Apr 2026 11:53:15 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wI3Te-005628-8s
 for xen-devel@lists.xenproject.org; Wed, 29 Apr 2026 13:53:14 +0200
Received: from [10.42.69.5] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <Michal.Orzel@amd.com>)
 id 69f1f129-e002-0a2a0a5209dd-0a2a4505a384-0
 for <xen-devel@lists.xenproject.org>; Wed, 29 Apr 2026 13:53:13 +0200
Received: from [52.101.48.55]
 (helo=MW6PR02CU001.outbound.protection.outlook.com)
 by tlsNG-c201ff.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.1)
 (envelope-from <Michal.Orzel@amd.com>)
 id 69f1f127-aaa8-0a2a45050019-34653037c223-3
 for <xen-devel@lists.xenproject.org>; Wed, 29 Apr 2026 13:53:13 +0200
Received: from CH5P221CA0021.NAMP221.PROD.OUTLOOK.COM (2603:10b6:610:1f2::8)
 by BL3PR12MB9050.namprd12.prod.outlook.com (2603:10b6:208:3b9::13) with
 Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9870.20; Wed, 29 Apr
 2026 11:53:05 +0000
Received: from CH2PEPF00000148.namprd02.prod.outlook.com
 (2603:10b6:610:1f2:cafe::1d) 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.20.9846.30 via Frontend Transport; Wed,
 29 Apr 2026 11:53:05 +0000
Received: from satlexmb08.amd.com (165.204.84.17) by
 CH2PEPF00000148.mail.protection.outlook.com (10.167.244.105) with Microsoft
 SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id
 15.20.9846.18 via Frontend Transport; Wed, 29 Apr 2026 11:53:05 +0000
Received: from SATLEXMB04.amd.com (10.181.40.145) by satlexmb08.amd.com
 (10.181.42.217) with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.2.2562.17; Wed, 29 Apr
 2026 06:53:04 -0500
Received: from satlexmb08.amd.com (10.181.42.217) by SATLEXMB04.amd.com
 (10.181.40.145) with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2507.39; Wed, 29 Apr
 2026 06:53:04 -0500
Received: from [10.252.145.116] (10.180.168.240) by satlexmb08.amd.com
 (10.181.42.217) with Microsoft SMTP Server id 15.2.2562.17 via Frontend
 Transport; Wed, 29 Apr 2026 06:53:01 -0500
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@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=OXtJ1GJYSoxKzokmNkyYG6IxIG6KBrW1EvQVgV1iARDd4FxYU7XHpCs8tMh/GuyDsDXpBqhtAEIqUWvG7RqdJU7Br07wyU/ymfHijvvrRTnJwHmzd1j8lDGn9eBwxY75Vue1PAtFOIAabYIH+RLEV2lDuhsA7wy/WaHjiuDpHlJ+JltwcsjXZlwXiS7Y4TO3F6WU00T0T/Y9Si6Cd4Z0gNnITB1bImpA1au5T0aIj5EZyZi6mguyHxyKLirJ0B0PHin3e5/7R58cVytEwbwhF+lUudHt1SYwX/fjz7ifqH96whHEVU8bh9reT7zV3mRnK3JOaJoXhSMAGS8NPnj0Jg==
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com;
 s=arcselector10001;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1;
 bh=aSUccJ2NiKOgcdgBVQpHeOeKuu5G/GBUlOydb9+9OS8=;
 b=RtGcqWRlSN/cjMrhc16Tm462uUaoSxGe5Gqr0tTkCUoYT7K04Pd5OxCpsxjXus1pJ+VpOC8YnrapbLWpgyZXb5ig+qqBU7xXIT64w9T+yaGr1SNjs1bF/gp1JI28OZVmmo5RJQ9qeN6DvNBsD57erQZhf/hREitKEDBxKfuKW12uAkeOBEAYYbTNd8KldBFjclreGLJvAP70Dr00VDqx02XjTgHvDBs40CXpcSoRS2yOk7Qu4lHVO38y6SFwq05JarhfigFmuswqOTFxQR/Sb7IrEWtYiJk2nWvPYtDOsjHYVswIp4WXXV17EOxh3iCpjs3oHjAiYvtvOsZ8Cwabzw==
ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass (sender ip is
 165.204.84.17) smtp.rcpttodomain=arm.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=aSUccJ2NiKOgcdgBVQpHeOeKuu5G/GBUlOydb9+9OS8=;
 b=bSOFWZq2tLGbH9FYPFK4OncwHjdXHwFJJgErt3rMYiMl8q35yNEF1rM65rg4M5BzMdmihyC0L8TjlwcWcE3hTYVed08g8osnR15AvmmQXiT680THC13kkY4vawgOYVFWMwlI8QphmJUCB+ysvsTwSKRQPjmMp+wUNuxNqSX+cn0=
X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 165.204.84.17)
 smtp.mailfrom=amd.com; dkim=none (message not signed)
 header.d=none;dmarc=pass action=none header.from=amd.com;
Received-SPF: Pass (protection.outlook.com: domain of amd.com designates
 165.204.84.17 as permitted sender) receiver=protection.outlook.com;
 client-ip=165.204.84.17; helo=satlexmb08.amd.com; pr=C
Message-ID: <6ba6db51-3ff0-4ecd-9f86-03735e7dfc05@amd.com>
Date: Wed, 29 Apr 2026 13:53:01 +0200
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH v4 2/3] arm/mpu: Introduce `v8r_el1_msa` device tree
 property for domains
To: Luca Fancellu <luca.fancellu@arm.com>, <xen-devel@lists.xenproject.org>
CC: Harry Ramsey <harry.ramsey@arm.com>, 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.pau@citrix.com>
References: <20260420142224.1802911-1-luca.fancellu@arm.com>
 <20260420142224.1802911-3-luca.fancellu@arm.com>
From: "Orzel, Michal" <michal.orzel@amd.com>
Content-Language: en-US
In-Reply-To: <20260420142224.1802911-3-luca.fancellu@arm.com>
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: 7bit
Received-SPF: None (SATLEXMB04.amd.com: michal.orzel@amd.com does not
 designate permitted sender hosts)
X-EOPAttributedMessage: 0
X-MS-PublicTrafficType: Email
X-MS-TrafficTypeDiagnostic: CH2PEPF00000148:EE_|BL3PR12MB9050:EE_
X-MS-Office365-Filtering-Correlation-Id: a842c483-bee4-4a72-e10b-08dea5e5dfe3
X-MS-Exchange-SenderADCheck: 1
X-MS-Exchange-AntiSpam-Relay: 0
X-Microsoft-Antispam:
	BCL:0;ARA:13230040|82310400026|1800799024|36860700016|7416014|376014|56012099003|22082099003|18002099003;
X-Microsoft-Antispam-Message-Info:
	QFEVf/FyZqmli+baGr6sgqGBBLu6MzeOtAHgC/aXm2VxjUYh36QKqB8BP/pCpIc4yiFMNjJVrhh37DU+MlDz0NiiJ7oL9+LlF62hfgRHQXPXCBfTBeu0w82jHzJqRRO9HhTfCshMvpo64MvmRhztB9BCwcj0rRCGUHhOzbxt/CRrUdUo1ApfHsZz7mn4wMjeVwUdVrzPIThYU7r7FiWOCW+ddLNwmFHerPshHCsuCVVzB1Fpn/o/cie1NGWY4dmVj4yPYMJQtNayEApjU/cQ+Ezy+CLMHy8Tl6wGaRusARtYd21tRJm10EvkbRI6OQLSvxqCQC6dQAkTIY/yOOYcr4W080l0gwrLhqSlS2B4IY/4FF7K9DCJtiYF2ln1kY+GAoPZLvy0fuocxASA1gnRzDJ8gbReqIaUQQ+ndS/a8nthCZLSyv1WYxtCsnQ3lB3VeioxwOk3NxkoaQuq0wkyDxr8HYx9dBivUXloBls8iPO71P0cfBQUVemwys7vz0oJ48uz11cxvUTZORGSVgicnvmNqKPvK9sTu3VGx27Df6557FoafxByVzYvLxnX8rmbqlBBaCXQsdFqYqeMZW0plHVz2jMctELZhUdyGiWEZRX66qq4kZIt4SuCEyg2Qgj5tEAZr0wukhQ202gX9Vk88PUJolXbIBtH8NwSERsh3shc6UnaAe9kCRfFZIDWnchYZEMpLP2PcAVTlFqSiRii1b/UssqmjFVvXLiDd2ibrUI5vzIfZrYRU2gpL6RgBem05irWzPT5KoahwnZmFFJ/JQ==
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)(1800799024)(36860700016)(7416014)(376014)(56012099003)(22082099003)(18002099003);DIR:OUT;SFP:1101;
X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1
X-MS-Exchange-AntiSpam-MessageData-0:
	XhdL2p0dgJFrw/Z5Df2XMdYJqDTsAElBEUeVUYydB2FdUre4l9lhJkOp6f8nx/qQKSl/9TwjkfA8/5/Zf90P6XZ7EAqsrVamWdfgorFIWLyF0Huloy14HglD2Rd/INWblUCNcdctUWdEVG/Me1orlhiWwGHJiHtnnKWhPEAqxKnSu+o1FP3U/JyhkhRDJyLp+nKTiMcF/ASIiQsBUmnzX9fsJdeV4Vze5oOTVQ3CgrNBCAqFy8tFd/M9NPXsHsMzHbQpWCYHVbD6ghZmj/E20KOJwQPvJEpgFVXwib9L7ZD2wr0zaAcH9bM1TLsBX+3jigG1wsYp8YzIDC4OBmPiVvPxkGlSj2UzD0/zPpZJApkvI0Q7t+vhoYW6xztx+x+992wgxikV0K7cXYIM8zMDmQVA0ZY+HC6VwVfizj1iS9E+kRU91SNfkONSrzt7QO40
X-OriginatorOrg: amd.com
X-MS-Exchange-CrossTenant-OriginalArrivalTime: 29 Apr 2026 11:53:05.4991
 (UTC)
X-MS-Exchange-CrossTenant-Network-Message-Id: a842c483-bee4-4a72-e10b-08dea5e5dfe3
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:
	CH2PEPF00000148.namprd02.prod.outlook.com
X-MS-Exchange-CrossTenant-AuthAs: Anonymous
X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem
X-MS-Exchange-Transport-CrossTenantHeadersStamped: BL3PR12MB9050
X-purgate-ID: tlsNG-c201ff/1777463593-E1FDA443-60848554/0/0
X-purgate-type: clean
X-purgate-size: 15877



On 20-Apr-26 16:22, Luca Fancellu wrote:
> From: Harry Ramsey <harry.ramsey@arm.com>
> 
> Add a new device tree property `v8r_el1_msa` to select the MSA (memory
> system architecture) at EL1 for Armv8-R architecture: MPU or MMU, the
> former is the default if the property is not passed.
> 
> The check and setting of this new input parameter for the guest
> configuration is performed in arch_domain_create() instead of the more
> usual arch_sanitise_domain_config() because the former has access to the
> Xen internal guest creation flags which are required to ensure PMSA can
> work (domain requires static allocation and direct mapping).
> 
> The property is valid only when used on MPU systems and will result in
> a panic on MMU ones.
> 
> Bumped XEN_DOMCTL_INTERFACE_VERSION because of the new domctl input
> parameter.
> 
> Signed-off-by: Harry Ramsey <harry.ramsey@arm.com>
> Signed-off-by: Luca Fancellu <luca.fancellu@arm.com>
> ---
> v4:
> - Rework the patch to have the v8r_el1_msa input parameter more
>   enclosed in the Armv8-A (mmu)/Armv8-R (mpu) space.
> v3:
> - Improve commit message and device tree property description
> - Remove macro protection
> - Remove unused function is_mpu_domain
> - Code formatting
> ---
>  docs/misc/arm/device-tree/booting.txt       | 14 ++++
>  xen/arch/arm/dom0less-build.c               |  3 +
>  xen/arch/arm/domain.c                       |  4 ++
>  xen/arch/arm/include/asm/domain.h           |  4 ++
>  xen/arch/arm/include/asm/domain_build.h     |  8 +++
>  xen/arch/arm/include/asm/mmu/domain-build.h | 46 +++++++++++++
>  xen/arch/arm/include/asm/mpu.h              |  5 ++
>  xen/arch/arm/include/asm/mpu/domain-build.h | 27 ++++++++
>  xen/arch/arm/mpu/Makefile                   |  1 +
>  xen/arch/arm/mpu/arm32/mm.c                 |  5 ++
>  xen/arch/arm/mpu/arm64/mm.c                 |  5 ++
>  xen/arch/arm/mpu/domain-build.c             | 76 +++++++++++++++++++++
>  xen/include/public/arch-arm.h               |  7 ++
>  xen/include/public/domctl.h                 |  4 +-
>  14 files changed, 207 insertions(+), 2 deletions(-)
>  create mode 100644 xen/arch/arm/include/asm/mmu/domain-build.h
>  create mode 100644 xen/arch/arm/include/asm/mpu/domain-build.h
>  create mode 100644 xen/arch/arm/mpu/domain-build.c
> 
> diff --git a/docs/misc/arm/device-tree/booting.txt b/docs/misc/arm/device-tree/booting.txt
> index 977b4286082f..c3f484a3b01a 100644
> --- a/docs/misc/arm/device-tree/booting.txt
> +++ b/docs/misc/arm/device-tree/booting.txt
> @@ -322,6 +322,20 @@ with the following properties:
>      Should be used together with scmi-smc-passthrough Xen command line
>      option.
>  
> +- v8r_el1_msa
> +
> +    A string property specifying whether, on Armv8-R systems, a domain
> +    should use PMSAv8 (MPU) at EL1 or VMSAv8 (MMU) at EL1.
Instead of repeating at EL1 you could move it next to "on Armv8R systems"

> +
> +    - "mmu"
> +    Enables VMSAv8 at EL1. This requires hardware support and is only
> +    optionally available on AArch64.
Maybe it's due to the combination of words but it does not immediately tell that
it's not present on AArch32. I would add: "Not supported on AArch32".

> +
> +    - "mpu"
> +    Enables PMSAv8 at EL1. This is the default behaviour when the property is
> +    not passed. This configuration requires static allocation (xen,static-mem)
> +    and direct mapping (direct-map).
> +
>  Under the "xen,domain" compatible node, one or more sub-nodes are present
>  for the DomU kernel and ramdisk.
>  
> diff --git a/xen/arch/arm/dom0less-build.c b/xen/arch/arm/dom0less-build.c
> index 4181c105389a..6f0256f9d825 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/grant_table.h>
> +#include <asm/mpu.h>
>  #include <asm/setup.h>
>  
>  #ifdef CONFIG_VGICV2
> @@ -322,6 +323,8 @@ int __init arch_parse_dom0less_node(struct dt_device_node *node,
>      if ( domu_dt_sci_parse(node, d_cfg) )
>          panic("Error getting SCI configuration\n");
>  
> +    arch_dt_v8r_el1_msa_parse(node, d_cfg);
"arch" prefix should be used by functions called from the common code that have
arch-specific implementation. This is not the case for functions you're
introducing here, so please drop this prefix.

Also, I would continue using the SCI approach e.g. call it domu_dt_msa_parse()
and decide to panic at the call site rather than making this decision in the
function itself.

> +
>      if ( !dt_property_read_u32(node, "nr_spis", &d_cfg->arch.nr_spis) )
>      {
>          int vpl011_virq = GUEST_VPL011_SPI;
> diff --git a/xen/arch/arm/domain.c b/xen/arch/arm/domain.c
> index 26380a807cad..dfa7ace1141b 100644
> --- a/xen/arch/arm/domain.c
> +++ b/xen/arch/arm/domain.c
> @@ -18,6 +18,7 @@
>  #include <asm/cpuerrata.h>
>  #include <asm/cpufeature.h>
>  #include <asm/current.h>
> +#include <asm/domain_build.h>
>  #include <asm/event.h>
>  #include <asm/gic.h>
>  #include <asm/guest_atomics.h>
> @@ -725,6 +726,9 @@ int arch_domain_create(struct domain *d,
>      if ( (rc = sci_domain_init(d, config)) != 0 )
>          goto fail;
>  
> +    if ( (rc = arch_set_v8r_el1_msa(d, config, flags)) != 0 )
> +        goto fail;
> +
>      return 0;
>  
>  fail:
> diff --git a/xen/arch/arm/include/asm/domain.h b/xen/arch/arm/include/asm/domain.h
> index ffe5d0d9f0a6..4a3fb825962b 100644
> --- a/xen/arch/arm/include/asm/domain.h
> +++ b/xen/arch/arm/include/asm/domain.h
> @@ -128,6 +128,10 @@ struct arch_domain
>  #endif
>  
>      struct resume_info resume_ctx;
> +
> +#ifdef CONFIG_MPU
> +    uint8_t v8r_el1_msa;
> +#endif
>  }  __cacheline_aligned;
>  
>  struct arch_vcpu
> diff --git a/xen/arch/arm/include/asm/domain_build.h b/xen/arch/arm/include/asm/domain_build.h
> index 6674dac5e2f8..921d6f98f4f4 100644
> --- a/xen/arch/arm/include/asm/domain_build.h
> +++ b/xen/arch/arm/include/asm/domain_build.h
> @@ -4,6 +4,14 @@
>  #include <xen/fdt-kernel.h>
>  #include <xen/sched.h>
>  
> +#if defined(CONFIG_MMU)
> +#include <asm/mmu/domain-build.h>
> +#elif defined(CONFIG_MPU)
> +#include <asm/mpu/domain-build.h>
> +#else
> +# error "Unknown memory management layout"
I don't think that this error msg is correct for domain build.

> +#endif
> +
>  typedef __be32 gic_interrupt_t[3];
>  int make_psci_node(void *fdt);
>  void evtchn_allocate(struct domain *d);
> diff --git a/xen/arch/arm/include/asm/mmu/domain-build.h b/xen/arch/arm/include/asm/mmu/domain-build.h
> new file mode 100644
> index 000000000000..3e0d9a6a2a08
> --- /dev/null
> +++ b/xen/arch/arm/include/asm/mmu/domain-build.h
> @@ -0,0 +1,46 @@
> +/* SPDX-License-Identifier: GPL-2.0-only */
> +
> +#ifndef __ARM_MMU_DOMAIN_BUILD_H__
> +#define __ARM_MMU_DOMAIN_BUILD_H__
> +
> +#include <xen/device_tree.h>
> +#include <xen/errno.h>
> +#include <xen/sched.h>
> +#include <xen/types.h>
> +#include <public/domctl.h>
> +
> +static inline
> +void arch_dt_v8r_el1_msa_parse(struct dt_device_node *node,
> +                               struct xen_domctl_createdomain *d_cfg)
> +{
> +    const char *v8r_el1_msa;
> +
> +    if ( !dt_property_read_string(node, "v8r_el1_msa", &v8r_el1_msa) )
> +        panic("'v8r_el1_msa' property found, but CONFIG_MPU not selected\n");
> +}
> +
> +static inline
> +int arch_set_v8r_el1_msa(struct domain *d,
> +                         const struct xen_domctl_createdomain *config,
> +                         unsigned int flags)
> +{
> +    if ( config->arch.v8r_el1_msa )
> +    {
> +        dprintk(XENLOG_INFO,
> +                "arch.v8r_el1_msa set, but CONFIG_MPU not selected\n");
> +        return -EINVAL;
> +    }
> +
> +    return 0;
> +}
> +
> +#endif /* __ARM_MMU_DOMAIN_BUILD_H__ */
> +
> +/*
> + * Local variables:
> + * mode: C
> + * c-file-style: "BSD"
> + * c-basic-offset: 4
> + * indent-tabs-mode: nil
> + * End:
> + */
> diff --git a/xen/arch/arm/include/asm/mpu.h b/xen/arch/arm/include/asm/mpu.h
> index 72fa5b00b861..8a8c01086206 100644
> --- a/xen/arch/arm/include/asm/mpu.h
> +++ b/xen/arch/arm/include/asm/mpu.h
> @@ -27,6 +27,11 @@
>  
>  #ifndef __ASSEMBLER__
>  
> +/*
> + * Utility function to determine if an Armv8-R processor supports VMSA.
> + */
NIT: No need for multi-line comment for a single sentence that can fit in one line.

> +bool has_v8r_vmsa_support(void);
> +
>  /*
>   * Set base address of MPU protection region.
>   *
> diff --git a/xen/arch/arm/include/asm/mpu/domain-build.h b/xen/arch/arm/include/asm/mpu/domain-build.h
> new file mode 100644
> index 000000000000..463cd85b5b7e
> --- /dev/null
> +++ b/xen/arch/arm/include/asm/mpu/domain-build.h
> @@ -0,0 +1,27 @@
> +/* SPDX-License-Identifier: GPL-2.0-only */
> +
> +#ifndef __ARM_MPU_DOMAIN_BUILD_H__
> +#define __ARM_MPU_DOMAIN_BUILD_H__
> +
> +#include <xen/device_tree.h>
> +#include <xen/sched.h>
> +#include <xen/types.h>
> +#include <public/domctl.h>
> +
> +void arch_dt_v8r_el1_msa_parse(struct dt_device_node *node,
> +                               struct xen_domctl_createdomain *d_cfg);
> +
> +int arch_set_v8r_el1_msa(struct domain *d,
> +                         const struct xen_domctl_createdomain *config,
> +                         unsigned int flags);
> +
> +#endif /* __ARM_MPU_DOMAIN_BUILD_H__ */
> +
> +/*
> + * Local variables:
> + * mode: C
> + * c-file-style: "BSD"
> + * c-basic-offset: 4
> + * indent-tabs-mode: nil
> + * End:
> + */
> diff --git a/xen/arch/arm/mpu/Makefile b/xen/arch/arm/mpu/Makefile
> index 3327fadd5d0e..e3997e41b81b 100644
> --- a/xen/arch/arm/mpu/Makefile
> +++ b/xen/arch/arm/mpu/Makefile
> @@ -1,5 +1,6 @@
>  obj-$(CONFIG_ARM_32) += arm32/
>  obj-$(CONFIG_ARM_64) += arm64/
> +obj-y += domain-build.o
>  obj-y += domain-page.o
>  obj-y += mm.o
>  obj-y += p2m.o
> diff --git a/xen/arch/arm/mpu/arm32/mm.c b/xen/arch/arm/mpu/arm32/mm.c
> index a4673c351141..5eaeb3400e6c 100644
> --- a/xen/arch/arm/mpu/arm32/mm.c
> +++ b/xen/arch/arm/mpu/arm32/mm.c
> @@ -38,6 +38,11 @@
>          break;                                            \
>      }
>  
> +bool has_v8r_vmsa_support(void)
> +{
> +    return false;
> +}
> +
>  /*
>   * Armv8-R supports direct access and indirect access to the MPU regions through
>   * registers:
> diff --git a/xen/arch/arm/mpu/arm64/mm.c b/xen/arch/arm/mpu/arm64/mm.c
> index ed643cad4073..b07e729a7d05 100644
> --- a/xen/arch/arm/mpu/arm64/mm.c
> +++ b/xen/arch/arm/mpu/arm64/mm.c
> @@ -32,6 +32,11 @@
>          break;                                                  \
>      }
>  
> +bool has_v8r_vmsa_support(void)
> +{
> +    return system_cpuinfo.mm64.msa_frac == MM64_MSA_FRAC_VMSA_SUPPORT;
> +}
> +
>  /*
>   * Armv8-R supports direct access and indirect access to the MPU regions through
>   * registers:
> diff --git a/xen/arch/arm/mpu/domain-build.c b/xen/arch/arm/mpu/domain-build.c
> new file mode 100644
> index 000000000000..1bdd0ffedebb
> --- /dev/null
> +++ b/xen/arch/arm/mpu/domain-build.c
> @@ -0,0 +1,76 @@
> +/* SPDX-License-Identifier: GPL-2.0-only */
> +
> +#include <xen/device_tree.h>
> +#include <xen/domain.h>
> +#include <xen/errno.h>
> +#include <xen/init.h>
> +#include <xen/types.h>
> +#include <xen/sched.h>
> +#include <asm/mpu.h>
> +#include <asm/mpu/domain-build.h>
> +#include <public/arch-arm.h>
> +#include <public/domctl.h>
> +
> +void __init arch_dt_v8r_el1_msa_parse(struct dt_device_node *node,
> +                                      struct xen_domctl_createdomain *d_cfg)
> +{
> +    const char *v8r_el1_msa;
> +
> +    d_cfg->arch.v8r_el1_msa = XEN_DOMCTL_CONFIG_ARM_V8R_EL1_MSA_NONE;
> +
> +    if ( !dt_property_read_string(node, "v8r_el1_msa", &v8r_el1_msa) )
> +    {
> +        if ( !strcmp(v8r_el1_msa, "mmu") )
> +            d_cfg->arch.v8r_el1_msa = XEN_DOMCTL_CONFIG_ARM_V8R_EL1_MSA_VMSA;
> +        else if ( !strcmp(v8r_el1_msa, "mpu") )
> +            d_cfg->arch.v8r_el1_msa = XEN_DOMCTL_CONFIG_ARM_V8R_EL1_MSA_PMSA;
> +        else
> +            panic("Invalid device tree option for v8r_el1_msa\n");
> +    }
> +}
> +
> +int arch_set_v8r_el1_msa(struct domain *d,
> +                         const struct xen_domctl_createdomain *config,
> +                         unsigned int flags)
> +{
> +    switch ( config->arch.v8r_el1_msa )
> +    {
> +    case XEN_DOMCTL_CONFIG_ARM_V8R_EL1_MSA_NONE:
> +        fallthrough;
> +    case XEN_DOMCTL_CONFIG_ARM_V8R_EL1_MSA_PMSA:
> +        if ( !(flags & CDF_staticmem) || !(flags & CDF_directmap) )
> +        {
> +            dprintk(XENLOG_INFO,
> +                    "PMSA is not valid for domain without static allocation and direct map (v8r_el1_msa)\n");
> +            return -EINVAL;
> +        }
> +        break;
> +
> +    case XEN_DOMCTL_CONFIG_ARM_V8R_EL1_MSA_VMSA:
> +        if ( !has_v8r_vmsa_support() )
> +        {
> +            dprintk(XENLOG_INFO,
> +                    "Platform does not support VMSA at EL1 (v8r_el1_msa)\n");
> +            return -EINVAL;
> +        }
> +        break;
> +
> +    default:
> +        dprintk(XENLOG_INFO, "Unsupported arch.v8r_el1_msa value (%u)\n",
> +                config->arch.v8r_el1_msa);
> +        return -EINVAL;
> +    }
Why do we even need this split. It seems like all the above checks could be done
in arch_dt_v8r_el1_msa_parse given that it is called after static-mem,direct-map
are set. This would simplify this file and we would not even need to introduce
new domain-build split for one function.

> +
> +    d->arch.v8r_el1_msa = config->arch.v8r_el1_msa;
> +
> +    return 0;
> +}
> +
> +/*
> + * 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 cd563cf70684..7d6f87e8b2b1 100644
> --- a/xen/include/public/arch-arm.h
> +++ b/xen/include/public/arch-arm.h
> @@ -330,6 +330,10 @@ DEFINE_XEN_GUEST_HANDLE(vcpu_guest_context_t);
>  #define XEN_DOMCTL_CONFIG_ARM_SCI_NONE      0
>  #define XEN_DOMCTL_CONFIG_ARM_SCI_SCMI_SMC  1
>  
> +#define XEN_DOMCTL_CONFIG_ARM_V8R_EL1_MSA_NONE    0
> +#define XEN_DOMCTL_CONFIG_ARM_V8R_EL1_MSA_PMSA    1
> +#define XEN_DOMCTL_CONFIG_ARM_V8R_EL1_MSA_VMSA    2
> +
>  struct xen_arch_domainconfig {
>      /* IN/OUT */
>      uint8_t gic_version;
> @@ -355,6 +359,9 @@ struct xen_arch_domainconfig {
>      uint32_t clock_frequency;
>      /* IN */
>      uint8_t arm_sci_type;
> +    /* IN */
> +    uint8_t v8r_el1_msa;
> +    uint16_t pad;
Before this change there were 3B of implicit padding. Now you added 1B of data
and 2B of explicit padding. The struct size is the same, so why bumping the
interface version? I don't see it necessary here. Also, why explicit padding?
With explicit padding I do think you need to now check that it's 0.

>  };
>  #endif /* __XEN__ || __XEN_TOOLS__ */
>  
> diff --git a/xen/include/public/domctl.h b/xen/include/public/domctl.h
> index 8f6708c0a7cd..23124547f347 100644
> --- a/xen/include/public/domctl.h
> +++ b/xen/include/public/domctl.h
> @@ -30,9 +30,9 @@
>   * fields) don't require a change of the version.
>   * Stable ops are NOT covered by XEN_DOMCTL_INTERFACE_VERSION!
>   *
> - * Last version bump: Xen 4.19
> + * Last version bump: Xen 4.22
>   */
> -#define XEN_DOMCTL_INTERFACE_VERSION 0x00000017
> +#define XEN_DOMCTL_INTERFACE_VERSION 0x00000018
>  
>  /*
>   * NB. xen_domctl.domain is an IN/OUT parameter for this operation.

~Michal



From xen-devel-bounces@lists.xenproject.org Wed Apr 29 12:06:54 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 29 Apr 2026 12:06:54 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1297274.1573357 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wI3gZ-0006ej-MJ; Wed, 29 Apr 2026 12:06:35 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1297274.1573357; Wed, 29 Apr 2026 12: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 1wI3gZ-0006ec-J9; Wed, 29 Apr 2026 12:06:35 +0000
Received: by outflank-mailman (input) for mailman id 1297274;
 Wed, 29 Apr 2026 12:06:34 +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 1wI3gY-0006bB-6F
 for xen-devel@lists.xenproject.org; Wed, 29 Apr 2026 12:06:34 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wI3gX-00CWNe-Iq
 for xen-devel@lists.xenproject.org; Wed, 29 Apr 2026 14:06:33 +0200
Received: from [10.42.69.9] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <jgross@suse.com>)
 id 69f1f442-e002-0a2a0a5209dd-0a2a45098cd6-36
 for <xen-devel@lists.xenproject.org>; Wed, 29 Apr 2026 14:06:33 +0200
Received: from [195.135.223.131] (helo=smtp-out2.suse.de)
 by tlsNG-bad1c0.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.1)
 (envelope-from <jgross@suse.com>)
 id 69f1f449-2497-0a2a45090019-c387df83c7bc-3
 for <xen-devel@lists.xenproject.org>; Wed, 29 Apr 2026 14:06:33 +0200
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 E27615BCC2;
 Wed, 29 Apr 2026 12:06:32 +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 BE5C4593B0;
 Wed, 29 Apr 2026 12:06:32 +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 jV1oLUj08Wl6VQAAD6G6ig
 (envelope-from <jgross@suse.com>); Wed, 29 Apr 2026 12:06: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; none
Authentication-Results: smtp-out2.suse.de;
	none
From: Juergen Gross <jgross@suse.com>
To: xen-devel@lists.xenproject.org
Cc: Juergen Gross <jgross@suse.com>,
	Anthony PERARD <anthony.perard@vates.tech>,
	Julien Grall <julien@xen.org>,
	Jason Andryuk <jason.andryuk@amd.com>
Subject: [PATCH v2 2/4] tools/xenstored: add support for "all domains" node permission
Date: Wed, 29 Apr 2026 14:06:17 +0200
Message-ID: <20260429120619.1013440-3-jgross@suse.com>
X-Mailer: git-send-email 2.53.0
In-Reply-To: <20260429120619.1013440-1-jgross@suse.com>
References: <20260429120619.1013440-1-jgross@suse.com>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit
X-Rspamd-Pre-Result: action=no action;
	module=replies;
	Message is reply to one we originated
X-Rspamd-Queue-Id: E27615BCC2
X-Rspamd-Pre-Result: action=no action;
	module=replies;
	Message is reply to one we originated
X-Rspamd-Action: no action
X-Spam-Score: -4.00
X-Spam-Level: 
X-Spam-Flag: NO
X-Spamd-Result: default: False [-4.00 / 50.00];
	REPLY(-4.00)[]
X-Rspamd-Server: rspamd1.dmz-prg2.suse.org
X-purgate-ID: tlsNG-bad1c0/1777464393-492B2A53-7D71699E/0/0
X-purgate-type: clean
X-purgate-size: 5943

Add support for using DOMID_ANY in node permissions to indicate that
all domains are allowed to access the node.

Add a new feature bit for indicating the support of DOMID_ANY.

Signed-off-by: Juergen Gross <jgross@suse.com>
Reviewed-by: Jason Andryuk <jason.andryuk@amd.com>
---
 docs/man/xl.cfg.5.pod.in        |  4 ++++
 tools/xenstored/core.c          | 19 ++++++++++++++-----
 tools/xenstored/domain.c        | 16 ++++++++++++++--
 tools/xenstored/domain.h        |  3 ++-
 xen/include/public/io/xs_wire.h |  2 ++
 5 files changed, 36 insertions(+), 8 deletions(-)

diff --git a/docs/man/xl.cfg.5.pod.in b/docs/man/xl.cfg.5.pod.in
index 2f77016ecf..d34951edb9 100644
--- a/docs/man/xl.cfg.5.pod.in
+++ b/docs/man/xl.cfg.5.pod.in
@@ -746,6 +746,10 @@ Xenstore supports to set watches with a limited depth (depth 0 matches
 only the watched node, depth 1 matches the node and its direct children,
 etc.).
 
+=item B<0x00000008>
+
+Xenstore supports the B<all domains> node access permission.
+
 =back
 
 The features supported by the running Xenstore instance can be retrieved
diff --git a/tools/xenstored/core.c b/tools/xenstored/core.c
index 6d82111e29..7dbcd5daad 100644
--- a/tools/xenstored/core.c
+++ b/tools/xenstored/core.c
@@ -882,6 +882,16 @@ static int write_node(struct connection *conn, struct node *node,
 	return ret;
 }
 
+/* Check one node permission to match a connection. */
+static bool perm_allows_conn(const struct connection *conn,
+			     const struct xs_permissions *p)
+{
+	if (p->id == conn->id || (conn->target && p->id == conn->target->id))
+		return true;
+
+	return p->id == DOMID_ANY;
+}
+
 unsigned int perm_for_conn(struct connection *conn,
 			   const struct node_perms *perms)
 {
@@ -889,14 +899,13 @@ unsigned int perm_for_conn(struct connection *conn,
 	unsigned int mask = XS_PERM_READ|XS_PERM_WRITE|XS_PERM_OWNER;
 
 	/* Owners and tools get it all... */
-	if (!domain_is_unprivileged(conn) || perms->p[0].id == conn->id
-                || (conn->target && perms->p[0].id == conn->target->id))
+	if (!domain_is_unprivileged(conn) ||
+	    perm_allows_conn(conn, perms->p))
 		return (XS_PERM_READ|XS_PERM_WRITE|XS_PERM_OWNER) & mask;
 
 	for (i = 1; i < perms->num; i++)
 		if (!(perms->p[i].perms & XS_PERM_IGNORE) &&
-		    (perms->p[i].id == conn->id ||
-		     (conn->target && perms->p[i].id == conn->target->id)))
+		    perm_allows_conn(conn, perms->p + i))
 			return perms->p[i].perms & mask;
 
 	return perms->p[0].perms & mask;
@@ -1832,7 +1841,7 @@ static int do_set_perms(const void *ctx, struct connection *conn,
 	if (!xenstore_strings_to_perms(perms.p, perms.num, permstr))
 		return errno;
 
-	if (domain_alloc_permrefs(&perms))
+	if (domain_alloc_permrefs(conn, &perms))
 		return ENOMEM;
 	if (perms.p[0].perms & XS_PERM_IGNORE)
 		return ENOENT;
diff --git a/tools/xenstored/domain.c b/tools/xenstored/domain.c
index 00875d6b5c..7074abd197 100644
--- a/tools/xenstored/domain.c
+++ b/tools/xenstored/domain.c
@@ -44,7 +44,8 @@
 #endif
 
 #define XENSTORE_FEATURES	(XENSTORE_SERVER_FEATURE_ERROR |	\
-				 XENSTORE_SERVER_FEATURE_WATCHDEPTH)
+				 XENSTORE_SERVER_FEATURE_WATCHDEPTH |	\
+				 XENSTORE_SERVER_FEATURE_DOMID_ANY)
 
 static xenmanage_handle *xm_handle;
 xengnttab_handle **xgt_handle;
@@ -1754,8 +1755,12 @@ static bool chk_domain_generation(unsigned int domid, uint64_t gen)
  * Allocate all missing struct domain referenced by a permission set.
  * Any permission entries for not existing domains will be marked to be
  * ignored.
+ * A DOMID_ANY entry will be marked to be ignored, if the writing
+ * domain doesn't have the XENSTORE_SERVER_FEATURE_DOMID_ANY enabled. Note
+ * that Xen tools will never set DOMID_ANY for a guest owned node.
  */
-int domain_alloc_permrefs(struct node_perms *perms)
+int domain_alloc_permrefs(const struct connection *conn,
+			  struct node_perms *perms)
 {
 	unsigned int i, domid;
 	struct domain *d;
@@ -1763,6 +1768,12 @@ int domain_alloc_permrefs(struct node_perms *perms)
 
 	for (i = 0; i < perms->num; i++) {
 		domid = perms->p[i].id;
+		if (domid == DOMID_ANY) {
+			if (!(conn->domain->features &
+			      XENSTORE_SERVER_FEATURE_DOMID_ANY))
+				perms->p[i].perms |= XS_PERM_IGNORE;
+			continue;
+		}
 		d = find_domain_struct(domid);
 		if (!d) {
 			if (xenmanage_get_domain_info(xm_handle, domid, NULL,
@@ -1788,6 +1799,7 @@ int domain_adjust_node_perms(struct node *node)
 
 	for (i = 1; i < node->hdr.num_perms; i++) {
 		if ((perms[i].perms & XS_PERM_IGNORE) ||
+		    perms[i].id == DOMID_ANY ||
 		    chk_domain_generation(perms[i].id, node->hdr.generation))
 			continue;
 
diff --git a/tools/xenstored/domain.h b/tools/xenstored/domain.h
index b1cfb5cd82..7dad4849a0 100644
--- a/tools/xenstored/domain.h
+++ b/tools/xenstored/domain.h
@@ -116,7 +116,8 @@ const char *get_implicit_path(const struct connection *conn);
  */
 int domain_adjust_node_perms(struct node *node);
 
-int domain_alloc_permrefs(struct node_perms *perms);
+int domain_alloc_permrefs(const struct connection *conn,
+			  struct node_perms *perms);
 
 /* Quota manipulation */
 int domain_nbentry_inc(struct connection *conn, unsigned int domid);
diff --git a/xen/include/public/io/xs_wire.h b/xen/include/public/io/xs_wire.h
index 2e763bc877..d6533a8452 100644
--- a/xen/include/public/io/xs_wire.h
+++ b/xen/include/public/io/xs_wire.h
@@ -126,6 +126,8 @@ struct xenstore_domain_interface {
 #define XENSTORE_SERVER_FEATURE_ERROR        2
 /* The XS_WATCH command can be used with a <depth> parameter */
 #define XENSTORE_SERVER_FEATURE_WATCHDEPTH   4
+/* The capability to use DOMID_ANY for node permissions */
+#define XENSTORE_SERVER_FEATURE_DOMID_ANY    8
 
 /* Valid values for the connection field */
 #define XENSTORE_CONNECTED 0 /* the steady-state */
-- 
2.53.0



From xen-devel-bounces@lists.xenproject.org Wed Apr 29 12:06:54 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 29 Apr 2026 12:06:54 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1297275.1573365 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wI3gb-0006sd-Sm; Wed, 29 Apr 2026 12:06:37 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1297275.1573365; Wed, 29 Apr 2026 12:06: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 1wI3gb-0006sW-Q0; Wed, 29 Apr 2026 12:06:37 +0000
Received: by outflank-mailman (input) for mailman id 1297275;
 Wed, 29 Apr 2026 12:06:36 +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 1wI3ga-0006rt-TK
 for xen-devel@lists.xenproject.org; Wed, 29 Apr 2026 12:06:36 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wI3ga-00CWOJ-9E
 for xen-devel@lists.xenproject.org; Wed, 29 Apr 2026 14:06:36 +0200
Received: from [10.42.69.4] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <jgross@suse.com>)
 id 69f1f444-bab6-0a2a0a5309dd-0a2a4504d07e-8
 for <xen-devel@lists.xenproject.org>; Wed, 29 Apr 2026 14:06:36 +0200
Received: from [195.135.223.131] (helo=smtp-out2.suse.de)
 by tlsNG-ebf023.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.1)
 (envelope-from <jgross@suse.com>)
 id 69f1f44c-1dec-0a2a45040019-c387df8391e6-3
 for <xen-devel@lists.xenproject.org>; Wed, 29 Apr 2026 14:06:36 +0200
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 73CF95BD76;
 Wed, 29 Apr 2026 12:06: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 34656593B1;
 Wed, 29 Apr 2026 12:06: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 0AanC0P08WlVVQAAD6G6ig
 (envelope-from <jgross@suse.com>); Wed, 29 Apr 2026 12:06: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-Transfer-Encoding:In-Reply-To:References"; dkim=pass header.s=susede1 header.d=suse.com header.i="@suse.com" header.h="From:Date:Message-ID:To:Cc:MIME-Version:Content-Transfer-Encoding:In-Reply-To:References"
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=suse.com; s=susede1;
	t=1777464391; h=from:from:reply-to:date:date:message-id:message-id:to:to:cc:cc:
	 mime-version:mime-version:
	 content-transfer-encoding:content-transfer-encoding:
	 in-reply-to:in-reply-to:references:references;
	bh=Fvrcx0L64Kf/ax26AArSQHlhXePuAaFw8eCivbX6h2o=;
	b=rWr/AfLq4Do+4dGLXmUZJqNCAoB45EdHlTZSg2IwN9IL1oCtvpBDagiq0jX7Xek2Xi4JJn
	Z7+DdkS8/mcNF6geCcvdWZVVcpLlp+3q0qmYv4/ktlDc+EeE7+j5xVEbvlm4i09Ivv7kXo
	NHF8neRjrnlvcfVC7z5qay6IRn292Yo=
Authentication-Results: smtp-out2.suse.de;
	none
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=suse.com; s=susede1;
	t=1777464387; h=from:from:reply-to:date:date:message-id:message-id:to:to:cc:cc:
	 mime-version:mime-version:
	 content-transfer-encoding:content-transfer-encoding:
	 in-reply-to:in-reply-to:references:references;
	bh=Fvrcx0L64Kf/ax26AArSQHlhXePuAaFw8eCivbX6h2o=;
	b=doVE1FUrkPKeHwe1H2jkYGx4rnIy0eeUbZYQ3rsmgB2jCy5clURQBb4p8G5b2OFJ93GHxW
	1+8olA1VIi/lGydAQAmwvhEejrON41IMYFXXczIKTo+rhMAy1UwY3InhjUc+40okaw6CLE
	G9n+/SeTgrXuoOtVf/KcJtvpExmQljo=
From: Juergen Gross <jgross@suse.com>
To: xen-devel@lists.xenproject.org
Cc: Denis Mukhin <dmukhin@ford.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.pau@citrix.com>,
	Stefano Stabellini <sstabellini@kernel.org>,
	Juergen Gross <jgross@suse.com>,
	Jason Andryuk <jason.andryuk@amd.com>
Subject: [PATCH v2 1/4] xen/public: introduce DOMID_ANY
Date: Wed, 29 Apr 2026 14:06:16 +0200
Message-ID: <20260429120619.1013440-2-jgross@suse.com>
X-Mailer: git-send-email 2.53.0
In-Reply-To: <20260429120619.1013440-1-jgross@suse.com>
References: <20260429120619.1013440-1-jgross@suse.com>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit
X-Spam-Score: -6.80
X-Spam-Level: 
X-Spamd-Result: default: False [-6.80 / 50.00];
	REPLY(-4.00)[];
	BAYES_HAM(-3.00)[99.99%];
	NEURAL_HAM_LONG(-1.00)[-1.000];
	MID_CONTAINS_FROM(1.00)[];
	R_MISSING_CHARSET(0.50)[];
	NEURAL_HAM_SHORT(-0.20)[-1.000];
	MIME_GOOD(-0.10)[text/plain];
	RCVD_COUNT_TWO(0.00)[2];
	ARC_NA(0.00)[];
	RCVD_VIA_SMTP_AUTH(0.00)[];
	FROM_HAS_DN(0.00)[];
	MIME_TRACE(0.00)[0:+];
	TO_MATCH_ENVRCPT_ALL(0.00)[];
	FROM_EQ_ENVFROM(0.00)[];
	RCPT_COUNT_SEVEN(0.00)[11];
	DBL_BLOCKED_OPENRESOLVER(0.00)[imap1.dmz-prg2.suse.org:helo,amd.com:email,suse.com:mid,suse.com:email,ford.com:email];
	DKIM_SIGNED(0.00)[suse.com:s=susede1];
	TO_DN_SOME(0.00)[];
	RCVD_TLS_ALL(0.00)[]
X-Spam-Flag: NO
X-purgate-ID: tlsNG-ebf023/1777464396-2B3673FF-AB0E0F40/0/0
X-purgate-type: clean
X-purgate-size: 1320

From: Denis Mukhin <dmukhin@ford.com>

Add DOMID_ANY to xen/include/public/xen.h meant to be a wildcard for
domids.

Signed-off-by: Denis Mukhin <dmukhin@ford.com>
Signed-off-by: Juergen Gross <jgross@suse.com>
Reviewed-by: Jason Andryuk <jason.andryuk@amd.com>
---
This is based on Denis Mukhin's patch "xen/domain: introduce DOMID_ANY".
As my series is another use case for DOMID_ANY and it is a backport
candidate, I've split out the definition of DOMID_ANY from Denis'
patch in order to make progress for my series.
V2: update comment (Jason Andryuk)
---
 xen/include/public/xen.h | 7 +++++++
 1 file changed, 7 insertions(+)

diff --git a/xen/include/public/xen.h b/xen/include/public/xen.h
index b12fd10e63..2149b8dd38 100644
--- a/xen/include/public/xen.h
+++ b/xen/include/public/xen.h
@@ -608,6 +608,13 @@ DEFINE_XEN_GUEST_HANDLE(mmuext_op_t);
 /* DOMID_INVALID is used to identify pages with unknown owner. */
 #define DOMID_INVALID        xen_mk_uint(0x7FF4)
 
+/*
+ * DOMID_ANY is used to signal no specific domain ID requested.
+ * Handler should pick a valid ID, or handle it as a wildcard value
+ * depending on the context.
+ */
+#define DOMID_ANY            xen_mk_uint(0x7FF5)
+
 /* Idle domain. */
 #define DOMID_IDLE           xen_mk_uint(0x7FFF)
 
-- 
2.53.0



From xen-devel-bounces@lists.xenproject.org Wed Apr 29 12:06:54 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 29 Apr 2026 12:06:54 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1297276.1573375 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wI3gf-000785-58; Wed, 29 Apr 2026 12:06:41 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1297276.1573375; Wed, 29 Apr 2026 12:06: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 1wI3gf-00077t-1L; Wed, 29 Apr 2026 12:06:41 +0000
Received: by outflank-mailman (input) for mailman id 1297276;
 Wed, 29 Apr 2026 12:06:40 +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 1wI3gd-00076k-VM
 for xen-devel@lists.xenproject.org; Wed, 29 Apr 2026 12:06:39 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wI3gd-00CWOJ-BO
 for xen-devel@lists.xenproject.org; Wed, 29 Apr 2026 14:06:39 +0200
Received: from [10.42.69.6] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <jgross@suse.com>)
 id 69f1f440-bab6-0a2a0a5309dd-0a2a450689ac-40
 for <xen-devel@lists.xenproject.org>; Wed, 29 Apr 2026 14:06:39 +0200
Received: from [195.135.223.131] (helo=smtp-out2.suse.de)
 by tlsNG-16d1c6.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.1)
 (envelope-from <jgross@suse.com>)
 id 69f1f44f-7371-0a2a45060019-c387df83d28e-3
 for <xen-devel@lists.xenproject.org>; Wed, 29 Apr 2026 14:06:39 +0200
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 6EEB45BD15;
 Wed, 29 Apr 2026 12:06:38 +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 46C11593B0;
 Wed, 29 Apr 2026 12:06:38 +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 B3krEE708Wm5VQAAD6G6ig
 (envelope-from <jgross@suse.com>); Wed, 29 Apr 2026 12:06: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; none
Authentication-Results: smtp-out2.suse.de;
	none
From: Juergen Gross <jgross@suse.com>
To: xen-devel@lists.xenproject.org
Cc: Juergen Gross <jgross@suse.com>,
	Julien Grall <julien@xen.org>,
	Anthony PERARD <anthony.perard@vates.tech>,
	Jason Andryuk <jason.andryuk@amd.com>
Subject: [PATCH v2 3/4] tools/xenstored: allow @releaseDomain watch for all domains
Date: Wed, 29 Apr 2026 14:06:18 +0200
Message-ID: <20260429120619.1013440-4-jgross@suse.com>
X-Mailer: git-send-email 2.53.0
In-Reply-To: <20260429120619.1013440-1-jgross@suse.com>
References: <20260429120619.1013440-1-jgross@suse.com>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit
X-Rspamd-Pre-Result: action=no action;
	module=replies;
	Message is reply to one we originated
X-Rspamd-Queue-Id: 6EEB45BD15
X-Rspamd-Pre-Result: action=no action;
	module=replies;
	Message is reply to one we originated
X-Rspamd-Action: no action
X-Spam-Score: -4.00
X-Spam-Level: 
X-Spam-Flag: NO
X-Spamd-Result: default: False [-4.00 / 50.00];
	REPLY(-4.00)[]
X-Rspamd-Server: rspamd1.dmz-prg2.suse.org
X-purgate-ID: tlsNG-16d1c6/1777464399-50566D75-6BEF1B58/0/0
X-purgate-type: clean
X-purgate-size: 2688

Currently the @releaseDomain watch is allowed for dom0 only. This is
problematic for guests which want to give other domains access to
Xenstore entries, as they have no simple way to tell when such a
domain is stopped.

Allow @releaseDomain to be usable by all domains as the default.

Signed-off-by: Juergen Gross <jgross@suse.com>
Reviewed-by: Jason Andryuk <jason.andryuk@amd.com>
---
 tools/xenstored/core.c | 26 ++++++++++++++++++++------
 1 file changed, 20 insertions(+), 6 deletions(-)

diff --git a/tools/xenstored/core.c b/tools/xenstored/core.c
index 7dbcd5daad..d6d462b7bc 100644
--- a/tools/xenstored/core.c
+++ b/tools/xenstored/core.c
@@ -2279,19 +2279,19 @@ struct connection *get_connection_by_id(unsigned int conn_id)
 }
 
 /* We create initial nodes manually. */
-static void manual_node(const char *name, const char *child)
+static void manual_node_perms(const char *name, const char *child,
+			      struct xs_permissions *perms,
+			      unsigned int n_perms)
 {
 	struct node *node;
-	struct xs_permissions perms = { .id = priv_domid,
-					.perms = XS_PERM_NONE };
 
 	node = talloc_zero(NULL, struct node);
 	if (!node)
 		barf_perror("Could not allocate initial node %s", name);
 
 	node->name = name;
-	node->perms = &perms;
-	node->hdr.num_perms = 1;
+	node->perms = perms;
+	node->hdr.num_perms = n_perms;
 	node->children = (char *)child;
 	if (child)
 		node->hdr.childlen = strlen(child) + 1;
@@ -2301,6 +2301,14 @@ static void manual_node(const char *name, const char *child)
 	talloc_free(node);
 }
 
+static void manual_node(const char *name, const char *child)
+{
+	struct xs_permissions perms = { .id = priv_domid,
+					.perms = XS_PERM_NONE };
+
+	manual_node_perms(name, child, &perms, 1);
+}
+
 static unsigned int hash_from_key_fn(const void *k)
 {
 	const char *str = k;
@@ -2320,6 +2328,11 @@ static int keys_equal_fn(const void *key1, const void *key2)
 
 void setup_structure(bool live_update)
 {
+	struct xs_permissions perms[] = {
+		{ .id = priv_domid,	.perms = XS_PERM_NONE },
+		{ .id = DOMID_ANY,	.perms = XS_PERM_READ },
+	};
+
 	nodes = create_hashtable(NULL, "nodes", hash_from_key_fn, keys_equal_fn,
 				 HASHTABLE_FREE_KEY | HASHTABLE_FREE_VALUE);
 	if (!nodes)
@@ -2331,7 +2344,8 @@ void setup_structure(bool live_update)
 		manual_node("/", "tool");
 		manual_node("/tool", "xenstored");
 		manual_node("/tool/xenstored", NULL);
-		manual_node("@releaseDomain", NULL);
+		manual_node_perms("@releaseDomain", NULL,
+				  perms, ARRAY_SIZE(perms));
 		manual_node("@introduceDomain", NULL);
 		domain_nbentry_fix(priv_domid, 5);
 	}
-- 
2.53.0



From xen-devel-bounces@lists.xenproject.org Wed Apr 29 12:06:54 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 29 Apr 2026 12:06:54 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1297273.1573349 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wI3gX-0006Rk-Gm; Wed, 29 Apr 2026 12:06:33 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1297273.1573349; Wed, 29 Apr 2026 12: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 1wI3gX-0006Rd-Ci; Wed, 29 Apr 2026 12:06:33 +0000
Received: by outflank-mailman (input) for mailman id 1297273;
 Wed, 29 Apr 2026 12:06:31 +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 1wI3gV-0006RX-DV
 for xen-devel@lists.xenproject.org; Wed, 29 Apr 2026 12:06:31 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wI3gU-00FgZi-Py
 for xen-devel@lists.xenproject.org; Wed, 29 Apr 2026 14:06:30 +0200
Received: from [10.42.69.3] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <jgross@suse.com>)
 id 69f1f444-5cb7-0a2a0a5109dd-0a2a4503d97c-12
 for <xen-devel@lists.xenproject.org>; Wed, 29 Apr 2026 14:06:30 +0200
Received: from [195.135.223.131] (helo=smtp-out2.suse.de)
 by tlsNG-33051d.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.1)
 (envelope-from <jgross@suse.com>)
 id 69f1f446-672d-0a2a45030019-c387df838856-3
 for <xen-devel@lists.xenproject.org>; Wed, 29 Apr 2026 14:06:30 +0200
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 CF08C5BD5F;
 Wed, 29 Apr 2026 12:06:21 +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 94F26593B0;
 Wed, 29 Apr 2026 12:06:21 +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 1sI2Iz308Wk6VQAAD6G6ig
 (envelope-from <jgross@suse.com>); Wed, 29 Apr 2026 12:06: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=susede1 header.d=suse.com header.i="@suse.com" header.h="From:Date:Message-ID:To:Cc:MIME-Version:Content-Transfer-Encoding"; dkim=pass header.s=susede1 header.d=suse.com header.i="@suse.com" header.h="From:Date:Message-ID:To:Cc:MIME-Version:Content-Transfer-Encoding"
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=suse.com; s=susede1;
	t=1777464386; h=from:from:reply-to:date:date:message-id:message-id:to:to:cc:cc:
	 mime-version:mime-version:  content-transfer-encoding:content-transfer-encoding;
	bh=wbjluDVZotZt60L9F+RyvmJUG+lseQlcgdHyfdTEa3g=;
	b=VeGvPzIkKRE75NI8Ur7ooVJ618bEDtu+MaEvc7uEL/8HaDzpNXVKFAh3NnI9a4vgn2ctUX
	k730HN0WxLwrWUlsHwcShi3J++vB9aNyUk6XzPyn5NQr1Af9hQwqZcNVAqOoovrgx88ZUH
	RvhHXxFJFOX116yDBLEQ5NndFsS5gYs=
Authentication-Results: smtp-out2.suse.de;
	none
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=suse.com; s=susede1;
	t=1777464381; h=from:from:reply-to:date:date:message-id:message-id:to:to:cc:cc:
	 mime-version:mime-version:  content-transfer-encoding:content-transfer-encoding;
	bh=wbjluDVZotZt60L9F+RyvmJUG+lseQlcgdHyfdTEa3g=;
	b=BLEcjP1eFCX1oX1o9NAHfJsOF4pLKWp+J148YMsmJ95qQv3fJ84J7Y6Vv/oIUnGRjukUQ0
	z+q5a3WMRUEbw5IbxYaPhkR0V+F+FpqVdmRSd1JX9z1GEYTgIIP1v9B9VcZoSFIXVA8FF3
	sRQ+zQLe7X8seeVWSuViYE85JnGdoxk=
From: Juergen Gross <jgross@suse.com>
To: xen-devel@lists.xenproject.org
Cc: Juergen Gross <jgross@suse.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.pau@citrix.com>,
	Stefano Stabellini <sstabellini@kernel.org>
Subject: [PATCH v2 0/4] tools/xenstore: fix issue related to XSA-417
Date: Wed, 29 Apr 2026 14:06:15 +0200
Message-ID: <20260429120619.1013440-1-jgross@suse.com>
X-Mailer: git-send-email 2.53.0
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit
X-Spamd-Result: default: False [-2.80 / 50.00];
	BAYES_HAM(-3.00)[100.00%];
	MID_CONTAINS_FROM(1.00)[];
	NEURAL_HAM_LONG(-1.00)[-1.000];
	R_MISSING_CHARSET(0.50)[];
	NEURAL_HAM_SHORT(-0.20)[-1.000];
	MIME_GOOD(-0.10)[text/plain];
	RCPT_COUNT_SEVEN(0.00)[9];
	RCVD_VIA_SMTP_AUTH(0.00)[];
	MIME_TRACE(0.00)[0:+];
	ARC_NA(0.00)[];
	DKIM_SIGNED(0.00)[suse.com:s=susede1];
	TO_MATCH_ENVRCPT_ALL(0.00)[];
	FROM_HAS_DN(0.00)[];
	TO_DN_SOME(0.00)[];
	FROM_EQ_ENVFROM(0.00)[];
	DBL_BLOCKED_OPENRESOLVER(0.00)[imap1.dmz-prg2.suse.org:helo,suse.com:mid];
	RCVD_COUNT_TWO(0.00)[2];
	RCVD_TLS_ALL(0.00)[]
X-Spam-Flag: NO
X-Spam-Score: -2.80
X-Spam-Level: 
X-purgate-ID: tlsNG-33051d/1777464390-A197D938-9D91CD56/0/0
X-purgate-type: clean
X-purgate-size: 2909

There is one corner case of XSA-417 which wasn't handled completely
with the patches back then.

The XSA-417 fixes tried to solve the problem, that a new domU would
inherit access permissions to access Xenstore entries with that domid
listed in the access rights. In order not to make it easy for a domU
to query existence of a domid, adding permission for a non-existing
domain is not rejected by Xenstore. The XSA-417 patches solved that
problem by adding a flag to a permission entry referencing a not
existing domain, indicating that the permission should not be
effective for Xenstore.

One corner case was not handled:

Consider guest 1 and guest 2 running. Guest 1 adds guest 2 to be able
to access a Xenstore entry. Now guest 2 is removed from the system and
a new guest 3 with the same domid as guest 2 had is being created.

When guest 3 would try now to access the Xenstore entry, it would fail,
as Xenstore would see that the Xenstore entry is older than guest 3.

But if guest 1 is modifying the permissions of the Xenstore entry
again, e.g. by adding another domain, the permission entry for guest 2
would lose its "special flag", resulting in guest 3 now really gaining
access to the Xenstore entry.

This series is fixing this problem by the following means:

- In order to allow guests to know that a Xenstore entry permission
  might have gone stale, allow unprivileged guests to receive
  @releaseDomain watch events. This doesn't open a security hole, as
  the only knowledge which can by gathered from that change is that a
  domain is gone, not that a domain with a specific domid is existing.

- When a domain is removed, remove all permissions relating to this
  domain from all Xenstore entries.

Note that this issue was discussed by the Xen security team and we
decided not to issue an XSA, as there are no known use cases where one
unprivileged guest would grant access to its Xenstore nodes to more
than one other unprivileged guests.

We decided to delay this patch series until the watch depth feature has
been committed, as with that feature available it is now possible for
a guest to handle the death of a specific domain in a sane way.

Changes in V2:
- some minor comments addressed

Denis Mukhin (1):
  xen/public: introduce DOMID_ANY

Juergen Gross (3):
  tools/xenstored: add support for "all domains" node permission
  tools/xenstored: allow @releaseDomain watch for all domains
  tools/xenstored: remove permissions related to dead domain

 docs/man/xl.cfg.5.pod.in        |  4 ++
 tools/xenstored/core.c          | 45 ++++++++++++++-----
 tools/xenstored/domain.c        | 78 +++++++++++++++++++++------------
 tools/xenstored/domain.h        |  3 +-
 xen/include/public/io/xs_wire.h |  2 +
 xen/include/public/xen.h        |  7 +++
 6 files changed, 100 insertions(+), 39 deletions(-)

-- 
2.53.0



From xen-devel-bounces@lists.xenproject.org Wed Apr 29 12:07:05 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 29 Apr 2026 12:07:05 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1297290.1573384 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wI3gt-0007qX-F2; Wed, 29 Apr 2026 12:06:55 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1297290.1573384; Wed, 29 Apr 2026 12:06: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 1wI3gt-0007qN-Bm; Wed, 29 Apr 2026 12:06:55 +0000
Received: by outflank-mailman (input) for mailman id 1297290;
 Wed, 29 Apr 2026 12:06:53 +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 1wI3gr-0007jq-Ey
 for xen-devel@lists.xenproject.org; Wed, 29 Apr 2026 12:06:53 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wI3gq-00CWTK-R9
 for xen-devel@lists.xenproject.org; Wed, 29 Apr 2026 14:06:52 +0200
Received: from [10.42.69.7] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <jgross@suse.com>)
 id 69f1f44e-e002-0a2a0a5209dd-0a2a450789ca-48
 for <xen-devel@lists.xenproject.org>; Wed, 29 Apr 2026 14:06:52 +0200
Received: from [195.135.223.130] (helo=smtp-out1.suse.de)
 by tlsNG-ef75cf.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.1)
 (envelope-from <jgross@suse.com>)
 id 69f1f45c-229c-0a2a45070019-c387df82dc42-3
 for <xen-devel@lists.xenproject.org>; Wed, 29 Apr 2026 14:06:52 +0200
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 E39B46A882;
 Wed, 29 Apr 2026 12:06:43 +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 BB4D3593B1;
 Wed, 29 Apr 2026 12:06:43 +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 5ECsLFP08WlnVgAAD6G6ig
 (envelope-from <jgross@suse.com>); Wed, 29 Apr 2026 12: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=susede1 header.d=suse.com header.i="@suse.com" header.h="From:Date:Message-ID:To:Cc:MIME-Version:Content-Transfer-Encoding:In-Reply-To:References"; dkim=pass header.s=susede1 header.d=suse.com header.i="@suse.com" header.h="From:Date:Message-ID:To:Cc:MIME-Version:Content-Transfer-Encoding:In-Reply-To:References"
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=suse.com; s=susede1;
	t=1777464408; h=from:from:reply-to:date:date:message-id:message-id:to:to:cc:cc:
	 mime-version:mime-version:
	 content-transfer-encoding:content-transfer-encoding:
	 in-reply-to:in-reply-to:references:references;
	bh=neoM0rxwlNWkYjpN6UzzXgAR6Uz/BSePabcIeLnOQEY=;
	b=crpuUwj03HTzALbP6aMvKtI+UrUDFjtrcMk488Web7k5nVA8/2VDsL/z/P6OpabobA4QRD
	9gf5kaoxLSLiLKLLb11KVjiKArOcPG2ATT228i8V9AfxxBRmSRjWzbi2oB5Qr1izR1MAu9
	eny0KlFe305xNPGnkcSGWzoXJf6GMx4=
Authentication-Results: smtp-out1.suse.de;
	none
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=suse.com; s=susede1;
	t=1777464403; h=from:from:reply-to:date:date:message-id:message-id:to:to:cc:cc:
	 mime-version:mime-version:
	 content-transfer-encoding:content-transfer-encoding:
	 in-reply-to:in-reply-to:references:references;
	bh=neoM0rxwlNWkYjpN6UzzXgAR6Uz/BSePabcIeLnOQEY=;
	b=ZSpWGLqasrDc/j1ptizTy2a1M7sNMVRN5jKpUou289QW+BCKG9frcmynpM4OURxI3sdoIP
	Nj8UCc7h+hImONRLCNvmNexl7f1LRFpzZdB8XuEGIvDB3sSM9N1Sbnj5PlHFcQQphdZd4A
	83Nk5f5igr8ymuTC2pqRmrDgGzF+rtQ=
From: Juergen Gross <jgross@suse.com>
To: xen-devel@lists.xenproject.org
Cc: Juergen Gross <jgross@suse.com>,
	Julien Grall <julien@xen.org>,
	Anthony PERARD <anthony.perard@vates.tech>,
	Jason Andryuk <jason.andryuk@amd.com>
Subject: [PATCH v2 4/4] tools/xenstored: remove permissions related to dead domain
Date: Wed, 29 Apr 2026 14:06:19 +0200
Message-ID: <20260429120619.1013440-5-jgross@suse.com>
X-Mailer: git-send-email 2.53.0
In-Reply-To: <20260429120619.1013440-1-jgross@suse.com>
References: <20260429120619.1013440-1-jgross@suse.com>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit
X-Spamd-Result: default: False [-6.80 / 50.00];
	REPLY(-4.00)[];
	BAYES_HAM(-3.00)[100.00%];
	NEURAL_HAM_LONG(-1.00)[-1.000];
	MID_CONTAINS_FROM(1.00)[];
	R_MISSING_CHARSET(0.50)[];
	NEURAL_HAM_SHORT(-0.20)[-1.000];
	MIME_GOOD(-0.10)[text/plain];
	RCVD_COUNT_TWO(0.00)[2];
	FROM_HAS_DN(0.00)[];
	ARC_NA(0.00)[];
	MIME_TRACE(0.00)[0:+];
	TO_DN_SOME(0.00)[];
	TO_MATCH_ENVRCPT_ALL(0.00)[];
	RCVD_VIA_SMTP_AUTH(0.00)[];
	DBL_BLOCKED_OPENRESOLVER(0.00)[imap1.dmz-prg2.suse.org:helo,suse.com:mid,suse.com:email,amd.com:email];
	FROM_EQ_ENVFROM(0.00)[];
	DKIM_SIGNED(0.00)[suse.com:s=susede1];
	RCPT_COUNT_FIVE(0.00)[5];
	RCVD_TLS_ALL(0.00)[]
X-Spam-Flag: NO
X-Spam-Score: -6.80
X-Spam-Level: 
X-purgate-ID: tlsNG-ef75cf/1777464412-14E57C48-7515360F/0/0
X-purgate-type: clean
X-purgate-size: 3796

Wit unprivileged domains now capable to use the @releaseDomain watch,
there is no reason not to remove any node permissions which relate to
a domain which has been removed.

This resolves a complex scenario where a new domain could inherit the
permissions of an old one with the same domid.

Signed-off-by: Juergen Gross <jgross@suse.com>
Reviewed-by: Jason Andryuk <jason.andryuk@amd.com>
---
V2: use priv_domid instead of literal 0 in message (Jason Andryuk)
---
 tools/xenstored/domain.c | 62 ++++++++++++++++++++++++----------------
 1 file changed, 37 insertions(+), 25 deletions(-)

diff --git a/tools/xenstored/domain.c b/tools/xenstored/domain.c
index 7074abd197..2db452144d 100644
--- a/tools/xenstored/domain.c
+++ b/tools/xenstored/domain.c
@@ -569,24 +569,10 @@ static int domain_tree_remove_sub(const void *ctx, struct connection *conn,
 				  struct node *node, void *arg)
 {
 	struct domain *domain = arg;
-	int ret = WALK_TREE_OK;
-
-	if (node->perms[0].id != domain->domid)
-		return WALK_TREE_OK;
+	bool node_changed = false;
+	unsigned int i;
 
-	if (keep_orphans) {
-		domain_nbentry_dec(NULL, domain->domid);
-		node->perms[0].id = priv_domid;
-		node->acc.memory = 0;
-		domain_nbentry_inc(NULL, priv_domid);
-		if (write_node_raw(NULL, node->name, node, NODE_MODIFY, true)) {
-			/* That's unfortunate. We only can try to continue. */
-			syslog(LOG_ERR,
-			       "error when moving orphaned node %s to dom0\n",
-			       node->name);
-		} else
-			trace("orphaned node %s moved to dom0\n", node->name);
-	} else {
+	if (node->perms[0].id == domain->domid && !keep_orphans) {
 		if (rm_node(NULL, ctx, node->name)) {
 			/* That's unfortunate. We only can try to continue. */
 			syslog(LOG_ERR,
@@ -596,10 +582,39 @@ static int domain_tree_remove_sub(const void *ctx, struct connection *conn,
 			trace("orphaned node %s deleted\n", node->name);
 
 		/* Skip children in all cases in order to avoid more errors. */
-		ret = WALK_TREE_SKIP_CHILDREN;
+		return WALK_TREE_SKIP_CHILDREN;
 	}
 
-	return domain->acc_val[ACC_NODES] ? ret : WALK_TREE_SUCCESS_STOP;
+	if (node->perms[0].id == domain->domid) {
+		domain_nbentry_dec(NULL, domain->domid);
+		node->perms[0].id = priv_domid;
+		node->acc.memory = 0;
+		domain_nbentry_inc(NULL, priv_domid);
+		trace("moving orphaned node %s to dom%d\n", node->name,
+		      priv_domid);
+		node_changed = true;
+	}
+
+	for (i = 1; i < node->hdr.num_perms; i++) {
+		if (node->perms[i].id != domain->domid)
+			continue;
+		memmove(node->perms + i, node->perms + i + 1,
+			sizeof(*node->perms) * (node->hdr.num_perms - i - 1));
+		node->hdr.num_perms--;
+		i--;
+		node_changed = true;
+	}
+
+	if (node_changed) {
+		if (write_node_raw(NULL, node->name, node, NODE_MODIFY, true)) {
+			/* That's unfortunate. We only can try to continue. */
+			syslog(LOG_ERR,
+			       "error when writing modified node %s\n",
+			       node->name);
+		}
+	}
+
+	return WALK_TREE_OK;
 }
 
 static void domain_tree_remove(struct domain *domain)
@@ -607,12 +622,9 @@ static void domain_tree_remove(struct domain *domain)
 	int ret;
 	struct walk_funcs walkfuncs = { .enter = domain_tree_remove_sub };
 
-	if (domain->acc_val[ACC_NODES]) {
-		ret = walk_node_tree(domain, NULL, "/", &walkfuncs, domain);
-		if (ret == WALK_TREE_ERROR_STOP)
-			syslog(LOG_ERR,
-			       "error when looking for orphaned nodes\n");
-	}
+	ret = walk_node_tree(domain, NULL, "/", &walkfuncs, domain);
+	if (ret == WALK_TREE_ERROR_STOP)
+		syslog(LOG_ERR, "error when looking for orphaned nodes\n");
 
 	walk_node_tree(domain, NULL, "@releaseDomain", &walkfuncs, domain);
 	walk_node_tree(domain, NULL, "@introduceDomain", &walkfuncs, domain);
-- 
2.53.0



From xen-devel-bounces@lists.xenproject.org Wed Apr 29 12:33:24 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 29 Apr 2026 12:33:24 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1297324.1573393 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wI46R-0004wt-Bf; Wed, 29 Apr 2026 12:33:19 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1297324.1573393; Wed, 29 Apr 2026 12:33: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 1wI46R-0004wm-8s; Wed, 29 Apr 2026 12:33:19 +0000
Received: by outflank-mailman (input) for mailman id 1297324;
 Wed, 29 Apr 2026 12:33:18 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <roger.pau@citrix.com>) id 1wI46Q-0004wg-36
 for xen-devel@lists.xenproject.org; Wed, 29 Apr 2026 12:33:18 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wI46O-005Dpf-Ux
 for xen-devel@lists.xenproject.org; Wed, 29 Apr 2026 14:33:17 +0200
Received: from [10.42.69.9] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <roger.pau@citrix.com>)
 id 69f1fa85-5cb7-0a2a0a5109dd-0a2a4509d2e0-26
 for <xen-devel@lists.xenproject.org>; Wed, 29 Apr 2026 14:33:16 +0200
Received: from [40.107.201.15]
 (helo=CH4PR04CU002.outbound.protection.outlook.com)
 by tlsNG-bad1c0.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.1)
 (envelope-from <roger.pau@citrix.com>)
 id 69f1fa8b-2497-0a2a45090019-286bc90f1668-3
 for <xen-devel@lists.xenproject.org>; Wed, 29 Apr 2026 14:33:16 +0200
Received: from CH7PR03MB7860.namprd03.prod.outlook.com (2603:10b6:610:24e::14)
 by PH0PR03MB6592.namprd03.prod.outlook.com (2603:10b6:510:bb::21)
 with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9870.19; Wed, 29 Apr
 2026 12:33:12 +0000
Received: from CH7PR03MB7860.namprd03.prod.outlook.com
 ([fe80::f5ba:35df:1c9f:b343]) by CH7PR03MB7860.namprd03.prod.outlook.com
 ([fe80::f5ba:35df:1c9f:b343%4]) with mapi id 15.20.9870.020; Wed, 29 Apr 2026
 12:33: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=pyfM8j7btGxW3NY2LIfVdqBXKoEN00aNYgNuoac4ciGeGusq8Kk5sYhXehMuTPXN8b66O+gnn0TPOhJ6d0UIGGNA47nRD4Ie+9KFQLKLm07HsxOKJalL+bStkB7mzgO0pBJCN47c4oJMOmdYi3LbgTEyys5WZdFEArVvDg3buXwr7/0at42jUOU1XvbduHiYTverNp/RyMQ5ZjoqsxOf3T899LzpPVvFQxgnlv7BTevzKN//eybYG7R7nbPdm0NSU/mFP7pa0gV5K4foyUYbptaoCJxIQlLB+DWCh+728+gYwmtaTrOtGdYXkGbECB1VB93P3OcyoSK14UFhQJjXBw==
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com;
 s=arcselector10001;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1;
 bh=hIvJvTbzEKBS8m4ch60WjE2A62ME9OLbMuZVTJJhbMY=;
 b=nmZl0fbqwyCvvTnfYAwuuKF0MfYZoyXWXzxifl9FFUq70ykl48KfFiXwTAPFphGRI9RABgiayUh7CHRTHcTNpsl/YD/f02mk4Or/w4pq5R+RJdsNmDyyWXwFJpTJ8j+HNs4kfG761xw035q4KTwafEGZMAdV9wAweCngFrNkjoWK8hZEAhBDLgmIXyTYYAhl+OI71jpPViwseLi9f2mbT6grGwOYSQVRvNPs+Hz/OWU2Lwd5PW/DdmC2z2JWKt7x/DMmPohSEq6pYEP0mz5Yj1WI2/9l7vS7KNZOqDSD9XcKHgWf3Zj63f+xrVJwPxy6+CYlXqpEZ9xsZSyjTBaDlQ==
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=hIvJvTbzEKBS8m4ch60WjE2A62ME9OLbMuZVTJJhbMY=;
 b=YO8C3C+7Ov5scPynNlc0QE8/8ZKB5RQ2au7K/FqYoS6r/+Xz72xVvXUSgXmEU8bKK+q4K9CcKWlVWAhtFf1C1X7JNpu5kk8AW5khUEfwWHcVq4uWcOHXVxg0WxuMkd8V553IO1YypmMNYdLkYUuwDweop2yDERvqlvLwgAICheU=
Authentication-Results: dkim=none (message not signed)
 header.d=none;dmarc=none action=none header.from=citrix.com;
Date: Wed, 29 Apr 2026 14:33:09 +0200
From: Roger Pau =?utf-8?B?TW9ubsOp?= <roger.pau@citrix.com>
To: Thierry Escande <thierry.escande@vates.tech>
Cc: xen-devel@lists.xenproject.org, Jan Beulich <jbeulich@suse.com>,
	Andrew Cooper <andrew.cooper3@citrix.com>,
	Anthony PERARD <anthony.perard@vates.tech>
Subject: Re: [PATCH 15/17] hvmloader: Set MCFG in ACPI table
Message-ID: <afH6hfPLzCVUoXbR@macbook.local>
References: <20260313163455.790692-1-thierry.escande@vates.tech>
 <20260313163455.790692-16-thierry.escande@vates.tech>
Content-Type: text/plain; charset=utf-8
Content-Disposition: inline
In-Reply-To: <20260313163455.790692-16-thierry.escande@vates.tech>
X-ClientProxiedBy: MA3P292CA0018.ESPP292.PROD.OUTLOOK.COM
 (2603:10a6:250:47::19) To CH7PR03MB7860.namprd03.prod.outlook.com
 (2603:10b6:610:24e::14)
MIME-Version: 1.0
X-MS-PublicTrafficType: Email
X-MS-TrafficTypeDiagnostic: CH7PR03MB7860:EE_|PH0PR03MB6592:EE_
X-MS-Office365-Filtering-Correlation-Id: d657a18c-7b58-4375-35ba-08dea5eb7a20
X-MS-Exchange-SenderADCheck: 1
X-MS-Exchange-AntiSpam-Relay: 0
X-Microsoft-Antispam:
	BCL:0;ARA:13230040|1800799024|376014|366016|56012099003|18002099003|22082099003;
X-Microsoft-Antispam-Message-Info:
	XWFIzSIFlyD+cAFPClmC99fwhV4PvrWuVMzed14gjIpFmK97CMuvd8t+s/zxH7f8OSim+15RiFvwFScvLYvFR9BR7RASoWDHx1qe23uJ7is24c0IQi7ET2EUQ72Z+kE4+pbqJ76RtAEE8gh8MsubtNeZeyHgu9g0iNxGpGGfidDC2VPW1sZDkGUa/JztyBf4fdTbRSg7JDr0HZyNQV/dSo9Sq/pfJcP6VAT9s1FunjWnOPIiiKh/ctVeJBdeQfhP8FicZUWerijc8bk9FVWhnnRyQHvpuyIQLRWKPpdeifrLlQ+uaHFnSwhNdPCei6H/Mgyq+dMg+udOKU3MkwqMPP9Gb0K4NBYjiYHvb2dA/ZFa9B9avuxzgElvdQNidju8sLUr5nqUWD2Lp3ynjmA+2u0+JoICy1LPY4MzP9VKfcObRQvUf6cGnUwwdm4Wpms4mNXf6EjLTTuxHcqQO3OzRPWihTHbHzYA2vVEeuhi1x4vDbo/zXCpzXwM+iARP1Q3fj0JpWHDUHUtc4VuGFte9AGmAsRuztmdkwqWFJQKaPwmy1zaPVEGRA978KK7Y+3q1Smfa+kXluokOUxo4GiUQi0z40cHYcOrNf6teGFtq3OKxABlLZghZ/NKNixSTrFSLTCtPTTqLb9QkCYvJ1UtSpN2j2zgZCcRJrtV/cMnFrSaSr4f/hPT5wNXHdJuJe6Gmmcvh6sJAIi24leTjQ1/iwTKYLOXlfzRUZE4g149Fi4=
X-Forefront-Antispam-Report:
	CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:CH7PR03MB7860.namprd03.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(1800799024)(376014)(366016)(56012099003)(18002099003)(22082099003);DIR:OUT;SFP:1101;
X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1
X-MS-Exchange-AntiSpam-MessageData-0:
	=?utf-8?B?bFZiSXVpT3dmNU1VRzRlNW9IckVPcUZ4TGFzZk1FZ3I0SlBVL2FPbm1Xd2dV?=
 =?utf-8?B?Vk4wa1NVK2JuZFlYM1VRRWtVaVBWOUNrSEROKzhFVVhUNTN6TE50anJETWRu?=
 =?utf-8?B?d0Uwd0FQaU0xaFU4MWUrNjBCVldxM2dvcy9kQUxJSm1iQWNKc3BabkI5OGE2?=
 =?utf-8?B?ckNrQThFRmtZSkhldXdGT2hmVGl4ZWlJRFNwVm5mdXBCUzhKOHhNazFST3Zr?=
 =?utf-8?B?RVI4aDJKZ3V2WGNXY3pUWDUyUDEzbHozaGo3Wmk4Qk81azBpNmRldCtUalVO?=
 =?utf-8?B?QktUT0J1U3JuSG1XQWFGUWpNRTJWeGMxWmJJeVdWZUVxb1pVTXZmWm1HV3J3?=
 =?utf-8?B?WSttYVltdkpkZHZqT1NjQ2xDR3pmRXN3L29QRUJjVHFVSDgyS1NMc2hJRStC?=
 =?utf-8?B?SkNjbjd3VjI2ZzhHQ2pjZ0tGWHpLK2FJdzJnS3ZUREVqWGdxbGZxbTExRkhp?=
 =?utf-8?B?Vk9yZC9VYVoyVmZ4UWM3VUFCdFFPSTlVRlUyRG1iT3VqK1F4RHhPak9IcmJ4?=
 =?utf-8?B?aWI4WmF1TStJcWlHTUwxaWZoalVYbzN3L3gwYnpLdmk4QS8xR0p4cExHMmo1?=
 =?utf-8?B?VWUvSFJiUG9QOXh2Mm5zRjJOME5TSXdMaEliTlN2QjdvVHNaQmxXQmkxblA3?=
 =?utf-8?B?OCt3N0dvc3U0cVVWd1hqalZ1S1Rlb0UwbFVndWlWeDgrU2hGcHh1YVZJMUsy?=
 =?utf-8?B?K0VJMXRYcmFHamlEUWVwVGNRc05VVW5pWEx4SUJ3WWNmbHlBQjNmQmFMNktD?=
 =?utf-8?B?MHU3TDNNMzZuVUdUbDBoaVhpSEEva1RhRDVEMHVNSmh1RTFEaDFGRXdudndn?=
 =?utf-8?B?ZGVTeUhYTFg2S2NUWUpHOUNNSWRXb2EycDZUR0pHSWJxL2hpMk5ya3ZhaFRJ?=
 =?utf-8?B?WXRyanYveTBVd1BIVHgwTDcwN251STV1eWdnOFpyK1NkM3hwek4zT1BwVHBn?=
 =?utf-8?B?aTg2NVFDVUFtYkZBaDhBRGpaQ1Y2U0IyVCtLd3FNMlp1SlV0djZHcXIyR0hK?=
 =?utf-8?B?UUViNWMvSWNCTk1wbEJCdys2aGY0Q3FOR3pqU2srUVE4bU52QXFmSHpzZFVL?=
 =?utf-8?B?QWpkd2wvK0ovRldrNE1CMkl6QU5vUE55VEl0dU1wV1J2U0ZELyt3elg2K09W?=
 =?utf-8?B?dWFDU1RjTmdTQlJ5bmxIR2xlVXVzZURTNFlEUG5TdkVqMEk0MStoYmRza1E2?=
 =?utf-8?B?RlZsR0duZEJicEE4RGgyNDhDcWlUMnBHcHEzb0xidVY5Vlh2cFdTTVI3Z1JQ?=
 =?utf-8?B?YW4xOUNmcHMwTWkvM1ZjQ3FTWjlNa2ZvaWxEOXFtSkMzUk5FS25kNEE4MU5o?=
 =?utf-8?B?bVgzdWJidjlsN2JqbjExbjh0MCtHRmF1aHBDTEZpcFh6S3E3R0NldjhiNlE3?=
 =?utf-8?B?ZUZVTjhGNFh5S05WOENhb2ExM0ZjYUdWR0tOcVNoNDJmdHZWdFArY2RhL1NF?=
 =?utf-8?B?NnRhNWV5TWpCQ1BXZ0htTEQyUW5ieDhsQTNoT2VYNExhdWpreThncGxxclRn?=
 =?utf-8?B?Qk9zaUlZdGwzZU9OT3JjeG9OemUxYUJIL3A1S254eDBtVFdWcC9qRVpIcUcy?=
 =?utf-8?B?MStEREdZY0ZzeHFEYVRVOWVNSVBBL0I4Qm13QytsSXAwamhyRUZsb2dKRmRQ?=
 =?utf-8?B?bXhlcUV1ZHNiazVFQlRKZHJ6QTdCSUVsMWtLSlhWKzREWFU1RlQvYnpUQ0da?=
 =?utf-8?B?Ry83TnFNNnBhSW9XTzIyQjYwTE5SYVoyeStDai93enZIRytrZ0Z3NlRnbjVj?=
 =?utf-8?B?emdOZldHTFFVb1lmc3JtMEpLYzJCL0QzSmdaaVd0b05oODhQZE1uYXVtNGxY?=
 =?utf-8?B?c2FHM1lSR1dKUDRYZmYybUZUSWhBUHVPQk50L01ZSjdoMFcxVHFzYUl5Q3Ru?=
 =?utf-8?B?cmJSNTZUWldKTUc3Mm1yK2VoMjgyOU91RnY0elZKSFFMSUlHdE5nVU43S3VJ?=
 =?utf-8?B?eVlqQW9QUlh0WlRrRXFiYUlRYzYxcGNaTklhVkVmd0lZRkN1d1VxTjRUUFBm?=
 =?utf-8?B?T3h0bHRjZnBFMld6aERiek5SSGpBSHRTVUJobXI5aWtERnU4cDBmbEhLd0xk?=
 =?utf-8?B?eWxtQ2NUNGdFOXNUanpWT2dNVmZaVjdkdGRvRGdXSXlGNnl3TzBnNXhKM2hh?=
 =?utf-8?B?UW43N01Rc1JkVTFqZXNnaHRwWE13Vi80bTBHaEhoWVNwQ3dNb2tVcEVSWTRs?=
 =?utf-8?B?RTlTZVdTYUFmUGx5WXNSdHdlelVXa1NUd042STBCd21VNm82Vit2dktiWng4?=
 =?utf-8?B?RGxTaE1qYUt2SDlvaHBHQkxYb1hQRXI3QUZBYURPVVVnS1dRV2VxRGVBUjYw?=
 =?utf-8?B?UWhEd0t1VjQ1RkxIcUcvS3F6NTY0T002TVhQN28wZE9oamhtTlNsQT09?=
X-OriginatorOrg: citrix.com
X-MS-Exchange-CrossTenant-Network-Message-Id: d657a18c-7b58-4375-35ba-08dea5eb7a20
X-MS-Exchange-CrossTenant-AuthSource: CH7PR03MB7860.namprd03.prod.outlook.com
X-MS-Exchange-CrossTenant-AuthAs: Internal
X-MS-Exchange-CrossTenant-OriginalArrivalTime: 29 Apr 2026 12:33:12.1173
 (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: 65QuatiB/BmrfCSta+kfabU2MiCmHrMKcfB6eUgZm+P9UJuHlRSIFoq7oBOBkCT5opYS0A7Wq+WjSqWI9bZdIw==
X-MS-Exchange-Transport-CrossTenantHeadersStamped: PH0PR03MB6592
X-purgate-ID: tlsNG-bad1c0/1777465996-490B3A53-F8BF7BE7/0/0
X-purgate-type: clean
X-purgate-size: 1663

On Fri, Mar 13, 2026 at 04:35:05PM +0000, Thierry Escande wrote:
> This patch extends hvmloader_acpi_build_tables() to detect if MMCONFIG
> is available by obtaining its base address and size from the hypercall
> HVMOP_get_ecam_space and sets the flag ACPI_HAS_MCFG in the ACPI config
> if needed.
> 
> This also sets the MMCONFIG area in E820 map using the same method.
> 
> Signed-off-by: Thierry Escande <thierry.escande@vates.tech>
> ---
>  tools/firmware/hvmloader/e820.c | 11 +++++++++++
>  tools/firmware/hvmloader/util.c |  9 +++++++++
>  2 files changed, 20 insertions(+)
> 
> diff --git a/tools/firmware/hvmloader/e820.c b/tools/firmware/hvmloader/e820.c
> index 86d39544e8..ff5c270f57 100644
> --- a/tools/firmware/hvmloader/e820.c
> +++ b/tools/firmware/hvmloader/e820.c
> @@ -158,6 +158,8 @@ int build_e820_table(struct e820entry *e820,
>      unsigned long acpi_mem_end = acpi_enabled ?
>          ACPI_MEMORY_DYNAMIC_START + (acpi_pages_allocated() << PAGE_SHIFT) :
>          RESERVED_MEMBASE;
> +    uint64_t mmconfig_addr;
> +    uint32_t mmconfig_size;
>  
>      if ( !lowmem_reserved_base )
>              lowmem_reserved_base = 0xA0000;
> @@ -260,6 +262,15 @@ int build_e820_table(struct e820entry *e820,
>          nr++;
>      }
>  
> +    /* mark MMCONFIG area */
> +    if ( ! hvm_get_ecam_space(&mmconfig_addr, &mmconfig_size) )
             ^ extra space

However, having to query the hypervisor for something that has been
set by hvmloader itself seems very inefficient.  Just store the values
in global variables so they can be consumed from here?

Same for the usage below.

Thanks, Roger.


From xen-devel-bounces@lists.xenproject.org Wed Apr 29 12:43:43 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 29 Apr 2026 12:43:43 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1297338.1573408 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wI4GI-00071J-L3; Wed, 29 Apr 2026 12:43:30 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1297338.1573408; Wed, 29 Apr 2026 12:43: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 1wI4GI-000718-Hc; Wed, 29 Apr 2026 12:43:30 +0000
Received: by outflank-mailman (input) for mailman id 1297338;
 Wed, 29 Apr 2026 12:43:29 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <roger.pau@citrix.com>) id 1wI4GH-0006uP-7C
 for xen-devel@lists.xenproject.org; Wed, 29 Apr 2026 12:43:29 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wI4GG-008goo-JV
 for xen-devel@lists.xenproject.org; Wed, 29 Apr 2026 14:43:28 +0200
Received: from [10.42.69.4] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <roger.pau@citrix.com>)
 id 69f1fced-e002-0a2a0a5209dd-0a2a450498fe-18
 for <xen-devel@lists.xenproject.org>; Wed, 29 Apr 2026 14:43:28 +0200
Received: from [40.107.200.46]
 (helo=CH5PR02CU005.outbound.protection.outlook.com)
 by tlsNG-ebf023.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.1)
 (envelope-from <roger.pau@citrix.com>)
 id 69f1fcee-1dec-0a2a45040019-286bc82e618e-4
 for <xen-devel@lists.xenproject.org>; Wed, 29 Apr 2026 14:43:28 +0200
Received: from CH7PR03MB7860.namprd03.prod.outlook.com (2603:10b6:610:24e::14)
 by LV8PR03MB7327.namprd03.prod.outlook.com (2603:10b6:408:18c::17)
 with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9870.19; Wed, 29 Apr
 2026 12:43:10 +0000
Received: from CH7PR03MB7860.namprd03.prod.outlook.com
 ([fe80::f5ba:35df:1c9f:b343]) by CH7PR03MB7860.namprd03.prod.outlook.com
 ([fe80::f5ba:35df:1c9f:b343%4]) with mapi id 15.20.9870.020; Wed, 29 Apr 2026
 12:43: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=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=fJB2aN2hHw9YPKmxZvhk7ujaLimwoxD4yiQr6vLh6Y59J6eDCzAmT7Akrec5sJ0AOquK7XGa+eCas56lyJ1fnXyDiQ13uA7L3l7Pi8Z/TLAcQXjigwiSSeAs63Bkj6gk/B6T5luf39oXolAi6kYvQRf2qEo9IOrZBsChOO8eECtj4RP8l02I2xxPyyU1NH/RKzbR1zqIJTsyrXq0CXDLWjZN2VHLb+pd338IZyJFteOsx2ZVcG3mP2d31WNZf7d9SSHVE4hBgXYJt7QyeubRkspSApnP7O7ZDrhjyJ7IYWjV/vRJ+NQWVLbmA5WhXdmgWPeHBSo/ocRzq5lNphH22Q==
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com;
 s=arcselector10001;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1;
 bh=MM7EQt8eQWvwZ7DmQscKM+4q0u/hxkPbkYmlBWetSXc=;
 b=qMMQovUj/IfKrNtUyXUGUFV+dIT6g7VsUemL51rP38dfjO1t0+ti1l7+5b9UZd+Ml9kmBTvyAUEkIJ1LPccdH+bCXHaqCBV0FKpGsgOdN0ejbDf0AfWor8UYI0b9wyEK176cTM+z1JzXCOcr62ETFUl093pyiz+effmPYNpJEnUHpcC6Rie5MtHeKVGRqGuetsZWvVLVqJJoNq9N9LKUdTVBiloLSDjiE8FT/FUqSnpbnM5ex1/GGmMjinlxy2a0b8/DiWPBdb+nhaFc6grD1w/dUjd85MqBuNlBvrtbysaRVKMon1M/wGR/hFjsJLLGp6jMBIndra8T6DGAabiRVg==
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=MM7EQt8eQWvwZ7DmQscKM+4q0u/hxkPbkYmlBWetSXc=;
 b=NnUZrCuvJyKrSALd3ZesLKiGLOZYXWXxVofd7PDmYlnJln4raWpG9BeJQBy6MvivTS5PH3DgxGFu784jqalAZ7MPcoTthJNSMtfujx2PCv6VOMSmQiero1fePHjj/Jmuco1WqHb7nmesjzwIVg4zZpTZKR8VTVswGCWOAotOSUU=
Authentication-Results: dkim=none (message not signed)
 header.d=none;dmarc=none action=none header.from=citrix.com;
Date: Wed, 29 Apr 2026 14:43:07 +0200
From: Roger Pau =?utf-8?B?TW9ubsOp?= <roger.pau@citrix.com>
To: Thierry Escande <thierry.escande@vates.tech>
Cc: xen-devel@lists.xenproject.org,
	Anthony PERARD <anthony.perard@vates.tech>,
	Alexey Gerasimenko <x1917x@gmail.com>
Subject: Re: [PATCH 17/17] docs: provide description for device_model_machine
 option
Message-ID: <afH823FT5PvnCWiK@macbook.local>
References: <20260313163455.790692-1-thierry.escande@vates.tech>
 <20260313163455.790692-18-thierry.escande@vates.tech>
Content-Type: text/plain; charset=utf-8
Content-Disposition: inline
In-Reply-To: <20260313163455.790692-18-thierry.escande@vates.tech>
X-ClientProxiedBy: BN9PR03CA0857.namprd03.prod.outlook.com
 (2603:10b6:408:13d::22) To CH7PR03MB7860.namprd03.prod.outlook.com
 (2603:10b6:610:24e::14)
MIME-Version: 1.0
X-MS-PublicTrafficType: Email
X-MS-TrafficTypeDiagnostic: CH7PR03MB7860:EE_|LV8PR03MB7327:EE_
X-MS-Office365-Filtering-Correlation-Id: 9b6db7f8-6703-4f63-8edb-08dea5ecdebe
X-MS-Exchange-SenderADCheck: 1
X-MS-Exchange-AntiSpam-Relay: 0
X-Microsoft-Antispam:
	BCL:0;ARA:13230040|1800799024|366016|376014|56012099003|18002099003|22082099003;
X-Microsoft-Antispam-Message-Info:
	OnIVtMFvhYLWyw9qEmvdwJ1gOY78lX30ZBHvdi6uFWv7oQOSqVC38+kYKSe2gvwAkMZHyVdc5VZGNk2SDOqCTAYAqBsUtKJAjkzzCppdIhxB49WfMu4+DnCOVeQBvDl+PYq4ZuWjomghw0Qu6lf8TJDhvdHYilyvYhtY1Ye+pDkUi0NQJGa+u1MJgVphpWwuisHZvL0Zd6VJluDkv3yzTvRtI+Gi8yLqzNGcUZGDLrA2LAJn5Ufor7wt90qDAzy+O90BHhnzAJ/B+H26G+Tyn2WTBw3L7jeXZf/mXsj8jk/8DTmWCmNWEMXmdIOoDCztPHcmzgp7xXXnk9ZT9KfPdoyOtwnOMKny9UNpSfmcLxwSuRYto56XToCQT0fbOcZ568ffHX4LQ8f5OuPcU9DmlbSdBpDXcLd3nCBkY+38BcgYSf1owPrLEu9Tz2W44CjbD/KG8pgRJvqrj7d7nw8n5D2HAKD36vaNr+vX7WkzWjgpoYyJL6DpPNOjiKhV5+yzmBAqFeG3AalhSHEMKTPwNGX5pWcKUY4uqgD0DfSMjg6lUPfvkvzUpe6bCuxdiAVcEdBQ8weXKbxVkhAA60JxyeNu8AbLNBLp2gmqkviSuAkurkMCuG0dcub1BrKX2dh1S2bVHslj5RXNIIu9GxPSkofgrLDAGM9TV2Plvj//K+BTl4PMKMw3Vi2kzRUPT3ujaE0GUyOGxCOg6sMcm+Sf11M83cBHEXHGdaqOC+MUp20=
X-Forefront-Antispam-Report:
	CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:CH7PR03MB7860.namprd03.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(1800799024)(366016)(376014)(56012099003)(18002099003)(22082099003);DIR:OUT;SFP:1101;
X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1
X-MS-Exchange-AntiSpam-MessageData-0:
	=?utf-8?B?anRRU1VqdDZOeUpNdTU4dGE3NHJiTkNYODVTMklCazg3ZmNrcytFMmp0VE1E?=
 =?utf-8?B?M2t5Y2xFaVNWR2puV3J0T3UrNW5Ha1ZvcERPQmJWMmZoYmV6WlUwK3piOXZK?=
 =?utf-8?B?L2g4VjNlc1Y5QnEyNTVjdExBQXcrSGpCd3RUYi9BYXpVRS9uMENHeTI4T0xl?=
 =?utf-8?B?WERabXB5TzJxK2dyY2J6N1E5OW93bEg1R0N3WmhPQ2pmOE1ORzNVaWRDazBi?=
 =?utf-8?B?RzdCbHRTeTBtYW9acFBwL2RiUlUrYVVHY080K3dhbitBRTNoV0FpOEUxVTZm?=
 =?utf-8?B?WHBVVFpGS1RmWjRVeUJNWkcvaDdFNld1STdMdS85cUhmVkFjNFI3QWZYLzBS?=
 =?utf-8?B?UWMyRmhLQnVwd0RiYXo0UVNnaWUrZUFNUzZraTFPVi9IeTVBZmFXeWpnRDYz?=
 =?utf-8?B?bXpzZlNxQ0R5OTFjV2pMZmEwU2VaaWR5ODRlUVlwYTFPWTcxZzJYRURaMDVQ?=
 =?utf-8?B?cEtHUmZmUTAraW1McXFLMG9hcXZ6UDM5VUhnZFZMKzJGUzh2c2hVU2JCaG5j?=
 =?utf-8?B?aW1sYWVEZVFDaHV0RXVoUHhMd2p5OXdTSkszdVRURWlXYVM0QW5WNS9OMlJ4?=
 =?utf-8?B?UHNWN3VjYnJGaHpXanREY3k1N2pMc08wa0RET2ZaaFk4RDUrQ2xmVDBQa1Nr?=
 =?utf-8?B?K0VIYVhZcy90VUFrZDdTdCtCdUI1Q3VhZEhvUGt4NHdyWnZ1aTVvbzBSTDJa?=
 =?utf-8?B?eE11ZndxWGdTWFdDUGRkT2E1anlvdEFuMmUxTzlINjlXMlhrMEptYnNUOXRk?=
 =?utf-8?B?U3FNcllNODNqL2c3RGw3MHJleFZhVGEyOFNPNjkzSzA4V0ZvZlhaTWZmZXdG?=
 =?utf-8?B?OWFHb3FHTW1lUGVubFptZndYc3RwTHllK0poaUdDbHF5M0FEMEhwcGRud3dY?=
 =?utf-8?B?ZW5xS3ZSTm9BWW4xTXZ1SWRvUE4yNkZPWFF1VCtYc2xZK0YxaTh3YmJ6UHVh?=
 =?utf-8?B?L3ZBTzZwZnFxbVkzbjZiTytTeDE2OFQwL21XWm43UklpNDIycnBCSkE5ODhB?=
 =?utf-8?B?U2pYWS9jZXNyQ1ZSTXRiVVRoaW5heFdTS3FoeE9GZnhHbldWeFBoTlVMRHFQ?=
 =?utf-8?B?R1I3Z3JDZ2NBWU9DOUhJcU0wdGhzaVI0S1QySDJ4eTFxVW5pd1k1RHFMSlhB?=
 =?utf-8?B?UnQzRThkdjZvK29XbDkzZHZjcjBDQ0lmTFBTUE9ZNjgxaTg4dWdrVWtHLzV0?=
 =?utf-8?B?eldZWHA5RGVaVWJPUzFBaysvVkFhYXVUUUE3b2lJZWFwWm9mQnRsRVR6eUtw?=
 =?utf-8?B?Q2ZUN0NFZDZJeVBncW1mTTVhbUV0dk1FWnNaU0xteHc1SEExak41TlBNaXZw?=
 =?utf-8?B?aHYvUW1sc0sweERIcCtyQVZNL2ZUVTJTUEdubG5hQTk3YStzb2tDbWJBNzFk?=
 =?utf-8?B?by84bmtkVWN5S2R2NUttWWhlMmZndjgxeTRhdkt0TndhcDZ4MVM0TlNSUDJt?=
 =?utf-8?B?OXVhQlYwVlBkYTZVbmx3NFZEb1dKV0xXbm1rT3VlWG1xUnJtNld3dWh4V2wy?=
 =?utf-8?B?ajVpTkp6OENjZVd3UERZdG11cGZSTnpKYTJ1Q0JDSGpXdUpjSjJGdG1DOThj?=
 =?utf-8?B?dTBPaWZodUZhSHErT1dyZUdVRDVramczdE12dDEra3hsdnZnWWVsTS82MmFp?=
 =?utf-8?B?NlFGNmJNMkNmcnlrMjVNZ2g2WEh6UjFOTFNmMEJudWRLczBkTS9TNGMydXZU?=
 =?utf-8?B?Y0NxUUl6UnJtYVBReUE3ckQybi9FWDlvSDBzKzV6QzZhZ25KbVdreVlUOU1U?=
 =?utf-8?B?THdpUi9kcU1DNVFxZzVzK0NkY2dGYmxJWC9PQWNFV2lIWlFlUnRMZitHZ1ZZ?=
 =?utf-8?B?eUlMNmRPQSs1UHlHR0ZMdTQvMHMxc3V6eVFDdGJSMFVEV056ZHdRNjdqVUFh?=
 =?utf-8?B?QUxDZkxyWmNOM3Z5YUxwNnFoZ2JxL3d3MlMyOEtRdUtPb0NJOFNkMks4amFR?=
 =?utf-8?B?bCtKekxuUDBzOThXNmlIYlBVODhHcEp0bGlYbVJSQlRTWGorNXE5Mi9xS2d0?=
 =?utf-8?B?QVRPcEhmalZqSS9BVGk4YXpFa054TlhSZXA0M0tIdkZxUzc1bHkvSlFGZkI3?=
 =?utf-8?B?aTFqNUV1WVlWSVZxSHlScTRJd2wxS0E3NGFPQVd4RENRSk91N3BKemNvdDFX?=
 =?utf-8?B?UkZTMHB5THF0NU5YWGFJWGNNbjlEdm9KcDZFakhzS0VLbGorM3g2cmR2ZHYr?=
 =?utf-8?B?UFNjdTJxSUwwRHYwa0NhSEFmS1QxZlRxRU9RTFgzM0FPZEQ1MEI2WFkzYVVy?=
 =?utf-8?B?NkUwcHBVSEVmeGl3a3RLYVN1QXkyZk44elAxK3F2MjV6MHhOdjN4MUErVDZY?=
 =?utf-8?B?SGliMTFIcHFSek9YcWpMWFB4aXlQeU1pSGNQYytxUU4wYzRkRE8zQT09?=
X-OriginatorOrg: citrix.com
X-MS-Exchange-CrossTenant-Network-Message-Id: 9b6db7f8-6703-4f63-8edb-08dea5ecdebe
X-MS-Exchange-CrossTenant-AuthSource: CH7PR03MB7860.namprd03.prod.outlook.com
X-MS-Exchange-CrossTenant-AuthAs: Internal
X-MS-Exchange-CrossTenant-OriginalArrivalTime: 29 Apr 2026 12:43:10.3575
 (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: Aj5jXwqCLL0Z5gfVxTfksSI37tn33iR+479V2zFJGcjC32BtN/ObI5YhtkkVRQ5CLjhzfTgKlt6BM4b8IQCFNA==
X-MS-Exchange-Transport-CrossTenantHeadersStamped: LV8PR03MB7327
X-purgate-ID: tlsNG-ebf023/1777466608-2BB6B3FF-5249AA82/0/0
X-purgate-type: clean
X-purgate-size: 411

On Fri, Mar 13, 2026 at 04:35:05PM +0000, Thierry Escande wrote:
> This patch adds description for 'device_model_machine' option which allows
> to control which chipset will be emulated by device model.
> 
> Signed-off-by: Alexey Gerasimenko <x1917x@gmail.com>
> Signed-off-by: Thierry Escande <thierry.escande@vates.tech>

This wants squashing with the xl patch that adds the option.

Thanks, Roger.


From xen-devel-bounces@lists.xenproject.org Wed Apr 29 12:43:43 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 29 Apr 2026 12:43:43 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1297337.1573402 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wI4GI-0006uu-8n; Wed, 29 Apr 2026 12:43:30 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1297337.1573402; Wed, 29 Apr 2026 12:43: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 1wI4GI-0006um-5A; Wed, 29 Apr 2026 12:43:30 +0000
Received: by outflank-mailman (input) for mailman id 1297337;
 Wed, 29 Apr 2026 12:43:28 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <roger.pau@citrix.com>) id 1wI4GG-0006uK-Or
 for xen-devel@lists.xenproject.org; Wed, 29 Apr 2026 12:43:28 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wI4GF-00CfGL-QN
 for xen-devel@lists.xenproject.org; Wed, 29 Apr 2026 14:43:27 +0200
Received: from [10.42.69.4] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <roger.pau@citrix.com>)
 id 69f1fced-e002-0a2a0a5209dd-0a2a450498fe-14
 for <xen-devel@lists.xenproject.org>; Wed, 29 Apr 2026 14:43:27 +0200
Received: from [40.107.200.46]
 (helo=CH5PR02CU005.outbound.protection.outlook.com)
 by tlsNG-ebf023.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.1)
 (envelope-from <roger.pau@citrix.com>)
 id 69f1fcee-1dec-0a2a45040019-286bc82e618e-3
 for <xen-devel@lists.xenproject.org>; Wed, 29 Apr 2026 14:43:27 +0200
Received: from CH7PR03MB7860.namprd03.prod.outlook.com (2603:10b6:610:24e::14)
 by LV8PR03MB7327.namprd03.prod.outlook.com (2603:10b6:408:18c::17)
 with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9870.19; Wed, 29 Apr
 2026 12:42:22 +0000
Received: from CH7PR03MB7860.namprd03.prod.outlook.com
 ([fe80::f5ba:35df:1c9f:b343]) by CH7PR03MB7860.namprd03.prod.outlook.com
 ([fe80::f5ba:35df:1c9f:b343%4]) with mapi id 15.20.9870.020; Wed, 29 Apr 2026
 12:42: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=ELo450mP+ZkF1nibXvhzYjcMT+4SmGEAePKXRejHLQBesVxeyXqJnLv4wnXLWrI4ILmdRtcZ6h7aGU5+fSBXCnA0grAM1e/rWsVACc586MJ438L+anO7UplSYiVNd5Sf9CJD5ZjWo5Qr1hFghXw0FQNBhjsrxPpoPhFfemV3w1dsVIaD6nXPe6BpCI5jCgseD73JuA5jwMWErqm7olCLA9MQItEjO6oie+ulOQZcRsZCbVLT4mCVdTJCDLPeIJfrVsWDmIt5eAtl87nqRduJW3NWaCbejX9MABOAIk5WsodHMj/CVjfonLtSvQaFUAqBxTrEv7SzfUtka4vLUkohPw==
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com;
 s=arcselector10001;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1;
 bh=f3MR6OdHyhhxWywXl28gco0emvkAneOWoV5IZxL1xBQ=;
 b=AtmYUK4GScZBShEET6K1GzRH5yGW5hdUMab9az5ycdChwmfR914+lclsmUpMHrdy14M55tIwWW7+xjzDWeH9GU5Tu2J55G7vmqr05uJg5fapzUYLSUPySidjSMPGZ2FlKTTyR5cPbhUWl2jVNIiFILWoBnMPDxhHk0am755ZO3JDnLNN/AdiS7BOV0n8KkLlyDDLCBxiS0XxDoOZo5r1IWN3HjhogICNr9bkUH0OGDw6uZgcp/FB9Rbx7LwpfcEQ6J1GURhXYVlxRf6Bi6SoxPR6MPZwWnHT/L35ae7uv+9/jvOhUrkYYTHz/4nAD1C2nN8jVyCVCeIfR5VRb2w+Sg==
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=f3MR6OdHyhhxWywXl28gco0emvkAneOWoV5IZxL1xBQ=;
 b=bPGYdQOknJ+Lz77UjkHrHwF6W2O9zr02VKHrIrc/SWyv2rsIF9eULUrn3WR14+autq9lGz5y+EdKAU+HHyPrmZezjGKMqmkngps2N9tPiRO//XuFUmeHA3qhfWnn+ZPcc9s2l5Q0oleWt4Fcze7d3n9NEyGcrRvKqfDl7kihoOU=
Authentication-Results: dkim=none (message not signed)
 header.d=none;dmarc=none action=none header.from=citrix.com;
Date: Wed, 29 Apr 2026 14:42:19 +0200
From: Roger Pau =?utf-8?B?TW9ubsOp?= <roger.pau@citrix.com>
To: Thierry Escande <thierry.escande@vates.tech>
Cc: xen-devel@lists.xenproject.org, Jan Beulich <jbeulich@suse.com>,
	Andrew Cooper <andrew.cooper3@citrix.com>
Subject: Re: [PATCH 16/17] Handle PCIe ECAM space access from guests
Message-ID: <afH8qwKo1z236QbI@macbook.local>
References: <20260313163455.790692-1-thierry.escande@vates.tech>
 <20260313163455.790692-17-thierry.escande@vates.tech>
Content-Type: text/plain; charset=utf-8
Content-Disposition: inline
In-Reply-To: <20260313163455.790692-17-thierry.escande@vates.tech>
X-ClientProxiedBy: MA4P292CA0012.ESPP292.PROD.OUTLOOK.COM
 (2603:10a6:250:2d::9) To CH7PR03MB7860.namprd03.prod.outlook.com
 (2603:10b6:610:24e::14)
MIME-Version: 1.0
X-MS-PublicTrafficType: Email
X-MS-TrafficTypeDiagnostic: CH7PR03MB7860:EE_|LV8PR03MB7327:EE_
X-MS-Office365-Filtering-Correlation-Id: 43c41fcf-90b0-4117-1822-08dea5ecc244
X-MS-Exchange-SenderADCheck: 1
X-MS-Exchange-AntiSpam-Relay: 0
X-Microsoft-Antispam:
	BCL:0;ARA:13230040|1800799024|366016|376014|56012099003|18002099003|22082099003;
X-Microsoft-Antispam-Message-Info:
	0iN/4RKZRmD/Nt7tRLkCJOpfanMxbf1qQP0YwokX3v+ia+5HEKkGDzg24+f7gxmuY/GZfd5e2kszKW0O7cQq1Gd0ZRrsaJPwjXB2HDEGQPZsLDswAgHf7QoqXJvQasiXATPpHRAvEmXKGqXv1Jr/re8Xhn8lluKcPkFOdDTXC7uc2nNTlAtr0XW30oeLKnvDfrC0LzAxdGZJshL9ydyd/ht2e3a1X69pZgm6NCdVNjr51uPyKjpNTsPrO2JErHw9AS9z9XXlxQ6CQVaaw/1zFqCZKiw2cRuP9eg3ShbSP1StTgW6ZRcF9CtByK88dzF6Bhtd5ZMffhTjrB6gDy5BaQ0JEJQ9/MF6vEu9pTSN/RAO8fHrWBBn34D33NRccE5K1Yf9jya9OnntmhVAJ26aE1FjkYg9tvTlP/SWixWKiGTsdvKPpM7Xok4whyuUqmHxsGvC9qKq3WFXdmvPE+KULID3n2bTQ5ShoL5IaaiApons0WLJdw4JoKlFCjP5bXjpumRT/v5PuIVsDqlkU7KJ54mPGyalfFPXFkxd/fWosmnwXUYEVwFcheqAgUWz3wNFlI8qo8vG/Z4LdhKyriBSuQ5WJG7sHxxeg3oHosxMSaQcwCtrpNX55IoVpr7zB3/pEolkWJePRxEXZGXxbk4qWsItvLDJc4Y1zW2NLiHAgiGEV0TwuxFYmB28Dp9ug7TJ11jSlifAOg4MSslpmrsA7pQ5UyzdIrcoago9HYMFLyo=
X-Forefront-Antispam-Report:
	CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:CH7PR03MB7860.namprd03.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(1800799024)(366016)(376014)(56012099003)(18002099003)(22082099003);DIR:OUT;SFP:1101;
X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1
X-MS-Exchange-AntiSpam-MessageData-0:
	=?utf-8?B?MS9JMUoxYUZHMmZrZTFGNW1vY1pHazZWSGhmMy9GY2h1ZTZadGNIaFNUcFpm?=
 =?utf-8?B?YXNMQWc0QWhnSGNucDF1bmozei9kaStNNjRVUy9jRndFeVVyZHRXMVFucFdN?=
 =?utf-8?B?MGxUUXNKaVpDc3V2RHN6ckFyUVM2WkRIR0FySW1TdmxDYllmclpOZUo5R2cv?=
 =?utf-8?B?WjBidG1VMjVKZDRmcElBZW50WnM2Nmx2Y2VmbFJSZExod2dvTXB2YTRNbmRV?=
 =?utf-8?B?dmRkVk9kL3BrSFpRaURCQkhkUmxnbDV0dml2amhtVjlJSVg5R0tTMVBjaDNK?=
 =?utf-8?B?aElPcFc3YUVJeVlFYnBSQUpCT2l3aFczYUxsNHVIQ2pMU0h2V0JtUExCSEFM?=
 =?utf-8?B?anZWMHpiSnhyaGIyTlkzaFZNWTJOVmQ1cWpBY0M4T1U2enN5aWNzUk5sQXAw?=
 =?utf-8?B?TkFaNkV6Y1ppeVB2aE1JZXdaV2huUGlhbWs2ZEhkOFhiWjFNT1pVR0tPYlNZ?=
 =?utf-8?B?R3dMRjZXQ1ZSQTI3dWhXQVBQVVFjdklBUWhTMi9ySStuT2Z0UkZWOENEYldQ?=
 =?utf-8?B?SVlVQ0tJTkMwbW5UQWdQQWVuYXg5ZVZkMVhiWDRDdkZ0blFjTVVTYm81NEdn?=
 =?utf-8?B?ZjY3ZFArMk10UUF4anVBR1p4S054blhyWkw3MnRMOGpsdnA0V2Q0eUVPY1Na?=
 =?utf-8?B?ci91VmtLdlZOdmkwWmlSczYyRnpRcW5OSG5aU0ZjM3BiSkdWZ01TNHJNUVl4?=
 =?utf-8?B?SnJiS3BmL3dDMHJKQWs4RWRQZnVvM21DK3cxQmkrWDR1Tkc5Ukc3djFkUk9C?=
 =?utf-8?B?V1JMSW5jUVg3WmJsYmlxTEFBcTFKSVl2Vm91cFhBL0hyUm5WT2ZDNUFWUFJs?=
 =?utf-8?B?Sm5Cd2RFcFR4L2FPZVE0TklnSEtVakdWL0puMjQrekR3THkyT210QUczVkZQ?=
 =?utf-8?B?RGIxaGk0QkhmdnEvNGNLUE94L2ZLNWtGK0I3ZVpJYngxakJFM1RPZmI3WlNI?=
 =?utf-8?B?R0UzZC9VV3hUM2Roc2EyaHRGelRyQkdoczZlNFRMYmR2V1h4dVhzTDJSK3ly?=
 =?utf-8?B?YWg0TUNmYitZUHNGSzZDREVzV1Evb2JlY3lGUFRnQ0ZUbnZpT1ErZlZNRTlZ?=
 =?utf-8?B?dFF3Z2xZRGdlR1RUVWJFdHlkZUVKWjhyQ2J5NUxYOE9FSDVUZWtKcVhHYWpF?=
 =?utf-8?B?OVh2UG1LTEltUVZtRXIxR2FiNFVpNHBhOHd6dXRaUEZGazVBRmN6OWc5VUJL?=
 =?utf-8?B?bTBoYjRub3ZRQXQ4TWVueGV4bnJYZGZscXNsaDkvNzdsQkk3aGpyOC9pM080?=
 =?utf-8?B?NFoybkJXMEFGSForZTJRVnJrRkJtak1DTjJlVUtrdVh0VUVFMmU2MnByV0o4?=
 =?utf-8?B?aEV2eWZIaktsZmtpQUdkTW9YNVBVdWFGT24wZ2FlemVtNzQwZEpYek1rczB1?=
 =?utf-8?B?dGhnakFBSmJSQUNOVnVPS1F2cEs2L0VGc3k3VXhSclNiWDI3U1lFeEpadWVk?=
 =?utf-8?B?c2lWM24xYWhJbzVqU2NLL043K2ozU2p0NHFNampYdnRlcTlpZklBbWIvNHZs?=
 =?utf-8?B?TmEzWDArYllNTnM1NEQ3SWdPSDc1YUc5UXdvN28ralFhOUJNZEEwcWh5NDhI?=
 =?utf-8?B?TGZBYzAraEFzeGdtOTAvRGVPRTBqQW0xRGRXTWpMZmR1YkhObE5RTVd0Sng1?=
 =?utf-8?B?V2E2OG9OczREQmRXSlVPQ2g2RHpQczBYbURrUGJkbHViWDVWZkxrampTbU44?=
 =?utf-8?B?ZHRWQXlaTjJWTUovN2hNbU1xV0ROT3haY0duN3FtWjM4YUlwQzJZQndmRVVt?=
 =?utf-8?B?YUJ5VG1zUTdvNFpZalMrSnB3RHNNeG9ackYyWSt5UHl5Uy9PQXdpS3pObE9q?=
 =?utf-8?B?QnZFU3NyZ0RzeUFsU2Y4clNjTjF6S2JRZFpEMHF4ZGlZL1k1NFYrRWIrYTdR?=
 =?utf-8?B?UVZiam1ENnlYQ3NybHN0ZjJGajNLaXV3THpMQjFIcVdLcVFFK09ML2g1eGdw?=
 =?utf-8?B?QVYxd0wwczNMQXluS2cxYVA4Y1dYZE5sUFl0Rnh1WFhjR2Z3RzhmdElzczZl?=
 =?utf-8?B?blFNUm9qQkJIdmJTK2VtVDkwSWJoZ1BlcmdKaHcrdHhUYi9WSkxiZzRSK0xT?=
 =?utf-8?B?ZXJGakw3K0pCMUlGY0MweWVjWCtnd3Z3SVdzWXhiekNaWUNmVFkvQndRSnp2?=
 =?utf-8?B?R3ZpSkFIcjVRODgvWk1NbTE4N0k0Z3hTRzdNSnJpZE9hSC9KejZINHFWSU51?=
 =?utf-8?B?UWs3OUpodllRVXVLamh1eUlBKy9sV2o4aitUNS9sdTNJN3o5VThMWGh2T1ZI?=
 =?utf-8?B?d256YW94ZkJTUHBBOXgzUWVwTzJIdDYzODFzSDZyWmNuVWVld0xhQ1h5SFgx?=
 =?utf-8?B?TUNNd3hMM1M1NnpneXY1a3N4am1lNnoyeXhSM1d4V0xvbk9xa1RkUT09?=
X-OriginatorOrg: citrix.com
X-MS-Exchange-CrossTenant-Network-Message-Id: 43c41fcf-90b0-4117-1822-08dea5ecc244
X-MS-Exchange-CrossTenant-AuthSource: CH7PR03MB7860.namprd03.prod.outlook.com
X-MS-Exchange-CrossTenant-AuthAs: Internal
X-MS-Exchange-CrossTenant-OriginalArrivalTime: 29 Apr 2026 12:42:22.5636
 (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: f8tgYg/cMm/jtOS0pBKoyG5DnScDcQvHEfmog5U3zFK9ewpFtSDkKC0rVt4r0GYhzUdkBlKEHdQoQySV79Vijw==
X-MS-Exchange-Transport-CrossTenantHeadersStamped: LV8PR03MB7327
X-purgate-ID: tlsNG-ebf023/1777466607-289723FF-E4348716/0/0
X-purgate-type: clean
X-purgate-size: 2285

On Fri, Mar 13, 2026 at 04:35:05PM +0000, Thierry Escande wrote:
> This patch adds the logic to decode MMIO-based PCIe ECAM accesses. If
> the IOREQ_TYPE_COPY request is within the ECAM address space configured
> by hvmloader, the ioreq type is set to XEN_DMOP_IO_RANGE_PCI and the
> sbdf decoded from the accessed address.
> 
> Signed-off-by: Thierry Escande <thierry.escande@vates.tech>
> ---
>  xen/arch/x86/hvm/ioreq.c | 15 +++++++++++++++
>  1 file changed, 15 insertions(+)
> 
> diff --git a/xen/arch/x86/hvm/ioreq.c b/xen/arch/x86/hvm/ioreq.c
> index a5fa97e149..022fe05222 100644
> --- a/xen/arch/x86/hvm/ioreq.c
> +++ b/xen/arch/x86/hvm/ioreq.c
> @@ -268,6 +268,8 @@ bool arch_ioreq_server_get_type_addr(const struct domain *d,
>                                       uint64_t *addr)
>  {
>      unsigned int cf8 = d->arch.hvm.pci_cf8;
> +    unsigned long mmio_start = (p->type == IOREQ_TYPE_COPY) ?
> +                                ioreq_mmio_first_byte(p) : 0;
>  
>      if ( p->type != IOREQ_TYPE_COPY && p->type != IOREQ_TYPE_PIO )
>          return false;
> @@ -298,6 +300,19 @@ bool arch_ioreq_server_get_type_addr(const struct domain *d,
>                  *addr |= CF8_ADDR_HI(cf8);
>          }
>      }
> +    else if ( p->type == IOREQ_TYPE_COPY &&
> +              (mmio_start >= d->arch.ecam_addr &&
> +               mmio_start < (d->arch.ecam_addr + d->arch.ecam_size)) )
> +    {
> +        pci_sbdf_t sbdf;
> +        unsigned int reg = mmio_start & ~PAGE_MASK;
> +
> +        sbdf.bdf =  (((mmio_start - d->arch.ecam_addr) & 0x0ffff000) >> 12);
> +        sbdf.seg = 0;
> +
> +        *type = XEN_DMOP_IO_RANGE_PCI;
> +        *addr = ((uint64_t)sbdf.sbdf << 32) | reg;

The trapping & decoding here should better re-use the logic in the
vpci_mmcfg* handlers in x86/hvm/io.c.  You might want to gate the call
to register_mmio_handler() to the domain having vPCI, so that
otherwise it will be handled by the IOREQ catch-all.  It's a bit
hacky, but we already know that vPCI and IOREQs don't play well, and
it needs solving properly.  Again I don't want to force you having to
do that just to get q35 merged.  But we should at least aim to not
duplicate the data in the domain structures.

Thanks, Roger.


From xen-devel-bounces@lists.xenproject.org Wed Apr 29 12:47:20 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 29 Apr 2026 12:47:20 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1297354.1573420 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wI4K0-0007zo-2W; Wed, 29 Apr 2026 12:47:20 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1297354.1573420; Wed, 29 Apr 2026 12: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 1wI4Jz-0007zh-Vd; Wed, 29 Apr 2026 12:47:19 +0000
Received: by outflank-mailman (input) for mailman id 1297354;
 Wed, 29 Apr 2026 12:47:18 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <Luca.Fancellu@arm.com>) id 1wI4Jy-0007zb-Gs
 for xen-devel@lists.xenproject.org; Wed, 29 Apr 2026 12:47:18 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wI4Jx-00Cfht-Pa
 for xen-devel@lists.xenproject.org; Wed, 29 Apr 2026 14:47:17 +0200
Received: from [10.42.69.1] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <Luca.Fancellu@arm.com>)
 id 69f1fdcd-2eae-0a2a0a5409dd-0a2a4501ca1a-36
 for <xen-devel@lists.xenproject.org>; Wed, 29 Apr 2026 14:47:17 +0200
Received: from [40.107.159.35]
 (helo=OSPPR02CU001.outbound.protection.outlook.com)
 by tlsNG-d62444.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.1)
 (envelope-from <Luca.Fancellu@arm.com>)
 id 69f1fdd3-c1f2-0a2a45010019-286b9f235cde-3
 for <xen-devel@lists.xenproject.org>; Wed, 29 Apr 2026 14:47:16 +0200
Received: from CW1P123CA0017.GBRP123.PROD.OUTLOOK.COM (2603:10a6:400:292::17)
 by VI0PR08MB10777.eurprd08.prod.outlook.com (2603:10a6:800:201::14)
 with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9870.20; Wed, 29 Apr
 2026 12:47:12 +0000
Received: from DU6PEPF0000A7E0.eurprd02.prod.outlook.com
 (2603:10a6:400:292:cafe::56) by CW1P123CA0017.outlook.office365.com
 (2603:10a6:400:292::17) with Microsoft SMTP Server (version=TLS1_3,
 cipher=TLS_AES_256_GCM_SHA384) id 15.20.9846.30 via Frontend Transport; Wed,
 29 Apr 2026 12:47:11 +0000
Received: from outbound-uk1.az.dlp.m.darktrace.com (4.158.2.129) by
 DU6PEPF0000A7E0.mail.protection.outlook.com (10.167.8.39) with Microsoft SMTP
 Server (version=TLS1_3, cipher=TLS_AES_256_GCM_SHA384) id 15.20.9846.18 via
 Frontend Transport; Wed, 29 Apr 2026 12:47:11 +0000
Received: from DU2PR08MB7272.eurprd08.prod.outlook.com (2603:10a6:10:2d7::16)
 by AM9PR08MB6113.eurprd08.prod.outlook.com (2603:10a6:20b:2d6::13)
 with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9846.26; Wed, 29 Apr
 2026 12:46:09 +0000
Received: from DU2PR08MB7272.eurprd08.prod.outlook.com
 ([fe80::5d34:206f:373:a323]) by DU2PR08MB7272.eurprd08.prod.outlook.com
 ([fe80::5d34:206f:373:a323%6]) with mapi id 15.20.9846.025; Wed, 29 Apr 2026
 12:46: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=arm.com header.i="@arm.com" header.h="From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck"; dkim=pass header.s=selector1 header.d=arm.com header.i="@arm.com" header.h="From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck"
ARC-Seal: i=2; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=pass;
 b=jUDKSZUscgzbq2fihMrwKi2wayXnkDYYjYubirpTzVPLUZL/YHSDDnsi5pjJREfPNkuWsNlXOgKz4e3HC4ufxvo2bT7APTFUT6s3U8eRx8/Zk85Ev+G2sgzFnbpKSqgD7jAR0L7C+Ta8DorzDLZ7SFGlMB0HYqhc50t3n7ZeaaP4qwP1MGi+oJPaQQ9WVqsEO9k22cvmOCkSHw/hKMIiFIVdhgMPriLjSvgK4YciRprC7oqyB8+JFhdB8wWia79e053RtzrIZ3v3uFPv6qVo6Hj89zUl4YdHv3pE8FuJw53Oc2zG7gKFWfqVnVHVjuGhB22ZpKJOow9DjlTC5bpOMg==
ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com;
 s=arcselector10001;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1;
 bh=+zA/iXspRkD0NlWvSUlPNdol7uKLI2vcJf7roAG+2jA=;
 b=tGpb7FLe8lfhHjbaRSm6RtnL0JABePMSCCp2FcqNylJi0dKU4SlMqoKxlK4VribKZFJvILGFFY331TWeFfmqeMMAKU+Ae8ulSfTHFfKZJS7Nnzjk7tKeML6nvjCk6DBUESJQgLgiqZwPTJQGE+lpwg33e/v3lTGD9E3fijnWQPjCC55spNogyOAGPrDLbjSn9Iud83wzrruZ2zQ5WEYDDttJ7rz4tjVPweKBrRVGTDG30/3a9Pey2AU924Kb+nZbqGV0Qo1WE7b1reQj2DtoxHbAJ8wFb4zlTqctsdOlGFY5TRfa1k/C/+mYOtin2MnaDSSXObP0Q2Z2ag9QviYx1w==
ARC-Authentication-Results: i=2; mx.microsoft.com 1; spf=pass (sender ip is
 4.158.2.129) smtp.rcpttodomain=amd.com smtp.mailfrom=arm.com; dmarc=pass
 (p=none sp=none pct=100) action=none header.from=arm.com; dkim=pass
 (signature was verified) header.d=arm.com; arc=pass (0 oda=1 ltdi=1
 spf=[1,1,smtp.mailfrom=arm.com] dkim=[1,1,header.d=arm.com]
 dmarc=[1,1,header.from=arm.com])
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=arm.com; s=selector1;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck;
 bh=+zA/iXspRkD0NlWvSUlPNdol7uKLI2vcJf7roAG+2jA=;
 b=KRemq5m+OLmcPX5mRpyzJSr/8LcKx7oD78UxW1jzAaQ122RpjYETFmfemEIDk44Uz+l1+cbS7Xu0Yay6pLymDAxjTxLiLdGhctMpQaDwTjfbwUiYGT1f0MJ0v3nS+pOK3MVP3KEjMFqHaRrTM50AE4AiMY9ITiPWR/udPK8mddI=
X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 4.158.2.129)
 smtp.mailfrom=arm.com; dkim=pass (signature was verified)
 header.d=arm.com;dmarc=pass action=none header.from=arm.com;
Received-SPF: Pass (protection.outlook.com: domain of arm.com designates
 4.158.2.129 as permitted sender) receiver=protection.outlook.com;
 client-ip=4.158.2.129; helo=outbound-uk1.az.dlp.m.darktrace.com; pr=C
ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none;
 b=bs1L9MCaz1pSjjGLNU/PdKeliR2GW5lmoSILGTRV6Jy4q6xfHDmmHXWssJ4qF3rp2FtisLJhkFmT7hOdz3eEuQTxMicH4Cmnu5PfnrMAjQV5Kodtrnhsonx3Ceda3H1E8MiqsAg6ewZ1lU59DonwqLuNJnzhsvVlfIsQ/vxIIG7x3IxpVxDb/NNpNlMWkFkIwSftMqqQa75L3VjShlAfkaOaGUTHeSf7rE7kM8F0Jj+d0EW1UgOxqESkKg/QccyjZ8g756Kg4CXVd+S3394q9x2CA+xUZzWQW2s/amxD+N2fXp6VU8XvFpYW+rOERKLlfLop3XyJ0dww3NmwfrOtDQ==
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com;
 s=arcselector10001;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1;
 bh=+zA/iXspRkD0NlWvSUlPNdol7uKLI2vcJf7roAG+2jA=;
 b=fZdpgGLy0Bz4E8QY/hdXxLqxUo+JOV2UGDpYB5k21RLeYSN70Gkxzgt3v1P231z94dVdndFI8ce3LkqriD6J+/YLR9g1Xh32NRLjd+XBMwwN8XqIzol86s9JtnTYUMFG6i5c4cNxsj2JkyLZsPLiiDwokpPvKE+0SMSymD7vY5JtL26RqQ4GYfqpv6DBTD4t4tMcrMHHRkHIVdqRwSVNGyEmKkf7Fssmox0KROXv1tgyqQ/6QNXNmgbOlIl6W2h4szhcKNnaAbCiCNgEEHG435rW8j7tbrWrWhJHVI6QwRbcYfF1D2M3SJWFv1tDJNb6Zp0KBnJyaipzR65//IdERg==
ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass
 smtp.mailfrom=arm.com; dmarc=pass action=none header.from=arm.com; dkim=pass
 header.d=arm.com; arc=none
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=arm.com; s=selector1;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck;
 bh=+zA/iXspRkD0NlWvSUlPNdol7uKLI2vcJf7roAG+2jA=;
 b=KRemq5m+OLmcPX5mRpyzJSr/8LcKx7oD78UxW1jzAaQ122RpjYETFmfemEIDk44Uz+l1+cbS7Xu0Yay6pLymDAxjTxLiLdGhctMpQaDwTjfbwUiYGT1f0MJ0v3nS+pOK3MVP3KEjMFqHaRrTM50AE4AiMY9ITiPWR/udPK8mddI=
From: Luca Fancellu <Luca.Fancellu@arm.com>
To: "Orzel, Michal" <Michal.Orzel@amd.com>
CC: "xen-devel@lists.xenproject.org" <xen-devel@lists.xenproject.org>, Harry
 Ramsey <Harry.Ramsey@arm.com>, 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?B?Um9nZXIgUGF1IE1vbm7DqQ==?=
	<roger.pau@citrix.com>
Subject: Re: [PATCH v4 2/3] arm/mpu: Introduce `v8r_el1_msa` device tree
 property for domains
Thread-Topic: [PATCH v4 2/3] arm/mpu: Introduce `v8r_el1_msa` device tree
 property for domains
Thread-Index: AQHc0NE3ALBy7PZ580mbz6n62JxEi7X1+9KAgAAOtAA=
Date: Wed, 29 Apr 2026 12:46:08 +0000
Message-ID: <55B3CCAD-8EF6-4949-BC87-D7EE3A348FEC@arm.com>
References: <20260420142224.1802911-1-luca.fancellu@arm.com>
 <20260420142224.1802911-3-luca.fancellu@arm.com>
 <6ba6db51-3ff0-4ecd-9f86-03735e7dfc05@amd.com>
In-Reply-To: <6ba6db51-3ff0-4ecd-9f86-03735e7dfc05@amd.com>
Accept-Language: en-GB, en-US
Content-Language: en-US
X-MS-Has-Attach:
X-MS-TNEF-Correlator:
x-mailer: Apple Mail (2.3826.700.81.1.6)
Authentication-Results-Original: dkim=none (message not signed)
 header.d=none;dmarc=none action=none header.from=arm.com;
x-ms-traffictypediagnostic:
	DU2PR08MB7272:EE_|AM9PR08MB6113:EE_|DU6PEPF0000A7E0:EE_|VI0PR08MB10777:EE_
X-MS-Office365-Filtering-Correlation-Id: a492def3-4693-4ff6-0cf5-08dea5ed6e9f
x-checkrecipientrouted: true
nodisclaimer: true
X-MS-Exchange-SenderADCheck: 1
X-MS-Exchange-AntiSpam-Relay: 0
X-Microsoft-Antispam-Untrusted:
 BCL:0;ARA:13230040|1800799024|366016|376014|38070700021|18002099003|22082099003|56012099003;
X-Microsoft-Antispam-Message-Info-Original:
 us/qQ6XvOQRZxXEZ84nYrg2OKJU2ea3kpwzZEe4pXAcIi70Y/MjDyuExITM/yDn2KnMb7lzL2d2hHLmzhb4IEwCkccltlJQrJsQX/FEIm5lfyBu5DPqc5IwidmdZfrI6c0XFgQtIkPMvgHFJyhKdOhkVOS2xRWZswobAPeQK577wT/xUGlhcoWmjDbPO9dwt3bbyMU8RPUvEdWfOsoBS8OYqcWxpD8BqycyahPkN9jAhfn/WA5y2zOvm8YWYt/WtzGK9zUlnWY15iuV9v+MsQo6LRb94TxexgibDI7BTaFjUzjp6duZSh5WuzzZhiTjbT6aaTM5tbArPvBS2LlmTdATE/Z6uXpT81/s6dM2RuEkhvs7Ai/GdS3GFwlPH4Pbv5JznCEdnd/wujdM67239IK4xMyMQ6OaCghPpW8f3wyboMlx63EI4LdjR/S05qPN6mhNCgQRSmBOp1tWWEhqfKPgoYDi9H0DQdaotWlK81WoAeE1vZH6PkOvKv2MLsHtQUKLDwcL3Fb22zmbE8m96+f7p2gqw8etpAU033g6U70TsBkljUf1M7XeMW85aDBlW6WmMKWES9ism8QnlrRDeGF4X5RVKnGHrhwkl/fsgVdgZm1pMtH2Z6g6ZheGgnMJkR1DXuVaWPRx3EgpuDRnC/vAqqnneHZcfVpvczexU3MvpMzvjiHm3SQ2lPWtMEUJY3HEnVv5EZW1+YuIz7kni0APGuL2B0Gof+SCYVqlxcWmQXwnwMDVFWZEEJuSQJcC4syeTBAcKdtRhMa1ehaJwoBrf61oJy0iJNUDHMHHbMqA=
X-Forefront-Antispam-Report-Untrusted:
 CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:DU2PR08MB7272.eurprd08.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(1800799024)(366016)(376014)(38070700021)(18002099003)(22082099003)(56012099003);DIR:OUT;SFP:1101;
Content-Type: text/plain; charset="utf-8"
Content-ID: <1850A0C0E2790941ACAF27D4D9DEDEDD@eurprd08.prod.outlook.com>
Content-Transfer-Encoding: base64
MIME-Version: 1.0
X-Exchange-RoutingPolicyChecked:
 Kcp1VV2DSVDeVXyNiuV+jlPA0Yt0hZRyGomkcOikb7ZzhXd5KEKnlq72/RvYXrkQuybyd28r1xxmTCj4iVF5tLqqHdCT1apUqQsGm9xCI8hrxy4J0SKUJNpQ5k6pxGrxGsFfC1b1Ice6ZZBRI6w1oKm2ZDqiyrq+q8G+kS5PoqqImZsEsiMRo0++b0LW8HtCDCq6h9UKHEroRN4F6Dj2XyMXYn/WW0UclGVVEkDF6TExncXgZBkBzSMM4nvncowMCoujETp3nLSUMJsfImDlSPUS1Q+AorMKMgn3PAFzdRQI1VnM4+kSjENgiqiQzwci+gBAWrRcA5e31lSzd8jTxw==
X-MS-Exchange-Transport-CrossTenantHeadersStamped: AM9PR08MB6113
X-EOPAttributedMessage: 0
X-MS-Exchange-Transport-CrossTenantHeadersStripped:
 DU6PEPF0000A7E0.eurprd02.prod.outlook.com
X-MS-PublicTrafficType: Email
X-MS-Office365-Filtering-Correlation-Id-Prvs:
	7b5af8da-c248-4dcf-e3f4-08dea5ed4963
X-Microsoft-Antispam:
	BCL:0;ARA:13230040|36860700016|1800799024|14060799003|376014|35042699022|82310400026|22082099003|56012099003|18002099003;
X-Microsoft-Antispam-Message-Info:
	6fad5sj/ADGUfTfT1vaqAzrON4b6Vo04HQAZpEu0/qUc2ekj8ZnajpxeceQciW2G2H9WbqqGWsKrFsOlQaLhjjt0p156lx1FVMLdDMbkU3lI24RBTAtd7MynzlfJ7hQHC8bLowwzqicB8gE0hVLXxHg0Wm9DzA0ieNN4NKtuBKvaerabfGr1NkIC/xUAN67sSXRj6S4iGz16tklCpTYbZ/feJShmyzjxiyhfIAuC8y2mvChdgqUJSiz3h/NVaMVzXZfpQVFNwvbelEdTaOJ7i9alZWTsqY04s7JUFqL47hJaNJvg3wPjK39j5My7CmVKuatxTY3XRGOLZKd67d2cKLILlZcC4CjEP2hN/MtvagGxqSE9Wgnv29/5lNMlt86W3Dt9bnhcu9L7j52wPFDcyLQV6Wow4LAPxdyvDH0i0Wt+TYbnubRlyUxcOv5Ccev8KzKv3EJvPnn2rP1N6TJ6AgJIbWN3KSGy2KsGv4KBZhp1xXOIoz5XyCuqKeqKcUUDRxgdRHJSrSNdhiVgDptGpAGlDFYPWU/Pt9zjSsvosguouU4Nm9WM25NknS9giKKxMAeMylFgDoPvE5kmjM5FVPk3BHkRG2jqHxsY4YTEULvXj7eSiJCasRanZspdZWHO3xir6aN/2fkPgjh4IUVUTzsiCoUjY6Vfv/QFK6VT4UktkCbzo2gT4UQMHFIEJt9GIJzdgtf7EjDejg+9gWgTMbXlEAvnEjCX47AYIiYAGDCsyvqlgtHJzk7vcxHrg/Vjsg8xeBTAQOI9pfr9W3o44g==
X-Forefront-Antispam-Report:
	CIP:4.158.2.129;CTRY:GB;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:outbound-uk1.az.dlp.m.darktrace.com;PTR:InfoDomainNonexistent;CAT:NONE;SFS:(13230040)(36860700016)(1800799024)(14060799003)(376014)(35042699022)(82310400026)(22082099003)(56012099003)(18002099003);DIR:OUT;SFP:1101;
X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1
X-MS-Exchange-AntiSpam-MessageData-0:
	0vHeqcvpV7u0900JqX4suAC8Ev9zIJwtiD2e72FtTlVkl4bZxa0jjOicjbCMdGeNp9DPwGkkl6ClexmSxIgjwdqSnmGgGYdcy0RwDzYjCEU6CrQGSipTqa6aDEgtaQtsMEl+fml9GoYanEkIS4/4YldQW9v+1+tMTsoB1JHoIpQX2XTrm3Zfc5zV9G8lW1Jb0UZfYFjBwr/xFDFJP3eEPbqOABDuMqAJ25P8ya1YMUQMsldU1S/ehBViNcYw9Yn1mS8XgzMpDcu/L2jBfloTijT9lQKIsvL/uxFEiqEa5UTz5np5zDR4MPlBrbcs+xbs+hs4IhqqrFqk5wN/6RaY2z0Vwz98Tm6aAkzAbbEW9J5sUy1RlcAL09WQXs++ikWA2Oh8Pc4CjBxsfSifY6Dre+RfuGxpXkKoT8QZXuzQbUZQ2xjLDaKcUuGGNsr5spsG
X-OriginatorOrg: arm.com
X-MS-Exchange-CrossTenant-OriginalArrivalTime: 29 Apr 2026 12:47:11.3810
 (UTC)
X-MS-Exchange-CrossTenant-Network-Message-Id: a492def3-4693-4ff6-0cf5-08dea5ed6e9f
X-MS-Exchange-CrossTenant-Id: f34e5979-57d9-4aaa-ad4d-b122a662184d
X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=f34e5979-57d9-4aaa-ad4d-b122a662184d;Ip=[4.158.2.129];Helo=[outbound-uk1.az.dlp.m.darktrace.com]
X-MS-Exchange-CrossTenant-AuthSource:
	DU6PEPF0000A7E0.eurprd02.prod.outlook.com
X-MS-Exchange-CrossTenant-AuthAs: Anonymous
X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem
X-MS-Exchange-Transport-CrossTenantHeadersStamped: VI0PR08MB10777
X-purgate-ID: tlsNG-d62444/1777466836-BDE6BFF4-3F9C8BA1/0/0
X-purgate-type: clean
X-purgate-size: 18648

SGkgTWljaGFsLA0KDQp0aGFua3MgZm9yIHlvdXIgcmV2aWV3LA0KDQo+PiANCj4+IGRpZmYgLS1n
aXQgYS9kb2NzL21pc2MvYXJtL2RldmljZS10cmVlL2Jvb3RpbmcudHh0IGIvZG9jcy9taXNjL2Fy
bS9kZXZpY2UtdHJlZS9ib290aW5nLnR4dA0KPj4gaW5kZXggOTc3YjQyODYwODJmLi5jM2Y0ODRh
M2IwMWEgMTAwNjQ0DQo+PiAtLS0gYS9kb2NzL21pc2MvYXJtL2RldmljZS10cmVlL2Jvb3Rpbmcu
dHh0DQo+PiArKysgYi9kb2NzL21pc2MvYXJtL2RldmljZS10cmVlL2Jvb3RpbmcudHh0DQo+PiBA
QCAtMzIyLDYgKzMyMiwyMCBAQCB3aXRoIHRoZSBmb2xsb3dpbmcgcHJvcGVydGllczoNCj4+ICAg
ICBTaG91bGQgYmUgdXNlZCB0b2dldGhlciB3aXRoIHNjbWktc21jLXBhc3N0aHJvdWdoIFhlbiBj
b21tYW5kIGxpbmUNCj4+ICAgICBvcHRpb24uDQo+PiANCj4+ICstIHY4cl9lbDFfbXNhDQo+PiAr
DQo+PiArICAgIEEgc3RyaW5nIHByb3BlcnR5IHNwZWNpZnlpbmcgd2hldGhlciwgb24gQXJtdjgt
UiBzeXN0ZW1zLCBhIGRvbWFpbg0KPj4gKyAgICBzaG91bGQgdXNlIFBNU0F2OCAoTVBVKSBhdCBF
TDEgb3IgVk1TQXY4IChNTVUpIGF0IEVMMS4NCj4gSW5zdGVhZCBvZiByZXBlYXRpbmcgYXQgRUwx
IHlvdSBjb3VsZCBtb3ZlIGl0IG5leHQgdG8gIm9uIEFybXY4UiBzeXN0ZW1zIg0KDQpvaw0KDQo+
IA0KPj4gKw0KPj4gKyAgICAtICJtbXUiDQo+PiArICAgIEVuYWJsZXMgVk1TQXY4IGF0IEVMMS4g
VGhpcyByZXF1aXJlcyBoYXJkd2FyZSBzdXBwb3J0IGFuZCBpcyBvbmx5DQo+PiArICAgIG9wdGlv
bmFsbHkgYXZhaWxhYmxlIG9uIEFBcmNoNjQuDQo+IE1heWJlIGl0J3MgZHVlIHRvIHRoZSBjb21i
aW5hdGlvbiBvZiB3b3JkcyBidXQgaXQgZG9lcyBub3QgaW1tZWRpYXRlbHkgdGVsbCB0aGF0DQo+
IGl0J3Mgbm90IHByZXNlbnQgb24gQUFyY2gzMi4gSSB3b3VsZCBhZGQ6ICJOb3Qgc3VwcG9ydGVk
IG9uIEFBcmNoMzIiLg0KDQpPaw0KDQo+IA0KPj4gKw0KPj4gKyAgICAtICJtcHUiDQo+PiArICAg
IEVuYWJsZXMgUE1TQXY4IGF0IEVMMS4gVGhpcyBpcyB0aGUgZGVmYXVsdCBiZWhhdmlvdXIgd2hl
biB0aGUgcHJvcGVydHkgaXMNCj4+ICsgICAgbm90IHBhc3NlZC4gVGhpcyBjb25maWd1cmF0aW9u
IHJlcXVpcmVzIHN0YXRpYyBhbGxvY2F0aW9uICh4ZW4sc3RhdGljLW1lbSkNCj4+ICsgICAgYW5k
IGRpcmVjdCBtYXBwaW5nIChkaXJlY3QtbWFwKS4NCj4+ICsNCj4+IFVuZGVyIHRoZSAieGVuLGRv
bWFpbiIgY29tcGF0aWJsZSBub2RlLCBvbmUgb3IgbW9yZSBzdWItbm9kZXMgYXJlIHByZXNlbnQN
Cj4+IGZvciB0aGUgRG9tVSBrZXJuZWwgYW5kIHJhbWRpc2suDQo+PiANCj4+IGRpZmYgLS1naXQg
YS94ZW4vYXJjaC9hcm0vZG9tMGxlc3MtYnVpbGQuYyBiL3hlbi9hcmNoL2FybS9kb20wbGVzcy1i
dWlsZC5jDQo+PiBpbmRleCA0MTgxYzEwNTM4OWEuLjZmMDI1NmY5ZDgyNSAxMDA2NDQNCj4+IC0t
LSBhL3hlbi9hcmNoL2FybS9kb20wbGVzcy1idWlsZC5jDQo+PiArKysgYi94ZW4vYXJjaC9hcm0v
ZG9tMGxlc3MtYnVpbGQuYw0KPj4gQEAgLTI0LDYgKzI0LDcgQEANCj4+ICNpbmNsdWRlIDxhc20v
ZG9tYWluX2J1aWxkLmg+DQo+PiAjaW5jbHVkZSA8YXNtL2Zpcm13YXJlL3NjaS5oPg0KPj4gI2lu
Y2x1ZGUgPGFzbS9ncmFudF90YWJsZS5oPg0KPj4gKyNpbmNsdWRlIDxhc20vbXB1Lmg+DQo+PiAj
aW5jbHVkZSA8YXNtL3NldHVwLmg+DQo+PiANCj4+ICNpZmRlZiBDT05GSUdfVkdJQ1YyDQo+PiBA
QCAtMzIyLDYgKzMyMyw4IEBAIGludCBfX2luaXQgYXJjaF9wYXJzZV9kb20wbGVzc19ub2RlKHN0
cnVjdCBkdF9kZXZpY2Vfbm9kZSAqbm9kZSwNCj4+ICAgICBpZiAoIGRvbXVfZHRfc2NpX3BhcnNl
KG5vZGUsIGRfY2ZnKSApDQo+PiAgICAgICAgIHBhbmljKCJFcnJvciBnZXR0aW5nIFNDSSBjb25m
aWd1cmF0aW9uXG4iKTsNCj4+IA0KPj4gKyAgICBhcmNoX2R0X3Y4cl9lbDFfbXNhX3BhcnNlKG5v
ZGUsIGRfY2ZnKTsNCj4gImFyY2giIHByZWZpeCBzaG91bGQgYmUgdXNlZCBieSBmdW5jdGlvbnMg
Y2FsbGVkIGZyb20gdGhlIGNvbW1vbiBjb2RlIHRoYXQgaGF2ZQ0KPiBhcmNoLXNwZWNpZmljIGlt
cGxlbWVudGF0aW9uLiBUaGlzIGlzIG5vdCB0aGUgY2FzZSBmb3IgZnVuY3Rpb25zIHlvdSdyZQ0K
PiBpbnRyb2R1Y2luZyBoZXJlLCBzbyBwbGVhc2UgZHJvcCB0aGlzIHByZWZpeC4NCj4gDQo+IEFs
c28sIEkgd291bGQgY29udGludWUgdXNpbmcgdGhlIFNDSSBhcHByb2FjaCBlLmcuIGNhbGwgaXQg
ZG9tdV9kdF9tc2FfcGFyc2UoKQ0KPiBhbmQgZGVjaWRlIHRvIHBhbmljIGF0IHRoZSBjYWxsIHNp
dGUgcmF0aGVyIHRoYW4gbWFraW5nIHRoaXMgZGVjaXNpb24gaW4gdGhlDQo+IGZ1bmN0aW9uIGl0
c2VsZi4NCg0Kc291bmRzIGdvb2QNCg0KPiANCj4+ICsNCj4+ICAgICBpZiAoICFkdF9wcm9wZXJ0
eV9yZWFkX3UzMihub2RlLCAibnJfc3BpcyIsICZkX2NmZy0+YXJjaC5ucl9zcGlzKSApDQo+PiAg
ICAgew0KPj4gICAgICAgICBpbnQgdnBsMDExX3ZpcnEgPSBHVUVTVF9WUEwwMTFfU1BJOw0KPj4g
ZGlmZiAtLWdpdCBhL3hlbi9hcmNoL2FybS9kb21haW4uYyBiL3hlbi9hcmNoL2FybS9kb21haW4u
Yw0KPj4gaW5kZXggMjYzODBhODA3Y2FkLi5kZmE3YWNlMTE0MWIgMTAwNjQ0DQo+PiAtLS0gYS94
ZW4vYXJjaC9hcm0vZG9tYWluLmMNCj4+ICsrKyBiL3hlbi9hcmNoL2FybS9kb21haW4uYw0KPj4g
QEAgLTE4LDYgKzE4LDcgQEANCj4+ICNpbmNsdWRlIDxhc20vY3B1ZXJyYXRhLmg+DQo+PiAjaW5j
bHVkZSA8YXNtL2NwdWZlYXR1cmUuaD4NCj4+ICNpbmNsdWRlIDxhc20vY3VycmVudC5oPg0KPj4g
KyNpbmNsdWRlIDxhc20vZG9tYWluX2J1aWxkLmg+DQo+PiAjaW5jbHVkZSA8YXNtL2V2ZW50Lmg+
DQo+PiAjaW5jbHVkZSA8YXNtL2dpYy5oPg0KPj4gI2luY2x1ZGUgPGFzbS9ndWVzdF9hdG9taWNz
Lmg+DQo+PiBAQCAtNzI1LDYgKzcyNiw5IEBAIGludCBhcmNoX2RvbWFpbl9jcmVhdGUoc3RydWN0
IGRvbWFpbiAqZCwNCj4+ICAgICBpZiAoIChyYyA9IHNjaV9kb21haW5faW5pdChkLCBjb25maWcp
KSAhPSAwICkNCj4+ICAgICAgICAgZ290byBmYWlsOw0KPj4gDQo+PiArICAgIGlmICggKHJjID0g
YXJjaF9zZXRfdjhyX2VsMV9tc2EoZCwgY29uZmlnLCBmbGFncykpICE9IDAgKQ0KPj4gKyAgICAg
ICAgZ290byBmYWlsOw0KPj4gKw0KPj4gICAgIHJldHVybiAwOw0KPj4gDQo+PiBmYWlsOg0KPj4g
ZGlmZiAtLWdpdCBhL3hlbi9hcmNoL2FybS9pbmNsdWRlL2FzbS9kb21haW4uaCBiL3hlbi9hcmNo
L2FybS9pbmNsdWRlL2FzbS9kb21haW4uaA0KPj4gaW5kZXggZmZlNWQwZDlmMGE2Li40YTNmYjgy
NTk2MmIgMTAwNjQ0DQo+PiAtLS0gYS94ZW4vYXJjaC9hcm0vaW5jbHVkZS9hc20vZG9tYWluLmgN
Cj4+ICsrKyBiL3hlbi9hcmNoL2FybS9pbmNsdWRlL2FzbS9kb21haW4uaA0KPj4gQEAgLTEyOCw2
ICsxMjgsMTAgQEAgc3RydWN0IGFyY2hfZG9tYWluDQo+PiAjZW5kaWYNCj4+IA0KPj4gICAgIHN0
cnVjdCByZXN1bWVfaW5mbyByZXN1bWVfY3R4Ow0KPj4gKw0KPj4gKyNpZmRlZiBDT05GSUdfTVBV
DQo+PiArICAgIHVpbnQ4X3QgdjhyX2VsMV9tc2E7DQo+PiArI2VuZGlmDQo+PiB9ICBfX2NhY2hl
bGluZV9hbGlnbmVkOw0KPj4gDQo+PiBzdHJ1Y3QgYXJjaF92Y3B1DQo+PiBkaWZmIC0tZ2l0IGEv
eGVuL2FyY2gvYXJtL2luY2x1ZGUvYXNtL2RvbWFpbl9idWlsZC5oIGIveGVuL2FyY2gvYXJtL2lu
Y2x1ZGUvYXNtL2RvbWFpbl9idWlsZC5oDQo+PiBpbmRleCA2Njc0ZGFjNWUyZjguLjkyMWQ2Zjk4
ZjRmNCAxMDA2NDQNCj4+IC0tLSBhL3hlbi9hcmNoL2FybS9pbmNsdWRlL2FzbS9kb21haW5fYnVp
bGQuaA0KPj4gKysrIGIveGVuL2FyY2gvYXJtL2luY2x1ZGUvYXNtL2RvbWFpbl9idWlsZC5oDQo+
PiBAQCAtNCw2ICs0LDE0IEBADQo+PiAjaW5jbHVkZSA8eGVuL2ZkdC1rZXJuZWwuaD4NCj4+ICNp
bmNsdWRlIDx4ZW4vc2NoZWQuaD4NCj4+IA0KPj4gKyNpZiBkZWZpbmVkKENPTkZJR19NTVUpDQo+
PiArI2luY2x1ZGUgPGFzbS9tbXUvZG9tYWluLWJ1aWxkLmg+DQo+PiArI2VsaWYgZGVmaW5lZChD
T05GSUdfTVBVKQ0KPj4gKyNpbmNsdWRlIDxhc20vbXB1L2RvbWFpbi1idWlsZC5oPg0KPj4gKyNl
bHNlDQo+PiArIyBlcnJvciAiVW5rbm93biBtZW1vcnkgbWFuYWdlbWVudCBsYXlvdXQiDQo+IEkg
ZG9uJ3QgdGhpbmsgdGhhdCB0aGlzIGVycm9yIG1zZyBpcyBjb3JyZWN0IGZvciBkb21haW4gYnVp
bGQuDQoNCmFyZSB5b3Ugc3VnZ2VzdGluZyBkcm9wcGluZyB0aGUgZXJyb3Igb3IgbW9kaWZ5aW5n
IHRoZSBtZXNzYWdlPyANCg0KPj4gDQo+PiBkaWZmIC0tZ2l0IGEveGVuL2FyY2gvYXJtL2luY2x1
ZGUvYXNtL21wdS5oIGIveGVuL2FyY2gvYXJtL2luY2x1ZGUvYXNtL21wdS5oDQo+PiBpbmRleCA3
MmZhNWIwMGI4NjEuLjhhOGMwMTA4NjIwNiAxMDA2NDQNCj4+IC0tLSBhL3hlbi9hcmNoL2FybS9p
bmNsdWRlL2FzbS9tcHUuaA0KPj4gKysrIGIveGVuL2FyY2gvYXJtL2luY2x1ZGUvYXNtL21wdS5o
DQo+PiBAQCAtMjcsNiArMjcsMTEgQEANCj4+IA0KPj4gI2lmbmRlZiBfX0FTU0VNQkxFUl9fDQo+
PiANCj4+ICsvKg0KPj4gKyAqIFV0aWxpdHkgZnVuY3Rpb24gdG8gZGV0ZXJtaW5lIGlmIGFuIEFy
bXY4LVIgcHJvY2Vzc29yIHN1cHBvcnRzIFZNU0EuDQo+PiArICovDQo+IE5JVDogTm8gbmVlZCBm
b3IgbXVsdGktbGluZSBjb21tZW50IGZvciBhIHNpbmdsZSBzZW50ZW5jZSB0aGF0IGNhbiBmaXQg
aW4gb25lIGxpbmUuDQoNCm9rDQoNCj4gDQo+PiArYm9vbCBoYXNfdjhyX3Ztc2Ffc3VwcG9ydCh2
b2lkKTsNCj4+ICsNCj4+IC8qDQo+PiAgKiBTZXQgYmFzZSBhZGRyZXNzIG9mIE1QVSBwcm90ZWN0
aW9uIHJlZ2lvbi4NCj4+ICAqDQo+PiBkaWZmIC0tZ2l0IGEveGVuL2FyY2gvYXJtL2luY2x1ZGUv
YXNtL21wdS9kb21haW4tYnVpbGQuaCBiL3hlbi9hcmNoL2FybS9pbmNsdWRlL2FzbS9tcHUvZG9t
YWluLWJ1aWxkLmgNCj4+IG5ldyBmaWxlIG1vZGUgMTAwNjQ0DQo+PiBpbmRleCAwMDAwMDAwMDAw
MDAuLjQ2M2NkODViNWI3ZQ0KPj4gLS0tIC9kZXYvbnVsbA0KPj4gKysrIGIveGVuL2FyY2gvYXJt
L2luY2x1ZGUvYXNtL21wdS9kb21haW4tYnVpbGQuaA0KPj4gQEAgLTAsMCArMSwyNyBAQA0KPj4g
Ky8qIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wLW9ubHkgKi8NCj4+ICsNCj4+ICsj
aWZuZGVmIF9fQVJNX01QVV9ET01BSU5fQlVJTERfSF9fDQo+PiArI2RlZmluZSBfX0FSTV9NUFVf
RE9NQUlOX0JVSUxEX0hfXw0KPj4gKw0KPj4gKyNpbmNsdWRlIDx4ZW4vZGV2aWNlX3RyZWUuaD4N
Cj4+ICsjaW5jbHVkZSA8eGVuL3NjaGVkLmg+DQo+PiArI2luY2x1ZGUgPHhlbi90eXBlcy5oPg0K
Pj4gKyNpbmNsdWRlIDxwdWJsaWMvZG9tY3RsLmg+DQo+PiArDQo+PiArdm9pZCBhcmNoX2R0X3Y4
cl9lbDFfbXNhX3BhcnNlKHN0cnVjdCBkdF9kZXZpY2Vfbm9kZSAqbm9kZSwNCj4+ICsgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgc3RydWN0IHhlbl9kb21jdGxfY3JlYXRlZG9tYWluICpk
X2NmZyk7DQo+PiArDQo+PiAraW50IGFyY2hfc2V0X3Y4cl9lbDFfbXNhKHN0cnVjdCBkb21haW4g
KmQsDQo+PiArICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHN0cnVjdCB4ZW5fZG9tY3Rs
X2NyZWF0ZWRvbWFpbiAqY29uZmlnLA0KPj4gKyAgICAgICAgICAgICAgICAgICAgICAgICB1bnNp
Z25lZCBpbnQgZmxhZ3MpOw0KPj4gKw0KPj4gKyNlbmRpZiAvKiBfX0FSTV9NUFVfRE9NQUlOX0JV
SUxEX0hfXyAqLw0KPj4gKw0KPj4gKy8qDQo+PiArICogTG9jYWwgdmFyaWFibGVzOg0KPj4gKyAq
IG1vZGU6IEMNCj4+ICsgKiBjLWZpbGUtc3R5bGU6ICJCU0QiDQo+PiArICogYy1iYXNpYy1vZmZz
ZXQ6IDQNCj4+ICsgKiBpbmRlbnQtdGFicy1tb2RlOiBuaWwNCj4+ICsgKiBFbmQ6DQo+PiArICov
DQo+PiBkaWZmIC0tZ2l0IGEveGVuL2FyY2gvYXJtL21wdS9NYWtlZmlsZSBiL3hlbi9hcmNoL2Fy
bS9tcHUvTWFrZWZpbGUNCj4+IGluZGV4IDMzMjdmYWRkNWQwZS4uZTM5OTdlNDFiODFiIDEwMDY0
NA0KPj4gLS0tIGEveGVuL2FyY2gvYXJtL21wdS9NYWtlZmlsZQ0KPj4gKysrIGIveGVuL2FyY2gv
YXJtL21wdS9NYWtlZmlsZQ0KPj4gQEAgLTEsNSArMSw2IEBADQo+PiBvYmotJChDT05GSUdfQVJN
XzMyKSArPSBhcm0zMi8NCj4+IG9iai0kKENPTkZJR19BUk1fNjQpICs9IGFybTY0Lw0KPj4gK29i
ai15ICs9IGRvbWFpbi1idWlsZC5vDQo+PiBvYmoteSArPSBkb21haW4tcGFnZS5vDQo+PiBvYmot
eSArPSBtbS5vDQo+PiBvYmoteSArPSBwMm0ubw0KPj4gZGlmZiAtLWdpdCBhL3hlbi9hcmNoL2Fy
bS9tcHUvYXJtMzIvbW0uYyBiL3hlbi9hcmNoL2FybS9tcHUvYXJtMzIvbW0uYw0KPj4gaW5kZXgg
YTQ2NzNjMzUxMTQxLi41ZWFlYjM0MDBlNmMgMTAwNjQ0DQo+PiAtLS0gYS94ZW4vYXJjaC9hcm0v
bXB1L2FybTMyL21tLmMNCj4+ICsrKyBiL3hlbi9hcmNoL2FybS9tcHUvYXJtMzIvbW0uYw0KPj4g
QEAgLTM4LDYgKzM4LDExIEBADQo+PiAgICAgICAgIGJyZWFrOyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgXA0KPj4gICAgIH0NCj4+IA0KPj4gK2Jvb2wgaGFzX3Y4
cl92bXNhX3N1cHBvcnQodm9pZCkNCj4+ICt7DQo+PiArICAgIHJldHVybiBmYWxzZTsNCj4+ICt9
DQo+PiArDQo+PiAvKg0KPj4gICogQXJtdjgtUiBzdXBwb3J0cyBkaXJlY3QgYWNjZXNzIGFuZCBp
bmRpcmVjdCBhY2Nlc3MgdG8gdGhlIE1QVSByZWdpb25zIHRocm91Z2gNCj4+ICAqIHJlZ2lzdGVy
czoNCj4+IGRpZmYgLS1naXQgYS94ZW4vYXJjaC9hcm0vbXB1L2FybTY0L21tLmMgYi94ZW4vYXJj
aC9hcm0vbXB1L2FybTY0L21tLmMNCj4+IGluZGV4IGVkNjQzY2FkNDA3My4uYjA3ZTcyOWE3ZDA1
IDEwMDY0NA0KPj4gLS0tIGEveGVuL2FyY2gvYXJtL21wdS9hcm02NC9tbS5jDQo+PiArKysgYi94
ZW4vYXJjaC9hcm0vbXB1L2FybTY0L21tLmMNCj4+IEBAIC0zMiw2ICszMiwxMSBAQA0KPj4gICAg
ICAgICBicmVhazsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIFwNCj4+ICAgICB9DQo+PiANCj4+ICtib29sIGhhc192OHJfdm1zYV9zdXBwb3J0KHZvaWQp
DQo+PiArew0KPj4gKyAgICByZXR1cm4gc3lzdGVtX2NwdWluZm8ubW02NC5tc2FfZnJhYyA9PSBN
TTY0X01TQV9GUkFDX1ZNU0FfU1VQUE9SVDsNCj4+ICt9DQo+PiArDQo+PiAvKg0KPj4gICogQXJt
djgtUiBzdXBwb3J0cyBkaXJlY3QgYWNjZXNzIGFuZCBpbmRpcmVjdCBhY2Nlc3MgdG8gdGhlIE1Q
VSByZWdpb25zIHRocm91Z2gNCj4+ICAqIHJlZ2lzdGVyczoNCj4+IGRpZmYgLS1naXQgYS94ZW4v
YXJjaC9hcm0vbXB1L2RvbWFpbi1idWlsZC5jIGIveGVuL2FyY2gvYXJtL21wdS9kb21haW4tYnVp
bGQuYw0KPj4gbmV3IGZpbGUgbW9kZSAxMDA2NDQNCj4+IGluZGV4IDAwMDAwMDAwMDAwMC4uMWJk
ZDBmZmVkZWJiDQo+PiAtLS0gL2Rldi9udWxsDQo+PiArKysgYi94ZW4vYXJjaC9hcm0vbXB1L2Rv
bWFpbi1idWlsZC5jDQo+PiBAQCAtMCwwICsxLDc2IEBADQo+PiArLyogU1BEWC1MaWNlbnNlLUlk
ZW50aWZpZXI6IEdQTC0yLjAtb25seSAqLw0KPj4gKw0KPj4gKyNpbmNsdWRlIDx4ZW4vZGV2aWNl
X3RyZWUuaD4NCj4+ICsjaW5jbHVkZSA8eGVuL2RvbWFpbi5oPg0KPj4gKyNpbmNsdWRlIDx4ZW4v
ZXJybm8uaD4NCj4+ICsjaW5jbHVkZSA8eGVuL2luaXQuaD4NCj4+ICsjaW5jbHVkZSA8eGVuL3R5
cGVzLmg+DQo+PiArI2luY2x1ZGUgPHhlbi9zY2hlZC5oPg0KPj4gKyNpbmNsdWRlIDxhc20vbXB1
Lmg+DQo+PiArI2luY2x1ZGUgPGFzbS9tcHUvZG9tYWluLWJ1aWxkLmg+DQo+PiArI2luY2x1ZGUg
PHB1YmxpYy9hcmNoLWFybS5oPg0KPj4gKyNpbmNsdWRlIDxwdWJsaWMvZG9tY3RsLmg+DQo+PiAr
DQo+PiArdm9pZCBfX2luaXQgYXJjaF9kdF92OHJfZWwxX21zYV9wYXJzZShzdHJ1Y3QgZHRfZGV2
aWNlX25vZGUgKm5vZGUsDQo+PiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBzdHJ1Y3QgeGVuX2RvbWN0bF9jcmVhdGVkb21haW4gKmRfY2ZnKQ0KPj4gK3sNCj4+ICsgICAg
Y29uc3QgY2hhciAqdjhyX2VsMV9tc2E7DQo+PiArDQo+PiArICAgIGRfY2ZnLT5hcmNoLnY4cl9l
bDFfbXNhID0gWEVOX0RPTUNUTF9DT05GSUdfQVJNX1Y4Ul9FTDFfTVNBX05PTkU7DQo+PiArDQo+
PiArICAgIGlmICggIWR0X3Byb3BlcnR5X3JlYWRfc3RyaW5nKG5vZGUsICJ2OHJfZWwxX21zYSIs
ICZ2OHJfZWwxX21zYSkgKQ0KPj4gKyAgICB7DQo+PiArICAgICAgICBpZiAoICFzdHJjbXAodjhy
X2VsMV9tc2EsICJtbXUiKSApDQo+PiArICAgICAgICAgICAgZF9jZmctPmFyY2gudjhyX2VsMV9t
c2EgPSBYRU5fRE9NQ1RMX0NPTkZJR19BUk1fVjhSX0VMMV9NU0FfVk1TQTsNCj4+ICsgICAgICAg
IGVsc2UgaWYgKCAhc3RyY21wKHY4cl9lbDFfbXNhLCAibXB1IikgKQ0KPj4gKyAgICAgICAgICAg
IGRfY2ZnLT5hcmNoLnY4cl9lbDFfbXNhID0gWEVOX0RPTUNUTF9DT05GSUdfQVJNX1Y4Ul9FTDFf
TVNBX1BNU0E7DQo+PiArICAgICAgICBlbHNlDQo+PiArICAgICAgICAgICAgcGFuaWMoIkludmFs
aWQgZGV2aWNlIHRyZWUgb3B0aW9uIGZvciB2OHJfZWwxX21zYVxuIik7DQo+PiArICAgIH0NCj4+
ICt9DQo+PiArDQo+PiAraW50IGFyY2hfc2V0X3Y4cl9lbDFfbXNhKHN0cnVjdCBkb21haW4gKmQs
DQo+PiArICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHN0cnVjdCB4ZW5fZG9tY3RsX2Ny
ZWF0ZWRvbWFpbiAqY29uZmlnLA0KPj4gKyAgICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25l
ZCBpbnQgZmxhZ3MpDQo+PiArew0KPj4gKyAgICBzd2l0Y2ggKCBjb25maWctPmFyY2gudjhyX2Vs
MV9tc2EgKQ0KPj4gKyAgICB7DQo+PiArICAgIGNhc2UgWEVOX0RPTUNUTF9DT05GSUdfQVJNX1Y4
Ul9FTDFfTVNBX05PTkU6DQo+PiArICAgICAgICBmYWxsdGhyb3VnaDsNCj4+ICsgICAgY2FzZSBY
RU5fRE9NQ1RMX0NPTkZJR19BUk1fVjhSX0VMMV9NU0FfUE1TQToNCj4+ICsgICAgICAgIGlmICgg
IShmbGFncyAmIENERl9zdGF0aWNtZW0pIHx8ICEoZmxhZ3MgJiBDREZfZGlyZWN0bWFwKSApDQo+
PiArICAgICAgICB7DQo+PiArICAgICAgICAgICAgZHByaW50ayhYRU5MT0dfSU5GTywNCj4+ICsg
ICAgICAgICAgICAgICAgICAgICJQTVNBIGlzIG5vdCB2YWxpZCBmb3IgZG9tYWluIHdpdGhvdXQg
c3RhdGljIGFsbG9jYXRpb24gYW5kIGRpcmVjdCBtYXAgKHY4cl9lbDFfbXNhKVxuIik7DQo+PiAr
ICAgICAgICAgICAgcmV0dXJuIC1FSU5WQUw7DQo+PiArICAgICAgICB9DQo+PiArICAgICAgICBi
cmVhazsNCj4+ICsNCj4+ICsgICAgY2FzZSBYRU5fRE9NQ1RMX0NPTkZJR19BUk1fVjhSX0VMMV9N
U0FfVk1TQToNCj4+ICsgICAgICAgIGlmICggIWhhc192OHJfdm1zYV9zdXBwb3J0KCkgKQ0KPj4g
KyAgICAgICAgew0KPj4gKyAgICAgICAgICAgIGRwcmludGsoWEVOTE9HX0lORk8sDQo+PiArICAg
ICAgICAgICAgICAgICAgICAiUGxhdGZvcm0gZG9lcyBub3Qgc3VwcG9ydCBWTVNBIGF0IEVMMSAo
djhyX2VsMV9tc2EpXG4iKTsNCj4+ICsgICAgICAgICAgICByZXR1cm4gLUVJTlZBTDsNCj4+ICsg
ICAgICAgIH0NCj4+ICsgICAgICAgIGJyZWFrOw0KPj4gKw0KPj4gKyAgICBkZWZhdWx0Og0KPj4g
KyAgICAgICAgZHByaW50ayhYRU5MT0dfSU5GTywgIlVuc3VwcG9ydGVkIGFyY2gudjhyX2VsMV9t
c2EgdmFsdWUgKCV1KVxuIiwNCj4+ICsgICAgICAgICAgICAgICAgY29uZmlnLT5hcmNoLnY4cl9l
bDFfbXNhKTsNCj4+ICsgICAgICAgIHJldHVybiAtRUlOVkFMOw0KPj4gKyAgICB9DQo+IFdoeSBk
byB3ZSBldmVuIG5lZWQgdGhpcyBzcGxpdC4gSXQgc2VlbXMgbGlrZSBhbGwgdGhlIGFib3ZlIGNo
ZWNrcyBjb3VsZCBiZSBkb25lDQo+IGluIGFyY2hfZHRfdjhyX2VsMV9tc2FfcGFyc2UgZ2l2ZW4g
dGhhdCBpdCBpcyBjYWxsZWQgYWZ0ZXIgc3RhdGljLW1lbSxkaXJlY3QtbWFwDQo+IGFyZSBzZXQu
IFRoaXMgd291bGQgc2ltcGxpZnkgdGhpcyBmaWxlIGFuZCB3ZSB3b3VsZCBub3QgZXZlbiBuZWVk
IHRvIGludHJvZHVjZQ0KPiBuZXcgZG9tYWluLWJ1aWxkIHNwbGl0IGZvciBvbmUgZnVuY3Rpb24u
DQoNClBsZWFzZSBjb3JyZWN0IG1lIGlmIEnigJltIHdyb25nLCBpZiBJIG1vdmUgdGhlIGNoZWNr
cyBpbiBhcmNoX2R0X3Y4cl9lbDFfbXNhX3BhcnNlKCkgdGhleSB3aWxsDQpiZSBoYW5kbGVkIG9u
bHkgb24gZG9tMGxlc3MgZG9tYWluIGNyZWF0aW9uIG9ubHkuDQpJZiBJIGhhdmUgaXQgaW4gdGhl
IGN1cnJlbnQgd2F5IGl0IHdpbGwgYmUgaGFuZGxlZCBieSBkb20wbGVzcyBhbmQgWEwgdG9vbHN0
YWNrIGNyZWF0aW9uLg0KSSB1bmRlcnN0YW5kIHRoYXQgZm9yIG5vdyB0aGUgdG9vbHN0YWNrIHBh
dGggaXMgbm90IGltcGxlbWVudGVkLCBidXQgaXQgZmVsdCBiZXR0ZXIgdG8gZG8gdGhpcyBub3cN
CnJhdGhlciB0aGFuIGNoYW5nZSBpdCBsYXRlci4NCg0KTGV0IG1lIGtub3cgd2hhdCB5b3UgdGhp
bmsuDQoNCj4gDQo+PiArDQo+PiArICAgIGQtPmFyY2gudjhyX2VsMV9tc2EgPSBjb25maWctPmFy
Y2gudjhyX2VsMV9tc2E7DQo+PiArDQo+PiArICAgIHJldHVybiAwOw0KPj4gK30NCj4+ICsNCj4+
ICsvKg0KPj4gKyAqIExvY2FsIHZhcmlhYmxlczoNCj4+ICsgKiBtb2RlOiBDDQo+PiArICogYy1m
aWxlLXN0eWxlOiAiQlNEIg0KPj4gKyAqIGMtYmFzaWMtb2Zmc2V0OiA0DQo+PiArICogaW5kZW50
LXRhYnMtbW9kZTogbmlsDQo+PiArICogRW5kOg0KPj4gKyAqLw0KPj4gZGlmZiAtLWdpdCBhL3hl
bi9pbmNsdWRlL3B1YmxpYy9hcmNoLWFybS5oIGIveGVuL2luY2x1ZGUvcHVibGljL2FyY2gtYXJt
LmgNCj4+IGluZGV4IGNkNTYzY2Y3MDY4NC4uN2Q2Zjg3ZThiMmIxIDEwMDY0NA0KPj4gLS0tIGEv
eGVuL2luY2x1ZGUvcHVibGljL2FyY2gtYXJtLmgNCj4+ICsrKyBiL3hlbi9pbmNsdWRlL3B1Ymxp
Yy9hcmNoLWFybS5oDQo+PiBAQCAtMzMwLDYgKzMzMCwxMCBAQCBERUZJTkVfWEVOX0dVRVNUX0hB
TkRMRSh2Y3B1X2d1ZXN0X2NvbnRleHRfdCk7DQo+PiAjZGVmaW5lIFhFTl9ET01DVExfQ09ORklH
X0FSTV9TQ0lfTk9ORSAgICAgIDANCj4+ICNkZWZpbmUgWEVOX0RPTUNUTF9DT05GSUdfQVJNX1ND
SV9TQ01JX1NNQyAgMQ0KPj4gDQo+PiArI2RlZmluZSBYRU5fRE9NQ1RMX0NPTkZJR19BUk1fVjhS
X0VMMV9NU0FfTk9ORSAgICAwDQo+PiArI2RlZmluZSBYRU5fRE9NQ1RMX0NPTkZJR19BUk1fVjhS
X0VMMV9NU0FfUE1TQSAgICAxDQo+PiArI2RlZmluZSBYRU5fRE9NQ1RMX0NPTkZJR19BUk1fVjhS
X0VMMV9NU0FfVk1TQSAgICAyDQo+PiArDQo+PiBzdHJ1Y3QgeGVuX2FyY2hfZG9tYWluY29uZmln
IHsNCj4+ICAgICAvKiBJTi9PVVQgKi8NCj4+ICAgICB1aW50OF90IGdpY192ZXJzaW9uOw0KPj4g
QEAgLTM1NSw2ICszNTksOSBAQCBzdHJ1Y3QgeGVuX2FyY2hfZG9tYWluY29uZmlnIHsNCj4+ICAg
ICB1aW50MzJfdCBjbG9ja19mcmVxdWVuY3k7DQo+PiAgICAgLyogSU4gKi8NCj4+ICAgICB1aW50
OF90IGFybV9zY2lfdHlwZTsNCj4+ICsgICAgLyogSU4gKi8NCj4+ICsgICAgdWludDhfdCB2OHJf
ZWwxX21zYTsNCj4+ICsgICAgdWludDE2X3QgcGFkOw0KPiBCZWZvcmUgdGhpcyBjaGFuZ2UgdGhl
cmUgd2VyZSAzQiBvZiBpbXBsaWNpdCBwYWRkaW5nLiBOb3cgeW91IGFkZGVkIDFCIG9mIGRhdGEN
Cj4gYW5kIDJCIG9mIGV4cGxpY2l0IHBhZGRpbmcuIFRoZSBzdHJ1Y3Qgc2l6ZSBpcyB0aGUgc2Ft
ZSwgc28gd2h5IGJ1bXBpbmcgdGhlDQo+IGludGVyZmFjZSB2ZXJzaW9uPyBJIGRvbid0IHNlZSBp
dCBuZWNlc3NhcnkgaGVyZS4gQWxzbywgd2h5IGV4cGxpY2l0IHBhZGRpbmc/DQo+IFdpdGggZXhw
bGljaXQgcGFkZGluZyBJIGRvIHRoaW5rIHlvdSBuZWVkIHRvIG5vdyBjaGVjayB0aGF0IGl0J3Mg
MC4NCg0KSeKAmXZlIGJ1bXBlZCBiZWNhdXNlIGlmIGFuIG9sZGVyIHRvb2xzdGFjayBpcyBwYXNz
aW5nIHNvbWV0aGluZyB0aGF0IGlzIG5vdCB6ZXJvDQppbiB0aGUgdjhyX2VsMV9tc2Egd2Ugd291
bGQgcmV0dXJuIGFuIGVycm9yIGFuZCBzdG9wIHRoZSBkb21haW4gY3JlYXRpb24gYnkgdGhlDQph
Ym92ZToNCg0KLS0tDQo+PiBzdGF0aWMgaW5saW5lDQo+PiAraW50IGFyY2hfc2V0X3Y4cl9lbDFf
bXNhKHN0cnVjdCBkb21haW4gKmQsDQo+PiArICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0
IHN0cnVjdCB4ZW5fZG9tY3RsX2NyZWF0ZWRvbWFpbiAqY29uZmlnLA0KPj4gKyAgICAgICAgICAg
ICAgICAgICAgICAgICB1bnNpZ25lZCBpbnQgZmxhZ3MpDQo+PiArew0KPj4gKyAgICBpZiAoIGNv
bmZpZy0+YXJjaC52OHJfZWwxX21zYSApDQo+PiArICAgIHsNCj4+ICsgICAgICAgIGRwcmludGso
WEVOTE9HX0lORk8sDQo+PiArICAgICAgICAgICAgICAgICJhcmNoLnY4cl9lbDFfbXNhIHNldCwg
YnV0IENPTkZJR19NUFUgbm90IHNlbGVjdGVkXG4iKTsNCj4+ICsgICAgICAgIHJldHVybiAtRUlO
VkFMOw0KPj4gKyAgICB9DQo+PiArDQo+PiArICAgIHJldHVybiAwOw0KPj4gK30NCi0tLQ0KDQpT
byBJIHRob3VnaHQgdGhpcyB3YXMgYSBicmVha2luZyBjaGFuZ2Ugb24gaXTigJlzIG93biwgcmVn
YXJsZXNzIG9mIGNoZWNraW5nIHRoYXQgdGhlDQpwYWRkaW5nIGlzIHplcm8uDQoNCkxldCBtZSBr
bm93IHdoYXQgeW91IHRoaW5rLCBJIHdvdWxkIGRyb3AgdGhlIGV4cGxpY2l0IHBhZGRpbmcgYW5k
IHZlcnNpb24gYnVtcCBpZg0KeW91IHNheSB0aGF0IGFkZGluZyB2OHJfZWwxX21zYSBpcyBub3Qg
YnJlYWtpbmcgdGhlIGludGVyZmFjZS4NCg0KPiANCj4+IH07DQo+PiAjZW5kaWYgLyogX19YRU5f
XyB8fCBfX1hFTl9UT09MU19fICovDQo+PiANCj4+IGRpZmYgLS1naXQgYS94ZW4vaW5jbHVkZS9w
dWJsaWMvZG9tY3RsLmggYi94ZW4vaW5jbHVkZS9wdWJsaWMvZG9tY3RsLmgNCj4+IGluZGV4IDhm
NjcwOGMwYTdjZC4uMjMxMjQ1NDdmMzQ3IDEwMDY0NA0KPj4gLS0tIGEveGVuL2luY2x1ZGUvcHVi
bGljL2RvbWN0bC5oDQo+PiArKysgYi94ZW4vaW5jbHVkZS9wdWJsaWMvZG9tY3RsLmgNCj4+IEBA
IC0zMCw5ICszMCw5IEBADQo+PiAgKiBmaWVsZHMpIGRvbid0IHJlcXVpcmUgYSBjaGFuZ2Ugb2Yg
dGhlIHZlcnNpb24uDQo+PiAgKiBTdGFibGUgb3BzIGFyZSBOT1QgY292ZXJlZCBieSBYRU5fRE9N
Q1RMX0lOVEVSRkFDRV9WRVJTSU9OIQ0KPj4gICoNCj4+IC0gKiBMYXN0IHZlcnNpb24gYnVtcDog
WGVuIDQuMTkNCj4+ICsgKiBMYXN0IHZlcnNpb24gYnVtcDogWGVuIDQuMjINCj4+ICAqLw0KPj4g
LSNkZWZpbmUgWEVOX0RPTUNUTF9JTlRFUkZBQ0VfVkVSU0lPTiAweDAwMDAwMDE3DQo+PiArI2Rl
ZmluZSBYRU5fRE9NQ1RMX0lOVEVSRkFDRV9WRVJTSU9OIDB4MDAwMDAwMTgNCj4+IA0KPj4gLyoN
Cj4+ICAqIE5CLiB4ZW5fZG9tY3RsLmRvbWFpbiBpcyBhbiBJTi9PVVQgcGFyYW1ldGVyIGZvciB0
aGlzIG9wZXJhdGlvbi4NCj4gDQo+IH5NaWNoYWwNCj4gDQoNCkNoZWVycywNCkx1Y2ENCg0KDQoN
Cg==


From xen-devel-bounces@lists.xenproject.org Wed Apr 29 12:48:29 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 29 Apr 2026 12:48:29 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1297363.1573429 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wI4L6-0000VO-Dx; Wed, 29 Apr 2026 12:48:28 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1297363.1573429; Wed, 29 Apr 2026 12:48: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 1wI4L6-0000VH-BC; Wed, 29 Apr 2026 12:48:28 +0000
Received: by outflank-mailman (input) for mailman id 1297363;
 Wed, 29 Apr 2026 12:48:27 +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.19dd9487f12000f373@swg.vates.tech>)
 id 1wI4L4-0000V3-7u
 for xen-devel@lists.xenproject.org; Wed, 29 Apr 2026 12:48:27 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wI4L3-008hlq-Ha
 for xen-devel@lists.xenproject.org; Wed, 29 Apr 2026 14:48:25 +0200
Received: from [10.42.69.3] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1) (envelope-from
 <prod-mta-13.8631fc262581453bbf619ec5b2062170.19dd9487f12000f373@swg.vates.tech>)
 id 69f1fe16-bab6-0a2a0a5309dd-0a2a4503b75e-14
 for <xen-devel@lists.xenproject.org>; Wed, 29 Apr 2026 14:48:25 +0200
Received: from [185.255.28.34] (helo=prod-mta-13.swg-srv.net)
 by tlsNG-33051d.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.1)
 (envelope-from
 <prod-mta-13.8631fc262581453bbf619ec5b2062170.19dd9487f12000f373@swg.vates.tech>)
 id 69f1fe18-672d-0a2a45030019-b9ff1c229613-3
 for <xen-devel@lists.xenproject.org>; Wed, 29 Apr 2026 14:48:25 +0200
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
 19dd9487f12000f373.004 for <xen-devel@lists.xenproject.org>
 (version=TLSv1.3 cipher=TLS_AES_256_GCM_SHA384);
 Wed, 29 Apr 2026 12:48:20 +0000
Received: from l14.home (lfbn-lyo-1-414-55.w2-7.abo.wanadoo.fr [2.7.24.55])
 (Authenticated sender: anthony.perard)
 by mail2.vates.fr (Postfix) with ESMTPSA id 8D7108076B;
 Wed, 29 Apr 2026 14:48:15 +0200 (CEST)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@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=1YMqeE/bZBZtigC8s9LSwBudS50zC7eOueOUyPah3A4=;
 h=from:subject:date:message-id:to:cc:mime-version:content-type:feedback-id;
 b=KS4kSNS+Lnpgj2C7lHJUVCSP/p0/5iYc8zaXEpll2QT5Xf/kulW1AUsRjpn3e+xtaCfLmJh8Z
 jfU+LeplQUb2AYCuQ5+3hn9JBS7qmh+J47ZluHPqMXrScVemfRTwhQQsbChtmyuD9vDuveHARLJ
 nQGhFUnQFS2FXlBlPnfbm16qFpie/c5rPTjhwtod5/3xbjop1oFxL1Y2bTpSxQ+kS8vIKXpA+6O
 VsJNXJWVB23KzGAV9RM8IzG1832eRKn6yOzjXnMiFM426t/KUqCAq9yIlRNuGJznWmuuFMQCTPE
 L0WwH6+Tkl9J2y7+ruDtdDAmTKGmcalh3Ufdf+R5lSuw==
X-Zone-Loop: 1d80ba4d319fc8bc850ee35a16f7f38b10d1c1a6ea4b
x-campaign-type: default
x-transaction-id: 0b08aa91-fe12-410f-94d5-abf24be20091
x-swg-uid: 01-c52ddfaf-d2f2-45f3-b171-e8fe60142a53
X-Mailer: Sweego
Message-ID:
 <1777466900.8631fc262581453bbf619ec5b2062170.19dd9487f12000f373@vates.tech>
x-swg-bid: 1777466900.8631fc262581453bbf619ec5b2062170.19dd9487f12000f373
Feedback-ID: default:8631fc262581453bbf619ec5b2062170:Sweego
x-campaign-id: default
x-client-id: 8631fc262581453bbf619ec5b2062170
X-Originating-IP: [37.26.189.201]
From: Anthony PERARD <anthony.perard@vates.tech>
To: xen-devel@lists.xenproject.org
Cc: Andrew Cooper <andrew.cooper3@citrix.com>,
	Anthony PERARD <anthony.perard@vates.tech>,
	Doug Goldstein <cardoe@cardoe.com>,
	Stefano Stabellini <sstabellini@kernel.org>
Subject: [XEN PATCH] CI: use --platform on `docker build` and `push`
Date: Wed, 29 Apr 2026 14:48:01 +0200
MIME-Version: 1.0
X-BM-Disclaimer: Yes
Content-Type: multipart/alternative; boundary="-=Part.1e6.370dca10e82feae9.19dd9486d4a.9123d17733a26d6f=-"
X-Bm-Milter-Handled: 4ffbd6c1-ee69-4e1b-aabd-f977039bd3e2
X-Bm-Transport-Timestamp: 1777466895694
X-purgate-ID: tlsNG-33051d/1777466905-28F72938-4133C150/0/0
X-purgate-type: clean
X-purgate-size: 3376

---=Part.1e6.370dca10e82feae9.19dd9486d4a.9123d17733a26d6f=-
Content-Type: text/plain; charset=utf-8
Content-Transfer-Encoding: quoted-printable

Without --platform, it seems recent versions of docker ignores the
platform of the image when pushing, and it's pushed as the platform of
the runner=2E

If we happen to build an arm64 image on x86, with recent version of
docker, the image will be push as if it was an x86 image, then
`docker run --platform=3Dlinux/arm64 =2E=2E=2E` fails=2E Even if it would
work without --platform, gitlab-runner will not be able to use the
image=2E

To go back to the previous behavior, we will extract --platform from
the dockerfiles, and use it on the command line=2E

--platform=3D is needed on both docker-build and docker-push=2E The first
one so that the image is tagged with the right platform, and the
second one so that we can push a "generic" image without been tagged
to a particular platform=2E --platform on docker-push allow to easly use
the container on any arch, without having to use --platform on
docker-pull or docker-run=2E

`docker push --platform` seem to have been added to 1=2E46, according to
the [doc], and doesn't exist on Podman=2E So we need to check that we
are using `docker` and that the API version is new enough=2E

[doc] https://docs=2Edocker=2Ecom/reference/cli/docker/image/push/

Also, introduce the $img variable, to make the lines a bit shorter=2E

Signed-off-by: Anthony PERARD <anthony=2Eperard@vates=2Etech>
---
 automation/build/Makefile | 24 +++++++++++++++++++++---
 1 file changed, 21 insertions(+), 3 deletions(-)

diff --git a/automation/build/Makefile b/automation/build/Makefile
index fedf7524dacd=2E=2Ed578cd347615 100644
--- a/automation/build/Makefile
+++ b/automation/build/Makefile
@@ -15,10 +15,28 @@ help:
=20
 include yocto/yocto=2Einc
=20
+# Find out if we are running Podman, if not is likely docker=2E
+is-docker =3D $(if $(filter Podman,$(shell $(DOCKER_CMD) version)),,1)
+
+# Find out the docker API version is at least 1=2E46=2E We exploit `sort =
-V` to
+# compare the versions at it can sort by version=2E
+docker-api-version =3D $(shell $(DOCKER_CMD) version -f '{{=2EClient=2EAP=
IVersion}}')
+docker-min-version =3D $(firstword $(shell printf "1=2E46\n$(docker-api-v=
ersion)" | sort -V))
+docker-have-push-platform =3D $(if $(filter 1=2E46,$(docker-min-version))=
,1)
+
+# check if we can use `X push --platform`=2E
+# `podman push` doesn't support --platform=2E
+# `docker` only have it on recent version=2E
+builder-have-push-platform =3D $(and $(is-docker),$(docker-have-push-plat=
form))
+
 %: %=2Edockerfile ## Builds containers
-	$(DOCKER_CMD) build --pull -t $(REGISTRY)/$(@D):$(@F) -f $< $(<D)
-	@if [ ! -z $${PUSH+x} ]; then \
-		$(DOCKER_CMD) push $(REGISTRY)/$(@D):$(@F); \
+	set -xe; \
+	$(if $(builder-have-push-platform), \
+	    platform=3D$$(sed -n '/^FROM/{s/=2E*\(--platform=3D[^ ]*\) =2E*/\1/p=
;q}' $<); ) \
+	img=3D"$(REGISTRY)/$(@D):$(@F)"; \
+	$(DOCKER_CMD) build --pull $$platform -t $$img -f $< $(<D); \
+	if [ ! -z $${PUSH+x} ]; then \
+		$(DOCKER_CMD) push $$platform $$img; \
 	fi
=20
 =2EPHONY: all clean


-- 
 | Vates 

XCP-ng & Xen Orchestra - Vates solutions

web: https://vate=
s=2Etech
---=Part.1e6.370dca10e82feae9.19dd9486d4a.9123d17733a26d6f=---


From xen-devel-bounces@lists.xenproject.org Wed Apr 29 13:08:06 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 29 Apr 2026 13:08:06 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1297383.1573438 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wI4dh-0003cE-VB; Wed, 29 Apr 2026 13:07:41 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1297383.1573438; Wed, 29 Apr 2026 13:07: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 1wI4dh-0003c7-Ro; Wed, 29 Apr 2026 13:07:41 +0000
Received: by outflank-mailman (input) for mailman id 1297383;
 Wed, 29 Apr 2026 13:07:40 +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 1wI4dg-0003ak-K2
 for xen-devel@lists.xenproject.org; Wed, 29 Apr 2026 13:07:40 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wI4df-00Ck7W-Fy
 for xen-devel@lists.xenproject.org; Wed, 29 Apr 2026 15:07:39 +0200
Received: from [10.42.69.12] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <dmytro_prokopchuk1@epam.com>)
 id 69f2028f-2eae-0a2a0a5409dd-0a2a450ca188-34
 for <xen-devel@lists.xenproject.org>; Wed, 29 Apr 2026 15:07:39 +0200
Received: from [52.101.70.116]
 (helo=AS8PR04CU009.outbound.protection.outlook.com)
 by tlsNG-d25034.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.1)
 (envelope-from <dmytro_prokopchuk1@epam.com>)
 id 69f2029a-62f1-0a2a450c0019-3465467430a4-3
 for <xen-devel@lists.xenproject.org>; Wed, 29 Apr 2026 15:07:38 +0200
Received: from PAXPR03MB7531.eurprd03.prod.outlook.com (2603:10a6:102:1da::11)
 by DU0PR03MB9541.eurprd03.prod.outlook.com (2603:10a6:10:41d::17)
 with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9846.26; Wed, 29 Apr
 2026 13:07:33 +0000
Received: from PAXPR03MB7531.eurprd03.prod.outlook.com
 ([fe80::77bc:127a:5664:10e]) by PAXPR03MB7531.eurprd03.prod.outlook.com
 ([fe80::77bc:127a:5664:10e%4]) with mapi id 15.20.9846.025; Wed, 29 Apr 2026
 13:07: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=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=S198Y/Vlo+ZJ8H2pwWPoiw4+POCSFmRmEWhUWZ9pCcUc2Fflh4+628/0GiV7Eb1EWvTLU/UJZyTpl78amvhYDfsQuyzAPUsiGM0dydfG/VHl7o8R2KDFQBLISle6DpOlxV2vF6RMxha7C8DQ5D3TnhQkdTCzKjhgJgF+OMZ1qorGG5StseXCzL6sUduvrISm9IfF3bPZ03tqru7uFnKBDYynAA+toaD+6Q2x1I+/ntBrIkuxLJojFzRuiwsxUMqfFUnJvsuDbsHPRjouAlKSpxPvJdk3+mY4OsAP/KFEmsOJvyQWKsgX3QEs7BH5OKK4hANm+EjWrsPRM5AMvVsomw==
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com;
 s=arcselector10001;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1;
 bh=8Urg5CnjzZTSUreJYqhKTDnY+Nhbqw/GjLE4oB+NKBs=;
 b=uxPi+/grsIwL3ormanQl1Xr8VRyIoq5zbHhdSsM4MAndcMnaNPEXxClJMEIFWGyYVuH/e5/pIunqJdaS6N+vtf+OEZlAh5W4noB9IB081hi06MyI9vRS2DvOGangBFSZ1fhIcb2kR5fV/sqmvKGF14TKQVqeErJYUTFAFHQisO122YEih1kkZUsP2BYriLmBJIdonLs6gtFuexHVbh1V2250N6nFXlvwR9IIDpqBh3e3LOOqpftnBx18VzBfUHIS39UMJpy6Vrw6GbEXIncy/u0FwApJSL3TEU7azg1cVd/ZfBy3qJu6LmhJc41UmBXGzwPWry4HYI2zBW26ROLThg==
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=8Urg5CnjzZTSUreJYqhKTDnY+Nhbqw/GjLE4oB+NKBs=;
 b=sQv+bPIBfzTtsgKEqpNdqbOKMvqDATMwcCr4OXEN+9mgDjlRY3HrZLvYCT06Y4eQEjQCcDbp7VQ6Com1me18QjNOqEMLnEt7kJpSYHNplucWw67rBjESwTROgyyClD3dSjFzD06yGQyOQXFkEC8pK0NuWUY5zPe66hwkRnXRLv7RIyf/wiPnAhxgF5JhNs4zRWJ/v8ByGFalPvfx4+Ir0PzoBJ7b4hg+WBsC52XzYb8bq95kUUWffGjHkTQlMGPUsqyw9l5hvT0dZQ3mzI1inLY7KcPFW7stAQxgfIYevxf81AXjoxMTK3ccqlkPIY/4y5e2kXBOPL4am5VyHtdMxg==
From: Dmytro Prokopchuk1 <dmytro_prokopchuk1@epam.com>
To: Andrew Cooper <andrew.cooper3@citrix.com>,
	"xen-devel@lists.xenproject.org" <xen-devel@lists.xenproject.org>
CC: Juergen Gross <jgross@suse.com>
Subject: Re: [PATCH v2] hypfs: add ASSERT_UNREACHABLE() in
 hypfs_get_entry_rel()
Thread-Topic: [PATCH v2] hypfs: add ASSERT_UNREACHABLE() in
 hypfs_get_entry_rel()
Thread-Index: AQHc1zuKSCUJ+s/V9k2YkPF8TK6+GrX1yyWAgAA4qwA=
Date: Wed, 29 Apr 2026 13:07:32 +0000
Message-ID: <e0adb2c7-a57f-4887-96ab-b844fe252982@epam.com>
References:
 <6db49190e85a30c0129f251ce718d50923baba8d.1777387070.git.dmytro_prokopchuk1@epam.com>
 <83b1e26a-cd17-4f64-ae82-dbf56f95b4ad@citrix.com>
In-Reply-To: <83b1e26a-cd17-4f64-ae82-dbf56f95b4ad@citrix.com>
Accept-Language: en-US, uk-UA, ru-RU
Content-Language: en-US
X-MS-Has-Attach:
X-MS-TNEF-Correlator:
authentication-results: dkim=none (message not signed)
 header.d=none;dmarc=none action=none header.from=epam.com;
x-ms-publictraffictype: Email
x-ms-traffictypediagnostic: PAXPR03MB7531:EE_|DU0PR03MB9541:EE_
x-ms-office365-filtering-correlation-id: 458df68c-70c7-47d0-03b1-08dea5f046af
x-ms-exchange-senderadcheck: 1
x-ms-exchange-antispam-relay: 0
x-microsoft-antispam:
 BCL:0;ARA:13230040|366016|1800799024|42112799006|376014|38070700021|18002099003|22082099003|56012099003;
x-microsoft-antispam-message-info:
 IeXq+K76WYIdX+MSH1/i3sV+m3Q+nDfJLfgbpT4O6uyZbMGkOkkbhgoeINbN2k7DrVOUKhJJYMxfsNpszzyeT9R76+lfwwgShMu4fZ2V8a67ZzdhJR2y+ge3Rufj6gaMwh7a+DR5kWDzLLMKVzNYa+dX87cOE5KNKLWyn9/y6eQaihA3Yq2eh1GYgszt1A/fbxc1eoyy9Pl5Hnb3oKMtYyVeNEGXaG0RQzxYL8DobWILZhQXqsanTx+0Ff6o7Lgov1AhJx+By6+MqFYPHr0F0jG8+FD6D0xd9F1gm9sDV32252RLj+/xgNQZMUEu1e3uqTcjPxRuLpf/n3rzLj3TWf+5v8Zv8+riuAj5nqBKAu74hk6zqBHJGB0RNs4jrS28/aqGcE2qc3BtzcIDAk1CRO7mMCrCH8jVCH0wbl/ZQSCUaIL6rWFTWP4M+MJlWtWSpqA70udJDkvSGRKvD4Dxyh0ycv706SRWXqRRf9GwIv4x8TUcnvopzz2roTPCTdL/tZKcVNB30gu5iFft3uGsEyoccx8Uw7M149XJEPpv7V34pkISj9Oksagt9Hv/VPcu1RxqxtdPN4JlE9cHe2lzJsksqp6H6j/VYgojNJ/58+WDQhfDdiBKbz8xEDLBsOR0KjT2mMpkRdatr+xKhP9oetyJwpPrBbxdB5UqmabMm9bEifDR9B3nHdGwLHDGhD8kxoolr53ucKy94hoXArBR6bYJjfdLk+ATHZeXu7a4erB8PPgaK/xk7AohYPJRngtc
x-forefront-antispam-report:
 CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:PAXPR03MB7531.eurprd03.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(366016)(1800799024)(42112799006)(376014)(38070700021)(18002099003)(22082099003)(56012099003);DIR:OUT;SFP:1102;
x-ms-exchange-antispam-messagedata-chunkcount: 1
x-ms-exchange-antispam-messagedata-0:
 =?utf-8?B?ZUpQNDhYK3d5WDhNK3VhcEVSZGNmQUx6ZXJUY0ZoRm12TTZwajlxOHZ0WFdU?=
 =?utf-8?B?bWE3ZG82L1V1V0xleUdkOFMvMEp3S1g0ajFCaUVYVVNEbGFFS01lM2hLM1I4?=
 =?utf-8?B?SEk3amx6VXM4Rnl1eTZkdDhUQlY2a2VCWGVQT2pUU2hNaVEvK0Qxcno4K1pr?=
 =?utf-8?B?WEUzaU92VUJHOG5wSHFkT3U0bFVEVTAzcTBET0x1c1ZnK21kanBFOW5abjV5?=
 =?utf-8?B?ejFxalZSVGRQdW5YcEtVWkIyUmhEK25ieEkzaXV1VXVIaS9QaWEyQVcrQ2xl?=
 =?utf-8?B?aFRLcjRXS2RjakJEZEt0RVc3R0E1K0xEY0xjcU5CMWpQeHFHZ0UwdHY4eFNo?=
 =?utf-8?B?WDBUTjdGTE50QmRlcWMwU3dxY2JZMDhGM2pQZVNJSG1UalZsbUh1RFgwbzZR?=
 =?utf-8?B?eTd6MjZSR251dDFoRThSNFIxVmsvY1VZTXE5WWplbWVaempZLy9PdUxRUm5D?=
 =?utf-8?B?TVl5elhpUE1SOHpSbmQwY05XYktRazZVN3pYY0YzTEtZdmg3OU03WUR2N2x2?=
 =?utf-8?B?VmpLbmFiY1VHdFVpZk9sOXZoSklmb3pheUozQVE0SFcwYmxGN2NYeXpZejhP?=
 =?utf-8?B?dDloaXFjVU1xVTR5akw3RE1mM0NDbFhBZjdBNFM0VWljdnVmcUpkeUdBa2Zv?=
 =?utf-8?B?ZmZadkJ1SFBqWi9OMWUxNTZmOHFCZm5yUFZXN1VhY3FkQnNkd1hJZHhzMSt0?=
 =?utf-8?B?MXdMTjB3VU9WTmVmZHl5YW9pb1MxY21wT2xYcys2bXVqVk5kRUdtNmRYazFB?=
 =?utf-8?B?YnR1eXVWNUMyRmhpSmREWGNrQUVFeHpLSjBLZEp2dkxBTGdJd3M2eXdjRmRR?=
 =?utf-8?B?bzdPbEpsVXBaSVlXemh2VVhLcjhDeStUWmxjTURjY0krMFFnNVZGbjJYQUQz?=
 =?utf-8?B?MzVqdHphMFpNRmJ6azZZaTdhTDJyQytzS2xVN2tQQmtXTVYwWXJRSlFLVGN1?=
 =?utf-8?B?ZklIcGZSRklqWVMwcUdjdXdXUGYvaE5xZ2dOQTNreW5vemp1T1ZqUm5WUVJK?=
 =?utf-8?B?S0lBWWYwT3RkdWZsOUliUE9XeC9yZnJpT1IydEJ3R2d3aCtUSVdES2l2WkRK?=
 =?utf-8?B?M0pkSmUxZXBQd1A4d01oay9ZdU1GWEhEUGIwWm9jRWFCOFNiTTl1Vm1xVWdO?=
 =?utf-8?B?MUFuUHBPcW42RHFhTHhSRkN0ZHc1SVZhalpUSU4yNzRoY05QenlmTjR0b05D?=
 =?utf-8?B?MVFWVkcyMVRvYUhKK0NMcXdUVkhRdlkwQi9CSlE1VnhUNmkzenUxRnNiOGF6?=
 =?utf-8?B?NTRyU3Z3V2xqUGVvWit5Y05zL1AzeFdRZUtwTDBWTk1YbFhuK25CWGdkTDFS?=
 =?utf-8?B?VGllRllpOVl6TkhLRnlXdi9MekRQOTBmNmhTRDgrSDVkbWVGVWluOEhnZGQ3?=
 =?utf-8?B?R1F2c2xwMXdsODFBeWhTeG1NZFZJZy8vWndDM0duTnVBV3FvRHhRV0llMFlo?=
 =?utf-8?B?NmE4d0tOcXVzeTNvTHJ3c0pJbHRXbFE0R2NwMHRFai9TYllXdWw3V1BVbktL?=
 =?utf-8?B?Ti9sRlY2UTB3eXkrK0tadUt5ZTh4akxpMkJrS2F3aXpySXNlaFBXaHlOWndE?=
 =?utf-8?B?QVg5cnVoU041d241SXpFZ2Rvdm1DYlcwSEdmLytSakdycjJqZG9kY0RlSVkv?=
 =?utf-8?B?UE9Jd1E5bVAzRjBhdXMwSjdSNzh2Z3o0VGduK0I5aGloL0t4RkZZZDFONllC?=
 =?utf-8?B?a2oxS2dmVlQ1QjBUNnR1cnRvc25ZUWtJVHhQcXpHZVltZVZNcVFrV0ZUZStL?=
 =?utf-8?B?VmFuRTQ2V1Rla2M1d1o2N2QwNVY1RGwyaW0waDBYY2JabjMySTZMVjdhN0dq?=
 =?utf-8?B?REljLzVSQjB0WUtjT201NFhVR1ZHVWFGeWk2L0F4OGNvbzUzMGxjbXpxMDhr?=
 =?utf-8?B?UkVYTHlLZUZUQzd3UlJQZ1loS0h5c09QbVBpc2pWN1FnZUtWZnhQTkVudTh2?=
 =?utf-8?B?TVkwbHFYNHpkNXRqRDBPcXhiNzVlYVNFMm5hMUQrK2ppM21keElkc0hpYXJ1?=
 =?utf-8?B?WDNYT2l5Y0V6NWRZVjJET2sybElWWTJLczBKYy96QUhYb0FkUkRObUkyRk1G?=
 =?utf-8?B?M2wxQzZ0bmJkU2VZaXVpdXI5Qld4bFZOS012cVFNcEQrWENlZ3Q4TGk3Z0ww?=
 =?utf-8?B?cWFuS0REaEFXZ3d6OWd0cUtWTFVhalJvMjNzR2xZWUszZGc2SmI4YnJFdlow?=
 =?utf-8?B?UHQ3K3kxRDAzQXUyMUZPWGFZYzd5NUtmaUlFaUZkVGJKQ2U1WHZrb3JRSm5s?=
 =?utf-8?B?YnZncW5ob0NscE9jMU1FMlIwMlN5RGtNenlmZis1UFZ0c2hmK2xrYk9nMy9u?=
 =?utf-8?B?ZkR1ZitvTy92c2RkU0RjVFZaNThIMTIwRGYycTdaOTZUd2ZOL21udmgxVjls?=
 =?utf-8?Q?t7TRNLzL0n9uhOeU=3D?=
Content-Type: text/plain; charset="utf-8"
Content-ID: <2133965B5BD546419DC50AA5FAB16D13@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: PAXPR03MB7531.eurprd03.prod.outlook.com
X-MS-Exchange-CrossTenant-Network-Message-Id: 458df68c-70c7-47d0-03b1-08dea5f046af
X-MS-Exchange-CrossTenant-originalarrivaltime: 29 Apr 2026 13:07:32.9351
 (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: ej+yM6bIqo9QasfsLSZanpWc7d0/ppQ7OIlIIF7Y+Y4F7BJFIbsWtLPGMRQ0ko8nVBkX9a+DauiumbrvO8+Uah/5jU9JXI3l7UsLaCZakmA=
X-MS-Exchange-Transport-CrossTenantHeadersStamped: DU0PR03MB9541
X-purgate-ID: tlsNG-d25034/1777468058-F7D7BCF5-AE68CF08/0/0
X-purgate-type: clean
X-purgate-size: 3346

DQoNCk9uIDQvMjkvMjYgMTI6NDQsIEFuZHJldyBDb29wZXIgd3JvdGU6DQo+IE9uIDI4LzA0LzIw
MjYgNzoxOSBwbSwgRG15dHJvIFByb2tvcGNodWsxIHdyb3RlOg0KPj4gVGhlIHN0YXRlbWVudCAn
cmV0dXJuIEVSUl9QVFIoLUVOT0VOVCk7JyBvbiB0aGUgZmluYWwgbGluZSBvZiB0aGUNCj4+IGZ1
bmN0aW9uICdoeXBmc19nZXRfZW50cnlfcmVsKCknIGlzIHVucmVhY2hhYmxlIGJlY2F1c2UgdGhl
IGxvZ2ljIHdpdGhpbg0KPj4gdGhlIGluZmluaXRlIGxvb3AgJ2ZvciAoOzspJyBwcm92aWRlcyBh
bGwgcG9zc2libGUgZXhpdCBwYXRocyBmb3IgdGhlDQo+PiBmdW5jdGlvbi4gU28gdGhlcmUgaXMg
bm8gZXhlY3V0aW9uIHBhdGggdG8gZXhpdCB0aGUgbG9vcCBhbmQgcmVhY2ggdGhlDQo+PiBmaW5h
bCB0aGF0IHN0YXRlbWVudC4NCj4+DQo+PiBUaGlzIHVucmVhY2hhYmxlIGNvZGUgdmlvbGF0ZXMg
TUlTUkEgQyBSdWxlIDIuMSB3aGljaCBzdGF0ZXM6ICJBIHByb2plY3QNCj4+IHNoYWxsIG5vdCBj
b250YWluIHVucmVhY2hhYmxlIGNvZGUiLg0KPj4NCj4+IFRvIGZpeCB0aGF0IGFuZCBwb3RlbnRp
YWwgY29tcGlsZXJzICJjb250cm9sIHJlYWNoZXMgZW5kIG9mIG5vbi12b2lkDQo+PiBmdW5jdGlv
biIgd2FybmluZywgbWFyayB0aGUgY29kZSBwYXRoIGFzIHVucmVhY2hhYmxlIHVzaW5nIG1hY3Jv
DQo+PiAnQVNTRVJUX1VOUkVBQ0hBQkxFKCknLg0KPj4NCj4+IFNpZ25lZC1vZmYtYnk6IERteXRy
byBQcm9rb3BjaHVrIDxkbXl0cm9fcHJva29wY2h1azFAZXBhbS5jb20+DQo+PiAtLS0NCj4+IENo
YW5nZXMgaW4gdjI6DQo+PiAtIGFkZCBBU1NFUlRfVU5SRUFDSEFCTEUoKSBiZWZvcmUgdGhlIGZp
bmFsIHJldHVybiBzdGF0ZW1lbnQgaW5zdGVhZCBvZiByZW1vdmluZyBpdA0KPj4gVGVzdCBDSSBw
aXBlbGluZToNCj4+IGh0dHBzOi8vZ2l0bGFiLmNvbS94ZW4tcHJvamVjdC9wZW9wbGUvZGltYXBy
a3A0ay94ZW4vLS9waXBlbGluZXMvMjQ4NTY2MTkxMA0KPj4gTGluayB0byB2MToNCj4+IGh0dHBz
Oi8vcGF0Y2hldy5vcmcvWGVuLzM0MTgxMWNlZDI5NDNmYjc5ZDAyMzVjMjc3ODFjNTY0YzdiZGFm
MDIuMTc3NTc0OTE0Ni5naXQuZG15dHJvLl81RnByb2tvcGNodWsxQGVwYW0uY29tLw0KPj4gLS0t
DQo+PiAgIHhlbi9jb21tb24vaHlwZnMuYyB8IDEgKw0KPj4gICAxIGZpbGUgY2hhbmdlZCwgMSBp
bnNlcnRpb24oKykNCj4+DQo+PiBkaWZmIC0tZ2l0IGEveGVuL2NvbW1vbi9oeXBmcy5jIGIveGVu
L2NvbW1vbi9oeXBmcy5jDQo+PiBpbmRleCBjZGY0ZWUwMTcxLi4wMmZiMjM0NTY4IDEwMDY0NA0K
Pj4gLS0tIGEveGVuL2NvbW1vbi9oeXBmcy5jDQo+PiArKysgYi94ZW4vY29tbW9uL2h5cGZzLmMN
Cj4+IEBAIC0zNDgsNiArMzQ4LDcgQEAgc3RhdGljIHN0cnVjdCBoeXBmc19lbnRyeSAqaHlwZnNf
Z2V0X2VudHJ5X3JlbChzdHJ1Y3QgaHlwZnNfZW50cnlfZGlyICpkaXIsDQo+PiAgICAgICAgICAg
ZGlyID0gY29udGFpbmVyX29mKGVudHJ5LCBzdHJ1Y3QgaHlwZnNfZW50cnlfZGlyLCBlKTsNCj4+
ICAgICAgIH0NCj4+DQo+PiArICAgIEFTU0VSVF9VTlJFQUNIQUJMRSgpOw0KPj4gICAgICAgcmV0
dXJuIEVSUl9QVFIoLUVOT0VOVCk7DQo+PiAgIH0NCj4+DQo+DQo+IE5vLiAgVGhpcyBpcyBhYnN1
cmQuDQo+DQo+IE5vdCB0byBtZW50aW9uIHRoYXQgeW91IGFyZSAqZGVmaW5pdGVseSogbm90IGZp
eGluZyB0aGUgc3RhdGVkIE1JU1JBIHJ1bGUuDQo+DQo+IH5BbmRyZXcNCg0KSGVsbG8gQW5kcmV3
Lg0KDQpMb29rcyBsaWtlIHRoZXJlIGlzIGEgY29uZmxpY3QgYmV0d2VlbiBjb21waWxlciBhbmQg
RWNsYWlyLg0KDQpBIGNvbXBpbGVyIGlzIHNtYXJ0IGVub3VnaCAoc2hvdWxkIGJlIGF0IGxlYXN0
KSB0byB1bmRlcnN0YW5kIHRoYXQNCiJyZXR1cm4gRVJSX1BUUigtRU5PRU5UKTsiIGlzIHVucmVh
Y2hhYmxlIGluIHRoaXMgY2FzZSwgYW5kIHJlbW92ZSBpdA0KZHVyaW5nIERDRSwgYW5kIGF0IHRo
ZSBzYW1lIHRpbWUgdG8gaWdub3JlICpwb3RlbnRpYWwqIHdhcm5pbmcsIHRoYXQNCm5vbi12b2lk
IGZ1bmN0aW9uIGRvZXNuJ3QgaGF2ZSByZXR1cm4gc3RhdGVtZW50IGF0IHRoZSBlbmQuDQoNClRo
ZSBFQ0xBSVIgc2NhbnMgY29kZSBhZnRlciBwcmVwcm9jZXNzaW5nLCBzbyAicmV0dXJuIEVSUl9Q
VFIoLUVOT0VOVCk7Ig0KaXMgc3RpbGwgdGhlcmUgLS0+IHZpb2xhdGlvbi4NCg0KV2l0aCAiQVNT
RVJUX1VOUkVBQ0hBQkxFKCk7IiB3ZSBqdXN0IG1ha2UgRWNsYWlyIGhhcHB5Lg0KDQpJbiB0aGUg
cGF0Y2ggdjEgdGhlIHJldHVybiBzdGF0ZW1lbnQgd2FzIHJlbW92ZWQuIERvIHlvdSB0aGluayBp
dCBpcyBPSz8NCk1ha2luZyBhc3N1bXB0aW9uIHRoYXQgd2Ugd2lsbCBuZXZlciBnZXQgY29tcGls
ZXIgZXJyb3INClstV2Vycm9yPXJldHVybi10eXBlXS4uLg0KDQpEbXl0cm8uDQoNCg==


From xen-devel-bounces@lists.xenproject.org Wed Apr 29 14:15:06 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 29 Apr 2026 14:15:06 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1297412.1573447 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wI5gR-0005BY-L5; Wed, 29 Apr 2026 14:14:35 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1297412.1573447; Wed, 29 Apr 2026 14:14: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 1wI5gR-0005BR-Hg; Wed, 29 Apr 2026 14:14:35 +0000
Received: by outflank-mailman (input) for mailman id 1297412;
 Wed, 29 Apr 2026 14:14:33 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <val@invisiblethingslab.com>) id 1wI5g7-0005B0-TE
 for xen-devel@lists.xenproject.org; Wed, 29 Apr 2026 14:14:33 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wI5g5-00GCdp-Em
 for xen-devel@lists.xenproject.org; Wed, 29 Apr 2026 16:14:13 +0200
Received: from [10.42.69.3] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <val@invisiblethingslab.com>)
 id 69f21231-2eae-0a2a0a5409dd-0a2a4503971c-6
 for <xen-devel@lists.xenproject.org>; Wed, 29 Apr 2026 16:14:13 +0200
Received: from [202.12.124.156] (helo=fhigh-b5-smtp.messagingengine.com)
 by tlsNG-33051d.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.1)
 (envelope-from <val@invisiblethingslab.com>)
 id 69f21233-672d-0a2a45030019-ca0c7c9cb595-3
 for <xen-devel@lists.xenproject.org>; Wed, 29 Apr 2026 16:14:12 +0200
Received: from phl-compute-05.internal (phl-compute-05.internal [10.202.2.45])
 by mailfhigh.stl.internal (Postfix) with ESMTP id C958C7A00D0;
 Wed, 29 Apr 2026 10:14:10 -0400 (EDT)
Received: from phl-frontend-04 ([10.202.2.163])
 by phl-compute-05.internal (MEProxy); Wed, 29 Apr 2026 10:14:11 -0400
Received: by mail.messagingengine.com (Postfix) with ESMTPA; Wed,
 29 Apr 2026 10:14:07 -0400 (EDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@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-Transfer-Encoding:Date:From:Message-ID:MIME-Version:Subject:To"; dkim=pass header.s=fm2 header.d=messagingengine.com header.i="@messagingengine.com" header.h="Cc:Content-Transfer-Encoding:Date:Feedback-ID:From:Message-ID:MIME-Version: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-transfer-encoding
	:content-type:date:date:from:from:in-reply-to:message-id
	:mime-version:reply-to:subject:subject:to:to; s=fm2; t=
	1777472050; x=1777558450; bh=m91VKPh4PUBytU5kpYfhb4cVChEL8DyMvXK
	Y3Xve3Rc=; b=Iu6B/GBfj+HguUmDDVmVY//ympuSkvgQQFeQAfq07KKIrMLXJ+0
	sudJdqth9JicKBLFrihqDGb+n19HyqgCYfTy0DGSGUXXqO770uTVp9fZGPzIfRVA
	1UHAl+6zBsIkOPpPjzxDVODNcZpMpT/DmjfF2gKHQQk8LhubPG8zAmX+hnx3VMh7
	SnzXVZx2cf8fCpZ6nlpRZcoV4oiVNu0+WuOEs87s3e5Nk7JKWpSimflkpEeZVvCc
	Ck+nu1DEZfzy8/PQD470quElAi/jaVx58ZLESZxsiLQSb1gInIB85/xT7XP4wrGC
	ekBQ4PS40zY6hqRcRT6Oaqh0o27S18dm+CQ==
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=
	messagingengine.com; h=cc:cc:content-transfer-encoding
	:content-type:date:date:feedback-id:feedback-id:from:from
	:in-reply-to:message-id:mime-version:reply-to:subject:subject:to
	:to:x-me-proxy:x-me-sender:x-me-sender:x-sasl-enc; s=fm2; t=
	1777472050; x=1777558450; bh=m91VKPh4PUBytU5kpYfhb4cVChEL8DyMvXK
	Y3Xve3Rc=; b=UuVdds6zgumutc6n/Y4b3uziBXmJKtt1qwCJceMK/Sm/0jhz725
	2TJDTPcJKEDlJFWWot9pz7wVwy71gWFoHfTLtfgKnyDj8oQp3BlavSANW6h/tAhJ
	Ggz/woaxMBgYR2FYESeFNhl4gMBbaKVCvy5hQPcc4ZnngWzLLVomuKo9l2+H8Hif
	ZyvXE4faqNUW/4cvY3CgoDujBin/raOj0xMMSo/v4H+QmPTvIiry7amK6DB3XQGz
	k2F4eSdBgUHHbJ53sAQ7OOMFIqGxTmNh0ILKxzwxPAXVIIlUF8tXWvDhQSHqPUI/
	F5HUr4GVRglaU4aqbBuiLewRPsw4jp+HVZw==
X-ME-Sender: <xms:MRLyaSs1MhtiS_jwZWI-2NlNs3sgT3rLZJ8zpMdBwj4ew-AplPIc_Q>
    <xme:MRLyafpVO8BbeGLvvNcpQrd5FJdKnXsc1W6Zlkfgsh54eNWE8d0BvRueGnwlba0cp
    e4nzmrl-7c5zngl9fWRHbEh9wMYO6ze7ZF-1IgId4jXfp27EpA>
X-ME-Received: <xmr:MRLyaZX5dMBF8Un69nktuOctJFwRs2Z9mnoE57ciaFexxrhOz9aC0dUrXkQ2khA1QF2l-uaaD9rRJDdl6DhyJ9gWJrgwNA>
X-ME-Proxy-Cause: gggruggvucftvghtrhhoucdtuddrgeefhedrtddtgdekgeeihecutefuodetggdotefrod
    ftvfcurfhrohhfihhlvgemucfhrghsthforghilhdpuffrtefokffrpgfnqfghnecuuegr
    ihhlohhuthemuceftddtnecusecvtfgvtghiphhivghnthhsucdlqddutddtmdenucfjug
    hrpefhvfevufffkffoggfgsedtkeertdertddtnecuhfhrohhmpeggrghlucfrrggtkhgv
    thhtuceovhgrlhesihhnvhhishhisghlvghthhhinhhgshhlrggsrdgtohhmqeenucggtf
    frrghtthgvrhhnpefgiefgiefhveehgfegueevffdtleevueefjeekledtheevleevhedt
    jeehteeuudenucffohhmrghinhepghhithhhuhgsrdgtohhmnecuvehluhhsthgvrhfuih
    iivgeptdenucfrrghrrghmpehmrghilhhfrhhomhepvhgrlhesihhnvhhishhisghlvght
    hhhinhhgshhlrggsrdgtohhmpdhnsggprhgtphhtthhopedutddpmhhouggvpehsmhhtph
    houhhtpdhrtghpthhtohepmhhsthesrhgvughhrghtrdgtohhmpdhrtghpthhtohepjhgr
    shhofigrnhhgsehrvgguhhgrthdrtghomhdprhgtphhtthhopeiguhgrnhiihhhuoheslh
    hinhhugidrrghlihgsrggsrgdrtghomhdprhgtphhtthhopegvphgvrhgviihmrgesrhgv
    ughhrghtrdgtohhmpdhrtghpthhtohepvhgrlhesihhnvhhishhisghlvghthhhinhhgsh
    hlrggsrdgtohhmpdhrtghpthhtohepmhgrrhhmrghrvghksehinhhvihhsihgslhgvthhh
    ihhnghhslhgrsgdrtghomhdprhgtphhtthhopehvihhrvghshhdrkhhumhgrrheslhhinh
    grrhhordhorhhgpdhrtghpthhtohepgigvnhdquggvvhgvlheslhhishhtshdrgigvnhhp
    rhhojhgvtghtrdhorhhgpdhrtghpthhtoheplhhinhhugidqkhgvrhhnvghlsehvghgvrh
    drkhgvrhhnvghlrdhorhhg
X-ME-Proxy: <xmx:MRLyaX2o3rePuDkcVRJtIX3KO6aFQc9kas8W1deys4oBZBr2ezxZKg>
    <xmx:MRLyaetOuAW3EcarJ3iiQBG1FQtmvfhTYlWkd3gd2vC25WqWnQIOZw>
    <xmx:MRLyafWO6Ydls2uwNepFNat0ZpIyzBkUaxYYyBCil1afsLEGJeGb8Q>
    <xmx:MRLyaWwXicRoa71NbK9nLSihtHf1TV8dgLQCeYerQDHhTvmPAuKDag>
    <xmx:MhLyafJkU4ddbYB5qDJgGuMC0TzjGeEtOSrHIQFjy3CzcQLxFwn3DQfx>
Feedback-ID: i001e48d0:Fastmail
From: Val Packett <val@invisiblethingslab.com>
To: "Michael S. Tsirkin" <mst@redhat.com>,
	Jason Wang <jasowang@redhat.com>,
	Xuan Zhuo <xuanzhuo@linux.alibaba.com>,
	=?UTF-8?q?Eugenio=20P=C3=A9rez?= <eperezma@redhat.com>
Cc: Val Packett <val@invisiblethingslab.com>,
	=?UTF-8?q?Marek=20Marczykowski-G=C3=B3recki?= <marmarek@invisiblethingslab.com>,
	Viresh Kumar <viresh.kumar@linaro.org>,
	xen-devel@lists.xenproject.org,
	linux-kernel@vger.kernel.org,
	virtualization@lists.linux.dev
Subject: [RFC PATCH] virtio-mmio: add xenbus probing
Date: Wed, 29 Apr 2026 10:52:17 -0300
Message-ID: <20260429141339.74472-1-val@invisiblethingslab.com>
X-Mailer: git-send-email 2.53.0
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit
X-purgate-ID: tlsNG-33051d/1777472053-A1F7A938-E2F0AAA1/0/0
X-purgate-type: clean
X-purgate-size: 7798

The experimental virtio-mmio support for Xen was initially developed
on aarch64, so device trees were used to configure the mmio devices,
with arbitrary vGIC interrupts used by the hypervisor. On x86_64
however, the only reasonable way to interrupt the guest is over Xen
event channels, which can only be acquired by children of xenbus,
the virtual bus driven by Xen's configuration database, XenStore.
It is also a more convenient and "Xen-ish" way to provision devices.

Implement a xenbus client for virtio-mmio which negotiates an
event channel and provides it as a platform IRQ to the
virtio-mmio driver.


Signed-off-by: Val Packett <val@invisiblethingslab.com>
---

Hi,

I've been working on porting virtio-mmio support from Arm to x86_64,
with the goal of running vhost-user-gpu to power Wayland/GPU integration
for Qubes OS. (I'm aware of various proposals for alternative virtio
transports but virtio-mmio seems to be the only one that *is* upstream
already and just Works..) Setting up virtio-mmio through xenbus, initially
motivated just by event channels being the only real way to get interrupts
working on HVM, turned out to generally be quite pleasant and nice :)

I'd like to get some early feedback for this patch, particularly
the general stuff:

* is this whole thing acceptable in general?
* should it be extracted into a different file?
* (from the Xen side) any input on the xenstore keys, what goes where?
* anything else to keep in mind?

It does seem simple enough, so hopefully this can be done?

The corresponding userspace-side WIP is available at:
https://github.com/QubesOS/xen-vhost-frontend

And the required DMOP for firing the evtchn events will be sent
to xen-devel shortly as well.

Thanks,
~val

---
 drivers/virtio/Kconfig       |   7 ++
 drivers/virtio/virtio_mmio.c | 177 ++++++++++++++++++++++++++++++++++-
 2 files changed, 183 insertions(+), 1 deletion(-)

diff --git a/drivers/virtio/Kconfig b/drivers/virtio/Kconfig
index ce5bc0d9ea28..56bc2b10526b 100644
--- a/drivers/virtio/Kconfig
+++ b/drivers/virtio/Kconfig
@@ -171,6 +171,13 @@ config VIRTIO_MMIO_CMDLINE_DEVICES
 
 	 If unsure, say 'N'.
 
+config VIRTIO_MMIO_XENBUS
+	bool "Memory mapped virtio devices parameter parsing"
+	depends on VIRTIO_MMIO && XEN
+	select XEN_XENBUS_FRONTEND
+	help
+	 Allow virtio-mmio devices instantiation for Xen guests via xenbus.
+
 config VIRTIO_DMA_SHARED_BUFFER
 	tristate
 	depends on DMA_SHARED_BUFFER
diff --git a/drivers/virtio/virtio_mmio.c b/drivers/virtio/virtio_mmio.c
index 595c2274fbb5..32295284bdbf 100644
--- a/drivers/virtio/virtio_mmio.c
+++ b/drivers/virtio/virtio_mmio.c
@@ -70,6 +70,11 @@
 #include <uapi/linux/virtio_mmio.h>
 #include <linux/virtio_ring.h>
 
+#ifdef CONFIG_VIRTIO_MMIO_XENBUS
+#include <xen/xen.h>
+#include <xen/xenbus.h>
+#include <xen/events.h>
+#endif
 
 
 /* The alignment to use between consumer and producer parts of vring.
@@ -810,13 +815,183 @@ static struct platform_driver virtio_mmio_driver = {
 	},
 };
 
+#ifdef CONFIG_VIRTIO_MMIO_XENBUS
+struct virtio_mmio_xen_info {
+	struct resource resources[2];
+	unsigned int evtchn;
+	struct platform_device *pdev;
+};
+
+static int virtio_mmio_xen_probe(struct xenbus_device *dev,
+			const struct xenbus_device_id *id)
+{
+	int err;
+	long long base, size;
+	char *mem;
+	struct virtio_mmio_xen_info *info;
+	struct xenbus_transaction xbt;
+
+	/* TODO: allocate an unused address here and pass it to the host instead */
+	err = xenbus_scanf(XBT_NIL, dev->otherend, "base", "0x%llx",
+			   &base);
+	if (err < 0) {
+		xenbus_dev_fatal(dev, err, "reading base");
+		return -EINVAL;
+	}
+
+	mem = xenbus_read(XBT_NIL, dev->otherend, "size", NULL);
+	if (XENBUS_IS_ERR_READ(mem))
+		return PTR_ERR(mem);
+	size = memparse(mem, NULL);
+	kfree(mem);
+
+	info = kzalloc_obj(*info);
+	if (!info) {
+		xenbus_dev_fatal(dev, -ENOMEM, "allocating info structure");
+		return -ENOMEM;
+	}
+
+	info->resources[0].flags = IORESOURCE_MEM;
+	info->resources[0].start = base;
+	info->resources[0].end = base + size - 1;
+
+	err = xenbus_alloc_evtchn(dev, &info->evtchn);
+	if (err) {
+		xenbus_dev_fatal(dev, err, "xenbus_alloc_evtchn");
+		goto error_info;
+	}
+
+	err = bind_evtchn_to_irq(info->evtchn);
+	if (err <= 0) {
+		xenbus_dev_fatal(dev, err, "bind_evtchn_to_irq");
+		goto error_evtchan;
+	}
+
+	info->resources[1].flags = IORESOURCE_IRQ;
+	info->resources[1].start = info->resources[1].end = err;
+
+again:
+	err = xenbus_transaction_start(&xbt);
+	if (err) {
+		xenbus_dev_fatal(dev, err, "starting transaction");
+		goto error_irq;
+	}
+
+	err = xenbus_printf(xbt, dev->nodename, "event-channel", "%u",
+			    info->evtchn);
+	if (err) {
+		xenbus_transaction_end(xbt, 1);
+		xenbus_dev_fatal(dev, err, "%s", "writing event-channel");
+		goto error_irq;
+	}
+
+	err = xenbus_transaction_end(xbt, 0);
+	if (err) {
+		if (err == -EAGAIN)
+			goto again;
+		xenbus_dev_fatal(dev, err, "completing transaction");
+		goto error_irq;
+	}
+
+	dev_set_drvdata(&dev->dev, info);
+	xenbus_switch_state(dev, XenbusStateInitialised);
+	return 0;
+
+error_irq:
+	unbind_from_irqhandler(info->resources[1].start, info);
+error_evtchan:
+	xenbus_free_evtchn(dev, info->evtchn);
+error_info:
+	kfree(info);
+
+	return err;
+}
+
+static void virtio_mmio_xen_backend_changed(struct xenbus_device *dev,
+				   enum xenbus_state backend_state)
+{
+	struct virtio_mmio_xen_info *info = dev_get_drvdata(&dev->dev);
+
+	switch (backend_state) {
+	case XenbusStateInitialising:
+	case XenbusStateInitWait:
+	case XenbusStateInitialised:
+	case XenbusStateReconfiguring:
+	case XenbusStateReconfigured:
+	case XenbusStateUnknown:
+		break;
+
+	case XenbusStateConnected:
+		if (dev->state != XenbusStateInitialised) {
+			dev_warn(&dev->dev, "state %d on connect", dev->state);
+			break;
+		}
+		info->pdev = platform_device_register_resndata(&dev->dev,
+				"virtio-mmio", PLATFORM_DEVID_AUTO,
+				info->resources, ARRAY_SIZE(info->resources), NULL, 0);
+		xenbus_switch_state(dev, XenbusStateConnected);
+		break;
+
+	case XenbusStateClosed:
+		if (dev->state == XenbusStateClosed)
+			break;
+		fallthrough;	/* Missed the backend's Closing state. */
+	case XenbusStateClosing:
+		platform_device_unregister(info->pdev);
+		xenbus_switch_state(dev, XenbusStateClosed);
+		break;
+
+	default:
+		xenbus_dev_fatal(dev, -EINVAL, "saw state %d at frontend",
+				 backend_state);
+		break;
+	}
+}
+
+static void virtio_mmio_xen_remove(struct xenbus_device *dev)
+{
+	struct virtio_mmio_xen_info *info = dev_get_drvdata(&dev->dev);
+
+	kfree(info);
+	dev_set_drvdata(&dev->dev, NULL);
+}
+
+static const struct xenbus_device_id virtio_mmio_xen_ids[] = {
+	{ "virtio" },
+	{ "" },
+};
+
+static struct xenbus_driver virtio_mmio_xen_driver = {
+	.ids			= virtio_mmio_xen_ids,
+	.probe			= virtio_mmio_xen_probe,
+	.otherend_changed	= virtio_mmio_xen_backend_changed,
+	.remove			= virtio_mmio_xen_remove,
+};
+#endif
+
 static int __init virtio_mmio_init(void)
 {
-	return platform_driver_register(&virtio_mmio_driver);
+	int ret;
+
+	ret = platform_driver_register(&virtio_mmio_driver);
+	if (ret)
+		return ret;
+
+#ifdef CONFIG_VIRTIO_MMIO_XENBUS
+	if (xen_domain())
+		ret = xenbus_register_frontend(&virtio_mmio_xen_driver);
+#endif
+
+	return ret;
 }
 
 static void __exit virtio_mmio_exit(void)
 {
+#ifdef CONFIG_VIRTIO_MMIO_XENBUS
+	if (xen_domain())
+		xenbus_unregister_driver(&virtio_mmio_xen_driver);
+#endif
+
 	platform_driver_unregister(&virtio_mmio_driver);
 	vm_unregister_cmdline_devices();
 }
-- 
2.53.0



From xen-devel-bounces@lists.xenproject.org Wed Apr 29 14:34:12 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 29 Apr 2026 14:34:12 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1297429.1573455 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wI5zA-0008Pg-8z; Wed, 29 Apr 2026 14:33:56 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1297429.1573455; Wed, 29 Apr 2026 14: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 1wI5zA-0008PZ-6E; Wed, 29 Apr 2026 14:33:56 +0000
Received: by outflank-mailman (input) for mailman id 1297429;
 Wed, 29 Apr 2026 14:33:55 +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.19dd9a915bc000f373@swg.vates.tech>)
 id 1wI5z9-0008PT-D7
 for xen-devel@lists.xenproject.org; Wed, 29 Apr 2026 14:33:55 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wI5z8-004Pgp-Oy
 for xen-devel@lists.xenproject.org; Wed, 29 Apr 2026 16:33:54 +0200
Received: from [10.42.69.1] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1) (envelope-from
 <prod-mta-13.8631fc262581453bbf619ec5b2062170.19dd9a915bc000f373@swg.vates.tech>)
 id 69f216c8-2eae-0a2a0a5409dd-0a2a4501b6da-24
 for <xen-devel@lists.xenproject.org>; Wed, 29 Apr 2026 16:33:54 +0200
Received: from [185.255.28.34] (helo=prod-mta-13.swg-srv.net)
 by tlsNG-d62444.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.1)
 (envelope-from
 <prod-mta-13.8631fc262581453bbf619ec5b2062170.19dd9a915bc000f373@swg.vates.tech>)
 id 69f216d2-c1f2-0a2a45010019-b9ff1c228517-3
 for <xen-devel@lists.xenproject.org>; Wed, 29 Apr 2026 16:33:54 +0200
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
 19dd9a915bc000f373.002 for <xen-devel@lists.xenproject.org>
 (version=TLSv1.3 cipher=TLS_AES_256_GCM_SHA384);
 Wed, 29 Apr 2026 14:33:50 +0000
Received: from l14 (lfbn-lyo-1-414-55.w2-7.abo.wanadoo.fr [2.7.24.55])
 (Authenticated sender: anthony.perard)
 by mail2.vates.fr (Postfix) with ESMTPSA id 9CEF480B82;
 Wed, 29 Apr 2026 16:33:45 +0200 (CEST)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@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=6Qpd3RUXpDK/WhkTTfIF7opv94F9vdzKhd0m8iunY8A=;
 h=from:subject:date:message-id:to:cc:mime-version:content-type:in-reply-to:references:feedback-id;
 b=PW4JqyYdsFlXyh8WHq6+5PeWW6GxnbngUzHRrNPfcxeWtlgcyCIwwwQv3iK+FEew6aPu896i4
 Ls2M7dpdtR0dJWCNVnctOdr9h6UaOCc8JkzVzg+ABIO2eieUYNXAyClkjsVsbpGARfWRmlp9IUK
 P9sguhnXeiYhhkyGc8epK9aiza3dNKlwthn11G/GtJby+pQdCjlQ2L5NLPlhOcNDGFrIYXVFJ9X
 4B0AHmGNtDxOXChVrL7OJH4Rw66ZfQT06smQZTRyzkBTgGZVeybazJ4gogTdvDr/2PhLr6OA3Y1
 CP8ldMWYcNN9R8twv/pC2OE0YdUCd10+4aVaEuwENtvA==
X-Zone-Loop: 795a9e550284621f493acc2b30d84560a4b4629f629b
x-campaign-type: default
x-transaction-id: c4e82e4f-89c1-452e-97d0-36364208eb2a
x-swg-uid: 01-57d22118-7835-4d11-afdc-5b02a6c55fa5
X-Mailer: Sweego
Message-ID:
 <1777473230.8631fc262581453bbf619ec5b2062170.19dd9a915bc000f373@vates.tech>
x-swg-bid: 1777473230.8631fc262581453bbf619ec5b2062170.19dd9a915bc000f373
Feedback-ID: default:8631fc262581453bbf619ec5b2062170:Sweego
x-campaign-id: default
x-client-id: 8631fc262581453bbf619ec5b2062170
X-Originating-IP: [37.26.189.201]
Date: Wed, 29 Apr 2026 16:33:45 +0200
From: Anthony PERARD <anthony.perard@vates.tech>
To: Mykyta Poturai <Mykyta_Poturai@epam.com>
Cc: Jan Beulich <jbeulich@suse.com>, Juergen Gross <jgross@suse.com>,
	"xen-devel@lists.xenproject.org" <xen-devel@lists.xenproject.org>
Subject: Re: [PATCH v7 5/6] tools: Allow building xen-hptool without
 CONFIG_MIGRATE
References: <cover.1774871881.git.mykyta_poturai@epam.com>
 <73db845e6617130966a565cdca6274db4cb46428.1774871881.git.mykyta_poturai@epam.com>
 <58cfab3b-7cf2-4e38-9968-1248e665f985@suse.com>
 <f4a1cfa1-f3ea-4fa0-bffd-1f6346e07d39@epam.com>
 <28900826-5a96-4bf0-8d5b-11fd1be8386a@suse.com>
 <96829f0b-faac-4100-8c30-c93ac9459600@epam.com>
MIME-Version: 1.0
Content-Disposition: inline
In-Reply-To: <96829f0b-faac-4100-8c30-c93ac9459600@epam.com>
X-BM-Disclaimer: Yes
Content-Type: multipart/alternative; boundary="-=Part.231.4aedd74cac3a3672.19dd9a9040f.4e3261a16981b028=-"
X-Bm-Milter-Handled: 4ffbd6c1-ee69-4e1b-aabd-f977039bd3e2
X-Bm-Transport-Timestamp: 1777473225743
X-purgate-ID: tlsNG-d62444/1777473234-BC016FF4-4D7C287D/0/0
X-purgate-type: clean
X-purgate-size: 2805

---=Part.231.4aedd74cac3a3672.19dd9a9040f.4e3261a16981b028=-
Content-Type: text/plain; charset=utf-8
Content-Transfer-Encoding: quoted-printable

On Thu, Apr 16, 2026 at 08:22:32AM +0000, Mykyta Poturai wrote:
> On 4/16/26 09:49, Jan Beulich wrote:
> > On 15=2E04=2E2026 16:51, Mykyta Poturai wrote:
> >> On 3/30/26 15:32, Jan Beulich wrote:
> >>> This looks wrong to me=2E There are x86-specifics in that file, whic=
h shouldn't
> >>> be built on Arm=2E And the name of the file also doesn't indicate an=
y relation
> >>> to CPU management=2E
> >>
> >> xen-hptool requires xg_offline_page as it has both CPU and memory
> >> hotplug commands=2E Without building xg_offline_page it fails with
> >>
> >> xen-hptool: symbol lookup error: xen-hptool: undefined symbol:
> >> xc_mark_page_offline, version libxenguest_4=2E22=2E0
> >>
> >> when trying to do memory ops=2E
> >>
> >> Is it an acceptable behavior?
> >=20
> > I don't think so, no=2E The tool wouldn't, aiui, load at all then if b=
uilt with
> > "bindnow" enabled=2E
> >=20
> >> If so I guess we can build xg_offline page only on x86=2E
> >=20
> > We still need to, imo=2E But the tool still needs to be usable no matt=
er how
> > specifically it is built=2E It should avoid referencing xg_offline_pag=
e=2Ec
> > functions when built for non-x86=2E
>=20
> As I understand, the usage of arch-specific compile time checks is=20
> heavily discouraged in tools=2E So I don=E2=80=99t think it would be app=
roved by=20
> tools maintainers=2E Do we really need to omit this file if memory ops a=
re=20
> already getting blocked by Xen on Arm anyway?

So you are trying to modify a library and introduced untested
functionality just to be able to build a different tool? I don't think
that a good idea especially in this case where it's more than just glue
code between a binary and xen=2E

We could change the library to provide the missing symbols, but it is
probably best to keep it that way for now=2E

So, how about changing `xen-hptool` to have reduced functionality on
other platform, and keep the 'mem-*' command on x86 only? You could move
the function that implement the 'mem-*' command into a separate file,
that compile only on x86 (or more specifically when CONFIG_MIGRATE is
set) and just have a "#if defined(__i386__) || defined(__x86_64__)" in
the `main_options` array=2E

They are compile-time arch-specific check everywhere in tools=2E Arch
specific are often implemented in separated source file, this mean we
can limit the #ifdefs to a minimum and keep the code readable=2E

Thanks,


-- 
Anthony Perard | Vates XCP-ng Developer

XCP-ng & Xen Orchestra - Vate=
s solutions

web: https://vates=2Etech
---=Part.231.4aedd74cac3a3672.19dd9a9040f.4e3261a16981b028=---


From xen-devel-bounces@lists.xenproject.org Wed Apr 29 14:42:06 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 29 Apr 2026 14:42:06 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1297440.1573464 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wI66y-0001op-08; Wed, 29 Apr 2026 14:42:00 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1297440.1573464; Wed, 29 Apr 2026 14:41: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 1wI66x-0001oi-To; Wed, 29 Apr 2026 14:41:59 +0000
Received: by outflank-mailman (input) for mailman id 1297440;
 Wed, 29 Apr 2026 14:41:59 +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.19dd9b07146000f373@swg.vates.tech>)
 id 1wI66x-0001oa-1p
 for xen-devel@lists.xenproject.org; Wed, 29 Apr 2026 14:41:59 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wI66w-002YNW-3P
 for xen-devel@lists.xenproject.org; Wed, 29 Apr 2026 16:41:58 +0200
Received: from [10.42.69.5] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1) (envelope-from
 <prod-mta-13.8631fc262581453bbf619ec5b2062170.19dd9b07146000f373@swg.vates.tech>)
 id 69f218b3-bab6-0a2a0a5309dd-0a2a45059fb4-2
 for <xen-devel@lists.xenproject.org>; Wed, 29 Apr 2026 16:41:58 +0200
Received: from [185.255.28.34] (helo=prod-mta-13.swg-srv.net)
 by tlsNG-c201ff.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.1)
 (envelope-from
 <prod-mta-13.8631fc262581453bbf619ec5b2062170.19dd9b07146000f373@swg.vates.tech>)
 id 69f218b5-aaa8-0a2a45050019-b9ff1c229a4d-3
 for <xen-devel@lists.xenproject.org>; Wed, 29 Apr 2026 16:41:58 +0200
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
 19dd9b07146000f373.006 for <xen-devel@lists.xenproject.org>
 (version=TLSv1.3 cipher=TLS_AES_256_GCM_SHA384);
 Wed, 29 Apr 2026 14:41:52 +0000
Received: from [192.168.1.18] (88-175-170-134.subs.proxad.net [88.175.170.134])
 (Authenticated sender: teddy.astie)
 by mail2.vates.fr (Postfix) with ESMTPSA id AE981864B7;
 Wed, 29 Apr 2026 16:41:47 +0200 (CEST)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@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=UGqK5k1jQYtCqj3M86/fgUSdu27cnCGG4meD6wI1sT0=;
 h=from:subject:date:message-id:to:cc:mime-version:content-type:in-reply-to:references:feedback-id;
 b=OwvU0vLSDrCTMUY9WTGpIPozgqClF7cygH3ygwgtTF24zz/CMDKc2G3GohBUGp1jhvOQzmyY3
 4qaksEZztNnK/UIhy1iq9dMoXCjgzyC0sqsdLcx+KRjSzs3WZzxHaxUxJclGR/RY/lvTWaXuDue
 ibdyPjtPnPnOjO38X5cy96A59vhWsau1hdajyKSO+S/N//g4gWRusKXx6uGvCosCfwhq3s/F8e9
 emdF52xSWtvzEF9YwTlw19XFMzl4nVoKofftgdncJ/8VoO3NBngGVpHieVqPchJJ5SxxO/064wk
 TVgucWisok9WAqqQxAKf+lehF+lPmj2BIxG4GaumyQUw==
X-Zone-Loop: 23e2bb187a520cdd8e31b3641a32c6e4c8f8a0038cb3
x-campaign-type: default
x-transaction-id: a39e41b0-3301-45bf-b32a-1fa3aabdc141
x-swg-uid: 01-58bd9a84-e73b-4548-aaf3-6f522fed0953
X-Mailer: Sweego
Message-ID:
 <1777473712.8631fc262581453bbf619ec5b2062170.19dd9b07146000f373@vates.tech>
x-swg-bid: 1777473712.8631fc262581453bbf619ec5b2062170.19dd9b07146000f373
Feedback-ID: default:8631fc262581453bbf619ec5b2062170:Sweego
x-campaign-id: default
x-client-id: 8631fc262581453bbf619ec5b2062170
X-Originating-IP: [37.26.189.201]
Date: Wed, 29 Apr 2026 16:41:47 +0200
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [RFC PATCH] virtio-mmio: add xenbus probing
To: Val Packett <val@invisiblethingslab.com>,
 "Michael S. Tsirkin" <mst@redhat.com>, Jason Wang <jasowang@redhat.com>,
 Xuan Zhuo <xuanzhuo@linux.alibaba.com>, =?UTF-8?Q?Eugenio_P=C3=A9rez?=
 <eperezma@redhat.com>
Cc: =?UTF-8?Q?Marek_Marczykowski-G=C3=B3recki?=
 <marmarek@invisiblethingslab.com>, Viresh Kumar <viresh.kumar@linaro.org>,
 xen-devel@lists.xenproject.org, linux-kernel@vger.kernel.org,
 virtualization@lists.linux.dev
References: <20260429141339.74472-1-val@invisiblethingslab.com>
Content-Language: en-US
From: Teddy Astie <teddy.astie@vates.tech>
In-Reply-To: <20260429141339.74472-1-val@invisiblethingslab.com>
X-BM-Disclaimer: Yes
Content-Type: multipart/alternative; boundary="-=Part.241.1dd4a0eaebe8c9a7.19dd9b05f77.138039998489b248=-"
X-Bm-Milter-Handled: 4ffbd6c1-ee69-4e1b-aabd-f977039bd3e2
X-Bm-Transport-Timestamp: 1777473707896
X-purgate-ID: tlsNG-c201ff/1777473718-2AB68443-D1598A39/0/0
X-purgate-type: clean
X-purgate-size: 9397

---=Part.241.1dd4a0eaebe8c9a7.19dd9b05f77.138039998489b248=-
Content-Type: text/plain; charset=utf-8
Content-Transfer-Encoding: quoted-printable

Hello,

Le 29/04/2026 =C3=A0 16:18, Val Packett a =C3=A9crit=C2=A0:
> The experimental virtio-mmio support for Xen was initially developed
> on aarch64, so device trees were used to configure the mmio devices,
> with arbitrary vGIC interrupts used by the hypervisor=2E On x86_64
> however, the only reasonable way to interrupt the guest is over Xen
> event channels, which can only be acquired by children of xenbus,
> the virtual bus driven by Xen's configuration database, XenStore=2E
> It is also a more convenient and "Xen-ish" way to provision devices=2E
>=20
> Implement a xenbus client for virtio-mmio which negotiates an
> event channel and provides it as a platform IRQ to the
> virtio-mmio driver=2E
>=20
>=20
> Signed-off-by: Val Packett <val@invisiblethingslab=2Ecom>
> ---
>=20
> Hi,
>=20
> I've been working on porting virtio-mmio support from Arm to x86_64,
> with the goal of running vhost-user-gpu to power Wayland/GPU integration
> for Qubes OS=2E (I'm aware of various proposals for alternative virtio
> transports but virtio-mmio seems to be the only one that *is* upstream
> already and just Works=2E=2E) Setting up virtio-mmio through xenbus, ini=
tially
> motivated just by event channels being the only real way to get interrup=
ts
> working on HVM, turned out to generally be quite pleasant and nice :)

Is it HVM specific, or can we also make it work for PVH (we can actually=
=20
attach a ioreq server to PVH guests) ?

>=20
> I'd like to get some early feedback for this patch, particularly
> the general stuff:
>=20
> * is this whole thing acceptable in general?
> * should it be extracted into a different file?
> * (from the Xen side) any input on the xenstore keys, what goes where?
> * anything else to keep in mind?
>=20
> It does seem simple enough, so hopefully this can be done?
>=20
> The corresponding userspace-side WIP is available at:
> https://github=2Ecom/QubesOS/xen-vhost-frontend
>=20
> And the required DMOP for firing the evtchn events will be sent
> to xen-devel shortly as well=2E

Could that be done through evtchn_send (or its userland counterpart) ?

>=20
> Thanks,
> ~val
>=20
> ---
>   drivers/virtio/Kconfig       |   7 ++
>   drivers/virtio/virtio_mmio=2Ec | 177 +++++++++++++++++++++++++++++++++=
+-
>   2 files changed, 183 insertions(+), 1 deletion(-)
>=20
> diff --git a/drivers/virtio/Kconfig b/drivers/virtio/Kconfig
> index ce5bc0d9ea28=2E=2E56bc2b10526b 100644
> --- a/drivers/virtio/Kconfig
> +++ b/drivers/virtio/Kconfig
> @@ -171,6 +171,13 @@ config VIRTIO_MMIO_CMDLINE_DEVICES
>  =20
>   	 If unsure, say 'N'=2E
>  =20
> +config VIRTIO_MMIO_XENBUS
> +	bool "Memory mapped virtio devices parameter parsing"

that text seems to miss the xenbus aspect

> +	depends on VIRTIO_MMIO && XEN
> +	select XEN_XENBUS_FRONTEND
> +	help
> +	 Allow virtio-mmio devices instantiation for Xen guests via xenbus=2E
> +
>   config VIRTIO_DMA_SHARED_BUFFER
>   	tristate
>   	depends on DMA_SHARED_BUFFER
> diff --git a/drivers/virtio/virtio_mmio=2Ec b/drivers/virtio/virtio_mmio=
=2Ec
> index 595c2274fbb5=2E=2E32295284bdbf 100644
> --- a/drivers/virtio/virtio_mmio=2Ec
> +++ b/drivers/virtio/virtio_mmio=2Ec
> @@ -70,6 +70,11 @@
>   #include <uapi/linux/virtio_mmio=2Eh>
>   #include <linux/virtio_ring=2Eh>
>  =20
> +#ifdef CONFIG_VIRTIO_MMIO_XENBUS
> +#include <xen/xen=2Eh>
> +#include <xen/xenbus=2Eh>
> +#include <xen/events=2Eh>
> +#endif
>  =20
>  =20
>   /* The alignment to use between consumer and producer parts of vring=
=2E
> @@ -810,13 +815,183 @@ static struct platform_driver virtio_mmio_driver =
=3D {
>   	},
>   };
>  =20
> +#ifdef CONFIG_VIRTIO_MMIO_XENBUS
> +struct virtio_mmio_xen_info {
> +	struct resource resources[2];
> +	unsigned int evtchn;
> +	struct platform_device *pdev;
> +};
> +
> +static int virtio_mmio_xen_probe(struct xenbus_device *dev,
> +			const struct xenbus_device_id *id)
> +{
> +	int err;
> +	long long base, size;
> +	char *mem;
> +	struct virtio_mmio_xen_info *info;
> +	struct xenbus_transaction xbt;
> +
> +	/* TODO: allocate an unused address here and pass it to the host inste=
ad */
> +	err =3D xenbus_scanf(XBT_NIL, dev->otherend, "base", "0x%llx",
> +			   &base);
> +	if (err < 0) {
> +		xenbus_dev_fatal(dev, err, "reading base");
> +		return -EINVAL;
> +	}
> +
> +	mem =3D xenbus_read(XBT_NIL, dev->otherend, "size", NULL);
> +	if (XENBUS_IS_ERR_READ(mem))
> +		return PTR_ERR(mem);
> +	size =3D memparse(mem, NULL);
> +	kfree(mem);
> +
> +	info =3D kzalloc_obj(*info);
> +	if (!info) {
> +		xenbus_dev_fatal(dev, -ENOMEM, "allocating info structure");
> +		return -ENOMEM;
> +	}
> +
> +	info->resources[0]=2Eflags =3D IORESOURCE_MEM;
> +	info->resources[0]=2Estart =3D base;
> +	info->resources[0]=2Eend =3D base + size - 1;
> +
> +	err =3D xenbus_alloc_evtchn(dev, &info->evtchn);
> +	if (err) {
> +		xenbus_dev_fatal(dev, err, "xenbus_alloc_evtchn");
> +		goto error_info;
> +	}
> +
> +	err =3D bind_evtchn_to_irq(info->evtchn);
> +	if (err <=3D 0) {
> +		xenbus_dev_fatal(dev, err, "bind_evtchn_to_irq");
> +		goto error_evtchan;
> +	}
> +
> +	info->resources[1]=2Eflags =3D IORESOURCE_IRQ;
> +	info->resources[1]=2Estart =3D info->resources[1]=2Eend =3D err;
> +
> +again:
> +	err =3D xenbus_transaction_start(&xbt);
> +	if (err) {
> +		xenbus_dev_fatal(dev, err, "starting transaction");
> +		goto error_irq;
> +	}
> +
> +	err =3D xenbus_printf(xbt, dev->nodename, "event-channel", "%u",
> +			    info->evtchn);
> +	if (err) {
> +		xenbus_transaction_end(xbt, 1);
> +		xenbus_dev_fatal(dev, err, "%s", "writing event-channel");
> +		goto error_irq;
> +	}
> +
> +	err =3D xenbus_transaction_end(xbt, 0);
> +	if (err) {
> +		if (err =3D=3D -EAGAIN)
> +			goto again;
> +		xenbus_dev_fatal(dev, err, "completing transaction");
> +		goto error_irq;
> +	}
> +
> +	dev_set_drvdata(&dev->dev, info);
> +	xenbus_switch_state(dev, XenbusStateInitialised);
> +	return 0;
> +
> +error_irq:
> +	unbind_from_irqhandler(info->resources[1]=2Estart, info);
> +error_evtchan:
> +	xenbus_free_evtchn(dev, info->evtchn);
> +error_info:
> +	kfree(info);
> +
> +	return err;
> +}
> +
> +static void virtio_mmio_xen_backend_changed(struct xenbus_device *dev,
> +				   enum xenbus_state backend_state)
> +{
> +	struct virtio_mmio_xen_info *info =3D dev_get_drvdata(&dev->dev);
> +
> +	switch (backend_state) {
> +	case XenbusStateInitialising:
> +	case XenbusStateInitWait:
> +	case XenbusStateInitialised:
> +	case XenbusStateReconfiguring:
> +	case XenbusStateReconfigured:
> +	case XenbusStateUnknown:
> +		break;
> +
> +	case XenbusStateConnected:
> +		if (dev->state !=3D XenbusStateInitialised) {
> +			dev_warn(&dev->dev, "state %d on connect", dev->state);
> +			break;
> +		}
> +		info->pdev =3D platform_device_register_resndata(&dev->dev,
> +				"virtio-mmio", PLATFORM_DEVID_AUTO,
> +				info->resources, ARRAY_SIZE(info->resources), NULL, 0);
> +		xenbus_switch_state(dev, XenbusStateConnected);
> +		break;
> +
> +	case XenbusStateClosed:
> +		if (dev->state =3D=3D XenbusStateClosed)
> +			break;
> +		fallthrough;	/* Missed the backend's Closing state=2E */
> +	case XenbusStateClosing:
> +		platform_device_unregister(info->pdev);
> +		xenbus_switch_state(dev, XenbusStateClosed);
> +		break;
> +
> +	default:
> +		xenbus_dev_fatal(dev, -EINVAL, "saw state %d at frontend",
> +				 backend_state);
> +		break;
> +	}
> +}
> +

In some way, we're defining a new "PV driver" which is a virtio-mmio=20
one, I guess we can eventually specific some form of protocol that=20
backend/frontend would need to follow ?

> +static void virtio_mmio_xen_remove(struct xenbus_device *dev)
> +{
> +	struct virtio_mmio_xen_info *info =3D dev_get_drvdata(&dev->dev);
> +
> +	kfree(info);
> +	dev_set_drvdata(&dev->dev, NULL);
> +}
> +
> +static const struct xenbus_device_id virtio_mmio_xen_ids[] =3D {
> +	{ "virtio" },
> +	{ "" },
> +};
> +
> +static struct xenbus_driver virtio_mmio_xen_driver =3D {
> +	=2Eids			=3D virtio_mmio_xen_ids,
> +	=2Eprobe			=3D virtio_mmio_xen_probe,
> +	=2Eotherend_changed	=3D virtio_mmio_xen_backend_changed,
> +	=2Eremove			=3D virtio_mmio_xen_remove,
> +};
> +#endif
> +
>   static int __init virtio_mmio_init(void)
>   {
> -	return platform_driver_register(&virtio_mmio_driver);
> +	int ret;
> +
> +	ret =3D platform_driver_register(&virtio_mmio_driver);
> +	if (ret)
> +		return ret;
> +
> +#ifdef CONFIG_VIRTIO_MMIO_XENBUS
> +	if (xen_domain())
> +		ret =3D xenbus_register_frontend(&virtio_mmio_xen_driver);
> +#endif> +
> +	return ret;
>   }
>  =20
>   static void __exit virtio_mmio_exit(void)
>   {
> +#ifdef CONFIG_VIRTIO_MMIO_XENBUS
> +	if (xen_domain())
> +		xenbus_unregister_driver(&virtio_mmio_xen_driver);
> +#endif
> +
>   	platform_driver_unregister(&virtio_mmio_driver);
>   	vm_unregister_cmdline_devices();
>   }



-- 
Teddy Astie | Vates XCP-ng Developer

XCP-ng & Xen Orchestra - Vates s=
olutions

web: https://vates=2Etech
---=Part.241.1dd4a0eaebe8c9a7.19dd9b05f77.138039998489b248=---


From xen-devel-bounces@lists.xenproject.org Wed Apr 29 14:42:34 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 29 Apr 2026 14:42:34 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1297448.1573473 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wI67W-0002G1-7y; Wed, 29 Apr 2026 14:42:34 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1297448.1573473; Wed, 29 Apr 2026 14:42: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 1wI67W-0002Fu-5R; Wed, 29 Apr 2026 14:42:34 +0000
Received: by outflank-mailman (input) for mailman id 1297448;
 Wed, 29 Apr 2026 14:42:33 +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 1wI67V-0002Fm-Aq
 for xen-devel@lists.xenproject.org; Wed, 29 Apr 2026 14:42:33 +0000
Received: from xenbits.xenproject.org ([104.239.192.120])
 by mail.xenproject.org with esmtp (Exim 4.96)
 (envelope-from <julien@xen.org>) id 1wI67U-007gt0-2n;
 Wed, 29 Apr 2026 14:42:32 +0000
Received: from [15.248.3.89] (helo=[10.45.29.225])
 by xenbits.xenproject.org with esmtpsa (TLS1.3) tls
 TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (Exim 4.96)
 (envelope-from <julien@xen.org>) id 1wI67U-0083hw-1o;
 Wed, 29 Apr 2026 14:42: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=xen.org;
	s=20200302mail; h=Content-Transfer-Encoding:Content-Type:In-Reply-To:From:
	References:Cc:To:Subject:MIME-Version:Date:Message-ID;
	bh=VMjKyD+6u8SReAC3Yu69HgVoOG7voI+4oB0A2F5LIWA=; b=Zq6zWXx2A10N1WbiZ0JOdzYcvS
	H50iQ+jqBzG/+FPVPc+mdDr/F4QDa7kwZLGImYBPqQ8WCt8jXT+sNWaDeZk/rYKKSgGRX3Rl0zHx+
	G7MPVEl+YsV/vu7kx7+I/MhWc/B+QBwJ3aOlR5i9wvFqzkx4oahSo2+k4q+nPGb8/zfQ=;
Message-ID: <c43983c9-35cf-4859-9ad4-6d46b731bb15@xen.org>
Date: Wed, 29 Apr 2026 15:42:30 +0100
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH] xen/arm: skip holes in physical address space when
 setting up frametable
Content-Language: en-GB
To: "Orzel, Michal" <michal.orzel@amd.com>, xen-devel@lists.xenproject.org
Cc: Stefano Stabellini <sstabellini@kernel.org>,
 Bertrand Marquis <bertrand.marquis@arm.com>,
 Volodymyr Babchuk <Volodymyr_Babchuk@epam.com>,
 Luca Fancellu <Luca.Fancellu@arm.com>
References: <20260417091124.39552-1-michal.orzel@amd.com>
 <6a43af84-ca86-41f2-b58d-57be5baf49de@xen.org>
 <d023e89c-6670-4604-92db-6796d200a988@amd.com>
From: Julien Grall <julien@xen.org>
In-Reply-To: <d023e89c-6670-4604-92db-6796d200a988@amd.com>
Content-Type: text/plain; charset=UTF-8; format=flowed
Content-Transfer-Encoding: 7bit

Hi Michal,

On 22/04/2026 09:25, Orzel, Michal wrote:
> 
> 
> On 22/04/2026 09:01, Julien Grall wrote:
>> Hi Michal,
>>
>> On 17/04/2026 10:11, Michal Orzel wrote:
>>> Refactor setup_frametable_mappings() into init_frametable(), modeled
>>> after x86's implementation. Instead of mapping one contiguous frametable
>>> covering ram_start to ram_end (including holes), iterate the
>>> pdx_group_valid bitmap to allocate and map frametable memory only for
>>> valid PDX groups, skipping gaps in the physical address space. At the
>>> moment we don't really take into account pdx_group_valid bitmap.
>>>
>>> This reduces memory consumption on systems with sparse RAM layouts by
>>> not allocating frametable entries for non-existent memory regions.
>>>
>>> A file-local pdx_to_page() override is needed because the generic macro
>>> in xen/include/xen/pdx.h does not account for ARM's non-zero
>>> frametable_base_pdx.
>>
>> Can you provide a bit more details? I am a bit concerned that this could
>> result to subttle bug in the future if code within mm.c is expecting the
>> original behavior. It would be preferable if the change is either for
>> everyone on Arm or the function is renamed to avoid any clash.
> The generic pdx_to_page macro does not account for offset which is something I
> mentioned in the footer and I'm willing to work on in the future.

Sorry I missed the comment in the footer. But if the function is broken, 
then why can't we implement pdx_to_page() correctly now? I understand 
that ...

  As of today,
> this macro is *unused* on Arm. It's only used by x86 in some special big mem
> related scenario. Using generic pdx_to_page on Arm would be wrong, so a future
> patch doing that would be wrong (the fact that this patch adds a local redefine
> does not change anything). Do we need a rename for a local redefine in a file
> that is only related to frametable? Maybe a comment and a TODO would be ok?

... this is not meant to be used by Arm today. But given this is used in 
the page list, it is definitely not obvious that it is broken.

The alternative is to protect/move pdx_to_page() in x86. But I don't 
know much churn this would involve.

> 
>>
>> [...]
>>
>>> +void __init init_frametable(paddr_t ram_start)
>>> +{
>>> +    unsigned int sidx, nidx, max_idx;
>>>    
>>>        /*
>>>         * The size of paddr_t should be sufficient for the complete range of
>>> @@ -26,24 +47,34 @@ void __init setup_frametable_mappings(paddr_t ps, paddr_t pe)
>>>        BUILD_BUG_ON((sizeof(paddr_t) * BITS_PER_BYTE) < PADDR_BITS);
>>>        BUILD_BUG_ON(sizeof(struct page_info) != PAGE_INFO_SIZE);
>>>    
>>> -    if ( frametable_size > FRAMETABLE_SIZE )
>>> -        panic("The frametable cannot cover the physical region %#"PRIpaddr" - %#"PRIpaddr"\n",
>>> -              ps, pe);
>>> +    max_idx = DIV_ROUND_UP(max_pdx, PDX_GROUP_COUNT);
>>> +    frametable_base_pdx = mfn_to_pdx(maddr_to_mfn(ram_start));
>>>    
>>> -    frametable_base_pdx = mfn_to_pdx(maddr_to_mfn(ps));
>>> -    /* Round up to 2M or 32M boundary, as appropriate. */
>>> -    frametable_size = ROUNDUP(frametable_size, mapping_size);
>>> -    base_mfn = alloc_boot_pages(frametable_size >> PAGE_SHIFT, 32<<(20-12));
>>> +    /*
>>> +     * pdx_to_page(pdx_s) in init_frametable_chunk must be page-aligned
>>> +     * for map_pages_to_xen(). Aligning to PDX_GROUP_COUNT guarantees this
>>> +     * because PDX_GROUP_COUNT * sizeof(page_info) is always a multiple of
>>> +     * PAGE_SIZE by construction.
>>> +     */
>>> +    frametable_base_pdx = ROUNDDOWN(frametable_base_pdx, PDX_GROUP_COUNT);
>>>    
>>> -    rc = map_pages_to_xen(FRAMETABLE_VIRT_START, base_mfn,
>>> -                          frametable_size >> PAGE_SHIFT,
>>> -                          PAGE_HYPERVISOR_RW | _PAGE_BLOCK);
>>> -    if ( rc )
>>> -        panic("Unable to setup the frametable mappings.\n");
>>> +    if ( (max_pdx - frametable_base_pdx) > FRAMETABLE_NR )
>>> +        panic("Frametable too small\n");
>>> +
>>> +    for ( sidx = (frametable_base_pdx / PDX_GROUP_COUNT); ; sidx = nidx )
>>> +    {
>>> +        unsigned int eidx;
>>> +
>>> +        eidx = find_next_zero_bit(pdx_group_valid, max_idx, sidx);
>>> +        nidx = find_next_bit(pdx_group_valid, max_idx, eidx);
>>> +
>>> +        if ( nidx >= max_idx )
>>> +            break;
>>> +
>>> +        init_frametable_chunk(sidx * PDX_GROUP_COUNT, eidx * PDX_GROUP_COUNT);
>>
>> The function will do a round-up the mapping to either a 2MiB or 32MiB
>> aligned size. This means we could potentially cover the previous mapped
>> region or the next one. I can't seem to find any code to cover this
>> use-case. What did I miss?
> Hmm, I think I calculated something wrong here. Anyway, how about using 2MB
> mapping size all the time? PDX group size is 2MB,

Looking at the code, it seems to be based on SECOND_SHIFT which 
technically depends on the page granularity. Even though Xen supports 
only 4KiB, we are trying to avoid making such assumption or add least 
adding a BUILD_BUG_ON() (in this case, I would consider that 
PDX_GROUP_COUNT is always 2MiB or SECOND_SHIFT).

> in-loop chunks are multiple of
> 2MB, there is no roundup needed - zero overshoot. The last chunk may have ~2MB
> overshoot but it does not matter as there is nothing after it to conflict with.
> The downside is more TLB pressure.

I am a bit warry to modify the frametable allocation method because it 
is used fairly often in Xen. Would it be possible to hence the loop to 
detect contiguous chunk and decide the size allocation based on the chunk?

> 
> Alternatively, we could reduce the mapping size closer to boundaries (x86
> choice) but that would require a bit more work.

This would technically have the same downside as above.

Cheers,

-- 
Julien Grall



From xen-devel-bounces@lists.xenproject.org Wed Apr 29 15:03:11 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 29 Apr 2026 15:03:11 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1297474.1573483 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wI6RD-0005iN-LK; Wed, 29 Apr 2026 15:02:55 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1297474.1573483; Wed, 29 Apr 2026 15:02: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 1wI6RD-0005iG-Ia; Wed, 29 Apr 2026 15:02:55 +0000
Received: by outflank-mailman (input) for mailman id 1297474;
 Wed, 29 Apr 2026 15:02:54 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92) id 1wI6RB-0005iA-Ir
 for xen-devel@lists.xenproject.org; Wed, 29 Apr 2026 15:02:53 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wI6R9-003Ihf-07
 for xen-devel@lists.xenproject.org; Wed, 29 Apr 2026 17:02:52 +0200
Received: from [10.42.69.7] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <Luca.Fancellu@arm.com>)
 id 69f21d93-5cb7-0a2a0a5109dd-0a2a45079914-20
 for <xen-devel@lists.xenproject.org>; Wed, 29 Apr 2026 17:02:51 +0200
Received: from [52.101.65.43]
 (helo=DU2PR03CU002.outbound.protection.outlook.com)
 by tlsNG-ef75cf.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.1)
 (envelope-from <Luca.Fancellu@arm.com>)
 id 69f21d9b-229c-0a2a45070019-3465412b8ab2-3
 for <xen-devel@lists.xenproject.org>; Wed, 29 Apr 2026 17:02:51 +0200
Received: from DUZPR01CA0030.eurprd01.prod.exchangelabs.com
 (2603:10a6:10:46b::19) by DB8PR08MB5322.eurprd08.prod.outlook.com
 (2603:10a6:10:114::17) with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9870.20; Wed, 29 Apr
 2026 15:02:47 +0000
Received: from DU6PEPF0000B61B.eurprd02.prod.outlook.com
 (2603:10a6:10:46b:cafe::a5) by DUZPR01CA0030.outlook.office365.com
 (2603:10a6:10:46b::19) with Microsoft SMTP Server (version=TLS1_3,
 cipher=TLS_AES_256_GCM_SHA384) id 15.20.9846.28 via Frontend Transport; Wed,
 29 Apr 2026 15:02:47 +0000
Received: from outbound-uk1.az.dlp.m.darktrace.com (4.158.2.129) by
 DU6PEPF0000B61B.mail.protection.outlook.com (10.167.8.132) with Microsoft
 SMTP Server (version=TLS1_3, cipher=TLS_AES_256_GCM_SHA384) id 15.20.9846.18
 via Frontend Transport; Wed, 29 Apr 2026 15:02:47 +0000
Received: from DU2PR08MB7272.eurprd08.prod.outlook.com (2603:10a6:10:2d7::16)
 by DB3PR08MB8986.eurprd08.prod.outlook.com (2603:10a6:10:42b::7) with
 Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9846.26; Wed, 29 Apr
 2026 15:01:42 +0000
Received: from DU2PR08MB7272.eurprd08.prod.outlook.com
 ([fe80::5d34:206f:373:a323]) by DU2PR08MB7272.eurprd08.prod.outlook.com
 ([fe80::5d34:206f:373:a323%6]) with mapi id 15.20.9846.025; Wed, 29 Apr 2026
 15:01: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=arm.com header.i="@arm.com" header.h="From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck"; dkim=pass header.s=selector1 header.d=arm.com header.i="@arm.com" header.h="From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck"
ARC-Seal: i=2; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=pass;
 b=KDCUOSmfmIOAftBI2DrnNnlfjbQJ8MSPEbbvdqHPIKy+Na/pbXVgPSkuqLXQoDaVjJimZC86G+LVAvzwXb4aSCAmW18LU43/VrsI1O63iyu3oLg9Ffl9QmxGPDaGgLbvmWp3ECe8KC9uq28wqFu3209D6NAJwHOWig/2BL9D8nYJJiJVzyncp9gIj71kyrLiwxwaERhJnpv+Vc3SLVd0gAFGXZYon8jfoLmxDFKrnX5XKoS8/O3FtUtnjdq9FNUj1rGKmaU3W1nhuzqxy3EVoFoGfk4GJxs9SkfWNGSSfvsG6kOJQS97momQaxU2h6dkWc4s/BZbUqMQyU41Vwqgzw==
ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com;
 s=arcselector10001;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1;
 bh=9g9N2GMis8fI6Tuw4uPKtWmeSCOQQl1uVZlMUHpOi/o=;
 b=oOE7I1na09nUZG10icFiWYm/SXFfw/aqcPAv6b4fL9rv0dmMtZOuNKGApMooxr/KjyT8jtebdH2cMWXBL9wahjJRLB15bW9vG0Uq1JV6DKc1OXVUGMz/WkgXW0RYSxEKq2OSr22Ta4UVxkNgx5CkUrborCzC35Dpp9EjavZGuyu8NoaQw63frWy3WRkXAb6lKh2Cd/+jxoDgmvICW93Sv6ZpPKwONkkXJHGqZIi8/bmddsPfg/ALh5OFxIkzDtZM/RxUKJXlTjgDloupxfRAFy0hae8zORrPIFZxPiXIDSsEyHpTcyZZU94YPEwPbNLp50MVId6N4eY1rxsVZX4etg==
ARC-Authentication-Results: i=2; mx.microsoft.com 1; spf=pass (sender ip is
 4.158.2.129) smtp.rcpttodomain=gmail.com smtp.mailfrom=arm.com; dmarc=pass
 (p=none sp=none pct=100) action=none header.from=arm.com; dkim=pass
 (signature was verified) header.d=arm.com; arc=pass (0 oda=1 ltdi=1
 spf=[1,1,smtp.mailfrom=arm.com] dkim=[1,1,header.d=arm.com]
 dmarc=[1,1,header.from=arm.com])
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=arm.com; s=selector1;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck;
 bh=9g9N2GMis8fI6Tuw4uPKtWmeSCOQQl1uVZlMUHpOi/o=;
 b=WWIXyGnYA6S35tkLwcvbL635ni5p14Db/ciKDW80M8yDAB1+W/56UVCf77O8j9IxhROHl6QShqvvWO0jLhbimB6X+j0oEbqx53Y8zpA3vdgqchVrlJMnPkL478vA5Ruqqt7CtygML0esWS17s+6b0s2NZMOcxOVSMQGiM2Jfb9Q=
X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 4.158.2.129)
 smtp.mailfrom=arm.com; dkim=pass (signature was verified)
 header.d=arm.com;dmarc=pass action=none header.from=arm.com;
Received-SPF: Pass (protection.outlook.com: domain of arm.com designates
 4.158.2.129 as permitted sender) receiver=protection.outlook.com;
 client-ip=4.158.2.129; helo=outbound-uk1.az.dlp.m.darktrace.com; pr=C
ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none;
 b=b8FN1wUDR1Bw/lXiyLBQhdjLIfRezfKtWtaxxj2Sg9NAnU+oZtvw1K4YpYqstHgZRIu+MmoxUoVhKxRaaqujEse2qRXsbw0M5I/U8J3wSSwEq+/+UoQZYPH+juEdJzhhOtp3L7G1tlRaZ7+RmoikBWI9Z7lrfMwW6n7vLZAILRymlp3j8zfU0jr4ONOA+tJHrEBj/I5WuQj730oUoOmfAM7/96FzTzPch+UZimD4OWyikxqDb9RTrE2ihHO/M7e/YHbVHGV377WhkT1e3ga2sY8L+1rSaz2GEBZcTBeRGIwsQa4LzDRFbMhlUDj5JyRF4sDwDcmqU3O3ckITAn+AKQ==
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com;
 s=arcselector10001;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1;
 bh=9g9N2GMis8fI6Tuw4uPKtWmeSCOQQl1uVZlMUHpOi/o=;
 b=y3Sc/ld3wYNF6AhUcndndfFPo/ix4E6eL9yDxSsmlhG8ix5iHZRFwPKI4YbtOswASR3Yc+82GDlKMqJikThs/MySiSE7UsCS6JV9Qni1UWRJhvviJUBi1r3CAjuPc4kzNg9JgmiJkhwmBNNuytvTPu0OxH5sRaHFN5BcTTHhbaxiKlVkkWSS5Go7504dwZq/LeK+Q2T5w22AuG40R8UPRoWqRpdr0OPT38oNUr+Oma632oXgHcfm6+S7iNkY1RsoKffQz2/S1iGd2vDSKEsce72ci8CfnxpZSzPjeYUO87ZwhnsYEeCWUl6TxmYolOUOAkK6Aq5IIwO/hcYeLjC56w==
ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass
 smtp.mailfrom=arm.com; dmarc=pass action=none header.from=arm.com; dkim=pass
 header.d=arm.com; arc=none
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=arm.com; s=selector1;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck;
 bh=9g9N2GMis8fI6Tuw4uPKtWmeSCOQQl1uVZlMUHpOi/o=;
 b=WWIXyGnYA6S35tkLwcvbL635ni5p14Db/ciKDW80M8yDAB1+W/56UVCf77O8j9IxhROHl6QShqvvWO0jLhbimB6X+j0oEbqx53Y8zpA3vdgqchVrlJMnPkL478vA5Ruqqt7CtygML0esWS17s+6b0s2NZMOcxOVSMQGiM2Jfb9Q=
From: Luca Fancellu <Luca.Fancellu@arm.com>
To: Oleksii Kurochko <oleksii.kurochko@gmail.com>
CC: "xen-devel@lists.xenproject.org" <xen-devel@lists.xenproject.org>, Romain
 Caritey <Romain.Caritey@microchip.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.pau@citrix.com>
Subject: Re: [PATCH v4 03/11] xen: move declaration of fw_unreserved_regions()
 to common header
Thread-Topic: [PATCH v4 03/11] xen: move declaration of
 fw_unreserved_regions() to common header
Thread-Index: AQHc1xwVjOxLpqMzhEOO6rs5XF40z7X2I8+A
Date: Wed, 29 Apr 2026 15:01:41 +0000
Message-ID: <3C789DAA-D1EB-4EA0-AFC3-3BC225BACACC@arm.com>
References: <cover.1777303844.git.oleksii.kurochko@gmail.com>
 <2c26370460f0380bed128cbb59de4eacd77a8456.1777303844.git.oleksii.kurochko@gmail.com>
In-Reply-To:
 <2c26370460f0380bed128cbb59de4eacd77a8456.1777303844.git.oleksii.kurochko@gmail.com>
Accept-Language: en-GB, en-US
Content-Language: en-US
X-MS-Has-Attach:
X-MS-TNEF-Correlator:
x-mailer: Apple Mail (2.3826.700.81.1.6)
Authentication-Results-Original: dkim=none (message not signed)
 header.d=none;dmarc=none action=none header.from=arm.com;
x-ms-traffictypediagnostic:
	DU2PR08MB7272:EE_|DB3PR08MB8986:EE_|DU6PEPF0000B61B:EE_|DB8PR08MB5322:EE_
X-MS-Office365-Filtering-Correlation-Id: 955788ae-f57f-41e6-94a4-08dea6006029
x-checkrecipientrouted: true
nodisclaimer: true
X-MS-Exchange-SenderADCheck: 1
X-MS-Exchange-AntiSpam-Relay: 0
X-Microsoft-Antispam-Untrusted:
 BCL:0;ARA:13230040|376014|7416014|366016|1800799024|38070700021|22082099003|18002099003|56012099003;
X-Microsoft-Antispam-Message-Info-Original:
 UvkQGqm7DZuSWGPlig4Ee9BdqiTDj5XKWVI2uIwE8VQIV8vG0U1UzB1hMFjJwQFDEfTGpR3/D0Rp+uNTmCRv292lZhrllyVPMMzEDOzvP+F/cT7K7mwJkIczBXus5u5TB24xunagYWrxZQ90os9y9RGStb11mipCb0uOsWTsmTVsg36usD1bSLnURNKJWSIhKVJE6UX0CvNG0ciLunXgDBvONe5DP5HiwvEZZHBS5zDpmbS3i70jCpAVu6BqFHfmkZQvxI3kPIeffXaGdQP65rjBcCCxdudqYS5pURmhnU3nJxp7tUAhdzv80ji8T4W9X9I4TqeLbJGJaPIaO9X2CN8h+GamjUC9+1Gedn7QJ8s36/rYIU7HDWYcDDMPd+joxUcIzXisgqNfESLMD/phAKvnNbNr2YLJIlrg4Hkf08FgxxVPdaPKVdT8GRy1Q4fOqIkYMvKe5+l9UT+6X4BaWIktKScn+yvyCj0CgRL75j5nbFocTF8g/bce2a0muSVWRaTnZ2PDd3lwI8Ndcrnv6l8B41EQIrqiLJ2lAO3vxIHRRnWsmTu5CibHXeBmktRpnbH+QYvOLFllpeGxGzSWh1T5+XA9ujfE+TcgSNHUkWbMKxhThjwNy29472VuDvKBAP1glloXMqyMa6zc/S4tPAyiIpOZK6bP926UnboGv5W34onGybXkZTomulpHVEBpFZyWovwcA/jFFX/Tojr3eQtp9y2NmBOqOZgOM79eqgUKtNZ5L2IRZ28w4yBPCEcBd7IcwbFwZuRgYY8PCr30Yu3qEQW/gd0akOPlawQII1g=
X-Forefront-Antispam-Report-Untrusted:
 CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:DU2PR08MB7272.eurprd08.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(376014)(7416014)(366016)(1800799024)(38070700021)(22082099003)(18002099003)(56012099003);DIR:OUT;SFP:1101;
Content-Type: text/plain; charset="iso-8859-1"
Content-ID: <DDEB8C2394A3A44F9FCBA03C706228E0@eurprd08.prod.outlook.com>
Content-Transfer-Encoding: quoted-printable
MIME-Version: 1.0
X-Exchange-RoutingPolicyChecked:
 PJLtewidKDcMDr72GtLjJp71/pEXez64NhI5/xfJnKSjq8UEDozs1WKiu0t2XjdU1uNmXxqJTv2b8KN88QBPtfA2/rmvIHDd3S0A6oeCGKJUSPhdwL+8tdCbXIw41NSTXUH1IN3/m7Pkb8tonvAgwit0LdTlgIMcFS6XliWS7Wd154emZD05D/fXJlBxbWA557ykIIcHdoF5Kpnw5UVbvMCCu5re2eqKrVxUwB7JAuWeR70jZLp3NlzQoQT76FOdxeCGsERkP6EM63Ld2piJm/IDm5Ha2YU+fnxb7JWjws+s3lTt/0MmU6Rfsy7jD9F+yNQhi4f5n3V//vycWkfDBw==
X-MS-Exchange-Transport-CrossTenantHeadersStamped: DB3PR08MB8986
X-EOPAttributedMessage: 0
X-MS-Exchange-Transport-CrossTenantHeadersStripped:
 DU6PEPF0000B61B.eurprd02.prod.outlook.com
X-MS-PublicTrafficType: Email
X-MS-Office365-Filtering-Correlation-Id-Prvs:
	aa3cb5c4-ab76-453d-0f73-08dea60038f6
X-Microsoft-Antispam:
	BCL:0;ARA:13230040|36860700016|1800799024|14060799003|376014|7416014|35042699022|82310400026|22082099003|56012099003|18002099003;
X-Microsoft-Antispam-Message-Info:
	jngf5z0k1T8s1kUCA1zz9l6V05Od8C2aXH5A3i5dSZrnU5W9qmgnWS6dMBcca2zmJANp1FRB4iBycOVS1K09PuAyUuqPy7WzC9tySHVdPMK68xDDha5aSriV0WG7gi4IM8m9ojb+XSeB9DPF4C+HUKFl79yHA8Pg/TKm4C+wS5vIzfd6wHaYGXU+exTCLE4ciDUN4iyhZYRSgrH9fle+UwdwzK4BE1BTrhPzlX1QqKlsZFPIePII5pwJT6N9aToTy2qWzqWia/D7J1eNb9mIJCh8iHUNcJP3WIrE5UYfKgoYgh4TcFhEUWyoZUIqAKTkD5PbjCJmtBhwzzHJBYjP8ZsTUmDvfJtwWExfoFroeKhSoFjrS1gzw+Iq69WGSVVaYFPeA28ikg9Wah6ytGE7XeNDMFlo11WTB4PvVp6AeCQsusytoA2d1HcuhoJmFMp2p7dJKjCh9pQWt2ucpJUg1XbXwLX/3sUYrb6wPVQJOC9rLpf51lHpGg47+3ZP3zZqiXVcK7E8tY8RbJxg4WJ6hys1CL/Lg3aiUFVy22mKC8krwAnG0nyArq8UdTMIDwGh0DCi/HjNldA8V9Xa/JHOqgGFWBZ4MZKr5ihudLcmDdpwFbquhrz+r9Xa1qQGlCzUrhaavyWCXRzp9IEKBU9Ql3d5P0QGTM6uJXf2m3+9jptQxwwEIiZYp1TYrjLSpEY566rqyE8H2qYnsoltHAdVDvmc/nV4BTVdeHzXH+GgLWFsVszdaHzHl0+GywS6YYjs60qTvIyMA8wkavynHdSqmg==
X-Forefront-Antispam-Report:
	CIP:4.158.2.129;CTRY:GB;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:outbound-uk1.az.dlp.m.darktrace.com;PTR:InfoDomainNonexistent;CAT:NONE;SFS:(13230040)(36860700016)(1800799024)(14060799003)(376014)(7416014)(35042699022)(82310400026)(22082099003)(56012099003)(18002099003);DIR:OUT;SFP:1101;
X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1
X-MS-Exchange-AntiSpam-MessageData-0:
	sqA9rM47fKbWVj/99x9ay9aNg086u39YB5W7xRE2rLx1cXLtAJ8KSFaCXw2c5l03vPhyCCq80d4cEFHepsEnb8rsFrH7n/kRIAe5+yp691uIAbiJ6l+v1iElU7AONYV24EC5LS90U5OR/5RWL9zSFK50tE6JDc6WpTGX4B7zwYBG663bLaydYitgcg2t1SACNkG7f5MH0Y0YAdhk6rnnH2essLXTAmOHF1w/ITbpzqpCgwl2LrE87ZBNVlgkNQdbb5OqcVhKrCw17tTlpHDanEA7+gcIbRpePF7SbMNEaLseP0AGpMtH3E/UCfppBv7Nzng+j2KJJLd2z0BZpXWNI47xY2duO/KnEFSUDOcvy0jFpCHSQEw5+QdVtHsIEdG8GtUE4HhgsnnZx803Yfvgxxj851mPDmehe8nXkSZo4Nv64YKBh26ReT6zVIHkU0Pa
X-OriginatorOrg: arm.com
X-MS-Exchange-CrossTenant-OriginalArrivalTime: 29 Apr 2026 15:02:47.5694
 (UTC)
X-MS-Exchange-CrossTenant-Network-Message-Id: 955788ae-f57f-41e6-94a4-08dea6006029
X-MS-Exchange-CrossTenant-Id: f34e5979-57d9-4aaa-ad4d-b122a662184d
X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=f34e5979-57d9-4aaa-ad4d-b122a662184d;Ip=[4.158.2.129];Helo=[outbound-uk1.az.dlp.m.darktrace.com]
X-MS-Exchange-CrossTenant-AuthSource:
	DU6PEPF0000B61B.eurprd02.prod.outlook.com
X-MS-Exchange-CrossTenant-AuthAs: Anonymous
X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem
X-MS-Exchange-Transport-CrossTenantHeadersStamped: DB8PR08MB5322
X-purgate-ID: tlsNG-ef75cf/1777474971-AC563C48-8C408DDE/10/73395122804
X-purgate-type: spam
X-purgate-size: 467

Hi Oleksii,

> On 28 Apr 2026, at 15:33, Oleksii Kurochko <oleksii.kurochko@gmail.com> w=
rote:
>=20
> Since the implementation of fw_unreserved_regions() is in common code, mo=
ve
> its declaration to xen/bootinfo.h.
>=20
> Signed-off-by: Oleksii Kurochko <oleksii.kurochko@gmail.com>
> ---
> Changes in v2-v4:
> - Nothing changed. Only rebase.
> ---
> ---

looks ok to me.

Reviewed-by: Luca Fancellu <luca.fancellu@arm.com>

Cheers,
Luca




From xen-devel-bounces@lists.xenproject.org Wed Apr 29 15:11:15 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 29 Apr 2026 15:11:15 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1297486.1573492 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wI6ZD-0007eL-IE; Wed, 29 Apr 2026 15:11:11 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1297486.1573492; Wed, 29 Apr 2026 15:11: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 1wI6ZD-0007eE-FR; Wed, 29 Apr 2026 15:11:11 +0000
Received: by outflank-mailman (input) for mailman id 1297486;
 Wed, 29 Apr 2026 15:11:10 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92) id 1wI6ZC-0007e8-Bu
 for xen-devel@lists.xenproject.org; Wed, 29 Apr 2026 15:11:10 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wI6ZB-009I0r-KI
 for xen-devel@lists.xenproject.org; Wed, 29 Apr 2026 17:11:09 +0200
Received: from [10.42.69.5] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <Luca.Fancellu@arm.com>)
 id 69f21f77-e002-0a2a0a5209dd-0a2a4505d79c-42
 for <xen-devel@lists.xenproject.org>; Wed, 29 Apr 2026 17:11:09 +0200
Received: from [40.107.159.12]
 (helo=OSPPR02CU001.outbound.protection.outlook.com)
 by tlsNG-c201ff.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.1)
 (envelope-from <Luca.Fancellu@arm.com>)
 id 69f21f8c-aaa8-0a2a45050019-286b9f0ce12f-4
 for <xen-devel@lists.xenproject.org>; Wed, 29 Apr 2026 17:11:08 +0200
Received: from CWLP265CA0396.GBRP265.PROD.OUTLOOK.COM (2603:10a6:400:1d6::15)
 by AS4PR08MB7854.eurprd08.prod.outlook.com (2603:10a6:20b:51d::5)
 with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9846.26; Wed, 29 Apr
 2026 15:11:04 +0000
Received: from AM1PEPF000252DE.eurprd07.prod.outlook.com
 (2603:10a6:400:1d6:cafe::57) by CWLP265CA0396.outlook.office365.com
 (2603:10a6:400:1d6::15) with Microsoft SMTP Server (version=TLS1_3,
 cipher=TLS_AES_256_GCM_SHA384) id 15.20.9846.26 via Frontend Transport; Wed,
 29 Apr 2026 15:11:04 +0000
Received: from outbound-uk1.az.dlp.m.darktrace.com (4.158.2.129) by
 AM1PEPF000252DE.mail.protection.outlook.com (10.167.16.56) with Microsoft
 SMTP Server (version=TLS1_3, cipher=TLS_AES_256_GCM_SHA384) id 15.20.9846.18
 via Frontend Transport; Wed, 29 Apr 2026 15:11:03 +0000
Received: from DU2PR08MB7272.eurprd08.prod.outlook.com (2603:10a6:10:2d7::16)
 by VI0PR08MB10655.eurprd08.prod.outlook.com (2603:10a6:800:209::14)
 with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9870.20; Wed, 29 Apr
 2026 15:10:01 +0000
Received: from DU2PR08MB7272.eurprd08.prod.outlook.com
 ([fe80::5d34:206f:373:a323]) by DU2PR08MB7272.eurprd08.prod.outlook.com
 ([fe80::5d34:206f:373:a323%6]) with mapi id 15.20.9846.025; Wed, 29 Apr 2026
 15:10: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=arm.com header.i="@arm.com" header.h="From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck"; dkim=pass header.s=selector1 header.d=arm.com header.i="@arm.com" header.h="From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck"
ARC-Seal: i=2; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=pass;
 b=o/fI/MjOpiGUnvDvUkdrdENM6g+hHK23iXtuwMYvtB6P5FKuoeeSnThj/gioPpNkqmfnO2HqnchNfzHnzOT+Xdxyrymguk/+kHtyQztzQM4MWKfG0drSigxuKheT8ZnsDVQFwLEXu08bEeCHNCDA/mQlMrwcjiSJFu2aTn6dz34Wm9xx+eNAhheIB4vxPi3wV7bqKaPK0sfet+RMavrDteNA3zyxO3tRijpj8bfTdF+ZBpuE0vAby6V2xm8lR8zTfS27N6M7LqgvqwnZoMSLSdI8yEmJhMd5zGGBDRkUo3EEw2WfiUlnphLIiRpuJhtx3ly2nAe0IIpFS1lhX5o1Pg==
ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com;
 s=arcselector10001;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1;
 bh=x4Ex3UZkLa2Pgcw/NNe2Z+f1uHNJD/DrDdCKvrTi8wQ=;
 b=v6VN/IWyU2iFNYuqIoGlnHs/lA9i9Ps73BamKzTaItgSKoY/FNtcGTc9V7T1ocaq330RXaTHYz3JLHTGcrGSZ4jKTOcTpi3Bik+SnSoFwCqkU8LVd4Xw+Dpk1WZ0+dIxZivbrJ4M6mQpcyB5ohZzS7vGRp68E8f2crSInFszbk6GMKom85Lyk+HwwOxb2ApMFuvmqNgBwJYxqMXsUZVxKD2VTt9KzN4LXi1Nexrp5mxxNy/UqxScHh9W+kDX0Dpk8W/OgsR+Ig7AI0wXr8AD3d9ebf6aTeC7C46m+pi+I3rJcpef1mhHtUosmMQ2DKsaTXuM2FMGIXYBrmpmjWxfhw==
ARC-Authentication-Results: i=2; mx.microsoft.com 1; spf=pass (sender ip is
 4.158.2.129) smtp.rcpttodomain=gmail.com smtp.mailfrom=arm.com; dmarc=pass
 (p=none sp=none pct=100) action=none header.from=arm.com; dkim=pass
 (signature was verified) header.d=arm.com; arc=pass (0 oda=1 ltdi=1
 spf=[1,1,smtp.mailfrom=arm.com] dkim=[1,1,header.d=arm.com]
 dmarc=[1,1,header.from=arm.com])
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=arm.com; s=selector1;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck;
 bh=x4Ex3UZkLa2Pgcw/NNe2Z+f1uHNJD/DrDdCKvrTi8wQ=;
 b=CLxPejXUZC0W0GBkw72zdQU4bUBecZ+S7H5lilBj3G/Kkp+ogjiF2LgHk20z+VJJkgsrGqDFFDeGYoKNqTdvkA4clJ0uhMXcvqzZNbdiPvoTwVgqIYrc2Nr3myHqLhGyfd1EmkZep2vn3iWZYS6IsQIbdOV4jksLS29v9MXVFzA=
X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 4.158.2.129)
 smtp.mailfrom=arm.com; dkim=pass (signature was verified)
 header.d=arm.com;dmarc=pass action=none header.from=arm.com;
Received-SPF: Pass (protection.outlook.com: domain of arm.com designates
 4.158.2.129 as permitted sender) receiver=protection.outlook.com;
 client-ip=4.158.2.129; helo=outbound-uk1.az.dlp.m.darktrace.com; pr=C
ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none;
 b=VY8X/ZRBnLJbCPtKCRHp5tXw+LwCvS9srhjZxM4+h4zwWsc2z124kayBc3tt3Jk0MDui0ccIY/t6HacBGrYBGcP+07HKy7u9CsDM+xDOrArToIwd7AsHH8HBQITh7jwhW83oFx1Wz+cywMZQmr+dzGkkzMNOgjkeZyeNlgx9Om4RqxobGTh0qcxuS+WKV2UwmVHyVyPTu388MTTo5Sn7QSKjlMGuexSqmf7Bl+3QA/cDk4GtgXJeSoSgOQ6GqE4MS/Ca3GcrymVTPtwf1L55AHf5jC34y98KmXjAPnmbqdf/dYqzkHpuaENfbCVOw/FsxC9rhTBKw5rhbxuKPNyeCg==
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com;
 s=arcselector10001;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1;
 bh=x4Ex3UZkLa2Pgcw/NNe2Z+f1uHNJD/DrDdCKvrTi8wQ=;
 b=yfpRsHDzCl5ffMjD3FqlclqiIFuuC9CX/MgtF6upxfzbm6/kmKj2FPxQB9oVz5QTJZtnsNYb9PXx1hePZE4jesJ2IRAIQKXTULXBAasl7MfkSZ5hi09UJxhDkj1JDxl6AXsk4OpXNLQDLlCcoQftYImDuFxqR/CBOAcYzIv+uwQH/T6uGwhP6EAJT8VLpfhwaxvsrNNb/WMvaGrABn4HDLrYjnvCK+cZtN+gCZ5Suorni81/s4G2Pe1pVLaSZdpkPIEnx+lMK88GjJHRc0EU0r/E7ZF63RlQwkw08a12pROOnLNyNuFPZzXIOknaADq97TfYV77qoea0/IU5Aq8V8Q==
ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass
 smtp.mailfrom=arm.com; dmarc=pass action=none header.from=arm.com; dkim=pass
 header.d=arm.com; arc=none
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=arm.com; s=selector1;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck;
 bh=x4Ex3UZkLa2Pgcw/NNe2Z+f1uHNJD/DrDdCKvrTi8wQ=;
 b=CLxPejXUZC0W0GBkw72zdQU4bUBecZ+S7H5lilBj3G/Kkp+ogjiF2LgHk20z+VJJkgsrGqDFFDeGYoKNqTdvkA4clJ0uhMXcvqzZNbdiPvoTwVgqIYrc2Nr3myHqLhGyfd1EmkZep2vn3iWZYS6IsQIbdOV4jksLS29v9MXVFzA=
From: Luca Fancellu <Luca.Fancellu@arm.com>
To: Oleksii Kurochko <oleksii.kurochko@gmail.com>
CC: "xen-devel@lists.xenproject.org" <xen-devel@lists.xenproject.org>, Romain
 Caritey <Romain.Caritey@microchip.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.pau@citrix.com>
Subject: Re: [PATCH v4 04/11] xen: introduce domain-layout.h with common
 domain_use_host_layout()
Thread-Topic: [PATCH v4 04/11] xen: introduce domain-layout.h with common
 domain_use_host_layout()
Thread-Index: AQHc1xwZfAADhd7YaUmWKHHFpjlmD7X2JiIA
Date: Wed, 29 Apr 2026 15:10:00 +0000
Message-ID: <D2F797B5-CB47-4883-BC0D-1F60056688CC@arm.com>
References: <cover.1777303844.git.oleksii.kurochko@gmail.com>
 <2577e757d32f85fb8b3308863e6d7a53d70636dc.1777303844.git.oleksii.kurochko@gmail.com>
In-Reply-To:
 <2577e757d32f85fb8b3308863e6d7a53d70636dc.1777303844.git.oleksii.kurochko@gmail.com>
Accept-Language: en-GB, en-US
Content-Language: en-US
X-MS-Has-Attach:
X-MS-TNEF-Correlator:
x-mailer: Apple Mail (2.3826.700.81.1.6)
Authentication-Results-Original: dkim=none (message not signed)
 header.d=none;dmarc=none action=none header.from=arm.com;
x-ms-traffictypediagnostic:
	DU2PR08MB7272:EE_|VI0PR08MB10655:EE_|AM1PEPF000252DE:EE_|AS4PR08MB7854:EE_
X-MS-Office365-Filtering-Correlation-Id: 2c59615a-687f-4d73-41d5-08dea60187db
x-checkrecipientrouted: true
nodisclaimer: true
X-MS-Exchange-SenderADCheck: 1
X-MS-Exchange-AntiSpam-Relay: 0
X-Microsoft-Antispam-Untrusted:
 BCL:0;ARA:13230040|7416014|376014|1800799024|366016|38070700021|56012099003|18002099003|22082099003;
X-Microsoft-Antispam-Message-Info-Original:
 JCEGg5fNdkhwGmamTQigFsrvmcTX84W+9+fmiNlND81KB2HRhQgUHcbnyt5WuoM5Qa2oQ1mdQeADaejaa/9baFv3+BqT0dNVZu4zvNXYXWG75rfwkDd4W+h989kCPZjRDzIl2dXgolX5HCLUUWuDolf++WjzNKzUJqgkjN0IhOQMaCbceqlkc0cGVkyXn7xkQalOBc0mozfbeytenuSpucbTrffyqmwMca6RfTA2JagV/xy1LhC5PN6bN81eG5PbrC5xZAK7yhXBbsQCHBo28S1Qbq1RI5i+TjLylOwcijpm22/eqo8kNLQbqnLN6+b6i0v+3hSZSeGr/NhxOGVYy8/GY0dRb2zg7oqD24/LCxepS35gooipBQXkpqxnX4ZGlK5QBEu1lIkeV/r1vAGdb37UEV7jpCTGkt1Jjg+XpHXnU3SbrMYZAu2KhxgGQzEM61RQoMTRWNEeINllE5PGbjA/VJBe1g/rYGnUCaAo7mO9IAYSXlLRkueOZ02A0rKMwtbDVnXLkEFhw41iXbA3FQh/iWtVVdbqCQM8eVsLCqy+K0sExejSzIsiriMjnagJQDCOwqKLs+JvdOruDYg4UM9rwSprRo887LStRYk7EKNaiiz1GhqHhD9NPkzOYKZXLu0na8nx33ZbojBpVUosZYKIwSa8SiMFah5KocnyaTQ0RG3DHIEEM30KEyu/ZGxa+FosIdvYjJ49jU0ITK34VlTWIHC1fncj1wt+a1Eywld6/81v68CWEU+oMi9WxN4tacAoOwc1F0KXzKfBefvqNdtUabvSorWvA7fl6Ct4l48qKRFSoVdC9x+gKwJXXWCG
X-Forefront-Antispam-Report-Untrusted:
 CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:DU2PR08MB7272.eurprd08.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(7416014)(376014)(1800799024)(366016)(38070700021)(56012099003)(18002099003)(22082099003);DIR:OUT;SFP:1101;
Content-Type: text/plain; charset="utf-8"
Content-ID: <A8CD3BEDEA224F428BBF566BAE2DDF3F@eurprd08.prod.outlook.com>
Content-Transfer-Encoding: base64
MIME-Version: 1.0
X-Exchange-RoutingPolicyChecked:
 uaBzrQj30MTMr0clCEQjFe9Ts1xkJo5zvq2jSUwy2I5FHaq3mJi58nI1iZ/TNPsaklIwnuJjwkkH+jwOrRU/dk0DkF2a/AdcwjdVgUrbx5P71XgPl9lkia/o3aug137vGMJT39yDxgmYC+wdYW8Bqim93TS851eflXfQO1yGNODlM54v0Z+wAzK1LMNN0FGW3vc3oXcxKoNjVp806ekMmQpJntUuaHiOM0E2+JgBfKzgIcBL26pKO5118FDWz/vDoMh4BL9tmyV/RYuEXHF/6AKdyuNuI8OfHmw+KFP94moI9hv9a48IJVxQGGdypSWOT9FDyttJwjRTlDUC34Y0NA==
X-MS-Exchange-Transport-CrossTenantHeadersStamped: VI0PR08MB10655
X-EOPAttributedMessage: 0
X-MS-Exchange-Transport-CrossTenantHeadersStripped:
 AM1PEPF000252DE.eurprd07.prod.outlook.com
X-MS-PublicTrafficType: Email
X-MS-Office365-Filtering-Correlation-Id-Prvs:
	e469486e-92e8-4017-8944-08dea6016278
X-Microsoft-Antispam:
	BCL:0;ARA:13230040|82310400026|35042699022|376014|7416014|36860700016|14060799003|1800799024|22082099003|18002099003|56012099003|13003099007;
X-Microsoft-Antispam-Message-Info:
	9jSgcIDc5/GR37l60Jyx9MLw5H+yfxlVxbP4LUx7SdYpcgxY8R+Hzdntvv2Mj9XrS5qctDUnFrKUnM+JF6agIqvlSuPo4js1rnWLeq0apgZ7l+QMLrDdUaDraaN7SA+CGe9AjDU7/++LTcsOBFCiSdPz5wbiV09fDX8GhQMNA9t6oMFy2Pob9xCmVyMQuWNA0AmyI/RBH2swYJyLzdeLT2SrQ0AZFbFw/whO8pBllMx1vZXKmdCCQYjYwq4WiYVREPVVSyCLDTi/Jnya6fiKpjRLSH9Guzu8IAAuVw4i2d3eghuadYigK1B8KVC7C8QjfThD3rAdcvkOxQ0QqAQBUDG+wyKT6YJAeycIwryNGNBZEw+kCAqvtyAqoCOKIKmk3f24hUmGKqxPK+/D1PkR2lLFZUt/sJBliLCOddU8SpvJIT3koRG72xQJu853pcb+N85xg8cCVAxM9+kaIgBXdWsQIvnhP4znHSy91cQkxvjgl+zE+GuP9UpW1SguzVrpRWdG9HtLuDf7xJJe0XaQuiVox6dTLTxNv9CzutAh7kLeq3bDMd5Mg5zW3j0wgmd8R8OATta3EwYGTXWjRzuBofBU2YkQ1s5lN7xncr2stX45J7ppdjUywxy+UqnENNBO5k4/8OMGpxwmMrR22YBflIAUf2Wg2boDiwf0/in4U1HwqEinyQd/7PZhU3uBhEcZ/HR8P8NRQEmOsLUi1/coqGnvpbHtvKUilF/5FVOdCZc=
X-Forefront-Antispam-Report:
	CIP:4.158.2.129;CTRY:GB;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:outbound-uk1.az.dlp.m.darktrace.com;PTR:InfoDomainNonexistent;CAT:NONE;SFS:(13230040)(82310400026)(35042699022)(376014)(7416014)(36860700016)(14060799003)(1800799024)(22082099003)(18002099003)(56012099003)(13003099007);DIR:OUT;SFP:1101;
X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1
X-MS-Exchange-AntiSpam-MessageData-0:
	8pucQkJ0M8Hpwhb6domDveRQIAjT2/qP5Z/XR4QpYQmbDwevQxAYritrHRCEAkqHmxr1SJHCP/+ggU6924yy5E2NRcBjIrxmM3gHfO6pgYCyGpBcFliRfsRVOD2WTtvorGeSMLZVh4gVaqTrASpKPWxwnHvM6tUuG0+BGqthCHVUwr9EDiV0Q8MYLk4m7Plbtkj1MR67hGdHiR35lG2FlsLY7Xxgb19Aaj07kdmUMsgEC2x4XdlgE8TwSIuP7P6rax62tAl8x/v7BzJmeixZjlAaRqK8ktr33P5XDimiNbSQtJh80JbwVPbtTNjnXILgvYydqfLR0D15gH/3ezV7VFNf8ayKCQmE4+oysLvlQxNi6FH+6J3Khft6hUFqKZi5RlVWE3nM5hSeyjTqT6Uv6N8FBe+LLzv8mcjauT8QsjkWaH29GLTi1U69cxmV5gCp
X-OriginatorOrg: arm.com
X-MS-Exchange-CrossTenant-OriginalArrivalTime: 29 Apr 2026 15:11:03.6642
 (UTC)
X-MS-Exchange-CrossTenant-Network-Message-Id: 2c59615a-687f-4d73-41d5-08dea60187db
X-MS-Exchange-CrossTenant-Id: f34e5979-57d9-4aaa-ad4d-b122a662184d
X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=f34e5979-57d9-4aaa-ad4d-b122a662184d;Ip=[4.158.2.129];Helo=[outbound-uk1.az.dlp.m.darktrace.com]
X-MS-Exchange-CrossTenant-AuthSource:
	AM1PEPF000252DE.eurprd07.prod.outlook.com
X-MS-Exchange-CrossTenant-AuthAs: Anonymous
X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem
X-MS-Exchange-Transport-CrossTenantHeadersStamped: AS4PR08MB7854
X-purgate-ID: tlsNG-c201ff/1777475469-E97A6443-84E15BF5/10/73395122804
X-purgate-type: spam
X-purgate-size: 7214

SGkgT2xla3NpaSwNCg0KPiBPbiAyOCBBcHIgMjAyNiwgYXQgMTU6MzMsIE9sZWtzaWkgS3Vyb2No
a28gPG9sZWtzaWkua3Vyb2Noa29AZ21haWwuY29tPiB3cm90ZToNCj4gDQo+IGRvbWFpbl91c2Vf
aG9zdF9sYXlvdXQoKSBpcyBub3QgYXJjaGl0ZWN0dXJlLXNwZWNpZmljIGFuZCBtYXkgYmUgbmVl
ZGVkDQo+IG9uIHg4NiBbMV0uIFJlcGxhY2UgdGhlIEFSTS1zcGVjaWZpYyBtYWNybyBpbiBhc20v
ZG9tYWluLmggd2l0aCBhIGNvbW1vbg0KPiBzdGF0aWMgaW5saW5lIGluIGEgbmV3IGRlZGljYXRl
ZCBoZWFkZXIsIHhlbi9kb21haW4tbGF5b3V0LmguDQo+IA0KPiB4ZW4vZG9tYWluLmggd291bGQg
YmUgdGhlIG5hdHVyYWwgaG9tZSwgYnV0IHBsYWNpbmcgaXQgdGhlcmUgd291bGQNCj4gcmVxdWly
ZSBpbmNsdWRpbmcgeGVuL3BhZ2luZy5oIChmb3IgcGFnaW5nX21vZGVfdHJhbnNsYXRlKCkpIGFu
ZA0KPiB4ZW4vc2NoZWQuaCAoZm9yIGlzX2hhcmR3YXJlX2RvbWFpbigpKSwgd2hpY2ggd291bGQg
aW50cm9kdWNlIGNpcmN1bGFyDQo+IGRlcGVuZGVuY2llcy4gQSBzZXBhcmF0ZSBoZWFkZXIgdGhh
dCBjYWxsZXJzIG9wdCBpbnRvIGF2b2lkcyB0aGlzLg0KPiANCj4gQWRqdXN0IHRoZSBpbXBsZW1l
bnRhdGlvbiB0byB0YWtlIHBhZ2luZ19tb2RlX3RyYW5zbGF0ZSgpIGludG8gYWNjb3VudA0KPiBz
byBpdCB3b3JrcyBjb3JyZWN0bHkgZm9yIGFsbCBhcmNoaXRlY3R1cmVzLCBpbmNsdWRpbmcgeDg2
LiBTb21lIGV4dHJhDQo+IGRldGFpbHMgYWJvdXQgaW1wbGVtZW50YXRpb24gWzJdIGFuZCBbM10u
DQo+IA0KPiBbMV0gaHR0cHM6Ly9sb3JlLmtlcm5lbC5vcmcveGVuLWRldmVsL2FscGluZS5ERUIu
Mi4yMi4zOTQuMjYwMjE2MTAzODEyMC4zNTkwOTdAdWJ1bnR1LWxpbnV4LTIwLTA0LWRlc2t0b3Av
DQo+IFsyXSBodHRwczovL2xvcmUua2VybmVsLm9yZy94ZW4tZGV2ZWwvYWxwaW5lLkRFQi4yLjIy
LjM5NC4yNjAyMjcxNzQyNDAwLjMxNDgzNDRAdWJ1bnR1LWxpbnV4LTIwLTA0LWRlc2t0b3AvDQo+
IFszXSBodHRwczovL2xvcmUua2VybmVsLm9yZy94ZW4tZGV2ZWwvYWxwaW5lLkRFQi4yLjIyLjM5
NC4yNjAyMjcxNzUwMTkwLjMxNDgzNDRAdWJ1bnR1LWxpbnV4LTIwLTA0LWRlc2t0b3AvDQo+IA0K
PiBTdWdnZXN0ZWQtYnk6IFN0ZWZhbm8gU3RhYmVsbGluaSA8c3N0YWJlbGxpbmlAa2VybmVsLm9y
Zz4NCj4gU2lnbmVkLW9mZi1ieTogT2xla3NpaSBLdXJvY2hrbyA8b2xla3NpaS5rdXJvY2hrb0Bn
bWFpbC5jb20+DQo+IC0tLQ0KPiBDaGFuZ2VzIGluIHY0Og0KPiAtIFVwZGF0ZSB0aGUgY29tbWVu
dCBhYm92ZSBkb21haW5fdXNlX2hvc3RfbGF5b3V0KCkuDQo+IC0tLQ0KPiBDaGFuZ2VzIGluIHYz
Og0KPiAtIE1ha2UgYXJndW1lbnQgb2YgZG9tYWluX3VzZV9ob3N0X2xheW91dCgpIGNvbnN0Lg0K
PiAtIENyZWF0ZSBhIHNlcGFyYXRlIGhlYWRlciB0byBhdm9pZCBjaXJjdWxhciBoZWRlciBkZXBl
bmRlY3kgYW5kIG1ha2luZw0KPiAgIGRvbWFpbl91c2VfaG9zdF9sYXlvdXIoKSBhcyBzdGF0aWMg
aW5saW5lLg0KPiAtIFJld29yayBkb21haW5fdXNlX2hvc3RfbGF5b3V0KCkgdG8gYmUgcHJvdGVj
dGVkIGJ5IHBhZ2luZ19tb2RlX3RyYW5zbGF0ZSgpLg0KPiAtIFVwZGF0ZSB0aGUgY29tbWl0IG1l
c3NhZ2UuDQo+IC0tLQ0KPiBDaGFuZ2VzIGluIHYyOg0KPiAtIERyb3AgaWZkZWYgYXJvdW5kIGRl
ZmludGlvbiBvZiBkb21haW5fdXNlX2hvc3RfbGF5b3V0KCkgYXMgaXQNCj4gICB3YXMgc3VnZ2Vz
dGVkIGdlbmVyaWMgdmVyc2lvbi4gSXQgY291bGQgYmUgcmV0dXJuZWQgYmFjayB3aGVuDQo+ICAg
dGhlIHJlYWwgdXNlIGNhc2UgZm9yIGl0IHdpbGwgYXBwZWFyLg0KPiAtIEFkZCBTdWdnZXN0ZWQt
Ynk6IGFuZCB1cGRhdGUgdGhlIGNvbW1pdCBtZXNzYWdlLg0KPiAtIE1ha2UgZG9tYWluX3VzZV9o
b3N0X2xheW91dCgpIGZ1bmN0aW9uIGluc3RlYWQgb2YgbWFjcm9zIHRvDQo+ICAgYXZvaWQgY2lj
bHVsYXIgaGVhZGVyIGRlcGVuZGVjaWVzLiBMb29rIGF0IG1vcmUgZGV0YWlscyBpbg0KPiAgIHRo
ZSBjb21taXQgbWVzc2FnZS4NCj4gLS0tDQo+IC0tLQ0KPiB4ZW4vYXJjaC9hcm0vZG9tYWluX2J1
aWxkLmMgICAgICAgICAgIHwgIDEgKw0KPiB4ZW4vYXJjaC9hcm0vaW5jbHVkZS9hc20vZG9tYWlu
LmggICAgIHwgMTQgLS0tLS0tLS0tLS0tLS0NCj4geGVuL2FyY2gvYXJtL3ZnaWMtdjMuYyAgICAg
ICAgICAgICAgICB8ICAxICsNCj4geGVuL2NvbW1vbi9kZXZpY2UtdHJlZS9kb21haW4tYnVpbGQu
YyB8ICAxICsNCj4geGVuL2luY2x1ZGUveGVuL2RvbWFpbi1sYXlvdXQuaCAgICAgICB8IDI3ICsr
KysrKysrKysrKysrKysrKysrKysrKysrKw0KPiA1IGZpbGVzIGNoYW5nZWQsIDMwIGluc2VydGlv
bnMoKyksIDE0IGRlbGV0aW9ucygtKQ0KPiBjcmVhdGUgbW9kZSAxMDA2NDQgeGVuL2luY2x1ZGUv
eGVuL2RvbWFpbi1sYXlvdXQuaA0KPiANCj4gZGlmZiAtLWdpdCBhL3hlbi9hcmNoL2FybS9kb21h
aW5fYnVpbGQuYyBiL3hlbi9hcmNoL2FybS9kb21haW5fYnVpbGQuYw0KPiBpbmRleCBhZDY2NWNk
M2MwNDUuLjFlZmRkYzYwZWYwYSAxMDA2NDQNCj4gLS0tIGEveGVuL2FyY2gvYXJtL2RvbWFpbl9i
dWlsZC5jDQo+ICsrKyBiL3hlbi9hcmNoL2FybS9kb21haW5fYnVpbGQuYw0KPiBAQCAtMiw2ICsy
LDcgQEANCj4gI2luY2x1ZGUgPHhlbi9pbml0Lmg+DQo+ICNpbmNsdWRlIDx4ZW4vYm9vdGluZm8u
aD4NCj4gI2luY2x1ZGUgPHhlbi9jb21waWxlLmg+DQo+ICsjaW5jbHVkZSA8eGVuL2RvbWFpbi1s
YXlvdXQuaD4NCj4gI2luY2x1ZGUgPHhlbi9kb20wbGVzcy1idWlsZC5oPg0KPiAjaW5jbHVkZSA8
eGVuL2ZkdC1kb21haW4tYnVpbGQuaD4NCj4gI2luY2x1ZGUgPHhlbi9mZHQta2VybmVsLmg+DQo+
IGRpZmYgLS1naXQgYS94ZW4vYXJjaC9hcm0vaW5jbHVkZS9hc20vZG9tYWluLmggYi94ZW4vYXJj
aC9hcm0vaW5jbHVkZS9hc20vZG9tYWluLmgNCj4gaW5kZXggYjI0ZjAyZDI2OWJlLi40NmE1Y2Rj
MGM4MDAgMTAwNjQ0DQo+IC0tLSBhL3hlbi9hcmNoL2FybS9pbmNsdWRlL2FzbS9kb21haW4uaA0K
PiArKysgYi94ZW4vYXJjaC9hcm0vaW5jbHVkZS9hc20vZG9tYWluLmgNCj4gQEAgLTE4LDIwICsx
OCw2IEBAIHN0cnVjdCBodm1fZG9tYWluDQo+ICAgICB1aW50NjRfdCAgICAgICAgICAgICAgcGFy
YW1zW0hWTV9OUl9QQVJBTVNdOw0KPiB9Ow0KPiANCj4gLS8qDQo+IC0gKiBJcyB0aGUgZG9tYWlu
IHVzaW5nIHRoZSBob3N0IG1lbW9yeSBsYXlvdXQ/DQo+IC0gKg0KPiAtICogRGlyZWN0LW1hcHBl
ZCBkb21haW4gd2lsbCBhbHdheXMgaGF2ZSB0aGUgUkFNIG1hcHBlZCB3aXRoIEdGTiA9PSBNRk4u
DQo+IC0gKiBUbyBhdm9pZCBhbnkgdHJvdWJsZSBmaW5kaW5nIHNwYWNlLCBpdCBpcyBlYXNpZXIg
dG8gZm9yY2UgdXNpbmcgdGhlDQo+IC0gKiBob3N0IG1lbW9yeSBsYXlvdXQuDQo+IC0gKg0KPiAt
ICogVGhlIGhhcmR3YXJlIGRvbWFpbiB3aWxsIHVzZSB0aGUgaG9zdCBsYXlvdXQgcmVnYXJkbGVz
cyBvZg0KPiAtICogZGlyZWN0LW1hcHBlZCBiZWNhdXNlIHNvbWUgT1MgbWF5IHJlbHkgb24gYSBz
cGVjaWZpYyBhZGRyZXNzIHJhbmdlcw0KPiAtICogZm9yIHRoZSBkZXZpY2VzLg0KPiAtICovDQo+
IC0jZGVmaW5lIGRvbWFpbl91c2VfaG9zdF9sYXlvdXQoZCkgKGlzX2RvbWFpbl9kaXJlY3RfbWFw
cGVkKGQpIHx8IFwNCj4gLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXNfaGFy
ZHdhcmVfZG9tYWluKGQpKQ0KPiAtDQo+IHN0cnVjdCB2dGltZXIgew0KPiAgICAgc3RydWN0IHZj
cHUgKnY7DQo+ICAgICBpbnQgaXJxOw0KPiBkaWZmIC0tZ2l0IGEveGVuL2FyY2gvYXJtL3ZnaWMt
djMuYyBiL3hlbi9hcmNoL2FybS92Z2ljLXYzLmMNCj4gaW5kZXggNzdhYWI1YzNjMjkzLi43NzUx
N2MzMDMwNjEgMTAwNjQ0DQo+IC0tLSBhL3hlbi9hcmNoL2FybS92Z2ljLXYzLmMNCj4gKysrIGIv
eGVuL2FyY2gvYXJtL3ZnaWMtdjMuYw0KPiBAQCAtMTAsNiArMTAsNyBAQA0KPiAgKi8NCj4gDQo+
ICNpbmNsdWRlIDx4ZW4vYml0b3BzLmg+DQo+ICsjaW5jbHVkZSA8eGVuL2RvbWFpbi1sYXlvdXQu
aD4NCj4gI2luY2x1ZGUgPHhlbi9pbml0Lmg+DQo+ICNpbmNsdWRlIDx4ZW4vaXJxLmg+DQo+ICNp
bmNsdWRlIDx4ZW4vbGliLmg+DQo+IGRpZmYgLS1naXQgYS94ZW4vY29tbW9uL2RldmljZS10cmVl
L2RvbWFpbi1idWlsZC5jIGIveGVuL2NvbW1vbi9kZXZpY2UtdHJlZS9kb21haW4tYnVpbGQuYw0K
PiBpbmRleCBjNTE1MjBlYmFkZjkuLjY5NDkyMDNkYWNkYyAxMDA2NDQNCj4gLS0tIGEveGVuL2Nv
bW1vbi9kZXZpY2UtdHJlZS9kb21haW4tYnVpbGQuYw0KPiArKysgYi94ZW4vY29tbW9uL2Rldmlj
ZS10cmVlL2RvbWFpbi1idWlsZC5jDQo+IEBAIC0xLDYgKzEsNyBAQA0KPiAvKiBTUERYLUxpY2Vu
c2UtSWRlbnRpZmllcjogR1BMLTIuMC1vbmx5ICovDQo+IA0KPiAjaW5jbHVkZSA8eGVuL2Jvb3Rp
bmZvLmg+DQo+ICsjaW5jbHVkZSA8eGVuL2RvbWFpbi1sYXlvdXQuaD4NCj4gI2luY2x1ZGUgPHhl
bi9mZHQtZG9tYWluLWJ1aWxkLmg+DQo+ICNpbmNsdWRlIDx4ZW4vaW5pdC5oPg0KPiAjaW5jbHVk
ZSA8eGVuL2xpYi5oPg0KPiBkaWZmIC0tZ2l0IGEveGVuL2luY2x1ZGUveGVuL2RvbWFpbi1sYXlv
dXQuaCBiL3hlbi9pbmNsdWRlL3hlbi9kb21haW4tbGF5b3V0LmgNCj4gbmV3IGZpbGUgbW9kZSAx
MDA2NDQNCj4gaW5kZXggMDAwMDAwMDAwMDAwLi4wNTMyYTI3YjQ0Y2UNCj4gLS0tIC9kZXYvbnVs
bA0KPiArKysgYi94ZW4vaW5jbHVkZS94ZW4vZG9tYWluLWxheW91dC5oDQoNCk5ldyBmaWxlcyBz
aG91bGQgaGF2ZSBTUERYIHRhZw0KDQo+IEBAIC0wLDAgKzEsMjcgQEANCj4gKyNpZm5kZWYgX19Y
RU5fRE9NQUlOX0xBWU9VVF9IX18NCj4gKyNkZWZpbmUgX19YRU5fRE9NQUlOX0xBWU9VVF9IX18N
Cg0KSSB0aGluayB0aGlzIGluY2x1ZGUgZ3VhcmQgZG9lc27igJl0IHNhdGlzZnkgdGhlIGNvZGlu
ZyBzdHlsZToNCmh0dHBzOi8veGVuYml0cy54ZW4ub3JnL2dpdHdlYi8/cD14ZW4uZ2l0O2E9Ymxv
YjtmPUNPRElOR19TVFlMRTtoPWFhZTVhNDdhYzIwMzQ1OTc4YjNjNDY1YjlkODVmMWQ1ZjY3NzQ3
MzE7aGI9cmVmcy9oZWFkcy9zdGFnaW5nI2wxNjcNCg0KQXBhcnQgZnJvbSB0aGlzLCB0aGUgcmVz
dCBsb29rcyBvayB0byBtZSwgYWZ0ZXIgZml4aW5nIHRoZSBhYm92ZSBJIHdpbGwgbGVhdmUgbXkg
Ui1ieQ0KDQpDaGVlcnMsDQpMdWNhDQoNCg==


From xen-devel-bounces@lists.xenproject.org Wed Apr 29 15:16:31 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 29 Apr 2026 15:16:31 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1297498.1573501 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wI6e9-0008Cf-5P; Wed, 29 Apr 2026 15:16:17 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1297498.1573501; Wed, 29 Apr 2026 15:16: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 1wI6e9-0008CY-20; Wed, 29 Apr 2026 15:16:17 +0000
Received: by outflank-mailman (input) for mailman id 1297498;
 Wed, 29 Apr 2026 15:16:16 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92) id 1wI6e8-0008CS-Bp
 for xen-devel@lists.xenproject.org; Wed, 29 Apr 2026 15:16:16 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wI6e7-00GRBg-N7
 for xen-devel@lists.xenproject.org; Wed, 29 Apr 2026 17:16:15 +0200
Received: from [10.42.69.9] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <Luca.Fancellu@arm.com>)
 id 69f220ac-5cb7-0a2a0a5109dd-0a2a4509e522-40
 for <xen-devel@lists.xenproject.org>; Wed, 29 Apr 2026 17:16:15 +0200
Received: from [52.101.69.8]
 (helo=AM0PR83CU005.outbound.protection.outlook.com)
 by tlsNG-bad1c0.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.1)
 (envelope-from <Luca.Fancellu@arm.com>)
 id 69f220bf-2497-0a2a45090019-346545083f4e-3
 for <xen-devel@lists.xenproject.org>; Wed, 29 Apr 2026 17:16:15 +0200
Received: from DU7P190CA0008.EURP190.PROD.OUTLOOK.COM (2603:10a6:10:550::26)
 by AM8PR08MB5747.eurprd08.prod.outlook.com (2603:10a6:20b:1c7::21) with
 Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9870.18; Wed, 29 Apr
 2026 15:16:09 +0000
Received: from DU6PEPF0000A7E3.eurprd02.prod.outlook.com
 (2603:10a6:10:550:cafe::bd) by DU7P190CA0008.outlook.office365.com
 (2603:10a6:10:550::26) with Microsoft SMTP Server (version=TLS1_3,
 cipher=TLS_AES_256_GCM_SHA384) id 15.20.9846.29 via Frontend Transport; Wed,
 29 Apr 2026 15:16:09 +0000
Received: from outbound-uk1.az.dlp.m.darktrace.com (4.158.2.129) by
 DU6PEPF0000A7E3.mail.protection.outlook.com (10.167.8.41) with Microsoft SMTP
 Server (version=TLS1_3, cipher=TLS_AES_256_GCM_SHA384) id 15.20.9846.18 via
 Frontend Transport; Wed, 29 Apr 2026 15:16:08 +0000
Received: from DU2PR08MB7272.eurprd08.prod.outlook.com (2603:10a6:10:2d7::16)
 by PA1PR08MB11641.eurprd08.prod.outlook.com (2603:10a6:102:554::12)
 with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9846.26; Wed, 29 Apr
 2026 15:15:04 +0000
Received: from DU2PR08MB7272.eurprd08.prod.outlook.com
 ([fe80::5d34:206f:373:a323]) by DU2PR08MB7272.eurprd08.prod.outlook.com
 ([fe80::5d34:206f:373:a323%6]) with mapi id 15.20.9846.025; Wed, 29 Apr 2026
 15:15: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=arm.com header.i="@arm.com" header.h="From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck"; dkim=pass header.s=selector1 header.d=arm.com header.i="@arm.com" header.h="From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck"
ARC-Seal: i=2; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=pass;
 b=unEn42aTQAbNV7DxHbyoKIvZmKmluYuxZJNu+TUY7uF+0u8J1g+2p7TkKQ7ey/a6eYvPVNyVCUcVD9Msffj8sbWIwtcJb5dbYYQXd+lrbY6n2BBk4DGdPGEY2F5TDMxez6x3kd0YG/hfw7JbdiOG+vMOJTEOcSFSryVNZCarBmCov9o61wWCXbUKGEJNg0yxoiAoI+bac8RyWo/MVeyOxylI8BABaS0WV9wsXlmN88tXGBDyFHuEf9vIFkEFbwUsDwRHLeZfZ01CN+vWruCOh5uaIhjnuqlEw3EWYknDj+gGmhMBZWBGuxFaKREsCpLHW+0SeZyL7hL03KOlOY9VdQ==
ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com;
 s=arcselector10001;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1;
 bh=IrnFjHrbOODVQYq5wStjuzb8f0OT39nK2IkT9r/9Qrc=;
 b=CZLkn8qCYWENWqPstFSePk+grXyZSmLvOi3HNV9VG6N9omssXADi2qxnrSz8/8Q52zb0Z+5Q283m4UEuk2E0TlNgkCCAW8zFCgMOC00Hi6cRI3qhA2tweMKN9NroW9D0Qm0+E1LcJUL5cy5qlnIgKZdcOyc7Af782GeIPObj6H6u3pd7NNMceU8F+UrCiPZNBZK+g1EG8h0Xcq4/J0jIkEv+HRrF3WcqA6tJ9Xa1HswjjaDMwBvPDSSDr6XB1w2wuFHV3ogv0fB7rJizFgm4NDBGOsnfbRBu32ppESCfDGym7kqotkfrkLI+WnlhIBbY5n5ulUyKaFfa0fMVG8JhKg==
ARC-Authentication-Results: i=2; mx.microsoft.com 1; spf=pass (sender ip is
 4.158.2.129) smtp.rcpttodomain=gmail.com smtp.mailfrom=arm.com; dmarc=pass
 (p=none sp=none pct=100) action=none header.from=arm.com; dkim=pass
 (signature was verified) header.d=arm.com; arc=pass (0 oda=1 ltdi=1
 spf=[1,1,smtp.mailfrom=arm.com] dkim=[1,1,header.d=arm.com]
 dmarc=[1,1,header.from=arm.com])
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=arm.com; s=selector1;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck;
 bh=IrnFjHrbOODVQYq5wStjuzb8f0OT39nK2IkT9r/9Qrc=;
 b=BbJ+xP+CPS7pKspnLyblhuHjlqV/JEU0RugBlMNLfhHQmvKOQs8vm77WOxN7fl/q35oCzWzZWTELPJHmlVnaghcFuu4F1ePwPy88RJpp52I1IYwdJDXToS2ODcRdrCMV4wNu9YCgkmTVoQme/3pVrFB1YgzmSUJg9TKaY3XJ3/A=
X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 4.158.2.129)
 smtp.mailfrom=arm.com; dkim=pass (signature was verified)
 header.d=arm.com;dmarc=pass action=none header.from=arm.com;
Received-SPF: Pass (protection.outlook.com: domain of arm.com designates
 4.158.2.129 as permitted sender) receiver=protection.outlook.com;
 client-ip=4.158.2.129; helo=outbound-uk1.az.dlp.m.darktrace.com; pr=C
ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none;
 b=gzgiaXydMu5koxIJd+XGIYw3B/mLt8XqFwYszqaJ3RtxeWSOwSCUFCgomfOVGI0kbZEWj23349Gfg3ABMqKc3Fw2BqMSBY/iLPonRKGjabOkFwFpr8+W9gHViByudxP+jJlOTdBe1wsqXSHyb0naoJBrLXZWb7F6hOkLa9vQ1iEVNfxprWL9Qt/NDHfhVVMJ5i0XzisbCc9UWWv2cZKx+wGfxMwaV2TYkGJuC2ZBIqN5tpCHBRx1se4jTu9vOJIm+6swGzVbxv512vH/YPCZNEObzC2ocfwBwtuY1XXsaVuKc84Xv9Wc3TTbZ2RHbe343jvBIQxnb0l2nn2UQ0zbOg==
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com;
 s=arcselector10001;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1;
 bh=IrnFjHrbOODVQYq5wStjuzb8f0OT39nK2IkT9r/9Qrc=;
 b=UQSAZGJcc5tFy+UU4DW2sKJXH9sdb+5xVCrzIKJ+uFRMLFBaDhhzFPh+4B9uHaMHIVEsP7ZO+MW+ySh49vAc/0jFJl1+qWK+IrQzl0jsg/HMZJYvz9fLCbwpC1g369n36NJw0QEoq8GT0vd/jLj6ITCWRgdB8Ov5esazI0O32nwz9azqYwlIVpZ7PwYmKFDxizapXzdNWcb9vslPFS2hccy4fccbK8mM0FLEk1cjGs1PmjZBRW64Xwcmcju4zp1NMmhm0g/Ob6xVVllWUwbxueF9oWWHK9vb3rgoBuvvetXOTqjMmII5C/CFGVs0kmoQehM5d0/KcmjhSRwiYGkMrg==
ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass
 smtp.mailfrom=arm.com; dmarc=pass action=none header.from=arm.com; dkim=pass
 header.d=arm.com; arc=none
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=arm.com; s=selector1;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck;
 bh=IrnFjHrbOODVQYq5wStjuzb8f0OT39nK2IkT9r/9Qrc=;
 b=BbJ+xP+CPS7pKspnLyblhuHjlqV/JEU0RugBlMNLfhHQmvKOQs8vm77WOxN7fl/q35oCzWzZWTELPJHmlVnaghcFuu4F1ePwPy88RJpp52I1IYwdJDXToS2ODcRdrCMV4wNu9YCgkmTVoQme/3pVrFB1YgzmSUJg9TKaY3XJ3/A=
From: Luca Fancellu <Luca.Fancellu@arm.com>
To: Oleksii Kurochko <oleksii.kurochko@gmail.com>
CC: "xen-devel@lists.xenproject.org" <xen-devel@lists.xenproject.org>, Romain
 Caritey <Romain.Caritey@microchip.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>
Subject: Re: [PATCH v4 05/11] xen: rename p2m_ipa_bits to p2m_gpa_bits
Thread-Topic: [PATCH v4 05/11] xen: rename p2m_ipa_bits to p2m_gpa_bits
Thread-Index: AQHc1xwVZhRGj/YUzUmHdsB4298A47X2J4yA
Date: Wed, 29 Apr 2026 15:15:04 +0000
Message-ID: <A729DA79-3FD0-4290-8D9C-8792A16E1B8C@arm.com>
References: <cover.1777303844.git.oleksii.kurochko@gmail.com>
 <fcf48e61d270fd4665f14f43095b3659e528b376.1777303844.git.oleksii.kurochko@gmail.com>
In-Reply-To:
 <fcf48e61d270fd4665f14f43095b3659e528b376.1777303844.git.oleksii.kurochko@gmail.com>
Accept-Language: en-GB, en-US
Content-Language: en-US
X-MS-Has-Attach:
X-MS-TNEF-Correlator:
x-mailer: Apple Mail (2.3826.700.81.1.6)
Authentication-Results-Original: dkim=none (message not signed)
 header.d=none;dmarc=none action=none header.from=arm.com;
x-ms-traffictypediagnostic:
	DU2PR08MB7272:EE_|PA1PR08MB11641:EE_|DU6PEPF0000A7E3:EE_|AM8PR08MB5747:EE_
X-MS-Office365-Filtering-Correlation-Id: fec0cec1-6fcb-4fe0-cd4a-08dea6023dc8
x-checkrecipientrouted: true
nodisclaimer: true
X-MS-Exchange-SenderADCheck: 1
X-MS-Exchange-AntiSpam-Relay: 0
X-Microsoft-Antispam-Untrusted:
 BCL:0;ARA:13230040|366016|1800799024|376014|22082099003|56012099003|18002099003|38070700021;
X-Microsoft-Antispam-Message-Info-Original:
 VfSE/mhkrQCzchtXgCCCyxhMxEWjjixodvmj8hfeTrToKI37yr29N1HpfgLV97h/O+N7oZ5t+Uv045gg0KnXT1OWl8R61gQwvt1aw7IwrFKff6/At61M/EnPOLAe933ciddhJopPpy00zKDKrGhxgdbJ7XjBIysWBOWv9Tz5S1VqRnowmnF0meGbatt/k9So3w+zhq7Cei36MhynMkAfrsBtx15Dkd2YuHk2e6GFM9x6W3bMb+GEQOj8MTVTqAUdkqfBGQjpPKo/YftlTGVoOkvCJkZ/dp7kmgYsMaeG6hYKmQx/KmgvFktoLxjfc8n1kku5n9GmrnMxvK1k5Jyy3b0uoPnIMMG34L9i3vMvpoXzvpivefmOTcASOOMzPJ7G7UbkVWohD34/rOJhN/WbWPxFZUCl/+6jjBUEfYLsgk6AlQkescG7vbXzvYHFlYtbqdiW/zklTi6y7oyuzN707cQRtK0fJCvXLI215YB+G0tR4BJgscEdpyOUu1Wc5DOVvem6nfx5HFSHtRaLeoI4Inr3ypI4b1SI241r24IQYsB5XX3jg5oPiosRBqohPeqQ5DWfKJKGa55e6Za6lFdNUYQUIOt7nxK5aksTEzpryFd5BqD4cqqASwAgD5jLS3NPqSsZn7UOyTDPJB0ydHlzPunPKggN5P16IFk8y5xC28685L3QKSeujX7kfxvTBaoT00ocHJbZzP2YxAOmK99rAp18EFeXPYMo82rFb32XZKGOe3l2ho0dZHI9upU42RimBoh2igwyz4plUfqr5r1Ttuvw4AYhjdzRtRNfD1eRZ14=
X-Forefront-Antispam-Report-Untrusted:
 CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:DU2PR08MB7272.eurprd08.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(366016)(1800799024)(376014)(22082099003)(56012099003)(18002099003)(38070700021);DIR:OUT;SFP:1101;
Content-Type: text/plain; charset="utf-8"
Content-ID: <C18EBED23D5DEF49870E5A046E58B002@eurprd08.prod.outlook.com>
Content-Transfer-Encoding: base64
MIME-Version: 1.0
X-Exchange-RoutingPolicyChecked:
 qT29lGlghfuGR5bnpcIMVDNk8oHvIxPpqGph0IzVgMR46Fidtx8mcQ5BdoUJLmsreB5V3xloJU0Brj5ZVG5nfPQXrM1QNUbX2TW92MYNi5aUjuCccXGJTBD5D3wh0JE3AJDw6dIGN+/aQ75uj1lTkYm72LxWR7xi2ZFpyTZrPj4BCHIIyeS5dpz7ye+CaIgoLL8cNiJ4D+zPckkMzUNgGIWVZ7/RLfug+/GGQRlcj/n7CMrnDT7a3DCOcmSM7Zcdb/acZZXVE65WqoTnQgemVreE7iRclrJ7bxKYnJpxSFD1F5CcA9qfVS5nJkgQLQ4dF/QU4wr2EZCiqaCkPbRvGw==
X-MS-Exchange-Transport-CrossTenantHeadersStamped: PA1PR08MB11641
X-EOPAttributedMessage: 0
X-MS-Exchange-Transport-CrossTenantHeadersStripped:
 DU6PEPF0000A7E3.eurprd02.prod.outlook.com
X-MS-PublicTrafficType: Email
X-MS-Office365-Filtering-Correlation-Id-Prvs:
	dd022963-a0d5-46df-71b2-08dea6021715
X-Microsoft-Antispam:
	BCL:0;ARA:13230040|1800799024|82310400026|14060799003|35042699022|376014|36860700016|18002099003|22082099003|56012099003;
X-Microsoft-Antispam-Message-Info:
	FdBBmchMUel7KAzZ2M5zyK/10c+2dXyzU6zq5w33eTFuZ5fnp2pN1cLmzawdmdHG+lG9LyaEuMQN1o9UGkjRVh++kFCbS4wuoMnkf60Jw1GOb7GRafVxVgNkkhKS1bQwP2PRCD7sUJ06IAOiysiw+SOn9iK3TL4vavmRo9BGVyrnA8Pb9pvQVJI6Jl2r1rBdOQawdtTXlh5aQuTFBLgaX0D9JSkhWB8IAoCxUZll02Elb1ZEpfRaEy3Tgidsaj5fBB2LYQOuzYpMHNa0TOciiMIEyFByxVoYq18TKfiDF9SqxpP6AznDmTvUVwF0jJkj5R/uPdPVs0XaN1rn3LDTqAOECV1XSGjGfNovjwbY4PG4KiXjZe0DdqWtobJcRcCz+JgqREV4SheTuNPOtQarhOiov824w4FKC7bcQHh1QMCZTxSzHBe1KupgU/WSG1ttvjZs90EpMDX031yI4d8MT0FtYkJOWaCvX5OF359Q2EG8yQ6sBkau9g1OVVu/UDQAY3ePzYrsB8oL61GWawoHcw40X1Ol8F922fnHLHn6kEHBH+OOmCYn4r2/eMXsxWlPe5tXbU/hdvh5Lu+TaZa3e9wba9ZsZA+GcP8RLU7q7jE1UqYR2zXhvZLQQ1FUersrRj9t6LS3zo8CCGiizndRmfwAmwDqPSq2xxlelhvqWauJ1lKMqLi3RsLGP33K/d6QM3D155FBaojgOuz0hRYCSe7lHAT68cr66vZKSatLmPkdI2ASOHSDUvv+fv25nHV3Rp9FHnVExs+wJZ/0lo5HWw==
X-Forefront-Antispam-Report:
	CIP:4.158.2.129;CTRY:GB;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:outbound-uk1.az.dlp.m.darktrace.com;PTR:InfoDomainNonexistent;CAT:NONE;SFS:(13230040)(1800799024)(82310400026)(14060799003)(35042699022)(376014)(36860700016)(18002099003)(22082099003)(56012099003);DIR:OUT;SFP:1101;
X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1
X-MS-Exchange-AntiSpam-MessageData-0:
	N61gyorxu0NSqFdyQuU/13nqXUDwiUbybFsK6DhkP6OGrBmJSxDA+oBQWvEUOvgcWetm1I5vYOnXaQebuZn8UpcZQBnGo3Pu6x8TYY6ed1UdHVArmH5xItMcJcoBKSHBenClPAguxwp2P5fQm6e0Ulq1n7RfEVwK49HSMq1fHN2sKBdnv4IslWi4GwmmHdPJaUc/Gl73EWKHAAv9xvmTYd+51H3TZQO7mUa6rPMooFYHg13ykV4kcEksmSCEcED5GOj9yHfXl7FCol8UoquRAoX4M1J0nrNitOirYZxHHUdmqCLD0xTza9CxbojGq1ZYkQP+LdRLeyo6wdAKkBVTF0hNsUOVSaDbvOPyX8lHehGVsZp7yP4qD06XHF1xBAzXYbQj2TvB/r+3obDb80T2URUaJ80qGxwx+k3nbkLfq2fGBQpzsujo1Dom68ycuc6g
X-OriginatorOrg: arm.com
X-MS-Exchange-CrossTenant-OriginalArrivalTime: 29 Apr 2026 15:16:08.8748
 (UTC)
X-MS-Exchange-CrossTenant-Network-Message-Id: fec0cec1-6fcb-4fe0-cd4a-08dea6023dc8
X-MS-Exchange-CrossTenant-Id: f34e5979-57d9-4aaa-ad4d-b122a662184d
X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=f34e5979-57d9-4aaa-ad4d-b122a662184d;Ip=[4.158.2.129];Helo=[outbound-uk1.az.dlp.m.darktrace.com]
X-MS-Exchange-CrossTenant-AuthSource:
	DU6PEPF0000A7E3.eurprd02.prod.outlook.com
X-MS-Exchange-CrossTenant-AuthAs: Anonymous
X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem
X-MS-Exchange-Transport-CrossTenantHeadersStamped: AM8PR08MB5747
X-purgate-ID: tlsNG-bad1c0/1777475775-414B1A53-EDF7DF5E/10/73395122804
X-purgate-type: spam
X-purgate-size: 1516

SGkgT2xla3NpaSwNCg0KSSB3b3VsZCByZXBocmFzZSDigJx4ZW46IHJlbmFtZSBwMm1faXBhX2Jp
dHMgdG8gcDJtX2dwYV9iaXRz4oCdIGludG8gc29tZXRoaW5nIGxpa2UNCuKAnHhlbi9kZXZpY2Ut
dHJlZTogdXNlIHAybV9ncGFfYml0cyBpbiBjb21tb24gY29kZeKAnSwgYmVjYXVzZSB3ZSBhcmUg
bm90IHJlYWxseQ0KcmVuYW1pbmcgcDJtX2lwYV9iaXRzLCB3ZSBhcmUgb25seSBkZWZpbmluZyBh
biBhbGlhcy4NCg0KPiBPbiAyOCBBcHIgMjAyNiwgYXQgMTU6MzMsIE9sZWtzaWkgS3Vyb2Noa28g
PG9sZWtzaWkua3Vyb2Noa29AZ21haWwuY29tPiB3cm90ZToNCj4gDQo+IFRoZSBJUEEgdGVybWlu
b2xvZ3kgaXMgQXJtLXNwZWNpZmljLCBzbyByZW5hbWUgcDJtX2lwYV9iaXRzIHRvDQo+IHAybV9n
cGFfYml0cyB0byB1c2UgYXJjaGl0ZWN0dXJlLW5ldXRyYWwgbmFtaW5nIGluDQo+IHhlbi9jb21t
b24vZGV2aWNlLXRyZWUvIGNvZGUuDQo+IA0KPiBObyBmdW5jdGlvbmFsIGNoYW5nZXMuDQo+IA0K
PiBSZXBvcnRlZC1ieTogSmFuIEJldWxpY2ggPGpiZXVsaWNoQHN1c2UuY29tPg0KPiBTaWduZWQt
b2ZmLWJ5OiBPbGVrc2lpIEt1cm9jaGtvIDxvbGVrc2lpLmt1cm9jaGtvQGdtYWlsLmNvbT4NCj4g
LS0tDQo+IENoYW5nZXMgaW4gdjQ6DQo+IC0gTm90aGluZyBjaGFuZ2VkIG9ubHkgcmViYXNlLg0K
PiAtLS0NCj4gQ2hhbmdlcyBpbiB2MzoNCj4gLSBJbnRyb2R1Y2UgI2RlZmluZSBwMm1fZ3BhX2Jp
dHMgcDJtX2lwYV9iaXRzIGZvciBBcm0gaW5zdGVhZCBvZg0KPiAgIHJlbmFtaW5nIG9mIHAybV9p
cGFfYml0cyB0byBwMm1fZ3BhX2JpdHMgdG8ga2VlcCBBcm0gcGFydCBvZg0KPiAgIGNoYW5nZXMg
Y2xlYXJlciBhbmQga2VlcCB1c2luZyBBcm0tc3BlY2lmaWMgdGVybWlub2xneSBpbnNpZGUNCj4g
ICBBcm0gY29kZS4NCj4gLS0tDQo+IENoYW5nZXMgaW4gdjI6DQo+IC0gTmV3IHBhdGNoLg0KPiAt
LS0NCj4gLS0tDQoNCklmIHRoZSBtYWludGFpbmVyIGFncmVlcyBhbmQgdGhlIHRpdGxlIGlzIGZp
eGVkOg0KDQpSZXZpZXdlZC1ieTogTHVjYSBGYW5jZWxsdSA8bHVjYS5mYW5jZWxsdUBhcm0uY29t
Pg0KDQpDaGVlcnMsDQpMdWNhDQoNCg==


From xen-devel-bounces@lists.xenproject.org Wed Apr 29 15:35:43 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 29 Apr 2026 15:35:43 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1297519.1573509 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wI6wq-0003Ef-P4; Wed, 29 Apr 2026 15:35:36 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1297519.1573509; Wed, 29 Apr 2026 15:35: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 1wI6wq-0003EY-Lw; Wed, 29 Apr 2026 15:35:36 +0000
Received: by outflank-mailman (input) for mailman id 1297519;
 Wed, 29 Apr 2026 15:35:35 +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 1wI6wp-0003ES-6u
 for xen-devel@lists.xenproject.org; Wed, 29 Apr 2026 15:35:35 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wI6wo-009MDe-J5
 for xen-devel@lists.xenproject.org; Wed, 29 Apr 2026 17:35:34 +0200
Received: from [10.42.69.6] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <jgross@suse.com>)
 id 69f2253e-e002-0a2a0a5209dd-0a2a45069ce4-20
 for <xen-devel@lists.xenproject.org>; Wed, 29 Apr 2026 17:35:34 +0200
Received: from [209.85.208.45] (helo=mail-ed1-f45.google.com)
 by tlsNG-16d1c6.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.1)
 (envelope-from <jgross@suse.com>)
 id 69f22546-7371-0a2a45060019-d155d02dd5d2-3
 for <xen-devel@lists.xenproject.org>; Wed, 29 Apr 2026 17:35:34 +0200
Received: by mail-ed1-f45.google.com with SMTP id
 4fb4d7f45d1cf-65c0891f4e9so21020107a12.1
 for <xen-devel@lists.xenproject.org>; Wed, 29 Apr 2026 08:35:34 -0700 (PDT)
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
 4fb4d7f45d1cf-67b220bb54csm886718a12.2.2026.04.29.08.35.32
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Wed, 29 Apr 2026 08:35:33 -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=google header.d=suse.com header.i="@suse.com" header.h="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=1777476934; x=1778081734; darn=lists.xenproject.org;
        h=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;
        bh=rhHfdQZE7ny9rQNg2FDMld30z0VMgFUh+gYPnSf3f88=;
        b=MHoEJ56eoIkiKwEuhPnZ9agjZYbrfvO4dbddPD3cjWB2DEAmtN1ZINVrLTUi7M81ym
         SzJEck7kyRIcXopqdIP4gaRBTfvZ0KSfvi9deiVfRKeTDSt3bnRxUY+21Txb62hNPZx6
         HiGmm6UlEo8LXmBNEAaIMKxI9ALzDMBpqf6CSIeNmIVJqXwbPTQyTFHTahVvUXMvQ/Fc
         00n1xSCsQSfYBieqdsP9EpSE9WuXpjlPKJLDSqYJy2eaXZ5bDKjVcKaJyYxd1g+MYGx2
         +l6+iRsAEVk/3QfJ/2Pd5CchxykHX35Bf2pg1GrbrFiQxOr7/b/T8UgdJW9p+W3EIIwj
         1YmA==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20251104; t=1777476934; x=1778081734;
        h=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;
        bh=rhHfdQZE7ny9rQNg2FDMld30z0VMgFUh+gYPnSf3f88=;
        b=WlEym5vQWR934pANI6k7mSilRY9DXBuT4b+3e7F70t5KWy1GMQ+2MS/tc4WJ7G08gg
         BA3iIRCwCfcAD4BIKx2cnFkBZKaQ5+XLaYKvOXzIKt0S/+5tRTbSohzLFy0F/k4MdB0T
         K8Rbf7f8JKRJ4w/QYAcfxw/AzhTVPCbajRLdlsZKp3fZ+6HztuTZ1fA5n8oRdJlG24aK
         aOEBjwjkFhCPikzim3I2BW0MsBs4mTMEB+9cJafz4lHOVfR2y4cE3RiXKNcqzcD4gVHw
         CBZ6ZxLN/qz8ZyB62cKJ59apC6SoJZkvGiVidjWYr/QW/wahFo8maM0fzO64MbQSFinl
         LO4A==
X-Forwarded-Encrypted: i=1; AFNElJ/hnYpWx5VOBAaeRm9kwzOmT5VRMLYYpUeq0siS4kafbeKWmY007RbIRSdii5ij8rbW2mKJ3yLGSQo=@lists.xenproject.org
X-Gm-Message-State: AOJu0YxIbzWjGar8xCsRkThwqRJV6u7bQE4gJO3YbnL8bGpAxgUyKlBu
	FLA5NPlCoCCNXonx9z/sXhfCauuoQ8pSnp9fcnDORwcA7LONglA+WbBzOORQ8/VB5as=
X-Gm-Gg: AeBDieu67W2Bb5VsF4LAZ7C/eurOWT5/YoUOm1QtCEZsZADlRp3ZbzP5m5nkljM8XHq
	CHLVa3u++GjXHonPsx0+W09xcZaD4hB2R9ma9PVXJeU/k+WtULTFEPceZA58w+i/YoB43XokUYe
	IWS7UqEN0Xn4+2TOOI4uRVVHMH+cPJRF8+dFgOeEsxUYYO21e6nc0dAiUZxs1/W7NkPeAaBSgQ5
	RXYsHP/HbAv+mg1KnbFNervXRSMKJ3QRvfTQQFq1tORibuXjIIlj9uWgSmFnoZoaCelwgMMGii9
	WlP2iyXaxllNUvB1CDGp3evsDnzgqerXwYKIxEJc1KnMK47PrFujSghYwX0rhXaNJtWP/R6I8CJ
	NY+XGVsZH016nMR6jCz+JCfZaC1ZHx7ZjJaF1UwLQwZxceFDosohXww9YLbQIoksvw+oQrLwFrS
	IqqQrhGuLs3Mka99Jq6TbJNsuUQ488HeKVs0DEvD+TFoqePYKC1uPOTy5MIYNuj7kiUta0B4BoQ
	eu8tid/QjjkCiW8lh7QxPSknOmn5w0jPZdGTVkgelX6+of2GeqKsPCzZQSJK0w7
X-Received: by 2002:a05:6402:3897:b0:678:a507:e81e with SMTP id 4fb4d7f45d1cf-679bb0893fbmr4782609a12.22.1777476933708;
        Wed, 29 Apr 2026 08:35:33 -0700 (PDT)
Message-ID: <67632532-8421-4a10-a961-f7c4f05b177b@suse.com>
Date: Wed, 29 Apr 2026 17:35:32 +0200
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [RFC PATCH] virtio-mmio: add xenbus probing
To: Val Packett <val@invisiblethingslab.com>,
 "Michael S. Tsirkin" <mst@redhat.com>, Jason Wang <jasowang@redhat.com>,
 Xuan Zhuo <xuanzhuo@linux.alibaba.com>, =?UTF-8?Q?Eugenio_P=C3=A9rez?=
 <eperezma@redhat.com>
Cc: =?UTF-8?Q?Marek_Marczykowski-G=C3=B3recki?=
 <marmarek@invisiblethingslab.com>, Viresh Kumar <viresh.kumar@linaro.org>,
 xen-devel@lists.xenproject.org, linux-kernel@vger.kernel.org,
 virtualization@lists.linux.dev
References: <20260429141339.74472-1-val@invisiblethingslab.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: <20260429141339.74472-1-val@invisiblethingslab.com>
Content-Type: multipart/signed; micalg=pgp-sha256;
 protocol="application/pgp-signature";
 boundary="------------g0UC1Ck4AStDbbtB0H4eW8y7"
X-purgate-ID: tlsNG-16d1c6/1777476934-CE168D75-4B82E3CD/0/0
X-purgate-type: clean
X-purgate-size: 18626

This is an OpenPGP/MIME signed message (RFC 4880 and 3156)
--------------g0UC1Ck4AStDbbtB0H4eW8y7
Content-Type: multipart/mixed; boundary="------------ue4BYSUfwU0oTBtHJ9in4V9z";
 protected-headers="v1"
From: =?UTF-8?B?SsO8cmdlbiBHcm/Dnw==?= <jgross@suse.com>
To: Val Packett <val@invisiblethingslab.com>,
 "Michael S. Tsirkin" <mst@redhat.com>, Jason Wang <jasowang@redhat.com>,
 Xuan Zhuo <xuanzhuo@linux.alibaba.com>, =?UTF-8?Q?Eugenio_P=C3=A9rez?=
 <eperezma@redhat.com>
Cc: =?UTF-8?Q?Marek_Marczykowski-G=C3=B3recki?=
 <marmarek@invisiblethingslab.com>, Viresh Kumar <viresh.kumar@linaro.org>,
 xen-devel@lists.xenproject.org, linux-kernel@vger.kernel.org,
 virtualization@lists.linux.dev
Message-ID: <67632532-8421-4a10-a961-f7c4f05b177b@suse.com>
Subject: Re: [RFC PATCH] virtio-mmio: add xenbus probing
References: <20260429141339.74472-1-val@invisiblethingslab.com>
In-Reply-To: <20260429141339.74472-1-val@invisiblethingslab.com>

--------------ue4BYSUfwU0oTBtHJ9in4V9z
Content-Type: multipart/mixed; boundary="------------HCshP870xeA72w06G6OVMqA8"

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

U29tZSBtaW5vciBkZXRhaWxzIGZyb20gdGhlIFhlbiBzaWRlIG9mIHRoaW5nczoNCg0KT24g
MjkuMDQuMjYgMTU6NTIsIFZhbCBQYWNrZXR0IHdyb3RlOg0KPiBUaGUgZXhwZXJpbWVudGFs
IHZpcnRpby1tbWlvIHN1cHBvcnQgZm9yIFhlbiB3YXMgaW5pdGlhbGx5IGRldmVsb3BlZA0K
PiBvbiBhYXJjaDY0LCBzbyBkZXZpY2UgdHJlZXMgd2VyZSB1c2VkIHRvIGNvbmZpZ3VyZSB0
aGUgbW1pbyBkZXZpY2VzLA0KPiB3aXRoIGFyYml0cmFyeSB2R0lDIGludGVycnVwdHMgdXNl
ZCBieSB0aGUgaHlwZXJ2aXNvci4gT24geDg2XzY0DQo+IGhvd2V2ZXIsIHRoZSBvbmx5IHJl
YXNvbmFibGUgd2F5IHRvIGludGVycnVwdCB0aGUgZ3Vlc3QgaXMgb3ZlciBYZW4NCj4gZXZl
bnQgY2hhbm5lbHMsIHdoaWNoIGNhbiBvbmx5IGJlIGFjcXVpcmVkIGJ5IGNoaWxkcmVuIG9m
IHhlbmJ1cywNCg0KTW9yZSBleGFjdDogaW50ZXJkb21haW4gZXZlbnQgY2hhbm5lbHMgbmVl
ZCB0byBiZSBjb25uZWN0ZWQgdG8gYSB4ZW5idXMNCmRldmljZS4gQnV0IHlvdSBhcmUgbmVl
ZGluZyB0aG9zZSwgc28gZm9yIHlvdXIgdXNlIGNhc2UgdGhlIGFib3ZlIHN0YXRlbWVudA0K
aXMgY29ycmVjdC4NCg0KPiB0aGUgdmlydHVhbCBidXMgZHJpdmVuIGJ5IFhlbidzIGNvbmZp
Z3VyYXRpb24gZGF0YWJhc2UsIFhlblN0b3JlLg0KPiBJdCBpcyBhbHNvIGEgbW9yZSBjb252
ZW5pZW50IGFuZCAiWGVuLWlzaCIgd2F5IHRvIHByb3Zpc2lvbiBkZXZpY2VzLg0KPiANCj4g
SW1wbGVtZW50IGEgeGVuYnVzIGNsaWVudCBmb3IgdmlydGlvLW1taW8gd2hpY2ggbmVnb3Rp
YXRlcyBhbg0KPiBldmVudCBjaGFubmVsIGFuZCBwcm92aWRlcyBpdCBhcyBhIHBsYXRmb3Jt
IElSUSB0byB0aGUNCj4gdmlydGlvLW1taW8gZHJpdmVyLg0KPiANCj4gDQo+IFNpZ25lZC1v
ZmYtYnk6IFZhbCBQYWNrZXR0IDx2YWxAaW52aXNpYmxldGhpbmdzbGFiLmNvbT4NCj4gLS0t
DQo+IA0KPiBIaSwNCj4gDQo+IEkndmUgYmVlbiB3b3JraW5nIG9uIHBvcnRpbmcgdmlydGlv
LW1taW8gc3VwcG9ydCBmcm9tIEFybSB0byB4ODZfNjQsDQo+IHdpdGggdGhlIGdvYWwgb2Yg
cnVubmluZyB2aG9zdC11c2VyLWdwdSB0byBwb3dlciBXYXlsYW5kL0dQVSBpbnRlZ3JhdGlv
bg0KPiBmb3IgUXViZXMgT1MuIChJJ20gYXdhcmUgb2YgdmFyaW91cyBwcm9wb3NhbHMgZm9y
IGFsdGVybmF0aXZlIHZpcnRpbw0KPiB0cmFuc3BvcnRzIGJ1dCB2aXJ0aW8tbW1pbyBzZWVt
cyB0byBiZSB0aGUgb25seSBvbmUgdGhhdCAqaXMqIHVwc3RyZWFtDQo+IGFscmVhZHkgYW5k
IGp1c3QgV29ya3MuLikgU2V0dGluZyB1cCB2aXJ0aW8tbW1pbyB0aHJvdWdoIHhlbmJ1cywg
aW5pdGlhbGx5DQo+IG1vdGl2YXRlZCBqdXN0IGJ5IGV2ZW50IGNoYW5uZWxzIGJlaW5nIHRo
ZSBvbmx5IHJlYWwgd2F5IHRvIGdldCBpbnRlcnJ1cHRzDQo+IHdvcmtpbmcgb24gSFZNLCB0
dXJuZWQgb3V0IHRvIGdlbmVyYWxseSBiZSBxdWl0ZSBwbGVhc2FudCBhbmQgbmljZSA6KQ0K
PiANCj4gSSdkIGxpa2UgdG8gZ2V0IHNvbWUgZWFybHkgZmVlZGJhY2sgZm9yIHRoaXMgcGF0
Y2gsIHBhcnRpY3VsYXJseQ0KPiB0aGUgZ2VuZXJhbCBzdHVmZjoNCj4gDQo+ICogaXMgdGhp
cyB3aG9sZSB0aGluZyBhY2NlcHRhYmxlIGluIGdlbmVyYWw/DQo+ICogc2hvdWxkIGl0IGJl
IGV4dHJhY3RlZCBpbnRvIGEgZGlmZmVyZW50IGZpbGU/DQo+ICogKGZyb20gdGhlIFhlbiBz
aWRlKSBhbnkgaW5wdXQgb24gdGhlIHhlbnN0b3JlIGtleXMsIHdoYXQgZ29lcyB3aGVyZT8N
Cg0KWW91IHNob3VsZCBhZGQgc29tZSBkb2N1bWVudGF0aW9uIGluIHRoZSBYZW4gc291cmNl
IHRyZWUgcmVnYXJkaW5nIHRoZQ0KWGVuc3RvcmUga2V5cyAoc2VlIGRvY3MvbWlzYy94ZW5z
dG9yZS1wYXRocy5wYW5kb2MgdGhlcmUpLg0KDQo+ICogYW55dGhpbmcgZWxzZSB0byBrZWVw
IGluIG1pbmQ/DQo+IA0KPiBJdCBkb2VzIHNlZW0gc2ltcGxlIGVub3VnaCwgc28gaG9wZWZ1
bGx5IHRoaXMgY2FuIGJlIGRvbmU/DQo+IA0KPiBUaGUgY29ycmVzcG9uZGluZyB1c2Vyc3Bh
Y2Utc2lkZSBXSVAgaXMgYXZhaWxhYmxlIGF0Og0KPiBodHRwczovL2dpdGh1Yi5jb20vUXVi
ZXNPUy94ZW4tdmhvc3QtZnJvbnRlbmQNCj4gDQo+IEFuZCB0aGUgcmVxdWlyZWQgRE1PUCBm
b3IgZmlyaW5nIHRoZSBldnRjaG4gZXZlbnRzIHdpbGwgYmUgc2VudA0KPiB0byB4ZW4tZGV2
ZWwgc2hvcnRseSBhcyB3ZWxsLg0KPiANCj4gVGhhbmtzLA0KPiB+dmFsDQo+IA0KPiAtLS0N
Cj4gICBkcml2ZXJzL3ZpcnRpby9LY29uZmlnICAgICAgIHwgICA3ICsrDQo+ICAgZHJpdmVy
cy92aXJ0aW8vdmlydGlvX21taW8uYyB8IDE3NyArKysrKysrKysrKysrKysrKysrKysrKysr
KysrKysrKysrLQ0KPiAgIDIgZmlsZXMgY2hhbmdlZCwgMTgzIGluc2VydGlvbnMoKyksIDEg
ZGVsZXRpb24oLSkNCj4gDQo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL3ZpcnRpby9LY29uZmln
IGIvZHJpdmVycy92aXJ0aW8vS2NvbmZpZw0KPiBpbmRleCBjZTViYzBkOWVhMjguLjU2YmMy
YjEwNTI2YiAxMDA2NDQNCj4gLS0tIGEvZHJpdmVycy92aXJ0aW8vS2NvbmZpZw0KPiArKysg
Yi9kcml2ZXJzL3ZpcnRpby9LY29uZmlnDQo+IEBAIC0xNzEsNiArMTcxLDEzIEBAIGNvbmZp
ZyBWSVJUSU9fTU1JT19DTURMSU5FX0RFVklDRVMNCj4gICANCj4gICAJIElmIHVuc3VyZSwg
c2F5ICdOJy4NCj4gICANCj4gK2NvbmZpZyBWSVJUSU9fTU1JT19YRU5CVVMNCj4gKwlib29s
ICJNZW1vcnkgbWFwcGVkIHZpcnRpbyBkZXZpY2VzIHBhcmFtZXRlciBwYXJzaW5nIg0KPiAr
CWRlcGVuZHMgb24gVklSVElPX01NSU8gJiYgWEVODQo+ICsJc2VsZWN0IFhFTl9YRU5CVVNf
RlJPTlRFTkQNCj4gKwloZWxwDQo+ICsJIEFsbG93IHZpcnRpby1tbWlvIGRldmljZXMgaW5z
dGFudGlhdGlvbiBmb3IgWGVuIGd1ZXN0cyB2aWEgeGVuYnVzLg0KPiArDQo+ICAgY29uZmln
IFZJUlRJT19ETUFfU0hBUkVEX0JVRkZFUg0KPiAgIAl0cmlzdGF0ZQ0KPiAgIAlkZXBlbmRz
IG9uIERNQV9TSEFSRURfQlVGRkVSDQo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL3ZpcnRpby92
aXJ0aW9fbW1pby5jIGIvZHJpdmVycy92aXJ0aW8vdmlydGlvX21taW8uYw0KPiBpbmRleCA1
OTVjMjI3NGZiYjUuLjMyMjk1Mjg0YmRiZiAxMDA2NDQNCj4gLS0tIGEvZHJpdmVycy92aXJ0
aW8vdmlydGlvX21taW8uYw0KPiArKysgYi9kcml2ZXJzL3ZpcnRpby92aXJ0aW9fbW1pby5j
DQo+IEBAIC03MCw2ICs3MCwxMSBAQA0KPiAgICNpbmNsdWRlIDx1YXBpL2xpbnV4L3ZpcnRp
b19tbWlvLmg+DQo+ICAgI2luY2x1ZGUgPGxpbnV4L3ZpcnRpb19yaW5nLmg+DQo+ICAgDQo+
ICsjaWZkZWYgQ09ORklHX1ZJUlRJT19NTUlPX1hFTkJVUw0KPiArI2luY2x1ZGUgPHhlbi94
ZW4uaD4NCj4gKyNpbmNsdWRlIDx4ZW4veGVuYnVzLmg+DQo+ICsjaW5jbHVkZSA8eGVuL2V2
ZW50cy5oPg0KPiArI2VuZGlmDQo+ICAgDQo+ICAgDQo+ICAgLyogVGhlIGFsaWdubWVudCB0
byB1c2UgYmV0d2VlbiBjb25zdW1lciBhbmQgcHJvZHVjZXIgcGFydHMgb2YgdnJpbmcuDQo+
IEBAIC04MTAsMTMgKzgxNSwxODMgQEAgc3RhdGljIHN0cnVjdCBwbGF0Zm9ybV9kcml2ZXIg
dmlydGlvX21taW9fZHJpdmVyID0gew0KPiAgIAl9LA0KPiAgIH07DQo+ICAgDQo+ICsjaWZk
ZWYgQ09ORklHX1ZJUlRJT19NTUlPX1hFTkJVUw0KPiArc3RydWN0IHZpcnRpb19tbWlvX3hl
bl9pbmZvIHsNCj4gKwlzdHJ1Y3QgcmVzb3VyY2UgcmVzb3VyY2VzWzJdOw0KPiArCXVuc2ln
bmVkIGludCBldnRjaG47DQo+ICsJc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldjsNCj4g
K307DQo+ICsNCj4gK3N0YXRpYyBpbnQgdmlydGlvX21taW9feGVuX3Byb2JlKHN0cnVjdCB4
ZW5idXNfZGV2aWNlICpkZXYsDQo+ICsJCQljb25zdCBzdHJ1Y3QgeGVuYnVzX2RldmljZV9p
ZCAqaWQpDQo+ICt7DQo+ICsJaW50IGVycjsNCj4gKwlsb25nIGxvbmcgYmFzZSwgc2l6ZTsN
Cj4gKwljaGFyICptZW07DQo+ICsJc3RydWN0IHZpcnRpb19tbWlvX3hlbl9pbmZvICppbmZv
Ow0KPiArCXN0cnVjdCB4ZW5idXNfdHJhbnNhY3Rpb24geGJ0Ow0KPiArDQo+ICsJLyogVE9E
TzogYWxsb2NhdGUgYW4gdW51c2VkIGFkZHJlc3MgaGVyZSBhbmQgcGFzcyBpdCB0byB0aGUg
aG9zdCBpbnN0ZWFkICovDQoNCkluZGVlZC4NCg0KPiArCWVyciA9IHhlbmJ1c19zY2FuZihY
QlRfTklMLCBkZXYtPm90aGVyZW5kLCAiYmFzZSIsICIweCVsbHgiLA0KPiArCQkJICAgJmJh
c2UpOw0KPiArCWlmIChlcnIgPCAwKSB7DQo+ICsJCXhlbmJ1c19kZXZfZmF0YWwoZGV2LCBl
cnIsICJyZWFkaW5nIGJhc2UiKTsNCj4gKwkJcmV0dXJuIC1FSU5WQUw7DQo+ICsJfQ0KPiAr
DQo+ICsJbWVtID0geGVuYnVzX3JlYWQoWEJUX05JTCwgZGV2LT5vdGhlcmVuZCwgInNpemUi
LCBOVUxMKTsNCj4gKwlpZiAoWEVOQlVTX0lTX0VSUl9SRUFEKG1lbSkpDQo+ICsJCXJldHVy
biBQVFJfRVJSKG1lbSk7DQo+ICsJc2l6ZSA9IG1lbXBhcnNlKG1lbSwgTlVMTCk7DQo+ICsJ
a2ZyZWUobWVtKTsNCj4gKw0KPiArCWluZm8gPSBremFsbG9jX29iaigqaW5mbyk7DQo+ICsJ
aWYgKCFpbmZvKSB7DQo+ICsJCXhlbmJ1c19kZXZfZmF0YWwoZGV2LCAtRU5PTUVNLCAiYWxs
b2NhdGluZyBpbmZvIHN0cnVjdHVyZSIpOw0KPiArCQlyZXR1cm4gLUVOT01FTTsNCj4gKwl9
DQo+ICsNCj4gKwlpbmZvLT5yZXNvdXJjZXNbMF0uZmxhZ3MgPSBJT1JFU09VUkNFX01FTTsN
Cj4gKwlpbmZvLT5yZXNvdXJjZXNbMF0uc3RhcnQgPSBiYXNlOw0KPiArCWluZm8tPnJlc291
cmNlc1swXS5lbmQgPSBiYXNlICsgc2l6ZSAtIDE7DQo+ICsNCj4gKwllcnIgPSB4ZW5idXNf
YWxsb2NfZXZ0Y2huKGRldiwgJmluZm8tPmV2dGNobik7DQo+ICsJaWYgKGVycikgew0KPiAr
CQl4ZW5idXNfZGV2X2ZhdGFsKGRldiwgZXJyLCAieGVuYnVzX2FsbG9jX2V2dGNobiIpOw0K
PiArCQlnb3RvIGVycm9yX2luZm87DQo+ICsJfQ0KPiArDQo+ICsJZXJyID0gYmluZF9ldnRj
aG5fdG9faXJxKGluZm8tPmV2dGNobik7DQo+ICsJaWYgKGVyciA8PSAwKSB7DQo+ICsJCXhl
bmJ1c19kZXZfZmF0YWwoZGV2LCBlcnIsICJiaW5kX2V2dGNobl90b19pcnEiKTsNCj4gKwkJ
Z290byBlcnJvcl9ldnRjaGFuOw0KPiArCX0NCj4gKw0KPiArCWluZm8tPnJlc291cmNlc1sx
XS5mbGFncyA9IElPUkVTT1VSQ0VfSVJROw0KPiArCWluZm8tPnJlc291cmNlc1sxXS5zdGFy
dCA9IGluZm8tPnJlc291cmNlc1sxXS5lbmQgPSBlcnI7DQo+ICsNCj4gK2FnYWluOg0KPiAr
CWVyciA9IHhlbmJ1c190cmFuc2FjdGlvbl9zdGFydCgmeGJ0KTsNCg0KTm8gbmVlZCB0byB1
c2UgYSBYZW5zdG9yZSB0cmFuc2FjdGlvbiBoZXJlLiBUaGUgd3JpdHRlbiBub2RlKHMpIGFy
ZQ0KcmVnYXJkZWQgdG8gYmUgdmFsaWQgb25seSBhZnRlciBjYWxsaW5nIHhlbmJ1c19zd2l0
Y2hfc3RhdGUoKSB0byBzZXQNCnRoZSBmcm9udGVuZCBzdGF0ZSB0byBYZW5idXNTdGF0ZUlu
aXRpYWxpc2VkLg0KDQo+ICsJaWYgKGVycikgew0KPiArCQl4ZW5idXNfZGV2X2ZhdGFsKGRl
diwgZXJyLCAic3RhcnRpbmcgdHJhbnNhY3Rpb24iKTsNCj4gKwkJZ290byBlcnJvcl9pcnE7
DQo+ICsJfQ0KPiArDQo+ICsJZXJyID0geGVuYnVzX3ByaW50Zih4YnQsIGRldi0+bm9kZW5h
bWUsICJldmVudC1jaGFubmVsIiwgIiV1IiwNCj4gKwkJCSAgICBpbmZvLT5ldnRjaG4pOw0K
DQpXaXRoIGFsbG9jYXRpb24gb2YgdGhlIGJhc2UgYWRkcmVzcyB5b3UnZCB3YW50IHRvIHdy
aXRlIGl0IHRvIGFub3RoZXIgbm9kZSwNCm9mIGNvdXJzZS4NCg0KPiArCWlmIChlcnIpIHsN
Cj4gKwkJeGVuYnVzX3RyYW5zYWN0aW9uX2VuZCh4YnQsIDEpOw0KPiArCQl4ZW5idXNfZGV2
X2ZhdGFsKGRldiwgZXJyLCAiJXMiLCAid3JpdGluZyBldmVudC1jaGFubmVsIik7DQo+ICsJ
CWdvdG8gZXJyb3JfaXJxOw0KPiArCX0NCj4gKw0KPiArCWVyciA9IHhlbmJ1c190cmFuc2Fj
dGlvbl9lbmQoeGJ0LCAwKTsNCj4gKwlpZiAoZXJyKSB7DQo+ICsJCWlmIChlcnIgPT0gLUVB
R0FJTikNCj4gKwkJCWdvdG8gYWdhaW47DQo+ICsJCXhlbmJ1c19kZXZfZmF0YWwoZGV2LCBl
cnIsICJjb21wbGV0aW5nIHRyYW5zYWN0aW9uIik7DQo+ICsJCWdvdG8gZXJyb3JfaXJxOw0K
PiArCX0NCj4gKw0KPiArCWRldl9zZXRfZHJ2ZGF0YSgmZGV2LT5kZXYsIGluZm8pOw0KPiAr
CXhlbmJ1c19zd2l0Y2hfc3RhdGUoZGV2LCBYZW5idXNTdGF0ZUluaXRpYWxpc2VkKTsNCj4g
KwlyZXR1cm4gMDsNCj4gKw0KPiArZXJyb3JfaXJxOg0KPiArCXVuYmluZF9mcm9tX2lycWhh
bmRsZXIoaW5mby0+cmVzb3VyY2VzWzFdLnN0YXJ0LCBpbmZvKTsNCj4gK2Vycm9yX2V2dGNo
YW46DQo+ICsJeGVuYnVzX2ZyZWVfZXZ0Y2huKGRldiwgaW5mby0+ZXZ0Y2huKTsNCj4gK2Vy
cm9yX2luZm86DQo+ICsJa2ZyZWUoaW5mbyk7DQo+ICsNCj4gKwlyZXR1cm4gZXJyOw0KPiAr
fQ0KPiArDQo+ICtzdGF0aWMgdm9pZCB2aXJ0aW9fbW1pb194ZW5fYmFja2VuZF9jaGFuZ2Vk
KHN0cnVjdCB4ZW5idXNfZGV2aWNlICpkZXYsDQo+ICsJCQkJICAgZW51bSB4ZW5idXNfc3Rh
dGUgYmFja2VuZF9zdGF0ZSkNCj4gK3sNCj4gKwlzdHJ1Y3QgdmlydGlvX21taW9feGVuX2lu
Zm8gKmluZm8gPSBkZXZfZ2V0X2RydmRhdGEoJmRldi0+ZGV2KTsNCj4gKw0KPiArCXN3aXRj
aCAoYmFja2VuZF9zdGF0ZSkgew0KPiArCWNhc2UgWGVuYnVzU3RhdGVJbml0aWFsaXNpbmc6
DQo+ICsJY2FzZSBYZW5idXNTdGF0ZUluaXRXYWl0Og0KPiArCWNhc2UgWGVuYnVzU3RhdGVJ
bml0aWFsaXNlZDoNCj4gKwljYXNlIFhlbmJ1c1N0YXRlUmVjb25maWd1cmluZzoNCj4gKwlj
YXNlIFhlbmJ1c1N0YXRlUmVjb25maWd1cmVkOg0KPiArCWNhc2UgWGVuYnVzU3RhdGVVbmtu
b3duOg0KPiArCQlicmVhazsNCj4gKw0KPiArCWNhc2UgWGVuYnVzU3RhdGVDb25uZWN0ZWQ6
DQo+ICsJCWlmIChkZXYtPnN0YXRlICE9IFhlbmJ1c1N0YXRlSW5pdGlhbGlzZWQpIHsNCj4g
KwkJCWRldl93YXJuKCZkZXYtPmRldiwgInN0YXRlICVkIG9uIGNvbm5lY3QiLCBkZXYtPnN0
YXRlKTsNCj4gKwkJCWJyZWFrOw0KPiArCQl9DQo+ICsJCWluZm8tPnBkZXYgPSBwbGF0Zm9y
bV9kZXZpY2VfcmVnaXN0ZXJfcmVzbmRhdGEoJmRldi0+ZGV2LA0KPiArCQkJCSJ2aXJ0aW8t
bW1pbyIsIFBMQVRGT1JNX0RFVklEX0FVVE8sDQo+ICsJCQkJaW5mby0+cmVzb3VyY2VzLCBB
UlJBWV9TSVpFKGluZm8tPnJlc291cmNlcyksIE5VTEwsIDApOw0KPiArCQl4ZW5idXNfc3dp
dGNoX3N0YXRlKGRldiwgWGVuYnVzU3RhdGVDb25uZWN0ZWQpOw0KPiArCQlicmVhazsNCj4g
Kw0KPiArCWNhc2UgWGVuYnVzU3RhdGVDbG9zZWQ6DQo+ICsJCWlmIChkZXYtPnN0YXRlID09
IFhlbmJ1c1N0YXRlQ2xvc2VkKQ0KPiArCQkJYnJlYWs7DQo+ICsJCWZhbGx0aHJvdWdoOwkv
KiBNaXNzZWQgdGhlIGJhY2tlbmQncyBDbG9zaW5nIHN0YXRlLiAqLw0KPiArCWNhc2UgWGVu
YnVzU3RhdGVDbG9zaW5nOg0KPiArCQlwbGF0Zm9ybV9kZXZpY2VfdW5yZWdpc3RlcihpbmZv
LT5wZGV2KTsNCj4gKwkJeGVuYnVzX3N3aXRjaF9zdGF0ZShkZXYsIFhlbmJ1c1N0YXRlQ2xv
c2VkKTsNCj4gKwkJYnJlYWs7DQo+ICsNCj4gKwlkZWZhdWx0Og0KPiArCQl4ZW5idXNfZGV2
X2ZhdGFsKGRldiwgLUVJTlZBTCwgInNhdyBzdGF0ZSAlZCBhdCBmcm9udGVuZCIsDQo+ICsJ
CQkJIGJhY2tlbmRfc3RhdGUpOw0KPiArCQlicmVhazsNCj4gKwl9DQo+ICt9DQo+ICsNCj4g
K3N0YXRpYyB2b2lkIHZpcnRpb19tbWlvX3hlbl9yZW1vdmUoc3RydWN0IHhlbmJ1c19kZXZp
Y2UgKmRldikNCj4gK3sNCj4gKwlzdHJ1Y3QgdmlydGlvX21taW9feGVuX2luZm8gKmluZm8g
PSBkZXZfZ2V0X2RydmRhdGEoJmRldi0+ZGV2KTsNCj4gKw0KPiArCWtmcmVlKGluZm8pOw0K
PiArCWRldl9zZXRfZHJ2ZGF0YSgmZGV2LT5kZXYsIE5VTEwpOw0KPiArfQ0KPiArDQo+ICtz
dGF0aWMgY29uc3Qgc3RydWN0IHhlbmJ1c19kZXZpY2VfaWQgdmlydGlvX21taW9feGVuX2lk
c1tdID0gew0KPiArCXsgInZpcnRpbyIgfSwNCg0KUGxlYXNlIHVzZSAidmlydGlvLW1taW8i
IGhlcmUsIGFzIEkgY291bGQgaW1hZ2luZSAidmlydGlvLXBjaSIgZGV2aWNlcywgdG9vLg0K
DQoNCkp1ZXJnZW4NCg0KPiArCXsgIiIgfSwNCj4gK307DQo+ICsNCj4gK3N0YXRpYyBzdHJ1
Y3QgeGVuYnVzX2RyaXZlciB2aXJ0aW9fbW1pb194ZW5fZHJpdmVyID0gew0KPiArCS5pZHMJ
CQk9IHZpcnRpb19tbWlvX3hlbl9pZHMsDQo+ICsJLnByb2JlCQkJPSB2aXJ0aW9fbW1pb194
ZW5fcHJvYmUsDQo+ICsJLm90aGVyZW5kX2NoYW5nZWQJPSB2aXJ0aW9fbW1pb194ZW5fYmFj
a2VuZF9jaGFuZ2VkLA0KPiArCS5yZW1vdmUJCQk9IHZpcnRpb19tbWlvX3hlbl9yZW1vdmUs
DQo+ICt9Ow0KPiArI2VuZGlmDQo+ICsNCj4gICBzdGF0aWMgaW50IF9faW5pdCB2aXJ0aW9f
bW1pb19pbml0KHZvaWQpDQo+ICAgew0KPiAtCXJldHVybiBwbGF0Zm9ybV9kcml2ZXJfcmVn
aXN0ZXIoJnZpcnRpb19tbWlvX2RyaXZlcik7DQo+ICsJaW50IHJldDsNCj4gKw0KPiArCXJl
dCA9IHBsYXRmb3JtX2RyaXZlcl9yZWdpc3RlcigmdmlydGlvX21taW9fZHJpdmVyKTsNCj4g
KwlpZiAocmV0KQ0KPiArCQlyZXR1cm4gcmV0Ow0KPiArDQo+ICsjaWZkZWYgQ09ORklHX1ZJ
UlRJT19NTUlPX1hFTkJVUw0KPiArCWlmICh4ZW5fZG9tYWluKCkpDQo+ICsJCXJldCA9IHhl
bmJ1c19yZWdpc3Rlcl9mcm9udGVuZCgmdmlydGlvX21taW9feGVuX2RyaXZlcik7DQo+ICsj
ZW5kaWYNCj4gKw0KPiArCXJldHVybiByZXQ7DQo+ICAgfQ0KPiAgIA0KPiAgIHN0YXRpYyB2
b2lkIF9fZXhpdCB2aXJ0aW9fbW1pb19leGl0KHZvaWQpDQo+ICAgew0KPiArI2lmZGVmIENP
TkZJR19WSVJUSU9fTU1JT19YRU5CVVMNCj4gKwlpZiAoeGVuX2RvbWFpbigpKQ0KPiArCQl4
ZW5idXNfdW5yZWdpc3Rlcl9kcml2ZXIoJnZpcnRpb19tbWlvX3hlbl9kcml2ZXIpOw0KPiAr
I2VuZGlmDQo+ICsNCj4gICAJcGxhdGZvcm1fZHJpdmVyX3VucmVnaXN0ZXIoJnZpcnRpb19t
bWlvX2RyaXZlcik7DQo+ICAgCXZtX3VucmVnaXN0ZXJfY21kbGluZV9kZXZpY2VzKCk7DQo+
ICAgfQ0KDQo=
--------------HCshP870xeA72w06G6OVMqA8
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-----

--------------HCshP870xeA72w06G6OVMqA8--

--------------ue4BYSUfwU0oTBtHJ9in4V9z--

--------------g0UC1Ck4AStDbbtB0H4eW8y7
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/Ey8FAmnyJUQFAwAAAAAACgkQsN6d1ii/Ey8y
5wf+OSYxptSMIwRtv0BfGWnvgqRxhhz/qAXi2Xf4Ac68tm/bKDB5ENs4K31KTXygguBeDozZQWyJ
mWsTDUccG+xXwhybnJtNCC6WPdwWrCIGpB0WtLb8yknuae45Gw0iMEwdBLgrd0aFvNboHvko0Amd
vppIpkgM5a6dL9pjomVWuTdxS82PLya9DfPOOlo9SqWoQkt2tGnD8I8H8gm/UMtkqdb5Dpa0EtEl
uBAXQrz49yOak+ewHBMpbsnMsbUpajQGAIUSTRNErB++QSmvnRgbMan9k/DEFDx8mOwHhtSWTJp9
ONxSMuAo27K3cQ6RGK3mK0MFjG+SUyFACqhqSEuUSg==
=wIXT
-----END PGP SIGNATURE-----

--------------g0UC1Ck4AStDbbtB0H4eW8y7--


From xen-devel-bounces@lists.xenproject.org Wed Apr 29 16:36:43 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 29 Apr 2026 16:36:43 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1297564.1573534 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wI7tm-000482-3C; Wed, 29 Apr 2026 16:36:30 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1297564.1573534; Wed, 29 Apr 2026 16:36: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 1wI7tl-00047v-WD; Wed, 29 Apr 2026 16:36:30 +0000
Received: by outflank-mailman (input) for mailman id 1297564;
 Wed, 29 Apr 2026 16:36: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 1wI7tk-0003pf-15; Wed, 29 Apr 2026 16:36:28 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wI7th-003Xgb-CU; Wed, 29 Apr 2026 18:36:26 +0200
Received: from [10.42.69.2] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <andrewcoop@xenbits.xen.org>)
 id 69f23381-2eae-0a2a0a5409dd-0a2a4502bf52-22
 for <multiple-recipients>; Wed, 29 Apr 2026 18:36:26 +0200
Received: from [104.130.215.37] (helo=mail.xenproject.org)
 by tlsNG-720697.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.1)
 (envelope-from <andrewcoop@xenbits.xen.org>)
 id 69f23389-af86-0a2a45020019-6882d725c50c-3
 for <multiple-recipients>; Wed, 29 Apr 2026 18:36:26 +0200
Received: from xenbits.xenproject.org ([104.239.192.120])
 by mail.xenproject.org with esmtp (Exim 4.96)
 (envelope-from <andrewcoop@xenbits.xen.org>) id 1wI7tc-007jM9-2v;
 Wed, 29 Apr 2026 16:36:20 +0000
Received: from andrewcoop by xenbits.xenproject.org with local (Exim 4.96)
 (envelope-from <andrewcoop@xenbits.xen.org>) id 1wI7tc-0088Ru-2i;
 Wed, 29 Apr 2026 16:36: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.510 (Entity 5.510)
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 489 v2 (CVE-2026-23559,CVE-2026-23560,CVE-2026-23561,CVE-2026-23562,CVE-2026-42486)
 - Multiple RBAC issues in XAPI
Message-Id: <E1wI7tc-0088Ru-2i@xenbits.xenproject.org>
Date: Wed, 29 Apr 2026 16:36:20 +0000
X-purgate-ID: tlsNG-720697/1777480586-82F6E161-90DE8246/3/8721326451
X-purgate-type: bulk
X-purgate-size: 4128

--=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-23559,CVE-2026-23560,CVE-2026-23561,CVE-2026-23562,CVE-2026-42486 / XSA-489
                                                  version 2

                     Multiple RBAC issues in XAPI

UPDATES IN VERSION 2
====================

Fixes now merged and backported in XAPI.  Refer to the tagged releases.

ISSUE DESCRIPTION
=================

XAPI can configure different users with different roles, using Role
Based Access Control.  For more details, see:

  https://docs.xenserver.com/en-us/xencenter/current-release/rbac-overview.html#rbac-roles

The pool-admin role is fully privileged.  Notably, users with this role
can also SSH into the host as root.

The other administrator roles are pool-operator, vm-power-admin and
vm-admin, each of which are authorised to configure and manage various
aspects of the system.

Some settings are inadequately restricted, and can be set by a lower
privilege of administrator than expected.

 * CVE-2026-23559: A vm-admin can set VBD.other_config:backend-local and
   turn arbitrary files in dom0 into VDIs (virtual disks) and give said
   disks to a VM they control.  This is an arbitrary read and/or modify
   of files in dom0.

 * CVE-2026-23560: A vm-admin can set VM.other-config:is_system_domain
   and mark a VM as a system domain.  System domains are ignored and
   left running during certain other host/pool operations, and may be
   hidden from view in tooling.

 * CVE-2026-23561: A vm-admin can set VM.other_config:storage_driver_domain
   and mark a VM as the storage domain for a particular host storage
   connection (PBD). Shutting down the VM can cause the PBD to be
   erroneously marked as unplugged when it is not.

 * CVE-2026-23562: Configuration of PCI passthrough is normally
   restricted to the pool-admin role.  However one API was missing this
   check, allowing a vm-admin access to unintended host hardware.

 * CVE-2026-42486: A vm-admin can set the VM.platform:hvm_serial
   parameter, which should be restricted to the pool-admin role, as it
   can allow arbitrary dom0 file write.

IMPACT
======

An authenticated user already granted one of pool-operator,
vm-power-admin or vm-admin can escalate their privilege to pool-admin.

VULNERABLE SYSTEMS
==================

Systems running all versions of XAPI are vulnerable.

The vulnerability is only exposed if RBAC is configured for the pool,
and certain users are assigned the not-fully-privileged administrator
roles.

MITIGATION
==========

Disable any users (RBAC subjects) which have been configured with the
vm-admin, vm-power-admin or pool-operator role.

RESOLUTION
==========

Fixes in XAPI have been merged and backported.  They are available in
the following releases:

  https://github.com/xapi-project/xen-api/releases/tag/v26.12.0
  https://github.com/xapi-project/xen-api/releases/tag/v26.1.11

NOTE REGARDING LACK OF EMBARGO
==============================

These issues were disclosed in public.

The researcher claimed 89 vulnerabilities.  Analysis by the XAPI team
concluded that only 5 were real vulnerabilities, with most being a
failure to read the RBAC documentation, and several appearing to be AI
hallucinations.

The researcher also took active steps to prevent coordinated disclosure.
Due to acting in bad faith, they are explicitly not credited.
-----BEGIN PGP SIGNATURE-----

iQFABAEBCAAqFiEEI+MiLBRfRHX6gGCng/4UyVfoK9kFAmnyM2sMHHBncEB4ZW4u
b3JnAAoJEIP+FMlX6CvZwPUIAMWaoFOOukhaMwGj+r6+k2lKvYhkYjbstVUrSTp2
PVZ17/xezOg/rHotBTdixWDVsztoJcw/pm/hRAcYqSJJ5+aYVrVzNOpVRRuFf2uK
p8Lkjmk/15MeDy68pEeIkoJEpdAdTsJvY5anHB0OtUug/NzmiDUDvcJbsBfAmEHS
pzeQAVoKICy4Z1/EWbKNofq+ja4gMEJDvNdM51jY9LUnOuNWgdP24Tjk9DjuZ3jz
TfWjpbrtEG7RgU0hgsZhsFMxzVh3JZPPIAkqLkZJouDH7SpRZe3t3AIPY5eUw80w
x94wdIJoiTS2FAEEyIRs7aa+DqyvLVhHhqJmMfHRl8/6KbA=
=ye+c
-----END PGP SIGNATURE-----

--=separator--


From xen-devel-bounces@lists.xenproject.org Wed Apr 29 16:41:46 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 29 Apr 2026 16:41:46 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1297649.1573559 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wI7yl-0007J5-6w; Wed, 29 Apr 2026 16:41:39 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1297649.1573559; Wed, 29 Apr 2026 16:41: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 1wI7yl-0007Iy-3H; Wed, 29 Apr 2026 16:41:39 +0000
Received: by outflank-mailman (input) for mailman id 1297649;
 Wed, 29 Apr 2026 16:41:38 +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 1wI7yj-0007Ir-Te
 for xen-devel@lists.xenproject.org; Wed, 29 Apr 2026 16:41:38 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wI7yj-00CiN9-49
 for xen-devel@lists.xenproject.org; Wed, 29 Apr 2026 18:41:37 +0200
Received: from [10.42.69.2] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <Jason.Andryuk@amd.com>)
 id 69f234bf-bab6-0a2a0a5309dd-0a2a45028ed4-2
 for <xen-devel@lists.xenproject.org>; Wed, 29 Apr 2026 18:41:36 +0200
Received: from [40.107.209.18]
 (helo=PH8PR06CU001.outbound.protection.outlook.com)
 by tlsNG-720697.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.1)
 (envelope-from <Jason.Andryuk@amd.com>)
 id 69f234be-af86-0a2a45020019-286bd1120710-3
 for <xen-devel@lists.xenproject.org>; Wed, 29 Apr 2026 18:41:36 +0200
Received: from MN2PR15CA0055.namprd15.prod.outlook.com (2603:10b6:208:237::24)
 by LV8PR12MB9153.namprd12.prod.outlook.com (2603:10b6:408:185::17)
 with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9870.16; Wed, 29 Apr
 2026 16:41:27 +0000
Received: from BL6PEPF00020E62.namprd04.prod.outlook.com
 (2603:10b6:208:237:cafe::78) by MN2PR15CA0055.outlook.office365.com
 (2603:10b6:208:237::24) with Microsoft SMTP Server (version=TLS1_3,
 cipher=TLS_AES_256_GCM_SHA384) id 15.20.9846.30 via Frontend Transport; Wed,
 29 Apr 2026 16:41:26 +0000
Received: from satlexmb08.amd.com (165.204.84.17) by
 BL6PEPF00020E62.mail.protection.outlook.com (10.167.249.23) with Microsoft
 SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id
 15.20.9846.18 via Frontend Transport; Wed, 29 Apr 2026 16:41:26 +0000
Received: from SATLEXMB04.amd.com (10.181.40.145) by satlexmb08.amd.com
 (10.181.42.217) with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.2.2562.17; Wed, 29 Apr
 2026 11:41:24 -0500
Received: from satlexmb07.amd.com (10.181.42.216) by SATLEXMB04.amd.com
 (10.181.40.145) with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2507.39; Wed, 29 Apr
 2026 11:41:24 -0500
Received: from [172.18.112.162] (10.180.168.240) by satlexmb07.amd.com
 (10.181.42.216) with Microsoft SMTP Server id 15.2.2562.17 via Frontend
 Transport; Wed, 29 Apr 2026 11:41:23 -0500
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@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=RTe+C2chu6NGMAZzqH65CgXVjAz/G00mEvCavKkMPbWAVAamxTa59cDWJpzMUEjMhNy5KDhI2SDKSzx8JVJPpxxT3HPm0oy/CgzfemZdAoETPStIX14BFwhr1eMWwwAe1YAATItHkyAJcDJ5YiPkPLBTYdSf96YX9Weax8EAclUBCweyteGT0pXo5+FXFvyTs+7g04vxxoC1E4TxVW8mJBwN3yUbJGb8d6J1M60SXOdGPz9uVXqujWy8xcjnlwMcfgBMAfq3405e9D4eQIatwMu/37FKagp+pAlqmzKotJeD8AHVy07pCzSvCCA6AQjxgKbEs7IwKWkGnsNdkn5ymg==
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com;
 s=arcselector10001;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1;
 bh=PLZdDdf+YT2XXeniydDvja7axsW3ZlGefW/HwhAhIl4=;
 b=A4apqci0Xfx256SbYNWxidn4KtNRdlGnry8KJOwL/NJVByM79ki60JbohLbnEUVP2HGFtpO52yBkxmJ6aTWbWjYBh1iPjWGCKkyzAfx9paZvMmCMepQUd6DbCiQwfz4rG/j59VWZUgbC08pK1o5//7mLVQCfYU2YqsrTfoWFVUwm0QK+Cpu5rKlJofU7c36M9h6m1JTviN+jCHKBku9hIBvHiSzlLRMNpfOfh5OlGuzxdyEhl1SD5L1troPKcHLP+Rv8NKKNxJh3eKoxai/R4RFITQe6DWqiR+v4/OwZ7w0UW9WJIKpecBv6NhahYGWtWMQjOV9DIojMdgKuVfwkxQ==
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=PLZdDdf+YT2XXeniydDvja7axsW3ZlGefW/HwhAhIl4=;
 b=FhlC1OEgXXCV7SNfUC5GhvKfddBHUBSUd8+dUVWz/ng6u5u0lda3UTACbrfZ2eZCme8lJaoAcdOL3FZLhg17PUKlDnKWHVTRqSl8I6p1LxStTYicGiTH9UaZMLf0kccKgP00VYPupBtC50B+rHyZLA7K9YURq8Gb7kb6Vg8tNnE=
X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 165.204.84.17)
 smtp.mailfrom=amd.com; dkim=none (message not signed)
 header.d=none;dmarc=pass action=none header.from=amd.com;
Received-SPF: Pass (protection.outlook.com: domain of amd.com designates
 165.204.84.17 as permitted sender) receiver=protection.outlook.com;
 client-ip=165.204.84.17; helo=satlexmb08.amd.com; pr=C
Message-ID: <e9cfb86e-704d-4a5d-bc59-ad05d07bf69a@amd.com>
Date: Wed, 29 Apr 2026 12:41:22 -0400
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
From: Jason Andryuk <jason.andryuk@amd.com>
Subject: Re: [PATCH v2 4/4] tools/xenstored: remove permissions related to
 dead domain
To: Juergen Gross <jgross@suse.com>, <xen-devel@lists.xenproject.org>
CC: Julien Grall <julien@xen.org>, Anthony PERARD <anthony.perard@vates.tech>
References: <20260429120619.1013440-1-jgross@suse.com>
 <20260429120619.1013440-5-jgross@suse.com>
Content-Language: en-US
In-Reply-To: <20260429120619.1013440-5-jgross@suse.com>
Content-Type: text/plain; charset="UTF-8"; format=flowed
Content-Transfer-Encoding: 7bit
Received-SPF: None (SATLEXMB04.amd.com: jason.andryuk@amd.com does not
 designate permitted sender hosts)
X-EOPAttributedMessage: 0
X-MS-PublicTrafficType: Email
X-MS-TrafficTypeDiagnostic: BL6PEPF00020E62:EE_|LV8PR12MB9153:EE_
X-MS-Office365-Filtering-Correlation-Id: a87ec23c-28b0-45b6-8cba-08dea60e2858
X-MS-Exchange-SenderADCheck: 1
X-MS-Exchange-AntiSpam-Relay: 0
X-Microsoft-Antispam:
	BCL:0;ARA:13230040|1800799024|82310400026|36860700016|376014|18002099003|56012099003|22082099003;
X-Microsoft-Antispam-Message-Info:
	QjfDs0kaLp0VlYT4fZRK1M/c0sB9pp81//9z2GW0LKV2UMFiFfu4E0PmAI7li9vhKL1a6Ke8C2zx1Y/hAS35FIW4SraDDJTam9v9SMO1EbvwOXiWSofu1SGKMwIjnMrC6capoc6LxJ4LS80c4/cF4p4MoG0ZVkiJYO4zu561nIM0J70UR40Ea09tPN+VUqEzgyjVxvf4+kAaP6P72BEG/NTcjBDm8Typ0oPEwMi7K12UN0HnEZ2iowUmzVBS1+p2y+6JR7xBGeEN0Xh1OA9U2iRxLavTJa239BmwnIqsNEoDkpKZwmExBhiSvYSTnzNoOayEh1Bny5e7cCBxeZvt5NqyL9NbZ+xzVaa2nxYE+fajxYQUMTZzOJjUfHw6YE+Tqp7Bz1I5BDQMmgwKBR8lMJ9qnh2IyiMboM2PUSYkjf+FOEk63sErGlGP6kSAmBgDTg6F1TITI4HGj3KTGtWdnDI96FM1fwGE7oFQYf7/qIOwUnp3zD/kg01I6qPpRZyYEqe/jJGYaP+qFr1QsQUYAAlJSEJlIZVvXjQZ5cww38f2Z6htRAG7tHJtFCiagM+2uaiDGRvAyR9HV58yZZYasvcDKf6f84xkkiDqNXVnE5773B9ZgEnyYeOKk2y05ZepqP2NAweZu3i1et/W4QS7CkvNNXs7T+lqDtcNkYiXtBjpUBc3XCOw04MNUpqg2ozMh0PGApTuLKkcNkwBzh8Yp3XQSc11tRORaaciPb7oJk9byulKm9jalk6fxMJemgotqeSCbNKVb455pjPftTJOMg==
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)(36860700016)(376014)(18002099003)(56012099003)(22082099003);DIR:OUT;SFP:1101;
X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1
X-MS-Exchange-AntiSpam-MessageData-0:
	qADEAC3AKFRbv40Yqb1N8AW5c1D7VweUpjPTDAZX59CJ1JJYnUfKxUAjNq5ddrYjJnbdrOVc5ytLVl7nlPqZqm619YN6Znox+IlqrOLYGwf92hontJc0zn3qtN4nVnjXXhHXDEM3O9tUAeWqg1og2Z899tHdlWsuzgzrSR1VlQdbOU4V5tUPG0ZoTZ57mpdfUgTxQHXq8LGZhG8iiS8iouMXcrrcusLNTIDtvi63R43aXc3v5aRhSNayLA9CfWBuzLSPLodhHn/Ro2qakPJKLQM5Usy6TsBQTmZgailXPlBVYoBXnh91IL3/AxaCIOVmzHxk+sQlRsE3V2EUalvbQsn5xMI2Zqiildar0n10gu4LPJ9jUq/viMRzpZVyEJ8RsthlwFLnmLII+Yr8Whjmi4k0AR8SjLcCHdVCxdClU81gTx9F3FJeW+VbigKlNpxP
X-OriginatorOrg: amd.com
X-MS-Exchange-CrossTenant-OriginalArrivalTime: 29 Apr 2026 16:41:26.9393
 (UTC)
X-MS-Exchange-CrossTenant-Network-Message-Id: a87ec23c-28b0-45b6-8cba-08dea60e2858
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:
	BL6PEPF00020E62.namprd04.prod.outlook.com
X-MS-Exchange-CrossTenant-AuthAs: Anonymous
X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem
X-MS-Exchange-Transport-CrossTenantHeadersStamped: LV8PR12MB9153
X-purgate-ID: tlsNG-720697/1777480896-80D7F161-CDF91E7B/0/0
X-purgate-type: clean
X-purgate-size: 503

On 2026-04-29 08:06, Juergen Gross wrote:
> Wit unprivileged domains now capable to use the @releaseDomain watch,

s/Wit/With/ again.

Regards,
Jason

> there is no reason not to remove any node permissions which relate to
> a domain which has been removed.
> 
> This resolves a complex scenario where a new domain could inherit the
> permissions of an old one with the same domid.
> 
> Signed-off-by: Juergen Gross <jgross@suse.com>
> Reviewed-by: Jason Andryuk <jason.andryuk@amd.com>


From xen-devel-bounces@lists.xenproject.org Wed Apr 29 16:55:09 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 29 Apr 2026 16:55:09 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1297682.1573568 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wI8Bi-0000j3-A3; Wed, 29 Apr 2026 16:55:02 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1297682.1573568; Wed, 29 Apr 2026 16:55: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 1wI8Bi-0000iw-7K; Wed, 29 Apr 2026 16:55:02 +0000
Received: by outflank-mailman (input) for mailman id 1297682;
 Wed, 29 Apr 2026 16:55:01 +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.19dda2a3d88000f373@swg.vates.tech>)
 id 1wI8Bg-0000iq-Hu
 for xen-devel@lists.xenproject.org; Wed, 29 Apr 2026 16:55:01 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wI8Bf-00DXPO-RK
 for xen-devel@lists.xenproject.org; Wed, 29 Apr 2026 18:54:59 +0200
Received: from [10.42.69.8] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1) (envelope-from
 <prod-mta-13.8631fc262581453bbf619ec5b2062170.19dda2a3d88000f373@swg.vates.tech>)
 id 69f237c2-e002-0a2a0a5209dd-0a2a4508b90a-18
 for <xen-devel@lists.xenproject.org>; Wed, 29 Apr 2026 18:54:59 +0200
Received: from [185.255.28.34] (helo=prod-mta-13.swg-srv.net)
 by tlsNG-c1860d.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.1)
 (envelope-from
 <prod-mta-13.8631fc262581453bbf619ec5b2062170.19dda2a3d88000f373@swg.vates.tech>)
 id 69f237e3-63b5-0a2a45080019-b9ff1c22822f-3
 for <xen-devel@lists.xenproject.org>; Wed, 29 Apr 2026 18:54:59 +0200
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
 19dda2a3d88000f373.005 for <xen-devel@lists.xenproject.org>
 (version=TLSv1.3 cipher=TLS_AES_256_GCM_SHA384);
 Wed, 29 Apr 2026 16:54:54 +0000
Received: from [192.168.1.18] (88-175-170-134.subs.proxad.net [88.175.170.134])
 (Authenticated sender: teddy.astie)
 by mail2.vates.fr (Postfix) with ESMTPSA id E2CA986484;
 Wed, 29 Apr 2026 18:54:49 +0200 (CEST)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@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=tPxjCeuXw+PNWa5aL1B7SkZUldWs8bQSo7/uIWCVxQE=;
 h=from:subject:date:message-id:to:cc:mime-version:content-type:in-reply-to:references:feedback-id;
 b=iK33oN+HlKXnuzRGtXmCAs8hQKlIPet7lI2bKWVSeonf/MuGZmlMdnX8BAXYNVTz5atD211NS
 qPNADF9oNZeO1nMFF7ALTYz32OTgaEOQHPJTqTX3mNsjS/oPBdsptElbeyVuSytav+AF00Yy/pX
 vT/rC1+vlEkTmSX575Nbca21DWJldWVvzqqTYi475XUmoCZu3avNSILZabY8LIWqEkiV0PH6vjP
 86/z9fG/OaFhs/yGqAQCdZZ+Aq63AJO9+AYGlAyqBslVAwnXdckQ3510WGODJvo5JRs+dQ1UkFM
 +ze/4jAzODEZ8PjYz5sUkEBnIjucWS3vDVSbJi3Xuv7g==
X-Zone-Loop: f5fc6aa7fb3d2a80262c364e8869db00cebd8a22257d
x-campaign-type: default
x-transaction-id: acad869d-85a3-4603-b747-bf2ace67da70
x-swg-uid: 01-f95f651f-3ae0-4cd0-b7b1-e0d56d10c2ba
X-Mailer: Sweego
Message-ID:
 <1777481694.8631fc262581453bbf619ec5b2062170.19dda2a3d88000f373@vates.tech>
x-swg-bid: 1777481694.8631fc262581453bbf619ec5b2062170.19dda2a3d88000f373
Feedback-ID: default:8631fc262581453bbf619ec5b2062170:Sweego
x-campaign-id: default
x-client-id: 8631fc262581453bbf619ec5b2062170
X-Originating-IP: [37.26.189.201]
Date: Wed, 29 Apr 2026 18:54:49 +0200
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH] nestedsvm: Clear GIF when injecting VMEXIT
To: Ross Lagerwall <ross.lagerwall@citrix.com>, xen-devel@lists.xenproject.org
Cc: Jan Beulich <jbeulich@suse.com>, Andrew Cooper
 <andrew.cooper3@citrix.com>, =?UTF-8?Q?Roger_Pau_Monn=C3=A9?=
 <roger.pau@citrix.com>, Jason Andryuk <jason.andryuk@amd.com>
References: <20260423161112.50221-1-ross.lagerwall@citrix.com>
Content-Language: en-US
From: Teddy Astie <teddy.astie@vates.tech>
In-Reply-To: <20260423161112.50221-1-ross.lagerwall@citrix.com>
X-BM-Disclaimer: Yes
Content-Type: multipart/alternative; boundary="-=Part.2c5.179858d92bc580ea.19dda2a2bba.f9f3b2a504f764f4=-"
X-Bm-Milter-Handled: 4ffbd6c1-ee69-4e1b-aabd-f977039bd3e2
X-Bm-Transport-Timestamp: 1777481690042
X-purgate-ID: tlsNG-c1860d/1777481699-C1D6BDB1-E38CF011/0/0
X-purgate-type: clean
X-purgate-size: 2016

---=Part.2c5.179858d92bc580ea.19dda2a2bba.f9f3b2a504f764f4=-
Content-Type: text/plain; charset=utf-8
Content-Transfer-Encoding: quoted-printable

Le 23/04/2026 =C3=A0 18:13, Ross Lagerwall a =C3=A9crit=C2=A0:
> If L1 executes VMRUN with the GIF set and it fails consistency checks,
> Xen will inject a VMEXIT and fail the assert checking the GIF is cleared=
=2E
>=20
> Instead, clear the GIF when injecting a VMEXIT to match what hardware
> does=2E
>=20
> Fixes: 9a779e4fc161 ("Implement SVM specific part for Nested Virtualizat=
ion")
> Signed-off-by: Ross Lagerwall <ross=2Elagerwall@citrix=2Ecom>
> ---
>   xen/arch/x86/hvm/svm/nestedsvm=2Ec | 4 ++--
>   1 file changed, 2 insertions(+), 2 deletions(-)
>=20
> diff --git a/xen/arch/x86/hvm/svm/nestedsvm=2Ec b/xen/arch/x86/hvm/svm/n=
estedsvm=2Ec
> index ef6fa5d23b67=2E=2Ef89b087a1155 100644
> --- a/xen/arch/x86/hvm/svm/nestedsvm=2Ec
> +++ b/xen/arch/x86/hvm/svm/nestedsvm=2Ec
> @@ -733,9 +733,9 @@ nsvm_vcpu_vmexit_inject(struct vcpu *v, struct cpu_u=
ser_regs *regs,
>       struct vmcb_struct *vmcb =3D v->arch=2Ehvm=2Esvm=2Evmcb;
>  =20
>       if ( vmcb->_vintr=2Efields=2Evgif_enable )
> -        ASSERT(vmcb->_vintr=2Efields=2Evgif =3D=3D 0);
> +        vmcb->_vintr=2Efields=2Evgif =3D 0;
>       else
> -        ASSERT(svm->ns_gif =3D=3D 0);
> +        nestedsvm_vcpu_clgi(v);
>  =20
>       ns_vmcb =3D nv->nv_vvmcx;
>  =20

Looks good to me, though I think we are here looking to make a "guest=20
CLGI" (clear GIF), so the vGIF specific logic should be collapsed into=20
nestedsvm_vcpu_clgi() instead of having it as the non-vgif-support case=2E
(as IIUC, vGIF is a hardware accelration for nested GIF handling ?)

(also making me notice that svm_vmexit_do_{stgi,clgi}() seems to lack=20
vGIF specific logic)

Teddy


-- 
Teddy Astie | Vates XCP-ng Developer

XCP-ng & Xen Orchestra - Vates s=
olutions

web: https://vates=2Etech
---=Part.2c5.179858d92bc580ea.19dda2a2bba.f9f3b2a504f764f4=---


From xen-devel-bounces@lists.xenproject.org Thu Apr 30 04:01:50 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 30 Apr 2026 04:01:50 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1297908.1573577 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wIIaj-0001ws-7n; Thu, 30 Apr 2026 04:01:33 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1297908.1573577; Thu, 30 Apr 2026 04: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 1wIIaj-0001wk-1L; Thu, 30 Apr 2026 04:01:33 +0000
Received: by outflank-mailman (input) for mailman id 1297908;
 Thu, 30 Apr 2026 04:01:31 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <val@invisiblethingslab.com>) id 1wIIah-0001we-Ns
 for xen-devel@lists.xenproject.org; Thu, 30 Apr 2026 04:01:31 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wIIag-007PkR-LM
 for xen-devel@lists.xenproject.org; Thu, 30 Apr 2026 06:01:30 +0200
Received: from [10.42.69.7] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <val@invisiblethingslab.com>)
 id 69f2d40c-5cb7-0a2a0a5109dd-0a2a4507c7ee-42
 for <xen-devel@lists.xenproject.org>; Thu, 30 Apr 2026 06:01:30 +0200
Received: from [103.168.172.149] (helo=fout-a6-smtp.messagingengine.com)
 by tlsNG-ef75cf.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.1)
 (envelope-from <val@invisiblethingslab.com>)
 id 69f2d419-229c-0a2a45070019-67a8ac9580f9-3
 for <xen-devel@lists.xenproject.org>; Thu, 30 Apr 2026 06:01:30 +0200
Received: from phl-compute-04.internal (phl-compute-04.internal [10.202.2.44])
 by mailfout.phl.internal (Postfix) with ESMTP id 12B8FEC0047;
 Thu, 30 Apr 2026 00:01:29 -0400 (EDT)
Received: from phl-frontend-04 ([10.202.2.163])
 by phl-compute-04.internal (MEProxy); Thu, 30 Apr 2026 00:01:29 -0400
Received: by mail.messagingengine.com (Postfix) with ESMTPA; Thu,
 30 Apr 2026 00:01:25 -0400 (EDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@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-Transfer-Encoding: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-Transfer-Encoding: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-transfer-encoding
	: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=1777521689; x=1777608089; bh=2ylbdgSEO3
	g7pTjq5Ngy4PvXfav/Y4wiIhm1YRccQLc=; b=m+rIUvnRjz9/8XoBRi1na6YL0m
	qtCPtZbQTvHnQiqB9jSXUAA6TwJjlOJoLdVvPYtEIusCCjyA6t4lBfi1O8NEM66A
	GZR30GH9ZetjhaPGYmY93MGqBUMeeNvezCjsuF5nsWiVt7EVDnCKamRQ3Nv2Jubf
	EqOGPGVH2tDZFdY9aq/X3Ljso7OAdhH0LQeDGjWGFA74kmOrd8l0e1eOMbnoV7FS
	kC4+NLoH/LnesKHXQSdGsoM2I1tjl/Dw3VFZKFEC2eJ+3Egts+B6vEjrOThm9Zga
	NvDPTK9d1lRDwFjU8+uVGJN4YUnJjUxk3JU/AB2XIWCuRI1Ft5jUAFkOFBWg==
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=
	messagingengine.com; h=cc:cc:content-transfer-encoding
	: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=1777521689; x=
	1777608089; bh=2ylbdgSEO3g7pTjq5Ngy4PvXfav/Y4wiIhm1YRccQLc=; b=Q
	pLe9WRYowph1Kl4KLVOS5KSidJSLOTifNzNH/SP7law4UKeAIA+pmlUITiD32ot+
	jZYGLNVxwkO9br9gYnvnLafM60jLXm7OoPRHUosPcLlfsmnEmt+P3ywLDbMAtexQ
	KPCyXdSyrx7Kw7Xx+0ZJwO3MeoqCQI1abABbz1Z6c1c8rvOkEyk+Crk/815sgBfY
	vp4H+LZ0lJy26/nXVf73/iRFxZpqHjV8tgJOcMl+dy/E87rw+S3KVaRv+d6wyoua
	tESPlHtQCQHVIiIjPjvB9DLkhP1eUM57U6kWE8J4JK87ru0uin9u6n+1OpvHFA9f
	UENUGHSwFjHky+B/RctIQ==
X-ME-Sender: <xms:GNTyabX8PBPDfqwgBJY7ZPBDWRtlqfyzR1VU_l90N9jo6MNVknCAxw>
    <xme:GNTyabxHUKsyUArbro6Ihy9eXSDlLk1eeZ-7kYpfqkLECGeMCHyFvACmfHz0Dhmst
    7wWPMzqWb56I2GvsV8Um7bq2wgzt0otN8z96JHbjb1thfebfHg>
X-ME-Received: <xmr:GNTyaS81bMRlVmF02nYmg-sjCwKsTA64eyvXUqWaZhLEnfOLHlFlcM2A8P6YJCu5LA>
X-ME-Proxy-Cause: gggruggvucftvghtrhhoucdtuddrgeefhedrtddtgdekieefudcutefuodetggdotefrod
    ftvfcurfhrohhfihhlvgemucfhrghsthforghilhdpuffrtefokffrpgfnqfghnecuuegr
    ihhlohhuthemuceftddtnecusecvtfgvtghiphhivghnthhsucdlqddutddtmdenucfjug
    hrpefkffggfgfuvfevfhfhjggtgfesthekredttddvjeenucfhrhhomhepgggrlhcurfgr
    tghkvghtthcuoehvrghlsehinhhvihhsihgslhgvthhhihhnghhslhgrsgdrtghomheqne
    cuggftrfgrthhtvghrnhepjeehkeffhedvffeffffflefgfeejudejiefhtdeijeeuteei
    teejtdettdeuleevnecuffhomhgrihhnpehkvghrnhgvlhdrohhrghdpghhithhhuhgsrd
    gtohhmnecuvehluhhsthgvrhfuihiivgeptdenucfrrghrrghmpehmrghilhhfrhhomhep
    vhgrlhesihhnvhhishhisghlvghthhhinhhgshhlrggsrdgtohhmpdhnsggprhgtphhtth
    hopedutddpmhhouggvpehsmhhtphhouhhtpdhrtghpthhtohepthgvugguhidrrghsthhi
    vgesvhgrthgvshdrthgvtghhpdhrtghpthhtohepmhhsthesrhgvughhrghtrdgtohhmpd
    hrtghpthhtohepjhgrshhofigrnhhgsehrvgguhhgrthdrtghomhdprhgtphhtthhopeig
    uhgrnhiihhhuoheslhhinhhugidrrghlihgsrggsrgdrtghomhdprhgtphhtthhopegvph
    gvrhgviihmrgesrhgvughhrghtrdgtohhmpdhrtghpthhtohepmhgrrhhmrghrvghksehi
    nhhvihhsihgslhgvthhhihhnghhslhgrsgdrtghomhdprhgtphhtthhopehvihhrvghshh
    drkhhumhgrrheslhhinhgrrhhordhorhhgpdhrtghpthhtohepgigvnhdquggvvhgvlhes
    lhhishhtshdrgigvnhhprhhojhgvtghtrdhorhhgpdhrtghpthhtoheplhhinhhugidqkh
    gvrhhnvghlsehvghgvrhdrkhgvrhhnvghlrdhorhhg
X-ME-Proxy: <xmx:GNTyaQ9lpwWEvk7D3W8FOh-v8UFvy9LxD077RmK18-iGsxLBpoBz4A>
    <xmx:GNTyaRXFM_C8bISyB3i7LdjfauPLV9X3t-nWnjGRYfaWm68YS0Qwmg>
    <xmx:GNTyadeaXKWt2qxuCLhWVSLndggsuCTkf0mnZSRjDKLk7NNMj3f5jQ>
    <xmx:GNTyaaYyiptX3NkomcuJsJ32POBzihjItVqHl3XfHHuPE-wTrpR3KA>
    <xmx:GdTyaR_elsMaFCiS5kLMPtw1pVuxe2GZrjMOk0JwWSMBarSfnRE4KbXO>
Feedback-ID: i001e48d0:Fastmail
Message-ID: <fd6493ac-9d3e-475a-a844-6e53b0472820@invisiblethingslab.com>
Date: Thu, 30 Apr 2026 01:01:22 -0300
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [RFC PATCH] virtio-mmio: add xenbus probing
To: Teddy Astie <teddy.astie@vates.tech>, "Michael S. Tsirkin"
 <mst@redhat.com>, Jason Wang <jasowang@redhat.com>,
 Xuan Zhuo <xuanzhuo@linux.alibaba.com>, =?UTF-8?Q?Eugenio_P=C3=A9rez?=
 <eperezma@redhat.com>
Cc: =?UTF-8?Q?Marek_Marczykowski-G=C3=B3recki?=
 <marmarek@invisiblethingslab.com>, Viresh Kumar <viresh.kumar@linaro.org>,
 xen-devel@lists.xenproject.org, linux-kernel@vger.kernel.org,
 virtualization@lists.linux.dev
References: <20260429141339.74472-1-val@invisiblethingslab.com>
 <1777473712.8631fc262581453bbf619ec5b2062170.19dd9b07146000f373@vates.tech>
Content-Language: en-US
From: Val Packett <val@invisiblethingslab.com>
Autocrypt: addr=val@invisiblethingslab.com; keydata=
 xm8EaFTEiRMFK4EEACIDAwQ+qzawvLuE95iu+QkRqp8P9z6XvFopWtYOaEnYf/nE8KWCnsCD
 jz82tdbKBpmVOdR6ViLD9tzHvaZ1NqZ9mbrszMXq09VfefoCfZp8jnA2yCT8Y4ykmv6902Ne
 NnlkVwrNKFZhbCBQYWNrZXR0IDx2YWxAaW52aXNpYmxldGhpbmdzbGFiLmNvbT7CswQTEwkA
 OxYhBAFMrro+oMGIFPc7Uc87uZxqzalRBQJoVMSJAhsDBQsJCAcCAiICBhUKCQgLAgQWAgMB
 Ah4HAheAAAoJEM87uZxqzalRlIIBf0cujzfSLhvib9iY8LBh8Tirgypm+hJHoY563xhP0YRS
 pmqZ6goIuSGpEKcW5mV3egF/TLLAOjsfroWae4giImTVOJvLOsUycxAP4O5b1Qiy+cCGsHKA
 nCRzrvqnPkyf4OeRznMEaFTEiRIFK4EEACIDAwSffe3tlMmmg3eKVp7SJ+CNZLN0M5qzHSCV
 dBBkIVvEJo+8SDg4jrx/832rxpvMCz2+x7+OHaeBHKafhOWUccYBLKqV/3nBftxCkbzXDbfY
 d02BY9H4wBIn0Y3GnwoIXRgDAQkJwpgEGBMJACAWIQQBTK66PqDBiBT3O1HPO7mcas2pUQUC
 aFTEiQIbDAAKCRDPO7mcas2pUaptAX9f7yUJLGU4C6XjMJvXd8Sz6cGTyxkngPtUyFiNqtad
 /GXBi3vHKYNfSrdqJ8wmZ8MBgOqWaaa1wE4/3qZU8d4RNR8mF7O40WYK/wdf1ycq1uGad8PN
 UDOwAqdfvuF3w8QMPw==
In-Reply-To: <1777473712.8631fc262581453bbf619ec5b2062170.19dd9b07146000f373@vates.tech>
Content-Type: text/plain; charset=UTF-8; format=flowed
Content-Transfer-Encoding: 8bit
X-purgate-ID: tlsNG-ef75cf/1777521690-2BD7FC48-0F9579A8/0/0
X-purgate-type: clean
X-purgate-size: 3318


On 4/29/26 11:41 AM, Teddy Astie wrote:
> Hello,
>
> Le 29/04/2026 à 16:18, Val Packett a écrit :
>> […]
>>
>> I've been working on porting virtio-mmio support from Arm to x86_64,
>> with the goal of running vhost-user-gpu to power Wayland/GPU integration
>> for Qubes OS. (I'm aware of various proposals for alternative virtio
>> transports but virtio-mmio seems to be the only one that *is* upstream
>> already and just Works..) Setting up virtio-mmio through xenbus, initially
>> motivated just by event channels being the only real way to get interrupts
>> working on HVM, turned out to generally be quite pleasant and nice :)
> Is it HVM specific, or can we also make it work for PVH (we can actually
> attach a ioreq server to PVH guests) ?

Sorry, typo, I did mean PVH of course!

I've been testing this with PVH guests + PV dom0, with my PV alloc_ioreq 
fix:
https://lore.kernel.org/all/20251126062124.117425-1-val@invisiblethingslab.com/ 


(Time to resend that one as a non-RFC I guess…)

HVM actually does have legacy ISA interrupts (which are often used with 
virtio-mmio on KVM), funnily enough, and I've tried firing those from a 
DMOP but that silly thing didn't work properly.

>> I'd like to get some early feedback for this patch, particularly
>> the general stuff:
>>
>> * is this whole thing acceptable in general?
>> * should it be extracted into a different file?
>> * (from the Xen side) any input on the xenstore keys, what goes where?
>> * anything else to keep in mind?
>>
>> It does seem simple enough, so hopefully this can be done?
>>
>> The corresponding userspace-side WIP is available at:
>> https://github.com/QubesOS/xen-vhost-frontend
>>
>> And the required DMOP for firing the evtchn events will be sent
>> to xen-devel shortly as well.
> Could that be done through evtchn_send (or its userland counterpart) ?

Actually, yes… The use of DMOPs is only dictated by the current Linux 
privcmd.c code (the irqfds created by the kernel react to events by 
executing HYPERVISOR_dm_op with a stored operation), we can avoid the 
need to modify Xen by simply expanding the privcmd driver to make 
"evtchn fds". Sounds good, will do.

>> [..]
>>
>> diff --git a/drivers/virtio/Kconfig b/drivers/virtio/Kconfig
>> index ce5bc0d9ea28..56bc2b10526b 100644
>> --- a/drivers/virtio/Kconfig
>> +++ b/drivers/virtio/Kconfig
>> @@ -171,6 +171,13 @@ config VIRTIO_MMIO_CMDLINE_DEVICES
>>    
>>    	 If unsure, say 'N'.
>>    
>> +config VIRTIO_MMIO_XENBUS
>> +	bool "Memory mapped virtio devices parameter parsing"
> that text seems to miss the xenbus aspect
Yep, didn't change that yet, ack
>> [..]
> In some way, we're defining a new "PV driver" which is a virtio-mmio
> one, I guess we can eventually specific some form of protocol that
> backend/frontend would need to follow ?

Right, Jürgen mentioned documenting the keys in the xenstore-paths doc.. 
would the entire "protocol" (keys + state transition logic) fit into that?

The keys are currently derived from the initial Arm prototype which 
wasn't actually using xenbus properly (the guest driver was configured 
by a device tree node, but the ioreq server used xenstore keys, without 
properly transitioning between states).


Thanks,
~val



From xen-devel-bounces@lists.xenproject.org Thu Apr 30 04:05:01 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 30 Apr 2026 04:05:01 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1297915.1573586 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wIIe4-0002Tr-JU; Thu, 30 Apr 2026 04:05:00 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1297915.1573586; Thu, 30 Apr 2026 04:05: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 1wIIe4-0002Tk-GW; Thu, 30 Apr 2026 04:05:00 +0000
Received: by outflank-mailman (input) for mailman id 1297915;
 Thu, 30 Apr 2026 04:05:00 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <val@invisiblethingslab.com>) id 1wIIe3-0002Te-Re
 for xen-devel@lists.xenproject.org; Thu, 30 Apr 2026 04:04:59 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wIIe3-00DvrP-7N
 for xen-devel@lists.xenproject.org; Thu, 30 Apr 2026 06:04:59 +0200
Received: from [10.42.69.9] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <val@invisiblethingslab.com>)
 id 69f2d4d5-5cb7-0a2a0a5109dd-0a2a4509b194-26
 for <xen-devel@lists.xenproject.org>; Thu, 30 Apr 2026 06:04:59 +0200
Received: from [103.168.172.147] (helo=fout-a4-smtp.messagingengine.com)
 by tlsNG-bad1c0.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.1)
 (envelope-from <val@invisiblethingslab.com>)
 id 69f2d4ea-2497-0a2a45090019-67a8ac93b503-3
 for <xen-devel@lists.xenproject.org>; Thu, 30 Apr 2026 06:04:59 +0200
Received: from phl-compute-05.internal (phl-compute-05.internal [10.202.2.45])
 by mailfout.phl.internal (Postfix) with ESMTP id 0B7BFEC007C;
 Thu, 30 Apr 2026 00:04:58 -0400 (EDT)
Received: from phl-frontend-04 ([10.202.2.163])
 by phl-compute-05.internal (MEProxy); Thu, 30 Apr 2026 00:04:58 -0400
Received: by mail.messagingengine.com (Postfix) with ESMTPA; Thu,
 30 Apr 2026 00:04:55 -0400 (EDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@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-Transfer-Encoding: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-Transfer-Encoding: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-transfer-encoding
	: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=1777521898; x=1777608298; bh=iL9Jih/Ibg
	bma67bqFqcCfMBsbo2+Snn9M19XNZspzs=; b=JyCWiLaEgzIHYgINBaGye7XqFD
	OYZ7C1lh8SiRT5+BRculK1vq6aO1YS966FiE0Vj554g1+kdcyjpeHxBvmxAl+CgA
	WM2Z54FDy3bfTVXAXNEATkm9wiMj5sOuce8FBZ6l9LbqHg2UQXzw1nB0dEDSkLGx
	F+Qhg0ss+IPYuaw35dKmfy3H26kH2o79O9nTRs/Kqq+dyZDYb+qcE09FO5QxsGZP
	ss11EITd4UU3/1epImcHEl0Y1iTi1rYNsezxGLJFuzQQUyuMZJfp0nEEpzEYMsCh
	J26tT8N9ZubB3EXMHojLQ7SOFfcEAWMnFFhERjmvpPEMb05gxiVClFKdZGiA==
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=
	messagingengine.com; h=cc:cc:content-transfer-encoding
	: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=1777521898; x=
	1777608298; bh=iL9Jih/Ibgbma67bqFqcCfMBsbo2+Snn9M19XNZspzs=; b=O
	aD/azlC6c6H+mOtUakvf+EJmEZdD0ueW08mGxLkGEKn7iZqtKmWPxJBqEo/J8FBR
	lnESHM7xVB3IdWiaERcKmzrZ+aAwW8fT8DBYaYt2Www1gXE4vfopqQ3pp3EiKqoO
	+XGE6NtYyirL4wsrxnUMLn/E0JHGWpDqFAeRGtHlP5NsF+62/tuaLUAU9V5MiNFz
	P2+cbP9gIQY0C6eupKNVV0Vk9kLk0FUJTxH/X12AsHo/KGTGrPUDOFqujp/TsJtS
	UMDssK7f7YEmaVgts/rsL+PTLLEZTVK/O+/krfP8aXCaIVVKgJ0zuFmyoj1dc8wb
	6/pR4+XrPnTKfbJ79mDqA==
X-ME-Sender: <xms:6dTyaRiisW2jVl819D-fkqKk140bCT8pr7be5W4dPF6e-t-lfdbT7g>
    <xme:6dTyaVtW3hOA5uvDpw9roBf34aPhMs1_5iNwkAY9iFvHK9GQ6jBC45CQShhNt2k-i
    WhCNrTvdKakt0kiD7lrjPQG5nIfTAIkSeuODIB2ZcZEVX1s6g>
X-ME-Received: <xmr:6dTyacsMnR-RohTB2z3Igyxpab0NlxM3D5DKIiqnu12ky8Xts097ooIjIoUS1XtcYQ>
X-ME-Proxy-Cause: gggruggvucftvghtrhhoucdtuddrgeefhedrtddtgdekieefudcutefuodetggdotefrod
    ftvfcurfhrohhfihhlvgemucfhrghsthforghilhdpuffrtefokffrpgfnqfghnecuuegr
    ihhlohhuthemuceftddtnecusecvtfgvtghiphhivghnthhsucdlqddutddtmdenucfjug
    hrpefkffggfgfuvfevfhfhjggtgfesthekredttddvjeenucfhrhhomhepgggrlhcurfgr
    tghkvghtthcuoehvrghlsehinhhvihhsihgslhgvthhhihhnghhslhgrsgdrtghomheqne
    cuggftrfgrthhtvghrnhepjeduffejgeduleeklefhvedttdeuvdeuueeuhfevgfevjefg
    leevvdduhfdugfefnecuvehluhhsthgvrhfuihiivgeptdenucfrrghrrghmpehmrghilh
    hfrhhomhepvhgrlhesihhnvhhishhisghlvghthhhinhhgshhlrggsrdgtohhmpdhnsggp
    rhgtphhtthhopedutddpmhhouggvpehsmhhtphhouhhtpdhrtghpthhtohepjhhgrhhosh
    hssehsuhhsvgdrtghomhdprhgtphhtthhopehmshhtsehrvgguhhgrthdrtghomhdprhgt
    phhtthhopehjrghsohifrghnghesrhgvughhrghtrdgtohhmpdhrtghpthhtohepgihurg
    hniihhuhhosehlihhnuhigrdgrlhhisggrsggrrdgtohhmpdhrtghpthhtohepvghpvghr
    vgiimhgrsehrvgguhhgrthdrtghomhdprhgtphhtthhopehmrghrmhgrrhgvkhesihhnvh
    hishhisghlvghthhhinhhgshhlrggsrdgtohhmpdhrtghpthhtohepvhhirhgvshhhrdhk
    uhhmrghrsehlihhnrghrohdrohhrghdprhgtphhtthhopeigvghnqdguvghvvghlsehlih
    hsthhsrdigvghnphhrohhjvggtthdrohhrghdprhgtphhtthhopehlihhnuhigqdhkvghr
    nhgvlhesvhhgvghrrdhkvghrnhgvlhdrohhrgh
X-ME-Proxy: <xmx:6dTyaSEYz1t3xvR8pfIguk8nQAhJj9YwTJMG3VDlnZ6v-kZcPIOT1w>
    <xmx:6dTyafO-K_qJOvef6JXVdpErpTtjay32BBTthQqX6yykEuILUDbAVQ>
    <xmx:6dTyaZK6_WOlkR-odxM6SH-y-9suq1J9e3MUp5GD-TsCGEfa14r8Kw>
    <xmx:6dTyaQ8HceBUcNi0PgnrIBqro1h3kDFB16VxRVsdBSTGRsSPdXMD2Q>
    <xmx:6tTyaQMbUIhLHFG1eCcCNe3bLz0fu_5aAi40MhVcvesPHVvR_GlJSV87>
Feedback-ID: i001e48d0:Fastmail
Message-ID: <98f95a70-7a28-463d-9bfe-203f6f740c21@invisiblethingslab.com>
Date: Thu, 30 Apr 2026 01:04:54 -0300
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [RFC PATCH] virtio-mmio: add xenbus probing
To: =?UTF-8?B?SsO8cmdlbiBHcm/Dnw==?= <jgross@suse.com>,
 "Michael S. Tsirkin" <mst@redhat.com>, Jason Wang <jasowang@redhat.com>,
 Xuan Zhuo <xuanzhuo@linux.alibaba.com>, =?UTF-8?Q?Eugenio_P=C3=A9rez?=
 <eperezma@redhat.com>
Cc: =?UTF-8?Q?Marek_Marczykowski-G=C3=B3recki?=
 <marmarek@invisiblethingslab.com>, Viresh Kumar <viresh.kumar@linaro.org>,
 xen-devel@lists.xenproject.org, linux-kernel@vger.kernel.org,
 virtualization@lists.linux.dev
References: <20260429141339.74472-1-val@invisiblethingslab.com>
 <67632532-8421-4a10-a961-f7c4f05b177b@suse.com>
Content-Language: en-US
From: Val Packett <val@invisiblethingslab.com>
Autocrypt: addr=val@invisiblethingslab.com; keydata=
 xm8EaFTEiRMFK4EEACIDAwQ+qzawvLuE95iu+QkRqp8P9z6XvFopWtYOaEnYf/nE8KWCnsCD
 jz82tdbKBpmVOdR6ViLD9tzHvaZ1NqZ9mbrszMXq09VfefoCfZp8jnA2yCT8Y4ykmv6902Ne
 NnlkVwrNKFZhbCBQYWNrZXR0IDx2YWxAaW52aXNpYmxldGhpbmdzbGFiLmNvbT7CswQTEwkA
 OxYhBAFMrro+oMGIFPc7Uc87uZxqzalRBQJoVMSJAhsDBQsJCAcCAiICBhUKCQgLAgQWAgMB
 Ah4HAheAAAoJEM87uZxqzalRlIIBf0cujzfSLhvib9iY8LBh8Tirgypm+hJHoY563xhP0YRS
 pmqZ6goIuSGpEKcW5mV3egF/TLLAOjsfroWae4giImTVOJvLOsUycxAP4O5b1Qiy+cCGsHKA
 nCRzrvqnPkyf4OeRznMEaFTEiRIFK4EEACIDAwSffe3tlMmmg3eKVp7SJ+CNZLN0M5qzHSCV
 dBBkIVvEJo+8SDg4jrx/832rxpvMCz2+x7+OHaeBHKafhOWUccYBLKqV/3nBftxCkbzXDbfY
 d02BY9H4wBIn0Y3GnwoIXRgDAQkJwpgEGBMJACAWIQQBTK66PqDBiBT3O1HPO7mcas2pUQUC
 aFTEiQIbDAAKCRDPO7mcas2pUaptAX9f7yUJLGU4C6XjMJvXd8Sz6cGTyxkngPtUyFiNqtad
 /GXBi3vHKYNfSrdqJ8wmZ8MBgOqWaaa1wE4/3qZU8d4RNR8mF7O40WYK/wdf1ycq1uGad8PN
 UDOwAqdfvuF3w8QMPw==
In-Reply-To: <67632532-8421-4a10-a961-f7c4f05b177b@suse.com>
Content-Type: text/plain; charset=UTF-8; format=flowed
Content-Transfer-Encoding: 8bit
X-purgate-ID: tlsNG-bad1c0/1777521899-41D6FA53-810D5A9F/0/0
X-purgate-type: clean
X-purgate-size: 2704


On 4/29/26 12:35 PM, Jürgen Groß wrote:
> Some minor details from the Xen side of things:
>
> On 29.04.26 15:52, Val Packett wrote:
>> The experimental virtio-mmio support for Xen was initially developed
>> on aarch64, so device trees were used to configure the mmio devices,
>> with arbitrary vGIC interrupts used by the hypervisor. On x86_64
>> however, the only reasonable way to interrupt the guest is over Xen
>> event channels, which can only be acquired by children of xenbus,
>
> More exact: interdomain event channels need to be connected to a xenbus
> device. But you are needing those, so for your use case the above 
> statement
> is correct.
>
>> the virtual bus driven by Xen's configuration database, XenStore.
>> It is also a more convenient and "Xen-ish" way to provision devices.
>>
>> Implement a xenbus client for virtio-mmio which negotiates an
>> event channel and provides it as a platform IRQ to the
>> virtio-mmio driver.
>>
>>
>> Signed-off-by: Val Packett <val@invisiblethingslab.com>
>> ---
>>
>> Hi,
>>
>> I've been working on porting virtio-mmio support from Arm to x86_64,
>> with the goal of running vhost-user-gpu to power Wayland/GPU integration
>> for Qubes OS. (I'm aware of various proposals for alternative virtio
>> transports but virtio-mmio seems to be the only one that *is* upstream
>> already and just Works..) Setting up virtio-mmio through xenbus, 
>> initially
>> motivated just by event channels being the only real way to get 
>> interrupts
>> working on HVM, turned out to generally be quite pleasant and nice :)
>>
>> I'd like to get some early feedback for this patch, particularly
>> the general stuff:
>>
>> * is this whole thing acceptable in general?
>> * should it be extracted into a different file?
>> * (from the Xen side) any input on the xenstore keys, what goes where?
>
> You should add some documentation in the Xen source tree regarding the
> Xenstore keys (see docs/misc/xenstore-paths.pandoc there).
Ack, thanks!
>> […]
>>
>> +again:
>> +    err = xenbus_transaction_start(&xbt);
>
> No need to use a Xenstore transaction here. The written node(s) are
> regarded to be valid only after calling xenbus_switch_state() to set
> the frontend state to XenbusStateInitialised.
Oh, I assumed transactions were required for writing from the kernel to 
work at all…
>> [..]
>>
>> +static const struct xenbus_device_id virtio_mmio_xen_ids[] = {
>> +    { "virtio" },
>
> Please use "virtio-mmio" here, as I could imagine "virtio-pci" 
> devices, too. 

Ack. Would actually also distinguish it from the initial Arm 
proof-of-concept version…


Thanks,
~val



From xen-devel-bounces@lists.xenproject.org Thu Apr 30 05:44:30 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 30 Apr 2026 05:44:30 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1297903.1573596 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wIKC6-0008T5-EY; Thu, 30 Apr 2026 05:44:14 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1297903.1573596; Thu, 30 Apr 2026 05:44: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 1wIKC6-0008Sx-As; Thu, 30 Apr 2026 05:44:14 +0000
Received: by outflank-mailman (input) for mailman id 1297903;
 Thu, 30 Apr 2026 03:26:06 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <patchwork-bot+linux-riscv@kernel.org>)
 id 1wII2Q-0005Vc-9T
 for xen-devel@lists.xenproject.org; Thu, 30 Apr 2026 03:26:06 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wII2O-005uGt-FF
 for xen-devel@lists.xenproject.org; Thu, 30 Apr 2026 05:26:04 +0200
Received: from [10.42.69.1] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <patchwork-bot+linux-riscv@kernel.org>)
 id 69f2cb6f-bab6-0a2a0a5309dd-0a2a4501e788-42
 for <xen-devel@lists.xenproject.org>; Thu, 30 Apr 2026 05:26:04 +0200
Received: from [172.234.252.31] (helo=sea.source.kernel.org)
 by tlsNG-d62444.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.1)
 (envelope-from <patchwork-bot+linux-riscv@kernel.org>)
 id 69f2cbca-c1f2-0a2a45010019-aceafc1f8c02-3
 for <xen-devel@lists.xenproject.org>; Thu, 30 Apr 2026 05:26:03 +0200
Received: from smtp.kernel.org (transwarp.subspace.kernel.org [100.75.92.58])
 by sea.source.kernel.org (Postfix) with ESMTP id D2DC240317;
 Thu, 30 Apr 2026 03:26:01 +0000 (UTC)
Received: by smtp.kernel.org (Postfix) with ESMTPSA id AA274C2BCC6;
 Thu, 30 Apr 2026 03:26:01 +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
 02F1A3809A07; Thu, 30 Apr 2026 03:25: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=k20201202 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/simple; d=kernel.org;
	s=k20201202; t=1777519561;
	bh=S8ESDWn2FV212MQ0O36a6N64V74CpKEgoDR0Cwb1eYo=;
	h=Subject:From:Date:References:In-Reply-To:To:Cc:From;
	b=RtcaGla8SJMvzp565cZWG4JA/pd6x2rokqKWLW76DsXVVSBMWfvO7M+j3tfPr4WiS
	 iYIi3LmvsvftG5YY+oM7g4PvJ9jMSl95DFA2LT7Ri+Y57wvJYObh7grdN4/wFxy9Bp
	 3dNPBrE0VUHIF5qHqtQDM1L3bZLqpe75efGu9RIosM9YKInDL4ti/opEBCchGSV7Ed
	 NJ0t/2yQEWiWU4UX0J1SMMnzWayyrY3pGrDTZxRSaZcqhSakDi4GgjEzwKf7uPPJCg
	 fYiHoJFVnaikAgVqNlokz3BThqsRnYRJYWEnZONwh0eeFUJrF4d3CMi6aMhGsxyQjO
	 srXFfj2h9HOug==
Content-Type: text/plain; charset="utf-8"
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit
Subject: Re: [PATCH RESEND v10 0/8] ACPI: Unify CPU UID interface and fix
 ARM64
 TPH steer-tag issue
From: patchwork-bot+linux-riscv@kernel.org
Message-Id: 
 <177751951654.2274119.17258357457134506240.git-patchwork-notify@kernel.org>
Date: Thu, 30 Apr 2026 03:25:16 +0000
References: <20260401081640.26875-1-fengchengwen@huawei.com>
In-Reply-To: <20260401081640.26875-1-fengchengwen@huawei.com>
To: Chengwen Feng <fengchengwen@huawei.com>
Cc: linux-riscv@lists.infradead.org, bhelgaas@google.com,
 catalin.marinas@arm.com, will@kernel.org, rafael@kernel.org,
 mark.rutland@arm.com, x86@kernel.org, liuyonglong@huawei.com,
 anshuman.khandual@arm.com, linux-doc@vger.kernel.org, kees@kernel.org,
 linux-pci@vger.kernel.org, dave.hansen@linux.intel.com,
 Eric.VanTassell@amd.com, somnath.kotur@broadcom.com, kai.huang@intel.com,
 kevinloughlin@google.com, punit.agrawal@oss.qualcomm.com, hpa@zytor.com,
 ilkka@os.amperecomputing.com, kernel@xen0n.name, thorsten.blum@linux.dev,
 linux-acpi@vger.kernel.org, corbet@lwn.net, masahiroy@kernel.org,
 si.yanteng@linux.dev, peterz@infradead.org,
 pawan.kumar.gupta@linux.intel.com, linux-arm-kernel@lists.infradead.org,
 xen-devel@lists.xenproject.org, szy0127@sjtu.edu.cn, lenb@kernel.org,
 thomas.lendacky@amd.com, thuth@redhat.com, ryan.roberts@arm.com,
 darwi@linutronix.de, make24@iscas.ac.cn, suzuki.poulose@arm.com,
 james.clark@linaro.org, wei.huang2@amd.com, bwicaksono@nvidia.com,
 loongarch@lists.linux.dev, jonathan.cameron@huawei.com,
 sohil.mehta@intel.com, boris.ostrovsky@oracle.com, xin@zytor.com,
 andrew.gospodarek@broadcom.com, wanghuiqiang@huawei.com, jgross@suse.com,
 wangyuquan1236@phytium.com.cn, seanjc@google.com, guohanjun@huawei.com,
 linux-kernel@vger.kernel.org, stable@vger.kernel.org,
 linux-perf-users@vger.kernel.org, wangzhou1@hisilicon.com, tglx@kernel.org,
 heinrich.schuchardt@canonical.com, chenl311@chinatelecom.cn,
 robin.murphy@arm.com
X-purgate-ID: tlsNG-d62444/1777519564-BDE6BFF4-FB18EA95/0/0
X-purgate-type: clean
X-purgate-size: 1965

Hello:

This series was applied to riscv/linux.git (fixes)
by Rafael J. Wysocki <rafael.j.wysocki@intel.com>:

On Wed, 1 Apr 2026 16:16:32 +0800 you wrote:
> This patchset unifies ACPI Processor UID retrieval across
> arm64/loongarch/riscv/x86 via acpi_get_cpu_uid() (with input validation)
> and fixes ARM64 CPU steer-tag retrieval failure in PCI/TPH:
> 
> 1-4: Add acpi_get_cpu_uid() for arm64/loongarch/riscv/x86 (update
>      respective users)
> 5: Centralize acpi_get_cpu_uid() declaration in include/linux/acpi.h
> 6: Clean up perf/arm_cspmu
> 7: Clean up ACPI/PPTT and remove unused get_acpi_id_for_cpu()
> 8: Pass ACPI Processor UID to Cache Locality _DSM
> 
> [...]

Here is the summary with links:
  - [RESEND,v10,1/8] arm64: acpi: Add acpi_get_cpu_uid() for unified ACPI CPU UID retrieval
    https://git.kernel.org/riscv/c/7cd5f5659ac8
  - [RESEND,v10,2/8] LoongArch: Add acpi_get_cpu_uid() for unified ACPI CPU UID retrieval
    https://git.kernel.org/riscv/c/d78ef9d2e1f2
  - [RESEND,v10,3/8] RISC-V: ACPI: Add acpi_get_cpu_uid() for unified ACPI CPU UID retrieval
    https://git.kernel.org/riscv/c/0c8231994e43
  - [RESEND,v10,4/8] x86/acpi: Add acpi_get_cpu_uid() for unified ACPI CPU UID retrieval
    https://git.kernel.org/riscv/c/3cfe889f8965
  - [RESEND,v10,5/8] ACPI: Centralize acpi_get_cpu_uid() declaration in include/linux/acpi.h
    https://git.kernel.org/riscv/c/f652d0a4e13c
  - [RESEND,v10,6/8] perf: arm_cspmu: Switch to acpi_get_cpu_uid() from get_acpi_id_for_cpu()
    https://git.kernel.org/riscv/c/1ab03189793f
  - [RESEND,v10,7/8] ACPI: PPTT: Use acpi_get_cpu_uid() and remove get_acpi_id_for_cpu()
    https://git.kernel.org/riscv/c/a7034e9e4491
  - [RESEND,v10,8/8] PCI/TPH: Pass ACPI Processor UID to Cache Locality _DSM
    https://git.kernel.org/riscv/c/abdd2a86535b

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 Thu Apr 30 08:12:00 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 30 Apr 2026 08:12:00 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1297969.1573604 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wIMUp-0003ud-LM; Thu, 30 Apr 2026 08:11:43 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1297969.1573604; Thu, 30 Apr 2026 08:11: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 1wIMUp-0003uV-H7; Thu, 30 Apr 2026 08:11:43 +0000
Received: by outflank-mailman (input) for mailman id 1297969;
 Thu, 30 Apr 2026 08:11:42 +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.19ddd7187da000f373@swg.vates.tech>)
 id 1wIMUo-0003u9-5f
 for xen-devel@lists.xenproject.org; Thu, 30 Apr 2026 08:11:42 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wIMUn-004hyE-FJ
 for xen-devel@lists.xenproject.org; Thu, 30 Apr 2026 10:11:41 +0200
Received: from [10.42.69.12] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1) (envelope-from
 <prod-mta-13.8631fc262581453bbf619ec5b2062170.19ddd7187da000f373@swg.vates.tech>)
 id 69f30eb8-bab6-0a2a0a5309dd-0a2a450c85a2-28
 for <xen-devel@lists.xenproject.org>; Thu, 30 Apr 2026 10:11:41 +0200
Received: from [185.255.28.34] (helo=prod-mta-13.swg-srv.net)
 by tlsNG-d25034.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.1)
 (envelope-from
 <prod-mta-13.8631fc262581453bbf619ec5b2062170.19ddd7187da000f373@swg.vates.tech>)
 id 69f30ebc-62f1-0a2a450c0019-b9ff1c229d73-3
 for <xen-devel@lists.xenproject.org>; Thu, 30 Apr 2026 10:11:41 +0200
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
 19ddd7187da000f373.006 for <xen-devel@lists.xenproject.org>
 (version=TLSv1.3 cipher=TLS_AES_256_GCM_SHA384);
 Thu, 30 Apr 2026 08:11:38 +0000
Received: from [192.168.1.18] (88-175-170-134.subs.proxad.net [88.175.170.134])
 (Authenticated sender: teddy.astie)
 by mail2.vates.fr (Postfix) with ESMTPSA id 799C0812E3;
 Thu, 30 Apr 2026 10:11:37 +0200 (CEST)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@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=K5BjNIf9tFswbQOeYBUyQT6QRAHcFYHBub2Z81jUwUA=;
 h=from:subject:date:message-id:to:cc:mime-version:content-type:in-reply-to:references:feedback-id;
 b=jPZTmBGDpHx3CzsFlQeJd9hPGpuHvqcmZ4AVvUiyLEYeHdra+By20dyF4BK2rIs69alylUEjL
 VL4Sll+7kQhYiYhz2+y+Q+HubVftb2RSYJleBUn3wBsitDOWivyLd/qzNVsO+uvN0Q/lX9x9W2H
 p1KCvySnTsE9etua52aqtqFsFDK+/XRvg+tVTAOh5dXogf2DS1MqJ/kwq6ocKXj6MiaTCfdI0Qb
 d432sLkyq0DIQkJBivKg+0Vg0+zMEe/SUhkGgGyl4tQPXH6NeWBiBMEOy7KKEVKBAP52x+kXK4u
 OyDhZI0MMu9kcO12sG49GTjMnVzzn2U1I7vNliloOuBQ==
X-Zone-Loop: 6dcc421ef085fe90b37f11069ea918596341758269d3
x-campaign-type: default
x-transaction-id: 4403762b-e761-4f62-98b1-a2a661b111a6
x-swg-uid: 01-a5b5fcde-d16a-4aac-891e-b341eb3a09ef
X-Mailer: Sweego
Message-ID:
 <1777536698.8631fc262581453bbf619ec5b2062170.19ddd7187da000f373@vates.tech>
x-swg-bid: 1777536698.8631fc262581453bbf619ec5b2062170.19ddd7187da000f373
Feedback-ID: default:8631fc262581453bbf619ec5b2062170:Sweego
x-campaign-id: default
x-client-id: 8631fc262581453bbf619ec5b2062170
X-Originating-IP: [37.26.189.201]
Date: Thu, 30 Apr 2026 10:11:37 +0200
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [RFC PATCH] virtio-mmio: add xenbus probing
To: Val Packett <val@invisiblethingslab.com>,
 "Michael S. Tsirkin" <mst@redhat.com>, Jason Wang <jasowang@redhat.com>,
 Xuan Zhuo <xuanzhuo@linux.alibaba.com>, =?UTF-8?Q?Eugenio_P=C3=A9rez?=
 <eperezma@redhat.com>
Cc: =?UTF-8?Q?Marek_Marczykowski-G=C3=B3recki?=
 <marmarek@invisiblethingslab.com>, Viresh Kumar <viresh.kumar@linaro.org>,
 xen-devel@lists.xenproject.org, linux-kernel@vger.kernel.org,
 virtualization@lists.linux.dev
References: <20260429141339.74472-1-val@invisiblethingslab.com>
 <1777473712.8631fc262581453bbf619ec5b2062170.19dd9b07146000f373@vates.tech>
 <fd6493ac-9d3e-475a-a844-6e53b0472820@invisiblethingslab.com>
Content-Language: en-US
From: Teddy Astie <teddy.astie@vates.tech>
In-Reply-To: <fd6493ac-9d3e-475a-a844-6e53b0472820@invisiblethingslab.com>
X-BM-Disclaimer: Yes
Content-Type: multipart/alternative; boundary="-=Part.2fd.57a79a2994658d0b.19ddd718549.d4fe0c9720373f89=-"
X-Bm-Milter-Handled: 4ffbd6c1-ee69-4e1b-aabd-f977039bd3e2
X-Bm-Transport-Timestamp: 1777536697674
X-purgate-ID: tlsNG-d25034/1777536701-6E975CF5-37DAD087/0/0
X-purgate-type: clean
X-purgate-size: 4998

---=Part.2fd.57a79a2994658d0b.19ddd718549.d4fe0c9720373f89=-
Content-Type: text/plain; charset=utf-8
Content-Transfer-Encoding: quoted-printable

Le 30/04/2026 =C3=A0 06:06, Val Packett a =C3=A9crit=C2=A0:
>=20
> On 4/29/26 11:41 AM, Teddy Astie wrote:
>> Hello,
>>
>> Le 29/04/2026 =C3=A0 16:18, Val Packett a =C3=A9crit=C2=A0:
>>> [=E2=80=A6]
>>>
>>> I've been working on porting virtio-mmio support from Arm to x86_64,
>>> with the goal of running vhost-user-gpu to power Wayland/GPU integrati=
on
>>> for Qubes OS=2E (I'm aware of various proposals for alternative virtio
>>> transports but virtio-mmio seems to be the only one that *is* upstream
>>> already and just Works=2E=2E) Setting up virtio-mmio through xenbus,=
=20
>>> initially
>>> motivated just by event channels being the only real way to get=20
>>> interrupts
>>> working on HVM, turned out to generally be quite pleasant and nice :)
>> Is it HVM specific, or can we also make it work for PVH (we can actuall=
y
>> attach a ioreq server to PVH guests) ?
>=20
> Sorry, typo, I did mean PVH of course!
>=20
> I've been testing this with PVH guests + PV dom0, with my PV alloc_ioreq=
=20
> fix:
> https://lore=2Ekernel=2Eorg/all/20251126062124=2E117425-1-=20
> val@invisiblethingslab=2Ecom/
>=20
> (Time to resend that one as a non-RFC I guess=E2=80=A6)
>=20
> HVM actually does have legacy ISA interrupts (which are often used with=
=20
> virtio-mmio on KVM), funnily enough, and I've tried firing those from a=
=20
> DMOP but that silly thing didn't work properly=2E
>=20
>>> I'd like to get some early feedback for this patch, particularly
>>> the general stuff:
>>>
>>> * is this whole thing acceptable in general?
>>> * should it be extracted into a different file?
>>> * (from the Xen side) any input on the xenstore keys, what goes where?
>>> * anything else to keep in mind?
>>>
>>> It does seem simple enough, so hopefully this can be done?
>>>
>>> The corresponding userspace-side WIP is available at:
>>> https://github=2Ecom/QubesOS/xen-vhost-frontend
>>>
>>> And the required DMOP for firing the evtchn events will be sent
>>> to xen-devel shortly as well=2E
>> Could that be done through evtchn_send (or its userland counterpart) ?
>=20
> Actually, yes=E2=80=A6 The use of DMOPs is only dictated by the current =
Linux=20
> privcmd=2Ec code (the irqfds created by the kernel react to events by=20
> executing HYPERVISOR_dm_op with a stored operation), we can avoid the=20
> need to modify Xen by simply expanding the privcmd driver to make=20
> "evtchn fds"=2E Sounds good, will do=2E
>=20

Given that the event channel used by device models is exposed through=20
ioreq=2Evp_eport ("evtchn for notifications to/from device model")=2E I=20
don't think you need to expand the privcmd interface, and you should be=20
able to do this instead :

open /dev/xen/evtchn
perform IOCTL_EVTCHN_BIND_INTERDOMAIN (for each guest vCPU)
   with remote_domain=3Dguest_domid, remote_port=3Dioreq=2Evp_eport

Then interact with the event channel through IOCTL_EVTCHN_NOTIFY (with=20
local port given by IOCTL_EVTCHN_BIND_INTERDOMAIN) and read/write on the=
=20
file descriptor=2E

I have some experimental Rust code to work with event channels [1], but=20
I think you can find similar code in multiples places=2E

[1]
https://github=2Ecom/TSnake41/rust-vmm-xen/blob/redesign-proposal/xen/src/=
event/mod=2Ers
https://github=2Ecom/TSnake41/rust-vmm-xen/blob/redesign-proposal/xen-unix=
/src/event/mod=2Ers

>>> [=2E=2E]
>>>
>>> diff --git a/drivers/virtio/Kconfig b/drivers/virtio/Kconfig
>>> index ce5bc0d9ea28=2E=2E56bc2b10526b 100644
>>> --- a/drivers/virtio/Kconfig
>>> +++ b/drivers/virtio/Kconfig
>>> @@ -171,6 +171,13 @@ config VIRTIO_MMIO_CMDLINE_DEVICES
>>> =C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 If unsure, say 'N'=2E
>>> +config VIRTIO_MMIO_XENBUS
>>> +=C2=A0=C2=A0=C2=A0 bool "Memory mapped virtio devices parameter parsi=
ng"
>> that text seems to miss the xenbus aspect
> Yep, didn't change that yet, ack
>>> [=2E=2E]
>> In some way, we're defining a new "PV driver" which is a virtio-mmio
>> one, I guess we can eventually specific some form of protocol that
>> backend/frontend would need to follow ?
>=20
> Right,=C2=A0J=C3=BCrgen mentioned documenting the keys in the xenstore-p=
aths doc=2E=2E=20
> would the entire "protocol" (keys + state transition logic) fit into tha=
t?
>=20
> The keys are currently derived from the initial Arm prototype which=20
> wasn't actually using xenbus properly (the guest driver was configured=
=20
> by a device tree node, but the ioreq server used xenstore keys, without=
=20
> properly transitioning between states)=2E
>=20
>=20
> Thanks,
> ~val
>=20
>=20

Teddy


-- 
Teddy Astie | Vates XCP-ng Developer

XCP-ng & Xen Orchestra - Vates s=
olutions

web: https://vates=2Etech
---=Part.2fd.57a79a2994658d0b.19ddd718549.d4fe0c9720373f89=---


From xen-devel-bounces@lists.xenproject.org Thu Apr 30 08:43:15 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 30 Apr 2026 08:43:15 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1297987.1573614 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wIMzC-0008EX-Ty; Thu, 30 Apr 2026 08:43:06 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1297987.1573614; Thu, 30 Apr 2026 08:43: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 1wIMzC-0008EQ-Pf; Thu, 30 Apr 2026 08:43:06 +0000
Received: by outflank-mailman (input) for mailman id 1297987;
 Thu, 30 Apr 2026 08:43:05 +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 1wIMzB-0008EK-H8
 for xen-devel@lists.xenproject.org; Thu, 30 Apr 2026 08:43:05 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wIMzA-00EmiP-TN
 for xen-devel@lists.xenproject.org; Thu, 30 Apr 2026 10:43:04 +0200
Received: from [10.42.69.10] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <Michal.Orzel@amd.com>)
 id 69f3160a-5cb7-0a2a0a5109dd-0a2a450a8abe-30
 for <xen-devel@lists.xenproject.org>; Thu, 30 Apr 2026 10:43:04 +0200
Received: from [52.101.57.55]
 (helo=BN8PR05CU002.outbound.protection.outlook.com)
 by tlsNG-4011c0.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.1)
 (envelope-from <Michal.Orzel@amd.com>)
 id 69f31616-56b3-0a2a450a0019-34653937eba7-4
 for <xen-devel@lists.xenproject.org>; Thu, 30 Apr 2026 10:43:03 +0200
Received: from DM6PR02CA0116.namprd02.prod.outlook.com (2603:10b6:5:1b4::18)
 by BN3PR12MB9570.namprd12.prod.outlook.com (2603:10b6:408:2ca::16) with
 Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9870.15; Thu, 30 Apr
 2026 08:42:59 +0000
Received: from CH3PEPF00000018.namprd21.prod.outlook.com
 (2603:10b6:5:1b4:cafe::b7) by DM6PR02CA0116.outlook.office365.com
 (2603:10b6:5:1b4::18) with Microsoft SMTP Server (version=TLS1_3,
 cipher=TLS_AES_256_GCM_SHA384) id 15.20.9846.30 via Frontend Transport; Thu,
 30 Apr 2026 08:42:59 +0000
Received: from satlexmb08.amd.com (165.204.84.17) by
 CH3PEPF00000018.mail.protection.outlook.com (10.167.244.123) with Microsoft
 SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id
 15.20.9891.0 via Frontend Transport; Thu, 30 Apr 2026 08:42:58 +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.17; Thu, 30 Apr
 2026 03:42:58 -0500
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.17; Thu, 30 Apr
 2026 03:42:58 -0500
Received: from [10.252.145.116] (10.180.168.240) by satlexmb07.amd.com
 (10.181.42.216) with Microsoft SMTP Server id 15.2.2562.17 via Frontend
 Transport; Thu, 30 Apr 2026 03:42:57 -0500
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@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=VOZkYm9qeKj6mBNutGeywT3/8qWLOVq/33wiIN9oCdKKBf6FO0MKNCx2w3NVYRd/gxk4jHKZWJynMIpS6NELsdrhD4SpPtJc/X8vkDZoYHXOa7hJiChgLzqloCRqdpFYeKqJkgA42qCvM17WqimMdDhiFhajca3VAKP8w67ugXVw6C1j5hcs0LTYB0wNmt6TVfG7+7eqv5Hf+h9NdOskBTOnZgEWMosUXA2KzuU7NvL6vEmxiNIqzx0oS2bFLaWIeSsvPQV3cEue3qSBxUreA4NWoMCeXq9NEBxR4t84E3mfrwuZe9l8uF50wSljNkmwMmWGNiJuj36LiYRdkNhHTA==
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com;
 s=arcselector10001;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1;
 bh=+JHC7x+39OR/WKJ+HCK0KVv7pkbu7w3ghxIhbpjgLIM=;
 b=ECos6BCeQ2KwmWZ76bEE/scwyZZWxYE7vHe1O8dcVmqbYasuy5fIrHGdyoDBu0R1LRZCsfr3KPVi6g87Bm3THfrrIlwk8CriiWf89zmnC3ohh440KYQzw8SVNIXM7/VcK607U7G28K3JBFkTsUuSXAReuhJqOqHAqedPV1kso8piQ0cNxkgqj/4tK/MRY4aQGa22RCoo4caIxxJO0YPV4VJilZaM9N50TaFyM9OIRHwBbuAD1AdVNUghM7lpzSJBlXy64/pIc3ZKpio4HY+fTsi+tdnAY1QGjntAmC8ChtWzDnjg8Q15HdjPjiHLkGgUf8GfD7VWFtVf/j144EFjRQ==
ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass (sender ip is
 165.204.84.17) smtp.rcpttodomain=xen.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=+JHC7x+39OR/WKJ+HCK0KVv7pkbu7w3ghxIhbpjgLIM=;
 b=IpjFjQM9qPSAIewFPqKDs3AE+IAgm0IyiLEk5FKLoFSB+P/emparDlKioKFFWB0x7CHsZVK3A+wazAHc8Jh8jSzsuP57/FLYip5+sDmjrNaAhWG0YKverQdFwJDxJ0IwF1gEdTIkaRa1AnAWBKD5XqbsfxrDk5J/Kp2gY0aXoOA=
X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 165.204.84.17)
 smtp.mailfrom=amd.com; dkim=none (message not signed)
 header.d=none;dmarc=pass action=none header.from=amd.com;
Received-SPF: Pass (protection.outlook.com: domain of amd.com designates
 165.204.84.17 as permitted sender) receiver=protection.outlook.com;
 client-ip=165.204.84.17; helo=satlexmb08.amd.com; pr=C
Message-ID: <8c5da373-53db-45ac-8725-18e450d322f1@amd.com>
Date: Thu, 30 Apr 2026 10:42:57 +0200
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH] xen/arm: skip holes in physical address space when
 setting up frametable
To: Julien Grall <julien@xen.org>, <xen-devel@lists.xenproject.org>
CC: Stefano Stabellini <sstabellini@kernel.org>, Bertrand Marquis
	<bertrand.marquis@arm.com>, Volodymyr Babchuk <Volodymyr_Babchuk@epam.com>,
	Luca Fancellu <Luca.Fancellu@arm.com>
References: <20260417091124.39552-1-michal.orzel@amd.com>
 <6a43af84-ca86-41f2-b58d-57be5baf49de@xen.org>
 <d023e89c-6670-4604-92db-6796d200a988@amd.com>
 <c43983c9-35cf-4859-9ad4-6d46b731bb15@xen.org>
From: "Orzel, Michal" <michal.orzel@amd.com>
Content-Language: en-US
In-Reply-To: <c43983c9-35cf-4859-9ad4-6d46b731bb15@xen.org>
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: 7bit
X-EOPAttributedMessage: 0
X-MS-PublicTrafficType: Email
X-MS-TrafficTypeDiagnostic: CH3PEPF00000018:EE_|BN3PR12MB9570:EE_
X-MS-Office365-Filtering-Correlation-Id: 9dc0f588-89e0-43fb-7811-08dea6947b79
X-MS-Exchange-SenderADCheck: 1
X-MS-Exchange-AntiSpam-Relay: 0
X-Microsoft-Antispam:
	BCL:0;ARA:13230040|1800799024|82310400026|36860700016|376014|18002099003|56012099003|22082099003;
X-Microsoft-Antispam-Message-Info:
	uUaKYxtLqDmz5WJJWO3NlRTC0KDobvzktoiRvYJxrOH2bpb96W2Bg7DHAx6Iu3qKFFh6n2e/Qyw1WmABxK5LrNKtCOQHzgdNURZ/Ni5ONZEpL4DQI7oHcb9HbegRRzTfHZItY00Ebqmkt4ahMjjjbqyHgcU9G3rj3Rigw9UnkNhVkXjZkQj2k1C/tohZDBJm0UxKVA1AJqUk879ncmFCS18WnFe/FS0e3xVA5RHTIRyVnuWQlwlYm08/F6EEl/R0SnDc9k3BNDMqebDVT73waxToQFfBNq2qcN2TJQvmz3o2N361575PeSYhqQSl3AJZZe9VzidQYfPKfKAtHqRWs7llms09XZmiJV7EDdJJMyia4/k/jeiainV6RrGHIz+TCZuUHmotuP1t623vpWfdYeN/05ohEHtHAoMK5+rQGl7Hmqd8VmnkgQUFsCHTExg2ykN9a/RYyjn8c3w7mBAYGpy4vt49+ortG8AhCIAesLt145ju0lFxKGYMqVF1IUsCkZwNXAxuOBo+ACFwijT8LboVbbTbSiTqsgmnZp/HhfJyAOac2CmGulTSmkT1KB7Xqw1jjLIEKH5mrmDIbV47DMPA6T4PmtRp2ZdxVULlWWq+HlfodwKzQ6Y4RaLsJLGE07c8Rri6N7xALo5VLLnP7DeVq9+GanuCKi4P0FhSM41372mbn/pV1zd4wq6xJhj4GizyvAhG1Wjvx3IkAL1uj9o2oGuqpH4ovDUTaNUoJyIawwOSIKqBgG53tHFRGl3H99eL2eR6QF/huZceeyeNGw==
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)(36860700016)(376014)(18002099003)(56012099003)(22082099003);DIR:OUT;SFP:1101;
X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1
X-MS-Exchange-AntiSpam-MessageData-0:
	qexHVcJz+T/5GTHdWQTwAoRbEGWRRjE/PWWWxqZ95iEWIXT4gLn7oZBZZ+5NY4EraXv/EmvvtGtdLXCiPSHAFJwjR7gozGI/AX9zEtGxHotMPkrRXfCi67YM5QQS21DQ2rlAcGXRPSz85lqw5CAPQev3L49NSC9q9wlIBwOevP2DPIUKNhlZJYXsrA6CFIDA7kUpNASq1W/3ky82HDQBrSLGPBwteBFV4c4SC4WHA74hO5BDz1Oe3AmLDoWxxQdaM5+An5K5kcWk31MQi6S6SZp3ICL3Ul8o20oiaaNNj7s5xiTxJ3b/yZs3qTg6hTe/sjxCt+OPpxwfV+QZyizMYHcPE03JHaduL9Mq7mzdUwoxvbY3fLMv+U0JP7pxMtBjRkfo6Umh6GRqLgNLB9jIWgO0qr6+yHDB8FxFLgVl1j/MMFvPxT7I69/Dm4g2GLTt
X-OriginatorOrg: amd.com
X-MS-Exchange-CrossTenant-OriginalArrivalTime: 30 Apr 2026 08:42:58.9814
 (UTC)
X-MS-Exchange-CrossTenant-Network-Message-Id: 9dc0f588-89e0-43fb-7811-08dea6947b79
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:
	CH3PEPF00000018.namprd21.prod.outlook.com
X-MS-Exchange-CrossTenant-AuthAs: Anonymous
X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem
X-MS-Exchange-Transport-CrossTenantHeadersStamped: BN3PR12MB9570
X-purgate-ID: tlsNG-4011c0/1777538584-CDD688B7-B24F7951/0/0
X-purgate-type: clean
X-purgate-size: 6329



On 29-Apr-26 16:42, Julien Grall wrote:
> Hi Michal,
> 
> On 22/04/2026 09:25, Orzel, Michal wrote:
>>
>>
>> On 22/04/2026 09:01, Julien Grall wrote:
>>> Hi Michal,
>>>
>>> On 17/04/2026 10:11, Michal Orzel wrote:
>>>> Refactor setup_frametable_mappings() into init_frametable(), modeled
>>>> after x86's implementation. Instead of mapping one contiguous frametable
>>>> covering ram_start to ram_end (including holes), iterate the
>>>> pdx_group_valid bitmap to allocate and map frametable memory only for
>>>> valid PDX groups, skipping gaps in the physical address space. At the
>>>> moment we don't really take into account pdx_group_valid bitmap.
>>>>
>>>> This reduces memory consumption on systems with sparse RAM layouts by
>>>> not allocating frametable entries for non-existent memory regions.
>>>>
>>>> A file-local pdx_to_page() override is needed because the generic macro
>>>> in xen/include/xen/pdx.h does not account for ARM's non-zero
>>>> frametable_base_pdx.
>>>
>>> Can you provide a bit more details? I am a bit concerned that this could
>>> result to subttle bug in the future if code within mm.c is expecting the
>>> original behavior. It would be preferable if the change is either for
>>> everyone on Arm or the function is renamed to avoid any clash.
>> The generic pdx_to_page macro does not account for offset which is something I
>> mentioned in the footer and I'm willing to work on in the future.
> 
> Sorry I missed the comment in the footer. But if the function is broken, 
> then why can't we implement pdx_to_page() correctly now? I understand 
> that ...
I wanted to do this in the future but ok, will do in v2.

> 
>   As of today,
>> this macro is *unused* on Arm. It's only used by x86 in some special big mem
>> related scenario. Using generic pdx_to_page on Arm would be wrong, so a future
>> patch doing that would be wrong (the fact that this patch adds a local redefine
>> does not change anything). Do we need a rename for a local redefine in a file
>> that is only related to frametable? Maybe a comment and a TODO would be ok?
> 
> ... this is not meant to be used by Arm today. But given this is used in 
> the page list, it is definitely not obvious that it is broken.
> 
> The alternative is to protect/move pdx_to_page() in x86. But I don't 
> know much churn this would involve.
> 
>>
>>>
>>> [...]
>>>
>>>> +void __init init_frametable(paddr_t ram_start)
>>>> +{
>>>> +    unsigned int sidx, nidx, max_idx;
>>>>    
>>>>        /*
>>>>         * The size of paddr_t should be sufficient for the complete range of
>>>> @@ -26,24 +47,34 @@ void __init setup_frametable_mappings(paddr_t ps, paddr_t pe)
>>>>        BUILD_BUG_ON((sizeof(paddr_t) * BITS_PER_BYTE) < PADDR_BITS);
>>>>        BUILD_BUG_ON(sizeof(struct page_info) != PAGE_INFO_SIZE);
>>>>    
>>>> -    if ( frametable_size > FRAMETABLE_SIZE )
>>>> -        panic("The frametable cannot cover the physical region %#"PRIpaddr" - %#"PRIpaddr"\n",
>>>> -              ps, pe);
>>>> +    max_idx = DIV_ROUND_UP(max_pdx, PDX_GROUP_COUNT);
>>>> +    frametable_base_pdx = mfn_to_pdx(maddr_to_mfn(ram_start));
>>>>    
>>>> -    frametable_base_pdx = mfn_to_pdx(maddr_to_mfn(ps));
>>>> -    /* Round up to 2M or 32M boundary, as appropriate. */
>>>> -    frametable_size = ROUNDUP(frametable_size, mapping_size);
>>>> -    base_mfn = alloc_boot_pages(frametable_size >> PAGE_SHIFT, 32<<(20-12));
>>>> +    /*
>>>> +     * pdx_to_page(pdx_s) in init_frametable_chunk must be page-aligned
>>>> +     * for map_pages_to_xen(). Aligning to PDX_GROUP_COUNT guarantees this
>>>> +     * because PDX_GROUP_COUNT * sizeof(page_info) is always a multiple of
>>>> +     * PAGE_SIZE by construction.
>>>> +     */
>>>> +    frametable_base_pdx = ROUNDDOWN(frametable_base_pdx, PDX_GROUP_COUNT);
>>>>    
>>>> -    rc = map_pages_to_xen(FRAMETABLE_VIRT_START, base_mfn,
>>>> -                          frametable_size >> PAGE_SHIFT,
>>>> -                          PAGE_HYPERVISOR_RW | _PAGE_BLOCK);
>>>> -    if ( rc )
>>>> -        panic("Unable to setup the frametable mappings.\n");
>>>> +    if ( (max_pdx - frametable_base_pdx) > FRAMETABLE_NR )
>>>> +        panic("Frametable too small\n");
>>>> +
>>>> +    for ( sidx = (frametable_base_pdx / PDX_GROUP_COUNT); ; sidx = nidx )
>>>> +    {
>>>> +        unsigned int eidx;
>>>> +
>>>> +        eidx = find_next_zero_bit(pdx_group_valid, max_idx, sidx);
>>>> +        nidx = find_next_bit(pdx_group_valid, max_idx, eidx);
>>>> +
>>>> +        if ( nidx >= max_idx )
>>>> +            break;
>>>> +
>>>> +        init_frametable_chunk(sidx * PDX_GROUP_COUNT, eidx * PDX_GROUP_COUNT);
>>>
>>> The function will do a round-up the mapping to either a 2MiB or 32MiB
>>> aligned size. This means we could potentially cover the previous mapped
>>> region or the next one. I can't seem to find any code to cover this
>>> use-case. What did I miss?
>> Hmm, I think I calculated something wrong here. Anyway, how about using 2MB
>> mapping size all the time? PDX group size is 2MB,
> 
> Looking at the code, it seems to be based on SECOND_SHIFT which 
> technically depends on the page granularity. Even though Xen supports 
> only 4KiB, we are trying to avoid making such assumption or add least 
> adding a BUILD_BUG_ON() (in this case, I would consider that 
> PDX_GROUP_COUNT is always 2MiB or SECOND_SHIFT).
> 
>> in-loop chunks are multiple of
>> 2MB, there is no roundup needed - zero overshoot. The last chunk may have ~2MB
>> overshoot but it does not matter as there is nothing after it to conflict with.
>> The downside is more TLB pressure.
> 
> I am a bit warry to modify the frametable allocation method because it 
> is used fairly often in Xen. Would it be possible to hence the loop to 
> detect contiguous chunk and decide the size allocation based on the chunk?
To eliminate overshoot I'll round up to page size. In-loop chunks are already
page aligned so the round up is a no op except for the last chunk.

What we care about is to reduce TLB pressure by setting wherever possible
contiguous bit. It's not lost because map_pages_to_xen with block flag handles
contiguous internally via xen_pt_check_contig. Will do in v2.

~Michal



From xen-devel-bounces@lists.xenproject.org Thu Apr 30 08:49:14 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 30 Apr 2026 08:49:14 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1297999.1573622 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wIN53-0000Yv-Jv; Thu, 30 Apr 2026 08:49:09 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1297999.1573622; Thu, 30 Apr 2026 08:49: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 1wIN53-0000Yo-Gt; Thu, 30 Apr 2026 08:49:09 +0000
Received: by outflank-mailman (input) for mailman id 1297999;
 Thu, 30 Apr 2026 08:49:08 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <val@invisiblethingslab.com>) id 1wIN51-0000Yi-Nr
 for xen-devel@lists.xenproject.org; Thu, 30 Apr 2026 08:49:07 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wIN51-00FgvN-0H
 for xen-devel@lists.xenproject.org; Thu, 30 Apr 2026 10:49:07 +0200
Received: from [10.42.69.4] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <val@invisiblethingslab.com>)
 id 69f3177f-5cb7-0a2a0a5109dd-0a2a450484fe-8
 for <xen-devel@lists.xenproject.org>; Thu, 30 Apr 2026 10:49:06 +0200
Received: from [202.12.124.147] (helo=fout-b4-smtp.messagingengine.com)
 by tlsNG-ebf023.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.1)
 (envelope-from <val@invisiblethingslab.com>)
 id 69f31781-1dec-0a2a45040019-ca0c7c93ab0f-3
 for <xen-devel@lists.xenproject.org>; Thu, 30 Apr 2026 10:49:06 +0200
Received: from phl-compute-05.internal (phl-compute-05.internal [10.202.2.45])
 by mailfout.stl.internal (Postfix) with ESMTP id 81BCF1D00085;
 Thu, 30 Apr 2026 04:49:04 -0400 (EDT)
Received: from phl-frontend-04 ([10.202.2.163])
 by phl-compute-05.internal (MEProxy); Thu, 30 Apr 2026 04:49:05 -0400
Received: by mail.messagingengine.com (Postfix) with ESMTPA; Thu,
 30 Apr 2026 04:49:01 -0400 (EDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@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-Transfer-Encoding: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-Transfer-Encoding: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-transfer-encoding
	: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=1777538944; x=1777625344; bh=itJ09kw1rI
	kq9vePbBZGgye6O4mab+wDcKEKpPA6Ruw=; b=CI/eJzN+QU+rVuluRmyQukY6gA
	ft9znjEvkBtXSgpJuO6Zqt4KmHx3LnRtOurN1Wp1mlxntz4GoELXICVJur1ype6S
	BtVpuYz1Qt5T9I0SvUtg+4yzLqFweH23Y6U8XxFcQeKpyolPmJUwFn9jURUNIQXp
	qt24kiEUhpMPdzRUODxQEJ9ww4GD4KVFG2tP5jAY4cYkFFbFMUlqOFTmnxKUFj0E
	5ux2KxC2e0bY+uvKDKUo0F6Xu7N+ORyXi9ypg0F1Px6sQrX8SZD62PIxeAf79pZ0
	zwKMwXTg0ZbEJTl3JXb/TDBrf1OzisKtaZiRdtt1qi5QfrY8xKVOxQlycMZQ==
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=
	messagingengine.com; h=cc:cc:content-transfer-encoding
	: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=1777538944; x=
	1777625344; bh=itJ09kw1rIkq9vePbBZGgye6O4mab+wDcKEKpPA6Ruw=; b=s
	ZIM2f50K+wFPnLYpbt1jDpWlmvb0lQAN8/8x2rubC4aUND4rtnmVHPGtFxVKF9hX
	ROFX+J8PvyUkxpV/75cA05kmwOAyxxik1fSGVeJLY6+tyEUupxw3BwHB2+7QKryy
	mXeyMYyy3vJVPCUffXPufxrUGp3y74w1iB7DBjnISVCULSwKf5nkllC3oIm0VC/P
	Jc/CkglLk7ubJHpd041AFbw43ha4oWbY1MCxn2+dex9oZqKlh0ZWdaaKIJ8Ahm5p
	oNNTH7jDu/FuMptycKTZQSaQHpqflxL3kGAW3A/nKtzcD2IjsGLW6LQRnXlF3sJ4
	Icwv7nab5T9MxPvuisyHQ==
X-ME-Sender: <xms:fxfzaa54m6jJXX4fNsH8OYzo0UtK8J5Fdj_KgeBLSHJp0swmFWs0LA>
    <xme:fxfzaTl4gSYty0SqVz4Lm_Yjg_uXOq_zjYVSjzagN_2TJmAqroYw1x4HumnPRZ-Rx
    ffhDRcslxeii5rietGGnAU6J36HTf0XCy0M30MIODiinDBjMw>
X-ME-Received: <xmr:fxfzaVHsJ1waVWApTgN5LWvy59-HdCiSKYGFMoBZJP__MeOfzx-jVvSnRV4FuXX73Q>
X-ME-Proxy-Cause: gggruggvucftvghtrhhoucdtuddrgeefhedrtddtgdekieekkecutefuodetggdotefrod
    ftvfcurfhrohhfihhlvgemucfhrghsthforghilhdpuffrtefokffrpgfnqfghnecuuegr
    ihhlohhuthemuceftddtnecusecvtfgvtghiphhivghnthhsucdlqddutddtmdenucfjug
    hrpefkffggfgfuvfevfhfhjggtgfesthekredttddvjeenucfhrhhomhepgggrlhcurfgr
    tghkvghtthcuoehvrghlsehinhhvihhsihgslhgvthhhihhnghhslhgrsgdrtghomheqne
    cuggftrfgrthhtvghrnhepjeehkeffhedvffeffffflefgfeejudejiefhtdeijeeuteei
    teejtdettdeuleevnecuffhomhgrihhnpehkvghrnhgvlhdrohhrghdpghhithhhuhgsrd
    gtohhmnecuvehluhhsthgvrhfuihiivgeptdenucfrrghrrghmpehmrghilhhfrhhomhep
    vhgrlhesihhnvhhishhisghlvghthhhinhhgshhlrggsrdgtohhmpdhnsggprhgtphhtth
    hopedutddpmhhouggvpehsmhhtphhouhhtpdhrtghpthhtohepthgvugguhidrrghsthhi
    vgesvhgrthgvshdrthgvtghhpdhrtghpthhtohepmhhsthesrhgvughhrghtrdgtohhmpd
    hrtghpthhtohepjhgrshhofigrnhhgsehrvgguhhgrthdrtghomhdprhgtphhtthhopeig
    uhgrnhiihhhuoheslhhinhhugidrrghlihgsrggsrgdrtghomhdprhgtphhtthhopegvph
    gvrhgviihmrgesrhgvughhrghtrdgtohhmpdhrtghpthhtohepmhgrrhhmrghrvghksehi
    nhhvihhsihgslhgvthhhihhnghhslhgrsgdrtghomhdprhgtphhtthhopehvihhrvghshh
    drkhhumhgrrheslhhinhgrrhhordhorhhgpdhrtghpthhtohepgigvnhdquggvvhgvlhes
    lhhishhtshdrgigvnhhprhhojhgvtghtrdhorhhgpdhrtghpthhtoheplhhinhhugidqkh
    gvrhhnvghlsehvghgvrhdrkhgvrhhnvghlrdhorhhg
X-ME-Proxy: <xmx:fxfzaS-oSito__s2A4LRHQPxKSW2ryP5NEMTTdGRKuk6f3f4lD15ug>
    <xmx:fxfzaemoHEbPfWLUfJdODKrvZ-zejgXUY2_HB_xH1VVtXgeV6oG9hQ>
    <xmx:fxfzaVBcjC6MCROghfGWzu4eY6opJYDBJzfMg37R5LNSRjatAZdL1w>
    <xmx:fxfzafWYpCNKk2lbLM9VKFZvPp_AWhNh0h95Siq-owLyKLghm09HMA>
    <xmx:gBfzaeidi626Hg46vBsfx6J90jhf44auaIdPPP3MpGET092Q64dmeDgJ>
Feedback-ID: i001e48d0:Fastmail
Message-ID: <74953b6a-d195-4a12-800d-af324ff35b29@invisiblethingslab.com>
Date: Thu, 30 Apr 2026 05:48:59 -0300
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [RFC PATCH] virtio-mmio: add xenbus probing
To: Teddy Astie <teddy.astie@vates.tech>, "Michael S. Tsirkin"
 <mst@redhat.com>, Jason Wang <jasowang@redhat.com>,
 Xuan Zhuo <xuanzhuo@linux.alibaba.com>, =?UTF-8?Q?Eugenio_P=C3=A9rez?=
 <eperezma@redhat.com>
Cc: =?UTF-8?Q?Marek_Marczykowski-G=C3=B3recki?=
 <marmarek@invisiblethingslab.com>, Viresh Kumar <viresh.kumar@linaro.org>,
 xen-devel@lists.xenproject.org, linux-kernel@vger.kernel.org,
 virtualization@lists.linux.dev
References: <20260429141339.74472-1-val@invisiblethingslab.com>
 <1777473712.8631fc262581453bbf619ec5b2062170.19dd9b07146000f373@vates.tech>
 <fd6493ac-9d3e-475a-a844-6e53b0472820@invisiblethingslab.com>
 <1777536698.8631fc262581453bbf619ec5b2062170.19ddd7187da000f373@vates.tech>
Content-Language: en-US
From: Val Packett <val@invisiblethingslab.com>
Autocrypt: addr=val@invisiblethingslab.com; keydata=
 xm8EaFTEiRMFK4EEACIDAwQ+qzawvLuE95iu+QkRqp8P9z6XvFopWtYOaEnYf/nE8KWCnsCD
 jz82tdbKBpmVOdR6ViLD9tzHvaZ1NqZ9mbrszMXq09VfefoCfZp8jnA2yCT8Y4ykmv6902Ne
 NnlkVwrNKFZhbCBQYWNrZXR0IDx2YWxAaW52aXNpYmxldGhpbmdzbGFiLmNvbT7CswQTEwkA
 OxYhBAFMrro+oMGIFPc7Uc87uZxqzalRBQJoVMSJAhsDBQsJCAcCAiICBhUKCQgLAgQWAgMB
 Ah4HAheAAAoJEM87uZxqzalRlIIBf0cujzfSLhvib9iY8LBh8Tirgypm+hJHoY563xhP0YRS
 pmqZ6goIuSGpEKcW5mV3egF/TLLAOjsfroWae4giImTVOJvLOsUycxAP4O5b1Qiy+cCGsHKA
 nCRzrvqnPkyf4OeRznMEaFTEiRIFK4EEACIDAwSffe3tlMmmg3eKVp7SJ+CNZLN0M5qzHSCV
 dBBkIVvEJo+8SDg4jrx/832rxpvMCz2+x7+OHaeBHKafhOWUccYBLKqV/3nBftxCkbzXDbfY
 d02BY9H4wBIn0Y3GnwoIXRgDAQkJwpgEGBMJACAWIQQBTK66PqDBiBT3O1HPO7mcas2pUQUC
 aFTEiQIbDAAKCRDPO7mcas2pUaptAX9f7yUJLGU4C6XjMJvXd8Sz6cGTyxkngPtUyFiNqtad
 /GXBi3vHKYNfSrdqJ8wmZ8MBgOqWaaa1wE4/3qZU8d4RNR8mF7O40WYK/wdf1ycq1uGad8PN
 UDOwAqdfvuF3w8QMPw==
In-Reply-To: <1777536698.8631fc262581453bbf619ec5b2062170.19ddd7187da000f373@vates.tech>
Content-Type: text/plain; charset=UTF-8; format=flowed
Content-Transfer-Encoding: 8bit
X-purgate-ID: tlsNG-ebf023/1777538946-328753FF-D2D1B605/0/0
X-purgate-type: clean
X-purgate-size: 4389


On 4/30/26 5:11 AM, Teddy Astie wrote:
> Le 30/04/2026 à 06:06, Val Packett a écrit :
>> On 4/29/26 11:41 AM, Teddy Astie wrote:
>>> Hello,
>>>
>>> Le 29/04/2026 à 16:18, Val Packett a écrit :
>>>> […]
>>>>
>>>> I've been working on porting virtio-mmio support from Arm to x86_64,
>>>> with the goal of running vhost-user-gpu to power Wayland/GPU integration
>>>> for Qubes OS. (I'm aware of various proposals for alternative virtio
>>>> transports but virtio-mmio seems to be the only one that *is* upstream
>>>> already and just Works..) Setting up virtio-mmio through xenbus,
>>>> initially
>>>> motivated just by event channels being the only real way to get
>>>> interrupts
>>>> working on HVM, turned out to generally be quite pleasant and nice :)
>>> Is it HVM specific, or can we also make it work for PVH (we can actually
>>> attach a ioreq server to PVH guests) ?
>> Sorry, typo, I did mean PVH of course!
>>
>> I've been testing this with PVH guests + PV dom0, with my PV alloc_ioreq
>> fix:
>> https://lore.kernel.org/all/20251126062124.117425-1-
>> val@invisiblethingslab.com/
>>
>> (Time to resend that one as a non-RFC I guess…)
>>
>> HVM actually does have legacy ISA interrupts (which are often used with
>> virtio-mmio on KVM), funnily enough, and I've tried firing those from a
>> DMOP but that silly thing didn't work properly.
>>
>>>> I'd like to get some early feedback for this patch, particularly
>>>> the general stuff:
>>>>
>>>> * is this whole thing acceptable in general?
>>>> * should it be extracted into a different file?
>>>> * (from the Xen side) any input on the xenstore keys, what goes where?
>>>> * anything else to keep in mind?
>>>>
>>>> It does seem simple enough, so hopefully this can be done?
>>>>
>>>> The corresponding userspace-side WIP is available at:
>>>> https://github.com/QubesOS/xen-vhost-frontend
>>>>
>>>> And the required DMOP for firing the evtchn events will be sent
>>>> to xen-devel shortly as well.
>>> Could that be done through evtchn_send (or its userland counterpart) ?
>> Actually, yes… The use of DMOPs is only dictated by the current Linux
>> privcmd.c code (the irqfds created by the kernel react to events by
>> executing HYPERVISOR_dm_op with a stored operation), we can avoid the
>> need to modify Xen by simply expanding the privcmd driver to make
>> "evtchn fds". Sounds good, will do.
>>
> Given that the event channel used by device models is exposed through
> ioreq.vp_eport ("evtchn for notifications to/from device model"). I
> don't think you need to expand the privcmd interface, and you should be
> able to do this instead :
>
> open /dev/xen/evtchn
> perform IOCTL_EVTCHN_BIND_INTERDOMAIN (for each guest vCPU)
>     with remote_domain=guest_domid, remote_port=ioreq.vp_eport
>
> Then interact with the event channel through IOCTL_EVTCHN_NOTIFY (with
> local port given by IOCTL_EVTCHN_BIND_INTERDOMAIN) and read/write on the
> file descriptor.

So the reason there's currently an ioctl to bind an eventfd to fire a 
stored DMOP is that the whole idea is to (efficiently!) support generic, 
hypervisor-neutral device server implementations via the vhost-user 
protocol.

Now of course, the current implementation isn't *entirely* 
hypervisor-neutral as e.g. the vm-memory Rust crate (inside of the 
"neutral" vhost-user device servers) does need to be built with the 
`xen` feature. But still, that's how it works. What can be made generic 
is generic.

xen-vhost-frontend, which is the thing that integrates these with Xen, 
actually used to handle the interrupts in userspace[1] by firing the 
DMOP itself (which is where I could "just replace that with 
IOCTL_EVTCHN_NOTIFY") but that was offloaded to the kernel with the 
introduction of IOCTL_PRIVCMD_IRQFD[2], similarly to KVM_IRQFD.

Switching back to handling the eventfd in userspace would be a literal 
deoptimization :)

While throwing away the whole generic layer to do a fully integrated 
use-case-specific thing sounds more difficult/tedious than this, and not 
necessarily desirable in general.

[1]: 
https://github.com/vireshk/xen-vhost-frontend/commit/06d59035f8a387c0f600931d09dfaa27b80ede7f
[2]: 
https://git.kernel.org/pub/scm/linux/kernel/git/next/linux-next.git/commit/?id=f8941e6c4c712948663ec5d7bbb546f1a0f4e3f6

~val



From xen-devel-bounces@lists.xenproject.org Thu Apr 30 09:56:07 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 30 Apr 2026 09:56:07 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1298018.1573630 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wIO7b-0001U0-8i; Thu, 30 Apr 2026 09:55:51 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1298018.1573630; Thu, 30 Apr 2026 09:55: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 1wIO7b-0001Tt-5U; Thu, 30 Apr 2026 09:55:51 +0000
Received: by outflank-mailman (input) for mailman id 1298018;
 Thu, 30 Apr 2026 09:55:49 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <freddy77@gmail.com>) id 1wIO7Z-0001Tn-HV
 for xen-devel@lists.xenproject.org; Thu, 30 Apr 2026 09:55:49 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wIO7Y-008RTU-Iq
 for xen-devel@lists.xenproject.org; Thu, 30 Apr 2026 11:55:48 +0200
Received: from [10.42.69.8] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <freddy77@gmail.com>)
 id 69f32722-2eae-0a2a0a5409dd-0a2a45089662-24
 for <xen-devel@lists.xenproject.org>; Thu, 30 Apr 2026 11:55:48 +0200
Received: from [209.85.221.46] (helo=mail-wr1-f46.google.com)
 by tlsNG-c1860d.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.1)
 (envelope-from <freddy77@gmail.com>)
 id 69f32724-63b5-0a2a45080019-d155dd2eb5d9-3
 for <xen-devel@lists.xenproject.org>; Thu, 30 Apr 2026 11:55:48 +0200
Received: by mail-wr1-f46.google.com with SMTP id
 ffacd0b85a97d-43d73352cf2so630730f8f.1
 for <xen-devel@lists.xenproject.org>; Thu, 30 Apr 2026 02:55:48 -0700 (PDT)
Received: from localhost.localdomain (5.116.208.46.dyn.plus.net.
 [46.208.116.5]) by smtp.gmail.com with ESMTPSA id
 ffacd0b85a97d-447b421721fsm10898056f8f.15.2026.04.30.02.55.46
 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
 Thu, 30 Apr 2026 02:55:47 -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=20251104 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=20251104; t=1777542948; x=1778147748; 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;
        bh=ZnTr+tpnUjMMyY2EgI3u33HAIOJqHrh+Ji5jhOHj004=;
        b=dECBSC0ejh0jZOur3VZ1tZxHppiYazzwiBNxOY67fSv0r/vvFaEn46fPjOBlYZ2Lw5
         cHTFr/kiOFkRbDLS2ouwC0a9OOleVa0PTz/6nxcHZ5Ado/daYv3S8zX0zVBgJPIe9/tK
         QZ6BkwW2VKDKVm/mvzNdkmGHOflVxGc3hqwDFsSxlprXRlo/bvORHUUdV8TZzxq9gLC5
         QfOVdZOIxozZMa42/iBP3uXcFflBKGHv93LMutgnK1Uv21rge3M80lPEvqGJzNMd8gDC
         w0ZmIZt0nxt0FrxVkd/fL4t54VKcY6bYYhqFn+jFlfnKNQZ9xcmt5B81Dp+3hOhZZ/Ni
         3kHw==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20251104; t=1777542948; x=1778147748;
        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;
        bh=ZnTr+tpnUjMMyY2EgI3u33HAIOJqHrh+Ji5jhOHj004=;
        b=OU2/b9L73vJbGlxB8Osls2lchtSsFmkI9KZD+rMjcKTfzvdZlhfrRy13Y/yEnCrHQB
         AJZl+wBI5FsEQMnoXv0PRtfFdltAnTVvNSjIDUFUfYlGRF0Mk/ygw2PTBRSZmZPmlUMA
         i2B55t5FWWLZMfzQ0Gr+fpiLN25w2+LMw/wHPB6qCkhH0tnF110DupRQbgwR1afGVhv1
         VeHSvB6jBwPhPaAR54PIBQeYw0KFCgGuGqBAlg+xPrw1M2JYT3JqqW1beKCHZjqxR31w
         7Jffp61nzzqIr9uuCKOec6zEmrpo225/7Ur9lMF/l5T8AlKjGFO7yJh/S1z9Yz2hREN2
         RD1Q==
X-Gm-Message-State: AOJu0YwVYVp1CHAh0FiQxKgc5a4l21aXNqOvLY4hPzuCPRwQJ0VvIA/z
	wWzLzkIRu01bcrNN8zLivAoMwfArgGw/fOQTj3C4Bk8x6UGcn/pT/dU1Z9gPQkeJ
X-Gm-Gg: AeBDievz1iAubhhRO+Wn2gltyr8odYg2tDCH7RBkN7o8PtHSV2bqw09sMqGTGNNUVxr
	klF/76YCWg6tDVC4+8Y44MmvrPUpnpIGbz5JVqVSxFqOL4Ss7OwZltSq94T0NtZKTl1aDy7XZkb
	D0lTEBw3OaZgTijQFPi5b2P2ERDjvXAdsO2jOlD5oRT3/J3EEHlc5mVuztJBW+++A3v5dUJ2spT
	eeqCCORVy9ob32e7o8oB2T0TsMzfnRVxOQdmwZ4pA4F3PzehItoNvgHuRpBGXtxzHsNIvs5a2XZ
	xb10t8ofm9ejTYeEoNJPgbWGCokYpEl/CquyP3doGXdmfUSLkQSjAsDQRA6dXOP/w91swVh8zBB
	UHARSdV9IIzldCOu27YbaZ5iuJhIOwQK6YWFVoT605cgIQiYFAI0Wz5Y7p9kSY885Ysq/M1HZxx
	HCRMu73apFv5Z0AgqTbRU/MxFkR1TNZWfawUochdog1ZV5PHjkqQqm5ML5TbBjmPAYv3uGPFgdD
	trl
X-Received: by 2002:a5d:58e5:0:b0:449:c5e2:a8a8 with SMTP id ffacd0b85a97d-449c5e2ab40mr1037430f8f.3.1777542947544;
        Thu, 30 Apr 2026 02:55:47 -0700 (PDT)
From: Frediano Ziglio <freddy77@gmail.com>
X-Google-Original-From: Frediano Ziglio <frediano.ziglio@cloud.com>
To: xen-devel@lists.xenproject.org
Cc: Frediano Ziglio <frediano.ziglio@cloud.com>,
	Anthony PERARD <anthony.perard@vates.tech>,
	Juergen Gross <jgross@suse.com>,
	Andrew Cooper <andrew.cooper3@citrix.com>,
	=?UTF-8?q?Roger=20Pau=20Monn=C3=A9?= <roger.pau@citrix.com>
Subject: [PATCH] tools: Use posix_memalign instead of valloc for NetBSD
Date: Thu, 30 Apr 2026 10:55:21 +0100
Message-ID: <20260430095521.8399-1-frediano.ziglio@cloud.com>
X-Mailer: git-send-email 2.43.0
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit
X-purgate-ID: tlsNG-c1860d/1777542948-3AB74DB1-7C82FB20/0/0
X-purgate-type: clean
X-purgate-size: 1532

More similar to other implementation.
posix_memalign was adde in NetBSD 8.0, released on July 17, 2018
and went out of support on May 4, 2024.

Signed-off-by: Frediano Ziglio <frediano.ziglio@cloud.com>
---
 tools/include/xenctrl.h     | 5 +++++
 tools/libs/ctrl/xc_netbsd.c | 9 ++++++++-
 2 files changed, 13 insertions(+), 1 deletion(-)

diff --git a/tools/include/xenctrl.h b/tools/include/xenctrl.h
index d5dbf69c89..f4316089e7 100644
--- a/tools/include/xenctrl.h
+++ b/tools/include/xenctrl.h
@@ -1390,6 +1390,11 @@ int xc_lockprof_query(xc_interface *xch,
                       uint64_t *time,
                       xc_hypercall_buffer_t *data);
 
+/**
+ * Allocate memory with a given alignment.
+ * The alignment must be a power of 2 and at least sizeof(void*).
+ * It returns NULL on error, errno is not set.
+ */
 void *xc_memalign(xc_interface *xch, size_t alignment, size_t size);
 
 /**
diff --git a/tools/libs/ctrl/xc_netbsd.c b/tools/libs/ctrl/xc_netbsd.c
index 1318d4d906..d27154dce9 100644
--- a/tools/libs/ctrl/xc_netbsd.c
+++ b/tools/libs/ctrl/xc_netbsd.c
@@ -60,7 +60,14 @@ void discard_file_cache(xc_interface *xch, int fd, int flush)
 
 void *xc_memalign(xc_interface *xch, size_t alignment, size_t size)
 {
-    return valloc(size);
+    int ret;
+    void *ptr;
+
+    ret = posix_memalign(&ptr, alignment, size);
+    if (ret != 0 || !ptr)
+        return NULL;
+
+    return ptr;
 }
 
 int xc_pcidev_get_gsi(xc_interface *xch, uint32_t sbdf)
-- 
2.43.0



From xen-devel-bounces@lists.xenproject.org Thu Apr 30 10:49:10 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 30 Apr 2026 10:49:10 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1298042.1573639 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wIOx5-0000AK-3V; Thu, 30 Apr 2026 10:49:03 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1298042.1573639; Thu, 30 Apr 2026 10:49: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 1wIOx5-0000A6-0f; Thu, 30 Apr 2026 10:49:03 +0000
Received: by outflank-mailman (input) for mailman id 1298042;
 Thu, 30 Apr 2026 10:49:02 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <roger.pau@citrix.com>) id 1wIOx3-00009x-VH
 for xen-devel@lists.xenproject.org; Thu, 30 Apr 2026 10:49:02 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wIOx2-008dPf-Qf
 for xen-devel@lists.xenproject.org; Thu, 30 Apr 2026 12:49:00 +0200
Received: from [10.42.69.12] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <roger.pau@citrix.com>)
 id 69f33391-e002-0a2a0a5209dd-0a2a450c9b80-26
 for <xen-devel@lists.xenproject.org>; Thu, 30 Apr 2026 12:49:00 +0200
Received: from [40.107.209.30]
 (helo=PH8PR06CU001.outbound.protection.outlook.com)
 by tlsNG-d25034.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.1)
 (envelope-from <roger.pau@citrix.com>)
 id 69f3339a-62f1-0a2a450c0019-286bd11e7a1b-3
 for <xen-devel@lists.xenproject.org>; Thu, 30 Apr 2026 12:49:00 +0200
Received: from CH7PR03MB7860.namprd03.prod.outlook.com (2603:10b6:610:24e::14)
 by PH0PR03MB6480.namprd03.prod.outlook.com (2603:10b6:510:b0::6) with
 Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9870.20; Thu, 30 Apr
 2026 10:48:56 +0000
Received: from CH7PR03MB7860.namprd03.prod.outlook.com
 ([fe80::f5ba:35df:1c9f:b343]) by CH7PR03MB7860.namprd03.prod.outlook.com
 ([fe80::f5ba:35df:1c9f:b343%4]) with mapi id 15.20.9870.020; Thu, 30 Apr 2026
 10:48: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=yBBNC8AegJKWe9f5lDgGTvuDM6y7/enp8Xf9EPHbZfld9pUXtskgvpDumxvKw50Pz/efEkyDWOEOEYucprW3qrxYq3cumShvL0nDjIFn6jJFHKe8Jv/mS76oDB98mdS6JC57XYrLbsjRpIejgMRgzIWqyZ5hpvLSvUnqBCOZ89VnN5r+Agcz5OL0Fc2Aw9tBpvjW+hnBVLDYsKCiJnbnlnZ0h3Dgak48fWZviuF11WlvQEZ5V/rd2sMeH2DVjbK4yTSNedd2VXkaneGksqPu4gfhvmTheyYLXxVlcEvf09GH5Og6IHPw0MRBhsXbSLA3/afCl3g0SnKBpzGNWyqLoQ==
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com;
 s=arcselector10001;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1;
 bh=5hs/q9NxL12vrhL7CLss2+XL4VeCTy14mpj+T/lTmC8=;
 b=r7kC/GjvPIj5n2vq/aiClYBLN8Mk8tepYn4UovgNBXRZD0eVGbZifLzdXWUlPOYbB7U9PAHjG+QoXcQZkBEj+Q+RwN7YpWaoE6nqxZajL8x34mtn0of080dMoI2pkVeVWOiQ/WQigcDEtc/pftFKRAISc9/qGHlUchXE8H3mkWr4Iup1UITDA1JOuyOvlaDNmE3d5/VkKHzgoWeYr/MX71LEHYh+IMYzw3yj35nSoFtEiVaROnKgp1C1h1lLm28kEoN6nhIIDMs4TSgJH45hCIqdk7Sf5AyeqzeH8wC3XtZvukpS2EAyQxVour1eFqy0lGxuy/lbpkD0pxV3U1OfBA==
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=5hs/q9NxL12vrhL7CLss2+XL4VeCTy14mpj+T/lTmC8=;
 b=LjyYBdcoY07I1r7PXjqD8lWnvrjAWWhp0q+wNdRXTUonyhzRT0ywas609Sf0R+xiUdsXryU3wgZNhmPOPjOu793AouEOYLRZmsMtZbt+LEYBvkInEaFaVeH9dthdEGdXw1Ikyj4MbOBoW7Rx3HugqHOeuxyidUyOIGOQ+1x4B8A=
Authentication-Results: dkim=none (message not signed)
 header.d=none;dmarc=none action=none header.from=citrix.com;
Date: Thu, 30 Apr 2026 12:48:53 +0200
From: Roger Pau =?utf-8?B?TW9ubsOp?= <roger.pau@citrix.com>
To: bouyer@antioche.eu.org
Cc: xen-devel@lists.xenproject.org,
	Frediano Ziglio <frediano.ziglio@cloud.com>,
	Anthony PERARD <anthony.perard@vates.tech>,
	Juergen Gross <jgross@suse.com>,
	Andrew Cooper <andrew.cooper3@citrix.com>,
	Frediano Ziglio <freddy77@gmail.com>
Subject: Re: [PATCH] tools: Use posix_memalign instead of valloc for NetBSD
Message-ID: <afMzlcrP7phSirsw@macbook.local>
References: <20260430095521.8399-1-frediano.ziglio@cloud.com>
Content-Type: text/plain; charset=utf-8
Content-Disposition: inline
In-Reply-To: <20260430095521.8399-1-frediano.ziglio@cloud.com>
X-ClientProxiedBy: MA2P292CA0011.ESPP292.PROD.OUTLOOK.COM
 (2603:10a6:250:1::15) To CH7PR03MB7860.namprd03.prod.outlook.com
 (2603:10b6:610:24e::14)
MIME-Version: 1.0
X-MS-PublicTrafficType: Email
X-MS-TrafficTypeDiagnostic: CH7PR03MB7860:EE_|PH0PR03MB6480:EE_
X-MS-Office365-Filtering-Correlation-Id: 1539819d-757e-48d8-97cc-08dea6a613e1
X-MS-Exchange-SenderADCheck: 1
X-MS-Exchange-AntiSpam-Relay: 0
X-Microsoft-Antispam:
	BCL:0;ARA:13230040|376014|1800799024|366016|22082099003|18002099003|56012099003;
X-Microsoft-Antispam-Message-Info:
	3cBb7T01G4fYTW8ZraxYjeOmkSVaIdDs/VFV0SoY6nTRQW2rDhNA/2dOqa1hIPcnVuocmPBm3G0S404FNKsRmb7zcVGrCCufE8Fhe7tzonalZMZWiMESs8Q/LCWptW4XXHWz+t+9LP/lepbBBVN3aAU/T5T8X3h2WGHf+cWmTEMlAsMFix0BGPUbAZI5KusxFbdyYN28O9YGSbfoKR2EX8RyedHszfgF5mUycXwj1VQifLHc8XrDUVlxBGkzIhWm4UMFrF5/wN28fxXdB1/C4u9hBhm305ygTOBF+ioCM8TfY+tvGmBNR3U/Iyy/i2kt9st9jQdlKtHSCiioBHti8esg+6VG0gw1ezVzvGEXXylwUEUS37YwgXrB/vjpImMSu22smHufNos2MgwGdcOpPnPu0TnSxIGO4NdEifdW9zwQnhOlhby78trJAaiIwq88VyP2wGx9n5NhUwuWg1aFd/+MgC4lPYIQriRMg7XtVfE1tValI1DhqUdbymc3X11TmiW4MgiCONtYyboL+S1aaNk6qKHTw3BdlmCleWS/1ThevBfqjJjUQKd8BQB8N6muh+eaF/Fn+RfWawMxg5D6ehDeiTwkPwHXll27kJDNuAp0gL4V7KtgeCy0ekwvPZdhjChhhx0783hTgFeqTgHW5Uu1bBI1hFdTiEWd3E9D5ATKzIh3op61dWNOUPIiXe/1TZtOFVwrlXRNmTQTtlr8VdZFCsZCXGQ4xB2XSliUsWM=
X-Forefront-Antispam-Report:
	CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:CH7PR03MB7860.namprd03.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(376014)(1800799024)(366016)(22082099003)(18002099003)(56012099003);DIR:OUT;SFP:1101;
X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1
X-MS-Exchange-AntiSpam-MessageData-0:
	=?utf-8?B?T3FmdkZXeWZabS9yeTdpZktNODVZYUlnaDJGMUc0TnVQYjVseW1XQ1EzK3Ft?=
 =?utf-8?B?VVA0UXQ2MnIva1lTaEtSS1BxZ3VLa25XTGxOQTYvK0xJVDNQZG01TitTdmpy?=
 =?utf-8?B?bXgxY0hKd0FNaDRSNWFZWFVuWHZlTW1sSnZtakxGdEJSSXdZcUdmQU5kRGpO?=
 =?utf-8?B?U1hhQVZtaDNPTjZFdjc3THIwMkMxZzl5Q1MwWWhXejRBVUFIckx3YUxVOUM4?=
 =?utf-8?B?dnVwL2E1eG9hcEFqeERpU05TQkVHQWREeDY3MXE2Ujc4ZG9nTWt1Z3A5eEt2?=
 =?utf-8?B?QmtieUMwRjNKaTZrcjRzdUlsbXEvRHA1VGZKTGozb044Y2l2UjJhaW5OdzZy?=
 =?utf-8?B?aFJLODRoRldLb3pkU05Gd3J5MlR5NkpzMXFXb3ZCMkxsSnNTMUJEc2xFU3JI?=
 =?utf-8?B?ZzFKNHE0M3EzQlBCYW5OUnplTjl0bEVTYUpJdHJNOURBZCtGMytSUWZLK0Q3?=
 =?utf-8?B?VGxKY0JtcWtvcUFzNGlNamFGQi9GTTZjaU5YRXFwQUZpVTIyRndpR1FNZFpC?=
 =?utf-8?B?V1lXRFE1WDNVVWRKUGcxZVZBMHo4VnVubEpGTmxtMVRuREFKb2NQdjU1ZUN6?=
 =?utf-8?B?M0QyQ3dWbkZRanlkMWgweXJ5bjV0Z1BMRkFzODZ3MlZ3QzgwcVRoVExnTVVj?=
 =?utf-8?B?b1M4MldFT1dSTVRmbXNxbGl5YW5YNkxPZWZoRHBCVkU5cjZjREprSFBTV0dx?=
 =?utf-8?B?N1I2anJDVUtSSTdJL3RDM0RWOHpLRm56S2c5VlFJVEZCdTlyR2l6bkY1d1pI?=
 =?utf-8?B?dTk4TjFpV205K01VZ3o5T0tOTkhsMU1vMU1jMGVWTGx4RklxRUw5K1V5MW1t?=
 =?utf-8?B?Y2Rac0hPNDR3L3lya1c3cHVYWmEvVW90NTgzNXNaV1pWMDZQTGxFY3FKRHps?=
 =?utf-8?B?UnFFaVdxaGhTQ0x5V2cwaldIeGZSOVVmRGJ2K3Q2SUNiUUI2SnppN2pONG93?=
 =?utf-8?B?MCt1WUYxZ1BaeEl2dHVUUzlIaDNjd0QveE4xYWNzSnoxVWliazlZRW1ScjJa?=
 =?utf-8?B?NzgrL3U4TlZzdnJYaHJ2NjFrN3NSTkw5MHBZWGlJaThzWndHZUxkbCtqekZk?=
 =?utf-8?B?UEhZSFRCM3JGZnlxY3VqRk5HK2lMSk9NTDhhTHNaMDRDUmhjUnVQdjhtVlNm?=
 =?utf-8?B?UGRCa2UvNVNTMlB0R1NRdmM1VGU2M0dXOUZLQ0NLYUt2NGVQQWpwQU1pa2M4?=
 =?utf-8?B?bWNGRWZpejdNd2txZndDMjFNZzExeFlibjRBQkswZU9hQVhJUlJxWFFPL3ND?=
 =?utf-8?B?R25JYllDaHIxN3I3ZmI0d2hIMENMVTdzWHVHeDU3bkN2RFY4dDVWUGJyR3pa?=
 =?utf-8?B?YkxYdlRsR1lZcXJiRUNQY3hrTmJ4NGNKYWNPS0NoTUJUY1Aya2RQSUo3elVT?=
 =?utf-8?B?OC84T2NjNTZ4enVrK3Y1VldaVkkyaTZTeWdWZ3J0cDdRRitDNEVjcWE2MkdL?=
 =?utf-8?B?aVkxL1FXblU4ZU1zbThrMlo2MGRmWTl0bXFsZEFNRGZJbmJacm1HZWN0ZjRI?=
 =?utf-8?B?dXgzbFYxK2E3RDRoc0N4T1pqQWp4dHp2QjBkRmhZKzZ3L3pkOTFZUHJXOXRv?=
 =?utf-8?B?czZsNWVJZGtqL0prMmhyTDZBQWJkamZieXBQdFBSb3BSajNsVERENFBQYzU0?=
 =?utf-8?B?SXRjdE5KREtYZlJJOFp6MFdSNk92QTlxMy9kR21STUhFSVVwTXdLYXRxdDdq?=
 =?utf-8?B?OGMxUkF3WnU5dXB0c3RxRXpCQXlSY2tzRkg0U3YrbnFZcWExbWZIeDVpOUlQ?=
 =?utf-8?B?SnNiWGhXZGluUmNIcEVvVWg4a0kxSzdReW05R0RGb29wWUFTemxKSkNKYlUz?=
 =?utf-8?B?WUFISmJhVWhOQ2JlTk0zUVp1K0s2OTN5b3RJOHdja2h2S0Fjck5qV3k2NTRq?=
 =?utf-8?B?Y0FyOGFSQVNuMXpyVTcvbEVlK1BvVERSOGFxd242Tlk5b3NZZ3FxN1N2ODZh?=
 =?utf-8?B?c1BIK3lZZ241Mm5EZ3I5Ymk5M3lpNFQvTHdNZVRmblAwc3djMVhUSmMvMkM5?=
 =?utf-8?B?dHYrTWkrZmNHeHlwWVM2VkJzeHE5V3Zrb0paYWVyVjZkYUhYSE1MRjV0MzJZ?=
 =?utf-8?B?eEdzQ3haTWlHelhoa0Z3SFdvdmF1akRNZ1N2WXJwSVlIeDJmdTY2OVlIVHcr?=
 =?utf-8?B?Q2lzUVg2Qm5TSHJZOXQ1WTBNMUJ1SHd0WUVncXF0L2dwM1BtRFJKM2pQU1dT?=
 =?utf-8?B?bTRpMm9ra3pmTnBOOHJyQmp0U2JnYnVWR1NWallBNmdGWVNSSkwzRG14cnhE?=
 =?utf-8?B?TTBRakVKRFZGeDYzU1hKd2grSm9BNHI4VHMyeWxFQ25nZ1Z5d3JuTmdKcG9P?=
 =?utf-8?B?alI4NllpYkZEcTB1MktoNVF5QlB0UUd0b1h4WDhock9BbmVKUXV0Zz09?=
X-OriginatorOrg: citrix.com
X-MS-Exchange-CrossTenant-Network-Message-Id: 1539819d-757e-48d8-97cc-08dea6a613e1
X-MS-Exchange-CrossTenant-AuthSource: CH7PR03MB7860.namprd03.prod.outlook.com
X-MS-Exchange-CrossTenant-AuthAs: Internal
X-MS-Exchange-CrossTenant-OriginalArrivalTime: 30 Apr 2026 10:48:56.3540
 (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: PgTBapcGCRJVAv0/OjwPa3l4hBcBzTsl+fbItmVYRJR5EZShhnF6AU69ZB7NvDOv2loeQQ5Taz6e3LTJ4cKFWw==
X-MS-Exchange-Transport-CrossTenantHeadersStamped: PH0PR03MB6480
X-purgate-ID: tlsNG-d25034/1777546140-6F97DCF5-5F990528/0/0
X-purgate-type: clean
X-purgate-size: 1758

Adding Manuel that maintains the NetBSD xen-tools package.

On Thu, Apr 30, 2026 at 10:55:21AM +0100, Frediano Ziglio wrote:
> More similar to other implementation.
> posix_memalign was adde in NetBSD 8.0, released on July 17, 2018
> and went out of support on May 4, 2024.
> 
> Signed-off-by: Frediano Ziglio <frediano.ziglio@cloud.com>
> ---
>  tools/include/xenctrl.h     | 5 +++++
>  tools/libs/ctrl/xc_netbsd.c | 9 ++++++++-
>  2 files changed, 13 insertions(+), 1 deletion(-)
> 
> diff --git a/tools/include/xenctrl.h b/tools/include/xenctrl.h
> index d5dbf69c89..f4316089e7 100644
> --- a/tools/include/xenctrl.h
> +++ b/tools/include/xenctrl.h
> @@ -1390,6 +1390,11 @@ int xc_lockprof_query(xc_interface *xch,
>                        uint64_t *time,
>                        xc_hypercall_buffer_t *data);
>  
> +/**
> + * Allocate memory with a given alignment.
> + * The alignment must be a power of 2 and at least sizeof(void*).
> + * It returns NULL on error, errno is not set.
> + */
>  void *xc_memalign(xc_interface *xch, size_t alignment, size_t size);
>  
>  /**
> diff --git a/tools/libs/ctrl/xc_netbsd.c b/tools/libs/ctrl/xc_netbsd.c
> index 1318d4d906..d27154dce9 100644
> --- a/tools/libs/ctrl/xc_netbsd.c
> +++ b/tools/libs/ctrl/xc_netbsd.c
> @@ -60,7 +60,14 @@ void discard_file_cache(xc_interface *xch, int fd, int flush)
>  
>  void *xc_memalign(xc_interface *xch, size_t alignment, size_t size)
>  {
> -    return valloc(size);
> +    int ret;
> +    void *ptr;
> +
> +    ret = posix_memalign(&ptr, alignment, size);
> +    if (ret != 0 || !ptr)
> +        return NULL;
> +
> +    return ptr;
>  }
>  
>  int xc_pcidev_get_gsi(xc_interface *xch, uint32_t sbdf)
> -- 
> 2.43.0
> 


From xen-devel-bounces@lists.xenproject.org Thu Apr 30 11:47:35 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 30 Apr 2026 11:47:35 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1298074.1573649 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wIPrR-000861-9o; Thu, 30 Apr 2026 11:47:17 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1298074.1573649; Thu, 30 Apr 2026 11:47: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 1wIPrR-00085u-6v; Thu, 30 Apr 2026 11:47:17 +0000
Received: by outflank-mailman (input) for mailman id 1298074;
 Thu, 30 Apr 2026 11:47:15 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <roger.pau@citrix.com>) id 1wIPrP-00084H-Pr
 for xen-devel@lists.xenproject.org; Thu, 30 Apr 2026 11:47:15 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wIPrN-006Elg-5Q
 for xen-devel@lists.xenproject.org; Thu, 30 Apr 2026 13:47:14 +0200
Received: from [10.42.69.10] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <roger.pau@citrix.com>)
 id 69f3413f-2eae-0a2a0a5409dd-0a2a450ac036-8
 for <xen-devel@lists.xenproject.org>; Thu, 30 Apr 2026 13:47:14 +0200
Received: from [40.93.198.22]
 (helo=CY7PR03CU001.outbound.protection.outlook.com)
 by tlsNG-4011c0.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.1)
 (envelope-from <roger.pau@citrix.com>)
 id 69f34140-56b3-0a2a450a0019-285dc61645ba-3
 for <xen-devel@lists.xenproject.org>; Thu, 30 Apr 2026 13:47:14 +0200
Received: from BY1PR03MB7875.namprd03.prod.outlook.com (2603:10b6:a03:5b1::10)
 by SJ0PR03MB5503.namprd03.prod.outlook.com (2603:10b6:a03:288::11)
 with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9870.20; Thu, 30 Apr
 2026 11:47:10 +0000
Received: from BY1PR03MB7875.namprd03.prod.outlook.com
 ([fe80::20d8:6571:d4aa:166c]) by BY1PR03MB7875.namprd03.prod.outlook.com
 ([fe80::20d8:6571:d4aa:166c%6]) with mapi id 15.20.9870.020; Thu, 30 Apr 2026
 11:47: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=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=DkuXLB01deW4cPfURSauhuLNTRO8UX8AXkPXi7udS5kAFhrlT3D5eNhp+nqnbXmDHuTlG2k5fVriMqOgZbmKvIyCSS7qyBKaTlr4froz7V5eN+CUe6Yqj13aiNrnSEdvcQetHrHE7s9ZCEhkXjTR6b2wL2fIdNlkWClpMsBQebDqKcBJhWjh2b3Wym6MfyJqKTcXyYQ+b5fa7C0TEV8NHAZ4go02urjQN0qm8qY50Bod5zco6qNrKs05yGr47yWTNn+AxUa8sILCvJDn5nKJrombbfjd0qfAbZZ0NzuOC6MunEPiiMMVkdVclNtDRuubn/EsFEBY4I0rB5s3/BwQdQ==
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com;
 s=arcselector10001;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1;
 bh=GA0I+u7PVwRVBZ78yAc4QDA2zYRbNwF4+FJE2Bq+94I=;
 b=OKfmQsJJ8WRvsasonebuXWdXXNTnocJGq9AQu1tKFwb1juP5AZAlH1DZpamk/hhD+2xSVDdQ3H3wm1cZCdewvWlfaoKSrJeDnaCzKQw3/OxVdJ2pMq+gRI7UTwNBFpm6uhaLjLlmxjgNFHWVL1Vb+vLPRvPH2ZoeKgU+IHyD4Bsphrlr6xsisa4c1MKFvsZceNlBrakJqC9eGD137RBZt8X9/hVFLlf8Q6zMnvFEguVhlJ2BnMKAvJr4LSpefUXn+SVObVHLfrqOcXtIJNjgoRmcrlPo+qjUUYNkZpomYJNoJa+s5aZhgyOcPbmT+4rzTuqOLVqvRqiS6EPoowDkhQ==
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=GA0I+u7PVwRVBZ78yAc4QDA2zYRbNwF4+FJE2Bq+94I=;
 b=lWQdoMWQNajCiEM3nJqfhj6QXI5s6o9JCMYudwTVnr1qsk7NpvE3KVJQRYUh/57GqF7EotYf5l8rU4t7aA1psQAuvWHmiHhjBsy5Voxuv1carwisoDbrRJ1xPP6eHTTuVmRnS1wXQzWvgHKXKO9AWdEzwvRYxXOjrT2uwG+0O5c=
Authentication-Results: dkim=none (message not signed)
 header.d=none;dmarc=none action=none header.from=citrix.com;
From: Roger Pau Monne <roger.pau@citrix.com>
To: xen-devel@lists.xenproject.org
Cc: Roger Pau Monne <roger.pau@citrix.com>,
	Jan Beulich <jbeulich@suse.com>,
	Andrew Cooper <andrew.cooper3@citrix.com>,
	Teddy Astie <teddy.astie@vates.tech>
Subject: [PATCH] x86/cpu: identify uninitialized CPU data using BAD_APICID
Date: Thu, 30 Apr 2026 13:46:47 +0200
Message-ID: <20260430114647.94526-1-roger.pau@citrix.com>
X-Mailer: git-send-email 2.53.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
X-ClientProxiedBy: BN9PR03CA0547.namprd03.prod.outlook.com
 (2603:10b6:408:138::12) To BY1PR03MB7875.namprd03.prod.outlook.com
 (2603:10b6:a03:5b1::10)
MIME-Version: 1.0
X-MS-PublicTrafficType: Email
X-MS-TrafficTypeDiagnostic: BY1PR03MB7875:EE_|SJ0PR03MB5503:EE_
X-MS-Office365-Filtering-Correlation-Id: a85daa8b-4bb4-4704-8842-08dea6ae366a
X-MS-Exchange-SenderADCheck: 1
X-MS-Exchange-AntiSpam-Relay: 0
X-Microsoft-Antispam:
	BCL:0;ARA:13230040|376014|366016|1800799024|18002099003|56012099003;
X-Microsoft-Antispam-Message-Info:
	Bh17C8oRjEY0POg5b8Vhz90BO+Kren+bH6h1/bjf//peZPBb0g64zDlHxOgxGHcbJrJe3g6sM19OzLDCjENgdVcobk0Jd6XQE1hRTL3dQbhkyV9l5f4g300xSfczLn1P684IaNnnuqy8bTMzCvQT2D+MgfA5+PemZ27HTQ7198rcC8nzX0Pxm1o1L6DpYecclsZ6mpG4pnP4VGW8+Ui3reNjA4qaXCez/EfjGK60ADeyxwYH4OXNvt+bzk3X1E/EI4aUbhwlRbZNpP7UaaHHyfowafJfs6o4sikE/Gfiszcq8oc7xla2tv9Q5x1z2MD313v2Ul5B8QmUxh0vwN83DniAcK6LkFmzeGqQZgiUkW3g90Bf4RY+88DxtMu6eoh9Ijxr5AqkNkMg+Mb/iSrGm9X7mT3DNfvnsEARf8oeCkh2FwvnzOXKYNOvCq9bT+tJ04JaAOz8/Oeam8bhnLEZK+26iGOxlV54YtiRExeRNdwur0yqkblULOh3LRB0a6r5PTqLJYPdJQvNhPohIvvuHosKvmCUdAR7AMZWqVL680we94fOCcMmhINveNsYYnYKI0xpdvzP/RGD6iOQNleeokVIUJmruILoEtgy6ttH8mKO1CehZUdS52s707TI9OaPONiIQIteimD2nC+69XEktEBDQN0BqwCP2WKDNrcPn4YCf44RuU31QzyrnIyasPMyr6cVQXOZtJc5DwcaPq5rN6ihgDPft0cEegXwXXcM9N8=
X-Forefront-Antispam-Report:
	CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:BY1PR03MB7875.namprd03.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(376014)(366016)(1800799024)(18002099003)(56012099003);DIR:OUT;SFP:1101;
X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1
X-MS-Exchange-AntiSpam-MessageData-0:
	=?utf-8?B?T2w1R1E4dkVNbU9ienQvWTM5MkU5Mk0wdEplYkVrZkJUYnhsUXN0V01xWDhx?=
 =?utf-8?B?RGh5Q0FmWXE4dTZpdG1pRTNyZmMzaUZKMDFlMFpWb3B3ZzNKQkkyOThQU2NG?=
 =?utf-8?B?eUtVd2Nkam8xZlp0YlRrc2R5a3FXdDN3K0Q4YkxuaFR0aG1EaXNSZUcva0Nz?=
 =?utf-8?B?K0Z4d3dsQVlvazhzRFc0cWtpazhMbXFUTUNwak1NenZJcC9pcENmQ1B0MWY1?=
 =?utf-8?B?c0hBZWhXelVzTkJuVzBNOEZnVGk2SWxyUjJTWjVtYThhQll4dnd0UXJ6d0Ra?=
 =?utf-8?B?a2hFYlZ0ajZ3eXM1ZUd2eDhGZ0pJM1BDQ2czek01anhjMnBISWFWSjlySHI3?=
 =?utf-8?B?bXZrbk5Lc0ZlaG9YMjJydHlCRnNQNkNEcXc5MXlKWm9oSGJqd1VabnMzYmdO?=
 =?utf-8?B?ei9QVGw2M0oxTFVqVUE0YUFUczlOMXVqbVpMZWtKSjZSRjBmaVFqdGxOYlhP?=
 =?utf-8?B?Yko3Nk5RYlpZWW0xSTdpdWtlQ3FlR24rc1B5V2EwZU42VTc3MmNaUGU1RHUx?=
 =?utf-8?B?RlNqeHZ6dlcwcE40RHYvQ2VtMDdJZU91b21BQytpZllLRFhCdkdzTXhMdVJU?=
 =?utf-8?B?ZmpPVDlMUU5PdGxRd3pnNkVZam05SGNLbzREQ25TakRNTm1xQzJBcGV0RDBn?=
 =?utf-8?B?Zm9HVlA1VHdzWENwb0U5dVp5ZXBYVklaVmNJM1pseE8rVjJmN05Kb0xheFFy?=
 =?utf-8?B?UDhBSEttb21nZ2VMVmNkVjhjd1pnNHI4eTJYMm9ySG5XSUw4b05Vb0VUZnQv?=
 =?utf-8?B?NGtaOGl0eU1IYXpOam5Fa3pvUnJwUXU5VzFBMjZYcTd5Tng0RlR2MTJqMTZq?=
 =?utf-8?B?c2oyRE5zV0RuZk9ha1FPY052SGhlSXVuVWRoR0RBdnd4WllEZ0dWWkZITG9w?=
 =?utf-8?B?SklReTR6YmJEVHY2cGhqZTcrSUdsTno4VW85SWhiYlU1ODFJT0tRdElkT3RQ?=
 =?utf-8?B?WXZscXM3SXBpV1d3R1JqcW9KaVgzUjUzcEkyNjUvZWs5NlpseDhoT1ZzU2Rw?=
 =?utf-8?B?SGZVMGlWaFQvc0g0ZTFlOGNJMGowcTVHb1J0REE5K2g1NWdFNGRuU1ZyWlVx?=
 =?utf-8?B?YjlER2VZaTNMTitHbnZQbUZuMkZRKzNTNzBnbGNRUGgwbEc2U21RaThKMisv?=
 =?utf-8?B?bW85OXNONE5HVGtpS3hKR0hzYXdVRWJtTnZ3T1NFRk9nUnVVSkVmNFpqSDUw?=
 =?utf-8?B?V2RMVTJQWjdlTDRiTlhnUnZkVmhsWCtDMHRGd3lVL3ZBYUNFRlZUcVZjdnVX?=
 =?utf-8?B?Y1dvNk1QUGlFMVRzYXRXdGo4dndhRkRiWDlyeE9hNWordndYNFRVU0FlQ3Rt?=
 =?utf-8?B?TlI3QlJ5eGV3Uk1KV1R2WjBwbXoyYk56SEFYU3ltQWFWZ05oaytCVTduekIv?=
 =?utf-8?B?dVlyTURiTERtZjV3ZDVYRDlJWnBnNGJCd1BOSEozSW45NGh0enY3ZS95VXUx?=
 =?utf-8?B?RmVsNVdGV3RUVUZ1emxYVFA4cXJpQWw2QSt0bEFrSy9VZmJ3UmRteCsvaitq?=
 =?utf-8?B?ZStmdGJsTkZGODlHTkRjVTNOTDVMZlhwQ0FVcXd4Q3B0NVF1MXVSZmNMT25a?=
 =?utf-8?B?MUU0ODVocHRLM05pMHRuSzRvaEVSb2tEbktLbVdGSFAwVERUQzJuei9FaUFt?=
 =?utf-8?B?Y2pwYnNteGVOdUg2RG9XeTFzU211TlpJRlhVVWo1Y3k4QUdBWkJWVjBaOHVs?=
 =?utf-8?B?blp5L0lrdkYvSUg4SUlXQ2krdEt2cFZvcUIxY1lPNzBuTzQ5YzhFdHFObHRY?=
 =?utf-8?B?eUpFbzNTelpxSk9IMTRDZjlibFdBTTBKWEZBYVc4dWNsVm83cmNXbmlZU21Y?=
 =?utf-8?B?OWdPa0Zxek42c2dJY0tlV2JVS0M1YVg3d2l3OXhyaHQzbHVVRjJPNU5iaDlE?=
 =?utf-8?B?VjJ6M3JwS25oMVRxK0J1eEdUNVEydVlGOU1VSmtWR3N1Wi94emZLM3UwZ1Fy?=
 =?utf-8?B?dDJ5d0NtcVFpeXJiY3FDOWdlS0xQcjEyb0wveUxKbkZDRGp2V0lJR1RvaS85?=
 =?utf-8?B?aGtUUWhMRmVPaVlFWjdRanUyL3NnaWFYOVd4WkZpWVZvcThsRm1tYS9VSjNl?=
 =?utf-8?B?cWtkY0xsTVVGeitCMHM2U3VjTmJhaExtaHd0b1dqR3J5Z3JOL1Y0ck9QRmFK?=
 =?utf-8?B?TllVM2xSSE9ydVY0OHFtaU5ia3MzU0lsNE45Tko3dVk3enowL1UraXp0TWY1?=
 =?utf-8?B?UUlrNkxiYTJLelhXdGszcS83a1ZaQ0p6TFlSZmNNUlpVRjUwekdtdEtEUXZB?=
 =?utf-8?B?YzFwZGIxUEZXWjFSUzhKSFV0bUJ1djhnalpyYTN2ZGQzbEsxNHl3R2d4YktW?=
 =?utf-8?B?WVcxd0loRmwvV2wvQzFyTXcwMzRCTWpCSUZnYjk0NzRyWGN3bmlSUT09?=
X-OriginatorOrg: citrix.com
X-MS-Exchange-CrossTenant-Network-Message-Id: a85daa8b-4bb4-4704-8842-08dea6ae366a
X-MS-Exchange-CrossTenant-AuthSource: BY1PR03MB7875.namprd03.prod.outlook.com
X-MS-Exchange-CrossTenant-AuthAs: Internal
X-MS-Exchange-CrossTenant-OriginalArrivalTime: 30 Apr 2026 11:47:10.3243
 (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: p9SYjdtrGkYmI/g3Mjl2wSi9OLPOyT5L2LHYVipmY4JVgWKO917mur22xeEubedULNzRVfy+cs5niW2+3PBO8Q==
X-MS-Exchange-Transport-CrossTenantHeadersStamped: SJ0PR03MB5503
X-purgate-ID: tlsNG-4011c0/1777549634-815848B7-617DA7E8/0/0
X-purgate-type: clean
X-purgate-size: 1071

Uninitialized cpu_data[] entries have the apicid field set to BAD_APICID,
not boot_cpu_data.apicid.  Fix the check in cpu_smpboot_free() to use the
correct condition.

Fixes: 7126b7f806d5 ("x86/CPU: re-work populating of cpu_data[]")
Signed-off-by: Roger Pau Monné <roger.pau@citrix.com>
---
 xen/arch/x86/smpboot.c | 3 +--
 1 file changed, 1 insertion(+), 2 deletions(-)

diff --git a/xen/arch/x86/smpboot.c b/xen/arch/x86/smpboot.c
index 491cbbba33ae..ff05955bae40 100644
--- a/xen/arch/x86/smpboot.c
+++ b/xen/arch/x86/smpboot.c
@@ -961,8 +961,7 @@ static void cpu_smpboot_free(unsigned int cpu, bool remove)
      * In that case the socket number cannot be relied upon, but the respective
      * socket_cpumask[] slot also wouldn't have been set.
      */
-    if ( c[cpu].apicid != boot_cpu_data.apicid &&
-         cpumask_empty(socket_cpumask[socket]) )
+    if ( c[cpu].apicid != BAD_APICID && cpumask_empty(socket_cpumask[socket]) )
     {
         xfree(socket_cpumask[socket]);
         socket_cpumask[socket] = NULL;
-- 
2.53.0



From xen-devel-bounces@lists.xenproject.org Thu Apr 30 12:19:55 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 30 Apr 2026 12:19:55 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1298117.1573657 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wIQMt-0004Sn-UK; Thu, 30 Apr 2026 12:19:47 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1298117.1573657; Thu, 30 Apr 2026 12:19: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 1wIQMt-0004Sg-RV; Thu, 30 Apr 2026 12:19:47 +0000
Received: by outflank-mailman (input) for mailman id 1298117;
 Thu, 30 Apr 2026 12:19:47 +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.19dde54a2a9000f373@swg.vates.tech>)
 id 1wIQMs-0004Sa-Ep
 for xen-devel@lists.xenproject.org; Thu, 30 Apr 2026 12:19:46 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wIQMq-006NJ8-9B
 for xen-devel@lists.xenproject.org; Thu, 30 Apr 2026 14:19:45 +0200
Received: from [10.42.69.8] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1) (envelope-from
 <prod-mta-13.8631fc262581453bbf619ec5b2062170.19dde54a2a9000f373@swg.vates.tech>)
 id 69f348d8-bab6-0a2a0a5309dd-0a2a4508b17c-34
 for <xen-devel@lists.xenproject.org>; Thu, 30 Apr 2026 14:19:45 +0200
Received: from [185.255.28.34] (helo=prod-mta-13.swg-srv.net)
 by tlsNG-c1860d.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.1)
 (envelope-from
 <prod-mta-13.8631fc262581453bbf619ec5b2062170.19dde54a2a9000f373@swg.vates.tech>)
 id 69f348e1-63b5-0a2a45080019-b9ff1c2294cb-3
 for <xen-devel@lists.xenproject.org>; Thu, 30 Apr 2026 14:19:45 +0200
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
 19dde54a2a9000f373.003 for <xen-devel@lists.xenproject.org>
 (version=TLSv1.3 cipher=TLS_AES_256_GCM_SHA384);
 Thu, 30 Apr 2026 12:19:41 +0000
Received: from [192.168.1.18] (88-175-170-134.subs.proxad.net [88.175.170.134])
 (Authenticated sender: teddy.astie)
 by mail2.vates.fr (Postfix) with ESMTPSA id 3B36086534;
 Thu, 30 Apr 2026 14:19:41 +0200 (CEST)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@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=5PJuoDO+IUJP94Y/AXxtsVNhqUs4q7DPJAsExb/x+N0=;
 h=from:subject:date:message-id:to:cc:mime-version:content-type:in-reply-to:references:feedback-id;
 b=X6ImDpdSlSZ/QUNiwMHHn9fHL0Vr46MLc6ZdcxOWhGHBBtY1vXU3aaWUXjji28Agu4znS1UVb
 dwZObq5oYXrxgyhhq/jfRorTPJKHIPgCGVkViiMSHH8mylGoh6toem5V9WQeG+fzDHU21MdLaSE
 joRLETVTgF2OPGGQUoMqNp6aiRgKqnf4LNTNoR8KiXbf11tu1sCGwckgUjPQqSX2wFPjSQCbwg5
 PU/tPPh3lje7s0uxOWImwLF6XFPiwVE/zgug7v0h5vRPiBYZ78UGvjltB92A7AzWO2ZuBA5q6on
 Puc8E+ghUNKy9Li8JCH7FS2Q88BtybNZZ+CZ4nuCb2jQ==
X-Zone-Loop: cd6d33d4832819ab798166a8883d56bb43d39a62e49c
x-campaign-type: default
x-transaction-id: f8d55d72-40fc-4ef1-a2fa-f74c28736ab1
x-swg-uid: 01-34ca0fdd-52e2-4b54-a34c-214c960750d8
X-Mailer: Sweego
Message-ID:
 <1777551581.8631fc262581453bbf619ec5b2062170.19dde54a2a9000f373@vates.tech>
x-swg-bid: 1777551581.8631fc262581453bbf619ec5b2062170.19dde54a2a9000f373
Feedback-ID: default:8631fc262581453bbf619ec5b2062170:Sweego
x-campaign-id: default
x-client-id: 8631fc262581453bbf619ec5b2062170
X-Originating-IP: [37.26.189.201]
Date: Thu, 30 Apr 2026 14:19:40 +0200
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH] x86/cpu: identify uninitialized CPU data using BAD_APICID
To: Roger Pau Monne <roger.pau@citrix.com>, xen-devel@lists.xenproject.org
Cc: Jan Beulich <jbeulich@suse.com>, Andrew Cooper <andrew.cooper3@citrix.com>
References: <20260430114647.94526-1-roger.pau@citrix.com>
Content-Language: en-US
From: Teddy Astie <teddy.astie@vates.tech>
In-Reply-To: <20260430114647.94526-1-roger.pau@citrix.com>
X-BM-Disclaimer: Yes
Content-Type: multipart/alternative; boundary="-=Part.363.4a99b96f1ae4c136.19dde54a08b.938d6b25e654684b=-"
X-Bm-Milter-Handled: 4ffbd6c1-ee69-4e1b-aabd-f977039bd3e2
X-Bm-Transport-Timestamp: 1777551581324
X-purgate-ID: tlsNG-c1860d/1777551585-C2776DB1-EDB6AFE7/0/0
X-purgate-type: clean
X-purgate-size: 1636

---=Part.363.4a99b96f1ae4c136.19dde54a08b.938d6b25e654684b=-
Content-Type: text/plain; charset=utf-8
Content-Transfer-Encoding: quoted-printable

Le 30/04/2026 =C3=A0 13:47, Roger Pau Monne a =C3=A9crit=C2=A0:
> Uninitialized cpu_data[]=C2=A0entries have the apicid field set to BAD_A=
PICID,
> not boot_cpu_data=2Eapicid=2E  Fix the check in cpu_smpboot_free() to us=
e the
> correct condition=2E
>=20
> Fixes: 7126b7f806d5 ("x86/CPU: re-work populating of cpu_data[]")
> Signed-off-by: Roger Pau Monn=C3=A9 <roger=2Epau@citrix=2Ecom>
> ---
>   xen/arch/x86/smpboot=2Ec | 3 +--
>   1 file changed, 1 insertion(+), 2 deletions(-)
>=20
> diff --git a/xen/arch/x86/smpboot=2Ec b/xen/arch/x86/smpboot=2Ec
> index 491cbbba33ae=2E=2Eff05955bae40 100644
> --- a/xen/arch/x86/smpboot=2Ec
> +++ b/xen/arch/x86/smpboot=2Ec
> @@ -961,8 +961,7 @@ static void cpu_smpboot_free(unsigned int cpu, bool =
remove)
>        * In that case the socket number cannot be relied upon, but the r=
espective
>        * socket_cpumask[] slot also wouldn't have been set=2E
>        */
> -    if ( c[cpu]=2Eapicid !=3D boot_cpu_data=2Eapicid &&
> -         cpumask_empty(socket_cpumask[socket]) )
> +    if ( c[cpu]=2Eapicid !=3D BAD_APICID && cpumask_empty(socket_cpumas=
k[socket]) )
>       {
>           xfree(socket_cpumask[socket]);
>           socket_cpumask[socket] =3D NULL;

Reviewed-by: Teddy Astie <teddy=2Eastie@vates=2Etech>


-- 
Teddy Astie | Vates XCP-ng Developer

XCP-ng & Xen Orchestra - Vates s=
olutions

web: https://vates=2Etech
---=Part.363.4a99b96f1ae4c136.19dde54a08b.938d6b25e654684b=---


From xen-devel-bounces@lists.xenproject.org Thu Apr 30 12:51:50 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 30 Apr 2026 12:51:50 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1298145.1573683 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wIQri-0001cH-0T; Thu, 30 Apr 2026 12:51:38 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1298145.1573683; Thu, 30 Apr 2026 12:51: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 1wIQrh-0001bw-SY; Thu, 30 Apr 2026 12:51:37 +0000
Received: by outflank-mailman (input) for mailman id 1298145;
 Thu, 30 Apr 2026 12:51:34 +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 1wIQre-0001YE-I1
 for xen-devel@lists.xenproject.org; Thu, 30 Apr 2026 12:51:34 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wIQrd-005gLh-UH
 for xen-devel@lists.xenproject.org; Thu, 30 Apr 2026 14:51:33 +0200
Received: from [10.42.69.12] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <Michal.Orzel@amd.com>)
 id 69f35053-2eae-0a2a0a5409dd-0a2a450cab80-20
 for <xen-devel@lists.xenproject.org>; Thu, 30 Apr 2026 14:51:33 +0200
Received: from [52.101.193.11]
 (helo=CH1PR05CU001.outbound.protection.outlook.com)
 by tlsNG-d25034.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.1)
 (envelope-from <Michal.Orzel@amd.com>)
 id 69f35054-62f1-0a2a450c0019-3465c10bc5ad-3
 for <xen-devel@lists.xenproject.org>; Thu, 30 Apr 2026 14:51:33 +0200
Received: from CY5PR22CA0049.namprd22.prod.outlook.com (2603:10b6:930:1d::14)
 by DS5PPF23E22D637.namprd12.prod.outlook.com (2603:10b6:f:fc00::647)
 with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9846.26; Thu, 30 Apr
 2026 12:51:24 +0000
Received: from CY4PEPF0000EE3F.namprd03.prod.outlook.com
 (2603:10b6:930:1d:cafe::c) by CY5PR22CA0049.outlook.office365.com
 (2603:10b6:930:1d::14) with Microsoft SMTP Server (version=TLS1_3,
 cipher=TLS_AES_256_GCM_SHA384) id 15.20.9846.30 via Frontend Transport; Thu,
 30 Apr 2026 12:51:24 +0000
Received: from satlexmb08.amd.com (165.204.84.17) by
 CY4PEPF0000EE3F.mail.protection.outlook.com (10.167.242.17) with Microsoft
 SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id
 15.20.9846.18 via Frontend Transport; Thu, 30 Apr 2026 12:51:24 +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.17; Thu, 30 Apr
 2026 07:51:23 -0500
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.17; Thu, 30 Apr
 2026 07:51:23 -0500
Received: from APPOL-18KY0J4.xilinx.com (10.180.168.240) by satlexmb07.amd.com
 (10.181.42.216) with Microsoft SMTP Server id 15.2.2562.17 via
 Frontend Transport; Thu, 30 Apr 2026 07:51:22 -0500
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@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=YmZ3YWT6HzmIvFVts9fiNj70Lm6bZCvaCx9/wFDi0b3O3AntwXGG4cHneWAcItzW/9l+cisjSiQHgHXPsKII3m/8GeuMWBqE3mHxNaiUi0CnEYbsnMIrD6+Q9Ict18MG+hgcDqEFYMl5XrPWk/yyRB/7lPbj9I5ve7XofYQbLdEJCEXMzbzdm6MOFVI9FMzzmR4brYtiIGjjl3fPXfu0+BZKs8OoacaFCAD1w3Hs7eRBfWgo7LZg6KHQ91tTtomsB7yT0zebAx574UkFlOhwFDps56+oBE6YSMY/zL+dZmHe7cFyc3iJSXUsrcR8clI8ysJvYuY7OcKrnkdmaK9tcg==
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com;
 s=arcselector10001;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1;
 bh=zcbHI0zv2A6jo2sS47YYIVvT0gsxIj1LAE92tpjwNP0=;
 b=BujcZjhjKTevsaUa2SV4HDseb/kzfXKZ3bhl2w7RS/71amq+uq3a136iKXh4WWCkc60SnoXbGnXDwZwZcQW2Ew0VJ1sRR8ebZGRVQpQzOJWtFjAJZUUR/WrvqSXok9W6XZ35gF4zjWnB52TNAJFzYH2hPOJ5JdqrH2nqt8px1pzagVQUMc7jBD+I7OX4PniHSyxXy55UoroQzPtjLUvw6aDmlq7L5iriZIqRMs8uPz2FwWpDk2thhqf6Nulgi9ztdHCkAZ7AVJx95DY28p5N4880/3yZxXNZOHO1toGS5Ezez0IGU3W2qUubR+urALu+3nBcW/+Al1ASZtWaFuPYUw==
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=zcbHI0zv2A6jo2sS47YYIVvT0gsxIj1LAE92tpjwNP0=;
 b=4MhZ3O0/ahbGe0PtErpbzwB2MrZFUGl6G/NRlwNyPZgRoYCYJQXWf6Zd70b0zzsVnr/LEwzk5O636UdR74ScX3DYQ3JHFn0C2obmCQJlb3ASxthhMSO7aTYxfxn8nuFU2lLU7TwuCYJyZqZXSSKEB753FgnUSBmIaNLZjT8RUuk=
X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 165.204.84.17)
 smtp.mailfrom=amd.com; dkim=none (message not signed)
 header.d=none;dmarc=pass action=none header.from=amd.com;
Received-SPF: Pass (protection.outlook.com: domain of amd.com designates
 165.204.84.17 as permitted sender) receiver=protection.outlook.com;
 client-ip=165.204.84.17; helo=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 v2 2/2] xen/arm: skip holes in physical address space when setting up frametable
Date: Thu, 30 Apr 2026 14:51:03 +0200
Message-ID: <20260430125103.401811-3-michal.orzel@amd.com>
X-Mailer: git-send-email 2.43.0
In-Reply-To: <20260430125103.401811-1-michal.orzel@amd.com>
References: <20260430125103.401811-1-michal.orzel@amd.com>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit
Content-Type: text/plain
X-EOPAttributedMessage: 0
X-MS-PublicTrafficType: Email
X-MS-TrafficTypeDiagnostic: CY4PEPF0000EE3F:EE_|DS5PPF23E22D637:EE_
X-MS-Office365-Filtering-Correlation-Id: bde2a835-c25d-402c-bbe9-08dea6b72fd1
X-MS-Exchange-SenderADCheck: 1
X-MS-Exchange-AntiSpam-Relay: 0
X-Microsoft-Antispam:
	BCL:0;ARA:13230040|82310400026|36860700016|1800799024|376014|22082099003|18002099003|56012099003;
X-Microsoft-Antispam-Message-Info:
	cM31aXSWWhzVuT3q9bs3ZAH9jzM2GuN4l3/Cjc2emCjR5n9nKlAEwLTEgDyhUbujSEQvZRfjfpI6HFsm1XxDD2iniUKtYwRmQPiu5xHVKQVtYSazkLpOOBLWBtGTusCGiyxrHWPRY1A7i/4sLNwT8XUiz8M0kDR5Gx2rr7sxE0aZM+BQ9tS4pP5doP5Z+KrKqYgNPrAVkBqLCgG79MRTDMHcebV9Yl2zLoa4km6RoXwwUhFj4W6BGu3f1IIkknAge3CKZvHjhk7bEXcbSiBcHuCghObvqw65iRMg4A+VfjwHa9devl22IzRaaEfpwAInk7f8PEAEO4n3ko2MQDcPYgw8/t/TglanWMsY7PSAzFGRBbbI5D1xbEuO782KodlI5Ne+oka83u+t1FQfwR3+Rnb6t+iBBsHmk1b3vLf3sgp+e23j/wlfwjtlco622kcIIdLh/CeL4Fw4bW7oE1qtck3IaykDD6ZV4mqXJLAVeruS+FrF3vLLNMTzt2D1jGiBL9xZIJ3ak4Pgrvg1KVkvvb5hqk7yRBNvKQA5YW3CaOJclytp1piJ3X32xzMmhW8jXNa1rOgaVmiuLTXmIP/hu/42Gg3I/DM7Uu53zXRIYEGeK5HYuwhJUxWksLhiMFkrQAOIlBJPQRPCwkgrEZFJhXs5MfFbLZEYEWXejBfyvIH1loyuWxQbwFlJLtvdFkUcej2cL6VvCuyT3XJ7DtsajQCEIWnWxAYToSBvP9j8oNYBYFs4Ll6CnnO/qrYVaU3v6ixm3+vzXNMiIGEdtdkKmw==
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)(1800799024)(376014)(22082099003)(18002099003)(56012099003);DIR:OUT;SFP:1101;
X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1
X-MS-Exchange-AntiSpam-MessageData-0:
	3xnPnRcNv+ncophZaaD9E57UXC7Nh2oAQNQCA5dsHiUk7abr8DJtnbe/Tyij3EkKvHUKZbryFR8wFEV6j0oW2g+Oca5DPsUBXBiDqZGvGesGQWsPZEYJlTmAUzcnOScwh6spyXPlJ77SkVbB11yntHQhGl9/NjSuEwLUdOt5CibiiIZkWUkr/4ZiAxDgZq3Lk8KHKH5Q/U8+3/eApmJP6Kd8RAgMTA4XvvYxJdB1+THUgqqBhmtvwORYgKNTbNPunqWpk+A+R780uksPf/a4Ki36/Fl8oOtzKp+Wx9TZ/6nfHHKL0/vFL8Z5WovSnhfgYL9q8QNZAQWkcUJfi3xyeoNSDTbuh4Gryv4ETG0Ia8zMXDk4jubeBTORspsZ+PmCvuKtX2mwuSduzXD75ZcALaiCD9jpzrdTGAEcIi73+dnvhCoZla2stcIhnY+pRzvL
X-OriginatorOrg: amd.com
X-MS-Exchange-CrossTenant-OriginalArrivalTime: 30 Apr 2026 12:51:24.3586
 (UTC)
X-MS-Exchange-CrossTenant-Network-Message-Id: bde2a835-c25d-402c-bbe9-08dea6b72fd1
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:
	CY4PEPF0000EE3F.namprd03.prod.outlook.com
X-MS-Exchange-CrossTenant-AuthAs: Anonymous
X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem
X-MS-Exchange-Transport-CrossTenantHeadersStamped: DS5PPF23E22D637
X-purgate-ID: tlsNG-d25034/1777553493-6C965CF5-70E86224/0/0
X-purgate-type: clean
X-purgate-size: 10032

Refactor setup_frametable_mappings() into init_frametable(), modeled
after x86's implementation. Instead of mapping one contiguous frametable
covering ram_start to ram_end (including holes), iterate the
pdx_group_valid bitmap to allocate and map frametable memory only for
valid PDX groups, skipping gaps in the physical address space. At the
moment we don't really take into account pdx_group_valid bitmap.

This reduces memory consumption on systems with sparse RAM layouts by
not allocating frametable entries for non-existent memory regions.

The chunk allocator rounds chunk_size up to PAGE_SIZE only, rather than
to a larger mapping granularity, to avoid overshooting past chunk
boundaries into subsequent gaps or valid regions. This rounding has no
impact for in-loop chunks given that chunk size is multiple of 14MB on
Arm64 and 2MB on Arm32. The rounding matters only for the last out-of-loop
chunk. Physical allocations use 32MB alignment so that map_pages_to_xen()
can use the contiguous bit for larger TLB entries where virtual alignment
also permits.

Update the MPU implementation to match the new init_frametable()
signature. Since MPU has no virtual address translation (ma == va),
hole-skipping is not possible and the frametable remains a single
contiguous allocation.

Signed-off-by: Michal Orzel <michal.orzel@amd.com>
---
Changes in v2:
 - fix overshoot problem with 32MB rounding
---
 xen/arch/arm/arm32/mmu/mm.c   |  3 +-
 xen/arch/arm/include/asm/mm.h |  4 +-
 xen/arch/arm/mm.c             |  2 +-
 xen/arch/arm/mmu/mm.c         | 89 ++++++++++++++++++++++++++---------
 xen/arch/arm/mpu/mm.c         | 23 ++++-----
 5 files changed, 82 insertions(+), 39 deletions(-)

diff --git a/xen/arch/arm/arm32/mmu/mm.c b/xen/arch/arm/arm32/mmu/mm.c
index 5e4766ddcf65..0b595baa11b3 100644
--- a/xen/arch/arm/arm32/mmu/mm.c
+++ b/xen/arch/arm/arm32/mmu/mm.c
@@ -178,8 +178,7 @@ void __init setup_mm(void)
 
     setup_directmap_mappings(mfn_x(directmap_mfn_start), xenheap_pages);
 
-    /* Frame table covers all of RAM region, including holes */
-    setup_frametable_mappings(ram_start, ram_end);
+    init_frametable(ram_start);
 
     /*
      * The allocators may need to use map_domain_page() (such as for
diff --git a/xen/arch/arm/include/asm/mm.h b/xen/arch/arm/include/asm/mm.h
index 8180b1e12baf..2616a1305d58 100644
--- a/xen/arch/arm/include/asm/mm.h
+++ b/xen/arch/arm/include/asm/mm.h
@@ -191,8 +191,8 @@ extern void *early_fdt_map(paddr_t fdt_paddr);
 extern void remove_early_mappings(void);
 /* Prepare the memory subystem to bring-up the given secondary CPU */
 extern int prepare_secondary_mm(int cpu);
-/* Map a frame table to cover physical addresses ps through pe */
-extern void setup_frametable_mappings(paddr_t ps, paddr_t pe);
+/* Map a frame table */
+void init_frametable(paddr_t ram_start);
 /* Helper function to setup memory management */
 void setup_mm_helper(void);
 /* map a physical range in virtual memory */
diff --git a/xen/arch/arm/mm.c b/xen/arch/arm/mm.c
index faef0efb327c..7297cca01551 100644
--- a/xen/arch/arm/mm.c
+++ b/xen/arch/arm/mm.c
@@ -63,7 +63,7 @@ void __init setup_mm(void)
 
     setup_mm_helper();
 
-    setup_frametable_mappings(ram_start, ram_end);
+    init_frametable(ram_start);
 
     init_staticmem_pages();
     init_sharedmem_pages();
diff --git a/xen/arch/arm/mmu/mm.c b/xen/arch/arm/mmu/mm.c
index 6604f3bf4e6a..dfc888c8ee0e 100644
--- a/xen/arch/arm/mmu/mm.c
+++ b/xen/arch/arm/mmu/mm.c
@@ -6,18 +6,45 @@
 #include <xen/mm.h>
 #include <xen/mm-frame.h>
 #include <xen/pdx.h>
+#include <xen/sizes.h>
 #include <xen/string.h>
 
-/* Map a frame table to cover physical addresses ps through pe */
-void __init setup_frametable_mappings(paddr_t ps, paddr_t pe)
+static void __init init_frametable_chunk(unsigned long pdx_s,
+                                         unsigned long pdx_e)
 {
-    unsigned long nr_pdxs = mfn_to_pdx(mfn_add(maddr_to_mfn(pe), -1)) -
-                            mfn_to_pdx(maddr_to_mfn(ps)) + 1;
-    unsigned long frametable_size = nr_pdxs * sizeof(struct page_info);
-    mfn_t base_mfn;
-    const unsigned long mapping_size = frametable_size < MB(32) ? MB(2)
-                                                                : MB(32);
+    unsigned long nr_pdxs = pdx_e - pdx_s;
+    unsigned long chunk_size = nr_pdxs * sizeof(struct page_info);
+    unsigned long virt;
     int rc;
+    mfn_t base_mfn;
+
+    /*
+     * In-loop chunks span whole PDX groups, which are always page-size
+     * aligned. The last chunk ending at max_pdx may not be, so round up.
+     */
+    chunk_size = ROUNDUP(chunk_size, PAGE_SIZE);
+
+    /*
+     * Align the allocation to the contiguous mapping size so that
+     * map_pages_to_xen() can use the contiguous bit.
+     */
+    base_mfn = alloc_boot_pages(chunk_size >> PAGE_SHIFT,
+                                MB(32) >> PAGE_SHIFT);
+
+    virt = (unsigned long)pdx_to_page(pdx_s);
+    rc = map_pages_to_xen(virt, base_mfn, chunk_size >> PAGE_SHIFT,
+                          PAGE_HYPERVISOR_RW | _PAGE_BLOCK);
+    if ( rc )
+        panic("Unable to setup the frametable mappings\n");
+
+    memset(pdx_to_page(pdx_s), 0, nr_pdxs * sizeof(struct page_info));
+    memset(pdx_to_page(pdx_e), -1,
+           chunk_size - nr_pdxs * sizeof(struct page_info));
+}
+
+void __init init_frametable(paddr_t ram_start)
+{
+    unsigned int sidx, nidx, max_idx;
 
     /*
      * The size of paddr_t should be sufficient for the complete range of
@@ -26,24 +53,40 @@ void __init setup_frametable_mappings(paddr_t ps, paddr_t pe)
     BUILD_BUG_ON((sizeof(paddr_t) * BITS_PER_BYTE) < PADDR_BITS);
     BUILD_BUG_ON(sizeof(struct page_info) != PAGE_INFO_SIZE);
 
-    if ( frametable_size > FRAMETABLE_SIZE )
-        panic("The frametable cannot cover the physical region %#"PRIpaddr" - %#"PRIpaddr"\n",
-              ps, pe);
+    /* init_frametable_chunk() allocation alignment assumes 4KB granule */
+    BUILD_BUG_ON(PAGE_SIZE != SZ_4K);
 
-    frametable_base_pdx = mfn_to_pdx(maddr_to_mfn(ps));
-    /* Round up to 2M or 32M boundary, as appropriate. */
-    frametable_size = ROUNDUP(frametable_size, mapping_size);
-    base_mfn = alloc_boot_pages(frametable_size >> PAGE_SHIFT, 32<<(20-12));
+    /* In-loop chunks must produce page-aligned frametable regions */
+    BUILD_BUG_ON((PDX_GROUP_COUNT * sizeof(struct page_info)) % PAGE_SIZE);
 
-    rc = map_pages_to_xen(FRAMETABLE_VIRT_START, base_mfn,
-                          frametable_size >> PAGE_SHIFT,
-                          PAGE_HYPERVISOR_RW | _PAGE_BLOCK);
-    if ( rc )
-        panic("Unable to setup the frametable mappings.\n");
+    max_idx = DIV_ROUND_UP(max_pdx, PDX_GROUP_COUNT);
+    frametable_base_pdx = mfn_to_pdx(maddr_to_mfn(ram_start));
+
+    /*
+     * pdx_to_page(pdx_s) in init_frametable_chunk must be page-aligned
+     * for map_pages_to_xen(). Aligning to PDX_GROUP_COUNT guarantees this
+     * because PDX_GROUP_COUNT * sizeof(page_info) is always a multiple of
+     * PAGE_SIZE by construction.
+     */
+    frametable_base_pdx = ROUNDDOWN(frametable_base_pdx, PDX_GROUP_COUNT);
+
+    if ( (max_pdx - frametable_base_pdx) > FRAMETABLE_NR )
+        panic("Frametable too small\n");
+
+    for ( sidx = (frametable_base_pdx / PDX_GROUP_COUNT); ; sidx = nidx )
+    {
+        unsigned int eidx;
+
+        eidx = find_next_zero_bit(pdx_group_valid, max_idx, sidx);
+        nidx = find_next_bit(pdx_group_valid, max_idx, eidx);
+
+        if ( nidx >= max_idx )
+            break;
+
+        init_frametable_chunk(sidx * PDX_GROUP_COUNT, eidx * PDX_GROUP_COUNT);
+    }
 
-    memset(&frame_table[0], 0, nr_pdxs * sizeof(struct page_info));
-    memset(&frame_table[nr_pdxs], -1,
-           frametable_size - (nr_pdxs * sizeof(struct page_info)));
+    init_frametable_chunk(sidx * PDX_GROUP_COUNT, max_pdx);
 }
 
 /*
diff --git a/xen/arch/arm/mpu/mm.c b/xen/arch/arm/mpu/mm.c
index aff88bd3a9c1..9c568831c128 100644
--- a/xen/arch/arm/mpu/mm.c
+++ b/xen/arch/arm/mpu/mm.c
@@ -186,16 +186,15 @@ static int is_mm_attr_match(pr_t *region, unsigned int attributes)
     return 0;
 }
 
-/* Map a frame table to cover physical addresses ps through pe */
-void __init setup_frametable_mappings(paddr_t ps, paddr_t pe)
+/*
+ * Allocate a contiguous frame table covering ram_start through max_pdx.
+ * Unlike the MMU version, MPU cannot skip holes because there is no virtual
+ * address translation (ma == va).
+ */
+void __init init_frametable(paddr_t ram_start)
 {
+    unsigned long nr_pdxs, frametable_size;
     mfn_t base_mfn;
-    paddr_t aligned_ps = ROUNDUP(ps, PAGE_SIZE);
-    paddr_t aligned_pe = ROUNDDOWN(pe, PAGE_SIZE);
-
-    unsigned long nr_pdxs = mfn_to_pdx(mfn_add(maddr_to_mfn(aligned_pe), -1)) -
-                            mfn_to_pdx(maddr_to_mfn(aligned_ps)) + 1;
-    unsigned long frametable_size = nr_pdxs * sizeof(struct page_info);
 
     /*
      * The size of paddr_t should be sufficient for the complete range of
@@ -204,11 +203,13 @@ void __init setup_frametable_mappings(paddr_t ps, paddr_t pe)
     BUILD_BUG_ON((sizeof(paddr_t) * BITS_PER_BYTE) < PADDR_BITS);
     BUILD_BUG_ON(sizeof(struct page_info) != PAGE_INFO_SIZE);
 
+    frametable_base_pdx = mfn_to_pdx(maddr_to_mfn(ram_start));
+    nr_pdxs = max_pdx - frametable_base_pdx;
+    frametable_size = nr_pdxs * sizeof(struct page_info);
+
     if ( frametable_size > FRAMETABLE_SIZE )
-        panic("The frametable cannot cover the physical region %#"PRIpaddr" - %#"PRIpaddr"\n",
-              ps, pe);
+        panic("Frametable too small\n");
 
-    frametable_base_pdx = paddr_to_pdx(aligned_ps);
     frametable_size = ROUNDUP(frametable_size, PAGE_SIZE);
 
     base_mfn = alloc_boot_pages(frametable_size >> PAGE_SHIFT, 1);
-- 
2.43.0



From xen-devel-bounces@lists.xenproject.org Thu Apr 30 12:51:52 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 30 Apr 2026 12:51:52 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1298143.1573669 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wIQrZ-0001L6-Av; Thu, 30 Apr 2026 12:51:29 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1298143.1573669; Thu, 30 Apr 2026 12:51: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 1wIQrZ-0001Kz-6o; Thu, 30 Apr 2026 12:51:29 +0000
Received: by outflank-mailman (input) for mailman id 1298143;
 Thu, 30 Apr 2026 12:51:28 +0000
Received: from [195.190.135.10] (helo=mx.expurgate.net)
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <Michal.Orzel@amd.com>) id 1wIQrX-0001Kt-Un
 for xen-devel@lists.xenproject.org; Thu, 30 Apr 2026 12:51:28 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wIQrW-00CVNp-AJ
 for xen-devel@lists.xenproject.org; Thu, 30 Apr 2026 14:51:26 +0200
Received: from [10.42.69.6] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <Michal.Orzel@amd.com>)
 id 69f35048-bab6-0a2a0a5309dd-0a2a4506ec80-48
 for <xen-devel@lists.xenproject.org>; Thu, 30 Apr 2026 14:51:25 +0200
Received: from [40.107.200.13]
 (helo=CH5PR02CU005.outbound.protection.outlook.com)
 by tlsNG-16d1c6.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.1)
 (envelope-from <Michal.Orzel@amd.com>)
 id 69f3504c-7371-0a2a45060019-286bc80db0ba-3
 for <xen-devel@lists.xenproject.org>; Thu, 30 Apr 2026 14:51:25 +0200
Received: from CY5PR22CA0045.namprd22.prod.outlook.com (2603:10b6:930:1d::22)
 by MN2PR12MB4062.namprd12.prod.outlook.com (2603:10b6:208:1d0::15)
 with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9870.20; Thu, 30 Apr
 2026 12:51:21 +0000
Received: from CY4PEPF0000EE3F.namprd03.prod.outlook.com
 (2603:10b6:930:1d:cafe::5e) by CY5PR22CA0045.outlook.office365.com
 (2603:10b6:930:1d::22) with Microsoft SMTP Server (version=TLS1_3,
 cipher=TLS_AES_256_GCM_SHA384) id 15.20.9870.21 via Frontend Transport; Thu,
 30 Apr 2026 12:51:20 +0000
Received: from satlexmb08.amd.com (165.204.84.17) by
 CY4PEPF0000EE3F.mail.protection.outlook.com (10.167.242.17) with Microsoft
 SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id
 15.20.9846.18 via Frontend Transport; Thu, 30 Apr 2026 12:51:20 +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.17; Thu, 30 Apr
 2026 07:51:19 -0500
Received: from APPOL-18KY0J4.xilinx.com (10.180.168.240) by satlexmb07.amd.com
 (10.181.42.216) with Microsoft SMTP Server id 15.2.2562.17 via
 Frontend Transport; Thu, 30 Apr 2026 07:51:17 -0500
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@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=oz6eXslnAFdUm6OgZnuJSkfFdt7SB0INlN1PjZsm3LldkBPT1glZHT7/oxKrPzXscWv2qqCbxFh9MNjfAc1xX0QoM3aIEU8606QLERS4UoYQcVTa+rs2EXe/n+9B4Lvenj7qVKlmXpOm/EllX1P1OhMt3XfG64AbbyA8GCCtwjElgI6I2nYkSLxzktruoS2whe32lkhIW9EP4aQAbIN2NpGpilwOjaa7qW8jN+v1FbdPYxBRX+JlvXh4ls61h0vhoXYuzWAN/UmyIwmiVdLUV0uDFp3W5QZG4H0yM6wm3OHV5eHa9NZr84qzP8KHdi5wpkrCAQSVJbzbBjB7uYiMlw==
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com;
 s=arcselector10001;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1;
 bh=uNEstBQPNeoHkrfG8LasS4CJg+BB5EGSRZhhRuwPntg=;
 b=FCMCqRLeo1E6KPpkM9LDKo6Es2ACyBmrkPzEIZSECSOCt1SweP03eH3MVXyuoWrHBfjS8R0/7MSF16ohGysXvCegIsSKDxowlWJNhrybesy+F1+MeXv9ouz5CUxKqZpGR8CM7MoCUdVHswSRPVpoUc+zLHgf76t1qDqxZSYRDLzXLnJsnsUhXvi+vm6MHiI6NT35e1v33wBHznlT9/X+oancOs1n0PK0nw7M4322BtuKqS9UrKbLa13FAgXlpfESiFgVYmBRqW0ns/+u4eoFaYL3A687oWIDO3ycX+BDK82ZqhCIt2GDjueykpy13hg+Z/K4jXTy3Ni43hL6aP2hTg==
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=uNEstBQPNeoHkrfG8LasS4CJg+BB5EGSRZhhRuwPntg=;
 b=Yun8epL2EYc+PDAmsKb5LyY5SJW6S50/y1SeVWKU07MBoNIokfaPY/uCPkQuz8GdgJIb8DvINnQGsRtHzvvt69pQPambERNsIgl9iJD5Gu93jlOl/7KkJtBGtRnTymW0GW4kIQ8V5qlTRJCfVWb4e+zg6c/tcfuRhDg2bJReLRw=
X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 165.204.84.17)
 smtp.mailfrom=amd.com; dkim=none (message not signed)
 header.d=none;dmarc=pass action=none header.from=amd.com;
Received-SPF: Pass (protection.outlook.com: domain of amd.com designates
 165.204.84.17 as permitted sender) receiver=protection.outlook.com;
 client-ip=165.204.84.17; helo=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>,
	Andrew Cooper <andrew.cooper3@citrix.com>, Anthony PERARD
	<anthony.perard@vates.tech>, Jan Beulich <jbeulich@suse.com>,
	=?UTF-8?q?Roger=20Pau=20Monn=C3=A9?= <roger.pau@citrix.com>, Timothy Pearson
	<tpearson@raptorengineering.com>, Teddy Astie <teddy.astie@vates.tech>
Subject: [PATCH v2 0/2] xen/arm: Improve frametable allocation
Date: Thu, 30 Apr 2026 14:51:01 +0200
Message-ID: <20260430125103.401811-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: CY4PEPF0000EE3F:EE_|MN2PR12MB4062:EE_
X-MS-Office365-Filtering-Correlation-Id: bbb50426-da8b-4e96-38a0-08dea6b72d34
X-MS-Exchange-SenderADCheck: 1
X-MS-Exchange-AntiSpam-Relay: 0
X-Microsoft-Antispam:
	BCL:0;ARA:13230040|7416014|82310400026|376014|1800799024|36860700016|56012099003|18002099003;
X-Microsoft-Antispam-Message-Info:
	dwfnOdnChf771PXpbMcahIfPZ8xDhA68Pdan1YDF5Mc66umpSsjMbMlnqv68sQoHSN2oqqcX14I4JdrMmGLTF7EKKhrnSwiQXhNdsN4ZU9rLvhx+Bw1y5lorUzoFqER3scNXIOdFZulu2N15UR72/540DLHJHHvrLvjXWOjl4qS9iX+kE5QO77z3QApmSd8aHc9d1DJqBkXdOmtKlsXjtlf2CM2e0FEGD+uEtWrOwG9sD1gSSzYj6y899v7ScyyJtWQV/67XmIIgAVuZYmkifg1wadW8NgbokRPXrugp9GZ+Lnk6e+YbZ6N4Aj4Fonsoin85oWggjKdJ8mvPvBNttWz9C5bn9u57BiZOw5sZWJp5WwP8Ks3n8A/BdOuOi4Fus39QjqqqnpwAEtRW5s1jt+Wdb4m+8cDMN45Byg3Dy9Ur78RRtx28NjokLak59nKLjeaiPWBffkpdw7FqUtq/+mtV0TRjE1zJnsXWL9XxQRdVe5WdNFnh93E235BOqckCqL2wCsq60vnegxcfzpvG0WEV89XOZvtkhsI+b7Iq9r8tJ5SpOo3WeK9xF9WFz8O9svod0kcSHU3DWATZeYJxK+1Hx+TC6tNPZf57JbvZ3js3SoiV7kJ6ZovXa17Knxg3uFcNncGcGk9jkhnl1QPCqMwN6tA+PqqvPNH2SKqQgRCyZwsRx8EYR1CUG6qxFUb1aZUJGrUoxL7Abu7aCLqZFIw2ga1ruNcTyK0ypmwpjIJmCymmGjqIw69z8Mx+aizhAWZIeR55yQLwOp/AlCz4tA==
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)(376014)(1800799024)(36860700016)(56012099003)(18002099003);DIR:OUT;SFP:1101;
X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1
X-MS-Exchange-AntiSpam-MessageData-0:
	FyUO8UB13w8YPy+p3oOpxKFWy9Jk3n8oyCyr6JnhD+a6baDVdxT6HpLWRqccBcZH0HdOUVfoT7IVoM0rWJPc5oL1XdBt2aWgweu2kr21RRWFYdoaCqaNxvK/ZeL2Wm1i70R2N8yctVca351mF0S0PCQJC+uZ/Poeh+Yi/R7K3jwUFl+ZKldJjutgMT7Oi+ZBS3XykjnHOJFcUxNFeWzNkG11XRW0CXKB5pU37YZvj0YuS6Ng4l7hLtvSJH5a+mIfFlSNjlMAkM7IoN8+9WpkrXey8b66EFURBISh0nlR0NUt7jx7OodhPDOqHg6oh+bpAv41vJoBesL+emcneIXDlfiD+5eAeDUfmWX0w3L2Dpt6PQ5wua7EOakQ84RSgjhARV0r2DGuiiyisotA2dFC0bo4E6DV10LEyPEEEN3dRcgMQYiptirycPxZFONVt7n6
X-OriginatorOrg: amd.com
X-MS-Exchange-CrossTenant-OriginalArrivalTime: 30 Apr 2026 12:51:20.0313
 (UTC)
X-MS-Exchange-CrossTenant-Network-Message-Id: bbb50426-da8b-4e96-38a0-08dea6b72d34
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:
	CY4PEPF0000EE3F.namprd03.prod.outlook.com
X-MS-Exchange-CrossTenant-AuthAs: Anonymous
X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem
X-MS-Exchange-Transport-CrossTenantHeadersStamped: MN2PR12MB4062
X-purgate-ID: tlsNG-16d1c6/1777553485-CED72D75-03AA63CA/0/0
X-purgate-type: clean
X-purgate-size: 868

Michal Orzel (2):
  xen/pdx: account for frametable_base_pdx in generic
    pdx_to_page/page_to_pdx
  xen/arm: skip holes in physical address space when setting up
    frametable

 xen/arch/arm/arm32/mmu/mm.c    |  3 +-
 xen/arch/arm/include/asm/mm.h  |  9 +---
 xen/arch/arm/include/asm/pdx.h | 21 ++++++++
 xen/arch/arm/mm.c              |  3 +-
 xen/arch/arm/mmu/mm.c          | 89 +++++++++++++++++++++++++---------
 xen/arch/arm/mpu/mm.c          | 23 ++++-----
 xen/arch/ppc/include/asm/mm.h  |  5 --
 xen/arch/ppc/include/asm/pdx.h | 12 +++++
 xen/arch/ppc/mm-radix.c        |  1 +
 xen/arch/x86/include/asm/pdx.h |  6 +++
 xen/include/xen/pdx.h          | 17 +++++--
 11 files changed, 135 insertions(+), 54 deletions(-)
 create mode 100644 xen/arch/arm/include/asm/pdx.h
 create mode 100644 xen/arch/ppc/include/asm/pdx.h

-- 
2.43.0



From xen-devel-bounces@lists.xenproject.org Thu Apr 30 12:51:55 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 30 Apr 2026 12:51:55 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1298144.1573678 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wIQrh-0001Yu-Lu; Thu, 30 Apr 2026 12:51:37 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1298144.1573678; Thu, 30 Apr 2026 12:51:37 +0000
Received: from [127.0.0.1] (helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wIQrh-0001Yn-I3; Thu, 30 Apr 2026 12:51:37 +0000
Received: by outflank-mailman (input) for mailman id 1298144;
 Thu, 30 Apr 2026 12:51:34 +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 1wIQre-0001YD-GY
 for xen-devel@lists.xenproject.org; Thu, 30 Apr 2026 12:51:34 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wIQra-005gLh-RX
 for xen-devel@lists.xenproject.org; Thu, 30 Apr 2026 14:51:30 +0200
Received: from [10.42.69.2] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <Michal.Orzel@amd.com>)
 id 69f35049-2eae-0a2a0a5409dd-0a2a4502d1f0-26
 for <xen-devel@lists.xenproject.org>; Thu, 30 Apr 2026 14:51:30 +0200
Received: from [40.107.200.65]
 (helo=CH5PR02CU005.outbound.protection.outlook.com)
 by tlsNG-720697.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.1)
 (envelope-from <Michal.Orzel@amd.com>)
 id 69f35050-af86-0a2a45020019-286bc8413f95-3
 for <xen-devel@lists.xenproject.org>; Thu, 30 Apr 2026 14:51:29 +0200
Received: from BN9P221CA0020.NAMP221.PROD.OUTLOOK.COM (2603:10b6:408:10a::32)
 by IA1PR12MB7663.namprd12.prod.outlook.com (2603:10b6:208:424::18)
 with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9870.20; Thu, 30 Apr
 2026 12:51:23 +0000
Received: from BN1PEPF00004685.namprd03.prod.outlook.com
 (2603:10b6:408:10a:cafe::f5) by BN9P221CA0020.outlook.office365.com
 (2603:10b6:408:10a::32) with Microsoft SMTP Server (version=TLS1_3,
 cipher=TLS_AES_256_GCM_SHA384) id 15.20.9870.21 via Frontend Transport; Thu,
 30 Apr 2026 12:51:22 +0000
Received: from satlexmb07.amd.com (165.204.84.17) by
 BN1PEPF00004685.mail.protection.outlook.com (10.167.243.86) with Microsoft
 SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id
 15.20.9870.22 via Frontend Transport; Thu, 30 Apr 2026 12:51:22 +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.17; Thu, 30 Apr
 2026 07:51:22 -0500
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.17; Thu, 30 Apr
 2026 05:51:22 -0700
Received: from APPOL-18KY0J4.xilinx.com (10.180.168.240) by satlexmb07.amd.com
 (10.181.42.216) with Microsoft SMTP Server id 15.2.2562.17 via
 Frontend Transport; Thu, 30 Apr 2026 07:51:20 -0500
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@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=bvaBVywlwhfPpI88zUPtEDCNhtZxj7qTDOsozYydv2P+bONz2xwjZfWwdLk2EoGew7V6oK/4lxtZdQxQ4Dp0eAFDujBa68UhdaBsS1yvsY7kz5nr4RuHP5eKwOLIFriKizeV7x5tYos0VJ4SCBr3fls+1LSOjk1yuUVmRXtssBO+dvVUzLzsK4CCJHmsYRKqc/cDB/icnNMmnZUe7C85zFyJW27IhoScL9QBRt5/iKivfqS4KaXsm+FCXqLtPL9vHUye32MgkhMvc0QM9ZykTCBivt4TZgqBAGw6et7i6roUFdFoFZVN6t2Qjn1prsQbbfyPnIFS6p24M7gH2I3L+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=2YCO5UKjNJP5UOoj3rYV3rGfJdTy+pPmVxC0pvAcvis=;
 b=bKDKuRGVwq9uZTJgwk/ZfUpFj5dFhmUbnHAS7gckEag9RsBYijr+dDh+8jJgH6sZvHMZfcvMBkHkY/HJEaDGaHx0rgzsuBgdASNCiaP1uiUsi6FDFfeUbs7jjJWBoNxV7FFPhPeqKt8KHxdfxUDHC0Ar2K+iZeUO0WRKAh5qTEYzEZ3Pi+NSGUI/mBP8b1WCXD1hrbJkNvvihp5hTkPI8YFzIX/PgEO0Db60k2G9DB3zLnnRrXeDVx35FV25tz+VXjztHK3SlrICmGH16TjdfqgFqDHbAOCI8ZNluyrutRejJ3tMGWEBFYgC3EslZs/n95o/2/4UrnnWZlE9mw3B9g==
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=2YCO5UKjNJP5UOoj3rYV3rGfJdTy+pPmVxC0pvAcvis=;
 b=eg5rD+vYVLyPGiBS+nW3sPaenqzzs2MRkqczmGLLt8GHNxSopP6sBP4xRJVMlgBcM5BQAnmUDJMwIT5eMXtISBeXjG6ThHJtjsYQ1A65DYjaZkyTdeXeG6ToEkb6seYOxoErbVMuzUHGD1e7gViMGvytNg7LdF1jSTflznikQvA=
X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 165.204.84.17)
 smtp.mailfrom=amd.com; dkim=none (message not signed)
 header.d=none;dmarc=pass action=none header.from=amd.com;
Received-SPF: Pass (protection.outlook.com: domain of amd.com designates
 165.204.84.17 as permitted sender) receiver=protection.outlook.com;
 client-ip=165.204.84.17; helo=satlexmb07.amd.com; pr=C
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>,
	Andrew Cooper <andrew.cooper3@citrix.com>, Anthony PERARD
	<anthony.perard@vates.tech>, Jan Beulich <jbeulich@suse.com>,
	=?UTF-8?q?Roger=20Pau=20Monn=C3=A9?= <roger.pau@citrix.com>, Timothy Pearson
	<tpearson@raptorengineering.com>, Teddy Astie <teddy.astie@vates.tech>
Subject: [PATCH v2 1/2] xen/pdx: account for frametable_base_pdx in generic pdx_to_page/page_to_pdx
Date: Thu, 30 Apr 2026 14:51:02 +0200
Message-ID: <20260430125103.401811-2-michal.orzel@amd.com>
X-Mailer: git-send-email 2.43.0
In-Reply-To: <20260430125103.401811-1-michal.orzel@amd.com>
References: <20260430125103.401811-1-michal.orzel@amd.com>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit
Content-Type: text/plain
X-EOPAttributedMessage: 0
X-MS-PublicTrafficType: Email
X-MS-TrafficTypeDiagnostic: BN1PEPF00004685:EE_|IA1PR12MB7663:EE_
X-MS-Office365-Filtering-Correlation-Id: d4c39c95-59b2-40c3-3ee6-08dea6b72ec9
X-MS-Exchange-SenderADCheck: 1
X-MS-Exchange-AntiSpam-Relay: 0
X-Microsoft-Antispam:
	BCL:0;ARA:13230040|82310400026|36860700016|1800799024|7416014|376014|22082099003|18002099003|56012099003;
X-Microsoft-Antispam-Message-Info:
	Ppu52g47T4U52UtUyCsQSCLmp/cPAgIejx/hD3De8OcV+z0llRquhPqCZMC83m2y/WzokENn0PlsPM2t+VFqqbvflLyXn4rOSZ3ypVXBjIvDC6JNJ4UpwO7+nymZjXqOkqSI+IfnQrnnG3NE9o3u7HXFeYyMv2xWMUFCSo2mqlSrJTSKqk2o5blNjdYpYuHEbCK4yzbHe9JwsdeBP5nT+mbi8YgSYc26KgtCIgjpdivgxWf7An7H+4J7EpYEQFZrGW87Yy8c7PLDNOgCWBTK8nSQ4TMApAxCJenoBaWbVyOK0nj256DEPlCAyRZ1M6yh1NctEpN+ZP7GHuP27Ljww+kn8Bzv4OiDkoqr7FRryrJO6Nquu6IbC88025klSnIVTxOT1scjMQ4xyiEukN9kr6MXVIvzhyqY559HB74SuQ/3qP8cgGmVQMaMEDcsoxQ1h995GcxHFg04KOI972B4GMnNHA6apUmB7bTFtDqncU5dmXSgMfTEgS8N6dB+FA3chVHpoWnk/X1KqnNkFkTq92Q5RhWaz6NIx3+cavh2CP1JM3fMr3ncyIbR0I1e5yH/3btLOe9GsLehvZHI5i8UdQRsczCi1BWRSMeMHOBLwpRAb6gWVDpzup4A09AZK50y2poqfSjTne61qPuWlZDXY3r6JEVeKS1K6OAsCeZHS1mBhnbptk5ggJVJfR1EJfqMtAeHpP1XwCReNXxwIaahIzMctjvuLO+jAxGrE8Gb3twjiNcp6zf+4uh7GYiG6uWnPz+OVgesPtTS2+Qj0N2S7g==
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)(1800799024)(7416014)(376014)(22082099003)(18002099003)(56012099003);DIR:OUT;SFP:1101;
X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1
X-MS-Exchange-AntiSpam-MessageData-0:
	9KK/JxHke4udpLXmUFB4bhTAtPqsoJmFoFTIGwkRwnE5ARcEPXTKwWp14914me/d33m1OtZen1aTREMnFLVBhh4MZZAc1rizClm6oiEeteZ1nGlHl9DE2SsdiDnthi0VlL2Rl9DB33BZJsqNxW5tJP3Y3QMZjsog3UuvASjy0A4Njpl58Kw0rCA/JVEfUwq0hG1bmqDTZIMA4hDRL8Q5B3ZdRgbf5k2TQwJTuWbLAWz/y63Nx6kYWxxwR8kMFoHkFexloibo7++imFVBzZy0TQv60QgQM5IeBGbjv8XuiE0UL+qy0SxRZQAY3u3ahjRCLpJGdpcyDvwnRwQ9jnI0ZnrmwAYbF3Q8/6sbJG14DQ6rMTP41Fq3o8alfVCns7v+2Umk9zMjukWPM9EZXxU90VOi4JVs4I7etlOTVN+I01Ak5PKap7Cbmyv0FxHip/e4
X-OriginatorOrg: amd.com
X-MS-Exchange-CrossTenant-OriginalArrivalTime: 30 Apr 2026 12:51:22.6925
 (UTC)
X-MS-Exchange-CrossTenant-Network-Message-Id: d4c39c95-59b2-40c3-3ee6-08dea6b72ec9
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:
	BN1PEPF00004685.namprd03.prod.outlook.com
X-MS-Exchange-CrossTenant-AuthAs: Anonymous
X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem
X-MS-Exchange-Transport-CrossTenantHeadersStamped: IA1PR12MB7663
X-purgate-ID: tlsNG-720697/1777553489-B2969161-826374CE/0/0
X-purgate-type: clean
X-purgate-size: 7403

The generic pdx_to_page() and page_to_pdx() macros in xen/pdx.h assume
the frame table starts at PDX 0, which is only true on x86. ARM
uses a non-zero frametable_base_pdx to offset into the frame table (PPC also
defines it).

Fix the generic macros to subtract/add frametable_base_pdx, defaulting
to 0 when the arch does not define it. This makes the generic macros
correct for all architectures, even though they are only used on x86
today.

While at it, consolidate the arch-specific PDX definitions
(frametable_base_pdx and PDX_GROUP_SHIFT) from the arch mm.h headers
into new asm/pdx.h headers for ARM and PPC. The asm/pdx.h is included
earlier in xen/pdx.h via __has_include, making these definitions available
before they are needed.

Also decouple the __has_include(<asm/pdx.h>) check from the PFN-to-PDX
translation override mechanism. Previously, the existence of asm/pdx.h
was taken to mean the arch provides custom pdx_to_pfn / pfn_to_pdx
implementations. This conflation would prevent ARM and PPC from having
asm/pdx.h (for frametable_base_pdx) without also being forced to define
the translation helpers. Replace the __has_include gate with an explicit
ARCH_DEFINES_PDX_XLATE sentinel that only x86 defines.

No functional change.

Signed-off-by: Michal Orzel <michal.orzel@amd.com>
---
Changes in v2:
 - new patch
---
 xen/arch/arm/include/asm/mm.h  |  5 -----
 xen/arch/arm/include/asm/pdx.h | 21 +++++++++++++++++++++
 xen/arch/arm/mm.c              |  1 +
 xen/arch/ppc/include/asm/mm.h  |  5 -----
 xen/arch/ppc/include/asm/pdx.h | 12 ++++++++++++
 xen/arch/ppc/mm-radix.c        |  1 +
 xen/arch/x86/include/asm/pdx.h |  6 ++++++
 xen/include/xen/pdx.h          | 17 ++++++++++++-----
 8 files changed, 53 insertions(+), 15 deletions(-)
 create mode 100644 xen/arch/arm/include/asm/pdx.h
 create mode 100644 xen/arch/ppc/include/asm/pdx.h

diff --git a/xen/arch/arm/include/asm/mm.h b/xen/arch/arm/include/asm/mm.h
index 72a692862420..8180b1e12baf 100644
--- a/xen/arch/arm/include/asm/mm.h
+++ b/xen/arch/arm/include/asm/mm.h
@@ -181,11 +181,6 @@ struct page_info
 
 #define maddr_get_owner(ma)   (page_get_owner(maddr_to_page((ma))))
 
-/* PDX of the first page in the frame table. */
-extern unsigned long frametable_base_pdx;
-
-#define PDX_GROUP_SHIFT SECOND_SHIFT
-
 /* Boot-time pagetable setup */
 extern void setup_pagetables(void);
 /* Check that the mapping flag has no W and X together */
diff --git a/xen/arch/arm/include/asm/pdx.h b/xen/arch/arm/include/asm/pdx.h
new file mode 100644
index 000000000000..651df4b210dc
--- /dev/null
+++ b/xen/arch/arm/include/asm/pdx.h
@@ -0,0 +1,21 @@
+/* SPDX-License-Identifier: GPL-2.0-only */
+#ifndef ARM_PDX_H
+#define ARM_PDX_H
+
+#include <asm/lpae.h>
+
+#define PDX_GROUP_SHIFT SECOND_SHIFT
+
+#define ARCH_HAS_FRAMETABLE_BASE_PDX
+extern unsigned long frametable_base_pdx;
+
+#endif /* ARM_PDX_H */
+
+/*
+ * Local variables:
+ * mode: C
+ * c-file-style: "BSD"
+ * c-basic-offset: 4
+ * indent-tabs-mode: nil
+ * End:
+ */
diff --git a/xen/arch/arm/mm.c b/xen/arch/arm/mm.c
index 6eddbcf912ee..faef0efb327c 100644
--- a/xen/arch/arm/mm.c
+++ b/xen/arch/arm/mm.c
@@ -16,6 +16,7 @@
 #include <xen/static-shmem.h>
 #include <xen/vmap.h>
 
+#include <asm/pdx.h>
 #include <asm/setup.h>
 
 #include <xsm/xsm.h>
diff --git a/xen/arch/ppc/include/asm/mm.h b/xen/arch/ppc/include/asm/mm.h
index 402d06bdaa9f..d55393ff2aa4 100644
--- a/xen/arch/ppc/include/asm/mm.h
+++ b/xen/arch/ppc/include/asm/mm.h
@@ -163,9 +163,6 @@ struct page_info
 #define FRAMETABLE_VIRT_START  (XEN_VIRT_START + GB(32))
 #define frame_table ((struct page_info *)FRAMETABLE_VIRT_START)
 
-/* PDX of the first page in the frame table. */
-extern unsigned long frametable_base_pdx;
-
 /* Convert between machine frame numbers and page-info structures. */
 #define mfn_to_page(mfn)                                            \
     (frame_table + (mfn_to_pdx(mfn) - frametable_base_pdx))
@@ -220,8 +217,6 @@ static inline void put_page_and_type(struct page_info *page)
 #define set_gpfn_from_mfn(mfn, pfn) BUG_ON("unimplemented")
 #define mfn_to_gfn(d, mfn) ({ BUG_ON("unimplemented"); _gfn(0); })
 
-#define PDX_GROUP_SHIFT XEN_PT_SHIFT_LVL_3
-
 static inline unsigned long domain_get_maximum_gpfn(struct domain *d)
 {
     BUG_ON("unimplemented");
diff --git a/xen/arch/ppc/include/asm/pdx.h b/xen/arch/ppc/include/asm/pdx.h
new file mode 100644
index 000000000000..4290c7bc9c36
--- /dev/null
+++ b/xen/arch/ppc/include/asm/pdx.h
@@ -0,0 +1,12 @@
+/* SPDX-License-Identifier: GPL-2.0-only */
+#ifndef PPC_PDX_H
+#define PPC_PDX_H
+
+#include <asm/page.h>
+
+#define PDX_GROUP_SHIFT XEN_PT_SHIFT_LVL_3
+
+#define ARCH_HAS_FRAMETABLE_BASE_PDX
+extern unsigned long frametable_base_pdx;
+
+#endif /* PPC_PDX_H */
diff --git a/xen/arch/ppc/mm-radix.c b/xen/arch/ppc/mm-radix.c
index d5385ec9dd4b..2eddd86822e0 100644
--- a/xen/arch/ppc/mm-radix.c
+++ b/xen/arch/ppc/mm-radix.c
@@ -10,6 +10,7 @@
 
 #include <asm/early_printk.h>
 #include <asm/page.h>
+#include <asm/pdx.h>
 #include <asm/processor.h>
 #include <asm/regs.h>
 #include <asm/msr.h>
diff --git a/xen/arch/x86/include/asm/pdx.h b/xen/arch/x86/include/asm/pdx.h
index 6be7e1185eb1..5e660be17e39 100644
--- a/xen/arch/x86/include/asm/pdx.h
+++ b/xen/arch/x86/include/asm/pdx.h
@@ -3,8 +3,12 @@
 #ifndef X86_PDX_H
 #define X86_PDX_H
 
+#ifndef CONFIG_PDX_NONE
+
 #include <asm/alternative.h>
 
+#define ARCH_DEFINES_PDX_XLATE
+
 /*
  * Introduce a macro to avoid repeating the same asm goto block in each helper.
  * Note the macro is strictly tied to the code in the helpers.
@@ -59,6 +63,8 @@ static inline paddr_t directmapoff_to_maddr(unsigned long offset)
 
 #undef PDX_ASM_GOTO_SKIP
 
+#endif /* !CONFIG_PDX_NONE */
+
 #endif /* X86_PDX_H */
 
 /*
diff --git a/xen/include/xen/pdx.h b/xen/include/xen/pdx.h
index 856fc3e8a0e6..59c257651953 100644
--- a/xen/include/xen/pdx.h
+++ b/xen/include/xen/pdx.h
@@ -132,8 +132,9 @@ void set_pdx_range(unsigned long smfn, unsigned long emfn);
  */
 bool __mfn_valid(unsigned long mfn);
 
-#define page_to_pdx(pg)  ((pg) - frame_table)
-#define pdx_to_page(pdx) gcc11_wrap(frame_table + (pdx))
+#define page_to_pdx(pg) \
+    ((unsigned long)((pg) - frame_table) + frametable_base_pdx)
+#define pdx_to_page(pdx) gcc11_wrap(frame_table + ((pdx) - frametable_base_pdx))
 
 #define mfn_to_pdx(mfn) pfn_to_pdx(mfn_x(mfn))
 #define pdx_to_mfn(pdx) _mfn(pdx_to_pfn(pdx))
@@ -244,6 +245,14 @@ static inline paddr_t directmapoff_to_maddr_xlate(unsigned long offset)
 
 #endif /* CONFIG_PDX_OFFSET_COMPRESSION */
 
+#if __has_include(<asm/pdx.h>)
+# include <asm/pdx.h>
+#endif
+
+#ifndef ARCH_HAS_FRAMETABLE_BASE_PDX
+#define frametable_base_pdx 0
+#endif
+
 #ifdef CONFIG_PDX_NONE
 
 /* Without PDX compression we can skip some computations */
@@ -283,9 +292,7 @@ static inline void pfn_pdx_compression_reset(void)
  *
  * Do not use _xlate suffixed functions, always use the non _xlate variants.
  */
-#if __has_include(<asm/pdx.h>)
-# include <asm/pdx.h>
-#else
+#ifndef ARCH_DEFINES_PDX_XLATE
 # define pdx_to_pfn pdx_to_pfn_xlate
 # define pfn_to_pdx pfn_to_pdx_xlate
 # define maddr_to_directmapoff maddr_to_directmapoff_xlate
-- 
2.43.0



From xen-devel-bounces@lists.xenproject.org Thu Apr 30 13:47:22 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 30 Apr 2026 13:47:22 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1298195.1573696 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wIRjX-0001yd-W0; Thu, 30 Apr 2026 13:47:15 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1298195.1573696; Thu, 30 Apr 2026 13:47: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 1wIRjX-0001yW-Sh; Thu, 30 Apr 2026 13:47:15 +0000
Received: by outflank-mailman (input) for mailman id 1298195;
 Thu, 30 Apr 2026 13:47:14 +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.19ddea4b728000f373@swg.vates.tech>)
 id 1wIRjW-0001xf-Cq
 for xen-devel@lists.xenproject.org; Thu, 30 Apr 2026 13:47:14 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wIRjV-0086Dx-Ag
 for xen-devel@lists.xenproject.org; Thu, 30 Apr 2026 15:47:13 +0200
Received: from [10.42.69.12] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1) (envelope-from
 <prod-mta-13.8631fc262581453bbf619ec5b2062170.19ddea4b728000f373@swg.vates.tech>)
 id 69f35d5f-bab6-0a2a0a5309dd-0a2a450c923c-6
 for <xen-devel@lists.xenproject.org>; Thu, 30 Apr 2026 15:47:13 +0200
Received: from [185.255.28.34] (helo=prod-mta-13.swg-srv.net)
 by tlsNG-d25034.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.1)
 (envelope-from
 <prod-mta-13.8631fc262581453bbf619ec5b2062170.19ddea4b728000f373@swg.vates.tech>)
 id 69f35d60-62f1-0a2a450c0019-b9ff1c22903b-3
 for <xen-devel@lists.xenproject.org>; Thu, 30 Apr 2026 15:47:13 +0200
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
 19ddea4b728000f373.006 for <xen-devel@lists.xenproject.org>
 (version=TLSv1.3 cipher=TLS_AES_256_GCM_SHA384);
 Thu, 30 Apr 2026 13:47:09 +0000
Received: from [192.168.1.18] (88-175-170-134.subs.proxad.net [88.175.170.134])
 (Authenticated sender: teddy.astie)
 by mail2.vates.fr (Postfix) with ESMTPSA id 37FC98282B;
 Thu, 30 Apr 2026 15:47:09 +0200 (CEST)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@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=fYrT/JODRVd7P7ffSLbDeb9ahiLPYVUa3o+fs8IKnJ0=;
 h=from:subject:date:message-id:to:cc:mime-version:content-type:in-reply-to:references:feedback-id;
 b=ea9HkZtzsoxbUv4oZa72f8GsKZo3sqTD6D+NMaZ+4AeRqPhQ9ADo9/61tcYZu1wENo2HvqiLA
 8dA/Ya0Qj1X62O4hw3ARFLee5dZhRg0GWglQw4R+R49iw6ZBy/iXVv+PzQqXd4g8u1eYc7arT9C
 bpJhFuP49ajIprHK7h9W21HWvS2tQ5fZ/LXEGDcuzlUceMezOOzQEX+8j7am96W7IkPGm05uYwt
 osdseIZU+y4YT8smrNUczMUIiqgnRLMTrmVEoLxtSU62EHN3Wia6e52P9L75uYnVv39GU/ko/vS
 +jHrGiBBBiu3oZlIJRtdoaMVdOvXQq1U2fcS2K8b5NKA==
X-Zone-Loop: d092762f139a051628d393a2881818492a25c28669a2
x-campaign-type: default
x-transaction-id: d7f841e6-baf7-4657-a8e4-caa108e7b7f8
x-swg-uid: 01-9b82dfce-6446-4419-a192-ad90733d7ca8
X-Mailer: Sweego
Message-ID:
 <1777556830.8631fc262581453bbf619ec5b2062170.19ddea4b728000f373@vates.tech>
x-swg-bid: 1777556830.8631fc262581453bbf619ec5b2062170.19ddea4b728000f373
Feedback-ID: default:8631fc262581453bbf619ec5b2062170:Sweego
x-campaign-id: default
x-client-id: 8631fc262581453bbf619ec5b2062170
X-Originating-IP: [37.26.189.201]
Date: Thu, 30 Apr 2026 15:47:08 +0200
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [RFC PATCH] virtio-mmio: add xenbus probing
To: Val Packett <val@invisiblethingslab.com>,
 "Michael S. Tsirkin" <mst@redhat.com>, Jason Wang <jasowang@redhat.com>,
 Xuan Zhuo <xuanzhuo@linux.alibaba.com>, =?UTF-8?Q?Eugenio_P=C3=A9rez?=
 <eperezma@redhat.com>
Cc: =?UTF-8?Q?Marek_Marczykowski-G=C3=B3recki?=
 <marmarek@invisiblethingslab.com>, Viresh Kumar <viresh.kumar@linaro.org>,
 xen-devel@lists.xenproject.org, linux-kernel@vger.kernel.org,
 virtualization@lists.linux.dev
References: <20260429141339.74472-1-val@invisiblethingslab.com>
 <1777473712.8631fc262581453bbf619ec5b2062170.19dd9b07146000f373@vates.tech>
 <fd6493ac-9d3e-475a-a844-6e53b0472820@invisiblethingslab.com>
 <1777536698.8631fc262581453bbf619ec5b2062170.19ddd7187da000f373@vates.tech>
 <74953b6a-d195-4a12-800d-af324ff35b29@invisiblethingslab.com>
Content-Language: en-US
From: Teddy Astie <teddy.astie@vates.tech>
In-Reply-To: <74953b6a-d195-4a12-800d-af324ff35b29@invisiblethingslab.com>
X-BM-Disclaimer: Yes
Content-Type: multipart/alternative; boundary="-=Part.392.3352229d598ec846.19ddea4b4d9.80e67b5e2fed426=-"
X-Bm-Milter-Handled: 4ffbd6c1-ee69-4e1b-aabd-f977039bd3e2
X-Bm-Transport-Timestamp: 1777556829402
X-purgate-ID: tlsNG-d25034/1777556833-F5A00CF5-E32DBE9F/0/0
X-purgate-type: clean
X-purgate-size: 5804

---=Part.392.3352229d598ec846.19ddea4b4d9.80e67b5e2fed426=-
Content-Type: text/plain; charset=utf-8
Content-Transfer-Encoding: quoted-printable

Le 30/04/2026 =C3=A0 10:51, Val Packett a =C3=A9crit=C2=A0:
>=20
> On 4/30/26 5:11 AM, Teddy Astie wrote:
>> Le 30/04/2026 =C3=A0 06:06, Val Packett a =C3=A9crit=C2=A0:
>>> On 4/29/26 11:41 AM, Teddy Astie wrote:
>>>> Hello,
>>>>
>>>> Le 29/04/2026 =C3=A0 16:18, Val Packett a =C3=A9crit=C2=A0:
>>>>> [=E2=80=A6]
>>>>>
>>>>> I've been working on porting virtio-mmio support from Arm to x86_64,
>>>>> with the goal of running vhost-user-gpu to power Wayland/GPU=20
>>>>> integration
>>>>> for Qubes OS=2E (I'm aware of various proposals for alternative virt=
io
>>>>> transports but virtio-mmio seems to be the only one that *is* upstre=
am
>>>>> already and just Works=2E=2E) Setting up virtio-mmio through xenbus,
>>>>> initially
>>>>> motivated just by event channels being the only real way to get
>>>>> interrupts
>>>>> working on HVM, turned out to generally be quite pleasant and nice :=
)
>>>> Is it HVM specific, or can we also make it work for PVH (we can=20
>>>> actually
>>>> attach a ioreq server to PVH guests) ?
>>> Sorry, typo, I did mean PVH of course!
>>>
>>> I've been testing this with PVH guests + PV dom0, with my PV alloc_ior=
eq
>>> fix:
>>> https://lore=2Ekernel=2Eorg/all/20251126062124=2E117425-1-
>>> val@invisiblethingslab=2Ecom/
>>>
>>> (Time to resend that one as a non-RFC I guess=E2=80=A6)
>>>
>>> HVM actually does have legacy ISA interrupts (which are often used wit=
h
>>> virtio-mmio on KVM), funnily enough, and I've tried firing those from =
a
>>> DMOP but that silly thing didn't work properly=2E
>>>
>>>>> I'd like to get some early feedback for this patch, particularly
>>>>> the general stuff:
>>>>>
>>>>> * is this whole thing acceptable in general?
>>>>> * should it be extracted into a different file?
>>>>> * (from the Xen side) any input on the xenstore keys, what goes wher=
e?
>>>>> * anything else to keep in mind?
>>>>>
>>>>> It does seem simple enough, so hopefully this can be done?
>>>>>
>>>>> The corresponding userspace-side WIP is available at:
>>>>> https://github=2Ecom/QubesOS/xen-vhost-frontend
>>>>>
>>>>> And the required DMOP for firing the evtchn events will be sent
>>>>> to xen-devel shortly as well=2E
>>>> Could that be done through evtchn_send (or its userland counterpart) =
?
>>> Actually, yes=E2=80=A6 The use of DMOPs is only dictated by the curren=
t Linux
>>> privcmd=2Ec code (the irqfds created by the kernel react to events by
>>> executing HYPERVISOR_dm_op with a stored operation), we can avoid the
>>> need to modify Xen by simply expanding the privcmd driver to make
>>> "evtchn fds"=2E Sounds good, will do=2E
>>>
>> Given that the event channel used by device models is exposed through
>> ioreq=2Evp_eport ("evtchn for notifications to/from device model")=2E I
>> don't think you need to expand the privcmd interface, and you should be
>> able to do this instead :
>>
>> open /dev/xen/evtchn
>> perform IOCTL_EVTCHN_BIND_INTERDOMAIN (for each guest vCPU)
>> =C2=A0=C2=A0=C2=A0 with remote_domain=3Dguest_domid, remote_port=3Diore=
q=2Evp_eport
>>
>> Then interact with the event channel through IOCTL_EVTCHN_NOTIFY (with
>> local port given by IOCTL_EVTCHN_BIND_INTERDOMAIN) and read/write on th=
e
>> file descriptor=2E
>=20
> So the reason there's currently an ioctl to bind an eventfd to fire a=20
> stored DMOP is that the whole idea is to (efficiently!) support generic,=
=20
> hypervisor-neutral device server implementations via the vhost-user=20
> protocol=2E
>=20
> Now of course, the current implementation isn't *entirely* hypervisor-=
=20
> neutral as e=2Eg=2E the vm-memory Rust crate (inside of the "neutral" vh=
ost-=20
> user device servers) does need to be built with the `xen` feature=2E But=
=20
> still, that's how it works=2E What can be made generic is generic=2E
>=20
> xen-vhost-frontend, which is the thing that integrates these with Xen,=
=20
> actually used to handle the interrupts in userspace[1] by firing the=20
> DMOP itself (which is where I could "just replace that with=20
> IOCTL_EVTCHN_NOTIFY") but that was offloaded to the kernel with the=20
> introduction of IOCTL_PRIVCMD_IRQFD[2], similarly to KVM_IRQFD=2E
>=20

I think what would be preferable for your usecase would be to have a way=
=20
to bind a event channel with a eventfd object, which should be a=20
primitive that lives in the evtchn device=2E

The current interface kinda assume that you're looking to emulate a=20
completely emulated virtio device with no Xen specifics, it looks like=20
it's not exactly what you're implementing=2E

As you actually plan to switch to using event channels for notifying the=
=20
guest, I think it would be preferable to do the same the other way=20
(event channels to notify the host) so you only have event channels to=20
worry about here=2E

> Switching back to handling the eventfd in userspace would be a literal=
=20
> deoptimization :)
> > While throwing away the whole generic layer to do a fully integrated
> use-case-specific thing sounds more difficult/tedious than this, and not=
=20
> necessarily desirable in general=2E
>=20
> [1]: https://github=2Ecom/vireshk/xen-vhost-frontend/=20
> commit/06d59035f8a387c0f600931d09dfaa27b80ede7f
> [2]: https://git=2Ekernel=2Eorg/pub/scm/linux/kernel/git/next/linux-=20
> next=2Egit/commit/?id=3Df8941e6c4c712948663ec5d7bbb546f1a0f4e3f6
>=20
> ~val
>=20
>=20



-- 
Teddy Astie | Vates XCP-ng Developer

XCP-ng & Xen Orchestra - Vates s=
olutions

web: https://vates=2Etech
---=Part.392.3352229d598ec846.19ddea4b4d9.80e67b5e2fed426=---


From xen-devel-bounces@lists.xenproject.org Thu Apr 30 13:58:21 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 30 Apr 2026 13:58:21 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1298209.1573705 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wIRu4-00049J-Se; Thu, 30 Apr 2026 13:58:08 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1298209.1573705; Thu, 30 Apr 2026 13:58: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 1wIRu4-00049C-Pp; Thu, 30 Apr 2026 13:58:08 +0000
Received: by outflank-mailman (input) for mailman id 1298209;
 Thu, 30 Apr 2026 13:58:07 +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 1wIRu3-000493-K0
 for xen-devel@lists.xenproject.org; Thu, 30 Apr 2026 13:58:07 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wIRu2-00GpC8-Jv
 for xen-devel@lists.xenproject.org; Thu, 30 Apr 2026 15:58:06 +0200
Received: from [10.42.69.1] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <andrew.cooper@citrix.com>)
 id 69f35fe4-bab6-0a2a0a5309dd-0a2a4501bdf6-26
 for <xen-devel@lists.xenproject.org>; Thu, 30 Apr 2026 15:58:06 +0200
Received: from [52.101.52.57]
 (helo=BL2PR02CU003.outbound.protection.outlook.com)
 by tlsNG-d62444.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.1)
 (envelope-from <andrew.cooper@citrix.com>)
 id 69f35fec-c1f2-0a2a45010019-34653439a9d3-4
 for <xen-devel@lists.xenproject.org>; Thu, 30 Apr 2026 15:58:06 +0200
Received: from CH8PR03MB8275.namprd03.prod.outlook.com (2603:10b6:610:2b9::7)
 by PH7PR03MB7416.namprd03.prod.outlook.com (2603:10b6:510:2f2::22)
 with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9870.20; Thu, 30 Apr
 2026 13:58: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%6]) with mapi id 15.20.9870.020; Thu, 30 Apr 2026
 13:58: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=QAdgNH8HaXI/z1rJSsAuTDiHlnihr4E5al37z/YwErlNjF+4Uyztce1olNzZyydt4jZbwnBy8PoZH2bm5zOe+1TKT6rCmC4Utv35PLccujsEvKv92iofEChSVVFZqHgehNgWanvIkgIw19mMnONHsj4E2PBbR2G4Eg/yXukFenolHC3zSaLdoajj909j8ajBU5VO5Gu850FgsFlOFsuiV7c/sQA2yfbmcQU8Az4BvAhPFeLRGZVS2vbIV2huRHPZduiCEtNdhcvz1ukEA5w9m/z6ZfBW9Dqq7++7loX1SHSUzTYKJj336AJ3trOFygnHz07dcXo9HI6t44yH+h0VJg==
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com;
 s=arcselector10001;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1;
 bh=0fMMds82kYgI2oLZ7g/bev2WMrq2ftex5u+gWA8C4Po=;
 b=PJQvUW2MBl5zVEH3pqln/du4tygnZGhSvjXRBW+SDoKY7MKnaN20qYwKKE0bbTLpryHOse/ykBY5WdSYS1w3xU4zq4NdmRGg0sLeHmosaoUKU83kUsM1G1g5RvV/dwU/ntfOd13u4n+oUfb9GRbCkMQ6oZg7Q8a1yPlr58UgmALLxFfNgYwBUb0CtVvcG7ykaKHRHZ/uZ60eB4YLkUshGcQa+SCRO8HBcrGxu2vv3hyOtAb2sUKtMoeZw4rUTEVpwhSUFZ68GSIrSr9ppcNmV+b8WUALAIN78AJHHNbMp7+RTsDHjKmauD9sLJ4emjUrSQrAeeitA8fuhXZSIzKFqg==
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=0fMMds82kYgI2oLZ7g/bev2WMrq2ftex5u+gWA8C4Po=;
 b=uD61njrrWCroxy2Qgq+oC5AICI3dlN7dmUm+dOXKk2nlNzxGG52HuVh8L0A7LQgj4/J9+H2Y9bYuuFwQoZf5buSPfqDWv2o/vYUULFXORBu8Gk074fEyfFzo3f+w05F0LkTGNrV+5jdnO7EJiBmuMiWqEfbENiGVXg6XnZBdFxs=
Authentication-Results: dkim=none (message not signed)
 header.d=none;dmarc=none action=none header.from=citrix.com;
Message-ID: <70d214c2-d420-414b-aa45-41f17bdcc0e1@citrix.com>
Date: Thu, 30 Apr 2026 14:57:56 +0100
User-Agent: Mozilla Thunderbird
Cc: Andrew Cooper <andrew.cooper3@citrix.com>,
 Doug Goldstein <cardoe@cardoe.com>,
 Stefano Stabellini <sstabellini@kernel.org>
Subject: Re: [XEN PATCH] CI: use --platform on `docker build` and `push`
To: Anthony PERARD <anthony.perard@vates.tech>, xen-devel@lists.xenproject.org
References: <1777466900.8631fc262581453bbf619ec5b2062170.19dd9487f12000f373@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: <1777466900.8631fc262581453bbf619ec5b2062170.19dd9487f12000f373@vates.tech>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 7bit
X-ClientProxiedBy: LO2P265CA0125.GBRP265.PROD.OUTLOOK.COM
 (2603:10a6:600:9f::17) To IA1PR03MB8288.namprd03.prod.outlook.com
 (2603:10b6:208:59e::6)
MIME-Version: 1.0
X-MS-PublicTrafficType: Email
X-MS-TrafficTypeDiagnostic: CH8PR03MB8275:EE_|PH7PR03MB7416:EE_
X-MS-Office365-Filtering-Correlation-Id: aabc67b6-e832-40ba-15ca-08dea6c07d01
X-MS-Exchange-SenderADCheck: 1
X-MS-Exchange-AntiSpam-Relay: 0
X-Microsoft-Antispam:
	BCL:0;ARA:13230040|376014|366016|1800799024|18002099003|56012099003|22082099003;
X-Microsoft-Antispam-Message-Info:
	tkJesO9T4F2Uf0v8gO01NP1m36zYQb+K4RdjnMDD88N8A1FYHCjEoSzS9TvIwEH91gvNMdx3S6t/PqNPOenh0AL8JBeygeZTyUCsNFaavR51LqFmwwbNpQI+q9HJt5seJrl0wtHRNqERQnuIcBP1pKDPOV6gClbhzE6FNj1etvpiPfjtVt996GPXQ7i1QJ8wV1FZNCEjJALtzBmzdLwn8X6FF9PlotbZDI3ppXnvBSPgLZEGA0HCQIR1k4EDY+w8fJKhihGWrDgVxc1/rPGpQbElcIFpiQyNL6WVhVpprADB04lsEg24s1RcrJAIhdebmOz4EuFJNasl/zjOjvofXNn+qIId4bxqCq9M7y4OD1D0Nsu+Hkz2q56TQFHi7cqR8obCdozCrQ5I11k38CNWbTs+L0b4n1LlLTH0Zkb1dmeH+OobJsfJNref0W9g/MPkmN/rJhIbqHaYTp6W1Ql4VgHjh+ymGFZyo9zXH6Uu7InlBIKHHr0IxS9tvOMFi8EOnmoOBRWdXa7YsGJT8DqkRIhDRYO27sFc1w2A/eKVXt0mvrjQMgOTgGXg4hefRcK+TlFemW5z8e3xnZpl3bYzyWCTC4zKxhDywF091IRVZ6v11m00ZGPTQ1o7goHkIhUWCqw4Sfa3Uf3fHbjwRI/XN7LQF/9HWqsZXt3kPCSois2jNl2S51s6NopQQ/UnrkBD0jAF8aKsrX3iKLzpxi6Kqk7nSiprXcqu+7IFtWtpjFM=
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)(18002099003)(56012099003)(22082099003);DIR:OUT;SFP:1101;
X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1
X-MS-Exchange-AntiSpam-MessageData-0:
	=?utf-8?B?R2dabHFHcjhJcFZoSVBRL2MyQkIydEt1bFZheU5rRkRsams4ejNnSGR4MnM4?=
 =?utf-8?B?ZmpXZFphRkc4dlJqemRFRGxWcXl0b29nYnMxMll4M3U5azRBWmhKWlFiaTJ4?=
 =?utf-8?B?dTYyM2NQVW10Y0N4Y3UxRTc2MkdWQUhyekFZb013M1hzRGlkRjJmQkpYT0hr?=
 =?utf-8?B?WDQ2cUIySnJVTTJURElGSjFqNTRsNzFZT3lBeDFWVUd3V2VBaHdaUkhqU3ZR?=
 =?utf-8?B?V0ZpbGVubmlHcTZ5UDNXcE1PQUpTeXRqcktrbnFQUTJoemVvTEt2MUp5amZ4?=
 =?utf-8?B?UmZsYy90cVFKR2ZsdWJCTkNBYURrNzRwSmZpSWM4OHdMRmtlUlIyZnZwc1N3?=
 =?utf-8?B?MnF6MmFoS2hyRkwxWklXanJHU3Vlb3EwVU5ZbGRqWEpsTHI3c2VsY2ZpUEI5?=
 =?utf-8?B?cmF1Q2ZRQ0lHOXJHaUdkdzFxVGk1WVNEdmVqN3FkSWg1bmFRanQwczVjcjAy?=
 =?utf-8?B?b0VUUWtyc3lDaktEbjZMQTJiYWhXWklMVC9ZOTQ3TEV1VEF0THlBTHhnai9o?=
 =?utf-8?B?b2NhSDI2OU5OREhPRkMrYWdaa2dsaUJFOWlKaU1TUzVXVGNpYkh0MUdvQ1Vj?=
 =?utf-8?B?WUM5U3VncjUybXkzRHdnSUs5YVYreW1zT21MOGdlYWFIT0k3N2RtVlF4ODNN?=
 =?utf-8?B?WUEvd1REYUhXWnJaSUpuaHpnU0VLc3RmSkIwalVLeVZ2SklDR1RJN2Z2bjhF?=
 =?utf-8?B?R1FVVzRpUmJBZEdlRFpNNlVodzFKOEdRejhMTjY3MUxLVVAvZXhtWndGbmwx?=
 =?utf-8?B?MVZPTWk2dDh3Yzl4MUMwSzRUSDVhME81d093VW41NmNMeDZGV0FCMEg2S0Fi?=
 =?utf-8?B?VVNYWTdLYk9BSVlvUmNwUGNuYmRXejdlR1FUbHVrdWtyMUhxdURJNnc3T25l?=
 =?utf-8?B?cnUxbmNBYjEvWE1ZUFYxR2wzQkJlcjUrZW42RmJURWc0RExXWW8yL05ydG9R?=
 =?utf-8?B?QVRGOE51RGNPQ0crSHZLWTZHREdreVM1UTZNNUIranVTZmY4eFhMVVBsUnZJ?=
 =?utf-8?B?dnY1dmdPeVorUUJyVHVjYVJ1Rkl3cnhKenA2NHdUYzJYUWNZUy8yUmdlQ2o1?=
 =?utf-8?B?bjd4dEhnNzdDaE9rZEQ3T3AraDJYR1NwT3krVmtwWFQ4aFZIclhrOThhWmxp?=
 =?utf-8?B?aWlnSWZNVUJWbFpxVzVTb2J6b0FtNzVLU09FaW5RWFN1RzZpSzhicnJ0cXlV?=
 =?utf-8?B?QjBLOE53Rk90SE9xbXFLT1hhbC9vQkMwWDVrazdmMlR0Y2V1c1NKRDVYL3V2?=
 =?utf-8?B?U0R0OXNhb2h2RThUNFZYYy9zckFZK25EcGhpMHBibmY5b1BZRTJCSmtOQzVM?=
 =?utf-8?B?U1ZsbTdxM2Joa2pFcWd6eHJSd3JXZURDMi9nUjVRQVBPZTZIaENDNC90SWZT?=
 =?utf-8?B?cldJaFVTSXd4bDAwb1lCdTlhZmhnV1JqUHM0SHM1STFmYjVtQ0RDUGZ1bHpo?=
 =?utf-8?B?Zmc0cDdhMHY2S1gzeng1QUlaOU1aRjJTOWRiejBPOS9aV2lRQm5pb0lTcElS?=
 =?utf-8?B?a0NWbk5sOUpValRDOGtBRTdBV2NZa0NGR2NQOXlUNm1KVUd3eEJ4eGtrM28y?=
 =?utf-8?B?Z3V6ZGorb2dFdTZKWndsUzFBWVk1OVdja1J0MEZRa0E0dFlzYjl0M0RtcEVw?=
 =?utf-8?B?Q1NHNWFLcTI4MlhoRU5HMG8wZmp2QVdheDBZNVhtYVlidUdaK2Q4UExlSFU5?=
 =?utf-8?B?bnpENEJHUVByL2hOQW5NQmsxV2NDOWdkelZ6ZTEyWVB2QzgyVjNUak0xNk96?=
 =?utf-8?B?T0FmcTZwVlBpcXRuQ0dDWmdWU2k0LzdmcUZMeDhWRjJ1TEJDNHUvNFlJVVYy?=
 =?utf-8?B?Yi9jaUc0YW91ZWNhR25HZE5pYmtrMEZSd2lpR2d5aWt6QkQvTVR2dWErd01B?=
 =?utf-8?B?eHlPam9tenhTT2RMMldoTnIwdEhDdHBtRTBKVGZzTWpmWks3RjdVdW9WcnJw?=
 =?utf-8?B?akVvUDRlaG4wbWRyT1dhQXp1VHh2R0E1WTJQNW1aZFZESnpoOHM3U3YvUmxP?=
 =?utf-8?B?M2YrejdRUlBJZlBUWGFaUm9UN0N3Z1BONTV4VDlUbEpSOEhJWVZVQUVldmNw?=
 =?utf-8?B?TjlIOGlMaWFTd1Y2QjhrOXNtRk1XWjJ1Nko3ZFlVVlkrQmNPRDVKUk1UcU5X?=
 =?utf-8?B?R1dPRWhMK2xEaWU1dTdNRzh3OHIzZ0JadmZLbnBhQ3lYTHpicmkvV3E0YUtz?=
 =?utf-8?B?TjdqamZERFI3OVlRdzhHbnpVdkYxb1Vta01vVVU4R0V5dXJHc1h4c0FnS2RV?=
 =?utf-8?B?ZWVnYVhQTjNHNHFaKzBEYW5uUXptTWkxUVB6QUd6QnVHU1dZbEJwWVdtYlJ5?=
 =?utf-8?B?bDVONWtjV1p5U1NoM0RXVkJMYnFXU3NXZ1B2aERiV29nS3pndEd2NlRzSm12?=
 =?utf-8?Q?XolnsMLoNyG5EJk4=3D?=
X-OriginatorOrg: citrix.com
X-MS-Exchange-CrossTenant-Network-Message-Id: aabc67b6-e832-40ba-15ca-08dea6c07d01
X-MS-Exchange-CrossTenant-AuthSource: IA1PR03MB8288.namprd03.prod.outlook.com
X-MS-Exchange-CrossTenant-AuthAs: Internal
X-MS-Exchange-CrossTenant-OriginalArrivalTime: 30 Apr 2026 13:57:59.9475
 (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: nvxHfnvnnurEGgIZ6wXQoCAOSBpW5LeYdvKlgP2P6De0D/B0erocysH08RqxBQpn7exLeBEk37XTyVV7nI3o7nEX41F3X6v/8H8Xq+0Rh54=
X-MS-Exchange-Transport-CrossTenantHeadersStamped: PH7PR03MB7416
X-purgate-ID: tlsNG-d62444/1777557486-BF478FF4-82CFC670/0/0
X-purgate-type: clean
X-purgate-size: 1761

On 29/04/2026 1:48 pm, Anthony PERARD wrote:
> Without --platform, it seems recent versions of docker ignores the
> platform of the image when pushing, and it's pushed as the platform of
> the runner.
>
> If we happen to build an arm64 image on x86, with recent version of
> docker, the image will be push as if it was an x86 image, then
> `docker run --platform=linux/arm64 ...` fails. Even if it would
> work without --platform, gitlab-runner will not be able to use the
> image.
>
> To go back to the previous behavior, we will extract --platform from
> the dockerfiles, and use it on the command line.
>
> --platform= is needed on both docker-build and docker-push. The first
> one so that the image is tagged with the right platform, and the
> second one so that we can push a "generic" image without been tagged
> to a particular platform. --platform on docker-push allow to easly use
> the container on any arch, without having to use --platform on
> docker-pull or docker-run.
>
> `docker push --platform` seem to have been added to 1.46, according to
> the [doc], and doesn't exist on Podman. So we need to check that we
> are using `docker` and that the API version is new enough.
>
> [doc] https://docs.docker.com/reference/cli/docker/image/push/
>
> Also, introduce the $img variable, to make the lines a bit shorter.
>
> Signed-off-by: Anthony PERARD <anthony.perard@vates.tech>

For the code changes, Acked-by: Andrew Cooper <andrew.cooper3@citrix.com>

> ---
>  automation/build/Makefile | 24 +++++++++++++++++++++---

There's another docker push in automation/tests-artifacts/Makefile

However, this fix should allow me to finish the work to purge
test-artefacts/* so the problem sorts itself.

~Andrew


From xen-devel-bounces@lists.xenproject.org Thu Apr 30 14:49:21 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 30 Apr 2026 14:49:21 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1298244.1573714 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wIShO-0002h2-I3; Thu, 30 Apr 2026 14:49:06 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1298244.1573714; Thu, 30 Apr 2026 14:49: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 1wIShO-0002gv-F3; Thu, 30 Apr 2026 14:49:06 +0000
Received: by outflank-mailman (input) for mailman id 1298244;
 Thu, 30 Apr 2026 14:49:04 +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 1wIShM-0002gp-MU
 for xen-devel@lists.xenproject.org; Thu, 30 Apr 2026 14:49:04 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wIShM-0060Bu-2S
 for xen-devel@lists.xenproject.org; Thu, 30 Apr 2026 16:49:04 +0200
Received: from [10.42.69.5] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <andrew.cooper@citrix.com>)
 id 69f36bdf-2eae-0a2a0a5409dd-0a2a4505e628-4
 for <xen-devel@lists.xenproject.org>; Thu, 30 Apr 2026 16:49:03 +0200
Received: from [52.101.53.32]
 (helo=BL0PR03CU003.outbound.protection.outlook.com)
 by tlsNG-c201ff.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.1)
 (envelope-from <andrew.cooper@citrix.com>)
 id 69f36bde-aaa8-0a2a45050019-34653520bc13-3
 for <xen-devel@lists.xenproject.org>; Thu, 30 Apr 2026 16:49:03 +0200
Received: from CH8PR03MB8275.namprd03.prod.outlook.com (2603:10b6:610:2b9::7)
 by LV2PR03MB989103.namprd03.prod.outlook.com (2603:10b6:408:37c::12)
 with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9870.22; Thu, 30 Apr
 2026 14:49: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%6]) with mapi id 15.20.9870.020; Thu, 30 Apr 2026
 14:49: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=ikYmB0VCT0ZXH8OgjQ+U1W2B1Hjzxs3s/vNLqIAiL3U5SqyHm4V3pNAy9t35coA6WZyCRKmFygR/E9mVRP7wMBsLYYKAc8A8xhlBzv7kPFYeaq4C146XcwH2O6gQ14nkqjKvfY2C5ENTQgyMfGgBT6JmCU7LRTaRlGo1cIinGNLi6aeGveQHKyc0pSqjFHegfOJwcBunjmjt+kRpA5Q6RdNoROIpDI1n7JK8jQ1qa3jOD5pp9RNplUBw2oy3aK1sdKxXaN1IBUWEqg5hBY4/MrVyeZQps6r9CWRZbNMvs+SJmOnRjVizsETvC2UuKF1P6gr52IlN5sY6SEl1BnSjSA==
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com;
 s=arcselector10001;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1;
 bh=lmU6MUmLluP/eqvhj//rsZBMT68fVMkpHByYLJgvAUU=;
 b=MmuLgwlBcNGU879YzIFyixc549HEc0tjKgmrRBlcvXneM1KBN533owgsZsfgoI1JoL/upyUdVNHNgIOJGRRA4ZoGROrIyqKI1a/luDKYV0/O1SbfqG5H2IefKpolpyU80ekFfMKrJRmSX21IzHCZXPZT7bgp2GswbjbqBBP884q+f1BRjIO1a1rE4LJzUsgJRPnVbF/8LUSC6OJZlRqGWa96vUiPyJ+t23jWLeYlQRFTQbdu3tI8YuaINZ7LB0FddCupLnOXdScw8ZH/CaRbdF/KyOc4vYQwfYTeOXorCV3h/QP7qJAR3p4HibWtfVGB7x3rxEwbd7syQnQMFEg19g==
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=lmU6MUmLluP/eqvhj//rsZBMT68fVMkpHByYLJgvAUU=;
 b=ROxJk9z1vVdaCwsbivHbTNHlunb09PYS/55SFhKv4ZAXSJ9m0aCH7iOzpkJqcHmTAQAKLaU+UpLjF4FGCoQYCwcdkQ56q/e06maHYZfzuVmWZ7MRGn3qK8XNveX6OCV/IrJUmQrxwaYTBJw71i2BE4080GqeCcEE1cc0ZyxtimA=
Authentication-Results: dkim=none (message not signed)
 header.d=none;dmarc=none action=none header.from=citrix.com;
Message-ID: <bc22f741-ed97-4c6c-8ec4-9722a4dc73d0@citrix.com>
Date: Thu, 30 Apr 2026 15:48:56 +0100
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] x86/cpu: identify uninitialized CPU data using BAD_APICID
To: Roger Pau Monne <roger.pau@citrix.com>, xen-devel@lists.xenproject.org
References: <20260430114647.94526-1-roger.pau@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: <20260430114647.94526-1-roger.pau@citrix.com>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
X-ClientProxiedBy: LO4P123CA0249.GBRP123.PROD.OUTLOOK.COM
 (2603:10a6:600:1a7::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_|LV2PR03MB989103:EE_
X-MS-Office365-Filtering-Correlation-Id: 5a526c19-1eea-4fa7-a733-08dea6c79d77
X-MS-Exchange-SenderADCheck: 1
X-MS-Exchange-AntiSpam-Relay: 0
X-Microsoft-Antispam:
	BCL:0;ARA:13230040|1800799024|366016|376014|56012099003|18002099003|22082099003;
X-Microsoft-Antispam-Message-Info:
	6qzK+704QQrwosmyhNM3Sy2hfzsuw5O0dnFTIMZhpBcgfbFGAEqwFp7y8Hx6yT0+EsAQKL4hxnrDr/Renr1+7Cr5JgJrCya6ocEz7kO+LOq0jye7WVdBmtF3jUOIZBVIUBIAQ+w8a2z5VKOdGYhxDu5q+rNNRPCL9AL6oP1KjmzFwBHA3H/CgrtmgYsf/BRyQgjKopcmGAqiSbTTGazKPcWN5z0485+dmbEiTFWBA/yrrl95BXiqe7CKKkN+UGQDlIxGn/741VL10yX042UT2QUZC4q/in8gvpz2jBlowsKmfOG1YELzNy/Iyj4Hgqzxp9DGmhVezjMoIS8y+fl3PCnJZ6vvlrGOIb/+Pr7GnLR8f3G7CSPpLM/416SveIkAe3pd0Mwj9utwugc5HDeE2jL3CvttQNqb6wN75eW5AX1tq7vWUrhA/8X1AIqELZhAQbnV/0F3pgFaHKDvWPilrACuMpzVF2azkS9s0YVmyeRuWmccV4icZS9KxUS/g+HHp1Sy80hUi3kwOjrBzUMdLK4tfGe0GDus6aJoWUvWiC+qnDEzj6+RXlNv2GDoMDXnSkrOz11Ve36QjV+6l6CFMeWL8j5YUbqScu/vw4+0AggG3F6CpEXSzPunqww8O1rHjRd5niieL6DUWbyxvjxobb76IpRm1mf0gyRQsDwTaY3j4xHysSt4HWihPVi8UQaKHScwnY6vdf1m8j6Q2zOi+gD2/g9hj/Tb/0BKoEOitDM=
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)(56012099003)(18002099003)(22082099003);DIR:OUT;SFP:1101;
X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1
X-MS-Exchange-AntiSpam-MessageData-0:
	=?utf-8?B?K21zUDdreW1nYjluMHBjSmVldlZIQzZiWGhkS3dYUDJTQkREanRUMWVKOGhn?=
 =?utf-8?B?WmRrQmliQ3ZYaVlMTmNZeEhBS09BMHZ3TDRyR1NPbUpGWlZ5RDA4cmZVczlP?=
 =?utf-8?B?R1dhSGplOENNclZqTExkVXFiZ1BpeWZpVk1xV0FPSktrYUVUWVJkL1MzR2hN?=
 =?utf-8?B?MENBUTBlTXloMER0R0J5TmxkUUh1dkl6Q1VLejA0cXA4b1ZQWlR0b281Z0Y3?=
 =?utf-8?B?K01FZ0cwVXdlTThoY205SSszRkRIMkFlWjdMK3cwdExrTWJLeEN6OWQwZWJM?=
 =?utf-8?B?Ty9LeitNWFA1ZlBvb2FIZkJ1VmhKY2FMNDZvbkJ3dDkvZjFHdlpoYk1nUVFS?=
 =?utf-8?B?TmVWKy9JL2MvZS9sTWsza0lVZkJNY0owdklKY21IV0wxcCtMRVJNU0ZRMEZT?=
 =?utf-8?B?ZjVnTTBuMjBwWUpCdjlMSlVVQkVUeE9ycTJJcklSd1p2emJic25SenlGc1Vp?=
 =?utf-8?B?Q0dML0c2NDVUZXRwb2EyeEdlRjNvd0YxNDZNUXAvOWpTMUFPWFB1MTI0Y2dW?=
 =?utf-8?B?VWVqallGUTZIa1lMZUFBOXVwcE4rR2IzOWVza2dZbjVaWnk3aXdJZVkzRS84?=
 =?utf-8?B?U0MrQktMNzgvVFhwckQydWVkNG1LUjdnMGxPS3YyRFVRYzB0cGtRNWFrSWtN?=
 =?utf-8?B?UjczLzl3U0tzb2x1dEtTWFNyVDcvR1ladFJpMCs1anpqa1g2V0s5YXEvUU4z?=
 =?utf-8?B?a2loRUpNSXh3Nk9XQ1hDUkZtR3U1VmI2R1U4SzA4Q0JEYnl6UjYzNXd2S3dG?=
 =?utf-8?B?clBlWUdZT29meHFyeW5sbXFjRHp1Vkw2ZXVreHg0eGxvN25TTnlTSlJTSS9V?=
 =?utf-8?B?eGNFcXpoQ0RTMytPUkxVcDhrQjR3dFRWVXJoSmRGY2JsTnplbXVocHFFWkJw?=
 =?utf-8?B?Umw3bXYxaVdJZllRdHFRMFFpWmxIRlBHbkx5dktLcDNlYzJDemxKNGwxK0JJ?=
 =?utf-8?B?WlJPNmRmN2FhUVdrbm9RQlZOYy9lcCtnTk9QWHNpWExLVTVmc2ZNUDhTWkpw?=
 =?utf-8?B?S09yT1BxY1lLcXphUElCb3JXTVJaTnBjT2dTTjNaV2pDckhYL2FCQXFGdldp?=
 =?utf-8?B?WVRCbUFydGwydmJyTXh5OGRYRkllRnJ3WWFHWEVJeGE4bUxiQ3hya1NDWHBn?=
 =?utf-8?B?YnNUUTdHRENEb0x5UmVBam9zSEYvUUFaTnAya1RyYXliZitYVU9tbmloYkdT?=
 =?utf-8?B?cm1tSUNOaVlMaDVMeGxVTGFPdXhWOHJob0N2c3hqY2VYMzVCcGEyUDR2VVRO?=
 =?utf-8?B?Nkl1THA4SFZ3ZUw3aElDZDRrcmZrNUE2bmZoS1VFa1pOZE9NRmlBK0xKdTIr?=
 =?utf-8?B?bDhBU2g2U1Y1Y05yeVliLzhycWQzZVd1VU9RSG45Y3lVU2VqQmZNM0thUTZO?=
 =?utf-8?B?ejZFT3QzVWZVdW1YbitjUy8wY0tBNE5rc25BdW4wYzUvOTFEKytBVHhXdDVW?=
 =?utf-8?B?S2lPcTRLUHppRm5BemQ4eGJycmNHUmhaWVpydkVhSzJmQlUzdGwzN2c1TnVs?=
 =?utf-8?B?UFU3aDI2YUVmZXMzZEtYQ21BMDBCUUN6Zk1rNncvUnZjRzM3SVVjSzlYOW9R?=
 =?utf-8?B?TzgyVDZtWnN3Ukk1MFNRU2RZRkxJRGRLSEdyUjRTK0c5eGtzaEpjK25jVThQ?=
 =?utf-8?B?QXVxMEY5SDUwODUya3dkaDJZUWxFeUFRck9WSmVKaTdsUy94ZFpKazg0MFFU?=
 =?utf-8?B?MzRhczBSUmhlSmxvMnhtbEJDSTZaNXM1cDlNV0d5OVpsVHQ3eEVMbis3dkNO?=
 =?utf-8?B?MmhOMEFHMGVQNTl2dHZxUWl2eFBseE0zQk9ZR2ZxZU96NVdrVkNJRXVyS1oy?=
 =?utf-8?B?Q0VsQ3ZqZkNVcE85WHRUQ2J1WmRVWFlReEhzbHU3Zmc0cnRNV3BaOVdXR0Vn?=
 =?utf-8?B?eHBWU0xrV3NzWnJMY2RDa21ENlVMN3B5UEhZbjZxYmFWNjFmQnIwRzZxR3dP?=
 =?utf-8?B?QUxjRFBEQnVla2k2dXhLbTFNTVNPYTVOaUJpY0xzdENpZFEyTGMvR3JJVE92?=
 =?utf-8?B?SjQ1azdaUnFRSThDbkZ5SVZqTWI4Z2IybngyODNJYktveW1uRktLdHAxa0U3?=
 =?utf-8?B?SmNtZlNCb0dHckl4SDg1ekxyMnBKUDN1eXh5U1N5RU1HN1cydFNCdmM5QVRU?=
 =?utf-8?B?eGRZc2dJbk9LK1dqNjYyWUxiT3ZQV0EvTTVKM2JJUEhmdDc2YWpGcFkyMmFq?=
 =?utf-8?B?RkgxdUFQV0grMnFQaGJqT24zajNaYmJMUmRrYjVjRWt6RVlkbVRZZkYzay93?=
 =?utf-8?B?SDFuQlBZVHpXZHJRRXh3SldaNEZCTW5YcXZJckp0OFR6MUVWNk1nYkJwQ0E0?=
 =?utf-8?B?VVZaQWYzazZWbUY1MWlHckwwUUFoRWFBaS9aVG5ZZjNTSmRrdDdxMktzZkVi?=
 =?utf-8?Q?jHmeVzgLrPCgVQg8=3D?=
X-OriginatorOrg: citrix.com
X-MS-Exchange-CrossTenant-Network-Message-Id: 5a526c19-1eea-4fa7-a733-08dea6c79d77
X-MS-Exchange-CrossTenant-AuthSource: CH8PR03MB8275.namprd03.prod.outlook.com
X-MS-Exchange-CrossTenant-AuthAs: Internal
X-MS-Exchange-CrossTenant-OriginalArrivalTime: 30 Apr 2026 14:49:00.4794
 (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: XWW2CDuE/ERHk9fOoGztfNU5XErM+EDvf5keazqYYfy0M+dv/jmNoRHDCrApM4dMgltpDbc4u5KLOQ1XB6c88nTEfMQJeKQRUFvnDX/RzQk=
X-MS-Exchange-Transport-CrossTenantHeadersStamped: LV2PR03MB989103
X-purgate-ID: tlsNG-c201ff/1777560543-2B961443-AB81E192/0/0
X-purgate-type: clean
X-purgate-size: 1353

On 30/04/2026 12:46 pm, Roger Pau Monne wrote:
> Uninitialized cpu_data[] entries have the apicid field set to BAD_APICID,
> not boot_cpu_data.apicid.  Fix the check in cpu_smpboot_free() to use the
> correct condition.
>
> Fixes: 7126b7f806d5 ("x86/CPU: re-work populating of cpu_data[]")
> Signed-off-by: Roger Pau Monné <roger.pau@citrix.com>
> ---
>  xen/arch/x86/smpboot.c | 3 +--
>  1 file changed, 1 insertion(+), 2 deletions(-)
>
> diff --git a/xen/arch/x86/smpboot.c b/xen/arch/x86/smpboot.c
> index 491cbbba33ae..ff05955bae40 100644
> --- a/xen/arch/x86/smpboot.c
> +++ b/xen/arch/x86/smpboot.c
> @@ -961,8 +961,7 @@ static void cpu_smpboot_free(unsigned int cpu, bool remove)
>       * In that case the socket number cannot be relied upon, but the respective
>       * socket_cpumask[] slot also wouldn't have been set.
>       */
> -    if ( c[cpu].apicid != boot_cpu_data.apicid &&
> -         cpumask_empty(socket_cpumask[socket]) )
> +    if ( c[cpu].apicid != BAD_APICID && cpumask_empty(socket_cpumask[socket]) )
>      {
>          xfree(socket_cpumask[socket]);
>          socket_cpumask[socket] = NULL;

Yet more fallout from that change...

This is the singular use of apicid.  We should consider removing it, but
that's a change for later.

Reviewed-by: Andrew Cooper <andrew.cooper3@citrix.com>


From xen-devel-bounces@lists.xenproject.org Thu Apr 30 16:08:55 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 30 Apr 2026 16:08:55 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1298293.1573723 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wITwP-0005DK-1k; Thu, 30 Apr 2026 16:08:41 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1298293.1573723; Thu, 30 Apr 2026 16:08: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 1wITwO-0005DD-Uz; Thu, 30 Apr 2026 16:08:40 +0000
Received: by outflank-mailman (input) for mailman id 1298293;
 Thu, 30 Apr 2026 16:08:39 +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 1wITwN-0005D7-6f
 for xen-devel@lists.xenproject.org; Thu, 30 Apr 2026 16:08:39 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wITwM-006Ddj-FB
 for xen-devel@lists.xenproject.org; Thu, 30 Apr 2026 18:08:38 +0200
Received: from [10.42.69.6] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <andrew.cooper@citrix.com>)
 id 69f37e74-5cb7-0a2a0a5109dd-0a2a4506b750-42
 for <xen-devel@lists.xenproject.org>; Thu, 30 Apr 2026 18:08:38 +0200
Received: from [52.101.48.40]
 (helo=MW6PR02CU001.outbound.protection.outlook.com)
 by tlsNG-16d1c6.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.1)
 (envelope-from <andrew.cooper@citrix.com>)
 id 69f37e84-7371-0a2a45060019-34653028be91-4
 for <xen-devel@lists.xenproject.org>; Thu, 30 Apr 2026 18:08:38 +0200
Received: from CH8PR03MB8275.namprd03.prod.outlook.com (2603:10b6:610:2b9::7)
 by DS2PR03MB8419.namprd03.prod.outlook.com (2603:10b6:8:32d::19) with
 Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9870.22; Thu, 30 Apr
 2026 16:08: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%6]) with mapi id 15.20.9870.020; Thu, 30 Apr 2026
 16:08: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=Ln1AbFGkWQQnmxJXUr4sqp/FIYcpljN9/drRR7KsvQQVtwQKUgRyPVZhcm3Df6YLAv0bsb42vf2HwzMG42V4NmT9pTc5yD5w22NMDb1IbqN25S6xfd8dYuX4m+OrRapY7Jr+HbUDKwYkhQLxEE6B9yJ/8jagzUkysPxQtpDDz/R+8+hIdjzBsed3dkGcl8/KR5Vhvp++Unrhw17mrcJYzh5OKwEVA9RTKG0xpe7vFfY0m+EWjEyI1i4brMRRGVEf/5K0BLFSsRHyDJ/azt6/K05fRNH3nWlP+vbrebpZqskmrIipW4IPRn6Ocz4JuPN5TSlAsZIQZS9+cvl0AOxzVg==
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com;
 s=arcselector10001;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1;
 bh=2VwQvLNIYQU/PRAH9D44sfOYY7+Toz/7OoBe/LJyChQ=;
 b=HWzDmcDP0E23e2ixhu63cP81PVidhzpHplqgg5Md/GTfU4rpQJWgU7wxurxx9d1fekuF39+6FpKrflHNz12g/sPg7x78rnvv1C9c+uIRdmcPgzaUSTqanF1eIfWvM65pL42X+YeNCt7pJziOZvbsjEF3iij2JkMS2VmyAcBW1gwTUvhrWZKAbvGmuAdwOdBVpxAJg8LbCO8/bJCwWCwyq6qarwJ9ZKA4Mu6CSNQezXlBCmmkU0qtZNuAF48C3J8RirIIBA2iVBgQWPU/tRtvy0R3YaHMRNAP03zGUcb7kIl2NgN42zKcYZrzUZCI6TvsFrxZR5PLilHovNXeYg52Xw==
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=2VwQvLNIYQU/PRAH9D44sfOYY7+Toz/7OoBe/LJyChQ=;
 b=itZTtu7bDeNP0lRGMfNkYMcystbT66+DLL3MmBatWkYheZB5x6shz/l8m+ZzL5LeDKO0KhJPcoOwZa8+wcZDsIGFg1SoACjwnkyN2JvO8DSMp0OPIURBZkKTGN6UhkC6B77sKgrJM2HMHzbPDJMume2q2DMrPgjNAJ9tNYoaa5s=
Authentication-Results: dkim=none (message not signed)
 header.d=none;dmarc=none action=none header.from=citrix.com;
Message-ID: <41d63925-408c-4602-ac9a-73129545f30a@citrix.com>
Date: Thu, 30 Apr 2026 17:08:31 +0100
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.pau@citrix.com>, Jason Andryuk <jason.andryuk@amd.com>,
 Teddy Astie <teddy.astie@vates.tech>
Subject: Re: [PATCH] nestedsvm: Clear GIF when injecting VMEXIT
To: Ross Lagerwall <ross.lagerwall@citrix.com>, xen-devel@lists.xenproject.org
References: <20260423161112.50221-1-ross.lagerwall@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: <20260423161112.50221-1-ross.lagerwall@citrix.com>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
X-ClientProxiedBy: LO4P123CA0004.GBRP123.PROD.OUTLOOK.COM
 (2603:10a6:600:150::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_|DS2PR03MB8419:EE_
X-MS-Office365-Filtering-Correlation-Id: 7e99e3ac-51d6-478b-6c60-08dea6d2bb05
X-MS-Exchange-SenderADCheck: 1
X-MS-Exchange-AntiSpam-Relay: 0
X-Microsoft-Antispam:
	BCL:0;ARA:13230040|366016|1800799024|376014|18002099003|56012099003|22082099003;
X-Microsoft-Antispam-Message-Info:
	XUXlM3fH8u18cut86LC4TrZh9huPsOl/ZLIzQdmgN6w/di8165YdNj50oiIGdiaF89xOMSXjyz3C3AdzbRoBVqZAIUWOmhmeyIcXG6dWzc7GZJyp6F+1DqcqFoA66cPw2TTP0pe/lQAapbTjEQAb+fOClT+SYs/EtDpYtIVnXD4b2hexQJv4OTV4Zg1/VdjD2AR5SOsevgK4PEuOqXerFN0llAL8rNNeM+1a1kvkLrTkoAX0ygaAo8E1DNn3QTNYLim3f2vn0B2Tp0ePJevsKtxmXDq6ShYF74NNEqV0nJUSuOmUuB/PwcUazIIw4QyNEnnm/c6N1TNk+AdgREbge74ZKN6CbTemF+uSF9eVFjnZyZb4+1OetCcZSxeEOQwFDCOhUmgOUZ8qZ8Ol29x6Drxg+3Lc0rGswpRa7anJJ8ze6TT52oID2G0pCmEIeFzJ9GeIIsfNlvmm1qONILEV9nhC/OOoC7fDVZyi6shzgDDLqVW10sng62GyJWyUq9CfAlMfZizX3fkWFK5LkfYZYElC9EkdVMG+3UQ1IvltdCzKJ4QYui3BAyA65+g6sLoAHh2iDRBEbcW8K7fQfgKzEpn33xR/fbW9mi8keLv2RCLjqHu4JVP0w7Kl5yG8QK2oo93JIYyqnkdELBA7+VlIpp2AvBfHAqb7gLcIDxOPsqY5bQJ9n3MeM5L5EkcZ45KZxMTSPOEtQTtMEiCqJkfZF4x9Ns4uHPXkrcryQ8lf79w=
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)(18002099003)(56012099003)(22082099003);DIR:OUT;SFP:1101;
X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1
X-MS-Exchange-AntiSpam-MessageData-0:
	=?utf-8?B?bG5pM2xkNUJScHZRK05vNVVDWVRSTGZSSzd0aStJVU1NSTRSRmx6MUgxWUpG?=
 =?utf-8?B?STFOWWRoUEJ0UDdjaFlWQXliNXFJc1NVL2xSYUtRZHoreEc1cWFuby9LVlpN?=
 =?utf-8?B?L3dYUGdOYklpRmlPeHRkRVpIM0NOalpkWUlwM1hRY2FqZjhTdTlpeGx4K2Zm?=
 =?utf-8?B?RkNRUG1mTzlHV1ViSGxUbDhJM29nbDhNd1VBMFAyV01EMHdmZkkyZllVTjl1?=
 =?utf-8?B?bFhCWC9Pam4ySzBaQUxocGt0ZEpSajJLdXBsdHI2Ti9kR2dVbk85V1grU3Z3?=
 =?utf-8?B?ckIwUGloalg3K1NWZWxDcWtocGd0L1M3czVoYU80RGtndzZaR3lTUUhQNzlS?=
 =?utf-8?B?cjBnL3lCaWMrb3FhbUhaQS9EYlVXanFOQUVnc3NMVnZPdEhXVFBtd0xCaW9J?=
 =?utf-8?B?b2EvUE9tL2xPTHp0S2ZwN3o0Tmo2WC93K2hGeHlPdW9iV1pnVWlKRXFBaVhC?=
 =?utf-8?B?eE5YeElFcG0vQjB0cDRiWGtEcHRIUGoxY3NMcCt6Z0xkRUQ3TlFGR0ZPbTdX?=
 =?utf-8?B?VWdnWmM5UWpEUEQvZHZ5NlMxNzFYeVY3dUphVmY1V3pOY2wyMlVLZG9pUFcw?=
 =?utf-8?B?Q2dmUDBDQkdEL2RDcTJvYk9CR281a050Q1BoaGdITmlZQkE2WFVISWRGdFcv?=
 =?utf-8?B?MC9LdFBKZi9wUE8vRC82RitpK1BIZ2xYNXpkdGJodVp6Q3N2SnViUU03aUlO?=
 =?utf-8?B?ZUU4eU43K1V0UTlQNTRnK3c4VXpWMG8wV212bmVLdGZvMlJwVE5vMnFZYkpn?=
 =?utf-8?B?dGZYYlFIK1JodFY0SlFGR1c2SjdmMGxkK2gyRGhMK2hCM0FmLzVyUXFaZnl4?=
 =?utf-8?B?OVpYc0ZyeW92eUtHc29ZVmRhTWNyZHJkVHFHZ1dpWjZPV0k3L0tzYVZjS3VL?=
 =?utf-8?B?aFZkZFJGZm4wLzkydEZVaFJKMlcvWHVHZWJTU2pBdlFkb1REaXdxQUZxNDh4?=
 =?utf-8?B?VmprNWZsNGh6MVZ5enZWOUQ3MERBQ3RiSTk2YnREZG5VTzJ1b3ZZNE1FVDFu?=
 =?utf-8?B?NXlKaFpmcEtKaFJhbW5IbmkraDU1TmdhUjZPbEZkR2YwTTczWCsrU1o4bG11?=
 =?utf-8?B?clF5RnhuUVp5MmtmOXd4d1FsV0l2TXdSRGovaVlhM3IxZkIzTFNOZG5DRnl0?=
 =?utf-8?B?cnZLelJIdjFEYisxQ2pDVEpmYzBFdGgxQU5SOXBLOFBzVStBWHArcStJKzV0?=
 =?utf-8?B?L2VJOGNMZk5uMmZEdDVVYlRvK1NUMzgzRGRPRHRRUFE5dEtCa0hvQzRWYk53?=
 =?utf-8?B?cm5tVGhtRFRSOGFUR3l4cWRWUXBybENraFFUTUpucnlkc09FVW1JclNyU3pC?=
 =?utf-8?B?Zy9CZjhVNE5BTVBkb3ZmMWJyL2RXMTZpbWFwR05mTUIwWnVrazE3MU9YYWI2?=
 =?utf-8?B?MU1VckF6eDU5TmpDTmdEdTkvZTA5cDc2RDZDVFU2akp0TkRNaVVhTDk2UXRh?=
 =?utf-8?B?SVA0b1VlRHJDUFRsNm5PcU5WeHVzS0tLQXhYelBoblRHVUpjakovN0ZrcVM1?=
 =?utf-8?B?aVZPSnhvOWN4Yi81ZlNSZ1pqL2ZQTmdGV3djdzlGMXFMVTJGd0pITlZvWWIz?=
 =?utf-8?B?YkJZMHQwSm05UWZqN1BMOTRkV2lCS0t2QlZVRHdJMHpsK0VPME9tUGhJekJM?=
 =?utf-8?B?M1JxRmxRcjlEV1NZUHh5MytVRklRNXZrMzBjTUJhTDBrdXc1eUpEOVBRZ0VP?=
 =?utf-8?B?SzdzM2h2Nmt0WVJPdEdoeTRPb1F5NlM2UUpCdy9wVUQ2MW9ZTjdUclRTRVJn?=
 =?utf-8?B?elF3ZHBadlZsUmlKc0xGd3FoZnlmRXlVQUFSTzJtTGVwbGxFTWpTbkhyWWlT?=
 =?utf-8?B?aXoyMG91aTFueUVENFBuaEJyREJaZWJ4MW90M1F1OThtTDRDQ0ducnovcGhn?=
 =?utf-8?B?U3liNkdVK2RVdE53Q3BmMSs5YjdpdDJvSTR3TVZZOHR5ZUtQOFE4U1NycUt0?=
 =?utf-8?B?ZnJOeWZMSEVPeHBWL0g3dnorYlAwd2JWaE50WDlGMk9UTXJ4MnVoV2tmWDZ0?=
 =?utf-8?B?TUpoMUpHWnp5aldkRHU5SVRlWExscUFNWUJnTi9hODlQbytuSmUxMlBFbVZQ?=
 =?utf-8?B?NlpjVm1DVk1IOTBManRwSkNzcFdTWTJpMkhMdWVaNThJQWdkUlk4cndldDZU?=
 =?utf-8?B?a2tldk5CV2RRaVFRYnhXMlBHRERnTXVRbi8valVYemZCSzdnaWVVUWhiWXNH?=
 =?utf-8?B?U3kvblFuaWUwaHl4VHdmMGtuWXR2cFU3dkdva1JRTHRYV2J4WkR0SlRwS28z?=
 =?utf-8?B?YmpEYkxGRHhxTkx0aWQ3NzFRVjF5UmJ3T2QzbVcxQ1NWaU9LZk0raEtRak80?=
 =?utf-8?B?VFFZYWVubG5xa2VLb3loS1FwaDA2Ync0UkhiOFRKYlIvRWlnSmwvMGtkdzB4?=
 =?utf-8?Q?ydj4glTWdeg3OWQU=3D?=
X-OriginatorOrg: citrix.com
X-MS-Exchange-CrossTenant-Network-Message-Id: 7e99e3ac-51d6-478b-6c60-08dea6d2bb05
X-MS-Exchange-CrossTenant-AuthSource: CH8PR03MB8275.namprd03.prod.outlook.com
X-MS-Exchange-CrossTenant-AuthAs: Internal
X-MS-Exchange-CrossTenant-OriginalArrivalTime: 30 Apr 2026 16:08:34.5258
 (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: +HKji34GeeQBIUwS0EUfFyRI/U3WqnuIFpjfqhNusCuUbqjO9h+zLLasSEGZLHlS7SHIjkAiYJ6dkvOt3xppv4hvUFkNshUb4Qbg5HDF7eM=
X-MS-Exchange-Transport-CrossTenantHeadersStamped: DS2PR03MB8419
X-purgate-ID: tlsNG-16d1c6/1777565318-5397CD75-CFBF9BA3/0/0
X-purgate-type: clean
X-purgate-size: 2557

On 23/04/2026 5:11 pm, Ross Lagerwall wrote:
> If L1 executes VMRUN with the GIF set and it fails consistency checks,
> Xen will inject a VMEXIT and fail the assert checking the GIF is cleared.
>
> Instead, clear the GIF when injecting a VMEXIT to match what hardware
> does.
>
> Fixes: 9a779e4fc161 ("Implement SVM specific part for Nested Virtualization")
> Signed-off-by: Ross Lagerwall <ross.lagerwall@citrix.com>
> ---
>  xen/arch/x86/hvm/svm/nestedsvm.c | 4 ++--
>  1 file changed, 2 insertions(+), 2 deletions(-)
>
> diff --git a/xen/arch/x86/hvm/svm/nestedsvm.c b/xen/arch/x86/hvm/svm/nestedsvm.c
> index ef6fa5d23b67..f89b087a1155 100644
> --- a/xen/arch/x86/hvm/svm/nestedsvm.c
> +++ b/xen/arch/x86/hvm/svm/nestedsvm.c
> @@ -733,9 +733,9 @@ nsvm_vcpu_vmexit_inject(struct vcpu *v, struct cpu_user_regs *regs,
>      struct vmcb_struct *vmcb = v->arch.hvm.svm.vmcb;
>  
>      if ( vmcb->_vintr.fields.vgif_enable )
> -        ASSERT(vmcb->_vintr.fields.vgif == 0);
> +        vmcb->_vintr.fields.vgif = 0;
>      else
> -        ASSERT(svm->ns_gif == 0);
> +        nestedsvm_vcpu_clgi(v);
>  
>      ns_vmcb = nv->nv_vvmcx;
>  

I agree this is a bug.

It is common for GIF to be clear when executing VMRUN but it is not
required.  The pseudocode says that VMRUN simply sets GIF, and #VMEXIT
simply clears GIF.

But, looking at nestedsvm_vcpu_clgi(), it's not the only bug here. 
nestedsvm_vcpu_{clgi,stgi}() have additional calls to
local_event_delivery_{disable,enable}().

vgif_enable is strictly an optimisation that allows hardware to manage
the vGIF bit, so at an absolute minimum this ought to be:

    if ( ->vgif_enable )
        ->vgif = 0;
    else
        ->ns_gif = 0;
    local_event_delivery_disable();

to have balanced semantics.  Except that messing with event channels
can't be done when hardware is handling the vgif bit.

In fact, I think it's plain buggy to be touching event channels in
response to GIF changes.  In PV guests  vcpu_info->evtchn_upcall_mask is
the singular mask bit, but this is not true in HVM guests.  Even with
direct vector injection, HVM guests are still subject to normal rules
about INTR delivery, and that CLI blocks them.  This should naturally
extend to GIF for nested-SVM too.

As far as testing goes, perhaps we want to start with something even
more simple.  For real self-IPIs, and self-evtchns (for all reasonable
evtchn delivery configurations), check that delivery is blocked by IF=0
|| GIF=0.

~Andrew


From xen-devel-bounces@lists.xenproject.org Thu Apr 30 18:50:36 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 30 Apr 2026 18:50:36 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1298404.1573732 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wIWSl-00023R-S5; Thu, 30 Apr 2026 18:50:15 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1298404.1573732; Thu, 30 Apr 2026 18: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 1wIWSl-00023J-Mw; Thu, 30 Apr 2026 18:50:15 +0000
Received: by outflank-mailman (input) for mailman id 1298404;
 Thu, 30 Apr 2026 18:50:14 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <val@invisiblethingslab.com>) id 1wIWSk-00023D-6z
 for xen-devel@lists.xenproject.org; Thu, 30 Apr 2026 18:50:14 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wIWSj-00GiTV-5w
 for xen-devel@lists.xenproject.org; Thu, 30 Apr 2026 20:50:13 +0200
Received: from [10.42.69.6] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <val@invisiblethingslab.com>)
 id 69f3a44b-5cb7-0a2a0a5109dd-0a2a4506d6dc-22
 for <xen-devel@lists.xenproject.org>; Thu, 30 Apr 2026 20:50:13 +0200
Received: from [103.168.172.145] (helo=fout-a2-smtp.messagingengine.com)
 by tlsNG-16d1c6.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.1)
 (envelope-from <val@invisiblethingslab.com>)
 id 69f3a463-7371-0a2a45060019-67a8ac91abe5-3
 for <xen-devel@lists.xenproject.org>; Thu, 30 Apr 2026 20:50:12 +0200
Received: from phl-compute-04.internal (phl-compute-04.internal [10.202.2.44])
 by mailfout.phl.internal (Postfix) with ESMTP id 2E99AEC0099;
 Thu, 30 Apr 2026 14:50:11 -0400 (EDT)
Received: from phl-frontend-04 ([10.202.2.163])
 by phl-compute-04.internal (MEProxy); Thu, 30 Apr 2026 14:50:11 -0400
Received: by mail.messagingengine.com (Postfix) with ESMTPA; Thu,
 30 Apr 2026 14:50:08 -0400 (EDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@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-Transfer-Encoding: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-Transfer-Encoding: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-transfer-encoding
	: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=1777575011; x=1777661411; bh=31eKb1GPyw
	vbkiPuzXzAtZKxLoCKEG3Ll7hcfm5Uv+w=; b=hADA0zpE2YoZUJI7J58ncoiAEz
	gdCloXPZ7RkXVRAYdsE61vycEs4dqhDKW/S2KaQi/TC2lVQ5NJcfCf+Jb3JZ7I6K
	KQZU3K5Jm4n7U7tBE39TE6A+GBc0Yp/n/9U3qqDfgpjMnOiA5ZL6GQiA/8NThSYC
	9qVTk69L7Vtlq8D/AS+ylouDUxdMXOcTnsGNI+q3RPUslU6Cnz4Y0+lpCB7+yl6V
	W/sAfTGEiLsZdtBd6q8H6phv2DTOcwYSBMRI/lIXyieOrv/3Ffnd43XIEDpPyC0U
	WJmELkWGgyyX6Cvk9XrkXVe4SdN9ZbbQGVWNhqLi2aOsTrVe2ghX8O2XKiCA==
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=
	messagingengine.com; h=cc:cc:content-transfer-encoding
	: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=1777575011; x=
	1777661411; bh=31eKb1GPywvbkiPuzXzAtZKxLoCKEG3Ll7hcfm5Uv+w=; b=m
	Tsfiq2AL7mY211mEcqEwT+2vwIJQ/HtQBCYVB4lFqkTT0d5FkMJdK5hcB0MiYyga
	640m+ufFgor2QVRAdNMK2dfS/7jyQOC5hJ4EP4tvM4OAz0cpJw9H8sFnEXwr2VsY
	zfXJUNo0jQp5X1qUkAc7Yy5li18i1ar4U+Ma+h3C2p/ix0KmthnZseZBJek0ZRpQ
	sh0MlJqew3GseGrzwd8f2hhGCO2qECUZ+WLEgYGJLFvE/NjdrRSalw1N7cEo3WJl
	zTOZLZHPXdgXd1zffpUM1/jaCzLohLqWLw4VYbV+wST5YuDMFtMm6Woz8e2T2kkQ
	cvP2phYFH3eEuanoOECMw==
X-ME-Sender: <xms:YqTzaXUBYHSSjmi8ehtPFkUTVDvanc1C2xM37cO0KpOSZsjGTDIFsg>
    <xme:YqTzaXzNfV71ll1jNbA0kR1JToKSLZ6l1Q1vBrvbyPgtnnEzVJeBB5nBAc5Xmluio
    -A-hKPg0U7wMYVhWCbdP2lUf25B4-poMgQ61dIa321KeyQrF4c>
X-ME-Received: <xmr:YqTzae-n-MFPEMn9IbUCMBtHYzzXufuFMkZD2HWINpaa5ecTV144WWPOkNf0o8kKAw>
X-ME-Proxy-Cause: gggruggvucftvghtrhhoucdtuddrgeefhedrtddtgdekkedtkecutefuodetggdotefrod
    ftvfcurfhrohhfihhlvgemucfhrghsthforghilhdpuffrtefokffrpgfnqfghnecuuegr
    ihhlohhuthemuceftddtnecusecvtfgvtghiphhivghnthhsucdlqddutddtmdenucfjug
    hrpefkffggfgfuvfevfhfhjggtgfesthekredttddvjeenucfhrhhomhepgggrlhcurfgr
    tghkvghtthcuoehvrghlsehinhhvihhsihgslhgvthhhihhnghhslhgrsgdrtghomheqne
    cuggftrfgrthhtvghrnhepheekgfefveetkeethffhgeeivdffkeegueevkeefveeltefg
    leehffegudegkedvnecuffhomhgrihhnpehgihhthhhusgdrtghomhenucevlhhushhtvg
    hrufhiiigvpedtnecurfgrrhgrmhepmhgrihhlfhhrohhmpehvrghlsehinhhvihhsihgs
    lhgvthhhihhnghhslhgrsgdrtghomhdpnhgspghrtghpthhtohepuddtpdhmohguvgepsh
    hmthhpohhuthdprhgtphhtthhopehtvgguugihrdgrshhtihgvsehvrghtvghsrdhtvggt
    hhdprhgtphhtthhopehmshhtsehrvgguhhgrthdrtghomhdprhgtphhtthhopehjrghsoh
    ifrghnghesrhgvughhrghtrdgtohhmpdhrtghpthhtohepgihurghniihhuhhosehlihhn
    uhigrdgrlhhisggrsggrrdgtohhmpdhrtghpthhtohepvghpvghrvgiimhgrsehrvgguhh
    grthdrtghomhdprhgtphhtthhopehmrghrmhgrrhgvkhesihhnvhhishhisghlvghthhhi
    nhhgshhlrggsrdgtohhmpdhrtghpthhtohepvhhirhgvshhhrdhkuhhmrghrsehlihhnrg
    hrohdrohhrghdprhgtphhtthhopeigvghnqdguvghvvghlsehlihhsthhsrdigvghnphhr
    ohhjvggtthdrohhrghdprhgtphhtthhopehlihhnuhigqdhkvghrnhgvlhesvhhgvghrrd
    hkvghrnhgvlhdrohhrgh
X-ME-Proxy: <xmx:YqTzac_AjHKvXA36zYPO7mpL7WCtVF8h4yrJV5k80i1B6YRAfJBLGQ>
    <xmx:YqTzadVVSnPGgTuGP7zuMk5_cAFf1Oep4Kw18Ky65JiSYPb-yxPaJw>
    <xmx:YqTzaZe8BK1-pNUhq2QALHn9BNbvD3wih_hIqonJZlII6H7hnYNMqg>
    <xmx:YqTzaWYRc4mwkSgPJVwFLhtit2XC2b2KD0HFEpCJ9kSH-XYkLXxd3w>
    <xmx:Y6Tzad-W9K1K9gMyTK8AWY_EOa3OxDxN6FHYxEHlm-m6gSs5rnrayJDO>
Feedback-ID: i001e48d0:Fastmail
Message-ID: <b3cfed78-15db-459a-9f69-155ea615ecf8@invisiblethingslab.com>
Date: Thu, 30 Apr 2026 15:50:05 -0300
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [RFC PATCH] virtio-mmio: add xenbus probing
To: Teddy Astie <teddy.astie@vates.tech>, "Michael S. Tsirkin"
 <mst@redhat.com>, Jason Wang <jasowang@redhat.com>,
 Xuan Zhuo <xuanzhuo@linux.alibaba.com>, =?UTF-8?Q?Eugenio_P=C3=A9rez?=
 <eperezma@redhat.com>
Cc: =?UTF-8?Q?Marek_Marczykowski-G=C3=B3recki?=
 <marmarek@invisiblethingslab.com>, Viresh Kumar <viresh.kumar@linaro.org>,
 xen-devel@lists.xenproject.org, linux-kernel@vger.kernel.org,
 virtualization@lists.linux.dev
References: <20260429141339.74472-1-val@invisiblethingslab.com>
 <1777473712.8631fc262581453bbf619ec5b2062170.19dd9b07146000f373@vates.tech>
 <fd6493ac-9d3e-475a-a844-6e53b0472820@invisiblethingslab.com>
 <1777536698.8631fc262581453bbf619ec5b2062170.19ddd7187da000f373@vates.tech>
 <74953b6a-d195-4a12-800d-af324ff35b29@invisiblethingslab.com>
 <1777556830.8631fc262581453bbf619ec5b2062170.19ddea4b728000f373@vates.tech>
Content-Language: en-US
From: Val Packett <val@invisiblethingslab.com>
Autocrypt: addr=val@invisiblethingslab.com; keydata=
 xm8EaFTEiRMFK4EEACIDAwQ+qzawvLuE95iu+QkRqp8P9z6XvFopWtYOaEnYf/nE8KWCnsCD
 jz82tdbKBpmVOdR6ViLD9tzHvaZ1NqZ9mbrszMXq09VfefoCfZp8jnA2yCT8Y4ykmv6902Ne
 NnlkVwrNKFZhbCBQYWNrZXR0IDx2YWxAaW52aXNpYmxldGhpbmdzbGFiLmNvbT7CswQTEwkA
 OxYhBAFMrro+oMGIFPc7Uc87uZxqzalRBQJoVMSJAhsDBQsJCAcCAiICBhUKCQgLAgQWAgMB
 Ah4HAheAAAoJEM87uZxqzalRlIIBf0cujzfSLhvib9iY8LBh8Tirgypm+hJHoY563xhP0YRS
 pmqZ6goIuSGpEKcW5mV3egF/TLLAOjsfroWae4giImTVOJvLOsUycxAP4O5b1Qiy+cCGsHKA
 nCRzrvqnPkyf4OeRznMEaFTEiRIFK4EEACIDAwSffe3tlMmmg3eKVp7SJ+CNZLN0M5qzHSCV
 dBBkIVvEJo+8SDg4jrx/832rxpvMCz2+x7+OHaeBHKafhOWUccYBLKqV/3nBftxCkbzXDbfY
 d02BY9H4wBIn0Y3GnwoIXRgDAQkJwpgEGBMJACAWIQQBTK66PqDBiBT3O1HPO7mcas2pUQUC
 aFTEiQIbDAAKCRDPO7mcas2pUaptAX9f7yUJLGU4C6XjMJvXd8Sz6cGTyxkngPtUyFiNqtad
 /GXBi3vHKYNfSrdqJ8wmZ8MBgOqWaaa1wE4/3qZU8d4RNR8mF7O40WYK/wdf1ycq1uGad8PN
 UDOwAqdfvuF3w8QMPw==
In-Reply-To: <1777556830.8631fc262581453bbf619ec5b2062170.19ddea4b728000f373@vates.tech>
Content-Type: text/plain; charset=UTF-8; format=flowed
Content-Transfer-Encoding: 8bit
X-purgate-ID: tlsNG-16d1c6/1777575013-91678D75-278DF2CF/0/0
X-purgate-type: clean
X-purgate-size: 5250

On 4/30/26 10:47 AM, Teddy Astie wrote:
> Le 30/04/2026 à 10:51, Val Packett a écrit :
>> On 4/30/26 5:11 AM, Teddy Astie wrote:
>>> Le 30/04/2026 à 06:06, Val Packett a écrit :
>>>> [..]
>>>>>> I'd like to get some early feedback for this patch, particularly
>>>>>> the general stuff:
>>>>>>
>>>>>> * is this whole thing acceptable in general?
>>>>>> * should it be extracted into a different file?
>>>>>> * (from the Xen side) any input on the xenstore keys, what goes where?
>>>>>> * anything else to keep in mind?
>>>>>>
>>>>>> It does seem simple enough, so hopefully this can be done?
>>>>>>
>>>>>> The corresponding userspace-side WIP is available at:
>>>>>> https://github.com/QubesOS/xen-vhost-frontend
>>>>>>
>>>>>> And the required DMOP for firing the evtchn events will be sent
>>>>>> to xen-devel shortly as well.
>>>>> Could that be done through evtchn_send (or its userland counterpart) ?
>>>> Actually, yes… The use of DMOPs is only dictated by the current Linux
>>>> privcmd.c code (the irqfds created by the kernel react to events by
>>>> executing HYPERVISOR_dm_op with a stored operation), we can avoid the
>>>> need to modify Xen by simply expanding the privcmd driver to make
>>>> "evtchn fds". Sounds good, will do.
>>>>
>>> Given that the event channel used by device models is exposed through
>>> ioreq.vp_eport ("evtchn for notifications to/from device model"). I
>>> don't think you need to expand the privcmd interface, and you should be
>>> able to do this instead :
>>>
>>> open /dev/xen/evtchn
>>> perform IOCTL_EVTCHN_BIND_INTERDOMAIN (for each guest vCPU)
>>>      with remote_domain=guest_domid, remote_port=ioreq.vp_eport
>>>
>>> Then interact with the event channel through IOCTL_EVTCHN_NOTIFY (with
>>> local port given by IOCTL_EVTCHN_BIND_INTERDOMAIN) and read/write on the
>>> file descriptor.
>> So the reason there's currently an ioctl to bind an eventfd to fire a
>> stored DMOP is that the whole idea is to (efficiently!) support generic,
>> hypervisor-neutral device server implementations via the vhost-user
>> protocol.
>>
>> Now of course, the current implementation isn't *entirely* hypervisor-
>> neutral as e.g. the vm-memory Rust crate (inside of the "neutral" vhost-
>> user device servers) does need to be built with the `xen` feature. But
>> still, that's how it works. What can be made generic is generic.
>>
>> xen-vhost-frontend, which is the thing that integrates these with Xen,
>> actually used to handle the interrupts in userspace[1] by firing the
>> DMOP itself (which is where I could "just replace that with
>> IOCTL_EVTCHN_NOTIFY") but that was offloaded to the kernel with the
>> introduction of IOCTL_PRIVCMD_IRQFD[2], similarly to KVM_IRQFD.
>>
> I think what would be preferable for your usecase would be to have a way
> to bind a event channel with a eventfd object, which should be a
> primitive that lives in the evtchn device.

Yeah, it would be an ioctl on the evtchn device, definitely. I wasn't 
being exact when I said "extend privcmd", sorry. I just meant "handling 
it on the Linux side" generally!

> The current interface kinda assume that you're looking to emulate a
> completely emulated virtio device with no Xen specifics, it looks like
> it's not exactly what you're implementing.
It's already implemented, and I'm not looking to change it much, just to 
make it work on x86_64. The only thing that wasn't already compatible 
was firing the host-to-guest interrupt, because on x86_64 we don't have 
anything like the (v)GIC with its massive arbitrary IRQ number space. 
Event channels are the only way to interrupt a PVH guest, hence using 
xenbus in the guest to provision the device.
> As you actually plan to switch to using event channels for notifying the
> guest, I think it would be preferable to do the same the other way
> (event channels to notify the host) so you only have event channels to
> worry about here.

The other direction is already implemented perfectly well in 
IOCTL_PRIVCMD_IOEVENTFD. The MMIO area is set up like so:

- ioreq is mapped with 
IOCTL_PRIVCMD_MMAP_RESOURCE(XENMEM_resource_ioreq_server, ..);
- vp_eport event channels (per cpu) are bound to the current domain via 
IOCTL_EVTCHN_BIND_INTERDOMAIN;
- those are passed, along with the ioreq page itself, to 
IOCTL_PRIVCMD_IOEVENTFD to get an eventfd that fires when a virtqueue is 
ready;
- which is an eventfd that xen-vhost-frontend passes to the vhost-user 
device server.

So for this direction, it's not a 1:1 mapping but rather a specific 
contraption designed to efficiently handle this use case:

- when an ioreq event channel (for any of the vcpus) fires,
- the kernel handler (ioeventfd_interrupt) checks if it's specifically 
an IOREQ_WRITE write to the VIRTIO_MMIO_QUEUE_NOTIFY offset,
- and if so, it signals the eventfd for any virtqueue that has new data 
(waking the generic device server which has the eventfd, so bypassing 
xen-vhost-frontend), pings the guest back via evtchn, and returns 
IRQ_HANDLED;
- otherwise the request is handled in userspace by xen-vhost-frontend 
(virtio configuration register access).

It just works :)

~val



From xen-devel-bounces@lists.xenproject.org Thu Apr 30 19:39:25 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 30 Apr 2026 19:39:25 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1298432.1573741 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1wIXEC-0008E9-Ba; Thu, 30 Apr 2026 19:39:16 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1298432.1573741; Thu, 30 Apr 2026 19:39: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 1wIXEC-0008E2-8Z; Thu, 30 Apr 2026 19:39:16 +0000
Received: by outflank-mailman (input) for mailman id 1298432;
 Thu, 30 Apr 2026 19:39:14 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <bouyer@antioche.eu.org>) id 1wIXEA-0008Dw-TP
 for xen-devel@lists.xenproject.org; Thu, 30 Apr 2026 19:39:14 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wIXEA-0000dU-3e
 for xen-devel@lists.xenproject.org; Thu, 30 Apr 2026 21:39:14 +0200
Received: from [10.42.69.5] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <bouyer@antioche.eu.org>)
 id 69f3afdb-e002-0a2a0a5209dd-0a2a4505d1e4-4
 for <xen-devel@lists.xenproject.org>; Thu, 30 Apr 2026 21:39:13 +0200
Received: from [109.190.99.82] (helo=chassiron.antioche.eu.org)
 by tlsNG-c201ff.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.1)
 (envelope-from <bouyer@antioche.eu.org>)
 id 69f3afe1-aaa8-0a2a45050019-6dbe6352c381-3
 for <xen-devel@lists.xenproject.org>; Thu, 30 Apr 2026 21:39:13 +0200
Received: from sandettie.soc.lip6.fr (82-64-3-41.subs.proxad.net [82.64.3.41])
 by chassiron.antioche.eu.org (8.18.1/8.16.1) with ESMTPS id
 63UJcvsg005688
 (version=TLSv1.3 cipher=TLS_AES_256_GCM_SHA384 bits=256 verify=OK);
 Thu, 30 Apr 2026 21:38:58 +0200 (MEST)
Received: by sandettie.soc.lip6.fr (Postfix, from userid 373)
 id C02D32E932D; Thu, 30 Apr 2026 21:38:52 +0200 (CEST)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-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: Thu, 30 Apr 2026 21:38:52 +0200
From: Manuel Bouyer <bouyer@antioche.eu.org>
To: Roger Pau =?iso-8859-1?Q?Monn=E9?= <roger.pau@citrix.com>
Cc: xen-devel@lists.xenproject.org,
        Frediano Ziglio <frediano.ziglio@cloud.com>,
        Anthony PERARD <anthony.perard@vates.tech>,
        Juergen Gross <jgross@suse.com>,
        Andrew Cooper <andrew.cooper3@citrix.com>,
        Frediano Ziglio <freddy77@gmail.com>
Subject: Re: [PATCH] tools: Use posix_memalign instead of valloc for NetBSD
Message-ID: <afOvzOS7G7vnHvqn@antioche.eu.org>
References: <20260430095521.8399-1-frediano.ziglio@cloud.com>
 <afMzlcrP7phSirsw@macbook.local>
MIME-Version: 1.0
Content-Type: text/plain; charset=iso-8859-1
Content-Disposition: inline
Content-Transfer-Encoding: 8bit
In-Reply-To: <afMzlcrP7phSirsw@macbook.local>
X-Greylist: Sender succeeded STARTTLS authentication, not delayed by milter-greylist-4.6.4 (chassiron.antioche.eu.org [109.190.99.82]); Thu, 30 Apr 2026 21:38:58 +0200 (MEST)
X-purgate-ID: tlsNG-c201ff/1777577953-E3D67443-0EF579E8/0/0
X-purgate-type: clean
X-purgate-size: 279

On Thu, Apr 30, 2026 at 12:48:53PM +0200, Roger Pau Monn wrote:
> Adding Manuel that maintains the NetBSD xen-tools package.

thanks
AFAIK this patch is fine

-- 
Manuel Bouyer <bouyer@antioche.eu.org>
     NetBSD: 26 ans d'experience feront toujours la difference
--


